ZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvQ09QWUlORy5NSVQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL0NPUFlJTkcuTUlUCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjk1MGRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvQ09QWUlORy5NSVQKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IAotb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIAotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAKLWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIAotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIAotSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIAotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAKLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiAKLVRIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMTA1ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGlzIGxheWVyIGRlcGVuZHMgb246Ci0KLVVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcHlybyAKLXJldmlzaW9uOiBIRUFECi0KLVVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKLWxheWVyczogbWV0YS1vZSwgbWV0YS1weXRob24KLWJyYW5jaDogcHlybyAKLXJldmlzaW9uOiBIRUFECi0KLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1lZmxdW3B5cm9dJyBpbiB0aGUgc3ViamVjdCcKLQotV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtZWZsXVtweXJvXVtQQVRDSCcKLQotcHlybyBicmFuY2ggbWFpbnRhaW5lcihzKToKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NsYXNzZXMvZS1iYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NsYXNzZXMvZS1iYXNlLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYWUyMjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jbGFzc2VzL2UtYmFzZS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lbmxpZ2h0ZW5tZW50Lm9yZyIKLVNSQ05BTUUgPz0gIiR7QlBOfSIKLVNSQ1ZFUiA/PSAiJHtQVn0iCi0KLUVGTF9TUkNSRVYgPz0gIjgyMDcwIgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtTUkNWRVJ9IgotCi0jIGVhY2ggZWZsIG9yIGUxNyBtb2R1bGUgaXMgaW5zdGFsbGluZyBtb2R1bGUuc28gaW4gZGlmZmVyZW50IGRpcmVjdG9yeSwgZGlzYWJsZSBzaGxpYnMgcHJvdmlkZXJzIGZvciB0aGVtCi0jIGV2YXMtZW5naW5lLWdsLXgxMS0xLjcuNyBldmFzLWVuZ2luZS1zb2Z0d2FyZS0xNi0xLjcuNyBldmFzLWVuZ2luZS1zb2Z0d2FyZS0xNi14MTEtMS43LjcgZXZhcy1lbmdpbmUtc29mdHdhcmUteDExLTEuNy43IGV2YXMtZW5naW5lLXdheWxhbmQtc2htLTEuNy43IGV2YXMtY3NlcnZlMi1ibXAtMS43LjcgZXZhcy1jc2VydmUyLWVldC0xLjcuNyBldmFzLWNzZXJ2ZTItaWNvLTEuNy43IGV2YXMtY3NlcnZlMi1qcGVnLTEuNy43IGV2YXMtY3NlcnZlMi1wbWFwcy0xLjcuNyBldmFzLWNzZXJ2ZTItcG5nLTEuNy43IGV2YXMtY3NlcnZlMi1wc2QtMS43LjcgZXZhcy1jc2VydmUyLXRnYS0xLjcuNyBldmFzLWNzZXJ2ZTItdGlmZi0xLjcuNyBldmFzLWNzZXJ2ZTItd2JtcC0xLjcuNyBldmFzLWNzZXJ2ZTIteHBtLTEuNy43IGV2YXMtbG9hZGVyLWJtcC0xLjcuNyBldmFzLWxvYWRlci1nZW5lcmljLTEuNy43IGV2YXMtbG9hZGVyLWdpZi0xLjcuNyBldmFzLWxvYWRlci1pY28tMS43LjcgZXZhcy1sb2FkZXItanBlZy0xLjcuNyBldmFzLWxvYWRlci1wbWFwcy0xLjcuNyBldmFzLWxvYWRlci1wbmctMS43LjcgZXZhcy1sb2FkZXItcHNkLTEuNy43IGV2YXMtbG9hZGVyLXRnYS0xLjcuNyBldmFzLWxvYWRlci10aWZmLTEuNy43IGV2YXMtbG9hZGVyLXdibXAtMS43LjcgZXZhcy1sb2FkZXIteHBtLTEuNy43IGV2YXMtc2F2ZXItanBlZy0xLjcuNyBldmFzLXNhdmVyLXBuZy0xLjcuNyBldmFzLXNhdmVyLXRpZmYtMS43LjcgZXZhcy1lbmdpbmUtZmItMS43LjcKLSMgZW1vdGlvbi0xLjcuNyBlbGVtZW50YXJ5LTEuNy43IGVsZW1lbnRhcnktdGVzdHMtMS43LjcgZWxlbWVudGFyeS1hY2Nlc3NpYmlsaXR5LTEuNy43IGUtd20tMC4xNy4zIGVsZmUtMC4wLjErc3ZucjgyMDcwIHNoci1lLWdhZGdldHMtMC4wLjArZ2l0cjErMjdiNmMxN2Q3MyBjcHUtMC4wLjErc3ZucjgyMDcwIHBsYWNlcy0wLjEuMCtzdm5yODIwNzAgZm9yZWNhc3RzLTAuMi4wK3N2bnI4MjA3MCB1cHRpbWUtMC4wLjIrc3ZucjgyMDcwIHNjcmVlbnNob3QtMC4zLjArc3ZucjgyMDcwIGV4YWx0LWNsaWVudC0wLjAuMStzdm5yODIwNzAgZGlza2lvLTAuMC4xK3N2bnI4MjA3MCByYWluLTAuMC4zK3N2bnI4MjA3MCBuZXdzLTAuMS4wK3N2bnI4MjA3MCBmbGFtZS0wLjAuMytzdm5yODIwNzAKLVBSSVZBVEVfTElCUyA9ICJtb2R1bGUuc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NsYXNzZXMvZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jbGFzc2VzL2UuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlODBiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NsYXNzZXMvZS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU0VDVElPTiA9ICJlL2FwcHMiCi0KLWluaGVyaXQgZS1iYXNlIGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnCi0KLWRvX3ByZXBzb3VyY2VzICgpIHsKLSAgICBtYWtlIGNsZWFuIGRpc3RjbGVhbiB8fCB0cnVlCi19Ci1hZGR0YXNrIHByZXBzb3VyY2VzIGFmdGVyIGRvX3BhdGNoIGJlZm9yZSBkb19jb25maWd1cmUKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkkKGluY2x1ZGVkaXIpJzonLUkuJzpnCi19Ci0KLWV4cG9ydCBDVVJMX0NPTkZJRyA9ICIke1NUQUdJTkdfQklORElSX0NST1NTfS9jdXJsLWNvbmZpZyIKLWV4cG9ydCBGUkVFVFlQRV9DT05GSUcgPSAiJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vZnJlZXR5cGUtY29uZmlnIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGhlbWVzIgotUEFDS0FHRVMgKz0gIiR7UE59LWxpYiIKLQotRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1GSUxFU18ke1BOfS10aGVtZXMgPSAiJHtkYXRhZGlyfS8ke1BOfS90aGVtZXMgJHtkYXRhZGlyfS8ke1BOfS9kYXRhICR7ZGF0YWRpcn0vJHtQTn0vZm9udHMgJHtkYXRhZGlyfS8ke1BOfS9wb2ludGVycyAke2RhdGFkaXJ9LyR7UE59L2ltYWdlcyAke2RhdGFkaXJ9LyR7UE59L3VzZXJzICR7ZGF0YWRpcn0vJHtQTn0vaW1hZ2VzICR7ZGF0YWRpcn0vJHtQTn0vc3R5bGVzIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqLnNvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jbGFzc2VzL2VmbC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jbGFzc2VzL2VmbC5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjQwZTRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvY2xhc3Nlcy9lZmwuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLVNFQ1RJT04gPSAiZS9saWJzIgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1ERVBFTkRTICs9ICJwa2djb25maWctbmF0aXZlIgotCi0jIHJldmlzaW9uIDBkOTNlYzg0YjMwYmMxYmVlMmNhYWVlNzJkNjY3Zjg3YmM0NjhhNzAgbWFkZSBTUkNEQVRFIGFuZCBoZW5jZSBQViBnbyBiYWNrd2FyZHMsIHNvIHdlIG5lZWQgdG8gdXAgUEUgdG8gdW5icmVhayBidWlsZHMgYW5kIGZlZWRzIDooCi1QRSA9ICIyIgotCi1pbmhlcml0IGUtYmFzZSBhdXRvdG9vbHMKLQotIyBldmFzLW5hdGl2ZSBsb29rcyBhdCB0aGlzIHZhciwgc28ga2VlcCBpdAotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBhdXRvcG9pbnQgfHwgdG91Y2ggY29uZmlnLnJwYXRoCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZCAoKSB7Ci0gICAgZm9yIGkgaW4gYGZpbmQgJHtCfS8gLW5hbWUgIioucGMiIC10eXBlIGZgIDsgZG8gXAotICAgICAgICBzZWQgLWkgLWUgJ3M6LUwke1NUQUdJTkdfTElCRElSfTotTFwkXHtsaWJkaXJcfTpnJyAtZSAnczotSSR7U1RBR0lOR19MSUJESVJ9Oi1JXCRce2xpYmRpclx9OmcnIC1lICdzOi1JJHtTVEFHSU5HX0lOQ0RJUn06LUlcJFx7aW5jbHVkZWRpclx9OmcnICRpCi0gICAgZG9uZQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGhlbWVzIgotUEFDS0FHRVMgKz0gIiR7UE59LXRlc3RzIgotUEFDS0FHRVMgKz0gIiR7UE59LWVvbGlhbiIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vZWRqZS9tb2R1bGVzLyR7UE59LyovbW9kdWxlLnNvIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfS9wbHVnaW5zLyouc28gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKiBcCi0iCi0KLQotRklMRVNfJHtQTn0tdGhlbWVzID0gIiR7ZGF0YWRpcn0vJHtQTn0vdGhlbWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59L2RhdGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfS9wbHVnaW5zL2RhdGEvKi5lZGogXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0vZm9udHMgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0vcG9pbnRlcnMgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0vaW1hZ2VzIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59L3VzZXJzIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59L2ltYWdlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS9zdHlsZXMiCi0KLUZJTEVTXyR7UE59LWRldiAgICs9ICIke2JpbmRpcn0vJHtQTn0tY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWIqLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7UE59LyoubGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfS8qLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0vZWRqZV9leHRlcm5hbHMgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9lZGplL21vZHVsZXMvJHtQTn0vKi9tb2R1bGUubGEgXAotIgotCi1GSUxFU18ke1BOfS1lb2xpYW4gPSAiIFwKLSAgICAke2RhdGFkaXJ9L2VvbGlhbi9pbmNsdWRlIFwKLSIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59LyovKi5hIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gICAiJHtsaWJkaXJ9LyR7UE59Ly5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7UE59LyovLmRlYnVnIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZWRqZS9tb2R1bGVzLyR7UE59LyovLmRlYnVnL21vZHVsZS5zbyBcCi0iCi0KLUZJTEVTXyR7UE59LXRlc3RzICA9ICIke2JpbmRpcn0vJHtQTn0gXAotICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS8qXyogXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NvbmYvZGlzdHJvL2luY2x1ZGUvZWZsLWZyb20tc3ZuLXJlY2lwZXMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jb25mL2Rpc3Ryby9pbmNsdWRlL2VmbC1mcm9tLXN2bi1yZWNpcGVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhOGVhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NvbmYvZGlzdHJvL2luY2x1ZGUvZWZsLWZyb20tc3ZuLXJlY2lwZXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRUZMX1BSRUZFUlJFRF9WRVJTSU9OID89ICIxLjcuNCtzdm4lIgotRUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTiA/PSAiMS43LjArc3ZuJSIKLQotUFJFRkVSUkVEX1ZFUlNJT05fZS13bSA/PSAiMC4xNy4wK3N2bnIlIgotCi1QUkVGRVJSRURfVkVSU0lPTl9lY29yZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fZWNvcmUtbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lZGJ1cyA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fZWRidXMtbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lZGplID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lZGplLW5hdGl2ZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fZWRqZS1uYXRpdmVzZGsgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VlemUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VlemUtbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lZnJlZXQgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VmcmVldC1uYXRpdmUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VpbmEgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VpbmEtbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lbWJyeW8gPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VtYnJ5by1uYXRpdmUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2V2YXMgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2V2YXMtZ2VuZXJpYy1sb2FkZXJzID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9ldmFzLW5hdGl2ZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fZXhwZWRpdGUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2V4cGVkaXRlLW5hdGl2ZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1ZFUlNJT059IgotCi1QUkVGRVJSRURfVkVSU0lPTl9lZXQgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VldC1uYXRpdmUgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLQotUFJFRkVSUkVEX1ZFUlNJT05fZWlvID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9laW8tbmF0aXZlID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9lbW90aW9uID89ICIke0VGTF9QUkVGRVJSRURfVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9ldGh1bWIgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2VsZW1lbnRhcnkgPz0gIiR7RUZMX1BSRUZFUlJFRF9WRVJTSU9OfSIKLQotUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uLWVsZW1lbnRhcnkgPz0gIiR7RUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9weXRob24tZWNvcmUgPz0gIiR7RUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9weXRob24tZWRidXMgPz0gIiR7RUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9weXRob24tZWRqZSA/PSAiJHtFRkxfUFJFRkVSUkVEX1BZVEhPTl9WRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbi1lbW90aW9uID89ICIke0VGTF9QUkVGRVJSRURfUFlUSE9OX1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uLWV2YXMgPz0gIiR7RUZMX1BSRUZFUlJFRF9QWVRIT05fVkVSU0lPTn0iCi0KLVBSRUZFUlJFRF9WRVJTSU9OX3Rlcm1pbm9sb2d5ID89ICIwLjIuMCtzdm4lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NvbmYvbGF5ZXIuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE5MGNlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL2NvbmYvbGF5ZXIuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhcHBlbmQgdG8gQkJQQVRIIAotQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCi0KLSMgV2UgaGF2ZSBhIHJlY2lwZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJGSUxFUwotQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgotCi1CQkZJTEVfQ09MTEVDVElPTlMgKz0gImVmbC1sYXllciIKLUJCRklMRV9QQVRURVJOX2VmbC1sYXllciA6PSAiXiR7TEFZRVJESVJ9LyIKLUJCRklMRV9QUklPUklUWV9lZmwtbGF5ZXIgPSAiNyIKLQotIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCi0jIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCi1MQVlFUlZFUlNJT05fZWZsLWxheWVyID0gIjEiCi0KLUxBWUVSREVQRU5EU19lZmwtbGF5ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCi0KLUVfTUlSUk9SID0gImh0dHA6Ly9kb3dubG9hZC5lbmxpZ2h0ZW5tZW50Lm9yZy9yZWxlYXNlcyIKLUVfUkVMRUFTRVMgPSAiaHR0cDovL2Rvd25sb2FkLmVubGlnaHRlbm1lbnQub3JnL3JlbCIKLUVfU1ZOID0gInN2bjovL3N2bi5lbmxpZ2h0ZW5tZW50Lm9yZy9zdm4vZSIKLQotIyBSREVQRU5EUyBvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIHByb3ZpZGVyIG9wa2ctdXRpbHMKLVNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIlwKLSAgZXhxdWlzaXRlLXRoZW1lLWlsbHVtZS0+b3BrZy11dGlscyBcCi0iCi0KLSMgUkRFUEVORFMgb24gZS13bQotU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiXAotICBlLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodC0+ZS13bSBcCi0gIGUtd20tdGhlbWUtaWxsdW1lLW5lby0+ZS13bSBcCi0gIGUtd20tdGhlbWUtYi1hbmQtdy0+ZS13bSBcCi0iCi0KLVNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCi0gIHBhY2thZ2Vncm91cC1lZmwtc2RrLT5wYWNrYWdlZ3JvdXAtY29yZS1zZGsgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLXRvb2xjaGFpbi1lZmwuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtdG9vbGNoYWluLWVmbC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdiN2ZjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtdG9vbGNoYWluLWVmbC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotVE9PTENIQUlOX1RBUkdFVF9FRkxUQVNLID89ICJwYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldCBwYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldC1kYmciCi1UT09MQ0hBSU5fVEFSR0VUX1RBU0sgPSAiJHtUT09MQ0hBSU5fVEFSR0VUX0VGTFRBU0t9IgotVE9PTENIQUlOX09VVFBVVE5BTUUgPSAiJHtTREtfTkFNRX0tdG9vbGNoYWluLWVmbC0ke0RJU1RST19WRVJTSU9OfSIKLXJlcXVpcmUgcmVjaXBlcy1jb3JlL21ldGEvbWV0YS10b29sY2hhaW4uYmIKLQotVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRSArPSAiemxpYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVkYnVzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVkYnVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M2MDA4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGJ1cy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1ERVNDUklQVElPTiA9ICIke1BOfSBiaW5kaW5ncyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLUFVVEhPUiA9ICJHdXN0YXZvIFN2ZXJ6dXQgQmFyYmllcmkgPGJhcmJpZXJpQGdtYWlsLmNvbT4iCi0jIE5PVEU6IER1ZSB0byBhIGJ1ZyBpbiBkaXN0dXRpbHMsIGV2ZW4gaWYgd2UgZG9uJ3QgdXNlIHB5cmV4IGJ1dCBjeXRob24sCi0jIHdlIG5lZWQgdG8gYnVpbGQgcHlyZXggb3RoZXJ3aXNlIGN5dGhvbiBkb2Vzbid0IGdldCBjYWxsZWQgdG8gYnVpbGQKLSMgdGhlIGV4dGVuc2lvbiBtb2R1bGVzLgotREVQRU5EUyA9ICJweXRob24tY3l0aG9uLW5hdGl2ZSBweXRob24tcHlyZXgtbmF0aXZlIHB5dGhvbi1udW1lcmljIGVpbmEgZWRidXMgcHl0aG9uLWRidXMiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWxhbmcgcHl0aG9uLWRidXMiCi0KLWluaGVyaXQgZS1iYXNlIGF1dG90b29scyBwa2djb25maWcgZGlzdHV0aWxzLWJhc2UKLQotU1JDTkFNRSA9ICJweXRob24tZV9kYnVzIgotU1JDVkVSID0gIiR7UFZ9IgotCi1TUkNfVVJJID0gIlwKLSAgICAke0VfTUlSUk9SfS9CSU5ESU5HUy9weXRob24vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmJ6MiBcCi0iCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0iCi0KLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBwcmVmaXggQ1lUSE9OXy4qX0lOQ0xVREVESVIgd2l0aCBwYXRoIHRvIFNUQUdJTkdfRElSX0hPU1QgYWxzbyB1c2UgJFBLR19DT05GSUcgaW5zdGVhZCBvZiBwa2ctY29uZmlnIGRpcmVjdGx5Ci0gICAgc2VkIC1pICJzIz1cYFwkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgXCJweXRob24tZXZhcyM9JHtTVEFHSU5HX0RJUl9IT1NUfVxgXCRQS0dfQ09ORklHIC0tdmFyaWFibGU9aW5jbHVkZWRpciBcInB5dGhvbi1ldmFzI2ciICR7U30vY29uZmlndXJlLmFjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgLWUgZXhhbXBsZXMgXTsgdGhlbgotICAgICAgICBmb3IgaSBpbiBgZmluZCBleGFtcGxlcyAtbmFtZSAiKi5lZGMiYDsgZG8KLSAgICAgICAgICAgIGNkICR7U30vYGRpcm5hbWUgJGlgCi0gICAgICAgICAgICBlY2hvICJHZW5lcmF0aW5nIC5lZGogZmlsZSBmb3IgJGkuLi4iCi0gICAgICAgICAgICBlZGplX2NjIGBiYXNlbmFtZSAkaWAKLSAgICAgICAgICAgIGVjaG8gIlJlbW92aW5nIHNvdXJjZXMgaW4gdGhpcyBkaXJlY3RvcnkuLi4iCi0gICAgICAgICAgICBybSAtZiAqLmVkYyAqLnBuZyAqLnR0ZiAqLmpwZWcKLSAgICAgICAgZG9uZQotICAgICAgICBjZCAke1N9Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vJHtQTn0vCi0gICAgICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12IGV4YW1wbGVzICR7RH0ke2RhdGFkaXJ9LyR7UE59LwotICAgICAgICBmaW5kICR7RH0ke2RhdGFkaXJ9LyR7UE59L2V4YW1wbGVzIC1uYW1lICIuc3ZuIiB8IHhhcmdzIHJtIC1yZgotICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy8qLmVnZy8qLyovLmRlYnVnIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tZXhhbXBsZXMiCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RhdGFkaXJ9LyR7UE59L2V4YW1wbGVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWRidXNfMS43LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGJ1c18xLjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhY2Y4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGJ1c18xLjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVBSID0gInIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDBiNDc5NDQ0YmIwNjE0NzQyOWEyNzYxMjc5ODE4OTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzhlNWNhMzM0ZWUyNTE4NTc0ODY2MGI0ZTYxMmY5ODRmNGQzYmNlZDAxOGYwNjIyNzg3MDE0Mjk4NjhmMTE3YiIKLQotUE5CTEFDS0xJU1RbcHl0aG9uLWVkYnVzXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYwMC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWZsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgzN2RhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiJHtQTn0gYmluZGluZ3MiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0jIHRoZXJlIGlzIGFsc28gR1BMdjMuMCBpbiBDT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBidXQgbm8gZmlsZSBzZWVtcyB0byB1c2UgdGhhdAotCi1BVVRIT1IgPSAiR3VzdGF2byBTdmVyenV0IEJhcmJpZXJpIDxiYXJiaWVyaUBnbWFpbC5jb20+IgotIyBOT1RFOiBEdWUgdG8gYSBidWcgaW4gZGlzdHV0aWxzLCBldmVuIGlmIHdlIGRvbid0IHVzZSBweXJleCBidXQgY3l0aG9uLAotIyB3ZSBuZWVkIHRvIGJ1aWxkIHB5cmV4IG90aGVyd2lzZSBjeXRob24gZG9lc24ndCBnZXQgY2FsbGVkIHRvIGJ1aWxkCi0jIHRoZSBleHRlbnNpb24gbW9kdWxlcy4KLURFUEVORFMgPSAicHl0aG9uLWN5dGhvbi1uYXRpdmUgcHl0aG9uLXB5cmV4LW5hdGl2ZSBweXRob24tbnVtZXJpYyBweXRob24tZGJ1cyBsdWEgZWZsIGVsZW1lbnRhcnkiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWxhbmciCi0KLVBST1ZJREVTID0gInB5dGhvbi1lY29yZSBweXRob24tZWxkYnVzIHB5dGhvbi1lZGplIHB5dGhvbi1lbGVtZW50YXJ5IHB5dGhvbi1lbW90aW9uIHB5dGhvbi1ldmFzIgotCi1pbmhlcml0IGUtYmFzZSBkaXN0dXRpbHMgcGtnY29uZmlnCi0KLVNSQ1ZFUiA9ICIke1BWfSIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtFX1JFTEVBU0VTfS9iaW5kaW5ncy9weXRob24vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmd6IFwKLSIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7U1JDVkVSfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBkcm9wIGFsbCAucHlvLCBweWMgZmlsZXMKLSAgICBmaW5kICR7RH0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzIC1uYW1lIFwqLnB5byAtbyAtbmFtZSBcKi5weWMgfCB4YXJncyBybSAtZgotfQotCi1QQUNLQUdFUyArPSAicHl0aG9uLWVjb3JlIHB5dGhvbi1lbGRidXMgcHl0aG9uLWVkamUgcHl0aG9uLWVsZW1lbnRhcnkgcHl0aG9uLWVtb3Rpb24gcHl0aG9uLWV2YXMgcHl0aG9uLWV0aHVtYiAke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3B5dGhvbl9lZmwqZWdnLWluZm8gXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZWZsL2VvLnNvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC91dGlscyBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lZmwvX19pbml0X18ucHkgXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzLyouZWdnLyovKi8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvKi8qLmxhIgotCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RhdGFkaXJ9LyR7UE59L2V4YW1wbGVzIgotCi1GSUxFU19weXRob24tZWNvcmUgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2Vjb3JlLyBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lZmwvZWNvcmUqLnNvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC9lY29yZSBcCi0iCi1GSUxFU19weXRob24tZWxkYnVzID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lX2RidXMvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC9kYnVzX21haW5sb29wLnNvIFwKLSIKLUZJTEVTX3B5dGhvbi1lZGplID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lZGplLyBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9lZmwvZWRqZSouc28gXAotIgotRklMRVNfcHl0aG9uLWVsZW1lbnRhcnkgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VsZW1lbnRhcnkvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC9lbGVtZW50YXJ5LyBcCi0iCi1GSUxFU19weXRob24tZW1vdGlvbiA9ICIgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZW1vdGlvbi8gXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZWZsL2Vtb3Rpb24uc28gXAotIgotRklMRVNfcHl0aG9uLWV2YXMgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2V2YXMvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2VmbC9ldmFzLnNvIFwKLSIKLUZJTEVTX3B5dGhvbi1ldGh1bWIgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2V0aHVtYi8gXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvZWZsL2V0aHVtYipzbyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmxfMS4xNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWZsXzEuMTUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlhNzliMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmxfMS4xNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImY3YzVkNTU3MzM2ZWE5ZGY2OWJjY2EwOWM0MjA3MTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExZTYwN2I0NjVjYjY2ZGFmZTA1YzY2ZTAyZDYxZTA5MzM1YjM3MGZlOWZkMmE3NGQ4ODI4MmIzZWU1OTdiY2MiCi0KLVBOQkxBQ0tMSVNUW3B5dGhvbi1lZmxdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWZsX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyYjllYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZmxfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ1JFViA9ICI3MWVkMjBlYmY2NjJhN2I3MmU2MDkxM2RmOTRjZTY5MzMyMzZiZjA5IgotUFYgPSAiMS4xMi4wK2dpdCR7U1JDUFZ9IgotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5lbmxpZ2h0ZW5tZW50Lm9yZy9iaW5kaW5ncy9weXRob24vJHtCUE59LmdpdDticmFuY2g9cHl0aG9uLWVmbC0xLjEyIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QTkJMQUNLTElTVFtweXRob24tZWZsXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvY3B1L2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2NwdS9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Yzg1ZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvY3B1L2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBjcHUvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3B1Lm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjA6Mzk6NDguMDAwMDAwMDAwICswMDAwCi0rKysgY3B1L2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjM5OjU1LjMyMDU1NTg2OCArMDAwMAotQEAgLTEwLDcgKzEwLDcgQEAKLSBBQ19DQU5PTklDQUxfSE9TVAotIEFDX0lTQ19QT1NJWAotIAotLUFNX0lOSVRfQVVUT01BS0UoMS42KQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2NwdV9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9jcHVfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmZiOTg4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2NwdV9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctUExBSU47bWQ1PWM5MTBiNjQ1ZWRhMDAwNWNjZWM0NmY3NTIwM2RjOTZlIgotCi1QViA9ICIwLjAuMStzdm5yJHtTUkNSRVZ9IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLXJlcXVpcmUgZS1tb2R1bGUuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi0KLVBOQkxBQ0tMSVNUW2NwdV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Rpc2tpb19zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9kaXNraW9fc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Zjc3OGQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Rpc2tpb19zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctUExBSU47bWQ1PTY4YmU3NmQ4MTI2ZmFjZTJmYmJlY2RmMWJjYmUyYjEwIgotCi1QViA9ICIwLjAuMStzdm5yJHtTUkNQVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotUE5CTEFDS0xJU1RbZGlza2lvXSA/PSAiYnJva2VuOiBzd2l0Y2ggdG8gaHR0cHM6Ly9naXQuZW5saWdodGVubWVudC5vcmcvZW5saWdodGVubWVudC9tb2R1bGVzL2Rpc2tpby5naXQvIGFuZCBmaXggMC4wLjErc3ZucjgyMDcwLXIwLjAvRS1NT0RVTEVTLUVYVFJBL2Rpc2tpby9lLW1vZHVsZS1kaXNraW8uZWRjOjU4LiBpbnZhbGlkIHN0YXRlIG5hbWU6ICdvZmYnLiAiZGVmYXVsdCIgc3RhdGUgbXVzdCBhbHdheXMgYmUgZmlyc3QuIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS1tb2R1bGUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS1tb2R1bGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzBmNzk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2UtbW9kdWxlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkUxNyAke1BOfSBtb2R1bGUiCi1TRUNUSU9OID0gIngxMS9tdWx0aW1lZGlhIgotREVQRU5EUyA9ICJlLXdtIgotCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLUlOQ19QUiA9ICJyMCIKLQotU1JDTkFNRSA9ICJFLU1PRFVMRVMtRVhUUkEvJHtCUE59IgotCi1pbmhlcml0IGUgZ2V0dGV4dAotU1JDX1VSSSA9ICIke0VfU1ZOfS90cnVuazttb2R1bGU9JHtTUkNOQU1FfTtwcm90b2NvbD1odHRwO3NjbWRhdGE9a2VlcCIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyR7UE59IgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyR7UE59LyovLmRlYnVnIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyR7UE59LyovKi5hIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXRhc2tzLzAwMDEtZGJ1cy1zdHVmZi1Db252ZXJ0LXRvLWVsZGJ1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2UtdGFza3MvMDAwMS1kYnVzLXN0dWZmLUNvbnZlcnQtdG8tZWxkYnVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTJhNzcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2UtdGFza3MvMDAwMS1kYnVzLXN0dWZmLUNvbnZlcnQtdG8tZWxkYnVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLUZyb20gMzcyMjMyODliM2Q4NWVhODg3NmU3YmE3YzlmZjk3ZWM0MjgwNzNiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjIgRmViIDIwMTQgMTQ6MzY6MzggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGJ1cy1zdHVmZjogQ29udmVydCB0byBlbGRidXMKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICB8ICAyICstCi0gc3JjL01ha2VmaWxlLmFtICB8ICAyICstCi0gc3JjL2RidXMtc3R1ZmYuYyB8IDk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2RidXMtc3R1ZmYuaCB8IDEzICsrLS0tLS0tCi0gc3JjL21haW4uYyAgICAgICB8ICAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjNlNGQxMi4uNGFjZTMyYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTUsNyArMTUsNyBAQCBBQ19IRUFERVJfU1REQwotIAotIEFNX1BST0dfTElCVE9PTAotIAotLVBLR19DSEVDS19NT0RVTEVTKFRBU0tTLCBbZWxlbWVudGFyeSBlaW5hIGRidXMtMSBlZGJ1cyBzcWxpdGUzXSkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhUQVNLUywgW2VsZW1lbnRhcnkgZWluYSBkYnVzLTEgZWxkYnVzIHNxbGl0ZTNdKQotIAotIEFDX09VVFBVVChbCi0gTWFrZWZpbGUKLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDIxNDNkYzkuLjMxZDUyNTMgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTgsNyArOCw3IEBAIEFNX0NQUEZMQUdTID0gXAotIAkkKFRBU0tTX0NGTEFHUykKLSAKLSBBTV9DRkxBR1MgPVwKLS0gICAgICAgICAkKEVEQlVTX0NGTEFHUykgXAotKyAgICAgICAgICQoRUxEQlVTX0NGTEFHUykgXAotIAkgLVdhbGxcCi0gCSAtZwotIAotZGlmZiAtLWdpdCBhL3NyYy9kYnVzLXN0dWZmLmMgYi9zcmMvZGJ1cy1zdHVmZi5jCi1pbmRleCA1MDgwOWJjLi45ZjAyZWYzIDEwMDY0NAotLS0tIGEvc3JjL2RidXMtc3R1ZmYuYwotKysrIGIvc3JjL2RidXMtc3R1ZmYuYwotQEAgLTEsOCArMSw3IEBACi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqICAgICAgICAgICAgZGJ1cy1zdHVmZi5jCi0gICoKLS0gKiAgQ29weXJpZ2h0ICAyMDA5ICBjY2hhbmRlbAotLSAqICA8Y2NoYW5kZWxAeWFob28uY29tPgotKyAqICBDb3B5cmlnaHQgIDIwMDkgIGNjaGFuZGVsIDxjY2hhbmRlbEB5YWhvby5jb20+Ci0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gCi0gLyoKLUBAIC0yMSw1MSArMjAsNjcgQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgIFVTQQotICAqLwotICNpbmNsdWRlICJkYnVzLXN0dWZmLmgiCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxFX0RCdXMuaD4KLS0jaW5jbHVkZSA8RWxlbWVudGFyeS5oPgotKyNpbmNsdWRlICJFbGRidXMuaCIKLSAKLS12b2lkIG9jY3VweV9jcHUodm9pZCkKLSt2b2lkIG9uX3VzYWdlX2NiKHZvaWQgKmRhdGEgRUlOQV9VTlVTRUQsIGNvbnN0IEVsZGJ1c19NZXNzYWdlICptc2csIEVsZGJ1c19QZW5kaW5nICpwZW5kaW5nIEVJTkFfVU5VU0VEKQotK3sKLSsgICAgICAgIGNvbnN0IGNoYXIgKmVycm5hbWUsICplcnJtc2c7Ci0rICAgICAgICBpZiAoZWxkYnVzX21lc3NhZ2VfZXJyb3JfZ2V0KG1zZywgJmVycm5hbWUsICZlcnJtc2cpKQotKwkgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzICVzXG4iLCBlcnJuYW1lLCBlcnJtc2cpOwotK30KLSsKLStpbnQgb3VzYWdlZF9yZXNvdXJjZShjb25zdCBjaGFyICpyZXNvdXJjZSwgaW50IHVzZWQpCi0gewkKLS0JZV9kYnVzX2luaXQoKTsKLS0JY29ubiA9IGVfZGJ1c19idXNfZ2V0KERCVVNfQlVTX1NZU1RFTSk7Ci0tCQotLQlEQnVzTWVzc2FnZSAqbXNnOwotLQltc2cgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9jYWxsKAotLQkJIm9yZy5mcmVlc21hcnRwaG9uZS5vdXNhZ2VkIiwKLS0JCSIvb3JnL2ZyZWVzbWFydHBob25lL1VzYWdlIiwKLS0JCSJvcmcuZnJlZXNtYXJ0cGhvbmUuVXNhZ2UiLAotLQkJIlJlcXVlc3RSZXNvdXJjZSIKLS0JKTsKLS0JCi0tCWNvbnN0IGNoYXIgKnJlc291cmNlID0gIkNQVSI7Ci0tCWRidXNfbWVzc2FnZV9hcHBlbmRfYXJncyAobXNnLCBEQlVTX1RZUEVfU1RSSU5HLCAmcmVzb3VyY2UsIERCVVNfVFlQRV9JTlZBTElEKTsKLSsJZWxkYnVzX2luaXQoKTsKLSsJY29uc3QgY2hhciAqUkVRVUVTVCA9ICJSZXF1ZXN0UmVzb3VyY2UiOwotKwljb25zdCBjaGFyICpSRUxFQVNFID0gIlJlbGVhc2VSZXNvdXJjZSI7Ci0rCWNvbnN0IGludCAgIFBSRVFVRVNUID0gMTsKLSAKLS0JZV9kYnVzX21lc3NhZ2Vfc2VuZChjb25uLCBtc2csIGRidXNfcmVwbHlfY2IsIC0xLCBOVUxMKTsKLS0JZGJ1c19tZXNzYWdlX3VucmVmKG1zZyk7Ci0tfQotKyAgICAgICAgRWxkYnVzX0Nvbm5lY3Rpb24gKmNvbm47Ci0rICAgICAgICBFbGRidXNfT2JqZWN0ICpvYmo7Ci0rICAgICAgICBFbGRidXNfUHJveHkgKnVzYWdlOwotKyAgICAgICAgRWxkYnVzX1BlbmRpbmcgKnBlbmRpbmc7Ci0rCWNvbm4gPSBlbGRidXNfY29ubmVjdGlvbl9nZXQoRUxEQlVTX0NPTk5FQ1RJT05fVFlQRV9TWVNURU0pOwotKyAgICAgICAgaWYgKCFjb25uKQotKyAgICAgICAgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBjb3VsZCBub3QgZ2V0IHN5c3RlbSBidXNcbiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotKyAgICAgICAgfQotIAotLXZvaWQgcmVsZWFzZV9jcHUodm9pZCkKLS17Ci0tCURCdXNNZXNzYWdlICptc2c7Ci0tCW1zZyA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2NhbGwoCi0tCQkib3JnLmZyZWVzbWFydHBob25lLm91c2FnZWQiLAotLQkJIi9vcmcvZnJlZXNtYXJ0cGhvbmUvVXNhZ2UiLAotLQkJIm9yZy5mcmVlc21hcnRwaG9uZS5Vc2FnZSIsCi0tCQkiUmVsZWFzZVJlc291cmNlIgotLQkpOwotLQkKLS0JY29uc3QgY2hhciAqcmVzb3VyY2UgPSAiQ1BVIjsKLS0JZGJ1c19tZXNzYWdlX2FwcGVuZF9hcmdzIChtc2csIERCVVNfVFlQRV9TVFJJTkcsICZyZXNvdXJjZSwgREJVU19UWVBFX0lOVkFMSUQpOwotKyAgICAgICAgb2JqID0gZWxkYnVzX29iamVjdF9nZXQoY29ubiwgIm9yZy5mcmVlc21hcnRwaG9uZS5vdXNhZ2VkIiwgIi9vcmcvZnJlZXNtYXJ0cGhvbmUvVXNhZ2UiKTsKLSsgICAgICAgIGlmICghb2JqKQotKyAgICAgICAgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBjb3VsZCBub3QgZ2V0IG9iamVjdFxuIik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICB9Ci0gCi0tCWVfZGJ1c19tZXNzYWdlX3NlbmQoY29ubiwgbXNnLCBkYnVzX3JlcGx5X2NiLCAtMSwgTlVMTCk7Ci0tCWRidXNfbWVzc2FnZV91bnJlZihtc2cpOwotKyAgICAgICAgdXNhZ2UgPSBlbGRidXNfcHJveHlfZ2V0KG9iaiwgIm9yZy5mcmVlc21hcnRwaG9uZS5Vc2FnZSIpOwotKyAgICAgICAgaWYgKCF1c2FnZSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogY291bGQgbm90IGdldCBwcm94eVxuIik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBwZW5kaW5nID0gZWxkYnVzX3Byb3h5X2NhbGwodXNhZ2UsIHVzZWQgPT0gUFJFUVVFU1QgPyBSRVFVRVNUIDogUkVMRUFTRSwgb25fdXNhZ2VfY2IsIE5VTEwsIC0xLCAic3MiLCByZXNvdXJjZSk7Ci0rICAgICAgICBpZiAoIXBlbmRpbmcpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IGNvdWxkIG5vdCBjYWxsXG4iKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSsgICAgICAgIH0KLSsgICAgICAgIGVsZGJ1c19wcm94eV91bnJlZih1c2FnZSk7Ci0rICAgICAgICBlbGRidXNfb2JqZWN0X3VucmVmKG9iaik7Ci0rICAgICAgICBlbGRidXNfY29ubmVjdGlvbl91bnJlZihjb25uKTsKLSsKLSsgICAgICAgIGVsZGJ1c19zaHV0ZG93bigpOwotKwlyZXR1cm4gRVhJVF9TVUNDRVNTOwotIH0KLSAKLS12b2lkIGRidXNfcmVwbHlfY2Iodm9pZCAqZGF0YSwgREJ1c01lc3NhZ2UgKnJlcGx5bXNnLCBEQnVzRXJyb3IgKmVycm9yKQotK2ludCByZXF1ZXN0X2NwdSh2b2lkKQotIHsKLS0JaWYgKGRidXNfZXJyb3JfaXNfc2V0KGVycm9yKSkgewotLQkJcHJpbnRmKCJFcnJvcjogJXMgLSAlc1xuIiwgZXJyb3ItPm5hbWUsIGVycm9yLT5tZXNzYWdlKTsKLS0JfQotKyAgICAgICAgcmV0dXJuIG91c2FnZWRfcmVzb3VyY2UoIkNQVSIsIDEpOwotIH0KLSAKLStpbnQgcmVsZWFzZV9jcHUodm9pZCkKLSt7Ci0rICAgICAgICByZXR1cm4gb3VzYWdlZF9yZXNvdXJjZSgiQ1BVIiAsIDApOwotK30KLWRpZmYgLS1naXQgYS9zcmMvZGJ1cy1zdHVmZi5oIGIvc3JjL2RidXMtc3R1ZmYuaAotaW5kZXggODNkNDc3OC4uYTNjNzJjYiAxMDA2NDQKLS0tLSBhL3NyYy9kYnVzLXN0dWZmLmgKLSsrKyBiL3NyYy9kYnVzLXN0dWZmLmgKLUBAIC0yLDggKzIsNyBAQAotICAqICAgICAgICAgICAgZGJ1cy5oCi0gICoKLSAgKiAgRnJpIE1hciAgNiAxMjozMjo1NyAyMDA5Ci0tICogIENvcHlyaWdodCAgMjAwOSAgbmlkaGluCi0tICogIDxuaWRoaW5Abmlkcy1sYXB0b3AuaG9tZT4KLSsgKiAgQ29weXJpZ2h0ICAyMDA5ICBuaWRoaW4gPG5pZGhpbkBuaWRzLWxhcHRvcC5ob21lPgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotIC8qCi1AQCAtMjIsMTEgKzIxLDUgQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgIFVTQQotICAqLwotIAotLSNpbmNsdWRlIDxFX0RCdXMuaD4KLS0jaW5jbHVkZSA8RWxlbWVudGFyeS5oPgotLQotLXZvaWQgb2NjdXB5X2NwdSh2b2lkKTsKLS12b2lkIHJlbGVhc2VfY3B1KHZvaWQpOwotLXZvaWQgZGJ1c19yZXBseV9jYih2b2lkICpkYXRhLCBEQnVzTWVzc2FnZSAqcmVwbHltc2csIERCdXNFcnJvciAqZXJyb3IpOwotLQotLUVfREJ1c19Db25uZWN0aW9uICpjb25uOwotK2ludCByZXF1ZXN0X2NwdSh2b2lkKTsKLStpbnQgcmVsZWFzZV9jcHUodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL21haW4uYyBiL3NyYy9tYWluLmMKLWluZGV4IDkyZDIxZGUuLjRlNGJiZTIgMTAwNjQ0Ci0tLS0gYS9zcmMvbWFpbi5jCi0rKysgYi9zcmMvbWFpbi5jCi1AQCAtNzYsNyArNzYsNyBAQCBlbG1fbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCS8vcmVzdG9yZSBzdGF0ZQotIAlyZXN0b3JlX3N0YXRlKCk7Ci0gCi0tCW9jY3VweV9jcHUoKTsKLSsJcmVxdWVzdF9jcHUoKTsKLSAKLSAJZWxtX3J1bigpOwotIAkvL2NsZWFuIHVwIHN0dWZmCi0tLSAKLTEuOC41LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS10YXNrc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXRhc2tzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VhYjZkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXRhc2tzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiZS10YXNrcyBpcyBhIHRvZG8gcHJvZ3JhbSBmb3IgT3Blbm1va28gcGhvbmVzIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2UtdGFza3MvIgotQVVUSE9SID0gImNjaGFuZGVsIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThmMGUyY2Q0MGUwNTE4OWVjODEyMzJkYTg0YmQ2ZTFhIgotU0VDVElPTiA9ICJlL2FwcHMiCi1ERVBFTkRTID0gImVsZW1lbnRhcnkgZWluYSBlbGRidXMgc3FsaXRlMyIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotU1JDUkVWID0gIjg5MGY1ZWUzN2QxYTVmZDFjZWIyNDk1OTUwZDE1MTUxZDRjZjc1NmIiCi1QViA9ICIwLjAuMitnaXRyJHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zaHItcHJvamVjdC9lLXRhc2tzLmdpdCIKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRidXMtc3R1ZmYtQ29udmVydC10by1lbGRidXMucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgIiR7RH0vJHtkYXRhZGlyfS9waXhtYXBzIgotICAgIGluc3RhbGwgLW0gMDY0NCAiJHtTfS9yZXNvdXJjZXMvZS10YXNrcy5wbmciICIke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcyIKLSAgICBpbnN0YWxsIC1kICIke0R9LyR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIgotICAgIGluc3RhbGwgLW0gMDY0NCAiJHtTfS9yZXNvdXJjZXMvZS10YXNrcy5kZXNrdG9wIiAiJHtEfS8ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKLSAgICBpbnN0YWxsIC1kICAiJHtEfS8ke2RhdGFkaXJ9L2UtdGFza3MiCi0gICAgZm9yIGljbyBpbiAiJHtTfS9yZXNvdXJjZXMvIioucG5nOyBkbwotICAgICAgICBpZiBbICIkKGJhc2VuYW1lICRpY28pIiAhPSAiZS10YXNrcy5wbmciIF07IHRoZW4KLSAgICAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAkaWNvICIke0R9LyR7ZGF0YWRpcn0vZS10YXNrcyIKLSAgICAgICAgZmkKLSAgICBkb25lCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIvdXNyL3NoYXJlL2UtdGFza3MvKiAvdXNyL3NoYXJlL2FwcGxpY2F0aW9ucy8qIC91c3Ivc2hhcmUvcGl4bWFwcy8qIgotCi1QTkJMQUNLTElTVFtlLXRhc2tzXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1iLWFuZC13X3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20tdGhlbWUtYi1hbmQtd19zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNmU5ZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1iLWFuZC13X3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gImItYW5kLXcgdGhlbWUgd2FzIGRlZmF1bHQgRTE3IHRoZW1lIGJlZm9yZSBhbHBoYTMgYW5kIHNvbWUgcGVvcGxlIHN0aWxsIHByZWZlcnMgaXQuIgotU0VDVElPTiA9ICJlL3V0aWxzIgotREVQRU5EUyA9ICJlZGplLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImUtd20iCi1MSUNFTlNFID0gIk1JVCAmIEJTRCIKLSMgdXBzdHJlYW0gd2FzIGFza2VkIHRvIGluY2x1ZGUgbGljZW5zZSBpbmZvciBpbiBUSEVNRSBkaXIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLVBWID0gIjAuMCtzdm5yJHtTUkNQVn0iCi0KLWluaGVyaXQgZS1iYXNlCi0KLVNSQ05BTUUgPSAiYl9hbmRfdyIKLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bmsvVEhFTUVTO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS9lIgotCi1kb19jb21waWxlKCkgewotICAgICMgdW5mb3J0dW5hdGVseSBoYXJkY29kZWQgZWRqZV9jYyBpbiBNYWtlZmlsZQotICAgIHNlZCAtaSAicyNcdGVkamVfY2MjXHQke1NUQUdJTkdfQklORElSX05BVElWRX0vZWRqZV9jYyNnIiBNYWtlZmlsZQotICAgIG1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS90aGVtZXMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vYl9hbmRfdy5lZGogJHtEfSR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL3RoZW1lcy8KLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvdGhlbWVzLyIKLQotUE5CTEFDS0xJU1RbZS13bS10aGVtZS1iLWFuZC13XSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGUtd20gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2Utd20tdGhlbWUtYi1hbmQtd10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtLXRoZW1lLWItYW5kLXcgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2Utd20tdGhlbWUtYi1hbmQtd10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtLXRoZW1lLWItYW5kLXctZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1pbGx1bWUtZWZlbm5paHQvTElDRU5TRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20tdGhlbWUtaWxsdW1lLWVmZW5uaWh0L0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYmIyZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1pbGx1bWUtZWZlbm5paHQvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUNvcHlyaWdodCBub3RpY2UgZm9yIEVubGlnaHRlbm1lbnQ6Ci0KLUNvcHlyaWdodCAoQykgMjAwMC0yMDEwIENhcnN0ZW4gSGFpdHpsZXIgYW5kIHZhcmlvdXMgY29udHJpYnV0b3JzIChzZWUgQVVUSE9SUykKLQotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IAotICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAotSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLUlOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLAotT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodF9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMTIxMzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS10aGVtZS1pbGx1bWUtZWZlbm5paHRfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZWZlbm5paHQgaWxsdW1lIHRoZW1lIC0gRWZlbm5paHQgd2FzIGRldmlzZWQgdG8gYmUgY2xlYW4gXAotYW5kIG5ldXRyYWwuIEl0cyBuYW1lICh3aGljaCBtZWFucyBlcXVpbm94KSBjb21lcyBmcm9tIHRoZSBjaHJvbWF0aWMgZHVhbGl0eSBcCi10aGF0IHdhcyBkZWNpZGVkIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZywgd2l0aCBhIGRhcmsgdGhlbWUgKGJsYWNrIGFuZCBvcmFuZ2UpIFwKLWFuZCBhIGJyaWdodCBvbmUgKHdoaXRlIGFuZCBibHVlKSB0byBiZSBkZXZlbG9wZWQgc28gdGhhdCBtb3JlIHBlb3BsZSBmZWVsIFwKLWNvbWZvcnRhYmxlIHVzaW5nIGl0LiBFZmVubmlodCB1c2VzIGZldyBhbmltYXRpb25zLCBkaXNjcmV0ZSBjb250cmFzdHMgYmV0d2VlbiBcCi1zaGFkZXMgb2YgZ3JheSBhbmQgZmluZSBsaW5lcyAoY29sb3JlZCkgdGhhdCBvdXRsaW5lIHRoZSBzZWxlY3RlZCBlbGVtZW50cy4iCi1TRUNUSU9OID0gImUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwOi8vdHJhYy5lbmxpZ2h0ZW5tZW50Lm9yZy9lL3dpa2kvVGhlbWVzI0VmZW5uaWh0IgotREVQRU5EUyA9ICJlZGplLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImUtd20iCi1SU1VHR0VTVFNfJHtQTn0gPSAiZWxlbWVudGFyeS10aGVtZS1lZmVubmlodCIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9MSUNFTlNFO21kNT1mNTIzYWI1OTg2Y2M3OWI1MmE5MGQyYWMzZDU0NTRhMiIKLQotU1JDUkVWID0gIiR7RUZMX1NSQ1JFVn0iCi1QViA9ICIwLjArc3ZuciR7U1JDUFZ9IgotCi1pbmhlcml0IGUtYmFzZSBhbGxhcmNoCi0KLVNSQ05BTUUgPSAiZWZlbm5paHQiCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rL1RIRU1FUzttb2R1bGU9JHtTUkNOQU1FfTtwcm90b2NvbD1odHRwIFwKLSAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UgXAotIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgLWlkICR7U30vaW1hZ2VzICR7U30vZWZlbm5paHQuZWRjIC1vICR7U30vZWZlbm5paHQuZWRqCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvdGhlbWVzLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2VmZW5uaWh0LmVkaiAke0R9JHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvdGhlbWVzLwotfQotCi1GSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS90aGVtZXMvIgotCi1QTkJMQUNLTElTVFtlLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodF0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodF0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtLXRoZW1lLWlsbHVtZS1lZmVubmlodCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZTk2NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIEVubGlnaHRlbm1lbnQgV2luZG93IE1hbmFnZXIgVmVyc2lvbiAxNyIKLURFUEVORFMgPSAiZWV0IGV2YXMgZWluYSBlY29yZSBlZGplIGVmcmVldCBlZGJ1cyBlZXplIGVpbyBlbGVtZW50YXJ5IGxpYnhjYiB4Y2ItdXRpbC1rZXlzeW1zIgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NmRlMjkwZWIzZmRkYTEyMTIxODMwMTkxYzE1MmE3ZCIKLVNSQ05BTUUgPSAiZSIKLQotaW5oZXJpdCBlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ2V0dGV4dCBwa2djb25maWcKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLC0tZGlzYWJsZS1wYW0sbGlicGFtIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQiCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgXAotICAgIC0td2l0aC1lZXQtZWV0PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZXQgXAotICAgIC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfS9YMTEgXAotICAgIC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgIC0tZW5hYmxlLXNpbXBsZS14MTEgXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBhdXRvcG9pbnQgfHwgdHJ1ZQotICAgIHNlZCAnL14gKkVGTF9QS0dfQ0hFQ0tfVkFSLyBzL3N5c3RlbWR1c2VydW5pdGRpci9zeXN0ZW1kc3lzdGVtdW5pdGRpci9nJyAtaSAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGN1c3RvbWlzaW5nIC0gc2hvdWxkIHJhdGhlciBtYWtlIHRoaXMgc2ltcGxlIHVwc3RyZWFtCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9lbmxpZ2h0ZW5tZW50X3N0YXJ0Lm9lICR7RH0vJHtiaW5kaXJ9Ci0KLSAgICAjIHNlY3VyaXR5IHJlYXNvbnMsIGUtd20gY2hlY2tzIHRoYXQgaW4gcnVudGltZQotICAgICMgeGluaXRbNDE4XTogRVJST1I6IENPTkZJR1VSQVRJT04gRklMRSBIQVMgQkFEIFBFUk1JU1NJT05TCi0gICAgY2htb2QgNjAwICR7RH0vJHtzeXNjb25mZGlyfS9lbmxpZ2h0ZW5tZW50L3N5c2FjdGlvbnMuY29uZgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0veGRnL21lbnVzCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9hcHBsaWNhdGlvbnMubWVudSAke0R9LyR7c3lzY29uZmRpcn0veGRnL21lbnVzLwotICAgIGZvciBJIGluIGBmaW5kICR7RH0vJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQgLW5hbWUgIiouYSIgLXByaW50YDsgZG8gcm0gLWYgJEk7IGRvbmUKLSAgICBmb3IgSSBpbiBgZmluZCAke0R9LyR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50IC1uYW1lICIqLmxhIiAtcHJpbnRgOyBkbyBybSAtZiAkSTsgZG9uZQotCi0gICAgIyB3b3JrIGFyb3VuZCBmb3IgaXNzdWUgY2F1c2VkIGluIHI3ODk3OCwgbW9yZSBpbmZvciBpbjoKLSAgICAjIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP3RocmVhZF9uYW1lPTIwMTIxMTE4MTk0OTA0LkdBMzQzOCU0MGphbWEuamFtYS5uZXQmZm9ydW1fbmFtZT1lbmxpZ2h0ZW5tZW50LWRldmVsCi0gICAgbXYgJHtEfS8ke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzL3BvbGljaWVzICR7RH0vJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy9pbGx1bWUyLyBcCi0gICAgICB8fCBlY2hvICJpbGx1bWUyIHBvbGljaWVzIGFyZSBpbiBjb3JyZWN0IHBsYWNlIG5vdyIKLSAgICBtdiAke0R9LyR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMva2V5Ym9hcmRzICR7RH0vJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy9pbGx1bWUyLyBcCi0gICAgICB8fCBlY2hvICJpbGx1bWUyIGtleWJvYXJkcyBhcmUgaW4gY29ycmVjdCBwbGFjZSBub3ciCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgc2hhcmVkLW1pbWUtaW5mbyBcCi0gICAgbWltZS1zdXBwb3J0IFwKLSAgICBzZXR4a2JtYXAgXAotICAgIGVkamUtdXRpbHMgXAotICAgICR7UE59LXV0aWxzIFwKLSAgICBkYnVzLXgxMSBcCi0iCi0KLSMgVWNsaWJjIGJ1aWxkIGRvbid0IGhhdmUgJ2dsaWJjLXV0aWxzJwotUkRFUEVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzICIKLQotIyBUaGUgc3lzdHJheSBtb2R1bGUgdXNlZCB0byBiZSBleHRlcm5hbCwgYnV0IGlzIHBhcnQgb2YgZS13bSBub3cKLVJSRVBMQUNFU18ke1BOfSA9ICJzeXN0cmF5IgotCi1SUkVQTEFDRVNfJHtQTn0tY29uZmlnLW1vYmlsZSA9ICIke1BOfS1jb25maWctaWxsdW1lMiIKLVJDT05GTElDVFNfJHtQTn0tY29uZmlnLW1vYmlsZSA9ICIke1BOfS1jb25maWctaWxsdW1lMiIKLVJQUk9WSURFU18ke1BOfS1jb25maWctbW9iaWxlID0gIiR7UE59LWNvbmZpZy1pbGx1bWUyIgotCi1QQUNLQUdFUyA9KyAiXAotICAgICR7UE59LWNvbmZpZy1kZWZhdWx0IFwKLSAgICAke1BOfS1jb25maWctbW9iaWxlIFwKLSAgICAke1BOfS1jb25maWctbWluaW1hbGlzdCBcCi0gICAgJHtQTn0tY29uZmlnLW5ldGJvb2sgXAotICAgICR7UE59LWNvbmZpZy1zY2FsZWFibGUgXAotICAgICR7UE59LWNvbmZpZy1zdGFuZGFyZCBcCi0gICAgJHtQTn0tY29uZmlnLXRpbGluZyBcCi0gICAgJHtQTn0tdGhlbWUtZGVmYXVsdCBcCi0gICAgJHtQTn0tYmFja2dyb3VuZC1kYXJrLWdyYWRpZW50IFwKLSAgICAke1BOfS1iYWNrZ3JvdW5kLWxpZ2h0LWdyYWRpZW50IFwKLSAgICAke1BOfS1iYWNrZ3JvdW5kcyBcCi0gICAgJHtQTn0taW1hZ2VzIFwKLSAgICAke1BOfS1pY29ucyBcCi0gICAgJHtQTn0tb3RoZXIgXAotICAgICR7UE59LWlucHV0LW1ldGhvZHMgXAotICAgICR7UE59LXN5c2FjdGlvbnMgXAotICAgICR7UE59LXV0aWxzIFwKLSAgICAke1BOfS1tZW51IFwKLSAgICBlZm0tZGVza3RvcC1pY29uIFwKLSAgICBpbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC1hbHBoYSBcCi0gICAgaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtbnVtZXJpYyBcCi0gICAgaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtdGVybWluYWwgXAotIgotCi1FU1lTQUNUSU9OUyA/PSAiJHtQTn0tc3lzYWN0aW9ucyIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiXAotICAgICR7UE59LWNvbmZpZy1kZWZhdWx0IFwKLSAgICAke1BOfS1pbWFnZXMgXAotICAgICR7UE59LWljb25zIFwKLSAgICAke1BOfS1vdGhlciBcCi0gICAgJHtQTn0taW5wdXQtbWV0aG9kcyBcCi0gICAgJHtFU1lTQUNUSU9OU30gXAotICAgIGVmcmVldCBcCi0gICAgZXZhcy1nZW5lcmljLWxvYWRlci1zdmcgXAotIgotCi1GSUxFU18ke1BOfSA9ICJcCi0gICAgJHtiaW5kaXJ9LyogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L3V0aWxzLyogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvKi8qLiogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvKi8qLyogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvKi8qLy5vcmRlciBcCi0gICAgJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy9rZXlib2FyZHMvaWdub3JlX2J1aWx0X2luX2tleWJvYXJkcyBcCi0gICAgJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvKnBsdWdpbnMvKi8qLyogXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L3ByZWxvYWQvZV9wcmVjYWNoZS5zbyBcCi0gICAgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvaWNvbnMgXAotICAgICR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL2Zhdm9yaXRlcyBcCi0gICAgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvaW5wdXRfbWV0aG9kcyBcCi0gICAgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvY29uZmlnL3Byb2ZpbGUuY2ZnIFwKLSAgICAke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvQVVUSE9SUyBcCi0gICAgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L0NPUFlJTkcgXAotICAgICR7ZGF0YWRpcn0veHNlc3Npb25zL2VubGlnaHRlbm1lbnQuZGVza3RvcCBcCi0gICAgJHtzeXNjb25mZGlyfS94ZGcgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfSBcCi0iCi0KLUZJTEVTXyR7UE59LWNvbmZpZy1kZWZhdWx0ID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL2NvbmZpZy9kZWZhdWx0IgotRklMRVNfJHtQTn0tY29uZmlnLW1vYmlsZSA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9jb25maWcvbW9iaWxlIgotRklMRVNfJHtQTn0tY29uZmlnLW1pbmltYWxpc3QgPSAiJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvY29uZmlnL21pbmltYWxpc3QiCi1GSUxFU18ke1BOfS1jb25maWctbmV0Ym9vayA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9jb25maWcvbmV0Ym9vayIKLUZJTEVTXyR7UE59LWNvbmZpZy1zY2FsZWFibGUgPSAiJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvY29uZmlnL3NjYWxlYWJsZSIKLUZJTEVTXyR7UE59LWNvbmZpZy1zdGFuZGFyZCA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9jb25maWcvc3RhbmRhcmQiCi1GSUxFU18ke1BOfS1jb25maWctdGlsaW5nID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL2NvbmZpZy90aWxpbmciCi1GSUxFU18ke1BOfS10aGVtZS1kZWZhdWx0ID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL3RoZW1lcy9kZWZhdWx0LmVkaiIKLUZJTEVTXyR7UE59LXRoZW1lLWRlZmF1bHQgPSAiJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvdGhlbWVzL2RlZmF1bHQuZWRqIgotRklMRVNfJHtQTn0tYmFja2dyb3VuZC1kYXJrLWdyYWRpZW50ID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL2JhY2tncm91bmRzL0RhcmtfR3JhZGllbnQuZWRqIgotRklMRVNfJHtQTn0tYmFja2dyb3VuZC1saWdodC1ncmFkaWVudCA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9iYWNrZ3JvdW5kcy9MaWdodF9HcmFkaWVudC5lZGoiCi1GSUxFU18ke1BOfS1iYWNrZ3JvdW5kcyA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9iYWNrZ3JvdW5kcy8qLmVkaiIKLUZJTEVTXyR7UE59LWltYWdlcyA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9pbWFnZXMgJHtkYXRhZGlyfS9lbmxpZ2h0ZW5tZW50L2RhdGEvZmxhZ3MiCi1GSUxFU18ke1BOfS1pY29ucyA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9pY29ucyIKLUZJTEVTXyR7UE59LW90aGVyID0gIiR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kYXRhL290aGVyIgotRklMRVNfJHtQTn0taW5wdXQtbWV0aG9kcyA9ICIke2RhdGFkaXJ9L2VubGlnaHRlbm1lbnQvZGF0YS9pbnB1dF9tZXRob2RzIgotRklMRVNfJHtQTn0tc3lzYWN0aW9ucyA9ICIke3N5c2NvbmZkaXJ9L2VubGlnaHRlbm1lbnQvc3lzYWN0aW9ucy5jb25mIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvdXRpbHMvKiIKLUZJTEVTXyR7UE59LW1lbnUgPSAiJHtzeXNjb25mZGlyfS94ZGcvbWVudXMvYXBwbGljYXRpb25zLm1lbnUiCi0KLUZJTEVTX2VmbS1kZXNrdG9wLWljb24gPSAiXAotICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2VmbS5kZXNrdG9wIFwKLSAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9lbmxpZ2h0ZW5tZW50X2ZpbGVtYW5hZ2VyLmRlc2t0b3AgXAotICAgICR7ZGF0YWRpcn0vaWNvbnMvZS1tb2R1bGUtZmlsZW1hbi5wbmcgXAotIgotCi1LRVlCT0FSRFNfRElSPSIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzL2lsbHVtZS1rZXlib2FyZC9rZXlib2FyZHMiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC1hbHBoYSA9ICJcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9EZWZhdWx0LmtiZCBcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9hbHBoYS5wbmcgXAotIgotRklMRVNfaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtbnVtZXJpYyA9ICJcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9OdW1iZXJzLmtiZCBcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9udW1lcmljLnBuZyBcCi0iCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC10ZXJtaW5hbCA9ICJcCi0gICAgJHtLRVlCT0FSRFNfRElSfS9UZXJtaW5hbC5rYmQgXAotICAgICR7S0VZQk9BUkRTX0RJUn0vcXdlcnR5LnBuZyBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59LWNvbmZpZy1kZWZhdWx0ID0gIiR7UE59LXRoZW1lLWRlZmF1bHQiCi1SUkVDT01NRU5EU18ke1BOfS1jb25maWctbW9iaWxlID0gIlwKLSAgICBpbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC1hbHBoYSBcCi0gICAgaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtbnVtZXJpYyBcCi0gICAgaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtdGVybWluYWwgXAotIgotCi1SUkVDT01NRU5EU18ke1BOfS1jb25maWctbWluaW1hbGlzdCA9ICJcCi0gICAgJHtQTn0tYmFja2dyb3VuZC1saWdodC1ncmFkaWVudCBcCi0gICAgJHtQTn0tdGhlbWUtZGVmYXVsdCBcCi0iCi1SUkVDT01NRU5EU18ke1BOfS1jb25maWctbmV0Ym9vayA9ICJcCi0gICAgJHtQTn0tYmFja2dyb3VuZC1kYXJrLWdyYWRpZW50IFwKLSAgICAke1BOfS10aGVtZS1kZWZhdWx0IFwKLSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvbmZpZy1zY2FsZWFibGUgPSAiJHtQTn0tdGhlbWUtZGVmYXVsdCIKLVJSRUNPTU1FTkRTXyR7UE59LWNvbmZpZy1zdGFuZGFyZCA9ICIke1BOfS10aGVtZS1kZWZhdWx0IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi8uZGVidWcvIFwKLSAgICAke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzL3BvbGljaWVzLy5kZWJ1Zy8gXAotICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L3ByZWxvYWQvLmRlYnVnLyBcCi0gICAgJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvdXRpbHMvLmRlYnVnLyBcCi0gICAgJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvKnBsdWdpbnMvKi8qLy5kZWJ1ZyBcCi0iCi0KLUZJTEVTXyR7UE59LWRvYyArPSAiXAotICAgICR7ZGF0YWRpcn0vZW5saWdodGVubWVudC9kb2MgXAotIgotCi1DT05GRklMRVNfJHtQTn0tbWVudSA9ICIke3N5c2NvbmZkaXJ9L3hkZy9tZW51cy9hcHBsaWNhdGlvbnMubWVudSIKLUNPTkZGSUxFU18ke1BOfS1zeXNhY3Rpb25zID0gIi9ldGMvZW5saWdodGVubWVudC9zeXNhY3Rpb25zLmNvbmYiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIngtd2luZG93LW1hbmFnZXIiCi1BTFRFUk5BVElWRV9UQVJHRVRbeC13aW5kb3ctbWFuYWdlcl0gPSAiJHtiaW5kaXJ9L2VubGlnaHRlbm1lbnRfc3RhcnQub2UiCi1BTFRFUk5BVElWRV9QUklPUklUWVt4LXdpbmRvdy1tYW5hZ2VyXSA9ICIxNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vMDAwMS1GaXgtaW5jb3JyZWN0LW1lc3NhZ2UtdHlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vMDAwMS1GaXgtaW5jb3JyZWN0LW1lc3NhZ2UtdHlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxOGVmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtLzAwMDEtRml4LWluY29ycmVjdC1tZXNzYWdlLXR5cGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDBhZWY0M2M5Y2QxNjU2NDEzY2YyZWIzZGM3YzE5YjM1NWVlN2VkNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci1EYXRlOiBTdW4sIDEgSnVuIDIwMTQgMTQ6NDU6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGluY29ycmVjdCBtZXNzYWdlIHR5cGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLS0tLQotIHNyYy9iaW4vZV9kZXNrLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmluL2VfZGVzay5jIGIvc3JjL2Jpbi9lX2Rlc2suYwotaW5kZXggYjE1NmUxOS4uNzdkNzUyMCAxMDA2NDQKLS0tLSBhL3NyYy9iaW4vZV9kZXNrLmMKLSsrKyBiL3NyYy9iaW4vZV9kZXNrLmMKLUBAIC0yMjEsNyArMjIxLDcgQEAgZV9kZXNrX3Nob3coRV9EZXNrICpkZXNrKQotICAgIEVfRXZlbnRfRGVza19TaG93ICpldjsKLSAgICBFX0V2ZW50X0Rlc2tfQmVmb3JlX1Nob3cgKmVldjsKLSAgICBFX0V2ZW50X0Rlc2tfQWZ0ZXJfU2hvdyAqZWVldjsKLS0gICBFZGplX01lc3NhZ2VfRmxvYXRfU2V0ICptc2c7Ci0rICAgRWRqZV9NZXNzYWdlX0ludF9TZXQgKm1zZzsKLSAgICBFaW5hX0xpc3QgKmw7Ci0gICAgRV9TaGVsZiAqZXM7Ci0gICAgaW50IHdhc196b25lID0gMCwgeCwgeSwgZHggPSAwLCBkeSA9IDA7Ci0tLSAKLTEuOC4zLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtZm9yZWlnbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vMDAwMS1jb25maWd1cmUuYWMtYWRkLWZvcmVpZ24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YTU3NGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtZm9yZWlnbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gMTllNTliNmU4MTQ4Mzg4ZTdhMTdmMTBkNDM5MDE3NmE1MGUyOTE3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjUgQXVnIDIwMTQgMTY6MDY6MDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhZGQgZm9yZWlnbgotCi0qIGZpeGVzOgotICB8IGNvbmZpZ3VyZS5hYzozMTI6IGVycm9yOiByZXF1aXJlZCBmaWxlICcuL0FCT1VULU5MUycgbm90IGZvdW5kCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNTFhZDBiYS4uY2Q3NzczOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQsNyArMzQsNyBAQCBBSF9CT1RUT00oWwotICNlbmRpZiAvKiBFRkxfQ09ORklHX0hfXyAqLwotIF0pCi0gCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMSBkaXN0LWJ6aXAyIGRpc3QteHogLVduby1wb3J0YWJpbGl0eV0pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS4xMSBkaXN0LWJ6aXAyIGRpc3QteHogLVduby1wb3J0YWJpbGl0eSBmb3JlaWduXSkKLSBBTV9TSUxFTlRfUlVMRVMoW3llc10pCi0gCi0gQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0tLSAKLTIuMy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vYXBwbGljYXRpb25zLm1lbnUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtL2FwcGxpY2F0aW9ucy5tZW51CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDliOTA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd20vYXBwbGljYXRpb25zLm1lbnUKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08IURPQ1RZUEUgTWVudSBQVUJMSUMgIi0vL2ZyZWVkZXNrdG9wLy9EVEQgTWVudSAxLjAvL0VOIiAiaHR0cDovL3N0YW5kYXJkcy5mcmVlZGVza3RvcC5vcmcvbWVudS1zcGVjL21lbnUtMS4wLmR0ZCI+Ci08TWVudT4KLSAgPE5hbWU+QXBwbGljYXRpb25zPC9OYW1lPgotICA8IS0tICAgPERpcmVjdG9yeT5BcHBsaWNhdGlvbnMuZGlyZWN0b3J5PC9EaXJlY3Rvcnk+IC0tPgotCi0gIDwhLS0gUmVhZCBzdGFuZGFyZCAuZGlyZWN0b3J5IGFuZCAuZGVza3RvcCBmaWxlIGxvY2F0aW9ucyAtLT4KLSAgPERlZmF1bHRBcHBEaXJzPi91c3Ivc2hhcmUvYXBwbGljYXRpb25zPC9EZWZhdWx0QXBwRGlycz4KLSAgPERlZmF1bHREaXJlY3RvcnlEaXJzLz4KLQotICA8TWVudT4KLSAgICA8TmFtZT5PZmZpY2U8L05hbWU+Ci0gICAgPERpcmVjdG9yeT5PZmZpY2UuZGlyZWN0b3J5PC9EaXJlY3Rvcnk+Ci0gICAgPEluY2x1ZGU+Ci0gICAgICA8QW5kPgotICAgICAgICA8Q2F0ZWdvcnk+T2ZmaWNlPC9DYXRlZ29yeT4KLSAgICAgIDwvQW5kPgotICAgIDwvSW5jbHVkZT4KLSAgPC9NZW51PgotICAKLSAgPE1lbnU+Ci0gICAgPE5hbWU+TXVsdGltZWRpYTwvTmFtZT4KLSAgICA8RGlyZWN0b3J5Pk11bHRpbWVkaWEuZGlyZWN0b3J5PC9EaXJlY3Rvcnk+Ci0gICAgPEluY2x1ZGU+Ci0gICAgICA8QW5kPgotICAgICAgICA8Q2F0ZWdvcnk+QXVkaW9WaWRlbzwvQ2F0ZWdvcnk+Ci0gICAgICA8L0FuZD4KLSAgICA8L0luY2x1ZGU+Ci0gIDwvTWVudT4KLQotICA8TWVudT4KLSAgICA8TmFtZT5HcmFwaGljczwvTmFtZT4KLSAgICA8RGlyZWN0b3J5PkdyYXBoaWNzLmRpcmVjdG9yeTwvRGlyZWN0b3J5PgotICAgIDxJbmNsdWRlPgotICAgICAgPEFuZD4KLSAgICAgICAgPENhdGVnb3J5PkdyYXBoaWNzPC9DYXRlZ29yeT4KLSAgICAgIDwvQW5kPgotICAgIDwvSW5jbHVkZT4KLSAgPC9NZW51PgotCi0gIDxNZW51PgotICAgIDxOYW1lPkdhbWVzPC9OYW1lPgotICAgIDxEaXJlY3Rvcnk+R2FtZXMuZGlyZWN0b3J5PC9EaXJlY3Rvcnk+Ci0gICAgPEluY2x1ZGU+Ci0gICAgICA8QW5kPgotICAgICAgICA8T3I+Ci0gICAgICAgICA8Q2F0ZWdvcnk+R2FtZTwvQ2F0ZWdvcnk+Ci0gICAgICAgICA8Q2F0ZWdvcnk+R2FtZXM8L0NhdGVnb3J5PgotICAgICAgICA8L09yPgotICAgICAgPC9BbmQ+Ci0gICAgPC9JbmNsdWRlPgotICA8L01lbnU+Ci0KLSAgPE1lbnU+Ci0gICAgPE5hbWU+SW50ZXJuZXQ8L05hbWU+Ci0gICAgPERpcmVjdG9yeT5JbnRlcm5ldC5kaXJlY3Rvcnk8L0RpcmVjdG9yeT4KLSAgICA8SW5jbHVkZT4KLSAgICAgIDxBbmQ+Ci0gICAgICAgIDxPcj4KLSAgICAgICAgIDxDYXRlZ29yeT5JbnRlcm5ldDwvQ2F0ZWdvcnk+Ci0gICAgICAgICA8Q2F0ZWdvcnk+TmV0d29yazwvQ2F0ZWdvcnk+Ci0gICAgICAgIDwvT3I+Ci0gICAgICA8L0FuZD4KLSAgICA8L0luY2x1ZGU+Ci0gIDwvTWVudT4KLQotICA8TWVudT4KLSAgICA8TmFtZT5TZXR0aW5nczwvTmFtZT4KLSAgICA8RGlyZWN0b3J5PlNldHRpbmdzLmRpcmVjdG9yeTwvRGlyZWN0b3J5PgotICAgIDxJbmNsdWRlPgotICAgICAgPEFuZD4KLSAgICAgICAgPE9yPgotICAgICAgICAgIDxDYXRlZ29yeT5TeXN0ZW1TZXR0aW5nczwvQ2F0ZWdvcnk+Ci0gICAgICAgICAgPENhdGVnb3J5PlNldHRpbmdzPC9DYXRlZ29yeT4KLSAgICAgICAgPC9Pcj4KLSAgICAgICAgPE5vdD4KLSAgICAgICAgICA8Q2F0ZWdvcnk+U3lzdGVtPC9DYXRlZ29yeT4KLSAgICAgICAgPC9Ob3Q+Ci0gICAgICA8L0FuZD4KLSAgICA8L0luY2x1ZGU+Ci0gIDwvTWVudT4KLQotICA8TWVudT4KLSAgICA8TmFtZT5BY2Nlc3NvcmllczwvTmFtZT4KLSAgICA8RGlyZWN0b3J5PkFjY2Vzc29yaWVzLmRpcmVjdG9yeTwvRGlyZWN0b3J5PgotICAgIDxJbmNsdWRlPgotICAgICAgPEFuZD4KLSAgICAgICAgPE9yPgotICAgICAgICAgIDxDYXRlZ29yeT5BcHBsaWNhdGlvbnM8L0NhdGVnb3J5PgotICAgICAgICAgIDxDYXRlZ29yeT5VdGlsaXR5PC9DYXRlZ29yeT4KLSAgICAgICAgPC9Pcj4KLSAgICAgICAgPE5vdD4KLSAgICAgICAgICA8Q2F0ZWdvcnk+U3lzdGVtPC9DYXRlZ29yeT4KLSAgICAgICAgICA8Q2F0ZWdvcnk+T2ZmaWNlPC9DYXRlZ29yeT4KLSAgICAgICAgICA8Q2F0ZWdvcnk+SW50ZXJuZXQ8L0NhdGVnb3J5PgotICAgICAgICAgIDxDYXRlZ29yeT5BdWRpb1ZpZGVvPC9DYXRlZ29yeT4KLSAgICAgICAgICA8Q2F0ZWdvcnk+R3JhcGhpY3M8L0NhdGVnb3J5PgotICAgICAgICAgIDxDYXRlZ29yeT5HYW1lczwvQ2F0ZWdvcnk+Ci0gICAgICAgIDwvTm90PgotICAgICAgPC9BbmQ+Ci0gICAgPC9JbmNsdWRlPgotICA8L01lbnU+Ci0gIAotPC9NZW51PgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtL2VubGlnaHRlbm1lbnRfc3RhcnQub2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtL2VubGlnaHRlbm1lbnRfc3RhcnQub2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmODYxNzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bS9lbmxpZ2h0ZW5tZW50X3N0YXJ0Lm9lCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0jIS9iaW4vc2gKLQotRV9QUk9GSUxFPSIiCi1pZiBbIC1yIC9ldGMvZW5saWdodGVubWVudC9kZWZhdWx0X3Byb2ZpbGUgXTsgdGhlbgotICAuIC9ldGMvZW5saWdodGVubWVudC9kZWZhdWx0X3Byb2ZpbGUKLWZpCi0KLXJlbmljZSAtMiAtcCAkJAotZXhlYyBlbmxpZ2h0ZW5tZW50X3N0YXJ0ICRFX1BST0ZJTEUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd21fMC4xOC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV8wLjE4LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMThiNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV8wLjE4LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDTkFNRSA9ICJlbmxpZ2h0ZW5tZW50IgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtFX1JFTEVBU0VTfS9hcHBzLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmd6IFwKLSAgICBmaWxlOi8vZW5saWdodGVubWVudF9zdGFydC5vZSBcCi0gICAgZmlsZTovL2FwcGxpY2F0aW9ucy5tZW51IFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtaW5jb3JyZWN0LW1lc3NhZ2UtdHlwZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3OWM5ZjUyNGUxZDA1MTAwNjFjNjJjNGIwMzhhOGVjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNGM5YmRlNDMzNGQyZjhiMDc3NmM2MTEzZDAyYjkyM2FiMTU5ZWVhMWNiZjcwMTM0ODllNGYzYmYzN2E1MWJiIgotCi1QTkJMQUNLTElTVFtlLXdtXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV8wLjE5LjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV8wLjE5LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTZhN2I4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Utd21fMC4xOS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNOQU1FID0gImVubGlnaHRlbm1lbnQiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi0jIGNvdXBsZSBvZiBtb2R1bGVzIG5lZWRlZCBmb3IgaWxsdW1lMiAobW9iaWxlKSBwcm9maWxlIHdlcmUgcmVtb3ZlZCBpbgotIyBodHRwOi8vZ2l0LmVubGlnaHRlbm1lbnQub3JnL2NvcmUvZW5saWdodGVubWVudC5naXQvY29tbWl0L3NyYy9tb2R1bGVzL01ha2VmaWxlLm1rP2lkPTFiZTc2ZDU5OWNhMjdmODIwYjU4YjgxODZjNWY3M2Q5ODQ0YzY3Y2EKLSMgYW5kIHJlcGxhY2VtZW50cyBhcmVuJ3QgaW5jbHVkZWQgeWV0LCBpZiB5b3Ugd2FudCB0byB1c2UgZS13bSBvbiBkZXZpY2Ugd2l0aCBzbWFsbCBzY3JlZW4sIGJldHRlciBzdGF5IHdpdGggMC4xOCByZWxlYXNlCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLVNSQ19VUkkgPSAiXAotICAgICR7RV9SRUxFQVNFU30vYXBwcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtTUkNWRVJ9LnRhci5neiBcCi0gICAgZmlsZTovL2VubGlnaHRlbm1lbnRfc3RhcnQub2UgXAotICAgIGZpbGU6Ly9hcHBsaWNhdGlvbnMubWVudSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MDYzNjE3NzYwMzI5NDQ1YWRhODYzNTI3MGE0ZTYyNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODRkMzA1YmNmNDAzMzAzYjE4YzQ2YTNhNDk4NDQ1YjkzNjg5Y2QzMjUwMTBhZThkMDYwMTU1MTkyNjQ2OWQ4IgotCi1QTkJMQUNLTElTVFtlLXdtXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZS13bV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyNWZkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lLXdtX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1QViA9ICIwLjE5LjQrZ2l0JHtTUkNQVn0iCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTIiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXQuZW5saWdodGVubWVudC5vcmcvY29yZS9lbmxpZ2h0ZW5tZW50LmdpdDticmFuY2g9ZW5saWdodGVubWVudC0wLjE5IFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLWZvcmVpZ24ucGF0Y2ggXAotICAgIGZpbGU6Ly9lbmxpZ2h0ZW5tZW50X3N0YXJ0Lm9lIFwKLSAgICBmaWxlOi8vYXBwbGljYXRpb25zLm1lbnUgXAotIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotU1JDUkVWID0gIjQ1NDVkNGE3MDAzMWUwYjI1NjViOGQ4M2Q1Zjc1NmJmZjFhNTg0ZDAiCi0KLVBOQkxBQ0tMSVNUW2Utd21dID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lZGplLXZpZXdlcl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lZGplLXZpZXdlcl9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkM2VmZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZWRqZS12aWV3ZXJfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJFZGplX1ZpZXdlciBpcyBqdXN0IHRoYXQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctUExBSU47bWQ1PWUwMTM1OTA0MTAwMWU4YmYyNGMwOWFjY2E1NTZlNzkyIgotCi1ERVBFTkRTID0gImVsZW1lbnRhcnkiCi1QViA9ICIwLjAuMCtzdm5yJHtTUkNQVn0iCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlCi0KLVNSQ05BTUUgPSAiZWRqZV92aWV3ZXIiCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgotCi1QTkJMQUNLTElTVFtlZGplLXZpZXdlcl0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWxlbWVudGFyeSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VsYm93X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VsYm93X2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJhODUzOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbGJvd19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkVGTCBiYXNlZCBicm93c2VyIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IgotREVQRU5EUyA9ICJldmFzIGVjb3JlIGVkamUgZWluYSBlbGVtZW50YXJ5IHdlYmtpdC1lZmwgc3FsaXRlMyIKLQotUFYgPSAiMC4wLjErZ2l0ciR7U1JDUFZ9IgotU1JDUkVWID0gImI0MWZkMGJjOTUxNGZmNjFiYjJhNTBkOTU3ZWZlNDE1NWZhM2U2YTgiCi0KLSMgd2Via2l0LWVmbCBpc24ndCBhdmFpbGFibGUgZm9yIDwgYXJtdjdhCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKC0pIgotQ09NUEFUSUJMRV9NQUNISU5FX3g4NiA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX3g4Ni02NCA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY3YSA9ICIoLiopIgotCi1pbmhlcml0IGUgZ2V0dGV4dCBjbWFrZQotCi1FWFRSQV9PRUNNQUtFID0gIi1EREFUQV9JTlNUQUxMX0RJUj0ke2RhdGFkaXJ9IgotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9idW5oZXJlL2VsYm93LmdpdDtwcm90b2NvbD1odHRwcyBcCi0iCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90aGVtZXMiCi0KLVBOQkxBQ0tMSVNUW2VsYm93XSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCB3ZWJraXQtZWZsIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZWxmZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbGZlX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlmN2Y5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbGZlX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ0ODk1ZjI1M2MzMmYzOGUxODJkY2FmMzBmZThhMzUiCi1QViA9ICIwLjAuMStnaXRyJHtTUkNQVn0iCi1QRSA9ICIxIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0LmVubGlnaHRlbm1lbnQub3JnL2VubGlnaHRlbm1lbnQvbW9kdWxlcy8ke0JQTn0uZ2l0IFwKLSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ1JFViA9ICIxZWMwZTc3MTNjM2NhOTAxMDE0ODExZmY3ODI3N2Q5ZTJhYWFjOTgxIgotCi1ERVBFTkRTICs9ICJlbGVtZW50YXJ5IgotCi1QTkJMQUNLTElTVFtlbGZlXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZWxtZGVudGljYS9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbG1kZW50aWNhL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlhOTgxYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbG1kZW50aWNhL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBlbG1kZW50aWNhL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsbWRlbnRpY2Eub3JpZy9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTo0NjoxNC43MTI1NjYyMDcgKzAwMDAKLSsrKyBlbG1kZW50aWNhL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjUxOjM0Ljk2MDU3NDkzNSArMDAwMAotQEAgLTMsNyArMyw3IEBACi0gQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKLSBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCi0gCi0tQU1fSU5JVF9BVVRPTUFLRQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIAotIEFDX1BST0dfQ0MKLSBBQ19HTlVfU09VUkNFCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbG1kZW50aWNhX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VsbWRlbnRpY2Ffc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTcxMjE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VsbWRlbnRpY2Ffc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGluZGVudGkuY2EgY2xpZW50IGZvciBFIgotREVQRU5EUyA9ICJnbGliLTIuMCBnY29uZiBjdXJsIGVsZW1lbnRhcnkgc3FsaXRlMy1uYXRpdmUgYXp5IgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU0VDVElPTiA9ICJlL2FwcHMiCi1IT01FUEFHRSA9ICJodHRwOi8vZWxtZGVudGljYS5nb29nbGVjb2RlLmNvbSIKLUFVVEhPUiA9ICJzZWFicmEiCi0KLWluaGVyaXQgZSBnZXR0ZXh0Ci1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZWRqZS1jYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZWRqZV9jYyIKLQotUFYgPSAiMC45Ljkrc3ZuciR7U1JDUFZ9IgotU1JDUkVWID0gIiR7RUZMX1NSQ1JFVn0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LXRoZW1lcyIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotUE5CTEFDS0xJU1RbZWxtZGVudGljYV0gPz0gIk9MRCBhbmQgZGVwZW5kcyBvbiBicm9rZW4gYXp5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZW1wcmludF9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbXByaW50X3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE1ZGM3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbXByaW50X3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkVtcHJpbnQgaXMgYSB1dGlsaXR5IGZvciB0YWtpbmcgc2NyZWVuc2hvdHMgb2YgdGhlIGVudGlyZSBzY3JlZW4sIGEgc3BlY2lmaWMgd2luZG93LCBvciBhIHNwZWNpZmljIHJlZ2lvbi4iCi1MSUNFTlNFID0gIk1JVCAmIEJTRCIKLURFUEVORFMgPSAiaW1saWIyIHZpcnR1YWwvbGlieDExIGVjb3JlIGV2YXMgZWRqZSBlaW5hIgotUFYgPSAiMC4wLjErc3ZuciR7U1JDUFZ9IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ0ODk1ZjI1M2MzMmYzOGUxODJkY2FmMzBmZThhMzUiCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7UE59L21vZHVsZXMvLmRlYnVnIgotCi1QTkJMQUNLTElTVFtlbXByaW50XSA/PSAiaWYgeW91IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgd2l0aCBFMTgsIHRoZW4geW91IG5lZWQgdG8gdXBkYXRlIGl0IHRvIGdpdCByZWNpcGUgZmV0Y2hpbmcgbmV3ZXIgc291cmNlcyBmcm9tIGh0dHA6Ly9naXQuZW5saWdodGVubWVudC5vcmcvYXBwcy9lbXByaW50LmdpdC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbmpveS8wMDAxLWFsd2F5cy11c2UtcG9zaXRpb24tYXMtcGVyY2VudC1hbmQtZGVmaW5lLWEtMS1zZWNvbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbmpveS8wMDAxLWFsd2F5cy11c2UtcG9zaXRpb24tYXMtcGVyY2VudC1hbmQtZGVmaW5lLWEtMS1zZWNvbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NjI0NTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZW5qb3kvMDAwMS1hbHdheXMtdXNlLXBvc2l0aW9uLWFzLXBlcmNlbnQtYW5kLWRlZmluZS1hLTEtc2Vjb25kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLUZyb20gNzUxNTA1NTAxZTBkYjMxY2Y3NjZlYzBhZTk1YTY5NjhiNGQxZWI5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYmFuIEJyb3dhZXlzIDxwcmFoYWxAeWFob28uY29tPgotRGF0ZTogV2VkLCA1IFNlcCAyMDEyIDAyOjU4OjI2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsd2F5cyB1c2UgcG9zaXRpb24gYXMgcGVyY2VudCBhbmQgZGVmaW5lIGEgMSBzZWNvbmRzCi0gdG9sZXJhbmNlLgotCi1GaXggInJldmVyYiIgZWZmZWN0OiBpZSBsb29wIGJldHdlZW4gc2V0dGluZyB0aGUgc2xpZGVyIHRvIG1hdGNoCi10aGUgcG9zaXRpb24gYW5kIGhhbmRsaW5nIHNsaWRlciB0byBwb3NpdGlvbiAoc2VlaykuCi0tLS0KLSBkYXRhL3RoZW1lcy9kZWZhdWx0LmVkYyB8ICA4ICsrKy0tLS0tCi0gc3JjL2Jpbi93aW4uYyAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RhdGEvdGhlbWVzL2RlZmF1bHQuZWRjIGIvZGF0YS90aGVtZXMvZGVmYXVsdC5lZGMKLWluZGV4IGViZjhiYTQuLjdhOTA2YjEgMTAwNjQ0Ci0tLS0gYS9kYXRhL3RoZW1lcy9kZWZhdWx0LmVkYwotKysrIGIvZGF0YS90aGVtZXMvZGVmYXVsdC5lZGMKLUBAIC0xODYsNyArMTg2LDYgQEAgY29sbGVjdGlvbnMgewotICAgIGdyb3VwIHsKLSAgICAgICBuYW1lOiAibm93cGxheWluZyI7Ci0gICAgICAgc2NyaXB0IHsKLS0gICAgICAgICBwdWJsaWMgY3VyX2xlbmd0aDsKLSAgICAgICAgICBwdWJsaWMgbXV0ZTsKLSAKLSAgICAgICAgICBwdWJsaWMgZ2V0X3RpbWVfc3RyKEZsb2F0OnRpbWUsIHRpbWVfc3RyWzZdKQotQEAgLTIwMSwxNiArMjAwLDE1IEBAIGNvbGxlY3Rpb25zIHsKLSAgICAgICAgICAgICAgICBuZXcgRmxvYXQ6cG9zaXRpb24gPSBnZXRmYXJnKDIpOwotICAgICAgICAgICAgICAgIG5ldyBGbG9hdDpsZW5ndGggPSBnZXRmYXJnKDMpOwotICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiAwKQotLSAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3BhcmFtX3NldF9mbG9hdChQQVJUOiJwcm9ncmVzcy5zbGlkZXIiLCAidmFsdWUiLCBwb3NpdGlvbiAvIGxlbmd0aCAqIDEwMCk7Ci0rICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfcGFyYW1fc2V0X2Zsb2F0KFBBUlQ6InByb2dyZXNzLnNsaWRlciIsICJ2YWx1ZSIsIHBvc2l0aW9uICogMTAwKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfcGFyYW1fc2V0X2Zsb2F0KFBBUlQ6InByb2dyZXNzLnNsaWRlciIsICJ2YWx1ZSIsIDApOwotIAotICAgICAgICAgICAgICAgIG5ldyB0aW1lX3N0cls2XTsKLS0gICAgICAgICAgICAgICBnZXRfdGltZV9zdHIocG9zaXRpb24sIHRpbWVfc3RyKTsKLSsgICAgICAgICAgICAgICBnZXRfdGltZV9zdHIocG9zaXRpb24gKiBsZW5ndGgsIHRpbWVfc3RyKTsKLSAgICAgICAgICAgICAgICBzZXRfdGV4dChQQVJUOiJlankudGV4dC5jdXJyZW50X3RpbWUiLCB0aW1lX3N0cik7Ci0gICAgICAgICAgICAgICAgZ2V0X3RpbWVfc3RyKGxlbmd0aCwgdGltZV9zdHIpOwotICAgICAgICAgICAgICAgIHNldF90ZXh0KFBBUlQ6ImVqeS50ZXh0LnRvdGFsX3RpbWUiLCB0aW1lX3N0cik7Ci0tICAgICAgICAgICAgICAgc2V0X2Zsb2F0KGN1cl9sZW5ndGgsIGxlbmd0aCk7Ci0gICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE1TR19JTlQgJiYgaWQgPT0gTVNHX1NIVUZGTEUpIHsKLSAgICAgICAgICAgICAgICBleHRlcm5hbF9wYXJhbV9zZXRfYm9vbChQQVJUOiJidXR0b25zLnNodWZmbGUiLCAic3RhdGUiLCBnZXRhcmcoMikpOwotICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBNU0dfSU5UICYmIGlkID09IE1TR19MT09QKSB7Ci1AQCAtNjg5LDcgKzY4Nyw3IEBAIGNvbGxlY3Rpb25zIHsKLSAgICAgICAgICAgICBzb3VyY2U6ICJwcm9ncmVzcy5zbGlkZXIiOwotICAgICAgICAgICAgIHNpZ25hbDogImNoYW5nZWQiOwotICAgICAgICAgICAgIHNjcmlwdCB7Ci0tICAgICAgICAgICAgICAgc2VuZF9tZXNzYWdlKE1TR19GTE9BVCwgTVNHX1BPU0lUSU9OLCAoZXh0ZXJuYWxfcGFyYW1fZ2V0X2Zsb2F0KFBBUlQ6InByb2dyZXNzLnNsaWRlciIsICJ2YWx1ZSIpICogZ2V0X2Zsb2F0KGN1cl9sZW5ndGgpIC8gMTAwKSk7Ci0rICAgICAgICAgICAgICAgc2VuZF9tZXNzYWdlKE1TR19GTE9BVCwgTVNHX1BPU0lUSU9OLCAoZXh0ZXJuYWxfcGFyYW1fZ2V0X2Zsb2F0KFBBUlQ6InByb2dyZXNzLnNsaWRlciIsICJ2YWx1ZSIpIC8gMTAwKSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBwcm9ncmFtIHsKLWRpZmYgLS1naXQgYS9zcmMvYmluL3dpbi5jIGIvc3JjL2Jpbi93aW4uYwotaW5kZXggMmY2NTk1My4uNDI4ZTI2OCAxMDA2NDQKLS0tLSBhL3NyYy9iaW4vd2luLmMKLSsrKyBiL3NyYy9iaW4vd2luLmMKLUBAIC0xOTQsOCArMTk0LDggQEAgX3dpbl9wbGF5X2V2YWwoV2luICp3KQotIHsKLSAgICBFZGplX01lc3NhZ2VfRmxvYXRfU2V0ICptZjsKLSAKLS0gICB3LT5wbGF5LnBvc2l0aW9uID0gZW1vdGlvbl9vYmplY3RfcG9zaXRpb25fZ2V0KHctPmVtb3Rpb24pOwotICAgIHctPnBsYXkubGVuZ3RoID0gZW1vdGlvbl9vYmplY3RfcGxheV9sZW5ndGhfZ2V0KHctPmVtb3Rpb24pOwotKyAgIHctPnBsYXkucG9zaXRpb24gPSBlbW90aW9uX29iamVjdF9wb3NpdGlvbl9nZXQody0+ZW1vdGlvbikgLyB3LT5wbGF5Lmxlbmd0aDsKLSAKLSAgICBpZiAoKHctPnNvbmcpICYmICh3LT5zb25nLT5sZW5ndGggIT0gKGludCl3LT5wbGF5Lmxlbmd0aCkpCi0gICAgICAgZGJfc29uZ19sZW5ndGhfc2V0KHctPmRiLCB3LT5zb25nLCB3LT5wbGF5Lmxlbmd0aCk7Ci1AQCAtNTQyLDggKzU0MiwxNCBAQCBfd2luX2VkamVfbXNnKHZvaWQgKmRhdGEsIEV2YXNfT2JqZWN0ICpvIF9fVU5VU0VEX18sIEVkamVfTWVzc2FnZV9UeXBlIHR5cGUsIGludAotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIEVkamVfTWVzc2FnZV9GbG9hdCAqbSA9IG1zZzsKLSsKLSsgICAgICAgICAgICAgIGlmICgoKChtLT52YWwgLSB3LT5wbGF5LnBvc2l0aW9uKSAqIHctPnBsYXkubGVuZ3RoKSA8IDEuMCkKLSsgICAgICAgICAgICAgICAgICAmJiAoKCh3LT5wbGF5LnBvc2l0aW9uIC0gbS0+dmFsKSAqIHctPnBsYXkubGVuZ3RoKSA8IDEuMCkpCi0rICAgICAgICAgICAgICAgICAgcmV0dXJuOwotKwotICAgICAgICAgICAgICAgdy0+cGxheS5wb3NpdGlvbiA9IG0tPnZhbDsKLS0gICAgICAgICAgICAgIGVtb3Rpb25fb2JqZWN0X3Bvc2l0aW9uX3NldCh3LT5lbW90aW9uLCB3LT5wbGF5LnBvc2l0aW9uKTsKLSsgICAgICAgICAgICAgIGVtb3Rpb25fb2JqZWN0X3Bvc2l0aW9uX3NldCh3LT5lbW90aW9uLCB3LT5wbGF5LnBvc2l0aW9uCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3LT5wbGF5Lmxlbmd0aCk7Ci0gICAgICAgICAgICAgICBlY29yZV9ldmVudF9hZGQoRU5KT1lfRVZFTlRfUE9TSVRJT05fQ0hBTkdFLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotQEAgLTYxNywxNiArNjIzLDIxIEBAIGVuam95X2NvbnRyb2xfc2Vlayh1aW50NjRfdCBwb3NpdGlvbikKLSB7Ci0gICAgV2luICp3ID0gJl93aW47Ci0gICAgZG91YmxlIHNlZWtfdG87Ci0rICAgZG91YmxlIG5ld19wb3MgPSB3LT5wbGF5Lmxlbmd0aCAvICgoZG91YmxlKXBvc2l0aW9uIC8gMWU2KTsKLSAKLSAgICBpZiAoIXctPmRiKSByZXR1cm47Ci0tICAgc2Vla190byA9IHctPnBsYXkucG9zaXRpb24gKyB3LT5wbGF5Lmxlbmd0aCAvICgoZG91YmxlKXBvc2l0aW9uIC8gMWU2KTsKLSsKLSsgICBpZiAoKCgobmV3X3BvcyAtIHctPnBsYXkucG9zaXRpb24pICogdy0+cGxheS5sZW5ndGgpIDwgMS4wKQotKyAgICAgICAmJiAoKCh3LT5wbGF5LnBvc2l0aW9uIC0gbmV3X3BvcykgKiB3LT5wbGF5Lmxlbmd0aCkgPCAxLjApKSByZXR1cm47Ci0rCi0rICAgc2Vla190byA9IHctPnBsYXkucG9zaXRpb24gKyBuZXdfcG9zOwotICAgIGlmIChzZWVrX3RvIDw9IDAuMCkKLSAgICAgIHNlZWtfdG8gPSAwLjA7Ci0gICAgZWxzZSBpZiAoc2Vla190byA+PSAxLjApCi0gICAgICBzZWVrX3RvID0gMS4wOwotIAotICAgIHctPnBsYXkucG9zaXRpb24gPSBzZWVrX3RvOwotLSAgIGVtb3Rpb25fb2JqZWN0X3Bvc2l0aW9uX3NldCh3LT5lbW90aW9uLCB3LT5wbGF5LnBvc2l0aW9uKTsKLSsgICBlbW90aW9uX29iamVjdF9wb3NpdGlvbl9zZXQody0+ZW1vdGlvbiwgdy0+cGxheS5wb3NpdGlvbiAqIHctPnBsYXkubGVuZ3RoKTsKLSAgICBlY29yZV9ldmVudF9hZGQoRU5KT1lfRVZFTlRfUE9TSVRJT05fQ0hBTkdFLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSB9Ci0gCi1AQCAtNjkyLDE1ICs3MDMsMjAgQEAgRUFQSSB2b2lkCi0gZW5qb3lfcG9zaXRpb25fc2V0KGludDMyX3QgcG9zaXRpb24pCi0gewotICAgIFdpbiAqdyA9ICZfd2luOwotKyAgIGRvdWJsZSBuZXdfcG9zID0gdy0+cGxheS5sZW5ndGggLyAoKGRvdWJsZSlwb3NpdGlvbiAvIDFlNik7Ci0gCi0gICAgaWYgKCF3LT5kYikgcmV0dXJuOwotLSAgIHctPnBsYXkucG9zaXRpb24gPSB3LT5wbGF5Lmxlbmd0aCAvICgoZG91YmxlKXBvc2l0aW9uIC8gMWU2KTsKLSsKLSsgICBpZiAoKCgobmV3X3BvcyAtIHctPnBsYXkucG9zaXRpb24pICogdy0+cGxheS5sZW5ndGgpIDwgMS4wKQotKyAgICAgICAmJiAoKCh3LT5wbGF5LnBvc2l0aW9uIC0gbmV3X3BvcykgKiB3LT5wbGF5Lmxlbmd0aCkgPCAxLjApKSByZXR1cm47Ci0rCi0rICAgdy0+cGxheS5wb3NpdGlvbiA9IG5ld19wb3M7Ci0gICAgaWYgKHctPnBsYXkucG9zaXRpb24gPCAwLjApCi0gICAgICB3LT5wbGF5LnBvc2l0aW9uID0gMC4wOwotICAgIGVsc2UgaWYgKHctPnBsYXkucG9zaXRpb24gPiAxLjApCi0gICAgICB3LT5wbGF5LnBvc2l0aW9uID0gMS4wOwotIAotLSAgIGVtb3Rpb25fb2JqZWN0X3Bvc2l0aW9uX3NldCh3LT5lbW90aW9uLCB3LT5wbGF5LnBvc2l0aW9uKTsKLSsgICBlbW90aW9uX29iamVjdF9wb3NpdGlvbl9zZXQody0+ZW1vdGlvbiwgdy0+cGxheS5wb3NpdGlvbiAqIHctPnBsYXkubGVuZ3RoKTsKLSAgICBlY29yZV9ldmVudF9hZGQoRU5KT1lfRVZFTlRfUE9TSVRJT05fQ0hBTkdFLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSB9Ci0gCi0tLSAKLTEuOC41LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZW5qb3kvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZW5qb3kvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTBlZDc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Vuam95L2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBnaXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6NDg6NTEuMjg0NTcwNDc0ICswMDAwCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjUzOjM5LjEwNDU3ODMxOCArMDAwMAotQEAgLTI2LDcgKzI2LDcgQEAKLSBBQ19DQU5PTklDQUxfSE9TVAotIEFDX0lTQ19QT1NJWAotIAotLUFNX0lOSVRfQVVUT01BS0UoMS42IGRpc3QtYnppcDIpCi0rQU1fSU5JVF9BVVRPTUFLRShbZGlzdC1iemlwMiBmb3JlaWduXSkKLSBBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLSBfWFRFUk1fQ09MT1JTCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Vuam95X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2Vuam95X2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE2ZDczZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lbmpveV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIkVuam95IG11c2ljIHBsYXllciIKLUxJQ0VOU0UgPSAiTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCi1ERVBFTkRTID0gImV2YXMgZWNvcmUgZWRqZSBlbGVtZW50YXJ5IGVtb3Rpb24gbGlnaHRtZWRpYXNjYW5uZXIgZWxkYnVzIGdzdC1wbHVnaW5zLWdvb2QiCi0KLVNSQ1JFViA9ICJhYThmZWM2OWU4ODVlZWMwNDhhODQ5YzJiMzQwNTllYzU4NDA0ZTAyIgotUFYgPSAiMC4xLjArZ2l0ciR7U1JDUFZ9IgotCi0jMXN0IG5lZWRlZCBmb3IgYWxsIGZvcm1hdHMKLSMybmQgbmVlZGVkIGZvciBtcDMgcGxheWJhY2sKLSMzZCBuZWVkZWQgZm9yIG9nZyBwbGF5YmFjawotIzR0aCBuZWVkZWQgZm9yIGZsYWMgcGxheWJhY2sKLSM1dGggbmVlZGVkIGJpbmFyeSB0byBjcmVhdGUgZGIKLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgICAgZ3N0LXBsdWdpbnMtYmFzZS10eXBlZmluZGZ1bmN0aW9ucyBnc3QtcGx1Z2lucy1iYXNlLXBsYXliaW4gZ3N0LXBsdWdpbnMtYmFzZS12b2x1bWUgZ3N0LXBsdWdpbnMtYmFzZS1kZWNvZGViaW4yIGdzdC1wbHVnaW5zLWdvb2QtYXV0b2RldGVjdCBcCi0gICAgICAgZ3N0LXBsdWdpbnMtYmFzZS1vZ2cgZ3N0LXBsdWdpbnMtYmFzZS1pdm9yYmlzZGVjIFwKLSAgICAgICBnc3QtcGx1Z2lucy1nb29kLWZsYWMgXAotICAgICAgIGxpZ2h0bWVkaWFzY2FubmVyLXRlc3QgXAotIgotCi1pbmhlcml0IGUgZ2V0dGV4dAotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdC5lbmxpZ2h0ZW5tZW50Lm9yZy9hcHBzL2Vuam95LmdpdCBcCi0gICAgZmlsZTovLzAwMDEtYWx3YXlzLXVzZS1wb3NpdGlvbi1hcy1wZXJjZW50LWFuZC1kZWZpbmUtYS0xLXNlY29uZC5wYXRjaCBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0iCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy8iCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgXAotIgotCi1QQUNLQUdFQ09ORklHW21hZF0gPSAiLCxnc3QtcGx1Z2lucy11Z2x5LGdzdC1wbHVnaW5zLXVnbHktbWFkIgotUEFDS0FHRUNPTkZJR1tpZDNkZW11eF0gPSAiLCwsZ3N0LXBsdWdpbnMtZ29vZC1pZDNkZW11eCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgYXV0b3BvaW50IHx8IHRvdWNoIGNvbmZpZy5ycGF0aAotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGVjaG8gImVuam95OiAgICBTQ0FOIGFuZCBMSUJSQVJZIE1BTkFHRVIgYXJlIG5vdCBpbXBsZW1ldGVkIHlldCEiCi0gICAgZWNobyAiZW5qb3k6ICAgIE1lYW53aGlsZSBwbGVhc2UgcnVuOiIKLSAgICBlY2hvICJlbmpveTogICAgdGVzdC1sbXMgLW0gbW9ubyAtcCBpZDMgLWkgNTAwMCAtcyAvcGF0aC90by95b3VyL211c2ljL2RpciAvaG9tZS9yb290Ly5jb25maWcvZW5qb3kvbWVkaWEuZGIiCi0gICAgZWNobyAiZW5qb3k6IgotICAgIGVjaG8gImVuam95OiAgICBVc2UgdGVzdC1sbXMgLVAgdG8gc2VlIGF2YWlsYWJsZSBmb3JtYXRzIHRoYXQgY2FuIGJlIHNjYW5uZWQiCi19Ci0KLVBOQkxBQ0tMSVNUW2Vuam95XSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXBob3RvL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VwaG90by9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NDY2ZjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXBob3RvL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBlcGhvdG8vY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZXBob3RvLm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6NDg6NTEuMDI4NTcwNDY3ICswMDAwCi0rKysgZXBob3RvL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjUyOjU2LjEyMDU3NzE0NiArMDAwMAotQEAgLTI3LDcgKzI3LDcgQEAKLSBBQ19DQU5PTklDQUxfSE9TVAotIEFDX0lTQ19QT1NJWAotIAotLUFNX0lOSVRfQVVUT01BS0UoMS42IGRpc3QtYnppcDIpCi0rQU1fSU5JVF9BVVRPTUFLRShbZGlzdC1iemlwMiBmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKHNyYy9iaW4vY29uZmlnLmgpCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VwaG90b19zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9lcGhvdG9fc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODZmZmUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2VwaG90b19zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1MSUNFTlNFID0gIk1JVCAmIEdQTC0zLjAiCi1QViA9ICIwLjEuMCtzdm5yJHtTUkNSRVZ9IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZkZmZjZGRiMzY2ZDBjYzc4ZTBlNDZjNGVhNzBjOGQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuaWNvbnM7bWQ1PThmMGUyY2Q0MGUwNTE4OWVjODEyMzJkYTg0YmQ2ZTFhIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1pbmhlcml0IGdldHRleHQKLQotREVQRU5EUyArPSAiZWxlbWVudGFyeSBldGh1bWIgZWNvcmUgZWlvIgotCi1TUkNOQU1FID0gIiR7UE59IgotCi0jIGF1dG90b29scy1icm9rZW5zZXAKLUIgPSAiJHtTfSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotUE5CTEFDS0xJU1RbZXBob3RvXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHQtY2xpZW50L2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2V4YWx0LWNsaWVudC9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZmY4MDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHQtY2xpZW50L2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUluZGV4OiBleGFsdC1jbGllbnQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZXhhbHQtY2xpZW50Lm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6NDY6MTQuNzEyNTY2MjA3ICswMDAwCi0rKysgZXhhbHQtY2xpZW50L2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIxOjQ3OjU2Ljg4MDU2ODk5MSArMDAwMAotQEAgLTEwLDcgKzEwLDcgQEAKLSBBQ19DQU5PTklDQUxfSE9TVAotIEFDX0lTQ19QT1NJWAotIAotLUFNX0lOSVRfQVVUT01BS0UoMS44KQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCi0gCi0gQUNfUFJPR19DQwotQEAgLTI5LDcgKzI5LDYgQEAKLSAKLSBtNF9pZmRlZihbQU1fR05VX0dFVFRFWFRdLCBbCi0gQU1fR05VX0dFVFRFWFQoW2V4dGVybmFsXSkKLS1wb19tYWtlZmlsZV9pbj1wby9NYWtlZmlsZS5pbgotIEFNX0NPTkRJVElPTkFMKFtIQVZFX1BPXSwgW3RydWVdKQotIF0sWwotIEFNX0NPTkRJVElPTkFMKFtIQVZFX1BPXSwgW2ZhbHNlXSkKLUBAIC0xMDEsNiArMTAwLDUgQEAKLSBzcmMvTWFrZWZpbGUKLSBtb2R1bGUuZGVza3RvcAotIGVfbW9kdWxlcy1leGFsdC1jbGllbnQuc3BlYwotLSRwb19tYWtlZmlsZV9pbgotIF0sIFsKLSBdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHQtY2xpZW50X3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2V4YWx0LWNsaWVudF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNzhhMmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHQtY2xpZW50X3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUxJQ0VOU0UgPSAiTEdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLQotUFYgPSAiMC4wLjErc3ZuciR7U1JDUFZ9IgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1ERVBFTkRTICs9ICJlbGVtZW50YXJ5IGV4YWx0IGVkamUtbmF0aXZlIgotCi1DRkxBR1MgKz0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L2V4YWx0IC1JJHtTVEFHSU5HX0lOQ0RJUn0vZXhhbHRfZGJ1cyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIC9wby9kICR7U30vY29uZmlndXJlLmFjCi0gICAgc2VkIC1pIC1lIHM6XCBwbzo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi5kZXNrdG9wIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi5lZGogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvKi8qLyouc28iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy8qLyovKi5hIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi8qLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzLyovKi8uZGVidWciCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi1QTkJMQUNLTElTVFtleGFsdC1jbGllbnRdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leGFsdF9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leGFsdF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNjNmMWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhhbHRfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJFeGFsdCBpcyBhIG5ldHdvcmsgbWFuYWdlciBmb3IgdGhlIHdpbmRvd3MgbWFuYWdlciBFbmxpZ2h0ZW5tZW50IERSMTciCi1IT01FUEFHRSA9ICJodHRwOi8vd2F0Y2h3b2xmLmZyL3dpa2kvZG9rdS5waHA/aWQ9ZXhhbHQiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLQotREVQRU5EUyA9ICJlbGVtZW50YXJ5IHZwbmMgd3BhLXN1cHBsaWNhbnQgZWNvcmUgZWV0IGVkYnVzIgotUkRFUEVORFNfJHtQTn0gPSAidnBuYyB3cGEtc3VwcGxpY2FudCIKLQotUFYgPSAiMC45K3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotCi1pbmhlcml0IGUKLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bms7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtzY21kYXRhPWtlZXAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0tLXdpdGgtd3BhX3N1cHBsaWNhbnQ9JHtzYmluZGlyfS93cGFfc3VwcGxpY2FudCBcCi0tLXdpdGgtdnBuYz0ke3NiaW5kaXJ9L3ZwbmMgXAotLS13aXRoLXZwbmMtZGlzY29ubmVjdD0ke3NiaW5kaXJ9L3ZwbmMtZGlzY29ubmVjdCBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgaW5zdGFsbCBkYnVzIGNvbmZpZyBmaWxlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGF0YS9kYWVtb24vZGJ1cy9leGFsdC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9leGFsdC5jb25mCi0KLSAgICAjIGluc3RhbGwgZGJ1cyBzZXJ2aWNlIGZpbGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vb3JnLmUuRXhhbHQuc2VydmljZSAke0R9JHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzLwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEiCi0KLQotUE5CTEFDS0xJU1RbZXhhbHRdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGUtdGhlbWUtaWxsdW1lLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlLXRoZW1lLWlsbHVtZS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkwNjNiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGUtdGhlbWUtaWxsdW1lLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRERFU0NSSVBUSU9OID0gIkEgdGhlbWUgZm9yIGV4cXVpc2l0ZSIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9MSUNFTlNFO21kNT1mNTIzYWI1OTg2Y2M3OWI1MmE5MGQyYWMzZDU0NTRhMiIKLVNFQ1RJT04gPSAieDExIgotREVQRU5EUyA9ICJlZGplLW5hdGl2ZSIKLVBWID0gIjEuMCtzdm5yJHtTUkNQVn0iCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlLWJhc2UgdXBkYXRlLWFsdGVybmF0aXZlcyBhbGxhcmNoCi0KLUFMVEVSTkFUSVZFX05BTUUgPSAiZXhxdWlzaXRlLWNvbmZpZyIKLUFMVEVSTkFUSVZFX0xJTksgPSAiJHtzeXNjb25mZGlyfS9leHF1aXNpdGUvY29uZmlnIgotQUxURVJOQVRJVkVfUEFUSCA9ICIke3N5c2NvbmZkaXJ9L2V4cXVpc2l0ZS9jb25maWctaWxsdW1lIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAiCi0KLVNSQ05BTUUgPSAiYl9hbmRfdyIKLQotU1JDX1VSSSA9ICIke0VfU1ZOfS90cnVuay9USEVNRVM7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cCBcCi0gICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFIFwKLSIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9IgotCi1kb19jb21waWxlKCkgewotICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZGplX2NjIGV4cXVpc2l0ZS5lZGMgaWxsdW1lLmVkagotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZXhxdWlzaXRlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9leHF1aXNpdGUvZGF0YS90aGVtZXMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbGx1bWUuZWRqICR7RH0ke2RhdGFkaXJ9L2V4cXVpc2l0ZS9kYXRhL3RoZW1lcy8KLSAgICBlY2hvICdUSEVNRT0iLXQgaWxsdW1lIicgPiAke0R9JHtzeXNjb25mZGlyfS9leHF1aXNpdGUvY29uZmlnLWlsbHVtZQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9leHF1aXNpdGUvY29uZmlnLWlsbHVtZSIKLUZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vZXhxdWlzaXRlICR7ZGF0YWRpcn0vZXhxdWlzaXRlL2RhdGEvdGhlbWVzIgotCi1QTkJMQUNLTElTVFtleHF1aXNpdGUtdGhlbWUtaWxsdW1lXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlZGplLW5hdGl2ZSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhxdWlzaXRlLXRoZW1lLWlsbHVtZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBleHF1aXNpdGUtdGhlbWUtaWxsdW1lIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHF1aXNpdGUtdGhlbWUtaWxsdW1lXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV4cXVpc2l0ZS10aGVtZS1pbGx1bWUtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlLXRoZW1lLWlsbHVtZS9MSUNFTlNFIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlLXRoZW1lLWlsbHVtZS9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWJiMmY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2V4cXVpc2l0ZS10aGVtZS1pbGx1bWUvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUNvcHlyaWdodCBub3RpY2UgZm9yIEVubGlnaHRlbm1lbnQ6Ci0KLUNvcHlyaWdodCAoQykgMjAwMC0yMDEwIENhcnN0ZW4gSGFpdHpsZXIgYW5kIHZhcmlvdXMgY29udHJpYnV0b3JzIChzZWUgQVVUSE9SUykKLQotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IAotICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAotSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLUlOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLAotT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGUvZXhxdWlzaXRlLWluaXQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGUvZXhxdWlzaXRlLWluaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZTY3NzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlL2V4cXVpc2l0ZS1pbml0CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyEvYmluL3NoCi0KLWZvciB4IGluICQoY2F0IC9wcm9jL2NtZGxpbmUpOyBkbwotICBjYXNlICR4IGluCi0gICAgc3BsYXNoPWZhbHNlKQotICAgICAgZWNobyAiU3BsYXNoIERpc2FibGVkIgotICAgICAgZXhpdCAwOwotICAgICAgOzsKLSAgZXNhYwotZG9uZQotCi0uIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwotCi0jIyMgRGVmYXVsdCBjb25maWcgaGVyZSAtIGdldHMgb3ZlcnJpZGVuIGxhdGVyCi1USEVNRT0iLXQgZGVmYXVsdCIKLUZQUz0iLWZwcyAzMCIKLSMjIyBPdmVycmlkZSBjb25maWcgLSBpZiB0aGVyZSBpcyBhIGNvbmZpZyBmaWxlIC0gbG9hZCBpdC4KLWlmIHRlc3QgLWYgL2V0Yy9leHF1aXNpdGUvY29uZmlnOyB0aGVuCi0gIC4gL2V0Yy9leHF1aXNpdGUvY29uZmlnCi1maQotCi1hcmdzPScnCi1jYXNlIGBtYWNoaW5lX2lkYCBpbgotICAiaHBfaXBhcV9oMzEwMCJ8ImhwX2lwYXFfaDM4MDAiKQotICAgICBhcmdzPSctcm90IDkwJyA7OwotICAiaHBfaXBhcV8zNjAwInwiaHBfaXBhcV8zNzAwInwiaHBfaXBhcV9oMzkwMCJ8Imh0Y191bml2ZXJzYWwifCpjb2xsaWV8KnBvb2RsZXwqYWtpdGF8KnNwaXR6fCpib3J6b2kpCi0gICAgIGFyZ3M9Jy1yb3QgMjcwJyA7OwotZXNhYwotYXJncz0kYXJncyIgJEZQUyAkVEhFTUUiCi0KLWV4cG9ydCBFWERJUj0vbW50Ly5zcGxhc2gKLWV4cG9ydCBFWFFVSVNJVEVfSVBDPSRFWERJUi9leHF1aXNpdGUKLW1vdW50IHRtcGZzIC10IHRtcGZzICRFWERJUiAtbyxzaXplPTQwawotZXhxdWlzaXRlIC1mYiAtZnMgJGFyZ3MgJgotCi1leHF1aXNpdGUtd3JpdGUgLXdhaXQgMTIwCi1leHF1aXNpdGUtd3JpdGUgIlBVTFNBVEUiCi1zZXR0ZXJtIC1ibGFuayAwCi1zZXR0ZXJtIC1wb3dlcnNhdmUgb2ZmCi1zZXR0ZXJtIC1wb3dlcmRvd24gMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlL3NwbGFzaGZ1bmNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlL3NwbGFzaGZ1bmNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGEyYTk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2V4cXVpc2l0ZS9zcGxhc2hmdW5jcworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLXN0YXR1cygpIHsKLSAgaWYgdHlwZSBzcGxhc2gtd3JpdGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgKFRNUERJUj0iL21udC8uc3BsYXNoIiBFWFFVSVNJVEVfSVBDPSIkVE1QRElSL2V4cXVpc2l0ZSIgc3BsYXNoLXdyaXRlICIkMSIgfHwgdHJ1ZSkgJgotICBmaQotfQotCi1zdGF0dXNfcG9zaXRpb24oKSB7Ci0gIHN0YXR1cyAiUFJPR1JFU1MgJDEiCi19Ci0KLXN0YXR1c190aXRsZSgpIHsKLSAgc3RhdHVzICJUSVRMRSAkMSIKLX0KLQotc3RhdHVzX3RleHQoKSB7Ci0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotICAgIHN0YXR1cyAiTVNHICQxIgotICBlbHNlCi0gICAgc3RhdHVzICJDTEVBUiIKLSAgZmkKLX0KLQotc3RhdHVzX3B1bHNlKCkgewotICBzdGF0dXMgIlBVTFNBVEUiCi19Ci0KLXN0YXR1c190aWNrKCkgewotICBzdGF0dXMgIlRJQ0siCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGVfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZXhxdWlzaXRlX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI2Y2Q0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9leHF1aXNpdGVfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHBzcGxhc2ggcmVwbGFjZW1lbnQgZm9yIGRpc3BsYXkiCi1MSUNFTlNFID0gIk1JVCAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE0ZGVmYTM3MmE5MTExOGU3NTUxMzNiYzhlNmFmZjgzIgotREVQRU5EUyA9ICJlZXQgZXZhcyBlY29yZSBlbWJyeW8gZWRqZSIKLVBWID0gIjAuMC4xK3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZXhxdWlzaXRlLXRoZW1lcyIKLVJDT05GTElDVFNfJHtQTn0gPSAicHNwbGFzaCB2aXJ0dWFsLXBzcGxhc2giCi0KLVNSQ05BTUUgPSAiZXhxdWlzaXRlIgotCi1pbmhlcml0IGUKLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bms7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtzY21kYXRhPWtlZXAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1lZGplLWNjPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZGplX2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZXhxdWlzaXRlLWluaXQiCi1TUkNfVVJJICs9ICJmaWxlOi8vc3BsYXNoZnVuY3MiCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS9tbnQvLnNwbGFzaC8KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2V4cXVpc2l0ZS1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9leHF1aXNpdGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zcGxhc2hmdW5jcyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3NwbGFzaGZ1bmNzCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgbG4gLXMgZXhxdWlzaXRlLXdyaXRlICR7RH0ke2JpbmRpcn0vc3BsYXNoLXdyaXRlCi19Ci0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2V4cXVpc2l0ZS9kYXRhL2ZvbnRzLyoKLX0KLQotSU5JVFNDUklQVF9OQU1FID0gImV4cXVpc2l0ZSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAxIFMgLiBzdG9wIDIwIDAgMSA2IC4iCi0KLUZJTEVTXyR7UE59ICs9ICIvbW50Ly5zcGxhc2gvIgotCi1QTkJMQUNLTElTVFtleHF1aXNpdGVdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjE5LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2ZsYW1lL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2ZsYW1lL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdjODVkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mbGFtZS9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogY3B1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNwdS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjM5OjQ4LjAwMDAwMDAwMCArMDAwMAotKysrIGNwdS9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTozOTo1NS4zMjA1NTU4NjggKzAwMDAKLUBAIC0xMCw3ICsxMCw3IEBACi0gQUNfQ0FOT05JQ0FMX0hPU1QKLSBBQ19JU0NfUE9TSVgKLSAKLS1BTV9JTklUX0FVVE9NQUtFKDEuNikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mbGFtZV9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mbGFtZV9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ODNkMjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZmxhbWVfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDQ4OTVmMjUzYzMyZjM4ZTE4MmRjYWYzMGZlOGEzNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT1jOTEwYjY0NWVkYTAwMDVjY2VjNDZmNzUyMDNkYzk2ZSIKLQotUFYgPSAiMC4wLjMrc3ZuciR7U1JDUFZ9IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLXJlcXVpcmUgZS1tb2R1bGUuaW5jCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAvcG8vZCAke1N9L2NvbmZpZ3VyZS5hYwotICAgIHNlZCAtaSAtZSBzOlwgcG86OmcgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1QTkJMQUNLTElTVFtmbGFtZV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2ZvcmVjYXN0cy9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mb3JlY2FzdHMvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2M4NWRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2ZvcmVjYXN0cy9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogY3B1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNwdS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjM5OjQ4LjAwMDAwMDAwMCArMDAwMAotKysrIGNwdS9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTozOTo1NS4zMjA1NTU4NjggKzAwMDAKLUBAIC0xMCw3ICsxMCw3IEBACi0gQUNfQ0FOT05JQ0FMX0hPU1QKLSBBQ19JU0NfUE9TSVgKLSAKLS1BTV9JTklUX0FVVE9NQUtFKDEuNikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mb3JlY2FzdHNfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvZm9yZWNhc3RzX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1ZjMxNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9mb3JlY2FzdHNfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDQ4OTVmMjUzYzMyZjM4ZTE4MmRjYWYzMGZlOGEzNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT01MTMyOGNmYjczYmZlYzNlZWQ3Y2ZkM2RiZWQ3Mzk4OCIKLQotUFYgPSAiMC4yLjArc3ZuciR7U1JDUkVWfSIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1QTkJMQUNLTElTVFtmb3JlY2FzdHNdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGUtd20gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9pbGx1bWUta2V5Ym9hcmRzLXNoci8wMDAxLU1ha2VmaWxlLXVwZGF0ZS1LRVlCT0FSRFNfRElSLWZvci1uZXctaWxsdW1lMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2lsbHVtZS1rZXlib2FyZHMtc2hyLzAwMDEtTWFrZWZpbGUtdXBkYXRlLUtFWUJPQVJEU19ESVItZm9yLW5ldy1pbGx1bWUyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMThhNjliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2lsbHVtZS1rZXlib2FyZHMtc2hyLzAwMDEtTWFrZWZpbGUtdXBkYXRlLUtFWUJPQVJEU19ESVItZm9yLW5ldy1pbGx1bWUyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRnJvbSA5MzE2ZTM5NzNjNDRiOTgxZTczYjk1M2IyODYxMDYwYzY5MDJkZTQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMyBBdWcgMjAxMCAxMjo1NDowNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogdXBkYXRlIEtFWUJPQVJEU19ESVIgZm9yIG5ldyBpbGx1bWUyCi0KLS0tLQotIE1ha2VmaWxlIHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNDZlOTQyMC4uM2Q4NzU3YyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTEsNSArMSw1IEBACi0gCi0tSU5TVEJBU0UgPSAvdXNyL2xpYi9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvaWxsdW1lL2tleWJvYXJkcwotK0lOU1RCQVNFID0gL3Vzci9saWIvZW5saWdodGVubWVudC9tb2R1bGVzL2lsbHVtZS1rZXlib2FyZC9rZXlib2FyZHMKLSAKLSBGSUxFUy1hcmFiaWMgPSBBcmFiaWMua2JkIEFyYWJpYy5wbmcKLSBGSUxFUy1wZXJzaWFuID0gUGVyc2lhbi5rYmQgUGVyc2lhbi5wbmcKLS0tIAotMS43LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvaWxsdW1lLWtleWJvYXJkcy1zaHIvTElDRU5TRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L2lsbHVtZS1rZXlib2FyZHMtc2hyL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYmIyZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvaWxsdW1lLWtleWJvYXJkcy1zaHIvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUNvcHlyaWdodCBub3RpY2UgZm9yIEVubGlnaHRlbm1lbnQ6Ci0KLUNvcHlyaWdodCAoQykgMjAwMC0yMDEwIENhcnN0ZW4gSGFpdHpsZXIgYW5kIHZhcmlvdXMgY29udHJpYnV0b3JzIChzZWUgQVVUSE9SUykKLQotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IAotICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAotSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLUlOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLAotT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9pbGx1bWUta2V5Ym9hcmRzLXNocl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9pbGx1bWUta2V5Ym9hcmRzLXNocl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MjVjODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvaWxsdW1lLWtleWJvYXJkcy1zaHJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLVNFQ1RJT04gPSAieDExL2RhdGEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNoci1wcm9qZWN0Lm9yZy9yZXBvL2lsbHVtZS1rZXlib2FyZHMuZ2l0O3Byb3RvY29sPWh0dHA7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLXVwZGF0ZS1LRVlCT0FSRFNfRElSLWZvci1uZXctaWxsdW1lMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotU1JDUkVWID0gIjQwNjQ0ODlmMzU5YTFhZGRmNTcyMDg5YjU4MmYzMTdkZmY1ZjUwZTEiCi1QViA9ICIwLjArZ2l0ciR7U1JDUFZ9IgotUEUgPSAiMSIKLVBSID0gInI1IgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L0xJQ0VOU0U7bWQ1PWY1MjNhYjU5ODZjYzc5YjUyYTkwZDJhYzNkNTQ1NGEyIgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1QQUNLQUdFUyA9ICJcCi1pbGx1bWUta2V5Ym9hcmQtYWxwaGEgXAotaWxsdW1lLWtleWJvYXJkLWFyYWJpYyBcCi1pbGx1bWUta2V5Ym9hcmQtYnJvd3NlIFwKLWlsbHVtZS1rZXlib2FyZC1kYW5pc2ggXAotaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtYWx0IFwKLWlsbHVtZS1rZXlib2FyZC1kdXRjaCBcCi1pbGx1bWUta2V5Ym9hcmQtZHZvcmFrIFwKLWlsbHVtZS1rZXlib2FyZC1maW5uaXNoIFwKLWlsbHVtZS1rZXlib2FyZC1mcmVuY2ggXAotaWxsdW1lLWtleWJvYXJkLWdlcm1hbiBcCi1pbGx1bWUta2V5Ym9hcmQtaGVicmV3IFwKLWlsbHVtZS1rZXlib2FyZC1udW1lcmljLWFsdCBcCi1pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbiBcCi1pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbi10ZXJtaW5hbCBcCi1pbGx1bWUta2V5Ym9hcmQtcGVyc2lhbiBcCi0iCi0KLWluaGVyaXQgYWxsYXJjaAotS0VZQk9BUkRTX0RJUj0iJHtsaWJkaXJ9L2VubGlnaHRlbm1lbnQvbW9kdWxlcy9pbGx1bWUta2V5Ym9hcmQva2V5Ym9hcmRzIgotCi1BVVRIT1JfaWxsdW1lLWtleWJvYXJkLWFscGhhID0gIkplc3VzIE1jQ2xvdWQiCi1ERVNDUklQVElPTl9pbGx1bWUta2V5Ym9hcmQtYWxwaGEgPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggcGhvbmUtbGlrZSBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtYWxwaGEgPSAiJHtLRVlCT0FSRFNfRElSfS9BbHBoYS5rYmQiCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtYXJhYmljID0gIk1vaGFtbWFkIEZhaG1pIC8gVG9tIEhhY29oZW4iCi1ERVNDUklQVElPTl9pbGx1bWUta2V5Ym9hcmQtYXJhYmljID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIGFyYWJpYyBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtYXJhYmljID0gIiR7S0VZQk9BUkRTX0RJUn0vQXJhYmljLmtiZCAke0tFWUJPQVJEU19ESVJ9L0FyYWJpYy5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtYnJvd3NlID0gIlBhbmRlciIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1icm93c2UgPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggYSBsYXlvdXQgb3B0aW1pemVkIGZvciBicm93c2luZyIKLUZJTEVTX2lsbHVtZS1rZXlib2FyZC1icm93c2UgPSAiJHtLRVlCT0FSRFNfRElSfS9Ccm93c2Uua2JkICR7S0VZQk9BUkRTX0RJUn0vZW5kLWJyb3dzZS5wbmcgJHtLRVlCT0FSRFNfRElSfS9wYWdlZG93bi1icm93c2UucG5nICR7S0VZQk9BUkRTX0RJUn0vYnJvd3NlLnBuZyAke0tFWUJPQVJEU19ESVJ9L2hvbWUtYnJvd3NlLnBuZyAke0tFWUJPQVJEU19ESVJ9L3BhZ2V1cC1icm93c2UucG5nICR7S0VZQk9BUkRTX0RJUn0vc3BhY2UtYnJvd3NlLnBuZyIKLQotQVVUSE9SX2lsbHVtZS1rZXlib2FyZC1kYW5pc2ggPSAiRXNiZW4gRGFtZ2FhcmQiCi1ERVNDUklQVElPTl9pbGx1bWUta2V5Ym9hcmQtZGFuaXNoID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIGRhbmlzaCBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZGFuaXNoID0gIiR7S0VZQk9BUkRTX0RJUn0vRGFuaXNoLmtiZCAke0tFWUJPQVJEU19ESVJ9L2RhbmlzaC5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtZGVmYXVsdC1hbHQgPSAiUGFuZGVyIgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtYWx0ID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIGFuIGFsdGVybmF0aXZlIGRlZmF1bHQgbGF5b3V0IgotRklMRVNfaWxsdW1lLWtleWJvYXJkLWRlZmF1bHQtYWx0ID0gIiR7S0VZQk9BUkRTX0RJUn0vRGVmYXVsdC1hbHQua2JkIgotCi1BVVRIT1JfaWxsdW1lLWtleWJvYXJkLWR1dGNoID0gIlBhbmRlciIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1kdXRjaCA9ICJJbGx1bWUga2V5Ym9hcmQgd2l0aCBkdXRjaCBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZHV0Y2ggPSAiJHtLRVlCT0FSRFNfRElSfS9jYXBzbG9jay1uZWdhdGl2ZS5wbmcgJHtLRVlCT0FSRFNfRElSfS9lbmQucG5nICR7S0VZQk9BUkRTX0RJUn0vcGFnZWRvd24ucG5nICR7S0VZQk9BUkRTX0RJUn0vcXdlcnR5LWR1dGNoLW5sLnBuZyAke0tFWUJPQVJEU19ESVJ9L1Rlcm1pbmFsLWR1dGNoLW5sLmtiZCAke0tFWUJPQVJEU19ESVJ9L2NhcHNsb2NrLnBuZyAke0tFWUJPQVJEU19ESVJ9L2hvbWUucG5nICR7S0VZQk9BUkRTX0RJUn0vcGFnZXVwLnBuZyAke0tFWUJPQVJEU19ESVJ9L3NwYWNlLnBuZyIKLQotQVVUSE9SX2lsbHVtZS1rZXlib2FyZC1kdm9yYWsgPSAiR2Fib3IgQWRhbSBUT1RIIgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLWR2b3JhayA9ICJJbGx1bWUga2V5Ym9hcmQgd2l0aCBkdm9yYWsgbGF5b3V0IgotRklMRVNfaWxsdW1lLWtleWJvYXJkLWR2b3JhayA9ICIke0tFWUJPQVJEU19ESVJ9L0R2b3Jhay5rYmQgJHtLRVlCT0FSRFNfRElSfS9kdm9yYWsucG5nIgotCi1BVVRIT1JfaWxsdW1lLWtleWJvYXJkLWZpbm5pc2ggPSAiT2xvZiBTasO2YmVyZ2ggLyBKdXNzaSBUaW1wZXJpIgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLWZpbm5pc2ggPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggZmlubmlzaCBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZmlubmlzaCA9ICIke0tFWUJPQVJEU19ESVJ9L0Zpbm5pc2gua2JkICR7S0VZQk9BUkRTX0RJUn0vRmlubmlzaC5wbmciCi0KLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1mcmVuY2ggPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggZnJlbmNoIGxheW91dCIKLUZJTEVTX2lsbHVtZS1rZXlib2FyZC1mcmVuY2ggPSAiJHtLRVlCT0FSRFNfRElSfS9BemVydHkua2JkICR7S0VZQk9BUkRTX0RJUn0vQXplcnR5LnBuZyIKLQotQVVUSE9SX2lsbHVtZS1rZXlib2FyZC1nZXJtYW4gPSAiRmxvcmlhbiBIYWNrZW5iZXJnZXIiCi1ERVNDUklQVElPTl9pbGx1bWUta2V5Ym9hcmQtZ2VybWFuID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIGdlcm1hbiBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtZ2VybWFuID0gIiR7S0VZQk9BUkRTX0RJUn0vR2VybWFuLmtiZCAke0tFWUJPQVJEU19ESVJ9L0dlcm1hbi5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtaGVicmV3ID0gIlRvbSBIYWNvaGVuIgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLWhlYnJldyA9ICJJbGx1bWUga2V5Ym9hcmQgd2l0aCBoZWJyZXcgbGF5b3V0IgotRklMRVNfaWxsdW1lLWtleWJvYXJkLWhlYnJldyA9ICIke0tFWUJPQVJEU19ESVJ9L0hlYnJldy5rYmQgJHtLRVlCT0FSRFNfRElSfS9BbHBoYS1oZWJyZXctaWwucG5nIgotCi1BVVRIT1JfaWxsdW1lLWtleWJvYXJkLW51bWVyaWMtYWx0ID0gIlBhbmRlciIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1udW1lcmljLWFsdCA9ICJJbGx1bWUga2V5Ym9hcmQgd2l0aCBhbiBhbHRlcm5hdGl2ZSBudW1lcmljIGxheW91dCIKLUZJTEVTX2lsbHVtZS1rZXlib2FyZC1udW1lcmljLWFsdCA9ICIke0tFWUJPQVJEU19ESVJ9L051bWJlcnMtYWx0LmtiZCAke0tFWUJPQVJEU19ESVJ9L251bWVyaWMtYWx0LnBuZyIKLQotQVVUSE9SX2lsbHVtZS1rZXlib2FyZC1ydXNzaWFuID0gImx1Y2t5IgotREVTQ1JJUFRJT05faWxsdW1lLWtleWJvYXJkLXJ1c3NpYW4gPSAiSWxsdW1lIGtleWJvYXJkIHdpdGggcnVzc2lhbiBsYXlvdXQiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbiA9ICIke0tFWUJPQVJEU19ESVJ9L1g4X1J1c3NpYW4ua2JkICR7S0VZQk9BUkRTX0RJUn0vWDgtcnVzc2lhbi1ydS5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbi10ZXJtaW5hbCA9ICJsdWNreSIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1ydXNzaWFuLXRlcm1pbmFsID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIHJ1c3NpYW4gbGF5b3V0IGZvciB0aGUgVGVybWluYWwiCi1GSUxFU19pbGx1bWUta2V5Ym9hcmQtcnVzc2lhbi10ZXJtaW5hbCA9ICIke0tFWUJPQVJEU19ESVJ9L1Rlcm1pbmFsX1J1c3NpYW4ua2JkICR7S0VZQk9BUkRTX0RJUn0vVGVybWluYWwtcnVzc2lhbi1ydS5wbmciCi0KLUFVVEhPUl9pbGx1bWUta2V5Ym9hcmQtcGVyc2lhbiA9ICJzbGF2ZSIKLURFU0NSSVBUSU9OX2lsbHVtZS1rZXlib2FyZC1wZXJzaWFuID0gIklsbHVtZSBrZXlib2FyZCB3aXRoIHBlcnNpYW4gbGF5b3V0IgotRklMRVNfaWxsdW1lLWtleWJvYXJkLXBlcnNpYW4gPSAiJHtLRVlCT0FSRFNfRElSfS9QZXJzaWFuLmtiZCAke0tFWUJPQVJEU19ESVJ9L1BlcnNpYW4ucG5nIgotCi1kb19pbnN0YWxsKCkgewotICAgIG1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvbmV3c19zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9uZXdzX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM0OWUwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9uZXdzX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1QViA9ICIwLjEuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotcmVxdWlyZSBlLW1vZHVsZS5pbmMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIC9wby9kIGNvbmZpZ3VyZS5hYwotICAgIHNlZCAtaSAtZSBzOlwgcG86OmcgTWFrZWZpbGUuYW0KLX0KLQotUE5CTEFDS0xJU1RbbmV3c10gPz0gImlmIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIHdpdGggRTE4LCB0aGVuIHlvdSBuZWVkIHRvIHVwZGF0ZSBpdCB0byBnaXQgcmVjaXBlIGZldGNoaW5nIG5ld2VyIHNvdXJjZXMgZnJvbSBodHRwOi8vZ2l0LmVubGlnaHRlbm1lbnQub3JnL2VubGlnaHRlbm1lbnQvbW9kdWxlcy9uZXdzLmdpdC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9wbGFjZXMvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcGxhY2VzL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmNDgzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9wbGFjZXMvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotSW5kZXg6IHBsYWNlcy9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwbGFjZXMub3JpZy9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTo1MTowMS4yNzY1NzQwMTcgKzAwMDAKLSsrKyBwbGFjZXMvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6NTI6MDcuMDk2NTc1ODEwICswMDAwCi1AQCAtMTAsNyArMTAsNyBAQAotIEFDX0NBTk9OSUNBTF9IT1NUCi0gQUNfSVNDX1BPU0lYCi0gCi0tQU1fSU5JVF9BVVRPTUFLRSgxLjgpCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbl0pCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcGxhY2VzX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3BsYWNlc19zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxODRmODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcGxhY2VzX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ0ODk1ZjI1M2MzMmYzOGUxODJkY2FmMzBmZThhMzUiCi0KLVBWID0gIjAuMS4wK3N2bnIke1NSQ1BWfSIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBhdXRvcG9pbnQgfHwgdG91Y2ggY29uZmlnLnJwYXRoCi19Ci0KLSMgQ2FsbHMgL3Vzci9iaW4vZWplY3QgZm9yIG1lZGlhCi1SUkVDT01NRU5EU18ke1BOfSArPSAiZWplY3QiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi0KLVBOQkxBQ0tMSVNUW3BsYWNlc10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3JhZ2Vfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcmFnZV9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhOTBmZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcmFnZV9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlJhZ2UgaXMgYSBtZWRpYSBjZW50ZXIgYXBwbGljYXRpb24gYmFzZWQgb24gRUZMIgotQVVUSE9SID0gIkNhcnN0ZW4gJ1RoZSBSYXN0ZXJtYW4nIEhhaXR6bGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5yYXN0ZXJtYW4uY29tIgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDQ4OTVmMjUzYzMyZjM4ZTE4MmRjYWYzMGZlOGEzNSIKLURFUEVORFMgPSAiZW1vdGlvbiBldmFzIGVjb3JlIGVkamUiCi1TRUNUSU9OID0gIngxMS9tdWx0aW1lZGlhIgotUFYgPSAiMC4zLjAuMDQyK3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotCi1pbmhlcml0IGUKLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bms7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtzY21kYXRhPWtlZXAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotUE5CTEFDS0xJU1RbcmFnZV0gPz0gImlmIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBtb2R1bGVzIHdpdGggRTE4LCB0aGVuIHlvdSBuZWVkIHRvIHVwZGF0ZSBpdCB0byBnaXQgcmVjaXBlIGZldGNoaW5nIG5ld2VyIHNvdXJjZXMgZnJvbSAgaHR0cDovL2dpdC5lbmxpZ2h0ZW5tZW50Lm9yZy9hcHBzL3JhZ2UuZ2l0LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3JhaW4vY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcmFpbi9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Yzg1ZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvcmFpbi9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogY3B1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNwdS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjM5OjQ4LjAwMDAwMDAwMCArMDAwMAotKysrIGNwdS9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTozOTo1NS4zMjA1NTU4NjggKzAwMDAKLUBAIC0xMCw3ICsxMCw3IEBACi0gQUNfQ0FOT05JQ0FMX0hPU1QKLSBBQ19JU0NfUE9TSVgKLSAKLS1BTV9JTklUX0FVVE9NQUtFKDEuNikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9yYWluX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3JhaW5fc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGFhMmVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3JhaW5fc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotTElDRU5TRSA9ICJNSVQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctUExBSU47bWQ1PWM5MTBiNjQ1ZWRhMDAwNWNjZWM0NmY3NTIwM2RjOTZlIgotCi1QViA9ICIwLjAuMytzdm5yJHtTUkNQVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotcmVxdWlyZSBlLW1vZHVsZS5pbmMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIC9wby9kICR7U30vY29uZmlndXJlLmFjCi0gICAgc2VkIC1pIC1lIHM6XCBwbzo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi0KLVBOQkxBQ0tMSVNUW3JhaW5dID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGUtd20gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9zY3JlZW5zaG90L3NjcmVlbnNob3QtZml4LW1raW5zdGFsbGRpcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy9zY3JlZW5zaG90L3NjcmVlbnNob3QtZml4LW1raW5zdGFsbGRpcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZjExNDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvc2NyZWVuc2hvdC9zY3JlZW5zaG90LWZpeC1ta2luc3RhbGxkaXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRnJvbTogRG1pdHJ5IEVyZW1pbi1Tb2xlbmlrb3YgPGRiYXJ5c2hrb3ZAZ21haWwuY29tPgotU3ViamVjdDogZml4IHNjcmVlbnNob3QgcG8vIGJ1aWxkaW5nCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU29tZWhvdyBjb25maWd1cmUgZG9lc24ndCBzdWJzdGl0dXRlIEBNS0lOU1RBTExESVJTQCBieSBkZWZhdWx0IGFueW1vcmUsCi1ob3dldmVyIHRoaXMgc3Vic3RpdHV0aW9uIGlzIHJlcXVpcmVkIGZvciBwby9NYWtlZmlsZQotCi1GaXggdGhhdCBieSBjYWxsaW5nIEFNX01LSU5TVEFMTERJUlMgZnJvbSBjb25maWd1cmUuYWMKLQotU2lnbmVkLW9mZi1ieTogRG1pdHJ5IEVyZW1pbi1Tb2xlbmlrb3YgPGRiYXJ5c2hrb3ZAZ21haWwuY29tPgotCi1JbmRleDogRS1NT0RVTEVTLUVYVFJBL3NjcmVlbnNob3QvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gRS1NT0RVTEVTLUVYVFJBLm9yaWcvc2NyZWVuc2hvdC9jb25maWd1cmUuYWMJMjAxMS0wOC0xNyAxNTo0OToyMi4wMDAwMDAwMDAgKzA0MDAKLSsrKyBFLU1PRFVMRVMtRVhUUkEvc2NyZWVuc2hvdC9jb25maWd1cmUuYWMJMjAxMS0wOC0xNyAxNTo0OTozNC4wMDAwMDAwMDAgKzA0MDAKLUBAIC0yNCw2ICsyNCw3IEBACi0gZGVmaW5lKFtBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJR10sIFs6XSlkbmwKLSBBQ19QUk9HX0xJQlRPT0wKLSAKLStBTV9NS0lOU1RBTExESVJTCi0gbTRfaWZkZWYoW0FNX0dOVV9HRVRURVhUX1ZFUlNJT05dLCBbCi0gQU1fR05VX0dFVFRFWFRfVkVSU0lPTihbMC4xNF0pCi0gXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3NjcmVlbnNob3Rfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvc2NyZWVuc2hvdF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzM2Y3NzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvc2NyZWVuc2hvdF9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1MSUNFTlNFID0gIk1JVCIKLVBWID0gIjAuMy4wK3N2bnIke1NSQ1JFVn0iCi1QUiA9ICIke0lOQ19QUn0uMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0NDg5NWYyNTNjMzJmMzhlMTgyZGNhZjMwZmU4YTM1IgotU1JDX1VSSSArPSAiZmlsZTovL3NjcmVlbnNob3QtZml4LW1raW5zdGFsbGRpcnMucGF0Y2giCi0KLXJlcXVpcmUgZS1tb2R1bGUuaW5jCi0KLURFUEVORFMgKz0gImVtcHJpbnQiCi1SREVQRU5EU18ke1BOfSArPSAiZW1wcmludCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOkFDX01TR19FUlJPUihlbXByaW50IG5vdCBmb3VuZCk6ZWNobyBmb286ZycgJHtTfS9jb25maWd1cmUuYWMKLX0KLQotUE5CTEFDS0xJU1Rbc2NyZWVuc2hvdF0gPz0gImRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZW1wcmludCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3Rlcm1pbm9sb2d5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3Rlcm1pbm9sb2d5LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRmNzg5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy90ZXJtaW5vbG9neS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFbmxpZ2h0ZW5tZW50IFRlcm1pbmFsIEVtdWxhdG9yIgotTElDRU5TRSA9ICJNSVQgJiBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZWZhYzZiMDViMzI1NmJhN2RhNjYzMDFhYzFlZTZjNiIKLURFUEVORFMgPSAiZXZhcyBlY29yZSBlZGplIGVsZW1lbnRhcnkgZWluYSBlZXQgZW1vdGlvbiIKLQotaW5oZXJpdCBlIGdldHRleHQKLQotIyBCZWNhdXNlIGxhdGVzdCByZWxlYXNlIHdlIGhhdmUgaXMgMC4xLjAgd2hpY2ggc29ydHMgbG93ZXIgdGhlbiAwLjEuMCtzdm5yJHtTUkNQVn0gYWxyZWFkeSBpbiBmZWVkcwotUEUgPSAiMiIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLXdpdGgtZWRqZS1jYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZWRqZV9jYyBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICJcCi0gICAgJHtkYXRhZGlyfS9pY29ucy90ZXJtaW5vbG9neS5wbmcgXAotIgotCi0jIGRvZXNuJ3Qgc3RhcnQgd2l0aG91dCBvd24gdGhlbWUKLSMgRVJSPDc3MD46dGVybWlub2xvZ3kgdXRpbHMuYzoyNiB0aGVtZV9hcHBseSgpIENvdWxkIG5vdCBsb2FkIGFueSB0aGVtZSBmb3IgZ3JvdXA9dGVybWlub2xvZ3kvYmFja2dyb3VuZDogTm8gRXJyb3IKLSMgQ1JJPDc3MD46dGVybWlub2xvZ3kgbWFpbi5jOjQ0OCBlbG1fbWFpbigpIENvdWxkbid0IGZpbmQgdGVybWlub2xvZ3kgdGhlbWUhIEZvcmdvdCAnbWFrZSBpbnN0YWxsJz8KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS10aGVtZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy90ZXJtaW5vbG9neV8wLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3Rlcm1pbm9sb2d5XzAuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2RkMjIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3Rlcm1pbm9sb2d5XzAuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgPSAiXAotICAgICR7RV9SRUxFQVNFU30vYXBwcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtTUkNWRVJ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjN2NlMmU4ZWJjNWYzMTFkM2QzZjU5ZWNmZGYxOGY2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZmI4NjRhMTQyMDI0OTBlOTE4MWM1ZjI1NGE3ZTc3MjAxOTIxNmEzYWE3NWMzOTUyZDBmMTJjZDMyMTEzODk2IgotCi1QTkJMQUNLTElTVFt0ZXJtaW5vbG9neV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWxlbWVudGFyeSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3VwdGltZS9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy91cHRpbWUvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2M4NWRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZTE3L3VwdGltZS9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogY3B1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNwdS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjM5OjQ4LjAwMDAwMDAwMCArMDAwMAotKysrIGNwdS9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMTozOTo1NS4zMjA1NTU4NjggKzAwMDAKLUBAIC0xMCw3ICsxMCw3IEBACi0gQUNfQ0FOT05JQ0FMX0hPU1QKLSBBQ19JU0NfUE9TSVgKLSAKLS1BTV9JTklUX0FVVE9NQUtFKDEuNikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSBBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQotIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy91cHRpbWVfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lMTcvdXB0aW1lX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBkNDhhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2UxNy91cHRpbWVfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDQ4OTVmMjUzYzMyZjM4ZTE4MmRjYWYzMGZlOGEzNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT1jOTEwYjY0NWVkYTAwMDVjY2VjNDZmNzUyMDNkYzk2ZSIKLQotUFYgPSAiMC4wLjIrc3ZuciR7U1JDUkVWfSIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1yZXF1aXJlIGUtbW9kdWxlLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1QTkJMQUNLTElTVFt1cHRpbWVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGUtd20gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9henlfc3ZuLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvYXp5X3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiYzIwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9henlfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQXp5IGlzIGEgbGlicmFyeSBtZWFudCBmb3IgaW1wbGVtZW50aW5nIHJwYyBjbGllbnRzIGFuZCBzZXJ2ZXJzIGluIGEgc2ltcGxlIG1hbm5lci4iCi1ERVBFTkRTID0gInBrZ2NvbmZpZyB6bGliIG9wZW5zc2wgZWluYSBnbnV0bHMgZWNvcmUgbGlieG1sMiByZTJjLW5hdGl2ZSBteXNxbDUgYXp5LW5hdGl2ZSBnbGliLTIuMCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInBrZ2NvbmZpZy1uYXRpdmUgemxpYi1uYXRpdmUgb3BlbnNzbC1uYXRpdmUgZWluYS1uYXRpdmUgZ251dGxzLW5hdGl2ZSBlY29yZS1uYXRpdmUgbGlieG1sMi1uYXRpdmUgcmUyYy1uYXRpdmUgbXlzcWw1LW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1QViA9ICIxLjAuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICJyMiIKLQotU1JDUkVWID0gIiR7RUZMX1NSQ1JFVn0iCi0KLSMgdG8gcHJvdmlkZSBuYXRpdmUgbGVtb24gYmluYXJ5Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLW15c3FsLXRlc3RzIgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgc2VkIC1pICJzI1wuL2xlbW9uIyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9henlfbGVtb24jZyIgJHtTfS9zcmMvYmluL01ha2VmaWxlLmFtCi0gICAgc2VkIC1pICJzI1wkKHRvcF9idWlsZGRpcikvc3JjL2Jpbi9henlfcGFyc2VyIC1IIC1wIC1vIyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9henlfcGFyc2VyIC1IIC1wIC1vI2ciICR7U30vc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi0gICAgc2VkIC1pICJzI1wkKHRvcF9idWlsZGRpcikvc3JjL2Jpbi9henlfcGFyc2VyIC1lSG4gLW0jJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2F6eV9wYXJzZXIgLWVIbiAtbSNnIiAke1N9L3NyYy90ZXN0cy9pZGVudGkuY2EvTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zcmMvYmluL2xlbW9uICR7RH0vJHtiaW5kaXJ9L2F6eV9sZW1vbgotfQotCi1pbmhlcml0IGVmbAotCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rL1BST1RPO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLSMgYXp5LzJfMS4wLjArc3ZucjgyMDcwLXIyL2F6eS9zcmMvbGliL2V4dHJhcy9wdWdpeG1sLmNwcDozMzoKLSMgc3lzcm9vdHMvcWVtdWFybS91c3IvaW5jbHVkZS9jKysvNS4yLjAvYml0cy9iYXNpY19zdHJpbmcuaDo0NzgwOjU6IGVycm9yOiByZWZlcmVuY2UgdG8gJ2Jhc2ljX3N0cmluZycgaXMgYW1iaWd1b3VzCi0jICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+Ci0jICAgICBeCi1QTkJMQUNLTElTVFthenldID89ICJPTEQgYW5kIGRvZXNuJ3QgYnVpbGQgd2l0aCBnY2MtNSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Utd20taWxsdW1lLWRpY3QtcGxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZS13bS1pbGx1bWUtZGljdC1wbF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1N2FkY2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZS13bS1pbGx1bWUtZGljdC1wbF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlBvbGlzaCBkaWN0aW9uYXJ5IGZvciBJbGx1bWUga2V5Ym9hcmQiCi1TRUNUSU9OID0gIngxMS9kYXRhIgotU1JDUkVWID0gIjM4ZmRkOWJiMGQ4Mjk2ZTk4NGJiNjQ0MzQ2NjgwMWVlYTZmNjJmMDAiCi1QViA9ICIxLjArZ2l0ciR7U1JDUFZ9IgotUEUgPSAiMSIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjUyM2FiNTk4NmNjNzliNTJhOTBkMmFjM2Q1NDU0YTIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNoci1wcm9qZWN0Lm9yZy9yZXBvL3Noci10aGVtZXMuZ2l0O3Byb3RvY29sPWh0dHA7YnJhbmNoPW1hc3RlciIKLQotUyA9ICIke1dPUktESVJ9L2dpdC9lLXdtLyR7UE59IgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZW5saWdodGVubWVudC9tb2R1bGVzL2lsbHVtZS9kaWN0cy9Qb2xpc2guZGljIgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvaWxsdW1lL2RpY3RzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vUG9saXNoLmRpYyAgICAgICAgJHtEfSR7bGliZGlyfS9lbmxpZ2h0ZW5tZW50L21vZHVsZXMvaWxsdW1lL2RpY3RzL1BvbGlzaC5kaWMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vjb3JlL2ZpeC1lY29yZS1mYi1pbml0aWFsaXphdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vjb3JlL2ZpeC1lY29yZS1mYi1pbml0aWFsaXphdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU3NzNhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lY29yZS9maXgtZWNvcmUtZmItaW5pdGlhbGl6YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDY1NzU3MTE5N2M5ZDM2OWUxMmFlMzFiNjc3N2ExOTI5ZmUzNjgwZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI5IE9jdCAyMDExIDAwOjE2OjU1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVjb3JlLWZiOiBmaXggdHMgaW5pdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhlIHdob2xlIGVjb3JlLWZiIGluaXQgbG9naWMgaXMgc29tZXdoYXQgZmxhd2VkOyB3aXRoIHRoaXMgcGF0Y2ggd2UKLWdldCBhdCBsZWFzdCBhIHdvcmtpbmcgdG91Y2hzY3JlZW4gdy8gdHNsaWIgYWdhaW4uCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gZWNvcmUvc3JjL2xpYi9lY29yZV9mYi9lY29yZV9mYi5jIHwgICAgNCArKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGliL2Vjb3JlX2ZiL2Vjb3JlX2ZiLmMgYi9zcmMvbGliL2Vjb3JlX2ZiL2Vjb3JlX2ZiLmMKLWluZGV4IDViMmI4NGIuLmExOTA0YjMgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2Vjb3JlX2ZiL2Vjb3JlX2ZiLmMKLSsrKyBiL3NyYy9saWIvZWNvcmVfZmIvZWNvcmVfZmIuYwotQEAgLTQ2LDYgKzQ2LDkgQEAgZWNvcmVfZmJfaW5pdChjb25zdCBjaGFyICpuYW1lIF9fVU5VU0VEX18pCi0gICAgaWYgKCFlY29yZV9mYl92dF9pbml0KCkpCi0gICAgICAgcmV0dXJuIC0tX2Vjb3JlX2ZiX2luaXRfY291bnQ7Ci0gCi0rICAgaWYgKCFlY29yZV9mYl90c19pbml0KCkpCi0rICAgICAgcmV0dXJuIC0tX2Vjb3JlX2ZiX2luaXRfY291bnQ7Ci0rCi0gICAgaWYgKCFvbGRoYW5kKQotICAgICAgewotICAgICAgICAgb2xkaGFuZCA9IHNpZ25hbChTSUdJTlQsIG5vc2lnaW50KTsKLUBAIC03Nyw2ICs4MCw3IEBAIGVjb3JlX2ZiX3NodXRkb3duKHZvaWQpCi0gICAgICAgICBvbGRoYW5kID0gTlVMTDsKLSAgICAgIH0KLSAgICAKLSsgICBlY29yZV9mYl90c19zaHV0ZG93bigpOwotICAgIGVjb3JlX2ZiX3Z0X3NodXRkb3duKCk7Ci0gCi0gICAgcmV0dXJuIF9lY29yZV9mYl9pbml0X2NvdW50OwotLS0gCi0xLjcuOC42Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkYl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZGJfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzZhYmRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkYl9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkVkYiBpcyB0aGUgRW5saWdodGVubWVudCBkYXRhYmFzZSBsaWJyYXJ5IgotTElDRU5TRSA9ICJNSVQgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOGE3YzA4ZGYzYmMzMjgwMjA4Yjk1OWJlNzIxNWMyNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT1mNTljYWNjMDgyMzVhNTQ2YjBjMzRhNTQyMjEzMzAzNSIKLQotREVQRU5EUyA9ICJ6bGliIgotUFYgPSAiMS4wLjUuMDUwK3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotCi1pbmhlcml0IGVmbAotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzLC0tZGlzYWJsZS1uY3Vyc2VzLG5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiJHtFX1NWTn0vT0xEO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZGJ1cy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZGJ1cy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZDBlZTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWRidXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiREJ1cyBhbmQgSEFMIGNvbnZlbmllbmNlIHdyYXBwZXJzIGZvciBFRkwiCi1ERVBFTkRTID0gImRidXMgZWNvcmUgZWluYSIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTUwYjhjZWExM2RhY2M0YmYwMDUwOGE4Y2NlMTA3NGMiCi0KLWluaGVyaXQgZWZsCi0KLSMgLWRldiBhbmQgLWRiZyBwYWNrYWdlcyB3YW50cyAke1BOfSB3aGljaCBpcyBlbXB0eSBoZXJlCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLUlOQ19QUiA9ICJyMCIKLQotU1JDTkFNRSA9ICJlX2RidXMiCi0KLSMgaXQgbmVlZHMgdG8gYmUgZGlzYWJsZWQsIGJlY2F1c2UgY3JlYXRlcyBjaXJjdWxhciBkZXBlbmRlbmN5IG9uIGVsZW1lbnRhcnkKLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWVkYnVzLXBlcmZvcm1hbmNlLXRlc3QiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1lbm90aWZ5ICR7UE59LWVkYnVzICR7UE59LWVubSAke1BOfS1laGFsICR7UE59LWVjb25ubWFuICR7UE59LWVvZm9ubyAke1BOfS1ldWtpdCAke1BOfS1lYmx1ZXoiCi1GSUxFU18ke1BOfS1lbm90aWZ5ID0gIiR7bGliZGlyfS9saWJlbm90aWZ5LnNvLiogJHtiaW5kaXJ9L2Utbm90aWZ5LXNlbmQiCi1GSUxFU18ke1BOfS1lZGJ1cyA9ICIke2xpYmRpcn0vbGliZWRidXMuc28uKiIKLUZJTEVTXyR7UE59LWVubSA9ICIke2xpYmRpcn0vbGliZW5tLnNvLioiCi1GSUxFU18ke1BOfS1laGFsID0gIiR7bGliZGlyfS9saWJlaGFsLnNvLioiCi1GSUxFU18ke1BOfS1lY29ubm1hbiA9ICIke2xpYmRpcn0vbGliZWNvbm5tYW4uc28uKiAke2xpYmRpcn0vbGliZWNvbm5tYW4wXzd4LnNvLioiCi1GSUxFU18ke1BOfS1lb2Zvbm8gPSAiJHtsaWJkaXJ9L2xpYmVvZm9uby5zby4qIgotRklMRVNfJHtQTn0tZXVraXQgPSAiJHtsaWJkaXJ9L2xpYmV1a2l0LnNvLioiCi1GSUxFU18ke1BOfS1lYmx1ZXogPSAiJHtsaWJkaXJ9L2xpYmVibHVlei5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZV9kYnVzL2xvZ28ucG5nIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZGJ1c18xLjcuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkYnVzXzEuNy45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODAzM2FjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkYnVzXzEuNy45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgPSAiXAotICAgICR7RV9NSVJST1J9LyR7U1JDTkFNRX0tJHtTUkNWRVJ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjcyZGExNGU1NjY0YWFkOGM0NWVlZWNhMGUzZmY1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzI4YzRjZjE0MjQ2MjljYjY3YzgzNjg5Y2NjMWY5NTk2N2FiY2I0YzAzZGZmZDQzN2U5M2I3OTlmZjE1MWMxIgotCi1QTkJMQUNLTElTVFtlZGJ1c10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWNvcmUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2VkYnVzXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlaW5hIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlZGJ1c10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlZGJ1cyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZWRidXNdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWRidXMtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWRqZS1mcHUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWRqZS1mcHUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmE2ZGFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VkamUtZnB1LmluYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotCi1kZWYgZ2V0X2VkamVfZnB1X3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcgXToKLSAgICAgICAgcmV0dXJuICItLWVuYWJsZS1maXhlZC1wb2ludCIKLSAgICByZXR1cm4gIiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWZsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZDIxYmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWZsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI5MCArMCwwIEBACi1TVU1NQVJZID0gIkVGTCIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEICYgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYTc4NzMyMTA1MjNkY2ZkMzI2OTRiOTQyODZkY2E2MCIKLQotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZnJlZXR5cGUtbmF0aXZlIGxpYnhleHQtbmF0aXZlIGxpYnBuZy1uYXRpdmUganBlZy1uYXRpdmUgdGlmZi1uYXRpdmUgbGliZnJpYmlkaS1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIGRidXMtbmF0aXZlIG9wZW5zc2wtbmF0aXZlIgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IHRzbGliIGN1cmwgZ2xpYi0yLjAgZ251dGxzIHBrZ2NvbmZpZyB6bGliIGpwZWcgb3BlbnNzbCBsaWJzbmRmaWxlMSBkYnVzIGxpYmV4aWYgbGlicnN2ZyBmcmVldHlwZSBsaWJwbmcgdGlmZiBsaWJ4ZXh0IHZpcnR1YWwvbGlieDExIGxpYnhkYW1hZ2UgbGlieHJlbmRlciBmb250Y29uZmlnIGxpYmZyaWJpZGkgZ2lmbGliIHVkZXYgbGlieGN1cnNvciBsaWJ4Y29tcG9zaXRlIGxpYnhpbmVyYW1hIGxpYnhyYW5kciBsaWJ4dHN0IGxpYnhzY3Juc2F2ZXIgZWZsLW5hdGl2ZSB1dGlsLWxpbnV4IGxpYnVud2luZCIKLQotaW5oZXJpdCBlZmwgZ2V0dGV4dCBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVBST1ZJREVTICs9ICJlY29yZSBlZGplIGVldCBlZXplIGVmcmVldCBlaW5hIGVpbyBlbWJyeW8gZW1vdGlvbiBldGh1bWIgZXZhcyBlbGRidXMiCi0KLSMgd2UgZG9uJ3QgaGF2ZSBidWxsZXQgZm9yIHBoeXNpY3MKLSMgWW91IGhhdmUgY2hvc2VuIHRvIGRpc2FibGUgcGh5c2ljcyBzdXBwb3J0LiBUaGlzIGRpc2FibGVzIGxvdHMgb2YKLSMgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBpcyBlZmZlY3RpdmVseSBuZXZlciB0ZXN0ZWQuIFlvdSBhcmUgZ29pbmcKLSMgdG8gZmluZCBmZWF0dXJlcyB0aGF0IHN1ZGRlbmx5IGRvbid0IHdvcmsgYW5kIGFzIGEgcmVzdWx0IGNhdXNlCi0jIGEgc2VyaWVzIG9mIGJyZWFrYWdlcy4gVGhpcyBpcyBzaW1wbHkgbm90IHRlc3RlZCBzbyB5b3UgYXJlIG9uCi0jIHlvdXIgb3duIGluIHRlcm1zIG9mIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgd29ya3MgaWYgeW91IGRvIHRoaXMKLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1waHlzaWNzIFwKLSAgICAtLWVuYWJsZS1pLXJlYWxseS1rbm93LXdoYXQtaS1hbS1kb2luZy1hbmQtdGhhdC10aGlzLXdpbGwtcHJvYmFibHktYnJlYWstdGhpbmdzLWFuZC1pLXdpbGwtZml4LXRoZW0tbXlzZWxmLWFuZC1zZW5kLXBhdGNoZXMtYWJhIFwKLSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgXAotICAgIC0td2l0aC1lb2xpYW4tZ2VuPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lb2xpYW5fZ2VuIFwKLSAgICAtLXdpdGgtZW9saWFuLWN4eD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZW9saWFuX2N4eCBcCi0gICAgLS13aXRoLWVsdWE9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VsdWEgXAotIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAtLWRpc2FibGUtZm9udGNvbmZpZyBcCi0gICAgLS1kaXNhYmxlLWF1ZGlvIFwKLSAgICAtLWRpc2FibGUtcGh5c2ljcyBcCi0gICAgLS1kaXNhYmxlLW11bHRpc2Vuc2UgXAotICAgIC0tZGlzYWJsZS1jc2VydmUgXAotICAgIC0tZGlzYWJsZS1saWJlZXplIFwKLSAgICAtLXdpdGgteDExPW5vbmUgXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItYm1wIFwKLSAgICAtLWRpc2FibGUtaW1hZ2UtbG9hZGVyLWVldCBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci1nZW5lcmljIFwKLSAgICAtLWRpc2FibGUtaW1hZ2UtbG9hZGVyLWdpZiBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci1pY28gXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItanAyayBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci1wbWFwcyBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci1wc2QgXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItdGdhIFwKLSAgICAtLWRpc2FibGUtaW1hZ2UtbG9hZGVyLXdibXAgXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItd2VicCBcCi0gICAgLS1kaXNhYmxlLWltYWdlLWxvYWRlci14cG0gXAotICAgIC0tZGlzYWJsZS1pbWFnZS1sb2FkZXItdGd2IFwKLSAgICAtLWRpc2FibGUtaW1hZ2UtbG9hZGVyLWRkcyBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gImVnbCBvcGVuZ2wtZXMgZ3N0cmVhbWVyMSBwdWxzZWF1ZGlvIGx1YWppdCAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgZCl9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAibHVhaml0IgotCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQgLS1lbmFibGUtd2F5bGFuZC1pdmktc2hlbGwsLS1kaXNhYmxlLXdheWxhbmQgLS1kaXNhYmxlLXdheWxhbmQtaXZpLXNoZWxsLHdheWxhbmQiCi1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCi0jIHNvcnQgb2YgdHJpLXN0YXRlCi1QQUNLQUdFQ09ORklHW29wZW5nbC1mdWxsXSA9ICItLXdpdGgtb3BlbmdsPWZ1bGwsLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW29wZW5nbC1lc10gPSAiLS13aXRoLW9wZW5nbD1lcywsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsLW5vbmVdID0gIi0td2l0aC1vcGVuZ2w9bm9uZSwsIgotIyBiZSBhd2FyZSB3aGVuIGVuYWJsaW5nIHRoaXMgZm9yIGVmbC1uYXRpdmUsIHdlIGRvbid0IHByb3ZpZGUgZ2NjLW5hdGl2ZSBzbyB5b3UgbmVlZCB0byBtYWtlCi0jIHN1cmUgdGhhdCBhbGwgeW91ciBidWlsZGVycyBoYXZlIGcrKyB3aGljaCBzdXBwb3J0cyAtc3RkPWdudSsrMTEKLVBBQ0tBR0VDT05GSUdbYysrMTFdID0gIi0tZW5hYmxlLWN4eC1iaW5kaW5ncywtLWRpc2FibGUtY3h4LWJpbmRpbmdzIgotUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXJdID0gIi0tZW5hYmxlLWdzdHJlYW1lciwtLWRpc2FibGUtZ3N0cmVhbWVyLGdzdHJlYW1lciIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyMV0gPSAiLS1lbmFibGUtZ3N0cmVhbWVyMSwtLWRpc2FibGUtZ3N0cmVhbWVyMSxnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW2x1YWppdF0gPSAiLS1kaXNhYmxlLWx1YS1vbGQsLS1lbmFibGUtbHVhLW9sZCxsdWFqaXQiCi1QQUNLQUdFQ09ORklHW2x1YS1vbGRdID0gIi0tZW5hYmxlLWx1YS1vbGQsLS1kaXNhYmxlLWx1YS1vbGQsbHVhIgotUEFDS0FHRUNPTkZJR1thdmFoaV0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgotIyBjdXJyZW50bHkgd2UgZG9uJ3QgcHJvdmlkZSBkb3h5Z2VuLW5hdGl2ZQotUEFDS0FHRUNPTkZJR1tkb2NdID0gIi0tZW5hYmxlLWRvYywtLWRpc2FibGUtZG9jLGRveHlnZW4tbmF0aXZlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGRvbid0IHNoaXAgcHJlY29tcGlsZWQgbHVhIGZpbGVzCi0gICAgcm0gLWYgJHtkYXRhZGlyfS9lbHVhLyovKi5sdWFjCi19Ci0KLVBBQ0tBR0VTID0rICJlZGplLXV0aWxzIGVtYnJ5by11dGlscyBlbWJyeW8tdGVzdHMgZWZyZWV0LXRyYXNoIGVmcmVldC1taW1lIGxpYmVldCBsaWJlZnJlZXQgZWNvcmUtYXVkaW8gZWNvcmUtaW5wdXQtZXZhcyBlY29yZS1pbnB1dCBlY29yZS1pbWYtZXZhcyBlY29yZS1pbWYgZWNvcmUtZmlsZSBlY29yZS1jb24gZWNvcmUtaXBjIGVjb3JlLXggZWNvcmUtZXZhcyBsaWJlbW90aW9uIGVvIGVjb3JlIGVkamUgZWV0IGVlemUgZWZyZWV0IGVpbmEgZWlvIGVtYnJ5byBlbW90aW9uIGV0aHVtYiBldmFzIGVsZGJ1cyBlbHVhIgotCi0jIHVwZ3JhZGUgcGF0aCBmcm9tIDEuNwotREVCSUFOX05PQVVUT05BTUVfZWNvcmUtYXVkaW8gPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX2Vjb3JlLWlucHV0LWV2YXMgPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX2Vjb3JlLWlucHV0ID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV9lY29yZS1pbWYtZXZhcyA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfZWNvcmUtaW1mID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV9lY29yZS1maWxlID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV9lY29yZS1jb24gPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX2Vjb3JlLWlwYyA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfZWNvcmUteCA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfZWNvcmUtZXZhcyA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfZW1icnlvID0gIjEiCi0KLUFMTE9XX0VNUFRZX2Vjb3JlID0gIjEiCi1SREVQRU5EU19lY29yZSA9ICJlY29yZS1hdWRpbyBlY29yZS1pbnB1dC1ldmFzIGVjb3JlLWlucHV0IGVjb3JlLWltZi1ldmFzIGVjb3JlLWltZiBlY29yZS1maWxlIGVjb3JlLWNvbiBlY29yZS1pcGMgZWNvcmUteCBlY29yZS1ldmFzIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgZm9yIHBsdWdpbl90eXBlIGluICJlbmdpbmVzIGxvYWRlcnMgc2F2ZXJzIi5zcGxpdCgpOgotICAgICAgICBiYi5ub3RlKCAic3BsaXR0aW5nIHBhY2thZ2VzIGZvciBldmFzICVzLi4uIiAlIHBsdWdpbl90eXBlICkKLSAgICAgICAgYmFzZWRpciA9IGQuZXhwYW5kKCAnJHtsaWJkaXJ9L2V2YXMvbW9kdWxlcy8lcycgJSBwbHVnaW5fdHlwZSkKLQotICAgICAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYXNlZGlyLCAnXiguKiknLAotICAgICAgICBvdXRwdXRfcGF0dGVybiA9ICdldmFzLScgKyBwbHVnaW5fdHlwZVs6LTFdICsgIi0lcyIsCi0gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V2YXMgbW9kdWxlICVzJywKLSAgICAgICAgYWxsb3dfZGlycz1UcnVlLCByZWN1cnNpdmU9RmFsc2UsIGV4dHJhX2RlcGVuZHM9IiIgKQotCi0gICAgICAgIHBsdWdpbl90eXBlID0gImNzZXJ2ZTIiCi0gICAgICAgIGJiLm5vdGUoICJzcGxpdHRpbmcgcGFja2FnZXMgZm9yIGV2YXMgJXMuLi4iICUgcGx1Z2luX3R5cGUgKQotICAgICAgICBiYXNlZGlyID0gZC5leHBhbmQoICcke2xpYmRpcn0vZXZhcy8lcy9sb2FkZXJzJyAlIHBsdWdpbl90eXBlKQotCi0gICAgICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhc2VkaXIsICdeKC4qKScsCi0gICAgICAgIG91dHB1dF9wYXR0ZXJuID0gJ2V2YXMtJyArIHBsdWdpbl90eXBlICsgIi0lcyIsCi0gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V2YXMgY3NldmVyMiBsb2FkZXIgbW9kdWxlICVzJywKLSAgICAgICAgYWxsb3dfZGlycz1UcnVlLCByZWN1cnNpdmU9RmFsc2UsIGV4dHJhX2RlcGVuZHM9IiIgKQotfQotCi1QQUNLQUdFUyArPSAiZXZhcy1sb2FkZXItcG5nIGV2YXMtZW5naW5lLXNvZnR3YXJlLWdlbmVyaWMgZXZhcy1lbmdpbmUtZmIiCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeZXZhcy1lbmdpbmUtLiogXmV2YXMtbG9hZGVyLS4qIF5ldmFzLXNhdmVyLS4qIF5ldmFzLWNzZXJ2ZTItLioiCi0KLSMgUEFDS0FHRVNfRFlOQU1JQyArIGRvX3NwbGl0X3BhY2thZ2VzIGlzbid0IHVzZWQgZm9yIGFsbCBsaWJlIGxpYnMsCi0jIGJlY2F1c2UgUEFDS0FHRVNfRFlOQU1JQyB3b3VsZCBiZSBjYXRjaGluZyB0b28gbWFueSBwYXR0ZXJucwotIyAob3IgbmVlZCB0byBsaXN0IGFsbCBwb3NzaWJsZSBwcmVmaXhlcykgYW5kIG5vdCBhbGwgb3JpZ2luYWwgcGFja2FnZXMKLSMgd2VyZSBzcGxpdHRlZCBsaWtlIHRoYXQsIHNvIGl0IHdvdWxkIG5lZWQgUkNPTkZMSUNUUy9SUFJPVklERVMvUlJFUExBQ0VTCi0jIGNvbWJvcyBhdCBsZWFzdCBpbiBmZXcgcGxhY2VzIGZvciB1cGdyYWRlIHBhdGguCi0KLUZJTEVTX2VmcmVldC10cmFzaCA9ICIgXAotICAgICR7bGliZGlyfS9saWJlZnJlZXRfdHJhc2gke1NPTElCU30gXAotIgotRklMRVNfZWZyZWV0LW1pbWUgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZWZyZWV0X21pbWUke1NPTElCU30gXAotIgotRklMRVNfbGliZWV0ID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYmVldCR7U09MSUJTfSBcCi0iCi1GSUxFU19saWJlZnJlZXQgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZWZyZWV0JHtTT0xJQlN9IFwKLSIKLUZJTEVTX2Vjb3JlLWF1ZGlvID0gIlwKLSAgICAke2xpYmRpcn0vbGliZWNvcmVfYXVkaW8ke1NPTElCU30gXAotIgotRklMRVNfZWNvcmUtaW5wdXQtZXZhcyA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYmVjb3JlX2lucHV0X2V2YXMke1NPTElCU30gXAotIgotRklMRVNfZWNvcmUtaW5wdXQgPSAiXAotICAgICR7bGliZGlyfS9saWJlY29yZV9pbnB1dCR7U09MSUJTfSBcCi0iCi1GSUxFU19lY29yZS1pbWYtZXZhcyA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYmVjb3JlX2ltZl9ldmFzJHtTT0xJQlN9IFwKLSAgICAke2xpYmRpcn0vZWNvcmUtaW1mL21vZHVsZXMvKi8qL21vZHVsZS5zbyBcCi0iCi1GSUxFU19lY29yZS1pbWYgPSAiXAotICAgICR7bGliZGlyfS9saWJlY29yZV9pbWYke1NPTElCU30gXAotIgotCi1GSUxFU19lY29yZS1maWxlID0gIlwKLSAgICAke2xpYmRpcn0vbGliZWNvcmVfZmlsZSR7U09MSUJTfSBcCi0iCi1GSUxFU19lY29yZS1jb24gPSAiXAotICAgICR7bGliZGlyfS9saWJlY29yZV9jb24ke1NPTElCU30gXAotIgotRklMRVNfZWNvcmUtaXBjID0gIlwKLSAgICAke2xpYmRpcn0vbGliZWNvcmVfaXBjJHtTT0xJQlN9IFwKLSIKLUZJTEVTX2Vjb3JlLXggPSAiXAotICAgICR7bGliZGlyfS9saWJlY29yZV94JHtTT0xJQlN9IFwKLSAgICAke2xpYmRpcn0vZWNvcmVfeC9iaW4vdi0qL2Vjb3JlX3hfdnN5bmMgXAotIgotRklMRVNfZWNvcmUtZXZhcyA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYmVjb3JlX2V2YXMke1NPTElCU30gXAotICAgICR7bGliZGlyfS9lY29yZS1ldmFzL2VuZ2luZXMvKi8qL21vZHVsZS5zbyBcCi0iCi1GSUxFU19laW8gPSAiXAotICAgICR7bGliZGlyfS9saWJlaW8ke1NPTElCU30gXAotIgotRklMRVNfZWluYSA9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYmVpbmEke1NPTElCU30gXAotICAgICR7YmluZGlyfS9laW5hLWJlbmNoLWNtcCBcCi0iCi1GSUxFU19lZGplLXV0aWxzID0gIlwKLSAgICAke2JpbmRpcn0vZWRqZV8qIFwKLSAgICAke2RhdGFkaXJ9L2VkamUvaW5jbHVkZS9lZGplLmluYyBcCi0iCi1GSUxFU19lbGRidXMgPSAiXAotICAgICR7bGliZGlyfS9saWJlbGRidXMke1NPTElCU30gXAotIgotRklMRVNfZW8gPSAiXAotICAgICR7bGliZGlyfS9saWJlbyR7U09MSUJTfSBcCi0iCi1GSUxFU19saWJlbW90aW9uID0gIlwKLSAgICAke2xpYmRpcn0vbGliZW1vdGlvbiR7U09MSUJTfSBcCi0iCi1GSUxFU19lZnJlZXQgPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qRWZyZWV0KiBcCi0gICAgJHtsaWJkaXJ9L2VmcmVldC8qL2VmcmVldCpjcmVhdGUgXAotICAgICR7YmluZGlyfS9lZnJlZXRkIFwKLSAgICAke2RhdGFkaXJ9L2VmcmVldCBcCi0iCi1GSUxFU19lZXQgPSAiIFwKLSAgICAke2JpbmRpcn0vZWV0IFwKLSAgICAke2JpbmRpcn0vZWV0cGFjayBcCi0gICAgJHtiaW5kaXJ9L3ZpZWV0IFwKLSAgICAke2JpbmRpcn0vZGlmZmVldCBcCi0gICAgJHtsaWJkaXJ9L2xpYmVldCR7U09MSUJTfSBcCi0iCi1GSUxFU19lbW90aW9uID0gIiBcCi0gICAgJHtkYXRhZGlyfS9lbW90aW9uIFwKLSAgICAke2xpYmRpcn0vZW1vdGlvbi9tb2R1bGVzL2dzdHJlYW1lcjEvKi9tb2R1bGUuc28gXAotIgotRklMRVNfZW1icnlvLXRlc3RzID0gIiBcCi0gICAgJHtkYXRhZGlyfS9lbWJyeW8vIFwKLSIKLUZJTEVTX2VtYnJ5by11dGlscyA9ICIgXAotICAgICR7YmluZGRpcn0vZW1icnlvXyogXAotIgotRklMRVNfZW1icnlvID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYmVtYnJ5byR7U09MSUJTfSBcCi0iCi1GSUxFU19ldGh1bWIgPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qRXRodW1iKiBcCi0gICAgJHtsaWJkaXJ9L2xpYmV0aHVtYiR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L2xpYmV0aHVtYl9jbGllbnQke1NPTElCU30gXAotICAgICR7YmluZGlyfS9ldGh1bWJkIFwKLSAgICAke2JpbmRpcn0vZXRodW1iZF9jbGllbnQgXAotICAgICR7YmluZGlyfS9ldGh1bWIgXAotICAgICR7bGliZGlyfS9ldGh1bWIvKi8qLyovbW9kdWxlLnNvIFwKLSAgICAke2xpYmRpcn0vZXRodW1iLyovKi8qLyouZWRqIFwKLSAgICAke2xpYmRpcn0vZXRodW1iX2NsaWVudC91dGlscy8qL2V0aHVtYmRfc2xhdmUgXAotICAgICR7ZGF0YWRpcn0vZXRodW1iKiBcCi0iCi1GSUxFU19lY29yZSA9ICIgXAotICAgICR7bGliZGlyfS9saWJlY29yZSR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L2Vjb3JlKi8qLyovKi9tb2R1bGUuc28gXAotICAgICR7ZGF0YWRpcn0vZWNvcmUqIFwKLSIKLUZJTEVTX2V2YXMgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZXZhcyR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L2V2YXMqLyovKi8qLyovbW9kdWxlLnNvIFwKLSAgICAke2xpYmRpcn0vZXZhcyovKi8qLyovKi8qLmVkaiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvY3NlcnZlMi9iaW4vKi9ldmFzX2NzZXJ2ZTIqIFwKLSAgICAke2RhdGFkaXJ9L2V2YXMqIFwKLSAgICAke2JpbmRpcn0vZXZhc19jc2VydmUyXyogXAotIgotCi1GSUxFU19lZXplID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYmVlemUke1NPTElCU30gXAotICAgICR7bGliZGlyfS9lZXplKi8qLyovKi8qL21vZHVsZS5zbyBcCi0gICAgJHtkYXRhZGlyfS9lZXplIFwKLSAgICAke2JpbmRpcn0vZWV6ZV8qIFwKLSIKLUZJTEVTX2VkamUgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZWRqZSR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L2VkamUqLyovKi8qL21vZHVsZS5zbyBcCi0gICAgJHtsaWJkaXJ9L2VkamUvdXRpbHMvKi9lcHAgXAotICAgICR7ZGF0YWRpcn0vZWRqZSBcCi0gICAgJHtkYXRhZGlyfS9taW1lIFwKLSIKLUZJTEVTX2VsdWEgPSAiIFwKLSAgICAke2JpbmRpcn0vZWx1YSBcCi0gICAgJHtkYXRhZGlyfS9lbHVhIFwKLSIKLUZJTEVTXyR7UE59LWRiZyArPSAiIFwKLSAgICAke2xpYmRpcn0vZWZyZWV0LyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vZWNvcmUqLyovKi8qLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9L2Vjb3JlKi8qLyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vZXZhcyovKi8qLyovKi8uZGVidWcgXAotICAgICR7bGliZGlyfS9ldmFzL2NzZXJ2ZTIvYmluLyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vZWV6ZSovKi8qLyovKi8uZGVidWcgXAotICAgICR7bGliZGlyfS9lZGplKi8qLyovKi8uZGVidWcgXAotICAgICR7bGliZGlyfS9lZGplL3V0aWxzLyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vZXRodW1iLyovKi8qLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9L2V0aHVtYl9jbGllbnQvdXRpbHMvKi8uZGVidWcgXAotICAgICR7bGliZGlyfS9lbW90aW9uL21vZHVsZXMvZ3N0cmVhbWVyMS8qLy5kZWJ1ZyBcCi0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L2NtYWtlIFwKLSAgICAke2xpYmRpcn0vZWNvcmUqLyovKi8qL21vZHVsZS5sYSBcCi0gICAgJHtsaWJkaXJ9L2V2YXMqLyovKi8qLyovbW9kdWxlLmxhIFwKLSAgICAke2xpYmRpcn0vZXRodW1iKi8qLyovKi9tb2R1bGUubGEgXAotICAgICR7bGliZGlyfS9lZXplKi8qLyovKi8qL21vZHVsZS5sYSBcCi0gICAgJHtsaWJkaXJ9L2VkamUqLyovKi8qL21vZHVsZS5sYSBcCi0gICAgJHtsaWJkaXJ9L2Vtb3Rpb24vbW9kdWxlcy9nc3RyZWFtZXIxLyovbW9kdWxlLmxhIFwKLSAgICAke2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWQgXAotICAgICR7ZGF0YWRpcn0vZW8vZ2RiIFwKLSAgICAke2JpbmRpcn0vZWxkYnVzLWNvZGVnZW4gXAotIgotCi1QTkJMQUNLTElTVFtlZmxdID89ICJEZXBlbmRzIG9uIGJyb2tlbiBlZmwtbmF0aXZlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotUE5CTEFDS0xJU1RbZWZsLW5hdGl2ZV0gPz0gIkJyb2tlbjogZmFpbHMgdG8gYnVpbGQgd2l0aCBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTM4MjQwLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC1jaGVjay1mb3ItWHByaW50LWV4dGVuc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC1jaGVjay1mb3ItWHByaW50LWV4dGVuc2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4NWY4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZmwvMDAwMS1jb25maWd1cmUuYWMtRG9uLXQtY2hlY2stZm9yLVhwcmludC1leHRlbnNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDI3YWVkY2RjZGFmYmYwNzlkYzAyMmJhYjcyZWMzMDljZjdkYjMxNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEwIEphbiAyMDE0IDE3OjA3OjEzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBjb25maWd1cmUuYWM6IERvbid0IGNoZWNrIGZvciBYcHJpbnQgZXh0ZW5zaW9uCi0KLSogaXQncyBsb25nIGdvbmUKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzEwOGIxYi4uZjAxOWJmYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQ3NCw3ICszNDc0LDYgQEAgaWYgdGVzdCAieCR7d2FudF94MTFfeGxpYn0iID0gInh5ZXMiIDsgdGhlbgotICAgIEVDT1JFX0NIRUNLX1hfRVhURU5TSU9OKFtYZHBtc10sIFtkcG1zLmhdLCBbWGV4dF0sIFtEUE1TUXVlcnlFeHRlbnNpb25dKQotICAgIEVDT1JFX0NIRUNLX1hfRVhURU5TSU9OKFtYZml4ZXNdLCBbWGZpeGVzLmhdLCBbWGZpeGVzXSwgW1hGaXhlc0V4cGFuZFJlZ2lvbl0pCi0gICAgRUNPUkVfQ0hFQ0tfWF9FWFRFTlNJT04oW1hpbmVyYW1hXSwgW1hpbmVyYW1hLmhdLCBbWGluZXJhbWFdLCBbWGluZXJhbWFRdWVyeVNjcmVlbnNdKQotLSAgIEVDT1JFX0NIRUNLX1hfRVhURU5TSU9OKFtYcHJpbnRdLCBbUHJpbnQuaF0sIFtYcF0sIFtYcFF1ZXJ5U2NyZWVuc10pCi0gICAgRUNPUkVfQ0hFQ0tfWF9FWFRFTlNJT04oW1hyYW5kcl0sIFtYcmFuZHIuaF0sIFtYcmFuZHJdLCBbWFJSR2V0U2NyZWVuUmVzb3VyY2VzQ3VycmVudF0pCi0gICAgRUNPUkVfQ0hFQ0tfWF9FWFRFTlNJT04oW1hyZW5kZXJdLCBbWHJlbmRlci5oXSwgW1hyZW5kZXJdLCBbWFJlbmRlckZpbmRWaXN1YWxGb3JtYXRdKQotICAgIEVDT1JFX0NIRUNLX1hfRVhURU5TSU9OKFtYdGVzdF0sIFtYVGVzdC5oXSwgW1h0c3RdLCBbWFRlc3RGYWtlS2V5RXZlbnRdKQotLS0gCi0yLjMuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lZmwvMDAwMS1ldmFzXzNkLUFkZC1FZXQuaC1pbmNsdWRlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC8wMDAxLWV2YXNfM2QtQWRkLUVldC5oLWluY2x1ZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGYyNmM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbC8wMDAxLWV2YXNfM2QtQWRkLUVldC5oLWluY2x1ZGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAyZTUwZmQyZGZjNjhiNzdlN2FjZGRjNzk1NTBmMjI5ODc3NzhhODk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIERlYyAyMDE0IDEyOjIxOjEwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGV2YXNfM2Q6IEFkZCBFZXQuaCBpbmNsdWRlcwotCi0qIHdpdGggc29tZSB2ZXJ5IHJlc3RyaWN0aXZlIG9wdGlvbnMgbGlrZSB3ZSB1c2UgaW4gZWZsLW5hdGl2ZSwgdGhlIGJ1aWxkIGlzIGNvbXBsYWluaW5nCi0gIGFib3V0IG1pc3Npbmcgc3ltYm9scyBmcm9tIEVldC5oLCBhZGQgaW5jbHVkZSB3aGVyZSBuZWVkZWQKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2xpYi9ldmFzL2NhbnZhcy9ldmFzX2NhbnZhczNkX2VldC5jICAgICAgICAgICAgICAgICAgfCAxICsKLSBzcmMvbW9kdWxlcy9ldmFzL21vZGVsX2xvYWRlcnMvZWV0L2V2YXNfbW9kZWxfbG9hZF9lZXQuYyB8IDEgKwotIHNyYy9tb2R1bGVzL2V2YXMvbW9kZWxfc2F2ZXJzL2VldC9ldmFzX21vZGVsX3NhdmVfZWV0LmMgIHwgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saWIvZXZhcy9jYW52YXMvZXZhc19jYW52YXMzZF9lZXQuYyBiL3NyYy9saWIvZXZhcy9jYW52YXMvZXZhc19jYW52YXMzZF9lZXQuYwotaW5kZXggMjgxZjY5ZC4uYTYwNDA3NiAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZXZhcy9jYW52YXMvZXZhc19jYW52YXMzZF9lZXQuYwotKysrIGIvc3JjL2xpYi9ldmFzL2NhbnZhcy9ldmFzX2NhbnZhczNkX2VldC5jCi1AQCAtMSwzICsxLDQgQEAKLSsjaW5jbHVkZSA8RWV0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgImV2YXNfY29tbW9uX3ByaXZhdGUuaCIKLSAjaW5jbHVkZSAiZXZhc19wcml2YXRlLmgiCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvZXZhcy9tb2RlbF9sb2FkZXJzL2VldC9ldmFzX21vZGVsX2xvYWRfZWV0LmMgYi9zcmMvbW9kdWxlcy9ldmFzL21vZGVsX2xvYWRlcnMvZWV0L2V2YXNfbW9kZWxfbG9hZF9lZXQuYwotaW5kZXggODAzODQ2ZC4uN2ViYWY4ZSAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2V2YXMvbW9kZWxfbG9hZGVycy9lZXQvZXZhc19tb2RlbF9sb2FkX2VldC5jCi0rKysgYi9zcmMvbW9kdWxlcy9ldmFzL21vZGVsX2xvYWRlcnMvZWV0L2V2YXNfbW9kZWxfbG9hZF9lZXQuYwotQEAgLTMsNiArMyw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPEVvLmg+Ci0rI2luY2x1ZGUgPEVldC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJldmFzX2NvbW1vbl9wcml2YXRlLmgiCi0gI2luY2x1ZGUgImV2YXNfcHJpdmF0ZS5oIgotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL2V2YXMvbW9kZWxfc2F2ZXJzL2VldC9ldmFzX21vZGVsX3NhdmVfZWV0LmMgYi9zcmMvbW9kdWxlcy9ldmFzL21vZGVsX3NhdmVycy9lZXQvZXZhc19tb2RlbF9zYXZlX2VldC5jCi1pbmRleCA3MWUwOTRhLi40ZDU2OTc3IDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZXMvZXZhcy9tb2RlbF9zYXZlcnMvZWV0L2V2YXNfbW9kZWxfc2F2ZV9lZXQuYwotKysrIGIvc3JjL21vZHVsZXMvZXZhcy9tb2RlbF9zYXZlcnMvZWV0L2V2YXNfbW9kZWxfc2F2ZV9lZXQuYwotQEAgLTIsNiArMiw3IEBACi0gICAgI2luY2x1ZGUgImNvbmZpZy5oIgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxFZXQuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSAiZXZhc19jb21tb25fcHJpdmF0ZS5oIgotICNpbmNsdWRlICJldmFzX3ByaXZhdGUuaCIKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWZsXzEuMTUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VmbF8xLjE1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMTg1MzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWZsXzEuMTUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gIlwKLSAgICAke0VfUkVMRUFTRVN9L2xpYnMvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7U1JDVkVSfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC1jaGVjay1mb3ItWHByaW50LWV4dGVuc2lvbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZXZhc18zZC1BZGQtRWV0LmgtaW5jbHVkZXMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGM5MWJjYWI3MzI3NWY2NzhlMTc0OGEyZGVhOGQ4OGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmE2ZDBhYjI4MDIwYjQ3NDFiZTIwYjMyYWQwZmZlYjhmOTdmNzY2YzVjMzIxNzViYWNjMmYyZDBkYzUyZjk4YyIKLQotIyBUZW1wb3JhcnkgZGlzYWJsZSB1bnRpbCBlcnJvciBsaWtlIHRoZSBvbmUgZm9sbG93aW5nIGFyZSBmaXhlZAotIyBlZmwtbmF0aXZlLzJfMS44LjQtcjAvZWZsLTEuOC40L3NyYy9saWIvZWV0Ly5saWJzL2xpYmVldC5zbzogZmlsZSBub3QgcmVjb2duaXplZDogRmlsZSB0cnVuY2F0ZWQKLSMgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0jIHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBtb2R1bGVzL2V2YXMvc2F2ZXJzL3RpZmYvbW9kdWxlLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0Ci0jIE1ha2VmaWxlOjExMDMxOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zYXZlcnRpZmZwa2dMVExJQlJBUklFUycgZmFpbGVkCi1QQVJBTExFTF9NQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLSNFRkxfUlVOX0lOX1RSRUU9MSAuLi9zcmMvYmluL2VvbGlhbi9lb2xpYW5fZ2VuIC0tZW8gLS1sZWdhY3kgLUkvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWVnbGliYy93b3JrL3g4Nl82NC1saW51eC9lZmwtbmF0aXZlLzJfMS4xMC4wLXIwL2VmbC0xLjEwLjAvc3JjL2xpYi9lbyAtSS9PRS9idWlsZC9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsveDg2XzY0LWxpbnV4L2VmbC1uYXRpdmUvMl8xLjEwLjAtcjAvZWZsLTEuMTAuMC9zcmMvbGliL2V2YXMvY2FudmFzIC1JL09FL2J1aWxkL3Noci1jb3JlL3RtcC1lZ2xpYmMvd29yay94ODZfNjQtbGludXgvZWZsLW5hdGl2ZS8yXzEuMTAuMC1yMC9lZmwtMS4xMC4wL3NyYy9saWIvZWRqZSAtSS9PRS9idWlsZC9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsveDg2XzY0LWxpbnV4L2VmbC1uYXRpdmUvMl8xLjEwLjAtcjAvZWZsLTEuMTAuMC9zcmMvbGliL2Vjb3JlX2F1ZGlvIC0tZ2MgLW8gbGliL2V2YXMvY2FudmFzL2V2YXNfbGluZS5lby5jIC9PRS9idWlsZC9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsveDg2XzY0LWxpbnV4L2VmbC1uYXRpdmUvMl8xLjEwLjAtcjAvZWZsLTEuMTAuMC9zcmMvbGliL2V2YXMvY2FudmFzL2V2YXNfbGluZS5lbwotI0VSUjwzMjQzOT46ZW9saWFuX2dlbiAvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWVnbGliYy93b3JrL3g4Nl82NC1saW51eC9lZmwtbmF0aXZlLzJfMS4xMC4wLXIwL2VmbC0xLjEwLjAvc3JjL2Jpbi9lb2xpYW4vbWFpbi5jOjEwMyBfZ2VuZXJhdGVfY19maWxlKCkgQ291bGRudCBvcGVuIGZpbGUgbGliL2V2YXMvY2FudmFzL2V2YXNfbGluZS5lby5jIGZvciB3cml0aW5nCi0jTWFrZWZpbGU6MzA3Mzg6IHJlY2lwZSBmb3IgdGFyZ2V0ICdsaWIvZXZhcy9jYW52YXMvZXZhc19saW5lLmVvLmMnIGZhaWxlZAotI21ha2VbMl06ICoqKiBbbGliL2V2YXMvY2FudmFzL2V2YXNfbGluZS5lby5jXSBFcnJvciAxCi0jTWFrZWZpbGU6MjE2MzogcmVjaXBlIGZvciB0YXJnZXQgJ2FsbC1yZWN1cnNpdmUnIGZhaWxlZAotIyBhdXRvdG9vbHMtYnJva2Vuc2VwCi1CID0gIiR7U30iCi0KLSNsZDogZXJyb3I6IG1vZHVsZXMvZXZhcy9pbWFnZV9sb2FkZXJzL3BuZy9iaW5fZXZhc19ldmFzX2NzZXJ2ZTJfc2xhdmUtZXZhc19pbWFnZV9sb2FkX3BuZy5vOiByZXF1aXJlcyB1bnN1cHBvcnRlZCBkeW5hbWljIHJlbG9jIFJfQVJNX01PVldfQUJTX05DOyByZWNvbXBpbGUgd2l0aCAtZlBJQwotI2xkOiBlcnJvcjogbW9kdWxlcy9ldmFzL2ltYWdlX2xvYWRlcnMvcG5nL2Jpbl9ldmFzX2V2YXNfY3NlcnZlMl9zbGF2ZS1ldmFzX2ltYWdlX2xvYWRfcG5nLm86IHJlcXVpcmVzIHVuc3VwcG9ydGVkIGR5bmFtaWMgcmVsb2MgUl9BUk1fTU9WV19BQlNfTkM7IHJlY29tcGlsZSB3aXRoIC1mUElDCi1DRkxBR1MgKz0gIi1mUElDIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeS10aGVtZS1lZmVubmlodC9MSUNFTlNFIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeS10aGVtZS1lZmVubmlodC9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWJiMmY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHQvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUNvcHlyaWdodCBub3RpY2UgZm9yIEVubGlnaHRlbm1lbnQ6Ci0KLUNvcHlyaWdodCAoQykgMjAwMC0yMDEwIENhcnN0ZW4gSGFpdHpsZXIgYW5kIHZhcmlvdXMgY29udHJpYnV0b3JzIChzZWUgQVVUSE9SUykKLQotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IAotICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAotSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLUlOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLAotT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKLUVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbGVtZW50YXJ5LXRoZW1lLWVmZW5uaWh0X3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHRfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODNkMTIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHRfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZWZlbm5paHQgZWxlbWVudGFyeSB0aGVtZSAtIEVmZW5uaWh0IHdhcyBkZXZpc2VkIHRvIGJlIGNsZWFuIFwKLWFuZCBuZXV0cmFsLiBJdHMgbmFtZSAod2hpY2ggbWVhbnMgZXF1aW5veCkgY29tZXMgZnJvbSB0aGUgY2hyb21hdGljIGR1YWxpdHkgXAotdGhhdCB3YXMgZGVjaWRlZCBhdCB0aGUgdmVyeSBiZWdpbm5pbmcsIHdpdGggYSBkYXJrIHRoZW1lIChibGFjayBhbmQgb3JhbmdlKSBcCi1hbmQgYSBicmlnaHQgb25lICh3aGl0ZSBhbmQgYmx1ZSkgdG8gYmUgZGV2ZWxvcGVkIHNvIHRoYXQgbW9yZSBwZW9wbGUgZmVlbCBcCi1jb21mb3J0YWJsZSB1c2luZyBpdC4gRWZlbm5paHQgdXNlcyBmZXcgYW5pbWF0aW9ucywgZGlzY3JldGUgY29udHJhc3RzIGJldHdlZW4gXAotc2hhZGVzIG9mIGdyYXkgYW5kIGZpbmUgbGluZXMgKGNvbG9yZWQpIHRoYXQgb3V0bGluZSB0aGUgc2VsZWN0ZWQgZWxlbWVudHMuIgotU0VDVElPTiA9ICJlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3RyYWMuZW5saWdodGVubWVudC5vcmcvZS93aWtpL1RoZW1lcyNFZmVubmlodCIKLURFUEVORFMgPSAiZWRqZS1uYXRpdmUiCi1SU1VHR0VTVFNfJHtQTn0gPSAiZS13bS10aGVtZS1pbGx1bWUtZWZlbm5paHQiCi1MSUNFTlNFID0gIk1JVCAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vTElDRU5TRTttZDU9ZjUyM2FiNTk4NmNjNzliNTJhOTBkMmFjM2Q1NDU0YTIiCi0KLVNSQ1JFVl9USE1fUkVWID89ICIke0VGTF9TUkNSRVZ9IgotU1JDUkVWX0VMTV9SRVYgPz0gIiR7RUZMX1NSQ1JFVn0iCi0KLVNSQ1JFVl9GT1JNQVQgPSAiVEhNX1JFViIKLVBWID0gIjAuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICJyMSIKLQotaW5oZXJpdCBlLWJhc2UgYWxsYXJjaAotCi1TUkNOQU1FID0gImVmZW5uaWh0IgotU1JDX1VSSSA9ICIke0VfU1ZOfS90cnVuay9USEVNRVM7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtuYW1lPVRITV9SRVYiCi1TUkNfVVJJICs9ICIke0VfU1ZOfS90cnVuay9lbGVtZW50YXJ5L2RhdGE7bW9kdWxlPXRoZW1lcztwcm90b2NvbD1odHRwO25hbWU9RUxNX1JFViIKLVNSQ19VUkkgKz0gImZpbGU6Ly9MSUNFTlNFIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgLWlkICR7U30vaW1hZ2VzIC1pZCAke1dPUktESVJ9L3RoZW1lcy9pbWFnZXMgJHtTfS9lbG0tZWZlbm5paHQuZWRjIC1vICR7U30vZWxtLWVmZW5uaWh0LmVkagotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZWxlbWVudGFyeS90aGVtZXMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZWxtLWVmZW5uaWh0LmVkaiAke0R9JHtkYXRhZGlyfS9lbGVtZW50YXJ5L3RoZW1lcy8KLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9lbGVtZW50YXJ5L3RoZW1lcy8iCi0KLVBOQkxBQ0tMSVNUW2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHRdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVkamUtbmF0aXZlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlbGVtZW50YXJ5LXRoZW1lLWVmZW5uaWh0XSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnktdGhlbWUtZWZlbm5paHQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2VsZW1lbnRhcnktdGhlbWUtZWZlbm5paHRdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWxlbWVudGFyeS10aGVtZS1lZmVubmlodC1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbGVtZW50YXJ5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWM2N2FhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRUZMIGJhc2VkIHdpZGdldCBzZXQgZm9yIG1vYmlsZSBkZXZpY2VzIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWExNzMwNTRhOTM4OTZlOTMzZGY1M2UzMzgyZDQ3MmMyIgotREVQRU5EUyA9ICJlZXQtbmF0aXZlIGVkamUtbmF0aXZlIGVsZW1lbnRhcnktbmF0aXZlIGVmcmVldCBldmFzIGVjb3JlIGVkamUgZWV0IGVsZGJ1cyBldGh1bWIgZWlvIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZWZsLW5hdGl2ZSIKLQotaW5oZXJpdCBlZmwgZ2V0dGV4dAotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgLS13aXRoLWVkamUtY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VkamVfY2MgXAotICAgIC0td2l0aC1lZXQtZWV0PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZXQgXAotICAgIC0td2l0aC1lbGVtZW50YXJ5LWNvZGVnZW49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VsZW1lbnRhcnlfY29kZWdlbiBcCi0gICAgLS13aXRoLWVsbS1wcmVmcy1jYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZWxtX3ByZWZzX2NjIFwKLSAgICAtLXdpdGgtZW9saWFuLWdlbj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZW9saWFuX2dlbiBcCi0gICAgLS13aXRoLWVvbGlhbi1jeHg9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2VvbGlhbl9jeHggXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJR1tld2VhdGhlcl0gPSAiLS1lbmFibGUtZXdlYXRoZXIsLS1kaXNhYmxlLWV3ZWF0aGVyLGxpYmV3ZWF0aGVyIgotUEFDS0FHRUNPTkZJR1tld2Via2l0XSA9ICItLXdpdGgtZWxlbWVudGFyeS13ZWItYmFja2VuZD1ld2Via2l0LC0td2l0aC1lbGVtZW50YXJ5LXdlYi1iYWNrZW5kPW5vbmUsd2Via2l0LWVmbCIKLSMgYmUgYXdhcmUgd2hlbiBlbmFibGluZyB0aGlzIGZvciBlZmwtbmF0aXZlLCB3ZSBkb24ndCBwcm92aWRlIGdjYy1uYXRpdmUgc28geW91IG5lZWQgdG8gbWFrZQotIyBzdXJlIHRoYXQgYWxsIHlvdXIgYnVpbGRlcnMgaGF2ZSBnKysgd2hpY2ggc3VwcG9ydHMgLXN0ZD1nbnUrKzExCi1QQUNLQUdFQ09ORklHW2MrKzExXSA9ICItLWVuYWJsZS1jeHgtYmluZGluZ3MsLS1kaXNhYmxlLWN4eC1iaW5kaW5ncyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBwcmVmaXggcmV0dXJuZWQgZW9saWFuIHBhdGhzIHdpdGggU1RBR0lOR19ESVJfSE9TVAotICAgIHNlZCAtaSAncyVeXChERVBTX0VPTElBTl9GTEFHUz1gLipcKWAkJVwxIHwgc2VkICJzIy1JXFwke3ByZWZpeH0jLUlcXCR7U1RBR0lOR19ESVJfSE9TVH1cXCR7cHJlZml4fSNnImAlZycgJHtTfS9jb25maWd1cmUuYWMKLX0KLQotZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZyBcCi0gICAgICAgICAgIC1lIHM6LyR7VEFSR0VUX1NZU306OmcgXAotICAgICAgICAgICAgICBlbGVtZW50YXJ5LnBjCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS1jb25maWdzICR7UE59LWFjY2Vzc2liaWxpdHkiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BOfS10aGVtZXMgXAotICAgICR7UE59LWNvbmZpZ3MgXAotIgotUlNVR0dFU1RTXyR7UE59ID0gIiR7UE59LXRlc3RzICR7UE59LWFjY2Vzc2liaWxpdHkiCi0KLUZJTEVTXyR7UE59ICs9ICJcCi0gICAgJHtsaWJkaXJ9L2VkamUvbW9kdWxlcy9lbG0gXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvZGF0ZXRpbWVfaW5wdXRfY3R4cG9wdXAvKi9tb2R1bGUuc28gXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvcHJlZnMvKi9tb2R1bGUuc28gXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvcHJlZnMvKi8qLmVkaiBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAgICR7YmluZGlyfS9lbG1fcHJlZnNfY2MgXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvKi8qL21vZHVsZS5sYSBcCi0gICAgJHtsaWJkaXJ9L2NtYWtlIFwKLSIKLQotRklMRVNfJHtQTn0tdGhlbWVzID0gIlwKLSAgICAke2RhdGFkaXJ9L2VsZW1lbnRhcnkvdGhlbWVzIFwKLSIKLQotRklMRVNfJHtQTn0tY29uZmlncyA9ICJcCi0gICAgJHtkYXRhZGlyfS9lbGVtZW50YXJ5L2NvbmZpZyBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvKi8qLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9L2VkamUvbW9kdWxlcy9lbG0vKi8uZGVidWcgXAotIgotCi1GSUxFU18ke1BOfS10ZXN0cyA9ICJcCi0gICAgJHtiaW5kaXJ9L2VsZW1lbnRhcnkqIFwKLSAgICAke2RhdGFkaXJ9L2VsZW1lbnRhcnkvaW1hZ2VzIFwKLSAgICAke2RhdGFkaXJ9L2VsZW1lbnRhcnkvb2JqZWN0cyBcCi0gICAgJHtkYXRhZGlyfS9lbGVtZW50YXJ5L2V4YW1wbGVzIFwKLSAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8qIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zLyogXAotICAgICR7bGliZGlyfS9lbGVtZW50YXJ5L21vZHVsZXMvdGVzdF9lbnRyeS8qIFwKLSAgICAke2xpYmRpcn0vZWxlbWVudGFyeS9tb2R1bGVzL3Rlc3RfbWFwLyogXAotIgotCi1GSUxFU18ke1BOfS1hY2Nlc3NpYmlsaXR5ID0gIlwKLSAgICAke2xpYmRpcn0vZWxlbWVudGFyeS9tb2R1bGVzL2FjY2Vzc19vdXRwdXQvKiBcCi0iCi0KLSMgU29tZSB1cGdyYWRlIHBhdGggdHdlYWtpbmcsIGFzIGluIGV2YXMKLUFVVE9fTElCTkFNRV9QS0dTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnkvMDAwMS1NYWtlZmlsZS1Vc2UtZWxlbWVudGFyeV9jb2RlZ2VuLWRlZmluZWQtaW4tY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeS8wMDAxLU1ha2VmaWxlLVVzZS1lbGVtZW50YXJ5X2NvZGVnZW4tZGVmaW5lZC1pbi1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MjRjNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeS8wMDAxLU1ha2VmaWxlLVVzZS1lbGVtZW50YXJ5X2NvZGVnZW4tZGVmaW5lZC1pbi1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDc1ZDEwNGQxMDVhYTAzZGQ5ZDQ0NmZhN2Q4NGZhOTVlMGY1NjZjZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDExIEphbiAyMDE0IDEyOjU1OjU5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBVc2UgZWxlbWVudGFyeV9jb2RlZ2VuIGRlZmluZWQgaW4gY29uZmlndXJlCi0KLSogdXNpbmcgYmluYXJpZXMgZnJvbSB0b3BfYnVpbGRpciBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcgZWxlbWVudGFyeQotICB3aGVyZSB3ZSBuZWVkIHRvIHBhc3MgbmF0aXZlIGJpbmFyaWVzIGluIGNvbmZpZ3VyZSBwYXJhbXMKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2V4YW1wbGVzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2V4YW1wbGVzL01ha2VmaWxlLmFtIGIvc3JjL2V4YW1wbGVzL01ha2VmaWxlLmFtCi1pbmRleCBmYzM1Yzc1Li4xZTEwYjBiIDEwMDY0NAotLS0tIGEvc3JjL2V4YW1wbGVzL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLUBAIC0yOSw3ICsyOSw3IEBAIExEQUREID0gXAotIEBFTEVNRU5UQVJZX1hfTElCU0AgXAotICQodG9wX2J1aWxkZGlyKS9zcmMvbGliL2xpYmVsZW1lbnRhcnkubGEKLSAKLS1FTEVNRU5UQVJZX0NPREVHRU4gPSAkKHRvcF9idWlsZGRpcikvc3JjL2Jpbi9ARUxFTUVOVEFSWV9DT0RFR0VOX1BSR0AKLStFTEVNRU5UQVJZX0NPREVHRU4gPSBAZWxlbWVudGFyeV9jb2RlZ2VuQAotIEVMRU1FTlRBUllfQ09ERUdFTl9GTEFHUyA9IC0tcHJlZml4PWNvZGVnZW5fZXhhbXBsZQotIAotIFNSQ1MgPSBcCi0tLSAKLTEuOS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VsZW1lbnRhcnlfMS4xNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeV8xLjE1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZGQ4YWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZWxlbWVudGFyeV8xLjE1LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtFX1JFTEVBU0VTfS9saWJzLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmd6IFwKLSIKLQotIyBvbmx5IGZvciB0YXJnZXQsIGJlY2F1c2UgY29uZmlndXJlIGRvZXNuJ3QgZGVmYXVsdCB0byBzYW5lIGRlZmF1bHQgd2hlbgotIyB0aGVzZSBwYXRocyBhcmVuJ3QgcGFzc2VkIGluIC1uYXRpdmUgYnVpbGQKLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDEtTWFrZWZpbGUtVXNlLWVsZW1lbnRhcnlfY29kZWdlbi1kZWZpbmVkLWluLWNvbmZpZ3VyZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImJkZTRkODVmYTEwZWU4YTdjMGFlYjc0ZTY5ZDdjZDA2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFlNTU0MGMyMTAzZmNkYzY5ZmQ3NDY5Mjc3Y2UyNWE4YTAwYTBmNzAxZmMyYzIwNzcxZGMwMTA4NDAxZTUzYTAiCi0KLSMgYXV0b3Rvb2xzLWJyb2tlbnNlcCAtIGNvbmZpZ3VyZSB1cGRhdGVzIEVsZW1lbnRhcnkuaCBjb3JyZWN0bHkgaW4gJHtCfSwgYnV0IHRoZW4gYnVpbGQgaXMgdXNpbmcgRWxlbWVudGFyeS5oIGZyb20gJHtTfQotIyB3aGljaCBpbmNsdWRlcyAjZGVmaW5lIEVMTV9FTUFQIChpbnN0ZWFkIG9mICN1bmRlZiBFTE1fRU1BUCkgYW5kIGJ1aWxkaW5nIGZhaWxzCi1CID0gIiR7U30iCi0KLVBOQkxBQ0tMSVNUW2VsZW1lbnRhcnldID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNTg0LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFiODlhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbW90aW9uLWdlbmVyaWMtcGxheWVycy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFbW90aW9uIGdlbmVyaWMgcGxheWVycyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMGYxMWVlZGY4NzA2YmY2ZDRkNjYzOWZiNjdlYjhhZSIKLQotREVQRU5EUyA9ICJlbW90aW9uIgotCi1pbmhlcml0IGVmbAotCi1TUkNOQU1FID0gImVtb3Rpb25fZ2VuZXJpY19wbGF5ZXJzIgotCi0jIGNyZWF0ZXMgZW1wdHkgcGFja2FnZXMgdW50aWwgeW91IGdldCB2bGMtMiBhbmQgZW5hYmxlIGl0IGhlcmUKLVBBQ0tBR0VDT05GSUcgPz0gIiIKLSMgbmVlZHMgZWluYSBhbmQgZWNvcmUgZnJvbSBlZmwgYW5kIHZsYy0yIChjdXJyZW50bHkgd2UgaGF2ZSAxLjExKQotUEFDS0FHRUNPTkZJR1t2bGNdID0gIi0td2l0aC12bGMsLS13aXRob3V0LXZsYyx2bGMgZWZsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW1vdGlvbi1nZW5lcmljLXBsYXllcnNfMS4xNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW1vdGlvbi1nZW5lcmljLXBsYXllcnNfMS4xNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmRkMjY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2Vtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzXzEuMTUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gIlwKLSAgICAke0VfUkVMRUFTRVN9L2xpYnMvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7U1JDVkVSfS50YXIuZ3ogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjg2MjdjMWFhYmY1YjdmZTA4NDI5OWFkY2MwYjczYzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTBiYWQ2MzM0ODBhNjkxNTg1YjBiYTQ3MGM1NzNiMTRkYTBhMDEwMDA4ZDlkNTlkMDc5MmNlYThjNjIxZDQyMyIKLQotUE5CTEFDS0xJU1RbZW1vdGlvbi1nZW5lcmljLXBsYXllcnNdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVtb3Rpb24gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2Vtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVtb3Rpb24tZ2VuZXJpYy1wbGF5ZXJzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlbW90aW9uLWdlbmVyaWMtcGxheWVyc10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbW90aW9uLWdlbmVyaWMtcGxheWVycy1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbmdyYXZlX3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VuZ3JhdmVfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTUwOTM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VuZ3JhdmVfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJFbmdyYXZlIGlzIGFuIEVkamUgRWRpdGluZyBMaWJyYXJ5IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZGYyZDk2OGI5ZWIwMjZiZmE4MmNjY2JkMGU2ZjlmNSIKLSMgYWxzbyByZXF1aXJlcyB5YWNjIGFuZCBsZXggb24gaG9zdAotREVQRU5EUyA9ICJldmFzIGVjb3JlIGZsZXgiCi1QViA9ICIwLjAuMCtzdm5yJHtTUkNQVn0iCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlZmwgYXV0b3Rvb2xzLWJyb2tlbnNlcAotU1JDX1VSSSA9ICIke0VfU1ZOfS9PTEQ7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cDtzY21kYXRhPWtlZXAiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotIyBlbmdyYXZlLmw6NTozNTogZmF0YWwgZXJyb3I6IGxpYmVuZ3JhdmVfbGEtZW5ncmF2ZS5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy81NjU5Ny8KLVBOQkxBQ0tMSVNUW2VuZ3JhdmVdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggbGF0ZXN0IG9lLWNvcmUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbnRyYW5jZS8wMDAxLXBhbS11c2UtY29tbW9uLWF1dGgtaW5zdGVhZC1vZi1zeXN0ZW0tYXV0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VudHJhbmNlLzAwMDEtcGFtLXVzZS1jb21tb24tYXV0aC1pbnN0ZWFkLW9mLXN5c3RlbS1hdXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODJkMWVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VudHJhbmNlLzAwMDEtcGFtLXVzZS1jb21tb24tYXV0aC1pbnN0ZWFkLW9mLXN5c3RlbS1hdXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSAxNDM5NmM1MmEyNTU2YjFhYjc3OGEzMTBhMzE4ZWMxOWMyODI5NzM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogVGh1LCAyNCBOb3YgMjAxMSAxMzoyNTozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBwYW06IHVzZSBjb21tb24tYXV0aCBpbnN0ZWFkIG9mIHN5c3RlbS1hdXRoCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIFBST1RPL2VudHJhbmNlL2RhdGEvZW50cmFuY2UgfCAgICA4ICsrKystLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kYXRhL2VudHJhbmNlIGIvZGF0YS9lbnRyYW5jZQotaW5kZXggODcyYzgzZC4uMmI5OGMzYSAxMDA2NDQKLS0tLSBhL2RhdGEvZW50cmFuY2UKLSsrKyBiL2RhdGEvZW50cmFuY2UKLUBAIC0xLDQgKzEsNCBAQAotLWF1dGgJaW5jbHVkZQkJc3lzdGVtLWF1dGgKLS1hY2NvdW50CWluY2x1ZGUJCXN5c3RlbS1hdXRoCi0tcGFzc3dvcmQJaW5jbHVkZQkJc3lzdGVtLWF1dGgKLS1zZXNzaW9uCWluY2x1ZGUJCXN5c3RlbS1hdXRoCi0rYXV0aAlpbmNsdWRlCQljb21tb24tYXV0aAotK2FjY291bnQJaW5jbHVkZQkJY29tbW9uLWFjY291bnQKLStwYXNzd29yZAlpbmNsdWRlCQljb21tb24tcGFzc3dvcmQKLStzZXNzaW9uCWluY2x1ZGUJCWNvbW1vbi1zZXNzaW9uCi0tLSAKLTEuNy44LjYKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW50cmFuY2UvZW50cmFuY2Uuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VudHJhbmNlL2VudHJhbmNlLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4Mjg2ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW50cmFuY2UvZW50cmFuY2Uuc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1Mb2dpbiBtYW5hZ2VyIGZvciBFbmxpZ2h0ZW5tZW50Ci0KLVtTZXJ2aWNlXQotRXhlY1N0YXJ0PS91c3Ivc2Jpbi9lbnRyYW5jZQotCi1bSW5zdGFsbF0KLUFsaWFzPWRpc3BsYXktbWFuYWdlci5zZXJ2aWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbnRyYW5jZV9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lbnRyYW5jZV9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZTU4MGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZW50cmFuY2Vfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJMb2dpbiBtYW5hZ2VyIGZvciBFbmxpZ2h0ZW5tZW50IgotREVQRU5EUyA9ICJlZnJlZXQgZWluYSBlZXQgZWNvcmUgZWxlbWVudGFyeSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1TRUNUSU9OID0gImUvYXBwcyIKLQotaW5oZXJpdCBlIGdldHRleHQgc3lzdGVtZAotU1JDX1VSSSA9ICIke0VfU1ZOfS90cnVuay9QUk9UTzttb2R1bGU9JHtTUkNOQU1FfTtwcm90b2NvbD1odHRwO3NjbWRhdGE9a2VlcCBcCi0gICAgZmlsZTovLzAwMDEtcGFtLXVzZS1jb21tb24tYXV0aC1pbnN0ZWFkLW9mLXN5c3RlbS1hdXRoLnBhdGNoIFwKLSAgICBmaWxlOi8vZW50cmFuY2Uuc2VydmljZSBcCi0iCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotUE5CTEFDS0xJU1RbZW50cmFuY2VdID89ICJicm9rZW46IHN3aXRjaCB0byBodHRwczovL2dpdC5lbmxpZ2h0ZW5tZW50Lm9yZy9taXNjL2VudHJhbmNlLmdpdCBhbmQgZml4IDAuMC40K3N2bnI4MjA3MC1yNy9lbnRyYW5jZS9kYXRhL3RoZW1lcy9vbGQvZGVmYXVsdC5lZGM6Njc4LiBpbnZhbGlkIHN0YXRlIG5hbWU6ICdkZWZhYXVsdCcuICJkZWZhdWx0IiBzdGF0ZSBtdXN0IGFsd2F5cyBiZSBmaXJzdC4gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0tZW5hYmxlLWNvbnNvbGVraXQsLS1kaXNhYmxlLWNvbnNvbGVraXQsY29uc29sZWtpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1lZGplLWNjPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9lZGplX2NjICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJycsICctLWRpc2FibGUtcGFtJywgZCl9IgotCi1QUiA9ICJyNyIKLVBWID0gIjAuMC40K3N2bnIke1NSQ1BWfSIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tdGhlbWVzIHNlc3NyZWcgeGF1dGgiCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vZW50cmFuY2UuY29uZiIKLQotUkNPTkZMSUNUU18ke1BOfSArPSAieHNlcnZlci1ub2RtLWluaXQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gInhzZXJ2ZXItbm9kbS1pbml0IgotCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJ4c2VydmVyLW5vZG0taW5pdC1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICJ4c2VydmVyLW5vZG0taW5pdC1zeXN0ZW1kIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZW50cmFuY2Uuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2VudHJhbmNlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2VwZGYvMDAwMS1yZW1vdmUtYW50aWFsaWFzLWZ1bmN0aW9ucy1wb3BwbGVyLWhhcy1kcm9wcGVkLXRoZW0tLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXBkZi8wMDAxLXJlbW92ZS1hbnRpYWxpYXMtZnVuY3Rpb25zLXBvcHBsZXItaGFzLWRyb3BwZWQtdGhlbS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyOGZmYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXBkZi8wMDAxLXJlbW92ZS1hbnRpYWxpYXMtZnVuY3Rpb25zLXBvcHBsZXItaGFzLWRyb3BwZWQtdGhlbS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotRnJvbSA2NjkxYWM1ZmNiYWMwZTc2NmQ0NDEwYWU2NDlhMTM5NTdhZTg1Mjg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVGh1LCAyMiBPY3QgMjAxNSAxNjoyNzo1MiArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gcmVtb3ZlIGFudGlhbGlhcyBmdW5jdGlvbnMgLSBwb3BwbGVyIGhhcyBkcm9wcGVkIHRoZW0gaW4KLSB0aGUgQVBJCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZSBmdW5jdGlvbnMgcmVtb3ZlZCB3ZXJlIG5vdCB1c2VkLgotCi1VcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gc3JjL2xpYi9lcGRmX21haW4uaCAgICAgICAgICAgICAgICAgICB8IDQ1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2xpYi9tdXBkZi9lcGRmX211cGRmX21haW4uYyAgICAgICB8IDE4IC0tLS0tLS0tLS0tLS0tCi0gc3JjL2xpYi9wb3BwbGVyL2VwZGZfcG9wcGxlcl9tYWluLmNwcCB8IDIxIC0tLS0tLS0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDg0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9lcGRmX21haW4uaCBiL3NyYy9saWIvZXBkZl9tYWluLmgKLWluZGV4IDU0YTU3Y2EuLjBhNzliYWQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2VwZGZfbWFpbi5oCi0rKysgYi9zcmMvbGliL2VwZGZfbWFpbi5oCi1AQCAtMjksNDkgKzI5LDQgQEAgRUFQSSBpbnQgZXBkZl9zaHV0ZG93bigpOwotICAqLwotIEVBUEkgY29uc3QgY2hhciAqZXBkZl9iYWNrZW5kX3ZlcnNpb25fZ2V0ICh2b2lkKTsKLSAKLS0vKioKLS0gKiBAYnJpZWYgUmV0dXJuIHRoZSBzdGF0ZSBvZiBmb250cyBhbnRpYWxpYXNpbmcgaW4gUG9wcGxlcgotLSAqCi0tICogQHJldHVybiBFSU5BX1RSVUUgaWYgZm9udHMgYW50aWFsaWFzaW5nIGVuYWJsZWQsIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgotLSAqCi0tICogUmV0dXJuIEVJTkFfVFJVRSBpZiB0aGUgc3RhdGUgb2YgZm9udHMgYW50aWFsaWFzaW5nIGlzIGVuYWJsZWQgaW4KLS0gKiBQb3BwbGVyLCBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLS0gKgotLSAqIEBpbmdyb3VwIEVwZGZfTWFpbgotLSAqLwotLUVBUEkgRWluYV9Cb29sIGVwZGZfZm9udHNfYW50aWFsaWFzX2dldCAodm9pZCk7Ci0tCi0tLyoqCi0tICogQGJyaWVmIFNldHMgZm9udHMgYW50aWFsaWFzaW5nIG1vZGUgaW4gUG9wcGxlcgotLSAqCi0tICogQHBhcmFtIG9uIEVJTkFfVFJVRSB0byBlbmFibGUgZm9udHMgYW50aWFsaWFzaW5nLCBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKLS0gKgotLSAqIFNldCBAcCBvbiB0byBFSU5BX1RSVUUgdG8gZW5hYmxlIGZvbnRzIGFudGlhbGlhc2luZyBpbiBQb3BwbGVyLAotLSAqIEVJTkFfRkFMU0UgdG8gZGlzYWJsZSBpdC4KLS0gKi8KLS1FQVBJIHZvaWQgZXBkZl9mb250c19hbnRpYWxpYXNfc2V0IChFaW5hX0Jvb2wgb24pOwotLQotLS8qKgotLSAqIEBicmllZiBSZXR1cm4gdGhlIHN0YXRlIG9mIGxpbmVzIGFudGlhbGlhc2luZyBpbiBQb3BwbGVyCi0tICoKLS0gKiBAcmV0dXJuIEVJTkFfVFJVRSBpZiBsaW5lcyBhbnRpYWxpYXNpbmcgZW5hYmxlZCwgRUlOQV9GQUxTRSBvdGhlcndpc2UuCi0tICoKLS0gKiBSZXR1cm4gRUlOQV9UUlVFIGlmIHRoZSBzdGF0ZSBvZiBsaW5lcyBhbnRpYWxpYXNpbmcgaXMgZW5hYmxlZCBpbgotLSAqIFBvcHBsZXIsIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgotLSAqCi0tICogQGluZ3JvdXAgRXBkZl9NYWluCi0tICovCi0tRUFQSSBFaW5hX0Jvb2wgZXBkZl9saW5lc19hbnRpYWxpYXNfZ2V0ICh2b2lkKTsKLS0KLS0vKioKLS0gKiBAYnJpZWYgU2V0cyBsaW5lcyBhbnRpYWxpYXNpbmcgbW9kZSBpbiBQb3BwbGVyCi0tICoKLS0gKiBAcGFyYW0gb24gRUlOQV9UUlVFIHRvIGVuYWJsZSBsaW5lcyBhbnRpYWxpYXNpbmcsIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQotLSAqCi0tICogU2V0IEBwIG9uIHRvIEVJTkFfVFJVRSB0byBlbmFibGUgbGluZXMgYW50aWFsaWFzaW5nIGluIFBvcHBsZXIsCi0tICogRUlOQV9GQUxTRSB0byBkaXNhYmxlIGl0LgotLSAqLwotLUVBUEkgdm9pZCBlcGRmX2xpbmVzX2FudGlhbGlhc19zZXQgKEVpbmFfQm9vbCBvbik7Ci0tCi0tCi0gI2VuZGlmIC8qIF9fRVBERl9NQUlOX0hfXyAqLwotZGlmZiAtLWdpdCBhL3NyYy9saWIvbXVwZGYvZXBkZl9tdXBkZl9tYWluLmMgYi9zcmMvbGliL211cGRmL2VwZGZfbXVwZGZfbWFpbi5jCi1pbmRleCAxN2JiODMwLi4yN2M2ZGUyIDEwMDY0NAotLS0tIGEvc3JjL2xpYi9tdXBkZi9lcGRmX211cGRmX21haW4uYwotKysrIGIvc3JjL2xpYi9tdXBkZi9lcGRmX211cGRmX21haW4uYwotQEAgLTM3LDIxICszNywzIEBAIGVwZGZfYmFja2VuZF92ZXJzaW9uX2dldCAodm9pZCkKLSB7Ci0gICAgcmV0dXJuICIwLjUiOwotIH0KLS0KLS1FaW5hX0Jvb2wgZXBkZl9mb250c19hbnRpYWxpYXNfZ2V0KHZvaWQpCi0tewotLSAgIHJldHVybiBFSU5BX1RSVUU7Ci0tfQotLQotLXZvaWQgZXBkZl9mb250c19hbnRpYWxpYXNfc2V0KEVpbmFfQm9vbCBvbikKLS17Ci0tfQotLQotLUVpbmFfQm9vbCBlcGRmX2xpbmVzX2FudGlhbGlhc19nZXQodm9pZCkKLS17Ci0tICAgcmV0dXJuIEVJTkFfVFJVRTsKLS19Ci0tCi0tdm9pZCBlcGRmX2xpbmVzX2FudGlhbGlhc19zZXQoRWluYV9Cb29sIG9uKQotLXsKLS19Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9wb3BwbGVyL2VwZGZfcG9wcGxlcl9tYWluLmNwcCBiL3NyYy9saWIvcG9wcGxlci9lcGRmX3BvcHBsZXJfbWFpbi5jcHAKLWluZGV4IDk4NDE5ODcuLjllZmRiZTggMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL3BvcHBsZXIvZXBkZl9wb3BwbGVyX21haW4uY3BwCi0rKysgYi9zcmMvbGliL3BvcHBsZXIvZXBkZl9wb3BwbGVyX21haW4uY3BwCi1AQCAtNDYsMjQgKzQ2LDMgQEAgZXBkZl9iYWNrZW5kX3ZlcnNpb25fZ2V0ICh2b2lkKQotIHsKLSAgIHJldHVybiBQT1BQTEVSX1ZFUlNJT047Ci0gfQotLQotLUVpbmFfQm9vbCBlcGRmX2ZvbnRzX2FudGlhbGlhc19nZXQgKHZvaWQpCi0tewotLSAgcmV0dXJuIGdsb2JhbFBhcmFtcy0+Z2V0QW50aWFsaWFzKCk7Ci0tfQotLQotLXZvaWQgZXBkZl9mb250c19hbnRpYWxpYXNfc2V0IChFaW5hX0Jvb2wgb24pCi0tewotLSAgLyogTmljZSBBUEkgKi8KLS0gIGdsb2JhbFBhcmFtcy0+c2V0QW50aWFsaWFzKChjaGFyKikob24gPyAieWVzIiA6ICJubyIpKTsKLS19Ci0tCi0tRWluYV9Cb29sIGVwZGZfbGluZXNfYW50aWFsaWFzX2dldCAodm9pZCkKLS17Ci0tICAgIHJldHVybiBnbG9iYWxQYXJhbXMtPmdldFZlY3RvckFudGlhbGlhcygpOwotLX0KLS0KLS12b2lkIGVwZGZfbGluZXNfYW50aWFsaWFzX3NldCAoRWluYV9Cb29sIG9uKQotLXsKLS0gICAgZ2xvYmFsUGFyYW1zLT5zZXRWZWN0b3JBbnRpYWxpYXMoKGNoYXIqKShvbiA/ICJ5ZXMiIDogIm5vIikpOwotLX0KLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXBkZi8wMDAyLWVwZGZfcG9wcGxlcl9wb3N0c2NyaXB0LmNwcC1maXgtYnVpbGQtZm9yLXBvcHBsZXItQVAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lcGRmLzAwMDItZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwLWZpeC1idWlsZC1mb3ItcG9wcGxlci1BUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhZGFhNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lcGRmLzAwMDItZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwLWZpeC1idWlsZC1mb3ItcG9wcGxlci1BUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gYTg0YzE2ZmRjNjA2ZjIyYjk5M2Y4NzBiMWNlYTU2ZGQwNjBhMzVlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFRodSwgMjIgT2N0IDIwMTUgMTY6NTU6MzAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGVwZGZfcG9wcGxlcl9wb3N0c2NyaXB0LmNwcDogZml4IGJ1aWxkIGZvciBwb3BwbGVyIEFQSQotIGNoYW5nZQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Qb3BwbGVyIEFQSSB3YXMgY2hhbmdlZCBpbiBbMV0uIFRoZSBwYXRjaCBub3Qgb25seSBzaG93cyB0aGUgY2hhbmdlIGJ1dCBhbHNvCi1pbnNwaXJlcyBob3cgdG8gZml4LgotCi1bMV0gaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3BvcHBsZXIvcG9wcGxlci9jb21taXQvP2lkPTljYWY3NTI1NDA5ZDY5OWMxNjg5NjY1MzUyODQ4NjQ1MTEyM2I0ODUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHNyYy9saWIvcG9wcGxlci9lcGRmX3BvcHBsZXJfcG9zdHNjcmlwdC5jcHAgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9wb3BwbGVyL2VwZGZfcG9wcGxlcl9wb3N0c2NyaXB0LmNwcCBiL3NyYy9saWIvcG9wcGxlci9lcGRmX3BvcHBsZXJfcG9zdHNjcmlwdC5jcHAKLWluZGV4IDBjMjgzNmIuLjY1NjE5M2IgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL3BvcHBsZXIvZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwCi0rKysgYi9zcmMvbGliL3BvcHBsZXIvZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwCi1AQCAtODIsMTEgKzgyLDE0IEBAIGVwZGZfcG9zdHNjcmlwdF9wcmludCAoY29uc3QgRXBkZl9Qb3N0c2NyaXB0ICpwb3N0c2NyaXB0KQotIAotICAgLy8gRklYTUU6IGZpeCBwb3N0c2NyaXB0IHRpdGxlCi0gI2lmZGVmIEhBVkVfUE9QUExFUl8wXzIwCi0rICBzdGQ6OnZlY3RvcjxpbnQ+IHBhZ2VzOwotKyAgZm9yIChpbnQgaSA9IHBvc3RzY3JpcHQtPmZpcnN0X3BhZ2U7IGkgPD0gcG9zdHNjcmlwdC0+bGFzdF9wYWdlOyArK2kpIHsKLSsgICAgcGFnZXMucHVzaF9iYWNrKGkpOwotKyAgfQotICAgUFNPdXRwdXREZXYgcHNfZGV2KHBvc3RzY3JpcHQtPmZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHBvc3RzY3JpcHQtPnBkZmRvYywKLSAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSJQUyB0aXRsZSIsCi0tICAgICAgICAgICAgICAgICAgICAgcG9zdHNjcmlwdC0+Zmlyc3RfcGFnZSwKLS0gICAgICAgICAgICAgICAgICAgICBwb3N0c2NyaXB0LT5sYXN0X3BhZ2UsCi0rICAgICAgICAgICAgICAgICAgICAgcGFnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgcHNNb2RlUFMsCi0gICAgICAgICAgICAgICAgICAgICAgKGludClwb3N0c2NyaXB0LT53aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAoaW50KXBvc3RzY3JpcHQtPmhlaWdodCwKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXBkZl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lcGRmX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY2NGJhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9lcGRmX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiRXBkZiBpcyB0aGUgZ2x1ZSBiZXR3ZWVuIEVGTCBhbmQgbGlicG9wcGxlciIKLQotREVQRU5EUyA9ICJwb3BwbGVyIGV2YXMgZWNvcmUiCi1QViA9ICIwLjEuMCtzdm5yJHtTUkNQVn0iCi1TUkNSRVYgPSAiJHtFRkxfU1JDUkVWfSIKLQotaW5oZXJpdCBlZmwKLQotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0iCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAke0VfU1ZOfS90cnVuay9QUk9UTzttb2R1bGU9JHtTUkNOQU1FfTtwcm90b2NvbD1odHRwO3NjbWRhdGE9a2VlcCBcCi0gICAgZmlsZTovLzAwMDEtcmVtb3ZlLWFudGlhbGlhcy1mdW5jdGlvbnMtcG9wcGxlci1oYXMtZHJvcHBlZC10aGVtLS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItZXBkZl9wb3BwbGVyX3Bvc3RzY3JpcHQuY3BwLWZpeC1idWlsZC1mb3ItcG9wcGxlci1BUC5wYXRjaCBcCi0iCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1wb3BwbGVyIFwKLSAgICAtLWRpc2FibGUtbXVwZGYgXAotIgotCi0jIFNvbWUgdXBncmFkZSBwYXRoIHR3ZWFraW5nLCBhcyBpbiBldmFzCi1BVVRPX0xJQk5BTUVfUEtHUyA9ICIiCi0KLVBOQkxBQ0tMSVNUW2VwZGZdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVjb3JlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlcGRmXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBldmFzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlcGRmXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVwZGYtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtlcGRmXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVwZGYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9ldmFzLWdlbmVyaWMtbG9hZGVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9ldmFzLWdlbmVyaWMtbG9hZGVycy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNzdjMTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXZhcy1nZW5lcmljLWxvYWRlcnMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRXZhcyBnZW5lcmljIGxvYWRlcnMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTg3NTYzZWQzMGFkZDJiMGUzNDYwMjcyZDMxMzhhMDAiCi1ERVBFTkRTID0gImVpbmEgbGlicnN2ZyBjYWlybyIKLQotaW5oZXJpdCBlZmwKLQotU1JDTkFNRSA9ICJldmFzX2dlbmVyaWNfbG9hZGVycyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtc3ZnIFwKLSAgICAtLWRpc2FibGUtZ3N0cmVhbWVyIFwKLSAgICAtLWRpc2FibGUtbGlicmF3IFwKLSAgICAtLWRpc2FibGUtc3BlY3RyZSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3BvcHBsZXJdID0gIi0tZW5hYmxlLXBvcHBsZXIsLS1kaXNhYmxlLXBvcHBsZXIscG9wcGxlciIKLQotUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9ldmFzX2xvYWRlcl9wYWNrYWdlcyAiCi0KLXB5dGhvbiBzcGxpdF9ldmFzX2xvYWRlcl9wYWNrYWdlcyAoKSB7Ci0gICAgYmIubm90ZSggInNwbGl0dGluZyBwYWNrYWdlcyBmb3IgZXZhcyBnZW5lcmljIGxvYWRlcnMiICkKLSAgICBiYXNlZGlyID0gZC5leHBhbmQoICcke2xpYmRpcn0vZXZhcy91dGlscycpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYXNlZGlyLCAnZXZhc19pbWFnZV9sb2FkZXJcLiguKikkJywKLSAgICBvdXRwdXRfcGF0dGVybiA9ICJldmFzLWdlbmVyaWMtbG9hZGVyLSVzIiwKLSAgICBkZXNjcmlwdGlvbiA9ICdFdmFzIGdlbmVyaWMgbG9hZGVycyAtIG1vZHVsZSAlcycsCi0gICAgYWxsb3dfZGlycz1UcnVlLCByZWN1cnNpdmU9RmFsc2UsIGV4dHJhX2RlcGVuZHM9IiIgKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYmFzZWRpciwgJ2V2YXNfZ2VuZXJpY19wZGZfbG9hZGVyXC4oLiopJCcsCi0gICAgb3V0cHV0X3BhdHRlcm4gPSAiZXZhcy1nZW5lcmljLXBkZi1sb2FkZXItJXMiLAotICAgIGRlc2NyaXB0aW9uID0gJ0V2YXMgZ2VuZXJpYyBwZGYgbG9hZGVycyAtIG1vZHVsZSAlcycsCi0gICAgYWxsb3dfZGlycz1UcnVlLCByZWN1cnNpdmU9RmFsc2UsIGV4dHJhX2RlcGVuZHM9IiIgKQotfQotCi0jIGFkZCBzeW1saW5rcyBmb3IgZGlmZmVyZW50IGZvcm1hdCAoaXQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgdG8gcGFja2FnZSB0aGVtIGluIHNlcGFyYXRlIHBhY2thZ2VzKQotRklMRVNfZXZhcy1nZW5lcmljLWxvYWRlci14Y2YgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIueGNmLmd6IFwKLSIKLUZJTEVTX2V2YXMtZ2VuZXJpYy1sb2FkZXItc3ZnICs9ICIgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLnN2Zy5neiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIuc3ZneiBcCi0iCi1GSUxFU19ldmFzLWdlbmVyaWMtbG9hZGVyLXBkZiArPSAiIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2ltYWdlX2xvYWRlci5kb2MgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLmRvY3ggXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLm9kcCBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIub2RzIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2ltYWdlX2xvYWRlci5vZHQgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLnBwdCBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIucHB0eCBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19pbWFnZV9sb2FkZXIucnRmIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2ltYWdlX2xvYWRlci54bHMgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfaW1hZ2VfbG9hZGVyLnhsc3ggXAotIgotRklMRVNfZXZhcy1nZW5lcmljLXBkZi1sb2FkZXItbGlicmVvZmZpY2UgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19nZW5lcmljX3BkZl9sb2FkZXIuZG9jIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2dlbmVyaWNfcGRmX2xvYWRlci5kb2N4IFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2dlbmVyaWNfcGRmX2xvYWRlci5vZHAgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfZ2VuZXJpY19wZGZfbG9hZGVyLm9kcyBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19nZW5lcmljX3BkZl9sb2FkZXIub2R0IFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2dlbmVyaWNfcGRmX2xvYWRlci5wcHQgXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfZ2VuZXJpY19wZGZfbG9hZGVyLnBwdHggXAotICAgICR7bGliZGlyfS9ldmFzL3V0aWxzL2V2YXNfZ2VuZXJpY19wZGZfbG9hZGVyLnJ0ZiBcCi0gICAgJHtsaWJkaXJ9L2V2YXMvdXRpbHMvZXZhc19nZW5lcmljX3BkZl9sb2FkZXIueGxzIFwKLSAgICAke2xpYmRpcn0vZXZhcy91dGlscy9ldmFzX2dlbmVyaWNfcGRmX2xvYWRlci54bHN4IFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZXZhcy91dGlscy8uZGVidWciCi0KLVBBQ0tBR0VTICs9ICJldmFzLWdlbmVyaWMtbG9hZGVyLXN2ZyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5ldmFzLWdlbmVyaWMtbG9hZGVyLS4qIF5ldmFzLWdlbmVyaWMtcGRmLWxvYWRlci0uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2V2YXMtZ2VuZXJpYy1sb2FkZXJzXzEuMTUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2V2YXMtZ2VuZXJpYy1sb2FkZXJzXzEuMTUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNkYmNlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9ldmFzLWdlbmVyaWMtbG9hZGVyc18xLjE1LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtFX1JFTEVBU0VTfS9saWJzLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1NSQ1ZFUn0udGFyLmd6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNjYTg0NDNiOGNiZjE3Nzg0NTU5NWM1ZTAyZmJjNDljIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhYTIyYzliYTFhZTk2MjljMTZhM2ZlODA5ZWE5MjdmNjBiOGYwZDgwY2RiN2YxNDUxNTliOTk3YjlhZTJiY2QiCi0KLVBOQkxBQ0tMSVNUW2V2YXMtZ2VuZXJpYy1sb2FkZXJzXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBlaW5hIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtldmFzLWdlbmVyaWMtbG9hZGVyc10gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBldmFzLWdlbmVyaWMtbG9hZGVycyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXZhcy1nZW5lcmljLWxvYWRlcnNdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXZhcy1nZW5lcmljLWxvYWRlcnMtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXhwZWRpdGUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXhwZWRpdGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGU4NTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2V4cGVkaXRlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkV4cGVkaXRlIGlzIGEgY29tcHJlaGVuc2l2ZSBiZW5jaG1hcmtpbmcgc3VpdGUgZm9yIEV2YXMiCi1ERVBFTkRTID0gImVldCBldmFzIGxpYnNkbCIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDcwYmM2NWQ0NjIzN2U0ZWYzODZiZWViZTdkMGZlNWIiCi0KLUlOQ19QUiA9ICJyMCIKLQotaW5oZXJpdCBlCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9L1gxMSBcCi0gICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgLS1lbmFibGUtc2ltcGxlLXgxMSBcCi1cCi0gICAgLS1lbmFibGUtc29mdHdhcmUteDExIFwKLSAgICAtLWVuYWJsZS14cmVuZGVyLXgxMSBcCi0gICAgLS1lbmFibGUtc29mdHdhcmUtMTYteDExIFwKLSAgICAtLWVuYWJsZS1vcGVuZ2wteDExIFwKLSAgICAtLWVuYWJsZS1mYiBcCi0gICAgLS1kaXNhYmxlLXNvZnR3YXJlLWRkcmF3IFwKLSAgICAtLWRpc2FibGUtZGlyZWN0M2QgXAotIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSIKLVJERVBFTkRTXyR7UE59ID0gImV4cGVkaXRlLXRoZW1lcyBldmFzLWVuZ2luZS1mYiBldmFzLWVuZ2luZS1zb2Z0d2FyZS1nZW5lcmljIGV2YXMtZW5naW5lLXNvZnR3YXJlLXgxMSBldmFzLWVuZ2luZS1nbC14MTEgZXZhcy1sb2FkZXItcG5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXhwZWRpdGVfMS43LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9leHBlZGl0ZV8xLjcuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMyY2QwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9leHBlZGl0ZV8xLjcuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gIlwKLSAgICAke0VfTUlSUk9SfS8ke1NSQ05BTUV9LSR7U1JDVkVSfS50YXIuZ3ogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTU0ZmU4ZTQwZmVjNmE1NjExOTBmZjBmYjc1YjZiZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTA1YmUwOTZjOTExZTBkNjZkNGJkYzQ5N2ViYjkzNWEwNGFkMjM2OTZkZTkwODRhZWQ5OTU5YjUxNzJhNTkzZSIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVldCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtbG9hZGVyLXBuZyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXhwZWRpdGUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV4cGVkaXRlLXRoZW1lcyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXZhcy1lbmdpbmUtZ2wteDExIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHBlZGl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBldmFzLWVuZ2luZS1zb2Z0d2FyZS1nZW5lcmljIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHBlZGl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBleHBlZGl0ZS1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtZW5naW5lLXNvZnR3YXJlLXgxMSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXZhcy1lbmdpbmUtZmIgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9leHBlZGl0ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9leHBlZGl0ZV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YzJkNGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvZXhwZWRpdGVfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ1JFViA9ICJhNWU2YWY5MTdhZjUyODc3YjM3ODA5MDgxMWNmODM2YzE2ZDBiZmJiIgotUFYgPSAiMS43Ljk5K2dpdHIke1NSQ1BWfSIKLQotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXQuZW5saWdodGVubWVudC5vcmcvdG9vbHMvJHtCUE59LmdpdCBcCi0iCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfSIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVldCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtbG9hZGVyLXBuZyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXhwZWRpdGUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtZW5naW5lLXNvZnR3YXJlLWdlbmVyaWMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtZW5naW5lLWZiIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHBlZGl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBldmFzLWVuZ2luZS1zb2Z0d2FyZS14MTEgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2V4cGVkaXRlXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGV2YXMtZW5naW5lLWdsLXgxMSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbZXhwZWRpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZXhwZWRpdGUtZGV2IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtleHBlZGl0ZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBleHBlZGl0ZS10aGVtZXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9pbWxpYjJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvaW1saWIyX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU1YjMzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9pbWxpYjJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGdyYXBoaWMgbGlicmFyeSBmb3IgZmlsZSBsb2FkaW5nLCBzYXZpbmcsIHJlbmRlcmluZywgYW5kIG1hbmlwdWxhdGlvbiIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ0ODk1ZjI1M2MzMmYzOGUxODJkY2FmMzBmZThhMzUiCi0KLURFUEVORFMgPSAiZnJlZXR5cGUgbGlicG5nIGpwZWcgdmlydHVhbC9saWJ4MTEgbGlieGV4dCIKLVBST1ZJREVTID0gInZpcnR1YWwvaW1saWIyIgotUFYgPSAiMS40LjYrZ2l0ciR7U1JDUFZ9IgotU1JDUkVWID0gIjU2MGE1OGU2MTc3OGQ4NDk1Mzk0NGY3NDRhMDI1YWY2Y2U5ODYzMzQiCi0KLWluaGVyaXQgZWZsIGJpbmNvbmZpZwotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZW5saWdodGVubWVudC5vcmcvbGVnYWN5LyR7QlBOfS5naXQiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jIGF1dG90b29scy1icm9rZW5zZXAKLUIgPSAiJHtTfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLXdpdGgtZ2lmLC0td2l0aG91dC1naWYsZ2lmbGliIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLXdpdGgtdGlmZiwtLXdpdGhvdXQtdGlmZix0aWZmIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6aXAyLC0td2l0aG91dC1iemlwMixiemlwMiIKLVBBQ0tBR0VDT05GSUdbaWQzXSA9ICItLXdpdGgtaWQzLC0td2l0aG91dC1pZDMsbGliaWQzdGFnIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXggXAotICAgICAgICAgICAgICAgIC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSAiCi0KLSMgVE9ETzogVXNlIG1vcmUgZmluZSBncmFudWxhciB2ZXJzaW9uCi0jT0VfTFRfUlBBVEhfQUxMT1c9Ijoke2xpYmRpcn0vaW1saWIyL2xvYWRlcnM6JHtsaWJkaXJ9L2ltbGliMi9maWx0ZXJzOiIKLU9FX0xUX1JQQVRIX0FMTE9XID0gImFueSIKLU9FX0xUX1JQQVRIX0FMTE9XW2V4cG9ydF09IjEiCi0KLVBBQ0tBR0VTID0rICJpbWxpYjItbG9hZGVycy1kYmcgaW1saWIyLWZpbHRlcnMtZGJnIGltbGliMi1sb2FkZXJzIGltbGliMi1maWx0ZXJzIgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiAke2xpYmRpcn0vaW1saWIyLyovKi5zbyIKLUZJTEVTXyR7UE59LWRiZyA9ICIke2xpYmRpcn0vLmRlYnVnLyAke2JpbmRpcn0vLmRlYnVnLyAke3ByZWZpeH0vc3JjL2RlYnVnLyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2ltbGliMi1jb25maWcgJHtsaWJkaXJ9Lyouc28gJHtpbmNsdWRlZGlyfSIKLUZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCi1GSUxFU19pbWxpYjItbG9hZGVycyA9ICIke2xpYmRpcn0vaW1saWIyL2xvYWRlcnMvKi5zbyIKLUZJTEVTX2ltbGliMi1maWx0ZXJzID0gIiR7bGliZGlyfS9pbWxpYjIvZmlsdGVycy8qLnNvIgotRklMRVNfaW1saWIyLWxvYWRlcnMtZGJnICs9ICIke2xpYmRpcn0vaW1saWIyL2xvYWRlcnMvLmRlYnVnIgotRklMRVNfaW1saWIyLWZpbHRlcnMtZGJnICs9ICIke2xpYmRpcn0vaW1saWIyL2ZpbHRlcnMvLmRlYnVnIgotCi0jIHBuZy5zbyBqcGVnLnNvIGlkMy5zbyBhcmUgYWxzbyBwcm92aWRlZCBieSBsaWdodG1lZGlhc2Nhbm5lcgotUFJJVkFURV9MSUJTX2ltbGliMi1sb2FkZXJzID0gInBubS5zbyBsYm0uc28gYXJnYi5zbyB0aWZmLnNvIHpsaWIuc28gYm1wLnNvIHRnYS5zbyBnaWYuc28geHBtLnNvIGJ6Mi5zbyIKLQotUFJJVkFURV9MSUJTX2ltbGliMi1maWx0ZXJzID0gImJ1bXBtYXAuc28gY29sb3Jtb2Quc28gdGVzdGZpbHRlci5zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2xpYmVmbHZhbGEvZGlzYWJsZS5laW5hLnRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJlZmx2YWxhL2Rpc2FibGUuZWluYS50ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGJlMTMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvZWZsL2xpYmVmbHZhbGEvZGlzYWJsZS5laW5hLnRlc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1JdCBjYXVzZXMgdGVzdGVpbmEuYyBidWlsZCB0byBmYWlsIGxpbmtpbmcgdG8gaW50ZXJuYWwgZWluYV8uKl97aW5pdCxzaHV0ZG93bn0gc3ltYm9scwotYXMgcmVwb3J0ZWQgaW46Ci1odHRwOi8vbGlzdHMuYWxpb3RoLmRlYmlhbi5vcmcvcGlwZXJtYWlsL3BrZy1mc28tbWFpbnQvMjAxMC1NYXkvMDAzMDU2Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLQotZGlmZiAtdU5yIHZhbGEvdGVzdHMvdGVzdGVpbmEudmFsYSAuLi8uLi8uLi9hcm05MjB0dC1vZS1saW51eC1nbnVlYWJpL2xpYmVmbHZhbGEvMV8yMDExLjAxLjEzLjErc3ZucjgyMDcwLXIyL3ZhbGEvdGVzdHMvdGVzdGVpbmEudmFsYQotLS0tIHZhbGEvdGVzdHMvdGVzdGVpbmEudmFsYQkyMDE0LTAxLTEzIDE2OjE2OjUzLjk4NDk5OTAzNSArMDEwMAotKysrIC4uLy4uLy4uL2FybTkyMHR0LW9lLWxpbnV4LWdudWVhYmkvbGliZWZsdmFsYS8xXzIwMTEuMDEuMTMuMStzdm5yODIwNzAtcjIvdmFsYS90ZXN0cy90ZXN0ZWluYS52YWxhCTIwMTAtMDItMjYgMDk6MDI6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMTUzLDIyICsxNTMsMjIgQEAKLSAKLSB2b2lkIHRlc3RfZWluYV9iZW5jaG1hcmsoKQotIHsKLS0gICAgYXNzZXJ0KCBFaW5hLk1vZHVsZS5pbml0KCkgKTsKLS0gICAgYXNzZXJ0KCBFaW5hLkxpc3QuaW5pdCgpICk7Ci0tICAgIGFzc2VydCggRWluYS5BcnJheS5pbml0KCkgKTsKLS0gICAgYXNzZXJ0KCBFaW5hLkJlbmNobWFyay5pbml0KCkgKTsKLS0gICAgYXNzZXJ0KCBFaW5hLk1lbXBvb2wuaW5pdCgpICk7Ci0rLy8gIGFzc2VydCggRWluYS5Nb2R1bGUuaW5pdCgpICk7Ci0rLy8gIGFzc2VydCggRWluYS5MaXN0LmluaXQoKSApOwotKy8vICBhc3NlcnQoIEVpbmEuQXJyYXkuaW5pdCgpICk7Ci0rLy8gIGFzc2VydCggRWluYS5CZW5jaG1hcmsuaW5pdCgpICk7Ci0rLy8gIGFzc2VydCggRWluYS5NZW1wb29sLmluaXQoKSApOwotICAgICB2YXIgYiA9IG5ldyBFaW5hLkJlbmNobWFyayggInRlc3QiLCAidGVzdCIpOwotICAgICBhc3NlcnQoIGIucmVnaXN0ZXIoICJib2d1cyIsIHNwZWNfb25lLCAwLCAxMDAsIDUgKSApOwotICAgICB1bm93bmVkIEVpbmEuQXJyYXk8c3RyaW5nPiByZXN1bHQgPSBiLnJ1bigpOwotICAgICBhc3NlcnQoIHJlc3VsdC5jb3VudF9nZXQoKSA9PSAyICk7Ci0gICAgIHJlc3VsdCA9IG51bGw7Ci0gICAgIGIgPSBudWxsOwotLSAgICBhc3NlcnQoIEVpbmEuTWVtcG9vbC5zaHV0ZG93bigpICk7Ci0tICAgIGFzc2VydCggRWluYS5CZW5jaG1hcmsuc2h1dGRvd24oKSApOwotLSAgICBhc3NlcnQoIEVpbmEuQXJyYXkuc2h1dGRvd24oKSApOwotLSAgICBhc3NlcnQoIEVpbmEuTGlzdC5zaHV0ZG93bigpICk7Ci0tICAgIGFzc2VydCggRWluYS5Nb2R1bGUuc2h1dGRvd24oKSApOwotKy8vICBhc3NlcnQoIEVpbmEuTWVtcG9vbC5zaHV0ZG93bigpICk7Ci0rLy8gIGFzc2VydCggRWluYS5CZW5jaG1hcmsuc2h1dGRvd24oKSApOwotKy8vICBhc3NlcnQoIEVpbmEuQXJyYXkuc2h1dGRvd24oKSApOwotKy8vICBhc3NlcnQoIEVpbmEuTGlzdC5zaHV0ZG93bigpICk7Ci0rLy8gIGFzc2VydCggRWluYS5Nb2R1bGUuc2h1dGRvd24oKSApOwotIH0KLSAKLSAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvbGliZWZsdmFsYV9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJlZmx2YWxhX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFmNDg5My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJlZmx2YWxhX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiVmFsYSBtZWV0cyB0aGUgRW5saWdodGVubWVudCBGb3VuZGF0aW9uIExpYnJhcmllcyIKLUFVVEhPUiA9ICJNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi1TRUNUSU9OID0gImRldmVsIgotREVQRU5EUyA9ICJ2YWxhLW5hdGl2ZSBnbGliLTIuMCBkYnVzIGRidXMtZ2xpYiBlaW5hIGVldCBldmFzIGVjb3JlIGVkamUgZWxlbWVudGFyeSB0aWZmIgotUFYgPSAiMjAxMS4wMS4xMy4xK3N2bnIke1NSQ1BWfSIKLVBFID0gIjEiCi1QUiA9ICJyMiIKLVNSQ1JFViA9ICIke0VGTF9TUkNSRVZ9IgotU1JDTkFNRSA9ICJ2YWxhIgotCi1pbmhlcml0IGUtYmFzZSBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyB2YWxhCi0KLVNSQ19VUkkgPSAiJHtFX1NWTn0vdHJ1bmsvQklORElOR1M7bW9kdWxlPSR7U1JDTkFNRX07cHJvdG9jb2w9aHR0cCBcCi0gICAgZmlsZTovL2Rpc2FibGUuZWluYS50ZXN0LnBhdGNoIFwKLSIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZXhhbXBsZXMiCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RhdGFkaXJ9L2xpYmVmbHZhbGEgJHtiaW5kaXJ9LyoiCi0KLVBOQkxBQ0tMSVNUW2xpYmVmbHZhbGFdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGVsZW1lbnRhcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJld2VhdGhlcl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL2VmbC9saWJld2VhdGhlcl9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzOTg4YjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9lZmwvbGliZXdlYXRoZXJfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJFRkwtYmFzZWQgd2VhdGhlciB3aWRnZXQgbGlicmFyeSIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLVBMQUlOO21kNT1jOTEwYjY0NWVkYTAwMDVjY2VjNDZmNzUyMDNkYzk2ZSIKLQotREVQRU5EUyA9ICJlY29yZSBlZGplIgotUFYgPSAiMC4wLjArc3ZuciR7U1JDUFZ9IgotU1JDUkVWID0gIiR7RUZMX1NSQ1JFVn0iCi0KLWluaGVyaXQgZWZsCi1TUkNfVVJJID0gIiR7RV9TVk59L3RydW5rL1BST1RPO21vZHVsZT0ke1NSQ05BTUV9O3Byb3RvY29sPWh0dHA7c2NtZGF0YT1rZWVwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZWRqZS1jYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZWRqZV9jYyIKLQotUlNVR0dFU1RTXyR7UE59ID0gImVsZW1lbnRhcnktdGVzdHMiCi0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZyBcCi0gICAgICAgICAgIC1lIHM6LyR7VEFSR0VUX1NZU306OmcgXAotICAgICAgICAgICAgICBld2VhdGhlci5wYwotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tcGx1Z2lucyIKLQotRklMRVNfJHtQTn0tdGhlbWVzID0gIlwKLSAgICAke2RhdGFkaXJ9IFwKLSIKLQotRklMRVNfJHtQTn0tcGx1Z2lucyA9ICJcCi0gICAgJHtsaWJkaXJ9L2V3ZWF0aGVyL3BsdWdpbnMvKi5zbyBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiXAotICAgICR7bGliZGlyfS9ld2VhdGhlci9wbHVnaW5zLy5kZWJ1ZyBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAgICR7bGliZGlyfS9ld2VhdGhlci9wbHVnaW5zLyouYSBcCi0gICAgJHtsaWJkaXJ9L2V3ZWF0aGVyL3BsdWdpbnMvKi5sYSBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIlwKLSAgICAke1BOfS10aGVtZXMgXAotICAgICR7UE59LXBsdWdpbnMgXAotIgotCi1QTkJMQUNLTElTVFtsaWJld2VhdGhlcl0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2NDkvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1lZmwtc2RrLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1lZmwtc2RrLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTRlMmM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZWZsLXNkay5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiRWZsIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVBSID0gInIxIgotCi1yZXF1aXJlIHBhY2thZ2Vncm91cC1lZmwtc2RrLmluYwotCi1QQUNLQUdFUyA9ICIke1BOfSIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXNkayBcCi0gICAgJHtTREstRUZMfSBcCi0gICAgJHtTREstRVhUUkFTfSIKLQotUE5CTEFDS0xJU1RbcGFja2FnZWdyb3VwLWVmbC1zZGtdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZWxlbWVudGFyeS1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWVmbC1zZGsuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1lZmwtc2RrLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJiMDQ1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWVmbC1zZGsuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU0RLLUVGTCA9ICIgXAotICAgICBlZmwtZGV2IFwKLSAgICAgZWxlbWVudGFyeS1kZXYgXAotICAgICBlZGJ1cy1kZXYgXAotICAgICBsdWFqaXQtZGV2IFwKLSIKLQotU0RLLUVYVFJBUyA/PSAiIgotU0RLLUVYVFJBU19xZW11eDg2ID89ICIgdmFsZ3JpbmQgbHR0bmctdXN0LWRldiIKLVNESy1FWFRSQVNfcWVtdXg4Ni02NCA/PSAiIGx0dG5nLXVzdC1kZXYiCi1TREstRVhUUkFTX3FlbXVwcGMgPz0gIiBsdHRuZy11c3QtZGV2IgotU0RLLUVYVFJBU19xZW11YXJtID89ICIgbHR0bmctdXN0LWRldiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ5ZGRlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWVmbC1zdGFuZGFsb25lLXNkay10YXJnZXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkVmbCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1QUiA9ICJyMSIKLQotcmVxdWlyZSBwYWNrYWdlZ3JvdXAtZWZsLXNkay5pbmMKLQotUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZGJnIgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0IFwKLSAgICAke1NESy1FRkx9IFwKLSAgICAke1NESy1FWFRSQVN9IgotCi1QTkJMQUNLTElTVFtwYWNrYWdlZ3JvdXAtZWZsLXN0YW5kYWxvbmUtc2RrLXRhcmdldF0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlbGVtZW50YXJ5LWRldiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteDExLWlsbHVtZS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteDExLWlsbHVtZS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVlYmNhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXgxMS1pbGx1bWUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgSWxsdW1lIFdpbmRvd2luZyBFbnZpcm9ubWVudCAtLSBpbnN0YWxsIHRoaXMgdGFzayB0byBnZXQgdGhlIEVubGlnaHRlbm1lbnQgV2luZG93IE1hbmFnZXIgKyB0aGUgSWxsdW1lIGVudmlyb25tZW50LiIKLVNFQ1RJT04gPSAieDExL3dtIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1RPUERJUn0vbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgotUFYgPSAiMS4wIgotUFIgPSAicjUiCi0KLWluaGVyaXQgcGFja2FnZWdyb3VwIGFsbGFyY2gKLQotIyBEZWZhdWx0IHRoZW1lIGFuZCBjb25maWcKLUVUSEVNRSA/PSAiZS13bS10aGVtZS1kZWZhdWx0IgotRUNPTkZJRyA/PSAiZS13bS1jb25maWctbW9iaWxlIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJcCi0gICAgJHtFVEhFTUV9IFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXgxMS14c2VydmVyIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS14MTEtdXRpbHMgXAotICAgIFwKLSAgICBlLXdtIFwKLSAgICAke0VDT05GSUd9IFwKLSIKLQotUE5CTEFDS0xJU1RbcGFja2FnZWdyb3VwLXgxMS1pbGx1bWVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbcGFja2FnZWdyb3VwLXgxMS1pbGx1bWVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZS13bS1jb25maWctbW9iaWxlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtwYWNrYWdlZ3JvdXAteDExLWlsbHVtZV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBlLXdtLXRoZW1lLWRlZmF1bHQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDlmMmVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiV2Via2l0IGJyb3dzZXIgZW5naW5lLCBFRkwgZWRpdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DT1BZSU5HLkxJQjttZDU9ZDBjNmQ2Mzk3YTVkODQyODZkZGE3NThkYTU3YmQ2OTEgXAotICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCi0gICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKLSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKLSIKLQotIyB5b3UgbmVlZCBoYXJmYnV6eiB3aXRoIGljdSBlbmFibGVkLCB5b3UgY2FuIGFkZCB0aGlzIHRvIHlvdXIgY29uZmlnOgotIyBQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1oYXJmYnV6eiA9ICIgaWN1IgotREVQRU5EUyA9ICJpY3UgbGlieHNsdCBzcWxpdGUzIGdwZXJmLW5hdGl2ZSBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUganBlZyBcCi0gICAgICAgICAgIGxpYnBuZyBsaWJ4dCBmb250Y29uZmlnIGNhaXJvIGZyZWV0eXBlIGdsaWItMi4wIGxpYnNvdXAtMi40IFwKLSAgICAgICAgICAgbGlieG1sMiBwYW5nbyBlaW5hIGVjb3JlIGV2YXMgZWRqZSBlbGRidXMgaGFyZmJ1enogZW5jaGFudCBcCi0gICAgICAgICAgIHJ1YnktbmF0aXZlIGVsZW1lbnRhcnkiCi0KLVBFID0gIjEiCi0KLVNSQ1ZFUiA/PSAiJHtQVn0iCi1TUkNfVVJJID0gIlwKLSAgICAke0VfUkVMRUFTRVN9L2xpYnMvd2Via2l0LWVmbC9ld2Via2l0LSR7U1JDVkVSfS50YXIueHogXAotIgotUyA9ICIke1dPUktESVJ9L2V3ZWJraXQiCi0KLWluaGVyaXQgY21ha2UgbGliX3BhY2thZ2UgcGtnY29uZmlnIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0gICAgLURQT1JUPUVmbCBcCi0gICAgLURTSEFSRURfQ09SRT1PbiBcCi0gICAgLURFTkFCTEVfRFJBR19TVVBQT1JUPU9uIFwKLSAgICAtREVOQUJMRV9XRUJfQVVESU89T2ZmIFwKLSAgICAtREVOQUJMRV9WSURFTz1PZmYgXAotICAgIC1ERU5BQkxFX1ZJREVPX1RSQUNLPU9mZiBcCi0gICAgLURFTkFCTEVfQUNDRVNTSUJJTElUWT1PZmYgXAotICAgIC1ERU5BQkxFX0JBVFRFUllfU1RBVFVTPU9mZiBcCi0iCi0jIGdlbmVyYXRlZCBBU00gY29kZSBpc24ndCBjb21wYXRpYmxlIHdpdGggYXJtdls0NV0KLSMgaXQgd2FzIHJlbW92ZWQgZnJvbSBtYWNybyBhc3NlbWJsZXIgaW4gdXBzdHJlYW0gY29tbWl0IDEyMTg4NQotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxOTgKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY0ID0gIiAtREVOQUJMRV9MTElOVD1PZmYgLURFTkFCTEVfSklUPU9mZiAtREVOQUJMRV9ERkdfSklUPU9mZiAtREVOQUJMRV9GVExfSklUPU9mZiIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY1ID0gIiAtREVOQUJMRV9MTElOVD1PZmYgLURFTkFCTEVfSklUPU9mZiAtREVOQUJMRV9ERkdfSklUPU9mZiAtREVOQUJMRV9GVExfSklUPU9mZiIKLQotIyBoYWNrIGl0IGluIE9wdGlvbnNFZmwuY21ha2UgYmVjYXVzZSB0aGF0IG92ZXJydWxlcyAtREVOQUJMRV9MTElOVD1PZmYKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2FybXY0KCkgewotICAgIHNlZCAtaSAncy9XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTExJTlQgT04pL1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MTElOVCBPRkYpL2cnICR7U30vU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLX0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2FybXY1KCkgewotICAgIHNlZCAtaSAncy9XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTExJTlQgT04pL1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MTElOVCBPRkYpL2cnICR7U30vU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLX0KLQotIyBhbmQgZGlzYWJsZWQgTExJTlQgY3VycmVudGx5IGlzbid0IHN1cHBvcnRlZCwgc28gcmVzdHJpY3QgdG8gYXJtdjdhIGFuZCB4ODYqCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKC0pIgotQ09NUEFUSUJMRV9NQUNISU5FX3g4NiA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX3g4Ni02NCA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY3YSA9ICIoLiopIgotCi1MRUFEX1NPTkFNRSA9ICJsaWJld2Via2l0LnNvIgotUEFDS0FHRVMgPSsgIiR7UE59bGF1bmNoZXItZGJnICR7UE59bGF1bmNoZXIgJHtQTn0taW5zcGVjdG9yIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ld2Via2l0Mi0xL3RoZW1lcy9kZWZhdWx0LmVkaiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgotRklMRVNfJHtQTn1sYXVuY2hlciA9ICIke2JpbmRpcn0vRVdlYkxhdW5jaGVyIgotRklMRVNfJHtQTn1sYXVuY2hlci1kYmcgPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy9FV2ViTGF1bmNoZXIiCi1GSUxFU18ke1BOfS1pbnNwZWN0b3IgKz0gIiR7ZGF0YWRpcn0vZXdlYmtpdDItMS9pbnNwZWN0b3IiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzQwNjU5LwotUE5CTEFDS0xJU1Rbd2Via2l0LWVmbF0gPz0gIk9sZCBhbmQgdW5tYWludGFuZWQgZm9yayB3aXRoIG1hbnkgc2VjdXJpdHkgaXNzdWVzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC93ZWJraXQvd2Via2l0LWVmbC8wMDAxLU9wdGlvbnNDb21tb24uY21ha2UtZG9uLXQtbWl4LUNYWF9GTEFHUy1pbnRvLUNfRkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDEtT3B0aW9uc0NvbW1vbi5jbWFrZS1kb24tdC1taXgtQ1hYX0ZMQUdTLWludG8tQ19GTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTliN2JiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDEtT3B0aW9uc0NvbW1vbi5jbWFrZS1kb24tdC1taXgtQ1hYX0ZMQUdTLWludG8tQ19GTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZTZjYWFmNmU4MGI5YzgwZGMyYjg2MGI0NzFhOGYwNWU4MjVmNmRmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTQgQXVnIDIwMTQgMDE6MDA6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIE9wdGlvbnNDb21tb24uY21ha2U6IGRvbid0IG1peCBDWFhfRkxBR1MgaW50byBDX0ZMQUdTCi0KLSogaXQgd2FzIGFkZGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAyNjEKLSogY2F1c2VzIGJ1aWxkIGZhaWx1cmVzIGluIHVkaXM4NiB3aGljaCBleHBsaWNpdGx5IGFza3MgZm9yIGdjYyBidXQgdGhlbgotICBnZXRzIGcrKyBmbGFncyBmcm9tIENNQUtFX0NYWF9GTEFHUy4KLQotY2MxOiBlcnJvcjogY29tbWFuZCBsaW5lIG9wdGlvbiAnLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuJyBpcyB2YWxpZAotZm9yIEMrKy9PYmpDKysgYnV0IG5vdCBmb3IgQyBbLVdlcnJvcl0KLWNjMTogZXJyb3I6IGNvbW1hbmQgbGluZSBvcHRpb24gJy1mcGVybWlzc2l2ZScgaXMgdmFsaWQgZm9yIEMrKy9PYmpDKysKLWJ1dCBub3QgZm9yIEMgWy1XZXJyb3JdCi1jYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwotU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlRmlsZXMvSmF2YVNjcmlwdENvcmUuZGlyL2J1aWxkLm1ha2U6MTExODI6Ci1yZWNpcGUgZm9yIHRhcmdldAotJ1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUZpbGVzL0phdmFTY3JpcHRDb3JlLmRpci9kaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Ni5jLm8nCi1mYWlsZWQKLW1ha2VbMl06ICoqKgotW1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUZpbGVzL0phdmFTY3JpcHRDb3JlLmRpci9kaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Ni5jLm9dCi1FcnJvciAxCi1tYWtlWzJdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgotbWFrZVsyXTogTGVhdmluZyBkaXJlY3RvcnkKLScvT0UvYnVpbGQvb2UtY29yZS90bXAtZWdsaWJjL3dvcmsvY29yZTItNjQtb2UtbGludXgvd2Via2l0LWVmbC8xXzEuMTAuMCsxLjExLjAtYmV0YTEtcjAvYnVpbGQnCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIFNvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQotaW5kZXggZTMwNGE5OS4uMDQ1YzYxNCAxMDA2NDQKLS0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCi0rKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZQotQEAgLTI1LDcgKzI1LDcgQEAgZW5kaWYgKCkKLSBzZXRfcHJvcGVydHkoR0xPQkFMIFBST1BFUlRZIFVTRV9GT0xERVJTIE9OKQotIAotIGlmIChDTUFLRV9DT01QSUxFUl9JU19HTlVDWFggT1IgIiR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkNsYW5nIikKLS0gICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmciKQotKyAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmciKQotICAgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLXN0ZD1jKysxMSAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1ydHRpIikKLSBlbmRpZiAoKQotIAotLS0gCi0yLjEuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDItV2ViS2l0SGVscGVycy5jbWFrZS1BZGQtV25vLWVycm9yLWRlcHJlY2F0ZWQtZGVjbGFyYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwvMDAwMi1XZWJLaXRIZWxwZXJzLmNtYWtlLUFkZC1Xbm8tZXJyb3ItZGVwcmVjYXRlZC1kZWNsYXJhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjdhOWU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwvMDAwMi1XZWJLaXRIZWxwZXJzLmNtYWtlLUFkZC1Xbm8tZXJyb3ItZGVwcmVjYXRlZC1kZWNsYXJhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBkZTkzOTUxZjg5ZTg1MWI2Njg5NzE4MDIyZWViYjRiOGIxZDE0YzA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBKYW4gMjAxNCAxNzoyMToyNSArMDEwMAotU3ViamVjdDogW1BBVENIIDIvM10gV2ViS2l0SGVscGVycy5jbWFrZTogQWRkCi0gLVduby1lcnJvcj1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLWVycm9yPWNhc3QtYWxpZ24KLSAtV25vLWVycm9yPXR5cGUtbGltaXRzCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIFNvdXJjZS9jbWFrZS9XZWJLaXRIZWxwZXJzLmNtYWtlIHwgMTAgKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0SGVscGVycy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRIZWxwZXJzLmNtYWtlCi1pbmRleCAyMjdiOWVlLi5hZTUyZWY2IDEwMDY0NAotLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEhlbHBlcnMuY21ha2UKLSsrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRIZWxwZXJzLmNtYWtlCi1AQCAtNDAsNiArNDAsMjUgQEAgbWFjcm8oV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyBfdGFyZ2V0KQotICAgICAgICAgICAgICMgRklYTUU6IFdoZW4gd2UgdXNlIC1mbm8tdHJlZS1kY2UgdG8gc3VwcG9ydCB0aGUganNDU3RhY2sgYnJhbmNoIG1lcmdlLCBidWlsZCBlcnJvciBvY2N1cnMgZHVlIHRvIHRoZSB1bmluaXRpYWxpemF0aW9uLiBUZW1wb3JhcmlseSB3ZSBzZXQKLSAgICAgICAgICAgICAjIHVuaW5pdGlhbGl6ZWQgYXMgYnVpbGQgd2FybmluZyBpbiBvcmRlciB0byBzdXBwb3J0IHRoZSBqc0NTdGFjayBtZXJnZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzc3Ny4KLSAgICAgICAgICAgICBzZXQoT0xEX0NPTVBJTEVfRkxBR1MgIi1XZXJyb3IgLVduby1lcnJvcj11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tZXJyb3I9dW5pbml0aWFsaXplZCAtV25vLWVycm9yPWxpdGVyYWwtc3VmZml4ICR7T0xEX0NPTVBJTEVfRkxBR1N9IikKLSsgICAgICAgICAgICAjIGxpYnNvdXAtMi40L2xpYnNvdXAvc291cC1wcm94eS11cmktcmVzb2x2ZXIuaDoxMzo4NDogZXJyb3I6ICdHVHlwZSBzb3VwX3Byb3h5X3VyaV9yZXNvbHZlcl9nZXRfdHlwZSgpJyBpcyBkZXByZWNhdGVkIChkZWNsYXJlZCBhdCAvT0UvYnVpbGQvb2UtY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL2luY2x1ZGUvbGlic291cC0yLjQvbGlic291cC9zb3VwLXByb3h5LXVyaS1yZXNvbHZlci5oOjQ4KSBbLVdlcnJvcj1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc10KLSsgICAgICAgICAgICBzZXQoT0xEX0NPTVBJTEVfRkxBR1MgIi1Xbm8tZXJyb3I9ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgJHtPTERfQ09NUElMRV9GTEFHU30iKQotKyAgICAgICAgICAgICMgd2Via2l0LWVmbC8xXzEuMTAuMCsxLjExLjAtYmV0YTEtcjAvZXdlYmtpdC9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaDo3NDI6ODc6IGVycm9yOiBjYXN0IGZyb20gJ3VpbnQ4X3QqIHtha2EgdW5zaWduZWQgY2hhcip9JyB0byAnV1RGOjpTdHJpbmdJbXBsKionIGluY3JlYXNlcyByZXF1aXJlZCBhbGlnbm1lbnQgb2YgdGFyZ2V0IHR5cGUgWy1XZXJyb3I9Y2FzdC1hbGlnbl0KLSsgICAgICAgICAgICBzZXQoT0xEX0NPTVBJTEVfRkxBR1MgIi1Xbm8tZXJyb3I9Y2FzdC1hbGlnbiAke09MRF9DT01QSUxFX0ZMQUdTfSIpCi0rICAgICAgICAgICAgIyB3ZWJraXQtZWZsLzFfMS4xMC4wKzEuMTEuMC1iZXRhMS1yMC9ld2Via2l0L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9XZWJNZW1vcnlTYW1wbGVyTGludXguY3BwOjcwOjE2OiBlcnJvcjogY29tcGFyaXNvbiBpcyBhbHdheXMgZmFsc2UgZHVlIHRvIGxpbWl0ZWQgcmFuZ2Ugb2YgZGF0YSB0eXBlIFstV2Vycm9yPXR5cGUtbGltaXRzXQotKyAgICAgICAgICAgIHNldChPTERfQ09NUElMRV9GTEFHUyAiLVduby1lcnJvcj10eXBlLWxpbWl0cyAke09MRF9DT01QSUxFX0ZMQUdTfSIpCi0rICAgICAgICAgICAgIyB3ZWJraXQtZWZsLzFfMS4xMS4wLXIwL2V3ZWJraXQvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6ODMyOjU6IGVycm9yOiBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBtZW1iZXIgJ19FdmFzX0dMX0NvbmZpZzo6Z2xlc192ZXJzaW9uJyBbLVdlcnJvcj1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVyc10KLSsgICAgICAgICAgICAjIHRoaXMgb25lIGlzIG5ldyB3aXRoIGVmbC0xLjEyCi0rICAgICAgICAgICAgc2V0KE9MRF9DT01QSUxFX0ZMQUdTICItV25vLWVycm9yPW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzICR7T0xEX0NPTVBJTEVfRkxBR1N9IikKLSsgICAgICAgICAgICAjIHdlYmtpdC1lZmwvMV8xLjExLjAtcjAvZXdlYmtpdC9Tb3VyY2UvV1RGL3d0Zi9kdG9hL2JpZ251bS5jYzoxMDU6MTA6IGVycm9yOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3Qgb2NjdXIgd2hlbiBhc3N1bWluZyB0aGF0IChYICsgYykgPCBYIGlzIGFsd2F5cyBmYWxzZSBbLVdlcnJvcj1zdHJpY3Qtb3ZlcmZsb3ddCi0rICAgICAgICAgICAgIyB0aGlzIG9uZSBpcyBuZXcgd2l0aCBnY2MtNS4yCi0rICAgICAgICAgICAgc2V0KE9MRF9DT01QSUxFX0ZMQUdTICItV25vLWVycm9yPXN0cmljdC1vdmVyZmxvdyAke09MRF9DT01QSUxFX0ZMQUdTfSIpCi0rICAgICAgICAgICAgIyB3ZWJraXQtZWZsLzFfMS4xMS4wLXIwL2V3ZWJraXQvU291cmNlL1dURi93dGYvU2F0dXJhdGVkQXJpdGhtZXRpYy5oOjQ2OjI2OiBlcnJvcjogc3VnZ2VzdCBwYXJlbnRoZXNlcyBhcm91bmQgb3BlcmFuZCBvZiAnIScgb3IgY2hhbmdlICcmJyB0byAnJiYnIG9yICchJyB0byAnficgWy1XZXJyb3I9cGFyZW50aGVzZXNdCi0rICAgICAgICAgICAgIyB0aGlzIG9uZSBpcyBuZXcgd2l0aCBnY2MtNS4yCi0rICAgICAgICAgICAgc2V0KE9MRF9DT01QSUxFX0ZMQUdTICItV25vLWVycm9yPXBhcmVudGhlc2VzICR7T0xEX0NPTVBJTEVfRkxBR1N9IikKLSsgICAgICAgICAgICAjIHdlYmtpdC1lZmwvMV8xLjExLjAtcjAvZXdlYmtpdC9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoxMDM6MTA4OiBlcnJvcjogbG9naWNhbCBub3QgaXMgb25seSBhcHBsaWVkIHRvIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZiBjb21wYXJpc29uIFstV2Vycm9yPWxvZ2ljYWwtbm90LXBhcmVudGhlc2VzXQotKyAgICAgICAgICAgICMgdGhpcyBvbmUgaXMgbmV3IHdpdGggZ2NjLTUuMgotKyAgICAgICAgICAgIHNldChPTERfQ09NUElMRV9GTEFHUyAiLVduby1lcnJvcj1sb2dpY2FsLW5vdC1wYXJlbnRoZXNlcyAke09MRF9DT01QSUxFX0ZMQUdTfSIpCi0rCi0gICAgICAgICBlbmRpZiAoKQotIAotICAgICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7X3RhcmdldH0gUFJPUEVSVElFUwotLS0gCi0yLjEuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDMtRkVCbGVuZE5FT04uaC1maXgtbWlzc2luZy1zZW1pY29sb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDMtRkVCbGVuZE5FT04uaC1maXgtbWlzc2luZy1zZW1pY29sb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MThlZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC93ZWJraXQvd2Via2l0LWVmbC8wMDAzLUZFQmxlbmRORU9OLmgtZml4LW1pc3Npbmctc2VtaWNvbG9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBhMDc2ZDc2YjhlODg2MmJkNjQxY2Q5OTExOTBlODJjZmQ0NzhjYzY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMCBBdWcgMjAxNCAwMDo1MjowMyArMDIwMAotU3ViamVjdDogW1BBVENIIDMvM10gRkVCbGVuZE5FT04uaDogZml4IG1pc3Npbmcgc2VtaWNvbG9uCi0KLSogT3RoZXJ3aXNlIGZhaWxzIHdpdGg6Ci1JbiBmaWxlIGluY2x1ZGVkIGZyb20gZXdlYmtpdC9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOjI5OjA6Ci1ld2Via2l0L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOiBJbiBtZW1iZXIgZnVuY3Rpb24gJ3ZpcnR1YWwgdm9pZCBXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSc6Ci1ld2Via2l0L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOjEzMDo1OiBlcnJvcjogZXhwZWN0ZWQgcHJpbWFyeS1leHByZXNzaW9uIGJlZm9yZSAnfScgdG9rZW4KLSAgICAgfQotICAgICBeCi1ld2Via2l0L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOjEzMDo1OiBlcnJvcjogcmV0dXJuLXN0YXRlbWVudCB3aXRoIGEgdmFsdWUsIGluIGZ1bmN0aW9uIHJldHVybmluZyAndm9pZCcgWy1mcGVybWlzc2l2ZV0KLWV3ZWJraXQvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmg6MTMwOjU6IGVycm9yOiBleHBlY3RlZCAnOycgYmVmb3JlICd9JyB0b2tlbgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKLWluZGV4IDFjNTA3NjUuLmY0YjZmNDYgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAotKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKLUBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQotIAotICAgICBpZiAocGl4ZWxBcnJheUxlbmd0aCA+PSA4KSB7Ci0gICAgICAgICBwbGF0Zm9ybUFwcGx5TkVPTihzcmNQaXhlbEFycmF5QS0+ZGF0YSgpLCBzcmNQaXhlbEFycmF5Qi0+ZGF0YSgpLCBkc3RQaXhlbEFycmF5LT5kYXRhKCksIHBpeGVsQXJyYXlMZW5ndGgpOwotLSAgICAgICAgcmV0dXJuCi0rICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAgICAgLy8gSWYgdGhlcmUgaXMganVzdCBvbmUgcGl4ZWwgd2UgZXhwYW5kIGl0IHRvIHR3by4KLSAgICAgQVNTRVJUKHBpeGVsQXJyYXlMZW5ndGggPiAwKTsKLS0tIAotMi4xLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC93ZWJraXQvd2Via2l0LWVmbC8wMDA0LUZpeC10aGUtYnVpbGQtd2l0aC1FRkwtMS4xMi1odHRwcy1idWdzLndlYmtpdC5vcmctc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDQtRml4LXRoZS1idWlsZC13aXRoLUVGTC0xLjEyLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhMzA1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDQtRml4LXRoZS1idWlsZC13aXRoLUVGTC0xLjEyLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi1Gcm9tIGJhZWJjMDA0MTExMjg5ZWY2NThjNzhhNDJmODMzMmYzZGNlZWY0MWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAicnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tIiA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgotRGF0ZTogVGh1LCAxMyBOb3YgMjAxNCAwNzowNzoxNiArMDAwMAotU3ViamVjdDogW1BBVENIIDQvNF0gRml4IHRoZSBidWlsZCB3aXRoIEVGTCAxLjEyCi0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODI0NQotCi1SZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCi0KLVNvdXJjZS9XZWJLaXQyOgotCi0qIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgotRmlyc3QsIG1vZGlmaWVkIHRvIHVzZSBFdmFzX0dMIHJhdyBwb2ludGVyIGluc3RlYWQgb2YgVW5pcXVlUHRyRWZsIGJlY2F1c2UKLUV2YXNfR0wuaCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBVbmlxdWVQdHJFZmwuaAotSXQgc2hvdWxkIGJlIG1vdmVkIGludG8gRXZhc0dMQ29udGV4dCBiZWNhdXNlIFdlYktpdC9FRkwgdXNlIG9ubHkgb25lIEV2YXNfR0wuCi1TZWNvbmQsIHByb3ZpZGVkIHRoZSB2ZXJzaW9uIG9mIEdMRVMgaW4gRXZhc19HTF9Db25maWcgbm90IHRvIGJyZWFrIGJ1aWxkIHdpdGgKLUVGTCAxLjEyCi0oRXdrVmlldzo6RXdrVmlldyk6Ci0oRXdrVmlldzo6fkV3a1ZpZXcpOgotKEV3a1ZpZXc6OmRpc3BsYXlUaW1lckZpcmVkKToKLShFd2tWaWV3OjpjcmVhdGVHTFN1cmZhY2UpOgotKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6Ci0KLVNvdXJjZS9XVEY6Ci0KLSogd3RmL2VmbC9VbmlxdWVQdHJFZmwuaDoKLVJlbW92ZWQgRXZhc19HTC5oIGZyb20gVW5pcXVlUHRyRWZsLmgsIHdoaWNoIGlzIGNvbW1vbmx5IGluY2x1ZGVkLCBiZWNhdXNlCi1pdCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIHdpdGggb2ZmaWNpYWwgR0wgaGVhZGVycy4KLQotZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDE3NjA2NiAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKLS0tLQotIFNvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaCAgICAgICAgICAgIHwgIDIgLS0KLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCB8IDI0ICsrKysrKysrKysrKysrKystLS0tLS0tLQotIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCAgIHwgIDMgKystCi0gMyBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaAotaW5kZXggYmEwMTEwYS4uMDM4ZDNmYiAxMDA2NDQKLS0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9VbmlxdWVQdHJFZmwuaAotKysrIGIvU291cmNlL1dURi93dGYvZWZsL1VuaXF1ZVB0ckVmbC5oCi1AQCAtMzMsNyArMzMsNiBAQAotICNpbmNsdWRlIDxFY29yZV9JTUYuaD4KLSAjaW5jbHVkZSA8RWluYS5oPgotICNpbmNsdWRlIDxFdmFzLmg+Ci0tI2luY2x1ZGUgPEV2YXNfR0wuaD4KLSAKLSBuYW1lc3BhY2UgV1RGIHsKLSAKLUBAIC01MSw3ICs1MCw2IEBAIHVzaW5nIEVmbFVuaXF1ZVB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxULCBFZmxQdHJEZWxldGVyPFQ+PjsKLSAgICAgbWFjcm8oRWluYV9IYXNoLCBlaW5hX2hhc2hfZnJlZSkgXAotICAgICBtYWNybyhFaW5hX01vZHVsZSwgZWluYV9tb2R1bGVfZnJlZSkgXAotICAgICBtYWNybyhFdmFzX09iamVjdCwgZXZhc19vYmplY3RfZGVsKSBcCi0tICAgIG1hY3JvKEV2YXNfR0wsIGV2YXNfZ2xfZnJlZSkKLSAKLSAjZGVmaW5lIFdURl9ERUZJTkVfRUZMUFRSX0RFTEVURVIodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCi0gICAgIHRlbXBsYXRlPD4gc3RydWN0IEVmbFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKLWRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCi1pbmRleCA1MGQzNGVkLi42ZmYzMzk0IDEwMDc1NQotLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKLSsrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCi1AQCAtMjk5LDkgKzI5OSwxMSBAQCBFd2tWaWV3OjpFd2tWaWV3KFdLVmlld1JlZiB2aWV3LCBFdmFzX09iamVjdCogZXZhc09iamVjdCkKLSAKLSAgICAgLy8gRklYTUU6IFJlbW92ZSB3aGVuIHBvc3NpYmxlLgotICAgICBzdGF0aWNfY2FzdDxXZWJWaWV3RWZsKj4od2ViVmlldygpKS0+c2V0RXdrVmlldyh0aGlzKTsKLS0gICAgbV9ldmFzR0wgPSBFZmxVbmlxdWVQdHI8RXZhc19HTD4oZXZhc19nbF9uZXcoZXZhc19vYmplY3RfZXZhc19nZXQobV9ldmFzT2JqZWN0KSkpOwotKwotKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgaXQgdG8gbW92ZSBpbnRvIEV2YXNHTENvbnRleHQuCi0rICAgIG1fZXZhc0dMID0gZXZhc19nbF9uZXcoZXZhc19vYmplY3RfZXZhc19nZXQobV9ldmFzT2JqZWN0KSk7Ci0gICAgIGlmIChtX2V2YXNHTCkKLS0gICAgICAgIG1fZXZhc0dMQ29udGV4dCA9IEV2YXNHTENvbnRleHQ6OmNyZWF0ZShtX2V2YXNHTC5nZXQoKSk7Ci0rICAgICAgICBtX2V2YXNHTENvbnRleHQgPSBFdmFzR0xDb250ZXh0OjpjcmVhdGUobV9ldmFzR0wpOwotIAotICAgICBpZiAoIW1fZXZhc0dMQ29udGV4dCkgewotICAgICAgICAgV0FSTigiRmFpbGVkIHRvIGNyZWF0ZSBFdmFzX0dMLCBmYWxsaW5nIGJhY2sgdG8gc29mdHdhcmUgbW9kZS4iKTsKLUBAIC0zMzMsNiArMzM1LDkgQEAgRXdrVmlldzo6fkV3a1ZpZXcoKQotIHsKLSAgICAgQVNTRVJUKHdrUGFnZVRvRXZhc09iamVjdE1hcCgpLmdldCh3a1BhZ2UoKSkgPT0gbV9ldmFzT2JqZWN0KTsKLSAgICAgd2tQYWdlVG9FdmFzT2JqZWN0TWFwKCkucmVtb3ZlKHdrUGFnZSgpKTsKLSsKLSsgICAgaWYgKG1fZXZhc0dMKQotKyAgICAgICAgZXZhc19nbF9mcmVlKG1fZXZhc0dMKTsKLSB9Ci0gCi0gRXdrVmlldyogRXdrVmlldzo6Y3JlYXRlKFdLVmlld1JlZiB3ZWJWaWV3LCBFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0KQotQEAgLTU4Nyw3ICs1OTIsNyBAQCB2b2lkIEV3a1ZpZXc6OmRpc3BsYXlUaW1lckZpcmVkKFRpbWVyPEV3a1ZpZXc+KikKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgICBldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKTsKLSsgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wsIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7Ci0gCi0gICAgIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0KHdrVmlldygpKTsKLSAKLUBAIC04MjgsMjEgKzgzMywyNCBAQCBib29sIEV3a1ZpZXc6OmNyZWF0ZUdMU3VyZmFjZSgpCi0gICAgICAgICBFVkFTX0dMX0RFUFRIX0JJVF84LAotICAgICAgICAgRVZBU19HTF9TVEVOQ0lMX05PTkUsCi0gICAgICAgICBFVkFTX0dMX09QVElPTlNfTk9ORSwKLS0gICAgICAgIEVWQVNfR0xfTVVMVElTQU1QTEVfTk9ORQotKyAgICAgICAgRVZBU19HTF9NVUxUSVNBTVBMRV9OT05FLAotKyNpZiBkZWZpbmVkKEVWQVNfR0xfQVBJX1ZFUlNJT04pICYmIEVWQVNfR0xfQVBJX1ZFUlNJT04gPj0gMgotKyAgICAgICAgRVZBU19HTF9HTEVTXzJfWAotKyNlbmRpZgotICAgICB9OwotIAotICAgICAvLyBSZWNyZWF0ZSB0byBjdXJyZW50IHNpemU6IFJlcGxhY2VzIGlmIG5vbi1udWxsLCBhbmQgZnJlZXMgZXhpc3Rpbmcgc3VyZmFjZSBhZnRlciAoT3duUHRyKS4KLS0gICAgbV9ldmFzR0xTdXJmYWNlID0gRXZhc0dMU3VyZmFjZTo6Y3JlYXRlKG1fZXZhc0dMLmdldCgpLCAmZXZhc0dMQ29uZmlnLCBkZXZpY2VTaXplKCkpOwotKyAgICBtX2V2YXNHTFN1cmZhY2UgPSBFdmFzR0xTdXJmYWNlOjpjcmVhdGUobV9ldmFzR0wsICZldmFzR0xDb25maWcsIGRldmljZVNpemUoKSk7Ci0gICAgIGlmICghbV9ldmFzR0xTdXJmYWNlKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotICAgICBFdmFzX05hdGl2ZV9TdXJmYWNlIG5hdGl2ZVN1cmZhY2U7Ci0tICAgIGV2YXNfZ2xfbmF0aXZlX3N1cmZhY2VfZ2V0KG1fZXZhc0dMLmdldCgpLCBtX2V2YXNHTFN1cmZhY2UtPnN1cmZhY2UoKSwgJm5hdGl2ZVN1cmZhY2UpOwotKyAgICBldmFzX2dsX25hdGl2ZV9zdXJmYWNlX2dldChtX2V2YXNHTCwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksICZuYXRpdmVTdXJmYWNlKTsKLSAgICAgZXZhc19vYmplY3RfaW1hZ2VfbmF0aXZlX3N1cmZhY2Vfc2V0KHNtYXJ0RGF0YSgpLT5pbWFnZSwgJm5hdGl2ZVN1cmZhY2UpOwotIAotLSAgICBldmFzX2dsX21ha2VfY3VycmVudChtX2V2YXNHTC5nZXQoKSwgbV9ldmFzR0xTdXJmYWNlLT5zdXJmYWNlKCksIG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpKTsKLSsgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wsIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7Ci0gCi0tICAgIEV2YXNfR0xfQVBJKiBnbCA9IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSk7Ci0rICAgIEV2YXNfR0xfQVBJKiBnbCA9IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTCk7Ci0gCi0gICAgIFdLUG9pbnQgYm91bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9TY2VuZSh3a1ZpZXcoKSwgV0tQb2ludE1ha2UoZGV2aWNlU2l6ZSgpLndpZHRoKCksIGRldmljZVNpemUoKS5oZWlnaHQoKSkpOwotICAgICBnbC0+Z2xWaWV3cG9ydCgwLCAwLCBib3VuZHNFbmQueCwgYm91bmRzRW5kLnkpOwotZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAotaW5kZXggMWM0ODJjZi4uNjhkYWI4NyAxMDA2NDQKLS0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAotKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCi1AQCAtMzksNiArMzksNyBAQAotICNlbmRpZgotIAotIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKLSt0eXBlZGVmIHN0cnVjdCBfRXZhc19HTCBFdmFzX0dMOwotIAotIG5hbWVzcGFjZSBXZWJLaXQgewotIGNsYXNzIENvbnRleHRNZW51Q2xpZW50RWZsOwotQEAgLTI0MSw3ICsyNDIsNyBAQCBwcml2YXRlOgotICAgICBFdmFzX09iamVjdCogbV9ldmFzT2JqZWN0OwotICAgICBSZWZQdHI8RXdrQ29udGV4dD4gbV9jb250ZXh0OwotICAgICBSZWZQdHI8RXdrUGFnZUdyb3VwPiBtX3BhZ2VHcm91cDsKLS0gICAgRWZsVW5pcXVlUHRyPEV2YXNfR0w+IG1fZXZhc0dMOwotKyAgICBFdmFzX0dMKiBtX2V2YXNHTDsKLSAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkV2YXNHTENvbnRleHQ+IG1fZXZhc0dMQ29udGV4dDsKLSAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkV2YXNHTFN1cmZhY2U+IG1fZXZhc0dMU3VyZmFjZTsKLSAgICAgYm9vbCBtX3BlbmRpbmdTdXJmYWNlUmVzaXplOwotLS0gCi0yLjEuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDUtRml4LXRoZS1idWlsZC13aXRoLWNtYWtlLTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDUtRml4LXRoZS1idWlsZC13aXRoLWNtYWtlLTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlOGUyOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLWVmbC93ZWJraXQvd2Via2l0LWVmbC8wMDA1LUZpeC10aGUtYnVpbGQtd2l0aC1jbWFrZS0zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLUZyb20gYTAwYTcwOTdiODU1NjdhZTZlYjdhMDBiM2NlN2VmMDIxODQxMjAzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjQgU2VwIDIwMTUgMTg6MDM6NTIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIEZpeCB0aGUgYnVpbGQgd2l0aCBjbWFrZSAzCi0KLSogdGhlIHNhbWUgaXNzdWUgYXMgaW4gR1RLIHBvcnQ6Ci0gIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3OTYKLSAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgwNTAyCi0KLSogb3RoZXJ3aXNlIGxpbmtpbmcgZmFpbHMgd2l0aCBjb3VwbGUgdW5kZWZpbmVkIHN5bWJvbHMKLXwgQ01ha2VGaWxlcy9XZWJLaXQyLmRpci9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcC5vOiBJbiBmdW5jdGlvbiBgV2ViS2l0Ojp3ZWJraXRYRXJyb3IoX1hEaXNwbGF5KiwgWEVycm9yRXZlbnQqKSc6Ci18IGV3ZWJraXQvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHA6NjM6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhHZXRFcnJvclRleHQnCi18IENNYWtlRmlsZXMvV2ViS2l0Mi5kaXIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAubzogSW4gZnVuY3Rpb24gYFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW46OnBhcnNlQ29tbWFuZExpbmUoaW50LCBjaGFyKiopJzoKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoxMDI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhTZXRFcnJvckhhbmRsZXInCi18IGV3ZWJraXQvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHA6MTAyOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBYU2V0RXJyb3JIYW5kbGVyJwotfCBDTWFrZUZpbGVzL1dlYktpdDIuZGlyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcC5vOiBJbiBmdW5jdGlvbiBgV2ViS2l0OjpXZWJQcm9jZXNzTWFpbjo6cGxhdGZvcm1Jbml0aWFsaXplKCknOgotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcDo2NzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWFNldEV4dGVuc2lvbkVycm9ySGFuZGxlcicKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHA6Njc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhTZXRFeHRlbnNpb25FcnJvckhhbmRsZXInCi18IENNYWtlRmlsZXMvV2ViS2l0Mi5kaXIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAubzogSW4gZnVuY3Rpb24gYFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dlZChib29sLCB1bnNpZ25lZCBsb25nKSc6Ci18IGV3ZWJraXQvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6MTcwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBYRmx1c2gnCi18IENNYWtlRmlsZXMvV2ViS2l0Mi5kaXIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAubzogSW4gZnVuY3Rpb24gYFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNzKCknOgotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOjE5NTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWEdldFZpc3VhbEluZm8nCi18IGV3ZWJraXQvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6MTk5OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBYRnJlZScKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoyMDI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhDcmVhdGVDb2xvcm1hcCcKLXwgQ01ha2VGaWxlcy9XZWJLaXQyLmRpci9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcC5vOiBJbiBmdW5jdGlvbiBgV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCknOgotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOjI1MTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWEZyZWVDb2xvcm1hcCcKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoyNTU6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhGcmVlUGl4bWFwJwotfCBDTWFrZUZpbGVzL1dlYktpdDIuZGlyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwLm86IEluIGZ1bmN0aW9uIGBXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCknOgotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOjI5MzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWENyZWF0ZVBpeG1hcCcKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoyODY6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhGcmVlUGl4bWFwJwotfCBld2Via2l0L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOjI5NTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWFN5bmMnCi18IENNYWtlRmlsZXMvV2ViS2l0Mi5kaXIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAubzogSW4gZnVuY3Rpb24gYFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgV2ViQ29yZTo6SW50UmVjdCBjb25zdCYsIGJvb2wpJzoKLXwgZXdlYmtpdC9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDozNDM6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhTeW5jJwotfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLXwgU291cmNlL1dlYktpdDIvQ01ha2VGaWxlcy9XZWJLaXQyLmRpci9idWlsZC5tYWtlOjE2MTQ1OiByZWNpcGUgZm9yIHRhcmdldCAnbGliL2xpYmV3ZWJraXQyLnNvLjEuMTEuMCcgZmFpbGVkCi18IG1ha2VbMl06ICoqKiBbbGliL2xpYmV3ZWJraXQyLnNvLjEuMTEuMF0gRXJyb3IgMQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSAgICAgICAgIHwgMSArCi0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgICAgICAgICB8IDMgKysrCi0gU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgICAgICAgICAgICB8IDEgKwotIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQotaW5kZXggNDFmZmMxNS4uNjNiNzg2MSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCi0rKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQotQEAgLTQwNCw2ICs0MDQsNyBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElDUykKLSAgICAgICAgICkKLSAgICAgZW5kaWYgKCkKLSAKLSsgICAgZmluZF9wYWNrYWdlKFgxMSBSRVFVSVJFRCkKLSAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKLSAgICAgICAgICR7WDExX1gxMV9MSUJ9Ci0gICAgICkKLWRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCi1pbmRleCA4YzY2ZDFiLi5kOTZmMGJkIDEwMDY0NAotLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKLSsrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCi1AQCAtMzMxLDEyICszMzEsMTUgQEAgaWYgKEVOQUJMRV9TRUNDT01QX0ZJTFRFUlMpCi0gZW5kaWYgKCkKLSAKLSBpZiAoRU5BQkxFX0VDT1JFX1gpCi0rICAgIGZpbmRfcGFja2FnZShYMTEgUkVRVUlSRUQpCi0gICAgIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfTElCUkFSSUVTCi0gICAgICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQotICAgICAgICAgJHtYMTFfWGV4dF9MSUJ9Ci0gICAgICkKLSAgICAgbGlzdChBUFBFTkQgV2ViS2l0Ml9MSUJSQVJJRVMKLSAgICAgICAgICR7RUNPUkVfWF9MSUJSQVJJRVN9Ci0rICAgICAgICAke1gxMV9YMTFfTElCfQotKyAgICAgICAgJHtYMTFfWGV4dF9MSUJ9Ci0gICAgICkKLSBlbmRpZiAoKQotIAotZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLWluZGV4IDg1ODVmMTkuLjFhYTkwMDIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQotKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLUBAIC0xODEsNiArMTgxLDcgQEAgZW5kaWYgKCkKLSAKLSBpZiAoV1RGX09TX1VOSVgpCi0gICAgIHNldChFTkFCTEVfWDExX1RBUkdFVCBPTikKLSsgICAgZmluZF9wYWNrYWdlKFgxMSBSRVFVSVJFRCkKLSAgICAgYWRkX2RlZmluaXRpb25zKC1EWFBfVU5JWCkKLSBlbmRpZiAoV1RGX09TX1VOSVgpCi0gCi1kaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UKLWluZGV4IDE4NzMyNzkuLmE5MDVmMmEgMTAwNjQ0Ci0tLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCi0rKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCi1AQCAtNTMsNiArNTMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfTElCUkFSSUVTCi0gKQotIAotIGlmIChFTkFCTEVfRUNPUkVfWCkKLSsgICAgZmluZF9wYWNrYWdlKFgxMSBSRVFVSVJFRCkKLSAgICAgbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgICAgICAke0VDT1JFX1hfSU5DTFVERV9ESVJTfQotICAgICApCi0tLSAKLTIuNi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwvMDAwNi1PcHRpb25zRWZsLmNtYWtlLUZpeC1idWlsZC13aXRoLW5ld2VyLUNNYWtlLTMuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmwvMDAwNi1PcHRpb25zRWZsLmNtYWtlLUZpeC1idWlsZC13aXRoLW5ld2VyLUNNYWtlLTMuNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU2MjYzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsLzAwMDYtT3B0aW9uc0VmbC5jbWFrZS1GaXgtYnVpbGQtd2l0aC1uZXdlci1DTWFrZS0zLjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDk5Mzg4MmY4MWZlOTkxYjhiYWYxMDk5MzkyNzAzMzM3Y2MxM2ZhYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI3IEphbiAyMDE2IDE4OjQwOjIzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE9wdGlvbnNFZmwuY21ha2U6IEZpeCBidWlsZCB3aXRoIG5ld2VyIENNYWtlIDMuNAotCi0qIG90aGVyd2lzZSBpdCBmYWlscyB3aXRoOgotICB8IENNYWtlIEVycm9yIGF0IFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOjI1MSAoQ0hFQ0tfSU5DTFVERV9GSUxFUyk6Ci0gIHwgICBVbmtub3duIENNYWtlIGNvbW1hbmQgIkNIRUNLX0lOQ0xVREVfRklMRVMiLgotKiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMTE3Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCi1pbmRleCAxYWE5MDAyLi4wNTIxNmQwIDEwMDY0NAotLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKLSsrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCi1AQCAtMjUzLDYgKzI1Myw3IEBAIGlmIChFTkFCTEVfV0VCR0wgT1IgV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFKQotICAgICAgICAgc2V0KFdURl9VU0VfRUdMIDEpCi0gICAgICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0VHTD0xKQotICAgICBlbHNlICgpCi0rICAgICAgICBpbmNsdWRlKENoZWNrSW5jbHVkZUZpbGVzKQotICAgICAgICAgQ0hFQ0tfSU5DTFVERV9GSUxFUygiR0wvZ2x4LmgiIE9QRU5HTFhfRk9VTkQpCi0gICAgICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0dMWD0xKQotICAgICBlbmRpZiAoKQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtZWZsL3dlYmtpdC93ZWJraXQtZWZsXzEuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmxfMS4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmFkODMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1lZmwvd2Via2l0L3dlYmtpdC1lZmxfMS4xMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vMDAwMS1PcHRpb25zQ29tbW9uLmNtYWtlLWRvbi10LW1peC1DWFhfRkxBR1MtaW50by1DX0ZMQUdTLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1XZWJLaXRIZWxwZXJzLmNtYWtlLUFkZC1Xbm8tZXJyb3ItZGVwcmVjYXRlZC1kZWNsYXJhLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1GRUJsZW5kTkVPTi5oLWZpeC1taXNzaW5nLXNlbWljb2xvbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtRml4LXRoZS1idWlsZC13aXRoLUVGTC0xLjEyLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDUtRml4LXRoZS1idWlsZC13aXRoLWNtYWtlLTMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA2LU9wdGlvbnNFZmwuY21ha2UtRml4LWJ1aWxkLXdpdGgtbmV3ZXItQ01ha2UtMy40LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5MGZhOTcwZWJmODY0NjMxOWQyOTJjMmJiNWJmZjVkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGQyMWUyN2Y0YTIxY2Q3N2M0MTkxNDU0OGMxODRkZGI5ODY5M2JhMjM4NTFhYTY2YzhlNTFjMGJlNGI5MGI3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLW11bHRpbWVkaWEvbGlnaHRtZWRpYXNjYW5uZXIvZmlsZXMvMDAwMS1EZWZpbmUtY29tcGFyaXNvbl9mbl90LWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1tdWx0aW1lZGlhL2xpZ2h0bWVkaWFzY2FubmVyL2ZpbGVzLzAwMDEtRGVmaW5lLWNvbXBhcmlzb25fZm5fdC1mb3Itbm9uLWdsaWJjLXN5c3RlbXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZDRiM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLW11bHRpbWVkaWEvbGlnaHRtZWRpYXNjYW5uZXIvZmlsZXMvMDAwMS1EZWZpbmUtY29tcGFyaXNvbl9mbl90LWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNWJjNWI4YzVkYWQzZWRlYzY3MzZmZDdlN2NlNjEyNTBjNGNlMzcyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDE3OjEzOjE5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBjb21wYXJpc29uX2ZuX3QgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCi0KLWxpZ2h0bWVkaWFzY2FubmVyLmM6MzI0OjEyOiBlcnJvcjogJ2NvbXBhcmlzb25fZm5fdCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0gICAgICAgICAgIChjb21wYXJpc29uX2ZuX3QpX3BsdWdpbl9zb3J0KTsKLSAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2xpYi9saWdodG1lZGlhc2Nhbm5lci5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saWIvbGlnaHRtZWRpYXNjYW5uZXIuYyBiL3NyYy9saWIvbGlnaHRtZWRpYXNjYW5uZXIuYwotaW5kZXggMzQ0YjI0Ny4uYjg2Njg4MyAxMDA2NDQKLS0tLSBhL3NyYy9saWIvbGlnaHRtZWRpYXNjYW5uZXIuYwotKysrIGIvc3JjL2xpYi9saWdodG1lZGlhc2Nhbm5lci5jCi1AQCAtMzcsNiArMzcsMTEgQEAKLSAjZGVmaW5lIERFRkFVTFRfU0xBVkVfVElNRU9VVCAxMDAwCi0gI2RlZmluZSBERUZBVUxUX0NPTU1JVF9JTlRFUlZBTCAxMDAKLSAKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKik7Ci0rdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25fZm5fdDsKLSsjZW5kaWYKLSsKLSAjaWZkZWYgSEFWRV9NQUdJQ19ICi0gc3RhdGljIG1hZ2ljX3QgX21hZ2ljX2hhbmRsZTsKLSAKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1tdWx0aW1lZGlhL2xpZ2h0bWVkaWFzY2FubmVyL2ZpbGVzL2lkMy1wbHVnaW4tc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1tdWx0aW1lZGlhL2xpZ2h0bWVkaWFzY2FubmVyL2ZpbGVzL2lkMy1wbHVnaW4tc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUyOGJlYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtbXVsdGltZWRpYS9saWdodG1lZGlhc2Nhbm5lci9maWxlcy9pZDMtcGx1Z2luLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9zcmMvcGx1Z2lucy9NYWtlZmlsZS5hbQkyMDE1LTEwLTI1IDE2OjEyOjI5LjMzMTQxNTgyMyArMDAwMAotKysrIGIvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0JMjAxNS0xMC0yNSAxNjoxNDozNy41OTM0MTU4MDggKzAwMDAKLUBAIC05Myw3ICs5Myw3IEBACi0gaWQzX2lkM19sYV9TT1VSQ0VTID0gaWQzL2lkMy5jIGlkMy9pZDN2MV9nZW5yZXMuYwotIGlkM19pZDNfbGFfTElCQUREID0gJChQTFVHSU5TX0xJQkFERCkKLSAKLS1pZDMvaWQzdjFfZ2VucmVzLmM6ICQoc3JjZGlyKS9pZDMvaWQzdjFfZ2VucmVzLmRlZiAkKHNyY2RpcikvaWQzL2lkM3YxX2dlbnJlc19nZW4uYXdrCi0rJChzcmNkaXIpL2lkMy9pZDN2MV9nZW5yZXMuYzogJChzcmNkaXIpL2lkMy9pZDN2MV9nZW5yZXMuZGVmICQoc3JjZGlyKS9pZDMvaWQzdjFfZ2VucmVzX2dlbi5hd2sKLSAJJChBV0spIC1mICQoc3JjZGlyKS9pZDMvaWQzdjFfZ2VucmVzX2dlbi5hd2sgJChzcmNkaXIpL2lkMy9pZDN2MV9nZW5yZXMuZGVmID4gJEAKLSAKLSBFWFRSQV9ESVNUICs9IGlkMy9pZDN2MV9nZW5yZXMuZGVmIGlkMy9pZDN2MV9nZW5yZXNfZ2VuLmF3awpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWVmbC9yZWNpcGVzLW11bHRpbWVkaWEvbGlnaHRtZWRpYXNjYW5uZXIvbGlnaHRtZWRpYXNjYW5uZXJfMC41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtbXVsdGltZWRpYS9saWdodG1lZGlhc2Nhbm5lci9saWdodG1lZGlhc2Nhbm5lcl8wLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIxNTg3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtbXVsdGltZWRpYS9saWdodG1lZGlhc2Nhbm5lci9saWdodG1lZGlhc2Nhbm5lcl8wLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgbWVkaWEgc2Nhbm5lciIKLURFU0NSSVBUSU9OID0gIkxpZ2h0d2VpZ2h0IG1lZGlhIHNjYW5uZXIgbWVhbnQgdG8gYmUgdXNlZCBpbiBub3Qtc28tcG93ZXJmdWwgZGV2aWNlcywgbGlrZSBlbWJlZGRlZCBzeXN0ZW1zIG9yIG9sZCBtYWNoaW5lcy4iCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbGliL2xpZ2h0bWVkaWFzY2FubmVyLmM7ZW5kbGluZT0yMTttZDU9NmQ4ODg5YmNjYjRjNmMyN2U4Yjc4NjM0MmEzZWIyNjciCi0KLURFUEVORFMgPSAiZmlsZSBnYXdrIGdsaWItMi4wIHNxbGl0ZTMiCi0KLVBWID0gIjAuNS4xK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImFkZmRkYjM0ODYyNzZhNWVkMmY1MDA4YzllNDNhODExZTEyNzFjYzkiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvZnVzaW9uL2xpZ2h0bWVkaWFzY2FubmVyLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9pZDMtcGx1Z2luLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtY29tcGFyaXNvbl9mbl90LWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXN0YXRpYyAtLWRpc2FibGUtbXA0IgotCi1QQUNLQUdFQ09ORklHID8/PSAib2dnIGZsYWMgd2F2ZSBpZDMgbTN1IHBscyBhc2Ygcm0ganBlZyBwbmciCi1QQUNLQUdFQ09ORklHW2dlbmVyaWNdID0gIi0tZW5hYmxlLWdlbmVyaWMsLS1kaXNhYmxlLWdlbmVyaWMsbGliYXYiCi1QQUNLQUdFQ09ORklHW29nZ10gPSAiLS1lbmFibGUtb2dnLC0tZGlzYWJsZS1vZ2csbGlib2dnIGxpYnZvcmJpcyBsaWJ0aGVvcmEiCi1QQUNLQUdFQ09ORklHW2ZsYWNdID0gIi0tZW5hYmxlLWZsYWMsLS1kaXNhYmxlLWZsYWMsZmxhYyIKLVBBQ0tBR0VDT05GSUdbd2F2ZV0gPSAiLS1lbmFibGUtd2F2ZSwtLWRpc2FibGUtd2F2ZSIKLVBBQ0tBR0VDT05GSUdbaWQzXSA9ICItLWVuYWJsZS1pZDMsLS1kaXNhYmxlLWlkMyIKLVBBQ0tBR0VDT05GSUdbbTN1XSA9ICItLWVuYWJsZS1tM3UsLS1kaXNhYmxlLW0zdSIKLVBBQ0tBR0VDT05GSUdbcGxzXSA9ICItLWVuYWJsZS1wbHMsLS1kaXNhYmxlLXBscyIKLVBBQ0tBR0VDT05GSUdbYXNmXSA9ICItLWVuYWJsZS1hc2YsLS1kaXNhYmxlLWFzZiIKLVBBQ0tBR0VDT05GSUdbcm1dID0gIi0tZW5hYmxlLXJtLC0tZGlzYWJsZS1ybSIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgIyBJbnN0YWxsICJ0ZXN0IiBiaW5hcnkgZm9yIGNvcnJlc3BvbmRpbmcgcGFja2FnZQotICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICAgICBpbnN0YWxsIC1tIDc1NSAke0J9L3NyYy9iaW4vLmxpYnMvdGVzdCAke0R9LyR7YmluZGlyfS90ZXN0LWxtcwotICAgICAgICMgUmVtb3ZlIC5sYSBmaWxlcyBmb3IgbG9hZGFibGUgbW9kdWxlcwotICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9LyR7UE59L3BsdWdpbnMvKi5sYQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8ke1BOfS9wbHVnaW5zLy5kZWJ1ZyIKLQotUEFDS0FHRVNfcHJlcGVuZCA9ICIke1BOfS10ZXN0ICIKLUZJTEVTXyR7UE59LXRlc3RfcHJlcGVuZCA9ICIke2JpbmRpcn0vdGVzdC1sbXMgIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tbWV0YSIKLUFMTE9XX0VNUFRZXyR7UE59LW1ldGEgPSAiMSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICIke1BOfS1wbHVnaW4tKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxtc19saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9LyR7UE59JykKLSAgICBwa2dzID0gW10KLQotICAgIHBrZ3MgKz0gZG9fc3BsaXRfcGFja2FnZXMoZCwgb2UucGF0aC5qb2luKGxtc19saWJkaXIsICJwbHVnaW5zIiksICdeKC4qKVwuc28kJywgZC5leHBhbmQoJyR7UE59LXBsdWdpbi0lcycpLCAnTGlnaHRNZWRpYVNjYW5uZXIgcGx1Z2luIGZvciAlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0nKSkKLSAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1ldGEnCi0gICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihwa2dzKSkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1uYXZpZ2F0aW9uL21jbmF2aS9tY25hdmlfMC4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZWZsL3JlY2lwZXMtbmF2aWdhdGlvbi9tY25hdmkvbWNuYXZpXzAuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDBlMDA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1lZmwvcmVjaXBlcy1uYXZpZ2F0aW9uL21jbmF2aS9tY25hdmlfMC4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkZyZWUgR1BTIG5hdmlnYXRpb24gZm9yIGNhciBhbmQgb3V0ZG9vciB3aXRoIE9wZW5TdHJlZXRNYXAgbWFwcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3BzLXJvdXRlcy5pbmZvL2luZGV4LnBocD9uYW1lPUNvbnRlbnQmcGE9c2hvd3BhZ2UmcGlkPTEiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGYwZTJjZDQwZTA1MTg5ZWM4MTIzMmRhODRiZDZlMWEiCi1ERVBFTkRTID0gImVjb3JlIGV2YXMgaW1saWIyIGdwc2QgZWRqZSBlZGplLW5hdGl2ZSBteXNxbDUgaW50bHRvb2wtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZ3BzLXJvdXRlcy5pbmZvL2RlYmlhbi9wb29sL21haW4vbS9tY25hdmkvbWNuYXZpXyR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ODYwY2RlNWMwMmE5ZjkzYzgyOWRhNGIxMGU1YTIyNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZTdmNjUxNTVlOTEzODYxNzU4NzVmYzRmNzJmNGJjOTRlNGU5Y2RiODI1ODExMjYzMmRhOTQ1MjBlZjJjMzQ5IgotCi1TID0gIiR7V09SS0RJUn0vJHtQTn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBOQkxBQ0tMSVNUW21jbmF2aV0gPz0gIkJST0tFTjogbGF0ZXN0IHZlcnNpb24gMC4zLjQgaXMgMyB5ZWFycyBvbGQgYW5kIG5vdyBicm9rZW4gd2l0aCBtb3JlIHN0cmljdCBlamRlX2NjIGZyb20gZWZsLTEuMTMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0jIHwgZWRqZV9jYzogRXJyb3IuIHBhcnNlIGVycm9yIDAuMy40LXIwL21jbmF2aS9kYXRhL3RoZW1lcy9EZWZhdWx0L21haW4uZWRjOjEyNi4gaW52YWxpZCBzdGF0ZSBuYW1lOiAnbm9uZScuICJkZWZhdWx0IiBzdGF0ZSBtdXN0IGFsd2F5cyBiZSBmaXJzdC4KLSMgfCBlZGplX2NjOiBFcnJvci4gcGFyc2UgZXJyb3IgMC4zLjQtcjAvbWNuYXZpL2RhdGEvdGhlbWVzL0RlZmF1bHQvaXRpbmVyYXJ5LmVkYzo4NC4gaW52YWxpZCBzdGF0ZSBuYW1lOiAnbm9uZScuICJkZWZhdWx0IiBzdGF0ZSBtdXN0IGFsd2F5cyBiZSBmaXJzdC4KLSMgfCBlZGplX2NjOiBFcnJvci4gcGFyc2UgZXJyb3IgMC4zLjQtcjAvbWNuYXZpL2RhdGEvdGhlbWVzL0RlZmF1bHQvdGV4dC5lZGM6MTEyOS4gaW52YWxpZCBzdGF0ZSBuYW1lOiAnbm9uZScuICJkZWZhdWx0IiBzdGF0ZSBtdXN0IGFsd2F5cyBiZSBmaXJzdC4KLSMgfCBlZGplX2NjOiBFcnJvci4gcGFyc2UgZXJyb3IgMC4zLjQtcjAvbWNuYXZpL2RhdGEvdGhlbWVzL0RlZmF1bHQvZmlsZW9wZW4uZWRjOjc4LiBpbnZhbGlkIHN0YXRlIG5hbWU6ICdvZmYnLiAiZGVmYXVsdCIgc3RhdGUgbXVzdCBhbHdheXMgYmUgZmlyc3QuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL1JFQURNRQppbmRleCA0OGZlMTVmLi4wZjdjYzliIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9SRUFETUUKQEAgLTEwLDIyICsxMCwyMiBAQAogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiAgIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZQotICBicmFuY2g6IDEuMjgKKyAgYnJhbmNoOiAxLjM2CiAKICAgVVJJOiBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZQogICBsYXllcnM6IG1ldGEKLSAgYnJhbmNoOiBweXJvCisgIGJyYW5jaDogcm9ja28KIAogICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL21ldGEtb3BlbmVtYmVkZGVkCiAgIGxheWVyczogbWV0YS1vZQotICBicmFuY2g6IHB5cm8KKyAgYnJhbmNoOiByb2NrbwogCiBQYXRjaGVzCiA9PT09PT09CiAKIFBsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCB0aGUgZmlsZXN5c3RlbXMgbGF5ZXIgdG8gdGhlCiBPcGVuRW1iZWRkZWQgZGV2ZWxvcG1lbnQgbWFpbGluZyBsaXN0IChvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZykKLXdpdGggJ1ttZXRhLWZpbGVzeXN0ZW1zXVtweXJvXScgaW4gdGhlIHN1YmplY3QuCit3aXRoICdbbWV0YS1maWxlc3lzdGVtc11bcm9ja29dJyBpbiB0aGUgc3ViamVjdC4KIAogTWFpbnRhaW5lcnMgTGlzdDoKICAgcGh5c2ZzICAgICAgQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgpAQCAtNjYsOSArNjYsOSBAQAogCiAgICBnaXQgc2VuZC1lbWFpbCAtMSAtTSBcCiAgICAgICAgIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgXAotICAgICAgICAtLXN1YmplY3QtcHJlZml4PW1ldGEtZmlsZXN5c3RlbXNdW3B5cm9dW1BBVENICisgICAgICAgIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1maWxlc3lzdGVtc11bcm9ja29dW1BBVENICiAKLXB5cm8gQnJhbmNoIE1haW50YWluZXI6Cityb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKIEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKIFRhYmxlIG9mIENvbnRlbnRzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zbWJuZXRmcy9zbWJuZXRmcy9Vc2luZy1QS0dfQ0hFQ0tfTU9EVUxFUy10by1mb3VuZC1oZWFkZXJzLWFuZC1saWJyYXJpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zbWJuZXRmcy9zbWJuZXRmcy9Vc2luZy1QS0dfQ0hFQ0tfTU9EVUxFUy10by1mb3VuZC1oZWFkZXJzLWFuZC1saWJyYXJpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNWYwOWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc21ibmV0ZnMvc21ibmV0ZnMvVXNpbmctUEtHX0NIRUNLX01PRFVMRVMtdG8tZm91bmQtaGVhZGVycy1hbmQtbGlicmFyaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA3YTUyNGQ0OWIzZDQ0NTkyODBmMTg5NDJkZjI5ODA2MDM0MDBlYzUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmlhbiBOYWltZW5nIDxiaWFubm1AY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBGcmksIDE5IEp1biAyMDE1IDExOjU0OjQ0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzaW5nIFBLR19DSEVDS19NT0RVTEVTIHRvIGZvdW5kIGhlYWRlcnMgYW5kIGxpYnJhcmllcyBvZgotIHNtYmNsaWVudAotCi1TaWduZWQtb2ZmLWJ5OiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiAgICB8IDUgKysrKysKLSBzcmMvTWFrZWZpbGUuYW0gfCAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGNlMjFhZWYuLmVjZDcxMTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTEyNSw2ICsxMjUsMTEgQEAgQUNfQ0hFQ0tfTElCKHNtYmNsaWVudCwgc21iY19zZXRPcHRpb25Vc2VyRGF0YSwKLSAgICAgKV0KLSApCi0gCi0rZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rZG5sICoqKiBDaGVjayBsaWJzbWJjbGllbnQgYnkgcGtnY29uZmlnIHRvIGdldCBjZmxhZ3MgYW5kIGxkZmxhZ3MgKioqCi0rZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rUEtHX0NIRUNLX01PRFVMRVMoU01CQ0xJRU5ULCBzbWJjbGllbnQpCi0rCi0gZG5sICoqKioqKioqKioqKioqKioqKgotIGRubCAqKiogRmluYWwgc3RlcCAqKioKLSBkbmwgKioqKioqKioqKioqKioqKioqCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA0MTUxOWQ4Li45ZmM5N2U5IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0xNiwzICsxNiw2IEBAIHNtYm5ldGZzX1NPVVJDRVMgPSBcCi0gCWV2ZW50LmMJCQlldmVudC5oCQkJXAotIAlyZWNvbmZpZ3VyZS5jCQlyZWNvbmZpZ3VyZS5oCQlcCi0gCW1haW4uYwotKwotK3NtYm5ldGZzX0NGTEFHUz0ke1NNQkNMSUVOVF9DRkxBR1N9Ci0rc21ibmV0ZnNfTERGTEFHUz0ke1NNQkNMSUVOVF9MREZMQUdTfQotLS0gCi0xLjguNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgwZmVkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zbWJuZXRmcy9zbWJuZXRmcy9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1JbmRleDogZ2l0L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5pbgkyMDE0LTA2LTE4IDE2OjA2OjE2LjA0MDcyMTM0OSArMDAwMAotKysrIGdpdC9jb25maWd1cmUuaW4JMjAxNC0wNy0xOCAwNzo0OToxNy4wODU1NTIyNTYgKzAwMDAKLUBAIC0xLDUgKzEsNSBAQAotIEFDX0lOSVQoW1NNQk5ldEZTXSxbMC41LjPQsF0pCi0tQU1fSU5JVF9BVVRPTUFLRQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIEFDX0NPTkZJR19IRUFERVJTKFtzcmMvY29uZmlnLmhdKQotIEFDX1BST0dfQ0MKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NtYm5ldGZzL3NtYm5ldGZzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk5NWFkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zbWJuZXRmcy9zbWJuZXRmc19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkZVU0UgbW9kdWxlIGZvciBtb3VudGluZyBhbiBlbnRpcmUgU01CL05NQiBuZXR3b3JrIGluIGEgc2luZ2xlIGRpcmVjdG9yeSIKLURFU0NSSVBUSU9OID0gIlNNQk5ldEZTIGlzIGEgTGludXgvRnJlZUJTRCBmaWxlc3lzdGVtIHRoYXQgYWxsb3cgeW91IHRvIHVzZSBcCi0gICAgICAgICAgICAgICBzYW1iYS9taWNyb3NvZnQgbmV0d29yayBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgdGhlIG5ldHdvcmsgXAotICAgICAgICAgICAgICAgbmVpZ2hib3Job29kIGluIE1pY3Jvc29mdCBXaW5kb3dzLiBQbGVhc2UgZG9uYXRlIG1lIHRvIGhlbHAgXAotICAgICAgICAgICAgICAgaW4gU01CTmV0RlMgZGV2ZWxvcG1lbnQuIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCi1IT01FUEFHRSA9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvc21ibmV0ZnMiCi0KLURFUEVORFMgPSAiZnVzZSBzYW1iYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2l0cGtndiBwa2djb25maWcKLQotUEtHViA9ICIke0dJVFBLR1ZUQUd9IgotCi1TUkNSRVYgPSAiYWNlMWM1MTlkNDVmZTQ4OGI5YjdlNmNjNzdhMmJjYWRiNmM4MzQ2NCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9zbWJuZXRmcy5naXQuc291cmNlZm9yZ2UubmV0L2dpdHJvb3Qvc21ibmV0ZnMvc21ibmV0ZnM7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vVXNpbmctUEtHX0NIRUNLX01PRFVMRVMtdG8tZm91bmQtaGVhZGVycy1hbmQtbGlicmFyaWVzLnBhdGNoIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tnbm9tZS1rZXlyaW5nXSA9ICItLXdpdGgtZ25vbWUta2V5cmluZz15ZXMsLS13aXRoLWdub21lLWtleXJpbmc9bm8sbGliZ25vbWUta2V5cmluZyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUE5CTEFDS0xJU1Rbc21ibmV0ZnNdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMyODI3LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS9maWxlcy8wMDAxLXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzNjNjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS9maWxlcy8wMDAxLXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNDQ5Y2VjMzRjMTIzYjg2Yjc5MjYyNzU1M2M2ZWM3NDcxZDJlZTdlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMzAgSnVuIDIwMTcgMTQ6NDY6NTEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3VwcG9ydCBjcm9zcyBjb21waWxpbmcKKworRG8gbm90IG92ZXJyaWRlIE9FIENNQUtFIHZhcmlhYmxlcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTAsOSArMTAsOSBAQCBJRihOT1QgQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUyBBTkQgTk9UIENNQUtFX0JVSUxEX1RZUEUpCisgRU5ESUYoTk9UIENNQUtFX0NPTkZJR1VSQVRJT05fVFlQRVMgQU5EIE5PVCBDTUFLRV9CVUlMRF9UWVBFKQorIAorICMgU2VsZWN0IGZsYWdzLgorLVNFVChDTUFLRV9DX0ZMQUdTICItcGlwZSAtVyAtV2FsbCAtREZPUlRJRllfU09VUkNFPTIiKQorK1NFVChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1waXBlIC1XIC1XYWxsIC1ERk9SVElGWV9TT1VSQ0U9MiIpCisgU0VUKENNQUtFX0NfRkxBR1NfUkVMV0lUSERFQklORk8gIi1PMiAtZyIpCistU0VUKENNQUtFX0NfRkxBR1NfUkVMRUFTRSAiLU8yIikKKytTRVQoQ01BS0VfQ19GTEFHU19SRUxFQVNFICIke0NNQUtFX0NfRkxBR1NfUkVMRUFTRX0gLU8yIikKKyBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiLU8wIC1nIC1EREVCVUciKQorIAorIGlmIChVTklYIEFORCBBUFBMRSkKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtdW5pb25mcy1EZWZpbmUtSU9DUEFSTV9MRU4taWYtdW5kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtdW5pb25mcy1EZWZpbmUtSU9DUEFSTV9MRU4taWYtdW5kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOTkxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvZmlsZXMvMDAwMS11bmlvbmZzLURlZmluZS1JT0NQQVJNX0xFTi1pZi11bmRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSAxMDQxMWZhODY1ODYyMTgyMmFlMzk0MTYwZGFmZmFjZWQ0YTRjZDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MDc6MjkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdW5pb25mczogRGVmaW5lIElPQ1BBUk1fTEVOIGlmIHVuZGVmaW5lZAorCittdXNsIGRvZXMgbm90IGhhdmUgc3lzY3RsLmggd2hpY2ggZGVmaW5lcyB0aGlzCitmb3IgZ2xpYmMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy91bmlvbmZzLmMgfCAgOCAtLS0tLS0tLQorIHNyYy91bmlvbmZzLmggfCAxNSArKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdW5pb25mcy5jIGIvc3JjL3VuaW9uZnMuYworaW5kZXggYTM0ZDM0ZS4uNTE2ODRhNyAxMDA2NDQKKy0tLSBhL3NyYy91bmlvbmZzLmMKKysrKyBiL3NyYy91bmlvbmZzLmMKK0BAIC0yMSwxNCArMjEsNiBAQAorICNpbmNsdWRlICJvcHRzLmgiCisgI2luY2x1ZGUgInVzeXNsb2cuaCIKKyAKKy0jaWZuZGVmIF9JT0NfU0laRQorLSNpZmRlZiBJT0NQQVJNX0xFTgorLSNkZWZpbmUgX0lPQ19TSVpFKHgpIElPQ1BBUk1fTEVOKHgpCistI2Vsc2UKKy0jZXJyb3IgIk5vIG1lY2hhbmlzbSBmb3IgZGV0ZXJtaW5pbmcgaW9jdGwgbGVuZ3RoIGZvdW5kLiIKKy0jZW5kaWYKKy0jZW5kaWYKKy0KKyBzdGF0aWMgc3RydWN0IGZ1c2Vfb3B0IHVuaW9uZnNfb3B0c1tdID0geworIAlGVVNFX09QVF9LRVkoImNocm9vdD0lcywiLCBLRVlfQ0hST09UKSwKKyAJRlVTRV9PUFRfS0VZKCJjb3ciLCBLRVlfQ09XKSwKK2RpZmYgLS1naXQgYS9zcmMvdW5pb25mcy5oIGIvc3JjL3VuaW9uZnMuaAoraW5kZXggOGY1ZTBiZi4uYjAyZGU1YSAxMDA2NDQKKy0tLSBhL3NyYy91bmlvbmZzLmgKKysrKyBiL3NyYy91bmlvbmZzLmgKK0BAIC0xNyw2ICsxNywyMSBAQAorICNkZWZpbmUgRlVTRV9NRVRBX0ZJTEUgIi5mdXNlX2hpZGRlbiIKKyAjZGVmaW5lIEZVU0VfTUVUQV9MRU5HVEggMTIKKyAKKysjaWZuZGVmIElPQ1BBUk1fTUFTSworKyNkZWZpbmUgSU9DUEFSTV9NQVNLICAgICAgMHgxRkZGCisrI2VuZGlmCisrI2lmbmRlZiBJT0NQQVJNX0xFTgorKyNkZWZpbmUgSU9DUEFSTV9MRU4oYSkgICAgKCgoYSkgPj4gMTYpICYgSU9DUEFSTV9NQVNLKQorKyNlbmRpZgorKworKyNpZm5kZWYgX0lPQ19TSVpFCisrI2lmZGVmIElPQ1BBUk1fTEVOCisrI2RlZmluZSBfSU9DX1NJWkUoeCkgSU9DUEFSTV9MRU4oeCkKKysjZWxzZQorKyNlcnJvciAiTm8gbWVjaGFuaXNtIGZvciBkZXRlcm1pbmluZyBpb2N0bCBsZW5ndGggZm91bmQuIgorKyNlbmRpZgorKyNlbmRpZgorKworIC8vIGZpbGUgYWNjZXNzIHByb3RlY3Rpb24gbWFzaworICNkZWZpbmUgU19QUk9UX01BU0sgKFNfSVNVSUR8IFNfSVNHSUQgfCBTX0lTVlRYIHwgU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKQorIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL3VuaW9uZnMtZnVzZV8wLjI2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL3VuaW9uZnMtZnVzZV8wLjI2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTIwNDI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS91bmlvbmZzLWZ1c2VfMC4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBGVVNFIGJhc2VkIGltcGxlbWVudGlvbiBvZiB1bmlvbmZzIgotSE9NRVBBR0UgPSAiaHR0cDovL3BvZGdvcm55LmN6L21vaW4vVW5pb25Gc0Z1c2UiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotREVQRU5EUyA9ICJmdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3VuaW9uZnMuYztiZWdpbmxpbmU9MztlbmRsaW5lPTg7bWQ1PTMwZmE4ZGU3MGZkOGFiYWIwMGI0ODNhMWI3OTQzYTMyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wb2Rnb3JueS5jei91bmlvbmZzLWZ1c2UvcmVsZWFzZXMvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjg5YzYzNjQ4NDc1NmY2ZjdhNzI4ZWYzNTRjYmVhYzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGQ1YzlkY2I1MWVjYjlhOWIwMzg5MGUxNmQxN2UzN2Q2MDJiMGMxZjIzZWQ2YTlkZGVjMmIwZjcxOWM5ZjY2MiIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke2V4ZWNfcHJlZml4fQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotUE5CTEFDS0xJU1RbdW5pb25mcy1mdXNlXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDY0OC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvdW5pb25mcy1mdXNlXzIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS91bmlvbmZzLWZ1c2VfMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZWRmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvdW5pb25mcy1mdXNlXzIuMC5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkEgRlVTRSBiYXNlZCBpbXBsZW1lbnRpb24gb2YgdW5pb25mcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ycG9kZ29ybnkvdW5pb25mcy1mdXNlIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy91bmlvbmZzLmM7YmVnaW5saW5lPTM7ZW5kbGluZT04O21kNT0zMGZhOGRlNzBmZDhhYmFiMDBiNDgzYTFiNzk0M2EzMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT03ZTVhMzdmY2UxNzMwNzA2NmVlYzZiMjM1NDZkYTNiMyBcCisiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG9kZ29ybnkvJHtCUE59LmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11bmlvbmZzLURlZmluZS1JT0NQQVJNX0xFTi1pZi11bmRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiYzhkMjNhOWE3NWYxYTYyOTg4NTkzNjcxODM5ZThhMTY4YTc5ZjNlNSIKKworREVQRU5EUyA9ICJmdXNlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZV8yLjkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM2MjgxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZV8yLjkuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiSW1wbGVtZW50YXRpb24gb2YgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW0gaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbSIKLURFU0NSSVBUSU9OID0gIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBpcyBhIHNpbXBsZSBpbnRlcmZhY2UgZm9yIHVzZXJzcGFjZSBcCi0gICAgICAgICAgICAgICBwcm9ncmFtcyB0byBleHBvcnQgYSB2aXJ0dWFsIGZpbGVzeXN0ZW0gdG8gdGhlIExpbnV4IGtlcm5lbC4gRlVTRSBcCi0gICAgICAgICAgICAgICBhbHNvIGFpbXMgdG8gcHJvdmlkZSBhIHNlY3VyZSBtZXRob2QgZm9yIG5vbiBwcml2aWxlZ2VkIHVzZXJzIHRvIFwKLSAgICAgICAgICAgICAgIGNyZWF0ZSBhbmQgbW91bnQgdGhlaXIgb3duIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLiBcCi0gICAgICAgICAgICAgICIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdXNlLnNmLm5ldCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2Z1c2UvZnVzZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZ29sZC11bnZlcnNpb25lZC1zeW1ib2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1c2UtZml4LXRoZS1yZXR1cm4tdmFsdWUtb2YtaGVscC1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZnVzZS5jb25mIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlY2I3MTJiNWZmYzZkZmZkNTRmNGE0MDVjOWIzNzJkOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YmU5YzBiZmY2YWY4YzY3NzQxNDkzNWYzMTY5OWVhNWE3ZjhmNWY3OTFjZmE1MjA1YmUwMmVhMTg2Yjk3Y2UxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1JTklUU0NSSVBUX05BTUUgPSAiZnVzZSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMgUyAuIHN0b3AgMjAgMCA2IC4iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIiCi0KLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCi0KLVBBQ0tBR0VTID0rICJmdXNlLXV0aWxzLWRiZyBmdXNlLXV0aWxzIGxpYnVsb2NrbWdyIGxpYnVsb2NrbWdyLWRldiBsaWJ1bG9ja21nci1kYmciCi0KLVJSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJrZXJuZWwtbW9kdWxlLWZ1c2UgbGlidWxvY2ttZ3IgZnVzZS11dGlscyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJmdXNlKi5sYSIKLQotRklMRVNfbGlidWxvY2ttZ3IgPSAiJHtsaWJkaXJ9L2xpYnVsb2NrbWdyLnNvLioiCi1GSUxFU19saWJ1bG9ja21nci1kZXYgKz0gIiR7bGliZGlyfS9saWJ1bG9jayoubGEiCi1GSUxFU19saWJ1bG9ja21nci1kYmcgKz0gIiR7bGliZGlyfS8uZGVidWcvbGlidWxvY2sqIgotCi0jIEZvcmJpZCBhdXRvLXJlbmFtaW5nIHRvIGxpYmZ1c2UtdXRpbHMKLUZJTEVTX2Z1c2UtdXRpbHMgPSAiJHtiaW5kaXJ9ICR7YmFzZV9zYmluZGlyfSIKLUZJTEVTX2Z1c2UtdXRpbHMtZGJnID0gIiR7YmluZGlyfS8uZGVidWcgJHtiYXNlX3NiaW5kaXJ9Ly5kZWJ1ZyIKLURFQklBTl9OT0FVVE9OQU1FX2Z1c2UtdXRpbHMgPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX2Z1c2UtdXRpbHMtZGJnID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1yZiAke0R9JHtiYXNlX3ByZWZpeH0vZGV2Ci0KLSAgICAjIHN5c3RlbWQgY2xhc3MgcmVtb3ZlIHRoZSBzeXN2X2luaXRkZGlyIG9ubHkgaWYgc3lzdGVtZF9zeXN0ZW1fdW5pdGRpcgotICAgICMgY29udGFpbnMgYW55dGhpbmcsIGJ1dCBpdCdzIG5vdCBuZWVkZWQgaWYgc3lzdmluaXQgaXMgbm90IGluIERJU1RST19GRUFUVVJFUwotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotICAgICAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGZpCi0KLSAgICAjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZnVzZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kCi0gICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZV8yLjkuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDJkNGMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjcuYmIKQEAgLTAsMCArMSw2OSBAQAorU1VNTUFSWSA9ICJJbXBsZW1lbnRhdGlvbiBvZiBhIGZ1bGx5IGZ1bmN0aW9uYWwgZmlsZXN5c3RlbSBpbiBhIHVzZXJzcGFjZSBwcm9ncmFtIgorREVTQ1JJUFRJT04gPSAiRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIGlzIGEgc2ltcGxlIGludGVyZmFjZSBmb3IgdXNlcnNwYWNlIFwKKyAgICAgICAgICAgICAgIHByb2dyYW1zIHRvIGV4cG9ydCBhIHZpcnR1YWwgZmlsZXN5c3RlbSB0byB0aGUgTGludXgga2VybmVsLiBGVVNFIFwKKyAgICAgICAgICAgICAgIGFsc28gYWltcyB0byBwcm92aWRlIGEgc2VjdXJlIG1ldGhvZCBmb3Igbm9uIHByaXZpbGVnZWQgdXNlcnMgdG8gXAorICAgICAgICAgICAgICAgY3JlYXRlIGFuZCBtb3VudCB0aGVpciBvd24gZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuIFwKKyAgICAgICAgICAgICAgIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZSIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZ29sZC11bnZlcnNpb25lZC1zeW1ib2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1c2UtZml4LXRoZS1yZXR1cm4tdmFsdWUtb2YtaGVscC1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZnVzZS5jb25mIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YmQ0Y2U4MTg0NzQ1ZmQzZDAwMGNhMjY5MmFkYWNkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzI0MzJkMWFkNGY4MzNjMjBlMTNiNTdjZjQwY2U1Mjc3YTlkMzNlNDgzMjA1ZmM2M2M3ODExMWIzMzU4ODc0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitJTklUU0NSSVBUX05BTUUgPSAiZnVzZSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMgUyAuIHN0b3AgMjAgMCA2IC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIiCisKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCisKK1BBQ0tBR0VTID0rICJmdXNlLXV0aWxzLWRiZyBmdXNlLXV0aWxzIGxpYnVsb2NrbWdyIGxpYnVsb2NrbWdyLWRldiBsaWJ1bG9ja21nci1kYmciCisKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJrZXJuZWwtbW9kdWxlLWZ1c2UgbGlidWxvY2ttZ3IgZnVzZS11dGlscyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJmdXNlKi5sYSIKKworRklMRVNfbGlidWxvY2ttZ3IgPSAiJHtsaWJkaXJ9L2xpYnVsb2NrbWdyLnNvLioiCitGSUxFU19saWJ1bG9ja21nci1kZXYgKz0gIiR7bGliZGlyfS9saWJ1bG9jayoubGEiCitGSUxFU19saWJ1bG9ja21nci1kYmcgKz0gIiR7bGliZGlyfS8uZGVidWcvbGlidWxvY2sqIgorCisjIEZvcmJpZCBhdXRvLXJlbmFtaW5nIHRvIGxpYmZ1c2UtdXRpbHMKK0ZJTEVTX2Z1c2UtdXRpbHMgPSAiJHtiaW5kaXJ9ICR7YmFzZV9zYmluZGlyfSIKK0ZJTEVTX2Z1c2UtdXRpbHMtZGJnID0gIiR7YmluZGlyfS8uZGVidWcgJHtiYXNlX3NiaW5kaXJ9Ly5kZWJ1ZyIKK0RFQklBTl9OT0FVVE9OQU1FX2Z1c2UtdXRpbHMgPSAiMSIKK0RFQklBTl9OT0FVVE9OQU1FX2Z1c2UtdXRpbHMtZGJnID0gIjEiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgTWFrZSB0aGlzIGV4cGxpY2l0IHNvIG92ZXJyaWRpbmcgYmFzZV9zYmluZGlyIHByb3BhZ2F0ZXMgcHJvcGVybHkuCisgICAgZXhwb3J0IE1PVU5UX0ZVU0VfUEFUSD0iJHtiYXNlX3NiaW5kaXJ9IgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtcmYgJHtEfSR7YmFzZV9wcmVmaXh9L2RldgorCisgICAgIyBzeXN0ZW1kIGNsYXNzIHJlbW92ZSB0aGUgc3lzdl9pbml0ZGRpciBvbmx5IGlmIHN5c3RlbWRfc3lzdGVtX3VuaXRkaXIKKyAgICAjIGNvbnRhaW5zIGFueXRoaW5nLCBidXQgaXQncyBub3QgbmVlZGVkIGlmIHN5c3Zpbml0IGlzIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKyAgICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBmaQorCisgICAgIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBjb25maWd1cmF0aW9uIGZpbGUKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Z1c2UuY29uZiAke0R9JHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZAorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWwvMDAwMS1saWJhdS1EZWZpbmUtU1RSSVAtd2Vha2x5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC8wMDAxLWxpYmF1LURlZmluZS1TVFJJUC13ZWFrbHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVmZWE4MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWwvMDAwMS1saWJhdS1EZWZpbmUtU1RSSVAtd2Vha2x5LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYmI4ODAxZmIyMWFjOGQ3M2UzYjFhMTFhODU1NWFhZjgyMjE4MmE1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDUgU2VwIDIwMTcgMTA6MzY6NTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliYXU6IERlZmluZSBTVFJJUCB3ZWFrbHkKKworU1RSSVAgY2FuIGJlIHNldCBvbiBlbnZpcm9ubWVudCB0byB1c2UgY3Jvc3MgdmVyc2lvbiBvZiBzdHJpcCB1dGlsaXR5CitoYXJkY29kaW5nIHRvIHN0cmlwIGlzIG5vdCB3b3JraW5nIGluIGNyb3NzIGVudmlyb25tZW50CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBsaWJhdS9NYWtlZmlsZSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXUvTWFrZWZpbGUgYi9saWJhdS9NYWtlZmlsZQoraW5kZXggODE1MjBhYy4uYzI1ZWVmMiAxMDA2NDQKKy0tLSBhL2xpYmF1L01ha2VmaWxlCisrKysgYi9saWJhdS9NYWtlZmlsZQorQEAgLTI1LDYgKzI1LDcgQEAgTGliU29IZHIgPSBsaWJhdS5oIHJkdS5oCisgTGliU29FeHBvcnQgPSAkKGFkZHN1ZmZpeCAuZXhwLCAkKGJhc2VuYW1lICR7TGliU29PYmp9KSkKKyBMaWJTb0V4cG9ydEVyciA9ICQoYWRkc3VmZml4IC5lcnIsICR7TGliU29FeHBvcnR9KQorIExpYlNvVmVyU2NyaXB0ID0gdmVyc2NyaXB0CisrU1RSSVAgPz0gc3RyaXAKKyAKKyBhbGw6ICR7TGliU299CisgCitAQCAtNzcsNyArNzgsNyBAQCAke0xpYlNvfS4ke0xpYlNvTWFqb3J9LiR7TGliU29NaW5vcn06ICR7TGliU29PYmp9CisgCSR7Q0N9IC0tc2hhcmVkIC1XbCwtc29uYW1lLCR7TGliU299LiR7TGliU29NYWpvcn0gXAorIAkJLVdsLC0tdmVyc2lvbi1zY3JpcHQsJHtMaWJTb1ZlclNjcmlwdH0gXAorIAkJJHtMREZMQUdTfSAtbyAkQCAkXiAke0xETElCU30KKy0Jc3RyaXAgLVIgRVhQICRACisrCSR7U1RSSVB9IC1SIEVYUCAkQAorICMJcmVhZGVsZiAtLXN5bXMgLS11c2UtZHluYW1pYyBsaWJhdS5zbworIAorIGluc3RhbGxfdWxpYjogRmlsZSA9ICR7TGliU299LiR7TGliU29NYWpvcn0uJHtMaWJTb01pbm9yfQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC9hdWZzX3R5cGUuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWwvYXVmc190eXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NDgwMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC9hdWZzX3R5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTUgSnVuamlybyBSLiBPa2FqaW1hCi0gKgotICogVGhpcyBwcm9ncmFtLCBhdWZzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqLwotCi0jaWZuZGVmIF9fQVVGU19UWVBFX0hfXwotI2RlZmluZSBfX0FVRlNfVFlQRV9IX18KLQotI2RlZmluZSBBVUZTX05BTUUJImF1ZnMiCi0KLSNpZmRlZiBfX0tFUk5FTF9fCi0vKgotICogZGVmaW5lIGl0IGJlZm9yZSBpbmNsdWRpbmcgYWxsIG90aGVyIGhlYWRlcnMuCi0gKiBzY2hlZC5oIG1heSB1c2UgcHJfKiBtYWNyb3MgYmVmb3JlIGRlZmluaW5nICJjdXJyZW50Iiwgc28gZGVmaW5lIHRoZQotICogbm8tY3VycmVudCB2ZXJzaW9uIGZpcnN0LCBhbmQgcmUtZGVmaW5lIGxhdGVyLgotICovCi0jZGVmaW5lIHByX2ZtdChmbXQpCUFVRlNfTkFNRSAiICVzOiVkOiAiIGZtdCwgX19mdW5jX18sIF9fTElORV9fCi0jaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KLSN1bmRlZiBwcl9mbXQKLSNkZWZpbmUgcHJfZm10KGZtdCkgXAotCQlBVUZTX05BTUUgIiAlczolZDolLipzWyVkXTogIiBmbXQsIF9fZnVuY19fLCBfX0xJTkVfXywgXAotCQkoaW50KXNpemVvZihjdXJyZW50LT5jb21tKSwgY3VycmVudC0+Y29tbSwgY3VycmVudC0+cGlkCi0jZWxzZQotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2xpbWl0cy5oPgotCi0jZGVmaW5lIEFVRlNfVkVSU0lPTgkiMy4xOC0yMDE1MDQwNiIKLQotLyogdG9kbz8gbW92ZSB0aGlzIHRvIGxpbnV4LTIuNi4xOS9pbmNsdWRlL21hZ2ljLmggKi8KLSNkZWZpbmUgQVVGU19TVVBFUl9NQUdJQwkoJ2EnIDw8IDI0IHwgJ3UnIDw8IDE2IHwgJ2YnIDw8IDggfCAncycpCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmZGVmIENPTkZJR19BVUZTX0JSQU5DSF9NQVhfMTI3Ci10eXBlZGVmIGludDhfdCBhdWZzX2JpbmRleF90OwotI2RlZmluZSBBVUZTX0JSQU5DSF9NQVggMTI3Ci0jZWxzZQotdHlwZWRlZiBpbnQxNl90IGF1ZnNfYmluZGV4X3Q7Ci0jaWZkZWYgQ09ORklHX0FVRlNfQlJBTkNIX01BWF81MTEKLSNkZWZpbmUgQVVGU19CUkFOQ0hfTUFYIDUxMQotI2VsaWYgZGVmaW5lZChDT05GSUdfQVVGU19CUkFOQ0hfTUFYXzEwMjMpCi0jZGVmaW5lIEFVRlNfQlJBTkNIX01BWCAxMDIzCi0jZWxpZiBkZWZpbmVkKENPTkZJR19BVUZTX0JSQU5DSF9NQVhfMzI3NjcpCi0jZGVmaW5lIEFVRlNfQlJBTkNIX01BWCAzMjc2NwotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIF9fS0VSTkVMX18KLSNpZm5kZWYgQVVGU19CUkFOQ0hfTUFYCi0jZXJyb3IgdW5rbm93biBDT05GSUdfQVVGU19CUkFOQ0hfTUFYIHZhbHVlCi0jZW5kaWYKLSNlbmRpZiAvKiBfX0tFUk5FTF9fICovCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2RlZmluZSBBVUZTX0ZTVFlQRQkJQVVGU19OQU1FCi0KLSNkZWZpbmUgQVVGU19ST09UX0lOTwkJMgotI2RlZmluZSBBVUZTX0ZJUlNUX0lOTwkJMTEKLQotI2RlZmluZSBBVUZTX1dIX1BGWAkJIi53aC4iCi0jZGVmaW5lIEFVRlNfV0hfUEZYX0xFTgkJKChpbnQpc2l6ZW9mKEFVRlNfV0hfUEZYKSAtIDEpCi0jZGVmaW5lIEFVRlNfV0hfVE1QX0xFTgkJNAotLyogYSBsaW1pdCBmb3Igcm1kaXIvcmVuYW1lIGEgZGlyIGFuZCBjb3B5dXAgKi8KLSNkZWZpbmUgQVVGU19NQVhfTkFNRUxFTgkoTkFNRV9NQVggXAotCQkJCS0gQVVGU19XSF9QRlhfTEVOICogMgkvKiBkb3VibHkgd2hpdGVvdXRlZCAqL1wKLQkJCQktIDEJCQkvKiBkb3QgKi9cCi0JCQkJLSBBVUZTX1dIX1RNUF9MRU4pCS8qIGhleCAqLwotI2RlZmluZSBBVUZTX1hJTk9fRk5BTUUJCSIuIiBBVUZTX05BTUUgIi54aW5vIgotI2RlZmluZSBBVUZTX1hJTk9fREVGUEFUSAkiL3RtcC8iIEFVRlNfWElOT19GTkFNRQotI2RlZmluZSBBVUZTX1hJTk9fREVGX1NFQwkzMCAvKiBzZWNvbmRzICovCi0jZGVmaW5lIEFVRlNfWElOT19ERUZfVFJVTkMJNDUgLyogcGVyY2VudGFnZSAqLwotI2RlZmluZSBBVUZTX0RJUldIX0RFRgkJMwotI2RlZmluZSBBVUZTX1JEQ0FDSEVfREVGCTEwIC8qIHNlY29uZHMgKi8KLSNkZWZpbmUgQVVGU19SRENBQ0hFX01BWAkzNjAwIC8qIHNlY29uZHMgKi8KLSNkZWZpbmUgQVVGU19SREJMS19ERUYJCTUxMiAvKiBieXRlcyAqLwotI2RlZmluZSBBVUZTX1JESEFTSF9ERUYJCTMyCi0jZGVmaW5lIEFVRlNfV0tRX05BTUUJCUFVRlNfTkFNRSAiZCIKLSNkZWZpbmUgQVVGU19NRlNfREVGX1NFQwkzMCAvKiBzZWNvbmRzICovCi0jZGVmaW5lIEFVRlNfTUZTX01BWF9TRUMJMzYwMCAvKiBzZWNvbmRzICovCi0jZGVmaW5lIEFVRlNfRkhTTV9DQUNIRV9ERUZfU0VDCTMwIC8qIHNlY29uZHMgKi8KLSNkZWZpbmUgQVVGU19QTElOS19XQVJOCQk1MCAvKiBudW1iZXIgb2YgcGxpbmtzIGluIGEgc2luZ2xlIGJ1Y2tldCAqLwotCi0vKiBwc2V1ZG8tbGluayBtYWludGVuYWNlIHVuZGVyIC9wcm9jICovCi0jZGVmaW5lIEFVRlNfUExJTktfTUFJTlRfTkFNRQkicGxpbmtfbWFpbnQiCi0jZGVmaW5lIEFVRlNfUExJTktfTUFJTlRfRElSCSJmcy8iIEFVRlNfTkFNRQotI2RlZmluZSBBVUZTX1BMSU5LX01BSU5UX1BBVEgJQVVGU19QTElOS19NQUlOVF9ESVIgIi8iIEFVRlNfUExJTktfTUFJTlRfTkFNRQotCi0jZGVmaW5lIEFVRlNfRElST1BRX05BTUUJQVVGU19XSF9QRlggIi5vcHEiIC8qIHdoaXRlb3V0ZWQgZG91Ymx5ICovCi0jZGVmaW5lIEFVRlNfV0hfRElST1BRCQlBVUZTX1dIX1BGWCBBVUZTX0RJUk9QUV9OQU1FCi0KLSNkZWZpbmUgQVVGU19CQVNFX05BTUUJCUFVRlNfV0hfUEZYIEFVRlNfTkFNRQotI2RlZmluZSBBVUZTX1BMSU5LRElSX05BTUUJQVVGU19XSF9QRlggInBsbmsiCi0jZGVmaW5lIEFVRlNfT1JQSERJUl9OQU1FCUFVRlNfV0hfUEZYICJvcnBoIgotCi0vKiBkb3VibHkgd2hpdGVvdXRlZCAqLwotI2RlZmluZSBBVUZTX1dIX0JBU0UJCUFVRlNfV0hfUEZYIEFVRlNfQkFTRV9OQU1FCi0jZGVmaW5lIEFVRlNfV0hfUExJTktESVIJQVVGU19XSF9QRlggQVVGU19QTElOS0RJUl9OQU1FCi0jZGVmaW5lIEFVRlNfV0hfT1JQSERJUgkJQVVGU19XSF9QRlggQVVGU19PUlBIRElSX05BTUUKLQotLyogYnJhbmNoIHBlcm1pc3Npb25zIGFuZCBhdHRyaWJ1dGVzICovCi0jZGVmaW5lIEFVRlNfQlJQRVJNX1JXCQkicnciCi0jZGVmaW5lIEFVRlNfQlJQRVJNX1JPCQkicm8iCi0jZGVmaW5lIEFVRlNfQlJQRVJNX1JSCQkicnIiCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0NPT19SRUcJImNvb19yZWciCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0NPT19BTEwJImNvb19hbGwiCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0ZIU00JImZoc20iCi0jZGVmaW5lIEFVRlNfQlJBVFRSX1VOUElOCSJ1bnBpbiIKLSNkZWZpbmUgQVVGU19CUkFUVFJfSUNFWAkiaWNleCIKLSNkZWZpbmUgQVVGU19CUkFUVFJfSUNFWF9TRUMJImljZXhzZWMiCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0lDRVhfU1lTCSJpY2V4c3lzIgotI2RlZmluZSBBVUZTX0JSQVRUUl9JQ0VYX1RSCSJpY2V4dHIiCi0jZGVmaW5lIEFVRlNfQlJBVFRSX0lDRVhfVVNSCSJpY2V4dXNyIgotI2RlZmluZSBBVUZTX0JSQVRUUl9JQ0VYX09USAkiaWNleG90aCIKLSNkZWZpbmUgQVVGU19CUlJBVFRSX1dICQkid2giCi0jZGVmaW5lIEFVRlNfQlJXQVRUUl9OTFdICSJub2x3aCIKLSNkZWZpbmUgQVVGU19CUldBVFRSX01PTwkibW9vIgotCi0jZGVmaW5lIEF1QnJQZXJtX1JXCQkxCQkvKiB3cml0YWJsZSwgaGFyZGxpbmthYmxlIHdoICovCi0jZGVmaW5lIEF1QnJQZXJtX1JPCQkoMSA8PCAxKQkvKiByZWFkb25seSAqLwotI2RlZmluZSBBdUJyUGVybV9SUgkJKDEgPDwgMikJLyogbmF0aXZlbHkgcmVhZG9ubHkgKi8KLSNkZWZpbmUgQXVCclBlcm1fTWFzawkJKEF1QnJQZXJtX1JXIHwgQXVCclBlcm1fUk8gfCBBdUJyUGVybV9SUikKLQotI2RlZmluZSBBdUJyQXR0cl9DT09fUkVHCSgxIDw8IDMpCS8qIGNvcHktdXAgb24gb3BlbiAqLwotI2RlZmluZSBBdUJyQXR0cl9DT09fQUxMCSgxIDw8IDQpCi0jZGVmaW5lIEF1QnJBdHRyX0NPT19NYXNrCShBdUJyQXR0cl9DT09fUkVHIHwgQXVCckF0dHJfQ09PX0FMTCkKLQotI2RlZmluZSBBdUJyQXR0cl9GSFNNCQkoMSA8PCA1KQkvKiBmaWxlLWJhc2VkIGhzbSAqLwotI2RlZmluZSBBdUJyQXR0cl9VTlBJTgkJKDEgPDwgNikJLyogcmVuYW1lLWFibGUgdG9wIGRpciBvZgotCQkJCQkJICAgYnJhbmNoLiBtZWFuaW5nbGVzcyBzaW5jZQotCQkJCQkJICAgbGludXgtMy4xOC1yYzEgKi8KLQotLyogaWdub3JlIGVycm9yIGluIGNvcHlpbmcgWEFUVFIgKi8KLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9TRUMJKDEgPDwgNykKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9TWVMJKDEgPDwgOCkKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9UUgkoMSA8PCA5KQotI2RlZmluZSBBdUJyQXR0cl9JQ0VYX1VTUgkoMSA8PCAxMCkKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9PVEgJKDEgPDwgMTEpCi0jZGVmaW5lIEF1QnJBdHRyX0lDRVgJCShBdUJyQXR0cl9JQ0VYX1NFQwlcCi0JCQkJIHwgQXVCckF0dHJfSUNFWF9TWVMJXAotCQkJCSB8IEF1QnJBdHRyX0lDRVhfVFIJXAotCQkJCSB8IEF1QnJBdHRyX0lDRVhfVVNSCVwKLQkJCQkgfCBBdUJyQXR0cl9JQ0VYX09USCkKLQotI2RlZmluZSBBdUJyUkF0dHJfV0gJCSgxIDw8IDEyKQkvKiB3aGl0ZW91dC1hYmxlICovCi0jZGVmaW5lIEF1QnJSQXR0cl9NYXNrCQlBdUJyUkF0dHJfV0gKLQotI2RlZmluZSBBdUJyV0F0dHJfTm9MaW5rV0gJKDEgPDwgMTMpCS8qIHVuLWhhcmRsaW5rYWJsZSB3aGl0ZW91dHMgKi8KLSNkZWZpbmUgQXVCcldBdHRyX01PTwkJKDEgPDwgMTQpCS8qIG1vdmUtdXAgb24gb3BlbiAqLwotI2RlZmluZSBBdUJyV0F0dHJfTWFzawkJKEF1QnJXQXR0cl9Ob0xpbmtXSCB8IEF1QnJXQXR0cl9NT08pCi0KLSNkZWZpbmUgQXVCckF0dHJfQ01PT19NYXNrCShBdUJyQXR0cl9DT09fTWFzayB8IEF1QnJXQXR0cl9NT08pCi0KLS8qICN3YXJuaW5nIHRlc3QgdXNlcnNwYWNlICovCi0jaWZkZWYgX19LRVJORUxfXwotI2lmbmRlZiBDT05GSUdfQVVGU19GSFNNCi0jdW5kZWYgQXVCckF0dHJfRkhTTQotI2RlZmluZSBBdUJyQXR0cl9GSFNNCQkwCi0jZW5kaWYKLSNpZm5kZWYgQ09ORklHX0FVRlNfWEFUVFIKLSN1bmRlZglBdUJyQXR0cl9JQ0VYCi0jZGVmaW5lIEF1QnJBdHRyX0lDRVgJCTAKLSN1bmRlZglBdUJyQXR0cl9JQ0VYX1NFQwotI2RlZmluZSBBdUJyQXR0cl9JQ0VYX1NFQwkwCi0jdW5kZWYJQXVCckF0dHJfSUNFWF9TWVMKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9TWVMJMAotI3VuZGVmCUF1QnJBdHRyX0lDRVhfVFIKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9UUgkwCi0jdW5kZWYJQXVCckF0dHJfSUNFWF9VU1IKLSNkZWZpbmUgQXVCckF0dHJfSUNFWF9VU1IJMAotI3VuZGVmCUF1QnJBdHRyX0lDRVhfT1RICi0jZGVmaW5lIEF1QnJBdHRyX0lDRVhfT1RICTAKLSNlbmRpZgotI2VuZGlmCi0KLS8qIHRoZSBsb25nZXN0IGNvbWJpbmF0aW9uICovCi0vKiBBVUZTX0JSQVRUUl9JQ0VYIGFuZCBBVUZTX0JSQVRUUl9JQ0VYX1RSIGRvbid0IGFmZmVjdCBoZXJlICovCi0jZGVmaW5lIEF1QnJQZXJtU3RyU3oJc2l6ZW9mKEFVRlNfQlJQRVJNX1JXCQkJXAotCQkJICAgICAgICIrIiBBVUZTX0JSQVRUUl9DT09fUkVHCQlcCi0JCQkgICAgICAgIisiIEFVRlNfQlJBVFRSX0ZIU00JCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfVU5QSU4JCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfSUNFWF9TRUMJCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfSUNFWF9TWVMJCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfSUNFWF9VU1IJCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUkFUVFJfSUNFWF9PVEgJCVwKLQkJCSAgICAgICAiKyIgQVVGU19CUldBVFRSX05MV0gpCi0KLXR5cGVkZWYgc3RydWN0IHsKLQljaGFyIGFbQXVCclBlcm1TdHJTel07Ci19IGF1X2JyX3Blcm1fc3RyX3Q7Ci0KLXN0YXRpYyBpbmxpbmUgaW50IGF1X2JyX3dyaXRhYmxlKGludCBicnBlcm0pCi17Ci0JcmV0dXJuIGJycGVybSAmIEF1QnJQZXJtX1JXOwotfQotCi1zdGF0aWMgaW5saW5lIGludCBhdV9icl93aGFibGUoaW50IGJycGVybSkKLXsKLQlyZXR1cm4gYnJwZXJtICYgKEF1QnJQZXJtX1JXIHwgQXVCclJBdHRyX1dIKTsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgYXVfYnJfd2hfbGlua2FibGUoaW50IGJycGVybSkKLXsKLQlyZXR1cm4gIShicnBlcm0gJiBBdUJyV0F0dHJfTm9MaW5rV0gpOwotfQotCi1zdGF0aWMgaW5saW5lIGludCBhdV9icl9jbW9vKGludCBicnBlcm0pCi17Ci0JcmV0dXJuIGJycGVybSAmIEF1QnJBdHRyX0NNT09fTWFzazsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgYXVfYnJfZmhzbShpbnQgYnJwZXJtKQotewotCXJldHVybiBicnBlcm0gJiBBdUJyQXR0cl9GSFNNOwotfQotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIGlvY3RsICovCi1lbnVtIHsKLQkvKiByZWFkZGlyIGluIHVzZXJzcGFjZSAqLwotCUF1Q3RsX1JEVSwKLQlBdUN0bF9SRFVfSU5PLAotCi0JQXVDdGxfV0JSX0ZELAkvKiBwYXRoY29uZiB3cmFwcGVyICovCi0JQXVDdGxfSUJVU1ksCS8qIGJ1c3kgaW5vZGUgKi8KLQlBdUN0bF9NVkRPV04sCS8qIG1vdmUtZG93biAqLwotCUF1Q3RsX0JSLAkvKiBpbmZvIGFib3V0IGJyYW5jaGVzICovCi0JQXVDdGxfRkhTTV9GRAkvKiBjb25uZWN0aW9uIGZvciBmaHNtICovCi19OwotCi0vKiBib3Jyb3dlZCBmcm9tIGxpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmggKi8KLSNpZm5kZWYgQUxJR04KLSNkZWZpbmUgQUxJR04oeCwgYSkJCV9fQUxJR05fTUFTSyh4LCAodHlwZW9mKHgpKShhKS0xKQotI2RlZmluZSBfX0FMSUdOX01BU0soeCwgbWFzaykJKCgoeCkrKG1hc2spKSZ+KG1hc2spKQotI2VuZGlmCi0KLS8qIGJvcnJvd2VkIGZyb20gbGludXgvaW5jbHVkZS9saW51eC9jb21waWxlci1nY2MzLmggKi8KLSNpZm5kZWYgX19hbGlnbmVkCi0jZGVmaW5lIF9fYWxpZ25lZCh4KQkJCV9fYXR0cmlidXRlX18oKGFsaWduZWQoeCkpKQotI2VuZGlmCi0KLSNpZmRlZiBfX0tFUk5FTF9fCi0jaWZuZGVmIF9fcGFja2VkCi0jZGVmaW5lIF9fcGFja2VkCQkJX19hdHRyaWJ1dGVfXygocGFja2VkKSkKLSNlbmRpZgotI2VuZGlmCi0KLXN0cnVjdCBhdV9yZHVfY29va2llIHsKLQl1aW50NjRfdAloX3BvczsKLQlpbnQxNl90CQliaW5kZXg7Ci0JdWludDhfdAkJZmxhZ3M7Ci0JdWludDhfdAkJcGFkOwotCXVpbnQzMl90CWdlbmVyYXRpb247Ci19IF9fYWxpZ25lZCg4KTsKLQotc3RydWN0IGF1X3JkdV9lbnQgewotCXVpbnQ2NF90CWlubzsKLQlpbnQxNl90CQliaW5kZXg7Ci0JdWludDhfdAkJdHlwZTsKLQl1aW50OF90CQlubGVuOwotCXVpbnQ4X3QJCXdoOwotCWNoYXIJCW5hbWVbMF07Ci19IF9fYWxpZ25lZCg4KTsKLQotc3RhdGljIGlubGluZSBpbnQgYXVfcmR1X2xlbihpbnQgbmxlbikKLXsKLQkvKiBpbmNsdWRlIHRoZSB0ZXJtaW5hdGluZyBOVUxMICovCi0JcmV0dXJuIEFMSUdOKHNpemVvZihzdHJ1Y3QgYXVfcmR1X2VudCkgKyBubGVuICsgMSwKLQkJICAgICBzaXplb2YodWludDY0X3QpKTsKLX0KLQotdW5pb24gYXVfcmR1X2VudF91bCB7Ci0Jc3RydWN0IGF1X3JkdV9lbnQJKmU7Ci0JdWludDY0X3QJCQl1bDsKLX07Ci0KLWVudW0gewotCUF1ZnNDdGxSZHVWX1NaLAotCUF1ZnNDdGxSZHVWX0VuZAotfTsKLQotc3RydWN0IGF1ZnNfcmR1IHsKLQkvKiBpbnB1dCAqLwotCXVuaW9uIHsKLQkJdWludDY0X3QJc3o7CS8qIEF1Q3RsX1JEVSAqLwotCQl1aW50NjRfdAluZW50OwkvKiBBdUN0bF9SRFVfSU5PICovCi0JfTsKLQl1bmlvbiBhdV9yZHVfZW50X3VsCWVudDsKLQl1aW50MTZfdAkJdmVyaWZ5W0F1ZnNDdGxSZHVWX0VuZF07Ci0KLQkvKiBpbnB1dC9vdXRwdXQgKi8KLQl1aW50MzJfdAkJYmxrOwotCi0JLyogb3V0cHV0ICovCi0JdW5pb24gYXVfcmR1X2VudF91bAl0YWlsOwotCS8qIG51bWJlciBvZiBlbnRyaWVzIHdoaWNoIHdlcmUgYWRkZWQgaW4gYSBzaW5nbGUgY2FsbCAqLwotCXVpbnQ2NF90CQlyZW50OwotCXVpbnQ4X3QJCQlmdWxsOwotCXVpbnQ4X3QJCQlzaHdoOwotCi0Jc3RydWN0IGF1X3JkdV9jb29raWUJY29va2llOwotfSBfX2FsaWduZWQoOCk7Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotc3RydWN0IGF1ZnNfd2JyX2ZkIHsKLQl1aW50MzJfdAlvZmxhZ3M7Ci0JaW50MTZfdAkJYnJpZDsKLX0gX19hbGlnbmVkKDgpOwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXN0cnVjdCBhdWZzX2lidXN5IHsKLQl1aW50NjRfdAlpbm8sIGhfaW5vOwotCWludDE2X3QJCWJpbmRleDsKLX0gX19hbGlnbmVkKDgpOwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIGVycm9yIGNvZGUgZm9yIG1vdmUtZG93biAqLwotLyogdGhlIGFjdHVhbCBtZXNzYWdlIHN0cmluZ3MgYXJlIGltcGxlbWVudGVkIGluIGF1ZnMtdXRpbC5naXQgKi8KLWVudW0gewotCUVBVV9NVkRPV05fT1BBUVVFID0gMSwKLQlFQVVfTVZET1dOX1dISVRFT1VULAotCUVBVV9NVkRPV05fVVBQRVIsCi0JRUFVX01WRE9XTl9CT1RUT00sCi0JRUFVX01WRE9XTl9OT1VQUEVSLAotCUVBVV9NVkRPV05fTk9MT1dFUkJSLAotCUVBVV9MYXN0Ci19OwotCi0vKiBmbGFncyBmb3IgbW92ZS1kb3duICovCi0jZGVmaW5lIEFVRlNfTVZET1dOX0RNU0cJMQotI2RlZmluZSBBVUZTX01WRE9XTl9PV0xPV0VSCSgxIDw8IDEpCS8qIG92ZXJ3cml0ZSBsb3dlciAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9LVVBQRVIJKDEgPDwgMikJLyoga2VlcCB1cHBlciAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9ST0xPV0VSCSgxIDw8IDMpCS8qIGRvIGV2ZW4gaWYgbG93ZXIgaXMgUk8gKi8KLSNkZWZpbmUgQVVGU19NVkRPV05fUk9MT1dFUl9SCSgxIDw8IDQpCS8qIGRpZCBvbiBsb3dlciBSTyAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9ST1VQUEVSCSgxIDw8IDUpCS8qIGRvIGV2ZW4gaWYgdXBwZXIgaXMgUk8gKi8KLSNkZWZpbmUgQVVGU19NVkRPV05fUk9VUFBFUl9SCSgxIDw8IDYpCS8qIGRpZCBvbiB1cHBlciBSTyAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9CUklEX1VQUEVSCSgxIDw8IDcpCS8qIHVwcGVyIGJyaWQgKi8KLSNkZWZpbmUgQVVGU19NVkRPV05fQlJJRF9MT1dFUgkoMSA8PCA4KQkvKiBsb3dlciBicmlkICovCi0jZGVmaW5lIEFVRlNfTVZET1dOX0ZIU01fTE9XRVIJKDEgPDwgOSkJLyogZmluZCBmaHNtIGF0dHIgZm9yIGxvd2VyICovCi0jZGVmaW5lIEFVRlNfTVZET1dOX1NURlMJKDEgPDwgMTApCS8qIHJlcS4gc3RmcyAqLwotI2RlZmluZSBBVUZTX01WRE9XTl9TVEZTX0ZBSUxFRAkoMSA8PCAxMSkJLyogb3V0cHV0OiBzdGZzIGlzIHVudXNhYmxlICovCi0jZGVmaW5lIEFVRlNfTVZET1dOX0JPVFRPTQkoMSA8PCAxMikJLyogb3V0cHV0OiBubyBtb3JlIGxvd2VycyAqLwotCi0vKiBpbmRleCBmb3IgbW92ZS1kb3duICovCi1lbnVtIHsKLQlBVUZTX01WRE9XTl9VUFBFUiwKLQlBVUZTX01WRE9XTl9MT1dFUiwKLQlBVUZTX01WRE9XTl9OQVJSQVkKLX07Ci0KLS8qCi0gKiBhZGRpdGlvbmFsIGluZm8gb2YgbW92ZS1kb3duCi0gKiBudW1iZXIgb2YgZnJlZSBibG9ja3MgYW5kIGlub2Rlcy4KLSAqIHN1YnNldCBvZiBzdHJ1Y3Qga3N0YXRmcywgYnV0IHNtYWxsZXIgYW5kIGFsd2F5cyA2NGJpdC4KLSAqLwotc3RydWN0IGF1ZnNfc3RmcyB7Ci0JdWludDY0X3QJZl9ibG9ja3M7Ci0JdWludDY0X3QJZl9iYXZhaWw7Ci0JdWludDY0X3QJZl9maWxlczsKLQl1aW50NjRfdAlmX2ZmcmVlOwotfTsKLQotc3RydWN0IGF1ZnNfc3RiciB7Ci0JaW50MTZfdAkJCWJyaWQ7CS8qIG9wdGlvbmFsIGlucHV0ICovCi0JaW50MTZfdAkJCWJpbmRleDsJLyogb3V0cHV0ICovCi0Jc3RydWN0IGF1ZnNfc3RmcwlzdGZzOwkvKiBvdXRwdXQgd2hlbiBBVUZTX01WRE9XTl9TVEZTIHNldCAqLwotfSBfX2FsaWduZWQoOCk7Ci0KLXN0cnVjdCBhdWZzX212ZG93biB7Ci0JdWludDMyX3QJCWZsYWdzOwkJCS8qIGlucHV0L291dHB1dCAqLwotCXN0cnVjdCBhdWZzX3N0YnIJc3RicltBVUZTX01WRE9XTl9OQVJSQVldOyAvKiBpbnB1dC9vdXRwdXQgKi8KLQlpbnQ4X3QJCQlhdV9lcnJubzsJCS8qIG91dHB1dCAqLwotfSBfX2FsaWduZWQoOCk7Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotdW5pb24gYXVmc19icmluZm8gewotCS8qIFBBVEhfTUFYIG1heSBkaWZmZXIgYmV0d2VlbiBrZXJuZWwtc3BhY2UgYW5kIHVzZXItc3BhY2UgKi8KLQljaGFyCV9zcGFjZXJbNDA5Nl07Ci0Jc3RydWN0IHsKLQkJaW50MTZfdAlpZDsKLQkJaW50CXBlcm07Ci0JCWNoYXIJcGF0aFswXTsKLQl9OwotfSBfX2FsaWduZWQoOCk7Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2RlZmluZSBBdUN0bFR5cGUJCSdBJwotI2RlZmluZSBBVUZTX0NUTF9SRFUJCV9JT1dSKEF1Q3RsVHlwZSwgQXVDdGxfUkRVLCBzdHJ1Y3QgYXVmc19yZHUpCi0jZGVmaW5lIEFVRlNfQ1RMX1JEVV9JTk8JX0lPV1IoQXVDdGxUeXBlLCBBdUN0bF9SRFVfSU5PLCBzdHJ1Y3QgYXVmc19yZHUpCi0jZGVmaW5lIEFVRlNfQ1RMX1dCUl9GRAkJX0lPVyhBdUN0bFR5cGUsIEF1Q3RsX1dCUl9GRCwgXAotCQkJCSAgICAgc3RydWN0IGF1ZnNfd2JyX2ZkKQotI2RlZmluZSBBVUZTX0NUTF9JQlVTWQkJX0lPV1IoQXVDdGxUeXBlLCBBdUN0bF9JQlVTWSwgc3RydWN0IGF1ZnNfaWJ1c3kpCi0jZGVmaW5lIEFVRlNfQ1RMX01WRE9XTgkJX0lPV1IoQXVDdGxUeXBlLCBBdUN0bF9NVkRPV04sIFwKLQkJCQkgICAgICBzdHJ1Y3QgYXVmc19tdmRvd24pCi0jZGVmaW5lIEFVRlNfQ1RMX0JSSU5GTwkJX0lPVyhBdUN0bFR5cGUsIEF1Q3RsX0JSLCB1bmlvbiBhdWZzX2JyaW5mbykKLSNkZWZpbmUgQVVGU19DVExfRkhTTV9GRAlfSU9XKEF1Q3RsVHlwZSwgQXVDdGxfRkhTTV9GRCwgaW50KQotCi0jZW5kaWYgLyogX19BVUZTX1RZUEVfSF9fICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWxfZ2l0LmJiCmluZGV4IDUwZDhiOTAuLjJlODU1ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWxfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWxfZ2l0LmJiCkBAIC00LDIyICs0LDI0IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODkyZjU2OWE1NTViYTljMDdhNTY4YTdjMGM0ZmE2M2EiCiAKLURFUEVORFMgPSAiYXVmcy11dGlsLW5hdGl2ZSIKK0RFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSBhdWZzLXV0aWwtbmF0aXZlIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgogCi1TUkNSRVYgPSAiYjU5YTIxNjdhMTM1Y2VlYTM3NTgxZWUzMzk5N2RlMjc4Y2Y4YTMwYSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvYXVmcy9hdWZzLXV0aWw7cHJvdG9jb2w9Z2l0O2JyYW5jaD1hdWZzMy4xNCBcCitTUkNSRVYgPSAiODlhZmIxODA2YzNkMmVlZDhkYjI2NjZhZTI1NGI3NzUxOGFlM2NlYiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvYXVmcy9hdWZzLXV0aWw7cHJvdG9jb2w9Z2l0O2JyYW5jaD1hdWZzNC40IFwKKyAgICAgICAgICAgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NmanJvL2F1ZnM0LWxpbnV4L2F1ZnM0LjQvaW5jbHVkZS91YXBpL2xpbnV4L2F1ZnNfdHlwZS5oO25hbWU9YXVmc190eXBlIFwKICAgICAgICAgICAgZmlsZTovL2F1ZnMtdXRpbC1kb24tdC1zdHJpcC1leGVjdXRhYmxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hdWZzLXV0aWwtYWRkLXRvb2wtY29uY2VwdC10by1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1ZnNfdHlwZS5oIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYXUtRGVmaW5lLVNUUklQLXdlYWtseS5wYXRjaCBcCiAiCitTUkNfVVJJW2F1ZnNfdHlwZS5tZDVzdW1dID0gImY3YjRhMjU1ZGNiNTVmZTdiMDk2N2Y1ZjU5YjQ0ZjE5IgorU1JDX1VSSVthdWZzX3R5cGUuc2hhMjU2c3VtXSA9ICI4NWJjOGU0YzFhOTRhN2Q1MjZjMzgyZTRiMDQ3YjQyNTZjYWI4YzRhNjVmYzAzOTYyOTE3MDdhZDlhMzI3YTE4IgogCi1QViA9ICIzLjE0K2dpdCR7U1JDUFZ9IgorUFYgPSAiNC40K2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBleHBvcnQgSE9TVENDID0gIiR7QlVJTERfQ0N9IgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICMgUmVwbGFjZSBzYmluLGJpbiBwYXRocyB3aXRoIGJpdGJha2UgZW52aXJvbm1lbnQKICAgIHNlZCAtaSAtZSAncztpbnN0YWxsX3NiaW46IFRndCA9ICR7REVTVERJUn0vc2JpbjtpbnN0YWxsX3NiaW46IFRndCA9ICR7REVTVERJUn0vJHtiYXNlX3NiaW5kaXJ9OycgXApAQCAtMzAsMTEgKzMyLDEyIEBACiBkb19jb25maWd1cmVfYXBwZW5kICgpIHsKICAgICBpbnN0YWxsIC1kICR7U30vaW5jbHVkZS9saW51eC8KICAgICBjcCAke1dPUktESVJ9L2F1ZnNfdHlwZS5oICR7U30vaW5jbHVkZS9saW51eC8KKyAgICBzZWQgLWkgLWUgJ3M7X191c2VyOzsnICR7U30vaW5jbHVkZS9saW51eC9hdWZzX3R5cGUuaAogfQogCiBkb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CiAgICAgZm9yIGkgaW4gdmVyIGMyc2ggYzJ0bWFjOyBkbwotICAgICAgICBjcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vYXVmcy11dGlsLSR7UFZ9LyRpIC4vCisgICAgICAgIGNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9hdWZzLXV0aWwtJHtQVn0vJGkgJHtCfQogICAgIGRvbmUKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvZG1hcGkvZG1hcGlfMi4yLjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvZG1hcGkvZG1hcGlfMi4yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzJmNzlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2RtYXBpXzIuMi4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmdW5jdGlvbnMgdG8gZ2V0IGF0dHJpYnV0ZSBiaXRzIgotREVTQ1JJUFRJT04gPSAiVGhlIERhdGEgTWFuYWdlbWVudCBBUEkgKERNQVBJL1hEU00pIGFsbG93cyBpbXBsZW1lbnRhdGlvbiBcCi0gICAgICAgICAgICAgICBvZiBoaWVyYXJjaGljYWwgc3RvcmFnZSBtYW5hZ2VtZW50IHNvZnR3YXJlIHdpdGggbm8ga2VybmVsIFwKLSAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMgYXMgd2VsbCBhcyBoaWdoLXBlcmZvcm1hbmNlIGR1bXAgcHJvZ3JhbXMgXAotICAgICAgICAgICAgICAgd2l0aG91dCByZXF1aXJpbmcgInJhdyIgYWNjZXNzIHRvIHRoZSBkaXNrIGFuZCBrbm93bGVkZ2UgXAotICAgICAgICAgICAgICAgb2YgZmlsZXN5c3RlbSBzdHJ1Y3R1cmVzLlRoaXMgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVkIGJ5IFwKLSAgICAgICAgICAgICAgIHRoZSBsaWJkbSBsaWJyYXJ5LiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MTY3OGVkZmU4ZGU5YmU5NTY0ZDIzNzYxYWUyZmE3OTQiCi1ERVBFTkRTID0gInhmc3Byb2dzIgotCi1TUkNfVVJJID0gImZ0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcy9jbWRfdGFycy9kbWFwaS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWluc3RhbGwtYXMtdXNlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kbWFwaV9hYXJjaDY0X2NvbmZpZ3VyZV9zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2Q4MjVkNGUxNDFjMTYwMTEzNjdlMGEwZGQ5OGM5YzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjE4ZTM0ZjQ3Mzc0ZjZhZGY3YzE2NDk5M2MyNmRmMzY5ODZhMDA5Yjg2YWEwMDRlZjk0NDQxMDI2NTNhZWE2OSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotRVhUUkFfT0VNQUtFICs9ICJMSUJUT09MPSIke0hPU1RfU1lTfS1saWJ0b29sIC0tdGFnPUNDIiBWPTEiCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGV4cG9ydCBESVNUX1JPT1Q9JHtEfQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWRldiBQS0dfREVWTElCX0RJUj0ke2xpYmRpcn0KLX0KLQotUE5CTEFDS0xJU1RbZG1hcGldID89ICJEZXBlbmRzIG9uIGJyb2tlbiB4ZnNwcm9ncyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2ZpbGVzL2RtYXBpX2FhcmNoNjRfY29uZmlndXJlX3N1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9kbWFwaS9maWxlcy9kbWFwaV9hYXJjaDY0X2NvbmZpZ3VyZV9zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODc1M2I3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2ZpbGVzL2RtYXBpX2FhcmNoNjRfY29uZmlndXJlX3N1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1BZGQgY29uZmlnIHN1cHBvcnQgdG8gY3Jvc3MgY29tcGlsZSBkbWFwaSBmb3IgCi1hYXJjaDY0IGFyY2hpdGVjdHVyZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotCi0tLS0gZG1hcGktMi4yLjEyX29yZy9jb25maWcuc3ViCTIwMTItMTItMTIgMjM6MDM6MDUuMDAwMDAwMDAwICswNTMwCi0rKysgZG1hcGktMi4yLjEyL2NvbmZpZy5zdWIJMjAxNC0wMy0yNCAxNjo0OTo1Ni43NzE5OTM1MjMgKzA1MzAKLUBAIC0yNDYsNiArMjQ2LDcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAl8IGFscGhhNjQgfCBhbHBoYTY0ZXZbNC04XSB8IGFscGhhNjRldjU2IHwgYWxwaGE2NGV2Nls3OF0gfCBhbHBoYTY0cGNhNVs2N10gXAotIAl8IGFtMzNfMi4wIFwKLSAJfCBhcmMgfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyMzQ1XSB8IGFybXZbMzQ1XVtsYl0gfCBhdnIgfCBhdnIzMiBcCi0rCXwgYWFyY2g2NCB8IGFhcmNoNjRiZSBcCi0gCXwgYmZpbiBcCi0gCXwgYzR4IHwgY2xpcHBlciBcCi0gCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKLUBAIC0zMjYsNiArMzI3LDcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotIAl8IGFscGhhNjQtKiB8IGFscGhhNjRldls0LThdLSogfCBhbHBoYTY0ZXY1Ni0qIHwgYWxwaGE2NGV2Nls3OF0tKiBcCi0gCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiBcCi0gCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCi0rCXwgYWFyY2g2NC0qIHwgYWFyY2g2NGJlLSogXAotIAl8IGF2ci0qIHwgYXZyMzItKiBcCi0gCXwgYmZpbi0qIHwgYnMyMDAwLSogXAotIAl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAotLS0tIGRtYXBpLTIuMi4xMl9vcmcvY29uZmlnLmd1ZXNzCTIwMTItMTItMTIgMjM6MDM6MDUuMDAwMDAwMDAwICswNTMwCi0rKysgZG1hcGktMi4yLjEyL2NvbmZpZy5ndWVzcwkyMDE0LTAzLTI0IDE2OjQ5OjU2Ljc3MTk5MzUyMyArMDUzMAotQEAgLTg2NCw2ICs4NjQsOSBAQCBFT0YKLSAJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKLSAJZmkKLSAJZXhpdCA7OwotKyAgICBhYXJjaDY0KjpMaW51eDoqOiopCi0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwlleGl0OzsKLSAgICAgYXZyMzIqOkxpbnV4Oio6KikKLSAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0gCWV4aXQgOzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2ZpbGVzL3JlbW92ZS1pbnN0YWxsLWFzLXVzZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9kbWFwaS9maWxlcy9yZW1vdmUtaW5zdGFsbC1hcy11c2VyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzYxZGIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2RtYXBpL2ZpbGVzL3JlbW92ZS1pbnN0YWxsLWFzLXVzZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotcmVtb3ZlIGluc3RhbGwgYXMgdXNlcgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGluY2x1ZGUvYnVpbGRtYWNyb3MgfCAgMiArLQotIGluY2x1ZGUvaW5zdGFsbC1zaCAgfCA5NSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgODMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2J1aWxkbWFjcm9zIGIvaW5jbHVkZS9idWlsZG1hY3JvcwotaW5kZXggN2EwMTg4MC4uMDg0MGQ1NSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnVpbGRtYWNyb3MKLSsrKyBiL2luY2x1ZGUvYnVpbGRtYWNyb3MKLUBAIC0zMCw3ICszMCw3IEBAIE9CSkVDVFMgPSAkKEFTRklMRVM6LnM9Lm8pIFwKLSAJICAkKExGSUxFUzoubD0ubykgXAotIAkgICQoWUZJTEVTOiUueT0lLnRhYi5vKQotIAotLUlOU1RBTEwJPSAkKFRPUERJUikvaW5zdGFsbC1zaCAtbyAkKFBLR19VU0VSKSAtZyAkKFBLR19HUk9VUCkKLStJTlNUQUxMCT0gJChUT1BESVIpL2luc3RhbGwtc2gKLSAKLSBJTUFHRVNfRElSID0gJChUT1BESVIpL2FsbC1pbWFnZXMKLSBESVNUX0RJUiA9ICQoVE9QRElSKS9kaXN0Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9pbnN0YWxsLXNoIGIvaW5jbHVkZS9pbnN0YWxsLXNoCi1pbmRleCBjOTUyYTcxLi5iOWQ2NmY3IDEwMDc1NQotLS0tIGEvaW5jbHVkZS9pbnN0YWxsLXNoCi0rKysgYi9pbmNsdWRlL2luc3RhbGwtc2gKLUBAIC0yNCwxMSArMjQsMTEgQEAKLSAjICAgICAgIHNldCAgICAgICAgICAgc2V0ICAgICAgfCAgICB5ZXMgICAgICAgIHllcwotICMKLSBfdXNhZ2UoKSB7Ci0tICAgIGVjaG8gIlVzYWdlOiAkcHJvZyBbLW8gb3duZXJdIFstZyBncm91cF0gWy1tIG1vZGVdIC1kIGRpcmVjdG9yeSIKLS0gICAgZWNobyAib3IgICAgICRwcm9nIFstRF0gWy1vIG93bmVyXSBbLWcgZ3JvdXBdIFstbSBtb2RlXSBmaWxlIGRpcmVjdG9yeS9maWxlIgotLSAgICBlY2hvICJvciAgICAgJHByb2cgWy1vIG93bmVyXSBbLWcgZ3JvdXBdIFstbSBtb2RlXSBmaWxlIFtmaWxlIC4uLl0gZGlyZWN0b3J5IgotKyAgICBlY2hvICJVc2FnZTogJHByb2cgWy1tIG1vZGVdIC1kIGRpcmVjdG9yeSIKLSsgICAgZWNobyAib3IgICAgICRwcm9nIFstbSBtb2RlXSBmaWxlIGRpcmVjdG9yeS9maWxlIgotKyAgICBlY2hvICJvciAgICAgJHByb2cgWy1tIG1vZGVdIGZpbGUgW2ZpbGUgLi4uXSBkaXJlY3RvcnkiCi0gICAgIGVjaG8gIm9yICAgICAkcHJvZyAtUyBmaWxlIHRhcmdldCAgKGNyZWF0ZXMgXCJ0YXJnZXRcIiBzeW1saW5rKSIKLS0gICAgZWNobyAib3IgICAgICRwcm9nIC1UIGx0X2FyZyBbLW8gb3duZXJdIFstZyBncm91cF0gWy1tIG1vZGVdIGxpYnRvb2wubGFpIGRpcmVjdG9yeSIKLSsgICAgZWNobyAib3IgICAgICRwcm9nIC1UIGx0X2FyZyBbLW0gbW9kZV0gbGlidG9vbC5sYWkgZGlyZWN0b3J5IgotICAgICBlY2hvICIiCi0gICAgIGVjaG8gIlRoZSBcJERJU1RfTUFOSUZFU1QgYW5kIFwkRElTVF9ST09UIGVudmlyb25tZW50IHZhcmlhYmxlcyBhZmZlY3QgdGhlIgotICAgICBlY2hvICJiZWhhdmlvdXIgb2YgdGhpcyBjb21tYW5kIC0gc2VlIGNvbW1lbnRzIGluIHRoZSBzY3JpcHQuIgotQEAgLTM4LDMyICszOCw2IEBAIF91c2FnZSgpIHsKLSAgICAgZXhpdCAxCi0gfQotIAotLV9jaG93biAoKQotLXsKLS0gICAgX3N0PTI1NQotLSAgICBpZiBbICQjIC1lcSAzIF0gOyB0aGVuCi0tCWNob3duICQxOiQyICQzCi0tCV9zdD0kPwotLQlpZiBbICRfc3QgLW5lIDAgXSA7IHRoZW4KLS0JICAgIGlmIFsgJFJFQUxfVUlEICE9ICcwJyBdIDsgdGhlbgotLQkJaWYgWyAhIC1mICRESVNUX1JPT1QvLmNob3duLnF1aWV0IF0gOyB0aGVuCi0tCQkgICAgZWNobyAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nCi0tCQkgICAgZWNobyBPd25lcnNoaXAgb2YgZmlsZXMgdW5kZXIgJHtESVNUX1JPT1Q6LS99Ci0tCQkgICAgZWNobyBjYW5ub3QgYmUgY2hhbmdlZAotLQkJICAgIGVjaG8gJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JwotLQkJICAgIGlmIFsgLW4gIiRESVNUX1JPT1QiIF0gOyB0aGVuCi0tCQkJdG91Y2ggJERJU1RfUk9PVC8uY2hvd24ucXVpZXQKLS0JCSAgICBmaQotLQkJZmkKLS0JICAgICAgIF9zdD0wCi0tCSAgICBmaSAgICAgCi0tCWZpCi0tICAgIGZpCi0tCi0tICAgIHJldHVybiAkX3N0Ci0tfQotLQotLQotIF9tYW5pZmVzdCAoKQotIHsgCi0gICAgIGVjaG8gJCogfCBzZWQgLWUgJ3MvXC9cLy9cLy9nJyA+PiR7RElTVF9NQU5JRkVTVDotL2Rldi9udWxsfQotQEAgLTc3LDkgKzUxLDYgQEAgU2ZsYWc9ZmFsc2UKLSBUZmxhZz1mYWxzZQotIERJUk1PREU9NzU1Ci0gRklMRU1PREU9NjQ0Ci0tT1dORVI9YGlkIC11YAotLUdST1VQPWBpZCAtZ2AKLS1SRUFMX1VJRD0kT1dORVIKLSAKLSAjIGRlZmF1bHQgaXMgdG8gaW5zdGFsbCBhbmQgZG9uJ3QgYXBwZW5kIG1hbmlmZXN0Ci0gSU5TVEFMTD10cnVlCi1AQCAtOTQsMjQgKzY1LDE2IEBAIE1BTklGRVNUPToKLSAKLSBpZiAkSU5TVEFMTAotIHRoZW4KLS0gICAgQ1A9Y3A7IExOPWxuOyBNS0RJUj1ta2RpcjsgQ0hNT0Q9Y2htb2Q7IENIT1dOPV9jaG93bgotKyAgICBDUD1jcDsgTE49bG47IE1LRElSPW1rZGlyOyBDSE1PRD1jaG1vZDsKLSBlbHNlCi0tICAgIENQPXRydWU7IExOPXRydWU7IE1LRElSPXRydWU7IENITU9EPXRydWU7IENIT1dOPXRydWUKLSsgICAgQ1A9dHJ1ZTsgTE49dHJ1ZTsgTUtESVI9dHJ1ZTsgQ0hNT0Q9dHJ1ZTsKLSBmaQotIAotLVsgLW4gIiRESVNUX1JPT1QiIC1hICRSRUFMX1VJRCAtbmUgMCBdICYmIENIT1dOPXRydWUKLS0KLS13aGlsZSBnZXRvcHRzICJEY206ZDpTOm86ZzpUOiIgYyAkKgotK3doaWxlIGdldG9wdHMgIkRjbTpkOlM6VDoiIGMgJCoKLSBkbwotICAgIGNhc2UgJGMgaW4KLSAgICBjKQotIAk7OwotLSAgIGcpCi0tCUdST1VQPSRPUFRBUkcKLS0JOzsKLS0gICBvKQotLQlPV05FUj0kT1BUQVJHCi0tCTs7Ci0gICAgbSkKLSAJRElSTU9ERT1gZXhwciAkT1BUQVJHYAotIAlGSUxFTU9ERT0kRElSTU9ERQotQEAgLTE0NiwxOCArMTA5LDcgQEAgdGhlbgotICAgICAjIGZpcnN0IHVzYWdlCi0gICAgICMKLSAgICAgJE1LRElSIC1wICRkaXIgCi0tICAgIHN0YXR1cz0kPwotLSAgICBpZiBbICRzdGF0dXMgLWVxIDAgXQotLSAgICB0aGVuCi0tCSRDSE1PRCAkRElSTU9ERSAkZGlyCi0tCXN0YXR1cz0kPwotLSAgICBmaQotLSAgICBpZiBbICRzdGF0dXMgLWVxIDAgXQotLSAgICB0aGVuCi0tCSRDSE9XTiAkT1dORVIgJEdST1VQICRkaXIKLS0Jc3RhdHVzPSQ/Ci0tICAgIGZpCi0tICAgICRNQU5JRkVTVCBkICRESVJNT0RFICRPV05FUiAkR1JPVVAgJHtkaXIjJERJU1RfUk9PVH0KLSsgICAgJE1BTklGRVNUIGQgJERJUk1PREUgJHtkaXIjJERJU1RfUk9PVH0KLSBlbGlmICRTZmxhZwotIHRoZW4KLSAgICAgIwotQEAgLTIwMyw3ICsxNTUsNyBAQCB0aGVuCi0gCQkJaW5zdGFsbF9uYW1lPSR0YXJnZXQvJHNvbGliCi0gCQkJJENQICRzb2xpYiAkaW5zdGFsbF9uYW1lCi0gCQkJc3RhdHVzPSQ/Ci0tCQkJJE1BTklGRVNUIGYgJEZJTEVNT0RFICRPV05FUiAkR1JPVVAgJEhFUkUvJHNvbGliICR7aW5zdGFsbF9uYW1lIyRESVNUX1JPT1R9Ci0rCQkJJE1BTklGRVNUIGYgJEZJTEVNT0RFICRIRVJFLyRzb2xpYiAke2luc3RhbGxfbmFtZSMkRElTVF9ST09UfQotIAkJCWJyZWFrCi0gCQlmaQotIAlkb25lCi1AQCAtMjU0LDcgKzIwNiw3IEBAIHRoZW4KLSAJaW5zdGFsbF9uYW1lPSR0YXJnZXQvJG9sZF9saWJyYXJ5Ci0gCSRDUCAkb2xkX2xpYnJhcnkgJGluc3RhbGxfbmFtZQotIAlzdGF0dXM9JD8KLS0JJE1BTklGRVNUIGYgJEZJTEVNT0RFICRPV05FUiAkR1JPVVAgJEhFUkUvJG9sZF9saWJyYXJ5ICR7aW5zdGFsbF9uYW1lIyRESVNUX1JPT1R9Ci0rCSRNQU5JRkVTVCBmICRGSUxFTU9ERSAkSEVSRS8kb2xkX2xpYnJhcnkgJHtpbnN0YWxsX25hbWUjJERJU1RfUk9PVH0KLSAJOzsKLSAgICAgKikKLSAJZWNobyAiJHByb2c6IC1UICRsdF9pbnN0YWxsIGludmFsaWQiCi1AQCAtMjY3LDcgKzIxOSw2IEBAIHRoZW4KLSAJaWYgWyAkc3RhdHVzIC1lcSAwIF0KLSAJdGhlbgotIAkJJENITU9EICRGSUxFTU9ERSAkaW5zdGFsbF9uYW1lCi0tCQkkQ0hPV04gJE9XTkVSICRHUk9VUCAkaW5zdGFsbF9uYW1lCi0gCWZpCi0gCTs7Ci0gICAgIGVzYWMKLUBAIC0yOTIsMjMgKzI0MywxMCBAQCBlbHNlCi0gCXRoZW4gCi0gCSAgICBpZiBbIC1mICRkaXIvJGYgXQotIAkgICAgdGhlbgotLQkJJENITU9EICRGSUxFTU9ERSAkZGlyLyRmCi0tCQlzdGF0dXM9JD8KLS0JCWlmIFsgJHN0YXR1cyAtZXEgMCBdCi0tCQl0aGVuCi0tCQkgICAgJENIT1dOICRPV05FUiAkR1JPVVAgJGRpci8kZgotLQkJICAgIHN0YXR1cz0kPwotLQkJZmkKLS0JCSRNQU5JRkVTVCBmICRGSUxFTU9ERSAkT1dORVIgJEdST1VQICRIRVJFLyRmICR7ZGlyIyRESVNUX1JPT1R9LyRmCi0rCQkkTUFOSUZFU1QgZiAkRklMRU1PREUgJEhFUkUvJGYgJHtkaXIjJERJU1RfUk9PVH0vJGYKLSAJICAgIGVsc2UKLSAJCSRDSE1PRCAkRklMRU1PREUgJGRpcgotLQkJc3RhdHVzPSQ/Ci0tCQlpZiBbICRzdGF0dXMgLWVxIDAgXQotLQkJdGhlbgotLQkJICAgICRDSE9XTiAkT1dORVIgJEdST1VQICRkaXIKLS0JCSAgICBzdGF0dXM9JD8KLS0JCWZpCi0tCQkkTUFOSUZFU1QgZiAkRklMRU1PREUgJE9XTkVSICRHUk9VUCAkSEVSRS8kZGlyICR7ZGlyIyRESVNUX1JPT1R9Ci0rCQkkTUFOSUZFU1QgZiAkRklMRU1PREUgJEhFUkUvJGRpciAke2RpciMkRElTVF9ST09UfQotIAkgICAgZmkKLSAJZmkKLSAgICAgZWxzZQotQEAgLTMzNCwxNCArMjcyLDcgQEAgZWxzZQotIAkgICAgc3RhdHVzPSQ/Ci0gCSAgICBpZiBbICRzdGF0dXMgLWVxIDAgXQotIAkgICAgdGhlbgotLQkJJENITU9EICRGSUxFTU9ERSAkZGlyLyRmCi0tCQlzdGF0dXM9JD8KLS0JCWlmIFsgJHN0YXR1cyAtZXEgMCBdCi0tCQl0aGVuCi0tCQkgICAgJENIT1dOICRPV05FUiAkR1JPVVAgJGRpci8kZgotLQkJICAgIHN0YXR1cz0kPwotLQkJZmkKLS0JCSRNQU5JRkVTVCBmICRGSUxFTU9ERSAkT1dORVIgJEdST1VQICRIRVJFLyRmICR7ZGlyIyRESVNUX1JPT1R9LyRmCi0rCQkkTUFOSUZFU1QgZiAkRklMRU1PREUgJEhFUkUvJGYgJHtkaXIjJERJU1RfUk9PVH0vJGYKLSAJICAgIGZpCi0gCSAgICBbICRzdGF0dXMgLW5lIDAgXSAmJiBicmVhawotIAlkb25lCi0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvdWRldmlsL2ZpbGVzLzAwMDEtdWRldmlsLTAuNC4zLWZpeC1jb21waWxlLXdpdGgtZ2NjNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3VkZXZpbC9maWxlcy8wMDAxLXVkZXZpbC0wLjQuMy1maXgtY29tcGlsZS13aXRoLWdjYzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU1ZTkzYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3VkZXZpbC9maWxlcy8wMDAxLXVkZXZpbC0wLjQuMy1maXgtY29tcGlsZS13aXRoLWdjYzYucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorRml4IGNvbXBpbGF0aW9uIHdpdGggR0NDNgorCistLS0gYS9zcmMvZGV2aWNlLWluZm8uYwkyMDEzLTEyLTA5IDE0OjU5OjI3LjAwMDAwMDAwMCArMDEwMAorKysrIGIvc3JjL2RldmljZS1pbmZvLmMJMjAxNy0wMy0xMyAwNzowNjoyNS41MDY2NjY2ODAgKzAxMDAKK0BAIC0zLDYgKzMsNyBAQAorICAqIGNvbnRhaW5zIGNvZGUgZXhjZXJwdHMgZnJvbSB1ZGlza3MgdjEuMC40CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKyAKKysjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSAiZGV2aWNlLWluZm8uaCIKKyAKKyBzdGF0aWMgY2hhciAqCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy91ZGV2aWwvZmlsZXMvMDAwMi1ldGMtTWFrZWZpbGUuYW0tVXNlLXN5c3RlbWRfdW5pdGRpci1pbnN0ZWFkLW9mLWxpYmRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvdWRldmlsL2ZpbGVzLzAwMDItZXRjLU1ha2VmaWxlLmFtLVVzZS1zeXN0ZW1kX3VuaXRkaXItaW5zdGVhZC1vZi1saWJkaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDE0YTBmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvdWRldmlsL2ZpbGVzLzAwMDItZXRjLU1ha2VmaWxlLmFtLVVzZS1zeXN0ZW1kX3VuaXRkaXItaW5zdGVhZC1vZi1saWJkaS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDgwYjA4NzE5MzY5ODYzMmU1MjViOTBkNDViNGE0OWU2MWUzNDNlMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLcnp5c3p0b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+CitEYXRlOiBUaHUsIDEzIEp1bCAyMDE3IDIxOjMwOjM1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGV0YzogTWFrZWZpbGUuYW06IFVzZSBzeXN0ZW1kX3VuaXRkaXIgaW5zdGVhZCBvZiBsaWJkaXIKKworUHJvcGVyIGRpcmVjdG9yeSBmb3IgaW5zdGFsbGluZyBzeXN0ZW1kIHNlcnZpY2VzIGlzIHN5c3RlbWRfdW5pdGRpciwgbm90CitsaWJkaXIuCisKK1NpZ25lZC1vZmYtYnk6IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KKy0tLQorIGV0Yy9NYWtlZmlsZS5hbSB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V0Yy9NYWtlZmlsZS5hbSBiL2V0Yy9NYWtlZmlsZS5hbQoraW5kZXggOWI2ZTc1MjJjMjBmLi42ZDY2MzI0MWE3MmYgMTAwNjQ0CistLS0gYS9ldGMvTWFrZWZpbGUuYW0KKysrKyBiL2V0Yy9NYWtlZmlsZS5hbQorQEAgLTE2LDggKzE2LDggQEAgaWYgQUREX1NZU1RFTUQKKyAJdGVzdCAtZiAkKERFU1RESVIpLyQoc3lzY29uZmRpcikvY29uZi5kL2Rldm1vbiB8fCAkKElOU1RBTExfREFUQSkgXAorIAkJCQkkKHNyY2Rpcikvc3lzdGVtZC9kZXZtb24gXAorIAkJCQkkKERFU1RESVIpLyQoc3lzY29uZmRpcikvY29uZi5kL2Rldm1vbgorLQl0ZXN0IC1kICQoREVTVERJUikvJChsaWJkaXIpL3N5c3RlbWQvc3lzdGVtIHx8IFwKKy0JCQkJbWtkaXIgLXAgLS0gJChERVNURElSKS8kKGxpYmRpcikvc3lzdGVtZC9zeXN0ZW0KKysJdGVzdCAtZCAkKERFU1RESVIpLyQoc3lzdGVtZF91bml0ZGlyKS9zeXN0ZW0gfHwgXAorKwkJCQlta2RpciAtcCAtLSAkKERFU1RESVIpLyQoc3lzdGVtZF91bml0ZGlyKS9zeXN0ZW0KKyAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9zeXN0ZW1kL2Rldm1vbkAuc2VydmljZSBcCistCQkJCSQoREVTVERJUikvJChsaWJkaXIpL3N5c3RlbWQvc3lzdGVtL2Rldm1vbkAuc2VydmljZQorKwkJCQkkKERFU1RESVIpLyQoc3lzdGVtZF91bml0ZGlyKS9zeXN0ZW0vZGV2bW9uQC5zZXJ2aWNlCisgZW5kaWYKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3VkZXZpbC91ZGV2aWxfMC40LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy91ZGV2aWwvdWRldmlsXzAuNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjg0ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy91ZGV2aWwvdWRldmlsXzAuNC40LmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiQSBjb21tYW5kIGxpbmUgTGludXggcHJvZ3JhbSB3aGljaCBtb3VudHMgYW5kIHVubW91bnRzIHJlbW92YWJsZSBkZXZpY2VzIgorSE9NRVBBR0UgPSAiaHR0cDovL2lnbm9yYW50Z3VydS5naXRodWIuaW8vdWRldmlsLyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBcCisgICAgZ2xpYi0yLjAtbmF0aXZlIFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgXAorICAgIHVkZXYgXAorIgorUkRFUEVORFNfJHtQTn0gPSAidWRldiBiYXNoIgorCitMSUNFTlNFID0gIkdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9JZ25vcmFudEd1cnUvdWRldmlsL3Jhdy9wa2cvJHtQVn0vdWRldmlsLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtdWRldmlsLTAuNC4zLWZpeC1jb21waWxlLXdpdGgtZ2NjNi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItZXRjLU1ha2VmaWxlLmFtLVVzZS1zeXN0ZW1kX3VuaXRkaXItaW5zdGVhZC1vZi1saWJkaS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYzFjNDg5YjYwM2EwNTAwYTA0ZGM3ZTE4MDVhYzFkOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZThjNTFmZDRkNTg5Y2RhN2JlNTZlNzViNDIxODhkZWViMjU4YzY2ZmM5MTFhOWIzYTcwYTM5NDVjMTU3NzM5IgorCitQQUNLQUdFQ09ORklHID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZCcsJycsZCl9IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkZXZtb25ALnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1PX0VYQ0wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1PX0VYQ0wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYwNDY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtZm9yLU9fRVhDTC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDhjZjQ4ZGE1ZjY0NWRkN2JiYjFjY2JlYWI1YmIwOTY0ZjQwZjE3ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAyMzoxODo0NyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvNV0gSW5jbHVkZSBmY250bC5oIGZvciBPX0VYQ0wKKworRml4CitlcnJvcjogJ09fQ1JFQVQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW52dXRpbC9pbnZpZHguYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvaW52dXRpbC9pbnZpZHguYyBiL2ludnV0aWwvaW52aWR4LmMKK2luZGV4IDY3ZWZkZjcuLjMyNWE5YTEgMTAwNjQ0CistLS0gYS9pbnZ1dGlsL2ludmlkeC5jCisrKysgYi9pbnZ1dGlsL2ludmlkeC5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8dXVpZC91dWlkLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgCisgI2luY2x1ZGUgInR5cGVzLmgiCisgI2luY2x1ZGUgIm1sb2cuaCIKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMS14ZnNkdW1wLVVzZS1jOTktZGVmaW5lZC1pbnQ2NF90LWluc3RlYWQtb2YtX19pbnQ2NF90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAxLXhmc2R1bXAtVXNlLWM5OS1kZWZpbmVkLWludDY0X3QtaW5zdGVhZC1vZi1fX2ludDY0X3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlMWJkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMS14ZnNkdW1wLVVzZS1jOTktZGVmaW5lZC1pbnQ2NF90LWluc3RlYWQtb2YtX19pbnQ2NF90LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZjFlODIyZDU0NmUwOGNjMTk1ZWFlYjM4Y2ExNzJiZDBjMzgwMGFhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDkgU2VwIDIwMTcgMDc6NDg6NDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0geGZzZHVtcDogVXNlIGM5OSBkZWZpbmVkIGludDY0X3QgaW5zdGVhZCBvZiBfX2ludDY0X3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIGNvbW1vbi9oc21hcGkuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbW1vbi9oc21hcGkuYyBiL2NvbW1vbi9oc21hcGkuYworaW5kZXggNjA1NDc3My4uMDcwOWRiZSAxMDA2NDQKKy0tLSBhL2NvbW1vbi9oc21hcGkuYworKysrIGIvY29tbW9uL2hzbWFwaS5jCitAQCAtNTg1LDcgKzU4NSw3IEBAIEhzbU1vZGlmeUV4dGVudE1hcCgKKyAJc3RydWN0IGdldGJtYXB4CSpibWFwKQorIHsKKyAJZG1mX2ZfY3R4dF90CSpkbWZfZl9jdHh0cCA9IChkbWZfZl9jdHh0X3QgKiljb250ZXh0cDsKKy0JX19pbnQ2NF90CWxlbmd0aDsKKysJaW50NjRfdAkJbGVuZ3RoOworIAorIAlpZiAoYm1hcFswXS5ibXZfZW50cmllcyA8PSAwKSB7CisgCQlyZXR1cm4gMTsJLyogY2FsbGVyIG11c3QgYWxyZWFkeSBiZSBhdCBFT0YgKi8KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMi1SZXBsYWNlLV9fdWludDMyX3Qtd2l0aC11aW50MzJfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMi1SZXBsYWNlLV9fdWludDMyX3Qtd2l0aC11aW50MzJfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDNlMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAyLVJlcGxhY2UtX191aW50MzJfdC13aXRoLXVpbnQzMl90LnBhdGNoCkBAIC0wLDAgKzEsMTIyIEBACitGcm9tIGY3NmQyMTQyOTA1ZjBlNWJkODMwZDVkNTc2YzIzNWFmMTE3MWM2YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAyMzoyMzozMSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNV0gUmVwbGFjZSBfX3VpbnQzMl90IHdpdGggdWludDMyX3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbW1vbi9jb250ZW50X2lub2RlLmggfCA0ICsrLS0KKyBkb2MveGZzZHVtcC5odG1sICAgICAgIHwgOCArKysrLS0tLQorIGludmVudG9yeS9pbnZfb3JlZi5oICAgfCAyICstCisgaW52ZW50b3J5L2ludl9wcml2LmggICB8IDQgKystLQorIGludmVudG9yeS9pbnZlbnRvcnkuaCAgfCAyICstCisgNSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbW1vbi9jb250ZW50X2lub2RlLmggYi9jb21tb24vY29udGVudF9pbm9kZS5oCitpbmRleCBhNjlhOWEwLi42OTM2ZTA1IDEwMDY0NAorLS0tIGEvY29tbW9uL2NvbnRlbnRfaW5vZGUuaAorKysrIGIvY29tbW9uL2NvbnRlbnRfaW5vZGUuaAorQEAgLTE5MSwxMCArMTkxLDEwIEBAIHR5cGVkZWYgc3RydWN0IGJzdGF0IGJzdGF0X3Q7CisgICogYW5kIHVzaW5nIHR3byAxNmJpdCB2YWx1ZXMgdG8gaG9sZCBuZXcgMzJiaXQgcHJvamlkIHdhcyBjaG9vc2VuCisgICogdG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCAib2xkIiBmaWxlc3lzdGVtcykuCisgICovCistc3RhdGljIGlubGluZSBfX3VpbnQzMl90Cisrc3RhdGljIGlubGluZSB1aW50MzJfdAorIGJzdGF0X3Byb2ppZChzdHJ1Y3QgYnN0YXQgKmJzKQorIHsKKy0gICAgICAgIHJldHVybiAoX191aW50MzJfdClicy0+YnNfcHJvamlkX2hpIDw8IDE2IHwgYnMtPmJzX3Byb2ppZF9sbzsKKysgICAgICAgIHJldHVybiAodWludDMyX3QpYnMtPmJzX3Byb2ppZF9oaSA8PCAxNiB8IGJzLT5ic19wcm9qaWRfbG87CisgfQorIAorIAorZGlmZiAtLWdpdCBhL2RvYy94ZnNkdW1wLmh0bWwgYi9kb2MveGZzZHVtcC5odG1sCitpbmRleCA5YzY3MjJlLi5mODUxMjhmIDEwMDY0NAorLS0tIGEvZG9jL3hmc2R1bXAuaHRtbAorKysrIGIvZG9jL3hmc2R1bXAuaHRtbAorQEAgLTE5MzUsNyArMTkzNSw3IEBAIFRoZSBmaWxlcyBhcmUgY29uc3RydWN0ZWQgbGlrZSBzbzoKKyA8cHJlPgorIHR5cGVkZWYgc3RydWN0IGludnRfY291bnRlciB7CisgICAgIElOVlRfQ09VTlRFUl9GSUVMRFMKKy0gICAgICAgIF9fdWludDMyX3QgICAgaWNfdmVybnVtOy8qIG9uIGRpc2sgdmVyc2lvbiBudW1iZXIgZm9yIHBvc3Rlcml0eSAqL1wKKysgICAgICAgIHVpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCisgICAgICAgICB1X2ludCAgICAgICAgIGljX2N1cm51bTsvKiBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52aW5kaWNlcyByZWNvcmRlZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbyBmYXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICB1X2ludCAgICAgICAgIGljX21heG51bTsvKiBtYXhpbXVtIG51bWJlciBvZiBzZXNzaW9ucy9pbnZfaW5kaWNlcyBcCitAQCAtMTk3NSw3ICsxOTc1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgaW52dF9mc3RhYiB7CisgPHByZT4KKyB0eXBlZGVmIHN0cnVjdCBpbnZ0X2NvdW50ZXIgeworICAgICBJTlZUX0NPVU5URVJfRklFTERTCistICAgICAgICBfX3VpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCisrICAgICAgICB1aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAorICAgICAgICAgdV9pbnQgICAgICAgICBpY19jdXJudW07LyogbnVtYmVyIG9mIHNlc3Npb25zL2ludmluZGljZXMgcmVjb3JkZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28gZmFyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgdV9pbnQgICAgICAgICBpY19tYXhudW07LyogbWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52X2luZGljZXMgXAorQEAgLTIwMTIsNyArMjAxMiw3IEBAIHR5cGVkZWYgc3RydWN0IGludnRfZW50cnkgeworIDxwcmU+CisgdHlwZWRlZiBzdHJ1Y3QgaW52dF9zZXNjb3VudGVyIHsKKyAgICAgSU5WVF9DT1VOVEVSX0ZJRUxEUworLSAgICAgICAgX191aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAorKyAgICAgICAgdWludDMyX3QgICAgaWNfdmVybnVtOy8qIG9uIGRpc2sgdmVyc2lvbiBudW1iZXIgZm9yIHBvc3Rlcml0eSAqL1wKKyAgICAgICAgIHVfaW50ICAgICAgICAgaWNfY3VybnVtOy8qIG51bWJlciBvZiBzZXNzaW9ucy9pbnZpbmRpY2VzIHJlY29yZGVkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIGZhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIHVfaW50ICAgICAgICAgaWNfbWF4bnVtOy8qIG1heGltdW0gbnVtYmVyIG9mIHNlc3Npb25zL2ludl9pbmRpY2VzIFwKK0BAIC0yMDM0LDcgKzIwMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBpbnZ0X3Nlc2hkciB7CisgICAgIG9mZjY0X3QgICAgc2hfc3RyZWFtc19vZmY7IC8qIG9mZnNldCB0byBzdGFydCBvZiB0aGUgc2V0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSBoZHJzICovCisgICAgIHRpbWVfdCAgICAgc2hfdGltZTsgICAgICAgIC8qIHRpbWUgb2YgdGhlIGR1bXAgKi8KKy0gICAgX191aW50MzJfdCBzaF9mbGFnOyAgICAgICAgLyogZm9yIG1pc2MgZmxhZ3MgKi8KKysgICAgdWludDMyX3Qgc2hfZmxhZzsgICAgICAgIC8qIGZvciBtaXNjIGZsYWdzICovCisgICAgIHVfY2hhciAgICAgc2hfbGV2ZWw7ICAgICAgIC8qIGR1bXAgbGV2ZWwgKi8KKyAgICAgdV9jaGFyICAgICBzaF9wcnVuZWQ7ICAgICAgLyogcHJ1bmVkIGJ5IGludnV0aWwgZmxhZyAqLworICAgICBjaGFyICAgICAgIHNoX3BhZGRpbmdbMjJdOworZGlmZiAtLWdpdCBhL2ludmVudG9yeS9pbnZfb3JlZi5oIGIvaW52ZW50b3J5L2ludl9vcmVmLmgKK2luZGV4IGUxNjY4NGQuLjM4MzAzYTQgMTAwNjQ0CistLS0gYS9pbnZlbnRvcnkvaW52X29yZWYuaAorKysrIGIvaW52ZW50b3J5L2ludl9vcmVmLmgKK0BAIC00Niw3ICs0Niw3IEBACisgCisgCisgCistdHlwZWRlZiBfX3VpbnQzMl90CWludnRfb2JqdHlwZV90OworK3R5cGVkZWYgdWludDMyX3QJaW52dF9vYmp0eXBlX3Q7CisgCisgI2RlZmluZSBJTlZUX0xPQ0tFRAkJMHgwMDAxCisgCitkaWZmIC0tZ2l0IGEvaW52ZW50b3J5L2ludl9wcml2LmggYi9pbnZlbnRvcnkvaW52X3ByaXYuaAoraW5kZXggMTY5MDI3MS4uMzY0ZmZiYyAxMDA2NDQKKy0tLSBhL2ludmVudG9yeS9pbnZfcHJpdi5oCisrKysgYi9pbnZlbnRvcnkvaW52X3ByaXYuaAorQEAgLTEyMCw3ICsxMjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBpbnZ0X3Nlc2hkciB7CisgCW9mZjY0X3QJCXNoX3N0cmVhbXNfb2ZmOyAvKiBvZmZzZXQgdG8gc3RhcnQgb2YgdGhlIHNldCBvZiAKKyAJCQkJCSAgIHN0cmVhbSBoZHJzICovCisgCXRpbWUzMl90CXNoX3RpbWU7ICAgICAgICAvKiB0aW1lIG9mIHRoZSBkdW1wICovCistCV9fdWludDMyX3QJc2hfZmxhZzsgICAgICAgIC8qIGZvciBtaXNjIGZsYWdzICovCisrCXVpbnQzMl90CXNoX2ZsYWc7ICAgICAgICAvKiBmb3IgbWlzYyBmbGFncyAqLworIAl1X2NoYXIJCXNoX2xldmVsOyAgICAgICAvKiBkdW1wIGxldmVsICovCisgCXVfY2hhcgkJc2hfcHJ1bmVkOyAgICAgIC8qIHBydW5lZCBieSBpbnZ1dGlsIGZsYWcgKi8KKyAJY2hhcgkJc2hfcGFkZGluZ1syMl07CitAQCAtMTg0LDcgKzE4NCw3IEBAIHR5cGVkZWYgc3RydWN0IGludnRfZW50cnkgeworIAorIC8qIENoZWFwIEluaGVyaXRhbmNlLCBhbmQgYW4gYXR0ZW1wdCB0byBhdm9pZCBhIG5lc3RlZCB0eXBlICovCisgI2RlZmluZSBJTlZUX0NPVU5URVJfRklFTERTICBcCistICAgICAgICBfX3VpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCisrICAgICAgICB1aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAorIAl1aW50CSAgICAgIGljX2N1cm51bTsvKiBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52aW5kaWNlcyByZWNvcmRlZCBcCisgCQkJCSAgIHNvIGZhciAqLwkJCQkgIFwKKyAJdWludAkgICAgICBpY19tYXhudW07LyogbWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52X2luZGljZXMgXAorZGlmZiAtLWdpdCBhL2ludmVudG9yeS9pbnZlbnRvcnkuaCBiL2ludmVudG9yeS9pbnZlbnRvcnkuaAoraW5kZXggMTM0YjliYS4uYzFkNzQwMyAxMDA2NDQKKy0tLSBhL2ludmVudG9yeS9pbnZlbnRvcnkuaAorKysrIGIvaW52ZW50b3J5L2ludmVudG9yeS5oCitAQCAtNDMsNyArNDMsNyBAQAorIC8qIGxlbmd0aCBvZiBsYWJlbHMsIG1udHB0cywgZXRjICovCisgI2RlZmluZSBJTlZfU1RSTEVOICAgICAgICAgICAgICBHTE9CQUxfSERSX1NUUklOR19TWgorIAorLXR5cGVkZWYgX191aW50MzJfdAkJaW52X3ZlcnNpb25fdDsKKyt0eXBlZGVmIHVpbnQzMl90CQlpbnZfdmVyc2lvbl90OworIAorIC8qIFRoaXMgaXMgdGhlIGdlbmVyYWwgaW52ZW50b3J5IHZlcnNpb24uIAorICAqLworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAzLXJlcGxhY2UtdXNlLW9mLVNJR0NMRC13aXRoLVNJR0NITEQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDMtcmVwbGFjZS11c2Utb2YtU0lHQ0xELXdpdGgtU0lHQ0hMRC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTMwM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAzLXJlcGxhY2UtdXNlLW9mLVNJR0NMRC13aXRoLVNJR0NITEQucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBmY2MwY2YxNWEzMDk5NDcxMDNhMDY5NWI4YTFmNDg2NWI4MjBlYjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MjY6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIHJlcGxhY2UgdXNlIG9mIFNJR0NMRCB3aXRoIFNJR0NITEQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbW1vbi9tYWluLmMgICAgfCAyICstCisgZG9jL3hmc2R1bXAuaHRtbCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbW1vbi9tYWluLmMgYi9jb21tb24vbWFpbi5jCitpbmRleCAzODQ4NDk5Li5mYWE2NmVlIDEwMDY0NAorLS0tIGEvY29tbW9uL21haW4uYworKysrIGIvY29tbW9uL21haW4uYworQEAgLTIyMjUsNyArMjIyNSw3IEBAIHN0YXRpYyBzaWdfcHJpbnRtYXBfdCBzaWdfcHJpbnRtYXBbIF0gPSB7CisgCXtTSUdURVJNLAkiU0lHVEVSTSJ9LAorIAl7U0lHVVNSMSwJIlNJR1VTUjEifSwKKyAJe1NJR1VTUjIsCSJTSUdVU1IyIn0sCistCXtTSUdDTEQsCSJTSUdDTEQifSwKKysJe1NJR0NITEQsCSJTSUdDSExEIn0sCisgCXtTSUdQV1IsCSJTSUdQV1IifSwKKyAJe1NJR1VSRywJIlNJR1VSRyJ9LAorIAl7U0lHUE9MTCwJIlNJR1BPTEwifSwKK2RpZmYgLS1naXQgYS9kb2MveGZzZHVtcC5odG1sIGIvZG9jL3hmc2R1bXAuaHRtbAoraW5kZXggZjg1MTI4Zi4uZDk2ZjAzNyAxMDA2NDQKKy0tLSBhL2RvYy94ZnNkdW1wLmh0bWwKKysrKyBiL2RvYy94ZnNkdW1wLmh0bWwKK0BAIC0zMzQsNyArMzM0LDcgQEAgdGhlIHJpbmcgYnVmZmVyLiBJdCBpZ25vcmVzIHNpZ25hbHMgYW5kIGRvZXMgbm90IHRlcm1pbmF0ZSB1bnRpbCBpdAorIHJlY2VpdmVzIGEgUklOR19PUF9ESUUgbWVzc2FnZS4gSXQgdGhlbiBleGl0cyAwLgorIDxwPgorIFRoZSBtYWluIHByb2Nlc3Mgc2xlZXBzIHdhaXRpbmcgZm9yIGFueSBvZiBpdHMgY2hpbGRyZW4gdG8gZGllCistKGllLiB3YWl0aW5nIGZvciBhIFNJR0NMRCkuIEFsbCBjaGlsZHJlbiB0aGF0IGl0IGNhcmVzIGFib3V0IChzdHJlYW0KKysoaWUuIHdhaXRpbmcgZm9yIGEgU0lHQ0hMRCkuIEFsbCBjaGlsZHJlbiB0aGF0IGl0IGNhcmVzIGFib3V0IChzdHJlYW0KKyBtYW5hZ2VycyBhbmQgcmluZyBidWZmZXIgc2xhdmVzKSBhcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBjaGlsZAorIG1hbmFnZXIgYWJzdHJhY3Rpb24uIFdoZW4gYSBjaGlsZCBkaWVzIHdhaXQgc3RhdHVzIGFuZCBvdGhlciBpbmZvIGlzCisgc3RvcmVkIHdpdGggaXRzIGVudHJ5IGluIHRoZSBjaGlsZCBtYW5hZ2VyLiBtYWluKCkgaWdub3JlcyB0aGUgZGVhdGhzCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDQtaW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwNC1pbmNsdWRlLWxpbWl0LmgtZm9yLVBBVEhfTUFYLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZWExNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDQtaW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDk4YzdkOTZmMGYyYzZlZGRmNjBhYTRhMWEwOGQ3ZDQ0Njc2NDU5MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAyMzoyODoxMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNV0gaW5jbHVkZSBsaW1pdC5oIGZvciBQQVRIX01BWAorCitmaXhlZAordmFyLmM6NDI6MTI6IGVycm9yOiAnUEFUSF9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdSQU5EX01BWCc/CisgIGNoYXIgcGF0aFtQQVRIX01BWF07YAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZHVtcC92YXIuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZHVtcC92YXIuYyBiL2R1bXAvdmFyLmMKK2luZGV4IDY0NWNhYWIuLjgxNTZkMzcgMTAwNjQ0CistLS0gYS9kdW1wL3Zhci5jCisrKysgYi9kdW1wL3Zhci5jCitAQCAtMTYsNiArMTYsNyBAQAorICAqIEluYy4sICA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICAqLworIAorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDUtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9pbnQzMl90LWluLWF0dHItYXR0cmlidXRlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjZlNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBkOTVmNDk0ZGUxYWE4MTIzYzc0MTcwZmZlYmFlZDhlYTg5NjQ5ZGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MzM6NDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHVfaW50MzJfdCBpbiBhdHRyL2F0dHJpYnV0ZXMuaAorCitlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3VfaW50MzJfdCcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHJlc3RvcmUvY29udGVudC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9yZXN0b3JlL2NvbnRlbnQuYyBiL3Jlc3RvcmUvY29udGVudC5jCitpbmRleCA3YzRhODFmLi4xZDVkZTFiIDEwMDY0NAorLS0tIGEvcmVzdG9yZS9jb250ZW50LmMKKysrKyBiL3Jlc3RvcmUvY29udGVudC5jCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxhdHRyL2F0dHJpYnV0ZXMuaD4KKyAjaW5jbHVkZSA8eGZzL2hhbmRsZS5oPgorICNpbmNsdWRlIDx0aW1lLmg+CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YWQwYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBEdW1wIFV0aWxpdHkiCi1ERVNDUklQVElPTiA9ICJUaGUgeGZzZHVtcCBwYWNrYWdlIGNvbnRhaW5zIHhmc2R1bXAsIHhmc3Jlc3RvcmUgYW5kIGEgXAotICAgICAgICAgICAgICAgbnVtYmVyIG9mIG90aGVyIHV0aWxpdGllcyBmb3IgYWRtaW5pc3RlcmluZyBYRlMgZmlsZXN5c3RlbXMuXAotICAgICAgICAgICAgICAgeGZzZHVtcCBleGFtaW5lcyBmaWxlcyBpbiBhIGZpbGVzeXN0ZW0sIGRldGVybWluZXMgd2hpY2ggXAotICAgICAgICAgICAgICAgbmVlZCB0byBiZSBiYWNrZWQgdXAsIGFuZCBjb3BpZXMgdGhvc2UgZmlsZXMgdG8gYSBcCi0gICAgICAgICAgICAgICBzcGVjaWZpZWQgZGlzaywgdGFwZSBvciBvdGhlciBzdG9yYWdlIG1lZGl1bS4iCi1IT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xNWM4MzI4OTRkMTBkZGQwMGRmY2Y1N2JlZTQ5MGVjYyIKLURFUEVORFMgPSAieGZzcHJvZ3MgYXR0ciIKLQotU1JDX1VSSSA9ICJmdHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMvY21kX3RhcnMvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL3JlbW92ZS1pbnN0YWxsLWFzLXVzZXIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImE4YjE3NjFiZTVmZWIzNjMxMzFlN2I1MDY2MzlhZDRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3MGVhZmQwNzIxNTE1YmRkNzljYjBlMjk1YjcwMWQ0OWNkZjgxZTcxYTBhMGZmMGRmNmQ0YzVjYzE5NjA5NDMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1QQVJBTExFTF9NQUtFID0gIiIKLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dldHRleHRdID0gIi0tZW5hYmxlLWdldHRleHQ9eWVzLC0tZW5hYmxlLWdldHRleHQ9bm8sZ2V0dGV4dCIKLQotRVhUUkFfT0VNQUtFICs9ICInTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sJyBWPTEiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgZXhwb3J0IERFQlVHPSItRE5ERUJVRyIKLSAgICBvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIGV4cG9ydCBESVNUX1JPT1Q9JHtEfQotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotICAgIG9lX3J1bm1ha2UgaW5zdGFsbC1kZXYKLX0KLQotUE5CTEFDS0xJU1RbeGZzZHVtcF0gPz0gIkRlcGVuZHMgb24gYnJva2VuIHhmc3Byb2dzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYzk5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjcuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBEdW1wIFV0aWxpdHkiCitERVNDUklQVElPTiA9ICJUaGUgeGZzZHVtcCBwYWNrYWdlIGNvbnRhaW5zIHhmc2R1bXAsIHhmc3Jlc3RvcmUgYW5kIGEgXAorICAgICAgICAgICAgICAgbnVtYmVyIG9mIG90aGVyIHV0aWxpdGllcyBmb3IgYWRtaW5pc3RlcmluZyBYRlMgZmlsZXN5c3RlbXMuXAorICAgICAgICAgICAgICAgeGZzZHVtcCBleGFtaW5lcyBmaWxlcyBpbiBhIGZpbGVzeXN0ZW0sIGRldGVybWluZXMgd2hpY2ggXAorICAgICAgICAgICAgICAgbmVlZCB0byBiZSBiYWNrZWQgdXAsIGFuZCBjb3BpZXMgdGhvc2UgZmlsZXMgdG8gYSBcCisgICAgICAgICAgICAgICBzcGVjaWZpZWQgZGlzaywgdGFwZSBvciBvdGhlciBzdG9yYWdlIG1lZGl1bS4iCitIT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xNWM4MzI4OTRkMTBkZGQwMGRmY2Y1N2JlZTQ5MGVjYyIKK0RFUEVORFMgPSAieGZzcHJvZ3MgYXR0ciIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9mcy94ZnMveGZzZHVtcC8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWluc3RhbGwtYXMtdXNlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItT19FWENMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUmVwbGFjZS1fX3VpbnQzMl90LXdpdGgtdWludDMyX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1yZXBsYWNlLXVzZS1vZi1TSUdDTEQtd2l0aC1TSUdDSExELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtaW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS14ZnNkdW1wLVVzZS1jOTktZGVmaW5lZC1pbnQ2NF90LWluc3RlYWQtb2YtX19pbnQ2NF90LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImM2ZTkxZjJhYzhiNzZjNzk2ZGIyZDIzNmY1Y2E1OTQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5ZTZkNGRmMjU3ZWJjNmQyOWNhOWU5NzBjYTIwNjcyYzJlYTAzNDgxYWQ5NDliYzY4Zjk4ZGUzZTRkNTZkY2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitQQVJBTExFTF9NQUtFID0gIiIKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2dldHRleHRdID0gIi0tZW5hYmxlLWdldHRleHQ9eWVzLC0tZW5hYmxlLWdldHRleHQ9bm8sZ2V0dGV4dCIKKworQ0ZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitFWFRSQV9PRU1BS0UgKz0gIidMSUJUT09MPSR7SE9TVF9TWVN9LWxpYnRvb2wnIFY9MSIKKworZG9fY29uZmlndXJlICgpIHsKKyAgICBleHBvcnQgREVCVUc9Ii1ETkRFQlVHIgorICAgIG9lX3J1bmNvbmYKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgZXhwb3J0IERJU1RfUk9PVD0ke0R9CisgICAgb2VfcnVubWFrZSBpbnN0YWxsCisgICAgb2VfcnVubWFrZSBpbnN0YWxsLWRldgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS14ZnMtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLXhmcy1yZW1vdmUtZG91YmxlLXVuZGVyc2NvcmUtaW50ZWdlci10eXBlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDdjNDg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS14ZnMtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2gKQEAgLTAsMCArMSwyMDgyIEBACitGcm9tIDRhNDkyZTcyNTE1NTA5ZWU3MDIyODZhNDJhZmU3ZDhmODlkMzc2MzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiRGFycmljayBKLiBXb25nIiA8ZGFycmljay53b25nQG9yYWNsZS5jb20+CitEYXRlOiBNb24sIDMxIEp1bCAyMDE3IDE1OjA4OjEwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIHhmczogcmVtb3ZlIGRvdWJsZS11bmRlcnNjb3JlIGludGVnZXIgdHlwZXMKKworU291cmNlIGtlcm5lbCBjb21taXQ6IGM4Y2U1NDBkYjVmNjdkMjU0YWFmYjE0YjVkNzY0MjJjNjJhOTA2ZGYKKworVGhpcyBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHBhdGNoIHRoYXQgcmVtb3ZlcyB0aGUgcHJpdmF0ZQorX197dSx9aW50ezgsMTYsMzIsNjR9X3QgdHlwZWRlZnMgaW4gZmF2b3Igb2YgdXNpbmcgdGhlIHN5c3RlbQore3UsfWludHs4LDE2LDMyLDY0fV90IHR5cGVkZWZzLiAgVGhpcyBpcyB0aGUgc2VkIHNjcmlwdCB1c2VkIHRvIHBlcmZvcm0KK3RoZSB0cmFuc2Zvcm1hdGlvbiBhbmQgZml4IHRoZSByZXN1bHRpbmcgd2hpdGVzcGFjZSBhbmQgaW5kZW50YXRpb24KK2Vycm9yczoKKworcy90eXBlZGVmXHRfX3VpbnQ4X3QvdHlwZWRlZiBfX3VpbnQ4X3RcdC9nCitzL3R5cGVkZWZcdF9fdWludC90eXBlZGVmIF9fdWludC9nCitzL3R5cGVkZWZcdF9faW50XChbMC05XSpcKV90L3R5cGVkZWYgaW50XDFfdFx0L2cKK3MvX191aW50OF90XHQvX191aW50OF90XHRcdC9nCitzL19fdWludC91aW50L2cKK3MvX19pbnRcKFswLTldKlwpX3RcdC9fX2ludFwxX3RcdFx0L2cKK3MvX19pbnQvaW50L2cKKy9edHlwZWRlZi4qaW50WzAtOV0qX3Q7JC9kCisKK1NpZ25lZC1vZmYtYnk6IERhcnJpY2sgSi4gV29uZyA8ZGFycmljay53b25nQG9yYWNsZS5jb20+CitSZXZpZXdlZC1ieTogQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+CitTaWduZWQtb2ZmLWJ5OiBFcmljIFNhbmRlZW4gPHNhbmRlZW5Ac2FuZGVlbi5uZXQ+CistLS0KKyBsaWJ4ZnMvbGlieGZzX3ByaXYuaCAgICAgICAgfCAgIDEgKworIGxpYnhmcy94ZnNfYWxsb2NfYnRyZWUuYyAgICB8ICAyMCArKy0tCisgbGlieGZzL3hmc19hdHRyX3JlbW90ZS5jICAgIHwgICA4ICstCisgbGlieGZzL3hmc19hdHRyX3NmLmggICAgICAgIHwgIDEwICstCisgbGlieGZzL3hmc19iaXQuaCAgICAgICAgICAgIHwgIDI0ICsrLS0tCisgbGlieGZzL3hmc19ibWFwX2J0cmVlLmMgICAgIHwgICA4ICstCisgbGlieGZzL3hmc19idHJlZS5jICAgICAgICAgIHwgIDIyICsrLS0KKyBsaWJ4ZnMveGZzX2J0cmVlLmggICAgICAgICAgfCAgMTggKystLQorIGxpYnhmcy94ZnNfY2tzdW0uaCAgICAgICAgICB8ICAxNiArLS0KKyBsaWJ4ZnMveGZzX2RhX2J0cmVlLmMgICAgICAgfCAgIDIgKy0KKyBsaWJ4ZnMveGZzX2RhX2J0cmVlLmggICAgICAgfCAgIDggKy0KKyBsaWJ4ZnMveGZzX2RhX2Zvcm1hdC5jICAgICAgfCAgMjggKystLS0KKyBsaWJ4ZnMveGZzX2RhX2Zvcm1hdC5oICAgICAgfCAgNjQgKysrKystLS0tLS0KKyBsaWJ4ZnMveGZzX2RpcjIuaCAgICAgICAgICAgfCAgIDggKy0KKyBsaWJ4ZnMveGZzX2RpcjJfbGVhZi5jICAgICAgfCAgMTIgKy0tCisgbGlieGZzL3hmc19kaXIyX3ByaXYuaCAgICAgIHwgICAyICstCisgbGlieGZzL3hmc19kaXIyX3NmLmMgICAgICAgIHwgICA0ICstCisgbGlieGZzL3hmc19mb3JtYXQuaCAgICAgICAgIHwgMTEyICsrKysrKysrKy0tLS0tLS0tLS0KKyBsaWJ4ZnMveGZzX2ZzLmggICAgICAgICAgICAgfCAgMTIgKy0tCisgbGlieGZzL3hmc19pYWxsb2MuYyAgICAgICAgIHwgICA2ICstCisgbGlieGZzL3hmc19pYWxsb2NfYnRyZWUuYyAgIHwgICA0ICstCisgbGlieGZzL3hmc19pbm9kZV9idWYuYyAgICAgIHwgICAyICstCisgbGlieGZzL3hmc19pbm9kZV9idWYuaCAgICAgIHwgIDI4ICsrLS0tCisgbGlieGZzL3hmc19sb2dfZm9ybWF0LmggICAgIHwgMjU2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbGlieGZzL3hmc19xdW90YV9kZWZzLmggICAgIHwgICA0ICstCisgbGlieGZzL3hmc19yZWZjb3VudF9idHJlZS5jIHwgICA4ICstCisgbGlieGZzL3hmc19ybWFwLmMgICAgICAgICAgIHwgICA4ICstCisgbGlieGZzL3hmc19ybWFwLmggICAgICAgICAgIHwgICA4ICstCisgbGlieGZzL3hmc19ybWFwX2J0cmVlLmMgICAgIHwgIDMwICsrKy0tLQorIGxpYnhmcy94ZnNfcnRiaXRtYXAuYyAgICAgICB8ICAgMiArLQorIGxpYnhmcy94ZnNfc2IuYyAgICAgICAgICAgICB8ICAgNCArLQorIGxpYnhmcy94ZnNfdHlwZXMuaCAgICAgICAgICB8ICA0NiArKysrLS0tLQorIDMyIGZpbGVzIGNoYW5nZWQsIDM5MyBpbnNlcnRpb25zKCspLCAzOTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ4ZnMvbGlieGZzX3ByaXYuaCBiL2xpYnhmcy9saWJ4ZnNfcHJpdi5oCitpbmRleCAwYjRjNDg5MC4uYjNjYzdlNTMgMTAwNjQ0CistLS0gYS9saWJ4ZnMvbGlieGZzX3ByaXYuaAorKysrIGIvbGlieGZzL2xpYnhmc19wcml2LmgKK0BAIC01MDQsNSArNTA0LDYgQEAgYm9vbCB4ZnNfbG9nX2NoZWNrX2xzbihzdHJ1Y3QgeGZzX21vdW50ICosIHhmc19sc25fdCk7CisgI2RlZmluZSBYRlNfU1RBVFNfSU5DX09GRihtcCwgb2ZmKQorICNkZWZpbmUgWEZTX1NUQVRTX0FERF9PRkYobXAsIG9mZiwgdmFsKQorIAorK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKKyAKKyAjZW5kaWYJLyogX19MSUJYRlNfSU5URVJOQUxfWEZTX0hfXyAqLworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfYWxsb2NfYnRyZWUuYyBiL2xpYnhmcy94ZnNfYWxsb2NfYnRyZWUuYworaW5kZXggZTExZDg5YTMuLjhlNzdlNmUzIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19hbGxvY19idHJlZS5jCisrKysgYi9saWJ4ZnMveGZzX2FsbG9jX2J0cmVlLmMKK0BAIC0yNTEsNyArMjUxLDcgQEAgeGZzX2FsbG9jYnRfaW5pdF9wdHJfZnJvbV9jdXIoCisgCXB0ci0+cyA9IGFnZi0+YWdmX3Jvb3RzW2N1ci0+YmNfYnRudW1dOworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfYm5vYnRfa2V5X2RpZmYoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmtleSkKK0BAIC0yNTksNDIgKzI1OSw0MiBAQCB4ZnNfYm5vYnRfa2V5X2RpZmYoCisgCXhmc19hbGxvY19yZWNfaW5jb3JlX3QJKnJlYyA9ICZjdXItPmJjX3JlYy5hOworIAl4ZnNfYWxsb2Nfa2V5X3QJCSprcCA9ICZrZXktPmFsbG9jOworIAorLQlyZXR1cm4gKF9faW50NjRfdCliZTMyX3RvX2NwdShrcC0+YXJfc3RhcnRibG9jaykgLSByZWMtPmFyX3N0YXJ0YmxvY2s7CisrCXJldHVybiAoaW50NjRfdCliZTMyX3RvX2NwdShrcC0+YXJfc3RhcnRibG9jaykgLSByZWMtPmFyX3N0YXJ0YmxvY2s7CisgfQorIAorLVNUQVRJQyBfX2ludDY0X3QKKytTVEFUSUMgaW50NjRfdAorIHhmc19jbnRidF9rZXlfZGlmZigKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQorIHsKKyAJeGZzX2FsbG9jX3JlY19pbmNvcmVfdAkqcmVjID0gJmN1ci0+YmNfcmVjLmE7CisgCXhmc19hbGxvY19rZXlfdAkJKmtwID0gJmtleS0+YWxsb2M7CistCV9faW50NjRfdAkJZGlmZjsKKysJaW50NjRfdAkJCWRpZmY7CisgCistCWRpZmYgPSAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5hcl9ibG9ja2NvdW50KSAtIHJlYy0+YXJfYmxvY2tjb3VudDsKKysJZGlmZiA9IChpbnQ2NF90KWJlMzJfdG9fY3B1KGtwLT5hcl9ibG9ja2NvdW50KSAtIHJlYy0+YXJfYmxvY2tjb3VudDsKKyAJaWYgKGRpZmYpCisgCQlyZXR1cm4gZGlmZjsKKyAKKy0JcmV0dXJuIChfX2ludDY0X3QpYmUzMl90b19jcHUoa3AtPmFyX3N0YXJ0YmxvY2spIC0gcmVjLT5hcl9zdGFydGJsb2NrOworKwlyZXR1cm4gKGludDY0X3QpYmUzMl90b19jcHUoa3AtPmFyX3N0YXJ0YmxvY2spIC0gcmVjLT5hcl9zdGFydGJsb2NrOworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfYm5vYnRfZGlmZl90d29fa2V5cygKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqazEsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmsyKQorIHsKKy0JcmV0dXJuIChfX2ludDY0X3QpYmUzMl90b19jcHUoazEtPmFsbG9jLmFyX3N0YXJ0YmxvY2spIC0KKysJcmV0dXJuIChpbnQ2NF90KWJlMzJfdG9fY3B1KGsxLT5hbGxvYy5hcl9zdGFydGJsb2NrKSAtCisgCQkJICBiZTMyX3RvX2NwdShrMi0+YWxsb2MuYXJfc3RhcnRibG9jayk7CisgfQorIAorLVNUQVRJQyBfX2ludDY0X3QKKytTVEFUSUMgaW50NjRfdAorIHhmc19jbnRidF9kaWZmX3R3b19rZXlzKAorIAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAorIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprMSwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqazIpCisgeworLQlfX2ludDY0X3QJCWRpZmY7CisrCWludDY0X3QJCQlkaWZmOworIAorIAlkaWZmID0gIGJlMzJfdG9fY3B1KGsxLT5hbGxvYy5hcl9ibG9ja2NvdW50KSAtCisgCQliZTMyX3RvX2NwdShrMi0+YWxsb2MuYXJfYmxvY2tjb3VudCk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19hdHRyX3JlbW90ZS5jIGIvbGlieGZzL3hmc19hdHRyX3JlbW90ZS5jCitpbmRleCBhYmUxNzA1Mi4uMWYyNWUzNjMgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2F0dHJfcmVtb3RlLmMKKysrKyBiL2xpYnhmcy94ZnNfYXR0cl9yZW1vdGUuYworQEAgLTI0OCw3ICsyNDgsNyBAQCB4ZnNfYXR0cl9ybXR2YWxfY29weW91dCgKKyAJeGZzX2lub190CWlubywKKyAJaW50CQkqb2Zmc2V0LAorIAlpbnQJCSp2YWx1ZWxlbiwKKy0JX191aW50OF90CSoqZHN0KQorKwl1aW50OF90CQkqKmRzdCkKKyB7CisgCWNoYXIJCSpzcmMgPSBicC0+Yl9hZGRyOworIAl4ZnNfZGFkZHJfdAlibm8gPSBicC0+Yl9ibjsKK0BAIC0yOTYsNyArMjk2LDcgQEAgeGZzX2F0dHJfcm10dmFsX2NvcHlpbigKKyAJeGZzX2lub190CWlubywKKyAJaW50CQkqb2Zmc2V0LAorIAlpbnQJCSp2YWx1ZWxlbiwKKy0JX191aW50OF90CSoqc3JjKQorKwl1aW50OF90CQkqKnNyYykKKyB7CisgCWNoYXIJCSpkc3QgPSBicC0+Yl9hZGRyOworIAl4ZnNfZGFkZHJfdAlibm8gPSBicC0+Yl9ibjsKK0BAIC0zNTAsNyArMzUwLDcgQEAgeGZzX2F0dHJfcm10dmFsX2dldCgKKyAJc3RydWN0IHhmc19tb3VudAkqbXAgPSBhcmdzLT5kcC0+aV9tb3VudDsKKyAJc3RydWN0IHhmc19idWYJCSpicDsKKyAJeGZzX2RhYmxrX3QJCWxibGtubyA9IGFyZ3MtPnJtdGJsa25vOworLQlfX3VpbnQ4X3QJCSpkc3QgPSBhcmdzLT52YWx1ZTsKKysJdWludDhfdAkJCSpkc3QgPSBhcmdzLT52YWx1ZTsKKyAJaW50CQkJdmFsdWVsZW47CisgCWludAkJCW5tYXA7CisgCWludAkJCWVycm9yOworQEAgLTQxNiw3ICs0MTYsNyBAQCB4ZnNfYXR0cl9ybXR2YWxfc2V0KAorIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwltYXA7CisgCXhmc19kYWJsa190CQlsYmxrbm87CisgCXhmc19maWxlb2ZmX3QJCWxmaWxlb2ZmID0gMDsKKy0JX191aW50OF90CQkqc3JjID0gYXJncy0+dmFsdWU7CisrCXVpbnQ4X3QJCQkqc3JjID0gYXJncy0+dmFsdWU7CisgCWludAkJCWJsa2NudDsKKyAJaW50CQkJdmFsdWVsZW47CisgCWludAkJCW5tYXA7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19hdHRyX3NmLmggYi9saWJ4ZnMveGZzX2F0dHJfc2YuaAoraW5kZXggOTA5MjhiYmUuLmFmZDY4NGFlIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19hdHRyX3NmLmgKKysrKyBiL2xpYnhmcy94ZnNfYXR0cl9zZi5oCitAQCAtMzEsMTAgKzMxLDEwIEBAIHR5cGVkZWYgc3RydWN0IHhmc19hdHRyX3NmX2VudHJ5IHhmc19hdHRyX3NmX2VudHJ5X3Q7CisgICogV2UgZ2VuZXJhdGUgdGhpcyB0aGVuIHNvcnQgaXQsIGF0dHJfbGlzdCgpIG11c3QgcmV0dXJuIHRoaW5ncyBpbiBoYXNoLW9yZGVyLgorICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19hdHRyX3NmX3NvcnQgeworLQlfX3VpbnQ4X3QJZW50bm87CQkvKiBlbnRyeSBudW1iZXIgaW4gb3JpZ2luYWwgbGlzdCAqLworLQlfX3VpbnQ4X3QJbmFtZWxlbjsJLyogbGVuZ3RoIG9mIG5hbWUgdmFsdWUgKG5vIG51bGwpICovCistCV9fdWludDhfdAl2YWx1ZWxlbjsJLyogbGVuZ3RoIG9mIHZhbHVlICovCistCV9fdWludDhfdAlmbGFnczsJCS8qIGZsYWdzIGJpdHMgKHNlZSB4ZnNfYXR0cl9sZWFmLmgpICovCisrCXVpbnQ4X3QJCWVudG5vOwkJLyogZW50cnkgbnVtYmVyIGluIG9yaWdpbmFsIGxpc3QgKi8KKysJdWludDhfdAkJbmFtZWxlbjsJLyogbGVuZ3RoIG9mIG5hbWUgdmFsdWUgKG5vIG51bGwpICovCisrCXVpbnQ4X3QJCXZhbHVlbGVuOwkvKiBsZW5ndGggb2YgdmFsdWUgKi8KKysJdWludDhfdAkJZmxhZ3M7CQkvKiBmbGFncyBiaXRzIChzZWUgeGZzX2F0dHJfbGVhZi5oKSAqLworIAl4ZnNfZGFoYXNoX3QJaGFzaDsJCS8qIHRoaXMgZW50cnkncyBoYXNoIHZhbHVlICovCisgCXVuc2lnbmVkIGNoYXIJKm5hbWU7CQkvKiBuYW1lIHZhbHVlLCBwb2ludGVyIGludG8gYnVmZmVyICovCisgfSB4ZnNfYXR0cl9zZl9zb3J0X3Q7CitAQCAtNDIsNyArNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfYXR0cl9zZl9zb3J0IHsKKyAjZGVmaW5lIFhGU19BVFRSX1NGX0VOVFNJWkVfQllOQU1FKG5sZW4sdmxlbikJLyogc3BhY2UgbmFtZS92YWx1ZSB1c2VzICovIFwKKyAJKCgoaW50KXNpemVvZih4ZnNfYXR0cl9zZl9lbnRyeV90KS0xICsgKG5sZW4pKyh2bGVuKSkpCisgI2RlZmluZSBYRlNfQVRUUl9TRl9FTlRTSVpFX01BWAkJCS8qIG1heCBzcGFjZSBmb3IgbmFtZSZ2YWx1ZSAqLyBcCistCSgoMSA8PCAoTkJCWSooaW50KXNpemVvZihfX3VpbnQ4X3QpKSkgLSAxKQorKwkoKDEgPDwgKE5CQlkqKGludClzaXplb2YodWludDhfdCkpKSAtIDEpCisgI2RlZmluZSBYRlNfQVRUUl9TRl9FTlRTSVpFKHNmZXApCQkvKiBzcGFjZSBhbiBlbnRyeSB1c2VzICovIFwKKyAJKChpbnQpc2l6ZW9mKHhmc19hdHRyX3NmX2VudHJ5X3QpLTEgKyAoc2ZlcCktPm5hbWVsZW4rKHNmZXApLT52YWx1ZWxlbikKKyAjZGVmaW5lIFhGU19BVFRSX1NGX05FWFRFTlRSWShzZmVwKQkJLyogbmV4dCBlbnRyeSBpbiBzdHJ1Y3QgKi8gXAorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfYml0LmggYi9saWJ4ZnMveGZzX2JpdC5oCitpbmRleCBlMTY0OWMwZC4uNjFjNmIyMDIgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2JpdC5oCisrKysgYi9saWJ4ZnMveGZzX2JpdC5oCitAQCAtMjUsNDcgKzI1LDQ3IEBACisgLyoKKyAgKiBtYXNrcyB3aXRoIG4gaGlnaC9sb3cgYml0cyBzZXQsIDY0LWJpdCB2YWx1ZXMKKyAgKi8KKy1zdGF0aWMgaW5saW5lIF9fdWludDY0X3QgeGZzX21hc2s2NGhpKGludCBuKQorK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgeGZzX21hc2s2NGhpKGludCBuKQorIHsKKy0JcmV0dXJuIChfX3VpbnQ2NF90KS0xIDw8ICg2NCAtIChuKSk7CisrCXJldHVybiAodWludDY0X3QpLTEgPDwgKDY0IC0gKG4pKTsKKyB9Cistc3RhdGljIGlubGluZSBfX3VpbnQzMl90IHhmc19tYXNrMzJsbyhpbnQgbikKKytzdGF0aWMgaW5saW5lIHVpbnQzMl90IHhmc19tYXNrMzJsbyhpbnQgbikKKyB7CistCXJldHVybiAoKF9fdWludDMyX3QpMSA8PCAobikpIC0gMTsKKysJcmV0dXJuICgodWludDMyX3QpMSA8PCAobikpIC0gMTsKKyB9Cistc3RhdGljIGlubGluZSBfX3VpbnQ2NF90IHhmc19tYXNrNjRsbyhpbnQgbikKKytzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHhmc19tYXNrNjRsbyhpbnQgbikKKyB7CistCXJldHVybiAoKF9fdWludDY0X3QpMSA8PCAobikpIC0gMTsKKysJcmV0dXJuICgodWludDY0X3QpMSA8PCAobikpIC0gMTsKKyB9CisgCisgLyogR2V0IGhpZ2ggYml0IHNldCBvdXQgb2YgMzItYml0IGFyZ3VtZW50LCAtMSBpZiBub25lIHNldCAqLworLXN0YXRpYyBpbmxpbmUgaW50IHhmc19oaWdoYml0MzIoX191aW50MzJfdCB2KQorK3N0YXRpYyBpbmxpbmUgaW50IHhmc19oaWdoYml0MzIodWludDMyX3QgdikKKyB7CisgCXJldHVybiBmbHModikgLSAxOworIH0KKyAKKyAvKiBHZXQgaGlnaCBiaXQgc2V0IG91dCBvZiA2NC1iaXQgYXJndW1lbnQsIC0xIGlmIG5vbmUgc2V0ICovCistc3RhdGljIGlubGluZSBpbnQgeGZzX2hpZ2hiaXQ2NChfX3VpbnQ2NF90IHYpCisrc3RhdGljIGlubGluZSBpbnQgeGZzX2hpZ2hiaXQ2NCh1aW50NjRfdCB2KQorIHsKKyAJcmV0dXJuIGZsczY0KHYpIC0gMTsKKyB9CisgCisgLyogR2V0IGxvdyBiaXQgc2V0IG91dCBvZiAzMi1iaXQgYXJndW1lbnQsIC0xIGlmIG5vbmUgc2V0ICovCistc3RhdGljIGlubGluZSBpbnQgeGZzX2xvd2JpdDMyKF9fdWludDMyX3QgdikKKytzdGF0aWMgaW5saW5lIGludCB4ZnNfbG93Yml0MzIodWludDMyX3QgdikKKyB7CisgCXJldHVybiBmZnModikgLSAxOworIH0KKyAKKyAvKiBHZXQgbG93IGJpdCBzZXQgb3V0IG9mIDY0LWJpdCBhcmd1bWVudCwgLTEgaWYgbm9uZSBzZXQgKi8KKy1zdGF0aWMgaW5saW5lIGludCB4ZnNfbG93Yml0NjQoX191aW50NjRfdCB2KQorK3N0YXRpYyBpbmxpbmUgaW50IHhmc19sb3diaXQ2NCh1aW50NjRfdCB2KQorIHsKKy0JX191aW50MzJfdAl3ID0gKF9fdWludDMyX3QpdjsKKysJdWludDMyX3QJdyA9ICh1aW50MzJfdCl2OworIAlpbnQJCW4gPSAwOworIAorIAlpZiAodykgewkvKiBsb3dlciBiaXRzICovCisgCQluID0gZmZzKHcpOworIAl9IGVsc2UgewkvKiB1cHBlciBiaXRzICovCistCQl3ID0gKF9fdWludDMyX3QpKHYgPj4gMzIpOworKwkJdyA9ICh1aW50MzJfdCkodiA+PiAzMik7CisgCQlpZiAodykgeworIAkJCW4gPSBmZnModyk7CisgCQkJaWYgKG4pCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19ibWFwX2J0cmVlLmMgYi9saWJ4ZnMveGZzX2JtYXBfYnRyZWUuYworaW5kZXggYzQ4Y2JlYzEuLjllZTQwZDhiIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19ibWFwX2J0cmVlLmMKKysrKyBiL2xpYnhmcy94ZnNfYm1hcF9idHJlZS5jCitAQCAtOTEsOCArOTEsOCBAQCB4ZnNfYm1kcl90b19ibWJ0KAorICAqLworIFNUQVRJQyB2b2lkCisgX194ZnNfYm1idF9nZXRfYWxsKAorLQkJX191aW50NjRfdCBsMCwKKy0JCV9fdWludDY0X3QgbDEsCisrCQl1aW50NjRfdCBsMCwKKysJCXVpbnQ2NF90IGwxLAorIAkJeGZzX2JtYnRfaXJlY190ICpzKQorIHsKKyAJaW50CWV4dF9mbGFnOworQEAgLTU4NSwxMiArNTg1LDEyIEBAIHhmc19ibWJ0X2luaXRfcHRyX2Zyb21fY3VyKAorIAlwdHItPmwgPSAwOworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfYm1idF9rZXlfZGlmZigKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQorIHsKKy0JcmV0dXJuIChfX2ludDY0X3QpYmU2NF90b19jcHUoa2V5LT5ibWJ0LmJyX3N0YXJ0b2ZmKSAtCisrCXJldHVybiAoaW50NjRfdCliZTY0X3RvX2NwdShrZXktPmJtYnQuYnJfc3RhcnRvZmYpIC0KKyAJCQkJICAgICAgY3VyLT5iY19yZWMuYi5icl9zdGFydG9mZjsKKyB9CisgCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19idHJlZS5jIGIvbGlieGZzL3hmc19idHJlZS5jCitpbmRleCAzZDI5MzUyMC4uNTZiNTBhNWIgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2J0cmVlLmMKKysrKyBiL2xpYnhmcy94ZnNfYnRyZWUuYworQEAgLTM5LDcgKzM5LDcgQEAga21lbV96b25lX3QJKnhmc19idHJlZV9jdXJfem9uZTsKKyAvKgorICAqIEJ0cmVlIG1hZ2ljIG51bWJlcnMuCisgICovCistc3RhdGljIGNvbnN0IF9fdWludDMyX3QgeGZzX21hZ2ljc1syXVtYRlNfQlROVU1fTUFYXSA9IHsKKytzdGF0aWMgY29uc3QgdWludDMyX3QgeGZzX21hZ2ljc1syXVtYRlNfQlROVU1fTUFYXSA9IHsKKyAJeyBYRlNfQUJUQl9NQUdJQywgWEZTX0FCVENfTUFHSUMsIDAsIFhGU19CTUFQX01BR0lDLCBYRlNfSUJUX01BR0lDLAorIAkgIFhGU19GSUJUX01BR0lDLCAwIH0sCisgCXsgWEZTX0FCVEJfQ1JDX01BR0lDLCBYRlNfQUJUQ19DUkNfTUFHSUMsIFhGU19STUFQX0NSQ19NQUdJQywKK0BAIC00NywxMiArNDcsMTIgQEAgc3RhdGljIGNvbnN0IF9fdWludDMyX3QgeGZzX21hZ2ljc1syXVtYRlNfQlROVU1fTUFYXSA9IHsKKyAJICBYRlNfUkVGQ19DUkNfTUFHSUMgfQorIH07CisgCistX191aW50MzJfdAorK3VpbnQzMl90CisgeGZzX2J0cmVlX21hZ2ljKAorIAlpbnQJCQljcmMsCisgCXhmc19idG51bV90CQlidG51bSkKKyB7CistCV9fdWludDMyX3QJCW1hZ2ljID0geGZzX21hZ2ljc1tjcmNdW2J0bnVtXTsKKysJdWludDMyX3QJCW1hZ2ljID0geGZzX21hZ2ljc1tjcmNdW2J0bnVtXTsKKyAKKyAJLyogRW5zdXJlIHdlIGFza2VkIGZvciBjcmMgZm9yIGNyYy1vbmx5IG1hZ2ljcy4gKi8KKyAJQVNTRVJUKG1hZ2ljICE9IDApOworQEAgLTc3NCwxNCArNzc0LDE0IEBAIHhmc19idHJlZV9sYXN0cmVjKAorICAqLworIHZvaWQKKyB4ZnNfYnRyZWVfb2Zmc2V0cygKKy0JX19pbnQ2NF90CWZpZWxkcywJCS8qIGJpdG1hc2sgb2YgZmllbGRzICovCisrCWludDY0X3QJCWZpZWxkcywJCS8qIGJpdG1hc2sgb2YgZmllbGRzICovCisgCWNvbnN0IHNob3J0CSpvZmZzZXRzLAkvKiB0YWJsZSBvZiBmaWVsZCBvZmZzZXRzICovCisgCWludAkJbmJpdHMsCQkvKiBudW1iZXIgb2YgYml0cyB0byBpbnNwZWN0ICovCisgCWludAkJKmZpcnN0LAkJLyogb3V0cHV0OiBmaXJzdCBieXRlIG9mZnNldCAqLworIAlpbnQJCSpsYXN0KQkJLyogb3V0cHV0OiBsYXN0IGJ5dGUgb2Zmc2V0ICovCisgeworIAlpbnQJCWk7CQkvKiBjdXJyZW50IGJpdCBudW1iZXIgKi8KKy0JX19pbnQ2NF90CWltYXNrOwkJLyogbWFzayBmb3IgY3VycmVudCBiaXQgbnVtYmVyICovCisrCWludDY0X3QJCWltYXNrOwkJLyogbWFzayBmb3IgY3VycmVudCBiaXQgbnVtYmVyICovCisgCisgCUFTU0VSVChmaWVsZHMgIT0gMCk7CisgCS8qCitAQCAtMTg0Miw3ICsxODQyLDcgQEAgeGZzX2J0cmVlX2xvb2t1cCgKKyAJaW50CQkJKnN0YXQpCS8qIHN1Y2Nlc3MvZmFpbHVyZSAqLworIHsKKyAJc3RydWN0IHhmc19idHJlZV9ibG9jawkqYmxvY2s7CS8qIGN1cnJlbnQgYnRyZWUgYmxvY2sgKi8KKy0JX19pbnQ2NF90CQlkaWZmOwkvKiBkaWZmZXJlbmNlIGZvciB0aGUgY3VycmVudCBrZXkgKi8KKysJaW50NjRfdAkJCWRpZmY7CS8qIGRpZmZlcmVuY2UgZm9yIHRoZSBjdXJyZW50IGtleSAqLworIAlpbnQJCQllcnJvcjsJLyogZXJyb3IgcmV0dXJuIHZhbHVlICovCisgCWludAkJCWtleW5vOwkvKiBjdXJyZW50IGtleSBudW1iZXIgKi8KKyAJaW50CQkJbGV2ZWw7CS8qIGxldmVsIGluIHRoZSBidHJlZSAqLworQEAgLTQ0MzUsNyArNDQzNSw3IEBAIHhmc19idHJlZV92aXNpdF9ibG9ja3MoCisgICogcmVjb3ZlcnkgY29tcGxldGlvbiB3cml0ZXMgdGhlIGNoYW5nZXMgdG8gZGlzay4KKyAgKi8KKyBzdHJ1Y3QgeGZzX2J0cmVlX2Jsb2NrX2NoYW5nZV9vd25lcl9pbmZvIHsKKy0JX191aW50NjRfdAkJbmV3X293bmVyOworKwl1aW50NjRfdAkJbmV3X293bmVyOworIAlzdHJ1Y3QgbGlzdF9oZWFkCSpidWZmZXJfbGlzdDsKKyB9OworIAorQEAgLTQ0ODEsNyArNDQ4MSw3IEBAIHhmc19idHJlZV9ibG9ja19jaGFuZ2Vfb3duZXIoCisgaW50CisgeGZzX2J0cmVlX2NoYW5nZV9vd25lcigKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKy0JX191aW50NjRfdAkJbmV3X293bmVyLAorKwl1aW50NjRfdAkJbmV3X293bmVyLAorIAlzdHJ1Y3QgbGlzdF9oZWFkCSpidWZmZXJfbGlzdCkKKyB7CisgCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2tfY2hhbmdlX293bmVyX2luZm8JYmJjb2k7CitAQCAtNDU4NSw3ICs0NTg1LDcgQEAgeGZzX2J0cmVlX3NpbXBsZV9xdWVyeV9yYW5nZSgKKyB7CisgCXVuaW9uIHhmc19idHJlZV9yZWMJCSpyZWNwOworIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CQlyZWNfa2V5OworLQlfX2ludDY0X3QJCQlkaWZmOworKwlpbnQ2NF90CQkJCWRpZmY7CisgCWludAkJCQlzdGF0OworIAlib29sCQkJCWZpcnN0cmVjID0gdHJ1ZTsKKyAJaW50CQkJCWVycm9yOworQEAgLTQ2ODIsOCArNDY4Miw4IEBAIHhmc19idHJlZV9vdmVybGFwcGVkX3F1ZXJ5X3JhbmdlKAorIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CQkqaGtwOworIAl1bmlvbiB4ZnNfYnRyZWVfcmVjCQkqcmVjcDsKKyAJc3RydWN0IHhmc19idHJlZV9ibG9jawkJKmJsb2NrOworLQlfX2ludDY0X3QJCQlsZGlmZjsKKy0JX19pbnQ2NF90CQkJaGRpZmY7CisrCWludDY0X3QJCQkJbGRpZmY7CisrCWludDY0X3QJCQkJaGRpZmY7CisgCWludAkJCQlsZXZlbDsKKyAJc3RydWN0IHhmc19idWYJCQkqYnA7CisgCWludAkJCQlpOworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfYnRyZWUuaCBiL2xpYnhmcy94ZnNfYnRyZWUuaAoraW5kZXggMDVjZjM1YjUuLjNjMWZlZDIzIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19idHJlZS5oCisrKysgYi9saWJ4ZnMveGZzX2J0cmVlLmgKK0BAIC03Niw3ICs3Niw3IEBAIHVuaW9uIHhmc19idHJlZV9yZWMgeworICNkZWZpbmUJWEZTX0JUTlVNX1JNQVAJKCh4ZnNfYnRudW1fdClYRlNfQlROVU1fUk1BUGkpCisgI2RlZmluZQlYRlNfQlROVU1fUkVGQwkoKHhmc19idG51bV90KVhGU19CVE5VTV9SRUZDaSkKKyAKKy1fX3VpbnQzMl90IHhmc19idHJlZV9tYWdpYyhpbnQgY3JjLCB4ZnNfYnRudW1fdCBidG51bSk7CisrdWludDMyX3QgeGZzX2J0cmVlX21hZ2ljKGludCBjcmMsIHhmc19idG51bV90IGJ0bnVtKTsKKyAKKyAvKgorICAqIEZvciBsb2dnaW5nIHJlY29yZCBmaWVsZHMuCitAQCAtMTUwLDE0ICsxNTAsMTQgQEAgc3RydWN0IHhmc19idHJlZV9vcHMgeworIAkJCQkJICB1bmlvbiB4ZnNfYnRyZWVfcmVjICpyZWMpOworIAorIAkvKiBkaWZmZXJlbmNlIGJldHdlZW4ga2V5IHZhbHVlIGFuZCBjdXJzb3IgdmFsdWUgKi8KKy0JX19pbnQ2NF90ICgqa2V5X2RpZmYpKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIsCisrCWludDY0X3QgKCprZXlfZGlmZikoc3RydWN0IHhmc19idHJlZV9jdXIgKmN1ciwKKyAJCQkgICAgICB1bmlvbiB4ZnNfYnRyZWVfa2V5ICprZXkpOworIAorIAkvKgorIAkgKiBEaWZmZXJlbmNlIGJldHdlZW4ga2V5MiBhbmQga2V5MSAtLSBwb3NpdGl2ZSBpZiBrZXkxID4ga2V5MiwKKyAJICogbmVnYXRpdmUgaWYga2V5MSA8IGtleTIsIGFuZCB6ZXJvIGlmIGVxdWFsLgorIAkgKi8KKy0JX19pbnQ2NF90ICgqZGlmZl90d29fa2V5cykoc3RydWN0IHhmc19idHJlZV9jdXIgKmN1ciwKKysJaW50NjRfdCAoKmRpZmZfdHdvX2tleXMpKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIsCisgCQkJCSAgIHVuaW9uIHhmc19idHJlZV9rZXkgKmtleTEsCisgCQkJCSAgIHVuaW9uIHhmc19idHJlZV9rZXkgKmtleTIpOworIAorQEAgLTIxMywxMSArMjEzLDExIEBAIHR5cGVkZWYgc3RydWN0IHhmc19idHJlZV9jdXIKKyAJdW5pb24geGZzX2J0cmVlX2lyZWMJYmNfcmVjOwkvKiBjdXJyZW50IGluc2VydC9zZWFyY2ggcmVjb3JkIHZhbHVlICovCisgCXN0cnVjdCB4ZnNfYnVmCSpiY19idWZzW1hGU19CVFJFRV9NQVhMRVZFTFNdOwkvKiBidWYgcHRyIHBlciBsZXZlbCAqLworIAlpbnQJCWJjX3B0cnNbWEZTX0JUUkVFX01BWExFVkVMU107CS8qIGtleS9yZWNvcmQgIyAqLworLQlfX3VpbnQ4X3QJYmNfcmFbWEZTX0JUUkVFX01BWExFVkVMU107CS8qIHJlYWRhaGVhZCBiaXRzICovCisrCXVpbnQ4X3QJCWJjX3JhW1hGU19CVFJFRV9NQVhMRVZFTFNdOwkvKiByZWFkYWhlYWQgYml0cyAqLworICNkZWZpbmUJWEZTX0JUQ1VSX0xFRlRSQQkxCS8qIGxlZnQgc2libGluZyBoYXMgYmVlbiByZWFkLWFoZWFkICovCisgI2RlZmluZQlYRlNfQlRDVVJfUklHSFRSQQkyCS8qIHJpZ2h0IHNpYmxpbmcgaGFzIGJlZW4gcmVhZC1haGVhZCAqLworLQlfX3VpbnQ4X3QJYmNfbmxldmVsczsJLyogbnVtYmVyIG9mIGxldmVscyBpbiB0aGUgdHJlZSAqLworLQlfX3VpbnQ4X3QJYmNfYmxvY2tsb2c7CS8qIGxvZzIoYmxvY2tzaXplKSBvZiBidHJlZSBibG9ja3MgKi8KKysJdWludDhfdAkJYmNfbmxldmVsczsJLyogbnVtYmVyIG9mIGxldmVscyBpbiB0aGUgdHJlZSAqLworKwl1aW50OF90CQliY19ibG9ja2xvZzsJLyogbG9nMihibG9ja3NpemUpIG9mIGJ0cmVlIGJsb2NrcyAqLworIAl4ZnNfYnRudW1fdAliY19idG51bTsJLyogaWRlbnRpZmllcyB3aGljaCBidHJlZSB0eXBlICovCisgCWludAkJYmNfc3RhdG9mZjsJLyogb2Zmc2V0IG9mIGJ0cmUgc3RhdHMgYXJyYXkgKi8KKyAJdW5pb24geworQEAgLTMzMCw3ICszMzAsNyBAQCB4ZnNfYnRyZWVfaXNsYXN0YmxvY2soCisgICovCisgdm9pZAorIHhmc19idHJlZV9vZmZzZXRzKAorLQlfX2ludDY0X3QJCWZpZWxkcywJLyogYml0bWFzayBvZiBmaWVsZHMgKi8KKysJaW50NjRfdAkJCWZpZWxkcywJLyogYml0bWFzayBvZiBmaWVsZHMgKi8KKyAJY29uc3Qgc2hvcnQJCSpvZmZzZXRzLC8qIHRhYmxlIG9mIGZpZWxkIG9mZnNldHMgKi8KKyAJaW50CQkJbmJpdHMsCS8qIG51bWJlciBvZiBiaXRzIHRvIGluc3BlY3QgKi8KKyAJaW50CQkJKmZpcnN0LAkvKiBvdXRwdXQ6IGZpcnN0IGJ5dGUgb2Zmc2V0ICovCitAQCAtNDA4LDcgKzQwOCw3IEBAIGludCB4ZnNfYnRyZWVfbmV3X2lyb290KHN0cnVjdCB4ZnNfYnRyZWVfY3VyICosIGludCAqLCBpbnQgKik7CisgaW50IHhmc19idHJlZV9pbnNlcnQoc3RydWN0IHhmc19idHJlZV9jdXIgKiwgaW50ICopOworIGludCB4ZnNfYnRyZWVfZGVsZXRlKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICosIGludCAqKTsKKyBpbnQgeGZzX2J0cmVlX2dldF9yZWMoc3RydWN0IHhmc19idHJlZV9jdXIgKiwgdW5pb24geGZzX2J0cmVlX3JlYyAqKiwgaW50ICopOworLWludCB4ZnNfYnRyZWVfY2hhbmdlX293bmVyKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIsIF9fdWludDY0X3QgbmV3X293bmVyLAorK2ludCB4ZnNfYnRyZWVfY2hhbmdlX293bmVyKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIsIHVpbnQ2NF90IG5ld19vd25lciwKKyAJCQkgICBzdHJ1Y3QgbGlzdF9oZWFkICpidWZmZXJfbGlzdCk7CisgCisgLyoKK0BAIC00MzQsNyArNDM0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgeGZzX2J0cmVlX2dldF9udW1yZWNzKHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sgKmJsb2NrKQorIH0KKyAKKyBzdGF0aWMgaW5saW5lIHZvaWQgeGZzX2J0cmVlX3NldF9udW1yZWNzKHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sgKmJsb2NrLAorLQkJX191aW50MTZfdCBudW1yZWNzKQorKwkJdWludDE2X3QgbnVtcmVjcykKKyB7CisgCWJsb2NrLT5iYl9udW1yZWNzID0gY3B1X3RvX2JlMTYobnVtcmVjcyk7CisgfQorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfY2tzdW0uaCBiL2xpYnhmcy94ZnNfY2tzdW0uaAoraW5kZXggYTQxNmM3Y2IuLjgyMTFmNDhiIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19ja3N1bS5oCisrKysgYi9saWJ4ZnMveGZzX2Nrc3VtLmgKK0BAIC0xLDcgKzEsNyBAQAorICNpZm5kZWYgX1hGU19DS1NVTV9ICisgI2RlZmluZSBfWEZTX0NLU1VNX0ggMQorIAorLSNkZWZpbmUgWEZTX0NSQ19TRUVECSh+KF9fdWludDMyX3QpMCkKKysjZGVmaW5lIFhGU19DUkNfU0VFRAkofih1aW50MzJfdCkwKQorIAorIC8qCisgICogQ2FsY3VsYXRlIHRoZSBpbnRlcm1lZGlhdGUgY2hlY2tzdW0gZm9yIGEgYnVmZmVyIHRoYXQgaGFzIHRoZSBDUkMgZmllbGQKK0BAIC05LDExICs5LDExIEBACisgICogY2tzdW1fb2Zmc2V0IHBhcmFtZXRlci4gV2UgZG8gbm90IG1vZGlmeSB0aGUgYnVmZmVyIGR1cmluZyB2ZXJpZmljYXRpb24sCisgICogaGVuY2Ugd2UgaGF2ZSB0byBzcGxpdCB0aGUgQ1JDIGNhbGN1bGF0aW9uIGFjcm9zcyB0aGUgY2tzdW1fb2Zmc2V0LgorICAqLworLXN0YXRpYyBpbmxpbmUgX191aW50MzJfdAorK3N0YXRpYyBpbmxpbmUgdWludDMyX3QKKyB4ZnNfc3RhcnRfY2tzdW1fc2FmZShjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgY2tzdW1fb2Zmc2V0KQorIHsKKy0JX191aW50MzJfdCB6ZXJvID0gMDsKKy0JX191aW50MzJfdCBjcmM7CisrCXVpbnQzMl90IHplcm8gPSAwOworKwl1aW50MzJfdCBjcmM7CisgCisgCS8qIENhbGN1bGF0ZSBDUkMgdXAgdG8gdGhlIGNoZWNrc3VtLiAqLworIAljcmMgPSBjcmMzMmMoWEZTX0NSQ19TRUVELCBidWZmZXIsIGNrc3VtX29mZnNldCk7CitAQCAtMzAsNyArMzAsNyBAQCB4ZnNfc3RhcnRfY2tzdW1fc2FmZShjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgY2tzdW1fb2Zmc2V0KQorICAqIEZhc3QgQ1JDIG1ldGhvZCB3aGVyZSB0aGUgYnVmZmVyIGlzIG1vZGlmaWVkLiBDYWxsZXJzIG11c3QgaGF2ZSBleGNsdXNpdmUKKyAgKiBhY2Nlc3MgdG8gdGhlIGJ1ZmZlciB3aGlsZSB0aGUgY2FsY3VsYXRpb24gdGFrZXMgcGxhY2UuCisgICovCistc3RhdGljIGlubGluZSBfX3VpbnQzMl90Cisrc3RhdGljIGlubGluZSB1aW50MzJfdAorIHhmc19zdGFydF9ja3N1bV91cGRhdGUoY2hhciAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBsb25nIGNrc3VtX29mZnNldCkKKyB7CisgCS8qIHplcm8gdGhlIENSQyBmaWVsZCAqLworQEAgLTQ4LDcgKzQ4LDcgQEAgeGZzX3N0YXJ0X2Nrc3VtX3VwZGF0ZShjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcgY2tzdW1fb2Zmc2V0KQorICAqIHNvIHRoYXQgaXQgaXMgY29uc2lzdGVudCBvbiBkaXNrLgorICAqLworIHN0YXRpYyBpbmxpbmUgX19sZTMyCisteGZzX2VuZF9ja3N1bShfX3VpbnQzMl90IGNyYykKKyt4ZnNfZW5kX2Nrc3VtKHVpbnQzMl90IGNyYykKKyB7CisgCXJldHVybiB+Y3B1X3RvX2xlMzIoY3JjKTsKKyB9CitAQCAtNjIsNyArNjIsNyBAQCB4ZnNfZW5kX2Nrc3VtKF9fdWludDMyX3QgY3JjKQorIHN0YXRpYyBpbmxpbmUgdm9pZAorIHhmc191cGRhdGVfY2tzdW0oY2hhciAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBsb25nIGNrc3VtX29mZnNldCkKKyB7CistCV9fdWludDMyX3QgY3JjID0geGZzX3N0YXJ0X2Nrc3VtX3VwZGF0ZShidWZmZXIsIGxlbmd0aCwgY2tzdW1fb2Zmc2V0KTsKKysJdWludDMyX3QgY3JjID0geGZzX3N0YXJ0X2Nrc3VtX3VwZGF0ZShidWZmZXIsIGxlbmd0aCwgY2tzdW1fb2Zmc2V0KTsKKyAKKyAJKihfX2xlMzIgKikoYnVmZmVyICsgY2tzdW1fb2Zmc2V0KSA9IHhmc19lbmRfY2tzdW0oY3JjKTsKKyB9CitAQCAtNzMsNyArNzMsNyBAQCB4ZnNfdXBkYXRlX2Nrc3VtKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgbG9uZyBja3N1bV9vZmZzZXQpCisgc3RhdGljIGlubGluZSBpbnQKKyB4ZnNfdmVyaWZ5X2Nrc3VtKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdW5zaWduZWQgbG9uZyBja3N1bV9vZmZzZXQpCisgeworLQlfX3VpbnQzMl90IGNyYyA9IHhmc19zdGFydF9ja3N1bV9zYWZlKGJ1ZmZlciwgbGVuZ3RoLCBja3N1bV9vZmZzZXQpOworKwl1aW50MzJfdCBjcmMgPSB4ZnNfc3RhcnRfY2tzdW1fc2FmZShidWZmZXIsIGxlbmd0aCwgY2tzdW1fb2Zmc2V0KTsKKyAKKyAJcmV0dXJuICooX19sZTMyICopKGJ1ZmZlciArIGNrc3VtX29mZnNldCkgPT0geGZzX2VuZF9ja3N1bShjcmMpOworIH0KK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2RhX2J0cmVlLmMgYi9saWJ4ZnMveGZzX2RhX2J0cmVlLmMKK2luZGV4IGJjMTJmNThmLi4wODQ0N2JlOCAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGFfYnRyZWUuYworKysrIGIvbGlieGZzL3hmc19kYV9idHJlZS5jCitAQCAtMTk0Nyw3ICsxOTQ3LDcgQEAgeGZzX2RhM19wYXRoX3NoaWZ0KAorICAqIFRoaXMgaXMgaW1wbGVtZW50ZWQgd2l0aCBzb21lIHNvdXJjZS1sZXZlbCBsb29wIHVucm9sbGluZy4KKyAgKi8KKyB4ZnNfZGFoYXNoX3QKKy14ZnNfZGFfaGFzaG5hbWUoY29uc3QgX191aW50OF90ICpuYW1lLCBpbnQgbmFtZWxlbikKKyt4ZnNfZGFfaGFzaG5hbWUoY29uc3QgdWludDhfdCAqbmFtZSwgaW50IG5hbWVsZW4pCisgeworIAl4ZnNfZGFoYXNoX3QgaGFzaDsKKyAKK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2RhX2J0cmVlLmggYi9saWJ4ZnMveGZzX2RhX2J0cmVlLmgKK2luZGV4IDRlMjljYjZhLi5hZTZkZTE3NCAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGFfYnRyZWUuaAorKysrIGIvbGlieGZzL3hmc19kYV9idHJlZS5oCitAQCAtNjAsMTAgKzYwLDEwIEBAIGVudW0geGZzX2RhY21wIHsKKyAgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZGFfYXJncyB7CisgCXN0cnVjdCB4ZnNfZGFfZ2VvbWV0cnkgKmdlbzsJLyogZGEgYmxvY2sgZ2VvbWV0cnkgKi8KKy0JY29uc3QgX191aW50OF90CSpuYW1lOwkJLyogc3RyaW5nIChtYXliZSBub3QgTlVMTCB0ZXJtaW5hdGVkKSAqLworKwljb25zdCB1aW50OF90CQkqbmFtZTsJCS8qIHN0cmluZyAobWF5YmUgbm90IE5VTEwgdGVybWluYXRlZCkgKi8KKyAJaW50CQluYW1lbGVuOwkvKiBsZW5ndGggb2Ygc3RyaW5nIChtYXliZSBubyBOVUxMKSAqLworLQlfX3VpbnQ4X3QJZmlsZXR5cGU7CS8qIGZpbGV0eXBlIG9mIGlub2RlIGZvciBkaXJlY3RvcmllcyAqLworLQlfX3VpbnQ4X3QJKnZhbHVlOwkJLyogc2V0IG9mIGJ5dGVzIChtYXliZSBjb250YWluIE5VTExzKSAqLworKwl1aW50OF90CQlmaWxldHlwZTsJLyogZmlsZXR5cGUgb2YgaW5vZGUgZm9yIGRpcmVjdG9yaWVzICovCisrCXVpbnQ4X3QJCSp2YWx1ZTsJCS8qIHNldCBvZiBieXRlcyAobWF5YmUgY29udGFpbiBOVUxMcykgKi8KKyAJaW50CQl2YWx1ZWxlbjsJLyogbGVuZ3RoIG9mIHZhbHVlICovCisgCWludAkJZmxhZ3M7CQkvKiBhcmd1bWVudCBmbGFncyAoZWc6IEFUVFJfTk9DUkVBVEUpICovCisgCXhmc19kYWhhc2hfdAloYXNodmFsOwkvKiBoYXNoIHZhbHVlIG9mIG5hbWUgKi8KK0BAIC0yMDcsNyArMjA3LDcgQEAgaW50CXhmc19kYV9yZWFkYV9idWYoc3RydWN0IHhmc19pbm9kZSAqZHAsIHhmc19kYWJsa190IGJubywKKyBpbnQJeGZzX2RhX3Nocmlua19pbm9kZSh4ZnNfZGFfYXJnc190ICphcmdzLCB4ZnNfZGFibGtfdCBkZWFkX2Jsa25vLAorIAkJCQkJICBzdHJ1Y3QgeGZzX2J1ZiAqZGVhZF9idWYpOworIAorLXVpbnQgeGZzX2RhX2hhc2huYW1lKGNvbnN0IF9fdWludDhfdCAqbmFtZV9zdHJpbmcsIGludCBuYW1lX2xlbmd0aCk7CisrdWludCB4ZnNfZGFfaGFzaG5hbWUoY29uc3QgdWludDhfdCAqbmFtZV9zdHJpbmcsIGludCBuYW1lX2xlbmd0aCk7CisgZW51bSB4ZnNfZGFjbXAgeGZzX2RhX2NvbXBuYW1lKHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncywKKyAJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqbmFtZSwgaW50IGxlbik7CisgCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kYV9mb3JtYXQuYyBiL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmMKK2luZGV4IDJiNzMyYjNjLi5mMzAwMDRmNiAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmMKKysrKyBiL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmMKK0BAIC00OSw3ICs0OSw3IEBAIHhmc19kaXIzX3NmX2VudHNpemUoCisgCXN0cnVjdCB4ZnNfZGlyMl9zZl9oZHIJKmhkciwKKyAJaW50CQkJbGVuKQorIHsKKy0JcmV0dXJuIHhmc19kaXIyX3NmX2VudHNpemUoaGRyLCBsZW4pICsgc2l6ZW9mKF9fdWludDhfdCk7CisrCXJldHVybiB4ZnNfZGlyMl9zZl9lbnRzaXplKGhkciwgbGVuKSArIHNpemVvZih1aW50OF90KTsKKyB9CisgCisgc3RhdGljIHN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSAqCitAQCAtNzcsNyArNzcsNyBAQCB4ZnNfZGlyM19zZl9uZXh0ZW50cnkoCisgICogbm90IG5lY2Vzc2FyeS4gRm9yIG5vbi1maWxldHlwZSBlbmFibGUgZGlyZWN0b3JpZXMsIHRoZSB0eXBlIGlzIGFsd2F5cworICAqIHVua25vd24gYW5kIHdlIG5ldmVyIHN0b3JlIHRoZSB2YWx1ZS4KKyAgKi8KKy1zdGF0aWMgX191aW50OF90Cisrc3RhdGljIHVpbnQ4X3QKKyB4ZnNfZGlyMl9zZmVfZ2V0X2Z0eXBlKAorIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXApCisgeworQEAgLTg3LDE2ICs4NywxNiBAQCB4ZnNfZGlyMl9zZmVfZ2V0X2Z0eXBlKAorIHN0YXRpYyB2b2lkCisgeGZzX2RpcjJfc2ZlX3B1dF9mdHlwZSgKKyAJc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwLAorLQlfX3VpbnQ4X3QJCWZ0eXBlKQorKwl1aW50OF90CQkJZnR5cGUpCisgeworIAlBU1NFUlQoZnR5cGUgPCBYRlNfRElSM19GVF9NQVgpOworIH0KKyAKKy1zdGF0aWMgX191aW50OF90Cisrc3RhdGljIHVpbnQ4X3QKKyB4ZnNfZGlyM19zZmVfZ2V0X2Z0eXBlKAorIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXApCisgeworLQlfX3VpbnQ4X3QJZnR5cGU7CisrCXVpbnQ4X3QJCWZ0eXBlOworIAorIAlmdHlwZSA9IHNmZXAtPm5hbWVbc2ZlcC0+bmFtZWxlbl07CisgCWlmIChmdHlwZSA+PSBYRlNfRElSM19GVF9NQVgpCitAQCAtMTA3LDcgKzEwNyw3IEBAIHhmc19kaXIzX3NmZV9nZXRfZnR5cGUoCisgc3RhdGljIHZvaWQKKyB4ZnNfZGlyM19zZmVfcHV0X2Z0eXBlKAorIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXAsCistCV9fdWludDhfdAkJZnR5cGUpCisrCXVpbnQ4X3QJCQlmdHlwZSkKKyB7CisgCUFTU0VSVChmdHlwZSA8IFhGU19ESVIzX0ZUX01BWCk7CisgCitAQCAtMTI0LDcgKzEyNCw3IEBAIHhmc19kaXIzX3NmZV9wdXRfZnR5cGUoCisgc3RhdGljIHhmc19pbm9fdAorIHhmc19kaXIyX3NmX2dldF9pbm8oCisgCXN0cnVjdCB4ZnNfZGlyMl9zZl9oZHIJKmhkciwKKy0JX191aW50OF90CQkqZnJvbSkKKysJdWludDhfdAkJCSpmcm9tKQorIHsKKyAJaWYgKGhkci0+aThjb3VudCkKKyAJCXJldHVybiBnZXRfdW5hbGlnbmVkX2JlNjQoZnJvbSkgJiAweDAwZmZmZmZmZmZmZmZmZmZVTEw7CitAQCAtMTM1LDcgKzEzNSw3IEBAIHhmc19kaXIyX3NmX2dldF9pbm8oCisgc3RhdGljIHZvaWQKKyB4ZnNfZGlyMl9zZl9wdXRfaW5vKAorIAlzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyCSpoZHIsCistCV9fdWludDhfdAkJKnRvLAorKwl1aW50OF90CQkJKnRvLAorIAl4ZnNfaW5vX3QJCWlubykKKyB7CisgCUFTU0VSVCgoaW5vICYgMHhmZjAwMDAwMDAwMDAwMDAwVUxMKSA9PSAwKTsKK0BAIC0yMjUsNyArMjI1LDcgQEAgeGZzX2RpcjNfc2ZlX3B1dF9pbm8oCisgCisgI2RlZmluZSBYRlNfRElSM19EQVRBX0VOVFNJWkUobikJCQkJCVwKKyAJcm91bmRfdXAoKG9mZnNldG9mKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5LCBuYW1lWzBdKSArIChuKSArCVwKKy0JCSBzaXplb2YoeGZzX2RpcjJfZGF0YV9vZmZfdCkgKyBzaXplb2YoX191aW50OF90KSksCVwKKysJCSBzaXplb2YoeGZzX2RpcjJfZGF0YV9vZmZfdCkgKyBzaXplb2YodWludDhfdCkpLAlcCisgCQlYRlNfRElSMl9EQVRBX0FMSUdOKQorIAorIHN0YXRpYyBpbnQKK0BAIC0yNDIsNyArMjQyLDcgQEAgeGZzX2RpcjNfZGF0YV9lbnRzaXplKAorIAlyZXR1cm4gWEZTX0RJUjNfREFUQV9FTlRTSVpFKG4pOworIH0KKyAKKy1zdGF0aWMgX191aW50OF90Cisrc3RhdGljIHVpbnQ4X3QKKyB4ZnNfZGlyMl9kYXRhX2dldF9mdHlwZSgKKyAJc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCkKKyB7CitAQCAtMjUyLDE2ICsyNTIsMTYgQEAgeGZzX2RpcjJfZGF0YV9nZXRfZnR5cGUoCisgc3RhdGljIHZvaWQKKyB4ZnNfZGlyMl9kYXRhX3B1dF9mdHlwZSgKKyAJc3RydWN0IHhmc19kaXIyX2RhdGFfZW50cnkgKmRlcCwKKy0JX191aW50OF90CQlmdHlwZSkKKysJdWludDhfdAkJCWZ0eXBlKQorIHsKKyAJQVNTRVJUKGZ0eXBlIDwgWEZTX0RJUjNfRlRfTUFYKTsKKyB9CisgCistc3RhdGljIF9fdWludDhfdAorK3N0YXRpYyB1aW50OF90CisgeGZzX2RpcjNfZGF0YV9nZXRfZnR5cGUoCisgCXN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXApCisgeworLQlfX3VpbnQ4X3QJZnR5cGUgPSBkZXAtPm5hbWVbZGVwLT5uYW1lbGVuXTsKKysJdWludDhfdAkJZnR5cGUgPSBkZXAtPm5hbWVbZGVwLT5uYW1lbGVuXTsKKyAKKyAJaWYgKGZ0eXBlID49IFhGU19ESVIzX0ZUX01BWCkKKyAJCXJldHVybiBYRlNfRElSM19GVF9VTktOT1dOOworQEAgLTI3MSw3ICsyNzEsNyBAQCB4ZnNfZGlyM19kYXRhX2dldF9mdHlwZSgKKyBzdGF0aWMgdm9pZAorIHhmc19kaXIzX2RhdGFfcHV0X2Z0eXBlKAorIAlzdHJ1Y3QgeGZzX2RpcjJfZGF0YV9lbnRyeSAqZGVwLAorLQlfX3VpbnQ4X3QJCXR5cGUpCisrCXVpbnQ4X3QJCQl0eXBlKQorIHsKKyAJQVNTRVJUKHR5cGUgPCBYRlNfRElSM19GVF9NQVgpOworIAlBU1NFUlQoZGVwLT5uYW1lbGVuICE9IDApOworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfZGFfZm9ybWF0LmggYi9saWJ4ZnMveGZzX2RhX2Zvcm1hdC5oCitpbmRleCA5YTQ5MmE5ZS4uMzc3MWVkY2IgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2RhX2Zvcm1hdC5oCisrKysgYi9saWJ4ZnMveGZzX2RhX2Zvcm1hdC5oCitAQCAtMTExLDExICsxMTEsMTEgQEAgc3RydWN0IHhmc19kYTNfaW50bm9kZSB7CisgICogYXBwcm9wcmlhdGUuCisgICovCisgc3RydWN0IHhmc19kYTNfaWNub2RlX2hkciB7CistCV9fdWludDMyX3QJZm9ydzsKKy0JX191aW50MzJfdAliYWNrOworLQlfX3VpbnQxNl90CW1hZ2ljOworLQlfX3VpbnQxNl90CWNvdW50OworLQlfX3VpbnQxNl90CWxldmVsOworKwl1aW50MzJfdAlmb3J3OworKwl1aW50MzJfdAliYWNrOworKwl1aW50MTZfdAltYWdpYzsKKysJdWludDE2X3QJY291bnQ7CisrCXVpbnQxNl90CWxldmVsOworIH07CisgCisgLyoKK0BAIC0xODcsMTQgKzE4NywxNCBAQCBzdHJ1Y3QgeGZzX2RhM19pY25vZGVfaGRyIHsKKyAvKgorICAqIEJ5dGUgb2Zmc2V0IGluIGRhdGEgYmxvY2sgYW5kIHNob3J0Zm9ybSBlbnRyeS4KKyAgKi8KKy10eXBlZGVmCV9fdWludDE2X3QJeGZzX2RpcjJfZGF0YV9vZmZfdDsKKyt0eXBlZGVmIHVpbnQxNl90CXhmc19kaXIyX2RhdGFfb2ZmX3Q7CisgI2RlZmluZQlOVUxMREFUQU9GRgkweGZmZmZVCisgdHlwZWRlZiB1aW50CQl4ZnNfZGlyMl9kYXRhX2FvZmZfdDsJLyogYXJndW1lbnQgZm9ybSAqLworIAorIC8qCisgICogT2Zmc2V0IGluIGRhdGEgc3BhY2Ugb2YgYSBkYXRhIGVudHJ5LgorICAqLworLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGlyMl9kYXRhcHRyX3Q7CisrdHlwZWRlZiB1aW50MzJfdAl4ZnNfZGlyMl9kYXRhcHRyX3Q7CisgI2RlZmluZQlYRlNfRElSMl9NQVhfREFUQVBUUgkoKHhmc19kaXIyX2RhdGFwdHJfdCkweGZmZmZmZmZmKQorICNkZWZpbmUJWEZTX0RJUjJfTlVMTF9EQVRBUFRSCSgoeGZzX2RpcjJfZGF0YXB0cl90KTApCisgCitAQCAtMjA2LDcgKzIwNiw3IEBAIHR5cGVkZWYJeGZzX29mZl90CXhmc19kaXIyX29mZl90OworIC8qCisgICogRGlyZWN0b3J5IGJsb2NrIG51bWJlciAobG9naWNhbCBkaXJibGsgaW4gZmlsZSkKKyAgKi8KKy10eXBlZGVmCV9fdWludDMyX3QJeGZzX2RpcjJfZGJfdDsKKyt0eXBlZGVmIHVpbnQzMl90CXhmc19kaXIyX2RiX3Q7CisgCisgI2RlZmluZSBYRlNfSU5PMzJfU0laRQk0CisgI2RlZmluZSBYRlNfSU5PNjRfU0laRQk4CitAQCAtMjI2LDkgKzIyNiw5IEBAIHR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGlyMl9kYl90OworICAqIG92ZXIgdGhlbS4KKyAgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZGlyMl9zZl9oZHIgeworLQlfX3VpbnQ4X3QJCWNvdW50OwkJLyogY291bnQgb2YgZW50cmllcyAqLworLQlfX3VpbnQ4X3QJCWk4Y291bnQ7CS8qIGNvdW50IG9mIDgtYnl0ZSBpbm9kZSAjcyAqLworLQlfX3VpbnQ4X3QJCXBhcmVudFs4XTsJLyogcGFyZW50IGRpciBpbm9kZSBudW1iZXIgKi8KKysJdWludDhfdAkJCWNvdW50OwkJLyogY291bnQgb2YgZW50cmllcyAqLworKwl1aW50OF90CQkJaThjb3VudDsJLyogY291bnQgb2YgOC1ieXRlIGlub2RlICNzICovCisrCXVpbnQ4X3QJCQlwYXJlbnRbOF07CS8qIHBhcmVudCBkaXIgaW5vZGUgbnVtYmVyICovCisgfSBfX3BhY2tlZCB4ZnNfZGlyMl9zZl9oZHJfdDsKKyAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSB7CitAQCAtNDQ3LDExICs0NDcsMTEgQEAgc3RydWN0IHhmc19kaXIzX2xlYWZfaGRyIHsKKyB9OworIAorIHN0cnVjdCB4ZnNfZGlyM19pY2xlYWZfaGRyIHsKKy0JX191aW50MzJfdAkJZm9ydzsKKy0JX191aW50MzJfdAkJYmFjazsKKy0JX191aW50MTZfdAkJbWFnaWM7CistCV9fdWludDE2X3QJCWNvdW50OworLQlfX3VpbnQxNl90CQlzdGFsZTsKKysJdWludDMyX3QJCWZvcnc7CisrCXVpbnQzMl90CQliYWNrOworKwl1aW50MTZfdAkJbWFnaWM7CisrCXVpbnQxNl90CQljb3VudDsKKysJdWludDE2X3QJCXN0YWxlOworIH07CisgCisgLyoKK0BAIC01MzgsMTAgKzUzOCwxMCBAQCBzdHJ1Y3QgeGZzX2RpcjNfZnJlZSB7CisgICogeGZzX2RpcjNfZnJlZV9oZHJfZnJvbV9kaXNrL3hmc19kaXIzX2ZyZWVfaGRyX3RvX2Rpc2suCisgICovCisgc3RydWN0IHhmc19kaXIzX2ljZnJlZV9oZHIgeworLQlfX3VpbnQzMl90CW1hZ2ljOworLQlfX3VpbnQzMl90CWZpcnN0ZGI7CistCV9fdWludDMyX3QJbnZhbGlkOworLQlfX3VpbnQzMl90CW51c2VkOworKwl1aW50MzJfdAltYWdpYzsKKysJdWludDMyX3QJZmlyc3RkYjsKKysJdWludDMyX3QJbnZhbGlkOworKwl1aW50MzJfdAludXNlZDsKKyAKKyB9OworIAorQEAgLTYzMiwxMCArNjMyLDEwIEBAIHR5cGVkZWYgc3RydWN0IHhmc19hdHRyX3Nob3J0Zm9ybSB7CisgCQlfX3U4CXBhZGRpbmc7CisgCX0gaGRyOworIAlzdHJ1Y3QgeGZzX2F0dHJfc2ZfZW50cnkgeworLQkJX191aW50OF90IG5hbWVsZW47CS8qIGFjdHVhbCBsZW5ndGggb2YgbmFtZSAobm8gTlVMTCkgKi8KKy0JCV9fdWludDhfdCB2YWx1ZWxlbjsJLyogYWN0dWFsIGxlbmd0aCBvZiB2YWx1ZSAobm8gTlVMTCkgKi8KKy0JCV9fdWludDhfdCBmbGFnczsJLyogZmxhZ3MgYml0cyAoc2VlIHhmc19hdHRyX2xlYWYuaCkgKi8KKy0JCV9fdWludDhfdCBuYW1ldmFsWzFdOwkvKiBuYW1lICYgdmFsdWUgYnl0ZXMgY29uY2F0ZW5hdGVkICovCisrCQl1aW50OF90IG5hbWVsZW47CS8qIGFjdHVhbCBsZW5ndGggb2YgbmFtZSAobm8gTlVMTCkgKi8KKysJCXVpbnQ4X3QgdmFsdWVsZW47CS8qIGFjdHVhbCBsZW5ndGggb2YgdmFsdWUgKG5vIE5VTEwpICovCisrCQl1aW50OF90IGZsYWdzOwkvKiBmbGFncyBiaXRzIChzZWUgeGZzX2F0dHJfbGVhZi5oKSAqLworKwkJdWludDhfdCBuYW1ldmFsWzFdOwkvKiBuYW1lICYgdmFsdWUgYnl0ZXMgY29uY2F0ZW5hdGVkICovCisgCX0gbGlzdFsxXTsJCQkvKiB2YXJpYWJsZSBzaXplZCBhcnJheSAqLworIH0geGZzX2F0dHJfc2hvcnRmb3JtX3Q7CisgCitAQCAtNzI1LDIyICs3MjUsMjIgQEAgc3RydWN0IHhmc19hdHRyM19sZWFmYmxvY2sgeworICAqIGluY29yZSwgbmV1dHJhbCB2ZXJzaW9uIG9mIHRoZSBhdHRyaWJ1dGUgbGVhZiBoZWFkZXIKKyAgKi8KKyBzdHJ1Y3QgeGZzX2F0dHIzX2ljbGVhZl9oZHIgeworLQlfX3VpbnQzMl90CWZvcnc7CistCV9fdWludDMyX3QJYmFjazsKKy0JX191aW50MTZfdAltYWdpYzsKKy0JX191aW50MTZfdAljb3VudDsKKy0JX191aW50MTZfdAl1c2VkYnl0ZXM7CisrCXVpbnQzMl90CWZvcnc7CisrCXVpbnQzMl90CWJhY2s7CisrCXVpbnQxNl90CW1hZ2ljOworKwl1aW50MTZfdAljb3VudDsKKysJdWludDE2X3QJdXNlZGJ5dGVzOworIAkvKgorIAkgKiBmaXJzdHVzZWQgaXMgMzItYml0IGhlcmUgaW5zdGVhZCBvZiAxNi1iaXQgbGlrZSB0aGUgb24tZGlzayB2YXJpYW50CisgCSAqIHRvIHN1cHBvcnQgbWF4aW11bSBmc2Igc2l6ZSBvZiA2NGsgd2l0aG91dCBvdmVyZmxvdyBpc3N1ZXMgdGhyb3VnaG91dAorIAkgKiB0aGUgYXR0ciBjb2RlLiBJbnN0ZWFkLCB0aGUgb3ZlcmZsb3cgY29uZGl0aW9uIGlzIGhhbmRsZWQgb24KKyAJICogY29udmVyc2lvbiB0by9mcm9tIGRpc2suCisgCSAqLworLQlfX3VpbnQzMl90CWZpcnN0dXNlZDsKKysJdWludDMyX3QJZmlyc3R1c2VkOworIAlfX3U4CQlob2xlczsKKyAJc3RydWN0IHsKKy0JCV9fdWludDE2X3QJYmFzZTsKKy0JCV9fdWludDE2X3QJc2l6ZTsKKysJCXVpbnQxNl90CWJhc2U7CisrCQl1aW50MTZfdAlzaXplOworIAl9IGZyZWVtYXBbWEZTX0FUVFJfTEVBRl9NQVBTSVpFXTsKKyB9OworIAorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfZGlyMi5oIGIvbGlieGZzL3hmc19kaXIyLmgKK2luZGV4IGQ2ZTZkOWQxLi4yMWM4ZjhiZiAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGlyMi5oCisrKysgYi9saWJ4ZnMveGZzX2RpcjIuaAorQEAgLTQ3LDkgKzQ3LDkgQEAgc3RydWN0IHhmc19kaXJfb3BzIHsKKyAJc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICoKKyAJCSgqc2ZfbmV4dGVudHJ5KShzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyICpoZHIsCisgCQkJCXN0cnVjdCB4ZnNfZGlyMl9zZl9lbnRyeSAqc2ZlcCk7CistCV9fdWludDhfdCAoKnNmX2dldF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwKTsKKysJdWludDhfdCAoKnNmX2dldF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwKTsKKyAJdm9pZAkoKnNmX3B1dF9mdHlwZSkoc3RydWN0IHhmc19kaXIyX3NmX2VudHJ5ICpzZmVwLAorLQkJCQlfX3VpbnQ4X3QgZnR5cGUpOworKwkJCQl1aW50OF90IGZ0eXBlKTsKKyAJeGZzX2lub190ICgqc2ZfZ2V0X2lubykoc3RydWN0IHhmc19kaXIyX3NmX2hkciAqaGRyLAorIAkJCQlzdHJ1Y3QgeGZzX2RpcjJfc2ZfZW50cnkgKnNmZXApOworIAl2b2lkCSgqc2ZfcHV0X2lubykoc3RydWN0IHhmc19kaXIyX3NmX2hkciAqaGRyLAorQEAgLTYwLDkgKzYwLDkgQEAgc3RydWN0IHhmc19kaXJfb3BzIHsKKyAJCQkJICAgICB4ZnNfaW5vX3QgaW5vKTsKKyAKKyAJaW50CSgqZGF0YV9lbnRzaXplKShpbnQgbGVuKTsKKy0JX191aW50OF90ICgqZGF0YV9nZXRfZnR5cGUpKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXApOworKwl1aW50OF90ICgqZGF0YV9nZXRfZnR5cGUpKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXApOworIAl2b2lkCSgqZGF0YV9wdXRfZnR5cGUpKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXAsCistCQkJCV9fdWludDhfdCBmdHlwZSk7CisrCQkJCXVpbnQ4X3QgZnR5cGUpOworIAlfX2JlMTYgKiAoKmRhdGFfZW50cnlfdGFnX3ApKHN0cnVjdCB4ZnNfZGlyMl9kYXRhX2VudHJ5ICpkZXApOworIAlzdHJ1Y3QgeGZzX2RpcjJfZGF0YV9mcmVlICoKKyAJCSgqZGF0YV9iZXN0ZnJlZV9wKShzdHJ1Y3QgeGZzX2RpcjJfZGF0YV9oZHIgKmhkcik7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kaXIyX2xlYWYuYyBiL2xpYnhmcy94ZnNfZGlyMl9sZWFmLmMKK2luZGV4IGY4MGQ5MWZjLi40MGEzNWI4NCAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGlyMl9sZWFmLmMKKysrKyBiL2xpYnhmcy94ZnNfZGlyMl9sZWFmLmMKK0BAIC0xNDIsNyArMTQyLDcgQEAgeGZzX2RpcjNfbGVhZl9jaGVja19pbnQoCisgc3RhdGljIGJvb2wKKyB4ZnNfZGlyM19sZWFmX3ZlcmlmeSgKKyAJc3RydWN0IHhmc19idWYJCSpicCwKKy0JX191aW50MTZfdAkJbWFnaWMpCisrCXVpbnQxNl90CQltYWdpYykKKyB7CisgCXN0cnVjdCB4ZnNfbW91bnQJKm1wID0gYnAtPmJfdGFyZ2V0LT5idF9tb3VudDsKKyAJc3RydWN0IHhmc19kaXIyX2xlYWYJKmxlYWYgPSBicC0+Yl9hZGRyOworQEAgLTE1MSw3ICsxNTEsNyBAQCB4ZnNfZGlyM19sZWFmX3ZlcmlmeSgKKyAKKyAJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2NyYygmbXAtPm1fc2IpKSB7CisgCQlzdHJ1Y3QgeGZzX2RpcjNfbGVhZl9oZHIgKmxlYWYzID0gYnAtPmJfYWRkcjsKKy0JCV9fdWludDE2X3QJCW1hZ2ljMzsKKysJCXVpbnQxNl90CQltYWdpYzM7CisgCisgCQltYWdpYzMgPSAobWFnaWMgPT0gWEZTX0RJUjJfTEVBRjFfTUFHSUMpID8gWEZTX0RJUjNfTEVBRjFfTUFHSUMKKyAJCQkJCQkJIDogWEZTX0RJUjNfTEVBRk5fTUFHSUM7CitAQCAtMTc1LDcgKzE3NSw3IEBAIHhmc19kaXIzX2xlYWZfdmVyaWZ5KAorIHN0YXRpYyB2b2lkCisgX19yZWFkX3ZlcmlmeSgKKyAJc3RydWN0IHhmc19idWYgICpicCwKKy0JX191aW50MTZfdAltYWdpYykKKysJdWludDE2X3QJbWFnaWMpCisgeworIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IGJwLT5iX3RhcmdldC0+YnRfbW91bnQ7CisgCitAQCAtMTkyLDcgKzE5Miw3IEBAIF9fcmVhZF92ZXJpZnkoCisgc3RhdGljIHZvaWQKKyBfX3dyaXRlX3ZlcmlmeSgKKyAJc3RydWN0IHhmc19idWYgICpicCwKKy0JX191aW50MTZfdAltYWdpYykKKysJdWludDE2X3QJbWFnaWMpCisgeworIAlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IGJwLT5iX3RhcmdldC0+YnRfbW91bnQ7CisgCXN0cnVjdCB4ZnNfYnVmX2xvZ19pdGVtCSpiaXAgPSBicC0+Yl9mc3ByaXY7CitAQCAtMjk2LDcgKzI5Niw3IEBAIHhmc19kaXIzX2xlYWZfaW5pdCgKKyAJc3RydWN0IHhmc190cmFucwkqdHAsCisgCXN0cnVjdCB4ZnNfYnVmCQkqYnAsCisgCXhmc19pbm9fdAkJb3duZXIsCistCV9fdWludDE2X3QJCXR5cGUpCisrCXVpbnQxNl90CQl0eXBlKQorIHsKKyAJc3RydWN0IHhmc19kaXIyX2xlYWYJKmxlYWYgPSBicC0+Yl9hZGRyOworIAorQEAgLTM0MCw3ICszNDAsNyBAQCB4ZnNfZGlyM19sZWFmX2dldF9idWYoCisgCXhmc19kYV9hcmdzX3QJCSphcmdzLAorIAl4ZnNfZGlyMl9kYl90CQlibm8sCisgCXN0cnVjdCB4ZnNfYnVmCQkqKmJwcCwKKy0JX191aW50MTZfdAkJbWFnaWMpCisrCXVpbnQxNl90CQltYWdpYykKKyB7CisgCXN0cnVjdCB4ZnNfaW5vZGUJKmRwID0gYXJncy0+ZHA7CisgCXN0cnVjdCB4ZnNfdHJhbnMJKnRwID0gYXJncy0+dHJhbnM7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kaXIyX3ByaXYuaCBiL2xpYnhmcy94ZnNfZGlyMl9wcml2LmgKK2luZGV4IDM5Zjg2MDRmLi4wMTFkZjRkYSAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZGlyMl9wcml2LmgKKysrKyBiL2xpYnhmcy94ZnNfZGlyMl9wcml2LmgKK0BAIC02OSw3ICs2OSw3IEBAIGV4dGVybiB2b2lkIHhmc19kaXIzX2xlYWZfY29tcGFjdF94MShzdHJ1Y3QgeGZzX2RpcjNfaWNsZWFmX2hkciAqbGVhZmhkciwKKyAJCXN0cnVjdCB4ZnNfZGlyMl9sZWFmX2VudHJ5ICplbnRzLCBpbnQgKmluZGV4cCwKKyAJCWludCAqbG93c3RhbGVwLCBpbnQgKmhpZ2hzdGFsZXAsIGludCAqbG93bG9ncCwgaW50ICpoaWdobG9ncCk7CisgZXh0ZXJuIGludCB4ZnNfZGlyM19sZWFmX2dldF9idWYoc3RydWN0IHhmc19kYV9hcmdzICphcmdzLCB4ZnNfZGlyMl9kYl90IGJubywKKy0JCXN0cnVjdCB4ZnNfYnVmICoqYnBwLCBfX3VpbnQxNl90IG1hZ2ljKTsKKysJCXN0cnVjdCB4ZnNfYnVmICoqYnBwLCB1aW50MTZfdCBtYWdpYyk7CisgZXh0ZXJuIHZvaWQgeGZzX2RpcjNfbGVhZl9sb2dfZW50cyhzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MsCisgCQlzdHJ1Y3QgeGZzX2J1ZiAqYnAsIGludCBmaXJzdCwgaW50IGxhc3QpOworIGV4dGVybiB2b2lkIHhmc19kaXIzX2xlYWZfbG9nX2hlYWRlcihzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MsCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19kaXIyX3NmLmMgYi9saWJ4ZnMveGZzX2RpcjJfc2YuYworaW5kZXggMTk1ZjgxNmQuLjBjNDUzOTg4IDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19kaXIyX3NmLmMKKysrKyBiL2xpYnhmcy94ZnNfZGlyMl9zZi5jCitAQCAtMTI1LDcgKzEyNSw3IEBAIHhmc19kaXIyX2Jsb2NrX3Nmc2l6ZSgKKyAJCSAqIENhbGN1bGF0ZSB0aGUgbmV3IHNpemUsIHNlZSBpZiB3ZSBzaG91bGQgZ2l2ZSB1cCB5ZXQuCisgCQkgKi8KKyAJCXNpemUgPSB4ZnNfZGlyMl9zZl9oZHJfc2l6ZShpOGNvdW50KSArCS8qIGhlYWRlciAqLworLQkJICAgICAgIGNvdW50ICogMyAqIHNpemVvZihfX3U4KSArCS8qIG5hbWVsZW4gKyBvZmZzZXQgKi8KKysJCSAgICAgICBjb3VudCAqIDMgKiBzaXplb2YodTgpICsJCS8qIG5hbWVsZW4gKyBvZmZzZXQgKi8KKyAJCSAgICAgICBuYW1lbGVuICsJCQkvKiBuYW1lICovCisgCQkgICAgICAgKGk4Y291bnQgPwkJCS8qIGludW1iZXIgKi8KKyAJCQkJY291bnQgKiBYRlNfSU5PNjRfU0laRSA6CitAQCAtNjQ1LDcgKzY0NSw3IEBAIHhmc19kaXIyX3NmX3ZlcmlmeSgKKyAJaW50CQkJCW9mZnNldDsKKyAJaW50CQkJCXNpemU7CisgCWludAkJCQllcnJvcjsKKy0JX191aW50OF90CQkJZmlsZXR5cGU7CisrCXVpbnQ4X3QJCQkJZmlsZXR5cGU7CisgCisgCUFTU0VSVChpcC0+aV9kLmRpX2Zvcm1hdCA9PSBYRlNfRElOT0RFX0ZNVF9MT0NBTCk7CisgCS8qCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19mb3JtYXQuaCBiL2xpYnhmcy94ZnNfZm9ybWF0LmgKK2luZGV4IDRjM2VkMWZkLi5hNTNmMDM1ZiAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfZm9ybWF0LmgKKysrKyBiL2xpYnhmcy94ZnNfZm9ybWF0LmgKK0BAIC0xMDMsOCArMTAzLDggQEAgc3RydWN0IHhmc19pZm9yazsKKyAgKiBNdXN0IGJlIHBhZGRlZCB0byA2NCBiaXQgYWxpZ25tZW50LgorICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19zYiB7CistCV9fdWludDMyX3QJc2JfbWFnaWNudW07CS8qIG1hZ2ljIG51bWJlciA9PSBYRlNfU0JfTUFHSUMgKi8KKy0JX191aW50MzJfdAlzYl9ibG9ja3NpemU7CS8qIGxvZ2ljYWwgYmxvY2sgc2l6ZSwgYnl0ZXMgKi8KKysJdWludDMyX3QJc2JfbWFnaWNudW07CS8qIG1hZ2ljIG51bWJlciA9PSBYRlNfU0JfTUFHSUMgKi8KKysJdWludDMyX3QJc2JfYmxvY2tzaXplOwkvKiBsb2dpY2FsIGJsb2NrIHNpemUsIGJ5dGVzICovCisgCXhmc19yZnNibG9ja190CXNiX2RibG9ja3M7CS8qIG51bWJlciBvZiBkYXRhIGJsb2NrcyAqLworIAl4ZnNfcmZzYmxvY2tfdAlzYl9yYmxvY2tzOwkvKiBudW1iZXIgb2YgcmVhbHRpbWUgYmxvY2tzICovCisgCXhmc19ydGJsb2NrX3QJc2JfcmV4dGVudHM7CS8qIG51bWJlciBvZiByZWFsdGltZSBleHRlbnRzICovCitAQCAtMTE4LDQ1ICsxMTgsNDUgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX3NiIHsKKyAJeGZzX2FnbnVtYmVyX3QJc2JfYWdjb3VudDsJLyogbnVtYmVyIG9mIGFsbG9jYXRpb24gZ3JvdXBzICovCisgCXhmc19leHRsZW5fdAlzYl9yYm1ibG9ja3M7CS8qIG51bWJlciBvZiBydCBiaXRtYXAgYmxvY2tzICovCisgCXhmc19leHRsZW5fdAlzYl9sb2dibG9ja3M7CS8qIG51bWJlciBvZiBsb2cgYmxvY2tzICovCistCV9fdWludDE2X3QJc2JfdmVyc2lvbm51bTsJLyogaGVhZGVyIHZlcnNpb24gPT0gWEZTX1NCX1ZFUlNJT04gKi8KKy0JX191aW50MTZfdAlzYl9zZWN0c2l6ZTsJLyogdm9sdW1lIHNlY3RvciBzaXplLCBieXRlcyAqLworLQlfX3VpbnQxNl90CXNiX2lub2Rlc2l6ZTsJLyogaW5vZGUgc2l6ZSwgYnl0ZXMgKi8KKy0JX191aW50MTZfdAlzYl9pbm9wYmxvY2s7CS8qIGlub2RlcyBwZXIgYmxvY2sgKi8KKysJdWludDE2X3QJc2JfdmVyc2lvbm51bTsJLyogaGVhZGVyIHZlcnNpb24gPT0gWEZTX1NCX1ZFUlNJT04gKi8KKysJdWludDE2X3QJc2Jfc2VjdHNpemU7CS8qIHZvbHVtZSBzZWN0b3Igc2l6ZSwgYnl0ZXMgKi8KKysJdWludDE2X3QJc2JfaW5vZGVzaXplOwkvKiBpbm9kZSBzaXplLCBieXRlcyAqLworKwl1aW50MTZfdAlzYl9pbm9wYmxvY2s7CS8qIGlub2RlcyBwZXIgYmxvY2sgKi8KKyAJY2hhcgkJc2JfZm5hbWVbMTJdOwkvKiBmaWxlIHN5c3RlbSBuYW1lICovCistCV9fdWludDhfdAlzYl9ibG9ja2xvZzsJLyogbG9nMiBvZiBzYl9ibG9ja3NpemUgKi8KKy0JX191aW50OF90CXNiX3NlY3Rsb2c7CS8qIGxvZzIgb2Ygc2Jfc2VjdHNpemUgKi8KKy0JX191aW50OF90CXNiX2lub2RlbG9nOwkvKiBsb2cyIG9mIHNiX2lub2Rlc2l6ZSAqLworLQlfX3VpbnQ4X3QJc2JfaW5vcGJsb2c7CS8qIGxvZzIgb2Ygc2JfaW5vcGJsb2NrICovCistCV9fdWludDhfdAlzYl9hZ2Jsa2xvZzsJLyogbG9nMiBvZiBzYl9hZ2Jsb2NrcyAocm91bmRlZCB1cCkgKi8KKy0JX191aW50OF90CXNiX3JleHRzbG9nOwkvKiBsb2cyIG9mIHNiX3JleHRlbnRzICovCistCV9fdWludDhfdAlzYl9pbnByb2dyZXNzOwkvKiBta2ZzIGlzIGluIHByb2dyZXNzLCBkb24ndCBtb3VudCAqLworLQlfX3VpbnQ4X3QJc2JfaW1heF9wY3Q7CS8qIG1heCAlIG9mIGZzIGZvciBpbm9kZSBzcGFjZSAqLworKwl1aW50OF90CQlzYl9ibG9ja2xvZzsJLyogbG9nMiBvZiBzYl9ibG9ja3NpemUgKi8KKysJdWludDhfdAkJc2Jfc2VjdGxvZzsJLyogbG9nMiBvZiBzYl9zZWN0c2l6ZSAqLworKwl1aW50OF90CQlzYl9pbm9kZWxvZzsJLyogbG9nMiBvZiBzYl9pbm9kZXNpemUgKi8KKysJdWludDhfdAkJc2JfaW5vcGJsb2c7CS8qIGxvZzIgb2Ygc2JfaW5vcGJsb2NrICovCisrCXVpbnQ4X3QJCXNiX2FnYmxrbG9nOwkvKiBsb2cyIG9mIHNiX2FnYmxvY2tzIChyb3VuZGVkIHVwKSAqLworKwl1aW50OF90CQlzYl9yZXh0c2xvZzsJLyogbG9nMiBvZiBzYl9yZXh0ZW50cyAqLworKwl1aW50OF90CQlzYl9pbnByb2dyZXNzOwkvKiBta2ZzIGlzIGluIHByb2dyZXNzLCBkb24ndCBtb3VudCAqLworKwl1aW50OF90CQlzYl9pbWF4X3BjdDsJLyogbWF4ICUgb2YgZnMgZm9yIGlub2RlIHNwYWNlICovCisgCQkJCQkvKiBzdGF0aXN0aWNzICovCisgCS8qCisgCSAqIFRoZXNlIGZpZWxkcyBtdXN0IHJlbWFpbiBjb250aWd1b3VzLiAgSWYgeW91IHJlYWxseQorIAkgKiB3YW50IHRvIGNoYW5nZSB0aGVpciBsYXlvdXQsIG1ha2Ugc3VyZSB5b3UgZml4IHRoZQorIAkgKiBjb2RlIGluIHhmc190cmFuc19hcHBseV9zYl9kZWx0YXMoKS4KKyAJICovCistCV9fdWludDY0X3QJc2JfaWNvdW50OwkvKiBhbGxvY2F0ZWQgaW5vZGVzICovCistCV9fdWludDY0X3QJc2JfaWZyZWU7CS8qIGZyZWUgaW5vZGVzICovCistCV9fdWludDY0X3QJc2JfZmRibG9ja3M7CS8qIGZyZWUgZGF0YSBibG9ja3MgKi8KKy0JX191aW50NjRfdAlzYl9mcmV4dGVudHM7CS8qIGZyZWUgcmVhbHRpbWUgZXh0ZW50cyAqLworKwl1aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCBpbm9kZXMgKi8KKysJdWludDY0X3QJc2JfaWZyZWU7CS8qIGZyZWUgaW5vZGVzICovCisrCXVpbnQ2NF90CXNiX2ZkYmxvY2tzOwkvKiBmcmVlIGRhdGEgYmxvY2tzICovCisrCXVpbnQ2NF90CXNiX2ZyZXh0ZW50czsJLyogZnJlZSByZWFsdGltZSBleHRlbnRzICovCisgCS8qCisgCSAqIEVuZCBjb250aWd1b3VzIGZpZWxkcy4KKyAJICovCisgCXhmc19pbm9fdAlzYl91cXVvdGlubzsJLyogdXNlciBxdW90YSBpbm9kZSAqLworIAl4ZnNfaW5vX3QJc2JfZ3F1b3Rpbm87CS8qIGdyb3VwIHF1b3RhIGlub2RlICovCistCV9fdWludDE2X3QJc2JfcWZsYWdzOwkvKiBxdW90YSBmbGFncyAqLworLQlfX3VpbnQ4X3QJc2JfZmxhZ3M7CS8qIG1pc2MuIGZsYWdzICovCistCV9fdWludDhfdAlzYl9zaGFyZWRfdm47CS8qIHNoYXJlZCB2ZXJzaW9uIG51bWJlciAqLworKwl1aW50MTZfdAlzYl9xZmxhZ3M7CS8qIHF1b3RhIGZsYWdzICovCisrCXVpbnQ4X3QJCXNiX2ZsYWdzOwkvKiBtaXNjLiBmbGFncyAqLworKwl1aW50OF90CQlzYl9zaGFyZWRfdm47CS8qIHNoYXJlZCB2ZXJzaW9uIG51bWJlciAqLworIAl4ZnNfZXh0bGVuX3QJc2JfaW5vYWxpZ25tdDsJLyogaW5vZGUgY2h1bmsgYWxpZ25tZW50LCBmc2Jsb2NrcyAqLworLQlfX3VpbnQzMl90CXNiX3VuaXQ7CS8qIHN0cmlwZSBvciByYWlkIHVuaXQgKi8KKy0JX191aW50MzJfdAlzYl93aWR0aDsJLyogc3RyaXBlIG9yIHJhaWQgd2lkdGggKi8KKy0JX191aW50OF90CXNiX2RpcmJsa2xvZzsJLyogbG9nMiBvZiBkaXIgYmxvY2sgc2l6ZSAoZnNicykgKi8KKy0JX191aW50OF90CXNiX2xvZ3NlY3Rsb2c7CS8qIGxvZzIgb2YgdGhlIGxvZyBzZWN0b3Igc2l6ZSAqLworLQlfX3VpbnQxNl90CXNiX2xvZ3NlY3RzaXplOwkvKiBzZWN0b3Igc2l6ZSBmb3IgdGhlIGxvZywgYnl0ZXMgKi8KKy0JX191aW50MzJfdAlzYl9sb2dzdW5pdDsJLyogc3RyaXBlIHVuaXQgc2l6ZSBmb3IgdGhlIGxvZyAqLworLQlfX3VpbnQzMl90CXNiX2ZlYXR1cmVzMjsJLyogYWRkaXRpb25hbCBmZWF0dXJlIGJpdHMgKi8KKysJdWludDMyX3QJc2JfdW5pdDsJLyogc3RyaXBlIG9yIHJhaWQgdW5pdCAqLworKwl1aW50MzJfdAlzYl93aWR0aDsJLyogc3RyaXBlIG9yIHJhaWQgd2lkdGggKi8KKysJdWludDhfdAkJc2JfZGlyYmxrbG9nOwkvKiBsb2cyIG9mIGRpciBibG9jayBzaXplIChmc2JzKSAqLworKwl1aW50OF90CQlzYl9sb2dzZWN0bG9nOwkvKiBsb2cyIG9mIHRoZSBsb2cgc2VjdG9yIHNpemUgKi8KKysJdWludDE2X3QJc2JfbG9nc2VjdHNpemU7CS8qIHNlY3RvciBzaXplIGZvciB0aGUgbG9nLCBieXRlcyAqLworKwl1aW50MzJfdAlzYl9sb2dzdW5pdDsJLyogc3RyaXBlIHVuaXQgc2l6ZSBmb3IgdGhlIGxvZyAqLworKwl1aW50MzJfdAlzYl9mZWF0dXJlczI7CS8qIGFkZGl0aW9uYWwgZmVhdHVyZSBiaXRzICovCisgCisgCS8qCisgCSAqIGJhZCBmZWF0dXJlczIgZmllbGQgYXMgYSByZXN1bHQgb2YgZmFpbGluZyB0byBwYWQgdGhlIHNiIHN0cnVjdHVyZSB0bworQEAgLTE2NywxNyArMTY3LDE3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19zYiB7CisgCSAqIHRoZSB2YWx1ZSBpbiBzYl9mZWF0dXJlczIgd2hlbiBmb3JtYXR0aW5nIHRoZSBpbmNvcmUgc3VwZXJibG9jayB0bworIAkgKiB0aGUgZGlzayBidWZmZXIuCisgCSAqLworLQlfX3VpbnQzMl90CXNiX2JhZF9mZWF0dXJlczI7CisrCXVpbnQzMl90CXNiX2JhZF9mZWF0dXJlczI7CisgCisgCS8qIHZlcnNpb24gNSBzdXBlcmJsb2NrIGZpZWxkcyBzdGFydCBoZXJlICovCisgCisgCS8qIGZlYXR1cmUgbWFza3MgKi8KKy0JX191aW50MzJfdAlzYl9mZWF0dXJlc19jb21wYXQ7CistCV9fdWludDMyX3QJc2JfZmVhdHVyZXNfcm9fY29tcGF0OworLQlfX3VpbnQzMl90CXNiX2ZlYXR1cmVzX2luY29tcGF0OworLQlfX3VpbnQzMl90CXNiX2ZlYXR1cmVzX2xvZ19pbmNvbXBhdDsKKysJdWludDMyX3QJc2JfZmVhdHVyZXNfY29tcGF0OworKwl1aW50MzJfdAlzYl9mZWF0dXJlc19yb19jb21wYXQ7CisrCXVpbnQzMl90CXNiX2ZlYXR1cmVzX2luY29tcGF0OworKwl1aW50MzJfdAlzYl9mZWF0dXJlc19sb2dfaW5jb21wYXQ7CisgCistCV9fdWludDMyX3QJc2JfY3JjOwkJLyogc3VwZXJibG9jayBjcmMgKi8KKysJdWludDMyX3QJc2JfY3JjOwkJLyogc3VwZXJibG9jayBjcmMgKi8KKyAJeGZzX2V4dGxlbl90CXNiX3NwaW5vX2FsaWduOwkvKiBzcGFyc2UgaW5vZGUgY2h1bmsgYWxpZ25tZW50ICovCisgCisgCXhmc19pbm9fdAlzYl9wcXVvdGlubzsJLyogcHJvamVjdCBxdW90YSBpbm9kZSAqLworQEAgLTQ0OSw3ICs0NDksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgeGZzX3NiX3ZlcnNpb25fYWRkcHJvamlkMzJiaXQoc3RydWN0IHhmc19zYiAqc2JwKQorIHN0YXRpYyBpbmxpbmUgYm9vbAorIHhmc19zYl9oYXNfY29tcGF0X2ZlYXR1cmUoCisgCXN0cnVjdCB4ZnNfc2IJKnNicCwKKy0JX191aW50MzJfdAlmZWF0dXJlKQorKwl1aW50MzJfdAlmZWF0dXJlKQorIHsKKyAJcmV0dXJuIChzYnAtPnNiX2ZlYXR1cmVzX2NvbXBhdCAmIGZlYXR1cmUpICE9IDA7CisgfQorQEAgLTQ2NSw3ICs0NjUsNyBAQCB4ZnNfc2JfaGFzX2NvbXBhdF9mZWF0dXJlKAorIHN0YXRpYyBpbmxpbmUgYm9vbAorIHhmc19zYl9oYXNfcm9fY29tcGF0X2ZlYXR1cmUoCisgCXN0cnVjdCB4ZnNfc2IJKnNicCwKKy0JX191aW50MzJfdAlmZWF0dXJlKQorKwl1aW50MzJfdAlmZWF0dXJlKQorIHsKKyAJcmV0dXJuIChzYnAtPnNiX2ZlYXR1cmVzX3JvX2NvbXBhdCAmIGZlYXR1cmUpICE9IDA7CisgfQorQEAgLTQ4Miw3ICs0ODIsNyBAQCB4ZnNfc2JfaGFzX3JvX2NvbXBhdF9mZWF0dXJlKAorIHN0YXRpYyBpbmxpbmUgYm9vbAorIHhmc19zYl9oYXNfaW5jb21wYXRfZmVhdHVyZSgKKyAJc3RydWN0IHhmc19zYgkqc2JwLAorLQlfX3VpbnQzMl90CWZlYXR1cmUpCisrCXVpbnQzMl90CWZlYXR1cmUpCisgeworIAlyZXR1cm4gKHNicC0+c2JfZmVhdHVyZXNfaW5jb21wYXQgJiBmZWF0dXJlKSAhPSAwOworIH0KK0BAIC00OTIsNyArNDkyLDcgQEAgeGZzX3NiX2hhc19pbmNvbXBhdF9mZWF0dXJlKAorIHN0YXRpYyBpbmxpbmUgYm9vbAorIHhmc19zYl9oYXNfaW5jb21wYXRfbG9nX2ZlYXR1cmUoCisgCXN0cnVjdCB4ZnNfc2IJKnNicCwKKy0JX191aW50MzJfdAlmZWF0dXJlKQorKwl1aW50MzJfdAlmZWF0dXJlKQorIHsKKyAJcmV0dXJuIChzYnAtPnNiX2ZlYXR1cmVzX2xvZ19pbmNvbXBhdCAmIGZlYXR1cmUpICE9IDA7CisgfQorQEAgLTU5NCw4ICs1OTQsOCBAQCB4ZnNfaXNfcXVvdGFfaW5vZGUoc3RydWN0IHhmc19zYiAqc2JwLCB4ZnNfaW5vX3QgaW5vKQorICAqLworICNkZWZpbmUgWEZTX0ZTQl9UT19CKG1wLGZzYm5vKQkoKHhmc19mc2l6ZV90KShmc2JubykgPDwgKG1wKS0+bV9zYi5zYl9ibG9ja2xvZykKKyAjZGVmaW5lIFhGU19CX1RPX0ZTQihtcCxiKQlcCistCSgoKChfX3VpbnQ2NF90KShiKSkgKyAobXApLT5tX2Jsb2NrbWFzaykgPj4gKG1wKS0+bV9zYi5zYl9ibG9ja2xvZykKKy0jZGVmaW5lIFhGU19CX1RPX0ZTQlQobXAsYikJKCgoX191aW50NjRfdCkoYikpID4+IChtcCktPm1fc2Iuc2JfYmxvY2tsb2cpCisrCSgoKCh1aW50NjRfdCkoYikpICsgKG1wKS0+bV9ibG9ja21hc2spID4+IChtcCktPm1fc2Iuc2JfYmxvY2tsb2cpCisrI2RlZmluZSBYRlNfQl9UT19GU0JUKG1wLGIpCSgoKHVpbnQ2NF90KShiKSkgPj4gKG1wKS0+bV9zYi5zYl9ibG9ja2xvZykKKyAjZGVmaW5lIFhGU19CX0ZTQl9PRkZTRVQobXAsYikJKChiKSAmIChtcCktPm1fYmxvY2ttYXNrKQorIAorIC8qCitAQCAtMTA3Miw3ICsxMDcyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHhmc19kaW5vZGVfcHV0X3JkZXYoc3RydWN0IHhmc19kaW5vZGUgKmRpcCwgeGZzX2Rldl90IHJkZXYpCisgICogbmV4dCBhZ25vX2xvZyBiaXRzIC0gYWcgbnVtYmVyCisgICogaGlnaCBhZ25vX2xvZy1hZ2Jsa2xvZy1pbm9wYmxvZyBiaXRzIC0gMAorICAqLworLSNkZWZpbmUJWEZTX0lOT19NQVNLKGspCQkJKF9fdWludDMyX3QpKCgxVUxMIDw8IChrKSkgLSAxKQorKyNkZWZpbmUJWEZTX0lOT19NQVNLKGspCQkJKHVpbnQzMl90KSgoMVVMTCA8PCAoaykpIC0gMSkKKyAjZGVmaW5lCVhGU19JTk9fT0ZGU0VUX0JJVFMobXApCQkobXApLT5tX3NiLnNiX2lub3BibG9nCisgI2RlZmluZQlYRlNfSU5PX0FHQk5PX0JJVFMobXApCQkobXApLT5tX3NiLnNiX2FnYmxrbG9nCisgI2RlZmluZQlYRlNfSU5PX0FHSU5PX0JJVFMobXApCQkobXApLT5tX2FnaW5vX2xvZworQEAgLTEyNjksMTYgKzEyNjksMTYgQEAgdHlwZWRlZiBfX2JlMzIgeGZzX2FsbG9jX3B0cl90OworICNkZWZpbmUJWEZTX0ZJQlRfTUFHSUMJCTB4NDY0OTQyNTQJLyogJ0ZJQlQnICovCisgI2RlZmluZQlYRlNfRklCVF9DUkNfTUFHSUMJMHg0NjQ5NDIzMwkvKiAnRklCMycgKi8KKyAKKy10eXBlZGVmCV9fdWludDY0X3QJeGZzX2lub2ZyZWVfdDsKKyt0eXBlZGVmIHVpbnQ2NF90CXhmc19pbm9mcmVlX3Q7CisgI2RlZmluZQlYRlNfSU5PREVTX1BFUl9DSFVOSwkJKE5CQlkgKiBzaXplb2YoeGZzX2lub2ZyZWVfdCkpCisgI2RlZmluZQlYRlNfSU5PREVTX1BFUl9DSFVOS19MT0cJKFhGU19OQkJZTE9HICsgMykKKyAjZGVmaW5lCVhGU19JTk9CVF9BTExfRlJFRQkJKCh4ZnNfaW5vZnJlZV90KS0xKQorICNkZWZpbmUJWEZTX0lOT0JUX01BU0soaSkJCSgoeGZzX2lub2ZyZWVfdCkxIDw8IChpKSkKKyAKKyAjZGVmaW5lIFhGU19JTk9CVF9IT0xFTUFTS19GVUxMCQkwCS8qIGhvbGVtYXNrIGZvciBmdWxsIGNodW5rICovCistI2RlZmluZSBYRlNfSU5PQlRfSE9MRU1BU0tfQklUUwkJKE5CQlkgKiBzaXplb2YoX191aW50MTZfdCkpCisrI2RlZmluZSBYRlNfSU5PQlRfSE9MRU1BU0tfQklUUwkJKE5CQlkgKiBzaXplb2YodWludDE2X3QpKQorICNkZWZpbmUgWEZTX0lOT0RFU19QRVJfSE9MRU1BU0tfQklUCVwKKy0JKFhGU19JTk9ERVNfUEVSX0NIVU5LIC8gKE5CQlkgKiBzaXplb2YoX191aW50MTZfdCkpKQorKwkoWEZTX0lOT0RFU19QRVJfQ0hVTksgLyAoTkJCWSAqIHNpemVvZih1aW50MTZfdCkpKQorIAorIHN0YXRpYyBpbmxpbmUgeGZzX2lub2ZyZWVfdCB4ZnNfaW5vYnRfbWFza24oaW50IGksIGludCBuKQorIHsKK0BAIC0xMzEyLDkgKzEzMTIsOSBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfaW5vYnRfcmVjIHsKKyAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfaW5vYnRfcmVjX2luY29yZSB7CisgCXhmc19hZ2lub190CWlyX3N0YXJ0aW5vOwkvKiBzdGFydGluZyBpbm9kZSBudW1iZXIgKi8KKy0JX191aW50MTZfdAlpcl9ob2xlbWFzazsJLyogaG9sZSBtYXNrIGZvciBzcGFyc2UgY2h1bmtzICovCistCV9fdWludDhfdAlpcl9jb3VudDsJLyogdG90YWwgaW5vZGUgY291bnQgKi8KKy0JX191aW50OF90CWlyX2ZyZWVjb3VudDsJLyogY291bnQgb2YgZnJlZSBpbm9kZXMgKHNldCBiaXRzKSAqLworKwl1aW50MTZfdAlpcl9ob2xlbWFzazsJLyogaG9sZSBtYXNrIGZvciBzcGFyc2UgY2h1bmtzICovCisrCXVpbnQ4X3QJCWlyX2NvdW50OwkvKiB0b3RhbCBpbm9kZSBjb3VudCAqLworKwl1aW50OF90CQlpcl9mcmVlY291bnQ7CS8qIGNvdW50IG9mIGZyZWUgaW5vZGVzIChzZXQgYml0cykgKi8KKyAJeGZzX2lub2ZyZWVfdAlpcl9mcmVlOwkvKiBmcmVlIGlub2RlIG1hc2sgKi8KKyB9IHhmc19pbm9idF9yZWNfaW5jb3JlX3Q7CisgCitAQCAtMTM5NywxNSArMTM5NywxNSBAQCBzdHJ1Y3QgeGZzX3JtYXBfcmVjIHsKKyAgKiAgcm1fb2Zmc2V0OjU0LTYwIGFyZW4ndCB1c2VkIGFuZCBzaG91bGQgYmUgemVybworICAqICBybV9vZmZzZXQ6MC01MyBpcyB0aGUgYmxvY2sgb2Zmc2V0IHdpdGhpbiB0aGUgaW5vZGUKKyAgKi8KKy0jZGVmaW5lIFhGU19STUFQX09GRl9BVFRSX0ZPUksJKChfX3VpbnQ2NF90KTFVTEwgPDwgNjMpCistI2RlZmluZSBYRlNfUk1BUF9PRkZfQk1CVF9CTE9DSwkoKF9fdWludDY0X3QpMVVMTCA8PCA2MikKKy0jZGVmaW5lIFhGU19STUFQX09GRl9VTldSSVRURU4JKChfX3VpbnQ2NF90KTFVTEwgPDwgNjEpCisrI2RlZmluZSBYRlNfUk1BUF9PRkZfQVRUUl9GT1JLCSgodWludDY0X3QpMVVMTCA8PCA2MykKKysjZGVmaW5lIFhGU19STUFQX09GRl9CTUJUX0JMT0NLCSgodWludDY0X3QpMVVMTCA8PCA2MikKKysjZGVmaW5lIFhGU19STUFQX09GRl9VTldSSVRURU4JKCh1aW50NjRfdCkxVUxMIDw8IDYxKQorIAorLSNkZWZpbmUgWEZTX1JNQVBfTEVOX01BWAkoKF9fdWludDMyX3QpfjBVKQorKyNkZWZpbmUgWEZTX1JNQVBfTEVOX01BWAkoKHVpbnQzMl90KX4wVSkKKyAjZGVmaW5lIFhGU19STUFQX09GRl9GTEFHUwkoWEZTX1JNQVBfT0ZGX0FUVFJfRk9SSyB8IFwKKyAJCQkJIFhGU19STUFQX09GRl9CTUJUX0JMT0NLIHwgXAorIAkJCQkgWEZTX1JNQVBfT0ZGX1VOV1JJVFRFTikKKy0jZGVmaW5lIFhGU19STUFQX09GRl9NQVNLCSgoX191aW50NjRfdCkweDNGRkZGRkZGRkZGRkZGVUxMKQorKyNkZWZpbmUgWEZTX1JNQVBfT0ZGX01BU0sJKCh1aW50NjRfdCkweDNGRkZGRkZGRkZGRkZGVUxMKQorIAorICNkZWZpbmUgWEZTX1JNQVBfT0ZGKG9mZikJCSgob2ZmKSAmIFhGU19STUFQX09GRl9NQVNLKQorIAorQEAgLTE0MzEsOCArMTQzMSw4IEBAIHN0cnVjdCB4ZnNfcm1hcF9yZWMgeworIHN0cnVjdCB4ZnNfcm1hcF9pcmVjIHsKKyAJeGZzX2FnYmxvY2tfdAlybV9zdGFydGJsb2NrOwkvKiBleHRlbnQgc3RhcnQgYmxvY2sgKi8KKyAJeGZzX2V4dGxlbl90CXJtX2Jsb2NrY291bnQ7CS8qIGV4dGVudCBsZW5ndGggKi8KKy0JX191aW50NjRfdAlybV9vd25lcjsJLyogZXh0ZW50IG93bmVyICovCistCV9fdWludDY0X3QJcm1fb2Zmc2V0OwkvKiBvZmZzZXQgd2l0aGluIHRoZSBvd25lciAqLworKwl1aW50NjRfdAlybV9vd25lcjsJLyogZXh0ZW50IG93bmVyICovCisrCXVpbnQ2NF90CXJtX29mZnNldDsJLyogb2Zmc2V0IHdpdGhpbiB0aGUgb3duZXIgKi8KKyAJdW5zaWduZWQgaW50CXJtX2ZsYWdzOwkvKiBzdGF0ZSBmbGFncyAqLworIH07CisgCitAQCAtMTU0NCwxMSArMTU0NCwxMSBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfYm1idF9yZWMgeworIAlfX2JlNjQJCQlsMCwgbDE7CisgfSB4ZnNfYm1idF9yZWNfdDsKKyAKKy10eXBlZGVmIF9fdWludDY0X3QJeGZzX2JtYnRfcmVjX2Jhc2VfdDsJLyogdXNlIHRoaXMgZm9yIGNhc3RzICovCisrdHlwZWRlZiB1aW50NjRfdAl4ZnNfYm1idF9yZWNfYmFzZV90OwkvKiB1c2UgdGhpcyBmb3IgY2FzdHMgKi8KKyB0eXBlZGVmIHhmc19ibWJ0X3JlY190IHhmc19ibWRyX3JlY190OworIAorIHR5cGVkZWYgc3RydWN0IHhmc19ibWJ0X3JlY19ob3N0IHsKKy0JX191aW50NjRfdAkJbDAsIGwxOworKwl1aW50NjRfdAkJbDAsIGwxOworIH0geGZzX2JtYnRfcmVjX2hvc3RfdDsKKyAKKyAvKgorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfZnMuaCBiL2xpYnhmcy94ZnNfZnMuaAoraW5kZXggOTlmN2Y4ODEuLjhhMGMwZWVjIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19mcy5oCisrKysgYi9saWJ4ZnMveGZzX2ZzLmgKK0BAIC0zMjMsMTAgKzMyMywxMCBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfYnN0YXQgeworICAqIGFuZCB1c2luZyB0d28gMTZiaXQgdmFsdWVzIHRvIGhvbGQgbmV3IDMyYml0IHByb2ppZCB3YXMgY2hvb3NlbgorICAqIHRvIHJldGFpbiBjb21wYXRpYmlsaXR5IHdpdGggIm9sZCIgZmlsZXN5c3RlbXMpLgorICAqLworLXN0YXRpYyBpbmxpbmUgX191aW50MzJfdAorK3N0YXRpYyBpbmxpbmUgdWludDMyX3QKKyBic3RhdF9nZXRfcHJvamlkKHN0cnVjdCB4ZnNfYnN0YXQgKmJzKQorIHsKKy0JcmV0dXJuIChfX3VpbnQzMl90KWJzLT5ic19wcm9qaWRfaGkgPDwgMTYgfCBicy0+YnNfcHJvamlkX2xvOworKwlyZXR1cm4gKHVpbnQzMl90KWJzLT5ic19wcm9qaWRfaGkgPDwgMTYgfCBicy0+YnNfcHJvamlkX2xvOworIH0KKyAKKyAvKgorQEAgLTQ3MiwxMCArNDcyLDEwIEBAIHR5cGVkZWYgc3RydWN0IHhmc19oYW5kbGUgeworICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19zd2FwZXh0CisgeworLQlfX2ludDY0X3QJc3hfdmVyc2lvbjsJLyogdmVyc2lvbiAqLworKwlpbnQ2NF90CQlzeF92ZXJzaW9uOwkvKiB2ZXJzaW9uICovCisgI2RlZmluZSBYRlNfU1hfVkVSU0lPTgkJMAorLQlfX2ludDY0X3QJc3hfZmR0YXJnZXQ7CS8qIGZkIG9mIHRhcmdldCBmaWxlICovCistCV9faW50NjRfdAlzeF9mZHRtcDsJLyogZmQgb2YgdG1wIGZpbGUgKi8KKysJaW50NjRfdAkJc3hfZmR0YXJnZXQ7CS8qIGZkIG9mIHRhcmdldCBmaWxlICovCisrCWludDY0X3QJCXN4X2ZkdG1wOwkvKiBmZCBvZiB0bXAgZmlsZSAqLworIAl4ZnNfb2ZmX3QJc3hfb2Zmc2V0OwkvKiBvZmZzZXQgaW50byBmaWxlICovCisgCXhmc19vZmZfdAlzeF9sZW5ndGg7CS8qIGxlbmcgZnJvbSBvZmZzZXQgKi8KKyAJY2hhcgkJc3hfcGFkWzE2XTsJLyogcGFkIHNwYWNlLCB1bnVzZWQgKi8KK0BAIC01NjIsNyArNTYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX3N3YXBleHQKKyAjZGVmaW5lIFhGU19JT0NfQVRUUkxJU1RfQllfSEFORExFICAgX0lPVyAoJ1gnLCAxMjIsIHN0cnVjdCB4ZnNfZnNvcF9hdHRybGlzdF9oYW5kbGVyZXEpCisgI2RlZmluZSBYRlNfSU9DX0FUVFJNVUxUSV9CWV9IQU5ETEUgIF9JT1cgKCdYJywgMTIzLCBzdHJ1Y3QgeGZzX2Zzb3BfYXR0cm11bHRpX2hhbmRsZXJlcSkKKyAjZGVmaW5lIFhGU19JT0NfRlNHRU9NRVRSWQkgICAgIF9JT1IgKCdYJywgMTI0LCBzdHJ1Y3QgeGZzX2Zzb3BfZ2VvbSkKKy0jZGVmaW5lIFhGU19JT0NfR09JTkdET1dOCSAgICAgX0lPUiAoJ1gnLCAxMjUsIF9fdWludDMyX3QpCisrI2RlZmluZSBYRlNfSU9DX0dPSU5HRE9XTgkgICAgIF9JT1IgKCdYJywgMTI1LCB1aW50MzJfdCkKKyAvKglYRlNfSU9DX0dFVEZTVVVJRCAtLS0tLS0tLS0tIGRlcHJlY2F0ZWQgMTQwCSAqLworIAorIC8qIHJlZmxpbmsgaW9jdGxzOyB0aGVzZSBNVVNUIG1hdGNoIHRoZSBidHJmcyBpb2N0bCBkZWZpbml0aW9ucyAqLworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfaWFsbG9jLmMgYi9saWJ4ZnMveGZzX2lhbGxvYy5jCitpbmRleCA1NWNjNDUwNy4uOGQyNDUxODQgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2lhbGxvYy5jCisrKysgYi9saWJ4ZnMveGZzX2lhbGxvYy5jCitAQCAtMTM0LDkgKzEzNCw5IEBAIHhmc19pbm9idF9nZXRfcmVjKAorIFNUQVRJQyBpbnQKKyB4ZnNfaW5vYnRfaW5zZXJ0X3JlYygKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKy0JX191aW50MTZfdAkJaG9sZW1hc2ssCistCV9fdWludDhfdAkJY291bnQsCistCV9faW50MzJfdAkJZnJlZWNvdW50LAorKwl1aW50MTZfdAkJaG9sZW1hc2ssCisrCXVpbnQ4X3QJCQljb3VudCwKKysJaW50MzJfdAkJCWZyZWVjb3VudCwKKyAJeGZzX2lub2ZyZWVfdAkJZnJlZSwKKyAJaW50CQkJKnN0YXQpCisgeworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfaWFsbG9jX2J0cmVlLmMgYi9saWJ4ZnMveGZzX2lhbGxvY19idHJlZS5jCitpbmRleCA3YjRiZTc2Ni4uNWIyODEwNTQgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2lhbGxvY19idHJlZS5jCisrKysgYi9saWJ4ZnMveGZzX2lhbGxvY19idHJlZS5jCitAQCAtMjE4LDEyICsyMTgsMTIgQEAgeGZzX2Zpbm9idF9pbml0X3B0cl9mcm9tX2N1cigKKyAJcHRyLT5zID0gYWdpLT5hZ2lfZnJlZV9yb290OworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfaW5vYnRfa2V5X2RpZmYoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmtleSkKKyB7CistCXJldHVybiAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtleS0+aW5vYnQuaXJfc3RhcnRpbm8pIC0KKysJcmV0dXJuIChpbnQ2NF90KWJlMzJfdG9fY3B1KGtleS0+aW5vYnQuaXJfc3RhcnRpbm8pIC0KKyAJCQkgIGN1ci0+YmNfcmVjLmkuaXJfc3RhcnRpbm87CisgfQorIAorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfaW5vZGVfYnVmLmMgYi9saWJ4ZnMveGZzX2lub2RlX2J1Zi5jCitpbmRleCAyOTcyNzAxZC4uZmNjNmZiOGUgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX2lub2RlX2J1Zi5jCisrKysgYi9saWJ4ZnMveGZzX2lub2RlX2J1Zi5jCitAQCAtNDQyLDcgKzQ0Miw3IEBAIHhmc19kaW5vZGVfY2FsY19jcmMoCisgCXN0cnVjdCB4ZnNfbW91bnQJKm1wLAorIAlzdHJ1Y3QgeGZzX2Rpbm9kZQkqZGlwKQorIHsKKy0JX191aW50MzJfdAkJY3JjOworKwl1aW50MzJfdAkJY3JjOworIAorIAlpZiAoZGlwLT5kaV92ZXJzaW9uIDwgMykKKyAJCXJldHVybjsKK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX2lub2RlX2J1Zi5oIGIvbGlieGZzL3hmc19pbm9kZV9idWYuaAoraW5kZXggNjg0OGEwYWYuLjA4MjdkN2RlIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19pbm9kZV9idWYuaAorKysrIGIvbGlieGZzL3hmc19pbm9kZV9idWYuaAorQEAgLTI4LDI2ICsyOCwyNiBAQCBzdHJ1Y3QgeGZzX2Rpbm9kZTsKKyAgKiBmb3JtYXQgc3BlY2lmaWMgc3RydWN0dXJlcyBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4KKyAgKi8KKyBzdHJ1Y3QgeGZzX2ljZGlub2RlIHsKKy0JX19pbnQ4X3QJZGlfdmVyc2lvbjsJLyogaW5vZGUgdmVyc2lvbiAqLworLQlfX2ludDhfdAlkaV9mb3JtYXQ7CS8qIGZvcm1hdCBvZiBkaV9jIGRhdGEgKi8KKy0JX191aW50MTZfdAlkaV9mbHVzaGl0ZXI7CS8qIGluY3JlbWVudGVkIG9uIGZsdXNoICovCistCV9fdWludDMyX3QJZGlfdWlkOwkJLyogb3duZXIncyB1c2VyIGlkICovCistCV9fdWludDMyX3QJZGlfZ2lkOwkJLyogb3duZXIncyBncm91cCBpZCAqLworLQlfX3VpbnQxNl90CWRpX3Byb2ppZF9sbzsJLyogbG93ZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KKy0JX191aW50MTZfdAlkaV9wcm9qaWRfaGk7CS8qIGhpZ2hlciBwYXJ0IG9mIG93bmVyJ3MgcHJvamVjdCBpZCAqLworKwlpbnQ4X3QJCWRpX3ZlcnNpb247CS8qIGlub2RlIHZlcnNpb24gKi8KKysJaW50OF90CQlkaV9mb3JtYXQ7CS8qIGZvcm1hdCBvZiBkaV9jIGRhdGEgKi8KKysJdWludDE2X3QJZGlfZmx1c2hpdGVyOwkvKiBpbmNyZW1lbnRlZCBvbiBmbHVzaCAqLworKwl1aW50MzJfdAlkaV91aWQ7CQkvKiBvd25lcidzIHVzZXIgaWQgKi8KKysJdWludDMyX3QJZGlfZ2lkOwkJLyogb3duZXIncyBncm91cCBpZCAqLworKwl1aW50MTZfdAlkaV9wcm9qaWRfbG87CS8qIGxvd2VyIHBhcnQgb2Ygb3duZXIncyBwcm9qZWN0IGlkICovCisrCXVpbnQxNl90CWRpX3Byb2ppZF9oaTsJLyogaGlnaGVyIHBhcnQgb2Ygb3duZXIncyBwcm9qZWN0IGlkICovCisgCXhmc19mc2l6ZV90CWRpX3NpemU7CS8qIG51bWJlciBvZiBieXRlcyBpbiBmaWxlICovCisgCXhmc19yZnNibG9ja190CWRpX25ibG9ja3M7CS8qICMgb2YgZGlyZWN0ICYgYnRyZWUgYmxvY2tzIHVzZWQgKi8KKyAJeGZzX2V4dGxlbl90CWRpX2V4dHNpemU7CS8qIGJhc2ljL21pbmltdW0gZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKyAJeGZzX2V4dG51bV90CWRpX25leHRlbnRzOwkvKiBudW1iZXIgb2YgZXh0ZW50cyBpbiBkYXRhIGZvcmsgKi8KKyAJeGZzX2FleHRudW1fdAlkaV9hbmV4dGVudHM7CS8qIG51bWJlciBvZiBleHRlbnRzIGluIGF0dHJpYnV0ZSBmb3JrKi8KKy0JX191aW50OF90CWRpX2ZvcmtvZmY7CS8qIGF0dHIgZm9yayBvZmZzLCA8PDMgZm9yIDY0YiBhbGlnbiAqLworLQlfX2ludDhfdAlkaV9hZm9ybWF0OwkvKiBmb3JtYXQgb2YgYXR0ciBmb3JrJ3MgZGF0YSAqLworLQlfX3VpbnQzMl90CWRpX2RtZXZtYXNrOwkvKiBETUlHIGV2ZW50IG1hc2sgKi8KKy0JX191aW50MTZfdAlkaV9kbXN0YXRlOwkvKiBETUlHIHN0YXRlIGluZm8gKi8KKy0JX191aW50MTZfdAlkaV9mbGFnczsJLyogcmFuZG9tIGZsYWdzLCBYRlNfRElGTEFHXy4uLiAqLworKwl1aW50OF90CQlkaV9mb3Jrb2ZmOwkvKiBhdHRyIGZvcmsgb2ZmcywgPDwzIGZvciA2NGIgYWxpZ24gKi8KKysJaW50OF90CQlkaV9hZm9ybWF0OwkvKiBmb3JtYXQgb2YgYXR0ciBmb3JrJ3MgZGF0YSAqLworKwl1aW50MzJfdAlkaV9kbWV2bWFzazsJLyogRE1JRyBldmVudCBtYXNrICovCisrCXVpbnQxNl90CWRpX2Rtc3RhdGU7CS8qIERNSUcgc3RhdGUgaW5mbyAqLworKwl1aW50MTZfdAlkaV9mbGFnczsJLyogcmFuZG9tIGZsYWdzLCBYRlNfRElGTEFHXy4uLiAqLworIAorLQlfX3VpbnQ2NF90CWRpX2ZsYWdzMjsJLyogbW9yZSByYW5kb20gZmxhZ3MgKi8KKy0JX191aW50MzJfdAlkaV9jb3dleHRzaXplOwkvKiBiYXNpYyBjb3cgZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKysJdWludDY0X3QJZGlfZmxhZ3MyOwkvKiBtb3JlIHJhbmRvbSBmbGFncyAqLworKwl1aW50MzJfdAlkaV9jb3dleHRzaXplOwkvKiBiYXNpYyBjb3cgZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKyAKKyAJeGZzX2ljdGltZXN0YW1wX3QgZGlfY3J0aW1lOwkvKiB0aW1lIGNyZWF0ZWQgKi8KKyB9OworZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfbG9nX2Zvcm1hdC5oIGIvbGlieGZzL3hmc19sb2dfZm9ybWF0LmgKK2luZGV4IDdhZTU3MWY4Li44MzcyZTliYyAxMDA2NDQKKy0tLSBhL2xpYnhmcy94ZnNfbG9nX2Zvcm1hdC5oCisrKysgYi9saWJ4ZnMveGZzX2xvZ19mb3JtYXQuaAorQEAgLTMxLDcgKzMxLDcgQEAgc3RydWN0IHhmc190cmFuc19yZXM7CisgICogdGhyb3VnaCBhbGwgdGhlIGxvZyBpdGVtcyBkZWZpbml0aW9ucyBhbmQgZXZlcnl0aGluZyB0aGV5IGVuY29kZSBpbnRvIHRoZQorICAqIGxvZy4KKyAgKi8KKy10eXBlZGVmIF9fdWludDMyX3QgeGxvZ190aWRfdDsKKyt0eXBlZGVmIHVpbnQzMl90IHhsb2dfdGlkX3Q7CisgCisgI2RlZmluZSBYTE9HX01JTl9JQ0xPR1MJCTIKKyAjZGVmaW5lIFhMT0dfTUFYX0lDTE9HUwkJOAorQEAgLTIxMSw3ICsyMTEsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfbG9nX2lvdmVjIHsKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfdHJhbnNfaGVhZGVyIHsKKyAJdWludAkJdGhfbWFnaWM7CQkvKiBtYWdpYyBudW1iZXIgKi8KKyAJdWludAkJdGhfdHlwZTsJCS8qIHRyYW5zYWN0aW9uIHR5cGUgKi8KKy0JX19pbnQzMl90CXRoX3RpZDsJCQkvKiB0cmFuc2FjdGlvbiBpZCAodW51c2VkKSAqLworKwlpbnQzMl90CQl0aF90aWQ7CQkJLyogdHJhbnNhY3Rpb24gaWQgKHVudXNlZCkgKi8KKyAJdWludAkJdGhfbnVtX2l0ZW1zOwkJLyogbnVtIGl0ZW1zIGxvZ2dlZCBieSB0cmFucyAqLworIH0geGZzX3RyYW5zX2hlYWRlcl90OworIAorQEAgLTI2NSw1MiArMjY1LDUyIEBAIHR5cGVkZWYgc3RydWN0IHhmc190cmFuc19oZWFkZXIgeworICAqIG11c3QgYmUgYWRkZWQgb24gdG8gdGhlIGVuZC4KKyAgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZnNfaW5vZGVfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCWlsZl90eXBlOwkvKiBpbm9kZSBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCWlsZl9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworLQlfX3VpbnQzMl90CQlpbGZfZmllbGRzOwkvKiBmbGFncyBmb3IgZmllbGRzIGxvZ2dlZCAqLworLQlfX3VpbnQxNl90CQlpbGZfYXNpemU7CS8qIHNpemUgb2YgYXR0ciBkL2V4dC9yb290ICovCistCV9fdWludDE2X3QJCWlsZl9kc2l6ZTsJLyogc2l6ZSBvZiBkYXRhL2V4dC9yb290ICovCistCV9fdWludDY0X3QJCWlsZl9pbm87CS8qIGlub2RlIG51bWJlciAqLworKwl1aW50MTZfdAkJaWxmX3R5cGU7CS8qIGlub2RlIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWlsZl9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJaWxmX2ZpZWxkczsJLyogZmxhZ3MgZm9yIGZpZWxkcyBsb2dnZWQgKi8KKysJdWludDE2X3QJCWlsZl9hc2l6ZTsJLyogc2l6ZSBvZiBhdHRyIGQvZXh0L3Jvb3QgKi8KKysJdWludDE2X3QJCWlsZl9kc2l6ZTsJLyogc2l6ZSBvZiBkYXRhL2V4dC9yb290ICovCisrCXVpbnQ2NF90CQlpbGZfaW5vOwkvKiBpbm9kZSBudW1iZXIgKi8KKyAJdW5pb24geworLQkJX191aW50MzJfdAlpbGZ1X3JkZXY7CS8qIHJkZXYgdmFsdWUgZm9yIGRldiBpbm9kZSovCisrCQl1aW50MzJfdAlpbGZ1X3JkZXY7CS8qIHJkZXYgdmFsdWUgZm9yIGRldiBpbm9kZSovCisgCQl1dWlkX3QJCWlsZnVfdXVpZDsJLyogbW91bnQgcG9pbnQgdmFsdWUgKi8KKyAJfSBpbGZfdTsKKy0JX19pbnQ2NF90CQlpbGZfYmxrbm87CS8qIGJsa25vIG9mIGlub2RlIGJ1ZmZlciAqLworLQlfX2ludDMyX3QJCWlsZl9sZW47CS8qIGxlbiBvZiBpbm9kZSBidWZmZXIgKi8KKy0JX19pbnQzMl90CQlpbGZfYm9mZnNldDsJLyogb2ZmIG9mIGlub2RlIGluIGJ1ZmZlciAqLworKwlpbnQ2NF90CQkJaWxmX2Jsa25vOwkvKiBibGtubyBvZiBpbm9kZSBidWZmZXIgKi8KKysJaW50MzJfdAkJCWlsZl9sZW47CS8qIGxlbiBvZiBpbm9kZSBidWZmZXIgKi8KKysJaW50MzJfdAkJCWlsZl9ib2Zmc2V0OwkvKiBvZmYgb2YgaW5vZGUgaW4gYnVmZmVyICovCisgfSB4ZnNfaW5vZGVfbG9nX2Zvcm1hdF90OworIAorIHR5cGVkZWYgc3RydWN0IHhmc19pbm9kZV9sb2dfZm9ybWF0XzMyIHsKKy0JX191aW50MTZfdAkJaWxmX3R5cGU7CS8qIGlub2RlIGxvZyBpdGVtIHR5cGUgKi8KKy0JX191aW50MTZfdAkJaWxmX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCistCV9fdWludDMyX3QJCWlsZl9maWVsZHM7CS8qIGZsYWdzIGZvciBmaWVsZHMgbG9nZ2VkICovCistCV9fdWludDE2X3QJCWlsZl9hc2l6ZTsJLyogc2l6ZSBvZiBhdHRyIGQvZXh0L3Jvb3QgKi8KKy0JX191aW50MTZfdAkJaWxmX2RzaXplOwkvKiBzaXplIG9mIGRhdGEvZXh0L3Jvb3QgKi8KKy0JX191aW50NjRfdAkJaWxmX2lubzsJLyogaW5vZGUgbnVtYmVyICovCisrCXVpbnQxNl90CQlpbGZfdHlwZTsJLyogaW5vZGUgbG9nIGl0ZW0gdHlwZSAqLworKwl1aW50MTZfdAkJaWxmX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCisrCXVpbnQzMl90CQlpbGZfZmllbGRzOwkvKiBmbGFncyBmb3IgZmllbGRzIGxvZ2dlZCAqLworKwl1aW50MTZfdAkJaWxmX2FzaXplOwkvKiBzaXplIG9mIGF0dHIgZC9leHQvcm9vdCAqLworKwl1aW50MTZfdAkJaWxmX2RzaXplOwkvKiBzaXplIG9mIGRhdGEvZXh0L3Jvb3QgKi8KKysJdWludDY0X3QJCWlsZl9pbm87CS8qIGlub2RlIG51bWJlciAqLworIAl1bmlvbiB7CistCQlfX3VpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKysJCXVpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKyAJCXV1aWRfdAkJaWxmdV91dWlkOwkvKiBtb3VudCBwb2ludCB2YWx1ZSAqLworIAl9IGlsZl91OworLQlfX2ludDY0X3QJCWlsZl9ibGtubzsJLyogYmxrbm8gb2YgaW5vZGUgYnVmZmVyICovCistCV9faW50MzJfdAkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLworLQlfX2ludDMyX3QJCWlsZl9ib2Zmc2V0OwkvKiBvZmYgb2YgaW5vZGUgaW4gYnVmZmVyICovCisrCWludDY0X3QJCQlpbGZfYmxrbm87CS8qIGJsa25vIG9mIGlub2RlIGJ1ZmZlciAqLworKwlpbnQzMl90CQkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLworKwlpbnQzMl90CQkJaWxmX2JvZmZzZXQ7CS8qIG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KKyB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHhmc19pbm9kZV9sb2dfZm9ybWF0XzMyX3Q7CisgCisgdHlwZWRlZiBzdHJ1Y3QgeGZzX2lub2RlX2xvZ19mb3JtYXRfNjQgeworLQlfX3VpbnQxNl90CQlpbGZfdHlwZTsJLyogaW5vZGUgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlpbGZfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJaWxmX2ZpZWxkczsJLyogZmxhZ3MgZm9yIGZpZWxkcyBsb2dnZWQgKi8KKy0JX191aW50MTZfdAkJaWxmX2FzaXplOwkvKiBzaXplIG9mIGF0dHIgZC9leHQvcm9vdCAqLworLQlfX3VpbnQxNl90CQlpbGZfZHNpemU7CS8qIHNpemUgb2YgZGF0YS9leHQvcm9vdCAqLworLQlfX3VpbnQzMl90CQlpbGZfcGFkOwkvKiBwYWQgZm9yIDY0IGJpdCBib3VuZGFyeSAqLworLQlfX3VpbnQ2NF90CQlpbGZfaW5vOwkvKiBpbm9kZSBudW1iZXIgKi8KKysJdWludDE2X3QJCWlsZl90eXBlOwkvKiBpbm9kZSBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQlpbGZfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCWlsZl9maWVsZHM7CS8qIGZsYWdzIGZvciBmaWVsZHMgbG9nZ2VkICovCisrCXVpbnQxNl90CQlpbGZfYXNpemU7CS8qIHNpemUgb2YgYXR0ciBkL2V4dC9yb290ICovCisrCXVpbnQxNl90CQlpbGZfZHNpemU7CS8qIHNpemUgb2YgZGF0YS9leHQvcm9vdCAqLworKwl1aW50MzJfdAkJaWxmX3BhZDsJLyogcGFkIGZvciA2NCBiaXQgYm91bmRhcnkgKi8KKysJdWludDY0X3QJCWlsZl9pbm87CS8qIGlub2RlIG51bWJlciAqLworIAl1bmlvbiB7CistCQlfX3VpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKysJCXVpbnQzMl90CWlsZnVfcmRldjsJLyogcmRldiB2YWx1ZSBmb3IgZGV2IGlub2RlKi8KKyAJCXV1aWRfdAkJaWxmdV91dWlkOwkvKiBtb3VudCBwb2ludCB2YWx1ZSAqLworIAl9IGlsZl91OworLQlfX2ludDY0X3QJCWlsZl9ibGtubzsJLyogYmxrbm8gb2YgaW5vZGUgYnVmZmVyICovCistCV9faW50MzJfdAkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLworLQlfX2ludDMyX3QJCWlsZl9ib2Zmc2V0OwkvKiBvZmYgb2YgaW5vZGUgaW4gYnVmZmVyICovCisrCWludDY0X3QJCQlpbGZfYmxrbm87CS8qIGJsa25vIG9mIGlub2RlIGJ1ZmZlciAqLworKwlpbnQzMl90CQkJaWxmX2xlbjsJLyogbGVuIG9mIGlub2RlIGJ1ZmZlciAqLworKwlpbnQzMl90CQkJaWxmX2JvZmZzZXQ7CS8qIG9mZiBvZiBpbm9kZSBpbiBidWZmZXIgKi8KKyB9IHhmc19pbm9kZV9sb2dfZm9ybWF0XzY0X3Q7CisgCisgCitAQCAtMzc5LDggKzM3OSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHhmc19pbG9nX2ZkYXRhKGludCB3KQorICAqIGluZm9ybWF0aW9uLgorICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19pY3RpbWVzdGFtcCB7CistCV9faW50MzJfdAl0X3NlYzsJCS8qIHRpbWVzdGFtcCBzZWNvbmRzICovCistCV9faW50MzJfdAl0X25zZWM7CQkvKiB0aW1lc3RhbXAgbmFub3NlY29uZHMgKi8KKysJaW50MzJfdAkJdF9zZWM7CQkvKiB0aW1lc3RhbXAgc2Vjb25kcyAqLworKwlpbnQzMl90CQl0X25zZWM7CQkvKiB0aW1lc3RhbXAgbmFub3NlY29uZHMgKi8KKyB9IHhmc19pY3RpbWVzdGFtcF90OworIAorIC8qCitAQCAtMzg4LDE4ICszODgsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX2ljdGltZXN0YW1wIHsKKyAgKiBrZXB0IGlkZW50aWNhbCB0byBzdHJ1Y3QgeGZzX2Rpbm9kZSBleGNlcHQgZm9yIHRoZSBlbmRpYW5uZXNzIGFubm90YXRpb25zLgorICAqLworIHN0cnVjdCB4ZnNfbG9nX2Rpbm9kZSB7CistCV9fdWludDE2X3QJZGlfbWFnaWM7CS8qIGlub2RlIG1hZ2ljICMgPSBYRlNfRElOT0RFX01BR0lDICovCistCV9fdWludDE2X3QJZGlfbW9kZTsJLyogbW9kZSBhbmQgdHlwZSBvZiBmaWxlICovCistCV9faW50OF90CWRpX3ZlcnNpb247CS8qIGlub2RlIHZlcnNpb24gKi8KKy0JX19pbnQ4X3QJZGlfZm9ybWF0OwkvKiBmb3JtYXQgb2YgZGlfYyBkYXRhICovCistCV9fdWludDhfdAlkaV9wYWQzWzJdOwkvKiB1bnVzZWQgaW4gdjIvMyBpbm9kZXMgKi8KKy0JX191aW50MzJfdAlkaV91aWQ7CQkvKiBvd25lcidzIHVzZXIgaWQgKi8KKy0JX191aW50MzJfdAlkaV9naWQ7CQkvKiBvd25lcidzIGdyb3VwIGlkICovCistCV9fdWludDMyX3QJZGlfbmxpbms7CS8qIG51bWJlciBvZiBsaW5rcyB0byBmaWxlICovCistCV9fdWludDE2X3QJZGlfcHJvamlkX2xvOwkvKiBsb3dlciBwYXJ0IG9mIG93bmVyJ3MgcHJvamVjdCBpZCAqLworLQlfX3VpbnQxNl90CWRpX3Byb2ppZF9oaTsJLyogaGlnaGVyIHBhcnQgb2Ygb3duZXIncyBwcm9qZWN0IGlkICovCistCV9fdWludDhfdAlkaV9wYWRbNl07CS8qIHVudXNlZCwgemVyb2VkIHNwYWNlICovCistCV9fdWludDE2X3QJZGlfZmx1c2hpdGVyOwkvKiBpbmNyZW1lbnRlZCBvbiBmbHVzaCAqLworKwl1aW50MTZfdAlkaV9tYWdpYzsJLyogaW5vZGUgbWFnaWMgIyA9IFhGU19ESU5PREVfTUFHSUMgKi8KKysJdWludDE2X3QJZGlfbW9kZTsJLyogbW9kZSBhbmQgdHlwZSBvZiBmaWxlICovCisrCWludDhfdAkJZGlfdmVyc2lvbjsJLyogaW5vZGUgdmVyc2lvbiAqLworKwlpbnQ4X3QJCWRpX2Zvcm1hdDsJLyogZm9ybWF0IG9mIGRpX2MgZGF0YSAqLworKwl1aW50OF90CQlkaV9wYWQzWzJdOwkvKiB1bnVzZWQgaW4gdjIvMyBpbm9kZXMgKi8KKysJdWludDMyX3QJZGlfdWlkOwkJLyogb3duZXIncyB1c2VyIGlkICovCisrCXVpbnQzMl90CWRpX2dpZDsJCS8qIG93bmVyJ3MgZ3JvdXAgaWQgKi8KKysJdWludDMyX3QJZGlfbmxpbms7CS8qIG51bWJlciBvZiBsaW5rcyB0byBmaWxlICovCisrCXVpbnQxNl90CWRpX3Byb2ppZF9sbzsJLyogbG93ZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KKysJdWludDE2X3QJZGlfcHJvamlkX2hpOwkvKiBoaWdoZXIgcGFydCBvZiBvd25lcidzIHByb2plY3QgaWQgKi8KKysJdWludDhfdAkJZGlfcGFkWzZdOwkvKiB1bnVzZWQsIHplcm9lZCBzcGFjZSAqLworKwl1aW50MTZfdAlkaV9mbHVzaGl0ZXI7CS8qIGluY3JlbWVudGVkIG9uIGZsdXNoICovCisgCXhmc19pY3RpbWVzdGFtcF90IGRpX2F0aW1lOwkvKiB0aW1lIGxhc3QgYWNjZXNzZWQgKi8KKyAJeGZzX2ljdGltZXN0YW1wX3QgZGlfbXRpbWU7CS8qIHRpbWUgbGFzdCBtb2RpZmllZCAqLworIAl4ZnNfaWN0aW1lc3RhbXBfdCBkaV9jdGltZTsJLyogdGltZSBjcmVhdGVkL2lub2RlIG1vZGlmaWVkICovCitAQCAtNDA4LDIzICs0MDgsMjMgQEAgc3RydWN0IHhmc19sb2dfZGlub2RlIHsKKyAJeGZzX2V4dGxlbl90CWRpX2V4dHNpemU7CS8qIGJhc2ljL21pbmltdW0gZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKyAJeGZzX2V4dG51bV90CWRpX25leHRlbnRzOwkvKiBudW1iZXIgb2YgZXh0ZW50cyBpbiBkYXRhIGZvcmsgKi8KKyAJeGZzX2FleHRudW1fdAlkaV9hbmV4dGVudHM7CS8qIG51bWJlciBvZiBleHRlbnRzIGluIGF0dHJpYnV0ZSBmb3JrKi8KKy0JX191aW50OF90CWRpX2ZvcmtvZmY7CS8qIGF0dHIgZm9yayBvZmZzLCA8PDMgZm9yIDY0YiBhbGlnbiAqLworLQlfX2ludDhfdAlkaV9hZm9ybWF0OwkvKiBmb3JtYXQgb2YgYXR0ciBmb3JrJ3MgZGF0YSAqLworLQlfX3VpbnQzMl90CWRpX2RtZXZtYXNrOwkvKiBETUlHIGV2ZW50IG1hc2sgKi8KKy0JX191aW50MTZfdAlkaV9kbXN0YXRlOwkvKiBETUlHIHN0YXRlIGluZm8gKi8KKy0JX191aW50MTZfdAlkaV9mbGFnczsJLyogcmFuZG9tIGZsYWdzLCBYRlNfRElGTEFHXy4uLiAqLworLQlfX3VpbnQzMl90CWRpX2dlbjsJCS8qIGdlbmVyYXRpb24gbnVtYmVyICovCisrCXVpbnQ4X3QJCWRpX2ZvcmtvZmY7CS8qIGF0dHIgZm9yayBvZmZzLCA8PDMgZm9yIDY0YiBhbGlnbiAqLworKwlpbnQ4X3QJCWRpX2Fmb3JtYXQ7CS8qIGZvcm1hdCBvZiBhdHRyIGZvcmsncyBkYXRhICovCisrCXVpbnQzMl90CWRpX2RtZXZtYXNrOwkvKiBETUlHIGV2ZW50IG1hc2sgKi8KKysJdWludDE2X3QJZGlfZG1zdGF0ZTsJLyogRE1JRyBzdGF0ZSBpbmZvICovCisrCXVpbnQxNl90CWRpX2ZsYWdzOwkvKiByYW5kb20gZmxhZ3MsIFhGU19ESUZMQUdfLi4uICovCisrCXVpbnQzMl90CWRpX2dlbjsJCS8qIGdlbmVyYXRpb24gbnVtYmVyICovCisgCisgCS8qIGRpX25leHRfdW5saW5rZWQgaXMgdGhlIG9ubHkgbm9uLWNvcmUgZmllbGQgaW4gdGhlIG9sZCBkaW5vZGUgKi8KKyAJeGZzX2FnaW5vX3QJZGlfbmV4dF91bmxpbmtlZDsvKiBhZ2kgdW5saW5rZWQgbGlzdCBwdHIgKi8KKyAKKyAJLyogc3RhcnQgb2YgdGhlIGV4dGVuZGVkIGRpbm9kZSwgd3JpdGFibGUgZmllbGRzICovCistCV9fdWludDMyX3QJZGlfY3JjOwkJLyogQ1JDIG9mIHRoZSBpbm9kZSAqLworLQlfX3VpbnQ2NF90CWRpX2NoYW5nZWNvdW50OwkvKiBudW1iZXIgb2YgYXR0cmlidXRlIGNoYW5nZXMgKi8KKysJdWludDMyX3QJZGlfY3JjOwkJLyogQ1JDIG9mIHRoZSBpbm9kZSAqLworKwl1aW50NjRfdAlkaV9jaGFuZ2Vjb3VudDsJLyogbnVtYmVyIG9mIGF0dHJpYnV0ZSBjaGFuZ2VzICovCisgCXhmc19sc25fdAlkaV9sc247CQkvKiBmbHVzaCBzZXF1ZW5jZSAqLworLQlfX3VpbnQ2NF90CWRpX2ZsYWdzMjsJLyogbW9yZSByYW5kb20gZmxhZ3MgKi8KKy0JX191aW50MzJfdAlkaV9jb3dleHRzaXplOwkvKiBiYXNpYyBjb3cgZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKy0JX191aW50OF90CWRpX3BhZDJbMTJdOwkvKiBtb3JlIHBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKysJdWludDY0X3QJZGlfZmxhZ3MyOwkvKiBtb3JlIHJhbmRvbSBmbGFncyAqLworKwl1aW50MzJfdAlkaV9jb3dleHRzaXplOwkvKiBiYXNpYyBjb3cgZXh0ZW50IHNpemUgZm9yIGZpbGUgKi8KKysJdWludDhfdAkJZGlfcGFkMlsxMl07CS8qIG1vcmUgcGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworIAorIAkvKiBmaWVsZHMgb25seSB3cml0dGVuIHRvIGR1cmluZyBpbm9kZSBjcmVhdGlvbiAqLworIAl4ZnNfaWN0aW1lc3RhbXBfdCBkaV9jcnRpbWU7CS8qIHRpbWUgY3JlYXRlZCAqLworQEAgLTQ4Myw3ICs0ODMsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfYnVmX2xvZ19mb3JtYXQgeworIAl1bnNpZ25lZCBzaG9ydAlibGZfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKyAJdW5zaWduZWQgc2hvcnQJYmxmX2ZsYWdzOwkvKiBtaXNjIHN0YXRlICovCisgCXVuc2lnbmVkIHNob3J0CWJsZl9sZW47CS8qIG51bWJlciBvZiBibG9ja3MgaW4gdGhpcyBidWYgKi8KKy0JX19pbnQ2NF90CWJsZl9ibGtubzsJLyogc3RhcnRpbmcgYmxrbm8gb2YgdGhpcyBidWYgKi8KKysJaW50NjRfdAkJYmxmX2Jsa25vOwkvKiBzdGFydGluZyBibGtubyBvZiB0aGlzIGJ1ZiAqLworIAl1bnNpZ25lZCBpbnQJYmxmX21hcF9zaXplOwkvKiB1c2VkIHNpemUgb2YgZGF0YSBiaXRtYXAgaW4gd29yZHMgKi8KKyAJdW5zaWduZWQgaW50CWJsZl9kYXRhX21hcFtYRlNfQkxGX0RBVEFNQVBfU0laRV07IC8qIGRpcnR5IGJpdG1hcCAqLworIH0geGZzX2J1Zl9sb2dfZm9ybWF0X3Q7CitAQCAtNTMzLDcgKzUzMyw3IEBAIHhmc19ibGZ0X3RvX2ZsYWdzKHN0cnVjdCB4ZnNfYnVmX2xvZ19mb3JtYXQgKmJsZiwgZW51bSB4ZnNfYmxmdCB0eXBlKQorIAlibGYtPmJsZl9mbGFncyB8PSAoKHR5cGUgPDwgWEZTX0JMRlRfU0hJRlQpICYgWEZTX0JMRlRfTUFTSyk7CisgfQorIAorLXN0YXRpYyBpbmxpbmUgX191aW50MTZfdAorK3N0YXRpYyBpbmxpbmUgdWludDE2X3QKKyB4ZnNfYmxmdF9mcm9tX2ZsYWdzKHN0cnVjdCB4ZnNfYnVmX2xvZ19mb3JtYXQgKmJsZikKKyB7CisgCXJldHVybiAoYmxmLT5ibGZfZmxhZ3MgJiBYRlNfQkxGVF9NQVNLKSA+PiBYRlNfQkxGVF9TSElGVDsKK0BAIC01NTQsMTQgKzU1NCwxNCBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfZXh0ZW50IHsKKyAgKiBjb252ZXJzaW9uIHJvdXRpbmUuCisgICovCisgdHlwZWRlZiBzdHJ1Y3QgeGZzX2V4dGVudF8zMiB7CistCV9fdWludDY0X3QJZXh0X3N0YXJ0OworLQlfX3VpbnQzMl90CWV4dF9sZW47CisrCXVpbnQ2NF90CWV4dF9zdGFydDsKKysJdWludDMyX3QJZXh0X2xlbjsKKyB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHhmc19leHRlbnRfMzJfdDsKKyAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZXh0ZW50XzY0IHsKKy0JX191aW50NjRfdAlleHRfc3RhcnQ7CistCV9fdWludDMyX3QJZXh0X2xlbjsKKy0JX191aW50MzJfdAlleHRfcGFkOworKwl1aW50NjRfdAlleHRfc3RhcnQ7CisrCXVpbnQzMl90CWV4dF9sZW47CisrCXVpbnQzMl90CWV4dF9wYWQ7CisgfSB4ZnNfZXh0ZW50XzY0X3Q7CisgCisgLyoKK0BAIC01NzAsMjYgKzU3MCwyNiBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfZXh0ZW50XzY0IHsKKyAgKiBzaXplIGlzIGdpdmVuIGJ5IGVmaV9uZXh0ZW50cy4KKyAgKi8KKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZWZpX2xvZ19mb3JtYXQgeworLQlfX3VpbnQxNl90CQllZmlfdHlwZTsJLyogZWZpIGxvZyBpdGVtIHR5cGUgKi8KKy0JX191aW50MTZfdAkJZWZpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCistCV9fdWludDMyX3QJCWVmaV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKy0JX191aW50NjRfdAkJZWZpX2lkOwkJLyogZWZpIGlkZW50aWZpZXIgKi8KKysJdWludDE2X3QJCWVmaV90eXBlOwkvKiBlZmkgbG9nIGl0ZW0gdHlwZSAqLworKwl1aW50MTZfdAkJZWZpX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCisrCXVpbnQzMl90CQllZmlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCisrCXVpbnQ2NF90CQllZmlfaWQ7CQkvKiBlZmkgaWRlbnRpZmllciAqLworIAl4ZnNfZXh0ZW50X3QJCWVmaV9leHRlbnRzWzFdOwkvKiBhcnJheSBvZiBleHRlbnRzIHRvIGZyZWUgKi8KKyB9IHhmc19lZmlfbG9nX2Zvcm1hdF90OworIAorIHR5cGVkZWYgc3RydWN0IHhmc19lZmlfbG9nX2Zvcm1hdF8zMiB7CistCV9fdWludDE2X3QJCWVmaV90eXBlOwkvKiBlZmkgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQllZmlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJZWZpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworLQlfX3VpbnQ2NF90CQllZmlfaWQ7CQkvKiBlZmkgaWRlbnRpZmllciAqLworKwl1aW50MTZfdAkJZWZpX3R5cGU7CS8qIGVmaSBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQllZmlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCWVmaV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKysJdWludDY0X3QJCWVmaV9pZDsJCS8qIGVmaSBpZGVudGlmaWVyICovCisgCXhmc19leHRlbnRfMzJfdAkJZWZpX2V4dGVudHNbMV07CS8qIGFycmF5IG9mIGV4dGVudHMgdG8gZnJlZSAqLworIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgeGZzX2VmaV9sb2dfZm9ybWF0XzMyX3Q7CisgCisgdHlwZWRlZiBzdHJ1Y3QgeGZzX2VmaV9sb2dfZm9ybWF0XzY0IHsKKy0JX191aW50MTZfdAkJZWZpX3R5cGU7CS8qIGVmaSBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCWVmaV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworLQlfX3VpbnQzMl90CQllZmlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCistCV9fdWludDY0X3QJCWVmaV9pZDsJCS8qIGVmaSBpZGVudGlmaWVyICovCisrCXVpbnQxNl90CQllZmlfdHlwZTsJLyogZWZpIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWVmaV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJZWZpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworKwl1aW50NjRfdAkJZWZpX2lkOwkJLyogZWZpIGlkZW50aWZpZXIgKi8KKyAJeGZzX2V4dGVudF82NF90CQllZmlfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyB0byBmcmVlICovCisgfSB4ZnNfZWZpX2xvZ19mb3JtYXRfNjRfdDsKKyAKK0BAIC01OTksMjYgKzU5OSwyNiBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfZWZpX2xvZ19mb3JtYXRfNjQgeworICAqIHNpemUgaXMgZ2l2ZW4gYnkgZWZkX25leHRlbnRzOworICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19lZmRfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCWVmZF90eXBlOwkvKiBlZmQgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQllZmRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJZWZkX25leHRlbnRzOwkvKiAjIG9mIGV4dGVudHMgZnJlZWQgKi8KKy0JX191aW50NjRfdAkJZWZkX2VmaV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBlZmkgKi8KKysJdWludDE2X3QJCWVmZF90eXBlOwkvKiBlZmQgbG9nIGl0ZW0gdHlwZSAqLworKwl1aW50MTZfdAkJZWZkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCisrCXVpbnQzMl90CQllZmRfbmV4dGVudHM7CS8qICMgb2YgZXh0ZW50cyBmcmVlZCAqLworKwl1aW50NjRfdAkJZWZkX2VmaV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBlZmkgKi8KKyAJeGZzX2V4dGVudF90CQllZmRfZXh0ZW50c1sxXTsJLyogYXJyYXkgb2YgZXh0ZW50cyBmcmVlZCAqLworIH0geGZzX2VmZF9sb2dfZm9ybWF0X3Q7CisgCisgdHlwZWRlZiBzdHJ1Y3QgeGZzX2VmZF9sb2dfZm9ybWF0XzMyIHsKKy0JX191aW50MTZfdAkJZWZkX3R5cGU7CS8qIGVmZCBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCWVmZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworLQlfX3VpbnQzMl90CQllZmRfbmV4dGVudHM7CS8qICMgb2YgZXh0ZW50cyBmcmVlZCAqLworLQlfX3VpbnQ2NF90CQllZmRfZWZpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGVmaSAqLworKwl1aW50MTZfdAkJZWZkX3R5cGU7CS8qIGVmZCBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQllZmRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCWVmZF9uZXh0ZW50czsJLyogIyBvZiBleHRlbnRzIGZyZWVkICovCisrCXVpbnQ2NF90CQllZmRfZWZpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGVmaSAqLworIAl4ZnNfZXh0ZW50XzMyX3QJCWVmZF9leHRlbnRzWzFdOwkvKiBhcnJheSBvZiBleHRlbnRzIGZyZWVkICovCisgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB4ZnNfZWZkX2xvZ19mb3JtYXRfMzJfdDsKKyAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfZWZkX2xvZ19mb3JtYXRfNjQgeworLQlfX3VpbnQxNl90CQllZmRfdHlwZTsJLyogZWZkIGxvZyBpdGVtIHR5cGUgKi8KKy0JX191aW50MTZfdAkJZWZkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCistCV9fdWludDMyX3QJCWVmZF9uZXh0ZW50czsJLyogIyBvZiBleHRlbnRzIGZyZWVkICovCistCV9fdWludDY0X3QJCWVmZF9lZmlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgZWZpICovCisrCXVpbnQxNl90CQllZmRfdHlwZTsJLyogZWZkIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWVmZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJZWZkX25leHRlbnRzOwkvKiAjIG9mIGV4dGVudHMgZnJlZWQgKi8KKysJdWludDY0X3QJCWVmZF9lZmlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgZWZpICovCisgCXhmc19leHRlbnRfNjRfdAkJZWZkX2V4dGVudHNbMV07CS8qIGFycmF5IG9mIGV4dGVudHMgZnJlZWQgKi8KKyB9IHhmc19lZmRfbG9nX2Zvcm1hdF82NF90OworIAorQEAgLTYyNiwxMSArNjI2LDExIEBAIHR5cGVkZWYgc3RydWN0IHhmc19lZmRfbG9nX2Zvcm1hdF82NCB7CisgICogUlVJL1JVRCAocmV2ZXJzZSBtYXBwaW5nKSBsb2cgZm9ybWF0IGRlZmluaXRpb25zCisgICovCisgc3RydWN0IHhmc19tYXBfZXh0ZW50IHsKKy0JX191aW50NjRfdAkJbWVfb3duZXI7CistCV9fdWludDY0X3QJCW1lX3N0YXJ0YmxvY2s7CistCV9fdWludDY0X3QJCW1lX3N0YXJ0b2ZmOworLQlfX3VpbnQzMl90CQltZV9sZW47CistCV9fdWludDMyX3QJCW1lX2ZsYWdzOworKwl1aW50NjRfdAkJbWVfb3duZXI7CisrCXVpbnQ2NF90CQltZV9zdGFydGJsb2NrOworKwl1aW50NjRfdAkJbWVfc3RhcnRvZmY7CisrCXVpbnQzMl90CQltZV9sZW47CisrCXVpbnQzMl90CQltZV9mbGFnczsKKyB9OworIAorIC8qIHJtYXAgbWVfZmxhZ3M6IHVwcGVyIGJpdHMgYXJlIGZsYWdzLCBsb3dlciBieXRlIGlzIHR5cGUgY29kZSAqLworQEAgLTY1OSwxMCArNjU5LDEwIEBAIHN0cnVjdCB4ZnNfbWFwX2V4dGVudCB7CisgICogc2l6ZSBpcyBnaXZlbiBieSBydWlfbmV4dGVudHMuCisgICovCisgc3RydWN0IHhmc19ydWlfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCXJ1aV90eXBlOwkvKiBydWkgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlydWlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJcnVpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworLQlfX3VpbnQ2NF90CQlydWlfaWQ7CQkvKiBydWkgaWRlbnRpZmllciAqLworKwl1aW50MTZfdAkJcnVpX3R5cGU7CS8qIHJ1aSBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQlydWlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCXJ1aV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKysJdWludDY0X3QJCXJ1aV9pZDsJCS8qIHJ1aSBpZGVudGlmaWVyICovCisgCXN0cnVjdCB4ZnNfbWFwX2V4dGVudAlydWlfZXh0ZW50c1tdOwkvKiBhcnJheSBvZiBleHRlbnRzIHRvIHJtYXAgKi8KKyB9OworIAorQEAgLTY4MCwxOSArNjgwLDE5IEBAIHhmc19ydWlfbG9nX2Zvcm1hdF9zaXplb2YoCisgICogc2l6ZSBpcyBnaXZlbiBieSBydWRfbmV4dGVudHM7CisgICovCisgc3RydWN0IHhmc19ydWRfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCXJ1ZF90eXBlOwkvKiBydWQgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlydWRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJX19wYWQ7CistCV9fdWludDY0X3QJCXJ1ZF9ydWlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgcnVpICovCisrCXVpbnQxNl90CQlydWRfdHlwZTsJLyogcnVkIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCXJ1ZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJX19wYWQ7CisrCXVpbnQ2NF90CQlydWRfcnVpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIHJ1aSAqLworIH07CisgCisgLyoKKyAgKiBDVUkvQ1VEIChyZWZjb3VudCB1cGRhdGUpIGxvZyBmb3JtYXQgZGVmaW5pdGlvbnMKKyAgKi8KKyBzdHJ1Y3QgeGZzX3BoeXNfZXh0ZW50IHsKKy0JX191aW50NjRfdAkJcGVfc3RhcnRibG9jazsKKy0JX191aW50MzJfdAkJcGVfbGVuOworLQlfX3VpbnQzMl90CQlwZV9mbGFnczsKKysJdWludDY0X3QJCXBlX3N0YXJ0YmxvY2s7CisrCXVpbnQzMl90CQlwZV9sZW47CisrCXVpbnQzMl90CQlwZV9mbGFnczsKKyB9OworIAorIC8qIHJlZmNvdW50IHBlX2ZsYWdzOiB1cHBlciBiaXRzIGFyZSBmbGFncywgbG93ZXIgYnl0ZSBpcyB0eXBlIGNvZGUgKi8KK0BAIC03MDcsMTAgKzcwNywxMCBAQCBzdHJ1Y3QgeGZzX3BoeXNfZXh0ZW50IHsKKyAgKiBzaXplIGlzIGdpdmVuIGJ5IGN1aV9uZXh0ZW50cy4KKyAgKi8KKyBzdHJ1Y3QgeGZzX2N1aV9sb2dfZm9ybWF0IHsKKy0JX191aW50MTZfdAkJY3VpX3R5cGU7CS8qIGN1aSBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCWN1aV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworLQlfX3VpbnQzMl90CQljdWlfbmV4dGVudHM7CS8qICMgZXh0ZW50cyB0byBmcmVlICovCistCV9fdWludDY0X3QJCWN1aV9pZDsJCS8qIGN1aSBpZGVudGlmaWVyICovCisrCXVpbnQxNl90CQljdWlfdHlwZTsJLyogY3VpIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWN1aV9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJY3VpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworKwl1aW50NjRfdAkJY3VpX2lkOwkJLyogY3VpIGlkZW50aWZpZXIgKi8KKyAJc3RydWN0IHhmc19waHlzX2V4dGVudAljdWlfZXh0ZW50c1tdOwkvKiBhcnJheSBvZiBleHRlbnRzICovCisgfTsKKyAKK0BAIC03MjgsMTAgKzcyOCwxMCBAQCB4ZnNfY3VpX2xvZ19mb3JtYXRfc2l6ZW9mKAorICAqIHNpemUgaXMgZ2l2ZW4gYnkgY3VkX25leHRlbnRzOworICAqLworIHN0cnVjdCB4ZnNfY3VkX2xvZ19mb3JtYXQgeworLQlfX3VpbnQxNl90CQljdWRfdHlwZTsJLyogY3VkIGxvZyBpdGVtIHR5cGUgKi8KKy0JX191aW50MTZfdAkJY3VkX3NpemU7CS8qIHNpemUgb2YgdGhpcyBpdGVtICovCistCV9fdWludDMyX3QJCV9fcGFkOworLQlfX3VpbnQ2NF90CQljdWRfY3VpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGN1aSAqLworKwl1aW50MTZfdAkJY3VkX3R5cGU7CS8qIGN1ZCBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQljdWRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCV9fcGFkOworKwl1aW50NjRfdAkJY3VkX2N1aV9pZDsJLyogaWQgb2YgY29ycmVzcG9uZGluZyBjdWkgKi8KKyB9OworIAorIC8qCitAQCAtNzU1LDEwICs3NTUsMTAgQEAgc3RydWN0IHhmc19jdWRfbG9nX2Zvcm1hdCB7CisgICogc2l6ZSBpcyBnaXZlbiBieSBidWlfbmV4dGVudHMuCisgICovCisgc3RydWN0IHhmc19idWlfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCWJ1aV90eXBlOwkvKiBidWkgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlidWlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJYnVpX25leHRlbnRzOwkvKiAjIGV4dGVudHMgdG8gZnJlZSAqLworLQlfX3VpbnQ2NF90CQlidWlfaWQ7CQkvKiBidWkgaWRlbnRpZmllciAqLworKwl1aW50MTZfdAkJYnVpX3R5cGU7CS8qIGJ1aSBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQlidWlfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKysJdWludDMyX3QJCWJ1aV9uZXh0ZW50czsJLyogIyBleHRlbnRzIHRvIGZyZWUgKi8KKysJdWludDY0X3QJCWJ1aV9pZDsJCS8qIGJ1aSBpZGVudGlmaWVyICovCisgCXN0cnVjdCB4ZnNfbWFwX2V4dGVudAlidWlfZXh0ZW50c1tdOwkvKiBhcnJheSBvZiBleHRlbnRzIHRvIGJtYXAgKi8KKyB9OworIAorQEAgLTc3NiwxMCArNzc2LDEwIEBAIHhmc19idWlfbG9nX2Zvcm1hdF9zaXplb2YoCisgICogc2l6ZSBpcyBnaXZlbiBieSBidWRfbmV4dGVudHM7CisgICovCisgc3RydWN0IHhmc19idWRfbG9nX2Zvcm1hdCB7CistCV9fdWludDE2X3QJCWJ1ZF90eXBlOwkvKiBidWQgbG9nIGl0ZW0gdHlwZSAqLworLQlfX3VpbnQxNl90CQlidWRfc2l6ZTsJLyogc2l6ZSBvZiB0aGlzIGl0ZW0gKi8KKy0JX191aW50MzJfdAkJX19wYWQ7CistCV9fdWludDY0X3QJCWJ1ZF9idWlfaWQ7CS8qIGlkIG9mIGNvcnJlc3BvbmRpbmcgYnVpICovCisrCXVpbnQxNl90CQlidWRfdHlwZTsJLyogYnVkIGxvZyBpdGVtIHR5cGUgKi8KKysJdWludDE2X3QJCWJ1ZF9zaXplOwkvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworKwl1aW50MzJfdAkJX19wYWQ7CisrCXVpbnQ2NF90CQlidWRfYnVpX2lkOwkvKiBpZCBvZiBjb3JyZXNwb25kaW5nIGJ1aSAqLworIH07CisgCisgLyoKK0BAIC03ODksMTIgKzc4OSwxMiBAQCBzdHJ1Y3QgeGZzX2J1ZF9sb2dfZm9ybWF0IHsKKyAgKiAzMiBiaXRzIDogbG9nX3JlY292ZXJ5IGNvZGUgYXNzdW1lcyB0aGF0LgorICAqLworIHR5cGVkZWYgc3RydWN0IHhmc19kcV9sb2dmb3JtYXQgeworLQlfX3VpbnQxNl90CQlxbGZfdHlwZTsgICAgICAvKiBkcXVvdCBsb2cgaXRlbSB0eXBlICovCistCV9fdWludDE2X3QJCXFsZl9zaXplOyAgICAgIC8qIHNpemUgb2YgdGhpcyBpdGVtICovCisrCXVpbnQxNl90CQlxbGZfdHlwZTsgICAgICAvKiBkcXVvdCBsb2cgaXRlbSB0eXBlICovCisrCXVpbnQxNl90CQlxbGZfc2l6ZTsgICAgICAvKiBzaXplIG9mIHRoaXMgaXRlbSAqLworIAl4ZnNfZHFpZF90CQlxbGZfaWQ7CSAgICAgICAvKiB1c3IvZ3JwL3Byb2ogaWQgOiAzMiBiaXRzICovCistCV9faW50NjRfdAkJcWxmX2Jsa25vOyAgICAgLyogYmxrbm8gb2YgZHF1b3QgYnVmZmVyICovCistCV9faW50MzJfdAkJcWxmX2xlbjsgICAgICAgLyogbGVuIG9mIGRxdW90IGJ1ZmZlciAqLworLQlfX3VpbnQzMl90CQlxbGZfYm9mZnNldDsgICAvKiBvZmYgb2YgZHF1b3QgaW4gYnVmZmVyICovCisrCWludDY0X3QJCQlxbGZfYmxrbm87ICAgICAvKiBibGtubyBvZiBkcXVvdCBidWZmZXIgKi8KKysJaW50MzJfdAkJCXFsZl9sZW47ICAgICAgIC8qIGxlbiBvZiBkcXVvdCBidWZmZXIgKi8KKysJdWludDMyX3QJCXFsZl9ib2Zmc2V0OyAgIC8qIG9mZiBvZiBkcXVvdCBpbiBidWZmZXIgKi8KKyB9IHhmc19kcV9sb2dmb3JtYXRfdDsKKyAKKyAvKgorQEAgLTg1Myw4ICs4NTMsOCBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfcW9mZl9sb2dmb3JtYXQgeworICAqIGRlY29kaW5nIGNhbiBiZSBkb25lIGNvcnJlY3RseS4KKyAgKi8KKyBzdHJ1Y3QgeGZzX2ljcmVhdGVfbG9nIHsKKy0JX191aW50MTZfdAlpY2xfdHlwZTsJLyogdHlwZSBvZiBsb2cgZm9ybWF0IHN0cnVjdHVyZSAqLworLQlfX3VpbnQxNl90CWljbF9zaXplOwkvKiBzaXplIG9mIGxvZyBmb3JtYXQgc3RydWN0dXJlICovCisrCXVpbnQxNl90CWljbF90eXBlOwkvKiB0eXBlIG9mIGxvZyBmb3JtYXQgc3RydWN0dXJlICovCisrCXVpbnQxNl90CWljbF9zaXplOwkvKiBzaXplIG9mIGxvZyBmb3JtYXQgc3RydWN0dXJlICovCisgCV9fYmUzMgkJaWNsX2FnOwkJLyogYWcgYmVpbmcgYWxsb2NhdGVkIGluICovCisgCV9fYmUzMgkJaWNsX2FnYm5vOwkvKiBzdGFydCBibG9jayBvZiBpbm9kZSByYW5nZSAqLworIAlfX2JlMzIJCWljbF9jb3VudDsJLyogbnVtYmVyIG9mIGlub2RlcyB0byBpbml0aWFsaXNlICovCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19xdW90YV9kZWZzLmggYi9saWJ4ZnMveGZzX3F1b3RhX2RlZnMuaAoraW5kZXggOGVlZDUxMjcuLmQ2OWM3NzIyIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19xdW90YV9kZWZzLmgKKysrKyBiL2xpYnhmcy94ZnNfcXVvdGFfZGVmcy5oCitAQCAtMjcsOCArMjcsOCBAQAorICAqIHRoZXkgbWF5IG5lZWQgNjQtYml0IGFjY291bnRpbmcuIEhlbmNlLCA2NC1iaXQgcXVvdGEtY291bnRlcnMsCisgICogYW5kIHF1b3RhLWxpbWl0cy4gVGhpcyBpcyBhIHdhc3RlIGluIHRoZSBjb21tb24gY2FzZSwgYnV0IGhleSAuLi4KKyAgKi8KKy10eXBlZGVmIF9fdWludDY0X3QJeGZzX3FjbnRfdDsKKy10eXBlZGVmIF9fdWludDE2X3QJeGZzX3F3YXJuY250X3Q7CisrdHlwZWRlZiB1aW50NjRfdAl4ZnNfcWNudF90OworK3R5cGVkZWYgdWludDE2X3QJeGZzX3F3YXJuY250X3Q7CisgCisgLyoKKyAgKiBmbGFncyBmb3IgcV9mbGFncyBmaWVsZCBpbiB0aGUgZHF1b3QuCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19yZWZjb3VudF9idHJlZS5jIGIvbGlieGZzL3hmc19yZWZjb3VudF9idHJlZS5jCitpbmRleCAyODE0Zjk0Zi4uYmQxYThmMmQgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3JlZmNvdW50X2J0cmVlLmMKKysrKyBiL2xpYnhmcy94ZnNfcmVmY291bnRfYnRyZWUuYworQEAgLTIwMSw3ICsyMDEsNyBAQCB4ZnNfcmVmY291bnRidF9pbml0X3B0cl9mcm9tX2N1cigKKyAJcHRyLT5zID0gYWdmLT5hZ2ZfcmVmY291bnRfcm9vdDsKKyB9CisgCistU1RBVElDIF9faW50NjRfdAorK1NUQVRJQyBpbnQ2NF90CisgeGZzX3JlZmNvdW50YnRfa2V5X2RpZmYoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmtleSkKK0BAIC0yMDksMTYgKzIwOSwxNiBAQCB4ZnNfcmVmY291bnRidF9rZXlfZGlmZigKKyAJc3RydWN0IHhmc19yZWZjb3VudF9pcmVjCSpyZWMgPSAmY3VyLT5iY19yZWMucmM7CisgCXN0cnVjdCB4ZnNfcmVmY291bnRfa2V5CQkqa3AgPSAma2V5LT5yZWZjOworIAorLQlyZXR1cm4gKF9faW50NjRfdCliZTMyX3RvX2NwdShrcC0+cmNfc3RhcnRibG9jaykgLSByZWMtPnJjX3N0YXJ0YmxvY2s7CisrCXJldHVybiAoaW50NjRfdCliZTMyX3RvX2NwdShrcC0+cmNfc3RhcnRibG9jaykgLSByZWMtPnJjX3N0YXJ0YmxvY2s7CisgfQorIAorLVNUQVRJQyBfX2ludDY0X3QKKytTVEFUSUMgaW50NjRfdAorIHhmc19yZWZjb3VudGJ0X2RpZmZfdHdvX2tleXMoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmsxLAorIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprMikKKyB7CistCXJldHVybiAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGsxLT5yZWZjLnJjX3N0YXJ0YmxvY2spIC0KKysJcmV0dXJuIChpbnQ2NF90KWJlMzJfdG9fY3B1KGsxLT5yZWZjLnJjX3N0YXJ0YmxvY2spIC0KKyAJCQkgIGJlMzJfdG9fY3B1KGsyLT5yZWZjLnJjX3N0YXJ0YmxvY2spOworIH0KKyAKK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3JtYXAuYyBiL2xpYnhmcy94ZnNfcm1hcC5jCitpbmRleCBmNzg3NzFkMS4uMGQ2YjVkNDEgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3JtYXAuYworKysrIGIvbGlieGZzL3hmc19ybWFwLmMKK0BAIC0yMDU5LDcgKzIwNTksNyBAQCBpbnQKKyB4ZnNfcm1hcF9maW5pc2hfb25lKAorIAlzdHJ1Y3QgeGZzX3RyYW5zCQkqdHAsCisgCWVudW0geGZzX3JtYXBfaW50ZW50X3R5cGUJdHlwZSwKKy0JX191aW50NjRfdAkJCW93bmVyLAorKwl1aW50NjRfdAkJCW93bmVyLAorIAlpbnQJCQkJd2hpY2hmb3JrLAorIAl4ZnNfZmlsZW9mZl90CQkJc3RhcnRvZmYsCisgCXhmc19mc2Jsb2NrX3QJCQlzdGFydGJsb2NrLAorQEAgLTIxODAsNyArMjE4MCw3IEBAIF9feGZzX3JtYXBfYWRkKAorIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAsCisgCXN0cnVjdCB4ZnNfZGVmZXJfb3BzCQkqZGZvcHMsCisgCWVudW0geGZzX3JtYXBfaW50ZW50X3R5cGUJdHlwZSwKKy0JX191aW50NjRfdAkJCW93bmVyLAorKwl1aW50NjRfdAkJCW93bmVyLAorIAlpbnQJCQkJd2hpY2hmb3JrLAorIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwkJKmJtYXApCisgeworQEAgLTIyNjQsNyArMjI2NCw3IEBAIHhmc19ybWFwX2FsbG9jX2V4dGVudCgKKyAJeGZzX2FnbnVtYmVyX3QJCWFnbm8sCisgCXhmc19hZ2Jsb2NrX3QJCWJubywKKyAJeGZzX2V4dGxlbl90CQlsZW4sCistCV9fdWludDY0X3QJCW93bmVyKQorKwl1aW50NjRfdAkJb3duZXIpCisgeworIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwlibWFwOworIAorQEAgLTIyODgsNyArMjI4OCw3IEBAIHhmc19ybWFwX2ZyZWVfZXh0ZW50KAorIAl4ZnNfYWdudW1iZXJfdAkJYWdubywKKyAJeGZzX2FnYmxvY2tfdAkJYm5vLAorIAl4ZnNfZXh0bGVuX3QJCWxlbiwKKy0JX191aW50NjRfdAkJb3duZXIpCisrCXVpbnQ2NF90CQlvd25lcikKKyB7CisgCXN0cnVjdCB4ZnNfYm1idF9pcmVjCWJtYXA7CisgCitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19ybWFwLmggYi9saWJ4ZnMveGZzX3JtYXAuaAoraW5kZXggOThmOTA4ZmUuLjI2NTExNmQwIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc19ybWFwLmgKKysrKyBiL2xpYnhmcy94ZnNfcm1hcC5oCitAQCAtMTc5LDcgKzE3OSw3IEBAIGVudW0geGZzX3JtYXBfaW50ZW50X3R5cGUgeworIHN0cnVjdCB4ZnNfcm1hcF9pbnRlbnQgeworIAlzdHJ1Y3QgbGlzdF9oZWFkCQkJcmlfbGlzdDsKKyAJZW51bSB4ZnNfcm1hcF9pbnRlbnRfdHlwZQkJcmlfdHlwZTsKKy0JX191aW50NjRfdAkJCQlyaV9vd25lcjsKKysJdWludDY0X3QJCQkJcmlfb3duZXI7CisgCWludAkJCQkJcmlfd2hpY2hmb3JrOworIAlzdHJ1Y3QgeGZzX2JtYnRfaXJlYwkJCXJpX2JtYXA7CisgfTsKK0BAIC0xOTYsMTUgKzE5NiwxNSBAQCBpbnQgeGZzX3JtYXBfY29udmVydF9leHRlbnQoc3RydWN0IHhmc19tb3VudCAqbXAsIHN0cnVjdCB4ZnNfZGVmZXJfb3BzICpkZm9wcywKKyAJCXN0cnVjdCB4ZnNfYm1idF9pcmVjICppbWFwKTsKKyBpbnQgeGZzX3JtYXBfYWxsb2NfZXh0ZW50KHN0cnVjdCB4ZnNfbW91bnQgKm1wLCBzdHJ1Y3QgeGZzX2RlZmVyX29wcyAqZGZvcHMsCisgCQl4ZnNfYWdudW1iZXJfdCBhZ25vLCB4ZnNfYWdibG9ja190IGJubywgeGZzX2V4dGxlbl90IGxlbiwKKy0JCV9fdWludDY0X3Qgb3duZXIpOworKwkJdWludDY0X3Qgb3duZXIpOworIGludCB4ZnNfcm1hcF9mcmVlX2V4dGVudChzdHJ1Y3QgeGZzX21vdW50ICptcCwgc3RydWN0IHhmc19kZWZlcl9vcHMgKmRmb3BzLAorIAkJeGZzX2FnbnVtYmVyX3QgYWdubywgeGZzX2FnYmxvY2tfdCBibm8sIHhmc19leHRsZW5fdCBsZW4sCistCQlfX3VpbnQ2NF90IG93bmVyKTsKKysJCXVpbnQ2NF90IG93bmVyKTsKKyAKKyB2b2lkIHhmc19ybWFwX2ZpbmlzaF9vbmVfY2xlYW51cChzdHJ1Y3QgeGZzX3RyYW5zICp0cCwKKyAJCXN0cnVjdCB4ZnNfYnRyZWVfY3VyICpyY3VyLCBpbnQgZXJyb3IpOworIGludCB4ZnNfcm1hcF9maW5pc2hfb25lKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLCBlbnVtIHhmc19ybWFwX2ludGVudF90eXBlIHR5cGUsCistCQlfX3VpbnQ2NF90IG93bmVyLCBpbnQgd2hpY2hmb3JrLCB4ZnNfZmlsZW9mZl90IHN0YXJ0b2ZmLAorKwkJdWludDY0X3Qgb3duZXIsIGludCB3aGljaGZvcmssIHhmc19maWxlb2ZmX3Qgc3RhcnRvZmYsCisgCQl4ZnNfZnNibG9ja190IHN0YXJ0YmxvY2ssIHhmc19maWxibGtzX3QgYmxvY2tjb3VudCwKKyAJCXhmc19leG50c3RfdCBzdGF0ZSwgc3RydWN0IHhmc19idHJlZV9jdXIgKipwY3VyKTsKKyAKK2RpZmYgLS1naXQgYS9saWJ4ZnMveGZzX3JtYXBfYnRyZWUuYyBiL2xpYnhmcy94ZnNfcm1hcF9idHJlZS5jCitpbmRleCBhMTg2Yzg3Mi4uNDVhYzQzNmYgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3JtYXBfYnRyZWUuYworKysrIGIvbGlieGZzL3hmc19ybWFwX2J0cmVlLmMKK0BAIC0xOTcsNyArMTk3LDcgQEAgeGZzX3JtYXBidF9pbml0X2hpZ2hfa2V5X2Zyb21fcmVjKAorIAl1bmlvbiB4ZnNfYnRyZWVfa2V5CSprZXksCisgCXVuaW9uIHhmc19idHJlZV9yZWMJKnJlYykKKyB7CistCV9fdWludDY0X3QJCW9mZjsKKysJdWludDY0X3QJCW9mZjsKKyAJaW50CQkJYWRqOworIAorIAlhZGogPSBiZTMyX3RvX2NwdShyZWMtPnJtYXAucm1fYmxvY2tjb3VudCkgLSAxOworQEAgLTIzOSw3ICsyMzksNyBAQCB4ZnNfcm1hcGJ0X2luaXRfcHRyX2Zyb21fY3VyKAorIAlwdHItPnMgPSBhZ2YtPmFnZl9yb290c1tjdXItPmJjX2J0bnVtXTsKKyB9CisgCistU1RBVElDIF9faW50NjRfdAorK1NUQVRJQyBpbnQ2NF90CisgeGZzX3JtYXBidF9rZXlfZGlmZigKKyAJc3RydWN0IHhmc19idHJlZV9jdXIJKmN1ciwKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqa2V5KQorQEAgLTI0Nyw5ICsyNDcsOSBAQCB4ZnNfcm1hcGJ0X2tleV9kaWZmKAorIAlzdHJ1Y3QgeGZzX3JtYXBfaXJlYwkqcmVjID0gJmN1ci0+YmNfcmVjLnI7CisgCXN0cnVjdCB4ZnNfcm1hcF9rZXkJKmtwID0gJmtleS0+cm1hcDsKKyAJX191NjQJCQl4LCB5OworLQlfX2ludDY0X3QJCWQ7CisrCWludDY0X3QJCQlkOworIAorLQlkID0gKF9faW50NjRfdCliZTMyX3RvX2NwdShrcC0+cm1fc3RhcnRibG9jaykgLSByZWMtPnJtX3N0YXJ0YmxvY2s7CisrCWQgPSAoaW50NjRfdCliZTMyX3RvX2NwdShrcC0+cm1fc3RhcnRibG9jaykgLSByZWMtPnJtX3N0YXJ0YmxvY2s7CisgCWlmIChkKQorIAkJcmV0dXJuIGQ7CisgCitAQCAtMjY5LDcgKzI2OSw3IEBAIHhmc19ybWFwYnRfa2V5X2RpZmYoCisgCXJldHVybiAwOworIH0KKyAKKy1TVEFUSUMgX19pbnQ2NF90CisrU1RBVElDIGludDY0X3QKKyB4ZnNfcm1hcGJ0X2RpZmZfdHdvX2tleXMoCisgCXN0cnVjdCB4ZnNfYnRyZWVfY3VyCSpjdXIsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmsxLAorQEAgLTI3NywxMCArMjc3LDEwIEBAIHhmc19ybWFwYnRfZGlmZl90d29fa2V5cygKKyB7CisgCXN0cnVjdCB4ZnNfcm1hcF9rZXkJKmtwMSA9ICZrMS0+cm1hcDsKKyAJc3RydWN0IHhmc19ybWFwX2tleQkqa3AyID0gJmsyLT5ybWFwOworLQlfX2ludDY0X3QJCWQ7CisrCWludDY0X3QJCQlkOworIAlfX3U2NAkJCXgsIHk7CisgCistCWQgPSAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtwMS0+cm1fc3RhcnRibG9jaykgLQorKwlkID0gKGludDY0X3QpYmUzMl90b19jcHUoa3AxLT5ybV9zdGFydGJsb2NrKSAtCisgCQkgICAgICAgYmUzMl90b19jcHUoa3AyLT5ybV9zdGFydGJsb2NrKTsKKyAJaWYgKGQpCisgCQlyZXR1cm4gZDsKK0BAIC0zODIsMTAgKzM4MiwxMCBAQCB4ZnNfcm1hcGJ0X2tleXNfaW5vcmRlcigKKyAJdW5pb24geGZzX2J0cmVlX2tleQkqazEsCisgCXVuaW9uIHhmc19idHJlZV9rZXkJKmsyKQorIHsKKy0JX191aW50MzJfdAkJeDsKKy0JX191aW50MzJfdAkJeTsKKy0JX191aW50NjRfdAkJYTsKKy0JX191aW50NjRfdAkJYjsKKysJdWludDMyX3QJCXg7CisrCXVpbnQzMl90CQl5OworKwl1aW50NjRfdAkJYTsKKysJdWludDY0X3QJCWI7CisgCisgCXggPSBiZTMyX3RvX2NwdShrMS0+cm1hcC5ybV9zdGFydGJsb2NrKTsKKyAJeSA9IGJlMzJfdG9fY3B1KGsyLT5ybWFwLnJtX3N0YXJ0YmxvY2spOworQEAgLTQxMiwxMCArNDEyLDEwIEBAIHhmc19ybWFwYnRfcmVjc19pbm9yZGVyKAorIAl1bmlvbiB4ZnNfYnRyZWVfcmVjCSpyMSwKKyAJdW5pb24geGZzX2J0cmVlX3JlYwkqcjIpCisgeworLQlfX3VpbnQzMl90CQl4OworLQlfX3VpbnQzMl90CQl5OworLQlfX3VpbnQ2NF90CQlhOworLQlfX3VpbnQ2NF90CQliOworKwl1aW50MzJfdAkJeDsKKysJdWludDMyX3QJCXk7CisrCXVpbnQ2NF90CQlhOworKwl1aW50NjRfdAkJYjsKKyAKKyAJeCA9IGJlMzJfdG9fY3B1KHIxLT5ybWFwLnJtX3N0YXJ0YmxvY2spOworIAl5ID0gYmUzMl90b19jcHUocjItPnJtYXAucm1fc3RhcnRibG9jayk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19ydGJpdG1hcC5jIGIvbGlieGZzL3hmc19ydGJpdG1hcC5jCitpbmRleCBkYmQyZjg4MS4uOGY4YTk5ZDYgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3J0Yml0bWFwLmMKKysrKyBiL2xpYnhmcy94ZnNfcnRiaXRtYXAuYworQEAgLTEwMDYsNyArMTAwNiw3IEBAIHhmc19ydGZyZWVfZXh0ZW50KAorIAkgICAgbXAtPm1fc2Iuc2JfcmV4dGVudHMpIHsKKyAJCWlmICghKG1wLT5tX3JibWlwLT5pX2QuZGlfZmxhZ3MgJiBYRlNfRElGTEFHX05FV1JUQk0pKQorIAkJCW1wLT5tX3JibWlwLT5pX2QuZGlfZmxhZ3MgfD0gWEZTX0RJRkxBR19ORVdSVEJNOworLQkJKihfX3VpbnQ2NF90ICopJlZGU19JKG1wLT5tX3JibWlwKS0+aV9hdGltZSA9IDA7CisrCQkqKHVpbnQ2NF90ICopJlZGU19JKG1wLT5tX3JibWlwKS0+aV9hdGltZSA9IDA7CisgCQl4ZnNfdHJhbnNfbG9nX2lub2RlKHRwLCBtcC0+bV9yYm1pcCwgWEZTX0lMT0dfQ09SRSk7CisgCX0KKyAJcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19zYi5jIGIvbGlieGZzL3hmc19zYi5jCitpbmRleCA5M2ExODE5MC4uNTFmNjk3MDQgMTAwNjQ0CistLS0gYS9saWJ4ZnMveGZzX3NiLmMKKysrKyBiL2xpYnhmcy94ZnNfc2IuYworQEAgLTQzMCw3ICs0MzAsNyBAQCB4ZnNfc2JfcXVvdGFfdG9fZGlzaygKKyAJc3RydWN0IHhmc19kc2IJKnRvLAorIAlzdHJ1Y3QgeGZzX3NiCSpmcm9tKQorIHsKKy0JX191aW50MTZfdAlxZmxhZ3MgPSBmcm9tLT5zYl9xZmxhZ3M7CisrCXVpbnQxNl90CXFmbGFncyA9IGZyb20tPnNiX3FmbGFnczsKKyAKKyAJdG8tPnNiX3VxdW90aW5vID0gY3B1X3RvX2JlNjQoZnJvbS0+c2JfdXF1b3Rpbm8pOworIAlpZiAoeGZzX3NiX3ZlcnNpb25faGFzX3BxdW90aW5vKGZyb20pKSB7CitAQCAtNzM4LDcgKzczOCw3IEBAIHhmc19zYl9tb3VudF9jb21tb24oCisgCW1wLT5tX3JlZmNfbW5yWzFdID0gbXAtPm1fcmVmY19teHJbMV0gLyAyOworIAorIAltcC0+bV9ic2l6ZSA9IFhGU19GU0JfVE9fQkIobXAsIDEpOworLQltcC0+bV9pYWxsb2NfaW5vcyA9IChpbnQpTUFYKChfX3VpbnQxNl90KVhGU19JTk9ERVNfUEVSX0NIVU5LLAorKwltcC0+bV9pYWxsb2NfaW5vcyA9IChpbnQpTUFYKCh1aW50MTZfdClYRlNfSU5PREVTX1BFUl9DSFVOSywKKyAJCQkJCXNicC0+c2JfaW5vcGJsb2NrKTsKKyAJbXAtPm1faWFsbG9jX2Jsa3MgPSBtcC0+bV9pYWxsb2NfaW5vcyA+PiBzYnAtPnNiX2lub3BibG9nOworIAorZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfdHlwZXMuaCBiL2xpYnhmcy94ZnNfdHlwZXMuaAoraW5kZXggNzE3OTA5ZjIuLjAyMjAxNTliIDEwMDY0NAorLS0tIGEvbGlieGZzL3hmc190eXBlcy5oCisrKysgYi9saWJ4ZnMveGZzX3R5cGVzLmgKK0BAIC0xOCwzNCArMTgsMzQgQEAKKyAjaWZuZGVmIF9fWEZTX1RZUEVTX0hfXworICNkZWZpbmUJX19YRlNfVFlQRVNfSF9fCisgCistdHlwZWRlZiBfX3VpbnQzMl90CXByaWRfdDsJCS8qIHByb2plY3QgSUQgKi8KKyt0eXBlZGVmIHVpbnQzMl90CXByaWRfdDsJCS8qIHByb2plY3QgSUQgKi8KKyAKKy10eXBlZGVmIF9fdWludDMyX3QJeGZzX2FnYmxvY2tfdDsJLyogYmxvY2tubyBpbiBhbGxvYy4gZ3JvdXAgKi8KKy10eXBlZGVmCV9fdWludDMyX3QJeGZzX2FnaW5vX3Q7CS8qIGlub2RlICMgd2l0aGluIGFsbG9jYXRpb24gZ3JwICovCistdHlwZWRlZglfX3VpbnQzMl90CXhmc19leHRsZW5fdDsJLyogZXh0ZW50IGxlbmd0aCBpbiBibG9ja3MgKi8KKy10eXBlZGVmCV9fdWludDMyX3QJeGZzX2FnbnVtYmVyX3Q7CS8qIGFsbG9jYXRpb24gZ3JvdXAgbnVtYmVyICovCistdHlwZWRlZiBfX2ludDMyX3QJeGZzX2V4dG51bV90OwkvKiAjIG9mIGV4dGVudHMgaW4gYSBmaWxlICovCistdHlwZWRlZiBfX2ludDE2X3QJeGZzX2FleHRudW1fdDsJLyogIyBleHRlbnRzIGluIGFuIGF0dHJpYnV0ZSBmb3JrICovCistdHlwZWRlZglfX2ludDY0X3QJeGZzX2ZzaXplX3Q7CS8qIGJ5dGVzIGluIGEgZmlsZSAqLworLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfdWZzaXplX3Q7CS8qIHVuc2lnbmVkIGJ5dGVzIGluIGEgZmlsZSAqLworK3R5cGVkZWYgdWludDMyX3QJeGZzX2FnYmxvY2tfdDsJLyogYmxvY2tubyBpbiBhbGxvYy4gZ3JvdXAgKi8KKyt0eXBlZGVmIHVpbnQzMl90CXhmc19hZ2lub190OwkvKiBpbm9kZSAjIHdpdGhpbiBhbGxvY2F0aW9uIGdycCAqLworK3R5cGVkZWYgdWludDMyX3QJeGZzX2V4dGxlbl90OwkvKiBleHRlbnQgbGVuZ3RoIGluIGJsb2NrcyAqLworK3R5cGVkZWYgdWludDMyX3QJeGZzX2FnbnVtYmVyX3Q7CS8qIGFsbG9jYXRpb24gZ3JvdXAgbnVtYmVyICovCisrdHlwZWRlZiBpbnQzMl90CQl4ZnNfZXh0bnVtX3Q7CS8qICMgb2YgZXh0ZW50cyBpbiBhIGZpbGUgKi8KKyt0eXBlZGVmIGludDE2X3QJCXhmc19hZXh0bnVtX3Q7CS8qICMgZXh0ZW50cyBpbiBhbiBhdHRyaWJ1dGUgZm9yayAqLworK3R5cGVkZWYgaW50NjRfdAkJeGZzX2ZzaXplX3Q7CS8qIGJ5dGVzIGluIGEgZmlsZSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX3Vmc2l6ZV90OwkvKiB1bnNpZ25lZCBieXRlcyBpbiBhIGZpbGUgKi8KKyAKKy10eXBlZGVmCV9faW50MzJfdAl4ZnNfc3VtaW5mb190OwkvKiB0eXBlIG9mIGJpdG1hcCBzdW1tYXJ5IGluZm8gKi8KKy10eXBlZGVmCV9faW50MzJfdAl4ZnNfcnR3b3JkX3Q7CS8qIHdvcmQgdHlwZSBmb3IgYml0bWFwIG1hbmlwdWxhdGlvbnMgKi8KKyt0eXBlZGVmIGludDMyX3QJCXhmc19zdW1pbmZvX3Q7CS8qIHR5cGUgb2YgYml0bWFwIHN1bW1hcnkgaW5mbyAqLworK3R5cGVkZWYgaW50MzJfdAkJeGZzX3J0d29yZF90OwkvKiB3b3JkIHR5cGUgZm9yIGJpdG1hcCBtYW5pcHVsYXRpb25zICovCisgCistdHlwZWRlZglfX2ludDY0X3QJeGZzX2xzbl90OwkvKiBsb2cgc2VxdWVuY2UgbnVtYmVyICovCistdHlwZWRlZglfX2ludDMyX3QJeGZzX3RpZF90OwkvKiB0cmFuc2FjdGlvbiBpZGVudGlmaWVyICovCisrdHlwZWRlZiBpbnQ2NF90CQl4ZnNfbHNuX3Q7CS8qIGxvZyBzZXF1ZW5jZSBudW1iZXIgKi8KKyt0eXBlZGVmIGludDMyX3QJCXhmc190aWRfdDsJLyogdHJhbnNhY3Rpb24gaWRlbnRpZmllciAqLworIAorLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGFibGtfdDsJLyogZGlyL2F0dHIgYmxvY2sgbnVtYmVyIChpbiBmaWxlKSAqLworLXR5cGVkZWYJX191aW50MzJfdAl4ZnNfZGFoYXNoX3Q7CS8qIGRpci9hdHRyIGhhc2ggdmFsdWUgKi8KKyt0eXBlZGVmIHVpbnQzMl90CXhmc19kYWJsa190OwkvKiBkaXIvYXR0ciBibG9jayBudW1iZXIgKGluIGZpbGUpICovCisrdHlwZWRlZiB1aW50MzJfdAl4ZnNfZGFoYXNoX3Q7CS8qIGRpci9hdHRyIGhhc2ggdmFsdWUgKi8KKyAKKy10eXBlZGVmCV9fdWludDY0X3QJeGZzX2ZzYmxvY2tfdDsJLyogYmxvY2tubyBpbiBmaWxlc3lzdGVtIChhZ25vfGFnYm5vKSAqLworLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfcmZzYmxvY2tfdDsJLyogYmxvY2tubyBpbiBmaWxlc3lzdGVtIChyYXcpICovCistdHlwZWRlZiBfX3VpbnQ2NF90CXhmc19ydGJsb2NrX3Q7CS8qIGV4dGVudCAoYmxvY2spIGluIHJlYWx0aW1lIGFyZWEgKi8KKy10eXBlZGVmIF9fdWludDY0X3QJeGZzX2ZpbGVvZmZfdDsJLyogYmxvY2sgbnVtYmVyIGluIGEgZmlsZSAqLworLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfZmlsYmxrc190OwkvKiBudW1iZXIgb2YgYmxvY2tzIGluIGEgZmlsZSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX2ZzYmxvY2tfdDsJLyogYmxvY2tubyBpbiBmaWxlc3lzdGVtIChhZ25vfGFnYm5vKSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX3Jmc2Jsb2NrX3Q7CS8qIGJsb2Nrbm8gaW4gZmlsZXN5c3RlbSAocmF3KSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX3J0YmxvY2tfdDsJLyogZXh0ZW50IChibG9jaykgaW4gcmVhbHRpbWUgYXJlYSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX2ZpbGVvZmZfdDsJLyogYmxvY2sgbnVtYmVyIGluIGEgZmlsZSAqLworK3R5cGVkZWYgdWludDY0X3QJeGZzX2ZpbGJsa3NfdDsJLyogbnVtYmVyIG9mIGJsb2NrcyBpbiBhIGZpbGUgKi8KKyAKKy10eXBlZGVmCV9faW50NjRfdAl4ZnNfc3J0YmxvY2tfdDsJLyogc2lnbmVkIHZlcnNpb24gb2YgeGZzX3J0YmxvY2tfdCAqLworLXR5cGVkZWYgX19pbnQ2NF90CXhmc19zZmlsb2ZmX3Q7CS8qIHNpZ25lZCBibG9jayBudW1iZXIgaW4gYSBmaWxlICovCisrdHlwZWRlZiBpbnQ2NF90CQl4ZnNfc3J0YmxvY2tfdDsJLyogc2lnbmVkIHZlcnNpb24gb2YgeGZzX3J0YmxvY2tfdCAqLworK3R5cGVkZWYgaW50NjRfdAkJeGZzX3NmaWxvZmZfdDsJLyogc2lnbmVkIGJsb2NrIG51bWJlciBpbiBhIGZpbGUgKi8KKyAKKyAvKgorICAqIE51bGwgdmFsdWVzIGZvciB0aGUgdHlwZXMuCitAQCAtMTI1LDcgKzEyNSw3IEBAIHN0cnVjdCB4ZnNfbmFtZSB7CisgICogdWlkX3QgYW5kIGdpZF90IGFyZSBoYXJkLWNvZGVkIHRvIDMyIGJpdHMgaW4gdGhlIGlub2RlLgorICAqIEhlbmNlLCBhbiAnaWQnIGluIGEgZHF1b3QgaXMgMzIgYml0cy4uCisgICovCistdHlwZWRlZiBfX3VpbnQzMl90CXhmc19kcWlkX3Q7CisrdHlwZWRlZiB1aW50MzJfdAl4ZnNfZHFpZF90OworIAorIC8qCisgICogQ29uc3RhbnRzIGZvciBiaXQgbWFuaXB1bGF0aW9ucy4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEteGZzcHJvZ3MtcmVtb3ZlLWRvdWJsZS11bmRlcnNjb3JlLWludGVnZXItdHlwZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLXhmc3Byb2dzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMDhmMGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLXhmc3Byb2dzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoCkBAIC0wLDAgKzEsMzgwMCBAQAorRnJvbSAxNGY4YjY4MTBiZDI0MGNjNTgxMzE0ODM3OTBhMDk5ZmNmNTZjMDczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkRhcnJpY2sgSi4gV29uZyIgPGRhcnJpY2sud29uZ0BvcmFjbGUuY29tPgorRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE2OjMzOjUxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIHhmc3Byb2dzOiByZW1vdmUgZG91YmxlLXVuZGVyc2NvcmUgaW50ZWdlciB0eXBlcworCitUaGlzIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcGF0Y2ggdGhhdCByZW1vdmVzIHRoZSBwcml2YXRlCitfX3t1LH1pbnR7OCwxNiwzMiw2NH1fdCB0eXBlZGVmcyBpbiBmYXZvciBvZiB1c2luZyB0aGUgc3lzdGVtCit7dSx9aW50ezgsMTYsMzIsNjR9X3QgdHlwZWRlZnMuICBUaGlzIGlzIHRoZSBzZWQgc2NyaXB0IHVzZWQgdG8gcGVyZm9ybQordGhlIHRyYW5zZm9ybWF0aW9uIGFuZCBmaXggdGhlIHJlc3VsdGluZyB3aGl0ZXNwYWNlIGFuZCBpbmRlbnRhdGlvbgorZXJyb3JzOgorCitzL3R5cGVkZWZcdF9fdWludDhfdC90eXBlZGVmIF9fdWludDhfdFx0L2cKK3MvdHlwZWRlZlx0X191aW50L3R5cGVkZWYgX191aW50L2cKK3MvdHlwZWRlZlx0X19pbnRcKFswLTldKlwpX3QvdHlwZWRlZiBpbnRcMV90XHQvZworcy9fX3VpbnQ4X3RcdC9fX3VpbnQ4X3RcdFx0L2cKK3MvX191aW50L3VpbnQvZworcy9fX2ludFwoWzAtOV0qXClfdFx0L19faW50XDFfdFx0XHQvZworcy9fX2ludC9pbnQvZworL150eXBlZGVmLippbnRbMC05XSpfdDskL2QKKworU2lnbmVkLW9mZi1ieTogRGFycmljayBKLiBXb25nIDxkYXJyaWNrLndvbmdAb3JhY2xlLmNvbT4KK1Jldmlld2VkLWJ5OiBDYXJsb3MgTWFpb2xpbm8gPGNtYWlvbGlub0ByZWRoYXQuY29tPgorW3NhbmRlZW46IGZpeCB3aGl0ZXNwYWNlIGluY2lkZW50YWxzXQorUmV2aWV3ZWQtYnk6IERhcnJpY2sgSi4gV29uZyA8ZGFycmljay53b25nQG9yYWNsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBFcmljIFNhbmRlZW4gPHNhbmRlZW5Ac2FuZGVlbi5uZXQ+CistLS0KKyBjb3B5L3hmc19jb3B5LmMgICAgICAgICAgIHwgMTQgKysrKy0tLS0tCisgY29weS94ZnNfY29weS5oICAgICAgICAgICB8ICAyICstCisgZGIvYXR0ci5jICAgICAgICAgICAgICAgICB8ICA4ICsrLS0tCisgZGIvYXR0cnNob3J0LmMgICAgICAgICAgICB8ICA0ICstLQorIGRiL2JpdC5jICAgICAgICAgICAgICAgICAgfCAgNCArLS0KKyBkYi9iaXQuaCAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBkYi9ibG9jay5jICAgICAgICAgICAgICAgIHwgIDggKystLS0KKyBkYi9jaGVjay5jICAgICAgICAgICAgICAgIHwgMTggKysrKystLS0tLS0KKyBkYi9jb252ZXJ0LmMgICAgICAgICAgICAgIHwgMjggKysrKysrKystLS0tLS0tLS0KKyBkYi9mYWRkci5jICAgICAgICAgICAgICAgIHwgMTQgKysrKy0tLS0tCisgZGIvZmllbGQuYyAgICAgICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIGRiL2ZwcmludC5jICAgICAgICAgICAgICAgfCAgOCArKy0tLQorIGRiL2ZyYWcuYyAgICAgICAgICAgICAgICAgfCAgOCArKy0tLQorIGRiL2lub2RlLmMgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysrLS0tLS0tLS0tLS0KKyBkYi9pby5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBkYi9pby5oICAgICAgICAgICAgICAgICAgIHwgIDYgKystLQorIGRiL21ldGFkdW1wLmMgICAgICAgICAgICAgfCAxMiArKysrLS0tLQorIGRiL3NiLmMgICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCisgZnNyL3hmc19mc3IuYyAgICAgICAgICAgICB8ICAyICstCisgaW5jbHVkZS9kYXJ3aW4uaCAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tCisgaW5jbHVkZS9mcmVlYnNkLmggICAgICAgICB8ICA2ICsrLS0KKyBpbmNsdWRlL2dudWtmcmVlYnNkLmggICAgIHwgIDYgKystLQorIGluY2x1ZGUvbGlieGNtZC5oICAgICAgICAgfCAgNiArKy0tCisgaW5jbHVkZS9saW51eC5oICAgICAgICAgICB8ICA4ICsrLS0tCisgaW5jbHVkZS94ZnNfYXJjaC5oICAgICAgICB8IDIyICsrKysrKystLS0tLS0tCisgaW5jbHVkZS94ZnNfaW5vZGUuaCAgICAgICB8ICA0ICstLQorIGluY2x1ZGUveGZzX2xvZ19yZWNvdmVyLmggfCAgMiArLQorIGluY2x1ZGUveGZzX21ldGFkdW1wLmggICAgfCAgNCArLS0KKyBpbmNsdWRlL3hmc19tb3VudC5oICAgICAgIHwgMjIgKysrKysrKy0tLS0tLS0KKyBsaWJoYW5kbGUvaGFuZGxlLmMgICAgICAgIHwgIDIgKy0KKyBsaWJoYW5kbGUvamRtLmMgICAgICAgICAgIHwgIDIgKy0KKyBsaWJ4Y21kL3RvcG9sb2d5LmMgICAgICAgIHwgMTQgKysrKy0tLS0tCisgbGlieGZzL2Rhcndpbi5jICAgICAgICAgICB8ICAyICstCisgbGlieGZzL2ZyZWVic2QuYyAgICAgICAgICB8ICAyICstCisgbGlieGZzL2luaXQuYyAgICAgICAgICAgICB8ICAyICstCisgbGlieGZzL2lyaXguYyAgICAgICAgICAgICB8ICAyICstCisgbGlieGZzL2xpYnhmc19wcml2LmggICAgICB8ICA0ICstLQorIGxpYnhmcy9saW51eC5jICAgICAgICAgICAgfCAgMiArLQorIGxpYnhmcy9sb2dpdGVtLmMgICAgICAgICAgfCAgMiArLQorIGxpYnhmcy9yYWRpeC10cmVlLmMgICAgICAgfCAgOCArKy0tLQorIGxpYnhmcy9yZHdyLmMgICAgICAgICAgICAgfCAgNiArKy0tCisgbGlieGZzL3V0aWwuYyAgICAgICAgICAgICB8ICA4ICsrLS0tCisgbG9ncHJpbnQvbG9nX21pc2MuYyAgICAgICB8ICA2ICsrLS0KKyBtZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jIHwgIDIgKy0KKyBta2ZzL3Byb3RvLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyBta2ZzL3hmc19ta2ZzLmMgICAgICAgICAgIHwgNzYgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBxdW90YS9lZGl0LmMgICAgICAgICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcXVvdGEvZnJlZS5jICAgICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIHF1b3RhL3F1b3QuYyAgICAgICAgICAgICAgfCAyNCArKysrKysrLS0tLS0tLS0KKyBxdW90YS9xdW90YS5jICAgICAgICAgICAgIHwgIDQgKy0tCisgcXVvdGEvcXVvdGEuaCAgICAgICAgICAgICB8IDEyICsrKystLS0tCisgcXVvdGEvcmVwb3J0LmMgICAgICAgICAgICB8ICA0ICstLQorIHF1b3RhL3N0YXRlLmMgICAgICAgICAgICAgfCAgMiArLQorIHF1b3RhL3V0aWwuYyAgICAgICAgICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVwYWlyL1JFQURNRSAgICAgICAgICAgICB8ICAyICstCisgcmVwYWlyL2FnaGVhZGVyLmggICAgICAgICB8IDE0ICsrKystLS0tLQorIHJlcGFpci9hdHRyX3JlcGFpci5oICAgICAgfCAyNiArKysrKysrKy0tLS0tLS0tCisgcmVwYWlyL2F2bDY0LmMgICAgICAgICAgICB8IDM4ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHJlcGFpci9hdmw2NC5oICAgICAgICAgICAgfCAxOCArKysrKy0tLS0tLQorIHJlcGFpci9kaW5vZGUuYyAgICAgICAgICAgfCAzOCArKysrKysrKysrKystLS0tLS0tLS0tLS0KKyByZXBhaXIvZGlub2RlLmggICAgICAgICAgIHwgIDQgKy0tCisgcmVwYWlyL2RpcjIuYyAgICAgICAgICAgICB8ICAyICstCisgcmVwYWlyL2dsb2JhbHMuaCAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tCisgcmVwYWlyL2luY29yZS5jICAgICAgICAgICB8IDEwICsrKy0tLS0KKyByZXBhaXIvaW5jb3JlLmggICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIHJlcGFpci9pbmNvcmVfZXh0LmMgICAgICAgfCAgNiArKy0tCisgcmVwYWlyL2luY29yZV9pbm8uYyAgICAgICB8IDcyICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVwYWlyL3BoYXNlMi5jICAgICAgICAgICB8ICAyICstCisgcmVwYWlyL3BoYXNlMy5jICAgICAgICAgICB8ICA2ICsrLS0KKyByZXBhaXIvcGhhc2U0LmMgICAgICAgICAgIHwgIDQgKy0tCisgcmVwYWlyL3BoYXNlNS5jICAgICAgICAgICB8IDI4ICsrKysrKysrLS0tLS0tLS0tCisgcmVwYWlyL3BoYXNlNi5jICAgICAgICAgICB8IDE2ICsrKysrLS0tLS0KKyByZXBhaXIvcGhhc2U3LmMgICAgICAgICAgIHwgIDYgKystLQorIHJlcGFpci9wcm9ncmVzcy5jICAgICAgICAgfCAzMCArKysrKysrKystLS0tLS0tLS0tCisgcmVwYWlyL3Byb2dyZXNzLmggICAgICAgICB8ICA0ICstLQorIHJlcGFpci9ybWFwLmMgICAgICAgICAgICAgfCAxOCArKysrKy0tLS0tLQorIHJlcGFpci9ybWFwLmggICAgICAgICAgICAgfCAgMiArLQorIHJlcGFpci9zYi5jICAgICAgICAgICAgICAgfCAyNCArKysrKysrLS0tLS0tLS0KKyByZXBhaXIvc2Nhbi5jICAgICAgICAgICAgIHwgNTAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIHJlcGFpci9zY2FuLmggICAgICAgICAgICAgfCAxMiArKysrLS0tLQorIDgwIGZpbGVzIGNoYW5nZWQsIDU5MCBpbnNlcnRpb25zKCspLCA1OTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb3B5L3hmc19jb3B5LmMgYi9jb3B5L3hmc19jb3B5LmMKK2luZGV4IGE3ZGE4MjRmLi4zM2UwNWRmZCAxMDA2NDQKKy0tLSBhL2NvcHkveGZzX2NvcHkuYworKysrIGIvY29weS94ZnNfY29weS5jCitAQCAtNDMsNyArNDMsNyBAQCB1bnNpZ25lZCBpbnQJc291cmNlX3NlY3RvcnNpemU7CS8qIHNvdXJjZSBkaXNrIHNlY3RvcnNpemUgKi8KKyAKKyB4ZnNfYWdibG9ja190CWZpcnN0X2FnYm5vOworIAorLV9fdWludDY0X3QJYmFyY291bnRbMTFdOworK3VpbnQ2NF90CWJhcmNvdW50WzExXTsKKyAKKyB1bnNpZ25lZCBpbnQJbnVtX3RhcmdldHM7CisgdGFyZ2V0X2NvbnRyb2wJKnRhcmdldDsKK0BAIC0zMTMsNyArMzEzLDcgQEAgdXNhZ2Uodm9pZCkKKyB9CisgCisgdm9pZAorLWluaXRfYmFyKF9fdWludDY0X3Qgc291cmNlX2Jsb2NrcykKKytpbml0X2Jhcih1aW50NjRfdCBzb3VyY2VfYmxvY2tzKQorIHsKKyAJaW50CWk7CisgCitAQCAtMzIyLDcgKzMyMiw3IEBAIGluaXRfYmFyKF9fdWludDY0X3Qgc291cmNlX2Jsb2NrcykKKyB9CisgCisgaW50CistYnVtcF9iYXIoaW50IHRlbnRocywgX191aW50NjRfdCBudW1ibG9ja3MpCisrYnVtcF9iYXIoaW50IHRlbnRocywgdWludDY0X3QgbnVtYmxvY2tzKQorIHsKKyAJc3RhdGljIGNoYXIgKmJhclsxMV0gPSB7CisgCQkiIDAlICIsCitAQCAtNTM0LDggKzUzNCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAl4ZnNfb2ZmX3QJcG9zOworIAlzaXplX3QJCWxlbmd0aDsKKyAJaW50CQljOworLQlfX3VpbnQ2NF90CXNpemUsIHNpemViOworLQlfX3VpbnQ2NF90CW51bWJsb2NrcyA9IDA7CisrCXVpbnQ2NF90CXNpemUsIHNpemViOworKwl1aW50NjRfdAludW1ibG9ja3MgPSAwOworIAlpbnQJCXdibG9ja3MgPSAwOworIAlpbnQJCW51bV90aHJlYWRzID0gMDsKKyAJc3RydWN0IGRpb2F0dHIJZDsKK0BAIC05NTEsOCArOTUxLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCW51bV9hZ3MgPSBtcC0+bV9zYi5zYl9hZ2NvdW50OworIAorIAlpbml0X2JhcihtcC0+bV9zYi5zYl9ibG9ja3NpemUgLyBCQlNJWkUKKy0JCQkqICgoX191aW50NjRfdCltcC0+bV9zYi5zYl9kYmxvY2tzCistCQkJICAgIC0gKF9fdWludDY0X3QpbXAtPm1fc2Iuc2JfZmRibG9ja3MgKyAxMCAqIG51bV9hZ3MpKTsKKysJCQkqICgodWludDY0X3QpbXAtPm1fc2Iuc2JfZGJsb2NrcworKwkJCSAgICAtICh1aW50NjRfdCltcC0+bV9zYi5zYl9mZGJsb2NrcyArIDEwICogbnVtX2FncykpOworIAorIAlraWRzID0gbnVtX3RhcmdldHM7CisgCitkaWZmIC0tZ2l0IGEvY29weS94ZnNfY29weS5oIGIvY29weS94ZnNfY29weS5oCitpbmRleCAyNzM3MDY4OC4uNTNjNmU0MmMgMTAwNjQ0CistLS0gYS9jb3B5L3hmc19jb3B5LmgKKysrKyBiL2NvcHkveGZzX2NvcHkuaAorQEAgLTc2LDcgKzc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeworIAorIHR5cGVkZWYgaW50IHRocmVhZF9pZDsKKyB0eXBlZGVmIGludCB0bV9pbmRleDsJCQkvKiBpbmRleCBpbnRvIHRocmVhZCBtYXNrIGFycmF5ICovCistdHlwZWRlZiBfX3VpbnQzMl90IHRocmVhZF9tYXNrOwkJLyogYSB0aHJlYWQgbWFzayAqLworK3R5cGVkZWYgdWludDMyX3QgdGhyZWFkX21hc2s7CQkvKiBhIHRocmVhZCBtYXNrICovCisgCisgdHlwZWRlZiBzdHJ1Y3QgeworIAljaGFyCQkqbmFtZTsKK2RpZmYgLS1naXQgYS9kYi9hdHRyLmMgYi9kYi9hdHRyLmMKK2luZGV4IDMxNTM2YThiLi4yM2ZmY2Q1ZiAxMDA2NDQKKy0tLSBhL2RiL2F0dHIuYworKysrIGIvZGIvYXR0ci5jCitAQCAtNzcsMTYgKzc3LDE2IEBAIGNvbnN0IGZpZWxkX3QJYXR0cl9sZWFmX2VudHJ5X2ZsZHNbXSA9IHsKKyAJeyAibmFtZWlkeCIsIEZMRFRfVUlOVDE2RCwgT0koTEVPRkYobmFtZWlkeCkpLCBDMSwgMCwgVFlQX05PTkUgfSwKKyAJeyAiZmxhZ3MiLCBGTERUX1VJTlQ4WCwgT0koTEVPRkYoZmxhZ3MpKSwgQzEsIEZMRF9TS0lQQUxMLCBUWVBfTk9ORSB9LAorIAl7ICJpbmNvbXBsZXRlIiwgRkxEVF9VSU5UMSwKKy0JICBPSShMRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfSU5DT01QTEVURV9CSVQgLSAxKSwgQzEsCisrCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3oodWludDhfdCkgLSBYRlNfQVRUUl9JTkNPTVBMRVRFX0JJVCAtIDEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJyb290IiwgRkxEVF9VSU5UMSwKKy0JICBPSShMRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfUk9PVF9CSVQgLSAxKSwgQzEsIDAsCisrCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3oodWludDhfdCkgLSBYRlNfQVRUUl9ST09UX0JJVCAtIDEpLCBDMSwgMCwKKyAJICBUWVBfTk9ORSB9LAorIAl7ICJzZWN1cmUiLCBGTERUX1VJTlQxLAorLQkgIE9JKExFT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDhfdCkgLSBYRlNfQVRUUl9TRUNVUkVfQklUIC0gMSksIEMxLCAwLAorKwkgIE9JKExFT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKKyAJICBUWVBfTk9ORSB9LAorIAl7ICJsb2NhbCIsIEZMRFRfVUlOVDEsCistCSAgT0koTEVPRkYoZmxhZ3MpICsgYml0c3ooX191aW50OF90KSAtIFhGU19BVFRSX0xPQ0FMX0JJVCAtIDEpLCBDMSwgMCwKKysJICBPSShMRU9GRihmbGFncykgKyBiaXRzeih1aW50OF90KSAtIFhGU19BVFRSX0xPQ0FMX0JJVCAtIDEpLCBDMSwgMCwKKyAJICBUWVBfTk9ORSB9LAorIAl7ICJwYWQyIiwgRkxEVF9VSU5UOFgsIE9JKExFT0ZGKHBhZDIpKSwgQzEsIEZMRF9TS0lQQUxMLCBUWVBfTk9ORSB9LAorIAl7IE5VTEwgfQorZGlmZiAtLWdpdCBhL2RiL2F0dHJzaG9ydC5jIGIvZGIvYXR0cnNob3J0LmMKK2luZGV4IGQ4MjU1OWNjLi4yZWYzNThmNSAxMDA2NDQKKy0tLSBhL2RiL2F0dHJzaG9ydC5jCisrKysgYi9kYi9hdHRyc2hvcnQuYworQEAgLTUxLDEwICs1MSwxMCBAQCBjb25zdCBmaWVsZF90CWF0dHJfc2ZfZW50cnlfZmxkc1tdID0geworIAl7ICJ2YWx1ZWxlbiIsIEZMRFRfVUlOVDhELCBPSShFT0ZGKHZhbHVlbGVuKSksIEMxLCAwLCBUWVBfTk9ORSB9LAorIAl7ICJmbGFncyIsIEZMRFRfVUlOVDhYLCBPSShFT0ZGKGZsYWdzKSksIEMxLCBGTERfU0tJUEFMTCwgVFlQX05PTkUgfSwKKyAJeyAicm9vdCIsIEZMRFRfVUlOVDEsCistCSAgT0koRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfUk9PVF9CSVQgLSAxKSwgQzEsIDAsCisrCSAgT0koRU9GRihmbGFncykgKyBiaXRzeih1aW50OF90KSAtIFhGU19BVFRSX1JPT1RfQklUIC0gMSksIEMxLCAwLAorIAkgIFRZUF9OT05FIH0sCisgCXsgInNlY3VyZSIsIEZMRFRfVUlOVDEsCistCSAgT0koRU9GRihmbGFncykgKyBiaXRzeihfX3VpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKKysJICBPSShFT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQ4X3QpIC0gWEZTX0FUVFJfU0VDVVJFX0JJVCAtIDEpLCBDMSwgMCwKKyAJICBUWVBfTk9ORSB9LAorIAl7ICJuYW1lIiwgRkxEVF9DSEFSTlMsIE9JKEVPRkYobmFtZXZhbCkpLCBhdHRyX3NmX2VudHJ5X25hbWVfY291bnQsCisgCSAgRkxEX0NPVU5ULCBUWVBfTk9ORSB9LAorZGlmZiAtLWdpdCBhL2RiL2JpdC5jIGIvZGIvYml0LmMKK2luZGV4IDI0ODcyYmY3Li5mNWViZjY4MSAxMDA2NDQKKy0tLSBhL2RiL2JpdC5jCisrKysgYi9kYi9iaXQuYworQEAgLTYwLDcgKzYwLDcgQEAgc2V0Yml0KAorIAl9CisgfQorIAorLV9faW50NjRfdAorK2ludDY0X3QKKyBnZXRiaXR2YWwoCisgCXZvaWQJCSpvYmosCisgCWludAkJYml0b2ZmLAorQEAgLTcwLDcgKzcwLDcgQEAgZ2V0Yml0dmFsKAorIAlpbnQJCWJpdDsKKyAJaW50CQlpOworIAljaGFyCQkqcDsKKy0JX19pbnQ2NF90CXJ2YWw7CisrCWludDY0X3QJCXJ2YWw7CisgCWludAkJc2lnbmV4dDsKKyAJaW50CQl6MSwgejIsIHozLCB6NDsKKyAKK2RpZmYgLS1naXQgYS9kYi9iaXQuaCBiL2RiL2JpdC5oCitpbmRleCA4MGJhMjRjNC4uOWZkNzFmNGIgMTAwNjQ0CistLS0gYS9kYi9iaXQuaAorKysrIGIvZGIvYml0LmgKK0BAIC0yNSw1ICsyNSw1IEBACisgI2RlZmluZQlCVlVOU0lHTkVECTAKKyAjZGVmaW5lCUJWU0lHTkVECTEKKyAKKy1leHRlcm4gX19pbnQ2NF90CWdldGJpdHZhbCh2b2lkICpvYmosIGludCBiaXRvZmYsIGludCBuYml0cywgaW50IGZsYWdzKTsKKytleHRlcm4gaW50NjRfdAkJZ2V0Yml0dmFsKHZvaWQgKm9iaiwgaW50IGJpdG9mZiwgaW50IG5iaXRzLCBpbnQgZmxhZ3MpOworIGV4dGVybiB2b2lkICAgICAgICAgICAgIHNldGJpdHZhbCh2b2lkICpvYnVmLCBpbnQgYml0b2ZmLCBpbnQgbmJpdHMsIHZvaWQgKmlidWYpOworZGlmZiAtLWdpdCBhL2RiL2Jsb2NrLmMgYi9kYi9ibG9jay5jCitpbmRleCA0YTM1N2NlZC4uNWVjZDY4N2EgMTAwNjQ0CistLS0gYS9kYi9ibG9jay5jCisrKysgYi9kYi9ibG9jay5jCitAQCAtOTgsNyArOTgsNyBAQCBhYmxvY2tfZigKKyAJfQorIAlkZnNibm8gPSBibS5zdGFydGJsb2NrICsgKGJubyAtIGJtLnN0YXJ0b2ZmKTsKKyAJQVNTRVJUKHR5cHRhYltUWVBfQVRUUl0udHlwbm0gPT0gVFlQX0FUVFIpOworLQlzZXRfY3VyKCZ0eXB0YWJbVFlQX0FUVFJdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCisrCXNldF9jdXIoJnR5cHRhYltUWVBfQVRUUl0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCisgCQlibGtiYiwgREJfUklOR19BREQsIE5VTEwpOworIAlyZXR1cm4gMDsKKyB9CitAQCAtMTI4LDE0ICsxMjgsMTQgQEAgZGFkZHJfZigKKyAJaW50CQlhcmdjLAorIAljaGFyCQkqKmFyZ3YpCisgeworLQlfX2ludDY0X3QJZDsKKysJaW50NjRfdAkJZDsKKyAJY2hhcgkJKnA7CisgCisgCWlmIChhcmdjID09IDEpIHsKKyAJCWRicHJpbnRmKF8oImN1cnJlbnQgZGFkZHIgaXMgJWxsZFxuIiksIGlvY3VyX3RvcC0+b2ZmID4+IEJCU0hJRlQpOworIAkJcmV0dXJuIDA7CisgCX0KKy0JZCA9IChfX2ludDY0X3Qpc3RydG91bGwoYXJndlsxXSwgJnAsIDApOworKwlkID0gKGludDY0X3Qpc3RydG91bGwoYXJndlsxXSwgJnAsIDApOworIAlpZiAoKnAgIT0gJ1wwJyB8fAorIAkgICAgZCA+PSBtcC0+bV9zYi5zYl9kYmxvY2tzIDw8IChtcC0+bV9zYi5zYl9ibG9ja2xvZyAtIEJCU0hJRlQpKSB7CisgCQlkYnByaW50ZihfKCJiYWQgZGFkZHIgJXNcbiIpLCBhcmd2WzFdKTsKK0BAIC0xOTcsNyArMTk3LDcgQEAgZGJsb2NrX2YoCisgCUFTU0VSVCh0eXB0YWJbdHlwZV0udHlwbm0gPT0gdHlwZSk7CisgCWlmIChuZXggPiAxKQorIAkJbWFrZV9iYm1hcCgmYmJtYXAsIG5leCwgYm1wKTsKKy0Jc2V0X2N1cigmdHlwdGFiW3R5cGVdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCisrCXNldF9jdXIoJnR5cHRhYlt0eXBlXSwgKGludDY0X3QpWEZTX0ZTQl9UT19EQUREUihtcCwgZGZzYm5vKSwKKyAJCW5iICogYmxrYmIsIERCX1JJTkdfQURELCBuZXggPiAxID8gJmJibWFwIDogTlVMTCk7CisgCWZyZWUoYm1wKTsKKyAJcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvZGIvY2hlY2suYyBiL2RiL2NoZWNrLmMKK2luZGV4IDhlNjE4YTIzLi44MWJhNjNhNiAxMDA2NDQKKy0tLSBhL2RiL2NoZWNrLmMKKysrKyBiL2RiL2NoZWNrLmMKK0BAIC0xMTQsOCArMTE0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgZGlyaGFzaCB7CisgCisgc3RhdGljIHhmc19leHRsZW5fdAlhZ2ZmcmVlYmxrczsKKyBzdGF0aWMgeGZzX2V4dGxlbl90CWFnZmxvbmdlc3Q7Cistc3RhdGljIF9fdWludDY0X3QJYWdmX2FnZ3JfZnJlZWJsa3M7CS8qIGFnZ3JlZ2F0ZSBjb3VudCBvdmVyIGFsbCAqLworLXN0YXRpYyBfX3VpbnQzMl90CWFnZmJ0cmVlYmxrczsKKytzdGF0aWMgdWludDY0X3QJYWdmX2FnZ3JfZnJlZWJsa3M7CS8qIGFnZ3JlZ2F0ZSBjb3VudCBvdmVyIGFsbCAqLworK3N0YXRpYyB1aW50MzJfdAlhZ2ZidHJlZWJsa3M7Cisgc3RhdGljIGludAkJbGF6eWNvdW50OworIHN0YXRpYyB4ZnNfYWdpbm9fdAlhZ2ljb3VudDsKKyBzdGF0aWMgeGZzX2FnaW5vX3QJYWdpZnJlZWNvdW50OworQEAgLTEyNCwxMCArMTI0LDEwIEBAIHN0YXRpYyBpbnQJCWJsaXN0X3NpemU7Cisgc3RhdGljIGNoYXIJCSoqZGJtYXA7CS8qIHJlYWxseSBkYm1fdDo4ICovCisgc3RhdGljIGRpcmhhc2hfdAkqKmRpcmhhc2g7Cisgc3RhdGljIGludAkJZXJyb3I7Cistc3RhdGljIF9fdWludDY0X3QJZmRibG9ja3M7Cistc3RhdGljIF9fdWludDY0X3QJZnJleHRlbnRzOworLXN0YXRpYyBfX3VpbnQ2NF90CWljb3VudDsKKy1zdGF0aWMgX191aW50NjRfdAlpZnJlZTsKKytzdGF0aWMgdWludDY0X3QJZmRibG9ja3M7Cisrc3RhdGljIHVpbnQ2NF90CWZyZXh0ZW50czsKKytzdGF0aWMgdWludDY0X3QJaWNvdW50OworK3N0YXRpYyB1aW50NjRfdAlpZnJlZTsKKyBzdGF0aWMgaW5vZGF0YV90CSoqKmlub2RhdGE7Cisgc3RhdGljIGludAkJaW5vZGF0YV9oYXNoX3NpemU7Cisgc3RhdGljIGlub2RhdGFfdAkqKippbm9tYXA7CitAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgYmxvY2t0cmFzaF9mKAorIAkJZ290byBvdXQ7CisgCX0KKyAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKy0JCXJhbmRiID0gKHhmc19yZnNibG9ja190KSgoKChfX2ludDY0X3QpcmFuZG9tKCkgPDwgMzIpIHwKKysJCXJhbmRiID0gKHhmc19yZnNibG9ja190KSgoKChpbnQ2NF90KXJhbmRvbSgpIDw8IDMyKSB8CisgCQkJCQkgcmFuZG9tKCkpICUgYmxvY2tzKTsKKyAJCWZvciAoYmkgPSAwLCBhZ25vID0gMCwgZG9uZSA9IDA7CisgCQkgICAgICFkb25lICYmIGFnbm8gPCBtcC0+bV9zYi5zYl9hZ2NvdW50OworQEAgLTMwMzIsNyArMzAzMiw3IEBAIHByb2Nlc3NfbGVhZl9ub2RlX2Rpcl92MigKKyAJCX0KKyAJCWlmICh2KQorIAkJCWRicHJpbnRmKF8oImRpciBpbm9kZSAlbGxkIGJsb2NrICV1PSVsbHVcbiIpLCBpZC0+aW5vLAorLQkJCQkoX191aW50MzJfdClkYm5vLAorKwkJCQkodWludDMyX3QpZGJubywKKyAJCQkJKHhmc19mc2Jsb2NrX3QpYm1wLT5zdGFydGJsb2NrKTsKKyAJCXB1c2hfY3VyKCk7CisgCQlpZiAobmV4ID4gMSkKK0BAIC0zMDQ1LDcgKzMwNDUsNyBAQCBwcm9jZXNzX2xlYWZfbm9kZV9kaXJfdjIoCisgCQkJaWYgKCFzZmxhZyB8fCB2KQorIAkJCQlkYnByaW50ZihfKCJjYW4ndCByZWFkIGJsb2NrICV1IGZvciBkaXJlY3RvcnkgIgorIAkJCQkJICJpbm9kZSAlbGxkXG4iKSwKKy0JCQkJCShfX3VpbnQzMl90KWRibm8sIGlkLT5pbm8pOworKwkJCQkJKHVpbnQzMl90KWRibm8sIGlkLT5pbm8pOworIAkJCWVycm9yKys7CisgCQkJcG9wX2N1cigpOworIAkJCWRibm8gKz0gbXAtPm1fZGlyX2dlby0+ZnNiY291bnQgLSAxOworZGlmZiAtLWdpdCBhL2RiL2NvbnZlcnQuYyBiL2RiL2NvbnZlcnQuYworaW5kZXggYTMzN2FiZWEuLmZhNGY5NjIzIDEwMDY0NAorLS0tIGEvZGIvY29udmVydC5jCisrKysgYi9kYi9jb252ZXJ0LmMKK0BAIC0yNCwxMyArMjQsMTMgQEAKKyAKKyAjZGVmaW5lCU0oQSkJKDEgPDwgQ1RfICMjIEEpCisgI2RlZmluZQlhZ2Jsb2NrX3RvX2J5dGVzKHgpCVwKKy0JKChfX3VpbnQ2NF90KSh4KSA8PCBtcC0+bV9zYi5zYl9ibG9ja2xvZykKKysJKCh1aW50NjRfdCkoeCkgPDwgbXAtPm1fc2Iuc2JfYmxvY2tsb2cpCisgI2RlZmluZQlhZ2lub190b19ieXRlcyh4KQlcCistCSgoX191aW50NjRfdCkoeCkgPDwgbXAtPm1fc2Iuc2JfaW5vZGVsb2cpCisrCSgodWludDY0X3QpKHgpIDw8IG1wLT5tX3NiLnNiX2lub2RlbG9nKQorICNkZWZpbmUJYWdudW1iZXJfdG9fYnl0ZXMoeCkJXAorLQlhZ2Jsb2NrX3RvX2J5dGVzKChfX3VpbnQ2NF90KSh4KSAqIG1wLT5tX3NiLnNiX2FnYmxvY2tzKQorKwlhZ2Jsb2NrX3RvX2J5dGVzKCh1aW50NjRfdCkoeCkgKiBtcC0+bV9zYi5zYl9hZ2Jsb2NrcykKKyAjZGVmaW5lCWRhZGRyX3RvX2J5dGVzKHgpCVwKKy0JKChfX3VpbnQ2NF90KSh4KSA8PCBCQlNISUZUKQorKwkoKHVpbnQ2NF90KSh4KSA8PCBCQlNISUZUKQorICNkZWZpbmUJZnNibG9ja190b19ieXRlcyh4KQlcCisgCShhZ251bWJlcl90b19ieXRlcyhYRlNfRlNCX1RPX0FHTk8obXAsICh4KSkpICsgXAorIAkgYWdibG9ja190b19ieXRlcyhYRlNfRlNCX1RPX0FHQk5PKG1wLCAoeCkpKSkKK0BAIC0zOCw3ICszOCw3IEBACisgCShhZ251bWJlcl90b19ieXRlcyhYRlNfSU5PX1RPX0FHTk8obXAsICh4KSkpICsgXAorIAkgYWdpbm9fdG9fYnl0ZXMoWEZTX0lOT19UT19BR0lOTyhtcCwgKHgpKSkpCisgI2RlZmluZQlpbm9pZHhfdG9fYnl0ZXMoeCkJXAorLQkoKF9fdWludDY0X3QpKHgpIDw8IG1wLT5tX3NiLnNiX2lub2RlbG9nKQorKwkoKHVpbnQ2NF90KSh4KSA8PCBtcC0+bV9zYi5zYl9pbm9kZWxvZykKKyAKKyB0eXBlZGVmIGVudW0geworIAlDVF9OT05FID0gLTEsCitAQCAtNjgsNyArNjgsNyBAQCB0eXBlZGVmIHVuaW9uIHsKKyAJeGZzX2FnbnVtYmVyX3QJYWdudW1iZXI7CisgCWludAkJYmJvZmY7CisgCWludAkJYmxrb2ZmOworLQlfX3VpbnQ2NF90CWJ5dGU7CisrCXVpbnQ2NF90CWJ5dGU7CisgCXhmc19kYWRkcl90CWRhZGRyOworIAl4ZnNfZnNibG9ja190CWZzYmxvY2s7CisgCXhmc19pbm9fdAlpbm87CitAQCAtNzYsNyArNzYsNyBAQCB0eXBlZGVmIHVuaW9uIHsKKyAJaW50CQlpbm9vZmY7CisgfSBjdmFsX3Q7CisgCistc3RhdGljIF9fdWludDY0X3QJCWJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCk7Cisrc3RhdGljIHVpbnQ2NF90CQlieXRldmFsdWUoY3R5cGVfdCBjdHlwZSwgY3ZhbF90ICp2YWwpOworIHN0YXRpYyBpbnQJCWNvbnZlcnRfZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworIHN0YXRpYyBpbnQJCWdldHZhbHVlKGNoYXIgKnMsIGN0eXBlX3QgY3R5cGUsIGN2YWxfdCAqdmFsKTsKKyBzdGF0aWMgY3R5cGVfdAkJbG9va3VwY3R5KGNoYXIgKmN0eW5hbWUpOworQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgY29uc3QgY21kaW5mb190CWNvbnZlcnRfY21kID0KKyAJeyAiY29udmVydCIsIE5VTEwsIGNvbnZlcnRfZiwgMywgOSwgMCwgInR5cGUgbnVtIFt0eXBlIG51bV0uLi4gdHlwZSIsCisgCSAgImNvbnZlcnQgZnJvbSBvbmUgYWRkcmVzcyBmb3JtIHRvIGFub3RoZXIiLCBOVUxMIH07CisgCistc3RhdGljIF9fdWludDY0X3QKKytzdGF0aWMgdWludDY0X3QKKyBieXRldmFsdWUoY3R5cGVfdCBjdHlwZSwgY3ZhbF90ICp2YWwpCisgeworIAlzd2l0Y2ggKGN0eXBlKSB7CitAQCAtMTI5LDkgKzEyOSw5IEBAIGJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKKyAJY2FzZSBDVF9BR05VTUJFUjoKKyAJCXJldHVybiBhZ251bWJlcl90b19ieXRlcyh2YWwtPmFnbnVtYmVyKTsKKyAJY2FzZSBDVF9CQk9GRjoKKy0JCXJldHVybiAoX191aW50NjRfdCl2YWwtPmJib2ZmOworKwkJcmV0dXJuICh1aW50NjRfdCl2YWwtPmJib2ZmOworIAljYXNlIENUX0JMS09GRjoKKy0JCXJldHVybiAoX191aW50NjRfdCl2YWwtPmJsa29mZjsKKysJCXJldHVybiAodWludDY0X3QpdmFsLT5ibGtvZmY7CisgCWNhc2UgQ1RfQllURToKKyAJCXJldHVybiB2YWwtPmJ5dGU7CisgCWNhc2UgQ1RfREFERFI6CitAQCAtMTQzLDcgKzE0Myw3IEBAIGJ5dGV2YWx1ZShjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKKyAJY2FzZSBDVF9JTk9JRFg6CisgCQlyZXR1cm4gaW5vaWR4X3RvX2J5dGVzKHZhbC0+aW5vaWR4KTsKKyAJY2FzZSBDVF9JTk9PRkY6CistCQlyZXR1cm4gKF9fdWludDY0X3QpdmFsLT5pbm9vZmY7CisrCQlyZXR1cm4gKHVpbnQ2NF90KXZhbC0+aW5vb2ZmOworIAljYXNlIENUX05PTkU6CisgCWNhc2UgTkNUUzoKKyAJCWJyZWFrOworQEAgLTE2MCw3ICsxNjAsNyBAQCBjb252ZXJ0X2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAljdmFsX3QJCWN2YWxzW05DVFNdID0ge307CisgCWludAkJaTsKKyAJaW50CQltYXNrOworLQlfX3VpbnQ2NF90CXY7CisrCXVpbnQ2NF90CXY7CisgCWN0eXBlX3QJCXd0eXBlOworIAorIAkvKiBtb3ZlIHBhc3QgdGhlICJjb252ZXJ0IiBjb21tYW5kICovCitAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBpbnQKKyBnZXR2YWx1ZShjaGFyICpzLCBjdHlwZV90IGN0eXBlLCBjdmFsX3QgKnZhbCkKKyB7CisgCWNoYXIJCSpwOworLQlfX3VpbnQ2NF90CXY7CisrCXVpbnQ2NF90CXY7CisgCisgCXYgPSBzdHJ0b3VsbChzLCAmcCwgMCk7CisgCWlmICgqcCAhPSAnXDAnKSB7CitAQCAtMjg2LDcgKzI4Niw3IEBAIGdldHZhbHVlKGNoYXIgKnMsIGN0eXBlX3QgY3R5cGUsIGN2YWxfdCAqdmFsKQorIAkJdmFsLT5ibGtvZmYgPSAoaW50KXY7CisgCQlicmVhazsKKyAJY2FzZSBDVF9CWVRFOgorLQkJdmFsLT5ieXRlID0gKF9fdWludDY0X3QpdjsKKysJCXZhbC0+Ynl0ZSA9ICh1aW50NjRfdCl2OworIAkJYnJlYWs7CisgCWNhc2UgQ1RfREFERFI6CisgCQl2YWwtPmRhZGRyID0gKHhmc19kYWRkcl90KXY7CitkaWZmIC0tZ2l0IGEvZGIvZmFkZHIuYyBiL2RiL2ZhZGRyLmMKK2luZGV4IDg3NzIwMGJmLi41NjIwNzY0OCAxMDA2NDQKKy0tLSBhL2RiL2ZhZGRyLmMKKysrKyBiL2RiL2ZhZGRyLmMKK0BAIC03OSwxMSArNzksMTEgQEAgZmFfYXR0cmJsb2NrKAorIAl0eXBubV90CQluZXh0KQorIHsKKyAJYm1hcF9leHRfdAlibTsKKy0JX191aW50MzJfdAlibm87CisrCXVpbnQzMl90CWJubzsKKyAJeGZzX2ZzYmxvY2tfdAlkZnNibm87CisgCWludAkJbmV4OworIAorLQlibm8gPSAoX191aW50MzJfdClnZXRiaXR2YWwob2JqLCBiaXQsIGJpdHN6KGJubyksIEJWVU5TSUdORUQpOworKwlibm8gPSAodWludDMyX3QpZ2V0Yml0dmFsKG9iaiwgYml0LCBiaXRzeihibm8pLCBCVlVOU0lHTkVEKTsKKyAJaWYgKGJubyA9PSAwKSB7CisgCQlkYnByaW50ZihfKCJudWxsIGF0dHJpYnV0ZSBibG9jayBudW1iZXIsIGNhbm5vdCBzZXQgbmV3IGFkZHJcbiIpKTsKKyAJCXJldHVybjsKK0BAIC05Niw3ICs5Niw3IEBAIGZhX2F0dHJibG9jaygKKyAJfQorIAlkZnNibm8gPSBibS5zdGFydGJsb2NrICsgKGJubyAtIGJtLnN0YXJ0b2ZmKTsKKyAJQVNTRVJUKHR5cHRhYltuZXh0XS50eXBubSA9PSBuZXh0KTsKKy0Jc2V0X2N1cigmdHlwdGFiW25leHRdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksIGJsa2JiLAorKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksIGJsa2JiLAorIAkJREJfUklOR19BREQsIE5VTEwpOworIH0KKyAKK0BAIC0yNzYsMTEgKzI3NiwxMSBAQCBmYV9kaXJibG9jaygKKyB7CisgCWJibWFwX3QJCWJibWFwOworIAlibWFwX2V4dF90CSpibXA7CistCV9fdWludDMyX3QJYm5vOworKwl1aW50MzJfdAlibm87CisgCXhmc19mc2Jsb2NrX3QJZGZzYm5vOworIAlpbnQJCW5leDsKKyAKKy0JYm5vID0gKF9fdWludDMyX3QpZ2V0Yml0dmFsKG9iaiwgYml0LCBiaXRzeihibm8pLCBCVlVOU0lHTkVEKTsKKysJYm5vID0gKHVpbnQzMl90KWdldGJpdHZhbChvYmosIGJpdCwgYml0c3ooYm5vKSwgQlZVTlNJR05FRCk7CisgCWlmIChibm8gPT0gMCkgeworIAkJZGJwcmludGYoXygibnVsbCBkaXJlY3RvcnkgYmxvY2sgbnVtYmVyLCBjYW5ub3Qgc2V0IG5ldyBhZGRyXG4iKSk7CisgCQlyZXR1cm47CitAQCAtMjk3LDcgKzI5Nyw3IEBAIGZhX2RpcmJsb2NrKAorIAlBU1NFUlQodHlwdGFiW25leHRdLnR5cG5tID09IG5leHQpOworIAlpZiAobmV4ID4gMSkKKyAJCW1ha2VfYmJtYXAoJmJibWFwLCBuZXgsIGJtcCk7CistCXNldF9jdXIoJnR5cHRhYltuZXh0XSwgKF9faW50NjRfdClYRlNfRlNCX1RPX0RBRERSKG1wLCBkZnNibm8pLAorKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fREFERFIobXAsIGRmc2JubyksCisgCQlYRlNfRlNCX1RPX0JCKG1wLCBtcC0+bV9kaXJfZ2VvLT5mc2Jjb3VudCksIERCX1JJTkdfQURELAorIAkJbmV4ID4gMSA/ICZiYm1hcCA6IE5VTEwpOworIAlmcmVlKGJtcCk7CitAQCAtMzE3LDcgKzMxNyw3IEBAIGZhX2RyZnNibm8oCisgCQlyZXR1cm47CisgCX0KKyAJQVNTRVJUKHR5cHRhYltuZXh0XS50eXBubSA9PSBuZXh0KTsKKy0Jc2V0X2N1cigmdHlwdGFiW25leHRdLCAoX19pbnQ2NF90KVhGU19GU0JfVE9fQkIobXAsIGJubyksIGJsa2JiLAorKwlzZXRfY3VyKCZ0eXB0YWJbbmV4dF0sIChpbnQ2NF90KVhGU19GU0JfVE9fQkIobXAsIGJubyksIGJsa2JiLAorIAkJREJfUklOR19BREQsIE5VTEwpOworIH0KKyAKK2RpZmYgLS1naXQgYS9kYi9maWVsZC5jIGIvZGIvZmllbGQuYworaW5kZXggODY1YjBiNzEuLmYxZTVmMzVlIDEwMDY0NAorLS0tIGEvZGIvZmllbGQuYworKysrIGIvZGIvZmllbGQuYworQEAgLTgzLDcgKzgzLDcgQEAgY29uc3QgZnRhdHRyX3QJZnRhdHRydGFiW10gPSB7CisgCSAgYXR0cl9zZl9lbnRyeV9zaXplLCBGVEFSR19TSVpFLCBOVUxMLCBhdHRyX3NmX2VudHJ5X2ZsZHMgfSwKKyAJeyBGTERUX0FUVFJfU0ZfSERSLCAiYXR0cl9zZl9oZHIiLCBOVUxMLCAoY2hhciAqKWF0dHJfc2ZfaGRyX2ZsZHMsCisgCSAgU0koYml0c3ooc3RydWN0IHhmc19hdHRyX3NmX2hkcikpLCAwLCBOVUxMLCBhdHRyX3NmX2hkcl9mbGRzIH0sCistCXsgRkxEVF9BVFRSQkxPQ0ssICJhdHRyYmxvY2siLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KF9fdWludDMyX3QpKSwgMCwKKysJeyBGTERUX0FUVFJCTE9DSywgImF0dHJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDMyX3QpKSwgMCwKKyAJICBmYV9hdHRyYmxvY2ssIE5VTEwgfSwKKyAJeyBGTERUX0FUVFJTSE9SVCwgImF0dHJzaG9ydCIsIE5VTEwsIChjaGFyICopYXR0cl9zaG9ydGZvcm1fZmxkcywKKyAJICBhdHRyc2hvcnRfc2l6ZSwgRlRBUkdfU0laRSwgTlVMTCwgYXR0cl9zaG9ydGZvcm1fZmxkcyB9LAorQEAgLTE5OSw3ICsxOTksNyBAQCBjb25zdCBmdGF0dHJfdAlmdGF0dHJ0YWJbXSA9IHsKKyAJICBTSShiaXRzeihzdHJ1Y3QgeGZzX3JlZmNvdW50X3JlYykpLCAwLCBOVUxMLCByZWZjYnRfcmVjX2ZsZHMgfSwKKyAKKyAvKiBDUkMgZmllbGQgKi8KKy0JeyBGTERUX0NSQywgImNyYyIsIGZwX2NyYywgIiUjeCAoJXMpIiwgU0koYml0c3ooX191aW50MzJfdCkpLAorKwl7IEZMRFRfQ1JDLCAiY3JjIiwgZnBfY3JjLCAiJSN4ICglcykiLCBTSShiaXRzeih1aW50MzJfdCkpLAorIAkgIDAsIE5VTEwsIE5VTEwgfSwKKyAKKyAJeyBGTERUX0RFViwgImRldiIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHhmc19kZXZfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCitAQCAtMjE0LDcgKzIxNCw3IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0geworIAl7IEZMRFRfRElOT0RFX0NPUkUsICJkaW5vZGVfY29yZSIsIE5VTEwsIChjaGFyICopaW5vZGVfY29yZV9mbGRzLAorIAkgIFNJKGJpdHN6KHhmc19kaW5vZGVfdCkpLCAwLCBOVUxMLCBpbm9kZV9jb3JlX2ZsZHMgfSwKKyAJeyBGTERUX0RJTk9ERV9GTVQsICJkaW5vZGVfZm10IiwgZnBfZGlub2RlX2ZtdCwgTlVMTCwKKy0JICBTSShiaXRzeihfX2ludDhfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCisrCSAgU0koYml0c3ooaW50OF90KSksIDAsIE5VTEwsIE5VTEwgfSwKKyAJeyBGTERUX0RJTk9ERV9VLCAiZGlub2RlX3UiLCBOVUxMLCAoY2hhciAqKWlub2RlX3VfZmxkcywgaW5vZGVfdV9zaXplLAorIAkgIEZUQVJHX1NJWkV8RlRBUkdfT0tFTVBUWSwgTlVMTCwgaW5vZGVfdV9mbGRzIH0sCisgCXsgRkxEVF9ESU5PREVfVjMsICJkaW5vZGVfdjMiLCBOVUxMLCAoY2hhciAqKWlub2RlX3YzX2ZsZHMsCitAQCAtMjk1LDcgKzI5NSw3IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0geworIAl7IEZMRFRfREEzX05PREVfSERSLCAiZGlyX25vZGVfaGRyIiwgTlVMTCwgKGNoYXIgKilkYTNfbm9kZV9oZHJfZmxkcywKKyAJICBTSShiaXRzeihzdHJ1Y3QgeGZzX2RhM19ub2RlX2hkcikpLCAwLCBOVUxMLCBkYTNfbm9kZV9oZHJfZmxkcyB9LAorIAorLQl7IEZMRFRfRElSQkxPQ0ssICJkaXJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50MzJfdCkpLCAwLAorKwl7IEZMRFRfRElSQkxPQ0ssICJkaXJibG9jayIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDMyX3QpKSwgMCwKKyAJICBmYV9kaXJibG9jaywgTlVMTCB9LAorIAl7IEZMRFRfRElTS19EUVVPVCwgImRpc2tfZHF1b3QiLCBOVUxMLCAoY2hhciAqKWRpc2tfZHF1b3RfZmxkcywKKyAJICBTSShiaXRzeih4ZnNfZGlza19kcXVvdF90KSksIDAsIE5VTEwsIGRpc2tfZHF1b3RfZmxkcyB9LAorQEAgLTMzNSwxNSArMzM1LDE1IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0geworIAkgIEZUQVJHX1NJWkUsIE5VTEwsIGlub2RlX2NyY19mbGRzIH0sCisgCXsgRkxEVF9JTk9GUkVFLCAiaW5vZnJlZSIsIGZwX251bSwgIiUjbGx4IiwgU0koYml0c3ooeGZzX2lub2ZyZWVfdCkpLCAwLAorIAkgIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX0lOVDE2RCwgImludDE2ZCIsIGZwX251bSwgIiVkIiwgU0koYml0c3ooX19pbnQxNl90KSksCisrCXsgRkxEVF9JTlQxNkQsICJpbnQxNmQiLCBmcF9udW0sICIlZCIsIFNJKGJpdHN6KGludDE2X3QpKSwKKyAJICBGVEFSR19TSUdORUQsIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX0lOVDMyRCwgImludDMyZCIsIGZwX251bSwgIiVkIiwgU0koYml0c3ooX19pbnQzMl90KSksCisrCXsgRkxEVF9JTlQzMkQsICJpbnQzMmQiLCBmcF9udW0sICIlZCIsIFNJKGJpdHN6KGludDMyX3QpKSwKKyAJICBGVEFSR19TSUdORUQsIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX0lOVDY0RCwgImludDY0ZCIsIGZwX251bSwgIiVsbGQiLCBTSShiaXRzeihfX2ludDY0X3QpKSwKKysJeyBGTERUX0lOVDY0RCwgImludDY0ZCIsIGZwX251bSwgIiVsbGQiLCBTSShiaXRzeihpbnQ2NF90KSksCisgCSAgRlRBUkdfU0lHTkVELCBOVUxMLCBOVUxMIH0sCistCXsgRkxEVF9JTlQ4RCwgImludDhkIiwgZnBfbnVtLCAiJWQiLCBTSShiaXRzeihfX2ludDhfdCkpLCBGVEFSR19TSUdORUQsCisrCXsgRkxEVF9JTlQ4RCwgImludDhkIiwgZnBfbnVtLCAiJWQiLCBTSShiaXRzeihpbnQ4X3QpKSwgRlRBUkdfU0lHTkVELAorIAkgIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX05TRUMsICJuc2VjIiwgZnBfbnVtLCAiJTA5ZCIsIFNJKGJpdHN6KF9faW50MzJfdCkpLCBGVEFSR19TSUdORUQsCisrCXsgRkxEVF9OU0VDLCAibnNlYyIsIGZwX251bSwgIiUwOWQiLCBTSShiaXRzeihpbnQzMl90KSksIEZUQVJHX1NJR05FRCwKKyAJICBOVUxMLCBOVUxMIH0sCisgCXsgRkxEVF9RQ05ULCAicWNudCIsIGZwX251bSwgIiVsbHUiLCBTSShiaXRzeih4ZnNfcWNudF90KSksIDAsIE5VTEwsCisgCSAgTlVMTCB9LAorQEAgLTM1NiwzNCArMzU2LDM0IEBAIGNvbnN0IGZ0YXR0cl90CWZ0YXR0cnRhYltdID0geworIAl7IEZMRFRfU1lNTElOS19DUkMsICJzeW1saW5rIiwgTlVMTCwgKGNoYXIgKilzeW1saW5rX2NyY19mbGRzLAorIAkgIHN5bWxpbmtfc2l6ZSwgRlRBUkdfU0laRSwgTlVMTCwgc3ltbGlua19jcmNfZmxkcyB9LAorIAorLQl7IEZMRFRfVElNRSwgInRpbWUiLCBmcF90aW1lLCBOVUxMLCBTSShiaXRzeihfX2ludDMyX3QpKSwgRlRBUkdfU0lHTkVELAorKwl7IEZMRFRfVElNRSwgInRpbWUiLCBmcF90aW1lLCBOVUxMLCBTSShiaXRzeihpbnQzMl90KSksIEZUQVJHX1NJR05FRCwKKyAJICBOVUxMLCBOVUxMIH0sCisgCXsgRkxEVF9USU1FU1RBTVAsICJ0aW1lc3RhbXAiLCBOVUxMLCAoY2hhciAqKXRpbWVzdGFtcF9mbGRzLAorIAkgIFNJKGJpdHN6KHhmc190aW1lc3RhbXBfdCkpLCAwLCBOVUxMLCB0aW1lc3RhbXBfZmxkcyB9LAorIAl7IEZMRFRfVUlOVDEsICJ1aW50MSIsIGZwX251bSwgIiV1IiwgU0koMSksIDAsIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX1VJTlQxNkQsICJ1aW50MTZkIiwgZnBfbnVtLCAiJXUiLCBTSShiaXRzeihfX3VpbnQxNl90KSksIDAsIE5VTEwsCisrCXsgRkxEVF9VSU5UMTZELCAidWludDE2ZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3oodWludDE2X3QpKSwgMCwgTlVMTCwKKyAJICBOVUxMIH0sCistCXsgRkxEVF9VSU5UMTZPLCAidWludDE2byIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KF9fdWludDE2X3QpKSwgMCwKKysJeyBGTERUX1VJTlQxNk8sICJ1aW50MTZvIiwgZnBfbnVtLCAiJSNvIiwgU0koYml0c3oodWludDE2X3QpKSwgMCwKKyAJICBOVUxMLCBOVUxMIH0sCistCXsgRkxEVF9VSU5UMTZYLCAidWludDE2eCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KF9fdWludDE2X3QpKSwgMCwKKysJeyBGTERUX1VJTlQxNlgsICJ1aW50MTZ4IiwgZnBfbnVtLCAiJSN4IiwgU0koYml0c3oodWludDE2X3QpKSwgMCwKKyAJICBOVUxMLCBOVUxMIH0sCistCXsgRkxEVF9VSU5UMzJELCAidWludDMyZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50MzJfdCkpLCAwLCBOVUxMLAorKwl7IEZMRFRfVUlOVDMyRCwgInVpbnQzMmQiLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsIE5VTEwsCisgCSAgTlVMTCB9LAorLQl7IEZMRFRfVUlOVDMyTywgInVpbnQzMm8iLCBmcF9udW0sICIlI28iLCBTSShiaXRzeihfX3VpbnQzMl90KSksIDAsCisrCXsgRkxEVF9VSU5UMzJPLCAidWludDMybyIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsCisgCSAgTlVMTCwgTlVMTCB9LAorLQl7IEZMRFRfVUlOVDMyWCwgInVpbnQzMngiLCBmcF9udW0sICIlI3giLCBTSShiaXRzeihfX3VpbnQzMl90KSksIDAsCisrCXsgRkxEVF9VSU5UMzJYLCAidWludDMyeCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHVpbnQzMl90KSksIDAsCisgCSAgTlVMTCwgTlVMTCB9LAorLQl7IEZMRFRfVUlOVDY0RCwgInVpbnQ2NGQiLCBmcF9udW0sICIlbGx1IiwgU0koYml0c3ooX191aW50NjRfdCkpLCAwLAorKwl7IEZMRFRfVUlOVDY0RCwgInVpbnQ2NGQiLCBmcF9udW0sICIlbGx1IiwgU0koYml0c3oodWludDY0X3QpKSwgMCwKKyAJICBOVUxMLCBOVUxMIH0sCistCXsgRkxEVF9VSU5UNjRPLCAidWludDY0byIsIGZwX251bSwgIiUjbGxvIiwgU0koYml0c3ooX191aW50NjRfdCkpLCAwLAorKwl7IEZMRFRfVUlOVDY0TywgInVpbnQ2NG8iLCBmcF9udW0sICIlI2xsbyIsIFNJKGJpdHN6KHVpbnQ2NF90KSksIDAsCisgCSAgTlVMTCwgTlVMTCB9LAorLQl7IEZMRFRfVUlOVDY0WCwgInVpbnQ2NHgiLCBmcF9udW0sICIlI2xseCIsIFNJKGJpdHN6KF9fdWludDY0X3QpKSwgMCwKKysJeyBGTERUX1VJTlQ2NFgsICJ1aW50NjR4IiwgZnBfbnVtLCAiJSNsbHgiLCBTSShiaXRzeih1aW50NjRfdCkpLCAwLAorIAkgIE5VTEwsIE5VTEwgfSwKKy0JeyBGTERUX1VJTlQ4RCwgInVpbnQ4ZCIsIGZwX251bSwgIiV1IiwgU0koYml0c3ooX191aW50OF90KSksIDAsIE5VTEwsCisrCXsgRkxEVF9VSU5UOEQsICJ1aW50OGQiLCBmcF9udW0sICIldSIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKKyAJICBOVUxMIH0sCistCXsgRkxEVF9VSU5UOE8sICJ1aW50OG8iLCBmcF9udW0sICIlI28iLCBTSShiaXRzeihfX3VpbnQ4X3QpKSwgMCwgTlVMTCwKKysJeyBGTERUX1VJTlQ4TywgInVpbnQ4byIsIGZwX251bSwgIiUjbyIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKKyAJICBOVUxMIH0sCistCXsgRkxEVF9VSU5UOFgsICJ1aW50OHgiLCBmcF9udW0sICIlI3giLCBTSShiaXRzeihfX3VpbnQ4X3QpKSwgMCwgTlVMTCwKKysJeyBGTERUX1VJTlQ4WCwgInVpbnQ4eCIsIGZwX251bSwgIiUjeCIsIFNJKGJpdHN6KHVpbnQ4X3QpKSwgMCwgTlVMTCwKKyAJICBOVUxMIH0sCisgCXsgRkxEVF9VVUlELCAidXVpZCIsIGZwX3V1aWQsIE5VTEwsIFNJKGJpdHN6KHV1aWRfdCkpLCAwLCBOVUxMLCBOVUxMIH0sCisgCXsgRkxEVF9aWlosIE5VTEwgfQorZGlmZiAtLWdpdCBhL2RiL2ZwcmludC5jIGIvZGIvZnByaW50LmMKK2luZGV4IGZkN2U3ZjQ1Li4yNjFhMzFlZiAxMDA2NDQKKy0tLSBhL2RiL2ZwcmludC5jCisrKysgYi9kYi9mcHJpbnQuYworQEAgLTgwLDcgKzgwLDcgQEAgZnBfbnVtKAorIAlpbnQJCWJpdHBvczsKKyAJaW50CQlpOworIAlpbnQJCWlzbnVsbDsKKy0JX19pbnQ2NF90CXZhbDsKKysJaW50NjRfdAkJdmFsOworIAorIAlmb3IgKGkgPSAwLCBiaXRwb3MgPSBiaXQ7CisgCSAgICAgaSA8IGNvdW50ICYmICFzZWVuaW50KCk7CitAQCAtMTAwLDcgKzEwMCw3IEBAIGZwX251bSgKKyAJCWVsc2UgaWYgKHNpemUgPiAzMikKKyAJCQlkYnByaW50ZihmbXRzdHIsIHZhbCk7CisgCQllbHNlCistCQkJZGJwcmludGYoZm10c3RyLCAoX19pbnQzMl90KXZhbCk7CisrCQkJZGJwcmludGYoZm10c3RyLCAoaW50MzJfdCl2YWwpOworIAkJaWYgKGkgPCBjb3VudCAtIDEpCisgCQkJZGJwcmludGYoIiAiKTsKKyAJfQorQEAgLTIwMyw3ICsyMDMsNyBAQCBmcF9jcmMoCisgeworIAlpbnQJCWJpdHBvczsKKyAJaW50CQlpOworLQlfX2ludDY0X3QJdmFsOworKwlpbnQ2NF90CQl2YWw7CisgCWNoYXIJCSpvazsKKyAKKyAJc3dpdGNoIChpb2N1cl9jcmNfdmFsaWQoKSkgeworQEAgLTIzMCw3ICsyMzAsNyBAQCBmcF9jcmMoCisgCQlpZiAoc2l6ZSA+IDMyKQorIAkJCWRicHJpbnRmKGZtdHN0ciwgdmFsLCBvayk7CisgCQllbHNlCistCQkJZGJwcmludGYoZm10c3RyLCAoX19pbnQzMl90KXZhbCwgb2spOworKwkJCWRicHJpbnRmKGZtdHN0ciwgKGludDMyX3QpdmFsLCBvayk7CisgCQlpZiAoaSA8IGNvdW50IC0gMSkKKyAJCQlkYnByaW50ZigiICIpOworIAl9CitkaWZmIC0tZ2l0IGEvZGIvZnJhZy5jIGIvZGIvZnJhZy5jCitpbmRleCA4MDA1ZTQ1ZC4uZDIyNGYwYzIgMTAwNjQ0CistLS0gYS9kYi9mcmFnLmMKKysrKyBiL2RiL2ZyYWcuYworQEAgLTQyLDggKzQyLDggQEAgdHlwZWRlZglzdHJ1Y3QgZXh0bWFwIHsKKyAKKyBzdGF0aWMgaW50CQlhZmxhZzsKKyBzdGF0aWMgaW50CQlkZmxhZzsKKy1zdGF0aWMgX191aW50NjRfdAlleHRjb3VudF9hY3R1YWw7Cistc3RhdGljIF9fdWludDY0X3QJZXh0Y291bnRfaWRlYWw7Cisrc3RhdGljIHVpbnQ2NF90CWV4dGNvdW50X2FjdHVhbDsKKytzdGF0aWMgdWludDY0X3QJZXh0Y291bnRfaWRlYWw7Cisgc3RhdGljIGludAkJZmZsYWc7Cisgc3RhdGljIGludAkJbGZsYWc7Cisgc3RhdGljIGludAkJcWZsYWc7CitAQCAtMzEwLDggKzMxMCw4IEBAIHByb2Nlc3NfaW5vZGUoCisgCXhmc19hZ2lub190CQlhZ2lubywKKyAJeGZzX2Rpbm9kZV90CQkqZGlwKQorIHsKKy0JX191aW50NjRfdAkJYWN0dWFsOworLQlfX3VpbnQ2NF90CQlpZGVhbDsKKysJdWludDY0X3QJCWFjdHVhbDsKKysJdWludDY0X3QJCWlkZWFsOworIAl4ZnNfaW5vX3QJCWlubzsKKyAJaW50CQkJc2tpcGE7CisgCWludAkJCXNraXBkOworZGlmZiAtLWdpdCBhL2RiL2lub2RlLmMgYi9kYi9pbm9kZS5jCitpbmRleCA4YjdhNDFlNC4uNmNjNDdkNmEgMTAwNjQ0CistLS0gYS9kYi9pbm9kZS5jCisrKysgYi9kYi9pbm9kZS5jCitAQCAtMTE5LDQ5ICsxMTksNDkgQEAgY29uc3QgZmllbGRfdAlpbm9kZV9jb3JlX2ZsZHNbXSA9IHsKKyAJeyAiZG1zdGF0ZSIsIEZMRFRfVUlOVDE2RCwgT0koQ09GRihkbXN0YXRlKSksIEMxLCAwLCBUWVBfTk9ORSB9LAorIAl7ICJmbGFncyIsIEZMRFRfVUlOVDE2WCwgT0koQ09GRihmbGFncykpLCBDMSwgRkxEX1NLSVBBTEwsIFRZUF9OT05FIH0sCisgCXsgIm5ld3J0Ym0iLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05FV1JUQk1fQklUIC0gMSksIEMxLAorKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19ORVdSVEJNX0JJVCAtIDEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJwcmVhbGxvYyIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfUFJFQUxMT0NfQklUIC0gMSksIEMxLAorKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19QUkVBTExPQ19CSVQgLSAxKSwgQzEsCisgCSAgMCwgVFlQX05PTkUgfSwKKyAJeyAicmVhbHRpbWUiLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX1JFQUxUSU1FX0JJVCAtIDEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfUkVBTFRJTUVfQklUIC0gMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImltbXV0YWJsZSIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfSU1NVVRBQkxFX0JJVC0xKSwgQzEsCisrCSAgT0koQ09GRihmbGFncykgKyBiaXRzeih1aW50MTZfdCkgLSBYRlNfRElGTEFHX0lNTVVUQUJMRV9CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImFwcGVuZCIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfQVBQRU5EX0JJVCAtIDEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfQVBQRU5EX0JJVCAtIDEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJzeW5jIiwgRkxEVF9VSU5UMSwKKy0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19TWU5DX0JJVCAtIDEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfU1lOQ19CSVQgLSAxKSwgQzEsCisgCSAgMCwgVFlQX05PTkUgfSwKKyAJeyAibm9hdGltZSIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9BVElNRV9CSVQgLSAxKSwgQzEsCisrCSAgT0koQ09GRihmbGFncykgKyBiaXRzeih1aW50MTZfdCkgLSBYRlNfRElGTEFHX05PQVRJTUVfQklUIC0gMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgIm5vZHVtcCIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9EVU1QX0JJVCAtIDEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9EVU1QX0JJVCAtIDEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJydGluaGVyaXQiLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX1JUSU5IRVJJVF9CSVQtMSksIEMxLAorKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19SVElOSEVSSVRfQklULTEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJwcm9qaW5oZXJpdCIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfUFJPSklOSEVSSVRfQklULTEpLEMxLAorKwkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3oodWludDE2X3QpIC0gWEZTX0RJRkxBR19QUk9KSU5IRVJJVF9CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgIm5vc3ltbGlua3MiLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05PU1lNTElOS1NfQklULTEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9TWU1MSU5LU19CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImV4dHN6IiwgRkxEVF9VSU5UMSwKKy0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19FWFRTSVpFX0JJVC0xKSxDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU0laRV9CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImV4dHN6aW5oZXJpdCIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFncykgKyBiaXRzeihfX3VpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU1pJTkhFUklUX0JJVC0xKSxDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRVhUU1pJTkhFUklUX0JJVC0xKSwgQzEsCisgCSAgMCwgVFlQX05PTkUgfSwKKyAJeyAibm9kZWZyYWciLCBGTERUX1VJTlQxLAorLQkgIE9JKENPRkYoZmxhZ3MpICsgYml0c3ooX191aW50MTZfdCkgLSBYRlNfRElGTEFHX05PREVGUkFHX0JJVC0xKSxDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfTk9ERUZSQUdfQklULTEpLCBDMSwKKyAJICAwLCBUWVBfTk9ORSB9LAorIAl7ICJmaWxlc3RyZWFtIiwgRkxEVF9VSU5UMSwKKy0JICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KF9fdWludDE2X3QpIC0gWEZTX0RJRkxBR19GSUxFU1RSRUFNX0JJVC0xKSxDMSwKKysJICBPSShDT0ZGKGZsYWdzKSArIGJpdHN6KHVpbnQxNl90KSAtIFhGU19ESUZMQUdfRklMRVNUUkVBTV9CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImdlbiIsIEZMRFRfVUlOVDMyRCwgT0koQ09GRihnZW4pKSwgQzEsIDAsIFRZUF9OT05FIH0sCisgCXsgTlVMTCB9CitAQCAtMTc3LDEwICsxNzcsMTAgQEAgY29uc3QgZmllbGRfdAlpbm9kZV92M19mbGRzW10gPSB7CisgCXsgImludW1iZXIiLCBGTERUX0lOTywgT0koQ09GRihpbm8pKSwgQzEsIDAsIFRZUF9OT05FIH0sCisgCXsgInV1aWQiLCBGTERUX1VVSUQsIE9JKENPRkYodXVpZCkpLCBDMSwgMCwgVFlQX05PTkUgfSwKKyAJeyAicmVmbGluayIsIEZMRFRfVUlOVDEsCistCSAgT0koQ09GRihmbGFnczIpICsgYml0c3ooX191aW50NjRfdCkgLSBYRlNfRElGTEFHMl9SRUZMSU5LX0JJVC0xKSwgQzEsCisrCSAgT0koQ09GRihmbGFnczIpICsgYml0c3oodWludDY0X3QpIC0gWEZTX0RJRkxBRzJfUkVGTElOS19CSVQtMSksIEMxLAorIAkgIDAsIFRZUF9OT05FIH0sCisgCXsgImNvd2V4dHN6IiwgRkxEVF9VSU5UMSwKKy0JICBPSShDT0ZGKGZsYWdzMikgKyBiaXRzeihfX3VpbnQ2NF90KSAtIFhGU19ESUZMQUcyX0NPV0VYVFNJWkVfQklULTEpLCBDMSwKKysJICBPSShDT0ZGKGZsYWdzMikgKyBiaXRzeih1aW50NjRfdCkgLSBYRlNfRElGTEFHMl9DT1dFWFRTSVpFX0JJVC0xKSwgQzEsCisgCSAgMCwgVFlQX05PTkUgfSwKKyAJeyBOVUxMIH0KKyB9OworZGlmZiAtLWdpdCBhL2RiL2lvLmMgYi9kYi9pby5jCitpbmRleCAxZjI3ZjZiMy4uZmQ5YjlmNGIgMTAwNjQ0CistLS0gYS9kYi9pby5jCisrKysgYi9kYi9pby5jCitAQCAtNTQ1LDcgKzU0NSw3IEBAIHNldF9jdXIoCisgCXN0cnVjdCB4ZnNfYnVmCSpicDsKKyAJeGZzX2lub190CWRpcmlubzsKKyAJeGZzX2lub190CWlubzsKKy0JX191aW50MTZfdAltb2RlOworKwl1aW50MTZfdAltb2RlOworIAljb25zdCBzdHJ1Y3QgeGZzX2J1Zl9vcHMgKm9wcyA9IHR5cGUgPyB0eXBlLT5ib3BzIDogTlVMTDsKKyAKKyAJaWYgKGlvY3VyX3NwIDwgMCkgeworZGlmZiAtLWdpdCBhL2RiL2lvLmggYi9kYi9pby5oCitpbmRleCA5OTczMDA0OC4uZGYwZmRkNzUgMTAwNjQ0CistLS0gYS9kYi9pby5oCisrKysgYi9kYi9pby5oCitAQCAtMjUsNyArMjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBiYm1hcCB7CisgfSBiYm1hcF90OworIAorIHR5cGVkZWYgc3RydWN0IGlvY3VyIHsKKy0JX19pbnQ2NF90CQliYjsJLyogQkIgbnVtYmVyIGluIGZpbGVzeXN0ZW0gb2YgYnVmICovCisrCWludDY0X3QJCQliYjsJLyogQkIgbnVtYmVyIGluIGZpbGVzeXN0ZW0gb2YgYnVmICovCisgCWludAkJCWJsZW47CS8qIGxlbmd0aCBvZiAiYnVmIiwgYmIncyAqLworIAlpbnQJCQlib2ZmOwkvKiBkYXRhIC0gYnVmICovCisgCXZvaWQJCQkqYnVmOwkvKiBiYXNlIGFkZHJlc3Mgb2YgYnVmZmVyICovCitAQCAtMzMsNyArMzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBpb2N1ciB7CisgCXhmc19pbm9fdAkJZGlyaW5vOwkvKiBjdXJyZW50IGRpcmVjdG9yeSBpbm9kZSBudW1iZXIgKi8KKyAJeGZzX2lub190CQlpbm87CS8qIGN1cnJlbnQgaW5vZGUgbnVtYmVyICovCisgCWludAkJCWxlbjsJLyogbGVuZ3RoIG9mICJkYXRhIiwgYnl0ZXMgKi8KKy0JX191aW50MTZfdAkJbW9kZTsJLyogY3VycmVudCBpbm9kZSdzIG1vZGUgKi8KKysJdWludDE2X3QJCW1vZGU7CS8qIGN1cnJlbnQgaW5vZGUncyBtb2RlICovCisgCXhmc19vZmZfdAkJb2ZmOwkvKiBmcyBvZmZzZXQgb2YgImRhdGEiIGluIGJ5dGVzICovCisgCWNvbnN0IHN0cnVjdCB0eXAJKnR5cDsJLyogdHlwZSBvZiAiZGF0YSIgKi8KKyAJYmJtYXBfdAkJCSpiYm1hcDsJLyogbWFwIGRhZGRyIGlmIGZyYWdtZW50ZWQgKi8KK0BAIC01Nyw3ICs1Nyw3IEBAIGV4dGVybiB2b2lkCW9mZl9jdXIoaW50IG9mZiwgaW50IGxlbik7CisgZXh0ZXJuIHZvaWQJcG9wX2N1cih2b2lkKTsKKyBleHRlcm4gdm9pZAlwcmludF9pb2N1cihjaGFyICp0YWcsIGlvY3VyX3QgKmlvYyk7CisgZXh0ZXJuIHZvaWQJcHVzaF9jdXIodm9pZCk7CistZXh0ZXJuIGludAlyZWFkX2J1ZihfX2ludDY0X3QgZGFkZHIsIGludCBjb3VudCwgdm9pZCAqYnVmcCk7CisrZXh0ZXJuIGludAlyZWFkX2J1ZihpbnQ2NF90IGRhZGRyLCBpbnQgY291bnQsIHZvaWQgKmJ1ZnApOworIGV4dGVybiB2b2lkICAgICB3cml0ZV9jdXIodm9pZCk7CisgZXh0ZXJuIHZvaWQJc2V0X2N1cihjb25zdCBzdHJ1Y3QgdHlwICp0eXBlLCB4ZnNfZGFkZHJfdCBibGtudW0sCisgCQkJaW50IGxlbiwgaW50IHJpbmdfYWRkLCBiYm1hcF90ICpiYm1hcCk7CitkaWZmIC0tZ2l0IGEvZGIvbWV0YWR1bXAuYyBiL2RiL21ldGFkdW1wLmMKK2luZGV4IDMxYmI1OTU5Li42N2JkZjE0ZSAxMDA2NDQKKy0tLSBhL2RiL21ldGFkdW1wLmMKKysrKyBiL2RiL21ldGFkdW1wLmMKK0BAIC0xNzUsNyArMTc1LDcgQEAgd3JpdGVfaW5kZXgodm9pZCkKKyBzdGF0aWMgaW50Cisgd3JpdGVfYnVmX3NlZ21lbnQoCisgCWNoYXIJCSpkYXRhLAorLQlfX2ludDY0X3QJb2ZmLAorKwlpbnQ2NF90CQlvZmYsCisgCWludAkJbGVuKQorIHsKKyAJaW50CQlpOworQEAgLTEyNTYsNyArMTI1Niw3IEBAIHByb2Nlc3Nfc2ZfZGlyKAorIHsKKyAJc3RydWN0IHhmc19kaXIyX3NmX2hkcgkqc2ZwOworIAl4ZnNfZGlyMl9zZl9lbnRyeV90CSpzZmVwOworLQlfX3VpbnQ2NF90CQlpbm9fZGlyX3NpemU7CisrCXVpbnQ2NF90CQlpbm9fZGlyX3NpemU7CisgCWludAkJCWk7CisgCisgCXNmcCA9IChzdHJ1Y3QgeGZzX2RpcjJfc2ZfaGRyICopWEZTX0RGT1JLX0RQVFIoZGlwKTsKK0BAIC0xMzIyLDcgKzEzMjIsNyBAQCBwcm9jZXNzX3NmX2RpcigKKyBzdGF0aWMgdm9pZAorIG9iZnVzY2F0ZV9wYXRoX2NvbXBvbmVudHMoCisgCWNoYXIJCQkqYnVmLAorLQlfX3VpbnQ2NF90CQlsZW4pCisrCXVpbnQ2NF90CQlsZW4pCisgeworIAl1bnNpZ25lZCBjaGFyCQkqY29tcCA9ICh1bnNpZ25lZCBjaGFyICopYnVmOworIAl1bnNpZ25lZCBjaGFyCQkqZW5kID0gY29tcCArIGxlbjsKK0BAIC0xMzU5LDcgKzEzNTksNyBAQCBzdGF0aWMgdm9pZAorIHByb2Nlc3Nfc2Zfc3ltbGluaygKKyAJeGZzX2Rpbm9kZV90CQkqZGlwKQorIHsKKy0JX191aW50NjRfdAkJbGVuOworKwl1aW50NjRfdAkJbGVuOworIAljaGFyCQkJKmJ1ZjsKKyAKKyAJbGVuID0gYmU2NF90b19jcHUoZGlwLT5kaV9zaXplKTsKK0BAIC0xNjMxLDcgKzE2MzEsNyBAQCBwcm9jZXNzX2F0dHJfYmxvY2soCisgCXhmc19hdHRyX2xlYWZfZW50cnlfdCAJCSplbnRyeTsKKyAJeGZzX2F0dHJfbGVhZl9uYW1lX2xvY2FsX3QgCSpsb2NhbDsKKyAJeGZzX2F0dHJfbGVhZl9uYW1lX3JlbW90ZV90IAkqcmVtb3RlOworLQlfX3VpbnQzMl90CQkJYnMgPSBtcC0+bV9zYi5zYl9ibG9ja3NpemU7CisrCXVpbnQzMl90CQkJYnMgPSBtcC0+bV9zYi5zYl9ibG9ja3NpemU7CisgCWNoYXIJCQkJKmZpcnN0X25hbWU7CisgCisgCitAQCAtMjI3MCw3ICsyMjcwLDcgQEAgZG9uZToKKyAJcmV0dXJuIHN1Y2Nlc3M7CisgfQorIAorLXN0YXRpYyBfX3VpbnQzMl90CWlub2Rlc19jb3BpZWQgPSAwOworK3N0YXRpYyB1aW50MzJfdAlpbm9kZXNfY29waWVkOworIAorIHN0YXRpYyBpbnQKKyBjb3B5X2lub2RlX2NodW5rKAorZGlmZiAtLWdpdCBhL2RiL3NiLmMgYi9kYi9zYi5jCitpbmRleCA4ZTc3MjJjZC4uZjE5MjQ4ZDcgMTAwNjQ0CistLS0gYS9kYi9zYi5jCisrKysgYi9kYi9zYi5jCitAQCAtNjA2LDcgKzYwNiw3IEBAIHZlcnNpb25faGVscCh2b2lkKQorIH0KKyAKKyBzdGF0aWMgaW50CistZG9fdmVyc2lvbih4ZnNfYWdudW1iZXJfdCBhZ25vLCBfX3VpbnQxNl90IHZlcnNpb24sIF9fdWludDMyX3QgZmVhdHVyZXMpCisrZG9fdmVyc2lvbih4ZnNfYWdudW1iZXJfdCBhZ25vLCB1aW50MTZfdCB2ZXJzaW9uLCB1aW50MzJfdCBmZWF0dXJlcykKKyB7CisgCXhmc19zYl90CXRzYjsKKyAKK0BAIC03MTAsOCArNzEwLDggQEAgdmVyc2lvbl9mKAorIAlpbnQJCWFyZ2MsCisgCWNoYXIJCSoqYXJndikKKyB7CistCV9fdWludDE2X3QJdmVyc2lvbiA9IDA7CistCV9fdWludDMyX3QJZmVhdHVyZXMgPSAwOworKwl1aW50MTZfdAl2ZXJzaW9uID0gMDsKKysJdWludDMyX3QJZmVhdHVyZXMgPSAwOworIAl4ZnNfYWdudW1iZXJfdAlhZzsKKyAKKyAJaWYgKGFyZ2MgPT0gMikgewkvKiBXUklURSBWRVJTSU9OICovCitkaWZmIC0tZ2l0IGEvZnNyL3hmc19mc3IuYyBiL2Zzci94ZnNfZnNyLmMKK2luZGV4IDUxN2I3NWYwLi5kNDg0NmEzMiAxMDA2NDQKKy0tLSBhL2Zzci94ZnNfZnNyLmMKKysrKyBiL2Zzci94ZnNfZnNyLmMKK0BAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBnZXRibWFwICAqb3V0bWFwID0gTlVMTDsKKyBpbnQgICAgICAgICAgICAgb3V0bWFwX3NpemUgPSAwOworIGludAkJUmVhbFVpZDsKKyBpbnQJCXRtcF9hZ2k7Cistc3RhdGljIF9faW50NjRfdAltaW5pbXVtZnJlZSA9IDIwNDg7Cisrc3RhdGljIGludDY0X3QJCW1pbmltdW1mcmVlID0gMjA0ODsKKyAKKyAjZGVmaW5lIE1OVFRZUEVfWEZTICAgICAgICAgICAgICJ4ZnMiCisgCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kYXJ3aW4uaCBiL2luY2x1ZGUvZGFyd2luLmgKK2luZGV4IDdiYmQ1NzY0Li41MTAzMWM0MiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZGFyd2luLmgKKysrKyBiL2luY2x1ZGUvZGFyd2luLmgKK0BAIC0xMjUsMTUgKzEyNSwxNSBAQCB0eXBlZGVmIHNpZ25lZCBpbnQJCV9fczMyOworIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludAlfX3U2NDsKKyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50CV9fczY0OworIAorLSNkZWZpbmUgX19pbnQ4X3QJaW50OF90CistI2RlZmluZSBfX2ludDE2X3QJaW50MTZfdAorLSNkZWZpbmUgX19pbnQzMl90CWludDMyX3QKKy0jZGVmaW5lIF9faW50MzJfdAlpbnQzMl90CistI2RlZmluZSBfX2ludDY0X3QJaW50NjRfdAorLSNkZWZpbmUgX191aW50OF90CXVfaW50OF90CistI2RlZmluZSBfX3VpbnQxNl90CXVfaW50MTZfdAorLSNkZWZpbmUgX191aW50MzJfdAl1X2ludDMyX3QKKy0jZGVmaW5lIF9fdWludDY0X3QJdV9pbnQ2NF90CisrI2RlZmluZSBpbnQ4X3QJCWludDhfdAorKyNkZWZpbmUgaW50MTZfdAkJaW50MTZfdAorKyNkZWZpbmUgaW50MzJfdAkJaW50MzJfdAorKyNkZWZpbmUgaW50MzJfdAkJaW50MzJfdAorKyNkZWZpbmUgaW50NjRfdAkJaW50NjRfdAorKyNkZWZpbmUgdWludDhfdAkJdV9pbnQ4X3QKKysjZGVmaW5lIHVpbnQxNl90CXVfaW50MTZfdAorKyNkZWZpbmUgdWludDMyX3QJdV9pbnQzMl90CisrI2RlZmluZSB1aW50NjRfdAl1X2ludDY0X3QKKyAKKyB0eXBlZGVmIG9mZl90CQl4ZnNfb2ZmX3Q7CisgdHlwZWRlZiB1X2ludDY0X3QJeGZzX2lub190OworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZnJlZWJzZC5oIGIvaW5jbHVkZS9mcmVlYnNkLmgKK2luZGV4IGZiMzE4Yjg5Li5mNTJlZDBhOSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZnJlZWJzZC5oCisrKysgYi9pbmNsdWRlL2ZyZWVic2QuaAorQEAgLTUwLDkgKzUwLDkgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50CV9fdTY0OworIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQJX19zNjQ7CisgCisgdHlwZWRlZiBvZmZfdAkJeGZzX29mZl90OworLXR5cGVkZWYgX191aW50NjRfdAl4ZnNfaW5vX3Q7CistdHlwZWRlZiBfX3VpbnQzMl90CXhmc19kZXZfdDsKKy10eXBlZGVmIF9faW50NjRfdAl4ZnNfZGFkZHJfdDsKKyt0eXBlZGVmIHVpbnQ2NF90CXhmc19pbm9fdDsKKyt0eXBlZGVmIHVpbnQzMl90CXhmc19kZXZfdDsKKyt0eXBlZGVmIGludDY0X3QJCXhmc19kYWRkcl90OworIHR5cGVkZWYgX191MzIJCXhmc19ubGlua190OworIAorICNkZWZpbmUJT19MQVJHRUZJTEUJMAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ251a2ZyZWVic2QuaCBiL2luY2x1ZGUvZ251a2ZyZWVic2QuaAoraW5kZXggNjkxNmU2NWEuLjFkYjNmNGYwIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9nbnVrZnJlZWJzZC5oCisrKysgYi9pbmNsdWRlL2dudWtmcmVlYnNkLmgKK0BAIC00Niw5ICs0Niw5IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludAlfX3U2NDsKKyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50CV9fczY0OworIAorIHR5cGVkZWYgb2ZmX3QJCXhmc19vZmZfdDsKKy10eXBlZGVmIF9fdWludDY0X3QJeGZzX2lub190OworLXR5cGVkZWYgX191aW50MzJfdAl4ZnNfZGV2X3Q7CistdHlwZWRlZiBfX2ludDY0X3QJeGZzX2RhZGRyX3Q7CisrdHlwZWRlZiB1aW50NjRfdAl4ZnNfaW5vX3Q7CisrdHlwZWRlZiB1aW50MzJfdAl4ZnNfZGV2X3Q7CisrdHlwZWRlZiBpbnQ2NF90CQl4ZnNfZGFkZHJfdDsKKyB0eXBlZGVmIF9fdTMyCQl4ZnNfbmxpbmtfdDsKKyAKKyAjZGVmaW5lIEhBVkVfRklECTEKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpYnhjbWQuaCBiL2luY2x1ZGUvbGlieGNtZC5oCitpbmRleCBlOGQyZmZjOC4uNjgwNjM4MGMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xpYnhjbWQuaAorKysrIGIvaW5jbHVkZS9saWJ4Y21kLmgKK0BAIC00MiwxMCArNDIsMTAgQEAgZ2V0X3RvcG9sb2d5KAorIGV4dGVybiB2b2lkCisgY2FsY19kZWZhdWx0X2FnX2dlb21ldHJ5KAorIAlpbnQJCWJsb2NrbG9nLAorLQlfX3VpbnQ2NF90CWRibG9ja3MsCisrCXVpbnQ2NF90CWRibG9ja3MsCisgCWludAkJbXVsdGlkaXNrLAorLQlfX3VpbnQ2NF90CSphZ3NpemUsCistCV9fdWludDY0X3QJKmFnY291bnQpOworKwl1aW50NjRfdAkqYWdzaXplLAorKwl1aW50NjRfdAkqYWdjb3VudCk7CisgCisgZXh0ZXJuIGludAorIGNoZWNrX292ZXJ3cml0ZSgKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4LmggYi9pbmNsdWRlL2xpbnV4LmgKK2luZGV4IDk2MTFhMzdmLi42Y2UzNDRjNSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbGludXguaAorKysrIGIvaW5jbHVkZS9saW51eC5oCitAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgcGxhdGZvcm1fdXVpZF9jb3B5KHV1aWRfdCAqZHN0LCB1dWlkX3QgKnNyYykKKyBzdGF0aWMgX19pbmxpbmVfXyBpbnQKKyBwbGF0Zm9ybV9kaXNjYXJkX2Jsb2NrcyhpbnQgZmQsIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBsZW4pCisgeworLQlfX3VpbnQ2NF90IHJhbmdlWzJdID0geyBzdGFydCwgbGVuIH07CisrCXVpbnQ2NF90IHJhbmdlWzJdID0geyBzdGFydCwgbGVuIH07CisgCisgCWlmIChpb2N0bChmZCwgQkxLRElTQ0FSRCwgJnJhbmdlKSA8IDApCisgCQlyZXR1cm4gZXJybm87CitAQCAtMTQ0LDkgKzE0NCw5IEBAIHBsYXRmb3JtX2Rpc2NhcmRfYmxvY2tzKGludCBmZCwgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbikKKyAjZGVmaW5lIEVGU0JBRENSQwlFQkFETVNHCS8qIEJhZCBDUkMgZGV0ZWN0ZWQgKi8KKyAKKyB0eXBlZGVmIG9mZl90CQl4ZnNfb2ZmX3Q7CistdHlwZWRlZiBfX3VpbnQ2NF90CXhmc19pbm9fdDsKKy10eXBlZGVmIF9fdWludDMyX3QJeGZzX2Rldl90OworLXR5cGVkZWYgX19pbnQ2NF90CXhmc19kYWRkcl90OworK3R5cGVkZWYgdWludDY0X3QJeGZzX2lub190OworK3R5cGVkZWYgdWludDMyX3QJeGZzX2Rldl90OworK3R5cGVkZWYgaW50NjRfdAkJeGZzX2RhZGRyX3Q7CisgdHlwZWRlZiBfX3UzMgkJeGZzX25saW5rX3Q7CisgCisgLyoqCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZnNfYXJjaC5oIGIvaW5jbHVkZS94ZnNfYXJjaC5oCitpbmRleCAxMmNkNDNlNi4uMTg2Y2FkYmEgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3hmc19hcmNoLmgKKysrKyBiL2luY2x1ZGUveGZzX2FyY2guaAorQEAgLTI0NCwzOSArMjQ0LDM5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiZTY0X2FkZF9jcHUoX19iZTY0ICphLCBfX3M2NCBiKQorIAkqYSA9IGNwdV90b19iZTY0KGJlNjRfdG9fY3B1KCphKSArIGIpOworIH0KKyAKKy1zdGF0aWMgaW5saW5lIF9fdWludDE2X3QgZ2V0X3VuYWxpZ25lZF9iZTE2KHZvaWQgKnApCisrc3RhdGljIGlubGluZSB1aW50MTZfdCBnZXRfdW5hbGlnbmVkX2JlMTYodm9pZCAqcCkKKyB7CistCV9fdWludDhfdCAqX19wID0gcDsKKysJdWludDhfdCAqX19wID0gcDsKKyAJcmV0dXJuIF9fcFswXSA8PCA4IHwgX19wWzFdOworIH0KKyAKKy1zdGF0aWMgaW5saW5lIF9fdWludDMyX3QgZ2V0X3VuYWxpZ25lZF9iZTMyKHZvaWQgKnApCisrc3RhdGljIGlubGluZSB1aW50MzJfdCBnZXRfdW5hbGlnbmVkX2JlMzIodm9pZCAqcCkKKyB7CistCV9fdWludDhfdCAqX19wID0gcDsKKysJdWludDhfdCAqX19wID0gcDsKKyAgICAgICAgIHJldHVybiBfX3BbMF0gPDwgMjQgfCBfX3BbMV0gPDwgMTYgfCBfX3BbMl0gPDwgOCB8IF9fcFszXTsKKyB9CisgCistc3RhdGljIGlubGluZSBfX3VpbnQ2NF90IGdldF91bmFsaWduZWRfYmU2NCh2b2lkICpwKQorK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgZ2V0X3VuYWxpZ25lZF9iZTY0KHZvaWQgKnApCisgeworLQlyZXR1cm4gKF9fdWludDY0X3QpZ2V0X3VuYWxpZ25lZF9iZTMyKHApIDw8IDMyIHwKKysJcmV0dXJuICh1aW50NjRfdClnZXRfdW5hbGlnbmVkX2JlMzIocCkgPDwgMzIgfAorIAkJCSAgIGdldF91bmFsaWduZWRfYmUzMihwICsgNCk7CisgfQorIAorLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlMTYoX191aW50MTZfdCB2YWwsIHZvaWQgKnApCisrc3RhdGljIGlubGluZSB2b2lkIHB1dF91bmFsaWduZWRfYmUxNih1aW50MTZfdCB2YWwsIHZvaWQgKnApCisgeworLQlfX3VpbnQ4X3QgKl9fcCA9IHA7CisrCXVpbnQ4X3QgKl9fcCA9IHA7CisgCSpfX3ArKyA9IHZhbCA+PiA4OworIAkqX19wKysgPSB2YWw7CisgfQorIAorLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlMzIoX191aW50MzJfdCB2YWwsIHZvaWQgKnApCisrc3RhdGljIGlubGluZSB2b2lkIHB1dF91bmFsaWduZWRfYmUzMih1aW50MzJfdCB2YWwsIHZvaWQgKnApCisgeworLQlfX3VpbnQ4X3QgKl9fcCA9IHA7CisrCXVpbnQ4X3QgKl9fcCA9IHA7CisgCXB1dF91bmFsaWduZWRfYmUxNih2YWwgPj4gMTYsIF9fcCk7CisgCXB1dF91bmFsaWduZWRfYmUxNih2YWwsIF9fcCArIDIpOworIH0KKyAKKy1zdGF0aWMgaW5saW5lIHZvaWQgcHV0X3VuYWxpZ25lZF9iZTY0KF9fdWludDY0X3QgdmFsLCB2b2lkICpwKQorK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2JlNjQodWludDY0X3QgdmFsLCB2b2lkICpwKQorIHsKKyAJcHV0X3VuYWxpZ25lZF9iZTMyKHZhbCA+PiAzMiwgcCk7CisgCXB1dF91bmFsaWduZWRfYmUzMih2YWwsIHAgKyA0KTsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19pbm9kZS5oIGIvaW5jbHVkZS94ZnNfaW5vZGUuaAoraW5kZXggZmI2YjU0MjkuLjg3NjYwMjRlIDEwMDY0NAorLS0tIGEvaW5jbHVkZS94ZnNfaW5vZGUuaAorKysrIGIvaW5jbHVkZS94ZnNfaW5vZGUuaAorQEAgLTEyMyw4ICsxMjMsOCBAQCB4ZnNfZ2V0X3Byb2ppZChzdHJ1Y3QgeGZzX2ljZGlub2RlICppZCkKKyBzdGF0aWMgaW5saW5lIHZvaWQKKyB4ZnNfc2V0X3Byb2ppZChzdHJ1Y3QgeGZzX2ljZGlub2RlICppZCwgcHJpZF90IHByb2ppZCkKKyB7CistCWlkLT5kaV9wcm9qaWRfaGkgPSAoX191aW50MTZfdCkgKHByb2ppZCA+PiAxNik7CistCWlkLT5kaV9wcm9qaWRfbG8gPSAoX191aW50MTZfdCkgKHByb2ppZCAmIDB4ZmZmZik7CisrCWlkLT5kaV9wcm9qaWRfaGkgPSAodWludDE2X3QpIChwcm9qaWQgPj4gMTYpOworKwlpZC0+ZGlfcHJvamlkX2xvID0gKHVpbnQxNl90KSAocHJvamlkICYgMHhmZmZmKTsKKyB9CisgCisgc3RhdGljIGlubGluZSBib29sIHhmc19pc19yZWZsaW5rX2lub2RlKHN0cnVjdCB4ZnNfaW5vZGUgKmlwKQorZGlmZiAtLWdpdCBhL2luY2x1ZGUveGZzX2xvZ19yZWNvdmVyLmggYi9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCitpbmRleCA3NTgyNjc2Yi4uMGQwOTg2MjggMTAwNjQ0CistLS0gYS9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCisrKysgYi9pbmNsdWRlL3hmc19sb2dfcmVjb3Zlci5oCitAQCAtMjYsNyArMjYsNyBAQAorICNkZWZpbmUgWExPR19SSEFTSF9TSVpFCTE2CisgI2RlZmluZSBYTE9HX1JIQVNIX1NISUZUIDIKKyAjZGVmaW5lIFhMT0dfUkhBU0godGlkKQlcCistCSgoKChfX3VpbnQzMl90KXRpZCk+PlhMT0dfUkhBU0hfU0hJRlQpICYgKFhMT0dfUkhBU0hfU0laRS0xKSkKKysJKCgoKHVpbnQzMl90KXRpZCk+PlhMT0dfUkhBU0hfU0hJRlQpICYgKFhMT0dfUkhBU0hfU0laRS0xKSkKKyAKKyAjZGVmaW5lIFhMT0dfTUFYX1JFR0lPTlNfSU5fSVRFTSAgIChYRlNfTUFYX0JMT0NLU0laRSAvIFhGU19CTEZfQ0hVTksgLyAyICsgMSkKKyAKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19tZXRhZHVtcC5oIGIvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAoraW5kZXggN2YzMDM5ZWIuLjEzYWZiOGRkIDEwMDY0NAorLS0tIGEvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAorKysrIGIvaW5jbHVkZS94ZnNfbWV0YWR1bXAuaAorQEAgLTI0LDggKzI0LDggQEAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfbWV0YWJsb2NrIHsKKyAJX19iZTMyCQltYl9tYWdpYzsKKyAJX19iZTE2CQltYl9jb3VudDsKKy0JX191aW50OF90CW1iX2Jsb2NrbG9nOworLQlfX3VpbnQ4X3QJbWJfaW5mbzsKKysJdWludDhfdAkJbWJfYmxvY2tsb2c7CisrCXVpbnQ4X3QJCW1iX2luZm87CisgCS8qIGZvbGxvd2VkIGJ5IGFuIGFycmF5IG9mIHhmc19kYWRkcl90ICovCisgfSB4ZnNfbWV0YWJsb2NrX3Q7CisgCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZnNfbW91bnQuaCBiL2luY2x1ZGUveGZzX21vdW50LmgKK2luZGV4IDVmZjI0ZWJmLi41YjMyM2JiMSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUveGZzX21vdW50LmgKKysrKyBiL2luY2x1ZGUveGZzX21vdW50LmgKK0BAIC00OCwxMiArNDgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX21vdW50IHsKKyAjZGVmaW5lIG1fZGV2CQltX2RkZXZfdGFyZ3AKKyAjZGVmaW5lIG1fbG9nZGV2CW1fbG9nZGV2X3RhcmdwCisgI2RlZmluZSBtX3J0ZGV2CQltX3J0ZGV2X3RhcmdwCistCV9fdWludDhfdAkJbV9kaXJjb29rX2Vsb2c7CS8qIGxvZyBkLWNvb2tpZSBlbnRyeSBiaXRzICovCistCV9fdWludDhfdAkJbV9ibGtiaXRfbG9nOwkvKiBibG9ja2xvZyArIE5CQlkgKi8KKy0JX191aW50OF90CQltX2Jsa2JiX2xvZzsJLyogYmxvY2tsb2cgLSBCQlNISUZUICovCistCV9fdWludDhfdAkJbV9zZWN0YmJfbG9nOwkvKiBzZWN0b3Jsb2cgLSBCQlNISUZUICovCistCV9fdWludDhfdAkJbV9hZ25vX2xvZzsJLyogbG9nICNhZydzICovCistCV9fdWludDhfdAkJbV9hZ2lub19sb2c7CS8qICNiaXRzIGZvciBhZ2lubyBpbiBpbnVtICovCisrCXVpbnQ4X3QJCQltX2RpcmNvb2tfZWxvZzsJLyogbG9nIGQtY29va2llIGVudHJ5IGJpdHMgKi8KKysJdWludDhfdAkJCW1fYmxrYml0X2xvZzsJLyogYmxvY2tsb2cgKyBOQkJZICovCisrCXVpbnQ4X3QJCQltX2Jsa2JiX2xvZzsJLyogYmxvY2tsb2cgLSBCQlNISUZUICovCisrCXVpbnQ4X3QJCQltX3NlY3RiYl9sb2c7CS8qIHNlY3RvcmxvZyAtIEJCU0hJRlQgKi8KKysJdWludDhfdAkJCW1fYWdub19sb2c7CS8qIGxvZyAjYWcncyAqLworKwl1aW50OF90CQkJbV9hZ2lub19sb2c7CS8qICNiaXRzIGZvciBhZ2lubyBpbiBpbnVtICovCisgCXVpbnQJCQltX2lub2RlX2NsdXN0ZXJfc2l6ZTsvKiBtaW4gaW5vZGUgYnVmIHNpemUgKi8KKyAJdWludAkJCW1fYmxvY2ttYXNrOwkvKiBzYl9ibG9ja3NpemUtMSAqLworIAl1aW50CQkJbV9ibG9ja3dzaXplOwkvKiBzYl9ibG9ja3NpemUgaW4gd29yZHMgKi8KK0BAIC04OCw3ICs4OCw3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19tb3VudCB7CisgCWludAkJCW1fbGl0aW5vOwkvKiBzaXplIG9mIGlub2RlIHVuaW9uIGFyZWEgKi8KKyAJaW50CQkJbV9pbm9hbGlnbl9tYXNrOy8qIG1hc2sgc2JfaW5vYWxpZ25tdCBpZiB1c2VkICovCisgCXN0cnVjdCB4ZnNfdHJhbnNfcmVzdgltX3Jlc3Y7CQkvKiBwcmVjb21wdXRlZCByZXMgdmFsdWVzICovCistCV9fdWludDY0X3QJCW1fbWF4aWNvdW50OwkvKiBtYXhpbXVtIGlub2RlIGNvdW50ICovCisrCXVpbnQ2NF90CQltX21heGljb3VudDsJLyogbWF4aW11bSBpbm9kZSBjb3VudCAqLworIAlpbnQJCQltX2RhbGlnbjsJLyogc3RyaXBlIHVuaXQgKi8KKyAJaW50CQkJbV9zd2lkdGg7CS8qIHN0cmlwZSB3aWR0aCAqLworIAlpbnQJCQltX3Npbm9hbGlnbjsJLyogc3RyaXBlIHVuaXQgaW5vZGUgYWxpZ25tbnQgKi8KK0BAIC0xNDQsMTIgKzE0NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfcGVyYWcgeworIAljaGFyCQlwYWdpX2luaXQ7CS8qIHRoaXMgYWdpJ3MgZW50cnkgaXMgaW5pdGlhbGl6ZWQgKi8KKyAJY2hhcgkJcGFnZl9tZXRhZGF0YTsJLyogdGhlIGFnZiBpcyBwcmVmZXJyZWQgdG8gYmUgbWV0YWRhdGEgKi8KKyAJY2hhcgkJcGFnaV9pbm9kZW9rOwkvKiBUaGUgYWdpIGlzIG9rIGZvciBpbm9kZXMgKi8KKy0JX191aW50OF90CXBhZ2ZfbGV2ZWxzW1hGU19CVE5VTV9BR0ZdOworKwl1aW50OF90CQlwYWdmX2xldmVsc1tYRlNfQlROVU1fQUdGXTsKKyAJCQkJCS8qICMgb2YgbGV2ZWxzIGluIGJubyAmIGNudCBidHJlZSAqLworLQlfX3VpbnQzMl90CXBhZ2ZfZmxjb3VudDsJLyogY291bnQgb2YgYmxvY2tzIGluIGZyZWVsaXN0ICovCisrCXVpbnQzMl90CXBhZ2ZfZmxjb3VudDsJLyogY291bnQgb2YgYmxvY2tzIGluIGZyZWVsaXN0ICovCisgCXhmc19leHRsZW5fdAlwYWdmX2ZyZWVibGtzOwkvKiB0b3RhbCBmcmVlIGJsb2NrcyAqLworIAl4ZnNfZXh0bGVuX3QJcGFnZl9sb25nZXN0OwkvKiBsb25nZXN0IGZyZWUgc3BhY2UgKi8KKy0JX191aW50MzJfdAlwYWdmX2J0cmVlYmxrczsJLyogIyBvZiBibG9ja3MgaGVsZCBpbiBBR0YgYnRyZWVzICovCisrCXVpbnQzMl90CXBhZ2ZfYnRyZWVibGtzOwkvKiAjIG9mIGJsb2NrcyBoZWxkIGluIEFHRiBidHJlZXMgKi8KKyAJeGZzX2FnaW5vX3QJcGFnaV9mcmVlY291bnQ7CS8qIG51bWJlciBvZiBmcmVlIGlub2RlcyAqLworIAl4ZnNfYWdpbm9fdAlwYWdpX2NvdW50OwkvKiBudW1iZXIgb2YgYWxsb2NhdGVkIGlub2RlcyAqLworIAorQEAgLTE2OSw3ICsxNjksNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfcGVyYWcgeworIAlzdHJ1Y3QgeGZzX2FnX3Jlc3YJcGFnX2FnZmxfcmVzdjsKKyAKKyAJLyogcmVmZXJlbmNlIGNvdW50ICovCistCV9fdWludDhfdAlwYWdmX3JlZmNvdW50X2xldmVsOworKwl1aW50OF90CQlwYWdmX3JlZmNvdW50X2xldmVsOworIH0geGZzX3BlcmFnX3Q7CisgCisgc3RhdGljIGlubGluZSBzdHJ1Y3QgeGZzX2FnX3Jlc3YgKgorZGlmZiAtLWdpdCBhL2xpYmhhbmRsZS9oYW5kbGUuYyBiL2xpYmhhbmRsZS9oYW5kbGUuYworaW5kZXggMjM2ZWQyMmEuLjAwMTI3YjNjIDEwMDY0NAorLS0tIGEvbGliaGFuZGxlL2hhbmRsZS5jCisrKysgYi9saWJoYW5kbGUvaGFuZGxlLmMKK0BAIC0yMzIsNyArMjMyLDcgQEAgb2JqX3RvX2hhbmRsZSgKKyB7CisgCWNoYXIJCWhidWYgW01BWEhBTlNJWl07CisgCWludAkJcmV0OworLQlfX3VpbnQzMl90CWhhbmRsZW47CisrCXVpbnQzMl90CWhhbmRsZW47CisgCXhmc19mc29wX2hhbmRsZXJlcV90IGhyZXE7CisgCisgCWlmIChvcGNvZGUgPT0gWEZTX0lPQ19GRF9UT19IQU5ETEUpIHsKK2RpZmYgLS1naXQgYS9saWJoYW5kbGUvamRtLmMgYi9saWJoYW5kbGUvamRtLmMKK2luZGV4IGU1MmY1ZDgzLi44MjEwNjFiNCAxMDA2NDQKKy0tLSBhL2xpYmhhbmRsZS9qZG0uYworKysrIGIvbGliaGFuZGxlL2pkbS5jCitAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBmaWxlaGFuZGxlIHsKKyAJZnNoYW5kbGVfdCBmaF9mc2hhbmRsZTsJCS8qIGhhbmRsZSBvZiBmcyBjb250YWluaW5nIHRoaXMgaW5vZGUgKi8KKyAJaW50MTZfdCBmaF9zel9mb2xsb3dpbmc7CS8qIGJ5dGVzIGluIGhhbmRsZSBhZnRlciB0aGlzIG1lbWJlciAqLworIAljaGFyIGZoX3BhZFtGSUxFSEFORExFX1NaX1BBRF07CS8qIHBhZGRpbmcsIG11c3QgYmUgemVyb2VkICovCistCV9fdWludDMyX3QgZmhfZ2VuOwkJLyogZ2VuZXJhdGlvbiBjb3VudCAqLworKwl1aW50MzJfdCBmaF9nZW47CQkvKiBnZW5lcmF0aW9uIGNvdW50ICovCisgCXhmc19pbm9fdCBmaF9pbm87CQkvKiA2NCBiaXQgaW5vICovCisgfSBmaWxlaGFuZGxlX3Q7CisgCitkaWZmIC0tZ2l0IGEvbGlieGNtZC90b3BvbG9neS5jIGIvbGlieGNtZC90b3BvbG9neS5jCitpbmRleCA4YjAyNzZhNy4uZjY2ZGQxYmMgMTAwNjQ0CistLS0gYS9saWJ4Y21kL3RvcG9sb2d5LmMKKysrKyBiL2xpYnhjbWQvdG9wb2xvZ3kuYworQEAgLTIzLDE5ICsyMywxOSBAQAorICNlbmRpZiAvKiBFTkFCTEVfQkxLSUQgKi8KKyAjaW5jbHVkZSAieGZzX211bHRpZGlzay5oIgorIAorLSNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoNDAgLSAoYmxvZykpKQorLSNkZWZpbmUgR0lHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMzAgLSAoYmxvZykpKQorLSNkZWZpbmUgTUVHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQorKyNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKHVpbnQ2NF90KShjb3VudCkgPDwgKDQwIC0gKGJsb2cpKSkKKysjZGVmaW5lIEdJR0FCWVRFUyhjb3VudCwgYmxvZykJKCh1aW50NjRfdCkoY291bnQpIDw8ICgzMCAtIChibG9nKSkpCisrI2RlZmluZSBNRUdBQllURVMoY291bnQsIGJsb2cpCSgodWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQorIAorIHZvaWQKKyBjYWxjX2RlZmF1bHRfYWdfZ2VvbWV0cnkoCisgCWludAkJYmxvY2tsb2csCistCV9fdWludDY0X3QJZGJsb2NrcywKKysJdWludDY0X3QJZGJsb2NrcywKKyAJaW50CQltdWx0aWRpc2ssCistCV9fdWludDY0X3QJKmFnc2l6ZSwKKy0JX191aW50NjRfdAkqYWdjb3VudCkKKysJdWludDY0X3QJKmFnc2l6ZSwKKysJdWludDY0X3QJKmFnY291bnQpCisgeworLQlfX3VpbnQ2NF90CWJsb2NrcyA9IDA7CisrCXVpbnQ2NF90CWJsb2NrcyA9IDA7CisgCWludAkJc2hpZnQgPSAwOworIAorIAkvKgorZGlmZiAtLWdpdCBhL2xpYnhmcy9kYXJ3aW4uYyBiL2xpYnhmcy9kYXJ3aW4uYworaW5kZXggNzQ1MDdlODEuLjE2ZDJjMzVjIDEwMDY0NAorLS0tIGEvbGlieGZzL2Rhcndpbi5jCisrKysgYi9saWJ4ZnMvZGFyd2luLmMKK0BAIC02OCw3ICs2OCw3IEBAIHBsYXRmb3JtX2ZsdXNoX2RldmljZShpbnQgZmQsIGRldl90IGRldmljZSkKKyB2b2lkCisgcGxhdGZvcm1fZmluZHNpemVzKGNoYXIgKnBhdGgsIGludCBmZCwgbG9uZyBsb25nICpzeiwgaW50ICpic3opCisgeworLQlfX3VpbnQ2NF90CXNpemU7CisrCXVpbnQ2NF90CXNpemU7CisgCXN0cnVjdCBzdGF0CXN0OworIAorIAlpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7CitkaWZmIC0tZ2l0IGEvbGlieGZzL2ZyZWVic2QuYyBiL2xpYnhmcy9mcmVlYnNkLmMKK2luZGV4IDQ2NjdkMWY1Li5kN2JjYTE0MiAxMDA2NDQKKy0tLSBhL2xpYnhmcy9mcmVlYnNkLmMKKysrKyBiL2xpYnhmcy9mcmVlYnNkLmMKK0BAIC0xMDksNyArMTA5LDcgQEAgdm9pZAorIHBsYXRmb3JtX2ZpbmRzaXplcyhjaGFyICpwYXRoLCBpbnQgZmQsIGxvbmcgbG9uZyAqc3osIGludCAqYnN6KQorIHsKKyAJc3RydWN0IHN0YXQJc3Q7CistCV9faW50NjRfdAlzaXplOworKwlpbnQ2NF90CQlzaXplOworIAl1X2ludAkJc3NpemU7CisgCisgCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKK2RpZmYgLS1naXQgYS9saWJ4ZnMvaW5pdC5jIGIvbGlieGZzL2luaXQuYworaW5kZXggZmMxNGM1ZTQuLjBmNDFhODUzIDEwMDY0NAorLS0tIGEvbGlieGZzL2luaXQuYworKysrIGIvbGlieGZzL2luaXQuYworQEAgLTU0Niw3ICs1NDYsNyBAQCBsaWJ4ZnNfaW5pdGlhbGl6ZV9wZXJhZygKKyAJCSAqIHRoZSBtYXggaW5vZGUgcGVyY2VudGFnZS4KKyAJCSAqLworIAkJaWYgKG1wLT5tX21heGljb3VudCkgeworLQkJCV9fdWludDY0X3QJaWNvdW50OworKwkJCXVpbnQ2NF90CWljb3VudDsKKyAKKyAJCQlpY291bnQgPSBzYnAtPnNiX2RibG9ja3MgKiBzYnAtPnNiX2ltYXhfcGN0OworIAkJCWRvX2RpdihpY291bnQsIDEwMCk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL2lyaXguYyBiL2xpYnhmcy9pcml4LmMKK2luZGV4IDMyZmNiM2U1Li4wZjE0YWVjNyAxMDA2NDQKKy0tLSBhL2xpYnhmcy9pcml4LmMKKysrKyBiL2xpYnhmcy9pcml4LmMKK0BAIC0yMiw3ICsyMiw3IEBACisgCisgaW50IHBsYXRmb3JtX2hhc191dWlkID0gMDsKKyBleHRlcm4gY2hhciAqcHJvZ25hbWU7CistZXh0ZXJuIF9faW50NjRfdCBmaW5kc2l6ZShjaGFyICopOworK2V4dGVybiBpbnQ2NF90IGZpbmRzaXplKGNoYXIgKik7CisgCisgaW50CisgcGxhdGZvcm1fY2hlY2tfaXNtb3VudGVkKGNoYXIgKm5hbWUsIGNoYXIgKmJsb2NrLCBzdHJ1Y3Qgc3RhdCAqcywgaW50IHZlcmJvc2UpCitkaWZmIC0tZ2l0IGEvbGlieGZzL2xpYnhmc19wcml2LmggYi9saWJ4ZnMvbGlieGZzX3ByaXYuaAoraW5kZXggYjRmNzY2ZGIuLmQ1MjViNjY3IDEwMDY0NAorLS0tIGEvbGlieGZzL2xpYnhmc19wcml2LmgKKysrKyBiL2xpYnhmcy9saWJ4ZnNfcHJpdi5oCitAQCAtMjk2LDggKzI5Niw4IEBAIHJvdW5kdXBfcG93X29mX3R3byh1aW50IHYpCisgCXJldHVybiAwOworIH0KKyAKKy1zdGF0aWMgaW5saW5lIF9fdWludDY0X3QKKy1yb3VuZHVwXzY0KF9fdWludDY0X3QgeCwgX191aW50MzJfdCB5KQorK3N0YXRpYyBpbmxpbmUgdWludDY0X3QKKytyb3VuZHVwXzY0KHVpbnQ2NF90IHgsIHVpbnQzMl90IHkpCisgeworIAl4ICs9IHkgLSAxOworIAlkb19kaXYoeCwgeSk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL2xpbnV4LmMgYi9saWJ4ZnMvbGludXguYworaW5kZXggNjlmMDRhZDkuLjBiYWNlM2ViIDEwMDY0NAorLS0tIGEvbGlieGZzL2xpbnV4LmMKKysrKyBiL2xpYnhmcy9saW51eC5jCitAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQKKyBwbGF0Zm9ybV9maW5kc2l6ZXMoY2hhciAqcGF0aCwgaW50IGZkLCBsb25nIGxvbmcgKnN6LCBpbnQgKmJzeikKKyB7CisgCXN0cnVjdCBzdGF0CXN0OworLQlfX3VpbnQ2NF90CXNpemU7CisrCXVpbnQ2NF90CXNpemU7CisgCWludAkJZXJyb3I7CisgCisgCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKK2RpZmYgLS1naXQgYS9saWJ4ZnMvbG9naXRlbS5jIGIvbGlieGZzL2xvZ2l0ZW0uYworaW5kZXggN2U5M2Y2MDkuLjQ2NmI0NDIxIDEwMDY0NAorLS0tIGEvbGlieGZzL2xvZ2l0ZW0uYworKysrIGIvbGlieGZzL2xvZ2l0ZW0uYworQEAgLTEyMSw3ICsxMjEsNyBAQCB4ZnNfYnVmX2l0ZW1faW5pdCgKKyAJYmlwLT5ibGlfaXRlbS5saV9tb3VudHAgPSBtcDsKKyAJYmlwLT5ibGlfYnVmID0gYnA7CisgCWJpcC0+YmxpX2Zvcm1hdC5ibGZfdHlwZSA9IFhGU19MSV9CVUY7CistCWJpcC0+YmxpX2Zvcm1hdC5ibGZfYmxrbm8gPSAoX19pbnQ2NF90KVhGU19CVUZfQUREUihicCk7CisrCWJpcC0+YmxpX2Zvcm1hdC5ibGZfYmxrbm8gPSAoaW50NjRfdClYRlNfQlVGX0FERFIoYnApOworIAliaXAtPmJsaV9mb3JtYXQuYmxmX2xlbiA9ICh1bnNpZ25lZCBzaG9ydClCVE9CQihYRlNfQlVGX0NPVU5UKGJwKSk7CisgCVhGU19CVUZfU0VUX0ZTUFJJVkFURShicCwgYmlwKTsKKyB9CitkaWZmIC0tZ2l0IGEvbGlieGZzL3JhZGl4LXRyZWUuYyBiL2xpYnhmcy9yYWRpeC10cmVlLmMKK2luZGV4IGVlZjljMzZkLi4zZjAyNTdmZSAxMDA2NDQKKy0tLSBhL2xpYnhmcy9yYWRpeC10cmVlLmMKKysrKyBiL2xpYnhmcy9yYWRpeC10cmVlLmMKK0BAIC02NiwyMSArNjYsMjEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaGVpZ2h0X3RvX21heGluZGV4W1JBRElYX1RSRUVfTUFYX1BBVEhdOworIHN0YXRpYyBpbmxpbmUgdm9pZCB0YWdfc2V0KHN0cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGUsIHVuc2lnbmVkIGludCB0YWcsCisgCQlpbnQgb2Zmc2V0KQorIHsKKy0JKigoX191aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSArIChvZmZzZXQgPj4gNSkpIHw9ICgxIDw8IChvZmZzZXQgJiAzMSkpOworKwkqKCh1aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSArIChvZmZzZXQgPj4gNSkpIHw9ICgxIDw8IChvZmZzZXQgJiAzMSkpOworIH0KKyAKKyBzdGF0aWMgaW5saW5lIHZvaWQgdGFnX2NsZWFyKHN0cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGUsIHVuc2lnbmVkIGludCB0YWcsCisgCQlpbnQgb2Zmc2V0KQorIHsKKy0JX191aW50MzJfdCAJKnAgPSAoX191aW50MzJfdCopbm9kZS0+dGFnc1t0YWddICsgKG9mZnNldCA+PiA1KTsKKy0JX191aW50MzJfdCAJbSA9IDEgPDwgKG9mZnNldCAmIDMxKTsKKysJdWludDMyX3QgCSpwID0gKHVpbnQzMl90Kilub2RlLT50YWdzW3RhZ10gKyAob2Zmc2V0ID4+IDUpOworKwl1aW50MzJfdCAJbSA9IDEgPDwgKG9mZnNldCAmIDMxKTsKKyAJKnAgJj0gfm07CisgfQorIAorIHN0YXRpYyBpbmxpbmUgaW50IHRhZ19nZXQoc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqbm9kZSwgdW5zaWduZWQgaW50IHRhZywKKyAJCWludCBvZmZzZXQpCisgeworLQlyZXR1cm4gMSAmICgoKGNvbnN0IF9fdWludDMyX3QgKilub2RlLT50YWdzW3RhZ10pW29mZnNldCA+PiA1XSA+PiAob2Zmc2V0ICYgMzEpKTsKKysJcmV0dXJuIDEgJiAoKChjb25zdCB1aW50MzJfdCAqKW5vZGUtPnRhZ3NbdGFnXSlbb2Zmc2V0ID4+IDVdID4+IChvZmZzZXQgJiAzMSkpOworIH0KKyAKKyAvKgorZGlmZiAtLWdpdCBhL2xpYnhmcy9yZHdyLmMgYi9saWJ4ZnMvcmR3ci5jCitpbmRleCAyMWM0MmYxNC4uNDc0ZTVlYmMgMTAwNjQ0CistLS0gYS9saWJ4ZnMvcmR3ci5jCisrKysgYi9saWJ4ZnMvcmR3ci5jCitAQCAtMTE4LDkgKzExOCw5IEBAIHN0YXRpYyB2b2lkIHVubW91bnRfcmVjb3JkKHZvaWQgKnApCisgCXhsb2dfb3BfaGVhZGVyX3QJKm9wID0gKHhsb2dfb3BfaGVhZGVyX3QgKilwOworIAkvKiB0aGUgZGF0YSBzZWN0aW9uIG11c3QgYmUgMzIgYml0IHNpemUgYWxpZ25lZCAqLworIAlzdHJ1Y3QgeworLQkgICAgX191aW50MTZfdCBtYWdpYzsKKy0JICAgIF9fdWludDE2X3QgcGFkMTsKKy0JICAgIF9fdWludDMyX3QgcGFkMjsgLyogbWF5IGFzIHdlbGwgbWFrZSBpdCA2NCBiaXRzICovCisrCSAgICB1aW50MTZfdCBtYWdpYzsKKysJICAgIHVpbnQxNl90IHBhZDE7CisrCSAgICB1aW50MzJfdCBwYWQyOyAvKiBtYXkgYXMgd2VsbCBtYWtlIGl0IDY0IGJpdHMgKi8KKyAJfSBtYWdpYyA9IHsgWExPR19VTk1PVU5UX1RZUEUsIDAsIDAgfTsKKyAKKyAJbWVtc2V0KHAsIDAsIEJCU0laRSk7CitkaWZmIC0tZ2l0IGEvbGlieGZzL3V0aWwuYyBiL2xpYnhmcy91dGlsLmMKK2luZGV4IGRjZmNhMzk3Li43OTM4ZTMxNyAxMDA2NDQKKy0tLSBhL2xpYnhmcy91dGlsLmMKKysrKyBiL2xpYnhmcy91dGlsLmMKK0BAIC0xNzAsOCArMTcwLDggQEAgbGlieGZzX3RyYW5zX2ljaGd0aW1lKAorIAlpZiAoZmxhZ3MgJiBYRlNfSUNIR1RJTUVfQ0hHKQorIAkJVkZTX0koaXApLT5pX2N0aW1lID0gdHY7CisgCWlmIChmbGFncyAmIFhGU19JQ0hHVElNRV9DUkVBVEUpIHsKKy0JCWlwLT5pX2QuZGlfY3J0aW1lLnRfc2VjID0gKF9faW50MzJfdCl0di50dl9zZWM7CistCQlpcC0+aV9kLmRpX2NydGltZS50X25zZWMgPSAoX19pbnQzMl90KXR2LnR2X25zZWM7CisrCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChpbnQzMl90KXR2LnR2X3NlYzsKKysJCWlwLT5pX2QuZGlfY3J0aW1lLnRfbnNlYyA9IChpbnQzMl90KXR2LnR2X25zZWM7CisgCX0KKyB9CisgCitAQCAtMjYxLDggKzI2MSw4IEBAIGxpYnhmc19pYWxsb2MoCisgCQlBU1NFUlQodXVpZF9lcXVhbCgmaXAtPmlfZC5kaV91dWlkLCAmbXAtPm1fc2Iuc2JfbWV0YV91dWlkKSk7CisgCQlWRlNfSShpcCktPmlfdmVyc2lvbiA9IDE7CisgCQlpcC0+aV9kLmRpX2ZsYWdzMiA9IDA7CistCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChfX2ludDMyX3QpVkZTX0koaXApLT5pX210aW1lLnR2X3NlYzsKKy0JCWlwLT5pX2QuZGlfY3J0aW1lLnRfbnNlYyA9IChfX2ludDMyX3QpVkZTX0koaXApLT5pX210aW1lLnR2X25zZWM7CisrCQlpcC0+aV9kLmRpX2NydGltZS50X3NlYyA9IChpbnQzMl90KVZGU19JKGlwKS0+aV9tdGltZS50dl9zZWM7CisrCQlpcC0+aV9kLmRpX2NydGltZS50X25zZWMgPSAoaW50MzJfdClWRlNfSShpcCktPmlfbXRpbWUudHZfbnNlYzsKKyAJfQorIAorIAlmbGFncyA9IFhGU19JTE9HX0NPUkU7CitkaWZmIC0tZ2l0IGEvbG9ncHJpbnQvbG9nX21pc2MuYyBiL2xvZ3ByaW50L2xvZ19taXNjLmMKK2luZGV4IDBkZmNmZDE5Li4yZmQwMWNlYiAxMDA2NDQKKy0tLSBhL2xvZ3ByaW50L2xvZ19taXNjLmMKKysrKyBiL2xvZ3ByaW50L2xvZ19taXNjLmMKK0BAIC0xNjYsMTIgKzE2NiwxMiBAQCB4bG9nX3ByaW50X3RyYW5zX2hlYWRlcihjaGFyICoqcHRyLCBpbnQgbGVuKQorIHsKKyAgICAgeGZzX3RyYW5zX2hlYWRlcl90ICAqaDsKKyAgICAgY2hhcgkJKmNwdHIgPSAqcHRyOworLSAgICBfX3VpbnQzMl90ICAgICAgICAgIG1hZ2ljOworKyAgICB1aW50MzJfdCAgICAgICAgICBtYWdpYzsKKyAgICAgY2hhciAgICAgICAgICAgICAgICAqbWFnaWNfYyA9IChjaGFyICopJm1hZ2ljOworIAorICAgICAqcHRyICs9IGxlbjsKKyAKKy0gICAgbWFnaWM9KihfX3VpbnQzMl90KiljcHRyOyAvKiBYWFggYmUzMl90b19jcHUgc29vbiAqLworKyAgICBtYWdpYyA9ICoodWludDMyX3QgKiljcHRyOyAvKiBYWFggYmUzMl90b19jcHUgc29vbiAqLworIAorICAgICBpZiAobGVuID49IDQpIHsKKyAjaWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgorQEAgLTIwMSw3ICsyMDEsNyBAQCB4bG9nX3ByaW50X3RyYW5zX2J1ZmZlcihjaGFyICoqcHRyLCBpbnQgbGVuLCBpbnQgKmksIGludCBudW1fb3BzKQorICAgICBpbnQJCQkgbnVtLCBza2lwOworICAgICBpbnQJCQkgc3VwZXJfYmxvY2sgPSAwOworICAgICBpbnQJCQkgYnVja2V0LCBjb2wsIGJ1Y2tldHM7CistICAgIF9faW50NjRfdAkJIGJsa25vOworKyAgICBpbnQ2NF90CQkJIGJsa25vOworICAgICB4ZnNfYnVmX2xvZ19mb3JtYXRfdCBsYnVmOworICAgICBpbnQJCQkgc2l6ZSwgYmxlbiwgbWFwX3NpemUsIHN0cnVjdF9zaXplOworICAgICBfX2JlNjQJCSB4LCB5OworZGlmZiAtLWdpdCBhL21kcmVzdG9yZS94ZnNfbWRyZXN0b3JlLmMgYi9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCitpbmRleCA5ZDFiNGU4MC4uYzQ5YzEzYWEgMTAwNjQ0CistLS0gYS9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCisrKysgYi9tZHJlc3RvcmUveGZzX21kcmVzdG9yZS5jCitAQCAtNjYsNyArNjYsNyBAQCBwZXJmb3JtX3Jlc3RvcmUoCisgCWludAkJCW1iX2NvdW50OworIAl4ZnNfbWV0YWJsb2NrX3QJCXRtYjsKKyAJeGZzX3NiX3QJCXNiOworLQlfX2ludDY0X3QJCWJ5dGVzX3JlYWQ7CisrCWludDY0X3QJCQlieXRlc19yZWFkOworIAorIAkvKgorIAkgKiByZWFkIGluIGZpcnN0IGJsb2NrcyAoc3VwZXJibG9jayAwKSwgc2V0ICJpbnByb2dyZXNzIiBmbGFnIGZvciBpdCwKK2RpZmYgLS1naXQgYS9ta2ZzL3Byb3RvLmMgYi9ta2ZzL3Byb3RvLmMKK2luZGV4IDg5Y2QyMzc5Li5jZjhjYzM5MSAxMDA2NDQKKy0tLSBhL21rZnMvcHJvdG8uYworKysrIGIvbWtmcy9wcm90by5jCitAQCAtNjY3LDcgKzY2Nyw3IEBAIHJ0aW5pdCgKKyAJbXAtPm1fc2Iuc2JfcmJtaW5vID0gcmJtaXAtPmlfaW5vOworIAlyYm1pcC0+aV9kLmRpX3NpemUgPSBtcC0+bV9zYi5zYl9yYm1ibG9ja3MgKiBtcC0+bV9zYi5zYl9ibG9ja3NpemU7CisgCXJibWlwLT5pX2QuZGlfZmxhZ3MgPSBYRlNfRElGTEFHX05FV1JUQk07CistCSooX191aW50NjRfdCAqKSZWRlNfSShyYm1pcCktPmlfYXRpbWUgPSAwOworKwkqKHVpbnQ2NF90ICopJlZGU19JKHJibWlwKS0+aV9hdGltZSA9IDA7CisgCWxpYnhmc190cmFuc19sb2dfaW5vZGUodHAsIHJibWlwLCBYRlNfSUxPR19DT1JFKTsKKyAJbGlieGZzX2xvZ19zYih0cCk7CisgCW1wLT5tX3JibWlwID0gcmJtaXA7CitkaWZmIC0tZ2l0IGEvbWtmcy94ZnNfbWtmcy5jIGIvbWtmcy94ZnNfbWtmcy5jCitpbmRleCBiNWMzYTU3ZS4uN2JiNjQwOGYgMTAwNjQ0CistLS0gYS9ta2ZzL3hmc19ta2ZzLmMKKysrKyBiL21rZnMveGZzX21rZnMuYworQEAgLTcwNSw5ICs3MDUsOSBAQCBzdHJ1Y3Qgb3B0X3BhcmFtcyBtb3B0cyA9IHsKKyAJfSwKKyB9OworIAorLSNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoNDAgLSAoYmxvZykpKQorLSNkZWZpbmUgR0lHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMzAgLSAoYmxvZykpKQorLSNkZWZpbmUgTUVHQUJZVEVTKGNvdW50LCBibG9nKQkoKF9fdWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQorKyNkZWZpbmUgVEVSQUJZVEVTKGNvdW50LCBibG9nKQkoKHVpbnQ2NF90KShjb3VudCkgPDwgKDQwIC0gKGJsb2cpKSkKKysjZGVmaW5lIEdJR0FCWVRFUyhjb3VudCwgYmxvZykJKCh1aW50NjRfdCkoY291bnQpIDw8ICgzMCAtIChibG9nKSkpCisrI2RlZmluZSBNRUdBQllURVMoY291bnQsIGJsb2cpCSgodWludDY0X3QpKGNvdW50KSA8PCAoMjAgLSAoYmxvZykpKQorIAorIC8qCisgICogVXNlIHRoaXMgbWFjcm8gYmVmb3JlIHdlIGhhdmUgc3VwZXJibG9jayBhbmQgbW91bnQgc3RydWN0dXJlCitAQCAtODc4LDcgKzg3OCw3IEBAIGZpeHVwX2xvZ19zdHJpcGVfdW5pdCgKKyAJeGZzX3Jmc2Jsb2NrX3QJKmxvZ2Jsb2NrcywKKyAJaW50CQlibG9ja2xvZykKKyB7CistCV9fdWludDY0X3QJdG1wX2xvZ2Jsb2NrczsKKysJdWludDY0X3QJdG1wX2xvZ2Jsb2NrczsKKyAKKyAJLyoKKyAJICogTWFrZSBzdXJlIHRoYXQgdGhlIGxvZyBzaXplIGlzIGEgbXVsdGlwbGUgb2YgdGhlIHN0cmlwZSB1bml0CitAQCAtOTEwLDcgKzkxMCw3IEBAIGZpeHVwX2ludGVybmFsX2xvZ19zdHJpcGUoCisgCXhmc19tb3VudF90CSptcCwKKyAJaW50CQlsc2ZsYWcsCisgCXhmc19mc2Jsb2NrX3QJbG9nc3RhcnQsCistCV9fdWludDY0X3QJYWdzaXplLAorKwl1aW50NjRfdAlhZ3NpemUsCisgCWludAkJc3VuaXQsCisgCXhmc19yZnNibG9ja190CSpsb2dibG9ja3MsCisgCWludAkJYmxvY2tsb2csCitAQCAtOTM0LDcgKzkzNCw3IEBAIGZpeHVwX2ludGVybmFsX2xvZ19zdHJpcGUoCisgfQorIAorIHZvaWQKKy12YWxpZGF0ZV9sb2dfc2l6ZShfX3VpbnQ2NF90IGxvZ2Jsb2NrcywgaW50IGJsb2NrbG9nLCBpbnQgbWluX2xvZ2Jsb2NrcykKKyt2YWxpZGF0ZV9sb2dfc2l6ZSh1aW50NjRfdCBsb2dibG9ja3MsIGludCBibG9ja2xvZywgaW50IG1pbl9sb2dibG9ja3MpCisgeworIAlpZiAobG9nYmxvY2tzIDwgbWluX2xvZ2Jsb2NrcykgeworIAkJZnByaW50ZihzdGRlcnIsCitAQCAtOTU5LDcgKzk1OSw3IEBAIHZhbGlkYXRlX2xvZ19zaXplKF9fdWludDY0X3QgbG9nYmxvY2tzLCBpbnQgYmxvY2tsb2csIGludCBtaW5fbG9nYmxvY2tzKQorIHN0YXRpYyBpbnQKKyBjYWxjX2RlZmF1bHRfaW1heHBjdCgKKyAJaW50CQlibG9ja2xvZywKKy0JX191aW50NjRfdAlkYmxvY2tzKQorKwl1aW50NjRfdAlkYmxvY2tzKQorIHsKKyAJLyoKKyAJICogVGhpcyByZXR1cm5zIHRoZSAlIG9mIHRoZSBkaXNrIHNwYWNlIHRoYXQgaXMgdXNlZCBmb3IKK0BAIC05ODEsOSArOTgxLDkgQEAgY2FsY19kZWZhdWx0X2ltYXhwY3QoCisgc3RhdGljIHZvaWQKKyB2YWxpZGF0ZV9hZ19nZW9tZXRyeSgKKyAJaW50CQlibG9ja2xvZywKKy0JX191aW50NjRfdAlkYmxvY2tzLAorLQlfX3VpbnQ2NF90CWFnc2l6ZSwKKy0JX191aW50NjRfdAlhZ2NvdW50KQorKwl1aW50NjRfdAlkYmxvY2tzLAorKwl1aW50NjRfdAlhZ3NpemUsCisrCXVpbnQ2NF90CWFnY291bnQpCisgeworIAlpZiAoYWdzaXplIDwgWEZTX0FHX01JTl9CTE9DS1MoYmxvY2tsb2cpKSB7CisgCQlmcHJpbnRmKHN0ZGVyciwKK0BAIC0xMDU5LDcgKzEwNTksNyBAQCB6ZXJvX29sZF94ZnNfc3RydWN0dXJlcygKKyB7CisgCXZvaWQgCQkJKmJ1ZjsKKyAJeGZzX3NiX3QgCQlzYjsKKy0JX191aW50MzJfdAkJYnNpemU7CisrCXVpbnQzMl90CQlic2l6ZTsKKyAJaW50CQkJaTsKKyAJeGZzX29mZl90CQlvZmY7CisgCitAQCAtMTExMiw4ICsxMTEyLDggQEAgemVyb19vbGRfeGZzX3N0cnVjdHVyZXMoCisgCQkJaSAhPSBzYi5zYl9ibG9ja2xvZykKKyAJCWdvdG8gZG9uZTsKKyAKKy0JaWYgKHNiLnNiX2RibG9ja3MgPiAoKF9fdWludDY0X3Qpc2Iuc2JfYWdjb3VudCAqIHNiLnNiX2FnYmxvY2tzKSB8fAorLQkJCXNiLnNiX2RibG9ja3MgPCAoKF9fdWludDY0X3QpKHNiLnNiX2FnY291bnQgLSAxKSAqCisrCWlmIChzYi5zYl9kYmxvY2tzID4gKCh1aW50NjRfdClzYi5zYl9hZ2NvdW50ICogc2Iuc2JfYWdibG9ja3MpIHx8CisrCQkJc2Iuc2JfZGJsb2NrcyA8ICgodWludDY0X3QpKHNiLnNiX2FnY291bnQgLSAxKSAqCisgCQkJCQkgc2Iuc2JfYWdibG9ja3MgKyBYRlNfTUlOX0FHX0JMT0NLUykpCisgCQlnb3RvIGRvbmU7CisgCitAQCAtMTEzMyw3ICsxMTMzLDcgQEAgZG9uZToKKyB9CisgCisgc3RhdGljIHZvaWQKKy1kaXNjYXJkX2Jsb2NrcyhkZXZfdCBkZXYsIF9fdWludDY0X3QgbnNlY3RvcnMpCisrZGlzY2FyZF9ibG9ja3MoZGV2X3QgZGV2LCB1aW50NjRfdCBuc2VjdG9ycykKKyB7CisgCWludCBmZDsKKyAKK0BAIC0xMzk1LDExICsxMzk1LDExIEBAIG1haW4oCisgCWludAkJCWFyZ2MsCisgCWNoYXIJCQkqKmFyZ3YpCisgeworLQlfX3VpbnQ2NF90CQlhZ2NvdW50OworKwl1aW50NjRfdAkJYWdjb3VudDsKKyAJeGZzX2FnZl90CQkqYWdmOworIAl4ZnNfYWdpX3QJCSphZ2k7CisgCXhmc19hZ251bWJlcl90CQlhZ25vOworLQlfX3VpbnQ2NF90CQlhZ3NpemU7CisrCXVpbnQ2NF90CQlhZ3NpemU7CisgCXhmc19hbGxvY19yZWNfdAkJKmFyZWM7CisgCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sJKmJsb2NrOworIAlpbnQJCQlibGZsYWc7CitAQCAtMTQ3NSwxMCArMTQ3NSwxMCBAQCBtYWluKAorIAljaGFyCQkJKnJ0c2l6ZTsKKyAJeGZzX3NiX3QJCSpzYnA7CisgCWludAkJCXNlY3RvcmxvZzsKKy0JX191aW50NjRfdAkJc2VjdG9yX21hc2s7CisrCXVpbnQ2NF90CQlzZWN0b3JfbWFzazsKKyAJaW50CQkJc2xmbGFnOworIAlpbnQJCQlzc2ZsYWc7CistCV9fdWludDY0X3QJCXRtcF9hZ3NpemU7CisrCXVpbnQ2NF90CQl0bXBfYWdzaXplOworIAl1dWlkX3QJCQl1dWlkOworIAlpbnQJCQl3b3JzdF9mcmVlbGlzdDsKKyAJbGlieGZzX2luaXRfdAkJeGk7CitAQCAtMjE2Nyw3ICsyMTY3LDcgQEAgXygicm1hcGJ0IG5vdCBzdXBwb3J0ZWQgd2l0aCByZWFsdGltZSBkZXZpY2VzXG4iKSk7CisgCisgCisgCWlmIChkc2l6ZSkgeworLQkJX191aW50NjRfdCBkYnl0ZXM7CisrCQl1aW50NjRfdCBkYnl0ZXM7CisgCisgCQlkYnl0ZXMgPSBnZXRudW0oZHNpemUsICZkb3B0cywgRF9TSVpFKTsKKyAJCWlmIChkYnl0ZXMgJSBYRlNfTUlOX0JMT0NLU0laRSkgeworQEAgLTIxOTksNyArMjE5OSw3IEBAIF8oInJtYXBidCBub3Qgc3VwcG9ydGVkIHdpdGggcmVhbHRpbWUgZGV2aWNlc1xuIikpOworIAl9CisgCisgCWlmIChsb2dzaXplKSB7CistCQlfX3VpbnQ2NF90IGxvZ2J5dGVzOworKwkJdWludDY0X3QgbG9nYnl0ZXM7CisgCisgCQlsb2dieXRlcyA9IGdldG51bShsb2dzaXplLCAmbG9wdHMsIExfU0laRSk7CisgCQlpZiAobG9nYnl0ZXMgJSBYRlNfTUlOX0JMT0NLU0laRSkgeworQEAgLTIyMTYsNyArMjIxNiw3IEBAIF8oInJtYXBidCBub3Qgc3VwcG9ydGVkIHdpdGggcmVhbHRpbWUgZGV2aWNlc1xuIikpOworIAkJCQkobG9uZyBsb25nKShsb2dibG9ja3MgPDwgYmxvY2tsb2cpKTsKKyAJfQorIAlpZiAocnRzaXplKSB7CistCQlfX3VpbnQ2NF90IHJ0Ynl0ZXM7CisrCQl1aW50NjRfdCBydGJ5dGVzOworIAorIAkJcnRieXRlcyA9IGdldG51bShydHNpemUsICZyb3B0cywgUl9TSVpFKTsKKyAJCWlmIChydGJ5dGVzICUgWEZTX01JTl9CTE9DS1NJWkUpIHsKK0BAIC0yMjM2LDcgKzIyMzYsNyBAQCBfKCJybWFwYnQgbm90IHN1cHBvcnRlZCB3aXRoIHJlYWx0aW1lIGRldmljZXNcbiIpKTsKKyAJICogSWYgc3BlY2lmaWVkLCBjaGVjayBydCBleHRlbnQgc2l6ZSBhZ2FpbnN0IGl0cyBjb25zdHJhaW50cy4KKyAJICovCisgCWlmIChydGV4dHNpemUpIHsKKy0JCV9fdWludDY0X3QgcnRleHRieXRlczsKKysJCXVpbnQ2NF90IHJ0ZXh0Ynl0ZXM7CisgCisgCQlydGV4dGJ5dGVzID0gZ2V0bnVtKHJ0ZXh0c2l6ZSwgJnJvcHRzLCBSX0VYVFNJWkUpOworIAkJaWYgKHJ0ZXh0Ynl0ZXMgJSBibG9ja3NpemUpIHsKK0BAIC0yMjUyLDggKzIyNTIsOCBAQCBfKCJybWFwYnQgbm90IHN1cHBvcnRlZCB3aXRoIHJlYWx0aW1lIGRldmljZXNcbiIpKTsKKyAJCSAqIGFuZCB0aGUgdW5kZXJseWluZyB2b2x1bWUgaXMgc3RyaXBlZCwgdGhlbiBzZXQgcnRleHRibG9ja3MKKyAJCSAqIHRvIHRoZSBzdHJpcGUgd2lkdGguCisgCQkgKi8KKy0JCV9fdWludDY0X3QJcnN3aWR0aDsKKy0JCV9fdWludDY0X3QJcnRleHRieXRlczsKKysJCXVpbnQ2NF90CXJzd2lkdGg7CisrCQl1aW50NjRfdAlydGV4dGJ5dGVzOworIAorIAkJaWYgKCFub3JzZmxhZyAmJiAheGkucmlzZmlsZSAmJiAhKCFydHNpemUgJiYgeGkuZGlzZmlsZSkpCisgCQkJcnN3aWR0aCA9IGZ0LnJ0c3dpZHRoOworQEAgLTIzMzUsMTAgKzIzMzUsMTAgQEAgXygicm1hcGJ0IG5vdCBzdXBwb3J0ZWQgd2l0aCByZWFsdGltZSBkZXZpY2VzXG4iKSk7CisgCSAqIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZSwgb3IgMTAyNCwgd2hpY2hldmVyIGlzIGxhcmdlci4KKyAJICovCisgCistCXNlY3Rvcl9tYXNrID0gKF9fdWludDY0X3QpLTEgPDwgKE1BWChzZWN0b3Jsb2csIDEwKSAtIEJCU0hJRlQpOworKwlzZWN0b3JfbWFzayA9ICh1aW50NjRfdCktMSA8PCAoTUFYKHNlY3RvcmxvZywgMTApIC0gQkJTSElGVCk7CisgCXhpLmRzaXplICY9IHNlY3Rvcl9tYXNrOworIAl4aS5ydHNpemUgJj0gc2VjdG9yX21hc2s7CistCXhpLmxvZ0JCc2l6ZSAmPSAoX191aW50NjRfdCktMSA8PCAoTUFYKGxzZWN0b3Jsb2csIDEwKSAtIEJCU0hJRlQpOworKwl4aS5sb2dCQnNpemUgJj0gKHVpbnQ2NF90KS0xIDw8IChNQVgobHNlY3RvcmxvZywgMTApIC0gQkJTSElGVCk7CisgCisgCisgCS8qIGRvbid0IGRvIGRpc2NhcmRzIG9uIHByaW50LW9ubHkgcnVucyBvciBvbiBmaWxlcyAqLworQEAgLTI2OTYsOSArMjY5Niw5IEBAIF8oInNpemUgJXMgc3BlY2lmaWVkIGZvciBsb2cgc3Vidm9sdW1lIGlzIHRvbyBsYXJnZSwgbWF4aW11bSBpcyAlbGxkIGJsb2Nrc1xuIiksCisgCW1wID0gJm1idWY7CisgCXNicCA9ICZtcC0+bV9zYjsKKyAJbWVtc2V0KG1wLCAwLCBzaXplb2YoeGZzX21vdW50X3QpKTsKKy0Jc2JwLT5zYl9ibG9ja2xvZyA9IChfX3VpbnQ4X3QpYmxvY2tsb2c7CistCXNicC0+c2Jfc2VjdGxvZyA9IChfX3VpbnQ4X3Qpc2VjdG9ybG9nOworLQlzYnAtPnNiX2FnYmxrbG9nID0gKF9fdWludDhfdClsaWJ4ZnNfbG9nMl9yb3VuZHVwKCh1bnNpZ25lZCBpbnQpYWdzaXplKTsKKysJc2JwLT5zYl9ibG9ja2xvZyA9ICh1aW50OF90KWJsb2NrbG9nOworKwlzYnAtPnNiX3NlY3Rsb2cgPSAodWludDhfdClzZWN0b3Jsb2c7CisrCXNicC0+c2JfYWdibGtsb2cgPSAodWludDhfdClsaWJ4ZnNfbG9nMl9yb3VuZHVwKCh1bnNpZ25lZCBpbnQpYWdzaXplKTsKKyAJc2JwLT5zYl9hZ2Jsb2NrcyA9ICh4ZnNfYWdibG9ja190KWFnc2l6ZTsKKyAJbXAtPm1fYmxrYmJfbG9nID0gc2JwLT5zYl9ibG9ja2xvZyAtIEJCU0hJRlQ7CisgCW1wLT5tX3NlY3RiYl9sb2cgPSBzYnAtPnNiX3NlY3Rsb2cgLSBCQlNISUZUOworQEAgLTI4MDUsMTQgKzI4MDUsMTQgQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKKyAJc2JwLT5zYl9hZ2NvdW50ID0gKHhmc19hZ251bWJlcl90KWFnY291bnQ7CisgCXNicC0+c2JfcmJtYmxvY2tzID0gbmJtYmxvY2tzOworIAlzYnAtPnNiX2xvZ2Jsb2NrcyA9ICh4ZnNfZXh0bGVuX3QpbG9nYmxvY2tzOworLQlzYnAtPnNiX3NlY3RzaXplID0gKF9fdWludDE2X3Qpc2VjdG9yc2l6ZTsKKy0Jc2JwLT5zYl9pbm9kZXNpemUgPSAoX191aW50MTZfdClpc2l6ZTsKKy0Jc2JwLT5zYl9pbm9wYmxvY2sgPSAoX191aW50MTZfdCkoYmxvY2tzaXplIC8gaXNpemUpOworLQlzYnAtPnNiX3NlY3Rsb2cgPSAoX191aW50OF90KXNlY3RvcmxvZzsKKy0Jc2JwLT5zYl9pbm9kZWxvZyA9IChfX3VpbnQ4X3QpaW5vZGVsb2c7CistCXNicC0+c2JfaW5vcGJsb2cgPSAoX191aW50OF90KShibG9ja2xvZyAtIGlub2RlbG9nKTsKKysJc2JwLT5zYl9zZWN0c2l6ZSA9ICh1aW50MTZfdClzZWN0b3JzaXplOworKwlzYnAtPnNiX2lub2Rlc2l6ZSA9ICh1aW50MTZfdClpc2l6ZTsKKysJc2JwLT5zYl9pbm9wYmxvY2sgPSAodWludDE2X3QpKGJsb2Nrc2l6ZSAvIGlzaXplKTsKKysJc2JwLT5zYl9zZWN0bG9nID0gKHVpbnQ4X3Qpc2VjdG9ybG9nOworKwlzYnAtPnNiX2lub2RlbG9nID0gKHVpbnQ4X3QpaW5vZGVsb2c7CisrCXNicC0+c2JfaW5vcGJsb2cgPSAodWludDhfdCkoYmxvY2tsb2cgLSBpbm9kZWxvZyk7CisgCXNicC0+c2JfcmV4dHNsb2cgPQorLQkJKF9fdWludDhfdCkocnRleHRlbnRzID8KKysJCSh1aW50OF90KShydGV4dGVudHMgPworIAkJCWxpYnhmc19oaWdoYml0MzIoKHVuc2lnbmVkIGludClydGV4dGVudHMpIDogMCk7CisgCXNicC0+c2JfaW5wcm9ncmVzcyA9IDE7CS8qIG1rZnMgaXMgaW4gcHJvZ3Jlc3MgKi8KKyAJc2JwLT5zYl9pbWF4X3BjdCA9IGltYXhwY3Q7CitAQCAtMjg0MCw4ICsyODQwLDggQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKKyAJfSBlbHNlCisgCQlzYnAtPnNiX2lub2FsaWdubXQgPSAwOworIAlpZiAobHNlY3RvcnNpemUgIT0gQkJTSVpFIHx8IHNlY3RvcnNpemUgIT0gQkJTSVpFKSB7CistCQlzYnAtPnNiX2xvZ3NlY3Rsb2cgPSAoX191aW50OF90KWxzZWN0b3Jsb2c7CistCQlzYnAtPnNiX2xvZ3NlY3RzaXplID0gKF9fdWludDE2X3QpbHNlY3RvcnNpemU7CisrCQlzYnAtPnNiX2xvZ3NlY3Rsb2cgPSAodWludDhfdClsc2VjdG9ybG9nOworKwkJc2JwLT5zYl9sb2dzZWN0c2l6ZSA9ICh1aW50MTZfdClsc2VjdG9yc2l6ZTsKKyAJfSBlbHNlIHsKKyAJCXNicC0+c2JfbG9nc2VjdGxvZyA9IDA7CisgCQlzYnAtPnNiX2xvZ3NlY3RzaXplID0gMDsKK2RpZmYgLS1naXQgYS9xdW90YS9lZGl0LmMgYi9xdW90YS9lZGl0LmMKK2luZGV4IDM2YjMyN2E1Li44NDE4ZTg1OCAxMDA2NDQKKy0tLSBhL3F1b3RhL2VkaXQuYworKysrIGIvcXVvdGEvZWRpdC5jCitAQCAtMTE1LDE2ICsxMTUsMTYgQEAgd2Fybl9oZWxwKHZvaWQpCisgCisgc3RhdGljIHZvaWQKKyBzZXRfbGltaXRzKAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJdWludAkJdHlwZSwKKyAJdWludAkJbWFzaywKKyAJY2hhcgkJKmRldiwKKy0JX191aW50NjRfdAkqYnNvZnQsCistCV9fdWludDY0X3QJKmJoYXJkLAorLQlfX3VpbnQ2NF90CSppc29mdCwKKy0JX191aW50NjRfdAkqaWhhcmQsCistCV9fdWludDY0X3QJKnJ0YnNvZnQsCistCV9fdWludDY0X3QJKnJ0YmhhcmQpCisrCXVpbnQ2NF90CSpic29mdCwKKysJdWludDY0X3QJKmJoYXJkLAorKwl1aW50NjRfdAkqaXNvZnQsCisrCXVpbnQ2NF90CSppaGFyZCwKKysJdWludDY0X3QJKnJ0YnNvZnQsCisrCXVpbnQ2NF90CSpydGJoYXJkKQorIHsKKyAJZnNfZGlza19xdW90YV90CWQ7CisgCitAQCAtMTUyLDEyICsxNTIsMTIgQEAgc2V0X3VzZXJfbGltaXRzKAorIAljaGFyCQkqbmFtZSwKKyAJdWludAkJdHlwZSwKKyAJdWludAkJbWFzaywKKy0JX191aW50NjRfdAkqYnNvZnQsCistCV9fdWludDY0X3QJKmJoYXJkLAorLQlfX3VpbnQ2NF90CSppc29mdCwKKy0JX191aW50NjRfdAkqaWhhcmQsCistCV9fdWludDY0X3QJKnJ0YnNvZnQsCistCV9fdWludDY0X3QJKnJ0YmhhcmQpCisrCXVpbnQ2NF90CSpic29mdCwKKysJdWludDY0X3QJKmJoYXJkLAorKwl1aW50NjRfdAkqaXNvZnQsCisrCXVpbnQ2NF90CSppaGFyZCwKKysJdWludDY0X3QJKnJ0YnNvZnQsCisrCXVpbnQ2NF90CSpydGJoYXJkKQorIHsKKyAJdWlkX3QJCXVpZCA9IHVpZF9mcm9tX3N0cmluZyhuYW1lKTsKKyAKK0BAIC0xNzUsMTIgKzE3NSwxMiBAQCBzZXRfZ3JvdXBfbGltaXRzKAorIAljaGFyCQkqbmFtZSwKKyAJdWludAkJdHlwZSwKKyAJdWludAkJbWFzaywKKy0JX191aW50NjRfdAkqYnNvZnQsCistCV9fdWludDY0X3QJKmJoYXJkLAorLQlfX3VpbnQ2NF90CSppc29mdCwKKy0JX191aW50NjRfdAkqaWhhcmQsCistCV9fdWludDY0X3QJKnJ0YnNvZnQsCistCV9fdWludDY0X3QJKnJ0YmhhcmQpCisrCXVpbnQ2NF90CSpic29mdCwKKysJdWludDY0X3QJKmJoYXJkLAorKwl1aW50NjRfdAkqaXNvZnQsCisrCXVpbnQ2NF90CSppaGFyZCwKKysJdWludDY0X3QJKnJ0YnNvZnQsCisrCXVpbnQ2NF90CSpydGJoYXJkKQorIHsKKyAJZ2lkX3QJCWdpZCA9IGdpZF9mcm9tX3N0cmluZyhuYW1lKTsKKyAKK0BAIC0xOTgsMTIgKzE5OCwxMiBAQCBzZXRfcHJvamVjdF9saW1pdHMoCisgCWNoYXIJCSpuYW1lLAorIAl1aW50CQl0eXBlLAorIAl1aW50CQltYXNrLAorLQlfX3VpbnQ2NF90CSpic29mdCwKKy0JX191aW50NjRfdAkqYmhhcmQsCistCV9fdWludDY0X3QJKmlzb2Z0LAorLQlfX3VpbnQ2NF90CSppaGFyZCwKKy0JX191aW50NjRfdAkqcnRic29mdCwKKy0JX191aW50NjRfdAkqcnRiaGFyZCkKKysJdWludDY0X3QJKmJzb2Z0LAorKwl1aW50NjRfdAkqYmhhcmQsCisrCXVpbnQ2NF90CSppc29mdCwKKysJdWludDY0X3QJKmloYXJkLAorKwl1aW50NjRfdAkqcnRic29mdCwKKysJdWludDY0X3QJKnJ0YmhhcmQpCisgeworIAlwcmlkX3QJCXByaWQgPSBwcmlkX2Zyb21fc3RyaW5nKG5hbWUpOworIAorQEAgLTIyNCw3ICsyMjQsNyBAQCBleHRyYWN0YigKKyAJaW50CQlsZW5ndGgsCisgCXVpbnQJCWJsb2Nrc2l6ZSwKKyAJdWludAkJc2VjdG9yc2l6ZSwKKy0JX191aW50NjRfdAkqdmFsdWUpCisrCXVpbnQ2NF90CSp2YWx1ZSkKKyB7CisgCWxvbmcgbG9uZwl2OworIAljaGFyCQkqcyA9IHN0cmluZzsKK0BAIC0yMzgsNyArMjM4LDcgQEAgZXh0cmFjdGIoCisgCQkJCXByb2duYW1lLCBzKTsKKyAJCQlyZXR1cm4gMDsKKyAJCX0KKy0JCSp2YWx1ZSA9IChfX3VpbnQ2NF90KXYgPj4gOTsJLyogc3lzY2FsbHMgdXNlIGJhc2ljIGJsb2NrcyAqLworKwkJKnZhbHVlID0gKHVpbnQ2NF90KXYgPj4gOTsJLyogc3lzY2FsbHMgdXNlIGJhc2ljIGJsb2NrcyAqLworIAkJaWYgKHYgPiAwICYmICp2YWx1ZSA9PSAwKQorIAkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogV2FybmluZzogYCVzJyBpbiBxdW90YSBibG9ja3MgaXMgMCAodW5saW1pdGVkKS5cbiIpLCBwcm9nbmFtZSwgcyk7CisgCQlyZXR1cm4gMTsKK0BAIC0yNTIsNyArMjUyLDcgQEAgZXh0cmFjdGkoCisgCWNoYXIJCSpzdHJpbmcsCisgCWNvbnN0IGNoYXIJKnByZWZpeCwKKyAJaW50CQlsZW5ndGgsCistCV9fdWludDY0X3QJKnZhbHVlKQorKwl1aW50NjRfdAkqdmFsdWUpCisgeworIAljaGFyCQkqc3AsICpzID0gc3RyaW5nOworIAorQEAgLTI3MCw3ICsyNzAsNyBAQCBsaW1pdF9mKAorIAljaGFyCQkqKmFyZ3YpCisgeworIAljaGFyCQkqbmFtZTsKKy0JX191aW50NjRfdAlic29mdCwgYmhhcmQsIGlzb2Z0LCBpaGFyZCwgcnRic29mdCwgcnRiaGFyZDsKKysJdWludDY0X3QJYnNvZnQsIGJoYXJkLCBpc29mdCwgaWhhcmQsIHJ0YnNvZnQsIHJ0YmhhcmQ7CisgCWludAkJYywgdHlwZSA9IDAsIG1hc2sgPSAwLCBmbGFncyA9IDA7CisgCXVpbnQJCWJzaXplLCBzc2l6ZSwgZW5kb3B0aW9uczsKKyAKK0BAIC0zODQsOCArMzg0LDggQEAgcmVzdG9yZV9maWxlKAorIAljaGFyCQkqZGV2ID0gTlVMTDsKKyAJdWludAkJbWFzazsKKyAJaW50CQljbnQ7CistCV9fdWludDMyX3QJaWQ7CistCV9fdWludDY0X3QJYnNvZnQsIGJoYXJkLCBpc29mdCwgaWhhcmQsIHJ0YnNvZnQsIHJ0YmhhcmQ7CisrCXVpbnQzMl90CWlkOworKwl1aW50NjRfdAlic29mdCwgYmhhcmQsIGlzb2Z0LCBpaGFyZCwgcnRic29mdCwgcnRiaGFyZDsKKyAKKyAJd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZwKSAhPSBOVUxMKSB7CisgCQlpZiAoc3RybmNtcCgiZnMgPSAiLCBidWZmZXIsIDUpID09IDApIHsKK0BAIC01NDYsNyArNTQ2LDcgQEAgdGltZXJfZigKKyAKKyBzdGF0aWMgdm9pZAorIHNldF93YXJuaW5ncygKKy0JX191aW50MzJfdAlpZCwKKysJdWludDMyX3QJaWQsCisgCXVpbnQJCXR5cGUsCisgCXVpbnQJCW1hc2ssCisgCWNoYXIJCSpkZXYsCitkaWZmIC0tZ2l0IGEvcXVvdGEvZnJlZS5jIGIvcXVvdGEvZnJlZS5jCitpbmRleCBjZWUxNWVlOS4uMWY4Mzc4ZDIgMTAwNjQ0CistLS0gYS9xdW90YS9mcmVlLmMKKysrKyBiL3F1b3RhL2ZyZWUuYworQEAgLTQ5LDIwICs0OSwyMCBAQCBmcmVlX2hlbHAodm9pZCkKKyBzdGF0aWMgaW50CisgbW91bnRfZnJlZV9zcGFjZV9kYXRhKAorIAlzdHJ1Y3QgZnNfcGF0aAkJKm1vdW50LAorLQlfX3VpbnQ2NF90CQkqYmNvdW50LAorLQlfX3VpbnQ2NF90CQkqYnVzZWQsCistCV9fdWludDY0X3QJCSpiZnJlZSwKKy0JX191aW50NjRfdAkJKmljb3VudCwKKy0JX191aW50NjRfdAkJKml1c2VkLAorLQlfX3VpbnQ2NF90CQkqaWZyZWUsCistCV9fdWludDY0X3QJCSpyY291bnQsCistCV9fdWludDY0X3QJCSpydXNlZCwKKy0JX191aW50NjRfdAkJKnJmcmVlKQorKwl1aW50NjRfdAkJKmJjb3VudCwKKysJdWludDY0X3QJCSpidXNlZCwKKysJdWludDY0X3QJCSpiZnJlZSwKKysJdWludDY0X3QJCSppY291bnQsCisrCXVpbnQ2NF90CQkqaXVzZWQsCisrCXVpbnQ2NF90CQkqaWZyZWUsCisrCXVpbnQ2NF90CQkqcmNvdW50LAorKwl1aW50NjRfdAkJKnJ1c2VkLAorKwl1aW50NjRfdAkJKnJmcmVlKQorIHsKKyAJc3RydWN0IHhmc19mc29wX2NvdW50cwlmc2NvdW50czsKKyAJc3RydWN0IHhmc19mc29wX2dlb20JZnNnZW87CisgCXN0cnVjdCBzdGF0ZnMJCXN0OworLQlfX3VpbnQ2NF90CQlsb2dzaXplLCBjb3VudCwgZnJlZTsKKysJdWludDY0X3QJCWxvZ3NpemUsIGNvdW50LCBmcmVlOworIAlpbnQJCQlmZDsKKyAKKyAJaWYgKChmZCA9IG9wZW4obW91bnQtPmZzX2RpciwgT19SRE9OTFkpKSA8IDApIHsKK0BAIC0xMzIsMTUgKzEzMiwxNSBAQCBtb3VudF9mcmVlX3NwYWNlX2RhdGEoCisgc3RhdGljIGludAorIHByb2plY3RzX2ZyZWVfc3BhY2VfZGF0YSgKKyAJc3RydWN0IGZzX3BhdGgJCSpwYXRoLAorLQlfX3VpbnQ2NF90CQkqYmNvdW50LAorLQlfX3VpbnQ2NF90CQkqYnVzZWQsCistCV9fdWludDY0X3QJCSpiZnJlZSwKKy0JX191aW50NjRfdAkJKmljb3VudCwKKy0JX191aW50NjRfdAkJKml1c2VkLAorLQlfX3VpbnQ2NF90CQkqaWZyZWUsCistCV9fdWludDY0X3QJCSpyY291bnQsCistCV9fdWludDY0X3QJCSpydXNlZCwKKy0JX191aW50NjRfdAkJKnJmcmVlKQorKwl1aW50NjRfdAkJKmJjb3VudCwKKysJdWludDY0X3QJCSpidXNlZCwKKysJdWludDY0X3QJCSpiZnJlZSwKKysJdWludDY0X3QJCSppY291bnQsCisrCXVpbnQ2NF90CQkqaXVzZWQsCisrCXVpbnQ2NF90CQkqaWZyZWUsCisrCXVpbnQ2NF90CQkqcmNvdW50LAorKwl1aW50NjRfdAkJKnJ1c2VkLAorKwl1aW50NjRfdAkJKnJmcmVlKQorIHsKKyAJZnNfcXVvdGFfc3RhdF90CQlxZnM7CisgCWZzX2Rpc2tfcXVvdGFfdAkJZDsKK0BAIC0yMjYsOSArMjI2LDkgQEAgZnJlZV9zcGFjZSgKKyAJZnNfcGF0aF90CSpwYXRoLAorIAl1aW50CQlmbGFncykKKyB7CistCV9fdWludDY0X3QJYmNvdW50LCBidXNlZCwgYmZyZWU7CistCV9fdWludDY0X3QJaWNvdW50LCBpdXNlZCwgaWZyZWU7CistCV9fdWludDY0X3QJcmNvdW50LCBydXNlZCwgcmZyZWU7CisrCXVpbnQ2NF90CWJjb3VudCwgYnVzZWQsIGJmcmVlOworKwl1aW50NjRfdAlpY291bnQsIGl1c2VkLCBpZnJlZTsKKysJdWludDY0X3QJcmNvdW50LCBydXNlZCwgcmZyZWU7CisgCWNoYXIJCWFbOF0sIHNbOF0sIHVbOF0sIHBbOF07CisgCWludAkJY291bnQ7CisgCitkaWZmIC0tZ2l0IGEvcXVvdGEvcXVvdC5jIGIvcXVvdGEvcXVvdC5jCitpbmRleCBjY2MxNTRmNS4uNjM3OGZiYjcgMTAwNjQ0CistLS0gYS9xdW90YS9xdW90LmMKKysrKyBiL3F1b3RhL3F1b3QuYworQEAgLTI2LDE3ICsyNiwxNyBAQAorIAorIHR5cGVkZWYgc3RydWN0IGR1IHsKKyAJc3RydWN0IGR1CSpuZXh0OworLQlfX3VpbnQ2NF90CWJsb2NrczsKKy0JX191aW50NjRfdAlibG9ja3MzMDsKKy0JX191aW50NjRfdAlibG9ja3M2MDsKKy0JX191aW50NjRfdAlibG9ja3M5MDsKKy0JX191aW50NjRfdAluZmlsZXM7CistCV9fdWludDMyX3QJaWQ7CisrCXVpbnQ2NF90CWJsb2NrczsKKysJdWludDY0X3QJYmxvY2tzMzA7CisrCXVpbnQ2NF90CWJsb2NrczYwOworKwl1aW50NjRfdAlibG9ja3M5MDsKKysJdWludDY0X3QJbmZpbGVzOworKwl1aW50MzJfdAlpZDsKKyB9IGR1X3Q7CisgCisgI2RlZmluZQlUU0laRQkJNTAwCistc3RhdGljIF9fdWludDY0X3QJc2l6ZXNbVFNJWkVdOworLXN0YXRpYyBfX3VpbnQ2NF90CW92ZXJmbG93OworK3N0YXRpYyB1aW50NjRfdAlzaXplc1tUU0laRV07Cisrc3RhdGljIHVpbnQ2NF90CW92ZXJmbG93OworIAorICNkZWZpbmUJTkRVCQk2MDAwMAorICNkZWZpbmUJRFVIQVNICQk4MjA5CitAQCAtODQsOCArODQsOCBAQCBxdW90X2J1bGtzdGF0X2FkZCgKKyB7CisgCWR1X3QJCSpkcDsKKyAJZHVfdAkJKipocDsKKy0JX191aW50NjRfdAlzaXplOworLQlfX3VpbnQzMl90CWksIGlkOworKwl1aW50NjRfdAlzaXplOworKwl1aW50MzJfdAlpLCBpZDsKKyAKKyAJaWYgKChwLT5ic19tb2RlICYgU19JRk1UKSA9PSAwKQorIAkJcmV0dXJuOworQEAgLTIwMyw3ICsyMDMsNyBAQCBxY29tcGFyZSgKKyAJcmV0dXJuIDA7CisgfQorIAorLXR5cGVkZWYgY2hhciAqKCppZHRvbmFtZV90KShfX3VpbnQzMl90KTsKKyt0eXBlZGVmIGNoYXIgKigqaWR0b25hbWVfdCkodWludDMyX3QpOworIAorIHN0YXRpYyB2b2lkCisgcXVvdF9yZXBvcnRfbW91bnRfYW55X3R5cGUoCitAQCAtMjkxLDcgKzI5MSw3IEBAIHF1b3RfaGlzdG9ncmFtX21vdW50KAorIAlmc19wYXRoX3QJKm1vdW50LAorIAl1aW50CQlmbGFncykKKyB7CistCV9fdWludDY0X3QJdCA9IDA7CisrCXVpbnQ2NF90CXQgPSAwOworIAlpbnQJCWk7CisgCisgCWZwcmludGYoZnAsIF8oIiVzICglcyk6XG4iKSwgbW91bnQtPmZzX25hbWUsIG1vdW50LT5mc19kaXIpOworZGlmZiAtLWdpdCBhL3F1b3RhL3F1b3RhLmMgYi9xdW90YS9xdW90YS5jCitpbmRleCBkMDllMjM5Yi4uNDc5Yjk3MGUgMTAwNjQ0CistLS0gYS9xdW90YS9xdW90YS5jCisrKysgYi9xdW90YS9xdW90YS5jCitAQCAtNTIsNyArNTIsNyBAQCBxdW90YV9oZWxwKHZvaWQpCisgc3RhdGljIGludAorIHF1b3RhX21vdW50KAorIAlGSUxFCQkqZnAsCistCV9fdWludDMyX3QJaWQsCisrCXVpbnQzMl90CWlkLAorIAljaGFyCQkqbmFtZSwKKyAJdWludAkJZm9ybSwKKyAJdWludAkJdHlwZSwKK0BAIC0xODEsNyArMTgxLDcgQEAgcXVvdGFfbW91bnQoCisgc3RhdGljIHZvaWQKKyBxdW90YSgKKyAJRklMRQkJKmZwLAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJY2hhcgkJKm5hbWUsCisgCXVpbnQJCWZvcm0sCisgCXVpbnQJCXR5cGUsCitkaWZmIC0tZ2l0IGEvcXVvdGEvcXVvdGEuaCBiL3F1b3RhL3F1b3RhLmgKK2luZGV4IDRiZGUzNTEzLi45ZWQyOGJlZSAxMDA2NDQKKy0tLSBhL3F1b3RhL3F1b3RhLmgKKysrKyBiL3F1b3RhL3F1b3RhLmgKK0BAIC01Myw5ICs1Myw5IEBAIGVudW0geworIGV4dGVybiBjaGFyICp0eXBlX3RvX3N0cmluZyh1aW50IF9fdHlwZSk7CisgZXh0ZXJuIGNoYXIgKmZvcm1fdG9fc3RyaW5nKHVpbnQgX19mb3JtKTsKKyBleHRlcm4gY2hhciAqdGltZV90b19zdHJpbmcodGltZV90IF9fdGltZSwgdWludCBfX2ZsYWdzKTsKKy1leHRlcm4gY2hhciAqYmJzX3RvX3N0cmluZyhfX3VpbnQ2NF90IF9fdiwgY2hhciAqX19jLCB1aW50IF9fc2l6ZSk7CistZXh0ZXJuIGNoYXIgKm51bV90b19zdHJpbmcoX191aW50NjRfdCBfX3YsIGNoYXIgKl9fYywgdWludCBfX3NpemUpOworLWV4dGVybiBjaGFyICpwY3RfdG9fc3RyaW5nKF9fdWludDY0X3QgX192LCBfX3VpbnQ2NF90IF9fdCwgY2hhciAqX19jLCB1aW50IF9fcyk7CisrZXh0ZXJuIGNoYXIgKmJic190b19zdHJpbmcodWludDY0X3QgX192LCBjaGFyICpfX2MsIHVpbnQgX19zaXplKTsKKytleHRlcm4gY2hhciAqbnVtX3RvX3N0cmluZyh1aW50NjRfdCBfX3YsIGNoYXIgKl9fYywgdWludCBfX3NpemUpOworK2V4dGVybiBjaGFyICpwY3RfdG9fc3RyaW5nKHVpbnQ2NF90IF9fdiwgdWludDY0X3QgX190LCBjaGFyICpfX2MsIHVpbnQgX19zKTsKKyAKKyBleHRlcm4gRklMRSAqZm9wZW5fd3JpdGVfc2VjdXJlKGNoYXIgKl9fZmlsZW5hbWUpOworIAorQEAgLTgxLDcgKzgxLDcgQEAgZW51bSB7CisgICogSWRlbnRpZmllciAodWlkL2dpZC9wcmlkKSBjYWNoZSByb3V0aW5lcworICAqLworICNkZWZpbmUgTk1BWCAzMgorLWV4dGVybiBjaGFyICp1aWRfdG9fbmFtZShfX3VpbnQzMl90IF9fdWlkKTsKKy1leHRlcm4gY2hhciAqZ2lkX3RvX25hbWUoX191aW50MzJfdCBfX2dpZCk7CistZXh0ZXJuIGNoYXIgKnByaWRfdG9fbmFtZShfX3VpbnQzMl90IF9fcHJpZCk7CisrZXh0ZXJuIGNoYXIgKnVpZF90b19uYW1lKHVpbnQzMl90IF9fdWlkKTsKKytleHRlcm4gY2hhciAqZ2lkX3RvX25hbWUodWludDMyX3QgX19naWQpOworK2V4dGVybiBjaGFyICpwcmlkX3RvX25hbWUodWludDMyX3QgX19wcmlkKTsKKyBleHRlcm4gYm9vbCBpc2RpZ2l0c19vbmx5KGNvbnN0IGNoYXIgKik7CitkaWZmIC0tZ2l0IGEvcXVvdGEvcmVwb3J0LmMgYi9xdW90YS9yZXBvcnQuYworaW5kZXggZDA1MDljMjUuLmIyZWEzYmJlIDEwMDY0NAorLS0tIGEvcXVvdGEvcmVwb3J0LmMKKysrKyBiL3F1b3RhL3JlcG9ydC5jCitAQCAtMzMzLDkgKzMzMyw5IEBAIHJlcG9ydF9oZWFkZXIoCisgc3RhdGljIGludAorIHJlcG9ydF9tb3VudCgKKyAJRklMRQkJKmZwLAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJY2hhcgkJKm5hbWUsCistCV9fdWludDMyX3QJKm9pZCwKKysJdWludDMyX3QJKm9pZCwKKyAJdWludAkJZm9ybSwKKyAJdWludAkJdHlwZSwKKyAJZnNfcGF0aF90CSptb3VudCwKK2RpZmYgLS1naXQgYS9xdW90YS9zdGF0ZS5jIGIvcXVvdGEvc3RhdGUuYworaW5kZXggMDlkZmE3MDUuLmIwOGJmNTBiIDEwMDY0NAorLS0tIGEvcXVvdGEvc3RhdGUuYworKysrIGIvcXVvdGEvc3RhdGUuYworQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZAorIHN0YXRlX3RpbWVsaW1pdCgKKyAJRklMRQkJKmZwLAorIAl1aW50CQlmb3JtLAorLQlfX3VpbnQzMl90CXRpbWVsaW1pdCkKKysJdWludDMyX3QJdGltZWxpbWl0KQorIHsKKyAJZnByaW50ZihmcCwgXygiJXMgZ3JhY2UgdGltZTogJXNcbiIpLAorIAkJZm9ybV90b19zdHJpbmcoZm9ybSksCitkaWZmIC0tZ2l0IGEvcXVvdGEvdXRpbC5jIGIvcXVvdGEvdXRpbC5jCitpbmRleCBjYWZkNDVmNS4uMzc4NDBhODYgMTAwNjQ0CistLS0gYS9xdW90YS91dGlsLmMKKysrKyBiL3F1b3RhL3V0aWwuYworQEAgLTk0LDggKzk0LDggQEAgcm91bmRfc25wcmludGYoCisgCXNpemVfdAkJc2l6ZSwKKyAJY29uc3QgY2hhcgkqZm10X3JvdW5kLAorIAljb25zdCBjaGFyCSpmbXRfbm90X3JvdW5kLAorLQlfX3VpbnQ2NF90CXZhbHVlLAorLQlfX3VpbnQ2NF90CWRpdmlzb3IpCisrCXVpbnQ2NF90CXZhbHVlLAorKwl1aW50NjRfdAlkaXZpc29yKQorIHsKKyAJZG91YmxlCQl2ID0gKGRvdWJsZSl2YWx1ZSAvIGRpdmlzb3I7CisgCitAQCAtMTA3LDIzICsxMDcsMjMgQEAgcm91bmRfc25wcmludGYoCisgfQorIAorIC8qIEJhc2ljIGJsb2NrcyAoNTEyKSBieXRlcyBhcmUgcmV0dXJuZWQgZnJvbSBxdW90YWN0bCAqLworLSNkZWZpbmUgQkJTX1RPX0VYQUJZVEVTKGJicykJKChfX3VpbnQ2NF90KShiYnMpPj41MSkKKy0jZGVmaW5lIEJCU19UT19QRVRBQllURVMoYmJzKQkoKF9fdWludDY0X3QpKGJicyk+PjQxKQorLSNkZWZpbmUgQkJTX1RPX1RFUkFCWVRFUyhiYnMpCSgoX191aW50NjRfdCkoYmJzKT4+MzEpCistI2RlZmluZSBCQlNfVE9fR0lHQUJZVEVTKGJicykJKChfX3VpbnQ2NF90KShiYnMpPj4yMSkKKy0jZGVmaW5lIEJCU19UT19NRUdBQllURVMoYmJzKQkoKF9fdWludDY0X3QpKGJicyk+PjExKQorLSNkZWZpbmUgQkJTX1RPX0tJTE9CWVRFUyhiYnMpCSgoX191aW50NjRfdCkoYmJzKT4+MSkKKy0KKy0jZGVmaW5lIEJCRVhBQllURQkJKChfX3VpbnQ2NF90KTE8PDUxKQorLSNkZWZpbmUgQkJQRVRBQllURQkJKChfX3VpbnQ2NF90KTE8PDQxKQorLSNkZWZpbmUgQkJURVJBQllURQkJKChfX3VpbnQ2NF90KTE8PDMxKQorLSNkZWZpbmUgQkJHSUdBQllURQkJKChfX3VpbnQ2NF90KTE8PDIxKQorLSNkZWZpbmUgQkJNRUdBQllURQkJKChfX3VpbnQ2NF90KTE8PDExKQorLSNkZWZpbmUgQkJLSUxPQllURQkJKChfX3VpbnQ2NF90KTE8PCAxKQorKyNkZWZpbmUgQkJTX1RPX0VYQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+NTEpCisrI2RlZmluZSBCQlNfVE9fUEVUQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+NDEpCisrI2RlZmluZSBCQlNfVE9fVEVSQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MzEpCisrI2RlZmluZSBCQlNfVE9fR0lHQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MjEpCisrI2RlZmluZSBCQlNfVE9fTUVHQUJZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MTEpCisrI2RlZmluZSBCQlNfVE9fS0lMT0JZVEVTKGJicykJKCh1aW50NjRfdCkoYmJzKT4+MSkKKysKKysjZGVmaW5lIEJCRVhBQllURQkJKCh1aW50NjRfdCkxPDw1MSkKKysjZGVmaW5lIEJCUEVUQUJZVEUJCSgodWludDY0X3QpMTw8NDEpCisrI2RlZmluZSBCQlRFUkFCWVRFCQkoKHVpbnQ2NF90KTE8PDMxKQorKyNkZWZpbmUgQkJHSUdBQllURQkJKCh1aW50NjRfdCkxPDwyMSkKKysjZGVmaW5lIEJCTUVHQUJZVEUJCSgodWludDY0X3QpMTw8MTEpCisrI2RlZmluZSBCQktJTE9CWVRFCQkoKHVpbnQ2NF90KTE8PCAxKQorIAorIGNoYXIgKgorIGJic190b19zdHJpbmcoCistCV9fdWludDY0X3QJdiwKKysJdWludDY0X3QJdiwKKyAJY2hhcgkJKnNwLAorIAl1aW50CQlzaXplKQorIHsKK0BAIC0xNDYsMTcgKzE0NiwxNyBAQCBiYnNfdG9fc3RyaW5nKAorIAlyZXR1cm4gc3A7CisgfQorIAorLSNkZWZpbmUgVEhPVVNBTkQJCSgoX191aW50NjRfdCkxMDAwKQorLSNkZWZpbmUgTUlMTElPTgkJCSgoX191aW50NjRfdCkxMDAwKjEwMDApCistI2RlZmluZSBCSUxMSU9OCQkJKChfX3VpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKQorLSNkZWZpbmUgVFJJTExJT04JCSgoX191aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKQorLSNkZWZpbmUgR0FaSUxMSU9OCQkoKF9fdWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQorLSNkZWZpbmUgUklESUNVTE9VUwkJKChfX3VpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQorLSNkZWZpbmUgU1RPUEFMUkVBRFkJCSgoX191aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQorKyNkZWZpbmUgVEhPVVNBTkQJCSgodWludDY0X3QpMTAwMCkKKysjZGVmaW5lIE1JTExJT04JCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCkKKysjZGVmaW5lIEJJTExJT04JCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKQorKyNkZWZpbmUgVFJJTExJT04JCSgodWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCkKKysjZGVmaW5lIEdBWklMTElPTgkJKCh1aW50NjRfdCkxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDApCisrI2RlZmluZSBSSURJQ1VMT1VTCQkoKHVpbnQ2NF90KTEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKQorKyNkZWZpbmUgU1RPUEFMUkVBRFkJCSgodWludDY0X3QpMTAwMCoxMDAwKjEwMDAqMTAwMCoxMDAwKjEwMDAqMTAwMCkKKyAKKyBjaGFyICoKKyBudW1fdG9fc3RyaW5nKAorLQlfX3VpbnQ2NF90CXYsCisrCXVpbnQ2NF90CXYsCisgCWNoYXIJCSpzcCwKKyAJdWludAkJc2l6ZSkKKyB7CitAQCAtMTgzLDggKzE4Myw4IEBAIG51bV90b19zdHJpbmcoCisgCisgY2hhciAqCisgcGN0X3RvX3N0cmluZygKKy0JX191aW50NjRfdAlwb3J0aW9uLAorLQlfX3VpbnQ2NF90CXdob2xlLAorKwl1aW50NjRfdAlwb3J0aW9uLAorKwl1aW50NjRfdAl3aG9sZSwKKyAJY2hhcgkJKmJ1ZiwKKyAJdWludAkJc2l6ZSkKKyB7CitAQCAtMjM3LDcgKzIzNyw3IEBAIHR5cGVfdG9fc3RyaW5nKAorICNkZWZpbmUgSURNQVNLCQkoTklELTEpCisgCisgdHlwZWRlZiBzdHJ1Y3QgeworLQlfX3VpbnQzMl90CWlkOworKwl1aW50MzJfdAlpZDsKKyAJY2hhcgkJbmFtZVtOTUFYKzFdOworIH0gaWRjYWNoZV90OworIAorQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgaW50CQlwZW50cmllc2xlZnQgPSBOSUQ7CisgCisgc3RhdGljIGlkY2FjaGVfdCAqCisgZ2V0bmV4dHB3ZW50KAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJaW50CQlieWlkKQorIHsKKyAJc3RydWN0IHBhc3N3ZAkqcHc7CitAQCAtMjY2LDcgKzI2Niw3IEBAIGdldG5leHRwd2VudCgKKyAKKyBzdGF0aWMgaWRjYWNoZV90ICoKKyBnZXRuZXh0Z3JlbnQoCistCV9fdWludDMyX3QJaWQsCisrCXVpbnQzMl90CWlkLAorIAlpbnQJCWJ5aWQpCisgeworIAlzdHJ1Y3QgZ3JvdXAJKmdyOworQEAgLTI4MSw3ICsyODEsNyBAQCBnZXRuZXh0Z3JlbnQoCisgCisgc3RhdGljIGlkY2FjaGVfdCAqCisgZ2V0bmV4dHByZW50KAorLQlfX3VpbnQzMl90CWlkLAorKwl1aW50MzJfdAlpZCwKKyAJaW50CQlieWlkKQorIHsKKyAJZnNfcHJvamVjdF90CSpwcjsKK0BAIC0yOTYsNyArMjk2LDcgQEAgZ2V0bmV4dHByZW50KAorIAorIGNoYXIgKgorIHVpZF90b19uYW1lKAorLQlfX3VpbnQzMl90CWlkKQorKwl1aW50MzJfdAlpZCkKKyB7CisgCWlkY2FjaGVfdAkqbmNwLCAqaWRwOworIAorQEAgLTMzMyw3ICszMzMsNyBAQCB1aWRfdG9fbmFtZSgKKyAKKyBjaGFyICoKKyBnaWRfdG9fbmFtZSgKKy0JX191aW50MzJfdAlpZCkKKysJdWludDMyX3QJaWQpCisgeworIAlpZGNhY2hlX3QJKm5jcCwgKmlkcDsKKyAKK0BAIC0zNzAsNyArMzcwLDcgQEAgZ2lkX3RvX25hbWUoCisgCisgY2hhciAqCisgcHJpZF90b19uYW1lKAorLQlfX3VpbnQzMl90CWlkKQorKwl1aW50MzJfdAlpZCkKKyB7CisgCWlkY2FjaGVfdAkqbmNwLCAqaWRwOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9SRUFETUUgYi9yZXBhaXIvUkVBRE1FCitpbmRleCA3ZjE2OGU2OS4uNDY5MjQ2M2QgMTAwNjQ0CistLS0gYS9yZXBhaXIvUkVBRE1FCisrKysgYi9yZXBhaXIvUkVBRE1FCitAQCAtMTg5LDcgKzE4OSw3IEBAIEQgLSAwKSBsb29rIGF0IHVzYWdlIG9mIFhGU19NQUtFX0lQVFIoKS4gIEl0IGRvZXMgdGhlIHJpZ2h0CisgCisgCisgRCAtIDApIGxvb2sgYXQgcmVmZXJlbmNlcyB0byBYRlNfSU5PREVTX1BFUl9DSFVOSy4gIGNoYW5nZSB0aGUKKy0Jb25lcyB0aGF0IHJlYWxseSBtZWFuIHNpemVvZihfX3VpbnQ2NF90KSpOQkJZIHRvCisrCW9uZXMgdGhhdCByZWFsbHkgbWVhbiBzaXplb2YodWludDY0X3QpKk5CQlkgdG8KKyAJc29tZXRoaW5nIGVsc2UgKGxpa2UgdGhhdCBvbmx5IGRlZmluZWQgYXMgYSBjb25zdGFudAorIAlJTk9TX1BFUl9JUkVDLiB0aGlzIGlzbid0IGFzIGltcG9ydGFudCBzaW5jZQorIAlYRlNfSU5PREVTX1BFUl9DSFVOSyB3aWxsIG5ldmVyIGNoYW5nCitkaWZmIC0tZ2l0IGEvcmVwYWlyL2FnaGVhZGVyLmggYi9yZXBhaXIvYWdoZWFkZXIuaAoraW5kZXggNmIyOTc0Y2EuLjJmNzI0NmQyIDEwMDY0NAorLS0tIGEvcmVwYWlyL2FnaGVhZGVyLmgKKysrKyBiL3JlcGFpci9hZ2hlYWRlci5oCitAQCAtMjAsNyArMjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgeworIAkvKgorIAkgKiB0aGVzZSB0eXBlcyBzaG91bGQgbWF0Y2ggdGhlIHN1cGVyYmxvY2sgdHlwZXMKKyAJICovCistCV9fdWludDMyX3QJc2JfYmxvY2tzaXplOwkvKiBibG9ja3NpemUgKGJ5dGVzKSAqLworKwl1aW50MzJfdAlzYl9ibG9ja3NpemU7CS8qIGJsb2Nrc2l6ZSAoYnl0ZXMpICovCisgCXhmc19yZnNibG9ja190CXNiX2RibG9ja3M7CS8qICMgZGF0YSBibG9ja3MgKi8KKyAJeGZzX3Jmc2Jsb2NrX3QJc2JfcmJsb2NrczsJLyogIyByZWFsdGltZSBibG9ja3MgKi8KKyAJeGZzX3J0YmxvY2tfdAlzYl9yZXh0ZW50czsJLyogIyByZWFsdGltZSBleHRlbnRzICovCitAQCAtMzAsOSArMzAsOSBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgeworIAl4ZnNfYWdudW1iZXJfdAlzYl9hZ2NvdW50OwkvKiAjIG9mIGFncyAqLworIAl4ZnNfZXh0bGVuX3QJc2JfcmJtYmxvY2tzOwkvKiAjIG9mIHJ0IGJpdG1hcCBibG9ja3MgKi8KKyAJeGZzX2V4dGxlbl90CXNiX2xvZ2Jsb2NrczsJLyogIyBvZiBsb2cgYmxvY2tzICovCistCV9fdWludDE2X3QJc2Jfc2VjdHNpemU7CS8qIHZvbHVtZSBzZWN0b3Igc2l6ZSAoYnl0ZXMpICovCistCV9fdWludDE2X3QJc2JfaW5vZGVzaXplOwkvKiBpbm9kZSBzaXplIChieXRlcykgKi8KKy0JX191aW50OF90CXNiX2ltYXhfcGN0OwkvKiBtYXggJSBvZiBmcyBmb3IgaW5vZGUgc3BhY2UgKi8KKysJdWludDE2X3QJc2Jfc2VjdHNpemU7CS8qIHZvbHVtZSBzZWN0b3Igc2l6ZSAoYnl0ZXMpICovCisrCXVpbnQxNl90CXNiX2lub2Rlc2l6ZTsJLyogaW5vZGUgc2l6ZSAoYnl0ZXMpICovCisrCXVpbnQ4X3QJCXNiX2ltYXhfcGN0OwkvKiBtYXggJSBvZiBmcyBmb3IgaW5vZGUgc3BhY2UgKi8KKyAKKyAJLyoKKyAJICogdGhlc2UgZG9uJ3QgaGF2ZSB0byBtYXRjaCB0aGUgc3VwZXJibG9jayB0eXBlcyBidXQgYXJlIHBsYWNlZAorQEAgLTQ5LDEwICs0OSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBmc19nZW9tZXRyeSAgeworIAkvKgorIAkgKiBmaWVsZHMgYWZ0ZXIgdGhpcyBwb2ludCBoYXZlIHRvIGJlIGNoZWNrZWQgbWFudWFsbHkgaW4gY29tcGFyZV9zYigpCisgCSAqLworLQlfX3VpbnQ4X3QJc2Jfc2hhcmVkX3ZuOwkvKiBzaGFyZWQgdmVyc2lvbiBudW1iZXIgKi8KKysJdWludDhfdAkJc2Jfc2hhcmVkX3ZuOwkvKiBzaGFyZWQgdmVyc2lvbiBudW1iZXIgKi8KKyAJeGZzX2V4dGxlbl90CXNiX2lub2FsaWdubXQ7CS8qIGlub2RlIGNodW5rIGFsaWdubWVudCwgZnNibG9ja3MgKi8KKy0JX191aW50MzJfdAlzYl91bml0OwkvKiBzdHJpcGUgb3IgcmFpZCB1bml0ICovCistCV9fdWludDMyX3QJc2Jfd2lkdGg7CS8qIHN0cmlwZSBvciB3aWR0aCB1bml0ICovCisrCXVpbnQzMl90CXNiX3VuaXQ7CS8qIHN0cmlwZSBvciByYWlkIHVuaXQgKi8KKysJdWludDMyX3QJc2Jfd2lkdGg7CS8qIHN0cmlwZSBvciB3aWR0aCB1bml0ICovCisgCisgCS8qCisgCSAqIHRoZXNlIGRvbid0IGhhdmUgdG8gbWF0Y2gsIHRoZXkgdHJhY2sgc3VwZXJibG9jayBwcm9wZXJ0aWVzCitkaWZmIC0tZ2l0IGEvcmVwYWlyL2F0dHJfcmVwYWlyLmggYi9yZXBhaXIvYXR0cl9yZXBhaXIuaAoraW5kZXggNzAxMGU0ZmYuLjI5NGZhZDQ0IDEwMDY0NAorLS0tIGEvcmVwYWlyL2F0dHJfcmVwYWlyLmgKKysrKyBiL3JlcGFpci9hdHRyX3JlcGFpci5oCitAQCAtMzIsMTAgKzMyLDEwIEBACisgI2RlZmluZSBBQ0xfV1JJVEUJMDIKKyAjZGVmaW5lIEFDTF9FWEVDVVRFCTAxCisgCistdHlwZWRlZiBfX3VpbnQxNl90CXhmc19hY2xfcGVybV90OworLXR5cGVkZWYgX19pbnQzMl90CXhmc19hY2xfdHlwZV90OworLXR5cGVkZWYgX19pbnQzMl90CXhmc19hY2xfdGFnX3Q7CistdHlwZWRlZiBfX2ludDMyX3QJeGZzX2FjbF9pZF90OworK3R5cGVkZWYgdWludDE2X3QJeGZzX2FjbF9wZXJtX3Q7CisrdHlwZWRlZiBpbnQzMl90CQl4ZnNfYWNsX3R5cGVfdDsKKyt0eXBlZGVmIGludDMyX3QJCXhmc19hY2xfdGFnX3Q7CisrdHlwZWRlZiBpbnQzMl90CQl4ZnNfYWNsX2lkX3Q7CisgCisgLyoKKyAgKiAiaWNhY2wiID0gaW4tY29yZSBBQ0wuIFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgaW4gdGhlIFhGUyBrZXJuZWwgY29kZSwKK0BAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCB4ZnNfaWNhY2xfZW50cnkgeworIH07CisgCisgc3RydWN0IHhmc19pY2FjbCB7CistCV9faW50MzJfdAkJYWNsX2NudDsKKysJaW50MzJfdAkJCWFjbF9jbnQ7CisgCXN0cnVjdCB4ZnNfaWNhY2xfZW50cnkJYWNsX2VudHJ5WzBdOworIH07CisgCitAQCAtNTksMTQgKzU5LDE0IEBAIHN0cnVjdCB4ZnNfaWNhY2wgeworICAqLworICNkZWZpbmUgWEZTX01BQ19NQVhfU0VUUwkyNTAKKyB0eXBlZGVmIHN0cnVjdCB4ZnNfbWFjX2xhYmVsIHsKKy0JX191aW50OF90ICAgICAgIG1sX21zZW5fdHlwZTsJLyogTVNFTiBsYWJlbCB0eXBlICovCistCV9fdWludDhfdCAgICAgICBtbF9taW50X3R5cGU7CS8qIE1JTlQgbGFiZWwgdHlwZSAqLworLQlfX3VpbnQ4X3QgICAgICAgbWxfbGV2ZWw7CS8qIEhpZXJhcmNoaWNhbCBsZXZlbCAqLworLQlfX3VpbnQ4X3QgICAgICAgbWxfZ3JhZGU7CS8qIEhpZXJhcmNoaWNhbCBncmFkZSAqLworLQlfX3VpbnQxNl90ICAgICAgbWxfY2F0Y291bnQ7CS8qIENhdGVnb3J5IGNvdW50ICovCistCV9fdWludDE2X3QgICAgICBtbF9kaXZjb3VudDsJLyogRGl2aXNpb24gY291bnQgKi8KKysJdWludDhfdCAgICAgICBtbF9tc2VuX3R5cGU7CS8qIE1TRU4gbGFiZWwgdHlwZSAqLworKwl1aW50OF90ICAgICAgIG1sX21pbnRfdHlwZTsJLyogTUlOVCBsYWJlbCB0eXBlICovCisrCXVpbnQ4X3QgICAgICAgbWxfbGV2ZWw7CS8qIEhpZXJhcmNoaWNhbCBsZXZlbCAqLworKwl1aW50OF90ICAgICAgIG1sX2dyYWRlOwkvKiBIaWVyYXJjaGljYWwgZ3JhZGUgKi8KKysJdWludDE2X3QgICAgICBtbF9jYXRjb3VudDsJLyogQ2F0ZWdvcnkgY291bnQgKi8KKysJdWludDE2X3QgICAgICBtbF9kaXZjb3VudDsJLyogRGl2aXNpb24gY291bnQgKi8KKyAJCQkJCS8qIENhdGVnb3J5IHNldCwgdGhlbiBEaXZpc2lvbiBzZXQgKi8KKy0JX191aW50MTZfdCAgICAgIG1sX2xpc3RbWEZTX01BQ19NQVhfU0VUU107CisrCXVpbnQxNl90ICAgICAgbWxfbGlzdFtYRlNfTUFDX01BWF9TRVRTXTsKKyB9IHhmc19tYWNfbGFiZWxfdDsKKyAKKyAvKiBNU0VOIGxhYmVsIHR5cGUgbmFtZXMuIENob29zZSBhbiB1cHBlciBjYXNlIEFTQ0lJIGNoYXJhY3Rlci4gICovCitAQCAtOTMsNyArOTMsNyBAQCB0eXBlZGVmIHN0cnVjdCB4ZnNfbWFjX2xhYmVsIHsKKyAvKgorICAqIENhcGFiaWxpdGllcyAoSVJJWCkKKyAgKi8KKy10eXBlZGVmIF9fdWludDY0X3QgeGZzX2NhcF92YWx1ZV90OworK3R5cGVkZWYgdWludDY0X3QgeGZzX2NhcF92YWx1ZV90OworIAorIHR5cGVkZWYgc3RydWN0IHhmc19jYXBfc2V0IHsKKyAJeGZzX2NhcF92YWx1ZV90CWNhcF9lZmZlY3RpdmU7ICAvKiB1c2UgaW4gY2FwYWJpbGl0eSBjaGVja3MgKi8KK2RpZmYgLS1naXQgYS9yZXBhaXIvYXZsNjQuYyBiL3JlcGFpci9hdmw2NC5jCitpbmRleCA1MWNkNjI0Yy4uOGY0YTEyMTEgMTAwNjQ0CistLS0gYS9yZXBhaXIvYXZsNjQuYworKysrIGIvcmVwYWlyL2F2bDY0LmMKK0BAIC03MCw4ICs3MCw4IEBAIGF2bDY0X2NoZWNrdHJlZSgKKyAJYXZsNjRub2RlX3QgKnJvb3QpCisgeworIAlhdmw2NG5vZGVfdCAqbmxhc3QsICpubmV4dCwgKm5wOworLQlfX3VpbnQ2NF90IG9mZnNldCA9IDA7CistCV9fdWludDY0X3QgZW5kOworKwl1aW50NjRfdCBvZmZzZXQgPSAwOworKwl1aW50NjRfdCBlbmQ7CisgCisgCW5sYXN0ID0gbm5leHQgPSByb290OworIAorQEAgLTU4Myw4ICs1ODMsOCBAQCBhdHRhY2g6CisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmRhbnlyYW5nZSgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdCBzdGFydCwKKy0JX191aW50NjRfdCBlbmQsCisrCXVpbnQ2NF90IHN0YXJ0LAorKwl1aW50NjRfdCBlbmQsCisgCWludAljaGVja2xlbikKKyB7CisgCWF2bDY0bm9kZV90ICpucCA9IHRyZWUtPmF2bF9yb290OworQEAgLTY1NSw3ICs2NTUsNyBAQCBhdmw2NF9maW5kYW55cmFuZ2UoCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmRyYW5nZSgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdCB2YWx1ZSkKKysJdWludDY0X3QgdmFsdWUpCisgeworIAlhdmw2NG5vZGVfdCAqbnAgPSB0cmVlLT5hdmxfcm9vdDsKKyAKK0BAIC02ODIsMTAgKzY4MiwxMCBAQCBhdmw2NF9maW5kcmFuZ2UoCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmQoCisgCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCistCV9fdWludDY0X3QgdmFsdWUpCisrCXVpbnQ2NF90IHZhbHVlKQorIHsKKyAJYXZsNjRub2RlX3QgKm5wID0gdHJlZS0+YXZsX3Jvb3Q7CistCV9fdWludDY0X3QgbnZhbHVlOworKwl1aW50NjRfdCBudmFsdWU7CisgCisgCXdoaWxlIChucCkgeworIAkJbnZhbHVlID0gQVZMX1NUQVJUKHRyZWUsIG5wKTsKK0BAIC05MDksOCArOTA5LDggQEAgc3RhdGljCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2luc2VydF9maW5kX2dyb3d0aCgKKyAJCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCistCQlfX3VpbnQ2NF90IHN0YXJ0LAkvKiByYW5nZSBzdGFydCBhdCBzdGFydCwgKi8KKy0JCV9fdWludDY0X3QgZW5kLAkvKiBleGNsdXNpdmUgKi8KKysJCXVpbnQ2NF90IHN0YXJ0LAkvKiByYW5nZSBzdGFydCBhdCBzdGFydCwgKi8KKysJCXVpbnQ2NF90IGVuZCwJLyogZXhjbHVzaXZlICovCisgCQlpbnQgICAqZ3Jvd3RocCkJLyogT1VUICovCisgeworIAlhdmw2NG5vZGVfdCAqcm9vdCA9IHRyZWUtPmF2bF9yb290OworQEAgLTk2Myw3ICs5NjMsNyBAQCBhdmw2NF9pbnNlcnRfZ3JvdygKKyAJaW50IGdyb3d0aCkKKyB7CisgCWF2bDY0bm9kZV90ICpubmV4dDsKKy0JX191aW50NjRfdCBzdGFydCA9IEFWTF9TVEFSVCh0cmVlLCBuZXdub2RlKTsKKysJdWludDY0X3Qgc3RhcnQgPSBBVkxfU1RBUlQodHJlZSwgbmV3bm9kZSk7CisgCisgCWlmIChncm93dGggPT0gQVZMX0JBQ0spIHsKKyAKK0BAIC0xMDA1LDggKzEwMDUsOCBAQCBhdmw2NF9pbnNlcnQoCisgCWF2bDY0bm9kZV90ICpuZXdub2RlKQorIHsKKyAJYXZsNjRub2RlX3QgKm5wOworLQlfX3VpbnQ2NF90IHN0YXJ0ID0gQVZMX1NUQVJUKHRyZWUsIG5ld25vZGUpOworLQlfX3VpbnQ2NF90IGVuZCA9IEFWTF9FTkQodHJlZSwgbmV3bm9kZSk7CisrCXVpbnQ2NF90IHN0YXJ0ID0gQVZMX1NUQVJUKHRyZWUsIG5ld25vZGUpOworKwl1aW50NjRfdCBlbmQgPSBBVkxfRU5EKHRyZWUsIG5ld25vZGUpOworIAlpbnQgZ3Jvd3RoOworIAorIAlBU1NFUlQobmV3bm9kZSk7CitAQCAtMTE1OSwxNiArMTE1OSwxNiBAQCBhdmw2NG9wc190IGF2bF9kZWJ1Z19vcHMgPSB7CisgCWF2bF9kZWJ1Z19lbmQsCisgfQorIAorLXN0YXRpYyBfX3VpbnQ2NF90Cisrc3RhdGljIHVpbnQ2NF90CisgYXZsNjRfZGVidWdfc3RhcnQoYXZsNjRub2RlX3QgKm5vZGUpCisgeworLQlyZXR1cm4gKF9fdWludDY0X3QpKHN0cnVjdCBhdmxfZGVidWdfbm9kZSAqKW5vZGUtPmF2bF9zdGFydDsKKysJcmV0dXJuICh1aW50NjRfdCkoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3N0YXJ0OworIH0KKyAKKy1zdGF0aWMgX191aW50NjRfdAorK3N0YXRpYyB1aW50NjRfdAorIGF2bDY0X2RlYnVnX2VuZChhdmw2NG5vZGVfdCAqbm9kZSkKKyB7CistCXJldHVybiAoX191aW50NjRfdCkKKysJcmV0dXJuICh1aW50NjRfdCkKKyAJCSgoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3N0YXJ0ICsKKyAJCSAoc3RydWN0IGF2bF9kZWJ1Z19ub2RlICopbm9kZS0+YXZsX3NpemUpOworIH0KK0BAIC0xMzA0LDcgKzEzMDQsNyBAQCBtYWluKCkKKyBhdmw2NG5vZGVfdCAqCisgYXZsNjRfZmluZGFkamFjZW50KAorIAlhdmw2NHRyZWVfZGVzY190ICp0cmVlLAorLQlfX3VpbnQ2NF90IHZhbHVlLAorKwl1aW50NjRfdCB2YWx1ZSwKKyAJaW50CQlkaXIpCisgeworIAlhdmw2NG5vZGVfdCAqbnAgPSB0cmVlLT5hdmxfcm9vdDsKK0BAIC0xMzc4LDggKzEzNzgsOCBAQCBhdmw2NF9maW5kYWRqYWNlbnQoCisgdm9pZAorIGF2bDY0X2ZpbmRyYW5nZXMoCisgCWF2bDY0dHJlZV9kZXNjX3QgKnRyZWUsCistCV9fdWludDY0X3Qgc3RhcnQsCistCV9fdWludDY0X3QgZW5kLAorKwl1aW50NjRfdCBzdGFydCwKKysJdWludDY0X3QgZW5kLAorIAlhdmw2NG5vZGVfdAkgICAgICAgICoqc3RhcnRwLAorIAlhdmw2NG5vZGVfdAkJKiplbmRwKQorIHsKK2RpZmYgLS1naXQgYS9yZXBhaXIvYXZsNjQuaCBiL3JlcGFpci9hdmw2NC5oCitpbmRleCBmZDE5MzIxOC4uY2QwNzlhMDAgMTAwNjQ0CistLS0gYS9yZXBhaXIvYXZsNjQuaAorKysrIGIvcmVwYWlyL2F2bDY0LmgKK0BAIC0zMiw4ICszMiw4IEBAIHR5cGVkZWYgc3RydWN0CWF2bDY0bm9kZSB7CisgICogYXZsLXRyZWUgb3BlcmF0aW9ucworICAqLworIHR5cGVkZWYgc3RydWN0IGF2bDY0b3BzIHsKKy0JX191aW50NjRfdAkoKmF2bF9zdGFydCkoYXZsNjRub2RlX3QgKik7CistCV9fdWludDY0X3QJKCphdmxfZW5kKShhdmw2NG5vZGVfdCAqKTsKKysJdWludDY0X3QJKCphdmxfc3RhcnQpKGF2bDY0bm9kZV90ICopOworKwl1aW50NjRfdAkoKmF2bF9lbmQpKGF2bDY0bm9kZV90ICopOworIH0gYXZsNjRvcHNfdDsKKyAKKyAvKgorQEAgLTg5LDMyICs4OSwzMiBAQCBhdmw2NF9pbml0X3RyZWUoCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmRyYW5nZSgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdCB2YWx1ZSk7CisrCXVpbnQ2NF90IHZhbHVlKTsKKyAKKyBhdmw2NG5vZGVfdCAqCisgYXZsNjRfZmluZCgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdCB2YWx1ZSk7CisrCXVpbnQ2NF90IHZhbHVlKTsKKyAKKyBhdmw2NG5vZGVfdCAqCisgYXZsNjRfZmluZGFueXJhbmdlKAorIAlhdmw2NHRyZWVfZGVzY190ICp0cmVlLAorLQlfX3VpbnQ2NF90CXN0YXJ0LAorLQlfX3VpbnQ2NF90CWVuZCwKKysJdWludDY0X3QJc3RhcnQsCisrCXVpbnQ2NF90CWVuZCwKKyAJaW50ICAgICBjaGVja2xlbik7CisgCisgCisgYXZsNjRub2RlX3QgKgorIGF2bDY0X2ZpbmRhZGphY2VudCgKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdAl2YWx1ZSwKKysJdWludDY0X3QJdmFsdWUsCisgCWludAkJZGlyKTsKKyAKKyB2b2lkCisgYXZsNjRfZmluZHJhbmdlcygKKyAJYXZsNjR0cmVlX2Rlc2NfdCAqdHJlZSwKKy0JX191aW50NjRfdAlzdGFydCwKKy0JX191aW50NjRfdAllbmQsCisrCXVpbnQ2NF90CXN0YXJ0LAorKwl1aW50NjRfdAllbmQsCisgCWF2bDY0bm9kZV90CSAgICAgICAgKipzdGFydHAsCisgCWF2bDY0bm9kZV90CQkqKmVuZHApOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9kaW5vZGUuYyBiL3JlcGFpci9kaW5vZGUuYworaW5kZXggZDY2NGY4N2EuLmRhODcyMTc4IDEwMDY0NAorLS0tIGEvcmVwYWlyL2Rpbm9kZS5jCisrKysgYi9yZXBhaXIvZGlub2RlLmMKK0BAIC03NDYsNyArNzQ2LDcgQEAgXygiJXMgZm9yayBpbiBpbm8gJSIgUFJJdTY0ICIgY2xhaW1zIGR1cCBleHRlbnQsICIKKyAJCQljYXNlIFhSX0VfRlJFRTE6CisgCQkJCWRvX3dhcm4oCisgXygiJXMgZm9yayBpbiBpbm8gJSIgUFJJdTY0ICIgY2xhaW1zIGZyZWUgYmxvY2sgJSIgUFJJdTY0ICJcbiIpLAorLQkJCQkJZm9ya25hbWUsIGlubywgKF9fdWludDY0X3QpIGIpOworKwkJCQkJZm9ya25hbWUsIGlubywgKHVpbnQ2NF90KSBiKTsKKyAJCQkJLyogZmFsbCB0aHJvdWdoIC4uLiAqLworIAkJCWNhc2UgWFJfRV9JTlVTRTE6CS8qIHNlZW4gYnkgcm1hcCAqLworIAkJCWNhc2UgWFJfRV9VTktOT1dOOgorQEAgLTkyMyw3ICs5MjMsNyBAQCBwcm9jZXNzX2J0aW5vZGUoCisgCWludAkJCXR5cGUsCisgCWludAkJCSpkaXJ0eSwKKyAJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCistCV9fdWludDY0X3QJCSpuZXgsCisrCXVpbnQ2NF90CQkqbmV4LAorIAlibGttYXBfdAkJKipibGttYXBwLAorIAlpbnQJCQl3aGljaGZvcmssCisgCWludAkJCWNoZWNrX2R1cHMpCitAQCAtOTM5LDcgKzkzOSw3IEBAIHByb2Nlc3NfYnRpbm9kZSgKKyAJaW50CQkJbGV2ZWw7CisgCWludAkJCW51bXJlY3M7CisgCWJtYXBfY3Vyc29yX3QJCWN1cnNvcjsKKy0JX191aW50NjRfdAkJbWFnaWM7CisrCXVpbnQ2NF90CQltYWdpYzsKKyAKKyAJZGliID0gKHhmc19ibWRyX2Jsb2NrX3QgKilYRlNfREZPUktfUFRSKGRpcCwgd2hpY2hmb3JrKTsKKyAJbGlubyA9IFhGU19BR0lOT19UT19JTk8obXAsIGFnbm8sIGlubyk7CitAQCAtMTA5OCw3ICsxMDk4LDcgQEAgcHJvY2Vzc19leGlub2RlKAorIAlpbnQJCQl0eXBlLAorIAlpbnQJCQkqZGlydHksCisgCXhmc19yZnNibG9ja190CQkqdG90LAorLQlfX3VpbnQ2NF90CQkqbmV4LAorKwl1aW50NjRfdAkJKm5leCwKKyAJYmxrbWFwX3QJCSoqYmxrbWFwcCwKKyAJaW50CQkJd2hpY2hmb3JrLAorIAlpbnQJCQljaGVja19kdXBzKQorQEAgLTEyMDAsMTQgKzEyMDAsMTQgQEAgcHJvY2Vzc19zeW1saW5rX2V4dGxpc3QoeGZzX21vdW50X3QgKm1wLCB4ZnNfaW5vX3QgbGlubywgeGZzX2Rpbm9kZV90ICpkaW5vKQorIAkJZG9fd2FybigKKyBfKCJtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCAoJWQpIGFuZCBzaXplICglIiBQUklkNjQgIikgaW4gc3ltbGluayBpbm8gJSIgUFJJdTY0ICJcbiIpLAorIAkJCWRpbm8tPmRpX2Zvcm1hdCwKKy0JCQkoX19pbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpLCBsaW5vKTsKKysJCQkoaW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSwgbGlubyk7CisgCQlyZXR1cm4gMTsKKyAJfQorIAlpZiAoZGluby0+ZGlfZm9ybWF0ID09IFhGU19ESU5PREVfRk1UX0xPQ0FMKSB7CisgCQlkb193YXJuKAorIF8oIm1pc21hdGNoIGJldHdlZW4gZm9ybWF0ICglZCkgYW5kIHNpemUgKCUiIFBSSWQ2NCAiKSBpbiBzeW1saW5rIGlub2RlICUiIFBSSXU2NCAiXG4iKSwKKyAJCQlkaW5vLT5kaV9mb3JtYXQsCistCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSwgbGlubyk7CisrCQkJKGludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSksIGxpbm8pOworIAkJcmV0dXJuIDE7CisgCX0KKyAKK0BAIC0xNDU0LDIyICsxNDU0LDIyIEBAIF8oImlub2RlICUiIFBSSXU2NCAiIGhhcyBiYWQgaW5vZGUgdHlwZSAoSUZNTlQpXG4iKSwgbGlubyk7CisgCQljYXNlIFhSX0lOT19DSFJERVY6CisgCQkJZG9fd2FybigKKyBfKCJzaXplIG9mIGNoYXJhY3RlciBkZXZpY2UgaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKKy0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7CisrCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKKyAJCQlicmVhazsKKyAJCWNhc2UgWFJfSU5PX0JMS0RFVjoKKyAJCQlkb193YXJuKAorIF8oInNpemUgb2YgYmxvY2sgZGV2aWNlIGlub2RlICUiIFBSSXU2NCAiICE9IDAgKCUiIFBSSWQ2NCAiIGJ5dGVzKVxuIiksIGxpbm8sCistCQkJCShfX2ludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSkpOworKwkJCQkoaW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7CisgCQkJYnJlYWs7CisgCQljYXNlIFhSX0lOT19TT0NLOgorIAkJCWRvX3dhcm4oCisgXygic2l6ZSBvZiBzb2NrZXQgaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKKy0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7CisrCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKKyAJCQlicmVhazsKKyAJCWNhc2UgWFJfSU5PX0ZJRk86CisgCQkJZG9fd2FybigKKyBfKCJzaXplIG9mIGZpZm8gaW5vZGUgJSIgUFJJdTY0ICIgIT0gMCAoJSIgUFJJZDY0ICIgYnl0ZXMpXG4iKSwgbGlubywKKy0JCQkJKF9faW50NjRfdCliZTY0X3RvX2NwdShkaW5vLT5kaV9zaXplKSk7CisrCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpKTsKKyAJCQlicmVhazsKKyAJCWRlZmF1bHQ6CisgCQkJZG9fd2FybihfKCJJbnRlcm5hbCBlcnJvciAtIHByb2Nlc3NfbWlzY19pbm9fdHlwZXMsICIKK0BAIC0xNzQzLDEyICsxNzQzLDEyIEBAIF8oImZvdW5kIGlub2RlICUiIFBSSXU2NCAiIGNsYWltaW5nIHRvIGJlIGEgcmVhbC10aW1lIGZpbGVcbiIpLCBsaW5vKTsKKyAJCWJyZWFrOworIAorIAljYXNlIFhSX0lOT19SVEJJVE1BUDoKKy0JCWlmIChzaXplICE9IChfX2ludDY0X3QpbXAtPm1fc2Iuc2JfcmJtYmxvY2tzICoKKysJCWlmIChzaXplICE9IChpbnQ2NF90KW1wLT5tX3NiLnNiX3JibWJsb2NrcyAqCisgCQkJCQltcC0+bV9zYi5zYl9ibG9ja3NpemUpIHsKKyAJCQlkb193YXJuKAorIF8oInJlYWx0aW1lIGJpdG1hcCBpbm9kZSAlIiBQUkl1NjQgIiBoYXMgYmFkIHNpemUgJSIgUFJJZDY0ICIgKHNob3VsZCBiZSAlIiBQUkl1NjQgIilcbiIpLAorIAkJCQlsaW5vLCBzaXplLAorLQkJCQkoX19pbnQ2NF90KSBtcC0+bV9zYi5zYl9yYm1ibG9ja3MgKgorKwkJCQkoaW50NjRfdCkgbXAtPm1fc2Iuc2JfcmJtYmxvY2tzICoKKyAJCQkJCW1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZSk7CisgCQkJcmV0dXJuIDE7CisgCQl9CitAQCAtMTgxNyw4ICsxODE3LDggQEAgc3RhdGljIGludAorIHByb2Nlc3NfaW5vZGVfYmxvY2tzX2FuZF9leHRlbnRzKAorIAl4ZnNfZGlub2RlX3QJKmRpbm8sCisgCXhmc19yZnNibG9ja190CW5ibG9ja3MsCistCV9fdWludDY0X3QJbmV4dGVudHMsCistCV9fdWludDY0X3QJYW5leHRlbnRzLAorKwl1aW50NjRfdAluZXh0ZW50cywKKysJdWludDY0X3QJYW5leHRlbnRzLAorIAl4ZnNfaW5vX3QJbGlubywKKyAJaW50CQkqZGlydHkpCisgeworQEAgLTE5MDgsNyArMTkwOCw3IEBAIHByb2Nlc3NfaW5vZGVfZGF0YV9mb3JrKAorIAlpbnQJCXR5cGUsCisgCWludAkJKmRpcnR5LAorIAl4ZnNfcmZzYmxvY2tfdAkqdG90YmxvY2tzLAorLQlfX3VpbnQ2NF90CSpuZXh0ZW50cywKKysJdWludDY0X3QJKm5leHRlbnRzLAorIAlibGttYXBfdAkqKmRibGttYXAsCisgCWludAkJY2hlY2tfZHVwcykKKyB7CitAQCAtMjAxNyw3ICsyMDE3LDcgQEAgcHJvY2Vzc19pbm9kZV9hdHRyX2ZvcmsoCisgCWludAkJdHlwZSwKKyAJaW50CQkqZGlydHksCisgCXhmc19yZnNibG9ja190CSphdG90YmxvY2tzLAorLQlfX3VpbnQ2NF90CSphbmV4dGVudHMsCisrCXVpbnQ2NF90CSphbmV4dGVudHMsCisgCWludAkJY2hlY2tfZHVwcywKKyAJaW50CQlleHRyYV9hdHRyX2NoZWNrLAorIAlpbnQJCSpyZXR2YWwpCitAQCAtMjIyOCw4ICsyMjI4LDggQEAgcHJvY2Vzc19kaW5vZGVfaW50KHhmc19tb3VudF90ICptcCwKKyAJaW50CQkJZGlfbW9kZTsKKyAJaW50CQkJdHlwZTsKKyAJaW50CQkJcmV0dmFsID0gMDsKKy0JX191aW50NjRfdAkJbmV4dGVudHM7CistCV9fdWludDY0X3QJCWFuZXh0ZW50czsKKysJdWludDY0X3QJCW5leHRlbnRzOworKwl1aW50NjRfdAkJYW5leHRlbnRzOworIAl4ZnNfaW5vX3QJCWxpbm87CisgCWNvbnN0IGludAkJaXNfZnJlZSA9IDA7CisgCWNvbnN0IGludAkJaXNfdXNlZCA9IDE7CitAQCAtMjM0Niw3ICsyMzQ2LDcgQEAgXygiaW5vZGUgaWRlbnRpZmllciAlbGx1IG1pc21hdGNoIG9uIGlub2RlICUiIFBSSXU2NCAiXG4iKSwKKyAJCWlmICghdW5jZXJ0YWluKQorIAkJCWRvX3dhcm4oCisgXygiYmFkIChuZWdhdGl2ZSkgc2l6ZSAlIiBQUklkNjQgIiBvbiBpbm9kZSAlIiBQUkl1NjQgIlxuIiksCistCQkJCShfX2ludDY0X3QpYmU2NF90b19jcHUoZGluby0+ZGlfc2l6ZSksCisrCQkJCShpbnQ2NF90KWJlNjRfdG9fY3B1KGRpbm8tPmRpX3NpemUpLAorIAkJCQlsaW5vKTsKKyAJCWlmICh2ZXJpZnlfbW9kZSkKKyAJCQlyZXR1cm4gMTsKK2RpZmYgLS1naXQgYS9yZXBhaXIvZGlub2RlLmggYi9yZXBhaXIvZGlub2RlLmgKK2luZGV4IDYxZDA3MzYzLi4zOWQ2YTcyZiAxMDA2NDQKKy0tLSBhL3JlcGFpci9kaW5vZGUuaAorKysrIGIvcmVwYWlyL2Rpbm9kZS5oCitAQCAtNDYsOCArNDYsOCBAQCBwcm9jZXNzX2JtYnRfcmVjbGlzdCh4ZnNfbW91bnRfdAkqbXAsCisgCQl4ZnNfaW5vX3QJCWlubywKKyAJCXhmc19yZnNibG9ja190CQkqdG90LAorIAkJc3RydWN0IGJsa21hcAkJKipibGttYXBwLAorLQkJX191aW50NjRfdAkJKmZpcnN0X2tleSwKKy0JCV9fdWludDY0X3QJCSpsYXN0X2tleSwKKysJCXVpbnQ2NF90CQkqZmlyc3Rfa2V5LAorKwkJdWludDY0X3QJCSpsYXN0X2tleSwKKyAJCWludAkJCXdoaWNoZm9yayk7CisgCisgaW50CitkaWZmIC0tZ2l0IGEvcmVwYWlyL2RpcjIuYyBiL3JlcGFpci9kaXIyLmMKK2luZGV4IGU2NDE1ZTQ5Li43M2RmZjkwMiAxMDA2NDQKKy0tLSBhL3JlcGFpci9kaXIyLmMKKysrKyBiL3JlcGFpci9kaXIyLmMKK0BAIC0xNjAsNyArMTYwLDcgQEAgcHJvY2Vzc19zZl9kaXIyKAorIAlpbnQJCQliYWRfc2ZuYW1lbGVuOworIAlpbnQJCQlpOworIAlpbnQJCQlpODsKKy0JX19pbnQ2NF90CQlpbm9fZGlyX3NpemU7CisrCWludDY0X3QJCQlpbm9fZGlyX3NpemU7CisgCWludAkJCWlub19vZmY7CisgCWlub190cmVlX25vZGVfdAkJKmlyZWNfcDsKKyAJaW50CQkJanVua2l0OworZGlmZiAtLWdpdCBhL3JlcGFpci9nbG9iYWxzLmggYi9yZXBhaXIvZ2xvYmFscy5oCitpbmRleCA0MDg1Y2NjNC4uYzdiYmU2ZjEgMTAwNjQ0CistLS0gYS9yZXBhaXIvZ2xvYmFscy5oCisrKysgYi9yZXBhaXIvZ2xvYmFscy5oCitAQCAtMTQxLDcgKzE0MSw3IEBAIEVYVEVSTiBpbnQJCWlub2Rlc19wZXJfY2x1c3RlcjsKKyBFWFRFUk4gdW5zaWduZWQgaW50CWdsb2JfYWdjb3VudDsKKyBFWFRFUk4gaW50CQljaHVua3NfcGJsb2NrOwkvKiAjIG9mIDY0LWlubyBjaHVua3MgcGVyIGFsbG9jYXRpb24gKi8KKyBFWFRFUk4gaW50CQltYXhfc3ltbGlua19ibG9ja3M7CistRVhURVJOIF9faW50NjRfdAlmc19tYXhfZmlsZV9vZmZzZXQ7CisrRVhURVJOIGludDY0X3QJCWZzX21heF9maWxlX29mZnNldDsKKyAKKyAvKiByZWFsdGltZSBpbmZvICovCisgCitAQCAtMTYxLDI0ICsxNjEsMjQgQEAgRVhURVJOIGludAkJZnVsbF9pbm9fZXhfZGF0YTsvKgorIAorIC8qIHN1cGVyYmxvY2sgY291bnRlcnMgKi8KKyAKKy1FWFRFUk4gX191aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCAobWFkZSkgaW5vZGVzICovCistRVhURVJOIF9fdWludDY0X3QJc2JfaWZyZWU7CS8qIGZyZWUgaW5vZGVzICovCistRVhURVJOIF9fdWludDY0X3QJc2JfZmRibG9ja3M7CS8qIGZyZWUgZGF0YSBibG9ja3MgKi8KKy1FWFRFUk4gX191aW50NjRfdAlzYl9mcmV4dGVudHM7CS8qIGZyZWUgcmVhbHRpbWUgZXh0ZW50cyAqLworK0VYVEVSTiB1aW50NjRfdAlzYl9pY291bnQ7CS8qIGFsbG9jYXRlZCAobWFkZSkgaW5vZGVzICovCisrRVhURVJOIHVpbnQ2NF90CXNiX2lmcmVlOwkvKiBmcmVlIGlub2RlcyAqLworK0VYVEVSTiB1aW50NjRfdAlzYl9mZGJsb2NrczsJLyogZnJlZSBkYXRhIGJsb2NrcyAqLworK0VYVEVSTiB1aW50NjRfdAlzYl9mcmV4dGVudHM7CS8qIGZyZWUgcmVhbHRpbWUgZXh0ZW50cyAqLworIAorIC8qIHN1cGVyYmxvY2sgZ2VvbWV0cnkgaW5mbyAqLworIAorIEVYVEVSTiB4ZnNfZXh0bGVuX3QJc2JfaW5vYWxpZ25tdDsKKy1FWFRFUk4gX191aW50MzJfdAlzYl91bml0OworLUVYVEVSTiBfX3VpbnQzMl90CXNiX3dpZHRoOworK0VYVEVSTiB1aW50MzJfdAlzYl91bml0OworK0VYVEVSTiB1aW50MzJfdAlzYl93aWR0aDsKKyAKKyBzdHJ1Y3QgYWdsb2NrIHsKKyAJcHRocmVhZF9tdXRleF90CWxvY2sgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSk7CisgfTsKKyBFWFRFUk4gc3RydWN0IGFnbG9jawkqYWdfbG9ja3M7CisgCistRVhURVJOIGludCAJCXJlcG9ydF9pbnRlcnZhbDsKKy1FWFRFUk4gX191aW50NjRfdCAJKnByb2dfcnB0X2RvbmU7CisrRVhURVJOIGludAkJcmVwb3J0X2ludGVydmFsOworK0VYVEVSTiB1aW50NjRfdAkJKnByb2dfcnB0X2RvbmU7CisgCisgRVhURVJOIGludAkJYWdfc3RyaWRlOworIEVYVEVSTiBpbnQJCXRocmVhZF9jb3VudDsKK2RpZmYgLS1naXQgYS9yZXBhaXIvaW5jb3JlLmMgYi9yZXBhaXIvaW5jb3JlLmMKK2luZGV4IGNiNTczMTY1Li5hOTE5MWFlMiAxMDA2NDQKKy0tLSBhL3JlcGFpci9pbmNvcmUuYworKysrIGIvcmVwYWlyL2luY29yZS5jCitAQCAtMTc5LDcgKzE3OSw3IEBAIGdldF9ibWFwX2V4dCgKKyBzdGF0aWMgdWludDY0X3QJCSpydF9ibWFwOworIHN0YXRpYyBzaXplX3QJCXJ0X2JtYXBfc2l6ZTsKKyAKKy0vKiBibG9jayByZWNvcmRzIGZpdCBpbnRvIF9fdWludDY0X3QncyB1bml0cyAqLworKy8qIGJsb2NrIHJlY29yZHMgZml0IGludG8gdWludDY0X3QncyB1bml0cyAqLworICNkZWZpbmUgWFJfQkJfVU5JVAk2NAkJCS8qIG51bWJlciBvZiBiaXRzL3VuaXQgKi8KKyAjZGVmaW5lIFhSX0JCCQk0CQkJLyogYml0cyBwZXIgYmxvY2sgcmVjb3JkICovCisgI2RlZmluZSBYUl9CQl9OVU0JKFhSX0JCX1VOSVQvWFJfQkIpCS8qIG51bWJlciBvZiByZWNvcmRzIHBlciB1bml0ICovCitAQCAtMjAzLDggKzIwMyw4IEBAIHNldF9ydGJtYXAoCisgeworIAkqKHJ0X2JtYXAgKyBibm8gLyBYUl9CQl9OVU0pID0KKyAJICgoKihydF9ibWFwICsgYm5vIC8gWFJfQkJfTlVNKSAmCistCSAgKH4oKF9fdWludDY0X3QpIFhSX0JCX01BU0sgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSkpIHwKKy0JICgoKF9fdWludDY0X3QpIHN0YXRlKSA8PCAoKGJubyAlIFhSX0JCX05VTSkgKiBYUl9CQikpKTsKKysJICAofigodWludDY0X3QpIFhSX0JCX01BU0sgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSkpIHwKKysJICgoKHVpbnQ2NF90KSBzdGF0ZSkgPDwgKChibm8gJSBYUl9CQl9OVU0pICogWFJfQkIpKSk7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtMjIyLDkgKzIyMiw5IEBAIGluaXRfcnRfYm1hcCgKKyAJCXJldHVybjsKKyAKKyAJcnRfYm1hcF9zaXplID0gcm91bmR1cChtcC0+bV9zYi5zYl9yZXh0ZW50cyAvIChOQkJZIC8gWFJfQkIpLAorLQkJCSAgICAgICBzaXplb2YoX191aW50NjRfdCkpOworKwkJCSAgICAgICBzaXplb2YodWludDY0X3QpKTsKKyAKKy0JcnRfYm1hcCA9IG1lbWFsaWduKHNpemVvZihfX3VpbnQ2NF90KSwgcnRfYm1hcF9zaXplKTsKKysJcnRfYm1hcCA9IG1lbWFsaWduKHNpemVvZih1aW50NjRfdCksIHJ0X2JtYXBfc2l6ZSk7CisgCWlmICghcnRfYm1hcCkgeworIAkJZG9fZXJyb3IoCisgCV8oImNvdWxkbid0IGFsbG9jYXRlIHJlYWx0aW1lIGJsb2NrIG1hcCwgc2l6ZSA9ICUiIFBSSXU2NCAiXG4iKSwKK2RpZmYgLS1naXQgYS9yZXBhaXIvaW5jb3JlLmggYi9yZXBhaXIvaW5jb3JlLmgKK2luZGV4IGMyM2EzYTNjLi5mZDY2MDg0ZiAxMDA2NDQKKy0tLSBhL3JlcGFpci9pbmNvcmUuaAorKysrIGIvcmVwYWlyL2luY29yZS5oCitAQCAtMjU3LDcgKzI1Nyw3IEBAIHR5cGVkZWYgeGZzX2lub190IHBhcmVudF9lbnRyeV90OworIHN0cnVjdCBubGlua19vcHM7CisgCisgdHlwZWRlZiBzdHJ1Y3QgcGFyZW50X2xpc3QgIHsKKy0JX191aW50NjRfdAkJcG1hc2s7CisrCXVpbnQ2NF90CQlwbWFzazsKKyAJcGFyZW50X2VudHJ5X3QJCSpwZW50cmllczsKKyAjaWZkZWYgREVCVUcKKyAJc2hvcnQJCQljbnQ7CitAQCAtMjY1LDE0ICsyNjUsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgcGFyZW50X2xpc3QgIHsKKyB9IHBhcmVudF9saXN0X3Q7CisgCisgdW5pb24gaW5vX25saW5rIHsKKy0JX191aW50OF90CSp1bjg7CistCV9fdWludDE2X3QJKnVuMTY7CistCV9fdWludDMyX3QJKnVuMzI7CisrCXVpbnQ4X3QJCSp1bjg7CisrCXVpbnQxNl90CSp1bjE2OworKwl1aW50MzJfdAkqdW4zMjsKKyB9OworIAorIHR5cGVkZWYgc3RydWN0IGlub19leF9kYXRhICB7CistCV9fdWludDY0X3QJCWlub19yZWFjaGVkOwkvKiBiaXQgPT0gMSBpZiByZWFjaGVkICovCistCV9fdWludDY0X3QJCWlub19wcm9jZXNzZWQ7CS8qIHJlZmVyZW5jZSBjaGVja2VkIGJpdCBtYXNrICovCisrCXVpbnQ2NF90CQlpbm9fcmVhY2hlZDsJLyogYml0ID09IDEgaWYgcmVhY2hlZCAqLworKwl1aW50NjRfdAkJaW5vX3Byb2Nlc3NlZDsJLyogcmVmZXJlbmNlIGNoZWNrZWQgYml0IG1hc2sgKi8KKyAJcGFyZW50X2xpc3RfdAkJKnBhcmVudHM7CisgCXVuaW9uIGlub19ubGluawkJY291bnRlZF9ubGlua3M7LyogY291bnRlZCBubGlua3MgaW4gUDYgKi8KKyB9IGlub19leF9kYXRhX3Q7CitAQCAtMjgxLDIyICsyODEsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAgeworIAlhdmxub2RlX3QJCWF2bF9ub2RlOworIAl4ZnNfYWdpbm9fdAkJaW5vX3N0YXJ0bnVtOwkvKiBzdGFydGluZyBpbm9kZSAjICovCisgCXhmc19pbm9mcmVlX3QJCWlyX2ZyZWU7CS8qIGlub2RlIGZyZWUgYml0IG1hc2sgKi8KKy0JX191aW50NjRfdAkJaXJfc3BhcnNlOwkvKiBzcGFyc2UgaW5vZGUgYml0bWFzayAqLworLQlfX3VpbnQ2NF90CQlpbm9fY29uZmlybWVkOwkvKiBjb25maXJtZWQgYml0bWFzayAqLworLQlfX3VpbnQ2NF90CQlpbm9faXNhX2RpcjsJLyogYml0ID09IDEgaWYgYSBkaXJlY3RvcnkgKi8KKy0JX191aW50NjRfdAkJaW5vX3dhc19ybDsJLyogYml0ID09IDEgaWYgcmVmbGluayBmbGFnIHNldCAqLworLQlfX3VpbnQ2NF90CQlpbm9faXNfcmw7CS8qIGJpdCA9PSAxIGlmIHJlZmxpbmsgZmxhZyBzaG91bGQgYmUgc2V0ICovCistCV9fdWludDhfdAkJbmxpbmtfc2l6ZTsKKysJdWludDY0X3QJCWlyX3NwYXJzZTsJLyogc3BhcnNlIGlub2RlIGJpdG1hc2sgKi8KKysJdWludDY0X3QJCWlub19jb25maXJtZWQ7CS8qIGNvbmZpcm1lZCBiaXRtYXNrICovCisrCXVpbnQ2NF90CQlpbm9faXNhX2RpcjsJLyogYml0ID09IDEgaWYgYSBkaXJlY3RvcnkgKi8KKysJdWludDY0X3QJCWlub193YXNfcmw7CS8qIGJpdCA9PSAxIGlmIHJlZmxpbmsgZmxhZyBzZXQgKi8KKysJdWludDY0X3QJCWlub19pc19ybDsJLyogYml0ID09IDEgaWYgcmVmbGluayBmbGFnIHNob3VsZCBiZSBzZXQgKi8KKysJdWludDhfdAkJCW5saW5rX3NpemU7CisgCXVuaW9uIGlub19ubGluawkJZGlza19ubGlua3M7CS8qIG9uLWRpc2sgbmxpbmtzLCBzZXQgaW4gUDMgKi8KKyAJdW5pb24gIHsKKyAJCWlub19leF9kYXRhX3QJKmV4X2RhdGE7CS8qIHBoYXNlcyA2LDcgKi8KKyAJCXBhcmVudF9saXN0X3QJKnBsaXN0OwkJLyogcGhhc2VzIDItNSAqLworIAl9IGlub191bjsKKy0JX191aW50OF90CQkqZnR5cGVzOwkvKiBwaGFzZXMgMyw2ICovCisrCXVpbnQ4X3QJCQkqZnR5cGVzOwkvKiBwaGFzZXMgMyw2ICovCisgfSBpbm9fdHJlZV9ub2RlX3Q7CisgCistI2RlZmluZSBJTk9TX1BFUl9JUkVDCShzaXplb2YoX191aW50NjRfdCkgKiBOQkJZKQorLSNkZWZpbmUJSVJFQ19NQVNLKGkpCSgoX191aW50NjRfdCkxIDw8IChpKSkKKysjZGVmaW5lIElOT1NfUEVSX0lSRUMJKHNpemVvZih1aW50NjRfdCkgKiBOQkJZKQorKyNkZWZpbmUJSVJFQ19NQVNLKGkpCSgodWludDY0X3QpMSA8PCAoaSkpCisgCisgdm9pZAkJYWRkX2lub19leF9kYXRhKHhmc19tb3VudF90ICptcCk7CisgCitAQCAtNTQzLDEwICs1NDMsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgaW5vZGVfaXNfcmwoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQpCisgICovCisgdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKKyB2b2lkIGRyb3BfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKKy1fX3VpbnQzMl90IG51bV9pbm9kZV9yZWZlcmVuY2VzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKKyt1aW50MzJfdCBudW1faW5vZGVfcmVmZXJlbmNlcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IG9mZnNldCk7CisgCistdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQsIF9fdWludDMyX3QgbmxpbmtzKTsKKy1fX3VpbnQzMl90IGdldF9pbm9kZV9kaXNrX25saW5rcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IG9mZnNldCk7Cisrdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQsIHVpbnQzMl90IG5saW5rcyk7CisrdWludDMyX3QgZ2V0X2lub2RlX2Rpc2tfbmxpbmtzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KTsKKyAKKyBzdGF0aWMgaW5saW5lIGludCBpc19pbm9kZV9yZWFjaGVkKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgb2Zmc2V0KQorIHsKK0BAIC01NjcsMTMgKzU2NywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkX2lub2RlX3JlYWNoZWQoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBvZmZzZXQpCisgc3RhdGljIGlubGluZSB2b2lkCisgc2V0X2lub2RlX2Z0eXBlKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLAorIAlpbnQJCWlub19vZmZzZXQsCistCV9fdWludDhfdAlmdHlwZSkKKysJdWludDhfdAkJZnR5cGUpCisgeworIAlpZiAoaXJlYy0+ZnR5cGVzKQorIAkJaXJlYy0+ZnR5cGVzW2lub19vZmZzZXRdID0gZnR5cGU7CisgfQorIAorLXN0YXRpYyBpbmxpbmUgX191aW50OF90Cisrc3RhdGljIGlubGluZSB1aW50OF90CisgZ2V0X2lub2RlX2Z0eXBlKAorIAlzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywKKyAJaW50CQlpbm9fb2Zmc2V0KQorQEAgLTYwNiwxMSArNjA2LDExIEBAIHR5cGVkZWYgc3RydWN0IGJtX2xldmVsX3N0YXRlICB7CisgCXhmc19mc2Jsb2NrX3QJCWZzYm5vOworIAl4ZnNfZnNibG9ja190CQlsZWZ0X2ZzYm5vOworIAl4ZnNfZnNibG9ja190CQlyaWdodF9mc2JubzsKKy0JX191aW50NjRfdAkJZmlyc3Rfa2V5OworLQlfX3VpbnQ2NF90CQlsYXN0X2tleTsKKysJdWludDY0X3QJCWZpcnN0X2tleTsKKysJdWludDY0X3QJCWxhc3Rfa2V5OworIC8qCisgCWludAkJCWxldmVsOworLQlfX3VpbnQ2NF90CQlwcmV2X2xhc3Rfa2V5OworKwl1aW50NjRfdAkJcHJldl9sYXN0X2tleTsKKyAJeGZzX2J1Zl90CQkqYnA7CisgCXhmc19ibWJ0X2Jsb2NrX3QJKmJsb2NrOworICovCitkaWZmIC0tZ2l0IGEvcmVwYWlyL2luY29yZV9leHQuYyBiL3JlcGFpci9pbmNvcmVfZXh0LmMKK2luZGV4IDdlNjc4NmM1Li4wYTgxMzhhOSAxMDA2NDQKKy0tLSBhL3JlcGFpci9pbmNvcmVfZXh0LmMKKysrKyBiL3JlcGFpci9pbmNvcmVfZXh0LmMKK0BAIC03MjEsMTMgKzcyMSwxMyBAQCBzZWFyY2hfcnRfZHVwX2V4dGVudCh4ZnNfbW91bnRfdCAqbXAsIHhmc19ydGJsb2NrX3QgYm5vKQorIAlyZXR1cm4ocmV0KTsKKyB9CisgCistc3RhdGljIF9fdWludDY0X3QKKytzdGF0aWMgdWludDY0X3QKKyBhdmw2NF9ydF9leHRfc3RhcnQoYXZsNjRub2RlX3QgKm5vZGUpCisgeworIAlyZXR1cm4oKChydF9leHRlbnRfdHJlZV9ub2RlX3QgKikgbm9kZSktPnJ0X3N0YXJ0YmxvY2spOworIH0KKyAKKy1zdGF0aWMgX191aW50NjRfdAorK3N0YXRpYyB1aW50NjRfdAorIGF2bDY0X2V4dF9lbmQoYXZsNjRub2RlX3QgKm5vZGUpCisgeworIAlyZXR1cm4oKChydF9leHRlbnRfdHJlZV9ub2RlX3QgKikgbm9kZSktPnJ0X3N0YXJ0YmxvY2sgKworQEAgLTgzNCw3ICs4MzQsNyBAQCBjb3VudF9leHRlbnRzKHhmc19hZ251bWJlcl90IGFnbm8sIGF2bHRyZWVfZGVzY190ICp0cmVlLCBpbnQgd2hpY2h0cmVlKQorIGludAorIGNvdW50X2Jub19leHRlbnRzX2Jsb2Nrcyh4ZnNfYWdudW1iZXJfdCBhZ25vLCB1aW50ICpudW1ibG9ja3MpCisgeworLQlfX3VpbnQ2NF90IG5ibG9ja3M7CisrCXVpbnQ2NF90IG5ibG9ja3M7CisgCWV4dGVudF90cmVlX25vZGVfdCAqbm9kZTsKKyAJaW50IGkgPSAwOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9pbmNvcmVfaW5vLmMgYi9yZXBhaXIvaW5jb3JlX2luby5jCitpbmRleCAyZWMxNzY1Ny4uM2I2YjQ0ZDQgMTAwNjQ0CistLS0gYS9yZXBhaXIvaW5jb3JlX2luby5jCisrKysgYi9yZXBhaXIvaW5jb3JlX2luby5jCitAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgYXZsdHJlZV9kZXNjX3QJKippbm9kZV91bmNlcnRhaW5fdHJlZV9wdHJzOworIC8qIG1lbW9yeSBvcHRpbWlzZWQgbmxpbmsgY291bnRpbmcgZm9yIGFsbCBpbm9kZXMgKi8KKyAKKyBzdGF0aWMgdm9pZCAqCistYWxsb2NfbmxpbmtfYXJyYXkoX191aW50OF90IG5saW5rX3NpemUpCisrYWxsb2NfbmxpbmtfYXJyYXkodWludDhfdCBubGlua19zaXplKQorIHsKKyAJdm9pZCAqcHRyOworIAorQEAgLTUxLDEwICs1MSwxMCBAQCBhbGxvY19ubGlua19hcnJheShfX3VpbnQ4X3Qgbmxpbmtfc2l6ZSkKKyBzdGF0aWMgdm9pZAorIG5saW5rX2dyb3dfOF90b18xNihpbm9fdHJlZV9ub2RlX3QgKmlyZWMpCisgeworLQlfX3VpbnQxNl90CSpuZXdfbmxpbmtzOworKwl1aW50MTZfdAkqbmV3X25saW5rczsKKyAJaW50CQlpOworIAorLQlpcmVjLT5ubGlua19zaXplID0gc2l6ZW9mKF9fdWludDE2X3QpOworKwlpcmVjLT5ubGlua19zaXplID0gc2l6ZW9mKHVpbnQxNl90KTsKKyAKKyAJbmV3X25saW5rcyA9IGFsbG9jX25saW5rX2FycmF5KGlyZWMtPm5saW5rX3NpemUpOworIAlmb3IgKGkgPSAwOyBpIDwgWEZTX0lOT0RFU19QRVJfQ0hVTks7IGkrKykKK0BAIC03NiwxMCArNzYsMTAgQEAgbmxpbmtfZ3Jvd184X3RvXzE2KGlub190cmVlX25vZGVfdCAqaXJlYykKKyBzdGF0aWMgdm9pZAorIG5saW5rX2dyb3dfMTZfdG9fMzIoaW5vX3RyZWVfbm9kZV90ICppcmVjKQorIHsKKy0JX191aW50MzJfdAkqbmV3X25saW5rczsKKysJdWludDMyX3QJKm5ld19ubGlua3M7CisgCWludAkJaTsKKyAKKy0JaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZihfX3VpbnQzMl90KTsKKysJaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZih1aW50MzJfdCk7CisgCisgCW5ld19ubGlua3MgPSBhbGxvY19ubGlua19hcnJheShpcmVjLT5ubGlua19zaXplKTsKKyAJZm9yIChpID0gMDsgaSA8IFhGU19JTk9ERVNfUEVSX0NIVU5LOyBpKyspCitAQCAtMTA0LDIxICsxMDQsMjEgQEAgdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyAJQVNTRVJUKGlyZWMtPmlub191bi5leF9kYXRhICE9IE5VTEwpOworIAorIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKKy0JY2FzZSBzaXplb2YoX191aW50OF90KToKKysJY2FzZSBzaXplb2YodWludDhfdCk6CisgCQlpZiAoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XSA8IDB4ZmYpIHsKKyAJCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdKys7CisgCQkJYnJlYWs7CisgCQl9CisgCQlubGlua19ncm93XzhfdG9fMTYoaXJlYyk7CisgCQkvKkZBTExUSFJVKi8KKy0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKKyAJCWlmIChpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4xNltpbm9fb2Zmc2V0XSA8IDB4ZmZmZikgeworIAkJCWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2W2lub19vZmZzZXRdKys7CisgCQkJYnJlYWs7CisgCQl9CisgCQlubGlua19ncm93XzE2X3RvXzMyKGlyZWMpOworIAkJLypGQUxMVEhSVSovCistCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgorKwljYXNlIHNpemVvZih1aW50MzJfdCk6CisgCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4zMltpbm9fb2Zmc2V0XSsrOworIAkJYnJlYWs7CisgCWRlZmF1bHQ6CitAQCAtMTI4LDIwICsxMjgsMjAgQEAgdm9pZCBhZGRfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyAKKyB2b2lkIGRyb3BfaW5vZGVfcmVmKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyB7CistCV9fdWludDMyX3QJcmVmcyA9IDA7CisrCXVpbnQzMl90CXJlZnMgPSAwOworIAorIAlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEgIT0gTlVMTCk7CisgCisgCXN3aXRjaCAoaXJlYy0+bmxpbmtfc2l6ZSkgeworLQljYXNlIHNpemVvZihfX3VpbnQ4X3QpOgorKwljYXNlIHNpemVvZih1aW50OF90KToKKyAJCUFTU0VSVChpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdID4gMCk7CisgCQlyZWZzID0gLS1pcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW44W2lub19vZmZzZXRdOworIAkJYnJlYWs7CistCWNhc2Ugc2l6ZW9mKF9fdWludDE2X3QpOgorKwljYXNlIHNpemVvZih1aW50MTZfdCk6CisgCQlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMTZbaW5vX29mZnNldF0gPiAwKTsKKyAJCXJlZnMgPSAtLWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2W2lub19vZmZzZXRdOworIAkJYnJlYWs7CistCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgorKwljYXNlIHNpemVvZih1aW50MzJfdCk6CisgCQlBU1NFUlQoaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMzJbaW5vX29mZnNldF0gPiAwKTsKKyAJCXJlZnMgPSAtLWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjMyW2lub19vZmZzZXRdOworIAkJYnJlYWs7CitAQCAtMTUzLDE2ICsxNTMsMTYgQEAgdm9pZCBkcm9wX2lub2RlX3JlZihzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IGlub19vZmZzZXQpCisgCQlpcmVjLT5pbm9fdW4uZXhfZGF0YS0+aW5vX3JlYWNoZWQgJj0gfklSRUNfTUFTSyhpbm9fb2Zmc2V0KTsKKyB9CisgCistX191aW50MzJfdCBudW1faW5vZGVfcmVmZXJlbmNlcyhzdHJ1Y3QgaW5vX3RyZWVfbm9kZSAqaXJlYywgaW50IGlub19vZmZzZXQpCisrdWludDMyX3QgbnVtX2lub2RlX3JlZmVyZW5jZXMoc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQorIHsKKyAJQVNTRVJUKGlyZWMtPmlub191bi5leF9kYXRhICE9IE5VTEwpOworIAorIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKKy0JY2FzZSBzaXplb2YoX191aW50OF90KToKKysJY2FzZSBzaXplb2YodWludDhfdCk6CisgCQlyZXR1cm4gaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XTsKKy0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKKyAJCXJldHVybiBpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4xNltpbm9fb2Zmc2V0XTsKKy0JY2FzZSBzaXplb2YoX191aW50MzJfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQzMl90KToKKyAJCXJldHVybiBpcmVjLT5pbm9fdW4uZXhfZGF0YS0+Y291bnRlZF9ubGlua3MudW4zMltpbm9fb2Zmc2V0XTsKKyAJZGVmYXVsdDoKKyAJCUFTU0VSVCgwKTsKK0BAIC0xNzEsMjQgKzE3MSwyNCBAQCBfX3VpbnQzMl90IG51bV9pbm9kZV9yZWZlcmVuY2VzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyB9CisgCisgdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0LAorLQkJX191aW50MzJfdCBubGlua3MpCisrCQl1aW50MzJfdCBubGlua3MpCisgeworIAlzd2l0Y2ggKGlyZWMtPm5saW5rX3NpemUpIHsKKy0JY2FzZSBzaXplb2YoX191aW50OF90KToKKysJY2FzZSBzaXplb2YodWludDhfdCk6CisgCQlpZiAobmxpbmtzIDwgMHhmZikgeworIAkJCWlyZWMtPmRpc2tfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XSA9IG5saW5rczsKKyAJCQlicmVhazsKKyAJCX0KKyAJCW5saW5rX2dyb3dfOF90b18xNihpcmVjKTsKKyAJCS8qRkFMTFRIUlUqLworLQljYXNlIHNpemVvZihfX3VpbnQxNl90KToKKysJY2FzZSBzaXplb2YodWludDE2X3QpOgorIAkJaWYgKG5saW5rcyA8IDB4ZmZmZikgeworIAkJCWlyZWMtPmRpc2tfbmxpbmtzLnVuMTZbaW5vX29mZnNldF0gPSBubGlua3M7CisgCQkJYnJlYWs7CisgCQl9CisgCQlubGlua19ncm93XzE2X3RvXzMyKGlyZWMpOworIAkJLypGQUxMVEhSVSovCistCWNhc2Ugc2l6ZW9mKF9fdWludDMyX3QpOgorKwljYXNlIHNpemVvZih1aW50MzJfdCk6CisgCQlpcmVjLT5kaXNrX25saW5rcy51bjMyW2lub19vZmZzZXRdID0gbmxpbmtzOworIAkJYnJlYWs7CisgCWRlZmF1bHQ6CitAQCAtMTk2LDE0ICsxOTYsMTQgQEAgdm9pZCBzZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0LAorIAl9CisgfQorIAorLV9fdWludDMyX3QgZ2V0X2lub2RlX2Rpc2tfbmxpbmtzKHN0cnVjdCBpbm9fdHJlZV9ub2RlICppcmVjLCBpbnQgaW5vX29mZnNldCkKKyt1aW50MzJfdCBnZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQorIHsKKyAJc3dpdGNoIChpcmVjLT5ubGlua19zaXplKSB7CistCWNhc2Ugc2l6ZW9mKF9fdWludDhfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQ4X3QpOgorIAkJcmV0dXJuIGlyZWMtPmRpc2tfbmxpbmtzLnVuOFtpbm9fb2Zmc2V0XTsKKy0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKKyAJCXJldHVybiBpcmVjLT5kaXNrX25saW5rcy51bjE2W2lub19vZmZzZXRdOworLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKKysJY2FzZSBzaXplb2YodWludDMyX3QpOgorIAkJcmV0dXJuIGlyZWMtPmRpc2tfbmxpbmtzLnVuMzJbaW5vX29mZnNldF07CisgCWRlZmF1bHQ6CisgCQlBU1NFUlQoMCk7CitAQCAtMjExLDExICsyMTEsMTEgQEAgX191aW50MzJfdCBnZXRfaW5vZGVfZGlza19ubGlua3Moc3RydWN0IGlub190cmVlX25vZGUgKmlyZWMsIGludCBpbm9fb2Zmc2V0KQorIAlyZXR1cm4gMDsKKyB9CisgCistc3RhdGljIF9fdWludDhfdCAqCisrc3RhdGljIHVpbnQ4X3QgKgorIGFsbG9jX2Z0eXBlc19hcnJheSgKKyAJc3RydWN0IHhmc19tb3VudCAqbXApCisgeworLQlfX3VpbnQ4X3QJKnB0cjsKKysJdWludDhfdAkJKnB0cjsKKyAKKyAJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNmdHlwZSgmbXAtPm1fc2IpKQorIAkJcmV0dXJuIE5VTEw7CitAQCAtMjYyLDIzICsyNjIsMjMgQEAgYWxsb2NfaW5vX25vZGUoCisgCWlyZWMtPmlyX2ZyZWUgPSAoeGZzX2lub2ZyZWVfdCkgLSAxOworIAlpcmVjLT5pcl9zcGFyc2UgPSAwOworIAlpcmVjLT5pbm9fdW4uZXhfZGF0YSA9IE5VTEw7CistCWlyZWMtPm5saW5rX3NpemUgPSBzaXplb2YoX191aW50OF90KTsKKysJaXJlYy0+bmxpbmtfc2l6ZSA9IHNpemVvZih1aW50OF90KTsKKyAJaXJlYy0+ZGlza19ubGlua3MudW44ID0gYWxsb2NfbmxpbmtfYXJyYXkoaXJlYy0+bmxpbmtfc2l6ZSk7CisgCWlyZWMtPmZ0eXBlcyA9IGFsbG9jX2Z0eXBlc19hcnJheShtcCk7CisgCXJldHVybiBpcmVjOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLWZyZWVfbmxpbmtfYXJyYXkodW5pb24gaW5vX25saW5rIG5saW5rcywgX191aW50OF90IG5saW5rX3NpemUpCisrZnJlZV9ubGlua19hcnJheSh1bmlvbiBpbm9fbmxpbmsgbmxpbmtzLCB1aW50OF90IG5saW5rX3NpemUpCisgeworIAlzd2l0Y2ggKG5saW5rX3NpemUpIHsKKy0JY2FzZSBzaXplb2YoX191aW50OF90KToKKysJY2FzZSBzaXplb2YodWludDhfdCk6CisgCQlmcmVlKG5saW5rcy51bjgpOworIAkJYnJlYWs7CistCWNhc2Ugc2l6ZW9mKF9fdWludDE2X3QpOgorKwljYXNlIHNpemVvZih1aW50MTZfdCk6CisgCQlmcmVlKG5saW5rcy51bjE2KTsKKyAJCWJyZWFrOworLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKKysJY2FzZSBzaXplb2YodWludDMyX3QpOgorIAkJZnJlZShubGlua3MudW4zMik7CisgCQlicmVhazsKKyAJZGVmYXVsdDoKK0BAIC02MDksNyArNjA5LDcgQEAgc2V0X2lub2RlX3BhcmVudCgKKyAJaW50CQkJaTsKKyAJaW50CQkJY250OworIAlpbnQJCQl0YXJnZXQ7CistCV9fdWludDY0X3QJCWJpdG1hc2s7CisrCXVpbnQ2NF90CQliaXRtYXNrOworIAlwYXJlbnRfZW50cnlfdAkJKnRtcDsKKyAKKyAJaWYgKGZ1bGxfaW5vX2V4X2RhdGEpCitAQCAtNjk5LDcgKzY5OSw3IEBAIHNldF9pbm9kZV9wYXJlbnQoCisgeGZzX2lub190CisgZ2V0X2lub2RlX3BhcmVudChpbm9fdHJlZV9ub2RlX3QgKmlyZWMsIGludCBvZmZzZXQpCisgeworLQlfX3VpbnQ2NF90CWJpdG1hc2s7CisrCXVpbnQ2NF90CWJpdG1hc2s7CisgCXBhcmVudF9saXN0X3QJKnB0Ymw7CisgCWludAkJaTsKKyAJaW50CQl0YXJnZXQ7CitAQCAtNzQwLDE1ICs3NDAsMTUgQEAgYWxsb2NfZXhfZGF0YShpbm9fdHJlZV9ub2RlX3QgKmlyZWMpCisgCWlyZWMtPmlub191bi5leF9kYXRhLT5wYXJlbnRzID0gcHRibDsKKyAKKyAJc3dpdGNoIChpcmVjLT5ubGlua19zaXplKSB7CistCWNhc2Ugc2l6ZW9mKF9fdWludDhfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQ4X3QpOgorIAkJaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuOCA9CisgCQkJYWxsb2NfbmxpbmtfYXJyYXkoaXJlYy0+bmxpbmtfc2l6ZSk7CisgCQlicmVhazsKKy0JY2FzZSBzaXplb2YoX191aW50MTZfdCk6CisrCWNhc2Ugc2l6ZW9mKHVpbnQxNl90KToKKyAJCWlyZWMtPmlub191bi5leF9kYXRhLT5jb3VudGVkX25saW5rcy51bjE2ID0KKyAJCQlhbGxvY19ubGlua19hcnJheShpcmVjLT5ubGlua19zaXplKTsKKyAJCWJyZWFrOworLQljYXNlIHNpemVvZihfX3VpbnQzMl90KToKKysJY2FzZSBzaXplb2YodWludDMyX3QpOgorIAkJaXJlYy0+aW5vX3VuLmV4X2RhdGEtPmNvdW50ZWRfbmxpbmtzLnVuMzIgPQorIAkJCWFsbG9jX25saW5rX2FycmF5KGlyZWMtPm5saW5rX3NpemUpOworIAkJYnJlYWs7CitkaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlMi5jIGIvcmVwYWlyL3BoYXNlMi5jCitpbmRleCBjMjE3NzhiOC4uMDA4NTczMmIgMTAwNjQ0CistLS0gYS9yZXBhaXIvcGhhc2UyLmMKKysrKyBiL3JlcGFpci9waGFzZTIuYworQEAgLTE3OSw3ICsxNzksNyBAQCBwaGFzZTIoCisgCisgCWJhZF9pbm9fYnRyZWUgPSAwOworIAorLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1NDQU5fQUcsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOworKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1NDQU5fQUcsICh1aW50NjRfdCkgZ2xvYl9hZ2NvdW50KTsKKyAKKyAJc2Nhbl9hZ3MobXAsIHNjYW5fdGhyZWFkcyk7CisgCitkaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlMy5jIGIvcmVwYWlyL3BoYXNlMy5jCitpbmRleCAwODkwYTI3ZC4uMTdiMWMyOGQgMTAwNjQ0CistLS0gYS9yZXBhaXIvcGhhc2UzLmMKKysrKyBiL3JlcGFpci9waGFzZTMuYworQEAgLTEyMiw3ICsxMjIsNyBAQCBwaGFzZTMoCisgCWVsc2UKKyAJCWRvX2xvZyhfKCIgICAgICAgIC0gc2NhbiAoYnV0IGRvbid0IGNsZWFyKSBhZ2kgdW5saW5rZWQgbGlzdHMuLi5cbiIpKTsKKyAKKy0Jc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9BR0lfVU5MSU5LRUQsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOworKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0FHSV9VTkxJTktFRCwgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOworIAorIAkvKiBmaXJzdCBjbGVhciB0aGUgYWdpIHVubGlua2VkIEFHSSBsaXN0ICovCisgCWlmICghbm9fbW9kaWZ5KSB7CitAQCAtMTQyLDcgKzE0Miw3IEBAIHBoYXNlMygKKyAJZG9fbG9nKF8oCisgCSAgICAiICAgICAgICAtIHByb2Nlc3Mga25vd24gaW5vZGVzIGFuZCBwZXJmb3JtIGlub2RlIGRpc2NvdmVyeS4uLlxuIikpOworIAorLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1BST0NFU1NfSU5PLCAoX191aW50NjRfdCkgbXAtPm1fc2Iuc2JfaWNvdW50KTsKKysJc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9QUk9DRVNTX0lOTywgKHVpbnQ2NF90KSBtcC0+bV9zYi5zYl9pY291bnQpOworIAorIAlwcm9jZXNzX2FncyhtcCk7CisgCitAQCAtMTUyLDcgKzE1Miw3IEBAIHBoYXNlMygKKyAJICogcHJvY2VzcyBuZXdseSBkaXNjb3ZlcmVkIGlub2RlIGNodW5rcworIAkgKi8KKyAJZG9fbG9nKF8oIiAgICAgICAgLSBwcm9jZXNzIG5ld2x5IGRpc2NvdmVyZWQgaW5vZGVzLi4uXG4iKSk7CistCXNldF9wcm9ncmVzc19tc2coUFJPR19GTVRfTkVXX0lOT0RFUywgKF9fdWludDY0X3QpIGdsb2JfYWdjb3VudCk7CisrCXNldF9wcm9ncmVzc19tc2coUFJPR19GTVRfTkVXX0lOT0RFUywgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOworIAorIAljb3VudHMgPSBjYWxsb2Moc2l6ZW9mKCpjb3VudHMpLCBtcC0+bV9zYi5zYl9hZ2NvdW50KTsKKyAJaWYgKCFjb3VudHMpIHsKK2RpZmYgLS1naXQgYS9yZXBhaXIvcGhhc2U0LmMgYi9yZXBhaXIvcGhhc2U0LmMKK2luZGV4IGU1OTQ2NGIxLi5jYzE3ZWMwMyAxMDA2NDQKKy0tLSBhL3JlcGFpci9waGFzZTQuYworKysrIGIvcmVwYWlyL3BoYXNlNC5jCitAQCAtMjkwLDcgKzI5MCw3IEBAIHBoYXNlNCh4ZnNfbW91bnRfdCAqbXApCisgCWRvX2xvZyhfKCJQaGFzZSA0IC0gY2hlY2sgZm9yIGR1cGxpY2F0ZSBibG9ja3MuLi5cbiIpKTsKKyAJZG9fbG9nKF8oIiAgICAgICAgLSBzZXR0aW5nIHVwIGR1cGxpY2F0ZSBleHRlbnQgbGlzdC4uLlxuIikpOworIAorLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0RVUF9FWFRFTlQsIChfX3VpbnQ2NF90KSBnbG9iX2FnY291bnQpOworKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX0RVUF9FWFRFTlQsICh1aW50NjRfdCkgZ2xvYl9hZ2NvdW50KTsKKyAKKyAJaXJlYyA9IGZpbmRfaW5vZGVfcmVjKG1wLCBYRlNfSU5PX1RPX0FHTk8obXAsIG1wLT5tX3NiLnNiX3Jvb3Rpbm8pLAorIAkJCQlYRlNfSU5PX1RPX0FHSU5PKG1wLCBtcC0+bV9zYi5zYl9yb290aW5vKSk7CitAQCAtNDA0LDcgKzQwNCw3IEBAIHBoYXNlNCh4ZnNfbW91bnRfdCAqbXApCisgCXJlc2V0X2JtYXBzKG1wKTsKKyAKKyAJZG9fbG9nKF8oIiAgICAgICAgLSBjaGVjayBmb3IgaW5vZGVzIGNsYWltaW5nIGR1cGxpY2F0ZSBibG9ja3MuLi5cbiIpKTsKKy0Jc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9EVVBfQkxPQ0tTLCAoX191aW50NjRfdCkgbXAtPm1fc2Iuc2JfaWNvdW50KTsKKysJc2V0X3Byb2dyZXNzX21zZyhQUk9HX0ZNVF9EVVBfQkxPQ0tTLCAodWludDY0X3QpIG1wLT5tX3NiLnNiX2ljb3VudCk7CisgCisgCS8qCisgCSAqIG9rLCBub3cgcHJvY2VzcyB0aGUgaW5vZGVzIC0tIHNpZ25hbCAyLXBhc3MgY2hlY2sgcGVyIGlub2RlLgorZGlmZiAtLWdpdCBhL3JlcGFpci9waGFzZTUuYyBiL3JlcGFpci9waGFzZTUuYworaW5kZXggMGI4MzNmMTMuLjIxZGNlNjdhIDEwMDY0NAorLS0tIGEvcmVwYWlyL3BoYXNlNS5jCisrKysgYi9yZXBhaXIvcGhhc2U1LmMKK0BAIC04Niw5ICs4Niw5IEBAIHN0cnVjdCBhZ2lfc3RhdCB7CisgCXhmc19hZ2lub190CQlmcmVlY291bnQ7CisgfTsKKyAKKy1zdGF0aWMgX191aW50NjRfdAkqc2JfaWNvdW50X2FnOwkJLyogYWxsb2NhdGVkIGlub2RlcyBwZXIgYWcgKi8KKy1zdGF0aWMgX191aW50NjRfdAkqc2JfaWZyZWVfYWc7CQkvKiBmcmVlIGlub2RlcyBwZXIgYWcgKi8KKy1zdGF0aWMgX191aW50NjRfdAkqc2JfZmRibG9ja3NfYWc7CS8qIGZyZWUgZGF0YSBibG9ja3MgcGVyIGFnICovCisrc3RhdGljIHVpbnQ2NF90CSpzYl9pY291bnRfYWc7CQkvKiBhbGxvY2F0ZWQgaW5vZGVzIHBlciBhZyAqLworK3N0YXRpYyB1aW50NjRfdAkqc2JfaWZyZWVfYWc7CQkvKiBmcmVlIGlub2RlcyBwZXIgYWcgKi8KKytzdGF0aWMgdWludDY0X3QJKnNiX2ZkYmxvY2tzX2FnOwkvKiBmcmVlIGRhdGEgYmxvY2tzIHBlciBhZyAqLworIAorIHN0YXRpYyBpbnQKKyBta19pbmNvcmVfZnN0cmVlKHhmc19tb3VudF90ICptcCwgeGZzX2FnbnVtYmVyX3QgYWdubykKK0BAIC04ODYsMTAgKzg4NiwxMCBAQCBidWlsZF9mcmVlc3BhY2VfdHJlZSh4ZnNfbW91bnRfdCAqbXAsIHhmc19hZ251bWJlcl90IGFnbm8sCisgICovCisgc3RhdGljIHZvaWQKKyBpbml0X2lub19jdXJzb3IoeGZzX21vdW50X3QgKm1wLCB4ZnNfYWdudW1iZXJfdCBhZ25vLCBidF9zdGF0dXNfdCAqYnRyZWVfY3VycywKKy0JCV9fdWludDY0X3QgKm51bV9pbm9zLCBfX3VpbnQ2NF90ICpudW1fZnJlZV9pbm9zLCBpbnQgZmlub2J0KQorKwkJdWludDY0X3QgKm51bV9pbm9zLCB1aW50NjRfdCAqbnVtX2ZyZWVfaW5vcywgaW50IGZpbm9idCkKKyB7CistCV9fdWludDY0X3QJCW5pbm9zOworLQlfX3VpbnQ2NF90CQluZmlub3M7CisrCXVpbnQ2NF90CQluaW5vczsKKysJdWludDY0X3QJCW5maW5vczsKKyAJaW50CQkJcmVjX25maW5vczsKKyAJaW50CQkJcmVjX25pbm9zOworIAlpbm9fdHJlZV9ub2RlX3QJCSppbm9fcmVjOworQEAgLTIxOTMsMTAgKzIxOTMsMTAgQEAgcGhhc2U1X2Z1bmMoCisgCXhmc19hZ251bWJlcl90CWFnbm8sCisgCXN0cnVjdCB4ZnNfc2xhYgkqbG9zdF9mc2IpCisgeworLQlfX3VpbnQ2NF90CW51bV9pbm9zOworLQlfX3VpbnQ2NF90CW51bV9mcmVlX2lub3M7CistCV9fdWludDY0X3QJZmlub2J0X251bV9pbm9zOworLQlfX3VpbnQ2NF90CWZpbm9idF9udW1fZnJlZV9pbm9zOworKwl1aW50NjRfdAludW1faW5vczsKKysJdWludDY0X3QJbnVtX2ZyZWVfaW5vczsKKysJdWludDY0X3QJZmlub2J0X251bV9pbm9zOworKwl1aW50NjRfdAlmaW5vYnRfbnVtX2ZyZWVfaW5vczsKKyAJYnRfc3RhdHVzX3QJYm5vX2J0cmVlX2N1cnM7CisgCWJ0X3N0YXR1c190CWJjbnRfYnRyZWVfY3VyczsKKyAJYnRfc3RhdHVzX3QJaW5vX2J0cmVlX2N1cnM7CitAQCAtMjQ3MSw3ICsyNDcxLDcgQEAgcGhhc2U1KHhmc19tb3VudF90ICptcCkKKyAJaW50CQkJZXJyb3I7CisgCisgCWRvX2xvZyhfKCJQaGFzZSA1IC0gcmVidWlsZCBBRyBoZWFkZXJzIGFuZCB0cmVlcy4uLlxuIikpOworLQlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1JFQlVJTERfQUcsIChfX3VpbnQ2NF90IClnbG9iX2FnY291bnQpOworKwlzZXRfcHJvZ3Jlc3NfbXNnKFBST0dfRk1UX1JFQlVJTERfQUcsICh1aW50NjRfdClnbG9iX2FnY291bnQpOworIAorICNpZmRlZiBYUl9CTERfRlJFRV9UUkFDRQorIAlmcHJpbnRmKHN0ZGVyciwgImlub2J0IGxldmVsIDEsIG1heHJlYyA9ICVkLCBtaW5yZWMgPSAlZFxuIiwKK0BAIC0yNDk3LDE1ICsyNDk3LDE1IEBAIHBoYXNlNSh4ZnNfbW91bnRfdCAqbXApCisgCWtlZXBfZnNpbm9zKG1wKTsKKyAKKyAJLyogYWxsb2NhdGUgcGVyIGFnIGNvdW50ZXJzICovCistCXNiX2ljb3VudF9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOworKwlzYl9pY291bnRfYWcgPSBjYWxsb2MobXAtPm1fc2Iuc2JfYWdjb3VudCwgc2l6ZW9mKHVpbnQ2NF90KSk7CisgCWlmIChzYl9pY291bnRfYWcgPT0gTlVMTCkKKyAJCWRvX2Vycm9yKF8oImNhbm5vdCBhbGxvYyBzYl9pY291bnRfYWcgYnVmZmVyc1xuIikpOworIAorLQlzYl9pZnJlZV9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOworKwlzYl9pZnJlZV9hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YodWludDY0X3QpKTsKKyAJaWYgKHNiX2lmcmVlX2FnID09IE5VTEwpCisgCQlkb19lcnJvcihfKCJjYW5ub3QgYWxsb2Mgc2JfaWZyZWVfYWcgYnVmZmVyc1xuIikpOworIAorLQlzYl9mZGJsb2Nrc19hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YoX191aW50NjRfdCkpOworKwlzYl9mZGJsb2Nrc19hZyA9IGNhbGxvYyhtcC0+bV9zYi5zYl9hZ2NvdW50LCBzaXplb2YodWludDY0X3QpKTsKKyAJaWYgKHNiX2ZkYmxvY2tzX2FnID09IE5VTEwpCisgCQlkb19lcnJvcihfKCJjYW5ub3QgYWxsb2Mgc2JfZmRibG9ja3NfYWcgYnVmZmVyc1xuIikpOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9waGFzZTYuYyBiL3JlcGFpci9waGFzZTYuYworaW5kZXggMDg2MzZkY2YuLjM3M2IxYTViIDEwMDY0NAorLS0tIGEvcmVwYWlyL3BoYXNlNi5jCisrKysgYi9yZXBhaXIvcGhhc2U2LmMKK0BAIC04Miw3ICs4Miw3IEBAIHR5cGVkZWYgc3RydWN0IGRpcl9oYXNoX2VudCB7CisgCXN0cnVjdCBkaXJfaGFzaF9lbnQJKm5leHRieWhhc2g7CS8qIG5leHQgaW4gbmFtZSBidWNrZXQgKi8KKyAJc3RydWN0IGRpcl9oYXNoX2VudAkqbmV4dGJ5b3JkZXI7CS8qIG5leHQgaW4gb3JkZXIgYWRkZWQgKi8KKyAJeGZzX2RhaGFzaF90CQloYXNodmFsOwkvKiBoYXNoIHZhbHVlIG9mIG5hbWUgKi8KKy0JX191aW50MzJfdAkJYWRkcmVzczsJLyogb2Zmc2V0IG9mIGRhdGEgZW50cnkgKi8KKysJdWludDMyX3QJCWFkZHJlc3M7CS8qIG9mZnNldCBvZiBkYXRhIGVudHJ5ICovCisgCXhmc19pbm9fdCAJCWludW07CQkvKiBpbm9kZSBudW0gb2YgZW50cnkgKi8KKyAJc2hvcnQJCQlqdW5raXQ7CQkvKiBuYW1lIHN0YXJ0cyB3aXRoIC8gKi8KKyAJc2hvcnQJCQlzZWVuOwkJLyogaGF2ZSBzZWVuIGxlYWYgZW50cnkgKi8KK0BAIC0xNzAsMTEgKzE3MCwxMSBAQCBzdGF0aWMgaW50CisgZGlyX2hhc2hfYWRkKAorIAl4ZnNfbW91bnRfdAkJKm1wLAorIAlkaXJfaGFzaF90YWJfdAkJKmhhc2h0YWIsCistCV9fdWludDMyX3QJCWFkZHIsCisrCXVpbnQzMl90CQlhZGRyLAorIAl4ZnNfaW5vX3QJCWludW0sCisgCWludAkJCW5hbWVsZW4sCisgCXVuc2lnbmVkIGNoYXIJCSpuYW1lLAorLQlfX3VpbnQ4X3QJCWZ0eXBlKQorKwl1aW50OF90CQkJZnR5cGUpCisgeworIAl4ZnNfZGFoYXNoX3QJCWhhc2ggPSAwOworIAlpbnQJCQlieWFkZHI7CitAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkCisgZGlyX2hhc2hfdXBkYXRlX2Z0eXBlKAorIAlkaXJfaGFzaF90YWJfdAkJKmhhc2h0YWIsCisgCXhmc19kaXIyX2RhdGFwdHJfdAlhZGRyLAorLQlfX3VpbnQ4X3QJCWZ0eXBlKQorKwl1aW50OF90CQkJZnR5cGUpCisgeworIAlpbnQJCQlpOworIAlkaXJfaGFzaF9lbnRfdAkJKnA7CitAQCAtMTc5MSw4ICsxNzkxLDggQEAgbG9uZ2Zvcm1fZGlyMl9lbnRyeV9jaGVja19kYXRhKAorIAorIAkJLyogdmFsaWRhdGUgZnR5cGUgZmllbGQgaWYgc3VwcG9ydGVkICovCisgCQlpZiAoeGZzX3NiX3ZlcnNpb25faGFzZnR5cGUoJm1wLT5tX3NiKSkgeworLQkJCV9fdWludDhfdCBkaXJfZnR5cGU7CistCQkJX191aW50OF90IGlub19mdHlwZTsKKysJCQl1aW50OF90IGRpcl9mdHlwZTsKKysJCQl1aW50OF90IGlub19mdHlwZTsKKyAKKyAJCQlkaXJfZnR5cGUgPSBNX0RJUk9QUyhtcCktPmRhdGFfZ2V0X2Z0eXBlKGRlcCk7CisgCQkJaW5vX2Z0eXBlID0gZ2V0X2lub2RlX2Z0eXBlKGlyZWMsIGlub19vZmZzZXQpOworQEAgLTI3MDMsOCArMjcwMyw4IEBAIF8oImVudHJ5IFwiJXNcIiAoaW5vICUiIFBSSXU2NCAiKSBpbiBkaXIgJSIgUFJJdTY0ICIgaXMgYSBkdXBsaWNhdGUgbmFtZSIpLAorIAorIAkJLyogdmFsaWRhdGUgZnR5cGUgZmllbGQgaWYgc3VwcG9ydGVkICovCisgCQlpZiAoeGZzX3NiX3ZlcnNpb25faGFzZnR5cGUoJm1wLT5tX3NiKSkgeworLQkJCV9fdWludDhfdCBkaXJfZnR5cGU7CistCQkJX191aW50OF90IGlub19mdHlwZTsKKysJCQl1aW50OF90IGRpcl9mdHlwZTsKKysJCQl1aW50OF90IGlub19mdHlwZTsKKyAKKyAJCQlkaXJfZnR5cGUgPSBNX0RJUk9QUyhtcCktPnNmX2dldF9mdHlwZShzZmVwKTsKKyAJCQlpbm9fZnR5cGUgPSBnZXRfaW5vZGVfZnR5cGUoaXJlYywgaW5vX29mZnNldCk7CitkaWZmIC0tZ2l0IGEvcmVwYWlyL3BoYXNlNy5jIGIvcmVwYWlyL3BoYXNlNy5jCitpbmRleCA4YmNlMTE3ZC4uNGZmYjgxYTggMTAwNjQ0CistLS0gYS9yZXBhaXIvcGhhc2U3LmMKKysrKyBiL3JlcGFpci9waGFzZTcuYworQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIHZvaWQKKyB1cGRhdGVfaW5vZGVfbmxpbmtzKAorIAl4ZnNfbW91bnRfdCAJCSptcCwKKyAJeGZzX2lub190CQlpbm8sCistCV9fdWludDMyX3QJCW5saW5rcykKKysJdWludDMyX3QJCW5saW5rcykKKyB7CisgCXhmc190cmFuc190CQkqdHA7CisgCXhmc19pbm9kZV90CQkqaXA7CitAQCAtMTA0LDcgKzEwNCw3IEBAIGRvX2xpbmtfdXBkYXRlcygKKyB7CisgCWlub190cmVlX25vZGVfdAkJKmlyZWM7CisgCWludAkJCWo7CistCV9fdWludDMyX3QJCW5yZWZzOworKwl1aW50MzJfdAkJbnJlZnM7CisgCisgCWZvciAoaXJlYyA9IGZpbmRmaXJzdF9pbm9kZV9yZWMoYWdubyk7IGlyZWM7CisgCSAgICAgaXJlYyA9IG5leHRfaW5vX3JlYyhpcmVjKSkgeworQEAgLTE0Myw3ICsxNDMsNyBAQCBwaGFzZTcoCisgCWVsc2UKKyAJCWRvX2xvZyhfKCJQaGFzZSA3IC0gdmVyaWZ5IGxpbmsgY291bnRzLi4uXG4iKSk7CisgCistCXNldF9wcm9ncmVzc19tc2coUFJPR1JFU1NfRk1UX0NPUlJfTElOSywgKF9fdWludDY0X3QpIGdsb2JfYWdjb3VudCk7CisrCXNldF9wcm9ncmVzc19tc2coUFJPR1JFU1NfRk1UX0NPUlJfTElOSywgKHVpbnQ2NF90KSBnbG9iX2FnY291bnQpOworIAorIAljcmVhdGVfd29ya19xdWV1ZSgmd3EsIG1wLCBzY2FuX3RocmVhZHMpOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9wcm9ncmVzcy5jIGIvcmVwYWlyL3Byb2dyZXNzLmMKK2luZGV4IDJhMDliMjM5Li45OWQyNjU4YyAxMDA2NDQKKy0tLSBhL3JlcGFpci9wcm9ncmVzcy5jCisrKysgYi9yZXBhaXIvcHJvZ3Jlc3MuYworQEAgLTg1LDggKzg1LDggQEAgcHRocmVhZF90CXJlcG9ydF90aHJlYWQ7CisgdHlwZWRlZiBzdHJ1Y3QgbXNnX2Jsb2NrX3MgeworIAlwdGhyZWFkX211dGV4X3QJbXV0ZXg7CisgCXByb2dyZXNzX3JwdF90CSpmb3JtYXQ7CistCV9fdWludDY0X3QJKmRvbmU7CistCV9fdWludDY0X3QJKnRvdGFsOworKwl1aW50NjRfdAkqZG9uZTsKKysJdWludDY0X3QJKnRvdGFsOworIAlpbnQJCWNvdW50OworIAlpbnQJCWludGVydmFsOworIH0gbXNnX2Jsb2NrX3Q7CitAQCAtOTYsMTQgKzk2LDE0IEBAIHR5cGVkZWYgc3RydWN0IHBoYXNlX3RpbWVzX3MgeworIAl0aW1lX3QJCXN0YXJ0OworIAl0aW1lX3QJCWVuZDsKKyAJdGltZV90CQlkdXJhdGlvbjsKKy0JX191aW50NjRfdAlpdGVtX2NvdW50c1s0XTsKKysJdWludDY0X3QJaXRlbV9jb3VudHNbNF07CisgfSBwaGFzZV90aW1lc190OworIHN0YXRpYyBwaGFzZV90aW1lc190IHBoYXNlX3RpbWVzWzhdOworIAorIHN0YXRpYyB2b2lkICpwcm9ncmVzc19ycHRfdGhyZWFkKHZvaWQgKik7Cisgc3RhdGljIGludCBjdXJyZW50X3BoYXNlOworIHN0YXRpYyBpbnQgcnVubmluZzsKKy1zdGF0aWMgX191aW50NjRfdCBwcm9nX3JwdF90b3RhbDsKKytzdGF0aWMgdWludDY0X3QgcHJvZ19ycHRfdG90YWw7CisgCisgdm9pZAorIGluaXRfcHJvZ3Jlc3NfcnB0ICh2b2lkKQorQEAgLTExMywxMSArMTEzLDExIEBAIGluaXRfcHJvZ3Jlc3NfcnB0ICh2b2lkKQorIAkgKiAgYWxsb2NhdGUgdGhlIGRvbmUgdmVjdG9yCisgCSAqLworIAorLQlpZiAoKHByb2dfcnB0X2RvbmUgPSAoX191aW50NjRfdCAqKQorLQkJbWFsbG9jKHNpemVvZihfX3VpbnQ2NF90KSpnbG9iX2FnY291bnQpKSA9PSBOVUxMICkgeworKwlpZiAoKHByb2dfcnB0X2RvbmUgPSAodWludDY0X3QgKikKKysJCW1hbGxvYyhzaXplb2YodWludDY0X3QpKmdsb2JfYWdjb3VudCkpID09IE5VTEwpIHsKKyAJCWRvX2Vycm9yKF8oImNhbm5vdCBtYWxsb2MgcG9pbnRlciB0byBkb25lIHZlY3RvclxuIikpOworIAl9CistCWJ6ZXJvKHByb2dfcnB0X2RvbmUsIHNpemVvZihfX3VpbnQ2NF90KSpnbG9iX2FnY291bnQpOworKwliemVybyhwcm9nX3JwdF9kb25lLCBzaXplb2YodWludDY0X3QpKmdsb2JfYWdjb3VudCk7CisgCisgCS8qCisgCSAqICBTZXR1cCBjb21tIGJsb2NrLCBzdGFydCB0aGUgdGhyZWFkCitAQCAtMTY1LDEwICsxNjUsMTAgQEAgcHJvZ3Jlc3NfcnB0X3RocmVhZCAodm9pZCAqcCkKKyAJdGltZXJfdCB0aW1lcmlkOworIAlzdHJ1Y3QgaXRpbWVyc3BlYyB0aW1lc3BlYzsKKyAJY2hhciAqbXNnYnVmOworLQlfX3VpbnQ2NF90ICpkb25lcDsKKy0JX191aW50NjRfdCBzdW07CisrCXVpbnQ2NF90ICpkb25lcDsKKysJdWludDY0X3Qgc3VtOworIAltc2dfYmxvY2tfdCAqbXNncCA9IChtc2dfYmxvY2tfdCAqKXA7CistCV9fdWludDY0X3QgcGVyY2VudDsKKysJdWludDY0X3QgcGVyY2VudDsKKyAKKyAJLyogSXQncyBwb3NzaWJsZSB0byBnZXQgaGVyZSB2ZXJ5IGVhcmx5IHcvIG5vIHByb2dyZXNzIG1zZyBzZXQgKi8KKyAJaWYgKCFtc2dwLT5mb3JtYXQpCitAQCAtMjg2LDcgKzI4Niw3IEBAIHByb2dyZXNzX3JwdF90aHJlYWQgKHZvaWQgKnApCisgfQorIAorIGludAorLXNldF9wcm9ncmVzc19tc2cgKGludCByZXBvcnQsIF9fdWludDY0X3QgdG90YWwpCisrc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCB1aW50NjRfdCB0b3RhbCkKKyB7CisgCisgCWlmICghYWdfc3RyaWRlKQorQEAgLTMwMCw3ICszMDAsNyBAQCBzZXRfcHJvZ3Jlc3NfbXNnIChpbnQgcmVwb3J0LCBfX3VpbnQ2NF90IHRvdGFsKQorIAorIAkvKiByZXNldCBhbGwgdGhlIGFjY3VtdWxhdGl2ZSB0b3RhbHMgKi8KKyAJaWYgKHByb2dfcnB0X2RvbmUpCistCQliemVybyhwcm9nX3JwdF9kb25lLCBzaXplb2YoX191aW50NjRfdCkqZ2xvYl9hZ2NvdW50KTsKKysJCWJ6ZXJvKHByb2dfcnB0X2RvbmUsIHNpemVvZih1aW50NjRfdCkqZ2xvYl9hZ2NvdW50KTsKKyAKKyAJaWYgKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnbG9iYWxfbXNncy5tdXRleCkpCisgCQlkb19lcnJvcihfKCJzZXRfcHJvZ3Jlc3NfbXNnOiBjYW5ub3QgdW5sb2NrIHByb2dyZXNzIG11dGV4XG4iKSk7CitAQCAtMzA4LDE0ICszMDgsMTQgQEAgc2V0X3Byb2dyZXNzX21zZyAoaW50IHJlcG9ydCwgX191aW50NjRfdCB0b3RhbCkKKyAJcmV0dXJuICgwKTsKKyB9CisgCistX191aW50NjRfdAorK3VpbnQ2NF90CisgcHJpbnRfZmluYWxfcnB0KHZvaWQpCisgeworIAlpbnQgaTsKKyAJc3RydWN0IHRtICp0bXA7CisgCXRpbWVfdCBub3c7CistCV9fdWludDY0X3QgKmRvbmVwOworLQlfX3VpbnQ2NF90IHN1bTsKKysJdWludDY0X3QgKmRvbmVwOworKwl1aW50NjRfdCBzdW07CisgCW1zZ19ibG9ja190IAkqbXNncCA9ICZnbG9iYWxfbXNnczsKKyAJY2hhcgkJbXNnYnVmW0RVUkFUSU9OX0JVRl9TSVpFXTsKKyAKK2RpZmYgLS1naXQgYS9yZXBhaXIvcHJvZ3Jlc3MuaCBiL3JlcGFpci9wcm9ncmVzcy5oCitpbmRleCAzM2RiODM0NC4uNTE1MjY0ODMgMTAwNjQ0CistLS0gYS9yZXBhaXIvcHJvZ3Jlc3MuaAorKysrIGIvcmVwYWlyL3Byb2dyZXNzLmgKK0BAIC0zMiw4ICszMiw4IEBACisgZXh0ZXJuIHZvaWQgaW5pdF9wcm9ncmVzc19ycHQodm9pZCk7CisgZXh0ZXJuIHZvaWQgc3RvcF9wcm9ncmVzc19ycHQodm9pZCk7CisgZXh0ZXJuIHZvaWQgc3VtbWFyeV9yZXBvcnQodm9pZCk7CistZXh0ZXJuIGludCAgc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCBfX3VpbnQ2NF90IHRvdGFsKTsKKy1leHRlcm4gX191aW50NjRfdCBwcmludF9maW5hbF9ycHQodm9pZCk7CisrZXh0ZXJuIGludCAgc2V0X3Byb2dyZXNzX21zZyhpbnQgcmVwb3J0LCB1aW50NjRfdCB0b3RhbCk7CisrZXh0ZXJuIHVpbnQ2NF90IHByaW50X2ZpbmFsX3JwdCh2b2lkKTsKKyBleHRlcm4gY2hhciAqdGltZXN0YW1wKGludCBlbmQsIGludCBwaGFzZSwgY2hhciAqYnVmKTsKKyBleHRlcm4gY2hhciAqZHVyYXRpb24oaW50IHZhbCwgY2hhciAqYnVmKTsKKyBleHRlcm4gaW50IGRvX3BhcmFsbGVsOworZGlmZiAtLWdpdCBhL3JlcGFpci9ybWFwLmMgYi9yZXBhaXIvcm1hcC5jCitpbmRleCBhYjZlNTgzOS4uMDFkNmYwZmMgMTAwNjQ0CistLS0gYS9yZXBhaXIvcm1hcC5jCisrKysgYi9yZXBhaXIvcm1hcC5jCitAQCAtMzQzLDcgKzM0Myw3IEBAIGVycjoKKyAKKyBzdGF0aWMgaW50CisgZmluZF9maXJzdF96ZXJvX2JpdCgKKy0JX191aW50NjRfdAltYXNrKQorKwl1aW50NjRfdAltYXNrKQorIHsKKyAJaW50CQluOworIAlpbnQJCWIgPSAwOworQEAgLTM1Niw3ICszNTYsNyBAQCBmaW5kX2ZpcnN0X3plcm9fYml0KAorIAorIHN0YXRpYyBpbnQKKyBwb3BjbnQoCistCV9fdWludDY0X3QJbWFzaykKKysJdWludDY0X3QJbWFzaykKKyB7CisgCWludAkJbjsKKyAJaW50CQliID0gMDsKK0BAIC0xMDY0LDE0ICsxMDY0LDE0IEBAIGVycjoKKyAgKiBDb21wYXJlIHRoZSBrZXkgZmllbGRzIG9mIHR3byBybWFwIHJlY29yZHMgLS0gcG9zaXRpdmUgaWYga2V5MSA+IGtleTIsCisgICogbmVnYXRpdmUgaWYga2V5MSA8IGtleTIsIGFuZCB6ZXJvIGlmIGVxdWFsLgorICAqLworLV9faW50NjRfdAorK2ludDY0X3QKKyBybWFwX2RpZmZrZXlzKAorIAlzdHJ1Y3QgeGZzX3JtYXBfaXJlYwkqa3AxLAorIAlzdHJ1Y3QgeGZzX3JtYXBfaXJlYwkqa3AyKQorIHsKKyAJX191NjQJCQlvYTsKKyAJX191NjQJCQlvYjsKKy0JX19pbnQ2NF90CQlkOworKwlpbnQ2NF90CQkJZDsKKyAJc3RydWN0IHhmc19ybWFwX2lyZWMJdG1wOworIAorIAl0bXAgPSAqa3AxOworQEAgLTEwODEsNyArMTA4MSw3IEBAIHJtYXBfZGlmZmtleXMoCisgCXRtcC5ybV9mbGFncyAmPSB+WEZTX1JNQVBfUkVDX0ZMQUdTOworIAlvYiA9IGxpYnhmc19ybWFwX2lyZWNfb2Zmc2V0X3BhY2soJnRtcCk7CisgCistCWQgPSAoX19pbnQ2NF90KWtwMS0+cm1fc3RhcnRibG9jayAtIGtwMi0+cm1fc3RhcnRibG9jazsKKysJZCA9IChpbnQ2NF90KWtwMS0+cm1fc3RhcnRibG9jayAtIGtwMi0+cm1fc3RhcnRibG9jazsKKyAJaWYgKGQpCisgCQlyZXR1cm4gZDsKKyAKK0BAIC0xMTkyLDEwICsxMTkyLDEwIEBAIGZpeF9pbm9kZV9yZWZsaW5rX2ZsYWdzKAorIHsKKyAJc3RydWN0IGlub190cmVlX25vZGUJKmlyZWM7CisgCWludAkJCWJpdDsKKy0JX191aW50NjRfdAkJd2FzOworLQlfX3VpbnQ2NF90CQlpczsKKy0JX191aW50NjRfdAkJZGlmZjsKKy0JX191aW50NjRfdAkJbWFzazsKKysJdWludDY0X3QJCXdhczsKKysJdWludDY0X3QJCWlzOworKwl1aW50NjRfdAkJZGlmZjsKKysJdWludDY0X3QJCW1hc2s7CisgCWludAkJCWVycm9yID0gMDsKKyAJeGZzX2FnaW5vX3QJCWFnaW5vOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9ybWFwLmggYi9yZXBhaXIvcm1hcC5oCitpbmRleCA3NTJlY2U4Mi4uMTYxNmFiN2QgMTAwNjQ0CistLS0gYS9yZXBhaXIvcm1hcC5oCisrKysgYi9yZXBhaXIvcm1hcC5oCitAQCAtNDQsNyArNDQsNyBAQCBleHRlcm4gaW50IHJtYXBfaW5pdF9jdXJzb3IoeGZzX2FnbnVtYmVyX3QsIHN0cnVjdCB4ZnNfc2xhYl9jdXJzb3IgKiopOworIGV4dGVybiB2b2lkIHJtYXBfYXZvaWRfY2hlY2sodm9pZCk7CisgZXh0ZXJuIGludCBybWFwc192ZXJpZnlfYnRyZWUoc3RydWN0IHhmc19tb3VudCAqLCB4ZnNfYWdudW1iZXJfdCk7CisgCistZXh0ZXJuIF9faW50NjRfdCBybWFwX2RpZmZrZXlzKHN0cnVjdCB4ZnNfcm1hcF9pcmVjICprcDEsCisrZXh0ZXJuIGludDY0X3Qgcm1hcF9kaWZma2V5cyhzdHJ1Y3QgeGZzX3JtYXBfaXJlYyAqa3AxLAorIAkJc3RydWN0IHhmc19ybWFwX2lyZWMgKmtwMik7CisgZXh0ZXJuIHZvaWQgcm1hcF9oaWdoX2tleV9mcm9tX3JlYyhzdHJ1Y3QgeGZzX3JtYXBfaXJlYyAqcmVjLAorIAkJc3RydWN0IHhmc19ybWFwX2lyZWMgKmtleSk7CitkaWZmIC0tZ2l0IGEvcmVwYWlyL3NiLmMgYi9yZXBhaXIvc2IuYworaW5kZXggNzdlNTE1NDYuLmFjYzkyODM5IDEwMDY0NAorLS0tIGEvcmVwYWlyL3NiLmMKKysrKyBiL3JlcGFpci9zYi5jCitAQCAtNDAsNyArNDAsNyBAQCBjb3B5X3NiKHhmc19zYl90ICpzb3VyY2UsIHhmc19zYl90ICpkZXN0KQorIAl4ZnNfaW5vX3QJdXF1b3Rpbm87CisgCXhmc19pbm9fdAlncXVvdGlubzsKKyAJeGZzX2lub190CXBxdW90aW5vOworLQlfX3VpbnQxNl90CXZlcnNpb25udW07CisrCXVpbnQxNl90CXZlcnNpb25udW07CisgCisgCXJvb3Rpbm8gPSBkZXN0LT5zYl9yb290aW5vOworIAlyYm1pbm8gPSBkZXN0LT5zYl9yYm1pbm87CitAQCAtMTA2LDggKzEwNiw4IEBAIHZlcmlmeV9zYl9ibG9ja3NpemUoeGZzX3NiX3QgKnNiKQorIHN0YXRpYyBpbnQKKyBfX2ZpbmRfc2Vjb25kYXJ5X3NiKAorIAl4ZnNfc2JfdAkqcnNiLAorLQlfX3VpbnQ2NF90CXN0YXJ0LAorLQlfX3VpbnQ2NF90CXNraXApCisrCXVpbnQ2NF90CXN0YXJ0LAorKwl1aW50NjRfdAlza2lwKQorIHsKKyAJeGZzX29mZl90CW9mZjsKKyAJeGZzX3NiX3QJKnNiOworQEAgLTE4NywxMyArMTg3LDEzIEBAIF9fZmluZF9zZWNvbmRhcnlfc2IoCisgCisgc3RhdGljIGludAorIGd1ZXNzX2RlZmF1bHRfZ2VvbWV0cnkoCistCV9fdWludDY0X3QJCSphZ3NpemUsCistCV9fdWludDY0X3QJCSphZ2NvdW50LAorKwl1aW50NjRfdAkJKmFnc2l6ZSwKKysJdWludDY0X3QJCSphZ2NvdW50LAorIAlsaWJ4ZnNfaW5pdF90CQkqeCkKKyB7CisgCXN0cnVjdCBmc190b3BvbG9neQlmdDsKKyAJaW50CQkJYmxvY2tsb2c7CistCV9fdWludDY0X3QJCWRibG9ja3M7CisrCXVpbnQ2NF90CQlkYmxvY2tzOworIAlpbnQJCQltdWx0aWRpc2s7CisgCisgCW1lbXNldCgmZnQsIDAsIHNpemVvZihmdCkpOworQEAgLTIxNiw5ICsyMTYsOSBAQCBpbnQKKyBmaW5kX3NlY29uZGFyeV9zYih4ZnNfc2JfdCAqcnNiKQorIHsKKyAJaW50CQlyZXR2YWwgPSAwOworLQlfX3VpbnQ2NF90CWFnY291bnQ7CistCV9fdWludDY0X3QJYWdzaXplOworLQlfX3VpbnQ2NF90CXNraXA7CisrCXVpbnQ2NF90CWFnY291bnQ7CisrCXVpbnQ2NF90CWFnc2l6ZTsKKysJdWludDY0X3QJc2tpcDsKKyAJaW50CQlibG9ja2xvZzsKKyAKKyAJLyoKK0BAIC0yMjksNyArMjI5LDcgQEAgZmluZF9zZWNvbmRhcnlfc2IoeGZzX3NiX3QgKnJzYikKKyAJZG9fd2FybihfKCJcbmF0dGVtcHRpbmcgdG8gZmluZCBzZWNvbmRhcnkgc3VwZXJibG9jay4uLlxuIikpOworIAorIAlpZiAodmVyaWZ5X3NiX2Jsb2Nrc2l6ZShyc2IpID09IDApIHsKKy0JCXNraXAgPSAoX191aW50NjRfdClyc2ItPnNiX2FnYmxvY2tzICogcnNiLT5zYl9ibG9ja3NpemU7CisrCQlza2lwID0gKHVpbnQ2NF90KXJzYi0+c2JfYWdibG9ja3MgKiByc2ItPnNiX2Jsb2Nrc2l6ZTsKKyAJCWlmIChza2lwID49IFhGU19BR19NSU5fQllURVMgJiYgc2tpcCA8PSBYRlNfQUdfTUFYX0JZVEVTKQorIAkJCXJldHZhbCA9IF9fZmluZF9zZWNvbmRhcnlfc2IocnNiLCBza2lwLCBza2lwKTsKKyAJfQorQEAgLTM0Myw3ICszNDMsNyBAQCBzYl92YWxpZGF0ZV9pbm9fYWxpZ24oc3RydWN0IHhmc19zYiAqc2IpCisgaW50CisgdmVyaWZ5X3NiKGNoYXIgKnNiX2J1ZiwgeGZzX3NiX3QgKnNiLCBpbnQgaXNfcHJpbWFyeV9zYikKKyB7CistCV9fdWludDMyX3QJYnNpemU7CisrCXVpbnQzMl90CWJzaXplOworIAlpbnQJCWk7CisgCWludAkJcmV0OworIAorQEAgLTM5OSw3ICszOTksNyBAQCB2ZXJpZnlfc2IoY2hhciAqc2JfYnVmLCB4ZnNfc2JfdCAqc2IsIGludCBpc19wcmltYXJ5X3NiKQorIAkJc2ItPnNiX2RibG9ja3MgPCBYRlNfTUlOX0RCTE9DS1Moc2IpKQorIAkJcmV0dXJuKFhSX0JBRF9GU19TSVpFX0RBVEEpOworIAorLQlpZiAoc2ItPnNiX2FnYmxrbG9nICE9IChfX3VpbnQ4X3QpbGlieGZzX2xvZzJfcm91bmR1cChzYi0+c2JfYWdibG9ja3MpKQorKwlpZiAoc2ItPnNiX2FnYmxrbG9nICE9ICh1aW50OF90KWxpYnhmc19sb2cyX3JvdW5kdXAoc2ItPnNiX2FnYmxvY2tzKSkKKyAJCXJldHVybihYUl9CQURfRlNfU0laRV9EQVRBKTsKKyAKKyAJaWYgKHNiLT5zYl9pbm9kZXNpemUgPCBYRlNfRElOT0RFX01JTl9TSVpFICAgICAgICAgICAgICAgICAgICAgfHwKK2RpZmYgLS1naXQgYS9yZXBhaXIvc2Nhbi5jIGIvcmVwYWlyL3NjYW4uYworaW5kZXggYjllZjRkYzMuLjQ0NzYxMWFjIDEwMDY0NAorLS0tIGEvcmVwYWlyL3NjYW4uYworKysrIGIvcmVwYWlyL3NjYW4uYworQEAgLTQyLDEzICs0MiwxMyBAQCBzdHJ1Y3QgYWdoZHJfY250cyB7CisgCXhmc19hZ251bWJlcl90CWFnbm87CisgCXhmc19leHRsZW5fdAlhZ2ZmcmVlYmxrczsKKyAJeGZzX2V4dGxlbl90CWFnZmxvbmdlc3Q7CistCV9fdWludDY0X3QJYWdmYnRyZWVibGtzOworLQlfX3VpbnQzMl90CWFnaWNvdW50OworLQlfX3VpbnQzMl90CWFnaWZyZWVjb3VudDsKKy0JX191aW50NjRfdAlmZGJsb2NrczsKKy0JX191aW50NjRfdAl1c2VkYmxvY2tzOworLQlfX3VpbnQ2NF90CWlmcmVlY291bnQ7CistCV9fdWludDMyX3QJZmlidGZyZWVjb3VudDsKKysJdWludDY0X3QJYWdmYnRyZWVibGtzOworKwl1aW50MzJfdAlhZ2ljb3VudDsKKysJdWludDMyX3QJYWdpZnJlZWNvdW50OworKwl1aW50NjRfdAlmZGJsb2NrczsKKysJdWludDY0X3QJdXNlZGJsb2NrczsKKysJdWludDY0X3QJaWZyZWVjb3VudDsKKysJdWludDMyX3QJZmlidGZyZWVjb3VudDsKKyB9OworIAorIHZvaWQKK0BAIC03MCwxMCArNzAsMTAgQEAgc2Nhbl9zYnRyZWUoCisgCQkJCXhmc19hZ251bWJlcl90CQlhZ25vLAorIAkJCQlpbnQJCQlzdXNwZWN0LAorIAkJCQlpbnQJCQlpc3Jvb3QsCistCQkJCV9fdWludDMyX3QJCW1hZ2ljLAorKwkJCQl1aW50MzJfdAkJbWFnaWMsCisgCQkJCXZvaWQJCQkqcHJpdiksCisgCWludAkJaXNyb290LAorLQlfX3VpbnQzMl90CW1hZ2ljLAorKwl1aW50MzJfdAltYWdpYywKKyAJdm9pZAkJKnByaXYsCisgCWNvbnN0IHN0cnVjdCB4ZnNfYnVmX29wcyAqb3BzKQorIHsKK0BAIC0xMTAsMjMgKzExMCwyMyBAQCBzY2FuX2xidHJlZSgKKyAJCQkJeGZzX2ZzYmxvY2tfdAkJYm5vLAorIAkJCQl4ZnNfaW5vX3QJCWlubywKKyAJCQkJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCistCQkJCV9fdWludDY0X3QJCSpuZXgsCisrCQkJCXVpbnQ2NF90CQkqbmV4LAorIAkJCQlibGttYXBfdAkJKipibGttYXBwLAorIAkJCQlibWFwX2N1cnNvcl90CQkqYm1fY3Vyc29yLAorIAkJCQlpbnQJCQlpc3Jvb3QsCisgCQkJCWludAkJCWNoZWNrX2R1cHMsCisgCQkJCWludAkJCSpkaXJ0eSwKKy0JCQkJX191aW50NjRfdAkJbWFnaWMpLAorKwkJCQl1aW50NjRfdAkJbWFnaWMpLAorIAlpbnQJCXR5cGUsCisgCWludAkJd2hpY2hmb3JrLAorIAl4ZnNfaW5vX3QJaW5vLAorIAl4ZnNfcmZzYmxvY2tfdAkqdG90LAorLQlfX3VpbnQ2NF90CSpuZXgsCisrCXVpbnQ2NF90CSpuZXgsCisgCWJsa21hcF90CSoqYmxrbWFwcCwKKyAJYm1hcF9jdXJzb3JfdAkqYm1fY3Vyc29yLAorIAlpbnQJCWlzcm9vdCwKKyAJaW50CQljaGVja19kdXBzLAorLQlfX3VpbnQ2NF90CW1hZ2ljLAorKwl1aW50NjRfdAltYWdpYywKKyAJY29uc3Qgc3RydWN0IHhmc19idWZfb3BzICpvcHMpCisgeworIAl4ZnNfYnVmX3QJKmJwOworQEAgLTE3OSwxMyArMTc5LDEzIEBAIHNjYW5fYm1hcGJ0KAorIAl4ZnNfZnNibG9ja190CQlibm8sCisgCXhmc19pbm9fdAkJaW5vLAorIAl4ZnNfcmZzYmxvY2tfdAkJKnRvdCwKKy0JX191aW50NjRfdAkJKm5leCwKKysJdWludDY0X3QJCSpuZXgsCisgCWJsa21hcF90CQkqKmJsa21hcHAsCisgCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCisgCWludAkJCWlzcm9vdCwKKyAJaW50CQkJY2hlY2tfZHVwcywKKyAJaW50CQkJKmRpcnR5LAorLQlfX3VpbnQ2NF90CQltYWdpYykKKysJdWludDY0X3QJCW1hZ2ljKQorIHsKKyAJaW50CQkJaTsKKyAJaW50CQkJZXJyOworQEAgLTU0OCw3ICs1NDgsNyBAQCBzY2FuX2FsbG9jYnQoCisgCXhmc19hZ251bWJlcl90CQlhZ25vLAorIAlpbnQJCQlzdXNwZWN0LAorIAlpbnQJCQlpc3Jvb3QsCistCV9fdWludDMyX3QJCW1hZ2ljLAorKwl1aW50MzJfdAkJbWFnaWMsCisgCXZvaWQJCQkqcHJpdikKKyB7CisgCXN0cnVjdCBhZ2hkcl9jbnRzCSphZ2NudHMgPSBwcml2OworQEAgLTkzMCw3ICs5MzAsNyBAQCBzY2FuX3JtYXBidCgKKyAJeGZzX2FnbnVtYmVyX3QJCWFnbm8sCisgCWludAkJCXN1c3BlY3QsCisgCWludAkJCWlzcm9vdCwKKy0JX191aW50MzJfdAkJbWFnaWMsCisrCXVpbnQzMl90CQltYWdpYywKKyAJdm9pZAkJCSpwcml2KQorIHsKKyAJY29uc3QgY2hhcgkJKm5hbWUgPSAicm1hcCI7CitAQCAtMTIzMyw3ICsxMjMzLDcgQEAgc2Nhbl9yZWZjYnQoCisgCXhmc19hZ251bWJlcl90CQlhZ25vLAorIAlpbnQJCQlzdXNwZWN0LAorIAlpbnQJCQlpc3Jvb3QsCistCV9fdWludDMyX3QJCW1hZ2ljLAorKwl1aW50MzJfdAkJbWFnaWMsCisgCXZvaWQJCQkqcHJpdikKKyB7CisgCWNvbnN0IGNoYXIJCSpuYW1lID0gInJlZmNvdW50IjsKK0BAIC0xOTM5LDcgKzE5MzksNyBAQCBzY2FuX2lub2J0KAorIAl4ZnNfYWdudW1iZXJfdAkJYWdubywKKyAJaW50CQkJc3VzcGVjdCwKKyAJaW50CQkJaXNyb290LAorLQlfX3VpbnQzMl90CQltYWdpYywKKysJdWludDMyX3QJCW1hZ2ljLAorIAl2b2lkCQkJKnByaXYpCisgeworIAlzdHJ1Y3QgYWdoZHJfY250cwkqYWdjbnRzID0gcHJpdjsKK0BAIC0yMTc2LDcgKzIxNzYsNyBAQCB2YWxpZGF0ZV9hZ2YoCisgCXN0cnVjdCBhZ2hkcl9jbnRzCSphZ2NudHMpCisgeworIAl4ZnNfYWdibG9ja190CQlibm87CistCV9fdWludDMyX3QJCW1hZ2ljOworKwl1aW50MzJfdAkJbWFnaWM7CisgCisgCWJubyA9IGJlMzJfdG9fY3B1KGFnZi0+YWdmX3Jvb3RzW1hGU19CVE5VTV9CTk9dKTsKKyAJaWYgKGJubyAhPSAwICYmIHZlcmlmeV9hZ2JubyhtcCwgYWdubywgYm5vKSkgeworQEAgLTIyNzQsNyArMjI3NCw3IEBAIHZhbGlkYXRlX2FnaSgKKyB7CisgCXhmc19hZ2Jsb2NrX3QJCWJubzsKKyAJaW50CQkJaTsKKy0JX191aW50MzJfdAkJbWFnaWM7CisrCXVpbnQzMl90CQltYWdpYzsKKyAKKyAJYm5vID0gYmUzMl90b19jcHUoYWdpLT5hZ2lfcm9vdCk7CisgCWlmIChibm8gIT0gMCAmJiB2ZXJpZnlfYWdibm8obXAsIGFnbm8sIGJubykpIHsKK0BAIC0yNDk5LDEwICsyNDk5LDEwIEBAIHNjYW5fYWdzKAorIAlpbnQJCQlzY2FuX3RocmVhZHMpCisgeworIAlzdHJ1Y3QgYWdoZHJfY250cyAqYWdjbnRzOworLQlfX3VpbnQ2NF90CWZkYmxvY2tzID0gMDsKKy0JX191aW50NjRfdAlpY291bnQgPSAwOworLQlfX3VpbnQ2NF90CWlmcmVlY291bnQgPSAwOworLQlfX3VpbnQ2NF90CXVzZWRibG9ja3MgPSAwOworKwl1aW50NjRfdAlmZGJsb2NrcyA9IDA7CisrCXVpbnQ2NF90CWljb3VudCA9IDA7CisrCXVpbnQ2NF90CWlmcmVlY291bnQgPSAwOworKwl1aW50NjRfdAl1c2VkYmxvY2tzID0gMDsKKyAJeGZzX2FnbnVtYmVyX3QJaTsKKyAJd29ya19xdWV1ZV90CXdxOworIAorZGlmZiAtLWdpdCBhL3JlcGFpci9zY2FuLmggYi9yZXBhaXIvc2Nhbi5oCitpbmRleCBlYThjMGJmMi4uOWJiZTFlNjkgMTAwNjQ0CistLS0gYS9yZXBhaXIvc2Nhbi5oCisrKysgYi9yZXBhaXIvc2Nhbi5oCitAQCAtMzAsMjMgKzMwLDIzIEBAIGludCBzY2FuX2xidHJlZSgKKyAJCQkJeGZzX2ZzYmxvY2tfdAkJYm5vLAorIAkJCQl4ZnNfaW5vX3QJCWlubywKKyAJCQkJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCistCQkJCV9fdWludDY0X3QJCSpuZXgsCisrCQkJCXVpbnQ2NF90CQkqbmV4LAorIAkJCQlzdHJ1Y3QgYmxrbWFwCQkqKmJsa21hcHAsCisgCQkJCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCisgCQkJCWludAkJCWlzcm9vdCwKKyAJCQkJaW50CQkJY2hlY2tfZHVwcywKKyAJCQkJaW50CQkJKmRpcnR5LAorLQkJCQlfX3VpbnQ2NF90CQltYWdpYyksCisrCQkJCXVpbnQ2NF90CQltYWdpYyksCisgCWludAkJdHlwZSwKKyAJaW50CQl3aGljaGZvcmssCisgCXhmc19pbm9fdAlpbm8sCisgCXhmc19yZnNibG9ja190CSp0b3QsCistCV9fdWludDY0X3QJKm5leCwKKysJdWludDY0X3QJKm5leCwKKyAJc3RydWN0IGJsa21hcAkqKmJsa21hcHAsCisgCWJtYXBfY3Vyc29yX3QJKmJtX2N1cnNvciwKKyAJaW50CQlpc3Jvb3QsCisgCWludAkJY2hlY2tfZHVwcywKKy0JX191aW50NjRfdAltYWdpYywKKysJdWludDY0X3QJbWFnaWMsCisgCWNvbnN0IHN0cnVjdCB4ZnNfYnVmX29wcyAqb3BzKTsKKyAKKyBpbnQgc2Nhbl9ibWFwYnQoCitAQCAtNTcsMTMgKzU3LDEzIEBAIGludCBzY2FuX2JtYXBidCgKKyAJeGZzX2ZzYmxvY2tfdAkJYm5vLAorIAl4ZnNfaW5vX3QJCWlubywKKyAJeGZzX3Jmc2Jsb2NrX3QJCSp0b3QsCistCV9fdWludDY0X3QJCSpuZXgsCisrCXVpbnQ2NF90CQkqbmV4LAorIAlzdHJ1Y3QgYmxrbWFwCQkqKmJsa21hcHAsCisgCWJtYXBfY3Vyc29yX3QJCSpibV9jdXJzb3IsCisgCWludAkJCWlzcm9vdCwKKyAJaW50CQkJY2hlY2tfZHVwcywKKyAJaW50CQkJKmRpcnR5LAorLQlfX3VpbnQ2NF90CQltYWdpYyk7CisrCXVpbnQ2NF90CQltYWdpYyk7CisgCisgdm9pZAorIHNjYW5fYWdzKAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvbGlua19uZWVkZWRfbGlicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzL2xpbmtfbmVlZGVkX2xpYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZTYzNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvbGlua19uZWVkZWRfbGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLUluZGV4OiB4ZnNwcm9ncy00LjEwLjAvbGlieGNtZC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHhmc3Byb2dzLTQuMTAuMC5vcmlnL2xpYnhjbWQvTWFrZWZpbGUKLSsrKyB4ZnNwcm9ncy00LjEwLjAvbGlieGNtZC9NYWtlZmlsZQotQEAgLTMwLDEwICszMCwyMSBAQCBMQ0ZMQUdTICs9IC1ERU5BQkxFX0VESVRMSU5FCi0gTFRMSUJTICs9ICQoTElCRURJVExJTkUpICQoTElCVEVSTUNBUCkKLSBlbmRpZgotIAotK2lmZXEgKCQoRU5BQkxFX0JMS0lEKSx5ZXMpCi0rTENGTEFHUyArPSAtREVOQUJMRV9CTEtJRAotK0xUTElCUyArPSAkKExJQkJMS0lEKQotK2VuZGlmCi0rCi0rTFRMSUJTICs9ICQoTElCWEZTKQotKwotIGRlZmF1bHQ6IGx0ZGVwZW5kICQoTFRMSUJSQVJZKQotIAotIGluY2x1ZGUgJChCVUlMRFJVTEVTKQotIAotLWluc3RhbGwgaW5zdGFsbC1kZXY6IGRlZmF1bHQKLStpbnN0YWxsOiBkZWZhdWx0Ci0rCSQoSU5TVEFMTF9MVExJQikKLSsKLStpbnN0YWxsLWRldjogZGVmYXVsdAotKwkkKElOU1RBTExfTFRMSUJfREVWKQotIAotIC1pbmNsdWRlIC5sdGRlcAotSW5kZXg6IHhmc3Byb2dzLTQuMTAuMC9saWJ4ZnMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4ZnNwcm9ncy00LjEwLjAub3JpZy9saWJ4ZnMvTWFrZWZpbGUKLSsrKyB4ZnNwcm9ncy00LjEwLjAvbGlieGZzL01ha2VmaWxlCi1AQCAtMTM3LDYgKzEzNyw3IEBAIGluY2x1ZGUgJChCVUlMRFJVTEVTKQotIAotIGluc3RhbGw6IGRlZmF1bHQKLSAJJChJTlNUQUxMKSAtbSA3NTUgLWQgJChQS0dfSU5DX0RJUikKLSsJJChJTlNUQUxMX0xUTElCKQotIAotIGluc3RhbGwtaGVhZGVyczogJChhZGRzdWZmaXggLWhkcnMsICQoUEtHSEZJTEVTKSkKLSAKLUluZGV4OiB4ZnNwcm9ncy00LjEwLjAvbGlieGxvZy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHhmc3Byb2dzLTQuMTAuMC5vcmlnL2xpYnhsb2cvTWFrZWZpbGUKLSsrKyB4ZnNwcm9ncy00LjEwLjAvbGlieGxvZy9NYWtlZmlsZQotQEAgLTE5LDYgKzE5LDEwIEBAIGRlZmF1bHQ6IGx0ZGVwZW5kICQoTFRMSUJSQVJZKQotIAotIGluY2x1ZGUgJChCVUlMRFJVTEVTKQotIAotLWluc3RhbGwgaW5zdGFsbC1kZXY6IGRlZmF1bHQKLStpbnN0YWxsOiBkZWZhdWx0Ci0rCSQoSU5TVEFMTF9MVExJQikKLSsKLStpbnN0YWxsLWRldjogZGVmYXVsdAotKwkkKElOU1RBTExfTFRMSUJfREVWKQotIAotIC1pbmNsdWRlIC5sdGRlcAotSW5kZXg6IHhmc3Byb2dzLTQuMTAuMC9pby9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHhmc3Byb2dzLTQuMTAuMC5vcmlnL2lvL01ha2VmaWxlCi0rKysgeGZzcHJvZ3MtNC4xMC4wL2lvL01ha2VmaWxlCi1AQCAtMTMsNyArMTMsNyBAQAotIAlnZXRydXNhZ2UuYyBpbWFwLmMgbGluay5jIG1tYXAuYyBvcGVuLmMgcGFyZW50LmMgcHJlYWQuYyBwcmVhbGxvYy5jIFwKLSAJcHdyaXRlLmMgcmVmbGluay5jIHNlZWsuYyBzaHV0ZG93bi5jIHN5bmMuYyB0cnVuY2F0ZS5jIHV0aW1lcy5jCi0gCi0tTExETElCUyA9ICQoTElCWENNRCkgJChMSUJIQU5ETEUpICQoTElCUFRIUkVBRCkKLStMTERMSUJTID0gJChMSUJYQ01EKSAkKExJQkhBTkRMRSkgJChMSUJVVUlEKSAkKExJQlBUSFJFQUQpCi0gTFRERVBFTkRFTkNJRVMgPSAkKExJQlhDTUQpICQoTElCSEFORExFKQotIExMREZMQUdTID0gLXN0YXRpYy1saWJ0b29sLWxpYnMKLSAKLUluZGV4OiB4ZnNwcm9ncy00LjEwLjAvcXVvdGEvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4ZnNwcm9ncy00LjEwLjAub3JpZy9xdW90YS9NYWtlZmlsZQotKysrIHhmc3Byb2dzLTQuMTAuMC9xdW90cS9NYWtlZmlsZQotQEAgLTE0LDcgKzE0LDcgQEAKLSBQQ0ZJTEVTID0gZGFyd2luLmMgZnJlZWJzZC5jIGlyaXguYyBsaW51eC5jCi0gTFNSQ0ZJTEVTID0gJChzaGVsbCBlY2hvICQoUENGSUxFUykgfCBzZWQgLWUgInMvJChQS0dfUExBVEZPUk0pLmMvL2ciKQotIAotLUxMRExJQlMgPSAkKExJQlhDTUQpCi0rTExETElCUyA9ICQoTElCWENNRCkgJChMSUJVVUlEKQotIExUREVQRU5ERU5DSUVTID0gJChMSUJYQ01EKQotIExMREZMQUdTID0gLXN0YXRpYwotIAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9yZW1vdmVfZmxhZ3NfZnJvbV9idWlsZF9mbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzL3JlbW92ZV9mbGFnc19mcm9tX2J1aWxkX2ZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYTlhMjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9yZW1vdmVfZmxhZ3NfZnJvbV9idWlsZF9mbGFncy5wYXRjaApAQCAtMCwwICsxLDEzIEBACitJbmRleDogeGZzcHJvZ3MtNC4xMi4wL2luY2x1ZGUvYnVpbGRkZWZzLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0geGZzcHJvZ3MtNC4xMi4wLm9yaWcvaW5jbHVkZS9idWlsZGRlZnMuaW4KKysrKyB4ZnNwcm9ncy00LjEyLjAvaW5jbHVkZS9idWlsZGRlZnMuaW4KK0BAIC0xNjQsNyArMTY0LDcgQEAgaWZlcSAoJChFTkFCTEVfR0VUVEVYVCkseWVzKQorIEdDRkxBR1MgKz0gLURFTkFCTEVfR0VUVEVYVAorIGVuZGlmCisgCistQlVJTERfQ0ZMQUdTICs9ICQoR0NGTEFHUykgJChQQ0ZMQUdTKQorK0JVSUxEX0NGTEFHUyArPSAkKEdDRkxBR1MpCisgIyBGaXJzdCwgR2xvYmFsLCBQbGF0Zm9ybSwgTG9jYWwgQ0ZMQUdTCisgQ0ZMQUdTICs9ICQoRkNGTEFHUykgJChPUFRJTUlaRVIpICQoR0NGTEFHUykgJChQQ0ZMQUdTKSAkKExDRkxBR1MpCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy94ZnNwcm9ncy00LjEyLjAtZml4X211c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy94ZnNwcm9ncy00LjEyLjAtZml4X211c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjNTdlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzL3hmc3Byb2dzLTQuMTIuMC1maXhfbXVzbC5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSAyMTI1MzYxMGY5ZWY4N2RiOGUyYTc1Yjg2M2I3ZmNmYmQwY2RiNDIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkRhcnJpY2sgSi4gV29uZyIgPGRhcnJpY2sud29uZ0BvcmFjbGUuY29tPgorRGF0ZTogVHVlLCAyNSBKdWwgMjAxNyAxMzo0NTowMSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBJbiBwYXRjaCA0OTQ0ZGVmYWQ0ICgieGZzX2RiOiByZWRpcmVjdCBwcmludGZzIHdoZW4KKyBtZXRhZHVtcGluZyB0byBzdGRvdXQiKSwgd2Ugc29sdmVkIHRoZSBwcm9ibGVtIG9mIHhmc19kYiBwcmludGZzIGVuZGluZyB1cCBpbgorIHRoZSBtZXRhZHVtcCBzdHJlYW0gYnkgcmVhc3NpZ25pbmcgc3Rkb3V0IGZvciB0aGUgZHVyYXRpb24gb2YgYSBzdGRvdXQKKyBtZXRhZHVtcC4gIFVuZm9ydHVuYXRlbHksIG11c2wgZG9lc24ndCBhbGxvdyBzdGRvdXQgdG8gYmUgcmVhc3NpZ25lZCAoaW4KKyB0aGVpciB2aWV3ICJleHRlcm4gRklMRSAqc3Rkb3V0IiBtZWFucyAiZXh0ZXJuIEZJTEUgKiBjb25zdCBzdGRvdXQiKSwgc28gd2UKKyBhYmFuZG9uIHRoZSBvbGQgYXBwcm9hY2ggaW4gZmF2b3Igb2YgcGxheWluZyBnYW1lcyB3aXRoIGR1cCgpIHRvIHN3aXRjaCB0aGUKKyByYXcgZmlsZSBkZXNjcmlwdG9ycy4KKworV2hpbGUgd2UncmUgYXQgaXQsIGZpeCBhIHJlZ3Jlc3Npb24gd2hlcmUgYW4gdW5jb252ZXJ0ZWQgb3V0ZiB0ZXN0CithbGxvd3MgcHJvZ3Jlc3MgaW5mbyB0byBlbmQgdXAgaW4gdGhlIG1ldGFkdW1wIHN0cmVhbS4KKworU2lnbmVkLW9mZi1ieTogRGFycmljayBKLiBXb25nIDxkYXJyaWNrLndvbmdAb3JhY2xlLmNvbT4KKy0tLQorIGRiL21ldGFkdW1wLmMgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RiL21ldGFkdW1wLmMgYi9kYi9tZXRhZHVtcC5jCitpbmRleCA5NjY0MWUwLi40ZTJmNjQ4IDEwMDY0NAorLS0tIGEvZGIvbWV0YWR1bXAuYworKysrIGIvZGIvbWV0YWR1bXAuYworQEAgLTc4LDYgKzc4LDcgQEAgc3RhdGljIGludAkJb2JmdXNjYXRlID0gMTsKKyBzdGF0aWMgaW50CQl6ZXJvX3N0YWxlX2RhdGEgPSAxOworIHN0YXRpYyBpbnQJCXNob3dfd2FybmluZ3MgPSAwOworIHN0YXRpYyBpbnQJCXByb2dyZXNzX3NpbmNlX3dhcm5pbmcgPSAwOworK3N0YXRpYyBib29sCQlzdGRvdXRfbWV0YWR1bXA7CisgCisgdm9pZAorIG1ldGFkdW1wX2luaXQodm9pZCkKK0BAIC0xMzcsNyArMTM4LDcgQEAgcHJpbnRfcHJvZ3Jlc3MoY29uc3QgY2hhciAqZm10LCAuLi4pCisgCXZhX2VuZChhcCk7CisgCWJ1ZltzaXplb2YoYnVmKS0xXSA9ICdcMCc7CisgCistCWYgPSAob3V0ZiA9PSBzdGRvdXQpID8gc3RkZXJyIDogc3Rkb3V0OworKwlmID0gc3Rkb3V0X21ldGFkdW1wID8gc3RkZXJyIDogc3Rkb3V0OworIAlmcHJpbnRmKGYsICJcciUtNTlzIiwgYnVmKTsKKyAJZmZsdXNoKGYpOworIAlwcm9ncmVzc19zaW5jZV93YXJuaW5nID0gMTsKK0BAIC0yNzUwLDcgKzI3NTEsOCBAQCBtZXRhZHVtcF9mKAorIAl4ZnNfYWdudW1iZXJfdAlhZ25vOworIAlpbnQJCWM7CisgCWludAkJc3RhcnRfaW9jdXJfc3A7CistCWJvb2wJCXN0ZG91dF9tZXRhZHVtcCA9IGZhbHNlOworKwlpbnQJCW91dGZkID0gLTE7CisrCWludAkJcmV0OworIAljaGFyCQkqcDsKKyAKKyAJZXhpdGNvZGUgPSAxOworQEAgLTI4NzAsMTYgKzI4NzIsMzUgQEAgbWV0YWR1bXBfZigKKyAJCSAqIG1ldGFkdW1wIG9wZXJhdGlvbiBzbyB0aGF0IGRicHJpbnRmIGFuZCBvdGhlciBtZXNzYWdlcworIAkJICogYXJlIHNlbnQgdG8gdGhlIGNvbnNvbGUgaW5zdGVhZCBvZiBwb2xsdXRpbmcgdGhlCisgCQkgKiBtZXRhZHVtcCBzdHJlYW0uCisrCQkgKgorKwkJICogV2UgZ2V0IHRvIGRvIHRoaXMgdGhlIGhhcmQgd2F5IGJlY2F1c2UgbXVzbCBkb2Vzbid0CisrCQkgKiBhbGxvdyByZWFzc2lnbm1lbnQgb2Ygc3Rkb3V0LgorIAkJICovCistCQlvdXRmID0gc3Rkb3V0OworLQkJc3Rkb3V0ID0gc3RkZXJyOworKwkJZmZsdXNoKHN0ZG91dCk7CisrCQlvdXRmZCA9IGR1cChTVERPVVRfRklMRU5PKTsKKysJCWlmIChvdXRmZCA8IDApIHsKKysJCQlwZXJyb3IoIm9wZW5pbmcgZHVtcCBzdHJlYW0iKTsKKysJCQlnb3RvIG91dDsKKysJCX0KKysJCXJldCA9IGR1cDIoU1RERVJSX0ZJTEVOTywgU1RET1VUX0ZJTEVOTyk7CisrCQlpZiAocmV0IDwgMCkgeworKwkJCXBlcnJvcigicmVkaXJlY3Rpbmcgc3Rkb3V0Iik7CisrCQkJY2xvc2Uob3V0ZmQpOworKwkJCWdvdG8gb3V0OworKwkJfQorKwkJb3V0ZiA9IGZkb3BlbihvdXRmZCwgImEiKTsKKysJCWlmIChvdXRmID09IE5VTEwpIHsKKysJCQlmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBjcmVhdGUgZHVtcCBzdHJlYW1cbiIpOworKwkJCWR1cDIob3V0ZmQsIDEpOworKwkJCWNsb3NlKG91dGZkKTsKKysJCQlnb3RvIG91dDsKKysJCX0KKyAJCXN0ZG91dF9tZXRhZHVtcCA9IHRydWU7CisgCX0gZWxzZSB7CisgCQlvdXRmID0gZm9wZW4oYXJndltvcHRpbmRdLCAid2IiKTsKKyAJCWlmIChvdXRmID09IE5VTEwpIHsKKyAJCQlwcmludF93YXJuaW5nKCJjYW5ub3QgY3JlYXRlIGR1bXAgZmlsZSIpOworLQkJCWZyZWUobWV0YWJsb2NrKTsKKy0JCQlyZXR1cm4gMDsKKysJCQlnb3RvIG91dDsKKyAJCX0KKyAJfQorIAorQEAgLTI5MDcsMTUgKzI5MjgsMTkgQEAgbWV0YWR1bXBfZigKKyAJaWYgKHByb2dyZXNzX3NpbmNlX3dhcm5pbmcpCisgCQlmcHV0YygnXG4nLCBzdGRvdXRfbWV0YWR1bXAgPyBzdGRlcnIgOiBzdGRvdXQpOworIAorLQlpZiAoc3Rkb3V0X21ldGFkdW1wKQorLQkJc3Rkb3V0ID0gb3V0ZjsKKy0JZWxzZQorLQkJZmNsb3NlKG91dGYpOworKwlpZiAoc3Rkb3V0X21ldGFkdW1wKSB7CisrCQlmZmx1c2gob3V0Zik7CisrCQlmZmx1c2goc3Rkb3V0KTsKKysJCXJldCA9IGR1cDIob3V0ZmQsIFNURE9VVF9GSUxFTk8pOworKwkJaWYgKHJldCA8IDApCisrCQkJcGVycm9yKCJ1bi1yZWRpcmVjdGluZyBzdGRvdXQiKTsKKysJfQorKwlmY2xvc2Uob3V0Zik7CisgCisgCS8qIGNsZWFudXAgaW9jdXIgc3RhY2sgKi8KKyAJd2hpbGUgKGlvY3VyX3NwID4gc3RhcnRfaW9jdXJfc3ApCisgCQlwb3BfY3VyKCk7CistCisrb3V0OgorIAlmcmVlKG1ldGFibG9jayk7CisgCisgCXJldHVybiAwOworLS0gCisyLjEzLjMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzQuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzQuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdlMTBjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIlhGUyBGaWxlc3lzdGVtIFV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi1MSUNFTlNFX2xpYmhhbmRsZSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xMDJmN2ZlYzNkNTNjN2M4ZjBiN2JhZjliZjlkNzZhOCIKLURFUEVORFMgPSAidXRpbC1saW51eCB1dGlsLWxpbnV4LW5hdGl2ZSIKLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvZnMveGZzL3hmc3Byb2dzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rX25lZWRlZF9saWJzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkZGJiMDQ0OTNhZGRmMDE0ZGIwN2E3ZTJiOTZiMjgwNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGNiOWFiMmM2ODY2OTlkMzc5MTQzNTRjZTM5OTJiNGFmZjM2NzcwOTNjYmNlMDZhZDE4YmY3OThkYThhOGE3IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotUEFDS0FHRVMgPSsgIiR7UE59LWZzY2sgJHtQTn0tbWtmcyAke1BOfS1yZXBhaXIgbGliaGFuZGxlIgotCi1ERVBFTkRTICs9ICJ1dGlsLWxpbnV4IgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1mc2NrICR7UE59LW1rZnMgJHtQTn0tcmVwYWlyIgotCi1GSUxFU18ke1BOfS1mc2NrID0gIiR7YmFzZV9zYmluZGlyfS9mc2NrLnhmcyIKLUZJTEVTXyR7UE59LW1rZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L21rZnMueGZzIgotRklMRVNfJHtQTn0tcmVwYWlyID0gIiR7YmFzZV9zYmluZGlyfS94ZnNfcmVwYWlyIgotCi1GSUxFU19saWJoYW5kbGUgPSAiJHtiYXNlX2xpYmRpcn0vbGliaGFuZGxlJHtTT0xJQlN9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtZ2V0dGV4dD1ubyBcCi0gICAgICAgICAgICAgICAgSU5TVEFMTF9VU0VSPXJvb3QgXAotICAgICAgICAgICAgICAgIElOU1RBTExfR1JPVVA9cm9vdCBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2Fpb19oPXllcyBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfbGliX3J0X2xpb19saXN0aW89eWVzIFwKLSIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9tNCAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIGJsa2lkIgotCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLWVuYWJsZS1yZWFkbGluZT15ZXMsLS1lbmFibGUtcmVhZGxpbmU9bm8scmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2Jsa2lkXSA9ICItLWVuYWJsZS1ibGtpZD15ZXMsLS1lbmFibGUtYmxraWQ9bm8sdXRpbC1saW51eCIKLQotZXhwb3J0IERFQlVHPSItRE5ERUJVRyIKLQotRVhUUkFfT0VNQUtFID0gIkRJU1RfUk9PVD0nJHtEfSciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBleHBvcnQgQlVJTERfQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSIKLSAgICAjIFByZXZlbnQgTWFrZWZpbGUgZnJvbSBjYWxsaW5nIGNvbmZpZ3VyZSB3aXRob3V0IGFyZ3VtZW50cywKLSAgICAjIHdoZW4gZG9fY29uZmlndXJlIGdldHMgY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lLgotICAgIHJtIC1mICR7Qn0vaW5jbHVkZS9idWlsZGRlZnMgJHtCfS9pbmNsdWRlL3BsYXRmb3JtX2RlZnMuaCAke0J9L2NvbmZpZ3VyZQotICAgICMgUmVjcmVhdGUgY29uZmlndXJlIHNjcmlwdC4KLSAgICBvZV9ydW5tYWtlIGNvbmZpZ3VyZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsIGluc3RhbGwtZGV2Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc4ODY5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzQuMTIuMC5iYgpAQCAtMCwwICsxLDY1IEBACitTVU1NQVJZID0gIlhGUyBGaWxlc3lzdGVtIFV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNFTlNFX2xpYmhhbmRsZSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xMDJmN2ZlYzNkNTNjN2M4ZjBiN2JhZjliZjlkNzZhOCIKK0RFUEVORFMgPSAidXRpbC1saW51eCB1dGlsLWxpbnV4LW5hdGl2ZSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvZnMveGZzL3hmc3Byb2dzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXhmc3Byb2dzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEteGZzLXJlbW92ZS1kb3VibGUtdW5kZXJzY29yZS1pbnRlZ2VyLXR5cGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZV9mbGFnc19mcm9tX2J1aWxkX2ZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3hmc3Byb2dzLTQuMTIuMC1maXhfbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMzQ4YjBlMWQ3YmQxY2Q4MmQ2NGI5MWZmMzdlNzI3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzMwYWQ4ZDczN2Y0MTUyYWU1MTE1ODAxMDJlMmZjNDkyMTJiYjUxZGZiNGI2MTQwODQzNDRhYmFlNDZkMGRmIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworUEFDS0FHRVMgPSsgIiR7UE59LWZzY2sgJHtQTn0tbWtmcyAke1BOfS1yZXBhaXIgbGliaGFuZGxlIgorCitERVBFTkRTICs9ICJ1dGlsLWxpbnV4IgorCitSREVQRU5EU18ke1BOfSA9ICIke1BOfS1mc2NrICR7UE59LW1rZnMgJHtQTn0tcmVwYWlyIgorCitGSUxFU18ke1BOfS1mc2NrID0gIiR7YmFzZV9zYmluZGlyfS9mc2NrLnhmcyIKK0ZJTEVTXyR7UE59LW1rZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L21rZnMueGZzIgorRklMRVNfJHtQTn0tcmVwYWlyID0gIiR7YmFzZV9zYmluZGlyfS94ZnNfcmVwYWlyIgorCitGSUxFU19saWJoYW5kbGUgPSAiJHtiYXNlX2xpYmRpcn0vbGliaGFuZGxlJHtTT0xJQlN9IgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtZ2V0dGV4dD1ubyBcCisgICAgICAgICAgICAgICAgSU5TVEFMTF9VU0VSPXJvb3QgXAorICAgICAgICAgICAgICAgIElOU1RBTExfR1JPVVA9cm9vdCBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2Fpb19oPXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfbGliX3J0X2xpb19saXN0aW89eWVzIFwKKyIKKworRElTQUJMRV9TVEFUSUMgPSAiIgorRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9tNCAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIGJsa2lkIgorCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLWVuYWJsZS1yZWFkbGluZT15ZXMsLS1lbmFibGUtcmVhZGxpbmU9bm8scmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2Jsa2lkXSA9ICItLWVuYWJsZS1ibGtpZD15ZXMsLS1lbmFibGUtYmxraWQ9bm8sdXRpbC1saW51eCIKKworZXhwb3J0IERFQlVHPSItRE5ERUJVRyIKK2V4cG9ydCBCVUlMRF9WRVJCT1NFPSIxIgorZXhwb3J0IHRhZ25hbWU9IkNDIgorCitFWFRSQV9PRU1BS0UgPSAiRElTVF9ST09UPScke0R9JyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIGV4cG9ydCBCVUlMRF9DQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9IgorICAgICMgUHJldmVudCBNYWtlZmlsZSBmcm9tIGNhbGxpbmcgY29uZmlndXJlIHdpdGhvdXQgYXJndW1lbnRzLAorICAgICMgd2hlbiBkb19jb25maWd1cmUgZ2V0cyBjYWxsZWQgZm9yIGEgc2Vjb25kIHRpbWUuCisgICAgcm0gLWYgJHtCfS9pbmNsdWRlL2J1aWxkZGVmcyAke0J9L2luY2x1ZGUvcGxhdGZvcm1fZGVmcy5oICR7Qn0vY29uZmlndXJlCisgICAgIyBSZWNyZWF0ZSBjb25maWd1cmUgc2NyaXB0LgorICAgIG9lX3J1bm1ha2UgY29uZmlndXJlCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtZGV2CisgICAgICAgIHJtICR7RH0ke2xpYmRpcn0vKi5sYQorICAgICAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRQppbmRleCA3ZWVlMGUxLi4yNWVmODVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9SRUFETUUKQEAgLTEsMTcgKzEsMTcgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBweXJvCiticmFuY2g6IHJvY2tvCiByZXZpc2lvbjogSEVBRAogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0Ci1icmFuY2g6IHB5cm8KK2JyYW5jaDogcm9ja28KIHJldmlzaW9uOiBIRUFECiAKLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1nbm9tZV1bcHlyb10nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLWdub21lXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0JwogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1nbm9tZV1bcHlyb11bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtZ25vbWVdW3JvY2tvXVtQQVRDSCcKIAotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKK3JvY2tvIEJyYW5jaCBNYWludGFpbmVyOgogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCmluZGV4IGZjZTU2MjcuLmExMzg4MTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTIsNiArMTIsNiBAQAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwogTEFZRVJWRVJTSU9OX2dub21lLWxheWVyID0gIjEiCiAKLUxBWUVSREVQRU5EU19nbm9tZS1sYXllciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciIKK0xBWUVSREVQRU5EU19nbm9tZS1sYXllciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciBuZXR3b3JraW5nLWxheWVyIgogCiBBVkFISV9HVEtfcG4tYXZhaGktdWkgPSAiZ3RrIGd0azMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2NoZWVzZS9jaGVlc2VfMi4zMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9jaGVlc2UvY2hlZXNlXzIuMzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y1YTViMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2NoZWVzZS9jaGVlc2VfMi4zMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJUYWtlIHBob3RvcyBhbmQgdmlkZW9zIHdpdGggeW91ciB3ZWJjYW0sIHdpdGggZnVuIGdyYXBoaWNhbCBlZmZlY3RzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWExN2NiMGE4NzNkMjUyNDQwYWNmZGY5YjNkMGU3ZmJmIgotCi1ERVBFTkRTID0gImd0aysgZ3N0cmVhbWVyIGdzdC1wbHVnaW5zLWJhc2UgbGliY2FuYmVycmEgdWRldiBsaWJyc3ZnIGdub21lLWRlc2t0b3AgZXZvbHV0aW9uLWRhdGEtc2VydmVyIGludGx0b29sLW5hdGl2ZSIKLQotUFIgPSAicjIiCi0KLWluaGVyaXQgZ25vbWUKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMTU5OWZkZWQ4YTE3OTdlYTUxZmIwMTBhZjRlNmM0NWIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI0OGYwMzQ3MGM2ZjUyN2NhYTBlM2IyNjlkM2FmY2ZmODZhZTA5MzlhNzRmNjZjZTAzMGQ0ZWVkM2JjM2NiZDlhIgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJnc3QtcGx1Z2lucy1nb29kLW1ldGEgZ3N0LXBsdWdpbnMtYmFzZS1tZXRhIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAiczogaGVscCA6IDpnIiAke1N9L01ha2VmaWxlLmFtCi19Ci0KLVBOQkxBQ0tMSVNUW2NoZWVzZV0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZ3N0cmVhbWVyIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtjaGVlc2VdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGdub21lLWRlc2t0b3AgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3L2Jyb3dzZXJfY29tbWFuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvYnJvd3Nlcl9jb21tYW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWU0NWUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvYnJvd3Nlcl9jb21tYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotSW1wb3J0ZWQgZnJvbSBEZWJpYW4gMC4xLjgtMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtLWdpdCBhL3NyYy9Db25maWcuY3h4IGIvc3JjL0NvbmZpZy5jeHgKLWluZGV4IDI4ZjM3YWIuLmJjNTg4MTkgMTAwNjQ0Ci0tLS0gYS9zcmMvQ29uZmlnLmN4eAotKysrIGIvc3JjL0NvbmZpZy5jeHgKLUBAIC0yMiw3ICsyMiw3IEBACi0gdXNpbmcgbmFtZXNwYWNlIGVQREZWaWV3OwotIAotIC8vIENvbnN0YW50cwotLXN0YXRpYyBjb25zdCBnY2hhciAqREVGQVVMVF9FWFRFUk5BTF9CUk9XU0VSX0NPTU1BTkRfTElORSA9ICJmaXJlZm94ICVzIjsKLStzdGF0aWMgY29uc3QgZ2NoYXIgKkRFRkFVTFRfRVhURVJOQUxfQlJPV1NFUl9DT01NQU5EX0xJTkUgPSAieC13d3ctYnJvd3NlciAlcyI7Ci0gc3RhdGljIGNvbnN0IGdjaGFyICpERUZBVUxUX09QRU5fRklMRV9GT0xERVIgPSBOVUxMOwotIHN0YXRpYyBjb25zdCBnY2hhciAqREVGQVVMVF9TQVZFX0ZJTEVfRk9MREVSID0gTlVMTDsKLSBzdGF0aWMgY29uc3QgZ2Jvb2xlYW4gREVGQVVMVF9TSE9XX1NUQVRVU0JBUiA9IFRSVUU7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3L2ZpeC1mb3JtYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3L2ZpeC1mb3JtYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZDViOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9lcGRmdmlldy9lcGRmdmlldy9maXgtZm9ybWF0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotSW1wb3J0ZWQgZnJvbSBEZWJpYW4gMC4xLjgtMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtLWdpdCBhL3NyYy9ndGsvTWFpblZpZXcuY3h4IGIvc3JjL2d0ay9NYWluVmlldy5jeHgKLWluZGV4IGI5ODNiZmYuLmY4N2RlMjggMTAwNjQ0Ci0tLS0gYS9zcmMvZ3RrL01haW5WaWV3LmN4eAotKysrIGIvc3JjL2d0ay9NYWluVmlldy5jeHgKLUBAIC02MzQsOCArNjM0LDkgQEAgTWFpblZpZXc6OnNob3dFcnJvck1lc3NhZ2UgKGNvbnN0IGdjaGFyICp0aXRsZSwgY29uc3QgZ2NoYXIgKmJvZHkpCi0gICAgICAgICAgICAgR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAotICAgICAgICAgICAgIEdUS19NRVNTQUdFX0VSUk9SLAotICAgICAgICAgICAgIEdUS19CVVRUT05TX09LLAotKyAgICAgICAgICAgICIlcyIsCi0gICAgICAgICAgICAgdGl0bGUpOwotLSAgICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0IChHVEtfTUVTU0FHRV9ESUFMT0coZXJyb3JEaWFsb2cpLAotKyAgICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0IChHVEtfTUVTU0FHRV9ESUFMT0coZXJyb3JEaWFsb2cpLCAiJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5KTsKLSAgICAgZ3RrX2RpYWxvZ19ydW4gKEdUS19ESUFMT0cgKGVycm9yRGlhbG9nKSk7Ci0gICAgIGd0a193aWRnZXRfZGVzdHJveSAoZXJyb3JEaWFsb2cpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9lcGRmdmlldy9lcGRmdmlldy9nbGliLXNpbmdsZS1pbmNsdWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9lcGRmdmlldy9lcGRmdmlldy9nbGliLXNpbmdsZS1pbmNsdWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGE0OTEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvZ2xpYi1zaW5nbGUtaW5jbHVkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUltcG9ydGVkIGZyb20gRGViaWFuIDAuMS44LTMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLS1naXQgYS9zcmMvZ3RrL1N0b2NrSWNvbnMuaCBiL3NyYy9ndGsvU3RvY2tJY29ucy5oCi1pbmRleCBjMTQyYTdhLi41OGZjZjJlIDEwMDY0NAotLS0tIGEvc3JjL2d0ay9TdG9ja0ljb25zLmgKLSsrKyBiL3NyYy9ndGsvU3RvY2tJY29ucy5oCi1AQCAtMTgsNyArMTgsNyBAQAotICNpZiAhZGVmaW5lZCAoX19TVE9DS19JQ09OU19IX18pCi0gI2RlZmluZSBfX1NUT0NLX0lDT05TX0hfXwotIAotLSNpbmNsdWRlIDxnbGliL2dtYWNyb3MuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotIAotIEdfQkVHSU5fREVDTFMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvc3dhcC1jb2xvcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3L3N3YXAtY29sb3JzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODJiZmIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZXBkZnZpZXcvZXBkZnZpZXcvc3dhcC1jb2xvcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1JbXBvcnRlZCBmcm9tIERlYmlhbiAwLjEuOC0zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogdHJ1bmsvc3JjL1BERkRvY3VtZW50LmN4eAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRydW5rL3NyYy9QREZEb2N1bWVudC5jeHgJKHJldmlzaW9uIDM2MSkKLSsrKyB0cnVuay9zcmMvUERGRG9jdW1lbnQuY3h4CShyZXZpc2lvbiAzNjcpCi1AQCAtMjEsNCArMjEsNSBAQAotICNpbmNsdWRlIDxwb3BwbGVyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxhbGdvcml0aG0+Ci0gI2luY2x1ZGUgImVwZGZ2aWV3LmgiCi0gCi1AQCAtMzMsNCArMzQsMjIgQEAKLSBzdGF0aWMgUGFnZU1vZGUgY29udmVydFBhZ2VNb2RlIChnaW50IHBhZ2VNb2RlKTsKLSBzdGF0aWMgZ2NoYXIgKmdldEFic29sdXRlRmlsZU5hbWUgKGNvbnN0IGdjaGFyICpmaWxlTmFtZSk7Ci0rCi0rbmFtZXNwYWNlCi0rewotKyAgICB2b2lkCi0rICAgIGNvbnZlcnRfYmdyYV90b19yZ2JhIChndWludDggKmRhdGEsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLSsgICAgewotKyAgICAgICAgdXNpbmcgc3RkOjpzd2FwOwotKwotKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICBzd2FwKGRhdGFbMF0sIGRhdGFbMl0pOwotKyAgICAgICAgICAgICAgICBkYXRhICs9IDQ7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rfQotIAotIC8vLwotQEAgLTY1MSw0ICs2NzAsNSBAQAotICAgICAgICAgY2Fpcm9fZGVzdHJveShjb250ZXh0KTsKLSAgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveSAoc3VyZmFjZSk7Ci0rICAgICAgICBjb252ZXJ0X2JncmFfdG9fcmdiYShyZW5kZXJlZFBhZ2UtPmdldERhdGEgKCksIHdpZHRoLCBoZWlnaHQpOwotICNlbHNlIC8vICFIQVZFX1BPUFBMRVJfMF8xN18wCi0gICAgICAgICAvLyBDcmVhdGUgdGhlIHBpeGJ1ZiBmcm9tIHRoZSBkYXRhIGFuZCByZW5kZXIgdG8gaXQuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3XzAuMS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9lcGRmdmlldy9lcGRmdmlld18wLjEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxMWE5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2VwZGZ2aWV3L2VwZGZ2aWV3XzAuMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpZ2h0d2VpZ2h0IFBERiB2aWV3ZXIgYmFzZWQgb24gZ3RrIGFuZCBwb3BwbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lbW1hLXNvZnQuY29tL3Byb2plY3RzL2VwZGZ2aWV3LyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbnMiCi1ERVBFTkRTID0gImd0aysgcG9wcGxlciIKLQotUFIgPSAicjMiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWN1cHMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVtbWEtc29mdC5jb20vcHJvamVjdHMvJHtCUE59L2Nocm9tZS9zaXRlL3JlbGVhc2VzLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYnJvd3Nlcl9jb21tYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2xpYi1zaW5nbGUtaW5jbHVkZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zd2FwLWNvbG9ycy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZTUwMjg1YjAxNjEyMTY5YjI1OTRmZWEzNzVmNTNhZTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTQ4NjQ4YWU3YzlkN2IzYjQwOGQ3MzhiZDRmNDhkODczNzViMTE5NmNhZTExMjlkNmI4NDZhOGRlMGYyZjhmMCIKLQotUE5CTEFDS0xJU1RbZXBkZnZpZXddID89ICJCUk9LRU46IGltYWdlcyBhcmUgbm90IGRpc3BsYXllZCBhbnltb3JlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotIyBUaGVyZSB3aWxsIGJlIG5vIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgLyB1cHN0cmVhbSBpcyBnb25lIFsxXQotIyBbMV0gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD05MDYxMjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZ25vbWUtbXBsYXllci9nbXRrXzEuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9nbm9tZS1tcGxheWVyL2dtdGtfMS4wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZDczN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9nbm9tZS1tcGxheWVyL2dtdGtfMS4wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgd2lkZ2V0IGFuZCBmdW5jdGlvbiBsaWJyYXJpZXMgZm9yIGdub21lLW1wbGF5ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ210ayIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1ERVBFTkRTID0gImd0aysgYWxzYS1saWIgZ2xpYi0yLjAgdmlydHVhbC9saWJ4MTEgaW50bHRvb2wtbmF0aXZlIHB1bHNlYXVkaW8gZ3RrKzMiCi0KLVNSQ19VUkkgPSAiaHR0cDovLyR7QlBOfS5nb29nbGVjb2RlLmNvbS9maWxlcy8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTA2ZTljYThkNjFkNzQ5MTAzNDNiYjNlZjQzNDhmN2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTA3MTMwZDYyNzE5ZThjMTI0NGY4NDA1ZGQ5NzQ0NTc5OGRmNTIwNGZjMGYzZjJmMmI2NjliMTI1MTE0YjQ2OCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nY29uZiAtLXdpdGgtZ2lvIC0td2l0aC1hbHNhIC0tZW5hYmxlLWtleXN0b3JlIgotCi1pbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBnY29uZgotCi1QTkJMQUNLTElTVFtnbXRrXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDY2MS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1hcHBzL2dub21lLW1wbGF5ZXIvZ25vbWUtbXBsYXllcl8xLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZ25vbWUtbXBsYXllci9nbm9tZS1tcGxheWVyXzEuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjliODMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvZ25vbWUtbXBsYXllci9nbm9tZS1tcGxheWVyXzEuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIEdUSysgaW50ZXJmYWNlIHRvIE1QbGF5ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ25vbWUtbXBsYXllciIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotUE5CTEFDS0xJU1RbZ25vbWUtbXBsYXllcl0gPz0gInJkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIG1wbGF5ZXIgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi1QUiA9ICJyMiIKLQotREVQRU5EUyA9ICJnbXRrIGd0aysgYWxzYS1saWIgbGlibm90aWZ5IGdsaWItMi4wIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYngxMSBsaWJ4c2NybnNhdmVyIgotCi1TUkNfVVJJID0gImh0dHA6Ly8ke0JQTn0uZ29vZ2xlY29kZS5jb20vZmlsZXMvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjFkM2FiMjRjNTUwMWI1NTI4ZTM1NzkzMWNhNGRjNmRhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjM2MxNzkzNDViYWVjYjRjYTUyMzc3ODJhYTMzZTgzMjUzYTg3YmY4YjQyY2U2ZWIzYTkyMDdhMzQwZjYxYjIiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2lvIC0td2l0aC1hbHNhIC0td2l0aC1kYnVzIC0td2l0aC1saWJub3RpZnkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyL2RlZmF1bHQtYXBwcy8ke1BOfS54bWwiCi1QQUNLQUdFUyA9KyAiJHtQTn0tbmF1dGlsdXMtZXh0ZW5zaW9uIgotRklMRVNfJHtQTn0tbmF1dGlsdXMtZXh0ZW5zaW9uICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zLTMuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zLTMuMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5hIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMy4wLyouYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zLTMuMC8uZGVidWciCi0KLWluaGVyaXQgZ2V0dGV4dCBwa2djb25maWcgbWltZSBndGstaWNvbi1jYWNoZSBhdXRvdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAibXBsYXllciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWFwcHMvcGlucG9pbnQvcGlucG9pbnRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9waW5wb2ludC9waW5wb2ludF9naXQuYmIKaW5kZXggNWU5MDJhMS4uYmY1MTc4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9waW5wb2ludC9waW5wb2ludF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtYXBwcy9waW5wb2ludC9waW5wb2ludF9naXQuYmIKQEAgLTksNyArOSwxMCBAQAogCiBERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYgY29nbC0xLjAgY2x1dHRlci0xLjAgY2x1dHRlci1nc3QtMy4wIGxpYnJzdmciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBjb2dsIHJlcXVpcmVzIG9wZW5nbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZ25vbWUub3JnL3BpbnBvaW50IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuNC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjQuNC5iYgppbmRleCA1YWQxMDcwLi4xNGIzMzZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuNC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS40LjQuYmIKQEAgLTE3LDEwICsxNywxMiBAQAogUEFDS0FHRUNPTkZJR1ttb2RlbW1hbmFnZXJdID0gIi0td2l0aC13d2FuLC0td2l0aG91dC13d2FuLG1vZGVtbWFuYWdlciIKIFBBQ0tBR0VDT05GSUcgPz89ICIiCiAKK0dJX0RBVEFfRU5BQkxFRF9saWJjLW11c2wgPSAiRmFsc2UiCisKIGRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CiAgICAgIyBTaWdoLi4uIC0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3M9bm8gZG9lc24ndCBhY3R1YWxseSB0dXJuIG9mZiAtV2Vycm9yCiAgICAgZm9yIGkgaW4gJChmaW5kICR7Qn0gLW5hbWUgIk1ha2VmaWxlIikgOyBkbwotICAgICAgICBzZWQgLWkgLWUgczotV2Vycm9yOjpnICRpCisgICAgICAgIHNlZCAtaSAtZSBzJS1XZXJyb3JbXls6c3BhY2U6XV0qJSVnICRpCiAgICAgZG9uZQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ncGFydGVkL2dwYXJ0ZWRfMC4yNy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZXh0ZW5kZWQvZ3BhcnRlZC9ncGFydGVkXzAuMjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkyMTA2NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ncGFydGVkL2dwYXJ0ZWRfMC4yNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJBIHBhcnRpdGlvbiBlZGl0b3IgdG8gZ3JhcGhpY2FsbHkgbWFuYWdlIGRpc2sgcGFydGl0aW9ucyAiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3BhcnRlZC5vcmcvaW5kZXgucGhwIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUKLQotU1JDX1VSSSA9ICIgXAotICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0vJHtCUE59LSR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kgXAotICAgIGZpbGU6Ly9ncGFydGVkX3BvbGtpdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNzI2ZjUzOWY3NzRiNDQyNjcwMDI4YWY2NTZmMjcwYmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjA4Y2Y2MGMwNjFiODZiZWU0ZjY1OGQ1NjhhM2I1ZDg0M2RjZTNhYjk4NDdmNjZiNDUyMjk4MjY4Nzk5ZTdiZCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3RrbW0gcGFydGVkIGdub21lLWRvYy11dGlscyBpbnRsdG9vbC1uYXRpdmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgQWRkIGEgc2NyaXB0IHdoaWNoIGNoZWNrcyBpZiBwb2xraXQgaXMgaW5zdGFsbGVkLgotICAgICMgSWYgeWVzOiBhIHBvbGljeSBpcyByZXF1ZXN0ZWQgZnJvbSBwb2xraXQgLyBvdGhlcndpc2Ugc3RhcnQgYXMgdXN1YWwKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vZ3BhcnRlZF9wb2xraXQgJHtEfSR7c2JpbmRpcn0KLSAgICBzZWQgLWkgJ3M6JXNiaW5kaXIlOiR7c2JpbmRpcn06ZycgJHtEfSR7c2JpbmRpcn0vZ3BhcnRlZF9wb2xraXQKLSAgICAjIHJlbGluayBtZW51IGVudHJ5IHRvIHVzZSBvdXIgc2NyaXB0Ci0gICAgc2VkIC1pICdzOiR7c2JpbmRpcn0vZ3BhcnRlZDoke3NiaW5kaXJ9L2dwYXJ0ZWRfcG9sa2l0OmcnICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9ncGFydGVkLmRlc2t0b3AKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucwotICAgIGluc3RhbGwgJHtXT1JLRElSfS9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kKLX0KLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS1kaXNhYmxlLWRvYyIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiZG9zZnN0b29scyBtdG9vbHMgZTJmc3Byb2dzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZXh0ZW5kZWQvZ3BhcnRlZC9ncGFydGVkXzAuMjguMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWV4dGVuZGVkL2dwYXJ0ZWQvZ3BhcnRlZF8wLjI4LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNhYjZmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWV4dGVuZGVkL2dwYXJ0ZWQvZ3BhcnRlZF8wLjI4LjEuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJBIHBhcnRpdGlvbiBlZGl0b3IgdG8gZ3JhcGhpY2FsbHkgbWFuYWdlIGRpc2sgcGFydGl0aW9ucyAiCitIT01FUEFHRSA9ICJodHRwOi8vZ3BhcnRlZC5vcmcvaW5kZXgucGhwIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUKKworU1JDX1VSSSA9ICIgXAorICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0vJHtCUE59LSR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgIGZpbGU6Ly9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kgXAorICAgIGZpbGU6Ly9ncGFydGVkX3BvbGtpdCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYWI3MjQ2NGEzYWIyMTM3NjY0ZDlkZjg0NjJiZWZkM2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzY4OTFmMTQzOTQ3NTRmN2Q2ZWNjZWJhMmFmMGU1ODViZjg5ZjlkNzgwYzM4OWEyNTVkY2Q0MWEyZjQ1ZDMzMyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3RrbW0gcGFydGVkIGdub21lLWRvYy11dGlscyBpbnRsdG9vbC1uYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgQWRkIGEgc2NyaXB0IHdoaWNoIGNoZWNrcyBpZiBwb2xraXQgaXMgaW5zdGFsbGVkLgorICAgICMgSWYgeWVzOiBhIHBvbGljeSBpcyByZXF1ZXN0ZWQgZnJvbSBwb2xraXQgLyBvdGhlcndpc2Ugc3RhcnQgYXMgdXN1YWwKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vZ3BhcnRlZF9wb2xraXQgJHtEfSR7c2JpbmRpcn0KKyAgICBzZWQgLWkgJ3M6JXNiaW5kaXIlOiR7c2JpbmRpcn06ZycgJHtEfSR7c2JpbmRpcn0vZ3BhcnRlZF9wb2xraXQKKyAgICAjIHJlbGluayBtZW51IGVudHJ5IHRvIHVzZSBvdXIgc2NyaXB0CisgICAgc2VkIC1pICdzOiR7c2JpbmRpcn0vZ3BhcnRlZDoke3NiaW5kaXJ9L2dwYXJ0ZWRfcG9sa2l0OmcnICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9ncGFydGVkLmRlc2t0b3AKKworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucworICAgIGluc3RhbGwgJHtXT1JLRElSfS9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcueW9jdG9wcm9qZWN0LnBrZXhlYy5ydW4tZ3BhcnRlZC5wb2xpY3kKK30KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS1kaXNhYmxlLWRvYyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKKyAgICAke2RhdGFkaXJ9L2ljb25zIFwKKyAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiZG9zZnN0b29scyBtdG9vbHMgZTJmc3Byb2dzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZXh0ZW5kZWQvZ3RrLXRoZW1lLXRvcnR1cmVyL2d0ay10aGVtZS10b3J0dXJlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ndGstdGhlbWUtdG9ydHVyZXIvZ3RrLXRoZW1lLXRvcnR1cmVyX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQxOWQwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1leHRlbmRlZC9ndGstdGhlbWUtdG9ydHVyZXIvZ3RrLXRoZW1lLXRvcnR1cmVyX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKyBUaGVtZSBiZW5jaG1hcmsgcHJvZ3JhbSIKLURFUEVORFMgPSAiZ3RrKyIKLUhPTUVQQUdFID0gImh0dHA6Ly93aWtpLmxhcHRvcC5vcmcvZ28vR1RLX2Zvcl9PTFBDIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9hcHB3aW5kb3cuYztlbmRsaW5lPTEzO21kNT04YzA5OTIwZGU0NjBjN2VhMWY2NGVlNTY5ODZhYWJkOSIKLQotU1JDUkVWID0gIjk5OTYyYWUzOWJiNWFhZGIzMTkyOWIyNWM1OGUxYTA1M2Y5Yzk1NDUiCi1QViA9ICIwLjAuMCtnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9kZXYubGFwdG9wLm9yZy9wcm9qZWN0cy9zb2MtZ3RrLyIKLVMgPSAiJHtXT1JLRElSfS9naXQvZ3RrLXRoZW1lLXRvcnR1cmVyIgotCi1DRkxBR1MgKz0gIi1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSfSIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSB0b3J0dXJlciAke0R9JHtiaW5kaXJ9Ci19Ci0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzM1MTMyLwotUE5CTEFDS0xJU1RbZ3RrLXRoZW1lLXRvcnR1cmVyXSA/PSAiQlJPS0VOOiBnbWFjcm9zLmg6MTgyOjUzOiBlcnJvcjogc2l6ZSBvZiBhcnJheSAnX0dTdGF0aWNBc3NlcnRDb21waWxlVGltZUFzc2VydGlvbl8yJyBpcyBuZWdhdGl2ZSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZC8wMDAyLUJ1Zy0xMzc1NC1GaXgtYnVpbGQtb24tZ2NjLTYtZGVmYXVsdC10by1DLTExLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYWJpd29yZC9hYml3b3JkLzAwMDItQnVnLTEzNzU0LUZpeC1idWlsZC1vbi1nY2MtNi1kZWZhdWx0LXRvLUMtMTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NWVlOGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYWJpd29yZC9hYml3b3JkLzAwMDItQnVnLTEzNzU0LUZpeC1idWlsZC1vbi1nY2MtNi1kZWZhdWx0LXRvLUMtMTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIGE4M2U2ZjUwZGJkNWVmYTE2ZmIzOWVmZTMyYjlkZTM3MGYxMDMxMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIdWJlcnQgRmlndWllcmUgPGh1YkBmaWd1aWVyZS5uZXQ+Ci1EYXRlOiBTYXQsIDIzIEphbiAyMDE2IDIwOjQ2OjAyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAxMzc1NCAtIEZpeCBidWlsZCBvbiBnY2MtNiAoZGVmYXVsdCB0byBDKysxMSkuCi0KLVRoaXMgaXMgZGViaWFuIGJ1ZyBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTgxMTM4MQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vc3ZuLmFiaXNvdXJjZS5jb20vc3Zucm9vdC9hYml3b3JkL3RydW5rQDM1MTgyIGJjYmE4OTc2LTJkMjQtMDQxMC05YzljLWFhYjNiZDVmZGZkNgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBwbHVnaW5zL2NvbGxhYi9iYWNrZW5kcy9zZXJ2aWNlL3hwL1JlYWxtUHJvdG9jb2wuY3BwIHwgNCArKy0tCi0gcGx1Z2lucy9jb2xsYWIvYmFja2VuZHMvc2VydmljZS94cC9zb2Ffc291cC5jcHAgICAgICB8IDIgKy0KLSBwbHVnaW5zL2xhdGV4L3hwL2llX2V4cF9MYVRlWC5jcHAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIHBsdWdpbnMveHNsZm8veHAvaWVfZXhwX1hTTC1GTy5jcHAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbGxhYi9iYWNrZW5kcy9zZXJ2aWNlL3hwL1JlYWxtUHJvdG9jb2wuY3BwIGIvcGx1Z2lucy9jb2xsYWIvYmFja2VuZHMvc2VydmljZS94cC9SZWFsbVByb3RvY29sLmNwcAotaW5kZXggZmI0MjZlYi4uMzQ3YTQ5YyAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvY29sbGFiL2JhY2tlbmRzL3NlcnZpY2UveHAvUmVhbG1Qcm90b2NvbC5jcHAKLSsrKyBiL3BsdWdpbnMvY29sbGFiL2JhY2tlbmRzL3NlcnZpY2UveHAvUmVhbG1Qcm90b2NvbC5jcHAKLUBAIC02LDggKzYsOCBAQCBuYW1lc3BhY2UgcHJvdG9jb2x2MSB7Ci0gCi0gI2RlZmluZSBNQVhfUEFDS0VUX0RBVEFfU0laRSA2NCoxMDI0KjEwMjQKLSAJCQotLSNkZWZpbmUgUlBWMV9QQUNLRVRfTk9ORVhJU1RFTlQgLTIKLS0jZGVmaW5lIFJQVjFfUEFDS0VUX1ZBUklBQkxFIC0xCi0rI2RlZmluZSBSUFYxX1BBQ0tFVF9OT05FWElTVEVOVCB1aW50MzJfdCgtMikKLSsjZGVmaW5lIFJQVjFfUEFDS0VUX1ZBUklBQkxFIHVpbnQzMl90KC0xKQotIAkKLSBzdGF0aWMgdWludDMyX3QgYm9keV9zaXplWzZdID0gewotIAlSUFYxX1BBQ0tFVF9OT05FWElTVEVOVCwgLyogMDogcmVzZXJ2ZWQgKi8KLWRpZmYgLS1naXQgYS9wbHVnaW5zL2NvbGxhYi9iYWNrZW5kcy9zZXJ2aWNlL3hwL3NvYV9zb3VwLmNwcCBiL3BsdWdpbnMvY29sbGFiL2JhY2tlbmRzL3NlcnZpY2UveHAvc29hX3NvdXAuY3BwCi1pbmRleCA0YjgxNzM1Li5mNGY1MTM0IDEwMDY0NAotLS0tIGEvcGx1Z2lucy9jb2xsYWIvYmFja2VuZHMvc2VydmljZS94cC9zb2Ffc291cC5jcHAKLSsrKyBiL3BsdWdpbnMvY29sbGFiL2JhY2tlbmRzL3NlcnZpY2UveHAvc29hX3NvdXAuY3BwCi1AQCAtMTYzLDcgKzE2Myw3IEBAIG5hbWVzcGFjZSBzb3VwX3NvYSB7Ci0gCQotIAlzdGF0aWMgYm9vbCBfaW52b2tlKGNvbnN0IHN0ZDo6c3RyaW5nJiAvKnVybCovLCBjb25zdCBzb2E6Om1ldGhvZF9pbnZvY2F0aW9uJiAvKm1pKi8sIFNvYVNvdXBTZXNzaW9uJiBzZXNzLCBzdGQ6OnN0cmluZyYgcmVzdWx0KSB7Ci0gCQlpZiAoIXNlc3MubV9zZXNzaW9uIHx8ICFzZXNzLm1fbXNnICkKLS0JCQlyZXR1cm4gc29hOjpHZW5lcmljUHRyKCk7Ci0rCQkJcmV0dXJuIGZhbHNlOwotIAotIAkJZ3VpbnQgc3RhdHVzID0gc291cF9zZXNzaW9uX3NlbmRfbWVzc2FnZSAoc2Vzcy5tX3Nlc3Npb24sIHNlc3MubV9tc2cpOwotIAkJaWYgKCEoU09VUF9TVEFUVVNfSVNfU1VDQ0VTU0ZVTCAoc3RhdHVzKSB8fAotZGlmZiAtLWdpdCBhL3BsdWdpbnMvbGF0ZXgveHAvaWVfZXhwX0xhVGVYLmNwcCBiL3BsdWdpbnMvbGF0ZXgveHAvaWVfZXhwX0xhVGVYLmNwcAotaW5kZXggN2FhZjNhOS4uOGJjYzI1MCAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvbGF0ZXgveHAvaWVfZXhwX0xhVGVYLmNwcAotKysrIGIvcGx1Z2lucy9sYXRleC94cC9pZV9leHBfTGFUZVguY3BwCi1AQCAtMTMzMCw3ICsxMzMwLDcgQEAgdm9pZCBzX0xhVGVYX0xpc3RlbmVyOjpfb3V0cHV0RGF0YShjb25zdCBVVF9VQ1NDaGFyICogZGF0YSwgVVRfdWludDMyIGxlbmd0aCkKLSAJbV9waWUtPndyaXRlKHNCdWYuY19zdHIoKSxzQnVmLnNpemUoKSk7Ci0gfQotIAotLSNkZWZpbmUgU1VCKGEsd2hvKSBjYXNlIGE6IHN1YnN0ID0gIlxcKFxcIndobyJcXCkiOyByZXR1cm4gdHJ1ZTsKLSsjZGVmaW5lIFNVQihhLHdobykgY2FzZSBhOiBzdWJzdCA9ICJcXChcXCIgd2hvIlxcKSI7IHJldHVybiB0cnVlOwotICNkZWZpbmUgU1VCZChhLHdobykgY2FzZSBhOiBzdWJzdCA9IHdobzsgcmV0dXJuIHRydWU7Ci0gc3RhdGljIGJvb2wgX2NvbnZlcnRMZXR0ZXJzVG9TeW1ib2xzKGNoYXIgYywgY29uc3QgY2hhciAqJiBzdWJzdCkKLSB7Ci1kaWZmIC0tZ2l0IGEvcGx1Z2lucy94c2xmby94cC9pZV9leHBfWFNMLUZPLmNwcCBiL3BsdWdpbnMveHNsZm8veHAvaWVfZXhwX1hTTC1GTy5jcHAKLWluZGV4IGNjNWU0ZTYuLjk1NzIyNmUgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5zL3hzbGZvL3hwL2llX2V4cF9YU0wtRk8uY3BwCi0rKysgYi9wbHVnaW5zL3hzbGZvL3hwL2llX2V4cF9YU0wtRk8uY3BwCi1AQCAtMTQ1MSw3ICsxNDUxLDcgQEAgdm9pZCBzX1hTTF9GT19MaXN0ZW5lcjo6X29wZW5TZWN0aW9uKFBUX0F0dHJQcm9wSW5kZXggYXBpKQotIAl7IFwKLSAJCVVUX1VURjhTdHJpbmcgZXNjID0gc3pWYWx1ZTsgXAotIAkJZXNjLmVzY2FwZVhNTCgpOyBcCi0tCQlidWYgKz0gIiAieCI9XCIiOyBcCi0rCQlidWYgKz0gIiAiIHgiPVwiIjsgXAotIAkJYnVmICs9IGVzYy51dGY4X3N0cigpOyBcCi0gCQlidWYgKz0gIlwiIjsgXAotIAl9Ci0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmYzk3ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJBYmlXb3JkIGlzIGZyZWUgd29yZCBwcm9jZXNzaW5nIHByb2dyYW0gc2ltaWxhciB0byBNaWNyb3NvZnQocikgV29yZCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWJpd29yZC5vcmciCi1TRUNUSU9OID0gIngxMS9vZmZpY2UiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWNkM2FjMzI5ZmNhNzdlMmQwZTQxMmJlYzM4ZTFjMjAiCi1ERVBFTkRTICA9ICIgXAotICAgIHBlcmwtbmF0aXZlIFwKLSAgICBndGsrIFwKLSAgICBndGttYXRodmlldyBcCi0gICAgd3YgXAotICAgIGxpYmdsYWRlIFwKLSAgICBsaWJmcmliaWRpIFwKLSAgICBqcGVnIFwKLSAgICBsaWJwbmcgXAotICAgIGxpYnJzdmcgXAotICAgIGxpYndtZi1uYXRpdmUgXAotICAgIGFzaW8gXAotICAgIGV2b2x1dGlvbi1kYXRhLXNlcnZlciBcCi0gICAgbGlieHNsdCBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdvZmZpY2UtbGF5ZXInLCAncmVkbGFuZCByYXNxYWwnLCAnJywgZCl9IFwKLSIKLVJERVBFTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBcCi0gICAgZ2xpYmMtZ2NvbnYtaWJtODUwIGdsaWJjLWdjb252LWNwMTI1MiBcCi0gICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xNSBnbGliYy1nY29udi1pc284ODU5LTEgXAotIgotUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1lbWJlZGRlZCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvJHtCUE59LyR7UFZ9L3NvdXJjZS8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLXBsdWdpbnMtYWlrc2F1cnVzLU1ha2VmaWxlLmFtLXJlbW92ZS11bmNvbXBsZXRlLW9wdGkucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUJ1Zy0xMzc1NC1GaXgtYnVpbGQtb24tZ2NjLTYtZGVmYXVsdC10by1DLTExLnBhdGNoIFwKLSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzVlZGNjM2NjZDg2NGIxOTAwNGQxNGU5YzFjOWEyNmEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmM2Y4MDUyZTdiNDk3OWE0M2I3NTc3NWEzODFlNmNiOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDk0ZjZmYmYwYWZjNWM1NTM4YjQ4OTQ4ODhlN2MzNDZmOGVlOGY0OWM5ZDI0ODIxZGQ2OTZkMDczNDg2NWM2IgotCi0jd2FudCAzLnggZnJvbSAzLngueSBmb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgIGNvbGxhYi1iYWNrZW5kLXhtcHAgY29sbGFiLWJhY2tlbmQtdGNwIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQkJGSUxFX0NPTExFQ1RJT05TJywgJ29mZmljZS1sYXllcicsICdsaWJpY2FsJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2xpYmljYWxdID0gIi0td2l0aC1saWJpY2FsLC0td2l0aG91dC1saWJpY2FsLGxpYmljYWwgcmFwdG9yMiIKLVBBQ0tBR0VDT05GSUdbc3BlbGxdID0gIi0tZW5hYmxlLXNwZWxsLC0tZGlzYWJsZS1zcGVsbCxlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tjb2xsYWItYmFja2VuZC14bXBwXSA9ICItLWVuYWJsZS1jb2xsYWItYmFja2VuZC14bXBwLC0tZGlzYWJsZS1jb2xsYWItYmFja2VuZC14bXBwLGxpYmdzZiBsaWJ4bWwyIGxvdWRtb3V0aCIKLVBBQ0tBR0VDT05GSUdbY29sbGFiLWJhY2tlbmQtdGNwXSA9ICItLWVuYWJsZS1jb2xsYWItYmFja2VuZC10Y3AsLS1kaXNhYmxlLWNvbGxhYi1iYWNrZW5kLXRjcCxsaWJnc2YgbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbY29sbGFiLWJhY2tlbmQtc2VydmljZV0gPSAiLS1lbmFibGUtY29sbGFiLWJhY2tlbmQtc2VydmljZSwtLWRpc2FibGUtY29sbGFiLWJhY2tlbmQtc2VydmljZSxsaWJnc2YgbGlieG1sMiBsaWJzb3VwLTIuNCBnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2NvbGxhYi1iYWNrZW5kLXRlbGVwYXRoeV0gPSAiLS1lbmFibGUtY29sbGFiLWJhY2tlbmQtdGVsZXBhdGh5LC0tZGlzYWJsZS1jb2xsYWItYmFja2VuZC10ZWxlcGF0aHksbGliZ3NmIGxpYnhtbDIgdGVsZXBhdGh5LWdsaWIgdGVsZXBhdGh5LW1pc3Npb24tY29udHJvbCIKLVBBQ0tBR0VDT05GSUdbY29sbGFiLWJhY2tlbmQtc3VnYXJdID0gIi0tZW5hYmxlLWNvbGxhYi1iYWNrZW5kLXN1Z2FyLC0tZGlzYWJsZS1jb2xsYWItYmFja2VuZC1zdWdhcixsaWJnc2YgbGlieG1sMiBkYnVzLWdsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLXN0YXRpYyAgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wbHVnaW5zIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtY2xpcGFydCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXRlbXBsYXRlcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1nbm9tZXZmcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1ndGsyIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYndtZi1jb25maWc9JHtTVEFHSU5HX0RJUn0gXAotIgotCi1MREZMQUdTICs9ICItbGdtb2R1bGUtMi4wIgotCi1kb19jb21waWxlKCkgewotICAgIGNkIGdvZmZpY2UtYml0czIKLSAgICBtYWtlIGdvZmZpY2UtcGF0aHMuaAotICAgIG1ha2UgbGliZ29mZmljZS5sYQotICAgIGNkICR7Qn0KLSAgICBvZV9ydW5tYWtlCi19Ci0KLVBBQ0tBR0VTICs9ICIgJHtQTn0tY2xpcGFydCAke1BOfS1zdHJpbmdzICR7UE59LXN5c3RlbXByb2ZpbGVzICR7UE59LXRlbXBsYXRlcyAiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWIke1BOfS0qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L21pbWUtaW5mbyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pY29ucy8qIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L2dsYWRlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3NjcmlwdHMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc3lzdGVtLnByb2ZpbGUtZW4gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc3lzdGVtLnByb2ZpbGUtZW5fR0IgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL25vcm1hbC5hd3QgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL25vcm1hbC5hd3QtZW5fR0IgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL0VtcGxveWVlLURpcmVjdG9yeS5hd3QgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL0J1c2luZXNzLVJlcG9ydC5hd3QgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL0ZheC1Db3ZlcnNoZWV0LmF3dCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvUmVzdW1lLmF3dCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvVHdvLUNvbHVtbnMuYXd0IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcy9NZW1vLmF3dCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvUHJlc3MtUmVsZWFzZS5hd3QgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vY2VydHMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdWkgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0veHNsKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9taW1lLWluZm8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vUHIqLnhtbCBcCi0iCi0KLSMgZG9uJ3Qgc3RlYWwgL3Vzci9saWIvbGliYWJpd29yZC0zLjAuc28gZnJvbSAke1BOfQotIyBpbiB0aGlzIGNhc2UgaXQncyBuZWVkZWQgaW4gJHtQTn0KLUZJTEVTXyR7UE59LWRldiA9ICIgXAotICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfSBcCi0gICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfSoubGEgXAotICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYiR7UE59Ki5sYSBcCi0gICAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vcGx1Z2lucy8qLmxhIFwKLSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3BsdWdpbnMvLmRlYnVnIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9LyR7UE59LSovcmVhZG1lKiIKLQotRklMRVNfJHtQTn0tc3RyaW5ncyAgICAgICAgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc3RyaW5ncyIKLUZJTEVTXyR7UE59LXN5c3RlbXByb2ZpbGVzICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3N5c3RlbS5wcm9maWxlKiIKLUZJTEVTXyR7UE59LWNsaXBhcnQgICAgICAgICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L2NsaXBhcnQiCi1GSUxFU18ke1BOfS1zdHJpbmdzICAgICAgICArPSAiJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9BYmlXb3JkL3N0cmluZ3MiCi1GSUxFU18ke1BOfS1zeXN0ZW1wcm9maWxlcyArPSAiJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9BYmlXb3JkL3N5c3RlbS5wcm9maWxlKiIKLUZJTEVTXyR7UE59LXRlbXBsYXRlcyAgICAgICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcyIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LW1ldGEuKiBeJHtQTn0tcGx1Z2luLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgYWJpd29yZF9saWJkaXIgICAgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3BsdWdpbnMnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGFiaXdvcmRfbGliZGlyLCAnKC4qKVwuc28kJywgJ2FiaXdvcmQtcGx1Z2luLSVzJywgJ0FiaXdvcmQgcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi0KLSAgICBtZXRhcGtnID0gImFiaXdvcmQtbWV0YSIKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKLSAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQotICAgIGJsYWNrbGlzdCA9IFsgJ2FiaXdvcmQtcGx1Z2lucy1kYmcnLCAnYWJpd29yZC1wbHVnaW5zJywgJ2FiaXdvcmQtcGx1Z2lucy1kb2MnLCAnYWJpd29yZC1wbHVnaW5zLWRldicsICdhYml3b3JkLXBsdWdpbnMtbG9jYWxlJyBdCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06Ci0gICAgICAgIGlmIG5vdCBwa2cgaW4gYmxhY2tsaXN0IGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIG5vdCBwa2cuY291bnQoIi1kZXYiKSBhbmQgbm90IHBrZy5jb3VudCgiLWRiZyIpIGFuZCBub3QgcGtnLmNvdW50KCJzdGF0aWMiKSBhbmQgbm90IHBrZy5jb3VudCgibG9jYWxlIikgYW5kIG5vdCBwa2cuY291bnQoImFiaXdvcmQtZG9jIik6Ci0gICAgICAgICAgICBwcmludCgiTW9kaWZ5aW5nICVzIiAlIHBrZykKLSAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKLSAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQotICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgJ2FiaXdvcmQtcGx1Z2luIG1ldGEgcGFja2FnZScpCi0gICAgcGFja2FnZXMuYXBwZW5kKG1ldGFwa2cpCi0gICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQotfQotCi1GSUxFU18ke1BOfS1wbHVnaW4tb3BlbnhtbCArPSAiJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9vbW1sX3hzbHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmExM2U0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMi5iYgpAQCAtMCwwICsxLDE0MSBAQAorU1VNTUFSWSA9ICJBYmlXb3JkIGlzIGZyZWUgd29yZCBwcm9jZXNzaW5nIHByb2dyYW0gc2ltaWxhciB0byBNaWNyb3NvZnQocikgV29yZCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWJpd29yZC5vcmciCitTRUNUSU9OID0gIngxMS9vZmZpY2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWNkM2FjMzI5ZmNhNzdlMmQwZTQxMmJlYzM4ZTFjMjAiCitERVBFTkRTICA9ICIgXAorICAgIHBlcmwtbmF0aXZlIFwKKyAgICBndGsrIFwKKyAgICBndGttYXRodmlldyBcCisgICAgd3YgXAorICAgIGxpYmdsYWRlIFwKKyAgICBsaWJmcmliaWRpIFwKKyAgICBqcGVnIFwKKyAgICBsaWJwbmcgXAorICAgIGxpYnJzdmcgXAorICAgIGxpYndtZi1uYXRpdmUgXAorICAgIGFzaW8gXAorICAgIGV2b2x1dGlvbi1kYXRhLXNlcnZlciBcCisgICAgbGlieHNsdCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdvZmZpY2UtbGF5ZXInLCAncmVkbGFuZCByYXNxYWwnLCAnJywgZCl9IFwKKyIKK1JERVBFTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBcCisgICAgZ2xpYmMtZ2NvbnYtaWJtODUwIGdsaWJjLWdjb252LWNwMTI1MiBcCisgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xNSBnbGliYy1nY29udi1pc284ODU5LTEgXAorIgorUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1lbWJlZGRlZCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvJHtCUE59LyR7UFZ9L3NvdXJjZS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLXBsdWdpbnMtYWlrc2F1cnVzLU1ha2VmaWxlLmFtLXJlbW92ZS11bmNvbXBsZXRlLW9wdGkucGF0Y2ggXAorIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNWVkY2MzY2NkODY0YjE5MDA0ZDE0ZTljMWM5YTI2YSIKKworU1JDX1VSSVttZDVzdW1dID0gImNkYTZkZDU4Yzc0N2MxMzNiNDIxY2M3ZWIxOGY1Nzk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmYmZkNDU4ZmQwMjk4OWQ4YjBjNjM2MmJhOGE0YzE0Njg2ZDg5NjY2ZjU0Y2ZkYjU1MDFiZDIwOTBjZjM1MjIiCisKKyN3YW50IDMueCBmcm9tIDMueC55IGZvciB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeQorU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgY29sbGFiLWJhY2tlbmQteG1wcCBjb2xsYWItYmFja2VuZC10Y3AgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAnb2ZmaWNlLWxheWVyJywgJ2xpYmljYWwnLCAnJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGliaWNhbF0gPSAiLS13aXRoLWxpYmljYWwsLS13aXRob3V0LWxpYmljYWwsbGliaWNhbCByYXB0b3IyIgorUEFDS0FHRUNPTkZJR1tzcGVsbF0gPSAiLS1lbmFibGUtc3BlbGwsLS1kaXNhYmxlLXNwZWxsLGVuY2hhbnQiCitQQUNLQUdFQ09ORklHW2NvbGxhYi1iYWNrZW5kLXhtcHBdID0gIi0tZW5hYmxlLWNvbGxhYi1iYWNrZW5kLXhtcHAsLS1kaXNhYmxlLWNvbGxhYi1iYWNrZW5kLXhtcHAsbGliZ3NmIGxpYnhtbDIgbG91ZG1vdXRoIgorUEFDS0FHRUNPTkZJR1tjb2xsYWItYmFja2VuZC10Y3BdID0gIi0tZW5hYmxlLWNvbGxhYi1iYWNrZW5kLXRjcCwtLWRpc2FibGUtY29sbGFiLWJhY2tlbmQtdGNwLGxpYmdzZiBsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tjb2xsYWItYmFja2VuZC1zZXJ2aWNlXSA9ICItLWVuYWJsZS1jb2xsYWItYmFja2VuZC1zZXJ2aWNlLC0tZGlzYWJsZS1jb2xsYWItYmFja2VuZC1zZXJ2aWNlLGxpYmdzZiBsaWJ4bWwyIGxpYnNvdXAtMi40IGdudXRscyIKK1BBQ0tBR0VDT05GSUdbY29sbGFiLWJhY2tlbmQtdGVsZXBhdGh5XSA9ICItLWVuYWJsZS1jb2xsYWItYmFja2VuZC10ZWxlcGF0aHksLS1kaXNhYmxlLWNvbGxhYi1iYWNrZW5kLXRlbGVwYXRoeSxsaWJnc2YgbGlieG1sMiB0ZWxlcGF0aHktZ2xpYiB0ZWxlcGF0aHktbWlzc2lvbi1jb250cm9sIgorUEFDS0FHRUNPTkZJR1tjb2xsYWItYmFja2VuZC1zdWdhcl0gPSAiLS1lbmFibGUtY29sbGFiLWJhY2tlbmQtc3VnYXIsLS1kaXNhYmxlLWNvbGxhYi1iYWNrZW5kLXN1Z2FyLGxpYmdzZiBsaWJ4bWwyIGRidXMtZ2xpYiIKKworRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtc3RhdGljICBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBsdWdpbnMgXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbGlwYXJ0IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtdGVtcGxhdGVzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdub21ldmZzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWd0azIgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGlid21mLWNvbmZpZz0ke1NUQUdJTkdfRElSfSBcCisiCisKK0xERkxBR1MgKz0gIi1sZ21vZHVsZS0yLjAiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgY2QgZ29mZmljZS1iaXRzMgorICAgIG1ha2UgZ29mZmljZS1wYXRocy5oCisgICAgbWFrZSBsaWJnb2ZmaWNlLmxhCisgICAgY2QgJHtCfQorICAgIG9lX3J1bm1ha2UKK30KKworUEFDS0FHRVMgKz0gIiAke1BOfS1jbGlwYXJ0ICR7UE59LXN0cmluZ3MgJHtQTn0tc3lzdGVtcHJvZmlsZXMgJHtQTn0tdGVtcGxhdGVzICIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYiR7UE59LSouc28gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbWltZS1pbmZvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zLyogXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vZ2xhZGUgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc2NyaXB0cyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9zeXN0ZW0ucHJvZmlsZS1lbiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9zeXN0ZW0ucHJvZmlsZS1lbl9HQiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvbm9ybWFsLmF3dCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvbm9ybWFsLmF3dC1lbl9HQiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvRW1wbG95ZWUtRGlyZWN0b3J5LmF3dCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvQnVzaW5lc3MtUmVwb3J0LmF3dCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS90ZW1wbGF0ZXMvRmF4LUNvdmVyc2hlZXQuYXd0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcy9SZXN1bWUuYXd0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcy9Ud28tQ29sdW1ucy5hd3QgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzL01lbW8uYXd0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L3RlbXBsYXRlcy9QcmVzcy1SZWxlYXNlLmF3dCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9jZXJ0cyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS91aSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS94c2wqIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L21pbWUtaW5mbyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9QcioueG1sIFwKKyIKKworIyBkb24ndCBzdGVhbCAvdXNyL2xpYi9saWJhYml3b3JkLTMuMC5zbyBmcm9tICR7UE59CisjIGluIHRoaXMgY2FzZSBpdCdzIG5lZWRlZCBpbiAke1BOfQorRklMRVNfJHtQTn0tZGV2ID0gIiBcCisgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7UE59Ki5sYSBcCisgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliJHtQTn0qLmxhIFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9wbHVnaW5zLyoubGEgXAorIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vcGx1Z2lucy8uZGVidWciCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tKi9yZWFkbWUqIgorCitGSUxFU18ke1BOfS1zdHJpbmdzICAgICAgICArPSAiJHtkYXRhZGlyfS8ke1BOfS0ke1NIUlRfVkVSfS9zdHJpbmdzIgorRklMRVNfJHtQTn0tc3lzdGVtcHJvZmlsZXMgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vc3lzdGVtLnByb2ZpbGUqIgorRklMRVNfJHtQTn0tY2xpcGFydCAgICAgICAgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vY2xpcGFydCIKK0ZJTEVTXyR7UE59LXN0cmluZ3MgICAgICAgICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L0FiaVdvcmQvc3RyaW5ncyIKK0ZJTEVTXyR7UE59LXN5c3RlbXByb2ZpbGVzICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L0FiaVdvcmQvc3lzdGVtLnByb2ZpbGUqIgorRklMRVNfJHtQTn0tdGVtcGxhdGVzICAgICAgKz0gIiR7ZGF0YWRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vdGVtcGxhdGVzIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tbWV0YS4qIF4ke1BOfS1wbHVnaW4tLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBhYml3b3JkX2xpYmRpciAgICA9IGQuZXhwYW5kKCcke2xpYmRpcn0vJHtQTn0tJHtTSFJUX1ZFUn0vcGx1Z2lucycpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYWJpd29yZF9saWJkaXIsICcoLiopXC5zbyQnLCAnYWJpd29yZC1wbHVnaW4tJXMnLCAnQWJpd29yZCBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykKKworICAgIG1ldGFwa2cgPSAiYWJpd29yZC1tZXRhIgorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQorICAgIGQuc2V0VmFyKCdGSUxFU18nICsgbWV0YXBrZywgIiIpCisgICAgYmxhY2tsaXN0ID0gWyAnYWJpd29yZC1wbHVnaW5zLWRiZycsICdhYml3b3JkLXBsdWdpbnMnLCAnYWJpd29yZC1wbHVnaW5zLWRvYycsICdhYml3b3JkLXBsdWdpbnMtZGV2JywgJ2FiaXdvcmQtcGx1Z2lucy1sb2NhbGUnIF0KKyAgICBtZXRhcGtnX3JkZXBlbmRzID0gW10KKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKKyAgICAgICAgaWYgbm90IHBrZyBpbiBibGFja2xpc3QgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgbm90IHBrZy5jb3VudCgiLWRldiIpIGFuZCBub3QgcGtnLmNvdW50KCItZGJnIikgYW5kIG5vdCBwa2cuY291bnQoInN0YXRpYyIpIGFuZCBub3QgcGtnLmNvdW50KCJsb2NhbGUiKSBhbmQgbm90IHBrZy5jb3VudCgiYWJpd29yZC1kb2MiKToKKyAgICAgICAgICAgIHByaW50KCJNb2RpZnlpbmcgJXMiICUgcGtnKQorICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQorICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCisgICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCAnYWJpd29yZC1wbHVnaW4gbWV0YSBwYWNrYWdlJykKKyAgICBwYWNrYWdlcy5hcHBlbmQobWV0YXBrZykKKyAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCit9CisKK0ZJTEVTXyR7UE59LXBsdWdpbi1vcGVueG1sICs9ICIke2RhdGFkaXJ9LyR7UE59LSR7U0hSVF9WRVJ9L29tbWxfeHNsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvMDAwMS1pbWFweC1GaXgtc2lnbmF0dXJlLWZvci1pbWFweF90b2tlbmlzZV9zdHJ1Y3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDEtaW1hcHgtRml4LXNpZ25hdHVyZS1mb3ItaW1hcHhfdG9rZW5pc2Vfc3RydWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MmE3NmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDEtaW1hcHgtRml4LXNpZ25hdHVyZS1mb3ItaW1hcHhfdG9rZW5pc2Vfc3RydWN0LnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMGUxMGU5NzYwMjViMjFkMTJkZjA5OWU4Mjk1MWY3NTkwMjRhZDY0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI0IEF1ZyAyMDE3IDIyOjA0OjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGltYXB4OiBGaXggc2lnbmF0dXJlIGZvciBpbWFweF90b2tlbmlzZV9zdHJ1Y3QoKQorCitjbGFuZyBjb21wbGFpbnMgYWJvdXQgZGlmZmVyZW50IHNpZ25hdHVyZSBmb3IgdGhpcyBwYXRjaAorCitGaXhlcworY2FtZWwvcHJvdmlkZXJzL2ltYXB4L2NhbWVsLWltYXB4LXRva2Vucy50eHQ6NTY6MTogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAnaW1hcHhfdG9rZW5pc2Vfc3RydWN0JworfCBpbWFweF90b2tlbmlzZV9zdHJ1Y3QgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgc2l6ZV90IGxlbikKK3wgXgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY2FtZWwvcHJvdmlkZXJzL2ltYXB4L2NhbWVsLWltYXB4LXRva2Vucy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jYW1lbC9wcm92aWRlcnMvaW1hcHgvY2FtZWwtaW1hcHgtdG9rZW5zLnR4dCBiL2NhbWVsL3Byb3ZpZGVycy9pbWFweC9jYW1lbC1pbWFweC10b2tlbnMudHh0CitpbmRleCBkNDg1MDE4NjUuLjk5NGMzNjhjMCAxMDA2NDQKKy0tLSBhL2NhbWVsL3Byb3ZpZGVycy9pbWFweC9jYW1lbC1pbWFweC10b2tlbnMudHh0CisrKysgYi9jYW1lbC9wcm92aWRlcnMvaW1hcHgvY2FtZWwtaW1hcHgtdG9rZW5zLnR4dAorQEAgLTEsNyArMSw3IEBACisgLyogVGhpcyBjb250YWlucyBhbGwgb2YgdGhlIGtleXdvcmRzIHdlIGNhcmUgYWJvdXQuICBUaGVzZQorICAgIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gaWQgdmVyeSBlZmZpY2llbnRseSAqLworIHN0cnVjdCBfaW1hcHhfa2V5d29yZCB7Y29uc3QgZ2NoYXIgKm5hbWU7IGNhbWVsX2ltYXB4X2lkX3QgaWQ7IH07Cistc3RydWN0IF9pbWFweF9rZXl3b3JkICppbWFweF90b2tlbmlzZV9zdHJ1Y3QgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbik7Cisrc3RydWN0IF9pbWFweF9rZXl3b3JkICppbWFweF90b2tlbmlzZV9zdHJ1Y3QgKHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgc2l6ZV90IGxlbik7CisgJSUKKyBBTEVSVCwgICAgICAgICAgSU1BUFhfQUxFUlQKKyBBUFBFTkRVSUQsCUlNQVBYX0FQUEVORFVJRAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyX2dpdC5iYgppbmRleCBmZjMzNjViLi5hYWRjNGI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyX2dpdC5iYgpAQCAtMTUsMTYgKzE1LDE2IEBACiAjIDMuNCBzZXJpZXMgbmVlZHMgbGliZ2RhdGEtMC4xMCosIDMuOCBzZXJpZXMgbmVlZHMgYWxzbyBsaWJzZWNyZXQgaW5zdGVhZCBvZiBnbm9tZS1rZXlyaW5nCiBQViA9ICIzLjIuMytnaXQke1NSQ1BWfSIKIAotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdC5nbm9tZS5vcmcvZXZvbHV0aW9uLWRhdGEtc2VydmVyO2JyYW5jaD1nbm9tZS0zLTIgXAotICAgIGZpbGU6Ly8wMDAxLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUZpeC1mb3ItYXV0b21ha2UtMS4xMi54LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1EaXNhYmxlLVdlcnJvci1mb3ItYXV0b21ha2UucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS1GaXgtbGliaWNhbC1wa2ctY29uZmlnLXRyeWluZy10by11c2UtaG9zdC0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LXNvdXAtYWRhcHQtdG8tbmV3LWxpYnhtbDItQVBJLWZyb20tMi45LjAucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA2LWNvbmZpZ3VyZS5hYy1kby1ub3Qtb3ZlcndyaXRlLWxvY2FsZWRpci5wYXRjaCBcCi0gICAgZmlsZTovL2ljb252LWRldGVjdC5oIFwKLSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmdub21lLm9yZy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXI7YnJhbmNoPWdub21lLTMtMiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZm9yLWF1dG9tYWtlLTEuMTIueC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLURpc2FibGUtV2Vycm9yLWZvci1hdXRvbWFrZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS1GaXgtbGliaWNhbC1wa2ctY29uZmlnLXRyeWluZy10by11c2UtaG9zdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1zb3VwLWFkYXB0LXRvLW5ldy1saWJ4bWwyLUFQSS1mcm9tLTIuOS4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtY29uZmlndXJlLmFjLWRvLW5vdC1vdmVyd3JpdGUtbG9jYWxlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ljb252LWRldGVjdC5oIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW1hcHgtRml4LXNpZ25hdHVyZS1mb3ItaW1hcHhfdG9rZW5pc2Vfc3RydWN0LnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldmluY2UvZXZpbmNlXzMuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4yNC4wLmJiCmluZGV4IGFhZThlNzEuLjc4YTk0OTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4yNC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4yNC4wLmJiCkBAIC0yLDEzICsyLDExIEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTZmMmY4ZDVlZTU3NmEyMTYzOTc3OTM4ZWEzNmZhN2IiCiBTRUNUSU9OID0gIngxMS9vZmZpY2UiCi1ERVBFTkRTID0gImd0ayszIGxpYnNlY3JldCBnbm9tZS1kZXNrdG9wMyBwb3BwbGVyIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2Ugb3JjIGFkd2FpdGEtaWNvbi10aGVtZSBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSIKK0RFUEVORFMgPSAiZ3RrKzMgbGlic2VjcmV0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd4MTEnLCdnbm9tZS1kZXNrdG9wMycsJycsZCl9IHBvcHBsZXIgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBvcmMgYWR3YWl0YS1pY29uLXRoZW1lIGludGx0b29sLW5hdGl2ZSBnbm9tZS1jb21tb24tbmF0aXZlIgogUFIgPSAicjUiCiAKIGluaGVyaXQgZ25vbWUgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHN5c3RlbWQKIAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQogU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtHTk9NRUJOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7R05PTUVCTn0tJHtQVn0udGFyLiR7R05PTUVfQ09NUFJFU1NfVFlQRX07bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1yZW1vdmUtWUVMUC1tYWNyby5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1mb3JtYXQtYXR0cmlidXRlLXRvLV9zeW5jdGV4X21hbGxvYy5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nY2FsY3Rvb2wvZ2NhbGN0b29sXzUuMzIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2djYWxjdG9vbC9nY2FsY3Rvb2xfNS4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDI4ZjJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2djYWxjdG9vbC9nY2FsY3Rvb2xfNS4zMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJnY2FsY3Rvb2wgaXMgYSBwb3dlcmZ1bCBjYWxjdWxhdG9yIgotU0VDVElPTiA9ICJ4MTEiCi1ERVBFTkRTID0gImd0aysgZ25vbWUtZG9jLXV0aWxzIgotCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vJHtTSFJUX1ZFUn0vJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDhkYjkyN2M2ZTdlZTFkNTM5NWY5NTNhOGMxODRjOTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzQ2ZjY0NWMwZmRlZjkwMDY0MmY2ZTlhMmMxOGU3YmE5YTdjYTliYzYyZmUyYjA4ZWI0MThmMDY1YTQyNWM4OSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdzZXR0aW5ncwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgInM6IGhlbHA6IDpnIiAke1N9L01ha2VmaWxlLmFtCi19Ci0KLVBOQkxBQ0tMSVNUW2djYWxjdG9vbF0gPz0gImJyb2tlbiBhdCBsZWFzdCBzaW5jZSBBcHJpbCAyMDEzIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmNvbXAuaGFuZGhlbGRzLm9wZW5lbWJlZGRlZC81NzkyMCBhbmQgbm9ib2R5IGNvbXBsYWluZWQsIGl0J3MgYWxzbyByZXBsYWNlZCBieSBnbm9tZSBjYWxjdWxhdG9yIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS8wMDAxLVJlbW92ZS11c2VyLXN3aXRjaC1hcHBsZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtLzAwMDEtUmVtb3ZlLXVzZXItc3dpdGNoLWFwcGxldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVhZmY1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtLzAwMDEtUmVtb3ZlLXVzZXItc3dpdGNoLWFwcGxldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyODEgKzAsMCBAQAotRnJvbSAwYTRmZTgwMmVkYmQyZThhMDE2MTYxZjA4MjgzZTRiNDY3YzY3NjJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFR1ZSwgMjEgSnVuIDIwMTEgMTI6NDg6MzkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHVzZXIgc3dpdGNoIGFwcGxldAotCi1UaGlzIGhhc24ndCBiZWVuIHVwZGF0ZWQgdG8gd29yayB3aXRoIGdub21lLXBhbmVsID4gMi4zMC4wLCBzbyBqdXN0IGRyb3AgaXQKLQotVXBzdHJlYW0tU3RhdHVzOiB1bmFjY2VwdGFibGUsIGJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggLQotIGd1aS9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAtCi0gLi4uL0dOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0LnNlcnZlci5pbi5pbiAgICAgICAgfCAgIDM4IC0KLSAuLi4vR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sICAgICAgICAgICAgICAgICB8ICAgMjAgLQotIGd1aS91c2VyLXN3aXRjaC1hcHBsZXQvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgIHwgICA2NyAtCi0gZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9hcHBsZXQuYyAgICAgICAgICAgICAgICAgICAgfCAxNjYyIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmMgICAgICAgfCAgMzA0IC0tLS0KLSBndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uaCAgICAgICB8ICAgNTEgLQotIHBvL1BPVEZJTEVTLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAtCi0gcG8vUE9URklMRVMuc2tpcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIC0KLSAxMCBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDIxNTcgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGd1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQuc2VydmVyLmluLmluCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGd1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGd1aS91c2VyLXN3aXRjaC1hcHBsZXQvTWFrZWZpbGUuYW0KLSBkZWxldGUgbW9kZSAxMDA2NDQgZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9hcHBsZXQuYwotIGRlbGV0ZSBtb2RlIDEwMDY0NCBndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uYwotIGRlbGV0ZSBtb2RlIDEwMDY0NCBndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uaAotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4NDFlZmUwLi5hODM0MTEwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNDksMTMgKzE0OSw2IEBAIFBLR19DSEVDS19NT0RVTEVTKFNJTVBMRV9DSE9PU0VSLAotIEFDX1NVQlNUKFNJTVBMRV9DSE9PU0VSX0NGTEFHUykKLSBBQ19TVUJTVChTSU1QTEVfQ0hPT1NFUl9MSUJTKQotIAotLVBLR19DSEVDS19NT0RVTEVTKEFQUExFVCwKLS0gICAgICAgIGRidXMtZ2xpYi0xID49ICREQlVTX0dMSUJfUkVRVUlSRURfVkVSU0lPTgotLSAgICAgICAgZ3RrKy0yLjAgPj0gJEdUS19SRVFVSVJFRF9WRVJTSU9OCi0tICAgICAgICBsaWJwYW5lbGFwcGxldC0yLjAgPj0gJEdOT01FX1BBTkVMX1JFUVVJUkVEX1ZFUlNJT04pCi0tQUNfU1VCU1QoQVBQTEVUX0NGTEFHUykKLS1BQ19TVUJTVChBUFBMRVRfTElCUykKLS0KLSBQTFVHSU5fTElCVE9PTF9GTEFHUz0iLWV4cG9ydF9keW5hbWljIC1tb2R1bGUgLWF2b2lkLXZlcnNpb24iCi0gQUNfU1VCU1QoUExVR0lOX0xJQlRPT0xfRkxBR1MpCi0gCi1AQCAtMTM0MCw3ICsxMzMzLDYgQEAgZ3VpL01ha2VmaWxlCi0gZ3VpL3NpbXBsZS1ncmVldGVyL01ha2VmaWxlCi0gZ3VpL3NpbXBsZS1ncmVldGVyL2xpYm5vdGlmaWNhdGlvbmFyZWEvTWFrZWZpbGUKLSBndWkvc2ltcGxlLWNob29zZXIvTWFrZWZpbGUKLS1ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L01ha2VmaWxlCi0gdXRpbHMvTWFrZWZpbGUKLSBkYXRhL2dkbS5jb25mCi0gZGF0YS9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL2d1aS9NYWtlZmlsZS5hbSBiL2d1aS9NYWtlZmlsZS5hbQotaW5kZXggMzI2MjM5Zi4uYmRhM2Y3YSAxMDA2NDQKLS0tLSBhL2d1aS9NYWtlZmlsZS5hbQotKysrIGIvZ3VpL01ha2VmaWxlLmFtCi1AQCAtMiw3ICsyLDYgQEAgTlVMTCA9Ci0gCi0gU1VCRElSUyA9CQkJXAotIAlzaW1wbGUtZ3JlZXRlcgkJXAotLQl1c2VyLXN3aXRjaC1hcHBsZXQJXAotIAkkKE5VTEwpCi0gCi0gaWYgWERNQ1BfU1VQUE9SVAotQEAgLTEyLDUgKzExLDQgQEAgZW5kaWYKLSBESVNUX1NVQkRJUlMgPQkJCVwKLSAJc2ltcGxlLWNob29zZXIJCVwKLSAJc2ltcGxlLWdyZWV0ZXIJCVwKLS0JdXNlci1zd2l0Y2gtYXBwbGV0CVwKLSAJJChOVUxMKQotZGlmZiAtLWdpdCBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQuc2VydmVyLmluLmluIGIvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9HTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldC5zZXJ2ZXIuaW4uaW4KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYTliNzc1Zi4uMDAwMDAwMAotLS0tIGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9HTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldC5zZXJ2ZXIuaW4uaW4KLSsrKyAvZGV2L251bGwKLUBAIC0xLDM4ICswLDAgQEAKLS08b2FmX2luZm8+Ci0tICA8b2FmX3NlcnZlciBpaWQ9Ik9BRklJRDpHTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldF9GYWN0b3J5IiB0eXBlPSJleGUiCi0tICAgICAgICAgICAgICBsb2NhdGlvbj0iQExJQkVYRUNESVJAL2dkbS11c2VyLXN3aXRjaC1hcHBsZXQiPgotLQotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJyZXBvX2lkcyIgdHlwZT0ic3RyaW5ndiI+Ci0tICAgICAgPGl0ZW0gdmFsdWU9IklETDpCb25vYm8vR2VuZXJpY0ZhY3Rvcnk6MS4wIi8+Ci0tICAgICAgPGl0ZW0gdmFsdWU9IklETDpCb25vYm8vVW5rbm93bjoxLjAiLz4KLS0gICAgPC9vYWZfYXR0cmlidXRlPgotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJzdHJpbmciIF92YWx1ZT0iVXNlciBTd2l0Y2hlciBBcHBsZXQgRmFjdG9yeSIvPgotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0ic3RyaW5nIiBfdmFsdWU9IlVzZXIgU3dpdGNoZXIgQXBwbGV0IEZhY3RvcnkiLz4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYm9ub2JvOmVudmlyb25tZW50IiB0eXBlPSJzdHJpbmd2Ij4KLS0gICAgICAgPGl0ZW0gdmFsdWU9IkRCVVNfU0VTU0lPTl9CVVNfQUREUkVTUyIvPgotLSAgICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYnVnemlsbGE6YnVnemlsbGEiIHR5cGU9InN0cmluZyIgdmFsdWU9IkdOT01FIi8+Ci0tICAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJidWd6aWxsYTpwcm9kdWN0IiB0eXBlPSJzdHJpbmciIHZhbHVlPSJnZG0iLz4KLS0gICAgIDxvYWZfYXR0cmlidXRlIG5hbWU9ImJ1Z3ppbGxhOmNvbXBvbmVudCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iZ2VuZXJhbCIvPgotLSAgICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYnVnemlsbGE6dmVyc2lvbiIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iQFZFUlNJT05AIi8+Ci0tICAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJidWd6aWxsYTpvdGhlcl9iaW5hcmllcyIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iZ2RtLXVzZXItc3dpdGNoLWFwcGxldCIvPgotLSAgICA8L29hZl9hdHRyaWJ1dGU+Ci0tICA8L29hZl9zZXJ2ZXI+Ci0tCi0tICA8b2FmX3NlcnZlciBpaWQ9Ik9BRklJRDpHTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldCIgdHlwZT0iZmFjdG9yeSIKLS0gICAgICAgICAgICAgIGxvY2F0aW9uPSJPQUZJSUQ6R05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXRfRmFjdG9yeSI+Ci0tCi0tICAgIDxvYWZfYXR0cmlidXRlIG5hbWU9InJlcG9faWRzIiB0eXBlPSJzdHJpbmd2Ij4KLS0gICAgICA8aXRlbSB2YWx1ZT0iSURMOkdOT01FL1ZlcnRpZ28vUGFuZWxBcHBsZXRTaGVsbDoxLjAiLz4KLS0gICAgICA8aXRlbSB2YWx1ZT0iSURMOkJvbm9iby9Db250cm9sOjEuMCIvPgotLSAgICAgIDxpdGVtIHZhbHVlPSJJREw6Qm9ub2JvL1Vua25vd246MS4wIi8+Ci0tICAgIDwvb2FmX2F0dHJpYnV0ZT4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiBfdmFsdWU9IlVzZXIgU3dpdGNoZXIiLz4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9InN0cmluZyIgX3ZhbHVlPSJBIG1lbnUgdG8gcXVpY2tseSBzd2l0Y2ggYmV0d2VlbiB1c2VycyIvPgotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJwYW5lbDppY29uIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJzdG9ja19wZW9wbGUiLz4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYnVnemlsbGE6YnVnemlsbGEiIHR5cGU9InN0cmluZyIgdmFsdWU9IkdOT01FIi8+Ci0tICAgIDxvYWZfYXR0cmlidXRlIG5hbWU9ImJ1Z3ppbGxhOnByb2R1Y3QiIHR5cGU9InN0cmluZyIgdmFsdWU9ImdkbSIvPgotLSAgICA8b2FmX2F0dHJpYnV0ZSBuYW1lPSJidWd6aWxsYTpjb21wb25lbnQiIHR5cGU9InN0cmluZyIgdmFsdWU9ImdlbmVyYWwiLz4KLS0gICAgPG9hZl9hdHRyaWJ1dGUgbmFtZT0iYnVnemlsbGE6dmVyc2lvbiIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iQFZFUlNJT05AIi8+Ci0tICAgIDxvYWZfYXR0cmlidXRlIG5hbWU9ImJ1Z3ppbGxhOm90aGVyX2JpbmFyaWVzIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJnZG0tdXNlci1zd2l0Y2gtYXBwbGV0Ii8+Ci0tICA8L29hZl9zZXJ2ZXI+Ci0tPC9vYWZfaW5mbz4KLWRpZmYgLS1naXQgYS9ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L0dOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0LnhtbCBiL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGUxODQ1YzguLjAwMDAwMDAKLS0tLSBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sCi0rKysgL2Rldi9udWxsCi1AQCAtMSwyMCArMCwwIEBACi0tPFJvb3Q+Ci0tICA8cG9wdXBzPgotLSAgICA8cG9wdXAgbmFtZT0iYnV0dG9uMyI+Ci0tICAgICAgPG1lbnVpdGVtCi0tICAgICAgIG5hbWU9IkFib3V0IE1lIEl0ZW0iCi0tICAgICAgIHZlcmI9IkdkbUFib3V0TWUiCi0tICAgICAgIF9sYWJlbD0iRWRpdCBQZXJzb25hbCBfSW5mb3JtYXRpb24iLz4KLS0gICAgICA8bWVudWl0ZW0KLS0gICAgICAgbmFtZT0iVXNlcnMgYW5kIEdyb3VwcyBBZG1pbiBJdGVtIgotLSAgICAgICB2ZXJiPSJHZG1Vc2Vyc0dyb3Vwc0FkbWluIgotLSAgICAgICBfbGFiZWw9Il9FZGl0IFVzZXJzIGFuZCBHcm91cHMiLz4KLS0gICAgICA8bWVudWl0ZW0KLS0gICAgICAgbmFtZT0iQWJvdXQgSXRlbSIKLS0gICAgICAgdmVyYj0iR2RtQWJvdXQiCi0tICAgICAgIF9sYWJlbD0iX0Fib3V0IgotLSAgICAgICBwaXh0eXBlPSJzdG9jayIKLS0gICAgICAgcGl4bmFtZT0iZ3RrLWFib3V0Ii8+Ci0tICAgIDwvcG9wdXA+Ci0tICA8L3BvcHVwcz4KLS08L1Jvb3Q+Ci1kaWZmIC0tZ2l0IGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9NYWtlZmlsZS5hbSBiL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvTWFrZWZpbGUuYW0KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMmQyY2RjMC4uMDAwMDAwMAotLS0tIGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9NYWtlZmlsZS5hbQotKysrIC9kZXYvbnVsbAotQEAgLTEsNjcgKzAsMCBAQAotLU5VTEwgPQotLQotLUFNX0NQUEZMQUdTID0gXAotLQktSSQodG9wX3NyY2RpcikvZ3VpL3NpbXBsZS1ncmVldGVyCQlcCi0tCS1JJCh0b3Bfc3JjZGlyKS9jb21tb24JCQkJXAotLQktRFBSRUZJWD1cIiIkKHByZWZpeCkiXCIgCQkJXAotLQktRExJQkRJUj1cIiIkKGxpYmRpcikiXCIgCQkJXAotLQktRERBVEFESVI9XCIiJChkYXRhZGlyKSJcIgkJIAlcCi0tCS1EU1lTQ09ORkRJUj1cIiIkKHN5c2NvbmZkaXIpIlwiCQlcCi0tCS1ETElCTE9DQUxFRElSPVwiIiQocHJlZml4KS9saWIvbG9jYWxlIlwiCVwKLS0JLURHTk9NRUxPQ0FMRURJUj1cIiIkKGRhdGFkaXIpL2xvY2FsZSJcIglcCi0tCS1ER0xBREVESVI9XCIiJChwa2dkYXRhZGlyKSJcIiAJCQlcCi0tCS1ETElCRVhFQ0RJUj1cIiIkKGxpYmV4ZWNkaXIpIlwiIAkJXAotLQktRFNCSU5ESVI9XCIiJChzYmluZGlyKSJcIgkJIAlcCi0tCS1ER0RNQ09ORkRJUj1cIiQoZ2RtY29uZmRpcilcIgkJCVwKLS0JJChHVEtfQ0ZMQUdTKQkJCQkJXAotLQkkKEFQUExFVF9DRkxBR1MpCQkJCVwKLS0JJChOVUxMKQotLQotLWxpYmV4ZWNfUFJPR1JBTVMgPQkJCVwKLS0JZ2RtLXVzZXItc3dpdGNoLWFwcGxldAkJXAotLQkkKE5VTEwpCi0tCi0tZ2RtX3VzZXJfc3dpdGNoX2FwcGxldF9TT1VSQ0VTID0gIAlcCi0tCWFwcGxldC5jIAkJCVwKLS0JZ2RtLWVudHJ5LW1lbnUtaXRlbS5oCQlcCi0tCWdkbS1lbnRyeS1tZW51LWl0ZW0uYwkJXAotLQkkKE5VTEwpCi0tCi0tZ2RtX3VzZXJfc3dpdGNoX2FwcGxldF9MREFERCA9IAkJXAotLQkkKHRvcF9idWlsZGRpcikvZ3VpL3NpbXBsZS1ncmVldGVyL2xpYmdkbXVzZXIubGEJXAotLQkkKHRvcF9idWlsZGRpcikvY29tbW9uL2xpYmdkbWNvbW1vbi5sYQkJXAotLQkkKENPTU1PTl9MSUJTKQkJCQkJXAotLQkkKEFQUExFVF9MSUJTKQkJCQkJXAotLQkkKE5VTEwpCi0tCi0tIyBCb25vYm8gVUkKLS11aWRpciA9CSQoZGF0YWRpcikvZ25vbWUtMi4wL3VpCi0tdWlfREFUQSA9CQkJCQlcCi0tCUdOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0LnhtbAkJXAotLQkkKE5VTEwpCi0tCi0tIyBCb25vYm8gLnNlcnZlcgotLXNlcnZlcmRpciA9ICQobGliZGlyKS9ib25vYm8vc2VydmVycwotLXNlcnZlcl9pbl9maWxlcyA9CQkJCVwKLS0JR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQuc2VydmVyLmluCVwKLS0JJChOVUxMKQotLXNlcnZlcl9EQVRBID0gJChzZXJ2ZXJfaW5fZmlsZXM6LnNlcnZlci5pbj0uc2VydmVyKQotLQotLSQoc2VydmVyX2luX2ZpbGVzKTogJChzZXJ2ZXJfaW5fZmlsZXM6LnNlcnZlci5pbj0uc2VydmVyLmluLmluKQotLQlzZWQgLWUgInN8XEBMSUJFWEVDRElSXEB8JChsaWJleGVjZGlyKXwiIC1lICJzfFxAVkVSU0lPTlxAfCQoVkVSU0lPTil8IiAkPCA+ICRACi0tCi0tQElOVExUT09MX1NFUlZFUl9SVUxFQAotLQotLUVYVFJBX0RJU1QgPSAJCQlcCi0tCSQodWlfREFUQSkJCVwKLS0JR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQuc2VydmVyLmluLmluCVwKLS0JJChOVUxMKQotLQotLURJU1RDTEVBTkZJTEVTID0gICAgICAgICAgICAgICAgICAgICAgICBcCi0tCSQoc2VydmVyX2luX2ZpbGVzKQkJXAotLQkkKHNlcnZlcl9EQVRBKQkJCVwKLS0gICAgICAgICQoTlVMTCkKLS0KLS1NQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgKn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICBNYWtlZmlsZS5pbgotZGlmZiAtLWdpdCBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvYXBwbGV0LmMgYi9ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2FwcGxldC5jCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGI0Zjk0NGMuLjAwMDAwMDAKLS0tLSBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvYXBwbGV0LmMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE2NjIgKzAsMCBAQAotLS8qIC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDggLSotCi0tICoKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNSBKYW1lcyBNLiBDYXBlIDxqY2FwZUBpZ25vcmUteW91ci50dj4uCi0tICogQ29weXJpZ2h0IChDKSAyMDA4ICAgICAgUmVkIEhhdCwgSW5jLgotLSAqCi0tICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0gKgotLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tICoKLS0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQotLSAqLwotLQotLSNpbmNsdWRlICJjb25maWcuaCIKLS0KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHVuaXN0ZC5oPgotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tCi0tI2luY2x1ZGUgPGdsaWIvZ2kxOG4uaD4KLS0jaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KLS0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotLQotLSNpbmNsdWRlIDxnY29uZi9nY29uZi5oPgotLSNpbmNsdWRlIDxnY29uZi9nY29uZi1jbGllbnQuaD4KLS0KLS0jaW5jbHVkZSA8ZGJ1cy9kYnVzLWdsaWIuaD4KLS0KLS0jaW5jbHVkZSA8Ym9ub2JvL2Jvbm9iby1tYWluLmg+Ci0tI2luY2x1ZGUgPGJvbm9iby9ib25vYm8tdWktdXRpbC5oPgotLQotLSNpbmNsdWRlIDxwYW5lbC1hcHBsZXQuaD4KLS0jaW5jbHVkZSA8cGFuZWwtYXBwbGV0LWdjb25mLmg+Ci0tCi0tI2luY2x1ZGUgImdkbS11c2VyLW1hbmFnZXIuaCIKLS0jaW5jbHVkZSAiZ2RtLWVudHJ5LW1lbnUtaXRlbS5oIgotLSNpbmNsdWRlICJnZG0tc2V0dGluZ3MtY2xpZW50LmgiCi0tCi0tI2RlZmluZSBMT0NLRE9XTl9ESVIgICAgIi9kZXNrdG9wL2dub21lL2xvY2tkb3duIgotLSNkZWZpbmUgTE9DS0RPV05fVVNFUl9TV0lUQ0hJTkdfS0VZIExPQ0tET1dOX0RJUiAiL2Rpc2FibGVfdXNlcl9zd2l0Y2hpbmciCi0tI2RlZmluZSBMT0NLRE9XTl9MT0NLX1NDUkVFTl9LRVkgICAgTE9DS0RPV05fRElSICIvZGlzYWJsZV9sb2NrX3NjcmVlbiIKLS0jZGVmaW5lIExPQ0tET1dOX0NPTU1BTkRfTElORV9LRVkgICBMT0NLRE9XTl9ESVIgIi9kaXNhYmxlX2NvbW1hbmRfbGluZSIKLS0KLS10eXBlZGVmIGVudW0gewotLSAgICAgICAgR1NNX1BSRVNFTkNFX1NUQVRVU19BVkFJTEFCTEUgPSAwLAotLSAgICAgICAgR1NNX1BSRVNFTkNFX1NUQVRVU19JTlZJU0lCTEUsCi0tICAgICAgICBHU01fUFJFU0VOQ0VfU1RBVFVTX0JVU1ksCi0tICAgICAgICBHU01fUFJFU0VOQ0VfU1RBVFVTX0lETEUsCi0tfSBHc21QcmVzZW5jZVN0YXR1czsKLS0KLS10eXBlZGVmIHN0cnVjdCBfR2RtQXBwbGV0RGF0YQotLXsKLS0gICAgICAgIFBhbmVsQXBwbGV0ICAgICphcHBsZXQ7Ci0tCi0tICAgICAgICBHQ29uZkNsaWVudCAgICAqY2xpZW50OwotLSAgICAgICAgR2RtVXNlck1hbmFnZXIgKm1hbmFnZXI7Ci0tICAgICAgICBHZG1Vc2VyICAgICAgICAqdXNlcjsKLS0KLS0gICAgICAgIEd0a1dpZGdldCAgICAgICptZW51YmFyOwotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgKm1lbnVpdGVtOwotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgKm1lbnU7Ci0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBHdGtXaWRnZXQgICAgICAqdXNlcl9pdGVtOwotLSNlbmRpZgotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgKmNvbnRyb2xfcGFuZWxfaXRlbTsKLS0gICAgICAgIEd0a1dpZGdldCAgICAgICphY2NvdW50X2l0ZW07Ci0tICAgICAgICBHdGtXaWRnZXQgICAgICAqbG9ja19zY3JlZW5faXRlbTsKLS0gICAgICAgIEd0a1dpZGdldCAgICAgICpsb2dpbl9zY3JlZW5faXRlbTsKLS0gICAgICAgIEd0a1dpZGdldCAgICAgICpxdWl0X3Nlc3Npb25faXRlbTsKLS0KLS0gICAgICAgIGd1aW50ICAgICAgICAgICBjbGllbnRfbm90aWZ5X2xvY2tkb3duX2lkOwotLQotLSAgICAgICAgZ3VpbnQgICAgICAgICAgIGN1cnJlbnRfc3RhdHVzOwotLSAgICAgICAgZ3VpbnQgICAgICAgICAgIHVzZXJfbG9hZGVkX25vdGlmeV9pZDsKLS0gICAgICAgIGd1aW50ICAgICAgICAgICB1c2VyX2NoYW5nZWRfbm90aWZ5X2lkOwotLSAgICAgICAgZ2ludDggICAgICAgICAgIHBpeGVsX3NpemU7Ci0tICAgICAgICBnaW50ICAgICAgICAgICAgcGFuZWxfc2l6ZTsKLS0gICAgICAgIEd0a0ljb25TaXplICAgICBpY29uX3NpemU7Ci0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBEQnVzR1Byb3h5ICAgICAqcHJlc2VuY2VfcHJveHk7Ci0tI2VuZGlmCi0tfSBHZG1BcHBsZXREYXRhOwotLQotLXR5cGVkZWYgc3RydWN0IF9TZWxlY3RvclJlc3BvbnNlRGF0YQotLXsKLS0gICAgICAgIEdkbUFwcGxldERhdGEgICphZGF0YTsKLS0gICAgICAgIEd0a1JhZGlvQnV0dG9uICpyYWRpbzsKLS19IFNlbGVjdG9yUmVzcG9uc2VEYXRhOwotLQotLXN0YXRpYyB2b2lkIHJlc2V0X2ljb24gICAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpOwotLXN0YXRpYyB2b2lkIHVwZGF0ZV9sYWJlbCAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpOwotLQotLXN0YXRpYyBnYm9vbGVhbiBhcHBsZXRfZmFjdG9yeSAoUGFuZWxBcHBsZXQgICAqYXBwbGV0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqaWlkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgZGF0YSk7Ci0tCi0tUEFORUxfQVBQTEVUX0JPTk9CT19GQUNUT1JZICgiT0FGSUlEOkdOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0X0ZhY3RvcnkiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFORUxfVFlQRV9BUFBMRVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2RtLXVzZXItc3dpdGNoLWFwcGxldCIsICIwIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQYW5lbEFwcGxldEZhY3RvcnlDYWxsYmFjaylhcHBsZXRfZmFjdG9yeSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpCi0tCi0tc3RhdGljIHZvaWQKLS1hYm91dF9tZV9jYiAoQm9ub2JvVUlDb21wb25lbnQgKnVpX2NvbnRhaW5lciwKLS0gICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgIGRhdGEsCi0tICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICpjbmFtZSkKLS17Ci0tICAgICAgICBHRXJyb3IgKmVycjsKLS0KLS0gICAgICAgIGVyciA9IE5VTEw7Ci0tICAgICAgICBpZiAoISBnX3NwYXduX2NvbW1hbmRfbGluZV9hc3luYyAoImdub21lLWFib3V0LW1lIiwgJmVycikpIHsKLS0gICAgICAgICAgICAgICAgZ19jcml0aWNhbCAoIkNvdWxkIG5vdCBydW4gYGdub21lLWFib3V0LW1lJzogJXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0tICAgICAgICAgICAgICAgIGJvbm9ib191aV9jb21wb25lbnRfc2V0X3Byb3AgKHVpX2NvbnRhaW5lciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9jb21tYW5kcy9HZG1BYm91dE1lIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhpZGRlbiIsICIxIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tICAgICAgICB9Ci0tfQotLQotLS8qCi0tICogZ25vbWUtcGFuZWwvYXBwbGV0cy93bmNrbGV0L3dpbmRvdy1tZW51LmM6d2luZG93X2ZpbHRlcl9idXR0b25fcHJlc3MoKQotLSAqCi0tICogQ29weXJpZ2h0IChDKSAyMDA1IEphbWVzIE0uIENhcGUuCi0tICogQ29weXJpZ2h0IChDKSAyMDAzIFN1biBNaWNyb3N5c3RlbXMsIEluYy4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICogQ29weXJpZ2h0IChDKSAyMDAwIEhlbGl4IENvZGUsIEluYy4KLS0gKi8KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1tZW51YmFyX2J1dHRvbl9wcmVzc19ldmVudF9jYiAoR3RrV2lkZ2V0ICAgICAgKm1lbnViYXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50QnV0dG9uICpldmVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAgKmFkYXRhKQotLXsKLS0gICAgICAgIGlmIChldmVudC0+YnV0dG9uICE9IDEpIHsKLS0gICAgICAgICAgICAgICAgZ19zaWduYWxfc3RvcF9lbWlzc2lvbl9ieV9uYW1lIChtZW51YmFyLCAiYnV0dG9uLXByZXNzLWV2ZW50Iik7Ci0tICAgICAgICAgICAgICAgIC8qIFJlc2V0IHRoZSBsb2dpbiB3aW5kb3cgaXRlbSAqLwotLSAgICAgICAgfQotLQotLSAgICAgICAgcmV0dXJuIEZBTFNFOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLWFib3V0X2NiIChCb25vYm9VSUNvbXBvbmVudCAqdWlfY29udGFpbmVyLAotLSAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgZGF0YSwKLS0gICAgICAgICAgY29uc3QgY2hhciAgICAgICAgKmNuYW1lKQotLXsKLS0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICphdXRob3JzW10gPSB7Ci0tICAgICAgICAgICAgICAgICJKYW1lcyBNLiBDYXBlIDxqY2FwZUBpZ25vcmUteW91ci50dj4iLAotLSAgICAgICAgICAgICAgICAiVGhvbWFzIFRodXJtYW4gPHRob21hc0B0aHVybWFuLm9yZy51az4iLAotLSAgICAgICAgICAgICAgICAiV2lsbGlhbSBKb24gTWNDYW5uIDxqbWNjYW5uQHJlZGhhdC5jb20+IiwKLS0gICAgICAgICAgICAgICAgTlVMTAotLSAgICAgICAgfTsKLS0gICAgICAgIHN0YXRpYyBjaGFyICpsaWNlbnNlW10gPSB7Ci0tICAgICAgICAgICAgICAgIE5fKCJUaGUgVXNlciBTd2l0Y2ggQXBwbGV0IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgIgotLSAgICAgICAgICAgICAgICAgICAiaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgIgotLSAgICAgICAgICAgICAgICAgICAidGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgIgotLSAgICAgICAgICAgICAgICAgICAiKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4iKSwKLS0gICAgICAgICAgICAgICAgTl8oIlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAiCi0tICAgICAgICAgICAgICAgICAgICJidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAiCi0tICAgICAgICAgICAgICAgICAgICJNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlICIKLS0gICAgICAgICAgICAgICAgICAgIkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuIiksCi0tICAgICAgICAgICAgICAgIE5fKCJZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAiCi0tICAgICAgICAgICAgICAgICAgICJhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAiCi0tICAgICAgICAgICAgICAgICAgICJGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQSAiKSwKLS0gICAgICAgICAgICAgICAgTlVMTAotLSAgICAgICAgfTsKLS0gICAgICAgIGNoYXIgKmxpY2Vuc2VfaTE4bjsKLS0KLS0gICAgICAgIGxpY2Vuc2VfaTE4biA9IGdfc3RyY29uY2F0IChfKGxpY2Vuc2VbMF0pLCAiXG5cbiIsIF8obGljZW5zZVsxXSksICJcblxuIiwgXyhsaWNlbnNlWzJdKSwgTlVMTCk7IAotLQotLSAgICAgICAgZ3RrX3Nob3dfYWJvdXRfZGlhbG9nIChOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiIsIFZFUlNJT04sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3B5cmlnaHQiLCAiQ29weXJpZ2h0IFx4YzJceGE5IDIwMDQtMjAwNSBKYW1lcyBNLiBDYXBlLlxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29weXJpZ2h0IFx4YzJceGE5IDIwMDYgVGhvbWFzIFRodXJtYW4uXG4iCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3B5cmlnaHQgXHhjMlx4YTkgMjAwOCBSZWQgSGF0LCBJbmMuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lbnRzIiwgXygiQSBtZW51IHRvIHF1aWNrbHkgc3dpdGNoIGJldHdlZW4gdXNlcnMuIiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdXRob3JzIiwgYXV0aG9ycywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2UiLCBsaWNlbnNlX2kxOG4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cmFwLWxpY2Vuc2UiLCBUUlVFLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNsYXRvci1jcmVkaXRzIiwgXygidHJhbnNsYXRvci1jcmVkaXRzIiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2dvLWljb24tbmFtZSIsICJzdG9ja19wZW9wbGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0KLS0gICAgICAgIGdfZnJlZSAobGljZW5zZV9pMThuKTsKLS19Ci0tCi0tCi0tc3RhdGljIHZvaWQKLS1hZG1pbl9jYiAoQm9ub2JvVUlDb21wb25lbnQgKnVpX2NvbnRhaW5lciwKLS0gICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgIGRhdGEsCi0tICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICpjbmFtZSkKLS17Ci0tI2lmZGVmIFVTRVJTX0FETUlOCi0tICAgICAgICBjaGFyICAgKiphcmdzOwotLSAgICAgICAgZ2Jvb2xlYW4gcmVzOwotLSAgICAgICAgR0Vycm9yICAqZXJyOwotLQotLSAgICAgICAgZXJyID0gTlVMTDsKLS0gICAgICAgIGlmICghZ19zaGVsbF9wYXJzZV9hcmd2IChVU0VSU19BRE1JTiwgTlVMTCwgJmFyZ3MsICZlcnIpKSB7Ci0tICAgICAgICAgICAgICAgIGdfY3JpdGljYWwgKCJDb3VsZCBub3QgcGFyc2UgdXNlcnMgYW5kIGdyb3VwcyBtYW5hZ2VtZW50IGNvbW1hbmQgbGluZSBgJXMnOiAlcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRVJTX0FETUlOLCBlcnItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICByZXMgPSBnX3NwYXduX2FzeW5jIChnX2dldF9ob21lX2RpciAoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdfU1BBV05fU1RET1VUX1RPX0RFVl9OVUxMIHwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1NQQVdOX1NUREVSUl9UT19ERVZfTlVMTCB8Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19TUEFXTl9TRUFSQ0hfUEFUSCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyKTsKLS0gICAgICAgIGlmICghIHJlcykgewotLSAgICAgICAgICAgICAgICBnX2NyaXRpY2FsICgiQ291bGQgbm90IHJ1biBgJXMnIHRvIG1hbmFnZSB1c2VycyBhbmQgZ3JvdXBzOiAlcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRVJTX0FETUlOLCBlcnItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0tICAgICAgICB9Ci0tICAgICAgICBnX3N0cmZyZWV2IChhcmdzKTsKLS0jZW5kaWYgLyogVVNFUlNfQURNSU4gKi8KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1zZXRfbWVudWl0ZW1faWNvbiAoQm9ub2JvVUlDb21wb25lbnQgKmNvbXBvbmVudCwKLS0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgKml0ZW1fcGF0aCwKLS0gICAgICAgICAgICAgICAgICAgR3RrSWNvblRoZW1lICAgICAgKnRoZW1lLAotLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAqaWNvbl9uYW1lLAotLSAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgaWNvbl9zaXplKQotLXsKLS0gICAgICAgIEdka1BpeGJ1ZiAqcGl4YnVmOwotLSAgICAgICAgaW50ICAgICAgICB3aWR0aDsKLS0gICAgICAgIGludCAgICAgICAgaGVpZ2h0OwotLQotLSAgICAgICAgcGl4YnVmID0gZ3RrX2ljb25fdGhlbWVfbG9hZF9pY29uICh0aGVtZSwgaWNvbl9uYW1lLCBpY29uX3NpemUsIDAsIE5VTEwpOwotLSAgICAgICAgaWYgKHBpeGJ1ZiA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIHdpZHRoID0gZ2RrX3BpeGJ1Zl9nZXRfd2lkdGggKHBpeGJ1Zik7Ci0tICAgICAgICBoZWlnaHQgPSBnZGtfcGl4YnVmX2dldF9oZWlnaHQgKHBpeGJ1Zik7Ci0tICAgICAgICBpZiAod2lkdGggPiBpY29uX3NpemUgKyA0IHx8IGhlaWdodCA+IGljb25fc2l6ZSArIDQpIHsKLS0gICAgICAgICAgICAgICAgR2RrUGl4YnVmICp0bXA7Ci0tICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPiB3aWR0aCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICo9IChnZG91YmxlKSBpY29uX3NpemUgLyAoZ2RvdWJsZSkgaGVpZ2h0OwotLSAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGljb25fc2l6ZTsKLS0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgKj0gKGdkb3VibGUpIGljb25fc2l6ZSAvIChnZG91YmxlKSB3aWR0aDsKLS0gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGljb25fc2l6ZTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICB0bXAgPSBnZGtfcGl4YnVmX3NjYWxlX3NpbXBsZSAocGl4YnVmLCB3aWR0aCwgaGVpZ2h0LCBHREtfSU5URVJQX0JJTElORUFSKTsKLS0gICAgICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHBpeGJ1Zik7Ci0tICAgICAgICAgICAgICAgIHBpeGJ1ZiA9IHRtcDsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGJvbm9ib191aV91dGlsX3NldF9waXhidWYgKGNvbXBvbmVudCwgaXRlbV9wYXRoLCBwaXhidWYsIE5VTEwpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKHBpeGJ1Zik7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tYXBwbGV0X3N0eWxlX3NldF9jYiAoR3RrV2lkZ2V0ICp3aWRnZXQsCi0tICAgICAgICAgICAgICAgICAgICAgR3RrU3R5bGUgICpvbGRfc3R5bGUsCi0tICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICBkYXRhKQotLXsKLS0gICAgICAgIEJvbm9ib1VJQ29tcG9uZW50ICpjb21wb25lbnQ7Ci0tICAgICAgICBHZGtTY3JlZW4gICAgICAgICAqc2NyZWVuOwotLSAgICAgICAgR3RrSWNvblRoZW1lICAgICAgKnRoZW1lOwotLSAgICAgICAgaW50ICAgICAgICAgICAgICAgIHdpZHRoOwotLSAgICAgICAgaW50ICAgICAgICAgICAgICAgIGhlaWdodDsKLS0gICAgICAgIGludCAgICAgICAgICAgICAgICBpY29uX3NpemU7Ci0tCi0tICAgICAgICBpZiAoZ3RrX3dpZGdldF9oYXNfc2NyZWVuICh3aWRnZXQpKSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbiAod2lkZ2V0KTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQgKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAoZ3RrX2ljb25fc2l6ZV9sb29rdXBfZm9yX3NldHRpbmdzIChndGtfc2V0dGluZ3NfZ2V0X2Zvcl9zY3JlZW4gKHNjcmVlbiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfSUNPTl9TSVpFX01FTlUsICZ3aWR0aCwgJmhlaWdodCkpIHsKLS0gICAgICAgICAgICAgICAgaWNvbl9zaXplID0gTUFYICh3aWR0aCwgaGVpZ2h0KTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGljb25fc2l6ZSA9IDE2OwotLSAgICAgICAgfQotLQotLSAgICAgICAgdGhlbWUgPSBndGtfaWNvbl90aGVtZV9nZXRfZm9yX3NjcmVlbiAoc2NyZWVuKTsKLS0gICAgICAgIGNvbXBvbmVudCA9IHBhbmVsX2FwcGxldF9nZXRfcG9wdXBfY29tcG9uZW50IChQQU5FTF9BUFBMRVQgKHdpZGdldCkpOwotLQotLSAgICAgICAgc2V0X21lbnVpdGVtX2ljb24gKGNvbXBvbmVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAiL2NvbW1hbmRzL0dkbUFib3V0TWUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VyLWluZm8iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25fc2l6ZSk7Ci0tICAgICAgICBzZXRfbWVudWl0ZW1faWNvbiAoY29tcG9uZW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIvY29tbWFuZHMvR2RtVXNlcnNHcm91cHNBZG1pbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0b2NrX3Blb3BsZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbl9zaXplKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1hcHBsZXRfY2hhbmdlX2JhY2tncm91bmRfY2IgKFBhbmVsQXBwbGV0ICAgICAgICAgICAgICAgKmFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhbmVsQXBwbGV0QmFja2dyb3VuZFR5cGUgIHR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtDb2xvciAgICAgICAgICAgICAgICAgICpjb2xvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka1BpeG1hcCAgICAgICAgICAgICAgICAgKnBpeG1hcCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgICAgICAgICAgICAgKmFkYXRhKQotLXsKLS0gICAgICAgIEd0a1JjU3R5bGUgKnJjX3N0eWxlOwotLSAgICAgICAgR3RrU3R5bGUgICAqc3R5bGU7Ci0tCi0tICAgICAgICBndGtfd2lkZ2V0X3NldF9zdHlsZSAoYWRhdGEtPm1lbnViYXIsIE5VTEwpOwotLSAgICAgICAgcmNfc3R5bGUgPSBndGtfcmNfc3R5bGVfbmV3ICgpOwotLSAgICAgICAgZ3RrX3dpZGdldF9tb2RpZnlfc3R5bGUgKEdUS19XSURHRVQgKGFkYXRhLT5tZW51YmFyKSwgcmNfc3R5bGUpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKHJjX3N0eWxlKTsKLS0KLS0gICAgICAgIHN3aXRjaCAodHlwZSkgewotLSAgICAgICAgY2FzZSBQQU5FTF9OT19CQUNLR1JPVU5EOgotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIGNhc2UgUEFORUxfQ09MT1JfQkFDS0dST1VORDoKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9tb2RpZnlfYmcgKGFkYXRhLT5tZW51YmFyLCBHVEtfU1RBVEVfTk9STUFMLCBjb2xvcik7Ci0tICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBQQU5FTF9QSVhNQVBfQkFDS0dST1VORDoKLS0gICAgICAgICAgICAgICAgc3R5bGUgPSBndGtfc3R5bGVfY29weSAoZ3RrX3dpZGdldF9nZXRfc3R5bGUgKGFkYXRhLT5tZW51YmFyKSk7Ci0tICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+YmdfcGl4bWFwW0dUS19TVEFURV9OT1JNQUxdKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHN0eWxlLT5iZ19waXhtYXBbR1RLX1NUQVRFX05PUk1BTF0pOwotLSAgICAgICAgICAgICAgICB9Ci0tCi0tICAgICAgICAgICAgICAgIHN0eWxlLT5iZ19waXhtYXBbR1RLX1NUQVRFX05PUk1BTF0gPSBnX29iamVjdF9yZWYgKHBpeG1hcCk7Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X3N0eWxlIChhZGF0YS0+bWVudWJhciwgc3R5bGUpOwotLSAgICAgICAgICAgICAgICBnX29iamVjdF91bnJlZiAoc3R5bGUpOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS19Ci0tCi0tLyoKLS0gKiBnbm9tZS1wYW5lbC9hcHBsZXRzL3duY2tsZXQvd2luZG93LW1lbnUuYzp3aW5kb3dfbWVudV9rZXlfcHJlc3NfZXZlbnQoKQotLSAqCi0tICogQ29weXJpZ2h0IChDKSAyMDAzIFN1biBNaWNyb3N5c3RlbXMsIEluYy4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICogQ29weXJpZ2h0IChDKSAyMDAwIEhlbGl4IENvZGUsIEluYy4KLS0gKi8KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1hcHBsZXRfa2V5X3ByZXNzX2V2ZW50X2NiIChHdGtXaWRnZXQgICAgICp3aWRnZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRLZXkgICAqZXZlbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR3RrTWVudVNoZWxsICptZW51X3NoZWxsOwotLQotLSAgICAgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7Ci0tICAgICAgICBjYXNlIEdES19LUF9FbnRlcjoKLS0gICAgICAgIGNhc2UgR0RLX0lTT19FbnRlcjoKLS0gICAgICAgIGNhc2UgR0RLXzMyNzBfRW50ZXI6Ci0tICAgICAgICBjYXNlIEdES19SZXR1cm46Ci0tICAgICAgICBjYXNlIEdES19zcGFjZToKLS0gICAgICAgIGNhc2UgR0RLX0tQX1NwYWNlOgotLSAgICAgICAgICAgICAgICBtZW51X3NoZWxsID0gR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51YmFyKTsKLS0gICAgICAgICAgICAgICAgLyoKLS0gICAgICAgICAgICAgICAgICogV2UgbmVlZCB0byBjYWxsIF9ndGtfbWVudV9zaGVsbF9hY3RpdmF0ZSgpIGhlcmUgYXMgaXMgZG9uZSBpbgotLSAgICAgICAgICAgICAgICAgKiB3aW5kb3dfa2V5X3ByZXNzX2hhbmRsZXIgaW4gZ3RrbWVudWJhci5jIHdoaWNoIHBvcHMgdXAgbWVudQotLSAgICAgICAgICAgICAgICAgKiB3aGVuIEYxMCBpcyBwcmVzc2VkLgotLSAgICAgICAgICAgICAgICAgKgotLSAgICAgICAgICAgICAgICAgKiBBcyB0aGF0IGZ1bmN0aW9uIGlzIHByaXZhdGUgaXRzIGNvZGUgaXMgcmVwbGljYXRlZCBoZXJlLgotLSAgICAgICAgICAgICAgICAgKi8KLS0gICAgICAgICAgICAgICAgaWYgKCFtZW51X3NoZWxsLT5hY3RpdmUpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBndGtfZ3JhYl9hZGQgKEdUS19XSURHRVQgKG1lbnVfc2hlbGwpKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBtZW51X3NoZWxsLT5oYXZlX2dyYWIgPSBUUlVFOwotLSAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfc2hlbGwtPmFjdGl2ZSA9IFRSVUU7Ci0tICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgZ3RrX21lbnVfc2hlbGxfc2VsZWN0X2ZpcnN0IChtZW51X3NoZWxsLCBGQUxTRSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwotLSAgICAgICAgZGVmYXVsdDoKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICByZXR1cm4gRkFMU0U7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2V0X2l0ZW1fdGV4dF9hbmdsZV9hbmRfYWxpZ25tZW50IChHdGtXaWRnZXQgKml0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgICAgIHRleHRfYW5nbGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAgICAgIHhhbGlnbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICAgICAgeWFsaWduKQotLXsKLS0gICAgICAgIEd0a1dpZGdldCAqbGFiZWw7Ci0tCi0tICAgICAgICBsYWJlbCA9IGd0a19iaW5fZ2V0X2NoaWxkIChHVEtfQklOIChpdGVtKSk7Ci0tCi0tICAgICAgICBndGtfbGFiZWxfc2V0X2FuZ2xlIChHVEtfTEFCRUwgKGxhYmVsKSwgdGV4dF9hbmdsZSk7Ci0tCi0tICAgICAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50IChHVEtfTUlTQyAobGFiZWwpLCB4YWxpZ24sIHlhbGlnbik7Ci0tfQotLQotLS8qCi0tICogZ25vbWUtcGFuZWwvYXBwbGV0cy93bmNrbGV0L3dpbmRvdy1tZW51LmM6d2luZG93X21lbnVfc2l6ZV9hbGxvY2F0ZSgpCi0tICoKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgotLSAqIENvcHlyaWdodCAoQykgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDAgSGVsaXggQ29kZSwgSW5jLgotLSAqLwotLXN0YXRpYyB2b2lkCi0tYXBwbGV0X3NpemVfYWxsb2NhdGVfY2IgKEd0a1dpZGdldCAgICAgKndpZGdldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrQWxsb2NhdGlvbiAqYWxsb2NhdGlvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR0xpc3QgICAgICAgICAgICAqY2hpbGRyZW47Ci0tICAgICAgICBHdGtXaWRnZXQgICAgICAgICp0b3BfaXRlbTsKLS0gICAgICAgIFBhbmVsQXBwbGV0T3JpZW50IG9yaWVudDsKLS0gICAgICAgIGdpbnQgICAgICAgICAgICAgIHBpeGVsX3NpemU7Ci0tICAgICAgICBnZG91YmxlICAgICAgICAgICB0ZXh0X2FuZ2xlOwotLSAgICAgICAgR3RrUGFja0RpcmVjdGlvbiAgcGFja19kaXJlY3Rpb247Ci0tICAgICAgICBmbG9hdCAgICAgICAgICAgICB0ZXh0X3hhbGlnbjsKLS0gICAgICAgIGZsb2F0ICAgICAgICAgICAgIHRleHRfeWFsaWduOwotLQotLSAgICAgICAgcGFja19kaXJlY3Rpb24gPSBHVEtfUEFDS19ESVJFQ1RJT05fTFRSOwotLSAgICAgICAgdGV4dF9hbmdsZSA9IDAuMDsKLS0gICAgICAgIHRleHRfeGFsaWduID0gMC4wOwotLSAgICAgICAgdGV4dF95YWxpZ24gPSAwLjU7Ci0tCi0tICAgICAgICBjaGlsZHJlbiA9IGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuIChHVEtfQ09OVEFJTkVSIChhZGF0YS0+bWVudWJhcikpOwotLSAgICAgICAgdG9wX2l0ZW0gPSBHVEtfV0lER0VUIChjaGlsZHJlbi0+ZGF0YSk7Ci0tICAgICAgICBnX2xpc3RfZnJlZSAoY2hpbGRyZW4pOwotLQotLSAgICAgICAgb3JpZW50ID0gcGFuZWxfYXBwbGV0X2dldF9vcmllbnQgKFBBTkVMX0FQUExFVCAod2lkZ2V0KSk7Ci0tCi0tICAgICAgICBzd2l0Y2ggKG9yaWVudCkgewotLSAgICAgICAgY2FzZSBQQU5FTF9BUFBMRVRfT1JJRU5UX1VQOgotLSAgICAgICAgY2FzZSBQQU5FTF9BUFBMRVRfT1JJRU5UX0RPV046Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X3NpemVfcmVxdWVzdCAodG9wX2l0ZW0sIC0xLCBhbGxvY2F0aW9uLT5oZWlnaHQpOwotLSAgICAgICAgICAgICAgICBwaXhlbF9zaXplID0gYWxsb2NhdGlvbi0+aGVpZ2h0IC0gZ3RrX3dpZGdldF9nZXRfc3R5bGUgKHRvcF9pdGVtKS0+eXRoaWNrbmVzcyAqIDI7Ci0tICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBQQU5FTF9BUFBMRVRfT1JJRU5UX0xFRlQ6Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2V0X3NpemVfcmVxdWVzdCAodG9wX2l0ZW0sIGFsbG9jYXRpb24tPndpZHRoLCAtMSk7Ci0tICAgICAgICAgICAgICAgIHBpeGVsX3NpemUgPSBhbGxvY2F0aW9uLT53aWR0aCAtIGd0a193aWRnZXRfZ2V0X3N0eWxlICh0b3BfaXRlbSktPnh0aGlja25lc3MgKiAyOwotLSAgICAgICAgICAgICAgICBwYWNrX2RpcmVjdGlvbiA9IEdUS19QQUNLX0RJUkVDVElPTl9UVEI7Ci0tICAgICAgICAgICAgICAgIHRleHRfYW5nbGUgPSAyNzAuMDsKLS0gICAgICAgICAgICAgICAgdGV4dF94YWxpZ24gPSAwLjU7Ci0tICAgICAgICAgICAgICAgIHRleHRfeWFsaWduID0gMC4wOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIGNhc2UgUEFORUxfQVBQTEVUX09SSUVOVF9SSUdIVDoKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0ICh0b3BfaXRlbSwgYWxsb2NhdGlvbi0+d2lkdGgsIC0xKTsKLS0gICAgICAgICAgICAgICAgcGl4ZWxfc2l6ZSA9IGFsbG9jYXRpb24tPndpZHRoIC0gZ3RrX3dpZGdldF9nZXRfc3R5bGUgKHRvcF9pdGVtKS0+eHRoaWNrbmVzcyAqIDI7Ci0tICAgICAgICAgICAgICAgIHBhY2tfZGlyZWN0aW9uID0gR1RLX1BBQ0tfRElSRUNUSU9OX0JUVDsKLS0gICAgICAgICAgICAgICAgdGV4dF9hbmdsZSA9IDkwLjA7Ci0tICAgICAgICAgICAgICAgIHRleHRfeGFsaWduID0gMC41OwotLSAgICAgICAgICAgICAgICB0ZXh0X3lhbGlnbiA9IDAuMDsKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBndGtfbWVudV9iYXJfc2V0X3BhY2tfZGlyZWN0aW9uIChHVEtfTUVOVV9CQVIgKGFkYXRhLT5tZW51YmFyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tfZGlyZWN0aW9uKTsKLS0gICAgICAgIGd0a19tZW51X2Jhcl9zZXRfY2hpbGRfcGFja19kaXJlY3Rpb24gKEdUS19NRU5VX0JBUiAoYWRhdGEtPm1lbnViYXIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja19kaXJlY3Rpb24pOwotLQotLSAgICAgICAgc2V0X2l0ZW1fdGV4dF9hbmdsZV9hbmRfYWxpZ25tZW50IChhZGF0YS0+bWVudWl0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfYW5nbGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfeGFsaWduLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0X3lhbGlnbik7Ci0tCi0tICAgICAgICBpZiAoYWRhdGEtPnBhbmVsX3NpemUgIT0gcGl4ZWxfc2l6ZSkgewotLSAgICAgICAgICAgICAgICBhZGF0YS0+cGFuZWxfc2l6ZSA9IHBpeGVsX3NpemU7Ci0tICAgICAgICAgICAgICAgIHJlc2V0X2ljb24gKGFkYXRhKTsKLS0gICAgICAgIH0KLS19Ci0tCi0tCi0tc3RhdGljIHZvaWQKLS1nZG1fYXBwbGV0X2RhdGFfZnJlZSAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgZ2NvbmZfY2xpZW50X25vdGlmeV9yZW1vdmUgKGFkYXRhLT5jbGllbnQsIGFkYXRhLT5jbGllbnRfbm90aWZ5X2xvY2tkb3duX2lkKTsKLS0KLS0gICAgICAgIGlmIChhZGF0YS0+dXNlcl9sb2FkZWRfbm90aWZ5X2lkICE9IDApIHsKLS0gICAgICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0IChhZGF0YS0+dXNlciwgYWRhdGEtPnVzZXJfbG9hZGVkX25vdGlmeV9pZCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAoYWRhdGEtPnVzZXJfY2hhbmdlZF9ub3RpZnlfaWQgIT0gMCkgewotLSAgICAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKGFkYXRhLT51c2VyLCBhZGF0YS0+dXNlcl9jaGFuZ2VkX25vdGlmeV9pZCk7Ci0tICAgICAgICB9Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBpZiAoYWRhdGEtPnByZXNlbmNlX3Byb3h5ICE9IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSk7Ci0tICAgICAgICB9Ci0tI2VuZGlmCi0tCi0tICAgICAgICBpZiAoYWRhdGEtPnVzZXIgIT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICBnX29iamVjdF91bnJlZiAoYWRhdGEtPnVzZXIpOwotLSAgICAgICAgfQotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKGFkYXRhLT5jbGllbnQpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKGFkYXRhLT5tYW5hZ2VyKTsKLS0KLS0gICAgICAgIGdfZnJlZSAoYWRhdGEpOwotLX0KLS0KLS0KLS0vKgotLSAqIGdub21lLXBhbmVsL2FwcGxldHMvd25ja2xldC93aW5kb3ctbWVudS5jOndpbmRvd19tZW51X29uX2V4cG9zZSgpCi0tICoKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgotLSAqIENvcHlyaWdodCAoQykgMjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDAgSGVsaXggQ29kZSwgSW5jLgotLSAqLwotLXN0YXRpYyBnYm9vbGVhbgotLW1lbnViYXJfZXhwb3NlX2V2ZW50X2NiIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudEV4cG9zZSAqZXZlbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgICphZGF0YSkKLS17Ci0tICAgICAgICBpZiAoZ3RrX3dpZGdldF9oYXNfZm9jdXMgKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKSkKLS0gICAgICAgICAgICAgICAgZ3RrX3BhaW50X2ZvY3VzIChndGtfd2lkZ2V0X2dldF9zdHlsZSAod2lkZ2V0KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfd2lkZ2V0X2dldF93aW5kb3cgKHdpZGdldCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9nZXRfc3RhdGUgKHdpZGdldCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgd2lkZ2V0LCAibWVudS1hcHBsZXQiLCAwLCAwLCAtMSwgLTEpOwotLQotLSAgICAgICAgcmV0dXJuIEZBTFNFOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW1lbnVfc3R5bGVfc2V0X2NiIChHdGtXaWRnZXQgICAgICptZW51LAotLSAgICAgICAgICAgICAgICAgICBHdGtTdHlsZSAgICAgICpvbGRfc3R5bGUsCi0tICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIEd0a1NldHRpbmdzICpzZXR0aW5nczsKLS0gICAgICAgIGludCAgICAgICAgICB3aWR0aDsKLS0gICAgICAgIGludCAgICAgICAgICBoZWlnaHQ7Ci0tCi0tICAgICAgICBhZGF0YS0+aWNvbl9zaXplID0gZ3RrX2ljb25fc2l6ZV9mcm9tX25hbWUgKCJwYW5lbC1tZW51Iik7Ci0tCi0tICAgICAgICBpZiAoYWRhdGEtPmljb25fc2l6ZSA9PSBHVEtfSUNPTl9TSVpFX0lOVkFMSUQpIHsKLS0gICAgICAgICAgICAgICAgYWRhdGEtPmljb25fc2l6ZSA9IGd0a19pY29uX3NpemVfcmVnaXN0ZXIgKCJwYW5lbC1tZW51IiwgMjQsIDI0KTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGlmIChndGtfd2lkZ2V0X2hhc19zY3JlZW4gKG1lbnUpKSB7Ci0tICAgICAgICAgICAgICAgIHNldHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9mb3Jfc2NyZWVuIChndGtfd2lkZ2V0X2dldF9zY3JlZW4gKG1lbnUpKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNldHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0ICgpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgaWYgKCFndGtfaWNvbl9zaXplX2xvb2t1cF9mb3Jfc2V0dGluZ3MgKHNldHRpbmdzLCBhZGF0YS0+aWNvbl9zaXplLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3aWR0aCwgJmhlaWdodCkpIHsKLS0gICAgICAgICAgICAgICAgYWRhdGEtPnBpeGVsX3NpemUgPSAtMTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGFkYXRhLT5waXhlbF9zaXplID0gTUFYICh3aWR0aCwgaGVpZ2h0KTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1tZW51aXRlbV9zdHlsZV9zZXRfY2IgKEd0a1dpZGdldCAgICAgKm1lbnVpdGVtLAotLSAgICAgICAgICAgICAgICAgICAgICAgR3RrU3R5bGUgICAgICAqb2xkX3N0eWxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR3RrV2lkZ2V0ICppbWFnZTsKLS0KLS0gICAgICAgIGlmIChHRE1fSVNfRU5UUllfTUVOVV9JVEVNIChtZW51aXRlbSkpIHsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmljb25fbmFtZTsKLS0KLS0gICAgICAgICAgICAgICAgaWYgKG1lbnVpdGVtID09IGFkYXRhLT5sb2dpbl9zY3JlZW5faXRlbSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGljb25fbmFtZSA9ICJzeXN0ZW0tdXNlcnMiOwotLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lbnVpdGVtID09IGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWNvbl9uYW1lID0gInN5c3RlbS1sb2NrLXNjcmVlbiI7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVudWl0ZW0gPT0gYWRhdGEtPnF1aXRfc2Vzc2lvbl9pdGVtKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWNvbl9uYW1lID0gInN5c3RlbS1sb2ctb3V0IjsKLS0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZW51aXRlbSA9PSBhZGF0YS0+YWNjb3VudF9pdGVtKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWNvbl9uYW1lID0gInVzZXItaW5mbyI7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVudWl0ZW0gPT0gYWRhdGEtPmNvbnRyb2xfcGFuZWxfaXRlbSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGljb25fbmFtZSA9ICJwcmVmZXJlbmNlcy1kZXNrdG9wIjsKLS0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBpY29uX25hbWUgPSBHVEtfU1RPQ0tfTUlTU0lOR19JTUFHRTsKLS0gICAgICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAgICAgICBpbWFnZSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fZ2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChtZW51aXRlbSkpOwotLSAgICAgICAgICAgICAgICBndGtfaW1hZ2Vfc2V0X3BpeGVsX3NpemUgKEdUS19JTUFHRSAoaW1hZ2UpLCBhZGF0YS0+cGl4ZWxfc2l6ZSk7Ci0tICAgICAgICAgICAgICAgIGd0a19pbWFnZV9zZXRfZnJvbV9pY29uX25hbWUgKEdUS19JTUFHRSAoaW1hZ2UpLCBpY29uX25hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhLT5pY29uX3NpemUpOwotLSAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX3VzZXJfY2hhbmdlZCAoR2RtVXNlciAgICAgICAgICp1c2VyLAotLSAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAgICphZGF0YSkKLS17Ci0tICAgICAgICBnX2RlYnVnICgidXNlciBjaGFuZ2VkIik7Ci0tICAgICAgICB1cGRhdGVfbGFiZWwgKGFkYXRhKTsKLS0gICAgICAgIHJlc2V0X2ljb24gKGFkYXRhKTsKLS19Ci0tCi0tLyogQ2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIG1lbnUgaXMgZGlzcGxheWVkIChhbmQgYWxzbyBmb3Igc29tZSByZWFzb24KLS0gKiBpbW1lZGlhdGVseSBpdCdzIGNyZWF0ZWQsIHdoaWNoIGRvZXMgbm8gaGFybSkuIEFsbCB3ZSBoYXZlIHRvIGRvCi0tICogaGVyZSBpcyBraWNrIG9mZiBhIHJlcXVlc3QgdG8gR0RNIHRvIGxldCB1cyBrbm93IHdoaWNoIHVzZXJzIGFyZQotLSAqIGxvZ2dlZCBpbiwgc28gd2UgY2FuIGRpc3BsYXkgY2hlY2sgbWFya3MgbmV4dCB0byB0aGVpciBuYW1lcy4KLS0gKi8KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1tZW51X2V4cG9zZV9jYiAoR3RrV2lkZ2V0ICptZW51LAotLSAgICAgICAgICAgICAgICBncG9pbnRlciAgIGRhdGEpCi0tewotLSAgICAgICAgY2hhciAqcHJvZ3JhbTsKLS0gICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhID0gZGF0YTsKLS0KLS0gICAgICAgIHByb2dyYW0gPSBnX2ZpbmRfcHJvZ3JhbV9pbl9wYXRoICgiZ25vbWUtY29udHJvbC1jZW50ZXIiKTsKLS0gICAgICAgIGlmIChwcm9ncmFtICE9IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChhZGF0YS0+Y29udHJvbF9wYW5lbF9pdGVtKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfaGlkZSAoYWRhdGEtPmNvbnRyb2xfcGFuZWxfaXRlbSk7Ci0tICAgICAgICB9Ci0tICAgICAgICBnX2ZyZWUgKHByb2dyYW0pOwotLSAgICAgICAgcmV0dXJuIEZBTFNFOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW1heWJlX2xvY2tfc2NyZWVuIChHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBjaGFyICAgICAgKmFyZ3NbM107Ci0tICAgICAgICBHRXJyb3IgICAgKmVycjsKLS0gICAgICAgIEdka1NjcmVlbiAqc2NyZWVuOwotLSAgICAgICAgZ2Jvb2xlYW4gICB1c2VfZ3NjcmVlbnNhdmVyID0gVFJVRTsKLS0gICAgICAgIGdib29sZWFuICAgcmVzOwotLQotLSAgICAgICAgZ19kZWJ1ZyAoIkF0dGVtcHRpbmcgdG8gbG9jayBzY3JlZW4iKTsKLS0KLS0gICAgICAgIGFyZ3NbMF0gPSBnX2ZpbmRfcHJvZ3JhbV9pbl9wYXRoICgiZ25vbWUtc2NyZWVuc2F2ZXItY29tbWFuZCIpOwotLSAgICAgICAgaWYgKGFyZ3NbMF0gPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICBhcmdzWzBdID0gZ19maW5kX3Byb2dyYW1faW5fcGF0aCAoInhzY3JlZW5zYXZlci1jb21tYW5kIik7Ci0tICAgICAgICAgICAgICAgIHVzZV9nc2NyZWVuc2F2ZXIgPSBGQUxTRTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGlmIChhcmdzWzBdID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgfQotLQotLSAgICAgICAgaWYgKHVzZV9nc2NyZWVuc2F2ZXIpIHsKLS0gICAgICAgICAgICAgICAgYXJnc1sxXSA9ICItLWxvY2siOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgYXJnc1sxXSA9ICItbG9jayI7Ci0tICAgICAgICB9Ci0tICAgICAgICBhcmdzWzJdID0gTlVMTDsKLS0KLS0gICAgICAgIGlmIChndGtfd2lkZ2V0X2hhc19zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKSkgewotLSAgICAgICAgICAgICAgICBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQgKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBlcnIgPSBOVUxMOwotLSAgICAgICAgcmVzID0gZ2RrX3NwYXduX29uX3NjcmVlbiAoc2NyZWVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19nZXRfaG9tZV9kaXIgKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyKTsKLS0gICAgICAgIGlmICghIHJlcykgewotLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKF8oIkNhbid0IGxvY2sgc2NyZWVuOiAlcyIpLCBlcnItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAodXNlX2dzY3JlZW5zYXZlcikgewotLSAgICAgICAgICAgICAgICBhcmdzWzFdID0gIi0tdGhyb3R0bGUiOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgYXJnc1sxXSA9ICItdGhyb3R0bGUiOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZXJyID0gTlVMTDsKLS0gICAgICAgIHJlcyA9IGdka19zcGF3bl9vbl9zY3JlZW4gKHNjcmVlbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZ2V0X2hvbWVfZGlyICgpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR19TUEFXTl9TVERFUlJfVE9fREVWX05VTEwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR19TUEFXTl9TVERPVVRfVE9fREVWX05VTEwpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycik7Ci0tICAgICAgICBpZiAoISByZXMpIHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nIChfKCJDYW4ndCB0ZW1wb3JhcmlseSBzZXQgc2NyZWVuc2F2ZXIgdG8gYmxhbmsgc2NyZWVuOiAlcyIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci0+bWVzc2FnZSk7Ci0tICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGdfZnJlZSAoYXJnc1swXSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZG9fc3dpdGNoIChHZG1BcHBsZXREYXRhICphZGF0YSwKLS0gICAgICAgICAgIEdkbVVzZXIgICAgICAgKnVzZXIpCi0tewotLSAgICAgICAgZ3VpbnQgbnVtX3Nlc3Npb25zOwotLQotLSAgICAgICAgZ19kZWJ1ZyAoIkRvIHVzZXIgc3dpdGNoIik7Ci0tCi0tICAgICAgICBpZiAodXNlciA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIGdkbV91c2VyX21hbmFnZXJfZ290b19sb2dpbl9zZXNzaW9uIChhZGF0YS0+bWFuYWdlcik7Ci0tICAgICAgICAgICAgICAgIGdvdG8gb3V0OwotLSAgICAgICAgfQotLQotLSAgICAgICAgbnVtX3Nlc3Npb25zID0gZ2RtX3VzZXJfZ2V0X251bV9zZXNzaW9ucyAodXNlcik7Ci0tICAgICAgICBpZiAobnVtX3Nlc3Npb25zID4gMCkgewotLSAgICAgICAgICAgICAgICBnZG1fdXNlcl9tYW5hZ2VyX2FjdGl2YXRlX3VzZXJfc2Vzc2lvbiAoYWRhdGEtPm1hbmFnZXIsIHVzZXIpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgZ2RtX3VzZXJfbWFuYWdlcl9nb3RvX2xvZ2luX3Nlc3Npb24gKGFkYXRhLT5tYW5hZ2VyKTsKLS0gICAgICAgIH0KLS0gb3V0OgotLSAgICAgICAgbWF5YmVfbG9ja19zY3JlZW4gKGFkYXRhKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS11cGRhdGVfc3dpdGNoX3VzZXIgKEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIGdib29sZWFuIGNhbl9zd2l0Y2g7Ci0tICAgICAgICBnYm9vbGVhbiBoYXNfb3RoZXJfdXNlcnM7Ci0tCi0tICAgICAgICBjYW5fc3dpdGNoID0gZ2RtX3VzZXJfbWFuYWdlcl9jYW5fc3dpdGNoIChhZGF0YS0+bWFuYWdlcik7Ci0tICAgICAgICBnX29iamVjdF9nZXQgKGFkYXRhLT5tYW5hZ2VyLAotLSAgICAgICAgICAgICAgICAgICAgICAiaGFzLW11bHRpcGxlLXVzZXJzIiwgJmhhc19vdGhlcl91c2VycywKLS0gICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tCi0tICAgICAgICBpZiAoY2FuX3N3aXRjaCAmJiBoYXNfb3RoZXJfdXNlcnMpIHsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0pOwotLSAgICAgICAgfSBlbHNlIHsKLS0KLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9oaWRlIChhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0pOwotLSAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX21hbmFnZXJfaXNfbG9hZGVkX2NoYW5nZWQgKEdkbVVzZXJNYW5hZ2VyICptYW5hZ2VyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAgICpwc3BlYywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICAqYWRhdGEpCi0tewotLSAgICAgICAgdXBkYXRlX3N3aXRjaF91c2VyIChhZGF0YSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fbWFuYWdlcl9oYXNfbXVsdGlwbGVfdXNlcnNfY2hhbmdlZCAoR2RtVXNlck1hbmFnZXIgICAgICAgKm1hbmFnZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICAgKnBzcGVjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgICAgICAgICphZGF0YSkKLS17Ci0tICAgICAgICB1cGRhdGVfc3dpdGNoX3VzZXIgKGFkYXRhKTsKLS19Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tc3RhdGljIHZvaWQKLS1vbl91c2VyX2l0ZW1fYWN0aXZhdGUgKEd0a01lbnVJdGVtICAgKml0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBnX3NpZ25hbF9zdG9wX2VtaXNzaW9uX2J5X25hbWUgKGl0ZW0sICJhY3RpdmF0ZSIpOwotLX0KLS0jZW5kaWYKLS0KLS1zdGF0aWMgdm9pZAotLW9uX2NvbnRyb2xfcGFuZWxfYWN0aXZhdGUgKEd0a01lbnVJdGVtICAgKml0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgY2hhciAgICAgICphcmdzWzJdOwotLSAgICAgICAgR0Vycm9yICAgICplcnJvcjsKLS0gICAgICAgIEdka1NjcmVlbiAqc2NyZWVuOwotLSAgICAgICAgZ2Jvb2xlYW4gICByZXM7Ci0tCi0tICAgICAgICBhcmdzWzBdID0gZ19maW5kX3Byb2dyYW1faW5fcGF0aCAoImdub21lLWNvbnRyb2wtY2VudGVyIik7Ci0tICAgICAgICBpZiAoYXJnc1swXSA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0gICAgICAgIGFyZ3NbMV0gPSBOVUxMOwotLQotLSAgICAgICAgaWYgKGd0a193aWRnZXRfaGFzX3NjcmVlbiAoR1RLX1dJREdFVCAoYWRhdGEtPmFwcGxldCkpKSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbiAoR1RLX1dJREdFVCAoYWRhdGEtPmFwcGxldCkpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgc2NyZWVuID0gZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCAoKTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGVycm9yID0gTlVMTDsKLS0gICAgICAgIHJlcyA9IGdka19zcGF3bl9vbl9zY3JlZW4gKHNjcmVlbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZ2V0X2hvbWVfZGlyICgpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yKTsKLS0gICAgICAgIGlmICghIHJlcykgewotLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKF8oIkNhbid0IGxvY2sgc2NyZWVuOiAlcyIpLCBlcnJvci0+bWVzc2FnZSk7Ci0tICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZ19mcmVlIChhcmdzWzBdKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1vbl9hY2NvdW50X2FjdGl2YXRlIChHdGtNZW51SXRlbSAgICppdGVtLAotLSAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIGNoYXIgICAgICAqYXJnc1syXTsKLS0gICAgICAgIEdFcnJvciAgICAqZXJyb3I7Ci0tICAgICAgICBHZGtTY3JlZW4gKnNjcmVlbjsKLS0gICAgICAgIGdib29sZWFuICAgcmVzOwotLQotLSAgICAgICAgYXJnc1swXSA9IGdfZmluZF9wcm9ncmFtX2luX3BhdGggKCJhY2NvdW50cy1kaWFsb2ciKTsKLS0gICAgICAgIGlmIChhcmdzWzBdID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgYXJnc1swXSA9IGdfZmluZF9wcm9ncmFtX2luX3BhdGggKCJnbm9tZS1hYm91dC1tZSIpOwotLSAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAgICBhcmdzWzFdID0gTlVMTDsKLS0KLS0gICAgICAgIGlmIChndGtfd2lkZ2V0X2hhc19zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKSkgewotLSAgICAgICAgICAgICAgICBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQgKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBlcnJvciA9IE5VTEw7Ci0tICAgICAgICByZXMgPSBnZGtfc3Bhd25fb25fc2NyZWVuIChzY3JlZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2dldF9ob21lX2RpciAoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0tICAgICAgICBpZiAoISByZXMpIHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nIChfKCJDYW4ndCBsb2NrIHNjcmVlbjogJXMiKSwgZXJyb3ItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGdfZnJlZSAoYXJnc1swXSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fbG9ja19zY3JlZW5fYWN0aXZhdGUgKEd0a01lbnVJdGVtICAgKml0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIG1heWJlX2xvY2tfc2NyZWVuIChhZGF0YSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fbG9naW5fc2NyZWVuX2FjdGl2YXRlIChHdGtNZW51SXRlbSAgICppdGVtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR2RtVXNlciAqdXNlcjsKLS0KLS0gICAgICAgIHVzZXIgPSBOVUxMOwotLQotLSAgICAgICAgZG9fc3dpdGNoIChhZGF0YSwgdXNlcik7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fcXVpdF9zZXNzaW9uX2FjdGl2YXRlIChHdGtNZW51SXRlbSAgICppdGVtLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgY2hhciAgICAgICphcmdzWzNdOwotLSAgICAgICAgR0Vycm9yICAgICplcnJvcjsKLS0gICAgICAgIEdka1NjcmVlbiAqc2NyZWVuOwotLSAgICAgICAgZ2Jvb2xlYW4gICByZXM7Ci0tCi0tICAgICAgICBhcmdzWzBdID0gZ19maW5kX3Byb2dyYW1faW5fcGF0aCAoImdub21lLXNlc3Npb24tc2F2ZSIpOwotLSAgICAgICAgaWYgKGFyZ3NbMF0gPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBhcmdzWzFdID0gIi0tbG9nb3V0LWRpYWxvZyI7Ci0tICAgICAgICBhcmdzWzJdID0gTlVMTDsKLS0KLS0gICAgICAgIGlmIChndGtfd2lkZ2V0X2hhc19zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKSkgewotLSAgICAgICAgICAgICAgICBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4gKEdUS19XSURHRVQgKGFkYXRhLT5hcHBsZXQpKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNjcmVlbiA9IGdka19zY3JlZW5fZ2V0X2RlZmF1bHQgKCk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBlcnJvciA9IE5VTEw7Ci0tICAgICAgICByZXMgPSBnZGtfc3Bhd25fb25fc2NyZWVuIChzY3JlZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2dldF9ob21lX2RpciAoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0tICAgICAgICBpZiAoISByZXMpIHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nIChfKCJDYW4ndCBsb2cgb3V0OiAlcyIpLCBlcnJvci0+bWVzc2FnZSk7Ci0tICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZ19mcmVlIChhcmdzWzBdKTsKLS19Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tc3RhdGljIGdib29sZWFuCi0tb25fbWVudV9rZXlfcHJlc3NfZXZlbnQgKEd0a1dpZGdldCAgICAgKndpZGdldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRLZXkgICAqZXZlbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIEd0a1dpZGdldCAqZW50cnk7Ci0tCi0tICAgICAgICBlbnRyeSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X2VudHJ5IChHRE1fRU5UUllfTUVOVV9JVEVNIChhZGF0YS0+dXNlcl9pdGVtKSk7Ci0tCi0tICAgICAgICBpZiAoR1RLX1dJREdFVF9IQVNfRk9DVVMgKGVudHJ5KSkgewotLSAgICAgICAgICAgICAgICBndGtfd2lkZ2V0X2V2ZW50IChlbnRyeSwgKEdka0V2ZW50ICopZXZlbnQpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1zYXZlX3N0YXR1cyAoR2RtQXBwbGV0RGF0YSAqYWRhdGEsCi0tICAgICAgICAgICAgIGd1aW50ICAgICAgICAgIHN0YXR1cykKLS17Ci0tICAgICAgICBpZiAoYWRhdGEtPmN1cnJlbnRfc3RhdHVzICE9IHN0YXR1cykgewotLSAgICAgICAgICAgICAgICBHRXJyb3IgKmVycm9yOwotLQotLSAgICAgICAgICAgICAgICBhZGF0YS0+Y3VycmVudF9zdGF0dXMgPSBzdGF0dXM7Ci0tCi0tICAgICAgICAgICAgICAgIGdfZGVidWcgKCJTYXZpbmcgc3RhdHVzOiAldSIsIHN0YXR1cyk7Ci0tICAgICAgICAgICAgICAgIGVycm9yID0gTlVMTDsKLS0gICAgICAgICAgICAgICAgZGJ1c19nX3Byb3h5X2NhbGwgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXRTdGF0dXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1VJTlQsIHN0YXR1cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9JTlZBTElELAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVkFMSUQpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkNvdWxkbid0IHNhdmUgcHJlc2VuY2Ugc3RhdHVzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX3N0YXR1c19hdmFpbGFibGVfYWN0aXZhdGUgKEd0a1dpZGdldCAgICAgKndpZGdldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tCi0tICAgICAgICBpZiAoZ3RrX2NoZWNrX21lbnVfaXRlbV9nZXRfYWN0aXZlIChHVEtfQ0hFQ0tfTUVOVV9JVEVNICh3aWRnZXQpKSkgewotLSAgICAgICAgICAgICAgICBzYXZlX3N0YXR1cyAoYWRhdGEsIEdTTV9QUkVTRU5DRV9TVEFUVVNfQVZBSUxBQkxFKTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1vbl9zdGF0dXNfYnVzeV9hY3RpdmF0ZSAoR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICAgaWYgKGd0a19jaGVja19tZW51X2l0ZW1fZ2V0X2FjdGl2ZSAoR1RLX0NIRUNLX01FTlVfSVRFTSAod2lkZ2V0KSkpIHsKLS0gICAgICAgICAgICAgICAgIHNhdmVfc3RhdHVzIChhZGF0YSwgR1NNX1BSRVNFTkNFX1NUQVRVU19CVVNZKTsKLS0gICAgICAgICB9Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fc3RhdHVzX2ludmlzaWJsZV9hY3RpdmF0ZSAoR3RrV2lkZ2V0ICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgICBpZiAoZ3RrX2NoZWNrX21lbnVfaXRlbV9nZXRfYWN0aXZlIChHVEtfQ0hFQ0tfTUVOVV9JVEVNICh3aWRnZXQpKSkgewotLSAgICAgICAgICAgICAgICAgc2F2ZV9zdGF0dXMgKGFkYXRhLCBHU01fUFJFU0VOQ0VfU1RBVFVTX0lOVklTSUJMRSk7Ci0tICAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgc3RydWN0IHsKLS0gICAgICAgIGNoYXIgICAgICAqaWNvbl9uYW1lOwotLSAgICAgICAgY2hhciAgICAgICpkaXNwbGF5X25hbWU7Ci0tICAgICAgICB2b2lkICAgICAgKm1lbnVfY2FsbGJhY2s7Ci0tICAgICAgICBHdGtXaWRnZXQgKndpZGdldDsKLS19IHN0YXR1c2VzW10gPSB7Ci0tICAgICAgICB7ICJ1c2VyLW9ubGluZSIsIE5fKCJBdmFpbGFibGUiKSwgb25fc3RhdHVzX2F2YWlsYWJsZV9hY3RpdmF0ZSwgTlVMTCB9LAotLSAgICAgICAgeyAidXNlci1pbnZpc2libGUiLCBOXygiSW52aXNpYmxlIiksIG9uX3N0YXR1c19pbnZpc2libGVfYWN0aXZhdGUsIE5VTEwgfSwKLS0gICAgICAgIHsgInVzZXItYnVzeSIsIE5fKCJCdXN5IiksIG9uX3N0YXR1c19idXN5X2FjdGl2YXRlLCBOVUxMIH0sCi0tICAgICAgICB7ICJ1c2VyLWF3YXkiLCBOXygiQXdheSIpLCBOVUxMLCBOVUxMIH0sCi0tfTsKLS0jZW5kaWYKLS0KLS1zdGF0aWMgdm9pZAotLXVwZGF0ZV9sYWJlbCAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR3RrV2lkZ2V0ICpsYWJlbDsKLS0gICAgICAgIGNoYXIgICAgICAqbWFya3VwOwotLQotLSAgICAgICAgbGFiZWwgPSBndGtfYmluX2dldF9jaGlsZCAoR1RLX0JJTiAoYWRhdGEtPm1lbnVpdGVtKSk7Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBtYXJrdXAgPSBnX3N0cmR1cF9wcmludGYgKCI8Yj4lczwvYj4gPHNtYWxsPiglcyk8L3NtYWxsPiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkbV91c2VyX2dldF9yZWFsX25hbWUgKEdETV9VU0VSIChhZGF0YS0+dXNlcikpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKHN0YXR1c2VzW2FkYXRhLT5jdXJyZW50X3N0YXR1c10uZGlzcGxheV9uYW1lKSk7Ci0tI2Vsc2UKLS0gICAgICAgIG1hcmt1cCA9IGdfc3RyZHVwX3ByaW50ZiAoIjxiPiVzPC9iPiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkbV91c2VyX2dldF9yZWFsX25hbWUgKEdETV9VU0VSIChhZGF0YS0+dXNlcikpKTsKLS0jZW5kaWYKLS0gICAgICAgIGd0a19sYWJlbF9zZXRfbWFya3VwIChHVEtfTEFCRUwgKGxhYmVsKSwgbWFya3VwKTsKLS0gICAgICAgIGdfZnJlZSAobWFya3VwKTsKLS19Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tc3RhdGljIHZvaWQKLS1zYXZlX3N0YXR1c190ZXh0IChHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBHdGtXaWRnZXQgICAgICplbnRyeTsKLS0gICAgICAgIEd0a1RleHRCdWZmZXIgKmJ1ZmZlcjsKLS0gICAgICAgIGNoYXIgICAgICAgICAgKmVzY2FwZWRfdGV4dDsKLS0gICAgICAgIGNoYXIgICAgICAgICAgKnRleHQ7Ci0tICAgICAgICBHdGtUZXh0SXRlciAgICBzdGFydCwgZW5kOwotLQotLSAgICAgICAgZW50cnkgPSBnZG1fZW50cnlfbWVudV9pdGVtX2dldF9lbnRyeSAoR0RNX0VOVFJZX01FTlVfSVRFTSAoYWRhdGEtPnVzZXJfaXRlbSkpOwotLSAgICAgICAgYnVmZmVyID0gZ3RrX3RleHRfdmlld19nZXRfYnVmZmVyIChHVEtfVEVYVF9WSUVXIChlbnRyeSkpOwotLSAgICAgICAgZ3RrX3RleHRfYnVmZmVyX2dldF9ib3VuZHMgKGJ1ZmZlciwgJnN0YXJ0LCAmZW5kKTsKLS0gICAgICAgIHRleHQgPSBndGtfdGV4dF9idWZmZXJfZ2V0X3RleHQgKGJ1ZmZlciwgJnN0YXJ0LCAmZW5kLCBGQUxTRSk7Ci0tICAgICAgICBlc2NhcGVkX3RleHQgPSBnX21hcmt1cF9lc2NhcGVfdGV4dCAodGV4dCwgLTEpOwotLQotLSAgICAgICAgaWYgKGVzY2FwZWRfdGV4dCAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIEdFcnJvciAqZXJyb3I7Ci0tCi0tICAgICAgICAgICAgICAgIGVycm9yID0gTlVMTDsKLS0gICAgICAgICAgICAgICAgZGJ1c19nX3Byb3h5X2NhbGwgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXRTdGF0dXNUZXh0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIGVzY2FwZWRfdGV4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9JTlZBTElELAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVkFMSUQpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkNvdWxkbid0IHNldCBwcmVzZW5jZSBzdGF0dXMgdGV4dDogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGdfZnJlZSAodGV4dCk7Ci0tICAgICAgICBnX2ZyZWUgKGVzY2FwZWRfdGV4dCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fdXNlcl9pdGVtX2Rlc2VsZWN0IChHdGtXaWRnZXQgICAgICppdGVtLAotLSAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgc2F2ZV9zdGF0dXNfdGV4dCAoYWRhdGEpOwotLX0KLS0jZW5kaWYKLS0KLS1zdGF0aWMgdm9pZAotLWNyZWF0ZV9zdWJfbWVudSAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR3RrV2lkZ2V0ICppdGVtOwotLSNpZmRlZiBCVUlMRF9QUkVTRU5TRV9TVFVGRgotLSAgICAgICAgaW50ICAgICAgICBpOwotLSAgICAgICAgR1NMaXN0ICAgICpyYWRpb19ncm91cDsKLS0jZW5kaWYKLS0KLS0gICAgICAgIGFkYXRhLT5tZW51ID0gZ3RrX21lbnVfbmV3ICgpOwotLSNpZmRlZiBCVUlMRF9QUkVTRU5TRV9TVFVGRgotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPm1lbnUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5LXByZXNzLWV2ZW50IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX21lbnVfa2V5X3ByZXNzX2V2ZW50KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhKTsKLS0jZW5kaWYKLS0gICAgICAgIGd0a19tZW51X2l0ZW1fc2V0X3N1Ym1lbnUgKEdUS19NRU5VX0lURU0gKGFkYXRhLT5tZW51aXRlbSksIGFkYXRhLT5tZW51KTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5tZW51LCAic3R5bGUtc2V0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVfc3R5bGVfc2V0X2NiKSwgYWRhdGEpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPm1lbnUsICJzaG93IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVfZXhwb3NlX2NiKSwgYWRhdGEpOwotLQotLSNpZmRlZiBCVUlMRF9QUkVTRU5TRV9TVFVGRgotLSAgICAgICAgYWRhdGEtPnVzZXJfaXRlbSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fbmV3ICgpOwotLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kIChHVEtfTUVOVV9TSEVMTCAoYWRhdGEtPm1lbnUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YS0+dXNlcl9pdGVtKTsKLS0gICAgICAgIGd0a193aWRnZXRfc2hvdyAoYWRhdGEtPnVzZXJfaXRlbSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+dXNlcl9pdGVtLCAiYWN0aXZhdGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAob25fdXNlcl9pdGVtX2FjdGl2YXRlKSwgYWRhdGEpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPnVzZXJfaXRlbSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNlbGVjdCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl91c2VyX2l0ZW1fZGVzZWxlY3QpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEpOwotLQotLSAgICAgICAgaXRlbSA9IGd0a19zZXBhcmF0b3JfbWVudV9pdGVtX25ldyAoKTsKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwgaXRlbSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGl0ZW0pOwotLQotLSAgICAgICAgcmFkaW9fZ3JvdXAgPSBOVUxMOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoc3RhdHVzZXMpOyBpKyspIHsKLS0gICAgICAgICAgICAgICAgR3RrV2lkZ2V0ICpoYm94OwotLSAgICAgICAgICAgICAgICBHdGtXaWRnZXQgKmxhYmVsOwotLSAgICAgICAgICAgICAgICBHdGtXaWRnZXQgKmltYWdlOwotLSAgICAgICAgICAgICAgICBHdGtXaWRnZXQgKml0ZW07Ci0tCi0tICAgICAgICAgICAgICAgIGlmIChzdGF0dXNlc1tpXS5tZW51X2NhbGxiYWNrID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLS0gICAgICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAgICAgICBpdGVtID0gZ3RrX3JhZGlvX21lbnVfaXRlbV9uZXcgKHJhZGlvX2dyb3VwKTsKLS0gICAgICAgICAgICAgICAgcmFkaW9fZ3JvdXAgPSBndGtfcmFkaW9fbWVudV9pdGVtX2dldF9ncm91cCAoR1RLX1JBRElPX01FTlVfSVRFTSAoaXRlbSkpOwotLSAgICAgICAgICAgICAgICBoYm94ID0gZ3RrX2hib3hfbmV3IChGQUxTRSwgMyk7Ci0tICAgICAgICAgICAgICAgIGxhYmVsID0gZ3RrX2xhYmVsX25ldyAoXyhzdGF0dXNlc1tpXS5kaXNwbGF5X25hbWUpKTsKLS0gICAgICAgICAgICAgICAgZ3RrX2xhYmVsX3NldF9qdXN0aWZ5IChHVEtfTEFCRUwobGFiZWwpLCBHVEtfSlVTVElGWV9MRUZUKTsKLS0gICAgICAgICAgICAgICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudCAoR1RLX01JU0MgKGxhYmVsKSwgMC4wLCAwLjUpOwotLSAgICAgICAgICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKGhib3gpLCBsYWJlbCwgVFJVRSwgVFJVRSwgMCk7Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2hvdyAobGFiZWwpOwotLSAgICAgICAgICAgICAgICBpbWFnZSA9IGd0a19pbWFnZV9uZXdfZnJvbV9pY29uX25hbWUgKHN0YXR1c2VzW2ldLmljb25fbmFtZSwgR1RLX0lDT05fU0laRV9NRU5VKTsKLS0gICAgICAgICAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YIChoYm94KSwgaW1hZ2UsIEZBTFNFLCBUUlVFLCAwKTsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChpbWFnZSk7Ci0tICAgICAgICAgICAgICAgIGd0a193aWRnZXRfc2hvdyAoaGJveCk7Ci0tICAgICAgICAgICAgICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChpdGVtKSwgaGJveCk7Ci0tCi0tICAgICAgICAgICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtKTsKLS0gICAgICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoaXRlbSwgImFjdGl2YXRlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoc3RhdHVzZXNbaV0ubWVudV9jYWxsYmFjayksIGFkYXRhKTsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChpdGVtKTsKLS0KLS0gICAgICAgICAgICAgICAgc3RhdHVzZXNbaV0ud2lkZ2V0ID0gaXRlbTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGl0ZW0gPSBndGtfc2VwYXJhdG9yX21lbnVfaXRlbV9uZXcgKCk7Ci0tICAgICAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQgKEdUS19NRU5VX1NIRUxMIChhZGF0YS0+bWVudSksIGl0ZW0pOwotLSAgICAgICAgZ3RrX3dpZGdldF9zaG93IChpdGVtKTsKLS0jZW5kaWYKLS0KLS0gICAgICAgIGFkYXRhLT5hY2NvdW50X2l0ZW0gPSBndGtfaW1hZ2VfbWVudV9pdGVtX25ld193aXRoX2xhYmVsIChfKCJBY2NvdW50IEluZm9ybWF0aW9uIikpOwotLSAgICAgICAgZ3RrX2ltYWdlX21lbnVfaXRlbV9zZXRfaW1hZ2UgKEdUS19JTUFHRV9NRU5VX0lURU0gKGFkYXRhLT5hY2NvdW50X2l0ZW0pLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19pbWFnZV9uZXcgKCkpOwotLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kIChHVEtfTUVOVV9TSEVMTCAoYWRhdGEtPm1lbnUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YS0+YWNjb3VudF9pdGVtKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5hY2NvdW50X2l0ZW0sICJzdHlsZS1zZXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAobWVudWl0ZW1fc3R5bGVfc2V0X2NiKSwgYWRhdGEpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPmFjY291bnRfaXRlbSwgImFjdGl2YXRlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX2FjY291bnRfYWN0aXZhdGUpLCBhZGF0YSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGFkYXRhLT5hY2NvdW50X2l0ZW0pOwotLQotLQotLSAgICAgICAgYWRhdGEtPmNvbnRyb2xfcGFuZWxfaXRlbSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fbmV3X3dpdGhfbGFiZWwgKF8oIlN5c3RlbSBQcmVmZXJlbmNlcyIpKTsKLS0gICAgICAgIGd0a19pbWFnZV9tZW51X2l0ZW1fc2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChhZGF0YS0+Y29udHJvbF9wYW5lbF9pdGVtKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfaW1hZ2VfbmV3ICgpKTsKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEtPmNvbnRyb2xfcGFuZWxfaXRlbSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+Y29udHJvbF9wYW5lbF9pdGVtLCAic3R5bGUtc2V0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVpdGVtX3N0eWxlX3NldF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5jb250cm9sX3BhbmVsX2l0ZW0sICJhY3RpdmF0ZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9jb250cm9sX3BhbmVsX2FjdGl2YXRlKSwgYWRhdGEpOwotLQotLSAgICAgICAgaXRlbSA9IGd0a19zZXBhcmF0b3JfbWVudV9pdGVtX25ldyAoKTsKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwgaXRlbSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGl0ZW0pOwotLQotLSAgICAgICAgYWRhdGEtPmxvY2tfc2NyZWVuX2l0ZW0gPSBndGtfaW1hZ2VfbWVudV9pdGVtX25ld193aXRoX2xhYmVsIChfKCJMb2NrIFNjcmVlbiIpKTsKLS0gICAgICAgIGd0a19pbWFnZV9tZW51X2l0ZW1fc2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChhZGF0YS0+bG9ja19zY3JlZW5faXRlbSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2ltYWdlX25ldyAoKSk7Ci0tICAgICAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQgKEdUS19NRU5VX1NIRUxMIChhZGF0YS0+bWVudSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtLCAic3R5bGUtc2V0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVpdGVtX3N0eWxlX3NldF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtLCAiYWN0aXZhdGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAob25fbG9ja19zY3JlZW5fYWN0aXZhdGUpLCBhZGF0YSk7Ci0tICAgICAgICAvKiBPbmx5IHNob3cgaWYgbm90IGxvY2tlZCBkb3duICovCi0tCi0tICAgICAgICBhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0gPSBndGtfaW1hZ2VfbWVudV9pdGVtX25ld193aXRoX2xhYmVsIChfKCJTd2l0Y2ggVXNlciIpKTsKLS0gICAgICAgIGd0a19pbWFnZV9tZW51X2l0ZW1fc2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0pLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0a19pbWFnZV9uZXcgKCkpOwotLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kIChHVEtfTUVOVV9TSEVMTCAoYWRhdGEtPm1lbnUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YS0+bG9naW5fc2NyZWVuX2l0ZW0pOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPmxvZ2luX3NjcmVlbl9pdGVtLCAic3R5bGUtc2V0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG1lbnVpdGVtX3N0eWxlX3NldF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5sb2dpbl9zY3JlZW5faXRlbSwgImFjdGl2YXRlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX2xvZ2luX3NjcmVlbl9hY3RpdmF0ZSksIGFkYXRhKTsKLS0gICAgICAgIC8qIE9ubHkgc2hvdyBzd2l0Y2ggdXNlciBpZiB0aGVyZSBhcmUgb3RoZXIgdXNlcnMgKi8KLS0KLS0gICAgICAgIGFkYXRhLT5xdWl0X3Nlc3Npb25faXRlbSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fbmV3X3dpdGhfbGFiZWwgKF8oIlF1aXTigKYiKSk7Ci0tICAgICAgICBndGtfaW1hZ2VfbWVudV9pdGVtX3NldF9pbWFnZSAoR1RLX0lNQUdFX01FTlVfSVRFTSAoYWRhdGEtPnF1aXRfc2Vzc2lvbl9pdGVtKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfaW1hZ2VfbmV3ICgpKTsKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEtPnF1aXRfc2Vzc2lvbl9pdGVtKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFkYXRhLT5xdWl0X3Nlc3Npb25faXRlbSwgInN0eWxlLXNldCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChtZW51aXRlbV9zdHlsZV9zZXRfY2IpLCBhZGF0YSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+cXVpdF9zZXNzaW9uX2l0ZW0sICJhY3RpdmF0ZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9xdWl0X3Nlc3Npb25fYWN0aXZhdGUpLCBhZGF0YSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGFkYXRhLT5xdWl0X3Nlc3Npb25faXRlbSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGFkYXRhLT5tZW51KTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1kZXN0cm95X3N1Yl9tZW51IChHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBndGtfbWVudV9pdGVtX3NldF9zdWJtZW51IChHVEtfTUVOVV9JVEVNIChhZGF0YS0+bWVudWl0ZW0pLCBOVUxMKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1zZXRfbWVudV92aXNpYmlsaXR5IChHZG1BcHBsZXREYXRhICphZGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICB2aXNpYmxlKQotLXsKLS0KLS0gICAgICAgIGlmICh2aXNpYmxlKSB7Ci0tICAgICAgICAgICAgICAgIGNyZWF0ZV9zdWJfbWVudSAoYWRhdGEpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgZGVzdHJveV9zdWJfbWVudSAoYWRhdGEpOwotLSAgICAgICAgfQotLX0KLS0KLS1zdGF0aWMgdm9pZAotLWNsaWVudF9ub3RpZnlfbG9ja2Rvd25fZnVuYyAoR0NvbmZDbGllbnQgICAqY2xpZW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgY254bl9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDb25mRW50cnkgICAgKmVudHJ5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgR0NvbmZWYWx1ZSAqdmFsdWU7Ci0tICAgICAgICBjb25zdCBjaGFyICprZXk7Ci0tCi0tICAgICAgICB2YWx1ZSA9IGdjb25mX2VudHJ5X2dldF92YWx1ZSAoZW50cnkpOwotLSAgICAgICAga2V5ID0gZ2NvbmZfZW50cnlfZ2V0X2tleSAoZW50cnkpOwotLQotLSAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwga2V5ID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgfQotLQotLSAgICAgICAgaWYgKHN0cmNtcCAoa2V5LCBMT0NLRE9XTl9VU0VSX1NXSVRDSElOR19LRVkpID09IDApIHsKLS0gICAgICAgICAgICAgICAgaWYgKGdjb25mX3ZhbHVlX2dldF9ib29sICh2YWx1ZSkpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBzZXRfbWVudV92aXNpYmlsaXR5IChhZGF0YSwgRkFMU0UpOwotLSAgICAgICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9tZW51X3Zpc2liaWxpdHkgKGFkYXRhLCBUUlVFKTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAgKGtleSwgTE9DS0RPV05fTE9DS19TQ1JFRU5fS0VZKSA9PSAwKSB7Ci0tICAgICAgICAgICAgICAgIGlmIChnY29uZl92YWx1ZV9nZXRfYm9vbCAodmFsdWUpKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9oaWRlIChhZGF0YS0+bG9ja19zY3JlZW5faXRlbSk7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChhZGF0YS0+bG9ja19zY3JlZW5faXRlbSk7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1yZXNldF9pY29uIChHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBHZGtQaXhidWYgKnBpeGJ1ZjsKLS0gICAgICAgIEd0a1dpZGdldCAqaW1hZ2U7Ci0tCi0tICAgICAgICBpZiAoYWRhdGEtPnVzZXIgPT0gTlVMTCB8fCAhZ3RrX3dpZGdldF9oYXNfc2NyZWVuIChHVEtfV0lER0VUIChhZGF0YS0+bWVudWl0ZW0pKSkgewotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBpZiAoYWRhdGEtPnVzZXJfaXRlbSAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIGltYWdlID0gZ2RtX2VudHJ5X21lbnVfaXRlbV9nZXRfaW1hZ2UgKEdETV9FTlRSWV9NRU5VX0lURU0gKGFkYXRhLT51c2VyX2l0ZW0pKTsKLS0gICAgICAgICAgICAgICAgcGl4YnVmID0gZ2RtX3VzZXJfcmVuZGVyX2ljb24gKGFkYXRhLT51c2VyLCBhZGF0YS0+cGFuZWxfc2l6ZSAqIDMpOwotLSAgICAgICAgICAgICAgICBpZiAocGl4YnVmID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgZ3RrX2ltYWdlX3NldF9mcm9tX3BpeGJ1ZiAoR1RLX0lNQUdFIChpbWFnZSksIHBpeGJ1Zik7Ci0tICAgICAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmIChwaXhidWYpOwotLSAgICAgICAgfQotLSNlbHNlCi0tICAgICAgICBwaXhidWYgPSBnZG1fdXNlcl9yZW5kZXJfaWNvbiAoYWRhdGEtPnVzZXIsIGFkYXRhLT5wYW5lbF9zaXplKTsKLS0KLS0gICAgICAgIGlmIChwaXhidWYgPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpbWFnZSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fZ2V0X2ltYWdlIChHVEtfSU1BR0VfTUVOVV9JVEVNIChhZGF0YS0+bWVudWl0ZW0pKTsKLS0gICAgICAgIGd0a19pbWFnZV9zZXRfZnJvbV9waXhidWYgKEdUS19JTUFHRSAoaW1hZ2UpLCBwaXhidWYpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKHBpeGJ1Zik7Ci0tI2VuZGlmCi0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2V0dXBfY3VycmVudF91c2VyX25vdyAoR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgZ19hc3NlcnQgKGFkYXRhLT51c2VyICE9IE5VTEwpOwotLQotLSAgICAgICAgaWYgKGFkYXRhLT51c2VyX2xvYWRlZF9ub3RpZnlfaWQgIT0gMCkgewotLSAgICAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKGFkYXRhLT51c2VyLCBhZGF0YS0+dXNlcl9sb2FkZWRfbm90aWZ5X2lkKTsKLS0gICAgICAgIH0KLS0gICAgICAgIGFkYXRhLT51c2VyX2xvYWRlZF9ub3RpZnlfaWQgPSAwOwotLQotLSAgICAgICAgdXBkYXRlX2xhYmVsIChhZGF0YSk7Ci0tICAgICAgICByZXNldF9pY29uIChhZGF0YSk7Ci0tICAgICAgICBhZGF0YS0+dXNlcl9jaGFuZ2VkX25vdGlmeV9pZCA9Ci0tICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPnVzZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX3VzZXJfY2hhbmdlZCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX2N1cnJlbnRfdXNlcl9sb2FkZWQgKEdkbVVzZXIgICAgICAgKnVzZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAqcHNwZWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR2RtQXBwbGV0RGF0YSAqYWRhdGEpCi0tewotLSAgICAgICAgaWYgKCFnZG1fdXNlcl9pc19sb2FkZWQgKHVzZXIpKSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIHNldHVwX2N1cnJlbnRfdXNlcl9ub3cgKGFkYXRhKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1zZXR1cF9jdXJyZW50X3VzZXIgKEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIGFkYXRhLT51c2VyID0gZ2RtX3VzZXJfbWFuYWdlcl9nZXRfdXNlcl9ieV91aWQgKGFkYXRhLT5tYW5hZ2VyLCBnZXR1aWQgKCkpOwotLQotLSAgICAgICAgaWYgKGFkYXRhLT51c2VyID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nICgiQ291bGQgbm90IHNldHVwIGN1cnJlbnQgdXNlciIpOwotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBnX29iamVjdF9yZWYgKGFkYXRhLT51c2VyKTsKLS0KLS0gICAgICAgIGFkYXRhLT5tZW51aXRlbSA9IGd0a19pbWFnZV9tZW51X2l0ZW1fbmV3X3dpdGhfbGFiZWwgKCIiKTsKLS0jaWZuZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tICAgICAgICBndGtfaW1hZ2VfbWVudV9pdGVtX3NldF9pbWFnZSAoR1RLX0lNQUdFX01FTlVfSVRFTSAoYWRhdGEtPm1lbnVpdGVtKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfaW1hZ2VfbmV3ICgpKTsKLS0jZW5kaWYKLS0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZCAoR1RLX01FTlVfU0hFTEwgKGFkYXRhLT5tZW51YmFyKSwgYWRhdGEtPm1lbnVpdGVtKTsKLS0gICAgICAgIGd0a193aWRnZXRfc2hvdyAoYWRhdGEtPm1lbnVpdGVtKTsKLS0KLS0gICAgICAgIGlmIChnZG1fdXNlcl9pc19sb2FkZWQgKGFkYXRhLT51c2VyKSkgewotLSAgICAgICAgICAgICAgICBzZXR1cF9jdXJyZW50X3VzZXJfbm93IChhZGF0YSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGFkYXRhLT51c2VyX2xvYWRlZF9ub3RpZnlfaWQgPSBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+dXNlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90aWZ5Ojppcy1sb2FkZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX2N1cnJlbnRfdXNlcl9sb2FkZWQpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhKTsKLS19Ci0tCi0tI2lmZGVmIEJVSUxEX1BSRVNFTlNFX1NUVUZGCi0tc3RhdGljIHZvaWQKLS1zZXRfc3RhdHVzIChHZG1BcHBsZXREYXRhICphZGF0YSwKLS0gICAgICAgICAgICBndWludCBzdGF0dXMpCi0tewotLSAgICAgICAgaW50IGk7Ci0tCi0tICAgICAgICBnX2RlYnVnICgiU2V0dGluZyBjdXJyZW50IHN0YXR1czogJXUiLCBzdGF0dXMpOwotLSAgICAgICAgYWRhdGEtPmN1cnJlbnRfc3RhdHVzID0gc3RhdHVzOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoc3RhdHVzZXMpOyBpKyspIHsKLS0gICAgICAgICAgICAgICAgaWYgKHN0YXR1c2VzW2ldLndpZGdldCA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgaWYgKGkgPT0gc3RhdHVzKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2NoZWNrX21lbnVfaXRlbV9zZXRfYWN0aXZlIChHVEtfQ0hFQ0tfTUVOVV9JVEVNIChzdGF0dXNlc1tpXS53aWRnZXQpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0KLS0gICAgICAgIHVwZGF0ZV9sYWJlbCAoYWRhdGEpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX3ByZXNlbmNlX3N0YXR1c19jaGFuZ2VkIChEQnVzR1Byb3h5ICAgICpwcmVzZW5jZV9wcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgc3RhdHVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZG1BcHBsZXREYXRhICphZGF0YSkKLS17Ci0tICAgICAgICBnX2RlYnVnICgiU3RhdHVzIGNoYW5nZWQ6ICV1Iiwgc3RhdHVzKTsKLS0KLS0gICAgICAgIHNldF9zdGF0dXMgKGFkYXRhLCBzdGF0dXMpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLXNldF9zdGF0dXNfdGV4dCAoR2RtQXBwbGV0RGF0YSAqYWRhdGEsCi0tICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICpzdGF0dXNfdGV4dCkKLS17Ci0tICAgICAgICBHdGtXaWRnZXQgICAgICplbnRyeTsKLS0gICAgICAgIEd0a1RleHRCdWZmZXIgKmJ1ZmZlcjsKLS0KLS0gICAgICAgIGdfZGVidWcgKCJTdGF0dXMgdGV4dCBjaGFuZ2VkOiAlcyIsIHN0YXR1c190ZXh0KTsKLS0KLS0gICAgICAgIGVudHJ5ID0gZ2RtX2VudHJ5X21lbnVfaXRlbV9nZXRfZW50cnkgKEdETV9FTlRSWV9NRU5VX0lURU0gKGFkYXRhLT51c2VyX2l0ZW0pKTsKLS0gICAgICAgIGJ1ZmZlciA9IGd0a190ZXh0X3ZpZXdfZ2V0X2J1ZmZlciAoR1RLX1RFWFRfVklFVyAoZW50cnkpKTsKLS0gICAgICAgIGd0a190ZXh0X2J1ZmZlcl9zZXRfdGV4dCAoYnVmZmVyLCBzdGF0dXNfdGV4dCwgLTEpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLW9uX3ByZXNlbmNlX3N0YXR1c190ZXh0X2NoYW5nZWQgKERCdXNHUHJveHkgICAgKnByZXNlbmNlX3Byb3h5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgKnN0YXR1c190ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkbUFwcGxldERhdGEgKmFkYXRhKQotLXsKLS0gICAgICAgIHNldF9zdGF0dXNfdGV4dCAoYWRhdGEsIHN0YXR1c190ZXh0KTsKLS19Ci0tI2VuZGlmCi0tCi0tc3RhdGljIGdib29sZWFuCi0tZmlsbF9hcHBsZXQgKFBhbmVsQXBwbGV0ICphcHBsZXQpCi0tewotLSAgICAgICAgc3RhdGljIGNvbnN0IEJvbm9ib1VJVmVyYiBtZW51X3ZlcmJzW10gPSB7Ci0tICAgICAgICAgICAgICAgIEJPTk9CT19VSV9WRVJCICgiR2RtQWJvdXRNZSIsIGFib3V0X21lX2NiKSwKLS0gICAgICAgICAgICAgICAgQk9OT0JPX1VJX1ZFUkIgKCJHZG1Vc2Vyc0dyb3Vwc0FkbWluIiwgYWRtaW5fY2IpLAotLSAgICAgICAgICAgICAgICBCT05PQk9fVUlfVkVSQiAoIkdkbUFib3V0IiwgYWJvdXRfY2IpLAotLSAgICAgICAgICAgICAgICBCT05PQk9fVUlfVkVSQl9FTkQKLS0gICAgICAgIH07Ci0tICAgICAgICBzdGF0aWMgZ2Jvb2xlYW4gICAgZmlyc3RfdGltZSA9IEZBTFNFOwotLSAgICAgICAgY2hhciAgICAgICAgICAgICAgKnRtcDsKLS0gICAgICAgIEJvbm9ib1VJQ29tcG9uZW50ICpwb3B1cF9jb21wb25lbnQ7Ci0tICAgICAgICBHZG1BcHBsZXREYXRhICAgICAqYWRhdGE7Ci0tICAgICAgICBHRXJyb3IgICAgICAgICAgICAqZXJyb3I7Ci0tICAgICAgICBEQnVzR0Nvbm5lY3Rpb24gICAqYnVzOwotLQotLSAgICAgICAgaWYgKCFmaXJzdF90aW1lKSB7Ci0tICAgICAgICAgICAgICAgIGZpcnN0X3RpbWUgPSBUUlVFOwotLQotLSAgICAgICAgICAgICAgICAvKiBEbyB0aGlzIGhlcmUgc28gaXQncyBvbmx5IGRvbmUgb25jZS4gKi8KLS0gICAgICAgICAgICAgICAgZ3RrX3JjX3BhcnNlX3N0cmluZyAoInN0eWxlIFwiZ2RtLXVzZXItc3dpdGNoLW1lbnViYXItc3R5bGVcIlxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3RrTWVudUJhcjo6c2hhZG93LXR5cGUgPSBub25lXG4iCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHdGtNZW51QmFyOjppbnRlcm5hbC1wYWRkaW5nID0gMFxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3R5bGUgXCJnZG0tdXNlci1zd2l0Y2gtYXBwbGV0LXN0eWxlXCJcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkd0a1dpZGdldDo6Zm9jdXMtbGluZS13aWR0aCA9IDBcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkd0a1dpZGdldDo6Zm9jdXMtcGFkZGluZyA9IDBcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZGdldCBcIiouZ2RtLXVzZXItc3dpdGNoLW1lbnViYXJcIiBzdHlsZSBcImdkbS11c2VyLXN3aXRjaC1tZW51YmFyLXN0eWxlXCJcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZGdldCBcIiouZ2RtLXVzZXItc3dpdGNoLWFwcGxldFwiIHN0eWxlIFwiZ2RtLXVzZXItc3dpdGNoLWFwcGxldC1zdHlsZVwiXG4iKTsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9pY29uX25hbWUgKCJzdG9ja19wZW9wbGUiKTsKLS0gICAgICAgICAgICAgICAgZ19zZXRfYXBwbGljYXRpb25fbmFtZSAoXygiVXNlciBTd2l0Y2ggQXBwbGV0IikpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoISBnZG1fc2V0dGluZ3NfY2xpZW50X2luaXQgKERBVEFESVIgIi9nZG0vZ2RtLnNjaGVtYXMiLCAiLyIpKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ19jcml0aWNhbCAoIlVuYWJsZSB0byBpbml0aWFsaXplIHNldHRpbmdzIGNsaWVudCIpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQgKDEpOwotLSAgICAgICAgICAgICAgICB9Ci0tCi0tICAgICAgICB9Ci0tCi0tICAgICAgICBhZGF0YSA9IGdfbmV3MCAoR2RtQXBwbGV0RGF0YSwgMSk7Ci0tICAgICAgICBhZGF0YS0+YXBwbGV0ID0gYXBwbGV0OwotLSAgICAgICAgYWRhdGEtPnBhbmVsX3NpemUgPSAyNDsKLS0KLS0gICAgICAgIGFkYXRhLT5jbGllbnQgPSBnY29uZl9jbGllbnRfZ2V0X2RlZmF1bHQgKCk7Ci0tCi0tICAgICAgICBndGtfd2lkZ2V0X3NldF90b29sdGlwX3RleHQgKEdUS19XSURHRVQgKGFwcGxldCksIF8oIkNoYW5nZSBhY2NvdW50IHNldHRpbmdzIGFuZCBzdGF0dXMiKSk7Ci0tICAgICAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGggKEdUS19DT05UQUlORVIgKGFwcGxldCksIDApOwotLSAgICAgICAgZ3RrX3dpZGdldF9zZXRfbmFtZSAoR1RLX1dJREdFVCAoYXBwbGV0KSwgImdkbS11c2VyLXN3aXRjaC1hcHBsZXQiKTsKLS0gICAgICAgIHBhbmVsX2FwcGxldF9zZXRfZmxhZ3MgKGFwcGxldCwgUEFORUxfQVBQTEVUX0VYUEFORF9NSU5PUik7Ci0tICAgICAgICBwYW5lbF9hcHBsZXRfc2V0dXBfbWVudV9mcm9tX2ZpbGUgKGFwcGxldCwgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQURJUiAiL2dub21lLTIuMC91aS9HTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldC54bWwiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBtZW51X3ZlcmJzLCBhZGF0YSk7Ci0tCi0tICAgICAgICBwb3B1cF9jb21wb25lbnQgPSBwYW5lbF9hcHBsZXRfZ2V0X3BvcHVwX2NvbXBvbmVudCAoYXBwbGV0KTsKLS0KLS0gICAgICAgIC8qIEhpZGUgdGhlIGFkbWluIGNvbnRleHQgbWVudSBpdGVtcyBpZiBsb2NrZWQgZG93biBvciBubyBjbWQtbGluZSAqLwotLSAgICAgICAgaWYgKGdjb25mX2NsaWVudF9nZXRfYm9vbCAoYWRhdGEtPmNsaWVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPQ0tET1dOX0NPTU1BTkRfTElORV9LRVksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSB8fAotLSAgICAgICAgICAgIHBhbmVsX2FwcGxldF9nZXRfbG9ja2VkX2Rvd24gKGFwcGxldCkpIHsKLS0gICAgICAgICAgICAgICAgYm9ub2JvX3VpX2NvbXBvbmVudF9zZXRfcHJvcCAocG9wdXBfY29tcG9uZW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3BvcHVwcy9idXR0b24zL0dkbVNlcGFyYXRvciIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWRkZW4iLCAiMSIsIE5VTEwpOwotLSAgICAgICAgICAgICAgICBib25vYm9fdWlfY29tcG9uZW50X3NldF9wcm9wIChwb3B1cF9jb21wb25lbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvY29tbWFuZHMvR2RtVXNlcnNHcm91cHNBZG1pbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWRkZW4iLCAiMSIsIE5VTEwpOwotLSAgICAgICAgfSBlbHNlIHsKLS0jaWZuZGVmIFVTRVJTX0FETUlOCi0tIyAgaWZkZWYgR0RNX1NFVFVQCi0tICAgICAgICAgICAgICAgIGJvbm9ib191aV9jb21wb25lbnRfc2V0X3Byb3AgKHBvcHVwX2NvbXBvbmVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9wb3B1cHMvYnV0dG9uMy9HZG1TZXBhcmF0b3IiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGlkZGVuIiwgIjEiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0jICBlbmRpZiAvKiAhR0RNX1NFVFVQICovCi0tICAgICAgICAgICAgICAgIGJvbm9ib191aV9jb21wb25lbnRfc2V0X3Byb3AgKHBvcHVwX2NvbXBvbmVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9jb21tYW5kcy9HZG1Vc2Vyc0dyb3Vwc0FkbWluIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhpZGRlbiIsICIxIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tI2VuZGlmIC8qICFVU0VSU19BRE1JTiAqLwotLSAgICAgICAgfQotLQotLSAgICAgICAgLyogSGlkZSB0aGUgZ2RtcGhvdG9zZXR1cCBpdGVtIGlmIGl0IGNhbid0IGJlIGZvdW5kIGluIHRoZSBwYXRoLiAqLwotLSAgICAgICAgdG1wID0gZ19maW5kX3Byb2dyYW1faW5fcGF0aCAoImdub21lLWFib3V0LW1lIik7Ci0tICAgICAgICBpZiAoIXRtcCkgewotLSAgICAgICAgICAgICAgICBib25vYm9fdWlfY29tcG9uZW50X3NldF9wcm9wIChwb3B1cF9jb21wb25lbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvY29tbWFuZHMvR2RtQWJvdXRNZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaWRkZW4iLCAiMSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgZ19mcmVlICh0bXApOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPmFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZS1zZXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoYXBwbGV0X3N0eWxlX3NldF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2UtYmFja2dyb3VuZCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChhcHBsZXRfY2hhbmdlX2JhY2tncm91bmRfY2IpLCBhZGF0YSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhcHBsZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAic2l6ZS1hbGxvY2F0ZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChhcHBsZXRfc2l6ZV9hbGxvY2F0ZV9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJrZXktcHJlc3MtZXZlbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoYXBwbGV0X2tleV9wcmVzc19ldmVudF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3RfYWZ0ZXIgKGFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2N1cy1pbi1ldmVudCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChndGtfd2lkZ2V0X3F1ZXVlX2RyYXcpLCBOVUxMKTsKLS0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3RfYWZ0ZXIgKGFwcGxldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2N1cy1vdXQtZXZlbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KSwgTlVMTCk7Ci0tICAgICAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsIChHX09CSkVDVCAoYXBwbGV0KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZG0tYXBwbGV0LWRhdGEiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdkbV9hcHBsZXRfZGF0YV9mcmVlKTsKLS0KLS0gICAgICAgIGFkYXRhLT5tZW51YmFyID0gZ3RrX21lbnVfYmFyX25ldyAoKTsKLS0gICAgICAgIGd0a193aWRnZXRfc2V0X25hbWUgKGFkYXRhLT5tZW51YmFyLCAiZ2RtLXVzZXItc3dpdGNoLW1lbnViYXIiKTsKLS0gICAgICAgIGd0a193aWRnZXRfc2V0X2Nhbl9mb2N1cyAoYWRhdGEtPm1lbnViYXIsIFRSVUUpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPm1lbnViYXIsICJidXR0b24tcHJlc3MtZXZlbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAobWVudWJhcl9idXR0b25fcHJlc3NfZXZlbnRfY2IpLCBhZGF0YSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0X2FmdGVyIChhZGF0YS0+bWVudWJhciwgImV4cG9zZS1ldmVudCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChtZW51YmFyX2V4cG9zZV9ldmVudF9jYiksIGFkYXRhKTsKLS0gICAgICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChhcHBsZXQpLCBhZGF0YS0+bWVudWJhcik7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGFkYXRhLT5tZW51YmFyKTsKLS0KLS0gICAgICAgIGFkYXRhLT5tYW5hZ2VyID0gZ2RtX3VzZXJfbWFuYWdlcl9yZWZfZGVmYXVsdCAoKTsKLS0gICAgICAgIGdfb2JqZWN0X3NldCAoYWRhdGEtPm1hbmFnZXIsICJpbmNsdWRlLWFsbCIsIFRSVUUsIE5VTEwpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYWRhdGEtPm1hbmFnZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAibm90aWZ5Ojppcy1sb2FkZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAob25fbWFuYWdlcl9pc19sb2FkZWRfY2hhbmdlZCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YSk7Ci0tICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChhZGF0YS0+bWFuYWdlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJub3RpZnk6Omhhcy1tdWx0aXBsZS11c2VycyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9tYW5hZ2VyX2hhc19tdWx0aXBsZV91c2Vyc19jaGFuZ2VkKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXRhKTsKLS0KLS0gICAgICAgIGdkbV91c2VyX21hbmFnZXJfcXVldWVfbG9hZCAoYWRhdGEtPm1hbmFnZXIpOwotLSAgICAgICAgc2V0dXBfY3VycmVudF91c2VyIChhZGF0YSk7Ci0tCi0tICAgICAgICBnY29uZl9jbGllbnRfYWRkX2RpciAoYWRhdGEtPmNsaWVudCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0NLRE9XTl9ESVIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NPTkZfQ0xJRU5UX1BSRUxPQURfT05FTEVWRUwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tCi0tICAgICAgICBhZGF0YS0+Y2xpZW50X25vdGlmeV9sb2NrZG93bl9pZCA9IGdjb25mX2NsaWVudF9ub3RpZnlfYWRkIChhZGF0YS0+Y2xpZW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9DS0RPV05fRElSLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdDb25mQ2xpZW50Tm90aWZ5RnVuYyljbGllbnRfbm90aWZ5X2xvY2tkb3duX2Z1bmMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0KLS0gICAgICAgIGlmIChnY29uZl9jbGllbnRfZ2V0X2Jvb2wgKGFkYXRhLT5jbGllbnQsIExPQ0tET1dOX1VTRVJfU1dJVENISU5HX0tFWSwgTlVMTCkpIHsKLS0gICAgICAgICAgICAgICAgc2V0X21lbnVfdmlzaWJpbGl0eSAoYWRhdGEsIEZBTFNFKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHNldF9tZW51X3Zpc2liaWxpdHkgKGFkYXRhLCBUUlVFKTsKLS0gICAgICAgIH0KLS0gICAgICAgIGlmIChnY29uZl9jbGllbnRfZ2V0X2Jvb2wgKGFkYXRhLT5jbGllbnQsIExPQ0tET1dOX0xPQ0tfU0NSRUVOX0tFWSwgTlVMTCkpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBndGtfd2lkZ2V0X2hpZGUgKGFkYXRhLT5sb2NrX3NjcmVlbl9pdGVtKTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93IChhZGF0YS0+bG9ja19zY3JlZW5faXRlbSk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBlcnJvciA9IE5VTEw7Ci0tICAgICAgICBidXMgPSBkYnVzX2dfYnVzX2dldCAoREJVU19CVVNfU0VTU0lPTiwgJmVycm9yKTsKLS0gICAgICAgIGlmIChidXMgPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJVbmFibGUgdG8gZ2V0IHNlc3Npb24gYnVzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLS0gICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKLS0gICAgICAgIH0KLS0KLS0jaWZkZWYgQlVJTERfUFJFU0VOU0VfU1RVRkYKLS0gICAgICAgIGFkYXRhLT5wcmVzZW5jZV9wcm94eSA9IGRidXNfZ19wcm94eV9uZXdfZm9yX25hbWUgKGJ1cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5nbm9tZS5TZXNzaW9uTWFuYWdlciIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2dub21lL1Nlc3Npb25NYW5hZ2VyL1ByZXNlbmNlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5nbm9tZS5TZXNzaW9uTWFuYWdlci5QcmVzZW5jZSIpOwotLSAgICAgICAgaWYgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIERCdXNHUHJveHkgKnByb3h5OwotLQotLSAgICAgICAgICAgICAgICBkYnVzX2dfcHJveHlfYWRkX3NpZ25hbCAoYWRhdGEtPnByZXNlbmNlX3Byb3h5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1c0NoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1VJTlQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfSU5WQUxJRCk7Ci0tICAgICAgICAgICAgICAgIGRidXNfZ19wcm94eV9jb25uZWN0X3NpZ25hbCAoYWRhdGEtPnByZXNlbmNlX3Byb3h5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdGF0dXNDaGFuZ2VkIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9wcmVzZW5jZV9zdGF0dXNfY2hhbmdlZCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tICAgICAgICAgICAgICAgIGRidXNfZ19wcm94eV9hZGRfc2lnbmFsIChhZGF0YS0+cHJlc2VuY2VfcHJveHksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhdHVzVGV4dENoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9JTlZBTElEKTsKLS0gICAgICAgICAgICAgICAgZGJ1c19nX3Byb3h5X2Nvbm5lY3Rfc2lnbmFsIChhZGF0YS0+cHJlc2VuY2VfcHJveHksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1c1RleHRDaGFuZ2VkIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9wcmVzZW5jZV9zdGF0dXNfdGV4dF9jaGFuZ2VkKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0KLS0KLS0gICAgICAgICAgICAgICAgcHJveHkgPSBkYnVzX2dfcHJveHlfbmV3X2Zyb21fcHJveHkgKGFkYXRhLT5wcmVzZW5jZV9wcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2dub21lL1Nlc3Npb25NYW5hZ2VyL1ByZXNlbmNlIik7Ci0tICAgICAgICAgICAgICAgIGlmIChwcm94eSAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgc3RhdHVzOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YXR1c190ZXh0OwotLSAgICAgICAgICAgICAgICAgICAgICAgIEdWYWx1ZSAgICAgIHZhbHVlID0geyAwLCB9OwotLQotLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3RleHQgPSBOVUxMOwotLQotLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gTlVMTDsKLS0gICAgICAgICAgICAgICAgICAgICAgICBkYnVzX2dfcHJveHlfY2FsbCAocHJveHksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsICJvcmcuZ25vbWUuU2Vzc2lvbk1hbmFnZXIuUHJlc2VuY2UiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLCAic3RhdHVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVkFMSUQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9WQUxVRSwgJnZhbHVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfSU5WQUxJRCk7Ci0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yICE9IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkNvdWxkbid0IGdldCBwcmVzZW5jZSBzdGF0dXM6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGdfdmFsdWVfZ2V0X3VpbnQgKCZ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZSk7Ci0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBOVUxMOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGRidXNfZ19wcm94eV9jYWxsIChwcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdldCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywgIm9yZy5nbm9tZS5TZXNzaW9uTWFuYWdlci5QcmVzZW5jZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsICJzdGF0dXMtdGV4dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9JTlZBTElELAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfVkFMVUUsICZ2YWx1ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVkFMSUQpOwotLQotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJDb3VsZG4ndCBnZXQgcHJlc2VuY2Ugc3RhdHVzIHRleHQ6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ZXh0ID0gZ192YWx1ZV9nZXRfc3RyaW5nICgmdmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICBzZXRfc3RhdHVzIChhZGF0YSwgc3RhdHVzKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBzZXRfc3RhdHVzX3RleHQgKGFkYXRhLCBzdGF0dXNfdGV4dCk7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byBnZXQgc2Vzc2lvbiBwcmVzZW5jZSBwcm94eSIpOwotLSAgICAgICAgfQotLSNlbmRpZgotLQotLSBkb25lOgotLSAgICAgICAgZ3RrX3dpZGdldF9zaG93IChHVEtfV0lER0VUIChhZGF0YS0+YXBwbGV0KSk7Ci0tCi0tICAgICAgICByZXR1cm4gVFJVRTsKLS19Ci0tCi0tc3RhdGljIGdib29sZWFuCi0tYXBwbGV0X2ZhY3RvcnkgKFBhbmVsQXBwbGV0ICAgKmFwcGxldCwKLS0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqaWlkLAotLSAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICBkYXRhKQotLXsKLS0gICAgICAgIGdib29sZWFuIHJldDsKLS0gICAgICAgIHJldCA9IEZBTFNFOwotLSAgICAgICAgaWYgKHN0cmNtcCAoaWlkLCAiT0FGSUlEOkdOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0IikgPT0gMCkgewotLSAgICAgICAgICAgICAgICByZXQgPSBmaWxsX2FwcGxldCAoYXBwbGV0KTsKLS0gICAgICAgIH0KLS0gICAgICAgIHJldHVybiByZXQ7Ci0tfQotZGlmZiAtLWdpdCBhL2d1aS91c2VyLXN3aXRjaC1hcHBsZXQvZ2RtLWVudHJ5LW1lbnUtaXRlbS5jIGIvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmMKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZDY1N2U3YS4uMDAwMDAwMAotLS0tIGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDMwNCArMCwwIEBACi0tLyogLSotIE1vZGU6IEM7IHRhYi13aWR0aDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNldDogOCAtKi0KLS0gKgotLSAqIENvcHlyaWdodCAoQykgMjAwOCBSZWQgSGF0LCBJbmMuCi0tICoKLS0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLS0gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSAqCi0tICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0gKgotLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0tICovCi0tCi0tI2luY2x1ZGUgImNvbmZpZy5oIgotLQotLSNpbmNsdWRlIDx1bmlzdGQuaD4KLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLQotLSNpbmNsdWRlIDxnbGliL2dpMThuLmg+Ci0tI2luY2x1ZGUgPGd0ay9ndGsuaD4KLS0KLS0jaW5jbHVkZSAiZ2RtLWVudHJ5LW1lbnUtaXRlbS5oIgotLQotLS8qIHNhbWUgYXMgdHdpdHRlciAqLwotLSNkZWZpbmUgVEVYVF9CVUZGRVJfTUFYX0NIQVJTIDY0Ci0tCi0tZW51bQotLXsKLS0gICAgICAgIFBST1BfMCwKLS19OwotLQotLXN0cnVjdCBfR2RtRW50cnlNZW51SXRlbQotLXsKLS0gICAgICAgIEd0a01lbnVJdGVtICAgICAgcGFyZW50OwotLQotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgICpoYm94OwotLSAgICAgICAgR3RrV2lkZ2V0ICAgICAgICppbWFnZTsKLS0gICAgICAgIEd0a1dpZGdldCAgICAgICAqZW50cnk7Ci0tfTsKLS0KLS1zdHJ1Y3QgX0dkbUVudHJ5TWVudUl0ZW1DbGFzcwotLXsKLS0gICAgICAgIEd0a01lbnVJdGVtQ2xhc3MgcGFyZW50X2NsYXNzOwotLX07Ci0tCi0tR19ERUZJTkVfVFlQRSAoR2RtRW50cnlNZW51SXRlbSwgZ2RtX2VudHJ5X21lbnVfaXRlbSwgR1RLX1RZUEVfTUVOVV9JVEVNKQotLQotLXN0YXRpYyB2b2lkCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9zZXRfcHJvcGVydHkgKEdPYmplY3QgICAgICAqb2JqZWN0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgIHBhcmFtX2lkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgKnZhbHVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgKnBzcGVjKQotLXsKLS0gICAgICAgIEdkbUVudHJ5TWVudUl0ZW0gKml0ZW07Ci0tCi0tICAgICAgICBpdGVtID0gR0RNX0VOVFJZX01FTlVfSVRFTSAob2JqZWN0KTsKLS0KLS0gICAgICAgIHN3aXRjaCAocGFyYW1faWQpIHsKLS0gICAgICAgIGRlZmF1bHQ6Ci0tICAgICAgICAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwYXJhbV9pZCwgcHNwZWMpOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1nZG1fZW50cnlfbWVudV9pdGVtX2dldF9wcm9wZXJ0eSAoR09iamVjdCAgICAqb2JqZWN0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICBwYXJhbV9pZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAqdmFsdWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgKnBzcGVjKQotLXsKLS0gICAgICAgIEdkbUVudHJ5TWVudUl0ZW0gKml0ZW07Ci0tCi0tICAgICAgICBpdGVtID0gR0RNX0VOVFJZX01FTlVfSVRFTSAob2JqZWN0KTsKLS0KLS0gICAgICAgIHN3aXRjaCAocGFyYW1faWQpIHsKLS0gICAgICAgIGRlZmF1bHQ6Ci0tICAgICAgICAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwYXJhbV9pZCwgcHNwZWMpOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1nZG1fZW50cnlfbWVudV9pdGVtX2Rpc3Bvc2UgKEdPYmplY3QgKm9iamVjdCkKLS17Ci0tCi0tICAgICAgICAoKkdfT0JKRUNUX0NMQVNTIChnZG1fZW50cnlfbWVudV9pdGVtX3BhcmVudF9jbGFzcyktPmRpc3Bvc2UpIChvYmplY3QpOwotLX0KLS0KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1nZG1fZW50cnlfbWVudV9pdGVtX2J1dHRvbl9yZWxlYXNlIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50QnV0dG9uICpldmVudCkKLS17Ci0tICAgICAgICByZXR1cm4gVFJVRTsKLS19Ci0tCi0tLyogQ3V0IGFuZCBwYXN0ZSBmcm9tIGd0a3dpbmRvdy5jICovCi0tc3RhdGljIHZvaWQKLS1zZW5kX2ZvY3VzX2NoYW5nZSAoR3RrV2lkZ2V0ICp3aWRnZXQsCi0tICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgaW4pCi0tewotLSAgICAgICAgR2RrRXZlbnQgKmZldmVudCA9IGdka19ldmVudF9uZXcgKEdES19GT0NVU19DSEFOR0UpOwotLQotLSAgICAgICAgZ19vYmplY3RfcmVmICh3aWRnZXQpOwotLQotLSAgICAgICAgZ3RrX3dpZGdldF9zZXRfY2FuX2ZvY3VzICh3aWRnZXQsIGluKTsKLS0KLS0gICAgICAgIGZldmVudC0+Zm9jdXNfY2hhbmdlLnR5cGUgPSBHREtfRk9DVVNfQ0hBTkdFOwotLSAgICAgICAgZmV2ZW50LT5mb2N1c19jaGFuZ2Uud2luZG93ID0gZ19vYmplY3RfcmVmIChndGtfd2lkZ2V0X2dldF93aW5kb3cgKHdpZGdldCkpOwotLSAgICAgICAgZmV2ZW50LT5mb2N1c19jaGFuZ2UuaW4gPSBpbjsKLS0KLS0gICAgICAgIGd0a193aWRnZXRfZXZlbnQgKHdpZGdldCwgZmV2ZW50KTsKLS0KLS0gICAgICAgIGdfb2JqZWN0X25vdGlmeSAoR19PQkpFQ1QgKHdpZGdldCksICJoYXMtZm9jdXMiKTsKLS0KLS0gICAgICAgIGdfb2JqZWN0X3VucmVmICh3aWRnZXQpOwotLSAgICAgICAgZ2RrX2V2ZW50X2ZyZWUgKGZldmVudCk7Ci0tfQotLQotLXN0YXRpYyBnYm9vbGVhbgotLWdkbV9lbnRyeV9tZW51X2l0ZW1fYnV0dG9uX3ByZXNzIChHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudEJ1dHRvbiAqZXZlbnQpCi0tewotLSAgICAgICAgR3RrV2lkZ2V0ICplbnRyeTsKLS0KLS0gICAgICAgIGVudHJ5ID0gR0RNX0VOVFJZX01FTlVfSVRFTSAod2lkZ2V0KS0+ZW50cnk7Ci0tCi0tICAgICAgICBpZiAoZ3RrX3dpZGdldF9nZXRfd2luZG93IChlbnRyeSkgIT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICBnZGtfd2luZG93X3JhaXNlIChndGtfd2lkZ2V0X2dldF93aW5kb3cgKGVudHJ5KSk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBpZiAoIWd0a193aWRnZXRfaGFzX2ZvY3VzIChlbnRyeSkpIHsKLS0gICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzIChlbnRyeSk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICByZXR1cm4gRkFMU0U7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9yZWFsaXplIChHdGtXaWRnZXQgKndpZGdldCkKLS17Ci0tICAgICAgICBpZiAoR1RLX1dJREdFVF9DTEFTUyAoZ2RtX2VudHJ5X21lbnVfaXRlbV9wYXJlbnRfY2xhc3MpLT5yZWFsaXplKSB7Ci0tICAgICAgICAgICAgICAgIEdUS19XSURHRVRfQ0xBU1MgKGdkbV9lbnRyeV9tZW51X2l0ZW1fcGFyZW50X2NsYXNzKS0+cmVhbGl6ZSAod2lkZ2V0KTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1nZG1fZW50cnlfbWVudV9pdGVtX3NlbGVjdCAoR3RrSXRlbSAqaXRlbSkKLS17Ci0tICAgICAgICBnX3JldHVybl9pZl9mYWlsIChHRE1fSVNfRU5UUllfTUVOVV9JVEVNIChpdGVtKSk7Ci0tICAgICAgICBzZW5kX2ZvY3VzX2NoYW5nZSAoR1RLX1dJREdFVCAoR0RNX0VOVFJZX01FTlVfSVRFTSAoaXRlbSktPmVudHJ5KSwgVFJVRSk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9kZXNlbGVjdCAoR3RrSXRlbSAqaXRlbSkKLS17Ci0tICAgICAgICBnX3JldHVybl9pZl9mYWlsIChHRE1fSVNfRU5UUllfTUVOVV9JVEVNIChpdGVtKSk7Ci0tCi0tICAgICAgICBzZW5kX2ZvY3VzX2NoYW5nZSAoR1RLX1dJREdFVCAoR0RNX0VOVFJZX01FTlVfSVRFTSAoaXRlbSktPmVudHJ5KSwgRkFMU0UpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLWdkbV9lbnRyeV9tZW51X2l0ZW1fY2xhc3NfaW5pdCAoR2RtRW50cnlNZW51SXRlbUNsYXNzICprbGFzcykKLS17Ci0tICAgICAgICBHT2JqZWN0Q2xhc3MgICAgICpnb2JqZWN0X2NsYXNzOwotLSAgICAgICAgR3RrV2lkZ2V0Q2xhc3MgICAqd2lkZ2V0X2NsYXNzOwotLSAgICAgICAgR3RrTWVudUl0ZW1DbGFzcyAqbWVudV9pdGVtX2NsYXNzOwotLSAgICAgICAgR3RrSXRlbUNsYXNzICAgICAqaXRlbV9jbGFzczsKLS0KLS0gICAgICAgIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOwotLSAgICAgICAgd2lkZ2V0X2NsYXNzID0gR1RLX1dJREdFVF9DTEFTUyAoa2xhc3MpOwotLSAgICAgICAgbWVudV9pdGVtX2NsYXNzID0gR1RLX01FTlVfSVRFTV9DTEFTUyAoa2xhc3MpOwotLSAgICAgICAgaXRlbV9jbGFzcyA9IEdUS19JVEVNX0NMQVNTIChrbGFzcyk7Ci0tCi0tICAgICAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnZG1fZW50cnlfbWVudV9pdGVtX3NldF9wcm9wZXJ0eTsKLS0gICAgICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X3Byb3BlcnR5OwotLSAgICAgICAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fZGlzcG9zZTsKLS0KLS0gICAgICAgIHdpZGdldF9jbGFzcy0+YnV0dG9uX3JlbGVhc2VfZXZlbnQgPSBnZG1fZW50cnlfbWVudV9pdGVtX2J1dHRvbl9yZWxlYXNlOwotLSAgICAgICAgd2lkZ2V0X2NsYXNzLT5idXR0b25fcHJlc3NfZXZlbnQgPSBnZG1fZW50cnlfbWVudV9pdGVtX2J1dHRvbl9wcmVzczsKLS0gICAgICAgIHdpZGdldF9jbGFzcy0+cmVhbGl6ZSA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fcmVhbGl6ZTsKLS0KLS0gICAgICAgIGl0ZW1fY2xhc3MtPnNlbGVjdCA9IGdkbV9lbnRyeV9tZW51X2l0ZW1fc2VsZWN0OwotLSAgICAgICAgaXRlbV9jbGFzcy0+ZGVzZWxlY3QgPSBnZG1fZW50cnlfbWVudV9pdGVtX2Rlc2VsZWN0OwotLQotLSAgICAgICAgbWVudV9pdGVtX2NsYXNzLT5oaWRlX29uX2FjdGl2YXRlID0gRkFMU0U7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tb25fZW50cnlfc2hvdyAoR3RrV2lkZ2V0ICAgICAgICAqd2lkZ2V0LAotLSAgICAgICAgICAgICAgIEdkbUVudHJ5TWVudUl0ZW0gKml0ZW0pCi0tewotLSAgICAgICAgaWYgKGd0a193aWRnZXRfZ2V0X3dpbmRvdyAod2lkZ2V0KSAhPSBOVUxMKSB7Ci0tICAgICAgICAgICAgICAgIGdka193aW5kb3dfcmFpc2UgKGd0a193aWRnZXRfZ2V0X3dpbmRvdyAod2lkZ2V0KSk7Ci0tICAgICAgICB9Ci0tICAgICAgICBzZW5kX2ZvY3VzX2NoYW5nZSAod2lkZ2V0LCBUUlVFKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1vbl90ZXh0X2J1ZmZlcl9jaGFuZ2VkIChHdGtUZXh0QnVmZmVyICAgICpidWZmZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR2RtRW50cnlNZW51SXRlbSAqaXRlbSkKLS17Ci0tICAgICAgICBpbnQgbGVuOwotLQotLSAgICAgICAgbGVuID0gZ3RrX3RleHRfYnVmZmVyX2dldF9jaGFyX2NvdW50IChidWZmZXIpOwotLSAgICAgICAgaWYgKGxlbiA+IFRFWFRfQlVGRkVSX01BWF9DSEFSUykgewotLSAgICAgICAgICAgICAgICBnZGtfd2luZG93X2JlZXAgKGd0a193aWRnZXRfZ2V0X3dpbmRvdyAoR1RLX1dJREdFVCAoaXRlbSkpKTsKLS0gICAgICAgIH0KLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1vbl9lbnRyeV9tb3ZlX2ZvY3VzIChHdGtXaWRnZXQgICAgICAgICp3aWRnZXQsCi0tICAgICAgICAgICAgICAgICAgICAgR3RrRGlyZWN0aW9uVHlwZSAgZGlyZWN0aW9uLAotLSAgICAgICAgICAgICAgICAgICAgIEdkbUVudHJ5TWVudUl0ZW0gKml0ZW0pCi0tewotLSAgICAgICAgZ19kZWJ1ZyAoImZvY3VzIG1vdmUiKTsKLS0gICAgICAgIHNlbmRfZm9jdXNfY2hhbmdlIChHVEtfV0lER0VUIChHRE1fRU5UUllfTUVOVV9JVEVNIChpdGVtKS0+ZW50cnkpLCBGQUxTRSk7Ci0tICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUgKGl0ZW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb3ZlLWZvY3VzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0RJUl9UQUJfRk9SV0FSRCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9pbml0IChHZG1FbnRyeU1lbnVJdGVtICppdGVtKQotLXsKLS0gICAgICAgIFBhbmdvRm9udERlc2NyaXB0aW9uICpmb250ZGVzYzsKLS0gICAgICAgIFBhbmdvRm9udE1ldHJpY3MgICAgICptZXRyaWNzOwotLSAgICAgICAgUGFuZ29Db250ZXh0ICAgICAgICAgKmNvbnRleHQ7Ci0tICAgICAgICBQYW5nb0xhbmd1YWdlICAgICAgICAqbGFuZzsKLS0gICAgICAgIGludCAgICAgICAgICAgICAgICAgICBhc2NlbnQ7Ci0tICAgICAgICBHdGtUZXh0QnVmZmVyICAgICAgICAqYnVmZmVyOwotLQotLSAgICAgICAgaXRlbS0+aGJveCA9IGd0a19oYm94X25ldyAoRkFMU0UsIDYpOwotLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKGl0ZW0pLCBpdGVtLT5oYm94KTsKLS0KLS0gICAgICAgIGl0ZW0tPmltYWdlID0gZ3RrX2ltYWdlX25ldyAoKTsKLS0gICAgICAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAoaXRlbS0+aGJveCksIGl0ZW0tPmltYWdlLCBGQUxTRSwgRkFMU0UsIDApOwotLQotLSAgICAgICAgaXRlbS0+ZW50cnkgPSBndGtfdGV4dF92aWV3X25ldyAoKTsKLS0gICAgICAgIGd0a190ZXh0X3ZpZXdfc2V0X2FjY2VwdHNfdGFiIChHVEtfVEVYVF9WSUVXIChpdGVtLT5lbnRyeSksIEZBTFNFKTsKLS0gICAgICAgIGd0a190ZXh0X3ZpZXdfc2V0X2VkaXRhYmxlIChHVEtfVEVYVF9WSUVXIChpdGVtLT5lbnRyeSksIFRSVUUpOwotLSAgICAgICAgZ3RrX3RleHRfdmlld19zZXRfd3JhcF9tb2RlIChHVEtfVEVYVF9WSUVXIChpdGVtLT5lbnRyeSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XUkFQX1dPUkQpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoaXRlbS0+ZW50cnksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9lbnRyeV9zaG93KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0pOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoaXRlbS0+ZW50cnksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAibW92ZS1mb2N1cyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChvbl9lbnRyeV9tb3ZlX2ZvY3VzKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0pOwotLQotLSAgICAgICAgYnVmZmVyID0gZ3RrX3RleHRfdmlld19nZXRfYnVmZmVyIChHVEtfVEVYVF9WSUVXIChpdGVtLT5lbnRyeSkpOwotLSAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoYnVmZmVyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAob25fdGV4dF9idWZmZXJfY2hhbmdlZCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtKTsKLS0KLS0gICAgICAgIC8qIGdldCB0aGUgZm9udCBhc2NlbnQgZm9yIHRoZSBjdXJyZW50IGZvbnQgYW5kIGxhbmd1YWdlICovCi0tICAgICAgICBjb250ZXh0ID0gZ3RrX3dpZGdldF9nZXRfcGFuZ29fY29udGV4dCAoaXRlbS0+ZW50cnkpOwotLSAgICAgICAgZm9udGRlc2MgPSBwYW5nb19jb250ZXh0X2dldF9mb250X2Rlc2NyaXB0aW9uIChjb250ZXh0KTsKLS0gICAgICAgIGxhbmcgPSBwYW5nb19jb250ZXh0X2dldF9sYW5ndWFnZSAoY29udGV4dCk7Ci0tICAgICAgICBtZXRyaWNzID0gcGFuZ29fY29udGV4dF9nZXRfbWV0cmljcyAoY29udGV4dCwgZm9udGRlc2MsIGxhbmcpOwotLSAgICAgICAgYXNjZW50ID0gcGFuZ29fZm9udF9tZXRyaWNzX2dldF9hc2NlbnQgKG1ldHJpY3MpICogMS41IC8gUEFOR09fU0NBTEU7Ci0tICAgICAgICBwYW5nb19mb250X21ldHJpY3NfdW5yZWYgKG1ldHJpY3MpOwotLQotLSAgICAgICAgLyogc2l6ZSBvdXIgcHJvZ3Jlc3MgYmFyIHRvIGJlIGZpdmUgYXNjZW50cyBsb25nICovCi0tICAgICAgICBndGtfd2lkZ2V0X3NldF9zaXplX3JlcXVlc3QgKGl0ZW0tPmVudHJ5LCBhc2NlbnQgKiA1LCAtMSk7Ci0tCi0tICAgICAgICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKGl0ZW0tPmhib3gpLCBpdGVtLT5lbnRyeSwgVFJVRSwgVFJVRSwgMCk7Ci0tCi0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGl0ZW0tPmhib3gpOwotLSAgICAgICAgZ3RrX3dpZGdldF9zaG93IChpdGVtLT5pbWFnZSk7Ci0tICAgICAgICBndGtfd2lkZ2V0X3Nob3cgKGl0ZW0tPmVudHJ5KTsKLS19Ci0tCi0tR3RrV2lkZ2V0ICoKLS1nZG1fZW50cnlfbWVudV9pdGVtX25ldyAodm9pZCkKLS17Ci0tICAgICAgICByZXR1cm4gZ19vYmplY3RfbmV3IChHRE1fVFlQRV9FTlRSWV9NRU5VX0lURU0sIE5VTEwpOwotLX0KLS0KLS1HdGtXaWRnZXQgKgotLWdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X2VudHJ5IChHZG1FbnRyeU1lbnVJdGVtICppdGVtKQotLXsKLS0gICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHRE1fSVNfRU5UUllfTUVOVV9JVEVNIChpdGVtKSwgTlVMTCk7Ci0tCi0tICAgICAgICByZXR1cm4gaXRlbS0+ZW50cnk7Ci0tfQotLQotLUd0a1dpZGdldCAqCi0tZ2RtX2VudHJ5X21lbnVfaXRlbV9nZXRfaW1hZ2UgKEdkbUVudHJ5TWVudUl0ZW0gKml0ZW0pCi0tewotLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdETV9JU19FTlRSWV9NRU5VX0lURU0gKGl0ZW0pLCBOVUxMKTsKLS0KLS0gICAgICAgIHJldHVybiBpdGVtLT5pbWFnZTsKLS19Ci1kaWZmIC0tZ2l0IGEvZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmggYi9ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAzMDMxNjA5Li4wMDAwMDAwCi0tLS0gYS9ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2dkbS1lbnRyeS1tZW51LWl0ZW0uaAotKysrIC9kZXYvbnVsbAotQEAgLTEsNTEgKzAsMCBAQAotLS8qIC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDggLSotCi0tICoKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNSBKYW1lcyBNLiBDYXBlIDxqY2FwZUBpZ25vcmUteW91ci50dj4uCi0tICoKLS0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLS0gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSAqCi0tICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0gKgotLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0tICovCi0tCi0tI2lmbmRlZiBfX0dETV9FTlRSWV9NRU5VX0lURU1fXwotLSNkZWZpbmUgX19HRE1fRU5UUllfTUVOVV9JVEVNX18KLS0KLS0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotLQotLUdfQkVHSU5fREVDTFMKLS0KLS0jZGVmaW5lIEdETV9UWVBFX0VOVFJZX01FTlVfSVRFTSBcCi0tICAoZ2RtX2VudHJ5X21lbnVfaXRlbV9nZXRfdHlwZSAoKSkKLS0jZGVmaW5lIEdETV9FTlRSWV9NRU5VX0lURU0ob2JqZWN0KSBcCi0tICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmplY3QpLCBHRE1fVFlQRV9FTlRSWV9NRU5VX0lURU0sIEdkbUVudHJ5TWVudUl0ZW0pKQotLSNkZWZpbmUgR0RNX0VOVFJZX01FTlVfSVRFTV9DTEFTUyhrbGFzcykgXAotLSAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHRE1fVFlQRV9FTlRSWV9NRU5VX0lURU0sIEdkbUVudHJ5TWVudUl0ZW1DbGFzcykpCi0tI2RlZmluZSBHRE1fSVNfRU5UUllfTUVOVV9JVEVNKG9iamVjdCkgXAotLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqZWN0KSwgR0RNX1RZUEVfRU5UUllfTUVOVV9JVEVNKSkKLS0jZGVmaW5lIEdETV9JU19FTlRSWV9NRU5VX0lURU1fQ0xBU1Moa2xhc3MpIFwKLS0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR0RNX1RZUEVfRU5UUllfTUVOVV9JVEVNKSkKLS0jZGVmaW5lIEdETV9FTlRSWV9NRU5VX0lURU1fR0VUX0NMQVNTKG9iamVjdCkgXAotLSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmplY3QpLCBHRE1fVFlQRV9FTlRSWV9NRU5VX0lURU0sIEdkbUVudHJ5TWVudUl0ZW1DbGFzcykpCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgX0dkbUVudHJ5TWVudUl0ZW0gR2RtRW50cnlNZW51SXRlbTsKLS10eXBlZGVmIHN0cnVjdCBfR2RtRW50cnlNZW51SXRlbUNsYXNzIEdkbUVudHJ5TWVudUl0ZW1DbGFzczsKLS0KLS1HVHlwZSAgICAgIGdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X3R5cGUgICAgICAodm9pZCkgR19HTlVDX0NPTlNUOwotLQotLUd0a1dpZGdldCAqZ2RtX2VudHJ5X21lbnVfaXRlbV9uZXcgICAgICAgICAgICh2b2lkKTsKLS1HdGtXaWRnZXQgKmdkbV9lbnRyeV9tZW51X2l0ZW1fZ2V0X2VudHJ5ICAgICAoR2RtRW50cnlNZW51SXRlbSAqaXRlbSk7Ci0tR3RrV2lkZ2V0ICpnZG1fZW50cnlfbWVudV9pdGVtX2dldF9pbWFnZSAgICAgKEdkbUVudHJ5TWVudUl0ZW0gKml0ZW0pOwotLQotLUdfRU5EX0RFQ0xTCi0tCi0tI2VuZGlmIC8qIF9fR0RNX0VOVFJZX01FTlVfSVRFTV9fICovCi1kaWZmIC0tZ2l0IGEvcG8vUE9URklMRVMuaW4gYi9wby9QT1RGSUxFUy5pbgotaW5kZXggMWZjY2I5MC4uY2MxYTNmZCAxMDA2NDQKLS0tLSBhL3BvL1BPVEZJTEVTLmluCi0rKysgYi9wby9QT1RGSUxFUy5pbgotQEAgLTg0LDEwICs4NCw2IEBAIGd1aS9zaW1wbGUtZ3JlZXRlci9nZG0tdGltZXIuYwotIGd1aS9zaW1wbGUtZ3JlZXRlci9nZG0tdXNlci5jCi0gZ3VpL3NpbXBsZS1ncmVldGVyL2dkbS11c2VyLWNob29zZXItd2lkZ2V0LmMKLSBndWkvc2ltcGxlLWdyZWV0ZXIvZ3JlZXRlci1tYWluLmMKLS1ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L2FwcGxldC5jCi0tZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9nZG0tZW50cnktbWVudS1pdGVtLmMKLS1ndWkvdXNlci1zd2l0Y2gtYXBwbGV0L0dOT01FX0Zhc3RVc2VyU3dpdGNoQXBwbGV0LnNlcnZlci5pbi5pbgotLWd1aS91c2VyLXN3aXRjaC1hcHBsZXQvR05PTUVfRmFzdFVzZXJTd2l0Y2hBcHBsZXQueG1sCi0gdXRpbHMvZ2RtZmxleGlzZXJ2ZXIuYwotIHV0aWxzL2dkbS1zY3JlZW5zaG90LmMKLSAKLWRpZmYgLS1naXQgYS9wby9QT1RGSUxFUy5za2lwIGIvcG8vUE9URklMRVMuc2tpcAotaW5kZXggMDI2OWEwZi4uZWUzZDc1MyAxMDA2NDQKLS0tLSBhL3BvL1BPVEZJTEVTLnNraXAKLSsrKyBiL3BvL1BPVEZJTEVTLnNraXAKLUBAIC03LDcgKzcsNiBAQAotICMgcmVtb3ZlIHRoZXNlIHVubGVzcyB5b3UgZml4ICJtYWtlIGRpc3RjaGVjayIgYSBkaWZmZXJlbnQgd2F5LgotICMKLSBkYXRhL2dkbS5zY2hlbWFzLmluCi0tZ3VpL3VzZXItc3dpdGNoLWFwcGxldC9HTk9NRV9GYXN0VXNlclN3aXRjaEFwcGxldC5zZXJ2ZXIuaW4KLSBkYXRhL2dyZWV0ZXItYXV0b3N0YXJ0L2F0LXNwaS1yZWdpc3RyeWQtd3JhcHBlci5kZXNrdG9wLmluCi0gZGF0YS9ncmVldGVyLWF1dG9zdGFydC9nZG0tc2ltcGxlLWdyZWV0ZXIuZGVza3RvcC5pbgotIGRhdGEvZ3JlZXRlci1hdXRvc3RhcnQvZ25vbWUtcG93ZXItbWFuYWdlci5kZXNrdG9wLmluCi0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbS8wMDAyLWdkbS11c2VyLW1hbmFnZXIuYy1hdm9pZC1kaXNwbGF5aW5nLXN5c3RlbS11c2Vycy1pbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtLzAwMDItZ2RtLXVzZXItbWFuYWdlci5jLWF2b2lkLWRpc3BsYXlpbmctc3lzdGVtLXVzZXJzLWluLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQyMTA3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtLzAwMDItZ2RtLXVzZXItbWFuYWdlci5jLWF2b2lkLWRpc3BsYXlpbmctc3lzdGVtLXVzZXJzLWluLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNDNlNTlmM2RlYWRiMzkxNGExY2M5MzFhZTE4ZDQwMjM4NzRjZGVjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjYgQXByIDIwMTMgMTc6MTU6NDggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2RtLXVzZXItbWFuYWdlci5jOiBhdm9pZCBkaXNwbGF5aW5nIHN5c3RlbSB1c2VycyBpbgotIGdyZWV0ZXIncyBsaXN0Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLXlvY3RvIGVudmlyb25tZW50IHN5c3RlbSB1c2VycyBoYXZlIFVJRCBiZWxvdyAxMDAwCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gZ3VpL3NpbXBsZS1ncmVldGVyL2dkbS11c2VyLW1hbmFnZXIuYyB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2d1aS9zaW1wbGUtZ3JlZXRlci9nZG0tdXNlci1tYW5hZ2VyLmMgYi9ndWkvc2ltcGxlLWdyZWV0ZXIvZ2RtLXVzZXItbWFuYWdlci5jCi1pbmRleCBjNjMxOTg5Li5mMThlNDc4IDEwMDY0NAotLS0tIGEvZ3VpL3NpbXBsZS1ncmVldGVyL2dkbS11c2VyLW1hbmFnZXIuYwotKysrIGIvZ3VpL3NpbXBsZS1ncmVldGVyL2dkbS11c2VyLW1hbmFnZXIuYwotQEAgLTYzLDcgKzYzLDcgQEAKLSAjaWZkZWYgX19zdW4KLSAjZGVmaW5lIEZBTExCQUNLX01JTklNQUxfVUlEICAgICAxMDAKLSAjZWxzZQotLSNkZWZpbmUgRkFMTEJBQ0tfTUlOSU1BTF9VSUQgICAgIDUwMAotKyNkZWZpbmUgRkFMTEJBQ0tfTUlOSU1BTF9VSUQgICAgIDEwMDAKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIF9QQVRIX1NIRUxMUwotLS0gCi0xLjcuNC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZG0vZ2RtL3N5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjlmYTJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG0vc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1JbiBjcm9zcyBlbnZpcm9ubWVudCB3ZSBoYXZlIHRvIHByZXBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIHBhdGggZm91bmQgYnkKLXBrZ2NvbmZpZyBzaW5jZSB0aGUgcGF0aCByZXR1cm5lZCBmcm9tIHBrZ2NvbmZpZyBkb2VzIG5vdCBoYXZlIHN5c3Jvb3QgcHJlZml4ZWQKLWl0IGVuZHMgdXAgdXNpbmcgdGhlIGZpbGVzIGZyb20gaG9zdCBzeXN0ZW0uIE5vdyB1c3VhbGx5IHBlb3BsZSBoYXZlIGdub21lIGluc3RhbGxlZAotc28gdGhlIGJ1aWxkIHN1Y2NlZWRzIGJ1dCBpZiB5b3UgZG9udCBoYXZlIGdub21lIGluc3RhbGxlZCBvbiBidWlsZCBob3N0IHRoZW4KLWl0IHdvbnQgZmluZCB0aGUgZmlsZXMgb24gaG9zdCBzeXN0ZW0gYW5kIHBhY2thZ2VzIHVzaW5nIGdub21lLWRvYy11dGlscyB3b250Ci1jb21waWxlLgotCi1UaGlzIHNob3VsZCB3b3JrIG9rIHdpdGggbm9uIHN5c3Jvb3RlZCBidWlsZHMgdG9vIHNpbmNlIGluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLXdpbGwgYmUgZW1wdHkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBnZG0tMi4zMi4yL2dub21lLWRvYy11dGlscy5tYWtlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RtLTIuMzIuMi5vcmlnL2dub21lLWRvYy11dGlscy5tYWtlCTIwMTEtMDUtMzEgMDg6MDY6NTkuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ2RtLTIuMzIuMi9nbm9tZS1kb2MtdXRpbHMubWFrZQkyMDExLTA5LTI1IDE1OjMyOjM5LjU0MDk5MjUyMSAtMDcwMAotQEAgLTEzMywxMiArMTMzLDEyIEBACi0gX3htbDJwbyA/PSBgd2hpY2ggeG1sMnBvYAotIF94bWwycG9fbW9kZSA9ICQoaWYgJChET0NfSUQpLG1hbGxhcmQsZG9jYm9vaykKLSAKLS1fZGIyaHRtbCA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMmh0bWwgZ25vbWUtZG9jLXV0aWxzYAotLV9kYjJvbWYgID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgZGIyb21mIGdub21lLWRvYy11dGlsc2AKLS1fbWFscm5nICA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIG1hbHJuZyBnbm9tZS1kb2MtdXRpbHNgCi0tX2NodW5rcyAgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY2h1bmtzLnhzbAotLV9jcmVkaXRzID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NyZWRpdHMueHNsCi0tX2lkcyA/PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzKS9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvaWRzLnhzbAotK19kYjJodG1sID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMmh0bWwgZ25vbWUtZG9jLXV0aWxzYAotK19kYjJvbWYgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMm9tZiBnbm9tZS1kb2MtdXRpbHNgCi0rX21hbHJuZyAgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgbWFscm5nIGdub21lLWRvYy11dGlsc2AKLStfY2h1bmtzICA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY2h1bmtzLnhzbAotK19jcmVkaXRzID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jcmVkaXRzLnhzbAotK19pZHMgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSQoc2hlbGwgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHMpL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9pZHMueHNsCi0gCi0gaWYgRU5BQkxFX1NLCi0gX0VOQUJMRV9TSyA9IHRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dkbS9nZG1fMi4zMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbV8yLjMyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0Nzg1Y2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2RtL2dkbV8yLjMyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotU1VNTUFSWSA9ICJHcmFwaGljYWwgbG9naW4gbWFuYWdlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUyA9ICJ4aW5wdXQgZ25vbWUtcGFuZWwgdGNwLXdyYXBwZXJzIGxpYmNhbmJlcnJhIGxpYnhrbGF2aWVyIGdyZXAgY29uc29sZWtpdCBsaWJwYW0gZ25vbWUtZG9jLXV0aWxzIGd0aysgeHJkYiIKLQotUFIgPSAicjE4IgotCi1pbmhlcml0IGdub21lIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZAotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9jcm9zcy14ZGV0ZWN0aW9uLmRpZmYgXAotICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS11c2VyLXN3aXRjaC1hcHBsZXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWdkbS11c2VyLW1hbmFnZXIuYy1hdm9pZC1kaXNwbGF5aW5nLXN5c3RlbS11c2Vycy1pbi0ucGF0Y2ggXAotICAgIGZpbGU6Ly9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaCBcCi0gICAgZmlsZTovLyVnY29uZi10cmVlLnhtbCBcCi0gICAgZmlsZTovL2dkbSBcCi0gICAgZmlsZTovL2dkbS5jb25mIFwKLSAgICBmaWxlOi8vZ2RtLXBhbSBcCi0gICAgZmlsZTovL0RlZmF1bHQgXAotICAgIGZpbGU6Ly9nZG0uc2VydmljZS5pbiBcCi0iCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRiZTUxODdhMmUxNzg4MWNjNDU0ZTMxM2UwYWU4ZDFlIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDM0ZDIzYWYwZWExOGQ4NmU1NTQzZTcwNzIxMmQ5Mjk3ZWM3ZDgzZjIyMTgwODk2OGFmMjY2ZGJlYmMwZTcwMyIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtYXV0aGVudGljYXRpb24tc2NoZW1lPXNoYWRvdyBcCi0gICAgLS1lbmFibGUtZGVidWc9eWVzIFwKLSAgICAtLXdpdGgtY29uc29sZS1raXQgXAotICAgIC0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgInM6XGJkb2NzOjpnIiAke1N9L01ha2VmaWxlLmFtCi0gICAgcm0gLWYgJHtTfS9tNC9nbm9tZS1kb2MtdXRpbHMubTQKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9nZG0vLmdjb25mLm1hbmRhdG9yeQotICAgIGluc3RhbGwgJHtXT1JLRElSfS8lZ2NvbmYtdHJlZS54bWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9nZG0vLmdjb25mLm1hbmRhdG9yeS8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZ2RtICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9nZG0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nZG0uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vZ2RtLwotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9nZG0tcGFtICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9nZG0KLSAgICBybSAtZiAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvZ2RtLWF1dG9sb2dpbgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZ2RtL0luaXQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9EZWZhdWx0ICR7RH0vJHtzeXNjb25mZGlyfS9nZG0vSW5pdAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtZSAncywlc2JpbmRpciUsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgIDwgJHtXT1JLRElSfS9nZG0uc2VydmljZS5pbiBcCi0gICAgICAgID4gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ2RtLnNlcnZpY2UKLQotICAgIGNob3duIC1SIGdkbTpnZG0gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2dkbQotICAgIGNobW9kIDA3NTAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2dkbQotCi0gICAgcm0gLXJmICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCi0gICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vZ2RtL2F1dG9zdGFydC9Mb2dpbldpbmRvdy9hdC1zcGktcmVnaXN0cnlkLXdyYXBwZXIuZGVza3RvcAotICAgIHJtIC1mICR7RH0ke2RhdGFkaXJ9L2dkbS9hdXRvc3RhcnQvTG9naW5XaW5kb3cvb3JjYS1zY3JlZW4tcmVhZGVyLmRlc2t0b3AKLSAgICBybSAtZiAke0R9JHtkYXRhZGlyfS9nZG0vYXV0b3N0YXJ0L0xvZ2luV2luZG93L2dub21lLW1hZy5kZXNrdG9wCi0gICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vZ2RtL2F1dG9zdGFydC9Mb2dpbldpbmRvdy9nb2suZGVza3RvcAotICAgIHJtIC1mICR7RH0ke2RhdGFkaXJ9L2dkbS9hdXRvc3RhcnQvTG9naW5XaW5kb3cvbWV0YWNpdHkuZGVza3RvcAotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29uKiBcCi0gICAgJHtkYXRhZGlyfS94c2Vzc2lvbiogXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiZ3JlcCBkYnVzLXgxMSBzaGFkb3ciCi0jICJsaWJwYW0tYmFzZS1maWxlcyIKLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9nZG0vZ2RtLmNvbmYgJHtzeXNjb25mZGlyfS9pbml0LmQvZ2RtIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gIm9wZW5zc2gtbWlzYyBkZXNrdG9wLWZpbGUtdXRpbHMgZ2xpYi0yLjAtdXRpbHMgbWV0YWNpdHkgZ25vbWUtc2Vzc2lvbiBwb2xraXQtZ25vbWUgY29uc29sZWtpdCIKLQotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJnZG0uc2VydmljZSIKLQotSU5JVFNDUklQVF9OQU1FID0gImdkbSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDUgLiBzdG9wIDIwIDAgMSAyIDMgNiAuIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9nZG0gLS11c2VyLWdyb3VwIGdkbSIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSMgUmVnaXN0ZXIgdXAgYXMgZGVmYXVsdCBkbQotbWtkaXIgLXAgJEQke3N5c2NvbmZkaXJ9L1gxMS8KLWVjaG8gIiR7YmluZGlyfS9nZG0iID4gJEQke3N5c2NvbmZkaXJ9L1gxMS9kZWZhdWx0LWRpc3BsYXktbWFuYWdlcgotfQotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLSAgICBkZWx1c2VyIGdkbSB8fCB0cnVlCi0gICAgZGVsZ3JvdXAgZ2RtIHx8IHRydWUKLSAgICBzZWQgLWkgL2dkbS9kICR7c3lzY29uZmRpcn0vWDExL2RlZmF1bHQtZGlzcGxheS1tYW5hZ2VyIHx8IHRydWUKLX0KLQotUE5CTEFDS0xJU1RbZ2RtXSA/PSAiRGVwZW5kcyBvbiBicm9rZW4gZ25vbWUtcGFuZWwgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1iYWNrZ3JvdW5kcy9nbm9tZS1iYWNrZ3JvdW5kc18yLjMyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1iYWNrZ3JvdW5kcy9nbm9tZS1iYWNrZ3JvdW5kc18yLjMyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNWIwMmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtYmFja2dyb3VuZHMvZ25vbWUtYmFja2dyb3VuZHNfMi4zMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJHbm9tZSBiYWNrZ3JvdW5kIGltYWdlcyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotIyBnbGliLTIuMCBmb3IgZ2xpYi1nZXR0ZXh0Lm00IHdoaWNoIHByb3ZpZGVzIEFNX0dMSUJfR05VX0dFVFRFWFQKLSMgaW50bHRvb2wtbmF0aXZlIGZvciBJVF9QUk9HX0lOVExUT09MKDAuMzUuMCkKLURFUEVORFMgPSAiZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZQotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzZGYyNjYyNjQ4M2IwMmU1MWFkZWZjNmFiNTk0NWE4ZCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjRkN2I2MGI1YmE3NjhiZjg4MzRiNWZhM2EzNDcxY2Q5YTllMTRiNTg4NGJjMjEwZGMyZDNjZGJmMWZhZGRjZWYiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dub21lLWJhY2tncm91bmQtcHJvcGVydGllcyIKLQotCi1QTkJMQUNLTElTVFtnbm9tZS1iYWNrZ3JvdW5kc10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2NDcvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29udHJvbC1jZW50ZXIvZ25vbWUtY29udHJvbC1jZW50ZXJfMi4zMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29udHJvbC1jZW50ZXIvZ25vbWUtY29udHJvbC1jZW50ZXJfMi4zMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDE3ODNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWNvbnRyb2wtY2VudGVyL2dub21lLWNvbnRyb2wtY2VudGVyXzIuMzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgY29udHJvbCBjZW50ZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLURFUEVORFMgPSAiZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZSBnbm9tZS1tZW51cyBsaWJ1bmlxdWUgZGJ1cy1nbGliIGdub21lLWRlc2t0b3AgbGlieG1sMiBtZXRhY2l0eSBnY29uZiBnbm9tZS1zZXR0aW5ncy1kYWVtb24gbGlicnN2ZyBwYW5nbyBsaWJnbm9tZWtiZCBsaWJ4a2xhdmllciBsaWJjYW5iZXJyYSBsaWJndG9wIGxpYnhzY3Juc2F2ZXIiCi0KLVBSID0gInIxIgotCi1pbmhlcml0IGdub21lCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImI0ZThhYjVjNzU1NmFlMDdhZGRiZmNmYjRmYTJmNzYxIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiN2M1NjhiNTczNThlNWMwOGY0ZDhkZDc2ZGJhYzdkZjI1MzkxMzVhZDA4MTg3MmI2MDUxNGI3YThhYzc5N2U2NiIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotTERGTEFHUyArPSAiLWxndGhyZWFkLTIuMCAtbHhtbDIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSBzOmhlbHA6OmcgJHtTfS9NYWtlZmlsZS5hbQotICAgIHJtIC1mICR7U30vbTQvZ25vbWUtZG9jLXV0aWxzLm00Ci19Ci1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vbWltZQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29uKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS94c2Vzc2lvbiogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5kb3ctbWFuYWdlci1zZXR0aW5ncy8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dub21lIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2Rlc2t0b3AtZGlyZWN0b3JpZXMgXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vd2luZG93LW1hbmFnZXItc2V0dGluZ3MvLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vd2luZG93LW1hbmFnZXItc2V0dGluZ3MvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3dpbmRvdy1tYW5hZ2VyLXNldHRpbmdzLyouYSIKLQotUE5CTEFDS0xJU1RbZ25vbWUtY29udHJvbC1jZW50ZXJdID89ICJEZXBlbmRzIG9uIGJyb2tlbiBnbm9tZS1tZW51cyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcF8yLjMyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3BfMi4zMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWRhZmFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcF8yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLVBSID0gInI2IgotCi1pbmhlcml0IGdub21lIHBrZ2NvbmZpZwotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1YzgwZDYyOGEyNDBlYjlkOWZmNzg5MTNiMzFmMmY2NyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjU1Y2JlY2Y2N2VmZTFmYTFlNTdhYzk2NjUyMGE3YzQ2ZDc5OWM4YmEzYzY1MmExMjE5ZjYwY2FmY2NiMzczOWQiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLURFUEVORFMgKz0gImdjb25mIGxpYnhyYW5kciB2aXJ0dWFsL2xpYngxMSBndGsrIGdsaWItMi4wIGdub21lLWRvYy11dGlscyBzdGFydHVwLW5vdGlmaWNhdGlvbiBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS1kaXNhYmxlLWRlc2t0b3AtZG9jcyAtLWRpc2FibGUtZ25vbWUtYWJvdXQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBzZWQgLWkgLWUgczpeIyFAUFlUSE9OQDojISR7YmluZGlyfS9weXRob246ICR7U30vZ25vbWUtYWJvdXQvZ25vbWUtYWJvdXQuaW4KLSAgICBybSAtZiAke1N9L200L2dub21lLWRvYy11dGlscy5tNAotfQotCi1QQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcCIKLUZJTEVTX2xpYmdub21lLWRlc2t0b3AgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtkYXRhZGlyfS9saWJnbm9tZS1kZXNrdG9wL3BucC5pZHMiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9nbm9tZS1hYm91dCIKLQotUE5CTEFDS0xJU1RbZ25vbWUtZGVza3RvcF0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA1OTUvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS8wMDAxLUFkZC1zdXBwb3J0LWZvci1EZXZpY2VBdXRvbW91bnRIaW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS8wMDAxLUFkZC1zdXBwb3J0LWZvci1EZXZpY2VBdXRvbW91bnRIaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDVlOTM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvMDAwMS1BZGQtc3VwcG9ydC1mb3ItRGV2aWNlQXV0b21vdW50SGludC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLUZyb20gN2RkZTViYzc1YTFkOTZiZTk1MTBjZTFlOThkMjhmOWQzMzUyMDkxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhdmlkIFpldXRoZW4gPGRhdmlkekByZWRoYXQuY29tPgotRGF0ZTogRnJpLCA4IEp1bCAyMDExIDExOjAzOjUyIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBEZXZpY2VBdXRvbW91bnRIaW50Ci0KLUJhc2VkIG9uIHRoZSBwYXRjaCBpbiBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMTg0Ci0KLVVwc3RyZWFtLVN0YXR1czogQXBwbGllZCBbMV0KLQotWzFdIGh0dHBzOi8vbWFpbC5nbm9tZS5vcmcvYXJjaGl2ZXMvY29tbWl0cy1saXN0LzIwMTEtSnVseS9tc2cwMzIwNy5odG1sCi0KLVNpZ25lZC1vZmYtYnk6IERhdmlkIFpldXRoZW4gPGRhdmlkekByZWRoYXQuY29tPgotLS0tCi0gc3JjL2dkdS9nZHUtZGV2aWNlLmMgfCAgIDEwICsrKysrKysrKysKLSBzcmMvZ2R1L2dkdS1kZXZpY2UuaCB8ICAgIDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9nZHUvZ2R1LWRldmljZS5jIGIvc3JjL2dkdS9nZHUtZGV2aWNlLmMKLWluZGV4IDZhNWFmYWQuLjRiZTM5Y2YgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2R1L2dkdS1kZXZpY2UuYwotKysrIGIvc3JjL2dkdS9nZHUtZGV2aWNlLmMKLUBAIC04Miw2ICs4Miw3IEBAIHR5cGVkZWYgc3RydWN0Ci0gICBnYm9vbGVhbiBkZXZpY2VfcHJlc2VudGF0aW9uX25vcG9saWN5OwotICAgY2hhciAqZGV2aWNlX3ByZXNlbnRhdGlvbl9uYW1lOwotICAgY2hhciAqZGV2aWNlX3ByZXNlbnRhdGlvbl9pY29uX25hbWU7Ci0rICBjaGFyICpkZXZpY2VfYXV0b21vdW50X2hpbnQ7Ci0gICBndWludDY0IGRldmljZV9zaXplOwotICAgZ3VpbnQ2NCBkZXZpY2VfYmxvY2tfc2l6ZTsKLSAKLUBAIC0yNzksNiArMjgwLDggQEAgY29sbGVjdF9wcm9wcyAoY29uc3QgY2hhciAqa2V5LAotICAgICBwcm9wcy0+ZGV2aWNlX3ByZXNlbnRhdGlvbl9uYW1lID0gZ19zdHJkdXAgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLSAgIGVsc2UgaWYgKHN0cmNtcCAoa2V5LCAiRGV2aWNlUHJlc2VudGF0aW9uSWNvbk5hbWUiKSA9PSAwKQotICAgICBwcm9wcy0+ZGV2aWNlX3ByZXNlbnRhdGlvbl9pY29uX25hbWUgPSBnX3N0cmR1cCAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwotKyAgZWxzZSBpZiAoc3RyY21wIChrZXksICJEZXZpY2VBdXRvbW91bnRIaW50IikgPT0gMCkKLSsgICAgcHJvcHMtPmRldmljZV9hdXRvbW91bnRfaGludCA9IGdfc3RyZHVwIChnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSk7Ci0gICBlbHNlIGlmIChzdHJjbXAgKGtleSwgIkRldmljZVNpemUiKSA9PSAwKQotICAgICBwcm9wcy0+ZGV2aWNlX3NpemUgPSBnX3ZhbHVlX2dldF91aW50NjQgKHZhbHVlKTsKLSAgIGVsc2UgaWYgKHN0cmNtcCAoa2V5LCAiRGV2aWNlQmxvY2tTaXplIikgPT0gMCkKLUBAIC01NDksNiArNTUyLDcgQEAgZGV2aWNlX3Byb3BlcnRpZXNfZnJlZSAoRGV2aWNlUHJvcGVydGllcyAqcHJvcHMpCi0gICBnX3N0cmZyZWV2IChwcm9wcy0+ZGV2aWNlX21vdW50X3BhdGhzKTsKLSAgIGdfZnJlZSAocHJvcHMtPmRldmljZV9wcmVzZW50YXRpb25fbmFtZSk7Ci0gICBnX2ZyZWUgKHByb3BzLT5kZXZpY2VfcHJlc2VudGF0aW9uX2ljb25fbmFtZSk7Ci0rICBnX2ZyZWUgKHByb3BzLT5kZXZpY2VfYXV0b21vdW50X2hpbnQpOwotICAgZ19mcmVlIChwcm9wcy0+am9iX2lkKTsKLSAgIGdfZnJlZSAocHJvcHMtPmlkX3VzYWdlKTsKLSAgIGdfZnJlZSAocHJvcHMtPmlkX3R5cGUpOwotQEAgLTEyOTQsNiArMTI5OCwxMiBAQCBnZHVfZGV2aWNlX2RyaXZlX2dldF9tZWRpYV9jb21wYXRpYmlsaXR5IChHZHVEZXZpY2UgKmRldmljZSkKLSB9Ci0gCi0gY29uc3QgY2hhciAqCi0rZ2R1X2RldmljZV9nZXRfYXV0b21vdW50X2hpbnQgKEdkdURldmljZSAqZGV2aWNlKQotK3sKLSsgICAgICAgIHJldHVybiBkZXZpY2UtPnByaXYtPnByb3BzLT5kZXZpY2VfYXV0b21vdW50X2hpbnQ7Ci0rfQotKwotK2NvbnN0IGNoYXIgKgotIGdkdV9kZXZpY2VfZHJpdmVfZ2V0X21lZGlhIChHZHVEZXZpY2UgKmRldmljZSkKLSB7Ci0gICAgICAgICByZXR1cm4gZGV2aWNlLT5wcml2LT5wcm9wcy0+ZHJpdmVfbWVkaWE7Ci1kaWZmIC0tZ2l0IGEvc3JjL2dkdS9nZHUtZGV2aWNlLmggYi9zcmMvZ2R1L2dkdS1kZXZpY2UuaAotaW5kZXggNGMxMzAyYi4uOGNmZDdhOSAxMDA2NDQKLS0tLSBhL3NyYy9nZHUvZ2R1LWRldmljZS5oCi0rKysgYi9zcmMvZ2R1L2dkdS1kZXZpY2UuaAotQEAgLTE0Myw2ICsxNDMsNyBAQCBjb25zdCBjaGFyICpnZHVfZGV2aWNlX2RyaXZlX2dldF93d24gKEdkdURldmljZSAqZGV2aWNlKTsKLSBjb25zdCBjaGFyICpnZHVfZGV2aWNlX2RyaXZlX2dldF9jb25uZWN0aW9uX2ludGVyZmFjZSAoR2R1RGV2aWNlICpkZXZpY2UpOwotIGd1aW50NjQgZ2R1X2RldmljZV9kcml2ZV9nZXRfY29ubmVjdGlvbl9zcGVlZCAoR2R1RGV2aWNlICpkZXZpY2UpOwotIGNoYXIgKipnZHVfZGV2aWNlX2RyaXZlX2dldF9tZWRpYV9jb21wYXRpYmlsaXR5IChHZHVEZXZpY2UgKmRldmljZSk7Ci0rY29uc3QgZ2NoYXIgKmdkdV9kZXZpY2VfZ2V0X2F1dG9tb3VudF9oaW50KEdkdURldmljZSAqZGV2aWNlKTsKLSBjb25zdCBjaGFyICpnZHVfZGV2aWNlX2RyaXZlX2dldF9tZWRpYSAoR2R1RGV2aWNlICpkZXZpY2UpOwotIGdib29sZWFuIGdkdV9kZXZpY2VfZHJpdmVfZ2V0X2lzX21lZGlhX2VqZWN0YWJsZSAoR2R1RGV2aWNlICpkZXZpY2UpOwotIGdib29sZWFuIGdkdV9kZXZpY2VfZHJpdmVfZ2V0X3JlcXVpcmVzX2VqZWN0IChHZHVEZXZpY2UgKmRldmljZSk7Ci0tLSAKLTEuNy42LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS8wMDAyLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4xLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS8wMDAyLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmM5NzA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvMDAwMi1SZXF1aXJlLWxpYm5vdGlmeS0wLjYuMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gZjhkZWE4ZGQ0MTFjYmExMGE1NGVjMDgzYzNkNWM5ZDY0MWVjMzZjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdpbGxpYW0gSm9uIE1jQ2FubiA8am1jY2FubkByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAxMiBPY3QgMjAxMCAwMDoxMjo0OSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBSZXF1aXJlIGxpYm5vdGlmeSAwLjYuMQotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMxOTQwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzFdCi0KLVsxXSBodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2dub21lLWRpc2stdXRpbGl0eS9jb21taXQvP2lkPWY4ZGVhOGRkNDExY2JhMTBhNTRlYzA4M2MzZDVjOWQ2NDFlYzM2YzAKLQotU2lnbmVkLW9mZi1ieTogRGF2aWQgWmV1dGhlbiA8ZGF2aWR6QHJlZGhhdC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gc3JjL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tbWFpbi5jIHwgNSArLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjNjEyMTJlLi4zNzkwZmNmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMjgsNyArMTI4LDcgQEAgREJVU19HTElCX1JFUVVJUkVEPTAuNzQKLSBHTk9NRV9LRVlSSU5HX1JFUVVJUkVEPTIuMjIKLSBHVEsyX1JFUVVJUkVEPTIuMjAuMAotIFVOSVFVRV9SRVFVSVJFRD0xLjAKLS1MSUJOT1RJRllfUkVRVUlSRUQ9MC4zLjAKLStMSUJOT1RJRllfUkVRVUlSRUQ9MC42LjEKLSBOQVVUSUxVU19SRVFVSVJFRD0yLjI0LjAKLSBBVkFISV9VSV9SRVFVSVJFRD0wLjYuMjUKLSAKLWRpZmYgLS1naXQgYS9zcmMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1tYWluLmMgYi9zcmMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1tYWluLmMKLWluZGV4IDE4ZTk2NzIuLmI2YTcxM2YgMTAwNjQ0Ci0tLS0gYS9zcmMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1tYWluLmMKLSsrKyBiL3NyYy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLW1haW4uYwotQEAgLTUzNSwxMCArNTM1LDcgQEAgdXBkYXRlX3N0YXR1c19pY29uIChOb3RpZmljYXRpb25EYXRhICpkYXRhKQotICAgICAgICAgICAgICAgICAgICAgXygiQSBoYXJkIGRpc2sgbWF5IGJlIGZhaWxpbmciKSwKLSAgICAgICAgICAgICAgICAgICAgIC8qIFRyYW5zbGF0b3JzOiBUaGlzIGlzIHVzZWQgYXMgdGhlIHRleHQgb2YgdGhlIG5vdGlmaWNhdGlvbiovCi0gICAgICAgICAgICAgICAgICAgICBfKCJPbmUgb3IgbW9yZSBoYXJkIGRpc2tzIHJlcG9ydCBoZWFsdGggcHJvYmxlbXMuIENsaWNrIHRoZSBpY29uIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uLiIpLAotLSAgICAgICAgICAgICAgICAgICAgImd0ay1kaWFsb2ctd2FybmluZyIsCi0tICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0gICAgICAgICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9hdHRhY2hfdG9fc3RhdHVzX2ljb24gKGRhdGEtPmF0YV9zbWFydF9ub3RpZmljYXRpb24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0dXNfaWNvbik7Ci0rICAgICAgICAgICAgICAgICAgICAiZ3RrLWRpYWxvZy13YXJuaW5nIik7Ci0gICAgICAgICAgICAgICAgIG5vdGlmeV9ub3RpZmljYXRpb25fc2V0X3VyZ2VuY3kgKGRhdGEtPmF0YV9zbWFydF9ub3RpZmljYXRpb24sIE5PVElGWV9VUkdFTkNZX0NSSVRJQ0FMKTsKLSAgICAgICAgICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9zZXRfdGltZW91dCAoZGF0YS0+YXRhX3NtYXJ0X25vdGlmaWNhdGlvbiwgTk9USUZZX0VYUElSRVNfTkVWRVIpOwotICAgICAgICAgICAgICAgICBzaG93X25vdGlmaWNhdGlvbiAoZGF0YSk7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvZGlzYWJsZS1zY3JvbGxrZWVwZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kaXNrLXV0aWxpdHkvZ25vbWUtZGlzay11dGlsaXR5L2Rpc2FibGUtc2Nyb2xsa2VlcGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzY5NDJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvZGlzYWJsZS1zY3JvbGxrZWVwZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tOiBEbWl0cnkgRXJlbWluLVNvbGVuaWtvdiA8ZGJhcnlzaGtvdkBnbWFpbC5jb20+Ci1TdWJqZWN0OiBEaXNhYmxlIHNjcm9sbGtlZXBlci1jb25maWcgbm90IGZvdW5kIG1lc3NhZ2UKLVVwc3RyZWFtLVN0YXR1czogTm90LUFwcGxpY2FibGUKLQotSWYgc2Nyb2xsa2VlcGVyLWNvbmZpZyBpc24ndCBmb3VuZCwgY29uZmlndXJlIGZhaWxzIHdpdGggYW4gZXJyb3IuCi1GaXggdGhhdCBieSBjb21tZW50aW5nIG91dCB0aGUgY2hlY2suCi0KLVNpZ25lZC1PZmYtQnk6IERtaXRyeSBFcmVtaW4tU29sZW5pa292IDxkYmFyeXNoa292QGdtYWlsLmNvbT4KLQotCi1JbmRleDogZ25vbWUtZGlzay11dGlsaXR5LTIuMzIuMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS1kaXNrLXV0aWxpdHktMi4zMi4wLm9yaWcvY29uZmlndXJlLmFjCTIwMTAtMDktMTUgMTk6MDc6MjUuMDAwMDAwMDAwICswNDAwCi0rKysgZ25vbWUtZGlzay11dGlsaXR5LTIuMzIuMC9jb25maWd1cmUuYWMJMjAxMS0wOC0yMCAwMToyOTo0OC4wMDAwMDAwMDAgKzA0MDAKLUBAIC0xODgsOSArMTg4LDkgQEAKLSAjICoqKioqKioqKioqKioKLQotIEFDX1BBVEhfUFJPRyhTQ1JPTExLRUVQRVJfQ09ORklHLCBzY3JvbGxrZWVwZXItY29uZmlnLG5vKQotLWlmIHRlc3QgeCRTQ1JPTExLRUVQRVJfQ09ORklHID0geG5vOyB0aGVuCi0tICBBQ19NU0dfRVJST1IoQ291bGRuJ3QgZmluZCBzY3JvbGxrZWVwZXItY29uZmlnLCBwbGVhc2UgaW5zdGFsbCB0aGUgc2Nyb2xsa2VlcGVyIHBhY2thZ2UpCi0tZmkKLStkbmwgaWYgdGVzdCB4JFNDUk9MTEtFRVBFUl9DT05GSUcgPSB4bm87IHRoZW4KLStkbmwgIEFDX01TR19FUlJPUihbQ291bGRuJ3QgZmluZCBzY3JvbGxrZWVwZXItY29uZmlnLCBwbGVhc2UgaW5zdGFsbCB0aGUgc2Nyb2xsa2VlcGVyIHBhY2thZ2VdKQotK2RubCBmaQotCi0gIyAqKioqKioqKioqKioqKioqKioqKgotICMgSW50ZXJuYXRpb25hbGl6YXRpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvZml4LWRidXMtaW50ZXJmYWNlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvZml4LWRidXMtaW50ZXJmYWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJhMzk3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kaXNrLXV0aWxpdHkvZ25vbWUtZGlzay11dGlsaXR5L2ZpeC1kYnVzLWludGVyZmFjZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1JbmRleDogZ25vbWUtZGlzay11dGlsaXR5LTIuMzIuMC9zcmMvZ2R1L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ25vbWUtZGlzay11dGlsaXR5LTIuMzIuMC5vcmlnL3NyYy9nZHUvTWFrZWZpbGUuYW0JMjAxMS0wOC0yMCAwMTo1OToxNi4wMDAwMDAwMDAgKzA0MDAKLSsrKyBnbm9tZS1kaXNrLXV0aWxpdHktMi4zMi4wL3NyYy9nZHUvTWFrZWZpbGUuYW0JMjAxMS0wOC0yMCAwMjowODoxOC4wMDAwMDAwMDAgKzA0MDAKLUBAIC0xNCwyMCArMTQsMjAgQEAKLSBnZHUtbWFyc2hhbC5jOiBnZHUtbWFyc2hhbC5saXN0Ci0JZWNobyAiI2luY2x1ZGUgXCJnZHUtbWFyc2hhbC5oXCIiID4gJEAgJiYgZ2xpYi1nZW5tYXJzaGFsICQ8IC0tcHJlZml4PWdkdV9tYXJzaGFsIC0tYm9keSA+PiAkQAotCi0tdWRpc2tzLWRhZW1vbi1nbHVlLmg6IC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy54bWwgTWFrZWZpbGUuYW0KLS0JZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLWRhZW1vbi1nbHVlLmggL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLnhtbAotK3VkaXNrcy1kYWVtb24tZ2x1ZS5oOiAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLnhtbCBNYWtlZmlsZS5hbQotKwlkYnVzLWJpbmRpbmctdG9vbCAtLXByZWZpeD1kZXZraXRfZGlza3NfZGFlbW9uIC0tbW9kZT1nbGliLWNsaWVudCAtLW91dHB1dD11ZGlza3MtZGFlbW9uLWdsdWUuaCAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLnhtbAotCi0tdWRpc2tzLWRldmljZS1nbHVlLmg6IC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5EZXZpY2UueG1sIE1ha2VmaWxlLmFtCi0tCWRidXMtYmluZGluZy10b29sIC0tcHJlZml4PWRldmtpdF9kaXNrc19kYWVtb24gLS1tb2RlPWdsaWItY2xpZW50IC0tb3V0cHV0PXVkaXNrcy1kZXZpY2UtZ2x1ZS5oIC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5EZXZpY2UueG1sCi0rdWRpc2tzLWRldmljZS1nbHVlLmg6ICQoUEtHX0NPTkZJR19TWVNST09UX0RJUikvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuRGV2aWNlLnhtbCBNYWtlZmlsZS5hbQotKwlkYnVzLWJpbmRpbmctdG9vbCAtLXByZWZpeD1kZXZraXRfZGlza3NfZGFlbW9uIC0tbW9kZT1nbGliLWNsaWVudCAtLW91dHB1dD11ZGlza3MtZGV2aWNlLWdsdWUuaCAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLkRldmljZS54bWwKLQotLXVkaXNrcy1hZGFwdGVyLWdsdWUuaDogL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLkFkYXB0ZXIueG1sIE1ha2VmaWxlLmFtCi0tCWRidXMtYmluZGluZy10b29sIC0tcHJlZml4PWRldmtpdF9kaXNrc19kYWVtb24gLS1tb2RlPWdsaWItY2xpZW50IC0tb3V0cHV0PXVkaXNrcy1hZGFwdGVyLWdsdWUuaCAvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuQWRhcHRlci54bWwKLSt1ZGlza3MtYWRhcHRlci1nbHVlLmg6ICQoUEtHX0NPTkZJR19TWVNST09UX0RJUikvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuQWRhcHRlci54bWwgTWFrZWZpbGUuYW0KLSsJZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLWFkYXB0ZXItZ2x1ZS5oICQoUEtHX0NPTkZJR19TWVNST09UX0RJUikvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuQWRhcHRlci54bWwKLQotLXVkaXNrcy1leHBhbmRlci1nbHVlLmg6IC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5FeHBhbmRlci54bWwgTWFrZWZpbGUuYW0KLS0JZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLWV4cGFuZGVyLWdsdWUuaCAvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuRXhwYW5kZXIueG1sCi0rdWRpc2tzLWV4cGFuZGVyLWdsdWUuaDogJChQS0dfQ09ORklHX1NZU1JPT1RfRElSKS91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5FeHBhbmRlci54bWwgTWFrZWZpbGUuYW0KLSsJZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLWV4cGFuZGVyLWdsdWUuaCAkKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpL3Vzci9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcy9vcmcuZnJlZWRlc2t0b3AuVURpc2tzLkV4cGFuZGVyLnhtbAotCi0tdWRpc2tzLXBvcnQtZ2x1ZS5oOiAvdXNyL3NoYXJlL2RidXMtMS9pbnRlcmZhY2VzL29yZy5mcmVlZGVza3RvcC5VRGlza3MuUG9ydC54bWwgTWFrZWZpbGUuYW0KLS0JZGJ1cy1iaW5kaW5nLXRvb2wgLS1wcmVmaXg9ZGV2a2l0X2Rpc2tzX2RhZW1vbiAtLW1vZGU9Z2xpYi1jbGllbnQgLS1vdXRwdXQ9dWRpc2tzLXBvcnQtZ2x1ZS5oIC91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5Qb3J0LnhtbAotK3VkaXNrcy1wb3J0LWdsdWUuaDogJChQS0dfQ09ORklHX1NZU1JPT1RfRElSKS91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5Qb3J0LnhtbCBNYWtlZmlsZS5hbQotKwlkYnVzLWJpbmRpbmctdG9vbCAtLXByZWZpeD1kZXZraXRfZGlza3NfZGFlbW9uIC0tbW9kZT1nbGliLWNsaWVudCAtLW91dHB1dD11ZGlza3MtcG9ydC1nbHVlLmggJChQS0dfQ09ORklHX1NZU1JPT1RfRElSKS91c3Ivc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMvb3JnLmZyZWVkZXNrdG9wLlVEaXNrcy5Qb3J0LnhtbAotCi0gbGliX0xUTElCUkFSSUVTPWxpYmdkdS5sYQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHkvc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZTYzYjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eS9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQotcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAotaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gTm93IHVzdWFsbHkgcGVvcGxlIGhhdmUgZ25vbWUgaW5zdGFsbGVkCi1zbyB0aGUgYnVpbGQgc3VjY2VlZHMgYnV0IGlmIHlvdSBkb250IGhhdmUgZ25vbWUgaW5zdGFsbGVkIG9uIGJ1aWxkIGhvc3QgdGhlbgotaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBob3N0IHN5c3RlbSBhbmQgcGFja2FnZXMgdXNpbmcgZ25vbWUtZG9jLXV0aWxzIHdvbnQKLWNvbXBpbGUuCi0KLVRoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UgaW4gdGhvc2UgY2FzZXMgUEtHX0NPTkZJR19TWVNST09UX0RJUgotd2lsbCBiZSBlbXB0eQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IGdub21lLWRpc2stdXRpbGl0eS0yLjMyLjAvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbm9tZS1kaXNrLXV0aWxpdHktMi4zMi4wLm9yaWcvZ25vbWUtZG9jLXV0aWxzLm1ha2UJMjAxMC0wOS0xNSAwODoyNzo0Ni4wMDAwMDAwMDAgLTA3MDAKLSsrKyBnbm9tZS1kaXNrLXV0aWxpdHktMi4zMi4wL2dub21lLWRvYy11dGlscy5tYWtlCTIwMTEtMDktMjUgMTY6MDQ6MzAuNjkzNzk1NTkxIC0wNzAwCi1AQCAtMTMzLDEyICsxMzMsMTIgQEAKLSBfeG1sMnBvID89IGB3aGljaCB4bWwycG9gCi0gX3htbDJwb19tb2RlID0gJChpZiAkKERPQ19JRCksbWFsbGFyZCxkb2Nib29rKQotIAotLV9kYjJodG1sID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgZGIyaHRtbCBnbm9tZS1kb2MtdXRpbHNgCi0tX2RiMm9tZiAgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotLV9tYWxybmcgID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgbWFscm5nIGdub21lLWRvYy11dGlsc2AKLS1fY2h1bmtzICA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jaHVua3MueHNsCi0tX2NyZWRpdHMgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY3JlZGl0cy54c2wKLS1faWRzID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2lkcy54c2wKLStfZGIyaHRtbCA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJodG1sIGdub21lLWRvYy11dGlsc2AKLStfZGIyb21mICA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotK19tYWxybmcgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIG1hbHJuZyBnbm9tZS1kb2MtdXRpbHNgCi0rX2NodW5rcyAgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NodW5rcy54c2wKLStfY3JlZGl0cyA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY3JlZGl0cy54c2wKLStfaWRzID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9pZHMueHNsCi0gCi0gaWYgRU5BQkxFX1NLCi0gX0VOQUJMRV9TSyA9IHRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRpc2stdXRpbGl0eS9nbm9tZS1kaXNrLXV0aWxpdHlfMi4zMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eV8yLjMyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1YTU4OWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGlzay11dGlsaXR5L2dub21lLWRpc2stdXRpbGl0eV8yLjMyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGRpc2sgdXRpbGl0eSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOTExNWQxMTc5N2E1ZTZiNzQ2YjRlOWI5MDE5NDU2NCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrIGxpYm5vdGlmeSBsaWJ1bmlxdWUgdWRpc2tzIGF2YWhpLXVpIFwKLSAgICB2aXJ0dWFsL2xpYngxMSBsaWJhdGFzbWFydCBnbm9tZS1kb2MtdXRpbHMgaW50bHRvb2wtbmF0aXZlIFwKLSAgICBnbm9tZS1jb21tb24tbmF0aXZlIGxpYmdub21lLWtleXJpbmcgZGJ1cy1nbGliLW5hdGl2ZSBcCi0iCi0KLVBSID0gInI0IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjAzNjZjOGJhZWJjYTA0MDRkMTkwYjJkNzhmMzU4MmQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwM2U0NjFiNmJkYTdmNzczZjgwMThkMjVmYTMyMTNkMzA3M2Q0ZGM4M2E3NmU2YjM5ZDk2MjY1MmY0ZGU2YTk4IgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2Rpc2FibGUtc2Nyb2xsa2VlcGVyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LWRidXMtaW50ZXJmYWNlcy5wYXRjaCBcCi0gICAgZmlsZTovL3N5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItRGV2aWNlQXV0b21vdW50SGludC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItUmVxdWlyZS1saWJub3RpZnktMC42LjEucGF0Y2ggXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItLWVuYWJsZS1uYXV0aWx1cywtLWRpc2FibGUtbmF1dGlsdXMsbmF1dGlsdXMiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAiczogaGVscCA6IDpnIiAke1N9L01ha2VmaWxlLmFtCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1uYXV0aWx1cy1leHRlbnNpb24gJHtQTn0tbGlicyIKLUZJTEVTXyR7UE59LW5hdXRpbHVzLWV4dGVuc2lvbiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyouc28iCi1GSUxFU18ke1BOfS1saWJzICs9ICIke2xpYmRpcn0vbGliZ2R1Ki5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyouYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLy5kZWJ1ZyIKLQotUE5CTEFDS0xJU1RbZ25vbWUtZGlzay11dGlsaXR5XSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMjgyNC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1rZXlyaW5nL2dub21lLWtleXJpbmcvbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvZ25vbWUta2V5cmluZy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MGI4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1rZXlyaW5nL2dub21lLWtleXJpbmcvbXVzbC5wYXRjaApAQCAtMCwwICsxLDE3IEBACitpbmNsdWRlIHN5cy9zZWxlY3QuaCBmb3IgRkRfKiBtYWNyb3MKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogZ25vbWUta2V5cmluZy0yLjMyLjEvcGtjczExL3JwYy1sYXllci9na20tcnBjLWRhZW1vbi1zdGFuZGFsb25lLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnbm9tZS1rZXlyaW5nLTIuMzIuMS5vcmlnL3BrY3MxMS9ycGMtbGF5ZXIvZ2ttLXJwYy1kYWVtb24tc3RhbmRhbG9uZS5jCisrKysgZ25vbWUta2V5cmluZy0yLjMyLjEvcGtjczExL3JwYy1sYXllci9na20tcnBjLWRhZW1vbi1zdGFuZGFsb25lLmMKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyAKKyAjaW5jbHVkZSA8ZGxmY24uaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9nbm9tZS1rZXlyaW5nXzIuMzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvZ25vbWUta2V5cmluZ18yLjMyLjEuYmIKaW5kZXggNGFjNzVjYi4uZmQ2Y2E3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9nbm9tZS1rZXlyaW5nXzIuMzIuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1rZXlyaW5nL2dub21lLWtleXJpbmdfMi4zMi4xLmJiCkBAIC0xNSwxMSArMTUsMTUgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ25vbWUgZ3RrLWRvYyBwa2djb25maWcgZ3NldHRpbmdzCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly9lZ2ctYXNuMXgucGF0Y2giCitTUkNfVVJJICs9ICJmaWxlOi8vZWdnLWFzbjF4LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9tdXNsLnBhdGNoIFwKKyIKIAogREVQRU5EUyA9ICJndGsrIGxpYmdjcnlwdCBsaWJ0YXNuMSBsaWJ0YXNuMS1uYXRpdmUgZ2NvbmYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSBpbnRsdG9vbC1uYXRpdmUiCiBSREVQRU5EU18ke1BOfSA9ICJsaWJnbm9tZS1rZXlyaW5nIGdsaWItMi4wLXV0aWxzIgogCitMREZMQUdTICs9ICItbGdtb2R1bGUtMi4wIgorCiBFWFRSQV9PRUNPTkYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtIC0td2l0aC1wYW0tZGlyPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5JywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCiAKIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjlhOGFhNzRlMDMzNjE2NzZmMjlkNmU3MzE1NTc4NmZjIgpAQCAtNDIsNCArNDYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7QlBOfS9kZXZlbC8uZGVidWcvIFwKICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvLmRlYnVnLyIKIAotUE5CTEFDS0xJU1RbZ25vbWUta2V5cmluZ10gPz0gIlRoaXMgdmVyc2lvbiBjb25mbGljdHMgd2l0aCBnY3IgZnJvbSBvZS1jb3JlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgorIyBNYWtlIGNvbXBhdGlibGUgd2l0aCBnY3IgdmVyc2lvbiAzIG9yIG5ld2VyIGJ5IHJlbW92aW5nCisjIG9yZy5nbm9tZS5jcnlwdG8ucGdwLiosIHdoaWNoIGlzIHRoZSBwcm92aWRlciBmb3IgdGhpcyBvcHRpb25hbAorIyBmdW5jdGlvbmFsaXR5LgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAke0R9JHtkYXRhZGlyfS9HQ29uZi9nc2V0dGluZ3Mvb3JnLmdub21lLmNyeXB0by5wZ3AuY29udmVydAorCXJtICR7RH0ke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMvb3JnLmdub21lLmNyeXB0by5wZ3AuZ3NjaGVtYS54bWwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLW1lbnVzL2dub21lLW1lbnVzXzIuMzAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLW1lbnVzL2dub21lLW1lbnVzXzIuMzAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFjOWU0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1tZW51cy9nbm9tZS1tZW51c18yLjMwLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIG1lbnVzIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotUFIgPSAicjEiCi0KLURFUEVORFMgPSAicHl0aG9uIGxpYnhtbDIgZ2NvbmYgcG9wdCBndGsrIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgcGtnY29uZmlnIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjYWE2NzcyZTYzZWQ1ODcwY2Y0M2RjM2QzNTRlMDYyNCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjZkY2M1NjUwMDZkNmU4YzIwMjVhZTgzYWIxZjgyZWRmNmJkMDRkNjFjODA0YzBkYzliZjVlYTUwNjI5YzRjYWEiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotCi0gICAgIyB0aGlzIGV4cGFuZHMgdG8gbmF0aXZlLXB0aG9uIHdoaWNoIHdlIGRvbid0IHdhbnQuCi0gICAgc2VkIC1pICdzOlxAUFlUSE9OXEA6L3Vzci9iaW4vZW52IHB5dGhvbjonICR7U30vc2ltcGxlLWVkaXRvci9nbWVudS1zaW1wbGUtZWRpdG9yLmluCi0KLX0KLVBBQ0tBR0VTICs9ICIke1BOfS1weXRob24gJHtQTn0tcHl0aG9uLXN0YXRpY2RldiIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2Rlc2t0b3AtZGlyZWN0b3JpZXMvIgotRklMRVNfJHtQTn0tcHl0aG9uLXN0YXRpY2RldiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9nbWVudS5hICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dtZW51LmxhIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dtZW51LnNvICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L0dNZW51U2ltcGxlRWRpdG9yICIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWciCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzgxMDAxLwotUE5CTEFDS0xJU1RbZ25vbWUtbWVudXNdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIGJlY2F1c2Ugb2YgcHl0aG9uICsgY29uZmxpY3RzIHdpdGggZ25vbWUtbWVudTMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC8wMDAxLUFkZC1nbm9tZS1kb2MtdXRpbHMubWFrZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsLzAwMDEtQWRkLWdub21lLWRvYy11dGlscy5tYWtlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGNjY2I5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsLzAwMDEtQWRkLWdub21lLWRvYy11dGlscy5tYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMwICswLDAgQEAKLUZyb20gNzM0NTczMGFjODgyZWU1YTQ5MzI1NGU1Y2Y5MTYyYzk2YzY0OGVmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNyBNYXkgMjAxNiAxNDo0MDozMyArMDMwMAotU3ViamVjdDogW1BBVENIXSBBZGQgZ25vbWUtZG9jLXV0aWxzLm1ha2UKLQotU2luY2UgdGhlIHNvdXJjZXMgYXJlIHRha2VuIGZyb20gZ2l0LCB0aGUgZmlsZSBpcyBhYnNlbnQKLShhbmQgaXMgaW5zdGFsbGVkIGJ5IHRvb2xzIGZyb20gZ25vbWUtZG9jLXV0aWxzIHdoaWNoCi1hcmUgbm8gbG9uZ2VyIHByb3ZpZGVkKS4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBnbm9tZS1kb2MtdXRpbHMubWFrZSB8IDcwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNzA2IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ25vbWUtZG9jLXV0aWxzLm1ha2UKLQotZGlmZiAtLWdpdCBhL2dub21lLWRvYy11dGlscy5tYWtlIGIvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iMmUwZmExCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nbm9tZS1kb2MtdXRpbHMubWFrZQotQEAgLTAsMCArMSw3MDYgQEAKLSsjIGdub21lLWRvYy11dGlscy5tYWtlIC0gbWFrZSBtYWdpYyBmb3IgYnVpbGRpbmcgZG9jdW1lbnRhdGlvbgotKyMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDUgU2hhdW4gTWNDYW5jZSA8c2hhdW5tQGdub21lLm9yZz4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyMKLSsjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKLSsjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKLSsjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjIEBAIEdlbmVyYXRpbmcgSGVhZGVyIEZpbGVzCi0rCi0rIyMgQCBET0NfSF9GSUxFCi0rIyMgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciBmaWxlIHRvIGdlbmVyYXRlCi0rRE9DX0hfRklMRSA/PQotKwotKyMjIEAgRE9DX0hfRE9DUwotKyMjIFRoZSBpbnB1dCBEb2NCb29rIGZpbGVzIGZvciBnZW5lcmF0aW5nIHRoZSBoZWFkZXIgZmlsZQotK0RPQ19IX0RPQ1MgPz0KLSsKLSskKERPQ19IX0ZJTEUpOiAkKERPQ19IX0RPQ1MpOwotKwlAcm0gLWYgJEAudG1wOyB0b3VjaCAkQC50bXA7Ci0rCWVjaG8gJ2NvbnN0IGdjaGFyKiBkb2N1bWVudGF0aW9uX2NyZWRpdHNbXSA9IHsnID4+ICRALnRtcAotKwlsaXN0PSckKERPQ19IX0RPQ1MpJzsgZm9yIGRvYyBpbiAkJGxpc3Q7IGRvIFwKLSsJICB4bWxwYXRoPSJgZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOiQoc3JjZGlyKS9gZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgIjsgXAotKwkgIGlmICEgdGVzdCAtZiAiJCRkb2MiOyB0aGVuIGRvYz0iJChzcmNkaXIpLyQkZG9jIjsgZmk7IFwKLSsJICB4c2x0cHJvYyAtbm9uZXQgLS1wYXRoICIkJHhtbHBhdGgiICQoX2NyZWRpdHMpICQkZG9jOyBcCi0rCWRvbmUgfCBzb3J0IHwgdW5pcSBcCi0rCSAgfCBhd2sgJ0JFR0lOe3M9IiJ9e249c3BsaXQoJCQwLHcsIjwiKTtpZihzIT0iIiYmcyE9c3Vic3RyKHdbMV0sMSxsZW5ndGgod1sxXSktMSkpe3ByaW50IHN9O2lmKG4+MSl7cHJpbnQgJCQwO3M9IiJ9ZWxzZXtzPSQkMH19O0VORHtpZihzIT0iIil7cHJpbnQgc319JyBcCi0rCSAgfCBzZWQgLWUgJ3MvXFwvXFxcXC8nIC1lICdzLyIvXFwiLycgLWUgJ3MvXCguKlwpL1x0IlwxIiwvJyA+PiAkQC50bXAKLSsJZWNobyAnCU5VTEwnID4+ICRALnRtcAotKwllY2hvICd9OycgPj4gJEAudG1wCi0rCWVjaG8gPj4gJEAudG1wCi0rCWxpc3Q9JyQoRE9DX0hfRE9DUyknOyBmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIHhtbHBhdGg9ImBlY2hvICQkZG9jIHwgc2VkIC1lICdzL15cKC4qXC9cKS4qL1wxLycgLWUgJy9cLy8hcy8uKi8vJ2A6JChzcmNkaXIpL2BlY2hvICQkZG9jIHwgc2VkIC1lICdzL15cKC4qXC9cKS4qL1wxLycgLWUgJy9cLy8hcy8uKi8vJ2AiOyBcCi0rCSAgaWYgISB0ZXN0IC1mICIkJGRvYyI7IHRoZW4gZG9jPSIkKHNyY2RpcikvJCRkb2MiOyBmaTsgXAotKwkgIGRvY2lkPWBlY2hvICIkJGRvYyIgfCBzZWQgLWUgJ3MvLipcL1woW14vXSpcKVwueG1sL1wxLycgXAotKwkgICAgfCBzZWQgLWUgJ3MvW15hLXpBLVpfXS9fL2cnIHwgdHIgJ2EteicgJ0EtWidgOyBcCi0rCSAgZWNobyAkJHhtbHBhdGg7IFwKLSsJICBpZHM9YHhzbHRwcm9jIC1ub25ldCAtLXhpbmNsdWRlIC0tcGF0aCAiJCR4bWxwYXRoIiAkKF9pZHMpICQkZG9jYDsgXAotKwkgIGZvciBpZCBpbiAkJGlkczsgZG8gXAotKwkgICAgZWNobyAnI2RlZmluZSBIRUxQXydgZWNobyAkJGRvY2lkYCdfJ2BlY2hvICQkaWQgXAotKwkgICAgICB8IHNlZCAtZSAncy9bXmEtekEtWl9dL18vZycgfCB0ciAnYS16JyAnQS1aJ2AnICInJCRpZCciJyA+PiAkQC50bXA7IFwKLSsJICBkb25lOyBcCi0rCSAgZWNobyA+PiAkQC50bXA7IFwKLSsJZG9uZTsKLSsJY3AgJEAudG1wICRAICYmIHJtIC1mICRALnRtcAotKwotK2Rpc3QtY2hlY2stZ2R1OgotK2lmICFIQVZFX0dOT01FX0RPQ19VVElMUwotKwlAZWNobyAiKioqIEdOT01FIERvYyBVdGlscyBtdXN0IGJlIGluc3RhbGxlZCBpbiBvcmRlciB0byBtYWtlIGRpc3QiCi0rCUBmYWxzZQotK2VuZGlmCi0rCi0rLlBIT05ZOiBkaXN0LWRvYy1oZWFkZXIKLStkaXN0LWRvYy1oZWFkZXI6ICQoRE9DX0hfRklMRSkKLSsJQGlmIHRlc3QgLWYgIiQoRE9DX0hfRklMRSkiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAotKwllY2hvICIkKElOU1RBTExfREFUQSkgJCR7ZH0kKERPQ19IX0ZJTEUpICQoZGlzdGRpcikvJChET0NfSF9GSUxFKSI7IFwKLSsJJChJTlNUQUxMX0RBVEEpICIkJHtkfSQoRE9DX0hfRklMRSkiICIkKGRpc3RkaXIpLyQoRE9DX0hfRklMRSkiOwotKwotK2RvYy1kaXN0LWhvb2s6IGRpc3QtY2hlY2stZ2R1ICQoaWYgJChET0NfSF9GSUxFKSxkaXN0LWRvYy1oZWFkZXIpCi0rCi0rLlBIT05ZOiBjbGVhbi1kb2MtaGVhZGVyCi0rX2NsZWFuX2RvY19oZWFkZXIgPSAkKGlmICQoRE9DX0hfRklMRSksY2xlYW4tZG9jLWhlYWRlcikKLStjbGVhbi1sb2NhbDogJChfY2xlYW5fZG9jX2hlYWRlcikKLStkaXN0Y2xlYW4tbG9jYWw6ICQoX2NsZWFuX2RvY19oZWFkZXIpCi0rbW9zdGx5Y2xlYW4tbG9jYWw6ICQoX2NsZWFuX2RvY19oZWFkZXIpCi0rbWFpbnRhaW5lci1jbGVhbi1sb2NhbDogJChfY2xlYW5fZG9jX2hlYWRlcikKLStjbGVhbi1kb2MtaGVhZGVyOgotKwlybSAtZiAkKERPQ19IX0ZJTEUpCi0rCi0rYWxsOiAkKERPQ19IX0ZJTEUpCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBAQCBHZW5lcmF0aW5nIERvY3VtZW50YXRpb24gRmlsZXMKLSsKLSsjIyBAIERPQ19NT0RVTEUKLSsjIyBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgYnVpbHQKLStET0NfTU9EVUxFID89Ci0rCi0rIyMgQCBET0NfSUQKLSsjIyBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgTWFsbGFyZCBkb2N1bWVudAotK0RPQ19JRCA/PQotKwotKyMjIEAgRE9DX1BBR0VTCi0rIyMgUGFnZSBmaWxlcyBpbiBhIE1hbGxhcmQgZG9jdW1lbnQKLStET0NfUEFHRVMgPz0KLSsKLSsjIyBAIERPQ19FTlRJVElFUwotKyMjIEZpbGVzIGluY2x1ZGVkIHdpdGggYSBTWVNURU0gZW50aXR5Ci0rRE9DX0VOVElUSUVTID89Ci0rCi0rIyMgQCBET0NfSU5DTFVERVMKLSsjIyBGaWxlcyBpbmNsdWRlZCB3aXRoIFhJbmNsdWRlCi0rRE9DX0lOQ0xVREVTID89Ci0rCi0rIyMgQCBET0NfRklHVVJFUwotKyMjIEZpZ3VyZXMgYW5kIG90aGVyIGV4dGVybmFsIGRhdGEKLStET0NfRklHVVJFUyA/PQotKwotKyMjIEAgRE9DX0ZPUk1BVFMKLSsjIyBUaGUgZGVmYXVsdCBmb3JtYXRzIHRvIGJlIGJ1aWx0IGFuZCBpbnN0YWxsZWQKLStET0NfRk9STUFUUyA/PSBkb2Nib29rCi0rX0RPQ19SRUFMX0ZPUk1BVFMgPSAkKGlmICQoRE9DX1VTRVJfRk9STUFUUyksJChET0NfVVNFUl9GT1JNQVRTKSwkKERPQ19GT1JNQVRTKSkKLSsKLSsjIyBAIERPQ19MSU5HVUFTCi0rIyMgVGhlIGxhbmd1YWdlcyB0aGlzIGRvY3VtZW50IGlzIHRyYW5zbGF0ZWQgaW50bwotK0RPQ19MSU5HVUFTID89Ci0rX0RPQ19SRUFMX0xJTkdVQVMgPSAkKGlmICQoZmlsdGVyIGVudmlyb25tZW50LCQob3JpZ2luIExJTkdVQVMpKSwJCVwKLSsJJChmaWx0ZXIgJChMSU5HVUFTKSwkKERPQ19MSU5HVUFTKSksCQkJCQlcCi0rCSQoRE9DX0xJTkdVQVMpKQotKwotK19ET0NfQUJTX1NSQ0RJUiA9IEBhYnNfc3JjZGlyQAotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgVmFyaWFibGVzIGZvciBCb290c3RyYXBwaW5nCi0rCi0rX3htbDJwbyA/PSBgd2hpY2ggeG1sMnBvYAotK194bWwycG9fbW9kZSA9ICQoaWYgJChET0NfSUQpLG1hbGxhcmQsZG9jYm9vaykKLSsKLStfZGIyaHRtbCA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJodG1sIGdub21lLWRvYy11dGlsc2AKLStfZGIyb21mICA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotK19jaHVua3MgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jaHVua3MueHNsCi0rX2NyZWRpdHMgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NyZWRpdHMueHNsCi0rX2lkcyA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JChzaGVsbCAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlscykvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2lkcy54c2wKLSsKLStpZiBFTkFCTEVfU0sKLStfRU5BQkxFX1NLID0gdHJ1ZQotK19za3BrZ2RhdGFkaXIgPz0gYHNjcm9sbGtlZXBlci1jb25maWcgLS1wa2dkYXRhZGlyYAotK19za2xvY2Fsc3RhdGVkaXIgPz0gYHNjcm9sbGtlZXBlci1jb25maWcgLS1wa2dsb2NhbHN0YXRlZGlyYAotK19za2NvbnRlbnRzbGlzdCA/PSAkKF9za3BrZ2RhdGFkaXIpL1RlbXBsYXRlcy9DL3Njcm9sbGtlZXBlcl9jbC54bWwKLStlbmRpZgotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgU3VwcG9ydCBmb3IgYXV0b21ha2Ugc2lsZW50LXJ1bGVzCi0rR0RVX1ZfWE1MMlBPPSQoR0RVX192X1hNTDJQT18kKFYpKQotK0dEVV9fdl9YTUwyUE9fPSQoR0RVX192X1hNTDJQT18kKEFNX0RFRkFVTFRfVkVSQk9TSVRZKSkKLStHRFVfX3ZfWE1MMlBPXzA9QGVjaG8gIiAgWE1MMlBPIiAkQDsKLSsKLStHRFVfVl9NU0dGTVQ9JChHRFVfX3ZfTVNHRk1UXyQoVikpCi0rR0RVX192X01TR0ZNVF89JChHRFVfX3ZfTVNHRk1UXyQoQU1fREVGQVVMVF9WRVJCT1NJVFkpKQotK0dEVV9fdl9NU0dGTVRfMD1AZWNobyAiICBNU0dGTVQiICRAOwotKwotK0dEVV9WX0RCMk9NRj0kKEdEVV9fdl9EQjJPTUZfJChWKSkKLStHRFVfX3ZfREIyT01GXz0kKEdEVV9fdl9EQjJPTUZfJChBTV9ERUZBVUxUX1ZFUkJPU0lUWSkpCi0rR0RVX192X0RCMk9NRl8wPUBlY2hvICIgIERCMk9NRiIgJEA7Ci0rCi0rR0RVX1ZfREIySFRNPSQoR0RVX192X0RCMkhUTV8kKFYpKQotK0dEVV9fdl9EQjJIVE1fPSQoR0RVX192X0RCMkhUTV8kKEFNX0RFRkFVTFRfVkVSQk9TSVRZKSkKLStHRFVfX3ZfREIySFRNXzA9QGVjaG8gIiAgREIySFRNIiAkQDsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjIEBAIFJ1bGVzIGZvciBPTUYgRmlsZXMKLSsKLStkYjJvbWZfYXJncyA9CQkJCQkJCQkJXAotKwktLXN0cmluZ3BhcmFtIGRiMm9tZi5iYXNlbmFtZSAkKERPQ19NT0RVTEUpCQkJCVwKLSsJLS1zdHJpbmdwYXJhbSBkYjJvbWYuZm9ybWF0ICQoMykJCQkJCVwKLSsJLS1zdHJpbmdwYXJhbSBkYjJvbWYuZHRkCQkJCQkJXAotKwkkKHNoZWxsIHhtbGxpbnQgLS1mb3JtYXQgJCgyKSB8IGdyZXAgLWggUFVCTElDIHwgaGVhZCAtbiAxIAkJXAotKwkJfCBzZWQgLWUgJ3MvLipQVUJMSUMgXChcIlteXCJdKlwiXCkuKi9cMS8nKQkJCVwKLSsJLS1zdHJpbmdwYXJhbSBkYjJvbWYubGFuZyAkKG5vdGRpciAkKHBhdHN1YnN0ICUvJChub3RkaXIgJCgyKSksJSwkKDIpKSkJXAotKwktLXN0cmluZ3BhcmFtIGRiMm9tZi5vbWZfZGlyICIkKE9NRl9ESVIpIgkJCQlcCi0rCS0tc3RyaW5ncGFyYW0gZGIyb21mLmhlbHBfZGlyICIkKEhFTFBfRElSKSIJCQkJXAotKwktLXN0cmluZ3BhcmFtIGRiMm9tZi5vbWZfaW4gIiQoX0RPQ19PTUZfSU4pIgkJCQlcCi0rCSQoaWYgJChfRU5BQkxFX1NLKSwJCQkJCQkJXAotKwkgIC0tc3RyaW5ncGFyYW0gZGIyb21mLnNjcm9sbGtlZXBlcl9jbCAiJChfc2tjb250ZW50c2xpc3QpIikJCVwKLSsJJChfZGIyb21mKSAkKDIpCi0rCi0rIyMgQCBfRE9DX09NRl9JTgotKyMjIFRoZSBPTUYgaW5wdXQgZmlsZQotK19ET0NfT01GX0lOID0gJChpZiAkKERPQ19NT0RVTEUpLCQod2lsZGNhcmQgJChfRE9DX0FCU19TUkNESVIpLyQoRE9DX01PRFVMRSkub21mLmluKSkKLSsKLSsjIyBAIF9ET0NfT01GX0RCCi0rIyMgVGhlIE9NRiBmaWxlcyBmb3IgRG9jQm9vayBvdXRwdXQKLStfRE9DX09NRl9EQiA9ICQoaWYgJChfRE9DX09NRl9JTiksCQkJCQkJXAotKwkkKGZvcmVhY2ggbGMsQyAkKF9ET0NfUkVBTF9MSU5HVUFTKSwkKERPQ19NT0RVTEUpLSQobGMpLm9tZikpCi0rCi0rJChfRE9DX09NRl9EQikgOiAkKF9ET0NfT01GX0lOKQotKyQoX0RPQ19PTUZfREIpIDogJChET0NfTU9EVUxFKS0lLm9tZiA6ICUvJChET0NfTU9EVUxFKS54bWwKLSsJQHRlc3QgIngkKF9FTkFCTEVfU0spIiAhPSAieHRydWUiIC1vIC1mICIkKF9za2NvbnRlbnRzbGlzdCkiIHx8IHsJXAotKwkgIGVjaG8gIlRoZSBmaWxlICckKF9za2NvbnRlbnRzbGlzdCknIGRvZXMgbm90IGV4aXN0LiIgPiYyOwkJXAotKwkgIGVjaG8gIlBsZWFzZSBjaGVjayB5b3VyIFNjcm9sbEtlZXBlciBpbnN0YWxsYXRpb24uIiA+JjI7CQlcCi0rCSAgZXhpdCAxOyB9Ci0rCSQoR0RVX1ZfREIyT01GKXhzbHRwcm9jIC1ub25ldCAtbyAkQCAkKGNhbGwgZGIyb21mX2FyZ3MsJEAsJDwsJ2RvY2Jvb2snKSB8fCB7IHJtIC1mICIkQCI7IGV4aXQgMTsgfQotKwotKyMjIEAgX0RPQ19PTUZfSFRNTAotKyMjIFRoZSBPTUYgZmlsZXMgZm9yIEhUTUwgb3V0cHV0Ci0rX0RPQ19PTUZfSFRNTCA9ICQoaWYgJChfRE9DX09NRl9JTiksCQkJCQkJXAotKwkkKGZvcmVhY2ggbGMsQyAkKF9ET0NfUkVBTF9MSU5HVUFTKSwkKERPQ19NT0RVTEUpLWh0bWwtJChsYykub21mKSkKLSsKLSskKF9ET0NfT01GX0hUTUwpIDogJChfRE9DX09NRl9JTikKLSskKF9ET0NfT01GX0hUTUwpIDogJChET0NfTU9EVUxFKS1odG1sLSUub21mIDogJS8kKERPQ19NT0RVTEUpLnhtbAotK2lmIEVOQUJMRV9TSwotKwlAdGVzdCAieCQoX0VOQUJMRV9TSykiICE9ICJ4dHJ1ZSIgLW8gLWYgIiQoX3NrY29udGVudHNsaXN0KSIgfHwgewlcCi0rCSAgZWNobyAiVGhlIGZpbGUgJyQoX3NrY29udGVudHNsaXN0KScgZG9lcyBub3QgZXhpc3QiID4mMjsJCVwKLSsJICBlY2hvICJQbGVhc2UgY2hlY2sgeW91ciBTY3JvbGxLZWVwZXIgaW5zdGFsbGF0aW9uLiIgPiYyOwkJXAotKwkgIGV4aXQgMTsgfQotK2VuZGlmCi0rCSQoR0RVX1ZfREIyT01GKXhzbHRwcm9jIC1ub25ldCAtbyAkQCAkKGNhbGwgZGIyb21mX2FyZ3MsJEAsJDwsJ3hodG1sJykgfHwgeyBybSAtZiAiJEAiOyBleGl0IDE7IH0KLSsKLSsjIyBAIF9ET0NfT01GX0FMTAotKyMjIEFsbCBPTUYgb3V0cHV0IGZpbGVzIHRvIGJlIGJ1aWx0Ci0rIyBGSVhNRQotK19ET0NfT01GX0FMTCA9CQkJCQkJCQkJXAotKwkkKGlmICQoZmlsdGVyIGRvY2Jvb2ssJChfRE9DX1JFQUxfRk9STUFUUykpLCQoX0RPQ19PTUZfREIpKQkJXAotKwkkKGlmICQoZmlsdGVyIGh0bWwgSFRNTCwkKF9ET0NfUkVBTF9GT1JNQVRTKSksJChfRE9DX09NRl9IVE1MKSkKLSsKLSsuUEhPTlk6IG9tZgotK29tZjogJChfRE9DX09NRl9BTEwpCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBAQCBDIExvY2FsZSBEb2N1bWVudHMKLSsKLSsjIyBAIF9ET0NfQ19NT0RVTEUKLSsjIyBUaGUgdG9wLWxldmVsIGRvY3VtZW50YXRpb24gZmlsZSBpbiB0aGUgQyBsb2NhbGUKLStfRE9DX0NfTU9EVUxFID0gJChpZiAkKERPQ19NT0RVTEUpLEMvJChET0NfTU9EVUxFKS54bWwpCi0rCi0rIyMgQCBfRE9DX0NfUEFHRVMKLSsjIyBQYWdlIGZpbGVzIGluIGEgTWFsbGFyZCBkb2N1bWVudCBpbiB0aGUgQyBsb2NhbGUKLStfRE9DX0NfUEFHRVMgPSAkKGZvcmVhY2ggcGFnZSwkKERPQ19QQUdFUyksQy8kKHBhZ2UpKQotKwotKyMjIEAgX0RPQ19DX0VOVElUSUVTCi0rIyMgRmlsZXMgaW5jbHVkZWQgd2l0aCBhIFNZU1RFTSBlbnRpdHkgaW4gdGhlIEMgbG9jYWxlCi0rX0RPQ19DX0VOVElUSUVTID0gJChmb3JlYWNoIGVudCwkKERPQ19FTlRJVElFUyksQy8kKGVudCkpCi0rCi0rIyMgQCBfRE9DX0NfWElOQ0xVREVTCi0rIyMgRmlsZXMgaW5jbHVkZWQgd2l0aCBYSW5jbHVkZSBpbiB0aGUgQyBsb2NhbGUKLStfRE9DX0NfSU5DTFVERVMgPSAkKGZvcmVhY2ggaW5jLCQoRE9DX0lOQ0xVREVTKSxDLyQoaW5jKSkKLSsKLSsjIyBAIF9ET0NfQ19ET0NTCi0rIyMgQWxsIGRvY3VtZW50YXRpb24gZmlsZXMgaW4gdGhlIEMgbG9jYWxlCi0rX0RPQ19DX0RPQ1MgPQkJCQkJCQkJXAotKwkkKF9ET0NfQ19FTlRJVElFUykJJChfRE9DX0NfSU5DTFVERVMpCQkJXAotKwkkKF9ET0NfQ19QQUdFUykJCSQoX0RPQ19DX01PRFVMRSkKLSsKLSsjIyBAIF9ET0NfQ19ET0NTX05PRU5UCi0rIyMgQWxsIGRvY3VtZW50YXRpb24gZmlsZXMgaW4gdGhlIEMgbG9jYWxlLAotKyMjIGV4Y2VwdCBmaWxlcyBpbmNsdWRlZCB3aXRoIGEgU1lTVEVNIGVudGl0eQotK19ET0NfQ19ET0NTX05PRU5UID0JCQkJCQkJXAotKwkkKF9ET0NfQ19NT0RVTEUpCSQoX0RPQ19DX0lOQ0xVREVTKQkJCVwKLSsJJChfRE9DX0NfUEFHRVMpCi0rCi0rIyMgQCBfRE9DX0NfRklHVVJFUwotKyMjIEFsbCBmaWd1cmVzIGFuZCBvdGhlciBleHRlcm5hbCBkYXRhIGluIHRoZSBDIGxvY2FsZQotK19ET0NfQ19GSUdVUkVTID0gJChpZiAkKERPQ19GSUdVUkVTKSwJCQkJCVwKLSsJJChmb3JlYWNoIGZpZywkKERPQ19GSUdVUkVTKSxDLyQoZmlnKSksCQkJCVwKLSsJJChwYXRzdWJzdCAkKHNyY2RpcikvJSwlLCQod2lsZGNhcmQgJChzcmNkaXIpL0MvZmlndXJlcy8qLnBuZykpKQotKwotKyMjIEAgX0RPQ19DX0hUTUwKLSsjIyBBbGwgSFRNTCBkb2N1bWVudGF0aW9uIGluIHRoZSBDIGxvY2FsZQotKyMgRklYTUU6IHByb2JhYmx5IGhhdmUgdG8gc2hlbGwgZXNjYXBlIHRvIGRldGVybWluZSB0aGUgZmlsZSBuYW1lcwotK19ET0NfQ19IVE1MID0gJChmb3JlYWNoIGYsCQkJCQkJXAotKwkkKHNoZWxsIHhzbHRwcm9jIC1ub25ldCAtLXhpbmNsdWRlIAkJCQkJXAotKwkgIC0tc3RyaW5ncGFyYW0gZGIuY2h1bmsuYmFzZW5hbWUgIiQoRE9DX01PRFVMRSkiCQlcCi0rCSAgJChfY2h1bmtzKSAiQy8kKERPQ19NT0RVTEUpLnhtbCIpLAkJCQlcCi0rCUMvJChmKS54aHRtbCkKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgQEAgT3RoZXIgTG9jYWxlIERvY3VtZW50YXRpb24KLSsKLSsjIyBAIF9ET0NfUE9GSUxFUwotKyMjIFRoZSAucG8gZmlsZXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIGRvY3VtZW50Ci0rX0RPQ19QT0ZJTEVTID0gJChpZiAkKERPQ19NT0RVTEUpJChET0NfSUQpLAkJCQkJXAotKwkkKGZvcmVhY2ggbGMsJChfRE9DX1JFQUxfTElOR1VBUyksJChsYykvJChsYykucG8pKQotKwotKy5QSE9OWTogcG8KLStwbzogJChfRE9DX1BPRklMRVMpCi0rCi0rIyMgQCBfRE9DX01PRklMRVMKLSsjIyBUaGUgLm1vIGZpbGVzIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoZSBkb2N1bWVudAotK19ET0NfTU9GSUxFUyA9ICQocGF0c3Vic3QgJS5wbywlLm1vLCQoX0RPQ19QT0ZJTEVTKSkKLSsKLSsuUEhPTlk6IG1vCi0rbW86ICQoX0RPQ19NT0ZJTEVTKQotKwotKyMjIEAgX0RPQ19MQ19NT0RVTEVTCi0rIyMgVGhlIHRvcC1sZXZlbCBkb2N1bWVudGF0aW9uIGZpbGVzIGluIGFsbCBvdGhlciBsb2NhbGVzCi0rX0RPQ19MQ19NT0RVTEVTID0gJChpZiAkKERPQ19NT0RVTEUpLAkJCQkJCVwKLSsJJChmb3JlYWNoIGxjLCQoX0RPQ19SRUFMX0xJTkdVQVMpLCQobGMpLyQoRE9DX01PRFVMRSkueG1sKSkKLSsKLSsjIyBAIF9ET0NfTENfUEFHRVMKLSsjIyBQYWdlIGZpbGVzIGluIGEgTWFsbGFyZCBkb2N1bWVudCBpbiBhbGwgb3RoZXIgbG9jYWxlcwotK19ET0NfTENfUEFHRVMgPQkJCQkJCQkJCVwKLSsJJChmb3JlYWNoIGxjLCQoX0RPQ19SRUFMX0xJTkdVQVMpLCQoZm9yZWFjaCBwYWdlLCQoX0RPQ19DX1BBR0VTKSwJXAotKwkJJChsYykvJChub3RkaXIgJChwYWdlKSkgKSkKLSsKLSsjIyBAIF9ET0NfTENfWElOQ0xVREVTCi0rIyMgRmlsZXMgaW5jbHVkZWQgd2l0aCBYSW5jbHVkZSBpbiBhbGwgb3RoZXIgbG9jYWxlcwotK19ET0NfTENfSU5DTFVERVMgPQkJCQkJCQkJXAotKwkkKGZvcmVhY2ggbGMsJChfRE9DX1JFQUxfTElOR1VBUyksJChmb3JlYWNoIGluYywkKF9ET0NfQ19JTkNMVURFUyksCVwKLSsJCSQobGMpLyQobm90ZGlyICQoaW5jKSkgKSkKLSsKLSsjIyBAIF9ET0NfTENfSFRNTAotKyMjIEFsbCBIVE1MIGRvY3VtZW50YXRpb24gaW4gYWxsIG90aGVyIGxvY2FsZXMKLSsjIEZJWE1FOiBwcm9iYWJseSBoYXZlIHRvIHNoZWxsIGVzY2FwZSB0byBkZXRlcm1pbmUgdGhlIGZpbGUgbmFtZXMKLStfRE9DX0xDX0hUTUwgPQkJCQkJCQkJCVwKLSsJJChmb3JlYWNoIGxjLCQoX0RPQ19SRUFMX0xJTkdVQVMpLCQoZm9yZWFjaCBkb2MsJChfRE9DX0NfSFRNTCksCQlcCi0rCQkkKGxjKS8kKG5vdGRpciAkKGRvYykpICkpCi0rCi0rIyMgQCBfRE9DX0xDX0RPQ1MKLSsjIyBBbGwgZG9jdW1lbnRhdGlvbiBmaWxlcyBpbiBhbGwgb3RoZXIgbG9jYWxlcwotK19ET0NfTENfRE9DUyA9CQkJCQkJCQkJXAotKwkkKF9ET0NfTENfTU9EVUxFUykJJChfRE9DX0xDX0lOQ0xVREVTKQkkKF9ET0NfTENfUEFHRVMpCVwKLSsJJChpZiAkKGZpbHRlciBodG1sIEhUTUwsJChfRE9DX1JFQUxfRk9STUFUUykpLCQoX0RPQ19MQ19IVE1MKSkKLSsKLSsjIyBAIF9ET0NfTENfRklHVVJFUwotKyMjIEFsbCBmaWd1cmVzIGFuZCBvdGhlciBleHRlcm5hbCBkYXRhIGluIGFsbCBvdGhlciBsb2NhbGVzCi0rX0RPQ19MQ19GSUdVUkVTID0gJChmb3JlYWNoIGxjLCQoX0RPQ19SRUFMX0xJTkdVQVMpLAkJCQlcCi0rCSQocGF0c3Vic3QgQy8lLCQobGMpLyUsJChfRE9DX0NfRklHVVJFUykpICkKLSsKLStfRE9DX1NSQ19GSUdVUkVTID0JCQkJCQkJCVwKLSsJJChmb3JlYWNoIGZpZywkKF9ET0NfQ19GSUdVUkVTKSwgJChmb3JlYWNoIGxjLEMgJChfRE9DX1JFQUxfTElOR1VBUyksCVwKLSsJCSQod2lsZGNhcmQgJChzcmNkaXIpLyQobGMpLyQocGF0c3Vic3QgQy8lLCUsJChmaWcpKSkgKSkKLSsKLSskKF9ET0NfUE9GSUxFUyk6Ci0rCUBpZiAhIHRlc3QgLWQgJChkaXIgJEApOyB0aGVuIFwKLSsJICBlY2hvICJta2RpciAkKGRpciAkQCkiOyBcCi0rCSAgbWtkaXIgIiQoZGlyICRAKSI7IFwKLSsJZmkKLSsJQGlmIHRlc3QgISAtZiAkQCAtYSAtZiAkKHNyY2RpcikvJEA7IHRoZW4gXAotKwkgIGVjaG8gImNwICQoc3JjZGlyKS8kQCAkQCI7IFwKLSsJICBjcCAiJChzcmNkaXIpLyRAIiAiJEAiOyBcCi0rCWZpOwotKwlAZG9jcz07IFwKLSsJbGlzdD0nJChfRE9DX0NfRE9DU19OT0VOVCknOyBmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGRvY3M9IiQkZG9jcyAkKF9ET0NfQUJTX1NSQ0RJUikvJCRkb2MiOyBcCi0rCWRvbmU7IFwKLSsJaWYgISB0ZXN0IC1mICRAOyB0aGVuIFwKLSsJICBlY2hvICIoY2QgJChkaXIgJEApICYmIFwKLSsJICAgICQoX3htbDJwbykgLW0gJChfeG1sMnBvX21vZGUpIC1lICQkZG9jcyA+ICQobm90ZGlyICRAKS50bXAgJiYgXAotKwkgICAgY3AgJChub3RkaXIgJEApLnRtcCAkKG5vdGRpciAkQCkgJiYgcm0gLWYgJChub3RkaXIgJEApLnRtcCkiOyBcCi0rCSAgKGNkICQoZGlyICRAKSAmJiBcCi0rCSAgICAkKF94bWwycG8pIC1tICQoX3htbDJwb19tb2RlKSAtZSAkJGRvY3MgPiAkKG5vdGRpciAkQCkudG1wICYmIFwKLSsJICAgIGNwICQobm90ZGlyICRAKS50bXAgJChub3RkaXIgJEApICYmIHJtIC1mICQobm90ZGlyICRAKS50bXApOyBcCi0rCWVsc2UgXAotKwkgIGVjaG8gIihjZCAkKGRpciAkQCkgJiYgXAotKwkgICAgJChfeG1sMnBvKSAtbSAkKF94bWwycG9fbW9kZSkgLWUgLXUgJChub3RkaXIgJEApICQkZG9jcykiOyBcCi0rCSAgKGNkICQoZGlyICRAKSAmJiBcCi0rCSAgICAkKF94bWwycG8pIC1tICQoX3htbDJwb19tb2RlKSAtZSAtdSAkKG5vdGRpciAkQCkgJCRkb2NzKTsgXAotKwlmaQotKwotKyQoX0RPQ19NT0ZJTEVTKTogJS5tbzogJS5wbwotKwkkKEFNX1ZfYXQpaWYgISB0ZXN0IC1kICQoZGlyICRAKTsgdGhlbiBta2RpciAiJChkaXIgJEApIjsgZmkKLSsJJChHRFVfVl9NU0dGTVQpbXNnZm10IC1vICRAICQ8Ci0rCi0rIyBGSVhNRTogZml4IHRoZSBkZXBlbmRhbmN5Ci0rIyBGSVhNRTogaG9vayB4bWwycG8gdXAKLSskKF9ET0NfTENfRE9DUykgOiAkKF9ET0NfTU9GSUxFUykKLSskKF9ET0NfTENfRE9DUykgOiAkKF9ET0NfQ19ET0NTKQotKwkkKEFNX1ZfYXQpaWYgISB0ZXN0IC1kICQoZGlyICRAKTsgdGhlbiBta2RpciAkKGRpciAkQCk7IGZpCi0rCSQoR0RVX1ZfWE1MMlBPKWlmIFsgLWYgIkMvJChub3RkaXIgJEApIiBdOyB0aGVuIGQ9Ii4uLyI7IGVsc2UgZD0iJChfRE9DX0FCU19TUkNESVIpLyI7IGZpOyBcCi0rCW1vPSIkKGRpciAkQCkkKHBhdHN1YnN0ICUvJChub3RkaXIgJEApLCUsJEApLm1vIjsgXAotKwlpZiBbIC1mICIkJHttb30iIF07IHRoZW4gbW89Ii4uLyQke21vfSI7IGVsc2UgbW89IiQoX0RPQ19BQlNfU1JDRElSKS8kJHttb30iOyBmaTsgXAotKwkoY2QgJChkaXIgJEApICYmIFwKLSsJICAkKF94bWwycG8pIC1tICQoX3htbDJwb19tb2RlKSAtZSAtdCAiJCR7bW99IiBcCi0rCSAgICAiJCR7ZH1DLyQobm90ZGlyICRAKSIgPiAkKG5vdGRpciAkQCkudG1wICYmIFwKLSsJICAgIGNwICQobm90ZGlyICRAKS50bXAgJChub3RkaXIgJEApICYmIHJtIC1mICQobm90ZGlyICRAKS50bXApCi0rCi0rIyMgQCBfRE9DX1BPVAotKyMjIEEgcG90IGZpbGUKLStfRE9DX1BPVCA9ICQoaWYgJChET0NfTU9EVUxFKSwkKERPQ19NT0RVTEUpLnBvdCwkKGlmICQoRE9DX0lEKSwkKERPQ19JRCkucG90KSkKLSsuUEhPTlk6IHBvdAotK3BvdDogJChfRE9DX1BPVCkKLSskKF9ET0NfUE9UKTogJChfRE9DX0NfRE9DU19OT0VOVCkKLSsJJChHRFVfVl9YTUwyUE8pJChfeG1sMnBvKSAtbSAkKF94bWwycG9fbW9kZSkgLWUgLW8gJEAgJF4KLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjIEBAIEFsbCBEb2N1bWVudGF0aW9uCi0rCi0rIyMgQCBfRE9DX0hUTUxfQUxMCi0rIyMgQWxsIEhUTUwgZG9jdW1lbnRhdGlvbiwgb25seSBpZiBpdCdzIGJ1aWx0Ci0rX0RPQ19IVE1MX0FMTCA9ICQoaWYgJChmaWx0ZXIgaHRtbCBIVE1MLCQoX0RPQ19SRUFMX0ZPUk1BVFMpKSwgXAotKwkkKF9ET0NfQ19IVE1MKSAkKF9ET0NfTENfSFRNTCkpCi0rCi0rX0RPQ19IVE1MX1RPUFMgPSAkKGZvcmVhY2ggbGMsQyAkKF9ET0NfUkVBTF9MSU5HVUFTKSwkKGxjKS8kKERPQ19NT0RVTEUpLnhodG1sKQotKwotKyQoX0RPQ19IVE1MX1RPUFMpOiAkKF9ET0NfQ19ET0NTKSAkKF9ET0NfTENfRE9DUykKLSsJJChHRFVfVl9EQjJIVE0peHNsdHByb2MgLW5vbmV0IC1vICRAIC0teGluY2x1ZGUgLS1wYXJhbSBkYi5jaHVuay5jaHVua190b3AgImZhbHNlKCkiIC0tc3RyaW5ncGFyYW0gZGIuY2h1bmsuYmFzZW5hbWUgIiQoRE9DX01PRFVMRSkiIC0tc3RyaW5ncGFyYW0gZGIuY2h1bmsuZXh0ZW5zaW9uICIueGh0bWwiICQoX2RiMmh0bWwpICQocGF0c3Vic3QgJS54aHRtbCwlLnhtbCwkQCkKLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjIEFsbAotKwotK2FsbDoJCQkJCQkJXAotKwkkKF9ET0NfQ19ET0NTKQkJJChfRE9DX0xDX0RPQ1MpCQlcCi0rCSQoX0RPQ19PTUZfQUxMKQkJJChfRE9DX0RTS19BTEwpCQlcCi0rCSQoX0RPQ19IVE1MX0FMTCkJJChfRE9DX1BPRklMRVMpCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBDbGVhbgotKwotKy5QSE9OWTogY2xlYW4tZG9jLW9tZiBjbGVhbi1kb2MtZHNrIGNsZWFuLWRvYy1sYyBjbGVhbi1kb2MtZGlyCi0rCi0rY2xlYW4tZG9jLW9tZjogOyBybSAtZiAkKF9ET0NfT01GX0RCKSAkKF9ET0NfT01GX0hUTUwpCi0rY2xlYW4tZG9jLWRzazogOyBybSAtZiAkKF9ET0NfRFNLX0RCKSAkKF9ET0NfRFNLX0hUTUwpCi0rY2xlYW4tZG9jLWxjOgotKwlybSAtZiAkKF9ET0NfTENfRE9DUykKLSsJcm0gLWYgJChfRE9DX01PRklMRVMpCi0rCUBsaXN0PSckKF9ET0NfUE9GSUxFUyknOyBmb3IgcG8gaW4gJCRsaXN0OyBkbyBcCi0rCSAgaWYgISB0ZXN0ICIkJHBvIiAtZWYgIiQoc3JjZGlyKS8kJHBvIjsgdGhlbiBcCi0rCSAgICBlY2hvICJybSAtZiAkJHBvIjsgXAotKwkgICAgcm0gLWYgIiQkcG8iOyBcCi0rCSAgZmk7IFwKLSsJZG9uZQotKyMJLnhtbDIucG8ubW8gY2xlYW5pbmcgaXMgb2Jzb2xldGUgYXMgb2YgMC4xOC4xIGFuZCBjb3VsZCBiZSByZW1vdmVkIGluIDAuMjAueAotKwlAZm9yIGxjIGluIEMgJChfRE9DX1JFQUxfTElOR1VBUyk7IGRvIFwKLSsJICBpZiB0ZXN0IC1mICIkJGxjLy54bWwycG8ubW8iOyB0aGVuIFwKLSsJICAgIGVjaG8gInJtIC1mICQkbGMvLnhtbDJwby5tbyI7IFwKLSsJICAgIHJtIC1mICIkJGxjLy54bWwycG8ubW8iOyBcCi0rCSAgZmk7IFwKLSsJZG9uZQotK2NsZWFuLWRvYy1kaXI6IGNsZWFuLWRvYy1sYwotKwlAZm9yIGxjIGluIEMgJChfRE9DX1JFQUxfTElOR1VBUyk7IGRvIFwKLSsJICBmb3IgZGlyIGluIGBmaW5kICQkbGMgLWRlcHRoIC10eXBlIGRgOyBkbyBcCi0rCSAgICBpZiAhIHRlc3QgJCRkaXIgLWVmICQoc3JjZGlyKS8kJGRpcjsgdGhlbiBcCi0rCSAgICAgIGVjaG8gInJtZGlyICQkZGlyIjsgXAotKwkgICAgICBybWRpciAiJCRkaXIiOyBcCi0rCSAgIGZpOyBcCi0rCSAgZG9uZTsgXAotKwlkb25lCi0rCi0rX2NsZWFuX29tZiA9ICQoaWYgJChfRE9DX09NRl9JTiksY2xlYW4tZG9jLW9tZikKLStfY2xlYW5fZHNrID0gJChpZiAkKF9ET0NfRFNLX0lOKSxjbGVhbi1kb2MtZHNrKQotK19jbGVhbl9sYyAgPSAkKGlmICQoX0RPQ19SRUFMX0xJTkdVQVMpLGNsZWFuLWRvYy1sYykKLStfY2xlYW5fZGlyID0gJChpZiAkKERPQ19NT0RVTEUpJChET0NfSUQpLGNsZWFuLWRvYy1kaXIpCi0rCi0rY2xlYW4tbG9jYWw6CQkJCQkJXAotKwkkKF9jbGVhbl9vbWYpCQkkKF9jbGVhbl9kc2spCQlcCi0rCSQoX2NsZWFuX2xjKQkJJChfY2xlYW5fZGlyKQotK2Rpc3RjbGVhbi1sb2NhbDoJCQkJCVwKLSsJJChfY2xlYW5fb21mKQkJJChfY2xlYW5fZHNrKQkJXAotKwkkKF9jbGVhbl9sYykJCSQoX2NsZWFuX2RpcikKLSttb3N0bHljbGVhbi1sb2NhbDoJCQkJCVwKLSsJJChfY2xlYW5fb21mKQkJJChfY2xlYW5fZHNrKQkJXAotKwkkKF9jbGVhbl9sYykJCSQoX2NsZWFuX2RpcikKLSttYWludGFpbmVyLWNsZWFuLWxvY2FsOgkJCQkJXAotKwkkKF9jbGVhbl9vbWYpCQkkKF9jbGVhbl9kc2spCQlcCi0rCSQoX2NsZWFuX2xjKQkJJChfY2xlYW5fZGlyKQotKwotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgRGlzdAotKwotKy5QSE9OWTogZGlzdC1kb2MtZG9jcyBkaXN0LWRvYy1wYWdlcyBkaXN0LWRvYy1maWdzIGRpc3QtZG9jLW9tZiBkaXN0LWRvYy1kc2sKLStkb2MtZGlzdC1ob29rOiAJCQkJCQlcCi0rCSQoaWYgJChET0NfTU9EVUxFKSQoRE9DX0lEKSxkaXN0LWRvYy1kb2NzKQlcCi0rCSQoaWYgJChfRE9DX0NfRklHVVJFUyksZGlzdC1kb2MtZmlncykJCVwKLSsJJChpZiAkKF9ET0NfT01GX0lOKSxkaXN0LWRvYy1vbWYpCi0rIwkkKGlmICQoX0RPQ19EU0tfSU4pLGRpc3QtZG9jLWRzaykKLSsKLStkaXN0LWRvYy1kb2NzOiAkKF9ET0NfQ19ET0NTKSAkKF9ET0NfTENfRE9DUykgJChfRE9DX1BPRklMRVMpCi0rCUBmb3IgbGMgaW4gQyAkKF9ET0NfUkVBTF9MSU5HVUFTKTsgZG8gXAotKwkgIGVjaG8gIiAkKG1raW5zdGFsbGRpcnMpICQoZGlzdGRpcikvJCRsYyI7IFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkbGMiOyBcCi0rCWRvbmUKLSsJQGxpc3Q9JyQoX0RPQ19DX0RPQ1MpJzsgXAotKwlmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkZG9jIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKLSsJICAgIGRvY2Rpcj1gZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRkb2NkaXIiOyB0aGVuIFwKLSsJICAgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICBlY2hvICIkKElOU1RBTExfREFUQSkgJCRkJCRkb2MgJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJICAkKElOU1RBTExfREFUQSkgIiQkZCQkZG9jIiAiJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJZG9uZQotKwlAbGlzdD0nJChfRE9DX0xDX0RPQ1MpJzsgXAotKwlmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkZG9jIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKLSsJICAgIGRvY2Rpcj1gZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRkb2NkaXIiOyB0aGVuIFwKLSsJICAgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICBlY2hvICIkKElOU1RBTExfREFUQSkgJCRkJCRkb2MgJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJICAkKElOU1RBTExfREFUQSkgIiQkZCQkZG9jIiAiJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJZG9uZQotKwlAbGlzdD0nJChfRE9DX1BPRklMRVMpJzsgXAotKwlmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkZG9jIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKLSsJICAgIGRvY2Rpcj1gZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRkb2NkaXIiOyB0aGVuIFwKLSsJICAgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkZG9jZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICBlY2hvICIkKElOU1RBTExfREFUQSkgJCRkJCRkb2MgJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJICAkKElOU1RBTExfREFUQSkgIiQkZCQkZG9jIiAiJChkaXN0ZGlyKS8kJGRvYyI7IFwKLSsJZG9uZQotKwotK2Rpc3QtZG9jLWZpZ3M6ICQoX0RPQ19TUkNfRklHVVJFUykKLSsJQGxpc3Q9JyQoX0RPQ19DX0ZJR1VSRVMpICQoX0RPQ19MQ19GSUdVUkVTKSc7IFwKLSsJZm9yIGZpZyBpbiAkJGxpc3Q7IGRvIFwKLSsJICBpZiB0ZXN0IC1mICIkJGZpZyI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCi0rCSAgaWYgdGVzdCAtZiAiJCRkJCRmaWciOyB0aGVuIFwKLSsJICAgIGZpZ2Rpcj1gZWNobyAkJGZpZyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRmaWdkaXIiOyB0aGVuIFwKLSsJICAgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkKGRpc3RkaXIpLyQkZmlnZGlyIjsgXAotKwkgICAgICAkKG1raW5zdGFsbGRpcnMpICIkKGRpc3RkaXIpLyQkZmlnZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICAgIGVjaG8gIiQoSU5TVEFMTF9EQVRBKSAkJGQkJGZpZyAkKGRpc3RkaXIpLyQkZmlnIjsgXAotKwkgICAgJChJTlNUQUxMX0RBVEEpICIkJGQkJGZpZyIgIiQoZGlzdGRpcikvJCRmaWciOyBcCi0rCSAgZmk7IFwKLSsJZG9uZTsKLSsKLStkaXN0LWRvYy1vbWY6Ci0rCUBpZiB0ZXN0IC1mICIkKF9ET0NfT01GX0lOKSI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCi0rCWVjaG8gIiQoSU5TVEFMTF9EQVRBKSAkJGQkKF9ET0NfT01GX0lOKSAkKGRpc3RkaXIpLyQobm90ZGlyICQoX0RPQ19PTUZfSU4pKSI7IFwKLSsJJChJTlNUQUxMX0RBVEEpICIkJGQkKF9ET0NfT01GX0lOKSIgIiQoZGlzdGRpcikvJChub3RkaXIgJChfRE9DX09NRl9JTikpIgotKwotK2Rpc3QtZG9jLWRzazoKLSsJQGlmIHRlc3QgLWYgIiQoX0RPQ19EU0tfSU4pIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKLSsJZWNobyAiJChJTlNUQUxMX0RBVEEpICQkZCQoX0RPQ19EU0tfSU4pICQoZGlzdGRpcikvJChub3RkaXIgJChfRE9DX0RTS19JTikpIjsgXAotKwkkKElOU1RBTExfREFUQSkgIiQkZCQoX0RPQ19EU0tfSU4pIiAiJChkaXN0ZGlyKS8kKG5vdGRpciAkKF9ET0NfRFNLX0lOKSkiCi0rCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBDaGVjawotKwotKy5QSE9OWTogY2hlY2stZG9jLWRvY3MgY2hlY2stZG9jLW9tZgotK2NoZWNrOgkJCQkJCQlcCi0rCSQoaWYgJChET0NfTU9EVUxFKSxjaGVjay1kb2MtZG9jcykJCVwKLSsJJChpZiAkKERPQ19JRCksY2hlY2stZG9jLXBhZ2VzKQkJCVwKLSsJJChpZiAkKF9ET0NfT01GX0lOKSxjaGVjay1kb2Mtb21mKQotKwotK2NoZWNrLWRvYy1kb2NzOiAkKF9ET0NfQ19ET0NTKSAkKF9ET0NfTENfRE9DUykKLSsJQGZvciBsYyBpbiBDICQoX0RPQ19SRUFMX0xJTkdVQVMpOyBkbyBcCi0rCSAgaWYgdGVzdCAtZiAiJCRsYyI7IFwKLSsJICAgIHRoZW4gZD07IFwKLSsJICAgIHhtbHBhdGg9IiQkbGMiOyBcCi0rCSAgZWxzZSBcCi0rCSAgICBkPSIkKHNyY2RpcikvIjsgXAotKwkgICAgeG1scGF0aD0iJCRsYzokKHNyY2RpcikvJCRsYyI7IFwKLSsJICBmaTsgXAotKwkgIGVjaG8gInhtbGxpbnQgLS1ub291dCAtLW5vZW50IC0tcGF0aCAkJHhtbHBhdGggLS14aW5jbHVkZSAtLXBvc3R2YWxpZCAkJGQkJGxjLyQoRE9DX01PRFVMRSkueG1sIjsgXAotKwkgIHhtbGxpbnQgLS1ub291dCAtLW5vZW50IC0tcGF0aCAiJCR4bWxwYXRoIiAtLXhpbmNsdWRlIC0tcG9zdHZhbGlkICIkJGQkJGxjLyQoRE9DX01PRFVMRSkueG1sIjsgXAotKwlkb25lCi0rCi0rY2hlY2stZG9jLXBhZ2VzOiAkKF9ET0NfQ19QQUdFUykgJChfRE9DX0xDX1BBR0VTKQotKwlmb3IgbGMgaW4gQyAkKF9ET0NfUkVBTF9MSU5HVUFTKTsgZG8gXAotKwkgIGlmIHRlc3QgLWYgIiQkbGMiOyBcCi0rCSAgICB0aGVuIGQ9OyBcCi0rCSAgICB4bWxwYXRoPSIkJGxjIjsgXAotKwkgIGVsc2UgXAotKwkgICAgZD0iJChzcmNkaXIpLyI7IFwKLSsJICAgIHhtbHBhdGg9IiQkbGM6JChzcmNkaXIpLyQkbGMiOyBcCi0rCSAgZmk7IFwKLSsJICBmb3IgcGFnZSBpbiAkKERPQ19QQUdFUyk7IGRvIFwKLSsJICAgIGVjaG8gInhtbGxpbnQgLS1ub291dCAtLW5vZW50IC0tcGF0aCAkJHhtbHBhdGggLS14aW5jbHVkZSAkJGQkJGxjLyQkcGFnZSI7IFwKLSsJICAgIHhtbGxpbnQgLS1ub291dCAtLW5vZW50IC0tcGF0aCAiJCR4bWxwYXRoIiAtLXhpbmNsdWRlICIkJGQkJGxjLyQkcGFnZSI7IFwKLSsJICBkb25lOyBcCi0rCWRvbmUKLSsKLStjaGVjay1kb2Mtb21mOiAkKF9ET0NfT01GX0FMTCkKLSsJQGxpc3Q9JyQoX0RPQ19PTUZfQUxMKSc7IGZvciBvbWYgaW4gJCRsaXN0OyBkbyBcCi0rCSAgZWNobyAieG1sbGludCAtLW5vb3V0IC0teGluY2x1ZGUgLS1kdGR2YWxpZCAnaHR0cDovL3Njcm9sbGtlZXBlci5zb3VyY2Vmb3JnZS5uZXQvZHRkcy9zY3JvbGxrZWVwZXItb21mLTEuMC9zY3JvbGxrZWVwZXItb21mLmR0ZCcgJCRvbWYiOyBcCi0rCSAgeG1sbGludCAtLW5vb3V0IC0teGluY2x1ZGUgLS1kdGR2YWxpZCAnaHR0cDovL3Njcm9sbGtlZXBlci5zb3VyY2Vmb3JnZS5uZXQvZHRkcy9zY3JvbGxrZWVwZXItb21mLTEuMC9zY3JvbGxrZWVwZXItb21mLmR0ZCcgJCRvbWY7IFwKLSsJZG9uZQotKwotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgSW5zdGFsbAotKwotKy5QSE9OWTogaW5zdGFsbC1kb2MtZG9jcyBpbnN0YWxsLWRvYy1odG1sIGluc3RhbGwtZG9jLWZpZ3MgaW5zdGFsbC1kb2Mtb21mIGluc3RhbGwtZG9jLWRzawotKwotK19kb2NfaW5zdGFsbF9kaXIgPSAkKGlmICQoRE9DX0lEKSwkKERPQ19JRCksJChET0NfTU9EVUxFKSkKLSsKLStpbnN0YWxsLWRhdGEtbG9jYWw6CQkJCQlcCi0rCSQoaWYgJChET0NfTU9EVUxFKSQoRE9DX0lEKSxpbnN0YWxsLWRvYy1kb2NzKQlcCi0rCSQoaWYgJChfRE9DX0hUTUxfQUxMKSxpbnN0YWxsLWRvYy1odG1sKQkJXAotKwkkKGlmICQoX0RPQ19DX0ZJR1VSRVMpLGluc3RhbGwtZG9jLWZpZ3MpCVwKLSsJJChpZiAkKF9ET0NfT01GX0lOKSxpbnN0YWxsLWRvYy1vbWYpCi0rIwkkKGlmICQoX0RPQ19EU0tfSU4pLGluc3RhbGwtZG9jLWRzaykKLSsKLStpbnN0YWxsLWRvYy1kb2NzOgotKwlAZm9yIGxjIGluIEMgJChfRE9DX1JFQUxfTElOR1VBUyk7IGRvIFwKLSsJICBlY2hvICIkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkbGMiOyBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGxjOyBcCi0rCWRvbmUKLSsJQGxpc3Q9JyQoX0RPQ19DX0RPQ1MpJzsgZm9yIGRvYyBpbiAkJGxpc3Q7IGRvIFwKLSsJICBpZiB0ZXN0IC1mICIkJGRvYyI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCi0rCSAgZG9jZGlyPSIkJGxjLyJgZWNobyAkJGRvYyB8IHNlZCAtZSAncy9eXCguKlwvXCkuKi9cMS8nIC1lICcvXC8vIXMvLiovLydgOyBcCi0rCSAgZG9jZGlyPSIkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGRvY2RpciI7IFwKLSsJICBpZiAhIHRlc3QgLWQgIiQkZG9jZGlyIjsgdGhlbiBcCi0rCSAgICBlY2hvICIkKG1raW5zdGFsbGRpcnMpICQkZG9jZGlyIjsgXAotKwkgICAgJChta2luc3RhbGxkaXJzKSAiJCRkb2NkaXIiOyBcCi0rCSAgZmk7IFwKLSsJICBlY2hvICIkKElOU1RBTExfREFUQSkgJCRkJCRkb2MgJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRkb2MiOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpICQkZCQkZG9jICQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkZG9jOyBcCi0rCWRvbmUKLSsJQGxpc3Q9JyQoX0RPQ19MQ19ET0NTKSc7IGZvciBkb2MgaW4gJCRsaXN0OyBkbyBcCi0rCSAgaWYgdGVzdCAtZiAiJCRkb2MiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAotKwkgIGRvY2Rpcj0iJCRsYy8iYGVjaG8gJCRkb2MgfCBzZWQgLWUgJ3MvXlwoLipcL1wpLiovXDEvJyAtZSAnL1wvLyFzLy4qLy8nYDsgXAotKwkgIGRvY2Rpcj0iJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRkb2NkaXIiOyBcCi0rCSAgaWYgISB0ZXN0IC1kICIkJGRvY2RpciI7IHRoZW4gXAotKwkgICAgZWNobyAiJChta2luc3RhbGxkaXJzKSAkJGRvY2RpciI7IFwKLSsJICAgICQobWtpbnN0YWxsZGlycykgIiQkZG9jZGlyIjsgXAotKwkgIGZpOyBcCi0rCSAgZWNobyAiJChJTlNUQUxMX0RBVEEpICQkZCQkZG9jICQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkZG9jIjsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSAkJGQkJGRvYyAkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGRvYzsgXAotKwlkb25lCi0rCi0raW5zdGFsbC1kb2MtZmlnczoKLSsJQGxpc3Q9JyQocGF0c3Vic3QgQy8lLCUsJChfRE9DX0NfRklHVVJFUykpJzsgZm9yIGZpZyBpbiAkJGxpc3Q7IGRvIFwKLSsJICBmb3IgbGMgaW4gQyAkKF9ET0NfUkVBTF9MSU5HVUFTKTsgZG8gXAotKwkgICAgZmlnc3ltbGluaz1mYWxzZTsgXAotKwkgICAgaWYgdGVzdCAtZiAiJCRsYy8kJGZpZyI7IHRoZW4gXAotKwkgICAgICBmaWdmaWxlPSIkJGxjLyQkZmlnIjsgXAotKwkgICAgZWxpZiB0ZXN0IC1mICIkKHNyY2RpcikvJCRsYy8kJGZpZyI7IHRoZW4gXAotKwkgICAgICBmaWdmaWxlPSIkKHNyY2RpcikvJCRsYy8kJGZpZyI7IFwKLSsJICAgIGVsc2UgXAotKwkgICAgICBmaWdzeW1saW5rPXRydWU7IFwKLSsJICAgIGZpOyBcCi0rCSAgICBmaWdkaXI9IiQkbGMvImBlY2hvICQkZmlnIHwgc2VkIC1lICdzL15cKC4qXC9cKS4qL1wxLycgLWUgJy9cLy8hcy8uKi8vJ2A7IFwKLSsJICAgIGZpZ2Rpcj0iJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRmaWdkaXIiOyBcCi0rCSAgICBpZiAhIHRlc3QgLWQgIiQkZmlnZGlyIjsgdGhlbiBcCi0rCSAgICAgIGVjaG8gIiQobWtpbnN0YWxsZGlycykgJCRmaWdkaXIiOyBcCi0rCSAgICAgICQobWtpbnN0YWxsZGlycykgIiQkZmlnZGlyIjsgXAotKwkgICAgZmk7IFwKLSsJICAgIGZpZ2Jhc2U9YGVjaG8gJCRmaWcgfCBzZWQgLWUgJ3MvXi4qXC8vLydgOyBcCi0rCSAgICBpZiAkJGZpZ3N5bWxpbms7IHRoZW4gXAotKwkgICAgICBlY2hvICJjZCAkJGZpZ2RpciAmJiAkKExOX1MpIC1mIC4uLy4uL0MvJCRmaWcgJCRmaWdiYXNlIjsgXAotKwkgICAgICAoIGNkICIkJGZpZ2RpciIgJiYgJChMTl9TKSAtZiAiLi4vLi4vQy8kJGZpZyIgIiQkZmlnYmFzZSIgKTsgXAotKwkgICAgZWxzZSBcCi0rCSAgICAgIGVjaG8gIiQoSU5TVEFMTF9EQVRBKSAkJGZpZ2ZpbGUgJCRmaWdkaXIkJGZpZ2Jhc2UiOyBcCi0rCSAgICAgICQoSU5TVEFMTF9EQVRBKSAiJCRmaWdmaWxlIiAiJCRmaWdkaXIkJGZpZ2Jhc2UiOyBcCi0rCSAgICBmaTsgXAotKwkgIGRvbmU7IFwKLSsJZG9uZQotKwotK2luc3RhbGwtZG9jLWh0bWw6Ci0rCWVjaG8gaW5zdGFsbC1odG1sCi0rCi0raW5zdGFsbC1kb2Mtb21mOgotKwkkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKE9NRl9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikKLSsJQGxpc3Q9JyQoX0RPQ19PTUZfQUxMKSc7IGZvciBvbWYgaW4gJCRsaXN0OyBkbyBcCi0rCSAgZWNobyAiJChJTlNUQUxMX0RBVEEpICQkb21mICQoREVTVERJUikkKE9NRl9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRvbWYiOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpICQkb21mICQoREVTVERJUikkKE9NRl9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRvbWY7IFwKLSsJZG9uZQotKwlAaWYgdGVzdCAieCQoX0VOQUJMRV9TSykiID0gInh0cnVlIjsgdGhlbiBcCi0rCSAgZWNobyAic2Nyb2xsa2VlcGVyLXVwZGF0ZSAtcCAkKERFU1RESVIpJChfc2tsb2NhbHN0YXRlZGlyKSAtbyAkKERFU1RESVIpJChPTUZfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpIjsgXAotKwkgIHNjcm9sbGtlZXBlci11cGRhdGUgLXAgIiQoREVTVERJUikkKF9za2xvY2Fsc3RhdGVkaXIpIiAtbyAiJChERVNURElSKSQoT01GX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKSI7IFwKLSsJZmk7Ci0rCi0raW5zdGFsbC1kb2MtZHNrOgotKwllY2hvIGluc3RhbGwtZHNrCi0rCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIyBVbmluc3RhbGwKLSsKLSsuUEhPTlk6IHVuaW5zdGFsbC1kb2MtZG9jcyB1bmluc3RhbGwtZG9jLWh0bWwgdW5pbnN0YWxsLWRvYy1maWdzIHVuaW5zdGFsbC1kb2Mtb21mIHVuaW5zdGFsbC1kb2MtZHNrCi0rdW5pbnN0YWxsLWxvY2FsOgkJCQkJXAotKwkkKGlmICQoRE9DX01PRFVMRSkkKERPQ19JRCksdW5pbnN0YWxsLWRvYy1kb2NzKQlcCi0rCSQoaWYgJChfRE9DX0hUTUxfQUxMKSx1bmluc3RhbGwtZG9jLWh0bWwpCVwKLSsJJChpZiAkKF9ET0NfQ19GSUdVUkVTKSx1bmluc3RhbGwtZG9jLWZpZ3MpCVwKLSsJJChpZiAkKF9ET0NfT01GX0lOKSx1bmluc3RhbGwtZG9jLW9tZikKLSsjCSQoaWYgJChfRE9DX0RTS19JTiksdW5pbnN0YWxsLWRvYy1kc2spCi0rCi0rdW5pbnN0YWxsLWRvYy1kb2NzOgotKwlAbGlzdD0nJChfRE9DX0NfRE9DUyknOyBmb3IgZG9jIGluICQkbGlzdDsgZG8gXAotKwkgIGVjaG8gIiBybSAtZiAkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGRvYyI7IFwKLSsJICBybSAtZiAiJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRkb2MiOyBcCi0rCWRvbmUKLSsJQGxpc3Q9JyQoX0RPQ19MQ19ET0NTKSc7IGZvciBkb2MgaW4gJCRsaXN0OyBkbyBcCi0rCSAgZWNobyAiIHJtIC1mICQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkZG9jIjsgXAotKwkgIHJtIC1mICIkKERFU1RESVIpJChIRUxQX0RJUikvJChfZG9jX2luc3RhbGxfZGlyKS8kJGRvYyI7IFwKLSsJZG9uZQotKwotK3VuaW5zdGFsbC1kb2MtZmlnczoKLSsJQGxpc3Q9JyQoX0RPQ19DX0ZJR1VSRVMpICQoX0RPQ19MQ19GSUdVUkVTKSc7IGZvciBmaWcgaW4gJCRsaXN0OyBkbyBcCi0rCSAgZWNobyAicm0gLWYgJChERVNURElSKSQoSEVMUF9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRmaWciOyBcCi0rCSAgcm0gLWYgIiQoREVTVERJUikkKEhFTFBfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkZmlnIjsgXAotKwlkb25lOwotKwotK3VuaW5zdGFsbC1kb2Mtb21mOgotKwlAbGlzdD0nJChfRE9DX09NRl9BTEwpJzsgZm9yIG9tZiBpbiAkJGxpc3Q7IGRvIFwKLSsJICBpZiB0ZXN0ICJ4JChfRU5BQkxFX1NLKSIgPSAieHRydWUiOyB0aGVuIFwKLSsJICAgIGVjaG8gInNjcm9sbGtlZXBlci11bmluc3RhbGwgLXAgJChfc2tsb2NhbHN0YXRlZGlyKSAkKERFU1RESVIpJChPTUZfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkb21mIjsgXAotKwkgICAgc2Nyb2xsa2VlcGVyLXVuaW5zdGFsbCAtcCAiJChfc2tsb2NhbHN0YXRlZGlyKSIgIiQoREVTVERJUikkKE9NRl9ESVIpLyQoX2RvY19pbnN0YWxsX2RpcikvJCRvbWYiOyBcCi0rCSAgZmk7IFwKLSsJICBlY2hvICJybSAtZiAkKERFU1RESVIpJChPTUZfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkb21mIjsgXAotKwkgIHJtIC1mICIkKERFU1RESVIpJChPTUZfRElSKS8kKF9kb2NfaW5zdGFsbF9kaXIpLyQkb21mIjsgXAotKwlkb25lCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ2NjLTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC8wMDAxLUZpeC1idWlsZC13aXRoLWdjYy01LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjdmYzViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ2NjLTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDIwODEwZmNmMzI5YzZlMGI0OGI4ZTc2MDI1NjVjY2M3MGM3Y2U2MmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxMCBNYXkgMjAxNSAwMjoxMDo1OSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBnY2MgNQotCi1jYzE6IGVycm9yOiAuLi8uLi9nbm9tZS1wYW5lbC9saWJwYW5lbC1hcHBsZXRzLXByaXZhdGU6IE5vIHN1Y2ggZmlsZSBvcgotZGlyZWN0b3J5IFstV2Vycm9yPW1pc3NpbmctaW5jbHVkZS1kaXJzXQotY2MxOiBlcnJvcjogLi4vLi4vZ25vbWUtcGFuZWwvbGlicGFuZWwtYXBwbGV0cy1wcml2YXRlOiBObyBzdWNoIGZpbGUgb3IKLWRpcmVjdG9yeSBbLVdlcnJvcj1taXNzaW5nLWluY2x1ZGUtZGlyc10KLWNjMTogZXJyb3I6IC4uLy4uL2dub21lLXBhbmVsL2xpYnBhbmVsLWFwcGxldHMtcHJpdmF0ZTogTm8gc3VjaCBmaWxlIG9yCi1kaXJlY3RvcnkgWy1XZXJyb3I9bWlzc2luZy1pbmNsdWRlLWRpcnNdCi1jYzE6IHNvbWUgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnbm9tZS1wYW5lbC9saWJwYW5lbC1hcHBsZXQtcHJpdmF0ZS9NYWtlZmlsZS5hbSB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nbm9tZS1wYW5lbC9saWJwYW5lbC1hcHBsZXQtcHJpdmF0ZS9NYWtlZmlsZS5hbSBiL2dub21lLXBhbmVsL2xpYnBhbmVsLWFwcGxldC1wcml2YXRlL01ha2VmaWxlLmFtCi1pbmRleCBmMTJkZWU4Li5kNTU2ZjEyIDEwMDY0NAotLS0tIGEvZ25vbWUtcGFuZWwvbGlicGFuZWwtYXBwbGV0LXByaXZhdGUvTWFrZWZpbGUuYW0KLSsrKyBiL2dub21lLXBhbmVsL2xpYnBhbmVsLWFwcGxldC1wcml2YXRlL01ha2VmaWxlLmFtCi1AQCAtOCw3ICs4LDYgQEAgQU1fQ1BQRkxBR1MgPQkJCQkJCQlcCi0gCS1JJChzcmNkaXIpCQkJCQkJXAotIAktSSQodG9wX3NyY2RpcikvZ25vbWUtcGFuZWwJCQkJXAotIAktSSQodG9wX2J1aWxkZGlyKS9nbm9tZS1wYW5lbAkJCQlcCi0tCS1JJCh0b3BfYnVpbGRkaXIpL2dub21lLXBhbmVsL2xpYnBhbmVsLWFwcGxldHMtcHJpdmF0ZQlcCi0gCS1JJCh0b3BfYnVpbGRkaXIpL2dub21lLXBhbmVsL2xpYnBhbmVsLXV0aWwJCVwKLSAJLUREQVRBRElSPVwiIiQoZGF0YWRpcikiXCIJCQkJXAotIAktRFBBTkVMX0FQUExFVFNfRElSPVwiJChhcHBsZXRzZGlyKVwiCQkJXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC9hcy1uZWVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC9hcy1uZWVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3OGUzZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtcGFuZWwvZ25vbWUtcGFuZWwvYXMtbmVlZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBjNjVmMWFlMzQ3MmNmZDRjZDk2ZmQzNzZiN2JiZDk1ZmJhNWVlZjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmluY2VudCBVbnR6IDx2dW50ekBnbm9tZS5vcmc+Ci1EYXRlOiBGcmksIDI3IE1heSAyMDExIDE3OjAwOjE0ICswMDAwCi1TdWJqZWN0OiBidWlsZDogRml4IGJ1aWxkIHdpdGggLS1hcy1uZWVkZWQKLQotdXBzdHJlYW0tc3RhdHVzOiBiYWNrcG9ydAotCi0tLS0KLWRpZmYgLS1naXQgYS9hcHBsZXRzL25vdGlmaWNhdGlvbl9hcmVhL01ha2VmaWxlLmFtIGIvYXBwbGV0cy9ub3RpZmljYXRpb25fYXJlYS9NYWtlZmlsZS5hbQotaW5kZXggMGFmYzZjNS4uOTczNDUzNiAxMDA2NDQKLS0tLSBhL2FwcGxldHMvbm90aWZpY2F0aW9uX2FyZWEvTWFrZWZpbGUuYW0KLSsrKyBiL2FwcGxldHMvbm90aWZpY2F0aW9uX2FyZWEvTWFrZWZpbGUuYW0KLUBAIC0yOSwxNyArMjksMTcgQEAgbGlidHJheV9sYV9TT1VSQ0VTID0JCVwKLSBOT1RJRklDQVRJT05fQVJFQV9TT1VSQ0VTID0gbWFpbi5jIG1haW4uaAotIAotIE5PVElGSUNBVElPTl9BUkVBX0xEQUREID0JCQkJXAotKwlsaWJ0cmF5LmxhCQkJCQlcCi0gCS4uLy4uL2xpYnBhbmVsLWFwcGxldC9saWJwYW5lbC1hcHBsZXQtNC5sYQlcCi0gCSQoWF9MSUJTKQkJCQkJXAotIAkkKE5PVElGSUNBVElPTl9BUkVBX0xJQlMpCQkJXAotLQkkKExJQlBBTkVMX0FQUExFVF9MSUJTKQkJCQlcCi0tCWxpYnRyYXkubGEKLSsJJChMSUJQQU5FTF9BUFBMRVRfTElCUykKLSAKLSB0ZXN0dHJheV9TT1VSQ0VTID0gdGVzdHRyYXkuYwotIHRlc3R0cmF5X0xEQUREID0JCQlcCi0rCWxpYnRyYXkubGEJCQlcCi0gCSQoWF9MSUJTKQkJCVwKLS0JJChOT1RJRklDQVRJT05fQVJFQV9MSUJTKQlcCi0tCWxpYnRyYXkubGEKLSsJJChOT1RJRklDQVRJT05fQVJFQV9MSUJTKQotIAotIGlmIE5PVElGSUNBVElPTl9BUkVBX0lOUFJPQ0VTUwotIEFQUExFVF9JTl9QUk9DRVNTID0gdHJ1ZQotLS0KLWNnaXQgdjAuOQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtcGFuZWwvZ25vbWUtcGFuZWwvaWRsLXN5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC9pZGwtc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU0Y2Q4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbC9pZGwtc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS0tLSAvdG1wL01ha2VmaWxlLmFtCTIwMDktMTAtMjYgMTY6NTM6MjAuMDAwMDAwMDAwICswMTAwCi0rKysgZ25vbWUtcGFuZWwtMi4yOC4wL2dub21lLXBhbmVsL01ha2VmaWxlLmFtCTIwMDktMTAtMjYgMTY6NTM6NTEuMDAwMDAwMDAwICswMTAwCi1AQCAtNDMsNyArNDMsNyBAQAotIAkkKE5VTEwpCi0gCi0gJChDT1JCQV9TUkNMSVNUKTogJCh0b3Bfc3JjZGlyKS9pZGwvR05PTUVfUGFuZWwuaWRsICQoT1JCSVRfSURMKQotLQkkKEFNX1ZfR0VOKSQoT1JCSVRfSURMKSAtSSAkKEJPTk9CT19JRExESVIpIC1JICQoQk9OT0JPX0FDVF9JRExESVIpICQodG9wX3NyY2RpcikvaWRsL0dOT01FX1BhbmVsLmlkbAotKwkkKEFNX1ZfR0VOKSQoT1JCSVRfSURMKSAtSSAkKFNZU1JPT1QpJChCT05PQk9fSURMRElSKSAtSSAkKFNZU1JPT1QpJChCT05PQk9fQUNUX0lETERJUikgJCh0b3Bfc3JjZGlyKS9pZGwvR05PTUVfUGFuZWwuaWRsCi0gCi0gQlVJTFRfU09VUkNFUyA9IFwKLSAJJChDT1JCQV9TUkNMSVNUKQlcCi0tLS0gL3RtcC9NYWtlZmlsZS5hbQkyMDA5LTEwLTI2IDE2OjU0OjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdub21lLXBhbmVsLTIuMjguMC9saWJwYW5lbC1hcHBsZXQvTWFrZWZpbGUuYW0JMjAwOS0xMC0yNiAxNjo1NDozNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NSw3ICs0NSw3IEBACi0gCUdOT01FX1BhbmVsLmgKLSAKLSAkKENPUkJBX1NSQ0xJU1QpOiAkKHRvcF9zcmNkaXIpL2lkbC9HTk9NRV9QYW5lbC5pZGwgJChPUkJJVF9JREwpCi0tCSQoQU1fVl9HRU4pJChPUkJJVF9JREwpIC1JICQoQk9OT0JPX0lETERJUikgLUkgJChCT05PQk9fQUNUX0lETERJUikgJCh0b3Bfc3JjZGlyKS9pZGwvR05PTUVfUGFuZWwuaWRsCi0rCSQoQU1fVl9HRU4pJChPUkJJVF9JREwpIC1JICQoU1lTUk9PVCkkKEJPTk9CT19JRExESVIpIC1JICQoU1lTUk9PVCkkKEJPTk9CT19BQ1RfSURMRElSKSAkKHRvcF9zcmNkaXIpL2lkbC9HTk9NRV9QYW5lbC5pZGwKLSAKLSBub2luc3RfUFJPR1JBTVMgPSB0ZXN0LWJvbm9iby1hcHBsZXQKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsM18zLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBhbmVsL2dub21lLXBhbmVsM18zLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFjZmFiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbDNfMy4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIHBhbmVsIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiAmIEdGREwtMS4xIgotCi1CUE4gPSAiZ25vbWUtcGFuZWwiCi1QUiA9ICJyMSIKLQotUE5CTEFDS0xJU1RbZ25vbWUtcGFuZWwzXSA/PSAiQ09ORkxJQ1Q6IGRlcGVuZHMgb24gbGliZ3dlYXRoZXIzIHdoaWNoIGNvbmZsaWN0cyB3aXRoIGxpYmd3ZWF0aGVyIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi0jIGNvbmZsaWN0cyB3aXRoIGdub21lLXBhbmVsLCBiZWNhdXNlIHRoZXkgcHJvdmlkZSB0aGUgc2FtZSBwYWNrYWdlCi0jIGh0dHA6Ly9wYXRjaGVzLm9wZW5lbWJlZGRlZC5vcmcvcGF0Y2gvNDMxMDUvCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1ET0NTO21kNT1jOTIxMWRhYjNhZTYxZTU4MGY0ODQzMjAyMDc4NDMyNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1ERVBFTkRTID0gImdub21lLWRvYy11dGlscy1uYXRpdmUgZ3RrKzMgZGNvbmYgZ2NvbmYgZ2xpYi0yLjAgZ25vbWUtZGVza3RvcDMgZ3RrKyBwYW5nbyBsaWJ3bmNrMyBnbm9tZS1tZW51cyBjYWlybyBsaWJnd2VhdGhlcjMgZGJ1cy1nbGliIGxpYnJzdmcgbGliY2FuYmVycmEiCi0KLWluaGVyaXQgZ3RrLWRvYyBnbm9tZSBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1TUkNfVVJJICs9ICJmaWxlOi8vYXMtbmVlZGVkLnBhdGNoICIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMGYyZjY0NGRjNDA4MWI3MmY2ZGY3YTY1MjgyYWY3YzYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyNWRiOGVjMDI2YzRiZjQ3ZjBlZjVjYzdlMjcxMmYyYWFkMTc1YmQ3ZmI4ZTQ5NTJlZjVmOGIyMDBmMTdmMTk2IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXNjcm9sbGtlZXBlciAtLWRpc2FibGUtZWRzIC0tZW5hYmxlLWJvbm9ibz1ubyAtLXdpdGgtaW4tcHJvY2Vzcy1hcHBsZXRzPW5vbmUiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGdub21lLWRvYy1wcmVwYXJlIC0tYXV0b21ha2UKLSAgICBzZWQgLWkgLWUgczpoZWxwOjogJHtTfS9NYWtlZmlsZS5hbQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn1fYXBwZW5kICgpIHsKLSAgICBnY29uZnRvb2wtMiAtLWNvbmZpZy1zb3VyY2U9eG1sOnJlYWR3cml0ZTovZXRjL2djb25mL2djb25mLnhtbC5kZWZhdWx0cyBcCi0gICAgICAgIC0tZGlyZWN0IC0tbG9hZCAvZXRjL2djb25mL3NjaGVtYXMvcGFuZWwtZGVmYXVsdC1zZXR1cC5lbnRyaWVzCi19Ci0KLVBBQ0tBR0VTID0rICJsaWJwYW5lbC1hcHBsZXQiCi1GSUxFU19saWJwYW5lbC1hcHBsZXQgPSAiJHtsaWJkaXJ9L2xpYnBhbmVsLWFwcGxldC0zLnNvLioiCi0KLUZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L2dub21lKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbnMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vUG9saWN5S2l0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYm9ub2JvIFwKLSIKLQotUE5CTEFDS0xJU1RbZ25vbWUtcGFuZWwzXSA/PSAiRGVwZW5kcyBvbiBicm9rZW4gZ25vbWUtbWVudXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbF8yLjMyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wYW5lbC9nbm9tZS1wYW5lbF8yLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYjhiOWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtcGFuZWwvZ25vbWUtcGFuZWxfMi4zMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBwYW5lbCIKLUxJQ0VOU0UgPSAiR1BMLTIuMCAmIExHUEwtMi4wICYgR0ZETC0xLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctRE9DUzttZDU9YzkyMTFkYWIzYWU2MWU1ODBmNDg0MzIwMjA3ODQzMjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotUFIgPSAicjciCi0KLURFUEVORFMgPSAiZ25vbWUtZG9jLXV0aWxzIGdjb25mIGdsaWItMi4wIGdub21lLWRlc2t0b3AgZ3RrKyBcCi0gICAgcGFuZ28gbGlid25jayBnbm9tZS1tZW51cyBjYWlybyBsaWJnd2VhdGhlciBkYnVzIGRidXMtZ2xpYiBcCi0gICAgbGlicnN2ZyBsaWJjYW5iZXJyYSBcCi0iCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24iCi0KLWluaGVyaXQgZ3RrLWRvYyBnbm9tZSBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQgcGtnY29uZmlnIGdjb25mIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNSRVYgPSAiODI5MmJkMmI4YTM2ZGY3ZWVkM2M3NjA4OTk0MDA3OTBjZGU2ODU5MCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmdub21lLm9yZy9nbm9tZS1wYW5lbDticmFuY2g9Z25vbWUtMi0zMiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWdjYy01LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWdub21lLWRvYy11dGlscy5tYWtlLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS1kaXNhYmxlLWVkcyAtLWVuYWJsZS1ib25vYm89bm8gLS13aXRoLWluLXByb2Nlc3MtYXBwbGV0cz1ub25lIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tuZXR3b3JrbWFuYWdlcl0gPSAiLS1lbmFibGUtbmV0d29yay1tYW5hZ2VyLC0tZGlzYWJsZS1uZXR3b3JrLW1hbmFnZXIsbmV0d29ya21hbmFnZXIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOmhlbHA6OiAke1N9L01ha2VmaWxlLmFtCi0gICAgc2VkIC1pIC1lIHM6XiMhQFBZVEhPTkA6IyEvdXNyL2Jpbi9weXRob246ICR7U30vZ25vbWUtcGFuZWwvZ25vbWUtcGFuZWwtYWRkLmluCi19Ci0KLVBBQ0tBR0VTID0rICJsaWJwYW5lbC1hcHBsZXQiCi1GSUxFU19saWJwYW5lbC1hcHBsZXQgPSAiJHtsaWJkaXJ9L2xpYnBhbmVsLWFwcGxldC0qLnNvLioiCi0KLUZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L2dub21lKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbnMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vUG9saWN5S2l0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYm9ub2JvIFwKLSIKLQotUE5CTEFDS0xJU1RbZ25vbWUtcGFuZWxdID89ICJEZXBlbmRzIG9uIGJyb2tlbiBsaWJnd2VhdGhlciAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1idWlsZC1oZWxwLW1hbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1idWlsZC1oZWxwLW1hbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZkNDliYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wb3dlci1tYW5hZ2VyL2dub21lLXBvd2VyLW1hbmFnZXItMi4zMi4wLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtYnVpbGQtaGVscC1tYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDNlZDE1YTNjNmFlNGFiOTRjN2UzYWYzMDY2NDRiYjVkN2YzZmQxZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI5IEFwciAyMDEzIDEzOjA4OjEwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBkb24ndCBidWlsZCBoZWxwL21hbgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1oZWxwIGNyYXNoZXMgd2l0aDoKLQotfCB4c2x0cHJvYyAtbyBnbm9tZS1wb3dlci1tYW5hZ2VyLUMub21mIC0tc3RyaW5ncGFyYW0gZGIyb21mLmJhc2VuYW1lIGdub21lLXBvd2VyLW1hbmFnZXIgLS1zdHJpbmdwYXJhbSBkYjJvbWYuZm9ybWF0ICdkb2Nib29rJyAtLXN0cmluZ3BhcmFtIGRiMm9tZi5kdGQgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMy8vRU4iIC0tc3RyaW5ncGFyYW0gZGIyb21mLmxhbmcgQyAtLXN0cmluZ3BhcmFtIGRiMm9tZi5vbWZfZGlyICIvdXNyL3NoYXJlL29tZiIgLS1zdHJpbmdwYXJhbSBkYjJvbWYuaGVscF9kaXIgIi91c3Ivc2hhcmUvZ25vbWUvaGVscCIgLS1zdHJpbmdwYXJhbSBkYjJvbWYub21mX2luICIvaG9tZS9qZW5raW5zL29lL3Noci1jb3JlLWJyYW5jaGVzL3Noci1jb3JlL3RtcC1lZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvZ25vbWUtcG93ZXItbWFuYWdlci8yLjMyLjAtcjIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvaGVscC9nbm9tZS1wb3dlci1tYW5hZ2VyLm9tZi5pbiIgIC9ob21lL2plbmtpbnMvb2Uvc2hyLWNvcmUtYnJhbmNoZXMvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy9xZW11YXJtYC9ob21lL2plbmtpbnMvb2Uvc2hyLWNvcmUtYnJhbmNoZXMvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9wa2ctY29uZmlnIC0tdmFyaWFibGUgZGIyb21mIGdub21lLWRvYy11dGlsc2AgQy9nbm9tZS1wb3dlci1tYW5hZ2VyLnhtbCB8fCB7IHJtIC1mICJnbm9tZS1wb3dlci1tYW5hZ2VyLUMub21mIjsgZXhpdCAxOyB9Ci18IHVuYWJsZSB0byBwYXJzZSBmci9nbm9tZS1wb3dlci1tYW5hZ2VyLnhtbAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgICAgMiAtLQotIDEgZmlsZXMgY2hhbmdlZCwgMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMDA1YjhhMC4uNWI5ZTMxOCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTUsOSArNSw3IEBAIFNVQkRJUlMgPSAJCQkJCQlcCi0gCXNyYwkJCQkJCVwKLSAJcG8JCQkJCQlcCi0gCWRvY3MJCQkJCQlcCi0tCW1hbgkJCQkJCVwKLSAJZGF0YQkJCQkJCVwKLS0JaGVscAkJCQkJCVwKLSAJcG9saWN5CQkJCQkJXAotIAl0b29scwotIAotLS0gCi0xLjcuNi41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wb3dlci1tYW5hZ2VyL2dub21lLXBvd2VyLW1hbmFnZXItMi4zMi4wL3N5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2RiN2FiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlci0yLjMyLjAvc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1JbiBjcm9zcyBlbnZpcm9ubWVudCB3ZSBoYXZlIHRvIHByZXBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIHBhdGggZm91bmQgYnkKLXBrZ2NvbmZpZyBzaW5jZSB0aGUgcGF0aCByZXR1cm5lZCBmcm9tIHBrZ2NvbmZpZyBkb2VzIG5vdCBoYXZlIHN5c3Jvb3QgcHJlZml4ZWQKLWl0IGVuZHMgdXAgdXNpbmcgdGhlIGZpbGVzIGZyb20gaG9zdCBzeXN0ZW0uIE5vdyB1c3VhbGx5IHBlb3BsZSBoYXZlIGdub21lIGluc3RhbGxlZAotc28gdGhlIGJ1aWxkIHN1Y2NlZWRzIGJ1dCBpZiB5b3UgZG9udCBoYXZlIGdub21lIGluc3RhbGxlZCBvbiBidWlsZCBob3N0IHRoZW4KLWl0IHdvbnQgZmluZCB0aGUgZmlsZXMgb24gaG9zdCBzeXN0ZW0gYW5kIHBhY2thZ2VzIHVzaW5nIGdub21lLWRvYy11dGlscyB3b250Ci1jb21waWxlLgotCi1UaGlzIHNob3VsZCB3b3JrIG9rIHdpdGggbm9uIHN5c3Jvb3RlZCBidWlsZHMgdG9vIHNpbmNlIGluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLXdpbGwgYmUgZW1wdHkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBnbm9tZS1wb3dlci1tYW5hZ2VyLTIuMzIuMC9nbm9tZS1kb2MtdXRpbHMubWFrZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdub21lLXBvd2VyLW1hbmFnZXItMi4zMi4wLm9yaWcvZ25vbWUtZG9jLXV0aWxzLm1ha2UJMjAxMC0wMS0yNyAwODoyODozMS4wMDAwMDAwMDAgLTA4MDAKLSsrKyBnbm9tZS1wb3dlci1tYW5hZ2VyLTIuMzIuMC9nbm9tZS1kb2MtdXRpbHMubWFrZQkyMDExLTA5LTI1IDE2OjE2OjA0LjkxNDgxMzgwMCAtMDcwMAotQEAgLTEyNCwxMSArMTI0LDExIEBACi0gCi0gX3htbDJwbyA/PSBgd2hpY2ggeG1sMnBvYAotIAotLV9kYjJodG1sID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgZGIyaHRtbCBnbm9tZS1kb2MtdXRpbHNgCi0tX2RiMm9tZiAgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotLV9jaHVua3MgID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NodW5rcy54c2wKLS1fY3JlZGl0cyA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jcmVkaXRzLnhzbAotLV9pZHMgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvaWRzLnhzbAotK19kYjJodG1sID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMmh0bWwgZ25vbWUtZG9jLXV0aWxzYAotK19kYjJvbWYgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIGRiMm9tZiBnbm9tZS1kb2MtdXRpbHNgCi0rX2NodW5rcyAgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NodW5rcy54c2wKLStfY3JlZGl0cyA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvY3JlZGl0cy54c2wKLStfaWRzID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9pZHMueHNsCi0gCi0gaWYgRU5BQkxFX1NLCi0gX0VOQUJMRV9TSyA9IHRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlcl8yLjMyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1wb3dlci1tYW5hZ2VyL2dub21lLXBvd2VyLW1hbmFnZXJfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzIxMTA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXBvd2VyLW1hbmFnZXIvZ25vbWUtcG93ZXItbWFuYWdlcl8yLjMyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIlBvd2VyIG1hbmFnZW1lbnQgZGFlbW9uIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1QUiA9ICJyNCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrIGdjb25mIGxpYmdub21lLWtleXJpbmcgZGJ1cyBkYnVzLWdsaWIgbGlibm90aWZ5IGxpYnduY2sgY2Fpcm8gbGlidW5pcXVlIHhyYW5kciB2aXJ0dWFsL2xpYngxMSBsaWJ4cmVuZGVyIGxpYmNhbmJlcnJhIHVwb3dlciBnbm9tZS1kb2MtdXRpbHMiCi1SUkVDT01NRU5EU18ke1BOfSArPSAiZ25vbWUta2V5cmluZyIKLQotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9zeXNyb290ZWQtcGtnLWNvbmZpZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtYnVpbGQtaGVscC1tYW4ucGF0Y2ggXAotIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5YTA4ZTg1ZGNlM2ZmYjkwNzc1ZjE1ZTNiZGE0YWRkYSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjE3ZmEzMDFiZjdlMTMzMjg1YzBlMDU0YWUzYmUyYjBmNjkwYzQ4ZjU5YjA5ZjY3ZTA0ZDZlZDMzOWIzMzA0NzYiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLXNjcm9sbGtlZXBlciBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1hcHBsZXRzIFwKLSAgICAgICAgICAgICAgICAgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3M9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfWDExX2V4dGVuc2lvbnNfZHBtc19oPXllcyBcCi0iCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgIyBTaWdoLi4uIC0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3M9bm8gZG9lc24ndCBhY3R1YWxseSB0dXJuIG9mZiAtV2Vycm9yCi0gICAgZm9yIGkgaW4gJChmaW5kICR7Qn0gLW5hbWUgIk1ha2VmaWxlIikgOyBkbwotICAgICAgICBzZWQgLWkgLWUgczotV2Vycm9yOjpnICRpCi0gICAgZG9uZQotICAgIHNlZCAtZSAicy9saWJ0b29sIC0tLyR7VEFSR0VUX1NZU30tbGlidG9vbCAtLS8iIC1pICR7Qn0vc3JjL01ha2VmaWxlCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1hcHBsZXRzIgotCi1GSUxFU18ke1BOfS1hcHBsZXRzID0gIiR7YmluZGlyfS8qYXBwbGV0KiBcCi0gICAgJHtsaWJkaXJ9L2Jvbm9iby9zZXJ2ZXJzIFwKLSAgICAke2RhdGFkaXJ9L2dub21lLTIuMC91aSBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9nbm9tZS9hdXRvc3RhcnQgXAotIgotCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vb21mIFwKLSAgICAke2RhdGFkaXJ9L2dub21lL2hlbHAgXAotIgotCi0jIGdub21lLXBvd2VyLW1hbmFnZXItMi4zMi4wL3NyYy9ncG0tbWFuYWdlci5jOjQ4ODoxODogZXJyb3I6IHRvbyBtYW55IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnbm90aWZ5X25vdGlmaWNhdGlvbl9uZXcnCi1QTkJMQUNLTElTVFtnbm9tZS1wb3dlci1tYW5hZ2VyXSA/PSAiQlJPS0VOOiBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgbGlibm90aWZ5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc2Vzc2lvbi9nbm9tZS1zZXNzaW9uL3VzZV9HX0dJTlQ2NF9GT1JNQVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXNzaW9uL2dub21lLXNlc3Npb24vdXNlX0dfR0lOVDY0X0ZPUk1BVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA5ZjhkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXNzaW9uL2dub21lLXNlc3Npb24vdXNlX0dfR0lOVDY0X0ZPUk1BVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVRoaXMgcGF0Y2ggZml4ZXMgdGhlIGJ1aWxkIGVycm9ycyB3aGVuIGJ1aWxkaW5nIGdub21lLXNlc3Npb24gZm9yIDY0Yml0IHRhcmdldCB1c2luZyBnY2MgNC44Ci0KLXwgZ3MtaWRsZS1tb25pdG9yLmM6IEluIGZ1bmN0aW9uICdoYW5kbGVfYWxhcm1fbm90aWZ5X2V2ZW50JzoKLXwgZ3MtaWRsZS1tb25pdG9yLmM6MTk2Ojk6IGVycm9yOiBmb3JtYXQgJyVsbGQnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyBsb25nIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdnaW50NjQnIFstV2Vycm9yPWZvcm1hdD1dCi18ICAgICAgICAgIGdfZGVidWcgKCJXYXRjaCAlZCBmaXJlZCwgaWRsZSB0aW1lID0gJWxsZCIsCi18ICAgICAgICAgIF4KLXwgZ3MtaWRsZS1tb25pdG9yLmM6IEluIGZ1bmN0aW9uICdfeHN5bmNfYWxhcm1fc2V0JzoKLXwgZ3MtaWRsZS1tb25pdG9yLmM6NDUzOjE3OiBlcnJvcjogZm9ybWF0ICclbGxkJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcgbG9uZyBpbnQnLCBidXQgYXJndW1lbnQgNCBoYXMgdHlwZSAnZ2ludDY0JyBbLVdlcnJvcj1mb3JtYXQ9XQotfCAgICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHU0lkbGVNb25pdG9yOiB1cGRhdGluZyBhbGFybSBmb3IgcG9zaXRpdmUgdHJhbnNpdGlvbiB3YWl0PSVsbGQiLAotfCAgICAgICAgICAgICAgICAgIF4KLXwgZ3MtaWRsZS1tb25pdG9yLmM6NDU3OjE3OiBlcnJvcjogZm9ybWF0ICclbGxkJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcgbG9uZyBpbnQnLCBidXQgYXJndW1lbnQgNCBoYXMgdHlwZSAnZ2ludDY0JyBbLVdlcnJvcj1mb3JtYXQ9XQotfCAgICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHU0lkbGVNb25pdG9yOiBjcmVhdGluZyBuZXcgYWxhcm0gZm9yIHBvc2l0aXZlIHRyYW5zaXRpb24gd2FpdD0lbGxkIiwKLXwgICAgICAgICAgICAgICAgICBeCi18IGdzLWlkbGUtbW9uaXRvci5jOjQ2NDoxNzogZXJyb3I6IGZvcm1hdCAnJWxsZCcgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIGxvbmcgaW50JywgYnV0IGFyZ3VtZW50IDQgaGFzIHR5cGUgJ2dpbnQ2NCcgWy1XZXJyb3I9Zm9ybWF0PV0KLXwgICAgICAgICAgICAgICAgICBnX2RlYnVnICgiR1NJZGxlTW9uaXRvcjogdXBkYXRpbmcgYWxhcm0gZm9yIG5lZ2F0aXZlIHRyYW5zaXRpb24gd2FpdD0lbGxkIiwKLXwgICAgICAgICAgICAgICAgICBeCi18IGdzLWlkbGUtbW9uaXRvci5jOjQ2ODoxNzogZXJyb3I6IGZvcm1hdCAnJWxsZCcgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIGxvbmcgaW50JywgYnV0IGFyZ3VtZW50IDQgaGFzIHR5cGUgJ2dpbnQ2NCcgWy1XZXJyb3I9Zm9ybWF0PV0KLQotVXBzdHJlYW0tU3RhdHVzOiBVbmtub3duCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1JbmRleDogZ25vbWUtc2Vzc2lvbi0yLjMyLjEvZ25vbWUtc2Vzc2lvbi9ncy1pZGxlLW1vbml0b3IuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdub21lLXNlc3Npb24tMi4zMi4xLm9yaWcvZ25vbWUtc2Vzc2lvbi9ncy1pZGxlLW1vbml0b3IuYwkyMDEwLTExLTE3IDAzOjE3OjA0LjAwMDAwMDAwMCAtMDgwMAotKysrIGdub21lLXNlc3Npb24tMi4zMi4xL2dub21lLXNlc3Npb24vZ3MtaWRsZS1tb25pdG9yLmMJMjAxMy0wNi0xMSAyMzozMzoxMi4yMzk5NjAwODIgLTA3MDAKLUBAIC0xOTMsNyArMTkzLDcgQEAKLSAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotIAotLSAgICAgICAgZ19kZWJ1ZyAoIldhdGNoICVkIGZpcmVkLCBpZGxlIHRpbWUgPSAlbGxkIiwKLSsgICAgICAgIGdfZGVidWcgKCJXYXRjaCAlZCBmaXJlZCwgaWRsZSB0aW1lID0gJSIgR19HSU5UNjRfRk9STUFUICIiLAotICAgICAgICAgICAgICAgICAgd2F0Y2gtPmlkLAotICAgICAgICAgICAgICAgICAgX3hzeW5jdmFsdWVfdG9faW50NjQgKGFsYXJtX2V2ZW50LT5jb3VudGVyX3ZhbHVlKSk7Ci0gCi1AQCAtNDUwLDIyICs0NTAsMjIgQEAKLSAKLSAgICAgICAgIGF0dHIudHJpZ2dlci50ZXN0X3R5cGUgPSBYU3luY1Bvc2l0aXZlVHJhbnNpdGlvbjsKLSAgICAgICAgIGlmICh3YXRjaC0+eGFsYXJtX3Bvc2l0aXZlICE9IE5vbmUpIHsKLS0gICAgICAgICAgICAgICAgZ19kZWJ1ZyAoIkdTSWRsZU1vbml0b3I6IHVwZGF0aW5nIGFsYXJtIGZvciBwb3NpdGl2ZSB0cmFuc2l0aW9uIHdhaXQ9JWxsZCIsCi0rICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHU0lkbGVNb25pdG9yOiB1cGRhdGluZyBhbGFybSBmb3IgcG9zaXRpdmUgdHJhbnNpdGlvbiB3YWl0PSUiIEdfR0lOVDY0X0ZPUk1BVCAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX3hzeW5jdmFsdWVfdG9faW50NjQgKGF0dHIudHJpZ2dlci53YWl0X3ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgIFhTeW5jQ2hhbmdlQWxhcm0gKEdES19ESVNQTEFZICgpLCB3YXRjaC0+eGFsYXJtX3Bvc2l0aXZlLCBmbGFncywgJmF0dHIpOwotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgZ19kZWJ1ZyAoIkdTSWRsZU1vbml0b3I6IGNyZWF0aW5nIG5ldyBhbGFybSBmb3IgcG9zaXRpdmUgdHJhbnNpdGlvbiB3YWl0PSVsbGQiLAotKyAgICAgICAgICAgICAgICBnX2RlYnVnICgiR1NJZGxlTW9uaXRvcjogY3JlYXRpbmcgbmV3IGFsYXJtIGZvciBwb3NpdGl2ZSB0cmFuc2l0aW9uIHdhaXQ9JSIgR19HSU5UNjRfRk9STUFUICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfeHN5bmN2YWx1ZV90b19pbnQ2NCAoYXR0ci50cmlnZ2VyLndhaXRfdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgd2F0Y2gtPnhhbGFybV9wb3NpdGl2ZSA9IFhTeW5jQ3JlYXRlQWxhcm0gKEdES19ESVNQTEFZICgpLCBmbGFncywgJmF0dHIpOwotICAgICAgICAgfQotIAotICAgICAgICAgYXR0ci50cmlnZ2VyLnRlc3RfdHlwZSA9IFhTeW5jTmVnYXRpdmVUcmFuc2l0aW9uOwotICAgICAgICAgaWYgKHdhdGNoLT54YWxhcm1fbmVnYXRpdmUgIT0gTm9uZSkgewotLSAgICAgICAgICAgICAgICBnX2RlYnVnICgiR1NJZGxlTW9uaXRvcjogdXBkYXRpbmcgYWxhcm0gZm9yIG5lZ2F0aXZlIHRyYW5zaXRpb24gd2FpdD0lbGxkIiwKLSsgICAgICAgICAgICAgICAgZ19kZWJ1ZyAoIkdTSWRsZU1vbml0b3I6IHVwZGF0aW5nIGFsYXJtIGZvciBuZWdhdGl2ZSB0cmFuc2l0aW9uIHdhaXQ9JSIgR19HSU5UNjRfRk9STUFUICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfeHN5bmN2YWx1ZV90b19pbnQ2NCAoYXR0ci50cmlnZ2VyLndhaXRfdmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgWFN5bmNDaGFuZ2VBbGFybSAoR0RLX0RJU1BMQVkgKCksIHdhdGNoLT54YWxhcm1fbmVnYXRpdmUsIGZsYWdzLCAmYXR0cik7Ci0gICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICBnX2RlYnVnICgiR1NJZGxlTW9uaXRvcjogY3JlYXRpbmcgbmV3IGFsYXJtIGZvciBuZWdhdGl2ZSB0cmFuc2l0aW9uIHdhaXQ9JWxsZCIsCi0rICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHU0lkbGVNb25pdG9yOiBjcmVhdGluZyBuZXcgYWxhcm0gZm9yIG5lZ2F0aXZlIHRyYW5zaXRpb24gd2FpdD0lIiBHX0dJTlQ2NF9GT1JNQVQgIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF94c3luY3ZhbHVlX3RvX2ludDY0IChhdHRyLnRyaWdnZXIud2FpdF92YWx1ZSkpOwotICAgICAgICAgICAgICAgICB3YXRjaC0+eGFsYXJtX25lZ2F0aXZlID0gWFN5bmNDcmVhdGVBbGFybSAoR0RLX0RJU1BMQVkgKCksIGZsYWdzLCAmYXR0cik7Ci0gICAgICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXNzaW9uL2dub21lLXNlc3Npb25fMi4zMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc2Vzc2lvbi9nbm9tZS1zZXNzaW9uXzIuMzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5ZjJkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXNzaW9uL2dub21lLXNlc3Npb25fMi4zMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJHbm9tZSBzZXNzaW9uIG1hbmFnZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVBSID0gInIzIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLURFUEVORFMgPSAibGlieHRzdCBndGsrIGdsaWItMi4wIHVwb3dlciBkYnVzLWdsaWIgZ2NvbmYgcGFuZ28gZ2RrLXBpeGJ1Zi1uYXRpdmUgc3RhcnR1cC1ub3RpZmljYXRpb24iCi0KLWluaGVyaXQgZ25vbWUKLQotU1JDX1VSSSArPSAiZmlsZTovL3VzZV9HX0dJTlQ2NF9GT1JNQVQucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjIyMmJhZDZiNDQ2Y2IxOWE2YjkwMjhlYTI0NTM4MDAyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjJkOTNjZTQzM2ZjZjljN2NlNmI1ZjM2ZGQ4MWY2NGU2OTJlYTBlNDFmYWFhMGY2MTE1OWRkYWMyOGMzNjg2YSIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtZ3RrPTIuMCBhY19jdl9wYXRoX0dDT05GX1NBTklUWV9DSEVDSz1zZXQgLS1kaXNhYmxlLWRvY2Jvb2stZG9jcyIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBmb3IgaSBpbiAkKGZpbmQgJHtTfSAtbmFtZSAiTWFrZWZpbGUiKSA7IGRvCi0gICAgICAgIHNlZCAtaSAtZSBzOiJHQ09ORlRPT0wgPSAuKi91c3IvYmluL2djb25mdG9vbC0yIjoiR0NPTkZUT09MID0gL3Vzci9iaW4vZ2NvbmZ0b29sLTIiOmcgJGkKLSAgICAgICAgc2VkIC1pIC1lIHM6IkdDT05GX1NBTklUWV9DSEVDSyA9IHNldCI6IkdDT05GX1NBTklUWV9DSEVDSyA9IC91c3IvbGliZXhlYy9nY29uZi1zYW5pdHktY2hlY2stMiI6ZyAkaQotICAgIGRvbmUKLX0KLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tY2stY29ubmVjdG9yJywgJycsIGQpfSIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hzZXNzaW9ucyAke2RhdGFkaXJ9L2ljb25zICR7ZGF0YWRpcn0vZ25vbWUgJHtsaWJkaXJ9L2dub21lLXNlc3Npb24vaGVscGVycyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9nbm9tZS1zZXNzaW9uL2hlbHBlcnMvLmRlYnVnIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy82ODYyMS8KLVBOQkxBQ0tMSVNUW2dub21lLXNlc3Npb25dID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zZXR0aW5ncy1kYWVtb24vZmlsZXMvMDAwMS1SZXF1aXJlLWxpYm5vdGlmeS0wLjYuMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNldHRpbmdzLWRhZW1vbi9maWxlcy8wMDAxLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGQzM2YzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNldHRpbmdzLWRhZW1vbi9maWxlcy8wMDAxLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotRnJvbSBlMWFiNTcwYjBkY2U0NzliYTIzNWU1NTQyZWEwN2QxYjViYWZjNGM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2lsbGlhbSBKb24gTWNDYW5uIDxqbWNjYW5uQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDExIE9jdCAyMDEwIDIzOjM1OjQ1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlcXVpcmUgbGlibm90aWZ5IDAuNi4wCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBwbHVnaW5zL2ExMXkta2V5Ym9hcmQvZ3NkLWExMXkta2V5Ym9hcmQtbWFuYWdlci5jIHwgIDggKystLS0tLS0KLSBwbHVnaW5zL3hyYW5kci9nc2QteHJhbmRyLW1hbmFnZXIuYyAgICAgICAgICAgICAgIHwgMTMgKysrLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOGE5MDA1My4uODYyNGIyYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTQsNyArNTQsNyBAQCBHVEtfUkVRVUlSRURfVkVSU0lPTj0yLjkxLjAKLSBHQ09ORl9SRVFVSVJFRF9WRVJTSU9OPTIuNi4xCi0gR0lPX1JFUVVJUkVEX1ZFUlNJT049Mi4xNy4zCi0gR05PTUVfREVTS1RPUF9SRVFVSVJFRF9WRVJTSU9OPTIuMjkuOTIKLS1MSUJOT1RJRllfUkVRVUlSRURfVkVSU0lPTj0wLjQuMwotK0xJQk5PVElGWV9SRVFVSVJFRF9WRVJTSU9OPTAuNi4xCi0gCi0gRVhUUkFfQ09NUElMRV9XQVJOSU5HUyh5ZXMpCi0gCi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9hMTF5LWtleWJvYXJkL2dzZC1hMTF5LWtleWJvYXJkLW1hbmFnZXIuYyBiL3BsdWdpbnMvYTExeS1rZXlib2FyZC9nc2QtYTExeS1rZXlib2FyZC1tYW5hZ2VyLmMKLWluZGV4IDljYTgyMGEuLmY1OTY0YjkgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5zL2ExMXkta2V5Ym9hcmQvZ3NkLWExMXkta2V5Ym9hcmQtbWFuYWdlci5jCi0rKysgYi9wbHVnaW5zL2ExMXkta2V5Ym9hcmQvZ3NkLWExMXkta2V5Ym9hcmQtbWFuYWdlci5jCi1AQCAtNjA4LDkgKzYwOCw3IEBAIGF4X3Nsb3drZXlzX3dhcm5pbmdfcG9zdF9idWJibGUgKEdzZEExMXlLZXlib2FyZE1hbmFnZXIgKm1hbmFnZXIsCi0gICAgICAgICBnc2RfYTExeV9rZXlib2FyZF9tYW5hZ2VyX2Vuc3VyZV9zdGF0dXNfaWNvbiAobWFuYWdlcik7Ci0gICAgICAgICBtYW5hZ2VyLT5wcml2LT5ub3RpZmljYXRpb24gPSBub3RpZnlfbm90aWZpY2F0aW9uX25ldyAodGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlZmVyZW5jZXMtZGVza3RvcC1hY2Nlc3NpYmlsaXR5IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLS0gICAgICAgIG5vdGlmeV9ub3RpZmljYXRpb25fYXR0YWNoX3RvX3N0YXR1c19pY29uIChtYW5hZ2VyLT5wcml2LT5ub3RpZmljYXRpb24sIG1hbmFnZXItPnByaXYtPnN0YXR1c19pY29uKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlZmVyZW5jZXMtZGVza3RvcC1hY2Nlc3NpYmlsaXR5Iik7Ci0gICAgICAgICBub3RpZnlfbm90aWZpY2F0aW9uX3NldF90aW1lb3V0IChtYW5hZ2VyLT5wcml2LT5ub3RpZmljYXRpb24sIE5PVElGSUNBVElPTl9USU1FT1VUICogMTAwMCk7Ci0gCi0gICAgICAgICBub3RpZnlfbm90aWZpY2F0aW9uX2FkZF9hY3Rpb24gKG1hbmFnZXItPnByaXYtPm5vdGlmaWNhdGlvbiwKLUBAIC03NDcsOSArNzQ1LDcgQEAgYXhfc3RpY2t5a2V5c193YXJuaW5nX3Bvc3RfYnViYmxlIChHc2RBMTF5S2V5Ym9hcmRNYW5hZ2VyICptYW5hZ2VyLAotICAgICAgICAgZ3NkX2ExMXlfa2V5Ym9hcmRfbWFuYWdlcl9lbnN1cmVfc3RhdHVzX2ljb24gKG1hbmFnZXIpOwotICAgICAgICAgbWFuYWdlci0+cHJpdi0+bm90aWZpY2F0aW9uID0gbm90aWZ5X25vdGlmaWNhdGlvbl9uZXcgKHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZWZlcmVuY2VzLWRlc2t0b3AtYWNjZXNzaWJpbGl0eSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0tICAgICAgICBub3RpZnlfbm90aWZpY2F0aW9uX2F0dGFjaF90b19zdGF0dXNfaWNvbiAobWFuYWdlci0+cHJpdi0+bm90aWZpY2F0aW9uLCBtYW5hZ2VyLT5wcml2LT5zdGF0dXNfaWNvbik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZWZlcmVuY2VzLWRlc2t0b3AtYWNjZXNzaWJpbGl0eSIpOwotICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9zZXRfdGltZW91dCAobWFuYWdlci0+cHJpdi0+bm90aWZpY2F0aW9uLCBOT1RJRklDQVRJT05fVElNRU9VVCAqIDEwMDApOwotIAotICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9hZGRfYWN0aW9uIChtYW5hZ2VyLT5wcml2LT5ub3RpZmljYXRpb24sCi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy94cmFuZHIvZ3NkLXhyYW5kci1tYW5hZ2VyLmMgYi9wbHVnaW5zL3hyYW5kci9nc2QteHJhbmRyLW1hbmFnZXIuYwotaW5kZXggMDI1MzZhMy4uZWY1N2Q1YiAxMDA2NDQKLS0tLSBhL3BsdWdpbnMveHJhbmRyL2dzZC14cmFuZHItbWFuYWdlci5jCi0rKysgYi9wbHVnaW5zL3hyYW5kci9nc2QteHJhbmRyLW1hbmFnZXIuYwotQEAgLTEwODQsMTYgKzEwODQsOSBAQCBlcnJvcl9tZXNzYWdlIChHc2RYcmFuZHJNYW5hZ2VyICptZ3IsIGNvbnN0IGNoYXIgKnByaW1hcnlfdGV4dCwgR0Vycm9yICplcnJvcl90bwotIAotICAgICAgICAgZ19hc3NlcnQgKGVycm9yX3RvX2Rpc3BsYXkgPT0gTlVMTCB8fCBzZWNvbmRhcnlfdGV4dCA9PSBOVUxMKTsKLSAKLS0gICAgICAgIGlmIChwcml2LT5zdGF0dXNfaWNvbikKLS0gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uID0gbm90aWZ5X25vdGlmaWNhdGlvbl9uZXdfd2l0aF9zdGF0dXNfaWNvbiAocHJpbWFyeV90ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90b19kaXNwbGF5ID8gZXJyb3JfdG9fZGlzcGxheS0+bWVzc2FnZSA6IHNlY29uZGFyeV90ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU0RfWFJBTkRSX0lDT05fTkFNRSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+c3RhdHVzX2ljb24pOwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICBub3RpZmljYXRpb24gPSBub3RpZnlfbm90aWZpY2F0aW9uX25ldyAocHJpbWFyeV90ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdG9fZGlzcGxheSA/IGVycm9yX3RvX2Rpc3BsYXktPm1lc3NhZ2UgOiBzZWNvbmRhcnlfdGV4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTRF9YUkFORFJfSUNPTl9OQU1FLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rICAgICAgICBub3RpZmljYXRpb24gPSBub3RpZnlfbm90aWZpY2F0aW9uX25ldyAocHJpbWFyeV90ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3RvX2Rpc3BsYXkgPyBlcnJvcl90b19kaXNwbGF5LT5tZXNzYWdlIDogc2Vjb25kYXJ5X3RleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NEX1hSQU5EUl9JQ09OX05BTUUpOwotIAotICAgICAgICAgbm90aWZ5X25vdGlmaWNhdGlvbl9zaG93IChub3RpZmljYXRpb24sIE5VTEwpOyAvKiBOVUxMLUdFcnJvciAqLwotICNlbHNlCi0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNldHRpbmdzLWRhZW1vbi9nbm9tZS1zZXR0aW5ncy1kYWVtb25fMi4zMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc2V0dGluZ3MtZGFlbW9uL2dub21lLXNldHRpbmdzLWRhZW1vbl8yLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxZGI2ZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc2V0dGluZ3MtZGFlbW9uL2dub21lLXNldHRpbmdzLWRhZW1vbl8yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIHNldHRpbmdzIGRhZW1vbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotUFIgPSAicjciCi0KLURFUEVORFMgPSAiaW50bHRvb2wgbGlieHhmODZtaXNjIGxpYnNuZGZpbGUxIGxpYnh0c3QgZ2xpYi0yLjAgcG9sa2l0IGd0aysgZ2NvbmYgZGJ1cy1nbGliIGxpYm5vdGlmeSBsaWJnbm9tZWtiZCBsaWJ4a2xhdmllciBnbm9tZS1kb2MtdXRpbHMgZ25vbWUtZGVza3RvcCIKLQotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0Lmdub21lLm9yZy9nbm9tZS1zZXR0aW5ncy1kYWVtb247YnJhbmNoPWdub21lLTItMzIgXAotICAgIGZpbGU6Ly8wMDAxLVJlcXVpcmUtbGlibm90aWZ5LTAuNi4wLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICIwMTYwZjY3MjVjZmI4NzJlMDE3ZjM5NThmMTA4NzkyYzNiODgyODcyIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2UsLS1kaXNhYmxlLXB1bHNlLHB1bHNlYXVkaW8gZ2xpYi0yLjAgbGliY2FuYmVycmEiCi1QQUNLQUdFQ09ORklHW3NtYXJ0Y2FyZF0gPSAiLS1lbmFibGUtc21hcnRjYXJkLXN1cHBvcnQsLS1kaXNhYmxlLXNtYXJ0Y2FyZC1zdXBwb3J0LG5zcyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAtLWVuYWJsZS1wb2xraXQgXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6LUwkbGliZGlyOjpnJyAtZSAnczotSSRpbmNsdWRlZGlyOjpnJyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0yLjAvKi5zbyAke2xpYmRpcn0vZ25vbWUtc2V0dGluZ3MtZGFlbW9uLTIuMC8qcGx1Z2luIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbiogXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0veHNlc3Npb24qIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMi4wLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0yLjAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0yLjAvKi5hIgotCi0KLVBOQkxBQ0tMSVNUW2dub21lLXNldHRpbmdzLWRhZW1vbl0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgbGliZ25vbWVrYmQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW2dub21lLXNldHRpbmdzLWRhZW1vbl0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZ25vbWUtZGVza3RvcCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2ZpbGVzLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zeXN0ZW0tbW9uaXRvci9maWxlcy8wMDAxLUZpeC1nbGliLWluY2x1ZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2UxYjAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2ZpbGVzLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotRnJvbSA4NTg3ZTM1YWY1MmY3NzczZjYyMzYxYmUyZTcyZGRmMjg2YTU5MTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVHVlLCAxNSBNYXkgMjAxMiAxMzowMjowMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggZ2xpYiBpbmNsdWRlcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotVXBzdHJlYW0tU3RhdHVzOiB1bmtub3duCi0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gc3JjL2ludGVyZmFjZS5oICAgICAgIHwgICAgMiArLQotIHNyYy9sb2FkLWdyYXBoLmggICAgICB8ICAgIDIgKy0KLSBzcmMvbHNvZi5oICAgICAgICAgICAgfCAgICAyICstCi0gc3JjL29wZW5maWxlcy5oICAgICAgIHwgICAgMiArLQotIHNyYy9wcm9jbWFuX2dub21lc3UuaCB8ICAgIDIgKy0KLSBzcmMvdXRpbC5jcHAgICAgICAgICAgfCAgICAyICstCi0gNiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlLmggYi9zcmMvaW50ZXJmYWNlLmgKLWluZGV4IDRiZGEzNWEuLmIyNmI2NzAgMTAwNjQ0Ci0tLS0gYS9zcmMvaW50ZXJmYWNlLmgKLSsrKyBiL3NyYy9pbnRlcmZhY2UuaAotQEAgLTIwLDcgKzIwLDcgQEAKLSAjaWZuZGVmIF9QUk9DTUFOX0lOVEVSRkFDRV9IXwotICNkZWZpbmUgX1BST0NNQU5fSU5URVJGQUNFX0hfCi0gCi0tI2luY2x1ZGUgPGdsaWIvZ3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGdsaWIuaD4KLSAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotICNpbmNsdWRlICJwcm9jbWFuLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2xvYWQtZ3JhcGguaCBiL3NyYy9sb2FkLWdyYXBoLmgKLWluZGV4IDYxMTFjNzguLjZlN2E1OTkgMTAwNjQ0Ci0tLS0gYS9zcmMvbG9hZC1ncmFwaC5oCi0rKysgYi9zcmMvbG9hZC1ncmFwaC5oCi1AQCAtMSw3ICsxLDcgQEAKLSAjaWZuZGVmIF9QUk9DTUFOX0xPQURfR1JBUEhfSF8KLSAjZGVmaW5lIF9QUk9DTUFOX0xPQURfR1JBUEhfSF8KLSAKLS0jaW5jbHVkZSA8Z2xpYi9ndHlwZXMuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlIDxnbGlidG9wL2NwdS5oPgotIAotIGVudW0KLWRpZmYgLS1naXQgYS9zcmMvbHNvZi5oIGIvc3JjL2xzb2YuaAotaW5kZXggYWQ3ZjExMS4uZGE0MjBlMiAxMDA2NDQKLS0tLSBhL3NyYy9sc29mLmgKLSsrKyBiL3NyYy9sc29mLmgKLUBAIC0xLDcgKzEsNyBAQAotICNpZm5kZWYgSF9QUk9DTUFOX0xTT0ZfMTE2MTE3OTIwMgotICNkZWZpbmUgSF9QUk9DTUFOX0xTT0ZfMTE2MTE3OTIwMgotIAotLSNpbmNsdWRlIDxnbGliL2dtYWNyb3MuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlICJwcm9jbWFuLmgiCi0gCi0gdm9pZCBwcm9jbWFuX2xzb2YoUHJvY0RhdGEgKmRhdGEpOwotZGlmZiAtLWdpdCBhL3NyYy9vcGVuZmlsZXMuaCBiL3NyYy9vcGVuZmlsZXMuaAotaW5kZXggMzhiMWNjOC4uYThiN2IwNSAxMDA2NDQKLS0tLSBhL3NyYy9vcGVuZmlsZXMuaAotKysrIGIvc3JjL29wZW5maWxlcy5oCi1AQCAtMSw3ICsxLDcgQEAKLSAjaWZuZGVmIF9PUEVORklMRVNfSF8KLSAjZGVmaW5lIF9PUEVORklMRVNfSF8KLSAKLS0jaW5jbHVkZSA8Z2xpYi9ndHlwZXMuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotIAotICNpbmNsdWRlICJwcm9jbWFuLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3Byb2NtYW5fZ25vbWVzdS5oIGIvc3JjL3Byb2NtYW5fZ25vbWVzdS5oCi1pbmRleCBmZWMyNjUwLi40NzRjYTlhIDEwMDY0NAotLS0tIGEvc3JjL3Byb2NtYW5fZ25vbWVzdS5oCi0rKysgYi9zcmMvcHJvY21hbl9nbm9tZXN1LmgKLUBAIC0xLDcgKzEsNyBAQAotICNpZm5kZWYgSF9HTk9NRV9TWVNURU1fTU9OSVRPUl9HTk9NRVNVX0hfMTEzMjE3MTkxNwotICNkZWZpbmUgSF9HTk9NRV9TWVNURU1fTU9OSVRPUl9HTk9NRVNVX0hfMTEzMjE3MTkxNwotIAotLSNpbmNsdWRlIDxnbGliL2d0eXBlcy5oPgotKyNpbmNsdWRlIDxnbGliLmg+Ci0gCi0gZ2Jvb2xlYW4KLSBwcm9jbWFuX2dub21lc3VfY3JlYXRlX3Jvb3RfcGFzc3dvcmRfZGlhbG9nKGNvbnN0IGNoYXIgKiBtZXNzYWdlKTsKLWRpZmYgLS1naXQgYS9zcmMvdXRpbC5jcHAgYi9zcmMvdXRpbC5jcHAKLWluZGV4IDliMWM5ZjUuLjkwMDczZmUgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC5jcHAKLSsrKyBiL3NyYy91dGlsLmNwcAotQEAgLTEsNyArMSw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotIAotICNpbmNsdWRlIDxnbGliL2dpMThuLmg+Ci0tI2luY2x1ZGUgPGdsaWIvZ3N0cmluZy5oPgotKyNpbmNsdWRlIDxnbGliLmg+Ci0gI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSAKLSAjaW5jbHVkZSA8Z2xpYnRvcC9wcm9jdGltZS5oPgotLS0gCi0xLjcuNi41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2ZpbGVzLzAwMDItc3JjLXByb2NtYW4uY3BwLWluY2x1ZGUtbWFpbi1ndGttbS5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZmlsZXMvMDAwMi1zcmMtcHJvY21hbi5jcHAtaW5jbHVkZS1tYWluLWd0a21tLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNjcyODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZmlsZXMvMDAwMi1zcmMtcHJvY21hbi5jcHAtaW5jbHVkZS1tYWluLWd0a21tLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIGFjZmY3MTk5ODNhYTEyOTQxNDhkYzRhMzY3YzQ4OTU3ZjU1MTBlZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE3IE1heSAyMDEzIDE4OjI1OjU2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy9wcm9jbWFuLmNwcDogaW5jbHVkZSBtYWluIGd0a21tLmgKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotYWZ0ZXIgdXBkYXRlIG9mIGd0a21tIGJ1aWxkIGZhaWxlZCB3aXRoOgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUvU3VwZXJhbmR5L3RtcC9vZS1jb3JlLWVnbGliYy9zeXNyb290cy9vdmVyby91c3IvaW5jbHVkZS9ndGttbS0yLjQvZ3RrbW0vbWFpbi5oOjMzOjAsCi0gICAgICAgICAgICAgICAgIGZyb20gcHJvY21hbi5jcHA6MjY6Ci0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjkyOjc6IGVycm9yOiAnVmFsdWUnIGlzIG5vdCBhIHRlbXBsYXRlCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjkyOjU0OiBlcnJvcjogZXhwZWN0ZWQgdGVtcGxhdGUtbmFtZSBiZWZvcmUgJzwnIHRva2VuCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjkyOjU0OiBlcnJvcjogZXhwZWN0ZWQgJ3snIGJlZm9yZSAnPCcgdG9rZW4KLS9ob21lL1N1cGVyYW5keS90bXAvb2UtY29yZS1lZ2xpYmMvc3lzcm9vdHMvb3Zlcm8vdXNyL2luY2x1ZGUvZ2RrbW0tMi40L2dka21tL3R5cGVzLmg6OTI6NTQ6IGVycm9yOiBleHBlY3RlZCB1bnF1YWxpZmllZC1pZCBiZWZvcmUgJzwnIHRva2VuCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjE3NDo3OiBlcnJvcjogJ1ZhbHVlJyBpcyBub3QgYSB0ZW1wbGF0ZQotL2hvbWUvU3VwZXJhbmR5L3RtcC9vZS1jb3JlLWVnbGliYy9zeXNyb290cy9vdmVyby91c3IvaW5jbHVkZS9nZGttbS0yLjQvZ2RrbW0vdHlwZXMuaDoxNzQ6MzA6IGVycm9yOiAnR2xpYjo6VmFsdWUnIGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUKLS9ob21lL1N1cGVyYW5keS90bXAvb2UtY29yZS1lZ2xpYmMvc3lzcm9vdHMvb3Zlcm8vdXNyL2luY2x1ZGUvZ2RrbW0tMi40L2dka21tL3R5cGVzLmg6MTc0OjU4OiBlcnJvcjogZXhwZWN0ZWQgdGVtcGxhdGUtbmFtZSBiZWZvcmUgJzwnIHRva2VuCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjIwNzo3OiBlcnJvcjogJ1ZhbHVlJyBpcyBub3QgYSB0ZW1wbGF0ZQotL2hvbWUvU3VwZXJhbmR5L3RtcC9vZS1jb3JlLWVnbGliYy9zeXNyb290cy9vdmVyby91c3IvaW5jbHVkZS9nZGttbS0yLjQvZ2RrbW0vdHlwZXMuaDoyMDc6MjQ6IGVycm9yOiAnR2xpYjo6VmFsdWUnIGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUKLS9ob21lL1N1cGVyYW5keS90bXAvb2UtY29yZS1lZ2xpYmMvc3lzcm9vdHMvb3Zlcm8vdXNyL2luY2x1ZGUvZ2RrbW0tMi40L2dka21tL3R5cGVzLmg6MjA3OjUxOiBlcnJvcjogZXhwZWN0ZWQgdGVtcGxhdGUtbmFtZSBiZWZvcmUgJzwnIHRva2VuCi0vaG9tZS9TdXBlcmFuZHkvdG1wL29lLWNvcmUtZWdsaWJjL3N5c3Jvb3RzL292ZXJvL3Vzci9pbmNsdWRlL2dka21tLTIuNC9nZGttbS90eXBlcy5oOjI3NDo3OiBlcnJvcjogJ1ZhbHVlJyBpcyBub3QgYSB0ZW1wbGF0ZQotL2hvbWUvU3VwZXJhbmR5L3RtcC9vZS1jb3JlLWVnbGliYy9zeXNyb290cy9vdmVyby91c3IvaW5jbHVkZS9nZGttbS0yLjQvZ2RrbW0vdHlwZXMuaDoyNzQ6MzI6IGVycm9yOiAnR2xpYjo6VmFsdWUnIGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUKLTwuLi4+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gc3JjL3Byb2NtYW4uY3BwIHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Byb2NtYW4uY3BwIGIvc3JjL3Byb2NtYW4uY3BwCi1pbmRleCBiNWMwZDBhLi5kOWI0YjNmIDEwMDY0NAotLS0tIGEvc3JjL3Byb2NtYW4uY3BwCi0rKysgYi9zcmMvcHJvY21hbi5jcHAKLUBAIC0yMyw3ICsyMyw3IEBACi0gCi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotIAotLSNpbmNsdWRlIDxndGttbS9tYWluLmg+Ci0rI2luY2x1ZGUgPGd0a21tLmg+Ci0gI2luY2x1ZGUgPGdpb21tL3ZvbHVtZW1vbml0b3IuaD4KLSAjaW5jbHVkZSA8Z2lvbW0vaW5pdC5oPgotICNpbmNsdWRlIDxnbGliLmg+Ci0tLSAKLTEuNy40LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZmlsZXMvUmVtb3ZlLXBrZy1jb25maWctY2hlY2stZm9yLWdub21lLWljb24tdGhlbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zeXN0ZW0tbW9uaXRvci9maWxlcy9SZW1vdmUtcGtnLWNvbmZpZy1jaGVjay1mb3ItZ25vbWUtaWNvbi10aGVtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M1MTY5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zeXN0ZW0tbW9uaXRvci9maWxlcy9SZW1vdmUtcGtnLWNvbmZpZy1jaGVjay1mb3ItZ25vbWUtaWNvbi10aGVtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gMzZmZDJhYTIzZTcxMmYwNWYwY2NlNGExYmUzNDUzZmNmNDA1ZDAyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDE1IFNlcCAyMDE1IDE2OjI4OjE4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBwa2ctY29uZmlnIGNoZWNrIGZvciBnbm9tZS1pY29uLXRoZW1lCi0KLVRoZW1lIGlzIG5vdCByZXF1aXJlZCBmb3IgYnVpbGRpbmcsIGFuZCB0aGUgaWNvbnMgYXJlIHByb3ZpZGVkIGJ5Ci1hZHdhaXRhLWljb24tdGhlbWUgYW55d2F5Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRml4ZWQgaW4gY3VycmVudCB2ZXJzaW9uc10KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDM2MDA4MjMuLjQyMjYyZjIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTM3LDcgKzM3LDcgQEAgTElCWE1MX1JFUVVJUkVEPTIuMAotIFJTVkdfUkVRVUlSRUQ9Mi4xMgotIERCVVNfUkVRVUlSRUQ9MC43Ci0gCi0tUEtHX0NIRUNLX01PRFVMRVMoUFJPQ01BTiwgZ2xpYi0yLjAgPj0gJEdMSUJfUkVRVUlSRUQgZ2NvbmYtMi4wID49ICRHQ09ORl9SRVFVSVJFRCBsaWJndG9wLTIuMCA+PSAkTElCR1RPUF9SRVFVSVJFRCBsaWJ3bmNrLTEuMCA+PSAkTElCV05DS19SRVFVSVJFRCBndGsrLTIuMCA+PSAkR1RLX1JFUVVJUkVEIGdub21lLWljb24tdGhlbWUgPj0gJEdOT01FX0lDT05fVEhFTUVfUkVRVUlSRUQgZ3RrbW0tMi40ID49ICRHVEtNTV9SRVFVSVJFRCBsaWJ4bWwtMi4wID49ICRMSUJYTUxfUkVRVUlSRUQgbGlicnN2Zy0yLjAgPj0gJFJTVkdfUkVRVUlSRUQgZ2xpYm1tLTIuNCA+PSAkR0xJQk1NX1JFUVVJUkVEIGdpb21tLTIuNCA+PSAkR0lPTU1fUkVRVUlSRUQgZGJ1cy1nbGliLTEgPj0gJERCVVNfUkVRVUlSRUQpCi0rUEtHX0NIRUNLX01PRFVMRVMoUFJPQ01BTiwgZ2xpYi0yLjAgPj0gJEdMSUJfUkVRVUlSRUQgZ2NvbmYtMi4wID49ICRHQ09ORl9SRVFVSVJFRCBsaWJndG9wLTIuMCA+PSAkTElCR1RPUF9SRVFVSVJFRCBsaWJ3bmNrLTEuMCA+PSAkTElCV05DS19SRVFVSVJFRCBndGsrLTIuMCA+PSAkR1RLX1JFUVVJUkVEIGd0a21tLTIuNCA+PSAkR1RLTU1fUkVRVUlSRUQgbGlieG1sLTIuMCA+PSAkTElCWE1MX1JFUVVJUkVEIGxpYnJzdmctMi4wID49ICRSU1ZHX1JFUVVJUkVEIGdsaWJtbS0yLjQgPj0gJEdMSUJNTV9SRVFVSVJFRCBnaW9tbS0yLjQgPj0gJEdJT01NX1JFUVVJUkVEIGRidXMtZ2xpYi0xID49ICREQlVTX1JFUVVJUkVEKQotIAotIAotIEFDX0FSR19FTkFCTEUobW9yZS13YXJuaW5ncywKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZ25vbWUtc3lzdGVtLW1vbml0b3JfMi4yOC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtc3lzdGVtLW1vbml0b3IvZ25vbWUtc3lzdGVtLW1vbml0b3JfMi4yOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjM5N2JmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXN5c3RlbS1tb25pdG9yL2dub21lLXN5c3RlbS1tb25pdG9yXzIuMjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiR25vbWUgc3lzdGVtIG1vbml0b3IiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLVBSID0gInIyIgotCi1ERVBFTkRTID0gImxpYmd0b3AgZ3RrbW0gZ2xpYm1tIGdub21lLWRvYy11dGlscyBsaWJ3bmNrIGd0aysgZGJ1cy1nbGliIGxpYnJzdmcgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUiCi0KLWluaGVyaXQgZ25vbWUKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjNmMGJjYTliMGViYzdhMzY1NDY2ODUxY2Q1ODBkMTY3IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYjYyOGVkZmQzOWUzYTZiMzc0Y2UxMzNmMzY3ZDM1Njg0NzVlYjRlOTgxYTM2N2Y0ZjlkNjJhOTc4NGU1YWU1OSIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXNyYy1wcm9jbWFuLmNwcC1pbmNsdWRlLW1haW4tZ3RrbW0uaC5wYXRjaCBcCi0gICAgZmlsZTovL1JlbW92ZS1wa2ctY29uZmlnLWNoZWNrLWZvci1nbm9tZS1pY29uLXRoZW1lLnBhdGNoIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIHM6aGVscDo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUNYWEZMQUdTICs9ICItLXN0ZD1jKysxMSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiYWR3YWl0YS1pY29uLXRoZW1lIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUvYXV0b3N0YXJ0IFwKLSIKLQotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L29tZiBcCi0gICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUvaGVscCAiCi0KLVBOQkxBQ0tMSVNUW2dub21lLXN5c3RlbS1tb25pdG9yXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMTYzNS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10ZXJtaW5hbC8wMDAxLU1ha2VmaWxlLmFtLWRvLW5vdC1idWlsZC1oZWxwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtdGVybWluYWwvMDAwMS1NYWtlZmlsZS5hbS1kby1ub3QtYnVpbGQtaGVscC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc4NzRlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10ZXJtaW5hbC8wMDAxLU1ha2VmaWxlLmFtLWRvLW5vdC1idWlsZC1oZWxwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBkMjU0OWQzZWYwODUzNmJlNmQxNDE1MjRlMzM4MmZlZjA3ZmVhOGJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVHVlLCAzMCBBcHIgMjAxMyAxOTo0ODoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogZG8gbm90IGJ1aWxkIGhlbHAKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDg5ZjdlZTQuLjMxZTExYWIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAotLVNVQkRJUlMgPSBzcmMgcG8gaGVscAotK1NVQkRJUlMgPSBzcmMgcG8KLSAKLSBOVUxMID0KLSAKLS0tIAotMS43LjYuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10ZXJtaW5hbF8yLjMwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10ZXJtaW5hbF8yLjMwLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiM2JmNzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtdGVybWluYWxfMi4zMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBUZXJtaW5hbCIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTViNTFlYmE0YmE0Y2FmZTY0MDczMjI3NTMwYzA2MWVkIgotREVQRU5EUyA9ICJndGsrIGdsaWItMi4wIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGRidXMtZ2xpYiB2dGU5IGdub21lLWRvYy11dGlscyBpbnRsdG9vbC1uYXRpdmUiCi1QUiA9ICJyMSIKLQotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWRvLW5vdC1idWlsZC1oZWxwLnBhdGNoIFwKLSIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc2Nyb2xsa2VlcGVyIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3NGM0NTI4ZjAwMDY3MDcyYzJiZDg2N2QxZjhmZTg0NCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjJjN2FmMjI1MDY5OGI5ZjlmNTNjNmVhYTkzMjExYzExMThjZjJjN2UyOWNiYmFjZmQxZThhNmExMDA2OWUwN2EiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJnbm9tZS1jb21tb24tc2NoZW1hcyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvNjg2MzYvCi1QTkJMQUNLTElTVFtnbm9tZS10ZXJtaW5hbF0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lY3Vwc18wLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lY3Vwc18wLjIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ4MDcxMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZWN1cHNfMC4yLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1ERVNDUklQVElPTj0iR25vbWUgQ3VwcyBNYW5hZ2VyIgotTElDRU5TRT0iR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUz0iZ2xpYi0yLjAgZ3RrKyBwYW5nbyBjdXBzIGludGx0b29sIGxpYmdub21ldWkiCi0KLVBSID0gInIyIgotCi1pbmhlcml0IGdub21lYmFzZSBwa2djb25maWcKLQotZG9fY29tcGlsZV9hcHBlbmQgKCkgewotICAgIGNwIGxpYmdub21lY3Vwcy0xLjAucGMgbGliZ25vbWVjdXBzLTEuMC5wYy5vbGQKLSAgICBzZWQgJ3M6JHtTVEFHSU5HX0RJUl9IT1NUfTo6JyA8IGxpYmdub21lY3Vwcy0xLjAucGMub2xkID4gbGliZ25vbWVjdXBzLTEuMC5wYwotfQotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2xpYmdub21lY3Vwcy0wLjIuMy1nbGliLmgucGF0Y2ggXAotICAgIGZpbGU6Ly9saWJnbm9tZWN1cHMtMC4yLjMtY3Vwcy0xLjYucGF0Y2ggXAotIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkYzQ5MjBjMTVjOWY4ODZmNzNlYTc0ZmJmZjBhZTQ4YiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImUxMzBlODA5NDJiMzg2ZGUxOWEyODhhNGMxOTRmZjNkYmU5MTQwMzE1YjMxZTk4MjA1OGM4YmZmYmI2YTFkMjkiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLVBOQkxBQ0tMSVNUW2xpYmdub21lY3Vwc10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgbGliZ25vbWV1aSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvMDAwMS1jb25maWd1cmUtdXNlLXBrZ2NvbmZpZy1mb3ItZnJlZXR5cGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZXByaW50LzAwMDEtY29uZmlndXJlLXVzZS1wa2djb25maWctZm9yLWZyZWV0eXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzQ5ODVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvMDAwMS1jb25maWd1cmUtdXNlLXBrZ2NvbmZpZy1mb3ItZnJlZXR5cGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGVkMzFmZDg5ZjRjNzdkODkzOTA3NzRkMjk0Mjc4OThhODViMjVhYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogRnJpLCAxIEF1ZyAyMDE0IDEzOjU4OjM2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogdXNlIHBrZ2NvbmZpZyBmb3IgZnJlZXR5cGUKLQotVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotLS0tCi0gY29uZmlndXJlLmluIHwgMTIgKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNzI5Mjc4ZC4uZTU2OTQyOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTY0LDEzICsxNjQsMTEgQEAgZG5sIENoZWNraW5nIGZvciBmcmVldHlwZTIKLSBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gRlJFRVRZUEVfTElCUz0KLSBGUkVFVFlQRV9DRkxBR1M9Ci0tQUNfUEFUSF9QUk9HKEZSRUVUWVBFX0NPTkZJRywgZnJlZXR5cGUtY29uZmlnLCBubykKLS1pZiB0ZXN0ICJ4JEZSRUVUWVBFX0NPTkZJRyIgPSAieG5vIiA7IHRoZW4KLS0JQUNfTVNHX0VSUk9SKFlvdSBuZWVkIEZyZWVUeXBlMiAoZnJlZXR5cGUtZGV2ZWwgdiAyLnggcGFja2FnZSkgZm9yIHRoaXMgdmVyc2lvbiBvZiBsaWJnbm9tZXByaW50KQotLWVsc2UKLS0JRlJFRVRZUEVfQ0ZMQUdTPWAkRlJFRVRZUEVfQ09ORklHIC0tY2ZsYWdzYAotLQlGUkVFVFlQRV9MSUJTPWAkRlJFRVRZUEVfQ09ORklHIC0tbGlic2AKLS1maQotK1BLR19DSEVDS19NT0RVTEVTKEZSRUVUWVBFMiwgZnJlZXR5cGUyLCAKLSsgICAgRlJFRVRZUEVfQ0ZMQUdTPSIkQ0ZMQUdTICRGUkVFVFlQRTJfQ0ZMQUdTIgotKyAgICBGUkVFVFlQRV9MSUJTPSIkTElCUyAkRlJFRVRZUEUyX0xJQlMiLAotKyAgICBBQ19NU0dfRVJST1IoWyoqKiBVbmFibGUgdG8gZmluZCBGcmVlVHlwZTIgbGlicmFyeSAoaHR0cDovL3d3dy5mcmVldHlwZS5vcmcvKV0pCi0rKQotIAotIGxpYmdub21lcHJpbnRfc2F2ZV9sZGZsYWdzPSRMREZMQUdTCi0gTERGTEFHUz0iJExERkxBR1MgJEZSRUVUWVBFX0xJQlMiCi0tLSAKLTEuOS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvYmlzb24zLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZXByaW50L2Jpc29uMy1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWQ0MTBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvYmlzb24zLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1JbmRleDogbGliZ25vbWVwcmludC0yLjE4LjgvbGliZ25vbWVwcmludC9ncmFtbWFyLnkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJnbm9tZXByaW50LTIuMTguOC5vcmlnL2xpYmdub21lcHJpbnQvZ3JhbW1hci55Ci0rKysgbGliZ25vbWVwcmludC0yLjE4LjgvbGliZ25vbWVwcmludC9ncmFtbWFyLnkKLUBAIC05OSw3ICs5OSw3IEBAIGdub21lX3ByaW50X2ZpbHRlcl9wYXJzZV9wcm9wIChHbm9tZVByaW4KLSB9Ci0gCi0gc3RhdGljIGludCB5eWxleCAodm9pZCAqbHZhbHApOwotLXN0YXRpYyBpbnQgeXllcnJvciAoY29uc3QgY2hhciAqcyk7Ci0rc3RhdGljIGludCB5eWVycm9yIChncmFwaF90ICpnLCBjb25zdCBjaGFyICpzKTsKLSAlfQotIAotICV1bmlvbiB7Ci1AQCAtMTE3LDYgKzExNyw3IEBAIHN0YXRpYyBpbnQgeXllcnJvciAoY29uc3QgY2hhciAqcyk7Ci0gJXR5cGUgPHA+IHBvb2wKLSAKLSAlcHVyZV9wYXJzZXIKLSslcGFyc2UtcGFyYW0geyBncmFwaF90ICpncmFwaCB9Ci0gCi0gJXN0YXJ0IGdyYXBoCi0gJSUKLUBAIC0xODUsNyArMTg2LDcgQEAgZ3JhcGg6IGZpbHRlciB7Ci0gJSUKLSAKLSBzdGF0aWMgaW50Ci0teXllcnJvciAoY29uc3QgY2hhciAqcykKLSt5eWVycm9yIChncmFwaF90ICpnLCBjb25zdCBjaGFyICpzKQotIHsKLSAJcmV0dXJuIC0xOwotIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvZml4LmluY2x1ZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvbGliZ25vbWVwcmludC9maXguaW5jbHVkZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMjM1YTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvbGliZ25vbWVwcmludC9maXguaW5jbHVkZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1kaWZmIC11TnIgbGliZ25vbWVwcmludC0yLjE4Ljcub3JpZy9saWJnbm9tZXByaW50L21vZHVsZXMvY3Vwcy9nbm9tZS1wcmludC1jdXBzLXRyYW5zcG9ydC5jIGxpYmdub21lcHJpbnQtMi4xOC43L2xpYmdub21lcHJpbnQvbW9kdWxlcy9jdXBzL2dub21lLXByaW50LWN1cHMtdHJhbnNwb3J0LmMKLS0tLSBsaWJnbm9tZXByaW50LTIuMTguNy5vcmlnL2xpYmdub21lcHJpbnQvbW9kdWxlcy9jdXBzL2dub21lLXByaW50LWN1cHMtdHJhbnNwb3J0LmMJMjAwOS0wNC0xOSAxOTo0NTozNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJnbm9tZXByaW50LTIuMTguNy9saWJnbm9tZXByaW50L21vZHVsZXMvY3Vwcy9nbm9tZS1wcmludC1jdXBzLXRyYW5zcG9ydC5jCTIwMTItMTItMjMgMTI6MzQ6NTIuMDU4NjQzNTM3ICswMTAwCi1AQCAtMzUsNiArMzUsNyBAQAotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gI2luY2x1ZGUgPGN1cHMvY3Vwcy5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvbGliZ25vbWVwcmludC9mcmVldHlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnQvZnJlZXR5cGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMjdlY2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUvbGliZ25vbWVwcmludC9mcmVldHlwZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVVzZSBwcm9wZXIgbWV0aG9kIHRvIGluY2x1ZGUgZnJlZXR5cGUgaGVhZGVycwotCi1GcmVlVHlwZSB3YW50cyB0byB1c2UgdGhlc2Ugc3BlY2lhbCBtYWNyb3MgdG8gaW5jbHVkZSBpdHMgQVBJcwotc28gYmUgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGxpYmdub21lcHJpbnQtMi4xOC43L2xpYmdub21lcHJpbnQvZ25vbWUtZm9udC1mYWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJnbm9tZXByaW50LTIuMTguNy5vcmlnL2xpYmdub21lcHJpbnQvZ25vbWUtZm9udC1mYWNlLmMKLSsrKyBsaWJnbm9tZXByaW50LTIuMTguNy9saWJnbm9tZXByaW50L2dub21lLWZvbnQtZmFjZS5jCi1AQCAtMzYsNyArMzYsOSBAQAotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0tI2luY2x1ZGUgPGZyZWV0eXBlL2Z0b3V0bG4uaD4KLSsjaW5jbHVkZSA8ZnQyYnVpbGQuaD4KLSsjaW5jbHVkZSBGVF9GUkVFVFlQRV9ICi0rCi0gCi0gI2luY2x1ZGUgPGxpYmdub21lcHJpbnQvZ25vbWUtcHJpbnQtcHJpdmF0ZS5oPgotICNpbmNsdWRlIDxsaWJnbm9tZXByaW50L2dub21lLWZvbnQtcHJpdmF0ZS5oPgotSW5kZXg6IGxpYmdub21lcHJpbnQtMi4xOC43L2xpYmdub21lcHJpbnQvZ25vbWUtcmZvbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmdub21lcHJpbnQtMi4xOC43Lm9yaWcvbGliZ25vbWVwcmludC9nbm9tZS1yZm9udC5jCi0rKysgbGliZ25vbWVwcmludC0yLjE4LjcvbGliZ25vbWVwcmludC9nbm9tZS1yZm9udC5jCi1AQCAtMjgsOCArMjgsOCBAQAotIAotICNpbmNsdWRlIDxmdDJidWlsZC5oPgotICNpbmNsdWRlIEZUX0ZSRUVUWVBFX0gKLS0jaW5jbHVkZSA8ZnJlZXR5cGUvZnRnbHlwaC5oPgotLSNpbmNsdWRlIDxmcmVldHlwZS9mdGJib3guaD4KLSsjaW5jbHVkZSBGVF9HTFlQSF9ICi0rI2luY2x1ZGUgRlRfQkJPWF9ICi0gI2luY2x1ZGUgPGxpYmFydF9sZ3BsL2FydF9taXNjLmg+Ci0gI2luY2x1ZGUgPGxpYmFydF9sZ3BsL2FydF9hZmZpbmUuaD4KLSAjaW5jbHVkZSA8bGliYXJ0X2xncGwvYXJ0X3ZwYXRoLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS9saWJnbm9tZXByaW50XzIuMTguOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnRfMi4xOC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDYyYTRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lL2xpYmdub21lcHJpbnRfMi4xOC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiIKLVNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIGxpYnhtbDIgbGliZ25vbWVjdXBzIGdsaWItMi4wIHBhbmdvIGxpYmFydC1sZ3BsIGZvbnRjb25maWcgcG9wdCBnbm9tZS1jb21tb24gZnJlZXR5cGUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1pbmhlcml0IGdub21lYmFzZQotCi1TUkNfVVJJICs9ICJmaWxlOi8vZml4LmluY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9mcmVldHlwZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZ2NvbmZpZy1mb3ItZnJlZXR5cGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2Jpc29uMy1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjNiMDVmZmI1Mzg2ZTEzMTQ4N2M2YWYzMGY0YzU2YWMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxMDM0ZWM4NjUxMDUxZjg0ZDI0MjRlN2ExZGE2MWM1MzA0MjJjYzIwY2U1YjJkOWUxMDdlMWU0Njc3OGQ5NjkxIgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAke2xpYmRpcn0vJHtQTn0vJHtQVn0vbW9kdWxlcy8uZGVidWcgXAotICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS9tb2R1bGVzLyovLmRlYnVnIFwKLSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiXAotICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS9tb2R1bGVzLyouYSBcCi0gICAgJHtsaWJkaXJ9LyR7UE59LyR7UFZ9L21vZHVsZXMvKi8qLmEgXAotIgotCi1QTkJMQUNLTElTVFtsaWJnbm9tZXByaW50XSA/PSAiRGVwZW5kcyBvbiBicm9rZW4gbGliZ25vbWVjdXBzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWMvMDAwMS1jb25maWd1cmUuaW4tZHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1yZXBsYWNlLXRoZW0tLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWMvMDAwMS1jb25maWd1cmUuaW4tZHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1yZXBsYWNlLXRoZW0tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTRkMmNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dudW1lcmljL2dudW1lcmljLzAwMDEtY29uZmlndXJlLmluLWRyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtcmVwbGFjZS10aGVtLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUZyb20gZGU1ZjBhNTM1ZDZlYTE5MzJkMmM3ZGU1M2JkMzM1MTBjODY4MmVlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAxNjozNDowMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IGRyb3AgaW50cm9zcGVjdGlvbiBtYWNyb3MsIHJlcGxhY2UgdGhlbSB3aXRoIGEKLSBzdGFuZGFyZCBvbmUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDU3ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDhlMWFhMzcuLjMwODY1MDMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTkzNCw2MyArOTM0LDggQEAgQUNfU1VCU1QoTU9OT19DRkxBR1MpCi0gQUNfU1VCU1QoTU9OT19MSUJTKQotIF0pCi0gCi0tIyBHT2JqZWN0IEludHJvc3BlY3Rpb24KLS1HSVJfUkVRPTEuMC4wCi0tQUNfQVJHX0VOQUJMRShpbnRyb3NwZWN0aW9uLAotLSAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtaW50cm9zcGVjdGlvbls9QDw6QG5vL2F1dG8veWVzQDo+QF1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbRW5hYmxlIGludHJvc3BlY3Rpb24gZm9yIHRoaXMgYnVpbGRdKSwsIAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlX2ludHJvc3BlY3Rpb249bm9dKQotLQotLUFDX01TR19DSEVDS0lORyhbZm9yIGdvYmplY3QtaW50cm9zcGVjdGlvbl0pCi0tCi0tZG5sIHByZXNlbmNlL3ZlcnNpb24gY2hlY2tpbmcKLS1BU19DQVNFKFskZW5hYmxlX2ludHJvc3BlY3Rpb25dLAotLVtub10sIFsKLS0gICAgZm91bmRfaW50cm9zcGVjdGlvbj0ibm8gKGRpc2FibGVkLCB1c2UgLS1lbmFibGUtaW50cm9zcGVjdGlvbiB0byBlbmFibGUpIgotLV0sCi0tW3llc10sWwotLSAgICBQS0dfQ0hFQ0tfRVhJU1RTKFtnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wXSwsCi0tICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wIGlzIG5vdCBpbnN0YWxsZWRdKSkKLS0gICAgUEtHX0NIRUNLX0VYSVNUUyhbZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCA+PSAkR0lSX1JFUV0sCi0tICAgICAgICAgICAgICAgICAgICAgZm91bmRfaW50cm9zcGVjdGlvbj15ZXMsCi0tICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtZb3UgbmVlZCB0byBoYXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbiA+PSAkMSBpbnN0YWxsZWQgdG8gYnVpbGQgQUNfUEFDS0FHRV9OQU1FXSkpCi0tXSwKLS1bYXV0b10sWwotLSAgICBQS0dfQ0hFQ0tfRVhJU1RTKFtnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wID49ICRHSVJfUkVRXSwgZm91bmRfaW50cm9zcGVjdGlvbj15ZXMsIGZvdW5kX2ludHJvc3BlY3Rpb249bm8pCi0tZG5sIENhbm9uaWNhbGl6ZSBlbmFibGVfaW50cm9zcGVjdGlvbgotLWVuYWJsZV9pbnRyb3NwZWN0aW9uPSRmb3VuZF9pbnRyb3NwZWN0aW9uCi0tXSwKLS1bCQotLSAgICBBQ19NU0dfRVJST1IoW2ludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIC0tZW5hYmxlLWludHJvc3BlY3Rpb24sIHNob3VsZCBiZSBvbmUgb2YgQDw6QG5vL2F1dG8veWVzQDo+QF0pCi0tXSkKLStHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzEuNDYuMF0pCi0gCi0tQUNfTVNHX1JFU1VMVChbJGZvdW5kX2ludHJvc3BlY3Rpb25dKQotLQotLUlOVFJPU1BFQ1RJT05fU0NBTk5FUj0KLS1JTlRST1NQRUNUSU9OX0NPTVBJTEVSPQotLUlOVFJPU1BFQ1RJT05fR0VORVJBVEU9Ci0tSU5UUk9TUEVDVElPTl9HSVJESVI9Ci0tSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQotLWlmIHRlc3QgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgPSAieHllcyI7IHRoZW4KLS0gICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2dlbmVyYXRlIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPSIkKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9dHlwZWxpYmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wKSIKLS0gICBJTlRST1NQRUNUSU9OX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9ZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYC9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24KLS1maQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fU0NBTk5FUikKLS1BQ19TVUJTVChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fR0VORVJBVEUpCi0tQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9HSVJESVIpCi0tQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9UWVBFTElCRElSKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ0ZMQUdTKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fTElCUykKLS1BQ19TVUJTVChJTlRST1NQRUNUSU9OX01BS0VGSUxFKQotLQotLUFNX0NPTkRJVElPTkFMKEhBVkVfSU5UUk9TUEVDVElPTiwgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIikKLSBkbmwgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGluc3RhbGwgZGlyZWN0b3JpZXMgZm9yIGRpc3RjaGVjawotIEFDX0FSR19XSVRIKFtnaXItZGlyXSwKLSAJQVNfSEVMUF9TVFJJTkcoCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dudW1lcmljL2dudW1lcmljL2RvLW5vdC11c2Utc3JjZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWMvZG8tbm90LXVzZS1zcmNkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjODFiMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWMvZG8tbm90LXVzZS1zcmNkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1JbmRleDogZ251bWVyaWMtMS4xMi4wL3Rlc3QvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnVtZXJpYy0xLjEyLjAub3JpZy90ZXN0L01ha2VmaWxlLmFtCTIwMTEtMDUtMTcgMTc6NTQ6MjQuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ251bWVyaWMtMS4xMi4wL3Rlc3QvTWFrZWZpbGUuYW0JMjAxMy0xMC0xNyAyMDoyODoxOS45MjA2MTg1OTYgLTA3MDAKLUBAIC0yNSw3ICsyNSw5IEBACi0gIwotICMgOTB4eDogTWlzYyBzdHVmZi4KLSAKLS1URVNUUyA9ICQoc29ydCAkKHdpbGRjYXJkICQoc3JjZGlyKS90WzAtOV1bMC05XVswLTldWzAtOV0tKi5wbCkpCi0rVEVTVFNfRVhURU5TSU9OUz0ucGwKLStURVNUUyA9IEBhdXRvX2ZpbmRfdGVzdHNACi0rCi0gU1VQUFMgPSBjb21tb24uc3VwcCBjb21tb25kb3RzLnN1cHAgZ3VpLnN1cHAgdDgwMDMtdmFsZ3JpbmQtcGRmLnN1cHAKLSAKLSBpbXBvcnQtZGI6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbnVtZXJpYy9nbnVtZXJpY18xLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbnVtZXJpYy9nbnVtZXJpY18xLjEyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZDBmZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ251bWVyaWMvZ251bWVyaWNfMS4xMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiB8IEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmUwZGU0MTdhZjc4ZGQzNDA1NTg4MTBkMWNlZDUyZTYiCi1TRUNUSU9OID0gIngxMS91dGlscyIKLVMgPSAiJHtXT1JLRElSfS9nbnVtZXJpYy0ke1BWfSIKLURFUEVORFMgPSAiZ2RrLXBpeGJ1ZiBsaWJnc2YgZ3RrKzMgbGlieG1sMiBsaWJnbGFkZSBsaWJhcnQtbGdwbCBpbnRsdG9vbC1uYXRpdmUgbGliZ25vbWVjYW52YXMgbGliZ25vbWVwcmludCBsaWJib25vYm91aSBvcmJpdDItbmF0aXZlIGdvZmZpY2UiCi1TVU1NQVJZID0gIkdudW1lcmljIHNwcmVhZHNoZWV0IGZvciBHTk9NRSIKLQotR05PTUVfQ09NUFJFU1NfVFlQRSA9ICJ4eiIKLQotaW5oZXJpdCBnbm9tZSBweXRob25uYXRpdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kby1ub3QtdXNlLXNyY2Rpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4tZHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1yZXBsYWNlLXRoZW0tLnBhdGNoIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzZmQ4N2NjYTk1MzM0YjVkOGFjOTIyOTg5NjcwZmUyNyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjAzN2I1M2Q5MDllNWQxNDU0YjJhZmRhOGM0ZmIxZTc4MzhlMjYwMzQzZTM2ZDRlMzYyNDVmNGE1ZDBlMDQxMTEiCi0KLQotRVhUUkFfT0VDT05GPSIgLS13aXRob3V0LXBlcmwgIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJnbnVtZXJpYy1wbHVnaW4tKiIKLVBBQ0tBR0VTICs9ICJsaWJzcHJlYWRzaGVldCBsaWJzcHJlYWRzaGVldC1kZXYgZ251bWVyaWMtZ29mZmljZSBnbnVtZXJpYy1nb2ZmaWNlLWRiZyIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ251bWVyaWMvJHtQVn0vcGx1Z2lucy8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9wa2djb25maWciCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYnNwcmVhZHNoZWV0LmxhIgotRklMRVNfbGlic3ByZWFkc2hlZXQgPSAiJHtsaWJkaXJ9L2xpYnNwcmVhZHNoZWV0LSR7UFZ9LnNvIgotRklMRVNfbGlic3ByZWFkc2hlZXQtZGV2ID0gIiR7bGliZGlyfS9saWJzcHJlYWRzaGVldC5zbyIKLUZJTEVTX2dudW1lcmljLWdvZmZpY2UtZGJnICs9ICIke2xpYmRpcn0vZ29mZmljZS8qL3BsdWdpbnMvZ251bWVyaWMvLmRlYnVnIgotRklMRVNfZ251bWVyaWMtZ29mZmljZSA9ICIke2xpYmRpcn0vZ29mZmljZS8qL3BsdWdpbnMvZ251bWVyaWMvKiIKLQotIyBUaGlzIGhhY2sgd29ya3MgYXJvdW5kIHRoZSBwcm9ibGVtIG1lbnRpb25lZCBoZXJlOgotIyBodHRwczovL21haWwuZ25vbWUub3JnL2FyY2hpdmVzL2dudW1lcmljLWxpc3QvMjAxMC1GZWJydWFyeS9tc2cwMDAwNi5odG1sCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pICR7Qn0vZG9jL0MvTWFrZWZpbGUgLWUgJ3MvXHRmb3IgZmlsZSBpbiAkKG9tZmZpbGUpOyBkby9cdC1mb3IgZmlsZSBpbiAkKG9tZmZpbGUpOyBkby8nCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBnbnVtZXJpY19saWJkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJkaXJ9L2dudW1lcmljLyR7UFZ9L3BsdWdpbnMnLCBkKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ251bWVyaWNfbGliZGlyLCAnXiguKikvLiokJywKLSAgICAgICAgb3V0cHV0X3BhdHRlcm49J2dudW1lcmljLXBsdWdpbi0lcycsCi0gICAgICAgIGRlc2NyaXB0aW9uPSdHbnVtZXJpYyBwbHVnaW4gJXMnLAotICAgICAgICBleHRyYV9kZXBlbmRzPScnLAotICAgICAgICByZWN1cnNpdmU9VHJ1ZSwKLSAgICAgICAgcHJlcGVuZD1UcnVlKQotfQotCi1QTkJMQUNLTElTVFtnbnVtZXJpY10gPz0gIkRlcGVuZHMgb24gYnJva2VuIGxpYmdub21lcHJpbnQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGh1bWIvZmlsZXMvMDAwMS1Ecm9wLWhlbHAtZGlyZWN0b3J5LWZyb20tYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGh1bWIvZmlsZXMvMDAwMS1Ecm9wLWhlbHAtZGlyZWN0b3J5LWZyb20tYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMTY5NjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2ZpbGVzLzAwMDEtRHJvcC1oZWxwLWRpcmVjdG9yeS1mcm9tLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSA0OGNiODc4Y2I3MjRlN2E1MDkyNjBmMDE0ZGI2MzY1NTEwYjhiNTQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE3IE1heSAyMDE2IDE0OjA1OjI5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERyb3AgaGVscCBkaXJlY3RvcnkgZnJvbSBidWlsZAotCi1JdCBoYXJkY29kZXMgdGhlIHVzZSBvZiB4bWwycG8gdG9vbCBmb3JtIGdub21lLWRvYy11dGlscwotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggZDA1Njg3NS4uM2ZjNGE0MSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACi0tU1VCRElSUyA9IG00IGNvcHktbi1wYXN0ZSBkYXRhIHBvIGd0aHVtYiBleHRlbnNpb25zIHRlc3RzIGhlbHAKLStTVUJESVJTID0gbTQgY29weS1uLXBhc3RlIGRhdGEgcG8gZ3RodW1iIGV4dGVuc2lvbnMgdGVzdHMKLSAKLSBBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAotIEFNQ0ZMQUdTID0gLWZQSUMgLURQSUMKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2ZpbGVzL3BhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2ZpbGVzL3BhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGNlNWM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0aHVtYi9maWxlcy9wYXJhbGxlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi1Gcm9tIDM0OTY5Y2RlMWRjYjc3NDBiNGE3YzNiNmUzZDA0ZDQ4MWU1OTgwYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAzMSBKdWwgMjAxMiAxNzoyNjoyNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogRml4IHBhcmFsbGVsIGJ1aWxkIHByb2JsZW1zIHdpdGggZW51bSBnZW5lcmF0aW9uCi0KLVRoaXMgaXMgYSBiYWNrcG9ydCBmcm9tIGEgcGF0Y2ggYWdhaW5zdCBtYXN0ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwOTI1XQotLS0tCi0gZXh0ZW5zaW9ucy9maWxlX3Rvb2xzL01ha2VmaWxlLmFtICAgIHwgICAxMCArKysrLS0tLS0tCi0gZXh0ZW5zaW9ucy9pbXBvcnRlci9NYWtlZmlsZS5hbSAgICAgIHwgICAxMCArKysrLS0tLS0tCi0gZXh0ZW5zaW9ucy9waXhidWZfc2F2ZXJzL01ha2VmaWxlLmFtIHwgICAxMCArKysrLS0tLS0tCi0gZ3RodW1iL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwgICAxMCArKysrLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvZmlsZV90b29scy9NYWtlZmlsZS5hbSBiL2V4dGVuc2lvbnMvZmlsZV90b29scy9NYWtlZmlsZS5hbQotaW5kZXggNzc4NWVmZi4uZDcwYThhNSAxMDA2NDQKLS0tLSBhL2V4dGVuc2lvbnMvZmlsZV90b29scy9NYWtlZmlsZS5hbQotKysrIGIvZXh0ZW5zaW9ucy9maWxlX3Rvb2xzL01ha2VmaWxlLmFtCi1AQCAtMjQsMTcgKzI0LDE2IEBAIEhFQURFUl9GSUxFUyA9IAkJCQlcCi0gCWd0aC1maWxlLXRvb2wtdW5kby5oCQlcCi0gCXByZWZlcmVuY2VzLmgKLSAKLS1lbnVtLXR5cGVzLmg6ICQoSEVBREVSX0ZJTEVTKSAkKEdMSUJfTUtFTlVNUykKLStlbnVtLXR5cGVzLmg6ICQoSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpZm5kZWYgRU5VTV9UWVBFU19IXG4jZGVmaW5lIEVOVU1fVFlQRVNfSFxuXG4jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cblxuR19CRUdJTl9ERUNMU1xuIiBcCi0gCQktLWZwcm9kICIvKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuIiBcCi0gCQktLXZoZWFkICJHVHlwZSBAZW51bV9uYW1lQF9nZXRfdHlwZSAodm9pZCk7XG4jZGVmaW5lIEdUSF9UWVBFX0BFTlVNU0hPUlRAIChAZW51bV9uYW1lQF9nZXRfdHlwZSgpKVxuIiBcCi0gCQktLWZ0YWlsICJHX0VORF9ERUNMU1xuXG4jZW5kaWYgLyogRU5VTV9UWVBFU19IICovIiBcCi0gCQkkXj4geGdlbi0kKEBGKSBcCi0tCSYmIChjbXAgLXMgeGdlbi0kKEBGKSBlbnVtLXR5cGVzLmggfHwgY3AgeGdlbi0kKEBGKSBlbnVtLXR5cGVzLmggKSBcCi0tCSYmIHJtIC1mIHhnZW4tJChARikgKQotKwkmJiBtdiAtZiB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuaCApCi0gCi0tZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykgZW51bS10eXBlcy5oCi0rZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykKLSAJJChBTV9WX0dFTikoICQoR0xJQl9NS0VOVU1TKSBcCi0gCQktLWZoZWFkICIjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cbiIgXAotIAkJLS1mcHJvZCAiXG4vKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuI2luY2x1ZGUgXCJAZmlsZW5hbWVAXCIiIFwKLUBAIC00Miw4ICs0MSw3IEBAIGVudW0tdHlwZXMuYzogJChIRUFERVJfRklMRVMpIGVudW0tdHlwZXMuaAotIAkJLS12cHJvZCAiICAgICAgeyBAVkFMVUVOQU1FQCwgXCJAVkFMVUVOQU1FQFwiLCBcIkB2YWx1ZW5pY2tAXCIgfSwiIFwKLSAJCS0tdnRhaWwgIiAgICAgIHsgMCwgTlVMTCwgTlVMTCB9XG4gICAgfTtcbiAgICBldHlwZSA9IGdfQHR5cGVAX3JlZ2lzdGVyX3N0YXRpYyAoXCJARW51bU5hbWVAXCIsIHZhbHVlcyk7XG4gIH1cbiAgcmV0dXJuIGV0eXBlO1xufVxuIiBcCi0gCQkkXj4geGdlbi0kKEBGKSBcCi0tCSYmIChjbXAgLXMgeGdlbi0kKEBGKSBlbnVtLXR5cGVzLmMgfHwgY3AgeGdlbi0kKEBGKSBlbnVtLXR5cGVzLmMgKSBcCi0tCSYmIHJtIC1mIHhnZW4tJChARikgKQotKwkmJiBtdiAtZiB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuYyApCi0gCi0gbGliZmlsZV90b29sc19sYV9TT1VSQ0VTID0gCQlcCi0gCSQoRU5VTV9UWVBFUykJCQlcCi1kaWZmIC0tZ2l0IGEvZXh0ZW5zaW9ucy9pbXBvcnRlci9NYWtlZmlsZS5hbSBiL2V4dGVuc2lvbnMvaW1wb3J0ZXIvTWFrZWZpbGUuYW0KLWluZGV4IDI5ZTdmMmMuLjA3YzFlYmEgMTAwNjQ0Ci0tLS0gYS9leHRlbnNpb25zL2ltcG9ydGVyL01ha2VmaWxlLmFtCi0rKysgYi9leHRlbnNpb25zL2ltcG9ydGVyL01ha2VmaWxlLmFtCi1AQCAtMTQsMTcgKzE0LDE2IEBAIEhFQURFUl9GSUxFUyA9IAkJCQkJXAotIAlwcmVmZXJlbmNlcy5oCQkJCVwKLSAJdXRpbHMuaAotIAotLWd0aC1pbXBvcnQtZW51bS10eXBlcy5oOiAkKEhFQURFUl9GSUxFUykgJChHTElCX01LRU5VTVMpCi0rZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmg6ICQoSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpZm5kZWYgRU5VTV9UWVBFU19IXG4jZGVmaW5lIEVOVU1fVFlQRVNfSFxuXG4jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cblxuR19CRUdJTl9ERUNMU1xuIiBcCi0gCQktLWZwcm9kICIvKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuIiBcCi0gCQktLXZoZWFkICJHVHlwZSBAZW51bV9uYW1lQF9nZXRfdHlwZSAodm9pZCk7XG4jZGVmaW5lIEdUSF9UWVBFX0BFTlVNU0hPUlRAIChAZW51bV9uYW1lQF9nZXRfdHlwZSgpKVxuIiBcCi0gCQktLWZ0YWlsICJHX0VORF9ERUNMU1xuXG4jZW5kaWYgLyogRU5VTV9UWVBFU19IICovIiBcCi0gCQkkXj4geGdlbi0kKEBGKSBcCi0tCSYmIChjbXAgLXMgeGdlbi0kKEBGKSBndGgtaW1wb3J0LWVudW0tdHlwZXMuaCB8fCBjcCB4Z2VuLSQoQEYpIGd0aC1pbXBvcnQtZW51bS10eXBlcy5oICkgXAotLQkmJiBybSAtZiB4Z2VuLSQoQEYpICkKLSsJJiYgbXYgLWYgeGdlbi0kKEBGKSBndGgtaW1wb3J0LWVudW0tdHlwZXMuaCApCi0gCi0tZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmM6ICQoSEVBREVSX0ZJTEVTKSBndGgtaW1wb3J0LWVudW0tdHlwZXMuaAotK2d0aC1pbXBvcnQtZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykKLSAJJChBTV9WX0dFTikoICQoR0xJQl9NS0VOVU1TKSBcCi0gCQktLWZoZWFkICIjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cbiIgXAotIAkJLS1mcHJvZCAiXG4vKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuI2luY2x1ZGUgXCJAZmlsZW5hbWVAXCIiIFwKLUBAIC0zMiw4ICszMSw3IEBAIGd0aC1pbXBvcnQtZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykgZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmgKLSAJCS0tdnByb2QgIiAgICAgIHsgQFZBTFVFTkFNRUAsIFwiQFZBTFVFTkFNRUBcIiwgXCJAdmFsdWVuaWNrQFwiIH0sIiBcCi0gCQktLXZ0YWlsICIgICAgICB7IDAsIE5VTEwsIE5VTEwgfVxuICAgIH07XG4gICAgZXR5cGUgPSBnX0B0eXBlQF9yZWdpc3Rlcl9zdGF0aWMgKFwiQEVudW1OYW1lQFwiLCB2YWx1ZXMpO1xuICB9XG4gIHJldHVybiBldHlwZTtcbn1cbiIgXAotIAkJJF4+IHhnZW4tJChARikgXAotLQkmJiAoY21wIC1zIHhnZW4tJChARikgZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmMgfHwgY3AgeGdlbi0kKEBGKSBndGgtaW1wb3J0LWVudW0tdHlwZXMuYyApIFwKLS0JJiYgcm0gLWYgeGdlbi0kKEBGKSApCi0rCSYmIG12IC1mIHhnZW4tJChARikgZ3RoLWltcG9ydC1lbnVtLXR5cGVzLmMgKQotIAotIGxpYmltcG9ydGVyX2xhX1NPVVJDRVMgPSAJCQlcCi0gCSQoRU5VTV9UWVBFUykJCQkJXAotZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvcGl4YnVmX3NhdmVycy9NYWtlZmlsZS5hbSBiL2V4dGVuc2lvbnMvcGl4YnVmX3NhdmVycy9NYWtlZmlsZS5hbQotaW5kZXggYmZlOWYzNC4uNDc2NGMzMiAxMDA2NDQKLS0tLSBhL2V4dGVuc2lvbnMvcGl4YnVmX3NhdmVycy9NYWtlZmlsZS5hbQotKysrIGIvZXh0ZW5zaW9ucy9waXhidWZfc2F2ZXJzL01ha2VmaWxlLmFtCi1AQCAtMTAsMTcgKzEwLDE2IEBAIEVOVU1fVFlQRVMgPQkJCQlcCi0gSEVBREVSX0ZJTEVTID0gCQkJCVwKLSAJcHJlZmVyZW5jZXMuaAotIAotLWVudW0tdHlwZXMuaDogJChIRUFERVJfRklMRVMpICQoR0xJQl9NS0VOVU1TKQotK2VudW0tdHlwZXMuaDogJChIRUFERVJfRklMRVMpCi0gCSQoQU1fVl9HRU4pKCAkKEdMSUJfTUtFTlVNUykgXAotIAkJLS1maGVhZCAiI2lmbmRlZiBFTlVNX1RZUEVTX0hcbiNkZWZpbmUgRU5VTV9UWVBFU19IXG5cbiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuXG5HX0JFR0lOX0RFQ0xTXG4iIFwKLSAJCS0tZnByb2QgIi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4iIFwKLSAJCS0tdmhlYWQgIkdUeXBlIEBlbnVtX25hbWVAX2dldF90eXBlICh2b2lkKTtcbiNkZWZpbmUgR1RIX1RZUEVfQEVOVU1TSE9SVEAgKEBlbnVtX25hbWVAX2dldF90eXBlKCkpXG4iIFwKLSAJCS0tZnRhaWwgIkdfRU5EX0RFQ0xTXG5cbiNlbmRpZiAvKiBFTlVNX1RZUEVTX0ggKi8iIFwKLSAJCSRePiB4Z2VuLSQoQEYpIFwKLS0JJiYgKGNtcCAtcyB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuaCB8fCBjcCB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuaCApIFwKLS0JJiYgcm0gLWYgeGdlbi0kKEBGKSApCi0rCSYmIG12IC1mIHhnZW4tJChARikgZW51bS10eXBlcy5oICkKLSAKLS1lbnVtLXR5cGVzLmM6ICQoSEVBREVSX0ZJTEVTKSBlbnVtLXR5cGVzLmgKLStlbnVtLXR5cGVzLmM6ICQoSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuIiBcCi0gCQktLWZwcm9kICJcbi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4jaW5jbHVkZSBcIkBmaWxlbmFtZUBcIiIgXAotQEAgLTI4LDggKzI3LDcgQEAgZW51bS10eXBlcy5jOiAkKEhFQURFUl9GSUxFUykgZW51bS10eXBlcy5oCi0gCQktLXZwcm9kICIgICAgICB7IEBWQUxVRU5BTUVALCBcIkBWQUxVRU5BTUVAXCIsIFwiQHZhbHVlbmlja0BcIiB9LCIgXAotIAkJLS12dGFpbCAiICAgICAgeyAwLCBOVUxMLCBOVUxMIH1cbiAgICB9O1xuICAgIGV0eXBlID0gZ19AdHlwZUBfcmVnaXN0ZXJfc3RhdGljIChcIkBFbnVtTmFtZUBcIiwgdmFsdWVzKTtcbiAgfVxuICByZXR1cm4gZXR5cGU7XG59XG4iIFwKLSAJCSRePiB4Z2VuLSQoQEYpIFwKLS0JJiYgKGNtcCAtcyB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuYyB8fCBjcCB4Z2VuLSQoQEYpIGVudW0tdHlwZXMuYyApIFwKLS0JJiYgcm0gLWYgeGdlbi0kKEBGKSApCi0rCSYmIG12IC1mIHhnZW4tJChARikgZW51bS10eXBlcy5jICkKLSAKLSBsaWJwaXhidWZfc2F2ZXJzX2xhX1NPVVJDRVMgPSAJXAotIAkkKEVOVU1fVFlQRVMpCQlcCi1kaWZmIC0tZ2l0IGEvZ3RodW1iL01ha2VmaWxlLmFtIGIvZ3RodW1iL01ha2VmaWxlLmFtCi1pbmRleCBlOWUzODVlLi4yZjE0ZTAzIDEwMDY0NAotLS0tIGEvZ3RodW1iL01ha2VmaWxlLmFtCi0rKysgYi9ndGh1bWIvTWFrZWZpbGUuYW0KLUBAIC0yOTYsMTcgKzI5NiwxNiBAQCBndGh1bWJfQ0ZMQUdTID0JCQkJCQkJXAotIAktREdUSFVNQl9FWFRFTlNJT05TX0RJUj1cIiQoZXh0ZW5zaW9uc19kaXIpXCIJCVwKLSAJJChOVUxMKQotIAotLWd0aC1lbnVtLXR5cGVzLmg6ICQoUFVCTElDX0hFQURFUl9GSUxFUykgJChHTElCX01LRU5VTVMpCi0rZ3RoLWVudW0tdHlwZXMuaDogJChQVUJMSUNfSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpZm5kZWYgR1RIX0VOVU1fVFlQRVNfSFxuI2RlZmluZSBHVEhfRU5VTV9UWVBFU19IXG5cbiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuXG5HX0JFR0lOX0RFQ0xTXG4iIFwKLSAJCS0tZnByb2QgIi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4iIFwKLSAJCS0tdmhlYWQgIkdUeXBlIEBlbnVtX25hbWVAX2dldF90eXBlICh2b2lkKTtcbiNkZWZpbmUgR1RIX1RZUEVfQEVOVU1TSE9SVEAgKEBlbnVtX25hbWVAX2dldF90eXBlKCkpXG4iIFwKLSAJCS0tZnRhaWwgIkdfRU5EX0RFQ0xTXG5cbiNlbmRpZiAvKiBHVEhfRU5VTV9UWVBFU19IICovIiBcCi0gCQkkXj4geGdlbi0kKEBGKSBcCi0tCSYmIChjbXAgLXMgeGdlbi0kKEBGKSBndGgtZW51bS10eXBlcy5oIHx8IGNwIHhnZW4tJChARikgZ3RoLWVudW0tdHlwZXMuaCApIFwKLS0JJiYgcm0gLWYgeGdlbi0kKEBGKSApCi0rCSYmIG12IC1mIHhnZW4tJChARikgZ3RoLWVudW0tdHlwZXMuaCApCi0gCi0tZ3RoLWVudW0tdHlwZXMuYzogJChQVUJMSUNfSEVBREVSX0ZJTEVTKSBndGgtZW51bS10eXBlcy5oCi0rZ3RoLWVudW0tdHlwZXMuYzogJChQVUJMSUNfSEVBREVSX0ZJTEVTKQotIAkkKEFNX1ZfR0VOKSggJChHTElCX01LRU5VTVMpIFwKLSAJCS0tZmhlYWQgIiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuIiBcCi0gCQktLWZwcm9kICJcbi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4jaW5jbHVkZSBcIkBmaWxlbmFtZUBcIiIgXAotQEAgLTMxNCw4ICszMTMsNyBAQCBndGgtZW51bS10eXBlcy5jOiAkKFBVQkxJQ19IRUFERVJfRklMRVMpIGd0aC1lbnVtLXR5cGVzLmgKLSAJCS0tdnByb2QgIiAgICAgIHsgQFZBTFVFTkFNRUAsIFwiQFZBTFVFTkFNRUBcIiwgXCJAdmFsdWVuaWNrQFwiIH0sIiBcCi0gCQktLXZ0YWlsICIgICAgICB7IDAsIE5VTEwsIE5VTEwgfVxuICAgIH07XG4gICAgZXR5cGUgPSBnX0B0eXBlQF9yZWdpc3Rlcl9zdGF0aWMgKFwiQEVudW1OYW1lQFwiLCB2YWx1ZXMpO1xuICB9XG4gIHJldHVybiBldHlwZTtcbn1cbiIgXAotIAkJJF4+IHhnZW4tJChARikgXAotLQkmJiAoY21wIC1zIHhnZW4tJChARikgZ3RoLWVudW0tdHlwZXMuYyB8fCBjcCB4Z2VuLSQoQEYpIGd0aC1lbnVtLXR5cGVzLmMgKSBcCi0tCSYmIHJtIC1mIHhnZW4tJChARikgKQotKwkmJiBtdiAtZiB4Z2VuLSQoQEYpIGd0aC1lbnVtLXR5cGVzLmMgKQotIAotIGd0aC1tYXJzaGFsLmg6IGd0aC1tYXJzaGFsLmxpc3QgJChHTElCX0dFTk1BUlNIQUwpCi0gCSQoQU1fVl9HRU4pKCAkKEdMSUJfR0VOTUFSU0hBTCkgJChzcmNkaXIpL2d0aC1tYXJzaGFsLmxpc3QgLS1oZWFkZXIgLS1wcmVmaXg9Z3RoX21hcnNoYWwgPiAkQCApCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0aHVtYi9ndGh1bWJfMi4xMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2d0aHVtYl8yLjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZDNkZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3RodW1iL2d0aHVtYl8yLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gImdUaHVtYiBpcyBhbiBpbWFnZSB2aWV3ZXIgYW5kIGJyb3dzZXIgZm9yIHRoZSBHTk9NRSBEZXNrdG9wIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi1ERVBFTkRTID0gImdub21lLWNvbW1vbi1uYXRpdmUgZ2xpYi0yLjAgZ3RrKyBsaWJ4bWwyIGdub21lLWRvYy11dGlscyBsaWJ1bmlxdWUgZ2NvbmYgbGlicG5nIGdzdHJlYW1lciBqcGVnIHRpZmYgZ3N0LXBsdWdpbnMtYmFzZSBpbnRsdG9vbC1uYXRpdmUgZ2NvbmYtbmF0aXZlIgotCi1QUiA9ICJyNCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nbm9tZS1rZXlyaW5nIC0tZGlzYWJsZS1saWJzb3VwIC0tZGlzYWJsZS1leGl2MiAtLWRpc2FibGUtY2x1dHRlciIKLQotaW5oZXJpdCBnbm9tZSBwa2djb25maWcKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTdmYzEzMjIxYjBjNWQ4MGMyN2EyZTI1YTNhM2FjNmYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjZjgwOTY5NTIzMGFiODg5MmEwNzhiZTQ1NGE0MmFkZTg2NTc1NGM3MmVjMWRhN2MzZDc0ZDQzMTBkZTU0ZjFkIgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRHJvcC1oZWxwLWRpcmVjdG9yeS1mcm9tLWJ1aWxkLnBhdGNoIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgcm0gLWYgJHtTfS9tNC9nbm9tZS1kb2MtdXRpbHMubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vJHtCUE59L2V4dGVuc2lvbnMvKi5hCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vZXh0ZW5zaW9ucy8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtCUE59L2V4dGVuc2lvbnMvKi5leHRlbnNpb24iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vZXh0ZW5zaW9ucy8qLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L2V4dGVuc2lvbnMvLmRlYnVnLyIKLQotCi1QTkJMQUNLTElTVFtndGh1bWJdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGdzdHJlYW1lciAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjI4LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndmZzL2d2ZnNfMS4yOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmI3NTdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjI4LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJndmZzIGlzIGEgdXNlcnNwYWNlIHZpcnR1YWwgZmlsZXN5c3RlbSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDVkZjM4ZGQ3N2MzNWVjODQzMWYyMTI0MTBhMzMyOWUiCi0KLWluaGVyaXQgZ25vbWUgYmFzaC1jb21wbGV0aW9uCi0KLURFUEVORFMgKz0gImxpYnNlY3JldCBnbGliLTIuMCBnY29uZiBpbnRsdG9vbC1uYXRpdmUgbGliZ3VkZXYgdWRpc2tzMiIKLQotU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzLyR7QlBOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7QlBOfS0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkMjM5OWExYTIxN2RkNTAzMGU4ODMwYzdlN2M4MTNjMiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjQ1OGM0Y2I2ODU3MGY2ZWY0YTllMTUyOTk1YzYyZDAwNTdjM2UwYTA3ZWQ2NGQ4NGM3MjAwY2RkMjJmMGJkMTciCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1nZHUgXAotICAgIC0tZW5hYmxlLXVkaXNrczIgXAotICAgIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIFwKLSAgICAtLXdpdGgtYXJjaGl2ZS1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgLS13aXRoLWFyY2hpdmUtbGlicz0ke1NUQUdJTkdfTElCRElSfSBcCi0iCi0KLVBBQ0tBR0VTID0rICJndmZzZC1mdHAgZ3Zmc2Qtc2Z0cCBndmZzZC10cmFzaCIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9nbGliLTIuMCBcCi0gICAgJHtkYXRhZGlyfS9HQ29uZiBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy8qLnNvIFwKLSAgICAke2xpYmRpcn0vdG1wZmlsZXMuZCBcCi0gICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotIgotUkRFUEVORFNfJHtQTn0gPSAidWRpc2tzMiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvLmRlYnVnLyoiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy8qLmxhIgotCi1GSUxFU19ndmZzZC1mdHAgPSAiJHtsaWJleGVjZGlyfS9ndmZzZC1mdHAgJHtkYXRhZGlyfS9ndmZzL21vdW50cy9mdHAubW91bnQiCi1GSUxFU19ndmZzZC1zZnRwID0gIiR7bGliZXhlY2Rpcn0vZ3Zmc2Qtc2Z0cCAke2RhdGFkaXJ9L2d2ZnMvbW91bnRzL3NmdHAubW91bnQiCi1GSUxFU19ndmZzZC10cmFzaCA9ICIke2xpYmV4ZWNkaXJ9L2d2ZnNkLXRyYXNoICR7ZGF0YWRpcn0vZ3Zmcy9tb3VudHMvdHJhc2gubW91bnQiCi0KLVJSRUNPTU1FTkRTX2d2ZnNkLWZ0cCArPSAib3BlbnNzaC1zZnRwIG9wZW5zc2gtc3NoIgotCi1QQUNLQUdFQ09ORklHID89ICJsaWJncGhvdG8yICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWZjXSA9ICItLWVuYWJsZS1hZmMsIC0tZGlzYWJsZS1hZmMsIGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCi1QQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0tZW5hYmxlLWFyY2hpdmUsIC0tZGlzYWJsZS1hcmNoaXZlLCBsaWJhcmNoaXZlIgotUEFDS0FHRUNPTkZJR1thdmFoaV0gPSAiLS1lbmFibGUtYXZhaGksIC0tZGlzYWJsZS1hdmFoaSwgYXZhaGkiCi1QQUNLQUdFQ09ORklHW2djcl0gPSAiLS1lbmFibGUtZ2NyLCAtLWRpc2FibGUtZ2NyLCBnY3IiCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLCAtLWRpc2FibGUtZ3RrLCBndGsrMyIKLVBBQ0tBR0VDT05GSUdbaHR0cF0gPSAiLS1lbmFibGUtaHR0cCwgLS1kaXNhYmxlLWh0dHAsIGxpYnNvdXAtMi40IgotUEFDS0FHRUNPTkZJR1tsaWJtdHBdID0gIi0tZW5hYmxlLWxpYm10cCwgLS1kaXNhYmxlLWxpYm10cCwgbGlibXRwIgotUEFDS0FHRUNPTkZJR1tsaWJncGhvdG8yXSA9ICItLWVuYWJsZS1ncGhvdG8yLCAtLWRpc2FibGUtZ3Bob3RvMiwgbGliZ3Bob3RvMiIKLVBBQ0tBR0VDT05GSUdbc2FtYmFdID0gIi0tZW5hYmxlLXNhbWJhLCAtLWRpc2FibGUtc2FtYmEsIHNhbWJhIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0td2l0aG91dC1zeXN0ZW1kdXNlcnVuaXRkaXIsc3lzdGVtZCIKLQotIyBuZWVkcyBtZXRhLWZpbGVzeXN0ZW1zCi1QQUNLQUdFQ09ORklHW2Z1c2VdID0gIi0tZW5hYmxlLWZ1c2UsIC0tZGlzYWJsZS1mdXNlLCBmdXNlIgotCi0jIGxpYmNkaW8tcGFyYW5vaWEgcmVjaXBlIGRvZXNuJ3QgZXhpc3QgeWV0Ci1QQUNLQUdFQ09ORklHW2NkZGFdID0gIi0tZW5hYmxlLWNkZGEsIC0tZGlzYWJsZS1jZGRhLCBsaWJjZGlvLXBhcmFub2lhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Zmcy9ndmZzXzEuMzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjMyLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4MDY4OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjMyLjEuYmIKQEAgLTAsMCArMSw2NiBAQAorREVTQ1JJUFRJT04gPSAiZ3ZmcyBpcyBhIHVzZXJzcGFjZSB2aXJ0dWFsIGZpbGVzeXN0ZW0iCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA1ZGYzOGRkNzdjMzVlYzg0MzFmMjEyNDEwYTMzMjllIgorCitpbmhlcml0IGdub21lIGJhc2gtY29tcGxldGlvbiBnZXR0ZXh0CisKK0RFUEVORFMgKz0gImxpYnNlY3JldCBnbGliLTIuMCBnY29uZiBpbnRsdG9vbC1uYXRpdmUgbGliZ3VkZXYgdWRpc2tzMiBwb2xraXQgc2hhZG93LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzLyR7QlBOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7QlBOfS0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjYmU3NjZiNDZmMzI0ZTE3ZDdhYmNmYjRhODlhMTY4NCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQwYjZjOWVkYWIwOWQ1MjQ3MjM1NTY1N2EyZjBhMTQ4MzFiMmU2YzU4Y2FiYTM5NWY3MjFhYjY4M2Y4MzZhZGUiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1nZHUgXAorICAgIC0tZW5hYmxlLXVkaXNrczIgXAorICAgIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIFwKKyAgICAtLXdpdGgtYXJjaGl2ZS1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgLS13aXRoLWFyY2hpdmUtbGlicz0ke1NUQUdJTkdfTElCRElSfSBcCisiCisKK1BBQ0tBR0VTID0rICJndmZzZC1mdHAgZ3Zmc2Qtc2Z0cCBndmZzZC10cmFzaCIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9nbGliLTIuMCBcCisgICAgJHtkYXRhZGlyfS9HQ29uZiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAorICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy8qLnNvIFwKKyAgICAke2xpYmRpcn0vdG1wZmlsZXMuZCBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorIgorUkRFUEVORFNfJHtQTn0gPSAidWRpc2tzMiIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvLmRlYnVnLyoiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy8qLmxhIgorCitGSUxFU19ndmZzZC1mdHAgPSAiJHtsaWJleGVjZGlyfS9ndmZzZC1mdHAgJHtkYXRhZGlyfS9ndmZzL21vdW50cy9mdHAubW91bnQiCitGSUxFU19ndmZzZC1zZnRwID0gIiR7bGliZXhlY2Rpcn0vZ3Zmc2Qtc2Z0cCAke2RhdGFkaXJ9L2d2ZnMvbW91bnRzL3NmdHAubW91bnQiCitGSUxFU19ndmZzZC10cmFzaCA9ICIke2xpYmV4ZWNkaXJ9L2d2ZnNkLXRyYXNoICR7ZGF0YWRpcn0vZ3Zmcy9tb3VudHMvdHJhc2gubW91bnQiCisKK1JSRUNPTU1FTkRTX2d2ZnNkLWZ0cCArPSAib3BlbnNzaC1zZnRwIG9wZW5zc2gtc3NoIgorCitQQUNLQUdFQ09ORklHID89ICJsaWJncGhvdG8yICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWZjXSA9ICItLWVuYWJsZS1hZmMsIC0tZGlzYWJsZS1hZmMsIGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCitQQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0tZW5hYmxlLWFyY2hpdmUsIC0tZGlzYWJsZS1hcmNoaXZlLCBsaWJhcmNoaXZlIgorUEFDS0FHRUNPTkZJR1thdmFoaV0gPSAiLS1lbmFibGUtYXZhaGksIC0tZGlzYWJsZS1hdmFoaSwgYXZhaGkiCitQQUNLQUdFQ09ORklHW2djcl0gPSAiLS1lbmFibGUtZ2NyLCAtLWRpc2FibGUtZ2NyLCBnY3IiCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLCAtLWRpc2FibGUtZ3RrLCBndGsrMyIKK1BBQ0tBR0VDT05GSUdbaHR0cF0gPSAiLS1lbmFibGUtaHR0cCwgLS1kaXNhYmxlLWh0dHAsIGxpYnNvdXAtMi40IgorUEFDS0FHRUNPTkZJR1tsaWJtdHBdID0gIi0tZW5hYmxlLWxpYm10cCwgLS1kaXNhYmxlLWxpYm10cCwgbGlibXRwIgorUEFDS0FHRUNPTkZJR1tsaWJncGhvdG8yXSA9ICItLWVuYWJsZS1ncGhvdG8yLCAtLWRpc2FibGUtZ3Bob3RvMiwgbGliZ3Bob3RvMiIKK1BBQ0tBR0VDT05GSUdbc2FtYmFdID0gIi0tZW5hYmxlLXNhbWJhLCAtLWRpc2FibGUtc2FtYmEsIHNhbWJhIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0td2l0aG91dC1zeXN0ZW1kdXNlcnVuaXRkaXIsc3lzdGVtZCIKKworIyBuZWVkcyBtZXRhLWZpbGVzeXN0ZW1zCitQQUNLQUdFQ09ORklHW2Z1c2VdID0gIi0tZW5hYmxlLWZ1c2UsIC0tZGlzYWJsZS1mdXNlLCBmdXNlIgorCisjIGxpYmNkaW8tcGFyYW5vaWEgcmVjaXBlIGRvZXNuJ3QgZXhpc3QgeWV0CitQQUNLQUdFQ09ORklHW2NkZGFdID0gIi0tZW5hYmxlLWNkZGEsIC0tZGlzYWJsZS1jZGRhLCBsaWJjZGlvLXBhcmFub2lhIgorCisjIEZpeCB1cCBwZXJtaXNzaW9ucyBvbiBwb2xraXQgcnVsZXMuZCB0byB3b3JrIHdpdGggcnBtNCBjb25zdHJhaW50cworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJY2htb2QgNzAwICR7RH0vJHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJY2hvd24gcG9sa2l0ZDpyb290ICR7RH0vJHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nd2VhdGhlci9saWJnd2VhdGhlcjNfMy4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nd2VhdGhlci9saWJnd2VhdGhlcjNfMy4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MjBmMGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3dlYXRoZXIvbGliZ3dlYXRoZXIzXzMuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotREVQRU5EUyA9ICJsaWJ4bWwyIGdjb25mIGxpYnNvdXAtMi40IGd0ayszIgotCi1QTkJMQUNLTElTVFtsaWJnd2VhdGhlcjNdID89ICJDT05GTElDVDogODc2IGZpbGVzIGFyZSBjb25mbGljdGluZyB3aXRoIGxpYmd3ZWF0aGVyIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotIyBlLmcuIHN5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL3NoYXJlL2xpYmd3ZWF0aGVyL2xvY2F0aW9ucy5kdGQKLSMgICAgICBzeXNyb290cy9xZW11eDg2LTY0L3Vzci9zaGFyZS9saWJnd2VhdGhlci9Mb2NhdGlvbnMuemhfVFcueG1sCi0KLUJQTiA9ICJsaWJnd2VhdGhlciIKLQotaW5oZXJpdCBnbm9tZQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjFhOTZjNmYxOWM5YTBiYzZiNGUxMmFjYzlhOGE4NWQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MDQxNTI2ZmEwNDY2Yjk5ZGFlNWNmMDZjMmNjNzAzNzZmMjU1MzFlZWM1ZDU4YjFlMTM3OGFjZmIzMDI0MTBjIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6IGRvYyA6IDpnJyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dub21lKiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pY29ucyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxvY2F0aW9uZGF0YSIKLUZJTEVTXyR7UE59LWxvY2F0aW9uZGF0YSA9ICIke2RhdGFkaXJ9L2xpYmd3ZWF0aGVyLypvY2F0aW9ucyoiCi0KLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nd2VhdGhlci9saWJnd2VhdGhlcl8yLjMwLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nd2VhdGhlci9saWJnd2VhdGhlcl8yLjMwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNjlmMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3dlYXRoZXIvbGliZ3dlYXRoZXJfMi4zMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotREVQRU5EUyA9ICJsaWJ4bWwyIGdjb25mIGxpYnNvdXAtMi40IGd0aysgbGliZ25vbWUta2V5cmluZyIKLQotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiZjZhMGEwNTA1MTM0MWVjYjI1MGYzMzJlM2VkZmI4OCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImI4MzUzNzQ2NjE0MjNmMzdjNDZhYThlMzczNjhhZTI0YTY4ODU2ZjExN2I3YzIxZTQ3NWEyMWVmZGJhNTI2NGMiCi1HTk9NRV9DT01QUkVTU19UWVBFPSJiejIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczogZG9jIDogOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ25vbWUqIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbG9jYXRpb25kYXRhIgotRklMRVNfJHtQTn0tbG9jYXRpb25kYXRhID0gIiR7ZGF0YWRpcn0vbGliZ3dlYXRoZXIvTG9jYXRpb25zKiIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvNjg2MDgvCi1QTkJMQUNLTElTVFtsaWJnd2VhdGhlcl0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL01ha2VmaWxlLmFtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvTWFrZWZpbGUuYW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MGJhOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvTWFrZWZpbGUuYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBsaWJhcnRfbGdwbC0yLjMuMjEvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJhcnRfbGdwbC0yLjMuMjEub3JpZy9NYWtlZmlsZS5hbQkyMDA5LTA0LTE4IDA1OjI5OjI1LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmFydF9sZ3BsLTIuMy4yMS9NYWtlZmlsZS5hbQkyMDEwLTExLTIzIDIzOjEyOjMyLjQ0NTQ1MDA3NSAtMDgwMAotQEAgLTcsOCArNyw4IEBACi0gCi0gQlVJTFRfU09VUkNFUyA9IGFydF9jb25maWcuaAotIAotLWFydF9jb25maWcuaDoKLS0JLi9nZW5fYXJ0X2NvbmZpZy5zaCA+IGFydF9jb25maWcuaAotKyNhcnRfY29uZmlnLmg6Ci0rIwkuL2dlbl9hcnRfY29uZmlnLnNoID4gYXJ0X2NvbmZpZy5oCi0gCi0gRVhUUkFfRElTVCA9IAkJCVwKLSAJbGliYXJ0LmRlZgkJXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvYWFyY2g2NC9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0L2FydF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAwZmZjMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0L2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnLmMgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgOAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FhcmNoNjRiZS9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0YmUvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBmZmMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FhcmNoNjRiZS9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDgKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0YmVfMzIvYXJ0X2NvbmZpZy5oIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvYWFyY2g2NGJlXzMyL2FydF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlNzRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hYXJjaDY0YmVfMzIvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcuYyAqLwotCi0jZGVmaW5lIEFSVF9TSVpFT0ZfQ0hBUiAxCi0jZGVmaW5lIEFSVF9TSVpFT0ZfU0hPUlQgMgotI2RlZmluZSBBUlRfU0laRU9GX0lOVCA0Ci0jZGVmaW5lIEFSVF9TSVpFT0ZfTE9ORyA0Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBhcnRfdTg7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGFydF91MTY7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBhcnRfdTMyOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvYXJtL2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FybS9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZTc0YWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvYXJtL2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnLmMgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgNAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FybWViL2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2FybWViL2FydF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlNzRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9hcm1lYi9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDQKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9pMzg2L2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2kzODYvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU3NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2kzODYvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcuYyAqLwotCi0jZGVmaW5lIEFSVF9TSVpFT0ZfQ0hBUiAxCi0jZGVmaW5lIEFSVF9TSVpFT0ZfU0hPUlQgMgotI2RlZmluZSBBUlRfU0laRU9GX0lOVCA0Ci0jZGVmaW5lIEFSVF9TSVpFT0ZfTE9ORyA0Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBhcnRfdTg7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGFydF91MTY7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBhcnRfdTMyOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvaTU4Ni9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9pNTg2L2FydF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlNzRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9pNTg2L2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnLmMgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgNAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL2k2ODYvYXJ0X2NvbmZpZy5oIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvaTY4Ni9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZTc0YWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvaTY4Ni9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDQKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9taXBzL2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHMvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU3NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHMvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcuYyAqLwotCi0jZGVmaW5lIEFSVF9TSVpFT0ZfQ0hBUiAxCi0jZGVmaW5lIEFSVF9TSVpFT0ZfU0hPUlQgMgotI2RlZmluZSBBUlRfU0laRU9GX0lOVCA0Ci0jZGVmaW5lIEFSVF9TSVpFT0ZfTE9ORyA0Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBhcnRfdTg7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGFydF91MTY7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBhcnRfdTMyOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvbWlwczY0L2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHM2NC9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMGNkOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvbWlwczY0L2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDgKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9taXBzNjRlbC9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9taXBzNjRlbC9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMGNkOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvbWlwczY0ZWwvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgOAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHNlbC9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9taXBzZWwvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU3NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL21pcHNlbC9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDQKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC9wb3dlcnBjL2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3Bvd2VycGMvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU3NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3Bvd2VycGMvYXJ0X2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZ2VuX2FydF9jb25maWcuYyAqLwotCi0jZGVmaW5lIEFSVF9TSVpFT0ZfQ0hBUiAxCi0jZGVmaW5lIEFSVF9TSVpFT0ZfU0hPUlQgMgotI2RlZmluZSBBUlRfU0laRU9GX0lOVCA0Ci0jZGVmaW5lIEFSVF9TSVpFT0ZfTE9ORyA0Ci0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBhcnRfdTg7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGFydF91MTY7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBhcnRfdTMyOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvcG93ZXJwYzY0L2FydF9jb25maWcuaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3Bvd2VycGM2NC9hcnRfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwMGZmYzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGwvcG93ZXJwYzY0L2FydF9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGdlbl9hcnRfY29uZmlnLmMgKi8KLQotI2RlZmluZSBBUlRfU0laRU9GX0NIQVIgMQotI2RlZmluZSBBUlRfU0laRU9GX1NIT1JUIDIKLSNkZWZpbmUgQVJUX1NJWkVPRl9JTlQgNAotI2RlZmluZSBBUlRfU0laRU9GX0xPTkcgOAotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYXJ0X3U4OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBhcnRfdTE2OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYXJ0X3UzMjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3g4Nl82NC9hcnRfY29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbC94ODZfNjQvYXJ0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBmZmMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmFydC1sZ3BsL2xpYmFydC1sZ3BsL3g4Nl82NC9hcnRfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBnZW5fYXJ0X2NvbmZpZy5jICovCi0KLSNkZWZpbmUgQVJUX1NJWkVPRl9DSEFSIDEKLSNkZWZpbmUgQVJUX1NJWkVPRl9TSE9SVCAyCi0jZGVmaW5lIEFSVF9TSVpFT0ZfSU5UIDQKLSNkZWZpbmUgQVJUX1NJWkVPRl9MT05HIDgKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGFydF91ODsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgYXJ0X3UxNjsKLXR5cGVkZWYgdW5zaWduZWQgaW50IGFydF91MzI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbF8yLjMuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJhcnQtbGdwbC9saWJhcnQtbGdwbF8yLjMuMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMjk1MDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliYXJ0LWxncGwvbGliYXJ0LWxncGxfMi4zLjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIGZ1bmN0aW9ucyBmb3IgMkQgZ3JhcGhpY3MiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCi1QUiA9ICJyMiIKLQotQVJUX0NPTkZJRyA9ICIke0hPU1RfQVJDSH0vYXJ0X2NvbmZpZy5oIgotCi0jIGNhbid0IHVzZSBnbm9tZS5vZWNsYXNzIGR1ZSB0byBfIGluIGZpbGVuYW1lCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJhcnRfbGdwbC8yLjMvbGliYXJ0X2xncGwtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgZmlsZTovLyR7QVJUX0NPTkZJR30gXAotICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5hbS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA4NTU5ZmYzYzY3ZmQ5NWQ1N2IwYzVlOTFhNmI0MzAyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkYzExZTc0YzEwZmM5ZmZlNDE4ODUzN2UyYjM3MGMwYWJhY2NhN2Q4OTAyMWQ0ZDMwM2FmZGY3ZmQ3NDc2ZmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1ERVBFTkRTID0gIiIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2xpYmFydDItY29uZmlnIgotCi1TID0gIiR7V09SS0RJUn0vbGliYXJ0X2xncGwtJHtQVn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGNwICR7V09SS0RJUn0vJHtBUlRfQ09ORklHfSAke1N9L2FydF9jb25maWcuaAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVrYmRfMi4zMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVrYmRfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTJkOGUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21la2JkXzIuMzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUga2V5Ym9hcmQgbGlicmFyeSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZlMjljNjg4ZDkxMmRhMTJiNjZiNzNlMzJiMDNkODEyIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotCi1ERVBFTkRTID0gImdjb25mIGd0aysgZ2xpYi0yLjAgbGlieGtsYXZpZXIgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUiCi0KLWluaGVyaXQgZ25vbWUKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZGUzMmE2ZTNlMzQ2NGI1NjZlZWNkYzQzMzJiZjM0YmQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGQ1MmM0Y2M3ZDgzYWQ3ZWY5NjRhMWJjYjRkYjg3NDA3ZTY1YjAwZmZjM2U3MGMwODhjYTRlZTczODNkMjU2IgotR05PTUVfQ09NUFJFU1NfVFlQRT0iYnoyIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIGZpbmQgJHtCfSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIHNlZCAtaSBzOictSSQoaW5jbHVkZWRpciknOictSS4nOmcKLSAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkvdXNyL2luY2x1ZGUnOictSSR7U1RBR0lOR19JTkNESVJ9JzpnCi19Ci0KLVBOQkxBQ0tMSVNUW2xpYmdub21la2JkXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYwOC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZWtiZF8zLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZWtiZF8zLjIyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJlZDgxZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21la2JkXzMuMjIuMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkdOT01FIGtleWJvYXJkIGxpYnJhcnkiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT02ZTI5YzY4OGQ5MTJkYTEyYjY2YjczZTMyYjAzZDgxMiIKKworU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKKworREVQRU5EUyA9ICJnY29uZiBnbGliLTIuMCBsaWJ4a2xhdmllciBndGsrMyBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWUgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQKKworR05PTUVfQ09NUFJFU1NfVFlQRSA9ICJ4eiIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2IxZWJmOTlmNDI1NGM5OTkyMjE2M2MyNjJjN2ZmMDQiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzNDBiMzBkYWJmZWJiZDRlMGU2YzBmZTM0YTM3ODk2NmRkNTY0MGI1ZDQ0NTk1YWI4YTE5YjBiZTI1NWQ3N2RmIgorCitFWFRSQV9PRUNPTkZfcmVtb3ZlID0gIi0tZGlzYWJsZS1zY2hlbWFzLWluc3RhbGwiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmlkbC9saWJpZGwuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC5pbmMKaW5kZXggYTQwMjAzNy4uMWE1YzgxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliaWRsL2xpYmlkbC5pbmMKQEAgLTEsNCArMSw1IEBACiBERVNDUklQVElPTiA9ICJMaWJyYXJ5IGZvciBwYXJzaW5nIENPUkJBIElETCBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9hbmRyZXd0di5vcmcvbGliSURMLyIKIFNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCiBMSUNFTlNFID0gIkxHUEx2MisiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYnRpbWV6b25lbWFwL2xpYnRpbWV6b25lbWFwXzAuNC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlidGltZXpvbmVtYXAvbGlidGltZXpvbmVtYXBfMC40LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZhZWVkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYnRpbWV6b25lbWFwL2xpYnRpbWV6b25lbWFwXzAuNC41LmJiCkBAIC0wLDAgKzEsMjIgQEAKK0RFU0NSSVBUSU9OID0gIlRpbWUgem9uZSBtYXAgd2lkZ2V0IGZvciBHdGsrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3RpbWV6b25lbWFwIgorU0VDVElPTiA9ICJkZXZlbC9saWIiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUudWJ1bnR1LmNvbS91YnVudHUvcG9vbC9tYWluL2xpYnQvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIuZ3ogXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjA1NDMwNmZhOTk4ZmU1ODBmMTdiNjhhYTFlMTY1NTFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyN2U2NGExN2M2NzZjMWJjZGEzYjZiYTMzOTRkM2QwMTI1MGU1YWM5YTQ5MjIyYjlmZjU3MzdkOTBiMTUzODMiCisKKworREVQRU5EUyA9ICJndGsrMyBnZGstcGl4YnVmIGxpYnNvdXAtMi40IGpzb24tZ2xpYiBnbm9tZS1jb21tb24tbmF0aXZlIFwKKyIKKworQiA9ICIke1N9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCShjZCAke1N9OyBOT0NPTkZJR1VSRT0ieWVzIiAuICR7U30vYXV0b2dlbi5zaCkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzL2lkbC1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMvaWRsLXN5c3Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNjJjZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMvaWRsLXN5c3Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLUluZGV4OiBuYXV0aWx1cy0yLjI0LjIvYWRkLWluY2x1ZGUtcHJlZml4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmF1dGlsdXMtMi4yNC4yLm9yaWcvYWRkLWluY2x1ZGUtcHJlZml4CTIwMDgtMTAtMDYgMTc6MjI6MjEuMDAwMDAwMDAwICswMDAwCi0rKysgbmF1dGlsdXMtMi4yNC4yL2FkZC1pbmNsdWRlLXByZWZpeAkyMDA5LTA0LTA5IDE2OjAwOjA1LjAwMDAwMDAwMCArMDAwMAotQEAgLTEgKzEgQEAKLS1zZWQgLWUgJ3MvXi8gLycgLWUgJ3MvICAqLyAvZycgLWUgJ3MvIC8gLUkgL2cnIC1lICdzLyAtSSAkLy8nCi0rc2VkIC1lICdzOl46IDonIC1lICdzOiAgKjogOmcnIC1lICdzOiA6IC1JICciJFNZU1JPT1QiJzpnJyAtZSAnczogLUkgJyIkU1lTUk9PVCInJDo6JwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMvbm8tR19ESVNBQkxFX0RFUFJFQ0FURUQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1cy9uby1HX0RJU0FCTEVfREVQUkVDQVRFRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNhNjE1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1cy9uby1HX0RJU0FCTEVfREVQUkVDQVRFRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gZTcyMzNkOThjMTE0YjAzYzdjOGI5NmQxZjQxNzcwNDUyZGExNGFhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbXguZGU+Ci1EYXRlOiBNb24sIDE3IE9jdCAyMDExIDAwOjU5OjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5hdXRpbHVzIGJ1aWxkIGZhaWxzIGZvciBuZXdlciBnbGliIHZlcnNpb25zCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWJ1aWxkIHdpdGggZ2xpYi0yLjAgdjIuMzAuMCBydW4gaW50byBlcnJvcnMgZm9yIGF0IGxlYXN0IEdfQ09OU1RfUkVUVVJOIG1pc3NpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdteC5kZT4KLS0tLQotIGNvbmZpZ3VyZS5pbiAgICB8ICAgIDIgKy0KLSBlZWwvTWFrZWZpbGUuYW0gfCAgICAxIC0KLSAyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggOTdlMTcxZS4uODU5YTA5NyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMzQyLDcgKzM0Miw3IEBAIEFDX1NVQlNUKENPUkVfQ0ZMQUdTKQotIENPUkVfTElCUz0iYCRQS0dfQ09ORklHIC0tbGlicyAkQ09SRV9NT0RVTEVTYCAkeF9saWJzIgotIEFDX1NVQlNUKENPUkVfTElCUykKLSAKLS1ESVNBQkxFX0RFUFJFQ0FURURfQ0ZMQUdTPSItREdfRElTQUJMRV9ERVBSRUNBVEVEIC1ER0RLX1BJWEJVRl9ESVNBQkxFX0RFUFJFQ0FURUQiCi0rRElTQUJMRV9ERVBSRUNBVEVEX0NGTEFHUz0iLURHREtfUElYQlVGX0RJU0FCTEVfREVQUkVDQVRFRCIKLSBBQ19TVUJTVChESVNBQkxFX0RFUFJFQ0FURURfQ0ZMQUdTKQotIAotIGRubCBNdWx0aW1lZGlhIGtleXMKLWRpZmYgLS1naXQgYS9lZWwvTWFrZWZpbGUuYW0gYi9lZWwvTWFrZWZpbGUuYW0KLWluZGV4IGIxZmUzNTYuLmMxZDU2Y2QgMTAwNjQ0Ci0tLS0gYS9lZWwvTWFrZWZpbGUuYW0KLSsrKyBiL2VlbC9NYWtlZmlsZS5hbQotQEAgLTEwLDcgKzEwLDYgQEAgSU5DTFVERVMgPQkJCQkJCVwKLSAJLUREQVRBRElSPVwiIiQoZGF0YWRpcikiXCIJCQlcCi0gCS1EU09VUkNFX0RBVEFESVI9XCIiJCh0b3Bfc3JjZGlyKS9kYXRhIlwiCVwKLSAJLURHTk9NRUxPQ0FMRURJUj1cIiIkKHByZWZpeCkvJHtEQVRBRElSTkFNRX0vbG9jYWxlIlwiCVwKLS0JLURHX0RJU0FCTEVfREVQUkVDQVRFRAkJCQlcCi0gCS1ER0RLX1BJWEJVRl9ESVNBQkxFX0RFUFJFQ0FURUQJCQlcCi0gCS1ER01FTlVfSV9LTk9XX1RISVNfSVNfVU5TVEFCTEUJCQlcCi0gCSQoTlVMTCkKLS0tIAotMS43LjQuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1czNfMy4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1czNfMy4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ODBmOTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXMzXzMuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotIyBuYXV0aWx1cyBPRSBidWlsZCBmaWxlCi0jIENvcHlyaWdodCAoQykgMjAwNSwgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZAotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBwYWNrYWdlcy9DT1BZSU5HKQotCi1MSUNFTlNFPSJHUEx2MiAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYwOGE0NDY4MDk5MTNmYzliM2M3MThmMGVhZWEwNDI2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1mMzBhOTcxNmVmMzc2MmUzNDY3YTJmNjJiZjc5MGYwYSIKLQotUFIgPSAicjQiCi0KLURFUEVORFMgPSAibGlibm90aWZ5IGd0ayszIGxpYnVuaXF1ZSBndmZzIGxpYnJzdmcgbGliZXhpZiBnbm9tZS1kZXNrdG9wMyIKLSMgb3B0aW9uYWw6IHRyYWNrZXIKLQotIyB0byBpbmNsdWRlIG5hdXRpbHVzMy9uby10cnktcnVuLXN0cmZ0aW1lLmRpZmYgYmVmb3JlIHRoZSByZXN0Ci1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke0JQTn06IgotQlBOID0gIm5hdXRpbHVzIgotaW5oZXJpdCBnbm9tZQotCi1TUkNfVVJJICs9ICJmaWxlOi8vbm8tdHJ5LXJ1bi1zdHJmdGltZS5kaWZmIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMTIzMTQzMjhiNTlhYTFkZmQ4MzYxOWY3MThiODFiZDUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjNDgyZDZlN2JhYmNjMjM4MzA0Y2Y1NTU4NmNkZjdlMmIyODA2MDI1MjE0YTE0M2VkMzU1ZjBkODliMzNiMTU0IgotCi1FWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1ndGstZG9jICAtLWRpc2FibGUtdXBkYXRlLW1pbWVkYiAtLWVuYWJsZS1uc3QtZXh0ZW5zaW9uIgotZXhwb3J0IFNZU1JPT1QgPSAiJHtTVEFHSU5HX0RJUl9IT1NUfSIKLQotZG9fY29uZmlndXJlKCkgewotICAgIHNlZCAtaSAtZSAvZG9jcy9kICR7U30vTWFrZWZpbGUuYW0KLSAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gImd2ZnMgZ3Zmc2QtZnRwIGd2ZnNkLXNmdHAgZ3Zmc2QtdHJhc2ggZ2xpYi0yLjAtdXRpbHMiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyBcCi0gICAgICAgICAgICAgICAgL3Vzci9saWJleGVjLyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9uYXV0aWx1cyogXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucyovKi5zbyBcCi0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIi91c3IvbGliZXhlYy8uZGVidWcgXAotICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zKi8uZGVidWciCi0KLSMgRG9uJ3QgbWFrZSBuYXV0aWxzIGRyYWcgdXMgaW4KLVBSSVZBVEVfTElCUyA9ICJsaWJuYXV0aWx1cy1leHRlbnNpb24uc28uMSIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLWlmIFsgLW4gIiREIiBdOyB0aGVuCi0gICAgZXhpdCAxCi1maQotCi1nbGliLWNvbXBpbGUtc2NoZW1hcyAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMKLX0KLQotIyAzLjIuMS1yNC9uYXV0aWx1cy0zLjIuMS9lZWwvZWVsLWdub21lLWV4dGVuc2lvbnMuYzozNDo1MDogZmF0YWwgZXJyb3I6IGxpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC11dGlscy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0jIDMuMi4xLXI0L25hdXRpbHVzLTMuMi4xL2VlbC9lZWwtZWRpdGFibGUtbGFiZWwuYzozMTA1OjU1OiBlcnJvcjogJ0dUS19TVE9DS19DVVQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQotUE5CTEFDS0xJU1RbbmF1dGlsdXMzXSA/PSAiQlJPS0VOOiBmYWlscyB0byBidWlsZCwgbWF5YmUgbWlzc2luZyBkZXBlbmRlbmN5IG9uIGdub21lLWRlc2t0b3AtdXRpbHMuaCBwcm92aWRlciAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzIuMzIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzIuMzIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FmN2Y1Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1c18yLjMyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0jIG5hdXRpbHVzIE9FIGJ1aWxkIGZpbGUKLSMgQ29weXJpZ2h0IChDKSAyMDA1LCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIHBhY2thZ2VzL0NPUFlJTkcpCi0KLUxJQ0VOU0U9IkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2MwMDQ4NTM2ZTQzNjQyYTFmM2E3MjRjMjkwOTg3MmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWYzMGE5NzE2ZWYzNzYyZTM0NjdhMmY2MmJmNzkwZjBhIgotCi1QUiA9ICJyNiIKLQotREVQRU5EUyA9ICJnZGstcGl4YnVmIGd0aysgbGlidW5pcXVlIGd2ZnMgbGlicnN2ZyBsaWJleGlmIGVzb3VuZCBnbm9tZS1kZXNrdG9wIG9yYml0Mi1uYXRpdmUiCi0jIG9wdGlvbmFsOiB0cmFja2VyCi0KLWluaGVyaXQgZ25vbWUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjUxNTY1YWExMGQxNjI1ZGZmNTZlMzgxMjI4MzQ2OTExIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMmQ0ZmYyOGM3YTdhYTVkNDBlYjI0NjgxNDk5NTRhNTY0YzI1N2EzMDUxODM3NzMwNTc1ODRkMjJkMTUzNDdhMiIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotU1JDX1VSSSArPSAiZmlsZTovL2lkbC1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uby10cnktcnVuLXN0cmZ0aW1lLmRpZmYgXAotICAgICAgICAgICAgZmlsZTovL25vLUdfRElTQUJMRV9ERVBSRUNBVEVELnBhdGNoIFwKLSIKLQotCi1FWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1ndGstZG9jICAtLWRpc2FibGUtdXBkYXRlLW1pbWVkYiAiCi1leHBvcnQgU1lTUk9PVCA9ICIke1NUQUdJTkdfRElSX0hPU1R9IgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgc2VkIC1pIC1lIC9kb2NzL2QgJHtTfS9NYWtlZmlsZS5hbQotICAgIGF1dG90b29sc19kb19jb25maWd1cmUKLSAgICAjIFdlIG5lZWQgbmF0aXZlIG9yYml0LWlkbCB3aXRoIHRhcmdldCBpZGwgZmlsZXMuIE5vIHdheSB0byBzYXkgaXQgaW4gYSBjbGVhbiB3YXk6Ci0gICAgZmluZCAke0J9IC1uYW1lIE1ha2VmaWxlIC1leGVjIHNlZCAtaSAnL1wvdXNyXC9iaW5cL29yYml0LWlkbC0yL3tzOi91c3IvYmluOiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfTo7czovdXNyL3NoYXJlOiR7U1RBR0lOR19EQVRBRElSfTpnfScge30gXDsKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiZ3ZmcyBndmZzZC1mdHAgZ3Zmc2Qtc2Z0cCBndmZzZC10cmFzaCBnbGliLW5ldHdvcmtpbmciCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKLQotIyBEb24ndCBtYWtlIG5hdXRpbHMzIGRyYWcgdXMgaW4KLVBSSVZBVEVfTElCUyA9ICJsaWJuYXV0aWx1cy1leHRlbnNpb24uc28uMSIKLQotCi1QTkJMQUNLTElTVFtuYXV0aWx1c10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZ25vbWUtZGVza3RvcCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDJfMi4xNC4xOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL29yYml0Mi9vcmJpdDJfMi4xNC4xOS5iYgppbmRleCBmOWFmMmVlLi5lYjQzOTcyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9vcmJpdDIvb3JiaXQyXzIuMTQuMTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvb3JiaXQyL29yYml0Ml8yLjE0LjE5LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJDT1JCQSBPUkIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdub21lLm9yZy9wcm9qZWN0cy9PUkJpdDIiCiBTRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgogTElDRU5TRSA9ICJHUEwtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWRkMjIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQWRkcmVzcy1ib29rIGFwcGxpY2F0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9waW1saWNvLXByb2plY3Qub3JnL2NvbnRhY3RzLmh0bWwiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIEdQTHYzKyAiCi1TRUNUSU9OID0gIngxMSIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKyBldm9sdXRpb24tZGF0YS1zZXJ2ZXIgaW50bHRvb2wtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAibGliZWRhdGEtYm9vayIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdjb25mCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdub21lLXZmcyIKLUVYVFJBX09FTUFLRSArPSAiR0NPTkZfRElTQUJMRV9NQUtFRklMRV9TQ0hFTUFfSU5TVEFMTD0xIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N0b2NrX2NvbnRhY3QucG5nICR7RH0vJHtkYXRhZGlyfS9waXhtYXBzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3RvY2tfcGVyc29uLnBuZyAke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9waXhtYXBzL3N0b2NrX2NvbnRhY3QucG5nIFwKLSAgICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N0b2NrX3BlcnNvbi5wbmcgXAotICAgICAgICAke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IiCi0KLVNSQ19VUkkgPSAiZmlsZTovL3N0b2NrX2NvbnRhY3QucG5nIFwKLSAgICAgICAgICAgZmlsZTovL3N0b2NrX3BlcnNvbi5wbmcgXAotICAgICAgICAgICBmaWxlOi8vY29udGFjdHMtY29uZGl0aW9uYWxseS1pbnN0YWxsLXNjaGVtYS5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzL2NvbnRhY3RzLWNvbmRpdGlvbmFsbHktaW5zdGFsbC1zY2hlbWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzL2NvbnRhY3RzLWNvbmRpdGlvbmFsbHktaW5zdGFsbC1zY2hlbWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYjc4ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0cy9jb250YWN0cy1jb25kaXRpb25hbGx5LWluc3RhbGwtc2NoZW1hLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotSW5zdGFsbCBzY2hlbWEgc2hvdWxkIHJlc3BlY3QgdG8gR0NPTkZfRElTQUJMRV9NQUtFRklMRV9TQ0hFTUFfSU5TVEFMTAotCi1JZiBHQ09ORl9ESVNBQkxFX01BS0VGSUxFX1NDSEVNQV9JTlNUQUxMIGlzIHNldCwgdGhlIHNjaGVtYSBzaG91bGQgbm90Ci1iZSBpbnN0YWxsZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGRhdGEvTWFrZWZpbGUuYW0gfCAgICA3ICsrKystLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RhdGEvTWFrZWZpbGUuYW0gYi9kYXRhL01ha2VmaWxlLmFtCi1pbmRleCBmNzkwODIzLi5iNmZkNjQzIDEwMDY0NAotLS0tIGEvZGF0YS9NYWtlZmlsZS5hbQotKysrIGIvZGF0YS9NYWtlZmlsZS5hbQotQEAgLTE0LDEzICsxNCwxNCBAQCBkaXN0X21hbjFfTUFOUyA9IGNvbnRhY3RzLjEKLSAKLSBpZiBIQVZFX0dDT05GCi0gaW5zdGFsbC1kYXRhLWxvY2FsOgotLQlHQ09ORl9DT05GSUdfU09VUkNFPSQoR0NPTkZfU0NIRU1BX0NPTkZJR19TT1VSQ0UpIFwKLSsJaWYgWyAiJChHQ09ORl9ESVNBQkxFX01BS0VGSUxFX1NDSEVNQV9JTlNUQUxMKSIgIT0gIjEiIF07IHRoZW4gXAotKwkJR0NPTkZfQ09ORklHX1NPVVJDRT0kKEdDT05GX1NDSEVNQV9DT05GSUdfU09VUkNFKSBcCi0gCQkkKEdDT05GVE9PTCkgLS1tYWtlZmlsZS1pbnN0YWxsLXJ1bGUgJChzY2hlbWFfREFUQSkgfHwgXAotIAkJKGVjaG8gO1wKLSAJCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjsgXAotIAkJZWNobyAiSW5zdGFsbGF0aW9uIG9mIHNjaGVtYXMgZmFpbGVkLCBpbnN0YWxsIHRoZW0gbWFudWFsbHkiOyBcCi0tCQllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiI7KQotLQkJQHRydWUKLSsJCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjspOyBcCi0rCWZpCi0gZW5kaWYKLSAKLSBDTEVBTkZJTEVTID0gJChkZXNrdG9wX0RBVEEpCi0tLSAKLTEuNy43LjYKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0cy9tYWtlLTM4Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHMvbWFrZS0zODIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3Y2ZlZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0cy9tYWtlLTM4Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUZpeCBmb3Igc3RyaWN0ZXIgcGFyc2VyIGluIG1ha2UgMy44Mi4gVGhpcyBmaXggaGFzIGJlZW4gcHVzaGVkIHRvIHVwc3RyZWFtIGdpdC4KLQotSkwgLSAxNS8xMi8xMAotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi0KLUluZGV4OiBnaXQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZS5hbQotKysrIGdpdC9NYWtlZmlsZS5hbQotQEAgLTExLDQgKzExLDQgQEAgRElTVENMRUFORklMRVMgPSAkKElOVExUT09MX0JVSUxUKQotIE1BSU5UQUlORVJDTEVBTkZJTEVTID0gYWNsb2NhbC5tNCBjb21waWxlIGNvbmZpZy5ndWVzcyBjb25maWcuc3ViIGNvbmZpZ3VyZSBkZXBjb21wICQoSU5UTFRPT0xfQlVJTFQ6PS5pbikgaW5zdGFsbC1zaCBsdG1haW4uc2ggbWtpbnN0YWxsZGlycyBNYWtlZmlsZS5pbiBtaXNzaW5nCi0gCi0gc25hcHNob3Q6Ci0tICAgICAgICAkKE1BS0UpIGRpc3QgZGlzdGRpcj0kKFBBQ0tBR0UpLXNuYXBgZGF0ZSArIiVZJW0lZCJgCi0rCSQoTUFLRSkgZGlzdCBkaXN0ZGlyPSQoUEFDS0FHRSktc25hcGBkYXRlICsiJVklbSVkImAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHNfMC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0c18wLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNmNmOTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby9jb250YWN0c18wLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIGNvbnRhY3RzLmluYwotCi1QUiA9ICJyOCIKLQotU1JDX1VSSSA9KyAiaHR0cDovL3BpbWxpY28tcHJvamVjdC5vcmcvc291cmNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImFhYjVhZmZiZjkzZDZmYTdiOTc4YjMyM2E4ZDQ0ZGUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljYWNlYzk4ZjgxMjM5OTMwMzNhYWEyNTVmM2Y0YzA0Yzg2YTFiZTY1ZTQ4N2RkMjFmMGFhYTU0Mzg0YTZmNmQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jb250YWN0cy1tYWluLmg7ZW5kbGluZT0xODttZDU9MDM3MWFmNDZmYmM3MmUzMzU3NWUwMDcyZGNhNWZiMTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NvbnRhY3RzLWRidXMuYztlbmRsaW5lPTE4O21kNT1lNGRhOWFjMWEwNTM5ZmFmYzdkZjQzMTAxMDkwNGZkNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY29udGFjdHMtZ3RrLmM7ZW5kbGluZT0yMTttZDU9MWMyZTNmNTViMjE1NjM1ZWZmNGJhNzZmNzY5NmY4ZWUiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICAjIEl0IHVzZWQgOCBzcGFjZXMgdG8gaW5zdGVhZCBvZiBhIHRhYiwgYnV0IGl0IGRvZXNuJ3Qgd29yayBmb3IgdXMKLSAgICBzZWQgLWkgJ3MvXiAgICAgICAgJChNQUtFKSBkaXN0IGRpc3RkaXI9L1x0JChNQUtFKSBkaXN0IGRpc3RkaXIvJyBNYWtlZmlsZS5hbQotfQotCi1QTkJMQUNLTElTVFtjb250YWN0c10gPz0gIkZhaWxzIHRvIGZldGNoLCBwaW1saWNvLXByb2plY3Qub3JnIGlzIGdvbmUgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMjg1NC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL2NvbnRhY3RzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDZlOWQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vY29udGFjdHNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBjb250YWN0cy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NvbnRhY3RzLW1haW4uaDtlbmRsaW5lPTIwO21kNT05ZGMzNTMxYzkxNGZiNmQ2ZDRhOGQxYWVlNDUxOWZlZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY29udGFjdHMtZGJ1cy5jO2VuZGxpbmU9MjA7bWQ1PTk1ZTAyZDc3ZjE1NWZiZDA3YTE0ZGJhMzM0OGI5YjAzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jb250YWN0cy1ndGsuYztlbmRsaW5lPTIzO21kNT1lMWVlOWI5ZTcyMDQ1ZjJkM2FhNDRjZjE3MzEzYjQ2ZSIKLQotU1JDUkVWID0gIjE5ODUzODkzZmRiNTk1ZGU2YWE1OWRiMGQ5ZGMyZjk0NTFlZDI5MzMiCi1QViA9ICIwLjEyK2dpdCR7U1JDUFZ9IgotUFIgPSAicjQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUkkgPSsgImdpdDovL2dpdC5nbm9tZS5vcmcvJHtCUE59IFwKLSAgICAgICAgZmlsZTovL21ha2UtMzgyLnBhdGNoIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QTkJMQUNLTElTVFtjb250YWN0c10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzI4MjYvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby90YXNrcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL3Rhc2tzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgyMTdkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL3Rhc2tzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRhc2sgbGlzdCBhcHBsaWNhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9waW1saWNvLXByb2plY3Qub3JnL3Rhc2tzLmh0bWwiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyIKLQotU0VDVElPTiA9ICJ4MTEiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0aysgZXZvbHV0aW9uLWRhdGEtc2VydmVyIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL3Rhc2tzXzAuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9waW1saWNvL3Rhc2tzXzAuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyYzIwYzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby90YXNrc18wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSB0YXNrcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2d0ay9tYWluLmM7ZW5kbGluZT0xOTttZDU9ODY1OWQwYjdmZDY4YTJhZDZhYzMwYzY1MzllYTViODIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL29tb2tvL29wZW5tb2tvLXRhc2tzLmM7ZW5kbGluZT0yMDttZDU9MDRkNTZhNDY4NjNjOWY0MjQ3Njk0ZjQwMjU3YTgzNmEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hpbGRvbi9oaWxkb24tdGFza3MuYztlbmRsaW5lPTIxO21kNT00ODhkZGYzMWRjMTRiMjE5NmRlYzdjYzczNjIxMWI1MiIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGltbGljby1wcm9qZWN0Lm9yZy9zb3VyY2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGFmZDk2OTc1ODU2MTU5OWZkNzgyZTFlZmZiMzljMDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWE3ZmRjNWY5NWEyMTkzYTFhMjVmZGIxM2YwNzE4NjdmYjdlNDIyNDVjZTE5Y2NlZTRiY2NjYjY5ZTU1N2YyZSIKLQotUFIgPSAicjMiCi0KLSMgdGFza3MtMC4xOS9saWJrb3RvL2tvdG8tdXRpbHMuYzo4MTozOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsLCBhcmd1bWVudCB0eXBlcyBub3QgY2hlY2tlZCBbLVdlcnJvcj1mb3JtYXQtbm9ubGl0ZXJhbF0KLVBOQkxBQ0tMSVNUW3Rhc2tzXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3BpbWxpY28vdGFza3NfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby90YXNrc19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MWYxZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvcGltbGljby90YXNrc19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIHRhc2tzLmluYwotCi1TUkNfVVJJID0gImdpdDovL2dpdC5nbm9tZS5vcmcvJHtCUE59IgotCi1TUkNSRVYgPSAiZWE1MmQ0NmQ2OTFjNWZjZTQ0NzNlYTRlMjRhMzU0MTEzODFmM2E2NSIKLVBWID0gIjAuMTMrZ2l0JHtTUkNQVn0iCi1QUiA9ICJyMyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotIyAuLi8uLi9naXQvbGlia290by9rb3RvLXV0aWxzLmM6ODE6MzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCwgYXJndW1lbnQgdHlwZXMgbm90IGNoZWNrZWQgWy1XZXJyb3I9Zm9ybWF0LW5vbmxpdGVyYWxdCi1QTkJMQUNLTElTVFt0YXNrc10gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9zeXN0ZW0tdG9vbHMvc3lzdGVtLXRvb2xzLWJhY2tlbmRzLTIuMTAuMi9hZGQtYW5nc3Ryb20tZGlzdHJvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvc3lzdGVtLXRvb2xzL3N5c3RlbS10b29scy1iYWNrZW5kcy0yLjEwLjIvYWRkLWFuZ3N0cm9tLWRpc3Ryby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwM2ZkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9zeXN0ZW0tdG9vbHMvc3lzdGVtLXRvb2xzLWJhY2tlbmRzLTIuMTAuMi9hZGQtYW5nc3Ryb20tZGlzdHJvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBiNTA4NDYxNmEzYmMyYTBkNDg1ZjQzYWVhZTY5YzYwMjVmM2Y4NTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IEZyaSwgMTAgSnVuIDIwMTEgMTg6NDQ6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWRkIHN1cHBvcnQgZm9yIHRoZSBhbmdzdHJvbSBkaXN0cmlidGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotLS0tCi0gVXRpbHMvUGxhdGZvcm0ucG0gfCAgICAzICsrKwotIDEgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvVXRpbHMvUGxhdGZvcm0ucG0gYi9VdGlscy9QbGF0Zm9ybS5wbQotaW5kZXggZmM3NjM2MC4uOGI4Yzc3MCAxMDA2NDQKLS0tLSBhL1V0aWxzL1BsYXRmb3JtLnBtCi0rKysgYi9VdGlscy9QbGF0Zm9ybS5wbQotQEAgLTkyLDYgKzkyLDcgQEAgbXkgJFBMQVRGT1JNX0lORk8gPSB7Ci0gICAibmV4ZW50YS0xLjAiICAgICA9PiBbICJOZXhlbnRhIEdOVS9Tb2xhcmlzIiwgIjEuMCIsICJFbGxhdGUiIF0sCi0gICAieWVsbG93ZG9nLTQuMSIgICA9PiBbICJZZWxsb3cgRG9nIExpbnV4IiwgIjQuMSIsICJTYWdpdHRhIiBdLAotICAgImd1YWRhbGluZXgtdjQiICAgPT4gWyAiR3VhZGFsaW5leCIsICJ2NCIsICJUb3JvIiBdLAotKyAgImFuZ3N0cm9tIiAgICAgICAgPT4gWyAiQW5nc3Ryb20iLCAiIiwgIiIgXSwKLSB9OwotIAotIHN1YiBnZXRfcGxhdGZvcm1faW5mbwotQEAgLTE0Myw2ICsxNDQsNyBAQCBzdWIgZW5zdXJlX2Rpc3Ryb19tYXAKLSAgICAgICJ2aW5lLTMuMSIgICAgICAgICA9PiAidmluZS0zLjAiLAotICAgICAgInZsb3MtMS4yIiAgICAgICAgID0+ICJnZW50b28iLAotICAgICAgIm5leGVudGEtMS4wIiAgICAgID0+ICJzb2xhcmlzLTIuMTEiLAotKyAgICAgImFuZ3N0cm9tIiAgICAgICAgID0+ICJkZWJpYW4iLAotICAgICAgKTsKLSAKLSAgIHJldHVybiAkbWV0YW1hcHskZGlzdHJvfSBpZiAoJG1ldGFtYXB7JGRpc3Ryb30pOwotQEAgLTM3NSw2ICszNzcsNyBAQCBzdWIgZ3Vlc3MKLSAgICAgICAgICAgICAgICAgICBbIFwmY2hlY2tfYXJrIF0sCi0gICAgICAgICAgICAgICAgICAgWyBcJmNoZWNrX3lvcGVyIF0sCi0gICAgICAgICAgICAgICAgICAgWyBcJmNoZWNrX2Rpc3Ryb19maWxlLCAiL2V0Yy95ZWxsb3dkb2ctcmVsZWFzZSIsICJ5ZWxsb3dkb2ciLCAiXlllbGxvdyBEb2cgTGludXggcmVsZWFzZSAoXFxTKykiIF0sCi0rICAgICAgICAgICAgICAgICAgWyBcJmNoZWNrX2ZpbGVfZXhpc3RzLCAiL2V0Yy9hbmdzdHJvbS12ZXJzaW9uIiwgImFuZ3N0cm9tIiBdLAotICAgICAgICAgICAgICAgICAgXSwKLSAgICAgIkZyZWVCU0QiID0+IFtbIFwmY2hlY2tfZnJlZWJzZCBdXSwKLSAgICAgIlN1bk9TIiAgID0+IFtbIFwmY2hlY2tfc29sYXJpcyBdXQotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3N5c3RlbS10b29scy9zeXN0ZW0tdG9vbHMtYmFja2VuZHNfMi4xMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvc3lzdGVtLXRvb2xzL3N5c3RlbS10b29scy1iYWNrZW5kc18yLjEwLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MmMwZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvc3lzdGVtLXRvb2xzL3N5c3RlbS10b29scy1iYWNrZW5kc18yLjEwLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gImdub21lIHN5c3RlbSB0b29scyBiYWNrZW5kcyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICJkYnVzIGRidXMtZ2xpYiBnbGliLTIuMCBwb2xraXQiCi0KLWluaGVyaXQgZ25vbWUgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZWRhZTE0OGIzMTM0MmFlY2FlMDM1MDUxYWRjNzBjNzQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxZGJlNTE3N2RmNDZhOWM3MjUwNzM1ZTA1ZTc3MTI5ZmU3ZWMwNDg0MDc3MWFjY2ZhODc2OTAxMTFjYTJjNjcwIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICAgZmlsZTovL3N5c3RlbS10b29scy1iYWNrZW5kcyBcCi0iCi0KLSMgVGhpcyBuZWVkcyB0byBtb3ZlIHRvIG1ldGEtYW5nc3Ryb20KLVNSQ19VUklfYXBwZW5kX2FuZ3N0cm9tID0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vYWRkLWFuZ3N0cm9tLWRpc3Ryby5wYXRjaCBcCi0iCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLW5ldC1kYnVzPSR7bGliZGlyfS9wZXJsNSAiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBybSBtaXNzaW5nIHx8IHRydWUKLSAgICBhdXRvbWFrZSAtLWFkZC1taXNzaW5nCi0gICAgc2VkIC1pIC1lICdzOkNDPSQoQ0MpOkNDPSIkKENDKSI6ZycgJHtTfS9OZXQtREJ1cy9NYWtlZmlsZS5hbQotICAgIHNlZCAtaSAtZSAnczpDQz0kKENDKTpDQz0iJChDQykiOmcnICR7U30vTmV0LURCdXMvTWFrZWZpbGUuaW4KLSAgICBsaWJ0b29saXplIC0tZm9yY2UgLS1pbnN0YWxsCi0gICAgYWNsb2NhbAotICAgIGdudS1jb25maWdpemUKLSAgICBvZV9ydW5jb25mCi0gICAgY3AgJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCAke1N9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zeXN0ZW0tdG9vbHMtYmFja2VuZHMgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLX0KLQotSU5JVFNDUklQVF9OQU1FID0gInN5c3RlbS10b29scy1iYWNrZW5kcyIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDUwIDIgMyA0IDUgLiBzdG9wIDcwIDEgLiIKLQotIyBTaGFkb3cgYWRkZWQgc28gdGhlcmUgaXMgYSBmdWxsIGFkZHVzZXIvZGVsdXNlcgotIyAoR25vbWUgaW1hZ2VzIHRlbmQgdG8gcHVsbCBpbiBzaGFkb3cgYW55d2F5KQotUkRFUEVORFNfJHtQTn0gPSAic2hhZG93IgotCi1GSUxFU18ke1BOfSArPSAiICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kIgotRklMRVNfJHtQTn0gKz0gIiAke2xpYmRpcn0vcGtnY29uZmlnIgotRklMRVNfJHtQTn0gKz0gIiAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMiCi1GSUxFU18ke1BOfSArPSAiICR7ZGF0YWRpcn0vc3lzdGVtLXRvb2xzLWJhY2tlbmRzLTIuMC9maWxlcyIKLUZJTEVTXyR7UE59ICs9ICIgJHtkYXRhZGlyfS9zeXN0ZW0tdG9vbHMtYmFja2VuZHMtMi4wL3NjcmlwdHMiCi1GSUxFU18ke1BOfSArPSAiICR7ZGF0YWRpcn0vcG9sa2l0KiIKLQotUE5CTEFDS0xJU1Rbc3lzdGVtLXRvb2xzLWJhY2tlbmRzXSA/PSAiZG9lcyBub3QgYnVpbGQgd2l0aCBkaXN0cm9sZXNzIHFlbXVhcm0gYXMgcmVwb3J0ZWQgaW4gJ1N0YXRlIG9mIGJpdGJha2Ugd29ybGQnIHRocmVhZCwgbm9ib2R5IHZvbHVudGVlcmVkIHRvIGZpeCB0aGVtIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvemVuaXR5L2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtYnVpbGQtaGVscC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3plbml0eS9maWxlcy8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWJ1aWxkLWhlbHAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYzljYjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvemVuaXR5L2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtYnVpbGQtaGVscC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gMTdlNTYwNmY4YzRjOGZmMjZiYTE4NDg5YWFkNGM0ODRjZjhlMjk0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjkgQXByIDIwMTMgMTE6MzQ6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGRvbid0IGJ1aWxkIGhlbHAKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotaXQgY3Jhc2hlcyB3aXRoOgotCi18IHdhcm5pbmc6IGZhaWxlZCB0byBsb2FkIGV4dGVybmFsIGVudGl0eSAiL3Vzci9zaGFyZS94bWwvZ25vbWUveHNsdC9kb2Nib29rL29tZi9kYjJvbWYueHNsIgotfCBjYW5ub3QgcGFyc2UgL3Vzci9zaGFyZS94bWwvZ25vbWUveHNsdC9kb2Nib29rL29tZi9kYjJvbWYueHNsCi18IG1ha2VbMl06ICoqKiBbemVuaXR5LWJnLm9tZl0gRXJyb3IgMQotfCBtYWtlWzJdOiBMZWF2aW5nIGRpcmVjdG9yeSBgL2hvbWUvYW5kcmVhcy90bXAvb2UtY29yZS1lZ2xpYmMvd29yay9hcm12N2EtdmZwLW5lb24tYW5nc3Ryb20tbGludXgtZ251ZWFiaS96ZW5pdHkvMi4zMi4xLXIyL3plbml0eS0yLjMyLjEvaGVscCcKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8ICAgIDMgKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAwM2FjY2MxLi5jYWVjN2YwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMSw4ICsxLDcgQEAKLSBTVUJESVJTID0gXAotIAlzcmMJXAotIAlwbwlcCi0tCWRhdGEJXAotLQloZWxwCi0rCWRhdGEKLSAKLSBFWFRSQV9ESVNUID0gXAotIAlhdXRvZ2VuLnNoCQlcCi0tLSAKLTEuNy42LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvemVuaXR5L3plbml0eV8yLjMyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS96ZW5pdHkvemVuaXR5XzIuMzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ5ZjdhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS96ZW5pdHkvemVuaXR5XzIuMzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzcGxheSBkaWFsb2cgYm94ZXMgZnJvbSB0aGUgY29tbWFuZGxpbmUgYW5kIHNoZWxsIHNjcmlwdHMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1QUiA9ICJyMiIKLQotUE5CTEFDS0xJU1RbemVuaXR5XSA/PSAiQlJPS0VOOiBkb2Vzbid0IGJ1aWxkIHdpdGggQiE9UyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotREVQRU5EUyA9ICJndGsrIGdsaWItMi4wIGxpYm5vdGlmeSBnbm9tZS1kb2MtdXRpbHMiCi0KLWluaGVyaXQgZ25vbWViYXNlCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1idWlsZC1oZWxwLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYWE2NmVjMzU0NTFiMTZlNDI0NTE5YjQ5NzMwODIxNzAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4ODM4YmUwNDFhMDczNjRiNjJhNDI4MWM5NzEzOTJlNGEwOWJiMDFiYjMyMzdhODM2ZWMwNDU3ZWMwZWExOGFjIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCi0jIHJlbW92ZSAtSS91c3IvaW5jbHVkZSBmcm9tIHplbml0eV9DUFBGTEFHUwotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICcvLUkkKGluY2x1ZGVkaXIpL2QnIHNyYy9NYWtlZmlsZS5hbQotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2ZpbGVzLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2ZpbGVzLzAwMDEtRml4LWdsaWItaW5jbHVkZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZTU5OGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9mbG9yZW5jZS9maWxlcy8wMDAxLUZpeC1nbGliLWluY2x1ZGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBjODQxOWVmMDVmZjkyZmZhM2RlMmU2MjZlYjZhY2Q1ZDJkZjNiYWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVHVlLCAxNSBNYXkgMjAxMiAxMzo0MDowNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggZ2xpYiBpbmNsdWRlcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotVXBzdHJlYW0tU3RhdHVzOiB1bmtub3duCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHNyYy90cmFjZS5jIHwgICAgNSArLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3RyYWNlLmMgYi9zcmMvdHJhY2UuYwotaW5kZXggNWVhNWMxMy4uNzc0YzU2ZCAxMDA2NDQKLS0tLSBhL3NyYy90cmFjZS5jCi0rKysgYi9zcmMvdHJhY2UuYwotQEAgLTIxLDEwICsyMSw3IEBACi0gCi0gI2luY2x1ZGUgInRyYWNlLmgiCi0gI2luY2x1ZGUgInN5c3RlbS5oIgotLSNpbmNsdWRlIDxnbGliL2dwcmludGYuaD4KLS0jaW5jbHVkZSA8Z2xpYi9ndXRpbHMuaD4KLS0jaW5jbHVkZSA8Z2xpYi9nc2xpc3QuaD4KLS0jaW5jbHVkZSA8Z2xpYi9nc3RyZnVuY3MuaD4KLSsjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAKLS0tIAotMS43LjYuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2ZpbGVzL2ZpeC1uby1hdHNwaS1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9mbG9yZW5jZS9maWxlcy9maXgtbm8tYXRzcGktY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJiNWRlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2ZpbGVzL2ZpeC1uby1hdHNwaS1jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotZGlmZiAtLWdpdCBhL3NyYy9mbG9yZW5jZS5jIGIvc3JjL2Zsb3JlbmNlLmMKLWluZGV4IGIyN2MzMWIuLmZlYWRlZmUgMTAwNjQ0Ci0tLS0gYS9zcmMvZmxvcmVuY2UuYwotKysrIGIvc3JjL2Zsb3JlbmNlLmMKLUBAIC00NCwxMiArNDQsNiBAQAotIC8qIGV4aXQgc2lnbmFsICovCi0gc3RhdGljIGludCBmbG9fZXhpdD1GQUxTRTsKLSAKLS0jaWZkZWYgRU5BQkxFX0FUX1NQSTIKLS12b2lkIGZsb19jaGVja19zaG93IChzdHJ1Y3QgZmxvcmVuY2UgKmZsb3JlbmNlLCBBdHNwaUFjY2Vzc2libGUgKm9iaik7Ci0tI2Vsc2UKLS12b2lkIGZsb19jaGVja19zaG93IChzdHJ1Y3QgZmxvcmVuY2UgKmZsb3JlbmNlLCBBY2Nlc3NpYmxlICpvYmopOwotLSNlbmRpZgotLQotIC8qIENhbGxlZCBvbiBkZXN0cm95IGV2ZW50IChzeXN0cmF5IHF1aXQgb3IgY2xvc2Ugd2luZG93KSAqLwotIHZvaWQgZmxvX2Rlc3Ryb3kgKHZvaWQpCi0gewotQEAgLTYxLDYgKzU1LDEyIEBAIHZvaWQgZmxvX2Rlc3Ryb3kgKHZvaWQpCi0gfQotIAotICNpZmRlZiBBVF9TUEkKLSsjaWZkZWYgRU5BQkxFX0FUX1NQSTIKLSt2b2lkIGZsb19jaGVja19zaG93IChzdHJ1Y3QgZmxvcmVuY2UgKmZsb3JlbmNlLCBBdHNwaUFjY2Vzc2libGUgKm9iaik7Ci0rI2Vsc2UKLSt2b2lkIGZsb19jaGVja19zaG93IChzdHJ1Y3QgZmxvcmVuY2UgKmZsb3JlbmNlLCBBY2Nlc3NpYmxlICpvYmopOwotKyNlbmRpZgotKwotIC8qIENhbGxlZCB0byBkZXN0cm95IHRoZSBpY29uICovCi0gdm9pZCBmbG9faWNvbl9kZXN0cm95IChHdGtXaWRnZXQgKndpZGdldCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZmxvcmVuY2UvZmxvcmVuY2VfMC41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2Zsb3JlbmNlXzAuNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2U4NWM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZmxvcmVuY2UvZmxvcmVuY2VfMC41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJGbG9yZW5jZSBpcyBhIHZpcnR1YWwga2V5Ym9hcmQgKGFsc28gY2FsbGVkIG9uLXNjcmVlbi1rZXlib2FyZCksIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBpbnB1dCB0ZXh0IHRocm91Z2ggYSB0b3VjaHNjcmVlbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vZmxvcmVuY2Uuc291cmNlZm9yZ2UubmV0L2VuZ2xpc2guaHRtbCIKLQotI05PVElDRTogSWYgZmxvcmVuY2UgY2FuJ3QgZmluZCBpdHMgZ2NvbmYgc2V0dGluZ3MsIHlvdSBuZWVkIHRvIHN0YXJ0IGZsb3JlbmNlIHdpdGggLS1jb25maWcgZm9yIG9uZSB0aW1lIGFuZCBzYXZlIHRoZSBjb25maWd1cmF0aW9uIG9uY2UuCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotUFIgPSAicjEiCi0KLURFUEVORFMgPSAiZ3RrKyBsaWJ4bWwyIGxpYmdsYWRlIGxpYnJzdmcgbGlieHRzdCBnY29uZiBnY29uZi1uYXRpdmUgY2Fpcm8gaW50bHRvb2wtbmF0aXZlIGdub21lLWRvYy11dGlscyBsaWJub3RpZnkgZ3N0cmVhbWVyIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mbG9yZW5jZS9mbG9yZW5jZS8ke1BWfS1ndGsyL2Zsb3JlbmNlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZml4LW5vLWF0c3BpLWNvbXBpbGUucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiOGQ1YzIzNjdhMjg0ODViZmNmNTc3NjUwYjBiYWRhYjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjZkMzNhYTIwZDVmYmYzNGNlZWRlZDRjNDFjYjkyMmQyOTg4YjYwODJlMzNkOWFjYzQ2ZGQ3YmZlNTZkMzFhMSIKLQotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBnY29uZiBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIgLS13aXRob3V0LWRvY3MgLS13aXRob3V0LWF0LXNwaSAtLXdpdGhvdXQtcGFuZWxhcHBsZXQgLS13aXRob3V0LXhyZWNvcmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2Zsb3JlbmNlL2Zsb3JlbmNlXzAuNi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9mbG9yZW5jZS9mbG9yZW5jZV8wLjYuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWI3ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9mbG9yZW5jZS9mbG9yZW5jZV8wLjYuMy5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkZsb3JlbmNlIGlzIGEgdmlydHVhbCBrZXlib2FyZCBmb3IgdG91Y2ggc2NyZWVucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9mbG9yZW5jZS5zb3VyY2Vmb3JnZS5uZXQvZW5nbGlzaC5odG1sIgorCisjTk9USUNFOiBJZiBmbG9yZW5jZSBjYW4ndCBmaW5kIGl0cyBnY29uZiBzZXR0aW5ncywgeW91IG5lZWQgdG8gc3RhcnQgZmxvcmVuY2Ugd2l0aCAtLWNvbmZpZyBmb3Igb25lIHRpbWUgYW5kIHNhdmUgdGhlIGNvbmZpZ3VyYXRpb24gb25jZS4KKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitERVBFTkRTID0gImd0ayszIGxpYnhtbDIgbGliZ2xhZGUgbGlicnN2ZyBsaWJ4dHN0IGdjb25mIGdjb25mLW5hdGl2ZSBjYWlybyBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtZG9jLXV0aWxzIGxpYm5vdGlmeSBnc3RyZWFtZXIxLjAiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtQTn0vJHtQTn0vJHtQVn0vJHtQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4Nzc1MDUxZDczNTJmNzVkZWM1YTg2ZGM5OTY0ZThlMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjI5OTJmZDA3ZDI4NWJlNzNjY2U3MjFhMjAzZTIyY2VlMjEzMjBkNjliMGZkYTE1NzljZTYyOTQ0YzUwOTFlIgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIGdjb25mIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXNjcm9sbGtlZXBlciAtLXdpdGhvdXQtZG9jcyAtLXdpdGhvdXQtYXQtc3BpIC0td2l0aG91dC1wYW5lbGFwcGxldCAtLXdpdGhvdXQteHJlY29yZCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZ29mZmljZS9nb2ZmaWNlLzAwMDEtY29uZmlndXJlLmFjLWZpeC1wYXRocy10by1pbnRyb3NwZWN0aW9uLXRvb2xzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9nb2ZmaWNlL2dvZmZpY2UvMDAwMS1jb25maWd1cmUuYWMtZml4LXBhdGhzLXRvLWludHJvc3BlY3Rpb24tdG9vbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NDU5NzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9nb2ZmaWNlL2dvZmZpY2UvMDAwMS1jb25maWd1cmUuYWMtZml4LXBhdGhzLXRvLWludHJvc3BlY3Rpb24tdG9vbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDhlMTU4YzE2Y2QxNWZmZjA4YjQyZWQ4NmVkYzU1ODE2ZDMzODc4MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTkgRmViIDIwMTYgMTY6MDQ6MjQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggcGF0aHMgdG8gaW50cm9zcGVjdGlvbiB0b29scwotCi1UaGV5IG5lZWQgdG8gYmUgcHJlZml4ZWQgd2l0aCAkUEtHX0NPTkZJR19TWVNST09UX0RJUgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2ZDJiNzQ3Li4zYjI4NDYzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03MDYsOSArNzA2LDkgQEAgaWYgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIjsgdGhlbgotICAgIGRubCBweXRob24gd2hlcmUgdG8gZmluZCBsaWJnb2ZmaWNlLCBzbyB5b3UgbWlnaHQgYWxzbyBuZWVkIHRvIHNldAotICAgIGRubCBMRF9MSUJSQVJZX1BBVEguCi0gCi0tICAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9jb21waWxlciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0rICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICBpZiB0ZXN0ICJ4JElOVFJPU1BFQ1RJT05fR0lSRElSIiA9IHg7IHRoZW4KLSAgICAgIElOVFJPU1BFQ1RJT05fR0lSRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpcmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgIGZpCi1AQCAtNzE3LDcgKzcxNyw3IEBAIGlmIHRlc3QgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgPSAieHllcyI7IHRoZW4KLSAgICBmaQotICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgIElOVFJPU1BFQ1RJT05fTElCUz1gJFBLR19DT05GSUcgLS1saWJzIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgSU5UUk9TUEVDVElPTl9NQUtFRklMRT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotKyAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotIGVsc2UKLSAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9Ci0gICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0KLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9nb2ZmaWNlL2dvZmZpY2VfMC4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9nb2ZmaWNlL2dvZmZpY2VfMC4xMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTIwODBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvZ29mZmljZS9nb2ZmaWNlXzAuMTAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLURFU0NSSVBUSU9OPSJHbm9tZSBPZmZpY2UgTGlicmFyeSIKLQotTElDRU5TRT0iR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZGMzM2ZmMjFlMWJhMWFjMWEyYTEwNjlkMzYxZTI5ZSIKLQotREVQRU5EUyA9ICJsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIGdsaWItMi4wIGd0ayszIHBhbmdvIGNhaXJvIGxpYmdzZiBsaWJwY3JlIGxpYnhtbDIgbGliYXJ0LWxncGwgbGlicnN2ZyBpbnRsdG9vbCIKLQotaW5oZXJpdCBnbm9tZWJhc2UgcGtnY29uZmlnIHBlcmxuYXRpdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLUdOT01FX0NPTVBSRVNTX1RZUEUgPSAieHoiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtcGF0aHMtdG8taW50cm9zcGVjdGlvbi10b29scy5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTBmZDE3YzZmZTIwNWI3Nzk1NzFlMDBkOWIwYjQ3MjciCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1YzM4ZjRlODFlODc0Y2M4ZTg5NDgxYjA4MGY3N2M0N2M3MmJmZDZmZTI1MjZmNGZjMmVmODdjMTdmOTZjYWQwIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2ZmaWNlLyR7UFZ9L3BsdWdpbnMvKi8uZGVidWciCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIiBcCi0gICAgZ29mZmljZS1wbHVnaW4tcGxvdC1iYXJjb2wgXAotICAgIGdvZmZpY2UtcGx1Z2luLXBsb3QtZGlzdHJpYiBcCi0gICAgZ29mZmljZS1wbHVnaW4tcGxvdC1waWUgXAotICAgIGdvZmZpY2UtcGx1Z2luLXBsb3QtcmFkYXIgXAotICAgIGdvZmZpY2UtcGx1Z2luLXBsb3Qtc3VyZmFjZSBcCi0gICAgZ29mZmljZS1wbHVnaW4tcGxvdC14eSBcCi0gICAgZ29mZmljZS1wbHVnaW4tcmVnLWxpbmVhciBcCi0gICAgZ29mZmljZS1wbHVnaW4tcmVnLWxvZ2ZpdCBcCi0gICAgZ29mZmljZS1wbHVnaW4tc21vb3RoaW5nIFwKLSIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtzYmluZGlyfS8qICR7bGliZXhlY2Rpcn0vKiAke2xpYmRpcn0vbGliKiR7U09MSUJTfSBcCi0gICAgJHtzeXNjb25mZGlyfSAke3NoYXJlZHN0YXRlZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAke2Jhc2VfYmluZGlyfS8qICR7YmFzZV9zYmluZGlyfS8qIFwKLSAgICAke2Jhc2VfbGliZGlyfS8qJHtTT0xJQlN9IFwKLSAgICAke2RhdGFkaXJ9LyR7UE59IFwKLSAgICAke2RhdGFkaXJ9L3BpeG1hcHMgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAotICAgICR7ZGF0YWRpcn0vaWRsICR7ZGF0YWRpcn0vb21mICR7ZGF0YWRpcn0vc291bmRzIFwKLSAgICAke2xpYmRpcn0vYm9ub2JvL3NlcnZlcnMiCi0KLUZJTEVTXyR7UE59LWxvY2FsZSA9ICIke2xpYmRpcn0vbG9jYWxlIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeZ29mZmljZS1wbHVnaW4tLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBnb2ZmaWNlX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ29mZmljZS8ke1BWfS9wbHVnaW5zLycpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnb2ZmaWNlX2xpYmRpciwgJyguKiknLCAnZ29mZmljZS1wbHVnaW4tJXMnLCAnR29mZmljZSBwbHVnaW4gZm9yICVzJywgYWxsb3dfZGlycz1UcnVlKQotfQotCi0jIHwgLi4vLi4vZ29mZmljZS0wLjEwLjEvZ29mZmljZS9tYXRoL2dvLWNvbXBsZXguYzo3NTozOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsLCBhcmd1bWVudCB0eXBlcyBub3QgY2hlY2tlZCBbLVdlcnJvcj1mb3JtYXQtbm9ubGl0ZXJhbF0KLVBOQkxBQ0tMSVNUW2dvZmZpY2VdID89ICJCUk9LRU46IGZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2tleWJpbmRlci9rZXliaW5kZXJfMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9rZXliaW5kZXIva2V5YmluZGVyXzMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjc0NGEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9rZXliaW5kZXIva2V5YmluZGVyXzMuMC5iYgpAQCAtMCwwICsxLDI2IEBACitERVNDUklQVElPTiA9ICJrZXliaW5kZXIgaXMgYSBsaWJyYXJ5IGZvciByZWdpc3RlcmluZyBnbG9iYWwga2V5IGJpbmRpbmdzLCBmb3IgZ3RrLWJhc2VkIGFwcGxpY2F0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZW5nbGEva2V5YmluZGVyIgorTElDRU5TRSA9ICJYMTEiCitTRUNUSU9OID0gImRldmVsL2xpYiIKK0RFUEVORFMgPSAiZ3RrKzMgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBcCisgICAgICAgICAgIGd0aysgXAorIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZjE4ZjljNmQ4YjRjZmNjN2Q3ODA0YTI0M2E0YzBiNCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtTfSIKKworU1JDUkVWID0gIjczNmNjZWY0MGQzOTYwM2I4MTExYzhhM2EwYmNhMDMxOWJiYWZkYzAiCitQViA9ICIzLjArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZW5nbGEva2V5YmluZGVyLmdpdDticmFuY2g9a2V5YmluZGVyLTMuMCBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gImd0aysiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwl0b3VjaCAke1N9L0NoYW5nZUxvZworfQorCitTUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiWDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmQvMDAwMS1weXByZWRpY3QtbG0tRGVmaW5lLWVycm9yLUFQSS1pZi1wbGF0Zm9ybS1kb2VzLW5vdC1oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmQvMDAwMS1weXByZWRpY3QtbG0tRGVmaW5lLWVycm9yLUFQSS1pZi1wbGF0Zm9ybS1kb2VzLW5vdC1oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZC8wMDAxLXB5cHJlZGljdC1sbS1EZWZpbmUtZXJyb3ItQVBJLWlmLXBsYXRmb3JtLWRvZXMtbm90LWgucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorRnJvbSAxYzk1ZjY0YWEzNDIxNDczODdjZTRiMWI3MjY5YTVjOGIzNGJkODk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMDk6MDE6MDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcHlwcmVkaWN0L2xtOiBEZWZpbmUgZXJyb3IgQVBJIGlmIHBsYXRmb3JtIGRvZXMgbm90IGhhdmUgaXQKKworZXJyb3IoKSBBUEkgaXMgbm90IGltcGxlbWVudGVkIGFjcm9zcyBhbGwgbGliY3Mgb24gbGludXgKK2UuZy4gbXVzbCBkb2VzIG5vdCBwcm92aWRlIGl0LgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgT25ib2FyZC9weXByZWRpY3QvbG0vbG0uY3BwICAgICAgICAgfCAgMSAtCisgT25ib2FyZC9weXByZWRpY3QvbG0vbG0uaCAgICAgICAgICAgfCAxMyArKysrKysrKysrKysrCisgT25ib2FyZC9weXByZWRpY3QvbG0vbG1fZHluYW1pYy5jcHAgfCAgMiAtLQorIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtLmNwcCBiL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtLmNwcAoraW5kZXggMmU2NDI5Ni4uMzdhZTI0MSAxMDA2NDQKKy0tLSBhL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtLmNwcAorKysrIGIvT25ib2FyZC9weXByZWRpY3QvbG0vbG0uY3BwCitAQCAtMTksNyArMTksNiBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorICNpbmNsdWRlIDxjbWF0aD4KKyAjaW5jbHVkZSA8c3RyaW5nPgorZGlmZiAtLWdpdCBhL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtLmggYi9PbmJvYXJkL3B5cHJlZGljdC9sbS9sbS5oCitpbmRleCBlZDQxNjRhLi5iOGI2M2VlIDEwMDY0NAorLS0tIGEvT25ib2FyZC9weXByZWRpY3QvbG0vbG0uaAorKysrIGIvT25ib2FyZC9weXByZWRpY3QvbG0vbG0uaAorQEAgLTMyLDYgKzMyLDE5IEBACisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAjaW5jbHVkZSA8c3RyaW5nPgorIAorKyNpZiBkZWZpbmVkKEhBVkVfRVJST1JfSCkKKysjaW5jbHVkZSA8ZXJyb3IuaD4KKysjZWxzZQorKyNpbmNsdWRlIDxlcnIuaD4KKysjZGVmaW5lIF9vbmJvYXJkX2Vycm9yKFMsIEUsIEYsIC4uLikgZG8geyBcCisrICAgICAgIGlmIChFKSBcCisrICAgICAgICAgICAgICAgZXJyKFMsIEYgIjogJXMiLCAjI19fVkFfQVJHU19fLCBzdHJlcnJvcihFKSk7IFwKKysgICAgICAgZWxzZSBcCisrICAgICAgICAgICAgICAgZXJyKFMsIEYsICMjX19WQV9BUkdTX18pOyBcCisrfSB3aGlsZSgwKQorKworKyNkZWZpbmUgZXJyb3IgX29uYm9hcmRfZXJyb3IKKysjZW5kaWYKKyAKKyAvLyBicmVhayBpbnRvIGRlYnVnZ2VyCisgLy8gc3RlcCB0d2ljZSB0byBjb21lIGJhY2sgb3V0IG9mIHRoZSByYWlzZSgpIGNhbGwgaW50byBrbm93biBjb2RlCitkaWZmIC0tZ2l0IGEvT25ib2FyZC9weXByZWRpY3QvbG0vbG1fZHluYW1pYy5jcHAgYi9PbmJvYXJkL3B5cHJlZGljdC9sbS9sbV9keW5hbWljLmNwcAoraW5kZXggN2M2MjgyNC4uZTdjN2Y0MCAxMDA2NDQKKy0tLSBhL09uYm9hcmQvcHlwcmVkaWN0L2xtL2xtX2R5bmFtaWMuY3BwCisrKysgYi9PbmJvYXJkL3B5cHJlZGljdC9sbS9sbV9keW5hbWljLmNwcAorQEAgLTE3LDggKzE3LDYgQEAKKyAgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICAqLworIAorLSNpbmNsdWRlIDxlcnJvci5oPgorLQorICNpbmNsdWRlICJsbV9keW5hbWljLmgiCisgCisgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvb25ib2FyZC9vbmJvYXJkXzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZjBhNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkFuIG9uc2NyZWVuIGtleWJvYXJkIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMMzttZDU9ODUyMWZhNGRkNTE5MDliNDA3YzUxNTA0OThkMzRmNGUiCi0KLURFUEVORFMgKz0gImd0ayszIGh1bnNwZWxsIGxpYmNhbmJlcnJhIGxpYnhrYmZpbGUgZGNvbmYgcHl0aG9uMy1kaXN0dXRpbHMtZXh0cmEtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvb25ib2FyZC8xLjMvJHtQVn0vK2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiODAwMGRmM2U3ODk1MTJhOTBmY2IyMjc1ODBmZDYwZmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQ3NGI1NGI4YmQ3YTA3NWNmNWY2ZTFhOGNhM2U2ZGU1Y2QyNjYzNTA3YWRiNjkwZDdiMWE4NWU3MWFmYTJlNCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUgZ3NldHRpbmdzCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L2dub21lLXNoZWxsIFwKLSAgICAke2RhdGFkaXJ9L2hlbHAgXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBuY3Vyc2VzIFwKLSAgICBweXRob24zLWRidXMgXAotICAgIHB5dGhvbjMtcHljYWlybyBcCi0gICAgcHl0aG9uMy1weWdvYmplY3QgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZF8xLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDc2NWVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS40LjEuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJBbiBvbnNjcmVlbiBrZXlib2FyZCIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTDM7bWQ1PTg1MjFmYTRkZDUxOTA5YjQwN2M1MTUwNDk4ZDM0ZjRlIgorCitERVBFTkRTICs9ICJndGsrMyBodW5zcGVsbCBsaWJjYW5iZXJyYSBsaWJ4a2JmaWxlIGRjb25mIHB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L29uYm9hcmQvMS40LyR7UFZ9Lytkb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHlwcmVkaWN0LWxtLURlZmluZS1lcnJvci1BUEktaWYtcGxhdGZvcm0tZG9lcy1ub3QtaC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYTJmYmU4MmU5MzRmNWIzNzg0MWQxN2ZmNTFlODBlOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWNhZTFhYzViMWVmMWFiOTg1YmQyZDJkNzlkZWQ2ZmM5OWVlMDRiMTUzNWNjMWJiMTkxZTQzYTIzMWEzODY1IgorCitpbmhlcml0IHNldHVwdG9vbHMzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZSBnc2V0dGluZ3MKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorICAgICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwgXAorICAgICR7ZGF0YWRpcn0vaGVscCBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIG5jdXJzZXMgXAorICAgIHB5dGhvbjMtZGJ1cyBcCisgICAgcHl0aG9uMy1weWNhaXJvIFwKKyAgICBweXRob24zLXB5Z29iamVjdCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlci0wLjE0LjIvZW5hYmxlLXNxbGl0ZS1jcm9zc2NvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlci0wLjE0LjIvZW5hYmxlLXNxbGl0ZS1jcm9zc2NvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkYWRkYTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC90cmFja2VyL3RyYWNrZXItMC4xNC4yL2VuYWJsZS1zcWxpdGUtY3Jvc3Njb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotSW5kZXg6IHRyYWNrZXItMC4xMC4xNy9tNC9zcWxpdGUtdGhyZWFkc2FmZS5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRyYWNrZXItMC4xMC4xNy5vcmlnL200L3NxbGl0ZS10aHJlYWRzYWZlLm00Ci0rKysgdHJhY2tlci0wLjEwLjE3L200L3NxbGl0ZS10aHJlYWRzYWZlLm00Ci1AQCAtNDUsNyArNDUsNyBAQCBpbnQgbWFpbiAoKQotICAgXV0pXSwKLSAgICAgICAgW2F4X2N2X3NxbGl0ZV90aHJlYWRzYWZlPXllc10sCi0gICAgICAgIFtheF9jdl9zcWxpdGVfdGhyZWFkc2FmZT1ub10sCi0tICAgICAgIFtheF9jdl9zcWxpdGVfdGhyZWFkc2FmZT1ub10pXSkKLSsgICAgICAgW2F4X2N2X3NxbGl0ZV90aHJlYWRzYWZlPXllc10pXSkKLSAKLSAgIExJQlM9IiRzYXZlX0xJQlMiCi0gXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdHJhY2tlci90cmFja2VyLTAuMTQuMi9maXgtcmVtb3ZhYmxlLW1lZGlhLWRldGVjdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdHJhY2tlci90cmFja2VyLTAuMTQuMi9maXgtcmVtb3ZhYmxlLW1lZGlhLWRldGVjdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMzZDlkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlci0wLjE0LjIvZml4LXJlbW92YWJsZS1tZWRpYS1kZXRlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1JbmRleDogdHJhY2tlci0wLjE0LjIvc3JjL2xpYnRyYWNrZXItbWluZXIvdHJhY2tlci1zdG9yYWdlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0cmFja2VyLTAuMTQuMi5vcmlnL3NyYy9saWJ0cmFja2VyLW1pbmVyL3RyYWNrZXItc3RvcmFnZS5jCTIwMTEtMDgtMDMgMTM6NTM6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgdHJhY2tlci0wLjE0LjIvc3JjL2xpYnRyYWNrZXItbWluZXIvdHJhY2tlci1zdG9yYWdlLmMJMjAxMi0wOS0xMCAwODoyNToxOC4zMjIyMTUxMjYgKzAxMDAKLUBAIC0yMCw2ICsyMCw3IEBACi0gI2luY2x1ZGUgImNvbmZpZy5oIgotIAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAKLSAjaW5jbHVkZSA8Z2lvL2dpby5oPgotICNpbmNsdWRlIDxnaW8vZ3VuaXhtb3VudHMuaD4KLUBAIC02NDYsNiArNjQ3LDE3IEBACi0gCQkJCWdjaGFyICpjb250ZW50X3R5cGU7Ci0gCQkJCWdib29sZWFuIGlzX211bHRpbWVkaWE7Ci0gCQkJCWdib29sZWFuIGlzX2JsYW5rOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3Q7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ29uc2lkZXIgYWxsIGZpbGVzIHVuZGVyIC9tZWRpYSB0byBiZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVtb3ZhYmxlIHVubGVzcyB0aGUgZmlsZSAudGhpcy1pcy1yb290IGlzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBwcmVzZW50LgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cm5jbXAgKG1vdW50X3BhdGgsICIvbWVkaWEvIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuICgiL21lZGlhLyIpKSAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQgKCIvbWVkaWEvLnRoaXMtaXMtcm9vdCIsICZzdCkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3JlbW92YWJsZSA9IFRSVUU7Ci0gCi0gCQkJCWNvbnRlbnRfdHlwZSA9IG1vdW50X2d1ZXNzX2NvbnRlbnRfdHlwZSAobW91bnQsICZpc19vcHRpY2FsLCAmaXNfbXVsdGltZWRpYSwgJmlzX2JsYW5rKTsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdHJhY2tlci90cmFja2VyLTAuMTQuMi9naWZsaWI1LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlci0wLjE0LjIvZ2lmbGliNS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWIzMzcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdHJhY2tlci90cmFja2VyLTAuMTQuMi9naWZsaWI1LXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotIHNyYy90cmFja2VyLWV4dHJhY3QvdHJhY2tlci1leHRyYWN0LWdpZi5jIHwgICAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspCi0tLS0gYS9zcmMvdHJhY2tlci1leHRyYWN0L3RyYWNrZXItZXh0cmFjdC1naWYuYwkKLSsrKyBhL3NyYy90cmFja2VyLWV4dHJhY3QvdHJhY2tlci1leHRyYWN0LWdpZi5jCQotQEAgLTc1LDYgKzc1LDM5IEBACi0gCXJldHVybiAoR0lGX09LKTsKLSB9Ci0gCi0rI2lmIEdJRkxJQl9NQUpPUiA+PSA1Ci0rc3RhdGljIGlubGluZSB2b2lkCi0rZ2lmX2Vycm9yIChjb25zdCBnY2hhciAqYWN0aW9uLCBpbnQgZXJyKQotK3sKLSsJY29uc3QgY2hhciAqc3RyID0gR2lmRXJyb3JTdHJpbmcgKGVycik7Ci0rCWlmIChzdHIgIT0gTlVMTCkgewotKwkJZ19tZXNzYWdlICgiJXMsIGVycm9yOiAnJXMnIiwgYWN0aW9uLCBzdHIpOwotKwl9IGVsc2UgewotKwkJZ19tZXNzYWdlICgiJXMsIHVuZGVmaW5lZCBlcnJvciAlZCIsIGFjdGlvbiwgZXJyKTsKLSsJfQotK30KLSsjZWxzZSAvKiBHSUZMSUJfTUFKT1IgPj0gNSAqLwotK3N0YXRpYyBpbmxpbmUgdm9pZCBwcmludF9naWZfZXJyb3IoKQotK3sKLSsjaWYgZGVmaW5lZChHSUZMSUJfTUFKT1IpICYmIGRlZmluZWQoR0lGTElCX01JTk9SKSAmJiAoKEdJRkxJQl9NQUpPUiA9PSA0ICYmIEdJRkxJQl9NSU5PUiA+PSAyKSB8fCBHSUZMSUJfTUFKT1IgPiA0KQotKwljb25zdCBjaGFyICpzdHIgPSBHaWZFcnJvclN0cmluZyAoKTsKLSsJaWYgKHN0ciAhPSBOVUxMKSB7Ci0rCQlnX21lc3NhZ2UgKCJHSUYsIGVycm9yOiAnJXMnIiwgc3RyKTsKLSsJfSBlbHNlIHsKLSsJCWdfbWVzc2FnZSAoIkdJRiwgdW5kZWZpbmVkIGVycm9yIik7Ci0rCX0KLSsjZWxzZQotKwlQcmludEdpZkVycm9yKCk7Ci0rI2VuZGlmCi0rfQotKyNlbmRpZiAvKiBHSUZMSUJfTUFKT1IgPj0gNSAqLwotKwotKy8qIGdpZmxpYiA1LjEgY2hhbmdlZCB0aGUgQVBJIG9mIERHaWZDbG9zZUZpbGUgdG8gdGFrZSB0d28gYXJndW1lbnRzICovCi0rI2lmICFkZWZpbmVkKEdJRkxJQl9NQUpPUikgfHwgXAotKyAgICAhKEdJRkxJQl9NQUpPUiA+IDUgfHwgKEdJRkxJQl9NQUpPUiA9PSA1ICYmIEdJRkxJQl9NSU5PUiA+PSAxKSkKLSsjZGVmaW5lIERHaWZDbG9zZUZpbGUoYSwgYikgREdpZkNsb3NlRmlsZShhKQotKyNlbmRpZgotKwotIHN0YXRpYyB2b2lkCi0gcmVhZF9tZXRhZGF0YSAoVHJhY2tlclNwYXJxbEJ1aWxkZXIgKnByZXVwZGF0ZSwKLSAgICAgICAgICAgICAgICBUcmFja2VyU3BhcnFsQnVpbGRlciAqbWV0YWRhdGEsCi1AQCAtMTAwLDE0ICsxMzMsMjIgQEAKLSAJCUV4dEJsb2NrIGV4dEJsb2NrOwotIAotIAkJaWYgKERHaWZHZXRSZWNvcmRUeXBlKGdpZkZpbGUsICZSZWNvcmRUeXBlKSA9PSBHSUZfRVJST1IpIHsKLS0JCQlQcmludEdpZkVycm9yKCk7Ci0rI2lmIEdJRkxJQl9NQUpPUiA8IDUKLSsJCQlwcmludF9naWZfZXJyb3IgKCk7Ci0rI2Vsc2UgIC8qIEdJRkxJQl9NQUpPUiA8IDUgKi8KLSsJCQlnaWZfZXJyb3IgKCJDb3VsZCBub3QgcmVhZCBuZXh0IEdJRiByZWNvcmQgdHlwZSIsIGdpZkZpbGUtPkVycm9yKTsKLSsjZW5kaWYgLyogR0lGTElCX01BSk9SIDwgNSAqLwotIAkJCXJldHVybjsKLSAJCX0KLSAKLSAJCXN3aXRjaCAoUmVjb3JkVHlwZSkgewotIAkJCWNhc2UgSU1BR0VfREVTQ19SRUNPUkRfVFlQRToKLSAJCQlpZiAoREdpZkdldEltYWdlRGVzYyhnaWZGaWxlKSA9PSBHSUZfRVJST1IpIHsKLS0JCQkJUHJpbnRHaWZFcnJvcigpOwotKyNpZiBHSUZMSUJfTUFKT1IgPCA1Ci0rCQkJCXByaW50X2dpZl9lcnJvcigpOwotKyNlbHNlICAvKiBHSUZMSUJfTUFKT1IgPCA1ICovCi0rCQkJCWdpZl9lcnJvciAoIkNvdWxkIG5vdCBnZXQgR0lGIHJlY29yZCBpbmZvcm1hdGlvbiIsIGdpZkZpbGUtPkVycm9yKTsKLSsjZW5kaWYgLyogR0lGTElCX01BSk9SIDwgNSAqLwotIAkJCQlyZXR1cm47Ci0gCQkJfQotIAotQEAgLTExNyw3ICsxNTgsMTEgQEAKLSAJCQlmcmFtZWRhdGEgPSBnX21hbGxvYyAoZnJhbWV3aWR0aCpmcmFtZWhlaWdodCk7Ci0gCi0gCQkJaWYgKERHaWZHZXRMaW5lKGdpZkZpbGUsIGZyYW1lZGF0YSwgZnJhbWV3aWR0aCpmcmFtZWhlaWdodCk9PUdJRl9FUlJPUikgewotLQkJCQlQcmludEdpZkVycm9yKCk7Ci0rI2lmIEdJRkxJQl9NQUpPUiA8IDUKLSsJCQkJcHJpbnRfZ2lmX2Vycm9yKCk7Ci0rI2Vsc2UgIC8qIEdJRkxJQl9NQUpPUiA8IDUgKi8KLSsJCQkJZ2lmX2Vycm9yICgiQ291bGQgbm90IGxvYWQgYSBibG9jayBvZiBHSUYgcGl4ZXMiLCBnaWZGaWxlLT5FcnJvcik7Ci0rI2VuZGlmIC8qIEdJRkxJQl9NQUpPUiA8IDUgKi8KLSAJCQkJcmV0dXJuOwotIAkJCX0KLSAKLUBAIC01OTMsNiArNjM4LDkgQEAKLSAJZ2NoYXIgKmZpbGVuYW1lLCAqdXJpOwotIAlHRmlsZSAqZmlsZTsKLSAJaW50IGZkOwotKyNpZiBHSUZMSUJfTUFKT1IgPj0gNQotKwlpbnQgZXJyOwotKyNlbmRpZgotIAotIAlwcmV1cGRhdGUgPSB0cmFja2VyX2V4dHJhY3RfaW5mb19nZXRfcHJldXBkYXRlX2J1aWxkZXIgKGluZm8pOwotIAltZXRhZGF0YSA9IHRyYWNrZXJfZXh0cmFjdF9pbmZvX2dldF9tZXRhZGF0YV9idWlsZGVyIChpbmZvKTsKLUBAIC02MTcsOCArNjY1LDE0IEBACi0gCQlyZXR1cm4gRkFMU0U7Ci0gCX0JCi0gCi0rI2lmIEdJRkxJQl9NQUpPUiA8IDUKLSAJaWYgKChnaWZGaWxlID0gREdpZk9wZW5GaWxlSGFuZGxlIChmZCkpID09IE5VTEwpIHsKLS0JCVByaW50R2lmRXJyb3IgKCk7Ci0rCQlwcmludF9naWZfZXJyb3IgKCk7Ci0rI2Vsc2UgICAvKiBHSUZMSUJfTUFKT1IgPCA1ICovCi0rCWlmICgoZ2lmRmlsZSA9IERHaWZPcGVuRmlsZUhhbmRsZSAoZmQsICZlcnIpKSA9PSBOVUxMKSB7Ci0rCQlnaWZfZXJyb3IgKCJDb3VsZCBub3Qgb3BlbiBHSUYgZmlsZSB3aXRoIGhhbmRsZSIsIGVycik7Ci0rI2VuZGlmIC8qIEdJRkxJQl9NQUpPUiA8IDUgKi8KLSsJCWdfZnJlZSAoZmlsZW5hbWUpOwotIAkJY2xvc2UgKGZkKTsKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotQEAgLTYzNywxMCArNjkxLDE1IEBACi0gCWdfc3RyaW5nX2ZyZWUgKHdoZXJlLCBUUlVFKTsKLSAKLSAJZ19mcmVlICh1cmkpOwotLQotKyNpZiBHSUZMSUJfTUFKT1IgPCA1Ci0gCWlmIChER2lmQ2xvc2VGaWxlIChnaWZGaWxlKSAhPSBHSUZfT0spIHsKLS0JCVByaW50R2lmRXJyb3IgKCk7Ci0rCQlwcmludF9naWZfZXJyb3IgKCk7Ci0rCX0KLSsjZWxzZSAgLyogR0lGTElCX01BSk9SIDwgNSAqLwotKwlpZiAoREdpZkNsb3NlRmlsZSAoZ2lmRmlsZSwgTlVMTCkgIT0gR0lGX09LKSB7Ci0rCQlnaWZfZXJyb3IgKCJDb3VsZCBub3QgY2xvc2UgR0lGIGZpbGUiLCBnaWZGaWxlLT5FcnJvcik7Ci0gCX0KLSsjZW5kaWYgLyogR0lGTElCX01BSk9SIDwgNSAqLwotIAotIAlyZXR1cm4gVFJVRTsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlcl8wLjE0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3RyYWNrZXIvdHJhY2tlcl8wLjE0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMzZhMTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC90cmFja2VyL3RyYWNrZXJfMC4xNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVHJhY2tlciBpcyBhIHRvb2wgZGVzaWduZWQgdG8gZXh0cmFjdCBpbmZvcm1hdGlvbiBhbmQgbWV0YWRhdGEgYWJvdXQgeW91ciBwZXJzb25hbCBkYXRhIHNvIHRoYXQgaXQgY2FuIGJlIHNlYXJjaGVkIGVhc2lseSBhbmQgcXVpY2tseS4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWUzMTAxMmJmOTBlN2I4YzEwOGM2OWYxOTdmM2UzYTQiCi1ERVBFTkRTID0gImZpbGUgZ3N0cmVhbWVyIGRidXMgbGliZXhpZiBnZXR0ZXh0IHNxbGl0ZTMgaWN1IGdzdC1wbHVnaW5zLWJhc2UgbGliZ25vbWUta2V5cmluZyBwb3BwbGVyIHRpZmYgZW5jYSBsaWJnc2YgbGlidW5pc3RyaW5nIGdpZmxpYiB0YWdsaWIgYnppcDIgdXBvd2VyIGd0ayszIGxpYmdlZSBuZXR3b3JrbWFuYWdlciBpbnRsdG9vbC1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgZ3ZmcyBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgotCi1SREVQRU5EU18ke1BOfS1uYXV0aWx1cy1leHRlbnNpb24gKz0gIm5hdXRpbHVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3Byb2plY3RzLmdub21lLm9yZy90cmFja2VyLyIKLQotUFIgPSAicjciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ2V0dGV4dCBnc2V0dGluZ3Mgc3lzdGVtZCBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotVkVSX0RJUiA9ICIke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9IgotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy90cmFja2VyLyR7VkVSX0RJUn0vdHJhY2tlci0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZW5hYmxlLXNxbGl0ZS1jcm9zc2NvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXJlbW92YWJsZS1tZWRpYS1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2lmbGliNS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzkwdHJhY2tlciBcCi0gICAgICAgICAgIGZpbGU6Ly90cmFja2VyLXN0b3JlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdHJhY2tlci1taW5lci1mcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3RyYWNrZXItZGJ1cy5zZXJ2aWNlIFwKLSAgICAgICAgICAgIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiIHRyYWNrZXItc3RvcmUuc2VydmljZSB0cmFja2VyLW1pbmVyLWZzLnNlcnZpY2UgdHJhY2tlci1kYnVzLnNlcnZpY2UgIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1FWFRSQV9PRUNPTkYgKz0gIiB0cmFja2VyX2N2X2hhdmVfaW9wcmlvPXllcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAibmF1dGlsdXMiCi1QQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItLWVuYWJsZS1uYXV0aWx1cy1leHRlbnNpb24sLS1kaXNhYmxlLW5hdXRpbHVzLWV4dGVuc2lvbixuYXV0aWx1cyIKLQotIyBEaXNhYmxlIHRoZSBkZXNrdG9wLWNlbnRyaWMgbWluZXJzCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1taW5lci10aHVuZGVyYmlyZCAtLWRpc2FibGUtbWluZXItZmlyZWZveCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1taW5lci1ldm9sdXRpb24gLS1kaXNhYmxlLW1pbmVyLWZsaWNrciIKLQotTEVBRF9TT05BTUUgPSAibGlidHJhY2tlcmNsaWVudC5zby4wIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy9saWJ0cmFja2VyLXNwYXJxbC1iYWNrZW5kLy5saWJzOiR7Qn0vc3JjL2xpYnRyYWNrZXItZGF0YS8ubGliczoke0J9L3NyYy9saWJ0cmFja2VyLWNvbW1vbi8ubGlicyIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgY3AgLVBwUiAke0R9JHtTVEFHSU5HX0RBVEFESVJ9LyogJHtEfSR7ZGF0YWRpcn0vIHx8IHRydWUKLSMgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KLSMgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS85MHRyYWNrZXIgICR7RH0vJHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cmFja2VyLXN0b3JlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cmFja2VyLW1pbmVyLWZzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cmFja2VyLWRidXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfSxnJyBcCi0gICAgICAgICAgIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS12YWxhICR7UE59LW5hdXRpbHVzLWV4dGVuc2lvbiIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xLyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3RyYWNrZXItJHtWRVJfRElSfS8qLnNvLiogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS90cmFja2VyLSR7VkVSX0RJUn0vZXh0cmFjdC1tb2R1bGVzLyouc28gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS90cmFja2VyLSR7VkVSX0RJUn0vd3JpdGViYWNrLW1vZHVsZXMvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLyovYXBwcy90cmFja2VyLiogXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9uYXV0aWx1cy9leHRlbnNpb25zLTIuMC8qLmxhIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMvKiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS90cmFja2VyLXN0b3JlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdHJhY2tlci1taW5lci1mcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3RyYWNrZXItZGJ1cy5zZXJ2aWNlIFwKLSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdHJhY2tlci0ke1ZFUl9ESVJ9LyoubGEgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHJhY2tlci0ke1ZFUl9ESVJ9Lyouc28gXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHJhY2tlci0ke1ZFUl9ESVJ9LyovKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS90cmFja2VyLSR7VkVSX0RJUn0vZXh0cmFjdC1tb2R1bGVzLyoubGEiCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyouYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyovKi8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi8uZGVidWciCi1GSUxFU18ke1BOfS10ZXN0cyA9ICIke2RhdGFkaXJ9L3RyYWNrZXItdGVzdHMvIgotRklMRVNfJHtQTn0tdmFsYSA9ICIke2RhdGFkaXJ9L3ZhbGEvIgotRklMRVNfJHtQTn0tbmF1dGlsdXMtZXh0ZW5zaW9uICs9ICIke2xpYmRpcn0vbmF1dGlsdXMvZXh0ZW5zaW9ucy0yLjAvKi5zbyIKLQotU1JDX1VSSVttZDVzdW1dID0gImYzYTg3MWJlZWViZjg2ZmQ3NTI4NjNlYmQyMmFmOWFjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliNTkzMzBhYTJlOWUwOWZlZWU1ODdkZWQ4OTVlOTI0N2Y3MWZjMjVmNDZiMDIzZDYxNmQ5OTY5MzE0YmM3ZjEiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzgxMDA3LwotUE5CTEFDS0xJU1RbdHJhY2tlcl0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBuZXcgYmludXRpbHMtMi4yNyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdXNlcm1vZGUvdXNlcm1vZGUvMDAwMS1NYWtlZmlsZS5hbS1MaW5rLXdpdGgtbGlibS1mb3ItcG93bC1BUEkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtTWFrZWZpbGUuYW0tTGluay13aXRoLWxpYm0tZm9yLXBvd2wtQVBJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NjQwYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtTWFrZWZpbGUuYW0tTGluay13aXRoLWxpYm0tZm9yLXBvd2wtQVBJLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gZmRhMGZmNDk5NjhhZWJjN2IyN2Y5NzExY2Y2ZWI3ZjZjNTYwYWRjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI1IEp1bCAyMDE3IDE4OjI4OjE1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBMaW5rIHdpdGggbGlibSBmb3IgcG93bCgpIEFQSQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA0MjE5ZjI4Li4yYTVjZWFjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNjksNyArNjksNyBAQCBkaXN0X3BrZ2RhdGFfREFUQSA9IHVzZXJtb2RlLnVpCisgdXNlcmhlbHBlcl9TT1VSQ0VTID0gdXNlcmhlbHBlci5jIHVzZXJoZWxwZXIuaCBzaHZhci5jIHNodmFyLmgKKyB1c2VyaGVscGVyX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURTWVNDT05GRElSPSciJChzeXNjb25mZGlyKSInCisgdXNlcmhlbHBlcl9MREFERCA9IGxpYmxpYi5hICQoTElCVVNFUl9MSUJTKSAkKEdMSUJfTElCUykgJChQQU1fTElCUykgXAorLQkkKFNFTElOVVhfTElCUykgJChFRkVOQ0VfTElCUykKKysJJChTRUxJTlVYX0xJQlMpICQoRUZFTkNFX0xJQlMpIC1sbQorIAorIHVzZXJpbmZvX1NPVVJDRVMgPSB1c2VyaW5mby5jCisgdXNlcmluZm9fQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAkKFBJWE1BUERJUl9DUFBGTEFHUykgJChTQklORElSX0NQUEZMQUdTKSBcCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjE5ZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGM3N2UzZjBkNDU2MDc5N2Y3ZGM1NjU0OWFlNWViY2MwMzU3MTRhNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIEp1bCAyMDE3IDIzOjIwOjUzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb21waWxlIGZhaWx1cmUgYWdhaW5zdCBtdXNsIEMgbGlicmFyeQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdXNlcm1vdW50LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3VzZXJtb3VudC5jIGIvdXNlcm1vdW50LmMKK2luZGV4IDNhYWZhZGQuLjQxMDcwMjcgMTAwNjQ0CistLS0gYS91c2VybW91bnQuYworKysrIGIvdXNlcm1vdW50LmMKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8bW50ZW50Lmg+CisrI2luY2x1ZGUgPHBhdGhzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNTEyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA3YTMxNmRhZDA2OTdhZjJlZjRlODA3OWE1YWY1MTU2NWE4MTk1YWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNCBKdWwgMjAxNyAwMTo0MjozMCAtMDQwMAorU3ViamVjdDogW1BBVENIXSB1c2VyaGVscGVyLmM6IGZpeCBmb3JtYXR0aW5nIGlzc3VlcworCitGaXhlZCB3aGVuIGNvbXBpbGUgd2l0aCAiLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkiOgorfC4uL3VzZXJtb2RlLTEuMTExL3VzZXJoZWxwZXIuYzo1ODU6NDogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcKK2xpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICB0ZXh0ID0gZ19zdHJkdXBfcHJpbnRmKGRnZXR0ZXh0KGRhdGEtPmRvbWFpbiwgZGF0YS0+YmFubmVyKSk7Cit8ICAgIF5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHVzZXJoZWxwZXIuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3VzZXJoZWxwZXIuYyBiL3VzZXJoZWxwZXIuYworaW5kZXggNzZhZDQ5Mi4uZWUwZGE0OSAxMDA2NDQKKy0tLSBhL3VzZXJoZWxwZXIuYworKysrIGIvdXNlcmhlbHBlci5jCitAQCAtNTgyLDcgKzU4Miw3IEBAIGNvbnZlcnNlX2NvbnNvbGUoaW50IG51bV9tc2csIGNvbnN0IHN0cnVjdCBwYW1fbWVzc2FnZSAqKm1zZywKKyAKKyAJaWYgKGJhbm5lciA9PSAwKSB7CisgCQlpZiAoKGRhdGEtPmJhbm5lciAhPSBOVUxMKSAmJiAoZGF0YS0+ZG9tYWluICE9IE5VTEwpKSB7CistCQkJdGV4dCA9IGdfc3RyZHVwX3ByaW50ZihkZ2V0dGV4dChkYXRhLT5kb21haW4sIGRhdGEtPmJhbm5lcikpOworKwkJCXRleHQgPSBnX3N0cmR1cF9wcmludGYoIiVzIiwgZGdldHRleHQoZGF0YS0+ZG9tYWluLCBkYXRhLT5iYW5uZXIpKTsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKChzZXJ2aWNlICE9IE5VTEwpICYmIChzdHJsZW4oc2VydmljZSkgPiAwKSkgeworIAkJCQlpZiAoZGF0YS0+ZmFsbGJhY2tfYWxsb3dlZCkgeworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlXzEuMTExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZV8xLjExMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmQ3MzI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZV8xLjExMS5iYgpAQCAtMCwwICsxLDI5IEBACitERVNDUklQVElPTiA9ICJUaGUgdXNlcm1vZGUgY29udGFpbnMgdGhlIHVzZXJoZWxwZXIgcHJvZ3JhbSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYWxsb3cgY29uZmlndXJlZCBcCitwcm9ncmFtcyB0byBiZSBydW4gd2l0aCBzdXBlcnVzZXIgcHJpdmlsZWdlcyBieSBvcmRpbmFyeSB1c2VycywgYW5kIHNldmVyYWwgXAorZ3JhcGhpY2FsIHRvb2xzIGZvciB1c2VyczogXAorKiB1c2VyaW5mbyBhbGxvd3MgdXNlcnMgdG8gY2hhbmdlIHRoZWlyIGZpbmdlciBpbmZvcm1hdGlvbi4gXAorKiB1c2VybW91bnQgbGV0cyB1c2VycyBtb3VudCwgdW5tb3VudCwgYW5kIGZvcm1hdCBmaWxlc3lzdGVtcy4gXAorKiB1c2VycGFzc3dkIGFsbG93cyB1c2VycyB0byBjaGFuZ2UgdGhlaXIgcGFzc3dvcmRzLiBcCisiCitIT01FUEFHRSA9ICJodHRwczovL3BhZ3VyZS5pby91c2VybW9kZSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorREVQRU5EUyA9ICJsaWJ1c2VyICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0gXAorICAgICAgICAgICBndGsrIGRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUgXAorICAgICAgICAgICBzdGFydHVwLW5vdGlmaWNhdGlvbiBpbnRsdG9vbC1uYXRpdmUgXAorICAgICAgICAgICB1dGlsLWxpbnV4IFwKKyIKKworU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLUxpbmstd2l0aC1saWJtLWZvci1wb3dsLUFQSS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOGJhNTEwZmJkOGRhOWY0ZTg2ZTU3ZDZjMzFjZmYyOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGQwYjk2MzliNWJkMzk2YjdlYTVmYWRhNmFhYTY5NGRiZmRhYTNhZDA2ZWI5NWE2ZWFiY2RmZDAyZjg3NWM2IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworRVhUUkFfT0VNQUtFICs9ICJJTlNUQUxMPSdpbnN0YWxsIC1wJyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQyOTk3ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKLQotVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBweXJvCi1yZXZpc2lvbjogSEVBRAotCi1VUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0Ci1icmFuY2g6IHB5cm8KLXJldmlzaW9uOiBIRUFECi0KLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1ncGVdW3B5cm9dJyBpbiB0aGUgc3ViamVjdCcKLQotV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtZ3BlXVtweXJvXVtQQVRDSCcKLQotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvY29uZi9sYXllci5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGYzOTI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvY29uZi9sYXllci5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFwcGVuZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgYSByZWNpcGVzIGRpcmVjdG9yeSwgYWRkIHRvIEJCRklMRVMKLUJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKLQotQkJGSUxFX0NPTExFQ1RJT05TICs9ICJncGUtbGF5ZXIiCi1CQkZJTEVfUEFUVEVSTl9ncGUtbGF5ZXIgOj0gIl4ke0xBWUVSRElSfS8iCi1CQkZJTEVfUFJJT1JJVFlfZ3BlLWxheWVyID0gIjciCi0KLSMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAotIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwotTEFZRVJWRVJTSU9OX2dwZS1sYXllciA9ICIxIgotCi1MQVlFUkRFUEVORFNfZ3BlLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwLzAwMDEtRml4LXRoZS1vcmRlcmluZy1vZi1MREFERC1vcHRpb25zLXRvLWZpeC1hLWNvbXBpbGF0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9ncGUtc2NhcC9ncGUtc2NhcC8wMDAxLUZpeC10aGUtb3JkZXJpbmctb2YtTERBREQtb3B0aW9ucy10by1maXgtYS1jb21waWxhdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NzZmZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwLzAwMDEtRml4LXRoZS1vcmRlcmluZy1vZi1MREFERC1vcHRpb25zLXRvLWZpeC1hLWNvbXBpbGF0aS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gYzU1MWRlY2U2NzY4ZjY3Yjc0YjUwOGU5YzAxMzMzMjAyMDVlZjJkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBNb24sIDIzIE1heSAyMDExIDE1OjAzOjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0aGUgb3JkZXJpbmcgb2YgTERBREQgb3B0aW9ucyB0byBmaXggYSBjb21waWxhdGlvbiBmYWlsdXJlLgotCi0iaW52YWxpZCBEU08gZm9yIHN5bWJvbCBgWFVuZ3JhYlNlcnZlcicgZGVmaW5pdGlvbiAiCi0KLVNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCAgICAyICstCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDJmZGRjOTguLjQ1YmQ4NTAgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTYsNyArNiw3IEBAIElOQ0xVREVTID0gLURQS0dEQVRBRElSPVwiJChwa2dkYXRhZGlyKVwiIFwKLSAJICAgJChHTEFERV9DRkxBR1MpIFwKLSAgICAgICAgLURfR05VX1NPVVJDRQotIAotLUxJQlMgPSAkKEdUS19MSUJTKSAkKEdMQURFX0xJQlMpICQoWFNIQVBFX0xJQlMpCi0rTElCUyA9IC1sWDExICQoWFNIQVBFX0xJQlMpICQoR0xBREVfTElCUykgJChHVEtfTElCUykgCi0gCi0gYmluX1BST0dSQU1TID0gZ3BlLXNjYXAKLSBncGVfc2NhcF9TT1VSQ0VTID0gc2NyLWkxOG4uaCBcCi0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwL3VzZS5saWJzb3VwLTIuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9ncGUtc2NhcC9ncGUtc2NhcC91c2UubGlic291cC0yLjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZmU1ZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwL3VzZS5saWJzb3VwLTIuNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLWRpZmYgLXVOciBncGUtc2NhcC0xLjQub3JpZy9jb25maWd1cmUuYWMgZ3BlLXNjYXAtMS40L2NvbmZpZ3VyZS5hYwotLS0tIGdwZS1zY2FwLTEuNC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDA5LTAzLTA1IDE4OjUzOjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdwZS1zY2FwLTEuNC9jb25maWd1cmUuYWMJMjAxMi0wNS0wNiAxMDoxODoyOS4zNDgzMDgzMjIgKzAyMDAKLUBAIC0yNCw3ICsyNCw3IEBACi0gQUNfU1VCU1QoTERGTEFHUykKLSAKLSBkbmwgbGlicmFyaWVzCi0tR1RLX01PRFVMRVM9Imd0aystMi4wID49IDIuNi4wIGd0aHJlYWQtMi4wIGxpYnNvdXAtMi4yIgotK0dUS19NT0RVTEVTPSJndGsrLTIuMCA+PSAyLjYuMCBndGhyZWFkLTIuMCBsaWJzb3VwLTIuNCIKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhHVEssICRHVEtfTU9EVUxFUykKLSBBQ19TVUJTVChHVEtfQ0ZMQUdTKQotIEFDX1NVQlNUKEdUS19MSUJTKQotZGlmZiAtdU5yIGdwZS1zY2FwLTEuNC5vcmlnL3NyYy9zY3Itc2hvdC1jb21tb24uYyBncGUtc2NhcC0xLjQvc3JjL3Njci1zaG90LWNvbW1vbi5jCi0tLS0gZ3BlLXNjYXAtMS40Lm9yaWcvc3JjL3Njci1zaG90LWNvbW1vbi5jCTIwMDktMDMtMDUgMTI6MTM6MjAuMDAwMDAwMDAwICswMTAwCi0rKysgZ3BlLXNjYXAtMS40L3NyYy9zY3Itc2hvdC1jb21tb24uYwkyMDEyLTA1LTA2IDEwOjMwOjUyLjI5OTM3MTU3NiArMDIwMAotQEAgLTE4MiwxMiArMTgyLDEyIEBACi0gICAvKiBjcmVhdGUgc2Vzc2lvbiBhbmQgbWVzc2FnZSAqLwotICAgc2Vzc2lvbiA9IHNvdXBfc2Vzc2lvbl9zeW5jX25ldyAoKTsKLSAgIG1lc3NhZ2UgPSBzb3VwX21lc3NhZ2VfbmV3ICgiUE9TVCIsIHVybCk7Ci0tICBzb3VwX21lc3NhZ2VfYWRkX2hlYWRlciAobWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiVXNlci1BZ2VudCIsICJncGUtc2NhcC8iIFZFUlNJT04pOwotLSAgc291cF9tZXNzYWdlX2FkZF9oZWFkZXIgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdCIsCi0rICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIlVzZXItQWdlbnQiLCAiZ3BlLXNjYXAvIiBWRVJTSU9OKTsKLSsgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZCAobWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQWNjZXB0IiwKLSAJCQkgICAidGV4dC94bWwsYXBwbGljYXRpb24veG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCx0ZXh0L2h0bWw7cT0wLjksdGV4dC9wbGFpbjtxPTAuOCxpbWFnZS9wbmcsKi8qO3E9MC41Iik7Ci0tLyogIHNvdXBfbWVzc2FnZV9hZGRfaGVhZGVyIChtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJBY2NlcHQtQ2hhcnNldCIsICJBY2NlcHQtQ2hhcnNldD1JU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjciKTsKLS0gIHNvdXBfbWVzc2FnZV9hZGRfaGVhZGVyIChtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJLZWVwLUFsaXZlIiwgIjEwMCIpOwotLSAgc291cF9tZXNzYWdlX2FkZF9oZWFkZXIgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkNvbm5lY3Rpb24iLCAia2VlcC1hbGl2ZSIpOwotKy8qICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdC1DaGFyc2V0IiwgIkFjY2VwdC1DaGFyc2V0PUlTTy04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNyIpOwotKyAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kIChtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJLZWVwLUFsaXZlIiwgIjEwMCIpOwotKyAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kIChtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJDb25uZWN0aW9uIiwgImtlZXAtYWxpdmUiKTsKLSAgIHNvdXBfbWVzc2FnZV93aXJlCWFkZF9oZWFkZXIgKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdC1FbmNvZGluZyIsICJnemlwLGRlZmxhdGUiKTsKLSAqLwotICAgLyogYnVpbGQgbWVzc2FnZSBib2R5ICovCi1AQCAtMjA3LDcgKzIwNyw3IEBACi0gICBtZW1jcHkgKGJvZHkgKyBzdHJsZW4gKGNtZCkgKyBsZW4sIHRhaWwsIHN0cmxlbiAodGFpbCkpOwotIAotICAgc291cF9tZXNzYWdlX3NldF9yZXF1ZXN0IChtZXNzYWdlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IlNFUCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9CVUZGRVJfU1lTVEVNX09XTkVELCBib2R5LCBjb250ZW50X2xlbik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfTUVNT1JZX1RBS0UsIGJvZHksIGNvbnRlbnRfbGVuKTsKLSAKLSAgIHNvdXBfc2Vzc2lvbl9zZW5kX21lc3NhZ2UgKHNlc3Npb24sIG1lc3NhZ2UpOwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwXzEuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9ncGUtc2NhcC9ncGUtc2NhcF8xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiNTBlMzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2dwZS1zY2FwL2dwZS1zY2FwXzEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBHUEUgYXBwbGljYXRpb24gdGhhdCBhbGxvd3MgeW91IHRvIHRha2Ugc2NyZWVuc2hvdHMiCi1TRUNUSU9OID0gImdwZSIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5M2E1Y2E0NDVmNjk2NTg3M2VjYTAyNTlhMTdmODMzIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGd0aysgbGliZ3Bld2lkZ2V0IGxpYmdsYWRlIGxpYnNvdXAtMi40IgotCi1QUiA9ICJyMyIKLQotU1JDX1VSSVttZDVzdW1dID0gImVhZjU0NTU2MWIwYWQ5ODFjOWQwMTgzM2YzMGZjZjk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2Mjc3ODQyMWZhZTdjNjJkNWVjNmE5ZDI3OTg2MTY2YzBkYmJlMmZmNTFmYzEwYmI5YjhiYWZmNWMzNjc1MzQiCi0KLUdQRV9UQVJCQUxMX1NVRkZJWCA9ICJiejIiCi0KLWluaGVyaXQgZ3BlIGF1dG90b29scyBwa2djb25maWcKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRml4LXRoZS1vcmRlcmluZy1vZi1MREFERC1vcHRpb25zLXRvLWZpeC1hLWNvbXBpbGF0aS5wYXRjaCBcCi0gICAgZmlsZTovL3VzZS5saWJzb3VwLTIuNC5wYXRjaCBcCi0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJncGUtc2NyZWVuc2hvdCIKLQotUE5CTEFDS0xJU1RbZ3BlLXNjYXBdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGxpYmdwZXdpZGdldCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9saWJncGV3aWRnZXQvbGliZ3Bld2lkZ2V0L2dsaWItMi4zMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9saWJncGV3aWRnZXQvbGliZ3Bld2lkZ2V0L2dsaWItMi4zMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU5MGNhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtZ3JhcGhpY3MvbGliZ3Bld2lkZ2V0L2xpYmdwZXdpZGdldC9nbGliLTIuMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1kaWZmIC11TnIgbGliZ3Bld2lkZ2V0LTAuMTE3Lm9yaWcvZ3BlaGVscC5jIGxpYmdwZXdpZGdldC0wLjExNy9ncGVoZWxwLmMKLS0tLSBsaWJncGV3aWRnZXQtMC4xMTcub3JpZy9ncGVoZWxwLmMJMjAwNi0xMC0xMiAxMjoyMDozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJncGV3aWRnZXQtMC4xMTcvZ3BlaGVscC5jCTIwMTItMDQtMzAgMDc6NDU6NTcuODEzMjkzNzkyICswMjAwCi1AQCAtMzMsNyArMzMsNiBAQAotICNpbmNsdWRlIDxnZGstcGl4YnVmL2dkay1waXhidWYuaD4KLSAjaW5jbHVkZSA8Z2RrL2dkay5oPgotICNpbmNsdWRlIDxnbGliLmg+Ci0tI2luY2x1ZGUgPGdsaWIvZ2tleWZpbGUuaD4KLSAKLSAKLSAvKiBoZWxwZXIgZnVuY3Rpb24gZGVmaW5pdGlvbnMqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2xpYmdwZXdpZGdldC9saWJncGV3aWRnZXQvcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2xpYmdwZXdpZGdldC9saWJncGV3aWRnZXQvcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTdlMDFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9saWJncGV3aWRnZXQvbGliZ3Bld2lkZ2V0L3BrZ2NvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBjb25maWd1cmUuYWMub3JpZwkyMDA2LTAyLTA0IDE3OjM3OjU1LjAwMDAwMDAwMCArMDEwMAotKysrIGNvbmZpZ3VyZS5hYwkyMDA2LTAyLTA2IDAwOjU2OjI4LjAwMDAwMDAwMCArMDEwMAotQEAgLTM2LDcgKzM2LDcgQEAKLSAJRU5BQkxFX0NBSVJPPSRlbmFibGV2YWwKLSBdLAotIFsKLS0gICAgICAgCVBLR19DSEVDS19FWElTVFMoY2Fpcm8sIFtFTkFCTEVfQ0FJUk89eWVzXSwgW0VOQUJMRV9DQUlSTz1ub10pCi0rICAgICAgIAlQS0dfQ0hFQ0tfTU9EVUxFUyhjYWlybywgW0VOQUJMRV9DQUlSTz15ZXNdLCBbRU5BQkxFX0NBSVJPPW5vXSkKLSBdKQotIAotIEVOQUJMRV9ISUxET049ZmFsc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9saWJncGV3aWRnZXQvbGliZ3Bld2lkZ2V0XzAuMTE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2xpYmdwZXdpZGdldC9saWJncGV3aWRnZXRfMC4xMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZTI0N2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLWdyYXBoaWNzL2xpYmdwZXdpZGdldC9saWJncGV3aWRnZXRfMC4xMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJsaWJncGV3aWRnZXQgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIHdpZGdldHMgYW5kIG90aGVyIGNvbW1vbiBjb2RlIHNoYXJlZCBieSBtYW55IEdQRSBhcHBsaWNhdGlvbnMuIgotU0VDVElPTiA9ICJncGUvbGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKLQotREVQRU5EUyA9ICJndGsrIGNhaXJvIGxpYnhpbmVyYW1hIGxpYnhjb21wb3NpdGUgbGlieHJlbmRlciIKLVBSID0gInI1IgotCi1pbmhlcml0IGdwZSBwa2djb25maWcgYXV0b3Rvb2xzIGd0ay1kb2MKLQotU1JDX1VSSSArPSAiZmlsZTovL3BrZ2NvbmZpZy5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgIGZpbGU6Ly9nbGliLTIuMzIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImI4NWE4MzkyNjRhMzVkMGZhZjlhMWEzOGM0ODZlMTg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY5NmQzMGMwOWIwMzk1ZWE0ZTE0NjczMGZkNTJkOWVhMzAzYjYxOWJiMTM5MDUxZDlmMTJkM2Y4NjhhOWUxOGMiCi0KLUdQRV9UQVJCQUxMX1NVRkZJWCA9ICJiejIiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1jYWlybyAtLWRpc2FibGUtZ3RrLWRvYyIKLUxERkxBR1MgKz0gIiAtTCR7U1RBR0lOR19MSUJESVJ9IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tYmluIgotCi1QTkJMQUNLTElTVFtsaWJncGV3aWRnZXRdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNTk0LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9taW5pbGl0ZS9taW5pbGl0ZS9tYWtlZmlsZS1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtZ3JhcGhpY3MvbWluaWxpdGUvbWluaWxpdGUvbWFrZWZpbGUtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmU2Y2VhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9taW5pbGl0ZS9taW5pbGl0ZS9tYWtlZmlsZS1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gL3RtcC9NYWtlZmlsZS5vbGQJMjAwNi0wMS0xNiAyMjo1MTozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBtaW5pbGl0ZS0wNTAvTWFrZWZpbGUJMjAwOS0wNS0wMSAxNjozNjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NSw3ICs0NSw3IEBACi0gCi0gaW5zdGFsbC1wcm9ncmFtOiBhbGwKLSAJbWtkaXIgLXAgJChERVNURElSKSQoUFJFRklYKS9iaW4KLS0JJChJTlNUQUxMKSAtcyAkKFBBQ0tBR0UpICQoREVTVERJUikkKFBSRUZJWCkvYmluLyQoUEFDS0FHRSkKLSsJJChJTlNUQUxMKSAkKFBBQ0tBR0UpICQoREVTVERJUikkKFBSRUZJWCkvYmluLyQoUEFDS0FHRSkKLSAJbWtkaXIgLXAgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9hcHBsaWNhdGlvbnMKLSAJJChJTlNUQUxMKSAtbSA2NDQgJChQQUNLQUdFKS5kZXNrdG9wICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvYXBwbGljYXRpb25zLyQoUEFDS0FHRSkuZGVza3RvcAotIAlta2RpciAtcCAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL3BpeG1hcHMvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtZ3JhcGhpY3MvbWluaWxpdGUvbWluaWxpdGVfMC41MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9taW5pbGl0ZS9taW5pbGl0ZV8wLjUwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTA2NGZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1ncmFwaGljcy9taW5pbGl0ZS9taW5pbGl0ZV8wLjUwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHUEUgU2NyZWVuIGxpZ2h0IGNvbnRyb2wgZG9ja2FwcCIKLVNFQ1RJT04gPSAiZ3BlIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbWluaWxpdGUuYztiZWdpbmxpbmU9ODtlbmRsaW5lPTExO21kNT1mZTkzMzJhYWVjYmNlOWY3NGNlMmJmZWI5MTY4MGVkMSIKLQotREVQRU5EUyA9ICJsaWJncGV3aWRnZXQiCi0KLWluaGVyaXQgZ3BlCi0KLVNSQ19VUkkgPSAiJHtHUEVfTUlSUk9SfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtZml4LnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImQ4MWNlY2YyNjlhZDdiYWIwZGE5NjBlNmU3MjI4MzMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiMjk5NDI1MjAzMjQ2MDkwYTQ5NDllMDM0ZjFkMGVmYjNmZjk5Y2QxNTkxZDBlMTZjNTczNzBhNTMwYjM2MWUiCi0KLWV4cG9ydCBDVlNCVUlMRD0ibm8iCi0KLVBOQkxBQ0tMSVNUW21pbmlsaXRlXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBsaWJncGV3aWRnZXQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL01ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLXN1cHBvcnQvZmJyZWFkZXIvZmJyZWFkZXItMC4xMi4xMC9NYWtlZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU0OThjNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL01ha2VmaWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotZGlmZiAtdXJpIGZicmVhZGVyLTAuMTIuMS5vcmlnL2ZicmVhZGVyL01ha2VmaWxlIGZicmVhZGVyLTAuMTIuMS9mYnJlYWRlci9NYWtlZmlsZQotLS0tIGZicmVhZGVyLTAuMTIuMS5vcmlnL2ZicmVhZGVyL01ha2VmaWxlCTIwMDktMTItMTMgMDk6MDM6MTEuMDAwMDAwMDAwICswMTAwCi0rKysgZmJyZWFkZXItMC4xMi4xL2ZicmVhZGVyL01ha2VmaWxlCTIwMDktMTItMTQgMTc6MTg6NDcuNTQ4NjM4NzgzICswMTAwCi1AQCAtMzcsNyArMzcsNiBAQAotIAlAaW5zdGFsbCAkKFRBUkdFVCkgJChERVNURElSKSQoQklORElSKS9GQlJlYWRlcgotIAlAaW5zdGFsbCAtZCAkKEZCU0hBUkVESVIpCi0gCUBpbnN0YWxsIC1kICQoRkJTSEFSRURJUikvaGVscAotLQlALi9zY3JpcHRzL2luc3RhbGxfaGVscC5zaCAkKFZBUklBTlQpICQoRkJTSEFSRURJUikvaGVscAotIAlAaW5zdGFsbCAtZCAkKEZCU0hBUkVESVIpL25ldHdvcmsKLSAJQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvbmV0d29yay8qLnhtbCkgJChGQlNIQVJFRElSKS9uZXR3b3JrCi0gCUBpbnN0YWxsIC1kICQoRkJTSEFSRURJUikvbmV0d29yay9jZXJ0aWZpY2F0ZXMKLUBAIC01OCw4ICs1Nyw4IEBACi0gCUBpbnN0YWxsIC1kICQoRkJTSEFSRURJUikvcmVzb3VyY2VzCi0gCUBpbnN0YWxsIC1tIDA2NDQgJCh3aWxkY2FyZCBkYXRhL3Jlc291cmNlcy8qLnhtbCkgJChGQlNIQVJFRElSKS9yZXNvdXJjZXMKLSAJQGluc3RhbGwgLWQgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLS0JQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvaWNvbnMvdG9vbGJhci8kKFZBUklBTlQpLyouKikgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLS0JQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvaWNvbnMvZmlsZXRyZWUvJChWQVJJQU5UKS8qLiopICQoREVTVERJUikkKEFQUElNQUdFRElSX1JFQUwpCi0rCUBpbnN0YWxsIC1tIDA2NDQgJCh3aWxkY2FyZCBkYXRhL2ljb25zL3Rvb2xiYXIvJChUQVJHRVRfQVJDSCkvKi4qKSAkKERFU1RESVIpJChBUFBJTUFHRURJUl9SRUFMKQotKwlAaW5zdGFsbCAtbSAwNjQ0ICQod2lsZGNhcmQgZGF0YS9pY29ucy9maWxldHJlZS8kKFRBUkdFVF9BUkNIKS8qLiopICQoREVTVERJUikkKEFQUElNQUdFRElSX1JFQUwpCi0gCUBpbnN0YWxsIC1tIDA2NDQgJCh3aWxkY2FyZCBkYXRhL2ljb25zL2Jvb2t0cmVlL25ldy8qLiopICQoREVTVERJUikkKEFQUElNQUdFRElSX1JFQUwpCi0gCUBtYWtlIC1DICQoVEFSR0VUX0FSQ0gpIFJFU09MVVRJT049JChSRVNPTFVUSU9OKSBpbnN0YWxsCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL2ZpeC1jZmxhZ3MtZnJpYmlkaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMTAvZml4LWNmbGFncy1mcmliaWRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzJmYThjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMTAvZml4LWNmbGFncy1mcmliaWRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGZicmVhZGVyLTAuMTIuMTAvbWFrZWZpbGVzL2NvbmZpZy5tay5vcmlnCTIwMTYtMDUtMDMgMTE6MTE6MDcuMjU5NzM0NTYxIC0wNDAwCi0rKysgZmJyZWFkZXItMC4xMi4xMC9tYWtlZmlsZXMvY29uZmlnLm1rCTIwMTYtMDUtMDMgMTE6MTE6MzcuNDQ3NzM1Nzg2IC0wNDAwCi1AQCAtMzgsNyArMzgsNyBAQAotIAlMREZMQUdTICs9IC1wZwotIGVuZGlmCi0gCi0tWklOQ0xVREUgPSAtSSAkKFJPT1RESVIpL3psaWJyYXJ5L2NvcmUvaW5jbHVkZSAtSSAkKFJPT1RESVIpL3psaWJyYXJ5L3RleHQvaW5jbHVkZQotK1pJTkNMVURFID0gJChzaGVsbCBwa2ctY29uZmlnIC0tY2ZsYWdzIGZyaWJpZGkpIC1JICQoUk9PVERJUikvemxpYnJhcnkvY29yZS9pbmNsdWRlIC1JICQoUk9PVERJUikvemxpYnJhcnkvdGV4dC9pbmNsdWRlCi0gCi0gWkxTSEFSRUQgPz0geWVzCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL2ZpeC1yZXR1cm4tY29kZS1nY2M2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLXN1cHBvcnQvZmJyZWFkZXIvZmJyZWFkZXItMC4xMi4xMC9maXgtcmV0dXJuLWNvZGUtZ2NjNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdhYjRkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL2ZpeC1yZXR1cm4tY29kZS1nY2M2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGZicmVhZGVyLTAuMTIuMTAvZmJyZWFkZXIvc3JjL2RhdGFiYXNlL2Jvb2tzZGIvQm9va3NEQi5jcHAub3JpZwkyMDE2LTA2LTA4IDE0OjU0OjA0LjIwNjE5NjUwMSAtMDQwMAotKysrIGZicmVhZGVyLTAuMTIuMTAvZmJyZWFkZXIvc3JjL2RhdGFiYXNlL2Jvb2tzZGIvQm9va3NEQi5jcHAJMjAxNi0wNi0wOCAxNDo1NDoxNy42ODYxOTYzMjIgLTA0MDAKLUBAIC0xNDUsNyArMTQ1LDcgQEAKLSAKLSAJbXlGaW5kRmlsZUlkLT5zZXRGaWxlTmFtZShmaWxlTmFtZSk7Ci0gCWlmICghbXlGaW5kRmlsZUlkLT5ydW4oKSkgewotLQkJcmV0dXJuIGZhbHNlOwotKwkJcmV0dXJuIDA7Ci0gCX0KLSAJKChEQkludFZhbHVlJikqbXlMb2FkQm9vay0+cGFyYW1ldGVyKCJAZmlsZV9pZCIpLnZhbHVlKCkpID0gbXlGaW5kRmlsZUlkLT5maWxlSWQoKTsKLSAJc2hhcmVkX3B0cjxEQkRhdGFSZWFkZXI+IHJlYWRlciA9IG15TG9hZEJvb2stPmV4ZWN1dGVSZWFkZXIoKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMTAvZ2NjNDUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlci0wLjEyLjEwL2djYzQ1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGNiYTEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMTAvZ2NjNDUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0gIEZpeCBjb21waWxhdGlvbiB3aXRoIGdjYyA0LjUKLQotICBbRkJyZWFkZXIgVGlja2V0ICMzNDBdIC0tIGh0dHA6Ly9vbGQuZmJyZWFkZXIub3JnL21hbnRpcy92aWV3LnBocD9pZD0zNDAKLQotICBXaXRob3V0IHRoYXQgcGF0Y2ggd2UgaGF2ZToKLSAgICBDb21waWxpbmcgTGlicmFyeS5vIC4uLkxpYnJhcnkuY3BwOjQyOjE6IGVycm9yOiAnTGlicmFyeTo6TGlicmFyeScgbmFtZXMgdGhlIGNvbnN0cnVjdG9yLCBub3QgdGhlIHR5cGUKLQotICBVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtGaXhlZCBpbiBWZXJzaW9uIDAuMTQuMF0KLQotLS0tIGZicmVhZGVyLTAuMTIuMTAtb3JpZy9mYnJlYWRlci9zcmMvbGlicmFyeS9MaWJyYXJ5LmNwcAkyMDEwLTA0LTAxIDE1OjE0OjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGZicmVhZGVyLTAuMTIuMTAvZmJyZWFkZXIvc3JjL2xpYnJhcnkvTGlicmFyeS5jcHAJMjAxMC0wNC0xMyAxMzozNDowNi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zOSw3ICszOSw3IEBACi0gc2hhcmVkX3B0cjxMaWJyYXJ5PiBMaWJyYXJ5OjpvdXJJbnN0YW5jZTsKLSBjb25zdCBzaXplX3QgTGlicmFyeTo6TWF4UmVjZW50TGlzdFNpemUgPSAxMDsKLSAKLS1MaWJyYXJ5OjpMaWJyYXJ5ICZMaWJyYXJ5OjpJbnN0YW5jZSgpIHsKLStMaWJyYXJ5ICZMaWJyYXJ5OjpJbnN0YW5jZSgpIHsKLSAJaWYgKG91ckluc3RhbmNlLmlzTnVsbCgpKSB7Ci0gCQlvdXJJbnN0YW5jZSA9IG5ldyBMaWJyYXJ5KCk7Ci0gCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyXzAuMTIuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9mYnJlYWRlcl8wLjEyLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGJjZWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyXzAuMTIuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkZCcmVhZGVyIGlzIGFuIGVib29rIHJlYWRlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZmJyZWFkZXIub3JnIgotU0VDVElPTiA9ICJ4MTEvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2ZicmVhZGVyL0xJQ0VOU0U7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICJndGsrIGVuY2EgZXhwYXQgYnppcDIgbGliZ3Bld2lkZ2V0IHZpcnR1YWwvbGliaWNvbnYgbGlibGluZWJyZWFrIGxpYmZyaWJpZGkgY3VybCBzcWxpdGUzIgotCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZicmVhZGVyLm9yZy9mYnJlYWRlci1zb3VyY2VzLSR7UFZ9LnRneiBcCi1maWxlOi8vTWFrZWZpbGUucGF0Y2ggXAotZmlsZTovL2djYzQ1LnBhdGNoIFwKLWZpbGU6Ly9maXgtY2ZsYWdzLWZyaWJpZGkucGF0Y2ggXAotZmlsZTovL2ZpeC1yZXR1cm4tY29kZS1nY2M2LnBhdGNoIgotCi0jIFNldCB0aGUgZGVmYXVsdHMKLVJFQURFUl9SRVNPTFVUSU9OID89ICIxMDI0eDYwMCIKLVJFQURFUl9BUkNIICAgICAgID89ICJkZXNrdG9wIgotUkVBREVSX1VJICAgICAgICAgPz0gImd0ayIKLVJFQURFUl9TVEFUVVMgICAgID89ICJyZWxlYXNlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9GQlJlYWRlciAke2RhdGFkaXJ9L3psaWJyYXJ5ICR7bGliZGlyfS96bGlicmFyeSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3psaWJyYXJ5L3VpLy5kZWJ1Zy8iCi0KLUNGTEFHU19hcHBlbmQgPSAiIFJFU09MVVRJT049JHtSRUFERVJfUkVTT0xVVElPTn0gSU5TVEFMTERJUj0ke3ByZWZpeH0iCi1FWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q1hYfScgTEQ9JyR7Q1hYfScgTERGTEFHUz0nJHtMREZMQUdTfScgSU5DUEFUSD0nJHtTVEFHSU5HX0lOQ0RJUn0nIExJQlBBVEg9JyR7U1RBR0lOR19MSUJESVJ9JyIKLQotaW5oZXJpdCBwa2djb25maWcKLQotZG9fY29uZmlndXJlKCkgewotICAgIGNkICR7V09SS0RJUn0vJHtQTn0tJHtQVn0KLSAgICBtdiBtYWtlZmlsZXMvdGFyZ2V0Lm1rIG1ha2VmaWxlcy90YXJnZXQubWsub3JpZwotCi0gICAgZWNobyAiVEFSR0VUX0FSQ0ggPSAke1JFQURFUl9BUkNIfSIgPiBtYWtlZmlsZXMvdGFyZ2V0Lm1rCi0gICAgZWNobyAiVUlfVFlQRSA9ICR7UkVBREVSX1VJfSIgPj4gbWFrZWZpbGVzL3RhcmdldC5tawotICAgIGVjaG8gIlRBUkdFVF9TVEFUVVMgPSAke1JFQURFUl9TVEFUVVN9IiA+PiBtYWtlZmlsZXMvdGFyZ2V0Lm1rCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBSRVNPTFVUSU9OPSR7UkVBREVSX1JFU09MVVRJT059Ci19Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYTllYzQ3MjFlZmRiMGVjMGFhYTE4MmJmZjE2YWQ4MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjhhZWM0NTRkYjgwZTIyNWFhMGI1YzMxYWRlZjc0YmY2MmExNDM1NzQ4Mjk0N2U4N2U5NzMxNjg2YjNjNjI0IgotCi1QTkJMQUNLTElTVFtmYnJlYWRlcl0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgbGliZ3Bld2lkZ2V0IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLXN1cHBvcnQvZmJyZWFkZXIvZmJyZWFkZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdwZS9yZWNpcGVzLXN1cHBvcnQvZmJyZWFkZXIvZmJyZWFkZXJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2U3OTQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZicmVhZGVyX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiRkJyZWFkZXIgaXMgYW4gZWJvb2sgcmVhZGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mYnJlYWRlci5vcmciCi1TRUNUSU9OID0gIngxMS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZmJyZWFkZXIvTElDRU5TRTttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi1ERVBFTkRTID0gImd0aysgZW5jYSBleHBhdCBiemlwMiBsaWJncGV3aWRnZXQgdmlydHVhbC9saWJpY29udiBsaWJsaW5lYnJlYWsgbGliZnJpYmlkaSBjdXJsIHNxbGl0ZTMiCi1TUkNSRVYgPSAiMmNmMWVjMGUzMDZlMTEyMmRiZWQ4NTBiZmEwMDVjZDU5YTYxNjhlZSIKLVBWID0gIjAuOTkuNStnaXRyJHtTUkNQVn0iCi0KLVBSID0gInIxIgotCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nZW9tZXRlci9GQlJlYWRlci5naXQ7cHJvdG9jb2w9aHR0cDticmFuY2g9bWFzdGVyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWluc3RhbGxhdGlvbi1vZi10aGUtaWNvbnMtd2hlbi1SRVNPTFVUSU9OLWlzLXNldC5wYXRjaCIKLQotIyBTZXQgdGhlIGRlZmF1bHRzCi1SRUFERVJfUkVTT0xVVElPTiA/PSAiMTAyNHg2MDAiCi1SRUFERVJfQVJDSCAgICAgICA/PSAiZGVza3RvcCIKLVJFQURFUl9VSSAgICAgICAgID89ICJndGsiCi1SRUFERVJfU1RBVFVTICAgICA/PSAicmVsZWFzZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vRkJSZWFkZXIgJHtkYXRhZGlyfS96bGlicmFyeSAke2xpYmRpcn0vemxpYnJhcnkiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS96bGlicmFyeS91aS8uZGVidWcvIgotCi1DRkxBR1NfYXBwZW5kID0gIiBSRVNPTFVUSU9OPSR7UkVBREVSX1JFU09MVVRJT059IElOU1RBTExESVI9JHtwcmVmaXh9IgotRVhUUkFfT0VNQUtFID0gIkNDPScke0NYWH0nIExEPScke0NYWH0nIElOQ1BBVEg9JyR7U1RBR0lOR19JTkNESVJ9JyBMSUJQQVRIPScke1NUQUdJTkdfTElCRElSfSciCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgY2QgIiR7U30iCi0KLSAgICBlY2hvICJUQVJHRVRfQVJDSCA9ICR7UkVBREVSX0FSQ0h9IiA+IG1ha2VmaWxlcy90YXJnZXQubWsKLSAgICBlY2hvICJVSV9UWVBFID0gJHtSRUFERVJfVUl9IiA+PiBtYWtlZmlsZXMvdGFyZ2V0Lm1rCi0gICAgZWNobyAiVEFSR0VUX1NUQVRVUyA9ICR7UkVBREVSX1NUQVRVU30iID4+IG1ha2VmaWxlcy90YXJnZXQubWsKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFJFU09MVVRJT049JHtSRUFERVJfUkVTT0xVVElPTn0KLX0KLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvNjg2MTgvCi1QTkJMQUNLTElTVFtmYnJlYWRlcl0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBnY2MtNiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZpbGVzLzAwMDEtRml4LWluc3RhbGxhdGlvbi1vZi10aGUtaWNvbnMtd2hlbi1SRVNPTFVUSU9OLWlzLXNldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ncGUvcmVjaXBlcy1zdXBwb3J0L2ZicmVhZGVyL2ZpbGVzLzAwMDEtRml4LWluc3RhbGxhdGlvbi1vZi10aGUtaWNvbnMtd2hlbi1SRVNPTFVUSU9OLWlzLXNldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZlMTIwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ3BlL3JlY2lwZXMtc3VwcG9ydC9mYnJlYWRlci9maWxlcy8wMDAxLUZpeC1pbnN0YWxsYXRpb24tb2YtdGhlLWljb25zLXdoZW4tUkVTT0xVVElPTi1pcy1zZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGRhNDE3MGI2MWJiNDFlZmYwYWYxNzBkMWQ3N2JmZDkwZjllYmU1ZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5pcyAnR05VdG9vJyBDYXJpa2xpIDxHTlV0b29Abm8tbG9nLm9yZz4KLURhdGU6IEZyaSwgMjAgSmFuIDIwMTIgMTE6MzQ6NDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGluc3RhbGxhdGlvbiBvZiB0aGUgaWNvbnMgd2hlbiBSRVNPTFVUSU9OIGlzIHNldAotCi1XaGVuIHJlc29sdXRpb24gaXMgc2V0LCB0aGUgZm9sbG93aW5nIGNvZGUoaW4gZmJyZWFkZXIvTWFrZWZpbGUpIGlzIGV4ZWN1dGVkOgotICBWQVJJQU5UID0gJChUQVJHRVRfQVJDSCkKLSAgaWZuZXEgIiQoUkVTT0xVVElPTikiICIiCi0gICAgVkFSSUFOVCA9ICQoVEFSR0VUX0FSQ0gpXyQoUkVTT0xVVElPTikKLSAgZW5kaWYKLQotVGhpcyBmaXggaXMgYmFzZWQgb24gYSBwYXRjaCBmcm9tIHRoZSBvcGVuZW1iZWRkZWQgcHJvamVjdCwKLSAgd2hpY2ggY2FuIGJlIGZvdW5kIGhlcmU6Ci0gICAgaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQvdHJlZS9yZWNpcGVzL2ZicmVhZGVyL2ZicmVhZGVyLTAuMTIuMS9NYWtlZmlsZS5wYXRjaAotCi1TaWduZWQtb2ZmLWJ5OiBEZW5pcyAnR05VdG9vJyBDYXJpa2xpIDxHTlV0b29Abm8tbG9nLm9yZz4KLS0tLQotIFN1Ym1pdHRlZCB0cm91Z2ggZ2l0aHViIHRvIGdpdDovL2dpdGh1Yi5jb20vZ2VvbWV0ZXIvRkJSZWFkZXIuZ2l0IGFzIGEgcHVsbCByZXF1ZXN0Ci0KLSBmYnJlYWRlci9NYWtlZmlsZSB8ICAgIDQgKystLQotIDEgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZmJyZWFkZXIvTWFrZWZpbGUgYi9mYnJlYWRlci9NYWtlZmlsZQotaW5kZXggYmZhOTI0Mi4uMDNlNmNjMyAxMDA2NDQKLS0tLSBhL2ZicmVhZGVyL01ha2VmaWxlCi0rKysgYi9mYnJlYWRlci9NYWtlZmlsZQotQEAgLTYwLDggKzYwLDggQEAgZG9faW5zdGFsbDoKLSAJQGluc3RhbGwgLWQgJChGQlNIQVJFRElSKS9yZXNvdXJjZXMKLSAJQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvcmVzb3VyY2VzLyoueG1sKSAkKEZCU0hBUkVESVIpL3Jlc291cmNlcwotIAlAaW5zdGFsbCAtZCAkKERFU1RESVIpJChBUFBJTUFHRURJUl9SRUFMKQotLQlAaW5zdGFsbCAtbSAwNjQ0ICQod2lsZGNhcmQgZGF0YS9pY29ucy90b29sYmFyLyQoVkFSSUFOVCkvKi4qKSAkKERFU1RESVIpJChBUFBJTUFHRURJUl9SRUFMKQotLQlAaW5zdGFsbCAtbSAwNjQ0ICQod2lsZGNhcmQgZGF0YS9pY29ucy9maWxldHJlZS8kKFZBUklBTlQpLyouKikgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLSsJQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvaWNvbnMvdG9vbGJhci8kKFRBUkdFVF9BUkNIKS8qLiopICQoREVTVERJUikkKEFQUElNQUdFRElSX1JFQUwpCi0rCUBpbnN0YWxsIC1tIDA2NDQgJCh3aWxkY2FyZCBkYXRhL2ljb25zL2ZpbGV0cmVlLyQoVEFSR0VUX0FSQ0gpLyouKikgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLSAJQGluc3RhbGwgLW0gMDY0NCAkKHdpbGRjYXJkIGRhdGEvaWNvbnMvYm9va3RyZWUvbmV3LyouKikgJChERVNURElSKSQoQVBQSU1BR0VESVJfUkVBTCkKLSAJQG1ha2UgLUMgJChUQVJHRVRfQVJDSCkgUkVTT0xVVElPTj0kKFJFU09MVVRJT04pIGluc3RhbGwKLSAKLS0tIAotMS43LjQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvUkVBRE1FCmluZGV4IDljMDVlMWZkLi5iN2RiZmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL1JFQURNRQpAQCAtMTIsNyArMTIsNyBAQAogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29lLWNvcmUuZ2l0Ci1icmFuY2g6IHB5cm8KK2JyYW5jaDogcm9ja28KIHJldmlzaW9uOiBIRUFECiAKIApAQCAtMjAsMTIgKzIwLDEyIEBACiAtLS0tLS0tLS0tLQogCiBTZW5kIHBhdGNoZXMgLyBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnCi13aXRoICdbbWV0YS1pbml0cmFtZnNdW3B5cm9dJyBpbiB0aGUgc3ViamVjdC4KK3dpdGggJ1ttZXRhLWluaXRyYW1mc11bcm9ja29dJyBpbiB0aGUgc3ViamVjdC4KIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtaW5pdHJhbWZzXVtweXJvXVtQQVRDSCcKKydnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1pbml0cmFtZnNdW3JvY2tvXVtQQVRDSCcKIAotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKK3JvY2tvIEJyYW5jaCBNYWludGFpbmVyOgogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NsYXNzZXMva2xpYmMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvY2xhc3Nlcy9rbGliYy5iYmNsYXNzCmluZGV4IGY4NjQxMDQuLmI3YjcyYjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvY2xhc3Nlcy9rbGliYy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvY2xhc3Nlcy9rbGliYy5iYmNsYXNzCkBAIC0zLDEzICszLDE0IEBACiAKICMgRGVmYXVsdCBmb3Iga2xjYyBpcyB0byBidWlsZCBzdGF0aWMgYmluYXJpZXMuCiAjIFNldCBDQyA9ICIke1RBUkdFVF9QUkVGSVh9a2xjYyAtc2hhcmVkIiB0byBidWlsZCB0aGUgZHluYW1pYyB2ZXJzaW9uLgorQ0NfZm9yY2V2YXJpYWJsZSA9ICIke1RBUkdFVF9QUkVGSVh9a2xjYyAke1RPT0xDSEFJTl9PUFRJT05TfSIKK0NDX2ZvcmNldmFyaWFibGVfYXJtdjRfbGludXgtZ251ZWFiaSA9ICIke1RBUkdFVF9QUkVGSVh9a2xjYyAke1RPT0xDSEFJTl9PUFRJT05TfSAtbWFyY2g9YXJtdjQgLW10aHVtYi1pbnRlcndvcmsiCitDQ19hcHBlbmRfYXJtdjd2ZSA9ICIgJHtAJyAtbWZsb2F0LWFiaT0ke1RVTkVfQ0NBUkdTX01GTE9BVH0nIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZMT0FUJykgIT0gJycpIGVsc2UgJyd9IgorQ0NfYXBwZW5kX2FybXY3YSA9ICIgJHtAJyAtbWZsb2F0LWFiaT0ke1RVTkVfQ0NBUkdTX01GTE9BVH0nIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZMT0FUJykgIT0gJycpIGVsc2UgJyd9IgogCi1leHBvcnQgQ0MgPSAiJHtUQVJHRVRfUFJFRklYfWtsY2MgJHtUT09MQ0hBSU5fT1BUSU9OU30iCi1leHBvcnQgQ0NfYXJtdjRfbGludXgtZ251ZWFiaSA9ICIke1RBUkdFVF9QUkVGSVh9a2xjYyAke1RPT0xDSEFJTl9PUFRJT05TfSAtbWFyY2g9YXJtdjQgLW10aHVtYi1pbnRlcndvcmsiCi0KLWV4cG9ydCBDUFAgPSAiJHtDQ30gLUUiCitDUFBfZm9yY2V2YXJpYWJsZSA9ICIke0NDfSAtRSIKIAogIyBrbGNjIHVzZXMgb3duIG9wdGltaXphdGlvbnMgYnkgZGVmYXVsdC4gU2VlIGtsY2MoMSkgbWFuIGZpbGUuCi1leHBvcnQgQ0ZMQUdTPSIiCi1leHBvcnQgQ1BQRkxBR1M9IiIKLWV4cG9ydCBMREZMQUdTPSIiCitleHBvcnQgQ0ZMQUdTPSIke1RVTkVfQ0NBUkdTfSIKK2V4cG9ydCBDUFBGTEFHUz0iJHtUVU5FX0NDQVJHU30iCitleHBvcnQgTERGTEFHUz0iJHtUVU5FX0NDQVJHU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWltYWdlLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWtleGVjYm9vdC1pbWFnZS5iYgppbmRleCA4MzViMzA3Li4yNTczZWI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWltYWdlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIkluaXRyYW1mcyBpbWFnZSBmb3Iga2V4ZWNib290IGtlcm5lbCIKIERFU0NSSVBUSU9OID0gIlRoaXMgaW1hZ2UgcHJvdmlkZXMga2V4ZWNib290IChsaW51eCBhcyBib290bG9hZGVyKSBhbmQgaGVscGVycy4iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKIGluaGVyaXQgaW1hZ2UKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1kZWJ1Z18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWRlYnVnXzEuMC5iYgppbmRleCBiN2RlZmZmLi42Njc2OTBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWRlYnVnXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWRlYnVnXzEuMC5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiRXh0cmVtZWx5IGJhc2ljIGxpdmUgaW1hZ2UgaW5pdCBzY3JpcHQiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiBTUkNfVVJJID0gImZpbGU6Ly9pbml0LWRlYnVnLnNoIgogCiBTID0gIiR7V09SS0RJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDAxLWtleGVjYm9vdC1maXgtYnVpbGQtd2hlbi1TLUIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDAxLWtleGVjYm9vdC1maXgtYnVpbGQtd2hlbi1TLUIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMzI3MGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwMS1rZXhlY2Jvb3QtZml4LWJ1aWxkLXdoZW4tUy1CLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSA4NTE5ZDYxYTcwOTc0OThiMGVlOTNmYjhkYzgyNjIyODY4MjVmM2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogVGh1LCAxIE1heSAyMDE0IDIzOjU4OjUxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBrZXhlY2Jvb3Q6IGZpeCBidWlsZCB3aGVuIFMgIT0gQgotCi0qIGZhdGFsIGVycm9yOiAuLi9jb25maWcuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSBtYWNoaW5lL3phdXJ1cy5jIHwgMiArLQotIHJlcy90aGVtZS1ndWkuaCAgfCAyICstCi0gcmVzL3RoZW1lLXR1aS5oICB8IDQgKystLQotIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWFjaGluZS96YXVydXMuYyBiL21hY2hpbmUvemF1cnVzLmMKLWluZGV4IGVhMjEwNDcuLjgzYmUxM2IgMTAwNjQ0Ci0tLS0gYS9tYWNoaW5lL3phdXJ1cy5jCi0rKysgYi9tYWNoaW5lL3phdXJ1cy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICAqCi0gICovCi0gCi0tI2luY2x1ZGUgIi4uL2NvbmZpZy5oIgotKyNpbmNsdWRlICJjb25maWcuaCIKLSAKLSAjaWZkZWYgVVNFX1pBVVJVUwotIAotZGlmZiAtLWdpdCBhL3Jlcy90aGVtZS1ndWkuaCBiL3Jlcy90aGVtZS1ndWkuaAotaW5kZXggZjhmZWY3Zi4uNzliZWQzOSAxMDA2NDQKLS0tLSBhL3Jlcy90aGVtZS1ndWkuaAotKysrIGIvcmVzL3RoZW1lLWd1aS5oCi1AQCAtMTUsNyArMTUsNyBAQAotICAqCi0gICovCi0gCi0tI2luY2x1ZGUgIi4uL2NvbmZpZy5oIgotKyNpbmNsdWRlICJjb25maWcuaCIKLSAKLSAjaWZkZWYgVVNFX0lDT05TCi0gLyoqIEljb25zICoqLwotZGlmZiAtLWdpdCBhL3Jlcy90aGVtZS10dWkuaCBiL3Jlcy90aGVtZS10dWkuaAotaW5kZXggOTRlNzY5My4uOTA5YmU1NiAxMDA2NDQKLS0tLSBhL3Jlcy90aGVtZS10dWkuaAotKysrIGIvcmVzL3RoZW1lLXR1aS5oCi1AQCAtMTUsMTEgKzE1LDExIEBACi0gICoKLSAgKi8KLSAKLS0jaW5jbHVkZSAiLi4vY29uZmlnLmgiCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotIAotICNpZmRlZiBVU0VfVEVYVFVJCi0gLyoqIFRFWFQgVUkgY29sb3JzICoqLwotLSNpbmNsdWRlICIuLi90ZXJtc2VxLmgiCi0rI2luY2x1ZGUgInRlcm1zZXEuaCIKLSAKLSAvKiBCYWNrZ3JvdW5kIGNvbG9yIHBhaXIgKi8KLSAjZGVmaW5lIFRVSV9DTFJfQkcJCVRFUk1fQ1NJIFRFUk1fQkdfQkxBQ0sgIjsiIFRFUk1fRkdfV0hJVEUgVEVSTV9TR1IKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwMi1rZXhlY2Jvb3QtZml4LWNvbmZpZ3VyZS13YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDIta2V4ZWNib290LWZpeC1jb25maWd1cmUtd2FybmluZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZjQyMmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwMi1rZXhlY2Jvb3QtZml4LWNvbmZpZ3VyZS13YXJuaW5ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gYjg5MzhhY2MzZjFhYjM1MjczZmE5YTJmYTc3MjgwNTBlZjcyZmY2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMiBNYXkgMjAxNCAwMDoxOToyNCArMDIwMAotU3ViamVjdDogW1BBVENIIDIvNF0ga2V4ZWNib290OiBmaXggY29uZmlndXJlIHdhcm5pbmdzCi0KLU1ha2VmaWxlLmFtOjU6IHdhcm5pbmc6IHNvdXJjZSBmaWxlICdmc3R5cGUvZnN0eXBlLmMnIGlzIGluIGEgc3ViZGlyZWN0b3J5LAotTWFrZWZpbGUuYW06NTogYnV0IG9wdGlvbiAnc3ViZGlyLW9iamVjdHMnIGlzIGRpc2FibGVkCi1hdXRvbWFrZTogd2FybmluZzogcG9zc2libGUgZm9yd2FyZC1pbmNvbXBhdGliaWxpdHkuCi0uLi4KLU1ha2VmaWxlLmFtOjU6IHdhcm5pbmc6IHNvdXJjZSBmaWxlICdtYWNoaW5lL3phdXJ1cy5jJyBpcyBpbiBhIHN1YmRpcmVjdG9yeSwKLS4uLgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBjYTRiODEuLjY2ZWM1NGUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEsNyArMSw3IEBACi0gQUNfUFJFUkVRKDIuNTMpCi0gQUNfSU5JVChba2V4ZWNib290XSwgWzAuNl0sIFtrZXhlY2Jvb3QtZGV2ZWxAbGludXh0b2dvLm9yZ10pCi0gQUNfQ0FOT05JQ0FMX0hPU1QKLS1BTV9JTklUX0FVVE9NQUtFKFstV2FsbCBmb3JlaWduXSkKLStBTV9JTklUX0FVVE9NQUtFKFstV2FsbCBmb3JlaWduXSBbc3ViZGlyLW9iamVjdHNdKQotIEFDX0NPTkZJR19TUkNESVIoa2V4ZWNib290LmMpCi0gQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0gQU1fTUFJTlRBSU5FUl9NT0RFCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDMta2V4ZWNib290LWRvLW5vdC1oYXJkY29kZS1NT1VOVFBPSU5ULnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwMy1rZXhlY2Jvb3QtZG8tbm90LWhhcmRjb2RlLU1PVU5UUE9JTlQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYWEwZDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwMy1rZXhlY2Jvb3QtZG8tbm90LWhhcmRjb2RlLU1PVU5UUE9JTlQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi1Gcm9tIDgwMGRhZTBkMzRmODYyOWEzNGM2MzhhNjEyMTY2Yjc2ZGRhMDNlMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIgQXVnIDIwMTQgMDE6MTM6MDggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIGtleGVjYm9vdDogZG8gbm90IGhhcmRjb2RlIE1PVU5UUE9JTlQKLQotQXZvaWQgdG8gaGFyZGNvZGUgaXQ6IGNvdWxkIGJlIHJlcXVlc3RlZCBhcyBhIG5ldyBjb25maWd1cmUgb3B0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSBjZmdwYXJzZXIuYyB8ICA2ICsrKy0tLQotIGtleGVjYm9vdC5jIHwgMTggKysrKysrKysrKy0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NmZ3BhcnNlci5jIGIvY2ZncGFyc2VyLmMKLWluZGV4IDhmNjY4OGMuLmRlYzI3YjEgMTAwNjQ0Ci0tLS0gYS9jZmdwYXJzZXIuYwotKysrIGIvY2ZncGFyc2VyLmMKLUBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIGludCBzZXRfa2VybmVsKHN0cnVjdCBjZmdkYXRhX3QgKmNmZ2RhdGEsIGNoYXIgKnZhbHVlKQotIAkJcmV0dXJuIC0xOwotIAl9Ci0gCi0tCXN0cmNweShzYy0+a2VybmVscGF0aCwgIi9tbnQiKTsKLSsJc3RyY3B5KHNjLT5rZXJuZWxwYXRoLCBNT1VOVFBPSU5UKTsKLSAJc3RyY2F0KHNjLT5rZXJuZWxwYXRoLCB2YWx1ZSk7Ci0gCXJldHVybiAwOwotIH0KLUBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIGludCBzZXRfaWNvbihzdHJ1Y3QgY2ZnZGF0YV90ICpjZmdkYXRhLCBjaGFyICp2YWx1ZSkKLSAKLSAJZGlzcG9zZShzYy0+aWNvbnBhdGgpOwotIAkvKiBBZGQgb3VyIG1vdW50cG9pbnQsIHNpbmNlIHRoZSBlbmR1c2VyIHdvbid0IGtub3cgaXQgKi8KLS0Jc2MtPmljb25wYXRoID0gbWFsbG9jKHNpemVvZihNT1VOVFBPSU5UKStzdHJsZW4odmFsdWUpKTsKLSsJc2MtPmljb25wYXRoID0gbWFsbG9jKHN0cmxlbihNT1VOVFBPSU5UKStzdHJsZW4odmFsdWUpKzEpOwotIAlpZiAoTlVMTCA9PSBzYy0+aWNvbnBhdGgpIHsKLSAJCURQUklOVEYoIkNhbid0IGFsbG9jYXRlIG1lbW9yeSB0byBzdG9yZSBpY29ucGF0aCAnJXMnIiwgdmFsdWUpOwotIAkJcmV0dXJuIC0xOwotQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgaW50IHNldF9pbml0cmQoc3RydWN0IGNmZ2RhdGFfdCAqY2ZnZGF0YSwgY2hhciAqdmFsdWUpCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSAKLS0Jc3RyY3B5KHNjLT5pbml0cmQsICIvbW50Iik7Ci0rCXN0cmNweShzYy0+aW5pdHJkLCBNT1VOVFBPSU5UKTsKLSAJc3RyY2F0KHNjLT5pbml0cmQsIHZhbHVlKTsKLSAJcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBhL2tleGVjYm9vdC5jIGIva2V4ZWNib290LmMKLWluZGV4IGQ2NjU3YTAuLjcyNjhkNmIgMTAwNjQ0Ci0tLS0gYS9rZXhlY2Jvb3QuYwotKysrIGIva2V4ZWNib290LmMKLUBAIC01NywyMCArNTcsMjIgQEAKLSAjZW5kaWYKLSAKLSAjaWZkZWYgVVNFX01BQ0hJTkVfS0VSTkVMCi0tLyogTWFjaGluZS1kZXBlbmRlbnQga2VybmVsIHBhdGNoICovCi0rLyogTWFjaGluZS1kZXBlbmRlbnQga2VybmVsIHBhdGggKi8KLSBjaGFyICptYWNoaW5lX2tlcm5lbCA9IE5VTEw7Ci0gI2VuZGlmCi0gCi0rI2RlZmluZSBQUkVQRU5EX01PVU5UUEFUSChzdHJpbmcpIE1PVU5UUE9JTlQiInN0cmluZwotKwotIC8qIE5VTEwtdGVybWluYXRlZCBhcnJheSBvZiBrZXJuZWwgc2VhcmNoIHBhdGhzCi0gICogRmlyc3QgaXRlbSBzaG91bGQgYmUgZmlsbGVkIHdpdGggbWFjaGluZS1kZXBlbmRlbnQgcGF0aCAqLwotIGNoYXIgKmRlZmF1bHRfa2VybmVsc1tdID0gewotICNpZmRlZiBVU0VfWklNQUdFCi0tCSIvbW50L2Jvb3QvekltYWdlIiwKLS0JIi9tbnQvekltYWdlIiwKLSsJUFJFUEVORF9NT1VOVFBBVEgoIi9ib290L3pJbWFnZSIpLAotKwlQUkVQRU5EX01PVU5UUEFUSCgiL3pJbWFnZSIpLAotICNlbmRpZgotICNpZmRlZiBVU0VfVUlNQUdFCi0tCSIvbW50L2Jvb3QvdUltYWdlIiwKLS0JIi9tbnQvdUltYWdlIiwKLSsJUFJFUEVORF9NT1VOVFBBVEgoIi9ib290L3VJbWFnZSIpLAotKwlQUkVQRU5EX01PVU5UUEFUSCgiL3VJbWFnZSIpLAotICNlbmRpZgotIAlOVUxMCi0gfTsKLUBAIC0xNDksMTQgKzE1MSwxNCBAQCBjaGFyICpnZXRfbWFjaGluZV9rZXJuZWxwYXRoKCkgewotIAkJCSsrdG1wOwotIAkJfQotIAotLQkJLyogUHJlcGVuZCAiL21udC9ib290L3pJbWFnZS0iIHRvIGh3ICovCi0tCQl0bXAgPSBtYWxsb2Moc3RybGVuKGh3KSArIDE3ICsgMSk7CS8qIHN0cmxlbigiL21udC9ib290L3pJbWFnZS0iKSAqLwotKwkJLyogUHJlcGVuZCAgTU9VTlRQT0lOVCIvYm9vdC96SW1hZ2UtIiB0byBodyAqLwotKwkJdG1wID0gbWFsbG9jKHN0cmxlbihQUkVQRU5EX01PVU5UUEFUSCgiL2Jvb3QvekltYWdlLSIpKSArIHN0cmxlbihodykgKyAxKTsKLSAJCWlmIChOVUxMID09IHRtcCkgewotIAkJCURQUklOVEYoIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgbWFjaGluZS1zcGVjaWZpYyBrZXJuZWwgcGF0aCIpOwotIAkJCXJldHVybiBOVUxMOwotIAkJfQotIAotLQkJc3RyY3B5KHRtcCwgIi9tbnQvYm9vdC96SW1hZ2UtIik7Ci0rCQlzdHJjcHkodG1wLCBQUkVQRU5EX01PVU5UUEFUSCgiL2Jvb3QvekltYWdlLSIpKTsKLSAJCXN0cmNhdCh0bXAsIGh3KTsKLSAKLSAJCXJldHVybiB0bXA7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDQta2V4ZWNib290LmMtd29ya2Fyb3VuZC1mb3ItYWJzb2x1dGUta2VybmVsLWFuZC1pbml0ci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2ZpbGVzLzAwMDQta2V4ZWNib290LmMtd29ya2Fyb3VuZC1mb3ItYWJzb2x1dGUta2VybmVsLWFuZC1pbml0ci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQ4MWQ4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDA0LWtleGVjYm9vdC5jLXdvcmthcm91bmQtZm9yLWFic29sdXRlLWtlcm5lbC1hbmQtaW5pdHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotRnJvbSBkZTlhNjI4NGRmOGFkZDZlYzAzZTFkOTk4MWQwYjZkMDU5NWJiYzY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMCBOb3YgMjAxNCAyMzozNzoyMyArMDEwMAotU3ViamVjdDogW1BBVENIIDQvNF0ga2V4ZWNib290LmM6IHdvcmthcm91bmQgZm9yIGFic29sdXRlIGtlcm5lbCBhbmQgaW5pdHJkCi0gc3ltbGlua3MKLQotQWRkIE1PVU5UUE9JTlQgcHJlZml4IGlmIHRoZSBrZXJuZWwvaW5pdHJkIHN5bWxpbmtzIHN0YXJ0IHdpdGggJy8nLgotRG8gbm90aGluZyBpZiB0aGUgcGF0aCBpcyBhIHJlbGF0aXZlIHN5bWJvbGljIGxpbmsgb3Igbm90IGEgc3ltbGluay4KLQotRml4IGZvbGxvd2luZyBzaXR1YXRpb246Ci0KLXJvb3RAbWl6YXI6L3Zhci90bXAjIGxzIC1hbCBib290LwotdG90YWwgMjA3NgotZHJ3eHIteHIteCAyIHJvb3Qgcm9vdCAgICA0MDk2IGx1ZyAgNSAwMTozOCAuCi1kcnd4cnd4cnd0IDQgcm9vdCByb290ICAgIDQwOTYgbHVnICA1IDEyOjI2IC4uCi0tcnctci0tci0tIDEgcm9vdCByb290ICAgICA4MzEgbHVnICA1IDAxOjI0IGJvb3QuY2ZnCi0tcnctci0tci0tIDEgcm9vdCByb290ICAgIDEzMjIgbHVnICA1IDAxOjI0IGljb24ueHBtCi1scnd4cnd4cnd4IDEgcm9vdCByb290ICAgICAgMzQgbHVnICA1IDEyOjI2IHpJbWFnZSAtPgotL2Jvb3QvekltYWdlLTMuMTQuNS15b2N0by1zdGFuZGFyZAotLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCAyMTA2ODMyIGx1ZyAgNSAwMToyMCB6SW1hZ2UtMy4xNC41LXlvY3RvLXN0YW5kYXJkCi0KLUNhbm5vdCBvcGVuIGAvbW50L2Jvb3QvekltYWdlJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotTm90aGluZyBoYXMgYmVlbiBsb2FkZWQhCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIGtleGVjYm9vdC5jIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tleGVjYm9vdC5jIGIva2V4ZWNib290LmMKLWluZGV4IDcyNjhkNmIuLjhhN2E3ZDIgMTAwNjQ0Ci0tLS0gYS9rZXhlY2Jvb3QuYwotKysrIGIva2V4ZWNib290LmMKLUBAIC0yMDgsMTEgKzIwOCwxNiBAQCB2b2lkIHN0YXJ0X2tlcm5lbChzdHJ1Y3QgcGFyYW1zX3QgKnBhcmFtcywgaW50IGNob2ljZSkKLSAJY29uc3QgY2hhciAqbG9hZF9hcmd2W10gPSB7IE5VTEwsICItbCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfTsKLSAJY29uc3QgY2hhciAqZXhlY19hcmd2W10gPSB7IE5VTEwsICItZSIsIE5VTEwsIE5VTEx9OwotIAotLQljaGFyICpjbWRsaW5lX2FyZyA9IE5VTEwsICppbml0cmRfYXJnID0gTlVMTDsKLSsJY2hhciAqY21kbGluZV9hcmcgPSBOVUxMLCAqaW5pdHJkX2FyZyA9IE5VTEwsICprZXJuZWxfYXJnID0gTlVMTDsKLSAJaW50IG4sIGlkeCwgdTsKLSAJc3RydWN0IHN0YXQgc2luZm87Ci0gCXN0cnVjdCBib290X2l0ZW1fdCAqaXRlbTsKLSAKLSsJLyogYnVmZmVyIGZvciByZWFkbGluayAoY291bGQgYmUgdHJ1bmNhdGVkKSAqLwotKwljaGFyIGJ1Zls1MTJdOwotKwlpbnQgbGVuOwotKwotKwotIAlpdGVtID0gcGFyYW1zLT5ib290Y2ZnLT5saXN0W2Nob2ljZV07Ci0gCi0gCWV4ZWNfYXJndlswXSA9IGtleGVjX3BhdGg7Ci1AQCAtMzA2LDEwICszMTEsMTcgQEAgdm9pZCBzdGFydF9rZXJuZWwoc3RydWN0IHBhcmFtc190ICpwYXJhbXMsIGludCBjaG9pY2UpCi0gCQl9Ci0gCX0KLSAKLSsJLyogTW91bnQgYm9vdCBkZXZpY2UgKi8KLSsJaWYgKCAtMSA9PSBtb3VudChtb3VudF9kZXYsIG1vdW50X3BvaW50LCBtb3VudF9mc3R5cGUsCi0rCQkJTVNfUkRPTkxZLCBOVUxMKSApIHsKLSsJCXBlcnJvcigiQ2FuJ3QgbW91bnQgYm9vdCBkZXZpY2UiKTsKLSsJCWV4aXQoLTEpOwotKwl9Ci0rCi0gCS8qIGZpbGwgJy0taW5pdHJkJyBvcHRpb24gKi8KLSAJaWYgKGl0ZW0tPmluaXRyZCkgewotIAkJLyogYWxsb2NhdGUgc3BhY2UgKi8KLS0JCW4gPSBzaXplb2Yoc3RyX2luaXRyZF9zdGFydCkgKyBzdHJsZW4oaXRlbS0+aW5pdHJkKTsKLSsJCW4gPSBzaXplb2Yoc3RyX2luaXRyZF9zdGFydCkgKyBzdHJsZW4oaXRlbS0+aW5pdHJkKSArIDEgKyBzaXplb2YobW91bnRfcG9pbnQpICsgc2l6ZW9mKGJ1Zik7Ci0gCi0gCQlpbml0cmRfYXJnID0gKGNoYXIgKiltYWxsb2Mobik7Ci0gCQlpZiAoTlVMTCA9PSBpbml0cmRfYXJnKSB7Ci1AQCAtMzE3LDI0ICszMjksNDYgQEAgdm9pZCBzdGFydF9rZXJuZWwoc3RydWN0IHBhcmFtc190ICpwYXJhbXMsIGludCBjaG9pY2UpCi0gCQl9IGVsc2UgewotIAkJCXN0cmNweShpbml0cmRfYXJnLCBzdHJfaW5pdHJkX3N0YXJ0KTsJLyogLS1pbml0cmQ9ICovCi0gCQkJc3RyY2F0KGluaXRyZF9hcmcsIGl0ZW0tPmluaXRyZCk7Ci0rCi0rCQkJaWYgKChsZW4gPSByZWFkbGluayhpdGVtLT5pbml0cmQsIGJ1Ziwgc2l6ZW9mKGJ1ZiktMSkpICE9IC0xKSB7Ci0rCQkJCWJ1ZltsZW5dID0gJ1wwJzsKLSsJCQkJLyogRml4IGFic29sdXRlIHN5bWxpbmtzOiBwcmVwZW5kIE1PVU5UUE9JTlQgKi8KLSsJCQkJaWYgKGJ1ZlswXSA9PSAnLycpIHsKLSsJCQkJCXN0cmNweShpbml0cmRfYXJnLCBzdHJfaW5pdHJkX3N0YXJ0KTsJLyogLS1pbml0cmQ9ICovCi0rCQkJCQlzdHJjYXQoaW5pdHJkX2FyZywgbW91bnRfcG9pbnQpOwotKwkJCQkJc3RyY2F0KGluaXRyZF9hcmcsIGJ1Zik7Ci0rCQkJCX0KLSsJCQl9Ci0gCQkJbG9hZF9hcmd2W2lkeF0gPSBpbml0cmRfYXJnOwotIAkJCSsraWR4OwotIAkJfQotIAl9Ci0gCi0gCS8qIEFwcGVuZCBrZXJuZWxwYXRoIGFzIGxhc3QgYXJnIG9mIGtleGVjICovCi0tCWxvYWRfYXJndltpZHhdID0gaXRlbS0+a2VybmVscGF0aDsKLSsJCS8qIGFsbG9jYXRlIHNwYWNlICovCi0rCQluID0gc3RybGVuKGl0ZW0tPmtlcm5lbHBhdGgpICsgMSArIHNpemVvZihtb3VudF9wb2ludCkgKyBzaXplb2YoYnVmKTsKLSsKLSsJCWtlcm5lbF9hcmcgPSAoY2hhciAqKW1hbGxvYyhuKTsKLSsJCWlmIChOVUxMID09IGtlcm5lbF9hcmcpIHsKLSsJCQlwZXJyb3IoIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3Iga2VybmVsX2FyZyIpOwotKwkJfSBlbHNlIHsKLSsJCQlzdHJjcHkoa2VybmVsX2FyZywgaXRlbS0+a2VybmVscGF0aCk7Ci0rCi0rCQkJaWYgKChsZW4gPSByZWFkbGluayhpdGVtLT5rZXJuZWxwYXRoLCBidWYsIHNpemVvZihidWYpLTEpKSAhPSAtMSkgewotKwkJCQlidWZbbGVuXSA9ICdcMCc7Ci0rCQkJCS8qIEZpeCBhYnNvbHV0ZSBzeW1saW5rczogcHJlcGVuZCBNT1VOVFBPSU5UICovCi0rCQkJCWlmIChidWZbMF0gPT0gJy8nKSB7Ci0rCQkJCQlzdHJjcHkoa2VybmVsX2FyZywgbW91bnRfcG9pbnQpOwotKwkJCQkJc3RyY2F0KGtlcm5lbF9hcmcsIGJ1Zik7Ci0rCQkJCX0KLSsJCQl9Ci0rCQkJbG9hZF9hcmd2W2lkeF0gPSBrZXJuZWxfYXJnOwotKwkJfQotIAotIAlEUFJJTlRGKCJsb2FkX2FyZ3Y6ICVzLCAlcywgJXMsICVzLCAlcyIsIGxvYWRfYXJndlswXSwKLSAJCQlsb2FkX2FyZ3ZbMV0sIGxvYWRfYXJndlsyXSwKLSAJCQlsb2FkX2FyZ3ZbM10sIGxvYWRfYXJndls0XSk7Ci0gCi0tCS8qIE1vdW50IGJvb3QgZGV2aWNlICovCi0tCWlmICggLTEgPT0gbW91bnQobW91bnRfZGV2LCBtb3VudF9wb2ludCwgbW91bnRfZnN0eXBlLAotLQkJCU1TX1JET05MWSwgTlVMTCkgKSB7Ci0tCQlwZXJyb3IoIkNhbid0IG1vdW50IGJvb3QgZGV2aWNlIik7Ci0tCQlleGl0KC0xKTsKLS0JfQotIAotIAkvKiBMb2FkIGtlcm5lbCAqLwotIAluID0gZmV4ZWN3KGtleGVjX3BhdGgsIChjaGFyICpjb25zdCAqKWxvYWRfYXJndiwgZW52cCk7Ci1AQCAtMzQ3LDYgKzM4MSw3IEBAIHZvaWQgc3RhcnRfa2VybmVsKHN0cnVjdCBwYXJhbXNfdCAqcGFyYW1zLCBpbnQgY2hvaWNlKQotIAotIAlkaXNwb3NlKGNtZGxpbmVfYXJnKTsKLSAJZGlzcG9zZShpbml0cmRfYXJnKTsKLSsJZGlzcG9zZShrZXJuZWxfYXJnKTsKLSAKLSAJLyogQ2hlY2sgL3Byb2Mvc3lzL25ldCBwcmVzZW5jZSAqLwotIAlpZiAoIC0xID09IHN0YXQoIi9wcm9jL3N5cy9uZXQiLCAmc2luZm8pICkgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDA1LXJnYi5oLWZpeC1idWlsZC13aXRoLWdjYzUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9maWxlcy8wMDA1LXJnYi5oLWZpeC1idWlsZC13aXRoLWdjYzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NDE5OWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3QvZmlsZXMvMDAwNS1yZ2IuaC1maXgtYnVpbGQtd2l0aC1nY2M1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBiMmM0ZmM2OTg2OGE0ODMxZWM3OThhZDk4ZjVlN2ZjZTIwMGNmMGUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogVGh1LCAyNCBTZXAgMjAxNSAwMDowMjo0OCArMDIwMAotU3ViamVjdDogW1BBVENIXSByZ2IuaDogZml4IGJ1aWxkIHdpdGggZ2NjIDUgKEM5OSBpbmxpbmUgc2VtYW50aWMpCi0KLUJ1aWxkaW5nIHdpdGggZ2NjIDUuMiB3ZSB0cmlnZ2VyIHRoZSBmb2xsb3dpbmcgZXJyb3I6Ci0KLXJnYi5oOjU1OjE6IHdhcm5pbmc6IGlubGluZSBmdW5jdGlvbiAncmdiYTJjb21wJyBkZWNsYXJlZCBidXQgbmV2ZXIgZGVmaW5lZAotfCAgcmdiYTJjb21wKGt4X3JnYmEgcmdiYSwga3hfY2NvbXAgKnJlZCwga3hfY2NvbXAgKmdyZWVuLAotfCAgXgotCi1odHRwczovL2djYy5nbnUub3JnL2djYy01L3BvcnRpbmdfdG8uaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSByZ2IuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3JnYi5oIGIvcmdiLmgKLWluZGV4IDBiYTk4N2EuLjRmNjQ2MjIgMTAwNjQ0Ci0tLS0gYS9yZ2IuaAotKysrIGIvcmdiLmgKLUBAIC01MSw4ICs1MSw3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSB9IGt4X25hbWVkX2NvbG9yOwotIAotIC8qIENvbnZlcnQgUkdCQSB1aW50MzIgdG8gcmVkL2dyZWVuL2JsdWUvYWxwaGEgY29tcG9uZW50cyAqLwotLWlubGluZSB2b2lkCi0tcmdiYTJjb21wKGt4X3JnYmEgcmdiYSwga3hfY2NvbXAgKnJlZCwga3hfY2NvbXAgKmdyZWVuLAotK3ZvaWQgcmdiYTJjb21wKGt4X3JnYmEgcmdiYSwga3hfY2NvbXAgKnJlZCwga3hfY2NvbXAgKmdyZWVuLAotIAkJa3hfY2NvbXAgKmJsdWUsIGt4X2Njb21wICphbHBoYSk7Ci0gCi0gLyogQ29udmVydCBoZXggcmdiIGNvbG9yIHRvIHJnYmEgY29sb3IgKi8KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290LWNmZ18wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3QtY2ZnXzAuMi5iYgppbmRleCAwODU5NTVjLi44MDRlYzMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3QtY2ZnXzAuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3QtY2ZnXzAuMi5iYgpAQCAtMiw3ICsyLDcgQEAKIERFU0NSSVBUSU9OID0gIkRlZmF1bHQgaWNvbiBhbmQgYm9vdC5jZmcgZm9yIGtleGVjYm9vdCBsaW51eC1hcy1ib290bG9hZGVyLiIKIFNFQ1RJT04gPSAiYmFzZSIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogU1JDX1VSSSA9ICJmaWxlOi8vaWNvbi54cG0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdF8wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3RfMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTA5NWYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdF8wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29uZmlndXJlIG9wdGlvbnM6Ci0jCi0jICAtLWVuYWJsZS1zdGF0aWMtbGlua2luZyBjb21waWxlIGtleGVjYm9vdCBhcyBzdGF0aWMgZXhlY3V0YWJsZSBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLWZidWkgICAgICAgICAgIHN1cHBvcnQgZnJhbWVidWZmZXIgbWVudSBbZGVmYXVsdD15ZXNdCi0jICAtLWVuYWJsZS1mYnVpLXdpZHRoICAgICBsaW1pdCBGQiBVSSB3aWR0aCB0byBzcGVjaWZpZWQgdmFsdWUgW2RlZmF1bHQ9bm9dCi0jICAtLWVuYWJsZS1mYnVpLWhlaWdodCAgICBsaW1pdCBGQiBVSSBoZWlnaHQgdG8gc3BlY2lmaWVkIHZhbHVlIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtdGV4dHVpICAgICAgICAgc3VwcG9ydCBjb25zb2xlIHRleHQgdXNlciBpbnRlcmZhY2UgW2RlZmF1bHQ9bm9dCi0jICAtLWVuYWJsZS1jZmdmaWxlcyAgICAgICBzdXBwb3J0IGNvbmZpZyBmaWxlcyBbZGVmYXVsdD15ZXNdCi0jICAtLWVuYWJsZS1pY29ucyAgICAgICAgICBzdXBwb3J0IGN1c3RvbSBpY29ucyAoZGVwZW5kcyBvbiBmYnVpKSBbZGVmYXVsdD15ZXNdCi0jICAtLWVuYWJsZS16YXVydXMgICAgICAgICBjb21waWxlIFNoYXJwIFphdXJ1cyBzcGVjaWZpYyBjb2RlIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtemltYWdlICAgICAgICAgY29tcGlsZSB3aXRoIHpJbWFnZSBzdXBwb3J0IFtkZWZhdWx0PXllc10KLSMgIC0tZW5hYmxlLXVpbWFnZSAgICAgICAgIGNvbXBpbGUgd2l0aCB1SW1hZ2Ugc3VwcG9ydCBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLW1hY2hpbmUta2VybmVsIGxvb2sgZm9yIG1hY2hpbmUtc3BlY2lmaWMgekltYWdlIGtlcm5lbCBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLWRldmljZXMtcmVjcmVhdGluZwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIGRldmljZXMgcmUtY3JlYXRpbmcgW2RlZmF1bHQ9eWVzXQotIyAgLS1lbmFibGUtZGVidWcgICAgICAgICAgZW5hYmxlIGRlYnVnIG91dHB1dCBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLWhvc3QtZGVidWcgICAgIGFsbG93IGZvciBub24tZGVzdHJ1Y3RpdmUgZXhlY3V0aW5nIG9mIGtleGVjYm9vdCBvbgotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IHN5c3RlbSBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLW51bWtleXMgICAgICAgIGVuYWJsZSBtZW51IGl0ZW0gc2VsZWN0aW9uIGJ5IGtleXMgWzAtOV0gW2RlZmF1bHQ9eWVzXQotIyAgLS1lbmFibGUtYmctYnVmZmVyICAgICAgZW5hYmxlIGJ1ZmZlciBmb3IgcHJlLWRyYXdlZCBGQiBHVUkgYmFja2dyb3VuZAotIwotIyAgLS1lbmFibGUtdGltZW91dCAgICAgICAgYWxsb3cgdG8gYm9vdCAxc3Qga2VybmVsIGFmdGVyIHRpbWVvdXQgaW4gc2Vjb25kcwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLWRlbGF5ICAgICAgICAgIHNwZWNpZnkgZGVsYXkgYmVmb3JlIGRldmljZSBzY2FubmluZywgYWxsb3dpbmcKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gb2Ygb2xkIENGL1NEIGNhcmRzIFtkZWZhdWx0PTFdCi0jICAtLWVuYWJsZS1icHAgICAgICAgICAgICBlbmFibGUgc3VwcG9ydCBvZiBzcGVjaWZpZWQgYnBwIG1vZGVzCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGwsMzIsMjQsMTgsMTYsNCwyLDEpIFtkZWZhdWx0PWFsbF0KLSMgIC0tZW5hYmxlLWV2ZGV2LXJhdGUgICAgIGNoYW5nZSBldmRldiAoa2V5Ym9hcmQvbW91c2UpIHJlcGVhdCByYXRlCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG1pbGxpc2Vjb25kcyBlLmcuICIxMDAwLDI1MCIgW2RlZmF1bHQ9bm9dCi0jICAtLXdpdGgta2V4ZWMtYmluYXJ5ICAgICBsb29rIGZvciBrZXhlYyBiaW5hcnkgYXQgcGF0aAotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdD0iL3Vzci9zYmluL2tleGVjIl0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1TVU1NQVJZID0gImtleGVjYm9vdCBsaW51eC1hcy1ib290bG9hZGVyIgotREVTQ1JJUFRJT04gPSAia2V4ZWNib290IGlzIGEgZ3JhcGhpY2FsIGxpbnV4LWFzLWJvb3Rsb2FkZXIgaW1wbGVtZW50YXRpb24gYmFzZWQgb24ga2V4ZWMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2tleGVjYm9vdC5vcmciCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLVMgPSAiJHtXT1JLRElSfS9rZXhlY2Jvb3QtJHtQVn0iCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXhlY2Jvb3Qva2V4ZWNib290L2FyY2hpdmUvdiR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0NmI3YzFhNmYyMDUzMWJlNTY0NDVlYmI4NjY5YTJiOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YjM2MGI4YWE1OWJjNWQ2OGE5NjcwNTM0OWEwZGQ0MTZmOGVkNzA0ZTkzMWZhMGFjNzg0OTI5ODI1OGYwZjE1IgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1rZXhlY2Jvb3QtZml4LWJ1aWxkLXdoZW4tUy1CLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWtleGVjYm9vdC1maXgtY29uZmlndXJlLXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWtleGVjYm9vdC1kby1ub3QtaGFyZGNvZGUtTU9VTlRQT0lOVC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1rZXhlY2Jvb3QuYy13b3JrYXJvdW5kLWZvci1hYnNvbHV0ZS1rZXJuZWwtYW5kLWluaXRyLnBhdGNoIFwKLSAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXJnYi5oLWZpeC1idWlsZC13aXRoLWdjYzUucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGV4dHVpIC0tZW5hYmxlLWRlbGF5PTIgLS1lbmFibGUtZXZkZXYtcmF0ZT0xMDAwLDI1MCIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IGtleGVjYm9vdCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9L3Byb2MKLSAgICBpbnN0YWxsIC1kICR7RH0vbW50Ci0gICAgaW5zdGFsbCAtZCAke0R9L2RldgotICAgIGluc3RhbGwgLWQgJHtEfS9zeXMKLX0KLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotRklMRVNfJHtQTn0gKz0gIiAke2JpbmRpcn0va2V4ZWNib290IC9pbml0IC9wcm9jIC9tbnQgL2RldiAvc3lzIgotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGxuIC1zZiAke2JpbmRpcn0va2V4ZWNib290ICREL2luaXQKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJrbGliYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3RfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNWRhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3RfZ2l0LmJiCkBAIC0wLDAgKzEsNjQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb25maWd1cmUgb3B0aW9uczoKKyMKKyMgIC0tZW5hYmxlLXN0YXRpYy1saW5raW5nIGNvbXBpbGUga2V4ZWNib290IGFzIHN0YXRpYyBleGVjdXRhYmxlIFtkZWZhdWx0PW5vXQorIyAgLS1lbmFibGUtZmJ1aSAgICAgICAgICAgc3VwcG9ydCBmcmFtZWJ1ZmZlciBtZW51IFtkZWZhdWx0PXllc10KKyMgIC0tZW5hYmxlLWZidWktd2lkdGggICAgIGxpbWl0IEZCIFVJIHdpZHRoIHRvIHNwZWNpZmllZCB2YWx1ZSBbZGVmYXVsdD1ub10KKyMgIC0tZW5hYmxlLWZidWktaGVpZ2h0ICAgIGxpbWl0IEZCIFVJIGhlaWdodCB0byBzcGVjaWZpZWQgdmFsdWUgW2RlZmF1bHQ9bm9dCisjICAtLWVuYWJsZS10ZXh0dWkgICAgICAgICBzdXBwb3J0IGNvbnNvbGUgdGV4dCB1c2VyIGludGVyZmFjZSBbZGVmYXVsdD1ub10KKyMgIC0tZW5hYmxlLWNmZ2ZpbGVzICAgICAgIHN1cHBvcnQgY29uZmlnIGZpbGVzIFtkZWZhdWx0PXllc10KKyMgIC0tZW5hYmxlLWljb25zICAgICAgICAgIHN1cHBvcnQgY3VzdG9tIGljb25zIChkZXBlbmRzIG9uIGZidWkpIFtkZWZhdWx0PXllc10KKyMgIC0tZW5hYmxlLXphdXJ1cyAgICAgICAgIGNvbXBpbGUgU2hhcnAgWmF1cnVzIHNwZWNpZmljIGNvZGUgW2RlZmF1bHQ9bm9dCisjICAtLWVuYWJsZS16aW1hZ2UgICAgICAgICBjb21waWxlIHdpdGggekltYWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXQorIyAgLS1lbmFibGUtdWltYWdlICAgICAgICAgY29tcGlsZSB3aXRoIHVJbWFnZSBzdXBwb3J0IFtkZWZhdWx0PW5vXQorIyAgLS1lbmFibGUtbWFjaGluZS1rZXJuZWwgbG9vayBmb3IgbWFjaGluZS1zcGVjaWZpYyB6SW1hZ2Uga2VybmVsIFtkZWZhdWx0PW5vXQorIyAgLS1lbmFibGUtZGV2aWNlcy1yZWNyZWF0aW5nCisjICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgZGV2aWNlcyByZS1jcmVhdGluZyBbZGVmYXVsdD15ZXNdCisjICAtLWVuYWJsZS1kZWJ1ZyAgICAgICAgICBlbmFibGUgZGVidWcgb3V0cHV0IFtkZWZhdWx0PW5vXQorIyAgLS1lbmFibGUtaG9zdC1kZWJ1ZyAgICAgYWxsb3cgZm9yIG5vbi1kZXN0cnVjdGl2ZSBleGVjdXRpbmcgb2Yga2V4ZWNib290IG9uCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Qgc3lzdGVtIFtkZWZhdWx0PW5vXQorIyAgLS1lbmFibGUtbnVta2V5cyAgICAgICAgZW5hYmxlIG1lbnUgaXRlbSBzZWxlY3Rpb24gYnkga2V5cyBbMC05XSBbZGVmYXVsdD15ZXNdCisjICAtLWVuYWJsZS1iZy1idWZmZXIgICAgICBlbmFibGUgYnVmZmVyIGZvciBwcmUtZHJhd2VkIEZCIEdVSSBiYWNrZ3JvdW5kCisjCisjICAtLWVuYWJsZS10aW1lb3V0ICAgICAgICBhbGxvdyB0byBib290IDFzdCBrZXJuZWwgYWZ0ZXIgdGltZW91dCBpbiBzZWNvbmRzCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0PW5vXQorIyAgLS1lbmFibGUtZGVsYXkgICAgICAgICAgc3BlY2lmeSBkZWxheSBiZWZvcmUgZGV2aWNlIHNjYW5uaW5nLCBhbGxvd2luZworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiBvbGQgQ0YvU0QgY2FyZHMgW2RlZmF1bHQ9MV0KKyMgIC0tZW5hYmxlLWJwcCAgICAgICAgICAgIGVuYWJsZSBzdXBwb3J0IG9mIHNwZWNpZmllZCBicHAgbW9kZXMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsbCwzMiwyNCwxOCwxNiw0LDIsMSkgW2RlZmF1bHQ9YWxsXQorIyAgLS1lbmFibGUtZXZkZXYtcmF0ZSAgICAgY2hhbmdlIGV2ZGV2IChrZXlib2FyZC9tb3VzZSkgcmVwZWF0IHJhdGUKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWlsbGlzZWNvbmRzIGUuZy4gIjEwMDAsMjUwIiBbZGVmYXVsdD1ub10KKyMgIC0td2l0aC1rZXhlYy1iaW5hcnkgICAgIGxvb2sgZm9yIGtleGVjIGJpbmFyeSBhdCBwYXRoCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0PSIvdXNyL3NiaW4va2V4ZWMiXQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1NVTU1BUlkgPSAia2V4ZWNib290IGxpbnV4LWFzLWJvb3Rsb2FkZXIiCitERVNDUklQVElPTiA9ICJrZXhlY2Jvb3QgaXMgYSBncmFwaGljYWwgbGludXgtYXMtYm9vdGxvYWRlciBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBrZXhlYy4iCitIT01FUEFHRSA9ICJodHRwOi8va2V4ZWNib290Lm9yZyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKK1BWID0gIjAuNitnaXQke1NSQ1BWfSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va2V4ZWNib290L2tleGVjYm9vdC5naXQiCitTUkNSRVYgPSAiNGM0ZjEyN2U3OWFjNWI4ZDZiNmUyZmJiOTM4Y2NiZjEyYjA0YzUzMSIKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10ZXh0dWkgLS1lbmFibGUtZGVsYXk9MiAtLWVuYWJsZS1ldmRldi1yYXRlPTEwMDAsMjUwIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUga2V4ZWNib290ICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0vcHJvYworICAgIGluc3RhbGwgLWQgJHtEfS9tbnQKKyAgICBpbnN0YWxsIC1kICR7RH0vZGV2CisgICAgaW5zdGFsbCAtZCAke0R9L3N5cworfQorCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitGSUxFU18ke1BOfSArPSAiICR7YmluZGlyfS9rZXhlY2Jvb3QgL2luaXQgL3Byb2MgL21udCAvZGV2IC9zeXMiCisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgbG4gLXNmICR7YmluZGlyfS9rZXhlY2Jvb3QgJEQvaW5pdAorfQorCitCQkNMQVNTRVhURU5EID0gImtsaWJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2RyYWN1dC9kcmFjdXQvMDAwMS11dGlsLmgtaW5jbHVkZS1zeXMtcmVnLmgtd2hlbi1saWJjLWdsaWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2RyYWN1dC9kcmFjdXQvMDAwMS11dGlsLmgtaW5jbHVkZS1zeXMtcmVnLmgtd2hlbi1saWJjLWdsaWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNzE0MDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZHJhY3V0L2RyYWN1dC8wMDAxLXV0aWwuaC1pbmNsdWRlLXN5cy1yZWcuaC13aGVuLWxpYmMtZ2xpYmMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAwNjAxMWNlNTViMWU4OTJlODYzNTY4YTczZDY0ZWViYzYzODk1NDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMTc6MTQ6MDUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdXRpbC5oOiBpbmNsdWRlIDxzeXMvcmVnLmg+IHdoZW4gbGliYyAhPSBnbGliYworCitGb3IgbXVzbCBsaWJjIGl0IGlzIHJlcXVpcmVkIHRvIGluY2x1ZGUgPHN5cy9yZWcuaD4gdG8KK2hhdmUgX19XT1JEU0laRSBkZWZpbmVkIHRvIGUuZy4gMzIgZm9yIGFybSotbXVzbC4KKworVGFrZW4gZnJvbSB2b2lkLWxpbnV4CitodHRwczovL2dpdGh1Yi5jb20vdm9pZGxpbnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvc3JjcGtncy9kcmFjdXQvcGF0Y2hlcy9tdXNsLV9fd29yZHNpemUucGF0Y2gKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGluc3RhbGwvdXRpbC5oIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9pbnN0YWxsL3V0aWwuaCBiL2luc3RhbGwvdXRpbC5oCitpbmRleCAyYWQzMjU0ZC4uMDYyNjI2ZWMgMTAwNjQ0CistLS0gYS9pbnN0YWxsL3V0aWwuaAorKysrIGIvaW5zdGFsbC91dGlsLmgKK0BAIC0zNiw2ICszNiw5IEBACisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyNpbmNsdWRlIDxzeXMvcmVnLmg+CisrI2VuZGlmCisgCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZHJhY3V0L2RyYWN1dF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZHJhY3V0L2RyYWN1dF9naXQuYmIKaW5kZXggYjkxZjNmYS4uZTE4NDA5ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2RyYWN1dC9kcmFjdXRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9kcmFjdXQvZHJhY3V0X2dpdC5iYgpAQCAtMSwxNyArMSwyMyBAQAogU1VNTUFSWSA9ICJJbml0cmFtZnMgZ2VuZXJhdG9yIHVzaW5nIHVkZXYiCitIT01FUEFHRSA9ICJodHRwczovL2RyYWN1dC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL01haW5fUGFnZSIKIERFU0NSSVBUSU9OID0gIkRyYWN1dCBpcyBhbiBldmVudCBkcml2ZW4gaW5pdHJhbWZzIGluZnJhc3RydWN0dXJlLiBkcmFjdXQgKHRoZSB0b29sKSBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBpbml0cmFtZnMgaW1hZ2UgYnkgY29weWluZyB0b29scyBhbmQgZmlsZXMgZnJvbSBhbiBpbnN0YWxsZWQgc3lzdGVtIGFuZCBjb21iaW5pbmcgaXQgd2l0aCB0aGUgZHJhY3V0IGZyYW1ld29yaywgdXN1YWxseSBmb3VuZCBpbiAvdXNyL2xpYi9kcmFjdXQvbW9kdWxlcy5kLiIKIAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiBQRSA9ICIxIgotUFYgPSAiMDQ0K2dpdCR7U1JDUkVWfSIKK1BWID0gIjA0NStnaXQke1NSQ1JFVn0iCiAKLSMgdjA0NCB0YWcKLVNSQ1JFViA9ICIxYmMzZTczM2Y5NjAzM2E1MDg4NDFlOTdmZTA4ZGE3YTEyODUxNzgyIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2Jvb3QvZHJhY3V0L2RyYWN1dC5naXQ7cHJvdG9jb2w9aHR0cCIKKyMgdjA0NSB0YWcKK1NSQ1JFViA9ICIzOWM5YjY3Zjg2MTQ1OTUzYWEzMGRlZjlkNzdjNjg1OTdhNGNjZmU4IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2Jvb3QvZHJhY3V0L2RyYWN1dC5naXQ7cHJvdG9jb2w9aHR0cCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXV0aWwuaC1pbmNsdWRlLXN5cy1yZWcuaC13aGVuLWxpYmMtZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICAiCiAKLWluaGVyaXQgYmFzaC1jb21wbGV0aW9uCitERVBFTkRTICs9ICJrbW9kIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMiCisKK2luaGVyaXQgYmFzaC1jb21wbGV0aW9uIHBrZ2NvbmZpZwogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0zMCw3ICszNiw5IEBACiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKIFBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLCwsc3lzdGVtZCIKIAotRVhUUkFfT0VNQUtFICs9ICdsaWJkaXI9JHtwcmVmaXh9L2xpYicKK0VYVFJBX09FTUFLRSArPSAnbGliZGlyPSR7cHJlZml4fS9saWIgTERMSUJTPSIke0xETElCU30iJworCitMRExJQlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxmdHMiCiAKIGRvX2NvbmZpZ3VyZSgpIHsKICAgICAuL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5LzAwMDEtQWRkLWFub3RoZXItdmFyaWFibGUtTElCUy10by1wcm92aWRlcy1saWJyYXJpZXMtZnJvbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5LzAwMDEtQWRkLWFub3RoZXItdmFyaWFibGUtTElCUy10by1wcm92aWRlcy1saWJyYXJpZXMtZnJvbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjFhOTkzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnkvMDAwMS1BZGQtYW5vdGhlci12YXJpYWJsZS1MSUJTLXRvLXByb3ZpZGVzLWxpYnJhcmllcy1mcm9tLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMjJhZmFhMjFiNGIyNTgwODJiZTU5MWU1NGM5OWUxYmE2ZmJkNzc0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE1IEp1bCAyMDE3IDEwOjE5OjIyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBBZGQgYW5vdGhlciB2YXJpYWJsZSBMSUJTIHRvIHByb3ZpZGVzIGxpYnJhcmllcyBmcm9tIGVudgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBhYzE0NDA0Li45MmE4ZTczIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMjcsNyArMjcsNyBAQCBSUE1fT1BUX0ZMQUdTID89IC1PMiAtZyAtcGlwZSAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZnN0YWNrLXByb3RlY3RvcgorIENGTEFHUyArPSAkKFJQTV9PUFRfRkxBR1MpIC1zdGQ9Z251OTkgLVdhbGwgLVdlcnJvciAtV25vLWVycm9yPXVudXNlZC1mdW5jdGlvbiAtV25vLXVudXNlZC1mdW5jdGlvbiAtZ2dkYgorIExERkxBR1MgOj0gCisgCistZ3J1YmJ5X0xJQlMgPSAtbGJsa2lkIC1scG9wdAorK2dydWJieV9MSUJTID0gLWxibGtpZCAtbHBvcHQgJHtMSUJTfQorIAorIGFsbDogZ3J1YmJ5CisgCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieS8wMDAyLWluY2x1ZGUtcGF0aHMuaC1mb3ItX1BBVEhfTU9VTlRFRC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5LzAwMDItaW5jbHVkZS1wYXRocy5oLWZvci1fUEFUSF9NT1VOVEVELnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlODEzM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieS8wMDAyLWluY2x1ZGUtcGF0aHMuaC1mb3ItX1BBVEhfTU9VTlRFRC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDhmODQ0YWM3ZjQ0YjhkYzQyOGQwNmNkNjk1OGM1ZjMyZDM4M2QwMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAxMDoxOTo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gaW5jbHVkZSBwYXRocy5oIGZvciBfUEFUSF9NT1VOVEVECisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBncnViYnkuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ3J1YmJ5LmMgYi9ncnViYnkuYworaW5kZXggNDdhMWExNS4uNTlmNzRhOSAxMDA2NDQKKy0tLSBhL2dydWJieS5jCisrKysgYi9ncnViYnkuYworQEAgLTM0LDYgKzM0LDcgQEAKKyAjaW5jbHVkZSA8bGliZ2VuLmg+CisgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNsdWRlIDxwYXRocy5oPgorICNpbmNsdWRlIDxibGtpZC9ibGtpZC5oPgorIAorICNpbmNsdWRlICJsb2cuaCIKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5XzguNDAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieV84LjQwLmJiCmluZGV4IDBlOTM3OTAuLjVhOTk4MjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5XzguNDAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnlfOC40MC5iYgpAQCAtOSwxMSArOSwxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODkyZjU2OWE1NTViYTljMDdhNTY4YTdjMGM0ZmE2M2EiCiAKIERFUEVORFMgPSAicG9wdCB1dGlsLWxpbnV4IgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyIKIAogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvJHtCUE59L2FyY2hpdmUvJHtQVn0tMS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQTn0tJHtQVn0tMS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vZ3J1YmJ5LXJlbmFtZS1ncnViMi1lZGl0ZW52LXRvLWdydWItZWRpdGVudi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYW5vdGhlci12YXJpYWJsZS1MSUJTLXRvLXByb3ZpZGVzLWxpYnJhcmllcy1mcm9tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaW5jbHVkZS1wYXRocy5oLWZvci1fUEFUSF9NT1VOVEVELnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMTAwNTkwN2IyNzVkNmQ5MzM2OGQwNDUyNzQ1MzdkODYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODVmMWM2Nzg0ODRmNzRjODk3OGU4NjQzNDUxNTk0OTY3ZGVmY2U0NjNhODZjMzVjYjFlZTU2ZDEyNzY3YTlkZiIKQEAgLTI0LDggKzI3LDEwIEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAogCi1FWFRSQV9PRU1BS0UgPSAiLWUgJ0NDPSR7Q0N9JyAnTERGTEFHUz0ke0xERkxBR1N9JyIKK0VYVFJBX09FTUFLRSA9ICItZSAnQ0M9JHtDQ30nICdMREZMQUdTPSR7TERGTEFHU30nIExJQlM9JyR7TElCU30nIgogCitMSUJTX2xpYmMtbXVzbCA9ICItbGV4ZWNpbmZvIgorTElCUyA/PSAiIgogZG9faW5zdGFsbF9wdGVzdCgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9CiAgICAgY3AgLXIgJHtTfS90ZXN0ICR7U30vdGVzdC5zaCAke0R9JHtQVEVTVF9QQVRIfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtS2J1aWxkLmtsaWJjLUFkZC1wYXRoLXRvLWNvbXBpbGVyLWhlYWRlcnMtdmlhLWlzeXN0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLUtidWlsZC5rbGliYy1BZGQtcGF0aC10by1jb21waWxlci1oZWFkZXJzLXZpYS1pc3lzdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NkNGMwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLUtidWlsZC5rbGliYy1BZGQtcGF0aC10by1jb21waWxlci1oZWFkZXJzLXZpYS1pc3lzdGUucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAxMGZiNDQwNzk1YTc3OTYxNDBiZDY1N2VlMDI4ODQ3ZWM3YzM0NDQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgOCBTZXAgMjAxNyAyMzoxMDo1NCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBLYnVpbGQua2xpYmM6IEFkZCBwYXRoIHRvIGNvbXBpbGVyIGhlYWRlcnMgdmlhIC1pc3lzdGVtCisKK1dlIG5lZWQgdG8gaW5jbHVkZSB0aGlzIHBhdGggc28gaXQgY2FuIGZpbmQgY29tcGlsZXIgaGVhZGVycyBlLmcuCitzdGRhcmcuaCB3aGljaCBpcyBjYWxsZWQgZnJvbSB3cmFwcGVyIHN0ZGFyZy5oIHVzaW5nIGluY2x1ZGVfbmV4dAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc2NyaXB0cy9LYnVpbGQua2xpYmMgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvS2J1aWxkLmtsaWJjIGIvc2NyaXB0cy9LYnVpbGQua2xpYmMKK2luZGV4IGY1MDBkNTM1Li4xZDVjZGM0MyAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvS2J1aWxkLmtsaWJjCisrKysgYi9zY3JpcHRzL0tidWlsZC5rbGliYworQEAgLTEwNSw3ICsxMDUsOCBAQCBLTElCQ09CSkNPUFkgICAgIDo9ICQoT0JKQ09QWSkKKyBLTElCQ09CSkRVTVAgICAgIDo9ICQoT0JKRFVNUCkKKyAKKyAjIGtsaWJjIGluY2x1ZGUgcGF0aHMKKy1LTElCQ0NQUEZMQUdTICAgIDo9IC1ub3N0ZGluYyAtaXdpdGhwcmVmaXggaW5jbHVkZSBcCisrS0xJQkNDUFBGTEFHUyAgICA6PSAtbm9zdGRpbmMgLWl3aXRocHJlZml4IGluY2x1ZGUgICAgICBcCisrCQkgICAgLWlzeXN0ZW0gJChzaGVsbCAkKENDKSAtcHJpbnQtZmlsZS1uYW1lPWluY2x1ZGUpIFwKKyAJCSAgICAtSSQoS0xJQkNJTkMpL2FyY2gvJChLTElCQ0FSQ0hESVIpCVwKKyAgICAgICAgICAgICAgICAgICAgIC1JJChLTElCQ0lOQykvYml0cyQoS0xJQkNCSVRTSVpFKQlcCisgCQkgICAgLUkkKEtMSUJDT0JKKS8uLi9pbmNsdWRlCQlcCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1LYnVpbGQua2xpYmMtVXNlLXByaW50LWxpYmdjYy1maWxlLW5hbWUtaW5zdGVhZC1vZi1wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtS2J1aWxkLmtsaWJjLVVzZS1wcmludC1saWJnY2MtZmlsZS1uYW1lLWluc3RlYWQtb2YtcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWNjMTQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEtS2J1aWxkLmtsaWJjLVVzZS1wcmludC1saWJnY2MtZmlsZS1uYW1lLWluc3RlYWQtb2YtcC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGY2NmVkZGU4YTcwNDEzMWQ5OGU4NzgzZWE4ZDRjODQ4ZTgxMTliMjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyNiBKdWwgMjAxNyAxNjoxMzoxNiAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gS2J1aWxkLmtsaWJjOiBVc2UgLXByaW50LWxpYmdjYy1maWxlLW5hbWUgaW5zdGVhZCBvZgorIC0tcHJpbnQtbGliZ2NjCisKKy1wcmludC1saWJnY2MtZmlsZS1uYW1lIHdvcmtzIHdpdGggY2xhbmcgYW5kIGdjYyB1bmxpa2UgLS1wcmludC1saWJnY2MKK3doaWNoIGlzIGdjYyBzcGVjaWZpYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc2NyaXB0cy9LYnVpbGQua2xpYmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL0tidWlsZC5rbGliYyBiL3NjcmlwdHMvS2J1aWxkLmtsaWJjCitpbmRleCBmNTAwZDUzNS4uMTAxZjg2ZjUgMTAwNjQ0CistLS0gYS9zY3JpcHRzL0tidWlsZC5rbGliYworKysrIGIvc2NyaXB0cy9LYnVpbGQua2xpYmMKK0BAIC0xMjgsNyArMTI4LDcgQEAgS0xJQkNDRkxBR1MgICAgICArPSAkKEtMSUJDQ1BQRkxBR1MpICQoS0xJQkNSRVFGTEFHUykgJChLTElCQ0FSQ0hSRVFGTEFHUykgIFwKKyBLTElCQ0FGTEFHUyAgICAgICs9IC1EX19BU1NFTUJMWV9fICQoS0xJQkNDRkxBR1MpCisgS0xJQkNTVFJJUEZMQUdTICArPSAtLXN0cmlwLWFsbCAtUiAuY29tbWVudCAtUiAubm90ZQorIAorLUtMSUJDTElCR0NDX0RFRiAgOj0gJChzaGVsbCAkKEtMSUJDQ0MpICQoS0xJQkNDRkxBR1MpIC0tcHJpbnQtbGliZ2NjKQorK0tMSUJDTElCR0NDX0RFRiAgOj0gJChzaGVsbCAkKEtMSUJDQ0MpICQoS0xJQkNDRkxBR1MpIC1wcmludC1saWJnY2MtZmlsZS1uYW1lKQorIEtMSUJDTElCR0NDCSA/PSAkKEtMSUJDTElCR0NDX0RFRikKKyBLTElCQ0NSVDAgICAgICAgIDo9ICQoS0xJQkNPQkopL2FyY2gvJChLTElCQ0FSQ0hESVIpL2NydDAubworIEtMSUJDTElCQyAgICAgICAgOj0gJChLTElCQ09CSikvbGliYy5hCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1hcm0tRG8tbm90LXNldC1hLWZhbGxiYWNrLW1hcmNoLWFuZC1tdHVuZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWFybS1Eby1ub3Qtc2V0LWEtZmFsbGJhY2stbWFyY2gtYW5kLW10dW5lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMGVhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1hcm0tRG8tbm90LXNldC1hLWZhbGxiYWNrLW1hcmNoLWFuZC1tdHVuZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGE0NmExNDRhYzg4Mzg5OGQ5Y2VkZjdhMGIxM2FlYzZkMTAxMTYxMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBTZXAgMjAxNyAyMzoxMTo1MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhcm06IERvIG5vdCBzZXQgYSBmYWxsYmFjayBtYXJjaCBhbmQgbXR1bmUKKworSW4gT0Ugd2UgcGFzcyB0aGUgb3B0aW9ucyBleHBsaWNpdGx5LCB0aGVyZSBpcworbm8gbmVlZCB0byBzZXQgaXQgaW5zaWRlIHRoZSBtYWtlZmlsZXMsIHdlIHdpbGwKK25lZWQgdG8gY29tcHV0ZSB2YWx1ZXMgZm9yIENQVV9BUkNIIGFuZCBDUFVfVFVORQord2hpY2ggaXMgYSBiaXQgaGFyZGVyIGluIE9FCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgdXNyL2tsaWJjL2FyY2gvYXJtL01DT05GSUcgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRyBiL3Vzci9rbGliYy9hcmNoL2FybS9NQ09ORklHCitpbmRleCA1M2JjMWRjMy4uODU3ZTJmMmQgMTAwNjQ0CistLS0gYS91c3Iva2xpYmMvYXJjaC9hcm0vTUNPTkZJRworKysrIGIvdXNyL2tsaWJjL2FyY2gvYXJtL01DT05GSUcKK0BAIC0xMCw3ICsxMCw3IEBACisgQ1BVX0FSQ0ggPz0gYXJtdjQKKyBDUFVfVFVORSA/PSBzdHJvbmdhcm0KKyAKKy1LTElCQ09QVEZMQUdTICs9IC1PcyAtbWFyY2g9JChDUFVfQVJDSCkgLW10dW5lPSQoQ1BVX1RVTkUpCisrS0xJQkNPUFRGTEFHUyArPSAtT3MKKyBLTElCQ0JJVFNJWkUgID0gMzIKKyBLTElCQ1JFUUZMQUdTICs9IC1mbm8tZXhjZXB0aW9ucworIEtMSUJDU1RSSVBGTEFHUyArPSAtUiAuQVJNLmV4aWR4CistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLmluYwppbmRleCBjZDNmMzk4Li4zMDI5NGIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy5pbmMKQEAgLTE3LDYgKzE3LDkgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1saW51eC1zeXNpbmZvLmgtZGlyZWN0bHkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ta2ZpZm8tSW1wbGVtZW50LW1rZmlmby5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsd2F5cy11c2UtYmZkLWxpbmtlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUtidWlsZC5rbGliYy1Vc2UtcHJpbnQtbGliZ2NjLWZpbGUtbmFtZS1pbnN0ZWFkLW9mLXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1LYnVpbGQua2xpYmMtQWRkLXBhdGgtdG8tY29tcGlsZXItaGVhZGVycy12aWEtaXN5c3RlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXJtLURvLW5vdC1zZXQtYS1mYWxsYmFjay1tYXJjaC1hbmQtbXR1bmUucGF0Y2ggXAogIgogCiBBUk1QQVRDSEVTID89ICIiCkBAIC0zOCw3ICs0MSw4IEBACiAgICAgICAgICAgICAgICAgJ0lOU1RBTExESVI9JHtsaWJkaXJ9L2tsaWJjJyBcCiAgICAgICAgICAgICAgICAgJ1NITElCRElSPSR7bGliZGlyfScgXAogICAgICAgICAgICAgICAgICcke0tMSUJDVEhVTUJ9JyBcCi0gICAgICAgICAgICAgICAgJ0tMSUJDT1BURkxBR1M9JHtUVU5FX0NDQVJHU30nIFwKKyAgICAgICAgICAgICAgICAnS0xJQkNPUFRGTEFHUz0ke1RVTkVfQ0NBUkdTfSAtT3MnIFwKKyAgICAgICAgICAgICAgICAgVj0xIFwKICAgICAgICAgICAgICAgICAiCiAKIGV4cG9ydCBGSVhfQVJNVjRfRUFCSV9CWCA9ICIke0ZJWF9WNEJYfSIKQEAgLTQ4LDYgKzUyLDEwIEBACiAgICAgbG4gLXNmICIke1NUQUdJTkdfRElSX1RBUkdFVH0ke2V4ZWNfcHJlZml4fSIgbGludXgKIH0KIAorZG9fY29tcGlsZV9wcmVwZW5kX3Rvb2xjaGFpbi1jbGFuZygpIHsKKyAgICBzZWQgLWkgLWUgJ3MjJChLTElCQ1JPU1MpZ2NjIyQoS0xJQkNST1NTKWNsYW5nI2cnICR7U30vTWFrZWZpbGUKK30KKwogSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCiBJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKIElOU0FORV9TS0lQXyR7UE59ID0gImFscmVhZHktc3RyaXBwZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDAxLU1ha2VmaWxlLW9ubHktYnVpbGQtdWJpLXV0aWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwMS1NYWtlZmlsZS1vbmx5LWJ1aWxkLXViaS11dGlscy5wYXRjaAppbmRleCA5ZDVlNGViLi42ZTFiOWZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDAxLU1ha2VmaWxlLW9ubHktYnVpbGQtdWJpLXV0aWxzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDEtTWFrZWZpbGUtb25seS1idWlsZC11YmktdXRpbHMucGF0Y2gKQEAgLTI1LDExICsyNSwxMSBAQAogIE1ha2VmaWxlIHwgMjQgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBlYWRlMjM0Li4yMjc1ODY1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMTYsMjggKzE2LDEzIEBAIGVuZGlmCitJbmRleDogZ2l0L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKKysrKyBnaXQvTWFrZWZpbGUKK0BAIC0xNiwyOCArMTYsMTEgQEAgZW5kaWYKICAKICBURVNUUyA9IHRlc3RzCiAgCkBAIC0zNyw3ICszNyw3IEBACiAtCWZ0bF9mb3JtYXQgZmxhc2hfZXJhc2UgbmFuZGR1bXAgZG9jX2xvYWRiaW9zIFwKIC0JZnRsX2NoZWNrIG1rZnMuamZmczIgZmxhc2hfbG9jayBmbGFzaF91bmxvY2sgXAogLQlmbGFzaF9vdHBfaW5mbyBmbGFzaF9vdHBfZHVtcCBmbGFzaF9vdHBfbG9jayBmbGFzaF9vdHBfd3JpdGUgXAotLQltdGRfZGVidWcgZmxhc2hjcCBuYW5kd3JpdGUgbmFuZHRlc3QgXAorLQltdGRfZGVidWcgZmxhc2hjcCBuYW5kd3JpdGUgbmFuZHRlc3QgbXRkcGFydCBcCiAtCWpmZnMyZHVtcCBcCiAtCW5mdGxkdW1wIG5mdGxfZm9ybWF0IGRvY2ZkaXNrIFwKIC0JcmZkZHVtcCByZmRmb3JtYXQgXApAQCAtNTEsMTUgKzUxLDE1IEBACiAtQklOUyArPSBta2ZzLnViaWZzL21rZnMudWJpZnMKIC1CSU5TICs9ICQoYWRkcHJlZml4IHViaS11dGlscy8sJChVQklfQklOUykpCiAtU0NSSVBUUyA9IGZsYXNoX2VyYXNlYWxsCi0rQklOUyA9ICQoYWRkcHJlZml4IHViaS11dGlscy8sJChVQklfQklOUykpCi0gCi0gVEFSR0VUUyA9ICQoQklOUykKKy0KKy1UQVJHRVRTID0gJChCSU5TKQogLVRBUkdFVFMgKz0gbGliL2xpYm10ZC5hCiAtVEFSR0VUUyArPSB1YmktdXRpbHMvbGlidWJpLmEKKytCSU5TID0gJChhZGRwcmVmaXggdWJpLXV0aWxzLywkKFVCSV9CSU5TKSkKICAKICBPQkpERVBTID0gJChCVUlMRERJUikvaW5jbHVkZS92ZXJzaW9uLmgKICAKLUBAIC02MSwxMiArNDYsOSBAQCBlbmRpZgorQEAgLTYxLDEyICs0NCw5IEBAIGVuZGlmCiAgCXJtIC1mICQoQlVJTERESVIpL2luY2x1ZGUvdmVyc2lvbi5oCiAgCSQoTUFLRSkgLUMgJChURVNUUykgY2xlYW4KICAKQEAgLTczLDcgKzczLDcgQEAKICAKICB0ZXN0czo6CiAgCSQoTUFLRSkgLUMgJChURVNUUykKLUBAIC05MSw4ICs3Myw2IEBAIExETElCU19ta2ZzLmpmZnMyICA9IC1seiAkKExaT0xETElCUykKK0BAIC05MSw4ICs3MSw2IEBAIExETElCU19ta2ZzLmpmZnMyICA9IC1seiAkKExaT0xETElCUykKICBMREZMQUdTX2pmZnMycmVhZGVyID0gJChaTElCTERGTEFHUykgJChMWk9MREZMQUdTKQogIExETElCU19qZmZzMnJlYWRlciAgPSAtbHogJChMWk9MRExJQlMpCiAgCkBAIC04Miw2ICs4MiwzIEBACiAgIwogICMgQ29tbW9uIGxpYm10ZAogICMKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwNS1jb21tb24uaC1rbGliYy1maXhlcy0yLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMvMDAwNS1jb21tb24uaC1rbGliYy1maXhlcy0yLnBhdGNoCmluZGV4IDJlNDNkNWQuLjZiMDljMTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLzAwMDUtY29tbW9uLmgta2xpYmMtZml4ZXMtMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy8wMDA1LWNvbW1vbi5oLWtsaWJjLWZpeGVzLTIucGF0Y2gKQEAgLTIyLDIwICsyMiwxMSBAQAogIGluY2x1ZGUvY29tbW9uLmggfCAxMCArKysrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29tbW9uLmggYi9pbmNsdWRlL2NvbW1vbi5oCi1pbmRleCA3N2YzZjdkLi4yY2JlZTBmIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9jb21tb24uaAotKysrIGIvaW5jbHVkZS9jb21tb24uaAotQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgY2hhciBfX1BSSXhvZmZfdF9zdGF0aWNfYXNzZXJ0W3NpemVvZihvZmZfdCkgPT0gOCA/IDEgOiAtMV07Ci0gCWZwcmludGYoc3RkZXJyLCAiJXM6IHdhcm5pbmchOiAiIGZtdCAiXG4iLCBQUk9HUkFNX05BTUUsICMjX19WQV9BUkdTX18pOyBcCi0gfSB3aGlsZSgwKQotIAotLSNpZiBkZWZpbmVkKF9fVUNMSUJDX18pCi0rI2lmIGRlZmluZWQoX19VQ0xJQkNfXykgfHwgZGVmaW5lZChfX0tMSUJDX18pCi0gLyogdUNsaWJjIHZlcnNpb25zIGJlZm9yZSAwLjkuMzQgZG9uJ3QgaGF2ZSBycG1hdGNoKCkgKi8KLSAjaWYgX19VQ0xJQkNfTUFKT1JfXyA9PSAwICYmIFwKLSAJCShfX1VDTElCQ19NSU5PUl9fIDwgOSB8fCBcCi1AQCAtMTQ2LDE1ICsxNDYsMTcgQEAgc3RhdGljIGlubGluZSBpbnQgX19ycG1hdGNoKGNvbnN0IGNoYXIgKnJlc3ApCitJbmRleDogZ2l0L2luY2x1ZGUvY29tbW9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9pbmNsdWRlL2NvbW1vbi5oCisrKysgZ2l0L2luY2x1ZGUvY29tbW9uLmgKK0BAIC0xNjEsMTUgKzE2MSwxNyBAQCBzdGF0aWMgaW5saW5lIGludCBfX3JwbWF0Y2goY29uc3QgY2hhciAqCiAgICovCiAgc3RhdGljIGlubGluZSBib29sIHByb21wdChjb25zdCBjaGFyICptc2csIGJvb2wgZGVmKQogIHsKQEAgLTU2LDYgKzQ3LDMgQEAKICAJCQlwcmludGYoImZhaWxlZCB0byByZWFkIHByb21wdDsgYXNzdW1pbmcgJyVzJ1xuIiwKICAJCQkJZGVmID8gInllcyIgOiAibm8iKTsKICAJCQlicmVhazsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmNfMS41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliY18xLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY3NDA3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliY18xLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiVUJJIHV0aWxzIHN0YXRpY2FsbHkgY29tcGlsZWQgYWdhaW5zdCBrbGliYyIKLURFU0NSSVBUSU9OID0gIlNtYWxsIHNpemVkIHRvb2xzIGZyb20gbXRkLXV0aWxzIGZvciB1c2Ugd2l0aCBpbml0cmFtZnMuIgotU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJ6bGliIGx6byBlMmZzcHJvZ3MgdXRpbC1saW51eCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtbXRkLmluZnJhZGVhZC5vcmcvIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2NvbW1vbi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PWJhMDViMDc5MTJhNDRlYTJiZjgxY2U0MDkzODAwNDljIgotCi1pbmhlcml0IGtsaWJjCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbXRkLXV0aWxzLmdpdDt0YWc9Yjc0NTVkODQ3YWI0ZjllZWViNmE3MjllZmMzMDZiZmRhN2JkZGM5OSBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtb25seS1idWlsZC11YmktdXRpbHMucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW1vbi5tay1mb3Ita2xpYmMtQ0MtaXMta2xjYy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDMtbGlidWJpLmMtYWRkLWtsaWJjLXNwZWNpZmljLWZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwNC1jb21tb24uaC1rbGliYy1maXhlcy0xLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwNS1jb21tb24uaC1rbGliYy1maXhlcy0yLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwNi1saWJpbmlwYXJzZXItcmVtb3ZlLXVudXNlZC1mdW5jdGlvbi1uZWVkaW5nLWZsb2F0LnBhdGNoIFwKLSAgICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQvIgotCi1FWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnUkFOTElCPSR7UkFOTElCfScgJ0FSPSR7QVJ9JyAnQ0ZMQUdTPSR7Q0ZMQUdTfSAtSSR7U31pbmNsdWRlIC1EV0lUSE9VVF9YQVRUUicgJ0JVSUxERElSPSR7U30nIgotQ0ZMQUdTICs9ICIke1RVTkVfQ0NBUkdTfSIKLQotZG9faW5zdGFsbCAoKSB7Ci0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsCi0KLX0KLQotUEFDS0FHRVMgPSAidWJpLXV0aWxzLWtsaWJjLWRiZyIKLQotUEFDS0FHRVMgPSsgIm10ZGluZm8ta2xpYmMgdWJpYXR0YWNoLWtsaWJjIHViaWJsb2NrLWtsaWJjIHViaWNyYzMyLWtsaWJjIHViaWRldGFjaC1rbGliYyBcCi0gICAgICAgICAgICAgdWJpZm9ybWF0LWtsaWJjIHViaW1rdm9sLWtsaWJjIHViaW5mby1rbGliYyB1YmluaXplLWtsaWJjIHViaXJlbmFtZS1rbGliYyBcCi0gICAgICAgICAgICAgdWJpcm12b2wta2xpYmMgdWJpcnN2b2wta2xpYmMgdWJpdXBkYXRldm9sLWtsaWJjIgotCi1GSUxFU19tdGRpbmZvLWtsaWJjID0gIiR7c2JpbmRpcn0vbXRkaW5mbyIKLUZJTEVTX3ViaWF0dGFjaC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWF0dGFjaCIKLUZJTEVTX3ViaWJsb2NrLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpYmxvY2siCi1GSUxFU191YmljcmMzMi1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWNyYzMyIgotRklMRVNfdWJpZGV0YWNoLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpZGV0YWNoIgotRklMRVNfdWJpZm9ybWF0LWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpZm9ybWF0IgotRklMRVNfdWJpbWt2b2wta2xpYmMgPSAiJHtzYmluZGlyfS91Ymlta3ZvbCIKLUZJTEVTX3ViaW5mby1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaW5mbyIKLUZJTEVTX3ViaW5pemUta2xpYmMgPSAiJHtzYmluZGlyfS91YmluaXplIgotRklMRVNfdWJpcmVuYW1lLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpcmVuYW1lIgotRklMRVNfdWJpcm12b2wta2xpYmMgPSAiJHtzYmluZGlyfS91YmlybXZvbCIKLUZJTEVTX3ViaXJzdm9sLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpcnN2b2wiCi1GSUxFU191Yml1cGRhdGV2b2wta2xpYmMgPSAiJHtzYmluZGlyfS91Yml1cGRhdGV2b2wiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliY18xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjXzEuNS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOGMwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliY18xLjUuMi5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gIlVCSSB1dGlscyBzdGF0aWNhbGx5IGNvbXBpbGVkIGFnYWluc3Qga2xpYmMiCitERVNDUklQVElPTiA9ICJTbWFsbCBzaXplZCB0b29scyBmcm9tIG10ZC11dGlscyBmb3IgdXNlIHdpdGggaW5pdHJhbWZzLiIKK1NFQ1RJT04gPSAiYmFzZSIKK0RFUEVORFMgPSAiemxpYiBsem8gZTJmc3Byb2dzIHV0aWwtbGludXgiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9jb21tb24uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT1iYTA1YjA3OTEyYTQ0ZWEyYmY4MWNlNDA5MzgwMDQ5YyIKKworaW5oZXJpdCBrbGliYworCitTUkNSRVYgPSAiYWVhMzY0MTcwNjdkYWRlNzUxOTJiYWZhMDNhZjcwYjZlYjI2NzdiMSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbXRkLXV0aWxzLmdpdCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtb25seS1idWlsZC11YmktdXRpbHMucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW1vbi5tay1mb3Ita2xpYmMtQ0MtaXMta2xjYy5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDMtbGlidWJpLmMtYWRkLWtsaWJjLXNwZWNpZmljLWZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwNC1jb21tb24uaC1rbGliYy1maXhlcy0xLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwNS1jb21tb24uaC1rbGliYy1maXhlcy0yLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwNi1saWJpbmlwYXJzZXItcmVtb3ZlLXVudXNlZC1mdW5jdGlvbi1uZWVkaW5nLWZsb2F0LnBhdGNoIFwKKyAgICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvIgorCitFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnUkFOTElCPSR7UkFOTElCfScgJ0FSPSR7QVJ9JyAnQ0ZMQUdTPSR7Q0ZMQUdTfSAtSSR7U31pbmNsdWRlIC1EV0lUSE9VVF9YQVRUUicgJ0JVSUxERElSPSR7U30nIgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFNCSU5ESVI9JHtzYmluZGlyfSBNQU5ESVI9JHttYW5kaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfQorfQorCitQQUNLQUdFUyA9ICJ1YmktdXRpbHMta2xpYmMtZGJnIgorCitQQUNLQUdFUyA9KyAibXRkaW5mby1rbGliYyB1YmlhdHRhY2gta2xpYmMgdWJpYmxvY2sta2xpYmMgdWJpY3JjMzIta2xpYmMgdWJpZGV0YWNoLWtsaWJjIFwKKyAgICAgICAgICAgICB1Ymlmb3JtYXQta2xpYmMgdWJpbWt2b2wta2xpYmMgdWJpbmZvLWtsaWJjIHViaW5pemUta2xpYmMgdWJpcmVuYW1lLWtsaWJjIFwKKyAgICAgICAgICAgICB1YmlybXZvbC1rbGliYyB1Ymlyc3ZvbC1rbGliYyB1Yml1cGRhdGV2b2wta2xpYmMiCisKK0ZJTEVTX210ZGluZm8ta2xpYmMgPSAiJHtzYmluZGlyfS9tdGRpbmZvIgorRklMRVNfdWJpYXR0YWNoLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpYXR0YWNoIgorRklMRVNfdWJpYmxvY2sta2xpYmMgPSAiJHtzYmluZGlyfS91YmlibG9jayIKK0ZJTEVTX3ViaWNyYzMyLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpY3JjMzIiCitGSUxFU191YmlkZXRhY2gta2xpYmMgPSAiJHtzYmluZGlyfS91YmlkZXRhY2giCitGSUxFU191Ymlmb3JtYXQta2xpYmMgPSAiJHtzYmluZGlyfS91Ymlmb3JtYXQiCitGSUxFU191Ymlta3ZvbC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaW1rdm9sIgorRklMRVNfdWJpbmZvLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpbmZvIgorRklMRVNfdWJpbml6ZS1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaW5pemUiCitGSUxFU191YmlyZW5hbWUta2xpYmMgPSAiJHtzYmluZGlyfS91YmlyZW5hbWUiCitGSUxFU191YmlybXZvbC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaXJtdm9sIgorRklMRVNfdWJpcnN2b2wta2xpYmMgPSAiJHtzYmluZGlyfS91Ymlyc3ZvbCIKK0ZJTEVTX3ViaXVwZGF0ZXZvbC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaXVwZGF0ZXZvbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL1JFQURNRQppbmRleCBhYmRjMWEyLi5iNTlkZmUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FCkBAIC0xLDIwICsxLDIwIEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcHlybworYnJhbmNoOiByb2NrbwogcmV2aXNpb246IEhFQUQKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLmdpdAotbGF5ZXJzOiBtZXRhLW9lLCBtZXRhLXJ1YnkKLWJyYW5jaDogcHlybworbGF5ZXJzOiBtZXRhLW9lCiticmFuY2g6IHJvY2tvCiByZXZpc2lvbjogSEVBRAogCi1TZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtbXVsdGltZWRpYV1bcHlyb10nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLW11bHRpbWVkaWFdW3JvY2tvXScgaW4gdGhlIHN1YmplY3QnCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1tdWx0aW1lZGlhXVtweXJvXVtQQVRDSAorJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW11bHRpbWVkaWFdW3JvY2tvXVtQQVRDSAogCiBZb3UgYXJlIGVuY291cmFnZWQgdG8gZm9yayB0aGUgbWlycm9yIG9uIGdpdGh1YiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UvIHRvIHNoYXJlIHlvdXIgcGF0Y2hlcywgdGhpcyBpcyBwcmVmZXJyZWQgZm9yIHBhdGNoIHNldHMgY29uc2lzdGluZyBvZiBtb3JlIHRoYW4gb25lIHBhdGNoLiBPdGhlciBzZXJ2aWNlcyBsaWtlIGdpdG9yaW91cywgcmVwby5vci5jeiBvciBzZWxmIGhvc3RlZCBzZXR1cHMgYXJlIG9mIGNvdXJzZSBhY2NlcHRlZCBhcyB3ZWxsLCAnZ2l0IGZldGNoIDxyZW1vdGU+JyB3b3JrcyB0aGUgc2FtZSBvbiBhbGwgb2YgdGhlbS4gV2UgcmVjb21tZW5kIGdpdGh1YiBiZWNhdXNlIGl0IGlzIGZyZWUsIGVhc3kgdG8gdXNlLCBoYXMgYmVlbiBwcm92ZW4gdG8gYmUgcmVsaWFibGUgYW5kIGhhcyBhIHJlYWxseSBnb29kIHdlYiBHVUkuCiAKLXB5cm8gQnJhbmNoIE1haW50YWluZXI6Cityb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKIEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9jbGFzc2VzL2p1Y2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NsYXNzZXMvanVjZS5iYmNsYXNzCmluZGV4IDcxNTI4MmYuLjM5MjcyMzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NsYXNzZXMvanVjZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NsYXNzZXMvanVjZS5iYmNsYXNzCkBAIC0xLDggKzEsOCBAQAogaW5oZXJpdCBwa2djb25maWcKIAorIyBMaXN0IG9mIEpVQ0UgbW9kdWxlcyB0aGF0IHJlcXVpcmVzIGV4dGVybmFsIGRlcGVuZGVuY2llcwogSlVDRV9NT0RVTEVTID8/PSAiIFwKICAganVjZV9jb3JlIFwKLSAganVjZV9ldmVudHMgXAogICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCAnanVjZV9hdWRpb19kZXZpY2VzJywgJycsIGQpfSBcCiAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2p1Y2VfZ3JhcGhpY3MganVjZV9ndWlfYmFzaWNzJywgJycsIGQpfSBcCiAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2p1Y2Vfb3BlbmdsJywgJycsIGQpfSBcCkBAIC0xMSw3ICsxMSw2IEBACiAKIFBBQ0tBR0VDT05GSUdfcHJlcGVuZD0gIiR7SlVDRV9NT0RVTEVTfSAiCiBQQUNLQUdFQ09ORklHW2p1Y2VfY29yZV0gPSAiLCxjdXJsLCIKLVBBQ0tBR0VDT05GSUdbanVjZV9ldmVudHNdID0gIiwsbGlieDExLCIKIFBBQ0tBR0VDT05GSUdbanVjZV9hdWRpb19kZXZpY2VzXSA9ICIsLGFsc2EtbGliLCIKIFBBQ0tBR0VDT05GSUdbanVjZV9ncmFwaGljc10gPSAiLCwke0pVQ0VfWDExX0RFUFN9IGZyZWV0eXBlLCIKIFBBQ0tBR0VDT05GSUdbanVjZV9ndWlfYmFzaWNzXSA9ICIsLCR7SlVDRV9YMTFfREVQU30sIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZmlsZXMvbW92ZV92YXBpZ2VuLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZmlsZXMvbW92ZV92YXBpZ2VuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZmMzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9maWxlcy9tb3ZlX3ZhcGlnZW4ucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK09FLUNvcmUncyB2YWxhIGNsYXNzIGtub3duIG9uZSB0eXBlIG9mIHZhcGlnZW4ubTQgYW5kIGRlbGV0ZXMgaXQgc2luY2UgaXRzCitub3QgY3Jvc3MgY29tcGlsZSBmcmllbmRseSwgYnV0IHRoaXMgaXMgYSBkaWZmZXJlbnQgY2FzZSBoZXJlIHdoZXJlIGl0cyBub3QKK3NhbWUgdmFwaWdlbi5tNCBqdXN0IG5hbWUgaXMgc2FtZSBhbmQgaXQgdGVuZHMgdG8gaW5oZXJpdCB2YWxhIGJiY2xhc3Mgc28KK3NhdmUgaXQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0luZGV4OiBndXBucC1kbG5hLTAuMTAuNS9tNC92YXBpZ2VuLWN1c3RvbS5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGd1cG5wLWRsbmEtMC4xMC41L200L3ZhcGlnZW4tY3VzdG9tLm00CitAQCAtMCwwICsxLDQzIEBACisrCisrZG5sIHZhbGEubTQKKytkbmwKKytkbmwgQ29weXJpZ2h0IDIwMTAgTWFyYy1BbmRyZSBMdXJlYXUKKytkbmwgQ29weXJpZ2h0IDIwMTEgUm9kbmV5IERhd2VzIDxkb2JleS5wd25zQGdtYWlsLmNvbT4KKytkbmwKKytkbmwgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorK2RubCBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrZG5sIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorK2RubCB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKytkbmwKKytkbmwgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrZG5sIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrZG5sIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrZG5sIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrZG5sCisrZG5sIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKytkbmwgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorK2RubCBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgIFVTQQorKworK2RubCBkcm9wcGVkIGV2ZXJ5dGhpbmcgYnV0IFZBTEFfUFJPR19WQVBJR0VOIC0gSmVucyBHZW9yZyA8bWFpbEBqZW5zZ2Uub3JnPgorKworKyMgQ2hlY2sgd2hldGhlciB0aGUgVmFsYSBBUEkgR2VuZXJhdG9yIGV4aXN0cyBpbiBgUEFUSCcuIElmIGl0IGlzIGZvdW5kLAorKyMgdGhlIHZhcmlhYmxlIFZBUElHRU4gaXMgc2V0LiBPcHRpb25hbGx5IGEgbWluaW11bSByZWxlYXNlIG51bWJlciBvZiB0aGUKKysjIGdlbmVyYXRvciBjYW4gYmUgcmVxdWVzdGVkLgorKyMKKysjIFZBTEFfUFJPR19WQVBJR0VOKFtNSU5JTVVNLVZFUlNJT05dKQorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrQUNfREVGVU4oW0dVUE5QX1BST0dfVkFQSUdFTl0sCisrW0FDX1BBVEhfUFJPRyhbVkFQSUdFTl0sIFt2YXBpZ2VuXSwgW10pCisrICBBU19JRihbdGVzdCAteiAiJFZBUElHRU4iXSwKKysgICAgW0FDX01TR19XQVJOKFtObyBWYWxhIEFQSSBHZW5lcmF0b3IgZm91bmQuIFlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIC52YXBpIGZpbGVzLl0pXSwKKysgICAgW0FTX0lGKFt0ZXN0IC1uICIkMSJdLAorKyAgICAgICAgW0FDX01TR19DSEVDS0lORyhbJFZBUElHRU4gaXMgYXQgbGVhc3QgdmVyc2lvbiAkMV0pCisrICAgICAgICAgYW1fX3ZhcGlnZW5fdmVyc2lvbj1gJFZBUElHRU4gLS12ZXJzaW9uIHwgc2VkICdzL1ZhbGEgQVBJIEdlbmVyYXRvciAgKi8vJ2AKKysgICAgICAgICBBU19WRVJTSU9OX0NPTVBBUkUoWyQxXSwgWyIkYW1fX3ZhcGlnZW5fdmVyc2lvbiJdLAorKyAgICAgICAgICAgW0FDX01TR19SRVNVTFQoW3llc10pXSwKKysgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sCisrICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbbm9dKQorKyAgICAgICAgICAgIEFDX01TR19XQVJOKFtWYWxhIEFQSSBHZW5lcmF0b3IgJDEgbm90IGZvdW5kLl0pCisrICAgICAgICAgICAgVkFQSUdFTj0iIgorKyAgICAgICAgICAgXSldKV0pCisrXSkKK0luZGV4OiBndXBucC1kbG5hLTAuMTAuNS9tNC92YXBpZ2VuLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3VwbnAtZGxuYS0wLjEwLjUub3JpZy9tNC92YXBpZ2VuLm00CisrKysgL2Rldi9udWxsCitAQCAtMSw0MyArMCwwIEBACistCistZG5sIHZhbGEubTQKKy1kbmwKKy1kbmwgQ29weXJpZ2h0IDIwMTAgTWFyYy1BbmRyZSBMdXJlYXUKKy1kbmwgQ29weXJpZ2h0IDIwMTEgUm9kbmV5IERhd2VzIDxkb2JleS5wd25zQGdtYWlsLmNvbT4KKy1kbmwKKy1kbmwgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorLWRubCBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCistZG5sIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorLWRubCB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy1kbmwKKy1kbmwgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistZG5sIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistZG5sIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCistZG5sIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistZG5sCistZG5sIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKy1kbmwgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLWRubCBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgIFVTQQorLQorLWRubCBkcm9wcGVkIGV2ZXJ5dGhpbmcgYnV0IFZBTEFfUFJPR19WQVBJR0VOIC0gSmVucyBHZW9yZyA8bWFpbEBqZW5zZ2Uub3JnPgorLQorLSMgQ2hlY2sgd2hldGhlciB0aGUgVmFsYSBBUEkgR2VuZXJhdG9yIGV4aXN0cyBpbiBgUEFUSCcuIElmIGl0IGlzIGZvdW5kLAorLSMgdGhlIHZhcmlhYmxlIFZBUElHRU4gaXMgc2V0LiBPcHRpb25hbGx5IGEgbWluaW11bSByZWxlYXNlIG51bWJlciBvZiB0aGUKKy0jIGdlbmVyYXRvciBjYW4gYmUgcmVxdWVzdGVkLgorLSMKKy0jIFZBTEFfUFJPR19WQVBJR0VOKFtNSU5JTVVNLVZFUlNJT05dKQorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistQUNfREVGVU4oW0dVUE5QX1BST0dfVkFQSUdFTl0sCistW0FDX1BBVEhfUFJPRyhbVkFQSUdFTl0sIFt2YXBpZ2VuXSwgW10pCistICBBU19JRihbdGVzdCAteiAiJFZBUElHRU4iXSwKKy0gICAgW0FDX01TR19XQVJOKFtObyBWYWxhIEFQSSBHZW5lcmF0b3IgZm91bmQuIFlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIC52YXBpIGZpbGVzLl0pXSwKKy0gICAgW0FTX0lGKFt0ZXN0IC1uICIkMSJdLAorLSAgICAgICAgW0FDX01TR19DSEVDS0lORyhbJFZBUElHRU4gaXMgYXQgbGVhc3QgdmVyc2lvbiAkMV0pCistICAgICAgICAgYW1fX3ZhcGlnZW5fdmVyc2lvbj1gJFZBUElHRU4gLS12ZXJzaW9uIHwgc2VkICdzL1ZhbGEgQVBJIEdlbmVyYXRvciAgKi8vJ2AKKy0gICAgICAgICBBU19WRVJTSU9OX0NPTVBBUkUoWyQxXSwgWyIkYW1fX3ZhcGlnZW5fdmVyc2lvbiJdLAorLSAgICAgICAgICAgW0FDX01TR19SRVNVTFQoW3llc10pXSwKKy0gICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sCistICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbbm9dKQorLSAgICAgICAgICAgIEFDX01TR19XQVJOKFtWYWxhIEFQSSBHZW5lcmF0b3IgJDEgbm90IGZvdW5kLl0pCistICAgICAgICAgICAgVkFQSUdFTj0iIgorLSAgICAgICAgICAgXSldKV0pCistXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2dzc2RwXzAuMTQuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2dzc2RwXzAuMTQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ1N2FiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8wLjE0LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXJlcXVpcmUgZ3NzZHAuaW5jCi0KLWluaGVyaXQgZ3RrLWRvYwotCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0aywtLXdpdGhvdXQtZ3RrLGd0ayszIgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMC4xNC8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImI4NjU4ZTQ4MGQwNDdjYWYyZDkyYmFhNGE1MWI5YWU3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjM2ZmYTAxNDM1ZTg0ZGMzMWM5NTRlNjY5ZTFjYTA3NDliOTYyZjc2YTMzM2U3NGY1YzJjYjBkZTU4MDNhMTMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2dzc2RwXzEuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MGQxZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjAuMi5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgZ3NzZHAuaW5jCisKK2luaGVyaXQgZ3RrLWRvYworCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0aywtLXdpdGhvdXQtZ3RrLGd0ayszIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMS4wLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYjMwYzlhNDA2ODUzYzZhM2EwMTJkMTUxZDZlN2FkMmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTFlMTdjMDljN2UxYTE4NWIwYmQ4NGZkNmZmMzc5NDA0NWEzY2Q3MjliNzA3YzIzZTQyMmZmNjY0NzE1MzVkYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1hdl8wLjEyLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZDAyMjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1hdl8wLjEyLjEwLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBndXBucC1hdi5pbmMKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzAuMTIvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMTVmNjI2NTA4ZDc2Yjc2N2Y1ZGE3YzliOTJlODdkOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MDM4ZWY4NGRkZGJlN2FkOTFjMjA1YmY5MWRkZGY2ODRmMDcyZGY4NjIzZjM5YjY1NTVhNmJiNzI4MzdiODVhIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZ3VwbnAtYXYvZ3VwbnAtYXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIyO21kNT0yYjQ3YjdiNWY3OTlkMmViYWJlNjJiODk1ZTg0ODgyMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhjZmEyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1hdl8wLjEyLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgZ3VwbnAtYXYuaW5jCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8wLjEyLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjU2Y2RiMjY5Mzc2YTllNmNiMDYyZWI5OTYwY2NmNTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTA1NTNkNjBkZDdjNzI3N2M2NWMwMmE2OGEyNzBjNGRjYjkwMzZhNGM3MDc1YzkwMmZjODExMWM2YTVlNmE0NCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZ3VwbnAtYXYvZ3VwbnAtYXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIyO21kNT0yYjQ3YjdiNWY3OTlkMmViYWJlNjJiODk1ZTg0ODgyMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWRsbmFfMC4xMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtZGxuYV8wLjEwLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhZmQ2OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWRsbmFfMC4xMC41LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiSGVscGVycyBmb3IgQVYgYXBwbGljYXRpb25zIHVzaW5nIERMTkEiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wLWRsbmEvZ3VwbnAtZGxuYS1wcm9maWxlLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMjttZDU9MWI4NTQ1OWY2NWNiMWU3M2E4ODVjYTEzN2FhYjYyNzQiCisKK0RFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LzAuMTAvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9tb3ZlX3ZhcGlnZW4ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjJkMGRjMWU0MTg5ZDAyNDNhYzM4MzhlY2UxZThmZWEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyM2UzNjgyMjdjMTFkNWMxN2ZjMWFhNzZjYmRhZmZhMzQ1MzU1ZWI1MWQxNzJjZDM5ZmM3NGE1YjQ2OGZmNmEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdmFsYQorCitQQUNLQUdFQ09ORklHID89ICJnc3RyZWFtZXIiCitQQUNLQUdFQ09ORklHW2dzdHJlYW1lcl0gPSAiLS1lbmFibGUtZ3N0cmVhbWVyLW1ldGFkYXRhLWJhY2tlbmQsLS1kaXNhYmxlLWdzdHJlYW1lci1tZXRhZGF0YS1iYWNrZW5kLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ndXBucC1kbG5hLTIuMC9kbG5hLXByb2ZpbGVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtZGxuYV8wLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWRsbmFfMC45LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MzYwNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtZGxuYV8wLjkuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiSGVscGVycyBmb3IgQVYgYXBwbGljYXRpb25zIHVzaW5nIERMTkEiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wLWRsbmEvZ3VwbnAtZGxuYS1wcm9maWxlLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMjttZDU9MWI4NTQ1OWY2NWNiMWU3M2E4ODVjYTEzN2FhYjYyNzQiCi0KLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LzAuOS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImY5MzY2NWU1MzVhNTEyZTRkNTE1YTg2MzExNDM1Y2I2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5OTY5NzEzZjM2YzBlODE1ZmJiYmNmZGZiM2FkOWJkNDQ3Y2ZkMTBkMGZkODYyMjdkODJkZmQ4ZWRiNmM4MDciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdmFsYQotCi1QQUNLQUdFQ09ORklHID89ICJnc3RyZWFtZXIiCi1QQUNLQUdFQ09ORklHW2dzdHJlYW1lcl0gPSAiLS1lbmFibGUtZ3N0cmVhbWVyLW1ldGFkYXRhLWJhY2tlbmQsLS1kaXNhYmxlLWdzdHJlYW1lci1tZXRhZGF0YS1iYWNrZW5kLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ndXBucC1kbG5hLTIuMC9kbG5hLXByb2ZpbGVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkXzAuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkXzAuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDBlODI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWlnZF8wLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiSGVscGVycyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBJbnRlcm5ldCBHYXRld2F5IERldmljZXMgb3ZlciBVUG5QIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC1pZ2QvZ3VwbnAtc2ltcGxlLWlnZC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWFhMjkyYzBkOTM5MDQ2M2E2ZTEwNTVkYzVmYzY4ZTgwIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGd1cG5wIHNxbGl0ZTMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzLyR7QlBOfS8wLjIvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmODgxMzIzMzA0MTg1YzAyNjM0MDM0ZTNiZGE3MTRiYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3M2I2YTk4YTBmMTNiMjliMzRjM2JmYzA3Zjk5Zjc4YjEzMTkyMTFjYjk1YTg1ODU3NTI4NzNhZjJiOTA2N2QzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24iCi0KLVBOQkxBQ0tMSVNUW2d1cG5wLWlnZF0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2NDUvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkXzAuMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkXzAuMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYTU5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjQuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJIZWxwZXJzIGZvciBpbnRlcmFjdGluZyB3aXRoIEludGVybmV0IEdhdGV3YXkgRGV2aWNlcyBvdmVyIFVQblAiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wLWlnZC9ndXBucC1zaW1wbGUtaWdkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9YWEyOTJjMGQ5MzkwNDYzYTZlMTA1NWRjNWZjNjhlODAiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3VwbnAgc3FsaXRlMyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LzAuMi8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjEyNDM3MTEzNmI1YTdiMTA1NmEzNjgxNzgwYTYyNzcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM4YzRhNmQ3NzE4ZDE3ZWFjMTdkZjk1YTNhOGMzMzc2NzdlZGE3N2U1ODk3ODEyOWFkMzE4MmQ3NjljMzhlNDQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXB5dGhvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuOC4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuOC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3ZjgyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC10b29sc18wLjguMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIGZvciBHVVBuUCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25ldHdvcmstbGlnaHQvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTJjMzliM2EwMDA0OTVkYWJkNDkzMmYyMzFjN2VmZWQ4IgotREVQRU5EUyA9ICJndXBucCBndXBucC1hdiBndGsrMyBpbnRsdG9vbC1uYXRpdmUiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJhZHdhaXRhLWljb24tdGhlbWUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzLyR7QlBOfS8wLjgvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZDg0MjNkMDM2ZTk4YmM2Zjg3NzUyOGQ2Yjg0NmY2YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTJjNTMyODlmZjFjZDcwZTY3NjQwNWM1NmNhODdiMjhkMmRhMzdhMzg1ZDM0YTNiYjliOTQ0YmE5MTA4ZDE3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUE5CTEFDS0xJU1RbZ3VwbnAtdG9vbHNdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjcwLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuOC4xMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuOC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzYwZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEzLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIEdVUG5QIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0d29yay1saWdodC9tYWluLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9MmMzOWIzYTAwMDQ5NWRhYmQ0OTMyZjIzMWM3ZWZlZDgiCitERVBFTkRTID0gImd1cG5wIGd1cG5wLWF2IGd0ayszIGludGx0b29sLW5hdGl2ZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImFkd2FpdGEtaWNvbi10aGVtZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LzAuOC8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjIxMmQ4NWViY2U4OWIzMjQ2OGI1OWUxMTY0MDUwZDQwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhM2RlY2I5ZDUzMmMwZTJlNTA1YWRjNTkyZjQzMWZkODFjMDIzMWRlZDI5ODExMjllODdkYTEzNzEyNDc5ZWQiCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMC4yMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wXzAuMjAuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMDcxNzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMC4yMC4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBndXBucC5pbmMKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzAuMjAvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2MzM0NmVmOTBhYzVjZDkyNWMzYTk0MWY1MWQ4YmNhNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3N2ZmYjk0MGJhNzdjNGE2NDI2ZDA5ZDQxMDA0Yzc1ZDkyNjUyZGNiZGU4NmM4NGFjMWM4NDdkYmQ5YWQ1OWJkIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC9ndXBucC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWQ3OGE2OWQ5YjZlNjNlZTJkYzcyZTdiNjc0ZDk3NTIwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8xLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmRmN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMS4wLjIuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIGd1cG5wLmluYworCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMS4wLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYWZkOTZmZTczODU2YjM4YWFmMWJhZjc1MjZlMDhlZGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTE3M2ZkYTc3OTExMWM2YjAxY2Q0YTVlNDFiNTk0MzIyYmU5ZDA0ZjhjNzRkMzM2MWYwYTBjMjA2OWM3NzYxMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZ3VwbnAvZ3VwbnAuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1kNzhhNjlkOWI2ZTYzZWUyZGM3MmU3YjY3NGQ5NzUyMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucC9DVkUtMjAxNi04ODYzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wL0NWRS0yMDE2LTg4NjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYjRhNzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wL0NWRS0yMDE2LTg4NjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1saWJ1cG5wLTEuNi4xOTogRml4IENWRS0yMDE2LTg4NjMKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEzODg3NzEKLQotZ2VuYV9kZXZpY2U6IEZpeCBvdXQtb2YtYm91bmQgYWNjZXNzIGluIGNyZWF0ZV91cmxfbGlzdCgpCi0KLUlmIHRoZXJlIGlzIGFuIGludmFsaWQgVVJMIGluIFVSTFMtPmJ1ZiBhZnRlciBhIHZhbGlkIG9uZSwgdXJpX3BhcnNlIGlzCi1jYWxsZWQgd2l0aCBvdXQgcG9pbnRpbmcgYWZ0ZXIgdGhlIGFsbG9jYXRlZCBtZW1vcnkuIEFzIHVyaV9wYXJzZSB3cml0ZXMKLXRvICpvdXQgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvciB0aGUgbG9vcCBpbiBjcmVhdGVfdXJsX2xpc3QgbXVzdCBiZQotc3RvcHBlZCBlYXJseSB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZCBhY2Nlc3MKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydGVkIFtodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL3B1cG5wL2NvZGUvY2kvOWMwOTljMjkyM2FiNGQ5ODUzMGFiNTIwNGFmMTczOGJlNWJkZGJhN10KLUNWRTogQ1ZFLTIwMTYtODg2MwotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS91cG5wL3NyYy9nZW5hL2dlbmFfZGV2aWNlLmMgYi91cG5wL3NyYy9nZW5hL2dlbmFfZGV2aWNlLmMKLWluZGV4IDM5ZWRjMGIuLjBmZDYwYWQgMTAwNjQ0Ci0tLS0gYS91cG5wL3NyYy9nZW5hL2dlbmFfZGV2aWNlLmMKLSsrKyBiL3VwbnAvc3JjL2dlbmEvZ2VuYV9kZXZpY2UuYwotQEAgLTExMzMsNyArMTEzMyw3IEBAIHN0YXRpYyBpbnQgY3JlYXRlX3VybF9saXN0KAotIAkvKiEgW291dF0gLiAqLwotIAlVUkxfbGlzdCAqb3V0KQotIHsKLS0gICAgc2l6ZV90IFVSTGNvdW50ID0gMDsKLSsgICAgc2l6ZV90IFVSTGNvdW50ID0gMCwgVVJMY291bnQyID0gMDsKLSAgICAgc2l6ZV90IGk7Ci0gICAgIGludCByZXR1cm5fY29kZSA9IDA7Ci0gICAgIHVyaV90eXBlIHRlbXA7Ci1AQCAtMTE3NSwxNiArMTE3NSwyMyBAQCBzdGF0aWMgaW50IGNyZWF0ZV91cmxfbGlzdCgKLSAgICAgICAgIH0KLSAgICAgICAgIG1lbWNweSggb3V0LT5VUkxzLCBVUkxTLT5idWZmLCBVUkxTLT5zaXplICk7Ci0gICAgICAgICBvdXQtPlVSTHNbVVJMUy0+c2l6ZV0gPSAwOwotLSAgICAgICAgVVJMY291bnQgPSAwOwotICAgICAgICAgZm9yKCBpID0gMDsgaSA8IFVSTFMtPnNpemU7IGkrKyApIHsKLSAgICAgICAgICAgICBpZiggKCBVUkxTLT5idWZmW2ldID09ICc8JyApICYmICggaSArIDEgPCBVUkxTLT5zaXplICkgKSB7Ci0gICAgICAgICAgICAgICAgIGlmKCAoICggcmV0dXJuX2NvZGUgPQotICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX3VyaSggJm91dC0+VVJMc1tpICsgMV0sIFVSTFMtPnNpemUgLSBpICsgMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXQtPnBhcnNlZFVSTHNbVVJMY291bnRdICkgKSA9PQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dC0+cGFyc2VkVVJMc1tVUkxjb3VudDJdICkgKSA9PQotICAgICAgICAgICAgICAgICAgICAgICBIVFRQX1NVQ0NFU1MgKQotLSAgICAgICAgICAgICAgICAgICAgJiYgKCBvdXQtPnBhcnNlZFVSTHNbVVJMY291bnRdLmhvc3Rwb3J0LnRleHQuc2l6ZSAhPQotKyAgICAgICAgICAgICAgICAgICAgJiYgKCBvdXQtPnBhcnNlZFVSTHNbVVJMY291bnQyXS5ob3N0cG9ydC50ZXh0LnNpemUgIT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgMCApICkgewotLSAgICAgICAgICAgICAgICAgICAgVVJMY291bnQrKzsKLSsgICAgICAgICAgICAgICAgICAgIFVSTGNvdW50MisrOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKFVSTGNvdW50MiA+PSBVUkxjb3VudCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGJyZWFrIGVhcmx5IGhlcmUgaW4gY2FzZSB0aGVyZSBpcyBhIGJvZ3VzIFVSTCB0aGF0Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICogd2FzIHNraXBwZWQgYWJvdmUuIFRoaXMgcHJldmVudHMgdG8gYWNjZXNzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICogb3V0LT5wYXJzZWRVUkxzW1VSTGNvdW50XSB3aGljaCBpcyBiZXlvbmQgdGhlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICogYWxsb2NhdGlvbi4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgIGlmKCByZXR1cm5fY29kZSA9PSBVUE5QX0VfT1VUT0ZfTUVNT1JZICkgewotICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoIG91dC0+VVJMcyApOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wL2F2b2lkLXJlZGVmaW5pbmctc3Rybmxlbi1hbmQtc3RybmR1cC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucC9hdm9pZC1yZWRlZmluaW5nLXN0cm5sZW4tYW5kLXN0cm5kdXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjM2YyMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wL2F2b2lkLXJlZGVmaW5pbmctc3Rybmxlbi1hbmQtc3RybmR1cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gMjJmYmE0ZjI3NjVmOTJjZDU5MmE1OGUxZmU1YzQ1MGIxODdlMzBlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDMgSnVuIDIwMTUgMjE6Mzk6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZvaWQgcmVkZWZpbmluZyBzdHJubGVuKCkgYW5kIHN0cm5kdXAoKQotCi1SZWx5IG9uIHN0cmluZy5oIGRlZmluaXRpb25zIGluc3RlYWQuIFdvcmthcm91bmQgZm9yIGNvbXBpbGVyIGVycm9ycyBzdWNoIGFzOgotCi0gIHwgaTY4Ni1yZGstbGludXgtbGlidG9vbDogY29tcGlsZTogIGk2ODYtcmRrLWxpbnV4LWdjYyAtbTMyIC1tYXJjaD1hdG9tIC1tdHVuZT1hdG9tIC1mc2NoZWR1bGUtaW5zbnMgLWZzY2hlZC1wcmVzc3VyZSAtbXNzZTMgLW1mcG1hdGg9c3NlIC0tc3lzcm9vdD0vaG9tZS9hbmRyZS9idWlsZC90bXAvc3lzcm9vdHMvNzQwMSAtREhBVkVfQ09ORklHX0ggLUkuIC1JL2hvbWUvYW5kcmUvYnVpbGQvdG1wL3dvcmsvY29yZTItMzItcmRrLWxpbnV4L2xpYnVwbnAvMS42LjE5LXIwL2xpYnVwbnAtMS42LjE5L3VwbnAgLUkuLiAtSS4uL3VwbnAvaW5jIC1JL2hvbWUvYW5kcmUvYnVpbGQvdG1wL3dvcmsvY29yZTItMzItcmRrLWxpbnV4L2xpYnVwbnAvMS42LjE5LXIwL2xpYnVwbnAtMS42LjE5L3VwbnAvaW5jIC1JL2hvbWUvYW5kcmUvYnVpbGQvdG1wL3dvcmsvY29yZTItMzItcmRrLWxpbnV4L2xpYnVwbnAvMS42LjE5LXIwL2xpYnVwbnAtMS42LjE5L3RocmVhZHV0aWwvaW5jIC1JL2hvbWUvYW5kcmUvYnVpbGQvdG1wL3dvcmsvY29yZTItMzItcmRrLWxpbnV4L2xpYnVwbnAvMS42LjE5LXIwL2xpYnVwbnAtMS42LjE5L2l4bWwvaW5jIC1JL2hvbWUvYW5kcmUvYnVpbGQvdG1wL3dvcmsvY29yZTItMzItcmRrLWxpbnV4L2xpYnVwbnAvMS42LjE5LXIwL2xpYnVwbnAtMS42LjE5L3VwbnAvc3JjL2luYyAtcHRocmVhZCAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1PcyAtV2FsbCAtYyAvaG9tZS9hbmRyZS9idWlsZC90bXAvd29yay9jb3JlMi0zMi1yZGstbGludXgvbGlidXBucC8xLjYuMTktcjAvbGlidXBucC0xLjYuMTkvdXBucC9zcmMvZ2VuYS9nZW5hX2NhbGxiYWNrMi5jIC1vIHNyYy9nZW5hL2xpYnVwbnBfbGEtZ2VuYV9jYWxsYmFjazIubyA+L2Rldi9udWxsIDI+JjEKLSAgfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUvYW5kcmUvYnVpbGQvdG1wL3N5c3Jvb3RzLzc0MDEvdXNyL2luY2x1ZGUvc3RyaW5nLmg6NjM0OjAsCi0gIHwgICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL2FuZHJlL2J1aWxkL3RtcC93b3JrL2NvcmUyLTMyLXJkay1saW51eC9saWJ1cG5wLzEuNi4xOS1yMC9saWJ1cG5wLTEuNi4xOS91cG5wL3NyYy9hcGkvVXBucFN0cmluZy5jOjIzOgotICB8IC9ob21lL2FuZHJlL2J1aWxkL3RtcC93b3JrL2NvcmUyLTMyLXJkay1saW51eC9saWJ1cG5wLzEuNi4xOS1yMC9saWJ1cG5wLTEuNi4xOS91cG5wL3NyYy9hcGkvVXBucFN0cmluZy5jOjQ3OjE1OiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBvciAnKCcgYmVmb3JlICdfX2V4dGVuc2lvbl9fJwotICB8ICAgZXh0ZXJuIGNoYXIgKnN0cm5kdXAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbik7Ci0gIHwgICAgICAgICAgICAgICAgXgotICB8IG1ha2VbM106ICoqKiBbc3JjL2FwaS9saWJ1cG5wX2xhLVVwbnBTdHJpbmcubG9dIEVycm9yIDEKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0tLS0KLSB1cG5wL3NyYy9hcGkvVXBucFN0cmluZy5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3VwbnAvc3JjL2FwaS9VcG5wU3RyaW5nLmMgYi91cG5wL3NyYy9hcGkvVXBucFN0cmluZy5jCi1pbmRleCA0MWM5ODk4Li4yZmEwOWQ3IDEwMDY0NAotLS0tIGEvdXBucC9zcmMvYXBpL1VwbnBTdHJpbmcuYwotKysrIGIvdXBucC9zcmMvYXBpL1VwbnBTdHJpbmcuYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAJLyogVkMgaGFzIHN0cm5sZW4gd2hpY2ggaXMgYWxyZWFkeSBpbmNsdWRlZCBidXQgd2l0aCAocG90ZW50aWFsbHkpIGRpZmZlcmVudCBsaW5rYWdlICovCi0gCS8qIHN0cm5sZW4oKSBpcyBhIEdOVSBleHRlbnNpb24uICovCi0gCSNpZiBIQVZFX1NUUk5MRU4KLS0JCWV4dGVybiBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICpzLCBzaXplX3QgbWF4bGVuKTsKLSsvLwkJZXh0ZXJuIHNpemVfdCBzdHJubGVuKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBtYXhsZW4pOwotIAkjZWxzZSAvKiBIQVZFX1NUUk5MRU4gKi8KLSAJCXN0YXRpYyBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICpzLCBzaXplX3QgbikKLSAJCXsKLUBAIC00NCw3ICs0NCw3IEBACi0gCi0gLyogc3RybmR1cCgpIGlzIGEgR05VIGV4dGVuc2lvbi4gKi8KLSAjaWYgSEFWRV9TVFJORFVQICYmICFkZWZpbmVkKFdJTjMyKQotLQlleHRlcm4gY2hhciAqc3RybmR1cChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKTsKLSsvLwlleHRlcm4gY2hhciAqc3RybmR1cChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKTsKLSAjZWxzZSAvKiBIQVZFX1NUUk5EVVAgJiYgIWRlZmluZWQoV0lOMzIpICovCi0gCXN0YXRpYyBjaGFyICpzdHJuZHVwKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQotIAl7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucC9zZXBidWlsZGZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucC9zZXBidWlsZGZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q5NzY4ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAvc2VwYnVpbGRmaXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIGUxOThmMGE4NzY2MGEwNDgxNjRjYTBlMTZkMTg1MTdkMGFlZTg0NmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogVHVlLCA5IEp1biAyMDE1IDEyOjIwOjQ1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZHMgd2hlbiB1c2luZyBzZXBhcmF0ZSBzb3VyY2UgYW5kIGJ1aWxkIGRpcmVjdG9yaWVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgfCA4ICsrKystLS0tCi0gaXhtbC9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KLSB0aHJlYWR1dGlsL01ha2VmaWxlLmFtIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlMmMzZjQ3Li4xMWQ1ZTIyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03MTQsOCArNzE0LDggQEAgQUNfT1VUUFVUCi0gIwotICMgRmlsZXMgY29waWVkIGZvciB3aW5kb3dzIGNvbXBpbGF0aW9uLgotICMKLS1lY2hvICJjb25maWd1cmU6IGNvcHlpbmcgXCJhdXRvY29uZmlnLmhcIiAgICAgICAgICB0byBcImJ1aWxkL2luYy9hdXRvY29uZmlnLmhcIiIKLS1jcCBhdXRvY29uZmlnLmggYnVpbGQvaW5jL2F1dG9jb25maWcuaAotLWVjaG8gImNvbmZpZ3VyZTogY29weWluZyBcInVwbnAvaW5jL3VwbnBjb25maWcuaFwiIHRvIFwiYnVpbGQvaW5jL3VwbnBjb25maWcuaFwiIgotLWNwIHVwbnAvaW5jL3VwbnBjb25maWcuaCBidWlsZC9pbmMvdXBucGNvbmZpZy5oCi0rZWNobyAiY29uZmlndXJlOiBjb3B5aW5nIFwiYXV0b2NvbmZpZy5oXCIgICAgICAgICAgdG8gXCJcJHNyY2Rpci9idWlsZC9pbmMvYXV0b2NvbmZpZy5oXCIiCi0rY3AgYXV0b2NvbmZpZy5oICRzcmNkaXIvYnVpbGQvaW5jL2F1dG9jb25maWcuaAotK2VjaG8gImNvbmZpZ3VyZTogY29weWluZyBcInVwbnAvaW5jL3VwbnBjb25maWcuaFwiIHRvIFwiXCRzcmNkaXIvYnVpbGQvaW5jL3VwbnBjb25maWcuaFwiIgotK2NwIHVwbnAvaW5jL3VwbnBjb25maWcuaCAkc3JjZGlyL2J1aWxkL2luYy91cG5wY29uZmlnLmgKLSAKLWRpZmYgLS1naXQgYS9peG1sL01ha2VmaWxlLmFtIGIvaXhtbC9NYWtlZmlsZS5hbQotaW5kZXggNDlkYTc2Ni4uMGU5YWIyYyAxMDA2NDQKLS0tLSBhL2l4bWwvTWFrZWZpbGUuYW0KLSsrKyBiL2l4bWwvTWFrZWZpbGUuYW0KLUBAIC03LDcgKzcsNyBAQAotIAotIFNVQkRJUlMgCQk9IGRvYwotIAotLUFNX0NQUEZMQUdTCQk9IC1JJChzcmNkaXIpL2luYyAtSSQoc3JjZGlyKS9zcmMvaW5jCi0rQU1fQ1BQRkxBR1MJCT0gLUkkKHRvcF9zcmNkaXIpL3VwbnAvaW5jIC1JJChzcmNkaXIpL2luYyAtSSQoc3JjZGlyKS9zcmMvaW5jCi0gQU1fQ0ZMQUdTCQk9IAotIAotIExEQURECQkJPSBsaWJpeG1sLmxhCi1kaWZmIC0tZ2l0IGEvdGhyZWFkdXRpbC9NYWtlZmlsZS5hbSBiL3RocmVhZHV0aWwvTWFrZWZpbGUuYW0KLWluZGV4IGE0ZWQzMjUuLjQyZDA3MjYgMTAwNjQ0Ci0tLS0gYS90aHJlYWR1dGlsL01ha2VmaWxlLmFtCi0rKysgYi90aHJlYWR1dGlsL01ha2VmaWxlLmFtCi1AQCAtNCw3ICs0LDcgQEAKLSAjIChDKSBDb3B5cmlnaHQgMjAwNSBSZW1pIFR1cmJvdWx0IDxyM21pQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLSAjCi0gCi0tQU1fQ1BQRkxBR1MJCT0gLUkkKHNyY2RpcikvaW5jIC1JJChzcmNkaXIpL3NyYy9pbmMKLStBTV9DUFBGTEFHUwkJPSAtSSQodG9wX3NyY2RpcikvdXBucC9pbmMgLUkkKHNyY2RpcikvaW5jIC1JJChzcmNkaXIpL3NyYy9pbmMKLSAKLSBpZiBFTkFCTEVfREVCVUcKLSAgICAgQU1fQ1BQRkxBR1MJCSs9IC1EREVCVUcgLURTVEFUUwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAxLjYvc2VwYnVpbGRmaXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnAxLjYvc2VwYnVpbGRmaXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ5M2NlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucDEuNi9zZXBidWlsZGZpeC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGUxOThmMGE4NzY2MGEwNDgxNjRjYTBlMTZkMTg1MTdkMGFlZTg0NmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogVHVlLCA5IEp1biAyMDE1IDEyOjIwOjQ1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZHMgd2hlbiB1c2luZyBzZXBhcmF0ZSBzb3VyY2UgYW5kIGJ1aWxkIGRpcmVjdG9yaWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGE4NzMxYjUuLjU0YTNjM2QgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTc0NCw5ICs3NDQsOSBAQCBBQ19PVVRQVVQKKyAjCisgIyBGaWxlcyBjb3BpZWQgZm9yIHdpbmRvd3MgY29tcGlsYXRpb24uCisgIworLWVjaG8gImNvbmZpZ3VyZTogY29weWluZyBcImF1dG9jb25maWcuaFwiICAgICAgICAgIHRvIFwiYnVpbGQvaW5jL2F1dG9jb25maWcuaFwiIgorLXRlc3QgLWQgYnVpbGQvaW5jIHx8IG1rZGlyIC1wIGJ1aWxkL2luYworLWNwIGF1dG9jb25maWcuaCBidWlsZC9pbmMvYXV0b2NvbmZpZy5oCistZWNobyAiY29uZmlndXJlOiBjb3B5aW5nIFwidXBucC9pbmMvdXBucGNvbmZpZy5oXCIgdG8gXCJidWlsZC9pbmMvdXBucGNvbmZpZy5oXCIiCistY3AgdXBucC9pbmMvdXBucGNvbmZpZy5oIGJ1aWxkL2luYy91cG5wY29uZmlnLmgKKytlY2hvICJjb25maWd1cmU6IGNvcHlpbmcgXCJhdXRvY29uZmlnLmhcIiAgICAgICAgICB0byBcIlwkc3JjZGlyL2J1aWxkL2luYy9hdXRvY29uZmlnLmhcIiIKKyt0ZXN0IC1kICRzcmNkaXIvYnVpbGQvaW5jIHx8IG1rZGlyIC1wICRzcmNkaXIvYnVpbGQvaW5jCisrY3AgYXV0b2NvbmZpZy5oICRzcmNkaXIvYnVpbGQvaW5jL2F1dG9jb25maWcuaAorK2VjaG8gImNvbmZpZ3VyZTogY29weWluZyBcInVwbnAvaW5jL3VwbnBjb25maWcuaFwiIHRvIFwiXCRzcmNkaXIvYnVpbGQvaW5jL3VwbnBjb25maWcuaFwiIgorK2NwIHVwbnAvaW5jL3VwbnBjb25maWcuaCAkc3JjZGlyL2J1aWxkL2luYy91cG5wY29uZmlnLmgKKyAKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wMS42XzEuNi4yMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucDEuNl8xLjYuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFiMDQyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucDEuNl8xLjYuMjEuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJQb3J0YWJsZSBTREsgZm9yIFVQblAqIERldmljZXMiCitERVNDUklQVElPTiA9ICJUaGUgUG9ydGFibGUgU0RLIGZvciBVUG5QIERldmljZXMgaXMgYW4gU0RLIGZvciBkZXZlbG9wbWVudCBvZiBcCitVUG5QIGRldmljZSBhbmQgY29udHJvbCBwb2ludCBhcHBsaWNhdGlvbnMuIEl0IGNvbnNpc3RzIG9mIHRoZSBjb3JlIFVQblAgXAorcHJvdG9jb2xzIGFsb25nIHdpdGggYSBVUG5QLXNwZWNpZmljIGVYdGVuc2libGUgTWFya3VwIExhbmd1YWdlIChYTUwpIHBhcnNlciBcCitzdXBwb3J0aW5nIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSkgTGV2ZWwgMiBBUEkgYW5kIGFuIG9wdGlvbmFsLCBcCitpbnRlZ3JhdGVkIG1pbmkgd2ViIHNlcnZlciBmb3Igc2VydmluZyBVUG5QIHJlbGF0ZWQgZG9jdW1lbnRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wdXBucC5zb3VyY2Vmb3JnZS5uZXQvIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMzE5MGQ1MjQ0ZTA4ZTc4ZTRjOGVlNzg1NDRmNDg2MyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHVwbnAvbGlidXBucC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3NlcGJ1aWxkZml4LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjUxM2FkYWRiMDdmYTAzOWE4YWViMGNlYjdiN2IwZjZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmM2YzYzA4NDZhMWQ3NWJhZWFkYWU0YWE1YTJiZGE0Mjc1NjdlMmExZmI0NTU5YmY3M2NjZmYwYTRmOWEzOWIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJ1cG5wLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wXzEuNi4xOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucF8xLjYuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZmM3MGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXBucC9saWJ1cG5wXzEuNi4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiUG9ydGFibGUgU0RLIGZvciBVUG5QKiBEZXZpY2VzIgotREVTQ1JJUFRJT04gPSAiVGhlIFBvcnRhYmxlIFNESyBmb3IgVVBuUCBEZXZpY2VzIGlzIGFuIFNESyBmb3IgZGV2ZWxvcG1lbnQgb2YgXAotVVBuUCBkZXZpY2UgYW5kIGNvbnRyb2wgcG9pbnQgYXBwbGljYXRpb25zLiBJdCBjb25zaXN0cyBvZiB0aGUgY29yZSBVUG5QIFwKLXByb3RvY29scyBhbG9uZyB3aXRoIGEgVVBuUC1zcGVjaWZpYyBlWHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSAoWE1MKSBwYXJzZXIgXAotc3VwcG9ydGluZyB0aGUgRG9jdW1lbnQgT2JqZWN0IE1vZGVsIChET00pIExldmVsIDIgQVBJIGFuZCBhbiBvcHRpb25hbCwgXAotaW50ZWdyYXRlZCBtaW5pIHdlYiBzZXJ2ZXIgZm9yIHNlcnZpbmcgVVBuUCByZWxhdGVkIGRvY3VtZW50cy4iCi1IT01FUEFHRSA9ICJodHRwOi8vcHVwbnAuc291cmNlZm9yZ2UubmV0LyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjMxOTBkNTI0NGUwOGU3OGU0YzhlZTc4NTQ0ZjQ4NjMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3B1cG5wLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWQtcmVkZWZpbmluZy1zdHJubGVuLWFuZC1zdHJuZHVwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcGJ1aWxkZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTg4NjMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWUxNmU1ZDMzYTNlYTc1MDZmMzhkNzFmYWNjMDU3ZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMxNDJiMzk2MDEyNDNiNTA1MzJlZWM5MGY0YTI3ZGJhODVlYjg2ZjU4ZDRiODQ5YWM5NGVkZWIyOWQ5YjIyYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnVwbnAvbGlidXBucF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnBfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNTI0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1cG5wL2xpYnVwbnBfZ2l0LmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiUG9ydGFibGUgU0RLIGZvciBVUG5QKiBEZXZpY2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIFBvcnRhYmxlIFNESyBmb3IgVVBuUCBEZXZpY2VzIGlzIGFuIFNESyBmb3IgZGV2ZWxvcG1lbnQgb2YgXAorVVBuUCBkZXZpY2UgYW5kIGNvbnRyb2wgcG9pbnQgYXBwbGljYXRpb25zLiBJdCBjb25zaXN0cyBvZiB0aGUgY29yZSBVUG5QIFwKK3Byb3RvY29scyBhbG9uZyB3aXRoIGEgVVBuUC1zcGVjaWZpYyBlWHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSAoWE1MKSBwYXJzZXIgXAorc3VwcG9ydGluZyB0aGUgRG9jdW1lbnQgT2JqZWN0IE1vZGVsIChET00pIExldmVsIDIgQVBJIGFuZCBhbiBvcHRpb25hbCwgXAoraW50ZWdyYXRlZCBtaW5pIHdlYiBzZXJ2ZXIgZm9yIHNlcnZpbmcgVVBuUCByZWxhdGVkIGRvY3VtZW50cy4iCitIT01FUEFHRSA9ICJodHRwOi8vcHVwbnAuc291cmNlZm9yZ2UubmV0LyIKK0xJQ0VOU0UgPSAiQlNEIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMzE5MGQ1MjQ0ZTA4ZTc4ZTRjOGVlNzg1NDRmNDg2MyIKKworUFYgPSAiMS44LjIrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNTZkNjA0MmFiYWU4NjFlODgzOGE0ZTZiNmI1YjU3NWI5OWUzOGYzNCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tcmppbWVuZXovcHVwbnAuZ2l0O3Byb3RvY29sPWh0dHBzIgorCitTPSIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1yZXVzZWFkZHIiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWluaXVwbnBkL21pbml1cG5wZF8yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIzNjFhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgVVBuUCBJR0QgZGFlbW9uIgotREVTQ1JJUFRJT04gPSAiVGhlIG1pbmlVUG5QIGRhZW1vbiBpcyBhbiBVUG5QIElHRCAoaW50ZXJuZXQgZ2F0ZXdheSBkZXZpY2UpIFwKLXdoaWNoIHByb3ZpZGUgTkFUIHRyYXZlcnNhbCBzZXJ2aWNlcyB0byBhbnkgVVBuUCBlbmFibGVkIGNsaWVudCBvbiBcCi10aGUgbmV0d29yay4iCi0KLVNFQ1RJT04gPSAibmV0d29ya2luZyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWE3MWM3OGMzNzNjY2ZlMGZmMjA3YWYwY2Q5NjZkOTEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLURFUEVORFMgKz0gImlwdGFibGVzIG5ldC10b29scyB1dGlsLWxpbnV4IGxpYm1ubCBsaWJuZXRmaWx0ZXItY29ubnRyYWNrIgotCi1TUkNfVVJJID0gImh0dHA6Ly9taW5pdXBucC50dXhmYW1pbHkub3JnL2ZpbGVzL2Rvd25sb2FkLnBocD9maWxlPSR7UH0udGFyLmd6IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxYzA3YTIxNWRkOWIzNjJlNzVhOWVmYzA1ZTJmYjNiNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOTZhYTNhMDBlMGY1NDkwODI2YmJhM2NiOTdlNjhjZDI3NDc5ZTU4MzlhZGFjNGI5YmNiNjZlYWU3ODZiZmI3IgotCi1JUFY2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICctLWlwdjYnLCAnJywgZCl9IgotCi1kb19jb21waWxlKCkgewotICAgIGNkICR7U30KLSAgICBDT05GSUdfT1BUSU9OUz0iJHtJUFY2fSAtLWxlYXNlZmlsZSIgLi9nZW5jb25maWcuc2gKLSAgICBvZV9ydW5tYWtlIC1mIE1ha2VmaWxlLmxpbnV4Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c2JpbmRpcn0KLSAgICBpbnN0YWxsICR7U30vbWluaXVwbnBkICR7RH0vJHtzYmluZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXB0YWJsZXNfaW5pdC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcHRhYmxlc19yZW1vdmVhbGwuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXA2dGFibGVzX2luaXQuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXA2dGFibGVzX3JlbW92ZWFsbC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IC1iICR7U30vbWluaXVwbnBkLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgJHtTfS9saW51eC9taW5pdXBucGQuaW5pdC5kLnNjcmlwdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL21pbml1cG5wZAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnlnZWwvcnlnZWxfMC4yOC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnlnZWwvcnlnZWxfMC4yOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGZhYzY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBVUG5QIEFWIG1lZGlhIHNlcnZlciBhbmQgcmVuZGVyZXIiCi1ERVNDUklQVElPTiA9ICJSeWdlbCBpcyBhIGhvbWUgbWVkaWEgc29sdXRpb24gKFVQblAgQVYgTWVkaWFTZXJ2ZXIpIHRoYXQgXAotYWxsb3cgeW91IHRvIGVhc2lseSBzaGFyZSBhdWRpbywgdmlkZW8gYW5kIHBpY3R1cmVzIHRvIG90aGVyIGRldmljZXMuIFwKLUFkZGl0aW9uYWxseSwgbWVkaWEgcGxheWVyIHNvZnR3YXJlIG1heSB1c2UgUnlnZWwgdG8gYmVjb21lIGEgTWVkaWFSZW5kZXJlciBcCi10aGF0IG1heSBiZSBjb250cm9sbGVkIHJlbW90ZWx5IGJ5IGEgVVBuUCBvciBETE5BIENvbnRyb2xsZXIuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL1J5Z2VsIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcnlnZWwvcnlnZWwtbWFpbi52YWxhO2VuZGxpbmU9Mjc7bWQ1PTk5MzI0MTE4ZGE0YzAxMmQyNWVkYWUyZjc3OWFlOWIzIgotCi1ERVBFTkRTID0gImxpYnhtbDIgZ2xpYi0yLjAgZ3NzZHAgZ3VwbnAgZ3VwbnAtYXYgZ3VwbnAtZGxuYSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBvc3NwLXV1aWQgbGliZ2VlIGxpYnNvdXAtMi40IGxpYm1lZGlhYXJ0LTIuMCBsaWJ1bmlzdHJpbmcgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXBsYXliYWNrIHNoYXJlZC1taW1lLWluZm8iCi1SUkVDT01NRU5EU18ke1BOfSA9ICJyeWdlbC1wbHVnaW4tbWVkaWEtZXhwb3J0IgotCi1HTk9NRV9DT01QUkVTU19UWVBFID0gInh6IgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOWZiZTRmYjUzYjZjZmEyZjNmMzcyM2I3NjQ5YTIyMTUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5ZWEyM2RmNzE4NmNhYWM1ZjFhYWQzMTM3ZWRmNmQ1MDdkMzM5YjlhNDY5ZmMzMTMzZGY0MDQzZmE2NmI2MWY1IgotCi1pbmhlcml0IGdub21lYmFzZSB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRyYWNrZXItcGx1Z2luIC0td2l0aC1tZWRpYS1lbmdpbmU9Z3N0cmVhbWVyIgotCi1QQUNLQUdFQ09ORklHID89ICJleHRlcm5hbCBtcHJpcyBtZWRpYXRoZWsgcnVpaCBtZWRpYS1leHBvcnQgZ3N0LWxhdW5jaCBndGsrMyIKLVBBQ0tBR0VDT05GSUdbZXh0ZXJuYWxdID0gIi0tZW5hYmxlLWV4dGVybmFsLXBsdWdpbiwtLWRpc2FibGUtZXh0ZXJuYWwtcGx1Z2luIgotUEFDS0FHRUNPTkZJR1ttcHJpc10gPSAiLS1lbmFibGUtbXByaXMtcGx1Z2luLC0tZGlzYWJsZS1tcHJpcy1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21lZGlhdGhla10gPSAiLS1lbmFibGUtbWVkaWF0aGVrLXBsdWdpbiwtLWRpc2FibGUtbWVkaWF0aGVrLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbcnVpaF0gPSAiLS1lbmFibGUtcnVpaC1wbHVnaW4sLS1kaXNhYmxlLXJ1aWgtcGx1Z2luIgotUEFDS0FHRUNPTkZJR1ttZWRpYS1leHBvcnRdID0gIi0tZW5hYmxlLW1lZGlhLWV4cG9ydC1wbHVnaW4sLS1kaXNhYmxlLW1lZGlhLWV4cG9ydC1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW2dzdC1sYXVuY2hdID0gIi0tZW5hYmxlLWdzdC1sYXVuY2gtcGx1Z2luLC0tZGlzYWJsZS1nc3QtbGF1bmNoLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbZ3RrKzNdID0gIiwtLXdpdGhvdXQtdWksZ3RrKzMiCi0KLUxJQlYgPSAiMi42IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAjIFJlbW92ZSAubGEgZmlsZXMgZm9yIGxvYWRhYmxlIG1vZHVsZXMKLSAgICAgICBybSAtZiAke0R9LyR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMvKi5sYQotICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vcGx1Z2lucy8qLmxhCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9lbmdpbmVzICR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vaWNvbnMiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMvLmRlYnVnICR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L3BsdWdpbnMvLmRlYnVnIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tbWV0YSIKLUFMTE9XX0VNUFRZXyR7UE59LW1ldGEgPSAiMSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICIke1BOfS1wbHVnaW4tKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHJ5Z2VsX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcnlnZWwtJHtMSUJWfScpCi0gICAgcG9zdGluc3QgPSBkLmdldFZhcigncGx1Z2luX3Bvc3RpbnN0JykKLSAgICBwa2dzID0gW10KLQotICAgIHBrZ3MgKz0gZG9fc3BsaXRfcGFja2FnZXMoZCwgb2UucGF0aC5qb2luKHJ5Z2VsX2xpYmRpciwgInBsdWdpbnMiKSwgJ2xpYnJ5Z2VsLSguKilcLnNvJCcsIGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKSwgJ1J5Z2VsIHBsdWdpbiBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0nKSkKLSAgICBwa2dzICs9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIG9lLnBhdGguam9pbihyeWdlbF9saWJkaXIsICJwbHVnaW5zIiksICcoLiopXC5wbHVnaW4kJywgZC5leHBhbmQoJyR7UE59LXBsdWdpbi0lcycpLCAnUnlnZWwgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPWQuZXhwYW5kKCcke1BOfScpKQotCi0gICAgbWV0YXBrZyA9IGQuZ2V0VmFyKCdQTicpICsgJy1tZXRhJwotICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4ocGtncykpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJlZGE2YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzQuMC5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIkEgVVBuUCBBViBtZWRpYSBzZXJ2ZXIgYW5kIHJlbmRlcmVyIgorREVTQ1JJUFRJT04gPSAiUnlnZWwgaXMgYSBob21lIG1lZGlhIHNvbHV0aW9uIChVUG5QIEFWIE1lZGlhU2VydmVyKSB0aGF0IFwKK2FsbG93IHlvdSB0byBlYXNpbHkgc2hhcmUgYXVkaW8sIHZpZGVvIGFuZCBwaWN0dXJlcyB0byBvdGhlciBkZXZpY2VzLiBcCitBZGRpdGlvbmFsbHksIG1lZGlhIHBsYXllciBzb2Z0d2FyZSBtYXkgdXNlIFJ5Z2VsIHRvIGJlY29tZSBhIE1lZGlhUmVuZGVyZXIgXAordGhhdCBtYXkgYmUgY29udHJvbGxlZCByZW1vdGVseSBieSBhIFVQblAgb3IgRExOQSBDb250cm9sbGVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9SeWdlbCIKKworTElDRU5TRSA9ICJMR1BMMS4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitERVBFTkRTID0gImxpYnhtbDIgZ2xpYi0yLjAgZ3NzZHAgZ3VwbnAgZ3VwbnAtYXYgZ3VwbnAtZGxuYSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBvc3NwLXV1aWQgbGliZ2VlIGxpYnNvdXAtMi40IGxpYm1lZGlhYXJ0LTIuMCBsaWJ1bmlzdHJpbmcgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXBsYXliYWNrIHNoYXJlZC1taW1lLWluZm8iCitSUkVDT01NRU5EU18ke1BOfSA9ICJyeWdlbC1wbHVnaW4tbWVkaWEtZXhwb3J0IgorCitHTk9NRV9DT01QUkVTU19UWVBFID0gInh6IgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2Q4OTIzMzI0YjI4MGNkNTQ1MjgwM2Q2MTE3NmEzNGEiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmYmIyZDQ2Y2JlNGU3NTBkZjY2MTBiNGM2NmIyMjc4ZjA2ZDFmNzFhMjU3Yzc5MDNlNjc2Y2NiMzk0ZGFkNDE4IgorCitpbmhlcml0IGdub21lYmFzZSB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IHN5c3RlbWQKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10cmFja2VyLXBsdWdpbiAtLXdpdGgtbWVkaWEtZW5naW5lPWdzdHJlYW1lciIKKworUEFDS0FHRUNPTkZJRyA/PSAiZXh0ZXJuYWwgbXByaXMgcnVpaCBtZWRpYS1leHBvcnQgZ3N0LWxhdW5jaCIKKworUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiIGd0ayszIiwgIiIsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tleHRlcm5hbF0gPSAiLS1lbmFibGUtZXh0ZXJuYWwtcGx1Z2luLC0tZGlzYWJsZS1leHRlcm5hbC1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21wcmlzXSA9ICItLWVuYWJsZS1tcHJpcy1wbHVnaW4sLS1kaXNhYmxlLW1wcmlzLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbcnVpaF0gPSAiLS1lbmFibGUtcnVpaC1wbHVnaW4sLS1kaXNhYmxlLXJ1aWgtcGx1Z2luIgorUEFDS0FHRUNPTkZJR1ttZWRpYS1leHBvcnRdID0gIi0tZW5hYmxlLW1lZGlhLWV4cG9ydC1wbHVnaW4sLS1kaXNhYmxlLW1lZGlhLWV4cG9ydC1wbHVnaW4iCitQQUNLQUdFQ09ORklHW2dzdC1sYXVuY2hdID0gIi0tZW5hYmxlLWdzdC1sYXVuY2gtcGx1Z2luLC0tZGlzYWJsZS1nc3QtbGF1bmNoLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbZ3RrKzNdID0gIiwtLXdpdGhvdXQtdWksZ3RrKzMiCisKK0xJQlYgPSAiMi42IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAjIFJlbW92ZSAubGEgZmlsZXMgZm9yIGxvYWRhYmxlIG1vZHVsZXMKKyAgICAgICBybSAtZiAke0R9LyR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMvKi5sYQorICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vcGx1Z2lucy8qLmxhCisgICAgICAgaWYgWyAtZSAke0R9JHtsaWJkaXJ9L3N5c3RlbWQvdXNlci9yeWdlbC5zZXJ2aWNlIF07IHRoZW4KKyAgICAgICAgICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3N5c3RlbWQvdXNlci9yeWdlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgICAgICAgICBybWRpciAke0R9JHtsaWJkaXJ9L3N5c3RlbWQvdXNlciAke0R9JHtsaWJkaXJ9L3N5c3RlbWQKKyAgICAgICBmaQorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vZW5naW5lcyAke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2ljb25zIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9lbmdpbmVzLy5kZWJ1ZyAke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9wbHVnaW5zLy5kZWJ1ZyIKKworUEFDS0FHRVMgKz0gIiR7UE59LW1ldGEiCitBTExPV19FTVBUWV8ke1BOfS1tZXRhID0gIjEiCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiJHtQTn0tcGx1Z2luLSoiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJyeWdlbC5zZXJ2aWNlIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgcnlnZWxfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9JykKKyAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwbHVnaW5fcG9zdGluc3QnKQorICAgIHBrZ3MgPSBbXQorCisgICAgcGtncyArPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBvZS5wYXRoLmpvaW4ocnlnZWxfbGliZGlyLCAicGx1Z2lucyIpLCAnbGlicnlnZWwtKC4qKVwuc28kJywgZC5leHBhbmQoJyR7UE59LXBsdWdpbi0lcycpLCAnUnlnZWwgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPWQuZXhwYW5kKCcke1BOfScpKQorICAgIHBrZ3MgKz0gZG9fc3BsaXRfcGFja2FnZXMoZCwgb2UucGF0aC5qb2luKHJ5Z2VsX2xpYmRpciwgInBsdWdpbnMiKSwgJyguKilcLnBsdWdpbiQnLCBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJyksICdSeWdlbCBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9ZC5leHBhbmQoJyR7UE59JykpCisKKyAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1ldGEnCisgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihwa2dzKSkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL2R2Yi1hcHBzL2R2Yi1hcHBzXzEuMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvZHZiLWFwcHMvZHZiLWFwcHNfMS4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhN2VkOWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvZHZiLWFwcHMvZHZiLWFwcHNfMS4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eHR2Lm9yZyIKLVNVTU1BUlkgPSAiTGludXggRFZCIEFQSSBhcHBsaWNhdGlvbnMgYW5kIHV0aWxpdGllcyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1ERVBFTkRTID0gInY0bC11dGlscy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAgICAgICAgIGhnOi8vbGludXh0di5vcmcvaGc7bW9kdWxlPWR2Yi1hcHBzO3Byb3RvY29sPWh0dHA7bmFtZT1hcHBzIFwKLSAgICAgICAgICAgIGdpdDovL2xpbnV4dHYub3JnL2dpdC9kdHYtc2Nhbi10YWJsZXMuZ2l0O3Byb3RvY29sPWh0dHA7ZGVzdHN1ZmZpeD1kdmItYXBwcy9pbml0aWFsLXNjYW4tdGFibGVzO25hbWU9c2NhbnRhYmxlcyBcCi0gICAgICAgICAgIgotU1JDUkVWX2FwcHMgPSAiM2Q0M2IyODAyOThjIgotU1JDUkVWX3NjYW50YWJsZXMgPSAiY2ViMTE4MzNiMzVmMDU4MTNiMWYwMzk3YTYwZTBmM2I5OTQzMGFhYiIKLVNSQ1JFVl9GT1JNQVQgPSAiYXBwc19zY2FudGFibGVzIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59IgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLUVYVFJBX09FTUFLRSA9ICJWRVJTSU9OX0ZJTEU9JyR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2R2Yi92ZXJzaW9uLmgnIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgc2VkIC1pIC1lIHM6L3Vzci9pbmNsdWRlOiR7U1RBR0lOR19JTkNESVJ9OmcgdXRpbC9hdjcxMTBfbG9hZGtleXMvZ2VuZXJhdGUta2V5bmFtZXMuc2gKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0jIGR2Yi1hcHBzIG9ubHkgc3VwcG9ydCBEVkJBUEkgdjMsIHNvIGdlbmVyYXRlIHRoZW0gZnJvbSB0aGUgRFZCQVBJIHY1IGRvd25sb2FkZWQgZmlsZXMKLSAgICBtYWtlIC1DIGluaXRpYWwtc2Nhbi10YWJsZXMgY2xlYW4KLSAgICBtYWtlIC1DIGluaXRpYWwtc2Nhbi10YWJsZXMgZHZidjMKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBtYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCi0jIGR2Yi1hcHBzIG9ubHkgc3VwcG9ydCBEVkJBUEkgdjMsIHNvIG9ubHkgaW5zdGFsbCB0aGUgZ2VuZXJhdGVkIERWQkFQSSB2MyBmaWxlcwotICAgIG1ha2UgLUMgaW5pdGlhbC1zY2FuLXRhYmxlcyBEQVRBRElSPSR7RH0vJHtkYXRhZGlyfSBEVkJWM0RJUj1kdmIgaW5zdGFsbF92MwotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2RvY2Rpcn0vZHZiLWFwcHMKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtkb2NkaXJ9L2R2Yi1hcHBzL3N6YXAKLSAgICBjaG1vZCBhK3J4ICR7RH0vJHtsaWJkaXJ9Lyouc28qCi0KLSAgICAjIEluc3RhbGwgdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3NldHZvbHRhZ2UgICAgICAke0R9JHtiaW5kaXJ9L3Rlc3Rfc2V0dm9sdGFnZQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3Qvc2V0MjJrICAgICAgICAgICR7RH0ke2JpbmRpcn0vdGVzdF9zZXQyMmsKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3NlbmRidXJzdCAgICAgICAke0R9JHtiaW5kaXJ9L3Rlc3Rfc2VuZGJ1cnN0Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC9kaXNlcWMgICAgICAgICAgJHtEfSR7YmluZGlyfS90ZXN0X2Rpc2VxYwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvdGVzdF9zZWN0aW9ucyAgICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC90ZXN0X2F2X3BsYXkgICAgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3Rlc3Rfc3RpbGxpbWFnZSAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvdGVzdF9kdnJfcGxheSAgICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC90ZXN0X3R0ICAgICAgICAgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3Rlc3Rfc2VjX25lICAgICAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvdGVzdF9zdGMgICAgICAgICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC90ZXN0X2F2ICAgICAgICAgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0L3Rlc3RfdmV2ZW50ICAgICAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3Rlc3QvdGVzdF9wZXMgICAgICAgICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdC90ZXN0X2R2ciAgICAgICAgJHtEfSR7YmluZGlyfS8KLQotICAgIGNwIC1wUFIgJHtTfS91dGlsL3N6YXAvY2hhbm5lbHMtY29uZiogJHtEfS8ke2RvY2Rpcn0vZHZiLWFwcHMvc3phcC8KLSAgICBjcCAtcFBSICR7U30vdXRpbC9zemFwL1JFQURNRSAgICR7RH0vJHtkb2NkaXJ9L2R2Yi1hcHBzL3N6YXAvCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBkdmJfbGliZGlyID0gYmIuZGF0YS5leHBhbmQoJyR7bGliZGlyfScsIGQpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZHZiX2xpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGliJXMnLCAnRFZCICVzIHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGR2Yl9saWJkaXIsICdebGliKC4qKVwubGEkJywgJ2xpYiVzLWRldicsICdEVkIgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZHZiX2xpYmRpciwgJ15saWIoLiopXC5hJCcsICdsaWIlcy1kZXYnLCAnRFZCICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGR2Yl9saWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnRFZCICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotCi1QQUNLQUdFUyA9KyAiZHZiLWV2dGVzdCBkdmItZXZ0ZXN0LWRiZyBcCi0gICAgICAgICAgICAgZHZiYXBwLXRlc3RzIGR2YmFwcC10ZXN0cy1kYmcgXAotICAgICAgICAgICAgIGR2YmRhdGUgZHZiZGF0ZS1kYmcgXAotICAgICAgICAgICAgIGR2YnRyYWZmaWMgZHZidHJhZmZpYy1kYmcgXAotICAgICAgICAgICAgIGR2Ym5ldCBkdmJuZXQtZGJnIFwKLSAgICAgICAgICAgICBkdmItc2NhbiBkdmItc2Nhbi1kYmcgZHZiLXNjYW4tZGF0YSBcCi0gICAgICAgICAgICAgZHZiLWF6YXAgZHZiLWF6YXAtZGJnIFwKLSAgICAgICAgICAgICBkdmItY3phcCBkdmItY3phcC1kYmcgXAotICAgICAgICAgICAgIGR2Yi1zemFwIGR2Yi1zemFwLWRiZyBcCi0gICAgICAgICAgICAgZHZiLXR6YXAgZHZiLXR6YXAtZGJnIFwKLSAgICAgICAgICAgICBkdmItZmVtb24gZHZiLWZlbW9uLWRiZyBcCi0gICAgICAgICAgICAgZHZiLXphcC1kYXRhIgotCi0jIEV4cG9zZSB0aGUgcGFja2FnZXMgZnJvbSB0aGUgYWJvdmUgc3BpdHRpbmcKLVBBQ0tBR0VTID0rICJsaWJkdmJhcGkgbGliZHZiY2ZnIGxpYmR2YmVuNTAyMjEgXAotICAgICAgICAgICAgIGxpYmVzZyBsaWJ1Y3NpIGxpYmR2YnNlYyIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vZHZiIgotRklMRVNfJHtQTn0tZG9jID0gIiIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgotCi1GSUxFU19kdmItZXZ0ZXN0ID0gIiR7YmluZGlyfS9ldnRlc3QiCi1GSUxFU19kdmItZXZ0ZXN0LWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnL2V2dGVzdCIKLVJDT05GTElDVFNfZHZiLWV2dGVzdCA9ICJldnRlc3QiCi0KLUZJTEVTX2R2YmFwcC10ZXN0cyA9ICIke2JpbmRpcn0vKnRlc3QqICIKLUZJTEVTX2R2YmFwcC10ZXN0cy1kYmcgPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy8qdGVzdCoiCi0KLUZJTEVTX2R2YmRhdGUgPSAiJHtiaW5kaXJ9L2R2YmRhdGUiCi1GSUxFU19kdmJkYXRlLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnL2R2YmRhdGUiCi0KLUZJTEVTX2R2YnRyYWZmaWMgPSAiJHtiaW5kaXJ9L2R2YnRyYWZmaWMiCi1GSUxFU19kdmJ0cmFmZmljLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnL2R2YnRyYWZmaWMiCi0KLUZJTEVTX2R2Ym5ldCA9ICIke2JpbmRpcn0vZHZibmV0IgotRklMRVNfZHZibmV0LWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnL2R2Ym5ldCIKLQotRklMRVNfZHZiLXNjYW4gPSAiJHtiaW5kaXJ9LypzY2FuICIKLUZJTEVTX2R2Yi1zY2FuLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnLypzY2FuIgotRklMRVNfZHZiLXNjYW4tZGF0YSA9ICIke2RhdGFkaXJ9L2R2YiIKLQotRklMRVNfZHZiLWF6YXAgPSAiJHtiaW5kaXJ9L2F6YXAiCi1GSUxFU19kdmItYXphcC1kYmcgPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy9hemFwIgotCi1GSUxFU19kdmItY3phcCA9ICIke2JpbmRpcn0vY3phcCIKLUZJTEVTX2R2Yi1jemFwLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnL2N6YXAiCi0KLUZJTEVTX2R2Yi1zemFwID0gIiR7YmluZGlyfS9zemFwIgotRklMRVNfZHZiLXN6YXAtZGJnID0gIiR7YmluZGlyfS8uZGVidWcvc3phcCIKLQotRklMRVNfZHZiLXR6YXAgPSAiJHtiaW5kaXJ9L3R6YXAiCi1GSUxFU19kdmItdHphcC1kYmcgPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy90emFwIgotCi1GSUxFU19kdmItZmVtb24gPSAiJHtiaW5kaXJ9L2ZlbW9uIgotRklMRVNfZHZiLWZlbW9uLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnL2ZlbW9uIgotCi1GSUxFU19kdmItemFwLWRhdGEgPSAiJHtkb2NkaXJ9L2R2Yi1hcHBzL3N6YXAiCi0KLVJERVBFTkRTX2R2YmRhdGUgPSsgImxpYmR2YmFwaSBsaWJ1Y3NpIgotUkRFUEVORFNfZHZidHJhZmZpYyA9KyAibGliZHZiYXBpIgotUkRFUEVORFNfZHZiLXNjYW4gPSsgImxpYmR2YmFwaSBsaWJkdmJjZmcgbGliZHZic2VjIgotUkRFUEVORFNfZHZiLWFwcHMgPSsgImxpYmR2YmFwaSBsaWJkdmJjZmcgbGliZHZic2VjIGxpYmR2YmVuNTAyMjEgbGlidWNzaSIKLVJERVBFTkRTX2R2Yi1mZW1vbiA9KyAibGliZHZiYXBpIgotUkRFUEVORFNfZHZibmV0ID0rICJsaWJkdmJhcGkiCi0KLVBOQkxBQ0tMSVNUW2R2Yi1hcHBzXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYwMy8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtRml4LWNoZWNrcy1mb3Itc3NlMi1tbXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtRml4LWNoZWNrcy1mb3Itc3NlMi1tbXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyODNhNWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLUZpeC1jaGVja3MtZm9yLXNzZTItbW14LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBmMGRhYjZkNmZlNGIwYWFlNDM5NGVlZTkzYmU4NmU5NzQ3YzZlZDVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjIgTm92IDIwMTYgMDU6MDc6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGNoZWNrcyBmb3Igc3NlMi9tbXgKLQotSnVzdCBjaGVja2luZyBmb3IgY21kbGluZSBvcHRpb25zIGlzIG5vdCBlbm91Z2gKLWl0cyBiZXR0ZXIgdG8gY2hlY2sgZm9yIGJ1aWx0aW4gZGVmaW5lcyB0byBiZQotc3VyZSwgY2xhbmcgZG9lcyBub3QgZXJyb3Igb3V0IG9uIHNzZTIgb3B0aW9ucyBvbgotYXJtIGUuZy4gYW5kIGl0IGVuZHMgdXAgZG9pbmcgU1NFMiBzdHVmZiBmb3IgYXJtCi13aGljaCBpcyBub3QgZGVzaXJlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlIHwgMTAgKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDQ3ZDJjZjIuLjRiZTAwMGMgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTExOCw4ICsxMTgsMTQgQEAgZmkKLSAjIFZhbGlhdGUgY29tcGlsZXIKLSBjaGVja19jYyB8fCBkaWUgJ05vIEMgY29tcGlsZXIgZm91bmQnCi0gY2hlY2tfY2NfaGVhZGVyIGV4ZWNpbmZvCi0tY2hlY2tfY2Nfb3B0aW9uIG1teAotLWNoZWNrX2NjX29wdGlvbiBzc2UyCi0rY2hlY2tfY2Nfc25pcHBldCBtbXggJyNpZm5kZWYgX19NTVhfXwotK2Vycm9yICJNTVggbm90IHN1cHBvcnRlZCIKLSsjZW5kaWYKLSsnCi0rY2hlY2tfY2Nfc25pcHBldCBzc2UyICcjaWZuZGVmIF9fU1NFMl9fCi0rZXJyb3IgIlNTRTIgbm90IHN1cHBvcnRlZCIKLSsjZW5kaWYKLSsnCi0gCi0gaWYgY2hlY2tfY2MgJwotICNpZiAhZGVmaW5lZChfX2NsYW5nX18pCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1NYWtlZmlsZS1JZ25vcmUtd2FybmluZy1hYm91dC13cm9uZy1pbmNsdWRlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1NYWtlZmlsZS1JZ25vcmUtd2FybmluZy1hYm91dC13cm9uZy1pbmNsdWRlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ4YTVlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtTWFrZWZpbGUtSWdub3JlLXdhcm5pbmctYWJvdXQtd3JvbmctaW5jbHVkZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDdkNjcyMzA1YzdhZDJmNzE2ZGZlMWM0ODdiNTI1YTFhOTI5NTRkNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMiBOb3YgMjAxNiAwNjoyMjozNiArMDAwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogSWdub3JlIHdhcm5pbmcgYWJvdXQgd3JvbmcgaW5jbHVkZXMKLQotSXQgaGFwcGVucyBvbiBtdXNsIGVzcGVjaWFsbHkKLXVzci9pbmNsdWRlL3N5cy9wb2xsLmg6MToyOiBlcnJvcjogcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvcG9sbC5oPiB0byA8cG9sbC5oPiBbLVdlcnJvciwtVyN3YXJuaW5nc10KLXwgI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvcG9sbC5oPiB0byA8cG9sbC5oPgotfCAgXgotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3JjL2F2YWhpLmM6NDg6Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggZjQxZWYxYS4uY2M3YjI0OSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTU0LDYgKzU0LDcgQEAgQ0ZMQUdTICArPSAtV25vLW1pY3Jvc29mdCAtUXVudXNlZC1hcmd1bWVudHMgLVduby11bnVzZWQtZnVuY3Rpb24KLSBDRkxBR1MgICs9IC1Xbm8tdW51c2VkLXZhbHVlIC1Xbm8tdGF1dG9sb2dpY2FsLWNvbnN0YW50LW91dC1vZi1yYW5nZS1jb21wYXJlCi0gQ0ZMQUdTICArPSAtV25vLXBhcmVudGhlc2VzLWVxdWFsaXR5IC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMKLSBDRkxBR1MgICs9IC1Xbm8tZXJyb3I9dmFyYXJncwotK0NGTEFHUyAgKz0gLVduby1lcnJvcj1cI3dhcm5pbmdzCi0gZW5kaWYKLSAKLSBpZmVxICgkKENPTkZJR19MSUJGRk1QRUdfU1RBVElDKSx5ZXMpCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLWRpc2FibGUtdmFyYXJncy13YXJuaW5nLW9uLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLWRpc2FibGUtdmFyYXJncy13YXJuaW5nLW9uLWNsYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGM0YzRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1kaXNhYmxlLXZhcmFyZ3Mtd2FybmluZy1vbi1jbGFuZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gOTA2ZDk1Njk1YWY5NTk3MGJmNTUxZWE1NWI2YzNlNzAzMzJjNmI5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE5vdiAyMDE2IDA1OjIyOjMyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRpc2FibGUgdmFyYXJncyB3YXJuaW5nIG9uIGNsYW5nCi0KLVRoZSBpc3N1ZSBpcyB0aGF0ICdsZW4nIGlzIGFuIHVuc2lnbmVkIGNoYXIgYW5kIHdlIHZpb2xhdGUgdGhlIHByb21vdGlvbiBydWxlcwotZm9yIHBhc3NpbmcgdGhlIHZhbHVlIHRvIHZhX3N0YXJ0LgotCi1wYXNzaW5nIGFuIG9iamVjdCB0aGF0IHVuZGVyZ29lcyBkZWZhdQotbHQgYXJndW1lbnQgcHJvbW90aW9uIHRvICd2YV9zdGFydCcgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciBbLVd2YXJhcmdzXQotfCAgIHZhX3N0YXJ0KGFwLCBsZW4pOwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDhjNWUzODAuLmY0MWVmMWEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC01Myw2ICs1Myw3IEBAIGlmZXEgKCQoQ09NUElMRVIpLCBjbGFuZykKLSBDRkxBR1MgICs9IC1Xbm8tbWljcm9zb2Z0IC1RdW51c2VkLWFyZ3VtZW50cyAtV25vLXVudXNlZC1mdW5jdGlvbgotIENGTEFHUyAgKz0gLVduby11bnVzZWQtdmFsdWUgLVduby10YXV0b2xvZ2ljYWwtY29uc3RhbnQtb3V0LW9mLXJhbmdlLWNvbXBhcmUKLSBDRkxBR1MgICs9IC1Xbm8tcGFyZW50aGVzZXMtZXF1YWxpdHkgLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcwotK0NGTEFHUyAgKz0gLVduby1lcnJvcj12YXJhcmdzCi0gZW5kaWYKLSAKLSBpZmVxICgkKENPTkZJR19MSUJGRk1QRUdfU1RBVElDKSx5ZXMpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1kdnItVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtZHZyLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTM0Y2RiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL3R2aGVhZGVuZC90dmhlYWRlbmQvMDAwMS1kdnItVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGE3MTU2NzFlYWRjYmY5ODlmZGFmMDVmNjJlNzFiOTNhYzE3NDk2MTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMiBOb3YgMjAxNiAwNjowODozMSArMDAwMAotU3ViamVjdDogW1BBVENIXSBkdnI6IFVzZSBsYWJzKCkgaW5zdGVhZCBvZiBhYnMoKQotCi1NYWtlcyBjbGFuZyBoYXBweQotCi1kdnIvZHZyX2RiLmM6ODUzOjEwOiBlcnJvcjogYWJzb2x1dGUgdmFsdWUgZnVuY3Rpb24KLSdhYnMnIGdpdmVuIGFuIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcnIGJ1dCBoYXMgcGFyYW1ldGVyIG9mIHR5cGUgJ2ludCcgd2hpY2ggbWF5IGNhdXNlIHRydW5jYXRpb24gb2YgdmFsdWUgWy1XZXJyb3IsLVdhYnNvbHV0ZS12YWx1ZV0KLWlmICgoYWJzKGRlLT5kZV9zdGFydCAtIGUtPnN0YXJ0KSA8IDYwMCkgJiYgKGFicyhkZS0+ZGVfc3RvcCAtIGUtPnN0b3ApIDwgNjAwKSkgewotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2R2ci9kdnJfZGIuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZHZyL2R2cl9kYi5jIGIvc3JjL2R2ci9kdnJfZGIuYwotaW5kZXggMTY1Y2FhNi4uNTY1NjU2OSAxMDA2NDQKLS0tLSBhL3NyYy9kdnIvZHZyX2RiLmMKLSsrKyBiL3NyYy9kdnIvZHZyX2RiLmMKLUBAIC00MTQsMTEgKzQxNCwxMSBAQCBkdnJfZW50cnlfZnV6enlfbWF0Y2goZHZyX2VudHJ5X3QgKmRlLCBlcGdfYnJvYWRjYXN0X3QgKmUpCi0gICAvKiBXcm9uZyBsZW5ndGggKCsvLTIwJSkgKi8KLSAgIHQxID0gZGUtPmRlX3N0b3AgLSBkZS0+ZGVfc3RhcnQ7Ci0gICB0MiAgPSBlLT5zdG9wIC0gZS0+c3RhcnQ7Ci0tICBpZiAoIGFicyh0MiAtIHQxKSA+ICh0MSAvIDUpICkKLSsgIGlmICggbGFicyh0MiAtIHQxKSA+ICh0MSAvIDUpICkKLSAgICAgcmV0dXJuIDA7Ci0gCi0gICAvKiBPdXRzaWRlIG9mIHdpbmRvdyAqLwotLSAgaWYgKGFicyhlLT5zdGFydCAtIGRlLT5kZV9zdGFydCkgPiBkZS0+ZGVfY29uZmlnLT5kdnJfdXBkYXRlX3dpbmRvdykKLSsgIGlmIChsYWJzKGUtPnN0YXJ0IC0gZGUtPmRlX3N0YXJ0KSA+IGRlLT5kZV9jb25maWctPmR2cl91cGRhdGVfd2luZG93KQotICAgICByZXR1cm4gMDsKLSAgIAotICAgLyogVGl0bGUgbWF0Y2ggKG9yIGNvbnRhaW5zPykgKi8KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZC8wMDAxLWhkaG9tZXJ1bi1PdmVycmlkZS1mb3JjZWQtb3ZlcnJkaWluZy1vZy1DQy1TVFJJUC1hbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtaGRob21lcnVuLU92ZXJyaWRlLWZvcmNlZC1vdmVycmRpaW5nLW9nLUNDLVNUUklQLWFuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg0ZTcyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kLzAwMDEtaGRob21lcnVuLU92ZXJyaWRlLWZvcmNlZC1vdmVycmRpaW5nLW9nLUNDLVNUUklQLWFuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYzM3NjdlMTg5ZTkwOTY1NDA3OTM3YjYxNzhhZGJiZDhjZGFmZTMxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE5vdiAyMDE2IDA1OjU5OjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGhkaG9tZXJ1bjogT3ZlcnJpZGUgZm9yY2VkIG92ZXJyZGlpbmcgb2cgQ0MvU1RSSVAgYW5kIENGTEFHUwotCi1UaGlzIGlzIHJlcXVpcmVkIGZvciBjcm9zcyBjb21waWxpbmcgb3RoZXJ3aXNlIGl0IGVuZHMgdXAKLXVzaW5nIGJ1aWxkIGhvc3QgZ2NjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5oZGhvbWVydW4gfCA2ICsrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5oZGhvbWVydW4gYi9NYWtlZmlsZS5oZGhvbWVydW4KLWluZGV4IDk0M2ZmZWMuLjhiZDE0ZmYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5oZGhvbWVydW4KLSsrKyBiL01ha2VmaWxlLmhkaG9tZXJ1bgotQEAgLTE4LDggKzE4LDggQEAKLSAKLSBpbmNsdWRlICQoZGlyICQobGFzdHdvcmQgJChNQUtFRklMRV9MSVNUKSkpLmNvbmZpZy5tawotIAotLXVuZXhwb3J0IENGTEFHUwotLXVuZXhwb3J0IExERkxBR1MKLSsjdW5leHBvcnQgQ0ZMQUdTCi0rI3VuZXhwb3J0IExERkxBR1MKLSAKLSBkZWZpbmUgRE9XTkxPQUQKLSAJQG1rZGlyIC1wICQoTElCSERIUkRJUikvYnVpbGQKLUBAIC03NSw2ICs3NSw4IEBAICQoTElCSERIUkRJUikvJChMSUJIREhSKS8udHZoX2Rvd25sb2FkOgotIAkkKGNhbGwgRE9XTkxPQUQsJChMSUJIREhSX1VSTCksJChMSUJIREhSRElSKS8kKExJQkhESFJfVEIpLCQoTElCSERIUl9TSEExKSkKLSAJJChjYWxsIFVOVEFSLCQoTElCSERIUl9UQikseikKLSAJbG4gLXNmIGxpYmhkaG9tZXJ1biAkKExJQkhESFJESVIpLyQoTElCSERIUikKLSsJQHNlZCAtaSAtZSAicy9DQy4qOj0vQ0MgPz0vIiAkKExJQkhESFJESVIpLyQoTElCSERIUikvTWFrZWZpbGUKLSsJQHNlZCAtaSAtZSAicy9TVFJJUC4qOj0vU1RSSVAgPz0vIiAkKExJQkhESFJESVIpLyQoTElCSERIUikvTWFrZWZpbGUKLSAJQHRvdWNoICRACi0gCi0gJChMSUJIREhSRElSKS8kKExJQkhESFIpLy50dmhfYnVpbGQ6IFwKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvdHZoZWFkZW5kL3R2aGVhZGVuZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I3MzU0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi90dmhlYWRlbmQvdHZoZWFkZW5kX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiVHZoZWFkZW5kIFRWIHN0cmVhbWluZyBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5sb25lbHljb2Rlci5jb20vcmVkbWluZS9wcm9qZWN0cy90dmhlYWRlbmQiCi0KLURFUEVORFMgPSAiYXZhaGkgemxpYiBvcGVuc3NsIHB5dGhvbi1uYXRpdmUgZHZiLWFwcHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9OWNhZTVhY2FjMmU5ZWUyZmMzYWVjMDFhYzg4Y2U1ZGIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS90dmhlYWRlbmQvdHZoZWFkZW5kLmdpdDticmFuY2g9cmVsZWFzZS80LjAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtY2hlY2tzLWZvci1zc2UyLW1teC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2FibGUtdmFyYXJncy13YXJuaW5nLW9uLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaGRob21lcnVuLU92ZXJyaWRlLWZvcmNlZC1vdmVycmRpaW5nLW9nLUNDLVNUUklQLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWR2ci1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLUlnbm9yZS13YXJuaW5nLWFib3V0LXdyb25nLWluY2x1ZGVzLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICI2NGZlYzgxMjAxNThkZTU4NWUxOGJlNzA1MDU1MjU5NDg0NTE4ZDk0IgotUFYgPSAiNC4wLjkrZ2l0JHtTUkNSRVZ9IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW3VyaXBhcnNlcl0gPSAiLS1lbmFibGUtdXJpcGFyc2VyLC0tZGlzYWJsZS11cmlwYXJzZXIsdXJpcGFyc2VyIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgLi9jb25maWd1cmUgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0gICAgICAgICAgICAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgICAgICAgICAgICAgIC0tYmluZGlyPSR7YmluZGlyfSBcCi0gICAgICAgICAgICAgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0gXAotICAgICAgICAgICAgICAgIC0tYXJjaD0ke1RBUkdFVF9BUkNIfSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWR2YnNjYW4gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1idW5kbGUKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImxpYmR2YmVuNTAyMjEgbGlidWNzaSBsaWJkdmJhcGkiCi0KLVBOQkxBQ0tMSVNUW3R2aGVhZGVuZF0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZHZiLWFwcHMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1hZGRvbi1wdnItaHRzLzAwMDEtVXBkYXRlLXRvLXA4LXBsYXRmb3JtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktYWRkb24tcHZyLWh0cy8wMDAxLVVwZGF0ZS10by1wOC1wbGF0Zm9ybS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRhNmFlNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1hZGRvbi1wdnItaHRzLzAwMDEtVXBkYXRlLXRvLXA4LXBsYXRmb3JtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDI3ICswLDAgQEAKLUZyb20gMDZhODIyNGM5OTI4MmFjMWE2MDZlZGQ5ZThlYTNmNTkxMTEyOTQyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBUaHUsIDE4IEZlYiAyMDE2IDE0OjA0OjMxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSB0byBwOC1wbGF0Zm9ybQotCi0tLS0KLSBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKy0tLQotIHB2ci5odHMvY2hhbmdlbG9nLnR4dCAgICAgICAgICAgICAgICAgIHwgIDQgKystLQotIHNyYy9BdXRvUmVjb3JkaW5ncy5jcHAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvSFRTUENvbm5lY3Rpb24uY3BwICAgICAgICAgICAgICAgICB8ICA4ICsrKy0tLS0KLSBzcmMvSFRTUERlbXV4ZXIuY3BwICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL0hUU1BWRlMuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KLSBzcmMvVGltZVJlY29yZGluZ3MuY3BwICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL1R2aGVhZGVuZC5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gc3JjL1R2aGVhZGVuZC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAzOCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2NsaWVudC5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gc3JjL2NsaWVudC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gc3JjL3R2aGVhZGVuZC9TdWJzY3JpcHRpb24uY3BwICAgICAgICAgfCAgMiArLQotIHNyYy90dmhlYWRlbmQvU3Vic2NyaXB0aW9uLmggICAgICAgICAgIHwgIDQgKystLQotIHNyYy90dmhlYWRlbmQvdXRpbGl0aWVzL0FzeW5jU3RhdGUuY3BwIHwgIDQgKystLQotIHNyYy90dmhlYWRlbmQvdXRpbGl0aWVzL0FzeW5jU3RhdGUuaCAgIHwgIDYgKysrLS0tCi0gMTUgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAwODQyNjgyLi5jYjA0OTQyIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtNiwxMCArNiwxMCBAQCBlbmFibGVfbGFuZ3VhZ2UoQ1hYKQotIAotIGZpbmRfcGFja2FnZShrb2RpIFJFUVVJUkVEKQotIGZpbmRfcGFja2FnZShrb2RpcGxhdGZvcm0gUkVRVUlSRUQpCi0tZmluZF9wYWNrYWdlKHBsYXRmb3JtIFJFUVVJUkVEKQotK2ZpbmRfcGFja2FnZShwOC1wbGF0Zm9ybSBSRVFVSVJFRCkKLSAKLSBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7a29kaXBsYXRmb3JtX0lOQ0xVREVfRElSU30KLS0gICAgICAgICAgICAgICAgICAgICR7cGxhdGZvcm1fSU5DTFVERV9ESVJTfQotKyAgICAgICAgICAgICAgICAgICAgJHtwOC1wbGF0Zm9ybV9JTkNMVURFX0RJUlN9Ci0gICAgICAgICAgICAgICAgICAgICAke0tPRElfSU5DTFVERV9ESVJ9Ci0gICAgICAgICAgICAgICAgICAgICAke1BST0pFQ1RfU09VUkNFX0RJUn0vbGliKQotIAotQEAgLTk1LDcgKzk1LDcgQEAgbGlzdChBUFBFTkQgSFRTX1NPVVJDRVMKLSAKLSBhZGRfc3ViZGlyZWN0b3J5KGxpYi9saWJodHMpCi0gCi0tc2V0KERFUExJQlMgJHtwbGF0Zm9ybV9MSUJSQVJJRVN9IGh0cykKLStzZXQoREVQTElCUyAke3A4LXBsYXRmb3JtX0xJQlJBUklFU30gaHRzKQotIGlmKFdJTjMyKQotICAgbGlzdChBUFBFTkQgREVQTElCUyB3czJfMzIpCi0gZW5kaWYoKQotZGlmZiAtLWdpdCBhL3B2ci5odHMvY2hhbmdlbG9nLnR4dCBiL3B2ci5odHMvY2hhbmdlbG9nLnR4dAotaW5kZXggOWZmYTMzYy4uMWU3ZmUzMCAxMDA2NDQKLS0tLSBhL3B2ci5odHMvY2hhbmdlbG9nLnR4dAotKysrIGIvcHZyLmh0cy9jaGFuZ2Vsb2cudHh0Ci1AQCAtNDksNyArNDksNyBAQAotIC0gZml4ZWQ6IEF1dG9yZWM6IFN0YXJ0IGFuZCBzdG9wIHRpbWUgaGFuZGxpbmcuCi0gLSBmaXhlZDogTG9jYWx0aW1lVG9VVEMgY29udmVyc2lvbiAodGltZXIgc2V0dGluZ3MgY2xvY2sgZGlzcGxheSBpbmNvcnJlY3QpLgotIC0gZml4ZWQ6IFNldmVyYWwgaXNzdWVzIHdpdGggcHJlZGljdGl2ZSB0dW5pbmcuCi0tLSBhZGRlZDogYnVpbGQ6IEF1dG9tYXRpY2FsbHkgZmlsbCBpbiBwbGF0Zm9ybSBhbmQgbGlicmFyeSBuYW1lLgotKy0gYWRkZWQ6IGJ1aWxkOiBBdXRvbWF0aWNhbGx5IGZpbGwgaW4gcDgtcGxhdGZvcm0gYW5kIGxpYnJhcnkgbmFtZS4KLSAtIGZpeGVkOiBVc2UgZXBnIGRhdGEgb25seSBmb3IgY3JlYXRpb24gb2YgZXBnLWJhc2VkIHRpbWVycy4KLSAtIGltcHJvdmVkOiBEbyBub3QgdHJ5IHRvIHJlY29ubmVjdCB0byB0dmggd2hpbGUgc3VzcGVuZGluZyBvciBub3QgZnVsbHkgYXdha2UgYWdhaW4uCi0gCi1AQCAtOTcsNyArOTcsNyBAQAotIC0gYWRkZWQ6IHN1cHBvcnQgZm9yIGNyZWF0aW5nIHJlcGVhdGluZyB0aW1lcnMsIGFrYSB0aW1lIHNjaGVkdWxlcwotIC0gZml4ZWQ6IGNvbmRpdGlvbnMgZm9yIGFkZG9uIHJlc3RhcnQgYWZ0ZXIgc2V0dGluZ3MgY2hhbmdlcwotIC0gaW50ZXJuYWw6IGZpeGVkIGJ1aWxkIHN5c3RlbSByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIHdpdGggbW92ZSB0byBjbWFrZQotLS0gaW50ZXJuYWw6IHVwZGF0ZWQgdG8gdXNlIGxpYnBsYXRmb3JtCi0rLSBpbnRlcm5hbDogdXBkYXRlZCB0byB1c2UgbGlicDgtcGxhdGZvcm0KLSAKLSAyLjEuNwotIC0gYWRkZWQ6IHN1cHBvcnQgZm9yIHJhZGlvIGNoYW5uZWwgZ3JvdXBzCi1kaWZmIC0tZ2l0IGEvc3JjL0F1dG9SZWNvcmRpbmdzLmNwcCBiL3NyYy9BdXRvUmVjb3JkaW5ncy5jcHAKLWluZGV4IDVmYTYwYTAuLmQ5ZTVlMWQgMTAwNjQ0Ci0tLS0gYS9zcmMvQXV0b1JlY29yZGluZ3MuY3BwCi0rKysgYi9zcmMvQXV0b1JlY29yZGluZ3MuY3BwCi1AQCAtMjYsNyArMjYsNyBAQAotICNpbmNsdWRlICJ0dmhlYWRlbmQvdXRpbGl0aWVzL1V0aWxpdGllcy5oIgotICNpbmNsdWRlICJ0dmhlYWRlbmQvdXRpbGl0aWVzL0xvZ2dlci5oIgotIAotLXVzaW5nIG5hbWVzcGFjZSBQTEFURk9STTsKLSt1c2luZyBuYW1lc3BhY2UgUDhQTEFURk9STTsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OmVudGl0eTsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOjp1dGlsaXRpZXM7Ci1kaWZmIC0tZ2l0IGEvc3JjL0hUU1BDb25uZWN0aW9uLmNwcCBiL3NyYy9IVFNQQ29ubmVjdGlvbi5jcHAKLWluZGV4IGFlYzEyOTYuLjg2ZjUwMDQgMTAwNjQ0Ci0tLS0gYS9zcmMvSFRTUENvbm5lY3Rpb24uY3BwCi0rKysgYi9zcmMvSFRTUENvbm5lY3Rpb24uY3BwCi1AQCAtMTksOSArMTksOSBAQAotICAqCi0gICovCi0gCi0tI2luY2x1ZGUgInBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLS0jaW5jbHVkZSAicGxhdGZvcm0vdXRpbC9TdHJpbmdVdGlscy5oIgotLSNpbmNsdWRlICJwbGF0Zm9ybS9zb2NrZXRzL3RjcC5oIgotKyNpbmNsdWRlICJwOC1wbGF0Zm9ybS90aHJlYWRzL211dGV4LmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3V0aWwvU3RyaW5nVXRpbHMuaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vc29ja2V0cy90Y3AuaCIKLSAKLSBleHRlcm4gIkMiIHsKLSAjaW5jbHVkZSAibGliaHRzL2h0c21zZ19iaW5hcnkuaCIKLUBAIC0zMyw3ICszMyw3IEBAIGV4dGVybiAiQyIgewotIAotIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gdXNpbmcgbmFtZXNwYWNlIEFERE9OOwotLXVzaW5nIG5hbWVzcGFjZSBQTEFURk9STTsKLSt1c2luZyBuYW1lc3BhY2UgUDhQTEFURk9STTsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OnV0aWxpdGllczsKLSAKLWRpZmYgLS1naXQgYS9zcmMvSFRTUERlbXV4ZXIuY3BwIGIvc3JjL0hUU1BEZW11eGVyLmNwcAotaW5kZXggYTZlMWYxMi4uN2Y0NTM0NSAxMDA2NDQKLS0tLSBhL3NyYy9IVFNQRGVtdXhlci5jcHAKLSsrKyBiL3NyYy9IVFNQRGVtdXhlci5jcHAKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSB1c2luZyBuYW1lc3BhY2UgQURET047Ci0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ7Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDo6dXRpbGl0aWVzOwotIAotZGlmZiAtLWdpdCBhL3NyYy9IVFNQVkZTLmNwcCBiL3NyYy9IVFNQVkZTLmNwcAotaW5kZXggMDQ2M2Y1Ni4uMDQwNGJhYiAxMDA2NDQKLS0tLSBhL3NyYy9IVFNQVkZTLmNwcAotKysrIGIvc3JjL0hUU1BWRlMuY3BwCi1AQCAtMTksOCArMTksOCBAQAotICAqCi0gICovCi0gCi0tI2luY2x1ZGUgInBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLS0jaW5jbHVkZSAicGxhdGZvcm0vdXRpbC9TdHJpbmdVdGlscy5oIgotKyNpbmNsdWRlICJwOC1wbGF0Zm9ybS90aHJlYWRzL211dGV4LmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3V0aWwvU3RyaW5nVXRpbHMuaCIKLSAjaW5jbHVkZSAidHZoZWFkZW5kL3V0aWxpdGllcy9Mb2dnZXIuaCIKLSAKLSBleHRlcm4gIkMiIHsKLUBAIC0zMCw3ICszMCw3IEBAIGV4dGVybiAiQyIgewotICNpbmNsdWRlICJUdmhlYWRlbmQuaCIKLSAKLSB1c2luZyBuYW1lc3BhY2Ugc3RkOwotLXVzaW5nIG5hbWVzcGFjZSBQTEFURk9STTsKLSt1c2luZyBuYW1lc3BhY2UgUDhQTEFURk9STTsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOjp1dGlsaXRpZXM7Ci0gCi0gLyoKLWRpZmYgLS1naXQgYS9zcmMvVGltZVJlY29yZGluZ3MuY3BwIGIvc3JjL1RpbWVSZWNvcmRpbmdzLmNwcAotaW5kZXggNWQzNDkzOC4uOTdhYWUwOSAxMDA2NDQKLS0tLSBhL3NyYy9UaW1lUmVjb3JkaW5ncy5jcHAKLSsrKyBiL3NyYy9UaW1lUmVjb3JkaW5ncy5jcHAKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgInR2aGVhZGVuZC91dGlsaXRpZXMvVXRpbGl0aWVzLmgiCi0gI2luY2x1ZGUgInR2aGVhZGVuZC91dGlsaXRpZXMvTG9nZ2VyLmgiCi0gCi0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ7Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDo6ZW50aXR5OwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OnV0aWxpdGllczsKLWRpZmYgLS1naXQgYS9zcmMvVHZoZWFkZW5kLmNwcCBiL3NyYy9UdmhlYWRlbmQuY3BwCi1pbmRleCAyMDU3MjQxLi4xNGMzYmQ0IDEwMDY0NAotLS0tIGEvc3JjL1R2aGVhZGVuZC5jcHAKLSsrKyBiL3NyYy9UdmhlYWRlbmQuY3BwCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxjdGltZT4KLSAjaW5jbHVkZSA8bWVtb3J5PgotIAotLSNpbmNsdWRlICJwbGF0Zm9ybS91dGlsL1N0cmluZ1V0aWxzLmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3V0aWwvU3RyaW5nVXRpbHMuaCIKLSAKLSAjaW5jbHVkZSAiVHZoZWFkZW5kLmgiCi0gI2luY2x1ZGUgInR2aGVhZGVuZC91dGlsaXRpZXMvVXRpbGl0aWVzLmgiCi1AQCAtMzEsNyArMzEsNyBAQAotIAotIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gdXNpbmcgbmFtZXNwYWNlIEFERE9OOwotLXVzaW5nIG5hbWVzcGFjZSBQTEFURk9STTsKLSt1c2luZyBuYW1lc3BhY2UgUDhQTEFURk9STTsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OmVudGl0eTsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOjp1dGlsaXRpZXM7Ci1kaWZmIC0tZ2l0IGEvc3JjL1R2aGVhZGVuZC5oIGIvc3JjL1R2aGVhZGVuZC5oCi1pbmRleCAyY2U0NTUyLi5lNzk0NzE2IDEwMDY0NAotLS0tIGEvc3JjL1R2aGVhZGVuZC5oCi0rKysgYi9zcmMvVHZoZWFkZW5kLmgKLUBAIC0yMiwxMCArMjIsMTAgQEAKLSAgKi8KLSAKLSAjaW5jbHVkZSAiY2xpZW50LmgiCi0tI2luY2x1ZGUgInBsYXRmb3JtL3NvY2tldHMvdGNwLmgiCi0tI2luY2x1ZGUgInBsYXRmb3JtL3RocmVhZHMvdGhyZWFkcy5oIgotLSNpbmNsdWRlICJwbGF0Zm9ybS90aHJlYWRzL211dGV4LmgiCi0tI2luY2x1ZGUgInBsYXRmb3JtL3V0aWwvYnVmZmVyLmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3NvY2tldHMvdGNwLmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3RocmVhZHMvdGhyZWFkcy5oIgotKyNpbmNsdWRlICJwOC1wbGF0Zm9ybS90aHJlYWRzL211dGV4LmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3V0aWwvYnVmZmVyLmgiCi0gI2luY2x1ZGUgImtvZGkveGJtY19jb2RlY190eXBlcy5oIgotICNpbmNsdWRlICJrb2RpL3hibWNfc3RyZWFtX3V0aWxzLmhwcCIKLSAjaW5jbHVkZSAia29kaS9saWJYQk1DX2FkZG9uLmgiCi1AQCAtODgsNyArODgsNyBAQCBjbGFzcyBDSFRTUE1lc3NhZ2U7Ci0gCi0gLyogVHlwZWRlZnMgKi8KLSB0eXBlZGVmIHN0ZDo6bWFwPHVpbnQzMl90LENIVFNQUmVzcG9uc2UqPiBDSFRTUFJlc3BvbnNlTGlzdDsKLS10eXBlZGVmIFBMQVRGT1JNOjpTeW5jZWRCdWZmZXI8Q0hUU1BNZXNzYWdlPiBDSFRTUE1lc3NhZ2VRdWV1ZTsKLSt0eXBlZGVmIFA4UExBVEZPUk06OlN5bmNlZEJ1ZmZlcjxDSFRTUE1lc3NhZ2U+IENIVFNQTWVzc2FnZVF1ZXVlOwotIAotIC8qCi0gICogSFRTUCBSZXNwb25zZSBoYW5kbGVyCi1AQCAtOTgsMTAgKzk4LDEwIEBAIGNsYXNzIENIVFNQUmVzcG9uc2UKLSBwdWJsaWM6Ci0gICBDSFRTUFJlc3BvbnNlKCk7Ci0gICB+Q0hUU1BSZXNwb25zZSgpOwotLSAgaHRzbXNnX3QgKkdldCAoIFBMQVRGT1JNOjpDTXV0ZXggJm11dGV4LCB1aW50MzJfdCB0aW1lb3V0ICk7Ci0rICBodHNtc2dfdCAqR2V0ICggUDhQTEFURk9STTo6Q011dGV4ICZtdXRleCwgdWludDMyX3QgdGltZW91dCApOwotICAgdm9pZCAgICAgIFNldCAoIGh0c21zZ190ICptICk7Ci0gcHJpdmF0ZToKLS0gIFBMQVRGT1JNOjpDQ29uZGl0aW9uPHZvbGF0aWxlIGJvb2w+IG1fY29uZDsKLSsgIFA4UExBVEZPUk06OkNDb25kaXRpb248dm9sYXRpbGUgYm9vbD4gbV9jb25kOwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mbGFnOwotICAgaHRzbXNnX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9tc2c7Ci0gfTsKLUBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgotICAqIEhUU1AgQ29ubmVjdGlvbiByZWdpc3RyYXRpb24gdGhyZWFkCi0gICovCi0gY2xhc3MgQ0hUU1BSZWdpc3RlcgotLSAgOiBwdWJsaWMgUExBVEZPUk06OkNUaHJlYWQKLSsgIDogcHVibGljIFA4UExBVEZPUk06OkNUaHJlYWQKLSB7Ci0gICBmcmllbmQgY2xhc3MgQ0hUU1BDb25uZWN0aW9uOwotIAotQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2YXRlOgotICAqIEhUU1AgQ29ubmVjdGlvbgotICAqLwotIGNsYXNzIENIVFNQQ29ubmVjdGlvbgotLSAgOiBwdWJsaWMgUExBVEZPUk06OkNUaHJlYWQKLSsgIDogcHVibGljIFA4UExBVEZPUk06OkNUaHJlYWQKLSB7Ci0gICBmcmllbmQgY2xhc3MgQ0hUU1BSZWdpc3RlcjsKLSAKLUBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgotICAgaW5saW5lIGJvb2wgSXNDb25uZWN0ZWQgICAgICAgKCB2b2lkICkgY29uc3QgeyByZXR1cm4gbV9yZWFkeTsgfQotICAgYm9vbCAgICAgICAgV2FpdEZvckNvbm5lY3Rpb24gKCB2b2lkICk7Ci0gCi0tICBpbmxpbmUgUExBVEZPUk06OkNNdXRleCYgTXV0ZXggKCB2b2lkICkgeyByZXR1cm4gbV9tdXRleDsgfQotKyAgaW5saW5lIFA4UExBVEZPUk06OkNNdXRleCYgTXV0ZXggKCB2b2lkICkgeyByZXR1cm4gbV9tdXRleDsgfQotIAotICAgdm9pZCAgICAgICAgT25TbGVlcCAoIHZvaWQgKTsKLSAgIHZvaWQgICAgICAgIE9uV2FrZSAgKCB2b2lkICk7Ci1AQCAtMjAyLDEwICsyMDIsMTAgQEAgcHJpdmF0ZToKLSAgIGJvb2wgICAgICAgIFNlbmRIZWxsbyAgICAgICAgKCB2b2lkICk7Ci0gICBib29sICAgICAgICBTZW5kQXV0aCAgICAgICAgICggY29uc3Qgc3RkOjpzdHJpbmcgJnUsIGNvbnN0IHN0ZDo6c3RyaW5nICZwICk7Ci0gCi0tICBQTEFURk9STTo6Q1RjcFNvY2tldCAgICAgICAgICAgICAgICptX3NvY2tldDsKLS0gIFBMQVRGT1JNOjpDTXV0ZXggICAgICAgICAgICAgICAgICAgIG1fbXV0ZXg7Ci0rICBQOFBMQVRGT1JNOjpDVGNwU29ja2V0ICAgICAgICAgICAgICAgKm1fc29ja2V0OwotKyAgUDhQTEFURk9STTo6Q011dGV4ICAgICAgICAgICAgICAgICAgICBtX211dGV4OwotICAgQ0hUU1BSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgbV9yZWdUaHJlYWQ7Ci0tICBQTEFURk9STTo6Q0NvbmRpdGlvbjx2b2xhdGlsZSBib29sPiBtX3JlZ0NvbmQ7Ci0rICBQOFBMQVRGT1JNOjpDQ29uZGl0aW9uPHZvbGF0aWxlIGJvb2w+IG1fcmVnQ29uZDsKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVhZHk7Ci0gICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NlcTsKLSAgIHN0ZDo6c3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2VydmVyTmFtZTsKLUBAIC0yNzMsMTMgKzI3MywxMyBAQCBwdWJsaWM6Ci0gICB2b2lkIFNldFN0cmVhbWluZ1Byb2ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnByb2ZpbGUpOwotIAotIHByaXZhdGU6Ci0tICBQTEFURk9STTo6Q011dGV4ICAgICAgICAgICAgICAgICAgICAgICAgbV9tdXRleDsKLSsgIFA4UExBVEZPUk06OkNNdXRleCAgICAgICAgICAgICAgICAgICAgICAgIG1fbXV0ZXg7Ci0gICBDSFRTUENvbm5lY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAmbV9jb25uOwotLSAgUExBVEZPUk06OlN5bmNlZEJ1ZmZlcjxEZW11eFBhY2tldCo+ICAgIG1fcGt0QnVmZmVyOwotKyAgUDhQTEFURk9STTo6U3luY2VkQnVmZmVyPERlbXV4UGFja2V0Kj4gICAgbV9wa3RCdWZmZXI7Ci0gICBBRERPTjo6WGJtY1N0cmVhbVByb3BlcnRpZXMgICAgICAgICAgICAgbV9zdHJlYW1zOwotICAgc3RkOjptYXA8aW50LGludD4gICAgICAgICAgICAgICAgICAgICAgIG1fc3RyZWFtU3RhdDsKLSAgIGludDY0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NlZWtUaW1lOwotLSAgUExBVEZPUk06OkNDb25kaXRpb248dm9sYXRpbGUgaW50NjRfdD4gIG1fc2Vla0NvbmQ7Ci0rICBQOFBMQVRGT1JNOjpDQ29uZGl0aW9uPHZvbGF0aWxlIGludDY0X3Q+ICBtX3NlZWtDb25kOwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2Vla2luZzsKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NwZWVkQ2hhbmdlOwotICAgdHZoZWFkZW5kOjpzdGF0dXM6OlNvdXJjZUluZm8gICAgICAgICAgIG1fc291cmNlSW5mbzsKLUBAIC0zNTAsNyArMzUwLDcgQEAgcHJpdmF0ZToKLSAgKiBSb290IG9iamVjdCBmb3IgVHZoZWFkZW5kIGNvbm5lY3Rpb24KLSAgKi8KLSBjbGFzcyBDVHZoZWFkZW5kCi0tICA6IHB1YmxpYyBQTEFURk9STTo6Q1RocmVhZAotKyAgOiBwdWJsaWMgUDhQTEFURk9STTo6Q1RocmVhZAotIHsKLSBwdWJsaWM6Ci0gICBDVHZoZWFkZW5kKCk7Ci1AQCAtNDIyLDcgKzQyMiw3IEBAIHByaXZhdGU6Ci0gICAgKi8KLSAgIHR2aGVhZGVuZDo6UHJvZmlsZXMgICAgICAgICBtX3Byb2ZpbGVzOwotIAotLSAgUExBVEZPUk06OkNNdXRleCAgICAgICAgICAgIG1fbXV0ZXg7Ci0rICBQOFBMQVRGT1JNOjpDTXV0ZXggICAgICAgICAgICBtX211dGV4OwotIAotICAgQ0hUU1BDb25uZWN0aW9uICAgICAgICAgICAgIG1fY29ubjsKLSAKLUBAIC01MTksNyArNTE5LDcgQEAgcHVibGljOgotICAgICovCi0gICBib29sIFdhaXRGb3JDb25uZWN0aW9uICggdm9pZCApCi0gICB7Ci0tICAgIFBMQVRGT1JNOjpDTG9ja09iamVjdCBsb2NrKG1fY29ubi5NdXRleCgpKTsKLSsgICAgUDhQTEFURk9STTo6Q0xvY2tPYmplY3QgbG9jayhtX2Nvbm4uTXV0ZXgoKSk7Ci0gICAgIHJldHVybiBtX2Nvbm4uV2FpdEZvckNvbm5lY3Rpb24oKTsKLSAgIH0KLSAgIHN0ZDo6c3RyaW5nIEdldFNlcnZlck5hbWUgICAgKCB2b2lkICkKLWRpZmYgLS1naXQgYS9zcmMvY2xpZW50LmNwcCBiL3NyYy9jbGllbnQuY3BwCi1pbmRleCA5NGQyZGI5Li4zMjk1OTE0IDEwMDY0NAotLS0tIGEvc3JjL2NsaWVudC5jcHAKLSsrKyBiL3NyYy9jbGllbnQuY3BwCi1AQCAtMjIsMTQgKzIyLDE0IEBACi0gI2luY2x1ZGUgImNsaWVudC5oIgotICNpbmNsdWRlICJrb2RpL3hibWNfcHZyX2RsbC5oIgotICNpbmNsdWRlICJrb2RpL2xpYktPRElfZ3VpbGliLmgiCi0tI2luY2x1ZGUgInBsYXRmb3JtL3V0aWwvdXRpbC5oIgotKyNpbmNsdWRlICJwOC1wbGF0Zm9ybS91dGlsL3V0aWwuaCIKLSAjaW5jbHVkZSAiVHZoZWFkZW5kLmgiCi0gI2luY2x1ZGUgInR2aGVhZGVuZC9TZXR0aW5ncy5oIgotICNpbmNsdWRlICJ0dmhlYWRlbmQvdXRpbGl0aWVzL0xvZ2dlci5oIgotIAotIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gdXNpbmcgbmFtZXNwYWNlIEFERE9OOwotLXVzaW5nIG5hbWVzcGFjZSBQTEFURk9STTsKLSt1c2luZyBuYW1lc3BhY2UgUDhQTEFURk9STTsKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ6OnV0aWxpdGllczsKLSAKLWRpZmYgLS1naXQgYS9zcmMvY2xpZW50LmggYi9zcmMvY2xpZW50LmgKLWluZGV4IDNhNWY5NTAuLmExMDY1OWIgMTAwNjQ0Ci0tLS0gYS9zcmMvY2xpZW50LmgKLSsrKyBiL3NyYy9jbGllbnQuaAotQEAgLTIwLDggKzIwLDggQEAKLSAgKgotICAqLwotIAotLSNpbmNsdWRlICJwbGF0Zm9ybS9vcy5oIgotLSNpbmNsdWRlICJwbGF0Zm9ybS90aHJlYWRzL211dGV4LmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL29zLmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLSAjaW5jbHVkZSAia29kaS9saWJYQk1DX2FkZG9uLmgiCi0gI2luY2x1ZGUgImtvZGkvbGliWEJNQ19wdnIuaCIKLSAjaW5jbHVkZSAia29kaS9saWJYQk1DX2NvZGVjLmgiCi1kaWZmIC0tZ2l0IGEvc3JjL3R2aGVhZGVuZC9TdWJzY3JpcHRpb24uY3BwIGIvc3JjL3R2aGVhZGVuZC9TdWJzY3JpcHRpb24uY3BwCi1pbmRleCAxODJjYTdmLi5lMThhZjFlIDEwMDY0NAotLS0tIGEvc3JjL3R2aGVhZGVuZC9TdWJzY3JpcHRpb24uY3BwCi0rKysgYi9zcmMvdHZoZWFkZW5kL1N1YnNjcmlwdGlvbi5jcHAKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgInV0aWxpdGllcy9Mb2dnZXIuaCIKLSAjaW5jbHVkZSAiLi4vVHZoZWFkZW5kLmgiCi0gCi0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIHVzaW5nIG5hbWVzcGFjZSB0dmhlYWRlbmQ7Ci0gdXNpbmcgbmFtZXNwYWNlIHR2aGVhZGVuZDo6dXRpbGl0aWVzOwotIAotZGlmZiAtLWdpdCBhL3NyYy90dmhlYWRlbmQvU3Vic2NyaXB0aW9uLmggYi9zcmMvdHZoZWFkZW5kL1N1YnNjcmlwdGlvbi5oCi1pbmRleCBiMDNiY2NlLi4zNjNlNWVmIDEwMDY0NAotLS0tIGEvc3JjL3R2aGVhZGVuZC9TdWJzY3JpcHRpb24uaAotKysrIGIvc3JjL3R2aGVhZGVuZC9TdWJzY3JpcHRpb24uaAotQEAgLTIyLDcgKzIyLDcgQEAKLSAgKi8KLSAKLSAjaW5jbHVkZSA8c3RyaW5nPgotLSNpbmNsdWRlICJwbGF0Zm9ybS90aHJlYWRzL211dGV4LmgiCi0rI2luY2x1ZGUgInA4LXBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLSAKLSBleHRlcm4gIkMiCi0gewotQEAgLTE0Niw2ICsxNDYsNiBAQCBuYW1lc3BhY2UgdHZoZWFkZW5kCi0gICAgIHN0ZDo6c3RyaW5nICAgICAgIG1fcHJvZmlsZTsKLSAgICAgQ0hUU1BDb25uZWN0aW9uICAgJm1fY29ubjsKLSAKLS0gICAgbXV0YWJsZSBQTEFURk9STTo6Q011dGV4ICBtX211dGV4OwotKyAgICBtdXRhYmxlIFA4UExBVEZPUk06OkNNdXRleCAgbV9tdXRleDsKLSAgIH07Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy90dmhlYWRlbmQvdXRpbGl0aWVzL0FzeW5jU3RhdGUuY3BwIGIvc3JjL3R2aGVhZGVuZC91dGlsaXRpZXMvQXN5bmNTdGF0ZS5jcHAKLWluZGV4IDBjMzBhOTMuLjFmNGZkZjMgMTAwNjQ0Ci0tLS0gYS9zcmMvdHZoZWFkZW5kL3V0aWxpdGllcy9Bc3luY1N0YXRlLmNwcAotKysrIGIvc3JjL3R2aGVhZGVuZC91dGlsaXRpZXMvQXN5bmNTdGF0ZS5jcHAKLUBAIC0yMiw3ICsyMiw3IEBACi0gI2luY2x1ZGUgIkFzeW5jU3RhdGUuaCIKLSAKLSB1c2luZyBuYW1lc3BhY2UgdHZoZWFkZW5kOjp1dGlsaXRpZXM7Ci0tdXNpbmcgbmFtZXNwYWNlIFBMQVRGT1JNOwotK3VzaW5nIG5hbWVzcGFjZSBQOFBMQVRGT1JNOwotIAotIHN0cnVjdCBQYXJhbSB7Ci0gICBlQXN5bmNTdGF0ZSBzdGF0ZTsKLUBAIC0zNyw3ICszNyw3IEBAIEFzeW5jU3RhdGU6OkFzeW5jU3RhdGUoaW50IHRpbWVvdXQpCi0gCi0gZUFzeW5jU3RhdGUgQXN5bmNTdGF0ZTo6R2V0U3RhdGUoKQotIHsKLS0gIFBMQVRGT1JNOjpDTG9ja09iamVjdCBsb2NrKG1fbXV0ZXgpOwotKyAgUDhQTEFURk9STTo6Q0xvY2tPYmplY3QgbG9jayhtX211dGV4KTsKLSAgIHJldHVybiBtX3N0YXRlOwotIH0KLSAKLWRpZmYgLS1naXQgYS9zcmMvdHZoZWFkZW5kL3V0aWxpdGllcy9Bc3luY1N0YXRlLmggYi9zcmMvdHZoZWFkZW5kL3V0aWxpdGllcy9Bc3luY1N0YXRlLmgKLWluZGV4IDFkNjcyZGEuLjA4MTljZDggMTAwNjQ0Ci0tLS0gYS9zcmMvdHZoZWFkZW5kL3V0aWxpdGllcy9Bc3luY1N0YXRlLmgKLSsrKyBiL3NyYy90dmhlYWRlbmQvdXRpbGl0aWVzL0FzeW5jU3RhdGUuaAotQEAgLTIyLDcgKzIyLDcgQEAKLSAjaWZuZGVmIEFTWU5DU1RBVEVfSAotICNkZWZpbmUJQVNZTkNTVEFURV9ICi0gCi0tI2luY2x1ZGUgInBsYXRmb3JtL3RocmVhZHMvbXV0ZXguaCIKLSsjaW5jbHVkZSAicDgtcGxhdGZvcm0vdGhyZWFkcy9tdXRleC5oIgotIAotIG5hbWVzcGFjZSB0dmhlYWRlbmQgewotICAgbmFtZXNwYWNlIHV0aWxpdGllcyB7Ci1AQCAtNzUsOCArNzUsOCBAQCBuYW1lc3BhY2UgdHZoZWFkZW5kIHsKLSAgICAgICBzdGF0aWMgYm9vbCBQcmVkaWNhdGVDYWxsYmFjayAoIHZvaWQgKnBhcmFtICk7Ci0gCi0gICAgICAgZUFzeW5jU3RhdGUgbV9zdGF0ZTsKLS0gICAgICBQTEFURk9STTo6Q011dGV4IG1fbXV0ZXg7Ci0tICAgICAgUExBVEZPUk06OkNDb25kaXRpb248Ym9vbD4gbV9jb25kaXRpb247Ci0rICAgICAgUDhQTEFURk9STTo6Q011dGV4IG1fbXV0ZXg7Ci0rICAgICAgUDhQTEFURk9STTo6Q0NvbmRpdGlvbjxib29sPiBtX2NvbmRpdGlvbjsKLSAgICAgICBpbnQgbV90aW1lb3V0OwotIAotICAgICB9OwotLS0gCi0yLjAuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1hZGRvbi1wdnItaHRzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLWFkZG9uLXB2ci1odHNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2FmZWJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLWFkZG9uLXB2ci1odHNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJLb2RpIE1lZGlhIENlbnRlciBQVlIgcGx1Z2lucyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvY2xpZW50LmNwcDttZDU9YzhmNmI3M2M1YmMxMDQ4YTNkNjUwNjcwMGE3YTkxZDIiCi0KLURFUEVORFMgPSAiIFwKLSAgICAgICAgICAgIHppcC1uYXRpdmUgXAotICAgICAgICAgICAgcDhwbGF0Zm9ybSBcCi0gICAgICAgICAgICBrb2RpLXBsYXRmb3JtIFwKLSAgICAgICAgICAiCi0KLVNSQ1JFVl9wdnJodHMgPSAiN2Y3NWI3MDUyNzkyMmFlZjk1MzEyM2ZmOTdlYmFhMjJkOWZiN2NiNCIKLQotU1JDUkVWX0ZPUk1BVCA9ICJwdnJodHMiCi0KLVBWID0gIjIuMi4xMytnaXRyJHtTUkNQVn0iCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va29kaS1wdnIvcHZyLmh0cy5naXQ7YnJhbmNoPUphcnZpcztkZXN0c3VmZml4PXB2ci5odHM7bmFtZT1wdnJodHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VcGRhdGUtdG8tcDgtcGxhdGZvcm0ucGF0Y2ggXAotICAgICAgICAgICIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ2V0dGV4dAotCi1TID0gIiR7V09SS0RJUn0vcHZyLmh0cyIKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotCSAgLURBRERPTlNfVE9fQlVJTEQ9cHZyLmh0cyBcCi0JICAtREFERE9OX1NSQ19QUkVGSVg9JHtXT1JLRElSfS9naXQgXAotCSAgLURDTUFLRV9CVUlMRF9UWVBFPURlYnVnIFwKLQkgIC1EQ01BS0VfSU5TVEFMTF9QUkVGSVg9JHtkYXRhZGlyfS9rb2RpL2FkZG9ucyBcCi0gICAgICAgICAgLURDTUFLRV9NT0RVTEVfUEFUSD0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJkaXJ9L2tvZGkgXAotICAgICAgICAgIC1EQ01BS0VfUFJFRklYX1BBVEg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0gICAgICAgICAgLURQQUNLQUdFX1pJUD0xIFwKLSAgICAgICAgIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0Jc2VkIC1pIC1lICdzOkkvdXNyL2luY2x1ZGU6SSR7U1RBR0lOR19JTkNESVJ9OmcnIFwKLQkgICAgICAgLWUgJ3M6LXBpcGU6JHtIT1NUX0NDX0FSQ0h9ICR7VE9PTENIQUlOX09QVElPTlN9IC1waXBlOmcnIFwKLQkgICAgICAgICAgJHtCfS9DTWFrZUZpbGVzLyovZmxhZ3MubWFrZQotCXNlZCAtaSAtZSAnczotcGlwZToke0hPU1RfQ0NfQVJDSH0gJHtUT09MQ0hBSU5fT1BUSU9OU30gLXBpcGU6ZydcCi0JICAgICAgICAgICR7Qn0vQ01ha2VGaWxlcy8qL2xpbmsudHh0Ci19Ci0KLSMgTWFrZSB6aXAgcGFja2FnZSBmb3IgbWFudWFsIGluc3RhbGxhdGlvbgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9rb2RpL2FkZG9ucy9wYWNrYWdlcy8KLQkoIGNkICR7RH0ke2RhdGFkaXJ9L2tvZGkvYWRkb25zCi0JICB6aXAgLXIgJHtEfSR7ZGF0YWRpcn0va29kaS9hZGRvbnMvcGFja2FnZXMvcHZyLmh0cy0ke1BWfS56aXAgcHZyLmh0cyAteCAnKi5kZWJ1ZyonICkKLX0KLQotIyBEb2Vzbid0IGdldCBhZGRlZCBhdXRvbWFnaWNhbGx5LCBkbG9wZW4oKT8KLVJERVBFTkRTXyR7UE59ID0gImxpYmtvZGlwbGF0Zm9ybSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0va29kaSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9rb2RpL2FkZG9ucy8qLy5kZWJ1Zy8iCi0KLVBOQkxBQ0tMSVNUW2tvZGktYWRkb24tcHZyLWh0c10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQga29kaSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLXBsYXRmb3JtLzAwMDEtZml4LWNyb3NzLWNvbXBpbGUtYmFkbmVzcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLXBsYXRmb3JtLzAwMDEtZml4LWNyb3NzLWNvbXBpbGUtYmFkbmVzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdlOWQyMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1wbGF0Zm9ybS8wMDAxLWZpeC1jcm9zcy1jb21waWxlLWJhZG5lc3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDMxMzYzMTdmMDk2ZWE3ZmRhNGZiOTA3ZTc3NWEwMTk1MmM0YWFlM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gU2FyYWV2IDxzdGVmYW5Ac2FyYWV2LmNhPgotRGF0ZTogRnJpLCAxOSBGZWIgMjAxNiAxMDozMzowMCArMDEwMAotU3ViamVjdDogW1BBVENIXSBmaXggY3Jvc3MgY29tcGlsZSBiYWRuZXNzCi0KLUZyb20gaHR0cHM6Ly9naXRodWIuY29tL09wZW5FTEVDL09wZW5FTEVDLnR2L2Jsb2IvbWFzdGVyL3BhY2thZ2VzL21lZGlhY2VudGVyL2tvZGktcGxhdGZvcm0vcGF0Y2hlcy9rb2RpLXBsYXRmb3JtLTAxX2Nyb3NzY29tcGlsZS1iYWRuZXNzLnBhdGNoCi0tLS0KLSBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgMiArLQotIGtvZGlwbGF0Zm9ybS1jb25maWcuY21ha2UuaW4gfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiZjZiNjU5Li45YWJlNzczIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjIsNyArMjIsNyBAQCBpZihOT1QgV0lOMzIpCi0gICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLWZQSUMiKQotIGVuZGlmKCkKLSAKLS1zZXQoa29kaXBsYXRmb3JtX0lOQ0xVREVfRElSUyAke1RJTllYTUxfSU5DTFVERV9ESVJ9ICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9pbmNsdWRlL2tvZGkiKQotK3NldChrb2RpcGxhdGZvcm1fSU5DTFVERV9ESVJTICR7VElOWVhNTF9JTkNMVURFX0RJUn0gIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVhfVE9PTENIQUlOfS9pbmNsdWRlL2tvZGkiKQotIElGKFdJTjMyKQotICAgTElTVChBUFBFTkQga29kaXBsYXRmb3JtX0lOQ0xVREVfRElSUyAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vaW5jbHVkZS9rb2RpL3dpbmRvd3MiKQotIEVORElGKFdJTjMyKQotZGlmZiAtLWdpdCBhL2tvZGlwbGF0Zm9ybS1jb25maWcuY21ha2UuaW4gYi9rb2RpcGxhdGZvcm0tY29uZmlnLmNtYWtlLmluCi1pbmRleCAzZmM1MjczLi42MGJkZjFiIDEwMDY0NAotLS0tIGEva29kaXBsYXRmb3JtLWNvbmZpZy5jbWFrZS5pbgotKysrIGIva29kaXBsYXRmb3JtLWNvbmZpZy5jbWFrZS5pbgotQEAgLTEwLDcgKzEwLDcgQEAKLSAjCi0gIyBwcm9wYWdhdGUgdGhlc2UgcHJvcGVydGllcyBmcm9tIG9uZSBidWlsZCBzeXN0ZW0gdG8gdGhlIG90aGVyCi0gc2V0IChrb2RpcGxhdGZvcm1fVkVSU0lPTiAiQGtvZGlwbGF0Zm9ybV9WRVJTSU9OX01BSk9SQC5Aa29kaXBsYXRmb3JtX1ZFUlNJT05fTUlOT1JAIikKLS1zZXQgKGtvZGlwbGF0Zm9ybV9JTkNMVURFX0RJUlMgQGtvZGlwbGF0Zm9ybV9JTkNMVURFX0RJUlNAIEBDTUFLRV9JTlNUQUxMX1BSRUZJWEAvaW5jbHVkZSkKLStzZXQgKGtvZGlwbGF0Zm9ybV9JTkNMVURFX0RJUlMgQGtvZGlwbGF0Zm9ybV9JTkNMVURFX0RJUlNAIEBDTUFLRV9JTlNUQUxMX1BSRUZJWF9UT09MQ0hBSU5AL2luY2x1ZGUpCi0gc2V0IChrb2RpcGxhdGZvcm1fTElCUkFSWV9ESVJTICJAQ01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZQCIpCi0gc2V0IChrb2RpcGxhdGZvcm1fTElOS0VSX0ZMQUdTICJAa29kaXBsYXRmb3JtX0xJTktFUl9GTEFHU0AiKQotIHNldCAoa29kaXBsYXRmb3JtX0NPTkZJR19WQVJTICJAa29kaXBsYXRmb3JtX0NPTkZJR19WQVJTQCIpCi0tLSAKLTIuMC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLXBsYXRmb3JtL2tvZGktcGxhdGZvcm0tMDJfbm8tbXVsdGktbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktcGxhdGZvcm0va29kaS1wbGF0Zm9ybS0wMl9uby1tdWx0aS1saWIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExM2M1M2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktcGxhdGZvcm0va29kaS1wbGF0Zm9ybS0wMl9uby1tdWx0aS1saWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggOWFiZTc3My4uYWU0MzNmYyAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTksNyArOSw2IEBAIGZpbmRfcGFja2FnZShrb2RpIFJFUVVJUkVEKQotIGZpbmRfcGFja2FnZShUaW55WE1MIFJFUVVJUkVEKQotIGZpbmRfcGFja2FnZShUaHJlYWRzIFJFUVVJUkVEKQotIGZpbmRfcGFja2FnZShwOC1wbGF0Zm9ybSBSRVFVSVJFRCkKLS1pbmNsdWRlKFVzZU11bHRpQXJjaC5jbWFrZSkKLSBpbmNsdWRlKENoZWNrQXRvbWljLmNtYWtlKQotIAotIHNldChrb2RpcGxhdGZvcm1fTkFNRSBrb2RpcGxhdGZvcm0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1wbGF0Zm9ybV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1wbGF0Zm9ybV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNTU0ZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktcGxhdGZvcm1fZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJQbGF0Zm9ybSBzdXBwb3J0IGxpYnJhcnkgdXNlZCBieSBsaWJDRUMgYW5kIGJpbmFyeSBhZGQtb25zIGZvciBLb2RpIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmNlYy5wdWxzZS1laWdodC5jb20vIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy91dGlsL1hNTFV0aWxzLmNwcDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT1kYWU4ZTg0NjUwMGU3MGRkOGVjZWU1NWYzZjAxOGMzMCIKLQotREVQRU5EUyA9ICJsaWJ0aW55eG1sIGtvZGkiCi0KLVBWID0gIjE2LjAuMCIKLQotU1JDUkVWID0gImM4MTg4ZDgyNjc4ZmVjNmI3ODQ1OTdkYjY5YTY4ZTc0ZmY0OTg2YjUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veGJtYy9rb2RpLXBsYXRmb3JtLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jcm9zcy1jb21waWxlLWJhZG5lc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8va29kaS1wbGF0Zm9ybS0wMl9uby1tdWx0aS1saWIucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotRVhUUkFfT0VDTUFLRSA9ICIgLURDTUFLRV9JTlNUQUxMX1BSRUZJWF9UT09MQ0hBSU49JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKLSAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9MSUJESVI9JHtsaWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9MSUJESVJfTk9BUkNIPSR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtREtPRElfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0xJQkRJUn0va29kaSBcCi0gICAgICAgICAgICAgICAgICAtREtPRElfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUn0va29kaSBcCi0gICAgICAgICAgICAgICAgIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0Jc2VkIC1pIC1lICdzOkkvdXNyL2luY2x1ZGU6SSR7U1RBR0lOR19JTkNESVJ9OmcnIFwKLQkgICAgICAgLWUgJ3M6LXBpcGU6JHtIT1NUX0NDX0FSQ0h9ICR7VE9PTENIQUlOX09QVElPTlN9IC1waXBlOmcnIFwKLQkgICAgICAgICAgJHtCfS9DTWFrZUZpbGVzL2tvZGlwbGF0Zm9ybS5kaXIvZmxhZ3MubWFrZQotCXNlZCAtaSAtZSAnczotcGlwZToke0hPU1RfQ0NfQVJDSH0gJHtUT09MQ0hBSU5fT1BUSU9OU30gLXBpcGU6ZydcCi0JICAgICAgICAgICR7Qn0vQ01ha2VGaWxlcy9rb2RpcGxhdGZvcm0uZGlyL2xpbmsudHh0Ci19Ci0KLVJQUk9WSURFU18ke1BOfSArPSAibGlia29kaXBsYXRmb3JtIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKnBsYXRmb3JtIgotCi1QTkJMQUNLTElTVFtrb2RpLXBsYXRmb3JtXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBrb2RpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktc3RhcnR1cC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLXN0YXJ0dXAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZThmMzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktc3RhcnR1cC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtZCBzZXJ2aWNlIGZvciBrb2RpIHN0YXJ0dXAiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCi0KLVBWID0gIjEuMCIKLQotU1JDX1VSSSA9ICJmaWxlOi8va29kaS5zZXJ2aWNlIgotCi1pbmhlcml0IHN5c3RlbWQKLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0vbGliL3N5c3RlbWQvc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va29kaS5zZXJ2aWNlICR7RH0vbGliL3N5c3RlbWQvc3lzdGVtLyAKLX0KLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrb2RpLnNlcnZpY2UiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ4aW5pdCBrb2RpIgotCi1QTkJMQUNLTElTVFtrb2RpLXN0YXJ0dXBdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQga29kaSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1Rba29kaS1zdGFydHVwXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGtvZGktc3RhcnR1cC1kZXYgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaV8xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpXzE3LmJiCmluZGV4IDQzYzMyZmIuLjUxNThmMDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpXzE3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpXzE3LmJiCkBAIC0xOCw2ICsxOCw3IEBACiAgICAgICAgICAgICBhdmFoaSBcCiAgICAgICAgICAgICBib29zdCBcCiAgICAgICAgICAgICBiemlwMiBcCisgICAgICAgICAgICBjcm9zc2d1aWQgXAogICAgICAgICAgICAgY3VybCBcCiAgICAgICAgICAgICBkY2FkZWMgXAogICAgICAgICAgICAgZW5jYSBcCkBAIC02MiwxMSArNjMsMTEgQEAKIAogUFJPVklERVMgPSAieGJtYyIKIAotU1JDUkVWID0gIjY2MWRkMDhkMjIxZjViMmJmNTA5YTY5NmE2YWNhNWVlN2Q0NWJiMjciCi1CQVNFUFYgPSAiMTcuMSIKLVBWID0gIiR7QkFTRVBWfStnaXRyJHtTUkNQVn0iCitTUkNSRVYgPSAiNmFiZWViZDViYTM3MTU0N2M4ZjA0MjcyMjk2NDMzZjVlNGUyOGU4NiIKK1BWID0gIjE3LjMrZ2l0ciR7U1JDUFZ9IgorQURET05TUFYgPSAiMTcuMSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS94Ym1jL3hibWMuZ2l0O2JyYW5jaD1LcnlwdG9uIFwKLSAgICAgICAgICAgaHR0cHM6Ly9yZXBvLnZvaWRsaW51eC5ldS9kaXN0ZmlsZXMvJHtCUE59LSR7QkFTRVBWfS1nZW5lcmF0ZWQtYWRkb25zLnRhci54ejtuYW1lPWFkZG9uczt1bnBhY2s9MCBcCisgICAgICAgICAgIGh0dHBzOi8vcmVwby52b2lkbGludXguZXUvZGlzdGZpbGVzLyR7QlBOfS0ke0FERE9OU1BWfS1nZW5lcmF0ZWQtYWRkb25zLnRhci54ejtuYW1lPWFkZG9uczt1bnBhY2s9MCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS1kb24tdC10cnktdG8tcnVuLXN0dWZmLXRvLWZpbmQtdGlueXhtbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWhhbmRsZS1TSUdURVJNLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDUtYWRkLXN1cHBvcnQtdG8tcmVhZC1mcmVxdWVuY3ktb3V0cHV0LWlmLXVzaW5nLWludGVsLS5wYXRjaCBcCkBAIC0xMzEsNiArMTMyLDExIEBACiBGVUxMX09QVElNSVpBVElPTl9hcm12N3ZlID0gIi1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLU8zIC1mZmFzdC1tYXRoIgogQlVJTERfT1BUSU1JWkFUSU9OID0gIiR7RlVMTF9PUFRJTUlaQVRJT059IgogCitMREZMQUdTX2FwcGVuZF9taXBzID0gIiAtbGF0b21pYyIKK0xERkxBR1NfYXBwZW5kX21pcHNlbCA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbGF0b21pYyIKK0xERkxBR1NfYXBwZW5kX2FybSA9ICIgLWxhdG9taWMiCisKIEVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIExJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKIAogIyBmb3IgcHl0aG9uIG1vZHVsZXMKQEAgLTE0NiwxNSArMTUyLDE0IEBACiAgICAgcmV0dXJuICIiCiAKIGRvX2NvbmZpZ3VyZSgpIHsKLSAgICB0YXIgeGYgJHtXT1JLRElSfS8ke0JQTn0tJHtCQVNFUFZ9LWdlbmVyYXRlZC1hZGRvbnMudGFyLnh6IC1DICR7U30vCisgICAgdGFyIHhmICR7V09SS0RJUn0vJHtCUE59LSR7QURET05TUFZ9LWdlbmVyYXRlZC1hZGRvbnMudGFyLnh6IC1DICR7U30vCiAKLSAgICAoIGZvciBpIGluICQoZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUuKiIgKSA7IGRvCisgICAgKCBmb3IgaSBpbiAkKGZpbmQgJHtTfSAtbmFtZSBjb25maWd1cmUuYWMgLW9yIC1uYW1lIGNvbmZpZ3VyZS5pbnxncmVwIC12ICIucGMiKSA7IGRvCiAgICAgICAgY2QgJChkaXJuYW1lICRpKSAmJiBnbnUtY29uZmlnaXplIC0tZm9yY2UgfHwgdHJ1ZQogICAgIGRvbmUgKQogICAgICggZm9yIGYgaW4gJHtTfS94Ym1jL2ludGVyZmFjZXMvcHl0aG9uL2dlbmVyYXRlZC8qLmNwcDsgZG8KICAgICAgICB0b3VjaCBgZWNobyAkZnxzZWQgLWUgJ3MvLmNwcCQvLnhtbC9nJ2AKICAgICBkb25lICkKLSAgICBtYWtlIC1DIHRvb2xzL2RlcGVuZHMvdGFyZ2V0L2Nyb3NzZ3VpZCBQUkVGSVg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fQogCiAgICAgQk9PVFNUUkFQX1NUQU5EQUxPTkU9MSBtYWtlIC1mIGJvb3RzdHJhcC5tayBKU09OX0JVSUxERVI9IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9Kc29uU2NoZW1hQnVpbGRlciIKICAgICBCT09UU1RSQVBfU1RBTkRBTE9ORT0xIG1ha2UgSkFWQT0vYmluL3RydWUgLWYgY29kZWdlbmVyYXRvci5tayBKU09OX0JVSUxERVI9IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9Kc29uU2NoZW1hQnVpbGRlciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWt2L2xpYmVibWwvbGliZWJtbF8xLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWt2L2xpYmVibWwvbGliZWJtbF8xLjMuMC5iYgppbmRleCBiYmJlNTYzLi4xNmUxN2U5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1rdi9saWJlYm1sL2xpYmVibWxfMS4zLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1ta3YvbGliZWJtbC9saWJlYm1sXzEuMy4wLmJiCkBAIC0xLDYgKzEsNiBAQAogU1VNTUFSWSA9ICJsaWJlYm1sIGlzIGEgQysrIGxpYmFyeSB0byBwYXJzZSBFQk1MIGZpbGVzIgogTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuTEdQTDttZDU9ZjE0NTk5YTJmMDg5ZjZmZjhjOTdlMmJhYTRlM2Q1NzUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkxHUEw7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgogCiBTUkNfVVJJID0gIlwKICAgICBodHRwOi8vZGwubWF0cm9za2Eub3JnL2Rvd25sb2Fkcy9saWJlYm1sL2xpYmVibWwtJHtQVn0udGFyLmJ6MiBcCkBAIC0xMCwxNSArMTAsNyBAQAogU1JDX1VSSVttZDVzdW1dID0gImVmZWM3MjliZjVhNTFlNjQ5ZTFkOWQxZjYxYzBhZTdhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzYjA3NGQ2YjYyNzE1YWEwMDgwNDA2ZWE4NGQzM2RmMmU0NGI1ZDg3NDA5NjY0MDIzM2E0ZGI0OWI4MDk2ZGUiCiAKLWRvX3VucGFja1twb3N0ZnVuY3NdICs9ICJkb3MydW5peCIKLQotZG9zMnVuaXggKCkgewotICAgIGNyPSIkKHByaW50ZiAnXHInKSIKLSAgICBmb3IgZiBpbiAke1N9L21ha2UvKi9NYWtlZmlsZTsgZG8KLSAgICAgICAgdHIgLWQgIiRjciIgPCIkZiIgPiIkZi5uZXciICYmIFwKLSAgICAgICAgICAgIG12ICIkZi5uZXciICIkZiIKLSAgICBkb25lCi19Citpbmhlcml0IGRvczJ1bml4CiAKIExJQkVCTUxfT1MgPSAiVW5rbm93biIKIExJQkVCTUxfT1NfbGludXggPSAiTGludXgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1rdi9ta3Z0b29sbml4L21rdnRvb2xuaXhfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1ta3YvbWt2dG9vbG5peC9ta3Z0b29sbml4X2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGExNDI2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1rdi9ta3Z0b29sbml4L21rdnRvb2xuaXhfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJNS1ZUb29sTml4IC0tIENyb3NzLXBsYXRmb3JtIHRvb2xzIGZvciBNYXRyb3NrYSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYnVua3VzLm9yZy92aWRlb3Rvb2xzL21rdnRvb2xuaXgvc291cmNlLmh0bWwiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJjdXJsIGJvb3N0IGV4cGF0IHpsaWIgbGliZWJtbCBsaWJtYXRyb3NrYSBsaWJvZ2cgbGlidm9yYmlzIGJ6aXAyIGx6byBmaWxlIHJ1YnktbmF0aXZlIgotCi1QViA9ICI4LjQuMCtnaXQke1NSQ1BWfSIKLVNSQ1JFVl9ta3Z0b29sbml4ID0gIjdmNjNlYTQ4ZWU0NzQ3NTRhOTU4MzhmMzdhYmE4ZjYxMThjOTRhNjUiCi1TUkNSRVZfbGliZWJtbCA9ICIwNGIzNGIwZGJkZWQ0MGUwY2VjOTNjYWZhNmE0ZjRjOGU5MGMzMjA2IgotU1JDUkVWX2xpYm1hdHJvc2thID0gImRiNWQ2MjdiNWJmNDg1MTZjOWUwYjU0MDI1NGMwZDM2NTk1NzYwYzMiCi1TUkNSRVZfRk9STUFUID0gIm1rdnRvb2xuaXgiCi1TUkNfVVJJID0gIiBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vbWJ1bmt1cy9ta3Z0b29sbml4LmdpdDtuYW1lPW1rdnRvb2xuaXggXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL01hdHJvc2thLU9yZy9saWJlYm1sLmdpdDtuYW1lPWxpYmVibWw7ZGVzdHN1ZmZpeD1naXQvbGliL2xpYmVibWwgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL01hdHJvc2thLU9yZy9saWJtYXRyb3NrYS5naXQ7bmFtZT1saWJtYXRyb3NrYTtkZXN0c3VmZml4PWdpdC9saWIvbGlibWF0cm9za2EgXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQKLQotIyBtYWtlIHN1cmUgcmIgZmlsZXMgYXJlIHVzZWQgZnJvbSBzeXNyb290LCBub3QgZnJvbSBob3N0Ci0jIHJ1YnktMS45LjMtYWx3YXlzLXVzZS1pMzg2LnBhdGNoIGlzIGRvaW5nIHRhcmdldF9jcHU9YGVjaG8gJHRhcmdldF9jcHUgfCBzZWQgcy9pLjg2L2kzODYvYAotIyB3ZSBuZWVkIHRvIHJlcGxhY2UgaXQgdG9vIChhIGJpdCBsb25nZXIgdmVyc2lvbiB3aXRob3V0IGltcG9ydGluZyByZSkKLVJVQllfU1lTID0gIiR7QCAnJHtCVUlMRF9TWVN9Jy5yZXBsYWNlKCdpNDg2JywgJ2kzODYnKS5yZXBsYWNlKCdpNTg2JywgJ2kzODYnKS5yZXBsYWNlKCdpNjg2JywgJ2kzODYnKSB9IgotZXhwb3J0IFJVQllMSUI9IiR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vcnVieWdlbXM6JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3J1Ynk6JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3J1YnkvJHtSVUJZX1NZU30iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJmbGFjICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAncXQ1LWxheWVyJywgJ3F0NScsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2ZsYWNdID0gIi0td2l0aC1mbGFjLC0td2l0aG91dC1mbGFjLGZsYWMiCi1QQUNLQUdFQ09ORklHW3F0NV0gPSAiLS1lbmFibGUtcXQgLS13aXRoLW1vYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcXQ1L21vYyAtLXdpdGgtdWljPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9xdDUvdWljIC0td2l0aC1yY2M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3F0NS9yY2MsLS1kaXNhYmxlLXF0LHF0YmFzZSIKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtYm9vc3QtbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0iCi0KLSMgcmVtb3ZlIHNvbWUgaGFyZGNvZGVkIHNlYXJjaHBhdGhzCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgczovdXNyL2xvY2FsL2xpYjoke1NUQUdJTkdfTElCRElSfTpnIC1lIHM6L3Vzci9sb2NhbC9pbmNsdWRlOiR7U1RBR0lOR19JTkNESVJ9OmcgJHtTfS9hYy9xdDUubTQKLX0KLQotIyBZZWFoLCBubyBtYWtlZmlsZQotZG9fY29tcGlsZSgpIHsKLSAgICBMQ19BTEw9ImVuX1VTLlVURi04IiAke1N9L2RyYWtlICR7UEFSQUxMRUxfTUFLRX0KLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBMQ19BTEw9ImVuX1VTLlVURi04IiAke1N9L2RyYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLSMgfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3JjL2NvbW1vbi91dGY4X2NvZGVjdnRfZmFjZXQuY3BwOjIyOjA6Ci0jIHwgc3JjL2NvbW1vbi8uLi8uLi9saWIvYm9vc3QvdXRmOF9jb2RlY3Z0X2ZhY2V0L3V0ZjhfY29kZWN2dF9mYWNldC5jcHA6MTc0OjU6IGVycm9yOiAnaW50IG10eDo6dXRmOF9jb2RlY3Z0X2ZhY2V0Ojpkb19sZW5ndGgnIGlzIG5vdCBhIHN0YXRpYyBkYXRhIG1lbWJlciBvZiAnc3RydWN0IG10eDo6dXRmOF9jb2RlY3Z0X2ZhY2V0JwotIyB8ICAgICAgQk9PU1RfQ09ERUNWVF9ET19MRU5HVEhfQ09OU1Qgc3RkOjptYnN0YXRlX3QgJiwKLSMgfCAgICAgIF4KLVBOQkxBQ0tMSVNUW21rdnRvb2xuaXhdID89ICJCUk9LRU46IEZhaWx4IHRvIGJ1aWxkIHdpdGggZ2NjLTUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvY2Fwcy9jYXBzXzAuOS4yNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jYXBzL2NhcHNfMC45LjI0LmJiCmluZGV4IGQ3ODg3NjMuLjI5MTY3ZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jYXBzL2NhcHNfMC45LjI0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jYXBzL2NhcHNfMC45LjI0LmJiCkBAIC0xNyw2ICsxNyw3IEBACiBFWFRSQV9PRU1BS0UgPSAiIFwKICAgICBDQz0nJHtDWFh9JyBcCiAgICAgQ0ZMQUdTPScke0NGTEFHU30gLWZmYXN0LW1hdGggLWZ1bnJvbGwtbG9vcHMgLWZQSUMgLURQSUMnIFwKKyAgICBBUkNIPScnIFwKICIKIGRvX2NvbXBpbGUoKSB7CiAgICAgb2VfcnVubWFrZSBhbGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jb3JpYW5kZXIvY29yaWFuZGVyL2Nyb3NzLWNvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvY29yaWFuZGVyL2NvcmlhbmRlci9jcm9zcy1jb21waWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTM1MGZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jb3JpYW5kZXIvY29yaWFuZGVyL2Nyb3NzLWNvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1JbiBhIGNyb3NzIGNvbXBpbGUgZW52aXJvbm1lbnQgYWRkaW5nIHBhdGhzIGxpa2UgL3VzciBhcmUgbm90IGNvcnJlY3QuCi1XaXRoIHRoaXMgcGF0Y2ggd2UgbWFrZSBpdCBzbyB0aGF0IGl0cyByZWxhdGl2ZSB0byBzeXNyb290IGlmIHRoZSBjb21waWxlcgotZGVmaW5lcyBvbmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBhL3NyYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvc3JjL01ha2VmaWxlLmFtCTIwMTMtMDItMDggMjI6MzU6MDguMDAwMDAwMDAwIC0wODAwCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0JMjAxMy0xMC0xMyAwMTozMTozOC44MTI4NjkwODAgLTA3MDAKLUBAIC0zMyw1ICszMyw1IEBACi0gCXZpZGVvX2VuY29kZS5jIHZpZGVvX2VuY29kZS5oIFwKLSAJc3VidGl0bGVzLmMgc3VidGl0bGVzLmggCi0gCi0tY29yaWFuZGVyX0xEQUREID0gLUwvdXNyL1gxMVI2L2xpYi8gQFBBQ0tBR0VfTElCU0AgJChJTlRMTElCUykgJChMSUJUSUZGX0xJQlMpICQoRlRQTElCX0xJQlMpICQoU0RMTElCX0xJQlMpICQoTElCRENfTElCUykgJChMSUJSQVdfTElCUykgJChYVl9MSUJTKSAkKENPUl9MRlNfTERGTEFHUykgLWxndGhyZWFkLTIuMCAkKEZGTVBFR19MSUJTKSAkKFgxMV9MSUJTKQotK2NvcmlhbmRlcl9MREFERCA9IC1MPS91c3IvWDExUjYvbGliLyBAUEFDS0FHRV9MSUJTQCAkKElOVExMSUJTKSAkKExJQlRJRkZfTElCUykgJChGVFBMSUJfTElCUykgJChTRExMSUJfTElCUykgJChMSUJEQ19MSUJTKSAkKExJQlJBV19MSUJTKSAkKFhWX0xJQlMpICQoQ09SX0xGU19MREZMQUdTKSAtbGd0aHJlYWQtMi4wICQoRkZNUEVHX0xJQlMpICQoWDExX0xJQlMpCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvY29yaWFuZGVyL2NvcmlhbmRlcl8yLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jb3JpYW5kZXIvY29yaWFuZGVyXzIuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxZGRkOWFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9jb3JpYW5kZXIvY29yaWFuZGVyXzIuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJDb250cm9sIGFuZCBjYXB0dXJlIEdVSSBmb3IgSUlEQyBjb21wbGlhbnQgY2FtZXJhcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYW1pZW4uZG91eGNoYW1wcy5uZXQvaWVlZTEzOTQvY29yaWFuZGVyLyIKLVNFQ1RJT04gPSAiYXBwbGljYXRpb25zIgotTElDRU5TRSA9ICJHUEwtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1ERVBFTkRTID0gImd0aysgbGliZ25vbWV1aSBsaWJyYXcxMzk0IGxpYmRjMTM5NCBsaWJ4diB0aWZmIgotCi1QTkJMQUNLTElTVFtjb3JpYW5kZXJdID89ICJCUk9LRU46IGZhaWxzIHRvIHVzZSBTREwgcHJvYmFibHkgYmVjYXVzZSBsaWJzZGwtY29uZmlnIHdhcyByZW1vdmVkLCBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ1NETF9PdmVybGF5JyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vY29yaWFuZGVyLTIvJHtQVn0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQzMWQ5OGZiMDEzMjE3NjgxZjk3YWRlMTY4MjAxZmI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjN2ZkMzFjYjU4ZDM5OGUyNzQyMzUyYmYxZmZiZDJjYTIyZTA2Njg2YzY2NjhlY2ZkNDM3NzM1YzJiNzkxMjMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvZGxleW5hLXNlcnZlcl8wLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvZGxleW5hLXNlcnZlcl8wLjYuMC5iYgppbmRleCBhZTE2NzY1Li5hOGU1NDA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1zZXJ2ZXJfMC42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtc2VydmVyXzAuNi4wLmJiCkBAIC02LDEzICs2LDEzIEBACiAKIExJQ0VOU0UgPSAiTEdQTHYyLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZGxleW5hL3NlcnZlci9zZXJ2ZXIuYztlbmRsaW5lPTIyO21kNT1kZmE2ZGMzZjkxNDIwNmMyNDA4YzA1MTBjMjM0ZjhjOCIKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmRsZXluYS9zZXJ2ZXIvc2VydmVyLmM7ZW5kbGluZT0yMjttZDU9NDM3NDU1ZDhhZWZmNjllYmQwOTk2YTc2YzY3Mzk3YmIiCiAKIERFUEVORFMgPSAiZ2xpYi0yLjAgZ3NzZHAgZ3VwbnAgZ3VwbnAtYXYgZ3VwbnAtZGxuYSBsaWJzb3VwLTIuNCBsaWJ4bWwyIGRsZXluYS1jb3JlIgogUkRFUEVORFNfJHtQTn0gPSAiZGxleW5hLWNvbm5lY3Rvci1kYnVzIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvJHtCUE59LmdpdCIKLVNSQ1JFViA9ICIzODY1MTc4MzkxNGM3NmJkODYxZjdmZTg2NTFiMjVlMzk4NmQ3YmU4IgorU1JDUkVWID0gIjc3Njk1MGQ1ZDk2YWM5ZGJmNWM1YzQ3YmRlOGFjMDZmNTBhM2NmNDYiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvbWVkaWEtc2VydmljZS11cG5wXzAuNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9tZWRpYS1zZXJ2aWNlLXVwbnBfMC41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYWY0MmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9tZWRpYS1zZXJ2aWNlLXVwbnBfMC41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gImRpc2NvdmVyLCBicm93c2UgYW5kIHNlYXJjaCBVUE5QL0RMTkEgbWVkaWEgc2VydmVycyIKLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2RsZXluYS8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWVkaWEtc2VydmljZS11cG5wLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NTg0ZWIxMDNiNGY2ZjM0MzJjNDNkMTY5YjZhMTIzYTEiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGxpYnNvdXAtMi40IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvJHtCUE59LmdpdCIKLVNSQ1JFViA9ICIwZGJjNzRhNzlhYTA3YThmOGM3ZDMyZTFkMmRlNmM0ZDNhMGY5NWJjIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBkbXMtaW5mbyAke0R9JHtiaW5kaXJ9Ci19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSIKLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS9kbXMtaW5mbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvcmVuZGVyZXItc2VydmljZS11cG5wXzAuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9yZW5kZXJlci1zZXJ2aWNlLXVwbnBfMC4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMDZkMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9yZW5kZXJlci1zZXJ2aWNlLXVwbnBfMC4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gImRpc2NvdmVyIGFuZCBtYW5pcHVsYXRlIFVQTlAvRExOQSBtZWRpYSByZW5kZXJlcnMiCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9kbGV5bmEvIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3JlbmRlcmVyLXNlcnZpY2UtdXBucC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWMyNWMzMDgyNjg0ZWI0Y2E4NzQ3NGI3NTI4YzZkYzE1IgotCi1QTkJMQUNLTElTVFtyZW5kZXJlci1zZXJ2aWNlLXVwbnBdID89ICJCUk9LRU46IGRvZXNuJ3QgYnVpbGQgd2l0aCBCIT1TICh0cnlpbmcgdG8gaW5zdGFsbCByZW5kZXJlcmNvbnNvbGUucHkgZnJvbSAke0J9IGluc3RlYWQgb2YgJHtTfSkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGxpYnNvdXAtMi40IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvJHtCUE59LmdpdCIKLVNSQ1JFViA9ICI0YTBiMWQ3Y2Q4ZTIyZDNjYjBlMDljNzdjMzQ0Y2VjY2JjYmJkMzRmIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSB0ZXN0L3JlbmRlcmVyY29uc29sZS5weSAke0R9JHtiaW5kaXJ9Ci19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLQotUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAicHl0aG9uLWRidXMgcHl0aG9uLWpzb24gcHl0aG9uLW1pc2MgcHl0aG9uLXBrZ3V0aWwgcHl0aG9uLXhtbCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSIKLSMgV2hlbiB3ZSBoYXZlIEdJLCBwYWNrYWdlIGNhcAotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9L3JlbmRlcmVyY29uc29sZS5weSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZhYWNfMS4yOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZhYWNfMS4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM5NDc3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9mYWFjXzEuMjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkZyZWV3YXJlIEFkdmFuY2VkIEF1ZGlvIENvZGVyIChNUEVHMi1BQUMsIE1QRUc0LUFBQykiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJmYWFjL2NvZGVyLmg7YmVnaW5saW5lPTU7ZW5kbGluZT0xNzttZDU9ZmExZmQ2YTVmYThjZGM4NzdkNjNhMTI1MzBkMjczZTAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mYWFjLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9idWlsZC1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkcmVzcy1nY2MtNi1uYXJyb3dpbmctZXJyb3JzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZnJvbnRlbmQtRml4LWZvcm1hdC1zdHJpbmctc2VjdXJpdHktZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tcDR2Mi1EZWZpbmUtX19TVFJJTkctaWYtY2RlZnMuaC1kb2VzLW5vdC1leGlzdC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgwNzYzNzI4ZDM5MmM3ZDc4OWNkZTI1NjE0Yzg3OGY2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1MTQxMTk5ZjRjZmIxN2Q3NDljMzZiYThjZmU0YjI1ZjgzOGRhNjdjMjJmMGZlYzQwMjI4YjZiOWMzZDE5ZGYiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LW1wNHYyIgotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IGxpYiR7QlBOfS1kZXYiCi0KLUZJTEVTXyR7UE59ID0gIiAke2JpbmRpcn0vZmFhYyAiCi1GSUxFU19saWIke1BOfSA9ICIgJHtsaWJkaXJ9L2xpYmZhYWMuc28uKiIKLUZJTEVTX2xpYiR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9L2ZhYWMuaCAke2luY2x1ZGVkaXJ9L2ZhYWNjZmcuaCAke2xpYmRpcn0vbGliZmFhYy5zbyAke2xpYmRpcn0vbGliZmFhYy5sYSIKLUZJTEVTX2xpYiR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGliZmFhYy5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmFhY18xLjI5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmFhY18xLjI5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NjVjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9mYWFjXzEuMjkuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJGcmVld2FyZSBBZHZhbmNlZCBBdWRpbyBDb2RlciAoTVBFRzItQUFDLCBNUEVHNC1BQUMpIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZmFhYy9jb2Rlci5oO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PWZhMWZkNmE1ZmE4Y2RjODc3ZDYzYTEyNTMwZDI3M2UwIgorCitpbmhlcml0IGF1dG90b29scworCitTUkNfVVJJID0gIiBcCisgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZhYWMvJHtCUH0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1tcDR2Mi1EZWZpbmUtX19TVFJJTkctaWYtY2RlZnMuaC1kb2VzLW5vdC1leGlzdC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ODYwMzcyMGY2NTUxODAwNTlkNjk3MGM1ODJhMzAwNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4Y2M3YjAzY2ViMjcyMjIyM2E2NDU3ZTk1ZDRjOTk0NzMxZDgwMjE0YTAzYmEzM2QxYWY3NmJhNTNmNGIzMTk3IgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1tcDR2MiIKKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSBsaWIke0JQTn0tZGV2IgorCitGSUxFU18ke1BOfSA9ICIgJHtiaW5kaXJ9L2ZhYWMgIgorRklMRVNfbGliJHtQTn0gPSAiICR7bGliZGlyfS8qLnNvLioiCitGSUxFU19saWIke1BOfS1kZXYgPSAiIFwKKyAgICAke2luY2x1ZGVkaXJ9IFwKKyAgICAke2xpYmRpcn0vKi5zbyBcCisgICAgJHtsaWJkaXJ9LyoubGEgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvMDAwMS1mcm9udGVuZC1GaXgtZm9ybWF0LXN0cmluZy1zZWN1cml0eS1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZpbGVzLzAwMDEtZnJvbnRlbmQtRml4LWZvcm1hdC1zdHJpbmctc2VjdXJpdHktZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ZTAwM2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvMDAwMS1mcm9udGVuZC1GaXgtZm9ybWF0LXN0cmluZy1zZWN1cml0eS1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gYzFkN2E4Yjk5MmRjMzZkMDAxMmNjM2Q1NGI3ZDNhYmY0YWQ0ZDVkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IE1hciAyMDE3IDIxOjMzOjAxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBmcm9udGVuZDogRml4IGZvcm1hdCBzdHJpbmcgc2VjdXJpdHkgZXJyb3IKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGZyb250ZW5kL21haW4uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2Zyb250ZW5kL21haW4uYyBiL2Zyb250ZW5kL21haW4uYwotaW5kZXggMDIxNDZhOC4uY2I5MzI5YyAxMDA2NDQKLS0tLSBhL2Zyb250ZW5kL21haW4uYwotKysrIGIvZnJvbnRlbmQvbWFpbi5jCi1AQCAtNzE1LDcgKzcxNSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgICAgICBicmVhazsKLSAjZW5kaWYKLSAgICAgICAgIGNhc2UgJ0wnOgotLSAgICAgICAgZnByaW50ZihzdGRlcnIsIGZhYWNfY29weXJpZ2h0X3N0cmluZyk7Ci0rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgZmFhY19jb3B5cmlnaHRfc3RyaW5nKTsKLSAgICAgICAgIGRpZU1lc3NhZ2UgPSBsaWNlbnNlOwotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgJ1gnOgotLS0gCi0yLjEyLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvMDAwMi1tcDR2Mi1EZWZpbmUtX19TVFJJTkctaWYtY2RlZnMuaC1kb2VzLW5vdC1leGlzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZpbGVzLzAwMDEtbXA0djItRGVmaW5lLV9fU1RSSU5HLWlmLWNkZWZzLmgtZG9lcy1ub3QtZXhpc3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZpbGVzLzAwMDItbXA0djItRGVmaW5lLV9fU1RSSU5HLWlmLWNkZWZzLmgtZG9lcy1ub3QtZXhpc3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZpbGVzLzAwMDEtbXA0djItRGVmaW5lLV9fU1RSSU5HLWlmLWNkZWZzLmgtZG9lcy1ub3QtZXhpc3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZpbGVzL2FkZHJlc3MtZ2NjLTYtbmFycm93aW5nLWVycm9ycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZpbGVzL2FkZHJlc3MtZ2NjLTYtbmFycm93aW5nLWVycm9ycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJmZGQ5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9maWxlcy9hZGRyZXNzLWdjYy02LW5hcnJvd2luZy1lcnJvcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0tLS0gZmFhYy0xLjI4L2NvbW1vbi9tcDR2Mi9hdG9tX3N0YW5kYXJkLmNwcC5vcmlnCTIwMTYtMDYtMTYgMDc6NTk6MjEuNjU3MDQwNzYxIC0wNDAwCi0rKysgZmFhYy0xLjI4L2NvbW1vbi9tcDR2Mi9hdG9tX3N0YW5kYXJkLmNwcAkyMDE2LTA2LTE2IDA4OjAxOjUwLjYxMzAzNjcyNCAtMDQwMAotQEAgLTIyLDE1ICsyMiwxNSBAQAotICNpbmNsdWRlICJtcDRjb21tb24uaCIKLSAjaW5jbHVkZSAiYXRvbXMuaCIKLSAKLS1zdGF0aWMgY29uc3QgY2hhciBuYW1lWzVdPXswMjUxLCduJywgJ2EnLCAnbScsICdcMCd9OwotLXN0YXRpYyBjb25zdCBjaGFyIGFydFs1XT17MDI1MSwnQScsICdSJywgJ1QnLCAnXDAnfTsKLS1zdGF0aWMgY29uc3QgY2hhciB3cnRbNV09ezAyNTEsJ3cnLCAncicsICd0JywgJ1wwJ307Ci0tc3RhdGljIGNvbnN0IGNoYXIgYWxiWzVdPXswMjUxLCdhJywgJ2wnLCAnYicsICdcMCd9OwotLXN0YXRpYyBjb25zdCBjaGFyIGRheVs1XT17MDI1MSwnZCcsICdhJywgJ3knLCAnXDAnfTsKLS1zdGF0aWMgY29uc3QgY2hhciB0b29bNV09ezAyNTEsJ3QnLCAnbycsICdvJywgJ1wwJ307Ci0tc3RhdGljIGNvbnN0IGNoYXIgY210WzVdPXswMjUxLCdjJywgJ20nLCAndCcsICdcMCd9OwotLXN0YXRpYyBjb25zdCBjaGFyIGdlbls1XT17MDI1MSwnZycsICdlJywgJ24nLCAnXDAnfTsKLS1zdGF0aWMgY29uc3QgY2hhciBncnBbNV09ezAyNTEsJ2cnLCAncicsICdwJywgJ1wwJ307Ci0rc3RhdGljIGNvbnN0IGNoYXIgbmFtZVs1XT17KGNoYXIpMDI1MSwnbicsICdhJywgJ20nLCAnXDAnfTsKLStzdGF0aWMgY29uc3QgY2hhciBhcnRbNV09eyhjaGFyKTAyNTEsJ0EnLCAnUicsICdUJywgJ1wwJ307Ci0rc3RhdGljIGNvbnN0IGNoYXIgd3J0WzVdPXsoY2hhcikwMjUxLCd3JywgJ3InLCAndCcsICdcMCd9OwotK3N0YXRpYyBjb25zdCBjaGFyIGFsYls1XT17KGNoYXIpMDI1MSwnYScsICdsJywgJ2InLCAnXDAnfTsKLStzdGF0aWMgY29uc3QgY2hhciBkYXlbNV09eyhjaGFyKTAyNTEsJ2QnLCAnYScsICd5JywgJ1wwJ307Ci0rc3RhdGljIGNvbnN0IGNoYXIgdG9vWzVdPXsoY2hhcikwMjUxLCd0JywgJ28nLCAnbycsICdcMCd9OwotK3N0YXRpYyBjb25zdCBjaGFyIGNtdFs1XT17KGNoYXIpMDI1MSwnYycsICdtJywgJ3QnLCAnXDAnfTsKLStzdGF0aWMgY29uc3QgY2hhciBnZW5bNV09eyhjaGFyKTAyNTEsJ2cnLCAnZScsICduJywgJ1wwJ307Ci0rc3RhdGljIGNvbnN0IGNoYXIgZ3JwWzVdPXsoY2hhcikwMjUxLCdnJywgJ3InLCAncCcsICdcMCd9OwotIAotIE1QNFN0YW5kYXJkQXRvbTo6TVA0U3RhbmRhcmRBdG9tIChjb25zdCBjaGFyICp0eXBlKSA6IE1QNEF0b20odHlwZSkKLSB7Ci0tLS0gZmFhYy0xLjI4L2NvbW1vbi9tcDR2Mi9tcDRhdG9tLmNwcC5vcmlnCTIwMTYtMDYtMTYgMDg6MDM6MDcuNzc3MDM0NjMzIC0wNDAwCi0rKysgZmFhYy0xLjI4L2NvbW1vbi9tcDR2Mi9tcDRhdG9tLmNwcAkyMDE2LTA2LTE2IDA4OjAzOjU0LjYyOTAzMzM2MyAtMDQwMAotQEAgLTI2NCwxMSArMjY0LDExIEBACi0gICAgICAgfQotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDAyNTE6Ci0tICAgICAgc3RhdGljIGNvbnN0IGNoYXIgbmFtZVs1XT17MDI1MSwnbicsICdhJywgJ20nLCAnXDAnfTsKLS0gICAgICBzdGF0aWMgY29uc3QgY2hhciBjbXRbNV09ezAyNTEsJ2MnLCAnbScsICd0JywgJ1wwJ307Ci0tICAgICAgc3RhdGljIGNvbnN0IGNoYXIgY3B5WzVdPXswMjUxLCdjJywgJ3AnLCAneScsICdcMCd9OwotLSAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGRlc1s1XT17MDI1MSwnZCcsICdlJywgJ3MnLCdcMCd9OwotLSAgICAgIHN0YXRpYyBjb25zdCBjaGFyIHByZFs1XT17MDI1MSwgJ3AnLCAncicsICdkJywgJ1wwJ307Ci0rICAgICAgc3RhdGljIGNvbnN0IGNoYXIgbmFtZVs1XT17KGNoYXIpMDI1MSwnbicsICdhJywgJ20nLCAnXDAnfTsKLSsgICAgICBzdGF0aWMgY29uc3QgY2hhciBjbXRbNV09eyhjaGFyKTAyNTEsJ2MnLCAnbScsICd0JywgJ1wwJ307Ci0rICAgICAgc3RhdGljIGNvbnN0IGNoYXIgY3B5WzVdPXsoY2hhcikwMjUxLCdjJywgJ3AnLCAneScsICdcMCd9OwotKyAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGRlc1s1XT17KGNoYXIpMDI1MSwnZCcsICdlJywgJ3MnLCdcMCd9OwotKyAgICAgIHN0YXRpYyBjb25zdCBjaGFyIHByZFs1XT17KGNoYXIpMDI1MSwgJ3AnLCAncicsICdkJywgJ1wwJ307Ci0gICAgICAgaWYgKEFUT01JRCh0eXBlKSA9PSBBVE9NSUQobmFtZSkgfHwKLSAJICBBVE9NSUQodHlwZSkgPT0gQVRPTUlEKGNtdCkgfHwKLSAJICBBVE9NSUQodHlwZSkgPT0gQVRPTUlEKGNweSkgfHwKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvYnVpbGQtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmlsZXMvYnVpbGQtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2NmZjhmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZpbGVzL2J1aWxkLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzMiArMCwwIEBACi1QYXRjaCBmaXhpbmcgYnVpbGQgZXJyb3IgYW5kIHdhcm5pbmdzLiBFcnJvciBjb25zaXN0ZWQgb2YgcmVkZWZpbmluZwotc3RyY2FzZXN0ciBmdW5jdGlvbiBmcm9tIHN0cmluZy5oLiBXYXJuaW5ncyBjb25zaXN0ZWQgb2YgZGVwcmVjYXRlZCBjb252ZXJzaW9ucwotb2Ygc3RyaW5nIGNvbnN0YW50cyB0byBjaGFyKiwgdXNpbmcgJyVsbHUnIGZvciB0eXBlIHVpbnQ2NF90ICh3aGljaCBvbiA2NCBiaXQKLXN5c3RlbXMsIGlzIGRlZmluZWQgYXMgdW5zaWduZWQgbG9uZyBpbnQgYnkgc3RkaW50LmgpLCBhbmQgdXNpbmcgJz09JyBmb3IKLWVxdWFsaXR5IG9mIHR3byBzdHJpbmdzLgotCi1QYXRjaCBvcmlnaW5hbGx5IGZyb20gRGViaWFuLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2NvbW1vbi9tcDR2Mi9tcGVnNGlwLmgKLSsrKyBiL2NvbW1vbi9tcDR2Mi9tcGVnNGlwLmgKLUBAIC0xMjAsMTQgKzEyMCw2IEBACi0gI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotIAotLSNpZmRlZiBfX2NwbHVzcGx1cwotLWV4dGVybiAiQyIgewotLSNlbmRpZgotLWNoYXIgKnN0cmNhc2VzdHIoY29uc3QgY2hhciAqaGF5c3RhY2ssIGNvbnN0IGNoYXIgKm5lZWRsZSk7Ci0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tfQotLSNlbmRpZgotLQotICNkZWZpbmUgT1BFTl9SRFdSIE9fUkRXUgotICNkZWZpbmUgT1BFTl9DUkVBVCBPX0NSRUFUIAotICNkZWZpbmUgT1BFTl9SRE9OTFkgT19SRE9OTFkKLUBAIC0xMzUsNyArMTI3LDYgQEAKLSAjZGVmaW5lIGNsb3Nlc29ja2V0IGNsb3NlCi0gI2RlZmluZSBJT1NCSU5BUlkgaW9zOjpiaW4KLSAKLS0jaWYgU0laRU9GX0xPTkcgPT0gOAotICNkZWZpbmUgTUFYX1VJTlQ2NCAtMUxVCi0gI2RlZmluZSBENjRGICJsZCIKLSAjZGVmaW5lIFU2NEYgICJsdSIKLUBAIC0xNDMsMTUgKzEzNCw2IEBACi0gCi0gI2RlZmluZSBUT19ENjQoYSkgKGEjI0wpCi0gI2RlZmluZSBUT19VNjQoYSkgKGEjI0xVKQotLSNlbHNlCi0tI2RlZmluZSBNQVhfVUlOVDY0IC0xTExVCi0tI2RlZmluZSBENjRGICJsbGQiCi0tI2RlZmluZSBVNjRGICAibGx1IgotLSNkZWZpbmUgWDY0RiAibGx4IgotLQotLSNkZWZpbmUgVE9fRDY0KGEpIChhIyNMTCkKLS0jZGVmaW5lIFRPX1U2NChhKSAoYSMjTExVKQotLSNlbmRpZgotIAotICNpZmRlZiBIQVZFX0ZQT1NfVF9fX1BPUwotICNkZWZpbmUgRlBPU19UT19WQVIoZnBvcywgdHlwZWQsIHZhcikgKHZhcikgPSAodHlwZWQpKChmcG9zKS5fX3BvcykKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtNCw2ICs0LDkgQEAKLSBBTV9JTklUX0FVVE9NQUtFCi0gCi0gQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKLStBSF9UT1AoWyNpZm5kZWYgQ09ORklHX0gKLSsjZGVmaW5lIENPTkZJR19IXSkKLStBSF9CT1RUT00oWyNlbmRpZiAvKiBDT05GSUdfSCAqL10pCi0gCi0gQUNfQVJHX1dJVEgoIG1wNHYyLCAgWyAgLS13aXRoLW1wNHYyICAgICAgICAgICAgY29tcGlsZSBsaWJtcDR2Ml0sV0lUSE1QNFYyPSR3aXRodmFsLCBXSVRITVA0VjI9eWVzKQotIEFDX0FSR19FTkFCTEUoIGRybSwgIFsgIC0tZW5hYmxlLWRybSAgICAgICAgICAgIERpZ2l0YWwgUmFkaW8gTW9uZGlhbGUgc3VwcG9ydF0sIGVuYWJsZV9kcm09JGVuYWJsZXZhbCwgZW5hYmxlX2RybT1ubykKLS0tLSBhL2NvbW1vbi9tcDR2Mi9hdG9tX2F2Y0MuY3BwCi0rKysgYi9jb21tb24vbXA0djIvYXRvbV9hdmNDLmNwcAotQEAgLTI5LDcgKzI5LDcgQEAKLSBjbGFzcyBTaXplVGFibGVQcm9wZXJ0eSA6IHB1YmxpYyBNUDRUYWJsZVByb3BlcnR5IAotIHsKLSAgcHVibGljOgotLSAgU2l6ZVRhYmxlUHJvcGVydHkoY2hhciAqbmFtZSwgTVA0SW50ZWdlclByb3BlcnR5ICpwQ291bnRQcm9wZXJ0eSkgOgotKyAgU2l6ZVRhYmxlUHJvcGVydHkoY29uc3QgY2hhciAqbmFtZSwgTVA0SW50ZWdlclByb3BlcnR5ICpwQ291bnRQcm9wZXJ0eSkgOgotICAgICBNUDRUYWJsZVByb3BlcnR5KG5hbWUsIHBDb3VudFByb3BlcnR5KSB7fTsKLSAgcHJvdGVjdGVkOgotICAgdm9pZCBSZWFkRW50cnkoTVA0RmlsZSAqcEZpbGUsIHVfaW50MzJfdCBpbmRleCkgewotLS0tIGEvY29tbW9uL21wNHYyL2F0b21fb2hkci5jcHAKLSsrKyBiL2NvbW1vbi9tcDR2Mi9hdG9tX29oZHIuY3BwCi1AQCAtMjEsNyArMjEsNyBAQAotICAgICAgIFxwYXJhbSB1c2VDb3VudGVkRm9ybWF0ICAgIGNvdW50ZWQgZm9ybWF0IGZsYWcuCi0gICAgICAgXHBhcmFtIHVzZVVuaWNvZGUgICAgICAgICAgdW5pY29kZSBmbGFnLgotICAgKi8KLS0JT2hkck1QNFN0cmluZ1Byb3BlcnR5KGNoYXIqIG5hbWUsIGJvb2wgdXNlQ291bnRlZEZvcm1hdCA9IGZhbHNlLAotKwlPaGRyTVA0U3RyaW5nUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgYm9vbCB1c2VDb3VudGVkRm9ybWF0ID0gZmFsc2UsCi0gICAgIGJvb2wgdXNlVW5pY29kZSA9IGZhbHNlKTogTVA0U3RyaW5nUHJvcGVydHkobmFtZSwgdXNlQ291bnRlZEZvcm1hdCwKLSAgICAgdXNlVW5pY29kZSkgewotICAgfQotLS0tIGEvY29tbW9uL21wNHYyL2F0b21fc3R6Mi5jcHAKLSsrKyBiL2NvbW1vbi9tcDR2Mi9hdG9tX3N0ejIuY3BwCi1AQCAtMzAsNyArMzAsNyBAQAotIGNsYXNzIE1QNEhhbGZTaXplVGFibGVQcm9wZXJ0eSA6IHB1YmxpYyBNUDRUYWJsZVByb3BlcnR5Ci0gewotIHB1YmxpYzoKLS0gIE1QNEhhbGZTaXplVGFibGVQcm9wZXJ0eShjaGFyICpuYW1lLCBNUDRJbnRlZ2VyUHJvcGVydHkgKnBDb3VudFByb3BlcnR5KSA6Ci0rICBNUDRIYWxmU2l6ZVRhYmxlUHJvcGVydHkoY29uc3QgY2hhciAqbmFtZSwgTVA0SW50ZWdlclByb3BlcnR5ICpwQ291bnRQcm9wZXJ0eSkgOgotICAgICBNUDRUYWJsZVByb3BlcnR5KG5hbWUsIHBDb3VudFByb3BlcnR5KSB7fTsKLSAKLSAgIC8vIFRoZSBjb3VudCBpcyBoYWxmIHRoZSBhY3R1YWwgc2l6ZQotLS0tIGEvY29tbW9uL21wNHYyL21wNGF0b20uY3BwCi0rKysgYi9jb21tb24vbXA0djIvbXA0YXRvbS5jcHAKLUBAIC04MDYsNyArODA2LDcgQEAKLSAJQWRkUHJvcGVydHkobmV3IE1QNEludGVnZXIyNFByb3BlcnR5KCJmbGFncyIpKTsKLSB9Ci0gCi0tdm9pZCBNUDRBdG9tOjpBZGRSZXNlcnZlZChjaGFyKiBuYW1lLCB1X2ludDMyX3Qgc2l6ZSkgCi0rdm9pZCBNUDRBdG9tOjpBZGRSZXNlcnZlZChjb25zdCBjaGFyKiBuYW1lLCB1X2ludDMyX3Qgc2l6ZSkKLSB7Ci0gCU1QNEJ5dGVzUHJvcGVydHkqIHBSZXNlcnZlZCA9IG5ldyBNUDRCeXRlc1Byb3BlcnR5KG5hbWUsIHNpemUpOyAKLSAJcFJlc2VydmVkLT5TZXRSZWFkT25seSgpOwotLS0tIGEvY29tbW9uL21wNHYyL21wNGF0b20uaAotKysrIGIvY29tbW9uL21wNHYyL21wNGF0b20uaAotQEAgLTIwNCw3ICsyMDQsNyBAQAotIAotIAl2b2lkIEFkZFZlcnNpb25BbmRGbGFncygpOwotIAotLQl2b2lkIEFkZFJlc2VydmVkKGNoYXIqIG5hbWUsIHVfaW50MzJfdCBzaXplKTsKLSsJdm9pZCBBZGRSZXNlcnZlZChjb25zdCBjaGFyKiBuYW1lLCB1X2ludDMyX3Qgc2l6ZSk7Ci0gCi0gCXZvaWQgRXhwZWN0Q2hpbGRBdG9tKGNvbnN0IGNoYXIqIG5hbWUsIAotIAkJYm9vbCBtYW5kYXRvcnksIGJvb2wgb25seU9uZSA9IHRydWUpOwotLS0tIGEvY29tbW9uL21wNHYyL21wNGZpbGUuY3BwCi0rKysgYi9jb21tb24vbXA0djIvbXA0ZmlsZS5jcHAKLUBAIC03MTgsNyArNzE4LDcgQEAKLSAJfQotIH0KLSAKLS12b2lkIE1QNEZpbGU6OlByb3RlY3RXcml0ZU9wZXJhdGlvbihjaGFyKiB3aGVyZSkKLSt2b2lkIE1QNEZpbGU6OlByb3RlY3RXcml0ZU9wZXJhdGlvbihjb25zdCBjaGFyKiB3aGVyZSkKLSB7Ci0gCWlmIChtX21vZGUgPT0gJ3InKSB7Ci0gCQl0aHJvdyBuZXcgTVA0RXJyb3IoIm9wZXJhdGlvbiBub3QgcGVybWl0dGVkIGluIHJlYWQgbW9kZSIsIHdoZXJlKTsKLUBAIC0xMjc0LDcgKzEyNzQsNyBAQAotIH0KLSAKLSAvLyBOVUxMIHRlcm1pbmF0ZWQgbGlzdCBvZiBicmFuZHMgd2hpY2ggcmVxdWlyZSB0aGUgSU9EUyBhdG9tCi0tY2hhciAqYnJhbmRzV2l0aElvZHNbXSA9IHsgIm1wNDIiLAotK2NvbnN0IGNoYXIgKmJyYW5kc1dpdGhJb2RzW10gPSB7ICJtcDQyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNvbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTH07Ci0gCi1AQCAtMjIxMSwxMSArMjIxMSwxMSBAQAotIAlmb3IgKHVfaW50MzJfdCBpID0gMDsgaSA8IG1fcFRyYWNrcy5TaXplKCk7IGkrKykgewotIAkJaWYgKCFzdHJjbXAobm9ybVR5cGUsIG1fcFRyYWNrc1tpXS0+R2V0VHlwZSgpKSkgewotIAkJCWlmIChzdWJUeXBlKSB7Ci0tCQkJCWlmIChub3JtVHlwZSA9PSBNUDRfQVVESU9fVFJBQ0tfVFlQRSkgewotKwkJCQlpZiAoIXN0cmNtcChub3JtVHlwZSxNUDRfQVVESU9fVFJBQ0tfVFlQRSkpIHsKLSAJCQkJCWlmIChzdWJUeXBlICE9IEdldFRyYWNrRXNkc09iamVjdFR5cGVJZChtX3BUcmFja3NbaV0tPkdldElkKCkpKSB7Ci0gCQkJCQkJY29udGludWU7Ci0gCQkJCQl9Ci0tCQkJCX0gZWxzZSBpZiAobm9ybVR5cGUgPT0gTVA0X1ZJREVPX1RSQUNLX1RZUEUpIHsKLSsJCQkJfSBlbHNlIGlmICghc3RyY21wKG5vcm1UeXBlLE1QNF9WSURFT19UUkFDS19UWVBFKSkgewotIAkJCQkJaWYgKHN1YlR5cGUgIT0gR2V0VHJhY2tFc2RzT2JqZWN0VHlwZUlkKG1fcFRyYWNrc1tpXS0+R2V0SWQoKSkpIHsKLSAJCQkJCQljb250aW51ZTsKLSAJCQkJCX0KLUBAIC0yMjc4LDExICsyMjc4LDExIEBACi0gICBmb3IgKHVfaW50MzJfdCBpID0gMDsgaSA8IG1fcFRyYWNrcy5TaXplKCk7IGkrKykgewotICAgICBpZiAoIXN0cmNtcChub3JtVHlwZSwgbV9wVHJhY2tzW2ldLT5HZXRUeXBlKCkpKSB7Ci0gICAgICAgaWYgKHN1YlR5cGUpIHsKLS0JaWYgKG5vcm1UeXBlID09IE1QNF9BVURJT19UUkFDS19UWVBFKSB7Ci0rCWlmICghc3RyY21wKG5vcm1UeXBlLE1QNF9BVURJT19UUkFDS19UWVBFKSkgewotIAkgIGlmIChzdWJUeXBlICE9IEdldFRyYWNrRXNkc09iamVjdFR5cGVJZChtX3BUcmFja3NbaV0tPkdldElkKCkpKSB7Ci0gCSAgICBjb250aW51ZTsKLSAJICB9Ci0tCX0gZWxzZSBpZiAobm9ybVR5cGUgPT0gTVA0X1ZJREVPX1RSQUNLX1RZUEUpIHsKLSsJfSBlbHNlIGlmICghc3RyY21wKG5vcm1UeXBlLE1QNF9WSURFT19UUkFDS19UWVBFKSkgewotIAkgIGlmIChzdWJUeXBlICE9IEdldFRyYWNrRXNkc09iamVjdFR5cGVJZChtX3BUcmFja3NbaV0tPkdldElkKCkpKSB7Ci0gCSAgICBjb250aW51ZTsKLSAJICB9Ci0tLS0gYS9jb21tb24vbXA0djIvbXA0ZmlsZS5oCi0rKysgYi9jb21tb24vbXA0djIvbXA0ZmlsZS5oCi1AQCAtNzAwLDcgKzcwMCw3IEBACi0gCWNvbnN0IGNoYXIqIFRlbXBGaWxlTmFtZSgpOwotIAl2b2lkIFJlbmFtZShjb25zdCBjaGFyKiBleGlzdGluZ0ZpbGVOYW1lLCBjb25zdCBjaGFyKiBuZXdGaWxlTmFtZSk7Ci0gCi0tCXZvaWQgUHJvdGVjdFdyaXRlT3BlcmF0aW9uKGNoYXIqIHdoZXJlKTsKLSsJdm9pZCBQcm90ZWN0V3JpdGVPcGVyYXRpb24oY29uc3QgY2hhciogd2hlcmUpOwotIAotIAl2b2lkIEZpbmRJbnRlZ2VyUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgCi0gCQlNUDRQcm9wZXJ0eSoqIHBwUHJvcGVydHksIHVfaW50MzJfdCogcEluZGV4ID0gTlVMTCk7Ci0tLS0gYS9jb21tb24vbXA0djIvbXA0cHJvcGVydHkuY3BwCi0rKysgYi9jb21tb24vbXA0djIvbXA0cHJvcGVydHkuY3BwCi1AQCAtMzEzLDcgKzMxMyw3IEBACi0gCi0gLy8gTVA0U3RyaW5nUHJvcGVydHkKLSAKLS1NUDRTdHJpbmdQcm9wZXJ0eTo6TVA0U3RyaW5nUHJvcGVydHkoY2hhciogbmFtZSwgCi0rTVA0U3RyaW5nUHJvcGVydHk6Ok1QNFN0cmluZ1Byb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsCi0gCWJvb2wgdXNlQ291bnRlZEZvcm1hdCwgYm9vbCB1c2VVbmljb2RlKQotIAk6IE1QNFByb3BlcnR5KG5hbWUpCi0gewotQEAgLTQyMCw3ICs0MjAsNyBAQAotIAotIC8vIE1QNEJ5dGVzUHJvcGVydHkKLSAKLS1NUDRCeXRlc1Byb3BlcnR5OjpNUDRCeXRlc1Byb3BlcnR5KGNoYXIqIG5hbWUsIHVfaW50MzJfdCB2YWx1ZVNpemUsCi0rTVA0Qnl0ZXNQcm9wZXJ0eTo6TVA0Qnl0ZXNQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLCB1X2ludDMyX3QgdmFsdWVTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQzMl90IGRlZmF1bHRWYWx1ZVNpemUpCi0gCTogTVA0UHJvcGVydHkobmFtZSkKLSB7Ci1AQCAtNTQ5LDcgKzU0OSw3IEBACi0gCi0gLy8gTVA0VGFibGVQcm9wZXJ0eQotIAotLU1QNFRhYmxlUHJvcGVydHk6Ok1QNFRhYmxlUHJvcGVydHkoY2hhciogbmFtZSwgTVA0SW50ZWdlclByb3BlcnR5KiBwQ291bnRQcm9wZXJ0eSkKLStNUDRUYWJsZVByb3BlcnR5OjpNUDRUYWJsZVByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIE1QNEludGVnZXJQcm9wZXJ0eSogcENvdW50UHJvcGVydHkpCi0gCTogTVA0UHJvcGVydHkobmFtZSkgCi0gewotIAltX3BDb3VudFByb3BlcnR5ID0gcENvdW50UHJvcGVydHk7Ci1AQCAtNzI1LDcgKzcyNSw3IEBACi0gCi0gLy8gTVA0RGVzY3JpcHRvclByb3BlcnR5Ci0gICAKLS1NUDREZXNjcmlwdG9yUHJvcGVydHk6Ok1QNERlc2NyaXB0b3JQcm9wZXJ0eShjaGFyKiBuYW1lLCAKLStNUDREZXNjcmlwdG9yUHJvcGVydHk6Ok1QNERlc2NyaXB0b3JQcm9wZXJ0eShjb25zdCBjaGFyKiBuYW1lLAotIAl1X2ludDhfdCB0YWdzU3RhcnQsIHVfaW50OF90IHRhZ3NFbmQsIGJvb2wgbWFuZGF0b3J5LCBib29sIG9ubHlPbmUpCi0gCTogTVA0UHJvcGVydHkobmFtZSkgCi0geyAKLS0tLSBhL2NvbW1vbi9tcDR2Mi9tcDRwcm9wZXJ0eS5oCi0rKysgYi9jb21tb24vbXA0djIvbXA0cHJvcGVydHkuaAotQEAgLTEwMCw3ICsxMDAsNyBAQAotIAotIGNsYXNzIE1QNEludGVnZXJQcm9wZXJ0eSA6IHB1YmxpYyBNUDRQcm9wZXJ0eSB7Ci0gcHJvdGVjdGVkOgotLQlNUDRJbnRlZ2VyUHJvcGVydHkoY2hhciogbmFtZSkKLSsJTVA0SW50ZWdlclByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUpCi0gCQk6IE1QNFByb3BlcnR5KG5hbWUpIHsgfTsKLSAKLSBwdWJsaWM6Ci1AQCAtMTE4LDcgKzExOCw3IEBACi0gI2RlZmluZSBNUDRJTlRFR0VSX1BST1BFUlRZX0RFQ0wyKGlzaXplLCB4c2l6ZSkgXAotIAljbGFzcyBNUDRJbnRlZ2VyIyN4c2l6ZSMjUHJvcGVydHkgOiBwdWJsaWMgTVA0SW50ZWdlclByb3BlcnR5IHsgXAotIAlwdWJsaWM6IFwKLS0JCU1QNEludGVnZXIjI3hzaXplIyNQcm9wZXJ0eShjaGFyKiBuYW1lKSBcCi0rCQlNUDRJbnRlZ2VyIyN4c2l6ZSMjUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSkgXAotIAkJCTogTVA0SW50ZWdlclByb3BlcnR5KG5hbWUpIHsgXAotIAkJCVNldENvdW50KDEpOyBcCi0gCQkJbV92YWx1ZXNbMF0gPSAwOyBcCi1AQCAtMTg4LDcgKzE4OCw3IEBACi0gCi0gY2xhc3MgTVA0Qml0ZmllbGRQcm9wZXJ0eSA6IHB1YmxpYyBNUDRJbnRlZ2VyNjRQcm9wZXJ0eSB7Ci0gcHVibGljOgotLQlNUDRCaXRmaWVsZFByb3BlcnR5KGNoYXIqIG5hbWUsIHVfaW50OF90IG51bUJpdHMpCi0rCU1QNEJpdGZpZWxkUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgdV9pbnQ4X3QgbnVtQml0cykKLSAJCTogTVA0SW50ZWdlcjY0UHJvcGVydHkobmFtZSkgewotIAkJQVNTRVJUKG51bUJpdHMgIT0gMCk7Ci0gCQlBU1NFUlQobnVtQml0cyA8PSA2NCk7Ci1AQCAtMjEzLDcgKzIxMyw3IEBACi0gCi0gY2xhc3MgTVA0RmxvYXQzMlByb3BlcnR5IDogcHVibGljIE1QNFByb3BlcnR5IHsKLSBwdWJsaWM6Ci0tCU1QNEZsb2F0MzJQcm9wZXJ0eShjaGFyKiBuYW1lKQotKwlNUDRGbG9hdDMyUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSkKLSAJCTogTVA0UHJvcGVydHkobmFtZSkgewotIAkJbV91c2VGaXhlZDE2Rm9ybWF0ID0gZmFsc2U7Ci0gCQltX3VzZUZpeGVkMzJGb3JtYXQgPSBmYWxzZTsKLUBAIC0yODAsNyArMjgwLDcgQEAKLSAKLSBjbGFzcyBNUDRTdHJpbmdQcm9wZXJ0eSA6IHB1YmxpYyBNUDRQcm9wZXJ0eSB7Ci0gcHVibGljOgotLQlNUDRTdHJpbmdQcm9wZXJ0eShjaGFyKiBuYW1lLCAKLSsJTVA0U3RyaW5nUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwKLSAJICBib29sIHVzZUNvdW50ZWRGb3JtYXQgPSBmYWxzZSwgYm9vbCB1c2VVbmljb2RlID0gZmFsc2UpOwotIAotIAl+TVA0U3RyaW5nUHJvcGVydHkoKTsKLUBAIC0zNTUsNyArMzU1LDcgQEAKLSAKLSBjbGFzcyBNUDRCeXRlc1Byb3BlcnR5IDogcHVibGljIE1QNFByb3BlcnR5IHsKLSBwdWJsaWM6Ci0tCU1QNEJ5dGVzUHJvcGVydHkoY2hhciogbmFtZSwgdV9pbnQzMl90IHZhbHVlU2l6ZSA9IDAsCi0rCU1QNEJ5dGVzUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSwgdV9pbnQzMl90IHZhbHVlU2l6ZSA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50MzJfdCBkZWZhdWx0VmFsdWVTaXplID0gMCk7Ci0gCi0gCX5NUDRCeXRlc1Byb3BlcnR5KCk7Ci1AQCAtNDE5LDcgKzQxOSw3IEBACi0gCi0gY2xhc3MgTVA0VGFibGVQcm9wZXJ0eSA6IHB1YmxpYyBNUDRQcm9wZXJ0eSB7Ci0gcHVibGljOgotLQlNUDRUYWJsZVByb3BlcnR5KGNoYXIqIG5hbWUsIE1QNEludGVnZXJQcm9wZXJ0eSogcENvdW50UHJvcGVydHkpOwotKwlNUDRUYWJsZVByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIE1QNEludGVnZXJQcm9wZXJ0eSogcENvdW50UHJvcGVydHkpOwotIAotIAl+TVA0VGFibGVQcm9wZXJ0eSgpOwotIAotQEAgLTQ2OSw3ICs0NjksNyBAQAotIAotIGNsYXNzIE1QNERlc2NyaXB0b3JQcm9wZXJ0eSA6IHB1YmxpYyBNUDRQcm9wZXJ0eSB7Ci0gcHVibGljOgotLQlNUDREZXNjcmlwdG9yUHJvcGVydHkoY2hhciogbmFtZSA9IE5VTEwsIAotKwlNUDREZXNjcmlwdG9yUHJvcGVydHkoY29uc3QgY2hhciogbmFtZSA9IE5VTEwsCi0gCSAgdV9pbnQ4X3QgdGFnc1N0YXJ0ID0gMCwgdV9pbnQ4X3QgdGFnc0VuZCA9IDAsCi0gCSAgYm9vbCBtYW5kYXRvcnkgPSBmYWxzZSwgYm9vbCBvbmx5T25lID0gZmFsc2UpOwotIAotQEAgLTUzMSw3ICs1MzEsNyBAQAotIAotIGNsYXNzIE1QNFFvc1F1YWxpZmllclByb3BlcnR5IDogcHVibGljIE1QNERlc2NyaXB0b3JQcm9wZXJ0eSB7Ci0gcHVibGljOgotLQlNUDRRb3NRdWFsaWZpZXJQcm9wZXJ0eShjaGFyKiBuYW1lID0gTlVMTCwgCi0rCU1QNFFvc1F1YWxpZmllclByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUgPSBOVUxMLAotIAkgIHVfaW50OF90IHRhZ3NTdGFydCA9IDAsIHVfaW50OF90IHRhZ3NFbmQgPSAwLAotIAkgIGJvb2wgbWFuZGF0b3J5ID0gZmFsc2UsIGJvb2wgb25seU9uZSA9IGZhbHNlKSA6Ci0gCU1QNERlc2NyaXB0b3JQcm9wZXJ0eShuYW1lLCB0YWdzU3RhcnQsIHRhZ3NFbmQsIG1hbmRhdG9yeSwgb25seU9uZSkgeyB9Ci0tLS0gYS9jb21tb24vbXA0djIvbXA0dHJhY2suY3BwCi0rKysgYi9jb21tb24vbXA0djIvbXA0dHJhY2suY3BwCi1AQCAtMTM2MCw3ICsxMzYwLDcgQEAKLSAgIH0KLSB9Ci0gCi0tTVA0QXRvbSogTVA0VHJhY2s6OkFkZEF0b20oY2hhciogcGFyZW50TmFtZSwgY2hhciogY2hpbGROYW1lKQotK01QNEF0b20qIE1QNFRyYWNrOjpBZGRBdG9tKGNvbnN0IGNoYXIqIHBhcmVudE5hbWUsIGNvbnN0IGNoYXIqIGNoaWxkTmFtZSkKLSB7Ci0gCU1QNEF0b20qIHBDaGlsZEF0b20gPSBNUDRBdG9tOjpDcmVhdGVBdG9tKGNoaWxkTmFtZSk7Ci0gCi0tLS0gYS9jb21tb24vbXA0djIvbXA0dHJhY2suaAotKysrIGIvY29tbW9uL21wNHYyL21wNHRyYWNrLmgKLUBAIC0xNjgsNyArMTY4LDcgQEAKLSAJdm9pZCBVcGRhdGVTeW5jU2FtcGxlcyhNUDRTYW1wbGVJZCBzYW1wbGVJZCwgCi0gCQlib29sIGlzU3luY1NhbXBsZSk7Ci0gCi0tCU1QNEF0b20qIEFkZEF0b20oY2hhciogcGFyZW50TmFtZSwgY2hhciogY2hpbGROYW1lKTsKLSsJTVA0QXRvbSogQWRkQXRvbShjb25zdCBjaGFyKiBwYXJlbnROYW1lLCBjb25zdCBjaGFyKiBjaGlsZE5hbWUpOwotIAotIAl2b2lkIFVwZGF0ZUR1cmF0aW9ucyhNUDREdXJhdGlvbiBkdXJhdGlvbik7Ci0gCU1QNER1cmF0aW9uIFRvTW92aWVEdXJhdGlvbihNUDREdXJhdGlvbiB0cmFja0R1cmF0aW9uKTsKLS0tLSBhL2NvbW1vbi9tcDR2Mi9vY2lkZXNjcmlwdG9ycy5jcHAKLSsrKyBiL2NvbW1vbi9tcDR2Mi9vY2lkZXNjcmlwdG9ycy5jcHAKLUBAIC0xNzEsNyArMTcxLDcgQEAKLSAKLSBjbGFzcyBNUDRDcmVhdG9yVGFibGVQcm9wZXJ0eSA6IHB1YmxpYyBNUDRUYWJsZVByb3BlcnR5IHsKLSBwdWJsaWM6Ci0tCU1QNENyZWF0b3JUYWJsZVByb3BlcnR5KGNoYXIqIG5hbWUsIE1QNEludGVnZXI4UHJvcGVydHkqIHBDb3VudFByb3BlcnR5KSA6Ci0rCU1QNENyZWF0b3JUYWJsZVByb3BlcnR5KGNvbnN0IGNoYXIqIG5hbWUsIE1QNEludGVnZXI4UHJvcGVydHkqIHBDb3VudFByb3BlcnR5KSA6Ci0gCQlNUDRUYWJsZVByb3BlcnR5KG5hbWUsIHBDb3VudFByb3BlcnR5KSB7Ci0gCX07Ci0gcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dlcmJlcmEvZmlsZXMvZ2VyYmVyYS5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dlcmJlcmEvZmlsZXMvZ2VyYmVyYS5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWEzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ2VyYmVyYS9maWxlcy9nZXJiZXJhLnNlcnZpY2UKQEAgLTAsMCArMSwxMyBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1TdGFydCBHZXJiZXJhLCBhbiBVUG5QIG1lZGlhIHNlcnZlcgorQWZ0ZXI9bXVsdGktdXNlci50YXJnZXQgbmV0d29yay1vbmxpbmUudGFyZ2V0CitXYW50cz1uZXR3b3JrLW9ubGluZS50YXJnZXQKKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9L3Vzci9iaW4vZ2VyYmVyYQorRW52aXJvbm1lbnQ9J0hPTUU9L3Jvb3QnCitUeXBlPXNpbXBsZQorUmVtYWluQWZ0ZXJFeGl0PXllcworCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dlcmJlcmEvZ2VyYmVyYV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ2VyYmVyYS9nZXJiZXJhX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzYzY2YxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dlcmJlcmEvZ2VyYmVyYV9naXQuYmIKQEAgLTAsMCArMSwzMiBAQAorRGVzY3JpcHRpb24gPSAiR2VyYmVyYSAtIEFuIFVQblAgbWVkaWEgc2VydmVyIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9MjVjZGVjOWFmZTNmMWYyNjIxMmVhZDZiZDJmN2ZhYzgiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92MDBkMDAvZ2VyYmVyYS5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgIGZpbGU6Ly9nZXJiZXJhLnNlcnZpY2UgXAorIgorCitQViA9ICIxLjArZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNDQzNWIxNjVkMTIxMTk1YWVmZDY3ZDAyODdmN2Y5MzQ5ZTE4MWQ0NSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJleHBhdCB6bGliIGN1cmwgbGlidXBucCBlMmZzcHJvZ3Mgc3FsaXRlMyAiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJnZXJiZXJhLnNlcnZpY2UiCisKK2luaGVyaXQgY21ha2Ugc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID0gIiIKK1BBQ0tBR0VDT05GSUdbdGFnbGliXSA9ICItRFdJVEhfVEFHTElCPVRSVUUsLURXSVRIX1RBR0xJQj1GQUxTRSx0YWdsaWIiCisKK0VYVFJBX09FQ01BS0UgPSAiLURXSVRIX0pTPUZBTFNFIC1EV0lUSF9NQUdJQz1GQUxTRSAtRFdJVEhfRVhJRj1GQUxTRSAtRExJQlVVSURfSU5DTFVERV9ESVJTPSR7U1RBR0lOR19JTkNESVJ9IC1ETElCVVVJRF9MSUJSQVJJRVM9LWx1dWlkIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vcm9vdC8uY29uZmlnLworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nZXJiZXJhLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vCit9CisKK0ZJTEVTXyR7UE59ICs9ICIvcm9vdC8uY29uZmlnLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hYWNkZWMtY2hlY2stY2hhbm5lbC1jb3VudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hYWNkZWMtY2hlY2stY2hhbm5lbC1jb3VudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhMGUxNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYWFjZGVjLWNoZWNrLWNoYW5uZWwtY291bnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1nc3QtZmZtcGVnOiBhYWNkZWM6IGNoZWNrIGNoYW5uZWwgY291bnQKLQotUHJldmVudCBvdXQgb2YgYXJyYXkgYWNjZXNzZXMKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgOTZmNDUyYWM2NDdkYWUzM2M1M2MyNDJlZjMyNjZiNjVhOWJlYWZiNikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy9hYWNkZWMuYyB8ICAgIDUgKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWFjZGVjLmMgYi9saWJhdmNvZGVjL2FhY2RlYy5jCi1pbmRleCAyMzkxNTNhLi42YzE3YzMzIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvYWFjZGVjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2FhY2RlYy5jCi1AQCAtOTE0LDYgKzkxNCwxMSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgYWFjX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICBpZiAoYXZjdHgtPmNoYW5uZWxzID4gTUFYX0NIQU5ORUxTKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIlRvbyBtYW55IGNoYW5uZWxzXG4iKTsKLSsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICB9Ci0rCi0gICAgIEFBQ19JTklUX1ZMQ19TVEFUSUMoIDAsIDMwNCk7Ci0gICAgIEFBQ19JTklUX1ZMQ19TVEFUSUMoIDEsIDI3MCk7Ci0gICAgIEFBQ19JTklUX1ZMQ19TVEFUSUMoIDIsIDU1MCk7Ci0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWFsYWMtZml4LW5iX3NhbXBsZXMtb3JkZXItY2FzZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hbGFjLWZpeC1uYl9zYW1wbGVzLW9yZGVyLWNhc2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwY2UwZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWFsYWMtZml4LW5iX3NhbXBsZXMtb3JkZXItY2FzZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gZTA4ODRlYWRmNmExNWU5MzE0MjEzMWI2OTVmNDg3NzZmOWEwYWMzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBTYXQsIDEwIE5vdiAyMDEyIDE3OjE0OjA0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsYWM6IGZpeCBuYl9zYW1wbGVzIDwgb3JkZXIgY2FzZQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCBlMDg4NGVhZGY2YTE1ZTkzMTQyMTMxYjY5NWY0ODc3NmY5YTBhYzMxIHJlbGVhc2UvMS4wCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGZkNGY0OTIzY2NlNmEyY2JmNGY0ODY0MGI0YWM3MDZlNjE0YTE1OTQpCi0tLS0KLSBsaWJhdmNvZGVjL2FsYWMuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxhYy5jIGIvbGliYXZjb2RlYy9hbGFjLmMKLWluZGV4IDljZDE3MzcuLmU4ZTg0NGEgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9hbGFjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2FsYWMuYwotQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgdm9pZCBwcmVkaWN0b3JfZGVjb21wcmVzc19maXJfYWRhCi0gCi0gICAgIC8qIHJlYWQgd2FybS11cCBzYW1wbGVzICovCi0gICAgIGlmIChwcmVkaWN0b3JfY29lZl9udW0gPiAwKQotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHByZWRpY3Rvcl9jb2VmX251bTsgaSsrKSB7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlZGljdG9yX2NvZWZfbnVtICYmIGkgPCBvdXRwdXRfc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgaW50MzJfdCB2YWw7Ci0gCi0gICAgICAgICAgICAgdmFsID0gYnVmZmVyX291dFtpXSArIGVycm9yX2J1ZmZlcltpKzFdOwotLS0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYWxzZGVjLWNoZWNrLWJsb2NrLWxlbmd0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hbHNkZWMtY2hlY2stYmxvY2stbGVuZ3RoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Mzk4MGY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hbHNkZWMtY2hlY2stYmxvY2stbGVuZ3RoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSA2ZGYwZDNlMjkxNmMyMjNkYmU0MjYyYmYxYjg3NmRmZjFjYjNmOTgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFdlZCwgMTIgRGVjIDIwMTIgMTI6Mjg6NDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWxzZGVjOiBjaGVjayBibG9jayBsZW5ndGgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Db21taXQgNmRmMGQzZTI5MTZjMjIzZGJlNDI2MmJmMWI4NzZkZmYxY2IzZjk4MCByZWxlYXNlLzEuMAotCi1GaXggd3JpdGluZyBvdmVyIHRoZSBlbmQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMGNlY2EyNjliNjZlYzEyYTIzYmYwOTA3YmQyYzIyMDUxM2NkYmYxNikKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvYWxzZGVjLmMgfCAxMCArKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxzZGVjLmMgYi9saWJhdmNvZGVjL2Fsc2RlYy5jCi1pbmRleCA0NmRkMGI0Li4xMDk1YjAxIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvYWxzZGVjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2Fsc2RlYy5jCi1AQCAtNTUyLDEyICs1NTIsMTUgQEAgc3RhdGljIHZvaWQgZ2V0X2Jsb2NrX3NpemVzKEFMU0RlY0NvbnRleHQgKmN0eCwgdW5zaWduZWQgaW50ICpkaXZfYmxvY2tzLAotIAotIC8qKiBSZWFkIHRoZSBibG9jayBkYXRhIGZvciBhIGNvbnN0YW50IGJsb2NrCi0gICovCi0tc3RhdGljIHZvaWQgcmVhZF9jb25zdF9ibG9ja19kYXRhKEFMU0RlY0NvbnRleHQgKmN0eCwgQUxTQmxvY2tEYXRhICpiZCkKLStzdGF0aWMgaW50IHJlYWRfY29uc3RfYmxvY2tfZGF0YShBTFNEZWNDb250ZXh0ICpjdHgsIEFMU0Jsb2NrRGF0YSAqYmQpCi0gewotICAgICBBTFNTcGVjaWZpY0NvbmZpZyAqc2NvbmYgPSAmY3R4LT5zY29uZjsKLSAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4ICAgID0gY3R4LT5hdmN0eDsKLSAgICAgR2V0Qml0Q29udGV4dCAqZ2IgICAgICAgID0gJmN0eC0+Z2I7Ci0gCi0rICAgIGlmIChiZC0+YmxvY2tfbGVuZ3RoIDw9IDApCi0rICAgICAgICByZXR1cm4gLTE7Ci0rCi0gICAgICpiZC0+cmF3X3NhbXBsZXMgPSAwOwotICAgICAqYmQtPmNvbnN0X2Jsb2NrID0gZ2V0X2JpdHMxKGdiKTsgICAgLy8gMSA9IGNvbnN0YW50IHZhbHVlLCAwID0gemVybyBibG9jayAoc2lsZW5jZSkKLSAgICAgYmQtPmpzX2Jsb2NrcyAgICA9IGdldF9iaXRzMShnYik7Ci1AQCAtNTcyLDYgKzU3NSw4IEBAIHN0YXRpYyB2b2lkIHJlYWRfY29uc3RfYmxvY2tfZGF0YShBTFNEZWNDb250ZXh0ICpjdHgsIEFMU0Jsb2NrRGF0YSAqYmQpCi0gCi0gICAgIC8vIGVuc3VyZSBjb25zdGFudCBibG9jayBkZWNvZGluZyBieSByZXVzaW5nIHRoaXMgZmllbGQKLSAgICAgKmJkLT5jb25zdF9ibG9jayA9IDE7Ci0rCi0rICAgIHJldHVybiAwOwotIH0KLSAKLSAKLUBAIC05NzEsNyArOTc2LDggQEAgc3RhdGljIGludCByZWFkX2Jsb2NrKEFMU0RlY0NvbnRleHQgKmN0eCwgQUxTQmxvY2tEYXRhICpiZCkKLSAgICAgICAgIGlmIChyZWFkX3Zhcl9ibG9ja19kYXRhKGN0eCwgYmQpKQotICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgfSBlbHNlIHsKLS0gICAgICAgIHJlYWRfY29uc3RfYmxvY2tfZGF0YShjdHgsIGJkKTsKLSsgICAgICAgIGlmIChyZWFkX2NvbnN0X2Jsb2NrX2RhdGEoY3R4LCBiZCkgPCAwKQotKyAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgfQotIAotICAgICByZXR1cm4gMDsKLS0tIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF0cmFjM2RlYy1DaGVjay1jb2RpbmctbW9kZS1hZ2FpbnN0LWNoYW5uZWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF0cmFjM2RlYy1DaGVjay1jb2RpbmctbW9kZS1hZ2FpbnN0LWNoYW5uZWxzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmNiNWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdHJhYzNkZWMtQ2hlY2stY29kaW5nLW1vZGUtYWdhaW5zdC1jaGFubmVscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gMjUwMjkxNGM1ZjhlYjc3NjU5ZDdjMDg2ODM5Njg2MjU1N2E2MzI0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBGcmksIDkgTm92IDIwMTIgMTM6MjY6MjAgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXRyYWMzZGVjOiBDaGVjayBjb2RpbmcgbW9kZSBhZ2FpbnN0IGNoYW5uZWxzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCAyNTAyOTE0YzVmOGViNzc2NTlkN2MwODY4Mzk2ODYyNTU3YTYzMjQ1IHJlbGVhc2UvMS4wCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDEzNDUxZjU1MjBjZTZiMGFmZGU4NjFiMjI4NWRkYTY1OWY4ZDRmYjQpCi0KLUNvbmZsaWN0czoKLQotCWxpYmF2Y29kZWMvYXRyYWMzLmMKLS0tLQotIGxpYmF2Y29kZWMvYXRyYWMzLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hdHJhYzMuYyBiL2xpYmF2Y29kZWMvYXRyYWMzLmMKLWluZGV4IDdkMDc2YmUuLjFkYTRjNzggMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9hdHJhYzMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvYXRyYWMzLmMKLUBAIC05NTUsNiArOTU1LDExIEBAIHN0YXRpYyBhdl9jb2xkIGludCBhdHJhYzNfZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotICAgICB9Ci0gICAgIC8qIENoZWNrIHRoZSBleHRyYWRhdGEuICovCi0gCi0rICAgIGlmIChxLT5jb2RpbmdNb2RlID09IEpPSU5UX1NURVJFTyAmJiBhdmN0eC0+Y2hhbm5lbHMgPCAyKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgY29kaW5nIG1vZGVcbiIpOwotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgIH0KLSsKLSAgICAgaWYgKHEtPmF0cmFjM3ZlcnNpb24gIT0gNCkgewotICAgICAgICAgYXZfbG9nKGF2Y3R4LEFWX0xPR19FUlJPUiwiVmVyc2lvbiAlZCAhPSA0LlxuIixxLT5hdHJhYzN2ZXJzaW9uKTsKLSAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotLS0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1kc3B1dGlsLWZpeC1zaWduZWRuZXNzLWluLXNpemVvZi1jb21wYXJpc3Npby5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLWRzcHV0aWwtZml4LXNpZ25lZG5lc3MtaW4tc2l6ZW9mLWNvbXBhcmlzc2lvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWZhNTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLWRzcHV0aWwtZml4LXNpZ25lZG5lc3MtaW4tc2l6ZW9mLWNvbXBhcmlzc2lvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBhOTlhZmY0ZTRiYmVmOGU2NGI1MWYyNjdjZDE3NjkyMTRlMWI0ZTgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IEZyaSwgMzAgQXVnIDIwMTMgMjM6NDA6NDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9kc3B1dGlsOiBmaXggc2lnbmVkbmVzcyBpbiBzaXplb2YoKSBjb21wYXJpc3Npb25zCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA0NTRhMTFhMWM5YzY4NmM3OGFhOTc5NTQzMDZmYjYzNDUzMjk5NzYwKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL2RzcHV0aWwuYyB8ICAgIDQgKystLQotIDEgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9kc3B1dGlsLmMgYi9saWJhdmNvZGVjL2RzcHV0aWwuYwotaW5kZXggNTNkYzJlYi4uNjI2NDgzMiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2RzcHV0aWwuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvZHNwdXRpbC5jCi1AQCAtMTkxMiw3ICsxOTEyLDcgQEAgdm9pZCBmZl9zZXRfY21wKERTUENvbnRleHQqIGMsIG1lX2NtcF9mdW5jICpjbXAsIGludCB0eXBlKXsKLSAKLSBzdGF0aWMgdm9pZCBhZGRfYnl0ZXNfYyh1aW50OF90ICpkc3QsIHVpbnQ4X3QgKnNyYywgaW50IHcpewotICAgICBsb25nIGk7Ci0tICAgIGZvcihpPTA7IGk8PXctc2l6ZW9mKGxvbmcpOyBpKz1zaXplb2YobG9uZykpewotKyAgICBmb3IoaT0wOyBpPD13LShpbnQpc2l6ZW9mKGxvbmcpOyBpKz1zaXplb2YobG9uZykpewotICAgICAgICAgbG9uZyBhID0gKihsb25nKikoc3JjK2kpOwotICAgICAgICAgbG9uZyBiID0gKihsb25nKikoZHN0K2kpOwotICAgICAgICAgKihsb25nKikoZHN0K2kpID0gKChhJnBiXzdmKSArIChiJnBiXzdmKSkgXiAoKGFeYikmcGJfODApOwotQEAgLTE5MzcsNyArMTkzNyw3IEBAIHN0YXRpYyB2b2lkIGRpZmZfYnl0ZXNfYyh1aW50OF90ICpkc3QsIHVpbnQ4X3QgKnNyYzEsIHVpbnQ4X3QgKnNyYzIsIGludCB3KXsKLSAgICAgICAgIH0KLSAgICAgfWVsc2UKLSAjZW5kaWYKLS0gICAgZm9yKGk9MDsgaTw9dy1zaXplb2YobG9uZyk7IGkrPXNpemVvZihsb25nKSl7Ci0rICAgIGZvcihpPTA7IGk8PXctKGludClzaXplb2YobG9uZyk7IGkrPXNpemVvZihsb25nKSl7Ci0gICAgICAgICBsb25nIGEgPSAqKGxvbmcqKShzcmMxK2kpOwotICAgICAgICAgbG9uZyBiID0gKihsb25nKikoc3JjMitpKTsKLSAgICAgICAgICoobG9uZyopKGRzdCtpKSA9ICgoYXxwYl84MCkgLSAoYiZwYl83ZikpIF4gKChhXmJecGJfODApJnBiXzgwKTsKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1tc3JsZS11c2UtYXZfaW1hZ2VfZ2V0X2xpbmVzaXplLXRvLWNhbGN1bGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLW1zcmxlLXVzZS1hdl9pbWFnZV9nZXRfbGluZXNpemUtdG8tY2FsY3VsYXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGEzZmIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLW1zcmxlLXVzZS1hdl9pbWFnZV9nZXRfbGluZXNpemUtdG8tY2FsY3VsYXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSA1NzNkNWZkZWRhZTcyYmY1OWQ4YzBiMDc2NmZkZWUxNzEwNjNkMzZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFN1biwgMTYgRmViIDIwMTQgMjM6MDg6NTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9tc3JsZTogdXNlIGF2X2ltYWdlX2dldF9saW5lc2l6ZSgpIHRvIGNhbGN1bGF0ZSB0aGUKLSBsaW5lc2l6ZQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCA1NzNkNWZkZWRhZTcyYmY1OWQ4YzBiMDc2NmZkZWUxNzEwNjNkMzZmIHJlbGVhc2UvMC45Ci0KLUZpeGVzIG91dCBvZiBhcnJheSBhY2Nlc3MKLUZpeGVzOiAxNGE3NGEwYTJkYzY3ZWRlNTQzZjBlMzVkODM0ZmJiZS1hc2FuX2hlYXAtb29iXzQ5NTcyY181NTZfY292XzIxNTQ2NjQ0NF80NF8wMDFfZW5naW5lX3Jvb20ubW92Ci1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjOTE5ZTFjYTJlY2ZjNDdkNzk2MzgyOTczYmEwZTQ4YjhmNmY5MmEyKQotCi1Db25mbGljdHM6Ci0KLQlsaWJhdmNvZGVjL21zcmxlLmMKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGJjMWM4ZWM1ZTY1MDk4ZmQyY2NkODQ1NmY2NjcxNTFkZmM5Y2RhNDIpCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL21zcmxlLmMgfCAgICAzICsrLQotIDEgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tc3JsZS5jIGIvbGliYXZjb2RlYy9tc3JsZS5jCi1pbmRleCAzMDE1OWJiLi5jMzlhZTdiIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbXNybGUuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbXNybGUuYwotQEAgLTM1LDYgKzM1LDcgQEAKLSAjaW5jbHVkZSAiYXZjb2RlYy5oIgotICNpbmNsdWRlICJkc3B1dGlsLmgiCi0gI2luY2x1ZGUgIm1zcmxlZGVjLmgiCi0rI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgotIAotIHR5cGVkZWYgc3RydWN0IE1zcmxlQ29udGV4dCB7Ci0gICAgIEFWQ29kZWNDb250ZXh0ICphdmN0eDsKLUBAIC0xMDcsNyArMTA4LDcgQEAgc3RhdGljIGludCBtc3JsZV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotIAotICAgICAvKiBGSVhNRSBob3cgdG8gY29ycmVjdGx5IGRldGVjdCBSTEUgPz8/ICovCi0gICAgIGlmIChhdmN0eC0+aGVpZ2h0ICogaXN0cmlkZSA9PSBhdnBrdC0+c2l6ZSkgeyAvKiBhc3N1bWUgdW5jb21wcmVzc2VkICovCi0tICAgICAgICBpbnQgbGluZXNpemUgPSBhdmN0eC0+d2lkdGggKiBhdmN0eC0+Yml0c19wZXJfY29kZWRfc2FtcGxlIC8gODsKLSsgICAgICAgIGludCBsaW5lc2l6ZSA9IGF2X2ltYWdlX2dldF9saW5lc2l6ZShhdmN0eC0+cGl4X2ZtdCwgYXZjdHgtPndpZHRoLCAwKTsKLSAgICAgICAgIHVpbnQ4X3QgKnB0ciA9IHMtPmZyYW1lLmRhdGFbMF07Ci0gICAgICAgICB1aW50OF90ICpidWYgPSBhdnBrdC0+ZGF0YSArIChhdmN0eC0+aGVpZ2h0LTEpKmlzdHJpZGU7Ci0gICAgICAgICBpbnQgaSwgajsKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1wYXJzZXItcmVzZXQtaW5kZXhlcy1vbi1yZWFsbG9jLWZhaWx1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1wYXJzZXItcmVzZXQtaW5kZXhlcy1vbi1yZWFsbG9jLWZhaWx1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjY1ODMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Y29kZWMtcGFyc2VyLXJlc2V0LWluZGV4ZXMtb24tcmVhbGxvYy1mYWlsdXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotZ3N0LWZmbXBlZzogYXZjb2RlYy9wYXJzZXI6IHJlc2V0IGluZGV4ZXMgb24gcmVhbGxvYyBmYWlsdXJlCi0KLUZpeGVzIFRpY2tldDI5ODIKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGYzMTAxMWU5YWJmYjJhZTc1YmIzMmJjNDRlMmMzNDE5NGM4ZGM0MGEpCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliYXZjb2RlYy9wYXJzZXIuYyB8ICAgMTAgKysrKysrKy0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9wYXJzZXIuYyBiL2xpYmF2Y29kZWMvcGFyc2VyLmMKLWluZGV4IDJjNmRlNmUuLjY2ZWNhMDYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9wYXJzZXIuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcGFyc2VyLmMKLUBAIC0yNDEsOCArMjQxLDEwIEBAIGludCBmZl9jb21iaW5lX2ZyYW1lKFBhcnNlQ29udGV4dCAqcGMsIGludCBuZXh0LCBjb25zdCB1aW50OF90ICoqYnVmLCBpbnQgKmJ1Zl9zCi0gICAgIGlmKG5leHQgPT0gRU5EX05PVF9GT1VORCl7Ci0gICAgICAgICB2b2lkKiBuZXdfYnVmZmVyID0gYXZfZmFzdF9yZWFsbG9jKHBjLT5idWZmZXIsICZwYy0+YnVmZmVyX3NpemUsICgqYnVmX3NpemUpICsgcGMtPmluZGV4ICsgRkZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7Ci0gCi0tICAgICAgICBpZighbmV3X2J1ZmZlcikKLSsgICAgICAgIGlmKCFuZXdfYnVmZmVyKSB7Ci0rICAgICAgICAgICAgcGMtPmluZGV4ID0gMDsKLSAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotKyAgICAgICAgfQotICAgICAgICAgcGMtPmJ1ZmZlciA9IG5ld19idWZmZXI7Ci0gICAgICAgICBtZW1jcHkoJnBjLT5idWZmZXJbcGMtPmluZGV4XSwgKmJ1ZiwgKmJ1Zl9zaXplKTsKLSAgICAgICAgIHBjLT5pbmRleCArPSAqYnVmX3NpemU7Ci1AQCAtMjU1LDkgKzI1NywxMSBAQCBpbnQgZmZfY29tYmluZV9mcmFtZShQYXJzZUNvbnRleHQgKnBjLCBpbnQgbmV4dCwgY29uc3QgdWludDhfdCAqKmJ1ZiwgaW50ICpidWZfcwotICAgICAvKiBhcHBlbmQgdG8gYnVmZmVyICovCi0gICAgIGlmKHBjLT5pbmRleCl7Ci0gICAgICAgICB2b2lkKiBuZXdfYnVmZmVyID0gYXZfZmFzdF9yZWFsbG9jKHBjLT5idWZmZXIsICZwYy0+YnVmZmVyX3NpemUsIG5leHQgKyBwYy0+aW5kZXggKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKTsKLS0KLS0gICAgICAgIGlmKCFuZXdfYnVmZmVyKQotKyAgICAgICAgaWYoIW5ld19idWZmZXIpIHsKLSsgICAgICAgICAgICBwYy0+b3ZlcnJlYWRfaW5kZXggPQotKyAgICAgICAgICAgIHBjLT5pbmRleCA9IDA7Ci0gICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKLSsgICAgICAgIH0KLSAgICAgICAgIHBjLT5idWZmZXIgPSBuZXdfYnVmZmVyOwotICAgICAgICAgaWYgKG5leHQgPiAtRkZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSkKLSAgICAgICAgICAgICBtZW1jcHkoJnBjLT5idWZmZXJbcGMtPmluZGV4XSwgKmJ1ZiwKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1ycHphLVBlcmZvcm0tcG9pbnRlci1hZHZhbmNlLWFuZC1jaGVja3MtYmVmby5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLXJwemEtUGVyZm9ybS1wb2ludGVyLWFkdmFuY2UtYW5kLWNoZWNrcy1iZWZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjZlYjQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmNvZGVjLXJwemEtUGVyZm9ybS1wb2ludGVyLWFkdmFuY2UtYW5kLWNoZWNrcy1iZWZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotZ3N0LWZmbXBlZzogYXZjb2RlYy9ycHphOiBQZXJmb3JtIHBvaW50ZXIgYWR2YW5jZSBhbmQgY2hlY2tzIGJlZm9yZQotIHVzaW5nIHRoZSBwb2ludGVycwotCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzZXMKLUZpeGVzIFRpY2tldDI4NTAKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDM4MTlkYjc0NWRhMmFjN2ZiM2ZhYWNiMTE2Nzg4YzMyZjQ3NTNmMzQpCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLVNpbmdlZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliYXZjb2RlYy9ycHphLmMgfCAgICA4ICsrKystLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3JwemEuYyBiL2xpYmF2Y29kZWMvcnB6YS5jCi1pbmRleCA2MzViNDA2Li5mMjkxYTk1IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcnB6YS5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9ycHphLmMKLUBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyB2b2lkIHJwemFfZGVjb2RlX3N0cmVhbShScHphQ29udGV4dCAqcykKLSAgICAgdW5zaWduZWQgc2hvcnQgKnBpeGVscyA9ICh1bnNpZ25lZCBzaG9ydCAqKXMtPmZyYW1lLmRhdGFbMF07Ci0gCi0gICAgIGludCByb3dfcHRyID0gMDsKLS0gICAgaW50IHBpeGVsX3B0ciA9IDA7Ci0rICAgIGludCBwaXhlbF9wdHIgPSAtNDsKLSAgICAgaW50IGJsb2NrX3B0cjsKLSAgICAgaW50IHBpeGVsX3gsIHBpeGVsX3k7Ci0gICAgIGludCB0b3RhbF9ibG9ja3M7Ci1AQCAtMTM5LDYgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIHJwemFfZGVjb2RlX3N0cmVhbShScHphQ29udGV4dCAqcykKLSAgICAgICAgICAgICBjb2xvckEgPSBBVl9SQjE2ICgmcy0+YnVmW3N0cmVhbV9wdHJdKTsKLSAgICAgICAgICAgICBzdHJlYW1fcHRyICs9IDI7Ci0gICAgICAgICAgICAgd2hpbGUgKG5fYmxvY2tzLS0pIHsKLSsgICAgICAgICAgICAgICAgQURWQU5DRV9CTE9DSygpCi0gICAgICAgICAgICAgICAgIGJsb2NrX3B0ciA9IHJvd19wdHIgKyBwaXhlbF9wdHI7Ci0gICAgICAgICAgICAgICAgIGZvciAocGl4ZWxfeSA9IDA7IHBpeGVsX3kgPCA0OyBwaXhlbF95KyspIHsKLSAgICAgICAgICAgICAgICAgICAgIGZvciAocGl4ZWxfeCA9IDA7IHBpeGVsX3ggPCA0OyBwaXhlbF94KyspewotQEAgLTE0Nyw3ICsxNDgsNiBAQCBzdGF0aWMgdm9pZCBycHphX2RlY29kZV9zdHJlYW0oUnB6YUNvbnRleHQgKnMpCi0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICBibG9ja19wdHIgKz0gcm93X2luYzsKLSAgICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICBBRFZBTkNFX0JMT0NLKCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGJyZWFrOwotIAotQEAgLTE4NCw2ICsxODQsNyBAQCBzdGF0aWMgdm9pZCBycHphX2RlY29kZV9zdHJlYW0oUnB6YUNvbnRleHQgKnMpCi0gICAgICAgICAgICAgY29sb3I0WzJdIHw9ICgoMjEgKiB0YSArIDExICogdGIpID4+IDUpOwotIAotICAgICAgICAgICAgIHdoaWxlIChuX2Jsb2Nrcy0tKSB7Ci0rICAgICAgICAgICAgICAgIEFEVkFOQ0VfQkxPQ0soKTsKLSAgICAgICAgICAgICAgICAgYmxvY2tfcHRyID0gcm93X3B0ciArIHBpeGVsX3B0cjsKLSAgICAgICAgICAgICAgICAgZm9yIChwaXhlbF95ID0gMDsgcGl4ZWxfeSA8IDQ7IHBpeGVsX3krKykgewotICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzLT5idWZbc3RyZWFtX3B0cisrXTsKLUBAIC0xOTQsMTIgKzE5NSwxMiBAQCBzdGF0aWMgdm9pZCBycHphX2RlY29kZV9zdHJlYW0oUnB6YUNvbnRleHQgKnMpCi0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICBibG9ja19wdHIgKz0gcm93X2luYzsKLSAgICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICBBRFZBTkNFX0JMT0NLKCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyogRmlsbCBibG9jayB3aXRoIDE2IGNvbG9ycyAqLwotICAgICAgICAgY2FzZSAweDAwOgotKyAgICAgICAgICAgIEFEVkFOQ0VfQkxPQ0soKTsKLSAgICAgICAgICAgICBibG9ja19wdHIgPSByb3dfcHRyICsgcGl4ZWxfcHRyOwotICAgICAgICAgICAgIGZvciAocGl4ZWxfeSA9IDA7IHBpeGVsX3kgPCA0OyBwaXhlbF95KyspIHsKLSAgICAgICAgICAgICAgICAgZm9yIChwaXhlbF94ID0gMDsgcGl4ZWxfeCA8IDQ7IHBpeGVsX3grKyl7Ci1AQCAtMjEzLDcgKzIxNCw2IEBAIHN0YXRpYyB2b2lkIHJwemFfZGVjb2RlX3N0cmVhbShScHphQ29udGV4dCAqcykKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBibG9ja19wdHIgKz0gcm93X2luYzsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgQURWQU5DRV9CTE9DSygpOwotICAgICAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyogVW5rbm93biBvcGNvZGUgKi8KLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1zbWMtZml4LW9mZi1ieS0xLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Y29kZWMtc21jLWZpeC1vZmYtYnktMS1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NhNmZjNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtYXZjb2RlYy1zbWMtZml4LW9mZi1ieS0xLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBjMTdhMGFkMWRmMTVhOTRkMGIxMjM5YWRjMmFmYjU5M2JkZjBhMTUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IEZyaSwgMyBPY3QgMjAxNCAyMjo1MDo0NSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gYXZjb2RlYy9zbWM6IGZpeCBvZmYgYnkgMSBlcnJvcgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUZpeGVzIG91dCBvZiBhcnJheSBhY2Nlc3MKLUZpeGVzOiBhc2FuX2hlYXAtb29iXzE2ODViZjBfNV9hc2FuX2hlYXAtb29iXzFmMzUxMTZfNDMwX3NtYy5tb3YKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy9zbWMuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3NtYy5jIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvc21jLmMKLWluZGV4IDNjZDVlNTMuLmRlYzlmNzEgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9zbWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvc21jLmMKLUBAIC02OSw3ICs2OSw3IEBAIHR5cGVkZWYgc3RydWN0IFNtY0NvbnRleHQgewotICAgICAgICAgcm93X3B0ciArPSBzdHJpZGUgKiA0OyBcCi0gICAgIH0gXAotICAgICB0b3RhbF9ibG9ja3MtLTsgXAotLSAgICBpZiAodG90YWxfYmxvY2tzIDwgMCkgXAotKyAgICBpZiAodG90YWxfYmxvY2tzIDwgMCArICEhbl9ibG9ja3MpIFwKLSAgICAgeyBcCi0gICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19JTkZPLCAid2FybmluZzogYmxvY2sgY291bnRlciBqdXN0IHdlbnQgbmVnYXRpdmUgKHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4pXG4iKTsgXAotICAgICAgICAgcmV0dXJuOyBcCi0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1hdmZvcm1hdC1tcGVndHNlbmMtQ2hlY2stZGF0YS1hcnJheS1zaXplLWluLW1wZWd0c193LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Zm9ybWF0LW1wZWd0c2VuYy1DaGVjay1kYXRhLWFycmF5LXNpemUtaW4tbXBlZ3RzX3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YmI2NmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWF2Zm9ybWF0LW1wZWd0c2VuYy1DaGVjay1kYXRhLWFycmF5LXNpemUtaW4tbXBlZ3RzX3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIDEyNzcwNzAxODU2YTA1YjZiM2NkNzA2ZjcwOGY4ZTlhNGU4YTEzMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogVGh1LCAxMyBGZWIgMjAxNCAxMzo1OTo1MSArMDEwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9tcGVndHNlbmM6IENoZWNrIGRhdGEgYXJyYXkgc2l6ZSBpbgotIG1wZWd0c193cml0ZV9wbXQoKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNPbW1pdCAxMjc3MDcwMTg1NmEwNWI2YjNjZDcwNmY3MDhmOGU5YTRlOGExMzM2IHJlbGVhc2UvMC4xMQotCi1QcmV2ZW50cyBvdXQgb2YgYXJyYXkgd3JpdGVzCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA4NDJiNmMxNGJjZmMxYzVkYTFhMmQyODhmZDY1Mzg2ZWI4YzE1OGFkKQotCi1Db25mbGljdHM6Ci0KLQlsaWJhdmZvcm1hdC9tcGVndHNlbmMuYwotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZTg3ZGUzZjUwYjc2NTEzNDU4OGQwYjA0OGMzMmVkNGI4YWNjMTZmYikKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Zm9ybWF0L21wZWd0c2VuYy5jIHwgICAgOSArKysrKysrLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21wZWd0c2VuYy5jIGIvbGliYXZmb3JtYXQvbXBlZ3RzZW5jLmMKLWluZGV4IDc5M2UyMDUuLmExMmQxOWYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZmb3JtYXQvbXBlZ3RzZW5jLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmZvcm1hdC9tcGVndHNlbmMuYwotQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgdm9pZCBtcGVndHNfd3JpdGVfcGF0KEFWRm9ybWF0Q29udGV4dCAqcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIHEgLSBkYXRhKTsKLSB9Ci0gCi0tc3RhdGljIHZvaWQgbXBlZ3RzX3dyaXRlX3BtdChBVkZvcm1hdENvbnRleHQgKnMsIE1wZWdUU1NlcnZpY2UgKnNlcnZpY2UpCi0rc3RhdGljIGludCBtcGVndHNfd3JpdGVfcG10KEFWRm9ybWF0Q29udGV4dCAqcywgTXBlZ1RTU2VydmljZSAqc2VydmljZSkKLSB7Ci0gICAgIC8vICAgIE1wZWdUU1dyaXRlICp0cyA9IHMtPnByaXZfZGF0YTsKLSAgICAgdWludDhfdCBkYXRhWzEwMTJdLCAqcSwgKmRlc2NfbGVuZ3RoX3B0ciwgKnByb2dyYW1faW5mb19sZW5ndGhfcHRyOwotQEAgLTI5Myw2ICsyOTMsMTAgQEAgc3RhdGljIHZvaWQgbXBlZ3RzX3dyaXRlX3BtdChBVkZvcm1hdENvbnRleHQgKnMsIE1wZWdUU1NlcnZpY2UgKnNlcnZpY2UpCi0gICAgICAgICAgICAgc3RyZWFtX3R5cGUgPSBTVFJFQU1fVFlQRV9QUklWQVRFX0RBVEE7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAocSAtIGRhdGEgPiBzaXplb2YoZGF0YSkgLSAzMikKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwotKwotICAgICAgICAgKnErKyA9IHN0cmVhbV90eXBlOwotICAgICAgICAgcHV0MTYoJnEsIDB4ZTAwMCB8IHRzX3N0LT5waWQpOwotICAgICAgICAgZGVzY19sZW5ndGhfcHRyID0gcTsKLUBAIC0zMjQsNyArMzI4LDcgQEAgc3RhdGljIHZvaWQgbXBlZ3RzX3dyaXRlX3BtdChBVkZvcm1hdENvbnRleHQgKnMsIE1wZWdUU1NlcnZpY2UgKnNlcnZpY2UpCi0gICAgICAgICAgICAgICAgIGxlbl9wdHIgPSBxKys7Ci0gICAgICAgICAgICAgICAgICpsZW5fcHRyID0gMDsKLSAKLS0gICAgICAgICAgICAgICAgZm9yIChwID0gbGFuZy0+dmFsdWU7IG5leHQgJiYgKmxlbl9wdHIgPCAyNTUgLyA0ICogNDsgcCA9IG5leHQgKyAxKSB7Ci0rICAgICAgICAgICAgICAgIGZvciAocCA9IGxhbmctPnZhbHVlOyBuZXh0ICYmICpsZW5fcHRyIDwgMjU1IC8gNCAqIDQgJiYgcSAtIGRhdGEgPCBzaXplb2YoZGF0YSkgLSA0OyBwID0gbmV4dCArIDEpIHsKLSAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBzdHJjaHIocCwgJywnKTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJsZW4ocCkgIT0gMyAmJiAoIW5leHQgfHwgbmV4dCAhPSBwICsgMykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8qIG5vdCBhIDMtbGV0dGVyIGNvZGUgKi8KLUBAIC0zODYsNiArMzkwLDcgQEAgc3RhdGljIHZvaWQgbXBlZ3RzX3dyaXRlX3BtdChBVkZvcm1hdENvbnRleHQgKnMsIE1wZWdUU1NlcnZpY2UgKnNlcnZpY2UpCi0gICAgIH0KLSAgICAgbXBlZ3RzX3dyaXRlX3NlY3Rpb24xKCZzZXJ2aWNlLT5wbXQsIFBNVF9USUQsIHNlcnZpY2UtPnNpZCwgMCwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIHEgLSBkYXRhKTsKLSsgICAgcmV0dXJuIDA7Ci0gfQotIAotIC8qIE5PVEU6IHN0ciA9PSBOVUxMIGlzIGFjY2VwdGVkIGZvciBhbiBlbXB0eSBzdHJpbmcgKi8KLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZWFtYWQtZml4LW91dC1vZi1hcnJheS1hY2Nlc3Nlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1lYW1hZC1maXgtb3V0LW9mLWFycmF5LWFjY2Vzc2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDVlM2ZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1lYW1hZC1maXgtb3V0LW9mLWFycmF5LWFjY2Vzc2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA2M2FjNjQ4NjRjNmUwZTg0MzU1YWEzY2FhNWI5MjIwODk5N2E5YThkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFNhdCwgMTcgTm92IDIwMTIgMTY6MjY6NTUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZWFtYWQ6IGZpeCBvdXQgb2YgYXJyYXkgYWNjZXNzZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Db21taXQgNjNhYzY0ODY0YzZlMGU4NDM1NWFhM2NhYTViOTIyMDg5OTdhOWE4ZCByZWxlYXNlLzEuMQotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL2VhbWFkLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2VhbWFkLmMgYi9saWJhdmNvZGVjL2VhbWFkLmMKLWluZGV4IDI4MDUxOTUuLmUzODY1MGUgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9lYW1hZC5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9lYW1hZC5jCi1AQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyBpbnQgZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAgaW50IGNodW5rX3R5cGU7Ci0gICAgIGludCBpbnRlcjsKLSAKLS0gICAgaWYgKGJ1Zl9zaXplIDwgMTcpIHsKLSsgICAgaWYgKGJ1Zl9zaXplIDwgMjYpIHsKLSAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiSW5wdXQgYnVmZmVyIHRvbyBzbWFsbFxuIik7Ci0gICAgICAgICAqZGF0YV9zaXplID0gMDsKLSAgICAgICAgIHJldHVybiAtMTsKLS0tIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWVycm9yLWNvbmNlYWxtZW50LWluaXRpYWxpemUtYmxvY2staW5kZXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZXJyb3ItY29uY2VhbG1lbnQtaW5pdGlhbGl6ZS1ibG9jay1pbmRleC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlNDIzOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZXJyb3ItY29uY2VhbG1lbnQtaW5pdGlhbGl6ZS1ibG9jay1pbmRleC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLWdzdC1mZm1wZWc6IGVycm9yIGNvbmNlYWxtZW50OiBpbml0aWFsaXplIGJsb2NrIGluZGV4LgotCi1GaXhlcyBDVkUtMjAxMS0zOTQxIChvdXQgb2YgYm91bmRzIHdyaXRlKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuYyB8ICAgIDMgKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuYyBiL2xpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5jCi1pbmRleCA4YmI1ZDBjLi5kNTVjMDAwIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmMKLUBAIC00NSw2ICs0NSw5IEBAIHN0YXRpYyB2b2lkIGRlY29kZV9tYihNcGVnRW5jQ29udGV4dCAqcywgaW50IHJlZil7Ci0gICAgIHMtPmRlc3RbMV0gPSBzLT5jdXJyZW50X3BpY3R1cmUuZGF0YVsxXSArIChzLT5tYl95ICogKDE2Pj5zLT5jaHJvbWFfeV9zaGlmdCkgKiBzLT51dmxpbmVzaXplKSArIHMtPm1iX3ggKiAoMTY+PnMtPmNocm9tYV94X3NoaWZ0KTsKLSAgICAgcy0+ZGVzdFsyXSA9IHMtPmN1cnJlbnRfcGljdHVyZS5kYXRhWzJdICsgKHMtPm1iX3kgKiAoMTY+PnMtPmNocm9tYV95X3NoaWZ0KSAqIHMtPnV2bGluZXNpemUpICsgcy0+bWJfeCAqICgxNj4+cy0+Y2hyb21hX3hfc2hpZnQpOwotIAotKyAgICBmZl9pbml0X2Jsb2NrX2luZGV4KHMpOwotKyAgICBmZl91cGRhdGVfYmxvY2tfaW5kZXgocyk7Ci0rCi0gICAgIGlmKENPTkZJR19IMjY0X0RFQ09ERVIgJiYgcy0+Y29kZWNfaWQgPT0gQ09ERUNfSURfSDI2NCl7Ci0gICAgICAgICBIMjY0Q29udGV4dCAqaD0gKHZvaWQqKXM7Ci0gICAgICAgICBoLT5tYl94eT0gcy0+bWJfeCArIHMtPm1iX3kqcy0+bWJfc3RyaWRlOwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1lcnJvcl9jb25jZWFsbWVudC1DaGVjay10aGF0LXRoZS1waWN0dXJlLWlzLW5vdC1pbi1hLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWVycm9yX2NvbmNlYWxtZW50LUNoZWNrLXRoYXQtdGhlLXBpY3R1cmUtaXMtbm90LWluLWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZWY2ZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWVycm9yX2NvbmNlYWxtZW50LUNoZWNrLXRoYXQtdGhlLXBpY3R1cmUtaXMtbm90LWluLWEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1nc3QtZmZtcGVnOiBlcnJvcl9jb25jZWFsbWVudDogQ2hlY2sgdGhhdCB0aGUgcGljdHVyZSBpcyBub3QgaW4gYSBoYWxmCi0KLUZpeGVzIHN0YXRlIGJlY29taW5nIGluY29uc2lzdGVudAotRml4ZXMgYSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMjMzMThhNTczNTgzNThlN2E0ZGM1NTFlODMwZTQ1MDNmMDYzOGNmZSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuYyB8ICAgIDYgKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Vycm9yX3Jlc2lsaWVuY2UuYyBiL2xpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5jCi1pbmRleCAwMWY3NDI0Li4yYjZiYzQyIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvZXJyb3JfcmVzaWxpZW5jZS5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmMKLUBAIC03OTMsNiArNzkzLDEyIEBAIHZvaWQgZmZfZXJfZnJhbWVfZW5kKE1wZWdFbmNDb250ZXh0ICpzKXsKLSAgICAgICAgcy0+cGljdHVyZV9zdHJ1Y3R1cmUgIT0gUElDVF9GUkFNRSB8fCAvLyB3ZSBkb250IHN1cHBvcnQgRVIgb2YgZmllbGQgcGljdHVyZXMgeWV0LCB0aG91Z2ggaXQgc2hvdWxkIG5vdCBjcmFzaCBpZiBlbmFibGVkCi0gICAgICAgIHMtPmVycm9yX2NvdW50PT0zKnMtPm1iX3dpZHRoKihzLT5hdmN0eC0+c2tpcF90b3AgKyBzLT5hdmN0eC0+c2tpcF9ib3R0b20pKSByZXR1cm47Ci0gCi0rICAgIGlmICggICBzLT5waWN0dXJlX3N0cnVjdHVyZSA9PSBQSUNUX0ZSQU1FCi0rICAgICAgICAmJiBzLT5jdXJyZW50X3BpY3R1cmUubGluZXNpemVbMF0gIT0gcy0+Y3VycmVudF9waWN0dXJlX3B0ci0+bGluZXNpemVbMF0pIHsKLSsgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiRXJyb3IgY29uY2VhbG1lbnQgbm90IHBvc3NpYmxlLCBmcmFtZSBub3QgZnVsbHkgaW5pdGlhbGl6ZWRcbiIpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICAgIGlmKHMtPmN1cnJlbnRfcGljdHVyZS5tb3Rpb25fdmFsWzBdID09IE5VTEwpewotICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJXYXJuaW5nIE1WcyBub3QgYXZhaWxhYmxlXG4iKTsKLSAKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZmZzZXJ2ZXItc2V0LW9mb3JtYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtZmZzZXJ2ZXItc2V0LW9mb3JtYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwMzI1ZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWZmc2VydmVyLXNldC1vZm9ybWF0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotZ3N0LWZmbXBlZzogZmZzZXJ2ZXI6IHNldCBvZm9ybWF0Ci0KLUZpeCBUaWNrZXQxOTg2Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjYmU0M2U2MmM5YWM3ZDRhZWZkYzEzNDc2ZjZmNjkxYmQ2MjY1MjVmKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAotCi0tLS0KLSBmZnNlcnZlci5jIHwgICAgNCArKystCi0gMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mZnNlcnZlci5jIGIvZmZzZXJ2ZXIuYwotaW5kZXggNDA0NGQwZi4uODc0MDE0MCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9mZnNlcnZlci5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvZmZzZXJ2ZXIuYwotQEAgLTI5MzcsMTIgKzI5MzcsMTQgQEAgc3RhdGljIGludCBwcmVwYXJlX3NkcF9kZXNjcmlwdGlvbihGRlN0cmVhbSAqc3RyZWFtLCB1aW50OF90ICoqcGJ1ZmZlciwKLSB7Ci0gICAgIEFWRm9ybWF0Q29udGV4dCAqYXZjOwotICAgICBBVlN0cmVhbSAqYXZzID0gTlVMTDsKLSsgICAgQVZPdXRwdXRGb3JtYXQgKnJ0cF9mb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoInJ0cCIsIE5VTEwsIE5VTEwpOwotICAgICBpbnQgaTsKLSAKLSAgICAgYXZjID0gIGF2Zm9ybWF0X2FsbG9jX2NvbnRleHQoKTsKLS0gICAgaWYgKGF2YyA9PSBOVUxMKSB7Ci0rICAgIGlmIChhdmMgPT0gTlVMTCB8fCAhcnRwX2Zvcm1hdCkgewotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0rICAgIGF2Yy0+b2Zvcm1hdCA9IHJ0cF9mb3JtYXQ7Ci0gICAgIGF2X2RpY3Rfc2V0KCZhdmMtPm1ldGFkYXRhLCAidGl0bGUiLAotICAgICAgICAgICAgICAgIHN0cmVhbS0+dGl0bGVbMF0gPyBzdHJlYW0tPnRpdGxlIDogIk5vIFRpdGxlIiwgMCk7Ci0gICAgIGF2Yy0+bmJfc3RyZWFtcyA9IHN0cmVhbS0+bmJfc3RyZWFtczsKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaDI2NC1jb3JyZWN0LXJlZi1jb3VudC1jaGVjay1hbmQtbGltaXQtZml4LW91dC1vZi1hci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0LWNvcnJlY3QtcmVmLWNvdW50LWNoZWNrLWFuZC1saW1pdC1maXgtb3V0LW9mLWFyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGY1NWIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0LWNvcnJlY3QtcmVmLWNvdW50LWNoZWNrLWFuZC1saW1pdC1maXgtb3V0LW9mLWFyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBkNmMxODQ4ODBlZTJlMDlmZDY4YzBhZTIxNzE3MzgzMmNlZTVhZmMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFN1biwgMTggTm92IDIwMTIgMTY6Mjk6MDQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gaDI2NDogY29ycmVjdCByZWYgY291bnQgY2hlY2sgYW5kIGxpbWl0LCBmaXggb3V0IG9mIGFycmF5Ci0gYWNjZXNzZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy9oMjY0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2gyNjQuYyBiL2xpYmF2Y29kZWMvaDI2NC5jCi1pbmRleCBkYTQzZjFlLi4zMmNlZGU1IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0LmMKLUBAIC0yODcwLDYgKzI4NzAsOSBAQCBzdGF0aWMgaW50IGRlY29kZV9zbGljZV9oZWFkZXIoSDI2NENvbnRlCi0gICAgICAgICAgICAgaC0+cmVmX2NvdW50WzBdPSBnZXRfdWVfZ29sb21iKCZzLT5nYikgKyAxOwotICAgICAgICAgICAgIGlmKGgtPnNsaWNlX3R5cGVfbm9zPT1BVl9QSUNUVVJFX1RZUEVfQikKLSAgICAgICAgICAgICAgICAgaC0+cmVmX2NvdW50WzFdPSBnZXRfdWVfZ29sb21iKCZzLT5nYikgKyAxOwotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgLy8gZnVsbCByYW5nZSBpcyBzcGVjLW9rIGluIHRoaXMgY2FzZSwgZXZlbiBmb3IgZnJhbWVzCi0rICAgICAgICAgICAgICAgIGgtPnJlZl9jb3VudFsxXSA9IDE7Ci0gCi0gICAgICAgICAgICAgaWYoaC0+cmVmX2NvdW50WzBdLTEgPiAzMi0xIHx8IGgtPnJlZl9jb3VudFsxXS0xID4gMzItMSl7Ci0gICAgICAgICAgICAgICAgIGF2X2xvZyhoLT5zLmF2Y3R4LCBBVl9MT0dfRVJST1IsICJyZWZlcmVuY2Ugb3ZlcmZsb3dcbiIpOwotLS0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaDI2NC1zZXQtcGFyYW1ldGVycy1mcm9tLVNQUy13aGVuZXZlci1pdC1jaGFuZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWgyNjQtc2V0LXBhcmFtZXRlcnMtZnJvbS1TUFMtd2hlbmV2ZXItaXQtY2hhbmdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVhOWRlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaDI2NC1zZXQtcGFyYW1ldGVycy1mcm9tLVNQUy13aGVuZXZlci1pdC1jaGFuZ2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLWdzdC1mZm1wZWc6IGgyNjQ6IHNldCBwYXJhbWV0ZXJzIGZyb20gU1BTIHdoZW5ldmVyIGl0IGNoYW5nZXMKLSAgICAKLUZpeGVzIGEgY3Jhc2ggaW4gdGhlIGZ1enplZCBzYW1wbGUgc2FtcGxlX3ZhclBBUi5hdmlfczI2NjM4IHdpdGgKLWFsdGVybmF0aW5nIGJpdCBkZXB0aHMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5jLm9sZCBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjQuYwotaW5kZXggMzYyMWY0MS4uNzE4OTA2YSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjQuYy5vbGQKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjQuYwotQEAgLTI0OTEsNiArMjQ5MSwzNCBAQCBpbnQgZmZfaDI2NF9nZXRfcHJvZmlsZShTUFMgKnNwcykKLSAgICAgcmV0dXJuIHByb2ZpbGU7Ci0gfQotIAotK3N0YXRpYyBpbnQgaDI2NF9zZXRfcGFyYW1ldGVyX2Zyb21fc3BzKEgyNjRDb250ZXh0ICpoKQotK3sKLSsgICAgTXBlZ0VuY0NvbnRleHQgKnMgPSAmaC0+czsKLSsgICAgQVZDb2RlY0NvbnRleHQgKiBhdmN0eD0gcy0+YXZjdHg7Ci0rCi0rICAgIGlmIChzLT5mbGFncyYgQ09ERUNfRkxBR19MT1dfREVMQVkgfHwKLSsgICAgICAgIChoLT5zcHMuYml0c3RyZWFtX3Jlc3RyaWN0aW9uX2ZsYWcgJiYgIWgtPnNwcy5udW1fcmVvcmRlcl9mcmFtZXMpKQotKyAgICAgICAgcy0+bG93X2RlbGF5PTE7Ci0rCi0rICAgIGlmKGF2Y3R4LT5oYXNfYl9mcmFtZXMgPCAyKQotKyAgICAgICAgYXZjdHgtPmhhc19iX2ZyYW1lcz0gIXMtPmxvd19kZWxheTsKLSsKLSsgICAgaWYgKGF2Y3R4LT5iaXRzX3Blcl9yYXdfc2FtcGxlICE9IGgtPnNwcy5iaXRfZGVwdGhfbHVtYSkgewotKyAgICAgICAgaWYgKGgtPnNwcy5iaXRfZGVwdGhfbHVtYSA+PSA4ICYmIGgtPnNwcy5iaXRfZGVwdGhfbHVtYSA8PSAxMCkgewotKyAgICAgICAgICAgIGF2Y3R4LT5iaXRzX3Blcl9yYXdfc2FtcGxlID0gaC0+c3BzLmJpdF9kZXB0aF9sdW1hOwotKyAgICAgICAgICAgIGgtPnBpeGVsX3NoaWZ0ID0gaC0+c3BzLmJpdF9kZXB0aF9sdW1hID4gODsKLSsKLSsgICAgICAgICAgICBmZl9oMjY0ZHNwX2luaXQoJmgtPmgyNjRkc3AsIGgtPnNwcy5iaXRfZGVwdGhfbHVtYSk7Ci0rICAgICAgICAgICAgZmZfaDI2NF9wcmVkX2luaXQoJmgtPmhwYywgcy0+Y29kZWNfaWQsIGgtPnNwcy5iaXRfZGVwdGhfbHVtYSk7Ci0rICAgICAgICAgICAgZHNwdXRpbF9pbml0KCZzLT5kc3AsIHMtPmF2Y3R4KTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJVbnN1cHBvcnRlZCBiaXQgZGVwdGg6ICVkXG4iLCBoLT5zcHMuYml0X2RlcHRoX2x1bWEpOwotKyAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0gLyoqCi0gICogZGVjb2RlcyBhIHNsaWNlIGhlYWRlci4KLSAgKiBUaGlzIHdpbGwgYWxzbyBjYWxsIE1QVl9jb21tb25faW5pdCgpIGFuZCBmcmFtZV9zdGFydCgpIGFzIG5lZWRlZC4KLUBAIC0yNTA1LDcgKzI1MzMsNyBAQCBzdGF0aWMgaW50IGRlY29kZV9zbGljZV9oZWFkZXIoSDI2NENvbnRleHQgKmgsIEgyNjRDb250ZXh0ICpoMCl7Ci0gICAgIE1wZWdFbmNDb250ZXh0ICogY29uc3QgczAgPSAmaDAtPnM7Ci0gICAgIHVuc2lnbmVkIGludCBmaXJzdF9tYl9pbl9zbGljZTsKLSAgICAgdW5zaWduZWQgaW50IHBwc19pZDsKLS0gICAgaW50IG51bV9yZWZfaWR4X2FjdGl2ZV9vdmVycmlkZV9mbGFnOwotKyAgICBpbnQgbnVtX3JlZl9pZHhfYWN0aXZlX292ZXJyaWRlX2ZsYWcsIHJldDsKLSAgICAgdW5zaWduZWQgaW50IHNsaWNlX3R5cGUsIHRtcCwgaSwgajsKLSAgICAgaW50IGRlZmF1bHRfcmVmX2xpc3RfZG9uZSA9IDA7Ci0gICAgIGludCBsYXN0X3BpY19zdHJ1Y3R1cmU7Ci1AQCAtMjU2OSw3ICsyNTk3LDE3IEBAIHN0YXRpYyBpbnQgZGVjb2RlX3NsaWNlX2hlYWRlcihIMjY0Q29udGV4dCAqaCwgSDI2NENvbnRleHQgKmgwKXsKLSAgICAgICAgIGF2X2xvZyhoLT5zLmF2Y3R4LCBBVl9MT0dfRVJST1IsICJub24tZXhpc3RpbmcgU1BTICV1IHJlZmVyZW5jZWRcbiIsIGgtPnBwcy5zcHNfaWQpOwotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0tICAgIGgtPnNwcyA9ICpoMC0+c3BzX2J1ZmZlcnNbaC0+cHBzLnNwc19pZF07Ci0rCi0rICAgIGlmIChoLT5wcHMuc3BzX2lkICE9IGgtPmN1cnJlbnRfc3BzX2lkIHx8Ci0rICAgICAgICBoMC0+c3BzX2J1ZmZlcnNbaC0+cHBzLnNwc19pZF0tPm5ldykgewotKyAgICAgICAgaDAtPnNwc19idWZmZXJzW2gtPnBwcy5zcHNfaWRdLT5uZXcgPSAwOwotKwotKyAgICAgICAgaC0+Y3VycmVudF9zcHNfaWQgPSBoLT5wcHMuc3BzX2lkOwotKyAgICAgICAgaC0+c3BzICAgICAgICAgICAgPSAqaDAtPnNwc19idWZmZXJzW2gtPnBwcy5zcHNfaWRdOwotKwotKyAgICAgICAgaWYgKChyZXQgPSBoMjY0X3NldF9wYXJhbWV0ZXJfZnJvbV9zcHMoaCkpIDwgMCkKLSsgICAgICAgICAgICByZXR1cm4gcmV0OwotKyAgICB9Ci0gCi0gICAgIHMtPmF2Y3R4LT5wcm9maWxlID0gZmZfaDI2NF9nZXRfcHJvZmlsZSgmaC0+c3BzKTsKLSAgICAgcy0+YXZjdHgtPmxldmVsICAgPSBoLT5zcHMubGV2ZWxfaWRjOwotQEAgLTM4MTEsMjYgKzM4MTEsOCBAQCBzdGF0aWMgaW50IGRlY29kZV9uYWxfdW5pdHMoSDI2NENvbnRleHQgKmgsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGJ1Zl9zaXplKXsKLSAgICAgICAgIGNhc2UgTkFMX1NQUzoKLSAgICAgICAgICAgICBpbml0X2dldF9iaXRzKCZzLT5nYiwgcHRyLCBiaXRfbGVuZ3RoKTsKLSAgICAgICAgICAgICBmZl9oMjY0X2RlY29kZV9zZXFfcGFyYW1ldGVyX3NldChoKTsKLS0KLS0gICAgICAgICAgICBpZiAocy0+ZmxhZ3MmIENPREVDX0ZMQUdfTE9XX0RFTEFZIHx8Ci0tICAgICAgICAgICAgICAgIChoLT5zcHMuYml0c3RyZWFtX3Jlc3RyaWN0aW9uX2ZsYWcgJiYgIWgtPnNwcy5udW1fcmVvcmRlcl9mcmFtZXMpKQotLSAgICAgICAgICAgICAgICBzLT5sb3dfZGVsYXk9MTsKLS0KLS0gICAgICAgICAgICBpZihhdmN0eC0+aGFzX2JfZnJhbWVzIDwgMikKLS0gICAgICAgICAgICAgICAgYXZjdHgtPmhhc19iX2ZyYW1lcz0gIXMtPmxvd19kZWxheTsKLS0KLS0gICAgICAgICAgICBpZiAoYXZjdHgtPmJpdHNfcGVyX3Jhd19zYW1wbGUgIT0gaC0+c3BzLmJpdF9kZXB0aF9sdW1hKSB7Ci0tICAgICAgICAgICAgICAgIGlmIChoLT5zcHMuYml0X2RlcHRoX2x1bWEgPj0gOCAmJiBoLT5zcHMuYml0X2RlcHRoX2x1bWEgPD0gMTApIHsKLS0gICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5iaXRzX3Blcl9yYXdfc2FtcGxlID0gaC0+c3BzLmJpdF9kZXB0aF9sdW1hOwotLSAgICAgICAgICAgICAgICAgICAgaC0+cGl4ZWxfc2hpZnQgPSBoLT5zcHMuYml0X2RlcHRoX2x1bWEgPiA4OwotLQotLSAgICAgICAgICAgICAgICAgICAgZmZfaDI2NGRzcF9pbml0KCZoLT5oMjY0ZHNwLCBoLT5zcHMuYml0X2RlcHRoX2x1bWEpOwotLSAgICAgICAgICAgICAgICAgICAgZmZfaDI2NF9wcmVkX2luaXQoJmgtPmhwYywgcy0+Y29kZWNfaWQsIGgtPnNwcy5iaXRfZGVwdGhfbHVtYSk7Ci0tICAgICAgICAgICAgICAgICAgICBkc3B1dGlsX2luaXQoJnMtPmRzcCwgcy0+YXZjdHgpOwotLSAgICAgICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJVbnN1cHBvcnRlZCBiaXQgZGVwdGg6ICVkXG4iLCBoLT5zcHMuYml0X2RlcHRoX2x1bWEpOwotLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotLSAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKGgyNjRfc2V0X3BhcmFtZXRlcl9mcm9tX3NwcyhoKSA8IDApIHsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgTkFMX1BQUzoKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0Lmgub2xkIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5oCi1pbmRleCBlM2NjODE1Li5iNzdhZDk4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5oLm9sZAotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5oCi1AQCAtMjAyLDYgKzIwMiw3IEBAIHR5cGVkZWYgc3RydWN0IFNQU3sKLSAgICAgaW50IGJpdF9kZXB0aF9jaHJvbWE7ICAgICAgICAgICAgICAvLy88IGJpdF9kZXB0aF9jaHJvbWFfbWludXM4ICsgOAotICAgICBpbnQgcmVzaWR1YWxfY29sb3JfdHJhbnNmb3JtX2ZsYWc7IC8vLzwgcmVzaWR1YWxfY29sb3VyX3RyYW5zZm9ybV9mbGFnCi0gICAgIGludCBjb25zdHJhaW50X3NldF9mbGFnczsgICAgICAgICAgLy8vPCBjb25zdHJhaW50X3NldFswLTNdX2ZsYWcKLSsgICAgaW50IG5ldzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGZsYWcgdG8ga2VlcCB0cmFjayBpZiB0aGUgZGVjb2RlciBjb250ZXh0IG5lZWRzIHJlLWluaXQgZHVlIHRvIGNoYW5nZWQgU1BTCi0gfVNQUzsKLSAKLSAvKioKLUBAIC0zMzMsNiArMzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSDI2NENvbnRleHR7Ci0gICAgIGludCBlbXVfZWRnZV93aWR0aDsKLSAgICAgaW50IGVtdV9lZGdlX2hlaWdodDsKLSAKLSsgICAgdW5zaWduZWQgY3VycmVudF9zcHNfaWQ7IC8vLzwgaWQgb2YgdGhlIGN1cnJlbnQgU1BTCi0gICAgIFNQUyBzcHM7IC8vLzwgY3VycmVudCBzcHMKLSAKLSAgICAgLyoqCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9wcy5jLm9sZCBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjRfcHMuYwotaW5kZXggNzQ5MTgwNy4uMDkyOTA5OCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjRfcHMuYy5vbGQKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjRfcHMuYwotQEAgLTQzOCwxMCArNDM4LDEzIEBAIGludCBmZl9oMjY0X2RlY29kZV9zZXFfcGFyYW1ldGVyX3NldChIMjY0Q29udGV4dCAqaCl7Ci0gICAgICAgICAgICAgICAgc3BzLT50aW1pbmdfaW5mb19wcmVzZW50X2ZsYWcgPyBzcHMtPnRpbWVfc2NhbGUgOiAwCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgfQotKyAgICBzcHMtPm5ldyA9IDE7Ci0gCi0gICAgIGF2X2ZyZWUoaC0+c3BzX2J1ZmZlcnNbc3BzX2lkXSk7Ci0tICAgIGgtPnNwc19idWZmZXJzW3Nwc19pZF09IHNwczsKLS0gICAgaC0+c3BzID0gKnNwczsKLSsgICAgaC0+c3BzX2J1ZmZlcnNbc3BzX2lkXSA9IHNwczsKLSsgICAgaC0+c3BzICAgICAgICAgICAgICAgICA9ICpzcHM7Ci0rICAgIGgtPmN1cnJlbnRfc3BzX2lkICAgICAgPSBzcHNfaWQ7Ci0rCi0gICAgIHJldHVybiAwOwotIGZhaWw6Ci0gICAgIGF2X2ZyZWUoc3BzKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0LXNraXAtZXJyb3ItY29uY2VhbG1lbnQtd2hlbi1TUFMtYW5kLXNsaWNlcy1hcmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWgyNjQtc2tpcC1lcnJvci1jb25jZWFsbWVudC13aGVuLVNQUy1hbmQtc2xpY2VzLWFyZS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNDVjMWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWgyNjQtc2tpcC1lcnJvci1jb25jZWFsbWVudC13aGVuLVNQUy1hbmQtc2xpY2VzLWFyZS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1nc3QtZmZtcGVnOiBoMjY0OiBza2lwIGVycm9yIGNvbmNlYWxtZW50IHdoZW4gU1BTIGFuZCBzbGljZXMgYXJlCi0gbWlzbWF0Y2hpbmcKLQotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2Vzc2VzCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDY5NWFmOGVlZDY0MmZmMDEwNDgzNDQ5NTY1MmQxZWU3ODRhNGMxNGQpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Y29kZWMvaDI2NC5jIHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9oMjY0LmMgYi9saWJhdmNvZGVjL2gyNjQuYwotaW5kZXggZGExNDRkYi4uMGFhYjRlNyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjQuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NC5jCi1AQCAtMjM1MSw3ICsyMzUxLDcgQEAgc3RhdGljIGludCBmaWVsZF9lbmQoSDI2NENvbnRleHQgKmgsIGludCBpbl9zZXR1cCkKLSAgICAgICogcGFzdCBlbmQgYnkgb25lIChjYWxsZXJzIGZhdWx0KSBhbmQgcmVzeW5jX21iX3kgIT0gMAotICAgICAgKiBjYXVzZXMgcHJvYmxlbXMgZm9yIHRoZSBmaXJzdCBNQiBsaW5lLCB0b28uCi0gICAgICAqLwotLSAgICBpZiAoIUZJRUxEX1BJQ1RVUkUpCi0rICAgIGlmICghRklFTERfUElDVFVSRSAmJiBoLT5jdXJyZW50X3NsaWNlICYmICFoLT5zcHMubmV3KQotICAgICAgICAgZmZfZXJfZnJhbWVfZW5kKHMpOwotIAotICAgICBmZl9NUFZfZnJhbWVfZW5kKHMpOwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0X3NlaS1GaXgtaW5maW5pdGUtbG9vcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1oMjY0X3NlaS1GaXgtaW5maW5pdGUtbG9vcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU2MmI1MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaDI2NF9zZWktRml4LWluZmluaXRlLWxvb3AucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1nc3QtZmZtcGVnOiBoMjY0X3NlaTogRml4IGluZmluaXRlIGxvb3AuCi0KLUZpeHNvdCB5ZXQgZml4ZWQgcGFydHMgb2YgQ1ZFLTIwMTEtMzk0Ni4KLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAotCi1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYmF2Y29kZWMvaDI2NF9zZWkuYyB8ICAgIDQgKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2gyNjRfc2VpLmMgYi9saWJhdmNvZGVjL2gyNjRfc2VpLmMKLWluZGV4IDM3NGU1M2QuLjgwZDcwZTUgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0X3NlaS5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0X3NlaS5jCi1AQCAtMTY5LDExICsxNjksMTUgQEAgaW50IGZmX2gyNjRfZGVjb2RlX3NlaShIMjY0Q29udGV4dCAqaCl7Ci0gCi0gICAgICAgICB0eXBlPTA7Ci0gICAgICAgICBkb3sKLSsgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdCgmcy0+Z2IpIDwgOCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgIHR5cGUrPSBzaG93X2JpdHMoJnMtPmdiLCA4KTsKLSAgICAgICAgIH13aGlsZShnZXRfYml0cygmcy0+Z2IsIDgpID09IDI1NSk7Ci0gCi0gICAgICAgICBzaXplPTA7Ci0gICAgICAgICBkb3sKLSsgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdCgmcy0+Z2IpIDwgOCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgIHNpemUrPSBzaG93X2JpdHMoJnMtPmdiLCA4KTsKLSAgICAgICAgIH13aGlsZShnZXRfYml0cygmcy0+Z2IsIDgpID09IDI1NSk7Ci0gCi0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWh1ZmZ5dXZkZWMtQ2hlY2staW5pdF92bGMtcmV0dXJuLWNvZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWh1ZmZ5dXZkZWMtQ2hlY2staW5pdF92bGMtcmV0dXJuLWNvZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODU5ZTQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1odWZmeXV2ZGVjLUNoZWNrLWluaXRfdmxjLXJldHVybi1jb2Rlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gYjY2NmRlYmZmZWMxZmNiYjE5ZWYzNzc2MzVhNTNiOWE1OGJjYThhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBUdWUsIDI5IEphbiAyMDEzIDE4OjI5OjQxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGh1ZmZ5dXZkZWM6IENoZWNrIGluaXRfdmxjKCkgcmV0dXJuIGNvZGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCBiNjY2ZGViZmZlYzFmY2JiMTllZjM3NzYzNWE1M2I5YTU4YmNhOGE0IHJlbGVhc2UvMS4wCi0KLVByZXZlbnRzIG91dCBvZiBhcnJheSB3cml0ZXMKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZjY3YTBkMTE1MjU0NDYxNjQ5NDcwNDUyMDU4ZmEzYzI4YzBkZjI5NCkKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvaHVmZnl1di5jIHwgMTQgKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaHVmZnl1di5jIGIvbGliYXZjb2RlYy9odWZmeXV2LmMKLWluZGV4IDU4ZGE3ODkuLjk5M2U1MjQgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9odWZmeXV2LmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2h1ZmZ5dXYuYwotQEAgLTMzLDYgKzMzLDcgQEAKLSAjaW5jbHVkZSAicHV0X2JpdHMuaCIKLSAjaW5jbHVkZSAiZHNwdXRpbC5oIgotICNpbmNsdWRlICJ0aHJlYWQuaCIKLSsjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCi0gCi0gI2RlZmluZSBWTENfQklUUyAxMQotIAotQEAgLTI4Nyw2ICsyODcsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9qb2ludF90YWJsZXMoSFl1dkNvCi0gICAgICAgICAgICAgICAgICAgICBpbnQgbGVuMSA9IHMtPmxlbltwXVt1XTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4xID4gbGltaXQgfHwgIWxlbjEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGkgPCAoMSA8PCBWTENfQklUUykpOwotICAgICAgICAgICAgICAgICAgICAgbGVuW2ldID0gbGVuMCArIGxlbjE7Ci0gICAgICAgICAgICAgICAgICAgICBiaXRzW2ldID0gKHMtPmJpdHNbMF1beV0gPDwgbGVuMSkgKyBzLT5iaXRzW3BdW3VdOwotICAgICAgICAgICAgICAgICAgICAgc3ltYm9sc1tpXSA9ICh5PDw4KSArIHU7Ci1AQCAtMzIwLDYgKzMyMSw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX2pvaW50X3RhYmxlcyhIWXV2Q28KLSAgICAgICAgICAgICAgICAgICAgIGludCBsZW4yID0gcy0+bGVuWzJdW3ImMjU1XTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4yID4gbGltaXQxIHx8ICFsZW4yKQotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChpIDwgKDEgPDwgVkxDX0JJVFMpKTsKLSAgICAgICAgICAgICAgICAgICAgIGxlbltpXSA9IGxlbjAgKyBsZW4xICsgbGVuMjsKLSAgICAgICAgICAgICAgICAgICAgIGJpdHNbaV0gPSAoY29kZSA8PCBsZW4yKSArIHMtPmJpdHNbMl1bciYyNTVdOwotICAgICAgICAgICAgICAgICAgICAgaWYocy0+ZGVjb3JyZWxhdGUpewotQEAgLTM0Myw2ICszNDUsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9qb2ludF90YWJsZXMoSFl1dkNvCi0gc3RhdGljIGludCByZWFkX2h1ZmZtYW5fdGFibGVzKEhZdXZDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpzcmMsIGludCBsZW5ndGgpewotICAgICBHZXRCaXRDb250ZXh0IGdiOwotICAgICBpbnQgaTsKLSsgICAgaW50IHJldDsKLSAKLSAgICAgaW5pdF9nZXRfYml0cygmZ2IsIHNyYywgbGVuZ3RoKjgpOwotIAotQEAgLTM1Myw3ICszNTYsOSBAQCBzdGF0aWMgaW50IHJlYWRfaHVmZm1hbl90YWJsZXMoSFl1dkNvbnRlCi0gICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotICAgICAgICAgZnJlZV92bGMoJnMtPnZsY1tpXSk7Ci0tICAgICAgICBpbml0X3ZsYygmcy0+dmxjW2ldLCBWTENfQklUUywgMjU2LCBzLT5sZW5baV0sIDEsIDEsIHMtPmJpdHNbaV0sIDQsIDQsIDApOwotKyAgICAgICAgaWYgKChyZXQgPSBpbml0X3ZsYygmcy0+dmxjW2ldLCBWTENfQklUUywgMjU2LCBzLT5sZW5baV0sIDEsIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Yml0c1tpXSwgNCwgNCwgMCkpIDwgMCkKLSsgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICB9Ci0gCi0gICAgIGdlbmVyYXRlX2pvaW50X3RhYmxlcyhzKTsKLUBAIC0zNjUsNiArMzcwLDcgQEAgc3RhdGljIGludCByZWFkX29sZF9odWZmbWFuX3RhYmxlcyhIWXV2QwotICNpZiAxCi0gICAgIEdldEJpdENvbnRleHQgZ2I7Ci0gICAgIGludCBpOwotKyAgICBpbnQgcmV0OwotIAotICAgICBpbml0X2dldF9iaXRzKCZnYiwgY2xhc3NpY19zaGlmdF9sdW1hLCBzaXplb2YoY2xhc3NpY19zaGlmdF9sdW1hKSo4KTsKLSAgICAgaWYocmVhZF9sZW5fdGFibGUocy0+bGVuWzBdLCAmZ2IpPDApCi1AQCAtMzg1LDcgKzM5MSw5IEBAIHN0YXRpYyBpbnQgcmVhZF9vbGRfaHVmZm1hbl90YWJsZXMoSFl1dkMKLSAKLSAgICAgZm9yKGk9MDsgaTwzOyBpKyspewotICAgICAgICAgZnJlZV92bGMoJnMtPnZsY1tpXSk7Ci0tICAgICAgICBpbml0X3ZsYygmcy0+dmxjW2ldLCBWTENfQklUUywgMjU2LCBzLT5sZW5baV0sIDEsIDEsIHMtPmJpdHNbaV0sIDQsIDQsIDApOwotKyAgICAgICAgaWYgKChyZXQgPSBpbml0X3ZsYygmcy0+dmxjW2ldLCBWTENfQklUUywgMjU2LCBzLT5sZW5baV0sIDEsIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJpdHNbaV0sIDQsIDQsIDApKSA8IDApCi0rICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgfQotIAotICAgICBnZW5lcmF0ZV9qb2ludF90YWJsZXMocyk7Ci0tLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1odWZmeXV2ZGVjLVNraXAtbGVuLTAtY2FzZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtaHVmZnl1dmRlYy1Ta2lwLWxlbi0wLWNhc2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGJmNGI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1odWZmeXV2ZGVjLVNraXAtbGVuLTAtY2FzZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIGRiMGY3ZjczOTRlMWY5OTRlZDM4ZGIwNDNmNzhlZDBmMTBiZGUwZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogVHVlLCAyOSBKYW4gMjAxMyAxOToyMjozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBodWZmeXV2ZGVjOiBTa2lwIGxlbj09MCBjYXNlcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCBkYjBmN2Y3Mzk0ZTFmOTk0ZWQzOGRiMDQzZjc4ZWQwZjEwYmRlMGRhIHJlbGVhc2UvMS4wCi0KLUZpeGVzIHZsYyBkZWNvZGluZyBmb3IgaHlwb3RoZXRpY2FsIGZpbGVzIHRoYXQgd291bGQgY29udGFpbiBzdWNoIGNhc2VzLgotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMGRmYzAxYzJiYmY0YjcxYmI1NjIwMWJjNGEzOTMzMjFlMTVkMWIzMSkKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvaHVmZnl1di5jIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2h1ZmZ5dXYuYyBiL2xpYmF2Y29kZWMvaHVmZnl1di5jCi1pbmRleCA5OTNlNTI0Li43MmVkMzUxIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaHVmZnl1di5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9odWZmeXV2LmMKLUBAIC0yODEsMTEgKzI4MSwxMSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9qb2ludF90YWJsZXMoSFl1dkNvCi0gICAgICAgICAgICAgZm9yKGk9eT0wOyB5PDI1NjsgeSsrKXsKLSAgICAgICAgICAgICAgICAgaW50IGxlbjAgPSBzLT5sZW5bMF1beV07Ci0gICAgICAgICAgICAgICAgIGludCBsaW1pdCA9IFZMQ19CSVRTIC0gbGVuMDsKLS0gICAgICAgICAgICAgICAgaWYobGltaXQgPD0gMCkKLSsgICAgICAgICAgICAgICAgaWYobGltaXQgPD0gMCB8fCAhbGVuMCkKLSAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICBmb3IodT0wOyB1PDI1NjsgdSsrKXsKLSAgICAgICAgICAgICAgICAgICAgIGludCBsZW4xID0gcy0+bGVuW3BdW3VdOwotLSAgICAgICAgICAgICAgICAgICAgaWYobGVuMSA+IGxpbWl0KQotKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbjEgPiBsaW1pdCB8fCAhbGVuMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgIGxlbltpXSA9IGxlbjAgKyBsZW4xOwotICAgICAgICAgICAgICAgICAgICAgYml0c1tpXSA9IChzLT5iaXRzWzBdW3ldIDw8IGxlbjEpICsgcy0+Yml0c1twXVt1XTsKLUBAIC0zMDgsMTcgKzMwOCwxNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9qb2ludF90YWJsZXMoSFl1dkNvCi0gICAgICAgICBmb3IoaT0wLCBnPS0xNjsgZzwxNjsgZysrKXsKLSAgICAgICAgICAgICBpbnQgbGVuMCA9IHMtPmxlbltwMF1bZyYyNTVdOwotICAgICAgICAgICAgIGludCBsaW1pdDAgPSBWTENfQklUUyAtIGxlbjA7Ci0tICAgICAgICAgICAgaWYobGltaXQwIDwgMikKLSsgICAgICAgICAgICBpZiAobGltaXQwIDwgMiB8fCAhbGVuMCkKLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgZm9yKGI9LTE2OyBiPDE2OyBiKyspewotICAgICAgICAgICAgICAgICBpbnQgbGVuMSA9IHMtPmxlbltwMV1bYiYyNTVdOwotICAgICAgICAgICAgICAgICBpbnQgbGltaXQxID0gbGltaXQwIC0gbGVuMTsKLS0gICAgICAgICAgICAgICAgaWYobGltaXQxIDwgMSkKLSsgICAgICAgICAgICAgICAgaWYgKGxpbWl0MSA8IDEgfHwgIWxlbjEpCi0gICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgY29kZSA9IChzLT5iaXRzW3AwXVtnJjI1NV0gPDwgbGVuMSkgKyBzLT5iaXRzW3AxXVtiJjI1NV07Ci0gICAgICAgICAgICAgICAgIGZvcihyPS0xNjsgcjwxNjsgcisrKXsKLSAgICAgICAgICAgICAgICAgICAgIGludCBsZW4yID0gcy0+bGVuWzJdW3ImMjU1XTsKLS0gICAgICAgICAgICAgICAgICAgIGlmKGxlbjIgPiBsaW1pdDEpCi0rICAgICAgICAgICAgICAgICAgICBpZiAobGVuMiA+IGxpbWl0MSB8fCAhbGVuMikKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgIGxlbltpXSA9IGxlbjAgKyBsZW4xICsgbGVuMjsKLSAgICAgICAgICAgICAgICAgICAgIGJpdHNbaV0gPSAoY29kZSA8PCBsZW4yKSArIHMtPmJpdHNbMl1bciYyNTVdOwotLS0gCi0xLjguNS4yLjIzMy5nOTMyZjdlNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtbGF2Zi1jb21wdXRlLXByb2JlLWJ1ZmZlci1zaXplLW1vcmUtcmVsaWFibHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtbGF2Zi1jb21wdXRlLXByb2JlLWJ1ZmZlci1zaXplLW1vcmUtcmVsaWFibHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhNGFhMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLWxhdmYtY29tcHV0ZS1wcm9iZS1idWZmZXItc2l6ZS1tb3JlLXJlbGlhYmx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotZ3N0LWZmbXBlZzogbGF2ZjogY29tcHV0ZSBwcm9iZSBidWZmZXIgc2l6ZSBtb3JlIHJlbGlhYmx5LgotCi1UaGUgcHJldmlvdXMgY29kZSBjb21wdXRlcyB0aGUgb2Zmc2V0IGJ5IHJldmVyc2luZyB0aGUgZ3Jvd3RoCi1vZiB0aGUgYWxsb2NhdGVkIGJ1ZmZlciBzaXplOiBpdCBpcyBjb21wbGV4IGFuZCBkaWQgbGVhZCB0bwotaW5jb25zaXN0ZW5jaWVzIHdoZW4gdGhlIHNpemUgbGltaXQgaXMgcmVhY2hlZC4KLQotRml4IHRyYWMgdGlja2V0ICMxOTkxLgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMDM4NDdlYjgyNTkyOTFiNGZmMWJkODQwYmQ3NzlkMDY5OWQ3MWY5NikKLQotQ29uZmxpY3RzOgotCWxpYmF2Zm9ybWF0L3V0aWxzLmMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYmF2Zm9ybWF0L3V0aWxzLmMgfCAgICA0ICsrLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3V0aWxzLmMgYi9saWJhdmZvcm1hdC91dGlscy5jCi1pbmRleCA3OTQwMDM3Li5iZTczYzRhIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Zm9ybWF0L3V0aWxzLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmZvcm1hdC91dGlscy5jCi1AQCAtNDU5LDcgKzQ1OSw3IEBAIGludCBhdl9wcm9iZV9pbnB1dF9idWZmZXIoQVZJT0NvbnRleHQgKnBiLCBBVklucHV0Rm9ybWF0ICoqZm10LAotIHsKLSAgICAgQVZQcm9iZURhdGEgcGQgPSB7IGZpbGVuYW1lID8gZmlsZW5hbWUgOiAiIiwgTlVMTCwgLW9mZnNldCB9OwotICAgICB1bnNpZ25lZCBjaGFyICpidWYgPSBOVUxMOwotLSAgICBpbnQgcmV0ID0gMCwgcHJvYmVfc2l6ZTsKLSsgICAgaW50IHJldCA9IDAsIHByb2JlX3NpemUsIGJ1Zl9vZmZzZXQgPSAwOwotIAotICAgICBpZiAoIW1heF9wcm9iZV9zaXplKSB7Ci0gICAgICAgICBtYXhfcHJvYmVfc2l6ZSA9IFBST0JFX0JVRl9NQVg7Ci1AQCAtNDk5LDcgKzQ5OSw3IEBAIGludCBhdl9wcm9iZV9pbnB1dF9idWZmZXIoQVZJT0NvbnRleHQgKnBiLCBBVklucHV0Rm9ybWF0ICoqZm10LAotICAgICAgICAgICAgIHNjb3JlID0gMDsKLSAgICAgICAgICAgICByZXQgPSAwOyAgICAgICAgICAgIC8qIGVycm9yIHdhcyBlbmQgb2YgZmlsZSwgbm90aGluZyByZWFkICovCi0gICAgICAgICB9Ci0tICAgICAgICBwZC5idWZfc2l6ZSArPSByZXQ7Ci0rICAgICAgICBwZC5idWZfc2l6ZSA9IGJ1Zl9vZmZzZXQgKz0gcmV0OwotICAgICAgICAgcGQuYnVmID0gJmJ1ZltvZmZzZXRdOwotIAotICAgICAgICAgbWVtc2V0KHBkLmJ1ZiArIHBkLmJ1Zl9zaXplLCAwLCBBVlBST0JFX1BBRERJTkdfU0laRSk7Ci0tLSAKLTEuNy41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLW1qcGVnZGVjLWNoZWNrLVNFLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLW1qcGVnZGVjLWNoZWNrLVNFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTBiYWZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1tanBlZ2RlYy1jaGVjay1TRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMWY0MWNmZmUxZTNlNzk2MjBmNTg3NTQ1YmRmY2JkN2U2ZTY4ZWQyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBTdW4sIDExIE5vdiAyMDEyIDAwOjAxOjI0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1qcGVnZGVjOiBjaGVjayBTRS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Db21taXQgMWY0MWNmZmUxZTNlNzk2MjBmNTg3NTQ1YmRmY2JkN2U2ZTY4ZWQyOSByZWxlYXNlLzEuMQotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL21qcGVnZGVjLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tanBlZ2RlYy5jIGIvbGliYXZjb2RlYy9tanBlZ2RlYy5jCi1pbmRleCA2YjUyNjZkLi4wYTcxYTZmIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWpwZWdkZWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWpwZWdkZWMuYwotQEAgLTkwNSw2ICs5MDUsMTEgQEAgc3RhdGljIGludCBtanBlZ19kZWNvZGVfc2Nhbl9wcm9ncmVzc2l2ZQotICAgICBpbnQxNl90ICpxdWFudF9tYXRyaXggPSBzLT5xdWFudF9tYXRyaXhlc1sgcy0+cXVhbnRfaW5kZXhbY10gXTsKLSAgICAgR2V0Qml0Q29udGV4dCBtYl9iaXRtYXNrX2diOwotIAotKyAgICBpZiAoc2UgPiA2MykgewotKyAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJTRSAlZCBpcyB0b28gbGFyZ2VcbiIsIHNlKTsKLSsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICB9Ci0rCi0gICAgIGlmIChtYl9iaXRtYXNrKSB7Ci0gICAgICAgICBpbml0X2dldF9iaXRzKCZtYl9iaXRtYXNrX2diLCBtYl9iaXRtYXNrLCBzLT5tYl93aWR0aCpzLT5tYl9oZWlnaHQpOwotICAgICB9Ci0tLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1wZ3NzdWJkZWMtY2hlY2stUkxFLXNpemUtYmVmb3JlLWNvcHlpbmcuLUZpeC1vdXQtb2YtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXBnc3N1YmRlYy1jaGVjay1STEUtc2l6ZS1iZWZvcmUtY29weWluZy4tRml4LW91dC1vZi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNDEzNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXBnc3N1YmRlYy1jaGVjay1STEUtc2l6ZS1iZWZvcmUtY29weWluZy4tRml4LW91dC1vZi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDI4YmY2ODViZmM2ZDBjNzQ0MzY5Y2RmMzY3ZjYxYTc4ZDgwZDBiMDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogVGh1LCAxNSBOb3YgMjAxMiAxNjo0MToyOCArMDEwMAotU3ViamVjdDogW1BBVENIXSBwZ3NzdWJkZWM6IGNoZWNrIFJMRSBzaXplIGJlZm9yZSBjb3B5aW5nLiBGaXggb3V0IG9mIGFycmF5Ci0gYWNjZXNzZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Db21taXQgMjhiZjY4NWJmYzZkMGM3NDQzNjljZGYzNjdmNjFhNzhkODBkMGIwMSByZWxlYXNlLzEuMQotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjMGQ2OGJlNTU1ZjU4NTg3MDMzODMwNDBlMDRmY2Q2NTI5Nzc3MDYxKQotLS0tCi0gbGliYXZjb2RlYy9wZ3NzdWJkZWMuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Bnc3N1YmRlYy5jIGIvbGliYXZjb2RlYy9wZ3NzdWJkZWMuYwotaW5kZXggNzI4ZjE3OC4uMjZhM2MyYSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3Bnc3N1YmRlYy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9wZ3NzdWJkZWMuYwotQEAgLTIwMiw2ICsyMDIsMTEgQEAgc3RhdGljIGludCBwYXJzZV9waWN0dXJlX3NlZ21lbnQoQVZDb2RlYwotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gCi0rICAgIGlmIChidWZfc2l6ZSA+IHJsZV9iaXRtYXBfbGVuKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgInRvbyBtdWNoIFJMRSBkYXRhXG4iKTsKLSsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICB9Ci0rCi0gICAgIGN0eC0+cGljdHVyZS53ID0gd2lkdGg7Ci0gICAgIGN0eC0+cGljdHVyZS5oID0gaGVpZ2h0OwotIAotLS0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtcG5nZGVjLWZpbHRlci1kb250LWFjY2Vzcy1vdXQtb2YtYXJyYXktZWxlbWVudHMtYXQtdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1wbmdkZWMtZmlsdGVyLWRvbnQtYWNjZXNzLW91dC1vZi1hcnJheS1lbGVtZW50cy1hdC10LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTVmYjdkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1wbmdkZWMtZmlsdGVyLWRvbnQtYWNjZXNzLW91dC1vZi1hcnJheS1lbGVtZW50cy1hdC10LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotZ3N0LWZmbXBlZzogcG5nZGVjL2ZpbHRlcjogZG9udCBhY2Nlc3Mgb3V0IG9mIGFycmF5IGVsZW1lbnRzIGF0IHRoZSBlbmQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Y29kZWMvcG5nZGVjLmMgfCAgIDEyICsrKystLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9wbmdkZWMuYyBiL2xpYmF2Y29kZWMvcG5nZGVjLmMKLWluZGV4IDk3YzBhZDEuLjE5M2UzNWUgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9wbmdkZWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcG5nZGVjLmMKLUBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBmZl9hZGRfcG5nX3BhZXRoX3ByZWRpY3Rpb24odWludDhfdCAqZHN0LCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgKnRvcCwgaW50IHcKLSAgICAgaWYoYnBwID49IDIpIGcgPSBkc3RbMV07XAotICAgICBpZihicHAgPj0gMykgYiA9IGRzdFsyXTtcCi0gICAgIGlmKGJwcCA+PSA0KSBhID0gZHN0WzNdO1wKLS0gICAgZm9yKDsgaSA8IHNpemU7IGkrPWJwcCkge1wKLSsgICAgZm9yKDsgaSA8PSBzaXplIC0gYnBwOyBpKz1icHApIHtcCi0gICAgICAgICBkc3RbaSswXSA9IHIgPSBvcChyLCBzcmNbaSswXSwgbGFzdFtpKzBdKTtcCi0gICAgICAgICBpZihicHAgPT0gMSkgY29udGludWU7XAotICAgICAgICAgZHN0W2krMV0gPSBnID0gb3AoZywgc3JjW2krMV0sIGxhc3RbaSsxXSk7XAotQEAgLTIwNiwxMyArMjA2LDkgQEAgdm9pZCBmZl9hZGRfcG5nX3BhZXRoX3ByZWRpY3Rpb24odWludDhfdCAqZHN0LCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgKnRvcCwgaW50IHcKLSAgICAgZWxzZSBpZihicHAgPT0gMikgVU5ST0xMMSgyLCBvcClcCi0gICAgIGVsc2UgaWYoYnBwID09IDMpIFVOUk9MTDEoMywgb3ApXAotICAgICBlbHNlIGlmKGJwcCA9PSA0KSBVTlJPTEwxKDQsIG9wKVwKLS0gICAgZWxzZSB7XAotLSAgICAgICAgZm9yICg7IGkgPCBzaXplOyBpICs9IGJwcCkge1wKLS0gICAgICAgICAgICBpbnQgajtcCi0tICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGJwcDsgaisrKVwKLS0gICAgICAgICAgICAgICAgZHN0W2kral0gPSBvcChkc3RbaStqLWJwcF0sIHNyY1tpK2pdLCBsYXN0W2kral0pO1wKLS0gICAgICAgIH1cCi0tICAgIH0KLSsgICAgZm9yICg7IGkgPCBzaXplOyBpKyspIHtcCi0rICAgICAgICBkc3RbaV0gPSBvcChkc3RbaS1icHBdLCBzcmNbaV0sIGxhc3RbaV0pO1wKLSsgICAgfVwKLSAKLSAvKiBOT1RFOiAnZHN0JyBjYW4gYmUgZXF1YWwgdG8gJ2xhc3QnICovCi0gc3RhdGljIHZvaWQgcG5nX2ZpbHRlcl9yb3coUE5HRFNQQ29udGV4dCAqZHNwLCB1aW50OF90ICpkc3QsIGludCBmaWx0ZXJfdHlwZSwKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtcWRtMi1jaGVjay1hcnJheS1pbmRleC1iZWZvcmUtdXNlLWZpeC1vdXQtb2YtYXJyYXktYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1xZG0yLWNoZWNrLWFycmF5LWluZGV4LWJlZm9yZS11c2UtZml4LW91dC1vZi1hcnJheS1hLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Yzk0MjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1xZG0yLWNoZWNrLWFycmF5LWluZGV4LWJlZm9yZS11c2UtZml4LW91dC1vZi1hcnJheS1hLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotZ3N0LWZmbXBlZzogcWRtMjogY2hlY2sgYXJyYXkgaW5kZXggYmVmb3JlIHVzZSwgZml4IG91dCBvZiBhcnJheQotIGFjY2Vzc2VzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvcWRtMi5jIHwgICAgNSArKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9xZG0yLmMgYi9saWJhdmNvZGVjL3FkbTIuYwotaW5kZXggNGNmNGIyZi4uMWRmYjhkNSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3FkbTIuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcWRtMi5jCi1AQCAtMTI1Nyw2ICsxMjU3LDExIEBAIHN0YXRpYyB2b2lkIHFkbTJfZGVjb2RlX3N1cGVyX2Jsb2NrIChRRE0yQ29udGV4dCAqcSkKLSAgICAgZm9yIChpID0gMDsgcGFja2V0X2J5dGVzID4gMDsgaSsrKSB7Ci0gICAgICAgICBpbnQgajsKLSAKLSsgICAgICAgIGlmIChpPj1GRl9BUlJBWV9FTEVNUyhxLT5zdWJfcGFja2V0X2xpc3RfQSkpIHsKLSsgICAgICAgICAgICBTQU1QTEVTX05FRURFRF8yKCJ0b28gbWFueSBwYWNrZXQgYnl0ZXMiKTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICBxLT5zdWJfcGFja2V0X2xpc3RfQVtpXS5uZXh0ID0gTlVMTDsKLSAKLSAgICAgICAgIGlmIChpID4gMCkgewotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1xZG0yZGVjLWZpeC1idWZmZXItb3ZlcmZsb3cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtcWRtMmRlYy1maXgtYnVmZmVyLW92ZXJmbG93LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2ZmYzAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1xZG0yZGVjLWZpeC1idWZmZXItb3ZlcmZsb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1nc3QtZmZtcGVnOiBxZG0yZGVjOiBmaXggYnVmZmVyIG92ZXJmbG93LiBGaXhlcyBOR1MwMDE0NAotCi1UaGlzIGFsc28gYWRkcyBhIGZldyBsaW5lcyBvZiBjb2RlIGZyb20gbWFzdGVyIHRoYXQgYXJlIG5lZWRlZCBmb3IgdGhpcyBmaXguCi0KLVRoYW5rcyB0byBQaGlsbGlwIGZvciBzdWdnZXN0aW9ucyB0byBpbXByb3ZlIHRoZSBwYXRjaC4KLUZvdW5kLWJ5OiBQaGlsbGlwIExhbmdsb2lzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0tLS0KLSBsaWJhdmNvZGVjL3FkbTIuYyB8ICAgIDkgKysrKysrKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3FkbTIuYyBiL2xpYmF2Y29kZWMvcWRtMi5jCi1pbmRleCAzYWE5ZTViLi5lMDAwZGY4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcWRtMi5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9xZG0yLmMKLUBAIC03Niw2ICs3Niw3IEBAIGRvIHsgXAotICNkZWZpbmUgU0FNUExFU19ORUVERURfMih3aHkpIFwKLSAgICAgIGF2X2xvZyAoTlVMTCxBVl9MT0dfSU5GTywiVGhpcyBmaWxlIHRyaWdnZXJzIHNvbWUgbWlzc2luZyBjb2RlLiBQbGVhc2UgY29udGFjdCB0aGUgZGV2ZWxvcGVycy5cblBvc2l0aW9uOiAlc1xuIix3aHkpOwotIAotKyNkZWZpbmUgUURNMl9NQVhfRlJBTUVfU0laRSA1MTIKLSAKLSB0eXBlZGVmIGludDhfdCBzYl9pbnQ4X2FycmF5WzJdWzMwXVs2NF07Ci0gCi1AQCAtMTY4LDcgKzE2OSw3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgICAgLy8vIEkvTyBkYXRhCi0gICAgIGNvbnN0IHVpbnQ4X3QgKmNvbXByZXNzZWRfZGF0YTsKLSAgICAgaW50IGNvbXByZXNzZWRfc2l6ZTsKLS0gICAgZmxvYXQgb3V0cHV0X2J1ZmZlclsxMDI0XTsKLSsgICAgZmxvYXQgb3V0cHV0X2J1ZmZlcltRRE0yX01BWF9GUkFNRV9TSVpFICogTVBBX01BWF9DSEFOTkVMUyAqIDJdOwotIAotICAgICAvLy8gU3ludGhlc2lzIGZpbHRlcgotICAgICBNUEFEU1BDb250ZXh0IG1wYWRzcDsKLUBAIC0xODE5LDYgKzE4MjAsOSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgcWRtMl9kZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0gICAgIHMtPmdyb3VwX29yZGVyID0gYXZfbG9nMihzLT5ncm91cF9zaXplKSArIDE7Ci0gICAgIHMtPmZyYW1lX3NpemUgPSBzLT5ncm91cF9zaXplIC8gMTY7IC8vIDE2IGl0ZXJhdGlvbnMgcGVyIHN1cGVyIGJsb2NrCi0gCi0rICAgIGlmIChzLT5mcmFtZV9zaXplID4gUURNMl9NQVhfRlJBTUVfU0laRSkKLSsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKwotICAgICBzLT5zdWJfc2FtcGxpbmcgPSBzLT5mZnRfb3JkZXIgLSA3OwotICAgICBzLT5mcmVxdWVuY3lfcmFuZ2UgPSAyNTUgLyAoMSA8PCAoMiAtIHMtPnN1Yl9zYW1wbGluZykpOwotIAotQEAgLTE4ODcsNiArMTg5MSw5IEBAIHN0YXRpYyBpbnQgcWRtMl9kZWNvZGUgKFFETTJDb250ZXh0ICpxLCBjb25zdCB1aW50OF90ICppbiwgaW50MTZfdCAqb3V0KQotICAgICBpbnQgY2gsIGk7Ci0gICAgIGNvbnN0IGludCBmcmFtZV9zaXplID0gKHEtPmZyYW1lX3NpemUgKiBxLT5jaGFubmVscyk7Ci0gCi0rICAgIGlmKCh1bnNpZ25lZClmcmFtZV9zaXplID4gRkZfQVJSQVlfRUxFTVMocS0+b3V0cHV0X2J1ZmZlcikvMikKLSsgICAgICAgIHJldHVybiAtMTsKLSsKLSAgICAgLyogc2VsZWN0IGlucHV0IGJ1ZmZlciAqLwotICAgICBxLT5jb21wcmVzc2VkX2RhdGEgPSBpbjsKLSAgICAgcS0+Y29tcHJlc3NlZF9zaXplID0gcS0+Y2hlY2tzdW1fc2l6ZTsKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtcm9xdmlkZW9kZWMtY2hlY2stZGltZW5zaW9ucy12YWxpZGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1yb3F2aWRlb2RlYy1jaGVjay1kaW1lbnNpb25zLXZhbGlkaXR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTU4YWZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1yb3F2aWRlb2RlYy1jaGVjay1kaW1lbnNpb25zLXZhbGlkaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAzOTFlMGZjNmM5MGNlZDY2NTZiNzRmNTBmM2E0ODdiNmRjNzZlYTYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFRodSwgMjkgTm92IDIwMTIgMTU6MTg6MTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gcm9xdmlkZW9kZWM6IGNoZWNrIGRpbWVuc2lvbnMgdmFsaWRpdHkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Db21taXQgMzkxZTBmYzZjOTBjZWQ2NjU2Yjc0ZjUwZjNhNDg3YjZkYzc2ZWE2MyByZWxlYXNlLzAuNwotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAzYWU2MTA0NTExNzBjZDVhMjhiMzM5NTAwMDZmZjBiZDIzMDM2ODQ1KQotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy9yb3F2aWRlb2RlYy5jIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3JvcXZpZGVvZGVjLmMgYi9saWJhdmNvZGVjL3JvcXZpZGVvZGVjLmMKLWluZGV4IGYwOTc3ZjYuLjRlMzQyMzEgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9yb3F2aWRlb2RlYy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9yb3F2aWRlb2RlYy5jCi1AQCAtMTU3LDYgKzE1NywxMiBAQCBzdGF0aWMgYXZfY29sZCBpbnQgcm9xX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAgUm9xQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gCi0gICAgIHMtPmF2Y3R4ID0gYXZjdHg7Ci0rCi0rICAgIGlmIChhdmN0eC0+d2lkdGglMTYgfHwgYXZjdHgtPmhlaWdodCUxNikgewotKyAgICAgICAgIGF2X2xvZ19hc2tfZm9yX3NhbXBsZShhdmN0eCwgImRpbWVuc2lvbnMgbm90IGJlaW5nIGEgbXVsdGlwbGUgb2YgMTYgYXJlIHVuc3VwcG9ydGVkXG4iKTsKLSsgICAgICAgICByZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7Ci0rICAgIH0KLSsKLSAgICAgcy0+d2lkdGggPSBhdmN0eC0+d2lkdGg7Ci0gICAgIHMtPmhlaWdodCA9IGF2Y3R4LT5oZWlnaHQ7Ci0gICAgIGF2Y29kZWNfZ2V0X2ZyYW1lX2RlZmF1bHRzKCZzLT5mcmFtZXNbMF0pOwotLS0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtc21hY2tlcmRlYy1DaGVjay10aGF0LXRoZS1sYXN0LWluZGV4ZXMtYXJlLXdpdGhpbi10aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1zbWFja2VyZGVjLUNoZWNrLXRoYXQtdGhlLWxhc3QtaW5kZXhlcy1hcmUtd2l0aGluLXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWIxNjE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS1zbWFja2VyZGVjLUNoZWNrLXRoYXQtdGhlLWxhc3QtaW5kZXhlcy1hcmUtd2l0aGluLXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotZ3N0LWZmbXBlZzogc21hY2tlcmRlYzogQ2hlY2sgdGhhdCB0aGUgbGFzdCBpbmRleGVzIGFyZSB3aXRoaW4gdGhlCi0gdGFibGUuCi0KLUZpeGVzIENWRS0yMDExLTM5NDQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotLS0tCi0gbGliYXZjb2RlYy9zbWFja2VyLmMgfCAgICA1ICsrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3NtYWNrZXIuYyBiL2xpYmF2Y29kZWMvc21hY2tlci5jCi1pbmRleCAzMGY5OWI0Li4yYThiYWU4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvc21hY2tlci5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9zbWFja2VyLmMKLUBAIC0yNTksNiArMjU5LDExIEBAIHN0YXRpYyBpbnQgc21hY2tlcl9kZWNvZGVfaGVhZGVyX3RyZWUoU21hY2tWQ29udGV4dCAqc21rLCBHZXRCaXRDb250ZXh0ICpnYiwgaW50Ci0gICAgIGlmKGN0eC5sYXN0WzBdID09IC0xKSBjdHgubGFzdFswXSA9IGh1ZmYuY3VycmVudCsrOwotICAgICBpZihjdHgubGFzdFsxXSA9PSAtMSkgY3R4Lmxhc3RbMV0gPSBodWZmLmN1cnJlbnQrKzsKLSAgICAgaWYoY3R4Lmxhc3RbMl0gPT0gLTEpIGN0eC5sYXN0WzJdID0gaHVmZi5jdXJyZW50Kys7Ci0rICAgIGlmKGh1ZmYuY3VycmVudCA+IGh1ZmYubGVuZ3RoKXsKLSsgICAgICAgIGN0eC5sYXN0WzBdID0gY3R4Lmxhc3RbMV0gPSBjdHgubGFzdFsyXSA9IDE7Ci0rICAgICAgICBhdl9sb2coc21rLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiYmlndHJlZSBkYW1hZ2VkXG4iKTsKLSsgICAgICAgIHJldHVybiAtMTsKLSsgICAgfQotIAotICAgICAqcmVjb2RlcyA9IGh1ZmYudmFsdWVzOwotIAotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS12cDMtQ29weS1hbGwtMy1mcmFtZXMtZm9yLXRocmVhZC11cGRhdGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXZwMy1Db3B5LWFsbC0zLWZyYW1lcy1mb3ItdGhyZWFkLXVwZGF0ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExOTg5Y2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXZwMy1Db3B5LWFsbC0zLWZyYW1lcy1mb3ItdGhyZWFkLXVwZGF0ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1nc3QtZmZtcGVnOiB2cDM6IENvcHkgYWxsIDMgZnJhbWVzIGZvciB0aHJlYWQgdXBkYXRlcy4KLQotVGhpcyBmaXhlcyBhIGRvdWJsZSByZWxlYXNlIG9mIHRoZSBjdXJyZW50IGZyYW1lIG9uIGRlaW5pdC4KLUZpeGVzIENWRS0yMDExLTM5MzQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFl1ZS5UYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliYXZjb2RlYy92cDMuYyB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnAzLmMgYi9saWJhdmNvZGVjL3ZwMy5jCi1pbmRleCA3MzhhZTlmLi5iNWRhYWZjIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdnAzLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3ZwMy5jCi1AQCAtMTg1OSw3ICsxODU5LDcgQEAgc3RhdGljIGludCB2cDNfdXBkYXRlX3RocmVhZF9jb250ZXh0KEFWQ29kZWNDb250ZXh0ICpkc3QsIGNvbnN0IEFWQ29kZWNDb250ZXh0ICoKLSAgICAgICAgIHx8cy0+d2lkdGggIT0gczEtPndpZHRoCi0gICAgICAgICB8fHMtPmhlaWdodCE9IHMxLT5oZWlnaHQpIHsKLSAgICAgICAgIGlmIChzICE9IHMxKQotLSAgICAgICAgICAgIGNvcHlfZmllbGRzKHMsIHMxLCBnb2xkZW5fZnJhbWUsIGN1cnJlbnRfZnJhbWUpOwotKyAgICAgICAgICAgIGNvcHlfZmllbGRzKHMsIHMxLCBnb2xkZW5fZnJhbWUsIGtleWZyYW1lKTsKLSAgICAgICAgIHJldHVybiAtMTsKLSAgICAgfQotIAotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMS12cDMtZml4LW9vYi1yZWFkLWZvci1uZWdhdGl2ZS10b2tlbnMtYW5kLW1lbWxlYWtzLW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXZwMy1maXgtb29iLXJlYWQtZm9yLW5lZ2F0aXZlLXRva2Vucy1hbmQtbWVtbGVha3Mtb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4M2Q4ZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXZwMy1maXgtb29iLXJlYWQtZm9yLW5lZ2F0aXZlLXRva2Vucy1hbmQtbWVtbGVha3Mtb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotZ3N0LWZmbXBlZzogdnAzOiBmaXggb29iIHJlYWQgZm9yIG5lZ2F0aXZlIHRva2VucyBhbmQgbWVtbGVha3Mgb24gZXJyb3IuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZS5UYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliYXZjb2RlYy92cDMuYyB8ICAgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92cDMuYyBiL2xpYmF2Y29kZWMvdnAzLmMKLWluZGV4IDM2NzE1YmIuLmNlMTRlNjMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy92cDMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdnAzLmMKLUBAIC00NSw2ICs0NSw3IEBACi0gI2RlZmluZSBGUkFHTUVOVF9QSVhFTFMgOAotIAotIHN0YXRpYyBhdl9jb2xkIGludCB2cDNfZGVjb2RlX2VuZChBVkNvZGVjQ29udGV4dCAqYXZjdHgpOwotK3N0YXRpYyB2b2lkIHZwM19kZWNvZGVfZmx1c2goQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKLSAKLSAvL0ZJWE1FIHNwbGl0IHRoaW5ncyBvdXQgaW50byB0aGVpciBvd24gYXJyYXlzCi0gdHlwZWRlZiBzdHJ1Y3QgVnAzRnJhZ21lbnQgewotQEAgLTg5MCw3ICs4OTEsNyBAQCBzdGF0aWMgaW50IHVucGFja192bGNzKFZwM0RlY29kZUNvbnRleHQgKnMsIEdldEJpdENvbnRleHQgKmdiLAotICAgICAgICAgICAgIC8qIGRlY29kZSBhIFZMQyBpbnRvIGEgdG9rZW4gKi8KLSAgICAgICAgICAgICB0b2tlbiA9IGdldF92bGMyKGdiLCB2bGNfdGFibGUsIDExLCAzKTsKLSAgICAgICAgICAgICAvKiB1c2UgdGhlIHRva2VuIHRvIGdldCBhIHplcm8gcnVuLCBhIGNvZWZmaWNpZW50LCBhbmQgYW4gZW9iIHJ1biAqLwotLSAgICAgICAgICAgIGlmICh0b2tlbiA8PSA2KSB7Ci0rICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkgdG9rZW4gPD0gNlUpIHsKLSAgICAgICAgICAgICAgICAgZW9iX3J1biA9IGVvYl9ydW5fYmFzZVt0b2tlbl07Ci0gICAgICAgICAgICAgICAgIGlmIChlb2JfcnVuX2dldF9iaXRzW3Rva2VuXSkKLSAgICAgICAgICAgICAgICAgICAgIGVvYl9ydW4gKz0gZ2V0X2JpdHMoZ2IsIGVvYl9ydW5fZ2V0X2JpdHNbdG9rZW5dKTsKLUBAIC05MDgsNyArOTA5LDcgQEAgc3RhdGljIGludCB1bnBhY2tfdmxjcyhWcDNEZWNvZGVDb250ZXh0ICpzLCBHZXRCaXRDb250ZXh0ICpnYiwKLSAgICAgICAgICAgICAgICAgICAgIGNvZWZmX2kgICAgICAgICs9IGVvYl9ydW47Ci0gICAgICAgICAgICAgICAgICAgICBlb2JfcnVuID0gMDsKLSAgICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgfSBlbHNlIGlmICh0b2tlbiA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgIGJpdHNfdG9fZ2V0ID0gY29lZmZfZ2V0X2JpdHNbdG9rZW5dOwotICAgICAgICAgICAgICAgICBpZiAoYml0c190b19nZXQpCi0gICAgICAgICAgICAgICAgICAgICBiaXRzX3RvX2dldCA9IGdldF9iaXRzKGdiLCBiaXRzX3RvX2dldCk7Ci1AQCAtOTQyLDYgKzk0MywxMCBAQCBzdGF0aWMgaW50IHVucGFja192bGNzKFZwM0RlY29kZUNvbnRleHQgKnMsIEdldEJpdENvbnRleHQgKmdiLAotICAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2VmZl9pbmRleCsxOyBpIDw9IGNvZWZmX2luZGV4K3plcm9fcnVuOyBpKyspCi0gICAgICAgICAgICAgICAgICAgICBzLT5udW1fY29kZWRfZnJhZ3NbcGxhbmVdW2ldLS07Ci0gICAgICAgICAgICAgICAgIGNvZWZmX2krKzsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwKLSsgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHRva2VuICVkXG4iLCB0b2tlbik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC05OTEsNiArOTk2LDggQEAgc3RhdGljIGludCB1bnBhY2tfZGN0X2NvZWZmcyhWcDNEZWNvZGVDb250ZXh0ICpzLCBHZXRCaXRDb250ZXh0ICpnYikKLSAgICAgLyogdW5wYWNrIHRoZSBZIHBsYW5lIERDIGNvZWZmaWNpZW50cyAqLwotICAgICByZXNpZHVhbF9lb2JfcnVuID0gdW5wYWNrX3ZsY3MocywgZ2IsICZzLT5kY192bGNbZGNfeV90YWJsZV0sIDAsCi0gICAgICAgICAwLCByZXNpZHVhbF9lb2JfcnVuKTsKLSsgICAgaWYgKHJlc2lkdWFsX2VvYl9ydW4gPCAwKQotKyAgICAgICAgcmV0dXJuIHJlc2lkdWFsX2VvYl9ydW47Ci0gCi0gICAgIC8qIHJldmVyc2UgcHJlZGljdGlvbiBvZiB0aGUgWS1wbGFuZSBEQyBjb2VmZmljaWVudHMgKi8KLSAgICAgcmV2ZXJzZV9kY19wcmVkaWN0aW9uKHMsIDAsIHMtPmZyYWdtZW50X3dpZHRoWzBdLCBzLT5mcmFnbWVudF9oZWlnaHRbMF0pOwotQEAgLTk5OCw4ICsxMDA1LDEyIEBAIHN0YXRpYyBpbnQgdW5wYWNrX2RjdF9jb2VmZnMoVnAzRGVjb2RlQ29udGV4dCAqcywgR2V0Qml0Q29udGV4dCAqZ2IpCi0gICAgIC8qIHVucGFjayB0aGUgQyBwbGFuZSBEQyBjb2VmZmljaWVudHMgKi8KLSAgICAgcmVzaWR1YWxfZW9iX3J1biA9IHVucGFja192bGNzKHMsIGdiLCAmcy0+ZGNfdmxjW2RjX2NfdGFibGVdLCAwLAotICAgICAgICAgMSwgcmVzaWR1YWxfZW9iX3J1bik7Ci0rICAgIGlmIChyZXNpZHVhbF9lb2JfcnVuIDwgMCkKLSsgICAgICAgIHJldHVybiByZXNpZHVhbF9lb2JfcnVuOwotICAgICByZXNpZHVhbF9lb2JfcnVuID0gdW5wYWNrX3ZsY3MocywgZ2IsICZzLT5kY192bGNbZGNfY190YWJsZV0sIDAsCi0gICAgICAgICAyLCByZXNpZHVhbF9lb2JfcnVuKTsKLSsgICAgaWYgKHJlc2lkdWFsX2VvYl9ydW4gPCAwKQotKyAgICAgICAgcmV0dXJuIHJlc2lkdWFsX2VvYl9ydW47Ci0gCi0gICAgIC8qIHJldmVyc2UgcHJlZGljdGlvbiBvZiB0aGUgQy1wbGFuZSBEQyBjb2VmZmljaWVudHMgKi8KLSAgICAgaWYgKCEocy0+YXZjdHgtPmZsYWdzICYgQ09ERUNfRkxBR19HUkFZKSkKLUBAIC0xMDM2LDExICsxMDQ3LDE3IEBAIHN0YXRpYyBpbnQgdW5wYWNrX2RjdF9jb2VmZnMoVnAzRGVjb2RlQ29udGV4dCAqcywgR2V0Qml0Q29udGV4dCAqZ2IpCi0gICAgIGZvciAoaSA9IDE7IGkgPD0gNjM7IGkrKykgewotICAgICAgICAgICAgIHJlc2lkdWFsX2VvYl9ydW4gPSB1bnBhY2tfdmxjcyhzLCBnYiwgeV90YWJsZXNbaV0sIGksCi0gICAgICAgICAgICAgICAgIDAsIHJlc2lkdWFsX2VvYl9ydW4pOwotKyAgICAgICAgICAgIGlmIChyZXNpZHVhbF9lb2JfcnVuIDwgMCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIHJlc2lkdWFsX2VvYl9ydW47Ci0gCi0gICAgICAgICAgICAgcmVzaWR1YWxfZW9iX3J1biA9IHVucGFja192bGNzKHMsIGdiLCBjX3RhYmxlc1tpXSwgaSwKLSAgICAgICAgICAgICAgICAgMSwgcmVzaWR1YWxfZW9iX3J1bik7Ci0rICAgICAgICAgICAgaWYgKHJlc2lkdWFsX2VvYl9ydW4gPCAwKQotKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzaWR1YWxfZW9iX3J1bjsKLSAgICAgICAgICAgICByZXNpZHVhbF9lb2JfcnVuID0gdW5wYWNrX3ZsY3MocywgZ2IsIGNfdGFibGVzW2ldLCBpLAotICAgICAgICAgICAgICAgICAyLCByZXNpZHVhbF9lb2JfcnVuKTsKLSsgICAgICAgICAgICBpZiAocmVzaWR1YWxfZW9iX3J1biA8IDApCi0rICAgICAgICAgICAgICAgIHJldHVybiByZXNpZHVhbF9lb2JfcnVuOwotICAgICB9Ci0gCi0gICAgIHJldHVybiAwOwotQEAgLTE3NzcsMTAgKzE3OTQsMTUgQEAgc3RhdGljIGludCB2cDNfdXBkYXRlX3RocmVhZF9jb250ZXh0KEFWQ29kZWNDb250ZXh0ICpkc3QsIGNvbnN0IEFWQ29kZWNDb250ZXh0ICoKLSAgICAgVnAzRGVjb2RlQ29udGV4dCAqcyA9IGRzdC0+cHJpdl9kYXRhLCAqczEgPSBzcmMtPnByaXZfZGF0YTsKLSAgICAgaW50IHFwc19jaGFuZ2VkID0gMCwgaSwgZXJyOwotIAotKyNkZWZpbmUgY29weV9maWVsZHModG8sIGZyb20sIHN0YXJ0X2ZpZWxkLCBlbmRfZmllbGQpIG1lbWNweSgmdG8tPnN0YXJ0X2ZpZWxkLCAmZnJvbS0+c3RhcnRfZmllbGQsIChjaGFyKikmdG8tPmVuZF9maWVsZCAtIChjaGFyKikmdG8tPnN0YXJ0X2ZpZWxkKQotKwotICAgICBpZiAoIXMxLT5jdXJyZW50X2ZyYW1lLmRhdGFbMF0KLSAgICAgICAgIHx8cy0+d2lkdGggIT0gczEtPndpZHRoCi0tICAgICAgICB8fHMtPmhlaWdodCE9IHMxLT5oZWlnaHQpCi0rICAgICAgICB8fHMtPmhlaWdodCE9IHMxLT5oZWlnaHQpIHsKLSsgICAgICAgIGlmIChzICE9IHMxKQotKyAgICAgICAgICAgIGNvcHlfZmllbGRzKHMsIHMxLCBnb2xkZW5fZnJhbWUsIGN1cnJlbnRfZnJhbWUpOwotICAgICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0gCi0gICAgIGlmIChzICE9IHMxKSB7Ci0gICAgICAgICAvLyBpbml0IHRhYmxlcyBpZiB0aGUgZmlyc3QgZnJhbWUgaGFzbid0IGJlZW4gZGVjb2RlZAotQEAgLTE3OTYsOCArMTgxOCw2IEBAIHN0YXRpYyBpbnQgdnAzX3VwZGF0ZV90aHJlYWRfY29udGV4dChBVkNvZGVjQ29udGV4dCAqZHN0LCBjb25zdCBBVkNvZGVjQ29udGV4dCAqCi0gICAgICAgICAgICAgbWVtY3B5KHMtPm1vdGlvbl92YWxbMV0sIHMxLT5tb3Rpb25fdmFsWzFdLCBjX2ZyYWdtZW50X2NvdW50ICogc2l6ZW9mKCpzLT5tb3Rpb25fdmFsWzFdKSk7Ci0gICAgICAgICB9Ci0gCi0tI2RlZmluZSBjb3B5X2ZpZWxkcyh0bywgZnJvbSwgc3RhcnRfZmllbGQsIGVuZF9maWVsZCkgbWVtY3B5KCZ0by0+c3RhcnRfZmllbGQsICZmcm9tLT5zdGFydF9maWVsZCwgKGNoYXIqKSZ0by0+ZW5kX2ZpZWxkIC0gKGNoYXIqKSZ0by0+c3RhcnRfZmllbGQpCi0tCi0gICAgICAgICAvLyBjb3B5IHByZXZpb3VzIGZyYW1lIGRhdGEKLSAgICAgICAgIGNvcHlfZmllbGRzKHMsIHMxLCBnb2xkZW5fZnJhbWUsIGRzcCk7Ci0gCi1AQCAtMTk4Nyw5ICsyMDA3LDYgQEAgc3RhdGljIGF2X2NvbGQgaW50IHZwM19kZWNvZGVfZW5kKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAgVnAzRGVjb2RlQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAgIGludCBpOwotIAotLSAgICBpZiAoYXZjdHgtPmlzX2NvcHkgJiYgIXMtPmN1cnJlbnRfZnJhbWUuZGF0YVswXSkKLS0gICAgICAgIHJldHVybiAwOwotLQotICAgICBhdl9mcmVlKHMtPnN1cGVyYmxvY2tfY29kaW5nKTsKLSAgICAgYXZfZnJlZShzLT5hbGxfZnJhZ21lbnRzKTsKLSAgICAgYXZfZnJlZShzLT5jb2RlZF9mcmFnbWVudF9saXN0WzBdKTsKLUBAIC0yMDE2LDEyICsyMDMzLDcgQEAgc3RhdGljIGF2X2NvbGQgaW50IHZwM19kZWNvZGVfZW5kKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKLSAgICAgZnJlZV92bGMoJnMtPm1vdGlvbl92ZWN0b3JfdmxjKTsKLSAKLSAgICAgLyogcmVsZWFzZSBhbGwgZnJhbWVzICovCi0tICAgIGlmIChzLT5nb2xkZW5fZnJhbWUuZGF0YVswXSkKLS0gICAgICAgIGZmX3RocmVhZF9yZWxlYXNlX2J1ZmZlcihhdmN0eCwgJnMtPmdvbGRlbl9mcmFtZSk7Ci0tICAgIGlmIChzLT5sYXN0X2ZyYW1lLmRhdGFbMF0gJiYgcy0+bGFzdF9mcmFtZS50eXBlICE9IEZGX0JVRkZFUl9UWVBFX0NPUFkpCi0tICAgICAgICBmZl90aHJlYWRfcmVsZWFzZV9idWZmZXIoYXZjdHgsICZzLT5sYXN0X2ZyYW1lKTsKLS0gICAgLyogbm8gbmVlZCB0byByZWxlYXNlIHRoZSBjdXJyZW50X2ZyYW1lIHNpbmNlIGl0IHdpbGwgYWx3YXlzIGJlIHBvaW50aW5nCi0tICAgICAqIHRvIHRoZSBzYW1lIGZyYW1lIGFzIGVpdGhlciB0aGUgZ29sZGVuIG9yIGxhc3QgZnJhbWUgKi8KLSsgICAgdnAzX2RlY29kZV9mbHVzaChhdmN0eCk7Ci0gCi0gICAgIHJldHVybiAwOwotIH0KLUBAIC0yMzQxLDYgKzIzNTMsMjMgQEAgc3RhdGljIHZvaWQgdnAzX2RlY29kZV9mbHVzaChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0gICAgICAgICBmZl90aHJlYWRfcmVsZWFzZV9idWZmZXIoYXZjdHgsICZzLT5jdXJyZW50X2ZyYW1lKTsKLSB9Ci0gCi0rc3RhdGljIGludCB2cDNfaW5pdF90aHJlYWRfY29weShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0rewotKyAgICBWcDNEZWNvZGVDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKLSsKLSsgICAgcy0+c3VwZXJibG9ja19jb2RpbmcgICAgICA9IE5VTEw7Ci0rICAgIHMtPmFsbF9mcmFnbWVudHMgICAgICAgICAgPSBOVUxMOwotKyAgICBzLT5jb2RlZF9mcmFnbWVudF9saXN0WzBdID0gTlVMTDsKLSsgICAgcy0+ZGN0X3Rva2Vuc19iYXNlICAgICAgICA9IE5VTEw7Ci0rICAgIHMtPnN1cGVyYmxvY2tfZnJhZ21lbnRzICAgPSBOVUxMOwotKyAgICBzLT5tYWNyb2Jsb2NrX2NvZGluZyAgICAgID0gTlVMTDsKLSsgICAgcy0+bW90aW9uX3ZhbFswXSAgICAgICAgICA9IE5VTEw7Ci0rICAgIHMtPm1vdGlvbl92YWxbMV0gICAgICAgICAgPSBOVUxMOwotKyAgICBzLT5lZGdlX2VtdV9idWZmZXIgICAgICAgID0gTlVMTDsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQotKwotIEFWQ29kZWMgZmZfdGhlb3JhX2RlY29kZXIgPSB7Ci0gICAgIC5uYW1lICAgICAgICAgICA9ICJ0aGVvcmEiLAotICAgICAudHlwZSAgICAgICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCi1AQCAtMjM1Miw2ICsyMzgxLDcgQEAgQVZDb2RlYyBmZl90aGVvcmFfZGVjb2RlciA9IHsKLSAgICAgLmNhcGFiaWxpdGllcyAgID0gQ09ERUNfQ0FQX0RSMSB8IENPREVDX0NBUF9EUkFXX0hPUklaX0JBTkQgfCBDT0RFQ19DQVBfRlJBTUVfVEhSRUFEUywKLSAgICAgLmZsdXNoID0gdnAzX2RlY29kZV9mbHVzaCwKLSAgICAgLmxvbmdfbmFtZSA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJUaGVvcmEiKSwKLSsgICAgLmluaXRfdGhyZWFkX2NvcHkgICAgICA9IE9OTFlfSUZfVEhSRUFEU19FTkFCTEVEKHZwM19pbml0X3RocmVhZF9jb3B5KSwKLSAgICAgLnVwZGF0ZV90aHJlYWRfY29udGV4dCA9IE9OTFlfSUZfVEhSRUFEU19FTkFCTEVEKHZwM191cGRhdGVfdGhyZWFkX2NvbnRleHQpCi0gfTsKLSAjZW5kaWYKLUBAIC0yMzY3LDUgKzIzOTcsNiBAQCBBVkNvZGVjIGZmX3ZwM19kZWNvZGVyID0gewotICAgICAuY2FwYWJpbGl0aWVzICAgPSBDT0RFQ19DQVBfRFIxIHwgQ09ERUNfQ0FQX0RSQVdfSE9SSVpfQkFORCB8IENPREVDX0NBUF9GUkFNRV9USFJFQURTLAotICAgICAuZmx1c2ggPSB2cDNfZGVjb2RlX2ZsdXNoLAotICAgICAubG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIk9uMiBWUDMiKSwKLSsgICAgLmluaXRfdGhyZWFkX2NvcHkgICAgICA9IE9OTFlfSUZfVEhSRUFEU19FTkFCTEVEKHZwM19pbml0X3RocmVhZF9jb3B5KSwKLSAgICAgLnVwZGF0ZV90aHJlYWRfY29udGV4dCA9IE9OTFlfSUZfVEhSRUFEU19FTkFCTEVEKHZwM191cGRhdGVfdGhyZWFkX2NvbnRleHQpCi0gfTsKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtdnFhdmlkZW8tY2hlY2stY2h1bmstc2l6ZXMtYmVmb3JlLXJlYWRpbmctY2h1bmtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAxLXZxYXZpZGVvLWNoZWNrLWNodW5rLXNpemVzLWJlZm9yZS1yZWFkaW5nLWNodW5rcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U0ZjY4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzLzAwMDEtdnFhdmlkZW8tY2hlY2stY2h1bmstc2l6ZXMtYmVmb3JlLXJlYWRpbmctY2h1bmtzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAyY2FjMzUwODZjOWUxMDNmYTk4OTYwYzU0NmQ1MDE3ZTczNjM4MDNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IEZyaSwgMjUgSmFuIDIwMTMgMDY6MTE6NTkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdnFhdmlkZW86IGNoZWNrIGNodW5rIHNpemVzIGJlZm9yZSByZWFkaW5nIGNodW5rcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNvbW1pdCAyY2FjMzUwODZjOWUxMDNmYTk4OTYwYzU0NmQ1MDE3ZTczNjM4MDNhIHJlbGVhc2UvMC43Ci0KLUZpeGVzIG91dCBvZiBhcnJheSB3cml0ZXMKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYWI2YzkzMzJiZmExZTIwMTI3YTE2MzkyYTBiODVhNGFhNDg0MDg4OSkKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLS0tLQotIGxpYmF2Y29kZWMvdnFhdmlkZW8uYyB8ICAgMTAgKysrKysrKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnFhdmlkZW8uYyBiL2xpYmF2Y29kZWMvdnFhdmlkZW8uYwotaW5kZXggZDFlYWI1Yi4uNmUxY2U2YyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3ZxYXZpZGVvLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3ZxYXZpZGVvLmMKLUBAIC01MjcsNiArNTI3LDExIEBAIHN0YXRpYyB2b2lkIHZxYV9kZWNvZGVfY2h1bmsoVnFhQ29udGV4dCAqcykKLSAgICAgICAgIGNodW5rX3NpemUgPSBBVl9SQjMyKCZzLT5idWZbY2JwMF9jaHVuayArIDRdKTsKLSAgICAgICAgIGNicDBfY2h1bmsgKz0gQ0hVTktfUFJFQU1CTEVfU0laRTsKLSAKLSsgICAgICAgIGlmIChjaHVua19zaXplID4gTUFYX0NPREVCT09LX1NJWkUgLSBzLT5uZXh0X2NvZGVib29rX2J1ZmZlcl9pbmRleCkgewotKyAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiY2JwMCBjaHVuayB0b28gbGFyZ2UgKDB4JVggYnl0ZXMpXG4iLCBjaHVua19zaXplKTsKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIC8qIGFjY3VtdWxhdGUgcGFydGlhbCBjb2RlYm9vayAqLwotICAgICAgICAgbWVtY3B5KCZzLT5uZXh0X2NvZGVib29rX2J1ZmZlcltzLT5uZXh0X2NvZGVib29rX2J1ZmZlcl9pbmRleF0sCi0gICAgICAgICAgICAgJnMtPmJ1ZltjYnAwX2NodW5rXSwgY2h1bmtfc2l6ZSk7Ci1AQCAtNTUwLDYgKzU1NSwxMSBAQCBzdGF0aWMgdm9pZCB2cWFfZGVjb2RlX2NodW5rKFZxYUNvbnRleHQgKnMpCi0gICAgICAgICBjaHVua19zaXplID0gQVZfUkIzMigmcy0+YnVmW2NicHpfY2h1bmsgKyA0XSk7Ci0gICAgICAgICBjYnB6X2NodW5rICs9IENIVU5LX1BSRUFNQkxFX1NJWkU7Ci0gCi0rICAgICAgICBpZiAoY2h1bmtfc2l6ZSA+IE1BWF9DT0RFQk9PS19TSVpFIC0gcy0+bmV4dF9jb2RlYm9va19idWZmZXJfaW5kZXgpIHsKLSsgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgImNicHogY2h1bmsgdG9vIGxhcmdlICgweCVYIGJ5dGVzKVxuIiwgY2h1bmtfc2l6ZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICAvKiBhY2N1bXVsYXRlIHBhcnRpYWwgY29kZWJvb2sgKi8KLSAgICAgICAgIG1lbWNweSgmcy0+bmV4dF9jb2RlYm9va19idWZmZXJbcy0+bmV4dF9jb2RlYm9va19idWZmZXJfaW5kZXhdLAotICAgICAgICAgICAgICZzLT5idWZbY2Jwel9jaHVua10sIGNodW5rX3NpemUpOwotLS0gCi0xLjcuNS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvMDAwMi1hdmNvZGVjLW1qcGVnZGVjLWNoZWNrLWJpdHMtcGVyLXBpeGVsLWZvci1jaGFuZ2VzLXNpLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAyLWF2Y29kZWMtbWpwZWdkZWMtY2hlY2stYml0cy1wZXItcGl4ZWwtZm9yLWNoYW5nZXMtc2kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YmFmZDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy8wMDAyLWF2Y29kZWMtbWpwZWdkZWMtY2hlY2stYml0cy1wZXItcGl4ZWwtZm9yLWNoYW5nZXMtc2kucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIDYwNDNjNDMxYzk3ZDU1MTczZjMzOWZhZmJkMDMzZDNjMDY0MmUyZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogRnJpLCAzIE9jdCAyMDE0IDAxOjUwOjI3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBhdmNvZGVjL21qcGVnZGVjOiBjaGVjayBiaXRzIHBlciBwaXhlbCBmb3IgY2hhbmdlcwotIHNpbWlsYXIgdG8gZGltZW5zaW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUZpeGVzIG91dCBvZiBhcnJheSBhY2Nlc3NlcwotRml4ZXM6IGFzYW5faGVhcC1vb2JfMTY2NjhlOV8yX2FzYW5faGVhcC1vb2JfMTY2NjhlOV8zNDZfbWlzc19jb25nZW5pYWxpdHlfcGVnYXN1c19tanBnLmF2aQotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci0KLUNvbmZsaWN0czoKLQlsaWJhdmNvZGVjL21qcGVnZGVjLmMKLS0tLQotIGxpYmF2Y29kZWMvbWpwZWdkZWMuYyB8IDE1ICsrKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9tanBlZ2RlYy5jIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWpwZWdkZWMuYwotaW5kZXggODQzNDNjMC4uYzAxMzdkOCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21qcGVnZGVjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21qcGVnZGVjLmMKLUBAIC0yMTAsMTYgKzIxMCwxNiBAQCBpbnQgZmZfbWpwZWdfZGVjb2RlX2RodChNSnBlZ0RlY29kZUNvbnRleHQgKnMpCi0gCi0gaW50IGZmX21qcGVnX2RlY29kZV9zb2YoTUpwZWdEZWNvZGVDb250ZXh0ICpzKQotIHsKLS0gICAgaW50IGxlbiwgbmJfY29tcG9uZW50cywgaSwgd2lkdGgsIGhlaWdodCwgcGl4X2ZtdF9pZDsKLSsgICAgaW50IGxlbiwgbmJfY29tcG9uZW50cywgaSwgYml0cywgd2lkdGgsIGhlaWdodCwgcGl4X2ZtdF9pZDsKLSAKLSAgICAgLyogWFhYOiB2ZXJpZnkgbGVuIGZpZWxkIHZhbGlkaXR5ICovCi0gICAgIGxlbiA9IGdldF9iaXRzKCZzLT5nYiwgMTYpOwotLSAgICBzLT5iaXRzPSBnZXRfYml0cygmcy0+Z2IsIDgpOwotKyAgICBiaXRzPSBnZXRfYml0cygmcy0+Z2IsIDgpOwotIAotLSAgICBpZihzLT5wZWdhc3VzX3JjdCkgcy0+Yml0cz05OwotLSAgICBpZihzLT5iaXRzPT05ICYmICFzLT5wZWdhc3VzX3JjdCkgcy0+cmN0PTE7ICAgIC8vRklYTUUgdWdseQotKyAgICBpZihzLT5wZWdhc3VzX3JjdCkgYml0cz05OwotKyAgICBpZihiaXRzPT05ICYmICFzLT5wZWdhc3VzX3JjdCkgcy0+cmN0PTE7ICAgIC8vRklYTUUgdWdseQotIAotLSAgICBpZiAocy0+Yml0cyAhPSA4ICYmICFzLT5sb3NzbGVzcyl7Ci0rICAgIGlmIChiaXRzICE9IDggJiYgIXMtPmxvc3NsZXNzKXsKLSAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAib25seSA4IGJpdHMvY29tcG9uZW50IGFjY2VwdGVkXG4iKTsKLSAgICAgICAgIHJldHVybiAtMTsKLSAgICAgfQotQEAgLTIzOSw3ICsyMzksNyBAQCBpbnQgZmZfbWpwZWdfZGVjb2RlX3NvZihNSnBlZ0RlY29kZUNvbnRleHQgKnMpCi0gICAgIGlmIChuYl9jb21wb25lbnRzIDw9IDAgfHwKLSAgICAgICAgIG5iX2NvbXBvbmVudHMgPiBNQVhfQ09NUE9ORU5UUykKLSAgICAgICAgIHJldHVybiAtMTsKLS0gICAgaWYgKHMtPmxzICYmICEocy0+Yml0cyA8PSA4IHx8IG5iX2NvbXBvbmVudHMgPT0gMSkpewotKyAgICBpZiAocy0+bHMgJiYgIShiaXRzIDw9IDggfHwgbmJfY29tcG9uZW50cyA9PSAxKSl7Ci0gICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIm9ubHkgPD0gOCBiaXRzL2NvbXBvbmVudCBvciAxNi1iaXQgZ3JheSBhY2NlcHRlZCBmb3IgSlBFRy1MU1xuIik7Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLUBAIC0yNzIsMTAgKzI3MiwxMSBAQCBpbnQgZmZfbWpwZWdfZGVjb2RlX3NvZihNSnBlZ0RlY29kZUNvbnRleHQgKnMpCi0gCi0gICAgIC8qIGlmIGRpZmZlcmVudCBzaXplLCByZWFsbG9jL2FsbG9jIHBpY3R1cmUgKi8KLSAgICAgLyogWFhYOiBhbHNvIGNoZWNrIGhfY291bnQgYW5kIHZfY291bnQgKi8KLS0gICAgaWYgKHdpZHRoICE9IHMtPndpZHRoIHx8IGhlaWdodCAhPSBzLT5oZWlnaHQpIHsKLSsgICAgaWYgKHdpZHRoICE9IHMtPndpZHRoIHx8IGhlaWdodCAhPSBzLT5oZWlnaHQgfHwgYml0cyAhPSBzLT5iaXRzKSB7Ci0gICAgICAgICBhdl9mcmVlcCgmcy0+cXNjYWxlX3RhYmxlKTsKLSAKLSAgICAgICAgIHMtPndpZHRoID0gd2lkdGg7Ci0rICAgICAgICBzLT5iaXRzPSBiaXRzOwotICAgICAgICAgcy0+aGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICAgcy0+aW50ZXJsYWNlZCA9IDA7Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2NvbmZpZ3VyZS1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2NvbmZpZ3VyZS1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZjZmN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9jb25maWd1cmUtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotRGlzYWJsZSB5YXNtIGZvciBsaWJhdiB3aGVuIC0tZGlzYWJsZS15YXNtCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogU2hhbmUgV2FuZyA8c2hhbmUud2FuZ0BpbnRlbC5jb20+Ci0KLWRpZmYgLXIgZjJmOGY3NGM2ZTMwIGNvbmZpZ3VyZS5hYwotLS0tIGEvY29uZmlndXJlLmFjCVRodSBEZWMgMjIgMjM6NTY6MDkgMjAxMSArMDgwMAotKysrIGIvY29uZmlndXJlLmFjCVRodSBEZWMgMjIgMjM6NTc6MzcgMjAxMSArMDgwMAotQEAgLTMyNSw2ICszMjUsMTIgQEAKLSAgICAgICAgIC0tZW5hYmxlLWdwbCIKLSAgIGZpCi0gCi0rIEFDX0FSR19FTkFCTEUoeWFzbSwKLSsgICAgICAgICAgICAgIFtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXlhc21dLCBbZGlzYWJsZSB1c2Ugb2YgeWFzbSBhc3NlbWJsZXJdKV0pCi0rICBpZiB0ZXN0ICJ4JGVuYWJsZV95YXNtIiA9ICJ4bm8iOyB0aGVuCi0rICAgIGVtYmZmbXBlZ19jb25maWd1cmVfYXJncz0iJGVtYmZmbXBlZ19jb25maWd1cmVfYXJncyAtLWRpc2FibGUteWFzbSIKLSsgIGZpCi0rCi0gICAjIGlmIHdlIGFyZSBjcm9zcy1jb21waWxpbmcsIHRlbGwgZmZtcGVnIHNvCi0gICB0YXJnZXRfb3M9YGVjaG8gJGhvc3Rfb3MgfCBzZWQgJ3MvLWdudS8vJ2AKLSAgIGlmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9IHh5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1DVkUtMjAxMy0wODU1LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLUNWRS0yMDEzLTA4NTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjOGQ4ZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLUNWRS0yMDEzLTA4NTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotZ3N0LWZmbXBlZzogU2VjdXJpdHkgQWR2aXNvcnkgLSBmZm1wZWcgLSBDVkUtMjAxMy0wODU1Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2FsYWMuYy5vbGQgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9hbGFjLmMKLWluZGV4IDJhMGRmOGMuLmJjYmQ1NmQgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9hbGFjLmMub2xkCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9hbGFjLmMKLUBAIC04NywxOCArODcsNDQgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICAgICBpbnQgd2FzdGVkX2JpdHM7Ci0gfSBBTEFDQ29udGV4dDsKLSAKLS1zdGF0aWMgdm9pZCBhbGxvY2F0ZV9idWZmZXJzKEFMQUNDb250ZXh0ICphbGFjKQotK3N0YXRpYyBhdl9jb2xkIGludCBhbGFjX2RlY29kZV9jbG9zZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0rewotKyAgICBBTEFDQ29udGV4dCAqYWxhYyA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rCi0rICAgIGludCBjaGFuOwotKyAgICBmb3IgKGNoYW4gPSAwOyBjaGFuIDwgTUFYX0NIQU5ORUxTOyBjaGFuKyspIHsKLSsgICAgICAgIGF2X2ZyZWVwKCZhbGFjLT5wcmVkaWN0ZXJyb3JfYnVmZmVyW2NoYW5dKTsKLSsgICAgICAgIGF2X2ZyZWVwKCZhbGFjLT5vdXRwdXRzYW1wbGVzX2J1ZmZlcltjaGFuXSk7Ci0rICAgICAgICBhdl9mcmVlcCgmYWxhYy0+d2FzdGVkX2JpdHNfYnVmZmVyW2NoYW5dKTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGludCBhbGxvY2F0ZV9idWZmZXJzKEFMQUNDb250ZXh0ICphbGFjKQotIHsKLSAgICAgaW50IGNoYW47Ci0rICAgIGludCBidWZfc2l6ZTsKLSsKLSsgICAgaWYgKGFsYWMtPnNldGluZm9fbWF4X3NhbXBsZXNfcGVyX2ZyYW1lID4gSU5UX01BWCAvIHNpemVvZihpbnQzMl90KSkKLSsgICAgICAgIGdvdG8gYnVmX2FsbG9jX2ZhaWw7Ci0rICAgIGJ1Zl9zaXplID0gYWxhYy0+c2V0aW5mb19tYXhfc2FtcGxlc19wZXJfZnJhbWUgKiBzaXplb2YoaW50MzJfdCk7Ci0rCi0gICAgIGZvciAoY2hhbiA9IDA7IGNoYW4gPCBNQVhfQ0hBTk5FTFM7IGNoYW4rKykgewotLSAgICAgICAgYWxhYy0+cHJlZGljdGVycm9yX2J1ZmZlcltjaGFuXSA9Ci0tICAgICAgICAgICAgYXZfbWFsbG9jKGFsYWMtPnNldGluZm9fbWF4X3NhbXBsZXNfcGVyX2ZyYW1lICogNCk7Ci0gCi0tICAgICAgICBhbGFjLT5vdXRwdXRzYW1wbGVzX2J1ZmZlcltjaGFuXSA9Ci0tICAgICAgICAgICAgYXZfbWFsbG9jKGFsYWMtPnNldGluZm9fbWF4X3NhbXBsZXNfcGVyX2ZyYW1lICogNCk7Ci0rICAgICAgICBGRl9BTExPQ19PUl9HT1RPKGFsYWMtPmF2Y3R4LCBhbGFjLT5wcmVkaWN0ZXJyb3JfYnVmZmVyW2NoYW5dLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgYnVmX2FsbG9jX2ZhaWwpOwotIAotLSAgICAgICAgYWxhYy0+d2FzdGVkX2JpdHNfYnVmZmVyW2NoYW5dID0gYXZfbWFsbG9jKGFsYWMtPnNldGluZm9fbWF4X3NhbXBsZXNfcGVyX2ZyYW1lICogNCk7Ci0rICAgICAgICBGRl9BTExPQ19PUl9HT1RPKGFsYWMtPmF2Y3R4LCBhbGFjLT5vdXRwdXRzYW1wbGVzX2J1ZmZlcltjaGFuXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgYnVmX3NpemUsIGJ1Zl9hbGxvY19mYWlsKTsKLSsKLSsgICAgICAgIEZGX0FMTE9DX09SX0dPVE8oYWxhYy0+YXZjdHgsIGFsYWMtPndhc3RlZF9iaXRzX2J1ZmZlcltjaGFuXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgYnVmX3NpemUsIGJ1Zl9hbGxvY19mYWlsKTsKLSAgICAgfQotKyAgICByZXR1cm4gMDsKLStidWZfYWxsb2NfZmFpbDoKLSsgICAgYWxhY19kZWNvZGVfY2xvc2UoYWxhYy0+YXZjdHgpOwotKyAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotIH0KLSAKLSBzdGF0aWMgaW50IGFsYWNfc2V0X2luZm8oQUxBQ0NvbnRleHQgKmFsYWMpCi1AQCAtMTMxLDggKzE1Nyw2IEBAIHN0YXRpYyBpbnQgYWxhY19zZXRfaW5mbyhBTEFDQ29udGV4dCAqYWxhYykKLSAgICAgYnl0ZXN0cmVhbV9nZXRfYmUzMigmcHRyKTsgICAgICAvKiBiaXRyYXRlID8gKi8KLSAgICAgYnl0ZXN0cmVhbV9nZXRfYmUzMigmcHRyKTsgICAgICAvKiBzYW1wbGVyYXRlICovCi0gCi0tICAgIGFsbG9jYXRlX2J1ZmZlcnMoYWxhYyk7Ci0tCi0gICAgIHJldHVybiAwOwotIH0KLSAKLUBAIC02NTksNiArNjgzLDcgQEAgc3RhdGljIGludCBhbGFjX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gCi0gc3RhdGljIGF2X2NvbGQgaW50IGFsYWNfZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKiBhdmN0eCkKLSB7Ci0rICAgIGludCByZXQ7Ci0gICAgIEFMQUNDb250ZXh0ICphbGFjID0gYXZjdHgtPnByaXZfZGF0YTsKLSAgICAgYWxhYy0+YXZjdHggPSBhdmN0eDsKLSAgICAgYWxhYy0+bnVtY2hhbm5lbHMgPSBhbGFjLT5hdmN0eC0+Y2hhbm5lbHM7Ci1AQCAtNjc0LDE4ICs2OTksOSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgYWxhY19kZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqIGF2Y3R4KQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gCi0tICAgIHJldHVybiAwOwotLX0KLS0KLS1zdGF0aWMgYXZfY29sZCBpbnQgYWxhY19kZWNvZGVfY2xvc2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotLXsKLS0gICAgQUxBQ0NvbnRleHQgKmFsYWMgPSBhdmN0eC0+cHJpdl9kYXRhOwotLQotLSAgICBpbnQgY2hhbjsKLS0gICAgZm9yIChjaGFuID0gMDsgY2hhbiA8IE1BWF9DSEFOTkVMUzsgY2hhbisrKSB7Ci0tICAgICAgICBhdl9mcmVlcCgmYWxhYy0+cHJlZGljdGVycm9yX2J1ZmZlcltjaGFuXSk7Ci0tICAgICAgICBhdl9mcmVlcCgmYWxhYy0+b3V0cHV0c2FtcGxlc19idWZmZXJbY2hhbl0pOwotLSAgICAgICAgYXZfZnJlZXAoJmFsYWMtPndhc3RlZF9iaXRzX2J1ZmZlcltjaGFuXSk7Ci0rICAgIGlmICgocmV0ID0gYWxsb2NhdGVfYnVmZmVycyhhbGFjKSkgPCAwKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVycm9yIGFsbG9jYXRpbmcgYnVmZmVyc1xuIik7Ci0rICAgICAgICByZXR1cm4gcmV0OwotICAgICB9Ci0gCi0gICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLUNWRS0yMDEzLTM2NzQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctQ1ZFLTIwMTMtMzY3NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEzODVmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctQ1ZFLTIwMTMtMzY3NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWF2Y29kZWMvY2RncmFwaGljczogY2hlY2sgYnVmZmVyIHNpemUgYmVmb3JlIHVzZQotCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzZXMKLQotQmFja3BvcnRlZCBmcm9tOmh0dHA6Ly9naXQudmlkZW9sYW4ub3JnLz9wPWZmbXBlZy5naXQ7YT1jb21taXQ7aD1hZDAwMmUxYTEzYThkZjkzNGJkNmNiMmM4NDE3NWE0NzgwYWI4OTQyCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPG1pbmcubGl1QHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLXVycE4gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9jZGdyYXBoaWNzLmMgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9jZGdyYXBoaWNzLmMKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2NkZ3JhcGhpY3MuYwkyMDEzLTA3LTE4IDEzOjE3OjA4LjM5OTg3NjU3NSArMDgwMAotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvY2RncmFwaGljcy5jCTIwMTMtMDctMTggMTM6MTg6MDUuODgwNTAyMjY3ICswODAwCi1AQCAtMjkxLDcgKzI5MSw5IEBAIHN0YXRpYyBpbnQgY2RnX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGUKLSAgICAgaW5zdCAgICA9IGJ5dGVzdHJlYW1fZ2V0X2J5dGUoJmJ1Zik7Ci0gICAgIGluc3QgICAgJj0gQ0RHX01BU0s7Ci0gICAgIGJ1ZiArPSAyOyAgLy8vIHNraXBwaW5nIDIgdW5uZWVkZWQgYnl0ZXMKLS0gICAgYnl0ZXN0cmVhbV9nZXRfYnVmZmVyKCZidWYsIGNkZ19kYXRhLCBidWZfc2l6ZSAtIENER19IRUFERVJfU0laRSk7Ci0rCi0rICAgIGlmIChidWZfc2l6ZSA+IENER19IRUFERVJfU0laRSkKLSsgICAgICAgIGJ5dGVzdHJlYW1fZ2V0X2J1ZmZlcigmYnVmLCBjZGdfZGF0YSwgYnVmX3NpemUgLSBDREdfSEVBREVSX1NJWkUpOwotIAotICAgICBpZiAoKGNvbW1hbmQgJiBDREdfTUFTSykgPT0gQ0RHX0NPTU1BTkQpIHsKLSAgICAgICAgIHN3aXRjaCAoaW5zdCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxMS00MzUyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxMS00MzUyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGYzZmQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTEtNDM1Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gOGI5NGRmMGYyMDQ3ZTk3MjhjYjg3MmFkYzllNjQ1NTdiN2E1MTUyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJlaW5oYXJkIFRhcnRsZXIgPHNpcmV0YXJ0QHRhdXdhcmUuZGU+Ci1EYXRlOiBTdW4sIDQgRGVjIDIwMTEgMTA6MTA6MzMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdnAzZGVjOiBDaGVjayBjb2VmZmljaWVudCBpbmRleCBpbiB2cDNfZGVxdWFudCgpCi0KLUJhc2VkIG9uIGEgcGF0Y2ggYnkgTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLQotRml4ZXMgTkdTMDAxNDUsIENWRS0yMDExLTQzNTIKLQotRm91bmQtYnk6IFBoaWxsaXAgTGFuZ2xvaXMKLVNpZ25lZC1vZmYtYnk6IFJlaW5oYXJkIFRhcnRsZXIgPHNpcmV0YXJ0QHRhdXdhcmUuZGU+Ci0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1odHRwOi8vZ2l0LnZpZGVvbGFuLm9yZy8/cD1mZm1wZWcuZ2l0O2E9Y29tbWl0O2g9OGI5NGRmMGYyMDQ3ZTk3MjhjYjg3MmFkYzllNjQ1NTdiN2E1MTUyZgotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Y29kZWMvdnAzLmMgfCAxNCArKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92cDMuYyBiL2xpYmF2Y29kZWMvdnAzLmMKLWluZGV4IDUxYWIwNDguLmY0NGQwODQgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy92cDMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdnAzLmMKLUBAIC0xMzYzLDYgKzEzNjMsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgdnAzX2RlcXVhbnQoVnAzRGVjb2RlQ29udGV4dCAqcywgVnAzRnJhZ21lbnQgKmZyYWcsCi0gICAgICAgICBjYXNlIDE6IC8vIHplcm8gcnVuCi0gICAgICAgICAgICAgcy0+ZGN0X3Rva2Vuc1twbGFuZV1baV0rKzsKLSAgICAgICAgICAgICBpICs9ICh0b2tlbiA+PiAyKSAmIDB4N2Y7Ci0rICAgICAgICAgICAgaWYgKGkgPiA2MykgewotKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIkNvZWZmaWNpZW50IGluZGV4IG92ZXJmbG93XG4iKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIGJsb2NrW3Blcm1baV1dID0gKHRva2VuID4+IDkpICogZGVxdWFudGl6ZXJbcGVybVtpXV07Ci0gICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgIGJyZWFrOwotQEAgLTE1NjYsNyArMTU3MCwxMCBAQCBzdGF0aWMgdm9pZCByZW5kZXJfc2xpY2UoVnAzRGVjb2RlQ29udGV4dCAqcywgaW50IHNsaWNlKQotICAgICAgICAgICAgICAgICAgICAgLyogaW52ZXJ0IERDVCBhbmQgcGxhY2UgKG9yIGFkZCkgaW4gZmluYWwgb3V0cHV0ICovCi0gCi0gICAgICAgICAgICAgICAgICAgICBpZiAocy0+YWxsX2ZyYWdtZW50c1tpXS5jb2RpbmdfbWV0aG9kID09IE1PREVfSU5UUkEpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICB2cDNfZGVxdWFudChzLCBzLT5hbGxfZnJhZ21lbnRzICsgaSwgcGxhbmUsIDAsIGJsb2NrKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXg7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB2cDNfZGVxdWFudChzLCBzLT5hbGxfZnJhZ21lbnRzICsgaSwgcGxhbmUsIDAsIGJsb2NrKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiA2MykKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaWYocy0+YXZjdHgtPmlkY3RfYWxnbyE9RkZfSURDVF9WUDMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrWzBdICs9IDEyODw8MzsKLSAgICAgICAgICAgICAgICAgICAgICAgICBzLT5kc3AuaWRjdF9wdXQoCi1AQCAtMTU3NCw3ICsxNTgxLDEwIEBAIHN0YXRpYyB2b2lkIHJlbmRlcl9zbGljZShWcDNEZWNvZGVDb250ZXh0ICpzLCBpbnQgc2xpY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2spOwotICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodnAzX2RlcXVhbnQocywgcy0+YWxsX2ZyYWdtZW50cyArIGksIHBsYW5lLCAxLCBibG9jaykpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSB2cDNfZGVxdWFudChzLCBzLT5hbGxfZnJhZ21lbnRzICsgaSwgcGxhbmUsIDEsIGJsb2NrKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiA2MykKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmRzcC5pZGN0X2FkZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X3BsYW5lICsgZmlyc3RfcGl4ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSwKLS0tIAotMi4xLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC03OTMzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC03OTMzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzUzN2M3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtNzkzMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gMjI2NmI4YmMzMzcwODU2ZDg3NDMzNGJhNjJiMzM3Y2U0ZjFlYjI1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxMyBNYXkgMjAxNSAxNjo0NjowNiArMDgwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZ3N0LWZmbXBlZzogZml4IENWRS0yMDE0LTc5MzMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1odHRwOi8vZ2l0LnZpZGVvbGFuLm9yZy8/cD1mZm1wZWcuZ2l0O2E9Y29tbWl0O2g9MzMzMDFmMDAKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnc3QtbGlicy9leHQvbGliYXYvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Zm9ybWF0L21hdHJvc2thZGVjLmMgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYwotaW5kZXggNTlkY2U0Zi4uZTVmNWZjMSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYwotQEAgLTE5MTYsNyArMTkxNiw3IEBAIHN0YXRpYyBpbnQgbWF0cm9za2FfcmVhZF9zZWVrKEFWRm9ybWF0Q29udGV4dCAqcywgaW50IHN0cmVhbV9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHRpbWVzdGFtcCwgaW50IGZsYWdzKQotIHsKLSAgICAgTWF0cm9za2FEZW11eENvbnRleHQgKm1hdHJvc2thID0gcy0+cHJpdl9kYXRhOwotLSAgICBNYXRyb3NrYVRyYWNrICp0cmFja3MgPSBtYXRyb3NrYS0+dHJhY2tzLmVsZW07Ci0rICAgIE1hdHJvc2thVHJhY2sgKnRyYWNrcyA9IE5VTEw7Ci0gICAgIEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNbc3RyZWFtX2luZGV4XTsKLSAgICAgaW50IGksIGluZGV4LCBpbmRleF9zdWIsIGluZGV4X21pbjsKLSAKLUBAIC0xOTM5LDYgKzE5MzksNyBAQCBzdGF0aWMgaW50IG1hdHJvc2thX3JlYWRfc2VlayhBVkZvcm1hdENvbnRleHQgKnMsIGludCBzdHJlYW1faW5kZXgsCi0gICAgICAgICByZXR1cm4gMDsKLSAKLSAgICAgaW5kZXhfbWluID0gaW5kZXg7Ci0rICAgIHRyYWNrcyA9IG1hdHJvc2thLT50cmFja3MuZWxlbTsKLSAgICAgZm9yIChpPTA7IGkgPCBtYXRyb3NrYS0+dHJhY2tzLm5iX2VsZW07IGkrKykgewotICAgICAgICAgdHJhY2tzW2ldLmF1ZGlvLnBrdF9jbnQgPSAwOwotICAgICAgICAgdHJhY2tzW2ldLmF1ZGlvLnN1Yl9wYWNrZXRfY250ID0gMDsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTQ3YzgxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gMTA1NjU0ZTM3NmE3MzZkMjQzYWVmNGExZDEyMWFiZWJjZTkxMmU2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBGcmksIDMgT2N0IDIwMTQgMDQ6MzA6NTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy91dGlsczogQWRkIGNhc2UgZm9yIGp2IHRvCi0gYXZjb2RlY19hbGlnbl9kaW1lbnNpb25zMigpCi0KLShVcHN0cmVhbSBjb21taXQgMTA1NjU0ZTM3NmE3MzZkMjQzYWVmNGExZDEyMWFiZWJjZTkxMmU2YikKLQotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2Vzc2VzCi1GaXhlczogYXNhbl9oZWFwLW9vYl8xMjMwNGFhXzhfYXNhbl9oZWFwLW9vYl80ZGE0ZjNfMzAwX2ludHJvLmp2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy91dGlscy5jIHwgICAgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy91dGlscy5jIGIvbGliYXZjb2RlYy91dGlscy5jCi1pbmRleCBkNGY1NTMyLi5jMmM1NTc5IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdXRpbHMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdXRpbHMuYwotQEAgLTE3Myw2ICsxNzMsMTAgQEAgdm9pZCBhdmNvZGVjX2FsaWduX2RpbWVuc2lvbnMyKEFWQ29kZWNDb250ZXh0ICpzLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgaW50IGwKLSAgICAgICAgICAgICB3X2FsaWduPTQ7Ci0gICAgICAgICAgICAgaF9hbGlnbj00OwotICAgICAgICAgfQotKyAgICAgICAgaWYgKHMtPmNvZGVjX2lkID09IENPREVDX0lEX0pWKXsKLSsgICAgICAgICAgICB3X2FsaWduID0gODsKLSsgICAgICAgICAgICBoX2FsaWduID0gODsKLSsgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFBJWF9GTVRfQkdSMjQ6Ci0gICAgICAgICBpZigocy0+Y29kZWNfaWQgPT0gQ09ERUNfSURfTVNaSCkgfHwgKHMtPmNvZGVjX2lkID09IENPREVDX0lEX1pMSUIpKXsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NWU1NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA4YjBlOTZlMWYyMWI3NjFjYTE1ZGJiNDcwY2Q2MTlhMWViZjg2YzNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IEZyaSwgMyBPY3QgMjAxNCAxNDo0NTowNCArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL21tdmlkZW86IEJvdW5kcyBjaGVjayAybmQgbGluZSBvZiBISFYgSW50cmEgYmxvY2tzCi0KLShVcHN0cmVhbSBjb21taXQgOGIwZTk2ZTFmMjFiNzYxY2ExNWRiYjQ3MGNkNjE5YTFlYmY4NmMzZSkKLQotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2VzcwotRml4ZXM6IGFzYW5faGVhcC1vb2JfNGRhNGYzXzhfYXNhbl9oZWFwLW9vYl80ZGE0ZjNfNDE5X3NjZW5lMWEubW0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmNvZGVjL21tdmlkZW8uYyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbW12aWRlby5jIGIvbGliYXZjb2RlYy9tbXZpZGVvLmMKLWluZGV4IDAyNmQ0NjMuLjlmZjYzOTMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9tbXZpZGVvLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21tdmlkZW8uYwotQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgdm9pZCBtbV9kZWNvZGVfaW50cmEoTW1Db250ZXh0ICogcywgaW50IGhhbGZfaG9yaXosIGludCBoYWxmX3ZlcnQsIGNvbnN0Ci0gCi0gICAgICAgICBpZiAoY29sb3IpIHsKLSAgICAgICAgICAgICBtZW1zZXQocy0+ZnJhbWUuZGF0YVswXSArIHkqcy0+ZnJhbWUubGluZXNpemVbMF0gKyB4LCBjb2xvciwgcnVuX2xlbmd0aCk7Ci0tICAgICAgICAgICAgaWYgKGhhbGZfdmVydCkKLSsgICAgICAgICAgICBpZiAoaGFsZl92ZXJ0ICYmIHkgKyBoYWxmX3ZlcnQgPCBzLT5hdmN0eC0+aGVpZ2h0KQotICAgICAgICAgICAgICAgICBtZW1zZXQocy0+ZnJhbWUuZGF0YVswXSArICh5KzEpKnMtPmZyYW1lLmxpbmVzaXplWzBdICsgeCwgY29sb3IsIHJ1bl9sZW5ndGgpOwotICAgICAgICAgfQotICAgICAgICAgeCs9IHJ1bl9sZW5ndGg7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTI0ZTNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gZTFjMGNmYWE0MTlhYTVkMzIwNTQwZDVhMWIzZjhmZDliODJhYjdlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1EYXRlOiBGcmksIDMgT2N0IDIwMTQgMTY6MDg6MzIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy90aWZmOiBtb3JlIGNvbXBsZXRlbHkgY2hlY2sgYnBwL2JwcGNvdW50Ci0KLShVcHN0cmVhbSBjb21taXQgZTFjMGNmYWE0MTlhYTVkMzIwNTQwZDVhMWIzZjhmZDliODJhYjdlNSkKLQotRml4ZXMgcGl4ZWwgZm9ybWF0IHNlbGVjdGlvbgotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2Vzc2VzCi1GaXhlczogYXNhbl9oZWFwLW9vYl8xNzY2MDI5XzZfYXNhbl9oZWFwLW9vYl8yMGFhMDQ1XzMzMl9jb3ZfMTgyMzIxNjc1N19tMi1kMWQzNjZkNzk2NWRiNzY2YzE5YTY2YzdhMmNjYmI2Yi50aWYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gb3VuZC1ieTogTWF0ZXVzeiAiajAwcnUiIEp1cmN6eWsgYW5kIEd5bnZhZWwgQ29sZHdpbmQKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Ci1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDx5dWUudGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmNvZGVjL3RpZmYuYyB8ICAgMTMgKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy90aWZmLmMgYi9saWJhdmNvZGVjL3RpZmYuYwotaW5kZXggNmUyMDk2Zi4uMDg3MGUzMSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3RpZmYuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdGlmZi5jCi1AQCAtMzI0LDExICszMjQsMTEgQEAgc3RhdGljIGludCB0aWZmX2RlY29kZV90YWcoVGlmZkNvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnN0YXJ0LCBjb25zdCB1aW50OF90ICoKLSAgICAgICAgIHMtPmhlaWdodCA9IHZhbHVlOwotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVElGRl9CUFA6Ci0tICAgICAgICBzLT5icHBjb3VudCA9IGNvdW50OwotLSAgICAgICAgaWYoY291bnQgPiA0KXsKLS0gICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIlRoaXMgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQgKGJwcD0lZCwgJWQgY29tcG9uZW50cylcbiIsIHMtPmJwcCwgY291bnQpOwotKyAgICAgICAgaWYoY291bnQgPiA0VSl7Ci0rICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJUaGlzIGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkIChicHA9JWQsICVkIGNvbXBvbmVudHMpXG4iLCB2YWx1ZSwgY291bnQpOwotICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgIH0KLSsgICAgICAgIHMtPmJwcGNvdW50ID0gY291bnQ7Ci0gICAgICAgICBpZihjb3VudCA9PSAxKSBzLT5icHAgPSB2YWx1ZTsKLSAgICAgICAgIGVsc2V7Ci0gICAgICAgICAgICAgc3dpdGNoKHR5cGUpewotQEAgLTM0NCw2ICszNDQsMTMgQEAgc3RhdGljIGludCB0aWZmX2RlY29kZV90YWcoVGlmZkNvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKnN0YXJ0LCBjb25zdCB1aW50OF90ICoKLSAgICAgICAgICAgICAgICAgcy0+YnBwID0gLTE7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotKyAgICAgICAgaWYgKHMtPmJwcCA+IDY0VSkgewotKyAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLAotKyAgICAgICAgICAgICAgICAgICAiVGhpcyBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCAoYnBwPSVkLCAlZCBjb21wb25lbnRzKVxuIiwKLSsgICAgICAgICAgICAgICAgICAgcy0+YnBwLCBjb3VudCk7Ci0rICAgICAgICAgICAgcy0+YnBwID0gMDsKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFRJRkZfU0FNUExFU19QRVJfUElYRUw6Ci0gICAgICAgICBpZiAoY291bnQgIT0gMSkgewotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlkNWY3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDNlMmI3NDUwMjBjMmRiZjAyMDFmZTdkZjNkYWQ5ZTdlMGIyZTFiYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogRnJpLCAzIE9jdCAyMDE0IDE3OjM1OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvcG5nZGVjOiBDaGVjayBiaXRzIHBlciBwaXhlbCBiZWZvcmUgc2V0dGluZwotIG1vbm9ibGFjayBwaXhlbCBmb3JtYXQKLQotKFVwc3RyZWFtIGNvbW1pdCAzZTJiNzQ1MDIwYzJkYmYwMjAxZmU3ZGYzZGFkOWU3ZTBiMmUxYmI2KQotCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzZXMKLUZpeGVzOiBhc2FuX2hlYXAtb29iXzE0ZGJmY2ZfNF9hc2FuX2hlYXAtb29iXzFjZTU3NjdfMTc5X2FkZF9tZXRob2Rfc21hbGwucG5nCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy9wbmdkZWMuYyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcG5nZGVjLmMgYi9saWJhdmNvZGVjL3BuZ2RlYy5jCi1pbmRleCBkYTkxYWFiLi5mMzYwM2IzIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcG5nZGVjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3BuZ2RlYy5jCi1AQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBpbnQgZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzLT5iaXRfZGVwdGggPT0gMTYgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1JHQikgewotICAgICAgICAgICAgICAgICAgICAgYXZjdHgtPnBpeF9mbXQgPSBQSVhfRk1UX1JHQjQ4QkU7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocy0+Yml0X2RlcHRoID09IDEgJiYKLSsgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzLT5iaXRfZGVwdGggPT0gMSAmJiBzLT5iaXRzX3Blcl9waXhlbCA9PSAxICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9HUkFZKSB7Ci0gICAgICAgICAgICAgICAgICAgICBhdmN0eC0+cGl4X2ZtdCA9IFBJWF9GTVRfTU9OT0JMQUNLOwotICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMtPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUEFMRVRURSkgewotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU1ZDllYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIGU3ZTUxMTRjNTA2OTU3ZjQwYWFmZDc5NGUwNmRlMWE3ZTM0MWU5ZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogRnJpLCAzIE9jdCAyMDE0IDE5OjMzOjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvY2luZXBhazogZml4IGludGVnZXIgdW5kZXJmbG93Ci0KLShVcHN0cmVhbSBjb21taXQgZTdlNTExNGM1MDY5NTdmNDBhYWZkNzk0ZTA2ZGUxYTdlMzQxZTlkNSkKLQotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2VzcwotRml4ZXM6IGFzYW5faGVhcC1vb2JfNGRhMGJhXzZfYXNhbl9oZWFwLW9vYl80ZGEwYmFfMjQxX2N2aWRfY3Jhc2guYXZpCi0KLVVwc3RyZWFtLXN0YXR1czogQmFja3BvcnQKLQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8eXVlLnRhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZjb2RlYy9jaW5lcGFrLmMgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NpbmVwYWsuYyBiL2xpYmF2Y29kZWMvY2luZXBhay5jCi1pbmRleCA0NzQ2Mjg5Li5mNjUxYzQ4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvY2luZXBhay5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9jaW5lcGFrLmMKLUBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIGludCBjaW5lcGFrX2RlY29kZV92ZWN0b3JzIChDaW5lcGFrQ29udGV4dCAqcywgY3ZpZF9zdHJpcCAqc3RyaXAsCi0gICAgIGNvbnN0IHVpbnQ4X3QgICAqZW9kID0gKGRhdGEgKyBzaXplKTsKLSAgICAgdWludDMyX3QgICAgICAgICBmbGFnLCBtYXNrOwotICAgICBjdmlkX2NvZGVib29rICAgKmNvZGVib29rOwotLSAgICB1bnNpZ25lZCBpbnQgICAgIHgsIHk7Ci0rICAgIGludCAgICAgICAgICAgICB4LCB5OwotICAgICB1aW50MzJfdCAgICAgICAgIGl5WzRdOwotICAgICB1aW50MzJfdCAgICAgICAgIGl1WzJdOwotICAgICB1aW50MzJfdCAgICAgICAgIGl2WzJdOwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg2MTZmYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDhmMTQ1Nzg2NGJlOGZiOTY1MzY0MzUxOWRlYTFjNjQ5MmYxZGRlNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsbmlAZ214LmF0PgotRGF0ZTogRnJpLCAzIE9jdCAyMDE0IDIwOjE1OjUyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvZ2lmZGVjOiBmYWN0b3JpemUgaW50ZXJsZWF2ZSBlbmQgaGFuZGxpbmcgb3V0Ci0KLShVcHN0cmVhbSBjb21taXQgOGYxNDU3ODY0YmU4ZmI5NjUzNjQzNTE5ZGVhMWM2NDkyZjFkZGU1NykKLQotYWxzbyBjaGFuZ2UgaXQgdG8gYSBsb29wCi1GaXhlcyBvdXQgb2YgYXJyYXkgYWNjZXNzCi1GaXhlczogYXNhbl9oZWFwLW9vYl9jYTU0MTBfOF9hc2FuX2hlYXAtb29iX2NhNTQxMF85N19JRF9MU0RfU2l6ZV9MZXNzX1RoZW5fRGF0YV9JbnRlcl8zLmdpZgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUZvdW5kLWJ5OiBNYXRldXN6ICJqMDBydSIgSnVyY3p5ayBhbmQgR3ludmFlbCBDb2xkd2luZAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Y29kZWMvZ2lmZGVjLmMgfCAgIDE1ICsrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9naWZkZWMuYyBiL2xpYmF2Y29kZWMvZ2lmZGVjLmMKLWluZGV4IGRlZTQ4ZjUuLjkwZGUzOGIgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9naWZkZWMuYwotKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvZ2lmZGVjLmMKLUBAIC0yNzEsMjYgKzI3MSwyMSBAQCBzdGF0aWMgaW50IGdpZl9yZWFkX2ltYWdlKEdpZlN0YXRlICpzLCBBVkZyYW1lICpmcmFtZSkKLSAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgIHkxICs9IDg7Ci0gICAgICAgICAgICAgICAgIHB0ciArPSBsaW5lc2l6ZSAqIDg7Ci0tICAgICAgICAgICAgICAgIGlmICh5MSA+PSBoZWlnaHQpIHsKLS0gICAgICAgICAgICAgICAgICAgIHkxID0gcGFzcyA/IDIgOiA0OwotLSAgICAgICAgICAgICAgICAgICAgcHRyID0gcHRyMSArIGxpbmVzaXplICogeTE7Ci0tICAgICAgICAgICAgICAgICAgICBwYXNzKys7Ci0tICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgICB5MSArPSA0OwotICAgICAgICAgICAgICAgICBwdHIgKz0gbGluZXNpemUgKiA0OwotLSAgICAgICAgICAgICAgICBpZiAoeTEgPj0gaGVpZ2h0KSB7Ci0tICAgICAgICAgICAgICAgICAgICB5MSA9IDE7Ci0tICAgICAgICAgICAgICAgICAgICBwdHIgPSBwdHIxICsgbGluZXNpemU7Ci0tICAgICAgICAgICAgICAgICAgICBwYXNzKys7Ci0tICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICB5MSArPSAyOwotICAgICAgICAgICAgICAgICBwdHIgKz0gbGluZXNpemUgKiAyOwotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgd2hpbGUgKHkxID49IGhlaWdodCkgewotKyAgICAgICAgICAgICAgICB5MSA9IDQgPj4gcGFzczsKLSsgICAgICAgICAgICAgICAgcHRyID0gcHRyMSArIGxpbmVzaXplICogeTE7Ci0rICAgICAgICAgICAgICAgIHBhc3MrKzsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIHB0ciArPSBsaW5lc2l6ZTsKLSAgICAgICAgIH0KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTkzMTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTkzMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NTNjZWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC05MzE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAwZDNhM2I5Zjg5MDc2MjViMzYxNDIwZDQ4ZmUwNTcxNjg1OTYyMGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLURhdGU6IFdlZCwgMjYgTm92IDIwMTQgMTg6NTY6MzkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9yYXdkZWM6IENoZWNrIHRoZSByZXR1cm4gY29kZSBvZgotIGF2cGljdHVyZV9nZXRfc2l6ZSgpCi0KLShVcHN0cmVhbSBjb21taXQgMWQzYTNiOWY4OTA3NjI1YjM2MTQyMGQ0OGZlMDU3MTY4NTk2MjBmZikKLQotRml4ZXMgb3V0IG9mIGFycmF5IGFjY2VzcwotRml4ZXM6IGFzYW5faGVhcC1vb2JfMjIzODhkMF8zNDM1X2Nvdl8zMjk3MTI4OTEwX3NtYWxsX3JvbGw1X0ZsYXNoQ2luZTEuY2luZQotRm91bmQtYnk6IE1hdGV1c3ogImowMHJ1IiBKdXJjenlrIGFuZCBHeW52YWVsIENvbGR3aW5kCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPHl1ZS50YW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Y29kZWMvcmF3ZGVjLmMgfCAgICAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcmF3ZGVjLmMgYi9saWJhdmNvZGVjL3Jhd2RlYy5jCi1pbmRleCAyODc5MmExLi42NDdkZmE5IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvcmF3ZGVjLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3Jhd2RlYy5jCi1AQCAtODcsNiArODcsOSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgcmF3X2luaXRfZGVjb2RlcihBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0gCi0gICAgIGZmX3NldF9zeXN0ZW1hdGljX3BhbDIoY29udGV4dC0+cGFsZXR0ZSwgYXZjdHgtPnBpeF9mbXQpOwotICAgICBjb250ZXh0LT5sZW5ndGggPSBhdnBpY3R1cmVfZ2V0X3NpemUoYXZjdHgtPnBpeF9mbXQsIGF2Y3R4LT53aWR0aCwgYXZjdHgtPmhlaWdodCk7Ci0rICAgIGlmIChjb250ZXh0LT5sZW5ndGggPCAwKQotKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmxlbmd0aDsKLSsKLSAgICAgaWYoKGF2Y3R4LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUgPT0gNCB8fCBhdmN0eC0+Yml0c19wZXJfY29kZWRfc2FtcGxlID09IDIpICYmCi0gICAgICAgIGF2Y3R4LT5waXhfZm10PT1QSVhfRk1UX1BBTDggJiYKLSAgICAgICAgKCFhdmN0eC0+Y29kZWNfdGFnIHx8IGF2Y3R4LT5jb2RlY190YWcgPT0gTUtUQUcoJ3InLCdhJywndycsJyAnKSkpewotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtOTYwMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtOTYwMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRkYTRjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTk2MDMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIGRjNjhmYWY4MzM5YTg4NWJjNTVmYWJlNWIwMWYxZGU0ZjhmMzc4MmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTMgTWF5IDIwMTUgMTY6MzA6NTMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGdzdC1mZm1wZWc6IGZpeCBDVkUtMjAxNC05NjAzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotVXBzdHJlYW0gaXMgdmVyc2lvbiAyLnggYW5kIHZtZGF2LmMgaXMgc3BsaXR0ZWQgaW50byAyIGZpbGVzIHZtZGF1ZGlvLmMKLWFuZCB2bWR2aWRlby5jLiBCZWN1YXNlIHNvdXJjZSBjb2RlIGNoYW5nZXMsIGp1c3QgcGFydGx5IGJhY2twb3J0IGNvbW1pdCB3aGljaAotaXMgYXBwbGljYWJsZSB0byB2ZXJzaW9uIDAuMTAuMTMgdG8gZml4IENWRS0yMDE0LTk2MDMuCi0KLWh0dHA6Ly9naXQudmlkZW9sYW4ub3JnLz9wPWZmbXBlZy5naXQ7YT1jb21taXQ7aD0zMDMwZmI3ZTBkNDE4MzZmOGFkZDYzOTllOWE3YzdiNzQwYjQ4YmZkCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdm1kYXYuYyB8IDcgKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy92bWRhdi5jIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvdm1kYXYuYwotaW5kZXggZDI1ODI1Mi4uYmE4OGFkOCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3ZtZGF2LmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL3ZtZGF2LmMKLUBAIC0yOTQsMTAgKzI5NCwxMyBAQCBzdGF0aWMgdm9pZCB2bWRfZGVjb2RlKFZtZFZpZGVvQ29udGV4dCAqcykKLSAgICAgICAgICAgICAgICAgICAgIGxlbiA9ICpwYisrOwotICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAmIDB4ODApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAobGVuICYgMHg3RikgKyAxOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcGIrKyA9PSAweEZGKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcGIrKyA9PSAweEZGKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHJsZV91bnBhY2socGIsICZkcFtvZnNdLCBsZW4sIGZyYW1lX3dpZHRoIC0gb2ZzKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mcyArIGxlbiA+IGZyYW1lX3dpZHRoKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoJmRwW29mc10sIHBiLCBsZW4pOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICBwYiArPSBsZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgb2ZzICs9IGxlbjsKLSAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvaDI2NF9xcGVsX21teC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvaDI2NF9xcGVsX21teC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlMjRkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2gyNjRfcXBlbF9tbXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1CYWNrcG9ydCBodHRwOi8vZ2l0LnZpZGVvbGFuLm9yZy8/cD1mZm1wZWcuZ2l0O2E9Y29tbWl0ZGlmZjtoPTVmNjU0ODk3ZTMyNTM0OWRhY2YyNTQ2Njc0ZTA1MTBiYjcyZWNiNTA7aHA9MjUwY2ViZWIzYjM0OGMzZGE3MWY5OTcyZWI1MDBkNjAwNWRjMDFmMQotCi1GaXhlcyB0aGVzZSBlcnJvcnMgb24geDg2Ci0KLWxpYmF2Y29kZWMveDg2L2gyNjRfcXBlbF9tbXguYzogQXNzZW1ibGVyIG1lc3NhZ2VzOgotbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jOjEyOTQ6IEVycm9yOiBvcGVyYW5kIHR5cGUgbWlzbWF0Y2ggZm9yIGBjbXAnCi1saWJhdmNvZGVjL3g4Ni9oMjY0X3FwZWxfbW14LmM6MTI5NDogRXJyb3I6IG9wZXJhbmQgdHlwZSBtaXNtYXRjaCBmb3IgYGNtcCcKLWxpYmF2Y29kZWMveDg2L2gyNjRfcXBlbF9tbXguYzoxMjk4OiBFcnJvcjogb3BlcmFuZCB0eXBlIG1pc21hdGNoIGZvciBgY21wJwotbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jOjEyOTg6IEVycm9yOiBvcGVyYW5kIHR5cGUgbWlzbWF0Y2ggZm9yIGBjbXAnCi1saWJhdmNvZGVjL3g4Ni9oMjY0X3FwZWxfbW14LmM6OTY0OiBFcnJvcjogb3BlcmFuZCB0eXBlIG1pc21hdGNoIGZvciBgY21wJwotbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jOjk2NDogRXJyb3I6IG9wZXJhbmQgdHlwZSBtaXNtYXRjaCBmb3IgYGNtcCcKLWxpYmF2Y29kZWMveDg2L2gyNjRfcXBlbF9tbXguYzo5NjQ6IEVycm9yOiBvcGVyYW5kIHR5cGUgbWlzbWF0Y2ggZm9yIGBjbXAnCi1tYWtlWzVdOiAqKiogW2xpYmF2Y29kZWMveDg2L2RzcHV0aWxfbW14Lm9dIEVycm9yIDEKLQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotSW5kZXg6IGdzdC1mZm1wZWctMC4xMC4xMy9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMveDg2L2gyNjRfcXBlbF9tbXguYwkyMDEyLTAzLTMwIDExOjM5OjQxLjMyNDUyMjA1MSAtMDcwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy94ODYvaDI2NF9xcGVsX21teC5jCTIwMTItMDMtMzAgMTE6NTQ6MDguMTUyNTY0MDc1IC0wNzAwCi1AQCAtMzk4LDcgKzM5OCw3IEBACi0gICAgICAgICAgICAgIjI6ICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiXAotICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICA6ICIrYSIoc3JjKSwgIitjIihkc3QpXAotLSAgICAgICAgICAgIDogIlMiKCh4ODZfcmVnKXNyY1N0cmlkZSksICJEIigoeDg2X3JlZylkc3RTdHJpZGUpLCAiZyIoaClcCi0rICAgICAgICAgICAgOiAiUyIoKHg4Nl9yZWcpc3JjU3RyaWRlKSwgIkQiKCh4ODZfcmVnKWRzdFN0cmlkZSksICJybSIoaClcCi0gICAgICAgICAgICAgOiAibWVtb3J5IlwKLSAgICAgICAgICk7XAotICAgICAgICAgc3JjICs9IDQtKGgrNSkqc3JjU3RyaWRlO1wKLUBAIC00NDYsNyArNDQ2LDcgQEAKLSAgICAgICAgICAgICBRUEVMX0gyNjRIViglJW1tMywgJSVtbTQsICUlbW01LCAlJW1tMCwgJSVtbTEsICUlbW0yLCAxNSo0OClcCi0gICAgICAgICAgICAgIjI6ICAgICAgICAgICAgICAgICAgICAgXG5cdCJcCi0gICAgICAgICAgICAgOiAiK2EiKHNyYylcCi0tICAgICAgICAgICAgOiAiYyIodG1wKSwgIlMiKCh4ODZfcmVnKXNyY1N0cmlkZSksICJnIihzaXplKVwKLSsgICAgICAgICAgICA6ICJjIih0bXApLCAiUyIoKHg4Nl9yZWcpc3JjU3RyaWRlKSwgInJtIihzaXplKVwKLSAgICAgICAgICAgICA6ICJtZW1vcnkiXAotICAgICAgICAgICAgICk7XAotICAgICAgICAgdG1wICs9IDQ7XAotQEAgLTgyMyw3ICs4MjMsNyBAQAotICAgICAgICAgIjI6ICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IlwKLSAgICAgICAgIFwKLSAgICAgICAgIDogIithIihzcmMpLCAiK2MiKGRzdClcCi0tICAgICAgICA6ICJTIigoeDg2X3JlZylzcmNTdHJpZGUpLCAiRCIoKHg4Nl9yZWcpZHN0U3RyaWRlKSwgImciKGgpXAotKyAgICAgICAgOiAiUyIoKHg4Nl9yZWcpc3JjU3RyaWRlKSwgIkQiKCh4ODZfcmVnKWRzdFN0cmlkZSksICJybSIoaClcCi0gICAgICAgICA6IFhNTV9DTE9CQkVSUygiJXhtbTAiLCAiJXhtbTEiLCAiJXhtbTIiLCAiJXhtbTMiLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXhtbTQiLCAiJXhtbTUiLCAiJXhtbTYiLCAiJXhtbTciLClcCi0gICAgICAgICAgICJtZW1vcnkiXAotQEAgLTg3OCw3ICs4NzgsNyBAQAotICAgICAgICAgICAgIFFQRUxfSDI2NEhWX1hNTSglJXhtbTMsICUleG1tNCwgJSV4bW01LCAlJXhtbTAsICUleG1tMSwgJSV4bW0yLCAxNSo0OCkKLSAgICAgICAgICAgICAiMjogICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICA6ICIrYSIoc3JjKQotLSAgICAgICAgICAgIDogImMiKHRtcCksICJTIigoeDg2X3JlZylzcmNTdHJpZGUpLCAiZyIoc2l6ZSkKLSsgICAgICAgICAgICA6ICJjIih0bXApLCAiUyIoKHg4Nl9yZWcpc3JjU3RyaWRlKSwgInJtIihzaXplKQotICAgICAgICAgICAgIDogWE1NX0NMT0JCRVJTKCIleG1tMCIsICIleG1tMSIsICIleG1tMiIsICIleG1tMyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiV4bW00IiwgIiV4bW01IiwgIiV4bW02IiwgIiV4bW03IiwpCi0gICAgICAgICAgICAgICAibWVtb3J5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9saWJhdi05LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9saWJhdi05LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODYwNzUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvbGliYXYtOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzMDQgKzAsMCBAQAotVGFrZW4gZnJvbSBnZW50b28gcGF0Y2hzZXQ6Ci1odHRwOi8vZGV2LmdlbnRvby5vcmcvfnRldHJvbWluby9kaXN0ZmlsZXMvZ3N0LXBsdWdpbnMtZmZtcGVnL2dzdC1mZm1wZWctMC4xMC4xM19wMjAxMi4xMS1saWJhdi05LXBhdGNoZXMudGFyLnh6Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1Db250YWlucyBmb2xsb3dpbmcgY2hhbmdlcywgcmViYXNlZCB0byBhcHBseSBvbiB0b3Agb2Ygb3VyIGNoYW5nZXMKLTAwMDItRml4LWluY2x1ZGVzLWZvci1zeXN0ZW13aWRlLWJ1aWxkLnBhdGNoCi0wMDAzLWxpYmF2LVN3aXRjaC10by1ub24tZGVwcmVjYXRlZC1zeW1ib2xzLnBhdGNoCi0wMDA1LWF2LVVwZGF0ZS1mb3Itc29tZS1jb25zdGFudC1jaGFuZ2VzLnBhdGNoCi0wMDA2LWF2LVJlbW92ZS1wYWxldHRlLXN1cHBvcnQtZm9yLW5vdy5wYXRjaAotMDAwNy1hdi1Qb3J0LXJlbWFpbmluZy1zaW1wbGUtYml0cy5wYXRjaAotMDAwOC1hdi1Vc2UtYXZfY29kZWNfaXNfLWVuLWRlLWNvZGVyLUFQSS1pbnN0ZWFkLW9mLXByaXZhLnBhdGNoCi0wMDA5LWF2cHJvdG9jb2wtUG9ydC1mcm9tLXRoZS1VUkwtcHJvdG9jb2wtaGFuZGxlci10by1zYW4ucGF0Y2gKLTAwMTAtYXZkZWMtZG9uLXQtd2FpdC1mb3Ita2V5ZnJhbWUucGF0Y2gKLQotRm9sbG93aW5nIGNoYW5nZXMgd2VyZSBza2lwcGVkOgotMDAwMS1QYXJ0aWFsbHktcmV2ZXJ0LWNvbW1pdC0wMzAwODAxYi5wYXRjaAotMDAwNC1hdi11cGRhdGUtdG8tdXNlLUFWT3B0aW9uLXZhcmlhbnRzLnBhdGNoCi0wMDExLWF2X2dldF9iaXRzX3Blcl9zYW1wbGVfZm9ybWF0LXdhcy1yZW1vdmVkLWluLWxpYmF2LTkucGF0Y2gKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotCi1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWcuYyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWcuYwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnLmMJMjAxMS0xMC0zMSAxMToxNDowMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWcuYwkyMDE0LTA4LTA4IDE1OjI2OjA3Ljg3Mjg1NzU1NSArMDIwMAotQEAgLTE1MSw5ICsxNTEsNiBAQAotICNlbmRpZgotICAgZ3N0X2ZmbXBlZ2F1ZGlvcmVzYW1wbGVfcmVnaXN0ZXIgKHBsdWdpbik7Ci0gCi0tICBhdl9yZWdpc3Rlcl9wcm90b2NvbDIgKCZnc3RyZWFtZXJfcHJvdG9jb2wsIHNpemVvZiAoVVJMUHJvdG9jb2wpKTsKLS0gIGF2X3JlZ2lzdGVyX3Byb3RvY29sMiAoJmdzdHBpcGVfcHJvdG9jb2wsIHNpemVvZiAoVVJMUHJvdG9jb2wpKTsKLS0KLSAgIC8qIE5vdyB3ZSBjYW4gcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIFBsdWdpbiBvYmplY3QuICovCi0gICByZXR1cm4gVFJVRTsKLSB9Ci1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWcuaCBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWcuaAotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnLmgJMjAxMS0wNS0xNyAxMDo1MzoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWcuaAkyMDE0LTA4LTA4IDE1OjI2OjA3Ljg3Mjg1NzU1NSArMDIwMAotQEAgLTU4LDEwICs1OCwxMyBAQAotIGludCBnc3RfZmZtcGVnX2F2Y29kZWNfY2xvc2UgKEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Ci0gaW50IGdzdF9mZm1wZWdfYXZfZmluZF9zdHJlYW1faW5mbyhBVkZvcm1hdENvbnRleHQgKmljKTsKLSAKLS1HX0VORF9ERUNMUwotK2ludCBnc3RfZmZtcGVnZGF0YV9vcGVuIChHc3RQYWQgKiBwYWQsIGludCBmbGFncywgQVZJT0NvbnRleHQgKiogY29udGV4dCk7Ci0raW50IGdzdF9mZm1wZWdkYXRhX2Nsb3NlIChBVklPQ29udGV4dCAqIGgpOwotK3R5cGVkZWYgc3RydWN0IF9Hc3RGRk1wZWdQaXBlIEdzdEZGTXBlZ1BpcGU7Ci0raW50IGdzdF9mZm1wZWdfcGlwZV9vcGVuIChHc3RGRk1wZWdQaXBlICpmZnBpcGUsIGludCBmbGFncywgQVZJT0NvbnRleHQgKiogY29udGV4dCk7Ci0raW50IGdzdF9mZm1wZWdfcGlwZV9jbG9zZSAoQVZJT0NvbnRleHQgKiBoKTsKLSAKLS1leHRlcm4gVVJMUHJvdG9jb2wgZ3N0cmVhbWVyX3Byb3RvY29sOwotLWV4dGVybiBVUkxQcm90b2NvbCBnc3RwaXBlX3Byb3RvY29sOwotK0dfRU5EX0RFQ0xTCi0gCi0gLyogdXNlIEdTVF9GRk1QRUcgVVJMX1NUUkVBTUhFQURFUiB3aXRoIFVSTF9XUk9OTFkgaWYgdGhlIGZpcnN0Ci0gICogYnVmZmVyIHNob3VsZCBiZSB1c2VkIGFzIHN0cmVhbWhlYWRlciBwcm9wZXJ0eSBvbiB0aGUgcGFkJ3MgY2Fwcy4gKi8KLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2NmZy5jIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2NmZy5jCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdjZmcuYwkyMDExLTA3LTEyIDE2OjM1OjI3LjAwMDAwMDAwMCArMDIwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2NmZy5jCTIwMTQtMDgtMDggMTU6MjQ6MTcuODk5ODUzNjEyICswMjAwCi1AQCAtMTQ3LDcgKzE0Nyw2IEBACi0gICAgICAge0ZGX0RDVF9GQVNUSU5ULCAiRmFzdCBJbnRlZ2VyIiwgImZhc3RpbnQifSwKLSAgICAgICB7RkZfRENUX0lOVCwgIkFjY3VyYXRlIEludGVnZXIiLCAiaW50In0sCi0gICAgICAge0ZGX0RDVF9NTVgsICJNTVgiLCAibW14In0sCi0tICAgICAge0ZGX0RDVF9NTElCLCAiTUxJQiIsICJtbGliIn0sCi0gICAgICAge0ZGX0RDVF9BTFRJVkVDLCAiQUxUSVZFQyIsICJhbHRpdmVjIn0sCi0gICAgICAge0ZGX0RDVF9GQUFOLCAiRkFBTiIsICJmYWFuIn0sCi0gICAgICAgezAsIE5VTEwsIE5VTEx9LAotQEAgLTE3Myw4ICsxNzIsNiBAQAotICAgICAgIHtGRl9JRENUX1NJTVBMRSwgIlNpbXBsZSIsICJzaW1wbGUifSwKLSAgICAgICB7RkZfSURDVF9TSU1QTEVNTVgsICJTaW1wbGUgTU1YIiwgInNpbXBsZW1teCJ9LAotICAgICAgIHtGRl9JRENUX0xJQk1QRUcyTU1YLCAiTElCTVBFRzJNTVgiLCAibGlibXBlZzJtbXgifSwKLS0gICAgICB7RkZfSURDVF9QUzIsICJQUzIiLCAicHMyIn0sCi0tICAgICAge0ZGX0lEQ1RfTUxJQiwgIk1MSUIiLCAibWxpYiJ9LAotICAgICAgIHtGRl9JRENUX0FSTSwgIkFSTSIsICJhcm0ifSwKLSAgICAgICB7RkZfSURDVF9BTFRJVkVDLCAiQUxUSVZFQyIsICJhbHRpdmVjIn0sCi0gICAgICAge0ZGX0lEQ1RfU0g0LCAiU0g0IiwgInNoNCJ9LAotQEAgLTI2MywxNiArMjYwLDExIEBACi0gCi0gICBpZiAoIWZmbXBlZ19mbGFnc190eXBlKSB7Ci0gICAgIHN0YXRpYyBjb25zdCBHRmxhZ3NWYWx1ZSBmZm1wZWdfZmxhZ3NbXSA9IHsKLS0gICAgICB7Q09ERUNfRkxBR19PQk1DLCAiVXNlIG92ZXJsYXBwZWQgYmxvY2sgbW90aW9uIGNvbXBlbnNhdGlvbiAoaDI2MyspIiwKLS0gICAgICAgICAgIm9ibWMifSwKLSAgICAgICB7Q09ERUNfRkxBR19RU0NBTEUsICJVc2UgZml4ZWQgcXNjYWxlIiwgInFzY2FsZSJ9LAotICAgICAgIHtDT0RFQ19GTEFHXzRNViwgIkFsbG93IDQgTVYgcGVyIE1CIiwgIjRtdiJ9LAotLSAgICAgIHtDT0RFQ19GTEFHX0gyNjNQX0FJViwgIkguMjYzIGFsdGVybmF0aXZlIGludGVyIFZMQyIsICJhaXYifSwKLSAgICAgICB7Q09ERUNfRkxBR19RUEVMLCAiUXVhcnRlbCBQZWwgTW90aW9uIENvbXBlbnNhdGlvbiIsICJxcGVsIn0sCi0gICAgICAge0NPREVDX0ZMQUdfR01DLCAiR01DIiwgImdtYyJ9LAotICAgICAgIHtDT0RFQ19GTEFHX01WMCwgIkFsd2F5cyB0cnkgYSBNQiB3aXRoIE1WICgwLDApIiwgIm12MCJ9LAotLSAgICAgIHtDT0RFQ19GTEFHX1BBUlQsCi0tICAgICAgICAgICJTdG9yZSBNViwgREMgYW5kIEFDIGNvZWZmaWNpZW50cyBpbiBzZXBlcmF0ZSBwYXJ0aXRpb25zIiwgInBhcnQifSwKLSAgICAgICB7Q09ERUNfRkxBR19MT09QX0ZJTFRFUiwgIkxvb3AgZmlsdGVyIiwgImxvb3AtZmlsdGVyIn0sCi0gICAgICAge0NPREVDX0ZMQUdfR1JBWSwgIk9ubHkgZGVjb2RlL2VuY29kZSBncmF5c2NhbGUiLCAiZ3JheSJ9LAotICAgICAgIHtDT0RFQ19GTEFHX05PUk1BTElaRV9BUVAsCi1AQCAtMjgyLDEzICsyNzQsOSBAQAotICAgICAgICAgICAiZ2xvYmFsLWhlYWRlcnMifSwKLSAgICAgICB7Q09ERUNfRkxBR19BQ19QUkVELCAiSDI2MyBBZHZhbmNlZCBJbnRyYSBDb2RpbmcgLyBNUEVHNCBBQyBwcmVkaWN0aW9uIiwKLSAgICAgICAgICAgImFpYyJ9LAotLSAgICAgIHtDT0RFQ19GTEFHX0gyNjNQX1VNViwgIlVubGltaXRlZCBNb3Rpb24gVmVjdG9yIiwgInVtdiJ9LAotICAgICAgIHtDT0RFQ19GTEFHX0NCUF9SRCwgIlJhdGUgRGlzdG9yYXRpb24gT3B0aW1pemF0aW9uIGZvciBDQlAiLCAiY2JwLXJkIn0sCi0gICAgICAge0NPREVDX0ZMQUdfUVBfUkQsICJSYXRlIERpc3RvcmF0aW9uIE9wdGltaXphdGlvbiBmb3IgUVAgc2VsZWN0aW9uIiwKLSAgICAgICAgICAgInFwLXJkIn0sCi0tICAgICAge0NPREVDX0ZMQUdfSDI2M1BfU0xJQ0VfU1RSVUNULCAiSDI2MyBzbGljZSBzdHJ1Y3QiLCAic3MifSwKLS0gICAgICB7Q09ERUNfRkxBR19TVkNEX1NDQU5fT0ZGU0VULAotLSAgICAgICAgICAiUmVzZXJ2ZSBzcGFjZSBmb3IgU1ZDRCBzY2FuIG9mZnNldCB1c2VyIGRhdGEiLCAic2Nhbm9mZnNldCJ9LAotICAgICAgIHtDT0RFQ19GTEFHX0NMT1NFRF9HT1AsICJDbG9zZWQgR09QIiwgImNsb3NlZGdvcCJ9LAotICAgICAgIHswLCBOVUxMLCBOVUxMfSwKLSAgICAgfTsKLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2NvZGVjbWFwLmMgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYwkyMDExLTEwLTMxIDExOjE0OjAzLjAwMDAwMDAwMCArMDEwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2NvZGVjbWFwLmMJMjAxNC0wOC0wOCAxNTozMTozMC45Njg4NjkxMzkgKzAyMDAKLUBAIC0yNSw4ICsyNSwxMCBAQAotICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0gI2lmZGVmIEhBVkVfRkZNUEVHX1VOSU5TVEFMTEVECi0gI2luY2x1ZGUgPGF2Y29kZWMuaD4KLSsjaW5jbHVkZSA8Y2hhbm5lbF9sYXlvdXQuaD4KLSAjZWxzZQotICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KLSsjaW5jbHVkZSA8bGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmg+Ci0gI2VuZGlmCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotQEAgLTM1LDQzICszNyw2IEBACi0gCi0gI2luY2x1ZGUgPGdzdC9wYnV0aWxzL2NvZGVjLXV0aWxzLmg+Ci0gCi0tLyoKLS0gKiBSZWFkIGEgcGFsZXR0ZSBmcm9tIGEgY2Fwcy4KLS0gKi8KLS0KLS1zdGF0aWMgdm9pZAotLWdzdF9mZm1wZWdfZ2V0X3BhbGV0dGUgKGNvbnN0IEdzdENhcHMgKiBjYXBzLCBBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQpCi0tewotLSAgR3N0U3RydWN0dXJlICpzdHIgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLS0gIGNvbnN0IEdWYWx1ZSAqcGFsZXR0ZV92OwotLSAgY29uc3QgR3N0QnVmZmVyICpwYWxldHRlOwotLQotLSAgLyogZG8gd2UgaGF2ZSBhIHBhbGV0dGU/ICovCi0tICBpZiAoKHBhbGV0dGVfdiA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChzdHIsICJwYWxldHRlX2RhdGEiKSkgJiYgY29udGV4dCkgewotLSAgICBwYWxldHRlID0gZ3N0X3ZhbHVlX2dldF9idWZmZXIgKHBhbGV0dGVfdik7Ci0tICAgIGlmIChHU1RfQlVGRkVSX1NJWkUgKHBhbGV0dGUpID49IEFWUEFMRVRURV9TSVpFKSB7Ci0tICAgICAgaWYgKGNvbnRleHQtPnBhbGN0cmwpCi0tICAgICAgICBhdl9mcmVlIChjb250ZXh0LT5wYWxjdHJsKTsKLS0gICAgICBjb250ZXh0LT5wYWxjdHJsID0gYXZfbWFsbG9jIChzaXplb2YgKEFWUGFsZXR0ZUNvbnRyb2wpKTsKLS0gICAgICBjb250ZXh0LT5wYWxjdHJsLT5wYWxldHRlX2NoYW5nZWQgPSAxOwotLSAgICAgIG1lbWNweSAoY29udGV4dC0+cGFsY3RybC0+cGFsZXR0ZSwgR1NUX0JVRkZFUl9EQVRBIChwYWxldHRlKSwKLS0gICAgICAgICAgQVZQQUxFVFRFX1NJWkUpOwotLSAgICB9Ci0tICB9Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZ3N0X2ZmbXBlZ19zZXRfcGFsZXR0ZSAoR3N0Q2FwcyAqIGNhcHMsIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCkKLS17Ci0tICBpZiAoY29udGV4dC0+cGFsY3RybCkgewotLSAgICBHc3RCdWZmZXIgKnBhbGV0dGUgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKEFWUEFMRVRURV9TSVpFKTsKLS0KLS0gICAgbWVtY3B5IChHU1RfQlVGRkVSX0RBVEEgKHBhbGV0dGUpLCBjb250ZXh0LT5wYWxjdHJsLT5wYWxldHRlLAotLSAgICAgICAgQVZQQUxFVFRFX1NJWkUpOwotLSAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAicGFsZXR0ZV9kYXRhIiwgR1NUX1RZUEVfQlVGRkVSLCBwYWxldHRlLCBOVUxMKTsKLS0gIH0KLS19Ci0tCi0gLyogSU1QT1JUQU5UOiBLZWVwIHRoaXMgc29ydGVkIGJ5IHRoZSBmZm1wZWcgY2hhbm5lbCBtYXNrcyAqLwotIHN0YXRpYyBjb25zdCBzdHJ1Y3QKLSB7Ci1AQCAtNzksMjYgKzQ0LDI2IEBACi0gICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBnc3Q7Ci0gfSBfZmZfdG9fZ3N0X2xheW91dFtdID0gewotICAgewotLSAgQ0hfRlJPTlRfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVH0sIHsKLS0gIENIX0ZST05UX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVH0sIHsKLS0gIENIX0ZST05UX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfQ0VOVEVSfSwgewotLSAgQ0hfTE9XX0ZSRVFVRU5DWSwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTEZFfSwgewotLSAgQ0hfQkFDS19MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlR9LCB7Ci0tICBDSF9CQUNLX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX1JJR0hUfSwgewotLSAgQ0hfRlJPTlRfTEVGVF9PRl9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlRfT0ZfQ0VOVEVSfSwgewotLSAgQ0hfRlJPTlRfUklHSFRfT0ZfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVF9PRl9DRU5URVJ9LCB7Ci0tICBDSF9CQUNLX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9DRU5URVJ9LCB7Ci0tICBDSF9TSURFX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfTEVGVH0sIHsKLS0gIENIX1NJREVfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfUklHSFR9LCB7Ci0tICBDSF9UT1BfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotLSAgQ0hfVE9QX0ZST05UX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0tICBDSF9UT1BfRlJPTlRfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotLSAgQ0hfVE9QX0ZST05UX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotLSAgQ0hfVE9QX0JBQ0tfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLS0gIENIX1RPUF9CQUNLX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLS0gIENIX1RPUF9CQUNLX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotLSAgQ0hfU1RFUkVPX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlR9LCB7Ci0tICBDSF9TVEVSRU9fUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfQotKyAgQVZfQ0hfRlJPTlRfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVH0sIHsKLSsgIEFWX0NIX0ZST05UX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVH0sIHsKLSsgIEFWX0NIX0ZST05UX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfQ0VOVEVSfSwgewotKyAgQVZfQ0hfTE9XX0ZSRVFVRU5DWSwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTEZFfSwgewotKyAgQVZfQ0hfQkFDS19MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlR9LCB7Ci0rICBBVl9DSF9CQUNLX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX1JJR0hUfSwgewotKyAgQVZfQ0hfRlJPTlRfTEVGVF9PRl9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlRfT0ZfQ0VOVEVSfSwgewotKyAgQVZfQ0hfRlJPTlRfUklHSFRfT0ZfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVF9PRl9DRU5URVJ9LCB7Ci0rICBBVl9DSF9CQUNLX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9DRU5URVJ9LCB7Ci0rICBBVl9DSF9TSURFX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfTEVGVH0sIHsKLSsgIEFWX0NIX1NJREVfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfUklHSFR9LCB7Ci0rICBBVl9DSF9UT1BfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0ZST05UX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9UT1BfRlJPTlRfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0ZST05UX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0JBQ0tfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLSsgIEFWX0NIX1RPUF9CQUNLX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLSsgIEFWX0NIX1RPUF9CQUNLX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfU1RFUkVPX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlR9LCB7Ci0rICBBVl9DSF9TVEVSRU9fUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfQotIH07Ci0gCi0gc3RhdGljIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uICoKLUBAIC0zNDIsOCArMzA3LDggQEAKLSAKLSAgICAgaWYgKGNoYW5uZWxfbGF5b3V0ID09IDApIHsKLSAgICAgICBjb25zdCBndWludDY0IGRlZmF1bHRfY2hhbm5lbF9zZXRbXSA9IHsKLS0gICAgICAgIDAsIDAsIENIX0xBWU9VVF9TVVJST1VORCwgQ0hfTEFZT1VUX1FVQUQsIENIX0xBWU9VVF81UE9JTlQwLAotLSAgICAgICAgQ0hfTEFZT1VUXzVQT0lOVDEsIDAsIENIX0xBWU9VVF83UE9JTlQxCi0rICAgICAgICAwLCAwLCBBVl9DSF9MQVlPVVRfU1VSUk9VTkQsIEFWX0NIX0xBWU9VVF9RVUFELCBBVl9DSF9MQVlPVVRfNVBPSU5UMCwKLSsgICAgICAgIEFWX0NIX0xBWU9VVF81UE9JTlQxLCAwLCBBVl9DSF9MQVlPVVRfN1BPSU5UMQotICAgICAgIH07Ci0gCi0gICAgICAgc3dpdGNoIChjb2RlY19pZCkgewotQEAgLTEyNjcsOCArMTIzMiw2IEBACi0gICAgIGNhc2UgQ09ERUNfSURfRkxJQzoKLSAgICAgY2FzZSBDT0RFQ19JRF9WTURWSURFTzoKLSAgICAgY2FzZSBDT0RFQ19JRF9WTURBVURJTzoKLS0gICAgY2FzZSBDT0RFQ19JRF9TT05JQzoKLS0gICAgY2FzZSBDT0RFQ19JRF9TT05JQ19MUzoKLSAgICAgY2FzZSBDT0RFQ19JRF9TTk9XOgotICAgICBjYXNlIENPREVDX0lEX1ZJWEw6Ci0gICAgIGNhc2UgQ09ERUNfSURfUVBFRzoKLUBAIC0xNjg5LDExICsxNjUyLDYgQEAKLSAgICAgICBnc3RfYnVmZmVyX3VucmVmIChkYXRhKTsKLSAgICAgfQotIAotLSAgICAvKiBwYWxldHRlICovCi0tICAgIGlmIChjb250ZXh0KSB7Ci0tICAgICAgZ3N0X2ZmbXBlZ19zZXRfcGFsZXR0ZSAoY2FwcywgY29udGV4dCk7Ci0tICAgIH0KLS0KLSAgICAgR1NUX0xPRyAoImNhcHMgZm9yIGNvZGVjX2lkPSVkOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY29kZWNfaWQsIGNhcHMpOwotIAotICAgfSBlbHNlIHsKLUBAIC0xODMwLDkgKzE3ODgsNiBAQAotICAgICAgICAgICAgICJicHAiLCBHX1RZUEVfSU5ULCBicHAsCi0gICAgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgZGVwdGgsCi0gICAgICAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBlbmRpYW5uZXNzLCBOVUxMKTsKLS0gICAgICAgIGlmIChjYXBzICYmIGNvbnRleHQpIHsKLS0gICAgICAgICAgZ3N0X2ZmbXBlZ19zZXRfcGFsZXR0ZSAoY2FwcywgY29udGV4dCk7Ci0tICAgICAgICB9Ci0gICAgICAgfQotICAgICB9IGVsc2UgaWYgKGZtdCkgewotICAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtcmF3LXl1diIsCi1AQCAtMTg1Nyw3ICsxODEyLDcgQEAKLSAgKi8KLSAKLSBzdGF0aWMgR3N0Q2FwcyAqCi0tZ3N0X2ZmbXBlZ19zbXBmbXRfdG9fY2FwcyAoZW51bSBTYW1wbGVGb3JtYXQgc2FtcGxlX2ZtdCwKLStnc3RfZmZtcGVnX3NtcGZtdF90b19jYXBzIChlbnVtIEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mbXQsCi0gICAgIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwgZW51bSBDb2RlY0lEIGNvZGVjX2lkKQotIHsKLSAgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwotQEAgLTE4NjcsMjIgKzE4MjIsMjIgQEAKLSAgIGdib29sZWFuIHNpZ25lZG5lc3MgPSBGQUxTRTsKLSAKLSAgIHN3aXRjaCAoc2FtcGxlX2ZtdCkgewotLSAgICBjYXNlIFNBTVBMRV9GTVRfUzE2OgotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfUzE2OgotICAgICAgIHNpZ25lZG5lc3MgPSBUUlVFOwotICAgICAgIGJwcCA9IDE2OwotICAgICAgIGJyZWFrOwotIAotLSAgICBjYXNlIFNBTVBMRV9GTVRfUzMyOgotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfUzMyOgotICAgICAgIHNpZ25lZG5lc3MgPSBUUlVFOwotICAgICAgIGJwcCA9IDMyOwotICAgICAgIGJyZWFrOwotIAotLSAgICBjYXNlIFNBTVBMRV9GTVRfRkxUOgotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfRkxUOgotICAgICAgIGludGVnZXIgPSBGQUxTRTsKLSAgICAgICBicHAgPSAzMjsKLSAgICAgICBicmVhazsKLSAKLS0gICAgY2FzZSBTQU1QTEVfRk1UX0RCTDoKLSsgICAgY2FzZSBBVl9TQU1QTEVfRk1UX0RCTDoKLSAgICAgICBpbnRlZ2VyID0gRkFMU0U7Ci0gICAgICAgYnBwID0gNjQ7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTk0MSwxMiArMTg5NiwxMiBAQAotICAgICB9Ci0gICB9IGVsc2UgewotICAgICBHc3RDYXBzICp0ZW1wOwotLSAgICBlbnVtIFNhbXBsZUZvcm1hdCBpOwotKyAgICBlbnVtIEFWU2FtcGxlRm9ybWF0IGk7Ci0gICAgIEFWQ29kZWNDb250ZXh0IGN0eCA9IHsgMCwgfTsKLSAKLSAgICAgY3R4LmNoYW5uZWxzID0gLTE7Ci0gICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0tICAgIGZvciAoaSA9IDA7IGkgPD0gU0FNUExFX0ZNVF9EQkw7IGkrKykgewotKyAgICBmb3IgKGkgPSAwOyBpIDw9IEFWX1NBTVBMRV9GTVRfREJMOyBpKyspIHsKLSAgICAgICB0ZW1wID0gZ3N0X2ZmbXBlZ19zbXBmbXRfdG9fY2FwcyAoaSwgZW5jb2RlID8gJmN0eCA6IE5VTEwsIGNvZGVjX2lkKTsKLSAgICAgICBpZiAodGVtcCAhPSBOVUxMKSB7Ci0gICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIHRlbXApOwotQEAgLTIwNDksOSArMjAwNCw5IEBACi0gICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImVuZGlhbm5lc3MiLCAmZW5kaWFubmVzcykpIHsKLSAgICAgICBpZiAoZW5kaWFubmVzcyA9PSBHX0JZVEVfT1JERVIpIHsKLSAgICAgICAgIGlmICh3aWR0aCA9PSAzMikKLS0gICAgICAgICAgY29udGV4dC0+c2FtcGxlX2ZtdCA9IFNBTVBMRV9GTVRfRkxUOwotKyAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9GTFQ7Ci0gICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSA2NCkKLS0gICAgICAgICAgY29udGV4dC0+c2FtcGxlX2ZtdCA9IFNBTVBMRV9GTVRfREJMOwotKyAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9EQkw7Ci0gICAgICAgfQotICAgICB9Ci0gICB9IGVsc2UgewotQEAgLTIwNjIsOSArMjAxNyw5IEBACi0gICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImVuZGlhbm5lc3MiLCAmZW5kaWFubmVzcykpIHsKLSAgICAgICBpZiAoKGVuZGlhbm5lc3MgPT0gR19CWVRFX09SREVSKSAmJiAoc2lnbmVkbmVzcyA9PSBUUlVFKSkgewotICAgICAgICAgaWYgKCh3aWR0aCA9PSAxNikgJiYgKGRlcHRoID09IDE2KSkKLS0gICAgICAgICAgY29udGV4dC0+c2FtcGxlX2ZtdCA9IFNBTVBMRV9GTVRfUzE2OwotKyAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTY7Ci0gICAgICAgICBlbHNlIGlmICgod2lkdGggPT0gMzIpICYmIChkZXB0aCA9PSAzMikpCi0tICAgICAgICAgIGNvbnRleHQtPnNhbXBsZV9mbXQgPSBTQU1QTEVfRk1UX1MzMjsKLSsgICAgICAgICAgY29udGV4dC0+c2FtcGxlX2ZtdCA9IEFWX1NBTVBMRV9GTVRfUzMyOwotICAgICAgIH0KLSAgICAgfQotICAgfQotQEAgLTIxOTAsNyArMjE0NSw2IEBACi0gICAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChicHAgPT0gOCkgewotICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9QQUw4OwotLSAgICAgICAgICBnc3RfZmZtcGVnX2dldF9wYWxldHRlIChjYXBzLCBjb250ZXh0KTsKLSAgICAgICAgIH0KLSAgICAgICB9Ci0gICAgIH0KLUBAIC0yNTc2LDcgKzI1MzAsNiBAQAotICAgc3dpdGNoIChjb2RlY190eXBlKSB7Ci0gICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgotICAgICAgIGdzdF9mZm1wZWdfY2Fwc190b19waXhmbXQgKGNhcHMsIGNvbnRleHQsIGNvZGVjX2lkID09IENPREVDX0lEX1JBV1ZJREVPKTsKLS0gICAgICBnc3RfZmZtcGVnX2dldF9wYWxldHRlIChjYXBzLCBjb250ZXh0KTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBBVk1FRElBX1RZUEVfQVVESU86Ci0gICAgICAgZ3N0X2ZmbXBlZ19jYXBzX3RvX3NtcGZtdCAoY2FwcywgY29udGV4dCwgRkFMU0UpOwotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYy5vcmlnIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2NvZGVjbWFwLmMub3JpZwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYy5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYy5vcmlnCTIwMTQtMDgtMDggMTU6MzA6MzQuMDA2ODY3MDk3ICswMjAwCi1AQCAtMCwwICsxLDM0NDcgQEAKLSsvKiBHU3RyZWFtZXIKLSsgKiBDb3B5cmlnaHQgKEMpIDwxOTk5PiBFcmlrIFdhbHRoaW5zZW4gPG9tZWdhQGNzZS5vZ2kuZWR1PgotKyAqIFRoaXMgZmlsZToKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCBSb25hbGQgQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+Ci0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0rICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0rI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSsjaWZkZWYgSEFWRV9GRk1QRUdfVU5JTlNUQUxMRUQKLSsjaW5jbHVkZSA8YXZjb2RlYy5oPgotKyNpbmNsdWRlIDxjaGFubmVsX2xheW91dC5oPj4KLSsjZWxzZQotKyNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KLSsjaW5jbHVkZSA8bGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmg+Ci0rI2VuZGlmCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlICJnc3RmZm1wZWcuaCIKLSsjaW5jbHVkZSAiZ3N0ZmZtcGVnY29kZWNtYXAuaCIKLSsKLSsjaW5jbHVkZSA8Z3N0L3BidXRpbHMvY29kZWMtdXRpbHMuaD4KLSsKLSsvKgotKyAqIFJlYWQgYSBwYWxldHRlIGZyb20gYSBjYXBzLgotKyAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ19nZXRfcGFsZXR0ZSAoY29uc3QgR3N0Q2FwcyAqIGNhcHMsIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCkKLSt7Ci0rICBHc3RTdHJ1Y3R1cmUgKnN0ciA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotKyAgY29uc3QgR1ZhbHVlICpwYWxldHRlX3Y7Ci0rICBjb25zdCBHc3RCdWZmZXIgKnBhbGV0dGU7Ci0rCi0rICAvKiBkbyB3ZSBoYXZlIGEgcGFsZXR0ZT8gKi8KLSsgIGlmICgocGFsZXR0ZV92ID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHN0ciwgInBhbGV0dGVfZGF0YSIpKSAmJiBjb250ZXh0KSB7Ci0rICAgIHBhbGV0dGUgPSBnc3RfdmFsdWVfZ2V0X2J1ZmZlciAocGFsZXR0ZV92KTsKLSsgICAgaWYgKEdTVF9CVUZGRVJfU0laRSAocGFsZXR0ZSkgPj0gQVZQQUxFVFRFX1NJWkUpIHsKLSsgICAgICBpZiAoY29udGV4dC0+cGFsY3RybCkKLSsgICAgICAgIGF2X2ZyZWUgKGNvbnRleHQtPnBhbGN0cmwpOwotKyAgICAgIGNvbnRleHQtPnBhbGN0cmwgPSBhdl9tYWxsb2MgKHNpemVvZiAoQVZQYWxldHRlQ29udHJvbCkpOwotKyAgICAgIGNvbnRleHQtPnBhbGN0cmwtPnBhbGV0dGVfY2hhbmdlZCA9IDE7Ci0rICAgICAgbWVtY3B5IChjb250ZXh0LT5wYWxjdHJsLT5wYWxldHRlLCBHU1RfQlVGRkVSX0RBVEEgKHBhbGV0dGUpLAotKyAgICAgICAgICBBVlBBTEVUVEVfU0laRSk7Ci0rICAgIH0KLSsgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnX3NldF9wYWxldHRlIChHc3RDYXBzICogY2FwcywgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0KQotK3sKLSsgIGlmIChjb250ZXh0LT5wYWxjdHJsKSB7Ci0rICAgIEdzdEJ1ZmZlciAqcGFsZXR0ZSA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoQVZQQUxFVFRFX1NJWkUpOwotKwotKyAgICBtZW1jcHkgKEdTVF9CVUZGRVJfREFUQSAocGFsZXR0ZSksIGNvbnRleHQtPnBhbGN0cmwtPnBhbGV0dGUsCi0rICAgICAgICBBVlBBTEVUVEVfU0laRSk7Ci0rICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJwYWxldHRlX2RhdGEiLCBHU1RfVFlQRV9CVUZGRVIsIHBhbGV0dGUsIE5VTEwpOwotKyAgfQotK30KLSsKLSsvKiBJTVBPUlRBTlQ6IEtlZXAgdGhpcyBzb3J0ZWQgYnkgdGhlIGZmbXBlZyBjaGFubmVsIG1hc2tzICovCi0rc3RhdGljIGNvbnN0IHN0cnVjdAotK3sKLSsgIGd1aW50NjQgZmY7Ci0rICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBnc3Q7Ci0rfSBfZmZfdG9fZ3N0X2xheW91dFtdID0gewotKyAgewotKyAgQVZfQ0hfRlJPTlRfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVH0sIHsKLSsgIEFWX0NIX0ZST05UX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVH0sIHsKLSsgIEFWX0NIX0ZST05UX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfQ0VOVEVSfSwgewotKyAgQVZfQ0hfTE9XX0ZSRVFVRU5DWSwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTEZFfSwgewotKyAgQVZfQ0hfQkFDS19MRUZULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlR9LCB7Ci0rICBBVl9DSF9CQUNLX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX1JJR0hUfSwgewotKyAgQVZfQ0hfRlJPTlRfTEVGVF9PRl9DRU5URVIsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlRfT0ZfQ0VOVEVSfSwgewotKyAgQVZfQ0hfRlJPTlRfUklHSFRfT0ZfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVF9PRl9DRU5URVJ9LCB7Ci0rICBBVl9DSF9CQUNLX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9DRU5URVJ9LCB7Ci0rICBBVl9DSF9TSURFX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfTEVGVH0sIHsKLSsgIEFWX0NIX1NJREVfUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfUklHSFR9LCB7Ci0rICBBVl9DSF9UT1BfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0ZST05UX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX05PTkV9LCB7Ci0rICBBVl9DSF9UT1BfRlJPTlRfQ0VOVEVSLCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0ZST05UX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfVE9QX0JBQ0tfTEVGVCwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLSsgIEFWX0NIX1RPUF9CQUNLX0NFTlRFUiwgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORX0sIHsKLSsgIEFWX0NIX1RPUF9CQUNLX1JJR0hULCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FfSwgewotKyAgQVZfQ0hfU1RFUkVPX0xFRlQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlR9LCB7Ci0rICBBVl9DSF9TVEVSRU9fUklHSFQsIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfQotK307Ci0rCi0rc3RhdGljIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uICoKLStnc3RfZmZfY2hhbm5lbF9sYXlvdXRfdG9fZ3N0IChndWludDY0IGNoYW5uZWxfbGF5b3V0LCBndWludCBjaGFubmVscykKLSt7Ci0rICBndWludCBuY2hhbm5lbHMgPSAwLCBpLCBqOwotKyAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gKnBvcyA9IE5VTEw7Ci0rICBnYm9vbGVhbiBub25lX2xheW91dCA9IEZBTFNFOwotKwotKyAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHsKLSsgICAgaWYgKChjaGFubmVsX2xheW91dCAmIChHX0dVSU5UNjRfQ09OU1RBTlQgKDEpIDw8IGkpKSAhPSAwKSB7Ci0rICAgICAgbmNoYW5uZWxzKys7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGlmIChjaGFubmVsX2xheW91dCA9PSAwKSB7Ci0rICAgIG5jaGFubmVscyA9IGNoYW5uZWxzOwotKyAgICBub25lX2xheW91dCA9IFRSVUU7Ci0rICB9Ci0rCi0rICBpZiAobmNoYW5uZWxzICE9IGNoYW5uZWxzKSB7Ci0rICAgIEdTVF9FUlJPUiAoIk51bWJlciBvZiBjaGFubmVscyBpcyBkaWZmZXJlbnQgKCV1ICE9ICV1KSIsIGNoYW5uZWxzLAotKyAgICAgICAgbmNoYW5uZWxzKTsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICB9Ci0rCi0rICBwb3MgPSBnX25ldyAoR3N0QXVkaW9DaGFubmVsUG9zaXRpb24sIG5jaGFubmVscyk7Ci0rCi0rICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoX2ZmX3RvX2dzdF9sYXlvdXQpOyBpKyspIHsKLSsgICAgaWYgKChjaGFubmVsX2xheW91dCAmIF9mZl90b19nc3RfbGF5b3V0W2ldLmZmKSAhPSAwKSB7Ci0rICAgICAgcG9zW2orK10gPSBfZmZfdG9fZ3N0X2xheW91dFtpXS5nc3Q7Ci0rCi0rICAgICAgaWYgKF9mZl90b19nc3RfbGF5b3V0W2ldLmdzdCA9PSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FKQotKyAgICAgICAgbm9uZV9sYXlvdXQgPSBUUlVFOwotKyAgICB9Ci0rICB9Ci0rCi0rICBpZiAoaiAhPSBuY2hhbm5lbHMpIHsKLSsgICAgR1NUX1dBUk5JTkcgKCJVbmtub3duIGNoYW5uZWxzIGluIGNoYW5uZWwgbGF5b3V0IC0gYXNzdW1pbmcgTk9ORSBsYXlvdXQiKTsKLSsgICAgbm9uZV9sYXlvdXQgPSBUUlVFOwotKyAgfQotKwotKyAgaWYgKCFub25lX2xheW91dCAmJiAhZ3N0X2F1ZGlvX2NoZWNrX2NoYW5uZWxfcG9zaXRpb25zIChwb3MsIG5jaGFubmVscykpIHsKLSsgICAgR1NUX0VSUk9SICgiSW52YWxpZCBjaGFubmVsIGxheW91dCAlIiBHX0dVSU5UNjRfRk9STUFUCi0rICAgICAgICAiIC0gYXNzdW1pbmcgTk9ORSBsYXlvdXQiLCBjaGFubmVsX2xheW91dCk7Ci0rICAgIG5vbmVfbGF5b3V0ID0gVFJVRTsKLSsgIH0KLSsKLSsgIGlmIChub25lX2xheW91dCkgewotKyAgICBpZiAobmNoYW5uZWxzID09IDEpIHsKLSsgICAgICBwb3NbMF0gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9NT05POwotKyAgICB9IGVsc2UgaWYgKG5jaGFubmVscyA9PSAyKSB7Ci0rICAgICAgcG9zWzBdID0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVDsKLSsgICAgICBwb3NbMV0gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDsKLSsgICAgfSBlbHNlIGlmIChjaGFubmVsX2xheW91dCA9PSAwKSB7Ci0rICAgICAgZ19mcmVlIChwb3MpOwotKyAgICAgIHBvcyA9IE5VTEw7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IG5jaGFubmVsczsgaSsrKQotKyAgICAgICAgcG9zW2ldID0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORTsKLSsgICAgfQotKyAgfQotKwotKyAgaWYgKG5jaGFubmVscyA9PSAxICYmIHBvc1swXSA9PSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVIpIHsKLSsgICAgR1NUX0RFQlVHICgibW9ubyBjb21tb24gY2FzZTsgd29uJ3Qgc2V0IGNoYW5uZWwgcG9zaXRpb25zIik7Ci0rICAgIGdfZnJlZSAocG9zKTsKLSsgICAgcG9zID0gTlVMTDsKLSsgIH0gZWxzZSBpZiAobmNoYW5uZWxzID09IDIgJiYgcG9zWzBdID09IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQKLSsgICAgICAmJiBwb3NbMV0gPT0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFQpIHsKLSsgICAgR1NUX0RFQlVHICgic3RlcmVvIGNvbW1vbiBjYXNlOyB3b24ndCBzZXQgY2hhbm5lbCBwb3NpdGlvbnMiKTsKLSsgICAgZ19mcmVlIChwb3MpOwotKyAgICBwb3MgPSBOVUxMOwotKyAgfQotKwotKyAgcmV0dXJuIHBvczsKLSt9Ci0rCi0rLyogdGhpcyBtYWNybyBtYWtlcyBhIGNhcHMgd2lkdGggZml4ZWQgb3IgdW5maXhlZCB3aWR0aC9oZWlnaHQKLSsgKiBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJ3ZlIGdvdCBhIGNvbnRleHQuCi0rICoKLSsgKiBTZWUgYmVsb3cgZm9yIHdoeSB3ZSB1c2UgdGhpcy4KLSsgKgotKyAqIFdlIHNob3VsZCBhY3R1YWxseSBkbyB0aGlzIHN0dWZmIGF0IHRoZSBlbmQsIGxpa2UgaW4gcmlmZi1tZWRpYS5jLAotKyAqIGJ1dCBJJ20gdG9vIGxhenkgdG9kYXkuIE1heWJlIGxhdGVyLgotKyAqLwotK3N0YXRpYyBHc3RDYXBzICoKLStnc3RfZmZfdmlkX2NhcHNfbmV3IChBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQsIGVudW0gQ29kZWNJRCBjb2RlY19pZCwKLSsgICAgY29uc3QgY2hhciAqbWltZXR5cGUsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwgLi4uKQotK3sKLSsgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gTlVMTDsKLSsgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwotKyAgdmFfbGlzdCB2YXJfYXJnczsKLSsgIGdpbnQgaTsKLSsKLSsgIEdTVF9MT0cgKCJjb250ZXh0OiVwLCBjb2RlY19pZDolZCwgbWltZXR5cGU6JXMiLCBjb250ZXh0LCBjb2RlY19pZCwgbWltZXR5cGUpOwotKwotKyAgLyogZml4ZWQsIG5vbiBwcm9iaW5nIGNvbnRleHQgKi8KLSsgIGlmIChjb250ZXh0ICE9IE5VTEwgJiYgY29udGV4dC0+d2lkdGggIT0gLTEpIHsKLSsgICAgZ2ludCBudW0sIGRlbm9tOwotKwotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT53aWR0aCwKLSsgICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5oZWlnaHQsIE5VTEwpOwotKwotKyAgICBudW0gPSBjb250ZXh0LT50aW1lX2Jhc2UuZGVuIC8gY29udGV4dC0+dGlja3NfcGVyX2ZyYW1lOwotKyAgICBkZW5vbSA9IGNvbnRleHQtPnRpbWVfYmFzZS5udW07Ci0rCi0rICAgIGlmICghZGVub20pIHsKLSsgICAgICBHU1RfTE9HICgiaW52YWxpZCBmcmFtZXJhdGU6ICVkLzAsIC0+ICVkLzEiLCBudW0sIG51bSk7Ci0rICAgICAgZGVub20gPSAxOwotKyAgICB9Ci0rICAgIGlmIChnc3RfdXRpbF9mcmFjdGlvbl9jb21wYXJlIChudW0sIGRlbm9tLCAxMDAwLCAxKSA+IDApIHsKLSsgICAgICBHU1RfTE9HICgiZXhjZXNzaXZlIGZyYW1lcmF0ZTogJWQvJWQsIC0+IDAvMSIsIG51bSwgZGVub20pOwotKyAgICAgIG51bSA9IDA7Ci0rICAgICAgZGVub20gPSAxOwotKyAgICB9Ci0rICAgIEdTVF9MT0cgKCJzZXR0aW5nIGZyYW1lcmF0ZTogJWQvJWQiLCBudW0sIGRlbm9tKTsKLSsgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTiwgbnVtLCBkZW5vbSwgTlVMTCk7Ci0rICB9IGVsc2UgewotKyAgICAvKiBzbyB3ZSBhcmUgYWZ0ZXIgcmVzdHJpY3RlZCBjYXBzIGluIHRoaXMgY2FzZSAqLwotKyAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9IMjYxOgotKyAgICAgIHsKLSsgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlIChtaW1ldHlwZSwKLSsgICAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCAzNTIsCi0rICAgICAgICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIDI4OCwKLSsgICAgICAgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT05fUkFOR0UsIDAsIDEsIEdfTUFYSU5ULCAxLCBOVUxMKTsKLSsgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDE3NiwKLSsgICAgICAgICAgICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIDE0NCwKLSsgICAgICAgICAgICAgICAgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OX1JBTkdFLCAwLCAxLCBHX01BWElOVCwgMSwgTlVMTCkpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGNhc2UgQ09ERUNfSURfSDI2MzoKLSsgICAgICB7Ci0rICAgICAgICAvKiAxMjh4OTYsIDE3NngxNDQsIDM1MngyODgsIDcwNHg1NzYsIGFuZCAxNDA4eDExNTIuIHNsaWdodGx5IHJlb3JkZXJlZAotKyAgICAgICAgICogYmVjYXVzZSB3ZSB3YW50IGF1dG9tYXRpYyBuZWdvdGlhdGlvbiB0byBnbyBhcyBjbG9zZSB0byAzMjB4MjQwIGFzCi0rICAgICAgICAgKiBwb3NzaWJsZS4gKi8KLSsgICAgICAgIGNvbnN0IHN0YXRpYyBnaW50IHdpZHRoc1tdID0geyAzNTIsIDcwNCwgMTc2LCAxNDA4LCAxMjggfTsKLSsgICAgICAgIGNvbnN0IHN0YXRpYyBnaW50IGhlaWdodHNbXSA9IHsgMjg4LCA1NzYsIDE0NCwgMTE1MiwgOTYgfTsKLSsgICAgICAgIEdzdENhcHMgKnRlbXA7Ci0rICAgICAgICBnaW50IG5fc2l6ZXMgPSBHX05fRUxFTUVOVFMgKHdpZHRocyk7Ci0rCi0rICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fc2l6ZXM7IGkrKykgewotKyAgICAgICAgICB0ZW1wID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCB3aWR0aHNbaV0sCi0rICAgICAgICAgICAgICAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgaGVpZ2h0c1tpXSwKLSsgICAgICAgICAgICAgICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTl9SQU5HRSwgMCwgMSwgR19NQVhJTlQsIDEsIE5VTEwpOwotKwotKyAgICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIHRlbXApOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGNhc2UgQ09ERUNfSURfRFZWSURFTzoKLSsgICAgICB7Ci0rICAgICAgICBzdGF0aWMgc3RydWN0Ci0rICAgICAgICB7Ci0rICAgICAgICAgIGd1aW50MzIgY3NwOwotKyAgICAgICAgICBnaW50IHdpZHRoLCBoZWlnaHQ7Ci0rICAgICAgICAgIGdpbnQgcGFyX24sIHBhcl9kOwotKyAgICAgICAgICBnaW50IGZyYW1lcmF0ZV9uLCBmcmFtZXJhdGVfZDsKLSsgICAgICAgIH0gcHJvZmlsZXNbXSA9IHsKLSsgICAgICAgICAgewotKyAgICAgICAgICBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMScsICdCJyksIDcyMCwgNDgwLCAxMCwgMTEsIDMwMDAwLCAxMDAxfSwgewotKyAgICAgICAgICBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMScsICdCJyksIDcyMCwgNDgwLCA0MCwgMzMsIDMwMDAwLCAxMDAxfSwgewotKyAgICAgICAgICBHU1RfTUFLRV9GT1VSQ0MgKCdJJywgJzQnLCAnMicsICcwJyksIDcyMCwgNTc2LCA1OSwgNTQsIDI1LCAxfSwgewotKyAgICAgICAgICBHU1RfTUFLRV9GT1VSQ0MgKCdJJywgJzQnLCAnMicsICcwJyksIDcyMCwgNTc2LCAxMTgsIDgxLCAyNSwgMX0sIHsKLSsgICAgICAgICAgR1NUX01BS0VfRk9VUkNDICgnWScsICc0JywgJzEnLCAnQicpLCA3MjAsIDU3NiwgNTksIDU0LCAyNSwgMX0sIHsKLSsgICAgICAgICAgR1NUX01BS0VfRk9VUkNDICgnWScsICc0JywgJzEnLCAnQicpLCA3MjAsIDU3NiwgMTE4LCA4MSwgMjUsIDF9Ci0rICAgICAgICB9OwotKyAgICAgICAgR3N0Q2FwcyAqdGVtcDsKLSsgICAgICAgIGdpbnQgbl9zaXplcyA9IEdfTl9FTEVNRU5UUyAocHJvZmlsZXMpOwotKwotKyAgICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3NpemVzOyBpKyspIHsKLSsgICAgICAgICAgdGVtcCA9IGdzdF9jYXBzX25ld19zaW1wbGUgKG1pbWV0eXBlLAotKyAgICAgICAgICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgcHJvZmlsZXNbaV0ud2lkdGgsCi0rICAgICAgICAgICAgICAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgcHJvZmlsZXNbaV0uaGVpZ2h0LAotKyAgICAgICAgICAgICAgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OLCBwcm9maWxlc1tpXS5mcmFtZXJhdGVfbiwKLSsgICAgICAgICAgICAgIHByb2ZpbGVzW2ldLmZyYW1lcmF0ZV9kLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgR1NUX1RZUEVfRlJBQ1RJT04sCi0rICAgICAgICAgICAgICBwcm9maWxlc1tpXS5wYXJfbiwgcHJvZmlsZXNbaV0ucGFyX2QsIE5VTEwpOwotKwotKyAgICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIHRlbXApOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGNhc2UgQ09ERUNfSURfRE5YSEQ6Ci0rICAgICAgewotKyAgICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKG1pbWV0eXBlLAotKyAgICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDE5MjAsCi0rICAgICAgICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIDEwODAsCi0rICAgICAgICAgICAgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OX1JBTkdFLCAwLCAxLCBHX01BWElOVCwgMSwgTlVMTCk7Ci0rICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIGdzdF9jYXBzX25ld19zaW1wbGUgKG1pbWV0eXBlLAotKyAgICAgICAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCAxMjgwLAotKyAgICAgICAgICAgICAgICAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgNzIwLAotKyAgICAgICAgICAgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT05fUkFOR0UsIDAsIDEsIEdfTUFYSU5ULCAxLCBOVUxMKSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICB9Ci0rICB9Ci0rCi0rICAvKiBubyBmaXhlZCBjYXBzIG9yIHNwZWNpYWwgcmVzdHJpY3Rpb25zIGFwcGxpZWQ7Ci0rICAgKiBkZWZhdWx0IHVuZml4ZWQgc2V0dGluZyAqLwotKyAgaWYgKCFjYXBzKSB7Ci0rICAgIEdTVF9ERUJVRyAoIkNyZWF0aW5nIGRlZmF1bHQgY2FwcyIpOwotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAid2lkdGgiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDE2LCA0MDk2LAotKyAgICAgICAgImhlaWdodCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMTYsIDQwOTYsCi0rICAgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT05fUkFOR0UsIDAsIDEsIEdfTUFYSU5ULCAxLCBOVUxMKTsKLSsgIH0KLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAoY2Fwcyk7IGkrKykgewotKyAgICB2YV9zdGFydCAodmFyX2FyZ3MsIGZpZWxkbmFtZSk7Ci0rICAgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIGkpOwotKyAgICBnc3Rfc3RydWN0dXJlX3NldF92YWxpc3QgKHN0cnVjdHVyZSwgZmllbGRuYW1lLCB2YXJfYXJncyk7Ci0rICAgIHZhX2VuZCAodmFyX2FyZ3MpOwotKyAgfQotKwotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotKy8qIHNhbWUgZm9yIGF1ZGlvIC0gbm93IHdpdGggY2hhbm5lbHMvc2FtcGxlIHJhdGUKLSsgKi8KLStzdGF0aWMgR3N0Q2FwcyAqCi0rZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LCBlbnVtIENvZGVjSUQgY29kZWNfaWQsCi0rICAgIGNvbnN0IGNoYXIgKm1pbWV0eXBlLCBjb25zdCBjaGFyICpmaWVsZG5hbWUsIC4uLikKLSt7Ci0rICBHc3RDYXBzICpjYXBzID0gTlVMTDsKLSsgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gTlVMTDsKLSsgIGdpbnQgaTsKLSsgIHZhX2xpc3QgdmFyX2FyZ3M7Ci0rCi0rICAvKiBmaXhlZCwgbm9uLXByb2JpbmcgY29udGV4dCAqLwotKyAgaWYgKGNvbnRleHQgIT0gTlVMTCAmJiBjb250ZXh0LT5jaGFubmVscyAhPSAtMSkgewotKyAgICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiAqcG9zOwotKyAgICBndWludDY0IGNoYW5uZWxfbGF5b3V0ID0gY29udGV4dC0+Y2hhbm5lbF9sYXlvdXQ7Ci0rCi0rICAgIGlmIChjaGFubmVsX2xheW91dCA9PSAwKSB7Ci0rICAgICAgY29uc3QgZ3VpbnQ2NCBkZWZhdWx0X2NoYW5uZWxfc2V0W10gPSB7Ci0rICAgICAgICAwLCAwLCBBVl9DSF9MQVlPVVRfU1VSUk9VTkQsIEFWX0NIX0xBWU9VVF9RVUFELCBBVl9DSF9MQVlPVVRfNVBPSU5UMCwKLSsgICAgICAgIEFWX0NIX0xBWU9VVF81UE9JTlQxLCAwLCBBVl9DSF9MQVlPVVRfN1BPSU5UMQotKyAgICAgIH07Ci0rCi0rICAgICAgc3dpdGNoIChjb2RlY19pZCkgewotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9FQUMzOgotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BQzM6Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0RUUzoKLSsgICAgICAgICAgaWYgKGNvbnRleHQtPmNoYW5uZWxzID4gMAotKyAgICAgICAgICAgICAgJiYgY29udGV4dC0+Y2hhbm5lbHMgPCBHX05fRUxFTUVOVFMgKGRlZmF1bHRfY2hhbm5lbF9zZXQpKQotKyAgICAgICAgICAgIGNoYW5uZWxfbGF5b3V0ID0gZGVmYXVsdF9jaGFubmVsX3NldFtjb250ZXh0LT5jaGFubmVscyAtIDFdOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKwotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAobWltZXR5cGUsCi0rICAgICAgICAicmF0ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPnNhbXBsZV9yYXRlLAotKyAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY29udGV4dC0+Y2hhbm5lbHMsIE5VTEwpOwotKwotKyAgICBwb3MgPSBnc3RfZmZfY2hhbm5lbF9sYXlvdXRfdG9fZ3N0IChjaGFubmVsX2xheW91dCwgY29udGV4dC0+Y2hhbm5lbHMpOwotKyAgICBpZiAocG9zICE9IE5VTEwpIHsKLSsgICAgICBnc3RfYXVkaW9fc2V0X2NoYW5uZWxfcG9zaXRpb25zIChnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKSwgcG9zKTsKLSsgICAgICBnX2ZyZWUgKHBvcyk7Ci0rICAgIH0KLSsgIH0gZWxzZSB7Ci0rICAgIGdpbnQgbWF4Y2hhbm5lbHMgPSAyOwotKyAgICBjb25zdCBnaW50ICpyYXRlcyA9IE5VTEw7Ci0rICAgIGdpbnQgbl9yYXRlcyA9IDA7Ci0rCi0rICAgIC8qIHNvIHdlIG11c3QgYmUgYWZ0ZXIgcmVzdHJpY3RlZCBjYXBzIGluIHRoaXMgY2FzZSAqLwotKyAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9BQUM6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9BQUNfTEFUTToKLSsgICAgICBjYXNlIENPREVDX0lEX0RUUzoKLSsgICAgICAgIG1heGNoYW5uZWxzID0gNjsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIGNhc2UgQ09ERUNfSURfTVAyOgotKyAgICAgIHsKLSsgICAgICAgIGNvbnN0IHN0YXRpYyBnaW50IGxfcmF0ZXNbXSA9Ci0rICAgICAgICAgICAgeyA0ODAwMCwgNDQxMDAsIDMyMDAwLCAyNDAwMCwgMjIwNTAsIDE2MDAwIH07Ci0rICAgICAgICBuX3JhdGVzID0gR19OX0VMRU1FTlRTIChsX3JhdGVzKTsKLSsgICAgICAgIHJhdGVzID0gbF9yYXRlczsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBjYXNlIENPREVDX0lEX0VBQzM6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9BQzM6Ci0rICAgICAgewotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgbF9yYXRlc1tdID0geyA0ODAwMCwgNDQxMDAsIDMyMDAwIH07Ci0rICAgICAgICBtYXhjaGFubmVscyA9IDY7Ci0rICAgICAgICBuX3JhdGVzID0gR19OX0VMRU1FTlRTIChsX3JhdGVzKTsKLSsgICAgICAgIHJhdGVzID0gbF9yYXRlczsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0c3MjI6Ci0rICAgICAgewotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgbF9yYXRlc1tdID0geyAxNjAwMCB9OwotKyAgICAgICAgbl9yYXRlcyA9IEdfTl9FTEVNRU5UUyAobF9yYXRlcyk7Ci0rICAgICAgICByYXRlcyA9IGxfcmF0ZXM7Ci0rICAgICAgICBtYXhjaGFubmVscyA9IDE7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9HNzI2OgotKyAgICAgIHsKLSsgICAgICAgIGNvbnN0IHN0YXRpYyBnaW50IGxfcmF0ZXNbXSA9IHsgODAwMCB9OwotKyAgICAgICAgbl9yYXRlcyA9IEdfTl9FTEVNRU5UUyAobF9yYXRlcyk7Ci0rICAgICAgICByYXRlcyA9IGxfcmF0ZXM7Ci0rICAgICAgICBtYXhjaGFubmVscyA9IDE7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9TV0Y6Ci0rICAgICAgewotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgbF9yYXRlc1tdID0geyAxMTAyNSwgMjIwNTAsIDQ0MTAwIH07Ci0rICAgICAgICBuX3JhdGVzID0gR19OX0VMRU1FTlRTIChsX3JhdGVzKTsKLSsgICAgICAgIHJhdGVzID0gbF9yYXRlczsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBjYXNlIENPREVDX0lEX1JPUV9EUENNOgotKyAgICAgIHsKLSsgICAgICAgIGNvbnN0IHN0YXRpYyBnaW50IGxfcmF0ZXNbXSA9IHsgMjIwNTAgfTsKLSsgICAgICAgIG5fcmF0ZXMgPSBHX05fRUxFTUVOVFMgKGxfcmF0ZXMpOwotKyAgICAgICAgcmF0ZXMgPSBsX3JhdGVzOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGNhc2UgQ09ERUNfSURfQU1SX05COgotKyAgICAgIHsKLSsgICAgICAgIGNvbnN0IHN0YXRpYyBnaW50IGxfcmF0ZXNbXSA9IHsgODAwMCB9OwotKyAgICAgICAgbWF4Y2hhbm5lbHMgPSAxOwotKyAgICAgICAgbl9yYXRlcyA9IEdfTl9FTEVNRU5UUyAobF9yYXRlcyk7Ci0rICAgICAgICByYXRlcyA9IGxfcmF0ZXM7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9BTVJfV0I6Ci0rICAgICAgewotKyAgICAgICAgY29uc3Qgc3RhdGljIGdpbnQgbF9yYXRlc1tdID0geyAxNjAwMCB9OwotKyAgICAgICAgbWF4Y2hhbm5lbHMgPSAxOwotKyAgICAgICAgbl9yYXRlcyA9IEdfTl9FTEVNRU5UUyAobF9yYXRlcyk7Ci0rICAgICAgICByYXRlcyA9IGxfcmF0ZXM7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIC8qIFRPRE86IGhhbmRsZSBjb250ZXh0LT5jaGFubmVsX2xheW91dHMgaGVyZSB0byBzZXQKLSsgICAgICogdGhlIGxpc3Qgb2YgY2hhbm5lbCBsYXlvdXRzIHN1cHBvcnRlZCBieSB0aGUgZW5jb2Rlci4KLSsgICAgICogVW5mb3J0dW5hdGVseSBubyBlbmNvZGVyIHVzZXMgdGhpcyB5ZXQuLi4uCi0rICAgICAqLwotKyAgICAvKiByZWdhcmRsZXNzIG9mIGVuY29kZS9kZWNvZGUsIG9wZW4gdXAgY2hhbm5lbHMgaWYgYXBwbGljYWJsZSAqLwotKyAgICAvKiBVbnRpbCBkZWNvZGVycy9lbmNvZGVycyBleHBvc2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzCi0rICAgICAqIHRoZXkgc3VwcG9ydCwgd2Ugd2hpdGVsaXN0IHRoZW0gaGVyZS4gKi8KLSsgICAgc3dpdGNoIChjb2RlY19pZCkgewotKyAgICAgIGNhc2UgQ09ERUNfSURfV01BUFJPOgotKyAgICAgIGNhc2UgQ09ERUNfSURfVFJVRUhEOgotKyAgICAgICAgbWF4Y2hhbm5lbHMgPSA4OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIGlmIChtYXhjaGFubmVscyA9PSAxKQotKyAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlIChtaW1ldHlwZSwKLSsgICAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgbWF4Y2hhbm5lbHMsIE5VTEwpOwotKyAgICBlbHNlCi0rICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKG1pbWV0eXBlLAotKyAgICAgICAgICAiY2hhbm5lbHMiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDEsIG1heGNoYW5uZWxzLCBOVUxMKTsKLSsgICAgaWYgKG5fcmF0ZXMpIHsKLSsgICAgICBHVmFsdWUgbGlzdCA9IHsgMCwgfTsKLSsgICAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKLSsKLSsgICAgICBnX3ZhbHVlX2luaXQgKCZsaXN0LCBHU1RfVFlQRV9MSVNUKTsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9yYXRlczsgaSsrKSB7Ci0rICAgICAgICBHVmFsdWUgdiA9IHsgMCwgfTsKLSsKLSsgICAgICAgIGdfdmFsdWVfaW5pdCAoJnYsIEdfVFlQRV9JTlQpOwotKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICgmdiwgcmF0ZXNbaV0pOwotKyAgICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnYpOwotKyAgICAgICAgZ192YWx1ZV91bnNldCAoJnYpOwotKyAgICAgIH0KLSsgICAgICBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSsgICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3RydWN0dXJlLCAicmF0ZSIsICZsaXN0KTsKLSsgICAgICBnX3ZhbHVlX3Vuc2V0ICgmbGlzdCk7Ci0rICAgIH0gZWxzZQotKyAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJyYXRlIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCA0MDAwLCA5NjAwMCwgTlVMTCk7Ci0rICB9Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpOyBpKyspIHsKLSsgICAgdmFfc3RhcnQgKHZhcl9hcmdzLCBmaWVsZG5hbWUpOwotKyAgICBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCBpKTsKLSsgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsaXN0IChzdHJ1Y3R1cmUsIGZpZWxkbmFtZSwgdmFyX2FyZ3MpOwotKyAgICB2YV9lbmQgKHZhcl9hcmdzKTsKLSsgIH0KLSsKLSsgIHJldHVybiBjYXBzOwotK30KLSsKLSsvKiBDb252ZXJ0IGEgRkZNUEVHIGNvZGVjIElEIGFuZCBvcHRpb25hbCBBVkNvZGVjQ29udGV4dAotKyAqIHRvIGEgR3N0Q2Fwcy4gSWYgdGhlIGNvbnRleHQgaXMgb21taXR0ZWQsIG5vIGZpeGVkIHZhbHVlcwotKyAqIGZvciB2aWRlby9hdWRpbyBzaXplIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIEdzdENhcHMKLSsgKgotKyAqIENvZGVjSUQgaXMgcHJpbWFyaWx5IG1lYW50IGZvciBjb21wcmVzc2VkIGRhdGEgR3N0Q2FwcyEKLSsgKgotKyAqIGVuY29kZSBpcyBhIHNwZWNpYWwgcGFyYW1ldGVyLiBnc3RmZm1wZWdkZWMgd2lsbCBzYXkKLSsgKiBGQUxTRSwgZ3N0ZmZtcGVnZW5jIHdpbGwgc2F5IFRSVUUuIFRoZSBvdXRwdXQgY2FwcwotKyAqIGRlcGVuZHMgb24gdGhpcywgaW4gc3VjaCBhIHdheSB0aGF0IGl0IHdpbGwgYmUgdmVyeQotKyAqIHNwZWNpZmljLCBkZWZpbmVkLCBmaXhlZCBhbmQgY29ycmVjdCBjYXBzIGZvciBlbmNvZGVycywKLSsgKiB5ZXQgdmVyeSB3aWRlLCAiZm9yZ2l2aW5nIiBjYXBzIGZvciBkZWNvZGVycy4gRXhhbXBsZQotKyAqIGZvciBtcDM6IGRlY29kZTogYXVkaW8vbXBlZyxtcGVndmVyc2lvbj0xLGxheWVyPVsxLTNdCi0rICogYnV0IGVuY29kZTogYXVkaW8vbXBlZyxtcGVndmVyc2lvbj0xLGxheWVyPTMsYml0cmF0ZT14LAotKyAqIHJhdGU9eCxjaGFubmVscz14LgotKyAqLwotKwotK0dzdENhcHMgKgotK2dzdF9mZm1wZWdfY29kZWNpZF90b19jYXBzIChlbnVtIENvZGVjSUQgY29kZWNfaWQsCi0rICAgIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwgZ2Jvb2xlYW4gZW5jb2RlKQotK3sKLSsgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwotKyAgZ2Jvb2xlYW4gYnVpbGRjYXBzID0gRkFMU0U7Ci0rCi0rICBHU1RfTE9HICgiY29kZWNfaWQ6JWQsIGNvbnRleHQ6JXAsIGVuY29kZTolZCIsIGNvZGVjX2lkLCBjb250ZXh0LCBlbmNvZGUpOwotKwotKyAgc3dpdGNoIChjb2RlY19pZCkgewotKyAgICBjYXNlIENPREVDX0lEX01QRUcxVklERU86Ci0rICAgICAgLyogRklYTUU6IGJpdHJhdGUgKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby9tcGVnIiwKLSsgICAgICAgICAgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwKLSsgICAgICAgICAgInN5c3RlbXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBGQUxTRSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTVBFRzJWSURFTzoKLSsgICAgICBpZiAoZW5jb2RlKSB7Ci0rICAgICAgICAvKiBGSVhNRTogYml0cmF0ZSAqLwotKyAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8vbXBlZyIsCi0rICAgICAgICAgICAgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMiwKLSsgICAgICAgICAgICAic3lzdGVtc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIEZBTFNFLCBOVUxMKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgLyogZGVjb2RlIGJvdGggTVBFRy0xIGFuZCBNUEVHLTI7IHdpZHRoL2hlaWdodC9mcHMgYXJlIGFsbCBpbgotKyAgICAgICAgICogdGhlIE1QRUcgdmlkZW8gc3RyZWFtIGhlYWRlcnMsIHNvIG1heSBiZSBvbWl0dGVkIGZyb20gY2Fwcy4gKi8KLSsgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8vbXBlZyIsCi0rICAgICAgICAgICAgIm1wZWd2ZXJzaW9uIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCAxLCAyLAotKyAgICAgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgRkFMU0UsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NUEVHMlZJREVPX1hWTUM6Ci0rICAgICAgLyogdGhpcyBpcyBhIHNwZWNpYWwgSUQgLSBkb24ndCBuZWVkIGl0IGluIEdTdHJlYW1lciwgSSB0aGluayAqLwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0gyNjM6Ci0rICAgICAgaWYgKGVuY29kZSkgewotKyAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1oMjYzIiwKLSsgICAgICAgICAgICAidmFyaWFudCIsIEdfVFlQRV9TVFJJTkcsICJpdHUiLAotKyAgICAgICAgICAgICJoMjYzdmVyc2lvbiIsIEdfVFlQRV9TVFJJTkcsICJoMjYzIiwgTlVMTCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIC8qIGRvbid0IHBhc3MgY29kZWNfaWQsIHdlIGNhbiBkZWNvZGUgb3RoZXIgdmFyaWFudHMgd2l0aCB0aGUgSDI2MwotKyAgICAgICAgICogZGVjb2RlciB0aGF0IGRvbid0IGhhdmUgc3BlY2lmaWMgc2l6ZSByZXF1aXJlbWVudHMKLSsgICAgICAgICAqLwotKyAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIENPREVDX0lEX05PTkUsICJ2aWRlby94LWgyNjMiLAotKyAgICAgICAgICAgICJ2YXJpYW50IiwgR19UWVBFX1NUUklORywgIml0dSIsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9IMjYzUDoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWgyNjMiLAotKyAgICAgICAgICAidmFyaWFudCIsIEdfVFlQRV9TVFJJTkcsICJpdHUiLAotKyAgICAgICAgICAiaDI2M3ZlcnNpb24iLCBHX1RZUEVfU1RSSU5HLCAiaDI2M3AiLCBOVUxMKTsKLSsgICAgICBpZiAoZW5jb2RlICYmIGNvbnRleHQpIHsKLSsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImFubmV4LWYiLCBHX1RZUEVfQk9PTEVBTiwgY29udGV4dC0+ZmxhZ3MgJiBDT0RFQ19GTEFHXzRNViwKLSsgICAgICAgICAgICAiYW5uZXgtaiIsIEdfVFlQRV9CT09MRUFOLCBjb250ZXh0LT5mbGFncyAmIENPREVDX0ZMQUdfTE9PUF9GSUxURVIsCi0rICAgICAgICAgICAgImFubmV4LWkiLCBHX1RZUEVfQk9PTEVBTiwgY29udGV4dC0+ZmxhZ3MgJiBDT0RFQ19GTEFHX0FDX1BSRUQsCi0rICAgICAgICAgICAgImFubmV4LXQiLCBHX1RZUEVfQk9PTEVBTiwgY29udGV4dC0+ZmxhZ3MgJiBDT0RFQ19GTEFHX0FDX1BSRUQsCi0rICAgICAgICAgICAgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0gyNjNJOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtaW50ZWwtaDI2MyIsCi0rICAgICAgICAgICJ2YXJpYW50IiwgR19UWVBFX1NUUklORywgImludGVsIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfSDI2MToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWgyNjEiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9SVjEwOgotKyAgICBjYXNlIENPREVDX0lEX1JWMjA6Ci0rICAgIGNhc2UgQ09ERUNfSURfUlYzMDoKLSsgICAgY2FzZSBDT0RFQ19JRF9SVjQwOgotKyAgICB7Ci0rICAgICAgZ2ludCB2ZXJzaW9uOwotKwotKyAgICAgIHN3aXRjaCAoY29kZWNfaWQpIHsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfUlY0MDoKLSsgICAgICAgICAgdmVyc2lvbiA9IDQ7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9SVjMwOgotKyAgICAgICAgICB2ZXJzaW9uID0gMzsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX1JWMjA6Ci0rICAgICAgICAgIHZlcnNpb24gPSAyOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgIHZlcnNpb24gPSAxOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rCi0rICAgICAgLyogRklYTUU6IGNvbnRleHQtPnN1Yl9pZCBtdXN0IGJlIGZpbGxlZCBpbiBkdXJpbmcgZGVjb2RpbmcgKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXBuLXJlYWx2aWRlbyIsCi0rICAgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgRkFMU0UsCi0rICAgICAgICAgICJybXZlcnNpb24iLCBHX1RZUEVfSU5ULCB2ZXJzaW9uLCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImZvcm1hdCIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPnN1Yl9pZCwgTlVMTCk7Ci0rICAgICAgICBpZiAoY29udGV4dC0+ZXh0cmFkYXRhX3NpemUgPj0gOCkgewotKyAgICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICAgInN1YmZvcm1hdCIsIEdfVFlQRV9JTlQsIEdTVF9SRUFEX1VJTlQzMl9CRSAoY29udGV4dC0+ZXh0cmFkYXRhKSwKLSsgICAgICAgICAgICAgIE5VTEwpOwotKyAgICAgICAgfQotKyAgICAgIH0KLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01QMToKLSsgICAgICAvKiBGSVhNRTogYml0cmF0ZSAqLwotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL21wZWciLAotKyAgICAgICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLCAibGF5ZXIiLCBHX1RZUEVfSU5ULCAxLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NUDI6Ci0rICAgICAgLyogRklYTUU6IGJpdHJhdGUgKi8KLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby9tcGVnIiwKLSsgICAgICAgICAgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwgImxheWVyIiwgR19UWVBFX0lOVCwgMiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTVAzOgotKyAgICAgIGlmIChlbmNvZGUpIHsKLSsgICAgICAgIC8qIEZJWE1FOiBiaXRyYXRlICovCi0rICAgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby9tcGVnIiwKLSsgICAgICAgICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLCAibGF5ZXIiLCBHX1RZUEVfSU5ULCAzLCBOVUxMKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgLyogRGVjb2RlcyBNUEVHLTEgbGF5ZXIgMS8yLzMuIFNhbXBsZXJhdGUsIGNoYW5uZWxzIGV0IGFsIGFyZQotKyAgICAgICAgICogaW4gdGhlIE1QRUcgYXVkaW8gaGVhZGVyLCBzbyBtYXkgYmUgb21pdHRlZCBmcm9tIGNhcHMuICovCi0rICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL21wZWciLAotKyAgICAgICAgICAgICJtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsCi0rICAgICAgICAgICAgImxheWVyIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCAxLCAzLCBOVUxMKTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTVVTRVBBQ0s3OgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwKLSsgICAgICAgICAgImF1ZGlvL3gtZmZtcGVnLXBhcnNlZC1tdXNlcGFjayIsICJzdHJlYW12ZXJzaW9uIiwgR19UWVBFX0lOVCwgNywKLSsgICAgICAgICAgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTVVTRVBBQ0s4OgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwKLSsgICAgICAgICAgImF1ZGlvL3gtZmZtcGVnLXBhcnNlZC1tdXNlcGFjayIsICJzdHJlYW12ZXJzaW9uIiwgR19UWVBFX0lOVCwgOCwKLSsgICAgICAgICAgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQUMzOgotKyAgICAgIC8qIEZJWE1FOiBiaXRyYXRlICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1hYzMiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9FQUMzOgotKyAgICAgIC8qIEZJWE1FOiBiaXRyYXRlICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1lYWMzIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVFJVRUhEOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtdHJ1ZS1oZCIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FUUkFDMToKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXZuZC5zb255LmF0cmFjMSIsCi0rICAgICAgICAgIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FUUkFDMzoKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXZuZC5zb255LmF0cmFjMyIsCi0rICAgICAgICAgIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0RUUzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWR0cyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FQRToKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LWZmbXBlZy1wYXJzZWQtYXBlIiwKLSsgICAgICAgICAgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgY29udGV4dC0+Yml0c19wZXJfY29kZWRfc2FtcGxlLCBOVUxMKTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTUxQOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtbWxwIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfSU1DOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtaW1jIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgICAgLyogTUpQRUcgaXMgbm9ybWFsIEpQRUcsIE1vdGlvbi1KUEVHIGFuZCBRdWlja3RpbWUgTUpQRUctQS4gTUpQRUdCCi0rICAgICAgICogaXMgUXVpY2t0aW1lJ3MgTUpQRUctQi4gTEpQRUcgaXMgbG9zc2xlc3MgSlBFRy4gSSBkb24ndCBrbm93IHdoYXQKLSsgICAgICAgKiBzcDV4IGlzLCBidXQgaXQncyBhcHBhcmVudGx5IHNvbWV0aGluZyBKUEVHLi4uIFdlIGRvbid0IHNlcGFyYXRlCi0rICAgICAgICogYmV0d2VlbiB0aG9zZSBpbiBHU3RyZWFtZXIuIFNob3VsZCB3ZSAoYXQgbGVhc3QgYmV0d2VlbiBNSlBFRywKLSsgICAgICAgKiBNSlBFRy1CIGFuZCBzcDV4IGRlY29kaW5nLi4uKT8gKi8KLSsgICAgY2FzZSBDT0RFQ19JRF9NSlBFRzoKLSsgICAgY2FzZSBDT0RFQ19JRF9MSlBFRzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJpbWFnZS9qcGVnIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfU1A1WDoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby9zcDV4IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTUpQRUdCOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtbWpwZWctYiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01QRUc0OgotKyAgICAgIGlmIChlbmNvZGUgJiYgY29udGV4dCAhPSBOVUxMKSB7Ci0rICAgICAgICAvKiBJJ20gbm90IGV4YWN0bHkgc3VyZSB3aGF0IGZmbXBlZyBvdXRwdXRzLi4uIGZmbXBlZyBpdHNlbGYgdXNlcwotKyAgICAgICAgICogdGhlIEFWSSBmb3VyY2MgJ0RJVlgnLCBidXQgJ21wNHYnIGZvciBRdWlja3RpbWUuLi4gKi8KLSsgICAgICAgIHN3aXRjaCAoY29udGV4dC0+Y29kZWNfdGFnKSB7Ci0rICAgICAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnRCcsICdJJywgJ1YnLCAnWCcpOgotKyAgICAgICAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtZGl2eCIsCi0rICAgICAgICAgICAgICAgICJkaXZ4dmVyc2lvbiIsIEdfVFlQRV9JTlQsIDUsIE5VTEwpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ20nLCAncCcsICc0JywgJ3YnKToKLSsgICAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgICAvKiBGSVhNRTogYml0cmF0ZSAqLwotKyAgICAgICAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL21wZWciLAotKyAgICAgICAgICAgICAgICAic3lzdGVtc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIEZBTFNFLAotKyAgICAgICAgICAgICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCA0LCBOVUxMKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgLyogVGhlIHRyaWNrIGhlcmUgaXMgdG8gc2VwYXJhdGUgeHZpZCwgZGl2eCwgbXBlZzQsIDNpdnggZXQgYWwgKi8KLSsgICAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL21wZWciLAotKyAgICAgICAgICAgICJtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIDQsCi0rICAgICAgICAgICAgInN5c3RlbXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBGQUxTRSwgTlVMTCk7Ci0rICAgICAgICBpZiAoZW5jb2RlKSB7Ci0rICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsCi0rICAgICAgICAgICAgICAgICAgInZpZGVvL3gtZGl2eCIsICJkaXZ4dmVyc2lvbiIsIEdfVFlQRV9JTlQsIDUsIE5VTEwpKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsCi0rICAgICAgICAgICAgICAgICAgInZpZGVvL3gtZGl2eCIsICJkaXZ4dmVyc2lvbiIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgNCwgNSwKLSsgICAgICAgICAgICAgICAgICBOVUxMKSk7Ci0rICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAoY2FwcywgZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsCi0rICAgICAgICAgICAgICAgICAgInZpZGVvL3gteHZpZCIsIE5VTEwpKTsKLSsgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwKLSsgICAgICAgICAgICAgICAgICAidmlkZW8veC0zaXZ4IiwgTlVMTCkpOwotKyAgICAgICAgfQotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9SQVdWSURFTzoKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmbXBlZ19jb2RlY3R5cGVfdG9fY2FwcyAoQVZNRURJQV9UWVBFX1ZJREVPLCBjb250ZXh0LCBjb2RlY19pZCwKLSsgICAgICAgICAgZW5jb2RlKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NU01QRUc0VjE6Ci0rICAgIGNhc2UgQ09ERUNfSURfTVNNUEVHNFYyOgotKyAgICBjYXNlIENPREVDX0lEX01TTVBFRzRWMzoKLSsgICAgewotKyAgICAgIGdpbnQgdmVyc2lvbiA9IDQxICsgY29kZWNfaWQgLSBDT0RFQ19JRF9NU01QRUc0VjE7Ci0rCi0rICAgICAgLyogZW5jb2RlLUZJWE1FOiBiaXRyYXRlICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1tc21wZWciLAotKyAgICAgICAgICAibXNtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIHZlcnNpb24sIE5VTEwpOwotKyAgICAgIGlmICghZW5jb2RlICYmIGNvZGVjX2lkID09IENPREVDX0lEX01TTVBFRzRWMykgewotKyAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwKLSsgICAgICAgICAgICAgICAgInZpZGVvL3gtZGl2eCIsICJkaXZ4dmVyc2lvbiIsIEdfVFlQRV9JTlQsIDMsIE5VTEwpKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9XTVYxOgotKyAgICBjYXNlIENPREVDX0lEX1dNVjI6Ci0rICAgIHsKLSsgICAgICBnaW50IHZlcnNpb24gPSAoY29kZWNfaWQgPT0gQ09ERUNfSURfV01WMSkgPyAxIDogMjsKLSsKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXdtdiIsCi0rICAgICAgICAgICJ3bXZ2ZXJzaW9uIiwgR19UWVBFX0lOVCwgdmVyc2lvbiwgTlVMTCk7Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9GTFYxOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtZmxhc2gtdmlkZW8iLAotKyAgICAgICAgICAiZmx2dmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1NWUTE6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1zdnEiLAotKyAgICAgICAgICAic3ZxdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1NWUTM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1zdnEiLAotKyAgICAgICAgICAic3ZxdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDMsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0RWQVVESU86Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1kdiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0RWVklERU86Ci0rICAgIHsKLSsgICAgICBpZiAoZW5jb2RlICYmIGNvbnRleHQpIHsKLSsgICAgICAgIGd1aW50MzIgZm91cmNjOwotKwotKyAgICAgICAgc3dpdGNoIChjb250ZXh0LT5waXhfZm10KSB7Ci0rICAgICAgICAgIGNhc2UgUElYX0ZNVF9ZVVlWNDIyOgotKyAgICAgICAgICAgIGZvdXJjYyA9IEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnVScsICdZJywgJzInKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgY2FzZSBQSVhfRk1UX1lVVjQyMFA6Ci0rICAgICAgICAgICAgZm91cmNjID0gR1NUX01BS0VfRk9VUkNDICgnSScsICc0JywgJzInLCAnMCcpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIFBJWF9GTVRfWVVWQTQyMFA6Ci0rICAgICAgICAgICAgZm91cmNjID0gR1NUX01BS0VfRk9VUkNDICgnQScsICc0JywgJzInLCAnMCcpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIFBJWF9GTVRfWVVWNDExUDoKLSsgICAgICAgICAgICBmb3VyY2MgPSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMScsICdCJyk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgUElYX0ZNVF9ZVVY0MjJQOgotKyAgICAgICAgICAgIGZvdXJjYyA9IEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnNCcsICcyJywgJ0InKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgY2FzZSBQSVhfRk1UX1lVVjQxMFA6Ci0rICAgICAgICAgICAgZm91cmNjID0gR1NUX01BS0VfRk9VUkNDICgnWScsICdVJywgJ1YnLCAnOScpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIEdTVF9XQVJOSU5HCi0rICAgICAgICAgICAgICAgICgiQ291bGRudCcgZmluZCBmb3VyY2MgZm9yIHBpeGZtdCAlZCwgZGVmYXVsdGluZyB0byBJNDIwIiwKLSsgICAgICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCk7Ci0rICAgICAgICAgICAgZm91cmNjID0gR1NUX01BS0VfRk9VUkNDICgnSScsICc0JywgJzInLCAnMCcpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1kdiIsCi0rICAgICAgICAgICAgInN5c3RlbXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBGQUxTRSwKLSsgICAgICAgICAgICAiZm9ybWF0IiwgR1NUX1RZUEVfRk9VUkNDLCBmb3VyY2MsIE5VTEwpOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWR2IiwKLSsgICAgICAgICAgICAic3lzdGVtc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIEZBTFNFLCBOVUxMKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9XTUFWMToKLSsgICAgY2FzZSBDT0RFQ19JRF9XTUFWMjoKLSsgICAgewotKyAgICAgIGdpbnQgdmVyc2lvbiA9IChjb2RlY19pZCA9PSBDT0RFQ19JRF9XTUFWMSkgPyAxIDogMjsKLSsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC13bWEiLAotKyAgICAgICAgICAgICJ3bWF2ZXJzaW9uIiwgR19UWVBFX0lOVCwgdmVyc2lvbiwKLSsgICAgICAgICAgICAiYmxvY2tfYWxpZ24iLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5ibG9ja19hbGlnbiwKLSsgICAgICAgICAgICAiYml0cmF0ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdF9yYXRlLCBOVUxMKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC13bWEiLAotKyAgICAgICAgICAgICJ3bWF2ZXJzaW9uIiwgR19UWVBFX0lOVCwgdmVyc2lvbiwKLSsgICAgICAgICAgICAiYmxvY2tfYWxpZ24iLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDAsIEdfTUFYSU5ULAotKyAgICAgICAgICAgICJiaXRyYXRlIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCAwLCBHX01BWElOVCwgTlVMTCk7Ci0rICAgICAgfQotKyAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgQ09ERUNfSURfV01BUFJPOgotKyAgICB7Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC13bWEiLAotKyAgICAgICAgICAid21hdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDMsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfV01BVk9JQ0U6Ci0rICAgIHsKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXdtcyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTUFDRTM6Ci0rICAgIGNhc2UgQ09ERUNfSURfTUFDRTY6Ci0rICAgIHsKLSsgICAgICBnaW50IHZlcnNpb24gPSAoY29kZWNfaWQgPT0gQ09ERUNfSURfTUFDRTMpID8gMyA6IDY7Ci0rCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1tYWNlIiwKLSsgICAgICAgICAgIm1hY2V2ZXJzaW9uIiwgR19UWVBFX0lOVCwgdmVyc2lvbiwgTlVMTCk7Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9IVUZGWVVWOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtaHVmZnl1diIsIE5VTEwpOwotKyAgICAgIGlmIChjb250ZXh0KSB7Ci0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICJicHAiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9DWVVWOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtY29tcHJlc3NlZC15dXYiLAotKyAgICAgICAgICBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9IMjY0OgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtaDI2NCIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0lOREVPNToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWluZGVvIiwKLSsgICAgICAgICAgImluZGVvdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDUsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0lOREVPMzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWluZGVvIiwKLSsgICAgICAgICAgImluZGVvdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDMsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0lOREVPMjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWluZGVvIiwKLSsgICAgICAgICAgImluZGVvdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0ZMQVNIU1Y6Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1mbGFzaC1zY3JlZW4iLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9WUDM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC12cDMiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9WUDU6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC12cDUiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9WUDY6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC12cDYiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9WUDZGOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtdnA2LWZsYXNoIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVlA2QToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXZwNi1hbHBoYSIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1ZQODoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXZwOCIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1RIRU9SQToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXRoZW9yYSIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FBQzoKLSsgICAgewotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL21wZWciLCBOVUxMKTsKLSsKLSsgICAgICBpZiAoIWVuY29kZSkgewotKyAgICAgICAgR1ZhbHVlIGFyciA9IHsgMCwgfTsKLSsgICAgICAgIEdWYWx1ZSBpdGVtID0geyAwLCB9OwotKwotKyAgICAgICAgZ192YWx1ZV9pbml0ICgmYXJyLCBHU1RfVFlQRV9MSVNUKTsKLSsgICAgICAgIGdfdmFsdWVfaW5pdCAoJml0ZW0sIEdfVFlQRV9JTlQpOwotKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICgmaXRlbSwgMik7Ci0rICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZhcnIsICZpdGVtKTsKLSsgICAgICAgIGdfdmFsdWVfc2V0X2ludCAoJml0ZW0sIDQpOwotKyAgICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmYXJyLCAmaXRlbSk7Ci0rICAgICAgICBnX3ZhbHVlX3Vuc2V0ICgmaXRlbSk7Ci0rCi0rICAgICAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKGNhcHMsICJtcGVndmVyc2lvbiIsICZhcnIpOwotKyAgICAgICAgZ192YWx1ZV91bnNldCAoJmFycik7Ci0rCi0rICAgICAgICBnX3ZhbHVlX2luaXQgKCZhcnIsIEdTVF9UWVBFX0xJU1QpOwotKyAgICAgICAgZ192YWx1ZV9pbml0ICgmaXRlbSwgR19UWVBFX1NUUklORyk7Ci0rICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKCZpdGVtLCAicmF3Iik7Ci0rICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZhcnIsICZpdGVtKTsKLSsgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJml0ZW0sICJhZHRzIik7Ci0rICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZhcnIsICZpdGVtKTsKLSsgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJml0ZW0sICJhZGlmIik7Ci0rICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZhcnIsICZpdGVtKTsKLSsgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZpdGVtKTsKLSsKLSsgICAgICAgIGdzdF9jYXBzX3NldF92YWx1ZSAoY2FwcywgInN0cmVhbS1mb3JtYXQiLCAmYXJyKTsKLSsgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZhcnIpOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCA0LAotKyAgICAgICAgICAgICJzdHJlYW0tZm9ybWF0IiwgR19UWVBFX1NUUklORywgInJhdyIsCi0rICAgICAgICAgICAgImJhc2UtcHJvZmlsZSIsIEdfVFlQRV9TVFJJTkcsICJsYyIsIE5VTEwpOwotKwotKyAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+ZXh0cmFkYXRhX3NpemUgPiAwKQotKyAgICAgICAgICBnc3RfY29kZWNfdXRpbHNfYWFjX2NhcHNfc2V0X2xldmVsX2FuZF9wcm9maWxlIChjYXBzLAotKyAgICAgICAgICAgICAgY29udGV4dC0+ZXh0cmFkYXRhLCBjb250ZXh0LT5leHRyYWRhdGFfc2l6ZSk7Ci0rICAgICAgfQotKwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGNhc2UgQ09ERUNfSURfQUFDX0xBVE06ICAgIC8qIExBVE0vTE9BUyBBQUMgc3ludGF4ICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8vbXBlZyIsCi0rICAgICAgICAgICJtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIDQsICJzdHJlYW0tZm9ybWF0IiwgR19UWVBFX1NUUklORywgImxvYXMiLAotKyAgICAgICAgICBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9BU1YxOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtYXN1cyIsCi0rICAgICAgICAgICJhc3VzdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIENPREVDX0lEX0FTVjI6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1hc3VzIiwKLSsgICAgICAgICAgImFzdXN2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfRkZWMToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWZmdiIsCi0rICAgICAgICAgICJmZnZ2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfNFhNOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtNHhtIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfWEFOX1dDMzoKLSsgICAgY2FzZSBDT0RFQ19JRF9YQU5fV0M0OgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gteGFuIiwKLSsgICAgICAgICAgIndjdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDMgLSBDT0RFQ19JRF9YQU5fV0MzICsgY29kZWNfaWQsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0NMSlI6Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLAotKyAgICAgICAgICAidmlkZW8veC1jaXJydXMtbG9naWMtYWNjdXBhayIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0ZSQVBTOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtZnJhcHMiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NREVDOgotKyAgICBjYXNlIENPREVDX0lEX1JPUToKLSsgICAgY2FzZSBDT0RFQ19JRF9JTlRFUlBMQVlfVklERU86Ci0rICAgICAgYnVpbGRjYXBzID0gVFJVRTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9WQ1IxOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtYXRpLXZjciIsCi0rICAgICAgICAgICJ2Y3J2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUlBaQToKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWFwcGxlLXZpZGVvIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQ0lORVBBSzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWNpbmVwYWsiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgICAvKiBXU19WUUEgYmVsb2ducyBoZXJlIChvcmRlcikgKi8KLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NU1JMRToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXJsZSIsCi0rICAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAibWljcm9zb2Z0IiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgKGdpbnQpIGNvbnRleHQtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSwgTlVMTCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJkZXB0aCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMSwgNjQsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9RVFJMRToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXJsZSIsCi0rICAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAicXVpY2t0aW1lIiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgKGdpbnQpIGNvbnRleHQtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSwgTlVMTCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJkZXB0aCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMSwgNjQsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9NU1ZJREVPMToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LW1zdmlkZW9jb2RlYyIsCi0rICAgICAgICAgICJtc3ZpZGVvdmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1dNVjM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC13bXYiLAotKyAgICAgICAgICAid212dmVyc2lvbiIsIEdfVFlQRV9JTlQsIDMsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIENPREVDX0lEX1ZDMToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXdtdiIsCi0rICAgICAgICAgICJ3bXZ2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMywgImZvcm1hdCIsIEdTVF9UWVBFX0ZPVVJDQywKLSsgICAgICAgICAgR1NUX01BS0VfRk9VUkNDICgnVycsICdWJywgJ0MnLCAnMScpLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBDT0RFQ19JRF9RRE0yOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtcWRtMiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01TWkg6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1tc3poIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfWkxJQjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXpsaWIiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9UUlVFTU9USU9OMToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXRydWVtb3Rpb24iLAotKyAgICAgICAgICAidHJ1ZXZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBDT0RFQ19JRF9UUlVFTU9USU9OMjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXRydWVtb3Rpb24iLAotKyAgICAgICAgICAidHJ1ZXZlcnNpb24iLCBHX1RZUEVfSU5ULCAyLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9VTFRJOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtdWx0aW1vdGlvbiIsCi0rICAgICAgICAgIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1RTQ0M6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1jYW10YXNpYSIsIE5VTEwpOwotKyAgICAgIGlmIChjb250ZXh0KSB7Ci0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICJkZXB0aCIsIEdfVFlQRV9JTlQsIChnaW50KSBjb250ZXh0LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUsIE5VTEwpOwotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiZGVwdGgiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDgsIDMyLCBOVUxMKTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfS01WQzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWttdmMiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9OVVY6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1udXYiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9HSUY6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiaW1hZ2UvZ2lmIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUE5HOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3BuZyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1BQTToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJpbWFnZS9wcG0iLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9QQk06Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiaW1hZ2UvcGJtIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUEFNOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3gtcG9ydGFibGUtYW55bWFwIiwKLSsgICAgICAgICAgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUEdNOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcCIsCi0rICAgICAgICAgIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1BDWDoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJpbWFnZS94LXBjeCIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1NHSToKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJpbWFnZS94LXNnaSIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1RBUkdBOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImltYWdlL3gtdGdhIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVElGRjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJpbWFnZS90aWZmIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfU1VOUkFTVDoKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJpbWFnZS94LXN1bi1yYXN0ZXIiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9TTUM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1zbWMiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9RRFJBVzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXFkcnciLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9ETlhIRDoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWRueGhkIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTUlNSUM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1taW1pYyIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1ZNTkM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC12bW5jIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfVFJVRVNQRUVDSDoKLSsgICAgICBjYXBzID0KLSsgICAgICAgICAgZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXRydWVzcGVlY2giLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9RQ0VMUDoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby9xY2VscCIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FNVjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWFtdiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FBU0M6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1hYXNjIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfTE9DTzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LWxvY28iLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9aTUJWOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtem1idiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0xBR0FSSVRIOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtbGFnYXJpdGgiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9DU0NEOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtY2Ftc3R1ZGlvIiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgKGdpbnQpIGNvbnRleHQtPmJpdHNfcGVyX2NvZGVkX3NhbXBsZSwgTlVMTCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJkZXB0aCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgOCwgMzIsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9XU19WUUE6Ci0rICAgIGNhc2UgQ09ERUNfSURfSURDSU46Ci0rICAgIGNhc2UgQ09ERUNfSURfOEJQUzoKLSsgICAgY2FzZSBDT0RFQ19JRF9GTElDOgotKyAgICBjYXNlIENPREVDX0lEX1ZNRFZJREVPOgotKyAgICBjYXNlIENPREVDX0lEX1ZNREFVRElPOgotKyAgICBjYXNlIENPREVDX0lEX1NOT1c6Ci0rICAgIGNhc2UgQ09ERUNfSURfVklYTDoKLSsgICAgY2FzZSBDT0RFQ19JRF9RUEVHOgotKyAgICBjYXNlIENPREVDX0lEX1BHTVlVVjoKLSsgICAgY2FzZSBDT0RFQ19JRF9GRlZIVUZGOgotKyAgICBjYXNlIENPREVDX0lEX1dOVjE6Ci0rICAgIGNhc2UgQ09ERUNfSURfTVAzQURVOgotKyAgICBjYXNlIENPREVDX0lEX01QM09ONDoKLSsgICAgY2FzZSBDT0RFQ19JRF9XRVNUV09PRF9TTkQxOgotKyAgICBjYXNlIENPREVDX0lEX01NVklERU86Ci0rICAgIGNhc2UgQ09ERUNfSURfQVZTOgotKyAgICBjYXNlIENPREVDX0lEX0NBVlM6Ci0rICAgICAgYnVpbGRjYXBzID0gVFJVRTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgICAvKiB3ZWlyZCBxdWFzaS1jb2RlY3MgZm9yIHRoZSBkZW11eGVycyBvbmx5ICovCi0rICAgIGNhc2UgQ09ERUNfSURfUENNX1MxNkxFOgotKyAgICBjYXNlIENPREVDX0lEX1BDTV9TMTZCRToKLSsgICAgY2FzZSBDT0RFQ19JRF9QQ01fVTE2TEU6Ci0rICAgIGNhc2UgQ09ERUNfSURfUENNX1UxNkJFOgotKyAgICBjYXNlIENPREVDX0lEX1BDTV9TODoKLSsgICAgY2FzZSBDT0RFQ19JRF9QQ01fVTg6Ci0rICAgIHsKLSsgICAgICBnaW50IHdpZHRoID0gMCwgZGVwdGggPSAwLCBlbmRpYW5uZXNzID0gMDsKLSsgICAgICBnYm9vbGVhbiBzaWduZWRuZXNzID0gRkFMU0U7ICAgICAgLyogYmxhYmxhICovCi0rCi0rICAgICAgc3dpdGNoIChjb2RlY19pZCkgewotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fUzE2TEU6Ci0rICAgICAgICAgIHdpZHRoID0gMTY7Ci0rICAgICAgICAgIGRlcHRoID0gMTY7Ci0rICAgICAgICAgIGVuZGlhbm5lc3MgPSBHX0xJVFRMRV9FTkRJQU47Ci0rICAgICAgICAgIHNpZ25lZG5lc3MgPSBUUlVFOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1MxNkJFOgotKyAgICAgICAgICB3aWR0aCA9IDE2OwotKyAgICAgICAgICBkZXB0aCA9IDE2OwotKyAgICAgICAgICBlbmRpYW5uZXNzID0gR19CSUdfRU5ESUFOOwotKyAgICAgICAgICBzaWduZWRuZXNzID0gVFJVRTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9VMTZMRToKLSsgICAgICAgICAgd2lkdGggPSAxNjsKLSsgICAgICAgICAgZGVwdGggPSAxNjsKLSsgICAgICAgICAgZW5kaWFubmVzcyA9IEdfTElUVExFX0VORElBTjsKLSsgICAgICAgICAgc2lnbmVkbmVzcyA9IEZBTFNFOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1UxNkJFOgotKyAgICAgICAgICB3aWR0aCA9IDE2OwotKyAgICAgICAgICBkZXB0aCA9IDE2OwotKyAgICAgICAgICBlbmRpYW5uZXNzID0gR19CSUdfRU5ESUFOOwotKyAgICAgICAgICBzaWduZWRuZXNzID0gRkFMU0U7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fUzg6Ci0rICAgICAgICAgIHdpZHRoID0gODsKLSsgICAgICAgICAgZGVwdGggPSA4OwotKyAgICAgICAgICBlbmRpYW5uZXNzID0gR19CWVRFX09SREVSOwotKyAgICAgICAgICBzaWduZWRuZXNzID0gVFJVRTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9VODoKLSsgICAgICAgICAgd2lkdGggPSA4OwotKyAgICAgICAgICBkZXB0aCA9IDg7Ci0rICAgICAgICAgIGVuZGlhbm5lc3MgPSBHX0JZVEVfT1JERVI7Ci0rICAgICAgICAgIHNpZ25lZG5lc3MgPSBGQUxTRTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICBnX2Fzc2VydCAoMCk7ICAgICAgICAgLyogZG9uJ3Qgd29ycnksIHdlIG5ldmVyIGdldCBoZXJlICovCi0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXJhdy1pbnQiLAotKyAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCB3aWR0aCwKLSsgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgZGVwdGgsCi0rICAgICAgICAgICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgZW5kaWFubmVzcywKLSsgICAgICAgICAgInNpZ25lZCIsIEdfVFlQRV9CT09MRUFOLCBzaWduZWRuZXNzLCBOVUxMKTsKLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1BDTV9NVUxBVzoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LW11bGF3IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUENNX0FMQVc6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1hbGF3IiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRzcyMjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby9HNzIyIiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpCi0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICJibG9ja19hbGlnbiIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJsb2NrX2FsaWduLAotKyAgICAgICAgICAgICJiaXRyYXRlIiwgR19UWVBFX0lOVCwgY29udGV4dC0+Yml0X3JhdGUsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0c3MjY6Ci0rICAgIHsKLSsgICAgICAvKiB0aGUgRzcyNiBkZWNvZGVyIGNhbiBhbHNvIGhhbmRsZSBHNzIxICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1hZHBjbSIsCi0rICAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiZzcyNiIsIE5VTEwpOwotKyAgICAgIGlmIChjb250ZXh0KQotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAiYmxvY2tfYWxpZ24iLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5ibG9ja19hbGlnbiwKLSsgICAgICAgICAgICAiYml0cmF0ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdF9yYXRlLCBOVUxMKTsKLSsKLSsgICAgICBpZiAoIWVuY29kZSkgewotKyAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8veC1hZHBjbSIsCi0rICAgICAgICAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiZzcyMSIsCi0rICAgICAgICAgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsICJyYXRlIiwgR19UWVBFX0lOVCwgODAwMCwgTlVMTCkpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9RVDoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfV0FWOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9ESzM6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0RLNDoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfV1M6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX1NNSlBFRzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfQU1WOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9JU1M6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0VBX0VBQ1M6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0VBX1NFQUQ6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fTVM6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fNFhNOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX1hBOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0FEWDoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9FQToKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9DVDoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9TV0Y6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fWUFNQUhBOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX1NCUFJPXzI6Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fU0JQUk9fMzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9TQlBST180OgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX1IxOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX1IyOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX1IzOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX01BWElTX1hBOgotKyAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX1hBUzoKLSsgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9USFA6Ci0rICAgIHsKLSsgICAgICBjb25zdCBnY2hhciAqbGF5b3V0ID0gTlVMTDsKLSsKLSsgICAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9RVDoKLSsgICAgICAgICAgbGF5b3V0ID0gInF1aWNrdGltZSI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfV0FWOgotKyAgICAgICAgICBsYXlvdXQgPSAiZHZpIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9ESzM6Ci0rICAgICAgICAgIGxheW91dCA9ICJkazMiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0RLNDoKLSsgICAgICAgICAgbGF5b3V0ID0gImRrNCI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfV1M6Ci0rICAgICAgICAgIGxheW91dCA9ICJ3ZXN0d29vZCI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfU01KUEVHOgotKyAgICAgICAgICBsYXlvdXQgPSAic21qcGVnIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0lNQV9BTVY6Ci0rICAgICAgICAgIGxheW91dCA9ICJhbXYiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0lTUzoKLSsgICAgICAgICAgbGF5b3V0ID0gImlzcyI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9JTUFfRUFfRUFDUzoKLSsgICAgICAgICAgbGF5b3V0ID0gImVhLWVhY3MiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fSU1BX0VBX1NFQUQ6Ci0rICAgICAgICAgIGxheW91dCA9ICJlYS1zZWFkIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX01TOgotKyAgICAgICAgICBsYXlvdXQgPSAibWljcm9zb2Z0IjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNXzRYTToKLSsgICAgICAgICAgbGF5b3V0ID0gIjR4bSI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9YQToKLSsgICAgICAgICAgbGF5b3V0ID0gInhhIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0FEWDoKLSsgICAgICAgICAgbGF5b3V0ID0gImFkeCI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9FQToKLSsgICAgICAgICAgbGF5b3V0ID0gImVhIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0NUOgotKyAgICAgICAgICBsYXlvdXQgPSAiY3QiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fU1dGOgotKyAgICAgICAgICBsYXlvdXQgPSAic3dmIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX1lBTUFIQToKLSsgICAgICAgICAgbGF5b3V0ID0gInlhbWFoYSI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9TQlBST18yOgotKyAgICAgICAgICBsYXlvdXQgPSAic2Jwcm8yIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX1NCUFJPXzM6Ci0rICAgICAgICAgIGxheW91dCA9ICJzYnBybzMiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fU0JQUk9fNDoKLSsgICAgICAgICAgbGF5b3V0ID0gInNicHJvNCI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9FQV9SMToKLSsgICAgICAgICAgbGF5b3V0ID0gImVhLXIxIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX1IyOgotKyAgICAgICAgICBsYXlvdXQgPSAiZWEtcjMiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRUFfUjM6Ci0rICAgICAgICAgIGxheW91dCA9ICJlYS1yMyI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9FQV9NQVhJU19YQToKLSsgICAgICAgICAgbGF5b3V0ID0gImVhLW1heGlzLXhhIjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX0FEUENNX0VBX1hBUzoKLSsgICAgICAgICAgbGF5b3V0ID0gImVhLXhhcyI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9BRFBDTV9USFA6Ci0rICAgICAgICAgIGxheW91dCA9ICJ0aHAiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgIGdfYXNzZXJ0ICgwKTsgICAgICAgICAvKiBkb24ndCB3b3JyeSwgd2UgbmV2ZXIgZ2V0IGhlcmUgKi8KLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKwotKyAgICAgIC8qIEZJWE1FOiBzb21lb25lIHBsZWFzZSBjaGVjayB3aGV0aGVyIHdlIG5lZWQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzCi0rICAgICAgICogaW4gdGhpcyBjYXBzIGRlZmluaXRpb24uICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1hZHBjbSIsCi0rICAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCBsYXlvdXQsIE5VTEwpOwotKyAgICAgIGlmIChjb250ZXh0KQotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAiYmxvY2tfYWxpZ24iLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5ibG9ja19hbGlnbiwKLSsgICAgICAgICAgICAiYml0cmF0ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdF9yYXRlLCBOVUxMKTsKLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FNUl9OQjoKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby9BTVIiLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9BTVJfV0I6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8vQU1SLVdCIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfR1NNOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtZ3NtIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfR1NNX01TOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL21zLWdzbSIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX05FTExZTU9TRVI6Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1uZWxseW1vc2VyIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfU0lQUjoKLSsgICAgewotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtc2lwcm8iLCBOVUxMKTsKLSsgICAgICBpZiAoY29udGV4dCkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywKLSsgICAgICAgICAgICAibGVhZl9zaXplIiwgR19UWVBFX0lOVCwgY29udGV4dC0+YmxvY2tfYWxpZ24sCi0rICAgICAgICAgICAgImJpdHJhdGUiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5iaXRfcmF0ZSwgTlVMTCk7Ci0rICAgICAgfQotKyAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUkFfMTQ0OgotKyAgICBjYXNlIENPREVDX0lEX1JBXzI4ODoKLSsgICAgY2FzZSBDT0RFQ19JRF9DT09LOgotKyAgICB7Ci0rICAgICAgZ2ludCB2ZXJzaW9uID0gMDsKLSsKLSsgICAgICBzd2l0Y2ggKGNvZGVjX2lkKSB7Ci0rICAgICAgICBjYXNlIENPREVDX0lEX1JBXzE0NDoKLSsgICAgICAgICAgdmVyc2lvbiA9IDE7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBDT0RFQ19JRF9SQV8yODg6Ci0rICAgICAgICAgIHZlcnNpb24gPSAyOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfQ09PSzoKLSsgICAgICAgICAgdmVyc2lvbiA9IDg7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKwotKyAgICAgIC8qIEZJWE1FOiBwcm9wZXJ0aWVzPyAqLwotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtcG4tcmVhbGF1ZGlvIiwKLSsgICAgICAgICAgInJhdmVyc2lvbiIsIEdfVFlQRV9JTlQsIHZlcnNpb24sIE5VTEwpOwotKyAgICAgIGlmIChjb250ZXh0KSB7Ci0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICJsZWFmX3NpemUiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5ibG9ja19hbGlnbiwKLSsgICAgICAgICAgICAiYml0cmF0ZSIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJpdF9yYXRlLCBOVUxMKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9ST1FfRFBDTToKLSsgICAgY2FzZSBDT0RFQ19JRF9JTlRFUlBMQVlfRFBDTToKLSsgICAgY2FzZSBDT0RFQ19JRF9YQU5fRFBDTToKLSsgICAgY2FzZSBDT0RFQ19JRF9TT0xfRFBDTToKLSsgICAgewotKyAgICAgIGNvbnN0IGdjaGFyICpsYXlvdXQgPSBOVUxMOwotKwotKyAgICAgIHN3aXRjaCAoY29kZWNfaWQpIHsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfUk9RX0RQQ006Ci0rICAgICAgICAgIGxheW91dCA9ICJyb3EiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfSU5URVJQTEFZX0RQQ006Ci0rICAgICAgICAgIGxheW91dCA9ICJpbnRlcnBsYXkiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfWEFOX0RQQ006Ci0rICAgICAgICAgIGxheW91dCA9ICJ4YW4iOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgQ09ERUNfSURfU09MX0RQQ006Ci0rICAgICAgICAgIGxheW91dCA9ICJzb2wiOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgIGdfYXNzZXJ0ICgwKTsgICAgICAgICAvKiBkb24ndCB3b3JyeSwgd2UgbmV2ZXIgZ2V0IGhlcmUgKi8KLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKwotKyAgICAgIC8qIEZJWE1FOiBzb21lb25lIHBsZWFzZSBjaGVjayB3aGV0aGVyIHdlIG5lZWQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzCi0rICAgICAgICogaW4gdGhpcyBjYXBzIGRlZmluaXRpb24uICovCi0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1kcGNtIiwKLSsgICAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsIGxheW91dCwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpCi0rICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICJibG9ja19hbGlnbiIsIEdfVFlQRV9JTlQsIGNvbnRleHQtPmJsb2NrX2FsaWduLAotKyAgICAgICAgICAgICJiaXRyYXRlIiwgR19UWVBFX0lOVCwgY29udGV4dC0+Yml0X3JhdGUsIE5VTEwpOwotKyAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfU0hPUlRFTjoKLSsgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL3gtc2hvcnRlbiIsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0FMQUM6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1hbGFjIiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgInNhbXBsZXNpemUiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9GTEFDOgotKyAgICAgIC8qIE5vdGUgdGhhdCBmZm1wZWcgaGFzIG5vIGVuY29kZXIgeWV0LCBidXQganVzdCBmb3Igc2FmZXR5LiBJbiB0aGUKLSsgICAgICAgKiBlbmNvZGVyIGNhc2UsIHdlIHdhbnQgdG8gYWRkIHRoaW5ncyBsaWtlIHNhbXBsZXJhdGUsIGNoYW5uZWxzLi4uICovCi0rICAgICAgaWYgKCFlbmNvZGUpIHsKLSsgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8veC1mbGFjIiwgTlVMTCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX0RWRF9TVUJUSVRMRToKLSsgICAgY2FzZSBDT0RFQ19JRF9EVkJfU1VCVElUTEU6Ci0rICAgICAgY2FwcyA9IE5VTEw7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgQ09ERUNfSURfQk1QOgotKyAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiaW1hZ2UvYm1wIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgQ09ERUNfSURfVFRBOgotKyAgICAgIGNhcHMgPSBnc3RfZmZfYXVkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgImF1ZGlvL3gtdHRhIiwgTlVMTCk7Ci0rICAgICAgaWYgKGNvbnRleHQpIHsKLSsgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsCi0rICAgICAgICAgICAgInNhbXBsZXNpemUiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUsIE5VTEwpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBDT0RFQ19JRF9UV0lOVlE6Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC10d2luLXZxIiwgTlVMTCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgR1NUX0RFQlVHICgiVW5rbm93biBjb2RlYyBJRCAlZCwgcGxlYXNlIGFkZCBtYXBwaW5nIGhlcmUiLCBjb2RlY19pZCk7Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICBpZiAoYnVpbGRjYXBzKSB7Ci0rICAgIEFWQ29kZWMgKmNvZGVjOwotKwotKyAgICBpZiAoKGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIgKGNvZGVjX2lkKSkgfHwKLSsgICAgICAgIChjb2RlYyA9IGF2Y29kZWNfZmluZF9lbmNvZGVyIChjb2RlY19pZCkpKSB7Ci0rICAgICAgZ2NoYXIgKm1pbWUgPSBOVUxMOwotKwotKyAgICAgIEdTVF9MT0cgKCJDb3VsZCBub3QgY3JlYXRlIHN0cmVhbSBmb3JtYXQgY2FwcyBmb3IgJXMiLCBjb2RlYy0+bmFtZSk7Ci0rCi0rICAgICAgc3dpdGNoIChjb2RlYy0+dHlwZSkgewotKyAgICAgICAgY2FzZSBBVk1FRElBX1RZUEVfVklERU86Ci0rICAgICAgICAgIG1pbWUgPSBnX3N0cmR1cF9wcmludGYgKCJ2aWRlby94LWdzdF9mZi0lcyIsIGNvZGVjLT5uYW1lKTsKLSsgICAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCBtaW1lLCBOVUxMKTsKLSsgICAgICAgICAgZ19mcmVlIChtaW1lKTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKLSsgICAgICAgICAgbWltZSA9IGdfc3RyZHVwX3ByaW50ZiAoImF1ZGlvL3gtZ3N0X2ZmLSVzIiwgY29kZWMtPm5hbWUpOwotKyAgICAgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsIG1pbWUsIE5VTEwpOwotKyAgICAgICAgICBpZiAoY29udGV4dCkKLSsgICAgICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLAotKyAgICAgICAgICAgICAgICAiYmxvY2tfYWxpZ24iLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5ibG9ja19hbGlnbiwKLSsgICAgICAgICAgICAgICAgImJpdHJhdGUiLCBHX1RZUEVfSU5ULCBjb250ZXh0LT5iaXRfcmF0ZSwgTlVMTCk7Ci0rICAgICAgICAgIGdfZnJlZSAobWltZSk7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rCi0rICBpZiAoY2FwcyAhPSBOVUxMKSB7Ci0rCi0rICAgIC8qIHNldCBwcml2YXRlIGRhdGEgKi8KLSsgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+ZXh0cmFkYXRhX3NpemUgPiAwKSB7Ci0rICAgICAgR3N0QnVmZmVyICpkYXRhID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChjb250ZXh0LT5leHRyYWRhdGFfc2l6ZSk7Ci0rCi0rICAgICAgbWVtY3B5IChHU1RfQlVGRkVSX0RBVEEgKGRhdGEpLCBjb250ZXh0LT5leHRyYWRhdGEsCi0rICAgICAgICAgIGNvbnRleHQtPmV4dHJhZGF0YV9zaXplKTsKLSsgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiY29kZWNfZGF0YSIsIEdTVF9UWVBFX0JVRkZFUiwgZGF0YSwgTlVMTCk7Ci0rICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoZGF0YSk7Ci0rICAgIH0KLSsKLSsgICAgLyogcGFsZXR0ZSAqLwotKyAgICBpZiAoY29udGV4dCkgewotKyAgICAgIGdzdF9mZm1wZWdfc2V0X3BhbGV0dGUgKGNhcHMsIGNvbnRleHQpOwotKyAgICB9Ci0rCi0rICAgIEdTVF9MT0cgKCJjYXBzIGZvciBjb2RlY19pZD0lZDogJSIgR1NUX1BUUl9GT1JNQVQsIGNvZGVjX2lkLCBjYXBzKTsKLSsKLSsgIH0gZWxzZSB7Ci0rICAgIEdTVF9MT0cgKCJObyBjYXBzIGZvdW5kIGZvciBjb2RlY19pZD0lZCIsIGNvZGVjX2lkKTsKLSsgIH0KLSsKLSsgIHJldHVybiBjYXBzOwotK30KLSsKLSsvKiBDb252ZXJ0IGEgRkZNUEVHIFBpeGVsIEZvcm1hdCBhbmQgb3B0aW9uYWwgQVZDb2RlY0NvbnRleHQKLSsgKiB0byBhIEdzdENhcHMuIElmIHRoZSBjb250ZXh0IGlzIG9tbWl0dGVkLCBubyBmaXhlZCB2YWx1ZXMKLSsgKiBmb3IgdmlkZW8vYXVkaW8gc2l6ZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBHc3RDYXBzCi0rICoKLSsgKiBTZWUgYmVsb3cgZm9yIHVzZWZ1bGxuZXNzCi0rICovCi0rCi0rR3N0Q2FwcyAqCi0rZ3N0X2ZmbXBlZ19waXhmbXRfdG9fY2FwcyAoZW51bSBQaXhlbEZvcm1hdCBwaXhfZm10LCBBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQsCi0rICAgIGVudW0gQ29kZWNJRCBjb2RlY19pZCkKLSt7Ci0rICBHc3RDYXBzICpjYXBzID0gTlVMTDsKLSsKLSsgIGludCBicHAgPSAwLCBkZXB0aCA9IDAsIGVuZGlhbm5lc3MgPSAwOwotKyAgZ3Vsb25nIGdfbWFzayA9IDAsIHJfbWFzayA9IDAsIGJfbWFzayA9IDAsIGFfbWFzayA9IDA7Ci0rICBndWludDMyIGZtdCA9IDA7Ci0rCi0rICBzd2l0Y2ggKHBpeF9mbXQpIHsKLSsgICAgY2FzZSBQSVhfRk1UX1lVVko0MjBQOgotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDIwUDoKLSsgICAgICBmbXQgPSBHU1RfTUFLRV9GT1VSQ0MgKCdJJywgJzQnLCAnMicsICcwJyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVZBNDIwUDoKLSsgICAgICBmbXQgPSBHU1RfTUFLRV9GT1VSQ0MgKCdBJywgJzQnLCAnMicsICcwJyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVlWNDIyOgotKyAgICAgIGZtdCA9IEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnVScsICdZJywgJzInKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX1JHQjI0OgotKyAgICAgIGJwcCA9IGRlcHRoID0gMjQ7Ci0rICAgICAgZW5kaWFubmVzcyA9IEdfQklHX0VORElBTjsKLSsgICAgICByX21hc2sgPSAweGZmMDAwMDsKLSsgICAgICBnX21hc2sgPSAweDAwZmYwMDsKLSsgICAgICBiX21hc2sgPSAweDAwMDBmZjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX0JHUjI0OgotKyAgICAgIGJwcCA9IGRlcHRoID0gMjQ7Ci0rICAgICAgZW5kaWFubmVzcyA9IEdfQklHX0VORElBTjsKLSsgICAgICByX21hc2sgPSAweDAwMDBmZjsKLSsgICAgICBnX21hc2sgPSAweDAwZmYwMDsKLSsgICAgICBiX21hc2sgPSAweGZmMDAwMDsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX1lVVko0MjJQOgotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDIyUDoKLSsgICAgICBmbXQgPSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMicsICdCJyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVZKNDQ0UDoKLSsgICAgY2FzZSBQSVhfRk1UX1lVVjQ0NFA6Ci0rICAgICAgZm10ID0gR1NUX01BS0VfRk9VUkNDICgnWScsICc0JywgJzQnLCAnNCcpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBJWF9GTVRfUkdCMzI6Ci0rICAgICAgYnBwID0gMzI7Ci0rICAgICAgZGVwdGggPSAzMjsKLSsgICAgICBlbmRpYW5uZXNzID0gR19CSUdfRU5ESUFOOwotKyNpZiAoR19CWVRFX09SREVSID09IEdfQklHX0VORElBTikKLSsgICAgICByX21hc2sgPSAweDAwZmYwMDAwOwotKyAgICAgIGdfbWFzayA9IDB4MDAwMGZmMDA7Ci0rICAgICAgYl9tYXNrID0gMHgwMDAwMDBmZjsKLSsgICAgICBhX21hc2sgPSAweGZmMDAwMDAwOwotKyNlbHNlCi0rICAgICAgcl9tYXNrID0gMHgwMDAwZmYwMDsKLSsgICAgICBnX21hc2sgPSAweDAwZmYwMDAwOwotKyAgICAgIGJfbWFzayA9IDB4ZmYwMDAwMDA7Ci0rICAgICAgYV9tYXNrID0gMHgwMDAwMDBmZjsKLSsjZW5kaWYKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX1lVVjQxMFA6Ci0rICAgICAgZm10ID0gR1NUX01BS0VfRk9VUkNDICgnWScsICdVJywgJ1YnLCAnOScpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDExUDoKLSsgICAgICBmbXQgPSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMScsICdCJyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElYX0ZNVF9SR0I1NjU6Ci0rICAgICAgYnBwID0gZGVwdGggPSAxNjsKLSsgICAgICBlbmRpYW5uZXNzID0gR19CWVRFX09SREVSOwotKyAgICAgIHJfbWFzayA9IDB4ZjgwMDsKLSsgICAgICBnX21hc2sgPSAweDA3ZTA7Ci0rICAgICAgYl9tYXNrID0gMHgwMDFmOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBJWF9GTVRfUkdCNTU1OgotKyAgICAgIGJwcCA9IDE2OwotKyAgICAgIGRlcHRoID0gMTU7Ci0rICAgICAgZW5kaWFubmVzcyA9IEdfQllURV9PUkRFUjsKLSsgICAgICByX21hc2sgPSAweDdjMDA7Ci0rICAgICAgZ19tYXNrID0gMHgwM2UwOwotKyAgICAgIGJfbWFzayA9IDB4MDAxZjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQSVhfRk1UX1BBTDg6Ci0rICAgICAgYnBwID0gZGVwdGggPSA4OwotKyAgICAgIGVuZGlhbm5lc3MgPSBHX0JZVEVfT1JERVI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElYX0ZNVF9HUkFZODoKLSsgICAgICBicHAgPSBkZXB0aCA9IDg7Ci0rICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1yYXctZ3JheSIsCi0rICAgICAgICAgICJicHAiLCBHX1RZUEVfSU5ULCBicHAsICJkZXB0aCIsIEdfVFlQRV9JTlQsIGRlcHRoLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAvKiBnaXZlIHVwIC4uLiAqLwotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgaWYgKGNhcHMgPT0gTlVMTCkgewotKyAgICBpZiAoYnBwICE9IDApIHsKLSsgICAgICBpZiAocl9tYXNrICE9IDApIHsKLSsgICAgICAgIGlmIChhX21hc2spIHsKLSsgICAgICAgICAgY2FwcyA9IGdzdF9mZl92aWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAidmlkZW8veC1yYXctcmdiIiwKLSsgICAgICAgICAgICAgICJicHAiLCBHX1RZUEVfSU5ULCBicHAsCi0rICAgICAgICAgICAgICAiZGVwdGgiLCBHX1RZUEVfSU5ULCBkZXB0aCwKLSsgICAgICAgICAgICAgICJyZWRfbWFzayIsIEdfVFlQRV9JTlQsIHJfbWFzaywKLSsgICAgICAgICAgICAgICJncmVlbl9tYXNrIiwgR19UWVBFX0lOVCwgZ19tYXNrLAotKyAgICAgICAgICAgICAgImJsdWVfbWFzayIsIEdfVFlQRV9JTlQsIGJfbWFzaywKLSsgICAgICAgICAgICAgICJhbHBoYV9tYXNrIiwgR19UWVBFX0lOVCwgYV9tYXNrLAotKyAgICAgICAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBlbmRpYW5uZXNzLCBOVUxMKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtcmF3LXJnYiIsCi0rICAgICAgICAgICAgICAiYnBwIiwgR19UWVBFX0lOVCwgYnBwLAotKyAgICAgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgZGVwdGgsCi0rICAgICAgICAgICAgICAicmVkX21hc2siLCBHX1RZUEVfSU5ULCByX21hc2ssCi0rICAgICAgICAgICAgICAiZ3JlZW5fbWFzayIsIEdfVFlQRV9JTlQsIGdfbWFzaywKLSsgICAgICAgICAgICAgICJibHVlX21hc2siLCBHX1RZUEVfSU5ULCBiX21hc2ssCi0rICAgICAgICAgICAgICAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIGVuZGlhbm5lc3MsIE5VTEwpOwotKyAgICAgICAgfQotKyAgICAgIH0gZWxzZSB7Ci0rICAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJ2aWRlby94LXJhdy1yZ2IiLAotKyAgICAgICAgICAgICJicHAiLCBHX1RZUEVfSU5ULCBicHAsCi0rICAgICAgICAgICAgImRlcHRoIiwgR19UWVBFX0lOVCwgZGVwdGgsCi0rICAgICAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBlbmRpYW5uZXNzLCBOVUxMKTsKLSsgICAgICAgIGlmIChjYXBzICYmIGNvbnRleHQpIHsKLSsgICAgICAgICAgZ3N0X2ZmbXBlZ19zZXRfcGFsZXR0ZSAoY2FwcywgY29udGV4dCk7Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICB9IGVsc2UgaWYgKGZtdCkgewotKyAgICAgIGNhcHMgPSBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgInZpZGVvL3gtcmF3LXl1diIsCi0rICAgICAgICAgICJmb3JtYXQiLCBHU1RfVFlQRV9GT1VSQ0MsIGZtdCwgTlVMTCk7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGlmIChjYXBzICE9IE5VTEwpIHsKLSsgICAgR1NUX0RFQlVHICgiY2FwcyBmb3IgcGl4X2ZtdD0lZDogJSIgR1NUX1BUUl9GT1JNQVQsIHBpeF9mbXQsIGNhcHMpOwotKyAgfSBlbHNlIHsKLSsgICAgR1NUX0xPRyAoIk5vIGNhcHMgZm91bmQgZm9yIHBpeF9mbXQ9JWQiLCBwaXhfZm10KTsKLSsgIH0KLSsKLSsgIHJldHVybiBjYXBzOwotK30KLSsKLSsvKiBDb252ZXJ0IGEgRkZNUEVHIFNhbXBsZSBGb3JtYXQgYW5kIG9wdGlvbmFsIEFWQ29kZWNDb250ZXh0Ci0rICogdG8gYSBHc3RDYXBzLiBJZiB0aGUgY29udGV4dCBpcyBvbW1pdHRlZCwgbm8gZml4ZWQgdmFsdWVzCi0rICogZm9yIHZpZGVvL2F1ZGlvIHNpemUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgR3N0Q2FwcwotKyAqCi0rICogU2VlIGJlbG93IGZvciB1c2VmdWxsbmVzcwotKyAqLwotKwotK3N0YXRpYyBHc3RDYXBzICoKLStnc3RfZmZtcGVnX3NtcGZtdF90b19jYXBzIChlbnVtIEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mbXQsCi0rICAgIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwgZW51bSBDb2RlY0lEIGNvZGVjX2lkKQotK3sKLSsgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwotKwotKyAgaW50IGJwcCA9IDA7Ci0rICBnYm9vbGVhbiBpbnRlZ2VyID0gVFJVRTsKLSsgIGdib29sZWFuIHNpZ25lZG5lc3MgPSBGQUxTRTsKLSsKLSsgIHN3aXRjaCAoc2FtcGxlX2ZtdCkgewotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfUzE2OgotKyAgICAgIHNpZ25lZG5lc3MgPSBUUlVFOwotKyAgICAgIGJwcCA9IDE2OwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfUzMyOgotKyAgICAgIHNpZ25lZG5lc3MgPSBUUlVFOwotKyAgICAgIGJwcCA9IDMyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfRkxUOgotKyAgICAgIGludGVnZXIgPSBGQUxTRTsKLSsgICAgICBicHAgPSAzMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBBVl9TQU1QTEVfRk1UX0RCTDoKLSsgICAgICBpbnRlZ2VyID0gRkFMU0U7Ci0rICAgICAgYnBwID0gNjQ7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgLyogLi4gKi8KLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIGlmIChicHApIHsKLSsgICAgaWYgKGludGVnZXIpIHsKLSsgICAgICBjYXBzID0gZ3N0X2ZmX2F1ZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsICJhdWRpby94LXJhdy1pbnQiLAotKyAgICAgICAgICAic2lnbmVkIiwgR19UWVBFX0JPT0xFQU4sIHNpZ25lZG5lc3MsCi0rICAgICAgICAgICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgR19CWVRFX09SREVSLAotKyAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCBicHAsICJkZXB0aCIsIEdfVFlQRV9JTlQsIGJwcCwgTlVMTCk7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgY2FwcyA9IGdzdF9mZl9hdWRfY2Fwc19uZXcgKGNvbnRleHQsIGNvZGVjX2lkLCAiYXVkaW8veC1yYXctZmxvYXQiLAotKyAgICAgICAgICAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIEdfQllURV9PUkRFUiwKLSsgICAgICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgYnBwLCBOVUxMKTsKLSsgICAgfQotKyAgfQotKwotKyAgaWYgKGNhcHMgIT0gTlVMTCkgewotKyAgICBHU1RfTE9HICgiY2FwcyBmb3Igc2FtcGxlX2ZtdD0lZDogJSIgR1NUX1BUUl9GT1JNQVQsIHNhbXBsZV9mbXQsIGNhcHMpOwotKyAgfSBlbHNlIHsKLSsgICAgR1NUX0xPRyAoIk5vIGNhcHMgZm91bmQgZm9yIHNhbXBsZV9mbXQ9JWQiLCBzYW1wbGVfZm10KTsKLSsgIH0KLSsKLSsgIHJldHVybiBjYXBzOwotK30KLSsKLStHc3RDYXBzICoKLStnc3RfZmZtcGVnX2NvZGVjdHlwZV90b19hdWRpb19jYXBzIChBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQsCi0rICAgIGVudW0gQ29kZWNJRCBjb2RlY19pZCwgZ2Jvb2xlYW4gZW5jb2RlLCBBVkNvZGVjICogY29kZWMpCi0rewotKyAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7Ci0rCi0rICBHU1RfREVCVUcgKCJjb250ZXh0OiVwLCBjb2RlY19pZDolZCwgZW5jb2RlOiVkLCBjb2RlYzolcCIsCi0rICAgICAgY29udGV4dCwgY29kZWNfaWQsIGVuY29kZSwgY29kZWMpOwotKyAgaWYgKGNvZGVjKQotKyAgICBHU1RfREVCVUcgKCJzYW1wbGVfZm10czolcCwgc2FtcGxlcmF0ZXM6JXAiLAotKyAgICAgICAgY29kZWMtPnNhbXBsZV9mbXRzLCBjb2RlYy0+c3VwcG9ydGVkX3NhbXBsZXJhdGVzKTsKLSsKLSsgIGlmIChjb250ZXh0KSB7Ci0rICAgIC8qIFNwZWNpZmljIGNvZGVjIGNvbnRleHQgKi8KLSsgICAgY2FwcyA9IGdzdF9mZm1wZWdfc21wZm10X3RvX2NhcHMgKGNvbnRleHQtPnNhbXBsZV9mbXQsIGNvbnRleHQsIGNvZGVjX2lkKTsKLSsgIH0gZWxzZSBpZiAoY29kZWMgJiYgY29kZWMtPnNhbXBsZV9mbXRzKSB7Ci0rICAgIEdzdENhcHMgKnRlbXA7Ci0rICAgIGludCBpOwotKwotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOwotKyAgICBmb3IgKGkgPSAwOyBjb2RlYy0+c2FtcGxlX2ZtdHNbaV0gIT0gLTE7IGkrKykgewotKyAgICAgIHRlbXAgPQotKyAgICAgICAgICBnc3RfZmZtcGVnX3NtcGZtdF90b19jYXBzIChjb2RlYy0+c2FtcGxlX2ZtdHNbaV0sIGNvbnRleHQsIGNvZGVjX2lkKTsKLSsgICAgICBpZiAodGVtcCAhPSBOVUxMKQotKyAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCB0ZW1wKTsKLSsgICAgfQotKyAgfSBlbHNlIHsKLSsgICAgR3N0Q2FwcyAqdGVtcDsKLSsgICAgZW51bSBBVlNhbXBsZUZvcm1hdCBpOwotKyAgICBBVkNvZGVjQ29udGV4dCBjdHggPSB7IDAsIH07Ci0rCi0rICAgIGN0eC5jaGFubmVscyA9IC0xOwotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOwotKyAgICBmb3IgKGkgPSAwOyBpIDw9IEFWX1NBTVBMRV9GTVRfREJMOyBpKyspIHsKLSsgICAgICB0ZW1wID0gZ3N0X2ZmbXBlZ19zbXBmbXRfdG9fY2FwcyAoaSwgZW5jb2RlID8gJmN0eCA6IE5VTEwsIGNvZGVjX2lkKTsKLSsgICAgICBpZiAodGVtcCAhPSBOVUxMKSB7Ci0rICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIHRlbXApOwotKyAgICAgIH0KLSsgICAgfQotKyAgfQotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotK0dzdENhcHMgKgotK2dzdF9mZm1wZWdfY29kZWN0eXBlX3RvX3ZpZGVvX2NhcHMgKEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwKLSsgICAgZW51bSBDb2RlY0lEIGNvZGVjX2lkLCBnYm9vbGVhbiBlbmNvZGUsIEFWQ29kZWMgKiBjb2RlYykKLSt7Ci0rICBHc3RDYXBzICpjYXBzOwotKwotKyAgR1NUX0xPRyAoImNvbnRleHQ6JXAsIGNvZGVjX2lkOiVkLCBlbmNvZGU6JWQsIGNvZGVjOiVwIiwKLSsgICAgICBjb250ZXh0LCBjb2RlY19pZCwgZW5jb2RlLCBjb2RlYyk7Ci0rCi0rICBpZiAoY29udGV4dCkgewotKyAgICBjYXBzID0gZ3N0X2ZmbXBlZ19waXhmbXRfdG9fY2FwcyAoY29udGV4dC0+cGl4X2ZtdCwgY29udGV4dCwgY29kZWNfaWQpOwotKyAgfSBlbHNlIHsKLSsgICAgR3N0Q2FwcyAqdGVtcDsKLSsgICAgZW51bSBQaXhlbEZvcm1hdCBpOwotKyAgICBBVkNvZGVjQ29udGV4dCBjdHggPSB7IDAsIH07Ci0rCi0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBQSVhfRk1UX05COyBpKyspIHsKLSsgICAgICBjdHgud2lkdGggPSAtMTsKLSsgICAgICBjdHgucGl4X2ZtdCA9IGk7Ci0rICAgICAgdGVtcCA9IGdzdF9mZm1wZWdfcGl4Zm10X3RvX2NhcHMgKGksIGVuY29kZSA/ICZjdHggOiBOVUxMLCBjb2RlY19pZCk7Ci0rICAgICAgaWYgKHRlbXAgIT0gTlVMTCkgewotKyAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChjYXBzLCB0ZW1wKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsgIHJldHVybiBjYXBzOwotK30KLSsKLSsvKiBDb252ZXJ0IGEgRkZNUEVHIGNvZGVjIFR5cGUgYW5kIG9wdGlvbmFsIEFWQ29kZWNDb250ZXh0Ci0rICogdG8gYSBHc3RDYXBzLiBJZiB0aGUgY29udGV4dCBpcyBvbW1pdHRlZCwgbm8gZml4ZWQgdmFsdWVzCi0rICogZm9yIHZpZGVvL2F1ZGlvIHNpemUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgR3N0Q2FwcwotKyAqCi0rICogQVZNZWRpYVR5cGUgaXMgcHJpbWFyaWx5IG1lYW50IGZvciB1bmNvbXByZXNzZWQgZGF0YSBHc3RDYXBzIQotKyAqLwotKwotK0dzdENhcHMgKgotK2dzdF9mZm1wZWdfY29kZWN0eXBlX3RvX2NhcHMgKGVudW0gQVZNZWRpYVR5cGUgY29kZWNfdHlwZSwKLSsgICAgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LCBlbnVtIENvZGVjSUQgY29kZWNfaWQsIGdib29sZWFuIGVuY29kZSkKLSt7Ci0rICBHc3RDYXBzICpjYXBzOwotKwotKyAgc3dpdGNoIChjb2RlY190eXBlKSB7Ci0rICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgotKyAgICAgIGNhcHMgPQotKyAgICAgICAgICBnc3RfZmZtcGVnX2NvZGVjdHlwZV90b192aWRlb19jYXBzIChjb250ZXh0LCBjb2RlY19pZCwgZW5jb2RlLCBOVUxMKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfQVVESU86Ci0rICAgICAgY2FwcyA9Ci0rICAgICAgICAgIGdzdF9mZm1wZWdfY29kZWN0eXBlX3RvX2F1ZGlvX2NhcHMgKGNvbnRleHQsIGNvZGVjX2lkLCBlbmNvZGUsIE5VTEwpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGNhcHMgPSBOVUxMOwotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotKy8qIENvbnZlcnQgYSBHc3RDYXBzIChhdWRpby9yYXcpIHRvIGEgRkZNUEVHIFNhbXBsZUZtdAotKyAqIGFuZCBvdGhlciBhdWRpbyBwcm9wZXJ0aWVzIGluIGEgQVZDb2RlY0NvbnRleHQuCi0rICoKLSsgKiBGb3IgdXNlZnVsbG5lc3MsIHNlZSBiZWxvdwotKyAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ19jYXBzX3RvX3NtcGZtdCAoY29uc3QgR3N0Q2FwcyAqIGNhcHMsCi0rICAgIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwgZ2Jvb2xlYW4gcmF3KQotK3sKLSsgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotKyAgZ2ludCBkZXB0aCA9IDAsIHdpZHRoID0gMCwgZW5kaWFubmVzcyA9IDA7Ci0rICBnYm9vbGVhbiBzaWduZWRuZXNzID0gRkFMU0U7Ci0rICBjb25zdCBnY2hhciAqbmFtZTsKLSsKLSsgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9jYXBzX2dldF9zaXplIChjYXBzKSA9PSAxKTsKLSsgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotKwotKyAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJjaGFubmVscyIsICZjb250ZXh0LT5jaGFubmVscyk7Ci0rICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgInJhdGUiLCAmY29udGV4dC0+c2FtcGxlX3JhdGUpOwotKyAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJibG9ja19hbGlnbiIsICZjb250ZXh0LT5ibG9ja19hbGlnbik7Ci0rICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImJpdHJhdGUiLCAmY29udGV4dC0+Yml0X3JhdGUpOwotKwotKyAgaWYgKCFyYXcpCi0rICAgIHJldHVybjsKLSsKLSsgIG5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpOwotKwotKyAgaWYgKCFzdHJjbXAgKG5hbWUsICJhdWRpby94LXJhdy1mbG9hdCIpKSB7Ci0rICAgIC8qIEZMT0FUICovCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKSAmJgotKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJlbmRpYW5uZXNzIiwgJmVuZGlhbm5lc3MpKSB7Ci0rICAgICAgaWYgKGVuZGlhbm5lc3MgPT0gR19CWVRFX09SREVSKSB7Ci0rICAgICAgICBpZiAod2lkdGggPT0gMzIpCi0rICAgICAgICAgIGNvbnRleHQtPnNhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX0ZMVDsKLSsgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IDY0KQotKyAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9EQkw7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9IGVsc2UgewotKyAgICAvKiBJTlQgKi8KLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid2lkdGgiLCAmd2lkdGgpICYmCi0rICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImRlcHRoIiwgJmRlcHRoKSAmJgotKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfYm9vbGVhbiAoc3RydWN0dXJlLCAic2lnbmVkIiwgJnNpZ25lZG5lc3MpICYmCi0rICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImVuZGlhbm5lc3MiLCAmZW5kaWFubmVzcykpIHsKLSsgICAgICBpZiAoKGVuZGlhbm5lc3MgPT0gR19CWVRFX09SREVSKSAmJiAoc2lnbmVkbmVzcyA9PSBUUlVFKSkgewotKyAgICAgICAgaWYgKCh3aWR0aCA9PSAxNikgJiYgKGRlcHRoID09IDE2KSkKLSsgICAgICAgICAgY29udGV4dC0+c2FtcGxlX2ZtdCA9IEFWX1NBTVBMRV9GTVRfUzE2OwotKyAgICAgICAgZWxzZSBpZiAoKHdpZHRoID09IDMyKSAmJiAoZGVwdGggPT0gMzIpKQotKyAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMzI7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rfQotKwotKwotKy8qIENvbnZlcnQgYSBHc3RDYXBzICh2aWRlby9yYXcpIHRvIGEgRkZNUEVHIFBpeEZtdAotKyAqIGFuZCBvdGhlciB2aWRlbyBwcm9wZXJ0aWVzIGluIGEgQVZDb2RlY0NvbnRleHQuCi0rICoKLSsgKiBGb3IgdXNlZnVsbG5lc3MsIHNlZSBiZWxvdwotKyAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ19jYXBzX3RvX3BpeGZtdCAoY29uc3QgR3N0Q2FwcyAqIGNhcHMsCi0rICAgIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwgZ2Jvb2xlYW4gcmF3KQotK3sKLSsgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotKyAgY29uc3QgR1ZhbHVlICpmcHM7Ci0rICBjb25zdCBHVmFsdWUgKnBhciA9IE5VTEw7Ci0rCi0rICBHU1RfREVCVUcgKCJjb252ZXJ0aW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwotKyAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpID09IDEpOwotKyAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0rCi0rICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgJmNvbnRleHQtPndpZHRoKTsKLSsgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmNvbnRleHQtPmhlaWdodCk7Ci0rICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImJwcCIsICZjb250ZXh0LT5iaXRzX3Blcl9jb2RlZF9zYW1wbGUpOwotKwotKyAgZnBzID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHN0cnVjdHVyZSwgImZyYW1lcmF0ZSIpOwotKyAgaWYgKGZwcyAhPSBOVUxMICYmIEdTVF9WQUxVRV9IT0xEU19GUkFDVElPTiAoZnBzKSkgewotKwotKyAgICAvKiBzb21laG93IHRoZXNlIHNlZW0gbWl4ZWQgdXAuLiAqLwotKyAgICBjb250ZXh0LT50aW1lX2Jhc2UuZGVuID0gZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9udW1lcmF0b3IgKGZwcyk7Ci0rICAgIGNvbnRleHQtPnRpbWVfYmFzZS5udW0gPSBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX2Rlbm9taW5hdG9yIChmcHMpOwotKyAgICBjb250ZXh0LT50aWNrc19wZXJfZnJhbWUgPSAxOwotKwotKyAgICBHU1RfREVCVUcgKCJzZXR0aW5nIGZyYW1lcmF0ZSAlZC8lZCA9ICVsZiIsCi0rICAgICAgICBjb250ZXh0LT50aW1lX2Jhc2UuZGVuLCBjb250ZXh0LT50aW1lX2Jhc2UubnVtLAotKyAgICAgICAgMS4gKiBjb250ZXh0LT50aW1lX2Jhc2UuZGVuIC8gY29udGV4dC0+dGltZV9iYXNlLm51bSk7Ci0rICB9Ci0rCi0rICBwYXIgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RydWN0dXJlLCAicGl4ZWwtYXNwZWN0LXJhdGlvIik7Ci0rICBpZiAocGFyICYmIEdTVF9WQUxVRV9IT0xEU19GUkFDVElPTiAocGFyKSkgewotKwotKyAgICBjb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSA9IGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25fbnVtZXJhdG9yIChwYXIpOwotKyAgICBjb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLmRlbiA9IGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25fZGVub21pbmF0b3IgKHBhcik7Ci0rCi0rICAgIEdTVF9ERUJVRyAoInNldHRpbmcgcGl4ZWwtYXNwZWN0LXJhdGlvICVkLyVkID0gJWxmIiwKLSsgICAgICAgIGNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuLCBjb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSwKLSsgICAgICAgIDEuICogY29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4gLwotKyAgICAgICAgY29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5udW0pOwotKyAgfQotKwotKyAgaWYgKCFyYXcpCi0rICAgIHJldHVybjsKLSsKLSsgIGdfcmV0dXJuX2lmX2ZhaWwgKGZwcyAhPSBOVUxMICYmIEdTVF9WQUxVRV9IT0xEU19GUkFDVElPTiAoZnBzKSk7Ci0rCi0rICBpZiAoc3RyY21wIChnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpLCAidmlkZW8veC1yYXcteXV2IikgPT0gMCkgewotKyAgICBndWludDMyIGZvdXJjYzsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZvdXJjYyAoc3RydWN0dXJlLCAiZm9ybWF0IiwgJmZvdXJjYykpIHsKLSsgICAgICBzd2l0Y2ggKGZvdXJjYykgewotKyAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJ1UnLCAnWScsICcyJyk6Ci0rICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVWVY0MjI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdJJywgJzQnLCAnMicsICcwJyk6Ci0rICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVVjQyMFA7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdBJywgJzQnLCAnMicsICcwJyk6Ci0rICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1lVVkE0MjBQOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnWScsICc0JywgJzEnLCAnQicpOgotKyAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVY0MTFQOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnWScsICc0JywgJzInLCAnQicpOgotKyAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVY0MjJQOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnWScsICdVJywgJ1YnLCAnOScpOgotKyAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVY0MTBQOwotKyAgICAgICAgICBicmVhazsKLSsjaWYgMAotKyAgICAgICAgY2FzZSBGSVhNRToKLSsgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfWVVWNDQ0UDsKLSsgICAgICAgICAgYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgfQotKyAgICB9Ci0rICB9IGVsc2UgaWYgKHN0cmNtcCAoZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoc3RydWN0dXJlKSwKLSsgICAgICAgICAgInZpZGVvL3gtcmF3LXJnYiIpID09IDApIHsKLSsgICAgZ2ludCBicHAgPSAwLCBybWFzayA9IDAsIGVuZGlhbm5lc3MgPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJicHAiLCAmYnBwKSAmJgotKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJlbmRpYW5uZXNzIiwgJmVuZGlhbm5lc3MpKSB7Ci0rICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAicmVkX21hc2siLCAmcm1hc2spKSB7Ci0rICAgICAgICBzd2l0Y2ggKGJwcCkgewotKyAgICAgICAgICBjYXNlIDMyOgotKyNpZiAoR19CWVRFX09SREVSID09IEdfQklHX0VORElBTikKLSsgICAgICAgICAgICBpZiAocm1hc2sgPT0gMHgwMGZmMDAwMCkKLSsjZWxzZQotKyAgICAgICAgICAgIGlmIChybWFzayA9PSAweDAwMDBmZjAwKQotKyNlbmRpZgotKyAgICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfUkdCMzI7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgMjQ6Ci0rICAgICAgICAgICAgaWYgKHJtYXNrID09IDB4MDAwMEZGKQotKyAgICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfQkdSMjQ7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfUkdCMjQ7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgMTY6Ci0rICAgICAgICAgICAgaWYgKGVuZGlhbm5lc3MgPT0gR19CWVRFX09SREVSKQotKyAgICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfUkdCNTY1OwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIDE1OgotKyAgICAgICAgICAgIGlmIChlbmRpYW5uZXNzID09IEdfQllURV9PUkRFUikKLSsgICAgICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX1JHQjU1NTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgICAvKiBub3RoaW5nICovCi0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGlmIChicHAgPT0gOCkgewotKyAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9QQUw4OwotKyAgICAgICAgICBnc3RfZmZtcGVnX2dldF9wYWxldHRlIChjYXBzLCBjb250ZXh0KTsKLSsgICAgICAgIH0KLSsgICAgICB9Ci0rICAgIH0KLSsgIH0gZWxzZSBpZiAoc3RyY21wIChnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpLAotKyAgICAgICAgICAidmlkZW8veC1yYXctZ3JheSIpID09IDApIHsKLSsgICAgZ2ludCBicHAgPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJicHAiLCAmYnBwKSkgewotKyAgICAgIHN3aXRjaCAoYnBwKSB7Ci0rICAgICAgICBjYXNlIDg6Ci0rICAgICAgICAgIGNvbnRleHQtPnBpeF9mbXQgPSBQSVhfRk1UX0dSQVk4OwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSt9Ci0rCi0rLyogQ29udmVydCBhIEdzdENhcHMgYW5kIGEgRkZNUEVHIGNvZGVjIFR5cGUgdG8gYQotKyAqIEFWQ29kZWNDb250ZXh0LiBJZiB0aGUgY29udGV4dCBpcyBvbW1pdHRlZCwgbm8gZml4ZWQgdmFsdWVzCi0rICogZm9yIHZpZGVvL2F1ZGlvIHNpemUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgY29udGV4dAotKyAqCi0rICogQVZNZWRpYVR5cGUgaXMgcHJpbWFyaWx5IG1lYW50IGZvciB1bmNvbXByZXNzZWQgZGF0YSBHc3RDYXBzIQotKyAqLwotKwotK3ZvaWQKLStnc3RfZmZtcGVnX2NhcHNfd2l0aF9jb2RlY3R5cGUgKGVudW0gQVZNZWRpYVR5cGUgdHlwZSwKLSsgICAgY29uc3QgR3N0Q2FwcyAqIGNhcHMsIEFWQ29kZWNDb250ZXh0ICogY29udGV4dCkKLSt7Ci0rICBpZiAoY29udGV4dCA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBzd2l0Y2ggKHR5cGUpIHsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfVklERU86Ci0rICAgICAgZ3N0X2ZmbXBlZ19jYXBzX3RvX3BpeGZtdCAoY2FwcywgY29udGV4dCwgVFJVRSk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgotKyAgICAgIGdzdF9mZm1wZWdfY2Fwc190b19zbXBmbXQgKGNhcHMsIGNvbnRleHQsIFRSVUUpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIC8qIHVua25vd24gKi8KLSsgICAgICBicmVhazsKLSsgIH0KLSt9Ci0rCi0rI2lmIDAKLStzdGF0aWMgdm9pZAotK25hbF9lc2NhcGUgKGd1aW50OCAqIGRzdCwgZ3VpbnQ4ICogc3JjLCBndWludCBzaXplLCBndWludCAqIGRlc3RzaXplKQotK3sKLSsgIGd1aW50OCAqZHN0cCA9IGRzdDsKLSsgIGd1aW50OCAqc3JjcCA9IHNyYzsKLSsgIGd1aW50OCAqZW5kID0gc3JjICsgc2l6ZTsKLSsgIGdpbnQgY291bnQgPSAwOwotKwotKyAgd2hpbGUgKHNyY3AgPCBlbmQpIHsKLSsgICAgaWYgKGNvdW50ID09IDIgJiYgKnNyY3AgPD0gMHgwMykgewotKyAgICAgIEdTVF9ERUJVRyAoImFkZGVkIGVzY2FwZSBjb2RlIik7Ci0rICAgICAgKmRzdHArKyA9IDB4MDM7Ci0rICAgICAgY291bnQgPSAwOwotKyAgICB9Ci0rICAgIGlmICgqc3JjcCA9PSAwKQotKyAgICAgIGNvdW50Kys7Ci0rICAgIGVsc2UKLSsgICAgICBjb3VudCA9IDA7Ci0rCi0rICAgIEdTVF9ERUJVRyAoImNvcHkgJTAyeCwgY291bnQgJWQiLCAqc3JjcCwgY291bnQpOwotKyAgICAqZHN0cCsrID0gKnNyY3ArKzsKLSsgIH0KLSsgICpkZXN0c2l6ZSA9IGRzdHAgLSBkc3Q7Ci0rfQotKwotKy8qIGNvcHkgdGhlIGNvbmZpZywgZXNjYXBpbmcgTkFMIHVuaXRzIGFzIHdlIGl0ZXJhdGUgdGhlbSwgaWYgc29tZXRoaW5nIGZhaWxzIHdlCi0rICogY29weSBldmVyeXRoaW5nIGFuZCBob3BlIGZvciB0aGUgYmVzdC4gKi8KLStzdGF0aWMgdm9pZAotK2NvcHlfY29uZmlnIChndWludDggKiBkc3QsIGd1aW50OCAqIHNyYywgZ3VpbnQgc2l6ZSwgZ3VpbnQgKiBkZXN0c2l6ZSkKLSt7Ci0rICBndWludDggKmRzdHAgPSBkc3Q7Ci0rICBndWludDggKnNyY3AgPSBzcmM7Ci0rICBnaW50IGNudCwgaTsKLSsgIGd1aW50IG5hbHNpemUsIGVzaXplOwotKwotKyAgLyogY2hlY2sgc2l6ZSAqLwotKyAgaWYgKHNpemUgPCA3KQotKyAgICBnb3RvIGZ1bGxfY29weTsKLSsKLSsgIC8qIGNoZWNrIHZlcnNpb24gKi8KLSsgIGlmICgqc3JjcCAhPSAxKQotKyAgICBnb3RvIGZ1bGxfY29weTsKLSsKLSsgIGNudCA9ICooc3JjcCArIDUpICYgMHgxZjsgICAgIC8qIE51bWJlciBvZiBzcHMgKi8KLSsKLSsgIEdTVF9ERUJVRyAoIm51bSBTUFMgJWQiLCBjbnQpOwotKwotKyAgbWVtY3B5IChkc3RwLCBzcmNwLCA2KTsKLSsgIHNyY3AgKz0gNjsKLSsgIGRzdHAgKz0gNjsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgewotKyAgICBHU1RfREVCVUcgKCJjb3B5IFNQUyAlZCIsIGkpOwotKyAgICBuYWxzaXplID0gKHNyY3BbMF0gPDwgOCkgfCBzcmNwWzFdOwotKyAgICBuYWxfZXNjYXBlIChkc3RwICsgMiwgc3JjcCArIDIsIG5hbHNpemUsICZlc2l6ZSk7Ci0rICAgIGRzdHBbMF0gPSBlc2l6ZSA+PiA4OwotKyAgICBkc3RwWzFdID0gZXNpemUgJiAweGZmOwotKyAgICBkc3RwICs9IGVzaXplICsgMjsKLSsgICAgc3JjcCArPSBuYWxzaXplICsgMjsKLSsgIH0KLSsKLSsgIGNudCA9ICooZHN0cCsrKSA9ICooc3JjcCsrKTsgIC8qIE51bWJlciBvZiBwcHMgKi8KLSsKLSsgIEdTVF9ERUJVRyAoIm51bSBQUFMgJWQiLCBjbnQpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7Ci0rICAgIEdTVF9ERUJVRyAoImNvcHkgUFBTICVkIiwgaSk7Ci0rICAgIG5hbHNpemUgPSAoc3JjcFswXSA8PCA4KSB8IHNyY3BbMV07Ci0rICAgIG5hbF9lc2NhcGUgKGRzdHAgKyAyLCBzcmNwICsgMiwgbmFsc2l6ZSwgJmVzaXplKTsKLSsgICAgZHN0cFswXSA9IGVzaXplID4+IDg7Ci0rICAgIGRzdHBbMV0gPSBlc2l6ZSAmIDB4ZmY7Ci0rICAgIGRzdHAgKz0gZXNpemUgKyAyOwotKyAgICBzcmNwICs9IG5hbHNpemUgKyAyOwotKyAgfQotKyAgKmRlc3RzaXplID0gZHN0cCAtIGRzdDsKLSsKLSsgIHJldHVybjsKLSsKLStmdWxsX2NvcHk6Ci0rICB7Ci0rICAgIEdTVF9ERUJVRyAoInNvbWV0aGluZyB1bmV4cGVjdGVkLCBkb2luZyBmdWxsIGNvcHkiKTsKLSsgICAgbWVtY3B5IChkc3QsIHNyYywgc2l6ZSk7Ci0rICAgICpkZXN0c2l6ZSA9IHNpemU7Ci0rICAgIHJldHVybjsKLSsgIH0KLSt9Ci0rI2VuZGlmCi0rCi0rLyoKLSsgKiBjYXBzX3dpdGhfY29kZWNpZCAoKSB0cmFuc2Zvcm1zIGEgR3N0Q2FwcyBmb3IgYSBrbm93biBjb2RlYwotKyAqIElEIGludG8gYSBmaWxsZWQtaW4gY29udGV4dC4KLSsgKiBjb2RlY19kYXRhIGZyb20gY2FwcyB3aWxsIG92ZXJyaWRlIHBvc3NpYmxlIGV4dHJhZGF0YSBhbHJlYWR5IGluIHRoZSBjb250ZXh0Ci0rICovCi0rCi0rdm9pZAotK2dzdF9mZm1wZWdfY2Fwc193aXRoX2NvZGVjaWQgKGVudW0gQ29kZWNJRCBjb2RlY19pZCwKLSsgICAgZW51bSBBVk1lZGlhVHlwZSBjb2RlY190eXBlLCBjb25zdCBHc3RDYXBzICogY2FwcywgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0KQotK3sKLSsgIEdzdFN0cnVjdHVyZSAqc3RyOwotKyAgY29uc3QgR1ZhbHVlICp2YWx1ZTsKLSsgIGNvbnN0IEdzdEJ1ZmZlciAqYnVmOwotKwotKyAgR1NUX0xPRyAoImNvZGVjX2lkOiVkLCBjb2RlY190eXBlOiVkLCBjYXBzOiUiIEdTVF9QVFJfRk9STUFUICIgY29udGV4dDolcCIsCi0rICAgICAgY29kZWNfaWQsIGNvZGVjX3R5cGUsIGNhcHMsIGNvbnRleHQpOwotKwotKyAgaWYgKCFjb250ZXh0IHx8ICFnc3RfY2Fwc19nZXRfc2l6ZSAoY2FwcykpCi0rICAgIHJldHVybjsKLSsKLSsgIHN0ciA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotKwotKyAgLyogZXh0cmFkYXRhIHBhcnNpbmcgKGVzZHMgW21wZWc0XSwgd21hL3dtdiwgbXNtcGVnNHYxLzIvMywgZXRjLikgKi8KLSsgIGlmICgodmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RyLCAiY29kZWNfZGF0YSIpKSkgewotKyAgICBndWludCBzaXplOwotKyAgICBndWludDggKmRhdGE7Ci0rCi0rICAgIGJ1ZiA9IEdTVF9CVUZGRVJfQ0FTVCAoZ3N0X3ZhbHVlX2dldF9taW5pX29iamVjdCAodmFsdWUpKTsKLSsgICAgc2l6ZSA9IEdTVF9CVUZGRVJfU0laRSAoYnVmKTsKLSsgICAgZGF0YSA9IEdTVF9CVUZGRVJfREFUQSAoYnVmKTsKLSsKLSsgICAgLyogZnJlZSB0aGUgb2xkIG9uZSBpZiBpdCBpcyB0aGVyZSAqLwotKyAgICBpZiAoY29udGV4dC0+ZXh0cmFkYXRhKQotKyAgICAgIGF2X2ZyZWUgKGNvbnRleHQtPmV4dHJhZGF0YSk7Ci0rCi0rI2lmIDAKLSsgICAgaWYgKGNvZGVjX2lkID09IENPREVDX0lEX0gyNjQpIHsKLSsgICAgICBndWludCBleHRyYXNpemU7Ci0rCi0rICAgICAgR1NUX0RFQlVHICgiY29weSwgZXNjYXBpbmcgY29kZWNfZGF0YSAlZCIsIHNpemUpOwotKyAgICAgIC8qIGZmbXBlZyBoMjY0IGV4cGVjdHMgdGhlIGNvZGVjX2RhdGEgdG8gYmUgZXNjYXBlZCwgdGhlcmUgaXMgbm8gcmVhbAotKyAgICAgICAqIHJlYXNvbiBmb3IgdGhpcyBidXQgbGV0J3MganVzdCBlc2NhcGUgaXQgZm9yIG5vdy4gU3RhcnQgYnkgYWxsb2NhdGluZwotKyAgICAgICAqIGVub3VnaCBzcGFjZSwgeDIgaXMgbW9yZSB0aGFuIGVub3VnaC4KLSsgICAgICAgKgotKyAgICAgICAqIEZJWE1FLCB3ZSBkaXNhYmxlZCBlc2NhcGluZyBiZWNhdXNlIHNvbWUgZmlsZSBhbHJlYWR5IGNvbnRhaW4gZXNjYXBlZAotKyAgICAgICAqIGNvZGVjX2RhdGEgYW5kIHRoZW4gd2UgZXNjYXBlIHR3aWNlIGFuZCBmYWlsLiBJdCdzIGJldHRlciB0byBsZWF2ZSBpdAotKyAgICAgICAqIGFzIGlzLCBhcyB0aGF0IGlzIHdoYXQgbW9zdCBwbGF5ZXJzIGRvLiAqLwotKyAgICAgIGNvbnRleHQtPmV4dHJhZGF0YSA9Ci0rICAgICAgICAgIGF2X21hbGxvY3ogKEdTVF9ST1VORF9VUF8xNiAoc2l6ZSAqIDIgKwotKyAgICAgICAgICAgICAgRkZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSkpOwotKyAgICAgIGNvcHlfY29uZmlnIChjb250ZXh0LT5leHRyYWRhdGEsIGRhdGEsIHNpemUsICZleHRyYXNpemUpOwotKyAgICAgIEdTVF9ERUJVRyAoImVzY2FwZWQgc2l6ZTogJWQiLCBleHRyYXNpemUpOwotKyAgICAgIGNvbnRleHQtPmV4dHJhZGF0YV9zaXplID0gZXh0cmFzaXplOwotKyAgICB9IGVsc2UKLSsjZW5kaWYKLSsgICAgewotKyAgICAgIC8qIGFsbG9jYXRlIHdpdGggZW5vdWdoIHBhZGRpbmcgKi8KLSsgICAgICBHU1RfREVCVUcgKCJjb3B5IGNvZGVjX2RhdGEiKTsKLSsgICAgICBjb250ZXh0LT5leHRyYWRhdGEgPQotKyAgICAgICAgICBhdl9tYWxsb2N6IChHU1RfUk9VTkRfVVBfMTYgKHNpemUgKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKSk7Ci0rICAgICAgbWVtY3B5IChjb250ZXh0LT5leHRyYWRhdGEsIGRhdGEsIHNpemUpOwotKyAgICAgIGNvbnRleHQtPmV4dHJhZGF0YV9zaXplID0gc2l6ZTsKLSsgICAgfQotKwotKyAgICAvKiBIYWNrIGZvciBWQzEuIFNvbWV0aW1lcyB0aGUgZmlyc3QgKGxlbmd0aCkgYnl0ZSBpcyAwIGZvciBzb21lIGZpbGVzICovCi0rICAgIGlmIChjb2RlY19pZCA9PSBDT0RFQ19JRF9WQzEgJiYgc2l6ZSA+IDAgJiYgZGF0YVswXSA9PSAwKSB7Ci0rICAgICAgY29udGV4dC0+ZXh0cmFkYXRhWzBdID0gKGd1aW50OCkgc2l6ZTsKLSsgICAgfQotKwotKyAgICBHU1RfREVCVUcgKCJoYXZlIGNvZGVjIGRhdGEgb2Ygc2l6ZSAlZCIsIHNpemUpOwotKyAgfSBlbHNlIGlmIChjb250ZXh0LT5leHRyYWRhdGEgPT0gTlVMTCAmJiBjb2RlY19pZCAhPSBDT0RFQ19JRF9BQUNfTEFUTSAmJgotKyAgICAgIGNvZGVjX2lkICE9IENPREVDX0lEX0ZMQUMpIHsKLSsgICAgLyogbm8gZXh0cmFkYXRhLCBhbGxvYyBkdW1teSB3aXRoIDAgc2l6ZWQsIHNvbWUgY29kZWNzIGluc2lzdCBvbiByZWFkaW5nCi0rICAgICAqIGV4dHJhZGF0YSBhbnl3YXkgd2hpY2ggbWFrZXMgdGhlbiBzZWdmYXVsdC4gKi8KLSsgICAgY29udGV4dC0+ZXh0cmFkYXRhID0KLSsgICAgICAgIGF2X21hbGxvY3ogKEdTVF9ST1VORF9VUF8xNiAoRkZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSkpOwotKyAgICBjb250ZXh0LT5leHRyYWRhdGFfc2l6ZSA9IDA7Ci0rICAgIEdTVF9ERUJVRyAoIm5vIGNvZGVjIGRhdGEiKTsKLSsgIH0KLSsKLSsgIHN3aXRjaCAoY29kZWNfaWQpIHsKLSsgICAgY2FzZSBDT0RFQ19JRF9NUEVHNDoKLSsgICAgewotKyAgICAgIGNvbnN0IGdjaGFyICptaW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoc3RyKTsKLSsKLSsgICAgICBpZiAoIXN0cmNtcCAobWltZSwgInZpZGVvL3gtZGl2eCIpKQotKyAgICAgICAgY29udGV4dC0+Y29kZWNfdGFnID0gR1NUX01BS0VfRk9VUkNDICgnRCcsICdJJywgJ1YnLCAnWCcpOwotKyAgICAgIGVsc2UgaWYgKCFzdHJjbXAgKG1pbWUsICJ2aWRlby94LXh2aWQiKSkKLSsgICAgICAgIGNvbnRleHQtPmNvZGVjX3RhZyA9IEdTVF9NQUtFX0ZPVVJDQyAoJ1gnLCAnVicsICdJJywgJ0QnKTsKLSsgICAgICBlbHNlIGlmICghc3RyY21wIChtaW1lLCAidmlkZW8veC0zaXZ4IikpCi0rICAgICAgICBjb250ZXh0LT5jb2RlY190YWcgPSBHU1RfTUFLRV9GT1VSQ0MgKCczJywgJ0knLCAnVicsICcxJyk7Ci0rICAgICAgZWxzZSBpZiAoIXN0cmNtcCAobWltZSwgInZpZGVvL21wZWciKSkKLSsgICAgICAgIGNvbnRleHQtPmNvZGVjX3RhZyA9IEdTVF9NQUtFX0ZPVVJDQyAoJ20nLCAncCcsICc0JywgJ3YnKTsKLSsgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX1NWUTM6Ci0rICAgICAgLyogRklYTUU6IHRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBvbGRlciBnc3QtcGx1Z2lucyByZWxlYXNlcwotKyAgICAgICAqICg8PSAwLjguOSkuIFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgYXQgc29tZSBwb2ludCwgYmVjYXVzZQotKyAgICAgICAqIGl0IGNhdXNlcyB3cm9uZyBkZWNvZGVkIGZyYW1lIG9yZGVyLiAqLwotKyAgICAgIGlmICghY29udGV4dC0+ZXh0cmFkYXRhKSB7Ci0rICAgICAgICBnaW50IGhhbGZwZWxfZmxhZywgdGhpcmRwZWxfZmxhZywgbG93X2RlbGF5LCB1bmtub3duX3N2cTNfZmxhZzsKLSsgICAgICAgIGd1aW50MTYgZmxhZ3M7Ci0rCi0rICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHIsICJoYWxmcGVsX2ZsYWciLCAmaGFsZnBlbF9mbGFnKSB8fAotKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RyLCAidGhpcmRwZWxfZmxhZyIsICZ0aGlyZHBlbF9mbGFnKSB8fAotKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RyLCAibG93X2RlbGF5IiwgJmxvd19kZWxheSkgfHwKLSsgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0ciwgInVua25vd25fc3ZxM19mbGFnIiwKLSsgICAgICAgICAgICAgICAgJnVua25vd25fc3ZxM19mbGFnKSkgewotKyAgICAgICAgICBjb250ZXh0LT5leHRyYWRhdGEgPSAoZ3VpbnQ4ICopIGF2X21hbGxvY3ogKDB4NjQpOwotKyAgICAgICAgICBnX3N0cGNweSAoKGdjaGFyICopIGNvbnRleHQtPmV4dHJhZGF0YSwgIlNWUTMiKTsKLSsgICAgICAgICAgZmxhZ3MgPSAxIDw8IDM7Ci0rICAgICAgICAgIGZsYWdzIHw9IGxvd19kZWxheTsKLSsgICAgICAgICAgZmxhZ3MgPSBmbGFncyA8PCAyOwotKyAgICAgICAgICBmbGFncyB8PSB1bmtub3duX3N2cTNfZmxhZzsKLSsgICAgICAgICAgZmxhZ3MgPSBmbGFncyA8PCA2OwotKyAgICAgICAgICBmbGFncyB8PSBoYWxmcGVsX2ZsYWc7Ci0rICAgICAgICAgIGZsYWdzID0gZmxhZ3MgPDwgMTsKLSsgICAgICAgICAgZmxhZ3MgfD0gdGhpcmRwZWxfZmxhZzsKLSsgICAgICAgICAgZmxhZ3MgPSBmbGFncyA8PCAzOwotKwotKyAgICAgICAgICBmbGFncyA9IEdVSU5UMTZfRlJPTV9MRSAoZmxhZ3MpOwotKwotKyAgICAgICAgICBtZW1jcHkgKChnY2hhciAqKSBjb250ZXh0LT5leHRyYWRhdGEgKyAweDYyLCAmZmxhZ3MsIDIpOwotKyAgICAgICAgICBjb250ZXh0LT5leHRyYWRhdGFfc2l6ZSA9IDB4NjQ7Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIENPREVDX0lEX01TUkxFOgotKyAgICBjYXNlIENPREVDX0lEX1FUUkxFOgotKyAgICBjYXNlIENPREVDX0lEX1RTQ0M6Ci0rICAgIGNhc2UgQ09ERUNfSURfQ1NDRDoKLSsgICAgY2FzZSBDT0RFQ19JRF9BUEU6Ci0rICAgIHsKLSsgICAgICBnaW50IGRlcHRoOwotKwotKyAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0ciwgImRlcHRoIiwgJmRlcHRoKSkgewotKyAgICAgICAgY29udGV4dC0+Yml0c19wZXJfY29kZWRfc2FtcGxlID0gZGVwdGg7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIEdTVF9XQVJOSU5HICgiTm8gZGVwdGggZmllbGQgaW4gY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0rICAgICAgfQotKwotKyAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQ09ERUNfSURfUlYxMDoKLSsgICAgY2FzZSBDT0RFQ19JRF9SVjIwOgotKyAgICBjYXNlIENPREVDX0lEX1JWMzA6Ci0rICAgIGNhc2UgQ09ERUNfSURfUlY0MDoKLSsgICAgewotKyAgICAgIGdpbnQgZm9ybWF0OwotKwotKyAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0ciwgImZvcm1hdCIsICZmb3JtYXQpKQotKyAgICAgICAgY29udGV4dC0+c3ViX2lkID0gZm9ybWF0OwotKwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGNhc2UgQ09ERUNfSURfQ09PSzoKLSsgICAgY2FzZSBDT0RFQ19JRF9SQV8yODg6Ci0rICAgIGNhc2UgQ09ERUNfSURfUkFfMTQ0OgotKyAgICBjYXNlIENPREVDX0lEX1NJUFI6Ci0rICAgIHsKLSsgICAgICBnaW50IGxlYWZfc2l6ZTsKLSsgICAgICBnaW50IGJpdHJhdGU7Ci0rCi0rICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RyLCAibGVhZl9zaXplIiwgJmxlYWZfc2l6ZSkpCi0rICAgICAgICBjb250ZXh0LT5ibG9ja19hbGlnbiA9IGxlYWZfc2l6ZTsKLSsgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHIsICJiaXRyYXRlIiwgJmJpdHJhdGUpKQotKyAgICAgICAgY29udGV4dC0+Yml0X3JhdGUgPSBiaXRyYXRlOwotKyAgICB9Ci0rICAgIGNhc2UgQ09ERUNfSURfQUxBQzoKLSsgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0ciwgInNhbXBsZXNpemUiLAotKyAgICAgICAgICAmY29udGV4dC0+Yml0c19wZXJfY29kZWRfc2FtcGxlKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBDT0RFQ19JRF9EVlZJREVPOgotKyAgICB7Ci0rICAgICAgZ3VpbnQzMiBmb3VyY2M7Ci0rCi0rICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZvdXJjYyAoc3RyLCAiZm9ybWF0IiwgJmZvdXJjYykpCi0rICAgICAgICBzd2l0Y2ggKGZvdXJjYykgewotKyAgICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ1knLCAnVScsICdZJywgJzInKToKLSsgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVlWNDIyOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ0knLCAnNCcsICcyJywgJzAnKToKLSsgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVY0MjBQOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ0EnLCAnNCcsICcyJywgJzAnKToKLSsgICAgICAgICAgICBjb250ZXh0LT5waXhfZm10ID0gUElYX0ZNVF9ZVVZBNDIwUDsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMScsICdCJyk6Ci0rICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfWVVWNDExUDsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJzQnLCAnMicsICdCJyk6Ci0rICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfWVVWNDIyUDsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgY2FzZSBHU1RfTUFLRV9GT1VSQ0MgKCdZJywgJ1UnLCAnVicsICc5Jyk6Ci0rICAgICAgICAgICAgY29udGV4dC0+cGl4X2ZtdCA9IFBJWF9GTVRfWVVWNDEwUDsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgICBHU1RfV0FSTklORyAoImNvdWxkbid0IGNvbnZlcnQgZm91cmNjICUiIEdTVF9GT1VSQ0NfRk9STUFUCi0rICAgICAgICAgICAgICAgICIgdG8gYSBwaXhlbCBmb3JtYXQiLCBHU1RfRk9VUkNDX0FSR1MgKGZvdXJjYykpOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGNhc2UgQ09ERUNfSURfSDI2M1A6Ci0rICAgIHsKLSsgICAgICBnYm9vbGVhbiB2YWw7Ci0rCi0rICAgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9ib29sZWFuIChzdHIsICJhbm5leC1mIiwgJnZhbCkgfHwgdmFsKQotKyAgICAgICAgY29udGV4dC0+ZmxhZ3MgfD0gQ09ERUNfRkxBR180TVY7Ci0rICAgICAgZWxzZQotKyAgICAgICAgY29udGV4dC0+ZmxhZ3MgJj0gfkNPREVDX0ZMQUdfNE1WOwotKyAgICAgIGlmICgoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHN0ciwgImFubmV4LWkiLCAmdmFsKSB8fCB2YWwpICYmCi0rICAgICAgICAgICghZ3N0X3N0cnVjdHVyZV9nZXRfYm9vbGVhbiAoc3RyLCAiYW5uZXgtdCIsICZ2YWwpIHx8IHZhbCkpCi0rICAgICAgICBjb250ZXh0LT5mbGFncyB8PSBDT0RFQ19GTEFHX0FDX1BSRUQ7Ci0rICAgICAgZWxzZQotKyAgICAgICAgY29udGV4dC0+ZmxhZ3MgJj0gfkNPREVDX0ZMQUdfQUNfUFJFRDsKLSsgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHN0ciwgImFubmV4LWoiLCAmdmFsKSB8fCB2YWwpCi0rICAgICAgICBjb250ZXh0LT5mbGFncyB8PSBDT0RFQ19GTEFHX0xPT1BfRklMVEVSOwotKyAgICAgIGVsc2UKLSsgICAgICAgIGNvbnRleHQtPmZsYWdzICY9IH5DT0RFQ19GTEFHX0xPT1BfRklMVEVSOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGNhc2UgQ09ERUNfSURfQURQQ01fRzcyNjoKLSsgICAgewotKyAgICAgIGNvbnN0IGdjaGFyICpsYXlvdXQ7Ci0rCi0rICAgICAgaWYgKChsYXlvdXQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0ciwgImxheW91dCIpKSkgewotKyAgICAgICAgaWYgKCFzdHJjbXAgKGxheW91dCwgImc3MjEiKSkgewotKyAgICAgICAgICBjb250ZXh0LT5zYW1wbGVfcmF0ZSA9IDgwMDA7Ci0rICAgICAgICAgIGNvbnRleHQtPmNoYW5uZWxzID0gMTsKLSsgICAgICAgICAgY29udGV4dC0+Yml0X3JhdGUgPSAzMjAwMDsKLSsgICAgICAgIH0KLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIGlmICghZ3N0X2NhcHNfaXNfZml4ZWQgKGNhcHMpKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBjb21tb24gcHJvcGVydGllcyAod2lkdGgsIGhlaWdodCwgZnBzKSAqLwotKyAgc3dpdGNoIChjb2RlY190eXBlKSB7Ci0rICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgotKyAgICAgIGdzdF9mZm1wZWdfY2Fwc190b19waXhmbXQgKGNhcHMsIGNvbnRleHQsIGNvZGVjX2lkID09IENPREVDX0lEX1JBV1ZJREVPKTsKLSsgICAgICBnc3RfZmZtcGVnX2dldF9wYWxldHRlIChjYXBzLCBjb250ZXh0KTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfQVVESU86Ci0rICAgICAgZ3N0X2ZmbXBlZ19jYXBzX3RvX3NtcGZtdCAoY2FwcywgY29udGV4dCwgRkFMU0UpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgLyogZml4dXAgb2YgZGVmYXVsdCBzZXR0aW5ncyAqLwotKyAgc3dpdGNoIChjb2RlY19pZCkgewotKyAgICBjYXNlIENPREVDX0lEX1FDRUxQOgotKyAgICAgIC8qIFFDRUxQIGlzIGFsd2F5cyBtb25vLCBubyBtYXR0ZXIgd2hhdCB0aGUgY2FwcyBzYXkgKi8KLSsgICAgICBjb250ZXh0LT5jaGFubmVscyA9IDE7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rfQotKwotKy8qIF9mb3JtYXRpZF90b19jYXBzICgpIGlzIG1lYW50IGZvciBtdXhlcnMvZGVtdXhlcnMsIGl0Ci0rICogdHJhbnNmb3JtcyBhIG5hbWUgKGZmbXBlZyB3YXkgb2YgSUQnaW5nIHRoZXNlLCB3aHkgZG9uJ3QKLSsgKiB0aGV5IGhhdmUgdW5pcXVlIG51bWVyaWNhbCBJRHM/KSB0byB0aGUgY29ycmVzcG9uZGluZwotKyAqIGNhcHMgYmVsb25naW5nIHRvIHRoYXQgbXV4LWZvcm1hdAotKyAqCi0rICogTm90ZTogd2UgZG9uJ3QgbmVlZCBhbnkgYWRkaXRpb25hbCBpbmZvIGJlY2F1c2UgdGhlIGNhcHMKLSsgKiBpc24ndCBzdXBwb3NlZCB0byBjb250YWluIGFueSB1c2VmdWwgaW5mbyBiZXNpZGVzIHRoZQotKyAqIG1lZGlhIHR5cGUgYW55d2F5Ci0rICovCi0rCi0rR3N0Q2FwcyAqCi0rZ3N0X2ZmbXBlZ19mb3JtYXRpZF90b19jYXBzIChjb25zdCBnY2hhciAqIGZvcm1hdF9uYW1lKQotK3sKLSsgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwotKwotKyAgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibXBlZyIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8vbXBlZyIsCi0rICAgICAgICAic3lzdGVtc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIFRSVUUsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1wZWd0cyIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8vbXBlZ3RzIiwKLSsgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgVFJVRSwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAicm0iKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImFwcGxpY2F0aW9uL3gtcG4tcmVhbG1lZGlhIiwKLSsgICAgICAgICJzeXN0ZW1zdHJlYW0iLCBHX1RZUEVfQk9PTEVBTiwgVFJVRSwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiYXNmIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LW1zLWFzZiIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImF2aSIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC1tc3ZpZGVvIiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAid2F2IikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJhdWRpby94LXdhdiIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImFwZSIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXBwbGljYXRpb24veC1hcGUiLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJzd2YiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiYXUiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL3gtYXUiLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJkdiIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC1kdiIsCi0rICAgICAgICAic3lzdGVtc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIFRSVUUsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIjR4bSIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC00eG0iLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJtYXRyb3NrYSIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC1tYXRyb3NrYSIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1wMyIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXBwbGljYXRpb24veC1pZDMiLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJmbGljIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LWZsaSIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImZsdiIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC1mbHYiLCBOVUxMKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJ0dGEiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL3gtdHRhZmlsZSIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImFpZmYiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL3gtYWlmZiIsIE5VTEwpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1vdl9tcDRfbTRhXzNncF8zZzIiKSkgewotKyAgICBjYXBzID0KLSsgICAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nCi0rICAgICAgICAoImFwcGxpY2F0aW9uL3gtM2dwOyB2aWRlby9xdWlja3RpbWU7IGF1ZGlvL3gtbTRhIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibW92IikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8vcXVpY2t0aW1lLHZhcmlhbnQ9KHN0cmluZylhcHBsZSIpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1wNCIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInZpZGVvL3F1aWNrdGltZSx2YXJpYW50PShzdHJpbmcpaXNvIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiM2dwIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8vcXVpY2t0aW1lLHZhcmlhbnQ9KHN0cmluZykzZ3BwIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiM2cyIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8vcXVpY2t0aW1lLHZhcmlhbnQ9KHN0cmluZykzZzIiKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJwc3AiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby9xdWlja3RpbWUsdmFyaWFudD0oc3RyaW5nKXBzcCIpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImlwb2QiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby9xdWlja3RpbWUsdmFyaWFudD0oc3RyaW5nKWlwb2QiKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJhYWMiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL21wZWciLAotKyAgICAgICAgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgNCwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiZ2lmIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgiaW1hZ2UvZ2lmIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAib2dnIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgiYXBwbGljYXRpb24vb2dnIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibXhmIikgfHwgIXN0cmNtcCAoZm9ybWF0X25hbWUsICJteGZfZDEwIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgiYXBwbGljYXRpb24vbXhmIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiZ3hmIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgiYXBwbGljYXRpb24vZ3hmIik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAieXV2NG1wZWdwaXBlIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJhcHBsaWNhdGlvbi94LXl1djRtcGVnIiwKLSsgICAgICAgICJ5NG12ZXJzaW9uIiwgR19UWVBFX0lOVCwgMiwgTlVMTCk7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibXBjIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgiYXVkaW8veC1tdXNlcGFjaywgc3RyZWFtdmVyc2lvbiA9IChpbnQpIDciKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJ2cWYiKSkgewotKyAgICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJhdWRpby94LXZxZiIpOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm5zdiIpKSB7Ci0rICAgIGNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInZpZGVvL3gtbnN2Iik7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiYW1yIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgiYXVkaW8veC1hbXItbmItc2giKTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJ3ZWJtIikpIHsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8vd2VibSIpOwotKyAgfSBlbHNlIHsKLSsgICAgZ2NoYXIgKm5hbWU7Ci0rCi0rICAgIEdTVF9MT0cgKCJDb3VsZCBub3QgY3JlYXRlIHN0cmVhbSBmb3JtYXQgY2FwcyBmb3IgJXMiLCBmb3JtYXRfbmFtZSk7Ci0rICAgIG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJhcHBsaWNhdGlvbi94LWdzdF9mZi0lcyIsIGZvcm1hdF9uYW1lKTsKLSsgICAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKG5hbWUsIE5VTEwpOwotKyAgICBnX2ZyZWUgKG5hbWUpOwotKyAgfQotKwotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotK2dib29sZWFuCi0rZ3N0X2ZmbXBlZ19mb3JtYXRpZF9nZXRfY29kZWNpZHMgKGNvbnN0IGdjaGFyICogZm9ybWF0X25hbWUsCi0rICAgIGVudW0gQ29kZWNJRCAqKiB2aWRlb19jb2RlY19saXN0LCBlbnVtIENvZGVjSUQgKiogYXVkaW9fY29kZWNfbGlzdCwKLSsgICAgQVZPdXRwdXRGb3JtYXQgKiBwbHVnaW4pCi0rewotKyAgc3RhdGljIGVudW0gQ29kZWNJRCB0bXBfdmxpc3RbXSA9IHsKLSsgICAgQ09ERUNfSURfTk9ORSwKLSsgICAgQ09ERUNfSURfTk9ORQotKyAgfTsKLSsgIHN0YXRpYyBlbnVtIENvZGVjSUQgdG1wX2FsaXN0W10gPSB7Ci0rICAgIENPREVDX0lEX05PTkUsCi0rICAgIENPREVDX0lEX05PTkUKLSsgIH07Ci0rCi0rICBHU1RfTE9HICgiZm9ybWF0X25hbWUgOiAlcyIsIGZvcm1hdF9uYW1lKTsKLSsKLSsgIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1wNCIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgbXA0X3ZpZGVvX2xpc3RbXSA9IHsKLSsgICAgICBDT0RFQ19JRF9NUEVHNCwgQ09ERUNfSURfSDI2NCwKLSsgICAgICBDT0RFQ19JRF9NSlBFRywKLSsgICAgICBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgbXA0X2F1ZGlvX2xpc3RbXSA9IHsKLSsgICAgICBDT0RFQ19JRF9BQUMsIENPREVDX0lEX01QMywKLSsgICAgICBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gbXA0X3ZpZGVvX2xpc3Q7Ci0rICAgICphdWRpb19jb2RlY19saXN0ID0gbXA0X2F1ZGlvX2xpc3Q7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAibXBlZyIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgbXBlZ192aWRlb19saXN0W10gPSB7IENPREVDX0lEX01QRUcxVklERU8sCi0rICAgICAgQ09ERUNfSURfTVBFRzJWSURFTywKLSsgICAgICBDT0RFQ19JRF9IMjY0LAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtcGVnX2F1ZGlvX2xpc3RbXSA9IHsgQ09ERUNfSURfTVAxLAotKyAgICAgIENPREVDX0lEX01QMiwKLSsgICAgICBDT0RFQ19JRF9NUDMsCi0rICAgICAgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKwotKyAgICAqdmlkZW9fY29kZWNfbGlzdCA9IG1wZWdfdmlkZW9fbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBtcGVnX2F1ZGlvX2xpc3Q7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiZHZkIikpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtcGVnX3ZpZGVvX2xpc3RbXSA9IHsgQ09ERUNfSURfTVBFRzJWSURFTywKLSsgICAgICBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgbXBlZ19hdWRpb19saXN0W10gPSB7IENPREVDX0lEX01QMiwKLSsgICAgICBDT0RFQ19JRF9BQzMsCi0rICAgICAgQ09ERUNfSURfRFRTLAotKyAgICAgIENPREVDX0lEX1BDTV9TMTZCRSwKLSsgICAgICBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gbXBlZ192aWRlb19saXN0OwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IG1wZWdfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJtcGVndHMiKSkgewotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIG1wZWd0c192aWRlb19saXN0W10gPSB7IENPREVDX0lEX01QRUcxVklERU8sCi0rICAgICAgQ09ERUNfSURfTVBFRzJWSURFTywKLSsgICAgICBDT0RFQ19JRF9IMjY0LAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtcGVndHNfYXVkaW9fbGlzdFtdID0geyBDT0RFQ19JRF9NUDIsCi0rICAgICAgQ09ERUNfSURfTVAzLAotKyAgICAgIENPREVDX0lEX0FDMywKLSsgICAgICBDT0RFQ19JRF9EVFMsCi0rICAgICAgQ09ERUNfSURfQUFDLAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBtcGVndHNfdmlkZW9fbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBtcGVndHNfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJ2b2IiKSkgewotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIHZvYl92aWRlb19saXN0W10gPQotKyAgICAgICAgeyBDT0RFQ19JRF9NUEVHMlZJREVPLCBDT0RFQ19JRF9OT05FIH07Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgdm9iX2F1ZGlvX2xpc3RbXSA9IHsgQ09ERUNfSURfTVAyLCBDT0RFQ19JRF9BQzMsCi0rICAgICAgQ09ERUNfSURfRFRTLCBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gdm9iX3ZpZGVvX2xpc3Q7Ci0rICAgICphdWRpb19jb2RlY19saXN0ID0gdm9iX2F1ZGlvX2xpc3Q7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiZmx2IikpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBmbHZfdmlkZW9fbGlzdFtdID0geyBDT0RFQ19JRF9GTFYxLCBDT0RFQ19JRF9OT05FIH07Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgZmx2X2F1ZGlvX2xpc3RbXSA9IHsgQ09ERUNfSURfTVAzLCBDT0RFQ19JRF9OT05FIH07Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gZmx2X3ZpZGVvX2xpc3Q7Ci0rICAgICphdWRpb19jb2RlY19saXN0ID0gZmx2X2F1ZGlvX2xpc3Q7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiYXNmIikpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBhc2ZfdmlkZW9fbGlzdFtdID0KLSsgICAgICAgIHsgQ09ERUNfSURfV01WMSwgQ09ERUNfSURfV01WMiwgQ09ERUNfSURfTVNNUEVHNFYzLCBDT0RFQ19JRF9OT05FIH07Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgYXNmX2F1ZGlvX2xpc3RbXSA9Ci0rICAgICAgICB7IENPREVDX0lEX1dNQVYxLCBDT0RFQ19JRF9XTUFWMiwgQ09ERUNfSURfTVAzLCBDT0RFQ19JRF9OT05FIH07Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gYXNmX3ZpZGVvX2xpc3Q7Ci0rICAgICphdWRpb19jb2RlY19saXN0ID0gYXNmX2F1ZGlvX2xpc3Q7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiZHYiKSkgewotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIGR2X3ZpZGVvX2xpc3RbXSA9IHsgQ09ERUNfSURfRFZWSURFTywgQ09ERUNfSURfTk9ORSB9OwotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIGR2X2F1ZGlvX2xpc3RbXSA9IHsgQ09ERUNfSURfUENNX1MxNkxFLCBDT0RFQ19JRF9OT05FIH07Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gZHZfdmlkZW9fbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBkdl9hdWRpb19saXN0OwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1vdiIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgbW92X3ZpZGVvX2xpc3RbXSA9IHsKLSsgICAgICBDT0RFQ19JRF9TVlExLCBDT0RFQ19JRF9TVlEzLCBDT0RFQ19JRF9NUEVHNCwKLSsgICAgICBDT0RFQ19JRF9IMjYzLCBDT0RFQ19JRF9IMjYzUCwKLSsgICAgICBDT0RFQ19JRF9IMjY0LCBDT0RFQ19JRF9EVlZJREVPLAotKyAgICAgIENPREVDX0lEX01KUEVHLAotKyAgICAgIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCBtb3ZfYXVkaW9fbGlzdFtdID0gewotKyAgICAgIENPREVDX0lEX1BDTV9NVUxBVywgQ09ERUNfSURfUENNX0FMQVcsIENPREVDX0lEX0FEUENNX0lNQV9RVCwKLSsgICAgICBDT0RFQ19JRF9NQUNFMywgQ09ERUNfSURfTUFDRTYsIENPREVDX0lEX0FBQywKLSsgICAgICBDT0RFQ19JRF9BTVJfTkIsIENPREVDX0lEX0FNUl9XQiwKLSsgICAgICBDT0RFQ19JRF9QQ01fUzE2QkUsIENPREVDX0lEX1BDTV9TMTZMRSwKLSsgICAgICBDT0RFQ19JRF9NUDMsIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBtb3ZfdmlkZW9fbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBtb3ZfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoKCFzdHJjbXAgKGZvcm1hdF9uYW1lLCAiM2dwIikgfHwgIXN0cmNtcCAoZm9ybWF0X25hbWUsICIzZzIiKSkpIHsKLSsgICAgc3RhdGljIGVudW0gQ29kZWNJRCB0Z3BfdmlkZW9fbGlzdFtdID0gewotKyAgICAgIENPREVDX0lEX01QRUc0LCBDT0RFQ19JRF9IMjYzLCBDT0RFQ19JRF9IMjYzUCwgQ09ERUNfSURfSDI2NCwKLSsgICAgICBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgdGdwX2F1ZGlvX2xpc3RbXSA9IHsKLSsgICAgICBDT0RFQ19JRF9BTVJfTkIsIENPREVDX0lEX0FNUl9XQiwKLSsgICAgICBDT0RFQ19JRF9BQUMsCi0rICAgICAgQ09ERUNfSURfTk9ORQotKyAgICB9OwotKwotKyAgICAqdmlkZW9fY29kZWNfbGlzdCA9IHRncF92aWRlb19saXN0OwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IHRncF9hdWRpb19saXN0OwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgIm1tZiIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgbW1mX2F1ZGlvX2xpc3RbXSA9IHsKLSsgICAgICBDT0RFQ19JRF9BRFBDTV9ZQU1BSEEsIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBOVUxMOwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IG1tZl9hdWRpb19saXN0OwotKyAgfSBlbHNlIGlmICghc3RyY21wIChmb3JtYXRfbmFtZSwgImFtciIpKSB7Ci0rICAgIHN0YXRpYyBlbnVtIENvZGVjSUQgYW1yX2F1ZGlvX2xpc3RbXSA9IHsKLSsgICAgICBDT0RFQ19JRF9BTVJfTkIsIENPREVDX0lEX0FNUl9XQiwKLSsgICAgICBDT0RFQ19JRF9OT05FCi0rICAgIH07Ci0rICAgICp2aWRlb19jb2RlY19saXN0ID0gTlVMTDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBhbXJfYXVkaW9fbGlzdDsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAoZm9ybWF0X25hbWUsICJnaWYiKSkgewotKyAgICBzdGF0aWMgZW51bSBDb2RlY0lEIGdpZl9pbWFnZV9saXN0W10gPSB7Ci0rICAgICAgQ09ERUNfSURfUkFXVklERU8sIENPREVDX0lEX05PTkUKLSsgICAgfTsKLSsgICAgKnZpZGVvX2NvZGVjX2xpc3QgPSBnaWZfaW1hZ2VfbGlzdDsKLSsgICAgKmF1ZGlvX2NvZGVjX2xpc3QgPSBOVUxMOwotKyAgfSBlbHNlIGlmICgocGx1Z2luLT5hdWRpb19jb2RlYyAhPSBDT0RFQ19JRF9OT05FKSB8fAotKyAgICAgIChwbHVnaW4tPnZpZGVvX2NvZGVjICE9IENPREVDX0lEX05PTkUpKSB7Ci0rICAgIHRtcF92bGlzdFswXSA9IHBsdWdpbi0+dmlkZW9fY29kZWM7Ci0rICAgIHRtcF9hbGlzdFswXSA9IHBsdWdpbi0+YXVkaW9fY29kZWM7Ci0rCi0rICAgICp2aWRlb19jb2RlY19saXN0ID0gdG1wX3ZsaXN0OwotKyAgICAqYXVkaW9fY29kZWNfbGlzdCA9IHRtcF9hbGlzdDsKLSsgIH0gZWxzZSB7Ci0rICAgIEdTVF9MT0cgKCJGb3JtYXQgJXMgbm90IGZvdW5kIiwgZm9ybWF0X25hbWUpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rLyogQ29udmVydCBhIEdzdENhcHMgdG8gYSBGRk1QRUcgY29kZWMgSUQuIFNpemUgZXQgYWxsCi0rICogYXJlIG9taXR0ZWQsIHRoYXQgY2FuIGJlIHF1ZXJpZWQgYnkgdGhlIHVzZXIgaXRzZWxmLAotKyAqIHdlJ3JlIG5vdCBlYXRpbmcgdGhlIEdzdENhcHMgb3IgYW55dGhpbmcKLSsgKiBBIHBvaW50ZXIgdG8gYW4gYWxsb2NhdGVkIGNvbnRleHQgaXMgYWxzbyBuZWVkZWQgZm9yCi0rICogb3B0aW9uYWwgZXh0cmEgaW5mbwotKyAqLwotKwotK2VudW0gQ29kZWNJRAotK2dzdF9mZm1wZWdfY2Fwc190b19jb2RlY2lkIChjb25zdCBHc3RDYXBzICogY2FwcywgQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0KQotK3sKLSsgIGVudW0gQ29kZWNJRCBpZCA9IENPREVDX0lEX05PTkU7Ci0rICBjb25zdCBnY2hhciAqbWltZXR5cGU7Ci0rICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKLSsgIGdib29sZWFuIHZpZGVvID0gRkFMU0UsIGF1ZGlvID0gRkFMU0U7ICAgICAgICAvKiB3ZSB3YW50IHRvIGJlIHN1cmUhICovCi0rCi0rICBnX3JldHVybl92YWxfaWZfZmFpbCAoY2FwcyAhPSBOVUxMLCBDT0RFQ19JRF9OT05FKTsKLSsgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnc3RfY2Fwc19nZXRfc2l6ZSAoY2FwcykgPT0gMSwgQ09ERUNfSURfTk9ORSk7Ci0rICBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSsKLSsgIG1pbWV0eXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoc3RydWN0dXJlKTsKLSsKLSsgIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtcmF3LXJnYiIpIHx8Ci0rICAgICAgIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXJhdy15dXYiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1JBV1ZJREVPOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1yYXctaW50IikpIHsKLSsgICAgZ2ludCBkZXB0aCwgd2lkdGgsIGVuZGlhbm5lc3M7Ci0rICAgIGdib29sZWFuIHNpZ25lZG5lc3M7Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImVuZGlhbm5lc3MiLCAmZW5kaWFubmVzcykgJiYKLSsgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHN0cnVjdHVyZSwgInNpZ25lZCIsICZzaWduZWRuZXNzKSAmJgotKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgJiYKLSsgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiZGVwdGgiLCAmZGVwdGgpICYmIGRlcHRoID09IHdpZHRoKSB7Ci0rICAgICAgc3dpdGNoIChkZXB0aCkgewotKyAgICAgICAgY2FzZSA4OgotKyAgICAgICAgICBpZiAoc2lnbmVkbmVzcykgewotKyAgICAgICAgICAgIGlkID0gQ09ERUNfSURfUENNX1M4OwotKyAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGlkID0gQ09ERUNfSURfUENNX1U4OwotKyAgICAgICAgICB9Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSAxNjoKLSsgICAgICAgICAgc3dpdGNoIChlbmRpYW5uZXNzKSB7Ci0rICAgICAgICAgICAgY2FzZSBHX0JJR19FTkRJQU46Ci0rICAgICAgICAgICAgICBpZiAoc2lnbmVkbmVzcykgewotKyAgICAgICAgICAgICAgICBpZCA9IENPREVDX0lEX1BDTV9TMTZCRTsKLSsgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIGlkID0gQ09ERUNfSURfUENNX1UxNkJFOwotKyAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgY2FzZSBHX0xJVFRMRV9FTkRJQU46Ci0rICAgICAgICAgICAgICBpZiAoc2lnbmVkbmVzcykgewotKyAgICAgICAgICAgICAgICBpZCA9IENPREVDX0lEX1BDTV9TMTZMRTsKLSsgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIGlkID0gQ09ERUNfSURfUENNX1UxNkxFOwotKyAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgIH0KLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKQotKyAgICAgICAgYXVkaW8gPSBUUlVFOwotKyAgICB9Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1tdWxhdyIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfUENNX01VTEFXOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1hbGF3IikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9QQ01fQUxBVzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtZHYiKSkgewotKyAgICBnYm9vbGVhbiBzeXNfc3RybTsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHN0cnVjdHVyZSwgInN5c3RlbXN0cmVhbSIsICZzeXNfc3RybSkgJiYKLSsgICAgICAgICFzeXNfc3RybSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfRFZWSURFTzsKLSsgICAgICB2aWRlbyA9IFRSVUU7Ci0rICAgIH0KLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LWR2IikpIHsgICAgICAgIC8qID8/PyAqLwotKyAgICBpZCA9IENPREVDX0lEX0RWQVVESU87Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LWgyNjMiKSkgewotKyAgICBjb25zdCBnY2hhciAqaDI2M3ZlcnNpb24gPQotKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzdHJ1Y3R1cmUsICJoMjYzdmVyc2lvbiIpOwotKyAgICBpZiAoaDI2M3ZlcnNpb24gJiYgIXN0cmNtcCAoaDI2M3ZlcnNpb24sICJoMjYzcCIpKQotKyAgICAgIGlkID0gQ09ERUNfSURfSDI2M1A7Ci0rICAgIGVsc2UKLSsgICAgICBpZCA9IENPREVDX0lEX0gyNjM7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LWludGVsLWgyNjMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0gyNjNJOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1oMjYxIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9IMjYxOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8vbXBlZyIpKSB7Ci0rICAgIGdib29sZWFuIHN5c19zdHJtOwotKyAgICBnaW50IG1wZWd2ZXJzaW9uOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfYm9vbGVhbiAoc3RydWN0dXJlLCAic3lzdGVtc3RyZWFtIiwgJnN5c19zdHJtKSAmJgotKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJtcGVndmVyc2lvbiIsICZtcGVndmVyc2lvbikgJiYKLSsgICAgICAgICFzeXNfc3RybSkgewotKyAgICAgIHN3aXRjaCAobXBlZ3ZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgMToKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9NUEVHMVZJREVPOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMjoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9NUEVHMlZJREVPOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgNDoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9NUEVHNDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rICAgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKQotKyAgICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJpbWFnZS9qcGVnIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9NSlBFRzsgICAgICAgIC8qIEEuLi4gQi4uLiAqLwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1qcGVnLWIiKSkgewotKyAgICBpZCA9IENPREVDX0lEX01KUEVHQjsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtd212IikpIHsKLSsgICAgZ2ludCB3bXZ2ZXJzaW9uID0gMDsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid212dmVyc2lvbiIsICZ3bXZ2ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAod212dmVyc2lvbikgewotKyAgICAgICAgY2FzZSAxOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX1dNVjE7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSAyOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX1dNVjI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSAzOgotKyAgICAgICAgewotKyAgICAgICAgICBndWludDMyIGZvdXJjYzsKLSsKLSsgICAgICAgICAgLyogV01WMyB1bmxlc3MgdGhlIGZvdXJjYyBleGlzdHMgYW5kIHNheXMgb3RoZXJ3aXNlICovCi0rICAgICAgICAgIGlkID0gQ09ERUNfSURfV01WMzsKLSsKLSsgICAgICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZvdXJjYyAoc3RydWN0dXJlLCAiZm9ybWF0IiwgJmZvdXJjYykpIHsKLSsgICAgICAgICAgICBpZiAoKGZvdXJjYyA9PSBHU1RfTUFLRV9GT1VSQ0MgKCdXJywgJ1YnLCAnQycsICcxJykpIHx8Ci0rICAgICAgICAgICAgICAgIChmb3VyY2MgPT0gR1NUX01BS0VfRk9VUkNDICgnVycsICdNJywgJ1YnLCAnQScpKSkgewotKyAgICAgICAgICAgICAgaWQgPSBDT0RFQ19JRF9WQzE7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKyAgICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkKLSsgICAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC12b3JiaXMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1ZPUkJJUzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtcWRtMiIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfUURNMjsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL21wZWciKSkgewotKyAgICBnaW50IGxheWVyID0gMDsKLSsgICAgZ2ludCBtcGVndmVyc2lvbiA9IDA7Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIm1wZWd2ZXJzaW9uIiwgJm1wZWd2ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAobXBlZ3ZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgMjogICAgICAgICAgICAgICAgLyogZmZtcGVnIHVzZXMgZmFhZCBmb3IgYm90aC4uLiAqLwotKyAgICAgICAgY2FzZSA0OgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX0FBQzsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDE6Ci0rICAgICAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImxheWVyIiwgJmxheWVyKSkgewotKyAgICAgICAgICAgIHN3aXRjaCAobGF5ZXIpIHsKLSsgICAgICAgICAgICAgIGNhc2UgMToKLSsgICAgICAgICAgICAgICAgaWQgPSBDT0RFQ19JRF9NUDE7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgY2FzZSAyOgotKyAgICAgICAgICAgICAgICBpZCA9IENPREVDX0lEX01QMjsKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICBjYXNlIDM6Ci0rICAgICAgICAgICAgICAgIGlkID0gQ09ERUNfSURfTVAzOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgIH0KLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtbXVzZXBhY2siKSkgewotKyAgICBnaW50IHN0cmVhbXZlcnNpb24gPSAtMTsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAic3RyZWFtdmVyc2lvbiIsICZzdHJlYW12ZXJzaW9uKSkgewotKyAgICAgIGlmIChzdHJlYW12ZXJzaW9uID09IDcpCi0rICAgICAgICBpZCA9IENPREVDX0lEX01VU0VQQUNLNzsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBpZCA9IENPREVDX0lEX01VU0VQQUNLNzsKLSsgICAgfQotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtd21hIikpIHsKLSsgICAgZ2ludCB3bWF2ZXJzaW9uID0gMDsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid21hdmVyc2lvbiIsICZ3bWF2ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAod21hdmVyc2lvbikgewotKyAgICAgICAgY2FzZSAxOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX1dNQVYxOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMjoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9XTUFWMjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDM6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfV01BUFJPOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtd21zIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9XTUFWT0lDRTsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtYWMzIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9BQzM7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LWVhYzMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0VBQzM7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LXZuZC5zb255LmF0cmFjMyIpIHx8Ci0rICAgICAgIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby9hdHJhYzMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0FUUkFDMzsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtZHRzIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9EVFM7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhcHBsaWNhdGlvbi94LWFwZSIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfQVBFOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1tc21wZWciKSkgewotKyAgICBnaW50IG1zbXBlZ3ZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJtc21wZWd2ZXJzaW9uIiwgJm1zbXBlZ3ZlcnNpb24pKSB7Ci0rICAgICAgc3dpdGNoIChtc21wZWd2ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDQxOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX01TTVBFRzRWMTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDQyOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX01TTVBFRzRWMjsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDQzOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX01TTVBFRzRWMzsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rICAgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKQotKyAgICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXN2cSIpKSB7Ci0rICAgIGdpbnQgc3ZxdmVyc2lvbiA9IDA7Ci0rCi0rICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgInN2cXZlcnNpb24iLCAmc3ZxdmVyc2lvbikpIHsKLSsgICAgICBzd2l0Y2ggKHN2cXZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgMToKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9TVlExOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9TVlEzOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtaHVmZnl1diIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfSFVGRllVVjsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtbWFjZSIpKSB7Ci0rICAgIGdpbnQgbWFjZXZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJtYWNldmVyc2lvbiIsICZtYWNldmVyc2lvbikpIHsKLSsgICAgICBzd2l0Y2ggKG1hY2V2ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDM6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfTUFDRTM7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSA2OgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX01BQ0U2OwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtdGhlb3JhIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9USEVPUkE7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXZwMyIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfVlAzOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC12cDUiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1ZQNTsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtdnA2IikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9WUDY7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXZwNi1mbGFzaCIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfVlA2RjsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtdnA2LWFscGhhIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9WUDZBOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC12cDgiKSkgewotKyAgICBpZCA9IENPREVDX0lEX1ZQODsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtZmxhc2gtc2NyZWVuIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9GTEFTSFNWOwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC1pbmRlbyIpKSB7Ci0rICAgIGdpbnQgaW5kZW92ZXJzaW9uID0gMDsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiaW5kZW92ZXJzaW9uIiwgJmluZGVvdmVyc2lvbikpIHsKLSsgICAgICBzd2l0Y2ggKGluZGVvdmVyc2lvbikgewotKyAgICAgICAgY2FzZSA1OgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX0lOREVPNTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDM6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfSU5ERU8zOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgMjoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9JTkRFTzI7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkKLSsgICAgICAgIHZpZGVvID0gVFJVRTsKLSsgICAgfQotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtZGl2eCIpKSB7Ci0rICAgIGdpbnQgZGl2eHZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJkaXZ4dmVyc2lvbiIsICZkaXZ4dmVyc2lvbikpIHsKLSsgICAgICBzd2l0Y2ggKGRpdnh2ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDM6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfTVNNUEVHNFYzOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgNDoKLSsgICAgICAgIGNhc2UgNToKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9NUEVHNDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rICAgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKQotKyAgICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LTNpdngiKSkgewotKyAgICBpZCA9IENPREVDX0lEX01QRUc0OwotKyAgICB2aWRlbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAidmlkZW8veC14dmlkIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9NUEVHNDsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtZmZ2IikpIHsKLSsgICAgZ2ludCBmZnZ2ZXJzaW9uID0gMDsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiZmZ2dmVyc2lvbiIsICZmZnZ2ZXJzaW9uKSAmJgotKyAgICAgICAgZmZ2dmVyc2lvbiA9PSAxKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9GRlYxOwotKyAgICAgIHZpZGVvID0gVFJVRTsKLSsgICAgfQotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtYWRwY20iKSkgewotKyAgICBjb25zdCBnY2hhciAqbGF5b3V0OwotKwotKyAgICBsYXlvdXQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0cnVjdHVyZSwgImxheW91dCIpOwotKyAgICBpZiAobGF5b3V0ID09IE5VTEwpIHsKLSsgICAgICAvKiBicmVhayAqLwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgInF1aWNrdGltZSIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9JTUFfUVQ7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAibWljcm9zb2Z0IikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX01TOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgImR2aSIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9JTUFfV0FWOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgIjR4bSIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV80WE07Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAic21qcGVnIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0lNQV9TTUpQRUc7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiZGszIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0lNQV9ESzM7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiZGs0IikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX0lNQV9ESzQ7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAid2VzdHdvb2QiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fSU1BX1dTOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgImlzcyIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9JTUFfSVNTOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgInhhIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX1hBOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgImFkeCIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9BRFg7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiZWEiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fRUE7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAiZzcyNiIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9HNzI2OwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgImc3MjEiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fRzcyNjsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJjdCIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9DVDsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJzd2YiKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfQURQQ01fU1dGOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgInlhbWFoYSIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9BRFBDTV9ZQU1BSEE7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAic2Jwcm8yIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX1NCUFJPXzI7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAic2Jwcm8zIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX1NCUFJPXzM7Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAic2Jwcm80IikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX0FEUENNX1NCUFJPXzQ7Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtNHhtIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF80WE07Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LWRwY20iKSkgewotKyAgICBjb25zdCBnY2hhciAqbGF5b3V0OwotKwotKyAgICBsYXlvdXQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0cnVjdHVyZSwgImxheW91dCIpOwotKyAgICBpZiAoIWxheW91dCkgewotKyAgICAgIC8qIC4uICovCi0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAicm9xIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX1JPUV9EUENNOwotKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGxheW91dCwgImludGVycGxheSIpKSB7Ci0rICAgICAgaWQgPSBDT0RFQ19JRF9JTlRFUlBMQVlfRFBDTTsKLSsgICAgfSBlbHNlIGlmICghc3RyY21wIChsYXlvdXQsICJ4YW4iKSkgewotKyAgICAgIGlkID0gQ09ERUNfSURfWEFOX0RQQ007Ci0rICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAobGF5b3V0LCAic29sIikpIHsKLSsgICAgICBpZCA9IENPREVDX0lEX1NPTF9EUENNOwotKyAgICB9Ci0rICAgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKQotKyAgICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LWZsYWMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0ZMQUM7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LXNob3J0ZW4iKSkgewotKyAgICBpZCA9IENPREVDX0lEX1NIT1JURU47Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LWFsYWMiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0FMQUM7Ci0rICAgIGF1ZGlvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LWNpbmVwYWsiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0NJTkVQQUs7Ci0rICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXBuLXJlYWx2aWRlbyIpKSB7Ci0rICAgIGdpbnQgcm12ZXJzaW9uOwotKwotKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJybXZlcnNpb24iLCAmcm12ZXJzaW9uKSkgewotKyAgICAgIHN3aXRjaCAocm12ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDE6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfUlYxMDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDI6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfUlYyMDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDM6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfUlYzMDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDQ6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfUlY0MDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rICAgIGlmIChpZCAhPSBDT0RFQ19JRF9OT05FKQotKyAgICAgIHZpZGVvID0gVFJVRTsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby94LXNpcHJvIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9TSVBSOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1wbi1yZWFsYXVkaW8iKSkgewotKyAgICBnaW50IHJhdmVyc2lvbjsKLSsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAicmF2ZXJzaW9uIiwgJnJhdmVyc2lvbikpIHsKLSsgICAgICBzd2l0Y2ggKHJhdmVyc2lvbikgewotKyAgICAgICAgY2FzZSAxOgotKyAgICAgICAgICBpZCA9IENPREVDX0lEX1JBXzE0NDsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIDI6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfUkFfMjg4OwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgODoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9DT09LOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGlkICE9IENPREVDX0lEX05PTkUpCi0rICAgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtcmxlIikpIHsKLSsgICAgY29uc3QgZ2NoYXIgKmxheW91dDsKLSsKLSsgICAgaWYgKChsYXlvdXQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0cnVjdHVyZSwgImxheW91dCIpKSkgewotKyAgICAgIGlmICghc3RyY21wIChsYXlvdXQsICJtaWNyb3NvZnQiKSkgewotKyAgICAgICAgaWQgPSBDT0RFQ19JRF9NU1JMRTsKLSsgICAgICAgIHZpZGVvID0gVFJVRTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJ2aWRlby94LXhhbiIpKSB7Ci0rICAgIGdpbnQgd2N2ZXJzaW9uID0gMDsKLSsKLSsgICAgaWYgKChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndjdmVyc2lvbiIsICZ3Y3ZlcnNpb24pKSkgewotKyAgICAgIHN3aXRjaCAod2N2ZXJzaW9uKSB7Ci0rICAgICAgICBjYXNlIDM6Ci0rICAgICAgICAgIGlkID0gQ09ERUNfSURfWEFOX1dDMzsKLSsgICAgICAgICAgdmlkZW8gPSBUUlVFOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgNDoKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9YQU5fV0M0OwotKyAgICAgICAgICB2aWRlbyA9IFRSVUU7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8vQU1SIikpIHsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgICBpZCA9IENPREVDX0lEX0FNUl9OQjsKLSsgIH0gZWxzZSBpZiAoIXN0cmNtcCAobWltZXR5cGUsICJhdWRpby9BTVItV0IiKSkgewotKyAgICBpZCA9IENPREVDX0lEX0FNUl9XQjsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgImF1ZGlvL3FjZWxwIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9RQ0VMUDsKLSsgICAgYXVkaW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtaDI2NCIpKSB7Ci0rICAgIGlkID0gQ09ERUNfSURfSDI2NDsKLSsgICAgdmlkZW8gPSBUUlVFOwotKyAgfSBlbHNlIGlmICghc3RyY21wIChtaW1ldHlwZSwgInZpZGVvL3gtZmxhc2gtdmlkZW8iKSkgewotKyAgICBnaW50IGZsdnZlcnNpb24gPSAwOwotKwotKyAgICBpZiAoKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiZmx2dmVyc2lvbiIsICZmbHZ2ZXJzaW9uKSkpIHsKLSsgICAgICBzd2l0Y2ggKGZsdnZlcnNpb24pIHsKLSsgICAgICAgIGNhc2UgMToKLSsgICAgICAgICAgaWQgPSBDT0RFQ19JRF9GTFYxOwotKyAgICAgICAgICB2aWRlbyA9IFRSVUU7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rCi0rICB9IGVsc2UgaWYgKCFzdHJjbXAgKG1pbWV0eXBlLCAiYXVkaW8veC1uZWxseW1vc2VyIikpIHsKLSsgICAgaWQgPSBDT0RFQ19JRF9ORUxMWU1PU0VSOwotKyAgICBhdWRpbyA9IFRSVUU7Ci0rICB9IGVsc2UgaWYgKCFzdHJuY21wIChtaW1ldHlwZSwgImF1ZGlvL3gtZ3N0X2ZmLSIsIDE1KSkgewotKyAgICBnY2hhciBleHRbMTZdOwotKyAgICBBVkNvZGVjICpjb2RlYzsKLSsKLSsgICAgaWYgKHN0cmxlbiAobWltZXR5cGUpIDw9IDMwICYmCi0rICAgICAgICBzc2NhbmYgKG1pbWV0eXBlLCAiYXVkaW8veC1nc3RfZmYtJXMiLCBleHQpID09IDEpIHsKLSsgICAgICBpZiAoKGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXJfYnlfbmFtZSAoZXh0KSkgfHwKLSsgICAgICAgICAgKGNvZGVjID0gYXZjb2RlY19maW5kX2VuY29kZXJfYnlfbmFtZSAoZXh0KSkpIHsKLSsgICAgICAgIGlkID0gY29kZWMtPmlkOwotKyAgICAgICAgYXVkaW8gPSBUUlVFOwotKyAgICAgIH0KLSsgICAgfQotKyAgfSBlbHNlIGlmICghc3RybmNtcCAobWltZXR5cGUsICJ2aWRlby94LWdzdF9mZi0iLCAxNSkpIHsKLSsgICAgZ2NoYXIgZXh0WzE2XTsKLSsgICAgQVZDb2RlYyAqY29kZWM7Ci0rCi0rICAgIGlmIChzdHJsZW4gKG1pbWV0eXBlKSA8PSAzMCAmJgotKyAgICAgICAgc3NjYW5mIChtaW1ldHlwZSwgInZpZGVvL3gtZ3N0X2ZmLSVzIiwgZXh0KSA9PSAxKSB7Ci0rICAgICAgaWYgKChjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyX2J5X25hbWUgKGV4dCkpIHx8Ci0rICAgICAgICAgIChjb2RlYyA9IGF2Y29kZWNfZmluZF9lbmNvZGVyX2J5X25hbWUgKGV4dCkpKSB7Ci0rICAgICAgICBpZCA9IGNvZGVjLT5pZDsKLSsgICAgICAgIHZpZGVvID0gVFJVRTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGlmIChjb250ZXh0ICE9IE5VTEwpIHsKLSsgICAgaWYgKHZpZGVvID09IFRSVUUpIHsKLSsgICAgICBjb250ZXh0LT5jb2RlY190eXBlID0gQVZNRURJQV9UWVBFX1ZJREVPOwotKyAgICB9IGVsc2UgaWYgKGF1ZGlvID09IFRSVUUpIHsKLSsgICAgICBjb250ZXh0LT5jb2RlY190eXBlID0gQVZNRURJQV9UWVBFX0FVRElPOwotKyAgICB9IGVsc2UgewotKyAgICAgIGNvbnRleHQtPmNvZGVjX3R5cGUgPSBBVk1FRElBX1RZUEVfVU5LTk9XTjsKLSsgICAgfQotKyAgICBjb250ZXh0LT5jb2RlY19pZCA9IGlkOwotKyAgICBnc3RfZmZtcGVnX2NhcHNfd2l0aF9jb2RlY2lkIChpZCwgY29udGV4dC0+Y29kZWNfdHlwZSwgY2FwcywgY29udGV4dCk7Ci0rICB9Ci0rCi0rICBpZiAoaWQgIT0gQ09ERUNfSURfTk9ORSkgewotKyAgICBHU1RfREVCVUcgKCJUaGUgaWQ9JWQgYmVsb25ncyB0byB0aGUgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgaWQsIGNhcHMpOwotKyAgfSBlbHNlIHsKLSsgICAgR1NUX1dBUk5JTkcgKCJDb3VsZG4ndCBmaWd1cmUgb3V0IHRoZSBpZCBmb3IgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0rICB9Ci0rCi0rICByZXR1cm4gaWQ7Ci0rfQotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYy5yZWogZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYy5yZWoKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2NvZGVjbWFwLmMucmVqCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYy5yZWoJMjAxNC0wOC0wOCAxNTozMTowNi4wNTU4NjgyNDYgKzAyMDAKLUBAIC0wLDAgKzEsMTIgQEAKLSstLS0gZXh0L2ZmbXBlZy9nc3RmZm1wZWdjb2RlY21hcC5jCi0rKysrIGV4dC9mZm1wZWcvZ3N0ZmZtcGVnY29kZWNtYXAuYwotK0BAIC0xODg0LDkgKzE4NDIsNiBAQAotKyAgICAgICAgICAgICBnc3RfZmZfdmlkX2NhcHNfbmV3IChjb250ZXh0LCBjb2RlY19pZCwgZW5jb2RlLCAidmlkZW8veC1yYXctcmdiIiwKLSsgICAgICAgICAgICAgImJwcCIsIEdfVFlQRV9JTlQsIGJwcCwgImRlcHRoIiwgR19UWVBFX0lOVCwgZGVwdGgsICJlbmRpYW5uZXNzIiwKLSsgICAgICAgICAgICAgR19UWVBFX0lOVCwgZW5kaWFubmVzcywgTlVMTCk7Ci0rLSAgICAgICAgaWYgKGNhcHMgJiYgY29udGV4dCkgewotKy0gICAgICAgICAgZ3N0X2ZmbXBlZ19zZXRfcGFsZXR0ZSAoY2FwcywgY29udGV4dCk7Ci0rLSAgICAgICAgfQotKyAgICAgICB9Ci0rICAgICB9IGVsc2UgaWYgKGZtdCkgewotKyAgICAgICBjYXBzID0gZ3N0X2ZmX3ZpZF9jYXBzX25ldyAoY29udGV4dCwgY29kZWNfaWQsIGVuY29kZSwgInZpZGVvL3gtcmF3LXl1diIsCi1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVjLmMJMjAxNC0wOC0wOCAxNDo0NjozMS40NjI3NzIzNTEgKzAyMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYwkyMDE0LTA4LTA4IDE1OjMyOjE4LjYwODg3MDg0NyArMDIwMAotQEAgLTg4LDcgKzg4LDYgQEAKLSAgICAgICBnaW50IGRlcHRoOwotICAgICB9IGF1ZGlvOwotICAgfSBmb3JtYXQ7Ci0tICBnYm9vbGVhbiB3YWl0aW5nX2Zvcl9rZXk7Ci0gICBnYm9vbGVhbiBkaXNjb250OwotICAgZ2Jvb2xlYW4gY2xlYXJfdHM7Ci0gCi1AQCAtNDM4LDcgKzQzNyw2IEBACi0gICBmZm1wZWdkZWMtPnBjYWNoZSA9IE5VTEw7Ci0gICBmZm1wZWdkZWMtPnBhciA9IE5VTEw7Ci0gICBmZm1wZWdkZWMtPm9wZW5lZCA9IEZBTFNFOwotLSAgZmZtcGVnZGVjLT53YWl0aW5nX2Zvcl9rZXkgPSBUUlVFOwotICAgZmZtcGVnZGVjLT5za2lwX2ZyYW1lID0gZmZtcGVnZGVjLT5sb3dyZXMgPSAwOwotICAgZmZtcGVnZGVjLT5kaXJlY3RfcmVuZGVyaW5nID0gREVGQVVMVF9ESVJFQ1RfUkVOREVSSU5HOwotICAgZmZtcGVnZGVjLT5kb19wYWRkaW5nID0gREVGQVVMVF9ET19QQURESU5HOwotQEAgLTYwOCwxMSArNjA2LDYgQEAKLSAgICAgZ3N0X2ZmbXBlZ19hdmNvZGVjX2Nsb3NlIChmZm1wZWdkZWMtPmNvbnRleHQpOwotICAgZmZtcGVnZGVjLT5vcGVuZWQgPSBGQUxTRTsKLSAKLS0gIGlmIChmZm1wZWdkZWMtPmNvbnRleHQtPnBhbGN0cmwpIHsKLS0gICAgYXZfZnJlZSAoZmZtcGVnZGVjLT5jb250ZXh0LT5wYWxjdHJsKTsKLS0gICAgZmZtcGVnZGVjLT5jb250ZXh0LT5wYWxjdHJsID0gTlVMTDsKLS0gIH0KLS0KLSAgIGlmIChmZm1wZWdkZWMtPmNvbnRleHQtPmV4dHJhZGF0YSkgewotICAgICBhdl9mcmVlIChmZm1wZWdkZWMtPmNvbnRleHQtPmV4dHJhZGF0YSk7Ci0gICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXh0cmFkYXRhID0gTlVMTDsKLUBAIC04NjQsNyArODU3LDcgQEAKLSAKLSAgIC8qIHdvcmthcm91bmQgZW5jb2RlciBidWdzICovCi0gICBmZm1wZWdkZWMtPmNvbnRleHQtPndvcmthcm91bmRfYnVncyB8PSBGRl9CVUdfQVVUT0RFVEVDVDsKLS0gIGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXJyb3JfcmVjb2duaXRpb24gPSAxOwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5lcnJfcmVjb2duaXRpb24gPSAxOwotIAotICAgLyogZm9yIHNsb3cgY3B1cyAqLwotICAgZmZtcGVnZGVjLT5jb250ZXh0LT5sb3dyZXMgPSBmZm1wZWdkZWMtPmxvd3JlczsKLUBAIC05NDQsNyArOTM3LDcgQEAKLSAgIGZzaXplID0gZ3N0X2ZmbXBlZ19hdnBpY3R1cmVfZ2V0X3NpemUgKGZmbXBlZ2RlYy0+Y29udGV4dC0+cGl4X2ZtdCwKLSAgICAgICB3aWR0aCwgaGVpZ2h0KTsKLSAKLS0gIGlmICghZmZtcGVnZGVjLT5jb250ZXh0LT5wYWxjdHJsICYmIGZmbXBlZ2RlYy0+Y2FuX2FsbG9jYXRlX2FsaWduZWQpIHsKLSsgIGlmIChmZm1wZWdkZWMtPmNhbl9hbGxvY2F0ZV9hbGlnbmVkKSB7Ci0gICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJjYWxsaW5nIHBhZF9hbGxvYyIpOwotICAgICAvKiBubyBwYWxsZXRlLCB3ZSBjYW4gdXNlIHRoZSBidWZmZXIgc2l6ZSB0byBhbGxvYyAqLwotICAgICByZXQgPSBnc3RfcGFkX2FsbG9jX2J1ZmZlcl9hbmRfc2V0X2NhcHMgKGZmbXBlZ2RlYy0+c3JjcGFkLAotQEAgLTEwODMsNyArMTA3Niw2IEBACi0gICAvKiB0ZWxsIGZmbXBlZyB3ZSBvd24gdGhpcyBidWZmZXIsIHRyYW5mZXIgdGhlIHJlZiB3ZSBoYXZlIG9uIHRoZSBidWZmZXIgdG8KLSAgICAqIHRoZSBvcGFxdWUgZGF0YS4gKi8KLSAgIHBpY3R1cmUtPnR5cGUgPSBGRl9CVUZGRVJfVFlQRV9VU0VSOwotLSAgcGljdHVyZS0+YWdlID0gMjU2ICogMjU2ICogMjU2ICogNjQ7Ci0gICBwaWN0dXJlLT5vcGFxdWUgPSBidWY7Ci0gCi0gI2lmZGVmIEVYVFJBX1JFRgotQEAgLTE0MTQsMTAgKzE0MDYsNiBAQAotICAgfSBlbHNlIHsKLSAgICAgaWYgKGRpZmYgPj0gMCkgewotICAgICAgIC8qIHdlJ3JlIHRvbyBzbG93LCB0cnkgdG8gc3BlZWQgdXAgKi8KLS0gICAgICBpZiAoZmZtcGVnZGVjLT53YWl0aW5nX2Zvcl9rZXkpIHsKLS0gICAgICAgIC8qIHdlIHdlcmUgd2FpdGluZyBmb3IgYSBrZXlmcmFtZSwgdGhhdCdzIG9rICovCi0tICAgICAgICBnb3RvIHNraXBwaW5nOwotLSAgICAgIH0KLSAgICAgICAvKiBzd2l0Y2ggdG8gc2tpcF9mcmFtZSBtb2RlICovCi0gICAgICAgZ290byBza2lwX2ZyYW1lOwotICAgICB9Ci1AQCAtMTQyNywxMSArMTQxNSw2IEBACi0gICBmZm1wZWdkZWMtPnByb2Nlc3NlZCsrOwotICAgcmV0dXJuIFRSVUU7Ci0gCi0tc2tpcHBpbmc6Ci0tICB7Ci0tICAgIHJlcyA9IEZBTFNFOwotLSAgICBnb3RvIGRyb3BfcW9zOwotLSAgfQotIG5vcm1hbF9tb2RlOgotICAgewotICAgICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lICE9IEFWRElTQ0FSRF9ERUZBVUxUKSB7Ci1AQCAtMTUyOCw0MyArMTUxMSw2IEBACi0gfQotIAotIAotLS8qIGZpZ3VyZSBvdXQgaWYgdGhlIGN1cnJlbnQgcGljdHVyZSBpcyBhIGtleWZyYW1lLCByZXR1cm4gVFJVRSBpZiB0aGF0IGlzCi0tICogdGhlIGNhc2UuICovCi0tc3RhdGljIGdib29sZWFuCi0tY2hlY2tfa2V5ZnJhbWUgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYykKLS17Ci0tICBHc3RGRk1wZWdEZWNDbGFzcyAqb2NsYXNzOwotLSAgZ2Jvb2xlYW4gaXNfaXR5cGUgPSBGQUxTRTsKLS0gIGdib29sZWFuIGlzX3JlZmVyZW5jZSA9IEZBTFNFOwotLSAgZ2Jvb2xlYW4gaXNrZXlmcmFtZTsKLS0KLS0gIC8qIGZpZ3VyZSBvdXQgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGtleWZyYW1lICovCi0tICBvY2xhc3MgPSAoR3N0RkZNcGVnRGVjQ2xhc3MgKikgKEdfT0JKRUNUX0dFVF9DTEFTUyAoZmZtcGVnZGVjKSk7Ci0tCi0tICAvKiByZW1lbWJlciB0aGF0IHdlIGhhdmUgQiBmcmFtZXMsIHdlIG5lZWQgdGhpcyBmb3IgdGhlIERUUyAtPiBQVFMgY29udmVyc2lvbgotLSAgICogY29kZSAqLwotLSAgaWYgKCFmZm1wZWdkZWMtPmhhc19iX2ZyYW1lcyAmJiBmZm1wZWdkZWMtPnBpY3R1cmUtPnBpY3RfdHlwZSA9PSBGRl9CX1RZUEUpIHsKLS0gICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAid2UgaGF2ZSBCIGZyYW1lcyIpOwotLSAgICBmZm1wZWdkZWMtPmhhc19iX2ZyYW1lcyA9IFRSVUU7Ci0tICB9Ci0tCi0tICBpc19pdHlwZSA9IChmZm1wZWdkZWMtPnBpY3R1cmUtPnBpY3RfdHlwZSA9PSBGRl9JX1RZUEUpOwotLSAgaXNfcmVmZXJlbmNlID0gKGZmbXBlZ2RlYy0+cGljdHVyZS0+cmVmZXJlbmNlID09IDEpOwotLQotLSAgaXNrZXlmcmFtZSA9IChpc19pdHlwZSB8fCBpc19yZWZlcmVuY2UgfHwgZmZtcGVnZGVjLT5waWN0dXJlLT5rZXlfZnJhbWUpCi0tICAgICAgfHwgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9JTkRFTzMpCi0tICAgICAgfHwgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9NU1pIKQotLSAgICAgIHx8IChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfWkxJQikKLS0gICAgICB8fCAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1ZQMykKLS0gICAgICB8fCAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX0hVRkZZVVYpOwotLQotLSAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywKLS0gICAgICAiY3VycmVudCBwaWN0dXJlOiB0eXBlOiAlZCwgaXNfa2V5ZnJhbWU6JWQsIGlzX2l0eXBlOiVkLCBpc19yZWZlcmVuY2U6JWQiLAotLSAgICAgIGZmbXBlZ2RlYy0+cGljdHVyZS0+cGljdF90eXBlLCBpc2tleWZyYW1lLCBpc19pdHlwZSwgaXNfcmVmZXJlbmNlKTsKLS0KLS0gIHJldHVybiBpc2tleWZyYW1lOwotLX0KLS0KLSAvKiBnZXQgYW4gb3V0YnVmIGJ1ZmZlciB3aXRoIHRoZSBjdXJyZW50IHBpY3R1cmUgKi8KLSBzdGF0aWMgR3N0Rmxvd1JldHVybgotIGdldF9vdXRwdXRfYnVmZmVyIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMsIEdzdEJ1ZmZlciAqKiBvdXRidWYpCi1AQCAtMTY5NCw3ICsxNjQwLDYgQEAKLSB7Ci0gICBnaW50IGxlbiA9IC0xOwotICAgZ2ludCBoYXZlX2RhdGE7Ci0tICBnYm9vbGVhbiBpc2tleWZyYW1lOwotICAgZ2Jvb2xlYW4gbW9kZV9zd2l0Y2g7Ci0gICBnYm9vbGVhbiBkZWNvZGU7Ci0gICBnaW50IHNraXBfZnJhbWUgPSBBVkRJU0NBUkRfREVGQVVMVDsKLUBAIC0xODA5LDcgKzE3NTQsNiBAQAotICAgICBnc3RfZmZtcGVnZGVjX25lZ290aWF0ZSAoZmZtcGVnZGVjLCBUUlVFKTsKLSAgIH0KLSAKLS0KLSAgIC8qIFdoZXRoZXIgYSBmcmFtZSBpcyBpbnRlcmxhY2VkIG9yIG5vdCBpcyB1bmtub3duIGF0IHRoZSB0aW1lIG9mCi0gICAgICBidWZmZXIgYWxsb2NhdGlvbiwgc28gY2FwcyBvbiB0aGUgYnVmZmVyIGluIG9wYXF1ZSB3aWxsIGhhdmUKLSAgICAgIHRoZSBwcmV2aW91cyBmcmFtZSdzIGludGVybGFjZWQgZmxhZyBzZXQuIFNvIGlmIGludGVybGFjZWRuZXNzCi1AQCAtMTgzMSwxMCArMTc3NSw2IEBACi0gICAgIH0KLSAgIH0KLSAKLS0gIC8qIGNoZWNrIGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBrZXlmcmFtZSBoZXJlLCB0aGlzIHdpbGwgYWxzbyBjaGVjayBpZiB3ZQotLSAgICogYXJlIGRlYWxpbmcgd2l0aCBCIGZyYW1lcy4gKi8KLS0gIGlza2V5ZnJhbWUgPSBjaGVja19rZXlmcmFtZSAoZmZtcGVnZGVjKTsKLS0KLSAgIC8qIGNoZWNrIHRoYXQgdGhlIHRpbWVzdGFtcHMgZ28gdXB3YXJkcyAqLwotICAgaWYgKGZmbXBlZ2RlYy0+bGFzdF9vdXQgIT0gLTEgJiYgZmZtcGVnZGVjLT5sYXN0X291dCA+IG91dF9wdHMpIHsKLSAgICAgLyogdGltZXN0YW1wcyBnbyBiYWNrd2FyZHMsIHRoaXMgbWVhbnMgZnJhbWVzIHdlcmUgcmVvcmRlcmVkIGFuZCB3ZSBtdXN0Ci1AQCAtMTg2NSw3ICsxODA1LDcgQEAKLSAgICAqIHRpbWVzdGFtcHMgKi8KLSAgIGlmICghZmZtcGVnZGVjLT5yZW9yZGVyZWRfaW4gJiYgZmZtcGVnZGVjLT5yZW9yZGVyZWRfb3V0KSB7Ci0gICAgIC8qIFBUUyBhbmQgRFRTIGFyZSB0aGUgc2FtZSBmb3Iga2V5ZnJhbWVzICovCi0tICAgIGlmICghaXNrZXlmcmFtZSAmJiBmZm1wZWdkZWMtPm5leHRfb3V0ICE9IC0xKSB7Ci0rICAgIGlmIChmZm1wZWdkZWMtPm5leHRfb3V0ICE9IC0xKSB7Ci0gICAgICAgLyogaW50ZXJwb2xhdGUgYWxsIHRpbWVzdGFtcHMgZXhjZXB0IGZvciBrZXlmcmFtZXMsIEZJWE1FLCB0aGlzIGlzCi0gICAgICAgICogd3Jvbmcgd2hlbiBRb1MgaXMgYWN0aXZlLiAqLwotICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImludGVycG9sYXRlIHRpbWVzdGFtcHMiKTsKLUBAIC0xODc0LDE2ICsxODE0LDYgQEAKLSAgICAgfQotICAgfQotIAotLSAgLyogd2hlbiB3ZSdyZSB3YWl0aW5nIGZvciBhIGtleWZyYW1lLCBzZWUgaWYgd2UgaGF2ZSBvbmUgb3IgZHJvcCB0aGUgY3VycmVudAotLSAgICogbm9uLWtleWZyYW1lICovCi0tICBpZiAoR19VTkxJS0VMWSAoZmZtcGVnZGVjLT53YWl0aW5nX2Zvcl9rZXkpKSB7Ci0tICAgIGlmIChHX0xJS0VMWSAoIWlza2V5ZnJhbWUpKQotLSAgICAgIGdvdG8gZHJvcF9ub25fa2V5ZnJhbWU7Ci0tCi0tICAgIC8qIHdlIGhhdmUgYSBrZXlmcmFtZSwgd2UgY2FuIHN0b3Agd2FpdGluZyBmb3Igb25lICovCi0tICAgIGZmbXBlZ2RlYy0+d2FpdGluZ19mb3Jfa2V5ID0gRkFMU0U7Ci0tICB9Ci0tCi0gICAvKiBnZXQgYSBoYW5kbGUgdG8gdGhlIG91dHB1dCBidWZmZXIgKi8KLSAgICpyZXQgPSBnZXRfb3V0cHV0X2J1ZmZlciAoZmZtcGVnZGVjLCBvdXRidWYpOwotICAgaWYgKEdfVU5MSUtFTFkgKCpyZXQgIT0gR1NUX0ZMT1dfT0spKQotQEAgLTIwMDAsMjAgKzE5MzAsMTEgQEAKLSAgIGVsc2UKLSAgICAgZmZtcGVnZGVjLT5uZXh0X291dCA9IC0xOwotIAotLSAgLyogcGFsZXR0ZSBpcyBub3QgcGFydCBvZiByYXcgdmlkZW8gZnJhbWUgaW4gZ3N0IGFuZCB0aGUgc2l6ZQotLSAgICogb2YgdGhlIG91dGdvaW5nIGJ1ZmZlciBuZWVkcyB0byBiZSBhZGp1c3RlZCBhY2NvcmRpbmdseSAqLwotLSAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+cGFsY3RybCAhPSBOVUxMKQotLSAgICBHU1RfQlVGRkVSX1NJWkUgKCpvdXRidWYpIC09IEFWUEFMRVRURV9TSVpFOwotLQotICAgLyogbm93IHNlZSBpZiB3ZSBuZWVkIHRvIGNsaXAgdGhlIGJ1ZmZlciBhZ2FpbnN0IHRoZSBzZWdtZW50IGJvdW5kYXJpZXMuICovCi0gICBpZiAoR19VTkxJS0VMWSAoIWNsaXBfdmlkZW9fYnVmZmVyIChmZm1wZWdkZWMsICpvdXRidWYsIG91dF90aW1lc3RhbXAsCi0gICAgICAgICAgICAgICBvdXRfZHVyYXRpb24pKSkKLSAgICAgZ290byBjbGlwcGVkOwotIAotLSAgLyogbWFyayBhcyBrZXlmcmFtZSBvciBkZWx0YSB1bml0ICovCi0tICBpZiAoIWlza2V5ZnJhbWUpCi0tICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKCpvdXRidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKTsKLS0KLSAgIGlmIChmZm1wZWdkZWMtPnBpY3R1cmUtPnRvcF9maWVsZF9maXJzdCkKLSAgICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoKm91dGJ1ZiwgR1NUX1ZJREVPX0JVRkZFUl9URkYpOwotIAotQEAgLTIwMjQsMTEgKzE5NDUsNiBAQAotICAgcmV0dXJuIGxlbjsKLSAKLSAgIC8qIHNwZWNpYWwgY2FzZXMgKi8KLS1kcm9wX25vbl9rZXlmcmFtZToKLS0gIHsKLS0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChmZm1wZWdkZWMsICJEcm9wcGluZyBub24ta2V5ZnJhbWUgKHNlZWsvaW5pdCkiKTsKLS0gICAgZ290byBiZWFjaDsKLS0gIH0KLSBub19vdXRwdXQ6Ci0gICB7Ci0gICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIm5vIG91dHB1dCBidWZmZXIiKTsKLUBAIC0yNDIyLDcgKzIzMzgsNiBAQAotICAgICAgIGdzdF9mZm1wZWdkZWNfcmVzZXRfdHMgKGZmbXBlZ2RlYyk7Ci0gICAgICAgZ3N0X2ZmbXBlZ2RlY19yZXNldF9xb3MgKGZmbXBlZ2RlYyk7Ci0gICAgICAgZ3N0X2ZmbXBlZ2RlY19mbHVzaF9wY2FjaGUgKGZmbXBlZ2RlYyk7Ci0tICAgICAgZmZtcGVnZGVjLT53YWl0aW5nX2Zvcl9rZXkgPSBUUlVFOwotICAgICAgIGdzdF9zZWdtZW50X2luaXQgKCZmZm1wZWdkZWMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0gICAgICAgY2xlYXJfcXVldWVkIChmZm1wZWdkZWMpOwotICAgICAgIGJyZWFrOwotQEAgLTI1NjAsMTcgKzI0NzUsNiBAQAotIAotICAgb2NsYXNzID0gKEdzdEZGTXBlZ0RlY0NsYXNzICopIChHX09CSkVDVF9HRVRfQ0xBU1MgKGZmbXBlZ2RlYykpOwotIAotLSAgLyogZG8gZWFybHkga2V5ZnJhbWUgY2hlY2sgcHJldHR5IGJhZCB0byByZWx5IG9uIHRoZSBrZXlmcmFtZSBmbGFnIGluIHRoZQotLSAgICogc291cmNlIGZvciB0aGlzIGFzIGl0IG1pZ2h0IG5vdCBldmVuIGJlIHBhcnNlZCAoVURQL2ZpbGUvLi4pLiAgKi8KLS0gIGlmIChHX1VOTElLRUxZIChmZm1wZWdkZWMtPndhaXRpbmdfZm9yX2tleSkpIHsKLS0gICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAid2FpdGluZyBmb3Iga2V5ZnJhbWUiKTsKLS0gICAgaWYgKEdTVF9CVUZGRVJfRkxBR19JU19TRVQgKGluYnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCkgJiYKLS0gICAgICAgIG9jbGFzcy0+aW5fcGx1Z2luLT50eXBlICE9IEFWTUVESUFfVFlQRV9BVURJTykKLS0gICAgICBnb3RvIHNraXBfa2V5ZnJhbWU7Ci0tCi0tICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImdvdCBrZXlmcmFtZSIpOwotLSAgICBmZm1wZWdkZWMtPndhaXRpbmdfZm9yX2tleSA9IEZBTFNFOwotLSAgfQotICAgLyogcGFyc2UgY2FjaGUgam9pbmluZy4gSWYgdGhlcmUgaXMgY2FjaGVkIGRhdGEgKi8KLSAgIGlmIChmZm1wZWdkZWMtPnBjYWNoZSkgewotICAgICAvKiBqb2luIHdpdGggcHJldmlvdXMgZGF0YSAqLwotQEAgLTI4MDUsMTIgKzI3MDksNiBAQAotICAgICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1Zik7Ci0gICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKLSAgIH0KLS1za2lwX2tleWZyYW1lOgotLSAgewotLSAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJza2lwcGluZyBub24ga2V5ZnJhbWUiKTsKLS0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoaW5idWYpOwotLSAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0tICB9Ci0gfQotIAotIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotQEAgLTI5MzYsNyArMjgzNCw3IEBACi0gICAgIGdjaGFyICpwbHVnaW5fbmFtZTsKLSAKLSAgICAgLyogb25seSBkZWNvZGVycyAqLwotLSAgICBpZiAoIWluX3BsdWdpbi0+ZGVjb2RlKSB7Ci0rICAgIGlmICghYXZfY29kZWNfaXNfZGVjb2RlciAoaW5fcGx1Z2luKSkgewotICAgICAgIGdvdG8gbmV4dDsKLSAgICAgfQotIAotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVjLmMub3JpZyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYy5vcmlnCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYy5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVjLmMub3JpZwkyMDE0LTA4LTA4IDE1OjMxOjA2LjA1Nzg2ODI0NiArMDIwMAotQEAgLTAsMCArMSwyOTczIEBACi0rLyogR1N0cmVhbWVyCi0rICogQ29weXJpZ2h0IChDKSA8MTk5OT4gRXJpayBXYWx0aGluc2VuIDxvbWVnYUBjc2Uub2dpLmVkdT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpZmRlZiBIQVZFX0ZGTVBFR19VTklOU1RBTExFRAotKyNpbmNsdWRlIDxhdmNvZGVjLmg+Ci0rI2Vsc2UKLSsjaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSsjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+Ci0rCi0rI2luY2x1ZGUgImdzdGZmbXBlZy5oIgotKyNpbmNsdWRlICJnc3RmZm1wZWdjb2RlY21hcC5oIgotKyNpbmNsdWRlICJnc3RmZm1wZWd1dGlscy5oIgotKwotKy8qIGRlZmluZSB0byBlbmFibGUgYWx0ZXJuYXRpdmUgYnVmZmVyIHJlZmNvdW50aW5nIGFsZ29yaXRobSAqLwotKyN1bmRlZiBFWFRSQV9SRUYKLSsKLSt0eXBlZGVmIHN0cnVjdCBfR3N0RkZNcGVnRGVjIEdzdEZGTXBlZ0RlYzsKLSsKLSsjZGVmaW5lIE1BWF9UU19NQVNLIDB4ZmYKLSsKLSsvKiBmb3IgZWFjaCBpbmNvbW1pbmcgYnVmZmVyIHdlIGtlZXAgYWxsIHRpbWluZyBpbmZvIGluIGEgc3RydWN0dXJlIGxpa2UgdGhpcy4KLSsgKiBXZSBrZWVwIGEgY2lyY3VsYXIgYXJyYXkgb2YgdGhlc2Ugc3RydWN0dXJlcyBhcm91bmQgdG8gc3RvcmUgdGhlIHRpbWluZyBpbmZvLgotKyAqIFRoZSBpbmRleCBpbiB0aGUgYXJyYXkgaXMgd2hhdCB3ZSBwYXNzIGFzIG9wYXF1ZSBkYXRhICh0byBwaWN0dXJlcykgYW5kCi0rICogcHRzICh0byBwYXJzZXJzKSBzbyB0aGF0IGZmbXBlZyBjYW4gcmVtZW1iZXIgdGhlbSBmb3IgdXMuICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBnaW50IGlkeDsKLSsgIEdzdENsb2NrVGltZSB0aW1lc3RhbXA7Ci0rICBHc3RDbG9ja1RpbWUgZHVyYXRpb247Ci0rICBnaW50NjQgb2Zmc2V0OwotK30gR3N0VFNJbmZvOwotKwotK3N0cnVjdCBfR3N0RkZNcGVnRGVjCi0rewotKyAgR3N0RWxlbWVudCBlbGVtZW50OwotKwotKyAgLyogV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIG91ciBwYWRzLCBzbyB3ZSBkbyBzbyBoZXJlLiAqLwotKyAgR3N0UGFkICpzcmNwYWQ7Ci0rICBHc3RQYWQgKnNpbmtwYWQ7Ci0rCi0rICAvKiBkZWNvZGluZyAqLwotKyAgQVZDb2RlY0NvbnRleHQgKmNvbnRleHQ7Ci0rICBBVkZyYW1lICpwaWN0dXJlOwotKyAgZ2Jvb2xlYW4gb3BlbmVkOwotKyAgdW5pb24KLSsgIHsKLSsgICAgc3RydWN0Ci0rICAgIHsKLSsgICAgICBnaW50IHdpZHRoLCBoZWlnaHQ7Ci0rICAgICAgZ2ludCBjbGlwX3dpZHRoLCBjbGlwX2hlaWdodDsKLSsgICAgICBnaW50IHBhcl9uLCBwYXJfZDsKLSsgICAgICBnaW50IGZwc19uLCBmcHNfZDsKLSsgICAgICBnaW50IG9sZF9mcHNfbiwgb2xkX2Zwc19kOwotKyAgICAgIGdib29sZWFuIGludGVybGFjZWQ7Ci0rCi0rICAgICAgZW51bSBQaXhlbEZvcm1hdCBwaXhfZm10OwotKyAgICB9IHZpZGVvOwotKyAgICBzdHJ1Y3QKLSsgICAgewotKyAgICAgIGdpbnQgY2hhbm5lbHM7Ci0rICAgICAgZ2ludCBzYW1wbGVyYXRlOwotKyAgICAgIGdpbnQgZGVwdGg7Ci0rICAgIH0gYXVkaW87Ci0rICB9IGZvcm1hdDsKLSsgIGdib29sZWFuIGRpc2NvbnQ7Ci0rICBnYm9vbGVhbiBjbGVhcl90czsKLSsKLSsgIC8qIGZvciB0cmFja2luZyBEVFMvUFRTICovCi0rICBnYm9vbGVhbiBoYXNfYl9mcmFtZXM7Ci0rICBnYm9vbGVhbiByZW9yZGVyZWRfaW47Ci0rICBHc3RDbG9ja1RpbWUgbGFzdF9pbjsKLSsgIEdzdENsb2NrVGltZSBsYXN0X2RpZmY7Ci0rICBndWludCBsYXN0X2ZyYW1lczsKLSsgIGdib29sZWFuIHJlb3JkZXJlZF9vdXQ7Ci0rICBHc3RDbG9ja1RpbWUgbGFzdF9vdXQ7Ci0rICBHc3RDbG9ja1RpbWUgbmV4dF9vdXQ7Ci0rCi0rICAvKiBwYXJzaW5nICovCi0rICBnYm9vbGVhbiB0dXJub2ZmX3BhcnNlcjsgICAgICAvKiB1c2VkIGZvciB0dXJuaW5nIG9mZiBhYWMgcmF3IHBhcnNpbmcKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNlZSBidWcgIzU2NjI1MCAqLwotKyAgQVZDb2RlY1BhcnNlckNvbnRleHQgKnBjdHg7Ci0rICBHc3RCdWZmZXIgKnBjYWNoZTsKLSsgIGd1aW50OCAqcGFkZGVkOwotKyAgZ3VpbnQgcGFkZGVkX3NpemU7Ci0rCi0rICBHVmFsdWUgKnBhcjsgICAgICAgICAgICAgICAgICAvKiBwaXhlbCBhc3BlY3QgcmF0aW8gb2YgaW5jb21pbmcgZGF0YSAqLwotKyAgZ2Jvb2xlYW4gY3VycmVudF9kcjsgICAgICAgICAgLyogaWYgZGlyZWN0IHJlbmRlcmluZyBpcyBlbmFibGVkICovCi0rICBnYm9vbGVhbiBleHRyYV9yZWY7ICAgICAgICAgICAvKiBrZWVwIGV4dHJhIHJlZiBhcm91bmQgaW4gZ2V0L3JlbGVhc2UgKi8KLSsKLSsgIC8qIHNvbWUgcHJvcGVydGllcyAqLwotKyAgZW51bSBBVkRpc2NhcmQgc2tpcF9mcmFtZTsKLSsgIGdpbnQgbG93cmVzOwotKyAgZ2Jvb2xlYW4gZGlyZWN0X3JlbmRlcmluZzsKLSsgIGdib29sZWFuIGRvX3BhZGRpbmc7Ci0rICBnYm9vbGVhbiBkZWJ1Z19tdjsKLSsgIGdib29sZWFuIGNyb3A7Ci0rICBpbnQgbWF4X3RocmVhZHM7Ci0rCi0rICAvKiBRb1Mgc3R1ZmYgKi8vKiB3aXRoIExPQ0sgKi8KLSsgIGdkb3VibGUgcHJvcG9ydGlvbjsKLSsgIEdzdENsb2NrVGltZSBlYXJsaWVzdF90aW1lOwotKyAgZ2ludDY0IHByb2Nlc3NlZDsKLSsgIGdpbnQ2NCBkcm9wcGVkOwotKwotKyAgLyogY2xpcHBpbmcgc2VnbWVudCAqLwotKyAgR3N0U2VnbWVudCBzZWdtZW50OwotKwotKyAgZ2Jvb2xlYW4gaXNfcmVhbHZpZGVvOwotKwotKyAgR3N0VFNJbmZvIHRzX2luZm9bTUFYX1RTX01BU0sgKyAxXTsKLSsgIGdpbnQgdHNfaWR4OwotKwotKyAgLyogcmV2ZXJzZSBwbGF5YmFjayBxdWV1ZSAqLwotKyAgR0xpc3QgKnF1ZXVlZDsKLSsKLSsgIC8qIENhbiBkb3duc3RyZWFtIGFsbG9jYXRlIDE2Ynl0ZXMgYWxpZ25lZCBkYXRhLiAqLwotKyAgZ2Jvb2xlYW4gY2FuX2FsbG9jYXRlX2FsaWduZWQ7Ci0rfTsKLSsKLSt0eXBlZGVmIHN0cnVjdCBfR3N0RkZNcGVnRGVjQ2xhc3MgR3N0RkZNcGVnRGVjQ2xhc3M7Ci0rCi0rc3RydWN0IF9Hc3RGRk1wZWdEZWNDbGFzcwotK3sKLSsgIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7Ci0rCi0rICBBVkNvZGVjICppbl9wbHVnaW47Ci0rICBHc3RQYWRUZW1wbGF0ZSAqc3JjdGVtcGwsICpzaW5rdGVtcGw7Ci0rfTsKLSsKLSsjZGVmaW5lIEdTVF9UU19JTkZPX05PTkUgJnRzX2luZm9fbm9uZQotK3N0YXRpYyBjb25zdCBHc3RUU0luZm8gdHNfaW5mb19ub25lID0geyAtMSwgLTEsIC0xLCAtMSB9OwotKwotK3N0YXRpYyBjb25zdCBHc3RUU0luZm8gKgotK2dzdF90c19pbmZvX3N0b3JlIChHc3RGRk1wZWdEZWMgKiBkZWMsIEdzdENsb2NrVGltZSB0aW1lc3RhbXAsCi0rICAgIEdzdENsb2NrVGltZSBkdXJhdGlvbiwgZ2ludDY0IG9mZnNldCkKLSt7Ci0rICBnaW50IGlkeCA9IGRlYy0+dHNfaWR4OwotKyAgZGVjLT50c19pbmZvW2lkeF0uaWR4ID0gaWR4OwotKyAgZGVjLT50c19pbmZvW2lkeF0udGltZXN0YW1wID0gdGltZXN0YW1wOwotKyAgZGVjLT50c19pbmZvW2lkeF0uZHVyYXRpb24gPSBkdXJhdGlvbjsKLSsgIGRlYy0+dHNfaW5mb1tpZHhdLm9mZnNldCA9IG9mZnNldDsKLSsgIGRlYy0+dHNfaWR4ID0gKGlkeCArIDEpICYgTUFYX1RTX01BU0s7Ci0rCi0rICByZXR1cm4gJmRlYy0+dHNfaW5mb1tpZHhdOwotK30KLSsKLStzdGF0aWMgY29uc3QgR3N0VFNJbmZvICoKLStnc3RfdHNfaW5mb19nZXQgKEdzdEZGTXBlZ0RlYyAqIGRlYywgZ2ludCBpZHgpCi0rewotKyAgaWYgKEdfVU5MSUtFTFkgKGlkeCA8IDAgfHwgaWR4ID4gTUFYX1RTX01BU0spKQotKyAgICByZXR1cm4gR1NUX1RTX0lORk9fTk9ORTsKLSsKLSsgIHJldHVybiAmZGVjLT50c19pbmZvW2lkeF07Ci0rfQotKwotKyNkZWZpbmUgR1NUX1RZUEVfRkZNUEVHREVDIFwKLSsgIChnc3RfZmZtcGVnZGVjX2dldF90eXBlKCkpCi0rI2RlZmluZSBHU1RfRkZNUEVHREVDKG9iaikgXAotKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX0ZGTVBFR0RFQyxHc3RGRk1wZWdEZWMpKQotKyNkZWZpbmUgR1NUX0ZGTVBFR0RFQ19DTEFTUyhrbGFzcykgXAotKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfRkZNUEVHREVDLEdzdEZGTXBlZ0RlY0NsYXNzKSkKLSsjZGVmaW5lIEdTVF9JU19GRk1QRUdERUMob2JqKSBcCi0rICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfRkZNUEVHREVDKSkKLSsjZGVmaW5lIEdTVF9JU19GRk1QRUdERUNfQ0xBU1Moa2xhc3MpIFwKLSsgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX0ZGTVBFR0RFQykpCi0rCi0rI2RlZmluZSBERUZBVUxUX0xPV1JFUwkJCTAKLSsjZGVmaW5lIERFRkFVTFRfU0tJUEZSQU1FCQkwCi0rI2RlZmluZSBERUZBVUxUX0RJUkVDVF9SRU5ERVJJTkcJVFJVRQotKyNkZWZpbmUgREVGQVVMVF9ET19QQURESU5HCQlUUlVFCi0rI2RlZmluZSBERUZBVUxUX0RFQlVHX01WCQlGQUxTRQotKyNkZWZpbmUgREVGQVVMVF9DUk9QCQkJVFJVRQotKyNkZWZpbmUgREVGQVVMVF9NQVhfVEhSRUFEUwkJMQotKwotK2VudW0KLSt7Ci0rICBQUk9QXzAsCi0rICBQUk9QX0xPV1JFUywKLSsgIFBST1BfU0tJUEZSQU1FLAotKyAgUFJPUF9ESVJFQ1RfUkVOREVSSU5HLAotKyAgUFJPUF9ET19QQURESU5HLAotKyAgUFJPUF9ERUJVR19NViwKLSsgIFBST1BfQ1JPUCwKLSsgIFBST1BfTUFYX1RIUkVBRFMsCi0rICBQUk9QX0xBU1QKLSt9OwotKwotKy8qIEEgbnVtYmVyIG9mIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlIGdpdmVuIHNvIHdlIGNhbiByZWZlciB0byB0aGVtIGxhdGVyLiAqLwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdkZWNfYmFzZV9pbml0IChHc3RGRk1wZWdEZWNDbGFzcyAqIGtsYXNzKTsKLStzdGF0aWMgdm9pZCBnc3RfZmZtcGVnZGVjX2NsYXNzX2luaXQgKEdzdEZGTXBlZ0RlY0NsYXNzICoga2xhc3MpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdkZWNfaW5pdCAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKTsKLStzdGF0aWMgdm9pZCBnc3RfZmZtcGVnZGVjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKLSsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2ZmbXBlZ2RlY19xdWVyeSAoR3N0UGFkICogcGFkLCBHc3RRdWVyeSAqIHF1ZXJ5KTsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2ZmbXBlZ2RlY19zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0RXZlbnQgKiBldmVudCk7Ci0rCi0rc3RhdGljIGdib29sZWFuIGdzdF9mZm1wZWdkZWNfc2V0Y2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2Fwcyk7Ci0rc3RhdGljIGdib29sZWFuIGdzdF9mZm1wZWdkZWNfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KTsKLStzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfZmZtcGVnZGVjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdEJ1ZmZlciAqIGJ1Zik7Ci0rCi0rc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdzdF9mZm1wZWdkZWNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSsgICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7Ci0rCi0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ2RlY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0rICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdkZWNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotKyAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLSsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2ZmbXBlZ2RlY19uZWdvdGlhdGUgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywKLSsgICAgZ2Jvb2xlYW4gZm9yY2UpOwotKwotKy8qIHNvbWUgc29ydCBvZiBidWZmZXJwb29sIGhhbmRsaW5nLCBidXQgZGlmZmVyZW50ICovCi0rc3RhdGljIGludCBnc3RfZmZtcGVnZGVjX2dldF9idWZmZXIgKEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwKLSsgICAgQVZGcmFtZSAqIHBpY3R1cmUpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdkZWNfcmVsZWFzZV9idWZmZXIgKEFWQ29kZWNDb250ZXh0ICogY29udGV4dCwKLSsgICAgQVZGcmFtZSAqIHBpY3R1cmUpOwotKwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdkZWNfZHJhaW4gKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYyk7Ci0rCi0rI2RlZmluZSBHU1RfRkZERUNfUEFSQU1TX1FEQVRBIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJmZmRlYy1wYXJhbXMiKQotKwotK3N0YXRpYyBHc3RFbGVtZW50Q2xhc3MgKnBhcmVudF9jbGFzcyA9IE5VTEw7Ci0rCi0rI2RlZmluZSBHU1RfRkZNUEVHREVDX1RZUEVfTE9XUkVTIChnc3RfZmZtcGVnZGVjX2xvd3Jlc19nZXRfdHlwZSgpKQotK3N0YXRpYyBHVHlwZQotK2dzdF9mZm1wZWdkZWNfbG93cmVzX2dldF90eXBlICh2b2lkKQotK3sKLSsgIHN0YXRpYyBHVHlwZSBmZm1wZWdkZWNfbG93cmVzX3R5cGUgPSAwOwotKwotKyAgaWYgKCFmZm1wZWdkZWNfbG93cmVzX3R5cGUpIHsKLSsgICAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgZmZtcGVnZGVjX2xvd3Jlc1tdID0gewotKyAgICAgIHswLCAiMCIsICJmdWxsIn0sCi0rICAgICAgezEsICIxIiwgIjEvMi1zaXplIn0sCi0rICAgICAgezIsICIyIiwgIjEvNC1zaXplIn0sCi0rICAgICAgezAsIE5VTEwsIE5VTEx9LAotKyAgICB9OwotKwotKyAgICBmZm1wZWdkZWNfbG93cmVzX3R5cGUgPQotKyAgICAgICAgZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdEZGTXBlZ0RlY0xvd3JlcyIsIGZmbXBlZ2RlY19sb3dyZXMpOwotKyAgfQotKwotKyAgcmV0dXJuIGZmbXBlZ2RlY19sb3dyZXNfdHlwZTsKLSt9Ci0rCi0rI2RlZmluZSBHU1RfRkZNUEVHREVDX1RZUEVfU0tJUEZSQU1FIChnc3RfZmZtcGVnZGVjX3NraXBmcmFtZV9nZXRfdHlwZSgpKQotK3N0YXRpYyBHVHlwZQotK2dzdF9mZm1wZWdkZWNfc2tpcGZyYW1lX2dldF90eXBlICh2b2lkKQotK3sKLSsgIHN0YXRpYyBHVHlwZSBmZm1wZWdkZWNfc2tpcGZyYW1lX3R5cGUgPSAwOwotKwotKyAgaWYgKCFmZm1wZWdkZWNfc2tpcGZyYW1lX3R5cGUpIHsKLSsgICAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgZmZtcGVnZGVjX3NraXBmcmFtZVtdID0gewotKyAgICAgIHswLCAiMCIsICJTa2lwIG5vdGhpbmcifSwKLSsgICAgICB7MSwgIjEiLCAiU2tpcCBCLWZyYW1lcyJ9LAotKyAgICAgIHsyLCAiMiIsICJTa2lwIElEQ1QvRGVxdWFudGl6YXRpb24ifSwKLSsgICAgICB7NSwgIjUiLCAiU2tpcCBldmVyeXRoaW5nIn0sCi0rICAgICAgezAsIE5VTEwsIE5VTEx9LAotKyAgICB9OwotKwotKyAgICBmZm1wZWdkZWNfc2tpcGZyYW1lX3R5cGUgPQotKyAgICAgICAgZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdEZGTXBlZ0RlY1NraXBGcmFtZSIsIGZmbXBlZ2RlY19za2lwZnJhbWUpOwotKyAgfQotKwotKyAgcmV0dXJuIGZmbXBlZ2RlY19za2lwZnJhbWVfdHlwZTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX2Jhc2VfaW5pdCAoR3N0RkZNcGVnRGVjQ2xhc3MgKiBrbGFzcykKLSt7Ci0rICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotKyAgR3N0UGFkVGVtcGxhdGUgKnNpbmt0ZW1wbCwgKnNyY3RlbXBsOwotKyAgR3N0Q2FwcyAqc2lua2NhcHMsICpzcmNjYXBzOwotKyAgQVZDb2RlYyAqaW5fcGx1Z2luOwotKyAgZ2NoYXIgKmxvbmduYW1lLCAqY2xhc3NpZmljYXRpb24sICpkZXNjcmlwdGlvbjsKLSsKLSsgIGluX3BsdWdpbiA9Ci0rICAgICAgKEFWQ29kZWMgKikgZ190eXBlX2dldF9xZGF0YSAoR19PQkpFQ1RfQ0xBU1NfVFlQRSAoa2xhc3MpLAotKyAgICAgIEdTVF9GRkRFQ19QQVJBTVNfUURBVEEpOwotKyAgZ19hc3NlcnQgKGluX3BsdWdpbiAhPSBOVUxMKTsKLSsKLSsgIC8qIGNvbnN0cnVjdCB0aGUgZWxlbWVudCBkZXRhaWxzIHN0cnVjdCAqLwotKyAgbG9uZ25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJGRm1wZWcgJXMgZGVjb2RlciIsIGluX3BsdWdpbi0+bG9uZ19uYW1lKTsKLSsgIGNsYXNzaWZpY2F0aW9uID0gZ19zdHJkdXBfcHJpbnRmICgiQ29kZWMvRGVjb2Rlci8lcyIsCi0rICAgICAgKGluX3BsdWdpbi0+dHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pID8gIlZpZGVvIiA6ICJBdWRpbyIpOwotKyAgZGVzY3JpcHRpb24gPSBnX3N0cmR1cF9wcmludGYgKCJGRm1wZWcgJXMgZGVjb2RlciIsIGluX3BsdWdpbi0+bmFtZSk7Ci0rICBnc3RfZWxlbWVudF9jbGFzc19zZXRfZGV0YWlsc19zaW1wbGUgKGVsZW1lbnRfY2xhc3MsIGxvbmduYW1lLCBjbGFzc2lmaWNhdGlvbiwKLSsgICAgICBkZXNjcmlwdGlvbiwKLSsgICAgICAiV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4sICIKLSsgICAgICAiUm9uYWxkIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PiwgIgotKyAgICAgICJFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPiIpOwotKyAgZ19mcmVlIChsb25nbmFtZSk7Ci0rICBnX2ZyZWUgKGNsYXNzaWZpY2F0aW9uKTsKLSsgIGdfZnJlZSAoZGVzY3JpcHRpb24pOwotKwotKyAgLyogZ2V0IHRoZSBjYXBzICovCi0rICBzaW5rY2FwcyA9IGdzdF9mZm1wZWdfY29kZWNpZF90b19jYXBzIChpbl9wbHVnaW4tPmlkLCBOVUxMLCBGQUxTRSk7Ci0rICBpZiAoIXNpbmtjYXBzKSB7Ci0rICAgIEdTVF9ERUJVRyAoIkNvdWxkbid0IGdldCBzaW5rIGNhcHMgZm9yIGRlY29kZXIgJyVzJyIsIGluX3BsdWdpbi0+bmFtZSk7Ci0rICAgIHNpbmtjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ1bmtub3duL3Vua25vd24iKTsKLSsgIH0KLSsgIGlmIChpbl9wbHVnaW4tPnR5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7Ci0rICAgIHNyY2NhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInZpZGVvL3gtcmF3LXJnYjsgdmlkZW8veC1yYXcteXV2Iik7Ci0rICB9IGVsc2UgewotKyAgICBzcmNjYXBzID0gZ3N0X2ZmbXBlZ19jb2RlY3R5cGVfdG9fYXVkaW9fY2FwcyAoTlVMTCwKLSsgICAgICAgIGluX3BsdWdpbi0+aWQsIEZBTFNFLCBpbl9wbHVnaW4pOwotKyAgfQotKyAgaWYgKCFzcmNjYXBzKSB7Ci0rICAgIEdTVF9ERUJVRyAoIkNvdWxkbid0IGdldCBzb3VyY2UgY2FwcyBmb3IgZGVjb2RlciAnJXMnIiwgaW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgc3JjY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidW5rbm93bi91bmtub3duIik7Ci0rICB9Ci0rCi0rICAvKiBwYWQgdGVtcGxhdGVzICovCi0rICBzaW5rdGVtcGwgPSBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNpbmsiLCBHU1RfUEFEX1NJTkssCi0rICAgICAgR1NUX1BBRF9BTFdBWVMsIHNpbmtjYXBzKTsKLSsgIHNyY3RlbXBsID0gZ3N0X3BhZF90ZW1wbGF0ZV9uZXcgKCJzcmMiLCBHU1RfUEFEX1NSQywgR1NUX1BBRF9BTFdBWVMsIHNyY2NhcHMpOwotKwotKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywgc3JjdGVtcGwpOwotKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywgc2lua3RlbXBsKTsKLSsKLSsgIGtsYXNzLT5pbl9wbHVnaW4gPSBpbl9wbHVnaW47Ci0rICBrbGFzcy0+c3JjdGVtcGwgPSBzcmN0ZW1wbDsKLSsgIGtsYXNzLT5zaW5rdGVtcGwgPSBzaW5rdGVtcGw7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY19jbGFzc19pbml0IChHc3RGRk1wZWdEZWNDbGFzcyAqIGtsYXNzKQotK3sKLSsgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7Ci0rICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotKwotKyAgcGFyZW50X2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7Ci0rCi0rICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9mZm1wZWdkZWNfZmluYWxpemU7Ci0rCi0rICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZmZtcGVnZGVjX3NldF9wcm9wZXJ0eTsKLSsgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9mZm1wZWdkZWNfZ2V0X3Byb3BlcnR5OwotKwotKyAgaWYgKGtsYXNzLT5pbl9wbHVnaW4tPnR5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7Ci0rICAgIGludCBjYXBzOwotKwotKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NLSVBGUkFNRSwKLSsgICAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgic2tpcC1mcmFtZSIsICJTa2lwIGZyYW1lcyIsCi0rICAgICAgICAgICAgIldoaWNoIHR5cGVzIG9mIGZyYW1lcyB0byBza2lwIGR1cmluZyBkZWNvZGluZyIsCi0rICAgICAgICAgICAgR1NUX0ZGTVBFR0RFQ19UWVBFX1NLSVBGUkFNRSwgMCwKLSsgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9MT1dSRVMsCi0rICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImxvd3JlcyIsICJMb3cgcmVzb2x1dGlvbiIsCi0rICAgICAgICAgICAgIkF0IHdoaWNoIHJlc29sdXRpb24gdG8gZGVjb2RlIGltYWdlcyIsIEdTVF9GRk1QRUdERUNfVFlQRV9MT1dSRVMsCi0rICAgICAgICAgICAgMCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRElSRUNUX1JFTkRFUklORywKLSsgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiZGlyZWN0LXJlbmRlcmluZyIsICJEaXJlY3QgUmVuZGVyaW5nIiwKLSsgICAgICAgICAgICAiRW5hYmxlIGRpcmVjdCByZW5kZXJpbmciLCBERUZBVUxUX0RJUkVDVF9SRU5ERVJJTkcsCi0rICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRE9fUEFERElORywKLSsgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiZG8tcGFkZGluZyIsICJEbyBQYWRkaW5nIiwKLSsgICAgICAgICAgICAiQWRkIDAgcGFkZGluZyBiZWZvcmUgZGVjb2RpbmcgZGF0YSIsIERFRkFVTFRfRE9fUEFERElORywKLSsgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ERUJVR19NViwKLSsgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiZGVidWctbXYiLCAiRGVidWcgbW90aW9uIHZlY3RvcnMiLAotKyAgICAgICAgICAgICJXaGV0aGVyIGZmbXBlZyBzaG91bGQgcHJpbnQgbW90aW9uIHZlY3RvcnMgb24gdG9wIG9mIHRoZSBpbWFnZSIsCi0rICAgICAgICAgICAgREVGQVVMVF9ERUJVR19NViwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rI2lmIDAKLSsgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DUk9QLAotKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJjcm9wIiwgIkNyb3AiLAotKyAgICAgICAgICAgICJDcm9wIGltYWdlcyB0byB0aGUgZGlzcGxheSByZWdpb24iLAotKyAgICAgICAgICAgIERFRkFVTFRfQ1JPUCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rI2VuZGlmCi0rCi0rICAgIGNhcHMgPSBrbGFzcy0+aW5fcGx1Z2luLT5jYXBhYmlsaXRpZXM7Ci0rICAgIGlmIChjYXBzICYgKENPREVDX0NBUF9GUkFNRV9USFJFQURTIHwgQ09ERUNfQ0FQX1NMSUNFX1RIUkVBRFMpKSB7Ci0rICAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKSwgUFJPUF9NQVhfVEhSRUFEUywKLSsgICAgICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm1heC10aHJlYWRzIiwgIk1heGltdW0gZGVjb2RlIHRocmVhZHMiLAotKyAgICAgICAgICAgICAgIk1heGltdW0gbnVtYmVyIG9mIHdvcmtlciB0aHJlYWRzIHRvIHNwYXduLiAoMCA9IGF1dG8pIiwKLSsgICAgICAgICAgICAgIDAsIEdfTUFYSU5ULCBERUZBVUxUX01BWF9USFJFQURTLAotKyAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9mZm1wZWdkZWNfY2hhbmdlX3N0YXRlOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdkZWNfaW5pdCAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKQotK3sKLSsgIEdzdEZGTXBlZ0RlY0NsYXNzICpvY2xhc3M7Ci0rCi0rICBvY2xhc3MgPSAoR3N0RkZNcGVnRGVjQ2xhc3MgKikgKEdfT0JKRUNUX0dFVF9DTEFTUyAoZmZtcGVnZGVjKSk7Ci0rCi0rICAvKiBzZXR1cCBwYWRzICovCi0rICBmZm1wZWdkZWMtPnNpbmtwYWQgPSBnc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlIChvY2xhc3MtPnNpbmt0ZW1wbCwgInNpbmsiKTsKLSsgIGdzdF9wYWRfc2V0X3NldGNhcHNfZnVuY3Rpb24gKGZmbXBlZ2RlYy0+c2lua3BhZCwKLSsgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2ZmbXBlZ2RlY19zZXRjYXBzKSk7Ci0rICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoZmZtcGVnZGVjLT5zaW5rcGFkLAotKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZmZtcGVnZGVjX3NpbmtfZXZlbnQpKTsKLSsgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChmZm1wZWdkZWMtPnNpbmtwYWQsCi0rICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9mZm1wZWdkZWNfY2hhaW4pKTsKLSsgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChmZm1wZWdkZWMpLCBmZm1wZWdkZWMtPnNpbmtwYWQpOwotKwotKyAgZmZtcGVnZGVjLT5zcmNwYWQgPSBnc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlIChvY2xhc3MtPnNyY3RlbXBsLCAic3JjIik7Ci0rICBnc3RfcGFkX3VzZV9maXhlZF9jYXBzIChmZm1wZWdkZWMtPnNyY3BhZCk7Ci0rICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoZmZtcGVnZGVjLT5zcmNwYWQsCi0rICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9mZm1wZWdkZWNfc3JjX2V2ZW50KSk7Ci0rICBnc3RfcGFkX3NldF9xdWVyeV9mdW5jdGlvbiAoZmZtcGVnZGVjLT5zcmNwYWQsCi0rICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9mZm1wZWdkZWNfcXVlcnkpKTsKLSsgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChmZm1wZWdkZWMpLCBmZm1wZWdkZWMtPnNyY3BhZCk7Ci0rCi0rICAvKiBzb21lIGZmbXBlZyBkYXRhICovCi0rICBmZm1wZWdkZWMtPmNvbnRleHQgPSBhdmNvZGVjX2FsbG9jX2NvbnRleHQgKCk7Ci0rICBmZm1wZWdkZWMtPnBpY3R1cmUgPSBhdmNvZGVjX2FsbG9jX2ZyYW1lICgpOwotKyAgZmZtcGVnZGVjLT5wY3R4ID0gTlVMTDsKLSsgIGZmbXBlZ2RlYy0+cGNhY2hlID0gTlVMTDsKLSsgIGZmbXBlZ2RlYy0+cGFyID0gTlVMTDsKLSsgIGZmbXBlZ2RlYy0+b3BlbmVkID0gRkFMU0U7Ci0rICBmZm1wZWdkZWMtPnNraXBfZnJhbWUgPSBmZm1wZWdkZWMtPmxvd3JlcyA9IDA7Ci0rICBmZm1wZWdkZWMtPmRpcmVjdF9yZW5kZXJpbmcgPSBERUZBVUxUX0RJUkVDVF9SRU5ERVJJTkc7Ci0rICBmZm1wZWdkZWMtPmRvX3BhZGRpbmcgPSBERUZBVUxUX0RPX1BBRERJTkc7Ci0rICBmZm1wZWdkZWMtPmRlYnVnX212ID0gREVGQVVMVF9ERUJVR19NVjsKLSsgIGZmbXBlZ2RlYy0+Y3JvcCA9IERFRkFVTFRfQ1JPUDsKLSsgIGZmbXBlZ2RlYy0+bWF4X3RocmVhZHMgPSBERUZBVUxUX01BWF9USFJFQURTOwotKwotKyAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ucGFyX24gPSAtMTsKLSsgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uID0gLTE7Ci0rICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5vbGRfZnBzX24gPSAtMTsKLSsgIGdzdF9zZWdtZW50X2luaXQgKCZmZm1wZWdkZWMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0rCi0rICAvKiBXZSBpbml0aWFsbHkgYXNzdW1lIGRvd25zdHJlYW0gY2FuIGFsbG9jYXRlIDE2IGJ5dGVzIGFsaWduZWQgYnVmZmVycyAqLwotKyAgZmZtcGVnZGVjLT5jYW5fYWxsb2NhdGVfYWxpZ25lZCA9IFRSVUU7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLSt7Ci0rICBHc3RGRk1wZWdEZWMgKmZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgb2JqZWN0OwotKwotKyAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dCAhPSBOVUxMKSB7Ci0rICAgIGF2X2ZyZWUgKGZmbXBlZ2RlYy0+Y29udGV4dCk7Ci0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dCA9IE5VTEw7Ci0rICB9Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5waWN0dXJlICE9IE5VTEwpIHsKLSsgICAgYXZfZnJlZSAoZmZtcGVnZGVjLT5waWN0dXJlKTsKLSsgICAgZmZtcGVnZGVjLT5waWN0dXJlID0gTlVMTDsKLSsgIH0KLSsKLSsgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X2ZmbXBlZ2RlY19xdWVyeSAoR3N0UGFkICogcGFkLCBHc3RRdWVyeSAqIHF1ZXJ5KQotK3sKLSsgIEdzdEZGTXBlZ0RlYyAqZmZtcGVnZGVjOwotKyAgR3N0UGFkICpwZWVyOwotKyAgZ2Jvb2xlYW4gcmVzOwotKwotKyAgZmZtcGVnZGVjID0gKEdzdEZGTXBlZ0RlYyAqKSBnc3RfcGFkX2dldF9wYXJlbnQgKHBhZCk7Ci0rCi0rICByZXMgPSBGQUxTRTsKLSsKLSsgIGlmICgocGVlciA9IGdzdF9wYWRfZ2V0X3BlZXIgKGZmbXBlZ2RlYy0+c2lua3BhZCkpKSB7Ci0rICAgIC8qIGp1c3QgZm9yd2FyZCB0byBwZWVyICovCi0rICAgIHJlcyA9IGdzdF9wYWRfcXVlcnkgKHBlZXIsIHF1ZXJ5KTsKLSsgICAgZ3N0X29iamVjdF91bnJlZiAocGVlcik7Ci0rICB9Ci0rI2lmIDAKLSsgIHsKLSsgICAgR3N0Rm9ybWF0IGJmbXQ7Ci0rCi0rICAgIGJmbXQgPSBHU1RfRk9STUFUX0JZVEVTOwotKwotKyAgICAvKiBvaywgZG8gYml0cmF0ZSBjYWxjLi4uICovCi0rICAgIGlmICgodHlwZSAhPSBHU1RfUVVFUllfUE9TSVRJT04gJiYgdHlwZSAhPSBHU1RfUVVFUllfVE9UQUwpIHx8Ci0rICAgICAgICAqZm10ICE9IEdTVF9GT1JNQVRfVElNRSB8fCBmZm1wZWdkZWMtPmNvbnRleHQtPmJpdF9yYXRlID09IDAgfHwKLSsgICAgICAgICFnc3RfcGFkX3F1ZXJ5IChwZWVyLCB0eXBlLCAmYmZtdCwgdmFsdWUpKQotKyAgICAgIHJldHVybiBGQUxTRTsKLSsKLSsgICAgaWYgKGZmbXBlZ2RlYy0+cGNhY2hlICYmIHR5cGUgPT0gR1NUX1FVRVJZX1BPU0lUSU9OKQotKyAgICAgICp2YWx1ZSAtPSBHU1RfQlVGRkVSX1NJWkUgKGZmbXBlZ2RlYy0+cGNhY2hlKTsKLSsgICAgKnZhbHVlICo9IEdTVF9TRUNPTkQgLyBmZm1wZWdkZWMtPmNvbnRleHQtPmJpdF9yYXRlOwotKyAgfQotKyNlbmRpZgotKwotKyAgZ3N0X29iamVjdF91bnJlZiAoZmZtcGVnZGVjKTsKLSsKLSsgIHJldHVybiByZXM7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY19yZXNldF90cyAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKQotK3sKLSsgIGZmbXBlZ2RlYy0+bGFzdF9pbiA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICBmZm1wZWdkZWMtPmxhc3RfZGlmZiA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICBmZm1wZWdkZWMtPmxhc3RfZnJhbWVzID0gMDsKLSsgIGZmbXBlZ2RlYy0+bGFzdF9vdXQgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotKyAgZmZtcGVnZGVjLT5uZXh0X291dCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICBmZm1wZWdkZWMtPnJlb3JkZXJlZF9pbiA9IEZBTFNFOwotKyAgZmZtcGVnZGVjLT5yZW9yZGVyZWRfb3V0ID0gRkFMU0U7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY191cGRhdGVfcW9zIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMsIGdkb3VibGUgcHJvcG9ydGlvbiwKLSsgICAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCkKLSt7Ci0rICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAidXBkYXRlIFFPUzogJWYsICUiIEdTVF9USU1FX0ZPUk1BVCwKLSsgICAgICBwcm9wb3J0aW9uLCBHU1RfVElNRV9BUkdTICh0aW1lc3RhbXApKTsKLSsKLSsgIEdTVF9PQkpFQ1RfTE9DSyAoZmZtcGVnZGVjKTsKLSsgIGZmbXBlZ2RlYy0+cHJvcG9ydGlvbiA9IHByb3BvcnRpb247Ci0rICBmZm1wZWdkZWMtPmVhcmxpZXN0X3RpbWUgPSB0aW1lc3RhbXA7Ci0rICBHU1RfT0JKRUNUX1VOTE9DSyAoZmZtcGVnZGVjKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX3Jlc2V0X3FvcyAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKQotK3sKLSsgIGdzdF9mZm1wZWdkZWNfdXBkYXRlX3FvcyAoZmZtcGVnZGVjLCAwLjUsIEdTVF9DTE9DS19USU1FX05PTkUpOwotKyAgZmZtcGVnZGVjLT5wcm9jZXNzZWQgPSAwOwotKyAgZmZtcGVnZGVjLT5kcm9wcGVkID0gMDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX3JlYWRfcW9zIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMsIGdkb3VibGUgKiBwcm9wb3J0aW9uLAotKyAgICBHc3RDbG9ja1RpbWUgKiB0aW1lc3RhbXApCi0rewotKyAgR1NUX09CSkVDVF9MT0NLIChmZm1wZWdkZWMpOwotKyAgKnByb3BvcnRpb24gPSBmZm1wZWdkZWMtPnByb3BvcnRpb247Ci0rICAqdGltZXN0YW1wID0gZmZtcGVnZGVjLT5lYXJsaWVzdF90aW1lOwotKyAgR1NUX09CSkVDVF9VTkxPQ0sgKGZmbXBlZ2RlYyk7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9mZm1wZWdkZWNfc3JjX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdEV2ZW50ICogZXZlbnQpCi0rewotKyAgR3N0RkZNcGVnRGVjICpmZm1wZWdkZWM7Ci0rICBnYm9vbGVhbiByZXM7Ci0rCi0rICBmZm1wZWdkZWMgPSAoR3N0RkZNcGVnRGVjICopIGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKTsKLSsKLSsgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewotKyAgICBjYXNlIEdTVF9FVkVOVF9RT1M6Ci0rICAgIHsKLSsgICAgICBnZG91YmxlIHByb3BvcnRpb247Ci0rICAgICAgR3N0Q2xvY2tUaW1lRGlmZiBkaWZmOwotKyAgICAgIEdzdENsb2NrVGltZSB0aW1lc3RhbXA7Ci0rCi0rICAgICAgZ3N0X2V2ZW50X3BhcnNlX3FvcyAoZXZlbnQsICZwcm9wb3J0aW9uLCAmZGlmZiwgJnRpbWVzdGFtcCk7Ci0rCi0rICAgICAgLyogdXBkYXRlIG91ciBRb1MgdmFsdWVzICovCi0rICAgICAgZ3N0X2ZmbXBlZ2RlY191cGRhdGVfcW9zIChmZm1wZWdkZWMsIHByb3BvcnRpb24sIHRpbWVzdGFtcCArIGRpZmYpOwotKwotKyAgICAgIC8qIGZvcndhcmQgdXBzdHJlYW0gKi8KLSsgICAgICByZXMgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKGZmbXBlZ2RlYy0+c2lua3BhZCwgZXZlbnQpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgLyogZm9yd2FyZCB1cHN0cmVhbSAqLwotKyAgICAgIHJlcyA9IGdzdF9wYWRfcHVzaF9ldmVudCAoZmZtcGVnZGVjLT5zaW5rcGFkLCBldmVudCk7Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICBnc3Rfb2JqZWN0X3VucmVmIChmZm1wZWdkZWMpOwotKwotKyAgcmV0dXJuIHJlczsKLSt9Ci0rCi0rLyogd2l0aCBMT0NLICovCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX2Nsb3NlIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMpCi0rewotKyAgaWYgKCFmZm1wZWdkZWMtPm9wZW5lZCkKLSsgICAgcmV0dXJuOwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImNsb3NpbmcgZmZtcGVnIGNvZGVjIik7Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5wYXIpIHsKLSsgICAgZ19mcmVlIChmZm1wZWdkZWMtPnBhcik7Ci0rICAgIGZmbXBlZ2RlYy0+cGFyID0gTlVMTDsKLSsgIH0KLSsKLSsgIGlmIChmZm1wZWdkZWMtPmNvbnRleHQtPnByaXZfZGF0YSkKLSsgICAgZ3N0X2ZmbXBlZ19hdmNvZGVjX2Nsb3NlIChmZm1wZWdkZWMtPmNvbnRleHQpOwotKyAgZmZtcGVnZGVjLT5vcGVuZWQgPSBGQUxTRTsKLSsKLSsgIGlmIChmZm1wZWdkZWMtPmNvbnRleHQtPmV4dHJhZGF0YSkgewotKyAgICBhdl9mcmVlIChmZm1wZWdkZWMtPmNvbnRleHQtPmV4dHJhZGF0YSk7Ci0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXh0cmFkYXRhID0gTlVMTDsKLSsgIH0KLSsKLSsgIGlmIChmZm1wZWdkZWMtPnBjdHgpIHsKLSsgICAgaWYgKGZmbXBlZ2RlYy0+cGNhY2hlKSB7Ci0rICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoZmZtcGVnZGVjLT5wY2FjaGUpOwotKyAgICAgIGZmbXBlZ2RlYy0+cGNhY2hlID0gTlVMTDsKLSsgICAgfQotKyAgICBhdl9wYXJzZXJfY2xvc2UgKGZmbXBlZ2RlYy0+cGN0eCk7Ci0rICAgIGZmbXBlZ2RlYy0+cGN0eCA9IE5VTEw7Ci0rICB9Ci0rCi0rICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5wYXJfbiA9IC0xOwotKyAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX24gPSAtMTsKLSsgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLm9sZF9mcHNfbiA9IC0xOwotKyAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaW50ZXJsYWNlZCA9IEZBTFNFOwotK30KLSsKLSsvKiB3aXRoIExPQ0sgKi8KLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfZmZtcGVnZGVjX29wZW4gKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYykKLSt7Ci0rICBHc3RGRk1wZWdEZWNDbGFzcyAqb2NsYXNzOwotKwotKyAgb2NsYXNzID0gKEdzdEZGTXBlZ0RlY0NsYXNzICopIChHX09CSkVDVF9HRVRfQ0xBU1MgKGZmbXBlZ2RlYykpOwotKwotKyAgaWYgKGdzdF9mZm1wZWdfYXZjb2RlY19vcGVuIChmZm1wZWdkZWMtPmNvbnRleHQsIG9jbGFzcy0+aW5fcGx1Z2luKSA8IDApCi0rICAgIGdvdG8gY291bGRfbm90X29wZW47Ci0rCi0rICBmZm1wZWdkZWMtPm9wZW5lZCA9IFRSVUU7Ci0rICBmZm1wZWdkZWMtPmlzX3JlYWx2aWRlbyA9IEZBTFNFOwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIk9wZW5lZCBmZm1wZWcgY29kZWMgJXMsIGlkICVkIiwKLSsgICAgICBvY2xhc3MtPmluX3BsdWdpbi0+bmFtZSwgb2NsYXNzLT5pbl9wbHVnaW4tPmlkKTsKLSsKLSsgIC8qIG9wZW4gYSBwYXJzZXIgaWYgd2UgY2FuICovCi0rICBzd2l0Y2ggKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCkgewotKyAgICBjYXNlIENPREVDX0lEX01QRUc0OgotKyAgICBjYXNlIENPREVDX0lEX01KUEVHOgotKyAgICBjYXNlIENPREVDX0lEX1ZDMToKLSsgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAibm90IHVzaW5nIHBhcnNlciwgYmxhY2tsaXN0ZWQgY29kZWMiKTsKLSsgICAgICBmZm1wZWdkZWMtPnBjdHggPSBOVUxMOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIENPREVDX0lEX0gyNjQ6Ci0rICAgICAgLyogRm9yIEgyNjQsIG9ubHkgdXNlIGEgcGFyc2VyIGlmIHRoZXJlIGlzIG5vIGNvbnRleHQgZGF0YSwgaWYgdGhlcmUgaXMsIAotKyAgICAgICAqIHdlJ3JlIHRhbGtpbmcgQVZDICovCi0rICAgICAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXh0cmFkYXRhX3NpemUgPT0gMCkgewotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIkgyNjQgd2l0aCBubyBleHRyYWRhdGEsIGNyZWF0aW5nIHBhcnNlciIpOwotKyAgICAgICAgZmZtcGVnZGVjLT5wY3R4ID0gYXZfcGFyc2VyX2luaXQgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAgICAgIkgyNjQgd2l0aCBleHRyYWRhdGEgaW1wbGllcyBmcmFtZWQgZGF0YSAtIG5vdCB1c2luZyBwYXJzZXIiKTsKLSsgICAgICAgIGZmbXBlZ2RlYy0+cGN0eCA9IE5VTEw7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIENPREVDX0lEX1JWMTA6Ci0rICAgIGNhc2UgQ09ERUNfSURfUlYzMDoKLSsgICAgY2FzZSBDT0RFQ19JRF9SVjIwOgotKyAgICBjYXNlIENPREVDX0lEX1JWNDA6Ci0rICAgICAgZmZtcGVnZGVjLT5pc19yZWFsdmlkZW8gPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGlmICghZmZtcGVnZGVjLT50dXJub2ZmX3BhcnNlcikgewotKyAgICAgICAgZmZtcGVnZGVjLT5wY3R4ID0gYXZfcGFyc2VyX2luaXQgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCk7Ci0rICAgICAgICBpZiAoZmZtcGVnZGVjLT5wY3R4KQotKyAgICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiVXNpbmcgcGFyc2VyICVwIiwgZmZtcGVnZGVjLT5wY3R4KTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIk5vIHBhcnNlciBmb3IgY29kZWMiKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIlBhcnNlciBkZWFjdGl2YXRlZCBmb3IgZm9ybWF0Iik7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgc3dpdGNoIChvY2xhc3MtPmluX3BsdWdpbi0+dHlwZSkgewotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9WSURFTzoKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby53aWR0aCA9IDA7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaGVpZ2h0ID0gMDsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX3dpZHRoID0gLTE7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF9oZWlnaHQgPSAtMTsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5waXhfZm10ID0gUElYX0ZNVF9OQjsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5pbnRlcmxhY2VkID0gRkFMU0U7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLnNhbXBsZXJhdGUgPSAwOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLmNoYW5uZWxzID0gMDsKLSsgICAgICBmZm1wZWdkZWMtPmZvcm1hdC5hdWRpby5kZXB0aCA9IDA7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICBnc3RfZmZtcGVnZGVjX3Jlc2V0X3RzIChmZm1wZWdkZWMpOwotKyAgLyogRklYTUUsIHJlc2V0X3FvcyBob2xkcyB0aGUgTE9DSyAqLwotKyAgZmZtcGVnZGVjLT5wcm9wb3J0aW9uID0gMC4wOwotKyAgZmZtcGVnZGVjLT5lYXJsaWVzdF90aW1lID0gLTE7Ci0rCi0rICByZXR1cm4gVFJVRTsKLSsKLSsgIC8qIEVSUk9SUyAqLwotK2NvdWxkX25vdF9vcGVuOgotKyAgewotKyAgICBnc3RfZmZtcGVnZGVjX2Nsb3NlIChmZm1wZWdkZWMpOwotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJmZmRlY18lczogRmFpbGVkIHRvIG9wZW4gRkZNUEVHIGNvZGVjIiwKLSsgICAgICAgIG9jbGFzcy0+aW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfZmZtcGVnZGVjX3NldGNhcHMgKEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpCi0rewotKyAgR3N0RkZNcGVnRGVjICpmZm1wZWdkZWM7Ci0rICBHc3RGRk1wZWdEZWNDbGFzcyAqb2NsYXNzOwotKyAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7Ci0rICBjb25zdCBHVmFsdWUgKnBhcjsKLSsgIGNvbnN0IEdWYWx1ZSAqZnBzOwotKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKLSsKLSsgIGZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgKGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKSk7Ci0rICBvY2xhc3MgPSAoR3N0RkZNcGVnRGVjQ2xhc3MgKikgKEdfT0JKRUNUX0dFVF9DTEFTUyAoZmZtcGVnZGVjKSk7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJzZXRjYXBzIGNhbGxlZCIpOwotKwotKyAgR1NUX09CSkVDVF9MT0NLIChmZm1wZWdkZWMpOwotKwotKyAgLyogc3R1cGlkIGNoZWNrIGZvciBWQzEgKi8KLSsgIGlmICgob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1dNVjMpIHx8Ci0rICAgICAgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9WQzEpKQotKyAgICBvY2xhc3MtPmluX3BsdWdpbi0+aWQgPSBnc3RfZmZtcGVnX2NhcHNfdG9fY29kZWNpZCAoY2FwcywgTlVMTCk7Ci0rCi0rICAvKiBjbG9zZSBvbGQgc2Vzc2lvbiAqLwotKyAgaWYgKGZmbXBlZ2RlYy0+b3BlbmVkKSB7Ci0rICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmZm1wZWdkZWMpOwotKyAgICBnc3RfZmZtcGVnZGVjX2RyYWluIChmZm1wZWdkZWMpOwotKyAgICBHU1RfT0JKRUNUX0xPQ0sgKGZmbXBlZ2RlYyk7Ci0rICAgIGdzdF9mZm1wZWdkZWNfY2xvc2UgKGZmbXBlZ2RlYyk7Ci0rCi0rICAgIC8qIGFuZCByZXNldCB0aGUgZGVmYXVsdHMgdGhhdCB3ZXJlIHNldCB3aGVuIGEgY29udGV4dCBpcyBjcmVhdGVkICovCi0rICAgIGF2Y29kZWNfZ2V0X2NvbnRleHRfZGVmYXVsdHMgKGZmbXBlZ2RlYy0+Y29udGV4dCk7Ci0rICB9Ci0rCi0rICAvKiBzZXQgYnVmZmVyIGZ1bmN0aW9ucyAqLwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5nZXRfYnVmZmVyID0gZ3N0X2ZmbXBlZ2RlY19nZXRfYnVmZmVyOwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5yZWxlYXNlX2J1ZmZlciA9IGdzdF9mZm1wZWdkZWNfcmVsZWFzZV9idWZmZXI7Ci0rICBmZm1wZWdkZWMtPmNvbnRleHQtPmRyYXdfaG9yaXpfYmFuZCA9IE5VTEw7Ci0rCi0rICAvKiBkZWZhdWx0IGlzIHRvIGxldCBmb3JtYXQgZGVjaWRlIGlmIGl0IG5lZWRzIGEgcGFyc2VyICovCi0rICBmZm1wZWdkZWMtPnR1cm5vZmZfcGFyc2VyID0gRkFMU0U7Ci0rCi0rICBmZm1wZWdkZWMtPmhhc19iX2ZyYW1lcyA9IEZBTFNFOwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInNpemUgJWR4JWQiLCBmZm1wZWdkZWMtPmNvbnRleHQtPndpZHRoLAotKyAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+aGVpZ2h0KTsKLSsKLSsgIC8qIGdldCBzaXplIGFuZCBzbyAqLwotKyAgZ3N0X2ZmbXBlZ19jYXBzX3dpdGhfY29kZWNpZCAob2NsYXNzLT5pbl9wbHVnaW4tPmlkLAotKyAgICAgIG9jbGFzcy0+aW5fcGx1Z2luLT50eXBlLCBjYXBzLCBmZm1wZWdkZWMtPmNvbnRleHQpOwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInNpemUgYWZ0ZXIgJWR4JWQiLCBmZm1wZWdkZWMtPmNvbnRleHQtPndpZHRoLAotKyAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+aGVpZ2h0KTsKLSsKLSsgIGlmICghZmZtcGVnZGVjLT5jb250ZXh0LT50aW1lX2Jhc2UuZGVuIHx8ICFmZm1wZWdkZWMtPmNvbnRleHQtPnRpbWVfYmFzZS5udW0pIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiZm9yY2luZyAyNS8xIGZyYW1lcmF0ZSIpOwotKyAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnRpbWVfYmFzZS5udW0gPSAxOwotKyAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnRpbWVfYmFzZS5kZW4gPSAyNTsKLSsgIH0KLSsKLSsgIC8qIGdldCBwaXhlbCBhc3BlY3QgcmF0aW8gaWYgaXQncyBzZXQgKi8KLSsgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotKwotKyAgcGFyID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHN0cnVjdHVyZSwgInBpeGVsLWFzcGVjdC1yYXRpbyIpOwotKyAgaWYgKHBhcikgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJzaW5rIGNhcHMgaGF2ZSBwaXhlbC1hc3BlY3QtcmF0aW8gb2YgJWQ6JWQiLAotKyAgICAgICAgZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9udW1lcmF0b3IgKHBhciksCi0rICAgICAgICBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX2Rlbm9taW5hdG9yIChwYXIpKTsKLSsgICAgLyogc2hvdWxkIGJlIE5VTEwgKi8KLSsgICAgaWYgKGZmbXBlZ2RlYy0+cGFyKQotKyAgICAgIGdfZnJlZSAoZmZtcGVnZGVjLT5wYXIpOwotKyAgICBmZm1wZWdkZWMtPnBhciA9IGdfbmV3MCAoR1ZhbHVlLCAxKTsKLSsgICAgZ3N0X3ZhbHVlX2luaXRfYW5kX2NvcHkgKGZmbXBlZ2RlYy0+cGFyLCBwYXIpOwotKyAgfQotKwotKyAgLyogZ2V0IHRoZSBmcmFtZXJhdGUgZnJvbSBpbmNvbWluZyBjYXBzLiBmcHNfbiBpcyBzZXQgdG8gLTEgd2hlbgotKyAgICogdGhlcmUgaXMgbm8gdmFsaWQgZnJhbWVyYXRlICovCi0rICBmcHMgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RydWN0dXJlLCAiZnJhbWVyYXRlIik7Ci0rICBpZiAoZnBzICE9IE5VTEwgJiYgR1NUX1ZBTFVFX0hPTERTX0ZSQUNUSU9OIChmcHMpKSB7Ci0rICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uID0gZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9udW1lcmF0b3IgKGZwcyk7Ci0rICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19kID0gZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9kZW5vbWluYXRvciAoZnBzKTsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiVXNpbmcgZnJhbWVyYXRlICVkLyVkIGZyb20gaW5jb21pbmcgY2FwcyIsCi0rICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfbiwgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX2QpOwotKyAgfSBlbHNlIHsKLSsgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX24gPSAtMTsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiVXNpbmcgZnJhbWVyYXRlIGZyb20gY29kZWMiKTsKLSsgIH0KLSsKLSsgIC8qIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIHVzZSBkaXJlY3QgcmVuZGVyaW5nICovCi0rICBmZm1wZWdkZWMtPmN1cnJlbnRfZHIgPSBGQUxTRTsKLSsgIGZmbXBlZ2RlYy0+ZXh0cmFfcmVmID0gRkFMU0U7Ci0rICBpZiAoZmZtcGVnZGVjLT5kaXJlY3RfcmVuZGVyaW5nKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInRyeWluZyB0byBlbmFibGUgZGlyZWN0IHJlbmRlcmluZyIpOwotKyAgICBpZiAob2NsYXNzLT5pbl9wbHVnaW4tPmNhcGFiaWxpdGllcyAmIENPREVDX0NBUF9EUjEpIHsKLSsgICAgICBpZiAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX0gyNjQpIHsKLSsgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImRpc2FibGUgZGlyZWN0IHJlbmRlcmluZyBzZXR1cCBmb3IgSDI2NCIpOwotKyAgICAgICAgLyogZG9lcyBub3Qgd29yaywgbWFueSBzdHVmZiByZWFkcyBvdXRzaWRlIG9mIHRoZSBwbGFuZXMgKi8KLSsgICAgICAgIGZmbXBlZ2RlYy0+Y3VycmVudF9kciA9IEZBTFNFOwotKyAgICAgICAgZmZtcGVnZGVjLT5leHRyYV9yZWYgPSBUUlVFOwotKyAgICAgIH0gZWxzZSBpZiAoKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9TVlExKSB8fAotKyAgICAgICAgICAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1ZQNSkgfHwKLSsgICAgICAgICAgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9WUDYpIHx8Ci0rICAgICAgICAgIChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfVlA2RikgfHwKLSsgICAgICAgICAgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9WUDZBKSkgewotKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAgICJkaXNhYmxlIGRpcmVjdCByZW5kZXJpbmcgc2V0dXAgZm9yIGJyb2tlbiBzdHJpZGUgc3VwcG9ydCIpOwotKyAgICAgICAgLyogZG9lcyBub3Qgd29yaywgdXNlcyBhIGluY29tcGF0aWJsZSBzdHJpZGUuIFNlZSAjNjEwNjEzICovCi0rICAgICAgICBmZm1wZWdkZWMtPmN1cnJlbnRfZHIgPSBGQUxTRTsKLSsgICAgICAgIGZmbXBlZ2RlYy0+ZXh0cmFfcmVmID0gVFJVRTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiZW5hYmxlZCBkaXJlY3QgcmVuZGVyaW5nIik7Ci0rICAgICAgICBmZm1wZWdkZWMtPmN1cnJlbnRfZHIgPSBUUlVFOwotKyAgICAgIH0KLSsgICAgfSBlbHNlIHsKLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJkaXJlY3QgcmVuZGVyaW5nIG5vdCBzdXBwb3J0ZWQiKTsKLSsgICAgfQotKyAgfQotKyAgaWYgKGZmbXBlZ2RlYy0+Y3VycmVudF9kcikgewotKyAgICAvKiBkbyAqbm90KiBkcmF3IGVkZ2VzIHdoZW4gaW4gZGlyZWN0IHJlbmRlcmluZywgZm9yIHNvbWUgcmVhc29uIGl0IGRyYXdzCi0rICAgICAqIG91dHNpZGUgb2YgdGhlIG1lbW9yeS4gKi8KLSsgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5mbGFncyB8PSBDT0RFQ19GTEFHX0VNVV9FREdFOwotKyAgfQotKwotKyAgLyogZm9yIEFBQyB3ZSBvbmx5IHVzZSBhdl9wYXJzZSBpZiBub3Qgb24gc3RyZWFtLWZvcm1hdD09cmF3IG9yID09bG9hcyAqLwotKyAgaWYgKG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9BQUMKLSsgICAgICB8fCBvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfQUFDX0xBVE0pIHsKLSsgICAgY29uc3QgZ2NoYXIgKmZvcm1hdCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RydWN0dXJlLCAic3RyZWFtLWZvcm1hdCIpOwotKwotKyAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgc3RyY21wIChmb3JtYXQsICJyYXciKSA9PSAwKSB7Ci0rICAgICAgZmZtcGVnZGVjLT50dXJub2ZmX3BhcnNlciA9IFRSVUU7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIC8qIGZvciBGTEFDLCBkb24ndCBwYXJzZSBpZiBpdCdzIGFscmVhZHkgcGFyc2VkICovCi0rICBpZiAob2NsYXNzLT5pbl9wbHVnaW4tPmlkID09IENPREVDX0lEX0ZMQUMpIHsKLSsgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChzdHJ1Y3R1cmUsICJzdHJlYW1oZWFkZXIiKSkKLSsgICAgICBmZm1wZWdkZWMtPnR1cm5vZmZfcGFyc2VyID0gVFJVRTsKLSsgIH0KLSsKLSsgIC8qIHdvcmthcm91bmQgZW5jb2RlciBidWdzICovCi0rICBmZm1wZWdkZWMtPmNvbnRleHQtPndvcmthcm91bmRfYnVncyB8PSBGRl9CVUdfQVVUT0RFVEVDVDsKLSsgIGZmbXBlZ2RlYy0+Y29udGV4dC0+ZXJyX3JlY29nbml0aW9uID0gMTsKLSsKLSsgIC8qIGZvciBzbG93IGNwdXMgKi8KLSsgIGZmbXBlZ2RlYy0+Y29udGV4dC0+bG93cmVzID0gZmZtcGVnZGVjLT5sb3dyZXM7Ci0rICBmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUgPSBmZm1wZWdkZWMtPnNraXBfZnJhbWU7Ci0rCi0rICAvKiBmZm1wZWcgY2FuIGRyYXcgbW90aW9uIHZlY3RvcnMgb24gdG9wIG9mIHRoZSBpbWFnZSAobm90IGV2ZXJ5IGRlY29kZXIKLSsgICAqIHN1cHBvcnRzIGl0KSAqLwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5kZWJ1Z19tdiA9IGZmbXBlZ2RlYy0+ZGVidWdfbXY7Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5tYXhfdGhyZWFkcyA9PSAwKQotKyAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnRocmVhZF9jb3VudCA9IGdzdF9mZm1wZWdfYXV0b19tYXhfdGhyZWFkcyAoKTsKLSsgIGVsc2UKLSsgICAgZmZtcGVnZGVjLT5jb250ZXh0LT50aHJlYWRfY291bnQgPSBmZm1wZWdkZWMtPm1heF90aHJlYWRzOwotKwotKyAgLyogb3BlbiBjb2RlYyAtIHdlIGRvbid0IHNlbGVjdCBhbiBvdXRwdXQgcGl4X2ZtdCB5ZXQsCi0rICAgKiBzaW1wbHkgYmVjYXVzZSB3ZSBkb24ndCBrbm93ISBXZSBvbmx5IGdldCBpdAotKyAgICogZHVyaW5nIHBsYXliYWNrLi4uICovCi0rICBpZiAoIWdzdF9mZm1wZWdkZWNfb3BlbiAoZmZtcGVnZGVjKSkKLSsgICAgZ290byBvcGVuX2ZhaWxlZDsKLSsKLSsgIC8qIGNsaXBwaW5nIHJlZ2lvbiAqLwotKyAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJ3aWR0aCIsCi0rICAgICAgJmZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfd2lkdGgpOwotKyAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLAotKyAgICAgICZmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX2hlaWdodCk7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJjbGlwcGluZyB0byAlZHglZCIsCi0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF93aWR0aCwgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF9oZWlnaHQpOwotKwotKyAgLyogdGFrZSBpbnRvIGFjY291bnQgdGhlIGxvd3JlcyBwcm9wZXJ0eSAqLwotKyAgaWYgKGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfd2lkdGggIT0gLTEpCi0rICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfd2lkdGggPj49IGZmbXBlZ2RlYy0+bG93cmVzOwotKyAgaWYgKGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfaGVpZ2h0ICE9IC0xKQotKyAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX2hlaWdodCA+Pj0gZmZtcGVnZGVjLT5sb3dyZXM7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJmaW5hbCBjbGlwcGluZyB0byAlZHglZCIsCi0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF93aWR0aCwgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF9oZWlnaHQpOwotKwotK2RvbmU6Ci0rICBHU1RfT0JKRUNUX1VOTE9DSyAoZmZtcGVnZGVjKTsKLSsKLSsgIGdzdF9vYmplY3RfdW5yZWYgKGZmbXBlZ2RlYyk7Ci0rCi0rICByZXR1cm4gcmV0OwotKwotKyAgLyogRVJST1JTICovCi0rb3Blbl9mYWlsZWQ6Ci0rICB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIkZhaWxlZCB0byBvcGVuIik7Ci0rICAgIGlmIChmZm1wZWdkZWMtPnBhcikgewotKyAgICAgIGdfZnJlZSAoZmZtcGVnZGVjLT5wYXIpOwotKyAgICAgIGZmbXBlZ2RlYy0+cGFyID0gTlVMTDsKLSsgICAgfQotKyAgICByZXQgPSBGQUxTRTsKLSsgICAgZ290byBkb25lOwotKyAgfQotK30KLSsKLStzdGF0aWMgR3N0Rmxvd1JldHVybgotK2FsbG9jX291dHB1dF9idWZmZXIgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywgR3N0QnVmZmVyICoqIG91dGJ1ZiwKLSsgICAgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQpCi0rewotKyAgR3N0Rmxvd1JldHVybiByZXQ7Ci0rICBnaW50IGZzaXplOwotKwotKyAgcmV0ID0gR1NUX0ZMT1dfRVJST1I7Ci0rICAqb3V0YnVmID0gTlVMTDsKLSsKLSsgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJhbGxvYyBvdXRwdXQgYnVmZmVyIik7Ci0rCi0rICAvKiBzZWUgaWYgd2UgbmVlZCByZW5lZ290aWF0aW9uICovCi0rICBpZiAoR19VTkxJS0VMWSAoIWdzdF9mZm1wZWdkZWNfbmVnb3RpYXRlIChmZm1wZWdkZWMsIEZBTFNFKSkpCi0rICAgIGdvdG8gbmVnb3RpYXRlX2ZhaWxlZDsKLSsKLSsgIC8qIGdldCB0aGUgc2l6ZSBvZiB0aGUgZ3N0cmVhbWVyIG91dHB1dCBidWZmZXIgZ2l2ZW4gYQotKyAgICogd2lkdGgvaGVpZ2h0L2Zvcm1hdCAqLwotKyAgZnNpemUgPSBnc3RfZmZtcGVnX2F2cGljdHVyZV9nZXRfc2l6ZSAoZmZtcGVnZGVjLT5jb250ZXh0LT5waXhfZm10LAotKyAgICAgIHdpZHRoLCBoZWlnaHQpOwotKwotKyAgaWYgKGZmbXBlZ2RlYy0+Y2FuX2FsbG9jYXRlX2FsaWduZWQpIHsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImNhbGxpbmcgcGFkX2FsbG9jIik7Ci0rICAgIC8qIG5vIHBhbGxldGUsIHdlIGNhbiB1c2UgdGhlIGJ1ZmZlciBzaXplIHRvIGFsbG9jICovCi0rICAgIHJldCA9IGdzdF9wYWRfYWxsb2NfYnVmZmVyX2FuZF9zZXRfY2FwcyAoZmZtcGVnZGVjLT5zcmNwYWQsCi0rICAgICAgICBHU1RfQlVGRkVSX09GRlNFVF9OT05FLCBmc2l6ZSwKLSsgICAgICAgIEdTVF9QQURfQ0FQUyAoZmZtcGVnZGVjLT5zcmNwYWQpLCBvdXRidWYpOwotKyAgICBpZiAoR19VTkxJS0VMWSAocmV0ICE9IEdTVF9GTE9XX09LKSkKLSsgICAgICBnb3RvIGFsbG9jX2ZhaWxlZDsKLSsKLSsgICAgLyogSWYgYnVmZmVyIGlzbid0IDEyOC1iaXQgYWxpZ25lZCwgY3JlYXRlIGEgbWVtYWxpZ25lZCBvbmUgb3Vyc2VsdmVzICovCi0rICAgIGlmICgoKHVpbnRwdHJfdCkgR1NUX0JVRkZFUl9EQVRBICgqb3V0YnVmKSkgJSAxNikgewotKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICAgIkRvd25zdHJlYW0gY2FuJ3QgYWxsb2NhdGUgYWxpZ25lZCBidWZmZXJzLiIpOwotKyAgICAgIGZmbXBlZ2RlYy0+Y2FuX2FsbG9jYXRlX2FsaWduZWQgPSBGQUxTRTsKLSsgICAgICBnc3RfYnVmZmVyX3VucmVmICgqb3V0YnVmKTsKLSsgICAgICAqb3V0YnVmID0gbmV3X2FsaWduZWRfYnVmZmVyIChmc2l6ZSwgR1NUX1BBRF9DQVBTIChmZm1wZWdkZWMtPnNyY3BhZCkpOwotKyAgICB9Ci0rICB9IGVsc2UgewotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgIm5vdCBjYWxsaW5nIHBhZF9hbGxvYywgd2UgaGF2ZSBhIHBhbGxldGUgb3IgZG93bnN0cmVhbSBjYW4ndCBnaXZlIDE2IGJ5dGUgYWxpZ25lZCBidWZmZXJzLiIpOwotKyAgICAvKiBmb3IgcGFsZXR0ZWQgZGF0YSB3ZSBjYW4ndCB1c2UgcGFkX2FsbG9jX2J1ZmZlcigpLCBiZWNhdXNlCi0rICAgICAqIGZzaXplIGNvbnRhaW5zIHRoZSBzaXplIG9mIHRoZSBwYWxldHRlLCBzbyB0aGUgb3ZlcmFsbCBzaXplCi0rICAgICAqIGlzIGJpZ2dlciB0aGFuIGZmbXBlZ2NvbG9yc3BhY2UncyB1bml0IHNpemUsIHdoaWNoIHdpbGwKLSsgICAgICogcHJvbXB0IEdzdEJhc2VUcmFuc2Zvcm0gdG8gY29tcGxhaW4gZW5kbGVzc2x5IC4uLiAqLwotKyAgICAqb3V0YnVmID0gbmV3X2FsaWduZWRfYnVmZmVyIChmc2l6ZSwgR1NUX1BBRF9DQVBTIChmZm1wZWdkZWMtPnNyY3BhZCkpOwotKyAgICByZXQgPSBHU1RfRkxPV19PSzsKLSsgIH0KLSsgIC8qIHNldCBjYXBzLCB3ZSBkbyB0aGlzIGhlcmUgYmVjYXVzZSB0aGUgYnVmZmVyIGlzIHN0aWxsIHdyaXRhYmxlIGhlcmUgYW5kIHdlCi0rICAgKiBhcmUgc3VyZSB0byBiZSBuZWdvdGlhdGVkICovCi0rICBnc3RfYnVmZmVyX3NldF9jYXBzICgqb3V0YnVmLCBHU1RfUEFEX0NBUFMgKGZmbXBlZ2RlYy0+c3JjcGFkKSk7Ci0rCi0rICByZXR1cm4gcmV0OwotKwotKyAgLyogc3BlY2lhbCBjYXNlcyAqLwotK25lZ290aWF0ZV9mYWlsZWQ6Ci0rICB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIm5lZ290aWF0ZSBmYWlsZWQiKTsKLSsgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOwotKyAgfQotK2FsbG9jX2ZhaWxlZDoKLSsgIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicGFkX2FsbG9jIGZhaWxlZCAlZCAoJXMpIiwgcmV0LAotKyAgICAgICAgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOwotKyAgICByZXR1cm4gcmV0OwotKyAgfQotK30KLSsKLStzdGF0aWMgaW50Ci0rZ3N0X2ZmbXBlZ2RlY19nZXRfYnVmZmVyIChBVkNvZGVjQ29udGV4dCAqIGNvbnRleHQsIEFWRnJhbWUgKiBwaWN0dXJlKQotK3sKLSsgIEdzdEJ1ZmZlciAqYnVmID0gTlVMTDsKLSsgIEdzdEZGTXBlZ0RlYyAqZmZtcGVnZGVjOwotKyAgZ2ludCB3aWR0aCwgaGVpZ2h0OwotKyAgZ2ludCBjb2RlZF93aWR0aCwgY29kZWRfaGVpZ2h0OwotKyAgZ2ludCByZXM7Ci0rCi0rICBmZm1wZWdkZWMgPSAoR3N0RkZNcGVnRGVjICopIGNvbnRleHQtPm9wYXF1ZTsKLSsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImdldHRpbmcgYnVmZmVyIik7Ci0rCi0rICAvKiBhcHBseSB0aGUgbGFzdCBpbmZvIHdlIGhhdmUgc2VlbiB0byB0aGlzIHBpY3R1cmUsIHdoZW4gd2UgZ2V0IHRoZQotKyAgICogcGljdHVyZSBiYWNrIGZyb20gZmZtcGVnIHdlIGNhbiB1c2UgdGhpcyB0byBjb3JyZWN0bHkgdGltZXN0YW1wIHRoZSBvdXRwdXQKLSsgICAqIGJ1ZmZlciAqLwotKyAgcGljdHVyZS0+cmVvcmRlcmVkX29wYXF1ZSA9IGNvbnRleHQtPnJlb3JkZXJlZF9vcGFxdWU7Ci0rICAvKiBtYWtlIHN1cmUgd2UgZG9uJ3QgZnJlZSB0aGUgYnVmZmVyIHdoZW4gaXQncyBub3Qgb3VycyAqLwotKyAgcGljdHVyZS0+b3BhcXVlID0gTlVMTDsKLSsKLSsgIC8qIHRha2Ugd2lkdGggYW5kIGhlaWdodCBiZWZvcmUgY2xpcHBpbmcgKi8KLSsgIHdpZHRoID0gY29udGV4dC0+d2lkdGg7Ci0rICBoZWlnaHQgPSBjb250ZXh0LT5oZWlnaHQ7Ci0rICBjb2RlZF93aWR0aCA9IGNvbnRleHQtPmNvZGVkX3dpZHRoOwotKyAgY29kZWRfaGVpZ2h0ID0gY29udGV4dC0+Y29kZWRfaGVpZ2h0OwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImRpbWVuc2lvbiAlZHglZCwgY29kZWQgJWR4JWQiLCB3aWR0aCwgaGVpZ2h0LAotKyAgICAgIGNvZGVkX3dpZHRoLCBjb2RlZF9oZWlnaHQpOwotKyAgaWYgKCFmZm1wZWdkZWMtPmN1cnJlbnRfZHIpIHsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImRpcmVjdCByZW5kZXJpbmcgZGlzYWJsZWQsIGZhbGxiYWNrIGFsbG9jIik7Ci0rICAgIHJlcyA9IGF2Y29kZWNfZGVmYXVsdF9nZXRfYnVmZmVyIChjb250ZXh0LCBwaWN0dXJlKTsKLSsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImxpbnNpemUgJWQgJWQgJWQiLCBwaWN0dXJlLT5saW5lc2l6ZVswXSwKLSsgICAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzFdLCBwaWN0dXJlLT5saW5lc2l6ZVsyXSk7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJkYXRhICV1ICV1ICV1IiwgMCwKLSsgICAgICAgIChndWludCkgKHBpY3R1cmUtPmRhdGFbMV0gLSBwaWN0dXJlLT5kYXRhWzBdKSwKLSsgICAgICAgIChndWludCkgKHBpY3R1cmUtPmRhdGFbMl0gLSBwaWN0dXJlLT5kYXRhWzBdKSk7Ci0rICAgIHJldHVybiByZXM7Ci0rICB9Ci0rCi0rICBzd2l0Y2ggKGNvbnRleHQtPmNvZGVjX3R5cGUpIHsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfVklERU86Ci0rICAgICAgLyogc29tZSBmZm1wZWcgdmlkZW8gcGx1Z2lucyBkb24ndCBzZWUgdGhlIHBvaW50IGluIHNldHRpbmcgY29kZWNfdHlwZSAuLi4gKi8KLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfVU5LTk9XTjoKLSsgICAgewotKyAgICAgIEdzdEZsb3dSZXR1cm4gcmV0OwotKyAgICAgIGdpbnQgY2xpcF93aWR0aCwgY2xpcF9oZWlnaHQ7Ci0rCi0rICAgICAgLyogdGFrZSBmaW5hbCBjbGlwcGVkIG91dHB1dCBzaXplICovCi0rICAgICAgaWYgKChjbGlwX3dpZHRoID0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF93aWR0aCkgPT0gLTEpCi0rICAgICAgICBjbGlwX3dpZHRoID0gd2lkdGg7Ci0rICAgICAgaWYgKChjbGlwX2hlaWdodCA9IGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfaGVpZ2h0KSA9PSAtMSkKLSsgICAgICAgIGNsaXBfaGVpZ2h0ID0gaGVpZ2h0OwotKwotKyAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJyYXcgb3V0c2l6ZSAlZC8lZCIsIHdpZHRoLCBoZWlnaHQpOwotKwotKyAgICAgIC8qIHRoaXMgaXMgdGhlIHNpemUgZmZtcGVnIG5lZWRzIGZvciB0aGUgYnVmZmVyICovCi0rICAgICAgYXZjb2RlY19hbGlnbl9kaW1lbnNpb25zIChjb250ZXh0LCAmd2lkdGgsICZoZWlnaHQpOwotKwotKyAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJhbGlnbmVkIG91dHNpemUgJWQvJWQsIGNsaXAgJWQvJWQiLAotKyAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBjbGlwX3dpZHRoLCBjbGlwX2hlaWdodCk7Ci0rCi0rICAgICAgaWYgKHdpZHRoICE9IGNsaXBfd2lkdGggfHwgaGVpZ2h0ICE9IGNsaXBfaGVpZ2h0KSB7Ci0rICAgICAgICAvKiBXZSBjYW4ndCBhbGxvYyBpZiB3ZSBuZWVkIHRvIGNsaXAgdGhlIG91dHB1dCBidWZmZXIgbGF0ZXIgKi8KLSsgICAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJ3ZSBuZWVkIGNsaXBwaW5nLCBmYWxsYmFjayBhbGxvYyIpOwotKyAgICAgICAgcmV0dXJuIGF2Y29kZWNfZGVmYXVsdF9nZXRfYnVmZmVyIChjb250ZXh0LCBwaWN0dXJlKTsKLSsgICAgICB9Ci0rCi0rICAgICAgLyogYWxsb2Mgd2l0aCBhbGlnbmVkIGRpbWVuc2lvbnMgZm9yIGZmbXBlZyAqLwotKyAgICAgIHJldCA9IGFsbG9jX291dHB1dF9idWZmZXIgKGZmbXBlZ2RlYywgJmJ1Ziwgd2lkdGgsIGhlaWdodCk7Ci0rICAgICAgaWYgKEdfVU5MSUtFTFkgKHJldCAhPSBHU1RfRkxPV19PSykpIHsKLSsgICAgICAgIC8qIGFsbG9jIGRlZmF1bHQgYnVmZmVyIHdoZW4gd2UgY2FuJ3QgZ2V0IG9uZSBmcm9tIGRvd25zdHJlYW0gKi8KLSsgICAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJhbGxvYyBmYWlsZWQsIGZhbGxiYWNrIGFsbG9jIik7Ci0rICAgICAgICByZXR1cm4gYXZjb2RlY19kZWZhdWx0X2dldF9idWZmZXIgKGNvbnRleHQsIHBpY3R1cmUpOwotKyAgICAgIH0KLSsKLSsgICAgICAvKiBjb3B5IHRoZSByaWdodCBwb2ludGVycyBhbmQgc3RyaWRlcyBpbiB0aGUgcGljdHVyZSBvYmplY3QgKi8KLSsgICAgICBnc3RfZmZtcGVnX2F2cGljdHVyZV9maWxsICgoQVZQaWN0dXJlICopIHBpY3R1cmUsCi0rICAgICAgICAgIEdTVF9CVUZGRVJfREFUQSAoYnVmKSwgY29udGV4dC0+cGl4X2ZtdCwgd2lkdGgsIGhlaWdodCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfQVVESU86Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAiX2dldF9idWZmZXIoKSBzaG91bGQgbmV2ZXIgZ2V0IGNhbGxlZCBmb3Igbm9uLXZpZGVvIGJ1ZmZlcnMgISIpOwotKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgLyogdGVsbCBmZm1wZWcgd2Ugb3duIHRoaXMgYnVmZmVyLCB0cmFuZmVyIHRoZSByZWYgd2UgaGF2ZSBvbiB0aGUgYnVmZmVyIHRvCi0rICAgKiB0aGUgb3BhcXVlIGRhdGEuICovCi0rICBwaWN0dXJlLT50eXBlID0gRkZfQlVGRkVSX1RZUEVfVVNFUjsKLSsgIHBpY3R1cmUtPm9wYXF1ZSA9IGJ1ZjsKLSsKLSsjaWZkZWYgRVhUUkFfUkVGCi0rICBpZiAocGljdHVyZS0+cmVmZXJlbmNlICE9IDAgfHwgZmZtcGVnZGVjLT5leHRyYV9yZWYpIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiYWRkaW5nIGV4dHJhIHJlZiIpOwotKyAgICBnc3RfYnVmZmVyX3JlZiAoYnVmKTsKLSsgIH0KLSsjZW5kaWYKLSsKLSsgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJyZXR1cm5lZCBidWZmZXIgJXAiLCBidWYpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY19yZWxlYXNlX2J1ZmZlciAoQVZDb2RlY0NvbnRleHQgKiBjb250ZXh0LCBBVkZyYW1lICogcGljdHVyZSkKLSt7Ci0rICBnaW50IGk7Ci0rICBHc3RCdWZmZXIgKmJ1ZjsKLSsgIEdzdEZGTXBlZ0RlYyAqZmZtcGVnZGVjOwotKwotKyAgZmZtcGVnZGVjID0gKEdzdEZGTXBlZ0RlYyAqKSBjb250ZXh0LT5vcGFxdWU7Ci0rCi0rICAvKiBjaGVjayBpZiBpdCB3YXMgb3VyIGJ1ZmZlciAqLwotKyAgaWYgKHBpY3R1cmUtPm9wYXF1ZSA9PSBOVUxMKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImRlZmF1bHQgcmVsZWFzZSBidWZmZXIiKTsKLSsgICAgYXZjb2RlY19kZWZhdWx0X3JlbGVhc2VfYnVmZmVyIChjb250ZXh0LCBwaWN0dXJlKTsKLSsgICAgcmV0dXJuOwotKyAgfQotKwotKyAgLyogd2UgcmVtb3ZlIHRoZSBvcGFxdWUgZGF0YSBub3cgKi8KLSsgIGJ1ZiA9IEdTVF9CVUZGRVJfQ0FTVCAocGljdHVyZS0+b3BhcXVlKTsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInJlbGVhc2UgYnVmZmVyICVwIiwgYnVmKTsKLSsgIHBpY3R1cmUtPm9wYXF1ZSA9IE5VTEw7Ci0rCi0rI2lmZGVmIEVYVFJBX1JFRgotKyAgaWYgKHBpY3R1cmUtPnJlZmVyZW5jZSAhPSAwIHx8IGZmbXBlZ2RlYy0+ZXh0cmFfcmVmKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInJlbW92ZSBleHRyYSByZWYiKTsKLSsgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSsgIH0KLSsjZWxzZQotKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSsjZW5kaWYKLSsKLSsgIC8qIHplcm8gb3V0IHRoZSByZWZlcmVuY2UgaW4gZmZtcGVnICovCi0rICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0rICAgIHBpY3R1cmUtPmRhdGFbaV0gPSBOVUxMOwotKyAgICBwaWN0dXJlLT5saW5lc2l6ZVtpXSA9IDA7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY19hZGRfcGl4ZWxfYXNwZWN0X3JhdGlvIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMsCi0rICAgIEdzdFN0cnVjdHVyZSAqIHMpCi0rewotKyAgZ2Jvb2xlYW4gZGVtdXhlcl9wYXJfc2V0ID0gRkFMU0U7Ci0rICBnYm9vbGVhbiBkZWNvZGVyX3Bhcl9zZXQgPSBGQUxTRTsKLSsgIGdpbnQgZGVtdXhlcl9udW0gPSAxLCBkZW11eGVyX2Rlbm9tID0gMTsKLSsgIGdpbnQgZGVjb2Rlcl9udW0gPSAxLCBkZWNvZGVyX2Rlbm9tID0gMTsKLSsKLSsgIEdTVF9PQkpFQ1RfTE9DSyAoZmZtcGVnZGVjKTsKLSsKLSsgIGlmIChmZm1wZWdkZWMtPnBhcikgewotKyAgICBkZW11eGVyX251bSA9IGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25fbnVtZXJhdG9yIChmZm1wZWdkZWMtPnBhcik7Ci0rICAgIGRlbXV4ZXJfZGVub20gPSBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX2Rlbm9taW5hdG9yIChmZm1wZWdkZWMtPnBhcik7Ci0rICAgIGRlbXV4ZXJfcGFyX3NldCA9IFRSVUU7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIkRlbXV4ZXIgUEFSOiAlZDolZCIsIGRlbXV4ZXJfbnVtLAotKyAgICAgICAgZGVtdXhlcl9kZW5vbSk7Ci0rICB9Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bSAmJgotKyAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4pIHsKLSsgICAgZGVjb2Rlcl9udW0gPSBmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtOwotKyAgICBkZWNvZGVyX2Rlbm9tID0gZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLmRlbjsKLSsgICAgZGVjb2Rlcl9wYXJfc2V0ID0gVFJVRTsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiRGVjb2RlciBQQVI6ICVkOiVkIiwgZGVjb2Rlcl9udW0sCi0rICAgICAgICBkZWNvZGVyX2Rlbm9tKTsKLSsgIH0KLSsKLSsgIEdTVF9PQkpFQ1RfVU5MT0NLIChmZm1wZWdkZWMpOwotKwotKyAgaWYgKCFkZW11eGVyX3Bhcl9zZXQgJiYgIWRlY29kZXJfcGFyX3NldCkKLSsgICAgZ290byBub19wYXI7Ci0rCi0rICBpZiAoZGVtdXhlcl9wYXJfc2V0ICYmICFkZWNvZGVyX3Bhcl9zZXQpCi0rICAgIGdvdG8gdXNlX2RlbXV4ZXJfcGFyOwotKwotKyAgaWYgKGRlY29kZXJfcGFyX3NldCAmJiAhZGVtdXhlcl9wYXJfc2V0KQotKyAgICBnb3RvIHVzZV9kZWNvZGVyX3BhcjsKLSsKLSsgIC8qIEJvdGggdGhlIGRlbXV4ZXIgYW5kIHRoZSBkZWNvZGVyIHByb3ZpZGUgYSBQQVIuIElmIG9uZSBvZgotKyAgICogdGhlIHR3byBQQVJzIGlzIDE6MSBhbmQgdGhlIG90aGVyIG9uZSBpcyBub3QsIHVzZSB0aGUgb25lCi0rICAgKiB0aGF0IGlzIG5vdCAxOjEuICovCi0rICBpZiAoZGVtdXhlcl9udW0gPT0gZGVtdXhlcl9kZW5vbSAmJiBkZWNvZGVyX251bSAhPSBkZWNvZGVyX2Rlbm9tKQotKyAgICBnb3RvIHVzZV9kZWNvZGVyX3BhcjsKLSsKLSsgIGlmIChkZWNvZGVyX251bSA9PSBkZWNvZGVyX2Rlbm9tICYmIGRlbXV4ZXJfbnVtICE9IGRlbXV4ZXJfZGVub20pCi0rICAgIGdvdG8gdXNlX2RlbXV4ZXJfcGFyOwotKwotKyAgLyogQm90aCBQQVJzIGFyZSBub24tMToxLCBzbyB1c2UgdGhlIFBBUiBwcm92aWRlZCBieSB0aGUgZGVtdXhlciAqLwotKyAgZ290byB1c2VfZGVtdXhlcl9wYXI7Ci0rCi0rdXNlX2RlY29kZXJfcGFyOgotKyAgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAiU2V0dGluZyBkZWNvZGVyIHByb3ZpZGVkIHBpeGVsLWFzcGVjdC1yYXRpbyBvZiAldToldSIsIGRlY29kZXJfbnVtLAotKyAgICAgICAgZGVjb2Rlcl9kZW5vbSk7Ci0rICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgR1NUX1RZUEVfRlJBQ1RJT04sIGRlY29kZXJfbnVtLAotKyAgICAgICAgZGVjb2Rlcl9kZW5vbSwgTlVMTCk7Ci0rICAgIHJldHVybjsKLSsgIH0KLSsKLSt1c2VfZGVtdXhlcl9wYXI6Ci0rICB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICJTZXR0aW5nIGRlbXV4ZXIgcHJvdmlkZWQgcGl4ZWwtYXNwZWN0LXJhdGlvIG9mICV1OiV1IiwgZGVtdXhlcl9udW0sCi0rICAgICAgICBkZW11eGVyX2Rlbm9tKTsKLSsgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCBHU1RfVFlQRV9GUkFDVElPTiwgZGVtdXhlcl9udW0sCi0rICAgICAgICBkZW11eGVyX2Rlbm9tLCBOVUxMKTsKLSsgICAgcmV0dXJuOwotKyAgfQotK25vX3BhcjoKLSsgIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgIk5laXRoZXIgZGVtdXhlciBub3IgY29kZWMgcHJvdmlkZSBhIHBpeGVsLWFzcGVjdC1yYXRpbyIpOwotKyAgICByZXR1cm47Ci0rICB9Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9mZm1wZWdkZWNfbmVnb3RpYXRlIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMsIGdib29sZWFuIGZvcmNlKQotK3sKLSsgIEdzdEZGTXBlZ0RlY0NsYXNzICpvY2xhc3M7Ci0rICBHc3RDYXBzICpjYXBzOwotKwotKyAgb2NsYXNzID0gKEdzdEZGTXBlZ0RlY0NsYXNzICopIChHX09CSkVDVF9HRVRfQ0xBU1MgKGZmbXBlZ2RlYykpOwotKwotKyAgc3dpdGNoIChvY2xhc3MtPmluX3BsdWdpbi0+dHlwZSkgewotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9WSURFTzoKLSsgICAgICBpZiAoIWZvcmNlICYmIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLndpZHRoID09IGZmbXBlZ2RlYy0+Y29udGV4dC0+d2lkdGgKLSsgICAgICAgICAgJiYgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaGVpZ2h0ID09IGZmbXBlZ2RlYy0+Y29udGV4dC0+aGVpZ2h0Ci0rICAgICAgICAgICYmIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uID09IGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLm9sZF9mcHNfbgotKyAgICAgICAgICAmJiBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfZCA9PSBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5vbGRfZnBzX2QKLSsgICAgICAgICAgJiYgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ucGl4X2ZtdCA9PSBmZm1wZWdkZWMtPmNvbnRleHQtPnBpeF9mbXQKLSsgICAgICAgICAgJiYgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ucGFyX24gPT0KLSsgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLm51bQotKyAgICAgICAgICAmJiBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5wYXJfZCA9PQotKyAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8uZGVuKQotKyAgICAgICAgcmV0dXJuIFRSVUU7Ci0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAiUmVuZWdvdGlhdGluZyB2aWRlbyBmcm9tICVkeCVkQCAlZDolZCBQQVIgJWQvJWQgZnBzIHRvICVkeCVkQCAlZDolZCBQQVIgJWQvJWQgZnBzIiwKLSsgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ud2lkdGgsIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmhlaWdodCwKLSsgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ucGFyX24sIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLnBhcl9kLAotKyAgICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5vbGRfZnBzX24sIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLm9sZF9mcHNfbiwKLSsgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT53aWR0aCwgZmZtcGVnZGVjLT5jb250ZXh0LT5oZWlnaHQsCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5udW0sCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2FtcGxlX2FzcGVjdF9yYXRpby5kZW4sCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uLCBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfZCk7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ud2lkdGggPSBmZm1wZWdkZWMtPmNvbnRleHQtPndpZHRoOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmhlaWdodCA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+aGVpZ2h0OwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLm9sZF9mcHNfbiA9IGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLm9sZF9mcHNfZCA9IGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19kOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLnBpeF9mbXQgPSBmZm1wZWdkZWMtPmNvbnRleHQtPnBpeF9mbXQ7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8ucGFyX24gPQotKyAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9hc3BlY3RfcmF0aW8ubnVtOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLnBhcl9kID0KLSsgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfYXNwZWN0X3JhdGlvLmRlbjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfQVVESU86Ci0rICAgIHsKLSsgICAgICBnaW50IGRlcHRoID0gYXZfc21wX2Zvcm1hdF9kZXB0aCAoZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfZm10KTsKLSsgICAgICBpZiAoIWZvcmNlICYmIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLnNhbXBsZXJhdGUgPT0KLSsgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zYW1wbGVfcmF0ZSAmJgotKyAgICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC5hdWRpby5jaGFubmVscyA9PSBmZm1wZWdkZWMtPmNvbnRleHQtPmNoYW5uZWxzICYmCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLmRlcHRoID09IGRlcHRoKQotKyAgICAgICAgcmV0dXJuIFRSVUU7Ci0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAiUmVuZWdvdGlhdGluZyBhdWRpbyBmcm9tICVkSHpAJWRjaGFubmVscyAoJWQpIHRvICVkSHpAJWRjaGFubmVscyAoJWQpIiwKLSsgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uc2FtcGxlcmF0ZSwgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uY2hhbm5lbHMsCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLmRlcHRoLAotKyAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNhbXBsZV9yYXRlLCBmZm1wZWdkZWMtPmNvbnRleHQtPmNoYW5uZWxzLCBkZXB0aCk7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uc2FtcGxlcmF0ZSA9IGZmbXBlZ2RlYy0+Y29udGV4dC0+c2FtcGxlX3JhdGU7Ci0rICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uY2hhbm5lbHMgPSBmZm1wZWdkZWMtPmNvbnRleHQtPmNoYW5uZWxzOwotKyAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLmRlcHRoID0gZGVwdGg7Ci0rICAgIH0KLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIGNhcHMgPSBnc3RfZmZtcGVnX2NvZGVjdHlwZV90b19jYXBzIChvY2xhc3MtPmluX3BsdWdpbi0+dHlwZSwKLSsgICAgICBmZm1wZWdkZWMtPmNvbnRleHQsIG9jbGFzcy0+aW5fcGx1Z2luLT5pZCwgRkFMU0UpOwotKwotKyAgaWYgKGNhcHMgPT0gTlVMTCkKLSsgICAgZ290byBub19jYXBzOwotKwotKyAgc3dpdGNoIChvY2xhc3MtPmluX3BsdWdpbi0+dHlwZSkgewotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9WSURFTzoKLSsgICAgewotKyAgICAgIGdpbnQgd2lkdGgsIGhlaWdodDsKLSsgICAgICBnYm9vbGVhbiBpbnRlcmxhY2VkOwotKwotKyAgICAgIHdpZHRoID0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF93aWR0aDsKLSsgICAgICBoZWlnaHQgPSBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5jbGlwX2hlaWdodDsKLSsgICAgICBpbnRlcmxhY2VkID0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaW50ZXJsYWNlZDsKLSsKLSsgICAgICBpZiAod2lkdGggIT0gLTEgJiYgaGVpZ2h0ICE9IC0xKSB7Ci0rICAgICAgICAvKiBvdmVyd3JpdGUgdGhlIG91dHB1dCBzaXplIHdpdGggdGhlIGRpbWVuc2lvbiBvZiB0aGUKLSsgICAgICAgICAqIGNsaXBwaW5nIHJlZ2lvbiBidXQgb25seSBpZiB0aGV5IGFyZSBzbWFsbGVyLiAqLwotKyAgICAgICAgaWYgKHdpZHRoIDwgZmZtcGVnZGVjLT5jb250ZXh0LT53aWR0aCkKLSsgICAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgIndpZHRoIiwgR19UWVBFX0lOVCwgd2lkdGgsIE5VTEwpOwotKyAgICAgICAgaWYgKGhlaWdodCA8IGZmbXBlZ2RlYy0+Y29udGV4dC0+aGVpZ2h0KQotKyAgICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgaGVpZ2h0LCBOVUxMKTsKLSsgICAgICB9Ci0rICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImludGVybGFjZWQiLCBHX1RZUEVfQk9PTEVBTiwgaW50ZXJsYWNlZCwKLSsgICAgICAgICAgTlVMTCk7Ci0rCi0rICAgICAgLyogSWYgYSBkZW11eGVyIHByb3ZpZGVkIGEgZnJhbWVyYXRlIHRoZW4gdXNlIGl0ICgjMzEzOTcwKSAqLwotKyAgICAgIGlmIChmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfbiAhPSAtMSkgewotKyAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImZyYW1lcmF0ZSIsCi0rICAgICAgICAgICAgR1NUX1RZUEVfRlJBQ1RJT04sIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19uLAotKyAgICAgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19kLCBOVUxMKTsKLSsgICAgICB9Ci0rICAgICAgZ3N0X2ZmbXBlZ2RlY19hZGRfcGl4ZWxfYXNwZWN0X3JhdGlvIChmZm1wZWdkZWMsCi0rICAgICAgICAgIGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKLSsgICAgewotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICBpZiAoIWdzdF9wYWRfc2V0X2NhcHMgKGZmbXBlZ2RlYy0+c3JjcGFkLCBjYXBzKSkKLSsgICAgZ290byBjYXBzX2ZhaWxlZDsKLSsKLSsgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSsKLSsgIHJldHVybiBUUlVFOwotKwotKyAgLyogRVJST1JTICovCi0rbm9fY2FwczoKLSsgIHsKLSsjaWZkZWYgSEFWRV9GRk1QRUdfVU5JTlNUQUxMRUQKLSsgICAgLyogdXNpbmcgaW50ZXJuYWwgZmZtcGVnIHNuYXBzaG90ICovCi0rICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmZm1wZWdkZWMsIENPUkUsIE5FR09USUFUSU9OLAotKyAgICAgICAgKCJDb3VsZCBub3QgZmluZCBHU3RyZWFtZXIgY2FwcyBtYXBwaW5nIGZvciBGRm1wZWcgY29kZWMgJyVzJy4iLAotKyAgICAgICAgICAgIG9jbGFzcy0+aW5fcGx1Z2luLT5uYW1lKSwgKE5VTEwpKTsKLSsjZWxzZQotKyAgICAvKiB1c2luZyBleHRlcm5hbCBmZm1wZWcgKi8KLSsgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZmbXBlZ2RlYywgQ09SRSwgTkVHT1RJQVRJT04sCi0rICAgICAgICAoIkNvdWxkIG5vdCBmaW5kIEdTdHJlYW1lciBjYXBzIG1hcHBpbmcgZm9yIEZGbXBlZyBjb2RlYyAnJXMnLCBhbmQgIgotKyAgICAgICAgICAgICJ5b3UgYXJlIHVzaW5nIGFuIGV4dGVybmFsIGxpYmF2Y29kZWMuIFRoaXMgaXMgbW9zdCBsaWtlbHkgZHVlIHRvICIKLSsgICAgICAgICAgICAiYSBwYWNrYWdpbmcgcHJvYmxlbSBhbmQvb3IgbGliYXZjb2RlYyBoYXZpbmcgYmVlbiB1cGdyYWRlZCB0byBhICIKLSsgICAgICAgICAgICAidmVyc2lvbiB0aGF0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhpcyB2ZXJzaW9uIG9mICIKLSsgICAgICAgICAgICAiZ3N0cmVhbWVyLWZmbXBlZy4gTWFrZSBzdXJlIHlvdXIgZ3N0cmVhbWVyLWZmbXBlZyBhbmQgbGliYXZjb2RlYyAiCi0rICAgICAgICAgICAgInBhY2thZ2VzIGNvbWUgZnJvbSB0aGUgc2FtZSBzb3VyY2UvcmVwb3NpdG9yeS4iLAotKyAgICAgICAgICAgIG9jbGFzcy0+aW5fcGx1Z2luLT5uYW1lKSwgKE5VTEwpKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotK2NhcHNfZmFpbGVkOgotKyAgewotKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnZGVjLCBDT1JFLCBORUdPVElBVElPTiwgKE5VTEwpLAotKyAgICAgICAgKCJDb3VsZCBub3Qgc2V0IGNhcHMgZm9yIGZmbXBlZyBkZWNvZGVyICglcyksIG5vdCBmaXhlZD8iLAotKyAgICAgICAgICAgIG9jbGFzcy0+aW5fcGx1Z2luLT5uYW1lKSk7Ci0rICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotK30KLSsKLSsvKiBwZXJmb3JtIHFvcyBjYWxjdWxhdGlvbnMgYmVmb3JlIGRlY29kaW5nIHRoZSBuZXh0IGZyYW1lLgotKyAqCi0rICogU2V0cyB0aGUgc2tpcF9mcmFtZSBmbGFnIGFuZCBpZiB0aGluZ3MgYXJlIHJlYWxseSBiYWQsIHNraXBzIHRvIHRoZSBuZXh0Ci0rICoga2V5ZnJhbWUuCi0rICogCi0rICogUmV0dXJucyBUUlVFIGlmIHRoZSBmcmFtZSBzaG91bGQgYmUgZGVjb2RlZCwgRkFMU0UgaWYgdGhlIGZyYW1lIGNhbiBiZSBkcm9wcGVkCi0rICogZW50aXJlbHkuCi0rICovCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X2ZmbXBlZ2RlY19kb19xb3MgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwKLSsgICAgZ2Jvb2xlYW4gKiBtb2RlX3N3aXRjaCkKLSt7Ci0rICBHc3RDbG9ja1RpbWVEaWZmIGRpZmY7Ci0rICBnZG91YmxlIHByb3BvcnRpb247Ci0rICBHc3RDbG9ja1RpbWUgcW9zdGltZSwgZWFybGllc3RfdGltZTsKLSsgIGdib29sZWFuIHJlcyA9IFRSVUU7Ci0rCi0rICAqbW9kZV9zd2l0Y2ggPSBGQUxTRTsKLSsKLSsgIC8qIG5vIHRpbWVzdGFtcCwgY2FuJ3QgZG8gUW9TICovCi0rICBpZiAoR19VTkxJS0VMWSAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEICh0aW1lc3RhbXApKSkKLSsgICAgZ290byBub19xb3M7Ci0rCi0rICAvKiBnZXQgbGF0ZXN0IFFvUyBvYnNlcnZhdGlvbiB2YWx1ZXMgKi8KLSsgIGdzdF9mZm1wZWdkZWNfcmVhZF9xb3MgKGZmbXBlZ2RlYywgJnByb3BvcnRpb24sICZlYXJsaWVzdF90aW1lKTsKLSsKLSsgIC8qIHNraXAgcW9zIGlmIHdlIGhhdmUgbm8gb2JzZXJ2YXRpb24gKHlldCkgKi8KLSsgIGlmIChHX1VOTElLRUxZICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGVhcmxpZXN0X3RpbWUpKSkgewotKyAgICAvKiBubyBza2lwX2ZyYW1lIGluaXRpYWx5ICovCi0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2tpcF9mcmFtZSA9IEFWRElTQ0FSRF9ERUZBVUxUOwotKyAgICBnb3RvIG5vX3FvczsKLSsgIH0KLSsKLSsgIC8qIHFvcyBpcyBkb25lIG9uIHJ1bm5pbmcgdGltZSBvZiB0aGUgdGltZXN0YW1wICovCi0rICBxb3N0aW1lID0gZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lICgmZmZtcGVnZGVjLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCi0rICAgICAgdGltZXN0YW1wKTsKLSsKLSsgIC8qIHRpbWVzdGFtcCBjYW4gYmUgb3V0IG9mIHNlZ21lbnQsIHRoZW4gd2UgZG9uJ3QgZG8gUW9TICovCi0rICBpZiAoR19VTkxJS0VMWSAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChxb3N0aW1lKSkpCi0rICAgIGdvdG8gbm9fcW9zOwotKwotKyAgLyogc2VlIGhvdyBvdXIgbmV4dCB0aW1lc3RhbXAgcmVsYXRlcyB0byB0aGUgbGF0ZXN0IHFvcyB0aW1lc3RhbXAuIG5lZ2F0aXZlCi0rICAgKiB2YWx1ZXMgbWVhbiB3ZSBhcmUgZWFybHksIHBvc2l0aXZlIHZhbHVlcyBtZWFuIHdlIGFyZSB0b28gbGF0ZS4gKi8KLSsgIGRpZmYgPSBHU1RfQ0xPQ0tfRElGRiAocW9zdGltZSwgZWFybGllc3RfdGltZSk7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJRT1M6IHFvc3RpbWUgJSIgR1NUX1RJTUVfRk9STUFUCi0rICAgICAgIiwgZWFybGllc3QgJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTIChxb3N0aW1lKSwKLSsgICAgICBHU1RfVElNRV9BUkdTIChlYXJsaWVzdF90aW1lKSk7Ci0rCi0rICAvKiBpZiB3ZSB1c2luZyBsZXNzIHRoYW4gNDAlIG9mIHRoZSBhdmFpbGFibGUgdGltZSwgd2UgY2FuIHRyeSB0bwotKyAgICogc3BlZWQgdXAgYWdhaW4gd2hlbiB3ZSB3ZXJlIHNsb3cuICovCi0rICBpZiAocHJvcG9ydGlvbiA8IDAuNCAmJiBkaWZmIDwgMCkgewotKyAgICBnb3RvIG5vcm1hbF9tb2RlOwotKyAgfSBlbHNlIHsKLSsgICAgaWYgKGRpZmYgPj0gMCkgewotKyAgICAgIC8qIHdlJ3JlIHRvbyBzbG93LCB0cnkgdG8gc3BlZWQgdXAgKi8KLSsgICAgICAvKiBzd2l0Y2ggdG8gc2tpcF9mcmFtZSBtb2RlICovCi0rICAgICAgZ290byBza2lwX2ZyYW1lOwotKyAgICB9Ci0rICB9Ci0rCi0rbm9fcW9zOgotKyAgZmZtcGVnZGVjLT5wcm9jZXNzZWQrKzsKLSsgIHJldHVybiBUUlVFOwotKwotK25vcm1hbF9tb2RlOgotKyAgewotKyAgICBpZiAoZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lICE9IEFWRElTQ0FSRF9ERUZBVUxUKSB7Ci0rICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lID0gQVZESVNDQVJEX0RFRkFVTFQ7Ci0rICAgICAgKm1vZGVfc3dpdGNoID0gVFJVRTsKLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJRT1M6IG5vcm1hbCBtb2RlICVnIDwgMC40IiwgcHJvcG9ydGlvbik7Ci0rICAgIH0KLSsgICAgZmZtcGVnZGVjLT5wcm9jZXNzZWQrKzsKLSsgICAgcmV0dXJuIFRSVUU7Ci0rICB9Ci0rc2tpcF9mcmFtZToKLSsgIHsKLSsgICAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+c2tpcF9mcmFtZSAhPSBBVkRJU0NBUkRfTk9OUkVGKSB7Ci0rICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lID0gQVZESVNDQVJEX05PTlJFRjsKLSsgICAgICAqbW9kZV9zd2l0Y2ggPSBUUlVFOwotKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICAgIlFPUzogaHVycnkgdXAsIGRpZmYgJSIgR19HSU5UNjRfRk9STUFUICIgPj0gMCIsIGRpZmYpOwotKyAgICB9Ci0rICAgIGdvdG8gZHJvcF9xb3M7Ci0rICB9Ci0rZHJvcF9xb3M6Ci0rICB7Ci0rICAgIEdzdENsb2NrVGltZSBzdHJlYW1fdGltZSwgaml0dGVyOwotKyAgICBHc3RNZXNzYWdlICpxb3NfbXNnOwotKwotKyAgICBmZm1wZWdkZWMtPmRyb3BwZWQrKzsKLSsgICAgc3RyZWFtX3RpbWUgPQotKyAgICAgICAgZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUgKCZmZm1wZWdkZWMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKLSsgICAgICAgIHRpbWVzdGFtcCk7Ci0rICAgIGppdHRlciA9IEdTVF9DTE9DS19ESUZGIChxb3N0aW1lLCBlYXJsaWVzdF90aW1lKTsKLSsgICAgcW9zX21zZyA9Ci0rICAgICAgICBnc3RfbWVzc2FnZV9uZXdfcW9zIChHU1RfT0JKRUNUX0NBU1QgKGZmbXBlZ2RlYyksIEZBTFNFLCBxb3N0aW1lLAotKyAgICAgICAgc3RyZWFtX3RpbWUsIHRpbWVzdGFtcCwgR1NUX0NMT0NLX1RJTUVfTk9ORSk7Ci0rICAgIGdzdF9tZXNzYWdlX3NldF9xb3NfdmFsdWVzIChxb3NfbXNnLCBqaXR0ZXIsIHByb3BvcnRpb24sIDEwMDAwMDApOwotKyAgICBnc3RfbWVzc2FnZV9zZXRfcW9zX3N0YXRzIChxb3NfbXNnLCBHU1RfRk9STUFUX0JVRkZFUlMsCi0rICAgICAgICBmZm1wZWdkZWMtPnByb2Nlc3NlZCwgZmZtcGVnZGVjLT5kcm9wcGVkKTsKLSsgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVF9DQVNUIChmZm1wZWdkZWMpLCBxb3NfbXNnKTsKLSsKLSsgICAgcmV0dXJuIHJlczsKLSsgIH0KLSt9Ci0rCi0rLyogcmV0dXJucyBUUlVFIGlmIGJ1ZmZlciBpcyB3aXRoaW4gc2VnbWVudCwgZWxzZSBGQUxTRS4KLSsgKiBpZiBCdWZmZXIgaXMgb24gc2VnbWVudCBib3JkZXIsIGl0J3MgdGltZXN0YW1wIGFuZCBkdXJhdGlvbiB3aWxsIGJlIGNsaXBwZWQgKi8KLStzdGF0aWMgZ2Jvb2xlYW4KLStjbGlwX3ZpZGVvX2J1ZmZlciAoR3N0RkZNcGVnRGVjICogZGVjLCBHc3RCdWZmZXIgKiBidWYsIEdzdENsb2NrVGltZSBpbl90cywKLSsgICAgR3N0Q2xvY2tUaW1lIGluX2R1cikKLSt7Ci0rICBnYm9vbGVhbiByZXMgPSBUUlVFOwotKyAgZ2ludDY0IGNzdGFydCwgY3N0b3A7Ci0rICBHc3RDbG9ja1RpbWUgc3RvcDsKLSsKLSsgIEdTVF9MT0dfT0JKRUNUIChkZWMsCi0rICAgICAgInRpbWVzdGFtcDolIiBHU1RfVElNRV9GT1JNQVQgIiAsIGR1cmF0aW9uOiUiIEdTVF9USU1FX0ZPUk1BVCwKLSsgICAgICBHU1RfVElNRV9BUkdTIChpbl90cyksIEdTVF9USU1FX0FSR1MgKGluX2R1cikpOwotKwotKyAgLyogY2FuJ3QgY2xpcCB3aXRob3V0IFRJTUUgc2VnbWVudCAqLwotKyAgaWYgKEdfVU5MSUtFTFkgKGRlYy0+c2VnbWVudC5mb3JtYXQgIT0gR1NUX0ZPUk1BVF9USU1FKSkKLSsgICAgZ290byBiZWFjaDsKLSsKLSsgIC8qIHdlIG5lZWQgYSBzdGFydCB0aW1lICovCi0rICBpZiAoR19VTkxJS0VMWSAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChpbl90cykpKQotKyAgICBnb3RvIGJlYWNoOwotKwotKyAgLyogZ2VuZXJhdGUgdmFsaWQgc3RvcCwgaWYgZHVyYXRpb24gdW5rbm93biwgd2UgaGF2ZSB1bmtub3duIHN0b3AgKi8KLSsgIHN0b3AgPQotKyAgICAgIEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChpbl9kdXIpID8gKGluX3RzICsgaW5fZHVyKSA6IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rCi0rICAvKiBub3cgY2xpcCAqLwotKyAgcmVzID0KLSsgICAgICBnc3Rfc2VnbWVudF9jbGlwICgmZGVjLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsIGluX3RzLCBzdG9wLCAmY3N0YXJ0LAotKyAgICAgICZjc3RvcCk7Ci0rICBpZiAoR19VTkxJS0VMWSAoIXJlcykpCi0rICAgIGdvdG8gYmVhY2g7Ci0rCi0rICAvKiB3ZSdyZSBwcmV0dHkgc3VyZSB0aGUgZHVyYXRpb24gb2YgdGhpcyBidWZmZXIgaXMgbm90IHRpbGwgdGhlIGVuZCBvZiB0aGlzCi0rICAgKiBzZWdtZW50ICh3aGljaCBfY2xpcCB3aWxsIGFzc3VtZSB3aGVuIHRoZSBzdG9wIGlzIC0xKSAqLwotKyAgaWYgKHN0b3AgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkKLSsgICAgY3N0b3AgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotKwotKyAgLyogdXBkYXRlIHRpbWVzdGFtcCBhbmQgcG9zc2libHkgZHVyYXRpb24gaWYgdGhlIGNsaXBwZWQgc3RvcCB0aW1lIGlzCi0rICAgKiB2YWxpZCAqLwotKyAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgPSBjc3RhcnQ7Ci0rICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGNzdG9wKSkKLSsgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSA9IGNzdG9wIC0gY3N0YXJ0OwotKwotKyAgR1NUX0xPR19PQkpFQ1QgKGRlYywKLSsgICAgICAiY2xpcHBlZCB0aW1lc3RhbXA6JSIgR1NUX1RJTUVfRk9STUFUICIgLCBkdXJhdGlvbjolIiBHU1RfVElNRV9GT1JNQVQsCi0rICAgICAgR1NUX1RJTUVfQVJHUyAoY3N0YXJ0KSwgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSkpOwotKwotK2JlYWNoOgotKyAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIiVzZHJvcHBpbmciLCAocmVzID8gIm5vdCAiIDogIiIpKTsKLSsgIHJldHVybiByZXM7Ci0rfQotKwotKwotKy8qIGdldCBhbiBvdXRidWYgYnVmZmVyIHdpdGggdGhlIGN1cnJlbnQgcGljdHVyZSAqLwotK3N0YXRpYyBHc3RGbG93UmV0dXJuCi0rZ2V0X291dHB1dF9idWZmZXIgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywgR3N0QnVmZmVyICoqIG91dGJ1ZikKLSt7Ci0rICBHc3RGbG93UmV0dXJuIHJldDsKLSsKLSsgIHJldCA9IEdTVF9GTE9XX09LOwotKyAgKm91dGJ1ZiA9IE5VTEw7Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5waWN0dXJlLT5vcGFxdWUgIT0gTlVMTCkgewotKyAgICAvKiB3ZSBhbGxvY2F0ZWQgYSBwaWN0dXJlIGFscmVhZHkgZm9yIGZmbXBlZyB0byBkZWNvZGUgaW50bywgbGV0J3MgcGljayBpdAotKyAgICAgKiB1cCBhbmQgdXNlIGl0IG5vdy4gKi8KLSsgICAgKm91dGJ1ZiA9IChHc3RCdWZmZXIgKikgZmZtcGVnZGVjLT5waWN0dXJlLT5vcGFxdWU7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJ1c2luZyBvcGFxdWUgYnVmZmVyICVwIiwgKm91dGJ1Zik7Ci0rI2lmbmRlZiBFWFRSQV9SRUYKLSsgICAgZ3N0X2J1ZmZlcl9yZWYgKCpvdXRidWYpOwotKyNlbmRpZgotKyAgfSBlbHNlIHsKLSsgICAgQVZQaWN0dXJlIHBpYywgKm91dHBpYzsKLSsgICAgZ2ludCB3aWR0aCwgaGVpZ2h0OwotKwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiZ2V0IG91dHB1dCBidWZmZXIiKTsKLSsKLSsgICAgLyogZmlndXJlIG91dCBzaXplIG9mIG91dHB1dCBidWZmZXIsIHRoaXMgaXMgdGhlIGNsaXBwZWQgb3V0cHV0IHNpemUgYmVjYXVzZQotKyAgICAgKiB3ZSB3aWxsIGNvcHkgdGhlIHBpY3R1cmUgaW50byBpdCBidXQgb25seSB3aGVuIHRoZSBjbGlwcGluZyByZWdpb24gaXMKLSsgICAgICogc21hbGxlciB0aGFuIHRoZSBhY3R1YWwgcGljdHVyZSBzaXplLiAqLwotKyAgICBpZiAoKHdpZHRoID0gZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uY2xpcF93aWR0aCkgPT0gLTEpCi0rICAgICAgd2lkdGggPSBmZm1wZWdkZWMtPmNvbnRleHQtPndpZHRoOwotKyAgICBlbHNlIGlmICh3aWR0aCA+IGZmbXBlZ2RlYy0+Y29udGV4dC0+d2lkdGgpCi0rICAgICAgd2lkdGggPSBmZm1wZWdkZWMtPmNvbnRleHQtPndpZHRoOwotKwotKyAgICBpZiAoKGhlaWdodCA9IGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmNsaXBfaGVpZ2h0KSA9PSAtMSkKLSsgICAgICBoZWlnaHQgPSBmZm1wZWdkZWMtPmNvbnRleHQtPmhlaWdodDsKLSsgICAgZWxzZSBpZiAoaGVpZ2h0ID4gZmZtcGVnZGVjLT5jb250ZXh0LT5oZWlnaHQpCi0rICAgICAgaGVpZ2h0ID0gZmZtcGVnZGVjLT5jb250ZXh0LT5oZWlnaHQ7Ci0rCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJjbGlwIHdpZHRoICVkL2hlaWdodCAlZCIsIHdpZHRoLCBoZWlnaHQpOwotKwotKyAgICByZXQgPSBhbGxvY19vdXRwdXRfYnVmZmVyIChmZm1wZWdkZWMsIG91dGJ1Ziwgd2lkdGgsIGhlaWdodCk7Ci0rICAgIGlmIChHX1VOTElLRUxZIChyZXQgIT0gR1NUX0ZMT1dfT0spKQotKyAgICAgIGdvdG8gYWxsb2NfZmFpbGVkOwotKwotKyAgICAvKiBvcmlnaW5hbCBmZm1wZWcgY29kZSBkb2VzIG5vdCBoYW5kbGUgb2RkIHNpemVzIGNvcnJlY3RseS4KLSsgICAgICogVGhpcyBwYXRjaGVkIHVwIHZlcnNpb24gZG9lcyAqLwotKyAgICBnc3RfZmZtcGVnX2F2cGljdHVyZV9maWxsICgmcGljLCBHU1RfQlVGRkVSX0RBVEEgKCpvdXRidWYpLAotKyAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5waXhfZm10LCB3aWR0aCwgaGVpZ2h0KTsKLSsKLSsgICAgb3V0cGljID0gKEFWUGljdHVyZSAqKSBmZm1wZWdkZWMtPnBpY3R1cmU7Ci0rCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJsaW5zaXplICVkICVkICVkIiwgb3V0cGljLT5saW5lc2l6ZVswXSwKLSsgICAgICAgIG91dHBpYy0+bGluZXNpemVbMV0sIG91dHBpYy0+bGluZXNpemVbMl0pOwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiZGF0YSAldSAldSAldSIsIDAsCi0rICAgICAgICAoZ3VpbnQpIChvdXRwaWMtPmRhdGFbMV0gLSBvdXRwaWMtPmRhdGFbMF0pLAotKyAgICAgICAgKGd1aW50KSAob3V0cGljLT5kYXRhWzJdIC0gb3V0cGljLT5kYXRhWzBdKSk7Ci0rCi0rICAgIGF2X3BpY3R1cmVfY29weSAoJnBpYywgb3V0cGljLCBmZm1wZWdkZWMtPmNvbnRleHQtPnBpeF9mbXQsIHdpZHRoLCBoZWlnaHQpOwotKyAgfQotKyAgZmZtcGVnZGVjLT5waWN0dXJlLT5yZW9yZGVyZWRfb3BhcXVlID0gLTE7Ci0rCi0rICByZXR1cm4gcmV0OwotKwotKyAgLyogc3BlY2lhbCBjYXNlcyAqLwotK2FsbG9jX2ZhaWxlZDoKLSsgIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicGFkX2FsbG9jIGZhaWxlZCIpOwotKyAgICByZXR1cm4gcmV0OwotKyAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2NsZWFyX3F1ZXVlZCAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjKQotK3sKLSsgIGdfbGlzdF9mb3JlYWNoIChmZm1wZWdkZWMtPnF1ZXVlZCwgKEdGdW5jKSBnc3RfbWluaV9vYmplY3RfdW5yZWYsIE5VTEwpOwotKyAgZ19saXN0X2ZyZWUgKGZmbXBlZ2RlYy0+cXVldWVkKTsKLSsgIGZmbXBlZ2RlYy0+cXVldWVkID0gTlVMTDsKLSt9Ci0rCi0rc3RhdGljIEdzdEZsb3dSZXR1cm4KLStmbHVzaF9xdWV1ZWQgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYykKLSt7Ci0rICBHc3RGbG93UmV0dXJuIHJlcyA9IEdTVF9GTE9XX09LOwotKwotKyAgd2hpbGUgKGZmbXBlZ2RlYy0+cXVldWVkKSB7Ci0rICAgIEdzdEJ1ZmZlciAqYnVmID0gR1NUX0JVRkZFUl9DQVNUIChmZm1wZWdkZWMtPnF1ZXVlZC0+ZGF0YSk7Ci0rCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJwdXNoaW5nIGJ1ZmZlciAlcCwgb2Zmc2V0ICUiCi0rICAgICAgICBHX0dVSU5UNjRfRk9STUFUICIsIHRpbWVzdGFtcCAlIgotKyAgICAgICAgR1NUX1RJTUVfRk9STUFUICIsIGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwgYnVmLAotKyAgICAgICAgR1NUX0JVRkZFUl9PRkZTRVQgKGJ1ZiksCi0rICAgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSksCi0rICAgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpKSk7Ci0rCi0rICAgIC8qIGl0ZXJhdGUgb3VwdXQgcXVldWUgYW4gcHVzaCBkb3duc3RyZWFtICovCi0rICAgIHJlcyA9IGdzdF9wYWRfcHVzaCAoZmZtcGVnZGVjLT5zcmNwYWQsIGJ1Zik7Ci0rCi0rICAgIGZmbXBlZ2RlYy0+cXVldWVkID0KLSsgICAgICAgIGdfbGlzdF9kZWxldGVfbGluayAoZmZtcGVnZGVjLT5xdWV1ZWQsIGZmbXBlZ2RlYy0+cXVldWVkKTsKLSsgIH0KLSsgIHJldHVybiByZXM7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2F2cGFja2V0X2luaXQgKEFWUGFja2V0ICogcGFja2V0LCBndWludDggKiBkYXRhLCBndWludCBzaXplKQotK3sKLSsgIG1lbXNldCAocGFja2V0LCAwLCBzaXplb2YgKEFWUGFja2V0KSk7Ci0rICBwYWNrZXQtPmRhdGEgPSBkYXRhOwotKyAgcGFja2V0LT5zaXplID0gc2l6ZTsKLSt9Ci0rCi0rLyogZ3N0X2ZmbXBlZ2RlY19bdmlkZW98YXVkaW9dX2ZyYW1lOgotKyAqIGZmbXBlZ2RlYzoKLSsgKiBkYXRhOiBwb2ludGVyIHRvIHRoZSBkYXRhIHRvIGRlY29kZQotKyAqIHNpemU6IHNpemUgb2YgZGF0YSBpbiBieXRlcwotKyAqIGluX3RpbWVzdGFtcDogaW5jb21pbmcgdGltZXN0YW1wLgotKyAqIGluX2R1cmF0aW9uOiBpbmNvbWluZyBkdXJhdGlvbi4KLSsgKiBpbl9vZmZzZXQ6IGluY29taW5nIG9mZnNldCAoZnJhbWUgbnVtYmVyKS4KLSsgKiBvdXRidWY6IG91dGdvaW5nIGJ1ZmZlci4gRGlmZmVyZW50IGZyb20gTlVMTCBPTkxZIGlmIGl0IGNvbnRhaW5zIGRlY29kZWQgZGF0YS4KLSsgKiByZXQ6IFJldHVybiBmbG93LgotKyAqCi0rICogUmV0dXJuczogbnVtYmVyIG9mIGJ5dGVzIHVzZWQgaW4gZGVjb2RpbmcuIFRoZSBjaGVjayBmb3Igc3VjY2Vzc2Z1bCBkZWNvZGUgaXMKLSsgKiAgIG91dGJ1ZiBiZWluZyBub24tTlVMTC4KLSsgKi8KLStzdGF0aWMgZ2ludAotK2dzdF9mZm1wZWdkZWNfdmlkZW9fZnJhbWUgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywKLSsgICAgZ3VpbnQ4ICogZGF0YSwgZ3VpbnQgc2l6ZSwKLSsgICAgY29uc3QgR3N0VFNJbmZvICogZGVjX2luZm8sIEdzdEJ1ZmZlciAqKiBvdXRidWYsIEdzdEZsb3dSZXR1cm4gKiByZXQpCi0rewotKyAgZ2ludCBsZW4gPSAtMTsKLSsgIGdpbnQgaGF2ZV9kYXRhOwotKyAgZ2Jvb2xlYW4gbW9kZV9zd2l0Y2g7Ci0rICBnYm9vbGVhbiBkZWNvZGU7Ci0rICBnaW50IHNraXBfZnJhbWUgPSBBVkRJU0NBUkRfREVGQVVMVDsKLSsgIEdzdENsb2NrVGltZSBvdXRfdGltZXN0YW1wLCBvdXRfZHVyYXRpb24sIG91dF9wdHM7Ci0rICBnaW50NjQgb3V0X29mZnNldDsKLSsgIGNvbnN0IEdzdFRTSW5mbyAqb3V0X2luZm87Ci0rICBBVlBhY2tldCBwYWNrZXQ7Ci0rCi0rICAqcmV0ID0gR1NUX0ZMT1dfT0s7Ci0rICAqb3V0YnVmID0gTlVMTDsKLSsKLSsgIGZmbXBlZ2RlYy0+Y29udGV4dC0+b3BhcXVlID0gZmZtcGVnZGVjOwotKwotKyAgLyogaW4gY2FzZSB3ZSBza2lwIGZyYW1lcyAqLwotKyAgZmZtcGVnZGVjLT5waWN0dXJlLT5waWN0X3R5cGUgPSAtMTsKLSsKLSsgIC8qIHJ1biBRb1MgY29kZSwgd2UgZG9uJ3Qgc3RvcCBkZWNvZGluZyB0aGUgZnJhbWUgd2hlbiB3ZSBhcmUgbGF0ZSBiZWNhdXNlCi0rICAgKiBlbHNlIHdlIG1pZ2h0IHNraXAgYSByZWZlcmVuY2UgZnJhbWUgKi8KLSsgIGRlY29kZSA9IGdzdF9mZm1wZWdkZWNfZG9fcW9zIChmZm1wZWdkZWMsIGRlY19pbmZvLT50aW1lc3RhbXAsICZtb2RlX3N3aXRjaCk7Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5pc19yZWFsdmlkZW8gJiYgZGF0YSAhPSBOVUxMKSB7Ci0rICAgIGdpbnQgc2xpY2VfY291bnQ7Ci0rICAgIGdpbnQgaTsKLSsKLSsgICAgLyogc2V0dXAgdGhlIHNsaWNlIHRhYmxlIGZvciByZWFsdmlkZW8gKi8KLSsgICAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+c2xpY2Vfb2Zmc2V0ID09IE5VTEwpCi0rICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zbGljZV9vZmZzZXQgPSBnX21hbGxvYyAoc2l6ZW9mIChndWludDMyKSAqIDEwMDApOwotKwotKyAgICBzbGljZV9jb3VudCA9ICgqZGF0YSsrKSArIDE7Ci0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2xpY2VfY291bnQgPSBzbGljZV9jb3VudDsKLSsKLSsgICAgZm9yIChpID0gMDsgaSA8IHNsaWNlX2NvdW50OyBpKyspIHsKLSsgICAgICBkYXRhICs9IDQ7Ci0rICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT5zbGljZV9vZmZzZXRbaV0gPSBHU1RfUkVBRF9VSU5UMzJfTEUgKGRhdGEpOwotKyAgICAgIGRhdGEgKz0gNDsKLSsgICAgfQotKyAgfQotKwotKyAgaWYgKCFkZWNvZGUpIHsKLSsgICAgLyogbm8gZGVjb2RpbmcgbmVlZGVkLCBzYXZlIHByZXZpb3VzIHNraXBfZnJhbWUgdmFsdWUgYW5kIGJydXRlbHkgc2tpcAotKyAgICAgKiBkZWNvZGluZyBldmVyeXRoaW5nICovCi0rICAgIHNraXBfZnJhbWUgPSBmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWU7Ci0rICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+c2tpcF9mcmFtZSA9IEFWRElTQ0FSRF9OT05SRUY7Ci0rICB9Ci0rCi0rICAvKiBzYXZlIHJlZmVyZW5jZSB0byB0aGUgdGltaW5nIGluZm8gKi8KLSsgIGZmbXBlZ2RlYy0+Y29udGV4dC0+cmVvcmRlcmVkX29wYXF1ZSA9IChnaW50NjQpIGRlY19pbmZvLT5pZHg7Ci0rICBmZm1wZWdkZWMtPnBpY3R1cmUtPnJlb3JkZXJlZF9vcGFxdWUgPSAoZ2ludDY0KSBkZWNfaW5mby0+aWR4OwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAic3RvcmVkIG9wYXF1ZSB2YWx1ZXMgaWR4ICVkIiwgZGVjX2luZm8tPmlkeCk7Ci0rCi0rICAvKiBub3cgZGVjb2RlIHRoZSBmcmFtZSAqLwotKyAgZ3N0X2F2cGFja2V0X2luaXQgKCZwYWNrZXQsIGRhdGEsIHNpemUpOwotKyAgbGVuID0gYXZjb2RlY19kZWNvZGVfdmlkZW8yIChmZm1wZWdkZWMtPmNvbnRleHQsCi0rICAgICAgZmZtcGVnZGVjLT5waWN0dXJlLCAmaGF2ZV9kYXRhLCAmcGFja2V0KTsKLSsKLSsgIC8qIHJlc3RvcmUgcHJldmlvdXMgc3RhdGUgKi8KLSsgIGlmICghZGVjb2RlKQotKyAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUgPSBza2lwX2ZyYW1lOwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiYWZ0ZXIgZGVjb2RlOiBsZW4gJWQsIGhhdmVfZGF0YSAlZCIsCi0rICAgICAgbGVuLCBoYXZlX2RhdGEpOwotKwotKyAgLyogd2hlbiB3ZSBhcmUgaW4gc2tpcF9mcmFtZSBtb2RlLCBkb24ndCBjb21wbGFpbiB3aGVuIGZmbXBlZyByZXR1cm5lZAotKyAgICogbm8gZGF0YSBiZWNhdXNlIHdlIHRvbGQgaXQgdG8gc2tpcCBzdHVmZi4gKi8KLSsgIGlmIChsZW4gPCAwICYmIChtb2RlX3N3aXRjaCB8fCBmZm1wZWdkZWMtPmNvbnRleHQtPnNraXBfZnJhbWUpKQotKyAgICBsZW4gPSAwOwotKwotKyAgaWYgKGxlbiA+IDAgJiYgaGF2ZV9kYXRhIDw9IDAgJiYgKG1vZGVfc3dpdGNoCi0rICAgICAgICAgIHx8IGZmbXBlZ2RlYy0+Y29udGV4dC0+c2tpcF9mcmFtZSkpIHsKLSsgICAgLyogd2UgY29uc3VtZWQgc29tZSBieXRlcyBidXQgbm90aGluZyBkZWNvZGVkIGFuZCB3ZSBhcmUgc2tpcHBpbmcgZnJhbWVzLAotKyAgICAgKiBkaXNhYmxlIHRoZSBpbnRlcnBvbGxhdGlvbiBvZiBEVFMgdGltZXN0YW1wcyAqLwotKyAgICBmZm1wZWdkZWMtPmxhc3Rfb3V0ID0gLTE7Ci0rICB9Ci0rCi0rICAvKiBubyBkYXRhLCB3ZSdyZSBkb25lICovCi0rICBpZiAobGVuIDwgMCB8fCBoYXZlX2RhdGEgPD0gMCkKLSsgICAgZ290byBiZWFjaDsKLSsKLSsgIC8qIGdldCB0aGUgb3V0cHV0IHBpY3R1cmUgdGltaW5nIGluZm8gYWdhaW4gKi8KLSsgIG91dF9pbmZvID0gZ3N0X3RzX2luZm9fZ2V0IChmZm1wZWdkZWMsIGZmbXBlZ2RlYy0+cGljdHVyZS0+cmVvcmRlcmVkX29wYXF1ZSk7Ci0rICBvdXRfcHRzID0gb3V0X2luZm8tPnRpbWVzdGFtcDsKLSsgIG91dF9kdXJhdGlvbiA9IG91dF9pbmZvLT5kdXJhdGlvbjsKLSsgIG91dF9vZmZzZXQgPSBvdXRfaW5mby0+b2Zmc2V0OwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICJwdHMgJSIgR19HVUlOVDY0X0ZPUk1BVCAiIGR1cmF0aW9uICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBvZmZzZXQgJSIKLSsgICAgICBHX0dJTlQ2NF9GT1JNQVQsIG91dF9wdHMsIG91dF9kdXJhdGlvbiwgb3V0X29mZnNldCk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJwaWN0dXJlOiBwdHMgJSIgR19HVUlOVDY0X0ZPUk1BVCwKLSsgICAgICAoZ3VpbnQ2NCkgZmZtcGVnZGVjLT5waWN0dXJlLT5wdHMpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicGljdHVyZTogbnVtICVkIiwKLSsgICAgICBmZm1wZWdkZWMtPnBpY3R1cmUtPmNvZGVkX3BpY3R1cmVfbnVtYmVyKTsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInBpY3R1cmU6IHJlZiAlZCIsCi0rICAgICAgZmZtcGVnZGVjLT5waWN0dXJlLT5yZWZlcmVuY2UpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicGljdHVyZTogZGlzcGxheSAlZCIsCi0rICAgICAgZmZtcGVnZGVjLT5waWN0dXJlLT5kaXNwbGF5X3BpY3R1cmVfbnVtYmVyKTsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgInBpY3R1cmU6IG9wYXF1ZSAlcCIsCi0rICAgICAgZmZtcGVnZGVjLT5waWN0dXJlLT5vcGFxdWUpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicGljdHVyZTogcmVvcmRlcmVkIG9wYXF1ZSAlIiBHX0dVSU5UNjRfRk9STUFULAotKyAgICAgIChndWludDY0KSBmZm1wZWdkZWMtPnBpY3R1cmUtPnJlb3JkZXJlZF9vcGFxdWUpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAicmVwZWF0X3BpY3Q6JWQiLAotKyAgICAgIGZmbXBlZ2RlYy0+cGljdHVyZS0+cmVwZWF0X3BpY3QpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiaW50ZXJsYWNlZF9mcmFtZTolZCIsCi0rICAgICAgZmZtcGVnZGVjLT5waWN0dXJlLT5pbnRlcmxhY2VkX2ZyYW1lKTsKLSsKLSsgIGlmIChHX1VOTElLRUxZIChmZm1wZWdkZWMtPnBpY3R1cmUtPmludGVybGFjZWRfZnJhbWUgIT0KLSsgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaW50ZXJsYWNlZCkpIHsKLSsgICAgR1NUX1dBUk5JTkcgKCJDaGFuZ2UgaW4gaW50ZXJsYWNpbmcgISBwaWN0dXJlOiVkLCByZWNvcmRlZDolZCIsCi0rICAgICAgICBmZm1wZWdkZWMtPnBpY3R1cmUtPmludGVybGFjZWRfZnJhbWUsCi0rICAgICAgICBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5pbnRlcmxhY2VkKTsKLSsgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uaW50ZXJsYWNlZCA9IGZmbXBlZ2RlYy0+cGljdHVyZS0+aW50ZXJsYWNlZF9mcmFtZTsKLSsgICAgZ3N0X2ZmbXBlZ2RlY19uZWdvdGlhdGUgKGZmbXBlZ2RlYywgVFJVRSk7Ci0rICB9Ci0rCi0rICAvKiBXaGV0aGVyIGEgZnJhbWUgaXMgaW50ZXJsYWNlZCBvciBub3QgaXMgdW5rbm93biBhdCB0aGUgdGltZSBvZgotKyAgICAgYnVmZmVyIGFsbG9jYXRpb24sIHNvIGNhcHMgb24gdGhlIGJ1ZmZlciBpbiBvcGFxdWUgd2lsbCBoYXZlCi0rICAgICB0aGUgcHJldmlvdXMgZnJhbWUncyBpbnRlcmxhY2VkIGZsYWcgc2V0LiBTbyBpZiBpbnRlcmxhY2VkbmVzcwotKyAgICAgaGFzIGNoYW5nZWQgc2luY2UgYWxsb2NhdGlvbiwgd2UgdXBkYXRlIHRoZSBidWZmZXIgKGlmIGFueSkKLSsgICAgIGNhcHMgbm93IHdpdGggdGhlIGNvcnJlY3QgaW50ZXJsYWNlZCBmbGFnLiAqLwotKyAgaWYgKGZmbXBlZ2RlYy0+cGljdHVyZS0+b3BhcXVlICE9IE5VTEwpIHsKLSsgICAgR3N0QnVmZmVyICpidWZmZXIgPSBmZm1wZWdkZWMtPnBpY3R1cmUtPm9wYXF1ZTsKLSsgICAgaWYgKEdTVF9CVUZGRVJfQ0FQUyAoYnVmZmVyKSAmJiBHU1RfUEFEX0NBUFMgKGZmbXBlZ2RlYy0+c3JjcGFkKSkgewotKyAgICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKEdTVF9CVUZGRVJfQ0FQUyAoYnVmZmVyKSwgMCk7Ci0rICAgICAgZ2Jvb2xlYW4gaW50ZXJsYWNlZDsKLSsgICAgICBnYm9vbGVhbiBmb3VuZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHMsICJpbnRlcmxhY2VkIiwgJmludGVybGFjZWQpOwotKyAgICAgIGlmICghZm91bmQgfHwgKCEhaW50ZXJsYWNlZCAhPSAhIWZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmludGVybGFjZWQpKSB7Ci0rICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAgICAgIkJ1ZmZlciBpbnRlcmxhY2luZyBkb2VzIG5vdCBtYXRjaCBwYWQsIHVwZGF0aW5nIik7Ci0rICAgICAgICBidWZmZXIgPSBnc3RfYnVmZmVyX21ha2VfbWV0YWRhdGFfd3JpdGFibGUgKGJ1ZmZlcik7Ci0rICAgICAgICBnc3RfYnVmZmVyX3NldF9jYXBzIChidWZmZXIsIEdTVF9QQURfQ0FQUyAoZmZtcGVnZGVjLT5zcmNwYWQpKTsKLSsgICAgICAgIGZmbXBlZ2RlYy0+cGljdHVyZS0+b3BhcXVlID0gYnVmZmVyOwotKyAgICAgIH0KLSsgICAgfQotKyAgfQotKwotKyAgLyogY2hlY2sgdGhhdCB0aGUgdGltZXN0YW1wcyBnbyB1cHdhcmRzICovCi0rICBpZiAoZmZtcGVnZGVjLT5sYXN0X291dCAhPSAtMSAmJiBmZm1wZWdkZWMtPmxhc3Rfb3V0ID4gb3V0X3B0cykgewotKyAgICAvKiB0aW1lc3RhbXBzIGdvIGJhY2t3YXJkcywgdGhpcyBtZWFucyBmcmFtZXMgd2VyZSByZW9yZGVyZWQgYW5kIHdlIG11c3QKLSsgICAgICogYmUgZGVhbGluZyB3aXRoIERUUyBhcyB0aGUgYnVmZmVyIHRpbWVzdGFtcHMgKi8KLSsgICAgaWYgKCFmZm1wZWdkZWMtPnJlb3JkZXJlZF9vdXQpIHsKLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJkZXRlY3RlZCByZW9yZGVyZWQgb3V0IHRpbWVzdGFtcHMiKTsKLSsgICAgICBmZm1wZWdkZWMtPnJlb3JkZXJlZF9vdXQgPSBUUlVFOwotKyAgICB9Ci0rICAgIGlmIChmZm1wZWdkZWMtPnJlb3JkZXJlZF9pbikgewotKyAgICAgIC8qIHdlIHJlc2V0IHRoZSBpbnB1dCByZW9yZGVyaW5nIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRvIHJlY292ZXIgZnJvbSBhbgotKyAgICAgICAqIG9jY2FzaW9uYWxseSB3cm9uZyByZW9yZGVyZWQgaW5wdXQgdGltZXN0YW1wICovCi0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiYXNzdW1pbmcgRFRTIGlucHV0IHRpbWVzdGFtcHMiKTsKLSsgICAgICBmZm1wZWdkZWMtPnJlb3JkZXJlZF9pbiA9IEZBTFNFOwotKyAgICB9Ci0rICB9Ci0rCi0rICBpZiAob3V0X3B0cyA9PSAwICYmIG91dF9wdHMgPT0gZmZtcGVnZGVjLT5sYXN0X291dCkgewotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiZmZtcGVnIHJldHVybnMgMCB0aW1lc3RhbXBzLCBpZ25vcmluZyIpOwotKyAgICAvKiBzb21lIGNvZGVjcyBvbmx5IG91dHB1dCAwIHRpbWVzdGFtcHMsIHdoZW4gdGhhdCBoYXBwZW5zLCBtYWtlIHVzIHNlbGVjdCBhbgotKyAgICAgKiBvdXRwdXQgdGltZXN0YW1wIGJhc2VkIG9uIHRoZSBpbnB1dCB0aW1lc3RhbXAuIFdlIGRvIHRoaXMgYnkgbWFraW5nIHRoZQotKyAgICAgKiBmZm1wZWcgdGltZXN0YW1wIGFuZCB0aGUgaW50ZXJwb2xsYXRlZCBuZXh0IHRpbWVzdGFtcCBpbnZhbGlkLiAqLwotKyAgICBvdXRfcHRzID0gLTE7Ci0rICAgIGZmbXBlZ2RlYy0+bmV4dF9vdXQgPSAtMTsKLSsgIH0gZWxzZQotKyAgICBmZm1wZWdkZWMtPmxhc3Rfb3V0ID0gb3V0X3B0czsKLSsKLSsgIC8qIHdlIGFzc3VtZSBEVFMgYXMgaW5wdXQgdGltZXN0YW1wcyB1bmxlc3Mgd2Ugc2VlIHJlb3JkZXJlZCBpbnB1dAotKyAgICogdGltZXN0YW1wcyAqLwotKyAgaWYgKCFmZm1wZWdkZWMtPnJlb3JkZXJlZF9pbiAmJiBmZm1wZWdkZWMtPnJlb3JkZXJlZF9vdXQpIHsKLSsgICAgLyogUFRTIGFuZCBEVFMgYXJlIHRoZSBzYW1lIGZvciBrZXlmcmFtZXMgKi8KLSsgICAgaWYgKGZmbXBlZ2RlYy0+bmV4dF9vdXQgIT0gLTEpIHsKLSsgICAgICAvKiBpbnRlcnBvbGF0ZSBhbGwgdGltZXN0YW1wcyBleGNlcHQgZm9yIGtleWZyYW1lcywgRklYTUUsIHRoaXMgaXMKLSsgICAgICAgKiB3cm9uZyB3aGVuIFFvUyBpcyBhY3RpdmUuICovCi0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiaW50ZXJwb2xhdGUgdGltZXN0YW1wcyIpOwotKyAgICAgIG91dF9wdHMgPSAtMTsKLSsgICAgICBvdXRfb2Zmc2V0ID0gLTE7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIC8qIGdldCBhIGhhbmRsZSB0byB0aGUgb3V0cHV0IGJ1ZmZlciAqLwotKyAgKnJldCA9IGdldF9vdXRwdXRfYnVmZmVyIChmZm1wZWdkZWMsIG91dGJ1Zik7Ci0rICBpZiAoR19VTkxJS0VMWSAoKnJldCAhPSBHU1RfRkxPV19PSykpCi0rICAgIGdvdG8gbm9fb3V0cHV0OwotKwotKyAgLyoKLSsgICAqIFRpbWVzdGFtcHM6Ci0rICAgKgotKyAgICogIDEpIENvcHkgcGljdHVyZSB0aW1lc3RhbXAgaWYgdmFsaWQKLSsgICAqICAyKSBlbHNlIGludGVycG9sYXRlIGZyb20gcHJldmlvdXMgb3V0cHV0IHRpbWVzdGFtcAotKyAgICogIDMpIGVsc2UgY29weSBpbnB1dCB0aW1lc3RhbXAKLSsgICAqLwotKyAgb3V0X3RpbWVzdGFtcCA9IC0xOwotKyAgaWYgKG91dF9wdHMgIT0gLTEpIHsKLSsgICAgLyogR2V0IChpbnRlcnBvbGF0ZWQpIHRpbWVzdGFtcCBmcm9tIEZGTVBFRyAqLwotKyAgICBvdXRfdGltZXN0YW1wID0gKEdzdENsb2NrVGltZSkgb3V0X3B0czsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInVzaW5nIHRpbWVzdGFtcCAlIiBHU1RfVElNRV9GT1JNQVQKLSsgICAgICAgICIgcmV0dXJuZWQgYnkgZmZtcGVnIiwgR1NUX1RJTUVfQVJHUyAob3V0X3RpbWVzdGFtcCkpOwotKyAgfQotKyAgaWYgKCFHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAob3V0X3RpbWVzdGFtcCkgJiYgZmZtcGVnZGVjLT5uZXh0X291dCAhPSAtMSkgewotKyAgICBvdXRfdGltZXN0YW1wID0gZmZtcGVnZGVjLT5uZXh0X291dDsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInVzaW5nIG5leHQgdGltZXN0YW1wICUiIEdTVF9USU1FX0ZPUk1BVCwKLSsgICAgICAgIEdTVF9USU1FX0FSR1MgKG91dF90aW1lc3RhbXApKTsKLSsgIH0KLSsgIGlmICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKG91dF90aW1lc3RhbXApKSB7Ci0rICAgIG91dF90aW1lc3RhbXAgPSBkZWNfaW5mby0+dGltZXN0YW1wOwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAidXNpbmcgaW4gdGltZXN0YW1wICUiIEdTVF9USU1FX0ZPUk1BVCwKLSsgICAgICAgIEdTVF9USU1FX0FSR1MgKG91dF90aW1lc3RhbXApKTsKLSsgIH0KLSsgIEdTVF9CVUZGRVJfVElNRVNUQU1QICgqb3V0YnVmKSA9IG91dF90aW1lc3RhbXA7Ci0rCi0rICAvKgotKyAgICogT2Zmc2V0OgotKyAgICogIDApIFVzZSBzdG9yZWQgaW5wdXQgb2Zmc2V0IChmcm9tIG9wYXF1ZSkKLSsgICAqICAxKSBVc2UgdmFsdWUgY29udmVydGVkIGZyb20gdGltZXN0YW1wIGlmIHZhbGlkCi0rICAgKiAgMikgVXNlIGlucHV0IG9mZnNldCBpZiB2YWxpZAotKyAgICovCi0rICBpZiAob3V0X29mZnNldCAhPSBHU1RfQlVGRkVSX09GRlNFVF9OT05FKSB7Ci0rICAgIC8qIG91dF9vZmZzZXQgYWxyZWFkeSBjb250YWlucyB0aGUgb2Zmc2V0IGZyb20gdHNfaW5mbyAqLwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiVXNpbmcgb2Zmc2V0IHJldHVybmVkIGJ5IGZmbXBlZyIpOwotKyAgfSBlbHNlIGlmIChvdXRfdGltZXN0YW1wICE9IEdTVF9DTE9DS19USU1FX05PTkUpIHsKLSsgICAgR3N0Rm9ybWF0IG91dF9mbXQgPSBHU1RfRk9STUFUX0RFRkFVTFQ7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJVc2luZyBvZmZzZXQgY29udmVydGVkIGZyb20gdGltZXN0YW1wIik7Ci0rICAgIC8qIEZJWE1FLCB3ZSBzaG91bGQgcmVhbGx5IHJlbW92ZSB0aGlzIGFzIGl0J3Mgbm90IG5pY2UgYXQgYWxsIHRvIGRvCi0rICAgICAqIHVwc3RyZWFtIHF1ZXJpZXMgZm9yIGVhY2ggZnJhbWUgdG8gZ2V0IHRoZSBmcmFtZSBvZmZzZXQuIFdlIGFsc28gY2FuJ3QKLSsgICAgICogcmVhbGx5IHJlbW92ZSB0aGlzIGJlY2F1c2UgaXQgaXMgdGhlIG9ubHkgd2F5IG9mIHNldHRpbmcgZnJhbWUgb2Zmc2V0cwotKyAgICAgKiBvbiBvdXRnb2luZyBidWZmZXJzLiBXZSBzaG91bGQgaGF2ZSBtZXRhZGF0YSBzbyB0aGF0IHRoZSB1cHN0cmVhbSBwZWVyCi0rICAgICAqIGNhbiBzZXQgYSBmcmFtZSBudW1iZXIgb24gdGhlIGVuY29kZWQgZGF0YS4gKi8KLSsgICAgZ3N0X3BhZF9xdWVyeV9wZWVyX2NvbnZlcnQgKGZmbXBlZ2RlYy0+c2lua3BhZCwKLSsgICAgICAgIEdTVF9GT1JNQVRfVElNRSwgb3V0X3RpbWVzdGFtcCwgJm91dF9mbXQsICZvdXRfb2Zmc2V0KTsKLSsgIH0gZWxzZSBpZiAoZGVjX2luZm8tPm9mZnNldCAhPSBHU1RfQlVGRkVSX09GRlNFVF9OT05FKSB7Ci0rICAgIC8qIEZJWE1FLCB0aGUgaW5wdXQgb2Zmc2V0IGlzIGlucHV0IG1lZGlhIHNwZWNpZmljIGFuZCBtaWdodCBub3QKLSsgICAgICogYmUgdGhlIHNhbWUgZm9yIHRoZSBvdXRwdXQgbWVkaWEuIChieXRlIG9mZnNldCBhcyBpbnB1dCwgZnJhbWUgbnVtYmVyCi0rICAgICAqIGFzIG91dHB1dCwgZm9yIGV4YW1wbGUpICovCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJ1c2luZyBpbl9vZmZzZXQgJSIgR19HSU5UNjRfRk9STUFULAotKyAgICAgICAgZGVjX2luZm8tPm9mZnNldCk7Ci0rICAgIG91dF9vZmZzZXQgPSBkZWNfaW5mby0+b2Zmc2V0OwotKyAgfSBlbHNlIHsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIm5vIHZhbGlkIG9mZnNldCBmb3VuZCIpOwotKyAgICBvdXRfb2Zmc2V0ID0gR1NUX0JVRkZFUl9PRkZTRVRfTk9ORTsKLSsgIH0KLSsgIEdTVF9CVUZGRVJfT0ZGU0VUICgqb3V0YnVmKSA9IG91dF9vZmZzZXQ7Ci0rCi0rICAvKgotKyAgICogRHVyYXRpb246Ci0rICAgKgotKyAgICogIDEpIFVzZSByZW9yZGVyZWQgaW5wdXQgZHVyYXRpb24gaWYgdmFsaWQKLSsgICAqICAyKSBFbHNlIHVzZSBpbnB1dCBkdXJhdGlvbgotKyAgICogIDMpIGVsc2UgdXNlIGlucHV0IGZyYW1lcmF0ZQotKyAgICogIDQpIGVsc2UgdXNlIGZmbXBlZyBmcmFtZXJhdGUKLSsgICAqLwotKyAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChvdXRfZHVyYXRpb24pKSB7Ci0rICAgIC8qIFdlIGhhdmUgYSB2YWxpZCAocmVvcmRlcmVkKSBkdXJhdGlvbiAqLwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiVXNpbmcgZHVyYXRpb24gcmV0dXJuZWQgYnkgZmZtcGVnIik7Ci0rICB9IGVsc2UgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChkZWNfaW5mby0+ZHVyYXRpb24pKSB7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJ1c2luZyBpbl9kdXJhdGlvbiIpOwotKyAgICBvdXRfZHVyYXRpb24gPSBkZWNfaW5mby0+ZHVyYXRpb247Ci0rICB9IGVsc2UgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChmZm1wZWdkZWMtPmxhc3RfZGlmZikpIHsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInVzaW5nIGxhc3QtZGlmZiIpOwotKyAgICBvdXRfZHVyYXRpb24gPSBmZm1wZWdkZWMtPmxhc3RfZGlmZjsKLSsgIH0gZWxzZSB7Ci0rICAgIC8qIGlmIHdlIGhhdmUgYW4gaW5wdXQgZnJhbWVyYXRlLCB1c2UgdGhhdCAqLwotKyAgICBpZiAoZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX24gIT0gLTEgJiYKLSsgICAgICAgIChmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfbiAhPSAxMDAwICYmCi0rICAgICAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQudmlkZW8uZnBzX2QgIT0gMSkpIHsKLSsgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAidXNpbmcgaW5wdXQgZnJhbWVyYXRlIGZvciBkdXJhdGlvbiIpOwotKyAgICAgIG91dF9kdXJhdGlvbiA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKEdTVF9TRUNPTkQsCi0rICAgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LnZpZGVvLmZwc19kLCBmZm1wZWdkZWMtPmZvcm1hdC52aWRlby5mcHNfbik7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgLyogZG9uJ3QgdHJ5IHRvIHVzZSB0aGUgZGVjb2RlcidzIGZyYW1lcmF0ZSB3aGVuIGl0IHNlZW1zIGEgYml0IGFibm9ybWFsLAotKyAgICAgICAqIHdoaWNoIHdlIGFzc3VtZSB3aGVuIGRlbiA+PSAxMDAwLi4uICovCi0rICAgICAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+dGltZV9iYXNlLm51bSAhPSAwICYmCi0rICAgICAgICAgIChmZm1wZWdkZWMtPmNvbnRleHQtPnRpbWVfYmFzZS5kZW4gPiAwICYmCi0rICAgICAgICAgICAgICBmZm1wZWdkZWMtPmNvbnRleHQtPnRpbWVfYmFzZS5kZW4gPCAxMDAwKSkgewotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInVzaW5nIGRlY29kZXIncyBmcmFtZXJhdGUgZm9yIGR1cmF0aW9uIik7Ci0rICAgICAgICBvdXRfZHVyYXRpb24gPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChHU1RfU0VDT05ELAotKyAgICAgICAgICAgIGZmbXBlZ2RlYy0+Y29udGV4dC0+dGltZV9iYXNlLm51bSAqCi0rICAgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT50aWNrc19wZXJfZnJhbWUsCi0rICAgICAgICAgICAgZmZtcGVnZGVjLT5jb250ZXh0LT50aW1lX2Jhc2UuZGVuKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIm5vIHZhbGlkIGR1cmF0aW9uIGZvdW5kIik7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rCi0rICAvKiBUYWtlIHJlcGVhdF9waWN0IGludG8gYWNjb3VudCAqLwotKyAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChvdXRfZHVyYXRpb24pKSB7Ci0rICAgIG91dF9kdXJhdGlvbiArPSBvdXRfZHVyYXRpb24gKiBmZm1wZWdkZWMtPnBpY3R1cmUtPnJlcGVhdF9waWN0IC8gMjsKLSsgIH0KLSsgIEdTVF9CVUZGRVJfRFVSQVRJT04gKCpvdXRidWYpID0gb3V0X2R1cmF0aW9uOwotKwotKyAgaWYgKG91dF90aW1lc3RhbXAgIT0gLTEgJiYgb3V0X2R1cmF0aW9uICE9IC0xICYmIG91dF9kdXJhdGlvbiAhPSAwKQotKyAgICBmZm1wZWdkZWMtPm5leHRfb3V0ID0gb3V0X3RpbWVzdGFtcCArIG91dF9kdXJhdGlvbjsKLSsgIGVsc2UKLSsgICAgZmZtcGVnZGVjLT5uZXh0X291dCA9IC0xOwotKwotKyAgLyogbm93IHNlZSBpZiB3ZSBuZWVkIHRvIGNsaXAgdGhlIGJ1ZmZlciBhZ2FpbnN0IHRoZSBzZWdtZW50IGJvdW5kYXJpZXMuICovCi0rICBpZiAoR19VTkxJS0VMWSAoIWNsaXBfdmlkZW9fYnVmZmVyIChmZm1wZWdkZWMsICpvdXRidWYsIG91dF90aW1lc3RhbXAsCi0rICAgICAgICAgICAgICBvdXRfZHVyYXRpb24pKSkKLSsgICAgZ290byBjbGlwcGVkOwotKwotKyAgaWYgKGZmbXBlZ2RlYy0+cGljdHVyZS0+dG9wX2ZpZWxkX2ZpcnN0KQotKyAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUICgqb3V0YnVmLCBHU1RfVklERU9fQlVGRkVSX1RGRik7Ci0rCi0rCi0rYmVhY2g6Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJyZXR1cm4gZmxvdyAlZCwgb3V0ICVwLCBsZW4gJWQiLAotKyAgICAgICpyZXQsICpvdXRidWYsIGxlbik7Ci0rICByZXR1cm4gbGVuOwotKwotKyAgLyogc3BlY2lhbCBjYXNlcyAqLwotK25vX291dHB1dDoKLSsgIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAibm8gb3V0cHV0IGJ1ZmZlciIpOwotKyAgICBsZW4gPSAtMTsKLSsgICAgZ290byBiZWFjaDsKLSsgIH0KLStjbGlwcGVkOgotKyAgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJidWZmZXIgY2xpcHBlZCIpOwotKyAgICBnc3RfYnVmZmVyX3VucmVmICgqb3V0YnVmKTsKLSsgICAgKm91dGJ1ZiA9IE5VTEw7Ci0rICAgIGdvdG8gYmVhY2g7Ci0rICB9Ci0rfQotKwotKy8qIHJldHVybnMgVFJVRSBpZiBidWZmZXIgaXMgd2l0aGluIHNlZ21lbnQsIGVsc2UgRkFMU0UuCi0rICogaWYgQnVmZmVyIGlzIG9uIHNlZ21lbnQgYm9yZGVyLCBpdCdzIHRpbWVzdGFtcCBhbmQgZHVyYXRpb24gd2lsbCBiZSBjbGlwcGVkICovCi0rc3RhdGljIGdib29sZWFuCi0rY2xpcF9hdWRpb19idWZmZXIgKEdzdEZGTXBlZ0RlYyAqIGRlYywgR3N0QnVmZmVyICogYnVmLCBHc3RDbG9ja1RpbWUgaW5fdHMsCi0rICAgIEdzdENsb2NrVGltZSBpbl9kdXIpCi0rewotKyAgR3N0Q2xvY2tUaW1lIHN0b3A7Ci0rICBnaW50NjQgZGlmZiwgY3RpbWUsIGNzdG9wOwotKyAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKLSsKLSsgIEdTVF9MT0dfT0JKRUNUIChkZWMsCi0rICAgICAgInRpbWVzdGFtcDolIiBHU1RfVElNRV9GT1JNQVQgIiwgZHVyYXRpb246JSIgR1NUX1RJTUVfRk9STUFUCi0rICAgICAgIiwgc2l6ZSAldSIsIEdTVF9USU1FX0FSR1MgKGluX3RzKSwgR1NUX1RJTUVfQVJHUyAoaW5fZHVyKSwKLSsgICAgICBHU1RfQlVGRkVSX1NJWkUgKGJ1ZikpOwotKwotKyAgLyogY2FuJ3QgY2xpcCB3aXRob3V0IFRJTUUgc2VnbWVudCAqLwotKyAgaWYgKEdfVU5MSUtFTFkgKGRlYy0+c2VnbWVudC5mb3JtYXQgIT0gR1NUX0ZPUk1BVF9USU1FKSkKLSsgICAgZ290byBiZWFjaDsKLSsKLSsgIC8qIHdlIG5lZWQgYSBzdGFydCB0aW1lICovCi0rICBpZiAoR19VTkxJS0VMWSAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChpbl90cykpKQotKyAgICBnb3RvIGJlYWNoOwotKwotKyAgLyogdHJ1c3QgZHVyYXRpb24gKi8KLSsgIHN0b3AgPSBpbl90cyArIGluX2R1cjsKLSsKLSsgIHJlcyA9IGdzdF9zZWdtZW50X2NsaXAgKCZkZWMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwgaW5fdHMsIHN0b3AsICZjdGltZSwKLSsgICAgICAmY3N0b3ApOwotKyAgaWYgKEdfVU5MSUtFTFkgKCFyZXMpKQotKyAgICBnb3RvIG91dF9vZl9zZWdtZW50OwotKwotKyAgLyogc2VlIGlmIHNvbWUgY2xpcHBpbmcgaGFwcGVuZWQgKi8KLSsgIGlmIChHX1VOTElLRUxZICgoZGlmZiA9IGN0aW1lIC0gaW5fdHMpID4gMCkpIHsKLSsgICAgLyogYnJpbmcgY2xpcHBlZCB0aW1lIHRvIGJ5dGVzICovCi0rICAgIGRpZmYgPQotKyAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoZGlmZiwgZGVjLT5mb3JtYXQuYXVkaW8uc2FtcGxlcmF0ZSwKLSsgICAgICAgIEdTVF9TRUNPTkQpICogKGRlYy0+Zm9ybWF0LmF1ZGlvLmRlcHRoICogZGVjLT5mb3JtYXQuYXVkaW8uY2hhbm5lbHMpOwotKwotKyAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJjbGlwcGluZyBzdGFydCB0byAlIiBHU1RfVElNRV9GT1JNQVQgIiAlIgotKyAgICAgICAgR19HSU5UNjRfRk9STUFUICIgYnl0ZXMiLCBHU1RfVElNRV9BUkdTIChjdGltZSksIGRpZmYpOwotKwotKyAgICBHU1RfQlVGRkVSX1NJWkUgKGJ1ZikgLT0gZGlmZjsKLSsgICAgR1NUX0JVRkZFUl9EQVRBIChidWYpICs9IGRpZmY7Ci0rICB9Ci0rICBpZiAoR19VTkxJS0VMWSAoKGRpZmYgPSBzdG9wIC0gY3N0b3ApID4gMCkpIHsKLSsgICAgLyogYnJpbmcgY2xpcHBlZCB0aW1lIHRvIGJ5dGVzICovCi0rICAgIGRpZmYgPQotKyAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoZGlmZiwgZGVjLT5mb3JtYXQuYXVkaW8uc2FtcGxlcmF0ZSwKLSsgICAgICAgIEdTVF9TRUNPTkQpICogKGRlYy0+Zm9ybWF0LmF1ZGlvLmRlcHRoICogZGVjLT5mb3JtYXQuYXVkaW8uY2hhbm5lbHMpOwotKwotKyAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJjbGlwcGluZyBzdG9wIHRvICUiIEdTVF9USU1FX0ZPUk1BVCAiICUiCi0rICAgICAgICBHX0dJTlQ2NF9GT1JNQVQgIiBieXRlcyIsIEdTVF9USU1FX0FSR1MgKGNzdG9wKSwgZGlmZik7Ci0rCi0rICAgIEdTVF9CVUZGRVJfU0laRSAoYnVmKSAtPSBkaWZmOwotKyAgfQotKyAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgPSBjdGltZTsKLSsgIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZikgPSBjc3RvcCAtIGN0aW1lOwotKwotK2JlYWNoOgotKyAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIiVzZHJvcHBpbmciLCAocmVzID8gIm5vdCAiIDogIiIpKTsKLSsgIHJldHVybiByZXM7Ci0rCi0rICAvKiBFUlJPUlMgKi8KLStvdXRfb2Zfc2VnbWVudDoKLSsgIHsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIm91dCBvZiBzZWdtZW50Iik7Ci0rICAgIGdvdG8gYmVhY2g7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyBnaW50Ci0rZ3N0X2ZmbXBlZ2RlY19hdWRpb19mcmFtZSAoR3N0RkZNcGVnRGVjICogZmZtcGVnZGVjLAotKyAgICBBVkNvZGVjICogaW5fcGx1Z2luLCBndWludDggKiBkYXRhLCBndWludCBzaXplLAotKyAgICBjb25zdCBHc3RUU0luZm8gKiBkZWNfaW5mbywgR3N0QnVmZmVyICoqIG91dGJ1ZiwgR3N0Rmxvd1JldHVybiAqIHJldCkKLSt7Ci0rICBnaW50IGxlbiA9IC0xOwotKyAgZ2ludCBoYXZlX2RhdGEgPSBBVkNPREVDX01BWF9BVURJT19GUkFNRV9TSVpFOwotKyAgR3N0Q2xvY2tUaW1lIG91dF90aW1lc3RhbXAsIG91dF9kdXJhdGlvbjsKLSsgIGdpbnQ2NCBvdXRfb2Zmc2V0OwotKyAgQVZQYWNrZXQgcGFja2V0OwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICJzaXplOiVkLCBvZmZzZXQ6JSIgR19HSU5UNjRfRk9STUFUICIsIHRzOiUiIEdTVF9USU1FX0ZPUk1BVCAiLCBkdXI6JSIKLSsgICAgICBHU1RfVElNRV9GT1JNQVQgIiwgZmZtcGVnZGVjLT5uZXh0X291dDolIiBHU1RfVElNRV9GT1JNQVQsIHNpemUsCi0rICAgICAgZGVjX2luZm8tPm9mZnNldCwgR1NUX1RJTUVfQVJHUyAoZGVjX2luZm8tPnRpbWVzdGFtcCksCi0rICAgICAgR1NUX1RJTUVfQVJHUyAoZGVjX2luZm8tPmR1cmF0aW9uKSwgR1NUX1RJTUVfQVJHUyAoZmZtcGVnZGVjLT5uZXh0X291dCkpOwotKwotKyAgKm91dGJ1ZiA9Ci0rICAgICAgbmV3X2FsaWduZWRfYnVmZmVyIChBVkNPREVDX01BWF9BVURJT19GUkFNRV9TSVpFLAotKyAgICAgIEdTVF9QQURfQ0FQUyAoZmZtcGVnZGVjLT5zcmNwYWQpKTsKLSsKLSsgIGdzdF9hdnBhY2tldF9pbml0ICgmcGFja2V0LCBkYXRhLCBzaXplKTsKLSsgIGxlbiA9IGF2Y29kZWNfZGVjb2RlX2F1ZGlvMyAoZmZtcGVnZGVjLT5jb250ZXh0LAotKyAgICAgIChpbnQxNl90ICopIEdTVF9CVUZGRVJfREFUQSAoKm91dGJ1ZiksICZoYXZlX2RhdGEsICZwYWNrZXQpOwotKyAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICJEZWNvZGUgYXVkaW86IGxlbj0lZCwgaGF2ZV9kYXRhPSVkIiwgbGVuLCBoYXZlX2RhdGEpOwotKwotKyAgaWYgKGxlbiA+PSAwICYmIGhhdmVfZGF0YSA+IDApIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiQ3JlYXRpbmcgb3V0cHV0IGJ1ZmZlciIpOwotKyAgICBpZiAoIWdzdF9mZm1wZWdkZWNfbmVnb3RpYXRlIChmZm1wZWdkZWMsIEZBTFNFKSkgewotKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKCpvdXRidWYpOwotKyAgICAgICpvdXRidWYgPSBOVUxMOwotKyAgICAgIGxlbiA9IC0xOwotKyAgICAgIGdvdG8gYmVhY2g7Ci0rICAgIH0KLSsKLSsgICAgLyogQnVmZmVyIHNpemUgKi8KLSsgICAgR1NUX0JVRkZFUl9TSVpFICgqb3V0YnVmKSA9IGhhdmVfZGF0YTsKLSsKLSsgICAgLyoKLSsgICAgICogVGltZXN0YW1wczoKLSsgICAgICoKLSsgICAgICogIDEpIENvcHkgaW5wdXQgdGltZXN0YW1wIGlmIHZhbGlkCi0rICAgICAqICAyKSBlbHNlIGludGVycG9sYXRlIGZyb20gcHJldmlvdXMgaW5wdXQgdGltZXN0YW1wCi0rICAgICAqLwotKyAgICAvKiBhbHdheXMgdGFrZSB0aW1lc3RhbXBzIGZyb20gdGhlIGlucHV0IGJ1ZmZlciBpZiBhbnkgKi8KLSsgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChkZWNfaW5mby0+dGltZXN0YW1wKSkgewotKyAgICAgIG91dF90aW1lc3RhbXAgPSBkZWNfaW5mby0+dGltZXN0YW1wOwotKyAgICB9IGVsc2UgewotKyAgICAgIG91dF90aW1lc3RhbXAgPSBmZm1wZWdkZWMtPm5leHRfb3V0OwotKyAgICB9Ci0rCi0rICAgIC8qCi0rICAgICAqIER1cmF0aW9uOgotKyAgICAgKgotKyAgICAgKiAgMSkgY2FsY3VsYXRlIGJhc2VkIG9uIG51bWJlciBvZiBzYW1wbGVzCi0rICAgICAqLwotKyAgICBvdXRfZHVyYXRpb24gPSBnc3RfdXRpbF91aW50NjRfc2NhbGUgKGhhdmVfZGF0YSwgR1NUX1NFQ09ORCwKLSsgICAgICAgIGZmbXBlZ2RlYy0+Zm9ybWF0LmF1ZGlvLmRlcHRoICogZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uY2hhbm5lbHMgKgotKyAgICAgICAgZmZtcGVnZGVjLT5mb3JtYXQuYXVkaW8uc2FtcGxlcmF0ZSk7Ci0rCi0rICAgIC8qIG9mZnNldDoKLSsgICAgICoKLSsgICAgICogSnVzdCBjb3B5Ci0rICAgICAqLwotKyAgICBvdXRfb2Zmc2V0ID0gZGVjX2luZm8tPm9mZnNldDsKLSsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgIkJ1ZmZlciBjcmVhdGVkLiBTaXplOiVkICwgdGltZXN0YW1wOiUiIEdTVF9USU1FX0ZPUk1BVCAiICwgZHVyYXRpb246JSIKLSsgICAgICAgIEdTVF9USU1FX0ZPUk1BVCwgaGF2ZV9kYXRhLAotKyAgICAgICAgR1NUX1RJTUVfQVJHUyAob3V0X3RpbWVzdGFtcCksIEdTVF9USU1FX0FSR1MgKG91dF9kdXJhdGlvbikpOwotKwotKyAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoKm91dGJ1ZikgPSBvdXRfdGltZXN0YW1wOwotKyAgICBHU1RfQlVGRkVSX0RVUkFUSU9OICgqb3V0YnVmKSA9IG91dF9kdXJhdGlvbjsKLSsgICAgR1NUX0JVRkZFUl9PRkZTRVQgKCpvdXRidWYpID0gb3V0X29mZnNldDsKLSsgICAgZ3N0X2J1ZmZlcl9zZXRfY2FwcyAoKm91dGJ1ZiwgR1NUX1BBRF9DQVBTIChmZm1wZWdkZWMtPnNyY3BhZCkpOwotKwotKyAgICAvKiB0aGUgbmV4dCB0aW1lc3RhbXAgd2UnbGwgdXNlIHdoZW4gaW50ZXJwb2xhdGluZyAqLwotKyAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKG91dF90aW1lc3RhbXApKQotKyAgICAgIGZmbXBlZ2RlYy0+bmV4dF9vdXQgPSBvdXRfdGltZXN0YW1wICsgb3V0X2R1cmF0aW9uOwotKwotKyAgICAvKiBub3cgc2VlIGlmIHdlIG5lZWQgdG8gY2xpcCB0aGUgYnVmZmVyIGFnYWluc3QgdGhlIHNlZ21lbnQgYm91bmRhcmllcy4gKi8KLSsgICAgaWYgKEdfVU5MSUtFTFkgKCFjbGlwX2F1ZGlvX2J1ZmZlciAoZmZtcGVnZGVjLCAqb3V0YnVmLCBvdXRfdGltZXN0YW1wLAotKyAgICAgICAgICAgICAgICBvdXRfZHVyYXRpb24pKSkKLSsgICAgICBnb3RvIGNsaXBwZWQ7Ci0rCi0rICB9IGVsc2UgewotKyAgICBnc3RfYnVmZmVyX3VucmVmICgqb3V0YnVmKTsKLSsgICAgKm91dGJ1ZiA9IE5VTEw7Ci0rICB9Ci0rCi0rICAvKiBJZiB3ZSBkb24ndCBlcnJvciBvdXQgYWZ0ZXIgdGhlIGZpcnN0IGZhaWxlZCByZWFkIHdpdGggdGhlIEFBQyBkZWNvZGVyLAotKyAgICogd2UgbXVzdCAqbm90KiBjYXJyeSBvbiBwdXNoaW5nIGRhdGEsIGVsc2Ugd2UnbGwgY2F1c2Ugc2VnZmF1bHRzLi4uICovCi0rICBpZiAobGVuID09IC0xICYmIChpbl9wbHVnaW4tPmlkID09IENPREVDX0lEX0FBQwotKyAgICAgICAgICB8fCBpbl9wbHVnaW4tPmlkID09IENPREVDX0lEX0FBQ19MQVRNKSkgewotKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnZGVjLCBTVFJFQU0sIERFQ09ERSwgKE5VTEwpLAotKyAgICAgICAgKCJEZWNvZGluZyBvZiBBQUMgc3RyZWFtIGJ5IEZGTVBFRyBmYWlsZWQuIikpOwotKyAgICAqcmV0ID0gR1NUX0ZMT1dfRVJST1I7Ci0rICB9Ci0rCi0rYmVhY2g6Ci0rICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJyZXR1cm4gZmxvdyAlZCwgb3V0ICVwLCBsZW4gJWQiLAotKyAgICAgICpyZXQsICpvdXRidWYsIGxlbik7Ci0rICByZXR1cm4gbGVuOwotKwotKyAgLyogRVJST1JTICovCi0rY2xpcHBlZDoKLSsgIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAiYnVmZmVyIGNsaXBwZWQiKTsKLSsgICAgZ3N0X2J1ZmZlcl91bnJlZiAoKm91dGJ1Zik7Ci0rICAgICpvdXRidWYgPSBOVUxMOwotKyAgICBnb3RvIGJlYWNoOwotKyAgfQotK30KLSsKLSsvKiBnc3RfZmZtcGVnZGVjX2ZyYW1lOgotKyAqIGZmbXBlZ2RlYzoKLSsgKiBkYXRhOiBwb2ludGVyIHRvIHRoZSBkYXRhIHRvIGRlY29kZQotKyAqIHNpemU6IHNpemUgb2YgZGF0YSBpbiBieXRlcwotKyAqIGdvdF9kYXRhOiAwIGlmIG5vIGRhdGEgd2FzIGRlY29kZWQsICE9IDAgb3RoZXJ3aXNlLgotKyAqIGluX3RpbWU6IHRpbWVzdGFtcCBvZiBkYXRhCi0rICogaW5fZHVyYXRpb246IGR1cmF0aW9uIG9mIGRhdGEKLSsgKiByZXQ6IEdzdEZsb3dSZXR1cm4gdG8gcmV0dXJuIGluIHRoZSBjaGFpbiBmdW5jdGlvbgotKyAqCi0rICogRGVjb2RlIHRoZSBnaXZlbiBmcmFtZSBhbmQgcHVzaGVzIGl0IGRvd25zdHJlYW0uCi0rICoKLSsgKiBSZXR1cm5zOiBOdW1iZXIgb2YgYnl0ZXMgdXNlZCBpbiBkZWNvZGluZywgLTEgb24gZXJyb3IvZmFpbHVyZS4KLSsgKi8KLSsKLStzdGF0aWMgZ2ludAotK2dzdF9mZm1wZWdkZWNfZnJhbWUgKEdzdEZGTXBlZ0RlYyAqIGZmbXBlZ2RlYywKLSsgICAgZ3VpbnQ4ICogZGF0YSwgZ3VpbnQgc2l6ZSwgZ2ludCAqIGdvdF9kYXRhLCBjb25zdCBHc3RUU0luZm8gKiBkZWNfaW5mbywKLSsgICAgR3N0Rmxvd1JldHVybiAqIHJldCkKLSt7Ci0rICBHc3RGRk1wZWdEZWNDbGFzcyAqb2NsYXNzOwotKyAgR3N0QnVmZmVyICpvdXRidWYgPSBOVUxMOwotKyAgZ2ludCBoYXZlX2RhdGEgPSAwLCBsZW4gPSAwOwotKwotKyAgaWYgKEdfVU5MSUtFTFkgKGZmbXBlZ2RlYy0+Y29udGV4dC0+Y29kZWMgPT0gTlVMTCkpCi0rICAgIGdvdG8gbm9fY29kZWM7Ci0rCi0rICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiZGF0YTolcCwgc2l6ZTolZCwgaWQ6JWQiLCBkYXRhLCBzaXplLAotKyAgICAgIGRlY19pbmZvLT5pZHgpOwotKwotKyAgKnJldCA9IEdTVF9GTE9XX09LOwotKyAgZmZtcGVnZGVjLT5jb250ZXh0LT5mcmFtZV9udW1iZXIrKzsKLSsKLSsgIG9jbGFzcyA9IChHc3RGRk1wZWdEZWNDbGFzcyAqKSAoR19PQkpFQ1RfR0VUX0NMQVNTIChmZm1wZWdkZWMpKTsKLSsKLSsgIHN3aXRjaCAob2NsYXNzLT5pbl9wbHVnaW4tPnR5cGUpIHsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfVklERU86Ci0rICAgICAgbGVuID0KLSsgICAgICAgICAgZ3N0X2ZmbXBlZ2RlY192aWRlb19mcmFtZSAoZmZtcGVnZGVjLCBkYXRhLCBzaXplLCBkZWNfaW5mbywgJm91dGJ1ZiwKLSsgICAgICAgICAgcmV0KTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBBVk1FRElBX1RZUEVfQVVESU86Ci0rICAgICAgbGVuID0KLSsgICAgICAgICAgZ3N0X2ZmbXBlZ2RlY19hdWRpb19mcmFtZSAoZmZtcGVnZGVjLCBvY2xhc3MtPmluX3BsdWdpbiwgZGF0YSwgc2l6ZSwKLSsgICAgICAgICAgZGVjX2luZm8sICZvdXRidWYsIHJldCk7Ci0rCi0rICAgICAgLyogaWYgd2UgZGlkIG5vdCBnZXQgYW4gb3V0cHV0IGJ1ZmZlciBhbmQgd2UgaGF2ZSBhIHBlbmRpbmcgZGlzY29udCwgZG9uJ3QKLSsgICAgICAgKiBjbGVhciB0aGUgaW5wdXQgdGltZXN0YW1wcywgd2Ugd2lsbCBwdXQgdGhlbSBvbiB0aGUgbmV4dCBidWZmZXIgYmVjYXVzZQotKyAgICAgICAqIGVsc2Ugd2UgbWlnaHQgY3JlYXRlIHRoZSBmaXJzdCBidWZmZXIgd2l0aCBhIHZlcnkgYmlnIHRpbWVzdGFtcCBnYXAuICovCi0rICAgICAgaWYgKG91dGJ1ZiA9PSBOVUxMICYmIGZmbXBlZ2RlYy0+ZGlzY29udCkgewotKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmZtcGVnZGVjLCAibm8gYnVmZmVyIGJ1dCBrZWVwaW5nIHRpbWVzdGFtcCIpOwotKyAgICAgICAgZmZtcGVnZGVjLT5jbGVhcl90cyA9IEZBTFNFOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBHU1RfRVJST1JfT0JKRUNUIChmZm1wZWdkZWMsICJBc2tlZCB0byBkZWNvZGUgbm9uLWF1ZGlvL3ZpZGVvIGZyYW1lICEiKTsKLSsgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIGlmIChvdXRidWYpCi0rICAgIGhhdmVfZGF0YSA9IDE7Ci0rCi0rICBpZiAobGVuIDwgMCB8fCBoYXZlX2RhdGEgPCAwKSB7Ci0rICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgImZmZGVjXyVzOiBkZWNvZGluZyBlcnJvciAobGVuOiAlZCwgaGF2ZV9kYXRhOiAlZCkiLAotKyAgICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPm5hbWUsIGxlbiwgaGF2ZV9kYXRhKTsKLSsgICAgKmdvdF9kYXRhID0gMDsKLSsgICAgZ290byBiZWFjaDsKLSsgIH0gZWxzZSBpZiAobGVuID09IDAgJiYgaGF2ZV9kYXRhID09IDApIHsKLSsgICAgKmdvdF9kYXRhID0gMDsKLSsgICAgZ290byBiZWFjaDsKLSsgIH0gZWxzZSB7Ci0rICAgIC8qIHRoaXMgaXMgd2hlcmUgSSBsb3N0IG15IGxhc3QgY2x1ZSBvbiBmZm1wZWcuLi4gKi8KLSsgICAgKmdvdF9kYXRhID0gMTsKLSsgIH0KLSsKLSsgIGlmIChvdXRidWYpIHsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICJEZWNvZGVkIGRhdGEsIG5vdyBwdXNoaW5nIGJ1ZmZlciAlcCB3aXRoIG9mZnNldCAlIiBHX0dJTlQ2NF9GT1JNQVQKLSsgICAgICAgICIsIHRpbWVzdGFtcCAlIiBHU1RfVElNRV9GT1JNQVQgIiBhbmQgZHVyYXRpb24gJSIgR1NUX1RJTUVfRk9STUFULAotKyAgICAgICAgb3V0YnVmLCBHU1RfQlVGRkVSX09GRlNFVCAob3V0YnVmKSwKLSsgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChvdXRidWYpKSwKLSsgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfRFVSQVRJT04gKG91dGJ1ZikpKTsKLSsKLSsgICAgLyogbWFyayBwZW5kaW5nIGRpc2NvbnQgKi8KLSsgICAgaWYgKGZmbXBlZ2RlYy0+ZGlzY29udCkgewotKyAgICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKG91dGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwotKyAgICAgIGZmbXBlZ2RlYy0+ZGlzY29udCA9IEZBTFNFOwotKyAgICB9Ci0rCi0rICAgIGlmIChmZm1wZWdkZWMtPnNlZ21lbnQucmF0ZSA+IDAuMCkgewotKyAgICAgIC8qIGFuZCBvZmYgd2UgZ28gKi8KLSsgICAgICAqcmV0ID0gZ3N0X3BhZF9wdXNoIChmZm1wZWdkZWMtPnNyY3BhZCwgb3V0YnVmKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAvKiByZXZlcnNlIHBsYXliYWNrLCBxdWV1ZSBmcmFtZSB0aWxsIGxhdGVyIHdoZW4gd2UgZ2V0IGEgZGlzY29udC4gKi8KLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJxdWV1ZWQgZnJhbWUiKTsKLSsgICAgICBmZm1wZWdkZWMtPnF1ZXVlZCA9IGdfbGlzdF9wcmVwZW5kIChmZm1wZWdkZWMtPnF1ZXVlZCwgb3V0YnVmKTsKLSsgICAgICAqcmV0ID0gR1NUX0ZMT1dfT0s7Ci0rICAgIH0KLSsgIH0gZWxzZSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIldlIGRpZG4ndCBnZXQgYSBkZWNvZGVkIGJ1ZmZlciIpOwotKyAgfQotKwotK2JlYWNoOgotKyAgcmV0dXJuIGxlbjsKLSsKLSsgIC8qIEVSUk9SUyAqLwotK25vX2NvZGVjOgotKyAgewotKyAgICBHU1RfRVJST1JfT0JKRUNUIChmZm1wZWdkZWMsICJubyBjb2RlYyBjb250ZXh0Iik7Ci0rICAgIHJldHVybiAtMTsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX2RyYWluIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMpCi0rewotKyAgR3N0RkZNcGVnRGVjQ2xhc3MgKm9jbGFzczsKLSsKLSsgIG9jbGFzcyA9IChHc3RGRk1wZWdEZWNDbGFzcyAqKSAoR19PQkpFQ1RfR0VUX0NMQVNTIChmZm1wZWdkZWMpKTsKLSsKLSsgIGlmIChvY2xhc3MtPmluX3BsdWdpbi0+Y2FwYWJpbGl0aWVzICYgQ09ERUNfQ0FQX0RFTEFZKSB7Ci0rICAgIGdpbnQgaGF2ZV9kYXRhLCBsZW4sIHRyeSA9IDA7Ci0rCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAiY29kZWMgaGFzIGRlbGF5IGNhcGFiaWxpdGllcywgY2FsbGluZyB1bnRpbCBmZm1wZWcgaGFzIGRyYWluZWQgZXZlcnl0aGluZyIpOwotKwotKyAgICBkbyB7Ci0rICAgICAgR3N0Rmxvd1JldHVybiByZXQ7Ci0rCi0rICAgICAgbGVuID0KLSsgICAgICAgICAgZ3N0X2ZmbXBlZ2RlY19mcmFtZSAoZmZtcGVnZGVjLCBOVUxMLCAwLCAmaGF2ZV9kYXRhLCAmdHNfaW5mb19ub25lLAotKyAgICAgICAgICAmcmV0KTsKLSsgICAgICBpZiAobGVuIDwgMCB8fCBoYXZlX2RhdGEgPT0gMCkKLSsgICAgICAgIGJyZWFrOwotKyAgICB9IHdoaWxlICh0cnkrKyA8IDEwKTsKLSsgIH0KLSsgIGlmIChmZm1wZWdkZWMtPnNlZ21lbnQucmF0ZSA8IDAuMCkgewotKyAgICAvKiBpZiB3ZSBoYXZlIHNvbWUgcXVldWVkIGZyYW1lcyBmb3IgcmV2ZXJzZSBwbGF5YmFjaywgZmx1c2ggdGhlbSBub3cgKi8KLSsgICAgZmx1c2hfcXVldWVkIChmZm1wZWdkZWMpOwotKyAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdkZWNfZmx1c2hfcGNhY2hlIChHc3RGRk1wZWdEZWMgKiBmZm1wZWdkZWMpCi0rewotKyAgaWYgKGZmbXBlZ2RlYy0+cGN0eCkgewotKyAgICBnaW50IHNpemUsIGJzaXplOwotKyAgICBndWludDggKmRhdGE7Ci0rICAgIGd1aW50OCBiZGF0YVtGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFXTsKLSsKLSsgICAgYnNpemUgPSBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFOwotKyAgICBtZW1zZXQgKGJkYXRhLCAwLCBic2l6ZSk7Ci0rCi0rICAgIC8qIHBhcnNlIHNvbWUgZHVtbXkgZGF0YSB0byB3b3JrIGFyb3VuZCBzb21lIGZmbXBlZyB3ZWlyZG5lc3Mgd2hlcmUgaXQga2VlcHMKLSsgICAgICogdGhlIHByZXZpb3VzIHB0cyBhcm91bmQgKi8KLSsgICAgYXZfcGFyc2VyX3BhcnNlMiAoZmZtcGVnZGVjLT5wY3R4LCBmZm1wZWdkZWMtPmNvbnRleHQsCi0rICAgICAgICAmZGF0YSwgJnNpemUsIGJkYXRhLCBic2l6ZSwgLTEsIC0xLCAtMSk7Ci0rICAgIGZmbXBlZ2RlYy0+cGN0eC0+cHRzID0gLTE7Ci0rICAgIGZmbXBlZ2RlYy0+cGN0eC0+ZHRzID0gLTE7Ci0rICB9Ci0rCi0rICBpZiAoZmZtcGVnZGVjLT5wY2FjaGUpIHsKLSsgICAgZ3N0X2J1ZmZlcl91bnJlZiAoZmZtcGVnZGVjLT5wY2FjaGUpOwotKyAgICBmZm1wZWdkZWMtPnBjYWNoZSA9IE5VTEw7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9mZm1wZWdkZWNfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KQotK3sKLSsgIEdzdEZGTXBlZ0RlYyAqZmZtcGVnZGVjOwotKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0rCi0rICBmZm1wZWdkZWMgPSAoR3N0RkZNcGVnRGVjICopIGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKTsKLSsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIkhhbmRsaW5nICVzIGV2ZW50IiwKLSsgICAgICBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOwotKwotKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0rICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKLSsgICAgewotKyAgICAgIGdzdF9mZm1wZWdkZWNfZHJhaW4gKGZmbXBlZ2RlYyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKLSsgICAgewotKyAgICAgIGlmIChmZm1wZWdkZWMtPm9wZW5lZCkgewotKyAgICAgICAgYXZjb2RlY19mbHVzaF9idWZmZXJzIChmZm1wZWdkZWMtPmNvbnRleHQpOwotKyAgICAgIH0KLSsgICAgICBnc3RfZmZtcGVnZGVjX3Jlc2V0X3RzIChmZm1wZWdkZWMpOwotKyAgICAgIGdzdF9mZm1wZWdkZWNfcmVzZXRfcW9zIChmZm1wZWdkZWMpOwotKyAgICAgIGdzdF9mZm1wZWdkZWNfZmx1c2hfcGNhY2hlIChmZm1wZWdkZWMpOwotKyAgICAgIGdzdF9zZWdtZW50X2luaXQgKCZmZm1wZWdkZWMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0rICAgICAgY2xlYXJfcXVldWVkIChmZm1wZWdkZWMpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGNhc2UgR1NUX0VWRU5UX05FV1NFR01FTlQ6Ci0rICAgIHsKLSsgICAgICBnYm9vbGVhbiB1cGRhdGU7Ci0rICAgICAgR3N0Rm9ybWF0IGZtdDsKLSsgICAgICBnaW50NjQgc3RhcnQsIHN0b3AsIHRpbWU7Ci0rICAgICAgZ2RvdWJsZSByYXRlLCBhcmF0ZTsKLSsKLSsgICAgICBnc3RfZXZlbnRfcGFyc2VfbmV3X3NlZ21lbnRfZnVsbCAoZXZlbnQsICZ1cGRhdGUsICZyYXRlLCAmYXJhdGUsICZmbXQsCi0rICAgICAgICAgICZzdGFydCwgJnN0b3AsICZ0aW1lKTsKLSsKLSsgICAgICBzd2l0Y2ggKGZtdCkgewotKyAgICAgICAgY2FzZSBHU1RfRk9STUFUX1RJTUU6Ci0rICAgICAgICAgIC8qIGZpbmUsIG91ciBuYXRpdmUgc2VnbWVudCBmb3JtYXQgKi8KLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIEdTVF9GT1JNQVRfQllURVM6Ci0rICAgICAgICB7Ci0rICAgICAgICAgIGdpbnQgYml0X3JhdGU7Ci0rCi0rICAgICAgICAgIGJpdF9yYXRlID0gZmZtcGVnZGVjLT5jb250ZXh0LT5iaXRfcmF0ZTsKLSsKLSsgICAgICAgICAgLyogY29udmVydCB0byB0aW1lIG9yIGZhaWwgKi8KLSsgICAgICAgICAgaWYgKCFiaXRfcmF0ZSkKLSsgICAgICAgICAgICBnb3RvIG5vX2JpdHJhdGU7Ci0rCi0rICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgImJpdHJhdGU6ICVkIiwgYml0X3JhdGUpOwotKwotKyAgICAgICAgICAvKiBjb252ZXJ0IHZhbHVlcyB0byBUSU1FICovCi0rICAgICAgICAgIGlmIChzdGFydCAhPSAtMSkKLSsgICAgICAgICAgICBzdGFydCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKHN0YXJ0LCBHU1RfU0VDT05ELCBiaXRfcmF0ZSk7Ci0rICAgICAgICAgIGlmIChzdG9wICE9IC0xKQotKyAgICAgICAgICAgIHN0b3AgPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChzdG9wLCBHU1RfU0VDT05ELCBiaXRfcmF0ZSk7Ci0rICAgICAgICAgIGlmICh0aW1lICE9IC0xKQotKyAgICAgICAgICAgIHRpbWUgPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50ICh0aW1lLCBHU1RfU0VDT05ELCBiaXRfcmF0ZSk7Ci0rCi0rICAgICAgICAgIC8qIHVucmVmIG9sZCBldmVudCAqLwotKyAgICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLSsKLSsgICAgICAgICAgLyogY3JlYXRlIG5ldyBjb252ZXJ0ZWQgdGltZSBzZWdtZW50ICovCi0rICAgICAgICAgIGZtdCA9IEdTVF9GT1JNQVRfVElNRTsKLSsgICAgICAgICAgLyogRklYTUUsIGJpdHJhdGUgaXMgbm90IGdvb2QgZW5vdWdoIHRvbyBmaW5kIGEgZ29vZCBzdG9wLCBsZXQncwotKyAgICAgICAgICAgKiBob3BlIHN0YXJ0IGFuZCB0aW1lIHdlcmUgMC4uLiBtZWguICovCi0rICAgICAgICAgIHN0b3AgPSAtMTsKLSsgICAgICAgICAgZXZlbnQgPSBnc3RfZXZlbnRfbmV3X25ld19zZWdtZW50ICh1cGRhdGUsIHJhdGUsIGZtdCwKLSsgICAgICAgICAgICAgIHN0YXJ0LCBzdG9wLCB0aW1lKTsKLSsgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAvKiBpbnZhbGlkIGZvcm1hdCAqLwotKyAgICAgICAgICBnb3RvIGludmFsaWRfZm9ybWF0OwotKyAgICAgIH0KLSsKLSsgICAgICAvKiBkcmFpbiBwZW5kaW5nIGZyYW1lcyBiZWZvcmUgdHJ5aW5nIHRvIHVzZSB0aGUgbmV3IHNlZ21lbnQsIHF1ZXVlZAotKyAgICAgICAqIGJ1ZmZlcnMgYmVsb25nZWQgdG8gdGhlIHByZXZpb3VzIHNlZ21lbnQuICovCi0rICAgICAgaWYgKGZmbXBlZ2RlYy0+Y29udGV4dC0+Y29kZWMpCi0rICAgICAgICBnc3RfZmZtcGVnZGVjX2RyYWluIChmZm1wZWdkZWMpOwotKwotKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICAgIk5FV1NFR01FTlQgaW4gdGltZSBzdGFydCAlIiBHU1RfVElNRV9GT1JNQVQgIiAtLSBzdG9wICUiCi0rICAgICAgICAgIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyAoc3RhcnQpLCBHU1RfVElNRV9BUkdTIChzdG9wKSk7Ci0rCi0rICAgICAgLyogYW5kIHN0b3JlIHRoZSB2YWx1ZXMgKi8KLSsgICAgICBnc3Rfc2VnbWVudF9zZXRfbmV3c2VnbWVudF9mdWxsICgmZmZtcGVnZGVjLT5zZWdtZW50LCB1cGRhdGUsCi0rICAgICAgICAgIHJhdGUsIGFyYXRlLCBmbXQsIHN0YXJ0LCBzdG9wLCB0aW1lKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgLyogYW5kIHB1c2ggc2VnbWVudCBkb3duc3RyZWFtICovCi0rICByZXQgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKGZmbXBlZ2RlYy0+c3JjcGFkLCBldmVudCk7Ci0rCi0rZG9uZToKLSsgIGdzdF9vYmplY3RfdW5yZWYgKGZmbXBlZ2RlYyk7Ci0rCi0rICByZXR1cm4gcmV0OwotKwotKyAgLyogRVJST1JTICovCi0rbm9fYml0cmF0ZToKLSsgIHsKLSsgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChmZm1wZWdkZWMsICJubyBiaXRyYXRlIHRvIGNvbnZlcnQgQllURVMgdG8gVElNRSIpOwotKyAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLSsgICAgZ290byBkb25lOwotKyAgfQotK2ludmFsaWRfZm9ybWF0OgotKyAgewotKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGZmbXBlZ2RlYywgInVua25vd24gZm9ybWF0IHJlY2VpdmVkIGluIE5FV1NFR01FTlQiKTsKLSsgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7Ci0rICAgIGdvdG8gZG9uZTsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIEdzdEZsb3dSZXR1cm4KLStnc3RfZmZtcGVnZGVjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdEJ1ZmZlciAqIGluYnVmKQotK3sKLSsgIEdzdEZGTXBlZ0RlYyAqZmZtcGVnZGVjOwotKyAgR3N0RkZNcGVnRGVjQ2xhc3MgKm9jbGFzczsKLSsgIGd1aW50OCAqZGF0YSwgKmJkYXRhOwotKyAgZ2ludCBzaXplLCBic2l6ZSwgbGVuLCBoYXZlX2RhdGE7Ci0rICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwotKyAgR3N0Q2xvY2tUaW1lIGluX3RpbWVzdGFtcDsKLSsgIEdzdENsb2NrVGltZSBpbl9kdXJhdGlvbjsKLSsgIGdib29sZWFuIGRpc2NvbnQ7Ci0rICBnaW50NjQgaW5fb2Zmc2V0OwotKyAgY29uc3QgR3N0VFNJbmZvICppbl9pbmZvOwotKyAgY29uc3QgR3N0VFNJbmZvICpkZWNfaW5mbzsKLSsKLSsgIGZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgKEdTVF9QQURfUEFSRU5UIChwYWQpKTsKLSsKLSsgIGlmIChHX1VOTElLRUxZICghZmZtcGVnZGVjLT5vcGVuZWQpKQotKyAgICBnb3RvIG5vdF9uZWdvdGlhdGVkOwotKwotKyAgZGlzY29udCA9IEdTVF9CVUZGRVJfSVNfRElTQ09OVCAoaW5idWYpOwotKwotKyAgLyogVGhlIGRpc2NvbnQgZmxhZ3MgbWFya3MgYSBidWZmZXIgdGhhdCBpcyBub3QgY29udGludW91cyB3aXRoIHRoZSBwcmV2aW91cwotKyAgICogYnVmZmVyLiBUaGlzIG1lYW5zIHdlIG5lZWQgdG8gY2xlYXIgd2hhdGV2ZXIgZGF0YSB3ZSBjdXJyZW50bHkgaGF2ZS4gV2UKLSsgICAqIGN1cnJlbnRseSBhbHNvIHdhaXQgZm9yIGEgbmV3IGtleWZyYW1lLCB3aGljaCBtaWdodCBiZSBzdWJvcHRpbWFsIGluIHRoZQotKyAgICogY2FzZSBvZiBhIG5ldHdvcmsgZXJyb3IsIGJldHRlciBzaG93IHRoZSBlcnJvcnMgdGhhbiB0byBkcm9wIGFsbCBkYXRhLi4gKi8KLSsgIGlmIChHX1VOTElLRUxZIChkaXNjb250KSkgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChmZm1wZWdkZWMsICJyZWNlaXZlZCBESVNDT05UIik7Ci0rICAgIC8qIGRyYWluIHdoYXQgd2UgaGF2ZSBxdWV1ZWQgKi8KLSsgICAgZ3N0X2ZmbXBlZ2RlY19kcmFpbiAoZmZtcGVnZGVjKTsKLSsgICAgZ3N0X2ZmbXBlZ2RlY19mbHVzaF9wY2FjaGUgKGZmbXBlZ2RlYyk7Ci0rICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyAoZmZtcGVnZGVjLT5jb250ZXh0KTsKLSsgICAgZmZtcGVnZGVjLT5kaXNjb250ID0gVFJVRTsKLSsgICAgZ3N0X2ZmbXBlZ2RlY19yZXNldF90cyAoZmZtcGVnZGVjKTsKLSsgIH0KLSsgIC8qIGJ5IGRlZmF1bHQgd2UgY2xlYXIgdGhlIGlucHV0IHRpbWVzdGFtcCBhZnRlciBkZWNvZGluZyBlYWNoIGZyYW1lIHNvIHRoYXQKLSsgICAqIGludGVycG9sbGF0aW9uIGNhbiB3b3JrLiAqLwotKyAgZmZtcGVnZGVjLT5jbGVhcl90cyA9IFRSVUU7Ci0rCi0rICBvY2xhc3MgPSAoR3N0RkZNcGVnRGVjQ2xhc3MgKikgKEdfT0JKRUNUX0dFVF9DTEFTUyAoZmZtcGVnZGVjKSk7Ci0rCi0rICAvKiBwYXJzZSBjYWNoZSBqb2luaW5nLiBJZiB0aGVyZSBpcyBjYWNoZWQgZGF0YSAqLwotKyAgaWYgKGZmbXBlZ2RlYy0+cGNhY2hlKSB7Ci0rICAgIC8qIGpvaW4gd2l0aCBwcmV2aW91cyBkYXRhICovCi0rICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJqb2luIHBhcnNlIGNhY2hlIik7Ci0rICAgIGluYnVmID0gZ3N0X2J1ZmZlcl9qb2luIChmZm1wZWdkZWMtPnBjYWNoZSwgaW5idWYpOwotKyAgICAvKiBubyBtb3JlIGNhY2hlZCBkYXRhLCB3ZSBhc3N1bWUgd2UgY2FuIGNvbnN1bWUgdGhlIGNvbXBsZXRlIGNhY2hlICovCi0rICAgIGZmbXBlZ2RlYy0+cGNhY2hlID0gTlVMTDsKLSsgIH0KLSsKLSsgIGluX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChpbmJ1Zik7Ci0rICBpbl9kdXJhdGlvbiA9IEdTVF9CVUZGRVJfRFVSQVRJT04gKGluYnVmKTsKLSsgIGluX29mZnNldCA9IEdTVF9CVUZGRVJfT0ZGU0VUIChpbmJ1Zik7Ci0rCi0rICAvKiBnZXQgaGFuZGxlIHRvIHRpbWVzdGFtcCBpbmZvLCB3ZSBjYW4gcGFzcyB0aGlzIGFyb3VuZCB0byBmZm1wZWcgKi8KLSsgIGluX2luZm8gPSBnc3RfdHNfaW5mb19zdG9yZSAoZmZtcGVnZGVjLCBpbl90aW1lc3RhbXAsIGluX2R1cmF0aW9uLCBpbl9vZmZzZXQpOwotKwotKyAgaWYgKGluX3RpbWVzdGFtcCAhPSAtMSkgewotKyAgICAvKiBjaGVjayBmb3IgaW5jcmVhc2luZyB0aW1lc3RhbXBzIGlmIHRoZXkgYXJlIGp1bXBpbmcgYmFja3dhcmRzLCB3ZQotKyAgICAgKiBwcm9iYWJseSBhcmUgZGVhbGluZyB3aXRoIFBUUyBhcyB0aW1lc3RhbXBzICovCi0rICAgIGlmICghZmZtcGVnZGVjLT5yZW9yZGVyZWRfaW4gJiYgZmZtcGVnZGVjLT5sYXN0X2luICE9IC0xKSB7Ci0rICAgICAgaWYgKGluX3RpbWVzdGFtcCA8IGZmbXBlZ2RlYy0+bGFzdF9pbikgewotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgImRldGVjdGVkIHJlb3JkZXJlZCBpbnB1dCB0aW1lc3RhbXBzIik7Ci0rICAgICAgICBmZm1wZWdkZWMtPnJlb3JkZXJlZF9pbiA9IFRSVUU7Ci0rICAgICAgICBmZm1wZWdkZWMtPmxhc3RfZGlmZiA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICAgICAgfSBlbHNlIGlmIChpbl90aW1lc3RhbXAgPiBmZm1wZWdkZWMtPmxhc3RfaW4pIHsKLSsgICAgICAgIEdzdENsb2NrVGltZSBkaWZmOwotKyAgICAgICAgLyoga2VlcCB0cmFjayBvZiB0aW1lc3RhbXAgZGlmZiB0byBlc3RpbWF0ZSBkdXJhdGlvbiAqLwotKyAgICAgICAgZGlmZiA9IGluX3RpbWVzdGFtcCAtIGZmbXBlZ2RlYy0+bGFzdF9pbjsKLSsgICAgICAgIC8qIG5lZWQgdG8gc2NhbGUgd2l0aCBhbW91bnQgb2YgZnJhbWVzIGluIHRoZSBpbnRlcnZhbCAqLwotKyAgICAgICAgaWYgKGZmbXBlZ2RlYy0+bGFzdF9mcmFtZXMpCi0rICAgICAgICAgIGRpZmYgLz0gZmZtcGVnZGVjLT5sYXN0X2ZyYW1lczsKLSsKLSsgICAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJlc3RpbWF0ZWQgZHVyYXRpb24gJSIgR1NUX1RJTUVfRk9STUFUICIgJXUiLAotKyAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKGRpZmYpLCBmZm1wZWdkZWMtPmxhc3RfZnJhbWVzKTsKLSsKLSsgICAgICAgIGZmbXBlZ2RlYy0+bGFzdF9kaWZmID0gZGlmZjsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgZmZtcGVnZGVjLT5sYXN0X2luID0gaW5fdGltZXN0YW1wOwotKyAgICBmZm1wZWdkZWMtPmxhc3RfZnJhbWVzID0gMDsKLSsgIH0KLSsKLSsgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgIlJlY2VpdmVkIG5ldyBkYXRhIG9mIHNpemUgJXUsIG9mZnNldDolIiBHX0dVSU5UNjRfRk9STUFUICIsIHRzOiUiCi0rICAgICAgR1NUX1RJTUVfRk9STUFUICIsIGR1cjolIiBHU1RfVElNRV9GT1JNQVQgIiwgaW5mbyAlZCIsCi0rICAgICAgR1NUX0JVRkZFUl9TSVpFIChpbmJ1ZiksIEdTVF9CVUZGRVJfT0ZGU0VUIChpbmJ1ZiksCi0rICAgICAgR1NUX1RJTUVfQVJHUyAoaW5fdGltZXN0YW1wKSwgR1NUX1RJTUVfQVJHUyAoaW5fZHVyYXRpb24pLCBpbl9pbmZvLT5pZHgpOwotKwotKyAgLyogd29ya2Fyb3VuZHMsIGZ1bmN0aW9ucyB3cml0ZSB0byBidWZmZXJzOgotKyAgICogIGxpYmF2Y29kZWMvc3ZxMS5jOnN2cTFfZGVjb2RlX2ZyYW1lIHdyaXRlcyB0byB0aGUgZ2l2ZW4gYnVmZmVyLgotKyAgICogIGxpYmF2Y29kZWMvc3ZxMy5jOnN2cTNfZGVjb2RlX3NsaWNlX2hlYWRlciB0b28uCi0rICAgKiBmZm1wZWcgZGV2cyBrbm93IGFib3V0IGl0IGFuZCB3aWxsIGZpeCBpdCAodGhleSBzYWlkKS4gKi8KLSsgIGlmIChvY2xhc3MtPmluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfU1ZRMSB8fAotKyAgICAgIG9jbGFzcy0+aW5fcGx1Z2luLT5pZCA9PSBDT0RFQ19JRF9TVlEzKSB7Ci0rICAgIGluYnVmID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChpbmJ1Zik7Ci0rICB9Ci0rCi0rICBiZGF0YSA9IEdTVF9CVUZGRVJfREFUQSAoaW5idWYpOwotKyAgYnNpemUgPSBHU1RfQlVGRkVSX1NJWkUgKGluYnVmKTsKLSsKLSsgIGlmIChmZm1wZWdkZWMtPmRvX3BhZGRpbmcpIHsKLSsgICAgLyogYWRkIHBhZGRpbmcgKi8KLSsgICAgaWYgKGZmbXBlZ2RlYy0+cGFkZGVkX3NpemUgPCBic2l6ZSArIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpIHsKLSsgICAgICBmZm1wZWdkZWMtPnBhZGRlZF9zaXplID0gYnNpemUgKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFOwotKyAgICAgIGZmbXBlZ2RlYy0+cGFkZGVkID0gZ19yZWFsbG9jIChmZm1wZWdkZWMtPnBhZGRlZCwgZmZtcGVnZGVjLT5wYWRkZWRfc2l6ZSk7Ci0rICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgInJlc2l6ZWQgcGFkZGluZyBidWZmZXIgdG8gJWQiLAotKyAgICAgICAgICBmZm1wZWdkZWMtPnBhZGRlZF9zaXplKTsKLSsgICAgfQotKyAgICBtZW1jcHkgKGZmbXBlZ2RlYy0+cGFkZGVkLCBiZGF0YSwgYnNpemUpOwotKyAgICBtZW1zZXQgKGZmbXBlZ2RlYy0+cGFkZGVkICsgYnNpemUsIDAsIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOwotKwotKyAgICBiZGF0YSA9IGZmbXBlZ2RlYy0+cGFkZGVkOwotKyAgfQotKwotKyAgZG8gewotKyAgICBndWludDggdG1wX3BhZGRpbmdbRkZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRV07Ci0rCi0rICAgIC8qIHBhcnNlLCBpZiBhdCBhbGwgcG9zc2libGUgKi8KLSsgICAgaWYgKGZmbXBlZ2RlYy0+cGN0eCkgewotKyAgICAgIGdpbnQgcmVzOwotKwotKyAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsCi0rICAgICAgICAgICJDYWxsaW5nIGF2X3BhcnNlcl9wYXJzZTIgd2l0aCBvZmZzZXQgJSIgR19HSU5UNjRfRk9STUFUICIsIHRzOiUiCi0rICAgICAgICAgIEdTVF9USU1FX0ZPUk1BVCAiIHNpemUgJWQiLCBpbl9vZmZzZXQsIEdTVF9USU1FX0FSR1MgKGluX3RpbWVzdGFtcCksCi0rICAgICAgICAgIGJzaXplKTsKLSsKLSsgICAgICAvKiBmZWVkIHRoZSBwYXJzZXIuIFdlIHBhc3MgdGhlIHRpbWVzdGFtcCBpbmZvIHNvIHRoYXQgd2UgY2FuIHJlY292ZXIgYWxsCi0rICAgICAgICogaW5mbyBhZ2FpbiBsYXRlciAqLwotKyAgICAgIHJlcyA9IGF2X3BhcnNlcl9wYXJzZTIgKGZmbXBlZ2RlYy0+cGN0eCwgZmZtcGVnZGVjLT5jb250ZXh0LAotKyAgICAgICAgICAmZGF0YSwgJnNpemUsIGJkYXRhLCBic2l6ZSwgaW5faW5mby0+aWR4LCBpbl9pbmZvLT5pZHgsIGluX29mZnNldCk7Ci0rCi0rICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICAgInBhcnNlciByZXR1cm5lZCByZXMgJWQgYW5kIHNpemUgJWQsIGlkICUiIEdfR0lOVDY0X0ZPUk1BVCwgcmVzLCBzaXplLAotKyAgICAgICAgICBmZm1wZWdkZWMtPnBjdHgtPnB0cyk7Ci0rCi0rICAgICAgLyogc3RvcmUgcHRzIGZvciBkZWNvZGluZyAqLwotKyAgICAgIGlmIChmZm1wZWdkZWMtPnBjdHgtPnB0cyAhPSBBVl9OT1BUU19WQUxVRSAmJiBmZm1wZWdkZWMtPnBjdHgtPnB0cyAhPSAtMSkKLSsgICAgICAgIGRlY19pbmZvID0gZ3N0X3RzX2luZm9fZ2V0IChmZm1wZWdkZWMsIGZmbXBlZ2RlYy0+cGN0eC0+cHRzKTsKLSsgICAgICBlbHNlIHsKLSsgICAgICAgIC8qIGZmbXBlZyBzb21ldGltZXMgbG9zZXMgdHJhY2sgYWZ0ZXIgYSBmbHVzaCwgaGVscCBpdCBieSBmZWVkaW5nIGEKLSsgICAgICAgICAqIHZhbGlkIHN0YXJ0IHRpbWUgKi8KLSsgICAgICAgIGZmbXBlZ2RlYy0+cGN0eC0+cHRzID0gaW5faW5mby0+aWR4OwotKyAgICAgICAgZmZtcGVnZGVjLT5wY3R4LT5kdHMgPSBpbl9pbmZvLT5pZHg7Ci0rICAgICAgICBkZWNfaW5mbyA9IGluX2luZm87Ci0rICAgICAgfQotKwotKyAgICAgIEdTVF9MT0dfT0JKRUNUIChmZm1wZWdkZWMsICJjb25zdW1pbmcgJWQgYnl0ZXMuIGlkICVkIiwgc2l6ZSwKLSsgICAgICAgICAgZGVjX2luZm8tPmlkeCk7Ci0rCi0rICAgICAgaWYgKHJlcykgewotKyAgICAgICAgLyogdGhlcmUgaXMgb3V0cHV0LCBzZXQgcG9pbnRlcnMgZm9yIG5leHQgcm91bmQuICovCi0rICAgICAgICBic2l6ZSAtPSByZXM7Ci0rICAgICAgICBiZGF0YSArPSByZXM7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIC8qIFBhcnNlciBkaWQgbm90IGNvbnN1bWUgYW55IGRhdGEsIG1ha2Ugc3VyZSB3ZSBkb24ndCBjbGVhciB0aGUKLSsgICAgICAgICAqIHRpbWVzdGFtcCBmb3IgdGhlIG5leHQgcm91bmQgKi8KLSsgICAgICAgIGZmbXBlZ2RlYy0+Y2xlYXJfdHMgPSBGQUxTRTsKLSsgICAgICB9Ci0rCi0rICAgICAgLyogaWYgdGhlcmUgaXMgbm8gb3V0cHV0LCB3ZSBtdXN0IGJyZWFrIGFuZCB3YWl0IGZvciBtb3JlIGRhdGEuIGFsc28gdGhlCi0rICAgICAgICogdGltZXN0YW1wIGluIHRoZSBjb250ZXh0IGlzIG5vdCB1cGRhdGVkLiAqLwotKyAgICAgIGlmIChzaXplID09IDApIHsKLSsgICAgICAgIGlmIChic2l6ZSA+IDApCi0rICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgZGF0YSA9IGJkYXRhOwotKyAgICAgIHNpemUgPSBic2l6ZTsKLSsKLSsgICAgICBkZWNfaW5mbyA9IGluX2luZm87Ci0rICAgIH0KLSsKLSsgICAgaWYgKGZmbXBlZ2RlYy0+ZG9fcGFkZGluZykgewotKyAgICAgIC8qIGFkZCB0ZW1wb3JhcnkgcGFkZGluZyAqLwotKyAgICAgIG1lbWNweSAodG1wX3BhZGRpbmcsIGRhdGEgKyBzaXplLCBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKTsKLSsgICAgICBtZW1zZXQgKGRhdGEgKyBzaXplLCAwLCBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKTsKLSsgICAgfQotKwotKyAgICAvKiBkZWNvZGUgYSBmcmFtZSBvZiBhdWRpby92aWRlbyBub3cgKi8KLSsgICAgbGVuID0KLSsgICAgICAgIGdzdF9mZm1wZWdkZWNfZnJhbWUgKGZmbXBlZ2RlYywgZGF0YSwgc2l6ZSwgJmhhdmVfZGF0YSwgZGVjX2luZm8sICZyZXQpOwotKwotKyAgICBpZiAoZmZtcGVnZGVjLT5kb19wYWRkaW5nKSB7Ci0rICAgICAgbWVtY3B5IChkYXRhICsgc2l6ZSwgdG1wX3BhZGRpbmcsIEZGX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOwotKyAgICB9Ci0rCi0rICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKLSsgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiYnJlYWtpbmcgYmVjYXVzZSBvZiBmbG93IHJldCAlcyIsCi0rICAgICAgICAgIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKLSsgICAgICAvKiBiYWQgZmxvdyByZXR1biwgbWFrZSBzdXJlIHdlIGRpc2NhcmQgYWxsIGRhdGEgYW5kIGV4aXQgKi8KLSsgICAgICBic2l6ZSA9IDA7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgaWYgKCFmZm1wZWdkZWMtPnBjdHgpIHsKLSsgICAgICBpZiAobGVuID09IDAgJiYgIWhhdmVfZGF0YSkgewotKyAgICAgICAgLyogbm90aGluZyB3YXMgZGVjb2RlZCwgdGhpcyBjb3VsZCBiZSBiZWNhdXNlIG5vIGRhdGEgd2FzIGF2YWlsYWJsZSBvcgotKyAgICAgICAgICogYmVjYXVzZSB3ZSB3ZXJlIHNraXBwaW5nIGZyYW1lcy4KLSsgICAgICAgICAqIElmIHdlIGhhdmUgbm8gY29udGV4dCB3ZSBtdXN0IGV4aXQgYW5kIHdhaXQgZm9yIG1vcmUgZGF0YSwgd2Uga2VlcCB0aGUKLSsgICAgICAgICAqIGRhdGEgd2UgdHJpZWQuICovCi0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiRGVjb2RpbmcgZGlkbid0IHJldHVybiBhbnkgZGF0YSwgYnJlYWtpbmciKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0gZWxzZSBpZiAobGVuIDwgMCkgewotKyAgICAgICAgLyogYSBkZWNvZGluZyBlcnJvciBoYXBwZW5lZCwgd2UgbXVzdCBicmVhayBhbmQgdHJ5IGFnYWluIHdpdGggbmV4dCBkYXRhLiAqLwotKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywgIkRlY29kaW5nIGVycm9yLCBicmVha2luZyIpOwotKyAgICAgICAgYnNpemUgPSAwOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICAgIC8qIHByZXBhcmUgZm9yIHRoZSBuZXh0IHJvdW5kLCBmb3IgY29kZWNzIHdpdGggYSBjb250ZXh0IHdlIGRpZCB0aGlzCi0rICAgICAgICogYWxyZWFkeSB3aGVuIHVzaW5nIHRoZSBwYXJzZXIuICovCi0rICAgICAgYnNpemUgLT0gbGVuOwotKyAgICAgIGJkYXRhICs9IGxlbjsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBpZiAobGVuID09IDApIHsKLSsgICAgICAgIC8qIG5vdGhpbmcgd2FzIGRlY29kZWQsIHRoaXMgY291bGQgYmUgYmVjYXVzZSBubyBkYXRhIHdhcyBhdmFpbGFibGUgb3IKLSsgICAgICAgICAqIGJlY2F1c2Ugd2Ugd2VyZSBza2lwcGluZyBmcmFtZXMuIFNpbmNlIHdlIGhhdmUgYSBwYXJzZXIgd2UgY2FuCi0rICAgICAgICAgKiBjb250aW51ZSB3aXRoIHRoZSBuZXh0IGZyYW1lICovCi0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLAotKyAgICAgICAgICAgICJEZWNvZGluZyBkaWRuJ3QgcmV0dXJuIGFueSBkYXRhLCB0cnlpbmcgbmV4dCIpOwotKyAgICAgIH0gZWxzZSBpZiAobGVuIDwgMCkgewotKyAgICAgICAgLyogd2UgaGF2ZSBhIGNvbnRleHQgdGhhdCB3aWxsIGJyaW5nIHVzIHRvIHRoZSBuZXh0IGZyYW1lICovCi0rICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiRGVjb2RpbmcgZXJyb3IsIHRyeWluZyBuZXh0Iik7Ci0rICAgICAgfQotKyAgICB9Ci0rCi0rICAgIC8qIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgdGhlIHNhbWUgb2xkIHRpbWVzdGFtcCBmb3IgdGhlIG5leHQgZnJhbWUgYW5kIGxldAotKyAgICAgKiB0aGUgaW50ZXJwb2xsYXRpb24gdGFrZSBjYXJlIG9mIGl0LiAqLwotKyAgICBpZiAoZmZtcGVnZGVjLT5jbGVhcl90cykgewotKyAgICAgIGluX3RpbWVzdGFtcCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICAgICAgaW5fZHVyYXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotKyAgICAgIGluX29mZnNldCA9IEdTVF9CVUZGRVJfT0ZGU0VUX05PTkU7Ci0rICAgICAgaW5faW5mbyA9IEdTVF9UU19JTkZPX05PTkU7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgZmZtcGVnZGVjLT5jbGVhcl90cyA9IFRSVUU7Ci0rICAgIH0KLSsgICAgZmZtcGVnZGVjLT5sYXN0X2ZyYW1lcysrOwotKwotKyAgICBHU1RfTE9HX09CSkVDVCAoZmZtcGVnZGVjLCAiQmVmb3JlICh3aGlsZSBic2l6ZT4wKS4gIGJzaXplOiVkICwgYmRhdGE6JXAiLAotKyAgICAgICAgYnNpemUsIGJkYXRhKTsKLSsgIH0gd2hpbGUgKGJzaXplID4gMCk7Ci0rCi0rICAvKiBrZWVwIGxlZnQtb3ZlciAqLwotKyAgaWYgKGZmbXBlZ2RlYy0+cGN0eCAmJiBic2l6ZSA+IDApIHsKLSsgICAgaW5fdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGluYnVmKTsKLSsgICAgaW5fb2Zmc2V0ID0gR1NUX0JVRkZFUl9PRkZTRVQgKGluYnVmKTsKLSsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGZmbXBlZ2RlYywKLSsgICAgICAgICJLZWVwaW5nICVkIGJ5dGVzIG9mIGRhdGEgd2l0aCBvZmZzZXQgJSIgR19HSU5UNjRfRk9STUFUICIsIHRpbWVzdGFtcCAlIgotKyAgICAgICAgR1NUX1RJTUVfRk9STUFULCBic2l6ZSwgaW5fb2Zmc2V0LCBHU1RfVElNRV9BUkdTIChpbl90aW1lc3RhbXApKTsKLSsKLSsgICAgZmZtcGVnZGVjLT5wY2FjaGUgPSBnc3RfYnVmZmVyX2NyZWF0ZV9zdWIgKGluYnVmLAotKyAgICAgICAgR1NUX0JVRkZFUl9TSVpFIChpbmJ1ZikgLSBic2l6ZSwgYnNpemUpOwotKyAgICAvKiB3ZSBrZWVwIHRpbWVzdGFtcCwgZXZlbiB0aG91Z2ggYWxsIHdlIHJlYWxseSBrbm93IGlzIHRoYXQgdGhlIGNvcnJlY3QKLSsgICAgICogdGltZXN0YW1wIGlzIG5vdCBiZWxvdyB0aGUgb25lIGZyb20gaW5idWYgKi8KLSsgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGZmbXBlZ2RlYy0+cGNhY2hlKSA9IGluX3RpbWVzdGFtcDsKLSsgICAgR1NUX0JVRkZFUl9PRkZTRVQgKGZmbXBlZ2RlYy0+cGNhY2hlKSA9IGluX29mZnNldDsKLSsgIH0gZWxzZSBpZiAoYnNpemUgPiAwKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZmbXBlZ2RlYywgIkRyb3BwaW5nICVkIGJ5dGVzIG9mIGRhdGEiLCBic2l6ZSk7Ci0rICB9Ci0rICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1Zik7Ci0rCi0rICByZXR1cm4gcmV0OwotKwotKyAgLyogRVJST1JTICovCi0rbm90X25lZ290aWF0ZWQ6Ci0rICB7Ci0rICAgIG9jbGFzcyA9IChHc3RGRk1wZWdEZWNDbGFzcyAqKSAoR19PQkpFQ1RfR0VUX0NMQVNTIChmZm1wZWdkZWMpKTsKLSsgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZmbXBlZ2RlYywgQ09SRSwgTkVHT1RJQVRJT04sIChOVUxMKSwKLSsgICAgICAgICgiZmZkZWNfJXM6IGlucHV0IGZvcm1hdCB3YXMgbm90IHNldCBiZWZvcmUgZGF0YSBzdGFydCIsCi0rICAgICAgICAgICAgb2NsYXNzLT5pbl9wbHVnaW4tPm5hbWUpKTsKLSsgICAgZ3N0X2J1ZmZlcl91bnJlZiAoaW5idWYpOwotKyAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotK2dzdF9mZm1wZWdkZWNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLSt7Ci0rICBHc3RGRk1wZWdEZWMgKmZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgZWxlbWVudDsKLSsgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldDsKLSsKLSsgIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOwotKwotKyAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0rICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0rICAgICAgR1NUX09CSkVDVF9MT0NLIChmZm1wZWdkZWMpOwotKyAgICAgIGdzdF9mZm1wZWdkZWNfY2xvc2UgKGZmbXBlZ2RlYyk7Ci0rICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZmbXBlZ2RlYyk7Ci0rICAgICAgY2xlYXJfcXVldWVkIChmZm1wZWdkZWMpOwotKyAgICAgIGdfZnJlZSAoZmZtcGVnZGVjLT5wYWRkZWQpOwotKyAgICAgIGZmbXBlZ2RlYy0+cGFkZGVkID0gTlVMTDsKLSsgICAgICBmZm1wZWdkZWMtPnBhZGRlZF9zaXplID0gMDsKLSsgICAgICBmZm1wZWdkZWMtPmNhbl9hbGxvY2F0ZV9hbGlnbmVkID0gVFJVRTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ2RlY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0rICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi0rewotKyAgR3N0RkZNcGVnRGVjICpmZm1wZWdkZWMgPSAoR3N0RkZNcGVnRGVjICopIG9iamVjdDsKLSsKLSsgIHN3aXRjaCAocHJvcF9pZCkgewotKyAgICBjYXNlIFBST1BfTE9XUkVTOgotKyAgICAgIGZmbXBlZ2RlYy0+bG93cmVzID0gZmZtcGVnZGVjLT5jb250ZXh0LT5sb3dyZXMgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9TS0lQRlJBTUU6Ci0rICAgICAgZmZtcGVnZGVjLT5za2lwX2ZyYW1lID0gZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lID0KLSsgICAgICAgICAgZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfRElSRUNUX1JFTkRFUklORzoKLSsgICAgICBmZm1wZWdkZWMtPmRpcmVjdF9yZW5kZXJpbmcgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9ET19QQURESU5HOgotKyAgICAgIGZmbXBlZ2RlYy0+ZG9fcGFkZGluZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0RFQlVHX01WOgotKyAgICAgIGZmbXBlZ2RlYy0+ZGVidWdfbXYgPSBmZm1wZWdkZWMtPmNvbnRleHQtPmRlYnVnX212ID0KLSsgICAgICAgICAgZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfQ1JPUDoKLSsgICAgICBmZm1wZWdkZWMtPmNyb3AgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9NQVhfVEhSRUFEUzoKLSsgICAgICBmZm1wZWdkZWMtPm1heF90aHJlYWRzID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSsgICAgICBicmVhazsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnZGVjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSsgICAgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLSt7Ci0rICBHc3RGRk1wZWdEZWMgKmZmbXBlZ2RlYyA9IChHc3RGRk1wZWdEZWMgKikgb2JqZWN0OwotKwotKyAgc3dpdGNoIChwcm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9MT1dSRVM6Ci0rICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGZmbXBlZ2RlYy0+Y29udGV4dC0+bG93cmVzKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1NLSVBGUkFNRToKLSsgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgZmZtcGVnZGVjLT5jb250ZXh0LT5za2lwX2ZyYW1lKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0RJUkVDVF9SRU5ERVJJTkc6Ci0rICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGZmbXBlZ2RlYy0+ZGlyZWN0X3JlbmRlcmluZyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9ET19QQURESU5HOgotKyAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBmZm1wZWdkZWMtPmRvX3BhZGRpbmcpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfREVCVUdfTVY6Ci0rICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGZmbXBlZ2RlYy0+Y29udGV4dC0+ZGVidWdfbXYpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfQ1JPUDoKLSsgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgZmZtcGVnZGVjLT5jcm9wKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX01BWF9USFJFQURTOgotKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIGZmbXBlZ2RlYy0+bWF4X3RocmVhZHMpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Ci0rICAgICAgYnJlYWs7Ci0rICB9Ci0rfQotKwotK2dib29sZWFuCi0rZ3N0X2ZmbXBlZ2RlY19yZWdpc3RlciAoR3N0UGx1Z2luICogcGx1Z2luKQotK3sKLSsgIEdUeXBlSW5mbyB0eXBlaW5mbyA9IHsKLSsgICAgc2l6ZW9mIChHc3RGRk1wZWdEZWNDbGFzcyksCi0rICAgIChHQmFzZUluaXRGdW5jKSBnc3RfZmZtcGVnZGVjX2Jhc2VfaW5pdCwKLSsgICAgTlVMTCwKLSsgICAgKEdDbGFzc0luaXRGdW5jKSBnc3RfZmZtcGVnZGVjX2NsYXNzX2luaXQsCi0rICAgIE5VTEwsCi0rICAgIE5VTEwsCi0rICAgIHNpemVvZiAoR3N0RkZNcGVnRGVjKSwKLSsgICAgMCwKLSsgICAgKEdJbnN0YW5jZUluaXRGdW5jKSBnc3RfZmZtcGVnZGVjX2luaXQsCi0rICB9OwotKyAgR1R5cGUgdHlwZTsKLSsgIEFWQ29kZWMgKmluX3BsdWdpbjsKLSsgIGdpbnQgcmFuazsKLSsKLSsgIGluX3BsdWdpbiA9IGF2X2NvZGVjX25leHQgKE5VTEwpOwotKwotKyAgR1NUX0xPRyAoIlJlZ2lzdGVyaW5nIGRlY29kZXJzIik7Ci0rCi0rICB3aGlsZSAoaW5fcGx1Z2luKSB7Ci0rICAgIGdjaGFyICp0eXBlX25hbWU7Ci0rICAgIGdjaGFyICpwbHVnaW5fbmFtZTsKLSsKLSsgICAgLyogb25seSBkZWNvZGVycyAqLwotKyAgICBpZiAoIWluX3BsdWdpbi0+ZGVjb2RlKSB7Ci0rICAgICAgZ290byBuZXh0OwotKyAgICB9Ci0rCi0rICAgIC8qIG5vIHF1YXNpLWNvZGVjcywgcGxlYXNlICovCi0rICAgIGlmIChpbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1JBV1ZJREVPIHx8Ci0rICAgICAgICBpbl9wbHVnaW4tPmlkID09IENPREVDX0lEX1YyMTAgfHwKLSsgICAgICAgIGluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfVjIxMFggfHwKLSsgICAgICAgIGluX3BsdWdpbi0+aWQgPT0gQ09ERUNfSURfUjIxMCB8fAotKyAgICAgICAgKGluX3BsdWdpbi0+aWQgPj0gQ09ERUNfSURfUENNX1MxNkxFICYmCi0rICAgICAgICAgICAgaW5fcGx1Z2luLT5pZCA8PSBDT0RFQ19JRF9QQ01fQkxVUkFZKSkgewotKyAgICAgIGdvdG8gbmV4dDsKLSsgICAgfQotKwotKyAgICAvKiBObyBkZWNvZGVycyBkZXBlbmRpbmcgb24gZXh0ZXJuYWwgbGlicmFyaWVzICh3ZSBkb24ndCBidWlsZCB0aGVtLCBidXQKLSsgICAgICogcGVvcGxlIHdobyBidWlsZCBhZ2FpbnN0IGFuIGV4dGVybmFsIGZmbXBlZyBtaWdodCBoYXZlIHRoZW0uCi0rICAgICAqIFdlIGhhdmUgbmF0aXZlIGdzdHJlYW1lciBwbHVnaW5zIGZvciBhbGwgb2YgdGhvc2UgbGlicmFyaWVzIGFueXdheS4gKi8KLSsgICAgaWYgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJsaWIiLCAzKSkgewotKyAgICAgIEdTVF9ERUJVRwotKyAgICAgICAgICAoIk5vdCB1c2luZyBleHRlcm5hbCBsaWJyYXJ5IGRlY29kZXIgJXMuIFVzZSB0aGUgZ3N0cmVhbWVyLW5hdGl2ZSBvbmVzIGluc3RlYWQuIiwKLSsgICAgICAgICAgaW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgICBnb3RvIG5leHQ7Ci0rICAgIH0KLSsKLSsgICAgLyogTm8gdmRwYXUgcGx1Z2lucyB1bnRpbCB3ZSBjYW4gZmlndXJlIG91dCBob3cgdG8gcHJvcGVybHkgdXNlIHRoZW0KLSsgICAgICogb3V0c2lkZSBvZiBmZm1wZWcuICovCi0rICAgIGlmIChnX3N0cl9oYXNfc3VmZml4IChpbl9wbHVnaW4tPm5hbWUsICJfdmRwYXUiKSkgewotKyAgICAgIEdTVF9ERUJVRwotKyAgICAgICAgICAoIklnbm9yaW5nIFZEUEFVIGRlY29kZXIgJXMuIFdlIGNhbid0IGhhbmRsZSB0aGlzIG91dHNpZGUgb2YgZmZtcGVnIiwKLSsgICAgICAgICAgaW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgICBnb3RvIG5leHQ7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGdfc3RyX2hhc19zdWZmaXggKGluX3BsdWdpbi0+bmFtZSwgIl94dm1jIikpIHsKLSsgICAgICBHU1RfREVCVUcKLSsgICAgICAgICAgKCJJZ25vcmluZyBYVk1DIGRlY29kZXIgJXMuIFdlIGNhbid0IGhhbmRsZSB0aGlzIG91dHNpZGUgb2YgZmZtcGVnIiwKLSsgICAgICAgICAgaW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgICBnb3RvIG5leHQ7Ci0rICAgIH0KLSsKLSsgICAgR1NUX0RFQlVHICgiVHJ5aW5nIHBsdWdpbiAlcyBbJXNdIiwgaW5fcGx1Z2luLT5uYW1lLCBpbl9wbHVnaW4tPmxvbmdfbmFtZSk7Ci0rCi0rICAgIC8qIG5vIGNvZGVjcyBmb3Igd2hpY2ggd2UncmUgR1VBUkFOVEVFRCB0byBoYXZlIGJldHRlciBhbHRlcm5hdGl2ZXMgKi8KLSsgICAgLyogTVBFRzFWSURFTyA6IHRoZSBtcGVnMnZpZGVvIGRlY29kZXIgaXMgcHJlZmVycmVkICovCi0rICAgIC8qIE1QMSA6IFVzZSBNUDMgZm9yIGRlY29kaW5nICovCi0rICAgIC8qIE1QMiA6IFVzZSBNUDMgZm9yIGRlY29kaW5nICovCi0rICAgIC8qIFRoZW9yYTogVXNlIGxpYnRoZW9yYSBiYXNlZCB0aGVvcmFkZWMgKi8KLSsgICAgaWYgKCFzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgImdpZiIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJ2b3JiaXMiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAidGhlb3JhIikgfHwKLSsgICAgICAgICFzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgIm1wZWcxdmlkZW8iKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAid2F2cGFjayIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJtcDEiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAibXAyIikgfHwKLSsgICAgICAgICFzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgImxpYmZhYWQiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAibXBlZzRhYWMiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiYXNzIikgfHwKLSsgICAgICAgICFzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgInNydCIpIHx8Ci0rICAgICAgICAhc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJwZ3NzdWIiKSB8fAotKyAgICAgICAgIXN0cmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiZHZkc3ViIikgfHwKLSsgICAgICAgICFzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgImR2YnN1YiIpKSB7Ci0rICAgICAgR1NUX0xPRyAoIklnbm9yaW5nIGRlY29kZXIgJXMiLCBpbl9wbHVnaW4tPm5hbWUpOwotKyAgICAgIGdvdG8gbmV4dDsKLSsgICAgfQotKwotKyAgICAvKiBjb25zdHJ1Y3QgdGhlIHR5cGUgKi8KLSsgICAgcGx1Z2luX25hbWUgPSBnX3N0cmR1cCAoKGdjaGFyICopIGluX3BsdWdpbi0+bmFtZSk7Ci0rICAgIGdfc3RyZGVsaW1pdCAocGx1Z2luX25hbWUsIE5VTEwsICdfJyk7Ci0rICAgIHR5cGVfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImZmZGVjXyVzIiwgcGx1Z2luX25hbWUpOwotKyAgICBnX2ZyZWUgKHBsdWdpbl9uYW1lKTsKLSsKLSsgICAgdHlwZSA9IGdfdHlwZV9mcm9tX25hbWUgKHR5cGVfbmFtZSk7Ci0rCi0rICAgIGlmICghdHlwZSkgewotKyAgICAgIC8qIGNyZWF0ZSB0aGUgZ3R5cGUgbm93ICovCi0rICAgICAgdHlwZSA9IGdfdHlwZV9yZWdpc3Rlcl9zdGF0aWMgKEdTVF9UWVBFX0VMRU1FTlQsIHR5cGVfbmFtZSwgJnR5cGVpbmZvLCAwKTsKLSsgICAgICBnX3R5cGVfc2V0X3FkYXRhICh0eXBlLCBHU1RfRkZERUNfUEFSQU1TX1FEQVRBLCAoZ3BvaW50ZXIpIGluX3BsdWdpbik7Ci0rICAgIH0KLSsKLSsgICAgLyogKFJvbmFsZCkgTVBFRy00IGdldHMgYSBoaWdoZXIgcHJpb3JpdHkgYmVjYXVzZSBpdCBoYXMgYmVlbiB3ZWxsLQotKyAgICAgKiB0ZXN0ZWQgYW5kIGJ5IGZhciBvdXRwZXJmb3JtcyBkaXZ4ZGVjL3h2aWRkZWMgLSBzbyB3ZSBwcmVmZXIgaXQuCi0rICAgICAqIG1zbXBlZzR2MyBzYW1lLCBhcyBpdCBvdXRwZXJmb3JtcyBkaXZ4ZGVjIGZvciBkaXZ4MyBwbGF5YmFjay4KLSsgICAgICogVkMxL1dNVjMgYXJlIG5vdCB3b3JraW5nIGFuZCB0aHVzIHVucHJlZmVycmVkIGZvciBub3cuICovCi0rICAgIHN3aXRjaCAoaW5fcGx1Z2luLT5pZCkgewotKyAgICAgIGNhc2UgQ09ERUNfSURfTVBFRzQ6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9NU01QRUc0VjM6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9IMjY0OgotKyAgICAgIGNhc2UgQ09ERUNfSURfUkFfMTQ0OgotKyAgICAgIGNhc2UgQ09ERUNfSURfUkFfMjg4OgotKyAgICAgIGNhc2UgQ09ERUNfSURfUlYxMDoKLSsgICAgICBjYXNlIENPREVDX0lEX1JWMjA6Ci0rICAgICAgY2FzZSBDT0RFQ19JRF9SVjMwOgotKyAgICAgIGNhc2UgQ09ERUNfSURfUlY0MDoKLSsgICAgICBjYXNlIENPREVDX0lEX0NPT0s6Ci0rICAgICAgICByYW5rID0gR1NUX1JBTktfU0VDT05EQVJZOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICAvKiBEVlZJREVPOiB3ZSBoYXZlIGEgZ29vZCBkdiBkZWNvZGVyLCBmYXN0IG9uIGJvdGggcHBjIGFzIHdlbGwgYXMgeDg2LgotKyAgICAgICAgICogVGhleSBzYXkgbGliZHYncyBxdWFsaXR5IGlzIGJldHRlciB0aG91Z2guIGxlYXZlIGFzIHNlY29uZGFyeS4KLSsgICAgICAgICAqIG5vdGU6IGlmIHlvdSBjaGFuZ2UgdGhpcywgc2VlIHRoZSBjb2RlIGluIGdzdGR2LmMgaW4gZ29vZC9leHQvZHYuCi0rICAgICAgICAgKgotKyAgICAgICAgICogU0lQUjogZGVjb2RlciBzaG91bGQgaGF2ZSBhIGhpZ2hlciByYW5rIHRoYW4gcmVhbGF1ZGlvZGVjLgotKyAgICAgICAgICovCi0rICAgICAgY2FzZSBDT0RFQ19JRF9EVlZJREVPOgotKyAgICAgIGNhc2UgQ09ERUNfSURfU0lQUjoKLSsgICAgICAgIHJhbmsgPSBHU1RfUkFOS19TRUNPTkRBUlk7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIENPREVDX0lEX01QMzoKLSsgICAgICAgIHJhbmsgPSBHU1RfUkFOS19OT05FOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICAvKiBURU1QT1JBUklMWSBESVNBQkxJTkcgQUMzL0VBQzMvRFRTIGZvciAwLjEwLjEyIHJlbGVhc2UKLSsgICAgICAgICAqIGR1ZSB0byBkb3dubWl4aW5nIGZhaWx1cmUuCi0rICAgICAgICAgKiBTZWUgQnVnICM2MDg4OTIgZm9yIG1vcmUgZGV0YWlscyAqLwotKyAgICAgIGNhc2UgQ09ERUNfSURfRUFDMzoKLSsgICAgICBjYXNlIENPREVDX0lEX0FDMzoKLSsgICAgICBjYXNlIENPREVDX0lEX0RUUzoKLSsgICAgICAgIHJhbmsgPSBHU1RfUkFOS19OT05FOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgZGVmYXVsdDoKLSsgICAgICAgIHJhbmsgPSBHU1RfUkFOS19NQVJHSU5BTDsKLSsgICAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgdHlwZV9uYW1lLCByYW5rLCB0eXBlKSkgewotKyAgICAgIGdfd2FybmluZyAoIkZhaWxlZCB0byByZWdpc3RlciAlcyIsIHR5cGVfbmFtZSk7Ci0rICAgICAgZ19mcmVlICh0eXBlX25hbWUpOwotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgfQotKwotKyAgICBnX2ZyZWUgKHR5cGVfbmFtZSk7Ci0rCi0rICBuZXh0OgotKyAgICBpbl9wbHVnaW4gPSBhdl9jb2RlY19uZXh0IChpbl9wbHVnaW4pOwotKyAgfQotKwotKyAgR1NUX0xPRyAoIkZpbmlzaGVkIFJlZ2lzdGVyaW5nIGRlY29kZXJzIik7Ci0rCi0rICByZXR1cm4gVFJVRTsKLSt9Ci1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYy5yZWogZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVjLmMucmVqCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYy5yZWoJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYy5yZWoJMjAxNC0wOC0wOCAxNToyNjozOC40NzE4NTg2NTIgKzAyMDAKLUBAIC0wLDAgKzEsMTEgQEAKLSstLS0gZXh0L2ZmbXBlZy9nc3RmZm1wZWdkZWMuYwotKysrKyBleHQvZmZtcGVnL2dzdGZmbXBlZ2RlYy5jCi0rQEAgLTE1NjUsNyArMTU2NCw3IEBACi0rICAgICAgICAgZ3N0X21lc3NhZ2VfbmV3X2xhdGVuY3kgKEdTVF9PQkpFQ1RfQ0FTVCAoZmZtcGVnZGVjKSkpOwotKyAgIH0KLSsgCi0rLSAgaXNfaXR5cGUgPSAoZmZtcGVnZGVjLT5waWN0dXJlLT5waWN0X3R5cGUgPT0gRkZfSV9UWVBFKTsKLSsrICBpc19pdHlwZSA9IChmZm1wZWdkZWMtPnBpY3R1cmUtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSk7Ci0rICAgaXNfcmVmZXJlbmNlID0gKGZmbXBlZ2RlYy0+cGljdHVyZS0+cmVmZXJlbmNlID09IDEpOwotKyAKLSsgICBpc2tleWZyYW1lID0gKGlzX2l0eXBlIHx8IGlzX3JlZmVyZW5jZSB8fCBmZm1wZWdkZWMtPnBpY3R1cmUtPmtleV9mcmFtZSkKLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlbXV4LmMgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVtdXguYwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnZGVtdXguYwkyMDExLTA3LTEzIDExOjA3OjI4LjAwMDAwMDAwMCArMDIwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2RlbXV4LmMJMjAxNC0wOC0wOCAxNToyNjowNy44NzQ4NTc1NTUgKzAyMDAKLUBAIC0zNDMsOCArMzQzLDExIEBACi0gICBkZW11eC0+YXVkaW9wYWRzID0gMDsKLSAKLSAgIC8qIGNsb3NlIGRlbXV4ZXIgY29udGV4dCBmcm9tIGZmbXBlZyAqLwotLSAgYXZfY2xvc2VfaW5wdXRfZmlsZSAoZGVtdXgtPmNvbnRleHQpOwotLSAgZGVtdXgtPmNvbnRleHQgPSBOVUxMOwotKyAgaWYgKGRlbXV4LT5zZWVrYWJsZSkKLSsgICAgZ3N0X2ZmbXBlZ2RhdGFfY2xvc2UgKGRlbXV4LT5jb250ZXh0LT5wYik7Ci0rICBlbHNlCi0rICAgIGdzdF9mZm1wZWdfcGlwZV9jbG9zZSAoZGVtdXgtPmNvbnRleHQtPnBiKTsKLSsgIGF2Zm9ybWF0X2Nsb3NlX2lucHV0ICgmZGVtdXgtPmNvbnRleHQpOwotIAotICAgR1NUX09CSkVDVF9MT0NLIChkZW11eCk7Ci0gICBkZW11eC0+b3BlbmVkID0gRkFMU0U7Ci1AQCAtMTE0Niw5ICsxMTQ5LDkgQEAKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBnc3RfZmZtcGVnZGVtdXhfb3BlbiAoR3N0RkZNcGVnRGVtdXggKiBkZW11eCkKLSB7Ci0rICBBVklPQ29udGV4dCAqaW9jb250ZXh0ID0gTlVMTDsKLSAgIEdzdEZGTXBlZ0RlbXV4Q2xhc3MgKm9jbGFzcyA9Ci0gICAgICAgKEdzdEZGTXBlZ0RlbXV4Q2xhc3MgKikgR19PQkpFQ1RfR0VUX0NMQVNTIChkZW11eCk7Ci0tICBnY2hhciAqbG9jYXRpb247Ci0gICBnaW50IHJlcywgbl9zdHJlYW1zLCBpOwotICNpZiAwCi0gICAvKiBSZS1lbmFibGUgb25jZSBjb252ZXJ0ZWQgdG8gbmV3IEFWTWV0YURhdGEgQVBJCi1AQCAtMTE2NCwxNSArMTE2NywxNCBAQAotIAotICAgLyogb3BlbiB2aWEgb3VyIGlucHV0IHByb3RvY29sIGhhY2sgKi8KLSAgIGlmIChkZW11eC0+c2Vla2FibGUpCi0tICAgIGxvY2F0aW9uID0gZ19zdHJkdXBfcHJpbnRmICgiZ3N0cmVhbWVyOi8vJXAiLCBkZW11eC0+c2lua3BhZCk7Ci0rICAgIHJlcyA9IGdzdF9mZm1wZWdkYXRhX29wZW4gKGRlbXV4LT5zaW5rcGFkLCBBVklPX0ZMQUdfUkVBRCwgJmlvY29udGV4dCk7Ci0gICBlbHNlCi0tICAgIGxvY2F0aW9uID0gZ19zdHJkdXBfcHJpbnRmICgiZ3N0cGlwZTovLyVwIiwgJmRlbXV4LT5mZnBpcGUpOwotLSAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJhYm91dCB0byBjYWxsIGF2X29wZW5faW5wdXRfZmlsZSAlcyIsIGxvY2F0aW9uKTsKLSsgICAgcmVzID0gZ3N0X2ZmbXBlZ19waXBlX29wZW4gKCZkZW11eC0+ZmZwaXBlLCBBVklPX0ZMQUdfUkVBRCwgJmlvY29udGV4dCk7Ci0gCi0tICByZXMgPSBhdl9vcGVuX2lucHV0X2ZpbGUgKCZkZW11eC0+Y29udGV4dCwgbG9jYXRpb24sCi0tICAgICAgb2NsYXNzLT5pbl9wbHVnaW4sIDAsIE5VTEwpOwotKyAgZGVtdXgtPmNvbnRleHQgPSBhdmZvcm1hdF9hbGxvY19jb250ZXh0ICgpOwotKyAgZGVtdXgtPmNvbnRleHQtPnBiID0gaW9jb250ZXh0OwotKyAgcmVzID0gYXZmb3JtYXRfb3Blbl9pbnB1dCAoJmRlbXV4LT5jb250ZXh0LCBOVUxMLCBvY2xhc3MtPmluX3BsdWdpbiwgTlVMTCk7Ci0gCi0tICBnX2ZyZWUgKGxvY2F0aW9uKTsKLSAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiYXZfb3Blbl9pbnB1dCByZXR1cm5lZCAlZCIsIHJlcyk7Ci0gICBpZiAocmVzIDwgMCkKLSAgICAgZ290byBvcGVuX2ZhaWxlZDsKLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ2VuYy5jIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2VuYy5jCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdlbmMuYwkyMDExLTEwLTMxIDExOjE0OjAzLjAwMDAwMDAwMCArMDEwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ2VuYy5jCTIwMTQtMDgtMDggMTU6MzI6MTguNjA4ODcwODQ3ICswMjAwCi1AQCAtNzcwLDcgKzc3MCw3IEBACi0gICBHU1RfT0JKRUNUX1VOTE9DSyAoZmZtcGVnZW5jKTsKLSAKLSAgIGlmIChmb3JjZV9rZXlmcmFtZSkKLS0gICAgZmZtcGVnZW5jLT5waWN0dXJlLT5waWN0X3R5cGUgPSBGRl9JX1RZUEU7Ci0rICAgIGZmbXBlZ2VuYy0+cGljdHVyZS0+cGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX0k7Ci0gCi0gICBmcmFtZV9zaXplID0gZ3N0X2ZmbXBlZ19hdnBpY3R1cmVfZmlsbCAoKEFWUGljdHVyZSAqKSBmZm1wZWdlbmMtPnBpY3R1cmUsCi0gICAgICAgR1NUX0JVRkZFUl9EQVRBIChpbmJ1ZiksCi1AQCAtMTEzNiw3ICsxMTM2LDcgQEAKLSAgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7Ci0gICAgICAgcyA9IGdzdF9ldmVudF9nZXRfc3RydWN0dXJlIChldmVudCk7Ci0gICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUgKHMsICJHc3RGb3JjZUtleVVuaXQiKSkgewotLSAgICAgICAgZmZtcGVnZW5jLT5waWN0dXJlLT5waWN0X3R5cGUgPSBGRl9JX1RZUEU7Ci0rICAgICAgICBmZm1wZWdlbmMtPnBpY3R1cmUtPnBpY3RfdHlwZSA9IEFWX1BJQ1RVUkVfVFlQRV9JOwotICAgICAgIH0KLSAgICAgICBicmVhazsKLSAgICAgfQotQEAgLTEzMzksNyArMTMzOSw3IEBACi0gICAgIH0KLSAKLSAgICAgLyogb25seSBlbmNvZGVycyAqLwotLSAgICBpZiAoIWluX3BsdWdpbi0+ZW5jb2RlKSB7Ci0rICAgIGlmICghYXZfY29kZWNfaXNfZW5jb2RlciAoaW5fcGx1Z2luKSkgewotICAgICAgIGdvdG8gbmV4dDsKLSAgICAgfQotIAotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnbXV4LmMgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnbXV4LmMKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ211eC5jCTIwMTEtMDctMTMgMTE6MDc6MjguMDAwMDAwMDAwICswMjAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnbXV4LmMJMjAxNC0wOC0wOCAxNToyNjowNy44NzQ4NTc1NTUgKzAyMDAKLUBAIC0yNCw4ICsyNCwxMCBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaWZkZWYgSEFWRV9GRk1QRUdfVU5JTlNUQUxMRUQKLSAjaW5jbHVkZSA8YXZmb3JtYXQuaD4KLSsjaW5jbHVkZSA8b3B0Lmg+Ci0gI2Vsc2UKLSAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KLSsjaW5jbHVkZSA8bGliYXZ1dGlsL29wdC5oPgotICNlbmRpZgotIAotICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci1AQCAtMzM2LDkgKzMzOCw2IEBACi0gICBmZm1wZWdtdXgtPmNvbnRleHQgPSBnX25ldzAgKEFWRm9ybWF0Q29udGV4dCwgMSk7Ci0gICBmZm1wZWdtdXgtPmNvbnRleHQtPm9mb3JtYXQgPSBvY2xhc3MtPmluX3BsdWdpbjsKLSAgIGZmbXBlZ211eC0+Y29udGV4dC0+bmJfc3RyZWFtcyA9IDA7Ci0tICBnX3NucHJpbnRmIChmZm1wZWdtdXgtPmNvbnRleHQtPmZpbGVuYW1lLAotLSAgICAgIHNpemVvZiAoZmZtcGVnbXV4LT5jb250ZXh0LT5maWxlbmFtZSksCi0tICAgICAgImdzdHJlYW1lcjovLyVwIiwgZmZtcGVnbXV4LT5zcmNwYWQpOwotICAgZmZtcGVnbXV4LT5vcGVuZWQgPSBGQUxTRTsKLSAKLSAgIGZmbXBlZ211eC0+dmlkZW9wYWRzID0gMDsKLUBAIC00NTAsMTAgKzQ0OSwxMCBAQAotICAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoZWxlbWVudCwgcGFkKTsKLSAKLSAgIC8qIEFWU3RyZWFtIG5lZWRzIHRvIGJlIGNyZWF0ZWQgKi8KLS0gIHN0ID0gYXZfbmV3X3N0cmVhbSAoZmZtcGVnbXV4LT5jb250ZXh0LCBjb2xsZWN0X3BhZC0+cGFkbnVtKTsKLSsgIHN0ID0gYXZmb3JtYXRfbmV3X3N0cmVhbSAoZmZtcGVnbXV4LT5jb250ZXh0LCBOVUxMKTsKLSsgIHN0LT5pZCA9IGNvbGxlY3RfcGFkLT5wYWRudW07Ci0gICBzdC0+Y29kZWMtPmNvZGVjX3R5cGUgPSB0eXBlOwotICAgc3QtPmNvZGVjLT5jb2RlY19pZCA9IENPREVDX0lEX05PTkU7ICAvKiB0aGlzIGlzIGEgY2hlY2sgYWZ0ZXJ3YXJkcyAqLwotLSAgc3QtPnN0cmVhbV9jb3B5ID0gMTsgICAgICAgICAgLyogd2UncmUgbm90IHRoZSBhY3R1YWwgZW5jb2RlciAqLwotICAgc3QtPmNvZGVjLT5iaXRfcmF0ZSA9IGJpdHJhdGU7Ci0gICBzdC0+Y29kZWMtPmZyYW1lX3NpemUgPSBmcmFtZXNpemU7Ci0gICAvKiB3ZSBmaWxsIGluIGNvZGVjIGR1cmluZyBjYXBzbmVnbyAqLwotQEAgLTQ4NSw3ICs0ODQsNyBAQAotICAgY29sbGVjdF9wYWQgPSAoR3N0RkZNcGVnTXV4UGFkICopIGdzdF9wYWRfZ2V0X2VsZW1lbnRfcHJpdmF0ZSAocGFkKTsKLSAKLSAgIHN0ID0gZmZtcGVnbXV4LT5jb250ZXh0LT5zdHJlYW1zW2NvbGxlY3RfcGFkLT5wYWRudW1dOwotLSAgZmZtcGVnbXV4LT5jb250ZXh0LT5wcmVsb2FkID0gZmZtcGVnbXV4LT5wcmVsb2FkOwotKyAgYXZfb3B0X3NldF9pbnQgKCZmZm1wZWdtdXgtPmNvbnRleHQsICJwcmVsb2FkIiwgZmZtcGVnbXV4LT5wcmVsb2FkLCAwKTsKLSAgIGZmbXBlZ211eC0+Y29udGV4dC0+bWF4X2RlbGF5ID0gZmZtcGVnbXV4LT5tYXhfZGVsYXk7Ci0gCi0gICAvKiBmb3IgdGhlIGZvcm1hdC1zcGVjaWZpYyBndWVzc2VzLCB3ZSdsbCBnbyB0bwotQEAgLTU1Miw3ICs1NTEsNyBAQAotIAotICAgLyogb3BlbiAiZmlsZSIgKGdzdHJlYW1lciBwcm90b2NvbCB0byBuZXh0IGVsZW1lbnQpICovCi0gICBpZiAoIWZmbXBlZ211eC0+b3BlbmVkKSB7Ci0tICAgIGludCBvcGVuX2ZsYWdzID0gVVJMX1dST05MWTsKLSsgICAgaW50IG9wZW5fZmxhZ3MgPSBBVklPX0ZMQUdfV1JJVEU7Ci0gCi0gICAgIC8qIHdlIGRvIG5lZWQgYWxsIHN0cmVhbXMgdG8gaGF2ZSBzdGFydGVkIGNhcHNuZWdvLAotICAgICAgKiBvciB0aGluZ3Mgd2lsbCBnbyBob3JyaWJseSB3cm9uZyAqLwotQEAgLTY0NiwxOSArNjQ1LDEzIEBACi0gICAgICAgb3Blbl9mbGFncyB8PSBHU1RfRkZNUEVHX1VSTF9TVFJFQU1IRUFERVI7Ci0gICAgIH0KLSAKLS0gICAgaWYgKHVybF9mb3BlbiAoJmZmbXBlZ211eC0+Y29udGV4dC0+cGIsCi0tICAgICAgICAgICAgZmZtcGVnbXV4LT5jb250ZXh0LT5maWxlbmFtZSwgb3Blbl9mbGFncykgPCAwKSB7Ci0rICAgIGlmIChnc3RfZmZtcGVnZGF0YV9vcGVuIChmZm1wZWdtdXgtPnNyY3BhZCwgb3Blbl9mbGFncywKLSsgICAgICAgICAgICAmZmZtcGVnbXV4LT5jb250ZXh0LT5wYikgPCAwKSB7Ci0gICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZmbXBlZ211eCwgTElCUkFSWSwgVE9PX0xBWlksIChOVUxMKSwKLSAgICAgICAgICAgKCJGYWlsZWQgdG8gb3BlbiBzdHJlYW0gY29udGV4dCBpbiBmZm11eCIpKTsKLSAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGF2X3NldF9wYXJhbWV0ZXJzIChmZm1wZWdtdXgtPmNvbnRleHQsIE5VTEwpIDwgMCkgewotLSAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmZm1wZWdtdXgsIExJQlJBUlksIElOSVQsIChOVUxMKSwKLS0gICAgICAgICAgKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBtdXhlciIpKTsKLS0gICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0tICAgIH0KLS0KLSAgICAgLyogbm93IG9wZW4gdGhlIG11eCBmb3JtYXQgKi8KLSAgICAgaWYgKGF2X3dyaXRlX2hlYWRlciAoZmZtcGVnbXV4LT5jb250ZXh0KSA8IDApIHsKLSAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnbXV4LCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAotQEAgLTY3MCw3ICs2NjMsNyBAQAotICAgICBmZm1wZWdtdXgtPm9wZW5lZCA9IFRSVUU7Ci0gCi0gICAgIC8qIGZsdXNoIHRoZSBoZWFkZXIgc28gaXQgd2lsbCBiZSB1c2VkIGFzIHN0cmVhbWhlYWRlciAqLwotLSAgICBwdXRfZmx1c2hfcGFja2V0IChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSsgICAgYXZpb19mbHVzaCAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0gICB9Ci0gCi0gICAvKiB0YWtlIHRoZSBvbmUgd2l0aCBlYXJsaWVzdCB0aW1lc3RhbXAsCi1AQCAtNzcwLDggKzc2Myw4IEBACi0gICAgIC8qIGNsb3NlIGRvd24gKi8KLSAgICAgYXZfd3JpdGVfdHJhaWxlciAoZmZtcGVnbXV4LT5jb250ZXh0KTsKLSAgICAgZmZtcGVnbXV4LT5vcGVuZWQgPSBGQUxTRTsKLS0gICAgcHV0X2ZsdXNoX3BhY2tldCAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0tICAgIHVybF9mY2xvc2UgKGZmbXBlZ211eC0+Y29udGV4dC0+cGIpOwotKyAgICBhdmlvX2ZsdXNoIChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSsgICAgZ3N0X2ZmbXBlZ2RhdGFfY2xvc2UgKGZmbXBlZ211eC0+Y29udGV4dC0+cGIpOwotICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKGZmbXBlZ211eC0+c3JjcGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7Ci0gICAgIHJldHVybiBHU1RfRkxPV19VTkVYUEVDVEVEOwotICAgfQotQEAgLTc5NSw2ICs3ODgsMTAgQEAKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKLSAgICAgICBnc3RfY29sbGVjdF9wYWRzX3N0b3AgKGZmbXBlZ211eC0+Y29sbGVjdCk7Ci0rICAgICAgaWYgKGZmbXBlZ211eC0+b3BlbmVkKSB7Ci0rICAgICAgICBmZm1wZWdtdXgtPm9wZW5lZCA9IEZBTFNFOwotKyAgICAgICAgZ3N0X2ZmbXBlZ2RhdGFfY2xvc2UgKGZmbXBlZ211eC0+Y29udGV4dC0+cGIpOwotKyAgICAgIH0KLSAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBicmVhazsKLUBAIC04MDksNyArODA2LDcgQEAKLSAgICAgICBnc3RfdGFnX3NldHRlcl9yZXNldF90YWdzIChHU1RfVEFHX1NFVFRFUiAoZmZtcGVnbXV4KSk7Ci0gICAgICAgaWYgKGZmbXBlZ211eC0+b3BlbmVkKSB7Ci0gICAgICAgICBmZm1wZWdtdXgtPm9wZW5lZCA9IEZBTFNFOwotLSAgICAgICAgdXJsX2ZjbG9zZSAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0rICAgICAgICBhdmlvX2Nsb3NlIChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSAgICAgICB9Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnbXV4LmMub3JpZyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdtdXguYy5vcmlnCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdtdXguYy5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnbXV4LmMub3JpZwkyMDExLTA3LTEzIDExOjA3OjI4LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw5NzAgQEAKLSsvKiBHU3RyZWFtZXIKLSsgKiBDb3B5cmlnaHQgKEMpIDwxOTk5PiBFcmlrIFdhbHRoaW5zZW4gPG9tZWdhQGNzZS5vZ2kuZWR1PgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWZkZWYgSEFWRV9GRk1QRUdfVU5JTlNUQUxMRUQKLSsjaW5jbHVkZSA8YXZmb3JtYXQuaD4KLSsjZWxzZQotKyNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0rI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg+Ci0rCi0rI2luY2x1ZGUgImdzdGZmbXBlZy5oIgotKyNpbmNsdWRlICJnc3RmZm1wZWdjb2RlY21hcC5oIgotKyNpbmNsdWRlICJnc3RmZm1wZWd1dGlscy5oIgotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RGRk1wZWdNdXggR3N0RkZNcGVnTXV4OwotK3R5cGVkZWYgc3RydWN0IF9Hc3RGRk1wZWdNdXhQYWQgR3N0RkZNcGVnTXV4UGFkOwotKwotK3N0cnVjdCBfR3N0RkZNcGVnTXV4UGFkCi0rewotKyAgR3N0Q29sbGVjdERhdGEgY29sbGVjdDsgICAgICAgLyogd2UgZXh0ZW5kIHRoZSBDb2xsZWN0RGF0YSAqLwotKwotKyAgZ2ludCBwYWRudW07Ci0rfTsKLSsKLStzdHJ1Y3QgX0dzdEZGTXBlZ011eAotK3sKLSsgIEdzdEVsZW1lbnQgZWxlbWVudDsKLSsKLSsgIEdzdENvbGxlY3RQYWRzICpjb2xsZWN0OwotKyAgLyogV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIG91ciBwYWRzLCBzbyB3ZSBkbyBzbyBoZXJlLiAqLwotKyAgR3N0UGFkICpzcmNwYWQ7Ci0rCi0rICBBVkZvcm1hdENvbnRleHQgKmNvbnRleHQ7Ci0rICBnYm9vbGVhbiBvcGVuZWQ7Ci0rCi0rICBnaW50IHZpZGVvcGFkcywgYXVkaW9wYWRzOwotKwotKyAgLyo8IHByaXZhdGUgPiAqLwotKyAgLyogZXZlbnRfZnVuY3Rpb24gaXMgdGhlIGNvbGxlY3RwYWRzIGRlZmF1bHQgZXZlbnRmdW5jdGlvbiAqLwotKyAgR3N0UGFkRXZlbnRGdW5jdGlvbiBldmVudF9mdW5jdGlvbjsKLSsgIGludCBwcmVsb2FkOwotKyAgaW50IG1heF9kZWxheTsKLSt9OwotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RGRk1wZWdNdXhDbGFzcyBHc3RGRk1wZWdNdXhDbGFzczsKLSsKLStzdHJ1Y3QgX0dzdEZGTXBlZ011eENsYXNzCi0rewotKyAgR3N0RWxlbWVudENsYXNzIHBhcmVudF9jbGFzczsKLSsKLSsgIEFWT3V0cHV0Rm9ybWF0ICppbl9wbHVnaW47Ci0rfTsKLSsKLSsjZGVmaW5lIEdTVF9UWVBFX0ZGTVBFR01VWCBcCi0rICAoZ3N0X2ZmbXBlZ2RlY19nZXRfdHlwZSgpKQotKyNkZWZpbmUgR1NUX0ZGTVBFR01VWChvYmopIFwKLSsgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9GRk1QRUdNVVgsR3N0RkZNcGVnTXV4KSkKLSsjZGVmaW5lIEdTVF9GRk1QRUdNVVhfQ0xBU1Moa2xhc3MpIFwKLSsgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX0ZGTVBFR01VWCxHc3RGRk1wZWdNdXhDbGFzcykpCi0rI2RlZmluZSBHU1RfSVNfRkZNUEVHTVVYKG9iaikgXAotKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX0ZGTVBFR01VWCkpCi0rI2RlZmluZSBHU1RfSVNfRkZNUEVHTVVYX0NMQVNTKGtsYXNzKSBcCi0rICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9GRk1QRUdNVVgpKQotKwotK2VudW0KLSt7Ci0rICAvKiBGSUxMIE1FICovCi0rICBMQVNUX1NJR05BTAotK307Ci0rCi0rZW51bQotK3sKLSsgIEFSR18wLAotKyAgLyogRklMTCBNRSAqLwotK307Ci0rCi0rZW51bQotK3sKLSsgIFBST1BfMCwKLSsgIFBST1BfUFJFTE9BRCwKLSsgIFBST1BfTUFYREVMQVkKLSt9OwotKwotKy8qIEEgbnVtYmVyIG9mIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlIGdpdmVuIHNvIHdlIGNhbiByZWZlciB0byB0aGVtIGxhdGVyLiAqLwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdtdXhfY2xhc3NfaW5pdCAoR3N0RkZNcGVnTXV4Q2xhc3MgKiBrbGFzcyk7Ci0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ211eF9iYXNlX2luaXQgKGdwb2ludGVyIGdfY2xhc3MpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdtdXhfaW5pdCAoR3N0RkZNcGVnTXV4ICogZmZtcGVnbXV4LAotKyAgICBHc3RGRk1wZWdNdXhDbGFzcyAqIGdfY2xhc3MpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdtdXhfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwotKwotK3N0YXRpYyBnYm9vbGVhbiBnc3RfZmZtcGVnbXV4X3NldGNhcHMgKEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpOwotK3N0YXRpYyBHc3RQYWQgKmdzdF9mZm1wZWdtdXhfcmVxdWVzdF9uZXdfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSsgICAgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKTsKLStzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfZmZtcGVnbXV4X2NvbGxlY3RlZCAoR3N0Q29sbGVjdFBhZHMgKiBwYWRzLAotKyAgICBncG9pbnRlciB1c2VyX2RhdGEpOwotKwotK3N0YXRpYyBnYm9vbGVhbiBnc3RfZmZtcGVnbXV4X3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0RXZlbnQgKiBldmVudCk7Ci0rCi0rc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdzdF9mZm1wZWdtdXhfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSsgICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7Ci0rCi0rc3RhdGljIHZvaWQgZ3N0X2ZmbXBlZ211eF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0rICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotK3N0YXRpYyB2b2lkIGdzdF9mZm1wZWdtdXhfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLSsKLStzdGF0aWMgR3N0Q2FwcyAqZ3N0X2ZmbXBlZ211eF9nZXRfaWRfY2FwcyAoZW51bSBDb2RlY0lEICppZF9saXN0KTsKLStzdGF0aWMgdm9pZCBnc3RfZmZtcGVnX211eF9zaW1wbGVfY2Fwc19zZXRfaW50X2xpc3QgKEdzdENhcHMgKiBjYXBzLAotKyAgICBjb25zdCBnY2hhciAqIGZpZWxkLCBndWludCBudW0sIGNvbnN0IGdpbnQgKiB2YWx1ZXMpOwotKwotKyNkZWZpbmUgR1NUX0ZGTVVYX1BBUkFNU19RREFUQSBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygiZmZtdXgtcGFyYW1zIikKLSsKLStzdGF0aWMgR3N0RWxlbWVudENsYXNzICpwYXJlbnRfY2xhc3MgPSBOVUxMOwotKwotKy8qc3RhdGljIGd1aW50IGdzdF9mZm1wZWdtdXhfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsgKi8KLSsKLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBjb25zdCBjaGFyICpyZXBsYWNlbWVudDsKLSt9IEdzdEZGTXBlZ011eFJlcGxhY2VtZW50OwotKwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStnc3RfZmZtcGVnbXV4X2dldF9yZXBsYWNlbWVudCAoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICBzdGF0aWMgY29uc3QgR3N0RkZNcGVnTXV4UmVwbGFjZW1lbnQgYmxhY2tsaXN0W10gPSB7Ci0rICAgIHsiYXZpIiwgImF2aW11eCJ9LAotKyAgICB7Im1hdHJvc2thIiwgIm1hdHJvc2thbXV4In0sCi0rICAgIHsibW92IiwgInF0bXV4In0sCi0rICAgIHsibXBlZ3RzIiwgIm1wZWd0c211eCJ9LAotKyAgICB7Im1wNCIsICJtcDRtdXgifSwKLSsgICAgeyJtcGpwZWciLCAibXVsdGlwYXJ0bXV4In0sCi0rICAgIHsib2dnIiwgIm9nZ211eCJ9LAotKyAgICB7IndhdiIsICJ3YXZlbmMifSwKLSsgICAgeyJ3ZWJtIiwgIndlYm1tdXgifSwKLSsgICAgeyJteGYiLCAibXhmbXV4In0sCi0rICAgIHsiM2dwIiwgImdwcG11eCJ9LAotKyAgICB7Inl1djRtcGVncGlwZSIsICJ5NG1lbmMifSwKLSsgICAgeyJhaWZmIiwgImFpZmZtdXgifSwKLSsgICAgeyJhZHRzIiwgImFhY3BhcnNlIn0sCi0rICAgIHsiYXNmIiwgImFzZm11eCJ9LAotKyAgICB7ImFzZl9zdHJlYW0iLCAiYXNmbXV4In0sCi0rICAgIHsiZmx2IiwgImZsdm11eCJ9LAotKyAgICB7Im1wMyIsICJpZDN2Mm11eCJ9LAotKyAgICB7Im1wMiIsICJpZDN2Mm11eCJ9Ci0rICB9OwotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChibGFja2xpc3QpIC8gc2l6ZW9mIChibGFja2xpc3RbMF0pOyBpKyspIHsKLSsgICAgaWYgKHN0cmNtcCAoYmxhY2tsaXN0W2ldLm5hbWUsIG5hbWUpID09IDApIHsKLSsgICAgICByZXR1cm4gYmxhY2tsaXN0W2ldLnJlcGxhY2VtZW50OwotKyAgICB9Ci0rICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X2ZmbXBlZ211eF9pc19mb3JtYXR0ZXIgKGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKyAgc3RhdGljIGNvbnN0IGNoYXIgKnJlcGxhY2VbXSA9IHsKLSsgICAgIm1wMiIsICJtcDMiLCBOVUxMCi0rICB9OwotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyByZXBsYWNlW2ldOyBpKyspCi0rICAgIGlmIChzdHJjbXAgKHJlcGxhY2VbaV0sIG5hbWUpID09IDApCi0rICAgICAgcmV0dXJuIFRSVUU7Ci0rICByZXR1cm4gRkFMU0U7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ211eF9iYXNlX2luaXQgKGdwb2ludGVyIGdfY2xhc3MpCi0rewotKyAgR3N0RkZNcGVnTXV4Q2xhc3MgKmtsYXNzID0gKEdzdEZGTXBlZ011eENsYXNzICopIGdfY2xhc3M7Ci0rICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoZ19jbGFzcyk7Ci0rICBHc3RQYWRUZW1wbGF0ZSAqdmlkZW9zaW5rdGVtcGwsICphdWRpb3Npbmt0ZW1wbCwgKnNyY3RlbXBsOwotKyAgQVZPdXRwdXRGb3JtYXQgKmluX3BsdWdpbjsKLSsgIEdzdENhcHMgKnNyY2NhcHMsICphdWRpb3NpbmtjYXBzLCAqdmlkZW9zaW5rY2FwczsKLSsgIGVudW0gQ29kZWNJRCAqdmlkZW9faWRzID0gTlVMTCwgKmF1ZGlvX2lkcyA9IE5VTEw7Ci0rICBnY2hhciAqbG9uZ25hbWUsICpkZXNjcmlwdGlvbjsKLSsgIGNvbnN0IGNoYXIgKnJlcGxhY2VtZW50OwotKyAgZ2Jvb2xlYW4gaXNfZm9ybWF0dGVyOwotKwotKyAgaW5fcGx1Z2luID0KLSsgICAgICAoQVZPdXRwdXRGb3JtYXQgKikgZ190eXBlX2dldF9xZGF0YSAoR19PQkpFQ1RfQ0xBU1NfVFlQRSAoa2xhc3MpLAotKyAgICAgIEdTVF9GRk1VWF9QQVJBTVNfUURBVEEpOwotKyAgZ19hc3NlcnQgKGluX3BsdWdpbiAhPSBOVUxMKTsKLSsKLSsgIC8qIGNvbnN0cnVjdCB0aGUgZWxlbWVudCBkZXRhaWxzIHN0cnVjdCAqLwotKyAgcmVwbGFjZW1lbnQgPSBnc3RfZmZtcGVnbXV4X2dldF9yZXBsYWNlbWVudCAoaW5fcGx1Z2luLT5uYW1lKTsKLSsgIGlzX2Zvcm1hdHRlciA9IGdzdF9mZm1wZWdtdXhfaXNfZm9ybWF0dGVyIChpbl9wbHVnaW4tPm5hbWUpOwotKyAgaWYgKHJlcGxhY2VtZW50ICE9IE5VTEwpIHsKLSsgICAgbG9uZ25hbWUgPQotKyAgICAgICAgZ19zdHJkdXBfcHJpbnRmICgiRkZtcGVnICVzICVzIChub3QgcmVjb21tZW5kZWQsIHVzZSAlcyBpbnN0ZWFkKSIsCi0rICAgICAgICBpbl9wbHVnaW4tPmxvbmdfbmFtZSwgaXNfZm9ybWF0dGVyID8gImZvcm1hdHRlciIgOiAibXV4ZXIiLAotKyAgICAgICAgcmVwbGFjZW1lbnQpOwotKyAgICBkZXNjcmlwdGlvbiA9Ci0rICAgICAgICBnX3N0cmR1cF9wcmludGYgKCJGRm1wZWcgJXMgJXMgKG5vdCByZWNvbW1lbmRlZCwgdXNlICVzIGluc3RlYWQpIiwKLSsgICAgICAgIGluX3BsdWdpbi0+bG9uZ19uYW1lLCBpc19mb3JtYXR0ZXIgPyAiZm9ybWF0dGVyIiA6ICJtdXhlciIsCi0rICAgICAgICByZXBsYWNlbWVudCk7Ci0rICB9IGVsc2UgewotKyAgICBsb25nbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoIkZGbXBlZyAlcyAlcyIsIGluX3BsdWdpbi0+bG9uZ19uYW1lLAotKyAgICAgICAgaXNfZm9ybWF0dGVyID8gImZvcm1hdHRlciIgOiAibXV4ZXIiKTsKLSsgICAgZGVzY3JpcHRpb24gPSBnX3N0cmR1cF9wcmludGYgKCJGRm1wZWcgJXMgJXMiLCBpbl9wbHVnaW4tPmxvbmdfbmFtZSwKLSsgICAgICAgIGlzX2Zvcm1hdHRlciA/ICJmb3JtYXR0ZXIiIDogIm11eGVyIik7Ci0rICB9Ci0rICBnc3RfZWxlbWVudF9jbGFzc19zZXRfZGV0YWlsc19zaW1wbGUgKGVsZW1lbnRfY2xhc3MsIGxvbmduYW1lLAotKyAgICAgIGlzX2Zvcm1hdHRlciA/ICJGb3JtYXR0ZXIvTWV0YWRhdGEiIDogIkNvZGVjL011eGVyIiwgZGVzY3JpcHRpb24sCi0rICAgICAgIldpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BjaGVsbG8uYmU+LCAiCi0rICAgICAgIlJvbmFsZCBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4iKTsKLSsgIGdfZnJlZSAobG9uZ25hbWUpOwotKyAgZ19mcmVlIChkZXNjcmlwdGlvbik7Ci0rCi0rICAvKiBUcnkgdG8gZmluZCB0aGUgY2FwcyB0aGF0IGJlbG9uZ3MgaGVyZSAqLwotKyAgc3JjY2FwcyA9IGdzdF9mZm1wZWdfZm9ybWF0aWRfdG9fY2FwcyAoaW5fcGx1Z2luLT5uYW1lKTsKLSsgIGlmICghc3JjY2FwcykgewotKyAgICBHU1RfREVCVUcgKCJDb3VsZG4ndCBnZXQgc291cmNlIGNhcHMgZm9yIG11eGVyICclcycsIHNraXBwaW5nIGZvcm1hdCIsCi0rICAgICAgICBpbl9wbHVnaW4tPm5hbWUpOwotKyAgICBnb3RvIGJlYWNoOwotKyAgfQotKwotKyAgaWYgKCFnc3RfZmZtcGVnX2Zvcm1hdGlkX2dldF9jb2RlY2lkcyAoaW5fcGx1Z2luLT5uYW1lLAotKyAgICAgICAgICAmdmlkZW9faWRzLCAmYXVkaW9faWRzLCBpbl9wbHVnaW4pKSB7Ci0rICAgIGdzdF9jYXBzX3VucmVmIChzcmNjYXBzKTsKLSsgICAgR1NUX0RFQlVHCi0rICAgICAgICAoIkNvdWxkbid0IGdldCBzaW5rIGNhcHMgZm9yIG11eGVyICclcycuIE1vc3QgbGlrZWx5IGJlY2F1c2Ugbm8gaW5wdXQgZm9ybWF0IG1hcHBpbmcgZXhpc3RzLiIsCi0rICAgICAgICBpbl9wbHVnaW4tPm5hbWUpOwotKyAgICBnb3RvIGJlYWNoOwotKyAgfQotKwotKyAgdmlkZW9zaW5rY2FwcyA9IHZpZGVvX2lkcyA/IGdzdF9mZm1wZWdtdXhfZ2V0X2lkX2NhcHMgKHZpZGVvX2lkcykgOiBOVUxMOwotKyAgYXVkaW9zaW5rY2FwcyA9IGF1ZGlvX2lkcyA/IGdzdF9mZm1wZWdtdXhfZ2V0X2lkX2NhcHMgKGF1ZGlvX2lkcykgOiBOVUxMOwotKwotKyAgLyogZml4IHVwIGFsbG93ZWQgY2FwcyBmb3Igc29tZSBtdXhlcnMgKi8KLSsgIC8qIEZJWE1FIDogVGhpcyBzaG91bGQgYmUgaW4gZ3N0ZmZtcGVnY29kZWNtYXAuYyAhICovCi0rICBpZiAoc3RyY21wIChpbl9wbHVnaW4tPm5hbWUsICJmbHYiKSA9PSAwKSB7Ci0rICAgIGNvbnN0IGdpbnQgcmF0ZXNbXSA9IHsgNDQxMDAsIDIyMDUwLCAxMTAyNSB9OwotKwotKyAgICBnc3RfZmZtcGVnX211eF9zaW1wbGVfY2Fwc19zZXRfaW50X2xpc3QgKGF1ZGlvc2lua2NhcHMsICJyYXRlIiwgMywgcmF0ZXMpOwotKyAgfSBlbHNlIGlmIChzdHJjbXAgKGluX3BsdWdpbi0+bmFtZSwgImdpZiIpID09IDApIHsKLSsgICAgaWYgKHZpZGVvc2lua2NhcHMpCi0rICAgICAgZ3N0X2NhcHNfdW5yZWYgKHZpZGVvc2lua2NhcHMpOwotKwotKyAgICB2aWRlb3NpbmtjYXBzID0KLSsgICAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1yYXctcmdiLCBicHA9KGludCkyNCwgZGVwdGg9KGludCkyNCIpOwotKyAgfQotKwotKyAgLyogcGFkIHRlbXBsYXRlcyAqLwotKyAgc3JjdGVtcGwgPSBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNyYyIsIEdTVF9QQURfU1JDLCBHU1RfUEFEX0FMV0FZUywgc3JjY2Fwcyk7Ci0rICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLCBzcmN0ZW1wbCk7Ci0rCi0rICBpZiAoYXVkaW9zaW5rY2FwcykgewotKyAgICBhdWRpb3Npbmt0ZW1wbCA9IGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgiYXVkaW9fJWQiLAotKyAgICAgICAgR1NUX1BBRF9TSU5LLCBHU1RfUEFEX1JFUVVFU1QsIGF1ZGlvc2lua2NhcHMpOwotKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLCBhdWRpb3Npbmt0ZW1wbCk7Ci0rICB9Ci0rCi0rICBpZiAodmlkZW9zaW5rY2FwcykgewotKyAgICB2aWRlb3Npbmt0ZW1wbCA9IGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgidmlkZW9fJWQiLAotKyAgICAgICAgR1NUX1BBRF9TSU5LLCBHU1RfUEFEX1JFUVVFU1QsIHZpZGVvc2lua2NhcHMpOwotKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLCB2aWRlb3Npbmt0ZW1wbCk7Ci0rICB9Ci0rCi0rYmVhY2g6Ci0rICBrbGFzcy0+aW5fcGx1Z2luID0gaW5fcGx1Z2luOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9mZm1wZWdtdXhfY2xhc3NfaW5pdCAoR3N0RkZNcGVnTXV4Q2xhc3MgKiBrbGFzcykKLSt7Ci0rICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7Ci0rICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3M7Ci0rCi0rICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKLSsgIGdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOwotKwotKyAgcGFyZW50X2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7Ci0rCi0rICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2ZmbXBlZ211eF9zZXRfcHJvcGVydHkpOwotKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9mZm1wZWdtdXhfZ2V0X3Byb3BlcnR5KTsKLSsKLSsgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfUFJFTE9BRCwKLSsgICAgICBnX3BhcmFtX3NwZWNfaW50ICgicHJlbG9hZCIsICJwcmVsb2FkIiwKLSsgICAgICAgICAgIlNldCB0aGUgaW5pdGlhbCBkZW11eC1kZWNvZGUgZGVsYXkgKGluIG1pY3Jvc2Vjb25kcykiLCAwLCBHX01BWElOVCwKLSsgICAgICAgICAgMCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rCi0rICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01BWERFTEFZLAotKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJtYXhkZWxheSIsICJtYXhkZWxheSIsCi0rICAgICAgICAgICJTZXQgdGhlIG1heGltdW0gZGVtdXgtZGVjb2RlIGRlbGF5IChpbiBtaWNyb3NlY29uZHMpIiwgMCwgR19NQVhJTlQsCi0rICAgICAgICAgIDAsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotKwotKyAgZ3N0ZWxlbWVudF9jbGFzcy0+cmVxdWVzdF9uZXdfcGFkID0gZ3N0X2ZmbXBlZ211eF9yZXF1ZXN0X25ld19wYWQ7Ci0rICBnc3RlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3RfZmZtcGVnbXV4X2NoYW5nZV9zdGF0ZTsKLSsgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X2ZmbXBlZ211eF9maW5hbGl6ZTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnbXV4X2luaXQgKEdzdEZGTXBlZ011eCAqIGZmbXBlZ211eCwgR3N0RkZNcGVnTXV4Q2xhc3MgKiBnX2NsYXNzKQotK3sKLSsgIEdzdEVsZW1lbnRDbGFzcyAqa2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoZ19jbGFzcyk7Ci0rICBHc3RGRk1wZWdNdXhDbGFzcyAqb2NsYXNzID0gKEdzdEZGTXBlZ011eENsYXNzICopIGtsYXNzOwotKyAgR3N0UGFkVGVtcGxhdGUgKnRlbXBsID0gZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoa2xhc3MsICJzcmMiKTsKLSsKLSsgIGZmbXBlZ211eC0+c3JjcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAodGVtcGwsICJzcmMiKTsKLSsgIGdzdF9wYWRfc2V0X2NhcHMgKGZmbXBlZ211eC0+c3JjcGFkLCBnc3RfcGFkX3RlbXBsYXRlX2dldF9jYXBzICh0ZW1wbCkpOwotKyAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZmbXBlZ211eCksIGZmbXBlZ211eC0+c3JjcGFkKTsKLSsKLSsgIGZmbXBlZ211eC0+Y29sbGVjdCA9IGdzdF9jb2xsZWN0X3BhZHNfbmV3ICgpOwotKyAgZ3N0X2NvbGxlY3RfcGFkc19zZXRfZnVuY3Rpb24gKGZmbXBlZ211eC0+Y29sbGVjdCwKLSsgICAgICAoR3N0Q29sbGVjdFBhZHNGdW5jdGlvbikgZ3N0X2ZmbXBlZ211eF9jb2xsZWN0ZWQsIGZmbXBlZ211eCk7Ci0rCi0rICBmZm1wZWdtdXgtPmNvbnRleHQgPSBnX25ldzAgKEFWRm9ybWF0Q29udGV4dCwgMSk7Ci0rICBmZm1wZWdtdXgtPmNvbnRleHQtPm9mb3JtYXQgPSBvY2xhc3MtPmluX3BsdWdpbjsKLSsgIGZmbXBlZ211eC0+Y29udGV4dC0+bmJfc3RyZWFtcyA9IDA7Ci0rICBnX3NucHJpbnRmIChmZm1wZWdtdXgtPmNvbnRleHQtPmZpbGVuYW1lLAotKyAgICAgIHNpemVvZiAoZmZtcGVnbXV4LT5jb250ZXh0LT5maWxlbmFtZSksCi0rICAgICAgImdzdHJlYW1lcjovLyVwIiwgZmZtcGVnbXV4LT5zcmNwYWQpOwotKyAgZmZtcGVnbXV4LT5vcGVuZWQgPSBGQUxTRTsKLSsKLSsgIGZmbXBlZ211eC0+dmlkZW9wYWRzID0gMDsKLSsgIGZmbXBlZ211eC0+YXVkaW9wYWRzID0gMDsKLSsgIGZmbXBlZ211eC0+cHJlbG9hZCA9IDA7Ci0rICBmZm1wZWdtdXgtPm1heF9kZWxheSA9IDA7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ211eF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0rICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi0rewotKyAgR3N0RkZNcGVnTXV4ICpzcmM7Ci0rCi0rICBzcmMgPSAoR3N0RkZNcGVnTXV4ICopIG9iamVjdDsKLSsKLSsgIHN3aXRjaCAocHJvcF9pZCkgewotKyAgICBjYXNlIFBST1BfUFJFTE9BRDoKLSsgICAgICBzcmMtPnByZWxvYWQgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX01BWERFTEFZOgotKyAgICAgIHNyYy0+bWF4X2RlbGF5ID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSsgICAgICBicmVhazsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnbXV4X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsCi0rICAgIEdQYXJhbVNwZWMgKiBwc3BlYykKLSt7Ci0rICBHc3RGRk1wZWdNdXggKnNyYzsKLSsKLSsgIHNyYyA9IChHc3RGRk1wZWdNdXggKikgb2JqZWN0OwotKwotKyAgc3dpdGNoIChwcm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9QUkVMT0FEOgotKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+cHJlbG9hZCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9NQVhERUxBWToKLSsgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBzcmMtPm1heF9kZWxheSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSsgICAgICBicmVhazsKLSsgIH0KLSt9Ci0rCi0rCi0rc3RhdGljIHZvaWQKLStnc3RfZmZtcGVnbXV4X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotK3sKLSsgIEdzdEZGTXBlZ011eCAqZmZtcGVnbXV4ID0gKEdzdEZGTXBlZ011eCAqKSBvYmplY3Q7Ci0rCi0rICBnX2ZyZWUgKGZmbXBlZ211eC0+Y29udGV4dCk7Ci0rICBnc3Rfb2JqZWN0X3VucmVmIChmZm1wZWdtdXgtPmNvbGxlY3QpOwotKwotKyAgaWYgKEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSkKLSsgICAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwotK30KLSsKLStzdGF0aWMgR3N0UGFkICoKLStnc3RfZmZtcGVnbXV4X3JlcXVlc3RfbmV3X3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCi0rICAgIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogbmFtZSkKLSt7Ci0rICBHc3RGRk1wZWdNdXggKmZmbXBlZ211eCA9IChHc3RGRk1wZWdNdXggKikgZWxlbWVudDsKLSsgIEdzdEVsZW1lbnRDbGFzcyAqa2xhc3MgPSBHU1RfRUxFTUVOVF9HRVRfQ0xBU1MgKGVsZW1lbnQpOwotKyAgR3N0RkZNcGVnTXV4UGFkICpjb2xsZWN0X3BhZDsKLSsgIGdjaGFyICpwYWRuYW1lOwotKyAgR3N0UGFkICpwYWQ7Ci0rICBBVlN0cmVhbSAqc3Q7Ci0rICBlbnVtIEFWTWVkaWFUeXBlIHR5cGU7Ci0rICBnaW50IGJpdHJhdGUgPSAwLCBmcmFtZXNpemUgPSAwOwotKwotKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHRlbXBsICE9IE5VTEwsIE5VTEwpOwotKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHRlbXBsLT5kaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LLCBOVUxMKTsKLSsgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmZm1wZWdtdXgtPm9wZW5lZCA9PSBGQUxTRSwgTlVMTCk7Ci0rCi0rICAvKiBmaWd1cmUgb3V0IGEgbmFtZSB0aGF0ICp3ZSogbGlrZSAqLwotKyAgaWYgKHRlbXBsID09IGdzdF9lbGVtZW50X2NsYXNzX2dldF9wYWRfdGVtcGxhdGUgKGtsYXNzLCAidmlkZW9fJWQiKSkgewotKyAgICBwYWRuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgidmlkZW9fJWQiLCBmZm1wZWdtdXgtPnZpZGVvcGFkcysrKTsKLSsgICAgdHlwZSA9IEFWTUVESUFfVFlQRV9WSURFTzsKLSsgICAgYml0cmF0ZSA9IDY0ICogMTAyNDsKLSsgICAgZnJhbWVzaXplID0gMTE1MjsKLSsgIH0gZWxzZSBpZiAodGVtcGwgPT0gZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoa2xhc3MsICJhdWRpb18lZCIpKSB7Ci0rICAgIHBhZG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJhdWRpb18lZCIsIGZmbXBlZ211eC0+YXVkaW9wYWRzKyspOwotKyAgICB0eXBlID0gQVZNRURJQV9UWVBFX0FVRElPOwotKyAgICBiaXRyYXRlID0gMjg1ICogMTAyNDsKLSsgIH0gZWxzZSB7Ci0rICAgIGdfd2FybmluZyAoImZmbXV4OiB1bmtub3duIHBhZCB0ZW1wbGF0ZSEiKTsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICB9Ci0rCi0rICAvKiBjcmVhdGUgcGFkICovCi0rICBwYWQgPSBnc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlICh0ZW1wbCwgcGFkbmFtZSk7Ci0rICBjb2xsZWN0X3BhZCA9IChHc3RGRk1wZWdNdXhQYWQgKikKLSsgICAgICBnc3RfY29sbGVjdF9wYWRzX2FkZF9wYWQgKGZmbXBlZ211eC0+Y29sbGVjdCwgcGFkLAotKyAgICAgIHNpemVvZiAoR3N0RkZNcGVnTXV4UGFkKSk7Ci0rICBjb2xsZWN0X3BhZC0+cGFkbnVtID0gZmZtcGVnbXV4LT5jb250ZXh0LT5uYl9zdHJlYW1zOwotKwotKyAgLyogc21hbGwgaGFjayB0byBwdXQgb3VyIG93biBldmVudCBwYWQgZnVuY3Rpb24gYW5kIGNoYWluIHVwIHRvIGNvbGxlY3QgcGFkICovCi0rICBmZm1wZWdtdXgtPmV2ZW50X2Z1bmN0aW9uID0gR1NUX1BBRF9FVkVOVEZVTkMgKHBhZCk7Ci0rICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAocGFkLAotKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZmZtcGVnbXV4X3NpbmtfZXZlbnQpKTsKLSsKLSsgIGdzdF9wYWRfc2V0X3NldGNhcHNfZnVuY3Rpb24gKHBhZCwgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9mZm1wZWdtdXhfc2V0Y2FwcykpOwotKyAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoZWxlbWVudCwgcGFkKTsKLSsKLSsgIC8qIEFWU3RyZWFtIG5lZWRzIHRvIGJlIGNyZWF0ZWQgKi8KLSsgIHN0ID0gYXZfbmV3X3N0cmVhbSAoZmZtcGVnbXV4LT5jb250ZXh0LCBjb2xsZWN0X3BhZC0+cGFkbnVtKTsKLSsgIHN0LT5jb2RlYy0+Y29kZWNfdHlwZSA9IHR5cGU7Ci0rICBzdC0+Y29kZWMtPmNvZGVjX2lkID0gQ09ERUNfSURfTk9ORTsgIC8qIHRoaXMgaXMgYSBjaGVjayBhZnRlcndhcmRzICovCi0rICBzdC0+c3RyZWFtX2NvcHkgPSAxOyAgICAgICAgICAvKiB3ZSdyZSBub3QgdGhlIGFjdHVhbCBlbmNvZGVyICovCi0rICBzdC0+Y29kZWMtPmJpdF9yYXRlID0gYml0cmF0ZTsKLSsgIHN0LT5jb2RlYy0+ZnJhbWVfc2l6ZSA9IGZyYW1lc2l6ZTsKLSsgIC8qIHdlIGZpbGwgaW4gY29kZWMgZHVyaW5nIGNhcHNuZWdvICovCi0rCi0rICAvKiB3ZSBsb3ZlIGRlYnVnIG91dHB1dCAoYykgKHRtKSAocikgKi8KLSsgIEdTVF9ERUJVRyAoIkNyZWF0ZWQgJXMgcGFkIGZvciBmZm11eF8lcyBlbGVtZW50IiwKLSsgICAgICBwYWRuYW1lLCAoKEdzdEZGTXBlZ011eENsYXNzICopIGtsYXNzKS0+aW5fcGx1Z2luLT5uYW1lKTsKLSsgIGdfZnJlZSAocGFkbmFtZSk7Ci0rCi0rICByZXR1cm4gcGFkOwotK30KLSsKLSsvKioKLSsgKiBnc3RfZmZtcGVnbXV4X3NldGNhcHMKLSsgKiBAcGFkOiAjR3N0UGFkCi0rICogQGNhcHM6IE5ldyBjYXBzLgotKyAqCi0rICogU2V0IGNhcHMgdG8gcGFkLgotKyAqCi0rICogUmV0dXJuczogI1RSVUUgb24gc3VjY2Vzcy4KLSsgKi8KLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfZmZtcGVnbXV4X3NldGNhcHMgKEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpCi0rewotKyAgR3N0RkZNcGVnTXV4ICpmZm1wZWdtdXggPSAoR3N0RkZNcGVnTXV4ICopIChnc3RfcGFkX2dldF9wYXJlbnQgKHBhZCkpOwotKyAgR3N0RkZNcGVnTXV4UGFkICpjb2xsZWN0X3BhZDsKLSsgIEFWU3RyZWFtICpzdDsKLSsKLSsgIGNvbGxlY3RfcGFkID0gKEdzdEZGTXBlZ011eFBhZCAqKSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHBhZCk7Ci0rCi0rICBzdCA9IGZmbXBlZ211eC0+Y29udGV4dC0+c3RyZWFtc1tjb2xsZWN0X3BhZC0+cGFkbnVtXTsKLSsgIGZmbXBlZ211eC0+Y29udGV4dC0+cHJlbG9hZCA9IGZmbXBlZ211eC0+cHJlbG9hZDsKLSsgIGZmbXBlZ211eC0+Y29udGV4dC0+bWF4X2RlbGF5ID0gZmZtcGVnbXV4LT5tYXhfZGVsYXk7Ci0rCi0rICAvKiBmb3IgdGhlIGZvcm1hdC1zcGVjaWZpYyBndWVzc2VzLCB3ZSdsbCBnbyB0bwotKyAgICogb3VyIGZhbW91cyBjb2RlYyBtYXBwZXIgKi8KLSsgIGlmIChnc3RfZmZtcGVnX2NhcHNfdG9fY29kZWNpZCAoY2Fwcywgc3QtPmNvZGVjKSA9PSBDT0RFQ19JRF9OT05FKQotKyAgICBnb3RvIG5vdF9hY2NlcHRlZDsKLSsKLSsgIC8qIGNvcHkgb3ZlciB0aGUgYXNwZWN0IHJhdGlvcywgZmZtcGVnIGV4cGVjdHMgdGhlIHN0cmVhbSBhc3BlY3QgdG8gbWF0Y2ggdGhlCi0rICAgKiBjb2RlYyBhc3BlY3QuICovCi0rICBzdC0+c2FtcGxlX2FzcGVjdF9yYXRpbyA9IHN0LT5jb2RlYy0+c2FtcGxlX2FzcGVjdF9yYXRpbzsKLSsKLSsgIEdTVF9MT0dfT0JKRUNUIChwYWQsICJhY2NlcHRlZCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLSsgIHJldHVybiBUUlVFOwotKwotKyAgLyogRVJST1JTICovCi0rbm90X2FjY2VwdGVkOgotKyAgewotKyAgICBHU1RfTE9HX09CSkVDVCAocGFkLCAicmVqZWN0aW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rfQotKwotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9mZm1wZWdtdXhfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KQotK3sKLSsgIEdzdEZGTXBlZ011eCAqZmZtcGVnbXV4ID0gKEdzdEZGTXBlZ011eCAqKSBnc3RfcGFkX2dldF9wYXJlbnQgKHBhZCk7Ci0rICBnYm9vbGVhbiByZXMgPSBUUlVFOwotKwotKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0rICAgIGNhc2UgR1NUX0VWRU5UX1RBRzp7Ci0rICAgICAgR3N0VGFnTGlzdCAqdGFnbGlzdDsKLSsgICAgICBHc3RUYWdTZXR0ZXIgKnNldHRlciA9IEdTVF9UQUdfU0VUVEVSIChmZm1wZWdtdXgpOwotKyAgICAgIGNvbnN0IEdzdFRhZ01lcmdlTW9kZSBtb2RlID0gZ3N0X3RhZ19zZXR0ZXJfZ2V0X3RhZ19tZXJnZV9tb2RlIChzZXR0ZXIpOwotKwotKyAgICAgIGdzdF9ldmVudF9wYXJzZV90YWcgKGV2ZW50LCAmdGFnbGlzdCk7Ci0rICAgICAgZ3N0X3RhZ19zZXR0ZXJfbWVyZ2VfdGFncyAoc2V0dGVyLCB0YWdsaXN0LCBtb2RlKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAgLyogY2hhaW5pbmcgdXAgdG8gY29sbGVjdHBhZHMgZGVmYXVsdCBldmVudCBmdW5jdGlvbiAqLwotKyAgcmVzID0gZmZtcGVnbXV4LT5ldmVudF9mdW5jdGlvbiAocGFkLCBldmVudCk7Ci0rCi0rICBnc3Rfb2JqZWN0X3VucmVmIChmZm1wZWdtdXgpOwotKyAgcmV0dXJuIHJlczsKLSt9Ci0rCi0rc3RhdGljIEdzdEZsb3dSZXR1cm4KLStnc3RfZmZtcGVnbXV4X2NvbGxlY3RlZCAoR3N0Q29sbGVjdFBhZHMgKiBwYWRzLCBncG9pbnRlciB1c2VyX2RhdGEpCi0rewotKyAgR3N0RkZNcGVnTXV4ICpmZm1wZWdtdXggPSAoR3N0RkZNcGVnTXV4ICopIHVzZXJfZGF0YTsKLSsgIEdTTGlzdCAqY29sbGVjdGVkOwotKyAgR3N0RkZNcGVnTXV4UGFkICpiZXN0X3BhZDsKLSsgIEdzdENsb2NrVGltZSBiZXN0X3RpbWU7Ci0rI2lmIDAKLSsgIC8qIFJlLWVuYWJsZSBvbmNlIGNvbnZlcnRlZCB0byBuZXcgQVZNZXRhRGF0YSBBUEkKLSsgICAqIFNlZSAjNTY2NjA1Ci0rICAgKi8KLSsgIGNvbnN0IEdzdFRhZ0xpc3QgKnRhZ3M7Ci0rI2VuZGlmCi0rCi0rICAvKiBvcGVuICJmaWxlIiAoZ3N0cmVhbWVyIHByb3RvY29sIHRvIG5leHQgZWxlbWVudCkgKi8KLSsgIGlmICghZmZtcGVnbXV4LT5vcGVuZWQpIHsKLSsgICAgaW50IG9wZW5fZmxhZ3MgPSBVUkxfV1JPTkxZOwotKwotKyAgICAvKiB3ZSBkbyBuZWVkIGFsbCBzdHJlYW1zIHRvIGhhdmUgc3RhcnRlZCBjYXBzbmVnbywKLSsgICAgICogb3IgdGhpbmdzIHdpbGwgZ28gaG9ycmlibHkgd3JvbmcgKi8KLSsgICAgZm9yIChjb2xsZWN0ZWQgPSBmZm1wZWdtdXgtPmNvbGxlY3QtPmRhdGE7IGNvbGxlY3RlZDsKLSsgICAgICAgIGNvbGxlY3RlZCA9IGdfc2xpc3RfbmV4dCAoY29sbGVjdGVkKSkgewotKyAgICAgIEdzdEZGTXBlZ011eFBhZCAqY29sbGVjdF9wYWQgPSAoR3N0RkZNcGVnTXV4UGFkICopIGNvbGxlY3RlZC0+ZGF0YTsKLSsgICAgICBBVlN0cmVhbSAqc3QgPSBmZm1wZWdtdXgtPmNvbnRleHQtPnN0cmVhbXNbY29sbGVjdF9wYWQtPnBhZG51bV07Ci0rCi0rICAgICAgLyogY2hlY2sgd2hldGhlciB0aGUgcGFkIGhhcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkIGNhcHNuZWdvICovCi0rICAgICAgaWYgKHN0LT5jb2RlYy0+Y29kZWNfaWQgPT0gQ09ERUNfSURfTk9ORSkgewotKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZmbXBlZ211eCwgQ09SRSwgTkVHT1RJQVRJT04sIChOVUxMKSwKLSsgICAgICAgICAgICAoIm5vIGNhcHMgc2V0IG9uIHN0cmVhbSAlZCAoJXMpIiwgY29sbGVjdF9wYWQtPnBhZG51bSwKLSsgICAgICAgICAgICAgICAgKHN0LT5jb2RlYy0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pID8KLSsgICAgICAgICAgICAgICAgInZpZGVvIiA6ICJhdWRpbyIpKTsKLSsgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSsgICAgICB9Ci0rICAgICAgLyogc2V0IGZyYW1lcmF0ZSBmb3IgYXVkaW8gKi8KLSsgICAgICBpZiAoc3QtPmNvZGVjLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykgewotKyAgICAgICAgc3dpdGNoIChzdC0+Y29kZWMtPmNvZGVjX2lkKSB7Ci0rICAgICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1MxNkxFOgotKyAgICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9TMTZCRToKLSsgICAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fVTE2TEU6Ci0rICAgICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1UxNkJFOgotKyAgICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9TODoKLSsgICAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fVTg6Ci0rICAgICAgICAgICAgc3QtPmNvZGVjLT5mcmFtZV9zaXplID0gMTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgewotKyAgICAgICAgICAgIEdzdEJ1ZmZlciAqYnVmZmVyOwotKwotKyAgICAgICAgICAgIC8qIEZJWE1FIDogVGhpcyBkb2Vzbid0IHdvcmsgZm9yIFJBVyBBVURJTy4uLgotKyAgICAgICAgICAgICAqIGluIGZhY3QgSSdtIHdvbmRlcmluZyBpZiBpdCBldmVuIHdvcmtzIGZvciBhbnkga2luZCBvZiBhdWRpby4uLiAqLwotKyAgICAgICAgICAgIGJ1ZmZlciA9IGdzdF9jb2xsZWN0X3BhZHNfcGVlayAoZmZtcGVnbXV4LT5jb2xsZWN0LAotKyAgICAgICAgICAgICAgICAoR3N0Q29sbGVjdERhdGEgKikgY29sbGVjdF9wYWQpOwotKyAgICAgICAgICAgIGlmIChidWZmZXIpIHsKLSsgICAgICAgICAgICAgIHN0LT5jb2RlYy0+ZnJhbWVfc2l6ZSA9Ci0rICAgICAgICAgICAgICAgICAgc3QtPmNvZGVjLT5zYW1wbGVfcmF0ZSAqCi0rICAgICAgICAgICAgICAgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSAvIEdTVF9TRUNPTkQ7Ci0rICAgICAgICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICAgIH0KLSsgICAgfQotKwotKyNpZiAwCi0rICAgIC8qIFJlLWVuYWJsZSBvbmNlIGNvbnZlcnRlZCB0byBuZXcgQVZNZXRhRGF0YSBBUEkKLSsgICAgICogU2VlICM1NjY2MDUKLSsgICAgICovCi0rCi0rICAgIC8qIHRhZ3MgKi8KLSsgICAgdGFncyA9IGdzdF90YWdfc2V0dGVyX2dldF90YWdfbGlzdCAoR1NUX1RBR19TRVRURVIgKGZmbXBlZ211eCkpOwotKyAgICBpZiAodGFncykgewotKyAgICAgIGdpbnQgaTsKLSsgICAgICBnY2hhciAqczsKLSsKLSsgICAgICAvKiBnZXQgdGhlIGludGVyZXN0aW5nIG9uZXMgKi8KLSsgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZzKSkgewotKyAgICAgICAgc3RybmNweSAoZmZtcGVnbXV4LT5jb250ZXh0LT50aXRsZSwgcywKLSsgICAgICAgICAgICBzaXplb2YgKGZmbXBlZ211eC0+Y29udGV4dC0+dGl0bGUpKTsKLSsgICAgICB9Ci0rICAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCBHU1RfVEFHX0FSVElTVCwgJnMpKSB7Ci0rICAgICAgICBzdHJuY3B5IChmZm1wZWdtdXgtPmNvbnRleHQtPmF1dGhvciwgcywKLSsgICAgICAgICAgICBzaXplb2YgKGZmbXBlZ211eC0+Y29udGV4dC0+YXV0aG9yKSk7Ci0rICAgICAgfQotKyAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAodGFncywgR1NUX1RBR19DT1BZUklHSFQsICZzKSkgewotKyAgICAgICAgc3RybmNweSAoZmZtcGVnbXV4LT5jb250ZXh0LT5jb3B5cmlnaHQsIHMsCi0rICAgICAgICAgICAgc2l6ZW9mIChmZm1wZWdtdXgtPmNvbnRleHQtPmNvcHlyaWdodCkpOwotKyAgICAgIH0KLSsgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHRhZ3MsIEdTVF9UQUdfQ09NTUVOVCwgJnMpKSB7Ci0rICAgICAgICBzdHJuY3B5IChmZm1wZWdtdXgtPmNvbnRleHQtPmNvbW1lbnQsIHMsCi0rICAgICAgICAgICAgc2l6ZW9mIChmZm1wZWdtdXgtPmNvbnRleHQtPmNvbW1lbnQpKTsKLSsgICAgICB9Ci0rICAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCBHU1RfVEFHX0FMQlVNLCAmcykpIHsKLSsgICAgICAgIHN0cm5jcHkgKGZmbXBlZ211eC0+Y29udGV4dC0+YWxidW0sIHMsCi0rICAgICAgICAgICAgc2l6ZW9mIChmZm1wZWdtdXgtPmNvbnRleHQtPmFsYnVtKSk7Ci0rICAgICAgfQotKyAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAodGFncywgR1NUX1RBR19HRU5SRSwgJnMpKSB7Ci0rICAgICAgICBzdHJuY3B5IChmZm1wZWdtdXgtPmNvbnRleHQtPmdlbnJlLCBzLAotKyAgICAgICAgICAgIHNpemVvZiAoZmZtcGVnbXV4LT5jb250ZXh0LT5nZW5yZSkpOwotKyAgICAgIH0KLSsgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9pbnQgKHRhZ3MsIEdTVF9UQUdfVFJBQ0tfTlVNQkVSLCAmaSkpIHsKLSsgICAgICAgIGZmbXBlZ211eC0+Y29udGV4dC0+dHJhY2sgPSBpOwotKyAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotKwotKyAgICAvKiBzZXQgdGhlIHN0cmVhbWhlYWRlciBmbGFnIGZvciBnc3RmZm1wZWdwcm90b2NvbCBpZiBjb2RlYyBzdXBwb3J0cyBpdCAqLwotKyAgICBpZiAoIXN0cmNtcCAoZmZtcGVnbXV4LT5jb250ZXh0LT5vZm9ybWF0LT5uYW1lLCAiZmx2IikpIHsKLSsgICAgICBvcGVuX2ZsYWdzIHw9IEdTVF9GRk1QRUdfVVJMX1NUUkVBTUhFQURFUjsKLSsgICAgfQotKwotKyAgICBpZiAodXJsX2ZvcGVuICgmZmZtcGVnbXV4LT5jb250ZXh0LT5wYiwKLSsgICAgICAgICAgICBmZm1wZWdtdXgtPmNvbnRleHQtPmZpbGVuYW1lLCBvcGVuX2ZsYWdzKSA8IDApIHsKLSsgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmZtcGVnbXV4LCBMSUJSQVJZLCBUT09fTEFaWSwgKE5VTEwpLAotKyAgICAgICAgICAoIkZhaWxlZCB0byBvcGVuIHN0cmVhbSBjb250ZXh0IGluIGZmbXV4IikpOwotKyAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSsgICAgfQotKwotKyAgICBpZiAoYXZfc2V0X3BhcmFtZXRlcnMgKGZmbXBlZ211eC0+Y29udGV4dCwgTlVMTCkgPCAwKSB7Ci0rICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZmbXBlZ211eCwgTElCUkFSWSwgSU5JVCwgKE5VTEwpLAotKyAgICAgICAgICAoIkZhaWxlZCB0byBpbml0aWFsaXplIG11eGVyIikpOwotKyAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSsgICAgfQotKwotKyAgICAvKiBub3cgb3BlbiB0aGUgbXV4IGZvcm1hdCAqLwotKyAgICBpZiAoYXZfd3JpdGVfaGVhZGVyIChmZm1wZWdtdXgtPmNvbnRleHQpIDwgMCkgewotKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmZm1wZWdtdXgsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCi0rICAgICAgICAgICgiRmFpbGVkIHRvIHdyaXRlIGZpbGUgaGVhZGVyIC0gY2hlY2sgY29kZWMgc2V0dGluZ3MiKSk7Ci0rICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotKyAgICB9Ci0rCi0rICAgIC8qIHdlJ3JlIG5vdyBvcGVuZWQgKi8KLSsgICAgZmZtcGVnbXV4LT5vcGVuZWQgPSBUUlVFOwotKwotKyAgICAvKiBmbHVzaCB0aGUgaGVhZGVyIHNvIGl0IHdpbGwgYmUgdXNlZCBhcyBzdHJlYW1oZWFkZXIgKi8KLSsgICAgcHV0X2ZsdXNoX3BhY2tldCAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0rICB9Ci0rCi0rICAvKiB0YWtlIHRoZSBvbmUgd2l0aCBlYXJsaWVzdCB0aW1lc3RhbXAsCi0rICAgKiBhbmQgcHVzaCBpdCBmb3J3YXJkICovCi0rICBiZXN0X3BhZCA9IE5VTEw7Ci0rICBiZXN0X3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotKyAgZm9yIChjb2xsZWN0ZWQgPSBmZm1wZWdtdXgtPmNvbGxlY3QtPmRhdGE7IGNvbGxlY3RlZDsKLSsgICAgICBjb2xsZWN0ZWQgPSBnX3NsaXN0X25leHQgKGNvbGxlY3RlZCkpIHsKLSsgICAgR3N0RkZNcGVnTXV4UGFkICpjb2xsZWN0X3BhZCA9IChHc3RGRk1wZWdNdXhQYWQgKikgY29sbGVjdGVkLT5kYXRhOwotKyAgICBHc3RCdWZmZXIgKmJ1ZmZlciA9IGdzdF9jb2xsZWN0X3BhZHNfcGVlayAoZmZtcGVnbXV4LT5jb2xsZWN0LAotKyAgICAgICAgKEdzdENvbGxlY3REYXRhICopIGNvbGxlY3RfcGFkKTsKLSsKLSsgICAgLyogaWYgdGhlcmUncyBubyBidWZmZXIsIGp1c3QgY29udGludWUgKi8KLSsgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7Ci0rICAgICAgY29udGludWU7Ci0rICAgIH0KLSsKLSsgICAgLyogaWYgd2UgaGF2ZSBubyBidWZmZXIgeWV0LCBqdXN0IHVzZSB0aGUgZmlyc3Qgb25lICovCi0rICAgIGlmIChiZXN0X3BhZCA9PSBOVUxMKSB7Ci0rICAgICAgYmVzdF9wYWQgPSBjb2xsZWN0X3BhZDsKLSsgICAgICBiZXN0X3RpbWUgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKTsKLSsgICAgICBnb3RvIG5leHRfcGFkOwotKyAgICB9Ci0rCi0rICAgIC8qIGlmIHdlIGRvIGhhdmUgb25lLCBvbmx5IHVzZSB0aGlzIG9uZSBpZiBpdCdzIG9sZGVyICovCi0rICAgIGlmIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSA8IGJlc3RfdGltZSkgewotKyAgICAgIGJlc3RfdGltZSA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpOwotKyAgICAgIGJlc3RfcGFkID0gY29sbGVjdF9wYWQ7Ci0rICAgIH0KLSsKLSsgIG5leHRfcGFkOgotKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotKwotKyAgICAvKiBNdXggYnVmZmVycyB3aXRoIGludmFsaWQgdGltZXN0YW1wIGZpcnN0ICovCi0rICAgIGlmICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGJlc3RfdGltZSkpCi0rICAgICAgYnJlYWs7Ci0rICB9Ci0rCi0rICAvKiBub3cgaGFuZGxlIHRoZSBidWZmZXIsIG9yIHNpZ25hbCBFT1MgaWYgd2UgaGF2ZQotKyAgICogbm8gYnVmZmVycyBsZWZ0ICovCi0rICBpZiAoYmVzdF9wYWQgIT0gTlVMTCkgewotKyAgICBHc3RCdWZmZXIgKmJ1ZjsKLSsgICAgQVZQYWNrZXQgcGt0OwotKyAgICBnYm9vbGVhbiBuZWVkX2ZyZWUgPSBGQUxTRTsKLSsKLSsgICAgLyogcHVzaCBvdXQgY3VycmVudCBidWZmZXIgKi8KLSsgICAgYnVmID0gZ3N0X2NvbGxlY3RfcGFkc19wb3AgKGZmbXBlZ211eC0+Y29sbGVjdCwKLSsgICAgICAgIChHc3RDb2xsZWN0RGF0YSAqKSBiZXN0X3BhZCk7Ci0rCi0rICAgIGZmbXBlZ211eC0+Y29udGV4dC0+c3RyZWFtc1tiZXN0X3BhZC0+cGFkbnVtXS0+Y29kZWMtPmZyYW1lX251bWJlcisrOwotKwotKyAgICAvKiBzZXQgdGltZSAqLwotKyAgICBwa3QucHRzID0gZ3N0X2ZmbXBlZ190aW1lX2dzdF90b19mZiAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZiksCi0rICAgICAgICBmZm1wZWdtdXgtPmNvbnRleHQtPnN0cmVhbXNbYmVzdF9wYWQtPnBhZG51bV0tPnRpbWVfYmFzZSk7Ci0rICAgIHBrdC5kdHMgPSBwa3QucHRzOwotKwotKyAgICBpZiAoc3RyY21wIChmZm1wZWdtdXgtPmNvbnRleHQtPm9mb3JtYXQtPm5hbWUsICJnaWYiKSA9PSAwKSB7Ci0rICAgICAgQVZTdHJlYW0gKnN0ID0gZmZtcGVnbXV4LT5jb250ZXh0LT5zdHJlYW1zW2Jlc3RfcGFkLT5wYWRudW1dOwotKyAgICAgIEFWUGljdHVyZSBzcmMsIGRzdDsKLSsKLSsgICAgICBuZWVkX2ZyZWUgPSBUUlVFOwotKyAgICAgIHBrdC5zaXplID0gc3QtPmNvZGVjLT53aWR0aCAqIHN0LT5jb2RlYy0+aGVpZ2h0ICogMzsKLSsgICAgICBwa3QuZGF0YSA9IGdfbWFsbG9jIChwa3Quc2l6ZSk7Ci0rCi0rICAgICAgZHN0LmRhdGFbMF0gPSBwa3QuZGF0YTsKLSsgICAgICBkc3QuZGF0YVsxXSA9IE5VTEw7Ci0rICAgICAgZHN0LmRhdGFbMl0gPSBOVUxMOwotKyAgICAgIGRzdC5saW5lc2l6ZVswXSA9IHN0LT5jb2RlYy0+d2lkdGggKiAzOwotKwotKyAgICAgIGdzdF9mZm1wZWdfYXZwaWN0dXJlX2ZpbGwgKCZzcmMsIEdTVF9CVUZGRVJfREFUQSAoYnVmKSwKLSsgICAgICAgICAgUElYX0ZNVF9SR0IyNCwgc3QtPmNvZGVjLT53aWR0aCwgc3QtPmNvZGVjLT5oZWlnaHQpOwotKwotKyAgICAgIGF2X3BpY3R1cmVfY29weSAoJmRzdCwgJnNyYywgUElYX0ZNVF9SR0IyNCwKLSsgICAgICAgICAgc3QtPmNvZGVjLT53aWR0aCwgc3QtPmNvZGVjLT5oZWlnaHQpOwotKyAgICB9IGVsc2UgewotKyAgICAgIHBrdC5kYXRhID0gR1NUX0JVRkZFUl9EQVRBIChidWYpOwotKyAgICAgIHBrdC5zaXplID0gR1NUX0JVRkZFUl9TSVpFIChidWYpOwotKyAgICB9Ci0rCi0rICAgIHBrdC5zdHJlYW1faW5kZXggPSBiZXN0X3BhZC0+cGFkbnVtOwotKyAgICBwa3QuZmxhZ3MgPSAwOwotKwotKyAgICBpZiAoIUdTVF9CVUZGRVJfRkxBR19JU19TRVQgKGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpKQotKyAgICAgIHBrdC5mbGFncyB8PSBBVl9QS1RfRkxBR19LRVk7Ci0rCi0rICAgIGlmIChHU1RfQlVGRkVSX0RVUkFUSU9OX0lTX1ZBTElEIChidWYpKQotKyAgICAgIHBrdC5kdXJhdGlvbiA9Ci0rICAgICAgICAgIGdzdF9mZm1wZWdfdGltZV9nc3RfdG9fZmYgKEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZiksCi0rICAgICAgICAgIGZmbXBlZ211eC0+Y29udGV4dC0+c3RyZWFtc1tiZXN0X3BhZC0+cGFkbnVtXS0+dGltZV9iYXNlKTsKLSsgICAgZWxzZQotKyAgICAgIHBrdC5kdXJhdGlvbiA9IDA7Ci0rICAgIGF2X3dyaXRlX2ZyYW1lIChmZm1wZWdtdXgtPmNvbnRleHQsICZwa3QpOwotKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotKyAgICBpZiAobmVlZF9mcmVlKQotKyAgICAgIGdfZnJlZSAocGt0LmRhdGEpOwotKyAgfSBlbHNlIHsKLSsgICAgLyogY2xvc2UgZG93biAqLwotKyAgICBhdl93cml0ZV90cmFpbGVyIChmZm1wZWdtdXgtPmNvbnRleHQpOwotKyAgICBmZm1wZWdtdXgtPm9wZW5lZCA9IEZBTFNFOwotKyAgICBwdXRfZmx1c2hfcGFja2V0IChmZm1wZWdtdXgtPmNvbnRleHQtPnBiKTsKLSsgICAgdXJsX2ZjbG9zZSAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0rICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoZmZtcGVnbXV4LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKLSsgICAgcmV0dXJuIEdTVF9GTE9XX1VORVhQRUNURUQ7Ci0rICB9Ci0rCi0rICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0rfQotKwotK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotK2dzdF9mZm1wZWdtdXhfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLSt7Ci0rICBHc3RGbG93UmV0dXJuIHJldDsKLSsgIEdzdEZGTXBlZ011eCAqZmZtcGVnbXV4ID0gKEdzdEZGTXBlZ011eCAqKSAoZWxlbWVudCk7Ci0rCi0rICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSsgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6Ci0rICAgICAgZ3N0X2NvbGxlY3RfcGFkc19zdGFydCAoZmZtcGVnbXV4LT5jb2xsZWN0KTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgotKyAgICAgIGdzdF9jb2xsZWN0X3BhZHNfc3RvcCAoZmZtcGVnbXV4LT5jb2xsZWN0KTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOwotKwotKyAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0rICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNFRDoKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKLSsgICAgICBnc3RfdGFnX3NldHRlcl9yZXNldF90YWdzIChHU1RfVEFHX1NFVFRFUiAoZmZtcGVnbXV4KSk7Ci0rICAgICAgaWYgKGZmbXBlZ211eC0+b3BlbmVkKSB7Ci0rICAgICAgICBmZm1wZWdtdXgtPm9wZW5lZCA9IEZBTFNFOwotKyAgICAgICAgdXJsX2ZjbG9zZSAoZmZtcGVnbXV4LT5jb250ZXh0LT5wYik7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSsKLSsgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBHc3RDYXBzICoKLStnc3RfZmZtcGVnbXV4X2dldF9pZF9jYXBzIChlbnVtIENvZGVjSUQgKmlkX2xpc3QpCi0rewotKyAgR3N0Q2FwcyAqY2FwcywgKnQ7Ci0rICBnaW50IGk7Ci0rCi0rICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOwotKyAgZm9yIChpID0gMDsgaWRfbGlzdFtpXSAhPSBDT0RFQ19JRF9OT05FOyBpKyspIHsKLSsgICAgaWYgKCh0ID0gZ3N0X2ZmbXBlZ19jb2RlY2lkX3RvX2NhcHMgKGlkX2xpc3RbaV0sIE5VTEwsIFRSVUUpKSkKLSsgICAgICBnc3RfY2Fwc19hcHBlbmQgKGNhcHMsIHQpOwotKyAgfQotKyAgaWYgKGdzdF9jYXBzX2lzX2VtcHR5IChjYXBzKSkgewotKyAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0rICAgIHJldHVybiBOVUxMOwotKyAgfQotKwotKyAgcmV0dXJuIGNhcHM7Ci0rfQotKwotKy8qIHNldCBhIGxpc3Qgb2YgaW50ZWdlciB2YWx1ZXMgb24gdGhlIGNhcHMsIGUuZy4gZm9yIHNhbXBsZSByYXRlcyAqLwotK3N0YXRpYyB2b2lkCi0rZ3N0X2ZmbXBlZ19tdXhfc2ltcGxlX2NhcHNfc2V0X2ludF9saXN0IChHc3RDYXBzICogY2FwcywgY29uc3QgZ2NoYXIgKiBmaWVsZCwKLSsgICAgZ3VpbnQgbnVtLCBjb25zdCBnaW50ICogdmFsdWVzKQotK3sKLSsgIEdWYWx1ZSBsaXN0ID0geyAwLCB9OwotKyAgR1ZhbHVlIHZhbCA9IHsgMCwgfTsKLSsgIGdpbnQgaTsKLSsKLSsgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9DQVBTX0lTX1NJTVBMRSAoY2FwcykpOwotKwotKyAgZ192YWx1ZV9pbml0ICgmbGlzdCwgR1NUX1RZUEVfTElTVCk7Ci0rICBnX3ZhbHVlX2luaXQgKCZ2YWwsIEdfVFlQRV9JTlQpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IG51bTsgKytpKSB7Ci0rICAgIGdfdmFsdWVfc2V0X2ludCAoJnZhbCwgdmFsdWVzW2ldKTsKLSsgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7Ci0rICB9Ci0rCi0rICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCksIGZpZWxkLCAmbGlzdCk7Ci0rCi0rICBnX3ZhbHVlX3Vuc2V0ICgmdmFsKTsKLSsgIGdfdmFsdWVfdW5zZXQgKCZsaXN0KTsKLSt9Ci0rCi0rZ2Jvb2xlYW4KLStnc3RfZmZtcGVnbXV4X3JlZ2lzdGVyIChHc3RQbHVnaW4gKiBwbHVnaW4pCi0rewotKyAgR1R5cGVJbmZvIHR5cGVpbmZvID0gewotKyAgICBzaXplb2YgKEdzdEZGTXBlZ011eENsYXNzKSwKLSsgICAgKEdCYXNlSW5pdEZ1bmMpIGdzdF9mZm1wZWdtdXhfYmFzZV9pbml0LAotKyAgICBOVUxMLAotKyAgICAoR0NsYXNzSW5pdEZ1bmMpIGdzdF9mZm1wZWdtdXhfY2xhc3NfaW5pdCwKLSsgICAgTlVMTCwKLSsgICAgTlVMTCwKLSsgICAgc2l6ZW9mIChHc3RGRk1wZWdNdXgpLAotKyAgICAwLAotKyAgICAoR0luc3RhbmNlSW5pdEZ1bmMpIGdzdF9mZm1wZWdtdXhfaW5pdCwKLSsgIH07Ci0rICBzdGF0aWMgY29uc3QgR0ludGVyZmFjZUluZm8gdGFnX3NldHRlcl9pbmZvID0gewotKyAgICBOVUxMLCBOVUxMLCBOVUxMCi0rICB9OwotKyAgR1R5cGUgdHlwZTsKLSsgIEFWT3V0cHV0Rm9ybWF0ICppbl9wbHVnaW47Ci0rCi0rICBpbl9wbHVnaW4gPSBhdl9vZm9ybWF0X25leHQgKE5VTEwpOwotKwotKyAgR1NUX0xPRyAoIlJlZ2lzdGVyaW5nIG11eGVycyIpOwotKwotKyAgd2hpbGUgKGluX3BsdWdpbikgewotKyAgICBnY2hhciAqdHlwZV9uYW1lOwotKyAgICBnY2hhciAqcDsKLSsgICAgR3N0UmFuayByYW5rID0gR1NUX1JBTktfTUFSR0lOQUw7Ci0rCi0rICAgIGlmICgoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgInUxNiIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJzMTYiLCAzKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAidTI0IiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgInMyNCIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJ1OCIsIDIpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJzOCIsIDIpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJ1MzIiLCAzKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiczMyIiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImYzMiIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJmNjQiLCAzKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAicmF3IiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImNyYyIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJudWxsIiwgNCkpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImdpZiIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJmcmFtZSIsIDUpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJpbWFnZSIsIDUpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJtdWxhdyIsIDUpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJhbGF3IiwgNCkpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImgyNiIsIDMpKSB8fAotKyAgICAgICAgKCFzdHJuY21wIChpbl9wbHVnaW4tPm5hbWUsICJydHAiLCAzKSkgfHwKLSsgICAgICAgICghc3RybmNtcCAoaW5fcGx1Z2luLT5uYW1lLCAiYXNzIiwgMykpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgImZmbWV0YWRhdGEiLCAxMCkpIHx8Ci0rICAgICAgICAoIXN0cm5jbXAgKGluX3BsdWdpbi0+bmFtZSwgInNydCIsIDMpKQotKyAgICAgICAgKSB7Ci0rICAgICAgR1NUX0xPRyAoIklnbm9yaW5nIG11eGVyICVzIiwgaW5fcGx1Z2luLT5uYW1lKTsKLSsgICAgICBnb3RvIG5leHQ7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCghc3RybmNtcCAoaW5fcGx1Z2luLT5sb25nX25hbWUsICJyYXcgIiwgNCkpKSB7Ci0rICAgICAgR1NUX0xPRyAoIklnbm9yaW5nIHJhdyBtdXhlciAlcyIsIGluX3BsdWdpbi0+bmFtZSk7Ci0rICAgICAgZ290byBuZXh0OwotKyAgICB9Ci0rCi0rICAgIGlmIChnc3RfZmZtcGVnbXV4X2dldF9yZXBsYWNlbWVudCAoaW5fcGx1Z2luLT5uYW1lKSkKLSsgICAgICByYW5rID0gR1NUX1JBTktfTk9ORTsKLSsKLSsgICAgLyogRklYTUUgOiBXZSBuZWVkIGEgZmFzdCB3YXkgdG8ga25vdyB3aGV0aGVyIHdlIGhhdmUgbWFwcGluZ3MgZm9yIHRoaXMKLSsgICAgICogbXV4ZXIgdHlwZS4gKi8KLSsKLSsgICAgLyogY29uc3RydWN0IHRoZSB0eXBlICovCi0rICAgIHR5cGVfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImZmbXV4XyVzIiwgaW5fcGx1Z2luLT5uYW1lKTsKLSsKLSsgICAgcCA9IHR5cGVfbmFtZTsKLSsKLSsgICAgd2hpbGUgKCpwKSB7Ci0rICAgICAgaWYgKCpwID09ICcuJykKLSsgICAgICAgICpwID0gJ18nOwotKyAgICAgIHArKzsKLSsgICAgfQotKwotKyAgICB0eXBlID0gZ190eXBlX2Zyb21fbmFtZSAodHlwZV9uYW1lKTsKLSsKLSsgICAgaWYgKCF0eXBlKSB7Ci0rICAgICAgLyogY3JlYXRlIHRoZSB0eXBlIG5vdyAqLwotKyAgICAgIHR5cGUgPSBnX3R5cGVfcmVnaXN0ZXJfc3RhdGljIChHU1RfVFlQRV9FTEVNRU5ULCB0eXBlX25hbWUsICZ0eXBlaW5mbywgMCk7Ci0rICAgICAgZ190eXBlX3NldF9xZGF0YSAodHlwZSwgR1NUX0ZGTVVYX1BBUkFNU19RREFUQSwgKGdwb2ludGVyKSBpbl9wbHVnaW4pOwotKyAgICAgIGdfdHlwZV9hZGRfaW50ZXJmYWNlX3N0YXRpYyAodHlwZSwgR1NUX1RZUEVfVEFHX1NFVFRFUiwgJnRhZ19zZXR0ZXJfaW5mbyk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCB0eXBlX25hbWUsIHJhbmssIHR5cGUpKSB7Ci0rICAgICAgZ19mcmVlICh0eXBlX25hbWUpOwotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgfQotKwotKyAgICBnX2ZyZWUgKHR5cGVfbmFtZSk7Ci0rCi0rICBuZXh0OgotKyAgICBpbl9wbHVnaW4gPSBhdl9vZm9ybWF0X25leHQgKGluX3BsdWdpbik7Ci0rICB9Ci0rCi0rICBHU1RfTE9HICgiRmluaXNoZWQgcmVnaXN0ZXJpbmcgbXV4ZXJzIik7Ci0rCi0rICByZXR1cm4gVFJVRTsKLSt9Ci1kaWZmIC11TnIgZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWdwcm90b2NvbC5jIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ3Byb3RvY29sLmMKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ3Byb3RvY29sLmMJMjAxMS0wNy0xMiAxNjozNToyOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWdwcm90b2NvbC5jCTIwMTQtMDgtMDggMTU6MjY6MDcuODc1ODU3NTU1ICswMjAwCi1AQCAtNDYsNjMgKzQ2LDE0IEBACi0gfTsKLSAKLSBzdGF0aWMgaW50Ci0tZ3N0X2ZmbXBlZ2RhdGFfb3BlbiAoVVJMQ29udGV4dCAqIGgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MpCi0tewotLSAgR3N0UHJvdG9jb2xJbmZvICppbmZvOwotLSAgR3N0UGFkICpwYWQ7Ci0tCi0tICBHU1RfTE9HICgiT3BlbmluZyAlcyIsIGZpbGVuYW1lKTsKLS0KLS0gIGluZm8gPSBnX25ldzAgKEdzdFByb3RvY29sSW5mbywgMSk7Ci0tCi0tICBpbmZvLT5zZXRfc3RyZWFtaGVhZGVyID0gZmxhZ3MgJiBHU1RfRkZNUEVHX1VSTF9TVFJFQU1IRUFERVI7Ci0tICBmbGFncyAmPSB+R1NUX0ZGTVBFR19VUkxfU1RSRUFNSEVBREVSOwotLSAgaC0+ZmxhZ3MgJj0gfkdTVF9GRk1QRUdfVVJMX1NUUkVBTUhFQURFUjsKLS0KLS0gIC8qIHdlIGRvbid0IHN1cHBvcnQgUi9XIHRvZ2V0aGVyICovCi0tICBpZiAoZmxhZ3MgIT0gVVJMX1JET05MWSAmJiBmbGFncyAhPSBVUkxfV1JPTkxZKSB7Ci0tICAgIEdTVF9XQVJOSU5HICgiT25seSByZWFkLW9ubHkgb3Igd3JpdGUtb25seSBhcmUgc3VwcG9ydGVkIik7Ci0tICAgIHJldHVybiAtRUlOVkFMOwotLSAgfQotLQotLSAgaWYgKHNzY2FuZiAoJmZpbGVuYW1lWzEyXSwgIiVwIiwgJnBhZCkgIT0gMSkgewotLSAgICBHU1RfV0FSTklORyAoImNvdWxkIG5vdCBkZWNvZGUgcGFkIGZyb20gJXMiLCBmaWxlbmFtZSk7Ci0tICAgIHJldHVybiAtRUlPOwotLSAgfQotLQotLSAgLyogbWFrZSBzdXJlIHdlJ3JlIGEgcGFkIGFuZCB0aGF0IHdlJ3JlIG9mIHRoZSByaWdodCB0eXBlICovCi0tICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BBRCAocGFkKSwgLUVJTlZBTCk7Ci0tCi0tICBzd2l0Y2ggKGZsYWdzKSB7Ci0tICAgIGNhc2UgVVJMX1JET05MWToKLS0gICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX1BBRF9JU19TSU5LIChwYWQpLCAtRUlOVkFMKTsKLS0gICAgICBicmVhazsKLS0gICAgY2FzZSBVUkxfV1JPTkxZOgotLSAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfUEFEX0lTX1NSQyAocGFkKSwgLUVJTlZBTCk7Ci0tICAgICAgYnJlYWs7Ci0tICB9Ci0tCi0tICBpbmZvLT5lb3MgPSBGQUxTRTsKLS0gIGluZm8tPnBhZCA9IHBhZDsKLS0gIGluZm8tPm9mZnNldCA9IDA7Ci0tCi0tICBoLT5wcml2X2RhdGEgPSAodm9pZCAqKSBpbmZvOwotLSAgaC0+aXNfc3RyZWFtZWQgPSBGQUxTRTsKLS0gIGgtPm1heF9wYWNrZXRfc2l6ZSA9IDA7Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0tCi0tc3RhdGljIGludAotLWdzdF9mZm1wZWdkYXRhX3BlZWsgKFVSTENvbnRleHQgKiBoLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQotK2dzdF9mZm1wZWdkYXRhX3BlZWsgKHZvaWQgKnByaXZfZGF0YSwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkKLSB7Ci0gICBHc3RQcm90b2NvbEluZm8gKmluZm87Ci0gICBHc3RCdWZmZXIgKmluYnVmID0gTlVMTDsKLSAgIEdzdEZsb3dSZXR1cm4gcmV0OwotICAgaW50IHRvdGFsID0gMDsKLSAKLS0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChoLT5mbGFncyA9PSBVUkxfUkRPTkxZLCBBVkVSUk9SIChFSU8pKTsKLS0gIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIGgtPnByaXZfZGF0YTsKLSsgIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIHByaXZfZGF0YTsKLSAKLSAgIEdTVF9ERUJVRyAoIlB1bGxpbmcgJWQgYnl0ZXMgYXQgcG9zaXRpb24gJSIgR19HVUlOVDY0X0ZPUk1BVCwgc2l6ZSwKLSAgICAgICBpbmZvLT5vZmZzZXQpOwotQEAgLTEzNCwxNyArODUsMTcgQEAKLSB9Ci0gCi0gc3RhdGljIGludAotLWdzdF9mZm1wZWdkYXRhX3JlYWQgKFVSTENvbnRleHQgKiBoLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQotK2dzdF9mZm1wZWdkYXRhX3JlYWQgKHZvaWQgKnByaXZfZGF0YSwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkKLSB7Ci0gICBnaW50IHJlczsKLSAgIEdzdFByb3RvY29sSW5mbyAqaW5mbzsKLSAKLS0gIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIGgtPnByaXZfZGF0YTsKLSsgIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIHByaXZfZGF0YTsKLSAKLSAgIEdTVF9ERUJVRyAoIlJlYWRpbmcgJWQgYnl0ZXMgb2YgZGF0YSBhdCBwb3NpdGlvbiAlIiBHX0dVSU5UNjRfRk9STUFULCBzaXplLAotICAgICAgIGluZm8tPm9mZnNldCk7Ci0gCi0tICByZXMgPSBnc3RfZmZtcGVnZGF0YV9wZWVrIChoLCBidWYsIHNpemUpOwotKyAgcmVzID0gZ3N0X2ZmbXBlZ2RhdGFfcGVlayAocHJpdl9kYXRhLCBidWYsIHNpemUpOwotICAgaWYgKHJlcyA+PSAwKQotICAgICBpbmZvLT5vZmZzZXQgKz0gcmVzOwotIAotQEAgLTE1NCwxNSArMTA1LDEzIEBACi0gfQotIAotIHN0YXRpYyBpbnQKLS1nc3RfZmZtcGVnZGF0YV93cml0ZSAoVVJMQ29udGV4dCAqIGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IHNpemUpCi0rZ3N0X2ZmbXBlZ2RhdGFfd3JpdGUgKHZvaWQgKnByaXZfZGF0YSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkKLSB7Ci0gICBHc3RQcm90b2NvbEluZm8gKmluZm87Ci0gICBHc3RCdWZmZXIgKm91dGJ1ZjsKLSAKLSAgIEdTVF9ERUJVRyAoIldyaXRpbmcgJWQgYnl0ZXMiLCBzaXplKTsKLS0gIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIGgtPnByaXZfZGF0YTsKLS0KLS0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChoLT5mbGFncyAhPSBVUkxfUkRPTkxZLCAtRUlPKTsKLSsgIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIHByaXZfZGF0YTsKLSAKLSAgIC8qIGNyZWF0ZSBidWZmZXIgYW5kIHB1c2ggZGF0YSBmdXJ0aGVyICovCi0gICBpZiAoZ3N0X3BhZF9hbGxvY19idWZmZXJfYW5kX3NldF9jYXBzIChpbmZvLT5wYWQsCi1AQCAtMTc5LDcgKzEyOCw3IEBACi0gfQotIAotIHN0YXRpYyBpbnQ2NF90Ci0tZ3N0X2ZmbXBlZ2RhdGFfc2VlayAoVVJMQ29udGV4dCAqIGgsIGludDY0X3QgcG9zLCBpbnQgd2hlbmNlKQotK2dzdF9mZm1wZWdkYXRhX3NlZWsgKHZvaWQgKnByaXZfZGF0YSwgaW50NjRfdCBwb3MsIGludCB3aGVuY2UpCi0gewotICAgR3N0UHJvdG9jb2xJbmZvICppbmZvOwotICAgZ3VpbnQ2NCBuZXdwb3MgPSAwOwotQEAgLTE4Nyw3MCArMTM2LDYyIEBACi0gICBHU1RfREVCVUcgKCJTZWVraW5nIHRvICUiIEdfR0lOVDY0X0ZPUk1BVCAiLCB3aGVuY2U9JWQiLAotICAgICAgIChnaW50NjQpIHBvcywgd2hlbmNlKTsKLSAKLS0gIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIGgtPnByaXZfZGF0YTsKLSsgIGluZm8gPSAoR3N0UHJvdG9jb2xJbmZvICopIHByaXZfZGF0YTsKLSAKLSAgIC8qIFRPRE8gOiBpZiB3ZSBhcmUgcHVzaC1iYXNlZCwgd2UgbmVlZCB0byByZXR1cm4gc2Vuc2libGUgaW5mbyAqLwotIAotLSAgc3dpdGNoIChoLT5mbGFncykgewotLSAgICBjYXNlIFVSTF9SRE9OTFk6Ci0tICAgIHsKLS0gICAgICAvKiBzaW5rcGFkICovCi0tICAgICAgc3dpdGNoICh3aGVuY2UpIHsKLS0gICAgICAgIGNhc2UgU0VFS19TRVQ6Ci0tICAgICAgICAgIG5ld3BvcyA9IChndWludDY0KSBwb3M7Ci0tICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBTRUVLX0NVUjoKLS0gICAgICAgICAgbmV3cG9zID0gaW5mby0+b2Zmc2V0ICsgcG9zOwotLSAgICAgICAgICBicmVhazsKLS0gICAgICAgIGNhc2UgU0VFS19FTkQ6Ci0tICAgICAgICBjYXNlIEFWU0VFS19TSVpFOgotLSAgICAgICAgICAvKiBmZm1wZWcgd2FudHMgdG8ga25vdyB0aGUgY3VycmVudCBlbmQgcG9zaXRpb24gaW4gYnl0ZXMgISAqLwotLSAgICAgICAgewotLSAgICAgICAgICBHc3RGb3JtYXQgZm9ybWF0ID0gR1NUX0ZPUk1BVF9CWVRFUzsKLS0gICAgICAgICAgZ2ludDY0IGR1cmF0aW9uOwotLQotLSAgICAgICAgICBHU1RfREVCVUcgKCJTZWVrIGVuZCIpOwotLQotLSAgICAgICAgICBpZiAoZ3N0X3BhZF9pc19saW5rZWQgKGluZm8tPnBhZCkpCi0tICAgICAgICAgICAgaWYgKGdzdF9wYWRfcXVlcnlfZHVyYXRpb24gKEdTVF9QQURfUEVFUiAoaW5mby0+cGFkKSwgJmZvcm1hdCwKLS0gICAgICAgICAgICAgICAgICAgICZkdXJhdGlvbikpCi0tICAgICAgICAgICAgICBuZXdwb3MgPSAoKGd1aW50NjQpIGR1cmF0aW9uKSArIHBvczsKLS0gICAgICAgIH0KLS0gICAgICAgICAgYnJlYWs7Ci0tICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICBnX2Fzc2VydCAoMCk7Ci0tICAgICAgICAgIGJyZWFrOwotKyAgaWYgKEdTVF9QQURfSVNfU0lOSyAoaW5mby0+cGFkKSkgewotKyAgICAvKiBzaW5rcGFkICovCi0rICAgIHN3aXRjaCAod2hlbmNlKSB7Ci0rICAgICAgY2FzZSBTRUVLX1NFVDoKLSsgICAgICAgIG5ld3BvcyA9IChndWludDY0KSBwb3M7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFNFRUtfQ1VSOgotKyAgICAgICAgbmV3cG9zID0gaW5mby0+b2Zmc2V0ICsgcG9zOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgY2FzZSBTRUVLX0VORDoKLSsgICAgICBjYXNlIEFWU0VFS19TSVpFOgotKyAgICAgICAgLyogZmZtcGVnIHdhbnRzIHRvIGtub3cgdGhlIGN1cnJlbnQgZW5kIHBvc2l0aW9uIGluIGJ5dGVzICEgKi8KLSsgICAgICB7Ci0rICAgICAgICBHc3RGb3JtYXQgZm9ybWF0ID0gR1NUX0ZPUk1BVF9CWVRFUzsKLSsgICAgICAgIGdpbnQ2NCBkdXJhdGlvbjsKLSsKLSsgICAgICAgIEdTVF9ERUJVRyAoIlNlZWsgZW5kIik7Ci0rCi0rICAgICAgICBpZiAoZ3N0X3BhZF9pc19saW5rZWQgKGluZm8tPnBhZCkpCi0rICAgICAgICAgIGlmIChnc3RfcGFkX3F1ZXJ5X2R1cmF0aW9uIChHU1RfUEFEX1BFRVIgKGluZm8tPnBhZCksICZmb3JtYXQsCi0rICAgICAgICAgICAgICAgICAgJmR1cmF0aW9uKSkKLSsgICAgICAgICAgICBuZXdwb3MgPSAoKGd1aW50NjQpIGR1cmF0aW9uKSArIHBvczsKLSAgICAgICB9Ci0tICAgICAgLyogRklYTUUgOiBpbXBsZW1lbnQgY2FzZSBmb3IgcHVzaC1iYXNlZCBiZWhhdmlvdXIgKi8KLS0gICAgICBpZiAod2hlbmNlICE9IEFWU0VFS19TSVpFKQotLSAgICAgICAgaW5mby0+b2Zmc2V0ID0gbmV3cG9zOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGdfYXNzZXJ0ICgwKTsKLSsgICAgICAgIGJyZWFrOwotICAgICB9Ci0tICAgICAgYnJlYWs7Ci0tICAgIGNhc2UgVVJMX1dST05MWToKLS0gICAgewotLSAgICAgIC8qIHNyY3BhZCAqLwotLSAgICAgIHN3aXRjaCAod2hlbmNlKSB7Ci0tICAgICAgICBjYXNlIFNFRUtfU0VUOgotLSAgICAgICAgICBpbmZvLT5vZmZzZXQgPSAoZ3VpbnQ2NCkgcG9zOwotLSAgICAgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKGluZm8tPnBhZCwgZ3N0X2V2ZW50X25ld19uZXdfc2VnbWVudAotLSAgICAgICAgICAgICAgKFRSVUUsIDEuMCwgR1NUX0ZPUk1BVF9CWVRFUywgaW5mby0+b2Zmc2V0LAotLSAgICAgICAgICAgICAgICAgIEdTVF9DTE9DS19USU1FX05PTkUsIGluZm8tPm9mZnNldCkpOwotLSAgICAgICAgICBicmVhazsKLS0gICAgICAgIGNhc2UgU0VFS19DVVI6Ci0tICAgICAgICAgIGluZm8tPm9mZnNldCArPSBwb3M7Ci0tICAgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoaW5mby0+cGFkLCBnc3RfZXZlbnRfbmV3X25ld19zZWdtZW50Ci0tICAgICAgICAgICAgICAoVFJVRSwgMS4wLCBHU1RfRk9STUFUX0JZVEVTLCBpbmZvLT5vZmZzZXQsCi0tICAgICAgICAgICAgICAgICAgR1NUX0NMT0NLX1RJTUVfTk9ORSwgaW5mby0+b2Zmc2V0KSk7Ci0tICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgZGVmYXVsdDoKLS0gICAgICAgICAgYnJlYWs7Ci0tICAgICAgfQotLSAgICAgIG5ld3BvcyA9IGluZm8tPm9mZnNldDsKLSsgICAgLyogRklYTUUgOiBpbXBsZW1lbnQgY2FzZSBmb3IgcHVzaC1iYXNlZCBiZWhhdmlvdXIgKi8KLSsgICAgaWYgKHdoZW5jZSAhPSBBVlNFRUtfU0laRSkKLSsgICAgICBpbmZvLT5vZmZzZXQgPSBuZXdwb3M7Ci0rICB9IGVsc2UgaWYgKEdTVF9QQURfSVNfU1JDIChpbmZvLT5wYWQpKSB7Ci0rICAgIC8qIHNyY3BhZCAqLwotKyAgICBzd2l0Y2ggKHdoZW5jZSkgewotKyAgICAgIGNhc2UgU0VFS19TRVQ6Ci0rICAgICAgICBpbmZvLT5vZmZzZXQgPSAoZ3VpbnQ2NCkgcG9zOwotKyAgICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChpbmZvLT5wYWQsIGdzdF9ldmVudF9uZXdfbmV3X3NlZ21lbnQKLSsgICAgICAgICAgICAoVFJVRSwgMS4wLCBHU1RfRk9STUFUX0JZVEVTLCBpbmZvLT5vZmZzZXQsCi0rICAgICAgICAgICAgICAgIEdTVF9DTE9DS19USU1FX05PTkUsIGluZm8tPm9mZnNldCkpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgY2FzZSBTRUVLX0NVUjoKLSsgICAgICAgIGluZm8tPm9mZnNldCArPSBwb3M7Ci0rICAgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKGluZm8tPnBhZCwgZ3N0X2V2ZW50X25ld19uZXdfc2VnbWVudAotKyAgICAgICAgICAgIChUUlVFLCAxLjAsIEdTVF9GT1JNQVRfQllURVMsIGluZm8tPm9mZnNldCwKLSsgICAgICAgICAgICAgICAgR1NUX0NMT0NLX1RJTUVfTk9ORSwgaW5mby0+b2Zmc2V0KSk7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBkZWZhdWx0OgotKyAgICAgICAgYnJlYWs7Ci0gICAgIH0KLS0gICAgICBicmVhazsKLS0gICAgZGVmYXVsdDoKLS0gICAgICBnX2Fzc2VydCAoMCk7Ci0tICAgICAgYnJlYWs7Ci0rICAgIG5ld3BvcyA9IGluZm8tPm9mZnNldDsKLSsgIH0gZWxzZSB7Ci0rICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgfQotIAotICAgR1NUX0RFQlVHICgiTm93IGF0IG9mZnNldCAlIiBHX0dVSU5UNjRfRk9STUFUICIgKHJldHVybmluZyAlIiBHX0dVSU5UNjRfRk9STUFUCi1AQCAtMjU4LDg1ICsxOTksOTEgQEAKLSAgIHJldHVybiBuZXdwb3M7Ci0gfQotIAotLXN0YXRpYyBpbnQKLS1nc3RfZmZtcGVnZGF0YV9jbG9zZSAoVVJMQ29udGV4dCAqIGgpCi0raW50Ci0rZ3N0X2ZmbXBlZ2RhdGFfY2xvc2UgKEFWSU9Db250ZXh0ICogaCkKLSB7Ci0gICBHc3RQcm90b2NvbEluZm8gKmluZm87Ci0gCi0tICBpbmZvID0gKEdzdFByb3RvY29sSW5mbyAqKSBoLT5wcml2X2RhdGE7Ci0rICBpbmZvID0gKEdzdFByb3RvY29sSW5mbyAqKSBoLT5vcGFxdWU7Ci0gICBpZiAoaW5mbyA9PSBOVUxMKQotICAgICByZXR1cm4gMDsKLSAKLSAgIEdTVF9MT0cgKCJDbG9zaW5nIGZpbGUiKTsKLSAKLS0gIHN3aXRjaCAoaC0+ZmxhZ3MpIHsKLS0gICAgY2FzZSBVUkxfV1JPTkxZOgotLSAgICB7Ci0tICAgICAgLyogc2VuZCBFT1MgLSB0aGF0IGNsb3NlcyBkb3duIHRoZSBzdHJlYW0gKi8KLS0gICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKGluZm8tPnBhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOwotLSAgICAgIGJyZWFrOwotLSAgICB9Ci0tICAgIGRlZmF1bHQ6Ci0tICAgICAgYnJlYWs7Ci0rICBpZiAoR1NUX1BBRF9JU19TUkMgKGluZm8tPnBhZCkpIHsKLSsgICAgLyogc2VuZCBFT1MgLSB0aGF0IGNsb3NlcyBkb3duIHRoZSBzdHJlYW0gKi8KLSsgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChpbmZvLT5wYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKLSAgIH0KLSAKLSAgIC8qIGNsZWFuIHVwIGRhdGEgKi8KLSAgIGdfZnJlZSAoaW5mbyk7Ci0tICBoLT5wcml2X2RhdGEgPSBOVUxMOwotKyAgaC0+b3BhcXVlID0gTlVMTDsKLSsKLSsgIGF2X2ZyZWVwICgmaC0+YnVmZmVyKTsKLSsgIGF2X2ZyZWUgKGgpOwotIAotICAgcmV0dXJuIDA7Ci0gfQotIAotK2ludAotK2dzdF9mZm1wZWdkYXRhX29wZW4gKEdzdFBhZCAqIHBhZCwgaW50IGZsYWdzLCBBVklPQ29udGV4dCAqKiBjb250ZXh0KQotK3sKLSsgIEdzdFByb3RvY29sSW5mbyAqaW5mbzsKLSsgIHN0YXRpYyBjb25zdCBpbnQgYnVmZmVyX3NpemUgPSA0MDk2OwotKyAgdW5zaWduZWQgY2hhciAqYnVmZmVyID0gTlVMTDsKLSAKLS1VUkxQcm90b2NvbCBnc3RyZWFtZXJfcHJvdG9jb2wgPSB7Ci0tICAvKi5uYW1lID0gKi8gImdzdHJlYW1lciIsCi0tICAvKi51cmxfb3BlbiA9ICovIGdzdF9mZm1wZWdkYXRhX29wZW4sCi0tICAvKi51cmxfcmVhZCA9ICovIGdzdF9mZm1wZWdkYXRhX3JlYWQsCi0tICAvKi51cmxfd3JpdGUgPSAqLyBnc3RfZmZtcGVnZGF0YV93cml0ZSwKLS0gIC8qLnVybF9zZWVrID0gKi8gZ3N0X2ZmbXBlZ2RhdGFfc2VlaywKLS0gIC8qLnVybF9jbG9zZSA9ICovIGdzdF9mZm1wZWdkYXRhX2Nsb3NlLAotLX07Ci0rICBpbmZvID0gZ19uZXcwIChHc3RQcm90b2NvbEluZm8sIDEpOwotIAotKyAgaW5mby0+c2V0X3N0cmVhbWhlYWRlciA9IGZsYWdzICYgR1NUX0ZGTVBFR19VUkxfU1RSRUFNSEVBREVSOwotKyAgZmxhZ3MgJj0gfkdTVF9GRk1QRUdfVVJMX1NUUkVBTUhFQURFUjsKLSAKLS0vKiBzcGVjaWFsaXplZCBwcm90b2NvbCBmb3IgY3Jvc3MtdGhyZWFkIHB1c2hpbmcsCi0tICogYmFzZWQgb24gZmZtcGVnJ3MgcGlwZSBwcm90b2NvbCAqLwotKyAgLyogd2UgZG9uJ3Qgc3VwcG9ydCBSL1cgdG9nZXRoZXIgKi8KLSsgIGlmICgoZmxhZ3MgJiBBVklPX0ZMQUdfV1JJVEUpICYmIChmbGFncyAmIEFWSU9fRkxBR19SRUFEKSkgewotKyAgICBHU1RfV0FSTklORyAoIk9ubHkgcmVhZC1vbmx5IG9yIHdyaXRlLW9ubHkgYXJlIHN1cHBvcnRlZCIpOwotKyAgICByZXR1cm4gLUVJTlZBTDsKLSsgIH0KLSAKLS1zdGF0aWMgaW50Ci0tZ3N0X2ZmbXBlZ19waXBlX29wZW4gKFVSTENvbnRleHQgKiBoLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzKQotLXsKLS0gIEdzdEZGTXBlZ1BpcGUgKmZmcGlwZTsKLSsgIC8qIG1ha2Ugc3VyZSB3ZSdyZSBhIHBhZCBhbmQgdGhhdCB3ZSdyZSBvZiB0aGUgcmlnaHQgdHlwZSAqLwotKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QQUQgKHBhZCksIC1FSU5WQUwpOwotIAotLSAgR1NUX0xPRyAoIk9wZW5pbmcgJXMiLCBmaWxlbmFtZSk7Ci0rICBpZiAoKGZsYWdzICYgQVZJT19GTEFHX1JFQUQpKQotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX1BBRF9JU19TSU5LIChwYWQpLCAtRUlOVkFMKTsKLSsgIGlmICgoZmxhZ3MgJiBBVklPX0ZMQUdfV1JJVEUpKQotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX1BBRF9JU19TUkMgKHBhZCksIC1FSU5WQUwpOwotIAotLSAgLyogd2UgZG9uJ3Qgc3VwcG9ydCBXIHRvZ2V0aGVyICovCi0tICBpZiAoZmxhZ3MgIT0gVVJMX1JET05MWSkgewotLSAgICBHU1RfV0FSTklORyAoIk9ubHkgcmVhZC1vbmx5IGlzIHN1cHBvcnRlZCIpOwotLSAgICByZXR1cm4gLUVJTlZBTDsKLS0gIH0KLSsgIGluZm8tPmVvcyA9IEZBTFNFOwotKyAgaW5mby0+cGFkID0gcGFkOwotKyAgaW5mby0+b2Zmc2V0ID0gMDsKLSAKLS0gIGlmIChzc2NhbmYgKCZmaWxlbmFtZVsxMF0sICIlcCIsICZmZnBpcGUpICE9IDEpIHsKLS0gICAgR1NUX1dBUk5JTkcgKCJjb3VsZCBub3QgZGVjb2RlIHBpcGUgaW5mbyBmcm9tICVzIiwgZmlsZW5hbWUpOwotLSAgICByZXR1cm4gLUVJTzsKLSsgIGJ1ZmZlciA9IGF2X21hbGxvYyAoYnVmZmVyX3NpemUpOwotKyAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7Ci0rICAgIEdTVF9XQVJOSU5HICgiRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlciIpOwotKyAgICByZXR1cm4gLUVOT01FTTsKLSAgIH0KLSAKLS0gIC8qIHNhbml0eSBjaGVjayAqLwotLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19BREFQVEVSIChmZnBpcGUtPmFkYXB0ZXIpLCAtRUlOVkFMKTsKLS0KLS0gIGgtPnByaXZfZGF0YSA9ICh2b2lkICopIGZmcGlwZTsKLS0gIGgtPmlzX3N0cmVhbWVkID0gVFJVRTsKLS0gIGgtPm1heF9wYWNrZXRfc2l6ZSA9IDA7Ci0rICAqY29udGV4dCA9Ci0rICAgICAgYXZpb19hbGxvY19jb250ZXh0IChidWZmZXIsIGJ1ZmZlcl9zaXplLCBmbGFncywgKHZvaWQgKikgaW5mbywKLSsgICAgICBnc3RfZmZtcGVnZGF0YV9yZWFkLCBnc3RfZmZtcGVnZGF0YV93cml0ZSwgZ3N0X2ZmbXBlZ2RhdGFfc2Vlayk7Ci0rICAoKmNvbnRleHQpLT5zZWVrYWJsZSA9IEFWSU9fU0VFS0FCTEVfTk9STUFMOwotKyAgaWYgKCEoZmxhZ3MgJiBBVklPX0ZMQUdfV1JJVEUpKSB7Ci0rICAgICgqY29udGV4dCktPmJ1Zl9wdHIgPSAoKmNvbnRleHQpLT5idWZfZW5kOwotKyAgICAoKmNvbnRleHQpLT53cml0ZV9mbGFnID0gMDsKLSsgIH0KLSAKLSAgIHJldHVybiAwOwotIH0KLSAKLSsvKiBzcGVjaWFsaXplZCBwcm90b2NvbCBmb3IgY3Jvc3MtdGhyZWFkIHB1c2hpbmcsCi0rICogYmFzZWQgb24gZmZtcGVnJ3MgcGlwZSBwcm90b2NvbCAqLwotKwotIHN0YXRpYyBpbnQKLS1nc3RfZmZtcGVnX3BpcGVfcmVhZCAoVVJMQ29udGV4dCAqIGgsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IHNpemUpCi0rZ3N0X2ZmbXBlZ19waXBlX3JlYWQgKHZvaWQgKnByaXZfZGF0YSwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgc2l6ZSkKLSB7Ci0gICBHc3RGRk1wZWdQaXBlICpmZnBpcGU7Ci0gICBjb25zdCBndWludDggKmRhdGE7Ci0gICBndWludCBhdmFpbGFibGU7Ci0gCi0tICBmZnBpcGUgPSAoR3N0RkZNcGVnUGlwZSAqKSBoLT5wcml2X2RhdGE7Ci0rICBmZnBpcGUgPSAoR3N0RkZNcGVnUGlwZSAqKSBwcml2X2RhdGE7Ci0gCi0gICBHU1RfTE9HICgicmVxdWVzdGVkIHNpemUgJWQiLCBzaXplKTsKLSAKLUBAIC0zNjcsMjEgKzMxNCwzOCBAQAotICAgcmV0dXJuIHNpemU7Ci0gfQotIAotLXN0YXRpYyBpbnQKLS1nc3RfZmZtcGVnX3BpcGVfY2xvc2UgKFVSTENvbnRleHQgKiBoKQotK2ludAotK2dzdF9mZm1wZWdfcGlwZV9jbG9zZSAoQVZJT0NvbnRleHQgKiBoKQotIHsKLSAgIEdTVF9MT0cgKCJDbG9zaW5nIHBpcGUiKTsKLSAKLS0gIGgtPnByaXZfZGF0YSA9IE5VTEw7Ci0rICBoLT5vcGFxdWUgPSBOVUxMOwotKyAgYXZfZnJlZXAgKCZoLT5idWZmZXIpOwotKyAgYXZfZnJlZSAoaCk7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tVVJMUHJvdG9jb2wgZ3N0cGlwZV9wcm90b2NvbCA9IHsKLS0gICJnc3RwaXBlIiwKLS0gIGdzdF9mZm1wZWdfcGlwZV9vcGVuLAotLSAgZ3N0X2ZmbXBlZ19waXBlX3JlYWQsCi0tICBOVUxMLAotLSAgTlVMTCwKLS0gIGdzdF9mZm1wZWdfcGlwZV9jbG9zZSwKLS19OwotK2ludAotK2dzdF9mZm1wZWdfcGlwZV9vcGVuIChHc3RGRk1wZWdQaXBlICogZmZwaXBlLCBpbnQgZmxhZ3MsIEFWSU9Db250ZXh0ICoqIGNvbnRleHQpCi0rewotKyAgc3RhdGljIGNvbnN0IGludCBidWZmZXJfc2l6ZSA9IDQwOTY7Ci0rICB1bnNpZ25lZCBjaGFyICpidWZmZXIgPSBOVUxMOwotKwotKyAgLyogc2FuaXR5IGNoZWNrICovCi0rICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0FEQVBURVIgKGZmcGlwZS0+YWRhcHRlciksIC1FSU5WQUwpOwotKwotKyAgYnVmZmVyID0gYXZfbWFsbG9jIChidWZmZXJfc2l6ZSk7Ci0rICBpZiAoYnVmZmVyID09IE5VTEwpIHsKLSsgICAgR1NUX1dBUk5JTkcgKCJGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyIik7Ci0rICAgIHJldHVybiAtRU5PTUVNOwotKyAgfQotKwotKyAgKmNvbnRleHQgPQotKyAgICAgIGF2aW9fYWxsb2NfY29udGV4dCAoYnVmZmVyLCBidWZmZXJfc2l6ZSwgMCwgKHZvaWQgKikgZmZwaXBlLAotKyAgICAgIGdzdF9mZm1wZWdfcGlwZV9yZWFkLCBOVUxMLCBOVUxMKTsKLSsgICgqY29udGV4dCktPnNlZWthYmxlID0gMDsKLSsgICgqY29udGV4dCktPmJ1Zl9wdHIgPSAoKmNvbnRleHQpLT5idWZfZW5kOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuYyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5jCi0tLS0gZ3N0LWZmbXBlZy0wLjEwLjEzLm9yaWcvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5jCTIwMTEtMDctMTMgMTE6MDc6MjguMDAwMDAwMDAwICswMjAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuYwkyMDE0LTA4LTA4IDE1OjM0OjA0LjAwNzg3NDYyNiArMDIwMAotQEAgLTI1LDYgKzI1LDExIEBACi0gI2lmZGVmIF9fQVBQTEVfXwotICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0gI2VuZGlmCi0rI2lmZGVmIEhBVkVfRkZNUEVHX1VOSU5TVEFMTEVECi0rI2luY2x1ZGUgPGF2Zm9ybWF0Lmg+Ci0rI2Vsc2UKLSsjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KLSsjZW5kaWYKLSAKLSBHX0NPTlNUX1JFVFVSTiBnY2hhciAqCi0gZ3N0X2ZmbXBlZ19nZXRfY29kZWNpZF9sb25nbmFtZSAoZW51bSBDb2RlY0lEIGNvZGVjX2lkKQotQEAgLTM5LDIxICs0NCwyMSBAQAotIH0KLSAKLSBnaW50Ci0tYXZfc21wX2Zvcm1hdF9kZXB0aCAoZW51bSBTYW1wbGVGb3JtYXQgc21wX2ZtdCkKLSthdl9zbXBfZm9ybWF0X2RlcHRoIChlbnVtIEFWU2FtcGxlRm9ybWF0IHNtcF9mbXQpCi0gewotICAgZ2ludCBkZXB0aCA9IC0xOwotICAgc3dpdGNoIChzbXBfZm10KSB7Ci0tICAgIGNhc2UgU0FNUExFX0ZNVF9VODoKLSsgICAgY2FzZSBBVl9TQU1QTEVfRk1UX1U4OgotICAgICAgIGRlcHRoID0gMTsKLSAgICAgICBicmVhazsKLS0gICAgY2FzZSBTQU1QTEVfRk1UX1MxNjoKLSsgICAgY2FzZSBBVl9TQU1QTEVfRk1UX1MxNjoKLSAgICAgICBkZXB0aCA9IDI7Ci0gICAgICAgYnJlYWs7Ci0tICAgIGNhc2UgU0FNUExFX0ZNVF9TMzI6Ci0tICAgIGNhc2UgU0FNUExFX0ZNVF9GTFQ6Ci0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9TMzI6Ci0rICAgIGNhc2UgQVZfU0FNUExFX0ZNVF9GTFQ6Ci0gICAgICAgZGVwdGggPSA0OwotICAgICAgIGJyZWFrOwotLSAgICBjYXNlIFNBTVBMRV9GTVRfREJMOgotKyAgICBjYXNlIEFWX1NBTVBMRV9GTVRfREJMOgotICAgICAgIGRlcHRoID0gODsKLSAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmMub3JpZyBnc3QtZmZtcGVnLTAuMTAuMTMvZXh0L2ZmbXBlZy9nc3RmZm1wZWd1dGlscy5jLm9yaWcKLS0tLSBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmMub3JpZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmMub3JpZwkyMDExLTA3LTEzIDExOjA3OjI4LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw0ODMgQEAKLSsvKiBHU3RyZWFtZXIKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDkgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSsjaW5jbHVkZSAiZ3N0ZmZtcGVndXRpbHMuaCIKLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2lmZGVmIF9fQVBQTEVfXwotKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0rI2VuZGlmCi0rCi0rR19DT05TVF9SRVRVUk4gZ2NoYXIgKgotK2dzdF9mZm1wZWdfZ2V0X2NvZGVjaWRfbG9uZ25hbWUgKGVudW0gQ29kZWNJRCBjb2RlY19pZCkKLSt7Ci0rICBBVkNvZGVjICpjb2RlYzsKLSsgIC8qIExldCdzIHVzZSB3aGF0IGZmbXBlZyBjYW4gcHJvdmlkZSB1cyAqLwotKwotKyAgaWYgKChjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyIChjb2RlY19pZCkpIHx8Ci0rICAgICAgKGNvZGVjID0gYXZjb2RlY19maW5kX2VuY29kZXIgKGNvZGVjX2lkKSkpCi0rICAgIHJldHVybiBjb2RlYy0+bG9uZ19uYW1lOwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK2dpbnQKLSthdl9zbXBfZm9ybWF0X2RlcHRoIChlbnVtIFNhbXBsZUZvcm1hdCBzbXBfZm10KQotK3sKLSsgIGdpbnQgZGVwdGggPSAtMTsKLSsgIHN3aXRjaCAoc21wX2ZtdCkgewotKyAgICBjYXNlIFNBTVBMRV9GTVRfVTg6Ci0rICAgICAgZGVwdGggPSAxOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFNBTVBMRV9GTVRfUzE2OgotKyAgICAgIGRlcHRoID0gMjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBTQU1QTEVfRk1UX1MzMjoKLSsgICAgY2FzZSBTQU1QTEVfRk1UX0ZMVDoKLSsgICAgICBkZXB0aCA9IDQ7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgU0FNUExFX0ZNVF9EQkw6Ci0rICAgICAgZGVwdGggPSA4OwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIEdTVF9FUlJPUiAoIlVOSEFORExFRCBTQU1QTEUgRk9STUFUICEiKTsKLSsgICAgICBicmVhazsKLSsgIH0KLSsgIHJldHVybiBkZXB0aDsKLSt9Ci0rCi0rCi0rLyoKLSsgKiBGaWxsIGluIHBvaW50ZXJzIHRvIG1lbW9yeSBpbiBhIEFWUGljdHVyZSwgd2hlcmUKLSsgKiBldmVyeXRoaW5nIGlzIGFsaWduZWQgYnkgNCAoYXMgcmVxdWlyZWQgYnkgWCkuCi0rICogVGhpcyBpcyBtb3N0bHkgYSBjb3B5IGZyb20gaW1nY29udmVydC5jIHdpdGggc29tZQotKyAqIHNtYWxsIGNoYW5nZXMuCi0rICovCi0rCi0rI2RlZmluZSBGRl9DT0xPUl9SR0IgICAgICAwICAgICAvKiBSR0IgY29sb3Igc3BhY2UgKi8KLSsjZGVmaW5lIEZGX0NPTE9SX0dSQVkgICAgIDEgICAgIC8qIGdyYXkgY29sb3Igc3BhY2UgKi8KLSsjZGVmaW5lIEZGX0NPTE9SX1lVViAgICAgIDIgICAgIC8qIFlVViBjb2xvciBzcGFjZS4gMTYgPD0gWSA8PSAyMzUsIDE2IDw9IFUsIFYgPD0gMjQwICovCi0rI2RlZmluZSBGRl9DT0xPUl9ZVVZfSlBFRyAzICAgICAvKiBZVVYgY29sb3Igc3BhY2UuIDAgPD0gWSA8PSAyNTUsIDAgPD0gVSwgViA8PSAyNTUgKi8KLSsKLSsjZGVmaW5lIEZGX1BJWEVMX1BMQU5BUiAgIDAgICAgIC8qIGVhY2ggY2hhbm5lbCBoYXMgb25lIGNvbXBvbmVudCBpbiBBVlBpY3R1cmUgKi8KLSsjZGVmaW5lIEZGX1BJWEVMX1BBQ0tFRCAgIDEgICAgIC8qIG9ubHkgb25lIGNvbXBvbmVudHMgY29udGFpbmluZyBhbGwgdGhlIGNoYW5uZWxzICovCi0rI2RlZmluZSBGRl9QSVhFTF9QQUxFVFRFICAyICAgICAvKiBvbmUgY29tcG9uZW50cyBjb250YWluaW5nIGluZGV4ZXMgZm9yIGEgcGFsZXR0ZSAqLwotKwotK3R5cGVkZWYgc3RydWN0IFBpeEZtdEluZm8KLSt7Ci0rICBjb25zdCBjaGFyICpuYW1lOwotKyAgdWludDhfdCBuYl9jaGFubmVsczsgICAgICAgICAgLyogbnVtYmVyIG9mIGNoYW5uZWxzIChpbmNsdWRpbmcgYWxwaGEpICovCi0rICB1aW50OF90IGNvbG9yX3R5cGU7ICAgICAgICAgICAvKiBjb2xvciB0eXBlIChzZWUgRkZfQ09MT1JfeHh4IGNvbnN0YW50cykgKi8KLSsgIHVpbnQ4X3QgcGl4ZWxfdHlwZTsgICAgICAgICAgIC8qIHBpeGVsIHN0b3JhZ2UgdHlwZSAoc2VlIEZGX1BJWEVMX3h4eCBjb25zdGFudHMpICovCi0rICB1aW50OF90IGlzX2FscGhhOjE7ICAgICAgICAgICAvKiB0cnVlIGlmIGFscGhhIGNhbiBiZSBzcGVjaWZpZWQgKi8KLSsgIHVpbnQ4X3QgeF9jaHJvbWFfc2hpZnQ7ICAgICAgIC8qIFggY2hyb21hIHN1YnNhbXBsaW5nIGZhY3RvciBpcyAyIF4gc2hpZnQgKi8KLSsgIHVpbnQ4X3QgeV9jaHJvbWFfc2hpZnQ7ICAgICAgIC8qIFkgY2hyb21hIHN1YnNhbXBsaW5nIGZhY3RvciBpcyAyIF4gc2hpZnQgKi8KLSsgIHVpbnQ4X3QgZGVwdGg7ICAgICAgICAgICAgICAgIC8qIGJpdCBkZXB0aCBvZiB0aGUgY29sb3IgY29tcG9uZW50cyAqLwotK30gUGl4Rm10SW5mbzsKLSsKLSsKLSsvKiB0aGlzIHRhYmxlIGdpdmVzIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZm9ybWF0cyAqLwotK3N0YXRpYyBQaXhGbXRJbmZvIHBpeF9mbXRfaW5mb1tQSVhfRk1UX05CXTsKLSt2b2lkCi0rZ3N0X2ZmbXBlZ19pbml0X3BpeF9mbXRfaW5mbyAodm9pZCkKLSt7Ci0rICAvKiBZVVYgZm9ybWF0cyAqLwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIwUF0ubmFtZSA9IGdfc3RyZHVwICgieXV2NDIwcCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIwUF0ubmJfY2hhbm5lbHMgPSAzOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIwUF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQyMFBdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjBQXS5kZXB0aCA9IDgsCi0rICAgICAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIwUF0ueF9jaHJvbWFfc2hpZnQgPSAxLAotKyAgICAgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQyMFBdLnlfY2hyb21hX3NoaWZ0ID0gMTsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQyMlBdLm5hbWUgPSBnX3N0cmR1cCAoInl1djQyMnAiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQyMlBdLm5iX2NoYW5uZWxzID0gMzsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQyMlBdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9ZVVY7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MjJQXS5waXhlbF90eXBlID0gRkZfUElYRUxfUExBTkFSOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIyUF0uZGVwdGggPSA4OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIyUF0ueF9jaHJvbWFfc2hpZnQgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDIyUF0ueV9jaHJvbWFfc2hpZnQgPSAwOwotKwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDQ0UF0ubmFtZSA9IGdfc3RyZHVwICgieXV2NDQ0cCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDQ0UF0ubmJfY2hhbm5lbHMgPSAzOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDQ0UF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQ0NFBdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0NDRQXS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0NDRQXS54X2Nocm9tYV9zaGlmdCA9IDA7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0NDRQXS55X2Nocm9tYV9zaGlmdCA9IDA7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVlWNDIyXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXY0MjIiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVWVY0MjJdLm5iX2NoYW5uZWxzID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVWVY0MjJdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9ZVVY7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVlWNDIyXS5waXhlbF90eXBlID0gRkZfUElYRUxfUEFDS0VEOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVZVjQyMl0uZGVwdGggPSA4OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVZVjQyMl0ueF9jaHJvbWFfc2hpZnQgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVZVjQyMl0ueV9jaHJvbWFfc2hpZnQgPSAwOwotKwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDEwUF0ubmFtZSA9IGdfc3RyZHVwICgieXV2NDEwcCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDEwUF0ubmJfY2hhbm5lbHMgPSAzOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDEwUF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMFBdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTBQXS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTBQXS54X2Nocm9tYV9zaGlmdCA9IDI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTBQXS55X2Nocm9tYV9zaGlmdCA9IDI7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTFQXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXY0MTFwIik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTFQXS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVY0MTFQXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfWVVWOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWNDExUF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BMQU5BUjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMVBdLmRlcHRoID0gODsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMVBdLnhfY2hyb21hX3NoaWZ0ID0gMjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVjQxMVBdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIC8qIEpQRUcgWVVWICovCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIwUF0ubmFtZSA9IGdfc3RyZHVwICgieXV2ajQyMHAiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjBQXS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIwUF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVl9KUEVHOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQyMFBdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIwUF0uZGVwdGggPSA4OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQyMFBdLnhfY2hyb21hX3NoaWZ0ID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjBQXS55X2Nocm9tYV9zaGlmdCA9IDE7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIyUF0ubmFtZSA9IGdfc3RyZHVwICgieXV2ajQyMnAiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjJQXS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIyUF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVl9KUEVHOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQyMlBdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDIyUF0uZGVwdGggPSA4OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQyMlBdLnhfY2hyb21hX3NoaWZ0ID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0MjJQXS55X2Nocm9tYV9zaGlmdCA9IDA7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDQ0UF0ubmFtZSA9IGdfc3RyZHVwICgieXV2ajQ0NHAiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0NDRQXS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDQ0UF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVl9KUEVHOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQ0NFBdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZKNDQ0UF0uZGVwdGggPSA4OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWSjQ0NFBdLnhfY2hyb21hX3NoaWZ0ID0gMDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVko0NDRQXS55X2Nocm9tYV9zaGlmdCA9IDA7Ci0rCi0rICAvKiBSR0IgZm9ybWF0cyAqLwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMjRdLm5hbWUgPSBnX3N0cmR1cCAoInJnYjI0Iik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IyNF0ubmJfY2hhbm5lbHMgPSAzOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMjRdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9SR0I7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IyNF0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BBQ0tFRDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjI0XS5kZXB0aCA9IDg7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IyNF0ueF9jaHJvbWFfc2hpZnQgPSAwOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMjRdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX0JHUjI0XS5uYW1lID0gZ19zdHJkdXAgKCJiZ3IyNCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfQkdSMjRdLm5iX2NoYW5uZWxzID0gMzsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX0JHUjI0XS5jb2xvcl90eXBlID0gRkZfQ09MT1JfUkdCOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfQkdSMjRdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QQUNLRUQ7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9CR1IyNF0uZGVwdGggPSA4OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfQkdSMjRdLnhfY2hyb21hX3NoaWZ0ID0gMDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX0JHUjI0XS55X2Nocm9tYV9zaGlmdCA9IDA7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IzMl0ubmFtZSA9IGdfc3RyZHVwICgicmdiYTMyIik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IzMl0ubmJfY2hhbm5lbHMgPSA0OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMzJdLmlzX2FscGhhID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjMyXS5jb2xvcl90eXBlID0gRkZfQ09MT1JfUkdCOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMzJdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QQUNLRUQ7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0IzMl0uZGVwdGggPSA4OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCMzJdLnhfY2hyb21hX3NoaWZ0ID0gMDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjMyXS55X2Nocm9tYV9zaGlmdCA9IDA7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NjVdLm5hbWUgPSBnX3N0cmR1cCAoInJnYjU2NSIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCNTY1XS5uYl9jaGFubmVscyA9IDM7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NjVdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9SR0I7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NjVdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QQUNLRUQ7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NjVdLmRlcHRoID0gNTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU2NV0ueF9jaHJvbWFfc2hpZnQgPSAwOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCNTY1XS55X2Nocm9tYV9zaGlmdCA9IDA7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NTVdLm5hbWUgPSBnX3N0cmR1cCAoInJnYjU1NSIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCNTU1XS5uYl9jaGFubmVscyA9IDQ7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NTVdLmlzX2FscGhhID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU1NV0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1JHQjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU1NV0ucGl4ZWxfdHlwZSA9IEZGX1BJWEVMX1BBQ0tFRDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1JHQjU1NV0uZGVwdGggPSA1OwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfUkdCNTU1XS54X2Nocm9tYV9zaGlmdCA9IDA7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9SR0I1NTVdLnlfY2hyb21hX3NoaWZ0ID0gMDsKLSsKLSsgIC8qIGdyYXkgLyBtb25vIGZvcm1hdHMgKi8KLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX0dSQVk4XS5uYW1lID0gZ19zdHJkdXAgKCJncmF5Iik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9HUkFZOF0ubmJfY2hhbm5lbHMgPSAxOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfR1JBWThdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9HUkFZOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfR1JBWThdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9HUkFZOF0uZGVwdGggPSA4OwotKwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfTU9OT1dISVRFXS5uYW1lID0gZ19zdHJkdXAgKCJtb25vdyIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfTU9OT1dISVRFXS5uYl9jaGFubmVscyA9IDE7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PV0hJVEVdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9HUkFZOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfTU9OT1dISVRFXS5waXhlbF90eXBlID0gRkZfUElYRUxfUExBTkFSOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfTU9OT1dISVRFXS5kZXB0aCA9IDE7Ci0rCi0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PQkxBQ0tdLm5hbWUgPSBnX3N0cmR1cCAoIm1vbm9iIik7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PQkxBQ0tdLm5iX2NoYW5uZWxzID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX01PTk9CTEFDS10uY29sb3JfdHlwZSA9IEZGX0NPTE9SX0dSQVk7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PQkxBQ0tdLnBpeGVsX3R5cGUgPSBGRl9QSVhFTF9QTEFOQVI7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9NT05PQkxBQ0tdLmRlcHRoID0gMTsKLSsKLSsgIC8qIHBhbGV0dGVkIGZvcm1hdHMgKi8KLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1BBTDhdLm5hbWUgPSBnX3N0cmR1cCAoInBhbDgiKTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1BBTDhdLm5iX2NoYW5uZWxzID0gNDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1BBTDhdLmlzX2FscGhhID0gMTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1BBTDhdLmNvbG9yX3R5cGUgPSBGRl9DT0xPUl9SR0I7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9QQUw4XS5waXhlbF90eXBlID0gRkZfUElYRUxfUEFMRVRURTsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1BBTDhdLmRlcHRoID0gODsKLSsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVkE0MjBQXS5uYW1lID0gZ19zdHJkdXAgKCJ5dXZhNDIwcCIpOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWQTQyMFBdLm5iX2NoYW5uZWxzID0gNDsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVkE0MjBQXS5pc19hbHBoYSA9IDE7Ci0rICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZBNDIwUF0uY29sb3JfdHlwZSA9IEZGX0NPTE9SX1lVVjsKLSsgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVkE0MjBQXS5waXhlbF90eXBlID0gRkZfUElYRUxfUExBTkFSOwotKyAgcGl4X2ZtdF9pbmZvW1BJWF9GTVRfWVVWQTQyMFBdLmRlcHRoID0gOCwKLSsgICAgICBwaXhfZm10X2luZm9bUElYX0ZNVF9ZVVZBNDIwUF0ueF9jaHJvbWFfc2hpZnQgPSAxLAotKyAgICAgIHBpeF9mbXRfaW5mb1tQSVhfRk1UX1lVVkE0MjBQXS55X2Nocm9tYV9zaGlmdCA9IDE7Ci0rfTsKLSsKLStpbnQKLStnc3RfZmZtcGVnX2F2cGljdHVyZV9nZXRfc2l6ZSAoaW50IHBpeF9mbXQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLSt7Ci0rICBBVlBpY3R1cmUgZHVtbXlfcGljdDsKLSsKLSsgIHJldHVybiBnc3RfZmZtcGVnX2F2cGljdHVyZV9maWxsICgmZHVtbXlfcGljdCwgTlVMTCwgcGl4X2ZtdCwgd2lkdGgsIGhlaWdodCk7Ci0rfQotKwotKyNkZWZpbmUgR0VOX01BU0soeCkgKCgxPDwoeCkpLTEpCi0rI2RlZmluZSBST1VORF9VUF9YKHYseCkgKCgodikgKyBHRU5fTUFTSyh4KSkgJiB+R0VOX01BU0soeCkpCi0rI2RlZmluZSBST1VORF9VUF8yKHgpIFJPVU5EX1VQX1ggKHgsIDEpCi0rI2RlZmluZSBST1VORF9VUF80KHgpIFJPVU5EX1VQX1ggKHgsIDIpCi0rI2RlZmluZSBST1VORF9VUF84KHgpIFJPVU5EX1VQX1ggKHgsIDMpCi0rI2RlZmluZSBESVZfUk9VTkRfVVBfWCh2LHgpICgoKHYpICsgR0VOX01BU0soeCkpID4+ICh4KSkKLSsKLStpbnQKLStnc3RfZmZtcGVnX2F2cGljdHVyZV9maWxsIChBVlBpY3R1cmUgKiBwaWN0dXJlLAotKyAgICB1aW50OF90ICogcHRyLCBlbnVtIFBpeGVsRm9ybWF0IHBpeF9mbXQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKLSt7Ci0rICBpbnQgc2l6ZSwgdzIsIGgyLCBzaXplMjsKLSsgIGludCBzdHJpZGUsIHN0cmlkZTI7Ci0rICBQaXhGbXRJbmZvICpwaW5mbzsKLSsKLSsgIHBpbmZvID0gJnBpeF9mbXRfaW5mb1twaXhfZm10XTsKLSsKLSsgIHN3aXRjaCAocGl4X2ZtdCkgewotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDIwUDoKLSsgICAgY2FzZSBQSVhfRk1UX1lVVjQyMlA6Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVY0NDRQOgotKyAgICBjYXNlIFBJWF9GTVRfWVVWNDEwUDoKLSsgICAgY2FzZSBQSVhfRk1UX1lVVjQxMVA6Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVZKNDIwUDoKLSsgICAgY2FzZSBQSVhfRk1UX1lVVko0MjJQOgotKyAgICBjYXNlIFBJWF9GTVRfWVVWSjQ0NFA6Ci0rICAgICAgc3RyaWRlID0gUk9VTkRfVVBfNCAod2lkdGgpOwotKyAgICAgIGgyID0gUk9VTkRfVVBfWCAoaGVpZ2h0LCBwaW5mby0+eV9jaHJvbWFfc2hpZnQpOwotKyAgICAgIHNpemUgPSBzdHJpZGUgKiBoMjsKLSsgICAgICB3MiA9IERJVl9ST1VORF9VUF9YICh3aWR0aCwgcGluZm8tPnhfY2hyb21hX3NoaWZ0KTsKLSsgICAgICBzdHJpZGUyID0gUk9VTkRfVVBfNCAodzIpOwotKyAgICAgIGgyID0gRElWX1JPVU5EX1VQX1ggKGhlaWdodCwgcGluZm8tPnlfY2hyb21hX3NoaWZ0KTsKLSsgICAgICBzaXplMiA9IHN0cmlkZTIgKiBoMjsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMV0gPSBwaWN0dXJlLT5kYXRhWzBdICsgc2l6ZTsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzJdID0gcGljdHVyZS0+ZGF0YVsxXSArIHNpemUyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbM10gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gc3RyaWRlOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzFdID0gc3RyaWRlMjsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsyXSA9IHN0cmlkZTI7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbM10gPSAwOwotKyAgICAgIEdTVF9ERUJVRyAoInBsYW5lcyAlZCAlZCAlZCIsIDAsIHNpemUsIHNpemUgKyBzaXplMik7Ci0rICAgICAgR1NUX0RFQlVHICgic3RyaWRlcyAlZCAlZCAlZCIsIHN0cmlkZSwgc3RyaWRlMiwgc3RyaWRlMik7Ci0rICAgICAgcmV0dXJuIHNpemUgKyAyICogc2l6ZTI7Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVZBNDIwUDoKLSsgICAgICBzdHJpZGUgPSBST1VORF9VUF80ICh3aWR0aCk7Ci0rICAgICAgaDIgPSBST1VORF9VUF9YIChoZWlnaHQsIHBpbmZvLT55X2Nocm9tYV9zaGlmdCk7Ci0rICAgICAgc2l6ZSA9IHN0cmlkZSAqIGgyOwotKyAgICAgIHcyID0gRElWX1JPVU5EX1VQX1ggKHdpZHRoLCBwaW5mby0+eF9jaHJvbWFfc2hpZnQpOwotKyAgICAgIHN0cmlkZTIgPSBST1VORF9VUF80ICh3Mik7Ci0rICAgICAgaDIgPSBESVZfUk9VTkRfVVBfWCAoaGVpZ2h0LCBwaW5mby0+eV9jaHJvbWFfc2hpZnQpOwotKyAgICAgIHNpemUyID0gc3RyaWRlMiAqIGgyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMF0gPSBwdHI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IHBpY3R1cmUtPmRhdGFbMF0gKyBzaXplOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMl0gPSBwaWN0dXJlLT5kYXRhWzFdICsgc2l6ZTI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVszXSA9IHBpY3R1cmUtPmRhdGFbMl0gKyBzaXplMjsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVswXSA9IHN0cmlkZTsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsxXSA9IHN0cmlkZTI7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMl0gPSBzdHJpZGUyOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzNdID0gc3RyaWRlOwotKyAgICAgIEdTVF9ERUJVRyAoInBsYW5lcyAlZCAlZCAlZCAlZCIsIDAsIHNpemUsIHNpemUgKyBzaXplMiwgc2l6ZSArIDIgKiBzaXplMik7Ci0rICAgICAgR1NUX0RFQlVHICgic3RyaWRlcyAlZCAlZCAlZCAlZCIsIHN0cmlkZSwgc3RyaWRlMiwgc3RyaWRlMiwgc3RyaWRlKTsKLSsgICAgICByZXR1cm4gMiAqIHNpemUgKyAyICogc2l6ZTI7Ci0rICAgIGNhc2UgUElYX0ZNVF9SR0IyNDoKLSsgICAgY2FzZSBQSVhfRk1UX0JHUjI0OgotKyAgICAgIHN0cmlkZSA9IFJPVU5EX1VQXzQgKHdpZHRoICogMyk7Ci0rICAgICAgc2l6ZSA9IHN0cmlkZSAqIGhlaWdodDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMV0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMl0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbM10gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gc3RyaWRlOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzFdID0gMDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsyXSA9IDA7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbM10gPSAwOwotKyAgICAgIHJldHVybiBzaXplOwotKyAgICAgIC8qY2FzZSBQSVhfRk1UX0FZVVY0NDQ0OgotKyAgICAgICAgIGNhc2UgUElYX0ZNVF9CR1IzMjoKLSsgICAgICAgICBjYXNlIFBJWF9GTVRfQkdSQTMyOgotKyAgICAgICAgIGNhc2UgUElYX0ZNVF9SR0IzMjogKi8KLSsgICAgY2FzZSBQSVhfRk1UX1JHQjMyOgotKyAgICAgIHN0cmlkZSA9IHdpZHRoICogNDsKLSsgICAgICBzaXplID0gc3RyaWRlICogaGVpZ2h0OwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMF0gPSBwdHI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVszXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMF0gPSBzdHJpZGU7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzJdID0gMDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVszXSA9IDA7Ci0rICAgICAgcmV0dXJuIHNpemU7Ci0rICAgIGNhc2UgUElYX0ZNVF9SR0I1NTU6Ci0rICAgIGNhc2UgUElYX0ZNVF9SR0I1NjU6Ci0rICAgIGNhc2UgUElYX0ZNVF9ZVVlWNDIyOgotKyAgICBjYXNlIFBJWF9GTVRfVVlWWTQyMjoKLSsgICAgICBzdHJpZGUgPSBST1VORF9VUF80ICh3aWR0aCAqIDIpOwotKyAgICAgIHNpemUgPSBzdHJpZGUgKiBoZWlnaHQ7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVswXSA9IHB0cjsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzFdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzJdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzNdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVswXSA9IHN0cmlkZTsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsxXSA9IDA7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMl0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzNdID0gMDsKLSsgICAgICByZXR1cm4gc2l6ZTsKLSsgICAgY2FzZSBQSVhfRk1UX1VZWVZZWTQxMToKLSsgICAgICAvKiBGSVhNRSwgcHJvYmFibHkgbm90IHRoZSByaWdodCBzdHJpZGUgKi8KLSsgICAgICBzdHJpZGUgPSBST1VORF9VUF80ICh3aWR0aCk7Ci0rICAgICAgc2l6ZSA9IHN0cmlkZSAqIGhlaWdodDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMV0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMl0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbM10gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gd2lkdGggKyB3aWR0aCAvIDI7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzJdID0gMDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVszXSA9IDA7Ci0rICAgICAgcmV0dXJuIHNpemUgKyBzaXplIC8gMjsKLSsgICAgY2FzZSBQSVhfRk1UX0dSQVk4OgotKyAgICAgIHN0cmlkZSA9IFJPVU5EX1VQXzQgKHdpZHRoKTsKLSsgICAgICBzaXplID0gc3RyaWRlICogaGVpZ2h0OwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMF0gPSBwdHI7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVszXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMF0gPSBzdHJpZGU7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzJdID0gMDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVszXSA9IDA7Ci0rICAgICAgcmV0dXJuIHNpemU7Ci0rICAgIGNhc2UgUElYX0ZNVF9NT05PV0hJVEU6Ci0rICAgIGNhc2UgUElYX0ZNVF9NT05PQkxBQ0s6Ci0rICAgICAgc3RyaWRlID0gUk9VTkRfVVBfNCAoKHdpZHRoICsgNykgPj4gMyk7Ci0rICAgICAgc2l6ZSA9IHN0cmlkZSAqIGhlaWdodDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMV0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMl0gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbM10gPSBOVUxMOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gc3RyaWRlOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzFdID0gMDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsyXSA9IDA7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbM10gPSAwOwotKyAgICAgIHJldHVybiBzaXplOwotKyAgICBjYXNlIFBJWF9GTVRfUEFMODoKLSsgICAgICAvKiBhbHJlYWR5IGZvcmNlZCB0byBiZSB3aXRoIHN0cmlkZSwgc28gc2FtZSByZXN1bHQgYXMgb3RoZXIgZnVuY3Rpb24gKi8KLSsgICAgICBzdHJpZGUgPSBST1VORF9VUF80ICh3aWR0aCk7Ci0rICAgICAgc2l6ZSA9IHN0cmlkZSAqIGhlaWdodDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwotKyAgICAgIHBpY3R1cmUtPmRhdGFbMV0gPSBwdHIgKyBzaXplOyAgICAvKiBwYWxldHRlIGlzIHN0b3JlZCBoZXJlIGFzIDI1NiAzMiBiaXQgd29yZHMgKi8KLSsgICAgICBwaWN0dXJlLT5kYXRhWzJdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5kYXRhWzNdID0gTlVMTDsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVswXSA9IHN0cmlkZTsKLSsgICAgICBwaWN0dXJlLT5saW5lc2l6ZVsxXSA9IDQ7Ci0rICAgICAgcGljdHVyZS0+bGluZXNpemVbMl0gPSAwOwotKyAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzNdID0gMDsKLSsgICAgICByZXR1cm4gc2l6ZSArIDI1NiAqIDQ7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgcGljdHVyZS0+ZGF0YVswXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsxXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9IE5VTEw7Ci0rICAgICAgcGljdHVyZS0+ZGF0YVszXSA9IE5VTEw7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgfQotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIENyZWF0ZSBhIEdzdEJ1ZmZlciBvZiB0aGUgcmVxdWVzdGVkIHNpemUgYW5kIGNhcHMuCi0rICogVGhlIG1lbW9yeSB3aWxsIGJlIGFsbG9jYXRlZCBieSBmZm1wZWcsIG1ha2luZyBzdXJlIGl0J3MgcHJvcGVybHkgYWxpZ25lZAotKyAqIGZvciBhbnkgcHJvY2Vzc2luZy4gKi8KLSsKLStHc3RCdWZmZXIgKgotK25ld19hbGlnbmVkX2J1ZmZlciAoZ2ludCBzaXplLCBHc3RDYXBzICogY2FwcykKLSt7Ci0rICBHc3RCdWZmZXIgKmJ1ZjsKLSsKLSsgIGJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOwotKyAgR1NUX0JVRkZFUl9EQVRBIChidWYpID0gR1NUX0JVRkZFUl9NQUxMT0NEQVRBIChidWYpID0gYXZfbWFsbG9jIChzaXplKTsKLSsgIEdTVF9CVUZGRVJfU0laRSAoYnVmKSA9IHNpemU7Ci0rICBHU1RfQlVGRkVSX0ZSRUVfRlVOQyAoYnVmKSA9IGF2X2ZyZWU7Ci0rICBpZiAoY2FwcykKLSsgICAgZ3N0X2J1ZmZlcl9zZXRfY2FwcyAoYnVmLCBjYXBzKTsKLSsKLSsgIHJldHVybiBidWY7Ci0rfQotKwotK2ludAotK2dzdF9mZm1wZWdfYXV0b19tYXhfdGhyZWFkcyAodm9pZCkKLSt7Ci0rICBzdGF0aWMgZ3NpemUgbl90aHJlYWRzID0gMDsKLSsgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJm5fdGhyZWFkcykpIHsKLSsgICAgaW50IG4gPSAxOwotKyNpZiBkZWZpbmVkKF9XSU4zMikKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKnMgPSBnZXRlbnYgKCJOVU1CRVJfT0ZfUFJPQ0VTU09SUyIpOwotKyAgICAgIGlmIChzKSB7Ci0rICAgICAgICBuID0gYXRvaSAocyk7Ci0rICAgICAgfQotKyAgICB9Ci0rI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0rICAgIHsKLSsgICAgICBpbnQgbWliW10gPSB7IENUTF9IVywgSFdfTkNQVSB9OwotKyAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IHNpemVvZiAoaW50KTsKLSsKLSsgICAgICBpZiAoc3lzY3RsIChtaWIsIDIsICZuX3RocmVhZHMsICZkYXRhU2l6ZSwgTlVMTCwgMCkpIHsKLSsgICAgICAgIG4gPSAxOwotKyAgICAgIH0KLSsgICAgfQotKyNlbHNlCi0rICAgIG4gPSBzeXNjb25mIChfU0NfTlBST0NFU1NPUlNfQ09ORik7Ci0rI2VuZGlmCi0rICAgIGlmIChuIDwgMSkKLSsgICAgICBuID0gMTsKLSsKLSsgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZuX3RocmVhZHMsIG4pOwotKyAgfQotKwotKyAgcmV0dXJuIChpbnQpIChuX3RocmVhZHMpOwotK30KLWRpZmYgLXVOciBnc3QtZmZtcGVnLTAuMTAuMTMub3JpZy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmggZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuaAotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuaAkyMDExLTExLTAyIDE0OjA0OjA1LjAwMDAwMDAwMCArMDEwMAotKysrIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmgJMjAxNC0wOC0wOCAxNTozNDowNC4wMDc4NzQ2MjYgKzAyMDAKLUBAIC0yMyw2ICsyMyw3IEBACi0gI2lmZGVmIEhBVkVfRkZNUEVHX1VOSU5TVEFMTEVECi0gI2luY2x1ZGUgPGF2Y29kZWMuaD4KLSAjZWxzZQotKyNpbmNsdWRlIDxsaWJhdnV0aWwvbWF0aGVtYXRpY3MuaD4KLSAjaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+Ci0gI2VuZGlmCi0gI2luY2x1ZGUgPGdzdC9nc3QuaD4KLUBAIC04Nyw3ICs4OCw3IEBACi0gZ3N0X2ZmbXBlZ19nZXRfY29kZWNpZF9sb25nbmFtZSAoZW51bSBDb2RlY0lEIGNvZGVjX2lkKTsKLSAKLSBnaW50Ci0tYXZfc21wX2Zvcm1hdF9kZXB0aChlbnVtIFNhbXBsZUZvcm1hdCBzbXBfZm10KTsKLSthdl9zbXBfZm9ybWF0X2RlcHRoKGVudW0gQVZTYW1wbGVGb3JtYXQgc21wX2ZtdCk7Ci0gCi0gR3N0QnVmZmVyICoKLSBuZXdfYWxpZ25lZF9idWZmZXIgKGdpbnQgc2l6ZSwgR3N0Q2FwcyAqIGNhcHMpOwotZGlmZiAtdU5yIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuaC5vcmlnIGdzdC1mZm1wZWctMC4xMC4xMy9leHQvZmZtcGVnL2dzdGZmbXBlZ3V0aWxzLmgub3JpZwotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy5vcmlnL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuaC5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2V4dC9mZm1wZWcvZ3N0ZmZtcGVndXRpbHMuaC5vcmlnCTIwMTQtMDgtMDggMTU6MjY6MzguNDczODU4NjUyICswMjAwCi1AQCAtMCwwICsxLDk1IEBACi0rLyogR1N0cmVhbWVyCi0rICogQ29weXJpZ2h0IChDKSA8MjAwOT4gRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsgKi8KLSsKLSsjaWZuZGVmIF9fR1NUX0ZGTVBFR19VVElMU19IX18KLSsjZGVmaW5lIF9fR1NUX0ZGTVBFR19VVElMU19IX18KLSsKLSsjaWZkZWYgSEFWRV9GRk1QRUdfVU5JTlNUQUxMRUQKLSsjaW5jbHVkZSA8YXZjb2RlYy5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgotKyNlbmRpZgotKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0rCi0rLyoKLSsgKkdldCB0aGUgc2l6ZSBvZiBhbiBwaWN0dXJlCi0rICovCi0raW50Ci0rZ3N0X2ZmbXBlZ19hdnBpY3R1cmVfZ2V0X3NpemUgKGludCBwaXhfZm10LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotKwotKy8qCi0rICogRmlsbCBpbiBwb2ludGVycyBpbiBhbiBBVlBpY3R1cmUsIGFsaWduZWQgYnkgNCAocmVxdWlyZWQgYnkgWCkuCi0rICovCi0rCi0raW50Ci0rZ3N0X2ZmbXBlZ19hdnBpY3R1cmVfZmlsbCAoQVZQaWN0dXJlICogcGljdHVyZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICogICBwdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBQaXhlbEZvcm1hdCBwaXhfZm10LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIHdpZHRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIGhlaWdodCk7Ci0rCi0rLyoKLSsgKiBDb252ZXJ0IGZyb20vdG8gYSBHU3RyZWFtZXIgPC0+IEZGTXBlZyB0aW1lc3RhbXAuCi0rICovCi0rc3RhdGljIGlubGluZSBndWludDY0Ci0rZ3N0X2ZmbXBlZ190aW1lX2ZmX3RvX2dzdCAoZ2ludDY0IHB0cywgQVZSYXRpb25hbCBiYXNlKQotK3sKLSsgIGd1aW50NjQgb3V0OwotKwotKyAgaWYgKHB0cyA9PSBBVl9OT1BUU19WQUxVRSl7Ci0rICAgIG91dCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0rICB9IGVsc2UgewotKyAgICBBVlJhdGlvbmFsIGJxID0geyAxLCBHU1RfU0VDT05EIH07Ci0rICAgIG91dCA9IGF2X3Jlc2NhbGVfcSAocHRzLCBiYXNlLCBicSk7Ci0rICB9Ci0rCi0rICByZXR1cm4gb3V0OwotK30KLSsKLStzdGF0aWMgaW5saW5lIGdpbnQ2NAotK2dzdF9mZm1wZWdfdGltZV9nc3RfdG9fZmYgKGd1aW50NjQgdGltZSwgQVZSYXRpb25hbCBiYXNlKQotK3sKLSsgIGdpbnQ2NCBvdXQ7Ci0rCi0rICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEICh0aW1lKSB8fCBiYXNlLm51bSA9PSAwKSB7Ci0rICAgIG91dCA9IEFWX05PUFRTX1ZBTFVFOwotKyAgfSBlbHNlIHsKLSsgICAgQVZSYXRpb25hbCBicSA9IHsgMSwgR1NUX1NFQ09ORCB9OwotKyAgICBvdXQgPSBhdl9yZXNjYWxlX3EgKHRpbWUsIGJxLCBiYXNlKTsKLSsgIH0KLSsKLSsgIHJldHVybiBvdXQ7Ci0rfQotKwotK3ZvaWQgCi0rZ3N0X2ZmbXBlZ19pbml0X3BpeF9mbXRfaW5mbyh2b2lkKTsKLSsKLStpbnQKLStnc3RfZmZtcGVnX2F1dG9fbWF4X3RocmVhZHModm9pZCk7Ci0rCi0rR19DT05TVF9SRVRVUk4gZ2NoYXIgKgotK2dzdF9mZm1wZWdfZ2V0X2NvZGVjaWRfbG9uZ25hbWUgKGVudW0gQ29kZWNJRCBjb2RlY19pZCk7Ci0rCi0rZ2ludAotK2F2X3NtcF9mb3JtYXRfZGVwdGgoZW51bSBBVlNhbXBsZUZvcm1hdCBzbXBfZm10KTsKLSsKLStHc3RCdWZmZXIgKgotK25ld19hbGlnbmVkX2J1ZmZlciAoZ2ludCBzaXplLCBHc3RDYXBzICogY2Fwcyk7Ci0rCi0rI2VuZGlmIC8qIF9fR1NUX0ZGTVBFR19VVElMU19IX18gKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtZmZtcGVnLTAuMTAuMTMvbGliYXZfZTUwMG1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9saWJhdl9lNTAwbWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYTQ5ODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9saWJhdl9lNTAwbWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZSBiL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLWluZGV4IDg0NzMwNjkuLjRmNzQ5NTIgMTAwNzU1Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi1GaXggZ3N0LWZmbXBlZyBidWlsZCBpc3N1ZXMgZm9yIGxpYmF2IG9uIGU1MDBtYyAoZnNsLXA0MDgwKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFlhbyBaaGFvIDx5YW8uemhhb0B3aW5kcml2ZXIuY29tPgotCi1AQCAtMjIxMCw2ICsyMjEwLDEwIEBAIGVsaWYgZW5hYmxlZCBwcGM7IHRoZW4KLSAgICAgICAgICAgICBjcHVmbGFncz0iLW1jcHU9Y2VsbCIKLSAgICAgICAgICAgICBlbmFibGUgbGRicngKLSAgICAgICAgIDs7Ci0rICAgICAgICBlNTAwbWMpCi0rICAgICAgICAgICAgY3B1ZmxhZ3M9Ii1tY3B1PWU1MDBtYyIKLSsgICAgICAgICAgICBkaXNhYmxlIGFsdGl2ZWMKLSsgICAgICAgIDs7Ci0gICAgICAgICBlNTAwdjIpCi0gICAgICAgICAgICAgY3B1ZmxhZ3M9Ii1tY3B1PTg1NDggLW1oYXJkLWZsb2F0IC1tZmxvYXQtZ3Bycz1kb3VibGUiCi0gICAgICAgICAgICAgZGlzYWJsZSBhbHRpdmVjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xpYmF2X2U1NTAwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWctMC4xMC4xMy9saWJhdl9lNTUwMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDllYTJjMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZy0wLjEwLjEzL2xpYmF2X2U1NTAwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotbGliYXY6IEFkZCBjb25maWdzIGZvciBwcGMgZTU1MDAKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEplc3NlIFpoYW5nIDxzZW4uemhhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tIGdzdC1mZm1wZWctMC4xMC4xMy9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCTIwMTMtMDYtMjAgMDU6MTg6MzYuMDczMTA0OTY0IC0wNDAwCi0rKysgZ3N0LWZmbXBlZy0wLjEwLjEzL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUJMjAxMy0wNi0yMCAwNToxODozOC4yNjkxMDQxNTAgLTA0MDAKLUBAIC0yMjIyLDYgKzIyMjIsMTAgQEAKLSAgICAgICAgICAgICBjcHVmbGFncz0iLW1jcHU9ODU0MCAtbWhhcmQtZmxvYXQiCi0gICAgICAgICAgICAgZGlzYWJsZSBhbHRpdmVjCi0gICAgICAgICA7OwotKyAgICAgICAgZTU1MDApCi0rICAgICAgICAgICAgY3B1ZmxhZ3M9Ii1tY3B1PWU1NTAwIC1taGFyZC1mbG9hdCIKLSsgICAgICAgICAgICBkaXNhYmxlIGFsdGl2ZWMKLSsgICAgICAgIDs7Ci0gICAgIGVzYWMKLSAKLSBlbGlmIGVuYWJsZWQgeDg2OyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZ18wLjEwLjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1mZm1wZWdfMC4xMC4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExOWZkNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LWZmbXBlZ18wLjEwLjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLVNVTU1BUlkgPSAiRkZtcGVnLWJhc2VkIEdTdHJlYW1lciBwbHVnLWluIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrICYgKCAoR1BMdjIrICYgTEdQTHYyLjErKSB8IChHUEx2MysgJiBMR1BMdjMrKSApIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYnBvc3Rwcm9jL2dzdHBvc3Rwcm9jLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9NTg5NmU0NDVlNDE2ODEzMjQzODFmNTg2OWVlMzNkMzggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V4dC9mZm1wZWcvZ3N0ZmZtcGVnLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9ZmY2NTQ2N2IwYzUzY2RmYTk4ZDA2ODRjMWJjMjQwYTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0xJQ0VOU0U7bWQ1PWFiYzNiOGNiMDI4NTZhYTc4MjNiYmJkMTYyZDE2MjMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWUzNDRjOGZhODM2YzNhNDFjNGNiZDc5ZDdiZDNhMzc5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdzdHJlYW1lci5uZXQvIgotREVQRU5EUyA9ICJnc3RyZWFtZXIgZ3N0LXBsdWdpbnMtYmFzZSB6bGliIGJ6aXAyIHlhc20tbmF0aXZlIGxpYnBvc3Rwcm9jIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9sb3dlci1yYW5rLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9oMjY0X3FwZWxfbW14LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmF2X2U1MDBtYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJhdl9lNTUwMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nc3QtZmZtcGVnLUNWRS0yMDEzLTM2NzQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hdmZvcm1hdC1tcGVndHNlbmMtQ2hlY2stZGF0YS1hcnJheS1zaXplLWluLW1wZWd0c193LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdnFhdmlkZW8tY2hlY2stY2h1bmstc2l6ZXMtYmVmb3JlLXJlYWRpbmctY2h1bmtzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXZjb2RlYy1tc3JsZS11c2UtYXZfaW1hZ2VfZ2V0X2xpbmVzaXplLXRvLWNhbGN1bGF0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWh1ZmZ5dXZkZWMtU2tpcC1sZW4tMC1jYXNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWh1ZmZ5dXZkZWMtQ2hlY2staW5pdF92bGMtcmV0dXJuLWNvZGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWxzZGVjLWNoZWNrLWJsb2NrLWxlbmd0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBnc3N1YmRlYy1jaGVjay1STEUtc2l6ZS1iZWZvcmUtY29weWluZy4tRml4LW91dC1vZi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hdHJhYzNkZWMtQ2hlY2stY29kaW5nLW1vZGUtYWdhaW5zdC1jaGFubmVscy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWVhbWFkLWZpeC1vdXQtb2YtYXJyYXktYWNjZXNzZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tanBlZ2RlYy1jaGVjay1TRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsYWMtZml4LW5iX3NhbXBsZXMtb3JkZXItY2FzZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWgyNjQtY29ycmVjdC1yZWYtY291bnQtY2hlY2stYW5kLWxpbWl0LWZpeC1vdXQtb2YtYXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yb3F2aWRlb2RlYy1jaGVjay1kaW1lbnNpb25zLXZhbGlkaXR5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWFjZGVjLWNoZWNrLWNoYW5uZWwtY291bnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wbmdkZWMtZmlsdGVyLWRvbnQtYWNjZXNzLW91dC1vZi1hcnJheS1lbGVtZW50cy1hdC10LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZXJyb3JfY29uY2VhbG1lbnQtQ2hlY2stdGhhdC10aGUtcGljdHVyZS1pcy1ub3QtaW4tYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXZwMy1maXgtb29iLXJlYWQtZm9yLW5lZ2F0aXZlLXRva2Vucy1hbmQtbWVtbGVha3Mtb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12cDMtQ29weS1hbGwtMy1mcmFtZXMtZm9yLXRocmVhZC11cGRhdGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaDI2NF9zZWktRml4LWluZmluaXRlLWxvb3AucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hdmNvZGVjLXBhcnNlci1yZXNldC1pbmRleGVzLW9uLXJlYWxsb2MtZmFpbHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2Y29kZWMtcnB6YS1QZXJmb3JtLXBvaW50ZXItYWR2YW5jZS1hbmQtY2hlY2tzLWJlZm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3N0LWZmbXBlZy1DVkUtMjAxMy0wODU1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcWRtMmRlYy1maXgtYnVmZmVyLW92ZXJmbG93LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc21hY2tlcmRlYy1DaGVjay10aGF0LXRoZS1sYXN0LWluZGV4ZXMtYXJlLXdpdGhpbi10aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2Y29kZWMtZHNwdXRpbC1maXgtc2lnbmVkbmVzcy1pbi1zaXplb2YtY29tcGFyaXNzaW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lcnJvci1jb25jZWFsbWVudC1pbml0aWFsaXplLWJsb2NrLWluZGV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcWRtMi1jaGVjay1hcnJheS1pbmRleC1iZWZvcmUtdXNlLWZpeC1vdXQtb2YtYXJyYXktYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxhdmYtY29tcHV0ZS1wcm9iZS1idWZmZXItc2l6ZS1tb3JlLXJlbGlhYmx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZmZzZXJ2ZXItc2V0LW9mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oMjY0LXNldC1wYXJhbWV0ZXJzLWZyb20tU1BTLXdoZW5ldmVyLWl0LWNoYW5nZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oMjY0LXNraXAtZXJyb3ItY29uY2VhbG1lbnQtd2hlbi1TUFMtYW5kLXNsaWNlcy1hcmUtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXZjb2RlYy1zbWMtZml4LW9mZi1ieS0xLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItYXZjb2RlYy1tanBlZ2RlYy1jaGVjay1iaXRzLXBlci1waXhlbC1mb3ItY2hhbmdlcy1zaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJhdi05LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1mZm1wZWctZml4LUNWRS0yMDExLTQzNTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtNzkzMy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC04NTQ1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTg1NDYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3N0LWZmbXBlZy1maXgtQ1ZFLTIwMTQtODU0Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nc3QtZmZtcGVnLWZpeC1DVkUtMjAxNC05MzE4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1mZm1wZWctZml4LUNWRS0yMDE0LTk2MDMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2Y1YmVhY2FmMTMxMmRiMmRiMzBhMDI2YjM2ODg4YzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzZmY2EwNWIwOGUwMDEzNGUzY2I5MmZhMzQ3NTA3ZjQyY2JkNDhkZGIwOGVkMzM0M2E5MTJkZWYxODdmYmI2MiIKLQotUFIgPSAicjgiCi0KLUdTVFJFQU1FUl9ERUJVRyA/PSAiLS1kaXNhYmxlLWRlYnVnIgotCi1GRk1QRUdfRVhUUkFfQ09ORklHVVJFID0gIi0td2l0aC1mZm1wZWctZXh0cmEtY29uZmlndXJlIgotIyBwYXNzIC0tY3B1IGZvciBwb3dlcnBjLiBnZXQgY3B1IG5hbWUgYnkgc3RyaXBwaW5nICJwcGMiIG9yICJwcGM2NCIKLSMgZnJvbSBERUZBVUxUVFVORQotRkZNUEVHX0NQVV9wb3dlcnBjID0gIi0tY3B1PSR7QGQuZ2V0VmFyKCdERUZBVUxUVFVORScsIEZhbHNlKVszOl19IgotRkZNUEVHX0NQVV9wb3dlcnBjNjQgPSAiLS1jcHU9JHtAZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJywgRmFsc2UpWzU6XX0iCi1GRk1QRUdfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkcgPSAiLS10YXJnZXQtb3M9bGludXggJHtGRk1QRUdfQ1BVfSBcCi0gIC0tY2M9JyR7Q0N9JyAtLWFzPScke0NDfScgLS1sZD0nJHtDQ30nIC0tbm09JyR7Tk19JyAtLWFyPScke0FSfScgXAotICAtLXJhbmxpYj0nJHtSQU5MSUJ9JyBcCi0gICR7R1NUUkVBTUVSX0RFQlVHfSIKLUZGTVBFR19FWFRSQV9DT05GSUdVUkVfQ09NTU9OID0gXAotJyR7RkZNUEVHX0VYVFJBX0NPTkZJR1VSRX09IiR7RkZNUEVHX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHfSInCi0KLUVYVFJBX09FQ09ORiA9ICIke0ZGTVBFR19FWFRSQV9DT05GSUdVUkVfQ09NTU9OfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImV4dGVybmFsLWxpYmF2IgotUEFDS0FHRUNPTkZJR1tleHRlcm5hbC1saWJhdl0gPSAiLS13aXRoLXN5c3RlbS1mZm1wZWcsLGxpYmF2IgotUEFDS0FHRUNPTkZJR1tvcmNdID0gIi0tZW5hYmxlLW9yYywtLWRpc2FibGUtb3JjLG9yYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMC4xMC8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTAuMTAvLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTAuMTAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0wLjEwLyouYSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvNDA3MzYvCi1QTkJMQUNLTElTVFtnc3QtZmZtcGVnXSA/PSAiTm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50bHkgdXNlZCBmZm1wZWcgMyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtbWV0YS1iYXNlXzAuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LW1ldGEtYmFzZV8wLjEwLmJiCmluZGV4IDAzOWFiZTEuLjg4ZjFhYmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtbWV0YS1iYXNlXzAuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1tZXRhLWJhc2VfMC4xMC5iYgpAQCAtNiw3ICs2LDcgQEAKIERFUEVORFNfQkFEPSIke0AnZ3N0LXBsdWdpbnMtYmFkJyBpZiAnYmFkJyBpbiBDT01NRVJDSUFMX1BMVUdJTlMuc3BsaXQoJy0nKSBlbHNlICcnfSIKIERFUEVORFMgPSAiZ3N0cmVhbWVyIGdzdC1wbHVnaW5zLWJhc2UgZ3N0LXBsdWdpbnMtZ29vZCAke0RFUEVORFNfVUdMWX0gJHtERVBFTkRTX0JBRH0iCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtcGx1Z2lucy1nbC9ycGktZWdsLWdsZXMyLWRlcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtcGx1Z2lucy1nbC9ycGktZWdsLWdsZXMyLWRlcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGIxYzVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1wbHVnaW5zLWdsL3JwaS1lZ2wtZ2xlczItZGVwLnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK0NoZWNrIGZvciBoZWFkZXIgYW5kIGxpYnJhcnkgc2VwYXJhdGVseSBhbmQgY2hlY2sgZm9yIEdMRVN2MiBiZWZvcmUgZWdsCit0aGlzIGlzIHRvIG92ZXJjb21lIGFuIGFubm95aW5nIGlzc3VlIHdpdGggcnBpL3VzZXJsYW5kIHdoZXJlIGVnbCBkZXBlbmRzCitvbiBzeXNtYm9scyBmcm9tIGxpYkdMRVN2MgorCistS2hlbQorSW5kZXg6IGdzdC1wbHVnaW5zLWdsLTAuMTAuMy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1nbC0wLjEwLjMub3JpZy9jb25maWd1cmUuYWMKKysrKyBnc3QtcGx1Z2lucy1nbC0wLjEwLjMvY29uZmlndXJlLmFjCitAQCAtMTgzLDggKzE4MywxMCBAQCBjYXNlICRob3N0IGluCisgICAgIGVsc2UKKyAgICAgICBBQ19DSEVDS19IRUFERVJTKFtFR0wvZWdsLmhdLCBbSEFWRV9FR0w9eWVzXSwgW0hBVkVfRUdMPW5vXSkKKyAgICAgICBpZiB0ZXN0ICJ4JEhBVkVfRUdMIiA9ICJ4eWVzIjsgdGhlbgorLSAgICAgICAgQUdfR1NUX0NIRUNLX0xJQkhFQURFUihFR0wsIEVHTCwgZWdsR2V0RXJyb3IsLCBFR0wvZWdsLmgsLCBBQ19NU0dfRVJST1IoW0VHTCBpcyByZXF1aXJlZF0pKQorLSAgICAgICAgQUdfR1NUX0NIRUNLX0xJQkhFQURFUihHTEVTMiwgR0xFU3YyLCBnbFRleEltYWdlMkQsLCBHTEVTMi9nbDIuaCwsIEFDX01TR19FUlJPUihbT3BlbkdMRVMyIGlzIHJlcXVpcmVkXSkpCisrICAgICAgICBBQ19DSEVDS19IRUFERVJTKFtHTEVTMi9nbDIuaF0sLCBBQ19NU0dfRVJST1IoW09wZW5HTEVTMiBpcyByZXF1aXJlZF0pKQorKyAgICAgICAgQUNfQ0hFQ0tfTElCKEdMRVN2MixbZ2xUZXhJbWFnZTJEXSwsIEFDX01TR19FUlJPUihbT3BlbkdMRVMyIGlzIHJlcXVpcmVkXSkpCisrICAgICAgICBBQ19DSEVDS19IRUFERVJTKFtFR0wvZWdsLmhdLCwgQUNfTVNHX0VSUk9SKFtFR0wgaXMgcmVxdWlyZWRdKSkKKysgICAgICAgIEFDX0NIRUNLX0xJQihFR0wsW2VnbEdldEVycm9yXSwsIEFDX01TR19FUlJPUihbRUdMIGlzIHJlcXVpcmVkXSkpCisgICAgICAgICBHTF9MSUJTPSIkTElCUyAkWF9MSUJTIC1sRUdMIC1sR0xFU3YyIgorICAgICAgICAgR0xfQkFDS0VORD14MTFFUzIKKyAgICAgICAgIEdMX1RZUEU9Z2xlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1wbHVnaW5zLWdsXzAuMTAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3QtcGx1Z2lucy1nbF8wLjEwLjMuYmIKaW5kZXggNjg1OWYzMy4uZjNlYWYzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdC1wbHVnaW5zLWdsXzAuMTAuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0LXBsdWdpbnMtZ2xfMC4xMC4zLmJiCkBAIC02LDEzICs2LDE3IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYWM3MGVkZTEzZjc5OTc4ZDU2ZWFlZDhhYmFhM2M5MzgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDgzNDBiNmE0YjhhYmNlMTYzNDRhN2JjMzNlNzRhOTRmZGNjZTRmNTdlZjYzNDJjZGYyZjk0MWM0MjliZjIxMCIKIAotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLWNvbmRpdGlvbmFsLWdsLWZyYW1lYnVmZmVyLXVuZGVmaW5lZC11c2UucGF0Y2giCitTUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtY29uZGl0aW9uYWwtZ2wtZnJhbWVidWZmZXItdW5kZWZpbmVkLXVzZS5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovL3JwaS1lZ2wtZ2xlczItZGVwLnBhdGNoIFwKKyIKIAogREVQRU5EUyArPSAiZ3N0LXBsdWdpbnMtYmFzZSB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIGpwZWcgbGlicG5nIGdsZXciCiAKIFBSID0gInI0IgogCi1pbmhlcml0IGdldHRleHQKK2luaGVyaXQgZ2V0dGV4dCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKIAogIyBUaGlzIHBhY2thZ2UgZG9lc24ndCBoYXZlIGEgY29uZmlndXJlIHN3aXRjaCBmb3IgRUdMIG9yIEdMLCBzbyBmb3JjaWJseSB0ZWxsCiAjIGNvbmZpZ3VyZSB0aGF0IGl0IGNhbid0IGZpbmQgZ2wuaCBzbyBpdCBhbHdheXMgdXNlcyBFR0wuICBJZi93aGVuIHdlIGhhdmUgc29tZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9kaXNwbGF5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9kaXNwbGF5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWIwZTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvZGlzcGxheS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gM2U0NmQyZTUwMWRhNjhkOTI5YmI1ZjI2OTAwYTI5MmE1ZmMwNGExZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBXZXN0ZXJmZWxkIDxzdGVmYW5Ac3BhY2UudHdjLmRlPgotRGF0ZTogTW9uLCAyMyBBcHIgMjAxMiAwMzoxMDoyMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggdGltZSBkaXNwbGF5IHVwZGF0ZXMgKGJyb2tlbiBieSBpbnRyb2R1Y3Rpb24gb2YgcXVpZXQKLSBtb2RlKS4KLQotLS0tCi0gc3JjL2dzdDEyMy5jYyB8ICAgIDEgKwotIHNyYy9tc2cuY2MgICAgfCAgICA3ICsrKysrKysKLSBzcmMvbXNnLmggICAgIHwgICAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9nc3QxMjMuY2MgYi9zcmMvZ3N0MTIzLmNjCi1pbmRleCAyMGU5MWU1Li5jZTU4NzZkIDEwMDY0NAotLS0tIGEvc3JjL2dzdDEyMy5jYwotKysrIGIvc3JjL2dzdDEyMy5jYwotQEAgLTY0MCw2ICs2NDAsNyBAQCBjYl9wcmludF9wb3NpdGlvbiAoZ3BvaW50ZXIgKmRhdGEpCi0gICAgICAgZWxzZQotICAgICAgICAgYmxhbmtzICs9ICIgICAgICAgICAiOwotICAgICAgIE1zZzo6cHJpbnQgKCIlcyVzXHIiLCBzdGF0dXMuY19zdHIoKSwgYmxhbmtzLmNfc3RyKCkpOwotKyAgICAgIE1zZzo6Zmx1c2goKTsKLSAgICAgfQotIAotICAgLyogY2FsbCBtZSBhZ2FpbiAqLwotZGlmZiAtLWdpdCBhL3NyYy9tc2cuY2MgYi9zcmMvbXNnLmNjCi1pbmRleCA1NDdjZDkwLi4zM2NhZGEyIDEwMDY0NAotLS0tIGEvc3JjL21zZy5jYwotKysrIGIvc3JjL21zZy5jYwotQEAgLTQxLDYgKzQxLDEzIEBAIHByaW50IChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSAgICAgfQotIH0KLSAKLSt2b2lkCi0rZmx1c2goKQotK3sKLSsgIGlmICghT3B0aW9uczo6dGhlKCkucXVpZXQpCi0rICAgIGZmbHVzaCAoc3Rkb3V0KTsKLSt9Ci0rCi0gfQotIAotIH0KLWRpZmYgLS1naXQgYS9zcmMvbXNnLmggYi9zcmMvbXNnLmgKLWluZGV4IGUwY2VkMjQuLjViZWJhYzAgMTAwNjQ0Ci0tLS0gYS9zcmMvbXNnLmgKLSsrKyBiL3NyYy9tc2cuaAotQEAgLTI3LDYgKzI3LDcgQEAgbmFtZXNwYWNlIE1zZwotIHsKLSAKLSB2b2lkIHByaW50IChjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7Ci0rdm9pZCBmbHVzaCgpOwotIAotIH0KLSAKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdDEyM18wLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0MTIzXzAuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmUxYmM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0MTIzXzAuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJGbGV4aWJsZSBDTEkgcGxheWVyIGluIHRoZSBzcGlyaXQgb2YgbXBnMTIzLCBiYXNlZCBvbiBHU3RyZWFtZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vc3BhY2UudHdjLmRlL35zdGVmYW4vZ3N0MTIzLnBocCIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dzdDEyMy5jYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE5O21kNT0wNWQyZjVkNTRiOTg1Yjk4NmMyNmFmOTMxZDIwODRmOCIKLQotREVQRU5EUyA9ICJsaWJ4MTEgZ3N0cmVhbWVyIGdzdC1wbHVnaW5zLWJhc2UgZ3RrKyBuY3Vyc2VzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zcGFjZS50d2MuZGUvfnN0ZWZhbi9nc3QxMjMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZGlzcGxheS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlNzc3NjdjOWQ2ZmVjZWU1NjQxZjk1ODA0ZjE2MGZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5ZDFkZTAyNWVjYTA0NjZjMTI1ZGNkNmExMWI2NDM0MWJkZjk4ZWU0YzAzYzNlNWExMjMyMWQ3N2NiOGIwY2UiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBOQkxBQ0tMSVNUW2dzdDEyM10gPz0gImdzdDEyMyBpcyBzdGlsbCAic29tZXRpbWVzIiB1c2luZyB3cm9uZyBzeXNyb290IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2p1Y2UvcHJvanVjZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2p1Y2UvcHJvanVjZXIuaW5jCmluZGV4IDZmNjk2ZTIuLjYzZWQ5ZTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9qdWNlL3Byb2p1Y2VyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvanVjZS9wcm9qdWNlci5pbmMKQEAgLTMsMTkgKzMsMTkgQEAKIEpVQ0Ugc3VwcG9ydGVkIHBsYXRmb3JtcywgaW5jbHVkaW5nIExpbnV4IGFuZCBFbWJlZGRlZCBMaW51eC4iCiBTRUNUSU9OID0gInV0aWxzIgogSE9NRVBBR0UgPSAiaHR0cDovL2p1Y2UuY29tLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUudHh0O21kNT05YWI3NjVjY2RhODg5MGVmYzc1M2YyODc5MTFhMTk1OCIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTY1YzUwYjRmZjM1MjJiOTk0MzZkYTEwMDUzNmNjZDFjIgogCiBpbmhlcml0IHBrZ2NvbmZpZwogCiBERVBFTkRTID0gImxpYngxMSBsaWJ4ZXh0IGxpYnhpbmVyYW1hIGxpYnhyYW5kciBsaWJ4Y3Vyc29yIGZyZWV0eXBlIGFsc2EtbGliIGN1cmwiCiAKLVNSQ1JFViA9ICJhOGE3ZmEyOGUyZTljYjE5ZGI2YTI3ZmNjY2I1NjdhOGNjZmU2MTA5IgotQlJBTkNIID0gImRldmVsb3AiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vanVsaWFuc3RvcmVyL0pVQ0UuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke0JSQU5DSH0iCitTUkNSRVYgPSAiNGY0MWYyOGI0N2QwMWI5Mzk1NTkxMjNkMTQ1YjRlNTg2MDUyOGJiNyIKK0JSQU5DSCA9ICJtYXN0ZXIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vV2VBcmVST0xJL0pVQ0UuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke0JSQU5DSH0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1QViA9ICI0LjIuMytnaXQke1NSQ1BWfSIKK1BWID0gIjUuMC4xIgogCiBKVUNFX1BST0pVQ0VSX0JVSUxEX1BBVEggPSAiJHtCfS9leHRyYXMvUHJvanVjZXIvQnVpbGRzIgogSlVDRV9QUk9KVUNFUl9NQUtFRklMRV9QQVRIID0gIiR7SlVDRV9QUk9KVUNFUl9CVUlMRF9QQVRIfS9MaW51eE1ha2VmaWxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL211c2ljcGQvbXBkXzAuMTkuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9tcGRfMC4xOS4yMS5iYgppbmRleCBjMTZmM2JlLi4yZWIyMWEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9tcGRfMC4xOS4yMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9tcGRfMC4xOS4yMS5iYgpAQCAtMzYsOSArMzYsMTIgQEAKICAgICBkYnVzIFwKICAgICBleHBhdCBcCiAgICAgemxpYiBcCi0gICAgbGlidXBucCBcCisgICAgbGlidXBucDEuNiBcCiAiCiAKKyMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gbXBnMTIzIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKwogU1JDX1VSSSA9ICIgXAogICAgIGh0dHA6Ly93d3cubXVzaWNwZC5vcmcvZG93bmxvYWQvJHtCUE59LzAuMTkvJHtCUH0udGFyLnh6IFwKICAgICBmaWxlOi8vbXBkLmNvbmYuaW4gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3hfMTQuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NveC9zb3hfMTQuNC4wLmJiCmluZGV4IGUxMTVmMWMuLjNlYjE4NTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zb3gvc294XzE0LjQuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc294L3NveF8xNC40LjAuYmIKQEAgLTYsNiArNiw5IEBACiAKIERFUEVORFMgPSAibGlicG5nIGZmbXBlZyBsaWJzbmRmaWxlMSBsaWJ2b3JiaXMiCiAKKyMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gZmZtcGVnIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKwogUFIgPSAicjIiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHB1bHNlYXVkaW8nLCBkKX0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3N0cmVhbXJpcHBlci9zdHJlYW1yaXBwZXJfMS42NC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3N0cmVhbXJpcHBlci9zdHJlYW1yaXBwZXJfMS42NC42LmJiCmluZGV4IDk0MzU1YjYuLjcyMjgxNWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zdHJlYW1yaXBwZXIvc3RyZWFtcmlwcGVyXzEuNjQuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc3RyZWFtcmlwcGVyL3N0cmVhbXJpcHBlcl8xLjY0LjYuYmIKQEAgLTYsNiArNiw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKIERFUEVORFMgPSAiZ2xpYi0yLjAgbGlibWFkIGxpYm9nZyBsaWJ2b3JiaXMiCiAKKyMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gbGlibWFkIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKwogU1JDX1VSSSA9ICJcCiAgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAogICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLXRoZXNlLWFyZS1mb3JlaWduLWF1dG9tYWtlLXByb2plY3RzLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjLmluYwppbmRleCAwODdiYWFiLi5hY2IzY2NkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3ZsYy92bGMuaW5jCkBAIC0xMyw2ICsxMyw5IEBACiAgICBsaWJtdHAgbGlib3B1cyBvcmMgbGlic2FtcGxlcmF0ZTAgbGlidXNiMSBzY2hyb2VkaW5nZXIgdGFnbGliIFwKICAgIHRpZmYiCiAKKyMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gZmZtcGVnIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKwogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQudmlkZW9sYW4ub3JnL3B1Yi92aWRlb2xhbi8ke0JQTn0vJHtQVn0vJHtCUH0udGFyLnh6IgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDAxLWJ1aWxkLVByb3RlY3QtYWdhaW5zdC11bnN1cHBvcnRlZC1DUFUtdHlwZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwMS1idWlsZC1Qcm90ZWN0LWFnYWluc3QtdW5zdXBwb3J0ZWQtQ1BVLXR5cGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NjhkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwMS1idWlsZC1Qcm90ZWN0LWFnYWluc3QtdW5zdXBwb3J0ZWQtQ1BVLXR5cGVzLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNDk0NWRjYTExYmM0ZGRlYzYwYmQ4NThmNDUyMTJkYzhmMzk2MzhlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KK0RhdGU6IFR1ZSwgNSBKdWwgMjAxNiAxODowNzo0NSAtMDQwMAorU3ViamVjdDogW1BBVENIIDEvNl0gYnVpbGQ6IFByb3RlY3QgYWdhaW5zdCB1bnN1cHBvcnRlZCBDUFUgdHlwZXMKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbZXhwZWN0ZWQgaW4gMC40XQorLS0tCisgY29uZmlndXJlLmFjIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDZmOTU1M2IuLmY1MzA0YjggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcwLDggKzcwLDkgQEAgQVNfQ0FTRShbIiR7aG9zdF9jcHV9Il0sCisgICAgICAgICBbCisgICAgICAgICAgSEFWRV9BUk09MQorICAgICAgICAgIEFSQ0hfQ0ZMQUdTPSItRFdFQlJUQ19BUkNIX0FSTSIKKy0gICAgICAgIF0KKysgICAgICAgIF0sCisgICAgICMgRklYTUU6IEFkZCBNSVBTIHN1cHBvcnQsIHNlZSB3ZWJydGMvQlVJTEQuZ24gZm9yIGRlZmluZXMKKysgICAgW0FDX01TR19FUlJPUihbVW5zdXBwb3J0ZWQgQ1BVIHR5cGUgJGhvc3RfY3B1XSldCisgKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfWDg2LCBbdGVzdCAieCR7SEFWRV9YODZ9IiA9ICJ4MSJdKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfQVJNLCBbdGVzdCAieCR7SEFWRV9BUk19IiA9ICJ4MSJdKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDItYnVpbGQtQWRkLUFSTS02NGJpdC1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDItYnVpbGQtQWRkLUFSTS02NGJpdC1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMjAyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwMi1idWlsZC1BZGQtQVJNLTY0Yml0LXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBiNWJkYTM0MzExNTliNjUwNWRjZDA2OTY0MWM4NjMwMThjNGQ0MzA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorRGF0ZTogV2VkLCA2IEp1bCAyMDE2IDE1OjE4OjE1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMi82XSBidWlsZDogQWRkIEFSTSA2NGJpdCBzdXBwb3J0CisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2V4cGVjdGVkIGluIDAuNF0KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGY1MzA0YjguLmJlMjA1MTQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcxLDYgKzcxLDExIEBAIEFTX0NBU0UoWyIke2hvc3RfY3B1fSJdLAorICAgICAgICAgIEhBVkVfQVJNPTEKKyAgICAgICAgICBBUkNIX0NGTEFHUz0iLURXRUJSVENfQVJDSF9BUk0iCisgICAgICAgICBdLAorKyAgICBbYWFyY2g2NCpdLAorKyAgICAgICAgWworKyAgICAgICAgIEhBVkVfTkVPTj0xCisrICAgICAgICAgQVJDSF9DRkxBR1M9Ii1EV0VCUlRDX0hBU19ORU9OIC1EV0VCUlRDX0FSQ0hfQVJNNjQiCisrICAgICAgICBdLAorICAgICAjIEZJWE1FOiBBZGQgTUlQUyBzdXBwb3J0LCBzZWUgd2VicnRjL0JVSUxELmduIGZvciBkZWZpbmVzCisgICAgIFtBQ19NU0dfRVJST1IoW1Vuc3VwcG9ydGVkIENQVSB0eXBlICRob3N0X2NwdV0pXQorICkKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDAzLWJ1aWxkLWZpeC1hcmNoaXRlY3R1cmUtZGV0ZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDMtYnVpbGQtZml4LWFyY2hpdGVjdHVyZS1kZXRlY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJlMjcwZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDAzLWJ1aWxkLWZpeC1hcmNoaXRlY3R1cmUtZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK0Zyb20gNzcyMmZiOGEzMTg5ZmVhMGY2MzgxZjAyYTBlNGY2M2M4NDdmMDM5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorRGF0ZTogU2F0LCA2IEF1ZyAyMDE2IDExOjAyOjQzICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBidWlsZDogZml4IGFyY2hpdGVjdHVyZSBkZXRlY3Rpb24KKworVGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGRldGVjdGlvbiwgYmFzZWQgb24gdGhlICJob3N0X2NwdSIgcGFydCBvZiB0aGUKK3R1cGxlIGRvZXMgbm90IHdvcmsgcHJvcGVybHkgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbjoKKworIC0gVGhlIGNvZGUgYXNzdW1lcyB0aGF0IGlmIGhvc3RfY3B1IHN0YXJ0cyB3aXRoICJhcm0iIHRoZW4gQVJNCisgICBpbnN0cnVjdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hpY2ggaXMgaW5jb3JyZWN0LiBJbmRlZWQsIENvcnRleC1NCisgICBwbGF0Zm9ybXMgY2FuIHJ1biBMaW51eCwgdGhleSBhcmUgQVJNIHBsYXRmb3JtcyAoc28gaG9zdF9jcHUgPSBhcm0pLAorICAgYnV0IHRoZXkgZG9uJ3Qgc3VwcG9ydCBBUk0gaW5zdHJ1Y3Rpb25zOiB0aGV5IHN1cHBvcnQgb25seSB0aGUKKyAgIFRodW1iLTIgaW5zdHJ1Y3Rpb24gc2V0LgorCisgLSBUaGUgYXJtdjcgY2FzZSBpcyBhbHNvIG5vdCB2ZXJ5IHVzZWZ1bCwgYXMgaXQgaXMgbm90IHN0YW5kYXJkIGF0IGFsbAorICAgdG8gcGFzcyBhcm12NyBhcyBob3N0X2NwdSBldmVuIGlmIHRoZSBob3N0IHN5c3RlbSBpcyBhY3R1YWxseSBBUk12NworICAgYmFzZWQuCisKKyAtIEZvciB0aGUgc2FtZSByZWFzb24sIHRoZSBhcm12OCBjYXNlIGlzIG5vdCB2ZXJ5IHVzZWZ1bDogQVJNdjggaXMKKyAgIEFBcmNoNjQsIGFuZCB0aGVyZSBpcyBhbHJlYWR5IGEgc2VwYXJhdGUgY2FzZSB0byBoYW5kbGUgdGhpcworICAgYXJjaGl0ZWN0dXJlLgorCitTbywgdGhpcyBjb21taXQgbW92ZXMgYXdheSBmcm9tIGEgaG9zdF9jcHUgYmFzZWQgbG9naWMsIGFuZCBpbnN0ZWFkCit0ZXN0cyB1c2luZyBBQ19DSEVDS19ERUNMUygpIHRoZSBidWlsdC1pbiBkZWZpbml0aW9ucyBvZiB0aGUgY29tcGlsZXI6CisKKyAtIElmIHdlIGhhdmUgX19BUk1fQVJDSF9JU0FfQVJNIGRlZmluZWQsIHRoZW4gaXQncyBhbiBBUk0gcHJvY2Vzc29yCisgICB0aGF0IHN1cHBvcnRzIHRoZSBBUk0gaW5zdHJ1Y3Rpb24gc2V0ICh0aGlzIGFsbG93cyB0byBleGNsdWRlIFRodW1iLTIKKyAgIG9ubHkgcHJvY2Vzc29ycykuCisKKyAtIElmIHdlIGhhdmUgX19BUk1fQVJDSF83QV9fLCB0aGVuIHdlIGhhdmUgYW4gQVJNdjctQSBwcm9jZXNzb3IsIGFuZAorICAgd2UgY2FuIGVuYWJsZSB0aGUgY29ycmVzcG9uZGluZyBvcHRpbWl6YXRpb25zCisKKyAtIFNhbWUgZm9yIF9fYWFyY2g2NF9fLCBfX2kzODZfXyBhbmQgX194ODZfNjRfXy4KKworSW4gYWRkaXRpb24sIHdlIHJlbW92ZSB0aGUgQUNfTVNHX0VSUk9SKCkgdGhhdCBtYWtlcyB0aGUgYnVpbGQgZmFpbCBmb3IKK2FsbCBhcmNoaXRlY3R1cmVzIGJ1dCB0aGUgb25lcyB0aGF0IGFyZSBleHBsaWNpdGx5IHN1cHBvcnRlZC4gSW5kZWVkLAord2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcgYnVpbGRzIGp1c3QgZmluZSBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcyAodGVzdGVkCitvbiBNSVBTKSwgaXQncyBqdXN0IHRoYXQgbm9uZSBvZiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9wdGltaXphdGlvbnMKK3dpbGwgYmUgdXNlZC4KKworU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+CitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtleHBlY3RlZCBpbiAwLjRdCistLS0KKyBjb25maWd1cmUuYWMgfCAzNSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYmUyMDUxNC4uZTg5ODAxNCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTUsMzAgKzU1LDE3IEBAIEFTX0NBU0UoWyIke2hvc3R9Il0sCisgKQorIEFDX1NVQlNUKFBMQVRGT1JNX0NGTEFHUykKKyAKKy1BU19DQVNFKFsiJHtob3N0X2NwdX0iXSwKKy0gICAgW2k/ODZ8eDg2XzY0XSwKKy0gICAgICAgIFsKKy0gICAgICAgICBIQVZFX1g4Nj0xCistICAgICAgICBdLAorLSAgICBbYXJtdjcqfGFybXY4Kl0sCistICAgICAgICBbCistICAgICAgICAgSEFWRV9BUk09MQorLSAgICAgICAgIEhBVkVfQVJNVjc9MQorLSAgICAgICAgIEFSQ0hfQ0ZMQUdTPSItRFdFQlJUQ19BUkNIX0FSTSAtRFdFQlJUQ19BUkNIX0FSTV9WNyIKKy0gICAgICAgIF0sCistICAgIFthcm0qXSwKKy0gICAgICAgIFsKKy0gICAgICAgICBIQVZFX0FSTT0xCistICAgICAgICAgQVJDSF9DRkxBR1M9Ii1EV0VCUlRDX0FSQ0hfQVJNIgorLSAgICAgICAgXSwKKy0gICAgW2FhcmNoNjQqXSwKKy0gICAgICAgIFsKKy0gICAgICAgICBIQVZFX05FT049MQorLSAgICAgICAgIEFSQ0hfQ0ZMQUdTPSItRFdFQlJUQ19IQVNfTkVPTiAtRFdFQlJUQ19BUkNIX0FSTTY0IgorLSAgICAgICAgXSwKKy0gICAgIyBGSVhNRTogQWRkIE1JUFMgc3VwcG9ydCwgc2VlIHdlYnJ0Yy9CVUlMRC5nbiBmb3IgZGVmaW5lcworLSAgICBbQUNfTVNHX0VSUk9SKFtVbnN1cHBvcnRlZCBDUFUgdHlwZSAkaG9zdF9jcHVdKV0KKy0pCisrIyBUZXN0aW5nIF9fQVJNX0FSQ0hfSVNBX0FSTSBzaW5jZSB0aGUgY29kZSBjb250YWlucyBBUk0gaW5zdHJ1Y3Rpb25zLAorKyMgd2hpY2ggZG9uJ3Qgd29yayBvbiBUaHVtYi0yIG9ubHkgcGxhdGZvcm1zIChBUk12Ny1NKS4KKytBQ19DSEVDS19ERUNMUyhbX19BUk1fQVJDSF9JU0FfQVJNXSwKKysJW0hBVkVfQVJNPTE7IEFSQ0hfQ0ZMQUdTPSIke0FSQ0hfQ0ZMQUdTfSAtRFdFQlJUQ19BUkNIX0FSTSJdKQorK0FDX0NIRUNLX0RFQ0xTKFtfX0FSTV9BUkNIXzdBX19dLAorKwlbSEFWRV9BUk1WNz0xOyBBUkNIX0NGTEFHUz0iJHtBUkNIX0NGTEFHU30gLURXRUJSVENfQVJDSF9BUk1fVjciXSkKKytBQ19DSEVDS19ERUNMUyhbX19hYXJjaDY0X19dLAorKwlbSEFWRV9ORU9OPTE7IEFSQ0hfQ0ZMQUdTPSIke0FSQ0hfQ0ZMQUdTfSAtRFdFQlJUQ19IQVNfTkVPTiAtRFdFQlJUQ19BUkNIX0FSTTY0Il0pCisrQUNfQ0hFQ0tfREVDTFMoW19faTM4Nl9fXSwgW0hBVkVfWDg2PTFdKQorK0FDX0NIRUNLX0RFQ0xTKFtfX3g4Nl82NF9fXSwgW0hBVkVfWDg2PTFdKQorKworIEFNX0NPTkRJVElPTkFMKEhBVkVfWDg2LCBbdGVzdCAieCR7SEFWRV9YODZ9IiA9ICJ4MSJdKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfQVJNLCBbdGVzdCAieCR7SEFWRV9BUk19IiA9ICJ4MSJdKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfQVJNVjcsIFt0ZXN0ICJ4JHtIQVZFX0FSTVY3fSIgPSAieDEiXSkKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDA0LXR5cGVkZWZzLmgtYWRkLXN1cHBvcnQtZm9yLTY0LWJpdC1hbmQtYmlnLWVuZGlhbi1NSVAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwNC10eXBlZGVmcy5oLWFkZC1zdXBwb3J0LWZvci02NC1iaXQtYW5kLWJpZy1lbmRpYW4tTUlQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NmYxMGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwNC10eXBlZGVmcy5oLWFkZC1zdXBwb3J0LWZvci02NC1iaXQtYW5kLWJpZy1lbmRpYW4tTUlQLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gMGMzMzJiN2Q5NGY4NDI1YzRmMzMzNDRkZGY0MDZiNmVlYTQ1ODg2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNzowMTo0OSArMDMwMAorU3ViamVjdDogW1BBVENIIDQvNl0gdHlwZWRlZnMuaDogYWRkIHN1cHBvcnQgZm9yIDY0LWJpdCBhbmQgYmlnIGVuZGlhbiBNSVBTCisKK1RoZSA2NC1iaXQgY2hlY2sgaXMgdGFrZW4gZnJvbSB0aGUgdXBzdHJlYW0gd2VicnRjIHByb2plY3QsIHRoZSBiaWcKK2VuZGlhbiBjaGVjayBpcyBteSBvd24gYWRkaXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgd2VicnRjL3R5cGVkZWZzLmggfCAxMSArKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS93ZWJydGMvdHlwZWRlZnMuaCBiL3dlYnJ0Yy90eXBlZGVmcy5oCitpbmRleCBkODc1NDkwLi5kMWIyZjU0IDEwMDY0NAorLS0tIGEvd2VicnRjL3R5cGVkZWZzLmgKKysrKyBiL3dlYnJ0Yy90eXBlZGVmcy5oCitAQCAtNDEsOSArNDEsMTggQEAKKyAvLyNkZWZpbmUgV0VCUlRDX0FSQ0hfQVJNRUwKKyAjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKKyAjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KKy0jZWxpZiBkZWZpbmVkKF9fTUlQU0VMX18pCisrI2VsaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VCX18pCisrI2RlZmluZSBXRUJSVENfQVJDSF9NSVBTX0ZBTUlMWQorKyNpZiBkZWZpbmVkKF9fTFA2NF9fKQorKyNkZWZpbmUgV0VCUlRDX0FSQ0hfNjRfQklUUworKyNlbHNlCisgI2RlZmluZSBXRUJSVENfQVJDSF8zMl9CSVRTCisrI2VuZGlmCisrI2lmIGRlZmluZWQoX19NSVBTRUxfXykKKyAjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KKysjZWxzZQorKyNkZWZpbmUgV0VCUlRDX0FSQ0hfQklHX0VORElBTgorKyNlbmRpZgorICNlbGlmIGRlZmluZWQoX19wbmFjbF9fKQorICNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUworICNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLzAwMDUtdHlwZWRlZnMuaC1hZGQtc3VwcG9ydC1mb3ItUG93ZXJQQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDA1LXR5cGVkZWZzLmgtYWRkLXN1cHBvcnQtZm9yLVBvd2VyUEMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE2YjU3ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDA1LXR5cGVkZWZzLmgtYWRkLXN1cHBvcnQtZm9yLVBvd2VyUEMucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBkYjVmNTcwZTkyOGM4Y2E1YjBiOGRjNzAyZTFhZjBhNTcyNzdmMDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogTW9uLCAzIEp1bCAyMDE3IDE2OjIwOjA4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggNS82XSB0eXBlZGVmcy5oOiBhZGQgc3VwcG9ydCBmb3IgUG93ZXJQQworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHdlYnJ0Yy90eXBlZGVmcy5oIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS93ZWJydGMvdHlwZWRlZnMuaCBiL3dlYnJ0Yy90eXBlZGVmcy5oCitpbmRleCBkMWIyZjU0Li42ZTM0ZDllIDEwMDY0NAorLS0tIGEvd2VicnRjL3R5cGVkZWZzLmgKKysrKyBiL3dlYnJ0Yy90eXBlZGVmcy5oCitAQCAtNTMsNiArNTMsOSBAQAorICNlbHNlCisgI2RlZmluZSBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCisgI2VuZGlmCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKysjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKKysjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KKyAjZWxpZiBkZWZpbmVkKF9fcG5hY2xfXykKKyAjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKKyAjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8wMDA2LWNvbW1vbl9hdWRpby1pbXBsZW1lbnQtZW5kaWFubmVzcy1jb252ZXJzaW9uLWluLXdhdi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwNi1jb21tb25fYXVkaW8taW1wbGVtZW50LWVuZGlhbm5lc3MtY29udmVyc2lvbi1pbi13YXYtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MjZhYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmcvMDAwNi1jb21tb25fYXVkaW8taW1wbGVtZW50LWVuZGlhbm5lc3MtY29udmVyc2lvbi1pbi13YXYtLnBhdGNoCkBAIC0wLDAgKzEsMTE2IEBACitGcm9tIDdkMzFkYThlZjkzOTg3MDAwZjI5N2Q0MzVkYmFjYWY3ZDQzNjEwN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CitEYXRlOiBUaHUsIDE1IEp1biAyMDE3IDE4OjM4OjMwICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggNi82XSBjb21tb25fYXVkaW86IGltcGxlbWVudCBlbmRpYW5uZXNzIGNvbnZlcnNpb24gaW4gd2F2IGZpbGUKKyBoYW5kbGluZworCitUaGUgY29kZSBkaWRuJ3QgYnVpbGQgZm9yIGJpZyBlbmRpYW4gbWFjaGluZXMgZHVlIHRvIHRoZSBtaXNzaW5nCitlbmRpYW5uZXNzIGNvbnZlcnNpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHdlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIHdlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYyB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5jYyBiL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKK2luZGV4IGIxNGI2MjAuLmUyZjc3MzggMTAwNjQ0CistLS0gYS93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCisrKysgYi93ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCitAQCAtNjQsOSArNjQsNiBAQCBXYXZSZWFkZXI6On5XYXZSZWFkZXIoKSB7CisgfQorIAorIHNpemVfdCBXYXZSZWFkZXI6OlJlYWRTYW1wbGVzKHNpemVfdCBudW1fc2FtcGxlcywgaW50MTZfdCogc2FtcGxlcykgeworLSNpZm5kZWYgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorLSNlcnJvciAiTmVlZCB0byBjb252ZXJ0IHNhbXBsZXMgdG8gYmlnLWVuZGlhbiB3aGVuIHJlYWRpbmcgZnJvbSBXQVYgZmlsZSIKKy0jZW5kaWYKKyAgIC8vIFRoZXJlIGNvdWxkIGJlIG1ldGFkYXRhIGFmdGVyIHRoZSBhdWRpbzsgZW5zdXJlIHdlIGRvbid0IHJlYWQgaXQuCisgICBudW1fc2FtcGxlcyA9IHN0ZDo6bWluKHJ0Yzo6Y2hlY2tlZF9jYXN0PHVpbnQzMl90PihudW1fc2FtcGxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9zYW1wbGVzX3JlbWFpbmluZ18pOworQEAgLTc2LDYgKzczLDEzIEBAIHNpemVfdCBXYXZSZWFkZXI6OlJlYWRTYW1wbGVzKHNpemVfdCBudW1fc2FtcGxlcywgaW50MTZfdCogc2FtcGxlcykgeworICAgUlRDX0NIRUNLKHJlYWQgPT0gbnVtX3NhbXBsZXMgfHwgZmVvZihmaWxlX2hhbmRsZV8pKTsKKyAgIFJUQ19DSEVDS19MRShyZWFkLCBudW1fc2FtcGxlc19yZW1haW5pbmdfKTsKKyAgIG51bV9zYW1wbGVzX3JlbWFpbmluZ18gLT0gcnRjOjpjaGVja2VkX2Nhc3Q8dWludDMyX3Q+KHJlYWQpOworKworKyNpZmRlZiBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCisrICAvLyBDb252ZXJ0IHRoZSByZWFkIHNhbXBsZXMgZnJvbSBsaXR0bGUtZW5kaWFuIHRvIGJpZy1lbmRpYW4uCisrICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlYWQ7IGkrKykKKysgICAgc2FtcGxlc1tpXSA9ICgodWludDE2X3QpIHNhbXBsZXNbaV0gPj4gOCkgfCAoKHVpbnQxNl90KSBzYW1wbGVzW2ldIDw8IDgpOworKyNlbmRpZgorKworICAgcmV0dXJuIHJlYWQ7CisgfQorIAorQEAgLTExOSwxMSArMTIzLDIyIEBAIFdhdldyaXRlcjo6fldhdldyaXRlcigpIHsKKyB9CisgCisgdm9pZCBXYXZXcml0ZXI6OldyaXRlU2FtcGxlcyhjb25zdCBpbnQxNl90KiBzYW1wbGVzLCBzaXplX3QgbnVtX3NhbXBsZXMpIHsKKy0jaWZuZGVmIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KKy0jZXJyb3IgIk5lZWQgdG8gY29udmVydCBzYW1wbGVzIHRvIGxpdHRsZS1lbmRpYW4gd2hlbiB3cml0aW5nIHRvIFdBViBmaWxlIgorLSNlbmRpZgorKyNpZmRlZiBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCisrICAvLyBDb252ZXJ0IHRoZSBzYW1wbGVzIGZyb20gYmlnLWVuZGlhbiBzYW1wbGVzIHRvIGxpdHRsZS1lbmRpYW4uCisrICBpbnQxNl90KiBjb252ZXJ0ZWRfc2FtcGxlcyA9IHN0YXRpY19jYXN0PGludDE2X3QqPihtYWxsb2MobnVtX3NhbXBsZXMgKiBzaXplb2YoKnNhbXBsZXMpKSk7CisrICBSVENfQ0hFQ0soY29udmVydGVkX3NhbXBsZXMpIDw8ICJPdXQgb2YgbWVtb3J5LiI7CisrICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zYW1wbGVzOyBpKyspCisrICAgIGNvbnZlcnRlZF9zYW1wbGVzW2ldID0KKysgICAgICAgICgodWludDE2X3QpIHNhbXBsZXNbaV0gPj4gOCkgfCAoKHVpbnQxNl90KSBzYW1wbGVzW2ldIDw8IDgpOworKworKyAgY29uc3Qgc2l6ZV90IHdyaXR0ZW4gPQorKyAgICAgIGZ3cml0ZShjb252ZXJ0ZWRfc2FtcGxlcywgc2l6ZW9mKCpjb252ZXJ0ZWRfc2FtcGxlcyksIG51bV9zYW1wbGVzLAorKyAgICAgICAgICAgICBmaWxlX2hhbmRsZV8pOworKyAgZnJlZShjb252ZXJ0ZWRfc2FtcGxlcyk7CisrI2Vsc2UKKyAgIGNvbnN0IHNpemVfdCB3cml0dGVuID0KKyAgICAgICBmd3JpdGUoc2FtcGxlcywgc2l6ZW9mKCpzYW1wbGVzKSwgbnVtX3NhbXBsZXMsIGZpbGVfaGFuZGxlXyk7CisrI2VuZGlmCisgICBSVENfQ0hFQ0tfRVEobnVtX3NhbXBsZXMsIHdyaXR0ZW4pOworICAgbnVtX3NhbXBsZXNfICs9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih3cml0dGVuKTsKKyAgIFJUQ19DSEVDSyh3cml0dGVuIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSB8fAorZGlmZiAtLWdpdCBhL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYyBiL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYworaW5kZXggNjFjZmZmZS4uMzgyYmZjNyAxMDA2NDQKKy0tLSBhL3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYworKysrIGIvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCitAQCAtMTI5LDcgKzEyOSwzNyBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIFJlYWRGb3VyQ0ModWludDMyX3QgeCkgeworICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSwgNCk7CisgfQorICNlbHNlCistI2Vycm9yICJXcml0ZSBiZS10by1sZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyIKKytzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVMRTE2KHVpbnQxNl90KiBmLCB1aW50MTZfdCB4KSB7CisrICAqZiA9IHggPj4gOCB8IHggPDwgODsKKyt9Cisrc3RhdGljIGlubGluZSB2b2lkIFdyaXRlTEUzMih1aW50MzJfdCogZiwgdWludDMyX3QgeCkgeworKyAgKmYgPSB4ID4+IDI0CisrICAgICAgfCAoeCAmJiAweEZGMDAwMCkgPj4gOAorKyAgICAgIHwgKHggJiYgMHhGRjAwKSA8PCA4CisrICAgICAgfCB4IDw8IDI0OworK30KKytzdGF0aWMgaW5saW5lIHZvaWQgV3JpdGVGb3VyQ0ModWludDMyX3QqIGYsIGNoYXIgYSwgY2hhciBiLCBjaGFyIGMsIGNoYXIgZCkgeworKyAgKmYgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZCkKKysgICAgICB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihjKSA8PCA4CisrICAgICAgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikgPDwgMTYKKysgICAgICB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihhKSA8PCAyNDsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50MzJfdCBSZWFkTEUxNih1aW50MTZfdCB4KSB7CisrICByZXR1cm4geCA+PiA4IHwgeCA8PCA4OworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJlYWRMRTMyKHVpbnQzMl90IHgpIHsKKysgIHJldHVybiB4ID4+IDI0CisrICAgICAgfCAoeCAmJiAweEZGMDAwMCkgPj4gOAorKyAgICAgIHwgKHggJiYgMHhGRjAwKSA8PCA4CisrICAgICAgfCB4IDw8IDI0OworK30KKysKKytzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIFJlYWRGb3VyQ0ModWludDMyX3QgeCkgeworKyAgeCA9IFJlYWRMRTMyKHgpOworKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSwgNCk7CisrfQorICNlbmRpZgorIAorIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgUmlmZkNodW5rU2l6ZSh1aW50MzJfdCBieXRlc19pbl9wYXlsb2FkKSB7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicnRjLWF1ZGlvLXByb2Nlc3Npbmcvd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmdfMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nXzAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjBmN2M2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nXzAuMy5iYgpAQCAtMCwwICsxLDI4IEBACitERVNDUklQVElPTiA9ICJBdWRpbyBwcm9jZXNzaW5nIGJpdHMgb2YgdGhlIFdlYlJUQyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby93ZWJydGMtYXVkaW8tcHJvY2Vzc2luZy8iCitTRUNUSU9OID0gImF1ZGlvIgorCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYmV4ZWNpbmZvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRhMDhhMzhhMzJhMzQwYzVkOTFlMTNlZTg2YTExOGYyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dlYnJ0Yy9jb21tb24uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTk7bWQ1PTQxZjczMjJkOTFkZWFiYWYwYWNiYmQwYjhkMGJjNTQ4IFwKKyIKKworIyBOb3RlIHRoYXQgcGF0Y2ggMyBlZmZlY3RpdmVseSByZXZlcnRzIHBhdGNoZXMgMSBhbmQgMi4gVGhlIG9ubHkgcmVhc29uCisjIHdoeSBwYXRjaGVzIDEgYW5kIDIgYXJlIGluY2x1ZGVkIGlzIHRoYXQgb3RoZXJ3aXNlIHBhdGNoIDMgd291bGRuJ3QKKyMgYXBwbHkgY2xlYW5seS4KK1NSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3dlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLVByb3RlY3QtYWdhaW5zdC11bnN1cHBvcnRlZC1DUFUtdHlwZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1idWlsZC1BZGQtQVJNLTY0Yml0LXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1idWlsZC1maXgtYXJjaGl0ZWN0dXJlLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXR5cGVkZWZzLmgtYWRkLXN1cHBvcnQtZm9yLTY0LWJpdC1hbmQtYmlnLWVuZGlhbi1NSVAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS10eXBlZGVmcy5oLWFkZC1zdXBwb3J0LWZvci1Qb3dlclBDLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtY29tbW9uX2F1ZGlvLWltcGxlbWVudC1lbmRpYW5uZXNzLWNvbnZlcnNpb24taW4td2F2LS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMzZhZTAzMmY2MDhlNjU4MDhhYzU3N2NkZTBhYjcyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTZlMjkxZDRmNTU3ZDg4Y2Q1MGM0ZmUzYjg0NTRlYzIzODM2MmQyMmNlZGIzZTYxNzMyNDBkOTBmMGE4MGZhIgorCitMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sZXhlY2luZm8iCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2Nyb3NzZ3VpZC9jcm9zc2d1aWQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvY3Jvc3NndWlkL2Nyb3NzZ3VpZC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjhiOGI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2Nyb3NzZ3VpZC9jcm9zc2d1aWQuYmIKQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworREVTQ1JJUFRJT04gPSAiTGlnaHR3ZWlnaHQgY3Jvc3MgcGxhdGZvcm0gQysrIEdVSUQvVVVJRCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dyYWVtZS1oaWxsL2Nyb3NzZ3VpZCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTM3MzI3NGJjOGQ4MDAxZWRjNTQ5MzM5MTlmMzZmNjgiCitERVBFTkRTICs9ICJ1dGlsLWxpbnV4IgorCitQViA9ICIwLjArZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICJiNTY5NTdhYzQ1MzU3NWU5MWNhMWI2M2E4MGMwMDc3YzJiMGQwMTFhIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dyYWVtZS1oaWxsL2Nyb3NzZ3VpZDtwcm90b2NvbD1odHRwcyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29tcGlsZSgpIHsKKwkke0NYWH0gLWMgZ3VpZC5jcHAgLW8gZ3VpZC5vICR7Q1hYRkxBR1N9IC1zdGQ9YysrMTEgLURHVUlEX0xJQlVVSUQKKwkke0FSfSBydnMgbGliY3Jvc3NndWlkLmEgZ3VpZC5vCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7Qn0vbGliY3Jvc3NndWlkLmEgJHtEfSR7bGliZGlyfS9saWJjcm9zc2d1aWQuYQorCWluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2d1aWQuaCAke0R9JHtpbmNsdWRlZGlyfS9ndWlkLmgKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL01BSU5UQUlORVJTIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvTUFJTlRBSU5FUlMKaW5kZXggOGU2ZTNhMC4uNzcxYzczYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvTUFJTlRBSU5FUlMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvTUFJTlRBSU5FUlMKQEAgLTIsMTUgKzIsMTUgQEAKIAogUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IG1ldGEtbmV0d29ya2luZyB0byB0aGUgT3BlbkVtYmVkZGVkCiBkZXZlbG9wbWVudCBtYWlsaW5nIGxpc3QgKG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnKSB3aXRoCi0nW21ldGEtbmV0d29ya2luZ11bcHlyb10nIGluIHRoZSBzdWJqZWN0LgorJ1ttZXRhLW5ldHdvcmtpbmddW3JvY2tvXScgaW4gdGhlIHN1YmplY3QuCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKIAogICAgZ2l0IHNlbmQtZW1haWwgLTEgLU0gXAogICAgICAgICAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIFwKLSAgICAgICAgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW5ldHdvcmtpbmddW3B5cm9dW1BBVENICisgICAgICAgIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1uZXR3b3JraW5nXVtyb2Nrb11bUEFUQ0gKIAotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKK3JvY2tvIEJyYW5jaCBNYWludGFpbmVyOgogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KIAogWW91IG1heSBhbHNvIGNvbnRhY3QgdGhlIG1haW50YWluZXJzIGRpcmVjdGx5LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9kaXN0cm8vaW5jbHVkZS9tZXRhX25ldHdvcmtpbmdfc2VjdXJpdHlfZmxhZ3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9kaXN0cm8vaW5jbHVkZS9tZXRhX25ldHdvcmtpbmdfc2VjdXJpdHlfZmxhZ3MuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWUxM2VhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWV0YV9uZXR3b3JraW5nX3NlY3VyaXR5X2ZsYWdzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLSMgY29uZmlndXJlIHJpZ2h0ZW91c2x5IGNvbXBsYWluczoKLSMgfCBjb25maWd1cmU6MzQ3OTogdXNpbmcgQ0ZMQUdTOiAgLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLXBpZSAtZnBpZSAtRF9GT1JUSUZZX1NPVVJDRT0yCi0jIHwgY29uZmlndXJlOjM0ODU6IENGTEFHUyBlcnJvcjogQ0ZMQUdTIG1heSBvbmx5IGJlIHVzZWQgdG8gc3BlY2lmeSBDIGNvbXBpbGVyIGZsYWdzLCBub3QgbWFjcm8gZGVmaW5pdGlvbnMuIFVzZSBDUFBGTEFHUyBmb3I6IC1EX0ZPUlRJRllfU09VUkNFPTIKLSMgfCBjb25maWd1cmU6MzUxNjogZXJyb3I6IENhbiBub3QgY29udGludWUuIEZpeCBlcnJvcnMgbWVudGlvbmVkIGltbWVkaWF0ZWx5IGFib3ZlIHRoaXMgbGluZS4KLQotIyBNYWtlIHN1cmUgaXQncyBhdCBsZWFzdCBlbXB0eSBpbiBidWlsZHMgd2hpY2ggZG9uJ3QgaW5jbHVkZQotIyBjb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwotbGNsX21heWJlX2ZvcnRpZnkgPz0gIiIKLVRBUkdFVF9DRkxBR1NfcmVtb3ZlX3BuLWMtYXJlcyA9ICIke2xjbF9tYXliZV9mb3J0aWZ5fSIKLVRBUkdFVF9DUFBGTEFHU19hcHBlbmRfcG4tYy1hcmVzID0gIiR7bGNsX21heWJlX2ZvcnRpZnl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mCmluZGV4IGI1YWExNTkuLjJkZmRlNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2xheWVyLmNvbmYKQEAgLTE5LDkgKzE5LDYgQEAKIAogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9saWNlbnNlcyIKIAotIyBPdmVycmlkZSBzZWN1cml0eSBmbGFncwotcmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL21ldGFfbmV0d29ya2luZ19zZWN1cml0eV9mbGFncy5pbmMKLQogU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiIFwKICAgd2lyZWd1YXJkLXRvb2xzLT53aXJlZ3VhcmQtbW9kdWxlIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RhcS9kYXFfMi4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kYXEvZGFxXzIuMC42LmJiCmluZGV4IDQ3Y2IxNjMuLmVjMzUxNzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RhcS9kYXFfMi4wLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGFxL2RhcV8yLjAuNi5iYgpAQCAtMjksMyArMjksNyBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0MGUxZDEyNzNlMDhhYWVhYTg2ZTY5ZDRmMjhkNTM1YjdlNTNiZGIzODk4YWRmNTM5MjY2YjYzMTM3YmU3Y2IiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCisKK0RJU0FCTEVfU1RBVElDID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzLzAwMDEtcmxtX21zY2hhcC1Vc2UtaW5jbHVkZWRpci1pbnN0ZWFkLW9mLWhhcmRjb2RpbmctdXNyLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1ybG1fbXNjaGFwLVVzZS1pbmNsdWRlZGlyLWluc3RlYWQtb2YtaGFyZGNvZGluZy11c3ItLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiOGNhYWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzLzAwMDEtcmxtX21zY2hhcC1Vc2UtaW5jbHVkZWRpci1pbnN0ZWFkLW9mLWhhcmRjb2RpbmctdXNyLS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDY2ZThiY2RjY2E4OTcxYjVjNDNjMzE3NTVkNTZkN2Y2NzVkOGI1ZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBKdW4gMjAxNyAyMDoxMDo0OSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBybG1fbXNjaGFwOiBVc2UgaW5jbHVkZWRpciBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgL3Vzci9pbmNsdWRlCisKK09FIFFBIGZsYWdzIGl0IGNvcnJlY3RseSBhcyBhIHZvaWxhdGlvbiBvZiBjcm9zcyBjb21waWxhdGlvbgorbmFtZXNwYWNlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL21vZHVsZXMvcmxtX21zY2hhcC9jb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBmcmVlcmFkaXVzLXNlcnZlci0zLjAuMTQvc3JjL21vZHVsZXMvcmxtX21zY2hhcC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmcmVlcmFkaXVzLXNlcnZlci0zLjAuMTQub3JpZy9zcmMvbW9kdWxlcy9ybG1fbXNjaGFwL2NvbmZpZ3VyZS5hYworKysrIGZyZWVyYWRpdXMtc2VydmVyLTMuMC4xNC9zcmMvbW9kdWxlcy9ybG1fbXNjaGFwL2NvbmZpZ3VyZS5hYworQEAgLTcyLDcgKzcyLDcgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorICAgICAgICAgbW9kX2xkZmxhZ3M9Ii1mcmFtZXdvcmsgRGlyZWN0b3J5U2VydmljZSIKKyAgICAgZmkKKyAKKy0gICAgc21hcnRfdHJ5X2Rpcj0iJHdpbmJpbmRfaW5jbHVkZV9kaXIgL3Vzci9pbmNsdWRlL3NhbWJhLTQuMCIKKysgICAgc21hcnRfdHJ5X2Rpcj0iJHdpbmJpbmRfaW5jbHVkZV9kaXIgPS91c3IvaW5jbHVkZS9zYW1iYS00LjAiCisgICAgIEZSX1NNQVJUX0NIRUNLX0lOQ0xVREUod2JjbGllbnQuaCwgWyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAJCQkJCSNpbmNsdWRlIDxzdGRib29sLmg+XSkKKyAgICAgaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfd2JjbGllbnRfaCIgIT0gInh5ZXMiOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE0MTJlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cwpAQCAtMCwwICsxLDExMCBAQAorIyEvYmluL3NoCisjIFN0YXJ0L3N0b3AgdGhlIEZyZWVSQURJVVMgZGFlbW9uLgorCisjIyMgQkVHSU4gSU5JVCBJTkZPCisjIFByb3ZpZGVzOiAgICAgICAgICBmcmVlcmFkaXVzCisjIFJlcXVpcmVkLVN0YXJ0OiAgICAkcmVtb3RlX2ZzICRuZXR3b3JrICRzeXNsb2cKKyMgU2hvdWxkLVN0YXJ0OiAgICAgICR0aW1lIG15c3FsIHNsYXBkIHBvc3RncmVzcWwgc2FtYmEga3JiNS1rZGMKKyMgUmVxdWlyZWQtU3RvcDogICAgICRyZW1vdGVfZnMgJHN5c2xvZworIyBEZWZhdWx0LVN0YXJ0OiAgICAgMiAzIDQgNQorIyBEZWZhdWx0LVN0b3A6ICAgICAgMCAxIDYKKyMgU2hvcnQtRGVzY3JpcHRpb246IFJhZGl1cyBEYWVtb24KKyMgRGVzY3JpcHRpb246ICAgICAgIEV4dGVuc2libGUsIGNvbmZpZ3VyYWJsZSByYWRpdXMgZGFlbW9uCisjIyMgRU5EIElOSVQgSU5GTworCitzZXQgLWUKKworIyBTb3VyY2UgZnVuY3Rpb24gbGlicmFyeS4KKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCisKK2lmIFsgLWYgL2xpYi9sc2IvaW5pdC1mdW5jdGlvbnMgXTsgdGhlbgorICAuIC9saWIvbHNiL2luaXQtZnVuY3Rpb25zCitmaQorCitQUk9HPSJyYWRpdXNkIgorUFJPR1JBTT0iL3Vzci9zYmluL3JhZGl1c2QiCitQSURGSUxFPSIvdmFyL3J1bi9yYWRpdXNkL3JhZGl1c2QucGlkIgorREVTQ1I9IkZyZWVSQURJVVMgZGFlbW9uIgorCitpZiBbIC1yIC9ldGMvZGVmYXVsdC8kUFJPRyBdOyB0aGVuCisgIC4gL2V0Yy9kZWZhdWx0LyRQUk9HCitmaQorCit0ZXN0IC1mICRQUk9HUkFNIHx8IGV4aXQgMAorCitjaGVja19jZXJ0cygpIHsKKwlpZiBbICEgLWYgL2V0Yy9yYWRkYi9jZXJ0cy9zZXJ2ZXIucGVtIF07IHRoZW4KKwkJZWNobyAtbiAiQ3JlYXRpbmcgY2VydGlmaWNhdGVzIGZvciBmcmVlcmFkaXVzLi4uIgorCQlpZiBzdWRvIC11IHJhZGl1c2QgL2V0Yy9yYWRkYi9jZXJ0cy9ib290c3RyYXAgMT4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbDsgdGhlbgorCQkJZWNobyAiZG9uZSIKKwkJZWxzZQorCQkJZWNobyAiZmFpbGVkISIKKwkJZmkKKwlmaQorCit9CisKKyMgL3Zhci9ydW4gbWF5IGJlIGEgdG1wZnMKK2lmIFsgISAtZCAvdmFyL3J1bi9yYWRpdXNkIF07IHRoZW4KKyAgbWtkaXIgLXAgL3Zhci9ydW4vcmFkaXVzZAorICBjaG93biByYWRpdXNkOnJhZGl1c2QgL3Zhci9ydW4vcmFkaXVzZAorZmkKKworaWYgWyAhIC1kIC92YXIvbG9nL3JhZGl1cyBdOyB0aGVuCisgIG1rZGlyIC1wIC92YXIvbG9nL3JhZGl1cworICB0b3VjaCAvdmFyL2xvZy9yYWRpdXMvcmFkaXVzLmxvZworICBjaG93biByYWRpdXNkOnJhZGl1c2QgL3Zhci9ydW4vcmFkaXVzCitmaQorCitpZiBbICEgLWYgJHtQSURGSUxFfSBdOyB0aGVuCisgIHRvdWNoICR7UElERklMRX0KKyAgY2hvd24gcmFkaXVzZDpyYWRpdXNkICR7UElERklMRX0KK2ZpCisKK2V4cG9ydCBQQVRIPSIke1BBVEg6KyRQQVRIOn0vdXNyL3NiaW46L3NiaW4iCisKK3JldD0wCisKK2Nhc2UgIiQxIiBpbgorICAgICAgICBzdGFydCkKKwkJY2hlY2tfY2VydHMKKyAgICAgICAgICAgICAgICBlY2hvIC1uICJTdGFydGluZyAkREVTQ1IiICIkUFJPRyIKKyAgICAgICAgICAgICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRQSURGSUxFIC0tZXhlYyAkUFJPR1JBTSAtLSAkRlJFRVJBRElVU19PUFRJT05TIHx8IHJldD0kPworICAgICAgICAgICAgICAgIFsgIiRyZXQiID09IDAgXSAmJiBlY2hvICIgU3VjY2VzcyIgfHwgZWNobyAiIEZhaWxlZCIKKyAgICAgICAgICAgICAgICBleGl0ICRyZXQKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBzdG9wKQorICAgICAgICAgICAgICAgIGVjaG8gLW4gIlN0b3BwaW5nICRERVNDUiIgIiRQUk9HIgorICAgICAgICAgICAgICAgIGlmIFsgLWYgIiRQSURGSUxFIiBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcmV0cnk9VEVSTS8zMC9LSUxMLzUgLS1xdWlldCAtLXBpZGZpbGUgJFBJREZJTEUgfHwgcmV0PSQ/CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgZWNobyAtbiAiJFBJREZJTEUgbm90IGZvdW5kIgorICAgICAgICAgICAgICAgICAgcmV0PTEKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIFsgIiRyZXQiID09IDAgXSAmJiBlY2hvICIgU3VjY2VzcyIgfHwgZWNobyAiIEZhaWxlZCIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBzdGF0dXMpCisgICAgICAgICAgICAgICAgc3RhdHVzICRQUk9HUkFNOworICAgICAgICAgICAgICAgIGV4aXQgJD8KKyAgICAgICAgICAgICAgICA7OworICAgICAgICByZXN0YXJ0KQorICAgICAgICAgICAgICAgICQwIHN0b3AKKyAgICAgICAgICAgICAgICAkMCBzdGFydAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIHJlbG9hZHxmb3JjZS1yZWxvYWQpCisgICAgICAgICAgICAgICAgZWNobyAtbiAiUmVsb2FkaW5nICRERVNDUiIgIiRQUk9HIgorICAgICAgICAgICAgICAgIGlmIFsgLWYgIiRQSURGSUxFIiBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tc2lnbmFsIEhVUCAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRSB8fCByZXQ9JD8KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBlY2hvIC1uICIkUElERklMRSBub3QgZm91bmQiCisgICAgICAgICAgICAgICAgICByZXQ9MQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgWyAiJHJldCIgPT0gMCBdICYmIGVjaG8gIiBTdWNjZXNzIiB8fCBlY2hvICIgRmFpbGVkIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgICAgICAgZWNobyAiVXNhZ2U6ICQwIHN0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8Zm9yY2UtcmVsb2FkfHJlbG9hZCIKKyAgICAgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgICAgICAgICA7OworZXNhYworCitleGl0IDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1hdm9pZC1zZWFyY2hpbmctaG9zdC1kaXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWF2b2lkLXNlYXJjaGluZy1ob3N0LWRpcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM5OTc2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1hdm9pZC1zZWFyY2hpbmctaG9zdC1kaXJzLnBhdGNoCkBAIC0wLDAgKzEsMTk3IEBACitGcm9tIGRjNDE1OTFkNWNlYjE4OTAwZWM4NTg5NGY4ZjdiN2JiNDRiYjNiZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA0IEphbiAyMDE2IDAxOjQ0OjA0IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2b2lkIHNlYXJjaGluZyBob3N0IGRpcnMKKworRG9uJ3Qgc2VhcmNoIHRoZSBoYXJkY29kZWQgaG9zdCBkaXJzIHRvIGF2b2lkCitob3N0IGNvbnRhbWluYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY3Jvc3MtY29tcGlsZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGFjaW5jbHVkZS5tNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfZGIyL2NvbmZpZ3VyZS5hYyAgICAgICAgfCA0ICsrLS0KKyBzcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9maXJlYmlyZC9jb25maWd1cmUuYWMgICB8IDQgKystLQorIHNyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2lvZGJjL2NvbmZpZ3VyZS5hYyAgICAgIHwgNCArKy0tCisgc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlndXJlLmFjICAgICAgfCA2ICsrKy0tLQorIHNyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX29yYWNsZS9jb25maWd1cmUuYWMgICAgIHwgMiArLQorIHNyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX3Bvc3RncmVzcWwvY29uZmlndXJlLmFjIHwgNCArKy0tCisgc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfdW5peG9kYmMvY29uZmlndXJlLmFjICAgfCA0ICsrLS0KKyA4IGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00CitpbmRleCBkYTQ4YWNjLi5iNTEzYWUxIDEwMDY0NAorLS0tIGEvYWNpbmNsdWRlLm00CisrKysgYi9hY2luY2x1ZGUubTQKK0BAIC0xNzgsNyArMTc4LDcgQEAgaWYgdGVzdCAieCRzbWFydF9saWIiID0gIngiOyB0aGVuCisgICBGUl9MT0NBVEVfRElSKHNtYXJ0X2xpYl9kaXIsW2xpYiQxJHtsaWJsdGRsX2N2X3NobGliZXh0fV0pCisgICBGUl9MT0NBVEVfRElSKHNtYXJ0X2xpYl9kaXIsW2xpYiQxLmFdKQorIAorLSAgZm9yIHRyeSBpbiAkc21hcnRfbGliX2RpciAvdXNyL2xvY2FsL2xpYiAvb3B0L2xpYjsgZG8KKysgIGZvciB0cnkgaW4gJHNtYXJ0X2xpYl9kaXI7IGRvCisgICAgIEFDX01TR19DSEVDS0lORyhbZm9yICQyIGluIC1sJDEgaW4gJHRyeV0pCisgICAgIExJQlM9Ii1sJDEgJG9sZF9MSUJTIgorICAgICBDUFBGTEFHUz0iLUwkdHJ5IC1XbCwtcnBhdGgsJHRyeSAkb2xkX0NQUEZMQUdTIgorQEAgLTIxOCw3ICsyMTgsNyBAQCBhY19zYWZlPWBlY2hvICIkMSIgfCBzZWQgJ3klLi8rLSVfX3BtJSdgCisgb2xkX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgc21hcnRfaW5jbHVkZT0KKyBkbmwgIyAgVGhlIGRlZmF1bHQgZGlyZWN0b3JpZXMgd2Ugc2VhcmNoIGluIChpbiBhZGRpdGlvbiB0byB0aGUgY29tcGlsZXJzIHNlYXJjaCBwYXRoKQorLXNtYXJ0X2luY2x1ZGVfZGlyPSIvdXNyL2xvY2FsL2luY2x1ZGUgL29wdC9pbmNsdWRlIgorK3NtYXJ0X2luY2x1ZGVfZGlyPQorIAorIGRubCAjICBPdXIgbG9jYWwgdmVyc2lvbnMKKyBfc21hcnRfdHJ5X2Rpcj0KK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9kYjIvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfZGIyL2NvbmZpZ3VyZS5hYworaW5kZXggNzVjODUxYS4uYTI2MmQ3MSAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2RiMi9jb25maWd1cmUuYWMKKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2RiMi9jb25maWd1cmUuYWMKK0BAIC01NywxNCArNTcsMTQgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorIAkJZXNhY10pCisgCisgCWRubCBDaGVjayBmb3IgU1FMQ29ubmVjdCBpbiAtbGRiMgorLQlzbWFydF90cnlfZGlyPSIkaWJtZGIyX2xpYl9kaXIgL3Vzci9sb2NhbC9kYjIvbGliIC91c3IvSUJNZGIyL1Y3LjEvbGliIgorKwlzbWFydF90cnlfZGlyPSIkaWJtZGIyX2xpYl9kaXIiCisgCUZSX1NNQVJUX0NIRUNLX0xJQihkYjIsIFNRTENvbm5lY3QpCisgCWlmIHRlc3QgIngkYWNfY3ZfbGliX2RiMl9TUUxDb25uZWN0IiAhPSB4eWVzOyB0aGVuCisgCQlmYWlsPSIkZmFpbCBsaWJkYjIiCisgCWZpCisgCisgCWRubCBDaGVjayBmb3Igc3FsY2xpLmgKKy0Jc21hcnRfdHJ5X2Rpcj0iJGlibWRiMl9pbmNsdWRlX2RpciAvdXNyL2xvY2FsL2RiMi9pbmNsdWRlIC91c3IvSUJNZGIyL1Y3LjEvaW5jbHVkZSIKKysJc21hcnRfdHJ5X2Rpcj0iJGlibWRiMl9pbmNsdWRlX2RpciIKKyAJRlJfU01BUlRfQ0hFQ0tfSU5DTFVERShzcWxjbGkuaCkKKyAJaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3FsY2xpX2giICE9IHh5ZXM7IHRoZW4KKyAJCWZhaWw9IiRmYWlsIHNxbGNsaS5oIgorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2ZpcmViaXJkL2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2ZpcmViaXJkL2NvbmZpZ3VyZS5hYworaW5kZXggNGRhNTdiMy4uNzUyYjA0MyAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2ZpcmViaXJkL2NvbmZpZ3VyZS5hYworKysrIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfZmlyZWJpcmQvY29uZmlndXJlLmFjCitAQCAtNTYsMTQgKzU2LDE0IEBAIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAJCWVzYWNdKQorIAorIAlkbmwgQ2hlY2sgZm9yIGlzY19hdHRhY2hfZGF0YWJhc2UgaW4gLWxmYmNsaWVudAorLQlzbWFydF90cnlfZGlyPSIkZmlyZWJpcmRfbGliX2RpciAvdXNyL2xpYi9maXJlYmlyZDIvbGliIC91c3IvbG9jYWwvZmlyZWJpcmQvbGliIgorKwlzbWFydF90cnlfZGlyPSIkZmlyZWJpcmRfbGliX2RpciIKKyAJRlJfU01BUlRfQ0hFQ0tfTElCKGZiY2xpZW50LCBpc2NfYXR0YWNoX2RhdGFiYXNlKQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9mYmNsaWVudF9pc2NfYXR0YWNoX2RhdGFiYXNlIiAhPSB4eWVzOyB0aGVuCisgCQlmYWlsPSIkZmFpbCBsaWJmYmNsaWVudCIKKyAJZmkKKyAKKyAJZG5sIENoZWNrIGZvciBpYmFzZS5oCistCXNtYXJ0X3RyeV9kaXI9IiRmaXJlYmlyZF9pbmNsdWRlX2RpciAvdXNyL2xpYi9maXJlYmlyZDIvaW5jbHVkZSAvdXNyL2xvY2FsL2ZpcmViaXJkL2luY2x1ZGUiCisrCXNtYXJ0X3RyeV9kaXI9IiRmaXJlYmlyZF9pbmNsdWRlX2RpciIKKyAJRlJfU01BUlRfQ0hFQ0tfSU5DTFVERShpYmFzZS5oKQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9pYmFzZV9oIiAhPSB4eWVzOyB0aGVuCisgCQlmYWlsPSIkZmFpbCBpYmFzZS5oIgorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2lvZGJjL2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2lvZGJjL2NvbmZpZ3VyZS5hYworaW5kZXggYmE2MzA0Zi4uMzM5MzU1NyAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX2lvZGJjL2NvbmZpZ3VyZS5hYworKysrIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfaW9kYmMvY29uZmlndXJlLmFjCitAQCAtNTcsMTQgKzU3LDE0IEBAIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAJCWVzYWNdKQorIAorIAlkbmwgQ2hlY2sgZm9yIFNRTENvbm5lY3QgaW4gLWxpb2RiYworLQlzbWFydF90cnlfZGlyPSIkaW9kYmNfbGliX2RpciAvdXNyL2xpYiAvdXNyL2xpYi9pb2RiYyAvdXNyL2xvY2FsL2xpYi9pb2RiYyAvdXNyL2xvY2FsL2lvZGJjL2xpYi9pb2RiYyIKKysJc21hcnRfdHJ5X2Rpcj0iJGlvZGJjX2xpYl9kaXIiCisgCUZSX1NNQVJUX0NIRUNLX0xJQihpb2RiYywgU1FMQ29ubmVjdCkKKyAJaWYgdGVzdCAieCRhY19jdl9saWJfaW9kYmNfU1FMQ29ubmVjdCIgIT0geHllczsgdGhlbgorIAkJZmFpbD0iJGZhaWwgbGliaW9kYmMiCisgCWZpCisgCisgCWRubCBDaGVjayBmb3IgaXNxbC5oCistCXNtYXJ0X3RyeV9kaXI9IiRpb2RiY19pbmNsdWRlX2RpciAvdXNyL2luY2x1ZGUgL3Vzci9pbmNsdWRlL2lvZGJjIC91c3IvbG9jYWwvaW9kYmMvaW5jbHVkZSIKKysJc21hcnRfdHJ5X2Rpcj0iJGlvZGJjX2luY2x1ZGVfZGlyIgorIAlGUl9TTUFSVF9DSEVDS19JTkNMVURFKGlzcWwuaCkKKyAJaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfaXNxbF9oIiAhPSB4eWVzOyB0aGVuCisgCQlmYWlsPSIkZmFpbCBpc3FsLmgiCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlndXJlLmFjCitpbmRleCAxNDAxNjc3Li4yZTdkYjQ0IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWd1cmUuYWMKK0BAIC0xMzYsNyArMTM2LDcgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorIAorIAlkbmwgIyBDaGVjayBmb3IgbGlibXlzcWxjbGllbnRfcgorIAlpZiB0ZXN0ICJ4JGhhdmVfYV9saWJteXNxbGNsaWVudCIgIT0gInh5ZXMiOyB0aGVuCistCSAgICBzbWFydF90cnlfZGlyPSIkbXlzcWxfbGliX2RpciAvdXNyL2xpYiAvdXNyL2xpYi9teXNxbCAvdXNyL2xvY2FsL2xpYi9teXNxbCAvdXNyL2xvY2FsL215c3FsL2xpYi9teXNxbCIKKysJICAgIHNtYXJ0X3RyeV9kaXI9IiRteXNxbF9saWJfZGlyIgorIAkgICAgRlJfU01BUlRfQ0hFQ0tfTElCKG15c3FsY2xpZW50X3IsIG15c3FsX2luaXQpCisgCSAgICBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9teXNxbGNsaWVudF9yX215c3FsX2luaXQiID0gInh5ZXMiOyB0aGVuCisgCQkJaGF2ZV9hX2xpYm15c3FsY2xpZW50PSd5ZXMnCitAQCAtMTQ1LDcgKzE0NSw3IEBAIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAKKyAJZG5sICMgQ2hlY2sgZm9yIGxpYm15c3FsY2xpZW50CisgCWlmIHRlc3QgIngkaGF2ZV9hX2xpYm15c3FsY2xpZW50IiAhPSAieHllcyI7IHRoZW4KKy0JICAgIHNtYXJ0X3RyeV9kaXI9IiRteXNxbF9saWJfZGlyIC91c3IvbGliIC91c3IvbGliL215c3FsIC91c3IvbG9jYWwvbGliL215c3FsIC91c3IvbG9jYWwvbXlzcWwvbGliL215c3FsIgorKwkgICAgc21hcnRfdHJ5X2Rpcj0iJG15c3FsX2xpYl9kaXIiCisgCSAgICBGUl9TTUFSVF9DSEVDS19MSUIobXlzcWxjbGllbnQsIG15c3FsX2luaXQpCisgCSAgICBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9teXNxbGNsaWVudF9teXNxbF9pbml0IiA9ICJ4eWVzIjsgdGhlbgorIAkJCWhhdmVfYV9saWJteXNxbGNsaWVudD0neWVzJworQEAgLTE4OSw3ICsxODksNyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgICAgIGZpCisgCisgICAgIGlmIHRlc3QgIngkaGF2ZV9teXNxbF9oIiAhPSAieHllcyI7IHRoZW4KKy0JCXNtYXJ0X3RyeV9kaXI9IiRteXNxbF9pbmNsdWRlX2RpciAvdXNyL2xvY2FsL2luY2x1ZGUgL3Vzci9sb2NhbC9teXNxbC9pbmNsdWRlIgorKwkJc21hcnRfdHJ5X2Rpcj0iJG15c3FsX2luY2x1ZGVfZGlyIgorIAkJRlJfU01BUlRfQ0hFQ0tfSU5DTFVERShteXNxbC9teXNxbC5oKQorIAkJaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbXlzcWxfbXlzcWxfaCIgPSAieHllcyI7IHRoZW4KKyAJICAgIAlBQ19ERUZJTkUoSEFWRV9NWVNRTF9NWVNRTF9ILCBbXSwgW0RlZmluZSBpZiB5b3UgaGF2ZSA8bXlzcWwvbXlzcWwuaD5dKQorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX29yYWNsZS9jb25maWd1cmUuYWMgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9vcmFjbGUvY29uZmlndXJlLmFjCitpbmRleCAzMTc4NDYyLi41Y2JjOGMyIDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfb3JhY2xlL2NvbmZpZ3VyZS5hYworKysrIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfb3JhY2xlL2NvbmZpZ3VyZS5hYworQEAgLTYzLDcgKzYzLDcgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorICAgICBkbmwgIyBDaGVjayBmb3IgaGVhZGVyIGZpbGVzCisgICAgIGRubCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKy0gICAgc21hcnRfdHJ5X2Rpcj0iJG9yYWNsZV9pbmNsdWRlX2RpciAvdXNyL2xvY2FsL2luc3RhY2xpZW50L2luY2x1ZGUiCisrICAgIHNtYXJ0X3RyeV9kaXI9IiRvcmFjbGVfaW5jbHVkZV9kaXIiCisgCisgICAgIGlmIHRlc3QgIngkT1JBQ0xFX0hPTUUiICE9ICJ4IjsgdGhlbgorIAlzbWFydF90cnlfZGlyPSIke3NtYXJ0X3RyeV9kaXJ9ICR7T1JBQ0xFX0hPTUV9L2luY2x1ZGUiCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfcG9zdGdyZXNxbC9jb25maWd1cmUuYWMgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9wb3N0Z3Jlc3FsL2NvbmZpZ3VyZS5hYworaW5kZXggNGY5YTg5MC4uZTFjZjgxMSAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX3Bvc3RncmVzcWwvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9wb3N0Z3Jlc3FsL2NvbmZpZ3VyZS5hYworQEAgLTQxLDcgKzQxLDcgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorIAkgIGVzYWMgXQorIAkpCisgCistCXNtYXJ0X3RyeV9kaXI9IiRybG1fc3FsX3Bvc3RncmVzcWxfaW5jbHVkZV9kaXIgL3Vzci9pbmNsdWRlL3Bvc3RncmVzcWwgL3Vzci9sb2NhbC9wZ3NxbC9pbmNsdWRlIC91c3IvaW5jbHVkZS9wZ3NxbCIKKysJc21hcnRfdHJ5X2Rpcj0iJHJsbV9zcWxfcG9zdGdyZXNxbF9pbmNsdWRlX2RpciIKKyAJRlJfU01BUlRfQ0hFQ0tfSU5DTFVERShsaWJwcS1mZS5oKQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9saWJwcW1mZV9oIiAhPSAieHllcyI7IHRoZW4KKyAJCWZhaWw9IiRmYWlsIGxpYnBxLWZlLmgiCitAQCAtNzYsNyArNzYsNyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCQkgIF0pCisgCWZpCisgCistCXNtYXJ0X3RyeV9kaXI9IiRybG1fc3FsX3Bvc3RncmVzcWxfbGliX2RpciAvdXNyL2xpYiAvdXNyL2xvY2FsL3Bnc3FsL2xpYiIKKysJc21hcnRfdHJ5X2Rpcj0iJHJsbV9zcWxfcG9zdGdyZXNxbF9saWJfZGlyIgorIAlGUl9TTUFSVF9DSEVDS19MSUIocHEsIFBRY29ubmVjdGRiKQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9wcV9QUWNvbm5lY3RkYiIgIT0gInh5ZXMiOyB0aGVuCisgCQlmYWlsPSIkZmFpbCBsaWJwcSIKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF91bml4b2RiYy9jb25maWd1cmUuYWMgYi9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF91bml4b2RiYy9jb25maWd1cmUuYWMKK2luZGV4IDM1NDUzODcuLmM1NDNlZDQgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF91bml4b2RiYy9jb25maWd1cmUuYWMKKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX3VuaXhvZGJjL2NvbmZpZ3VyZS5hYworQEAgLTU3LDE0ICs1NywxNCBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCQllc2FjXSkKKyAKKyAJZG5sIENoZWNrIGZvciBTUUxDb25uZWN0IGluIC1sb2RiYworLQlzbWFydF90cnlfZGlyPSIkdW5peG9kYmNfbGliX2RpciAvdXNyL2xvY2FsL3VuaXhvZGJjL2xpYiIKKysJc21hcnRfdHJ5X2Rpcj0iJHVuaXhvZGJjX2xpYl9kaXIiCisgCUZSX1NNQVJUX0NIRUNLX0xJQihvZGJjLCBTUUxDb25uZWN0KQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9vZGJjX1NRTENvbm5lY3QiICE9IHh5ZXM7IHRoZW4KKyAJCWZhaWw9IiRmYWlsIGxpYm9kYmMiCisgCWZpCisgCisgCWRubCBDaGVjayBmb3Igc3FsLmgKKy0Jc21hcnRfdHJ5X2Rpcj0iJHVuaXhvZGJjX2luY2x1ZGVfZGlyIC91c3IvbG9jYWwvdW5peG9kYmMvaW5jbHVkZSIKKysJc21hcnRfdHJ5X2Rpcj0iJHVuaXhvZGJjX2luY2x1ZGVfZGlyIgorIAlGUl9TTUFSVF9DSEVDS19JTkNMVURFKHNxbC5oKQorIAlpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zcWxfaCIgIT0geHllczsgdGhlbgorIAkJZmFpbD0iJGZhaWwgc3FsLmgiCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItbGliY2FwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1saWJjYXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiNzgwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItbGliY2FwLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gNzRlZWQ2MWRlYzg3MDJjODlmM2UxMjFkNTc3ZWE5ZGIyNWM5NjFhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDExIEphbiAyMDE2IDAyOjUyOjE2IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogYWRkIG9wdGlvbiBmb3IgbGliY2FwCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAwNjZkM2Q3Li42ZTQyNjZiIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05NDgsNiArOTQ4LDIzIEBAIGZpCisgZG5sIFNldCBieSBGUl9TTUFSVF9DSEVDS0xJQgorIExJQlM9IiR7b2xkX0xJQlN9IgorIAorK2RubCAjCisrZG5sICMgIGV4dHJhIGFyZ3VtZW50OiAtLXdpdGgtbGliY2FwCisrZG5sICMKKytXSVRIX0xJQkNBUD15ZXMKKytBQ19BUkdfV0lUSChsaWJjYXAsCisrWyAgLS13aXRoLWxpY2FwICAgICAgICAgIHVzZSBsaWNhcCBmb3IgZGVidWdnZXIgY2hlY2tzLiAoZGVmYXVsdD15ZXMpXSwKKytbIGNhc2UgIiR3aXRodmFsIiBpbgorKyAgbm8pCisrICAgIFdJVEhfTElCQ0FQPW5vCisrICAgIDs7CisrICAqKQorKyAgICBXSVRIX0xJQkNBUD15ZXMKKysgICAgOzsKKysgIGVzYWMgXQorKykKKysKKysKKyBkbmwgQ2hlY2sgZm9yIGNhcAorIGRubCBleHRyYSBhcmd1bWVudDogLS13aXRoLWNhcC1saWItZGlyPURJUgorIGNhcF9saWJfZGlyPQorQEAgLTk4MSwxNSArOTk4LDE3IEBAIEFDX0FSR19XSVRIKGNhcC1pbmNsdWRlLWRpciwKKyAgICAgICA7OworICAgZXNhY10pCisgCistc21hcnRfdHJ5X2Rpcj0iJGNhcF9saWJfZGlyIgorLUZSX1NNQVJUX0NIRUNLX0xJQihjYXAsIGNhcF9nZXRfcHJvYykKKy1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9jYXBfY2FwX2dldF9wcm9jIiAhPSAieHllcyI7IHRoZW4KKy0gIEFDX01TR19XQVJOKFtjYXAgbGlicmFyeSBub3QgZm91bmQsIGRlYnVnZ2VyIGNoZWNrcyB3aWxsIG5vdCBiZSBlbmFibGVkLiBVc2UgLS13aXRoLWNhcC1saWItZGlyPTxwYXRoPi5dKQorLWVsc2UKKy0gIEFDX0RFRklORShIQVZFX0xJQkNBUCwgMSwKKy0gICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2FwJyBsaWJyYXJ5ICgtbGNhcCkuXQorLSAgKQorLSAgSEFWRV9MSUJDQVA9MQorK2lmIHRlc3QgIngkV0lUSF9MSUJDQVAiID0geHllczsgdGhlbgorKyAgc21hcnRfdHJ5X2Rpcj0iJGNhcF9saWJfZGlyIgorKyAgRlJfU01BUlRfQ0hFQ0tfTElCKGNhcCwgY2FwX2dldF9wcm9jKQorKyAgaWYgdGVzdCAieCRhY19jdl9saWJfY2FwX2NhcF9nZXRfcHJvYyIgIT0gInh5ZXMiOyB0aGVuCisrICAgIEFDX01TR19XQVJOKFtjYXAgbGlicmFyeSBub3QgZm91bmQsIGRlYnVnZ2VyIGNoZWNrcyB3aWxsIG5vdCBiZSBlbmFibGVkLiBVc2UgLS13aXRoLWNhcC1saWItZGlyPTxwYXRoPi5dKQorKyAgZWxzZQorKyAgICBBQ19ERUZJTkUoSEFWRV9MSUJDQVAsIDEsCisrICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2FwJyBsaWJyYXJ5ICgtbGNhcCkuXQorKyAgICApCisrICAgIEhBVkVfTElCQ0FQPTEKKysgIGZpCisgZmkKKyAKKyBWTF9MSUJfUkVBRExJTkUKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hbGxvdy1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1jb25maWd1cmUuYWMtYWxsb3ctY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA0OTdhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1jb25maWd1cmUuYWMtYWxsb3ctY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGFsbG93IGNyb3NzLWNvbXBpbGF0aW9uCisKK1RoZSBjaGVja2luZyBPcGVuU1NMIGxpYnJhcnkgYW5kIGhlYWRlciB2ZXJzaW9uIGNvbnNpc3RlbmN5IHdpbGwKK2Fsd2F5cyBmYWlsIGluIGNyb3NzIGNvbXBpbGluZywgc2tpcCB0aGUgY2hlY2sgYW5kIGdpdmUgYSB3YXJuaW5nCitpbnN0ZWFkIGZvciBjcm9zcyBjb21waWxpbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9tb2R1bGVzL3JsbV9rcmI1L2NvbmZpZ3VyZS5hYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX2tyYjUvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX2tyYjUvY29uZmlndXJlLmFjCitpbmRleCBlYjQzNTM0Li4xMTNhMDc5IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX2tyYjUvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fa3JiNS9jb25maWd1cmUuYWMKK0BAIC0xMzcsNyArMTM3LDggQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorIAkJRlJfU01BUlRfQ0hFQ0tfTElCKGtyYjUsIGtyYjVfaXNfdGhyZWFkX3NhZmUpCisgCQlpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9rcmI1X2tyYjVfaXNfdGhyZWFkX3NhZmUiID09IHh5ZXM7IHRoZW4KKyAJCQlBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8a3JiNS5oPl1dLCBbW3JldHVybiBrcmI1X2lzX3RocmVhZF9zYWZlKCkgPyAwIDogMV1dKV0sCistCQkJCVtrcmI1dGhyZWFkc2FmZT0iLURLUkI1X0lTX1RIUkVBRF9TQUZFIl0sIFtBQ19NU0dfV0FSTihbW2xpYmtyYjUgaXMgbm90IHRocmVhZHNhZmVdXSldKQorKwkJCQlba3JiNXRocmVhZHNhZmU9Ii1ES1JCNV9JU19USFJFQURfU0FGRSJdLCBbQUNfTVNHX1dBUk4oW1tsaWJrcmI1IGlzIG5vdCB0aHJlYWRzYWZlXV0pXSwKKysJCQkJW0FDX01TR19XQVJOKGNyb3NzIGNvbXBpbGluZzogbm90IGNoZWNraW5nKV0pCisgCQlmaQorIAllbHNlCisgCQlrcmI1dGhyZWFkc2FmZT0iIgorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWVuYmxlLXVzZXItaW4tY29uZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1lbmJsZS11c2VyLWluLWNvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE2MmJmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1lbmJsZS11c2VyLWluLWNvbmYucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRW5hYmxlIGFuZCBjaGFuZ2UgdXNlciBhbmQgZ3JvdXAgb2YgZnJlZXJhZGl1cyBzZXJ2ZXIgdG8gcmFkaXVzZAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyByYWRkYi9yYWRpdXNkLmNvbmYuaW4gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcmFkZGIvcmFkaXVzZC5jb25mLmluIGIvcmFkZGIvcmFkaXVzZC5jb25mLmluCitpbmRleCBjNjJmNGZmLi4wYjRhODRlIDEwMDY0NAorLS0tIGEvcmFkZGIvcmFkaXVzZC5jb25mLmluCisrKysgYi9yYWRkYi9yYWRpdXNkLmNvbmYuaW4KK0BAIC00MzYsOCArNDM2LDggQEAgc2VjdXJpdHkgeworIAkjICBtZW1iZXIuICBUaGlzIGNhbiBhbGxvdyBmb3Igc29tZSBmaW5lci1ncmFpbmVkIGFjY2VzcworIAkjICBjb250cm9scy4KKyAJIworLSMJdXNlciA9IHJhZGl1cworLSMJZ3JvdXAgPSByYWRpdXMKKysJdXNlciA9IHJhZGl1c2QKKysJZ3JvdXAgPSByYWRpdXNkCisgCisgCSMgIENvcmUgZHVtcHMgYXJlIGEgYmFkIHRoaW5nLiAgVGhpcyBzaG91bGQgb25seSBiZSBzZXQgdG8KKyAJIyAgJ3llcycgaWYgeW91J3JlIGRlYnVnZ2luZyBhIHByb2JsZW0gd2l0aCB0aGUgc2VydmVyLgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtZml4LWVycm9yLWZvci1leHBhbnNpb24tb2YtbWFjcm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtZml4LWVycm9yLWZvci1leHBhbnNpb24tb2YtbWFjcm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYxYmZmMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtZXJyb3ItZm9yLWV4cGFuc2lvbi1vZi1tYWNyby5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIDViNmQ4YjE0ZjI2OTZmY2YxZGNhMTE5MjEyZjlkMGEwZmEwNGRlZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE4IEphbiAyMDE3IDE0OjU5OjM5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBlcnJvciBmb3IgZXhwYW5zaW9uIG9mIG1hY3JvIGluIHRocmVhZC5oCisKK1RoZSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24gaXMgbWlzc2luZyBpbiBleHBhbnNpb24gb2YgbWFjcm8KK3doaWNoIGNhdXNlIHRoZSBidWlsZCBlcnJvcjoKK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHNyYy9mcmVlcmFkaXVzLWRldmVsL2xpYnJhZGl1cy5oOjgwOjAsCit8ICAgICAgICAgICAgICAgICAgZnJvbSBzcmMvbGliL2xvZy5jOjI2OgorfCBzcmMvbGliL2xvZy5jOiBJbiBmdW5jdGlvbiAnX19mcl90aHJlYWRfbG9jYWxfZGVzdHJveV9mcl9zdHJlcnJvcl9idWZmZXInOgorfCBzcmMvbGliL2xvZy5jOjM3OjMxOiBlcnJvcjogJ2ZyX3N0cmVycm9yX2J1ZmZlcicgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCit8ICBmcl90aHJlYWRfbG9jYWxfc2V0dXAoY2hhciAqLCBmcl9zdHJlcnJvcl9idWZmZXIpIC8qIG1hY3JvICovCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisKK0FkZCB0aGUgbWlzc2luZyBkZWNsYXJhdGlvbiBpbiBtYWNyby4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9pbmNsdWRlL3RocmVhZHMuaCB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGhyZWFkcy5oIGIvc3JjL2luY2x1ZGUvdGhyZWFkcy5oCitpbmRleCBlMzZkODFkLi4yYmNiNmFhIDEwMDY0NAorLS0tIGEvc3JjL2luY2x1ZGUvdGhyZWFkcy5oCisrKysgYi9zcmMvaW5jbHVkZS90aHJlYWRzLmgKK0BAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBfdCBfX2ZyX3RocmVhZF9sb2NhbF9pbml0XyMjX24ocHRocmVhZF9kZXN0cnVjdG9yX3QgZnVuYylcCisgIyAgZGVmaW5lIGZyX3RocmVhZF9sb2NhbF9nZXQoX24pIF9uCisgI2VsaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfSCkKKyAjICBpbmNsdWRlIDxwdGhyZWFkLmg+CistIyAgZGVmaW5lIGZyX3RocmVhZF9sb2NhbF9zZXR1cChfdCwgX24pIFwKKysjICBkZWZpbmUgZnJfdGhyZWFkX2xvY2FsX3NldHVwKF90LCBfbikgc3RhdGljIF9fdGhyZWFkIF90IF9uO1wKKyBzdGF0aWMgcHRocmVhZF9rZXlfdCBfX2ZyX3RocmVhZF9sb2NhbF9rZXlfIyNfbjtcCisgc3RhdGljIHB0aHJlYWRfb25jZV90IF9fZnJfdGhyZWFkX2xvY2FsX29uY2VfIyNfbiA9IFBUSFJFQURfT05DRV9JTklUO1wKKyBzdGF0aWMgcHRocmVhZF9kZXN0cnVjdG9yX3QgX19mcl90aHJlYWRfbG9jYWxfZGVzdHJ1Y3Rvcl8jI19uID0gTlVMTDtcCitAQCAtMTAwLDE3ICsxMDAsMTcgQEAgc3RhdGljIHZvaWQgX19mcl90aHJlYWRfbG9jYWxfZGVzdHJveV8jI19uKFVOVVNFRCB2b2lkICp1bnVzZWQpXAorIHN0YXRpYyB2b2lkIF9fZnJfdGhyZWFkX2xvY2FsX2tleV9pbml0XyMjX24odm9pZClcCisge1wKKyAJKHZvaWQpIHB0aHJlYWRfa2V5X2NyZWF0ZSgmX19mcl90aHJlYWRfbG9jYWxfa2V5XyMjX24sIF9fZnJfdGhyZWFkX2xvY2FsX2Rlc3Ryb3lfIyNfbik7XAorLQkodm9pZCkgcHRocmVhZF9zZXRzcGVjaWZpYyhfX2ZyX3RocmVhZF9sb2NhbF9rZXlfIyNfbiwgJihfbikpO1wKKyB9XAorIHN0YXRpYyBfdCBfX2ZyX3RocmVhZF9sb2NhbF9pbml0XyMjX24ocHRocmVhZF9kZXN0cnVjdG9yX3QgZnVuYylcCisge1wKKyAJX19mcl90aHJlYWRfbG9jYWxfZGVzdHJ1Y3Rvcl8jI19uID0gZnVuYztcCisgCWlmIChfbikgcmV0dXJuIF9uOyBcCisgCSh2b2lkKSBwdGhyZWFkX29uY2UoJl9fZnJfdGhyZWFkX2xvY2FsX29uY2VfIyNfbiwgX19mcl90aHJlYWRfbG9jYWxfa2V5X2luaXRfIyNfbik7XAorKwkodm9pZCkgcHRocmVhZF9zZXRzcGVjaWZpYyhfX2ZyX3RocmVhZF9sb2NhbF9rZXlfIyNfbiwgJihfbikpO1wKKyAJcmV0dXJuIF9uO1wKKyB9CistIyAgZGVmaW5lIGZyX3RocmVhZF9sb2NhbF9pbml0KF9uLCBfZikJCQlfX2ZyX3RocmVhZF9sb2NhbF9pbml0XyMjX24oX2YpCistIyAgZGVmaW5lIGZyX3RocmVhZF9sb2NhbF9zZXQoX24sIF92KQkJCV9fZnJfdGhyZWFkX2xvY2FsX3NldF8jI19uKF92KQorLSMgIGRlZmluZSBmcl90aHJlYWRfbG9jYWxfZ2V0KF9uKQkJCV9fZnJfdGhyZWFkX2xvY2FsX2dldF8jI19uKCkKKysjICBkZWZpbmUgZnJfdGhyZWFkX2xvY2FsX2luaXQoX24sIF9mKQlfX2ZyX3RocmVhZF9sb2NhbF9pbml0XyMjX24oX2YpCisrIyAgZGVmaW5lIGZyX3RocmVhZF9sb2NhbF9zZXQoX24sIF92KSAoKGludCkhKChfbiA9IF92KSB8fCAxKSkKKysjICBkZWZpbmUgZnJfdGhyZWFkX2xvY2FsX2dldChfbikgX24KKyAjZW5kaWYKKyAjZW5kaWYKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtaXNzdWVzLXJlbGF0ZWQtdG8tbTQtaW5jbHVkZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWZpeC1pc3N1ZXMtcmVsYXRlZC10by1tNC1pbmNsdWRlLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI5YjJhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtaXNzdWVzLXJlbGF0ZWQtdG8tbTQtaW5jbHVkZS1wYXRoLnBhdGNoCkBAIC0wLDAgKzEsMjM2IEBACitGcm9tIGQ4ZTI1MWVmOTc4NjlhYjJjMWM4MmJkMzc0MDE2ZjQwMjA4Mzk5N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3JnZSBQZXJlaXJhIDxqcGVyZWlyYW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDE2OjUxOjA3IC0wMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeGluZyBpc3N1ZXMgcmVsYXRlZCB0byBtNCBpbmNsdWRlIHBhdGgKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCisKK1sxXTogaHR0cHM6Ly9naXRodWIuY29tL0ZyZWVSQURJVVMvZnJlZXJhZGl1cy1zZXJ2ZXIvcHVsbC8xNDI4CisKK1N1Ym1taXRlZCBieTogSm9yZ2UgUGVyZWlyYSA8anBlcmVpcmFuQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tb2R1bGVzL3JsbV9leGFtcGxlL2NvbmZpZy5oLmluICAgICAgICAgICAgICAgIHwgMzkgKystLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvbW9kdWxlcy9ybG1fcGFtL2NvbmZpZy5oLmluICAgICAgICAgICAgICAgICAgICB8ICAzICsrCisgc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAgfCAgMyArKworIHNyYy9tb2R1bGVzL3JsbV9wZXJsL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvbW9kdWxlcy9ybG1fcmFkdXRtcC9jb25maWcuaC5pbiAgICAgICAgICAgICAgICB8ICAzICsrCisgc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgfCAgOSArKy0tLQorIHNyYy9tb2R1bGVzL3JsbV9zbXNvdHAvY29uZmlnLmguaW4gICAgICAgICAgICAgICAgIHwgIDMgKysKKyAuLi4vcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlnLmguaW4gICAgICB8ICAzICsrCisgc3JjL21vZHVsZXMvcmxtX3VuaXgvY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAgfCAgNiArKysrCisgMTEgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fZXhhbXBsZS9jb25maWcuaC5pbiBiL3NyYy9tb2R1bGVzL3JsbV9leGFtcGxlL2NvbmZpZy5oLmluCitpbmRleCAyYTgxZWY1Li5mODBkZTljIDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX2V4YW1wbGUvY29uZmlnLmguaW4KKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9leGFtcGxlL2NvbmZpZy5oLmluCitAQCAtMSwzOCArMSw1IEBACisgLyogY29uZmlnLmguaW4uICBHZW5lcmF0ZWQgZnJvbSBjb25maWd1cmUuYWMgYnkgYXV0b2hlYWRlci4gICovCisgCistLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jdW5kZWYgSEFWRV9JTlRUWVBFU19ICistCistLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCistI3VuZGVmIEhBVkVfTUVNT1JZX0gKKy0KKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByaW50ZicgZnVuY3Rpb24uICovCistI3VuZGVmIEhBVkVfUFJJTlRGCistCistLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuICovCistI3VuZGVmIEhBVkVfU1RESU5UX0gKKy0KKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGlvLmg+IGhlYWRlciBmaWxlLiAqLworLSN1bmRlZiBIQVZFX1NURElPX0gKKy0KKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jdW5kZWYgSEFWRV9TVERMSUJfSAorLQorLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jdW5kZWYgSEFWRV9TVFJJTkdTX0gKKy0KKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jdW5kZWYgSEFWRV9TVFJJTkdfSAorLQorLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCistI3VuZGVmIEhBVkVfU1lTX1NUQVRfSAorLQorLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworLSN1bmRlZiBIQVZFX1NZU19UWVBFU19ICistCistLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCistI3VuZGVmIEhBVkVfVU5JU1REX0gKKy0KKyAvKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KKyAjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKKyAKK0BAIC00NSw4ICsxMiw4IEBACisgLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyAKKysvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworKyN1bmRlZiBQQUNLQUdFX1VSTAorKworIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorLQorLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLworLSN1bmRlZiBTVERDX0hFQURFUlMKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fbGRhcC9jb25maWd1cmUgYi9zcmMvbW9kdWxlcy9ybG1fbGRhcC9jb25maWd1cmUKK2luZGV4IGUwYzE1ZDkuLmNkZjk2ZDUgMTAwNzU1CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fbGRhcC9jb25maWd1cmUKKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZQorQEAgLTM5OTIsNyArMzk5Miw3IEBAIHNtYXJ0X3ByZWZpeD0KKyAkYXNfZWNobyAiI2RlZmluZSBXSVRIX1NBU0wgMSIgPj5jb25mZGVmcy5oCisgCisgCSAgICBTQVNMPXNhc2wuYworLSAgICAgICAgICBmaQorKwkgIGZpCisgCWZpCisgCisgCXRhcmdldG5hbWU9cmxtX2xkYXAKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fcGFtL2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX3BhbS9jb25maWcuaC5pbgoraW5kZXggMzJlZjZmZi4uMWFkMjBjNSAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9wYW0vY29uZmlnLmguaW4KKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9wYW0vY29uZmlnLmguaW4KK0BAIC00NSw2ICs0NSw5IEBACisgLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyAKKysvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworKyN1bmRlZiBQQUNLQUdFX1VSTAorKworIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorIAorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9wZXJsL2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlnLmguaW4KK2luZGV4IDk4OWVkNTMuLmY4MGRlOWMgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fcGVybC9jb25maWcuaC5pbgorKysrIGIvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlnLmguaW4KK0BAIC0xMiw1ICsxMiw4IEBACisgLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyAKKysvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworKyN1bmRlZiBQQUNLQUdFX1VSTAorKworIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9wZXJsL2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9wZXJsL2NvbmZpZ3VyZS5hYworaW5kZXggNDRjNWZjOS4uNmIyYTA0MyAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9wZXJsL2NvbmZpZ3VyZS5hYworKysrIGIvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlndXJlLmFjCitAQCAtMyw3ICszLDcgQEAgQUNfSU5JVChybG1fcGVybC5jKQorIEFDX1JFVklTSU9OKCRSZXZpc2lvbiQpCisgQUNfREVGVU4obW9kbmFtZSxbcmxtX3BlcmxdKQorIAorLW00X2luY2x1ZGUoW2F4X3dpdGhfcHJvZy5tNF0pCisrbTRfaW5jbHVkZShbbTQvYXhfd2l0aF9wcm9nLm00XSkKKyAKKyBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCUFDX1BST0dfQ0MKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fcmFkdXRtcC9jb25maWcuaC5pbiBiL3NyYy9tb2R1bGVzL3JsbV9yYWR1dG1wL2NvbmZpZy5oLmluCitpbmRleCA5YTg4M2NjLi43NTBiNDM0IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3JhZHV0bXAvY29uZmlnLmguaW4KKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9yYWR1dG1wL2NvbmZpZy5oLmluCitAQCAtNDIsNiArNDIsOSBAQAorIC8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyAjdW5kZWYgUEFDS0FHRV9UQVJOQU1FCisgCisrLyogRGVmaW5lIHRvIHRoZSBob21lIHBhZ2UgZm9yIHRoaXMgcGFja2FnZS4gKi8KKysjdW5kZWYgUEFDS0FHRV9VUkwKKysKKyAvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworICN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KKyAKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUgYi9zcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUKK2luZGV4IDE1ODY4YWIuLmM3MjhhZjIgMTAwNzU1CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUKKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZQorQEAgLTE4NzUsNiArMTg3NSw3IEBAIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKyAKKyAKKyAKKysKKyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICMgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY29tcGFyZV92ZXJzaW9uLmh0bWwKKyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZS5hYworaW5kZXggOTMwNjM4Mi4uZjFjODExOCAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZS5hYworKysrIGIvc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlLmFjCitAQCAtMywxNSArMywxNiBAQCBBQ19JTklUKHJsbV9ydWJ5LmMpCisgQUNfUkVWSVNJT04oJFJldmlzaW9uOiAxLjkgJCkKKyBBQ19ERUZVTihtb2RuYW1lLFtybG1fcnVieV0pCisgCistbTRfaW5jbHVkZShbYXhfd2l0aF9wcm9nLm00XSkKKyttNF9pbmNsdWRlKFttNC9heF93aXRoX3Byb2cubTRdKQorIAorIEFDX0RFRlVOKFtBWF9XSVRIX1JVQlldLFsKKyAgICAgQVhfV0lUSF9QUk9HKFtSVUJZXSxbcnVieV0sW25vdC1mb3VuZF0sWyR7UEFUSH06L3Vzci9iaW46L3Vzci9sb2NhbC9iaW5dKQorIF0pCisgCistbTRfaW5jbHVkZShbYXhfY29tcGFyZV92ZXJzaW9uLm00XSkKKy1tNF9pbmNsdWRlKFtheF9wcm9nX3J1YnlfdmVyc2lvbi5tNF0pCistbTRfaW5jbHVkZShbYXhfcnVieV9kZXZlbC5tNF0pCisrCisrbTRfaW5jbHVkZShbbTQvYXhfY29tcGFyZV92ZXJzaW9uLm00XSkKKyttNF9pbmNsdWRlKFttNC9heF9wcm9nX3J1YnlfdmVyc2lvbi5tNF0pCisrbTRfaW5jbHVkZShbbTQvYXhfcnVieV9kZXZlbC5tNF0pCisgCisgdGFyZ2V0bmFtZT1tb2RuYW1lCisgbW9kX2NmbGFncz0KK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fc21zb3RwL2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX3Ntc290cC9jb25maWcuaC5pbgoraW5kZXggNWZlYWY5MS4uOWU2OWY4NSAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9zbXNvdHAvY29uZmlnLmguaW4KKysrKyBiL3NyYy9tb2R1bGVzL3JsbV9zbXNvdHAvY29uZmlnLmguaW4KK0BAIC00Miw2ICs0Miw5IEBACisgLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyAKKysvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworKyN1bmRlZiBQQUNLQUdFX1VSTAorKworIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorIAorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX215c3FsL2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlnLmguaW4KK2luZGV4IGUwM2QxYTkuLjYyNjJjNDggMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWcuaC5pbgorKysrIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlnLmguaW4KK0BAIC0xOCw1ICsxOCw4IEBACisgLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyAKKysvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworKyN1bmRlZiBQQUNLQUdFX1VSTAorKworIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV91bml4L2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX3VuaXgvY29uZmlnLmguaW4KK2luZGV4IGRjYjlhYTIuLjcwYjQ2ODAgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fdW5peC9jb25maWcuaC5pbgorKysrIGIvc3JjL21vZHVsZXMvcmxtX3VuaXgvY29uZmlnLmguaW4KK0BAIC0xLDUgKzEsOCBAQAorIC8qIGNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLworIAorKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cHduYW0nIGZ1bmN0aW9uLiAqLworKyN1bmRlZiBIQVZFX0dFVFBXTkFNCisrCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRzcG5hbScgZnVuY3Rpb24uICovCisgI3VuZGVmIEhBVkVfR0VUU1BOQU0KKyAKK0BAIC01NCw2ICs1Nyw5IEBACisgLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyAKKysvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworKyN1bmRlZiBQQUNLQUdFX1VSTAorKworIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorIAorLS0gCisyLjMuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtZml4LXF1b3RpbmctZm9yLUJVSUxUX1dJVEgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtZml4LXF1b3RpbmctZm9yLUJVSUxUX1dJVEgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA5MjljNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtcXVvdGluZy1mb3ItQlVJTFRfV0lUSC5wYXRjaApAQCAtMCwwICsxLDU1IEBACitGaXggcXVvdGluZyBmb3IgQlVJTERfV0lUSAorCitUaGUgZXNjYXBlZCBxdW90ZXMgYXJlIHRvIG1ha2UgdGhlIC1EIHZhbHVlcyBwcm9kdWNlIHN0cmluZ3Mgd2hpY2gKK2NhbiBiZSB1c2VkIHRvIGRpc3BsYXkgdGhlc2UgdmFsdWVzLiBIb3dldmVyLCBpZiB0aGUgdmFsdWVzIGFyZSBtb3JlCit0aGFuIG9uZSB3b3JkLCB3aXRoIHNwYWNlcywgdGhleSBhbHNvIG5lZWQgc2hlbGwgcXVvdGluZyB0byBtYWtlIHRoZW0KK2ludG8gc2luZ2xlIHdvcmRzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL21haW4vbGliZnJlZXJhZGl1cy1zZXJ2ZXIubWsgICAgfCAyICstCisgc3JjL21haW4vdW5pdHRlc3QubWsgICAgICAgICAgICAgICAgfCAyICstCisgc3JjL21vZHVsZXMvcmxtX2VhcC9yYWRlYXBjbGllbnQubWsgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFpbi9saWJmcmVlcmFkaXVzLXNlcnZlci5tayBiL3NyYy9tYWluL2xpYmZyZWVyYWRpdXMtc2VydmVyLm1rCitpbmRleCA0NDk1ZjcyLi4wN2MyOGYxIDEwMDY0NAorLS0tIGEvc3JjL21haW4vbGliZnJlZXJhZGl1cy1zZXJ2ZXIubWsKKysrKyBiL3NyYy9tYWluL2xpYmZyZWVyYWRpdXMtc2VydmVyLm1rCitAQCAtMTgsNSArMTgsNSBAQCBTT1VSQ0VTCTo9CWNvbmZmaWxlLmMgXAorIFRHVF9MRExJQlMgICAgICA6PSAkKE9QRU5TU0xfTElCUykKKyAKKyBpZm5lcSAoJChNQUtFQ01ER09BTFMpLHNjYW4pCistU1JDX0NGTEFHUwkrPSAtREJVSUxUX1dJVEhfQ1BQRkxBR1M9XCIkKENQUEZMQUdTKVwiIC1EQlVJTFRfV0lUSF9DRkxBR1M9XCIkKENGTEFHUylcIiAtREJVSUxUX1dJVEhfTERGTEFHUz1cIiQoTERGTEFHUylcIiAtREJVSUxUX1dJVEhfTElCUz1cIiQoTElCUylcIgorK1NSQ19DRkxBR1MJKz0gLURCVUlMVF9XSVRIX0NQUEZMQUdTPSJcIiQoQ1BQRkxBR1MpXCIiIC1EQlVJTFRfV0lUSF9DRkxBR1M9IlwiJChDRkxBR1MpXCIiIC1EQlVJTFRfV0lUSF9MREZMQUdTPSJcIiQoTERGTEFHUylcIiIgLURCVUlMVF9XSVRIX0xJQlM9IlwiJChMSUJTKVwiIgorIGVuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL21haW4vdW5pdHRlc3QubWsgYi9zcmMvbWFpbi91bml0dGVzdC5taworaW5kZXggMDlmMzkzOC4uZWQzMzk1MiAxMDA2NDQKKy0tLSBhL3NyYy9tYWluL3VuaXR0ZXN0Lm1rCisrKysgYi9zcmMvbWFpbi91bml0dGVzdC5taworQEAgLTIxLDUgKzIxLDUgQEAgVEdUX1BSRVJFUVMJKz0gbGliZnJlZXJhZGl1cy1lYXAuYQorIGVuZGlmCisgCisgaWZuZXEgKCQoTUFLRUNNREdPQUxTKSxzY2FuKQorLVNSQ19DRkxBR1MJKz0gLURCVUlMVF9XSVRIX0NQUEZMQUdTPVwiJChDUFBGTEFHUylcIiAtREJVSUxUX1dJVEhfQ0ZMQUdTPVwiJChDRkxBR1MpXCIgLURCVUlMVF9XSVRIX0xERkxBR1M9XCIkKExERkxBR1MpXCIgLURCVUlMVF9XSVRIX0xJQlM9XCIkKExJQlMpXCIKKytTUkNfQ0ZMQUdTCSs9IC1EQlVJTFRfV0lUSF9DUFBGTEFHUz0iXCIkKENQUEZMQUdTKVwiIiAtREJVSUxUX1dJVEhfQ0ZMQUdTPSJcIiQoQ0ZMQUdTKVwiIiAtREJVSUxUX1dJVEhfTERGTEFHUz0iXCIkKExERkxBR1MpXCIiIC1EQlVJTFRfV0lUSF9MSUJTPSJcIiQoTElCUylcIiIKKyBlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9lYXAvcmFkZWFwY2xpZW50Lm1rIGIvc3JjL21vZHVsZXMvcmxtX2VhcC9yYWRlYXBjbGllbnQubWsKK2luZGV4IDYwNjhmNTQuLjdkM2M1NTYgMTAwNjQ0CistLS0gYS9zcmMvbW9kdWxlcy9ybG1fZWFwL3JhZGVhcGNsaWVudC5taworKysrIGIvc3JjL21vZHVsZXMvcmxtX2VhcC9yYWRlYXBjbGllbnQubWsKK0BAIC0yMyw3ICsyMyw3IEBAIFNSQ19DRkxBR1MgKz0gLURXSVRIX0VBUENMSUVOVAorIFNSQ19JTkNESVJTICA6PSAke3RvcF9zcmNkaXJ9L3NyYy9tb2R1bGVzL3JsbV9lYXAvbGliZWFwCisgCisgaWZuZXEgKCQoTUFLRUNNREdPQUxTKSxzY2FuKQorLVNSQ19DRkxBR1MJKz0gLURCVUlMVF9XSVRIX0NQUEZMQUdTPVwiJChDUFBGTEFHUylcIiAtREJVSUxUX1dJVEhfQ0ZMQUdTPVwiJChDRkxBR1MpXCIgLURCVUlMVF9XSVRIX0xERkxBR1M9XCIkKExERkxBR1MpXCIgLURCVUlMVF9XSVRIX0xJQlM9XCIkKExJQlMpXCIKKytTUkNfQ0ZMQUdTCSs9IC1EQlVJTFRfV0lUSF9DUFBGTEFHUz0iXCIkKENQUEZMQUdTKVwiIiAtREJVSUxUX1dJVEhfQ0ZMQUdTPSJcIiQoQ0ZMQUdTKVwiIiAtREJVSUxUX1dJVEhfTERGTEFHUz0iXCIkKExERkxBR1MpXCIiIC1EQlVJTFRfV0lUSF9MSUJTPSJcIiQoTElCUylcIiIKKyBlbmRpZgorIAorIGVuZGlmCistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGViNjFmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1saWJ0b29sLWRldGVjdGlvbi5wYXRjaApAQCAtMCwwICsxLDg5IEBACitGcm9tIDU2ZWY0MzRlNDU0YmNjODJjMTYyYTgzZDliY2IwNzZkNGZjNzJiN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA5IEphbiAyMDE0IDE0OjMwOjI2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBsaWJ0b29sIGRldGVjdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKKworVXNlIExUX0lOSVQgaW5zdGVhZCBvZiB0aGUgZGVwcmVjYXRlZCBBQ19QUk9HX0xJQlRPT0wgdG8gZGV0ZWN0IGxpYnRvb2wsIHNvIGl0CitjYW4gd29yayB3aXRoIG91ciBsaWJ0b29saXplIGFuZCBsaWJ0b29sLgorCitTaW1wbGlmeSB0aGUgZGV0ZWN0aW9uIG9mIGx0ZGwuIEl0IHdpbGwgZmluZCB0aGUgbHRkbCBmcm9tIHRoZSBzeXNyb290OyB0aGUKK3N3aXRjaCAtLXdpdGgtc3lzdGVtLWxpYmx0ZGwgaXMgbm8gbG9uZ2VyIG5lZWRlZC4gVGhlIGNvZGUgaXMgY29waWVkIGZyb20KK3B1bHNlYXVkaW8gY29uZmlndXJlLmFjLCB0b2dldGhlciB3aXRoIHRoZSBjb21tZW50IHBhcmFncmFwaC4KKworQWxzbyBwYXRjaCBhdXRvZ2VuLnNoIHNvIGl0IHVzZXMgYXV0b3JlY29uZiwgd2hpY2ggaGFuZGxlcyBsaWJ0b29saXplIGJldHRlci4KKworU2lnbmVkLW9mZi1ieTogSmVzc2UgWmhhbmcgPHNlbi56aGFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGF1dG9nZW4uc2ggICB8ICA1ICstLS0tCisgY29uZmlndXJlLmFjIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKK2luZGV4IDM0MTg2NzMuLmU0MmMzZDUgMTAwNzU1CistLS0gYS9hdXRvZ2VuLnNoCisrKysgYi9hdXRvZ2VuLnNoCitAQCAtNSwxMCArNSw3IEBAIHBhcmVudGRpcj1gZGlybmFtZSAkMGAKKyBjZCAkcGFyZW50ZGlyCisgcGFyZW50ZGlyPWBwd2RgCisgCistbGlidG9vbGl6ZSAtZiAtYworLSNhY2xvY2FsCistYXV0b2hlYWRlcgorLWF1dG9jb25mCisrYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZQorIAorIG15c3ViZGlycz0iJG15c3ViZGlycyBgZmluZCBzcmMvbW9kdWxlcy8gLW5hbWUgY29uZmlndXJlIC1wcmludCB8IHNlZCAncyUvY29uZmlndXJlJSUnYCIKKyBteXN1YmRpcnM9YGVjaG8gJG15c3ViZGlyc2AKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGU3M2U0YWQuLjA2NmQzZDcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIwNSw2ICsyMDUsNDIgQEAgZG5sICMgIFNlZSBpZiB3ZSBoYXZlIEdpdC4KKyBkbmwgIworIEFDX0NIRUNLX1BST0coR0lULCBnaXQsIHllcywgbm8pCisgCisrIyMjIyBsaWJ0b29sIHN0dWZmICMjIyMKKysKKytkbmwgc2V0IHRoaXMgc2hpdCBzbyBpdCBkb2Vzbid0IGZvcmNlIENGTEFHUy4uLgorK0xUQ0ZMQUdTPSIgIgorKworK0xUX1BSRVJFUSgyLjIpCisrTFRfSU5JVChbZGxvcGVuIGRpc2FibGUtc3RhdGljXSkKKysKKytkbmwgVW5mb3J0dW5hdGVseSwgZXZlbiB1cCB0byBsaWJ0b29sIDIuMi42YSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdworK2RubCBleGFjdGx5IHdoaWNoIHZlcnNpb24gb2YgbGlibHRkbCBpcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0sIHNvIHdlCisrZG5sIGp1c3QgYXNzdW1lIHRoYXQgaXQncyBhIHdvcmtpbmcgdmVyc2lvbiBhcyBsb25nIGFzIHdlIGhhdmUgdGhlCisrZG5sIGxpYnJhcnkgYW5kIHRoZSBoZWFkZXIgZmlsZXMuCisrZG5sCisrZG5sIEFzIGFuIGV4dHJhIHNhZmV0eSBkZXZpY2UsIGNoZWNrIGZvciBsdF9kbGFkdmlzZV9pbml0KCkgd2hpY2ggaXMKKytkbmwgb25seSBpbXBsZW1lbnRlZCBpbiBsaWJ0b29sIDIueCwgYW5kIHJlZmluZSBhcyB3ZSBnbyBpZiB3ZSBoYXZlCisrZG5sIHJlZmluZWQgcmVxdWlyZW1lbnRzLgorK2RubAorK2RubCBDaGVjayB0aGUgaGVhZGVyIGZpbGVzIGZpcnN0IHNpbmNlIHRoZSBzeXN0ZW0gbWF5IGhhdmUgYQorK2RubCBsaWJsdGRsLnNvIGZvciBydW50aW1lLCBidXQgbm8gaGVhZGVycywgYW5kIHdlIHdhbnQgdG8gYmFpbCBvdXQgYXMKKytkbmwgc29vbiBhcyBwb3NzaWJsZS4KKytkbmwKKytkbmwgV2UgZG9uJ3QgbmVlZCBhbnkgc3BlY2lhbCB2YXJpYWJsZSBmb3IgdGhpcyB0aG91Z2gsIHNpbmNlIHRoZSB1c2VyCisrZG5sIGNhbiBnaXZlIHRoZSBwcm9wZXIgcGxhY2UgdG8gZmluZCBsaWJsdGRsIHRocm91Z2ggdGhlIHN0YW5kYXJkCisrZG5sIHZhcmlhYmxlcyBsaWtlIExERkxBR1MgYW5kIENQUEZMQUdTLgorKworK0FDX0NIRUNLX0hFQURFUihbbHRkbC5oXSwKKysgICAgW0FDX0NIRUNLX0xJQihbbHRkbF0sIFtsdF9kbGFkdmlzZV9pbml0XSwgW0xJQkxUREw9LWxsdGRsXSwgW0xJQkxUREw9XSldLAorKyAgICBbTElCTFRETD1dKQorKworK0FTX0lGKFt0ZXN0ICJ4JExJQkxUREwiID0gIngiXSwKKysgICAgW0FDX01TR19FUlJPUihbVW5hYmxlIHRvIGZpbmQgbGlibHRkbCB2ZXJzaW9uIDIuIE1ha2VzIHN1cmUgeW91IGhhdmUgbGlidG9vbCAyLjIgb3IgbGF0ZXIgaW5zdGFsbGVkLl0pXSkKKytBQ19TVUJTVChbTElCTFRETF0pCisrTFRETF9TVUJESVJTPQorK0lOQ0xUREw9LURXSVRIX1NZU1RFTV9MVERMCisrQUNfU1VCU1QoTFRETF9TVUJESVJTKQorKworIGRubCBQdXQgdGhpcyBpbiBsYXRlciwgd2hlbiBhbGwgZGlzdHJpYnV0ZWQgbW9kdWxlcyB1c2UgYXV0b2NvbmYuCisgZG5sIEFDX0FSR19XSVRIKGRpc2FibGVtb2R1bGVmb28sCisgZG5sIFsgIC0td2l0aG91dC1ybG1fZm9vICAgICAgICAgRGlzYWJsZXMgbW9kdWxlIGNvbXBpbGF0aW9uLiAgTW9kdWxlIGxpc3Q6XQorLS0gCisxLjguMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtbGlidG9vbC1kby1ub3QtdXNlLWpsaWJ0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWxpYnRvb2wtZG8tbm90LXVzZS1qbGlidG9vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTU0NTg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWxpYnRvb2wtZG8tbm90LXVzZS1qbGlidG9vbC5wYXRjaApAQCAtMCwwICsxLDE2MCBAQAorRnJvbSAxNmJmODk5NDQ3ZmMxNTI0ZmZjM2M3OWUxZDM1MzgwZTUyODVhNTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgNyBKYW4gMjAxNiAyMjozNzozMCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsaWJ0b29sOiBkbyBub3QgdXNlIGpsaWJ0b29sCisKK2psaWJ0b29sIGlzIGhhcmRjb2RlZCB0byBiZSB1c2VkIGJ1dCB3ZSBuZWVkIHRvIHVzZQorb3VyIGxpYnRvb2wsIHNvIGZpeCB0aGUgbWFrZmlsZXMgdG8gbWFrZSBpdCBjb21wYXRpYmxlCit3aXRoIG91ciBsaWJ0b29sLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZS5pbmMuaW4gICAgICAgIHwgIDQgKystLQorIHNjcmlwdHMvYm9pbGVyLm1rICB8ICAyICsrCisgc2NyaXB0cy9pbnN0YWxsLm1rIHwgMTQgKysrKysrKy0tLS0tLS0KKyBzY3JpcHRzL2xpYnRvb2wubWsgfCAyMiArKysrKysrKysrKysrKysrLS0tLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2UuaW5jLmluIGIvTWFrZS5pbmMuaW4KK2luZGV4IDdhNzc2MjUuLmZkOGFhM2UgMTAwNjQ0CistLS0gYS9NYWtlLmluYy5pbgorKysrIGIvTWFrZS5pbmMuaW4KK0BAIC01Nyw3ICs1Nyw3IEBAIENQUEZMQUdTCT0gQENQUEZMQUdTQAorIExJQlBSRUZJWAk9IEBMSUJQUkVGSVhACisgRVhFRVhUCQk9IEBFWEVFWFRACisgCistTElCVE9PTAkJPSBKTElCVE9PTAorK0xJQlRPT0wJCT0gQExJQlRPT0xACisgQUNMT0NBTAkJPSBAQUNMT0NBTEAKKyBBVVRPQ09ORgk9IEBBVVRPQ09ORkAKKyBBVVRPSEVBREVSCT0gQEFVVE9IRUFERVJACitAQCAtMTYzLDcgKzE2Myw3IEBAIEFOQUxZWkUuYyAgICAgICA6PSBAY2xhbmdfcGF0aEAKKyAjCisgaWZlcSAiJChVU0VfU0hBUkVEX0xJQlMpIiAieWVzIgorIAlURVNUQklORElSID0gLi8kKEJVSUxEX0RJUikvYmluL2xvY2FsCistCVRFU1RCSU4gICAgPSAgRlJfTElCUkFSWV9QQVRIPS4vYnVpbGQvbGliLy5saWJzICQoSkxJQlRPT0wpIC0tcXVpZXQgLS1tb2RlPWV4ZWN1dGUgJChURVNUQklORElSKQorKwlURVNUQklOICAgID0gIEZSX0xJQlJBUllfUEFUSD0uL2J1aWxkL2xpYi8ubGlicyAkKExJQlRPT0wpIC0tcXVpZXQgLS1tb2RlPWV4ZWN1dGUgJChURVNUQklORElSKQorIGVsc2UKKyAJVEVTVEJJTkRJUiA9IC4vJChCVUlMRF9ESVIpL2JpbgorIAlURVNUQklOICAgID0gLi8kKEJVSUxEX0RJUikvYmluCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9ib2lsZXIubWsgYi9zY3JpcHRzL2JvaWxlci5taworaW5kZXggYmNjZWM1ZS4uOTI2YTEzZSAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvYm9pbGVyLm1rCisrKysgYi9zY3JpcHRzL2JvaWxlci5taworQEAgLTI2Niw2ICsyNjYsNyBAQCBkZWZpbmUgQ09NUElMRV9DX0NNRFMKKyAJJChRKSQoRUNITykgQ0MgJDwKKyAJJChRKSQoc3RyaXAgJHtDT01QSUxFLmN9IC1vICRAIC1jIC1NRCAke0NQUEZMQUdTfSAke0NGTEFHU30gJHtTUkNfQ0ZMQUdTfSAke0lOQ0RJUlN9IFwKKyAJICAgICQoYWRkcHJlZml4IC1JLCAke1NSQ19JTkNESVJTfSkgJHtTUkNfREVGU30gJHtERUZTfSAkPCkKKysJJHtRfW12ICQoZGlyICRAKS8ubGlicy8kKG5vdGRpciAkKi5kKSAke0JVSUxEX0RJUn0vb2Jqcy8kKi5kCisgZW5kZWYKKyBlbHNlCisgIworQEAgLTI4MSw2ICsyODIsNyBAQCBkZWZpbmUgQ09NUElMRV9DX0NNRFMKKyAJJChRKWNwcGNoZWNrIC0tZW5hYmxlPXN0eWxlIC1xICR7Q0hFQ0tGTEFHU30gJChmaWx0ZXIgLWlzeXN0ZW0lLCR7U1JDX0NGTEFHU30pIFwKKyAJICAgICAkKGZpbHRlciAtSSUsJHtTUkNfQ0ZMQUdTfSkgJChmaWx0ZXIgLUQlLCR7U1JDX0NGTEFHU30pICR7SU5DRElSU30gXAorIAkgICAgICQoYWRkcHJlZml4IC1JLCR7U1JDX0lOQ0RJUlN9KSAke1NSQ19ERUZTfSAke0RFRlN9IC0tc3VwcHJlc3M9dmFyaWFibGVTY29wZSAtLXN1cHByZXNzPWludmFsaWRzY2FuZiAkPAorKwkke1F9bXYgJChkaXIgJEApLy5saWJzLyQobm90ZGlyICQqLmQpICR7QlVJTERfRElSfS9vYmpzLyQqLmQKKyBlbmRlZgorIGVuZGlmCisgCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9pbnN0YWxsLm1rIGIvc2NyaXB0cy9pbnN0YWxsLm1rCitpbmRleCA5MTY0MTE1Li5lMzhjMWVkIDEwMDY0NAorLS0tIGEvc2NyaXB0cy9pbnN0YWxsLm1rCisrKysgYi9zY3JpcHRzL2luc3RhbGwubWsKK0BAIC00Niw3ICs0Niw3IEBAIGRlZmluZSBBRERfSU5TVEFMTF9SVUxFLmV4ZQorICAgICBpbnN0YWxsOiAkJHskezF9X0lOU1RBTExESVJ9LyQobm90ZGlyICR7MX0pCisgCisgICAgICMgSW5zdGFsbCBleGVjdXRhYmxlICR7MX0KKy0gICAgJCR7JHsxfV9JTlNUQUxMRElSfS8kKG5vdGRpciAkezF9KTogJHtKTElCVE9PTH0gJCR7JHsxfV9CVUlMRH0vJHsxfSB8ICQkeyR7MX1fSU5TVEFMTERJUn0KKysgICAgJCR7JHsxfV9JTlNUQUxMRElSfS8kKG5vdGRpciAkezF9KTogJHtMSUJUT09MfSAkJHskezF9X0JVSUxEfS8kezF9IHwgJCR7JHsxfV9JTlNUQUxMRElSfQorIAlAJChFQ0hPKSBJTlNUQUxMICR7MX0KKyAJJChRKSQke1BST0dSQU1fSU5TVEFMTH0gLWMgLW0gNzU1ICQke0JVSUxEX0RJUn0vYmluLyR7MX0gJCR7JHsxfV9JTlNUQUxMRElSfS8KKyAJJChRKSQkeyR7MX1fUE9TVElOU1RBTEx9CitAQCAtNjUsNyArNjUsNyBAQCBkZWZpbmUgQUREX0lOU1RBTExfUlVMRS5hCisgICAgIGluc3RhbGw6ICQkeyR7MX1fSU5TVEFMTERJUn0vJChub3RkaXIgJHsxfSkKKyAKKyAgICAgIyBJbnN0YWxsIHN0YXRpYyBsaWJyYXJ5ICR7MX0KKy0gICAgJCR7JHsxfV9JTlNUQUxMRElSfS8kKG5vdGRpciAkezF9KTogJHtKTElCVE9PTH0gJHsxfSB8ICQkeyR7MX1fSU5TVEFMTERJUn0KKysgICAgJCR7JHsxfV9JTlNUQUxMRElSfS8kKG5vdGRpciAkezF9KTogJHtMSUJUT09MfSAkezF9IHwgJCR7JHsxfV9JTlNUQUxMRElSfQorIAlAJChFQ0hPKSBJTlNUQUxMICR7MX0KKyAJJChRKSQke1BST0dSQU1fSU5TVEFMTH0gLWMgLW0gNzU1ICQke0JVSUxEX0RJUn0vbGliLyR7MX0gJCR7JHsxfV9JTlNUQUxMRElSfS8KKyAJJChRKSQkeyR7MX1fUE9TVElOU1RBTEx9CitAQCAtODcsOSArODcsOSBAQCBkZWZpbmUgQUREX0lOU1RBTExfUlVMRS5sYQorICAgICBpbnN0YWxsOiAkJHskezF9X0lOU1RBTExESVJ9LyQobm90ZGlyICR7MX0pCisgCisgICAgICMgSW5zdGFsbCBsaWJ0b29sIGxpYnJhcnkgJHsxfQorLSAgICAkJHskezF9X0lOU1RBTExESVJ9LyQobm90ZGlyICR7MX0pOiAke0pMSUJUT09MfSAkJHskezF9X0JVSUxEfS8kezF9IHwgJCR7JHsxfV9JTlNUQUxMRElSfQorKyAgICAkJHskezF9X0lOU1RBTExESVJ9LyQobm90ZGlyICR7MX0pOiAke0xJQlRPT0x9ICQkeyR7MX1fQlVJTER9LyR7MX0gfCAkJHskezF9X0lOU1RBTExESVJ9CisgCUAkKEVDSE8pIElOU1RBTEwgJHsxfQorLQkkKFEpJCR7UFJPR1JBTV9JTlNUQUxMfSAtYyAtbSA3NTUgJCR7TE9DQUxfRkxBR1NfTUlOfSAkJHtCVUlMRF9ESVJ9L2xpYi8kezF9ICQkeyR7MX1fSU5TVEFMTERJUn0vCisrCSQoUSkkJHtQUk9HUkFNX0lOU1RBTEx9IC1jIC1tIDc1NSAkJHtCVUlMRF9ESVJ9L2xpYi8kezF9ICQkeyR7MX1fSU5TVEFMTERJUn0vCisgCSQoUSkkJHskezF9X1BPU1RJTlNUQUxMfQorIAorIGVuZGVmCitAQCAtMTA3LDcgKzEwNyw3IEBAIGRlZmluZSBBRERfSU5TVEFMTF9SVUxFLm1hbgorICAgICBpbnN0YWxsOiAkezJ9LyQobm90ZGlyICR7MX0pCisgCisgICAgICMgSW5zdGFsbCBtYW51YWwgcGFnZSAkezF9CistICAgICR7Mn0vJChub3RkaXIgJHsxfSk6ICR7SkxJQlRPT0x9ICR7MX0gfCAkezJ9CisrICAgICR7Mn0vJChub3RkaXIgJHsxfSk6ICR7TElCVE9PTH0gJHsxfSB8ICR7Mn0KKyAJQCQoRUNITykgSU5TVEFMTCAkKG5vdGRpciAkezF9KQorIAkkKFEpJCR7UFJPR1JBTV9JTlNUQUxMfSAtYyAtbSA2NDQgJHsxfSAkezJ9LworIAorQEAgLTEyMiw5ICsxMjIsOSBAQCBlbmRlZgorIGRlZmluZSBBRERfSU5TVEFMTF9SVUxFLmRpcgorICAgICAjIEluc3RhbGwgZGlyZWN0b3J5CisgICAgIC5QSE9OWTogJHsxfQorLSAgICAkezF9OiAke0pMSUJUT09MfQorKyAgICAkezF9OiAke0xJQlRPT0x9CisgCUAkKEVDSE8pIElOU1RBTEwgLWQgLW0gNzU1ICR7MX0KKy0JJChRKSQke1BST0dSQU1fSU5TVEFMTH0gLWQgLW0gNzU1ICR7MX0KKysJJChRKSQke0lOU1RBTEx9IC1kIC1tIDc1NSAkezF9CisgZW5kZWYKKyAKKyAKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2xpYnRvb2wubWsgYi9zY3JpcHRzL2xpYnRvb2wubWsKK2luZGV4IDU3OTE1ZTEuLjJjYjJmN2QgMTAwNjQ0CistLS0gYS9zY3JpcHRzL2xpYnRvb2wubWsKKysrKyBiL3NjcmlwdHMvbGlidG9vbC5taworQEAgLTU1LDcgKzU1LDkgQEAgaWZlcSAiJHtMSUJUT09MfSIgIkpMSUJUT09MIgorICAgICAjIFRlbGwgR05VIE1ha2UgdG8gdXNlIHRoaXMgdmFsdWUsIHJhdGhlciB0aGFuIGFueXRoaW5nIHNwZWNpZmllZAorICAgICAjIG9uIHRoZSBjb21tYW5kIGxpbmUuCisgICAgIG92ZXJyaWRlIExJQlRPT0wgOj0gJHtKTElCVE9PTH0KKy1lbmRpZiAgICAjIGVsc2Ugd2UncmUgbm90IHVzaW5nIGpsaWJ0b29sCisrZWxzZSAgICAjIGVsc2Ugd2UncmUgbm90IHVzaW5nIGpsaWJ0b29sCisrICAgIGFsbCBpbnN0YWxsOiAke0xJQlRPT0x9CisrZW5kaWYKKyAKKyAjIFdoZW4gdXNpbmcgbGlidG9vbCwgaXQgcHJvZHVjZXMgYSAnLmxpYnMnIGRpcmVjdG9yeS4gIEVuc3VyZSB0aGF0IGl0CisgIyBpcyByZW1vdmVkIG9uICJtYWtlIGNsZWFuIiwgdG9vLgorQEAgLTY5LDExICs3MSwxOSBAQCBjbGVhbjogLmxpYnNfY2xlYW4KKyAjIFJlLWRlZmluZSBjb21waWxlcnMgYW5kIGxpbmtlcnMKKyAjCisgT0JKX0VYVCA9IGxvCistQ09NUElMRS5jID0gJHtMSUJUT09MfSAtLXNpbGVudCAtLW1vZGU9Y29tcGlsZSAke0NDfQorLUNPTVBJTEUuY3h4ID0gJHtMSUJUT09MfSAtLW1vZGU9Y29tcGlsZSAke0NYWH0KKy1MSU5LLmMgPSAke0xJQlRPT0x9IC0tc2lsZW50IC0tbW9kZT1saW5rICR7Q0N9CistTElOSy5jeHggPSAke0xJQlRPT0x9IC0tbW9kZT1saW5rICR7Q1hYfQorLVBST0dSQU1fSU5TVEFMTCA9ICR7TElCVE9PTH0gLS1zaWxlbnQgLS1tb2RlPWluc3RhbGwgJHtJTlNUQUxMfQorK2lmZXEgIiR7TElCVE9PTH0iICJKTElCVE9PTCIKKysgICAgQ09NUElMRS5jID0gJHtMSUJUT09MfSAtLXNpbGVudCAtLW1vZGU9Y29tcGlsZSAke0NDfQorKyAgICBDT01QSUxFLmN4eCA9ICR7TElCVE9PTH0gLS1tb2RlPWNvbXBpbGUgJHtDWFh9CisrICAgIExJTksuYyA9ICR7TElCVE9PTH0gLS1zaWxlbnQgLS1tb2RlPWxpbmsgJHtDQ30KKysgICAgTElOSy5jeHggPSAke0xJQlRPT0x9IC0tbW9kZT1saW5rICR7Q1hYfQorKyAgICBQUk9HUkFNX0lOU1RBTEwgPSAke0xJQlRPT0x9IC0tc2lsZW50IC0tbW9kZT1pbnN0YWxsICR7SU5TVEFMTH0KKytlbHNlCisrICAgIENPTVBJTEUuYyA9ICR7TElCVE9PTH0gLS1tb2RlPWNvbXBpbGUgLS10YWc9Q0MgJHtDQ30KKysgICAgQ09NUElMRS5jeHggPSAke0xJQlRPT0x9IC0tbW9kZT1jb21waWxlIC0tdGFnPUNDICR7Q1hYfQorKyAgICBMSU5LLmMgPSAke0xJQlRPT0x9IC0tbW9kZT1saW5rIC0tdGFnPUNDICR7Q0N9IC1tb2R1bGUgLWV4cG9ydC1keW5hbWljCisrICAgIExJTksuY3h4ID0gJHtMSUJUT09MfSAtLW1vZGU9bGluayAtLXRhZz1DQyAke0NYWH0gLW1vZHVsZSAtZXhwb3J0LWR5bmFtaWMKKysgICAgUFJPR1JBTV9JTlNUQUxMID0gJHtMSUJUT09MfSAtLW1vZGU9aW5zdGFsbCAke0lOU1RBTEx9CisrZW5kaWYKKyAKKyAKKyAjIExJQlRPT0xfRU5ESU5HUyAtIEdpdmVuIGEgbGlicmFyeSBlbmRpbmcgaW4gIi5hIiBvciAiLnNvIiwgcmVwbGFjZSB0aGF0CistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtcmxtX3B5dGhvbi1hZGQtUFlfSU5DX0RJUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1ybG1fcHl0aG9uLWFkZC1QWV9JTkNfRElSLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NTk0MGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtcmxtX3B5dGhvbi1hZGQtUFlfSU5DX0RJUi5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGEwYmY2NWUwNGQyYmJkMzI3MWNhYjk0YmQ1YWM5M2Y4ZTg3N2JmYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNyBKYW4gMjAxNiAwNTowNzoxOSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBybG1fcHl0aG9uOiBhZGQgUFlfSU5DX0RJUiBpbiBzZWFyY2ggZGlyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitjb25maWd1cmUgb3B0aW9uIC0td2l0aC1ybG0tcHl0aG9uLWluY2x1ZGUtZGlyIGlzIHVzZWQgdG8gc2V0CitQWV9JTkNfRElSIHdoaWNoIGlzIG5ldmVyIHVzZWQgYW5kIGl0IGZhaWxzIHRvIGZpbmQgUHl0aG9uLmgsCitzbyBhZGQgaXQgaW50byBzZWFyY2ggZGlyIHRvIGZpeCBpdC4KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9tb2R1bGVzL3JsbV9weXRob24vY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3B5dGhvbi9jb25maWd1cmUuYWMgYi9zcmMvbW9kdWxlcy9ybG1fcHl0aG9uL2NvbmZpZ3VyZS5hYworaW5kZXggODMxYTMzYS4uYzM3OTJkOCAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL3JsbV9weXRob24vY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fcHl0aG9uL2NvbmZpZ3VyZS5hYworQEAgLTkzLDcgKzkzLDcgQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgorIAorIAkJb2xkX0NGTEFHUz0kQ0ZMQUdTCisgCQlDRkxBR1M9IiRDRkxBR1MgJFBZX0NGTEFHUyIKKy0JCXNtYXJ0X3RyeV9kaXI9IiRQWV9QUkVGSVgvaW5jbHVkZS9weXRob24kUFlfU1lTX1ZFUlNJT04iCisrCQlzbWFydF90cnlfZGlyPSIkUFlfUFJFRklYL2luY2x1ZGUvcHl0aG9uJFBZX1NZU19WRVJTSU9OICRQWV9JTkNfRElSIgorIAkJRlJfU01BUlRfQ0hFQ0tfSU5DTFVERShQeXRob24uaCkKKyAJCUNGTEFHUz0kb2xkX0NGTEFHUworIAorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9yYWRpdXNkLXZvbGF0aWxlcy5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9yYWRpdXNkLXZvbGF0aWxlcy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNjI5NjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYKQEAgLTAsMCArMSwyIEBACitkIC92YXIvbG9nL3JhZGl1cyAgMDc1NSByYWRpdXNkIHJhZGl1c2QgLQorZCAvdmFyL3J1bi9yYWRpdXNkIDA3NTUgcmFkaXVzZCByYWRpdXNkIC0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvcmFkaXVzZC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9yYWRpdXNkLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk5YzRlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvcmFkaXVzZC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTYgQEAKK1tVbml0XQorRGVzY3JpcHRpb249RnJlZVJBRElVUyBoaWdoIHBlcmZvcm1hbmNlIFJBRElVUyBzZXJ2ZXIuCitBZnRlcj1zeXNsb2cudGFyZ2V0IG5ldHdvcmsudGFyZ2V0CisKK1tTZXJ2aWNlXQorVHlwZT1mb3JraW5nCitQSURGaWxlPUBTVEFURURJUkAvcnVuL3JhZGl1c2QvcmFkaXVzZC5waWQKK0V4ZWNTdGFydFByZT0tQEJBU0VfQklORElSQC9jaG93biAtUiByYWRpdXNkLnJhZGl1c2QgQFNUQVRFRElSQC9ydW4vcmFkaXVzZAorRXhlY1N0YXJ0UHJlPS1AQkFTRV9CSU5ESVJAL3NoIC1jICJpZiBbICEgLWYgQFNZU0NPTkZESVJAL3JhZGRiL2NlcnRzL3NlcnZlci5wZW0gXTsgdGhlbiBzdWRvIC11IHJhZGl1c2QgQFNZU0NPTkZESVJAL3JhZGRiL2NlcnRzL2Jvb3RzdHJhcDsgZmkiCitFeGVjU3RhcnRQcmU9QFNCSU5ESVJAL3JhZGl1c2QgLUMKK0V4ZWNTdGFydD1AU0JJTkRJUkAvcmFkaXVzZCAtZCBAU1lTQ09ORkRJUkAvcmFkZGIKK0V4ZWNSZWxvYWQ9QFNCSU5ESVJAL3JhZGl1c2QgLUMKK0V4ZWNSZWxvYWQ9QEJBU0VfQklORElSQC9raWxsIC1IVVAgJE1BSU5QSUQKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy92b2xhdGlsZXMuNThfcmFkaXVzZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvdm9sYXRpbGVzLjU4X3JhZGl1c2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNiZGFlOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvdm9sYXRpbGVzLjU4X3JhZGl1c2QKQEAgLTAsMCArMSwzIEBACisjIDx0eXBlPiA8b3duZXI+IDxncm91cD4gPG1vZGU+IDxwYXRoPiA8bGlua3NvdXJjZT4KK2QgcmFkaXVzZCByYWRpdXNkIDA3NTUgL3Zhci9ydW4vcmFkaXVzZCBub25lCitkIHJhZGl1c2QgcmFkaXVzZCAwNzU1IC92YXIvbG9nL3JhZGl1cyBub25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9mcmVlcmFkaXVzXzMuMC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTU1YTQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9mcmVlcmFkaXVzXzMuMC4xNS5iYgpAQCAtMCwwICsxLDIyMiBAQAorREVTQ1JJUFRJT04gPSAiRnJlZVJBRElVUyBpcyBhbiBJbnRlcm5ldCBhdXRoZW50aWNhdGlvbiBkYWVtb24sIHdoaWNoIGltcGxlbWVudHMgdGhlIFJBRElVUyBcCitwcm90b2NvbCwgYXMgZGVmaW5lZCBpbiBSRkMgMjg2NSAoYW5kIG90aGVycykuIEl0IGFsbG93cyBOZXR3b3JrIEFjY2VzcyBcCitTZXJ2ZXJzIChOQVMgYm94ZXMpIHRvIHBlcmZvcm0gYXV0aGVudGljYXRpb24gZm9yIGRpYWwtdXAgdXNlcnMuIFRoZXJlIGFyZSBcCithbHNvIFJBRElVUyBjbGllbnRzIGF2YWlsYWJsZSBmb3IgV2ViIHNlcnZlcnMsIGZpcmV3YWxscywgVW5peCBsb2dpbnMsIGFuZCBcCittb3JlLiAgVXNpbmcgUkFESVVTIGFsbG93cyBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBmb3IgYSBuZXR3b3JrIHRvIFwKK2JlIGNlbnRyYWxpemVkLCBhbmQgbWluaW1pemVzIHRoZSBhbW91bnQgb2YgcmUtY29uZmlndXJhdGlvbiB3aGljaCBoYXMgdG8gYmUgXAorZG9uZSB3aGVuIGFkZGluZyBvciBkZWxldGluZyBuZXcgdXNlcnMuIgorCitTVU1NQVJZID0gIkhpZ2gtcGVyZm9ybWFuY2UgYW5kIGhpZ2hseSBjb25maWd1cmFibGUgUkFESVVTIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZXJhZGl1cy5vcmcvIgorU0VDVElPTiA9ICJTeXN0ZW0vU2VydmVycyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCitERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIG9wZW5zc2wgbGliaWRuIGxpYnRvb2wgbGlicGNhcCBsaWJ0YWxsb2MiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmZyZWVyYWRpdXMub3JnL3B1Yi9mcmVlcmFkaXVzL2ZyZWVyYWRpdXMtc2VydmVyLSR7UFZ9LnRhci5iejIgXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzIFwKKyAgICBmaWxlOi8vdm9sYXRpbGVzLjU4X3JhZGl1c2QgXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWVuYmxlLXVzZXItaW4tY29uZi5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFsbG93LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1maXgtaXNzdWVzLXJlbGF0ZWQtdG8tbTQtaW5jbHVkZS1wYXRoLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1saWJ0b29sLWRldGVjdGlvbi5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWxpYmNhcC5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtYXZvaWQtc2VhcmNoaW5nLWhvc3QtZGlycy5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtcmxtX3B5dGhvbi1hZGQtUFlfSU5DX0RJUi5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtbGlidG9vbC1kby1ub3QtdXNlLWpsaWJ0b29sLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1maXgtcXVvdGluZy1mb3ItQlVJTFRfV0lUSC5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtZml4LWVycm9yLWZvci1leHBhbnNpb24tb2YtbWFjcm8ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXJsbV9tc2NoYXAtVXNlLWluY2x1ZGVkaXItaW5zdGVhZC1vZi1oYXJkY29kaW5nLXVzci0ucGF0Y2ggXAorICAgIGZpbGU6Ly9yYWRpdXNkLnNlcnZpY2UgXAorICAgIGZpbGU6Ly9yYWRpdXNkLXZvbGF0aWxlcy5jb25mIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYzgxYTQ0NjRjY2YxZDA0ZjdlZjEyMThhMDI5ZDM3YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzI2N2Q4NTA1ZTdiMjkwOWY1YmRiZjM5MzhjYTA3N2MxZmUxMjIyOTBkYzk2OTMwNGQ0ZjNiNTk0ZjdlM2JhIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworUyA9ICIke1dPUktESVJ9L2ZyZWVyYWRpdXMtc2VydmVyLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZW5hYmxlLXN0cmljdC1kZXBlbmRlbmNpZXMgXAorICAgICAgICAtLXdpdGgtZG9jZGlyPSR7ZG9jZGlyfS9mcmVlcmFkaXVzLSR7UFZ9IFwKKyAgICAgICAgLS13aXRoLW9wZW5zc2wtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAtLXdpdGgtb3BlbnNzbC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2lwcG9vbCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fY2FjaGVfbWVtY2FjaGVkIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9jb3VudGVyIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9jb3VjaGJhc2UgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2RibSBcCisgICAgICAgIC0td2l0aG91dC1ybG1fZWFwX3RuYyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fZWFwX2lrZXYyIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9vcGVuZGlyZWN0b3J5IFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9yZWRpcyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fcmVkaXN3aG8gXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9kYjIgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9maXJlYmlyZCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2ZyZWV0ZHMgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9pb2RiYyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX29yYWNsZSBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX3N5YmFzZSBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsaHB3aXBwb29sIFwKKyAgICAgICAgYWNfY3ZfcGF0aF9QRVJMPSR7YmluZGlyfS9wZXJsIFwKKyAgICAgICAgYXhfY3ZfY2NfYnVpbHRpbl9jaG9vc2VfZXhwcj1ubyBcCisgICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wPW5vIFwKKyAgICAgICAgYXhfY3ZfY2NfYnVpbHRpbl9ic3dhcDY0PW5vIFwKKyAgICAgICAgYXhfY3ZfY2NfYm91bmRlZF9hdHRyaWJ1dGU9bm8gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgcGNyZSBsaWJjYXAgXAorIgorCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1ybG1fa3JiNSwtLXdpdGhvdXQtcmxtX2tyYjUsa3JiNSIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcmxtX3BhbSwtLXdpdGhvdXQtcmxtX3BhbSxsaWJwYW0iCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLXJsbV9sZGFwLC0td2l0aG91dC1ybG1fbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1ybG1fc3FsX215c3FsLC0td2l0aG91dC1ybG1fc3FsX215c3FsLG15c3FsNSIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlXSA9ICItLXdpdGgtcmxtX3NxbF9zcWxpdGUsLS13aXRob3V0LXJsbV9zcWxfc3FsaXRlLHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW3VuaXhvZGJjXSA9ICItLXdpdGgtcmxtX3NxbF91bml4b2RiYywtLXdpdGhvdXQtcmxtX3NxbF91bml4b2RiYyx1bml4b2RiYyIKK1BBQ0tBR0VDT05GSUdbcG9zdGdyZXNxbF0gPSAiLS13aXRoLXJsbV9zcWxfcG9zdGdyZXNxbCwtLXdpdGhvdXQtcmxtX3NxbF9wb3N0Z3Jlc3FsLHBvc3RncmVzcWwiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCitQQUNLQUdFQ09ORklHW3BlcmxdID0gIi0td2l0aC1wZXJsPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsIC0td2l0aC1ybG1fcGVybCwtLXdpdGhvdXQtcmxtX3BlcmwscGVybC1uYXRpdmUgcGVybCxwZXJsIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1ybG1fcHl0aG9uIC0td2l0aC1ybG0tcHl0aG9uLWJpbj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gLS13aXRoLXJsbS1weXRob24taW5jbHVkZS1kaXI9JHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSwtLXdpdGhvdXQtcmxtX3B5dGhvbixweXRob24tbmF0aXZlIHB5dGhvbiIKK1BBQ0tBR0VDT05GSUdbcmVzdF0gPSAiLS13aXRoLXJsbV9yZXN0LC0td2l0aG91dC1ybG1fcmVzdCxjdXJsIGpzb24tYyIKK1BBQ0tBR0VDT05GSUdbcnVieV0gPSAiLS13aXRoLXJsbV9ydWJ5LC0td2l0aG91dC1ybG1fcnVieSxydWJ5IgorCitpbmhlcml0IHVzZXJhZGQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKKyMgVGhpcyBpcyBub3QgYSBjcGFuIG9yIHB5dGhvbiBiYXNlZCBwYWNrYWdlLCBidXQgaXQgbmVlZHMgc29tZSBkZWZpbml0aW9ucworIyBmcm9tIGNwYW4tYmFzZSBhbmQgcHl0aG9uLWRpciBiYmNsYXNzZXMgZm9yIGJ1aWxkaW5nIHJsbV9wZXJsIGFuZCBybG1fcHl0aG9uCisjIGNvcnJlY3RseS4KK2luaGVyaXQgY3Bhbi1iYXNlIHB5dGhvbi1kaXIKKworIyBUaGUgbW9kdWxlcyBzdWJkaXJzIGFsc28gbmVlZCB0byBiZSBwcm9jZXNzZWQgYnkgYXV0b3JlY29uZi4gVXNlIGF1dG9nZW4uc2gKKyMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBzdWJkaXJzIGNvcnJlY3RseS4KK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgLi9hdXRvZ2VuLnNoCisKKyAgICAjIHRoZSBjb25maWd1cmUgb2YgcmxtX3BlcmwgbmVlZHMgdGhpcyB0byBnZXQgY29ycmVjdAorICAgICMgbW9kX2NmbGFncyBhbmQgbW9kX2xkZmxhZ3MKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZXJsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgZXhwb3J0IFBFUkw1TElCPSIke1NUQUdJTkdfTElCRElSfSR7UEVSTF9PV05fRElSfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9IgorICAgIGZpCisKKyAgICBvZV9ydW5jb25mCisKKyAgICAjIHdlIGRvbid0IG5lZWQgZGhjcGNsaWVudAorICAgIHNlZCAtaSAtZSAncy9kaGNwY2xpZW50Lm1rLy8nICR7U30vc3JjL21vZHVsZXMvcHJvdG9fZGhjcC9hbGwubWsKK30KKworSU5JVFNDUklQVF9OQU1FID0gInJhZGl1c2QiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJyYWRpdXNkLnNlcnZpY2UiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCByYWRpdXNkIgorCitkb19pbnN0YWxsKCkgeworICAgIHJtIC1yZiAke0R9CisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kCisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIG1rZGlyIC1wICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvcmFkaXVzZAorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisKKyAgICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSR7RH0vJHtsaWJkaXJ9CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIFI9JHtEfSBJTlNUQUxMU1RSSVA9IiIKKworICAgICMgcmVtb3ZlIHVuc3VwcG9ydGVkIGNvbmZpZyBmaWxlcworICAgIHJtIC1mICR7RH0vJHtzeXNjb25mZGlyfS9yYWRkYi9leHBlcmltZW50YWwuY29uZgorCisgICAgIyByZW1vdmUgc2NyaXB0cyB0aGF0IHJlcXVpcmVkIFBlcmwoREJJKQorICAgIHJtIC1yZiAke0R9LyR7YmluZGlyfS9yYWRzcWxyZWxheQorCisgICAgY3AgLWYgJHtXT1JLRElSfS9mcmVlcmFkaXVzICR7RH0vZXRjL2luaXQuZC9yYWRpdXNkCisgICAgcm0gLWYgJHtEfS8ke3NiaW5kaXJ9L3JjLnJhZGl1c2QKKyAgICBjaG1vZCAreCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3JhZGl1c2QKKyAgICBybSAtcmYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L3J1bi8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuNThfcmFkaXVzZCAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvNThfcmFkaXVzZAorCisgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7RH0vJHtzeXNjb25mZGlyfS9yYWRkYi8KKyAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9yYWRpdXNkCisKKyAgICAjIEZvciBzeXN0ZW1kCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JhZGl1c2Quc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAgICAtZSAncyxAU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgXAorICAgICAgICAgICAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisgICAgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JhZGl1c2Quc2VydmljZQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yYWRpdXNkLXZvbGF0aWxlcy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisgICAgZmkKK30KKworIyBUaGlzIGlzIG9ubHkgbmVlZGVkIHdoZW4gd2UgaW5zdGFsbC91cGRhdGUgb24gYSBydW5uaW5nIHRhcmdldC4KKyMKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAteiAiJEQiIF07IHRoZW4KKyAgICAgICAgaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgICMgY3JlYXRlIC92YXIvbG9nL3JhZGl1cywgL3Zhci9ydW4vcmFkaXVzZAorICAgICAgICAgICAgc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvcmFkaXVzZC12b2xhdGlsZXMuY29uZgorICAgICAgICBlbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgorICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisgICAgICAgIGZpCisKKyAgICAgICAgIyBGaXggb3duZXJzaGlwIGZvciAvZXRjL3JhZGRiLyosIC92YXIvbGliL3JhZGl1c2QKKyAgICAgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7c3lzY29uZmRpcn0vcmFkZGIKKyAgICAgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7bG9jYWxzdGF0ZWRpcn0vbGliL3JhZGl1c2QKKyAgICBmaQorfQorCisjIFdlIHJlYWxseSBuZWVkIHRoZSBzeW1saW5rIDooCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1rcmI1ID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWxkYXAgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tbXlzcWwgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tcGVybCA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1wb3N0Z3Jlc3FsID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LXB5dGhvbiA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS11bml4b2RiYyA9ICJkZXYtc28iCisKK1BBQ0tBR0VTID0rICIke1BOfS11dGlscyAke1BOfS1sZGFwICR7UE59LWtyYjUgJHtQTn0tcGVybCBcCisgICAgJHtQTn0tcHl0aG9uICR7UE59LW15c3FsICR7UE59LXBvc3RncmVzcWwgJHtQTn0tdW5peG9kYmMiCisKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitGSUxFU18ke1BOfS1sZGFwID0gIiR7bGliZGlyfS9ybG1fbGRhcC5zbyogXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvbGRhcCBcCisiCisKK0ZJTEVTXyR7UE59LWtyYjUgPSAiJHtsaWJkaXJ9L3JsbV9rcmI1LnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9rcmI1IFwKKyIKKworRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmRpcn0vcmxtX3Blcmwuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3BlcmwgXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcGVybCBcCisiCisKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcmxtX3B5dGhvbi5zbyogXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvcHl0aG9uIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL3B5dGhvbiBcCisiCisKK0ZJTEVTXyR7UE59LW15c3FsID0gIiR7bGliZGlyfS9ybG1fc3FsX215c3FsLnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9zcWwvKi9teXNxbCBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9zcWwgXAorIgorCitGSUxFU18ke1BOfS1wb3N0Z3Jlc3FsID0gIiR7bGliZGlyfS9ybG1fc3FsX3Bvc3RncmVzcWwuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3NxbC8qL3Bvc3RncmVzcWwgXAorIgorCitGSUxFU18ke1BOfS11bml4b2RiYyA9ICIke2xpYmRpcn0vcmxtX3NxbF91bml4b2RiYy5zbyoiCisKK0ZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vcmxtXyouc28qICR7bGliZGlyfS9wcm90b18qc28qIgorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKK1JERVBFTkRTXyR7UE59LXV0aWxzID0gIiR7UE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZG5ldC9saWJkbmV0XzEuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJkbmV0L2xpYmRuZXRfMS4xMi5iYgppbmRleCBmNDhiNjU1Li5lNTc5ZGU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJkbmV0L2xpYmRuZXRfMS4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJkbmV0L2xpYmRuZXRfMS4xMi5iYgpAQCAtMTMsMyArMTMsNCBAQAogCiBhY3BhdGhzID0gIi1JIC4vY29uZmlnLyIKIAorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ZjM2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMC5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IFVQblAgSUdEIGRhZW1vbiIKK0RFU0NSSVBUSU9OID0gIlRoZSBtaW5pVVBuUCBkYWVtb24gaXMgYW4gVVBuUCBJR0QgKGludGVybmV0IGdhdGV3YXkgZGV2aWNlKSBcCit3aGljaCBwcm92aWRlIE5BVCB0cmF2ZXJzYWwgc2VydmljZXMgdG8gYW55IFVQblAgZW5hYmxlZCBjbGllbnQgb24gXAordGhlIG5ldHdvcmsuIgorCitTRUNUSU9OID0gIm5ldHdvcmtpbmciCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFhNzFjNzhjMzczY2NmZTBmZjIwN2FmMGNkOTY2ZDkxIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCitERVBFTkRTICs9ICJpcHRhYmxlcyBuZXQtdG9vbHMgdXRpbC1saW51eCBsaWJtbmwgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKKworU1JDX1VSSSA9ICJodHRwOi8vbWluaXVwbnAudHV4ZmFtaWx5Lm9yZy9maWxlcy9kb3dubG9hZC5waHA/ZmlsZT0ke1B9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7UH0udGFyLmd6IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYzA3YTIxNWRkOWIzNjJlNzVhOWVmYzA1ZTJmYjNiNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOTZhYTNhMDBlMGY1NDkwODI2YmJhM2NiOTdlNjhjZDI3NDc5ZTU4MzlhZGFjNGI5YmNiNjZlYWU3ODZiZmI3IgorCitJUFY2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICctLWlwdjYnLCAnJywgZCl9IgorCitkb19jb21waWxlKCkgeworICAgIGNkICR7U30KKyAgICBDT05GSUdfT1BUSU9OUz0iJHtJUFY2fSAtLWxlYXNlZmlsZSAtLXZlbmRvcmNmZyIgb2VfcnVubWFrZSAtZiBNYWtlZmlsZS5saW51eAorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAke1N9L21pbml1cG5wZCAke0R9LyR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwdGFibGVzX2luaXQuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXB0YWJsZXNfcmVtb3ZlYWxsLnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwNnRhYmxlc19pbml0LnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwNnRhYmxlc19yZW1vdmVhbGwuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgLW0gMDY0NCAtYiAke1N9L21pbml1cG5wZC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsICR7U30vbGludXgvbWluaXVwbnBkLmluaXQuZC5zY3JpcHQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9taW5pdXBucGQKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci1vcGVudnBuXzEuMi44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjIuOC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLW9wZW52cG5fMS4yLjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLW9wZW52cG5fMS4yLjguYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWFkanVzdC1uZXQtaGVhZGVycy1mb3ItbXVzbC1jb21wYXRpYmlsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1hZGp1c3QtbmV0LWhlYWRlcnMtZm9yLW11c2wtY29tcGF0aWJpbGl0eS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtYWRqdXN0LW5ldC1oZWFkZXJzLWZvci1tdXNsLWNvbXBhdGliaWxpdHkucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtYWRqdXN0LW5ldC1oZWFkZXJzLWZvci1tdXNsLWNvbXBhdGliaWxpdHkucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWNoZWNrLWZvci1zdHJuZHVwYS1iZWZvcmUtdXNpbmctaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWNoZWNrLWZvci1zdHJuZHVwYS1iZWZvcmUtdXNpbmctaXQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWNoZWNrLWZvci1zdHJuZHVwYS1iZWZvcmUtdXNpbmctaXQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtY2hlY2stZm9yLXN0cm5kdXBhLWJlZm9yZS11c2luZy1pdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kbnMtcmVzb2x2ZWQtYWRkLXN5c3RlbWQtcmVzb2x2ZWQtYmFja2VuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG5zLXJlc29sdmVkLWFkZC1zeXN0ZW1kLXJlc29sdmVkLWJhY2tlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxOTRhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG5zLXJlc29sdmVkLWFkZC1zeXN0ZW1kLXJlc29sdmVkLWJhY2tlbmQucGF0Y2gKQEAgLTAsMCArMSw2MjEgQEAKK0Zyb206IFNqb2VyZCBTaW1vbnMgPHNqb2VyZEBsdW9uLm5ldD4KK0RhdGU6IFN1biwgMjEgQXVnIDIwMTYgMjE6NDY6MDIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZG5zL3Jlc29sdmVkOiBhZGQgc3lzdGVtZC1yZXNvbHZlZCBiYWNrZW5kCisKK0FkZCBpbml0aWFsIEROUyBiYWNrZW5kIHRoYXQgcHVzaGVzIEROUyBpbmZvcm1hdGlvbiBpbnRvCitzeXN0ZW1kLXJlc29sdmVkLiBCYWNrZW5kIGlzIGNob29zZW4gYnkgZGVmYXVsdCBpZiB0aGUgc3lzdGVtcworcmVzb2x2LmNvbnYgaXMgc2V0dXAgdG8gcG9pbnRpbmcgdG8gb25lIG9mIHRoZSBzdGFuZGFyZCByZXNvbHZlZAorbG9jYXRpb25zLgorCitUaGlzIGRvZXNuJ3QgaGFuZGxlIGdsb2JhbCBkbnMgY29uZmlndXJhdGlvbi4KKworU2lnbmVkLW9mZi1ieTogU2pvZXJkIFNpbW9ucyA8c2pvZXJkQGx1b24ubmV0PgorCitodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNTQwCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworLS0tCisgbWFuL05ldHdvcmtNYW5hZ2VyLmNvbmYueG1sICAgICAgICAgICAgICAgfCAgMTAgKy0KKyBzcmMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCisgc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMgICAgICAgICAgfCAgNDMgKystCisgc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmMgfCA0MjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmggfCAgNDUgKysrKworIDUgZmlsZXMgY2hhbmdlZCwgNTIzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9kbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9kbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5oCisKK2RpZmYgLS1naXQgYS9tYW4vTmV0d29ya01hbmFnZXIuY29uZi54bWwgYi9tYW4vTmV0d29ya01hbmFnZXIuY29uZi54bWwKK2luZGV4IDYyOTViODIuLjBhNjdhZTUgMTAwNjQ0CistLS0gYS9tYW4vTmV0d29ya01hbmFnZXIuY29uZi54bWwKKysrKyBiL21hbi9OZXR3b3JrTWFuYWdlci5jb25mLnhtbAorQEAgLTI3NSwxMCArMjc1LDEyIEBAIG5vLWF1dG8tZGVmYXVsdD0qCisgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgIDx0ZXJtPjx2YXJuYW1lPmRuczwvdmFybmFtZT48L3Rlcm0+CisgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2V0IHRoZSBETlMgKDxmaWxlbmFtZT5yZXNvbHYuY29uZjwvZmlsZW5hbWU+KSBwcm9jZXNzaW5nIG1vZGUuPC9wYXJhPgorLSAgICAgICAgPHBhcmE+PGxpdGVyYWw+ZGVmYXVsdDwvbGl0ZXJhbD46IFRoZSBkZWZhdWx0IGlmIHRoZSBrZXkgaXMKKy0gICAgICAgIG5vdCBzcGVjaWZpZWQuIE5ldHdvcmtNYW5hZ2VyIHdpbGwgdXBkYXRlCisrICAgICAgICA8cGFyYT48bGl0ZXJhbD5kZWZhdWx0PC9saXRlcmFsPjogTmV0d29ya01hbmFnZXIgd2lsbCB1cGRhdGUKKyAgICAgICAgIDxmaWxlbmFtZT5yZXNvbHYuY29uZjwvZmlsZW5hbWU+IHRvIHJlZmxlY3QgdGhlIG5hbWVzZXJ2ZXJzCistICAgICAgICBwcm92aWRlZCBieSBjdXJyZW50bHkgYWN0aXZlIGNvbm5lY3Rpb25zLjwvcGFyYT4KKysgICAgICAgIHByb3ZpZGVkIGJ5IGN1cnJlbnRseSBhY3RpdmUgY29ubmVjdGlvbnMuICBUaGlzIGlzIHRoZSBkZWZhdWx0CisrICAgICAgICBpZiB0aGUga2V5IGlzIG5vdCBzcGVjaWZpZWQsIHVubGVzcyB0aGUgc3lzdGVtIGlzIGNvbmZpZ3VyZWQKKysgICAgICAgIHRvIHVzZSBzeXN0ZW1kLXJlc29sdmVkOyBpbiB0aGlzIGNhc2UgdGhlIGRlZmF1bHQgaXMKKysgICAgICAgIDxsaXRlcmFsPnN5c3RlbWQtcmVzb2x2ZWQ8L2xpdGVyYWw+PC9wYXJhPgorICAgICAgICAgPHBhcmE+PGxpdGVyYWw+ZG5zbWFzcTwvbGl0ZXJhbD46IE5ldHdvcmtNYW5hZ2VyIHdpbGwgcnVuCisgICAgICAgICBkbnNtYXNxIGFzIGEgbG9jYWwgY2FjaGluZyBuYW1lc2VydmVyLCB1c2luZyBhICJzcGxpdCBETlMiCisgICAgICAgICBjb25maWd1cmF0aW9uIGlmIHlvdSBhcmUgY29ubmVjdGVkIHRvIGEgVlBOLCBhbmQgdGhlbiB1cGRhdGUKK0BAIC0yODgsNiArMjkwLDggQEAgbm8tYXV0by1kZWZhdWx0PSoKKyAgICAgICAgIHRvIHVuYm91bmQgYW5kIGRuc3NlYy10cmlnZ2VyZCwgcHJvdmlkaW5nIGEgInNwbGl0IEROUyIKKyAgICAgICAgIGNvbmZpZ3VyYXRpb24gd2l0aCBETlNTRUMgc3VwcG9ydC4gVGhlIDxmaWxlbmFtZT4vZXRjL3Jlc29sdi5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgIHdpbGwgYmUgbWFuYWdlZCBieSBkbnNzZWMtdHJpZ2dlciBkYWVtb24uPC9wYXJhPgorKyAgICAgICAgPHBhcmE+PGxpdGVyYWw+c3lzdGVtZC1yZXNvbHZlZDwvbGl0ZXJhbD46IE5ldHdvcmtNYW5hZ2VyIHdpbGwKKysgICAgICAgIHB1c2ggdGhlIEROUyBjb25maWd1cmF0aW9uIHRvIHN5c3RlbWQtcmVzb2x2ZWQ8L3BhcmE+CisgICAgICAgICA8cGFyYT48bGl0ZXJhbD5ub25lPC9saXRlcmFsPjogTmV0d29ya01hbmFnZXIgd2lsbCBub3QKKyAgICAgICAgIG1vZGlmeSByZXNvbHYuY29uZi4gVGhpcyBpbXBsaWVzCisgICAgICAgICA8bGl0ZXJhbD5yYy1tYW5hZ2VyPC9saXRlcmFsPiZuYnNwOzxsaXRlcmFsPnVubWFuYWdlZDwvbGl0ZXJhbD48L3BhcmE+CitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCA4ZDI5YjE5Li4xMGY2M2RlIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0zNDUsNiArMzQ1LDggQEAgbGliTmV0d29ya01hbmFnZXJfbGFfU09VUkNFUyA9IFwKKyAJXAorIAlkbnMtbWFuYWdlci9ubS1kbnMtZG5zbWFzcS5jIFwKKyAJZG5zLW1hbmFnZXIvbm0tZG5zLWRuc21hc3EuaCBcCisrCWRucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmMgXAorKwlkbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5oIFwKKyAJZG5zLW1hbmFnZXIvbm0tZG5zLXVuYm91bmQuYyBcCisgCWRucy1tYW5hZ2VyL25tLWRucy11bmJvdW5kLmggXAorIAlkbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jIFwKK2RpZmYgLS1naXQgYS9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLW1hbmFnZXIuYyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jCitpbmRleCA1YTc1OGE5Li4zOGJjNzg2IDEwMDY0NAorLS0tIGEvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKKysrKyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jCitAQCAtNDUsNiArNDUsNyBAQAorIAorICNpbmNsdWRlICJubS1kbnMtcGx1Z2luLmgiCisgI2luY2x1ZGUgIm5tLWRucy1kbnNtYXNxLmgiCisrI2luY2x1ZGUgIm5tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmgiCisgI2luY2x1ZGUgIm5tLWRucy11bmJvdW5kLmgiCisgCisgI2lmIFdJVEhfTElCU09VUAorQEAgLTE1ODgsNiArMTU4OSwzNyBAQCBfY2hlY2tfcmVzY29uZl9pbW11dGFibGUgKE5NRG5zTWFuYWdlclJlc29sdkNvbmZNYW5hZ2VyIHJjX21hbmFnZXIpCisgCisgTk1fREVGSU5FX1NJTkdMRVRPTl9HRVRURVIgKE5NRG5zTWFuYWdlciwgbm1fZG5zX21hbmFnZXJfZ2V0LCBOTV9UWVBFX0ROU19NQU5BR0VSKTsKKyAKKytzdGF0aWMgZ2Jvb2xlYW4KKytfcmVzb2x2Y29uZl9yZXNvbHZlZF9tYW5hZ2VkICh2b2lkKQorK3sKKysJc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJlc29sdmVkX3BhdGhzW10gPSB7CisrCQkiL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYiLAorKwkJIi9saWIvc3lzdGVtZC9yZXNvbHYuY29uZiIsCisrCQkiL3Vzci9saWIvc3lzdGVtZC9yZXNvbHYuY29uZiIsCisrCX07CisrCUdGaWxlICpmOworKwlHRmlsZUluZm8gKmluZm87CisrCWdib29sZWFuIHJldCA9IEZBTFNFOworKworKwlmID0gZ19maWxlX25ld19mb3JfcGF0aCAoX1BBVEhfUkVTQ09ORik7CisrCWluZm8gPSBnX2ZpbGVfcXVlcnlfaW5mbyAoZiwKKysJICAgICAgICAgICAgICAgICAgICAgICAgICBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX0lTX1NZTUxJTksiLCJcCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TWU1MSU5LX1RBUkdFVCwKKysJICAgICAgICAgICAgICAgICAgICAgICAgICBHX0ZJTEVfUVVFUllfSU5GT19OT0ZPTExPV19TWU1MSU5LUywKKysJICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKysKKysJaWYgKGluZm8gJiYgZ19maWxlX2luZm9fZ2V0X2lzX3N5bWxpbmsgKGluZm8pKSB7CisrCQlyZXQgPSBfbm1fdXRpbHNfc3Rydl9maW5kX2ZpcnN0ICgoZ2NoYXIgKiopIHJlc29sdmVkX3BhdGhzLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19OX0VMRU1FTlRTIChyZXNvbHZlZF9wYXRocyksCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2ZpbGVfaW5mb19nZXRfc3ltbGlua190YXJnZXQgKGluZm8pKSA+PSAwOworKwl9CisrCisrCWdfY2xlYXJfb2JqZWN0KCZpbmZvKTsKKysJZ19jbGVhcl9vYmplY3QoJmYpOworKworKwlyZXR1cm4gcmV0OworK30KKysKKyBzdGF0aWMgdm9pZAorIGluaXRfcmVzb2x2X2NvbmZfbW9kZSAoTk1EbnNNYW5hZ2VyICpzZWxmLCBnYm9vbGVhbiBmb3JjZV9yZWxvYWRfcGx1Z2luKQorIHsKK0BAIC0xNjMzLDcgKzE2NjUsMTYgQEAgYWdhaW46CisgCisgCXJjX21hbmFnZXIgPSBfY2hlY2tfcmVzY29uZl9pbW11dGFibGUgKHJjX21hbmFnZXIpOworIAorLQlpZiAobm1fc3RyZXEwIChtb2RlLCAiZG5zbWFzcSIpKSB7CisrCWlmICggICAoIW1vZGUgJiYgX3Jlc29sdmNvbmZfcmVzb2x2ZWRfbWFuYWdlZCAoKSkKKysJICAgIHx8IG5tX3N0cmVxMCAobW9kZSwgInN5c3RlbWQtcmVzb2x2ZWQiKSkgeworKwkJaWYgKCAgIGZvcmNlX3JlbG9hZF9wbHVnaW4KKysJCSAgICB8fCAhTk1fSVNfRE5TX1NZU1RFTURfUkVTT0xWRUQgKHByaXYtPnBsdWdpbikpIHsKKysJCQlfY2xlYXJfcGx1Z2luIChzZWxmKTsKKysJCQlwcml2LT5wbHVnaW4gPSBubV9kbnNfc3lzdGVtZF9yZXNvbHZlZF9uZXcgKCk7CisrCQkJcGx1Z2luX2NoYW5nZWQgPSBUUlVFOworKwkJfQorKwkJbW9kZSA9ICJzeXN0ZW1kLXJlc29sdmVkIjsKKysJfSBlbHNlIGlmIChubV9zdHJlcTAgKG1vZGUsICJkbnNtYXNxIikpIHsKKyAJCWlmIChmb3JjZV9yZWxvYWRfcGx1Z2luIHx8ICFOTV9JU19ETlNfRE5TTUFTUSAocHJpdi0+cGx1Z2luKSkgeworIAkJCV9jbGVhcl9wbHVnaW4gKHNlbGYpOworIAkJCXByaXYtPnBsdWdpbiA9IG5tX2Ruc19kbnNtYXNxX25ldyAoKTsKK2RpZmYgLS1naXQgYS9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuYyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNmJkZDVmNgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmMKK0BAIC0wLDAgKzEsNDI3IEBACisrLyogLSotIE1vZGU6IEM7IHRhYi13aWR0aDogNDsgaW5kZW50LXRhYnMtbW9kZTogdDsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotICovCisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRGFuIFdpbGxpYW1zIDxkY2J3QHJlZGhhdC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDE2IFNqb2VyZCBTaW1vbnMgPHNqb2VyZEBsdW9uLm5ldD4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisrICogYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSAibm0tZGVmYXVsdC5oIgorKworKyNpbmNsdWRlICJubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5oIgorKworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKysjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjaW5jbHVkZSA8bGludXgvaWYuaD4KKysKKysjaW5jbHVkZSAibm0tY29yZS1pbnRlcm5hbC5oIgorKyNpbmNsdWRlICJubS1wbGF0Zm9ybS5oIgorKyNpbmNsdWRlICJubS11dGlscy5oIgorKyNpbmNsdWRlICJubS1pcDQtY29uZmlnLmgiCisrI2luY2x1ZGUgIm5tLWlwNi1jb25maWcuaCIKKysjaW5jbHVkZSAibm0tYnVzLW1hbmFnZXIuaCIKKysjaW5jbHVkZSAibm0tbWFuYWdlci5oIgorKyNpbmNsdWRlICJubS1kZXZpY2UuaCIKKysjaW5jbHVkZSAiTmV0d29ya01hbmFnZXJVdGlscy5oIgorKworK0dfREVGSU5FX1RZUEUgKE5NRG5zU3lzdGVtZFJlc29sdmVkLCBubV9kbnNfc3lzdGVtZF9yZXNvbHZlZCwgTk1fVFlQRV9ETlNfUExVR0lOKQorKworKyNkZWZpbmUgTk1fRE5TX1NZU1RFTURfUkVTT0xWRURfR0VUX1BSSVZBVEUobykgXAorKyAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSAoKG8pLCBOTV9UWVBFX0ROU19TWVNURU1EX1JFU09MVkVELCBcCisrICAgIE5NRG5zU3lzdGVtZFJlc29sdmVkUHJpdmF0ZSkpCisrCisrI2RlZmluZSBTWVNURU1EX1JFU09MVkVEX0RCVVNfU0VSVklDRSAib3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxIgorKyNkZWZpbmUgU1lTVEVNRF9SRVNPTFZFRF9EQlVTX1BBVEggIi9vcmcvZnJlZWRlc2t0b3AvcmVzb2x2ZTEiCisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKwlpbnQgaWZpbmRleDsKKysJR0xpc3QgKmNvbmZpZ3M7CisrfSBJbnRlcmZhY2VDb25maWc7CisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKwlHREJ1c1Byb3h5ICpyZXNvbHZlOworKwlHQ2FuY2VsbGFibGUgKmluaXRfY2FuY2VsbGFibGU7CisrCUdDYW5jZWxsYWJsZSAqdXBkYXRlX2NhbmNlbGxhYmxlOworKwlHUXVldWUgZG5zX3VwZGF0ZXM7CisrCUdRdWV1ZSBkb21haW5fdXBkYXRlczsKKyt9IE5NRG5zU3lzdGVtZFJlc29sdmVkUHJpdmF0ZTsKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2RlZmluZSBfTk1MT0dfRE9NQUlOICAgICAgICAgTE9HRF9ETlMKKysjZGVmaW5lIF9OTUxPR19QUkVGSVhfTkFNRSAgICAic3lzdGVtZC1yZXNvbHZlZCIKKysjZGVmaW5lIF9OTUxPRyhsZXZlbCwgLi4uKSBcCisrICAgIEdfU1RNVF9TVEFSVCB7IFwKKysgICAgICAgIG5tX2xvZyAoKGxldmVsKSwgX05NTE9HX0RPTUFJTiwgXAorKyAgICAgICAgICAgICAgICAiJXNbJXBdOiAiIF9OTV9VVElMU19NQUNST19GSVJTVChfX1ZBX0FSR1NfXyksIFwKKysgICAgICAgICAgICAgICAgX05NTE9HX1BSRUZJWF9OQU1FLCBcCisrICAgICAgICAgICAgICAgIChzZWxmKSBcCisrICAgICAgICAgICAgICAgIF9OTV9VVElMU19NQUNST19SRVNUKF9fVkFfQVJHU19fKSk7IFwKKysgICAgfSBHX1NUTVRfRU5ECisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK3N0YXRpYyB2b2lkCisrY2FsbF9kb25lIChHT2JqZWN0ICpzb3VyY2UsIEdBc3luY1Jlc3VsdCAqciwgZ3BvaW50ZXIgdXNlcl9kYXRhKQorK3sKKysJR1ZhcmlhbnQgKnY7CisrCUdFcnJvciAqZXJyb3IgPSBOVUxMOworKwlOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZiA9IChOTURuc1N5c3RlbWRSZXNvbHZlZCAqKSB1c2VyX2RhdGE7CisrCisrCXYgPSBnX2RidXNfcHJveHlfY2FsbF9maW5pc2ggKEdfREJVU19QUk9YWSAoc291cmNlKSwgciwgJmVycm9yKTsKKysKKysJaWYgKGdfZXJyb3JfbWF0Y2hlcyAoZXJyb3IsIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKKysJCXJldHVybjsKKysKKysJaWYgKGVycm9yICE9IE5VTEwpIHsKKysJCV9MT0dXICgiRmFpbGVkOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworKwkJZ19lcnJvcl9mcmVlIChlcnJvcik7CisrCX0KKyt9CisrCisrc3RhdGljIHZvaWQKKythZGRfaW50ZXJmYWNlX2NvbmZpZ3VyYXRpb24gKE5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FycmF5ICppbnRlcmZhY2VzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTk1EbnNJUENvbmZpZ0RhdGEgKmRhdGEpCisreworKwlpbnQgaTsKKysJSW50ZXJmYWNlQ29uZmlnICppYyA9IE5VTEw7CisrCWludCBpZmluZGV4OworKwlOTURldmljZSAqZGV2aWNlOworKworKwlpZiAoTk1fSVNfSVA0X0NPTkZJRyAoZGF0YS0+Y29uZmlnKSkKKysJCWlmaW5kZXggPSBubV9pcDRfY29uZmlnX2dldF9pZmluZGV4IChkYXRhLT5jb25maWcpOworKwllbHNlIGlmIChOTV9JU19JUDZfQ09ORklHICAoZGF0YS0+Y29uZmlnKSkKKysJCWlmaW5kZXggPSBubV9pcDZfY29uZmlnX2dldF9pZmluZGV4IChkYXRhLT5jb25maWcpOworKwllbHNlCisrCQlnX3JldHVybl9pZl9yZWFjaGVkICgpOworKworKwlkZXZpY2UgPSBubV9tYW5hZ2VyX2dldF9kZXZpY2VfYnlfaWZpbmRleCAobm1fbWFuYWdlcl9nZXQgKCksIGlmaW5kZXgpOworKworKwlpZiAoIW5tX2RldmljZV9nZXRfbWFuYWdlZCAoZGV2aWNlLCBGQUxTRSkpCisrCQlyZXR1cm47CisrCisrCWZvciAoaSA9IDA7IGkgPCBpbnRlcmZhY2VzLT5sZW47IGkrKykgeworKwkJSW50ZXJmYWNlQ29uZmlnICp0aWMgPSAmZ19hcnJheV9pbmRleCAoaW50ZXJmYWNlcywgSW50ZXJmYWNlQ29uZmlnLCBpKTsKKysJCWlmIChpZmluZGV4ID09IHRpYy0+aWZpbmRleCkgeworKwkJCWljID0gdGljOworKwkJCWJyZWFrOworKwkJfQorKwl9CisrCisrCWlmICghaWMpIHsKKysJCWdfYXJyYXlfc2V0X3NpemUgKGludGVyZmFjZXMsIGludGVyZmFjZXMtPmxlbiArIDEpOworKwkJaWMgPSAmZ19hcnJheV9pbmRleCAoaW50ZXJmYWNlcywgSW50ZXJmYWNlQ29uZmlnLAorKwkJICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlcy0+bGVuIC0gMSk7CisrCQlpYy0+aWZpbmRleCA9IGlmaW5kZXg7CisrCX0KKysKKysJaWMtPmNvbmZpZ3MgPSBnX2xpc3RfYXBwZW5kIChpYy0+Y29uZmlncywgZGF0YS0+Y29uZmlnKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKythZGRfZG9tYWluIChHVmFyaWFudEJ1aWxkZXIgKmRvbWFpbnMsCisrICAgICAgICAgICAgY29uc3QgY2hhciAqZG9tYWluLAorKyAgICAgICAgICAgIGdib29sZWFuIG5ldmVyX2RlZmF1bHQpCisreworKwkvKiBJZiB0aGlzIGxpbmsgaXMgbmV2ZXIgdGhlIGRlZmF1bHQgKGUuZy4gb25seSB1c2VkIGZvciByZXNvdXJjZXMgb24gdGhpcworKwkgKiBuZXR3b3JrKSBhZGQgYSByb3V0aW5nIGRvbWFpbi4gKi8KKysJZ192YXJpYW50X2J1aWxkZXJfYWRkIChkb21haW5zLCAiKHNiKSIsIGRvbWFpbiwgbmV2ZXJfZGVmYXVsdCk7CisrfQorKworK3N0YXRpYyB2b2lkCisrdXBkYXRlX2FkZF9pcDZfY29uZmlnIChOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZiwKKysgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAqZG5zLAorKyAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyICpkb21haW5zLAorKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTk1JUDZDb25maWcgKmNvbmZpZykKKyt7CisrCWd1aW50IGksIG47CisrCisrCW4gPSBubV9pcDZfY29uZmlnX2dldF9udW1fbmFtZXNlcnZlcnMgKGNvbmZpZyk7CisrCWZvciAoaSA9IDAgOyBpIDwgbjsgaSsrKSB7CisrCQljb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmlwOworKworKwkJZ192YXJpYW50X2J1aWxkZXJfb3BlbiAoZG5zLCBHX1ZBUklBTlRfVFlQRSAoIihpYXkpIikpOworKwkJZ192YXJpYW50X2J1aWxkZXJfYWRkIChkbnMsICJpIiwgQUZfSU5FVDYpOworKwkJaXAgPSBubV9pcDZfY29uZmlnX2dldF9uYW1lc2VydmVyIChjb25maWcsIGkpLAorKworKwkJZ192YXJpYW50X2J1aWxkZXJfYWRkX3ZhbHVlIChkbnMsIGdfdmFyaWFudF9uZXdfZml4ZWRfYXJyYXkgKEdfVkFSSUFOVF9UWVBFX0JZVEUsIGlwLCAxNiwgMSkpOworKwkJZ192YXJpYW50X2J1aWxkZXJfY2xvc2UgKGRucyk7CisrCX0KKysKKysJbiA9IG5tX2lwNl9jb25maWdfZ2V0X251bV9zZWFyY2hlcyAoY29uZmlnKTsKKysJaWYgKG4gPiAwKSB7CisrCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisrCQkJYWRkX2RvbWFpbiAoZG9tYWlucywgbm1faXA2X2NvbmZpZ19nZXRfc2VhcmNoIChjb25maWcsIGkpLAorKwkJCSAgICAgICAgICAgIG5tX2lwNl9jb25maWdfZ2V0X25ldmVyX2RlZmF1bHQgKGNvbmZpZykpOworKwkJfQorKwl9IGVsc2UgeworKwkJbiA9IG5tX2lwNl9jb25maWdfZ2V0X251bV9kb21haW5zIChjb25maWcpOworKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworKwkJCWFkZF9kb21haW4gKGRvbWFpbnMsIG5tX2lwNl9jb25maWdfZ2V0X2RvbWFpbiAoY29uZmlnLCBpKSwKKysJCQkgICAgICAgICAgICBubV9pcDZfY29uZmlnX2dldF9uZXZlcl9kZWZhdWx0IChjb25maWcpKTsKKysJCX0KKysJfQorK30KKysKKytzdGF0aWMgdm9pZAorK3VwZGF0ZV9hZGRfaXA0X2NvbmZpZyAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQgKnNlbGYsCisrICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudEJ1aWxkZXIgKmRucywKKysgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAqZG9tYWlucywKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5NSVA0Q29uZmlnICpjb25maWcpCisreworKwlndWludCBpLCBuOworKworKwluID0gbm1faXA0X2NvbmZpZ19nZXRfbnVtX25hbWVzZXJ2ZXJzIChjb25maWcpOworKwlmb3IgKGkgPSAwIDsgaSA8IG47IGkrKykgeworKwkJZ3VpbnQzMiBuczsKKysKKysJCWdfdmFyaWFudF9idWlsZGVyX29wZW4gKGRucywgR19WQVJJQU5UX1RZUEUgKCIoaWF5KSIpKTsKKysJCWdfdmFyaWFudF9idWlsZGVyX2FkZCAoZG5zLCAiaSIsIEFGX0lORVQpOworKwkJbnMgPSBubV9pcDRfY29uZmlnX2dldF9uYW1lc2VydmVyIChjb25maWcsIGkpLAorKworKwkJZ192YXJpYW50X2J1aWxkZXJfYWRkX3ZhbHVlIChkbnMsIGdfdmFyaWFudF9uZXdfZml4ZWRfYXJyYXkgKEdfVkFSSUFOVF9UWVBFX0JZVEUsICZucywgNCwgMSkpOworKwkJZ192YXJpYW50X2J1aWxkZXJfY2xvc2UgKGRucyk7CisrCX0KKysKKysJbiA9IG5tX2lwNF9jb25maWdfZ2V0X251bV9zZWFyY2hlcyAoY29uZmlnKTsKKysJaWYgKG4gID4gMCkgeworKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworKwkJCWFkZF9kb21haW4gKGRvbWFpbnMsIG5tX2lwNF9jb25maWdfZ2V0X3NlYXJjaCAoY29uZmlnLCBpKSwKKysJCQkgICAgICAgICAgICBubV9pcDRfY29uZmlnX2dldF9uZXZlcl9kZWZhdWx0IChjb25maWcpKTsKKysJCX0KKysJfSBlbHNlIHsKKysJCW4gPSBubV9pcDRfY29uZmlnX2dldF9udW1fZG9tYWlucyAoY29uZmlnKTsKKysJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKysJCQlhZGRfZG9tYWluIChkb21haW5zLCBubV9pcDRfY29uZmlnX2dldF9kb21haW4gKGNvbmZpZywgaSksCisrCQkJICAgICAgICAgICAgbm1faXA0X2NvbmZpZ19nZXRfbmV2ZXJfZGVmYXVsdCAoY29uZmlnKSk7CisrCQl9CisrCX0KKyt9CisrCisrc3RhdGljIHZvaWQKKytmcmVlX3BlbmRpbmdfdXBkYXRlcyAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWQgKnNlbGYpCisreworKwlOTURuc1N5c3RlbWRSZXNvbHZlZFByaXZhdGUgKnByaXYgPSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfUFJJVkFURSAoc2VsZik7CisrCUdWYXJpYW50ICp2OworKworKwl3aGlsZSAoKHYgPSBnX3F1ZXVlX3BvcF9oZWFkICgmcHJpdi0+ZG5zX3VwZGF0ZXMpKSAhPSBOVUxMKQorKwkJZ192YXJpYW50X3VucmVmICh2KTsKKysKKysJd2hpbGUgKCh2ID0gZ19xdWV1ZV9wb3BfaGVhZCAoJnByaXYtPmRvbWFpbl91cGRhdGVzKSkgIT0gTlVMTCkKKysJCWdfdmFyaWFudF91bnJlZiAodik7CisrfQorKworK3N0YXRpYyB2b2lkCisrcHJlcGFyZV9vbmVfaW50ZXJmYWNlIChOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZiwgSW50ZXJmYWNlQ29uZmlnICppYykKKyt7CisrCU5NRG5zU3lzdGVtZFJlc29sdmVkUHJpdmF0ZSAqcHJpdiA9IE5NX0ROU19TWVNURU1EX1JFU09MVkVEX0dFVF9QUklWQVRFIChzZWxmKTsKKysJR1ZhcmlhbnRCdWlsZGVyIGRucywgZG9tYWluczsKKysJR0xpc3QgKmw7CisrCisrCWdfdmFyaWFudF9idWlsZGVyX2luaXQgKCZkbnMsIEdfVkFSSUFOVF9UWVBFICgiKGlhKGlheSkpIikpOworKwlnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKCZkbnMsICJpIiwgaWMtPmlmaW5kZXgpOworKwlnX3ZhcmlhbnRfYnVpbGRlcl9vcGVuICgmZG5zLCBHX1ZBUklBTlRfVFlQRSAoImEoaWF5KSIpKTsKKysKKysJZ192YXJpYW50X2J1aWxkZXJfaW5pdCAoJmRvbWFpbnMsIEdfVkFSSUFOVF9UWVBFICgiKGlhKHNiKSkiKSk7CisrCWdfdmFyaWFudF9idWlsZGVyX2FkZCAoJmRvbWFpbnMsICJpIiwgaWMtPmlmaW5kZXgpOworKwlnX3ZhcmlhbnRfYnVpbGRlcl9vcGVuICgmZG9tYWlucywgR19WQVJJQU5UX1RZUEUgKCJhKHNiKSIpKTsKKysKKysJZm9yIChsID0gaWMtPmNvbmZpZ3MgOyBsICE9IE5VTEwgOyBsID0gZ19saXN0X25leHQgKGwpKSB7CisrCQlpZiAoTk1fSVNfSVA0X0NPTkZJRyAobC0+ZGF0YSkpCisrCQkJdXBkYXRlX2FkZF9pcDRfY29uZmlnIChzZWxmLCAmZG5zLCAmZG9tYWlucywgbC0+ZGF0YSk7CisrCQllbHNlIGlmIChOTV9JU19JUDZfQ09ORklHIChsLT5kYXRhKSkKKysJCQl1cGRhdGVfYWRkX2lwNl9jb25maWcgKHNlbGYsICZkbnMsICZkb21haW5zLCBsLT5kYXRhKTsKKysJCWVsc2UKKysJCQlnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKysJfQorKwlnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSAoJmRucyk7CisrCWdfdmFyaWFudF9idWlsZGVyX2Nsb3NlICgmZG9tYWlucyk7CisrCisrCWdfcXVldWVfcHVzaF90YWlsICgmcHJpdi0+ZG5zX3VwZGF0ZXMsCisrCSAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfcmVmX3NpbmsgKGdfdmFyaWFudF9idWlsZGVyX2VuZCAoJmRucykpKTsKKysJZ19xdWV1ZV9wdXNoX3RhaWwgKCZwcml2LT5kb21haW5fdXBkYXRlcywKKysJICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9yZWZfc2luayAoZ192YXJpYW50X2J1aWxkZXJfZW5kICgmZG9tYWlucykpKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytzZW5kX3VwZGF0ZXMgKE5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmKQorK3sKKysJTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlICpwcml2ID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRURfR0VUX1BSSVZBVEUgKHNlbGYpOworKwlHVmFyaWFudCAqdjsKKysKKysJbm1fY2xlYXJfZ19jYW5jZWxsYWJsZSAoJnByaXYtPnVwZGF0ZV9jYW5jZWxsYWJsZSk7CisrCisrCWlmICghcHJpdi0+cmVzb2x2ZSkKKysJCXJldHVybjsKKysKKysJcHJpdi0+dXBkYXRlX2NhbmNlbGxhYmxlID0gZ19jYW5jZWxsYWJsZV9uZXcgKCk7CisrCisrCXdoaWxlICgodiA9IGdfcXVldWVfcG9wX2hlYWQgKCZwcml2LT5kbnNfdXBkYXRlcykpICE9IE5VTEwpIHsKKysJCWdfZGJ1c19wcm94eV9jYWxsIChwcml2LT5yZXNvbHZlLCAiU2V0TGlua0ROUyIsIHYsCisrCQkgICAgICAgICAgICAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKysJCSAgICAgICAgICAgICAgICAgICAtMSwgcHJpdi0+dXBkYXRlX2NhbmNlbGxhYmxlLCBjYWxsX2RvbmUsIHNlbGYpOworKwkJZ192YXJpYW50X3VucmVmICh2KTsKKysJfQorKworKwl3aGlsZSAoKHYgPSBnX3F1ZXVlX3BvcF9oZWFkICgmcHJpdi0+ZG9tYWluX3VwZGF0ZXMpKSAhPSBOVUxMKSB7CisrCQlnX2RidXNfcHJveHlfY2FsbCAocHJpdi0+cmVzb2x2ZSwgIlNldExpbmtEb21haW5zIiwgdiwKKysJCSAgICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAorKwkJICAgICAgICAgICAgICAgICAgIC0xLCBwcml2LT51cGRhdGVfY2FuY2VsbGFibGUsIGNhbGxfZG9uZSwgc2VsZik7CisrCQlnX3ZhcmlhbnRfdW5yZWYgKHYpOworKwl9CisrfQorKworK3N0YXRpYyBnYm9vbGVhbgorK3VwZGF0ZSAoTk1EbnNQbHVnaW4gKnBsdWdpbiwKKysgICAgICAgIGNvbnN0IE5NRG5zSVBDb25maWdEYXRhICoqY29uZmlncywKKysgICAgICAgIGNvbnN0IE5NR2xvYmFsRG5zQ29uZmlnICpnbG9iYWxfY29uZmlnLAorKyAgICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWUpCisreworKwlOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZiA9IE5NX0ROU19TWVNURU1EX1JFU09MVkVEIChwbHVnaW4pOworKwlHQXJyYXkgKmludGVyZmFjZXMgPSBnX2FycmF5X25ldyAoVFJVRSwgVFJVRSwgc2l6ZW9mIChJbnRlcmZhY2VDb25maWcpKTsKKysJY29uc3QgTk1EbnNJUENvbmZpZ0RhdGEgKipjOworKwlpbnQgaTsKKysKKysJZm9yIChjID0gY29uZmlnczsgKmMgIT0gTlVMTDsgYysrKQorKwkJYWRkX2ludGVyZmFjZV9jb25maWd1cmF0aW9uIChzZWxmLCBpbnRlcmZhY2VzLCAqYyk7CisrCisrCWZyZWVfcGVuZGluZ191cGRhdGVzIChzZWxmKTsKKysKKysJZm9yIChpID0gMDsgaSA8IGludGVyZmFjZXMtPmxlbjsgaSsrKSB7CisrCQlJbnRlcmZhY2VDb25maWcgKmljID0gJmdfYXJyYXlfaW5kZXggKGludGVyZmFjZXMsIEludGVyZmFjZUNvbmZpZywgaSk7CisrCisrCQlwcmVwYXJlX29uZV9pbnRlcmZhY2UgKHNlbGYsIGljKTsKKysJCWdfbGlzdF9mcmVlIChpYy0+Y29uZmlncyk7CisrCX0KKysKKysJZ19hcnJheV9mcmVlIChpbnRlcmZhY2VzLCBUUlVFKTsKKysKKysJc2VuZF91cGRhdGVzIChzZWxmKTsKKysKKysJcmV0dXJuIFRSVUU7CisrfQorKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK3N0YXRpYyBnYm9vbGVhbgorK2lzX2NhY2hpbmcgKE5NRG5zUGx1Z2luICpwbHVnaW4pCisreworKwlyZXR1cm4gVFJVRTsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKgorK2dldF9uYW1lIChOTURuc1BsdWdpbiAqcGx1Z2luKQorK3sKKysJcmV0dXJuICJzeXN0ZW1kLXJlc29sdmVkIjsKKyt9CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrTk1EbnNQbHVnaW4gKgorK25tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX25ldyAodm9pZCkKKyt7CisrCXJldHVybiBnX29iamVjdF9uZXcgKE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQsIE5VTEwpOworK30KKysKKytzdGF0aWMgdm9pZAorK3Jlc29sdmVkX3Byb3h5X2NyZWF0ZWQgKEdPYmplY3QgKnNvdXJjZSwgR0FzeW5jUmVzdWx0ICpyLCBncG9pbnRlciB1c2VyX2RhdGEpCisreworKwlOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZiA9IChOTURuc1N5c3RlbWRSZXNvbHZlZCAqKSB1c2VyX2RhdGE7CisrCU5NRG5zU3lzdGVtZFJlc29sdmVkUHJpdmF0ZSAqcHJpdjsKKysJZ3NfZnJlZV9lcnJvciBHRXJyb3IgKmVycm9yID0gTlVMTDsKKysJR0RCdXNQcm94eSAqcmVzb2x2ZTsKKysKKysJcmVzb2x2ZSA9IGdfZGJ1c19wcm94eV9uZXdfZmluaXNoIChyLCAmZXJyb3IpOworKwlpZiAoICAgIXJlc29sdmUKKysJICAgICYmIGdfZXJyb3JfbWF0Y2hlcyAoZXJyb3IsIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKKysJCXJldHVybjsKKysKKysJcHJpdiA9IE5NX0ROU19TWVNURU1EX1JFU09MVkVEX0dFVF9QUklWQVRFIChzZWxmKTsKKysJZ19jbGVhcl9vYmplY3QgKCZwcml2LT5pbml0X2NhbmNlbGxhYmxlKTsKKysJaWYgKCFyZXNvbHZlKSB7CisrCQlfTE9HVyAoImZhaWxlZCB0byBjb25uZWN0IHRvIHJlc29sdmVkIHZpYSBEQnVzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKysJCWdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoc2VsZiwgTk1fRE5TX1BMVUdJTl9GQUlMRUQpOworKwkJcmV0dXJuOworKwl9CisrCisrCXByaXYtPnJlc29sdmUgPSByZXNvbHZlOworKwlzZW5kX3VwZGF0ZXMgKHNlbGYpOworK30KKysKKysKKytzdGF0aWMgdm9pZAorK25tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX2luaXQgKE5NRG5zU3lzdGVtZFJlc29sdmVkICpzZWxmKQorK3sKKysJTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlICpwcml2ID0gTk1fRE5TX1NZU1RFTURfUkVTT0xWRURfR0VUX1BSSVZBVEUgKHNlbGYpOworKwlOTUJ1c01hbmFnZXIgKmRidXNfbWdyOworKwlHREJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb247CisrCisrCWdfcXVldWVfaW5pdCAoJnByaXYtPmRuc191cGRhdGVzKTsKKysJZ19xdWV1ZV9pbml0ICgmcHJpdi0+ZG9tYWluX3VwZGF0ZXMpOworKworKwlkYnVzX21nciA9IG5tX2J1c19tYW5hZ2VyX2dldCAoKTsKKysJZ19yZXR1cm5faWZfZmFpbCAoZGJ1c19tZ3IpOworKworKwljb25uZWN0aW9uID0gbm1fYnVzX21hbmFnZXJfZ2V0X2Nvbm5lY3Rpb24gKGRidXNfbWdyKTsKKysJZ19yZXR1cm5faWZfZmFpbCAoY29ubmVjdGlvbik7CisrCisrCXByaXYtPmluaXRfY2FuY2VsbGFibGUgPSBnX2NhbmNlbGxhYmxlX25ldyAoKTsKKysJZ19kYnVzX3Byb3h5X25ldyAoY29ubmVjdGlvbiwKKysJICAgICAgICAgICAgICAgICAgR19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9MT0FEX1BST1BFUlRJRVMgfAorKwkgICAgICAgICAgICAgICAgICBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0NPTk5FQ1RfU0lHTkFMUywKKysJICAgICAgICAgICAgICAgICAgTlVMTCwKKysJICAgICAgICAgICAgICAgICAgU1lTVEVNRF9SRVNPTFZFRF9EQlVTX1NFUlZJQ0UsCisrCSAgICAgICAgICAgICAgICAgIFNZU1RFTURfUkVTT0xWRURfREJVU19QQVRILAorKwkgICAgICAgICAgICAgICAgICBTWVNURU1EX1JFU09MVkVEX0RCVVNfU0VSVklDRSAiLk1hbmFnZXIiLAorKwkgICAgICAgICAgICAgICAgICBwcml2LT5pbml0X2NhbmNlbGxhYmxlLAorKwkgICAgICAgICAgICAgICAgICByZXNvbHZlZF9wcm94eV9jcmVhdGVkLAorKwkgICAgICAgICAgICAgICAgICBzZWxmKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytkaXNwb3NlIChHT2JqZWN0ICpvYmplY3QpCisreworKwlOTURuc1N5c3RlbWRSZXNvbHZlZCAqc2VsZiA9IE5NX0ROU19TWVNURU1EX1JFU09MVkVEIChvYmplY3QpOworKwlOTURuc1N5c3RlbWRSZXNvbHZlZFByaXZhdGUgKnByaXYgPSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9HRVRfUFJJVkFURSAoc2VsZik7CisrCisrCWZyZWVfcGVuZGluZ191cGRhdGVzIChzZWxmKTsKKysJZ19jbGVhcl9vYmplY3QgKCZwcml2LT5yZXNvbHZlKTsKKysJbm1fY2xlYXJfZ19jYW5jZWxsYWJsZSAoJnByaXYtPmluaXRfY2FuY2VsbGFibGUpOworKwlubV9jbGVhcl9nX2NhbmNlbGxhYmxlICgmcHJpdi0+dXBkYXRlX2NhbmNlbGxhYmxlKTsKKysKKysJR19PQkpFQ1RfQ0xBU1MgKG5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX3BhcmVudF9jbGFzcyktPmRpc3Bvc2UgKG9iamVjdCk7CisrfQorKworK3N0YXRpYyB2b2lkCisrbm1fZG5zX3N5c3RlbWRfcmVzb2x2ZWRfY2xhc3NfaW5pdCAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWRDbGFzcyAqZG5zX2NsYXNzKQorK3sKKysJTk1EbnNQbHVnaW5DbGFzcyAqcGx1Z2luX2NsYXNzID0gTk1fRE5TX1BMVUdJTl9DTEFTUyAoZG5zX2NsYXNzKTsKKysJR09iamVjdENsYXNzICpvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoZG5zX2NsYXNzKTsKKysKKysJZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChkbnNfY2xhc3MsIHNpemVvZiAoTk1EbnNTeXN0ZW1kUmVzb2x2ZWRQcml2YXRlKSk7CisrCisrCW9iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IGRpc3Bvc2U7CisrCisrCXBsdWdpbl9jbGFzcy0+aXNfY2FjaGluZyA9IGlzX2NhY2hpbmc7CisrCXBsdWdpbl9jbGFzcy0+dXBkYXRlID0gdXBkYXRlOworKwlwbHVnaW5fY2xhc3MtPmdldF9uYW1lID0gZ2V0X25hbWU7CisrfQorKworZGlmZiAtLWdpdCBhL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtc3lzdGVtZC1yZXNvbHZlZC5oIGIvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1zeXN0ZW1kLXJlc29sdmVkLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40NWM2NGIzCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLXN5c3RlbWQtcmVzb2x2ZWQuaAorQEAgLTAsMCArMSw0NSBAQAorKy8qIC0qLSBNb2RlOiBDOyB0YWItd2lkdGg6IDQ7IGluZGVudC10YWJzLW1vZGU6IHQ7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLSAqLworKy8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisrICogYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmVkIEhhdCwgSW5jLgorKyAqIENvcHlyaWdodCAoQykgMjAxNiBTam9lcmQgU2ltb25zIDxzam9lcmRAbHVvbi5uZXQ+CisrICovCisrCisrI2lmbmRlZiBfX05FVFdPUktNQU5BR0VSX0ROU19TWVNURU1EX1JFU09MVkVEX0hfXworKyNkZWZpbmUgX19ORVRXT1JLTUFOQUdFUl9ETlNfU1lTVEVNRF9SRVNPTFZFRF9IX18KKysKKysjaW5jbHVkZSAibm0tZG5zLXBsdWdpbi5oIgorKworKyNkZWZpbmUgTk1fVFlQRV9ETlNfU1lTVEVNRF9SRVNPTFZFRCAgICAgICAgICAgIChubV9kbnNfc3lzdGVtZF9yZXNvbHZlZF9nZXRfdHlwZSAoKSkKKysjZGVmaW5lIE5NX0ROU19TWVNURU1EX1JFU09MVkVEKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBOTV9UWVBFX0ROU19TWVNURU1EX1JFU09MVkVELCBOTURuc1N5c3RlbWRSZXNvbHZlZCkpCisrI2RlZmluZSBOTV9ETlNfU1lTVEVNRF9SRVNPTFZFRF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBOTV9UWVBFX0ROU19TWVNURU1EX1JFU09MVkVELCBOTURuc1N5c3RlbWRSZXNvbHZlZENsYXNzKSkKKysjZGVmaW5lIE5NX0lTX0ROU19TWVNURU1EX1JFU09MVkVEKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBOTV9UWVBFX0ROU19TWVNURU1EX1JFU09MVkVEKSkKKysjZGVmaW5lIE5NX0lTX0ROU19TWVNURU1EX1JFU09MVkVEX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIE5NX1RZUEVfRE5TX1NZU1RFTURfUkVTT0xWRUQpKQorKyNkZWZpbmUgTk1fRE5TX1NZU1RFTURfUkVTT0xWRURfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgTk1fVFlQRV9ETlNfU1lTVEVNRF9SRVNPTFZFRCwgTk1EbnNTeXN0ZW1kUmVzb2x2ZWRDbGFzcykpCisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKwlOTURuc1BsdWdpbiBwYXJlbnQ7CisrfSBOTURuc1N5c3RlbWRSZXNvbHZlZDsKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrCU5NRG5zUGx1Z2luQ2xhc3MgcGFyZW50OworK30gTk1EbnNTeXN0ZW1kUmVzb2x2ZWRDbGFzczsKKysKKytHVHlwZSBubV9kbnNfc3lzdGVtZF9yZXNvbHZlZF9nZXRfdHlwZSAodm9pZCk7CisrCisrTk1EbnNQbHVnaW4gKm5tX2Ruc19zeXN0ZW1kX3Jlc29sdmVkX25ldyAodm9pZCk7CisrCisrI2VuZGlmIC8qIF9fTkVUV09SS01BTkFHRVJfRE5TX1NZU1RFTURfUkVTT0xWRURfSF9fICovCisrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRucy1yZXNvbHZlZC1hbHNvLWNoZWNrLWZvci1ldGMtcmVzb2x2LWNvbmYuc3lzdGVtZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtZG5zLXJlc29sdmVkLWFsc28tY2hlY2stZm9yLWV0Yy1yZXNvbHYtY29uZi5zeXN0ZW1kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhN2U0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRucy1yZXNvbHZlZC1hbHNvLWNoZWNrLWZvci1ldGMtcmVzb2x2LWNvbmYuc3lzdGVtZC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDZmNzk5ZjFmMGU2OGNjN2JmODljMGE1NmFlYzVlY2Y0NjkzNzYxOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNhcmRvIFNhbHZldGkgPHJzYWx2ZXRpQHJzYWx2ZXRpLm5ldD4KK0RhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTA6MDI6MzggLTAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gZG5zL3Jlc29sdmVkOiBhbHNvIGNoZWNrIGZvciAvZXRjL3Jlc29sdi1jb25mLnN5c3RlbWQKKworT0Ugc3BlY2lmaWMgcmVzb2x2LmNvbmYgcGF0aCwgc28gaXQgY2FuIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBpZiBhdmFpbGFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFNhbHZldGkgPHJzYWx2ZXRpQHJzYWx2ZXRpLm5ldD4KKy0tLQorIHNyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvZG5zLW1hbmFnZXIvbm0tZG5zLW1hbmFnZXIuYyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jCitpbmRleCBjMWQyYmY3Li5kNzBkNGI0IDEwMDY0NAorLS0tIGEvc3JjL2Rucy1tYW5hZ2VyL25tLWRucy1tYW5hZ2VyLmMKKysrKyBiL3NyYy9kbnMtbWFuYWdlci9ubS1kbnMtbWFuYWdlci5jCitAQCAtMTU5Niw2ICsxNTk2LDcgQEAgX3Jlc29sdmNvbmZfcmVzb2x2ZWRfbWFuYWdlZCAodm9pZCkKKyAJCSIvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiIsCisgCQkiL2xpYi9zeXN0ZW1kL3Jlc29sdi5jb25mIiwKKyAJCSIvdXNyL2xpYi9zeXN0ZW1kL3Jlc29sdi5jb25mIiwKKysJCSIvZXRjL3Jlc29sdi1jb25mLnN5c3RlbWQiLAorIAl9OworIAlHRmlsZSAqZjsKKyAJR0ZpbGVJbmZvICppbmZvOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kb24tdC10cnktdG8tcnVuLXNiaW4tZGhjbGllbnQtdG8tZ2V0LXRoZS12ZXJzaW9uLW51LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kb24tdC10cnktdG8tcnVuLXNiaW4tZGhjbGllbnQtdG8tZ2V0LXRoZS12ZXJzaW9uLW51LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1kb24tdC10cnktdG8tcnVuLXNiaW4tZGhjbGllbnQtdG8tZ2V0LXRoZS12ZXJzaW9uLW51LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLWRvbi10LXRyeS10by1ydW4tc2Jpbi1kaGNsaWVudC10by1nZXQtdGhlLXZlcnNpb24tbnUucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtc3lzdGVtZC14bG9jYWxlLmgtaXMtZHJvcHBlZC1ieS1uZXdlci1nbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtc3lzdGVtZC14bG9jYWxlLmgtaXMtZHJvcHBlZC1ieS1uZXdlci1nbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjM0ZTJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1zeXN0ZW1kLXhsb2NhbGUuaC1pcy1kcm9wcGVkLWJ5LW5ld2VyLWdsaWJjLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYTliZmU2ZjIwMjlkNzVjYWYyOGZjZGYzZTc0MDg0M2NmNjM1OTYxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDA3OjMxOjI1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBzeXN0ZW1kOiB4bG9jYWxlLmggaXMgZHJvcHBlZCBieSBuZXdlciBnbGliYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK2luZGV4IDljMjFlNWEuLmRkOTVkMWYgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCisrKysgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCitAQCAtMjUsMTEgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpZmRlZiBfX0dMSUJDX18KKy0jaW5jbHVkZSA8eGxvY2FsZS5oPgorLSNlbHNlCisgI2luY2x1ZGUgPGxvY2FsZS5oPgorLSNlbmRpZgorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImV4dHJhY3Qtd29yZC5oIgorICNpbmNsdWRlICJtYWNyby5oIgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItRml4LW5tLXZlcnNpb24tbWFjcm8taW5jbHVkZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeC1ubS12ZXJzaW9uLW1hY3JvLWluY2x1ZGVzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1GaXgtbm0tdmVyc2lvbi1tYWNyby1pbmNsdWRlcy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1GaXgtbm0tdmVyc2lvbi1tYWNyby1pbmNsdWRlcy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItc29ja2V0LXV0aWwuaC1JbmNsdWRlLWxpbnV4LXNvY2tpb3MuaC1vbi1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1zb2NrZXQtdXRpbC5oLUluY2x1ZGUtbGludXgtc29ja2lvcy5oLW9uLW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLXNvY2tldC11dGlsLmgtSW5jbHVkZS1saW51eC1zb2NraW9zLmgtb24tbXVzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1zb2NrZXQtdXRpbC5oLUluY2x1ZGUtbGludXgtc29ja2lvcy5oLW9uLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItdXNlci1mb3JtYXQtc3RyaW5nLWluLWdfZGJ1c19tZXNzYWdlX25ld19tZXRob2RfZXJyby5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItdXNlci1mb3JtYXQtc3RyaW5nLWluLWdfZGJ1c19tZXNzYWdlX25ld19tZXRob2RfZXJyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzJiNWMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi11c2VyLWZvcm1hdC1zdHJpbmctaW4tZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gYWRjMDY2OGI4NTQyODlhMTFjZmMyOTU5N2I1NTY2YmExODY5ZDE3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDA3OjMyOjA5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSB1c2VyIGZvcm1hdCBzdHJpbmcgaW4gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAoKQorCitUaGlzIGZpeGVzIGZvcm1hdCBlcnJvcnMgd2l0aCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL25tLW1hbmFnZXIuYyB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL25tLW1hbmFnZXIuYyBiL3NyYy9ubS1tYW5hZ2VyLmMKK2luZGV4IGMzZDY1Y2QuLmU4MTQ5MTIgMTAwNjQ0CistLS0gYS9zcmMvbm0tbWFuYWdlci5jCisrKysgYi9zcmMvbm0tbWFuYWdlci5jCitAQCAtNDg3MSw2ICs0ODcxLDcgQEAgcHJvcF9zZXRfYXV0aF9kb25lX2NiIChOTUF1dGhDaGFpbiAqY2hhaW4sCisgCWlmIChlcnJvciB8fCAocmVzdWx0ICE9IE5NX0FVVEhfQ0FMTF9SRVNVTFRfWUVTKSkgeworIAkJcmVwbHkgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yIChwZmQtPm1lc3NhZ2UsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5NX1BFUk1fREVOSUVEX0VSUk9SLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2FnZSA9ICJOb3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIikpOworIAkJaWYgKGVycm9yKQorIAkJCWVycm9yX21lc3NhZ2UgPSBlcnJvci0+bWVzc2FnZTsKK0BAIC00ODgyLDYgKzQ4ODMsNyBAQCBwcm9wX3NldF9hdXRoX2RvbmVfY2IgKE5NQXV0aENoYWluICpjaGFpbiwKKyAJaWYgKCFvYmplY3QpIHsKKyAJCXJlcGx5ID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAocGZkLT5tZXNzYWdlLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMuRXJyb3IuVW5rbm93bk9iamVjdCIsCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcl9tZXNzYWdlID0gIk9iamVjdCBkb2Vzbid0IGV4aXN0LiIpKTsKKyAJCWdvdG8gZG9uZTsKKyAJfQorQEAgLTQ4OTAsNiArNDg5Miw3IEBAIHByb3Bfc2V0X2F1dGhfZG9uZV9jYiAoTk1BdXRoQ2hhaW4gKmNoYWluLAorIAlpZiAoIW5tX2V4cG9ydGVkX29iamVjdF9nZXRfaW50ZXJmYWNlX2J5X3R5cGUgKG9iamVjdCwgcGZkLT5pbnRlcmZhY2VfdHlwZSkpIHsKKyAJCXJlcGx5ID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAocGZkLT5tZXNzYWdlLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMuRXJyb3IuSW52YWxpZEFyZ3MiLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2FnZSA9ICJPYmplY3QgaXMgb2YgdW5leHBlY3RlZCB0eXBlLiIpKTsKKyAJCWdvdG8gZG9uZTsKKyAJfQorQEAgLTQ5MDUsNiArNDkwOCw3IEBAIHByb3Bfc2V0X2F1dGhfZG9uZV9jYiAoTk1BdXRoQ2hhaW4gKmNoYWluLAorIAkJaWYgKGdsb2JhbF9kbnMgJiYgIW5tX2dsb2JhbF9kbnNfY29uZmlnX2lzX2ludGVybmFsIChnbG9iYWxfZG5zKSkgeworIAkJCXJlcGx5ID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAocGZkLT5tZXNzYWdlLAorIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk1fUEVSTV9ERU5JRURfRVJST1IsCisrCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAorIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yX21lc3NhZ2UgPSAiR2xvYmFsIEROUyBjb25maWd1cmF0aW9uIGFscmVhZHkgc2V0IHZpYSBjb25maWd1cmF0aW9uIGZpbGUiKSk7CisgCQkJZ290byBkb25lOworIAkJfQorQEAgLTQ5NDksNiArNDk1Myw3IEBAIGRvX3NldF9wcm9wZXJ0eV9jaGVjayAoZ3BvaW50ZXIgdXNlcl9kYXRhKQorIAlpZiAoIXBmZC0+c3ViamVjdCkgeworIAkJcmVwbHkgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2Vycm9yIChwZmQtPm1lc3NhZ2UsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5NX1BFUk1fREVOSUVEX0VSUk9SLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3JfbWVzc2FnZSA9ICJDb3VsZCBub3QgZGV0ZXJtaW5lIHJlcXVlc3QgVUlELiIpKTsKKyAJCWdvdG8gb3V0OworIAl9CitAQCAtNDk1OCw2ICs0OTYzLDcgQEAgZG9fc2V0X3Byb3BlcnR5X2NoZWNrIChncG9pbnRlciB1c2VyX2RhdGEpCisgCWlmICghY2hhaW4pIHsKKyAJCXJlcGx5ID0gZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvciAocGZkLT5tZXNzYWdlLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTV9QRVJNX0RFTklFRF9FUlJPUiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yX21lc3NhZ2UgPSAiQ291bGQgbm90IGF1dGhlbnRpY2F0ZSByZXF1ZXN0LiIpKTsKKyAJCWdvdG8gb3V0OworIAl9CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMy1EZWZpbmUtRVRIX0FMRU4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAzLURlZmluZS1FVEhfQUxFTi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDMtRGVmaW5lLUVUSF9BTEVOLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAzLURlZmluZS1FVEhfQUxFTi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDQtRGVmaW5lLW1pc3NpbmctZmVhdHVyZXMtdG8tY2F0ZXItZm9yLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDA0LURlZmluZS1taXNzaW5nLWZlYXR1cmVzLXRvLWNhdGVyLWZvci1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNC1EZWZpbmUtbWlzc2luZy1mZWF0dXJlcy10by1jYXRlci1mb3ItbXVzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNC1EZWZpbmUtbWlzc2luZy1mZWF0dXJlcy10by1jYXRlci1mb3ItbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDUtc2QtbGxkcC5oLVJlbW92ZS1uZXQtZXRoZXJuZXQuaC1zZWVtcy10by1iZS1vdmVyLXNwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDUtc2QtbGxkcC5oLVJlbW92ZS1uZXQtZXRoZXJuZXQuaC1zZWVtcy10by1iZS1vdmVyLXNwZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDUtc2QtbGxkcC5oLVJlbW92ZS1uZXQtZXRoZXJuZXQuaC1zZWVtcy10by1iZS1vdmVyLXNwZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwNS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjQuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZjQ1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjQuNC5iYgpAQCAtMCwwICsxLDEzNiBAQAorU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvTmV0d29ya01hbmFnZXIiCitTRUNUSU9OID0gIm5ldC9taXNjIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmZmZDU2ODIyN2FkYTUwNjY0MGZlOTUwYTQ4MjNiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm5tLXV0aWwvQ09QWUlORzttZDU9MWM0ZmE3NjVkNmViM2NkMmZiZDg0MzQ0YTFiODE2Y2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9hcGkvaHRtbC9saWNlbnNlLmh0bWw7bWQ1PThlYjhlNzJiYWIwOTdiOWQxMTc2MzAwMmNiMDAzNjk3IFwKKyIKKworREVQRU5EUyA9ICIgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisgICAgbGlibmwgXAorICAgIGRidXMgXAorICAgIGRidXMtZ2xpYiBcCisgICAgZGJ1cy1nbGliLW5hdGl2ZSBcCisgICAgbGliZ3VkZXYgXAorICAgIHV0aWwtbGludXggXAorICAgIGxpYm5kcCBcCisgICAgbGlibmV3dCBcCisgICAgcG9sa2l0IFwKKyAgICBqYW5zc29uIFwKKyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIGJsdWV0b290aCBiYXNoLWNvbXBsZXRpb24gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworR0lfREFUQV9FTkFCTEVEX2xpYmMtbXVzbCA9ICJGYWxzZSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vTmV0d29ya01hbmFnZXIvJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS9OZXR3b3JrTWFuYWdlci0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kb24tdC10cnktdG8tcnVuLXNiaW4tZGhjbGllbnQtdG8tZ2V0LXRoZS12ZXJzaW9uLW51LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRml4LW5tLXZlcnNpb24tbWFjcm8taW5jbHVkZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGp1c3QtbmV0LWhlYWRlcnMtZm9yLW11c2wtY29tcGF0aWJpbGl0eS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXNvY2tldC11dGlsLmgtSW5jbHVkZS1saW51eC1zb2NraW9zLmgtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLURlZmluZS1FVEhfQUxFTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LURlZmluZS1taXNzaW5nLWZlYXR1cmVzLXRvLWNhdGVyLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtc2QtbGxkcC5oLVJlbW92ZS1uZXQtZXRoZXJuZXQuaC1zZWVtcy10by1iZS1vdmVyLXNwZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoZWNrLWZvci1zdHJuZHVwYS1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kbnMtcmVzb2x2ZWQtYWRkLXN5c3RlbWQtcmVzb2x2ZWQtYmFja2VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRucy1yZXNvbHZlZC1hbHNvLWNoZWNrLWZvci1ldGMtcmVzb2x2LWNvbmYuc3lzdGVtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c3RlbWQteGxvY2FsZS5oLWlzLWRyb3BwZWQtYnktbmV3ZXItZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2VyLWZvcm1hdC1zdHJpbmctaW4tZ19kYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9lcnJvLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzZjFlMGQ2ZDdlOTA5OTQ5OWQwNjJjODRjOTI3YTc1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyOTM3OGYzMThjYzAwOGQxMzhhMjNjYTZhOTE5MTkyOGNlNzUzNDRlN2U0N2EyZjJjMzVmNGFjODIxMzMzMDkiCisKK1MgPSAiJHtXT1JLRElSfS9OZXR3b3JrTWFuYWdlci0ke1BWfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWlmY2ZnLXJoIFwKKyAgICAtLWRpc2FibGUtaWZuZXQgXAorICAgIC0tZGlzYWJsZS1pZmNmZy1zdXNlIFwKKyAgICAtLWRpc2FibGUtbW9yZS13YXJuaW5ncyBcCisgICAgLS13aXRoLWlwdGFibGVzPSR7c2JpbmRpcn0vaXB0YWJsZXMgXAorICAgIC0td2l0aC10ZXN0cyBcCisgICAgLS13aXRoLW5tdHVpPXllcyBcCisiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vbGlibm0tdXRpbC8ubGlicyIKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIm5zcyBpZnVwZG93biBuZXRjb25maWcgZGhjbGllbnQgZG5zbWFzcSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBcCisgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnY29uc29sZWtpdCcsICcnLCBkKSwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICcke0JMVUVafScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICIgXAorICAgIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIC0td2l0aC1zZXNzaW9uLXRyYWNraW5nPXN5c3RlbWQgLS1lbmFibGUtcG9sa2l0LCBcCisgICAgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLCBcCisgICAgcG9sa2l0IFwKKyIKK1BBQ0tBR0VDT05GSUdbYmx1ZXo1XSA9ICItLWVuYWJsZS1ibHVlejUtZHVuLC0tZGlzYWJsZS1ibHVlejUtZHVuLGJsdWV6NSIKKyMgY29uc29sZWtpdCBpcyBub3QgcGlja2VkIGJ5IHNobGlicywgc28gYWRkIGl0IHRvIFJERVBFTkRTIHRvbworUEFDS0FHRUNPTkZJR1tjb25zb2xla2l0XSA9ICItLXdpdGgtc2Vzc2lvbi10cmFja2luZz1jb25zb2xla2l0LCxjb25zb2xla2l0LGNvbnNvbGVraXQiCitQQUNLQUdFQ09ORklHW2NvbmNoZWNrXSA9ICItLXdpdGgtbGlic291cD15ZXMsLS13aXRoLWxpYnNvdXA9bm8sbGlic291cC0yLjQiCitQQUNLQUdFQ09ORklHW21vZGVtbWFuYWdlcl0gPSAiLS13aXRoLW1vZGVtLW1hbmFnZXItMT15ZXMsLS13aXRoLW1vZGVtLW1hbmFnZXItMT1ubyxtb2RlbW1hbmFnZXIiCitQQUNLQUdFQ09ORklHW3BwcF0gPSAiLS1lbmFibGUtcHBwLC0tZGlzYWJsZS1wcHAscHBwLHBwcCIKKyMgVXNlIGZ1bGwgZmVhdHVyZWQgZGhjcCBjbGllbnQgaW5zdGVhZCBvZiBpbnRlcm5hbCBvbmUKK1BBQ0tBR0VDT05GSUdbZGhjbGllbnRdID0gIi0td2l0aC1kaGNsaWVudD0ke2Jhc2Vfc2JpbmRpcn0vZGhjbGllbnQsLCxkaGNwLWNsaWVudCIKK1BBQ0tBR0VDT05GSUdbZG5zbWFzcV0gPSAiLS13aXRoLWRuc21hc3E9JHtiaW5kaXJ9L2Ruc21hc3EiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLWNyeXB0bz1uc3MsLG5zcyIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtY3J5cHRvPWdudXRscywsZ251dGxzIgorUEFDS0FHRUNPTkZJR1t3aWZpXSA9ICItLWVuYWJsZS13aWZpPXllcywtLWVuYWJsZS13aWZpPW5vLHdpcmVsZXNzLXRvb2xzLHdwYS1zdXBwbGljYW50IHdpcmVsZXNzLXRvb2xzIgorUEFDS0FHRUNPTkZJR1tpZnVwZG93bl0gPSAiLS1lbmFibGUtaWZ1cGRvd24sLS1kaXNhYmxlLWlmdXBkb3duIgorUEFDS0FHRUNPTkZJR1tuZXRjb25maWddID0gIi0td2l0aC1uZXRjb25maWc9eWVzLC0td2l0aC1uZXRjb25maWc9bm8iCitQQUNLQUdFQ09ORklHW3F0NC14MTEtZnJlZV0gPSAiLS1lbmFibGUtcXQsLS1kaXNhYmxlLXF0LHF0NC14MTEtZnJlZSIKKworUEFDS0FHRVMgPSsgImxpYm5tdXRpbCBsaWJubWdsaWIgbGlibm1nbGliLXZwbiBcCisgICR7UE59LW5tdHVpICR7UE59LW5tdHVpLWRvYyBcCisgICR7UE59LWFkc2wgXAorIgorCitGSUxFU19saWJubXV0aWwgKz0gIiR7bGliZGlyfS9saWJubS11dGlsLnNvLioiCitGSUxFU19saWJubWdsaWIgKz0gIiR7bGliZGlyfS9saWJubS1nbGliLnNvLioiCitGSUxFU19saWJubWdsaWItdnBuICs9ICIke2xpYmRpcn0vbGlibm0tZ2xpYi12cG4uc28uKiIKKworRklMRVNfJHtQTn0tYWRzbCA9ICIke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvbGlibm0tZGV2aWNlLXBsdWdpbi1hZHNsLnNvIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmV4ZWNkaXJ9IFwKKyAgICAke2xpYmRpcn0vcHBwZC8qL25tLXBwcGQtcGx1Z2luLnNvIFwKKyAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvKi5zbyBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7YmFzZV9saWJkaXJ9L3VkZXYvKiBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJpcHRhYmxlcyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2Ruc21hc3EnLCBkKX0gXAorIgorUkNPTkZMSUNUU18ke1BOfSA9ICJjb25ubWFuIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisgICAgJHtkYXRhZGlyfS9OZXR3b3JrTWFuYWdlci9nZGItY21kIFwKKyAgICAke2xpYmRpcn0vcHBwZC8qLyoubGEgXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLmxhIFwKKyIKKworRklMRVNfJHtQTn0tbm10dWkgPSAiIFwKKyAgICAke2JpbmRpcn0vbm10dWkgXAorICAgICR7YmluZGlyfS9ubXR1aS1lZGl0IFwKKyAgICAke2JpbmRpcn0vbm10dWktY29ubmVjdCBcCisgICAgJHtiaW5kaXJ9L25tdHVpLWhvc3RuYW1lIFwKKyIKKworRklMRVNfJHtQTn0tbm10dWktZG9jID0gIiBcCisgICAgJHttYW5kaXJ9L21hbjEvbm10dWkqIFwKKyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIk5ldHdvcmtNYW5hZ2VyLnNlcnZpY2UgTmV0d29ya01hbmFnZXItZGlzcGF0Y2hlci5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtcmYgJHtEfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuY29ubmVjdC9vcGVuY29ubmVjdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuY29ubmVjdC9vcGVuY29ubmVjdF9naXQuYmIKaW5kZXggM2ExZjBmMy4uYzk0NDE0NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbmNvbm5lY3Qvb3BlbmNvbm5lY3RfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0X2dpdC5iYgpAQCAtMTQsOSArMTQsOSBAQAogIyBub3QgY29uZmlnIGRlZmF1bHRzCiBQQUNLQUdFQ09ORklHW3Bjc2MtbGl0ZV0gPSAiLS13aXRoLWxpYnBjc2NsaXRlLC0td2l0aG91dC1saWJwY3NjbGl0ZSxwY3NjLWxpdGUsIgogCi1QViA9ICI3LjA2IgorUFYgPSAiNy4wOCIKIAotU1JDUkVWID0gIjM1NTQyZDUyMjAyNjcyYjhjMTJlY2M2Mzg2NzQzMjEyODI0NDAxM2EiCitTUkNSRVYgPSAiOTY5N2JlYTBlNTA5NTJjYWI1NzA2MzIzOGI0M2E3MDk5ZTQ5OGNiYiIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvZHdtdzIvb3BlbmNvbm5lY3QuZ2l0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW5ldHdvcmttYW5hZ2VyL3B5dGhvbi1uZXR3b3JrbWFuYWdlcl8yLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1uZXR3b3JrbWFuYWdlci9weXRob24tbmV0d29ya21hbmFnZXJfMi4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0MWFhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1uZXR3b3JrbWFuYWdlci9weXRob24tbmV0d29ya21hbmFnZXJfMi4wLjEuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJFYXN5IGNvbW11bmljYXRpb24gd2l0aCBOZXR3b3JrTWFuYWdlciBmcm9tIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zZXZlYXMvcHl0aG9uLW5ldHdvcmttYW5hZ2VyIgorTElDRU5TRSA9ICJabGliIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04ZDhiYWMxNzRiZjg0MjJiMTUxMjAwZTZjYzc4ZWJlNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjVmYzY0NGE2NTQ2MzAzMTI5NWM2YjdkZDUxYTBmMWJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjMzY1MDc1MDZhZDI5YmZkYWM5NDFiMDk4N2ViZDFjYzk2MzNjOWE5MjkxZDczNzhlMjI5ZTQ1MTVhMGE1MTciCisKK1BZUElfUEFDS0FHRSA9ICJweXRob24tbmV0d29ya21hbmFnZXIiCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSA9ICJuZXR3b3JrbWFuYWdlciBweXRob24tZGJ1cyBweXRob24tc2l4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRhdGUvcmRhdGUvMDAwMS1yZGF0ZS1kZWZpbmUtbG9nd3RtcC1vbi1saWJjLWdsaWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRhdGUvcmRhdGUvMDAwMS1yZGF0ZS1kZWZpbmUtbG9nd3RtcC1vbi1saWJjLWdsaWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YmEyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGF0ZS9yZGF0ZS8wMDAxLXJkYXRlLWRlZmluZS1sb2d3dG1wLW9uLWxpYmMtZ2xpYmMucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBlMGM2OTBhY2ZjZGRkM2MzNDIxZjZlYjAxODJjNTQ4MTVmZDcwZjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMjM6MjE6MDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmRhdGU6IGRlZmluZSBsb2d3dG1wIG9uIGxpYmMgIT0gZ2xpYmMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9yZGF0ZS5jIHwgMTUgKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9yZGF0ZS5jIGIvc3JjL3JkYXRlLmMKK2luZGV4IDk0M2Q0ODEuLjY4NWIxYjggMTAwNjQ0CistLS0gYS9zcmMvcmRhdGUuYworKysrIGIvc3JjL3JkYXRlLmMKK0BAIC00MSw3ICs0MSwyMiBAQCBzdGF0aWMgaW50IHByaW50X21vZGUgPSAwOwkJLy8gZGlzcGxheSB0aGUgdGltZQorIHN0YXRpYyBpbnQgdGltZW91dCA9IDEwOwkJLy8gdGltZW91dCBmb3IgZWFjaCBjb25uZWN0aW9uIGF0dGVtcHQKKyBzdGF0aWMgY2hhciAqc2VydmljZSA9IERFRkFVTFRfU0VSVklDRTsKKyAKKysjaWZuZGVmIF9fR0xJQkNfXworK3N0YXRpYyB2b2lkIGxvZ3d0bXAoY29uc3QgY2hhciAqIGxpbmUsIGNvbnN0IGNoYXIgKiBuYW1lLCBjb25zdCBjaGFyICogaG9zdCkKKyt7CisrICAgIHN0cnVjdCB1dG1wIHU7CisrICAgIG1lbXNldCgmdSwgMCwgc2l6ZW9mKHUpKTsKKysKKysgICAgdS51dF9waWQgPSBnZXRwaWQoKTsKKysgICAgdS51dF90eXBlID0gbmFtZVswXSA/IFVTRVJfUFJPQ0VTUyA6IERFQURfUFJPQ0VTUzsKKysgICAgc3RybmNweSh1LnV0X2xpbmUsIGxpbmUsIHNpemVvZih1LnV0X2xpbmUpKTsKKysgICAgc3RybmNweSh1LnV0X25hbWUsIG5hbWUsIHNpemVvZih1LnV0X25hbWUpKTsKKysgICAgc3RybmNweSh1LnV0X2hvc3QsIGhvc3QsIHNpemVvZih1LnV0X2hvc3QpKTsKKysgICAgZ2V0dGltZW9mZGF5KCYodS51dF90diksIE5VTEwpOworIAorKyAgICB1cGR3dG1wKF9QQVRIX1dUTVAsICZ1KTsKKyt9CisrI2VuZGlmIC8qIF9fR0xJQkNfXyAqLworIAorIC8vIFJldHVybnMgc3RyaW5nIGZyb20gYWRkcmVzcyBpbmZvIHBvaW50ZXIKKyBzdGF0aWMgY2hhcioKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkYXRlL3JkYXRlLzAwMDEtc3JjLXJkYXRlLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkYXRlL3JkYXRlLzAwMDEtc3JjLXJkYXRlLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjY1MTg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRhdGUvcmRhdGUvMDAwMS1zcmMtcmRhdGUtRml4LXByaW50Zi1mb3JtYXQtZXJyb3JzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gZjU4YmNiNDNjMzFkMDhkZTU4ODUzYjA4ODY4MWNiZTRkZjM2Y2JmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI2IEp1biAyMDE3IDIyOjUwOjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy9yZGF0ZTogRml4IHByaW50ZiBmb3JtYXQgZXJyb3JzCisKK0ZpeGVzCisKK3JkYXRlLmM6ODU6NDE6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICBzeXNsb2coaXNfZXJyb3I/TE9HX1dBUk5JTkc6TE9HX0lORk8sIGJ1Zik7CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBzcmMvcmRhdGUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9yZGF0ZS5jIGIvc3JjL3JkYXRlLmMKK2luZGV4IDVjM2U4MjkuLjk0M2Q0ODEgMTAwNjQ0CistLS0gYS9zcmMvcmRhdGUuYworKysrIGIvc3JjL3JkYXRlLmMKK0BAIC04Miw3ICs4Miw3IEBAIHdyaXRlX2xvZyhpbnQgaXNfZXJyb3IsIGNoYXIgKmZvcm1hdCwgLi4uKQorIAkJcmV0dXJuOyAvKiBFcnJvciwgd2hpY2ggd2UgY2FuJ3QgcmVwb3J0IGJlY2F1c2UgdGhpcyBfaXNfIHRoZSBlcnJvcgorIAkJCQlyZXBvcnRpbmcgbWVjaGFuaXNtICovCisgCWlmKGxvZ19tb2RlKQorLQkJc3lzbG9nKGlzX2Vycm9yP0xPR19XQVJOSU5HOkxPR19JTkZPLCBidWYpOworKwkJc3lzbG9nKGlzX2Vycm9yP0xPR19XQVJOSU5HOkxPR19JTkZPLCAiJXMiLCBidWYpOworIAlpZihpc19lcnJvciB8fCBwcmludF9tb2RlKQorIAkJZnByaW50Zihpc19lcnJvcj9zdGRlcnI6c3Rkb3V0LCAiJXM6ICVzXG4iLCBhcmd2MCwgYnVmKTsKKyB9CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGF0ZS9yZGF0ZV8xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGF0ZS9yZGF0ZV8xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q0ZGIxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkYXRlL3JkYXRlXzEuNS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlRvb2wgZm9yIGdldHRpbmcgdGhlIGRhdGUvdGltZSBmcm9tIGEgcmVtb3RlIG1hY2hpbmUuIgorREVTQ1JJUFRJT04gPSAiVGhlIHJkYXRlIHV0aWxpdHkgcmV0cmlldmVzIHRoZSBkYXRlIGFuZCB0aW1lIGZyb20gXAorICBhbm90aGVyIG1hY2hpbmUgb24geW91ciBuZXR3b3JrLCB1c2luZyB0aGUgcHJvdG9jb2wgZGVzY3JpYmVkIGluIFJGQyA4NjguIFwKKyAgSWYgeW91IHJ1biByZGF0ZSBhcyByb290LCBpdCB3aWxsIHNldCB5b3VyIG1hY2hpbmUgbG9jYWwgdGltZSB0byB0aGUgXAorICB0aW1lIG9mIHRoZSBtYWNoaW5lIHRoYXQgeW91IHF1ZXJpZWQuIFwKKyIKKworSE9NRVBBR0U9ICJodHRwczovL3d3dy5hZWxpdXMuY29tL25qaC9yZGF0ZS8iCitTRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5hZWxpdXMuY29tL25qaC8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLXJkYXRlLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJkYXRlLWRlZmluZS1sb2d3dG1wLW9uLWxpYmMtZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMGE0ZjYxMjQ4MDc3N2ZkZjI1MjY0YWMwM2M1N2VhZTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmU4MDAwNTNlYWFjMmIyMWZmNDQ4NmVjNDJmMGFjYTcyMTQ5NDFjN2U1ZmNlZWRkNTkzZmEwYmU5OWI5MjI3ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWJiLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtYmItYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk1ZWFmOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWJiLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK0Zyb20gMjQ0ODYxZTJjOWJiOWNjNDRmNGJkMjQ2OTY0YmE4NTBhN2NmMTIxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhpbiBPdXlhbmcgPFhpbi5PdXlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTUgTWF5IDIwMTIgMTU6MDY6NDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmRpc3Q6IGJpdGJha2UgYnVpbGQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworLS0tCisgTWFrZWZpbGUubG9jYWwgICAgfCAgICA4ICsrKystLS0tCisgZG9jL01ha2VmaWxlLnJlYWwgfCAgICA0ICsrKy0KKyBzcmMvTWFrZWZpbGUucmVhbCB8ICAgIDEgKworIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUubG9jYWwgYi9NYWtlZmlsZS5sb2NhbAoraW5kZXggMjYwOTJiMi4uMzg5Y2I4NCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmxvY2FsCisrKysgYi9NYWtlZmlsZS5sb2NhbAorQEAgLTE0LDcgKzE0LDcgQEAKKyAjIEJJTl9ESVIgdmFyaWFibGUsIHlvdSB3b3VsZCB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lCisgIyBvciBhZGQgeW91ciBvd24gbGluZS4KKyAjCistI0JJTl9ESVIJPSAvdXNyL2JpbgorK0JJTl9ESVIJPSAke0RFU1RESVJ9LyR7YmluZGlyfQorIAorICMKKyAjIEFkZCBhbnkgbG9jYWwgZGVmaW5pdGlvbnMgeW91IHdhbnQgcGFzcyB0byB0aGUgY29tcGlsZXIgdG8gREVGU19MT0NBTAorQEAgLTQ2LDEzICs0NiwxMyBAQCBMSUJTX0xPQ0FMCT0KKyAjIFNldCBhIHNpdGUgc3BlY2lmaWMgaW5zdGFsbCBwcm9ncmFtIHRvIHVzZS4gIE11c3Qgc3VwcG9ydCBCU0Qgc3R5bGUKKyAjIGluc3RhbGwoMSkgYXJndW1lbnRzLgorICMKKy0jSU5TVEFMTAkJPSBpbnN0YWxsCisrSU5TVEFMTAkJPSBpbnN0YWxsCisgCisgIworICMgU2l0ZSBzcGVjaWZpYyBNYW4gUGFnZSBjb25maWd1cmF0aW9uLgorICMKKy0jTUFOXzFfRElSCT0gL3Vzci9sb2NhbC9tYW4vbWFuMQorLSNNQU5fOF9ESVIJPSAvdXNyL2xvY2FsL21hbi9tYW44CisrTUFOXzFfRElSCT0gJHtERVNURElSfS8ke21hbmRpcn0vbWFuMQorK01BTl84X0RJUgk9ICR7REVTVERJUn0vJHttYW5kaXJ9L21hbjgKKyAjTUFOX09XTkVSCT0gYmluCisgI01BTl9HUk9VUAk9IGJpbgorICNNQU5fTU9ERQk9IDY0NAorZGlmZiAtLWdpdCBhL2RvYy9NYWtlZmlsZS5yZWFsIGIvZG9jL01ha2VmaWxlLnJlYWwKK2luZGV4IDQyY2FiZWMuLmUzMmMzMGIgMTAwNjQ0CistLS0gYS9kb2MvTWFrZWZpbGUucmVhbAorKysrIGIvZG9jL01ha2VmaWxlLnJlYWwKK0BAIC0xNiw5ICsxNiwxMSBAQCBhbGw6CisgCisgZG9jOgorIAorLWluc3RhbGw6CisraW5zdGFsbDogaW5zdGFsbC5tYW4KKyAKKyBpbnN0YWxsLm1hbjogcmRpc3QubWFuIHJkaXN0ZC5tYW4KKysJdGVzdCAtZCAke01BTl8xX0RJUn0gfHwgJHtJTlNUQUxMfSAtZCAke01BTl8xX0RJUn0KKysJdGVzdCAtZCAke01BTl84X0RJUn0gfHwgJHtJTlNUQUxMfSAtZCAke01BTl84X0RJUn0KKyAJJHtJTlNUQUxMfSAke0lOU1RBTExfQVJHU30gcmRpc3QubWFuICR7Q0xJRU5UX0RFU1R9CisgCSR7SU5TVEFMTH0gJHtJTlNUQUxMX0FSR1N9IHJkaXN0ZC5tYW4gJHtTRVJWRVJfREVTVH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUucmVhbCBiL3NyYy9NYWtlZmlsZS5yZWFsCitpbmRleCAwMjE3OWU0Li45ZWM1NTFkIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLnJlYWwKKysrKyBiL3NyYy9NYWtlZmlsZS5yZWFsCitAQCAtNTIsNiArNTIsNyBAQCBjbGVhbjoKKyAJCSQoQ09NTU9OT0JKUykgJChNSVNTSU5HT0JKUykKKyAKKyBpbnN0YWxsOgorKwl0ZXN0IC1kICQoQklOX0RJUikgfHwgJChJTlNUQUxMKSAtZCAkKEJJTl9ESVIpCisgCSQoSU5TVEFMTCkgJHtJTl9BUkdTfSAtbyAkKEJJTl9PV05FUikgLW0gJHtSRElTVF9NT0RFfSBcCisgCQkkKENMSUVOVF9CSU4pICQoQklOX0RJUikvJChDTElFTlQpCisgCSQoSU5TVEFMTCkgJHtJTl9BUkdTfSAtbyAke0JJTl9PV05FUn0gLW0gJHtSRElTVERfTU9ERX0gXAorLS0gCisxLjcuNS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWJpc29uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtYmlzb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1NDkxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWJpc29uLnBhdGNoCkBAIC0wLDAgKzEsMTQ3IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvc3JjL2dyYW0ueS5iaXNvbgkxOTk4LTExLTEwIDA1OjEwOjQyLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9ncmFtLnkJMjAwMy0wNi0wNCAxNjowMjoxOS4wMDAwMDAwMDAgKzAyMDAKK0BAIC05MCwxMCArOTAsMTAgQEAKKyAJc3RydWN0IG5hbWVsaXN0ICAgICAgICAqbmFtZWw7CisgfQorIAorLSV0eXBlIDxvcHR2YWw+IE9QVElPTiwgb3B0aW9ucworLSV0eXBlIDxzdHJpbmc+IE5BTUUsIFNUUklORworLSV0eXBlIDxzdWJjbWQ+IElOU1RBTEwsIE5PVElGWSwgRVhDRVBULCBQQVRURVJOLCBTUEVDSUFMLCBDTURTUEVDSUFMLCBjbWRsaXN0LCBjbWQKKy0ldHlwZSA8bmFtZWw+IG5hbWVsaXN0LCBuYW1lcywgb3B0X25hbWVsaXN0IG5saXN0CisrJXR5cGUgPG9wdHZhbD4gT1BUSU9OIG9wdGlvbnMKKysldHlwZSA8c3RyaW5nPiBOQU1FIFNUUklORworKyV0eXBlIDxzdWJjbWQ+IElOU1RBTEwgTk9USUZZIEVYQ0VQVCBQQVRURVJOIFNQRUNJQUwgQ01EU1BFQ0lBTCBjbWRsaXN0IGNtZAorKyV0eXBlIDxuYW1lbD4gbmFtZWxpc3QgbmFtZXMgb3B0X25hbWVsaXN0IG5saXN0CisgCisgJSUKKyAKK0BAIC0xMDEsMTkgKzEwMSwxOSBAQAorIAkJfCBmaWxlIGNvbW1hbmQKKyAJCTsKKyAKKy1jb21tYW5kOgkgIE5BTUUgJz0nIG5hbWVsaXN0ID0geworK2NvbW1hbmQ6CSAgTkFNRSAnPScgbmFtZWxpc3QgeworIAkJCSh2b2lkKSBsb29rdXAoJDEsIElOU0VSVCwgJDMpOworIAkJfQorLQkJfCBuYW1lbGlzdCBBUlJPVyBuYW1lbGlzdCBjbWRsaXN0ID0geworKwkJfCBuYW1lbGlzdCBBUlJPVyBuYW1lbGlzdCBjbWRsaXN0IHsKKyAJCQlpbnNlcnQoKGNoYXIgKilOVUxMLCAkMSwgJDMsICQ0KTsKKyAJCX0KKy0JCXwgTkFNRSBDT0xPTiBuYW1lbGlzdCBBUlJPVyBuYW1lbGlzdCBjbWRsaXN0ID0geworKwkJfCBOQU1FIENPTE9OIG5hbWVsaXN0IEFSUk9XIG5hbWVsaXN0IGNtZGxpc3QgeworIAkJCWluc2VydCgkMSwgJDMsICQ1LCAkNik7CisgCQl9CistCQl8IG5hbWVsaXN0IERDT0xPTiBOQU1FIGNtZGxpc3QgPSB7CisrCQl8IG5hbWVsaXN0IERDT0xPTiBOQU1FIGNtZGxpc3QgeworIAkJCWFwcGVuZCgoY2hhciAqKU5VTEwsICQxLCAkMywgJDQpOworIAkJfQorLQkJfCBOQU1FIENPTE9OIG5hbWVsaXN0IERDT0xPTiBOQU1FIGNtZGxpc3QgPSB7CisrCQl8IE5BTUUgQ09MT04gbmFtZWxpc3QgRENPTE9OIE5BTUUgY21kbGlzdCB7CisgCQkJYXBwZW5kKCQxLCAkMywgJDUsICQ2KTsKKyAJCX0KKyAJCXwgZXJyb3IKK0BAIC0xMzMsMTAgKzEzMywxMCBAQAorIAkJfQorIAkJOworIAorLW5saXN0OgkgIE5BTUUgPSB7Cisrbmxpc3Q6CSAgTkFNRSB7CisgCQkJJCQgPSBtYWtlbmwoJDEpOworIAkJfQorLQkJfCAnKCcgbmFtZXMgJyknID0geworKwkJfCAnKCcgbmFtZXMgJyknIHsKKyAJCQkkJCA9ICQyOworIAkJfQorIAkJOworQEAgLTE0NCw3ICsxNDQsNyBAQAorIG5hbWVzOgkJICAvKiBWT0lEICovIHsKKyAJCQkkJCA9IGxhc3RfbiA9IE5VTEw7CisgCQl9CistCQl8IG5hbWVzIE5BTUUgPSB7CisrCQl8IG5hbWVzIE5BTUUgeworIAkJCWlmIChsYXN0X24gPT0gTlVMTCkKKyAJCQkJJCQgPSBsYXN0X24gPSBtYWtlbmwoJDIpOworIAkJCWVsc2UgeworQEAgLTE1OCw3ICsxNTgsNyBAQAorIGNtZGxpc3Q6CSAgLyogVk9JRCAqLyB7CisgCQkJJCQgPSBsYXN0X3NjID0gTlVMTDsKKyAJCX0KKy0JCXwgY21kbGlzdCBjbWQgPSB7CisrCQl8IGNtZGxpc3QgY21kIHsKKyAJCQlpZiAobGFzdF9zYyA9PSBOVUxMKQorIAkJCQkkJCA9IGxhc3Rfc2MgPSAkMjsKKyAJCQllbHNlIHsKK0BAIC0xNjksNyArMTY5LDcgQEAKKyAJCX0KKyAJCTsKKyAKKy1jbWQ6CQkgIElOU1RBTEwgb3B0aW9ucyBvcHRfbmFtZWxpc3QgJzsnID0geworK2NtZDoJCSAgSU5TVEFMTCBvcHRpb25zIG9wdF9uYW1lbGlzdCAnOycgeworIAkJCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqbmw7CisgCisgCQkJJDEtPnNjX29wdGlvbnMgPSAkMiB8IG9wdGlvbnM7CitAQCAtMTg1LDE3ICsxODUsMTcgQEAKKyAJCQl9CisgCQkJJCQgPSAkMTsKKyAJCX0KKy0JCXwgTk9USUZZIG5hbWVsaXN0ICc7JyA9IHsKKysJCXwgTk9USUZZIG5hbWVsaXN0ICc7JyB7CisgCQkJaWYgKCQyICE9IE5VTEwpCisgCQkJCSQxLT5zY19hcmdzID0gZXhwYW5kKCQyLCBFX1ZBUlMpOworIAkJCSQkID0gJDE7CisgCQl9CistCQl8IEVYQ0VQVCBuYW1lbGlzdCAnOycgPSB7CisrCQl8IEVYQ0VQVCBuYW1lbGlzdCAnOycgeworIAkJCWlmICgkMiAhPSBOVUxMKQorIAkJCQkkMS0+c2NfYXJncyA9IGV4cGFuZCgkMiwgRV9BTEwpOworIAkJCSQkID0gJDE7CisgCQl9CistCQl8IFBBVFRFUk4gbmFtZWxpc3QgJzsnID0geworKwkJfCBQQVRURVJOIG5hbWVsaXN0ICc7JyB7CisgCQkJc3RydWN0IG5hbWVsaXN0ICpubDsKKyAJCQljaGFyICpjcCwgKnJlX2NvbXAoKTsKKyAKK0BAIC0yMDUsMTMgKzIwNSwxMyBAQAorIAkJCSQxLT5zY19hcmdzID0gZXhwYW5kKCQyLCBFX1ZBUlMpOworIAkJCSQkID0gJDE7CisgCQl9CistCQl8IFNQRUNJQUwgb3B0X25hbWVsaXN0IFNUUklORyAnOycgPSB7CisrCQl8IFNQRUNJQUwgb3B0X25hbWVsaXN0IFNUUklORyAnOycgeworIAkJCWlmICgkMiAhPSBOVUxMKQorIAkJCQkkMS0+c2NfYXJncyA9IGV4cGFuZCgkMiwgRV9BTEwpOworIAkJCSQxLT5zY19uYW1lID0gJDM7CisgCQkJJCQgPSAkMTsKKyAJCX0KKy0JCXwgQ01EU1BFQ0lBTCBvcHRfbmFtZWxpc3QgU1RSSU5HICc7JyA9IHsKKysJCXwgQ01EU1BFQ0lBTCBvcHRfbmFtZWxpc3QgU1RSSU5HICc7JyB7CisgCQkJaWYgKCQyICE9IE5VTEwpCisgCQkJCSQxLT5zY19hcmdzID0gZXhwYW5kKCQyLCBFX0FMTCk7CisgCQkJJDEtPnNjX25hbWUgPSAkMzsKK0BAIC0yMTksMTggKzIxOSwxOCBAQAorIAkJfQorIAkJOworIAorLW9wdGlvbnM6CSAgLyogVk9JRCAqLyA9IHsKKytvcHRpb25zOgkgIC8qIFZPSUQgKi8geworIAkJCSQkID0gMDsKKyAJCX0KKy0JCXwgb3B0aW9ucyBPUFRJT04gPSB7CisrCQl8IG9wdGlvbnMgT1BUSU9OIHsKKyAJCQkkJCB8PSAkMjsKKyAJCX0KKyAJCTsKKyAKKy1vcHRfbmFtZWxpc3Q6CSAgLyogVk9JRCAqLyA9IHsKKytvcHRfbmFtZWxpc3Q6CSAgLyogVk9JRCAqLyB7CisgCQkJJCQgPSBOVUxMOworIAkJfQorLQkJfCBuYW1lbGlzdCA9IHsKKysJCXwgbmFtZWxpc3QgeworIAkJCSQkID0gJDE7CisgCQl9CisgCQk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1jbGVhbnVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtY2xlYW51cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDNkN2YxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtY2xlYW51cC5wYXRjaApAQCAtMCwwICsxLDIwODcgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbMV0KKworWzFdIE5vdCB0aGUgYXV0aG9yLCB0aGUgcGF0Y2ggaXMgZnJvbToKK2h0dHA6Ly92YXVsdC5jZW50b3Mub3JnLzUuOC9vcy9TUlBNUy9yZGlzdC02LjEuNS00NC5zcmMucnBtCisKKy0tLSByZGlzdC02LjEuNS9zcmMvZ3JhbS55LmNsZWFudXAJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvZ3JhbS55CTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtNDAsNyArNDAsNyBAQAorICAqIFNVQ0ggREFNQUdFLgorICAqLworIAorLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IGdyYW0ueSx2IDYuMzAgMTk5OC8xMS8xMCAwNDoxMDo0MiBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC0xNzAsNyArMTcwLDcgQEAKKyAJCTsKKyAKKyBjbWQ6CQkgIElOU1RBTEwgb3B0aW9ucyBvcHRfbmFtZWxpc3QgJzsnIHsKKy0JCQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKm5sOworKwkJCXN0cnVjdCBuYW1lbGlzdCAqbmw7CisgCisgCQkJJDEtPnNjX29wdGlvbnMgPSAkMiB8IG9wdGlvbnM7CisgCQkJaWYgKCQzICE9IE5VTEwpIHsKK0BAIC0yNDAsMTEgKzI0MCwxMSBAQAorIGludAl5eWxpbmVubyA9IDE7CisgZXh0ZXJuCUZJTEUgKmZpbjsKKyAKKy15eWxleCgpCisraW50IHl5bGV4KCkKKyB7CisgCXN0YXRpYyBjaGFyIHl5dGV4dFtJTk1BWF07CistCXJlZ2lzdGVyIGludCBjOworLQlyZWdpc3RlciBjaGFyICpjcDEsICpjcDI7CisrCWludCBjOworKwljaGFyICpjcDEsICpjcDI7CisgCXN0YXRpYyBjaGFyIHF1b3RlY2hhcnNbXSA9ICJbXXt9Kj8kIjsKKyAJCisgYWdhaW46CitAQCAtNDA5LDggKzQwOSw4IEBACisgICogc29tZSBvZiB0aGUgY2hhcmFjdGVycyB3ZSB1c2UuCisgICovCisgZXh0ZXJuIGludCBhbnkoYywgc3RyKQorLQlyZWdpc3RlciBpbnQgYzsKKy0JcmVnaXN0ZXIgY2hhciAqc3RyOworKwlpbnQgYzsKKysJY2hhciAqc3RyOworIHsKKyAJd2hpbGUgKCpzdHIpCisgCQlpZiAoYyA9PSAqc3RyKyspCitAQCAtNDIxLDEzICs0MjEsMTQgQEAKKyAvKgorICAqIEluc2VydCBvciBhcHBlbmQgQVJST1cgY29tbWFuZCB0byBsaXN0IG9mIGhvc3RzIHRvIGJlIHVwZGF0ZWQuCisgICovCisrdm9pZAorIGluc2VydChsYWJlbCwgZmlsZXMsIGhvc3RzLCBzdWJjbWRzKQorIAljaGFyICpsYWJlbDsKKyAJc3RydWN0IG5hbWVsaXN0ICpmaWxlcywgKmhvc3RzOworIAlzdHJ1Y3Qgc3ViY21kICpzdWJjbWRzOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IGNtZCAqYywgKnByZXYsICpuYzsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpoLCAqbGFzdGg7CisrCXN0cnVjdCBjbWQgKmMsICpwcmV2LCAqbmM7CisrCXN0cnVjdCBuYW1lbGlzdCAqaCwgKmxhc3RoOworIAorIAlkZWJ1Z21zZyhETV9DQUxMLCAiaW5zZXJ0KCVzLCAleCwgJXgsICV4KSBzdGFydCwgZmlsZXMgPSAlcyIsIAorIAkJIGxhYmVsID09IE5VTEwgPyAiKG51bGwpIiA6IGxhYmVsLAorQEAgLTQ3NSwxMyArNDc2LDE0IEBACisgICogQXBwZW5kIERDT0xPTiBjb21tYW5kIHRvIHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgbGlzdCBzaW5jZSB0aGVzZSBhcmUgYWx3YXlzCisgICogZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBkaXN0ZmlsZS4KKyAgKi8KKyt2b2lkCisgYXBwZW5kKGxhYmVsLCBmaWxlcywgc3RhbXAsIHN1YmNtZHMpCisgCWNoYXIgKmxhYmVsOworIAlzdHJ1Y3QgbmFtZWxpc3QgKmZpbGVzOworIAljaGFyICpzdGFtcDsKKyAJc3RydWN0IHN1YmNtZCAqc3ViY21kczsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBjbWQgKmM7CisrCXN0cnVjdCBjbWQgKmM7CisgCisgCWMgPSBBTExPQyhjbWQpOworIAljLT5jX3R5cGUgPSBEQ09MT047CitAQCAtNTAxLDYgKzUwMyw3IEBACisgLyoKKyAgKiBFcnJvciBwcmludGluZyByb3V0aW5lIGluIHBhcnNlci4KKyAgKi8KKyt2b2lkCisgeXllcnJvcihzKQorIAljaGFyICpzOworIHsKK0BAIC01MzAsNyArNTMzLDcgQEAKKyBtYWtlbmwobmFtZSkKKyAJY2hhciAqbmFtZTsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqbmw7CisrCXN0cnVjdCBuYW1lbGlzdCAqbmw7CisgCisgCWRlYnVnbXNnKERNX0NBTEwsICJtYWtlbmwoJXMpIiwgbmFtZSA9PSBOVUxMID8gIm51bGwiIDogbmFtZSk7CisgCitAQCAtNjI3LDcgKzYzMCw3IEBACisgbWFrZXN1YmNtZCh0eXBlKQorIAlpbnQgdHlwZTsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBzdWJjbWQgKnNjOworKwlzdHJ1Y3Qgc3ViY21kICpzYzsKKyAKKyAJc2MgPSBBTExPQyhzdWJjbWQpOworIAlzYy0+c2NfdHlwZSA9IHR5cGU7CistLS0gcmRpc3QtNi4xLjUvc3JjL3JkaXN0LmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjEzOjUwLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9yZGlzdC5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMzgsNyArMzgsNyBAQAorICAqIFNVQ0ggREFNQUdFLgorICAqLworIAorLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IHJkaXN0LmMsdiA2LjY2IDE5OTgvMTEvMTAgMDQ6MTM6NDkgbWNvb3BlciBFeHAgJCI7CisgCitAQCAtODAsNyArODAsNyBAQAorIAljaGFyICpuYW1lOworIAlzdHJ1Y3QgbmFtZWxpc3QgKipob3N0bGlzdDsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqcHRyLCAqbmV3OworKwlzdHJ1Y3QgbmFtZWxpc3QgKnB0ciwgKm5ldzsKKyAKKyAJaWYgKCFuYW1lIHx8ICFob3N0bGlzdCkKKyAJCXJldHVybjsKK0BAIC05NywxNCArOTcsMTUgQEAKKyAJCSpob3N0bGlzdCA9IG5ldzsKKyB9CisgCisraW50CisgbWFpbihhcmdjLCBhcmd2LCBlbnZwKQorIAlpbnQgYXJnYzsKKyAJY2hhciAqYXJndltdOworIAljaGFyICoqZW52cDsKKyB7CisgCXN0cnVjdCBuYW1lbGlzdCAqaG9zdGxpc3QgPSBOVUxMOworLQlyZWdpc3RlciBpbnQgeDsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWludCB4OworKwljaGFyICpjcDsKKyAJaW50IGNtZGFyZ3MgPSAwOworIAlpbnQgYzsKKyAKK0BAIC0xMTQsNyArMTE1LDcgQEAKKyAJICovCisgCXNldHByb2duYW1lKGFyZ3YpOworIAorLQlpZiAoY3AgPSBtc2dwYXJzZW9wdHMobG9jYWxtc2dsaXN0LCBUUlVFKSkgeworKwlpZiAoKGNwID0gbXNncGFyc2VvcHRzKGxvY2FsbXNnbGlzdCwgVFJVRSkpKSB7CisgCQllcnJvcigiQmFkIGJ1aWx0aW4gbG9nIG9wdGlvbiAoJXMpOiAlcy4iLCAKKyAJCSAgICAgIGxvY2FsbXNnbGlzdCwgY3ApOworIAkJdXNhZ2UoKTsKK0BAIC0xNTgsNyArMTU5LDcgQEAKKyAJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIG9wdGNoYXJzKSkgIT0gLTEpCisgCQlzd2l0Y2ggKGMpIHsKKyAJCWNhc2UgJ2wnOgorLQkJCWlmIChjcCA9IG1zZ3BhcnNlb3B0cyhvcHRhcmcsIFRSVUUpKSB7CisrCQkJaWYgKChjcCA9IG1zZ3BhcnNlb3B0cyhvcHRhcmcsIFRSVUUpKSkgeworIAkJCQllcnJvcigiQmFkIGxvZyBvcHRpb24gXCIlc1wiOiAlcy4iLCBvcHRhcmcsY3ApOworIAkJCQl1c2FnZSgpOworIAkJCX0KK0BAIC0yMDYsNyArMjA3LDcgQEAKKyAKKyAJCWNhc2UgJ0QnOgorIAkJCWRlYnVnID0gRE1fQUxMOworLQkJCWlmIChjcCA9IG1zZ3BhcnNlb3B0cygic3Rkb3V0PWFsbCxkZWJ1ZyIsIFRSVUUpKSB7CisrCQkJaWYgKChjcCA9IG1zZ3BhcnNlb3B0cygic3Rkb3V0PWFsbCxkZWJ1ZyIsIFRSVUUpKSkgeworIAkJCQllcnJvcigiRW5hYmxlIGRlYnVnIG1lc3NhZ2VzIGZhaWxlZDogJXMuIiwgY3ApOworIAkJCQl1c2FnZSgpOworIAkJCX0KK0BAIC0yNDUsNyArMjQ2LDcgQEAKKyAJCQkJZXJyb3IoIk5vIHBhdGggc3BlY2lmaWVkIHRvIFwiLVBcIi4iKTsKKyAJCQkJdXNhZ2UoKTsKKyAJCQl9CistCQkJaWYgKGNwID0gc2VhcmNocGF0aChvcHRhcmcpKQorKwkJCWlmICgoY3AgPSBzZWFyY2hwYXRoKG9wdGFyZykpKQorIAkJCQlwYXRoX3JlbXNoID0gc3RyZHVwKGNwKTsKKyAJCQllbHNlIHsKKyAJCQkJZXJyb3IoIk5vIGNvbXBvbmVudCBvZiBwYXRoIFwiJXNcIiBleGlzdHMuIiwKK0BAIC0yOTcsNyArMjk4LDcgQEAKKyAJZWxzZSB7CisgCQlpZiAoZmluID09IE5VTEwpCisgCQkJZmluID0gb3BlbmRpc3QoZGlzdGZpbGUpOworLQkJKHZvaWQpIHl5cGFyc2UoKTsKKysJCXl5cGFyc2UoKTsKKyAJCS8qCisgCQkgKiBOZWVkIHRvIGtlZXAgc3RkaW4gb3BlbiBmb3IgY2hpbGQgcHJvY2Vzc2luZyBsYXRlcgorIAkJICovCitAQCAtMzQ4LDYgKzM0OSw3IEBACisgLyoKKyAgKiBQcmludCB1c2FnZSBtZXNzYWdlIGFuZCBleGl0LgorICAqLworK3ZvaWQKKyB1c2FnZSgpCisgeworIAljaGFyICpzb3B0cyA9ICJjREZudiI7CitAQCAtMzc5LDEyICszODEsMTMgQEAKKyAvKgorICAqIHJjcCBsaWtlIGludGVyZmFjZSBmb3IgZGlzdHJpYnV0aW5nIGZpbGVzLgorICAqLworK3ZvaWQKKyBkb2NtZGFyZ3MobmFyZ3MsIGFyZ3MpCisgCWludCBuYXJnczsKKyAJY2hhciAqYXJnc1tdOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpubCwgKnByZXY7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwlzdHJ1Y3QgbmFtZWxpc3QgKm5sLCAqcHJldjsKKysJY2hhciAqY3A7CisgCXN0cnVjdCBuYW1lbGlzdCAqZmlsZXMsICpob3N0czsKKyAJc3RydWN0IHN1YmNtZCAqY21kczsKKyAJY2hhciAqZGVzdDsKK0BAIC00MzMsMTAgKzQzNiwxMCBAQAorICAqIEdldCBhIGxpc3Qgb2YgTkFNRSBibG9ja3MgKG1vc3RseSBmb3IgZGVidWdnaW5nKS4KKyAgKi8KKyBleHRlcm4gY2hhciAqZ2V0bmxzdHIobmwpCistCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqbmw7CisrCXN0cnVjdCBuYW1lbGlzdCAqbmw7CisgeworIAlzdGF0aWMgY2hhciBidWZbMTYzODRdOworLQlyZWdpc3RlciBpbnQgY291bnQgPSAwLCBsZW4gPSAwOworKwlpbnQgY291bnQgPSAwLCBsZW4gPSAwOworIAorIAkodm9pZCkgc3ByaW50ZihidWYsICIoIik7CisgCistLS0gcmRpc3QtNi4xLjUvc3JjL2NsaWVudC5jLmNsZWFudXAJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvY2xpZW50LmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogY2xpZW50LmMsdiA2LjgyIDE5OTgvMTEvMTAgMDQ6MDg6NDcgbWNvb3BlciBFeHAgJCI7CisgCitAQCAtODQsNyArODQsNyBAQAorIAlpbnQgZGVzdGRpcjsKKyB7CisgCWV4dGVybiBzdHJ1Y3QgbmFtZWxpc3QgKmZpbGVsaXN0OworLQlyZWdpc3RlciBjaGFyICpsbmFtZSwgKmNwOworKwljaGFyICpsbmFtZSwgKmNwOworIAlzdGF0aWMgY2hhciBidWZmW0JVRlNJWl07CisgCWludCBzcmNsZW4sIHBhdGhsZW47CisgCWNoYXIgKnA7CitAQCAtMTQ2LDcgKzE0Niw3IEBACisgCXN0cnVjdCBuYW1lbGlzdCAqbGlzdDsKKyAJY2hhciAqZmlsZTsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqbmw7CisrCXN0cnVjdCBuYW1lbGlzdCAqbmw7CisgCisgCWZvciAobmwgPSBsaXN0OyBubCAhPSBOVUxMOyBubCA9IG5sLT5uX25leHQpCisgCQlpZiAoc3RyY21wKGZpbGUsIG5sLT5uX25hbWUpID09IDApCitAQCAtMTYzLDcgKzE2Myw3IEBACisgCWNoYXIgKnJuYW1lOworIAlpbnQgZGVzdGRpcjsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBzdWJjbWQgKnNjOworKwlzdHJ1Y3Qgc3ViY21kICpzYzsKKyAJZXh0ZXJuIHN0cnVjdCBzdWJjbWQgKnN1YmNtZHM7CisgCWNoYXIgKnJmaWxlOworIAorQEAgLTIwMCw3ICsyMDAsNyBAQAorIHsKKyAJY2hhciAqcmZpbGU7CisgCXN0cnVjdCBuYW1lbGlzdCAqbmV3OworLQlyZWdpc3RlciBzdHJ1Y3Qgc3ViY21kICpzYzsKKysJc3RydWN0IHN1YmNtZCAqc2M7CisgCWV4dGVybiBzdHJ1Y3Qgc3ViY21kICpzdWJjbWRzOworIAlpbnQgaXNva2F5ID0gMDsKKyAKK0BAIC0yMjcsNyArMjI3LDcgQEAKKyAgKi8KKyBzdGF0aWMgdm9pZCBmcmVlY21kc3BlY2lhbGZpbGVzKCkKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqcHRyLCAqc2F2ZTsKKysJc3RydWN0IG5hbWVsaXN0ICpwdHIsICpzYXZlOworIAorIAlmb3IgKHB0ciA9IHVwZGZpbGVsaXN0OyBwdHI7ICkgeworIAkJaWYgKHB0ci0+bl9uYW1lKSAodm9pZCkgZnJlZShwdHItPm5fbmFtZSk7CitAQCAtMjQ5LDEwICsyNDksOCBAQAorIAljaGFyICoqZmlsZXY7CisgCW9wdF90IG9wdHM7CisgeworLQlyZWdpc3RlciBzdHJ1Y3Qgc3ViY21kICpzYzsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpmOworLQlyZWdpc3RlciBjaGFyICoqY3BwOworLQljaGFyICpmaWxlOworKwlzdHJ1Y3Qgc3ViY21kICpzYzsKKysJc3RydWN0IG5hbWVsaXN0ICpmOworIAlpbnQgZmlyc3QgPSBUUlVFOworIAorIAlmb3IgKHNjID0gY21kLT5jX2NtZHM7IHNjICE9IE5VTEw7IHNjID0gc2MtPnNjX25leHQpIHsKK0BAIC0yOTQsNyArMjkyLDcgQEAKKyBpbnQgY2hlY2tmaWxlbmFtZShuYW1lKQorIAljaGFyICpuYW1lOworIHsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWNoYXIgKmNwOworIAorIAlpZiAoc3RyY2hyKG5hbWUsICdcbicpKSB7CisgCQlmb3IgKGNwID0gbmFtZTsgKmNwOyBjcCsrKQorQEAgLTUwMSw3ICs0OTksNyBAQAorIHN0YXRpYyBpbnQgcm1jaGsob3B0cykKKyAJb3B0X3Qgb3B0czsKKyB7CistCXJlZ2lzdGVyIHVfY2hhciAqczsKKysJdV9jaGFyICpzOworIAlzdHJ1Y3Qgc3RhdCBzdGI7CisgCWludCBkaWR1cGRhdGUgPSAwOworIAlpbnQgbjsKK0BAIC02MTgsNyArNjE2LDcgQEAKKyAJCisgCW9wdGFyZ2V0ID0gcHRhcmdldDsKKyAJbGVuID0gcHRhcmdldCAtIHRhcmdldDsKKy0Jd2hpbGUgKGRwID0gcmVhZGRpcihkKSkgeworKwl3aGlsZSAoKGRwID0gcmVhZGRpcihkKSkpIHsKKyAJCWlmICghc3RyY21wKGRwLT5kX25hbWUsICIuIikgfHwKKyAJCSAgICAhc3RyY21wKGRwLT5kX25hbWUsICIuLiIpKQorIAkJCWNvbnRpbnVlOworQEAgLTYzMSw3ICs2MjksNyBAQAorIAkJaWYgKHB0YXJnZXRbLTFdICE9ICcvJykKKyAJCQkqcHRhcmdldCsrID0gJy8nOworIAkJY3AgPSBkcC0+ZF9uYW1lOworLQkJd2hpbGUgKCpwdGFyZ2V0KysgPSAqY3ArKykKKysJCXdoaWxlICgoKnB0YXJnZXQrKyA9ICpjcCsrKSkKKyAJCQk7CisgCQlwdGFyZ2V0LS07CisgCQlpZiAoc2VuZGl0KGRwLT5kX25hbWUsIG9wdHMsIGRlc3RkaXIpID4gMCkKK0BAIC03NzAsMTMgKzc2OCwxMyBAQAorIAlvcHRfdCBvcHRzOworIAlzdHJ1Y3Qgc3RhdCAqc3RhdHA7CisgeworLQlyZWdpc3RlciBvZmZfdCBzaXplOworLQlyZWdpc3RlciB0aW1lX3QgbXRpbWU7CisrCW9mZl90IHNpemU7CisrCXRpbWVfdCBtdGltZTsKKyAJdW5zaWduZWQgc2hvcnQgbG1vZGU7CisgCXVuc2lnbmVkIHNob3J0IHJtb2RlOworIAljaGFyICpvd25lciA9IE5VTEwsICpncm91cCA9IE5VTEw7CisgCWludCBkb25lLCBuOworLQl1X2NoYXIgKmNwOworKwljaGFyICpjcDsKKyAKKyAJZGVidWdtc2coRE1fQ0FMTCwgInVwZGF0ZSglcywgMHgleCwgMHgleClcbiIsIHJuYW1lLCBvcHRzLCBzdGF0cCk7CisgCitAQCAtMTAzNSw3ICsxMDMzLDYgQEAKKyAJaW50IGRlc3RkaXI7CisgeworIAlzdGF0aWMgc3RydWN0IHN0YXQgc3RiOworLQlleHRlcm4gc3RydWN0IHN1YmNtZCAqc3ViY21kczsKKyAJY2hhciAqdXNlciwgKmdyb3VwOworIAlpbnQgdSwgbGVuOworIAlpbnQgZGlkdXBkYXRlID0gMDsKK0BAIC0xMTU3LDcgKzExNTQsNyBAQAorIAkodm9pZCkgdW5saW5rKHN0YXRmaWxlKTsKKyAjZW5kaWYKKyAKKy0JaWYgKGZpbGUgPSBnZXRub3RpZnlmaWxlKCkpCisrCWlmICgoZmlsZSA9IGdldG5vdGlmeWZpbGUoKSkpCisgCQkodm9pZCkgdW5saW5rKGZpbGUpOworIH0KKyAKKy0tLSByZGlzdC02LjEuNS9zcmMvY2hpbGQuYy5jbGVhbnVwCTE5OTgtMTEtMTAgMDU6MTg6NTcuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL2NoaWxkLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogY2hpbGQuYyx2IDYuMjkgMTk5OC8xMS8xMCAwNDoxODo1NiBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC05MCw3ICs5MCw3IEBACisgc3RhdGljIHZvaWQgcmVtb3ZlY2hpbGQoY2hpbGQpCisgCUNISUxEICpjaGlsZDsKKyB7CistCXJlZ2lzdGVyIENISUxEICpwYywgKnByZXZwYzsKKysJQ0hJTEQgKnBjLCAqcHJldnBjOworIAorIAlkZWJ1Z21zZyhETV9DQUxMLCAicmVtb3ZlY2hpbGQoJXMsICVkLCAlZCkgc3RhcnQiLAorIAkJIGNoaWxkLT5jX25hbWUsIGNoaWxkLT5jX3BpZCwgY2hpbGQtPmNfcmVhZGZkKTsKK0BAIC0xNDgsNyArMTQ4LDcgQEAKKyBzdGF0aWMgQ0hJTEQgKmNvcHljaGlsZChjaGlsZCkKKyAJQ0hJTEQgKmNoaWxkOworIHsKKy0JcmVnaXN0ZXIgQ0hJTEQgKm5ld2M7CisrCUNISUxEICpuZXdjOworIAorIAluZXdjID0gKENISUxEICopIHhtYWxsb2Moc2l6ZW9mKENISUxEKSk7CisgCitAQCAtMTY3LDcgKzE2Nyw3IEBACisgc3RhdGljIHZvaWQgYWRkY2hpbGQoY2hpbGQpCisgCUNISUxEICpjaGlsZDsKKyB7CistCXJlZ2lzdGVyIENISUxEICpwYzsKKysJQ0hJTEQgKnBjOworIAorIAlkZWJ1Z21zZyhETV9DQUxMLCAiYWRkY2hpbGQoKSBzdGFydFxuIik7CisgCitAQCAtMjgwLDcgKzI4MCw3IEBACisgICovCisgc3RhdGljIHZvaWQgcmVhcCgpCisgeworLQlyZWdpc3RlciBDSElMRCAqcGM7CisrCUNISUxEICpwYzsKKyAJaW50IHN0YXR1cyA9IDA7CisgCXBpZF90IHBpZDsKKyAKK0BAIC0zMzYsNyArMzM2LDcgQEAKKyAgKi8KKyBzdGF0aWMgdm9pZCBjaGlsZHNjYW4oKSAKKyB7CistCXJlZ2lzdGVyIENISUxEICpwYywgKm5leHRwYzsKKysJQ0hJTEQgKnBjLCAqbmV4dHBjOworIAkKKyAJZGVidWdtc2coRE1fQ0FMTCwgImNoaWxkc2NhbigpIHN0YXJ0Iik7CisgCitAQCAtMzY2LDggKzM2Niw4IEBACisgZXh0ZXJuIHZvaWQgd2FpdHVwKCkKKyB7CisgI2lmCWRlZmluZWQoSEFWRV9TRUxFQ1QpCistCXJlZ2lzdGVyIGludCBjb3VudDsKKy0JcmVnaXN0ZXIgQ0hJTEQgKnBjOworKwlpbnQgY291bnQ7CisrCUNISUxEICpwYzsKKyAJZmRfc2V0IHJjaGlsZGZkczsKKyAKKyAJZGVidWdtc2coRE1fQ0FMTCwgIndhaXR1cCgpIHN0YXJ0XG4iKTsKKy0tLSByZGlzdC02LjEuNS9zcmMvZG9jbWQuYy5jbGVhbnVwCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL2RvY21kLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogZG9jbWQuYyx2IDYuODcgMTk5OC8xMS8xMCAwNDowODozMiBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC05OSwxMCArOTksMTAgQEAKKyAgKi8KKyBzdGF0aWMgdm9pZCBub3RpZnkocmhvc3QsIHRvLCBsbW9kKQorIAljaGFyICpyaG9zdDsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICp0bzsKKysJc3RydWN0IG5hbWVsaXN0ICp0bzsKKyAJdGltZV90IGxtb2Q7CisgeworLQlyZWdpc3RlciBpbnQgZmQsIGxlbjsKKysJaW50IGZkLCBsZW47CisgCUZJTEUgKnBmLCAqcG9wZW4oKTsKKyAJc3RydWN0IHN0YXQgc3RiOworIAlzdGF0aWMgY2hhciBidWZbQlVGU0laXTsKK0BAIC0yMjEsNyArMjIxLDcgQEAKKyAJc3RydWN0IGNtZCAqY21kOworIAlzdHJ1Y3QgY21kICpjbWRsaXN0OworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IGNtZCAqcGNtZDsKKysJc3RydWN0IGNtZCAqcGNtZDsKKyAJCisgCWZvciAocGNtZCA9IGNtZGxpc3Q7IHBjbWQ7IHBjbWQgPSBwY21kLT5jX25leHQpIHsKKyAJCWNoZWNrY21kKHBjbWQpOworQEAgLTIzOCw3ICsyMzgsNyBAQAorIAlzdHJ1Y3QgY21kICpjbWQ7CisgCXN0cnVjdCBjbWQgKmNtZGxpc3Q7CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgY21kICpwYzsKKysJc3RydWN0IGNtZCAqcGM7CisgCisgCWlmICghY21kKSB7CisgCQlkZWJ1Z21zZyhETV9NSVNDLCAibWFya2ZhaWxlZCgpIE5VTEwgY21kIHBhcmFtZXRlciIpOworQEAgLTMwOSw3ICszMDksNyBAQAorIHN0YXRpYyBpbnQgbWFrZWNvbm4ocmhvc3QpCisgCWNoYXIgKnJob3N0OworIHsKKy0JcmVnaXN0ZXIgY2hhciAqcnVzZXIsICpjcDsKKysJY2hhciAqcnVzZXIsICpjcDsKKyAJc3RhdGljIGNoYXIgKmN1cl9ob3N0ID0gTlVMTDsKKyAJZXh0ZXJuIGNoYXIgKmxvY3VzZXI7CisgCWV4dGVybiBsb25nIG1pbl9mcmVlZmlsZXMsIG1pbl9mcmVlc3BhY2U7CitAQCAtNDMwLDkgKzQzMCw5IEBACisgCXN0cnVjdCBjbWQgKmNtZDsKKyAJY2hhciAqKmZpbGV2OworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpmOworLQlyZWdpc3RlciBzdHJ1Y3Qgc3ViY21kICpzYzsKKy0JcmVnaXN0ZXIgY2hhciAqKmNwcDsKKysJc3RydWN0IG5hbWVsaXN0ICpmOworKwlzdHJ1Y3Qgc3ViY21kICpzYzsKKysJY2hhciAqKmNwcDsKKyAJaW50IG4sIGRkaXIsIGRlc3RkaXIsIG9wdHMgPSBvcHRpb25zOworIAlzdHJ1Y3QgbmFtZWxpc3QgKmZpbGVzOworIAlzdHJ1Y3Qgc3ViY21kICpzYmNtZHM7CitAQCAtNTY3LDcgKzU2Nyw2IEBACisgCQl9CisgCX0KKyAKKy1kb25lOgorIAkvKgorIAkgKiBSdW4gYW55IGNvbW1hbmRzIGZvciB0aGUgZW50aXJlIGNtZAorIAkgKi8KK0BAIC01ODQsNyArNTgzLDcgQEAKKyAJCQlub3RpZnkocmhvc3QsIHNjLT5zY19hcmdzLCAodGltZV90KSAwKTsKKyAKKyAJaWYgKCFuZmxhZykgeworLQkJcmVnaXN0ZXIgc3RydWN0IGxpbmtidWYgKm5leHRsLCAqbDsKKysJCXN0cnVjdCBsaW5rYnVmICpuZXh0bCwgKmw7CisgCisgCQlmb3IgKGwgPSBpaGVhZDsgbCAhPSBOVUxMOyBmcmVlbGlua2luZm8obCksIGwgPSBuZXh0bCkgeworIAkJCW5leHRsID0gbC0+bmV4dHA7CitAQCAtNjAxLDExICs2MDAsMTIgQEAKKyAJc2V0am1wX29rID0gRkFMU0U7CisgfQorIAorK2ludAorIG9rbmFtZShuYW1lKQorLQlyZWdpc3RlciBjaGFyICpuYW1lOworKwljaGFyICpuYW1lOworIHsKKy0JcmVnaXN0ZXIgY2hhciAqY3AgPSBuYW1lOworLQlyZWdpc3RlciBpbnQgYywgaXNiYWQ7CisrCWNoYXIgKmNwID0gbmFtZTsKKysJaW50IGMsIGlzYmFkOworIAorIAlmb3IgKGlzYmFkID0gRkFMU0U7ICpjcCAmJiAhaXNiYWQ7ICsrY3ApIHsKKyAJCWMgPSAqY3A7CitAQCAtNjI3LDkgKzYyNyw5IEBACisgCXN0cnVjdCBzdWJjbWQgKnNiY21kczsKKyAJY2hhciAqKmVudjsKKyB7CistCXJlZ2lzdGVyIERJUiAqZDsKKy0JcmVnaXN0ZXIgRElSRU5UUlkgKmRwOworLQlyZWdpc3RlciBjaGFyICpjcDsKKysJRElSICpkOworKwlESVJFTlRSWSAqZHA7CisrCWNoYXIgKmNwOworIAljaGFyICpvcHRhcmdldDsKKyAJaW50IGxlbjsKKyAKK0BAIC02NDEsNyArNjQxLDcgQEAKKyAJfQorIAlvcHRhcmdldCA9IHB0YXJnZXQ7CisgCWxlbiA9IHB0YXJnZXQgLSB0YXJnZXQ7CistCXdoaWxlIChkcCA9IHJlYWRkaXIoZCkpIHsKKysJd2hpbGUgKChkcCA9IHJlYWRkaXIoZCkpKSB7CisgCQlpZiAoIXN0cmNtcChkcC0+ZF9uYW1lLCAiLiIpIHx8ICFzdHJjbXAoZHAtPmRfbmFtZSwgIi4uIikpCisgCQkJY29udGludWU7CisgCQlpZiAobGVuICsgMSArIChpbnQpc3RybGVuKGRwLT5kX25hbWUpID49IEJVRlNJWiAtIDEpIHsKK0BAIC02NTEsNyArNjUxLDcgQEAKKyAJCXB0YXJnZXQgPSBvcHRhcmdldDsKKyAJCSpwdGFyZ2V0KysgPSAnLyc7CisgCQljcCA9IGRwLT5kX25hbWU7CistCQl3aGlsZSAoKnB0YXJnZXQrKyA9ICpjcCsrKQorKwkJd2hpbGUgKCgqcHRhcmdldCsrID0gKmNwKyspKQorIAkJCTsKKyAJCXB0YXJnZXQtLTsKKyAJCWNtcHRpbWUodGFyZ2V0LCBzYmNtZHMsIGVudik7CitAQCAtNzQwLDkgKzc0MCw5IEBACisgCXN0cnVjdCBjbWQgKmNtZDsKKyAJY2hhciAqKmZpbGV2OworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IHN1YmNtZCAqc2M7CistCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqZjsKKy0JcmVnaXN0ZXIgY2hhciAqY3AsICoqY3BwOworKwlzdHJ1Y3Qgc3ViY21kICpzYzsKKysJc3RydWN0IG5hbWVsaXN0ICpmOworKwljaGFyICpjcCwgKipjcHA7CisgCXN0cnVjdCBzdGF0IHN0YjsKKyAJc3RydWN0IG5hbWVsaXN0ICpmaWxlcyA9IGNtZC0+Y19maWxlczsKKyAJc3RydWN0IHN1YmNtZCAqc2JjbWRzID0gY21kLT5jX2NtZHM7CitAQCAtODI0LDggKzgyNCw4IEBACisgZXh0ZXJuIGludCBleGNlcHQoZmlsZSkKKyAJY2hhciAqZmlsZTsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdAlzdWJjbWQgKnNjOworLQlyZWdpc3RlciBzdHJ1Y3QJbmFtZWxpc3QgKm5sOworKwlzdHJ1Y3QJc3ViY21kICpzYzsKKysJc3RydWN0CW5hbWVsaXN0ICpubDsKKyAKKyAJZGVidWdtc2coRE1fQ0FMTCwgImV4Y2VwdCglcykiLCBmaWxlKTsKKyAKK0BAIC05MTgsOCArOTE4LDggQEAKKyAJaW50IGFyZ2M7CisgCWNoYXIgKiphcmd2OworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpmOworLQlyZWdpc3RlciBpbnQgaTsKKysJc3RydWN0IG5hbWVsaXN0ICpmOworKwlpbnQgaTsKKyAKKyAJaWYgKGFyZ2MpIHsKKyAJCWZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKK0BAIC05NjIsOSArOTYyLDkgQEAKKyAJaW50IGFyZ2M7CisgCWNoYXIgKiphcmd2OworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IGNtZCAqYzsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CistCXJlZ2lzdGVyIGludCBpOworKwlzdHJ1Y3QgY21kICpjOworKwljaGFyICpjcDsKKysJaW50IGk7CisgCisgCSh2b2lkKSBzaWduYWwoU0lHSFVQLCBzaWdoYW5kbGVyKTsKKyAJKHZvaWQpIHNpZ25hbChTSUdJTlQsIHNpZ2hhbmRsZXIpOworQEAgLTEwMzIsNyArMTAzMiw3IEBACisgCisgCQlpZiAoaG9zdGxpc3QpIHsKKyAJCQkvKiBEbyBzcGVjaWZpYyBob3N0cyBhcyBzcGVjaWZpZWQgb24gY29tbWFuZCBsaW5lICovCistCQkJcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICpubHB0cjsKKysJCQlzdHJ1Y3QgbmFtZWxpc3QgKm5scHRyOworIAorIAkJCWZvciAobmxwdHIgPSBob3N0bGlzdDsgbmxwdHI7IG5scHRyID0gbmxwdHItPm5fbmV4dCkKKyAJCQkJLyoKKy0tLSByZGlzdC02LjEuNS9zcmMvZGlzdG9wdC5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNTowOToxMS4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvZGlzdG9wdC5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtNiw3ICs2LDcgQEAKKyAgKiBhcHByb3ByaWF0ZWx5LgorICAqLworIAorLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IGRpc3RvcHQuYyx2IDYuMTIgMTk5OC8xMS8xMCAwNDowOToxMSBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC01NSw3ICs1NSw3IEBACisgZXh0ZXJuIERJU1RPUFRJTkZPICpnZXRkaXN0b3B0KG5hbWUpCisgCWNoYXIgKm5hbWU7CisgeworLQlyZWdpc3RlciBpbnQgaTsKKysJaW50IGk7CisgCisgCWZvciAoaSA9IDA7IGRpc3RvcHRpbmZvW2ldLmRvX25hbWU7ICsraSkKKyAJCWlmIChzdHJjYXNlY21wKG5hbWUsIGRpc3RvcHRpbmZvW2ldLmRvX25hbWUpID09IDApCitAQCAtNzQsNyArNzQsNyBAQAorIAlvcHRfdCAqb3B0cHRyOworIAlpbnQgZG9lcnJzOworIHsKKy0JcmVnaXN0ZXIgY2hhciAqc3RyaW5nLCAqb3B0c3RyOworKwljaGFyICpzdHJpbmcsICpvcHRzdHI7CisgCURJU1RPUFRJTkZPICpkaXN0b3B0OworIAlpbnQgbmVnYXRlOworIAorQEAgLTkzLDcgKzkzLDcgQEAKKyAJCSAqIGFuZCB0aGUgb3B0aW9uIHN0YXJ0cyB3aXRoICJubyIsIHN0cmlwICJubyIKKyAJCSAqIGZyb20gb3B0aW9uIGFuZCByZXRyeSBsb29rdXAuCisgCQkgKi8KKy0JCWlmIChkaXN0b3B0ID0gZ2V0ZGlzdG9wdChvcHRzdHIpKSB7CisrCQlpZiAoKGRpc3RvcHQgPSBnZXRkaXN0b3B0KG9wdHN0cikpKSB7CisgCQkJRkxBR19PTigqb3B0cHRyLCBkaXN0b3B0LT5kb192YWx1ZSk7CisgCQkJY29udGludWU7CisgCQl9CitAQCAtMTE2LDcgKzExNiw3IEBACisgICovCisgZXh0ZXJuIGNoYXIgKmdldGRpc3RvcHRsaXN0KCkKKyB7CistCXJlZ2lzdGVyIGludCBpOworKwlpbnQgaTsKKyAJc3RhdGljIGNoYXIgYnVmWzEwMjRdOworIAorIAlmb3IgKGkgPSAwLCBidWZbMF0gPSBDTlVMTDsgZGlzdG9wdGluZm9baV0uZG9fbmFtZTsgKytpKSB7CitAQCAtMTM4LDcgKzEzOCw3IEBACisgZXh0ZXJuIGNoYXIgKmdldG9uZGlzdG9wdGxpc3Qob3B0cykKKyAJb3B0X3Qgb3B0czsKKyB7CistCXJlZ2lzdGVyIGludCBpOworKwlpbnQgaTsKKyAJc3RhdGljIGNoYXIgYnVmWzEwMjRdOworIAorIAlmb3IgKGkgPSAwLCBidWZbMF0gPSBDTlVMTDsgZGlzdG9wdGluZm9baV0uZG9fbmFtZTsgKytpKSB7CistLS0gcmRpc3QtNi4xLjUvc3JjL2V4cGFuZC5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNTowOTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvZXhwYW5kLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogZXhwYW5kLmMsdiA2LjE5IDE5OTgvMTEvMTAgMDQ6MDk6MzEgbWNvb3BlciBFeHAgJCI7CisgCitAQCAtODEsOSArODEsOSBAQAorIAkJICAgICAgc2l6ZW9mKCpzb3J0YmFzZSksIGFyZ2NtcCksIHNvcnRiYXNlID0gJmVhcmd2W2VhcmdjXQorIAorIHN0YXRpYyB2b2lkIENhdChzMSwgczIpCQkJCS8qIHF1b3RlIGluIHMxIGFuZCBzMiAqLworLQlyZWdpc3RlciB1X2NoYXIgKnMxLCAqczI7CisrCXVfY2hhciAqczEsICpzMjsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwljaGFyICpjcDsKKyAJaW50IGxlbiA9IHN0cmxlbigoY2hhciAqKXMxKSArIHN0cmxlbigoY2hhciAqKXMyKSArIDI7CisgCisgCWlmICgoZWFyZ2MgKyAxKSA+PSBNQVhFQVJHUykgeworQEAgLTk3LDEyICs5NywxMiBAQAorIAlkbyB7IAorIAkJaWYgKCpzMSA9PSBRVU9URUNIQVIpIAorIAkJCXMxKys7IAorLQl9IHdoaWxlICgqY3ArKyA9ICpzMSsrKTsKKysJfSB3aGlsZSAoKCpjcCsrID0gKnMxKyspKTsKKyAJY3AtLTsKKyAJZG8geyAKKyAJCWlmICgqczIgPT0gUVVPVEVDSEFSKSAKKyAJCQlzMisrOyAKKy0JfSB3aGlsZSAoKmNwKysgPSAqczIrKyk7CisrCX0gd2hpbGUgKCgqY3ArKyA9ICpzMisrKSk7CisgfQorIAorIHN0YXRpYyB2b2lkIGFkZHBhdGgoYykKK0BAIC0xMzEsOCArMTMxLDggQEAKKyAJc3RydWN0IG5hbWVsaXN0ICpsaXN0OworIAlpbnQgd2g7CisgeworLQlyZWdpc3RlciBzdHJ1Y3QgbmFtZWxpc3QgKm5sLCAqcHJldjsKKy0JcmVnaXN0ZXIgaW50IG47CisrCXN0cnVjdCBuYW1lbGlzdCAqbmwsICpwcmV2OworKwlpbnQgbjsKKyAJY2hhciBwYXRoYnVmW0JVRlNJWl07CisgCisgCWlmIChkZWJ1ZykKK0BAIC0xODIsNyArMTgyLDcgQEAKKyAJdV9jaGFyICpzdHI7CisgCWludCBjaDsKKyB7CistCXJlZ2lzdGVyIHVfY2hhciAqY3A7CisrCXVfY2hhciAqY3A7CisgCisgCWZvciAoY3AgPSBzdHI7IGNwICYmICpjcCAhPSBDTlVMTDsgKytjcCkKKyAJCWlmIChjaCA9PSAqY3ApCitAQCAtMTk0LDggKzE5NCw4IEBACisgdm9pZCBleHBzdHIocykKKyAJdV9jaGFyICpzOworIHsKKy0JcmVnaXN0ZXIgdV9jaGFyICpjcCwgKmNwMTsKKy0JcmVnaXN0ZXIgc3RydWN0IG5hbWVsaXN0ICp0cDsKKysJdV9jaGFyICpjcCwgKmNwMTsKKysJc3RydWN0IG5hbWVsaXN0ICp0cDsKKyAJdV9jaGFyICp0YWlsOworIAl1X2NoYXIgZWJ1ZltCVUZTSVpdOworIAl1X2NoYXIgdmFyYnVmZltCVUZTSVpdOworQEAgLTMwMiw3ICszMDIsNyBAQAorIAkJCWNwMSA9ICh1X2NoYXIgKilwdy0+cHdfZGlyOworIAkJCXMgPSBjcDsKKyAJCX0KKy0JCWZvciAoY3AgPSAodV9jaGFyICopcGF0aDsgKmNwKysgPSAqY3AxKys7ICkKKysJCWZvciAoY3AgPSAodV9jaGFyICopcGF0aDsgKCpjcCsrID0gKmNwMSsrKTsgKQorIAkJCTsKKyAJCXRwYXRocCA9IHBhdGhwID0gKGNoYXIgKiljcCAtIDE7CisgCX0gZWxzZSB7CitAQCAtMzI2LDcgKzMyNiw3IEBACisgCXNvcnQoKTsKKyB9CisgCistc3RhdGljCisrc3RhdGljIGludAorIGFyZ2NtcChhMSwgYTIpCisgCWNoYXIgKiphMSwgKiphMjsKKyB7CitAQCAtMzQxLDggKzM0MSw4IEBACisgdm9pZCBleHBzaChzKQkJCQkvKiBxdW90ZSBpbiBzICovCisgCXVfY2hhciAqczsKKyB7CistCXJlZ2lzdGVyIHVfY2hhciAqY3AsICpvbGRjcDsKKy0JcmVnaXN0ZXIgY2hhciAqc3BhdGhwOworKwl1X2NoYXIgKmNwLCAqb2xkY3A7CisrCWNoYXIgKnNwYXRocDsKKyAJc3RydWN0IHN0YXQgc3RiOworIAorIAlzcGF0aHAgPSBwYXRocDsKK0BAIC0zODAsNyArMzgwLDcgQEAKKyAJY2hhciAqcGF0dGVybjsKKyB7CisgCXN0cnVjdCBzdGF0IHN0YjsKKy0JcmVnaXN0ZXIgRElSRU5UUlkgKmRwOworKwlESVJFTlRSWSAqZHA7CisgCURJUiAqZGlycDsKKyAKKyAJZGlycCA9IG9wZW5kaXIocGF0aCk7CitAQCAtNDE3LDExICs0MTcsMTIgQEAKKyAJeXllcnJvcihwYXRoKTsKKyB9CisgCisraW50CisgZXhlY2JyYyhwLCBzKQkJCQkvKiBxdW90ZSBpbiBwICovCisgCXVfY2hhciAqcCwgKnM7CisgeworIAl1X2NoYXIgcmVzdGJ1ZltCVUZTSVogKyAyXTsKKy0JcmVnaXN0ZXIgdV9jaGFyICpwZSwgKnBtLCAqcGw7CisrCXVfY2hhciAqcGUsICpwbSwgKnBsOworIAlpbnQgYnJjbGV2ID0gMDsKKyAJdV9jaGFyICpsbSwgc2F2ZWM7CisgCWNoYXIgKnNwYXRocDsKK0BAIC01MDcsMTEgKzUwOCwxMiBAQAorIAlyZXR1cm4gKDApOworIH0KKyAKKytpbnQKKyBtYXRjaChzLCBwKQkJCQkJLyogcXVvdGUgaW4gcCAqLworIAljaGFyICpzLCAqcDsKKyB7CistCXJlZ2lzdGVyIGludCBjOworLQlyZWdpc3RlciBjaGFyICpzZW50cDsKKysJaW50IGM7CisrCWNoYXIgKnNlbnRwOworIAljaGFyIHNleHBhbnkgPSBleHBhbnk7CisgCisgCWlmICgqcyA9PSAnLicgJiYgKnAgIT0gJy4nKQorQEAgLTUyNCwxMSArNTI2LDEyIEBACisgCXJldHVybiAoYyk7CisgfQorIAorK2ludAorIGFtYXRjaChzLCBwKQkJCQkJLyogcXVvdGUgaW4gcCAqLworLQlyZWdpc3RlciBjaGFyICpzOworLQlyZWdpc3RlciB1X2NoYXIgKnA7CisrCWNoYXIgKnM7CisrCXVfY2hhciAqcDsKKyB7CistCXJlZ2lzdGVyIGludCBzY2M7CisrCWludCBzY2M7CisgCWludCBvaywgbGM7CisgCWNoYXIgKnNwYXRocDsKKyAJc3RydWN0IHN0YXQgc3RiOworQEAgLTU0NSw3ICs1NDgsNyBAQAorIAkJY2FzZSAnWyc6CisgCQkJb2sgPSAwOworIAkJCWxjID0gMDc3Nzc3OworLQkJCXdoaWxlIChjYyA9ICpwKyspIHsKKysJCQl3aGlsZSAoKGNjID0gKnArKykpIHsKKyAJCQkJaWYgKGNjID09ICddJykgeworIAkJCQkJaWYgKG9rKQorIAkJCQkJCWJyZWFrOworQEAgLTU5OSw3ICs2MDIsNyBAQAorIAkJCXdoaWxlICgqcykKKyAJCQkJYWRkcGF0aCgqcysrKTsKKyAJCQlhZGRwYXRoKCcvJyk7CistCQkJaWYgKHN0YXQocGF0aCwgJnN0YikgPT0gMCAmJiBTX0lTRElSKHN0Yi5zdF9tb2RlKSkKKysJCQlpZiAoc3RhdChwYXRoLCAmc3RiKSA9PSAwICYmIFNfSVNESVIoc3RiLnN0X21vZGUpKSB7CisgCQkJCWlmICgqcCA9PSBDTlVMTCkgeworIAkJCQkJaWYgKHdoaWNoICYgRV9USUxERSkKKyAJCQkJCQlDYXQoKHVfY2hhciAqKXBhdGgsIAorQEAgLTYwOSw2ICs2MTIsNyBAQAorIAkJCQkJCSAgICAodV9jaGFyICopdHBhdGhwKTsKKyAJCQkJfSBlbHNlCisgCQkJCQlleHBzaChwKTsKKysJCQl9CisgCQkJcGF0aHAgPSBzcGF0aHA7CisgCQkJKnBhdGhwID0gQ05VTEw7CisgCQkJcmV0dXJuICgwKTsKKy0tLSByZGlzdC02LjEuNS9zcmMvbG9va3VwLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjEyOjU2LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9sb29rdXAuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBsb29rdXAuYyx2IDYuOSAxOTk4LzExLzEwIDA0OjEyOjU2IG1jb29wZXIgRXhwICQiOworIAorQEAgLTY4LDExICs2OCwxMiBAQAorIC8qCisgICogRGVmaW5lIGEgdmFyaWFibGUgZnJvbSBhIGNvbW1hbmQgbGluZSBhcmd1bWVudC4KKyAgKi8KKyt2b2lkCisgZGVmaW5lKG5hbWUpCisgCWNoYXIgKm5hbWU7CisgeworLQlyZWdpc3RlciBjaGFyICpjcCwgKnM7CistCXJlZ2lzdGVyIHN0cnVjdCBuYW1lbGlzdCAqbmw7CisrCWNoYXIgKmNwLCAqczsKKysJc3RydWN0IG5hbWVsaXN0ICpubDsKKyAJc3RydWN0IG5hbWVsaXN0ICp2YWx1ZTsKKyAKKyAJZGVidWdtc2coRE1fQ0FMTCwgImRlZmluZSglcykiLCBuYW1lKTsKK0BAIC0xMzcsOSArMTM4LDkgQEAKKyAJaW50IGFjdGlvbjsKKyAJc3RydWN0IG5hbWVsaXN0ICp2YWx1ZTsKKyB7CistCXJlZ2lzdGVyIHVuc2lnbmVkIG47CistCXJlZ2lzdGVyIGNoYXIgKmNwOworLQlyZWdpc3RlciBzdHJ1Y3Qgc3ltZW50ICpzOworKwl1bnNpZ25lZCBuOworKwljaGFyICpjcDsKKysJc3RydWN0IHN5bWVudCAqczsKKyAJY2hhciBlYnVmW0JVRlNJWl07CisgCisgCWRlYnVnbXNnKERNX0NBTEwsICJsb29rdXAoJXMsICVkLCAleCkiLCBuYW1lLCBhY3Rpb24sIHZhbHVlKTsKKy0tLSByZGlzdC02LjEuNS9zcmMvaXNleGVjLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjExOjQyLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9pc2V4ZWMuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM3LDcgKzM3LDcgQEAKKyAgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgICogU1VDSCBEQU1BR0UuCisgICovCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogaXNleGVjLmMsdiA2LjIyIDE5OTgvMTEvMTAgMDQ6MTE6NDIgbWNvb3BlciBFeHAgJCI7CisgCistLS0gcmRpc3QtNi4xLjUvc3JjL3NpZ25hbC5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNToxNjoxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvc2lnbmFsLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogc2lnbmFsLmMsdiA2LjIgMTk5OC8xMS8xMCAwNDoxNjoxMyBtY29vcGVyIEV4cCAkIjsKKyAKKy0tLSByZGlzdC02LjEuNS9zcmMvcnNocmNtZC5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNToxNTowNy4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvcnNocmNtZC5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMTAsNyArMTAsNyBAQAorICAqIENocmlzIFNpZWJlbm1hbm4gPGNrc0B1dGNjLnV0b3JvbnRvLmNhPi4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiByc2hyY21kLmMsdiAxLjkgMTk5OC8xMS8xMCAwNDoxNTowNyBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC0zNCw2ICszNCw3IEBACisgICogcHJvZ3JhbSBpbiBwbGFjZSBvZiBhIGRpcmVjdCByY21kKCkgZnVuY3Rpb24gY2FsbCBzbyBhcyB0bworICAqIGF2b2lkIGhhdmluZyB0byBiZSByb290LgorICAqLworK2ludAorIHJzaHJjbWQoYWhvc3QsIHBvcnQsIGx1c2VyLCBydXNlciwgY21kLCBmZDJwKQorIAljaGFyICAJKiphaG9zdDsKKyAJdV9zaG9ydAlwb3J0OworQEAgLTEwOCw2ICsxMDksNyBAQAorIAkJKHZvaWQpIHdhaXQoMCk7CisgCQlyZXR1cm4gc3BbMF07CisgCX0KKysJcmV0dXJuIC0xOworIAkvKk5PVFJFQUNIRUQqLworIH0KKyAKKy0tLSByZGlzdC02LjEuNS9zcmMvY29tbW9uLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjA5OjAxLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9jb21tb24uYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBjb21tb24uYyx2IDYuODQgMTk5OC8xMS8xMCAwNDowOTowMSBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC04NywxNCArODcsMTQgQEAKKyAvKiAKKyAgKiBGcm9udCBlbmQgdG8gd3JpdGUoKSB0aGF0IGhhbmRsZXMgcGFydGlhbCB3cml0ZSgpIHJlcXVlc3RzLgorICAqLworLWV4dGVybiBXUklURV9SRVRVUk5fVCB4d3JpdGUoZmQsIGJ1ZiwgbGVuKQorK1dSSVRFX1JFVFVSTl9UIHh3cml0ZShmZCwgYnVmLCBsZW4pCisgCWludCBmZDsKKyAJdm9pZCAqYnVmOworIAlXUklURV9BTVRfVCBsZW47CisgeworICAgICAJV1JJVEVfQU1UX1QgbmxlZnQgPSBsZW47CisgCVdSSVRFX1JFVFVSTl9UIG53cml0dGVuOworLQlyZWdpc3RlciBjaGFyICpwdHIgPSBidWY7CisrCWNoYXIgKnB0ciA9IGJ1ZjsKKyAgICAgICAgICAKKyAJd2hpbGUgKG5sZWZ0ID4gMCkgeworIAkgICAgCWlmICgobndyaXR0ZW4gPSB3cml0ZShmZCwgcHRyLCBubGVmdCkpIDw9IDApIHsKK0BAIC0xMTAsMTQgKzExMCwxNCBAQAorIC8qCisgICogU2V0IHByb2dyYW0gbmFtZQorICAqLworLWV4dGVybiB2b2lkIHNldHByb2duYW1lKGFyZ3YpCisrdm9pZCBzZXRwcm9nbmFtZShhcmd2KQorIAljaGFyICoqYXJndjsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwljaGFyICpjcDsKKyAKKyAJaWYgKCFwcm9nbmFtZSkgeworIAkJcHJvZ25hbWUgPSBzdHJkdXAoYXJndlswXSk7CistCQlpZiAoY3AgPSBzdHJyY2hyKHByb2duYW1lLCAnLycpKQorKwkJaWYgKChjcCA9IHN0cnJjaHIocHJvZ25hbWUsICcvJykpKQorIAkJCXByb2duYW1lID0gY3AgKyAxOworIAl9CisgfQorQEAgLTEyNSwxNCArMTI1LDE0IEBACisgLyoKKyAgKiBEbyBydW4tdGltZSBpbml0aWFsaXphdGlvbgorICAqLworLWV4dGVybiBpbnQgaW5pdChhcmdjLCBhcmd2LCBlbnZwKQorK2ludCBpbml0KGFyZ2MsIGFyZ3YsIGVudnApCisgCS8qQVJHU1VTRUQqLworIAlpbnQgYXJnYzsKKyAJY2hhciAqKmFyZ3Y7CisgCWNoYXIgKiplbnZwOworIHsKKy0JcmVnaXN0ZXIgaW50IGk7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwlpbnQgaTsKKysJY2hhciAqY3A7CisgCisgCWlmICghaXNzZXJ2ZXIpCisgCQkodm9pZCkgc2lnbmFsKFNJR1NFR1YsIHNpZ2hhbmRsZXIpOworQEAgLTE4Miw3ICsxODIsNyBAQAorIC8qCisgICogRmluaXNoIHRoaW5ncyB1cCBiZWZvcmUgZW5kaW5nLgorICAqLworLWV4dGVybiB2b2lkIGZpbmlzaCgpCisrdm9pZCBmaW5pc2goKQorIHsKKyAJZXh0ZXJuIGptcF9idWYgZmluaXNoX2ptcGJ1ZjsKKyAKK0BAIC0yMTYsNyArMjE2LDcgQEAKKyAvKgorICAqIEhhbmRsZSBsb3N0IGNvbm5lY3Rpb25zCisgICovCistZXh0ZXJuIHZvaWQgbG9zdGNvbm4oKQorK3ZvaWQgbG9zdGNvbm4oKQorIHsKKyAJLyogUHJldmVudCBsb29waW5nICovCisgCSh2b2lkKSBzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7CitAQCAtMjMyLDcgKzIzMiw3IEBACisgLyoKKyAgKiBEbyBhIGNvcmUgZHVtcAorICAqLworLWV4dGVybiB2b2lkIGNvcmVkdW1wKCkKKyt2b2lkIGNvcmVkdW1wKCkKKyB7CisgCWVycm9yKCJTZWdtZW50YXRpb24gdmlvbGF0aW9uIC0gZHVtcGluZyBjb3JlIFtQSUQgPSAlZCwgJXNdIiwKKyAJICAgICAgZ2V0cGlkKCksIAorQEAgLTI0NSw3ICsyNDUsNyBAQAorIC8qCisgICogR2VuZXJhbCBzaWduYWwgaGFuZGxlcgorICAqLworLWV4dGVybiB2b2lkIHNpZ2hhbmRsZXIoc2lnKQorK3ZvaWQgc2lnaGFuZGxlcihzaWcpCisgCWludCBzaWc7CisgeworIAlkZWJ1Z21zZyhETV9DQUxMLCAic2lnaGFuZGxlcigpIHJlY2VpdmVkIHNpZ25hbCAlZFxuIiwgc2lnKTsKK0BAIC0zMjUsNyArMzI1LDcgQEAKKyAvKgorICAqIFN0ZGFyZyBmcm9udGVuZCB0byBzZW5kY21kbXNnKCkKKyAgKi8KKy1leHRlcm4gaW50IHNlbmRjbWQoY2hhciBjbWQsIGNoYXIgKmZtdCwgLi4uKQorK2ludCBzZW5kY21kKGNoYXIgY21kLCBjaGFyICpmbXQsIC4uLikKKyB7CisgCXN0YXRpYyBjaGFyIGJ1ZltCVUZTSVpdOworIAl2YV9saXN0IGFyZ3M7CitAQCAtMzQ1LDcgKzM0NSw3IEBACisgLyoKKyAgKiBWYXJhcmdzIGZyb250ZW5kIHRvIHNlbmRjbWRtc2coKQorICAqLworLWV4dGVybiBpbnQgc2VuZGNtZCh2YV9hbGlzdCkKKytpbnQgc2VuZGNtZCh2YV9hbGlzdCkKKyAJdmFfZGNsCisgeworIAlzdGF0aWMgY2hhciBidWZbQlVGU0laXTsKK0BAIC0zNzIsNyArMzcyLDcgQEAKKyAgKiBTdHVwaWQgZnJvbnRlbmQgdG8gc2VuZGNtZG1zZygpCisgICovCisgLypWQVJBUkdTMiovCistZXh0ZXJuIGludCBzZW5kY21kKGNtZCwgZm10LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpCisraW50IHNlbmRjbWQoY21kLCBmbXQsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkKKyAJY2hhciBjbWQ7CisgCWNoYXIgKmZtdDsKKyB7CitAQCAtNDMzLDEzICs0MzMsMTMgQEAKKyAgKiBlcnJvcnMsIGNhbGwgY2xlYW51cCgpIG9yIGxvc3Rjb25uKCkuICBJbiBvdGhlciB3b3JkcywgdW5sZXNzCisgICogdGhlIHRoaXJkIGFyZ3VtZW50IGlzIG5vbnplcm8sIHRoaXMgcm91dGluZSBuZXZlciByZXR1cm5zIGZhaWx1cmUuCisgICovCistZXh0ZXJuIGludCByZW1saW5lKGJ1ZmZlciwgc3BhY2UsIGRvY2xlYW4pCistCXJlZ2lzdGVyIHVfY2hhciAqYnVmZmVyOworK2ludCByZW1saW5lKGJ1ZmZlciwgc3BhY2UsIGRvY2xlYW4pCisrCXVfY2hhciAqYnVmZmVyOworIAlpbnQgc3BhY2U7CisgCWludCBkb2NsZWFuOworIHsKKy0JcmVnaXN0ZXIgaW50IGMsIGxlZnQgPSBzcGFjZTsKKy0JcmVnaXN0ZXIgdV9jaGFyICpwID0gYnVmZmVyOworKwlpbnQgYywgbGVmdCA9IHNwYWNlOworKwl1X2NoYXIgKnAgPSBidWZmZXI7CisgCisgCWlmIChyZW1fciA8IDApIHsKKyAJCWVycm9yKCJDYW5ub3QgcmVhZCByZW1vdGUgaW5wdXQ6IFJlbW90ZSBkZXNjcmlwdG9yIG5vdCBvcGVuLiIpOworQEAgLTQ5NCw5ICs0OTQsOSBAQAorIC8qCisgICogTm9uLWxpbmUtb3JpZW50ZWQgcmVtb3RlIHJlYWQuCisgICovCistcmVhZHJlbShwLCBzcGFjZSkKKytpbnQgcmVhZHJlbShwLCBzcGFjZSkKKyAJY2hhciAqcDsKKy0JcmVnaXN0ZXIgaW50IHNwYWNlOworKwlpbnQgc3BhY2U7CisgeworIAlpZiAocmVtbGVmdCA8PSAwKSB7CisgCQkvKgorQEAgLTUyNyw3ICs1MjcsNyBAQAorIC8qCisgICogR2V0IHRoZSB1c2VyIG5hbWUgZm9yIHRoZSB1aWQuCisgICovCistZXh0ZXJuIGNoYXIgKmdldHVzZXJuYW1lKHVpZCwgZmlsZSwgb3B0cykKKytjaGFyICpnZXR1c2VybmFtZSh1aWQsIGZpbGUsIG9wdHMpCisgCVVJRF9UIHVpZDsKKyAJY2hhciAqZmlsZTsKKyAJb3B0X3Qgb3B0czsKK0BAIC01NjYsNyArNTY2LDcgQEAKKyAvKgorICAqIEdldCB0aGUgZ3JvdXAgbmFtZSBmb3IgdGhlIGdpZC4KKyAgKi8KKy1leHRlcm4gY2hhciAqZ2V0Z3JvdXBuYW1lKGdpZCwgZmlsZSwgb3B0cykKKytjaGFyICpnZXRncm91cG5hbWUoZ2lkLCBmaWxlLCBvcHRzKQorIAlHSURfVCBnaWQ7CisgCWNoYXIgKmZpbGU7CisgCW9wdF90IG9wdHM7CitAQCAtNjA0LDcgKzYwNCw3IEBACisgLyoKKyAgKiBSZWFkIGEgcmVzcG9uc2UgZnJvbSB0aGUgcmVtb3RlIGhvc3QuCisgICovCistZXh0ZXJuIGludCByZXNwb25zZSgpCisraW50IHJlc3BvbnNlKCkKKyB7CisgCXN0YXRpYyB1X2NoYXIgcmVzcFtCVUZTSVpdOworIAl1X2NoYXIgKnM7CitAQCAtNjQ2LDYgKzY0Niw3IEBACisgCQkJbWVzc2FnZShNVF9GRVJST1IsICIlcyIsIHMpOworIAkJZmluaXNoKCk7CisgCX0KKysJcmV0dXJuIC0xOworIAkvKk5PVFJFQUNIRUQqLworIH0KKyAKK0BAIC02NTcsMTEgKzY1OCwxMSBAQAorICAqIHVzZXIncyBob21lIGRpcmVjdG9yeSBwYXRoIG5hbWUuIFJldHVybiBhIHBvaW50ZXIgaW4gYnVmIHRvIHRoZQorICAqIHBhcnQgY29ycmVzcG9uZGluZyB0byBgZmlsZScuCisgICovCistZXh0ZXJuIGNoYXIgKmV4cHRpbGRlKGVidWYsIGZpbGUpCisrY2hhciAqZXhwdGlsZGUoZWJ1ZiwgZmlsZSkKKyAJY2hhciAqZWJ1ZjsKKy0JcmVnaXN0ZXIgY2hhciAqZmlsZTsKKysJY2hhciAqZmlsZTsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKnMxLCAqczIsICpzMzsKKysJY2hhciAqczEsICpzMiwgKnMzOworIAlleHRlcm4gY2hhciAqaG9tZWRpcjsKKyAKKyAJaWYgKCpmaWxlICE9ICd+JykgeworQEAgLTY5NCwxMiArNjk1LDEyIEBACisgCQkJKnMzID0gJy8nOworIAkJczIgPSBwdy0+cHdfZGlyOworIAl9CistCWZvciAoczEgPSBlYnVmOyAqczErKyA9ICpzMisrOyApCisrCWZvciAoczEgPSBlYnVmOyAoKnMxKysgPSAqczIrKyk7ICkKKyAJCTsKKyAJczIgPSAtLXMxOworIAlpZiAoczMgIT0gTlVMTCkgeworIAkJczIrKzsKKy0JCXdoaWxlICgqczErKyA9ICpzMysrKQorKwkJd2hpbGUgKCgqczErKyA9ICpzMysrKSkKKyAJCQk7CisgCX0KKyAJcmV0dXJuKHMyKTsKK0BAIC03MTAsNyArNzExLDcgQEAKKyAgKiBTZXQgb3VyIGVmZmVjdGl2ZSB1c2VyIGlkIHRvIHRoZSB1c2VyIHJ1bm5pbmcgdXMuCisgICogVGhpcyBzaG91bGQgYmUgdGhlIHVpZCB3ZSBkbyBtb3N0IG9mIG91ciB3b3JrIGFzLgorICAqLworLWV4dGVybiBpbnQgYmVjb21ldXNlcigpCisraW50IGJlY29tZXVzZXIoKQorIHsKKyAJaW50IHIgPSAwOworIAorQEAgLTczMiw3ICs3MzMsNyBAQAorIC8qCisgICogU2V0IG91ciBlZmZlY3RpdmUgdXNlciBpZCB0byAicm9vdCIgKHVpZCA9IDApCisgICovCistZXh0ZXJuIGludCBiZWNvbWVyb290KCkKKytpbnQgYmVjb21lcm9vdCgpCisgeworIAlpbnQgciA9IDA7CisgCitAQCAtNzUzLDcgKzc1NCw3IEBACisgLyoKKyAgKiBTZXQgYWNjZXNzIGFuZCBtb2RpZnkgdGltZXMgb2YgYSBnaXZlbiBmaWxlCisgICovCistZXh0ZXJuIGludCBzZXRmaWxldGltZShmaWxlLCBhdGltZSwgbXRpbWUpCisraW50IHNldGZpbGV0aW1lKGZpbGUsIGF0aW1lLCBtdGltZSkKKyAJY2hhciAqZmlsZTsKKyAJdGltZV90IGF0aW1lOworIAl0aW1lX3QgbXRpbWU7CitAQCAtNzkwLDcgKzc5MSw3IEBACisgLyoKKyAgKiBHZXQgdmVyc2lvbiBpbmZvCisgICovCistZXh0ZXJuIGNoYXIgKmdldHZlcnNpb24oKQorK2NoYXIgKmdldHZlcnNpb24oKQorIHsKKyAJc3RhdGljIGNoYXIgYnVmZltCVUZTSVpdOworIAorQEAgLTgxMSw3ICs4MTIsNyBAQAorIHsKKyAJaW50IGZkWzJdLCBwaWQsIGk7CisgCWludCBzdGF0dXM7CistCXJlZ2lzdGVyIGNoYXIgKmNwLCAqczsKKysJY2hhciAqY3AsICpzOworIAljaGFyIHNidWZbQlVGU0laXSwgYnVmW0JVRlNJWl07CisgCisgCWlmIChwaXBlKGZkKSA8IDApIHsKK0BAIC05MzMsMTIgKzkzNCwxMiBAQAorIC8qCisgICogUHJpdmF0ZSB2ZXJzaW9uIG9mIGJhc2VuYW1lKCkKKyAgKi8KKy1leHRlcm4gY2hhciAqeGJhc2VuYW1lKHBhdGgpCisrY2hhciAqeGJhc2VuYW1lKHBhdGgpCisgCWNoYXIgKnBhdGg7CisgeworLQlyZWdpc3RlciBjaGFyICpjcDsKKysJY2hhciAqY3A7CisgIAorLQlpZiAoY3AgPSBzdHJyY2hyKHBhdGgsICcvJykpCisrCWlmICgoY3AgPSBzdHJyY2hyKHBhdGgsICcvJykpKQorIAkJcmV0dXJuKGNwKzEpOworIAllbHNlCisgCQlyZXR1cm4ocGF0aCk7CitAQCAtOTQ5LDExICs5NTAsMTEgQEAKKyAgKiBzZWFyY2ggdW50aWwgYSBjb21wb25lbnQgb2YgdGhhdCBwYXRoIGlzIGZvdW5kIGFuZAorICAqIHJldHVybiB0aGUgZm91bmQgZmlsZSBuYW1lLgorICAqLworLWV4dGVybiBjaGFyICpzZWFyY2hwYXRoKHBhdGgpCisrY2hhciAqc2VhcmNocGF0aChwYXRoKQorIAljaGFyICpwYXRoOworIHsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CistCXJlZ2lzdGVyIGNoYXIgKmZpbGU7CisrCWNoYXIgKmNwOworKwljaGFyICpmaWxlOworIAlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOworIAorIAlmb3IgKDsgOykgeworQEAgLTk3Nyw4ICs5NzgsNyBAQAorIC8qCisgICogU2V0IGxpbmUgYnVmZmVyaW5nLgorICAqLworLWV4dGVybiB2b2lkCistbXlzZXRsaW5lYnVmKGZwKQorK3ZvaWQgbXlzZXRsaW5lYnVmKGZwKQorIAlGSUxFICpmcDsKKyB7CisgI2lmCVNFVEJVRl9UWVBFID09IFNFVEJVRl9TRVRMSU5FQlVGCitAQCAtOTk1LDggKzk5NSw3IEBACisgLyoKKyAgKiBPdXIgaW50ZXJmYWNlIHRvIHN5c3RlbSBjYWxsIHRvIGdldCBhIHNvY2tldCBwYWlyLgorICAqLworLWludAorLWdldHNvY2tldHBhaXIoZG9tYWluLCB0eXBlLCBwcm90b2NvbCwgc3YpCisraW50IGdldHNvY2tldHBhaXIoZG9tYWluLCB0eXBlLCBwcm90b2NvbCwgc3YpCisgCWludCBkb21haW47CisgCWludCB0eXBlOworIAlpbnQgcHJvdG9jb2w7CistLS0gcmRpc3QtNi4xLjUvc3JjL21lc3NhZ2UuYy5jbGVhbnVwCTE5OTgtMTEtMTAgMDU6MTM6MzAuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL21lc3NhZ2UuYwkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4LDcgKzM4LDcgQEAKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKyAKKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBtZXNzYWdlLmMsdiA2LjI1IDE5OTgvMTEvMTAgMDQ6MTM6MzAgbWNvb3BlciBFeHAgJCI7CisgCitAQCAtOTcsNyArOTcsNyBAQAorICAqLworIGV4dGVybiB2b2lkIG1zZ3BydXNhZ2UoKQorIHsKKy0JcmVnaXN0ZXIgaW50IGksIHg7CisrCWludCBpLCB4OworIAorIAkodm9pZCkgZnByaW50ZihzdGRlcnIsICJcbldoZXJlIDxtc2dvcHQ+IGlzIG9mIGZvcm1cbiIpOworIAkodm9pZCkgZnByaW50ZihzdGRlcnIsIAorQEAgLTEyMCw3ICsxMjAsNyBAQAorICAqLworIGV4dGVybiB2b2lkIG1zZ3ByY29uZmlnKCkKKyB7CistCXJlZ2lzdGVyIGludCBpLCB4OworKwlpbnQgaSwgeDsKKyAJc3RhdGljIGNoYXIgYnVmW01TR0JVRlNJWl07CisgCisgCWRlYnVnbXNnKERNX01JU0MsICJDdXJyZW50IG1lc3NhZ2UgbG9nZ2luZyBjb25maWc6Iik7CitAQCAtMTQ1LDcgKzE0NSw3IEBACisgc3RhdGljIE1TR0ZBQ0lMSVRZICpnZXRtc2dmYWMobmFtZSkKKyAJY2hhciAqbmFtZTsKKyB7CistCXJlZ2lzdGVyIGludCBpOworKwlpbnQgaTsKKyAKKyAJZm9yIChpID0gMDsgbXNnZmFjaWxpdHlbaV0ubWZfbmFtZTsgKytpKQorIAkJaWYgKHN0cmNhc2VjbXAobmFtZSwgbXNnZmFjaWxpdHlbaV0ubWZfbmFtZSkgPT0gMCkKK0BAIC0xNjAsNyArMTYwLDcgQEAKKyBzdGF0aWMgTVNHVFlQRSAqZ2V0bXNndHlwZShuYW1lKQorIAljaGFyICpuYW1lOworIHsKKy0JcmVnaXN0ZXIgaW50IGk7CisrCWludCBpOworIAorIAlmb3IgKGkgPSAwOyBtc2d0eXBlc1tpXS5tdF9uYW1lOyArK2kpCisgCQlpZiAoc3RyY2FzZWNtcChuYW1lLCBtc2d0eXBlc1tpXS5tdF9uYW1lKSA9PSAwKQorQEAgLTE3OCw5ICsxNzgsOSBAQAorIAljaGFyICpzdHI7CisgeworIAlzdGF0aWMgY2hhciBlYnVmW0JVRlNJWl07CistCXJlZ2lzdGVyIGNoYXIgKmNwOworLQlyZWdpc3RlciBjaGFyICpzdHJwdHIsICp3b3JkOworLQlyZWdpc3RlciBNU0dUWVBFICptdHA7CisrCWNoYXIgKmNwOworKwljaGFyICpzdHJwdHIsICp3b3JkOworKwlNU0dUWVBFICptdHA7CisgCisgCS8qCisgCSAqIE1GX1NZU0xPRyBpcyB0aGUgb25seSBzdXBwb3J0ZWQgbWVzc2FnZSBmYWNpbGl0eSBmb3IgdGhlIHNlcnZlcgorQEAgLTI0MCwxMSArMjQwLDExIEBACisgCW1zZ2ZhYy0+bWZfbXNndHlwZXMgPSAwOwkvKiBTdGFydCBmcm9tIHNjcmF0Y2ggKi8KKyAJd2hpbGUgKHN0cnB0cikgeworIAkJd29yZCA9IHN0cnB0cjsKKy0JCWlmIChjcCA9IHN0cmNocihzdHJwdHIsICcsJykpCisrCQlpZiAoKGNwID0gc3RyY2hyKHN0cnB0ciwgJywnKSkpCisgCQkJKmNwKysgPSBDTlVMTDsKKyAJCXN0cnB0ciA9IGNwOworIAorLQkJaWYgKG10cCA9IGdldG1zZ3R5cGUod29yZCkpIHsKKysJCWlmICgobXRwID0gZ2V0bXNndHlwZSh3b3JkKSkpIHsKKyAJCQltc2dmYWMtPm1mX21zZ3R5cGVzIHw9IG10cC0+bXRfdHlwZTsKKyAJCQkvKgorIAkJCSAqIFhYWCBUaGlzIGlzIHJlYWxseSBhIGtsdWRnZSB1bnRpbCB3ZSBhZGQgcmVhbAorQEAgLTI3Miw4ICsyNzIsOCBAQAorIAlpbnQgZG9zZXQ7CisgeworIAlzdGF0aWMgY2hhciBlYnVmW0JVRlNJWl0sIG1zZ2J1ZltNU0dCVUZTSVpdOworLQlyZWdpc3RlciBjaGFyICpjcCwgKm9wdHN0cjsKKy0JcmVnaXN0ZXIgY2hhciAqd29yZDsKKysJY2hhciAqY3AsICpvcHRzdHI7CisrCWNoYXIgKndvcmQ7CisgCU1TR0ZBQ0lMSVRZICptc2dmYWM7CisgCisgCWlmIChtc2dzdHIgPT0gTlVMTCkKK0BAIC0zMDgsNyArMzA4LDcgQEAKKyAJCWlmIChkb3NldCkgeworIAkJCWNoYXIgKm1jcDsKKyAKKy0JCQlpZiAobWNwID0gc2V0bXNndHlwZXMobXNnZmFjLCBjcCkpCisrCQkJaWYgKChtY3AgPSBzZXRtc2d0eXBlcyhtc2dmYWMsIGNwKSkpCisgCQkJCXJldHVybihtY3ApOworIAkJfQorIAl9CitAQCAtNDYyLDggKzQ2Miw5IEBACisgCQlyZXR1cm47CisgCisgCWlmICghbXNnZmFjLT5tZl9mcHRyKSB7CistCQlyZWdpc3RlciBjaGFyICpjcDsKKysJCWNoYXIgKmNwOworIAkJY2hhciAqZ2V0ZW52KCk7CisrCQlpbnQgZmQ7CisgCisgCQkvKgorIAkJICogQ3JlYXRlIGFuZCBvcGVuIGEgbmV3IHRlbXBvcmFyeSBmaWxlCitAQCAtNDc1LDcgKzQ3NiwxMCBAQAorIAkJKHZvaWQpIHNwcmludGYodGVtcGZpbGUsICIlcy8lcyIsIGNwLCBfUkRJU1RfVE1QKTsKKyAKKyAJCW1zZ2ZhYy0+bWZfZmlsZW5hbWUgPSB0ZW1wZmlsZTsKKy0JCSh2b2lkKSBta3RlbXAobXNnZmFjLT5tZl9maWxlbmFtZSk7CisrCQlmZCA9IG1rc3RlbXAobXNnZmFjLT5tZl9maWxlbmFtZSk7CisrCQkJaWYgKGZkIDwgMCkKKysJCQkJZmF0YWxlcnIoIkNhbm5vdCBvcGVuIG5vdGlmeSBmaWxlIGZvciB3cml0aW5nOiAlczogJXMuIiwgbXNnZmFjLT5tZl9maWxlbmFtZSwgU1lTRVJSKTsKKysJCWNsb3NlKGZkKTsKKyAJCWlmICgobXNnZmFjLT5tZl9mcHRyID0gZm9wZW4obXNnZmFjLT5tZl9maWxlbmFtZSwgInciKSk9PU5VTEwpCisgCQkJZmF0YWxlcnIoIkNhbm5vdCBvcGVuIG5vdGlmeSBmaWxlIGZvciB3cml0aW5nOiAlczogJXMuIiwKKyAJCQkgICAgICBtc2dmYWMtPm1mX2ZpbGVuYW1lLCBTWVNFUlIpOworQEAgLTUxNSwxNSArNTE5LDE1IEBACisgCWludCBmbGFnczsKKyAJY2hhciAqbXNnYnVmOworIHsKKy0JcmVnaXN0ZXIgaW50IGksIHg7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwlpbnQgaSwgeDsKKysJY2hhciAqY3A7CisgCXN0YXRpYyBjaGFyIG1idWZbMjA0OF07CisgCisgCWlmIChtc2didWYgJiYgKm1zZ2J1ZikgeworIAkJLyoKKyAJCSAqIEVuc3VyZSBubyBzdHJheSBuZXdsaW5lcyBhcmUgcHJlc2VudAorIAkJICovCistCQlpZiAoY3AgPSBzdHJjaHIobXNnYnVmLCAnXG4nKSkKKysJCWlmICgoY3AgPSBzdHJjaHIobXNnYnVmLCAnXG4nKSkpCisgCQkJKmNwID0gQ05VTEw7CisgCisgCQljaGVja2hvc3RuYW1lKCk7CitAQCAtODYzLDcgKzg2Nyw3IEBACisgICovCisgZXh0ZXJuIGNoYXIgKmdldG5vdGlmeWZpbGUoKQorIHsKKy0JcmVnaXN0ZXIgaW50IGk7CisrCWludCBpOworIAorIAlmb3IgKGkgPSAwOyBtc2dmYWNpbGl0eVtpXS5tZl9uYW1lOyBpKyspCisgCQlpZiAobXNnZmFjaWxpdHlbaV0ubWZfbXNnZmFjID09IE1GX05PVElGWSAmJgorLS0tIHJkaXN0LTYuMS41L3NyYy9zZXRhcmdzLmMuY2xlYW51cAkyMDAzLTEyLTE3IDExOjM4OjE2LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9zZXRhcmdzLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogc2V0YXJncy5jLHYgNi41IDE5OTgvMTEvMTAgMDQ6MTU6NTYgbWNvb3BlciBFeHAgJCI7CisgCitAQCAtNjYsMTIgKzY2LDEyIEBACisgLyoKKyAgKiBTZXR0dXAgdGhpbmdzIGZvciB1c2luZyBzZXRwcm9jdGl0bGUoKQorICAqLworLXNldGFyZ3Nfc2V0dHVwKGFyZ2MsIGFyZ3YsIGVudnApCisrdm9pZCBzZXRhcmdzX3NldHR1cChhcmdjLCBhcmd2LCBlbnZwKQorIAlpbnQJCQlhcmdjOworIAljaGFyCQkgICAgICAqKmFyZ3Y7CisgCWNoYXIJCSAgICAgICoqZW52cDsKKyB7CistCXJlZ2lzdGVyIGludCAJCWk7CisrCWludCAJCWk7CisgCWV4dGVybiBjaGFyIAkgICAgICAqKmVudmlyb247CisgCisgICAJLyogUmVtZW1iZXIgdGhlIFVzZXIgRW52aXJvbm1lbnQgKi8KK0BAIC05MiwxMCArOTIsMTAgQEAKKyAvKgorICAqIFNldCBwcm9jZXNzIHRpdGxlCisgICovCistZXh0ZXJuIHZvaWQgX3NldHByb2N0aXRsZShtc2cpCisrdm9pZCBfc2V0cHJvY3RpdGxlKG1zZykKKyAgICAgICAgIGNoYXIgKm1zZzsKKyB7CistCXJlZ2lzdGVyIGludCBpOworKwlpbnQgaTsKKyAJY2hhciAqcDsKKyAJCisgCXAgPSBBcmd2WzBdOworQEAgLTExOSw3ICsxMTksNyBAQAorIC8qCisgICogVmFyYXJncyBmcm9udC1lbmQgdG8gX3NldHByb2N0aXRsZSgpCisgICovCistZXh0ZXJuIHZvaWQgc2V0cHJvY3RpdGxlKHZhX2FsaXN0KQorK3ZvaWQgc2V0cHJvY3RpdGxlKHZhX2FsaXN0KQorIAl2YV9kY2wKKyB7CisgCXN0YXRpYyBjaGFyIGJ1ZltCVUZTSVpdOworQEAgLTEzOCw3ICsxMzgsNyBAQAorIC8qCisgICogU3RkYXJnIGZyb250LWVuZCB0byBfc2V0cHJvY3RpdGxlKCkKKyAgKi8KKy1leHRlcm4gdm9pZCBzZXRwcm9jdGl0bGUoY2hhciAqZm10LCAuLi4pCisrdm9pZCBzZXRwcm9jdGl0bGUoY2hhciAqZm10LCAuLi4pCisgeworIAlzdGF0aWMgY2hhciBidWZbQlVGU0laXTsKKyAJdmFfbGlzdCBhcmdzOworQEAgLTE1NSw3ICsxNTUsNyBAQAorICAqIE5vbi1WYXJhcmdzIGZyb250LWVuZCB0byBfc2V0cHJvY3RpdGxlKCkKKyAgKi8KKyAvKlZBUkFSR1MxKi8KKy1leHRlcm4gdm9pZCBzZXRwcm9jdGl0bGUoZm10LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorK3ZvaWQgc2V0cHJvY3RpdGxlKGZtdCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKKyAJY2hhciAqZm10OworIHsKKyAJc3RhdGljIGNoYXIgYnVmW0JVRlNJWl07CistLS0gcmRpc3QtNi4xLjUvc3JjL3JkaXN0ZC5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNToxNDowNi4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvcmRpc3RkLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogcmRpc3RkLmMsdiA2LjIzIDE5OTgvMTEvMTAgMDQ6MTQ6MDYgbWNvb3BlciBFeHAgJCI7CisgCitAQCAtNTMsMjEgKzUzLDEyIEBACisgCisgI2luY2x1ZGUgImRlZnMuaCIKKyAKKy0vKgorLSAqIFByaW50IHVzYWdlIG1lc3NhZ2UKKy0gKi8KKy1zdGF0aWMgdm9pZCB1c2FnZSgpCisteworLQlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyAtUyBbIC1EViBdXG4iLCBwcm9nbmFtZSk7CistCWV4aXQoMSk7CistfQorLQorIGNoYXIJbG9jYWxtc2dsaXN0W10gPSAic3lzbG9nPWZlcnJvciI7CisgCisgLyoKKyAgKiBUaGUgQmVnaW5uaW5nCisgICovCistbWFpbihhcmdjLCBhcmd2LCBlbnZwKQorK2ludCBtYWluKGFyZ2MsIGFyZ3YsIGVudnApCisgCWludCBhcmdjOworIAljaGFyICoqYXJndjsKKyAJY2hhciAqKmVudnA7CitAQCAtOTUsNyArODYsOCBAQAorIAkJY2FzZSAnPyc6CisgCQlkZWZhdWx0OgorIAkJCWVycm9yKCJCYWQgY29tbWFuZCBsaW5lIG9wdGlvbi4iKTsKKy0JCQl1c2FnZSgpOworKwkJCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIC1TIFsgLURWIF1cbiIsIHByb2duYW1lKTsKKysJCQlleGl0KDEpOworIAkJfQorIAorIAlpZiAoIWlzc2VydmVyKSB7CitAQCAtMTA4LDcgKzEwMCw3IEBACisgCXJlbV93ID0gZmlsZW5vKHN0ZG91dCk7CisgCisgCS8qIFNldCBsb2dnaW5nICovCistCWlmIChjcCA9IG1zZ3BhcnNlb3B0cyhsb2NhbG1zZ2xpc3QsIFRSVUUpKQorKwlpZiAoKGNwID0gbXNncGFyc2VvcHRzKGxvY2FsbXNnbGlzdCwgVFJVRSkpKQorIAkJZmF0YWxlcnIoIkJhZCBtZXNzYWdlIGxvZ2dpbmcgb3B0aW9uICglcyk6ICVzIiwgCisgCQkJIGxvY2FsbXNnbGlzdCwgY3ApOworIAorLS0tIHJkaXN0LTYuMS41L3NyYy9zZXJ2ZXIuYy5jbGVhbnVwCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL3NlcnZlci5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMzcsNyArMzcsNyBAQAorICAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAgKiBTVUNIIERBTUFHRS4KKyAgKi8KKy0jaWZuZGVmIGxpbnQKKysjaWYgMAorIHN0YXRpYyBjaGFyIFJDU2lkW10gPSAKKyAiJElkOiBzZXJ2ZXIuYyx2IDYuODYgMTk5OC8xMS8xMCAwNDoxNTozMSBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC0xOTcsNyArMTk3LDcgQEAKKyAJc3RhdGljIFVJRF9UIGxhc3RfdWlkID0gKFVJRF9UKS0yOworIAlzdGF0aWMgR0lEX1QgbGFzdF9wcmltZWdpZDsKKyAJZXh0ZXJuIGNoYXIgKmxvY3VzZXI7CistCXJlZ2lzdGVyIGludCBpOworKwlpbnQgaTsKKyAJVUlEX1QgdWlkOworIAlHSURfVCBnaWQ7CisgCUdJRF9UIHByaW1lZ2lkID0gKEdJRF9UKS0yOworQEAgLTI1Miw3ICsyNTIsNyBAQAorIAkgICAgICAgIC8qCisgCQkgKiBJbnZhbGlkIGNhY2hlZCB2YWx1ZXMgc28gd2UgbmVlZCB0byBkbyBhIG5ldyBsb29rdXAuCisgCQkgKi8KKy0JCWlmIChnciA9IG15Z2V0Z3JvdXAoZ3JvdXApKSB7CisrCQlpZiAoKGdyID0gbXlnZXRncm91cChncm91cCkpKSB7CisgCQkJbGFzdF9naWQgPSBnaWQgPSBnci0+Z3JfZ2lkOworIAkJCXN0cmNweShsYXN0X2dyb3VwLCBnci0+Z3JfbmFtZSk7CisgCQl9IGVsc2UgeworQEAgLTMyNSw3ICszMjUsNyBAQAorIHsKKyAJRElSICpkOworIAlzdGF0aWMgRElSRU5UUlkgKmRwOworLQlyZWdpc3RlciBjaGFyICpjcDsKKysJY2hhciAqY3A7CisgCXN0cnVjdCBzdGF0IHN0YjsKKyAJY2hhciAqb3B0YXJnZXQ7CisgCWludCBsZW4sIGZhaWx1cmVzID0gMDsKK0BAIC0zNjIsNyArMzYyLDcgQEAKKyAKKyAJb3B0YXJnZXQgPSBwdGFyZ2V0OworIAlsZW4gPSBwdGFyZ2V0IC0gdGFyZ2V0OworLQl3aGlsZSAoZHAgPSByZWFkZGlyKGQpKSB7CisrCXdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSkgeworIAkJaWYgKChEX05BTUxFTihkcCkgPT0gMSAmJiBkcC0+ZF9uYW1lWzBdID09ICcuJykgfHwKKyAJCSAgICAoRF9OQU1MRU4oZHApID09IDIgJiYgZHAtPmRfbmFtZVswXSA9PSAnLicgJiYKKyAJCSAgICAgZHAtPmRfbmFtZVsxXSA9PSAnLicpKQorQEAgLTM3Niw3ICszNzYsNyBAQAorIAkJcHRhcmdldCA9IG9wdGFyZ2V0OworIAkJKnB0YXJnZXQrKyA9ICcvJzsKKyAJCWNwID0gZHAtPmRfbmFtZTs7CistCQl3aGlsZSAoKnB0YXJnZXQrKyA9ICpjcCsrKQorKwkJd2hpbGUgKCgqcHRhcmdldCsrID0gKmNwKyspKQorIAkJCTsKKyAJCXB0YXJnZXQtLTsKKyAJCWlmIChsc3RhdCh0YXJnZXQsICZzdGIpIDwgMCkgeworQEAgLTQxNCwxMCArNDE0LDEwIEBACisgICogZm9yIGV4dHJhbmVvdXMgZmlsZXMgYW5kIHJlbW92ZSB0aGVtLgorICAqLworIHN0YXRpYyB2b2lkIGRvY2xlYW4oY3ApCistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwljaGFyICpjcDsKKyB7CisgCURJUiAqZDsKKy0JcmVnaXN0ZXIgRElSRU5UUlkgKmRwOworKwlESVJFTlRSWSAqZHA7CisgCXN0cnVjdCBzdGF0IHN0YjsKKyAJY2hhciAqb3B0YXJnZXQsICplcDsKKyAJaW50IGxlbjsKK0BAIC00MzYsNyArNDM2LDcgQEAKKyAKKyAJb3B0YXJnZXQgPSBwdGFyZ2V0OworIAlsZW4gPSBwdGFyZ2V0IC0gdGFyZ2V0OworLQl3aGlsZSAoZHAgPSByZWFkZGlyKGQpKSB7CisrCXdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSkgeworIAkJaWYgKChEX05BTUxFTihkcCkgPT0gMSAmJiBkcC0+ZF9uYW1lWzBdID09ICcuJykgfHwKKyAJCSAgICAoRF9OQU1MRU4oZHApID09IDIgJiYgZHAtPmRfbmFtZVswXSA9PSAnLicgJiYKKyAJCSAgICAgZHAtPmRfbmFtZVsxXSA9PSAnLicpKQorQEAgLTQ1MCw3ICs0NTAsNyBAQAorIAkJcHRhcmdldCA9IG9wdGFyZ2V0OworIAkJKnB0YXJnZXQrKyA9ICcvJzsKKyAJCWNwID0gZHAtPmRfbmFtZTs7CistCQl3aGlsZSAoKnB0YXJnZXQrKyA9ICpjcCsrKQorKwkJd2hpbGUgKCgqcHRhcmdldCsrID0gKmNwKyspKQorIAkJCTsKKyAJCXB0YXJnZXQtLTsKKyAJCWlmIChsc3RhdCh0YXJnZXQsICZzdGIpIDwgMCkgeworQEAgLTQ4MSw3ICs0ODEsNyBAQAorICAqIEZyb250ZW5kIHRvIGRvY2xlYW4oKS4KKyAgKi8KKyBzdGF0aWMgdm9pZCBjbGVhbihjcCkKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWNoYXIgKmNwOworIHsKKyAJZG9jbGVhbihjcCk7CisgCSh2b2lkKSBzZW5kY21kKENDX0VORCwgTlVMTCk7CitAQCAtNTA5LDcgKzUwOSw3IEBACisgICovCisgc3RhdGljIHZvaWQgZG9jbWRzcGVjaWFsKCkKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNwOworKwljaGFyICpjcDsKKyAJY2hhciAqY21kLCAqZW52ID0gTlVMTDsKKyAJaW50IG47CisgCWludCBsZW47CitAQCAtNjY3LDcgKzY2Nyw3IEBACisgCWNoYXIgKm5hbWU7CisgCW9wdF90IG9wdHM7CisgeworLQlyZWdpc3RlciBjaGFyICpjcDsKKysJY2hhciAqY3A7CisgCXN0cnVjdCBzdGF0IHN0YjsKKyAJaW50IHIgPSAtMTsKKyAKK0BAIC03NjAsNyArNzYwLDcgQEAKKyB7CisgCWludCBmLCB3cmVyciwgb2xkZXJybm8sIGxhc3R3YXNob2xlID0gMCwgd2Fzc3BhcnNlID0gMDsKKyAJb2ZmX3QgaTsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWNoYXIgKmNwOworIAljaGFyICpzYXZlZmlsZSA9IE5VTEw7CisgCXN0YXRpYyBzdHJ1Y3Qgc3RhdCBzdGF0YnVmZjsKKyAKK0BAIC05ODcsNyArOTg3LDcgQEAKKyAJY2hhciAqb3duZXIsICpncm91cDsKKyB7CisgCXN0YXRpYyBjaGFyIGxvd25lclsxMDBdLCBsZ3JvdXBbMTAwXTsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CisrCWNoYXIgKmNwOworIAlzdHJ1Y3Qgc3RhdCBzdGI7CisgCWludCBzOworIAorQEAgLTEwNDQsNyArMTA0NCw3IEBACisgCisgCQkJCW8gPSAob3duZXJbMF0gPT0gJzonKSA/IG9wdHMgJiBET19OVU1DSEtPV05FUiA6CisgCQkJCQlvcHRzOworLQkJCQlpZiAoY3AgPSBnZXR1c2VybmFtZShzdGIuc3RfdWlkLCB0YXJnZXQsIG8pKQorKwkJCQlpZiAoKGNwID0gZ2V0dXNlcm5hbWUoc3RiLnN0X3VpZCwgdGFyZ2V0LCBvKSkpCisgCQkJCQlpZiAoc3RyY21wKG93bmVyLCBjcCkpCisgCQkJCQkJKHZvaWQpIHN0cmNweShsb3duZXIsIGNwKTsKKyAJCQl9CitAQCAtMTA1Myw3ICsxMDUzLDcgQEAKKyAKKyAJCQkJbyA9IChncm91cFswXSA9PSAnOicpID8gb3B0cyAmIERPX05VTUNIS0dST1VQIDoKKyAJCQkJCW9wdHM7CistCQkJCWlmIChjcCA9IGdldGdyb3VwbmFtZShzdGIuc3RfZ2lkLCB0YXJnZXQsIG8pKQorKwkJCQlpZiAoKGNwID0gZ2V0Z3JvdXBuYW1lKHN0Yi5zdF9naWQsIHRhcmdldCwgbykpKQorIAkJCQkJaWYgKHN0cmNtcChncm91cCwgY3ApKQorIAkJCQkJCSh2b2lkKSBzdHJjcHkobGdyb3VwLCBjcCk7CisgCQkJfQorQEAgLTExMDcsOCArMTEwNyw4IEBACisgCWlmIChzIDwgMCkgeworIAkJaWYgKGVycm5vID09IEVOT0VOVCkgeworIAkJCWlmIChta2Rpcih0YXJnZXQsIG1vZGUpID09IDAgfHwKKy0JCQkgICAgY2hrcGFyZW50KHRhcmdldCwgb3B0cykgPT0gMCAmJiAKKy0JCQkgICAgbWtkaXIodGFyZ2V0LCBtb2RlKSA9PSAwKSB7CisrCQkJICAgIChjaGtwYXJlbnQodGFyZ2V0LCBvcHRzKSA9PSAwICYmIAorKwkJCSAgICAgbWtkaXIodGFyZ2V0LCBtb2RlKSA9PSAwKSkgeworIAkJCQltZXNzYWdlKE1UX05PVElDRSwgIiVzOiBta2RpciIsIHRhcmdldCk7CisgCQkJCSh2b2lkKSBmY2hvZygtMSwgdGFyZ2V0LCBvd25lciwgZ3JvdXAsIG1vZGUpOworIAkJCQlhY2soKTsKK0BAIC0xMzA0LDcgKzEzMDQsNyBAQAorIHN0YXRpYyB2b2lkIHNldGNvbmZpZyhjbWQpCisgCWNoYXIgKmNtZDsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNwID0gY21kOworKwljaGFyICpjcCA9IGNtZDsKKyAJY2hhciAqZXN0cjsKKyAKKyAJc3dpdGNoICgqY3ArKykgeworQEAgLTEzMzgsNyArMTMzOCw3IEBACisgCQlicmVhazsKKyAKKyAJY2FzZSBTQ19MT0dHSU5HOgkvKiBMb2dnaW5nIG9wdGlvbnMgKi8KKy0JCWlmIChlc3RyID0gbXNncGFyc2VvcHRzKGNwLCBUUlVFKSkgeworKwkJaWYgKChlc3RyID0gbXNncGFyc2VvcHRzKGNwLCBUUlVFKSkpIHsKKyAJCQlmYXRhbGVycigiQmFkIG1lc3NhZ2Ugb3B0aW9uIHN0cmluZyAoJXMpOiAlcyIsIAorIAkJCQkgY3AsIGVzdHIpOworIAkJCXJldHVybjsKK0BAIC0xNDU1LDcgKzE0NTUsNyBAQAorIAkJc3B0YXJnZXRbY2F0bmFtZV0gPSBwdGFyZ2V0OworIAkJaWYgKGNhdG5hbWUrKykgeworIAkJCSpwdGFyZ2V0KysgPSAnLyc7CistCQkJd2hpbGUgKCpwdGFyZ2V0KysgPSAqZmlsZSsrKQorKwkJCXdoaWxlICgoKnB0YXJnZXQrKyA9ICpmaWxlKyspKQorIAkJCSAgICA7CisgCQkJcHRhcmdldC0tOworIAkJfQorQEAgLTE0NjMsNiArMTQ2Myw3IEBACisgCQkvKgorIAkJICogQ3JlYXRlIG5hbWUgb2YgdGVtcG9yYXJ5IGZpbGUKKyAJCSAqLworKwkJaW50IGZkOworIAkJaWYgKGNhdG5hbWUgJiYgY2F0dGFyZ2V0KGZpbGUpIDwgMCkgeworIAkJCWVycm9yKCJDYW5ub3Qgc2V0IGZpbGUgbmFtZS4iKTsKKyAJCQlyZXR1cm47CitAQCAtMTQ3Nyw3ICsxNDc4LDEyIEBACisgCQkJKHZvaWQpIHNwcmludGYobmV3LCAiJXMvJXMiLCB0YXJnZXQsIHRlbXBuYW1lKTsKKyAJCQkqZmlsZSA9ICcvJzsKKyAJCX0KKy0JCSh2b2lkKSBta3RlbXAobmV3KTsKKysJCWZkID0gbWtzdGVtcChuZXcpOworKwkJaWYgKGZkIDwgMCkgeworKwkJCWVycm9yKCJDYW5ub3Qgc2V0IGZpbGUgbmFtZS4iKTsKKysJCQlyZXR1cm47CisrCQl9CisrCQljbG9zZShmZCk7CisgCX0KKyAKKyAJLyoKK0BAIC0xNTgxLDggKzE1ODcsOCBAQAorIGV4dGVybiB2b2lkIHNlcnZlcigpCisgeworIAlzdGF0aWMgY2hhciBjbWRidWZbQlVGU0laXTsKKy0JcmVnaXN0ZXIgY2hhciAqY3A7CistCXJlZ2lzdGVyIGludCBuOworKwljaGFyICpjcDsKKysJaW50IG47CisgCWV4dGVybiBqbXBfYnVmIGZpbmlzaF9qbXBidWY7CisgCisgCWlmIChzZXRqbXAoZmluaXNoX2ptcGJ1ZikpIHsKKy0tLSByZGlzdC02LjEuNS9zcmMvZmlsZXN5cy5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNToxMDoxOC4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvZmlsZXN5cy5jCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCitAQCAtMzgsNyArMzgsNyBAQAorICAqIFNVQ0ggREFNQUdFLgorICAqLworIAorLSNpZm5kZWYgbGludAorKyNpZiAwCisgc3RhdGljIGNoYXIgUkNTaWRbXSA9IAorICIkSWQ6IGZpbGVzeXMuYyx2IDYuMjUgMTk5OC8xMS8xMCAwNDoxMDoxNyBtY29vcGVyIEV4cCAkIjsKKyAKK0BAIC03Miw3ICs3Miw3IEBACisgCXN0YXRpYyBjaGFyIGxhc3RfcGF0aG5hbWVbTUFYUEFUSExFTl07CisgCXN0YXRpYyBjaGFyIGZpbGVbTUFYUEFUSExFTiArIDNdOworIAlzdGF0aWMgc3RydWN0IHN0YXQgZmlsZXN0YXQ7CistCXJlZ2lzdGVyIGNoYXIgKnA7CisrCWNoYXIgKnA7CisgCisgCS8qCisgCSAqIE1hcmsgdGhlIHN0YXRidWYgYXMgaW52YWxpZCB0byBzdGFydCB3aXRoLgorQEAgLTEyNSw3ICsxMjUsNyBAQAorIAkJCSAqIE5vcm1hbGx5IHdlIHdhbnQgdG8gY2hhbmdlIC9kaXIxL2RpcjIvZmlsZQorIAkJCSAqIGludG8gIi9kaXIxL2RpcjIvLiIKKyAJCQkgKi8KKy0JCQlpZiAocCA9IChjaGFyICopIHN0cnJjaHIoZmlsZSwgJy8nKSkgeworKwkJCWlmICgocCA9IChjaGFyICopIHN0cnJjaHIoZmlsZSwgJy8nKSkpIHsKKyAJCQkJKisrcCA9ICcuJzsKKyAJCQkJKisrcCA9IENOVUxMOworIAkJCX0gZWxzZSB7CitAQCAtMTgzLDcgKzE4Myw3IEBACisgCXN0cnVjdCBzdGF0ICpmaWxlc3Q7CisgCXN0cnVjdCBtbnRpbmZvICptbnRpbmZvOworIHsKKy0JcmVnaXN0ZXIgc3RydWN0IG1udGluZm8gKm1pOworKwlzdHJ1Y3QgbW50aW5mbyAqbWk7CisgCisgCWZvciAobWkgPSBtbnRpbmZvOyBtaTsgbWkgPSBtaS0+bWlfbnh0KSB7CisgCQlpZiAobWktPm1pX21udC0+bWVfZmxhZ3MgJiBNRUZMQUdfSUdOT1JFKQorQEAgLTIwMiw3ICsyMDIsNyBAQAorIAltbnRlbnRfdCAqbW50OworIAlzdHJ1Y3QgbW50aW5mbyAqbW50aW5mbzsKKyB7CistCXJlZ2lzdGVyIHN0cnVjdCBtbnRpbmZvICptOworKwlzdHJ1Y3QgbW50aW5mbyAqbTsKKyAKKyAJZm9yIChtID0gbW50aW5mbzsgbTsgbSA9IG0tPm1pX254dCkKKyAJCWlmIChzdHJjbXAobS0+bWlfbW50LT5tZV9wYXRoLCBtbnQtPm1lX3BhdGgpID09IDApCitAQCAtMjQ3LDcgKzI0Nyw3IEBACisgCX0KKyAKKyAJbW50aW5mbyA9IG1pOworLQl3aGlsZSAobW50ID0gZ2V0bW91bnRlbnQobWZwKSkgeworKwl3aGlsZSAoKG1udCA9IGdldG1vdW50ZW50KG1mcCkpKSB7CisgCQlkZWJ1Z21zZyhETV9NSVNDLCAibW91bnRlbnQgPSAnJXMnICglcykiLCAKKyAJCQkgbW50LT5tZV9wYXRoLCBtbnQtPm1lX3R5cGUpOworIAorQEAgLTMwOCw3ICszMDgsNyBAQAorIAlzdGF0aWMgc3RydWN0IHN0YXQgZmlsZXN0YXQ7CisgCXN0cnVjdCBzdGF0ICpwc3RhdDsKKyAJc3RydWN0IG1udGluZm8gKnRtcG1pOworLQlyZWdpc3RlciBtbnRlbnRfdCAqbW50OworKwltbnRlbnRfdCAqbW50OworIAorIAkvKgorIAkgKiBVc2UgdGhlIHN1cHBsaWVkIHN0YXQgYnVmZmVyIGlmIG5vdCBOVUxMIG9yIG91ciBvd24uCitAQCAtMzMwLDE2ICszMzAsMTYgQEAKKyAJLyoKKyAJICogRmluZCB0aGUgbW50IHRoYXQgcGF0aG5hbWUgaXMgb24uCisgCSAqLworLQlpZiAobW50ID0gZmluZG1udChwc3RhdCwgbW50aW5mbykpCisrCWlmICgobW50ID0gZmluZG1udChwc3RhdCwgbW50aW5mbykpKQorIAkJcmV0dXJuKG1udCk7CisgCisgCS8qCisgCSAqIFdlIGZhaWxlZCB0byBmaW5kIGNvcnJlY3QgbW50LCBzbyBtYXliZSBpdCdzIGEgbmV3bHkKKyAJICogbW91bnRlZCBmaWxlc3lzdGVtLiAgV2UgcmVidWlsZCBtbnRpbmZvIGFuZCB0cnkgYWdhaW4uCisgCSAqLworLQlpZiAodG1wbWkgPSBtYWtlbW50aW5mbyhtbnRpbmZvKSkgeworKwlpZiAoKHRtcG1pID0gbWFrZW1udGluZm8obW50aW5mbykpKSB7CisgCQltbnRpbmZvID0gdG1wbWk7CistCQlpZiAobW50ID0gZmluZG1udChwc3RhdCwgbW50aW5mbykpCisrCQlpZiAoKG1udCA9IGZpbmRtbnQocHN0YXQsIG1udGluZm8pKSkKKyAJCQlyZXR1cm4obW50KTsKKyAJfQorIAorLS0tIHJkaXN0LTYuMS41L3NyYy9maWxlc3lzLW9zLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjA5OjU5LjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9maWxlc3lzLW9zLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zOCw3ICszOCw3IEBACisgICogU1VDSCBEQU1BR0UuCisgICovCisgCistI2lmbmRlZiBsaW50CisrI2lmIDAKKyBzdGF0aWMgY2hhciBSQ1NpZFtdID0gCisgIiRJZDogZmlsZXN5cy1vcy5jLHYgNi4xOCAxOTk4LzExLzEwIDA0OjA5OjU4IG1jb29wZXIgRXhwICQiOworIAorQEAgLTMxNCw3ICszMTQsNyBAQAorIAorIAliemVybygoY2hhciAqKSZtZSwgc2l6ZW9mKG1udGVudF90KSk7CisgCistCWlmIChtbnRlbnQgPSBnZXRtbnRlbnQoZnB0cikpIHsKKysJaWYgKChtbnRlbnQgPSBnZXRtbnRlbnQoZnB0cikpKSB7CisgCQltZS5tZV9wYXRoID0gbW50ZW50LT5tbnRfZGlyOworIAkJbWUubWVfdHlwZSA9IG1udGVudC0+bW50X3R5cGU7CisgCQlpZiAobW50ZW50LT5tbnRfb3B0cyAmJiBoYXNtbnRvcHQobW50ZW50LCBNTlRPUFRfUk8pKQorLS0tIHJkaXN0LTYuMS41L3NyYy9zdHJjYXNlY21wLmMuY2xlYW51cAkxOTk4LTExLTEwIDA1OjE2OjUyLjAwMDAwMDAwMCArMDEwMAorKysrIHJkaXN0LTYuMS41L3NyYy9zdHJjYXNlY21wLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC01MSw5ICs1MSw5IEBACisgfTsKKyAKKyBzdHJjYXNlY21wKHMxLCBzMikKKy0JcmVnaXN0ZXIgY2hhciAqczEsICpzMjsKKysJY2hhciAqczEsICpzMjsKKyB7CistCXJlZ2lzdGVyIGNoYXIgKmNtID0gY2hhcm1hcDsKKysJY2hhciAqY20gPSBjaGFybWFwOworIAorIAl3aGlsZSAoY21bKnMxXSA9PSBjbVsqczIrK10pCisgCQlpZiAoKnMxKysgPT0gJ1wwJykKK0BAIC02MiwxMCArNjIsMTAgQEAKKyB9CisgCisgc3RybmNhc2VjbXAoczEsIHMyLCBuKQorLQlyZWdpc3RlciBjaGFyICpzMSwgKnMyOworLQlyZWdpc3RlciBpbnQgbjsKKysJY2hhciAqczEsICpzMjsKKysJaW50IG47CisgeworLQlyZWdpc3RlciBjaGFyICpjbSA9IGNoYXJtYXA7CisrCWNoYXIgKmNtID0gY2hhcm1hcDsKKyAKKyAJd2hpbGUgKC0tbiA+PSAwICYmIGNtWypzMV0gPT0gY21bKnMyKytdKQorIAkJaWYgKCpzMSsrID09ICdcMCcpCistLS0gcmRpc3QtNi4xLjUvc3JjL3N0cnRvbC5jLmNsZWFudXAJMTk5NC0wMy0xNyAwMDoyNTo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvc3RydG9sLmMJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC01NCwxMyArNTQsMTMgQEAKKyBzdHJ0b2wobnB0ciwgZW5kcHRyLCBiYXNlKQorIAljaGFyICpucHRyOworIAljaGFyICoqZW5kcHRyOworLQlyZWdpc3RlciBpbnQgYmFzZTsKKysJaW50IGJhc2U7CisgeworLQlyZWdpc3RlciBjaGFyICpzID0gbnB0cjsKKy0JcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBhY2M7CistCXJlZ2lzdGVyIGludCBjOworLQlyZWdpc3RlciB1bnNpZ25lZCBsb25nIGN1dG9mZjsKKy0JcmVnaXN0ZXIgaW50IG5lZyA9IDAsIGFueSwgY3V0bGltOworKwljaGFyICpzID0gbnB0cjsKKysJdW5zaWduZWQgbG9uZyBhY2M7CisrCWludCBjOworKwl1bnNpZ25lZCBsb25nIGN1dG9mZjsKKysJaW50IG5lZyA9IDAsIGFueSwgY3V0bGltOworIAorIAkvKgorIAkgKiBTa2lwIHdoaXRlIHNwYWNlIGFuZCBwaWNrIHVwIGxlYWRpbmcgKy8tIHNpZ24gaWYgYW55LgorLS0tIHJkaXN0LTYuMS41L3NyYy9yZWdleC5jLmNsZWFudXAJMTk5OC0xMS0xMCAwNToxNDoyOC4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvcmVnZXguYwkyMDAzLTEyLTE3IDExOjM5OjE0LjAwMDAwMDAwMCArMDEwMAorQEAgLTE0MiwxMCArMTQyLDggQEAKKyAgKi8KKyBjaGFyICoKKyByZV9jb21wKHNwKQorLQlyZWdpc3RlciBjaGFyCSpzcDsKKyB7CistCXJlZ2lzdGVyIGludAljOworLQlyZWdpc3RlciBjaGFyCSplcCA9IGV4cGJ1ZjsKKysJY2hhcgkqZXAgPSBleHBidWY7CisgCWludAljY2xjbnQsIG51bWJyYSA9IDA7CisgCWNoYXIJKmxhc3RlcCA9IDA7CisgCWNoYXIJYnJhY2tldFtOQlJBXTsKK0BAIC0yNjYsMTAgKzI2NCwxMCBAQAorICAqLworIGludAorIHJlX2V4ZWMocDEpCistCXJlZ2lzdGVyIGNoYXIJKnAxOworKwljaGFyCSpwMTsKKyB7CistCXJlZ2lzdGVyIGNoYXIJKnAyID0gZXhwYnVmOworLQlyZWdpc3RlciBpbnQJYzsKKysJY2hhcgkqcDIgPSBleHBidWY7CisrCWludAljOworIAlpbnQJcnY7CisgCisgCWZvciAoYyA9IDA7IGMgPCBOQlJBOyBjKyspIHsKK0BAIC0zMDYsOSArMzA0LDkgQEAKKyAgKi8KKyBzdGF0aWMJaW50CisgYWR2YW5jZShscCwgZXApCistCXJlZ2lzdGVyIGNoYXIJKmxwLCAqZXA7CisrCWNoYXIJKmxwLCAqZXA7CisgeworLQlyZWdpc3RlciBjaGFyCSpjdXJscDsKKysJY2hhcgkqY3VybHA7CisgCWludAljdCwgaTsKKyAJaW50CXJ2OworIAorQEAgLTQxMywxMCArNDExLDEwIEBACisgfQorIAorIGJhY2tyZWYoaSwgbHApCistCXJlZ2lzdGVyIGludAlpOworLQlyZWdpc3RlciBjaGFyCSpscDsKKysJaW50CWk7CisrCWNoYXIJKmxwOworIHsKKy0JcmVnaXN0ZXIgY2hhcgkqYnA7CisrCWNoYXIJKmJwOworIAorIAlicCA9IGJyYXNsaXN0W2ldOworIAl3aGlsZSAoKmJwKysgPT0gKmxwKyspCitAQCAtNDI3LDEwICs0MjUsMTAgQEAKKyAKKyBpbnQKKyBjY2xhc3Moc2V0LCBjLCBhZikKKy0JcmVnaXN0ZXIgY2hhcgkqc2V0LCBjOworKwljaGFyCSpzZXQsIGM7CisgCWludAlhZjsKKyB7CistCXJlZ2lzdGVyIGludAluOworKwlpbnQJbjsKKyAKKyAJaWYgKGMgPT0gMCkKKyAJCXJldHVybigwKTsKKy0tLSByZGlzdC02LjEuNS9pbmNsdWRlL2RlZnMuaC5jbGVhbnVwCTIwMDMtMTItMTcgMTE6Mzg6MTYuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvaW5jbHVkZS9kZWZzLmgJMjAwMy0xMi0xNyAxMTozODoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMCwxMSArMzAsMTMgQEAKKyAjaW5jbHVkZSA8Z3JwLmg+CisgI2luY2x1ZGUgPHN5c2xvZy5oPgorICNpbmNsdWRlIDxzZXRqbXAuaD4KKysjaW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgI2luY2x1ZGUgPHN5cy9maWxlLmg+CistI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisrI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAKKyAjaW5jbHVkZSAidmVyc2lvbi5oIgorICNpbmNsdWRlICJjb25maWctZGVmLmgiCitAQCAtNDgsNiArNTAsOSBAQAorICNlbmRpZgkvKiB5YWNjICovCisgCisgI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNkZWZpbmUgX1JFR0VYX1JFX0NPTVAKKysjaW5jbHVkZSA8cmVnZXguaD4KKysKKyAKKyAvKgorICAqIFRoaXMgYmVsb25ncyBpbiBvcy1zdnI0LmggYnV0IG1hbnkgU1ZSNCBPUydzCitAQCAtMzIxLDEyICszMjYsMTEgQEAKKyAvKgorICAqIE91ciBvd24gZGVjbGFyYXRpb25zLgorICAqLworLWNoYXIJCQkgICAgICAgKmV4cHRpbGRlKCk7CisgY2hhcgkJCSAgICAgICAqbWFrZXN0cigpOworIGNoYXIJICAgICAgIAkJICAgICAgICp4Y2FsbG9jKCk7CisgY2hhcgkgICAgICAgCQkgICAgICAgKnhtYWxsb2MoKTsKKyBjaGFyCSAgICAgICAJCSAgICAgICAqeHJlYWxsb2MoKTsKKy1leHRlcm4gY2hhcgkJICAgICAgICp4YmFzZW5hbWUoKTsKKytleHRlcm4gY2hhcgkJICAgICAgICpleHB0aWxkZSgpOworIGV4dGVybiBjaGFyCQkgICAgICAgKmdldGRpc3RvcHRsaXN0KCk7CisgZXh0ZXJuIGNoYXIJCSAgICAgICAqZ2V0Z3JvdXBuYW1lKCk7CisgZXh0ZXJuIGNoYXIJCSAgICAgICAqZ2V0bmxzdHIoKTsKK0BAIC0zMzYsNDQgKzM0MCw3NSBAQAorIGV4dGVybiBjaGFyCQkgICAgICAgKmdldHZlcnNpb24oKTsKKyBleHRlcm4gY2hhcgkJICAgICAgICptc2dwYXJzZW9wdHMoKTsKKyBleHRlcm4gY2hhcgkJICAgICAgICpzZWFyY2hwYXRoKCk7CisrZXh0ZXJuIGNoYXIJCSAgICAgICAqeGJhc2VuYW1lKCk7CisrZXh0ZXJuIGludAkJCWFtYXRjaCgpOworIGV4dGVybiBpbnQJCQlhbnkoKTsKKytleHRlcm4gaW50CQkJYmVjb21lcm9vdCgpOworK2V4dGVybiBpbnQJCQliZWNvbWV1c2VyKCk7CisrZXh0ZXJuIGludAkJCWV4Y2VwdCgpOworK2V4dGVybiBpbnQJCQlleGVjYnJjKCk7CisrZXh0ZXJuIGludAkJCWdldGZpbGVzeXNpbmZvKCk7CisrZXh0ZXJuIGludAkJCWdldHNvY2tldHBhaXIoKTsKKyBleHRlcm4gaW50CQkJaW5pdCgpOworIGV4dGVybiBpbnQJCQlpbnN0YWxsKCk7CisgZXh0ZXJuIGludAkJCWlzZXhlYygpOworK2V4dGVybiBpbnQJCQlpc19uZnNfbW91bnRlZCgpOworK2V4dGVybiBpbnQJCQlpc19yb19tb3VudGVkKCk7CisrZXh0ZXJuIGludAkJCWlzX3N5bWxpbmtlZCgpOworK2V4dGVybiBpbnQJCQltYXRjaCgpOworK2V4dGVybiBpbnQJCQlva25hbWUoKTsKKyBleHRlcm4gaW50CQkJcGFyc2VkaXN0b3B0cygpOworK2V4dGVybiBpbnQJCQlyZWFkcmVtKCk7CisgZXh0ZXJuIGludAkJCXJlbWxpbmUoKTsKKytleHRlcm4gaW50CQkJcmVzcG9uc2UoKTsKKytleHRlcm4gaW50CQkJcnNocmNtZCgpOworIGV4dGVybiBpbnQJCQlzZXRmaWxldGltZSgpOworK2V4dGVybiBpbnQJCQlzZXRub25ibG9ja2luZygpOworIGV4dGVybiBpbnQJCQlzcGF3bigpOworK2V4dGVybiBpbnQJCQl5eWxleCgpOworK2V4dGVybiBpbnQJCQl5eXBhcnNlKCk7CisgZXh0ZXJuIHN0cnVjdCBzdWJjbWQgCSAgICAgICAqbWFrZXN1YmNtZCgpOworK2V4dGVybiB2b2lkCQkJYXBwZW5kKCk7CisgZXh0ZXJuIHZvaWQJCQljaGVja2hvc3RuYW1lKCk7CisgZXh0ZXJuIHZvaWQJCQljbGVhbnVwKCk7CisgZXh0ZXJuIHZvaWQJCQljb21wbGFpbigpOworK2V4dGVybiB2b2lkCQkJY29yZWR1bXAoKTsKKytleHRlcm4gdm9pZAkJCWRlZmluZSgpOworK2V4dGVybiB2b2lkCQkJZG9jbWRhcmdzKCk7CisgZXh0ZXJuIHZvaWQJCQlkb2NtZHMoKTsKKyBleHRlcm4gdm9pZAkJCWZpbmlzaCgpOworLWV4dGVybiB2b2lkCQkJbG9nKCk7CisrZXh0ZXJuIHZvaWQJCQlmcmVlbGlua2luZm8oKTsKKytleHRlcm4gdm9pZAkJCWluc2VydCgpOworIGV4dGVybiB2b2lkCQkJbG9nbXNnKCk7CisgZXh0ZXJuIHZvaWQJCQlsb3N0Y29ubigpOworIGV4dGVybiB2b2lkCQkJbWFya2Fzc2lnbmVkKCk7CisrZXh0ZXJuIHZvaWQJCQltc2dwcmNvbmZpZygpOworIGV4dGVybiB2b2lkCQkJbXNncHJ1c2FnZSgpOworK2V4dGVybiB2b2lkCQkJbXlzZXRsaW5lYnVmKCk7CisgZXh0ZXJuIHZvaWQJCQlub3RlKCk7CisgZXh0ZXJuIHZvaWQJCQlydW5jbWRzcGVjaWFsKCk7CisgZXh0ZXJuIHZvaWQJCQlydW5jb21tYW5kKCk7CisgZXh0ZXJuIHZvaWQJCQlzZXJ2ZXIoKTsKKytleHRlcm4gdm9pZAkJCXNldGFyZ3Nfc2V0dHVwKCk7CisgZXh0ZXJuIHZvaWQJCQlzZXRwcm9nbmFtZSgpOworIGV4dGVybiB2b2lkCQkJc2lnaGFuZGxlcigpOworK2V4dGVybiB2b2lkCQkJdXNhZ2UoKTsKKyBleHRlcm4gdm9pZAkJCXdhaXR1cCgpOworK2V4dGVybiB2b2lkCQkJeXllcnJvcigpOworK2V4dGVybiBXUklURV9SRVRVUk5fVAkJeHdyaXRlKCk7Cisgc3RydWN0IG5hbWVsaXN0CQkgICAgICAgKmV4cGFuZCgpOworIHN0cnVjdCBuYW1lbGlzdAkJICAgICAgICpsb29rdXAoKTsKKyBzdHJ1Y3QgbmFtZWxpc3QJCSAgICAgICAqbWFrZW5sKCk7CistZXh0ZXJuIFdSSVRFX1JFVFVSTl9UCQl4d3JpdGUoKTsKKyAKKyAjaWYJZGVmaW5lZChBUkdfVFlQRSkgJiYgQVJHX1RZUEUgPT0gQVJHX1NUREFSRworK2V4dGVybiBpbnQJCQlzZW5kY21kKGNoYXIgY21kLCBjaGFyICpmbXQsIC4uLik7CisgZXh0ZXJuIHZvaWQJCQlkZWJ1Z21zZyhpbnQsIGNoYXIgKiwgLi4uKTsKKyBleHRlcm4gdm9pZAkJCWVycm9yKGNoYXIgKiwgLi4uKTsKKyBleHRlcm4gdm9pZAkJCWZhdGFsZXJyKGNoYXIgKiwgLi4uKTsKKyBleHRlcm4gdm9pZAkJCW1lc3NhZ2UoaW50LCBjaGFyICosIC4uLik7CisgZXh0ZXJuIHZvaWQJCQlzZXRwcm9jdGl0bGUoY2hhciAqZm10LCAuLi4pOworICNlbHNlCisrZXh0ZXJuIGludAkJCXNlbmRjbWQodmFfYWxpc3QpOworIGV4dGVybiB2b2lkCQkJZGVidWdtc2coKTsKKyBleHRlcm4gdm9pZAkJCWVycm9yKCk7CisgZXh0ZXJuIHZvaWQJCQlmYXRhbGVycigpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtZml4LW1zZ3NuZG5vdGlmeS1sb29wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtZml4LW1zZ3NuZG5vdGlmeS1sb29wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxODNkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1maXgtbXNnc25kbm90aWZ5LWxvb3AucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L3NyYy9tZXNzYWdlLmMudGhlc3Rva2VzCTIwMDYtMDQtMTkgMTc6MzA6MzkuMDAwMDAwMDAwIC0wNDAwCisrKysgcmRpc3QtNi4xLjUvc3JjL21lc3NhZ2UuYwkyMDA2LTA0LTE5IDE3OjM2OjM3LjAwMDAwMDAwMCAtMDQwMAorQEAgLTc5MywxNSArNzkzLDIwIEBACisgCWNoYXIgKm1zZzsKKyB7CisgCXN0YXRpYyBjaGFyIGJ1ZltNU0dCVUZTSVpdOworLQorLQkrK25lcnJzOworLQorLQlpZiAoaXNzZXJ2ZXIpCistCQkodm9pZCkgc3ByaW50ZihidWYsICJSRU1PVEUgRVJST1I6ICVzIiwgbXNnKTsKKy0JZWxzZQorLQkJKHZvaWQpIHNwcmludGYoYnVmLCAiTE9DQUwgRVJST1I6ICVzIiwgbXNnKTsKKy0KKy0JX21lc3NhZ2UoTVRfRkVSUk9SLCBidWYpOworKwkvKiBEb24ndCByZWVudGVyIHRoaXMgZnVuY3Rpb24uIFRoZXJlIGlzIGEgbmFzdHkgaW5maW5pdGUgcmVjdXJzaW9uCisrCSAgIGNhc2UgdGhhdCBwb3BzIHVwIHdoZW4gbXNnc25kbm90aWZ5IHRyaWVzIHRvIGV4aXQuICovCisrCXN0YXRpYyBpbnQgaW5zaWRlPTA7IAorKworKwlpZihpbnNpZGU9PTApeworKwkgICAgICAgICsrbmVycnM7CisrCQlpbnNpZGU9MTsKKysKKysJICAgICAgICBpZiAoaXNzZXJ2ZXIpCisrCQkgICAgICAgICh2b2lkKSBzcHJpbnRmKGJ1ZiwgIlJFTU9URSBFUlJPUjogJXMiLCBtc2cpOworKwkgICAgICAgIGVsc2UKKysJCSAgICAgICAgKHZvaWQpIHNwcmludGYoYnVmLCAiTE9DQUwgRVJST1I6ICVzIiwgbXNnKTsKKysJCV9tZXNzYWdlKE1UX0ZFUlJPUiwgYnVmKTsKKysJfQorIAorIAlleGl0KG5lcnJzKTsKKyB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1oYXJkbGluay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWhhcmRsaW5rLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjhlMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1oYXJkbGluay5wYXRjaApAQCAtMCwwICsxLDI1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvc3JjL2NsaWVudC5jLmhhcmRsaW5rCVRodSBKdW4gIDMgMTM6NTY6MzEgMTk5OQorKysrIHJkaXN0LTYuMS41L3NyYy9jbGllbnQuYwlUaHUgSnVuICAzIDE0OjAwOjA2IDE5OTkKK0BAIC0zNDgsNyArMzQ4LDcgQEAKKyAJCWxwLT50YXJnZXQgPSBzdHJkdXAoVGRlc3QpOworIAllbHNlCisgCQlscC0+dGFyZ2V0ID0gTlVMTDsKKy0JaWYgKCFscC0+cGF0aG5hbWUgfHwgIWxwLT5zcmMgfHwgIShUZGVzdCAmJiBscC0+dGFyZ2V0KSkKKysJaWYgKCFscC0+cGF0aG5hbWUgfHwgIWxwLT5zcmMgfHwgKFRkZXN0ICYmICFscC0+dGFyZ2V0KSkKKyAJCWZhdGFsZXJyKCJDYW5ub3QgbWFsbG9jIG1lbW9yeSBpbiBsaW5raW5mby4iKTsKKyAKKyAJcmV0dXJuKChzdHJ1Y3QgbGlua2J1ZiAqKSBOVUxMKTsKK0BAIC0zNzAsNyArMzcwLDcgQEAKKyAJICAgICAgICJzZW5kaGFyZGxpbms6IHJuYW1lPSclcycgcGF0aG5hbWU9JyVzJyBzcmM9JyVzJyB0YXJnZXQ9JyVzJ1xuIiwKKyAJCSBybmFtZSwgbHAtPnBhdGhuYW1lLCBscC0+c3JjLCBscC0+dGFyZ2V0KTsKKyAJCSAKKy0JaWYgKCpscC0+dGFyZ2V0ID09IENOVUxMKQorKwlpZiAobHAtPnRhcmdldCA9PSBOVUxMIHx8ICpscC0+dGFyZ2V0ID09IENOVUxMKQorIAkJKHZvaWQpIHNlbmRjbWQoQ19SRUNWSEFSRExJTkssICIlbyAlcyAlcyIsIAorIAkJCSAgICAgICBvcHRzLCBscC0+cGF0aG5hbWUsIHJuYW1lKTsKKyAJZWxzZSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1sZnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1sZnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZhOGRiOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWxmcy5wYXRjaApAQCAtMCwwICsxLDE0MiBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L3NyYy9jbGllbnQuYy5sZnMJMjAwMy0xMi0xNiAyMzo0Mzo1Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvY2xpZW50LmMJMjAwMy0xMi0xNiAyMzo0Njo1Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC00MTQsOSArNDE0LDkgQEAKKyAJLyoKKyAJICogU2VuZCBmaWxlIGluZm8KKyAJICovCistCSh2b2lkKSBzZW5kY21kKENfUkVDVlJFRywgIiVvICUwNG8gJWxkICVsZCAlbGQgJXMgJXMgJXMiLCAKKysJKHZvaWQpIHNlbmRjbWQoQ19SRUNWUkVHLCAiJW8gJTA0byAlbGxkICVsZCAlbGQgJXMgJXMgJXMiLCAKKyAJCSAgICAgICBvcHRzLCBzdGItPnN0X21vZGUgJiAwNzc3NywgCistCQkgICAgICAgKGxvbmcpIHN0Yi0+c3Rfc2l6ZSwgCisrCQkgICAgICAgKG9mZl90KSBzdGItPnN0X3NpemUsIAorIAkJICAgICAgIHN0Yi0+c3RfbXRpbWUsIHN0Yi0+c3RfYXRpbWUsCisgCQkgICAgICAgdXNlciwgZ3JvdXAsIHJuYW1lKTsKKyAJaWYgKHJlc3BvbnNlKCkgPCAwKSB7CitAQCAtNDI0LDggKzQyNCw4IEBACisgCQlyZXR1cm4oLTEpOworIAl9CisgCistCWRlYnVnbXNnKERNX01JU0MsICJTZW5kIGZpbGUgJyVzJyAlZCBieXRlc1xuIiwgCistCQkgcm5hbWUsIChsb25nKSBzdGItPnN0X3NpemUpOworKwlkZWJ1Z21zZyhETV9NSVNDLCAiU2VuZCBmaWxlICclcycgJWxsZCBieXRlc1xuIiwgCisrCQkgcm5hbWUsIChvZmZfdCkgc3RiLT5zdF9zaXplKTsKKyAKKyAJLyoKKyAJICogU2V0IHJlbW90ZSB0aW1lIG91dCBhbGFybSBoYW5kbGVyLgorQEAgLTY3Niw5ICs2NzYsOSBAQAorIAkvKgorIAkgKiBHYXRoZXIgYW5kIHNlbmQgYmFzaWMgbGluayBpbmZvCisgCSAqLworLQkodm9pZCkgc2VuZGNtZChDX1JFQ1ZTWU1MSU5LLCAiJW8gJTA0byAlbGQgJWxkICVsZCAlcyAlcyAlcyIsIAorKwkodm9pZCkgc2VuZGNtZChDX1JFQ1ZTWU1MSU5LLCAiJW8gJTA0byAlbGxkICVsZCAlbGQgJXMgJXMgJXMiLCAKKyAJCSAgICAgICBvcHRzLCBzdGItPnN0X21vZGUgJiAwNzc3NywgCistCQkgICAgICAgKGxvbmcpIHN0Yi0+c3Rfc2l6ZSwgCisrCQkgICAgICAgKG9mZl90KSBzdGItPnN0X3NpemUsIAorIAkJICAgICAgIHN0Yi0+c3RfbXRpbWUsIHN0Yi0+c3RfYXRpbWUsCisgCQkgICAgICAgdXNlciwgZ3JvdXAsIHJuYW1lKTsKKyAJaWYgKHJlc3BvbnNlKCkgPCAwKQorQEAgLTg1OCw3ICs4NTgsNyBAQAorIAkvKgorIAkgKiBQYXJzZSBzaXplCisgCSAqLworLQlzaXplID0gc3RydG9sKGNwLCAmY3AsIDEwKTsKKysJc2l6ZSA9IHN0cnRvbGwoY3AsICZjcCwgMTApOworIAlpZiAoKmNwKysgIT0gJyAnKSB7CisgCQllcnJvcigidXBkYXRlOiBzaXplIG5vdCBkZWxpbWl0ZWQiKTsKKyAJCXJldHVybihVU19OT1RISU5HKTsKK0BAIC05MTAsOCArOTEwLDggQEAKKyAKKyAJZGVidWdtc2coRE1fTUlTQywgInVwZGF0ZSglcywpIGxvY2FsIG1vZGUgJTA0byByZW1vdGUgbW9kZSAlMDRvXG4iLCAKKyAJCSBybmFtZSwgbG1vZGUsIHJtb2RlKTsKKy0JZGVidWdtc2coRE1fTUlTQywgInVwZGF0ZSglcywpIHNpemUgJWQgbXRpbWUgJWQgb3duZXIgJyVzJyBncnAgJyVzJ1xuIiwKKy0JCSBybmFtZSwgKGludCkgc2l6ZSwgbXRpbWUsIG93bmVyLCBncm91cCk7CisrCWRlYnVnbXNnKERNX01JU0MsICJ1cGRhdGUoJXMsKSBzaXplICVsbGQgbXRpbWUgJWQgb3duZXIgJyVzJyBncnAgJyVzJ1xuIiwKKysJCSBybmFtZSwgKG9mZl90KSBzaXplLCBtdGltZSwgb3duZXIsIGdyb3VwKTsKKyAKKyAJaWYgKHN0YXRwLT5zdF9tdGltZSAhPSBtdGltZSkgeworIAkJaWYgKHN0YXRwLT5zdF9tdGltZSA8IG10aW1lICYmIElTX09OKG9wdHMsIERPX1lPVU5HRVIpKSB7CitAQCAtOTM3LDggKzkzNyw4IEBACisgCX0KKyAKKyAJaWYgKHN0YXRwLT5zdF9zaXplICE9IHNpemUpIHsKKy0JCWRlYnVnbXNnKERNX01JU0MsICJzaXplIGRvZXMgbm90IG1hdGNoICglZCAhPSAlZCkuXG4iLAorLQkJCSAoaW50KSBzdGF0cC0+c3Rfc2l6ZSwgc2l6ZSk7CisrCQlkZWJ1Z21zZyhETV9NSVNDLCAic2l6ZSBkb2VzIG5vdCBtYXRjaCAoJWxsZCAhPSAlbGxkKS5cbiIsCisrCQkJIHN0YXRwLT5zdF9zaXplLCBzaXplKTsKKyAJCXJldHVybihVU19PVVREQVRFKTsKKyAJfSAKKyAKKy0tLSByZGlzdC02LjEuNS9zcmMvc2VydmVyLmMubGZzCTE5OTgtMTEtMTAgMDU6MTU6MzEuMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvc3JjL3NlcnZlci5jCTIwMDMtMTItMTYgMjM6NTA6MTkuMDAwMDAwMDAwICswMTAwCitAQCAtNjQ1LDggKzY0NSw4IEBACisgCWNhc2UgU19JRkxOSzoKKyAJY2FzZSBTX0lGRElSOgorIAljYXNlIFNfSUZSRUc6CistCQkodm9pZCkgc2VuZGNtZChRQ19ZRVMsICIlbGQgJWxkICVvICVzICVzIiwKKy0JCQkgICAgICAgKGxvbmcpIHN0Yi5zdF9zaXplLCAKKysJCSh2b2lkKSBzZW5kY21kKFFDX1lFUywgIiVsbGQgJWxkICVvICVzICVzIiwKKysJCQkgICAgICAgKG9mZl90KSBzdGIuc3Rfc2l6ZSwgCisgCQkJICAgICAgIHN0Yi5zdF9tdGltZSwgCisgCQkJICAgICAgIHN0Yi5zdF9tb2RlICYgMDc3NzcsCisgCQkJICAgICAgIGdldHVzZXJuYW1lKHN0Yi5zdF91aWQsIHRhcmdldCwgb3B0aW9ucyksIAorQEAgLTEzODgsNyArMTM4OCw3IEBACisgCS8qCisgCSAqIEdldCBmaWxlIHNpemUKKyAJICovCistCXNpemUgPSBzdHJ0b2woY3AsICZjcCwgMTApOworKwlzaXplID0gc3RydG9sbChjcCwgJmNwLCAxMCk7CisgCWlmICgqY3ArKyAhPSAnICcpIHsKKyAJCWVycm9yKCJyZWN2aXQ6IHNpemUgbm90IGRlbGltaXRlZCIpOworIAkJcmV0dXJuOworQEAgLTE0NDEsNyArMTQ0MSw3IEBACisgCX0KKyAKKyAJZGVidWdtc2coRE1fTUlTQywKKy0JCSAicmVjdml0OiBvcHRzID0gJTA0byBtb2RlID0gJTA0byBzaXplID0gJWQgbXRpbWUgPSAlZCIsCisrCQkgInJlY3ZpdDogb3B0cyA9ICUwNG8gbW9kZSA9ICUwNG8gc2l6ZSA9ICVsbGQgbXRpbWUgPSAlZCIsCisgCQkgb3B0cywgbW9kZSwgc2l6ZSwgbXRpbWUpOworIAlkZWJ1Z21zZyhETV9NSVNDLAorICAgICAgICAicmVjdml0OiBvd25lciA9ICclcycgZ3JvdXAgPSAnJXMnIGZpbGUgPSAnJXMnIGNhdG5hbWUgPSAlZCBpc2RpciA9ICVkIiwKKy0tLSByZGlzdC02LjEuNS9pbmNsdWRlL2RlZnMuaC5sZnMJMjAwMy0xMi0xNiAyMzo0Mzo1Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9pbmNsdWRlL2RlZnMuaAkyMDAzLTEyLTE2IDIzOjQzOjU2LjAwMDAwMDAwMCArMDEwMAorQEAgLTIyLDYgKzIyLDggQEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2VuZGlmCS8qIF9QT1NJWF9TT1VSQ0UgKi8KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG1udGVudC5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxwd2QuaD4KK0BAIC0zMTcsMTUgKzMxOSw2IEBACisgI2VuZGlmIC8qIFVTRV9TVEFUREIgKi8KKyAKKyAvKgorLSAqIFN5c3RlbSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKy0gKi8KKy1jaGFyIAkJCSAgICAgICAqaGFzbW50b3B0KCk7CistY2hhcgkJCSAgICAgICAqc3RyY2hyKCk7CistY2hhcgkJIAkgICAgICAgKnN0cmR1cCgpOworLWNoYXIJCSAJICAgICAgICpzdHJyY2hyKCk7CistY2hhciAJCQkgICAgICAgKnN0cnRvaygpOworLQorLS8qCisgICogT3VyIG93biBkZWNsYXJhdGlvbnMuCisgICovCisgY2hhcgkJCSAgICAgICAqZXhwdGlsZGUoKTsKKy0tLSByZGlzdC02LjEuNS9NYWtlZmlsZS5sb2NhbC5sZnMJMTk5OC0xMS0xMCAwNDozNjozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9NYWtlZmlsZS5sb2NhbAkyMDAzLTEyLTE2IDIzOjQzOjU2LjAwMDAwMDAwMCArMDEwMAorQEAgLTIwLDcgKzIwLDcgQEAKKyAjIEFkZCBhbnkgbG9jYWwgZGVmaW5pdGlvbnMgeW91IHdhbnQgcGFzcyB0byB0aGUgY29tcGlsZXIgdG8gREVGU19MT0NBTAorICMgYmVsb3cuICBUaGlzIGluY2x1ZGVzIHRob3NlIGl0ZW1zIGZvdW5kIGluICJjb25maWcvY29uZmlnLmgiLgorICMKKy0jREVGU19MT0NBTAk9IC1ERElSRUNUX1JDTUQKKytERUZTX0xPQ0FMCT0gLU8yIC1nIC1waXBlIC1XYWxsIC1EX1BPU0lYX1NPVVJDRSAtRF9HTlVfU09VUkNFIC1EX0xBUkdFRklMRV9TT1VSQ0UgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKKyAKKyAjCisgIyBBZGQgYW55IGxvY2FsIGxpYnJhcmllcyB0aGF0IHlvdXIgc3lzdGVtIG1pZ2h0IG5lZWQgdG8gTElCU19MT0NBTCBiZWxvdy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWxpbmtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbGlua3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk5OTRmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LWxpbmtzLnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbMV0KKworWzFdIE5vdCB0aGUgYXV0aG9yLCB0aGUgcGF0Y2ggaXMgZnJvbToKK2h0dHA6Ly92YXVsdC5jZW50b3Mub3JnLzUuOC9vcy9TUlBNUy9yZGlzdC02LjEuNS00NC5zcmMucnBtCisKKy0tLSByZGlzdC02LjEuNS9zcmMvY2xpZW50LmMubGlua3MJV2VkIEZlYiAxNyAxNzo0NjowOSAxOTk5CisrKysgcmRpc3QtNi4xLjUvc3JjL2NsaWVudC5jCVdlZCBGZWIgMTcgMTc6NTE6MTUgMTk5OQorQEAgLTMwOSw2ICszMDksMTggQEAKKyAJcmV0dXJuKDApOworIH0KKyAKKyt2b2lkIGZyZWVsaW5raW5mbyhscCkKKysJc3RydWN0IGxpbmtidWYgKmxwOworK3sKKysJaWYgKGxwLT5wYXRobmFtZSkKKysJCWZyZWUobHAtPnBhdGhuYW1lKTsKKysJaWYgKGxwLT5zcmMpCisrCQlmcmVlKGxwLT5zcmMpOworKwlpZiAobHAtPnRhcmdldCkKKysJCWZyZWUobHAtPnRhcmdldCk7CisrCWZyZWUobHApOworK30KKysKKyAvKgorICAqIFNhdmUgYW5kIHJldHJpZXZlIGhhcmQgbGluayBpbmZvCisgICovCitAQCAtMzE3LDYgKzMyOSw3IEBACisgeworIAlzdHJ1Y3QgbGlua2J1ZiAqbHA7CisgCisrCS8qIHh4eDogbGluZWFyIHNlYXJjaCBkb2Vzbid0IHNjYWxlIHdpdGggbWFueSBsaW5rcyAqLworIAlmb3IgKGxwID0gaWhlYWQ7IGxwICE9IE5VTEw7IGxwID0gbHAtPm5leHRwKQorIAkJaWYgKGxwLT5pbnVtID09IHN0YXRwLT5zdF9pbm8gJiYgbHAtPmRldm51bSA9PSBzdGF0cC0+c3RfZGV2KSB7CisgCQkJbHAtPmNvdW50LS07CitAQCAtMzI5LDEyICszNDIsMTQgQEAKKyAJbHAtPmludW0gPSBzdGF0cC0+c3RfaW5vOworIAlscC0+ZGV2bnVtID0gc3RhdHAtPnN0X2RldjsKKyAJbHAtPmNvdW50ID0gc3RhdHAtPnN0X25saW5rIC0gMTsKKy0JKHZvaWQpIHN0cmNweShscC0+cGF0aG5hbWUsIHRhcmdldCk7CistCSh2b2lkKSBzdHJjcHkobHAtPnNyYywgc291cmNlKTsKKysJbHAtPnBhdGhuYW1lID0gc3RyZHVwKHRhcmdldCk7CisrCWxwLT5zcmMgPSBzdHJkdXAoc291cmNlKTsKKyAJaWYgKFRkZXN0KQorLQkJKHZvaWQpIHN0cmNweShscC0+dGFyZ2V0LCBUZGVzdCk7CisrCQlscC0+dGFyZ2V0ID0gc3RyZHVwKFRkZXN0KTsKKyAJZWxzZQorLQkJKmxwLT50YXJnZXQgPSBDTlVMTDsKKysJCWxwLT50YXJnZXQgPSBOVUxMOworKwlpZiAoIWxwLT5wYXRobmFtZSB8fCAhbHAtPnNyYyB8fCAhKFRkZXN0ICYmIGxwLT50YXJnZXQpKQorKwkJZmF0YWxlcnIoIkNhbm5vdCBtYWxsb2MgbWVtb3J5IGluIGxpbmtpbmZvLiIpOworIAorIAlyZXR1cm4oKHN0cnVjdCBsaW5rYnVmICopIE5VTEwpOworIH0KKy0tLSByZGlzdC02LjEuNS9zcmMvZG9jbWQuYy5saW5rcwlXZWQgRmViIDE3IDE3OjUxOjIzIDE5OTkKKysrKyByZGlzdC02LjEuNS9zcmMvZG9jbWQuYwlXZWQgRmViIDE3IDE3OjUyOjQ0IDE5OTkKK0BAIC01ODYsNyArNTg2LDcgQEAKKyAJaWYgKCFuZmxhZykgeworIAkJcmVnaXN0ZXIgc3RydWN0IGxpbmtidWYgKm5leHRsLCAqbDsKKyAKKy0JCWZvciAobCA9IGloZWFkOyBsICE9IE5VTEw7IGZyZWUoKGNoYXIgKilsKSwgbCA9IG5leHRsKSB7CisrCQlmb3IgKGwgPSBpaGVhZDsgbCAhPSBOVUxMOyBmcmVlbGlua2luZm8obCksIGwgPSBuZXh0bCkgeworIAkJCW5leHRsID0gbC0+bmV4dHA7CisgCQkJaWYgKGNvbnRpbWVkb3V0IHx8IElTX09OKG9wdHMsIERPX0lHTkxOS1MpIHx8IAorIAkJCSAgICBsLT5jb3VudCA9PSAwKQorLS0tIHJkaXN0LTYuMS41L2luY2x1ZGUvZGVmcy5oLmxpbmtzCVdlZCBGZWIgMTcgMTc6NTI6NTggMTk5OQorKysrIHJkaXN0LTYuMS41L2luY2x1ZGUvZGVmcy5oCVdlZCBGZWIgMTcgMTc6NTM6NDcgMTk5OQorQEAgLTI3Niw5ICsyNzYsOSBAQAorIAlpbm9fdAlpbnVtOworIAlkZXZfdAlkZXZudW07CisgCWludAljb3VudDsKKy0JY2hhcglwYXRobmFtZVtCVUZTSVpdOworLQljaGFyCXNyY1tCVUZTSVpdOworLQljaGFyCXRhcmdldFtCVUZTSVpdOworKwljaGFyCSpwYXRobmFtZTsKKysJY2hhcgkqc3JjOworKwljaGFyCSp0YXJnZXQ7CisgCXN0cnVjdAlsaW5rYnVmICpuZXh0cDsKKyB9OworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1saW51eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTZmZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbGludXgucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworZGlmZjogcmRpc3QtNi4xLjUvY29uZmlnL21mOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CistLS0gcmRpc3QtNi4xLjUvY29uZmlnL29zLWxpbnV4LmgubGludXgJTW9uIE5vdiAgOSAyMjo1OTo1OSAxOTk4CisrKysgcmRpc3QtNi4xLjUvY29uZmlnL29zLWxpbnV4LmgJVGh1IE5vdiAxMiAxNDo1MDozNSAxOTk4CitAQCAtNTgsNyArNTgsNyBAQAorIC8qCisgICogU2VsZWN0IHRoZSB0eXBlIG9mIGV4ZWN1dGFibGUgZmlsZSBmb3JtYXQuCisgICovCistI2RlZmluZSBFWEVfVFlQRQlFWEVfQU9VVAorKyNkZWZpbmUgRVhFX1RZUEUJRVhFX0VMRgorIAorIC8qCisgICogU2VsZWN0IHRoZSB0eXBlIG9mIHN0YXRmcygpIHN5c3RlbSBjYWxsIChpZiBhbnkpLgorLS0tIHJkaXN0LTYuMS41L21mL01ha2VmaWxlLnZhci5saW51eAlUdWUgTm92IDEwIDAwOjAyOjExIDE5OTgKKysrKyByZGlzdC02LjEuNS9tZi9NYWtlZmlsZS52YXIJVGh1IE5vdiAxMiAxNDo1MDozNSAxOTk4CitAQCAtNjcsNyArNjcsNyBAQAorICMKKyAjIE5hbWUgb2YgWUFDQy4KKyAjCistI1lBQ0MgCQk9IGJpc29uIC15CisrWUFDQyAJCT0gYmlzb24gLXkKKyAKKyBPUFQJCT0gLWcKKyBSTQkJPSBybQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzgyZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorQWRkIExERkxBR1MgdmFyaWFibGUgdG8gTWFrZWZpbGUgc28gdGhhdCBleHRyYSBsaW5rZXIgZmxhZ3MgY2FuIGJlIHNlbnQgdmlhIHRoaXMgdmFyaWFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm8gdXBzdHJlYW1dCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5yZWFsIGIvc3JjL01ha2VmaWxlLnJlYWwKK2luZGV4IDAyMTc5ZTQuLjkwNzA5NzQgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUucmVhbAorKysrIGIvc3JjL01ha2VmaWxlLnJlYWwKK0BAIC0zNiwxMCArMzYsMTAgQEAgYWxsOiBzcmMKKyBzcmM6ICQoQ0xJRU5UX0JJTikgJChTRVJWRVJfQklOKQorIAorICQoU0VSVkVSX0JJTik6ICQoU0VSVkVST0JKUykgJChDT01NT05PQkpTKSAkKE1JU1NJTkdPQkpTKQorLQkkKENDKSAtbyAkQCAkKFNFUlZFUk9CSlMpICQoQ09NTU9OT0JKUykgJChNSVNTSU5HT0JKUykgJChMSUJTKQorKwkkKENDKSAtbyAkQCAkKFNFUlZFUk9CSlMpICQoQ09NTU9OT0JKUykgJChNSVNTSU5HT0JKUykgJChMSUJTKSAkKExERkxBR1MpCisgCisgJChDTElFTlRfQklOKTogJChDTElFTlRPQkpTKSAkKENPTU1PTk9CSlMpICQoTUlTU0lOR09CSlMpCistCSQoQ0MpIC1vICRAICQoQ0xJRU5UT0JKUykgJChDT01NT05PQkpTKSAkKE1JU1NJTkdPQkpTKSAkKExJQlMpCisrCSQoQ0MpIC1vICRAICQoQ0xJRU5UT0JKUykgJChDT01NT05PQkpTKSAkKE1JU1NJTkdPQkpTKSAkKExJQlMpICQoTERGTEFHUykKKyAKKyAkKENMSUVOVE9CSlMpICQoU0VSVkVST0JKUyk6ICQoSEZJTEVTKSB5LnRhYi5oCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1tYXhhcmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbWF4YXJncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODE2Mzk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbWF4YXJncy5wYXRjaApAQCAtMCwwICsxLDE2IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206cmRpc3QKK2h0dHA6Ly92YXVsdC5jZW50b3Mub3JnLzUuOC9vcy9TUlBNUy9yZGlzdC02LjEuNS00NC5zcmMucnBtCisKKy0tLSByZGlzdC02LjEuNS9zcmMvc2V0YXJncy5jLm1heGFyZ3MJMTk5OC0xMS0xMCAwNToxNTo1Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyByZGlzdC02LjEuNS9zcmMvc2V0YXJncy5jCTIwMDMtMDktMDQgMTQ6Mzk6MDMuMDAwMDAwMDAwICswMjAwCitAQCAtNTgsNyArNTgsNyBAQAorICAqIFNldCBwcm9jZXNzIGFyZ3VtZW50IGZ1bmN0aW9ucworICAqLworIAorLSNkZWZpbmUgTUFYVVNFUkVOVklST04gCQk0MAorKyNkZWZpbmUgTUFYVVNFUkVOVklST04gCQkxMDI0CisgY2hhciAJCQkgICAgICAqKkFyZ3YgPSBOVUxMOworIGNoYXIgCQkJICAgICAgICpMYXN0QXJndiA9IE5VTEw7CisgY2hhciAJCQkgICAgICAgKlVzZXJFbnZpcm9uW01BWFVTRVJFTlZJUk9OKzFdOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtbWtzdGVtcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LW1rc3RlbXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ5ZTNlNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LW1rc3RlbXAucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L3NyYy9zZXJ2ZXIuYy5ta3N0ZW1wCTIwMDQtMDUtMjUgMTQ6Mjk6MzcuMjc5MzEyNzUyICswMjAwCisrKysgcmRpc3QtNi4xLjUvc3JjL3NlcnZlci5jCTIwMDQtMDUtMjUgMTQ6MzE6MjcuMDUwNzQ0MzQwICswMjAwCitAQCAtMTQ3OSwxMSArMTQ3OSwxOCBAQAorIAkJCSpmaWxlID0gJy8nOworIAkJfQorIAkJZmQgPSBta3N0ZW1wKG5ldyk7CistCQlpZiAoZmQgPCAwKSB7CisrCQkvKiAKKysJCSAqIERvbid0IGNvbnNpZGVyIGl0IGEgZmF0YWwgZXJyb3IgaWYgbWtzdGVtcCgpIGZhaWxzCisrCQkgKiBiZWNhdXNlIHBhcmVudCBkaXJlY3RvcnkgZGlkbid0IGV4aXN0LiAoTWlzc2luZyAKKysJCSAqIHBhcmVudHMgYXJlIGNyZWF0ZWQgbGF0ZXIgKGluIHJlY3ZmaWxlKCkpCisrCQkgKi8KKysJCWlmICgoZmQgPCAwKSAmJiAoZXJybm8gIT0gRU5PRU5UKSkgeworIAkJCWVycm9yKCJDYW5ub3Qgc2V0IGZpbGUgbmFtZS4iKTsKKyAJCQlyZXR1cm47CisrCQl9IGVsc2UgaWYgKGZkID49IDApIHsKKysJCQljbG9zZShmZCk7CisrCQkJdW5saW5rKG5ldyk7IC8qIE9yIHN5bWxpbmsoKSB3aWxsIGZhaWwgKi8KKyAJCX0KKy0JCWNsb3NlKGZkKTsKKyAJfQorIAorIAkvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtb2xkcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LW9sZHBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkzYjE4MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LW9sZHBhdGgucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L2NvbmZpZy9jb25maWcuaC5vbGRwYXRoCVR1ZSBOb3YgMTAgMDQ6NTk6NDggMTk5OAorKysrIHJkaXN0LTYuMS41L2NvbmZpZy9jb25maWcuaAlUaHUgSmFuIDMxIDE3OjMzOjIxIDIwMDIKK0BAIC0zOSw3ICszOSw3IEBACisgICogZG9uJ3QgaGF2ZSB0aGUgb2xkIHJkaXN0LCB0aGVuIHVuY29tbWVudCB0aGUgIiN1bmRlZiIgbGluZS4KKyAgKi8KKyAjaWZuZGVmIF9QQVRIX09MRFJESVNUCistI2RlZmluZSBfUEFUSF9PTERSRElTVAkiL3Vzci91Y2Ivb2xkcmRpc3QiCS8qIEVuYWJsZSBjb21wYXQgKi8KKysjZGVmaW5lIF9QQVRIX09MRFJESVNUCSIvdXNyL2Jpbi9vbGRyZGlzdCIJLyogRW5hYmxlIGNvbXBhdCAqLworICNlbmRpZgorIC8qI3VuZGVmICBfUEFUSF9PTERSRElTVCovCQkJCS8qIERpc2FibGUgY29tcGF0ICovCisgCistLS0gcmRpc3QtNi4xLjUvZG9jL3JkaXN0Lm1hbi5vbGRwYXRoCVR1ZSBOb3YgMTAgMDY6Mzg6NTMgMTk5OAorKysrIHJkaXN0LTYuMS41L2RvYy9yZGlzdC5tYW4JVGh1IEphbiAzMSAxNzozNjo1NyAyMDAyCitAQCAtMTcwLDEwICsxNzAsOSBAQAorIFRoaXMgb3B0aW9uIHdpbGwgb25seSB3b3JrIGlmIAorIC5JIHJkaXN0Cisgd2FzIGNvbXBpbGVkIHdpdGggdGhlIGxvY2F0aW9uIG9mIHRoZSBvbGQgcmRpc3QKKy0odXN1YWxseSBlaXRoZXIKKy0uSSAvdXNyL3VjYi9vbGRyZGlzdAorLW9yCistLkkgL3Vzci9vbGQvcmRpc3QpCisrKHRoZSBwYXRoCisrLkkgL3Vzci9iaW4vb2xkcmRpc3QKKytpcyB1c2VkIG9uIFJlZCBIYXQgbGludXgpCisgYW5kIHRoYXQgcHJvZ3JhbSBpcyBhdmFpbGFibGUgYXQgcnVuIHRpbWUuCisgLlBQCisgLkkgUmRpc3QKK0BAIC01NTgsNyArNTU3LDcgQEAKKyBzaG91bGQgYmUgb2YgZm9ybQorIC5zcAorIC5SUworLVxmSWZhY2lsaXR5XGZCPVxmSXR5cGVzXGZCOlxmSWZhY2lsaXR5XGZCPVxmSXR5cGVzLi4uCisrXGZJZmFjaWxpdHlcZkI9XGZJdHlwZXNcZkI6XGZJZmFjaWxpdHlcZkI9XGZJdHlwZXMuLi5cZlIKKyAuUkUKKyAuc3AKKyBUaGUgdmFsaWQgZmFjaWxpdHkgbmFtZXMgYXJlOgorLS0tIHJkaXN0LTYuMS41L1JFQURNRS5vbGRwYXRoCUZyaSBKdWwgMTkgMTk6MjQ6MDkgMTk5NgorKysrIHJkaXN0LTYuMS41L1JFQURNRQlUaHUgSmFuIDMxIDE3OjMzOjIxIDIwMDIKK0BAIC02NSwxMiArNjUsMTIgQEAKKyAKKyBUaGUgd2F5IHRoZSBvbGQgcmRpc3Qgc3RhcnRlZCBhIHNlcnZlciByZGlzdCBpcyB0byBydW4gInJkaXN0CisgLVNlcnZlciIuICBJZiB0aGUgbmV3IHJkaXN0IGlzIHJ1biB3aXRoIHRoZSAiLVNlcnZlciIgb3B0aW9uLCB0aGVuIGl0Cistd2lsbCBleGVjIGEgY29weSBvZiB0aGUgb2xkIHJkaXN0ICh1c3VhbGx5IC91c3Ivb2xkL3JkaXN0IG9yCistL3Vzci91Y2Ivb2xkcmRpc3QpLiAgSW4gdGhpcyB3YXksIHlvdSBnZXQgY29tcGF0aWJpbGl0eSB3aXRoIGhvc3RzCisrd2lsbCBleGVjIGEgY29weSBvZiB0aGUgb2xkIHJkaXN0ICh0aGUgcGF0aCAvdXNyL2Jpbi9vbGRyZGlzdCBpbiBSZWQKKytIYXQgbGludXgpLiAgSW4gdGhpcyB3YXksIHlvdSBnZXQgY29tcGF0aWJpbGl0eSB3aXRoIGhvc3RzCisgcnVubmluZyB0aGUgb2xkIHJkaXN0IGF0dGVtcHRpbmcgdG8gcmRpc3QgdG8gYSBtYWNoaW5lIHJ1bm5pbmcgbmV3CisgcmRpc3QuICBJZiB5b3VyIGhvc3QgcnVubmluZyBuZXcgcmRpc3Qgd2FudHMgdG8gcmRpc3QgdG8gYSBob3N0CisgcnVubmluZyB0aGUgb2xkIHJkaXN0LCB0aGVuIGl0IG11c3QgcnVuIHRoZSBvbGQgcmRpc3QgcHJvZ3JhbQorLSgvdXNyL29sZC9yZGlzdCBvciAvdXNyL3VjYi9vbGRyZGlzdCkuCisrKC91c3IvYmluL29sZHJkaXN0IGluIFJlZCBIYXQgbGludXgpLgorIAorIFRoZSBkZWZpbml0aW9uIF9QQVRIX09MRFJESVNUIGluICJjb25maWcvY29uZmlnLmgiIGNvbnRyb2xzIHRoZQorIGxvY2F0aW9uIG9mIHRoZSBvbGQgcmRpc3QuICBJZiB0aGlzIGlzIG5vdCBkZWZpbmVkLCBvciB0aGUgZGVmaW5lZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtc3NoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtc3NoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzOTgyY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1zc2gucGF0Y2gKQEAgLTAsMCArMSwxNCBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L3NyYy9yc2hyY21kLmMuZGlzdAlUdWUgRGVjIDEyIDA4OjIwOjU2IDE5OTUKKysrKyByZGlzdC02LjEuNS9zcmMvcnNocmNtZC5jCVdlZCBEZWMgMTEgMDc6MTQ6MTMgMTk5NgorQEAgLTY0LDUgKzY0LDUgQEAKKyAJCSAgIHNwWzBdLiAqLworIAkJKHZvaWQpIGNsb3NlKHNwWzBdKTsKKy0JCWlmIChkdXAyKHNwWzFdLCAwKSA8IDAgfHwgZHVwMigwLDEpIDwgMCB8fCBkdXAyKDAsIDIpIDwgMCkgeworKwkJaWYgKGR1cDIoc3BbMV0sIDApIDwgMCB8fCBkdXAyKDAsMSkgPCAwKSB7CisgCQkJZXJyb3IoImR1cDIgZmFpbGVkOiAlcy4iLCBTWVNFUlIpOworIAkJCV9leGl0KDI1NSk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1zdGF0NjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1zdGF0NjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIwOTUzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LXN0YXQ2NC5wYXRjaApAQCAtMCwwICsxLDg1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvc3JjL2ZpbGVzeXMuYy5zdGF0NjQJMjAwNS0wNS0wNCAxNDoxMTowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyByZGlzdC02LjEuNS9zcmMvZmlsZXN5cy5jCTIwMDUtMDUtMDQgMTQ6MTE6MTAuMDAwMDAwMDAwICswMjAwCitAQCAtNDMwLDggKzQzMCw4IEBACisgICovCisgaW50IGdldGZpbGVzeXNpbmZvKGZpbGUsIGZyZWVzcGFjZSwgZnJlZWZpbGVzKQorIAljaGFyICpmaWxlOworLQlsb25nICpmcmVlc3BhY2U7CistCWxvbmcgKmZyZWVmaWxlczsKKysJZnNibGtjbnRfdCAqZnJlZXNwYWNlOworKwlmc2ZpbGNudF90ICpmcmVlZmlsZXM7CisgeworICNpZglkZWZpbmVkKFNUQVRGU19UWVBFKQorIAlzdGF0aWMgc3RhdGZzX3Qgc3RhdGZzYnVmOworLS0tIHJkaXN0LTYuMS41L3NyYy9zZXJ2ZXIuYy5zdGF0NjQJMjAwNS0wNS0wNCAxNDoxMToyMy4wMDAwMDAwMDAgKzAyMDAKKysrKyByZGlzdC02LjEuNS9zcmMvc2VydmVyLmMJMjAwNS0wNS0wNCAxNDoyMDozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC02Miw4ICs2Miw4IEBACisgaW50CWNhdG5hbWUgPSAwOwkJLyogY2F0IG5hbWUgdG8gdGFyZ2V0IG5hbWUgKi8KKyBjaGFyCSpzcHRhcmdldFszMl07CQkvKiBzdGFjayBvZiBzYXZlZCBwdGFyZ2V0J3MgZm9yIGRpcmVjdG9yaWVzICovCisgY2hhciAgICpmcm9taG9zdCA9IE5VTEw7CS8qIENsaWVudCBob3N0bmFtZSAqLworLXN0YXRpYyBsb25nIG1pbl9mcmVlc3BhY2UgPSAwOwkvKiBNaW5pbWl1bSBmcmVlIHNwYWNlIG9uIGEgZmlsZXN5c3RlbSAqLworLXN0YXRpYyBsb25nIG1pbl9mcmVlZmlsZXMgPSAwOwkvKiBNaW5pbWl1bSBmcmVlICMgZmlsZXMgb24gYSBmaWxlc3lzdGVtICovCisrc3RhdGljIGZzYmxrY250X3QgbWluX2ZyZWVzcGFjZSA9IDA7IC8qIE1pbmltaXVtIGZyZWUgc3BhY2Ugb24gYSBmaWxlc3lzdGVtICovCisrc3RhdGljIGZzZmlsY250X3QgbWluX2ZyZWVmaWxlcyA9IDA7IC8qIE1pbmltaXVtIGZyZWUgIyBmaWxlcyBvbiBhIGZpbGVzeXN0ZW0gKi8KKyBpbnQJb3VtYXNrOwkJCS8qIE9sZCB1bWFzayAqLworIAorIC8qCitAQCAtMTMyNiw3ICsxMzI2LDcgQEAKKyAJCQlmYXRhbGVycigiRXhwZWN0ZWQgZGlnaXQsIGdvdCAnJXMnLiIsIGNwKTsKKyAJCQlyZXR1cm47CisgCQl9CistCQltaW5fZnJlZXNwYWNlID0gKHVuc2lnbmVkIGxvbmcpIGF0b2koY3ApOworKwkJbWluX2ZyZWVzcGFjZSA9IChmc2Jsa2NudF90KSBhdG9sbChjcCk7CisgCQlicmVhazsKKyAKKyAJY2FzZSBTQ19GUkVFRklMRVM6IAkvKiBNaW5pbWl1bSBmcmVlIGZpbGVzICovCitAQCAtMTMzNCw3ICsxMzM0LDcgQEAKKyAJCQlmYXRhbGVycigiRXhwZWN0ZWQgZGlnaXQsIGdvdCAnJXMnLiIsIGNwKTsKKyAJCQlyZXR1cm47CisgCQl9CistCQltaW5fZnJlZWZpbGVzID0gKHVuc2lnbmVkIGxvbmcpIGF0b2koY3ApOworKwkJbWluX2ZyZWVmaWxlcyA9IChmc2ZpbGNudF90KSBhdG9sbChjcCk7CisgCQlicmVhazsKKyAKKyAJY2FzZSBTQ19MT0dHSU5HOgkvKiBMb2dnaW5nIG9wdGlvbnMgKi8KK0BAIC0xMzY0LDcgKzEzNjQsOCBAQAorIAl0aW1lX3QgbXRpbWUsIGF0aW1lOworIAljaGFyICpvd25lciwgKmdyb3VwLCAqZmlsZTsKKyAJY2hhciBuZXdbTUFYUEFUSExFTl07CistCWxvbmcgZnJlZXNwYWNlID0gLTEsIGZyZWVmaWxlcyA9IC0xOworKwlmc2ZpbGNudF90IGZyZWVmaWxlcyA9IC0xOworKwlmc2Jsa2NudF90IGZyZWVzcGFjZSA9IC0xOworIAljaGFyICpjcCA9IGNtZDsKKyAKKyAJLyoKK0BAIC0xNDk5LDcgKzE1MDAsNyBAQAorIAkgKi8KKyAJaWYgKG1pbl9mcmVlc3BhY2UgfHwgbWluX2ZyZWVmaWxlcykgeworIAkJLyogQ29udmVydCBmaWxlIHNpemUgdG8ga2lsb2J5dGVzICovCistCQlsb25nIGZzaXplID0gKGxvbmcpIChzaXplIC8gMTAyNCk7CisrCQlmc2Jsa2NudF90IGZzaXplID0gKGZzYmxrY250X3QpIChzaXplIC8gMTAyNCk7CisgCisgCQlpZiAoZ2V0ZmlsZXN5c2luZm8odGFyZ2V0LCAmZnJlZXNwYWNlLCAmZnJlZWZpbGVzKSAhPSAwKQorIAkJCXJldHVybjsKK0BAIC0xNTExLDE0ICsxNTEyLDE0IEBACisgCQlpZiAobWluX2ZyZWVzcGFjZSAmJiAoZnJlZXNwYWNlID49IDApICYmIAorIAkJICAgIChmcmVlc3BhY2UgLSBmc2l6ZSA8IG1pbl9mcmVlc3BhY2UpKSB7CisgCQkJZXJyb3IoCistCQkgICAgICIlczogTm90IGVub3VnaCBmcmVlIHNwYWNlIG9uIGZpbGVzeXN0ZW06IG1pbiAlZCBmcmVlICVkIiwKKysJCSAgICAgIiVzOiBOb3QgZW5vdWdoIGZyZWUgc3BhY2Ugb24gZmlsZXN5c3RlbTogbWluICVsbGQgZnJlZSAlbGxkIiwKKyAJCQkgICAgICB0YXJnZXQsIG1pbl9mcmVlc3BhY2UsIGZyZWVzcGFjZSk7CisgCQkJcmV0dXJuOworIAkJfQorIAkJaWYgKG1pbl9mcmVlZmlsZXMgJiYgKGZyZWVmaWxlcyA+PSAwKSAmJgorIAkJICAgIChmcmVlZmlsZXMgLSAxIDwgbWluX2ZyZWVmaWxlcykpIHsKKyAJCQllcnJvcigKKy0JCSAgICAgIiVzOiBOb3QgZW5vdWdoIGZyZWUgZmlsZXMgb24gZmlsZXN5c3RlbTogbWluICVkIGZyZWUgJWQiLAorKwkJICAgICAiJXM6IE5vdCBlbm91Z2ggZnJlZSBmaWxlcyBvbiBmaWxlc3lzdGVtOiBtaW4gJWxsZCBmcmVlICVsbGQiLAorIAkJCSAgICAgIHRhcmdldCwgbWluX2ZyZWVmaWxlcywgZnJlZWZpbGVzKTsKKyAJCQlyZXR1cm47CisgCQl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdC02LjEuNS9yZGlzdC02LjEuNS1zdnI0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtc3ZyNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjczYjcxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtc3ZyNC5wYXRjaApAQCAtMCwwICsxLDE1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWzFdCisKK1sxXSBOb3QgdGhlIGF1dGhvciwgdGhlIHBhdGNoIGlzIGZyb206CitodHRwOi8vdmF1bHQuY2VudG9zLm9yZy81Ljgvb3MvU1JQTVMvcmRpc3QtNi4xLjUtNDQuc3JjLnJwbQorCistLS0gcmRpc3QtNi4xLjUvYnVpbGQvb3MtdHlwZS5zdnI0CTIwMDMtMTItMTcgMTI6NDQ6MTguMDAwMDAwMDAwICswMTAwCisrKysgcmRpc3QtNi4xLjUvYnVpbGQvb3MtdHlwZQkyMDAzLTEyLTE3IDEyOjQ0OjI5LjAwMDAwMDAwMCArMDEwMAorQEAgLTgzLDcgKzgzLDYgQEAKKyBpZiBbIC16ICIke09TfSIgLWEgISAteiAiJHt1bmFtZX0iIF07IHRoZW4KKyAJY2FzZSAiYCR1bmFtZSAtYSB8IHRyICdbQS1aXScgJ1thLXpdJ2AiIGluCisgCQkgICAgb3NmMSopCU9TPWJyZWFrOzsKKy0JCSoiNC4wIiopCU9TPXN2cjQ7OwkjIFRoZXJlIGhhcyB0byBiZSBhIGJldHRlciB3YXkKKyAJCSoiIGRjb3N4ICIqKQlPUz1kY29zeDs7CisgCQkqImN4L3V4IiopCU9TPWN4dXg7OworIAkJKiJocC11eCIqKQkjIEhQLVVYIDkueApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3QtNi4xLjUvcmRpc3QtNi4xLjUtdmFyYXJncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LXZhcmFyZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlZGJjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0LTYuMS41L3JkaXN0LTYuMS41LXZhcmFyZ3MucGF0Y2gKQEAgLTAsMCArMSwxNiBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsxXQorCitbMV0gTm90IHRoZSBhdXRob3IsIHRoZSBwYXRjaCBpcyBmcm9tOgoraHR0cDovL3ZhdWx0LmNlbnRvcy5vcmcvNS44L29zL1NSUE1TL3JkaXN0LTYuMS41LTQ0LnNyYy5ycG0KKworLS0tIHJkaXN0LTYuMS41L2NvbmZpZy9vcy1saW51eC5oLnZhcmFyZ3MJMjAwMy0wNi0xNyAxNzo1MjozMy4wMDAwMDAwMDAgKzAyMDAKKysrKyByZGlzdC02LjEuNS9jb25maWcvb3MtbGludXguaAkyMDAzLTA2LTE3IDE3OjUzOjA3LjAwMDAwMDAwMCArMDIwMAorQEAgLTY4LDcgKzY4LDcgQEAKKyAvKgorICAqIFR5cGUgb2YgYXJnIGZ1bmN0aW9ucyB3ZSBoYXZlLgorICAqLworLSNkZWZpbmUgQVJHX1RZUEUJQVJHX1ZBUkFSR1MKKysjZGVmaW5lIEFSR19UWVBFCUFSR19TVERBUkcKKyAKKyAvKgorICAqIERvIHdlIGhhdmUgc2VsZWN0KCk/CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdF82LjEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0XzYuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYTFmMDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdF82LjEuNS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIlJlbW90ZSBmaWxlIGRpc3RyaWJ1dGlvbiBjbGllbnQgYW5kIHNlcnZlciIKK0RFU0NSSVBUSU9OID0gIlwKK1JkaXN0IGlzIGEgcHJvZ3JhbSB0byBtYWludGFpbiBpZGVudGljYWwgY29waWVzIG9mIGZpbGVzIG92ZXIgbXVsdGlwbGUgXAoraG9zdHMuIEl0IHByZXNlcnZlcyB0aGUgb3duZXIsIGdyb3VwLCBtb2RlLCBhbmQgbXRpbWUgb2YgZmlsZXMgaWYgXAorcG9zc2libGUgYW5kIGNhbiB1cGRhdGUgcHJvZ3JhbXMgdGhhdCBhcmUgZXhlY3V0aW5nLiBcCisiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0zZjQ3ZWM5ZjY0YjExYzgxOTJlZTA1YTY2YjVjMjc1NSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1hZ25pY29tcC5jb20vZG93bmxvYWQvJHtCUE59LyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NDY3Nzk3MDBhZjcwYWE1ZjkxMDNlMDg3ODJjZGNhYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYmIwZDBmNTkwNGVhZGM5ZTdmZTNkNjBjMTUzODlkNjg5N2ZjZjg4NDIxMTA3MGUyODlhNmM3MTBmZjM3Zjk2IgorCitTUkNfVVJJICs9ICJmaWxlOi8vcmRpc3QtNi4xLjUtbGludXgucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LWxpbmtzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1vbGRwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1oYXJkbGluay5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtYmlzb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LXZhcmFyZ3MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LW1heGFyZ3MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LWxmcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtY2xlYW51cC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtc3ZyNC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtc3NoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1ta3N0ZW1wLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZGlzdC02LjEuNS1zdGF0NjQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LWZpeC1tc2dzbmRub3RpZnktbG9vcC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmRpc3QtNi4xLjUtYmItYnVpbGQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LW1ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoIFwKKyIKKworREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitFWFRSQV9PRU1BS0UgPSAiQklOX0dST1VQPXJvb3QgTUFOX0dST1VQPXJvb3QgUkRJU1RfTU9ERT03NTUgUkRJU1REX01PREU9NzU1IE1BTl9NT0RFPTY0NCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JlbGF5ZC9yZWxheWQvMDAwMS1ydG5sX2ZsdXNoLUVycm9yLW9uLWZhaWxlZC13cml0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JlbGF5ZC9yZWxheWQvMDAwMS1ydG5sX2ZsdXNoLUVycm9yLW9uLWZhaWxlZC13cml0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWFmMzA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVsYXlkL3JlbGF5ZC8wMDAxLXJ0bmxfZmx1c2gtRXJyb3Itb24tZmFpbGVkLXdyaXRlLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMmZhMzI2YjI2ZGM0Nzk5NDIzNjdkYzQyODNlMmY4NzM3MjQwMzk4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE3IEp1biAyMDE3IDA5OjMyOjA0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHJ0bmxfZmx1c2g6IEVycm9yIG9uIGZhaWxlZCB3cml0ZSgpCisKK0ZpeGVzCityb3V0ZS5jOjQ1OjI6IGVycm9yOiBpZ25vcmluZyByZXR1cm4gdmFsdWUgb2YgJ3dyaXRlJywgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUgd2Fybl91bnVzZWRfcmVzdWx0IFstV2Vycm9yPXVudXNlZC1yZXN1bHRdCit8ICAgd3JpdGUoZmQsICItMSIsIDIpOworfCAgIF5+fn5+fn5+fn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgcm91dGUuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcm91dGUuYyBiL3JvdXRlLmMKK2luZGV4IGM1NTJkMWYuLmZjNWMzMWUgMTAwNjQ0CistLS0gYS9yb3V0ZS5jCisrKysgYi9yb3V0ZS5jCitAQCAtNDIsNyArNDIsOCBAQCBzdGF0aWMgdm9pZCBydG5sX2ZsdXNoKHZvaWQpCisgCWlmIChmZCA8IDApCisgCQlyZXR1cm47CisgCistCXdyaXRlKGZkLCAiLTEiLCAyKTsKKysJaWYgKHdyaXRlKGZkLCAiLTEiLCAyKSA8IDAgKQorKwkJcGVycm9yKCJ3cml0ZSIpOworIAljbG9zZShmZCk7CisgfQorIAorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVsYXlkL3JlbGF5ZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkX2dpdC5iYgppbmRleCA1MDI5N2YzLi45OGRjNDFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkX2dpdC5iYgpAQCAtNSw5ICs1LDExIEBACiAKIERFUEVORFMgPSAibGlidWJveCIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9uYmQubmFtZS9yZWxheWQuZ2l0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQub3BlbndydC5vcmcvcHJvamVjdC9yZWxheWQuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcnRubF9mbHVzaC1FcnJvci1vbi1mYWlsZWQtd3JpdGUucGF0Y2ggXAorIgogCi1TUkNSRVYgPSAiMjk3MGZmNjBiYWM2YjcwZWNiNjgyNzc5ZDVjNzc2ZGM1NTlkYzBiOSIKK1NSQ1JFViA9ICJhZDBiMjVhZDc0MzQ1ZDM2N2M2MjMxMWUxNGIyNzlmNWNjYjhlZjEzIgogUFYgPSAiMC4wLjErZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS8wMC1maXgtdHlwb3MtaW4tbWFuLXBhZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAtZml4LXR5cG9zLWluLW1hbi1wYWdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0YmMzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS8wMC1maXgtdHlwb3MtaW4tbWFuLXBhZ2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLUZyb20gMTU3MzYzODIxMmE5NzMzYTQ0OTM5YTRkMzhhMjI2ZjM4ZGNhMzZmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hlbGUgQmFsZGVzc2FyaSA8bWljaGVsZUBhY2tzeW4ub3JnPgotRGF0ZTogVHVlLCA5IEp1bCAyMDEzIDIzOjIzOjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0eXBvcyBpbiBtYW4tcGFnZXMKLQotRml4IHNvbWUgdHlwb3MgaW4gdGhlIG1hbi1wYWdlcy4KLQotU2lnbmVkLW9mZi1ieTogTWljaGVsZSBCYWxkZXNzYXJpIDxtaWNoZWxlQGFja3N5bi5vcmc+Ci1SZXZpZXdlZC1ieTogU2ltbyBTb3JjZSA8aWRyYUBzYW1iYS5vcmc+Ci0KLUF1dG9idWlsZC1Vc2VyKG1hc3Rlcik6IFNpbW8gU29yY2UgPGlkcmFAc2FtYmEub3JnPgotQXV0b2J1aWxkLURhdGUobWFzdGVyKTogV2VkIEp1bCAxMCAxNjo0NTowNyBDRVNUIDIwMTMgb24gc24tZGV2ZWwtMTA0Ci0tLS0KLSBkb2NzLXhtbC9tYW5wYWdlcy9kYndyYXBfdG9vbC4xLnhtbCAgICAgICAgICAgICAgfCAyICstCi0gZG9jcy14bWwvbWFucGFnZXMvaWRtYXBfYXV0b3JpZC44LnhtbCAgICAgICAgICAgIHwgMiArLQotIGRvY3MteG1sL21hbnBhZ2VzL25ldC44LnhtbCAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBkb2NzLXhtbC9tYW5wYWdlcy9wZGJlZGl0LjgueG1sICAgICAgICAgICAgICAgICAgfCAyICstCi0gZG9jcy14bWwvbWFucGFnZXMvc2FtYmEuNy54bWwgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGRvY3MteG1sL21hbnBhZ2VzL3NtYmNsaWVudC4xLnhtbCAgICAgICAgICAgICAgICB8IDIgKy0KLSBkb2NzLXhtbC9tYW5wYWdlcy9zbWJwYXNzd2QuNS54bWwgICAgICAgICAgICAgICAgfCAyICstCi0gZG9jcy14bWwvbWFucGFnZXMvdmZzX3NtYl90cmFmZmljX2FuYWx5emVyLjgueG1sIHwgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1JbmRleDogc2FtYmEtNC4xLjExL2RvY3MteG1sL21hbnBhZ2VzL3NtYnN0YXR1cy4xLnhtbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNhbWJhLTQuMS4xMS5vcmlnL2RvY3MteG1sL21hbnBhZ2VzL3NtYnN0YXR1cy4xLnhtbAotKysrIHNhbWJhLTQuMS4xMS9kb2NzLXhtbC9tYW5wYWdlcy9zbWJzdGF0dXMuMS54bWwKLUBAIC0xMzcsNiArMTM3LDEzIEBACi0gCQk8L2xpc3RpdGVtPgotIAkJPC92YXJsaXN0ZW50cnk+Ci0gCi0rCQk8dmFybGlzdGVudHJ5PgotKwkJPHRlcm0+LW58LS1udW1lcmljPC90ZXJtPgotKwkJPGxpc3RpdGVtPjxwYXJhPmNhdXNlcyBzbWJzdGF0dXMgdG8gZGlzcGxheSBudW1lcmljIFVJRHMgYW5kIEdJRHMgaW5zdGVhZCBvZgotKwkJCQlyZXNvbHZpbmcgdGhlbSB0byBuYW1lcy48L3BhcmE+Ci0rCQk8L2xpc3RpdGVtPgotKwkJPC92YXJsaXN0ZW50cnk+Ci0rCi0gCTwvdmFyaWFibGVsaXN0PgotIDwvcmVmc2VjdDE+Ci0gCi1JbmRleDogc2FtYmEtNC4xLjExL2RvY3MteG1sL21hbnBhZ2VzL3NoYXJlc2VjLjEueG1sCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2FtYmEtNC4xLjExLm9yaWcvZG9jcy14bWwvbWFucGFnZXMvc2hhcmVzZWMuMS54bWwKLSsrKyBzYW1iYS00LjEuMTEvZG9jcy14bWwvbWFucGFnZXMvc2hhcmVzZWMuMS54bWwKLUBAIC0xMjksNiArMTI5LDEzIEBACi0gCQk8L3BhcmE+PC9saXN0aXRlbT4KLSAJCTwvdmFybGlzdGVudHJ5PgotIAotKwkJPHZhcmxpc3RlbnRyeT4KLSsJCTx0ZXJtPi1TfC0tc2V0c2RkbD1TVFJJTkc8L3Rlcm0+Ci0rCQk8bGlzdGl0ZW0+PHBhcmE+Ci0rCQlTZXQgc2VjdXJpdHkgZGVzY3JpcHRvciBieSBwcm92aWRpbmcgQUNMIGluIFNEREwgZm9ybWF0LgotKwkJPC9wYXJhPjwvbGlzdGl0ZW0+Ci0rCQk8L3Zhcmxpc3RlbnRyeT4KLSsKLSAJCSZzdGRhcmcuaGVscDsKLSAJCSZzdGRhcmcuc2VydmVyLmRlYnVnOwotIAkJJnBvcHQuY29tbW9uLnNhbWJhOwotSW5kZXg6IHNhbWJhLTQuMS4xMS9kb2NzLXhtbC9idWlsZC9EVEQvc2FtYmEuZW50aXRpZXMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzYW1iYS00LjEuMTEub3JpZy9kb2NzLXhtbC9idWlsZC9EVEQvc2FtYmEuZW50aXRpZXMKLSsrKyBzYW1iYS00LjEuMTEvZG9jcy14bWwvYnVpbGQvRFREL3NhbWJhLmVudGl0aWVzCi1AQCAtMjcwLDYgKzI3MCw0NCBAQCBmaWxlLgotICZwb3B0LmNvbW1vbi5zYW1iYTsKLSAnPgotIAotKzwhRU5USVRZIHN0ZGFyZy5zaWduaW5nICcKLSs8dmFybGlzdGVudHJ5PgotKzx0ZXJtPi1TfC0tc2lnbmluZyBvbnxvZmZ8cmVxdWlyZWQ8L3Rlcm0+Ci0rPGxpc3RpdGVtPjxwYXJhPlNldCB0aGUgY2xpZW50IHNpZ25pbmcgc3RhdGUuCi0rPC9wYXJhPjwvbGlzdGl0ZW0+Ci0rPC92YXJsaXN0ZW50cnk+Ci0rJz4KLSsKLSs8IUVOVElUWSBzdGRhcmcubWFjaGluZXBhc3MgJwotKzx2YXJsaXN0ZW50cnk+Ci0rPHRlcm0+LVB8LS1tYWNoaW5lLXBhc3M8L3Rlcm0+Ci0rPGxpc3RpdGVtPjxwYXJhPlVzZSBzdG9yZWQgbWFjaGluZSBhY2NvdW50IHBhc3N3b3JkLgotKzwvcGFyYT48L2xpc3RpdGVtPgotKzwvdmFybGlzdGVudHJ5PgotKyc+Ci0rCi0rPCFFTlRJVFkgc3RkYXJnLmVuY3J5cHQgJwotKzx2YXJsaXN0ZW50cnk+Ci0rPHRlcm0+LWV8LS1lbmNyeXB0PC90ZXJtPgotKzxsaXN0aXRlbT48cGFyYT4KLStUaGlzIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgcmVxdWlyZXMgdGhlIHJlbW90ZQotK3NlcnZlciBzdXBwb3J0IHRoZSBVTklYIGV4dGVuc2lvbnMgb3IgdGhhdCB0aGUgU01CMyBwcm90b2NvbCBoYXMgYmVlbiBzZWxlY3RlZC4KLStSZXF1ZXN0cyB0aGF0IHRoZSBjb25uZWN0aW9uIGJlIGVuY3J5cHRlZC4gTmVnb3RpYXRlcyBTTUIgZW5jcnlwdGlvbiB1c2luZyBlaXRoZXIKLStTTUIzIG9yIFBPU0lYIGV4dGVuc2lvbnMgdmlhIEdTU0FQSS4gVXNlcyB0aGUgZ2l2ZW4gY3JlZGVudGlhbHMgZm9yCi0rdGhlIGVuY3J5cHRpb24gbmVnb3RpYXRpb24gKGVpdGhlciBrZXJiZXJvcyBvciBOVExNdjEvdjIgaWYgZ2l2ZW4KLStkb21haW4vdXNlcm5hbWUvcGFzc3dvcmQgdHJpcGxlLiBGYWlscyB0aGUgY29ubmVjdGlvbiBpZiBlbmNyeXB0aW9uCi0rY2Fubm90IGJlIG5lZ290aWF0ZWQuCi0rPC9wYXJhPjwvbGlzdGl0ZW0+Ci0rPC92YXJsaXN0ZW50cnk+Ci0rJz4KLSsKLSs8IUVOVElUWSBzdGRhcmcucHdudGhhc2ggJwotKzx2YXJsaXN0ZW50cnk+Ci0rPHRlcm0+LS1wdy1udC1oYXNoPC90ZXJtPgotKzxsaXN0aXRlbT48cGFyYT5UaGUgc3VwcGxpZWQgcGFzc3dvcmQgaXMgdGhlIE5UIGhhc2guCi0rPC9wYXJhPjwvbGlzdGl0ZW0+Ci0rPC92YXJsaXN0ZW50cnk+Ci0rJz4KLSAKLSA8IUVOVElUWSBzdGRhcmcucmVzb2x2ZS5vcmRlciAnCi0gPHZhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuNi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC42LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NzRhZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiR1BMLTMuMCsgJiBMR1BMLTMuMCsgJiBHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0xHUEwtMy4wO21kNT1iZmNjZmU5NTIyNjlmZmYyYjQwN2RkMTFmMmYzMDgzYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiAiCi0KLVNBTUJBX01JUlJPUiA9ICJodHRwOi8vc2FtYmEub3JnL3NhbWJhL2Z0cCIKLU1JUlJPUlMgKz0gIlwKLSR7U0FNQkFfTUlSUk9SfSAgICBodHRwOi8vbWlycm9yLmludGVybm9kZS5vbi5uZXQvcHViL3NhbWJhIFxuIFwKLSR7U0FNQkFfTUlSUk9SfSAgICBodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2Z0cC5zYW1iYS5vcmcgXG4gXAotIgotCi1TUkNfVVJJID0gIiR7U0FNQkFfTUlSUk9SfS9zdGFibGUvc2FtYmEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwLWZpeC10eXBvcy1pbi1tYW4tcGFnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMTYtZG8tbm90LWNoZWNrLXhzbHRwcm9jLW1hbnBhZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzIwLWRvLW5vdC1pbXBvcnQtdGFyZ2V0LW1vZHVsZS13aGlsZS1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzIxLWFkZC1jb25maWctb3B0aW9uLXdpdGhvdXQtdmFsZ3JpbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWNrYWdpbmctQXZvaWQtdGltZW91dC1mb3Itbm1iZC1pZi1zdGFydGVkLW9mZmxpbmUtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtYXZvaWQtdXNpbmctY29sb24taW4tdGhlLWNoZWNraW5nLW1zZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZXRkYl9kZWZpbmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dsaWJjX29ubHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjAzX3NhbWJhIFwKLSAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL3NhbWJhLTQuMi43LXBhbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQ2MWRlZjgxOTBmZmM2NTFmZDg0NThiMjRjYTJhNjIyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyN2FmY2MxNmU0NDQ3MTg5ODVlMzk1MmRlOTJkMzRlN2I3NzZiOWNhMDIzODE3OWQ4NjZkYTE4YTY0NDFjMzUiCi0KLWluaGVyaXQgc3lzdGVtZCB3YWYtc2FtYmEgY3Bhbi1iYXNlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQKLSMgcmVtb3ZlIGRlZmF1bHQgYWRkZWQgUkRFUEVORFMgb24gcGVybAotUkRFUEVORFNfJHtQTn1fcmVtb3ZlID0gInBlcmwiCi0KLURFUEVORFMgKz0gInJlYWRsaW5lIHZpcnR1YWwvbGliaWNvbnYgemxpYiBwb3B0IGxpYnRhbGxvYyBsaWJ0ZGIgbGlidGV2ZW50IGxpYmxkYiBrcmI1IGxpYmJzZCBsaWJhaW8gbGlicGFtIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHRpcnBjIgotCi1MU0IgPSAiIgotTFNCX2xpbnV4c3RkYmFzZSA9ICJsc2IiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJzYW1iYSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDIwIDMgNSAuIHN0b3AgMjAgMCAxIDYgLiIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1iYXNlIHdpbmJpbmQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmFzZSA9ICJubWIuc2VydmljZSBzbWIuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV93aW5iaW5kID0gIndpbmJpbmQuc2VydmljZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgemVyb2NvbmYnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGFjbCBjdXBzIGxkYXAgXAotIgotCi1SREVQRU5EU18ke1BOfS1iYXNlICs9ICIke0xTQn0iCi1SREVQRU5EU18ke1BOfS1jdGRiLXRlc3RzICs9ICJiYXNoIHV0aWwtbGludXgtZ2V0b3B0IgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbC1zdXBwb3J0LC0td2l0aG91dC1hY2wtc3VwcG9ydCxhY2wiCi1QQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgotUEFDS0FHRUNPTkZJR1tjdXBzXSA9ICItLWVuYWJsZS1jdXBzLC0tZGlzYWJsZS1jdXBzLGN1cHMiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICIsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW2RtYXBpXSA9ICItLXdpdGgtZG1hcGksLS13aXRob3V0LWRtYXBpLGRtYXBpIgotUEFDS0FHRUNPTkZJR1t6ZXJvY29uZl0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCwiCi1QQUNLQUdFQ09ORklHW2x0dG5nXSA9ICItLXdpdGgtbHR0bmcsIC0td2l0aG91dC1sdHRuZyxsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0td2l0aC1saWJhcmNoaXZlLCAtLXdpdGhvdXQtbGliYXJjaGl2ZSwgbGliYXJjaGl2ZSIKLQotCi1TQU1CQTRfSURNQVBfTU9EVUxFUz0iaWRtYXBfYWQsaWRtYXBfcmlkLGlkbWFwX2FkZXgsaWRtYXBfaGFzaCxpZG1hcF90ZGIyIgotU0FNQkE0X1BEQl9NT0RVTEVTPSJwZGJfdGRic2FtLCR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAncGRiX2xkYXAsJywgJycsIGQpfXBkYl9hZHMscGRiX3NtYnBhc3N3ZCxwZGJfd2JjX3NhbSxwZGJfc2FtYmE0IgotU0FNQkE0X0FVVEhfTU9EVUxFUz0iYXV0aF91bml4LGF1dGhfd2JjLGF1dGhfc2VydmVyLGF1dGhfbmV0bG9nb25kLGF1dGhfc2NyaXB0LGF1dGhfc2FtYmE0IgotU0FNQkE0X01PRFVMRVM9IiR7U0FNQkE0X0lETUFQX01PRFVMRVN9LCR7U0FNQkE0X1BEQl9NT0RVTEVTfSwke1NBTUJBNF9BVVRIX01PRFVMRVN9IgotCi1TQU1CQTRfTElCUz0iaGVpbWRhbCwhemxpYiwhcG9wdCwhdGFsbG9jLCFweXRhbGxvYywhcHl0YWxsb2MtdXRpbCwhdGV2ZW50LCFweXRldmVudCwhdGRiLCFweXRkYiwhbGRiLCFweWxkYiIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1maHMgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcGlkZGlyPS9ydW4gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtc29ja2V0cy1kaXI9L3J1bi9zYW1iYSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1tb2R1bGVzZGlyPSR7bGliZGlyfS9zYW1iYSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1sb2NrZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWNhY2hlZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdudXRscyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXNoYXJlZC1tb2R1bGVzPSR7U0FNQkE0X01PRFVMRVN9IFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz0ke1NBTUJBNF9MSUJTfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0tbWl0a3JiNSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1hZC1kYyBcCi0gICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoJ1RBUkdFVF9BUkNIJywgJ3g4Nl82NCcsICcnLCAnLS1kaXNhYmxlLWdsdXN0ZXJmcycsIGQpfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1jbHVzdGVyLXN1cHBvcnQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcHJvZmlsaW5nLWRhdGEgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wYW0gLS13aXRoLXBhbW1vZHVsZXNkaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgXAotICAgICAgICAgICAgICAgICIKLQotTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNzsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBjdGRiL2RvYy8qLiRzZWN0aW9uICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICBkb25lCi0gICAgZm9yIHNlY3Rpb24gaW4gMSA1IDcgODsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBkb2NzL21hbnBhZ2VzLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgcGFja2FnaW5nL3N5c3RlbWQvKi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgc2VkIC1lICdzLFwoRXhlY1JlbG9hZD1cKS4qXCgva2lsbFwpLFwxJHtiYXNlX2JpbmRpcn1cMiwnIFwKLSAgICAgICAgLWUgJ3MsL2V0Yy9zeXNjb25maWcvc2FtYmEsJHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhLCcgXAotICAgICAgICAtaSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8qLnNlcnZpY2UKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuY29uZi50bXAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCi0gICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSAwNzU1IHJvb3Qgcm9vdCAtIiBcCi0gICAgICAgID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgotICAgIGlmIFsgIiR7TFNCfSIgPSAibHNiIiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSBwYWNrYWdpbmcvTFNCL3NhbWJhLnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYQotICAgIGVsc2UKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9zeXN2L3NhbWJhLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0gICAgICAgIHNlZCAtZSAncywvb3B0L3NhbWJhL2Jpbiwke3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgIC1lICdzLC9vcHQvc2FtYmEvc21iLmNvbmYsJHtzeXNjb25mZGlyfS9zYW1iYS9zbWIuY29uZixnJyBcCi0gICAgICAgICAgICAtZSAncywvb3B0L3NhbWJhL2xvZywke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSxnJyBcCi0gICAgICAgICAgICAtZSAncywvZXRjL2luaXQuZC9zYW1iYS5zZXJ2ZXIsJHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEsZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4sJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0gICAgZmkKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEKLSAgICBlY2hvICIxMjcuMC4wLjEgbG9jYWxob3N0IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL2xtaG9zdHMKLSAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9MU0Ivc21iLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEvc21iLmNvbmYKLSAgICBpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wM19zYW1iYSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wM19zYW1iYQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgaW5zdGFsbCAtbTY0NCBwYWNrYWdpbmcvc3lzdGVtZC9zYW1iYS5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9zYW1iYQotCi0gICAgIyBpbnN0YWxsIGN0ZGIgY29uZmlnIGZpbGUgYW5kIHRlc3QgY2FzZXMKLSAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9jdGRiL3Rlc3RzL29ubm9kZS9ub2RlcyAke0R9JHtzeXNjb25mZGlyfS9jdGRiL25vZGVzCi0gICAgIyB0aGUgaXRlbXMgYXJlIGZyb20gY3RkYi90ZXN0cy9ydW5fdGVzdHMuc2gKLSAgICBmb3IgZCBpbiBvbm5vZGUgdGFrZW92ZXIgdG9vbCBldmVudHNjcmlwdHMgY3VuaXQgc2ltcGxlIGNvbXBsZXg7IGRvCi0gICAgICAgIHRlc3RkaXI9JHtEfSR7ZGF0YWRpcn0vY3RkYi10ZXN0cy8kZAotICAgICAgICBpbnN0YWxsIC1kICR0ZXN0ZGlyCi0gICAgICAgIGNwICR7U30vY3RkYi90ZXN0cy8kZC8qLnNoICR0ZXN0ZGlyCi0gICAgICAgIGNwIC1yICR7U30vY3RkYi90ZXN0cy8kZC9zY3JpcHRzICR7U30vY3RkYi90ZXN0cy8kZC9zdHVicyAkdGVzdGRpciB8fCB0cnVlCi0gICAgZG9uZQotCi0gICAgIyBmaXggZmlsZS1yZGVwcyBxYSB3YXJuaW5nCi0gICAgaWYgWyAtZiAke0R9JHtiaW5kaXJ9L29ubm9kZSBdOyB0aGVuCi0gICAgICAgIHNlZCAtaSAnczpcKCMhL2Jpbi9cKWJhc2g6XDFzaDonICR7RH0ke2JpbmRpcn0vb25ub2RlCi0gICAgZmkKLQotICAgIGNobW9kIDA3NTAgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2Vycy5kCi0gICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXB5dGhvbiAke1BOfS1waWRsIFwKLSAgICAgICAgICAgICAke1BOfS1kc2RiLW1vZHVsZXMgJHtQTn0tdGVzdHN1aXRlIHJlZ2lzdHJ5LXRvb2xzIFwKLSAgICAgICAgICAgICB3aW5iaW5kIFwKLSAgICAgICAgICAgICAke1BOfS1jb21tb24gJHtQTn0tYmFzZSAke1BOfS1jdGRiLXRlc3RzIFwKLSAgICAgICAgICAgICBzbWJjbGllbnQiCi0KLXB5dGhvbiBzYW1iYV9wb3B1bGF0ZV9wYWNrYWdlcygpIHsKLSAgICBkZWYgbW9kdWxlX2hvb2soZmlsZSwgcGtnLCBwYXR0ZXJuLCBmb3JtYXQsIGJhc2VuYW1lKToKLSAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJXMtYmFzZScgJSBwbiwgJyAlcycgJSBwa2cpCi0KLSAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICcnCi0gICAgcGFtX2xpYmRpciA9IGQuZXhwYW5kKCcke2Jhc2VfbGliZGlyfS9zZWN1cml0eScpCi0gICAgcGFtX3BrZ25hbWUgPSBtbHByZWZpeCArICdwYW0tcGx1Z2luJXMnCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGFtX2xpYmRpciwgJ15wYW1fKC4qKVwuc28kJywgcGFtX3BrZ25hbWUsICdQQU0gcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKLQotICAgIGxpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuLiokJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgcGtnbGliZGlyID0gJyVzL3NhbWJhJyAlIGxpYmRpcgotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBrZ2xpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGliJXMnLCAnU2FtYmEgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWNvbW1vbicsIHByZXBlbmQ9VHJ1ZSkKLSAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvYXV0aCcgJSBsaWJkaXIKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLWF1dGgtJXMnLCAnU2FtYmEgJXMgYXV0aGVudGljYXRpb24gYmFja2VuZCcsIGhvb2s9bW9kdWxlX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKLSAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvcGRiJyAlIGxpYmRpcgotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIG1vZHVsZWRpciwgJ14oLiopXC5zbyQnLCAnc2FtYmEtcGRiLSVzJywgJ1NhbWJhICVzIHBhc3N3b3JkIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCi19Ci0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic2FtYmFfcG9wdWxhdGVfcGFja2FnZXMgIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tYmFzZSIKLQotRklMRVNfJHtQTn0tYmFzZSA9ICIke3NiaW5kaXJ9L25tYmQgXAotICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L3NtYmQgXAotICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZCBcCi0gICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9ubWJkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9zYW1iYSBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbm1iLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NhbWJhLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NtYi5zZXJ2aWNlIgotCi1GSUxFU18ke1BOfS1jdGRiLXRlc3RzID0gIiR7YmluZGlyfS9jdGRiX3J1bl90ZXN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9jdGRiX3J1bl9jbHVzdGVyX3Rlc3RzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9jdGRiL25vZGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9jdGRiLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9jdGRiL3Rlc3RzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7QlBOfS1jb21tb24gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zYW1iYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZCBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdmZzLyouc28gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9jaGFyc2V0Lyouc28gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLmRhdCBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2F1dGgvKi5zbyBcCi0iCi0KLUZJTEVTXyR7UE59LWRzZGItbW9kdWxlcyA9ICIke2xpYmRpcn0vc2FtYmEvbGRiIgotCi1GSUxFU18ke1BOfS10ZXN0c3VpdGUgPSAiJHtiaW5kaXJ9L2dlbnRlc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NrdGVzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21hc2t0ZXN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmRyZHVtcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRvcnR1cmUiCi0KLUZJTEVTX3JlZ2lzdHJ5LXRvb2xzID0gIiR7YmluZGlyfS9yZWdkaWZmIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWdwYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVnc2hlbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3RyZWUiCi0KLUZJTEVTX3dpbmJpbmQgPSAiJHtzYmluZGlyfS93aW5iaW5kZCBcCi0gICAgICAgICAgICAgICAgICR7YmluZGlyfS93YmluZm8gXAotICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbnRsbV9hdXRoIFwKLSAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL2lkbWFwIFwKLSAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL25zc19pbmZvIFwKLSAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3dpbmJpbmRfa3JiNV9sb2NhdG9yLnNvIFwKLSAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvd2luYmluZCBcCi0gICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2luYmluZC5zZXJ2aWNlIgotCi1GSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLUZJTEVTX3NtYmNsaWVudCA9ICIke2JpbmRpcn0vY2lmc2RkIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBjY2xpZW50IFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY2FjbHMgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJjbGllbnQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJjcXVvdGFzIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21ic3Bvb2wgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJ0YXIgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJ0cmVlIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvc21ic3Bvb2xfa3JiNV93cmFwcGVyIgotCi1SREVQRU5EU18ke1BOfS1waWRsX2FwcGVuZCA9ICIgcGVybCIKLUZJTEVTXyR7UE59LXBpZGwgPSAiJHtiaW5kaXJ9L3BpZGwgJHtkYXRhZGlyfS9wZXJsNS9QYXJzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuNi43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC42LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIyMjdjOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuNi43LmJiCkBAIC0wLDAgKzEsMjU2IEBACitIT01FUEFHRSA9ICJodHRwczovL3d3dy5zYW1iYS5vcmcvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiR1BMLTMuMCsgJiBMR1BMLTMuMCsgJiBHUEwtMi4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0xHUEwtMy4wO21kNT1iZmNjZmU5NTIyNjlmZmYyYjQwN2RkMTFmMmYzMDgzYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiAiCisKK1NBTUJBX01JUlJPUiA9ICJodHRwOi8vc2FtYmEub3JnL3NhbWJhL2Z0cCIKK01JUlJPUlMgKz0gIlwKKyR7U0FNQkFfTUlSUk9SfSAgICBodHRwOi8vbWlycm9yLmludGVybm9kZS5vbi5uZXQvcHViL3NhbWJhIFxuIFwKKyR7U0FNQkFfTUlSUk9SfSAgICBodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2Z0cC5zYW1iYS5vcmcgXG4gXAorIgorCitTUkNfVVJJID0gIiR7U0FNQkFfTUlSUk9SfS9zdGFibGUvc2FtYmEtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzE2LWRvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8yMC1kby1ub3QtaW1wb3J0LXRhcmdldC1tb2R1bGUtd2hpbGUtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8yMS1hZGQtY29uZmlnLW9wdGlvbi13aXRob3V0LXZhbGdyaW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGFja2FnaW5nLUF2b2lkLXRpbWVvdXQtZm9yLW5tYmQtaWYtc3RhcnRlZC1vZmZsaW5lLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LWF2b2lkLXVzaW5nLWNvbG9uLWluLXRoZS1jaGVja2luZy1tc2cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmV0ZGJfZGVmaW5lcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nbGliY19vbmx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zYW1iYSBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjIuNy1wYW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2FtYmEtNC4zLjktcmVtb3ZlLWdldHB3ZW50X3IucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImM2ZWU1Yzc2NjAxNmQ1OTkwOGM4ZmI2NzJmYmJkNDQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllZjI0MzkzZGUwODM5MGYyMzZjYWJjY2Q2YTQyMGI1Y2VhMzA0ZTk1OWNiZjFhOTlmZjMxNzMyNWRiM2RkZmEiCisKK2luaGVyaXQgc3lzdGVtZCB3YWYtc2FtYmEgY3Bhbi1iYXNlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQKKyMgcmVtb3ZlIGRlZmF1bHQgYWRkZWQgUkRFUEVORFMgb24gcGVybAorUkRFUEVORFNfJHtQTn1fcmVtb3ZlID0gInBlcmwiCisKK0RFUEVORFMgKz0gInJlYWRsaW5lIHZpcnR1YWwvbGliaWNvbnYgemxpYiBwb3B0IGxpYnRhbGxvYyBsaWJ0ZGIgbGlidGV2ZW50IGxpYmxkYiBrcmI1IGxpYmJzZCBsaWJhaW8gbGlicGFtIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgorTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHRpcnBjIgorCitMU0IgPSAiIgorTFNCX2xpbnV4c3RkYmFzZSA9ICJsc2IiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJzYW1iYSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDIwIDMgNSAuIHN0b3AgMjAgMCAxIDYgLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1iYXNlIHdpbmJpbmQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmFzZSA9ICJubWIuc2VydmljZSBzbWIuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV93aW5iaW5kID0gIndpbmJpbmQuc2VydmljZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgemVyb2NvbmYnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGFjbCBjdXBzIGxkYXAgXAorIgorCitSREVQRU5EU18ke1BOfS1iYXNlICs9ICIke0xTQn0iCitSREVQRU5EU18ke1BOfS1jdGRiLXRlc3RzICs9ICJiYXNoIHV0aWwtbGludXgtZ2V0b3B0IgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbC1zdXBwb3J0LC0td2l0aG91dC1hY2wtc3VwcG9ydCxhY2wiCitQQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgorUEFDS0FHRUNPTkZJR1tjdXBzXSA9ICItLWVuYWJsZS1jdXBzLC0tZGlzYWJsZS1jdXBzLGN1cHMiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICIsLGN5cnVzLXNhc2wiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW2RtYXBpXSA9ICItLXdpdGgtZG1hcGksLS13aXRob3V0LWRtYXBpLGRtYXBpIgorUEFDS0FHRUNPTkZJR1t6ZXJvY29uZl0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCwiCitQQUNLQUdFQ09ORklHW2x0dG5nXSA9ICItLXdpdGgtbHR0bmcsIC0td2l0aG91dC1sdHRuZyxsdHRuZy11c3QiCitQQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0td2l0aC1saWJhcmNoaXZlLCAtLXdpdGhvdXQtbGliYXJjaGl2ZSwgbGliYXJjaGl2ZSIKKworCitTQU1CQTRfSURNQVBfTU9EVUxFUz0iaWRtYXBfYWQsaWRtYXBfcmlkLGlkbWFwX2FkZXgsaWRtYXBfaGFzaCxpZG1hcF90ZGIyIgorU0FNQkE0X1BEQl9NT0RVTEVTPSJwZGJfdGRic2FtLCR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAncGRiX2xkYXAsJywgJycsIGQpfXBkYl9hZHMscGRiX3NtYnBhc3N3ZCxwZGJfd2JjX3NhbSxwZGJfc2FtYmE0IgorU0FNQkE0X0FVVEhfTU9EVUxFUz0iYXV0aF91bml4LGF1dGhfd2JjLGF1dGhfc2VydmVyLGF1dGhfbmV0bG9nb25kLGF1dGhfc2NyaXB0LGF1dGhfc2FtYmE0IgorU0FNQkE0X01PRFVMRVM9IiR7U0FNQkE0X0lETUFQX01PRFVMRVN9LCR7U0FNQkE0X1BEQl9NT0RVTEVTfSwke1NBTUJBNF9BVVRIX01PRFVMRVN9IgorCitTQU1CQTRfTElCUz0iaGVpbWRhbCwhemxpYiwhcG9wdCwhdGFsbG9jLCFweXRhbGxvYywhcHl0YWxsb2MtdXRpbCwhdGV2ZW50LCFweXRldmVudCwhdGRiLCFweXRkYiwhbGRiLCFweWxkYiIKKworRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1maHMgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcGlkZGlyPS9ydW4gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtc29ja2V0cy1kaXI9L3J1bi9zYW1iYSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1tb2R1bGVzZGlyPSR7bGliZGlyfS9zYW1iYSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1sb2NrZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWNhY2hlZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdudXRscyBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXNoYXJlZC1tb2R1bGVzPSR7U0FNQkE0X01PRFVMRVN9IFwKKyAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz0ke1NBTUJBNF9MSUJTfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0tbWl0a3JiNSBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1hZC1kYyBcCisgICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoJ1RBUkdFVF9BUkNIJywgJ3g4Nl82NCcsICcnLCAnLS1kaXNhYmxlLWdsdXN0ZXJmcycsIGQpfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1jbHVzdGVyLXN1cHBvcnQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHJvZmlsaW5nLWRhdGEgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wYW0gLS13aXRoLXBhbW1vZHVsZXNkaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgXAorICAgICAgICAgICAgICAgICIKKworTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNzsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBjdGRiL2RvYy8qLiRzZWN0aW9uICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICBkb25lCisgICAgZm9yIHNlY3Rpb24gaW4gMSA1IDcgODsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBkb2NzL21hbnBhZ2VzLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgcGFja2FnaW5nL3N5c3RlbWQvKi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgc2VkIC1lICdzLFwoRXhlY1JlbG9hZD1cKS4qXCgva2lsbFwpLFwxJHtiYXNlX2JpbmRpcn1cMiwnIFwKKyAgICAgICAgLWUgJ3MsL2V0Yy9zeXNjb25maWcvc2FtYmEsJHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhLCcgXAorICAgICAgICAtaSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8qLnNlcnZpY2UKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuY29uZi50bXAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCisgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSAwNzU1IHJvb3Qgcm9vdCAtIiBcCisgICAgICAgID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgorICAgIGlmIFsgIiR7TFNCfSIgPSAibHNiIiBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSBwYWNrYWdpbmcvTFNCL3NhbWJhLnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYQorICAgIGVsc2UKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9zeXN2L3NhbWJhLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisgICAgICAgIHNlZCAtZSAncywvb3B0L3NhbWJhL2Jpbiwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgIC1lICdzLC9vcHQvc2FtYmEvc21iLmNvbmYsJHtzeXNjb25mZGlyfS9zYW1iYS9zbWIuY29uZixnJyBcCisgICAgICAgICAgICAtZSAncywvb3B0L3NhbWJhL2xvZywke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSxnJyBcCisgICAgICAgICAgICAtZSAncywvZXRjL2luaXQuZC9zYW1iYS5zZXJ2ZXIsJHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEsZycgXAorICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4sJHtiYXNlX2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEKKyAgICBlY2hvICIxMjcuMC4wLjEgbG9jYWxob3N0IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL2xtaG9zdHMKKyAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9MU0Ivc21iLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEvc21iLmNvbmYKKyAgICBpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wM19zYW1iYSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wM19zYW1iYQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisgICAgaW5zdGFsbCAtbTY0NCBwYWNrYWdpbmcvc3lzdGVtZC9zYW1iYS5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9zYW1iYQorCisgICAgIyBpbnN0YWxsIGN0ZGIgY29uZmlnIGZpbGUgYW5kIHRlc3QgY2FzZXMKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9jdGRiL3Rlc3RzL29ubm9kZS9ub2RlcyAke0R9JHtzeXNjb25mZGlyfS9jdGRiL25vZGVzCisgICAgIyB0aGUgaXRlbXMgYXJlIGZyb20gY3RkYi90ZXN0cy9ydW5fdGVzdHMuc2gKKyAgICBmb3IgZCBpbiBvbm5vZGUgdGFrZW92ZXIgdG9vbCBldmVudHNjcmlwdHMgY3VuaXQgc2ltcGxlIGNvbXBsZXg7IGRvCisgICAgICAgIHRlc3RkaXI9JHtEfSR7ZGF0YWRpcn0vY3RkYi10ZXN0cy8kZAorICAgICAgICBpbnN0YWxsIC1kICR0ZXN0ZGlyCisgICAgICAgIGNwICR7U30vY3RkYi90ZXN0cy8kZC8qLnNoICR0ZXN0ZGlyCisgICAgICAgIGNwIC1yICR7U30vY3RkYi90ZXN0cy8kZC9zY3JpcHRzICR7U30vY3RkYi90ZXN0cy8kZC9zdHVicyAkdGVzdGRpciB8fCB0cnVlCisgICAgZG9uZQorCisgICAgIyBmaXggZmlsZS1yZGVwcyBxYSB3YXJuaW5nCisgICAgaWYgWyAtZiAke0R9JHtiaW5kaXJ9L29ubm9kZSBdOyB0aGVuCisgICAgICAgIHNlZCAtaSAnczpcKCMhL2Jpbi9cKWJhc2g6XDFzaDonICR7RH0ke2JpbmRpcn0vb25ub2RlCisgICAgZmkKKworICAgIGNobW9kIDA3NTAgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2Vycy5kCisgICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXB5dGhvbiAke1BOfS1waWRsIFwKKyAgICAgICAgICAgICAke1BOfS1kc2RiLW1vZHVsZXMgJHtQTn0tdGVzdHN1aXRlIHJlZ2lzdHJ5LXRvb2xzIFwKKyAgICAgICAgICAgICB3aW5iaW5kIFwKKyAgICAgICAgICAgICAke1BOfS1jb21tb24gJHtQTn0tYmFzZSAke1BOfS1jdGRiLXRlc3RzIFwKKyAgICAgICAgICAgICBzbWJjbGllbnQiCisKK3B5dGhvbiBzYW1iYV9wb3B1bGF0ZV9wYWNrYWdlcygpIHsKKyAgICBkZWYgbW9kdWxlX2hvb2soZmlsZSwgcGtnLCBwYXR0ZXJuLCBmb3JtYXQsIGJhc2VuYW1lKToKKyAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJXMtYmFzZScgJSBwbiwgJyAlcycgJSBwa2cpCisKKyAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICcnCisgICAgcGFtX2xpYmRpciA9IGQuZXhwYW5kKCcke2Jhc2VfbGliZGlyfS9zZWN1cml0eScpCisgICAgcGFtX3BrZ25hbWUgPSBtbHByZWZpeCArICdwYW0tcGx1Z2luJXMnCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGFtX2xpYmRpciwgJ15wYW1fKC4qKVwuc28kJywgcGFtX3BrZ25hbWUsICdQQU0gcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKKworICAgIGxpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuLiokJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUsIGFsbG93X2xpbmtzPVRydWUpCisgICAgcGtnbGliZGlyID0gJyVzL3NhbWJhJyAlIGxpYmRpcgorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBrZ2xpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGliJXMnLCAnU2FtYmEgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWNvbW1vbicsIHByZXBlbmQ9VHJ1ZSkKKyAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvYXV0aCcgJSBsaWJkaXIKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLWF1dGgtJXMnLCAnU2FtYmEgJXMgYXV0aGVudGljYXRpb24gYmFja2VuZCcsIGhvb2s9bW9kdWxlX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKKyAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvcGRiJyAlIGxpYmRpcgorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIG1vZHVsZWRpciwgJ14oLiopXC5zbyQnLCAnc2FtYmEtcGRiLSVzJywgJ1NhbWJhICVzIHBhc3N3b3JkIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCit9CisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic2FtYmFfcG9wdWxhdGVfcGFja2FnZXMgIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tYmFzZSAke1BOfS1weXRob24gJHtQTn0tZHNkYi1tb2R1bGVzIgorUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICJweXRhbGxvYyBweXRob24tdGRiIgorCitGSUxFU18ke1BOfS1iYXNlID0gIiR7c2JpbmRpcn0vbm1iZCBcCisgICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vc21iZCBcCisgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L25tYmQgXAorICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ubWIuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc21iLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LWN0ZGItdGVzdHMgPSAiJHtiaW5kaXJ9L2N0ZGJfcnVuX3Rlc3RzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2N0ZGJfcnVuX2NsdXN0ZXJfdGVzdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2N0ZGIvbm9kZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGItdGVzdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGIvdGVzdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NoYXJzZXQvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouZGF0IFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXV0aC8qLnNvIFwKKyIKKworRklMRVNfJHtQTn0tZHNkYi1tb2R1bGVzID0gIiR7bGliZGlyfS9zYW1iYS9sZGIiCisKK0ZJTEVTXyR7UE59LXRlc3RzdWl0ZSA9ICIke2JpbmRpcn0vZ2VudGVzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2t0ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbWFza3Rlc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZHJkdW1wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idG9ydHVyZSIKKworRklMRVNfcmVnaXN0cnktdG9vbHMgPSAiJHtiaW5kaXJ9L3JlZ2RpZmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3BhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWdzaGVsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVndHJlZSIKKworRklMRVNfd2luYmluZCA9ICIke3NiaW5kaXJ9L3dpbmJpbmRkIFwKKyAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3diaW5mbyBcCisgICAgICAgICAgICAgICAgICR7YmluZGlyfS9udGxtX2F1dGggXAorICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvaWRtYXAgXAorICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvbnNzX2luZm8gXAorICAgICAgICAgICAgICAgICAke2xpYmRpcn0vd2luYmluZF9rcmI1X2xvY2F0b3Iuc28gXAorICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC93aW5iaW5kIFwKKyAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS93aW5iaW5kLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworRklMRVNfc21iY2xpZW50ID0gIiR7YmluZGlyfS9jaWZzZGQgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycGNjbGllbnQgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJjYWNscyBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNsaWVudCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNxdW90YXMgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJnZXQgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJzcG9vbCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRhciBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRyZWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9zbWJzcG9vbF9rcmI1X3dyYXBwZXIiCisKK1JERVBFTkRTXyR7UE59LXBpZGxfYXBwZW5kID0gIiBwZXJsIgorRklMRVNfJHtQTn0tcGlkbCA9ICIke2JpbmRpcn0vcGlkbCAke2RhdGFkaXJ9L3Blcmw1L1BhcnNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZml4LWhvc3QtY29udGFtaW5hdGlvbi13aGVuLWVuYWJsZS1zdGF0aWMtZGFxLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZml4LWhvc3QtY29udGFtaW5hdGlvbi13aGVuLWVuYWJsZS1zdGF0aWMtZGFxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZWNjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9maXgtaG9zdC1jb250YW1pbmF0aW9uLXdoZW4tZW5hYmxlLXN0YXRpYy1kYXEucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworV2hlbiBlbmFibGUgc3RhdGljIGRhcSBmb3Igc25vcnQsIGl0IGNhbGxzIHRvIGRhcS1tb2R1bGVzLWNvbmZpZyB0byBnZXQgbGluaworbGlicmFyeSBhbmQgbGlicmFyeSBwYXRoLiBMaWJyYXJ5IHBhdGggaXMgdXNlbGVzcyBmb3Igb2UgYW5kIGNhdXNlIGhvc3QKK2NvbnRhbWluYXRpb24gaXNzdWUuIFNvIGZpbHRlciBpdC4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IGZkZWQ0NWIuLmEyNDdiYjkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTY1OCw3ICs2NTgsNyBAQCBmaQorIAorIGlmIHRlc3QgIngkZW5hYmxlX3N0YXRpY19kYXEiID0gInh5ZXMiOyB0aGVuCisgICAgIExEQVE9IiIKKy0gICAgTElCUz0iJHtMSUJTfSBgZGFxLW1vZHVsZXMtY29uZmlnIC0tc3RhdGljIC0tbGlic2AiCisrICAgIExJQlM9IiR7TElCU30gYGRhcS1tb2R1bGVzLWNvbmZpZyAtLXN0YXRpYyAtLWxpYnMgfCBzZWQgJ3MjLUxbXiBdKiMjZydgIgorICAgICBBQ19DSEVDS19MSUIoW2RhcV9zdGF0aWNdLCBbZGFxX2xvYWRfbW9kdWxlc10sCisgICAgICAgICBbTElCUz0iLWxkYXFfc3RhdGljICR7TElCU30iXSwgW0xEQVE9Im5vIl0sIFsgXSkKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0XzIuOS43LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydF8yLjkuNy41LmJiCmluZGV4IGRmZDZiYTkuLjIwMzRiODUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0XzIuOS43LjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnRfMi45LjcuNS5iYgpAQCAtNCw3ICs0LDcgQEAKIExJQ0VOU0UgPSAiR1BMLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc4ZmE4ZWY5NjZiNDhmYmY5MDk1ZTEzY2M5MjM3N2M1IgogCi1ERVBFTkRTID0gInh6IGxpYnBjYXAgbGlicGNyZSBkYXEgbGliZG5ldCB1dGlsLWxpbnV4IgorREVQRU5EUyA9ICJ4eiBsaWJwY2FwIGxpYnBjcmUgZGFxIGxpYmRuZXQgdXRpbC1saW51eCBkYXEtbmF0aXZlIgogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKIAogU1JDX1VSSSA9ICIgJHtHRU5UT09fTUlSUk9SfS8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKQEAgLTE1LDYgKzE1LDcgQEAKICAgICBmaWxlOi8vZGlzYWJsZS1kYXEtdmVyZGljdC1yZXRyeS5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDEtbGlicGNhcC1zZWFyY2gtc3lzcm9vdC1mb3ItaGVhZGVycy5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDEtZml4LWRvX3BhY2thZ2UtZmFpbGVkLXNpbmNlLXNub3J0LTIuOS43LjAucGF0Y2ggXAorICAgIGZpbGU6Ly9maXgtaG9zdC1jb250YW1pbmF0aW9uLXdoZW4tZW5hYmxlLXN0YXRpYy1kYXEucGF0Y2ggXAogIgogCiBTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJmZDI3MTc4OGMwZjg4NzZiZTg3YTg1OGE5MTQyZjIwMiIKQEAgLTMxLDcgKzMyLDcgQEAKICAgICAtLWVuYWJsZS1yZWxvYWQgXAogICAgIC0tZW5hYmxlLXJlbG9hZC1lcnJvci1yZXN0YXJ0IFwKICAgICAtLWVuYWJsZS10YXJnZXRiYXNlZCBcCi0gICAgLS1kaXNhYmxlLXN0YXRpYy1kYXEgXAorICAgIC0tZW5hYmxlLXN0YXRpYy1kYXEgXAogICAgIC0td2l0aC1kbmV0LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKICAgICAtLXdpdGgtZG5ldC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0gXAogICAgIC0td2l0aC1saWJwY3JlLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZsYW4vdmxhbl8xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92bGFuL3ZsYW5fMS45LmJiCmluZGV4IDNmNjg4YjMuLmJkNTVlZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZsYW4vdmxhbl8xLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdmxhbi92bGFuXzEuOS5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiVkxBTiBwcm92aWRlcyB2Y29uZmlnIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmNhbmRlbGF0ZWNoLmNvbS9+Z3JlZWFyL3ZsYW4uaHRtbCIKIFNFQ1RJT04gPSAibWlzYyIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly92Y29uZmlnLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9MDk0Y2E0N2RlMzZjMjBjNTk4YjE1YjMyYzI3MGNlMGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92cG5jL3ZwbmMvMDAwOS1yZWR1Y2UtbGlmZXRpbWUtdmFsdWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92cG5jL3ZwbmMvMDAwOS1yZWR1Y2UtbGlmZXRpbWUtdmFsdWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlZDU1MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuYy8wMDA5LXJlZHVjZS1saWZldGltZS12YWx1ZS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDM5OTI1ZjA5MGMyMWFiNTcxZWJjNmVjMjUwNjk2ZjdmNzA5M2EyYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBXaWxsIFBhZ2UgPFdpbGwuUGFnZUBuaS5jb20+CitEYXRlOiBXZWQsIDMwIEF1ZyAyMDE3IDE4OjE0OjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBSZWR1Y2UgbGlmZXRpbWUgdmFsdWUgdG8gd2lkZWx5LWNvbXBhdGlibGUgdmFsdWUKKworQ3VycmVudCBwcm9wb3NlZCBsaWZldGltZSB2YWx1ZSAoMjE0NzQ4MyBzZWNvbmRzLCB3aGljaCBlcXVhdGVzIHRvCitNQVhJTlQgbXMsIG9yIH4yNSBkYXlzKSBpcyByZWplY3RlZCBieSBGb3J0aWdhdGUgdnBuIGRldmljZXMgYmVjYXVzZQorInBlZXIgU0EgcHJvcG9zYWwgZG9lcyBub3QgbWF0Y2ggbG9jYWwgcG9saWN5Ii4gIEl0IHNlZW1zIGRlZmF1bHQKK3BvbGljeSBmb3IgdGhlc2UgZGV2aWNlcyBjb25zdHJhaW5zIGxpZmV0aW1lIHdoZXJlIHNpbWlsYXIgVlBOIGRldmljZXMKK2Rvbid0LgorCitSZWR1Y2luZyB0aGUgbGlmZXRpbWUgZnJvbSBpdHMgY3VycmVudCB2YWx1ZSB0byAyODgwMCAoZXhhY3RseSA4IGhvdXJzKQorY2F1c2VzIGl0IHRvIHN0YXJ0IHdvcmtpbmcgd2l0aCBmb3J0aWdhdGUgZGV2aWNlcy4KKy0tLQorIHZwbmMuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS92cG5jLmMgYi92cG5jLmMKK2luZGV4IDM2ZGQwZjMuLjNlMGZjYmEgMTAwNjQ0CistLS0gYS92cG5jLmMKKysrKyBiL3ZwbmMuYworQEAgLTExMzUsNyArMTEzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXNha21wX2F0dHJpYnV0ZSAqbWFrZV90cmFuc2Zvcm1faWtlKGludCBkaF9ncm91cCwgaW50IGNyeXB0LCBpbnQKKyAJYS0+YWYgPSBpc2FrbXBfYXR0cl9sb3RzOworIAlhLT51LmxvdHMubGVuZ3RoID0gNDsKKyAJYS0+dS5sb3RzLmRhdGEgPSB4YWxsb2NjKGEtPnUubG90cy5sZW5ndGgpOworLQkqKCh1aW50MzJfdCAqKSBhLT51LmxvdHMuZGF0YSkgPSBodG9ubCgyMTQ3NDgzKTsKKysJKigodWludDMyX3QgKikgYS0+dS5sb3RzLmRhdGEpID0gaHRvbmwoMjg4MDApOworIAlhID0gbmV3X2lzYWttcF9hdHRyaWJ1dGVfMTYoSUtFX0FUVFJJQl9MSUZFX1RZUEUsIElLRV9MSUZFX1RZUEVfU0VDT05EUywgYSk7CisgCWEgPSBuZXdfaXNha21wX2F0dHJpYnV0ZV8xNihJS0VfQVRUUklCX0FVVEhfTUVUSE9ELCBhdXRoLCBhKTsKKyAJYSA9IG5ld19pc2FrbXBfYXR0cmlidXRlXzE2KElLRV9BVFRSSUJfR1JPVVBfREVTQywgZGhfZ3JvdXAsIGEpOworQEAgLTI1NjEsNyArMjU2MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXNha21wX2F0dHJpYnV0ZSAqbWFrZV90cmFuc2Zvcm1faXBzZWMoc3RydWN0IHNhX2Jsb2NrICpzLCBpbnQgZGhfCisgCWEtPmFmID0gaXNha21wX2F0dHJfbG90czsKKyAJYS0+dS5sb3RzLmxlbmd0aCA9IDQ7CisgCWEtPnUubG90cy5kYXRhID0geGFsbG9jYyhhLT51LmxvdHMubGVuZ3RoKTsKKy0JKigodWludDMyX3QgKikgYS0+dS5sb3RzLmRhdGEpID0gaHRvbmwoMjE0NzQ4Myk7CisrCSooKHVpbnQzMl90ICopIGEtPnUubG90cy5kYXRhKSA9IGh0b25sKDI4ODAwKTsKKyAJYSA9IG5ld19pc2FrbXBfYXR0cmlidXRlXzE2KElTQUtNUF9JUFNFQ19BVFRSSUJfU0FfTElGRV9UWVBFLCBJUFNFQ19MSUZFX1NFQ09ORFMsIGEpOworIAorIAlpZiAoZGhfZ3JvdXApCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuY18wLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuY18wLjUuMy5iYgppbmRleCA2ZjkyYWNkLi5lYTIxNzk5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92cG5jL3ZwbmNfMC41LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdnBuYy92cG5jXzAuNS4zLmJiCkBAIC0yMCw2ICsyMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA2LXN5c2RlcC1BZGQtaGVhZGVyLWluY2x1ZGUtc2VxdWVuY2UtdG8tYWRqdXN0LWZvci1tdXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNy1hZGQtZXJyb3ItQVBJLXdoZW4tZXJyb3IuaC1pcy1ub3Qtb24tcGxhdGZvcm0ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwOC1pbmNsdWRlLXN5c2RlcC5oLWJlZm9yZS1uZXQtaWZfdHVuLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1yZWR1Y2UtbGlmZXRpbWUtdmFsdWUucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFBBQ0tBR0VDT05GSUcgPz0gImdudXRscyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvZmlsZXMvMDAwMS1maXgtbm8tcnVsZS10by1tYWtlLWN5YXNzbC1vcHRpb25zLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL2ZpbGVzLzAwMDEtZml4LW5vLXJ1bGUtdG8tbWFrZS1jeWFzc2wtb3B0aW9ucy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMDRkOTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL2ZpbGVzLzAwMDEtZml4LW5vLXJ1bGUtdG8tbWFrZS1jeWFzc2wtb3B0aW9ucy5oLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZmI0OTAxMzZjZjhmMjQ1NmNmZTEzYjBiNGY3OTZlNmMxNTVlNzVkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMwIEF1ZyAyMDE3IDAzOjAyOjMyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBubyBydWxlIHRvIG1ha2UgY3lhc3NsL29wdGlvbnMuaAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAzOTVkNzVkLi5kNGEzODgwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zNjg0LDYgKzM2ODQsNyBAQCBBQ19DT05GSUdfRklMRVMoW3dvbGZzc2wvb3B0aW9ucy5oXSkKKyAjZmkKKyBBQ19DT05GSUdfRklMRVMoW3N1cHBvcnQvd29sZnNzbC5wY10pCisgQUNfQ09ORklHX0ZJTEVTKFtycG0vc3BlY10pCisrQUNfQ09ORklHX0ZJTEVTKFtjeWFzc2wvb3B0aW9ucy5oXSkKKyAKKyBBWF9DUkVBVEVfR0VORVJJQ19DT05GSUcKKyBBWF9BTV9KT0JTRVJWRVIoW3llc10pCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL3dvbGZzc2xfMy4xMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMjYxOTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL3dvbGZzc2xfMy4xMi4wLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAid29sZlNTTCBMaWdodHdlaWdodCwgRW1iZWRkZWQgU1NMIExpYnJhcnkiCitERVNDUklQVElPTiA9ICJ3b2xmU1NMLCBmb3JtZXJseSBDeWFTU0wsIGlzIGEgbGlnaHR3ZWlnaHQgU1NMIGxpYnJhcnkgd3JpdHRlbiBpbiBDIGFuZCBcCisgICAgICAgICAgICAgICBvcHRpbWl6ZWQgZm9yIGVtYmVkZGVkIGFuZCBSVE9TIGVudmlyb25tZW50cy4gSXQgY2FuIGJlIFwKKyAgICAgICAgICAgICAgIFVwIHRvIDIwIHRpbWVzIHNtYWxsZXIgdGhhbiBPcGVuU1NMIHdoaWxlIHN0aWxsIHN1cHBvcnRpbmcgXAorICAgICAgICAgICAgICAgYSBmdWxsIFRMUyAxLjIgY2xpZW50IGFuZCBzZXJ2ZXIuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53b2xmc3NsLmNvbS95YVNTTC9Qcm9kdWN0cy13b2xmc3NsLmh0bWwiCitCVUdUUkFDS0VSID0gImh0dHA6Ly9naXRodWIuY29tL3dvbGZzc2wvd29sZnNzbC9pc3N1ZXMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1BST1ZJREVTICs9ICJjeWFzc2wiCitSUFJPVklERVNfJHtQTn0gPSAiY3lhc3NsIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS93b2xmU1NML3dvbGZzc2wvYXJjaGl2ZS92JHtQVn0tc3RhYmxlLnppcCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1uby1ydWxlLXRvLW1ha2UtY3lhc3NsLW9wdGlvbnMuaC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjljYWY1NTgxNjlhYjY1MGRjODIwMDcwODc5OWViZWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjZkODdkM2UyYzg3NTcxNzdkNjlhZmYzNzNjOTFjZjE2MmY0YTM5NDRmYWU5MGZhMTBkMDg2ZmQ1Zjk1NDJlNyIKKworUyA9ICIke1dPUktESVJ9L3dvbGZzc2wtJHtQVn0tc3RhYmxlIgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL3dvbGZzc2xfMy45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL3dvbGZzc2xfMy45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYWUzYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzMuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJ3b2xmU1NMIExpZ2h0d2VpZ2h0LCBFbWJlZGRlZCBTU0wgTGlicmFyeSIKLURFU0NSSVBUSU9OID0gIndvbGZTU0wsIGZvcm1lcmx5IEN5YVNTTCwgaXMgYSBsaWdodHdlaWdodCBTU0wgbGlicmFyeSB3cml0dGVuIGluIEMgYW5kIFwKLSAgICAgICAgICAgICAgIG9wdGltaXplZCBmb3IgZW1iZWRkZWQgYW5kIFJUT1MgZW52aXJvbm1lbnRzLiBJdCBjYW4gYmUgXAotICAgICAgICAgICAgICAgVXAgdG8gMjAgdGltZXMgc21hbGxlciB0aGFuIE9wZW5TU0wgd2hpbGUgc3RpbGwgc3VwcG9ydGluZyBcCi0gICAgICAgICAgICAgICBhIGZ1bGwgVExTIDEuMiBjbGllbnQgYW5kIHNlcnZlci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LndvbGZzc2wuY29tL3lhU1NML1Byb2R1Y3RzLXdvbGZzc2wuaHRtbCIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2dpdGh1Yi5jb20vd29sZnNzbC93b2xmc3NsL2lzc3VlcyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotUFJPVklERVMgKz0gImN5YXNzbCIKLVJQUk9WSURFU18ke1BOfSA9ICJjeWFzc2wiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy53b2xmc3NsLmNvbS8ke0JQfS56aXAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMzM5NjcyNmE5YmVmZDYxNDQzYzJjY2UyMTZlMzliYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5OGY1MDI0NGY3YjQzZjg2ODNiZDBjZjVjNTk5ODQ5ZDMzMGU3NWU2Y2YwNzdlOTZmMTRlODNiZGE4YjAzY2EzIgotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy8wMDAxLW1vZHVsZXMtbG9va3VwX211bHRpLmMtUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy8wMDAxLW1vZHVsZXMtbG9va3VwX211bHRpLmMtUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FjMTQ1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzLzAwMDEtbW9kdWxlcy1sb29rdXBfbXVsdGkuYy1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGU0ZWUwMGUwOGFjZDdjMDkxMmEzMjY0YWQzMmU0ZGU4NjFjNzQxNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA3IFNlcCAyMDE3IDIyOjIyOjMxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1vZHVsZXMvbG9va3VwX211bHRpLmM6IFJlcGxhY2UgX19TX0lFWEVDIHdpdGggU19JRVhFQworCitfX1NfSUVYRUMgaXMgaW50ZXJuYWwgdG8gbGliYyBhbmQgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24KK2FsbCBsaWJjIGUuZy4gbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbW9kdWxlcy9sb29rdXBfbXVsdGkuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvbG9va3VwX211bHRpLmMgYi9tb2R1bGVzL2xvb2t1cF9tdWx0aS5jCitpbmRleCAzZWNkYTZkLi5jZjEwOWRlIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9sb29rdXBfbXVsdGkuYworKysrIGIvbW9kdWxlcy9sb29rdXBfbXVsdGkuYworQEAgLTQ1Miw3ICs0NTIsNyBAQCBpbnQgbG9va3VwX3JlaW5pdChjb25zdCBjaGFyICpteV9tYXBmbXQsCisgCQkJCQljb250aW51ZTsKKyAJCQkJfQorIAorLQkJCQlpZiAoc3Quc3RfbW9kZSAmIF9fU19JRVhFQykKKysJCQkJaWYgKHN0LnN0X21vZGUgJiBTX0lFWEVDKQorIAkJCQkJdHlwZSA9IHNyY19wcm9nOworIAkJCQllbHNlCisgCQkJCQl0eXBlID0gc3JjX2ZpbGU7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mc181LjEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzXzUuMS4yLmJiCmluZGV4IGVlYTdjNGIuLjY4YzY0ZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzXzUuMS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzXzUuMS4yLmJiCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJHUEwtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCiAKLURFUEVORFMgKz0gImxpYnRpcnBjIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBlMmZzcHJvZ3Mgb3BlbnNzbCBsaWJ4bWwyIHV0aWwtbGludXggY3lydXMtc2FzbCIKK0RFUEVORFMgKz0gImxpYnRpcnBjIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBlMmZzcHJvZ3Mgb3BlbnNzbCBsaWJ4bWwyIHV0aWwtbGludXggY3lydXMtc2FzbCBsaWJuc2wyIgogCiBDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCiAKQEAgLTI2LDYgKzI2LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDItUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEVDLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2F1dG9mcy01LjEuMi1saWJ0aXJwYy1hcy1uZWVkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy1saWJuc2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tb2R1bGVzLWxvb2t1cF9tdWx0aS5jLVJlcGxhY2UtX19TX0lFWEVDLXdpdGgtU19JRVhFLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjI4Y2Y4OGY5OWVmZjU1M2E4NTAwNjU5YmE1ZDQ1YTc2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkNTdlNDEzOGMyZWM4MDU4Y2E5MjE2NGQwMzU1NDZmNjhjZTRhZjkzYWNiODkzMzY5OTkzZDY3YzcwNTZhMTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI2LmJiCmluZGV4IDYxYjdhZDQuLmVhYTQ1M2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI2LmJiCkBAIC0xLDUgKzEsNiBAQAogU1VNTUFSWSA9ICJHZW5lcmljIGNsaWVudC9zZXJ2ZXIgbGlicmFyeSBmb3IgU0FTTCBhdXRoZW50aWNhdGlvbiIKIFNFQ1RJT04gPSAibGlicyIKK0hPTUVQQUdFID0gImh0dHA6Ly9hc2cud2ViLmNtdS5lZHUvc2FzbC8iCiBERVBFTkRTID0gIm9wZW5zc2wgdmlydHVhbC9kYiIKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2Y1NWUwOTc0ZTNkNmRiMDBjYTZmNTdmMmQyMDYzOTYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvZG5yZC9kbnJkXzIuMjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9kbnJkL2RucmRfMi4yMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGEyOWQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9kbnJkL2RucmRfMi4yMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGNhY2hpbmcsIGZvcndhcmRpbmcgRE5TIHByb3h5IHNlcnZlciIKLURFU0NSSVBUSU9OID0gIlwKLWRucmQgaXMgYSBwcm94eWluZyBuYW1lc2VydmVyLiBJdCBmb3J3YXJkcyBETlMgcXVlcmllcyB0byB0aGUgYXBwcm9wcmlhdGUgXAotbmFtZXNlcnZlciwgYnV0IGNhbiBhbHNvIGFjdCBhcyB0aGUgcHJpbWFyeSBuYW1lc2VydmVyIGZvciBhIHN1Ym5ldCBiZWhpbmQgXAotYSBmaXJld2FsbC4gSXQgYWxzbyBoYXMgZmVhdHVyZXMgc3VjaCBhcyBjYWNoaW5nIEROUyByZXF1ZXN0cywgc3VwcG9ydCBmb3IgXAotRE5TIHNlcnZlcnMsIGNhY2hlIHBvaXNvbmluZyBwcmV2ZW50aW9uLCBUQ1Agc3VwcG9ydCwgZXRjLi4iCi1IT01FUEFHRSA9ICJodHRwOi8vZG5yZC5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGJlNjcwMTdmMWM3NzAzMTNhZDdiNDBlMThkNTY4ZjEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZG5yZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2RucmQuY29uZi5zYW1wbGUgXAotICAgICAgICAgICBmaWxlOi8vZG5yZC5pbml0IgotU1JDX1VSSVttZDVzdW1dID0gIjQxYzliMDcwYWFlOGVkNDAzZmM4YzJhYWM3YWIxNTdjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhNDZlN2Y4NzM2Yjg4YzFkNzUyY2Y2MDZiMzk5MDA0MTIyMWNlOTFkMDE0ZTk1NWM2YjAyZWIyMTY3ZGIwMTUiCi0KLVBOQkxBQ0tMSVNUW2RucmRdID89ICJCUk9LRU46IGRucmQtMi4yMC4zLXIwIGRvX3BhY2thZ2U6IFFBIElzc3VlOiBkbnJkOiBGaWxlcy9kaXJlY3RvcmllcyB3ZXJlIGluc3RhbGxlZCBidXQgbm90IHNoaXBwZWQgaW4gYW55IHBhY2thZ2U6IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZG5yZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1pbmhlcml0IGF1dG90b29scwotaW5oZXJpdCAke0BiYi51dGlscy5maWx0ZXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInLCAnc3lzdGVtZCcsIGQpfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gSU5TVEFMTD0iaW5zdGFsbCAtcCIKLQotICAgIHNlZCAtaSAtZSAnczovZXRjL3JjLmQvaW5pdC5kL2Z1bmN0aW9uczovZXRjL2luaXQuZC9mdW5jdGlvbnM6ZycgXAotICAgICAgICAke1dPUktESVJ9L2RucmQuaW5pdAotICAgIGluc3RhbGwgLWQgLW0gMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1kIC1tIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vZG5yZAotICAgIGluc3RhbGwgLXAgLW0gMDY0NCAke1dPUktESVJ9L2RucmQuY29uZi5zYW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vZG5yZC9kbnJkLmNvbmYKLSAgICBpbnN0YWxsIC1wIC1tIDA3NTUgJHtXT1JLRElSfS9kbnJkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RucmQKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZG5yZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pZ21wcHJveHkvaWdtcHByb3h5LzAwMDEtc3JjLWlnbXBwcm94eS5oLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfc2hvcnQtdV9pbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pZ21wcHJveHkvaWdtcHByb3h5LzAwMDEtc3JjLWlnbXBwcm94eS5oLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfc2hvcnQtdV9pbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmNkYzM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lnbXBwcm94eS9pZ21wcHJveHkvMDAwMS1zcmMtaWdtcHByb3h5LmgtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9zaG9ydC11X2luLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gYTU1NzY1MWEwOGUyMWUzYzdjN2Y1ZWNhOWY1NDA1Zjg2NjI0OTAzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE0IEp1bCAyMDE3IDIyOjQyOjUxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy9pZ21wcHJveHkuaDogSW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdV9zaG9ydC91X2luaXQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9pZ21wcHJveHkuaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2lnbXBwcm94eS5oIGIvc3JjL2lnbXBwcm94eS5oCitpbmRleCA0ZGFiZDFjLi40NDU0NzI5IDEwMDY0NAorLS0tIGEvc3JjL2lnbXBwcm94eS5oCisrKysgYi9zcmMvaWdtcHByb3h5LmgKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAKKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lnbXBwcm94eS9pZ21wcHJveHlfMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lnbXBwcm94eS9pZ21wcHJveHlfMC4xLmJiCmluZGV4IGMzZDJmMWEuLjU0MjRkYzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pZ21wcHJveHkvaWdtcHByb3h5XzAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaWdtcHByb3h5L2lnbXBwcm94eV8wLjEuYmIKQEAgLTUsOSArNSwxMiBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWU5OTVlMjc5OWJiMGQyN2Q2MzA2OWI5N2Y4MDU0MjAiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9pZ21wcHJveHkvZmlsZXMvJHtCUE59LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLWlnbXBwcm94eS5oLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfc2hvcnQtdV9pbi5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImM1NmY0MWVjMTk1YmMxZmUwMTYzNjliZjc0ZWZjNWExIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlMThmZjNkOGMzYWUzYTI5ZGNjYjdlNWVlZGYzMzIzMzczMzAwMjAxNjhiZDk1YTExY2VjZThkN2Q3ZWU2YWUiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAxLVJlc3BlY3QtZmxhZ3MtZnJvbS1lbnYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAxLVJlc3BlY3QtZmxhZ3MtZnJvbS1lbnYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2NzYyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDEtUmVzcGVjdC1mbGFncy1mcm9tLWVudi5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDQ4NDhiOWU0ZDUxNmE5MjAzYzA4NDMyOTAxYTdiNDA0MTllOGY0M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOSBKdWwgMjAxNyAxNTo1NDozNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gUmVzcGVjdCBmbGFncyBmcm9tIGVudgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgICAgICB8IDQgKystLQorIGNsaS9NYWtlZmlsZSAgfCAyICstCisgcHBwZC9NYWtlZmlsZSB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGEwNWEwMDAuLjQzOWE5NzggMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC04MSw4ICs4MSw4IEBAIExJQlMuZG1hbGxvYz0JCS1sZG1hbGxvYworIGV4cG9ydCBVU0VfRE1BTExPQworIGVuZGlmCisgCistQ1BQRkxBR1M9CQkkKENQUEZMQUdTLmlwcG9vbHRlc3QpCistQ0ZMQUdTPQkJCS1JLiAtSXVzbCAtSWNsaSAtTU1EIC1XYWxsIC1nICQoQ1BQRkxBR1MpICQoQ1BQRkxBR1MuZG1hbGxvYykKKytDUFBGTEFHUys9CQkkKENQUEZMQUdTLmlwcG9vbHRlc3QpCisrQ0ZMQUdTKz0JCQktSS4gLUl1c2wgLUljbGkgLU1NRCAtV2FsbCAtZyAkKENQUEZMQUdTKSAkKENQUEZMQUdTLmRtYWxsb2MpCisgTERGTEFHUy5pcHBvb2xkPQkkKExERkxBR1MpIC1XbCwtRSAtTC4gLUx1c2wgLWx1c2wgLWxuc2wgLWxkbCAkKExJQlMuZG1hbGxvYykgLWxjCisgTERGTEFHUy5pcHBvb2xjb25maWc9CSQoTERGTEFHUykgLUxjbGkgLWxjbGkgLWxyZWFkbGluZSAtbGN1cnNlcyAtbG5zbCAkKExJQlMuZG1hbGxvYykgLWxjCisgCitkaWZmIC0tZ2l0IGEvY2xpL01ha2VmaWxlIGIvY2xpL01ha2VmaWxlCitpbmRleCA0YjVkZDU5Li41NmZiZjJmIDEwMDY0NAorLS0tIGEvY2xpL01ha2VmaWxlCisrKysgYi9jbGkvTWFrZWZpbGUKK0BAIC03LDcgKzcsNyBAQCBDTElfU1JDU19URVNULm89CSQoQ0xJX1NSQ1NfVEVTVC5jOiUuYz0lLm8pCisgCisgTERGTEFHUy5jbGlfdGVzdD0JLUwuLiAtTC4gJChSRUFETElORV9MREZMQUdTKSAtbGNsaSAtbHVzbCAtbHJlYWRsaW5lIC1sY3Vyc2VzIC1sYworIAorLUNGTEFHUz0JCQkkKENGTEFHUy5vcHRpbWl6ZSkgLU1NRCAtV2FsbCAtV2Vycm9yIC1JLi4gJChSRUFETElORV9DRkxBR1MpCisrQ0ZMQUdTPQkJCSQoQ0ZMQUdTLm9wdGltaXplKSAtTU1EIC1XYWxsIC1XZXJyb3IgLUkuLiAkKFJFQURMSU5FX0NGTEFHUykgJChDUFBGTEFHUykKKyAKKyAuUEhPTlk6CQkJYWxsIHRlc3QgY2xlYW4KKyAKK2RpZmYgLS1naXQgYS9wcHBkL01ha2VmaWxlIGIvcHBwZC9NYWtlZmlsZQoraW5kZXggMTA2ZGVjYS4uN2ZkODE1ZiAxMDA2NDQKKy0tLSBhL3BwcGQvTWFrZWZpbGUKKysrKyBiL3BwcGQvTWFrZWZpbGUKK0BAIC0xMCw3ICsxMCw3IEBAIGVuZGlmCisgCisgIyBFTkQgQ09ORklHVVJBQkxFIFNFVFRJTkdTCisgCistQ0ZMQUdTCSs9IC1nIC1JLi4gLUkvdXNyL2luY2x1ZGUvcHBwZCAkKENGTEFHUy5wcHBkKSAtZlBJQworK0NGTEFHUwkrPSAtZyAtSS4uIC1JPS91c3IvaW5jbHVkZS9wcHBkICQoQ0ZMQUdTLnBwcGQpIC1mUElDCisgTERGTEFHUwkrPSAtc2hhcmVkCisgCisgYWxsOglpcHBvb2wuc28KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDEtcmVhZC1yZXR1cm5zLXNzaXplX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAxLXJlYWQtcmV0dXJucy1zc2l6ZV90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkM2Y5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAxLXJlYWQtcmV0dXJucy1zc2l6ZV90LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZTRlMGFhZTEzOWI2NDg5ZGM1ODJmZDE0ZTU0ZTU2MjEyNjQ4MmNlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDA3OjIzOjUzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSByZWFkKCkgcmV0dXJucyBzc2l6ZV90CisKK0ZpeGVzCit1c2xfZmQuYzoyODQ6MTA6IGVycm9yOiBjb21wYXJpc29uIG9mIHVuc2lnbmVkIGV4cHJlc3Npb24gPCAwIGlzIGFsd2F5cyBmYWxzZSBbLVdlcnJvciwtV3RhdXRvbG9naWNhbC1jb21wYXJlXQorICAgICAgICAgICAgICAgIGlmIChuYiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgfn4gXiB+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB1c2wvdXNsX2ZkLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91c2wvdXNsX2ZkLmMgYi91c2wvdXNsX2ZkLmMKK2luZGV4IDNiN2E4MTMuLjA0YmE0OGMgMTAwNjQ0CistLS0gYS91c2wvdXNsX2ZkLmMKKysrKyBiL3VzbC91c2xfZmQuYworQEAgLTI4MCw3ICsyODAsNyBAQCBzaXplX3QgdXNsX2ZkX3JlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKKyAJY2hhciAqcHRyID0gYnVmOworIAorIAlmb3IgKGNoYXJzX3JlYWQgPSAwOyBjaGFyc19yZWFkIDwgY291bnQ7ICkgeworLQkJc2l6ZV90IG5iID0gcmVhZChmZCwgcHRyLCBjb3VudCAtIGNoYXJzX3JlYWQpOworKwkJc3NpemVfdCBuYiA9IHJlYWQoZmQsIHB0ciwgY291bnQgLSBjaGFyc19yZWFkKTsKKyAJCWlmIChuYiA8IDApIHsKKyAJCQlpZiAoZXJybm8gPT0gRUlOVFIpCisgCQkJCWNvbnRpbnVlOworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMS11c2xfdGltZXItQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi13cml0ZS1BUEkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAxLXVzbF90aW1lci1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLXdyaXRlLUFQSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmI3Y2M1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMS11c2xfdGltZXItQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi13cml0ZS1BUEkucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1ZDdmMjBjMDQ1YjNjNzRkYWQyYzUzZDY1ZTMwYmQ0ODQwMjUwMDgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTU6MTc6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdXNsX3RpbWVyOiBDaGVjayBmb3IgcmV0dXJuIHZhbHVlIG9mIHdyaXRlKCkgQVBJCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB1c2wvdXNsX3RpbWVyLmMgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91c2wvdXNsX3RpbWVyLmMgYi91c2wvdXNsX3RpbWVyLmMKK2luZGV4IGZkYTc1MmIuLmQ4NDE0YTYgMTAwNjQ0CistLS0gYS91c2wvdXNsX3RpbWVyLmMKKysrKyBiL3VzbC91c2xfdGltZXIuYworQEAgLTk0LDcgKzk0LDkgQEAgdm9pZCB1c2xfdGltZXJfdGljayh2b2lkKQorIAorIAlpZiAoIXVzbF90aWNrX3BlbmRpbmcpIHsKKyAJCXVzbF90aWNrX3BlbmRpbmcgPSAxOworLQkJd3JpdGUodXNsX3RpY2tfcGlwZVsxXSwgJm1zZywgc2l6ZW9mKG1zZykpOworKwkJaWYgKHdyaXRlKHVzbF90aWNrX3BpcGVbMV0sICZtc2csIHNpemVvZihtc2cpKSAhPSBzaXplb2YobXNnKSkgeworKwkJCWZwcmludGYoc3RkZXJyLCAid3JpdGUgdG8gZmQgJWkgZmFpbGVkOiAlc1xuIiwgdXNsX3RpY2tfcGlwZVsxXSwgc3RyZXJyb3IoZXJybm8pKTsKKysJCX0KKyAJfQorIH0KKyAKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDItTWFyay1maXJzdC1lbGVtZW50LW9mLWEtc3RyaW5nLWFzLW51bGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAyLU1hcmstZmlyc3QtZWxlbWVudC1vZi1hLXN0cmluZy1hcy1udWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMmJkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAyLU1hcmstZmlyc3QtZWxlbWVudC1vZi1hLXN0cmluZy1hcy1udWxsLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gY2YyNTU3NjQyODkwMzE2OGNkNDFiMTgzZmIxY2E5YzJiN2UyNjY2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDA3OjI4OjEwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBNYXJrIGZpcnN0IGVsZW1lbnQgb2YgYSBzdHJpbmcgYXMgbnVsbAorCitGaXhlcworY2xpX2xpYi5jOjQyNzoyMDogZXJyb3I6IGV4cHJlc3Npb24gd2hpY2ggZXZhbHVhdGVzIHRvIHplcm8gdHJlYXRlZCBhcyBhIG51bGwgcG9pbnRlciBjb25zdGFudCBvZiB0eXBlICdjaGFyIConIFstV2Vycm9yLC1Xbm9uLWxpdGVyYWwtbnVsbC1jb252ZXJzaW9uXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1thcmddID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNsaS9jbGlfbGliLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jbGkvY2xpX2xpYi5jIGIvY2xpL2NsaV9saWIuYworaW5kZXggNDFhMGIwNi4uZTRkMmZkNSAxMDA2NDQKKy0tLSBhL2NsaS9jbGlfbGliLmMKKysrKyBiL2NsaS9jbGlfbGliLmMKK0BAIC00MjQsNyArNDI0LDcgQEAgaW50IGNsaV9maW5kX2FyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgc3RydWN0IGNsaV9ub2RlICpjbWQsIHN0cnVjdCBjbGlfbm9kZQorIAkJCWlmIChhcmdfc3RyaW5nWzFdID09ICdcMCcpIHsKKyAJCQkJLyogbm8gYXJnIHZhbHVlIC0gb25seSBhbGxvd2VkIGZvciBzdHJpbmcgYXJncyAqLworIAkJCQlpZiAobm9kZS0+YXJnLT5wYXJzZXIgPT0gY2xpX2FyZ19wYXJzZV9zdHJpbmcpIHsKKy0JCQkJCXZhbHVlc1thcmddID0gJ1wwJzsKKysJCQkJCSp2YWx1ZXNbYXJnXSA9ICdcMCc7CisgCQkJCX0gZWxzZSB7CisgCQkJCQlyZXN1bHQgPSAtRUlOVkFMOworIAkJCQkJYnJlYWs7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAyLWxpbmstd2l0aC1saWJ0aXJwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDItbGluay13aXRoLWxpYnRpcnBjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MGY3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAyLWxpbmstd2l0aC1saWJ0aXJwYy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDQ3YWVmMjYxOTg0MzFmN2FkNTY4YzIyNzdkZGVkMTU4YmRhM2UzNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOSBKdWwgMjAxNyAxNjowMDozNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvM10gbGluayB3aXRoIGxpYnRpcnBjCisKK211c2wgbmVlZHMgaXQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDQzOWE5NzguLmVhODIxZWIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC04Myw4ICs4Myw4IEBAIGVuZGlmCisgCisgQ1BQRkxBR1MrPQkJJChDUFBGTEFHUy5pcHBvb2x0ZXN0KQorIENGTEFHUys9CQkJLUkuIC1JdXNsIC1JY2xpIC1NTUQgLVdhbGwgLWcgJChDUFBGTEFHUykgJChDUFBGTEFHUy5kbWFsbG9jKQorLUxERkxBR1MuaXBwb29sZD0JJChMREZMQUdTKSAtV2wsLUUgLUwuIC1MdXNsIC1sdXNsIC1sbnNsIC1sZGwgJChMSUJTLmRtYWxsb2MpIC1sYworLUxERkxBR1MuaXBwb29sY29uZmlnPQkkKExERkxBR1MpIC1MY2xpIC1sY2xpIC1scmVhZGxpbmUgLWxjdXJzZXMgLWxuc2wgJChMSUJTLmRtYWxsb2MpIC1sYworK0xERkxBR1MuaXBwb29sZD0JJChMREZMQUdTKSAtV2wsLUUgLUwuIC1MdXNsIC1sdXNsIC1sZGwgJChMSUJTLmRtYWxsb2MpIC1sYyAtbHRpcnBjCisrTERGTEFHUy5pcHBvb2xjb25maWc9CSQoTERGTEFHUykgLUxjbGkgLWxjbGkgLWxyZWFkbGluZSAtbGN1cnNlcyAkKExJQlMuZG1hbGxvYykgLWxjIC1sdGlycGMKKyAKKyBPUFRfQ0ZMQUdTPz0JCS1PCisgCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAzLWNsaS1NYXJrLXJldHVybi1vZi1zdHJ0b2wtYXMtbG9uZy1pbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAzLWNsaS1NYXJrLXJldHVybi1vZi1zdHJ0b2wtYXMtbG9uZy1pbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg1NGIxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDMtY2xpLU1hcmstcmV0dXJuLW9mLXN0cnRvbC1hcy1sb25nLWludC5wYXRjaApAQCAtMCwwICsxLDU4IEBACitGcm9tIDk5NGQ5NTc1Mzc0ZDNjZGIzNGIxYjBmNzBjM2M1M2FlNzZmZTU3OGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyNiBBdWcgMjAxNyAwNzo0MTowNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvM10gY2xpOiBNYXJrIHJldHVybiBvZiBzdHJ0b2wgYXMgbG9uZyBpbnQKKworc3RydG9sIGRvZXMgbm90IHJldHVybiB1bnNpZ25lZCBsb25nCisKK2Vycm9yOiB0YWtpbmcgdGhlIGFic29sdXRlIHZhbHVlIG9mIHVuc2lnbmVkIHR5cGUgJ3Vuc2lnbmVkIGxvbmcnIGhhcyBubyBlZmZlY3QgWy1XZXJyb3IsLVdhYnNvbHV0ZS12YWx1ZV0KKyAgICAgICAgaWYgKCgqZW5kcCA9PSAnXDAnKSAmJiAobGFicyh0bXApIDwgMzI3NjgpKSB7CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjbGkvY2xpX2xpYi5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGkvY2xpX2xpYi5jIGIvY2xpL2NsaV9saWIuYworaW5kZXggZTRkMmZkNS4uNWY0ODdkYyAxMDA2NDQKKy0tLSBhL2NsaS9jbGlfbGliLmMKKysrKyBiL2NsaS9jbGlfbGliLmMKK0BAIC01MjIsNyArNTIyLDcgQEAgaW50IGNsaV9hcmdfcGFyc2VfaW50MzIoc3RydWN0IGNsaV9ub2RlICphcmcsIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqcmVzdWx0KQorIGludCBjbGlfYXJnX3BhcnNlX2ludDE2KHN0cnVjdCBjbGlfbm9kZSAqYXJnLCBjb25zdCBjaGFyICp2YWwsIHZvaWQgKnJlc3VsdCkKKyB7CisgCWludDE2X3QgKmludHZhbCA9IHJlc3VsdDsKKy0JdW5zaWduZWQgbG9uZyB0bXA7CisrCWxvbmcgdG1wOworIAljaGFyICplbmRwOworIAlpbnQgcmV0ID0gMDsKKyAKK0BAIC01MzksNyArNTM5LDcgQEAgaW50IGNsaV9hcmdfcGFyc2VfaW50MTYoc3RydWN0IGNsaV9ub2RlICphcmcsIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqcmVzdWx0KQorIGludCBjbGlfYXJnX3BhcnNlX2ludDgoc3RydWN0IGNsaV9ub2RlICphcmcsIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqcmVzdWx0KQorIHsKKyAJaW50OF90ICppbnR2YWwgPSByZXN1bHQ7CistCXVuc2lnbmVkIGxvbmcgdG1wOworKwlsb25nIHRtcDsKKyAJY2hhciAqZW5kcDsKKyAJaW50IHJldCA9IDA7CisgCitAQCAtNTczLDcgKzU3Myw3IEBAIGludCBjbGlfYXJnX3BhcnNlX3VpbnQzMihzdHJ1Y3QgY2xpX25vZGUgKmFyZywgY29uc3QgY2hhciAqdmFsLCB2b2lkICpyZXN1bHQpCisgaW50IGNsaV9hcmdfcGFyc2VfdWludDE2KHN0cnVjdCBjbGlfbm9kZSAqYXJnLCBjb25zdCBjaGFyICp2YWwsIHZvaWQgKnJlc3VsdCkKKyB7CisgCXVpbnQxNl90ICppbnR2YWwgPSByZXN1bHQ7CistCXVuc2lnbmVkIGxvbmcgdG1wOworKwlsb25nIHRtcDsKKyAJY2hhciAqZW5kcDsKKyAJaW50IHJldCA9IDA7CisgCitAQCAtNTkwLDcgKzU5MCw3IEBAIGludCBjbGlfYXJnX3BhcnNlX3VpbnQxNihzdHJ1Y3QgY2xpX25vZGUgKmFyZywgY29uc3QgY2hhciAqdmFsLCB2b2lkICpyZXN1bHQpCisgaW50IGNsaV9hcmdfcGFyc2VfdWludDgoc3RydWN0IGNsaV9ub2RlICphcmcsIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqcmVzdWx0KQorIHsKKyAJdWludDhfdCAqaW50dmFsID0gcmVzdWx0OworLQl1bnNpZ25lZCBsb25nIHRtcDsKKysJbG9uZyB0bXA7CisgCWNoYXIgKmVuZHA7CisgCWludCByZXQgPSAwOworIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMy1tdXNsLWZpeGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMy1tdXNsLWZpeGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZDUyNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAzLW11c2wtZml4ZXMucGF0Y2gKQEAgLTAsMCArMSwyODMgQEAKK0Zyb20gZWIzNDUwNDdkZWNiYTY2NWUzZjM5OTA4MzM2YTgzZjAzOWUxZWNlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE5IEp1bCAyMDE3IDE2OjAxOjMyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBtdXNsIGZpeGVzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjbGkvY2xpX3JlYWRsaW5lLmMgfCAgIDcgKy0KKyBpcHBvb2xfYXBpLmMgICAgICAgfCAgIDkgKystCisgbmV0L3BwcF9kZWZzLmggICAgIHwgMTk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgdXNsL3VzbC5oICAgICAgICAgIHwgICA0ICsrCisgNCBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbmV0L3BwcF9kZWZzLmgKKworZGlmZiAtLWdpdCBhL2NsaS9jbGlfcmVhZGxpbmUuYyBiL2NsaS9jbGlfcmVhZGxpbmUuYworaW5kZXggMjgxMmU2ZS4uNTQyOTM1YyAxMDA2NDQKKy0tLSBhL2NsaS9jbGlfcmVhZGxpbmUuYworKysrIGIvY2xpL2NsaV9yZWFkbGluZS5jCitAQCAtMTcsMTMgKzE3LDE0IEBACisgICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKysjZGVmaW5lIF9HTlVfU09VUkNFCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0jaW5jbHVkZSA8c3lzL2Vycm5vLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorIAorICNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgorQEAgLTYzMCw3ICs2MzEsNyBAQCBzdGF0aWMgdm9pZCBjbGlfcmxfdW5pbnN0YWxsX3NpZ25hbF9oYW5kbGVycyh2b2lkKQorIAorIHN0YXRpYyBpbnQgY2xpX3JsX2luc3RhbGxfc2lnbmFsX2hhbmRsZXJzKHZvaWQpCisgeworLQlfX3NpZ2hhbmRsZXJfdCBoYW5kbGVyOworKwlzaWdoYW5kbGVyX3QgaGFuZGxlcjsKKyAKKyAJcmxfY2F0Y2hfc2lnbmFscyA9IDA7CisgCXJsX2NsZWFyX3NpZ25hbHMoKTsKK2RpZmYgLS1naXQgYS9pcHBvb2xfYXBpLmMgYi9pcHBvb2xfYXBpLmMKK2luZGV4IDJjMTBjNDcuLmQxMTI3YTkgMTAwNjQ0CistLS0gYS9pcHBvb2xfYXBpLmMKKysrKyBiL2lwcG9vbF9hcGkuYworQEAgLTE4MSwxMCArMTgxLDEzIEBAIGludCBpcHBvb2xfYXBpX3JwY19jaGVja19yZXF1ZXN0KFNWQ1hQUlQgKnhwcnQpCisgCSAqIG5vbi1sb29wYmFjayBpbnRlcmZhY2UsIHJlamVjdCB0aGUgcmVxdWVzdC4KKyAJICovCisgCWlmICgoIWlwcG9vbF9vcHRfcmVtb3RlX3JwYykgJiYKKy0JICAgICgoeHBydC0+eHBfcmFkZHIuc2luX2FkZHIuc19hZGRyICE9IGh0b25sKElOQUREUl9MT09QQkFDSykpICYmCistCSAgICAgKHhwcnQtPnhwX3JhZGRyLnNpbl9hZGRyLnNfYWRkciAhPSBodG9ubChJTkFERFJfQU5ZKSkpKSB7CisrCSAgICAoKHhwcnQtPnhwX3JhZGRyLnNpbjZfYWRkci5zNl9hZGRyICE9IGh0b25sKElOQUREUl9MT09QQkFDSykpICYmCisrCSAgICAgKHhwcnQtPnhwX3JhZGRyLnNpbjZfYWRkci5zNl9hZGRyICE9IGh0b25sKElOQUREUl9BTlkpKSkpIHsKKysJCWNoYXIgc3RyYWRkcltJTkVUNl9BRERSU1RSTEVOXTsKKysJCWluZXRfbnRvcChBRl9JTkVUNiwgJnhwcnQtPnhwX3JhZGRyLnNpbjZfYWRkciwgc3RyYWRkciwgc2l6ZW9mKHN0cmFkZHIpKTsKKysKKyAJCWlmIChpcHBvb2xfb3B0X2RlYnVnKSB7CistCQkJaXBwb29sX2xvZyhMT0dfRVJSLCAiUmVqZWN0aW5nIFJQQyByZXF1ZXN0IGZyb20gJXMiLCBpbmV0X250b2EoeHBydC0+eHBfcmFkZHIuc2luX2FkZHIpKTsKKysJCQlpcHBvb2xfbG9nKExPR19FUlIsICJSZWplY3RpbmcgUlBDIHJlcXVlc3QgZnJvbSAlcyIsIHN0cmFkZHIpOworIAkJfQorIAkJc3ZjZXJyX2F1dGgoeHBydCwgQVVUSF9UT09XRUFLKTsKKyAJCXJldHVybiAtRVBFUk07CitkaWZmIC0tZ2l0IGEvbmV0L3BwcF9kZWZzLmggYi9uZXQvcHBwX2RlZnMuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmIwNmVkYTUKKy0tLSAvZGV2L251bGwKKysrKyBiL25ldC9wcHBfZGVmcy5oCitAQCAtMCwwICsxLDE5NCBAQAorKy8qCSRJZDogcHBwX2RlZnMuaCx2IDEuMTcgMjAwMi8xMi8wNiAwOTo0OToxNSBwYXVsdXMgRXhwICQJKi8KKysKKysvKgorKyAqIHBwcF9kZWZzLmggLSBQUFAgZGVmaW5pdGlvbnMuCisrICoKKysgKiBDb3B5cmlnaHQgKGMpIDE5ODQgUGF1bCBNYWNrZXJyYXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBUaGUgbmFtZShzKSBvZiB0aGUgYXV0aG9ycyBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKysgKgorKyAqIDQuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBQYXVsIE1hY2tlcnJhcworKyAqICAgICA8cGF1bHVzQHNhbWJhLm9yZz4iLgorKyAqCisrICogVEhFIEFVVEhPUlMgT0YgVEhJUyBTT0ZUV0FSRSBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTworKyAqIFRISVMgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQorKyAqIEFORCBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorKyAqIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUworKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTgorKyAqIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcKKysgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKysgKi8KKysKKysjaWZuZGVmIF9QUFBfREVGU19IXworKyNkZWZpbmUgX1BQUF9ERUZTX0hfCisrCisrLyoKKysgKiBUaGUgYmFzaWMgUFBQIGZyYW1lLgorKyAqLworKyNkZWZpbmUgUFBQX0hEUkxFTgk0CS8qIG9jdGV0cyBmb3Igc3RhbmRhcmQgcHBwIGhlYWRlciAqLworKyNkZWZpbmUgUFBQX0ZDU0xFTgkyCS8qIG9jdGV0cyBmb3IgRkNTICovCisrCisrLyoKKysgKiBQYWNrZXQgc2l6ZXMKKysgKgorKyAqIE5vdGUgLSBsY3Agc2hvdWxkbid0IGJlIGFsbG93ZWQgdG8gbmVnb3RpYXRlIHN0dWZmIG91dHNpZGUgdGhlc2UKKysgKgkgIGxpbWl0cy4gIFNlZSBsY3AuaCBpbiB0aGUgcHBwZCBkaXJlY3RvcnkuCisrICogKFhYWCAtIHRoZXNlIGNvbnN0YW50cyBzaG91bGQgc2ltcGx5IGJlIHNoYXJlZCBieSBsY3AuYyBpbnN0ZWFkCisrICoJICBvZiBsaXZpbmcgaW4gbGNwLmgpCisrICovCisrI2RlZmluZQlQUFBfTVRVCQkxNTAwCS8qIERlZmF1bHQgTVRVIChzaXplIG9mIEluZm8gZmllbGQpICovCisrI2RlZmluZSBQUFBfTUFYTVRVCTY1NTM1IC0gKFBQUF9IRFJMRU4gKyBQUFBfRkNTTEVOKQorKyNkZWZpbmUgUFBQX01JTk1UVQk2NAorKyNkZWZpbmUgUFBQX01SVQkJMTUwMAkvKiBkZWZhdWx0IE1SVSA9IG1heCBsZW5ndGggb2YgaW5mbyBmaWVsZCAqLworKyNkZWZpbmUgUFBQX01BWE1SVQk2NTAwMAkvKiBMYXJnZXN0IE1SVSB3ZSBhbGxvdyAqLworKyNkZWZpbmUgUFBQX01JTk1SVQkxMjgKKysKKysjZGVmaW5lIFBQUF9BRERSRVNTKHApCSgoKHVfY2hhciAqKShwKSlbMF0pCisrI2RlZmluZSBQUFBfQ09OVFJPTChwKQkoKCh1X2NoYXIgKikocCkpWzFdKQorKyNkZWZpbmUgUFBQX1BST1RPQ09MKHApCSgoKCh1X2NoYXIgKikocCkpWzJdIDw8IDgpICsgKCh1X2NoYXIgKikocCkpWzNdKQorKworKy8qCisrICogU2lnbmlmaWNhbnQgb2N0ZXQgdmFsdWVzLgorKyAqLworKyNkZWZpbmUJUFBQX0FMTFNUQVRJT05TCTB4ZmYJLyogQWxsLVN0YXRpb25zIGJyb2FkY2FzdCBhZGRyZXNzICovCisrI2RlZmluZQlQUFBfVUkJCTB4MDMJLyogVW5udW1iZXJlZCBJbmZvcm1hdGlvbiAqLworKyNkZWZpbmUJUFBQX0ZMQUcJMHg3ZQkvKiBGbGFnIFNlcXVlbmNlICovCisrI2RlZmluZQlQUFBfRVNDQVBFCTB4N2QJLyogQXN5bmNocm9ub3VzIENvbnRyb2wgRXNjYXBlICovCisrI2RlZmluZQlQUFBfVFJBTlMJMHgyMAkvKiBBc3luY2hyb25vdXMgdHJhbnNwYXJlbmN5IG1vZGlmaWVyICovCisrCisrLyoKKysgKiBQcm90b2NvbCBmaWVsZCB2YWx1ZXMuCisrICovCisrI2RlZmluZSBQUFBfSVAJCTB4MjEJLyogSW50ZXJuZXQgUHJvdG9jb2wgKi8KKysjZGVmaW5lIFBQUF9BVAkJMHgyOQkvKiBBcHBsZVRhbGsgUHJvdG9jb2wgKi8KKysjZGVmaW5lIFBQUF9JUFgJCTB4MmIJLyogSVBYIHByb3RvY29sICovCisrI2RlZmluZQlQUFBfVkpDX0NPTVAJMHgyZAkvKiBWSiBjb21wcmVzc2VkIFRDUCAqLworKyNkZWZpbmUJUFBQX1ZKQ19VTkNPTVAJMHgyZgkvKiBWSiB1bmNvbXByZXNzZWQgVENQICovCisrI2RlZmluZSBQUFBfSVBWNgkweDU3CS8qIEludGVybmV0IFByb3RvY29sIFZlcnNpb24gNiAqLworKyNkZWZpbmUgUFBQX0NPTVAJMHhmZAkvKiBjb21wcmVzc2VkIHBhY2tldCAqLworKyNkZWZpbmUgUFBQX0lQQ1AJMHg4MDIxCS8qIElQIENvbnRyb2wgUHJvdG9jb2wgKi8KKysjZGVmaW5lIFBQUF9BVENQCTB4ODAyOQkvKiBBcHBsZVRhbGsgQ29udHJvbCBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0lQWENQCTB4ODAyYgkvKiBJUFggQ29udHJvbCBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0lQVjZDUAkweDgwNTcJLyogSVB2NiBDb250cm9sIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfQ0NQCQkweDgwZmQJLyogQ29tcHJlc3Npb24gQ29udHJvbCBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0VDUAkJMHg4MDUzCS8qIEVuY3J5cHRpb24gQ29udHJvbCBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0xDUAkJMHhjMDIxCS8qIExpbmsgQ29udHJvbCBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX1BBUAkJMHhjMDIzCS8qIFBhc3N3b3JkIEF1dGhlbnRpY2F0aW9uIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfTFFSCQkweGMwMjUJLyogTGluayBRdWFsaXR5IFJlcG9ydCBwcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0NIQVAJMHhjMjIzCS8qIENyeXB0b2dyYXBoaWMgSGFuZHNoYWtlIEF1dGguIFByb3RvY29sICovCisrI2RlZmluZSBQUFBfQ0JDUAkweGMwMjkJLyogQ2FsbGJhY2sgQ29udHJvbCBQcm90b2NvbCAqLworKyNkZWZpbmUgUFBQX0VBUAkJMHhjMjI3CS8qIEV4dGVuc2libGUgQXV0aGVudGljYXRpb24gUHJvdG9jb2wgKi8KKysKKysvKgorKyAqIFZhbHVlcyBmb3IgRkNTIGNhbGN1bGF0aW9ucy4KKysgKi8KKysjZGVmaW5lIFBQUF9JTklURkNTCTB4ZmZmZgkvKiBJbml0aWFsIEZDUyB2YWx1ZSAqLworKyNkZWZpbmUgUFBQX0dPT0RGQ1MJMHhmMGI4CS8qIEdvb2QgZmluYWwgRkNTIHZhbHVlICovCisrI2RlZmluZSBQUFBfRkNTKGZjcywgYykJKCgoZmNzKSA+PiA4KSBeIGZjc3RhYlsoKGZjcykgXiAoYykpICYgMHhmZl0pCisrCisrLyoKKysgKiBBIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlLgorKyAqLworKworKyNpZiAhZGVmaW5lZChfX0JJVF9UWVBFU19ERUZJTkVEX18pICYmICFkZWZpbmVkKF9CSVRZUEVTKSBcCisrICYmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoTlNfVEFSR0VUIDwgNDApCisrI2lmZGVmCVVJTlQzMl9UCisrdHlwZWRlZiBVSU5UMzJfVAl1X2ludDMyX3Q7CisrI2Vsc2UKKyt0eXBlZGVmIHVuc2lnbmVkIGludAl1X2ludDMyX3Q7CisrdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgdV9pbnQxNl90OworKyNlbmRpZgorKyNlbmRpZgorKworKy8qCisrICogRXh0ZW5kZWQgYXN5bmNtYXAgLSBhbGxvd3MgYW55IGNoYXJhY3RlciB0byBiZSBlc2NhcGVkLgorKyAqLworK3R5cGVkZWYgdV9pbnQzMl90CWV4dF9hY2NtWzhdOworKworKy8qCisrICogV2hhdCB0byBkbyB3aXRoIG5ldHdvcmsgcHJvdG9jb2wgKE5QKSBwYWNrZXRzLgorKyAqLworK2VudW0gTlBtb2RlIHsKKysgICAgTlBNT0RFX1BBU1MsCQkvKiBwYXNzIHRoZSBwYWNrZXQgdGhyb3VnaCAqLworKyAgICBOUE1PREVfRFJPUCwJCS8qIHNpbGVudGx5IGRyb3AgdGhlIHBhY2tldCAqLworKyAgICBOUE1PREVfRVJST1IsCQkvKiByZXR1cm4gYW4gZXJyb3IgKi8KKysgICAgTlBNT0RFX1FVRVVFCQkvKiBzYXZlIGl0IHVwIGZvciBsYXRlci4gKi8KKyt9OworKworKy8qCisrICogU3RhdGlzdGljcy4KKysgKi8KKytzdHJ1Y3QgcHBwc3RhdAl7CisrICAgIHVuc2lnbmVkIGludCBwcHBfaWJ5dGVzOwkvKiBieXRlcyByZWNlaXZlZCAqLworKyAgICB1bnNpZ25lZCBpbnQgcHBwX2lwYWNrZXRzOwkvKiBwYWNrZXRzIHJlY2VpdmVkICovCisrICAgIHVuc2lnbmVkIGludCBwcHBfaWVycm9yczsJLyogcmVjZWl2ZSBlcnJvcnMgKi8KKysgICAgdW5zaWduZWQgaW50IHBwcF9vYnl0ZXM7CS8qIGJ5dGVzIHNlbnQgKi8KKysgICAgdW5zaWduZWQgaW50IHBwcF9vcGFja2V0czsJLyogcGFja2V0cyBzZW50ICovCisrICAgIHVuc2lnbmVkIGludCBwcHBfb2Vycm9yczsJLyogdHJhbnNtaXQgZXJyb3JzICovCisrfTsKKysKKytzdHJ1Y3QgdmpzdGF0IHsKKysgICAgdW5zaWduZWQgaW50IHZqc19wYWNrZXRzOwkvKiBvdXRib3VuZCBwYWNrZXRzICovCisrICAgIHVuc2lnbmVkIGludCB2anNfY29tcHJlc3NlZDsgLyogb3V0Ym91bmQgY29tcHJlc3NlZCBwYWNrZXRzICovCisrICAgIHVuc2lnbmVkIGludCB2anNfc2VhcmNoZXM7CS8qIHNlYXJjaGVzIGZvciBjb25uZWN0aW9uIHN0YXRlICovCisrICAgIHVuc2lnbmVkIGludCB2anNfbWlzc2VzOwkvKiB0aW1lcyBjb3VsZG4ndCBmaW5kIGNvbm4uIHN0YXRlICovCisrICAgIHVuc2lnbmVkIGludCB2anNfdW5jb21wcmVzc2VkaW47IC8qIGluYm91bmQgdW5jb21wcmVzc2VkIHBhY2tldHMgKi8KKysgICAgdW5zaWduZWQgaW50IHZqc19jb21wcmVzc2VkaW47IC8qIGluYm91bmQgY29tcHJlc3NlZCBwYWNrZXRzICovCisrICAgIHVuc2lnbmVkIGludCB2anNfZXJyb3JpbjsJLyogaW5ib3VuZCB1bmtub3duIHR5cGUgcGFja2V0cyAqLworKyAgICB1bnNpZ25lZCBpbnQgdmpzX3Rvc3NlZDsJLyogaW5ib3VuZCBwYWNrZXRzIHRvc3NlZCBiZWNhdXNlIG9mIGVycm9yICovCisrfTsKKysKKytzdHJ1Y3QgcHBwX3N0YXRzIHsKKysgICAgc3RydWN0IHBwcHN0YXQgcDsJCS8qIGJhc2ljIFBQUCBzdGF0aXN0aWNzICovCisrICAgIHN0cnVjdCB2anN0YXQgdmo7CQkvKiBWSiBoZWFkZXIgY29tcHJlc3Npb24gc3RhdGlzdGljcyAqLworK307CisrCisrc3RydWN0IGNvbXBzdGF0IHsKKysgICAgdW5zaWduZWQgaW50IHVuY19ieXRlczsJLyogdG90YWwgdW5jb21wcmVzc2VkIGJ5dGVzICovCisrICAgIHVuc2lnbmVkIGludCB1bmNfcGFja2V0czsJLyogdG90YWwgdW5jb21wcmVzc2VkIHBhY2tldHMgKi8KKysgICAgdW5zaWduZWQgaW50IGNvbXBfYnl0ZXM7CS8qIGNvbXByZXNzZWQgYnl0ZXMgKi8KKysgICAgdW5zaWduZWQgaW50IGNvbXBfcGFja2V0czsJLyogY29tcHJlc3NlZCBwYWNrZXRzICovCisrICAgIHVuc2lnbmVkIGludCBpbmNfYnl0ZXM7CS8qIGluY29tcHJlc3NpYmxlIGJ5dGVzICovCisrICAgIHVuc2lnbmVkIGludCBpbmNfcGFja2V0czsJLyogaW5jb21wcmVzc2libGUgcGFja2V0cyAqLworKyAgICB1bnNpZ25lZCBpbnQgcmF0aW87CQkvKiByZWNlbnQgY29tcHJlc3Npb24gcmF0aW8gPDwgOCAqLworK307CisrCisrc3RydWN0IHBwcF9jb21wX3N0YXRzIHsKKysgICAgc3RydWN0IGNvbXBzdGF0IGM7CQkvKiBwYWNrZXQgY29tcHJlc3Npb24gc3RhdGlzdGljcyAqLworKyAgICBzdHJ1Y3QgY29tcHN0YXQgZDsJCS8qIHBhY2tldCBkZWNvbXByZXNzaW9uIHN0YXRpc3RpY3MgKi8KKyt9OworKworKy8qCisrICogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgcmVjb3JkcyB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlCisrICogdGhlIGxhc3QgTlAgcGFja2V0IHdhcyBzZW50IG9yIHJlY2VpdmVkLgorKyAqLworK3N0cnVjdCBwcHBfaWRsZSB7CisrICAgIHRpbWVfdCB4bWl0X2lkbGU7CQkvKiB0aW1lIHNpbmNlIGxhc3QgTlAgcGFja2V0IHNlbnQgKi8KKysgICAgdGltZV90IHJlY3ZfaWRsZTsJCS8qIHRpbWUgc2luY2UgbGFzdCBOUCBwYWNrZXQgcmVjZWl2ZWQgKi8KKyt9OworKworKyNpZm5kZWYgX19QCisrI2lmZGVmIF9fU1REQ19fCisrI2RlZmluZSBfX1AoeCkJeAorKyNlbHNlCisrI2RlZmluZSBfX1AoeCkJKCkKKysjZW5kaWYKKysjZW5kaWYKKysKKysjZW5kaWYgLyogX1BQUF9ERUZTX0hfICovCitkaWZmIC0tZ2l0IGEvdXNsL3VzbC5oIGIvdXNsL3VzbC5oCitpbmRleCBjZGMxNmRiLi44OGQyNzE0IDEwMDY0NAorLS0tIGEvdXNsL3VzbC5oCisrKysgYi91c2wvdXNsLmgKK0BAIC0zOCw2ICszOCwxMCBAQAorICNpbmNsdWRlICJ1c2xfZnNtLmgiCisgI2luY2x1ZGUgInVzbF9saXN0LmgiCisgCisrI2lmbmRlZiBXQUlUX0FOWQorKyNkZWZpbmUgV0FJVF9BTlkgKC0xKQorKyNlbmRpZgorKworICNkZWZpbmUgVVNMX1ZFUlNJT04JIjAuNiIKKyAKKyAjaWZkZWYgREVCVUcKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2Fsd2F5c19zeXNsb2cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9hbHdheXNfc3lzbG9nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NzUyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9hbHdheXNfc3lzbG9nLnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK2lwcG9vbDogYWx3YXlzIGxvZyB0byBzeXNsb2cKKworRXZlbiB3aGVuIHJ1bm5pbmcgaW4gdGhlIGZvcmVncm91bmQsIHNlbmQgbG9nIG1lc3NhZ2VzIHRvIHN5c2xvZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKKy0tLSBhL2lwcG9vbF9tYWluLmMKKysrKyBiL2lwcG9vbF9tYWluLmMKK0BAIC0yNTEsOSArMjUxLDggQEAgdm9pZCBpcHBvb2xfdmxvZyhpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKgorIAlpZiAoaXBwb29sX29wdF9ub2RhZW1vbikgeworIAkJdnByaW50ZihmbXQsIGFwKTsKKyAJCXByaW50ZigiXG4iKTsKKy0JfSBlbHNlIHsKKy0JCXZzeXNsb2cobGV2ZWwsIGZtdCwgYXApOworIAl9CisrCXZzeXNsb2cobGV2ZWwsIGZtdCwgYXApOworIAlETUFMTE9DX1ZNRVNTQUdFKGZtdCwgYXApOworIH0KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvaXBwb29sLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5MTdmYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTkgQEAKK1tVbml0XQorRGVzY3JpcHRpb249aXAgYWRkcmVzcyBwb29sIGFsbG9jYXRvcgorUmVxdWlyZXM9cnBjYmluZC5zZXJ2aWNlCitBZnRlcj1ycGNiaW5kLnNlcnZpY2UKKworW1NlcnZpY2VdCitUeXBlPXNpbXBsZQorIyBTdGFydCBpcHBvb2xkIGluIHRoZSBmb3JlZ3JvdW5kIQorRXhlY1N0YXJ0PUBTQklORElSQC9pcHBvb2xkIC1mCisjIE5vcm1hbCBvdXRwdXQgd2lsbCBnbyB0byBzeXNsb2csIHNvIHN1cHByZXNzIHN0ZG91dC4KK1N0YW5kYXJkT3V0cHV0PW51bGwKK1N0YW5kYXJkRXJyb3I9c3lzbG9nCisjIEV4ZWNTdG9wIGlzIG5vdCBuZWVkZWQuIHN5c3RlbWQgd2lsbCBzZW5kIFNJR1RFUk0KKyMgYW5kIGlwcG9vbGQgd2lsbCBleGl0IHN0YXR1cyAxLgorU3VjY2Vzc0V4aXRTdGF0dXM9MQorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbF9pbml0LmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9pcHBvb2xfaW5pdC5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YTc2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9pcHBvb2xfaW5pdC5kLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0ZpeCBzdGFydCBlcnJvciBpZiBsc2IgaW5pdC1mdW5jdGlvbnMgZG9lc24ndCBleGlzdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9kZWJpYW4vaW5pdC5kIGIvZGViaWFuL2luaXQuZAoraW5kZXggMzYzYmE4OS4uMDMyN2ZlYyAxMDA2NDQKKy0tLSBhL2RlYmlhbi9pbml0LmQKKysrKyBiL2RlYmlhbi9pbml0LmQKK0BAIC0xMCw2ICsxMCw5IEBACisgIyBEZXNjcmlwdGlvbjogICAgICAgU3RhcnQgaXBwb29sIGRhZW1vbgorICMjIyBFTkQgSU5JVCBJTkZPCisgCisrIyBTb3VyY2UgZnVuY3Rpb24gbGlicmFyeS4KKysuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworKworIERBRU1PTj0vdXNyL3NiaW4vaXBwb29sZAorIE5BTUU9aXBwb29sZAorIE1PRFVMRT1wcHBvbDJ0cAorQEAgLTE4LDcgKzIxLDIzIEBAIE1PRFVMRT1wcHBvbDJ0cAorIHRlc3QgLXggJERBRU1PTiB8fCBleGl0IDAKKyAKKyAjIEdldCBsc2IgZnVuY3Rpb25zCistLiAvbGliL2xzYi9pbml0LWZ1bmN0aW9ucworK2lmIFsgLWYgL2xpYi9sc2IvaW5pdC1mdW5jdGlvbnMgXQorK3RoZW4KKysgIC4gL2xpYi9sc2IvaW5pdC1mdW5jdGlvbnMKKytlbHNlCisrICBsb2dfYmVnaW5fbXNnKCkgeworKyAgICBlY2hvIC1uICQqCisrICB9CisrCisrICBsb2dfZW5kX21zZygpIHsKKysgICAgaWYgWyAkMSAtZXEgMCBdOyB0aGVuCisrICAgICAgZWNobyAiZG9uZSIKKysgICAgZWxzZQorKyAgICAgIGVjaG8gImZhaWxlZCIKKysgICAgZmkKKysgIH0KKytmaQorKworIC4gL2V0Yy9kZWZhdWx0L3JjUworIAorIGNhc2UgIiQxIiBpbgorQEAgLTM1LDYgKzU0LDEwIEBAIGNhc2UgIiQxIiBpbgorICAgICBmaQorICAgICBsb2dfZW5kX21zZyAkPworICAgICA7OworKyAgc3RhdHVzKQorKyAgICBzdGF0dXMgL3Vzci9zYmluL2lwcG9vbGQ7CisrICAgIGV4aXQgJD8KKysgICAgOzsKKyAgIHJlc3RhcnQpCisgICAgICQwIHN0b3AKKyAgICAgc2xlZXAgMQorQEAgLTQ2LDcgKzY5LDcgQEAgY2FzZSAiJDEiIGluCisgICAgIGxvZ19lbmRfbXNnICQ/CisgICAgIDs7CisgICAqKQorLSAgICBsb2dfc3VjY2Vzc19tc2cgIlVzYWdlOiAvZXRjL2luaXQuZC9pcHBvb2xkIHtzdGFydHxzdG9wfHJlc3RhcnR8cmVsb2FkfGZvcmNlLXJlbG9hZH0iCisrICAgIGxvZ19zdWNjZXNzX21zZyAiVXNhZ2U6IC9ldGMvaW5pdC5kL2lwcG9vbGQge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGZvcmNlLXJlbG9hZH0iCisgICAgIGV4aXQgMQorIGVzYWMKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbF9wYXJhbGxlbF9tYWtlX2FuZF9waWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9pcHBvb2xfcGFyYWxsZWxfbWFrZV9hbmRfcGljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYmQ5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9pcHBvb2xfcGFyYWxsZWxfbWFrZV9hbmRfcGljLnBhdGNoCkBAIC0wLDAgKzEsODkgQEAKKzEpYWRkIC1mUElDIGZvciAkKElQUE9PTF9SUENfU1RFTSlfeGRyLm8sICQoSVBQT09MX1JQQ19TVEVNKV9jbGllbnQubworMilhZGQgc3ViIHRhcmdldCBmb3Igc3ViZGlycy1hbGwsIGFuZCB0aG9zZSBkZXBlbmRlbmNpZXMgYmVsb3cKKyAgcHBwZCBwbHVnaW4gZGlyZWN0b3J5IGJ1aWxkIGRlcGVuZHMgb24gJChJUFBPT0xfUlBDX1NURU0pX3hkci5vIAorJChJUFBPT0xfUlBDX1NURU0pX2NsaWVudC5vIGlwcG9vbF9ycGMuaAorCisgIGlwcG9vbGQgZGVwZW5kcyBvbiBsaWJ1c2wKKyAgaXBwb29sY29uZmlnIGRlcGVuZHMgb24gbGliY2xpCisKKyAgJChJUFBPT0xfUlBDX1NURU0pX3hkci5vLCAkKElQUE9PTF9SUENfU1RFTSlfY2xpZW50Lm8gCiskKElQUE9PTF9SUENfU1RFTSlfc2VydmVyLm8gKi5vIGluIG1haW4gZGlyZWN0b3J5IGRlcGVuZHMgb24gaXBwb29sX3JwYy5oCithcyB0aG9zZSBhbGwgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbmNsdWRlIGlwcG9vbF9ycGMuaCB3aGljaCBpcyAKK2R5bmFtaWNhbGx5IGdlbmVyYXRlZCBieSBycGNnZW4KKwordG8gbWFrZSBwYXJhbGxlbCBtYWtlIHdvcmtpbmcuCiszKWluY2x1ZGUgZGVwZW5kZW5jeSBmaWxlcyBmb3IgcHBwZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFlhbyBaaGFvIDx5YW8uemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNzNhYTcyZi4uNGY3YWYxZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTEwNiwxNCArMTA2LDE0IEBAIGFsbDoJCQlnZW5lcmF0ZWQtZmlsZXMgJChJUFBPT0xfUlBDX1NURU0pX3hkci5vICQoSVBQT09MX1JQQ19TVEVNKV9jbGllbnQubyBcCisgCQkJc3ViZGlycy1hbGwgJChQUk9HUy5zYmluKSAkKFBST0dTLmJpbikKKyAKKyAjIENvbXBpbGUgd2l0aG91dCAtV2FsbCBiZWNhdXNlIHJwY2dlbi1nZW5lcmF0ZWQgY29kZSBpcyBmdWxsIG9mIHdhcm5pbmdzCistJChJUFBPT0xfUlBDX1NURU0pX3hkci5vOgkkKElQUE9PTF9SUENfU1RFTSlfeGRyLmMKKy0JCQkkKENDKSAtSS4gLU1NRCAtZyAtYyAtdyAkKENQUEZMQUdTKSAkKENGTEFHUy5vcHRpbWl6ZSkgJDwKKyskKElQUE9PTF9SUENfU1RFTSlfeGRyLm86CSQoSVBQT09MX1JQQ19TVEVNKV94ZHIuYyAkKElQUE9PTF9SUENfU1RFTSkuaAorKwkJCSQoQ0MpIC1JLiAtTU1EIC1nIC1jIC13ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTLm9wdGltaXplKSAkPCAtZlBJQworIAorLSQoSVBQT09MX1JQQ19TVEVNKV9jbGllbnQubzoJJChJUFBPT0xfUlBDX1NURU0pX2NsaWVudC5jCistCQkJJChDQykgLUkuIC1NTUQgLWcgLWMgLXcgJChDUFBGTEFHUykgJChDRkxBR1Mub3B0aW1pemUpICQ8CisrJChJUFBPT0xfUlBDX1NURU0pX2NsaWVudC5vOgkkKElQUE9PTF9SUENfU1RFTSlfY2xpZW50LmMgJChJUFBPT0xfUlBDX1NURU0pLmgKKysJCQkkKENDKSAtSS4gLU1NRCAtZyAtYyAtdyAkKENQUEZMQUdTKSAkKENGTEFHUy5vcHRpbWl6ZSkgJDwgLWZQSUMKKyAKKy0kKElQUE9PTF9SUENfU1RFTSlfc2VydmVyLm86CSQoSVBQT09MX1JQQ19TVEVNKV9zZXJ2ZXIuYworLQkJCSQoQ0MpIC1JLiAtTU1EIC1nIC1jIC13ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTLm9wdGltaXplKSAkPAorKyQoSVBQT09MX1JQQ19TVEVNKV9zZXJ2ZXIubzoJJChJUFBPT0xfUlBDX1NURU0pX3NlcnZlci5jICQoSVBQT09MX1JQQ19TVEVNKS5oCisrCQkJJChDQykgLUkuIC1NTUQgLWcgLWMgLXcgJChDUFBGTEFHUykgJChDRkxBR1Mub3B0aW1pemUpICQ8IC1mUElDCisgCisgJChJUFBPT0xfUlBDX1NURU0pX3hkci5jOgkkKElQUE9PTF9SUENfU1RFTSkueAorIAkJCS0kKFJNKSAkQAorQEAgLTEzNiw4ICsxMzYsMTIgQEAgJChJUFBPT0xfUlBDX1NURU0pLmg6CSQoSVBQT09MX1JQQ19TVEVNKS54CisgCisgZ2VuZXJhdGVkLWZpbGVzOgkkKFJQQ19GSUxFUykKKyAKKy1zdWJkaXJzLWFsbDoKKy0JCQlAZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAtQyAkJGQgJChNRkxBR1MpIEVYVFJBX0NGTEFHUz0iJChDUFBGTEFHUykiIGFsbDsgaWYgWyAkJD8gLW5lIDAgXTsgdGhlbiBleGl0IDE7IGZpOyBkb25lCisrc3ViZGlycy1hbGw6CSQocGF0c3Vic3QgJSwlLWRpciwgJChTVUJESVJTKSkKKysKKytwcHBkLWRpcjogJChJUFBPT0xfUlBDX1NURU0pX3hkci5vICQoSVBQT09MX1JQQ19TVEVNKV9jbGllbnQubyAkKElQUE9PTF9SUENfU1RFTSkuaAorKworKyQocGF0c3Vic3QgJSwlLWRpciwkKFNVQkRJUlMpKToKKysJCQlAZm9yIGQgaW4gJChwYXRzdWJzdCAlLWRpciwlLCRAKTsgZG8gJChNQUtFKSAtQyAkJGQgJChNRkxBR1MpIEVYVFJBX0NGTEFHUz0iJChDUFBGTEFHUykiIGFsbDsgaWYgWyAkJD8gLW5lIDAgXTsgdGhlbiBleGl0IDE7IGZpOyBkb25lCisgCisgY2xlYW46CisgCQkJQGZvciBkIGluICQoU1VCRElSUyk7IGRvICQoTUFLRSkgLUMgJCRkICQoTUZMQUdTKSAkQDsgaWYgWyAkJD8gLW5lIDAgXTsgdGhlbiBleGl0IDE7IGZpOyBkb25lCitAQCAtMTUxLDEzICsxNTUsMTMgQEAgVEFHUzoKKyAJCQlAZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAtQyAkJGQgJChNRkxBR1MpICRAOyBkb25lCisgCQkJZXRhZ3MgLXQgJCh3aWxkY2FyZCAqLmMpICQod2lsZGNhcmQgKi5oKQorIAorLWlwcG9vbGQ6CQkkKElQUE9PTERfU1JDUy5vKQorLQkJCSQoQ0MpIC1vICRAICReICQoTERGTEFHUy5pcHBvb2xkKQorK2lwcG9vbGQ6CQkkKElQUE9PTERfU1JDUy5vKSB1c2wtZGlyCisrCQkJJChDQykgLW8gJEAgJChJUFBPT0xEX1NSQ1MubykgJChMREZMQUdTLmlwcG9vbGQpCisgCistaXBwb29sY29uZmlnOgkJJChJUFBPT0xDT05GSUdfU1JDUy5vKQorLQkJCSQoQ0MpIC1vICRAICReICQoTERGTEFHUy5pcHBvb2xjb25maWcpCisraXBwb29sY29uZmlnOgkJJChJUFBPT0xDT05GSUdfU1JDUy5vKSBjbGktZGlyCisrCQkJJChDQykgLW8gJEAgJChJUFBPT0xDT05GSUdfU1JDUy5vKSAkKExERkxBR1MuaXBwb29sY29uZmlnKQorIAorLSUubzoJJS5jCisrJS5vOgklLmMgJChJUFBPT0xfUlBDX1NURU0pLmgKKyAJCQkkKENDKSAtYyAkKENGTEFHUykgJDwgLW8gJEAKKyAKKyBpbnN0YWxsOgkJYWxsCitkaWZmIC0tZ2l0IGEvcHBwZC9NYWtlZmlsZSBiL3BwcGQvTWFrZWZpbGUKK2luZGV4IDc4ZDliMzMuLjEwNmRlY2EgMTAwNjQ0CistLS0gYS9wcHBkL01ha2VmaWxlCisrKysgYi9wcHBkL01ha2VmaWxlCitAQCAtMjQsMyArMjQsNSBAQCBpbnN0YWxsOiBpcHBvb2wuc28KKyAKKyBjbGVhbjoKKyAJLXJtIC1yZiAqLm8gKi5zbworKworK2luY2x1ZGUgJCh3aWxkY2FyZCAqLmQgL2Rldi9udWxsKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvaXBwb29sX3VzbF90aW1lci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbF91c2xfdGltZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EwZTMzMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL2lwcG9vbF91c2xfdGltZXIucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAoraW5jbHVkZSBsaW1pdHMuaCB0byBhdm9pZCBVSU5UX01BWCB1bmRlZmluZWQgY29tcGlsaW5nIGVycm9yLgorcmVtb3ZlIHRoZSB1bnVzZWQgYXNzaWduIHdoaWNoIGNhdXNlZCBjb21waWxpbmcgZXJyb3Igd2l0aCAtV2Vycm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogWWFvIFpoYW8gPHlhby56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKworZGlmZiAtLWdpdCBhL3VzbC91c2xfdGltZXIuYyBiL3VzbC91c2xfdGltZXIuYworaW5kZXggNzM0YjgyMC4uZmRhNzUyYiAxMDA2NDQKKy0tLSBhL3VzbC91c2xfdGltZXIuYworKysrIGIvdXNsL3VzbF90aW1lci5jCitAQCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJ1c2wuaCIKKyAKK0BAIC04NywxNCArODgsMTMgQEAgdm9pZCAoKnVzbF90aW1lcl90aWNrX2hvb2spKHZvaWQpOworICAqLworIHZvaWQgdXNsX3RpbWVyX3RpY2sodm9pZCkKKyB7CistCWludCByZXN1bHQ7CisgCWNoYXIgbXNnID0gJ1wwJzsKKyAKKyAJdXNsX3RpY2srKzsKKyAKKyAJaWYgKCF1c2xfdGlja19wZW5kaW5nKSB7CisgCQl1c2xfdGlja19wZW5kaW5nID0gMTsKKy0JCXJlc3VsdCA9IHdyaXRlKHVzbF90aWNrX3BpcGVbMV0sICZtc2csIHNpemVvZihtc2cpKTsKKysJCXdyaXRlKHVzbF90aWNrX3BpcGVbMV0sICZtc2csIHNpemVvZihtc2cpKTsKKyAJfQorIH0KKyAKK0BAIC0xMTEsMTEgKzExMSwxMCBAQCBzdGF0aWMgdm9pZCB1c2xfdGltZXJfdGlja19oYW5kbGVyKGludCBmZCwgdm9pZCAqYXJnKQorIAlzdHJ1Y3QgdXNsX29yZF9saXN0X2hlYWQgKnRtcDsKKyAJc3RydWN0IHVzbF9saXN0X2hlYWQgKml3YWxrOworIAlzdHJ1Y3QgdXNsX2xpc3RfaGVhZCAqaXRtcDsKKy0JaW50IHJlc3VsdDsKKyAJY2hhciBtc2c7CisgCVVTTF9MSVNUX0hFQUQoZXhwaXJlX2xpc3QpOworIAorLQlyZXN1bHQgPSB1c2xfZmRfcmVhZCh1c2xfdGlja19waXBlWzBdLCAmbXNnLCBzaXplb2YobXNnKSk7CisrCXVzbF9mZF9yZWFkKHVzbF90aWNrX3BpcGVbMF0sICZtc2csIHNpemVvZihtc2cpKTsKKyAJdXNsX3RpY2tfcGVuZGluZyA9IDA7CisgCisgCXVzbF9saXN0X2Zvcl9lYWNoKHdhbGssIHRtcCwgJnVzbF90aW1lcl9saXN0KSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNWI3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaApAQCAtMCwwICsxLDIxIEBACitBZGQgTERGTEFHUyB2YXJpYWJsZSB0byBNYWtlZmlsZSBzbyB0aGF0IGV4dHJhIGxpbmtlciBmbGFncyBjYW4gYmUgc2VudCB2aWEgdGhpcyB2YXJpYWJsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDRmN2FmMWQuLmEwNWEwMDAgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC04Myw4ICs4Myw4IEBAIGVuZGlmCisgCisgQ1BQRkxBR1M9CQkkKENQUEZMQUdTLmlwcG9vbHRlc3QpCisgQ0ZMQUdTPQkJCS1JLiAtSXVzbCAtSWNsaSAtTU1EIC1XYWxsIC1nICQoQ1BQRkxBR1MpICQoQ1BQRkxBR1MuZG1hbGxvYykKKy1MREZMQUdTLmlwcG9vbGQ9CS1XbCwtRSAtTC4gLUx1c2wgLWx1c2wgLWxuc2wgLWxkbCAkKExJQlMuZG1hbGxvYykgLWxjCistTERGTEFHUy5pcHBvb2xjb25maWc9CS1MY2xpIC1sY2xpIC1scmVhZGxpbmUgLWxjdXJzZXMgLWxuc2wgJChMSUJTLmRtYWxsb2MpIC1sYworK0xERkxBR1MuaXBwb29sZD0JJChMREZMQUdTKSAtV2wsLUUgLUwuIC1MdXNsIC1sdXNsIC1sbnNsIC1sZGwgJChMSUJTLmRtYWxsb2MpIC1sYworK0xERkxBR1MuaXBwb29sY29uZmlnPQkkKExERkxBR1MpIC1MY2xpIC1sY2xpIC1scmVhZGxpbmUgLWxjdXJzZXMgLWxuc2wgJChMSUJTLmRtYWxsb2MpIC1sYworIAorIE9QVF9DRkxBR1M/PQkJLU8KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sL3J1bnRlc3Quc2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9ydW50ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MWY1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC9ydW50ZXN0LnNoCkBAIC0wLDAgKzEsMjYgQEAKKyMhL2Jpbi9zaAorQkFOTkVSPSItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorVENMU0g9InRjbHNoIGFsbC50Y2wgLXByZXNlcnZlY29yZSAzIC12ZXJib3NlIGJwcyAtdG1wZGlyIC4vcmVzdWx0cyAtb3V0ZmlsZSB0ZXN0LWlwcG9vbC5yZXN1bHQiCisKK3Rlc3Rfc2V0dXAoKSB7CisgICAgICAgIGlmIFsgLWQgLi9yZXN1bHRzIF07IHRoZW4gcm0gLWZyIC4vcmVzdWx0czsgZmkKKyAgICAgICAgbWtkaXIgLi9yZXN1bHRzCit9CisKK3Rlc3RfaXBwb29sKCkgeworICAgICAgICBlY2hvICIke0JBTk5FUn0iCisgICAgICAgIGV2YWwgJFRDTFNIIC1jb25zdHJhaW50cyAiaXBQb29sIgorfQordGVzdF9wb3N0cHJvY2VzcygpIHsKKyAgICAgICAgZWNobyAiJHtCQU5ORVJ9IgorICAgICAgICAoZmFpbGVkPWBncmVwIEZBSUxFRCByZXN1bHRzLyoucmVzdWx0IHwgd2MgLWxgOyBcCisgICAgICAgIGxldCBmYWlsZWQyPWZhaWxlZC8yIDtcCisgICAgICAgIHBhc3NlZD1gZ3JlcCBQQVNTRUQgcmVzdWx0cy8qLnJlc3VsdCB8IHdjIC1sYDsgXAorICAgICAgICBlY2hvICJURVNUIFNVTU1BUlk6ICRwYXNzZWQgdGVzdHMgUEFTU0VELCAkZmFpbGVkMiB0ZXN0cyBGQUlMRUQiIDtcCisgICAgICAgIGV4aXQgJGZhaWxlZDIpCit9CisKK3Rlc3Rfc2V0dXAKK3Rlc3RfaXBwb29sCit0ZXN0X3Bvc3Rwcm9jZXNzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sXzEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sXzEuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTQ3NDgzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2xfMS4zLmJiCkBAIC0wLDAgKzEsMTEzIEBACitTVU1NQVJZID0gIkFuIElQIGFkZHJlc3MgcG9vbCBtYW5hZ2VyIgorREVTQ1JJUFRJT04gPSAiSXBQb29sIGlzIGltcGxlbWVudGVkIGFzIGEgc2VwYXJhdGUgc2VydmVyIGRhZW1vbiBcCit0byBhbGxvdyBhbnkgYXBwbGljYXRpb24gdG8gdXNlIGl0cyBhZGRyZXNzIHBvb2xzLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIFwKK3RvIGRlZmluZSBhZGRyZXNzIHBvb2xzIHRoYXQgYXJlIHNoYXJlZCBieSBQUFAsIEwyVFAsIFBQVFAgZXRjLiBJdCBtYXkgYmUgXAordXNlZnVsIGluIHNvbWUgVlBOIHNlcnZlciBzZXR1cHMuIElwUG9vbCBjb21lcyB3aXRoIGEgY29tbWFuZCBsaW5lIFwKK21hbmFnZW1lbnQgYXBwbGljYXRpb24sIGlwcG9vbGNvbmZpZyB0byBtYW5hZ2UgYW5kIHF1ZXJ5IGFkZHJlc3MgcG9vbCBcCitzdGF0dXMuIEEgcHBwZCBwbHVnaW4gaXMgc3VwcGxpZWQgd2hpY2ggYWxsb3dzIHBwcGQgdG8gcmVxdWVzdCBJUCBcCithZGRyZXNzZXMgZnJvbSBpcHBvb2xkLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5sMnRwLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitTUkNfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL29wZW5sMnRwL2ZpbGVzLyR7QlBOfS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bnRlc3Quc2ggXAorICAgICAgICAgICBmaWxlOi8vaXBwb29sLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaXBwb29sX3VzbF90aW1lci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pcHBvb2xfcGFyYWxsZWxfbWFrZV9hbmRfcGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2lwcG9vbF9pbml0LmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWx3YXlzX3N5c2xvZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzbF90aW1lci1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLXdyaXRlLUFQSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlc3BlY3QtZmxhZ3MtZnJvbS1lbnYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZWFkLXJldHVybnMtc3NpemVfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLU1hcmstZmlyc3QtZWxlbWVudC1vZi1hLXN0cmluZy1hcy1udWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY2xpLU1hcmstcmV0dXJuLW9mLXN0cnRvbC1hcy1sb25nLWludC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpbmstd2l0aC1saWJ0aXJwYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW11c2wtZml4ZXMucGF0Y2ggXAorICAgICAgICAgICAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRjNTkyODNiODJmYzJiMTY2NDU1ZTBmYzIzYzcxYzZmIgorU1JDX1VSSVttZDVzdW1dID0gImUyNDAxZTY1ZGIyNmEzNzY0NTg1Yjk3MjEyODg4ZmFlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzZWFiN2Q2Y2FkNWRhOGNjYzlkMWUzMWQ1MzAzZTI3YTM5NjIyYzA3YmRiOGZhMzYxOGVlYTMxNDQxMjA3NWIiCisKK2luaGVyaXQgc3lzdGVtZAorCitERVBFTkRTID0gInJlYWRsaW5lIHBwcCBuY3Vyc2VzIGd6aXAtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKK1JERVBFTkRTXyR7UE59ID0gInJwY2JpbmQiCisKK0VYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIEFTPScke0FTfScgTEQ9JyR7TER9JyBBUj0nJHtBUn0nIE5NPScke05NfScgU1RSSVA9JyR7U1RSSVB9JyIKK0VYVFJBX09FTUFLRSArPSAiUFBQRF9WRVJTSU9OPSR7UFBQRF9WRVJTSU9OfSBTWVNfTElCRElSPSR7bGliZGlyfSIKKyMgZW5hYmxlIHNlbGYgdGVzdHMKK0VYVFJBX09FTUFLRSArPSAiSVBQT09MX1RFU1Q9eSIKKworQ1BQRkxBR1MgKz0gIiR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKK0NQUEZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcHBvb2wuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgIyBmaXggdGhlIENGTEFHUz0gYW5kIENQUEZMQUdTPSBpbiBtYWluIE1ha2VmaWxlLCB0byBoYXZlIHRoZSBleHRyYSBDRkxBR1MgaW4gZW52CisgICAgc2VkIC1pIC1lICJzL15DRkxBR1M9L0NGTEFHUys9LyIgJHtTfS9NYWtlZmlsZQorICAgIHNlZCAtaSAtZSAicy9eQ1BQRkxBR1M9L0NQUEZMQUdTKz0vIiAke1N9L01ha2VmaWxlCisKKyAgICBzZWQgLWkgLWUgInM6LUkvdXNyL2luY2x1ZGUvcHBwZDotST0vdXNyL2luY2x1ZGUvcHBwZDoiICR7U30vcHBwZC9NYWtlZmlsZQorCit9CisKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9kZWJpYW4vaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pcHBvb2xkCisgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vaXBwb29sLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaXBwb29sLnNlcnZpY2UKKyAgICBzZWQgLWkgLWUgJ3M6QFNCSU5ESVJAOiR7c2JpbmRpcn06ZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaXBwb29sLnNlcnZpY2UKKworICAgICMgaW5zdGFsbCBzZWxmIHRlc3QKKyAgICBpbnN0YWxsIC1kICR7RH0vb3B0LyR7QlBOfQorICAgIGluc3RhbGwgJHtTfS90ZXN0L2FsbC50Y2wgICR7U30vdGVzdC9pcHBvb2wudGVzdCBcCisgICAgICAgICR7U30vdGVzdC90ZXN0X3Byb2NzLnRjbCAke0R9L29wdC8ke0JQTn0KKyAgICBpbnN0YWxsICR7V09SS0RJUn0vcnVudGVzdC5zaCAke0R9L29wdC8ke0JQTn0KKyAgICAjIGZpeCB0aGUgLi4vaXBwb29sY29uZmlnIGluIHRlc3RfcHJvY3MudGNsCisgICAgc2VkIC1pIC1lICJzOi4uL2lwcG9vbGNvbmZpZzppcHBvb2xjb25maWc6IiBcCisgICAgICAgICR7RH0vb3B0LyR7QlBOfS90ZXN0X3Byb2NzLnRjbAorfQorCisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0IgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3BwcGQvJHtQUFBEX1ZFUlNJT059L2lwcG9vbC5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BwcGQvJHtQUFBEX1ZFUlNJT059Ly5kZWJ1Zy9pcHBvb2wuc28iCitGSUxFU18ke1BOfS10ZXN0ID0gIi9vcHQvJHtCUE59IgorCisjIG5lZWRzIHRjbCB0byBydW4gdGVzdHMKK1JERVBFTkRTXyR7UE59LXRlc3QgKz0gInRjbCAke0JQTn0iCisKK1BQUERfVkVSU0lPTj0iJHtAZ2V0X3BwcF92ZXJzaW9uKGQpfSIKKworZGVmIGdldF9wcHBfdmVyc2lvbihkKToKKyAgICBpbXBvcnQgcmUKKworICAgIHBwcGRfcGx1Z2luID0gZC5leHBhbmQoJyR7U1RBR0lOR19MSUJESVJ9L3BwcGQnKQorICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHBwcGRfcGx1Z2luKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGJiLmRlYnVnKDEsICJwcHBkIHBsdWdpbiBkaXIgJXMiICUgcHBwZF9wbHVnaW4pCisgICAgciA9IHJlLmNvbXBpbGUoIlxkKlwuXGQqXC5cZCoiKQorICAgIGZvciBmIGluIG9zLmxpc3RkaXIocHBwZF9wbHVnaW4pOgorICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihwcHBkX3BsdWdpbiwgZikpOgorICAgICAgICAgICAgbWEgPSByLm1hdGNoKGYpCisgICAgICAgICAgICBpZiBtYToKKyAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAicHBwZCB2ZXJzaW9uIGRpciAlcyIgJSBmKQorICAgICAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJ1bmRlciBwcHBkIHBsdWdpbiBkaXIgJXMiICUgZikKKworICAgIHJldHVybiBOb25lCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMS4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMva2VlcGFsaXZlZC9rZWVwYWxpdmVkXzEuMy41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlN2U2ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMva2VlcGFsaXZlZC9rZWVwYWxpdmVkXzEuMy41LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiSGlnaCBBdmFpbGFiaWxpdHkgbW9uaXRvciBidWlsdCB1cG9uIExWUywgVlJSUCBhbmQgc2VydmljZSBwb2xsZXJzIgorREVTQ1JJUFRJT04gPSAiS2VlcGFsaXZlZCBpcyBhIHJvdXRpbmcgc29mdHdhcmUgd3JpdHRlbiBpbiBDLiBUaGUgbWFpbiBnb2FsIFwKK29mIHRoaXMgcHJvamVjdCBpcyB0byBwcm92aWRlIHNpbXBsZSBhbmQgcm9idXN0IGZhY2lsaXRpZXMgZm9yIGxvYWRiYWxhbmNpbmcgXAorYW5kIGhpZ2gtYXZhaWxhYmlsaXR5IHRvIExpbnV4IHN5c3RlbSBhbmQgTGludXggYmFzZWQgaW5mcmFzdHJ1Y3R1cmVzLiBcCitMb2FkYmFsYW5jaW5nIGZyYW1ld29yayByZWxpZXMgb24gd2VsbC1rbm93biBhbmQgd2lkZWx5IHVzZWQgTGludXggVmlydHVhbCBcCitTZXJ2ZXIgKElQVlMpIGtlcm5lbCBtb2R1bGUgcHJvdmlkaW5nIExheWVyNCBsb2FkYmFsYW5jaW5nIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VlcGFsaXZlZC5vcmcvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5rZWVwYWxpdmVkLm9yZy9zb2Z0d2FyZS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5OTY0ZDI5NWVjOWQzNGVkMzQwOGI1N2QyODg0N2I2OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMDExNGQ4NmVhNGM4OTY1NTdiZWIwZDkzNjc4MTlhNDIzZmZiYTc3MmJjNWQ3YzU0OGRjNDU1ZTZiM2JkMDQ4IgorCitERVBFTkRTID0gImxpYm5mbmV0bGluayBvcGVuc3NsIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZAorCitQQUNLQUdFQ09ORklHID8/PSAibGlibmwgc25tcCBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2xpYm5sXSA9ICItLWVuYWJsZS1saWJubCwtLWRpc2FibGUtbGlibmwsbGlibmwiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1pbml0PXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS13aXRoLWluaXQ9U1lTVixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxpYmlwdGMiCitFWFRSQV9PRU1BS0UgPSAiaW5pdGRpcj0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAtZiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59IF07IHRoZW4KKyAgICAgICAgY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisgICAgICAgIHNlZCAtaSAncyNyYy5kLyMjJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke0J9LyR7QlBOfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8ke0JQTn0uc2VydmljZQorICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9LRUVQQUxJVkVELU1JQi50eHQiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJrZWVwYWxpdmVkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAicmVtb3ZlIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAia2VlcGFsaXZlZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9sbGRwZC9maWxlcy9zcmMtZGFlbW9uLWxsZHBkLnNlcnZpY2UuaW4tVXNlLWZpeGVkLXBhdGgtZm9yLW1rZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2xsZHBkL2ZpbGVzL3NyYy1kYWVtb24tbGxkcGQuc2VydmljZS5pbi1Vc2UtZml4ZWQtcGF0aC1mb3ItbWtkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg3NmUxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9sbGRwZC9maWxlcy9zcmMtZGFlbW9uLWxsZHBkLnNlcnZpY2UuaW4tVXNlLWZpeGVkLXBhdGgtZm9yLW1rZGlyLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gZjlmM2U0ZGQzMTU4OGNjZTVmNjU1NzMwZGE3YjVjM2Y1NmE5YmRjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBUdWUsIDI2IFNlcCAyMDE3IDA5OjE5OjUxIC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy9kYWVtb24vbGxkcGQuc2VydmljZS5pbjogVXNlIGZpeGVkIHBhdGggZm9yIG1rZGlyIGNvbW1hbmQKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK0Bta2Rpcl9wQCBpcyBleHBhbmRlZCB0byBob3N0IHRvb2xzIHBhdGggLi4vYnVpbGQvdG1wL2hvc3R0b29scy9ta2RpciB0aGF0Citkb2Vzbid0IGV4aXN0IG9uIHRhcmdldC4gUmVtb3ZlIEBta2Rpcl9wQCBhbmQgdXNlIC9iaW4vbWtkaXIgLXAgdG8KK2NyZWF0ZSAvdmFyL3J1bi9sbGRwZCBkaXJlY3RvcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIHNyYy9kYWVtb24vbGxkcGQuc2VydmljZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9kYWVtb24vbGxkcGQuc2VydmljZS5pbiBiL3NyYy9kYWVtb24vbGxkcGQuc2VydmljZS5pbgoraW5kZXggZmRiNzMzOC4uNDI5MTgzMCAxMDA2NDQKKy0tLSBhL3NyYy9kYWVtb24vbGxkcGQuc2VydmljZS5pbgorKysrIGIvc3JjL2RhZW1vbi9sbGRwZC5zZXJ2aWNlLmluCitAQCAtOSw3ICs5LDcgQEAgVHlwZT1ub3RpZnkKKyBOb3RpZnlBY2Nlc3M9bWFpbgorIEVudmlyb25tZW50RmlsZT0tL2V0Yy9kZWZhdWx0L2xsZHBkCisgRW52aXJvbm1lbnRGaWxlPS0vZXRjL3N5c2NvbmZpZy9sbGRwZAorLUV4ZWNTdGFydFByZT1AbWtkaXJfcEAgQFBSSVZTRVBfQ0hST09UQAorK0V4ZWNTdGFydFByZT0vYmluL21rZGlyIC1wIEBQUklWU0VQX0NIUk9PVEAKKyBFeGVjU3RhcnQ9QHNiaW5kaXJAL2xsZHBkICREQUVNT05fQVJHUyAkTExEUERfT1BUSU9OUworIFJlc3RhcnQ9b24tZmFpbHVyZQorIFByaXZhdGVUbXA9eWVzCistLSAKKzIuMTQuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2xsZHBkL2xsZHBkXzAuOS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2xsZHBkL2xsZHBkXzAuOS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2QwNjM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9sbGRwZC9sbGRwZF8wLjkuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSA4MDIuMWFiIGltcGxlbWVudGF0aW9uIChMTERQKSB0byBoZWxwIHlvdSBsb2NhdGUgbmVpZ2hib3JzIG9mIGFsbCB5b3VyIGVxdWlwbWVudHMiCi1TRUNUSU9OID0gIm5ldC9taXNjIgotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9JU0M7bWQ1PWYzYjkwZTc4ZWEwY2ZmYjIwYmY1Y2NhNzk0N2E4OTZkIgotCi1ERVBFTkRTID0gImxpYmJzZCBsaWJldmVudCIKLQotU1JDX1VSSSA9ICJcCi0gICAgaHR0cDovL21lZGlhLmx1ZmZ5LmN4L2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vbGxkcGQuaW5pdC5kIFwKLSAgICBmaWxlOi8vbGxkcGQuZGVmYXVsdCBcCi0gICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGRjZGVlN2MxYjNjNjIzNjJkNzNmNjUwOGMxMWVkYWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTc0ZTJkZDdlMmEyMzNjYTFmZjM4NWM5MjVkZGFlMmE5MTZkMzAyODE5ZDE0MzM3NDE0MDdkMmY4ZmIwZGRkOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZyBiYXNoLWNvbXBsZXRpb24KLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWcgbGxkcGQgLS1zaGVsbCAvYmluL2ZhbHNlIGxsZHBkIgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gbGxkcGQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWVtYmVkZGVkLWxpYmV2ZW50IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW9sZGllcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXVzZXI9bGxkcGQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1ncm91cD1sbGRwZCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LXN5c3VzZXJzZGlyIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNkcCBmZHAgZWRwIHNvbm1wIGxsZHBtZWQgZG90MSBkb3QzIgotUEFDS0FHRUNPTkZJR1tqc29uXSA9ICItLXdpdGgtanNvbiwtLXdpdGhvdXQtanNvbixqYW5zc29uIgotUEFDS0FHRUNPTkZJR1t4bWxdID0gIi0td2l0aC14bWwsLS13aXRob3V0LXhtbCxsaWJ4bTIiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0td2l0aC1zbm1wLC0td2l0aG91dC1zbm1wLG5ldC1zbm1wIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lLC0td2l0aG91dC1yZWFkbGluZSxyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiLS13aXRoLXNlY2NvbXAsLS13aXRob3V0LXNlY2NvbXAsbGlic2VjY29tcCIKLVBBQ0tBR0VDT05GSUdbY2RwXSA9ICItLWVuYWJsZS1jZHAsLS1kaXNhYmxlLWNkcCIKLVBBQ0tBR0VDT05GSUdbZmRwXSA9ICItLWVuYWJsZS1mZHAsLS1kaXNhYmxlLWZkcCIKLVBBQ0tBR0VDT05GSUdbZWRwXSA9ICItLWVuYWJsZS1lZHAsLS1kaXNhYmxlLWVkcCIKLVBBQ0tBR0VDT05GSUdbc29ubXBdID0gIi0tZW5hYmxlLXNvbm1wLC0tZGlzYWJsZS1zb25tcCIKLVBBQ0tBR0VDT05GSUdbbGxkcG1lZF0gPSAiLS1lbmFibGUtbGxkcG1lZCwtLWRpc2FibGUtbGxkcG1lZCIKLVBBQ0tBR0VDT05GSUdbZG90MV0gPSAiLS1lbmFibGUtZG90MSwtLWRpc2FibGUtZG90MSIKLVBBQ0tBR0VDT05GSUdbZG90M10gPSAiLS1lbmFibGUtZG90MywtLWRpc2FibGUtZG90MyIKLVBBQ0tBR0VDT05GSUdbY3VzdG9tXSA9ICItLWVuYWJsZS1jdXN0b20sLS1kaXNhYmxlLWN1c3RvbSIKLQotSU5JVFNDUklQVF9OQU1FID0gImxsZHBkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsbGRwZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vbGxkcGQuaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9sbGRwZAotICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9sbGRwZC5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbGxkcGQKLSAgICAjIE1ha2UgYW4gZW1wdHkgY29uZmlndXJhdGlvbiBmaWxlCi0gICAgdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbGxkcGQuY29uZgotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tenNoLWNvbXBsZXRpb24iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vc3lzdXNlcnMuZCIKLVJERVBFTkRTXyR7UE59ICs9ICJvcy1yZWxlYXNlIgotCi1GSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiArPSAiJHtkYXRhZGlyfS96c2gvIgotIyBGSVhNRTogenNoIGlzIGJyb2tlbiBpbiBtZXRhLW9lIHNvIHRoaXMgY2Fubm90IGJlIGVuYWJsZWQgZm9yIG5vdwotI1JERVBFTkRTXyR7UE59LXpzaC1jb21wbGV0aW9uICs9ICJ6c2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbGxkcGQvbGxkcGRfMC45LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbGxkcGQvbGxkcGRfMC45LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJkODRjZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9sbGRwZC9sbGRwZF8wLjkuOC5iYgpAQCAtMCwwICsxLDY1IEBACitTVU1NQVJZID0gIkEgODAyLjFhYiBpbXBsZW1lbnRhdGlvbiAoTExEUCkgdG8gaGVscCB5b3UgbG9jYXRlIG5laWdoYm9ycyBvZiBhbGwgeW91ciBlcXVpcG1lbnRzIgorU0VDVElPTiA9ICJuZXQvbWlzYyIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvSVNDO21kNT1mM2I5MGU3OGVhMGNmZmIyMGJmNWNjYTc5NDdhODk2ZCIKKworREVQRU5EUyA9ICJsaWJic2QgbGliZXZlbnQiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHA6Ly9tZWRpYS5sdWZmeS5jeC9maWxlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovL2xsZHBkLmluaXQuZCBcCisgICAgZmlsZTovL2xsZHBkLmRlZmF1bHQgXAorICAgIGZpbGU6Ly9zcmMtZGFlbW9uLWxsZHBkLnNlcnZpY2UuaW4tVXNlLWZpeGVkLXBhdGgtZm9yLW1rZGlyLnBhdGNoIFwKKyAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ODA5NjAwNDkyZjZiNzMxNDllYjE5MTU4ZTgxOWMxZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZWU0OTRlOTFiYzMzOTM4NTc1YjJjMDliMjYxODhjNDg2ZWY4ZWFjNmUyMTU1ZDI1MGMxODljYzRlOTg4YzRmIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnIGJhc2gtY29tcGxldGlvbgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZyBsbGRwZCAtLXNoZWxsIC9iaW4vZmFsc2UgbGxkcGQiCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBsbGRwZCIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtZW1iZWRkZWQtbGliZXZlbnQgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb2xkaWVzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtdXNlcj1sbGRwZCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLWdyb3VwPWxsZHBkIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdXNlcnNkaXIgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiY2RwIGZkcCBlZHAgc29ubXAgbGxkcG1lZCBkb3QxIGRvdDMiCitQQUNLQUdFQ09ORklHW3htbF0gPSAiLS13aXRoLXhtbCwtLXdpdGhvdXQteG1sLGxpYnhtMiIKK1BBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS13aXRoLXNubXAsLS13aXRob3V0LXNubXAsbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmUsLS13aXRob3V0LXJlYWRsaW5lLHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItLXdpdGgtc2VjY29tcCwtLXdpdGhvdXQtc2VjY29tcCxsaWJzZWNjb21wIgorUEFDS0FHRUNPTkZJR1tjZHBdID0gIi0tZW5hYmxlLWNkcCwtLWRpc2FibGUtY2RwIgorUEFDS0FHRUNPTkZJR1tmZHBdID0gIi0tZW5hYmxlLWZkcCwtLWRpc2FibGUtZmRwIgorUEFDS0FHRUNPTkZJR1tlZHBdID0gIi0tZW5hYmxlLWVkcCwtLWRpc2FibGUtZWRwIgorUEFDS0FHRUNPTkZJR1tzb25tcF0gPSAiLS1lbmFibGUtc29ubXAsLS1kaXNhYmxlLXNvbm1wIgorUEFDS0FHRUNPTkZJR1tsbGRwbWVkXSA9ICItLWVuYWJsZS1sbGRwbWVkLC0tZGlzYWJsZS1sbGRwbWVkIgorUEFDS0FHRUNPTkZJR1tkb3QxXSA9ICItLWVuYWJsZS1kb3QxLC0tZGlzYWJsZS1kb3QxIgorUEFDS0FHRUNPTkZJR1tkb3QzXSA9ICItLWVuYWJsZS1kb3QzLC0tZGlzYWJsZS1kb3QzIgorUEFDS0FHRUNPTkZJR1tjdXN0b21dID0gIi0tZW5hYmxlLWN1c3RvbSwtLWRpc2FibGUtY3VzdG9tIgorCitJTklUU0NSSVBUX05BTUUgPSAibGxkcGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxsZHBkLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9sbGRwZC5pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2xsZHBkCisgICAgaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L2xsZHBkLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9sbGRwZAorICAgICMgTWFrZSBhbiBlbXB0eSBjb25maWd1cmF0aW9uIGZpbGUKKyAgICB0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sbGRwZC5jb25mCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS16c2gtY29tcGxldGlvbiIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9zeXN1c2Vycy5kIgorUkRFUEVORFNfJHtQTn0gKz0gIm9zLXJlbGVhc2UiCisKK0ZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uICs9ICIke2RhdGFkaXJ9L3pzaC8iCisjIEZJWE1FOiB6c2ggaXMgYnJva2VuIGluIG1ldGEtb2Ugc28gdGhpcyBjYW5ub3QgYmUgZW5hYmxlZCBmb3Igbm93CisjUkRFUEVORFNfJHtQTn0tenNoLWNvbXBsZXRpb24gKz0gInpzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9uY2Z0cC9uY2Z0cC91bmlzdGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbmNmdHAvbmNmdHAvdW5pc3RkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjODE0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbmNmdHAvbmNmdHAvdW5pc3RkLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK1RoaXMgcGF0Y2ggaXMgbmVlZGVkIHRvIGF2b2lkIGRvdWJsZSBkZWZpbml0aW9ucyBvZiBmdW5jdGlvbnMKK2VzcGVjaWFsbHkgd2hlbiBidWlsZGluZyB3aXRoIHNlY3VyaXR5IGZsYWdzIHR1cm5lZCBvbi4gVGhlIGRvdWJsZQorZGVmaW5pdGlvbnMgY2F1c2VzIHRoZSBzZWQuc2ggc2NyaXB0IGluIGNvbmZpZ3VyZSB0byBmYWlsIHNpbmNlIGl0CitzdGFydHMgdG8gc3BpdCBvdXQgZG91YmxlIG91dHB1dHMgZS5nLgorCit3aV9jdl9nZXRob3N0bmFtZV9zaXplX3Qgc2l6ZV90IHNpemVfdAorCit3aGljaCB0aGVuIGNhdXNlZCBhbG1vc3QgYWxsIHN1YnNlcXVlbnQgY29tcGlsZSB0aW1lIHRlc3RzIHRvIGZhaWwgc2luY2UKK3RoaXMgZ2V0cyBpbnRvIGNvbmZkZWZzLmggZmlsZQorCityZW1vdmluZyB0aGlzIGluY2x1ZGUgY2F1c2VzIG9ubHkgb25lIGRlZmluaXRpb25zIHRvIGJlIGVtaXR0ZWQgaW50bwordGhlIGdlbnJhdGVkIHByb3Rvcy5oIGZpbGUgYW5kIHRodXMgYXZvaWRpbmcgdGhlIGFib3ZlIGZhaWx1cmUuCisKK090aGVyIHNvbHV0aW9uIHdvdWxkIHRvIGZpeCBzZWQuc2ggdG8gaWdub3JlIGRvdWJsZSBkZWZpbml0aW9ucworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisKK0luZGV4OiBuY2Z0cC0zLjIuNi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuY2Z0cC0zLjIuNi5vcmlnL2NvbmZpZ3VyZQorKysrIG5jZnRwLTMuMi42L2NvbmZpZ3VyZQorQEAgLTc4NTksNyArNzg1OSw2IEBAIGNobW9kIDc1NSAiJHdpX3RtcGRpci9wcnBwLnBsIgorIGNhdCA8PCAnRU9GJyA+ICIkd2lfdG1wZGlyL3VuaXN0ZC5jIgorICNpbmNsdWRlIDxjb25mZGVmcy5oPgorIAorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL25jZnRwL25jZnRwXzMuMi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL25jZnRwL25jZnRwXzMuMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTNlYWNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9uY2Z0cC9uY2Z0cF8zLjIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgc29waGlzdGljYXRlZCBjb25zb2xlIGZ0cCBjbGllbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vbmNmdHAuY29tLyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJDbEFydGlzdGljIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbmNmdHAvY21kcy5jO2JlZ2lubGluZT0zO2VuZGxpbmU9NDttZDU9OWRlNzZmYWVhZWRjNGY5MDgwODJlM2Y4MTQyNzE1ZjQiCi1ERVBFTkRTID0gIm5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL24vJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9uY2Z0cC1jb25maWd1cmUtdXNlLUJVSUxEX0NDLWZvci1jY2R2LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ODVlNDVmNjBhYzExYzg5NDQyYzU3MmMyOGFmNDIyOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYzExMWI3MTExMjM4Mjg1M2IyODM1YzQyZWJlN2JkNTlhY2I3Zjg1ZGQwMGQ0NGIyYzE5ZmJkMDc0YTQzNmM0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2NjZHZdID0gIi0tZW5hYmxlLWNjZHYsLS1kaXNhYmxlLWNjZHYsLCIKLQotZG9fY29uZmlndXJlKCkgewotICAgIG9lX3J1bmNvbmYKLX0KLWRvX2luc3RhbGwgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtzeXNjb25mZGlyfSAke0R9JHttYW5kaXJ9Ci0gICAgb2VfcnVubWFrZSAncHJlZml4PSR7RH0ke3ByZWZpeH0nICdCSU5ESVI9JHtEfSR7YmluZGlyfScgXAotICAgICAgICAnU1lTQ09ORkRJUj0ke0R9JHtzeXNjb25mZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBcCi0gICAgICAgIGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9uY2Z0cC9uY2Z0cF8zLjIuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9uY2Z0cC9uY2Z0cF8zLjIuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjkyZjI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL25jZnRwL25jZnRwXzMuMi42LmJiCkBAIC0wLDAgKzEsMzUgQEAKK0RFU0NSSVBUSU9OID0gIkEgc29waGlzdGljYXRlZCBjb25zb2xlIGZ0cCBjbGllbnQiCitIT01FUEFHRSA9ICJodHRwOi8vbmNmdHAuY29tLyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJDbEFydGlzdGljIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbmNmdHAvY21kcy5jO2JlZ2lubGluZT0zO2VuZGxpbmU9NDttZDU9OWMyMzkwODA5ZjcxNDY1YWE3ZmY3NmUwM2RjMTRkOTEiCitERVBFTkRTID0gIm5jdXJzZXMiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLm5jZnRwLmNvbS8ke0JQTn0vJHtCUH0tc3JjLnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9uY2Z0cC1jb25maWd1cmUtdXNlLUJVSUxEX0NDLWZvci1jY2R2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VuaXN0ZC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNDJkMGY4OTZkNjlhNGQ2MDNlYzA5NzU0NjQ0NDI0NWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWYyMDA2ODdjMDVkMDgwNzY5MGQ5ZmI3NzAzMjdiMjI2ZjAyZGQ4NjE1NWI0OWU3NTA4NTNmY2U0ZTMxMDk4ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitDRkxBR1MgKz0gIi1ETk9fU1NMdjIgLURfRklMRV9PRkZTRVRfQklUUz02NCAtV2FsbCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbY2Nkdl0gPSAiLS1lbmFibGUtY2NkdiwtLWRpc2FibGUtY2NkdiwsIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXByZWNvbXAiCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmQgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKKworZG9fY29uZmlndXJlKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQorICAgIG9lX3J1bmNvbmYKK30KK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtzeXNjb25mZGlyfSAke0R9JHttYW5kaXJ9CisgICAgb2VfcnVubWFrZSAncHJlZml4PSR7RH0ke3ByZWZpeH0nICdCSU5ESVI9JHtEfSR7YmluZGlyfScgXAorICAgICAgICAnU1lTQ09ORkRJUj0ke0R9JHtzeXNjb25mZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBcCisgICAgICAgIGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmVzLXdpdGgtZ2NjNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmVzLXdpdGgtZ2NjNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjQ5M2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1GaXgtYnVpbGQtZmFpbHVyZXMtd2l0aC1nY2M3LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gMzk4YzZkYjY2YzY0M2VkNjEzM2NjMmIwMjhhYjFlMjdhMTdjNTI5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEgTWF5IDIwMTcgMTk6MTA6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIGZhaWx1cmVzIHdpdGggZ2NjNworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfbWNfdmVuZG9yLmNwcCB8IDIgKy0KKyBwbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9yZXNvdXJjZS5jcHAgIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9tY192ZW5kb3IuY3BwIGIvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfbWNfdmVuZG9yLmNwcAoraW5kZXggMmM2YzA5MC4uNTU3NzcxYyAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX21jX3ZlbmRvci5jcHAKKysrKyBiL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX21jX3ZlbmRvci5jcHAKK0BAIC0zMjIsNyArMzIyLDcgQEAgY0lwbWlNY1ZlbmRvcjo6Q3JlYXRlUmVzb3VyY2VzKCBjSXBtaURvbWFpbiAqZG9tYWluLCBjSXBtaU1jICpzb3VyY2VfbWMsIGNJcG1pU2QKKyAgICAgICBpZiAoIGFkZHIubV9jaGFubmVsICE9IHNvdXJjZV9tYy0+R2V0Q2hhbm5lbCgpICkgCisgICAgICAgICAgIHN0ZGxvZyA8PCAiV0FSTklORyA6IFNEUiBjaGFubmVsICIgPDwgYWRkci5tX2NoYW5uZWwgPDwgIiBOT1QgZXF1YWwgdG8gTUMgY2hhbm5lbCAiIDw8IHNvdXJjZV9tYy0+R2V0Q2hhbm5lbCgpIDw8ICJcbiI7CisgCistICAgICAgIGlmICggRmluZE9yQ3JlYXRlUmVzb3VyY2UoIGRvbWFpbiwgc291cmNlX21jLCBmcnVfaWQsIHNkciwgc2RycyApID09IGZhbHNlICkgeworKyAgICAgICBpZiAoICFGaW5kT3JDcmVhdGVSZXNvdXJjZSggZG9tYWluLCBzb3VyY2VfbWMsIGZydV9pZCwgc2RyLCBzZHJzICkgKSB7CisgCSAgICByZXR1cm4gZmFsc2U7CisgCX0KKyAgICAgIH0KK2RpZmYgLS1naXQgYS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9yZXNvdXJjZS5jcHAgYi9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9yZXNvdXJjZS5jcHAKK2luZGV4IGM0MzhlNzQuLjI1NTI2NzMgMTAwNjQ0CistLS0gYS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9yZXNvdXJjZS5jcHAKKysrKyBiL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX3Jlc291cmNlLmNwcAorQEAgLTczLDcgKzczLDcgQEAgY0lwbWlSZXNvdXJjZTo6U2VuZENvbW1hbmRSZWFkTG9jayggY29uc3QgY0lwbWlNc2cgJm1zZywgY0lwbWlNc2cgJnJzcCwKKyAKKyAgIGRvbWFpbi0+UmVhZExvY2soKTsKKyAKKy0gIGlmICggZG9tYWluLT5WZXJpZnlSZXNvdXJjZSggcmVzb3VyY2UgKSA9PSBmYWxzZSApCisrICBpZiAoICFkb21haW4tPlZlcmlmeVJlc291cmNlKCByZXNvdXJjZSApICkKKyAgICAgICAgcmV0dXJuIFNBX0VSUl9IUElfTk9UX1BSRVNFTlQ7CisgCisgICByZXR1cm4gcnY7CitAQCAtOTEsNyArOTEsNyBAQCBjSXBtaVJlc291cmNlOjpTZW5kQ29tbWFuZFJlYWRMb2NrKCBjSXBtaVJkciAqcmRyLCBjb25zdCBjSXBtaU1zZyAmbXNnLCBjSXBtaU1zZworICAgCisgICBkb21haW4tPlJlYWRMb2NrKCk7CisgICAKKy0gIGlmICggZG9tYWluLT5WZXJpZnlSZHIoIHJkciApID09IGZhbHNlICkKKysgIGlmICggIWRvbWFpbi0+VmVyaWZ5UmRyKCByZHIgKSApCisgICAgICAgIHJldHVybiBTQV9FUlJfSFBJX05PVF9QUkVTRU5UOworIAorICAgcmV0dXJuIHJ2OworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLWlwbWlkaXJlY3QtUmVwbGFjZS1fX1NUUklORy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtaXBtaWRpcmVjdC1SZXBsYWNlLV9fU1RSSU5HLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNTZmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLWlwbWlkaXJlY3QtUmVwbGFjZS1fX1NUUklORy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGJlNDBiM2YxMTQ2MGNmNDk1YmJiZWY0NTY5MmU3NzYzYWZkYTBjMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAxNzo1NjozMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpcG1pZGlyZWN0OiBSZXBsYWNlIF9fU1RSSU5HCisKK19fU1RSSU5HIGlzIG5vdCB1bml2ZXJzYWxseSBhdmFpbGFibGUgZS5nLgorbXVzbCBkb2VzIG5vdCBkZWZpbmUgaXQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBwbHVnaW5zL2lwbWlkaXJlY3QvdC90ZXN0LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wbHVnaW5zL2lwbWlkaXJlY3QvdC90ZXN0LmggYi9wbHVnaW5zL2lwbWlkaXJlY3QvdC90ZXN0LmgKK2luZGV4IDhkNzEzODEuLjk3OGQ1ZmYgMTAwNjQ0CistLS0gYS9wbHVnaW5zL2lwbWlkaXJlY3QvdC90ZXN0LmgKKysrKyBiL3BsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaAorQEAgLTIyLDcgKzIyLDcgQEAgVGVzdEZ1bmN0aW9uKCBjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBib29sIGV4cHIgKQorIH0KKyAKKyAKKy0jZGVmaW5lIFRlc3QoZXhwcikgVGVzdEZ1bmN0aW9uKCBfX1NUUklORyhleHByKSwgX19GSUxFX18sIF9fTElORV9fLCBleHByICkKKysjZGVmaW5lIFRlc3QoZXhwcikgVGVzdEZ1bmN0aW9uKCAjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBleHByICkKKyAKKyAKKyBzdGF0aWMgaW50CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLXBsdWdpbnMtQ2hlY2stZm9yLVBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLXBsdWdpbnMtQ2hlY2stZm9yLVBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYwMzNhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtcGx1Z2lucy1DaGVjay1mb3ItUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGJlNjY1ZDk1MTNjY2E3ZThiNjRjNzlhZTQyNGNmNDRhYzE2NmIwNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAxNzowNzo1OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBwbHVnaW5zOiBDaGVjayBmb3IgUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVJfTlAKKyBiZWZvcmUgdXNlCisKK211c2wgZG9lcyBub3QgZGVmaW5lIFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QCitzbyB3ZSBjYW4gbm90IGFzc3VtZSB0aGF0IGFsbCBMaW51eCBzeXN0ZW1zIHN1cHBvcnQgUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVJfTlAKK2l0cyBhIGdsaWJjIHNwZWNpZmljIGRlZmluZSBzbyBjaGVjayBmb3IgaXQgYmVpbmcgZGVmaW5lZCBiZWZvcmUgdXNpbmcgaXQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBwbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAgfCAyICstCisgcGx1Z2lucy9pcG1pZGlyZWN0L3RocmVhZC5jcHAgICAgICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwIGIvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwCitpbmRleCBkNjYzYmUwLi45MjEwZmQ3IDEwMDY0NAorLS0tIGEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwCisrKysgYi9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAKK0BAIC0yMjksNyArMjI5LDcgQEAgY1RocmVhZDo6RXhpdCggdm9pZCAqcnYgKQorIC8qKgorICAqIENvbnN0cnVjdG9yCisgICoqLworLSNpZiAoIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0KSApIHx8IGRlZmluZWQoX19GcmVlQlNEX18pCisrI2lmbmRlZiBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUAorIGNUaHJlYWRMb2NrOjpjVGhyZWFkTG9jaygpCisgeworICAgcHRocmVhZF9tdXRleGF0dHJfdCBhdHRyOworZGlmZiAtLWdpdCBhL3BsdWdpbnMvaXBtaWRpcmVjdC90aHJlYWQuY3BwIGIvcGx1Z2lucy9pcG1pZGlyZWN0L3RocmVhZC5jcHAKK2luZGV4IDVjNTI1NTcuLjQ4ZTgzZmEgMTAwNjQ0CistLS0gYS9wbHVnaW5zL2lwbWlkaXJlY3QvdGhyZWFkLmNwcAorKysrIGIvcGx1Z2lucy9pcG1pZGlyZWN0L3RocmVhZC5jcHAKK0BAIC0xNjcsNyArMTY3LDcgQEAgY1RocmVhZDo6RXhpdCggdm9pZCAqcnYgKQorIC8vICAgICAgICAgICAgICAgICAgY1RocmVhZExvY2sKKyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworIAorLSNpZiAoIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0KSApIHx8IGRlZmluZWQoX19GcmVlQlNEX18pCisrI2lmbmRlZiBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUAorIGNUaHJlYWRMb2NrOjpjVGhyZWFkTG9jaygpCisgeworICAgcHRocmVhZF9tdXRleGF0dHJfdCBhdHRyOworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvYysrMTEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jKysxMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTQ5ZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvYysrMTEucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorSW5kZXg6IG9wZW5ocGktMy42LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbmhwaS0zLjYuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG9wZW5ocGktMy42LjEvY29uZmlndXJlLmFjCitAQCAtNDQsNiArNDQsNyBAQCBBQ19QUk9HX0NQUAorIEFDX1BST0dfSU5TVEFMTAorIEFDX1BST0dfTE5fUworIEFDX1BST0dfTUFLRV9TRVQKKytBWF9DWFhfQ09NUElMRV9TVERDWFhfMTEoW25vZXh0XSxbbWFuZGF0b3J5XSkKKyAKKyBlbmFibGVkX25vbjMyYml0PSJubyIKKyBBQ19BUkdfRU5BQkxFKFtub24zMmJpdC1pbnRdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvY2xhbmctYysrMTEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jbGFuZy1jKysxMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjM1YTBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvY2xhbmctYysrMTEucGF0Y2gKQEAgLTAsMCArMSwxMjg4IEBACitJbmRleDogb3BlbmhwaS0zLjYuMS9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL25ld19zaW0uY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbmhwaS0zLjYuMS5vcmlnL3BsdWdpbnMvZHluYW1pY19zaW11bGF0b3IvbmV3X3NpbS5jcHAKKysrKyBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvZHluYW1pY19zaW11bGF0b3IvbmV3X3NpbS5jcHAKK0BAIC00MTUsNyArNDE1LDcgQEAgZXh0ZXJuICJDIiB7CisgLyoqCisgICogQWxpYXMgZm9yIEByZWYgw7ZoX29wZW4oKSwgaW1wbGVtZW50ZWQgYnkgQHJlZiBOZXdTaW11bGF0b3JPcGVuKCkuCisgICoqLworLXN0YXRpYyB2b2lkICogTmV3U2ltdWxhdG9yT3BlbiggR0hhc2hUYWJsZSAqLCB1bnNpZ25lZCBpbnQsIG9oX2V2dF9xdWV1ZSAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyB2b2lkICogTmV3U2ltdWxhdG9yT3BlbiggR0hhc2hUYWJsZSAqLCB1bnNpZ25lZCBpbnQsIG9oX2V2dF9xdWV1ZSAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yT3BlbiIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyAvKioKKyAgKiBAZm4gTmV3U2ltdWxhdG9yT3BlbiggR0hhc2hUYWJsZSAqaGFuZGxlcl9jb25maWcsIHVuc2lnbmVkIGludCBoaWQsIAorQEAgLTUzMCw3ICs1MzAsNyBAQCBzdGF0aWMgdm9pZCAqIE5ld1NpbXVsYXRvck9wZW4oIEdIYXNoVGFiCisgLyoqCisgICogQWxpYXMgZm9yIEByZWYgw7ZoX2Nsb3NlKCksIGltcGxlbWVudGVkIGJ5IEByZWYgTmV3U2ltdWxhdG9yQ2xvc2UoKS4KKyAgKiovCistc3RhdGljIHZvaWQgTmV3U2ltdWxhdG9yQ2xvc2UoIHZvaWQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytzdGF0aWMgdm9pZCBOZXdTaW11bGF0b3JDbG9zZSggdm9pZCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yQ2xvc2UiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgLyoqCisgICogQHJlbGF0ZSBOZXdTaW11bGF0b3JDbG9zZQorQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGF0aWMgdm9pZCBOZXdTaW11bGF0b3JDbG9zZSggdm9pZCAqaG5kCisgICogCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKy1zdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RXZlbnQoIHZvaWQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RXZlbnQoIHZvaWQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEV2ZW50IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRFdmVudCggdm9pZCAqaG5kICkgeworICAgIGRiZyggIk5ld1NpbXVsYXRvckdldEV2ZW50IiApOworQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RXZlbnQoIHZvCisgICogCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKy1zdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGlzY292ZXJSZXNvdXJjZXMoIHZvaWQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGlzY292ZXJSZXNvdXJjZXMoIHZvaWQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckRpc2NvdmVyUmVzb3VyY2VzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JEaXNjb3ZlclJlc291cmNlcyggdm9pZCAqaG5kICkgeworICAgIGRiZyggIk5ld1NpbXVsYXRvckRpc2NvdmVyUmVzb3VyY2VzIiApOworQEAgLTY0MSw3ICs2NDEsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGlzY292ZXJSZXNvCisgICogCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKy1zdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0UmVzb3VyY2VUYWcoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgU2FIcGlUZXh0QnVmZmVyVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRSZXNvdXJjZVRhZyggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVRleHRCdWZmZXJUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRSZXNvdXJjZVRhZyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0UmVzb3VyY2VUYWcoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUZXh0QnVmZmVyVCAqdGFnICkgeworQEAgLTY2OSw3ICs2NjksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0UmVzb3VyY2VUCisgICogCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKy1zdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0UmVzb3VyY2VTZXZlcml0eSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVNldmVyaXR5VCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0UmVzb3VyY2VTZXZlcml0eSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVNldmVyaXR5VCApIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldFJlc291cmNlU2V2ZXJpdHkiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFJlc291cmNlU2V2ZXJpdHkoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNldmVyaXR5VCBzZXYgKSB7CitAQCAtNzAzLDcgKzcwMyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JSZWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQgbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JSZWFkaW5nVCAqZGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKnN0YXRlICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCAqc3RhdGUgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRTZW5zb3JSZWFkaW5nIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JSZWFkaW5nKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTczOCw3ICs3MzgsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yUmVhCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbnNvclRocmVzaG9sZHMoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvclRocmVzaG9sZHNUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JUaHJlc2hvbGRzVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0U2Vuc29yVGhyZXNob2xkcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yVGhyZXNob2xkcyggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC03NzcsNyArNzc3LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbnNvclRocgorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZW5zb3JUaHJlc2hvbGRzKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2FIcGlTZW5zb3JUaHJlc2hvbGRzVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2FIcGlTZW5zb3JUaHJlc2hvbGRzVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0U2Vuc29yVGhyZXNob2xkcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yVGhyZXNob2xkcyggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC04MTUsNyArODE1LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbnNvclRocgorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JFbmFibGUoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldFNlbnNvckVuYWJsZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yRW5hYmxlKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtODQ5LDcgKzg0OSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZW5zb3JFbmEKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yRW5hYmxlKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldFNlbnNvckVuYWJsZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yRW5hYmxlKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtODgzLDcgKzg4Myw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZW5zb3JFbmEKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yRXZlbnRFbmFibGVzKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRTZW5zb3JFdmVudEVuYWJsZXMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbnNvckV2ZW50RW5hYmxlcyggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTkxNiw3ICs5MTYsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yRXZlCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbnNvckV2ZW50RW5hYmxlcyggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRTZW5zb3JFdmVudEVuYWJsZXMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbnNvckV2ZW50RW5hYmxlcyggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTk1Miw3ICs5NTIsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yRXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCAqLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0U2Vuc29yRXZlbnRNYXNrcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2Vuc29yRXZlbnRNYXNrcyggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC05OTAsNyArOTkwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbnNvckV2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JFdmVudE1hc2tBY3Rpb25ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0U2Vuc29yRXZlbnRNYXNrcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yRXZlbnRNYXNrcyggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xMDI2LDcgKzEwMjYsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2Vuc29yRXZlCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldENvbnRyb2xTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxOdW1ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxNb2RlVCAqLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsU3RhdGVUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRDb250cm9sU3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldENvbnRyb2xTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxOdW1UIG51bSwKK0BAIC0xMDYxLDcgKzEwNjEsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0Q29udHJvbFN0Cisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldENvbnRyb2xTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxOdW1ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxNb2RlVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsU3RhdGVUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybFN0YXRlVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0Q29udHJvbFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRDb250cm9sU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsTnVtVCBudW0sCitAQCAtMTA5OSw3ICsxMDk5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldE5leHRBbm5vdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNldmVyaXR5VCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm5vdW5jZW1lbnRUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubm91bmNlbWVudFQgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0TmV4dEFubm91bmNlbWVudCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldE5leHRBbm5vdW5jZW1lbnQodm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1UIG51bSwKK0BAIC0xMTM1LDcgKzExMzUsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0TmV4dEFubm91Cisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEFubm91bmNlbWVudCh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubm91bmNlbWVudFQgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5ub3VuY2VtZW50VCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRBbm5vdW5jZW1lbnQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRBbm5vdW5jZW1lbnQodm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubnVuY2lhdG9yTnVtVCAgbnVtLCAKK0BAIC0xMTcxLDcgKzExNzEsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0QW5ub3VuY2VtCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFja0Fubm91bmNlbWVudCh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNldmVyaXR5VCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2V2ZXJpdHlUKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JBY2tBbm5vdW5jZW1lbnQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBY2tBbm5vdW5jZW1lbnQodm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubnVuY2lhdG9yTnVtVCAgbnVtLCAKK0BAIC0xMjA1LDcgKzEyMDUsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWNrQW5ub3VuY2VtCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRBbm5vdW5jZW1lbnQodm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubnVuY2lhdG9yTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm5vdW5jZW1lbnRUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubm91bmNlbWVudFQgKikgX19hc21fXygiTmV3U2ltdWxhdG9yQWRkQW5ub3VuY2VtZW50IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRBbm5vdW5jZW1lbnQodm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubnVuY2lhdG9yTnVtVCAgbnVtLCAKK0BAIC0xMjM5LDcgKzEyMzksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkQW5ub3VuY2VtCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckRlbEFubm91bmNlbWVudCh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNldmVyaXR5VCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2V2ZXJpdHlUKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JEZWxBbm5vdW5jZW1lbnQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckRlbEFubm91bmNlbWVudCh2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1UICBudW0sIAorQEAgLTEyNzMsNyArMTI3Myw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JEZWxBbm5vdW5jZW0KKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEFubk1vZGUodm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubnVuY2lhdG9yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUFubnVuY2lhdG9yTW9kZVQgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JNb2RlVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRBbm5Nb2RlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRBbm5Nb2RlKHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlBbm51bmNpYXRvck51bVQgIG51bSwgCitAQCAtMTMwNiw3ICsxMzA2LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEFubk1vZGUodgorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0QW5uTW9kZSh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JNb2RlVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JNb2RlVCkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0QW5uTW9kZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0QW5uTW9kZSh2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQW5udW5jaWF0b3JOdW1UICBudW0sCitAQCAtMTM0MCw3ICsxMzQwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEFubk1vZGUodgorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRJZHJJbmZvKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckluZm9UICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckluZm9UICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRJZHJJbmZvIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRJZHJJbmZvKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTEzODAsNyArMTM4MCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRJZHJBcmVhSGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyQXJlYVR5cGVULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyQXJlYUhlYWRlclQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyQXJlYUhlYWRlclQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldElkckFyZWFIZWFkZXIiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldElkckFyZWFIZWFkZXIoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTQxOSw3ICsxNDE5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckFyZWEoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckFyZWFUeXBlVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckFkZElkckFyZWEiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckFyZWEoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckFyZWFCeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRySWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJBcmVhVHlwZVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvckFkZElkckFyZWFCeUlkIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRJZHJBcmVhQnlJZCggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkSWRyQXJlYUJ5Cisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckRlbElkckFyZWEoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICkgX19hc21fXygiTmV3U2ltdWxhdG9yRGVsSWRyQXJlYSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGVsSWRyQXJlYSggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNTMyLDcgKzE1MzIsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0SWRyRmllbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFR5cGVULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyRmllbGRUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldElkckZpZWxkIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRJZHJGaWVsZCggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTU3MCw3ICsxNTcwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldElkckZpZWxkKAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRJZHJGaWVsZCggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yQWRkSWRyRmllbGQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckZpZWxkKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNjA0LDcgKzE2MDQsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQWRkSWRyRmllbGQoCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZElkckZpZWxkQnlJZCggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yQWRkSWRyRmllbGRCeUlkIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRJZHJGaWVsZEJ5SWQoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTE2MzcsNyArMTYzNyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRJZHJGaWVsZEIKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0SWRyRmllbGQoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRySWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyRmllbGRUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldElkckZpZWxkIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRJZHJGaWVsZCggdm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTY3Miw3ICsxNjcyLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckRlbElkckZpZWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JEZWxJZHJGaWVsZCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yRGVsSWRyRmllbGQoIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTE3MDQsNyArMTcwNCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JEZWxJZHJGaWVsZCgKKyAgKiovIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZWxJbmZvKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudExvZ0luZm9UICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nSW5mb1QgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldFNlbEluZm8iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbEluZm8oIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTczNiw3ICsxNzM2LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbEluZm8oCisgICogCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8gCistc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbFRpbWUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgU2FIcGlUaW1lVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2VsVGltZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVRpbWVUICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0U2VsVGltZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2VsVGltZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLCBTYUhwaVRpbWVUIHQgKSB7CisgICAgU2FFcnJvclQgcnYgPSBTQV9FUlJfSFBJX0lOVEVSTkFMX0VSUk9SOworQEAgLTE3NjYsNyArMTc2Niw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZWxUaW1lKAorICAqIAorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovIAorLXN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRTZWxFbnRyeSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBjb25zdCBTYUhwaUV2ZW50VCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBZGRTZWxFbnRyeSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBjb25zdCBTYUhwaUV2ZW50VCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yQWRkU2VsRW50cnkiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckFkZFNlbEVudHJ5KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2FIcGlFdmVudFQgKkV2ZW50ICkgeworQEAgLTE4MDksNyArMTgwOSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZWxFbnRyeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nRW50cnlJZFQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nRW50cnlUICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZHJUICosCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlScHRFbnRyeVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJwdEVudHJ5VCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0U2VsRW50cnkiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbEVudHJ5KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudExvZ0VudHJ5SWRUIGN1cnJlbnQsCitAQCAtMTg0NCw3ICsxODQ0LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFNlbEVudHJ5KAorICAqIAorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovIAorLXN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDbGVhclNlbCggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK3N0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDbGVhclNlbCggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRUICkgX19hc21fXygiTmV3U2ltdWxhdG9yQ2xlYXJTZWwiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNsZWFyU2VsKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQgKSB7CisgICAgU2FFcnJvclQgcnYgPSBTQV9FUlJfSFBJX0lOVEVSTkFMX0VSUk9SOworQEAgLTE4NzUsNyArMTg3NSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDbGVhclNlbCggdm8KKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0U2VsU3RhdGUodm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQpIF9fYXNtX18oIk5ld1NpbXVsYXRvclNldFNlbFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRTZWxTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgc3RhdGUgKSB7CitAQCAtMTkwNyw3ICsxOTA3LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFNlbFN0YXRlKAorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZWxTdGF0ZSh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldFNlbFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZWxTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKnN0YXRlICkgeworQEAgLTE5MzksNyArMTkzOSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZWxTdGF0ZSgKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2VsQ2FwYWJpbGl0eSh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudExvZ0NhcGFiaWxpdGllc1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudExvZ0NhcGFiaWxpdGllc1QgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0U2VsQ2FwYWJpbGl0eSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0U2VsQ2FwYWJpbGl0eSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dDYXBhYmlsaXRpZXNUICpjYXBzICkgeworQEAgLTE5NzAsNyArMTk3MCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRTZWxDYXBhYmkKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yUmVzZXRTZWxPdmVyZmxvdyh2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQpIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXygiTmV3U2ltdWxhdG9yUmVzZXRTZWxPdmVyZmxvdyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yUmVzZXRTZWxPdmVyZmxvdyggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkICkgeworIAorQEAgLTIwMDIsNyArMjAwMiw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JSZXNldFNlbE92ZXIKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JIb3Rzd2FwUG9saWN5Q2FuY2VsKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCApIF9fYXNtX18oIk5ld1NpbXVsYXRvckhvdHN3YXBQb2xpY3lDYW5jZWwiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckhvdHN3YXBQb2xpY3lDYW5jZWwoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgdGltZW91dCkgeworQEAgLTIwMzIsNyArMjAzMiw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JIb3Rzd2FwUG9saWMKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRIb3Rzd2FwU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCAsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc1N0YXRlVCAqICkgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0SG90c3dhcFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRIb3Rzd2FwU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc1N0YXRlVCAqc3RhdGUgKSB7CitAQCAtMjA2Myw3ICsyMDYzLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEhvdHN3YXBTdAorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEhvdHN3YXBTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzU3RhdGVUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzU3RhdGVUICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0SG90c3dhcFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRIb3Rzd2FwU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc1N0YXRlVCBzdGF0ZSApIHsKK0BAIC0yMTA1LDcgKzIxMDUsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0SG90c3dhcFN0CisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yUmVxdWVzdEhvdHN3YXBBY3Rpb24oIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzQWN0aW9uVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzQWN0aW9uVCApIF9fYXNtX18oIk5ld1NpbXVsYXRvclJlcXVlc3RIb3Rzd2FwQWN0aW9uIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JSZXF1ZXN0SG90c3dhcEFjdGlvbiggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNBY3Rpb25UIGFjdCApIHsKK0BAIC0yMTM5LDcgKzIxMzksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yUmVxdWVzdEhvdHN3Cisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFdhdGNoZG9nSW5mbyh2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ1QgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0V2F0Y2hkb2dJbmZvIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRXYXRjaGRvZ0luZm8odm9pZCAqaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgIGlkLAorQEAgLTIxNzAsNyArMjE3MCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRXYXRjaGRvZ0kKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0V2F0Y2hkb2dJbmZvKHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRXYXRjaGRvZ0luZm8iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFdhdGNoZG9nSW5mbyh2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgaWQsCitAQCAtMjE5OSw3ICsyMTk5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldFdhdGNoZG9nSQorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yUmVzZXRXYXRjaGRvZyh2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JSZXNldFdhdGNoZG9nIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JSZXNldFdhdGNoZG9nKHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgaWQsCitAQCAtMjIyOSw3ICsyMjI5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclJlc2V0V2F0Y2hkbworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pU3BlYyh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaVNwZWNJbmZvVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlTcGVjSW5mb1QgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RnVtaVNwZWMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlTcGVjKHZvaWQgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICAgIGlkLCAKK0BAIC0yMjYwLDcgKzIyNjAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVNwZWMoCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlTZXJ2SW1wYWN0KHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pU2VydmljZUltcGFjdERhdGFUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaVNlcnZpY2VJbXBhY3REYXRhVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRGdW1pU2VydkltcGFjdCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVNlcnZJbXBhY3Qodm9pZCAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgICAgICAgICAgICBpZCwgCitAQCAtMjI5NCw3ICsyMjk0LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEZ1bWlTb3VyYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRleHRCdWZmZXJUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUZXh0QnVmZmVyVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRGdW1pU291cmNlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0RnVtaVNvdXJjZSh2b2lkICAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICBpZCwgCitAQCAtMjMyNyw3ICsyMzI3LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEZ1bWlTb3VyYworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JWYWxpZGF0ZUZ1bWlTb3VyY2Uodm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCkgX19hc21fXygiTmV3U2ltdWxhdG9yVmFsaWRhdGVGdW1pU291cmNlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JWYWxpZGF0ZUZ1bWlTb3VyY2Uodm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTIzNjEsNyArMjM2MSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pU291cmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pU291cmNlSW5mb1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlTb3VyY2VJbmZvVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRGdW1pU291cmNlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVNvdXJjZSh2b2lkICAgICAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICAgICBpZCwgCitAQCAtMjQwMCw3ICsyNDAwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlTb3VyYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKiwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlDb21wb25lbnRJbmZvVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlDb21wb25lbnRJbmZvVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRGdW1pU291cmNlQ29tcG9uZW50IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pU291cmNlQ29tcG9uZW50KHZvaWQgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjQzNyw3ICsyNDM3LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlUYXJnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlCYW5rSW5mb1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlCYW5rSW5mb1QgKikgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RnVtaVRhcmdldCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVRhcmdldCh2b2lkICAgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgIGlkLCAKK0BAIC0yNDc2LDcgKzI0NzYsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVRhcmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqLCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pQ29tcG9uZW50SW5mb1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlDb21wb25lbnRJbmZvVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRGdW1pVGFyZ2V0Q29tcG9uZW50IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlUYXJnZXRDb21wb25lbnQodm9pZCAgICAgICAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICAgICAgICBpZCwgCitAQCAtMjUxMSw3ICsyNTExLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlUYXJnZQorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pTG9naWNhbFRhcmdldCh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaUxvZ2ljYWxCYW5rSW5mb1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTG9naWNhbEJhbmtJbmZvVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRGdW1pTG9naWNhbFRhcmdldCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaUxvZ2ljYWxUYXJnZXQodm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0yNTQ3LDcgKzI1NDcsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaUxvZ2ljCisgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqLCAKKy0gICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTG9naWNhbENvbXBvbmVudEluZm9UICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTG9naWNhbENvbXBvbmVudEluZm9UICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEZ1bWlMb2dpY2FsVGFyZ2V0Q29tcG9uZW50IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlMb2dpY2FsVGFyZ2V0Q29tcG9uZW50KHZvaWQgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLCAKK0BAIC0yNTc5LDcgKzI1NzksNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaUxvZ2ljCisgICoqLyAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlCYWNrdXAodm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCkgX19hc21fXygiTmV3U2ltdWxhdG9yU3RhcnRGdW1pQmFja3VwIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlCYWNrdXAodm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTI2MTIsNyArMjYxMiw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRGdW1pQmFua08KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlVaW50MzJUKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVWludDMyVCkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0RnVtaUJhbmtPcmRlciIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0RnVtaUJhbmtPcmRlcih2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTI2NDcsNyArMjY0Nyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlCYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvclN0YXJ0RnVtaUJhbmtDb3B5IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaUJhbmtDb3B5KHZvaWQgICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICBpZCwgCitAQCAtMjY4MCw3ICsyNjgwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaUJhbgorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlJbnN0YWxsKHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTdGFydEZ1bWlJbnN0YWxsIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pSW5zdGFsbCh2b2lkICAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICBpZCwgCitAQCAtMjcxNCw3ICsyNzE0LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEZ1bWlTdGF0dQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlVcGdyYWRlU3RhdHVzVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaVVwZ3JhZGVTdGF0dXNUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEZ1bWlTdGF0dXMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pU3RhdHVzKHZvaWQgICAgICAgICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgICAgICAgIGlkLCAKK0BAIC0yNzQ3LDcgKzI3NDcsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVN0YXR1Cisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaVZlcmlmaWNhdGlvbih2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQmFua051bVQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTdGFydEZ1bWlWZXJpZmljYXRpb24iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaVZlcmlmaWNhdGlvbih2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjc3Niw3ICsyNzc2LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaVZlcgorICAqKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlWZXJpZmljYXRpb25NYWluKHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvclN0YXJ0RnVtaVZlcmlmaWNhdGlvbk1haW4iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RnVtaVZlcmlmaWNhdGlvbk1haW4odm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLCAKK0BAIC0yODA3LDcgKzI4MDcsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pVmVyCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNhbmNlbEZ1bWlVcGdyYWRlKHZvaWQgKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCYW5rTnVtVCkgX19hc21fXygiTmV3U2ltdWxhdG9yQ2FuY2VsRnVtaVVwZ3JhZGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQ2FuY2VsRnVtaVVwZ3JhZGUodm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjgzOCw3ICsyODM4LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNhbmNlbEZ1bWlVcAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRGdW1pUm9sbGJhY2sodm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEZ1bWlSb2xsYmFjayIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVJvbGxiYWNrKHZvaWQgICAgICAgICAgICAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLCAKK0BAIC0yODcwLDcgKzI4NzAsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RnVtaVJvbGxiCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEZ1bWlSb2xsYmFjayh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRnVtaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRGdW1pUm9sbGJhY2siKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEZ1bWlSb2xsYmFjayh2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCBpZCwgCitAQCAtMjkwMCw3ICsyOTAwLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEZ1bWlSb2xsYgorICAqKi8gICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlSb2xsYmFjayh2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTdGFydEZ1bWlSb2xsYmFjayIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pUm9sbGJhY2sodm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTI5MjksNyArMjkyOSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlSb2wKKyAgKiovICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBY3RpdmF0ZUZ1bWkodm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUZ1bWlOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCkgX19hc21fXygiTmV3U2ltdWxhdG9yQWN0aXZhdGVGdW1pIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBY3RpdmF0ZUZ1bWkodm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTI5NjAsNyArMjk2MCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JBY3RpdmF0ZUZ1bWkKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pQWN0aXZhdGlvbih2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCkgX19hc21fXygiTmV3U2ltdWxhdG9yU3RhcnRGdW1pQWN0aXZhdGlvbiIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU3RhcnRGdW1pQWN0aXZhdGlvbih2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTI5OTIsNyArMjk5Miw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydEZ1bWlBY3QKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQ2xlYW51cEZ1bWkodm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlGdW1pTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJhbmtOdW1UKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JDbGVhbnVwRnVtaSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDbGVhbnVwRnVtaSh2b2lkICAgICAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLCAKK0BAIC0zMDIzLDcgKzMwMjMsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQ2xlYW51cEZ1bWkoCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlJbmZvKCB2b2lkICosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaU51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaUluZm9UICopICBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pSW5mb1QgKikgIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldERpbWlJbmZvIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXREaW1pSW5mbyggdm9pZCAgICAgICAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsIAorQEAgLTMwNTcsNyArMzA1Nyw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXREaW1pVGVzdEkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pTnVtVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3ROdW1ULCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3RUICopICBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0VCAqKSAgX19hc21fXygiTmV3U2ltdWxhdG9yR2V0RGltaVRlc3RJbmZvIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlUZXN0SW5mbyggdm9pZCAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUICBpZCwgCitAQCAtMzA5Miw3ICszMDkyLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlUZXN0UgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pTnVtVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdE51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlSZWFkeVQgKikgIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pUmVhZHlUICopICBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXREaW1pVGVzdFJlYWRpbmVzcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RGltaVRlc3RSZWFkaW5lc3MoIHZvaWQgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgICAgaWQsIAorQEAgLTMxMjksNyArMzEyOSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTdGFydERpbWlUZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0TnVtVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVVpbnQ4VCwgCistICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdFZhcmlhYmxlUGFyYW1zVCAqKSAgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3RWYXJpYWJsZVBhcmFtc1QgKikgIF9fYXNtX18oIk5ld1NpbXVsYXRvclN0YXJ0RGltaVRlc3QiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RGltaVRlc3QoIHZvaWQgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgICAgICAgICAgICBpZCwgCitAQCAtMzE2Myw3ICszMTYzLDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclN0YXJ0RGltaVRlcworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDYW5jZWxEaW1pVGVzdCggdm9pZCAqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pTnVtVCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0TnVtVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdE51bVQpIF9fYXNtX18oIk5ld1NpbXVsYXRvckNhbmNlbERpbWlUZXN0IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDYW5jZWxEaW1pVGVzdCggdm9pZCAgICAgICpobmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgaWQsIAorQEAgLTMxOTksNyArMzE5OSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXREaW1pVGVzdFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlOdW1ULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaURpbWlUZXN0TnVtVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdFBlcmNlbnRDb21wbGV0ZWRUICosCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdFJ1blN0YXR1c1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3RSdW5TdGF0dXNUICopIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldERpbWlUZXN0U3RhdHVzIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXREaW1pVGVzdFN0YXR1cyggdm9pZCAgICAgICAgKmhuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCAgICAgICAgICAgICAgIGlkLCAKK0BAIC0zMjM0LDcgKzMyMzQsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0RGltaVRlc3RSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaU51bVQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdE51bVQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlEaW1pVGVzdFJlc3VsdHNUICopIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRGltaVRlc3RSZXN1bHRzVCAqKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXREaW1pVGVzdFJlc3VsdHMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldERpbWlUZXN0UmVzdWx0cyggdm9pZCAqaG5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgICAgICAgaWQsIAorQEAgLTMyNjMsNyArMzI2Myw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXREaW1pVGVzdFIKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRBdXRvSW5zZXJ0VGltZW91dCggdm9pZCAqLCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0QXV0b0luc2VydFRpbWVvdXQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEF1dG9JbnNlcnRUaW1lb3V0KCB2b2lkICpobmQsIFNhSHBpVGltZW91dFQgIHRpbWVvdXQpIHsKKyAgICBOZXdTaW11bGF0b3IgKm5ld3NpbSA9IFZlcmlmeU5ld1NpbXVsYXRvciggaG5kICk7CitAQCAtMzI4OSw3ICszMjg5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEF1dG9JbnNlcgorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEF1dG9FeHRyYWN0VGltZW91dCggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldEF1dG9FeHRyYWN0VGltZW91dCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0QXV0b0V4dHJhY3RUaW1lb3V0KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKnRpbWVvdXQgKSB7CitAQCAtMzMxOSw3ICszMzE5LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldEF1dG9FeHRyYQorICAqIEByZXR1cm4gSFBJIGVycm9yIGNvZGUKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvclNldEF1dG9FeHRyYWN0VGltZW91dCggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICkgX19hc21fXygiTmV3U2ltdWxhdG9yU2V0QXV0b0V4dHJhY3RUaW1lb3V0IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRBdXRvRXh0cmFjdFRpbWVvdXQoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCB0aW1lb3V0ICkgeworQEAgLTMzNTAsNyArMzM1MCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRBdXRvRXh0cmEKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRQb3dlclN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVBvd2VyU3RhdGVUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVBvd2VyU3RhdGVUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRQb3dlclN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRQb3dlclN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVBvd2VyU3RhdGVUICpzdGF0ZSApIHsKK0BAIC0zMzgyLDcgKzMzODIsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0UG93ZXJTdGF0CisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0UG93ZXJTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlQb3dlclN0YXRlVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRQb3dlclN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRQb3dlclN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVBvd2VyU3RhdGVUIHN0YXRlICkgeworQEAgLTM0MTQsNyArMzQxNCw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRQb3dlclN0YXQKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRJbmRpY2F0b3JTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzSW5kaWNhdG9yU3RhdGVUICogKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JHZXRJbmRpY2F0b3JTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzSW5kaWNhdG9yU3RhdGVUICpzdGF0ZSApIHsKK0BAIC0zNDQ2LDcgKzM0NDYsNyBAQCBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yR2V0SW5kaWNhdG9yCisgICogQHJldHVybiBIUEkgZXJyb3IgY29kZQorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzSW5kaWNhdG9yU3RhdGVUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRJbmRpY2F0b3JTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzSW5kaWNhdG9yU3RhdGVUIHN0YXRlICkgeworQEAgLTM0NzksNyArMzQ3OSw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRJbmRpY2F0b3IKKyAgKiovCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckNvbnRyb2xQYXJtKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVBhcm1BY3Rpb25UICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUGFybUFjdGlvblQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JDb250cm9sUGFybSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yQ29udHJvbFBhcm0oIHZvaWQgKmhuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTM1MTIsNyArMzUxMiw3IEBAIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JDb250cm9sUGFybSgKKyAgKiBAcmV0dXJuIEhQSSBlcnJvciBjb2RlCisgICoqLworIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JHZXRSZXNldFN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc2V0QWN0aW9uVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNldEFjdGlvblQgKiApIF9fYXNtX18oIk5ld1NpbXVsYXRvckdldFJlc2V0U3RhdGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFJlc2V0U3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzZXRBY3Rpb25UICphY3QgKSB7CitAQCAtMzU0NSw3ICszNTQ1LDcgQEAgc3RhdGljIFNhRXJyb3JUIE5ld1NpbXVsYXRvckdldFJlc2V0U3RhdAorICAqKi8KKyBzdGF0aWMgU2FFcnJvclQgTmV3U2ltdWxhdG9yU2V0UmVzZXRTdGF0ZSggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzZXRBY3Rpb25UICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNldEFjdGlvblQgKSBfX2FzbV9fKCJOZXdTaW11bGF0b3JTZXRSZXNldFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVCBOZXdTaW11bGF0b3JTZXRSZXNldFN0YXRlKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRUIGlkLAorSW5kZXg6IG9wZW5ocGktMy42LjEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci9uZXdfc2ltX2ZpbGUuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbmhwaS0zLjYuMS5vcmlnL3BsdWdpbnMvZHluYW1pY19zaW11bGF0b3IvbmV3X3NpbV9maWxlLmNwcAorKysrIG9wZW5ocGktMy42LjEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci9uZXdfc2ltX2ZpbGUuY3BwCitAQCAtNDQsOSArNDQsOSBAQAorIC8vLzwgR2xvYmFsIHNraXAgY2hhcmFjdGVycyBmb3Igb2hfc2Nhbm5lcl9jb25maWcKKyBzdGF0aWMgZ2NoYXIgc2tpcF9jaGFyYWN0ZXJzW10gPSAiIFx0XG4iOyAgCisgLy8vPCBHbG9iYWwgaWRlbnRpZmllcl9maXJzdCBmb3Igb2hfc2Nhbm5lcl9jb25maWcKKy1zdGF0aWMgZ2NoYXIgaWRlbnRpZmllcl9maXJzdFtdID0gR19DU0VUX2FfMl96Il8vLiJHX0NTRVRfQV8yX1o7IAorK3N0YXRpYyBnY2hhciBpZGVudGlmaWVyX2ZpcnN0W10gPSBHX0NTRVRfYV8yX3ogIl8vLiIgR19DU0VUX0FfMl9aOworIC8vLzwgR2xvYmFsIGlkZW50aWZpZXJfbnRoIGZvciBvaF9zY2FubmVyX2NvbmZpZworLXN0YXRpYyBnY2hhciBpZGVudGlmaWVyX250aFtdID0gR19DU0VUX2FfMl96Il8tMDEyMzQ1Njc4OS8uIkdfQ1NFVF9BXzJfWjsKKytzdGF0aWMgZ2NoYXIgaWRlbnRpZmllcl9udGhbXSA9IEdfQ1NFVF9hXzJfeiAiXy0wMTIzNDU2Nzg5Ly4iIEdfQ1NFVF9BXzJfWjsKKyAvLy88IEdsb2JhbCBjb21tZW50IHNpZ25zIGZvciBvaF9zY2FubmVyX2NvbmZpZworIHN0YXRpYyBnY2hhciBjb21tZW50X3NpbmdsZVtdID0gIiNcbiI7CisgCitJbmRleDogb3BlbmhwaS0zLjYuMS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaS5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWkuY3BwCisrKysgb3BlbmhwaS0zLjYuMS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaS5jcHAKK0BAIC0yNzksNyArMjc5LDcgQEAgZXh0ZXJuICJDIiB7CisgLy8gQUJJIEludGVyZmFjZSBmdW5jdGlvbnMKKyAKKyBzdGF0aWMgdm9pZCAqCistSXBtaU9wZW4oIEdIYXNoVGFibGUgKiwgdW5zaWduZWQgaW50LCBvaF9ldnRfcXVldWUgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytJcG1pT3BlbiggR0hhc2hUYWJsZSAqLCB1bnNpZ25lZCBpbnQsIG9oX2V2dF9xdWV1ZSAqICkgIF9fYXNtX18oIklwbWlPcGVuIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyB2b2lkICoKKyBJcG1pT3BlbiggR0hhc2hUYWJsZSAqaGFuZGxlcl9jb25maWcsIHVuc2lnbmVkIGludCBoaWQsIG9oX2V2dF9xdWV1ZSAqZXZlbnRxICkKK0BAIC0zODgsNyArMzg4LDcgQEAgSXBtaU9wZW4oIEdIYXNoVGFibGUgKmhhbmRsZXJfY29uZmlnLCB1bgorIAorIAorIHN0YXRpYyB2b2lkCistSXBtaUNsb3NlKCB2b2lkICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrSXBtaUNsb3NlKCB2b2lkICogKSBfX2FzbV9fKCJJcG1pQ2xvc2UiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIHZvaWQKKyBJcG1pQ2xvc2UoIHZvaWQgKmhuZCApCitAQCAtNDM2LDcgKzQzNiw3IEBAIElwbWlDbG9zZSggdm9pZCAqaG5kICkKKyAKKyAKKyBzdGF0aWMgU2FFcnJvclQKKy1JcG1pR2V0RXZlbnQoIHZvaWQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytJcG1pR2V0RXZlbnQoIHZvaWQgKiApIF9fYXNtX18oIklwbWlHZXRFdmVudCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0RXZlbnQoIHZvaWQgKmhuZCApCitAQCAtNDU4LDcgKzQ1OCw3IEBAIElwbWlHZXRFdmVudCggdm9pZCAqaG5kICkKKyAKKyAKKyBzdGF0aWMgU2FFcnJvclQKKy1JcG1pRGlzY292ZXJSZXNvdXJjZXMoIHZvaWQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytJcG1pRGlzY292ZXJSZXNvdXJjZXMoIHZvaWQgKiApIF9fYXNtX18oIklwbWlEaXNjb3ZlclJlc291cmNlcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pRGlzY292ZXJSZXNvdXJjZXMoIHZvaWQgKmhuZCApCitAQCAtNDc5LDcgKzQ3OSw3IEBAIElwbWlEaXNjb3ZlclJlc291cmNlcyggdm9pZCAqaG5kICkKKyAKKyAKKyBzdGF0aWMgU2FFcnJvclQKKy1JcG1pU2V0UmVzb3VyY2VUYWcoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgU2FIcGlUZXh0QnVmZmVyVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworK0lwbWlTZXRSZXNvdXJjZVRhZyggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVRleHRCdWZmZXJUICogKSBfX2FzbV9fKCJJcG1pU2V0UmVzb3VyY2VUYWciKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFJlc291cmNlVGFnKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsIFNhSHBpVGV4dEJ1ZmZlclQgKnRhZyApCitAQCAtNDk5LDcgKzQ5OSw3IEBAIElwbWlTZXRSZXNvdXJjZVRhZyggdm9pZCAqaG5kLCBTYUhwaVJlc28KKyAKKyAKKyBzdGF0aWMgU2FFcnJvclQKKy1JcG1pU2V0UmVzb3VyY2VTZXZlcml0eSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVNldmVyaXR5VCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytJcG1pU2V0UmVzb3VyY2VTZXZlcml0eSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVNldmVyaXR5VCApIF9fYXNtX18oIklwbWlTZXRSZXNvdXJjZVNldmVyaXR5IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRSZXNvdXJjZVNldmVyaXR5KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsIFNhSHBpU2V2ZXJpdHlUIHNldiApCitAQCAtNTIzLDcgKzUyMyw3IEBAIElwbWlHZXRTZW5zb3JSZWFkaW5nKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQgaWQsCisgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCBudW0sCisgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yUmVhZGluZ1QgKmRhdGEsCistICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKnN0YXRlICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICpzdGF0ZSApIF9fYXNtX18oIklwbWlHZXRTZW5zb3JSZWFkaW5nIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZW5zb3JSZWFkaW5nKCB2b2lkICpobmQsCitAQCAtNTUwLDcgKzU1MCw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZW5zb3JUaHJlc2hvbGRzKCB2b2lkICpobmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JUaHJlc2hvbGRzVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvclRocmVzaG9sZHNUICogKSBfX2FzbV9fKCJJcG1pR2V0U2Vuc29yVGhyZXNob2xkcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0U2Vuc29yVGhyZXNob2xkcyggdm9pZCAgICAgICAgICAgICAgICAgICAqaG5kLAorQEAgLTU4MSw3ICs1ODEsNyBAQCBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0U2Vuc29yVGhyZXNob2xkcyggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNhSHBpU2Vuc29yVGhyZXNob2xkc1QgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2FIcGlTZW5zb3JUaHJlc2hvbGRzVCAqICkgX19hc21fXygiSXBtaVNldFNlbnNvclRocmVzaG9sZHMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFNlbnNvclRocmVzaG9sZHMoIHZvaWQgKmhuZCwKK0BAIC02MTIsNyArNjEyLDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFNlbnNvckVuYWJsZSggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICogKSBfX2FzbV9fKCJJcG1pR2V0U2Vuc29yRW5hYmxlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZW5zb3JFbmFibGUoIHZvaWQgKmhuZCwKK0BAIC02MzgsNyArNjM4LDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFNlbnNvckVuYWJsZSggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgU2FIcGlTZW5zb3JOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCApIF9fYXNtX18oIklwbWlTZXRTZW5zb3JFbmFibGUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFNlbnNvckVuYWJsZSggdm9pZCAqaG5kLAorQEAgLTY2NCw3ICs2NjQsNyBAQCBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0U2Vuc29yRXZlbnRFbmFibGVzKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQm9vbFQgKiApIF9fYXNtX18oIklwbWlHZXRTZW5zb3JFdmVudEVuYWJsZXMiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFNlbnNvckV2ZW50RW5hYmxlcyggdm9pZCAqaG5kLAorQEAgLTY5MCw3ICs2OTAsNyBAQCBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0U2Vuc29yRXZlbnRFbmFibGVzKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlCb29sVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUJvb2xUICkgX19hc21fXygiSXBtaVNldFNlbnNvckV2ZW50RW5hYmxlcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0U2Vuc29yRXZlbnRFbmFibGVzKCB2b2lkICpobmQsCitAQCAtNzE3LDcgKzcxNyw3IEBAIElwbWlHZXRTZW5zb3JFdmVudE1hc2tzKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvck51bVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCAqLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICogKSBfX2FzbV9fKCJJcG1pR2V0U2Vuc29yRXZlbnRNYXNrcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0U2Vuc29yRXZlbnRNYXNrcyggdm9pZCAqaG5kLAorQEAgLTc0Nyw3ICs3NDcsNyBAQCBJcG1pU2V0U2Vuc29yRXZlbnRNYXNrcyggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpU2Vuc29yTnVtVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVNlbnNvckV2ZW50TWFza0FjdGlvblQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFdmVudFN0YXRlVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50U3RhdGVUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRTdGF0ZVQgKSBfX2FzbV9fKCJJcG1pU2V0U2Vuc29yRXZlbnRNYXNrcyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0U2Vuc29yRXZlbnRNYXNrcyggdm9pZCAqaG5kLAorQEAgLTc3Niw3ICs3NzYsNyBAQCBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0Q29udHJvbFN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICAgICAgU2FIcGlDdHJsTnVtVCwKKyAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxNb2RlVCAqLAorLSAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybFN0YXRlVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybFN0YXRlVCAqICkgX19hc21fXygiSXBtaUdldENvbnRyb2xTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0Q29udHJvbFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtODAyLDcgKzgwMiw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRDb250cm9sU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgICBTYUhwaUN0cmxOdW1ULAorICAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybE1vZGVULAorLSAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybFN0YXRlVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgIFNhSHBpQ3RybFN0YXRlVCAqICkgX19hc21fXygiSXBtaVNldENvbnRyb2xTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0Q29udHJvbFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtODI4LDcgKzgyOCw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRJZHJJbmZvKCB2b2lkICosCisgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgIFNhSHBpSWRySWRULAorLSAgICAgICAgICAgICAgICBTYUhwaUlkckluZm9UICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgIFNhSHBpSWRySW5mb1QgKiApIF9fYXNtX18oIklwbWlHZXRJZHJJbmZvIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRJZHJJbmZvKCB2b2lkICpobmQsCitAQCAtODU3LDcgKzg1Nyw3IEBAIElwbWlHZXRJZHJBcmVhSGVhZGVyKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyQXJlYVR5cGVULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULAorICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICosCistICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSWRyQXJlYUhlYWRlclQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgU2FIcGlJZHJBcmVhSGVhZGVyVCAqICkgX19hc21fXygiSXBtaUdldElkckFyZWFIZWFkZXIiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldElkckFyZWFIZWFkZXIoIHZvaWQgKmhuZCwKK0BAIC04ODcsNyArODg3LDcgQEAgSXBtaUFkZElkckFyZWEoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCisgICAgICAgICAgICAgICAgIFNhSHBpSWRyQXJlYVR5cGVULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQgKiApIF9fYXNtX18oIklwbWlBZGRJZHJBcmVhIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlBZGRJZHJBcmVhKCB2b2lkICpobmQsCitAQCAtOTE0LDcgKzkxNCw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlEZWxJZHJBcmVhKCB2b2lkICosCisgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgIFNhSHBpSWRySWRULAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICkgX19hc21fXygiSXBtaURlbElkckFyZWEiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaURlbElkckFyZWEoIHZvaWQgKmhuZCwKK0BAIC05NDQsNyArOTQ0LDcgQEAgSXBtaUdldElkckZpZWxkKCB2b2lkICosCisgICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVHlwZVQsCisgICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCAqLAorLSAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgIFNhSHBpSWRyRmllbGRUICogKSBfX2FzbV9fKCJJcG1pR2V0SWRyRmllbGQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldElkckZpZWxkKCB2b2lkICpobmQsCitAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlBZGRJZHJGaWVsZCggdm9pZCAqLAorICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgIFNhSHBpSWRySWRULAorLSAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgIFNhSHBpSWRyRmllbGRUICogKSBfX2FzbV9fKCJJcG1pQWRkSWRyRmllbGQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUFkZElkckZpZWxkKCB2b2lkICpobmQsCitAQCAtMTAwMCw3ICsxMDAwLDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldElkckZpZWxkKCB2b2lkICosCisgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgU2FIcGlJZHJJZFQsCistICAgICAgICAgICAgICAgICBTYUhwaUlkckZpZWxkVCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgU2FIcGlJZHJGaWVsZFQgKiApIF9fYXNtX18oIklwbWlTZXRJZHJGaWVsZCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0SWRyRmllbGQoIHZvaWQgKmhuZCwKK0BAIC0xMDI3LDcgKzEwMjcsNyBAQCBJcG1pRGVsSWRyRmllbGQoIHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCisgICAgICAgICAgICAgICAgICBTYUhwaUlkcklkVCwKKyAgICAgICAgICAgICAgICAgIFNhSHBpRW50cnlJZFQsCistICAgICAgICAgICAgICAgICBTYUhwaUVudHJ5SWRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgU2FIcGlFbnRyeUlkVCApIF9fYXNtX18oIklwbWlEZWxJZHJGaWVsZCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pRGVsSWRyRmllbGQoIHZvaWQgKmhuZCwKK0BAIC0xMDUzLDcgKzEwNTMsNyBAQCBJcG1pRGVsSWRyRmllbGQoIHZvaWQgKmhuZCwKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0U2VsSW5mbyggdm9pZCAqLAorICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nSW5mb1QgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgU2FIcGlFdmVudExvZ0luZm9UICogKSBfX2FzbV9fKCJJcG1pR2V0U2VsSW5mbyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0U2VsSW5mbyggdm9pZCAqaG5kLAorQEAgLTEwNzUsNyArMTA3NSw3IEBAIElwbWlHZXRTZWxJbmZvKCB2b2lkICpobmQsCisgCisgCisgc3RhdGljIFNhRXJyb3JUCistSXBtaVNldFNlbFRpbWUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwgU2FIcGlUaW1lVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytJcG1pU2V0U2VsVGltZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULCBTYUhwaVRpbWVUICkgX19hc21fXygiSXBtaVNldFNlbFRpbWUiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldFNlbFRpbWUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwgU2FIcGlUaW1lVCB0ICkKK0BAIC0xMDk2LDcgKzEwOTYsNyBAQCBJcG1pU2V0U2VsVGltZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlCisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUFkZFNlbEVudHJ5KCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICBjb25zdCBTYUhwaUV2ZW50VCAqICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgY29uc3QgU2FIcGlFdmVudFQgKiApIF9fYXNtX18oIklwbWlBZGRTZWxFbnRyeSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pQWRkU2VsRW50cnkoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xMTE4LDcgKzExMTgsNyBAQCBJcG1pQWRkU2VsRW50cnkoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjCisgI2lmZGVmIE5PVFVTRUQKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pRGVsU2VsRW50cnkoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dFbnRyeUlkVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgIFNhSHBpRXZlbnRMb2dFbnRyeUlkVCApIF9fYXNtX18oIklwbWlEZWxTZWxFbnRyeSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pRGVsU2VsRW50cnkoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xMTQ1LDcgKzExNDUsNyBAQCBJcG1pR2V0U2VsRW50cnkoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjCisgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nRW50cnlJZFQgKiwgU2FIcGlFdmVudExvZ0VudHJ5SWRUICosCisgICAgICAgICAgICAgICAgICBTYUhwaUV2ZW50TG9nRW50cnlUICosCisgICAgICAgICAgICAgICAgICBTYUhwaVJkclQgKiwKKy0gICAgICAgICAgICAgICAgIFNhSHBpUnB0RW50cnlUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICBTYUhwaVJwdEVudHJ5VCAqICkgX19hc21fXygiSXBtaUdldFNlbEVudHJ5IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRTZWxFbnRyeSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTExNzAsNyArMTE3MCw3IEBAIElwbWlHZXRTZWxFbnRyeSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmMKKyAKKyAKKyBzdGF0aWMgU2FFcnJvclQKKy1JcG1pQ2xlYXJTZWwoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKytJcG1pQ2xlYXJTZWwoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCApIF9fYXNtX18oIklwbWlDbGVhclNlbCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pQ2xlYXJTZWwoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCApCitAQCAtMTE5MCw3ICsxMTkwLDcgQEAgSXBtaUNsZWFyU2VsKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZAorIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlIb3Rzd2FwUG9saWN5Q2FuY2VsKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2FzbV9fKCJJcG1pSG90c3dhcFBvbGljeUNhbmNlbCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pSG90c3dhcFBvbGljeUNhbmNlbCggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTEyMTAsNyArMTIxMCw3IEBAIElwbWlIb3Rzd2FwUG9saWN5Q2FuY2VsKCB2b2lkICpobmQsIFNhSHAKKyB9CisgCisgc3RhdGljIFNhRXJyb3JUCistSXBtaVNldEF1dG9JbnNlcnRUaW1lb3V0KCB2b2lkICosIFNhSHBpVGltZW91dFQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrSXBtaVNldEF1dG9JbnNlcnRUaW1lb3V0KCB2b2lkICosIFNhSHBpVGltZW91dFQgKSBfX2FzbV9fKCJJcG1pU2V0QXV0b0luc2VydFRpbWVvdXQiKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldEF1dG9JbnNlcnRUaW1lb3V0KCB2b2lkICpobmQsIFNhSHBpVGltZW91dFQgIHRpbWVvdXQpCitAQCAtMTIyOSw3ICsxMjI5LDcgQEAgSXBtaVNldEF1dG9JbnNlcnRUaW1lb3V0KCB2b2lkICpobmQsIFNhSAorIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRBdXRvRXh0cmFjdFRpbWVvdXQoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlUaW1lb3V0VCAqICkgX19hc21fXygiSXBtaUdldEF1dG9FeHRyYWN0VGltZW91dCIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0QXV0b0V4dHJhY3RUaW1lb3V0KCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTI1MCw3ICsxMjUwLDcgQEAgSXBtaUdldEF1dG9FeHRyYWN0VGltZW91dCggdm9pZCAqaG5kLCBTYQorIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRBdXRvRXh0cmFjdFRpbWVvdXQoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaVRpbWVvdXRUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpVGltZW91dFQgKSBfX2FzbV9fKCJJcG1pU2V0QXV0b0V4dHJhY3RUaW1lb3V0IikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRBdXRvRXh0cmFjdFRpbWVvdXQoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xMjcxLDcgKzEyNzEsNyBAQCBJcG1pU2V0QXV0b0V4dHJhY3RUaW1lb3V0KCB2b2lkICpobmQsIFNhCisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldEhvdHN3YXBTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRUICwKKy0gICAgICAgICAgICAgICAgICAgICBTYUhwaUhzU3RhdGVUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc1N0YXRlVCAqICkgX19hc21fXygiSXBtaUdldEhvdHN3YXBTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0SG90c3dhcFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTI5Myw3ICsxMjkzLDcgQEAgSXBtaUdldEhvdHN3YXBTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlcworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRIb3Rzd2FwU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICBTYUhwaUhzU3RhdGVUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNTdGF0ZVQgKSBfX2FzbV9fKCJJcG1pU2V0SG90c3dhcFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRIb3Rzd2FwU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xMzE1LDcgKzEzMTUsNyBAQCBJcG1pU2V0SG90c3dhcFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzCisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVJlcXVlc3RIb3Rzd2FwQWN0aW9uKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzQWN0aW9uVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNBY3Rpb25UICkgX19hc21fXygiSXBtaVJlcXVlc3RIb3Rzd2FwQWN0aW9uIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlSZXF1ZXN0SG90c3dhcEFjdGlvbiggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTEzMzcsNyArMTMzNyw3IEBAIElwbWlSZXF1ZXN0SG90c3dhcEFjdGlvbiggdm9pZCAqaG5kLCBTYUgKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0UG93ZXJTdGF0ZSggdm9pZCAqLCBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgICBTYUhwaVBvd2VyU3RhdGVUICogKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgKiApIF9fYXNtX18oIklwbWlHZXRQb3dlclN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRQb3dlclN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTM1OSw3ICsxMzU5LDcgQEAgSXBtaUdldFBvd2VyU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdQorIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRQb3dlclN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgIFNhSHBpUG93ZXJTdGF0ZVQgKSBfX2FzbV9fKCJJcG1pU2V0UG93ZXJTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0UG93ZXJTdGF0ZSggdm9pZCAqaG5kLCBTYUhwaVJlc291cmNlSWRUIGlkLAorQEAgLTEzODEsNyArMTM4MSw3IEBAIElwbWlTZXRQb3dlclN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3UKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgICAgIFNhSHBpSHNJbmRpY2F0b3JTdGF0ZVQgKiApIF9fYXNtX18oIklwbWlHZXRJbmRpY2F0b3JTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pR2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNDAzLDcgKzE0MDMsNyBAQCBJcG1pR2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSCisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaVNldEluZGljYXRvclN0YXRlKCB2b2lkICosIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgICAgICBTYUhwaUhzSW5kaWNhdG9yU3RhdGVUICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgU2FIcGlIc0luZGljYXRvclN0YXRlVCApIF9fYXNtX18oIklwbWlTZXRJbmRpY2F0b3JTdGF0ZSIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdXJjZUlkVCBpZCwKK0BAIC0xNDI2LDcgKzE0MjYsNyBAQCBJcG1pU2V0SW5kaWNhdG9yU3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUNvbnRyb2xQYXJtKCB2b2lkICosCisgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorLSAgICAgICAgICAgICAgICAgU2FIcGlQYXJtQWN0aW9uVCApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgIFNhSHBpUGFybUFjdGlvblQgKSBfX2FzbV9fKCJJcG1pQ29udHJvbFBhcm0iKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUNvbnRyb2xQYXJtKCB2b2lkICpobmQsCitAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgSXBtaUNvbnRyb2xQYXJtKCB2b2lkICpobmQsCisgCisgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFJlc2V0U3RhdGUoIHZvaWQgKiwgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICAgU2FIcGlSZXNldEFjdGlvblQgKiApIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKysgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNldEFjdGlvblQgKiApIF9fYXNtX18oIklwbWlHZXRSZXNldFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRSZXNldFN0YXRlKCB2b2lkICpobmQsIFNhSHBpUmVzb3VyY2VJZFQgaWQsCitAQCAtMTQ3Miw3ICsxNDcyLDcgQEAgSXBtaUdldFJlc2V0U3RhdGUoIHZvaWQgKmhuZCwgU2FIcGlSZXNvdQorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRSZXNldFN0YXRlKCB2b2lkICosCisgICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzb3VyY2VJZFQsCistICAgICAgICAgICAgICAgICAgIFNhSHBpUmVzZXRBY3Rpb25UICkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICBTYUhwaVJlc2V0QWN0aW9uVCApIF9fYXNtX18oIklwbWlTZXRSZXNldFN0YXRlIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRSZXNldFN0YXRlKCB2b2lkICpobmQsCitAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgc3RhdGljIFNhRXJyb3JUCisgSXBtaUdldFdhdGNoZG9nSW5mbyh2b2lkICosCisgICAgICAgICAgICAgICAgICAgICBTYUhwaVJlc291cmNlSWRULAorICAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ051bVQsCistICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nVCAqKSBfX2F0dHJpYnV0ZV9fKCh1c2VkKSk7CisrICAgICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nVCAqKSBfX2FzbV9fKCJJcG1pR2V0V2F0Y2hkb2dJbmZvIikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworIAorIHN0YXRpYyBTYUVycm9yVAorIElwbWlHZXRXYXRjaGRvZ0luZm8odm9pZCAqaG5kLAorQEAgLTE1MTcsNyArMTUxNyw3IEBAIHN0YXRpYyBTYUVycm9yVAorIElwbWlTZXRXYXRjaGRvZ0luZm8odm9pZCAqLAorICAgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKyAgICAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dOdW1ULAorLSAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ1QgKikgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgICAgU2FIcGlXYXRjaGRvZ1QgKikgX19hc21fXygiSXBtaVNldFdhdGNoZG9nSW5mbyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pU2V0V2F0Y2hkb2dJbmZvKHZvaWQgKmhuZCwKK0BAIC0xNTM3LDcgKzE1MzcsNyBAQCBJcG1pU2V0V2F0Y2hkb2dJbmZvKHZvaWQgKmhuZCwKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pUmVzZXRXYXRjaGRvZyh2b2lkICosCisgICAgICAgICAgICAgICAgICAgU2FIcGlSZXNvdXJjZUlkVCwKKy0gICAgICAgICAgICAgICAgICBTYUhwaVdhdGNoZG9nTnVtVCkgX19hdHRyaWJ1dGVfXygodXNlZCkpOworKyAgICAgICAgICAgICAgICAgIFNhSHBpV2F0Y2hkb2dOdW1UKSBfX2FzbV9fKCJJcG1pUmVzZXRXYXRjaGRvZyIpIF9fYXR0cmlidXRlX18oKHVzZWQpKTsKKyAKKyBzdGF0aWMgU2FFcnJvclQKKyBJcG1pUmVzZXRXYXRjaGRvZyh2b2lkICpobmQsCitJbmRleDogb3BlbmhwaS0zLjYuMS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9hdXRoLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfYXV0aC5oCisrKysgb3BlbmhwaS0zLjYuMS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9hdXRoLmgKK0BAIC0zMiw3ICszMiw3IEBAIGNsYXNzIGNJcG1pQXV0aFNnCisgeworIHB1YmxpYzoKKyAgIHZvaWQgKmRhdGE7IC8qIE5VTEwgdG8gdGVybWluYXRlLiAqLworLSAgaW50ICAgbGVuOworKyAgdW5zaWduZWQgaW50ICAgbGVuOworIH07CisgCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9maXgtbmFycm93aW5nLXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9maXgtbmFycm93aW5nLXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM1NDU3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL2ZpeC1uYXJyb3dpbmctd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDIwIEBACitGaXgKKworc2Vuc29yX2ZhY3RvcnNfMDAwLmNwcDo2Njo1OiBlcnJvcjogbm9uLWNvbnN0YW50LWV4cHJlc3Npb24gY2Fubm90IGJlIG5hcnJvd2VkIGZyb20gdHlwZSAnaW50JyB0byAndW5zaWduZWQgY2hhcicgaW4gaW5pdGlhbGl6ZXIgbGlzdCBbLVdjKysxMS1uYXJyb3dpbmddCisoKGRSRXhwIDw8IDQpICYgMHhmMCkgfCAoZEJFeHAgJiAweDBmICksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogb3BlbmhwaS0zLjYuMS9wbHVnaW5zL2lwbWlkaXJlY3QvdC9zZW5zb3JfZmFjdG9yc18wMDAuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbmhwaS0zLjYuMS5vcmlnL3BsdWdpbnMvaXBtaWRpcmVjdC90L3NlbnNvcl9mYWN0b3JzXzAwMC5jcHAKKysrKyBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvaXBtaWRpcmVjdC90L3NlbnNvcl9mYWN0b3JzXzAwMC5jcHAKK0BAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBjSXBtaVNkciBzZHIgPQorICAgICBkQiAmIDB4ZmYsCisgICAgICgoZEIgPj4gMikgJiAweGMwKSB8IChkQWNjdXJhY3kgJiAweDNmKSwKKyAgICAgKChkQWNjdXJhY3kgPj4gMikgJiAweGYwKSB8ICgoZEFjY3VyYWN5RXhwIDw8IDIpICYgMHgwYyksCistICAgICgoZFJFeHAgPDwgNCkgJiAweGYwKSB8IChkQkV4cCAmIDB4MGYgKSwKKysgICAgKHVuc2lnbmVkIGNoYXIpKCgoZFJFeHAgPDwgNCkgJiAweGYwKSB8IChkQkV4cCAmIDB4MGYgKSksCisgICAgIDAsCisgICAgIDAsCisgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9vcGVuaHBpXzMuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvb3BlbmhwaV8zLjYuMS5iYgppbmRleCBiOWIwNDM3Li5lY2Y3MWQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9vcGVuaHBpXzMuNi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL29wZW5ocGlfMy42LjEuYmIKQEAgLTIwLDkgKzIwLDEyIEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUzYzc3MmEzMjM4Njg4OGNjYjVhZTFjMGJhOTVmMWE0IgogCi1ERVBFTkRTID0gIm5ldC1zbm1wIGxpYnhtbDIgbmN1cnNlcyBvcGVuc3NsIGdsaWItMi4wIHBvcHQgZTJmc3Byb2dzIgorREVQRU5EUyA9ICJuZXQtc25tcCBsaWJ4bWwyIG5jdXJzZXMgb3BlbnNzbCBnbGliLTIuMCBwb3B0IGUyZnNwcm9ncyBhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLmluaXQgXAorICAgICAgICAgICBmaWxlOi8vb3BlbmhwaWQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1uZXRzbm1wLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1zeXNmcy1jcm9zcy1jb21waWxlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29wZW5ocGktbGlieG1sMi1jcm9zcy1jb21waWxlLnBhdGNoIFwKQEAgLTM1LDExICszOCwxMyBAQAogICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1pbnZhbGlkZS1zZXNzaW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29wZW5ocGktdXNlLXNlcmlhbC10ZXN0cy1jb25maWctbmVlZGVkLWJ5LXB0ZXN0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29wZW5ocGktZml4LWFsaWdubWVudC1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5ocGkuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1mYWlsdXJlcy13aXRoLWdjYzcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYysrMTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xhbmctYysrMTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LW5hcnJvd2luZy13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGx1Z2lucy1DaGVjay1mb3ItUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwbWlkaXJlY3QtUmVwbGFjZS1fX1NUUklORy5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjQ3MThiMTZlMGY3NDliNWFkMjE0YTliMDRmNDVkZDIzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwYTgxMGNiNDAxYzRiZGNmYzk1NTFmMmU2YWZkNWE4Y2E0YjQxMWY1ZWUzYmM2MGMxOWY4MmZkNmU4NGEzZGMiCkBAIC01Myw5ICs1OCwxMCBAQAogSU5TQU5FX1NLSVBfJHtQTn0tbGlicyA9ICJkZXYtc28iCiBSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tbGlicyIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJnY3J5cHQgbm9uMzJiaXQiCiBQQUNLQUdFQ09ORklHW3N5c2ZzXSA9ICItLWVuYWJsZS1zeXNmcywtLWRpc2FibGUtc3lzZnMsc3lzZnN1dGlscywiCiBQQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLS1lbmFibGUtZW5jcnlwdGlvbiwtLWRpc2FibGUtZW5jcnlwdGlvbixsaWJnY3J5cHQsIgorUEFDS0FHRUNPTkZJR1tub24zMmJpdF0gPSAiLS1lbmFibGUtbm9uMzJiaXQtaW50LC0tZGlzYWJsZS1ub24zMmJpdC1pbnQsLCIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1SZW1vdmUtdW51c2VkLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1SZW1vdmUtdW51c2VkLXZhcmlhYmxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM4OGI4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtUmVtb3ZlLXVudXNlZC12YXJpYWJsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIGE0NDFhNzVmYmI4NDUxMjY4YThhNTc2MTZjNzE1OGNkZGMxODIzYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyMiBBcHIgMjAxNyAxMjo0MDoxOSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwotCi1GaXhlcyBidWlsZCBlcnJvcnMgd2l0aCBnY2M3IGUuZy4KLQotLi4vb3BlbnNhZi01LjIuMC9zcmMvYW1mL2FtZmQvaW1tLmNjOiBJbiBtZW1iZXIgZnVuY3Rpb24gJ2Jvb2wgSW1tT2JqQ3JlYXRlOjppbW1vYmpfdXBkYXRlX3JlcXVpcmVkKCknOgotLi4vb3BlbnNhZi01LjIuMC9zcmMvYW1mL2FtZmQvaW1tLmNjOjIxNzQ6Mjg6IGVycm9yOiB1bnVzZWQgdmFyaWFibGUgJ3BvcycgWy1XZXJyb3I9dW51c2VkLXZhcmlhYmxlXQotICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvczsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn4KLS4uL29wZW5zYWYtNS4yLjAvc3JjL2FtZi9hbWZkL2ltbS5jYzoyMjE1OjI4OiBlcnJvcjogdW51c2VkIHZhcmlhYmxlICdwb3MnIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KLSAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvYW1mL2FtZmQvaW1tLmNjIHwgMiAtLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FtZi9hbWZkL2ltbS5jYyBiL3NyYy9hbWYvYW1mZC9pbW0uY2MKLWluZGV4IDc5MzIzNjQuLjRmNDdiNjUgMTAwNjQ0Ci0tLS0gYS9zcmMvYW1mL2FtZmQvaW1tLmNjCi0rKysgYi9zcmMvYW1mL2FtZmQvaW1tLmNjCi1AQCAtMjE3MSw3ICsyMTcxLDYgQEAgYm9vbCBJbW1PYmpDcmVhdGU6OmltbW9ial91cGRhdGVfcmVxdWlyZWQoKSB7Ci0gICBpZiAoY2xhc3NfdHlwZSA9PSBBVlNWX1NBX0FNRl9TSV9BU1NJR05NRU5UKSB7Ci0gICAgIHN0ZDo6c3RyaW5nIHN1X25hbWU7Ci0gICAgIHN0ZDo6c3RyaW5nIHNpc3VfbmFtZTsKLS0gICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3M7Ci0gICAgIHdoaWxlICgoYXR0cmlidXRlID0gYXR0clZhbHVlc19baSsrXSkgIT0gbnVsbHB0cikgewotICAgICAgIGlmICghc3RyY21wKGF0dHJpYnV0ZS0+YXR0ck5hbWUsICJzYWZTSVNVIikpIHsKLSAgICAgICAgIHNpc3VfbmFtZSA9IEFtZjo6dG9fc3RyaW5nKAotQEAgLTIyMTIsNyArMjIxMSw2IEBAIGJvb2wgSW1tT2JqQ3JlYXRlOjppbW1vYmpfdXBkYXRlX3JlcXVpcmVkKCkgewotICAgfSBlbHNlIGlmIChjbGFzc190eXBlID09IEFWU1ZfU0FfQU1GX0NTSV9BU1NJR05NRU5UKSB7Ci0gICAgIHN0ZDo6c3RyaW5nIGNvbXBfbmFtZTsKLSAgICAgc3RkOjpzdHJpbmcgY3NpY29tcF9uYW1lOwotLSAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvczsKLSAgICAgQVZEX0NTSSAqY3NpID0gbnVsbHB0cjsKLSAgICAgQVZEX0NPTVAgKmNvbXAgPSBudWxscHRyOwotICAgICBBVkRfQ09NUF9DU0lfUkVMICpjb21wY3NpID0gbnVsbHB0cjsKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1pbW1wYmVfZHVtcC5jYy1Vc2Utc3lzLXdhaXQuaC1pbnN0ZWFkLW9mLXdhaXQuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1pbW1wYmVfZHVtcC5jYy1Vc2Utc3lzLXdhaXQuaC1pbnN0ZWFkLW9mLXdhaXQuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmM0N2M2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWltbXBiZV9kdW1wLmNjLVVzZS1zeXMtd2FpdC5oLWluc3RlYWQtb2Ytd2FpdC5oLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNTA4ZWE3YzBkNjcyNDNmZWIxNjg0ZWFhODM1NjljYjY4NzU2MWQ2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDEwOjA5OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGltbXBiZV9kdW1wLmNjOiBVc2Ugc3lzL3dhaXQuaCBpbnN0ZWFkIG9mIHdhaXQuaAorCitGaXhlcworcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDx3YWl0Lmg+IHRvIDxzeXMvd2FpdC5oPgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2ltbS9jb21tb24vaW1tcGJlX2R1bXAuY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaW1tL2NvbW1vbi9pbW1wYmVfZHVtcC5jYyBiL3NyYy9pbW0vY29tbW9uL2ltbXBiZV9kdW1wLmNjCitpbmRleCAxMDAyMjJmMzcuLjMzZTQ3Y2UzYyAxMDA2NDQKKy0tLSBhL3NyYy9pbW0vY29tbW9uL2ltbXBiZV9kdW1wLmNjCisrKysgYi9zcmMvaW1tL2NvbW1vbi9pbW1wYmVfZHVtcC5jYworQEAgLTI2LDEyICsyNiwxMiBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorLSNpbmNsdWRlIDx3YWl0Lmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxpb3N0cmVhbT4KKyAjaW5jbHVkZSA8c3N0cmVhbT4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPGxpYmdlbi5oPgorIAorICNpbmNsdWRlIDxzYUFpcy5oPgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLXNyYy1BZGQtbWlzc2luZy1oZWFkZXItbGltaXRzLmgtZm9yLV9QT1NJWF9IT1NUX05BTUUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtc3JjLUFkZC1taXNzaW5nLWhlYWRlci1saW1pdHMuaC1mb3ItX1BPU0lYX0hPU1RfTkFNRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTJhODI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLXNyYy1BZGQtbWlzc2luZy1oZWFkZXItbGltaXRzLmgtZm9yLV9QT1NJWF9IT1NUX05BTUUucGF0Y2gKQEAgLTAsMCArMSwxMjIgQEAKK0Zyb20gNjQ0MmI1N2E4NTVlMjczYWE1YTNkOTNlODU5Njc4M2NlYTEyODA3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDA5OjM5OjQwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYzogQWRkIG1pc3NpbmcgaGVhZGVyIGxpbWl0cy5oIGZvciBfUE9TSVhfSE9TVF9OQU1FX01BWAorCitVc2UgX0dOVV9TT1VSQ0UgaW5zdGVhZCBvZiBsaWJjIGludGVybmFsIF9fVVNFX0dOVQorRG8gbm90IHVzZSB0aGUgZGVwcmVjYXRlZCBoZWFkZXJzIHVuZGVyIGluY2x1ZGUvc3lzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYmFzZS9vc19kZWZzLmggICAgICAgIHwgNSArKystLQorIHNyYy9tZHMvbWRzX2R0X3RjcC5jICAgICAgfCAxIC0KKyBzcmMvbWRzL21kc19kdF90Y3BfZGlzYy5oIHwgMiArLQorIHNyYy9tZHMvbWRzX2R0X3RpcGMuYyAgICAgfCAxIC0KKyBzcmMvbWRzL21kc19kdF90aXBjLmggICAgIHwgMiArLQorIHNyYy9tZHMvbWRzX2R0X3RyYW5zLmMgICAgfCAxIC0KKyBzcmMvbnRmL250ZmQvTnRmTG9nZ2VyLmNjIHwgMiArLQorIDcgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2Uvb3NfZGVmcy5oIGIvc3JjL2Jhc2Uvb3NfZGVmcy5oCitpbmRleCA1MGE5YmY1ZmMuLmFmNjg0Mjg2MyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNlL29zX2RlZnMuaAorKysrIGIvc3JjL2Jhc2Uvb3NfZGVmcy5oCitAQCAtNDcsMTcgKzQ3LDE4IEBACisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9tc2cuaD4gLyogQWRkZWQgZm9yIG1lc3NhZ2UtcXVldWVzIDogUE0gOiAyOC8xMC8wMyAqLworICNpbmNsdWRlIDxzeXNsb2cuaD4KKy0jaWZuZGVmIF9fVVNFX0dOVQorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKysjaWZuZGVmIF9HTlVfU09VUkNFCisgc3RydWN0IG1zZ2J1ZiB7CisgICBsb25nIGludCBtdHlwZTsKKyAgIGNoYXIgbXRleHRbMV07CisgfTsKKyAjZW5kaWYgLyogZWxzZSBkZWZpbmVkIGluIDxzeXMvbXNnLmg+ICovCisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CistI2luY2x1ZGUgPHN5cy9mY250bC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAKKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyAKK2RpZmYgLS1naXQgYS9zcmMvbWRzL21kc19kdF90Y3AuYyBiL3NyYy9tZHMvbWRzX2R0X3RjcC5jCitpbmRleCAxNDA3ZWIxYWIuLmE4N2MyMmZhYSAxMDA2NDQKKy0tLSBhL3NyYy9tZHMvbWRzX2R0X3RjcC5jCisrKysgYi9zcmMvbWRzL21kc19kdF90Y3AuYworQEAgLTI3LDcgKzI3LDYgQEAKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHNjaGVkLmg+CistI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisgI2luY2x1ZGUgPHBvbGwuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorZGlmZiAtLWdpdCBhL3NyYy9tZHMvbWRzX2R0X3RjcF9kaXNjLmggYi9zcmMvbWRzL21kc19kdF90Y3BfZGlzYy5oCitpbmRleCBhNjI0OWQ3M2UuLjU3NGY1MjY4MSAxMDA2NDQKKy0tLSBhL3NyYy9tZHMvbWRzX2R0X3RjcF9kaXNjLmgKKysrKyBiL3NyYy9tZHMvbWRzX2R0X3RjcF9kaXNjLmgKK0BAIC0yNCw3ICsyNCw3IEBACisgI2luY2x1ZGUgImJhc2UvbmNzc3lzZl90c2suaCIKKyAjaW5jbHVkZSAiYmFzZS9uY3NzeXNmX21lbS5oIgorICNpbmNsdWRlICJtZHNfZHRfdGNwX2Rpc2MuaCIKKy0jaW5jbHVkZSAic3lzL3BvbGwuaCIKKysjaW5jbHVkZSA8cG9sbC5oPgorIAorIC8qICBtZHNfaW5kZW50aWZpcmUgKyBtZHNfdmVyc2lvbiAgICsgbXNnX3R5cGUgKyBzY29wZV90eXBlICsgc2VydmVyX3R5cGUgKworICAgIHNlcnZlcl9pbnN0YW5jZV9sb3dlciArIHNlcnZlcl9pbnN0YW5jZV91cHBlciArIHN1Yl9yZWZfdmFsICsgc3ViX3JlZl92YWwgICsKK2RpZmYgLS1naXQgYS9zcmMvbWRzL21kc19kdF90aXBjLmMgYi9zcmMvbWRzL21kc19kdF90aXBjLmMKK2luZGV4IDM3NzQ1ZTdmMC4uOWIzMjU1NTY3IDEwMDY0NAorLS0tIGEvc3JjL21kcy9tZHNfZHRfdGlwYy5jCisrKysgYi9zcmMvbWRzL21kc19kdF90aXBjLmMKK0BAIC0zNSw3ICszNSw2IEBACisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHNjaGVkLmg+CistI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisgI2luY2x1ZGUgPHBvbGwuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorZGlmZiAtLWdpdCBhL3NyYy9tZHMvbWRzX2R0X3RpcGMuaCBiL3NyYy9tZHMvbWRzX2R0X3RpcGMuaAoraW5kZXggZTczYTExYjA5Li40MDFkMjA4YzIgMTAwNjQ0CistLS0gYS9zcmMvbWRzL21kc19kdF90aXBjLmgKKysrKyBiL3NyYy9tZHMvbWRzX2R0X3RpcGMuaAorQEAgLTMyLDcgKzMyLDcgQEAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxuZXRkYi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorZGlmZiAtLWdpdCBhL3NyYy9tZHMvbWRzX2R0X3RyYW5zLmMgYi9zcmMvbWRzL21kc19kdF90cmFucy5jCitpbmRleCA2ZjYyMWUwNGUuLjVhYWNiZDMzZSAxMDA2NDQKKy0tLSBhL3NyYy9tZHMvbWRzX2R0X3RyYW5zLmMKKysrKyBiL3NyYy9tZHMvbWRzX2R0X3RyYW5zLmMKK0BAIC0yNiw3ICsyNiw2IEBACisgI2luY2x1ZGUgIm1kc19jb3JlLmgiCisgI2luY2x1ZGUgImJhc2Uvb3NhZl91dGlsaXR5LmgiCisgCistI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisgI2luY2x1ZGUgPHBvbGwuaD4KKyAKKyAjZGVmaW5lIE1EU19QUk9UX1RDUCAweEEwCitkaWZmIC0tZ2l0IGEvc3JjL250Zi9udGZkL050ZkxvZ2dlci5jYyBiL3NyYy9udGYvbnRmZC9OdGZMb2dnZXIuY2MKK2luZGV4IDg0MDE0YjU3OC4uMzFiMWNjYzZjIDEwMDY0NAorLS0tIGEvc3JjL250Zi9udGZkL050ZkxvZ2dlci5jYworKysrIGIvc3JjL250Zi9udGZkL050ZkxvZ2dlci5jYworQEAgLTIwLDcgKzIwLDcgQEAKKyAgKiAgIElOQ0xVREUgRklMRVMKKyAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgKi8KKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorIAorICNpbmNsdWRlICJiYXNlL29zYWZfdXRpbGl0eS5oIgorICNpbmNsdWRlIDxzYUFpcy5oPgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE3LjA3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE3LjA3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NDgzZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTcuMDcuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJPcGVuU0FGIGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTQUYgQUlTIHNwZWNpZmljYXRpb24iCitERVNDUklQVElPTiA9ICJPcGVuU0FGIGlzIGFuIG9wZW4gc291cmNlIHByb2plY3QgZXN0YWJsaXNoZWQgdG8gZGV2ZWxvcCBhIGJhc2UgcGxhdGZvcm0gXAorbWlkZGxld2FyZSBjb25zaXN0ZW50IHdpdGggU2VydmljZSBBdmFpbGFiaWxpdHkgRm9ydW0gKFNBIEZvcnVtKSBcCitzcGVjaWZpY2F0aW9ucywgdW5kZXIgdGhlIExHUEx2Mi4xIGxpY2Vuc2UuIFRoZSBPcGVuU0FGIEZvdW5kYXRpb24gd2FzIFwKK2VzdGFibGlzaGVkIGJ5IGxlYWRpbmcgQ29tbXVuaWNhdGlvbnMgYW5kIEVudGVycHJpc2UgQ29tcHV0aW5nIENvbXBhbmllcyB0byBcCitmYWNpbGl0YXRlIHRoZSBPcGVuU0FGIFByb2plY3QgYW5kIHRvIGFjY2VsZXJhdGUgdGhlIGFkb3B0aW9uIG9mIHRoZSBPcGVuU0FGIFwKK2NvZGUgYmFzZSBpbiBjb21tZXJjaWFsIHByb2R1Y3RzLiBcCitUaGUgT3BlblNBRiBwcm9qZWN0IHdhcyBsYXVuY2hlZCBpbiBtaWQgMjAwNyBhbmQgaGFzIGJlZW4gdW5kZXIgZGV2ZWxvcG1lbnQgYnkgXAorYW4gaW5mb3JtYWwgZ3JvdXAgb2Ygc3VwcG9ydGVycyBvZiB0aGUgT3BlblNBRiBpbml0aWF0aXZlLiBUaGUgT3BlblNBRiBcCitGb3VuZGF0aW9uIHdhcyBmb3VuZGVkIG9uIEphbnVhcnkgMjJuZCAyMDA4IHdpdGggRW1lcnNvbiBOZXR3b3JrIFBvd2VyLCBcCitFcmljc3NvbiwgTm9raWEgU2llbWVucyBOZXR3b3JrcywgSFAgYW5kIFN1biBNaWNyb3N5c3RlbXMgYXMgZm91bmRpbmcgbWVtYmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zYWYub3JnIgorU0VDVElPTiA9ICJhZG1pbiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK0RFUEVORFMgPSAibGlieG1sMiBweXRob24iCitUT09MQ0hBSU4gPSAiZ2NjIgorCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59L3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtUGFzcy1saW5rZXItc3BlY2lmaWMtb3B0aW9ucy13aXRoLVdsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLURpc2FibGUtZm9ybWF0LW92ZXJmbG93LWlmLXN1cHBvcnRlZC1ieS1nYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNyYy1BZGQtbWlzc2luZy1oZWFkZXItbGltaXRzLmgtZm9yLV9QT1NJWF9IT1NUX05BTUUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbW1wYmVfZHVtcC5jYy1Vc2Utc3lzLXdhaXQuaC1pbnN0ZWFkLW9mLXdhaXQuaC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMTI1YmNkOWFhYmQ3NDEyYWVkY2JmYmY3M2Y0ZTYxOTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2ZiMjIzOWJiMmM5MzI4YzhiNDUzNjhmZjhkOGRlOTc5ZWEyODZhMjdlZGM5ODcxZDIxODIwMGU4OGJiOTFjYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZworCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLWYgLXIgb3BlbnNhZiIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAgIi1yIC1nIG9wZW5zYWYgLWQgJHtkYXRhZGlyfS9vcGVuc2FmLyAtcyAke3NiaW5kaXJ9L25vbG9naW4gLWMgXCJPcGVuU0FGXCIgb3BlbnNhZiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ICs9ICJvcGVuc2FmZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiwsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbb3BlbmhwaV0gPSAiLS13aXRoLWhwaS1pbnRlcmZhY2U9QjAzIC0tZW5hYmxlLWFpcy1wbG0sLG9wZW5ocGkiCisKK1BBQ0tBR0VDT05GSUdfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcgc3lzdGVtZCcsICcnLCBkKX0iCisKK1BLR0xJQkRJUj0iJHtsaWJkaXJ9IgorCitMREZMQUdTICs9ICItV2wsLS1hcy1uZWVkZWQgLWxhdG9taWMgLVdsLC0tbm8tYXMtbmVlZGVkIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBjcCAtYXYgLS1uby1wcmVzZXJ2ZT1vd25lcnNoaXAgJHtCfS9saWIvLmxpYnMvKi5zbyogJHtEfSR7bGliZGlyfQorICAgIHJtIC1mciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9jayIKKyAgICBybSAtZnIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2RhdGFkaXJ9L2phdmEiCisgICAgaWYgWyAhIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiIF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vb3NhZi9zZXJ2aWNlcy9pbmZyYXN0cnVjdHVyZS9uaWQvc2NyaXB0cy9vcGVuc2FmZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BLR0xJQkRJUn0vKi5hIgorCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIHB5dGhvbiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNzliYTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlblNBRiBpcyBhbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU0FGIEFJUyBzcGVjaWZpY2F0aW9uIgotREVTQ1JJUFRJT04gPSAiT3BlblNBRiBpcyBhbiBvcGVuIHNvdXJjZSBwcm9qZWN0IGVzdGFibGlzaGVkIHRvIGRldmVsb3AgYSBiYXNlIHBsYXRmb3JtIFwKLW1pZGRsZXdhcmUgY29uc2lzdGVudCB3aXRoIFNlcnZpY2UgQXZhaWxhYmlsaXR5IEZvcnVtIChTQSBGb3J1bSkgXAotc3BlY2lmaWNhdGlvbnMsIHVuZGVyIHRoZSBMR1BMdjIuMSBsaWNlbnNlLiBUaGUgT3BlblNBRiBGb3VuZGF0aW9uIHdhcyBcCi1lc3RhYmxpc2hlZCBieSBsZWFkaW5nIENvbW11bmljYXRpb25zIGFuZCBFbnRlcnByaXNlIENvbXB1dGluZyBDb21wYW5pZXMgdG8gXAotZmFjaWxpdGF0ZSB0aGUgT3BlblNBRiBQcm9qZWN0IGFuZCB0byBhY2NlbGVyYXRlIHRoZSBhZG9wdGlvbiBvZiB0aGUgT3BlblNBRiBcCi1jb2RlIGJhc2UgaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4gXAotVGhlIE9wZW5TQUYgcHJvamVjdCB3YXMgbGF1bmNoZWQgaW4gbWlkIDIwMDcgYW5kIGhhcyBiZWVuIHVuZGVyIGRldmVsb3BtZW50IGJ5IFwKLWFuIGluZm9ybWFsIGdyb3VwIG9mIHN1cHBvcnRlcnMgb2YgdGhlIE9wZW5TQUYgaW5pdGlhdGl2ZS4gVGhlIE9wZW5TQUYgXAotRm91bmRhdGlvbiB3YXMgZm91bmRlZCBvbiBKYW51YXJ5IDIybmQgMjAwOCB3aXRoIEVtZXJzb24gTmV0d29yayBQb3dlciwgXAotRXJpY3Nzb24sIE5va2lhIFNpZW1lbnMgTmV0d29ya3MsIEhQIGFuZCBTdW4gTWljcm9zeXN0ZW1zIGFzIGZvdW5kaW5nIG1lbWJlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc2FmLm9yZyIKLVNFQ1RJT04gPSAiYWRtaW4iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgotCi1ERVBFTkRTID0gImxpYnhtbDIgcHl0aG9uIgotVE9PTENIQUlOID0gImdjYyIKLQotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLVBhc3MtbGlua2VyLXNwZWNpZmljLW9wdGlvbnMtd2l0aC1XbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1EaXNhYmxlLWZvcm1hdC1vdmVyZmxvdy1pZi1zdXBwb3J0ZWQtYnktZ2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdW51c2VkLXZhcmlhYmxlcy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMDg5OTFmZDQ2N2FlOWRjZWEzYzg3NDdiZThlMzk4MWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTAzNDc4MjQ0YWZlMzdlMzI5YmU5MzA1MGYxZDQ4ZmExOGM4NGVhMTc4NjIxMzRjNDIxN2I5MjBlMjY3YTA0YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLWYgLXIgb3BlbnNhZiIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAgIi1yIC1nIG9wZW5zYWYgLWQgJHtkYXRhZGlyfS9vcGVuc2FmLyAtcyAke3NiaW5kaXJ9L25vbG9naW4gLWMgXCJPcGVuU0FGXCIgb3BlbnNhZiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ICs9ICJvcGVuc2FmZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiwsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbb3BlbmhwaV0gPSAiLS13aXRoLWhwaS1pbnRlcmZhY2U9QjAzIC0tZW5hYmxlLWFpcy1wbG0sLG9wZW5ocGkiCi0KLVBBQ0tBR0VDT05GSUdfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcgc3lzdGVtZCcsICcnLCBkKX0iCi0KLVBLR0xJQkRJUj0iJHtsaWJkaXJ9IgotCi1MREZMQUdTICs9ICItV2wsLS1hcy1uZWVkZWQgLWxhdG9taWMgLVdsLC0tbm8tYXMtbmVlZGVkIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBjcCAtYXYgLS1uby1wcmVzZXJ2ZT1vd25lcnNoaXAgJHtCfS9saWIvLmxpYnMvKi5zbyogJHtEfSR7bGliZGlyfQotICAgIHJtIC1mciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9jayIKLSAgICBybSAtZnIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2RhdGFkaXJ9L2phdmEiCi0gICAgaWYgWyAhIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vb3NhZi9zZXJ2aWNlcy9pbmZyYXN0cnVjdHVyZS9uaWQvc2NyaXB0cy9vcGVuc2FmZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgZmkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BLR0xJQkRJUn0vKi5hIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIHB5dGhvbiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvMDAwMS1DaGVjay1mb3ItZ2xpYmMtYmVmb3JlLXNldHRpbmctQ0FOVF9VU0VfU0VORF9SRUNWX01TLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvMDAwMS1DaGVjay1mb3ItZ2xpYmMtYmVmb3JlLXNldHRpbmctQ0FOVF9VU0VfU0VORF9SRUNWX01TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiODZlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy8wMDAxLUNoZWNrLWZvci1nbGliYy1iZWZvcmUtc2V0dGluZy1DQU5UX1VTRV9TRU5EX1JFQ1ZfTVMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSA2MzYxOWFjZjI1MTUxZDRkYWRlNmQ2NTczMjcyMmVjNGE3MTBhNWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMDk6NTQ6MjUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgZm9yIGdsaWJjIGJlZm9yZSBzZXR0aW5nIENBTlRfVVNFX1NFTkRfUkVDVl9NU0cKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy91dGlsL3N5c19kZWZzLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdXRpbC9zeXNfZGVmcy5oIGIvc3JjL3V0aWwvc3lzX2RlZnMuaAoraW5kZXggZjcyMGUyYS4uNzMxNGM2MyAxMDA2NDQKKy0tLSBhL3NyYy91dGlsL3N5c19kZWZzLmgKKysrKyBiL3NyYy91dGlsL3N5c19kZWZzLmgKK0BAIC04MTMsNyArODEzLDcgQEAgZXh0ZXJuIGludCBpbml0Z3JvdXBzKGNvbnN0IGNoYXIgKiwgaW50KTsKKyAjZGVmaW5lIEtFUk5FTF9WRVJTSU9OKGEsYixjKSAoTElOVVhfVkVSU0lPTl9DT0RFICsgMSkKKyAjZW5kaWYKKyAjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMiwwKSkgXAorLQl8fCAoX19HTElCQ19fIDwgMikKKysJfHwgKGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fIDwgMikpCisgI2RlZmluZSBDQU5UX1VTRV9TRU5EX1JFQ1ZfTVNHCisgI2RlZmluZSBERUZfU01UUF9DQUNIRV9ERU1BTkQJMAorICNlbHNlCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy8wMDAxLW1ha2VkZWZzLVVzZS1uYXRpdmUtY29tcGlsZXItdG8tYnVpbGQtbWFrZWRlZnMudGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzLzAwMDEtbWFrZWRlZnMtVXNlLW5hdGl2ZS1jb21waWxlci10by1idWlsZC1tYWtlZGVmcy50ZXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2M2E0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy8wMDAxLW1ha2VkZWZzLVVzZS1uYXRpdmUtY29tcGlsZXItdG8tYnVpbGQtbWFrZWRlZnMudGVzdC5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIGEwZDBkZTEwZTRjNWFiNTViYzJmYTQ4Nzk4MDc5ZTI4NzZiMTIxMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyNiBBdWcgMjAxNyAxMDoyOTozNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtYWtlZGVmczogVXNlIG5hdGl2ZSBjb21waWxlciB0byBidWlsZCBtYWtlZGVmcy50ZXN0CisKK0l0cyBhIGJpbmFyeSB1c2VkIGR1cmluZyBidWlsZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbWFrZWRlZnMgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ha2VkZWZzIGIvbWFrZWRlZnMKK2luZGV4IDlmZDRiYzIuLjVlZTc3NDcgMTAwNjQ0CistLS0gYS9tYWtlZGVmcworKysrIGIvbWFrZWRlZnMKK0BAIC01MjYsNyArNTI2LDcgQEAgaW50ICAgICBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgZXhpdCgwKTsKKyB9CisgRU9GCistCQkJICAgJHtDQy1nY2N9IC1vIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5jIHx8IGV4aXQgMQorKwkJCSAgICR7QlVJTERfQ0MtZ2NjfSAtbyBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuYyB8fCBleGl0IDEKKyAJCQkgICBybSAtZiBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuW2NvXQorIAkJICAgICAgIGZpOzsKKyAJCWVzYWMKK0BAIC03NjIsNyArNzYyLDcgQEAgaW50ICAgICBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgZXhpdCgwKTsKKyB9CisgRU9GCistCQkgICAke0NDLWdjY30gLW8gbWFrZWRlZnMudGVzdCBtYWtlZGVmcy50ZXN0LmMgfHwgZXhpdCAxCisrCQkgICAke0JVSUxEX0NDLWdjY30gLW8gbWFrZWRlZnMudGVzdCBtYWtlZGVmcy50ZXN0LmMgfHwgZXhpdCAxCisgCQkgICAuL21ha2VkZWZzLnRlc3QgMj4vZGV2L251bGwgfHwKKyAJCQlDQ0FSR1M9IiRDQ0FSR1MgLUROT19TSUdTRVRKTVAiCisgCQkgICBybSAtZiBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuW2NvXQorQEAgLTc5Niw3ICs3OTYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJCSAgJmVycm9yKSAhPSAxNCk7CisgfQorIEVPRgorLQkJICAgICR7Q0MtZ2NjfSAtbyBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuYyAkaWN1X2NwcGZsYWdzIFwKKysJCSAgICAke0JVSUxEX0NDLWdjY30gLW8gbWFrZWRlZnMudGVzdCBtYWtlZGVmcy50ZXN0LmMgJGljdV9jcHBmbGFncyBcCisgCQkJJGljdV9sZGZsYWdzID4vZGV2L251bGwgMj4mMQorIAkJICAgIGlmIC4vbWFrZWRlZnMudGVzdCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAJCQlDQ0FSR1M9IiRDQ0FSR1MgJGljdV9jcHBmbGFncyIKK0BAIC05MTEsNyArOTExLDcgQEAgaW50ICAgICBtYWluKHZvaWQpCisgICAgIGV4aXQoZmVycm9yKHN0ZG91dCkgPyAxIDogMCk7CisgfQorIEVPRgorLSAgICBldmFsICR7Q0MtZ2NjfSAke0NDQVJHU30gLW8gbWFrZWRlZnMudGVzdCBtYWtlZGVmcy50ZXN0LmMgfHwgZXhpdCAxCisrICAgIGV2YWwgJHtCVUlMRF9DQy1nY2N9ICR7Q0NBUkdTfSAtbyBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuYyB8fCBleGl0IDEKKyAgICAgLi9tYWtlZGVmcy50ZXN0IHx8IGV4aXQgMQorICAgICBybSAtZiBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuW2NvXQorIH0KK0BAIC0xMDY3LDcgKzEwNjcsNyBAQCBpbnQgICAgIG1haW4odm9pZCkKKyAgICAgZXhpdChmZXJyb3Ioc3Rkb3V0KSA/IDEgOiAwKTsKKyB9CisgRU9GCistCWV2YWwgJHtDQy1nY2N9ICR7Q0NBUkdTfSAtbyBtYWtlZGVmcy50ZXN0IG1ha2VkZWZzLnRlc3QuYyB8fCBleGl0IDEKKysJZXZhbCAke0JVSUxEX0NDLWdjY30gJHtDQ0FSR1N9IC1vIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5jIHx8IGV4aXQgMQorIAlwYXJtX3ZhbD1gLi9tYWtlZGVmcy50ZXN0YCB8fCBleGl0IDEKKyAJcm0gLWYgbWFrZWRlZnMudGVzdCBtYWtlZGVmcy50ZXN0Lltjb10KKyAJZXZhbCAke3Bhcm1fbmFtZX09XCIiXCRwYXJtX3ZhbCJcIgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvaWN1LWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzL2ljdS1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJkOWMyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzL2ljdS1jb25maWcucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorZG8gbm90IGVudGVydGFpbiBjcHBmbGFncyBmcm9tIGljdSwgdGhpcyBpcyBiZWNhdXNlCitpY3UtY29uZmlnIGZlZWRzIHRoZSAtSSBwYXRoIHdpdGhvdXQgc3lzcm9vdCB3aGljaAorY2F1c2VkIG5hdGl2ZSBoZWFkZXJzIHRvIGJlIGluY2x1ZGVkIGFuZCBidWlsZCBpcworY29ycnVwdGVkIGluIGFueSBjYXNlIGl0cyBqdXN0IGFkZGluZyAtSS91c3IvaW5jbHVkZQordG8gdGhlIENDQVJHUyB3aGljaCB3ZSBsb29zZSBub3RoaW5nIGlmIGl0cyBub3QKK2VudGVydGFpbmVkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogcG9zdGZpeC0zLjIuMi9tYWtlZGVmcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBvc3RmaXgtMy4yLjIub3JpZy9tYWtlZGVmcworKysrIHBvc3RmaXgtMy4yLjIvbWFrZWRlZnMKK0BAIC03OTksNyArNzk5LDYgQEAgRU9GCisgCQkgICAgJHtCVUlMRF9DQy1nY2N9IC1vIG1ha2VkZWZzLnRlc3QgbWFrZWRlZnMudGVzdC5jICRpY3VfY3BwZmxhZ3MgXAorIAkJCSRpY3VfbGRmbGFncyA+L2Rldi9udWxsIDI+JjEKKyAJCSAgICBpZiAuL21ha2VkZWZzLnRlc3QgMj4vZGV2L251bGwgOyB0aGVuCistCQkJQ0NBUkdTPSIkQ0NBUkdTICRpY3VfY3BwZmxhZ3MiCisgCQkJU1lTTElCUz0iJFNZU0xJQlMgJGljdV9sZGZsYWdzIgorIAkJICAgIGVsc2UKKyAJCQlDQ0FSR1M9IiRDQ0FSR1MgLUROT19FQUkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy9wb3N0Zml4LWluc3RhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy9wb3N0Zml4LWluc3RhbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU0NzliZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzL3Bvc3RmaXgtaW5zdGFsbC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitJbmRleDogcG9zdGZpeC0zLjIuMi9wb3N0Zml4LWluc3RhbGwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwb3N0Zml4LTMuMi4yLm9yaWcvcG9zdGZpeC1pbnN0YWxsCisrKysgcG9zdGZpeC0zLjIuMi9wb3N0Zml4LWluc3RhbGwKK0BAIC04NDMsNyArODQzLDcgQEAgSUZTPSIkQkFDS1VQX0lGUyIKKyAjIHRoZSB3cm9uZyBwbGFjZSB3aGVuIFBvc3RmaXggaXMgYmVpbmcgdXBncmFkZWQuCisgCisgY2FzZSAiJG1haWxfdmVyc2lvbiIgaW4KKy0iIikgbWFpbF92ZXJzaW9uPSJgJFBPU1RDT05GIC1kaHggbWFpbF92ZXJzaW9uYCIgfHwgZXhpdCAxCisrIiIpIG1haWxfdmVyc2lvbj0iYCRQT1NUQ09ORiAtYyAkQ09ORklHX0RJUkVDVE9SWSAtZGh4IG1haWxfdmVyc2lvbmAiIHx8IGV4aXQgMQorIGVzYWMKKyAKKyAjIFVuZG8gTUFJTF9WRVJTSU9OIGV4cGFuc2lvbiBhdCB0aGUgZW5kIG9mIGEgcGFyYW1ldGVyIHZhbHVlLiBJZgorSW5kZXg6IHBvc3RmaXgtMy4yLjIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwb3N0Zml4LTMuMi4yLm9yaWcvTWFrZWZpbGUuaW4KKysrKyBwb3N0Zml4LTMuMi4yL01ha2VmaWxlLmluCitAQCAtMjAsNyArMjAsNyBAQCBNRVRBCT0gbWV0YS9tYWluLmNmLnByb3RvIG1ldGEvbWFzdGVyLmNmCisgRVhQQU5ECT0gc2VkIC1lICJzO1wkJHtMSUJfUFJFRklYfTskKExJQl9QUkVGSVgpOyIgXAorIAkgICAgLWUgInM7XCQke0xJQl9TVUZGSVh9OyQoTElCX1NVRkZJWCk7IgorIFNITElCX0RJUl9PVkVSUklERSA9IFwKKy0JJCR7c2hsaWJfZGlyZWN0b3J5Oi1gJChTSExJQl9FTlYpIGJpbi9wb3N0Y29uZiAtZGh4IHNobGliX2RpcmVjdG9yeWB9CisrCSQke3NobGliX2RpcmVjdG9yeTotYCQoU0hMSUJfRU5WKSAkKFBPU1RDT05GKSAtZGh4IHNobGliX2RpcmVjdG9yeWB9CisgCisgZGVmYXVsdDogdXBkYXRlCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXguaW5jCmluZGV4IDRjNzk0ZmYuLmE1ODhiZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXguaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXguaW5jCkBAIC02MCwyMCArNjAsMjQgQEAKIGV4cG9ydCBDQ0FSR1MtbGRhcF9jbGFzcy1uYXRpdmUgPSAiIgogZXhwb3J0IEFVWExJQlMtbGRhcF9jbGFzcy1uYXRpdmUgPSAiIgogCitleHBvcnQgQ0NBUkdTLW5vbmlzX2xpYmMtbXVzbCA9ICItRE5PX05JUyIKK2V4cG9ydCBDQ0FSR1Mtbm9uaXMgPSAiIgorCiAjIFNBU0wgc3VwcG9ydCAtRFVTRV9MREFQX1NBU0wgLURVU0VfU0FTTF9BVVRICiAjIGN1cnJlbnQgb3BlbmxkYXAgZGlkbid0IGVuYWJsZSBTQVNMCiBleHBvcnQgQ0NBUkdTLXNhc2wgID0gIlwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Nhc2wnLCAnLURVU0VfU0FTTF9BVVRIIC1EVVNFX0NZUlVTX1NBU0wgLUk9L3Vzci9pbmNsdWRlL3Nhc2wnLCAnJywgZCl9IgorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2FzbCcsICctRFVTRV9TQVNMX0FVVEggLURVU0VfQ1lSVVNfU0FTTCAtSSR7U1RBR0lOR19JTkNESVJ9L3Nhc2wnLCAnJywgZCl9IgogZXhwb3J0IEFVWExJQlMtc2FzbCA9ICJcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzYXNsJywgJy1sc2FzbDInLCAnJywgZCl9IgogZXhwb3J0IENDQVJHUy1zYXNsX2NsYXNzLW5hdGl2ZSA9ICIiCiBleHBvcnQgQVVYTElCUy1zYXNsX2NsYXNzLW5hdGl2ZSA9ICIiCiAKICMgUENSRSwgVExTIHN1cHBvcnQgZGVmYXVsdAotZXhwb3J0IENDQVJHUyAgPSAiJHtDRkxBR1N9IC1ESEFTX1BDUkUgLURVU0VfVExTICR7Q0NBUkdTLWxkYXB9ICR7Q0NBUkdTLXNhc2x9IgorZXhwb3J0IENDQVJHUyAgPSAiJHtDRkxBR1N9IC1ESEFTX1BDUkUgLURVU0VfVExTIC1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCAke0NDQVJHUy1sZGFwfSAke0NDQVJHUy1zYXNsfSAke0NDQVJHUy1ub25pc30iCiBleHBvcnQgQVVYTElCUyA9ICItbHBjcmUgLWxzc2wgLWxjcnlwdG8gJHtBVVhMSUJTLXNhc2x9ICR7QVVYTElCUy1sZGFwfSIKIGV4cG9ydCBQT1NUQ09ORiA9ICIke1NUQUdJTkdfRElSX05BVElWRX0ke3NiaW5kaXJfbmF0aXZlfS9wb3N0Y29uZiIKIAorZXhwb3J0IENDQVJHUy1ub25pc19saWJjLW11c2wgPSAiLUROT19OSVMiCiAjIE9QVCxERUJVRyBpcyBhcmVhZHkgaW4gQ0ZMQUdTCiAjIGlnbm9yZSB0aGUgT1BUUz0iQ0M9JENDIiBpbiBNYWtlZmlsZSBpdCB3aWxsIG5vdCB1c2UgdGhlIENDPSRDQyAkQ0NBUkdTCiBFWFRSQV9PRU1BS0UgKz0gIk9QVD0gREVCVUc9IE9QVFM9ICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmJlMjRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgcG9zdGZpeC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gIjQwZDcyZWExNDNhZjdhYjAwMzhjMmNlZTFmNDgzNzA3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkZWRhNGMzNDYzMTk3MDQ5MGIxYjVmYmI1NTk5MDVmOTM1MzFiZjFjN2ViMDBlMzhiMGQwZGViMWRiYTk5ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeF8zLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzllZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeF8zLjIuMi5iYgpAQCAtMCwwICsxLDE4IEBACityZXF1aXJlIHBvc3RmaXguaW5jCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLnBvcmN1cGluZS5vcmcvbWlycm9ycy9wb3N0Zml4LXJlbGVhc2Uvb2ZmaWNpYWwvcG9zdGZpeC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbWFrZWRlZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWluLmNmXzIuMCBcCisgICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4IFwKKyAgICAgICAgICAgZmlsZTovL2ludGVybmFsX3JlY2lwaWVudCBcCisgICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4LnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vYWxpYXNlc2RiIFwKKyAgICAgICAgICAgZmlsZTovL2NoZWNrX2hvc3RuYW1lLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLWdsaWJjLWJlZm9yZS1zZXR0aW5nLUNBTlRfVVNFX1NFTkRfUkVDVl9NUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2VkZWZzLVVzZS1uYXRpdmUtY29tcGlsZXItdG8tYnVpbGQtbWFrZWRlZnMudGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4LWluc3RhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaWN1LWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZWEwNzNhOWIwYmVhNWJkYjU5MDQ2MGEyNzBhNGFhMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMDY4NDk0MThkMTE5ZDA5MzY2OTk3YjJiNDgxYmIyM2Y3Mzc2Mjk3NjliNGU0YTUyZGE0MmZiM2FkOGIwNTc2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvZmlsZXMvYnVpbGRfZml4dXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHJvZnRwZC9maWxlcy9idWlsZF9maXh1cC5wYXRjaAppbmRleCAxOTYxN2E2Li45ODE2ZDRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHJvZnRwZC9maWxlcy9idWlsZF9maXh1cC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHJvZnRwZC9maWxlcy9idWlsZF9maXh1cC5wYXRjaApAQCAtOSwxMSArOSwxMSBAQAogU2lnbmVkLW9mZi1CeTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KIAogCi1JbmRleDogcHJvZnRwZC0xLjMuNS9NYWtlLnJ1bGVzLmluCitJbmRleDogcHJvZnRwZC0xLjMuNi9NYWtlLnJ1bGVzLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHJvZnRwZC0xLjMuNS5vcmlnL01ha2UucnVsZXMuaW4KLSsrKyBwcm9mdHBkLTEuMy41L01ha2UucnVsZXMuaW4KLUBAIC0yOSw5ICsyOSw5IEBAIElOU1RBTEw9QElOU1RBTExACistLS0gcHJvZnRwZC0xLjMuNi5vcmlnL01ha2UucnVsZXMuaW4KKysrKyBwcm9mdHBkLTEuMy42L01ha2UucnVsZXMuaW4KK0BAIC0zMCw5ICszMCw5IEBAIElOU1RBTEw9QElOU1RBTExACiAgSU5TVEFMTF9TVFJJUD1ASU5TVEFMTF9TVFJJUEAKICBJTlNUQUxMX1VTRVI9QGluc3RhbGxfdXNlckAKICBJTlNUQUxMX0dST1VQPUBpbnN0YWxsX2dyb3VwQApAQCAtMjYsMTAgKzI2LDEwIEBACiAgCiAgUk09cm0gLWYKICBTSEVMTD1AQ09ORklHX1NIRUxMQAotSW5kZXg6IHByb2Z0cGQtMS4zLjUvTWFrZWZpbGUuaW4KK0luZGV4OiBwcm9mdHBkLTEuMy42L01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHJvZnRwZC0xLjMuNS5vcmlnL01ha2VmaWxlLmluCi0rKysgcHJvZnRwZC0xLjMuNS9NYWtlZmlsZS5pbgorLS0tIHByb2Z0cGQtMS4zLjYub3JpZy9NYWtlZmlsZS5pbgorKysrIHByb2Z0cGQtMS4zLjYvTWFrZWZpbGUuaW4KIEBAIC0xMDUsNyArMTA1LDYgQEAgY2hlY2s6IHByb2Z0cGQkKEVYRUVYVCkKICAkKERFU1RESVIpJChsb2NhbGVkaXIpICQoREVTVERJUikkKGluY2x1ZGVkaXIpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3Byb2Z0cGQgJChERVNURElSKSQobGliZGlyKSAkKERFU1RESVIpJChwa2djb25maWdkaXIpICQoREVTVERJUikkKGxpYmRpcikvcHJvZnRwZCAkKERFU1RESVIpJChsaWJleGVjZGlyKSAkKERFU1RESVIpJChsb2NhbHN0YXRlZGlyKSAkKERFU1RESVIpJChzeXNjb25mZGlyKSAkKERFU1RESVIpJChiaW5kaXIpICQoREVTVERJUikkKHNiaW5kaXIpICQoREVTVERJUikkKG1hbmRpcikgJChERVNURElSKSQobWFuZGlyKS9tYW4xICQoREVTVERJUikkKG1hbmRpcikvbWFuNSAkKERFU1RESVIpJChtYW5kaXIpL21hbjg6CiAgCUBpZiBbICEgLWQgJEAgXTsgdGhlbiBcCkBAIC02MCwxMSArNjAsMTEgQEAKICAJCSAgICAgICAgICAgJCh0b3Bfc3JjZGlyKS9zYW1wbGUtY29uZmlndXJhdGlvbnMvYmFzaWMuY29uZiBcCiAgCSAgICAgICAJICAgICAgICAgICAkKERFU1RESVIpJChzeXNjb25mZGlyKS9wcm9mdHBkLmNvbmYgOyBcCiAgCWZpCi1JbmRleDogcHJvZnRwZC0xLjMuNS9jb25maWd1cmUKK0luZGV4OiBwcm9mdHBkLTEuMy42L2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHByb2Z0cGQtMS4zLjUub3JpZy9jb25maWd1cmUKLSsrKyBwcm9mdHBkLTEuMy41L2NvbmZpZ3VyZQotQEAgLTM4MjU1LDcgKzM4MjU1LDcgQEAgX0FDRU9GCistLS0gcHJvZnRwZC0xLjMuNi5vcmlnL2NvbmZpZ3VyZQorKysrIHByb2Z0cGQtMS4zLjYvY29uZmlndXJlCitAQCAtNDE3NzcsNyArNDE3NzcsNyBAQCBfQUNFT0YKICAKICAKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCkBAIC03Miw5ICs3Miw5IEBACiArI2RlZmluZSBQUl9SVU5fRElSICJgZXZhbCBlY2hvICIke2xvY2Fsc3RhdGVkaXJ9Ii9ydW4vYCIKICBfQUNFT0YKICAKLSBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi1AQCAtMzgyNjMsNyArMzgyNjMsNyBAQCBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0gX0FDRU9GCisgCitAQCAtNDE3ODcsNyArNDE3ODcsNyBAQCBfQUNFT0YKKyAKICAKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAtI2RlZmluZSBQUl9QSURfRklMRV9QQVRIICJgZXZhbCBlY2hvICIke2xvY2Fsc3RhdGVkaXJ9L3Byb2Z0cGQucGlkImAiCkBAIC04MiwyNSArODIsMjUgQEAKICBfQUNFT0YKICAKICAKLUluZGV4OiBwcm9mdHBkLTEuMy41L2NvbmZpZ3VyZS5pbgorSW5kZXg6IHByb2Z0cGQtMS4zLjYvY29uZmlndXJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHJvZnRwZC0xLjMuNS5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIHByb2Z0cGQtMS4zLjUvY29uZmlndXJlLmluCi1AQCAtMjk3MSw4ICsyOTcxLDggQEAgbG9jYWxlX2Rpcj0iYGV2YWwgZWNobyAke2xvY2FsZV9kaXJ9YCIKLSBBQ19ERUZJTkVfVU5RVU9URUQoUFJfTE9DQUxFX0RJUiwgImBldmFsIGVjaG8gIiR7bG9jYWxlX2Rpcn0iYCIpCistLS0gcHJvZnRwZC0xLjMuNi5vcmlnL2NvbmZpZ3VyZS5pbgorKysrIHByb2Z0cGQtMS4zLjYvY29uZmlndXJlLmluCitAQCAtMzgzMyw4ICszODMzLDggQEAgbG9jYWxlX2Rpcj0iYGV2YWwgZWNobyAke2xvY2FsZV9kaXJ9YCIKKyBBQ19ERUZJTkVfVU5RVU9URUQoUFJfTE9DQUxFX0RJUiwgImBldmFsIGVjaG8gIiR7bG9jYWxlX2Rpcn0iYCIsIFtEZWZpbmUgdGhlIGxvY2FsZSBkaXJlY3RvcnldKQogIAotIEFDX0RFRklORV9VTlFVT1RFRChQUl9SVU5fRElSLCAiYGV2YWwgZWNobyAiJHtsb2NhbHN0YXRlZGlyfSJgIikKLS1BQ19ERUZJTkVfVU5RVU9URUQoUFJfQ09ORklHX0ZJTEVfUEFUSCwgImBldmFsIGVjaG8gIiR7c3lzY29uZmRpcn0vcHJvZnRwZC5jb25mImAiKQotLUFDX0RFRklORV9VTlFVT1RFRChQUl9QSURfRklMRV9QQVRILCAiYGV2YWwgZWNobyAiJHtsb2NhbHN0YXRlZGlyfS9wcm9mdHBkLnBpZCJgIikKLStBQ19ERUZJTkVfVU5RVU9URUQoUFJfQ09ORklHX0ZJTEVfUEFUSCwgImBldmFsIGVjaG8gIiR7c3lzY29uZmRpcn0vcnVuL3Byb2Z0cGQuY29uZiJgIikKLStBQ19ERUZJTkVfVU5RVU9URUQoUFJfUElEX0ZJTEVfUEFUSCwgImBldmFsIGVjaG8gIiR7bG9jYWxzdGF0ZWRpcn0vcnVuL3Byb2Z0cGQucGlkImAiKQorIEFDX0RFRklORV9VTlFVT1RFRChQUl9SVU5fRElSLCAiYGV2YWwgZWNobyAiJHtsb2NhbHN0YXRlZGlyfSJgIiwgW0RlZmluZSB0aGUgcnVuIGRpcmVjdG9yeV0pCistQUNfREVGSU5FX1VOUVVPVEVEKFBSX0NPTkZJR19GSUxFX1BBVEgsICJgZXZhbCBlY2hvICIke3N5c2NvbmZkaXJ9L3Byb2Z0cGQuY29uZiJgIiwgW0RlZmluZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHBhdGhdKQorLUFDX0RFRklORV9VTlFVT1RFRChQUl9QSURfRklMRV9QQVRILCAiYGV2YWwgZWNobyAiJHtsb2NhbHN0YXRlZGlyfS9wcm9mdHBkLnBpZCJgIiwgW0RlZmluZSB0aGUgUElEIGZpbGUgcGF0aF0pCisrQUNfREVGSU5FX1VOUVVPVEVEKFBSX0NPTkZJR19GSUxFX1BBVEgsICJgZXZhbCBlY2hvICIke3N5c2NvbmZkaXJ9L3J1bi9wcm9mdHBkLmNvbmYiYCIsIFtEZWZpbmUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoXSkKKytBQ19ERUZJTkVfVU5RVU9URUQoUFJfUElEX0ZJTEVfUEFUSCwgImBldmFsIGVjaG8gIiR7bG9jYWxzdGF0ZWRpcn0vcnVuL3Byb2Z0cGQucGlkImAiLCBbRGVmaW5lIHRoZSBQSUQgZmlsZSBwYXRoXSkKICAKICBwcmVmaXg9IiRwcl9zYXZlZF9wcmVmaXgiCiAgZXhlY19wcmVmaXg9IiRwcl9zYXZlZF9leGVjX3ByZWZpeCIKLUluZGV4OiBwcm9mdHBkLTEuMy41L2xpYi9saWJjYXAvTWFrZWZpbGUKK0luZGV4OiBwcm9mdHBkLTEuMy42L2xpYi9saWJjYXAvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwcm9mdHBkLTEuMy41Lm9yaWcvbGliL2xpYmNhcC9NYWtlZmlsZQotKysrIHByb2Z0cGQtMS4zLjUvbGliL2xpYmNhcC9NYWtlZmlsZQorLS0tIHByb2Z0cGQtMS4zLjYub3JpZy9saWIvbGliY2FwL01ha2VmaWxlCisrKysgcHJvZnRwZC0xLjMuNi9saWIvbGliY2FwL01ha2VmaWxlCiBAQCAtMjYsNyArMjYsNyBAQCBPQkpTPSQoYWRkc3VmZml4IC5vLCAkKEZJTEVTKSkKICBhbGw6ICQoTElCTkFNRSkKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL3Byb2Z0cGRfMS4zLjViLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNWIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZWZhYzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNWIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWN1cmUgYW5kIGNvbmZpZ3VyYWJsZSBGVFAgc2VydmVyIgotU0VDVElPTiA9ICJuZXQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnByb2Z0cGQub3JnIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjBkMTQ4NGQxMTkxNWZhODhhNmE3NzAyZjFkYzE4NCIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAucHJvZnRwZC5vcmcvZGlzdHJpYi9zb3VyY2UvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9iYXNpYy5jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Byb2Z0cGQtYmFzaWMuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL2Nsb3NlLVJlcXVpcmVWYWxpZFNoZWxsLWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbnRyaWIucGF0Y2ggIFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkX2ZpeHVwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Byb2Z0cGQuc2VydmljZSBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImY3YjhlM2EzODNiMzRhODk0YzI1MDJkYjc0Y2NjY2RlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmYzE3ODlmMjQ3OGFjZjg4ZGZkYzdkNzBkYTkwYTRmYTI3ODZkNjI4MjE4ZTk1NzQyNzMyOTVkMDQ0YjRmYzgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInNoYWRvdyBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NiBwYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHW2N1cnNlc10gPSAiLS1lbmFibGUtY3Vyc2VzIC0tZW5hYmxlLW5jdXJzZXMsIC0tZGlzYWJsZS1jdXJzZXMgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsIC0tZGlzYWJsZS1vcGVuc3NsLCBvcGVuc3NsLCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLWF1dGgtcGFtLCAtLWRpc2FibGUtYXV0aC1wYW0sIGxpYnBhbSwgbGlicGFtIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LCAtLWRpc2FibGUtaXB2NiIKLVBBQ0tBR0VDT05GSUdbc2hhZG93XSA9ICItLWVuYWJsZS1zaGFkb3csIC0tZGlzYWJsZS1zaGFkb3ciCi1QQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBjcmUsIC0tZGlzYWJsZS1wY3JlLCBsaWJwY3JlICIKLQotIyBlbmFibGUgUE9TSVguMWUgY2FwYWJpbGl0aWVzCi1QQUNLQUdFQ09ORklHW2NhcF0gPSAiLS1lbmFibGUtY2FwLCAtLWRpc2FibGUtY2FwLCBsaWJjYXAsIGxpYmNhcCIKLQotI2VuYWJsZSBzdXBwb3J0IGZvciBQT1NJWCBBQ0xzCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtZmFjbCwgLS1kaXNhYmxlLWZhY2wiCi0KLSNlbmFibGUgcHJvZnRwZCBjb250cm9scyB2aWEgZnRwZGN0Ci1QQUNLQUdFQ09ORklHW2N0cmxzXSA9ICItLWVuYWJsZS1jdHJscywgLS1kaXNhYmxlLWNydGxzIgotCi0jcHJldmVudCBwcm9mdHBkIGZyb20gdXNpbmcgaXRzIGJ1bmRsZWQgZ2V0b3B0IGltcGxlbWVudGF0aW9uLgotUEFDS0FHRUNPTkZJR1tnZXRvcHRdID0gIi0td2l0aC1nZXRvcHQsIC0td2l0aG91dC1nZXRvcHQiCi0KLSNkbyBub3Qgc3RyaXAgZGVidWdnaW5nIHN5bWJvbHMgZnJvbSBpbnN0YWxsZWQgY29kZQotUEFDS0FHRUNPTkZJR1tzdHJpcF0gPSAiLS1lbmFibGUtc3RyaXAsIC0tZGlzYWJsZS1zdHJpcCIKLQotI2VuYWJsZSBTSUEgYXV0aGVudGljYXRpb24gc3VwcG9ydCAoVHJ1NjQpCi1QQUNLQUdFQ09ORklHW3NpYV0gPSAiLS1lbmFibGUtc2lhLCAtLWRpc2FibGUtc2lhIgotUEFDS0FHRUNPTkZJR1tzZW5kZmlsZV0gPSAiLWVuYWJsZS1zZW5kZmlsZSwgLS1kaXNhYmxlLXNlbmRmaWxlIgotCi0jZW5hYmxlIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0IChOTFMpCi1QQUNLQUdFQ09ORklHW25sc10gPSAiLS1lbmFibGUtbmxzLCAtLWRpc2FibGUtbmxzIgotCi0jYWRkIG1vZF9kc28gdG8gY29yZSBtb2R1bGVzCi1QQUNLQUdFQ09ORklHW2Rzb10gPSAiLS1lbmFibGUtZHNvLCAtLWRpc2FibGUtZHNvIgotUEFDS0FHRUNPTkZJR1tsYXJnZWZpbGVdID0gIi0tZW5hYmxlLWxhcmdlZmlsZSwgLS1kaXNhYmxlLWxhcmdlZmlsZSIKLQotI29taXQgbW9kX2F1dGhfZmlsZSBmcm9tIGNvcmUgbW9kdWxlcwotUEFDS0FHRUNPTkZJR1thdXRoXSA9ICItLWVuYWJsZS1hdXRoLWZpbGUsIC0tZGlzYWJsZS1hdXRoLWZpbGUiCi0KLQotIyBwcm9mdHBkIHVzZXMgbGlibHRkbCB3aGljaCBjdXJyZW50bHkgbWFrZXMgY29uZmlndXJpbmcgdXNpbmcKLSMgYXV0b3Rvb2xzLmJiY2xhc3MgYSBwYWluLi4uCi1kb19jb25maWd1cmUgKCkgewotICAgIG9lX3J1bmNvbmYKLSAgICBjcCAke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sICR7U30vbGlidG9vbAotfQotCi1GVFBVU0VSID0gImZ0cCIKLUZUUEdST1VQID0gImZ0cCIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAotICAgIHJtZGlyICR7RH0ke2xpYmRpcn0vcHJvZnRwZCAke0R9JHtkYXRhZGlyfS9sb2NhbGUKLSAgICBbIC1kICR7RH0ke2xpYmV4ZWNkaXJ9IF0gJiYgcm1kaXIgJHtEfSR7bGliZXhlY2Rpcn0KLSAgICBzZWQgLWkgJy8gKlVzZXJbIFx0XSovcy9mdHAvJHtGVFBVU0VSfS8nICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2Z0cGQuY29uZgotICAgIHNlZCAtaSAnLyAqR3JvdXBbIFx0XSovcy9mdHAvJHtGVFBHUk9VUH0vJyAke0R9JHtzeXNjb25mZGlyfS9wcm9mdHBkLmNvbmYKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3Byb2Z0cGQtYmFzaWMuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcHJvZnRwZAotICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wcm9mdHBkCi0gICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wcm9mdHBkCi0gICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wcm9mdHBkCi0gICAgc2VkIC1pICdzIV5QQVRIPS4qIVBBVEg9JHtiYXNlX3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7c2JpbmRpcn06JHtiaW5kaXJ9IScgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3Byb2Z0cGQKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9wcm9mdHBkCi0KLSAgICAjIGNyZWF0ZSB0aGUgcHViIGRpcmVjdG9yeQotICAgIG1rZGlyIC1wICR7RH0vaG9tZS8ke0ZUUFVTRVJ9L3B1Yi8KLSAgICBjaG93biAtUiAke0ZUUFVTRVJ9OiR7RlRQR1JPVVB9ICR7RH0vaG9tZS8ke0ZUUFVTRVJ9L3B1YgotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgIyBpbnN0YWxsIHByb2Z0cGQgcGFtIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZAotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1N9L2NvbnRyaWIvZGlzdC9ycG0vZnRwLnBhbWQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvcHJvZnRwZAotICAgICAgICBzZWQgLWkgJy9mdHB1c2Vycy9kJyAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9wcm9mdHBkCi0gICAgICAgICMgc3BlY2lmeSB0aGUgdXNlciBBdXRoZW50aWNhdGlvbiBjb25maWcKLSAgICAgICAgc2VkIC1pICcvXk1heEluc3RhbmNlcy9hXEF1dGhQQU0gICAgICAgICAgICAgICAgICAgICAgICAgb25cbkF1dGhQQU1Db25maWcgICAgICAgICAgICAgICAgICAgcHJvZnRwZCcgXAotICAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vcHJvZnRwZC5jb25mCi0gICAgZmkKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9wcm9mdHBkLnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1lICdzLEBCQVNFX1NCSU5ESVJALCR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLSAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotICAgICAgICAtaSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQotICAgIHNlZCAtZSAnc3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZycgXAotICAgICAgICAtZSAnc3wke1NUQUdJTkdfRElSX05BVElWRX18fGcnIFwKLSAgICAgICAgLWUgJ3N8LWZkZWJ1Zy1wcmVmaXgtbWFwPVteIF0qfHxnJyBcCi0gICAgICAgIC1pICR7RH0vJHtiaW5kaXJ9L3ByeHMKLQotICAgICMgZnRwbWFpbCBwZXJsIHNjcmlwdCwgd2hpY2ggcmVhZHMgdGhlIHByb2Z0cGQgbG9nIGZpbGUgYW5kIHNlbmRzCi0gICAgIyBhdXRvbWF0aWMgZW1haWwgbm90aWZpY2F0aW9ucyBvbmNlIGFuIHVwbG9hZCBmaW5pc2hzLAotICAgICMgZGVwZW5kcyBvbiBhbiBvbGQgcGVybCBNYWlsOjpTZW5kbWFpbAotICAgICMgVGhlIE1haWw6OlNlbmRtYWlsIGhhcyBub3QgYmVlbiBtYWludGFpbmVkIGZvciBhbG1vc3QgMTAgeWVhcnMKLSAgICAjIE90aGVyIGRpc3RyaWJ1dGlvbiBub3Qgc2hpcCB3aXRoIGZ0cG1haWwsIHNvIGRvIHRoZSBzYW1lIHRvCi0gICAgIyBhdm9pZCBjb25mdXNpb24gYWJvdXQgaGF2aW5nIGl0IGZhaWxzIHRvIHJ1bgotICAgIHJtIC1yZiAke0R9JHtiaW5kaXJ9L2Z0cG1haWwKLSAgICBybSAtcmYgJHtEfSR7bWFuZGlyfS9tYW4xL2Z0cG1haWwuMQotfQotCi1JTklUU0NSSVBUX05BTUUgPSAicHJvZnRwZCIKLUlOSVRTQ1JJUFRfUEFSQU0gPSAiZGVmYXVsdHMgODUgMTUiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicHJvZnRwZC5zZXJ2aWNlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gJHtGVFBHUk9VUH0iCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC1nICR7RlRQR1JPVVB9IC0taG9tZS1kaXIgL3Zhci9saWIvJHtGVFBVU0VSfSAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlICR7RlRQVVNFUn0iCi0KLUZJTEVTXyR7UE59ICs9ICIvaG9tZS8ke0ZUUFVTRVJ9IgotCi1SREVQRU5EU18ke1BOfSArPSAicGVybCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL3Byb2Z0cGRfMS4zLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHJvZnRwZC9wcm9mdHBkXzEuMy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwOTk0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHJvZnRwZC9wcm9mdHBkXzEuMy42LmJiCkBAIC0wLDAgKzEsMTM4IEBACitTVU1NQVJZID0gIlNlY3VyZSBhbmQgY29uZmlndXJhYmxlIEZUUCBzZXJ2ZXIiCitTRUNUSU9OID0gIm5ldCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucHJvZnRwZC5vcmciCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiMGQxNDg0ZDExOTE1ZmE4OGE2YTc3MDJmMWRjMTg0IgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5wcm9mdHBkLm9yZy9kaXN0cmliL3NvdXJjZS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2Jhc2ljLmNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHJvZnRwZC1iYXNpYy5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vY2xvc2UtUmVxdWlyZVZhbGlkU2hlbGwtY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29udHJpYi5wYXRjaCAgXAorICAgICAgICAgICBmaWxlOi8vYnVpbGRfZml4dXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHJvZnRwZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgIgoraVNSQ19VUklbbWQ1c3VtXSA9ICIxMzI3MDkxMWM0MmFhYzg0MjQzNWYxODIwNTU0NmExYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWVmNzRiMTQzNDk1ZDVmZjk3YzRkNDc3MGM2ODA0MDcyYThjOGViMWFkMWVjYzhjYzU0MWI0MGUxNTJlY2FmIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXNlcmFkZCB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKK1BBQ0tBR0VDT05GSUcgPz89ICJzaGFkb3cgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYgcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1tjdXJzZXNdID0gIi0tZW5hYmxlLWN1cnNlcyAtLWVuYWJsZS1uY3Vyc2VzLCAtLWRpc2FibGUtY3Vyc2VzIC0tZGlzYWJsZS1uY3Vyc2VzLCBuY3Vyc2VzIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLCAtLWRpc2FibGUtb3BlbnNzbCwgb3BlbnNzbCwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS1hdXRoLXBhbSwgLS1kaXNhYmxlLWF1dGgtcGFtLCBsaWJwYW0sIGxpYnBhbSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwgLS1kaXNhYmxlLWlwdjYiCitQQUNLQUdFQ09ORklHW3NoYWRvd10gPSAiLS1lbmFibGUtc2hhZG93LCAtLWRpc2FibGUtc2hhZG93IgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLWVuYWJsZS1wY3JlLCAtLWRpc2FibGUtcGNyZSwgbGlicGNyZSAiCisKKyMgZW5hYmxlIFBPU0lYLjFlIGNhcGFiaWxpdGllcworUEFDS0FHRUNPTkZJR1tjYXBdID0gIi0tZW5hYmxlLWNhcCwgLS1kaXNhYmxlLWNhcCwgbGliY2FwLCBsaWJjYXAiCisKKyNlbmFibGUgc3VwcG9ydCBmb3IgUE9TSVggQUNMcworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWZhY2wsIC0tZGlzYWJsZS1mYWNsIgorCisjZW5hYmxlIHByb2Z0cGQgY29udHJvbHMgdmlhIGZ0cGRjdAorUEFDS0FHRUNPTkZJR1tjdHJsc10gPSAiLS1lbmFibGUtY3RybHMsIC0tZGlzYWJsZS1jcnRscyIKKworI3ByZXZlbnQgcHJvZnRwZCBmcm9tIHVzaW5nIGl0cyBidW5kbGVkIGdldG9wdCBpbXBsZW1lbnRhdGlvbi4KK1BBQ0tBR0VDT05GSUdbZ2V0b3B0XSA9ICItLXdpdGgtZ2V0b3B0LCAtLXdpdGhvdXQtZ2V0b3B0IgorCisjZG8gbm90IHN0cmlwIGRlYnVnZ2luZyBzeW1ib2xzIGZyb20gaW5zdGFsbGVkIGNvZGUKK1BBQ0tBR0VDT05GSUdbc3RyaXBdID0gIi0tZW5hYmxlLXN0cmlwLCAtLWRpc2FibGUtc3RyaXAiCisKKyNlbmFibGUgU0lBIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQgKFRydTY0KQorUEFDS0FHRUNPTkZJR1tzaWFdID0gIi0tZW5hYmxlLXNpYSwgLS1kaXNhYmxlLXNpYSIKK1BBQ0tBR0VDT05GSUdbc2VuZGZpbGVdID0gIi1lbmFibGUtc2VuZGZpbGUsIC0tZGlzYWJsZS1zZW5kZmlsZSIKKworI2VuYWJsZSBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydCAoTkxTKQorUEFDS0FHRUNPTkZJR1tubHNdID0gIi0tZW5hYmxlLW5scywgLS1kaXNhYmxlLW5scyIKKworI2FkZCBtb2RfZHNvIHRvIGNvcmUgbW9kdWxlcworUEFDS0FHRUNPTkZJR1tkc29dID0gIi0tZW5hYmxlLWRzbywgLS1kaXNhYmxlLWRzbyIKK1BBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsIC0tZGlzYWJsZS1sYXJnZWZpbGUiCisKKyNvbWl0IG1vZF9hdXRoX2ZpbGUgZnJvbSBjb3JlIG1vZHVsZXMKK1BBQ0tBR0VDT05GSUdbYXV0aF0gPSAiLS1lbmFibGUtYXV0aC1maWxlLCAtLWRpc2FibGUtYXV0aC1maWxlIgorCisKKyMgcHJvZnRwZCB1c2VzIGxpYmx0ZGwgd2hpY2ggY3VycmVudGx5IG1ha2VzIGNvbmZpZ3VyaW5nIHVzaW5nCisjIGF1dG90b29scy5iYmNsYXNzIGEgcGFpbi4uLgorZG9fY29uZmlndXJlICgpIHsKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5ndWVzcyAke1N9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30KKyAgICBvZV9ydW5jb25mCisgICAgY3AgJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCAke1N9L2xpYnRvb2wKK30KKworRlRQVVNFUiA9ICJmdHAiCitGVFBHUk9VUCA9ICJmdHAiCisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKKyAgICBybWRpciAke0R9JHtsaWJkaXJ9L3Byb2Z0cGQgJHtEfSR7ZGF0YWRpcn0vbG9jYWxlCisgICAgWyAtZCAke0R9JHtsaWJleGVjZGlyfSBdICYmIHJtZGlyICR7RH0ke2xpYmV4ZWNkaXJ9CisgICAgc2VkIC1pICcvICpVc2VyWyBcdF0qL3MvZnRwLyR7RlRQVVNFUn0vJyAke0R9JHtzeXNjb25mZGlyfS9wcm9mdHBkLmNvbmYKKyAgICBzZWQgLWkgJy8gKkdyb3VwWyBcdF0qL3MvZnRwLyR7RlRQR1JPVVB9LycgJHtEfSR7c3lzY29uZmRpcn0vcHJvZnRwZC5jb25mCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9wcm9mdHBkLWJhc2ljLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3Byb2Z0cGQKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcHJvZnRwZAorICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcHJvZnRwZAorICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcHJvZnRwZAorICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wcm9mdHBkCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvcHJvZnRwZAorCisgICAgIyBjcmVhdGUgdGhlIHB1YiBkaXJlY3RvcnkKKyAgICBta2RpciAtcCAke0R9L2hvbWUvJHtGVFBVU0VSfS9wdWIvCisgICAgY2hvd24gLVIgJHtGVFBVU0VSfToke0ZUUEdST1VQfSAke0R9L2hvbWUvJHtGVFBVU0VSfS9wdWIKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICMgaW5zdGFsbCBwcm9mdHBkIHBhbSBjb25maWd1cmF0aW9uCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQKKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9jb250cmliL2Rpc3QvcnBtL2Z0cC5wYW1kICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3Byb2Z0cGQKKyAgICAgICAgc2VkIC1pICcvZnRwdXNlcnMvZCcgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvcHJvZnRwZAorICAgICAgICAjIHNwZWNpZnkgdGhlIHVzZXIgQXV0aGVudGljYXRpb24gY29uZmlnCisgICAgICAgIHNlZCAtaSAnL15NYXhJbnN0YW5jZXMvYVxBdXRoUEFNICAgICAgICAgICAgICAgICAgICAgICAgIG9uXG5BdXRoUEFNQ29uZmlnICAgICAgICAgICAgICAgICAgIHByb2Z0cGQnIFwKKyAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2Z0cGQuY29uZgorICAgIGZpCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcHJvZnRwZC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtZSAncyxAQkFTRV9TQklORElSQCwke2Jhc2Vfc2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgLWkgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisKKyAgICBzZWQgLWUgJ3N8LS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH18fGcnIFwKKyAgICAgICAgLWUgJ3N8JHtTVEFHSU5HX0RJUl9OQVRJVkV9fHxnJyBcCisgICAgICAgIC1lICdzfC1mZGVidWctcHJlZml4LW1hcD1bXiBdKnx8ZycgXAorICAgICAgICAtaSAke0R9LyR7YmluZGlyfS9wcnhzCisKKyAgICAjIGZ0cG1haWwgcGVybCBzY3JpcHQsIHdoaWNoIHJlYWRzIHRoZSBwcm9mdHBkIGxvZyBmaWxlIGFuZCBzZW5kcworICAgICMgYXV0b21hdGljIGVtYWlsIG5vdGlmaWNhdGlvbnMgb25jZSBhbiB1cGxvYWQgZmluaXNocywKKyAgICAjIGRlcGVuZHMgb24gYW4gb2xkIHBlcmwgTWFpbDo6U2VuZG1haWwKKyAgICAjIFRoZSBNYWlsOjpTZW5kbWFpbCBoYXMgbm90IGJlZW4gbWFpbnRhaW5lZCBmb3IgYWxtb3N0IDEwIHllYXJzCisgICAgIyBPdGhlciBkaXN0cmlidXRpb24gbm90IHNoaXAgd2l0aCBmdHBtYWlsLCBzbyBkbyB0aGUgc2FtZSB0bworICAgICMgYXZvaWQgY29uZnVzaW9uIGFib3V0IGhhdmluZyBpdCBmYWlscyB0byBydW4KKyAgICBybSAtcmYgJHtEfSR7YmluZGlyfS9mdHBtYWlsCisgICAgcm0gLXJmICR7RH0ke21hbmRpcn0vbWFuMS9mdHBtYWlsLjEKK30KKworSU5JVFNDUklQVF9OQU1FID0gInByb2Z0cGQiCitJTklUU0NSSVBUX1BBUkFNID0gImRlZmF1bHRzIDg1IDE1IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInByb2Z0cGQuc2VydmljZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtICR7RlRQR1JPVVB9IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZyAke0ZUUEdST1VQfSAtLWhvbWUtZGlyIC92YXIvbGliLyR7RlRQVVNFUn0gLS1uby1jcmVhdGUtaG9tZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAke0ZUUFVTRVJ9IgorCitGSUxFU18ke1BOfSArPSAiL2hvbWUvJHtGVFBVU0VSfSIKKworUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmRfMi4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9yYWR2ZC9yYWR2ZF8yLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTI1MjQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9yYWR2ZC9yYWR2ZF8yLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLXJlcXVpcmUgcmFkdmQuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhY2QzODgzZGVjZTJjNzg4OGQxNTU5NmIwNWM5ZmFlNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NmQzMWMwNWRhZWExMWMzZDFlM2RjMDkyOTk3ZDM2MzFiM2JjNzJiMjBhNGYyNzliMDUzMDRiODNkYmQ3YWE4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3JhZHZkL3JhZHZkXzIuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmRfMi4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmFlYTAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3JhZHZkL3JhZHZkXzIuMTcuYmIKQEAgLTAsMCArMSw1IEBACisKK3JlcXVpcmUgcmFkdmQuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NGVlM2ZkYjU1NDRiY2RkZWYxYzZjZDgwZDc3ZmEwYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1Mzc1N2U3ZjIxNjQ4OTllMTE0NTQ4MmYxYWU5MTgyOTYwMGE2ZTJmNmZlYzI5Y2ZiM2IzNTBhM2JiNDViZDVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwYTNhYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2gKQEAgLTAsMCArMSwxMTYgQEAKK0Zyb20gMTRkNDY5YmM4MmM3NTgxMTZhZWY3ZDU0OWFiZDQ5YzEzMWI0MTcwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIyIEFwciAyMDE3IDExOjU0OjU3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQ2hlY2sgZm9yIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24gY29tcGlsZXIKKyBvcHRpb24KKworSWYgdGhpcyBvcHRpb24gaXMgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyIHRoZW4gZGlzYWJsZSBpdCAoIGdjYzcrKQorRml4ZXMKK2NsaWVudC5jOjgzNDoyMzogZXJyb3I6ICclcycgZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIHdyaXRpbmcgdXAgdG8gMTAyMyBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgMTAxMCBbLVdlcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbj1dCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgfCAgMyArLQorIG00L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNCB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKKworSW5kZXg6IHNxdWlkLTMuNS4yNi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzcXVpZC0zLjUuMjYub3JpZy9jb25maWd1cmUuYWMKKysrKyBzcXVpZC0zLjUuMjYvY29uZmlndXJlLmFjCitAQCAtMjYsNiArMjYsNyBAQCBtNF9pbmNsdWRlKFthY2luY2x1ZGUvcGtnLm00XSkKKyBtNF9pbmNsdWRlKFthY2luY2x1ZGUvbGliLWNoZWNrcy5tNF0pCisgbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2N4eF9jb21waWxlX3N0ZGN4eF8xMS5tNF0pCisgbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2N4eF8weF90eXBlcy5tNF0pCisrbTRfaW5jbHVkZShbYWNpbmNsdWRlL2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNF0pCisgCisgSE9TVENYWD0iJEJVSUxEX0NYWCIKKyBQUkVTRVRfQ0ZMQUdTPSIkQ0ZMQUdTIgorQEAgLTQ0LDYgKzQ1LDcgQEAgQUNfUFJPR19DWFgKKyBBQ19MQU5HKFtDKytdKQorIEFDX0NBTk9OSUNBTF9IT1NUCisgCisrQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKFstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uXSxbQ0ZMQUdTPSIkQ0ZMQUdTIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24iIENYWEZMQUdTPSIkQ1hYRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiJdKQorICMgQ2xhbmcgMy4yIG9uIHNvbWUgQ1BVcyByZXF1aXJlcyAtbWFyY2gtbmF0aXZlIHRvIGRldGVjdCBjb3JyZWN0bHkuCisgIyBHQ0MgNC4zKyBjYW4gYWxzbyBwcm9kdWNlIGZhc3RlciBleGVjdXRhYmxlcyB3aGVuIGl0cyB1c2VkLgorICMgQnV0IGJ1aWxkaW5nIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudCBoYXMgYmVlbiBmb3VuZCB0bworSW5kZXg6IHNxdWlkLTMuNS4yNi9hY2luY2x1ZGUvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCisrKysgc3F1aWQtMy41LjI2L2FjaW5jbHVkZS9heF9jaGVja19jb21waWxlX2ZsYWcubTQKK0BAIC0wLDAgKzEsNzQgQEAKKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyMgIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jaGVja19jb21waWxlX2ZsYWcuaHRtbAorKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIworKyMgU1lOT1BTSVMKKysjCisrIyAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRyhGTEFHLCBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdLCBbRVhUUkEtRkxBR1NdLCBbSU5QVVRdKQorKyMKKysjIERFU0NSSVBUSU9OCisrIworKyMgICBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBGTEFHIHdvcmtzIHdpdGggdGhlIGN1cnJlbnQgbGFuZ3VhZ2UncyBjb21waWxlcgorKyMgICBvciBnaXZlcyBhbiBlcnJvci4gIChXYXJuaW5ncywgaG93ZXZlciwgYXJlIGlnbm9yZWQpCisrIworKyMgICBBQ1RJT04tU1VDQ0VTUy9BQ1RJT04tRkFJTFVSRSBhcmUgc2hlbGwgY29tbWFuZHMgdG8gZXhlY3V0ZSBvbgorKyMgICBzdWNjZXNzL2ZhaWx1cmUuCisrIworKyMgICBJZiBFWFRSQS1GTEFHUyBpcyBkZWZpbmVkLCBpdCBpcyBhZGRlZCB0byB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGRlZmF1bHQKKysjICAgZmxhZ3MgKGUuZy4gQ0ZMQUdTKSB3aGVuIHRoZSBjaGVjayBpcyBkb25lLiAgVGhlIGNoZWNrIGlzIHRodXMgbWFkZSB3aXRoCisrIyAgIHRoZSBmbGFnczogIkNGTEFHUyBFWFRSQS1GTEFHUyBGTEFHIi4gIFRoaXMgY2FuIGZvciBleGFtcGxlIGJlIHVzZWQgdG8KKysjICAgZm9yY2UgdGhlIGNvbXBpbGVyIHRvIGlzc3VlIGFuIGVycm9yIHdoZW4gYSBiYWQgZmxhZyBpcyBnaXZlbi4KKysjCisrIyAgIElOUFVUIGdpdmVzIGFuIGFsdGVybmF0aXZlIGlucHV0IHNvdXJjZSB0byBBQ19DT01QSUxFX0lGRUxTRS4KKysjCisrIyAgIE5PVEU6IEltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEFYX0NGTEFHU19HQ0NfT1BUSU9OLiBQbGVhc2Uga2VlcCB0aGlzCisrIyAgIG1hY3JvIGluIHN5bmMgd2l0aCBBWF9DSEVDS197UFJFUFJPQyxMSU5LfV9GTEFHLgorKyMKKysjIExJQ0VOU0UKKysjCisrIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorKyMgICBDb3B5cmlnaHQgKGMpIDIwMTEgTWFhcnRlbiBCb3NtYW5zIDxta2Jvc21hbnNAZ21haWwuY29tPgorKyMKKysjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKysjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKysjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyMKKysjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKysjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKysjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisrIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisrIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorKyMKKysjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisrIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKysjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKysKKysjc2VyaWFsIDUKKysKKytBQ19ERUZVTihbQVhfQ0hFQ0tfQ09NUElMRV9GTEFHXSwKKytbQUNfUFJFUkVRKDIuNjQpZG5sIGZvciBfQUNfTEFOR19QUkVGSVggYW5kIEFTX1ZBUl9JRgorK0FTX1ZBUl9QVVNIREVGKFtDQUNIRVZBUl0sW2F4X2N2X2NoZWNrX1tdX0FDX0xBTkdfQUJCUkVWW11mbGFnc18kNF8kMV0pZG5sCisrQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgX0FDX0xBTkcgY29tcGlsZXIgYWNjZXB0cyAkMV0sIENBQ0hFVkFSLCBbCisrICBheF9jaGVja19zYXZlX2ZsYWdzPSRbXV9BQ19MQU5HX1BSRUZJWFtdRkxBR1MKKysgIF9BQ19MQU5HX1BSRUZJWFtdRkxBR1M9IiRbXV9BQ19MQU5HX1BSRUZJWFtdRkxBR1MgJDQgJDEiCisrICBBQ19DT01QSUxFX0lGRUxTRShbbTRfZGVmYXVsdChbJDVdLFtBQ19MQU5HX1BST0dSQU0oKV0pXSwKKysgICAgW0FTX1ZBUl9TRVQoQ0FDSEVWQVIsW3llc10pXSwKKysgICAgW0FTX1ZBUl9TRVQoQ0FDSEVWQVIsW25vXSldKQorKyAgX0FDX0xBTkdfUFJFRklYW11GTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFnc10pCisrQVNfVkFSX0lGKENBQ0hFVkFSLHllcywKKysgIFttNF9kZWZhdWx0KFskMl0sIDopXSwKKysgIFttNF9kZWZhdWx0KFskM10sIDopXSkKKytBU19WQVJfUE9QREVGKFtDQUNIRVZBUl0pZG5sCisrXSlkbmwgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHUwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtdG9vbHMuY2MtZml4ZWQtdW51c2VkLXJlc3VsdC13YXJuaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtdG9vbHMuY2MtZml4ZWQtdW51c2VkLXJlc3VsdC13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MmExMTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS10b29scy5jYy1maXhlZC11bnVzZWQtcmVzdWx0LXdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBhNzhmMmYwZmVkYThmOTJjYjU5YWZlODIzNmJkOTA3MjY5MDg3NjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjUgSnVuIDIwMTcgMDA6NTk6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdG9vbHMuY2M6IGZpeGVkIHVudXNlZC1yZXN1bHQgd2FybmluZworCitmaXgKK3wgLi4vLi4vc3F1aWQtMy41LjI2L3NyYy90b29scy5jYzogSW4gZnVuY3Rpb24gJ3ZvaWQgZW50ZXJfc3VpZCgpJzoKK3wgLi4vLi4vc3F1aWQtMy41LjI2L3NyYy90b29scy5jYzo2MTY6MTE6IGVycm9yOiBpZ25vcmluZyByZXR1cm4gdmFsdWUgb2YgJ2ludCBzZXR1aWQoX191aWRfdCknLCBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQgWy1XZXJyb3I9dW51c2VkLXJlc3VsdF0KK3wgICAgICBzZXR1aWQoMCk7Cit8ICAgICAgfn5+fn5+Xn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBzcmMvdG9vbHMuY2MgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzLmNjIGIvc3JjL3Rvb2xzLmNjCitpbmRleCA4MTM3YTAzLi44NDNlMjY2IDEwMDY0NAorLS0tIGEvc3JjL3Rvb2xzLmNjCisrKysgYi9zcmMvdG9vbHMuY2MKK0BAIC02MTIsOCArNjEyLDggQEAgZW50ZXJfc3VpZCh2b2lkKQorICAgICBpZiAoc2V0cmVzdWlkKCh1aWRfdCktMSwgMCwgKHVpZF90KS0xKSA8IDApCisgICAgICAgICBkZWJ1Z3MgKDIxLCAzLCAiZW50ZXJfc3VpZDogc2V0cmVzdWlkIGZhaWxlZDogIiA8PCB4c3RyZXJyb3IgKCkpOworICNlbHNlCistCistICAgIHNldHVpZCgwKTsKKysgICAgaWYgKHNldHVpZCgwKSA8IDApCisrICAgICAgICBkZWJ1Z3MoNTAsIERCR19JTVBPUlRBTlQsICJXQVJOSU5HOiBub19zdWlkOiBzZXR1aWQoMCk6ICIgPDwgeHN0cmVycm9yKCkpOworICNlbmRpZgorICNpZiBIQVZFX1BSQ1RMICYmIGRlZmluZWQoUFJfU0VUX0RVTVBBQkxFKQorICAgICAvKiBTZXQgTGludXggRFVNUEFCTEUgZmxhZyAqLworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL2djYzctZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvZ2NjNy1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzFlYTc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL2djYzctZml4ZXMucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorLi4vLi4vc3F1aWQtMy41LjI2L3NyYy9EaXNrSU8vRGlza1RocmVhZHMvYWlvcHMuY2M6IEluIGZ1bmN0aW9uICd2b2lkIHNxdWlkYWlvX2luaXQoKSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi8uLi9zcXVpZC0zLjUuMjYvc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9EaXNrVGhyZWFkcy5oOjMwOjUwOiBlcnJvcjogJyonIGluIGJvb2xlYW4gY29udGV4dCwgc3VnZ2VzdCAnJiYnIGluc3RlYWQgWy1XZXJyb3I9aW50LWluLWJvb2wtY29udGV4dF0gICAgICAjZGVmaW5lIE5VTVRIUkVBRFMgKENvbmZpZy5jYWNoZVN3YXAubl9jb25maWd1cmVkKjE2KQorCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0luZGV4OiBzcXVpZC0zLjUuMjYvc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9haW9wcy5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNxdWlkLTMuNS4yNi5vcmlnL3NyYy9EaXNrSU8vRGlza1RocmVhZHMvYWlvcHMuY2MKKysrKyBzcXVpZC0zLjUuMjYvc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9haW9wcy5jYworQEAgLTI5MCw3ICsyOTAsNyBAQCBzcXVpZGFpb19pbml0KHZvaWQpCisgICAgIC8qIENyZWF0ZSB0aHJlYWRzIGFuZCBnZXQgdGhlbSB0byBzaXQgaW4gdGhlaXIgd2FpdCBsb29wICovCisgICAgIHNxdWlkYWlvX3RocmVhZF9wb29sID0gbWVtUG9vbENyZWF0ZSgiYWlvX3RocmVhZCIsIHNpemVvZihzcXVpZGFpb190aHJlYWRfdCkpOworIAorLSAgICBhc3NlcnQoTlVNVEhSRUFEUyk7CisrICAgIGFzc2VydChOVU1USFJFQURTICE9IDApOworIAorICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNVEhSRUFEUzsgKytpKSB7CisgICAgICAgICB0aHJlYWRwID0gKHNxdWlkYWlvX3RocmVhZF90ICopc3F1aWRhaW9fdGhyZWFkX3Bvb2wtPmFsbG9jKCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfMy41LjI1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL3NxdWlkXzMuNS4yNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTExNjM4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfMy41LjI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBmdWxseS1mZWF0dXJlZCBodHRwIHByb3h5IGFuZCB3ZWItY2FjaGUgZGFlbW9uIGZvciBMaW51eCIKLURFU0NSSVBUSU9OID0gIkEgZnVsbHktZmVhdHVyZWQgaHR0cCBwcm94eSBhbmQgd2ViLWNhY2hlIGRhZW1vbiBmb3IgTGludXguIFwKLVNxdWlkIG9mZmVycyBhIHJpY2ggYWNjZXNzIGNvbnRyb2wsIGF1dGhvcml6YXRpb24gYW5kIGxvZ2dpbmcgZW52aXJvbm1lbnQgdG8gXAotZGV2ZWxvcCB3ZWIgcHJveHkgYW5kIGNvbnRlbnQgc2VydmluZyBhcHBsaWNhdGlvbnMuIFwKLVNxdWlkIG9mZmVycyBhIHJpY2ggc2V0IG9mIHRyYWZmaWMgb3B0aW1pemF0aW9uIG9wdGlvbnMsIG1vc3Qgb2Ygd2hpY2ggYXJlIFwKLWVuYWJsZWQgYnkgZGVmYXVsdCBmb3Igc2ltcGxlciBpbnN0YWxsYXRpb24gYW5kIGhpZ2ggcGVyZm9ybWFuY2UuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3F1aWQtY2FjaGUub3JnIgotU0VDVElPTiA9ICJ3ZWIiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMSl9IgotTUlOX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuc3F1aWQtY2FjaGUub3JnL1ZlcnNpb25zL3Yke01BSl9WRVJ9LyR7TUlOX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vU2V0LXVwLWZvci1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Ta2lwLUFDX1JVTl9JRkVMU0UtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LWZsYXdlZC1keW5hbWljLWxkYi1saW5rLXRlc3QtaW4tY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NxdWlkLXVzZS1zZXJpYWwtdGVzdHMtY29uZmlnLW5lZWRlZC1ieS1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjAzX3NxdWlkIFwKLSAgICAgICAgICAgZmlsZTovL3NldF9zeXNyb290X3BhdGNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NxdWlkLWRvbi10LWRvLXNxdWlkLWNvbmYtdGVzdHMtYXQtYnVpbGQtdGltZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVNxdWlkTmV3LXVzZS1ub2V4Y2VwdC1pbnN0ZWFkLW9mLXRocm93LWZvci1DLTExLWNvbXAucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzM0YjIyODEyOWE3NTVmMzYzMzY3YzQ1YzQ2Mjg3YmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGJmZDYxODIxNTRiN2YyOTU3NGQ3MWM2NTlmMWNmZDFiN2Q5YmU5MzU2ODk1ZGFjNzBkYzBmMzY5NmEwNjM5YiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzQ5MmUyZDZkMzJlYzVjMWFhZDBlMDYwOWExNDFjZTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXJyb3JzL0NPUFlSSUdIVDttZDU9ODg2MTEzMGZhZTkxNDAwYmNmOTliNjZmMTMzMTcyYjMgXAotICAgICAgICAgICAgICAgICAgICIKLURFUEVORFMgPSAibGlidG9vbCBrcmI1IG9wZW5sZGFwIGRiIGN5cnVzLXNhc2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVzZXJhZGQgcHRlc3QKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NxdWlkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3F1aWQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAncG93ZXJwYycsICdub2F0b21pY3MnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAnbWlwcycsICdub2F0b21pY3MnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAnbWlwc2VsJywgJ25vYXRvbWljcycsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIgotUEFDS0FHRUNPTkZJR1tsaWJuZXRmaWx0ZXItY29ubnRyYWNrXSA9ICItLXdpdGgtbmV0ZmlsdGVyLWNvbm50cmFjaz0ke2luY2x1ZGVkaXJ9LCAtLXdpdGhvdXQtbmV0ZmlsdGVyLWNvbm50cmFjaywgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKLVBBQ0tBR0VDT05GSUdbbm9hdG9taWNzXSA9ICJzcXVpZF9jdl9nbnVfYXRvbWljcz1ubyxzcXVpZF9jdl9nbnVfYXRvbWljcz15ZXMsLCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLUJBU0lDX0FVVEggPSAiREIgU0FTTCBMREFQIgotQkFTSUNfQVVUSF9hcHBlbmRfbGliYy1nbGliYyA9ICIgTklTIgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotQkFTSUNfQVVUSCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnUEFNJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtZGVmYXVsdC11c2VyPXNxdWlkIC0tZW5hYmxlLWF1dGgtYmFzaWM9JyR7QkFTSUNfQVVUSH0nIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9LyR7QlBOfSAtLXdpdGgtbG9nZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbG9nLyR7QlBOfSIKLQotZXhwb3J0IEJVSUxEQ1hYRkxBR1M9IiR7QlVJTERfQ1hYRkxBR1N9IgotCi1URVNURElSID0gInRlc3Qtc3VpdGUiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBTWVNST09UPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBjcCAtcmYgJHtTfS8ke1RFU1RESVJ9ICR7RH0ke1BURVNUX1BBVEh9Ci0KLSAgICAjIGRvIE5PVCBuZWVkIHRvIHJlYnVpbGQgTWFrZWZpbGUgaXRzZWxmCi0gICAgc2VkIC1pICdzL15NYWtlZmlsZTouKiQvTWFrZWZpbGU6LycgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotCi0gICAgIyBBZGQgc3F1aWQtY29uZi10ZXN0cyBmb3IgcnVudGltZSB0ZXN0cwotICAgIHNlZCAtZSAncy9eXChydW50ZXN0LVRFU1RTOlwpL1wxIHNxdWlkLWNvbmYtdGVzdHMvJyBcCi0gICAgICAgIC1lICJzL1wobGlzdD0nIFwkKFRFU1RTKVwpL1wxIHNxdWlkLWNvbmYtdGVzdHMvIiBcCi0gICAgICAgIC1pICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLQotICAgICMgRW5zdXJlIHRoZSBwYXRoIGZvciBjb21tYW5kIHRydWUgaXMgY29ycmVjdAotICAgIHNlZCAtaSAnczpeVFJVRSA9IC4qJDpUUlVFID0gL2Jpbi90cnVlOicgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L3J1bi8ke0JQTn0gMDc1NSBzcXVpZCBzcXVpZCAtIiA+PiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCi0gICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvJHtCUE59IDA3NTAgc3F1aWQgc3F1aWQgLSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8ke0JQTn0uY29uZgotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3NxdWlkICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3NxdWlkCi0KLSAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotCi0gICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy8ke0JQTn0iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZyIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSAke2RhdGFkaXJ9L2Vycm9ycyAke2RhdGFkaXJ9L2ljb25zIgotRklMRVNfJHtQTn0tZGJnICs9ICIvdXNyL3NyYy9kZWJ1ZyIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS8qLnR4dCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9zcXVpZF8zLjUuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfMy41LjI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZTk2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfMy41LjI2LmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIkEgZnVsbHktZmVhdHVyZWQgaHR0cCBwcm94eSBhbmQgd2ViLWNhY2hlIGRhZW1vbiBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJBIGZ1bGx5LWZlYXR1cmVkIGh0dHAgcHJveHkgYW5kIHdlYi1jYWNoZSBkYWVtb24gZm9yIExpbnV4LiBcCitTcXVpZCBvZmZlcnMgYSByaWNoIGFjY2VzcyBjb250cm9sLCBhdXRob3JpemF0aW9uIGFuZCBsb2dnaW5nIGVudmlyb25tZW50IHRvIFwKK2RldmVsb3Agd2ViIHByb3h5IGFuZCBjb250ZW50IHNlcnZpbmcgYXBwbGljYXRpb25zLiBcCitTcXVpZCBvZmZlcnMgYSByaWNoIHNldCBvZiB0cmFmZmljIG9wdGltaXphdGlvbiBvcHRpb25zLCBtb3N0IG9mIHdoaWNoIGFyZSBcCitlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHNpbXBsZXIgaW5zdGFsbGF0aW9uIGFuZCBoaWdoIHBlcmZvcm1hbmNlLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnNxdWlkLWNhY2hlLm9yZyIKK1NFQ1RJT04gPSAid2ViIgorTElDRU5TRSA9ICJHUEx2MisiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDEpfSIKK01JTl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnNxdWlkLWNhY2hlLm9yZy9WZXJzaW9ucy92JHtNQUpfVkVSfS8ke01JTl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL1NldC11cC1mb3ItY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vU2tpcC1BQ19SVU5fSUZFTFNFLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1mbGF3ZWQtZHluYW1pYy1sZGItbGluay10ZXN0LWluLWNvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zcXVpZC11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zcXVpZCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXRfc3lzcm9vdF9wYXRjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zcXVpZC1kb24tdC1kby1zcXVpZC1jb25mLXRlc3RzLWF0LWJ1aWxkLXRpbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TcXVpZE5ldy11c2Utbm9leGNlcHQtaW5zdGVhZC1vZi10aHJvdy1mb3ItQy0xMS1jb21wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nY2M3LWZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdG9vbHMuY2MtZml4ZWQtdW51c2VkLXJlc3VsdC13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX3JlbW92ZV90b29sY2hhaW4tY2xhbmcgPSAiZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImRjMTgzMGNkMzYxZTA3NzgxNGFhMzliY2MzNjkxZDhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxZDg4NDU4NjNkY2QwMjZjODU2NTA4Y2QxNTk5ZDQxN2M4OTQ3ZmZkOTZlODZlMjQwODVmOTg5M2NiOGI4YzIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0OTJlMmQ2ZDMyZWM1YzFhYWQwZTA2MDlhMTQxY2U5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Vycm9ycy9DT1BZUklHSFQ7bWQ1PTg4NjExMzBmYWU5MTQwMGJjZjk5YjY2ZjEzMzE3MmIzIFwKKyAgICAgICAgICAgICAgICAgICAiCitERVBFTkRTID0gImxpYnRvb2wga3JiNSBvcGVubGRhcCBkYiBjeXJ1cy1zYXNsIG9wZW5zc2wgZXhwYXQgbGlieG1sMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVzZXJhZGQgcHRlc3QgcGVybG5hdGl2ZQorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3F1aWQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzcXVpZCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfQVJDSCcsICdwb3dlcnBjJywgJ25vYXRvbWljcycsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfQVJDSCcsICdtaXBzJywgJ25vYXRvbWljcycsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfQVJDSCcsICdtaXBzZWwnLCAnbm9hdG9taWNzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisgICAgICAgICAgICAgICAgICAiCitQQUNLQUdFQ09ORklHW2xpYm5ldGZpbHRlci1jb25udHJhY2tdID0gIi0td2l0aC1uZXRmaWx0ZXItY29ubnRyYWNrPSR7aW5jbHVkZWRpcn0sIC0td2l0aG91dC1uZXRmaWx0ZXItY29ubnRyYWNrLCBsaWJuZXRmaWx0ZXItY29ubnRyYWNrIgorUEFDS0FHRUNPTkZJR1tub2F0b21pY3NdID0gInNxdWlkX2N2X2dudV9hdG9taWNzPW5vLHNxdWlkX2N2X2dudV9hdG9taWNzPXllcywsIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworQkFTSUNfQVVUSCA9ICJEQiBTQVNMIExEQVAiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitCQVNJQ19BVVRIICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdQQU0nLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1kZWZhdWx0LXVzZXI9c3F1aWQgLS1lbmFibGUtYXV0aC1iYXNpYz0nJHtCQVNJQ19BVVRIfScgXAorICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS8ke0JQTn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbG9nZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbG9nLyR7QlBOfSBcCisgICAgICAgICAgICAgICAgICdQRVJMPSR7VVNSQklOUEFUSH0vZW52IHBlcmwnIgorCitleHBvcnQgQlVJTERDWFhGTEFHUz0iJHtCVUlMRF9DWFhGTEFHU30iCisKK1RFU1RESVIgPSAidGVzdC1zdWl0ZSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICBvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgY3AgLXJmICR7Qn0vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNwIC1yZiAke1N9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKKyAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisKKyAgICAjIEFkZCBzcXVpZC1jb25mLXRlc3RzIGZvciBydW50aW1lIHRlc3RzCisgICAgc2VkIC1lICdzL15cKHJ1bnRlc3QtVEVTVFM6XCkvXDEgc3F1aWQtY29uZi10ZXN0cy8nIFwKKyAgICAgICAgLWUgInMvXChsaXN0PScgXCQoVEVTVFMpXCkvXDEgc3F1aWQtY29uZi10ZXN0cy8iIFwKKyAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorCisgICAgIyBFbnN1cmUgdGhlIHBhdGggZm9yIGNvbW1hbmQgdHJ1ZSBpcyBjb3JyZWN0CisgICAgc2VkIC1pICdzOl5UUlVFID0gLiokOlRSVUUgPSAvYmluL3RydWU6JyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSAwNzU1IHNxdWlkIHNxdWlkIC0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvJHtCUE59LmNvbmYKKyAgICAgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy8ke0JQTn0gMDc1MCBzcXVpZCBzcXVpZCAtIiA+PiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfc3F1aWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDNfc3F1aWQKKworICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vJHtCUE59IgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisKKyAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nLyR7QlBOfSIKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nIgorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9ICR7ZGF0YWRpcn0vZXJyb3JzICR7ZGF0YWRpcn0vaWNvbnMiCitGSUxFU18ke1BOfS1kYmcgKz0gIi91c3Ivc3JjL2RlYnVnIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9LyoudHh0IgorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL2ZpbGVzLzAwMDEtX19wcm9nbmFtZS1pcy1wcm92aWRlZC1ieS1saWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL2ZpbGVzLzAwMDEtX19wcm9nbmFtZS1pcy1wcm92aWRlZC1ieS1saWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYWQ5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvZmlsZXMvMDAwMS1fX3Byb2duYW1lLWlzLXByb3ZpZGVkLWJ5LWxpYmMucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSA5NDEwMzhmYzA1YmUyMTIwMmNhYjdhN2E5NDM0MDk3ZmI1NWVjYmUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhvcnN0ZW4gR2xhc2VyIDx0Z0BtaXJic2QuZGU+CitEYXRlOiBUaHUsIDMxIEp1bCAyMDE0IDE2OjI5OjQxICswOTMwCitTdWJqZWN0OiBbUEFUQ0hdIF9fcHJvZ25hbWVbXSBpcyBwcm92aWRlZCBieSBsaWJjCisKK1JlbmFtZSBsb2NhbCB2YXJpYWJsZSB0byB0ZnRwZF9wcm9nbmFtZSB0byBhdm9pZCBhIGNsYXNoIHdpdGggZ2xpYmMKK2dsb2JhbCBzeW1ib2xzIGFuZCB3b3JrIGFyb3VuZCBEZWJpYW4gYnVnICM1MTkwMDYgKENsb3NlczogIzU2NDA1MikuCisKK1sgaHBhOiBzcGVjaWZpY2FsbHksIGRvdWJsZS11bmRlcnNjb3JlIHN5bWJvbHMgaW4gQyBhcmUgcmVzZXJ2ZWQgZm9yCisgIHRoZSBpbXBsZW1lbnRhdGlvbiwgaS5lLiBjb21waWxlci9saWJjLiBdCisKK1NpZ25lZC1vZmYtYnk6IFJvbiBMZWUgPHJvbkBkZWJpYW4ub3JnPgorU2lnbmVkLW9mZi1ieTogSC4gUGV0ZXIgQW52aW4gPGhwYUBsaW51eC5pbnRlbC5jb20+CistLS0KKyB0ZnRwZC90ZnRwZC5jIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZnRwZC90ZnRwZC5jIGIvdGZ0cGQvdGZ0cGQuYworaW5kZXggZTI0N2I5Ny4uNWZlYzdiZiAxMDA2NDQKKy0tLSBhL3RmdHBkL3RmdHBkLmMKKysrKyBiL3RmdHBkL3RmdHBkLmMKK0BAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgYWlfZmFtID0gQUZfSU5FVDsKKyAjZGVmaW5lIFRSSUVTICAgNiAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiBhdHRlbXB0cyB0byBzZW5kIGVhY2ggcGFja2V0ICovCisgI2RlZmluZSBUSU1FT1VUX0xJTUlUICgoMSA8PCBUUklFUyktMSkKKyAKKy1jb25zdCBjaGFyICpfX3Byb2duYW1lOworK2NvbnN0IGNoYXIgKnRmdHBkX3Byb2duYW1lOworIHN0YXRpYyBpbnQgcGVlcjsKKyBzdGF0aWMgdW5zaWduZWQgbG9uZyB0aW1lb3V0ICA9IFRJTUVPVVQ7ICAgICAgICAvKiBDdXJyZW50IHRpbWVvdXQgdmFsdWUgKi8KKyBzdGF0aWMgdW5zaWduZWQgbG9uZyByZXhtdHZhbCA9IFRJTUVPVVQ7ICAgICAgIC8qIEJhc2ljIHRpbWVvdXQgdmFsdWUgKi8KK0BAIC0zOTUsOSArMzk1LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAvKiBiYXNlbmFtZSgpIGlzIHdheSB0b28gbXVjaCBvZiBhIHBhaW4gZnJvbSBhIHBvcnRhYmlsaXR5IHN0YW5kcG9pbnQgKi8KKyAKKyAgICAgcCA9IHN0cnJjaHIoYXJndlswXSwgJy8nKTsKKy0gICAgX19wcm9nbmFtZSA9IChwICYmIHBbMV0pID8gcCArIDEgOiBhcmd2WzBdOworKyAgICB0ZnRwZF9wcm9nbmFtZSA9IChwICYmIHBbMV0pID8gcCArIDEgOiBhcmd2WzBdOworIAorLSAgICBvcGVubG9nKF9fcHJvZ25hbWUsIExPR19QSUQgfCBMT0dfTkRFTEFZLCBMT0dfREFFTU9OKTsKKysgICAgb3BlbmxvZyh0ZnRwZF9wcm9nbmFtZSwgTE9HX1BJRCB8IExPR19OREVMQVksIExPR19EQUVNT04pOworIAorICAgICBzcmFuZCh0aW1lKE5VTEwpIF4gZ2V0cGlkKCkpOworIAorQEAgLTk0NiwxNCArOTQ2LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgc3lzbG9nIGRhZW1vbiBnZXRzIHJlc3RhcnRlZCBieSB0aGUgdGltZSB3ZSBnZXQgaGVyZS4gKi8KKyAgICAgaWYgKHNlY3VyZSAmJiBzdGFuZGFsb25lKSB7CisgICAgICAgICBjbG9zZWxvZygpOworLSAgICAgICAgb3BlbmxvZyhfX3Byb2duYW1lLCBMT0dfUElEIHwgTE9HX05ERUxBWSwgTE9HX0RBRU1PTik7CisrICAgICAgICBvcGVubG9nKHRmdHBkX3Byb2duYW1lLCBMT0dfUElEIHwgTE9HX05ERUxBWSwgTE9HX0RBRU1PTik7CisgICAgIH0KKyAKKyAjaWZkZWYgSEFWRV9UQ1BXUkFQUEVSUworICAgICAvKiBWZXJpZnkgaWYgdGhpcyB3YXMgYSBsZWdhbCByZXF1ZXN0IGZvciB1cy4gIFRoaXMgaGFzIHRvIGJlCisgICAgICAgIGRvbmUgYmVmb3JlIHRoZSBjaHJvb3QsIHdoaWxlIC9ldGMgaXMgc3RpbGwgYWNjZXNzaWJsZS4gKi8KKyAgICAgcmVxdWVzdF9pbml0KCZ3cmFwX3JlcXVlc3QsCistICAgICAgICAgICAgICAgICBSUV9EQUVNT04sIF9fcHJvZ25hbWUsCisrICAgICAgICAgICAgICAgICBSUV9EQUVNT04sIHRmdHBkX3Byb2duYW1lLAorICAgICAgICAgICAgICAgICAgUlFfRklMRSwgZmQsCisgICAgICAgICAgICAgICAgICBSUV9DTElFTlRfU0lOLCAmZnJvbSwgUlFfU0VSVkVSX1NJTiwgJm15YWRkciwgMCk7CisgICAgIHNvY2tfbWV0aG9kcygmd3JhcF9yZXF1ZXN0KTsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy90ZnRwLWhwYS9maWxlcy90ZnRwZC1ocGEuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy90ZnRwLWhwYS9maWxlcy90ZnRwZC1ocGEuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2Q1NjU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL2ZpbGVzL3RmdHBkLWhwYS5zZXJ2aWNlCkBAIC0wLDAgKzEsMTAgQEAKK1tVbml0XQorRGVzY3JpcHRpb249VGZ0cCBTZXJ2ZXIKK1JlcXVpcmVzPXRmdHBkLWhwYS5zb2NrZXQKKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2luLnRmdHBkLWhwYSAtcyAvdmFyL2xpYi90ZnRwYm9vdAorU3RhbmRhcmRJbnB1dD1zb2NrZXQKKworW0luc3RhbGxdCitBbHNvPXRmdHBkLWhwYS5zb2NrZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy90ZnRwLWhwYS9maWxlcy90ZnRwZC1ocGEuc29ja2V0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL2ZpbGVzL3RmdHBkLWhwYS5zb2NrZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc2NGMxZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy90ZnRwLWhwYS9maWxlcy90ZnRwZC1ocGEuc29ja2V0CkBAIC0wLDAgKzEsOCBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1UZnRwIFNlcnZlciBBY3RpdmF0aW9uIFNvY2tldAorCitbU29ja2V0XQorTGlzdGVuRGF0YWdyYW09NjkKKworW0luc3RhbGxdCitXYW50ZWRCeT1zb2NrZXRzLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL3RmdHAtaHBhXzUuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy90ZnRwLWhwYS90ZnRwLWhwYV81LjIuYmIKaW5kZXggN2Y1NjcxMy4uMTMyOTcyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL3RmdHAtaHBhXzUuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiCkBAIC03LDYgKzcsNyBAQAogYW5kIHNob3VsZCBub3QgYmUgZW5hYmxlZCB1bmxlc3MgaXQgaXMgZXhwcmVzc2x5IG5lZWRlZC4iCiBERVBFTkRTID0gInRjcC13cmFwcGVycyByZWFkbGluZSIKIFNFQ1RJT04gPSAibmV0IgorSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVjb2RlLmNvbS9wcm9qZWN0cy90ZnRwLWhwYSIKIExJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUNPTkZJRy5pbjtiZWdpbmxpbmU9MTtlbmRsaW5lPTk7bWQ1PWMyOGJhNWFkYjQzMDQxZmFlNDYyOWRiMDVjODNjYmRkIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RmdHAvdGZ0cC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PTk4OGMxY2JhOTlkNzA4NThhMjZjZDg3NzIwOTg1N2Y0IgpAQCAtMjYsMTIgKzI3LDE1IEBACiAgICAgICAgICAgIGZpbGU6Ly9hZGQtZXJyb3ItY2hlY2stZm9yLWRpc2stZmlsbGVkLXVwLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3RmdHAtaHBhLWJ1Zy1maXgtb24tc2VwYXJhdGVkLUNSLWFuZC1MRi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtd3JpdGluZy1lbXRweS1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtX19wcm9nbmFtZS1pcy1wcm92aWRlZC1ieS1saWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RmdHBkLWhwYS5zb2NrZXQgXAorICAgICAgICAgICBmaWxlOi8vdGZ0cGQtaHBhLnNlcnZpY2UgXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNDZjOWJkMjBiYmZmYTYyZjc5Yzk1OGM3Yjk5YWFjMjEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGE5Zjg4ZDRjMWMwMjY4N2I0ODUzYjAyYWI1ZGQ4Nzc5ZDRkZTRmZmRiOWIyZTVjOTMzMjg0MTMwNGQxYTI2OSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKIAogZXhwb3J0IEFSID0gIiR7SE9TVF9QUkVGSVh9YXIgY3EiCiAKQEAgLTYwLDYgKzY0LDExIEBACiAKICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdGZ0cGQtaHBhCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGZ0cGQtaHBhLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RmdHBkLWhwYS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3RmdHBkLWhwYS5zZXJ2aWNlCiB9CiAKIEZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSIKQEAgLTc3LDMgKzg2LDYgQEAKIEFMVEVSTkFUSVZFX1RBUkdFVFt0ZnRwXSA9ICIke2JpbmRpcn0vdGZ0cC1ocGEiCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICI2MCIKIAorU1lTVEVNRF9QQUNLQUdFUyA9ICJ0ZnRwLWhwYS1zZXJ2ZXIiCitTWVNURU1EX1NFUlZJQ0VfdGZ0cC1ocGEtc2VydmVyID0gInRmdHBkLWhwYS5zb2NrZXQgdGZ0cGQtaHBhLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFX3RmdHAtaHBhLXNlcnZlciA9ICJlbmFibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZibGFkZS5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS9maWxlcy92YmxhZGUuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI5M2VjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS9maWxlcy92YmxhZGUuY29uZgpAQCAtMCwwICsxLDIgQEAKKyMgbmV0d29ya19kZXZpY2Ugc2hlbGYgc2xvdCBmaWxlL2Rpc2svcGFydGl0aW9uIG1hY1ssbWFjWyxtYWNdXQorI2V0aDAgMCAwIC9kZXYvc2RiIDAwOjExOjIyOjMzOjQ0OjU1CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZibGFkZS5pbml0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS9maWxlcy92YmxhZGUuaW5pdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjk4YzgwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS9maWxlcy92YmxhZGUuaW5pdApAQCAtMCwwICsxLDE5MyBAQAorIyEvYmluL3NoCisjIAorIyBJbml0IHNjcmlwdCBmb3IgdmJsYWRlIChBVEEgb3ZlciBFdGhlcm5ldCBkYWVtb24pCisjIAorIyBjaGtjb25maWc6IC0gMzAgNzAKKyMgZGVzY3JpcHRpb246IHZibGFkZSBBb0UgZGFlbW9uCisjIAorIyBwcm9jZXNzbmFtZTogdmJsYWRlCisjIGNvbmZpZzogL2V0Yy92YmxhZGUuY29uZgorIyAKKyMgU2hhbWVsZXNzbHkgaGFja2VkIHRvZ2V0aGVyIGZyb20gb3RoZXIgaW5pdCBzY3JpcHRzIChzc2hkLCBtb3N0bHkpCisjIGludGVncmF0ZSB2YmxhZGUuaW5pdCBmcm9tIEZlZG9yYSdzIHZibGFkZS0xNC02LmZjMTIuc3JjLnJwbQorIyAKKworUkVUVkFMPTAKK3Byb2c9dmJsYWRlCisKK3NwYXduX3ZibGFkZSgpIHsKKyAgQUxMT1dNQUNTPSIiCisgIFsgLW4gIiQ1IiBdICYmIEFMTE9XTUFDUz0iLW0gJDUiCisgIElEPSIkMS1lJDIuJDMiCisgIGlmIFsgISAtZCAiL3Zhci9ydW4vJHByb2ciIF07IHRoZW4KKyAgICBta2RpciAvdmFyL3J1bi8kcHJvZworICBmaQorICBQSURfRklMRT0vdmFyL3J1bi8kcHJvZy8ke0lEfS5waWQKKyAgJHByb2cgJEFMTE9XTUFDUyAkMiAkMyAkMSAkNCA+PiAvdmFyL2xvZy8kcHJvZy5sb2cgMj4mMSAmCisgIHBpZD0kIQorICBSRVRWQUw9JD8KKyAgZWNobyAkcGlkID4gJFBJRF9GSUxFCisgIGVjaG8gLW4gJCIkNCAoZSQyLiQzQCQxKSBbcGlkICRwaWRdIgorICBbICIkUkVUVkFMIiA9IDAgXSAmJiBlY2hvICJzdWNjZXNzIiB8fCBlY2hvICJmYWlsdXJlIgorICBlY2hvCit9CisKK3N0YXJ0KCkgeworICBsb2NhbCByZXQKKworICBlY2hvICQiU3RhcnRpbmcgdXAgJHByb2c6ICIKKyAgCisgICMvdmFyL2xvY2svc3Vic3lzLyRwcm9nIGV4aXN0cz8KKyAgc3RhdHVzICRwcm9nIDI+JjEgPiAvZGV2L251bGwKKyAgcmV0PSQ/CisKKyAgaWYgWyAiJHJldCIgPSAiMiIgXTsgdGhlbgorICAgIGVjaG8gIiRwcm9nIGRlYWQgYnV0IHN1YnN5cyBsb2NrZWQiCisgICAgZWNobworICAgIHJldHVybiAyCisgIGVsc2UgCisgICAgaWYgWyAiJHJldCIgPSAiMCIgXTsgdGhlbgorICAgICAgI2lzIHJ1bm5pbmcKKyAgICAgIGVjaG8gImFscmVhZHkgcnVubmluZyIKKyAgICAgIHJldHVybiAwCisgICAgZmkKKyAgZmkKKworICBpZiBbIDAgLW5lIGBncmVwIC12YyAnXiNcfF4kJyAvZXRjLyRwcm9nLmNvbmZgIF0KKyAgdGhlbgorICAgIGdyZXAgLXYgJ14jJyAvZXRjLyRwcm9nLmNvbmYgfCBzZWQgLWUgJ3MvCS8gL2cnIC1lICdzLyAgLyAvZycgfCB3aGlsZSByZWFkIGxpbmUKKyAgICBkbworICAgICAgc3Bhd25fdmJsYWRlICRsaW5lCisgICAgZG9uZQorICAgIHRvdWNoIC92YXIvbG9jay9zdWJzeXMvJHByb2cKKyAgZWxzZQorICAgIGVjaG8gLW4gImVtcHR5ICRwcm9nLmNvbmY/IgorICAgIGVjaG8gIiBwYXNzZWQiCisgICAgZWNobworICBmaQorfQorCitzdG9wKCkgeworICBlY2hvIC1uICQiU2h1dHRpbmcgZG93biAkcHJvZzogIgorICBmb3IgcGlkZmlsZSBpbiBgbHMgL3Zhci9ydW4vJHByb2cvKi5waWQgMj4vZGV2L251bGxgCisgIGRvCisgICAga2lsbCAtVEVSTSBgY2F0ICRwaWRmaWxlYAorICAgIHJtIC1mICRwaWRmaWxlCisgIGRvbmUKKyAgZWNobyAic3VjY2VzcyIKKyAgZWNobworICBybSAtZiAvdmFyL2xvY2svc3Vic3lzLyRwcm9nCit9CisKK19fcGlkc192YXJfcnVuKCkgeworICAgICAgICBsb2NhbCBiYXNlPSR7MSMjKi99CisgICAgICAgIGxvY2FsIHBpZF9maWxlPSR7MjotL3Zhci9ydW4vJGJhc2UucGlkfQorCisgICAgICAgIHBpZD0KKyAgICAgICAgaWYgWyAtZiAiJHBpZF9maWxlIiBdIDsgdGhlbgorICAgICAgICAgICAgICAgIGxvY2FsIGxpbmUgcAorCisgICAgICAgICAgICAgICAgd2hpbGUgOiA7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICByZWFkIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIFsgLXogIiRsaW5lIiBdICYmIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiAkbGluZSA7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgLXogIiR7cC8vWzAtOV0vfSIgLWEgLWQgIi9wcm9jLyRwIiBdICYmIHBpZD0iJHBpZCAkcCIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICBkb25lIDwgIiRwaWRfZmlsZSIKKworICAgICAgICAgICAgICAgIGlmIFsgLW4gIiRwaWQiIF07IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICByZXR1cm4gMSAjICJQcm9ncmFtIGlzIGRlYWQgYW5kIC92YXIvcnVuIHBpZCBmaWxlIGV4aXN0cyIKKyAgICAgICAgZmkKKyAgICAgICAgcmV0dXJuIDMgIyAiUHJvZ3JhbSBpcyBub3QgcnVubmluZyIKK30KKworX19waWRzX3BpZG9mKCkgeworICAgICAgICBwaWRvZiAiJDEiIHx8IHBpZG9mICIkezEjIyovfSIKK30KKworc3RhdHVzKCkgeworICAgICAgICBsb2NhbCBiYXNlIHBpZCBsb2NrX2ZpbGU9IHBpZF9maWxlPQorCisgICAgICAgICMgVGVzdCBzeW50YXguCisgICAgICAgIGlmIFsgIiQjIiA9IDAgXSA7IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICQiVXNhZ2U6IHN0YXR1cyBbLXAgcGlkZmlsZV0ge3Byb2dyYW19IgorICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGZpCisgICAgICAgIGlmIFsgIiQxIiA9ICItcCIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHBpZF9maWxlPSQyCisgICAgICAgICAgICAgICAgc2hpZnQgMgorICAgICAgICBmaQorICAgICAgICBpZiBbICIkMSIgPSAiLWwiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBsb2NrX2ZpbGU9JDIKKyAgICAgICAgICAgICAgICBzaGlmdCAyCisgICAgICAgIGZpCisgICAgICAgIGJhc2U9JHsxIyMqL30KKworICAgICAgICAjIEZpcnN0IHRyeSAicGlkb2YiCisgICAgICAgIF9fcGlkc192YXJfcnVuICIkMSIgIiRwaWRfZmlsZSIKKyAgICAgICAgUkM9JD8KKyAgICAgICAgaWYgWyAteiAiJHBpZF9maWxlIiAtYSAteiAiJHBpZCIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHBpZD0iJChfX3BpZHNfcGlkb2YgIiQxIikiCisgICAgICAgIGZpCisgICAgICAgIGlmIFsgLW4gIiRwaWQiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICQiJHtiYXNlfSAocGlkICRwaWQpIGlzIHJ1bm5pbmcuLi4iCisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZmkKKworICAgICAgICBjYXNlICIkUkMiIGluCisgICAgICAgICAgICAgICAgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJCIke2Jhc2V9IChwaWQgJHBpZCkgaXMgcnVubmluZy4uLiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICQiJHtiYXNlfSBkZWFkIGJ1dCBwaWQgZmlsZSBleGlzdHMiCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBpZiBbIC16ICIke2xvY2tfZmlsZX0iIF07IHRoZW4KKyAgICAgICAgICAgICAgICBsb2NrX2ZpbGU9JHtiYXNlfQorICAgICAgICBmaQorICAgICAgICAjIFNlZSBpZiAvdmFyL2xvY2svc3Vic3lzLyR7bG9ja19maWxlfSBleGlzdHMKKyAgICAgICAgaWYgWyAtZiAvdmFyL2xvY2svc3Vic3lzLyR7bG9ja19maWxlfSBdOyB0aGVuCisgICAgICAgICAgICAgICAgZWNobyAkIiR7YmFzZX0gZGVhZCBidXQgc3Vic3lzIGxvY2tlZCIKKyAgICAgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICBmaQorICAgICAgICBlY2hvICQiJHtiYXNlfSBpcyBzdG9wcGVkIgorICAgICAgICByZXR1cm4gMworfQorCitjYXNlICIkMSIgaW4KKwlzdGFydCkKKwkJc3RhcnQKKwkJOzsKKwlzdG9wKQorCQlzdG9wCisJCTs7CisJcmVzdGFydCkKKwkJc3RvcAorCQlzdGFydAorCQk7OworCXJlbG9hZCkKKwkJIyB5ZXMsIHRoaXMgc3Vja3MsIGJ1dCB0aGUgdmJsYWRlIHByb2Nlc3NlcyBkaWUgb24gU0lHSFVQCisJCXN0b3AKKwkJc3RhcnQKKwkJOzsKKwljb25kcmVzdGFydCkKKwkJaWYgWyAtZiAvdmFyL2xvY2svc3Vic3lzLyRwcm9nIF07IHRoZW4KKwkJCXN0b3AKKwkJCSMgYXZvaWQgcmFjZQorCQkJc2xlZXAgMworCQkJc3RhcnQKKwkJZmkKKwkJOzsKKwlzdGF0dXMpCisJCXN0YXR1cyAkcHJvZworCQlSRVRWQUw9JD8KKwkJOzsKKwkqKQorCQllY2hvICQiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fHN0YXR1c30iCisJCVJFVFZBTD0xCitlc2FjCitleGl0ICRSRVRWQUwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvZmlsZXMvdmJsYWRlLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZibGFkZS5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYTRkNWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZibGFkZS5zZXJ2aWNlCkBAIC0wLDAgKzEsMTEgQEAKK1tVbml0XQorRGVzY3JpcHRpb249VmlydHVhbCBFdGhlckRyaXZlIGJsYWRlIEFvRSB0YXJnZXQKK0FmdGVyPXN5c2xvZy50YXJnZXQgbmV0d29yay50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPWZvcmtpbmcKK0V4ZWNTdGFydD1AQklORElSQC92YmxhZGUuaW5pdCBzdGFydAorRXhlY1N0b3A9QEJJTkRJUkAvdmJsYWRlLmluaXQgc3RvcAorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZvbGF0aWxlcy45OV92YmxhZGUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL2ZpbGVzL3ZvbGF0aWxlcy45OV92YmxhZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRhNTg4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvZmlsZXMvdm9sYXRpbGVzLjk5X3ZibGFkZQpAQCAtMCwwICsxIEBACitkIHJvb3Qgcm9vdCAwNzU1IC92YXIvcnVuL3ZibGFkZSBub25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL3ZibGFkZV8yMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvdmJsYWRlXzIwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDRjNzQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvdmJsYWRlXzIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIEV0aGVyRHJpdmUgYmxhZGUgQW9FIHRhcmdldCIKLVNFQ1RJT04gPSAiYWRtaW4iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vYW9ldG9vbHMvJHtCUE59LSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2M4MGU0YTZiYzdkNjZhZTBjMjM1Yjg4Y2I0NGJkNTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzhmZTJmYzRmMmZiYThlMDdlNWNmZGYxNzMzNTk4MjU4NGVlZjJjZDVjNzhiZjhiMWRiOTNmMmI1NmU3MTIxZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7U30vdmJsYWRlICR7RH0vJHtzYmluZGlyfS92YmxhZGUKLSAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS92YmxhZGVkICR7RH0vJHtzYmluZGlyfS92YmxhZGVkCi0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vdmJsYWRlLjggJHtEfS8ke21hbmRpcn0vbWFuOC92YmxhZGUuOAotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL3ZibGFkZV8yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvdmJsYWRlXzIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YjFkZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL3ZibGFkZV8yMi5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIlZpcnR1YWwgRXRoZXJEcml2ZSBibGFkZSBBb0UgdGFyZ2V0IgorU0VDVElPTiA9ICJhZG1pbiIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9hb2V0b29scy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vJHtCUE59LmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vJHtCUE59LmluaXQgXAorICAgICAgICAgICBmaWxlOi8vJHtCUE59LnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3ZibGFkZSBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTEwZDk4YmEwZjIzMTI4NGE1ZmJlMmRhMTFjYjJkNmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTk5MDM3OGYyNzNmMTBlYjQzMWU0Mjk1NGE4NzFhZWQ1MjcxNDAzNWJiYWIyOGM1NGNlZjYwMGM0NTgzNTZiYiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS92YmxhZGUgJHtEfS8ke3NiaW5kaXJ9L3ZibGFkZQorICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3ZibGFkZWQgJHtEfS8ke3NiaW5kaXJ9L3ZibGFkZWQKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS92YmxhZGUuOCAke0R9LyR7bWFuZGlyfS9tYW44L3ZibGFkZS44CisKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn0uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59LmNvbmYKKyAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS8ke0JQTn0uaW5pdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV92YmxhZGUgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3ZibGFkZQorICAgIGZpCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyR7QlBOfS5pbml0ICR7RH0vJHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKyAgICAgICAgZWNobyAiZCAvdmFyL3J1bi8ke0JQTn0gMDc1NSByb290IHJvb3QgLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92YmxhZGUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgICAgICBzZWQgLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIC1pICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQorICAgIGZpCisKK30KKworSU5JVFNDUklQVF9OQU1FID0gInZibGFkZSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ2YmxhZGUuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkXzMuMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGRfMy4wLjMuYmIKaW5kZXggZTUyNDYxNC4uN2EyMDM1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGRfMy4wLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGRfMy4wLjMuYmIKQEAgLTM3LDYgKzM3LDcgQEAKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCiBSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saXN0ZmlsZScsICcnLCBkKX0iCiBQQU1MSUIgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLUwke1NUQUdJTkdfQkFTRUxJQkRJUn0gLWxwYW0nLCAnJywgZCl9IgorV1JBUExJQiA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0Y3Atd3JhcHBlcnMnLCAnLWx3cmFwJywgJycsIGQpfSIKIE5PUEFNX1NSQyA9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RjcC13cmFwcGVycycsICdmaWxlOi8vbm9wYW0td2l0aC10Y3Bfd3JhcHBlcnMucGF0Y2gnLCAnZmlsZTovL25vcGFtLnBhdGNoJywgZCl9IgogCiBpbmhlcml0IHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZApAQCAtNTQsNyArNTUsNyBAQAogfQogCiBkb19jb21waWxlKCkgewotICAgb2VfcnVubWFrZSAiTElCUz0tTCR7U1RBR0lOR19MSUJESVJ9IC1sY3J5cHQgLWxjYXAgJHtQQU1MSUJ9IC1sd3JhcCIKKyAgIG9lX3J1bm1ha2UgIkxJQlM9LUwke1NUQUdJTkdfTElCRElSfSAtbGNyeXB0IC1sY2FwICR7UEFNTElCfSAke1dSQVBMSUJ9IgogfQogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmwvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmwvcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliYXV0aGVuL2xpYmF1dGhlbi1yYWRpdXMtcGVybC9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJhdXRoZW4vbGliYXV0aGVuLXJhZGl1cy1wZXJsL3J1bi1wdGVzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmwvdGVzdC5wbC1hZGp1c3QtZm9yLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmwvdGVzdC5wbC1hZGp1c3QtZm9yLXB0ZXN0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliYXV0aGVuL2xpYmF1dGhlbi1yYWRpdXMtcGVybC90ZXN0LnBsLWFkanVzdC1mb3ItcHRlc3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJhdXRoZW4vbGliYXV0aGVuLXJhZGl1cy1wZXJsL3Rlc3QucGwtYWRqdXN0LWZvci1wdGVzdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmF1dGhlbi9saWJhdXRoZW4tcmFkaXVzLXBlcmxfMC4yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJhdXRoZW4vbGliYXV0aGVuLXJhZGl1cy1wZXJsXzAuMjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJhdXRoZW4vbGliYXV0aGVuLXJhZGl1cy1wZXJsXzAuMjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJhdXRoZW4vbGliYXV0aGVuLXJhZGl1cy1wZXJsXzAuMjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sZGFwXzIuNC40MS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sZGFwXzIuNC40MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGJjOGIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMi40LjQxLmJiCkBAIC0wLDAgKzEsMjkgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEyIFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworU1VNTUFSWSA9ICJQcm92aWRlcyBhIHdyYXBwZXIgaW4gUHl0aG9uIHRvIExEQVAiCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIExEQVAgXAorKExpZ2h0d2VpZ2h0IERpcmVjdG9yeSBBY2Nlc3MgUHJvdG9jb2wpIHRocm91Z2ggUHl0aG9uIG9wZXJhdGlvbnMgXAoraW5zdGVhZCBvZiBDIEFQSS4gVGhlIG1vZHVsZSBtYWlubHkgYWN0cyBhcyBhIHdyYXBwZXIgZm9yIHRoZSBcCitPcGVuTERBUCAyLnggbGlicmFyaWVzLiBFcnJvcnMgd2lsbCBhcHBlYXIgYXMgZXhjZXB0aW9ucy4iCisKK0xJQ0VOU0UgPSAiUFNGIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24tbGRhcC5vcmcvIgorREVQRU5EUyA9ICJweXRob24gb3BlbmxkYXAgY3lydXMtc2FzbCIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1sZGFwIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9YTQxYzgyZWRmZmEwNDkxMjAwN2NhZTFkMjBjYWM1NTUiCitTUkNfVVJJW21kNXN1bV0gPSAiMThkYjJkMDA5MTUwZWMxODY0NzEwZmVhM2VkNzYxNzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmQ0MzBlY2YwNDBmMmZjNzA0ZWUzMTZkMzM5MGNiMWY1NDE5YzE5MTM3MWUxZTEzMWJhZWY1NGEwZTQyY2VmMCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzOl5saWJyYXJ5X2RpcnMgPS4qOjonIHNldHVwLmNmZworICAgIHNlZCAtaSAtZSAnczpeaW5jbHVkZV9kaXJzID0uKjppbmNsdWRlX2RpcnMgPSA9L3Vzci9pbmNsdWRlL3Nhc2wvOicgc2V0dXAuY2ZnCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luYy8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItRl8tYW5kLU9fLWRlZmluZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1GXy1hbmQtT18tZGVmaW5lcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtZm9yLUZfLWFuZC1PXy1kZWZpbmVzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1GXy1hbmQtT18tZGVmaW5lcy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlNzRlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjIuYmIKQEAgLTAsMCArMSw4MCBAQAorU1VNTUFSWSA9ICJUaGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgYW5kIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIENvcm9zeW5jIENsdXN0ZXIgRW5naW5lIEV4ZWN1dGl2ZSwgc2V2ZXJhbCBkZWZhdWx0IFwKK0FQSXMgYW5kIGxpYnJhcmllcywgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgYW4gaW5pdCBzY3JpcHQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2Nvcm9zeW5jLmdpdGh1Yi5pby9jb3Jvc3luYy8iCisKK1NFQ1RJT04gPSAiYmFzZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXNlcmFkZAorCitTUkNfVVJJID0gImh0dHA6Ly9idWlsZC5jbHVzdGVybGFicy5vcmcvY29yb3N5bmMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1mY250bC5oLWZvci1GXy1hbmQtT18tZGVmaW5lcy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjU0N2ZhNzg3MDRkYTUzYWEzNTkxMmJlNThkMzEwMzVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyNmUzMDExMzA5ZmU0YmNjZTk0YjFkYzIwZWE4YzQ2MmYxOTQ4M2E3M2YzY2E2MmYxM2I5MjVkMDExYTRiYTkiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTg1ZWI0Y2UyNDAzM2FkYjYwODhkZDFkNmZmYzVlNWQiCisKK0RFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIG5zcyBsaWJxYiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvcm9zeW5jLnNlcnZpY2UgY29yb3N5bmMtbm90aWZ5ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxZGV2aWNlJywgJ2Nvcm9zeW5jLXFkZXZpY2Uuc2VydmljZScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgJ2Nvcm9zeW5jLXFuZXRkLnNlcnZpY2UnLCAnJywgZCl9IFwKKyIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgorCitJTklUU0NSSVBUX05BTUUgPSAiY29yb3N5bmMtZGFlbW9uIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgZGJ1cyBxZGV2aWNlIHFuZXRkIHNubXAgXAorIgorCitQQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbcWRldmljZV0gPSAiLS1lbmFibGUtcWRldmljZXMsLS1kaXNhYmxlLXFkZXZpY2VzIgorUEFDS0FHRUNPTkZJR1txbmV0ZF0gPSAiLS1lbmFibGUtcW5ldGQsLS1kaXNhYmxlLXFuZXRkIgorUEFDS0FHRUNPTkZJR1tyZG1hXSA9ICItLWVuYWJsZS1yZG1hLC0tZGlzYWJsZS1yZG1hIgorUEFDS0FHRUNPTkZJR1tzbm1wXSA9ICItLWVuYWJsZS1zbm1wLC0tZGlzYWJsZS1zbm1wLG5ldC1zbm1wIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRkaXIsc3lzdGVtZCIKKworRVhUUkFfT0VDT05GID0gImFjX2N2X3BhdGhfQkFTSFBBVEg9JHtiYXNlX2JpbmRpcn0vYmFzaCIKK0VYVFJBX09FTUFLRSA9ICJ0bXBmaWxlc2Rpcl9EQVRBPSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgKCBjZCAke1N9CisgICAgJHtTfS9hdXRvZ2VuLnNoICkKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9jb3Jvc3luYy5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9jb3Jvc3luYy1ub3RpZnlkLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYy1ub3RpZnlkCisKKyAgICBybSAtcmYgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICBlY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgbm9uZSIgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYworCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBjaG93biAtUiBjb3JvcW5ldGQ6Y29yb3FuZXRkICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9xbmV0ZAorICAgICAgICBlY2hvICJkIGNvcm9xbmV0ZCBjb3JvcW5ldGQgMDc3MCAvdmFyL3J1bi9jb3Jvc3luYy1xbmV0ZCBub25lIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYworICAgIGZpCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgLSAtIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2Nvcm9zeW5jLmNvbmYKKworICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxbmV0ZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jb25mL3RtcGZpbGVzLmQvY29yb3N5bmMtcW5ldGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGZpCisgICAgZmkKK30KKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9sY3Jzby8uZGVidWciCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vc25tcC9taWJzL0NPUk9TWU5DLU1JQi50eHQiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBjb3JvcW5ldGQiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC1kIC8gLU0gLXMgL2Jpbi9ub2xvZ2luIC1jICdVc2VyIGZvciBjb3Jvc3luYy1xbmV0ZCcgLWcgY29yb3FuZXRkIGNvcm9xbmV0ZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vcmVzcGVjdC1sZGZsYWdzLWFsc28tZnJvbS1iaW5fbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS9yZXNwZWN0LWxkZmxhZ3MtYWxzby1mcm9tLWJpbl9sZGZsYWdzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtL3Jlc3BlY3QtbGRmbGFncy1hbHNvLWZyb20tYmluX2xkZmxhZ3MucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS9yZXNwZWN0LWxkZmxhZ3MtYWxzby1mcm9tLWJpbl9sZGZsYWdzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG1fNC4wLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvMDAwMS1rZXJuZWwtZXZlbnQtbmV0bGlua19hY2stbm93LXJlcXVpcmVzLTQtYXJndW1lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9maWxlcy8wMDAxLWtlcm5lbC1ldmVudC1uZXRsaW5rX2Fjay1ub3ctcmVxdWlyZXMtNC1hcmd1bWVudHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQyNmQzNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvMDAwMS1rZXJuZWwtZXZlbnQtbmV0bGlua19hY2stbm93LXJlcXVpcmVzLTQtYXJndW1lbnRzLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gY2JjNWY4MTUxMDE3ZjQ1MjMxYjc1YTgyNmYxODM1NGE4MWMyODdjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDA3OjUyOjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGtlcm5lbC9ldmVudDogbmV0bGlua19hY2soKSBub3cgcmVxdWlyZXMgNCBhcmd1bWVudHMKKworc2VlIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvOTY3MDE4MS8KKworZXZlbnQuYzozMjo0OiBlcnJvcjogdG9vIGZldyBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ25ldGxpbmtfYWNrJworfCAgICAgbmV0bGlua19hY2soc2tiLCBubGgsIDApOworfCAgICAgXn5+fn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGtlcm5lbC9ldmVudC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9ldmVudC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyLm9yaWcva2VybmVsL2V2ZW50LmMKKysrKyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2V2ZW50LmMKK0BAIC02LDYgKzYsNyBAQAorICAqIFNvbWUgZnVuY3Rpb25zIGFyZSBiYXNlZCBvbiBhdWRpdCBjb2RlLgorICAqLworIAorKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorICNpbmNsdWRlIDxuZXQvdGNwLmg+CisgI2luY2x1ZGUgImlldF91LmgiCitAQCAtMjksNyArMzAsMTEgQEAgc3RhdGljIHZvaWQgZXZlbnRfcmVjdl9za2Ioc3RydWN0IHNrX2J1ZgorIAkJaWV0ZF9waWQgPSBORVRMSU5LX0NCKHNrYikucG9ydGlkOworIAkJV0FSTl9PTihpZXRkX3BpZCA9PSAwKTsKKyAJCWlmIChubGgtPm5sbXNnX2ZsYWdzICYgTkxNX0ZfQUNLKQorKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgMTIsIDApCisrCQkJbmV0bGlua19hY2soc2tiLCBubGgsIDAsIE5VTEwpOworKyNlbHNlCisgCQkJbmV0bGlua19hY2soc2tiLCBubGgsIDApOworKyNlbmRpZgorIAkJc2tiX3B1bGwoc2tiLCBybGVuKTsKKyAJfQorIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvaXNjc2l0YXJnZXRfMS40LjIwLjMrc3ZuNTAyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIKaW5kZXggNWMxZTM4ZS4uNjU5MzY2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIKQEAgLTE0LDcgKzE0LDkgQEAKICAgICAgICAgICAgZmlsZTovL2FjY2Vzcy1za192Nl9kYWRkci1pZmYtSVBWNi1kZWZpbmVkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2J1aWxkX3dpdGhfdXBkYXRlZF9iaW9fc3RydWN0X29mX2xpbnV4X3Y0LjNfYW5kX2Fib3ZlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2J1aWxkX3dpdGhfdXBkYXRlZF9pbnRlcmZhY2VzX29mX2xpbnV4X3Y0LjhfYW5kX2Fib3ZlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1jYWxsLXRyYWNlLW9mLWFoYXNoLUFQSS1jYWxsaW5nLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vZml4LWNhbGwtdHJhY2Utb2YtYWhhc2gtQVBJLWNhbGxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1rZXJuZWwtZXZlbnQtbmV0bGlua19hY2stbm93LXJlcXVpcmVzLTQtYXJndW1lbnRzLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZWY5YmM4MjNiYmFiZDNjNzcyMjA4YzAwZDVmMmQwODkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDMxOTZjY2I3OGE0MzI2NmRjZTI4NTg3YmZlMzBkOGFiNGRiNzU2NmQ3YmNlOTYwNTdkZmJiODQxMDBiYWJiNSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2VidGFibGVzL2VidGFibGVzLTIuMC4xMC00L2VidGFibGVzLXNhdmUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlcy0yLjAuMTAtNC9lYnRhYmxlcy1zYXZlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJkN2ZjNGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlcy0yLjAuMTAtNC9lYnRhYmxlcy1zYXZlCkBAIC0wLDAgKzEsNDMgQEAKKyMhL2Jpbi9iYXNoCisKK0VCVEFCTEVTPSIvc2Jpbi9lYnRhYmxlcyIKKworWyAteCAiJEVCVEFCTEVTIiBdIHx8IGV4aXQgMQorCitlY2hvICIjIEdlbmVyYXRlZCBieSBlYnRhYmxlcy1zYXZlIHYxLjAgb24gJChkYXRlKSIKKworY250PSIiCitbICJ4JEVCVEFCTEVTX1NBVkVfQ09VTlRFUiIgPSAieHllcyIgXSAmJiBjbnQ9Ii0tTGMiCisKK2ZvciB0YWJsZV9uYW1lIGluICQoZ3JlcCAtRSAnXmVidGFibGVfJyAvcHJvYy9tb2R1bGVzIHwgY3V0IC1mMSAtZCcgJyB8IHNlZCBzL2VidGFibGVfLy8pOyBkbworICAgIHRhYmxlPSQoJEVCVEFCTEVTIC10ICR0YWJsZV9uYW1lIC1MICRjbnQpCisgICAgWyAkPyAtZXEgMCBdIHx8IHsgZWNobyAiJHRhYmxlIjsgZXhpdCAtMTsgfQorCisgICAgY2hhaW49IiIKKyAgICBydWxlcz0iIgorICAgIHdoaWxlIHJlYWQgbGluZTsgZG8KKwlbIC16ICIkbGluZSIgXSAmJiBjb250aW51ZQorCisJY2FzZSAiJGxpbmUiIGluIAorCSAgICBCcmlkZ2VcIHRhYmxlOlwgKikKKwkJZWNobyAiKiR7bGluZToxNH0iCisJCTs7CisJICAgIEJyaWRnZVwgY2hhaW46XCAqKQorCQljaGFpbj0iJHtsaW5lOjE0fSIKKwkJY2hhaW49IiR7Y2hhaW4lJSwqfSIKKwkJcG9saWN5PSIke2xpbmUjIypwb2xpY3k6IH0iCisJCWVjaG8gIjokY2hhaW4gJHBvbGljeSIKKwkJOzsKKwkgICAgKikKKwkJaWYgWyAiJGNudCIgPSAiLS1MYyIgXTsgdGhlbgorCQkgICAgbGluZT0ke2xpbmUvLCBwY250IFw9LyAtY30KKwkJICAgIGxpbmU9JHtsaW5lLy0tIGJjbnQgXD0vfQorCQlmaQorCQlydWxlcz0iJHJ1bGVzLUEgJGNoYWluICRsaW5lXG4iCisJCTs7CisJZXNhYworICAgIGRvbmUgPDxFT0YKKyR0YWJsZQorRU9GCisgICAgZWNobyAtZSAkcnVsZXMKK2RvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2VidGFibGVzL2VidGFibGVzXzIuMC4xMC00LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvZWJ0YWJsZXMvZWJ0YWJsZXNfMi4wLjEwLTQuYmIKaW5kZXggMzc1NDIzZC4uZDVlNzM0MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvZWJ0YWJsZXMvZWJ0YWJsZXNfMi4wLjEwLTQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvZWJ0YWJsZXMvZWJ0YWJsZXNfMi4wLjEwLTQuYmIKQEAgLTEsMTcgKzEsMTkgQEAKIFNVTU1BUlkgPSAiRmlsdGVyaW5nIHRvb2wgZm9yIGEgTGludXgtYmFzZWQgYnJpZGdpbmcgZmlyZXdhbGwiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2VidGFibGVzLyIKIERFU0NSSVBUSU9OID0gIlV0aWxpdHkgZm9yIGJhc2ljIEV0aGVybmV0IGZyYW1lIGZpbHRlcmluZyBvbiBhIExpbnV4IGJyaWRnZSwgXAogICAgICAgICAgICAgICAgYWR2YW5jZWQgbG9nZ2luZywgTUFDIEROQVQvU05BVCBhbmQgYnJvdXRpbmcuIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUzYjRhOTk5OTkzODcxYTI4YWIxNDg4ZmRiZDJlNzNlIgogU0VDVElPTiA9ICJuZXQiCi1QUiA9ICJyMyIKK1BSID0gInI0IgogCi1SREVQRU5EU18ke1BOfSArPSAicGVybCIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIgogCiBSUkVDT01NRU5EU18ke1BOfSArPSAia2VybmVsLW1vZHVsZS1lYnRhYmxlcyBcCiAgICAgIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9lYnRhYmxlcy9lYnRhYmxlcy12JHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2VidGFibGVzLXNhdmUgXAogICAgICAgICAgICBmaWxlOi8vaW5zdGFsbG5vbnJvb3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDFkZWJpYW5fZGVmYXVsdGNvbmZpZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9lYnRhYmxlcy5pbml0IFwKQEAgLTc4LDEyICs4MCwxMCBAQAogICAgIG12ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZWJ0YWJsZXMtY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZWJ0YWJsZXMKICAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZWJ0YWJsZXMKIAotICAgICMgVGhlIHNjcmlwdCBlYnRhYmxlcy1zYXZlIHJlZmVybmNlcyBwZXJsIGluIGV4ZWNfcHJlZml4LCBzbwotICAgICMgbW92ZSBpdCB0byBzYmluZGlyIHRvIGF2b2lkIFFBIGlzc3VlCi0gICAgaWYgJHtiYXNlX3NiaW5kaXJ9ICE9ICR7c2JpbmRpcn0gOyB0aGVuCi0gICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c2JpbmRpcn0KLSAgICAgICBtdiAke0R9LyR7YmFzZV9zYmluZGlyfS9lYnRhYmxlcy1zYXZlICR7RH0vJHtzYmluZGlyfQotICAgIGZpCisgICAgIyBSZXBsYWNlIHVwc3RyZWFtIGVidGFibGVzLXNhdmUgcGVybCBzY3JpcHQgd2l0aCBGZWRvcmEgYmFzaCBiYXNlZCByZXdyaXRlCisgICAgIyBodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9jZ2l0L3JwbXMvZWJ0YWJsZXMuZ2l0L3RyZWUvZWJ0YWJsZXMtc2F2ZQorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2VidGFibGVzLXNhdmUgJHtEfSR7YmFzZV9zYmluZGlyfS9lYnRhYmxlcy1zYXZlCisgICAgc2VkIC1pICdzIS9zYmluLyEke2Jhc2Vfc2JpbmRpcn0vIWcnICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZWJ0YWJsZXMtc2F2ZQogCiAgICAgIyBJbnN0YWxsIHN5c3RlbWQgc2VydmljZSBmaWxlcwogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sL3NucHJpbnRmX3NoYWRvdy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sL3NucHJpbnRmX3NoYWRvdy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ1M2IxYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubC9zbnByaW50Zl9zaGFkb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotVGFrZW4gZnJvbSAKLWh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9NzU1OTU2Ci0KLS0tLSAuL3NyYy9leHByX29wcy5oCTIwMTQtMDYtMjQgMTc6MDc6MDUuNTc0Nzg0NzA0ICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwcl9vcHMuaAkyMDE0LTA3LTI1IDAwOjE5OjI4LjM2NzY5NDYxMyArMDQwMAotQEAgLTI4LDcgKzI4LDcgQEAKLSAJY29uc3Qgdm9pZCAqKCpnZXQpKGNvbnN0IHN0cnVjdCBuZnRfcnVsZV9leHByICplLCB1aW50MTZfdCB0eXBlLCB1aW50MzJfdCAqZGF0YV9sZW4pOwotIAlpbnQgCSgqcGFyc2UpKHN0cnVjdCBuZnRfcnVsZV9leHByICplLCBzdHJ1Y3QgbmxhdHRyICphdHRyKTsKLSAJdm9pZAkoKmJ1aWxkKShzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdF9ydWxlX2V4cHIgKmUpOwotLQlpbnQJKCpzbnByaW50ZikoY2hhciAqYnVmLCBzaXplX3QgbGVuLCB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncywgc3RydWN0IG5mdF9ydWxlX2V4cHIgKmUpOwotKyAgICBpbnQJKCpzbnByaW50Zl8pKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MsIHN0cnVjdCBuZnRfcnVsZV9leHByICplKTsKLSAJaW50CSgqeG1sX3BhcnNlKShzdHJ1Y3QgbmZ0X3J1bGVfZXhwciAqZSwgbXhtbF9ub2RlX3QgKnRyZWUsCi0gCQkJICAgICBzdHJ1Y3QgbmZ0X3BhcnNlX2VyciAqZXJyKTsKLSAJaW50CSgqanNvbl9wYXJzZSkoc3RydWN0IG5mdF9ydWxlX2V4cHIgKmUsIGpzb25fdCAqZGF0YSwKLS0tLSAuL3NyYy9ydWxlLmMJMjAxNC0wNi0yNCAxNzowNzowNS41NzQ3ODQ3MDQgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9ydWxlLmMJMjAxNC0wNy0yNSAwMDoxOToyOC4zNTU2OTQ4ODAgKzA0MDAKLUBAIC04MTMsNyArODEzLDcgQEAKLSAJCQkgICAgICAgIntcInR5cGVcIjpcIiVzXCIsIiwgZXhwci0+b3BzLT5uYW1lKTsKLSAJCVNOUFJJTlRGX0JVRkZFUl9TSVpFKHJldCwgc2l6ZSwgbGVuLCBvZmZzZXQpOwotIAotLQkJcmV0ID0gZXhwci0+b3BzLT5zbnByaW50ZihidWYrb2Zmc2V0LCBsZW4sIHR5cGUsIGZsYWdzLCBleHByKTsKLSsgICAgICAgIHJldCA9IGV4cHItPm9wcy0+c25wcmludGZfKGJ1ZitvZmZzZXQsIGxlbiwgdHlwZSwgZmxhZ3MsIGV4cHIpOwotIAkJU05QUklOVEZfQlVGRkVSX1NJWkUocmV0LCBzaXplLCBsZW4sIG9mZnNldCk7Ci0gCi0gCQkvKgotLS0tIC4vc3JjL2V4cHIuYwkyMDE0LTA2LTI0IDE3OjA3OjA1LjU3NDc4NDcwNCArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIuYwkyMDE0LTA3LTI1IDAwOjE5OjI3LjM2NzcxNjg2MyArMDQwMAotQEAgLTIyNyw3ICsyMjcsNyBAQAotIAlpbnQgcmV0OwotIAl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gMCwgbGVuID0gc2l6ZTsKLSAKLS0JcmV0ID0gZXhwci0+b3BzLT5zbnByaW50ZihidWYrb2Zmc2V0LCBsZW4sIHR5cGUsIGZsYWdzLCBleHByKTsKLSsJcmV0ID0gZXhwci0+b3BzLT5zbnByaW50Zl8oYnVmK29mZnNldCwgbGVuLCB0eXBlLCBmbGFncywgZXhwcik7Ci0gCVNOUFJJTlRGX0JVRkZFUl9TSVpFKHJldCwgc2l6ZSwgbGVuLCBvZmZzZXQpOwotIAotIAlyZXR1cm4gb2Zmc2V0OwotLS0tIC4vc3JjL2V4cHIvZXh0aGRyLmMJMjAxNC0wNi0yNSAxODozNDowOC4xNzQyODQ3MTkgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL2V4dGhkci5jCTIwMTQtMDctMjUgMDA6MjE6NDguMTkyNTgzNjI4ICswNDAwCi1AQCAtMzYyLDcgKzM2Miw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9leHRoZHJfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9leHRoZHJfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX2V4dGhkcl9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9leHRoZHJfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX2V4dGhkcl9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfZXh0aGRyX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX2V4dGhkcl9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9sb2cuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3ODI4NDgxMCArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvbG9nLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4xNjA1ODQzNDAgKzA0MDAKLUBAIC0zMzIsNyArMzMyLDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX2xvZ19nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX2xvZ19wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfbG9nX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX2xvZ19zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfbG9nX3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9sb2dfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfbG9nX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL2xpbWl0LmMJMjAxNC0wNi0yNSAxODozNDowOC4xNzgyODQ4MTAgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL2xpbWl0LmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4xMDg1ODU0OTYgKzA0MDAKLUBAIC0yNTAsNyArMjUwLDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX2xpbWl0X2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfbGltaXRfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX2xpbWl0X2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX2xpbWl0X3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9saW1pdF9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfbGltaXRfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfbGltaXRfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvY21wLmMJMjAxNC0wNi0yNSAxODozNDowOC4xNzQyODQ3MTkgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL2NtcC5jCTIwMTQtMDctMjUgMDA6MjE6NDguMTcyNTg0MDczICswNDAwCi1AQCAtMzMxLDcgKzMzMSw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9jbXBfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9jbXBfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX2NtcF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9jbXBfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX2NtcF9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfY21wX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX2NtcF9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci90YXJnZXQuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE4MjI4NDkwMSArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvdGFyZ2V0LmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4xODQ1ODM4MDYgKzA0MDAKLUBAIC0yNzQsNyArMjc0LDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX3RhcmdldF9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX3RhcmdldF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfdGFyZ2V0X2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX3RhcmdldF9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfdGFyZ2V0X3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl90YXJnZXRfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfdGFyZ2V0X2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL2J5dGVvcmRlci5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTU4Mjg0MzU2ICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9ieXRlb3JkZXIuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjE0ODU4NDYwNyArMDQwMAotQEAgLTM4NCw3ICszODQsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfYnl0ZW9yZGVyX2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfYnl0ZW9yZGVyX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9ieXRlb3JkZXJfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfYnl0ZW9yZGVyX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9ieXRlb3JkZXJfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX2J5dGVvcmRlcl94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9ieXRlb3JkZXJfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvbG9va3VwLmMJMjAxNC0wNi0yNSAxODozNDowOC4xNzgyODQ4MTAgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL2xvb2t1cC5jCTIwMTQtMDctMjUgMDA6MjE6NDguMTM2NTg0ODc0ICswNDAwCi1AQCAtMzA1LDcgKzMwNSw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9sb29rdXBfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9sb29rdXBfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX2xvb2t1cF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9sb29rdXBfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX2xvb2t1cF9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfbG9va3VwX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX2xvb2t1cF9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9pbW1lZGlhdGUuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3ODI4NDgxMCArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvaW1tZWRpYXRlLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4xMjQ1ODUxNDEgKzA0MDAKLUBAIC0zNjUsNyArMzY1LDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX2ltbWVkaWF0ZV9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX2ltbWVkaWF0ZV9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfaW1tZWRpYXRlX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX2ltbWVkaWF0ZV9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfaW1tZWRpYXRlX3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9pbW1lZGlhdGVfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfaW1tZWRpYXRlX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL21ldGEuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3ODI4NDgxMCArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvbWV0YS5jCTIwMTQtMDctMjUgMDA6MjE6NDguMDQwNTg3MDA4ICswNDAwCi1AQCAtMzQwLDcgKzM0MCw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9tZXRhX2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfbWV0YV9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfbWV0YV9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9tZXRhX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9tZXRhX3NucHJpbnRmLAotIAkueG1sX3BhcnNlIAk9IG5mdF9ydWxlX2V4cHJfbWV0YV94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlIAk9IG5mdF9ydWxlX2V4cHJfbWV0YV9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9xdWV1ZS5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTgyMjg0OTAxICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9xdWV1ZS5jCTIwMTQtMDctMjUgMDA6MjE6NDguMjA4NTgzMjcyICswNDAwCi1AQCAtMjk0LDcgKzI5NCw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9xdWV1ZV9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX3F1ZXVlX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9xdWV1ZV9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9xdWV1ZV9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfcXVldWVfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX3F1ZXVlX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX3F1ZXVlX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL25hdC5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTgyMjg0OTAxICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9uYXQuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjA4NDU4NjAzMCArMDQwMAotQEAgLTQzMCw3ICs0MzAsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfbmF0X2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfbmF0X3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9uYXRfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfbmF0X3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9uYXRfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX25hdF94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9uYXRfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvcGF5bG9hZC5jCTIwMTQtMDYtMjUgMTg6MzQ6MDguMTgyMjg0OTAxICswNDAwCi0rKysgLi4vbGlibmZ0bmwtMS4wLjItbXkvLi9zcmMvZXhwci9wYXlsb2FkLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4yMDA1ODM0NTAgKzA0MDAKLUBAIC0zMzcsNyArMzM3LDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX3BheWxvYWRfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9wYXlsb2FkX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0X3J1bGVfZXhwcl9wYXlsb2FkX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX3BheWxvYWRfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX3BheWxvYWRfc25wcmludGYsCi0gCS54bWxfcGFyc2UJPSBuZnRfcnVsZV9leHByX3BheWxvYWRfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfcGF5bG9hZF9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9yZWplY3QuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE4MjI4NDkwMSArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvcmVqZWN0LmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4wOTY1ODU3NjIgKzA0MDAKLUBAIC0yNDIsNyArMjQyLDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX3JlamVjdF9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX3JlamVjdF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfcmVqZWN0X2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX3JlamVjdF9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfcmVqZWN0X3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9yZWplY3RfeG1sX3BhcnNlLAotIAkuanNvbl9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfcmVqZWN0X2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL2NvdW50ZXIuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3NDI4NDcxOSArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvY291bnRlci5jCTIwMTQtMDctMjUgMDA6MjE6NDguMDU2NTg2NjUyICswNDAwCi1AQCAtMjM2LDcgKzIzNiw3IEBACi0gCS5nZXQJCT0gbmZ0X3J1bGVfZXhwcl9jb3VudGVyX2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfY291bnRlcl9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfY291bnRlcl9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0X3J1bGVfZXhwcl9jb3VudGVyX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9jb3VudGVyX3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9jb3VudGVyX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UJPSBuZnRfcnVsZV9leHByX2NvdW50ZXJfanNvbl9wYXJzZSwKLSB9OwotLS0tIC4vc3JjL2V4cHIvY3QuYwkyMDE0LTA2LTI1IDE4OjM0OjA4LjE3NDI4NDcxOSArMDQwMAotKysrIC4uL2xpYm5mdG5sLTEuMC4yLW15Ly4vc3JjL2V4cHIvY3QuYwkyMDE0LTA3LTI1IDAwOjIxOjQ4LjA2ODU4NjM4NSArMDQwMAotQEAgLTQyOCw3ICs0MjgsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfY3RfZ2V0LAotIAkucGFyc2UJCT0gbmZ0X3J1bGVfZXhwcl9jdF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdF9ydWxlX2V4cHJfY3RfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfY3Rfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRfcnVsZV9leHByX2N0X3NucHJpbnRmLAotIAkueG1sX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9jdF94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9jdF9qc29uX3BhcnNlLAotIH07Ci0tLS0gLi9zcmMvZXhwci9iaXR3aXNlLmMJMjAxNC0wNi0yNSAxODozNDowOC4xNTgyODQzNTYgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL2JpdHdpc2UuYwkyMDE0LTA3LTI1IDAwOjIxOjQ5LjI3MjU1OTU5OSArMDQwMAotQEAgLTQwMyw3ICs0MDMsNyBAQAotIAkuZ2V0CQk9IG5mdF9ydWxlX2V4cHJfYml0d2lzZV9nZXQsCi0gCS5wYXJzZQkJPSBuZnRfcnVsZV9leHByX2JpdHdpc2VfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX2JpdHdpc2VfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdF9ydWxlX2V4cHJfYml0d2lzZV9zbnByaW50ZiwKLSsgICAgLnNucHJpbnRmXwk9IG5mdF9ydWxlX2V4cHJfYml0d2lzZV9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZQk9IG5mdF9ydWxlX2V4cHJfYml0d2lzZV94bWxfcGFyc2UsCi0gCS5qc29uX3BhcnNlCT0gbmZ0X3J1bGVfZXhwcl9iaXR3aXNlX2pzb25fcGFyc2UsCi0gfTsKLS0tLSAuL3NyYy9leHByL21hdGNoLmMJMjAxNC0wNi0yNSAxODozNDowOC4xNzgyODQ4MTAgKzA0MDAKLSsrKyAuLi9saWJuZnRubC0xLjAuMi1teS8uL3NyYy9leHByL21hdGNoLmMJMjAxNC0wNy0yNSAwMDoyMTo0OC4wMzI1ODcxODYgKzA0MDAKLUBAIC0yNzMsNyArMjczLDcgQEAKLSAJLmdldAkJPSBuZnRfcnVsZV9leHByX21hdGNoX2dldCwKLSAJLnBhcnNlCQk9IG5mdF9ydWxlX2V4cHJfbWF0Y2hfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRfcnVsZV9leHByX21hdGNoX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRfcnVsZV9leHByX21hdGNoX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0X3J1bGVfZXhwcl9tYXRjaF9zbnByaW50ZiwKLSAJLnhtbF9wYXJzZSAJPSBuZnRfcnVsZV9leHByX21hdGNoX3htbF9wYXJzZSwKLSAJLmpzb25fcGFyc2UgCT0gbmZ0X3J1bGVfZXhwcl9tYXRjaF9qc29uX3BhcnNlLAotIH07Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9maWxlcy8wMDAxLXRlc3RtbWFwLWZpeC1jb21waWxlLWlzc3VlLXdpdGgtZ2NjLTUueC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9maWxlcy8wMDAxLXRlc3RtbWFwLWZpeC1jb21waWxlLWlzc3VlLXdpdGgtZ2NjLTUueC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWEzNmIxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC9uZXRtYXAvZmlsZXMvMDAwMS10ZXN0bW1hcC1maXgtY29tcGlsZS1pc3N1ZS13aXRoLWdjYy01LngucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotRnJvbSBjODFiZjU0ZDZlYjg3MDI4NjY2MmExMWQzYjRhOTk0NzE3YzQ3Njk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOCBTZXAgMjAxNSAwNTozNjoyNyAtMDcwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0bW1hcDogZml4IGNvbXBpbGUgaXNzdWUgd2l0aCBnY2MgNS54Ci0KLXRoaXMgZml4ZXM6Ci1leGFtcGxlcy90ZXN0bW1hcC5jOjU0MDoxMDogZXJyb3I6IGZvcm1hdCAnJWxkJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcgaW50JywgYnV0IGFyZ3VtZW50IDMgaGFzIHR5cGUgJ3NzaXplX3Qge2FrYSBjb25zdCBpbnR9JyBbLVdlcnJvcj1mb3JtYXQ9XQotfCAgICBwcmludGYoInJpbmdfb2ZzWyVkXSAlbGRcbiIsIGksIG5pZnAtPnJpbmdfb2ZzW2ldKTsKLXwgICAgICAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KLS0tLQotIGV4YW1wbGVzL3Rlc3RtbWFwLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9leGFtcGxlcy90ZXN0bW1hcC5jIGIvZXhhbXBsZXMvdGVzdG1tYXAuYwotaW5kZXggZDdmNmFjYy4uOTM0NDg5YSAxMDA2NDQKLS0tLSBhL2V4YW1wbGVzL3Rlc3RtbWFwLmMKLSsrKyBiL2V4YW1wbGVzL3Rlc3RtbWFwLmMKLUBAIC01MzcsNyArNTM3LDcgQEAgZG9faWYoKQotIAlmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKQotIAkJcHJpbnRmKCJzcGFyZTFbJWRdICAldVxuIiwgaSwgbmlmcC0+bmlfc3BhcmUxW2ldKTsKLSAJZm9yIChpID0gMDsgaSA8IChuaWZwLT5uaV90eF9yaW5ncyArIG5pZnAtPm5pX3J4X3JpbmdzICsgMik7IGkrKykKLS0JCXByaW50ZigicmluZ19vZnNbJWRdICVsZFxuIiwgaSwgbmlmcC0+cmluZ19vZnNbaV0pOwotKwkJcHJpbnRmKCJyaW5nX29mc1slZF0gJXpkXG4iLCBpLCBuaWZwLT5yaW5nX29mc1tpXSk7Ci0gfQotIAotIHN0cnVjdCBuZXRtYXBfcmluZyAqCi0tLSAKLTIuMy41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9maWxlcy9tYWtlZmlsZV9maXh1cC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9maWxlcy9tYWtlZmlsZV9maXh1cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA1MGJmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC9uZXRtYXAvZmlsZXMvbWFrZWZpbGVfZml4dXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi1UaGUgbWFrZWZpbGUgYXNzdW1lcyBidWlsZGluZyBsb2NhbGx5LgotCi1VcHN0cmVhbSBTdGF0dXM6IEluYXBwcm9wcmlhdGUgW05hdGl2ZV0KLQotVGhlIGNvbmZpZ3VyZSBpcyBub3QgYXV0by1tYWtlIGJhc2VkCi0KLVNpZ25lZC1vZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiBMSU5VWC9uZXRtYXAubWFrLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9MSU5VWC9uZXRtYXAubWFrLmluCi0rKysgYi9MSU5VWC9uZXRtYXAubWFrLmluCi1AQCAtMTIsMTAgKzEyLDkgQEAgU1JDRElSOj1AU1JDRElSQAotICMgVGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgbmVlZGVkIHRvIGJ1aWxkIHRoZSBtb2R1bGVzIGFzIG91dC1vZi10cmVlLAotICMgaW4gZmFjdCB0aGUga2VybmVsIHNvdXJjZXMgcGF0aCBtdXN0IGJlIHNwZWNpZmllZC4KLSAKLS1QV0QgPz0gJChDVVJESVIpCi0gCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGUgZmxhZ3MgKGUuZy4gaGVhZGVyIGxvY2F0aW9uKQotLUVYVFJBX0NGTEFHUyA6PSAtSSQoUFdEKSAtSSQoU1JDRElSKSAtSSQoU1JDRElSKS8uLi9zeXMgLUkkKFNSQ0RJUikvLi4vc3lzL2RldiAtRENPTkZJR19ORVRNQVAKLStFWFRSQV9DRkxBR1MgOj0gLUkkKFNSQ0RJUikgLUkkKFNSQ0RJUikvLi4vc3lzIC1JJChTUkNESVIpLy4uL3N5cy9kZXYgLURDT05GSUdfTkVUTUFQCi0gRVhUUkFfQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUKLSBFWFRSQV9DRkxBR1MgKz0gJChmb3JlYWNoIHMsJChTVUJTWVMpLC1EQ09ORklHX05FVE1BUF8kKHNoZWxsIGVjaG8gJHN8dHIgYS16LSBBLVpfKSkKLSAKLUluZGV4OiBMSU5VWC9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL0xJTlVYL2NvbmZpZ3VyZQotKysrIGIvTElOVVgvY29uZmlndXJlCi1AQCAtMzQ5LDUyICszNDksNiBAQCByZXNldF90ZXN0cygpIHsKLSAJRU9GCi0gfQotIAotLSMgcnVuX3Rlc3RzOiBydW4gYWxsIGFjY3VtdWxhdGVkIHRlc3RzIGFuZCBleGVjIHRoZSBwZXJ0aW5lbnQKLS0jICAgc3VjY2Vzcy9mYWlsdXJlIGFjdGlvbnMgZm9yIGVhY2ggb25lLgotLXJ1bl90ZXN0cygpIHsKLS0JbG9jYWwgdD0gCSMgcHJldmVudCAtRU9GIHRvIGVhdCB0aGUgbWFrZSBUQUIKLS0JY2F0ID4gJFRNUERJUi9NYWtlZmlsZSA8PC1FT0YKLS0JCWlmbmVxIChcJChLRVJORUxSRUxFQVNFKSwpCi0tCQlvYmotbSA6PSAkVEVTVE9CSlMKLS0JCWVsc2UKLS0JCVNfRFJJVkVSUyA6PSAkKGRydiBwcmludCkKLS0JCWFsbDogXCQoU19EUklWRVJTOiU9Z2V0LSUpCi0tCQkkdAlcJChNQUtFKSAtQyAka3NyYyBNPVwkXCRQV0QgJGtvcHRzCi0tCi0tCQktaW5jbHVkZSAkVE9QRElSL2RyaXZlcnMubWFrCi0tCUVPRgotLQlmb3IgZCBpbiAkKGRydiBwcmludCk7IGRvCi0tCQljYXQgPj4gJFRNUERJUi9NYWtlZmlsZSA8PC1FT0YKLS0JCQlnZXQtJGQ6Ci0tCQkJJHQJWyAteiAiXCQoJGQtc3JjKSIgXSB8fCBjcCAtUnAgXCQoJGQtc3JjKSBcJChpZiBcJCgkZC1kc3QpLFwkKCRkLWRzdCksLikKLS0JCQkkdAl0b3VjaCBnZXQtJGQKLS0JCUVPRgotLQlkb25lCi0tCWVjaG8gZW5kaWYgPj4gJFRNUERJUi9NYWtlZmlsZQotLQl7Ci0tCQljYXQgPDwtRU9GCi0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0tIyMgQkVHSU4gUlVOTklORyBURVNUUzogJChkYXRlKQotLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotLSMjIE1ha2VmaWxlOgotLQkJRU9GCi0tCQljYXQgJFRNUERJUi9NYWtlZmlsZQotLQkJY2F0IDw8LUVPRgotLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotLQkJRU9GCi0tCX0gPj4gY29uZmlnLmxvZwotLQkoCi0tCQljZCAkVE1QRElSCi0tCQltYWtlIC1rIC1qICQoZ3JlcCAtYyBwcm9jZXNzb3IgL3Byb2MvY3B1aW5mbykKLS0JKSA+PiBjb25maWcubG9nCi0tCWV2YWwgIiRURVNUUE9TVFBST0MiCi0tCWNhdCA+PiBjb25maWcubG9nIDw8LUVPRgotLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotLSMjIEVORCBSVU5OSU5HIFRFU1RTOiAkKGRhdGUpCi0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0tCUVPRgotLX0KLS0KLSBjb25maWdoPW5ldG1hcF9saW51eF9jb25maWcuaAotICMgc3VjY2VzL2ZhaWx1cmUgYWN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gd3JpdGUgc29tZSBtYWNyb3MKLSAjIGluIG5ldG1hX2xpbnV4X2NvbmZpZy5oLiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBjYW4gYmUKLUBAIC02MTksNyArNTczLDYgQEAgY29uZmlndXJhdGlvbi4gUGxlYXNlIGNoZWNrICdjb25maWcubG9nJwotIHJlc2V0X3Rlc3RzCi0gcm0gLWYgZHJpdmVycy5tYWsKLSBhZGRfdGVzdCB0cnVlIGJyb2tlbl9idWlsZHN5c3RlbSA8IC9kZXYvbnVsbAotLXJ1bl90ZXN0cwotIAotIGRydm5hbWUyY29uZmlnKCkgewotIAlsb2NhbCBuYW1lPSQxCi1AQCAtMTI4MCw3ICsxMjMzLDYgQEAgY2F0ID4gJGNvbmZpZ2ggPDwtRU9GCi0gRU9GCi0gCi0gIyB0aGUgVEVTVFBPU1RQUk9DIHNjcmlwdCB3aWxsIGFkZCBtYWNyb3MgdG8gJGNvbmZpZ2gKLS1ydW5fdGVzdHMKLSAKLSBkZWZpbmUgRFJJVkVSX1NVRkZJWCBcIiRkcnZzdWZmaXhcIgotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcC1tb2R1bGVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9uZXRtYXAtbW9kdWxlc19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MmVjZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcC1tb2R1bGVzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLXJlcXVpcmUgbmV0bWFwLmluYwotCi1ERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgotZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKLQotaW5oZXJpdCBtb2R1bGUKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL25ldG1hcC1tb2R1bGVzIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1rZXJuZWwtZGlyPSR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IFwKLSAgICAgICAgICAgICAgICAtLWtlcm5lbC1zb3VyY2VzPSR7U1RBR0lOR19LRVJORUxfRElSfSBcCi0gICAgICAgICAgICAgICAgLS1pbnN0YWxsLW1vZC1wYXRoPSR7RH0gXAotICAgICAgICAgICAgICAgIC0tZHJpdmVyLXN1ZmZpeD0iLW5ldG1hcCIgXAotICAgICAgICAgICAgICAgICIKLQotIyBUaGUgZHJpdmVyIGJ1aWxkcyBhcmUgb3B0aW9uYWwsIGJ1dCBmb3IgZGV0ZXJtaW5pc3RpYyBidWlsZHMsCi0jIHdlIHNob3VsZCBiZSBhYmxlIHRvIGV4cGxpY2l0bHkgZW5hYmxlL2Rpc2FibGUgdGhlIGJ1aWxkcwotIyBmb3IgdGhlbSBpbiBhIHByb3BlciBwbGFjZSAobWF5YmUgaW4gQlNQKS4KLSMgQnV0IHdlIGNhbid0IHVzZSBQQUNLQUdFQ09ORklHIHNpbmNlIHRoZXJlIGlzIG5vIG9wdGlvbiBmb3IKLSMgZWFjaCBkcml2ZXIsIGFuZCB0aGUgb3B0aW9ucyBhcmU6Ci0jICAtLW5vLWRyaXZlcnMgICAgZG8gbm90IGNvbXBpbGUgYW55IGRyaXZlcgotIyAgLS1uby1kcml2ZXJzPSAgIGRvIG5vdCBjb21waWxlIHRoZSBnaXZlbiBkcml2ZXJzIChjb21tYSBzZXAuKQotIyAgLS1kcml2ZXJzPSAgICAgIG9ubHkgY29tcGlsZSB0aGUgZ2l2ZW4gZHJpdmVycyAoY29tbWEgc2VwLikKLSMKLSMgU28gdXNlIE5FVE1BUF9EUklWRVJTIGFuZCB0aGUgZm9sbG93aW5nIHB5dGhvbiBjb2RlIHRvIGFkZCBwcm9wZXIKLSMgY29uZmlncyB0byBFWFRSQV9PRUNPTkYuCi0jCi0jIFRoZSBkZWZhdWx0IGlzIG5vLWRyaXZlcnMsIGFuZCBhbGwgc3VwcG9ydGVkIGRyaXZlcnMgYXJlIGxpc3RlZAotIyBpbiBORVRNQVBfQUxMX0RSSVZFUlMuCi1ORVRNQVBfRFJJVkVSUyA/Pz0gIiIKLU5FVE1BUF9BTExfRFJJVkVSUyA9ICJpeGdiZSBpZ2IgZTEwMDBlIGUxMDAwIHZldGguYyBmb3JjZWRldGguYyB2aXJ0aW9fbmV0LmMgcjgxNjkuYyIKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBkcml2ZXJzX2xpc3QgPSBkLmdldFZhcigiTkVUTUFQX0RSSVZFUlMiKS5zcGxpdCgpCi0gICAgYWxsX2RyaXZlcnNfbGlzdCA9IGQuZ2V0VmFyKCJORVRNQVBfQUxMX0RSSVZFUlMiKS5zcGxpdCgpCi0gICAgY29uZmlnX2RyaXZlcnMgPSAiLS1kcml2ZXJzPSIgKyAiLCIuam9pbihkcml2ZXJzX2xpc3QpCi0KLSAgICBleHRyYV9vZWNvbmZfZHJpdmVycyA9IGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnTkVUTUFQX0RSSVZFUlMnLCBhbGxfZHJpdmVyc19saXN0LCBjb25maWdfZHJpdmVycywgJy0tbm8tZHJpdmVycycsIGQpCi0gICAgZC5hcHBlbmRWYXIoIkVYVFJBX09FQ09ORiIsIGV4dHJhX29lY29uZl9kcml2ZXJzKQotfQotCi1MREZMQUdTIDo9ICIke0AnJHtMREZMQUdTfScucmVwbGFjZSgnLVdsLC1PMScsICcnKX0iCi1MREZMQUdTIDo9ICIke0AnJHtMREZMQUdTfScucmVwbGFjZSgnLVdsLC0tYXMtbmVlZGVkJywgJycpfSIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBjZCAke1N9L0xJTlVYCi0gICAgLi9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotICAgIGNhdCA+PiAgJHtTfS9MSU5VWC9uZXRtYXBfbGludXhfY29uZmlnLmggPDxFT0YKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX0hBVkVfSFJUSU1FUl9NT0RFX1JFTAotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9IUlRJTUVSX0ZPUldBUkRfTk9XCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9IQVZFX1BIWVNfQUREUl9UCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9IQVZFX0FDQ0VTU19PTkNFCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9IQVZFX05FVERFVl9PUFMKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX0hBVkVfSU5JVF9ORVQKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX0hBVkVfTElWRV9BRERSX0NIQU5HRQotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9UWF9TS0JfU0hBUklORwotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9VTkxPQ0tFRF9JT0NUTAotI2RlZmluZSBORVRNQVBfTElOVVhfSEFWRV9QRVJORVRfT1BTX0lECi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9WSVJUSU9fRlVOQ1RJT05TCi0jZGVmaW5lIE5FVE1BUF9MSU5VWF9WSVJUSU9fRlJFRV9QQUdFUwotI2RlZmluZSBORVRNQVBfTElOVVhfVklSVElPX0dFVF9WUlNJWkUKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX1RJTUVSX1JUWVBFIGVudW0gaHJ0aW1lcl9yZXN0YXJ0Ci0jZGVmaW5lIE5FVE1BUF9MSU5VWF9WSVJUSU9fTVVMVElfUVVFVUUKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX0hBVkVfRTEwMDBFX0VYVF9SWERFU0MKLSNkZWZpbmUgTkVUTUFQX0xJTlVYX0hBVkVfRTEwMDBFX0RPV04yCi1FT0YKLQotaWYgJHtAICdmYWxzZScgaWYgKGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcoZC5nZXRWYXIoJ0tFUk5FTF9WRVJTSU9OJykgb3IgIjAiLCAnMy4xNycpIDwgMCkgZWxzZSAndHJ1ZScgfSA7IHRoZW4KLSAgICBlY2hvIE9LCi0gICAgY2F0ID4+ICAke1N9L0xJTlVYL25ldG1hcF9saW51eF9jb25maWcuaCA8PEVPRgotI2RlZmluZSBORVRNQVBfTElOVVhfQUxMT0NfTkVUREVWXzRBUkdTCi1FT0YKLWZpCi19Ci0KLWRvX2NvbXBpbGUgKCkgewotICAgIGNkICR7U30vTElOVVgKLSAgICBvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIGNkICR7U30vTElOVVgKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLX0KLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvODMzMzUvCi1QTkJMQUNLTElTVFtuZXRtYXAtbW9kdWxlc10gPz0gIkJST0tFTjogbm90IGNvbXBhdGlibGUgd2l0aCBkZWZhdWx0IGtlcm5lbCB2ZXJzaW9uIDQuOCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9uZXRtYXAuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMzNlNzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIm5ldG1hcCBhbmQgVkFMRSAtIHZlcnkgZmFzdCBwYWNrZXQgSS9PIGZyb20gdXNlcnNwYWNlIChGcmVlQlNEL0xpbnV4KSIKLURFU0NSSVBUSU9OPSAiTkVUTUFQIGlzIGEgZnJhbWV3b3JrIGZvciB2ZXJ5IGZhc3QgcGFja2V0IEkvTyBmcm9tIHVzZXJzcGFjZS4gIFZBTEUgaXMgYW4gZXF1YWxseSBmYXN0IGluLWtlcm5lbCBzb2Z0d2FyZSBzd2l0Y2ggdXNpbmcgdGhlIG5ldG1hcCBBUEkuICBCb3RoIGFyZSBpbXBsZW1lbnRlZCBhcyBhIHNpbmdsZSBrZXJuZWwgbW9kdWxlIGZvciBGcmVlQlNEIGFuZCBMaW51eCwgYW5kIGNhbiBkZWFsIHdpdGggbGluZSByYXRlIG9uIHJlYWwgb3IgZW11bGF0ZWQgMTAgR2JpdCBwb3J0cy4iCi1TRUNUSU9OID0gIm5ldHdvcmtpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvbmV0bWFwLyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTEzO2VuZGxpbmU9MTQ7bWQ1PTU2YWUwYjljN2JhMDQ3NmFiOTA5OGRlOTRjMjcxNGQ2IgotCi1TUkNSRVYgPSAiZGE5ZTE5ZTY5Yjg0ZTRmNmY4YWUxMjVmOGQwMWI0MmE0YWJhZGU2YSIKLVBWID0gIm1hc3RlcitnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2x1aWdpcml6em8vbmV0bWFwLmdpdCIKLVNSQ19VUkkgKz0gImZpbGU6Ly9tYWtlZmlsZV9maXh1cC5wYXRjaCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44NnxtaXBzfGFybSkuKi1saW51eCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL25ldG1hcC9uZXRtYXBfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkODUwOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvbmV0bWFwL25ldG1hcF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1yZXF1aXJlIG5ldG1hcC5pbmMKLQotREVQRU5EUyA9ICJuZXRtYXAtbW9kdWxlcyIKLVBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWtlcm5lbC1kaXI9JHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0gXAotICAgICAgICAgICAgICAgIC0ta2VybmVsLXNvdXJjZXM9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9IFwKLSAgICAgICAgICAgICAgICAtLW5vLWRyaXZlcnMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nZW5lcmljIFwKLSAgICAgICAgICAgICAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgICAgICAgICAgICAgIC0tZGVzdGRpcj0ke0R9IFwKLSAgICAgICAgICAgICAgICAtLWNjPScke0NDfScgXAotICAgICAgICAgICAgICAgIC0tbGQ9JyR7TER9JyBcCi0gICAgICAgICAgICAgICAgIgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGVzdG1tYXAtZml4LWNvbXBpbGUtaXNzdWUtd2l0aC1nY2MtNS54LnBhdGNoIgotCi1kb19jb25maWd1cmUgKCkgewotICAgIGNkICR7U30vTElOVVgKLSAgICAuL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0gICAgY2QgJHtTfS9MSU5VWAotICAgIG1ha2UgYXBwcwotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBjZCAke1N9L0xJTlVYCi0gICAgbWFrZSBpbnN0YWxsLWFwcHMgREVTVERJUj0ke0R9Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0iCi1SREVQRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW5ldG1hcCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbmV0bWFwIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy82OTczMy8KLVBOQkxBQ0tMSVNUW25ldG1hcF0gPz0gIkJST0tFTjogVHJpZXMgdG8gYnVpbGQga2VybmVsIG1vZHVsZSBhbmQgZmFpbHMsIGVpdGhlciBpdCBzaG91bGQgYmUgZGlzYWJsZWQgb3IgdGhlcmUgc2hvdWxkIGJlIGRlcGVuZGVuY3kgb24ga2VybmVsIGxpa2UgaW4gbmV0bWFwLW1vZHVsZXMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxNzA0MjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxNzA4MTAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtbW9kdWxlXzAuMC4yMDE3MDQyMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC1tb2R1bGVfMC4wLjIwMTcwODEwLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzAuMC4yMDE3MDQyMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTcwNDIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWQ0MjBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTcwNDIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotcmVxdWlyZSB3aXJlZ3VhcmQuaW5jCi0KLWluaGVyaXQgYmFzaC1jb21wbGV0aW9uIHN5c3RlbWQgcGtnY29uZmlnCi0KLURFUEVORFMgPSAid2lyZWd1YXJkLW1vZHVsZSBsaWJtbmwiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0gICAgY2QgJHtTfS90b29scwotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBjZCAke1N9L3Rvb2xzCi0gICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBQUkVGSVg9IiR7cHJlZml4fSIgU1lTQ09ORkRJUj0iJHtzeXNjb25mZGlyfSIgXAotICAgICAgICBTWVNURU1EVU5JVERJUj0iJHtzeXN0ZW1kX3VuaXRkaXJ9IiBcCi0gICAgICAgIFdJVEhfU1lTVEVNRFVOSVRTPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd5ZXMnLCAnJywgZCl9IFwKLSAgICAgICAgV0lUSF9CQVNIQ09NUExFVElPTj15ZXMgXAotICAgICAgICBXSVRIX1dHUVVJQ0s9eWVzIFwKLSAgICAgICAgaW5zdGFsbAotfQotCi1GSUxFU18ke1BOfSA9ICIgXAotICAgICR7c3lzY29uZmRpcn0gXAotICAgICR7c3lzdGVtZF91bml0ZGlyfSBcCi0gICAgJHtiaW5kaXJ9IFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAid2lyZWd1YXJkLW1vZHVsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTcwODEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC10b29sc18wLjAuMjAxNzA4MTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRkZGJjYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTcwODEwLmJiCkBAIC0wLDAgKzEsMjcgQEAKK3JlcXVpcmUgd2lyZWd1YXJkLmluYworCitpbmhlcml0IGJhc2gtY29tcGxldGlvbiBzeXN0ZW1kIHBrZ2NvbmZpZworCitERVBFTkRTID0gIndpcmVndWFyZC1tb2R1bGUgbGlibW5sIgorCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworICAgIGNkICR7U30vdG9vbHMKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgY2QgJHtTfS90b29scworICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgUFJFRklYPSIke3ByZWZpeH0iIFNZU0NPTkZESVI9IiR7c3lzY29uZmRpcn0iIFwKKyAgICAgICAgU1lTVEVNRFVOSVRESVI9IiR7c3lzdGVtZF91bml0ZGlyfSIgXAorICAgICAgICBXSVRIX1NZU1RFTURVTklUUz0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAneWVzJywgJycsIGQpfSBcCisgICAgICAgIFdJVEhfQkFTSENPTVBMRVRJT049eWVzIFwKKyAgICAgICAgV0lUSF9XR1FVSUNLPXllcyBcCisgICAgICAgIGluc3RhbGwKK30KKworRklMRVNfJHtQTn0gPSAiIFwKKyAgICAke3N5c2NvbmZkaXJ9IFwKKyAgICAke3N5c3RlbWRfdW5pdGRpcn0gXAorICAgICR7YmluZGlyfSBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gIndpcmVndWFyZC1tb2R1bGUgYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMKaW5kZXggNDZhOTk3MS4uZjM3ZDUyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMKQEAgLTExLDggKzExLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0Lnp4MmM0LmNvbS9XaXJlR3VhcmQvc25hcHNob3QvV2lyZUd1YXJkLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhlNTU5ZjRmZDY3MmIxNWMzOGExNWViNGQ4OGNjODRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzYzgyYWY3NzQyMjRjZDE3MWQwMDBlZTRhNTE5YjVlNDc0Y2M2ODQyYWMwNDk2Nzc3M2NmNzdiMjY3NTAwMDAiCitTUkNfVVJJW21kNXN1bV0gPSAiOGRkM2UwODA0MDdiODI5NWMyNTU2NWE4NDdhNGNhMjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWI5NjIzMDM5MDYyNWFhZDZmNDgxNmZhMjNhZWY2ZTlmN2ZlZTEzMGYwODNkODM4OTE5MTI5ZmYxMjA4OWJmNyIKIAogUyA9ICIke1dPUktESVJ9L1dpcmVHdWFyZC0ke1BWfS9zcmMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXJzaC9uZXRraXQtcnNoXzAuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnNoL25ldGtpdC1yc2hfMC4xNy5iYgppbmRleCBkNjE2MzZlLi4zOTkwZjdiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnNoL25ldGtpdC1yc2hfMC4xNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnNoL25ldGtpdC1yc2hfMC4xNy5iYgpAQCAtNzAsNyArNzAsNyBAQAogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgZGViaWFuL2hvc3RzLmVxdWl2ICR7RH0vJHtzeXNjb25mZGlyfQogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yZXhlYy5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3JleGVjCiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Jsb2dpbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3Jsb2dpbgotICAgICAgICBpbnN0YWxsIC1tIDA2NjQgJHtXT1JLRElSfS9yc2gucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9yc2gKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnNoLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvcnNoCiAgICAgZmkKICAgICBjcCAke1dPUktESVJ9L3JleGVjLnhpbmV0ZC5uZXRraXQgICR7RH0vJHtzeXNjb25mZGlyfS94aW5ldGQuZC9yZXhlYwogICAgIGNwICR7V09SS0RJUn0vcmxvZ2luLnhpbmV0ZC5uZXRraXQgICR7RH0vJHtzeXNjb25mZGlyfS94aW5ldGQuZC9ybG9naW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC10ZWxuZXQvbmV0a2l0LXRlbG5ldF8wLjE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXRlbG5ldC9uZXRraXQtdGVsbmV0XzAuMTcuYmIKaW5kZXggNTRhNThjOC4uODA3YjU2NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXRlbG5ldC9uZXRraXQtdGVsbmV0XzAuMTcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXRlbG5ldC9uZXRraXQtdGVsbmV0XzAuMTcuYmIKQEAgLTEsNCArMSw1IEBACiBERVNDUklQVElPTiA9ICJuZXRraXQtdGVsbmV0IGluY2x1ZGVzIHRoZSB0ZWxuZXQgZGFlbW9uIGFuZCBjbGllbnQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5oY3MuaGFydmFyZC5lZHUvfmRob2xsYW5kL2NvbXB1dGVycy9uZXRraXQuaHRtbCIKIFNFQ1RJT04gPSAibmV0IgogREVQRU5EUyA9ICJuY3Vyc2VzIgogTElDRU5TRSA9ICJCU0QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9hY2NlbC1wcHAvYWNjZWwtcHBwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2FjY2VsLXBwcC9hY2NlbC1wcHBfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTg2NTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2FjY2VsLXBwcC9hY2NlbC1wcHBfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJBQ0NFTC1QUFAgaXMgYSBoaWdoIHBlcmZvcm1hbmNlIFZQTiBzZXJ2ZXIgYXBwbGljYXRpb24gZm9yIGxpbnV4IgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9hcHBzL3RyYWMvYWNjZWwtcHBwL3dpa2kiCi1TRUNUSU9OID0gIm5ldCIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGlicGNyZSIKLQotaW5oZXJpdCBjbWFrZQotCi1QUiA9ICJyMSIKLVBWID0gIjEuNy4zK2dpdCIKLQotU1JDUkVWID0gIjRhY2ZhNDZjMzIxYTM0NGI5YTZjZTQxMjhlNzJkMWUwMjgyOGQ4YTAiCi1TUkNfVVJJID0gImdpdDovL2FjY2VsLXBwcC5naXQuc291cmNlZm9yZ2UubmV0L2dpdHJvb3QvYWNjZWwtcHBwL2FjY2VsLXBwcDticmFuY2g9MS43IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfRFJJVkVSPUZBTFNFIFwKLSAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWD0ke3ByZWZpeH0gXAotICAgICAgICAgICAgICAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCi0gICAgICAgICAgICAgICAgIC1ETE9HX1BHU1FMPUZBTFNFIFwKLSAgICAgICAgICAgICAgICAgLURSQURJVVM9RkFMU0UgXAotICAgICAgICAgICAgICAgICAtRE5FVFNOTVA9RkFMU0UgXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIvdXNyL2xpYi8ke0JQTn0vLmRlYnVnLyoiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1saWJzIgotRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vJHtCUE59Lyouc28gL3Vzci9saWIvJHtCUE59Lyouc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1saWJzID0gImRldi1zbyIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWJzIgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgY21saXN0PWBmaW5kICR7U30gLW5hbWUgQ01ha2VMaXN0cy50eHRgCi0gICAgZm9yIGZpbGUgaW4gJGNtbGlzdDsgZG8KLSAgICAgICAgc2VkIC1pIC1lICJzOkxJQlJBUlkgREVTVElOQVRJT04gbGliL2FjY2VsLXBwcDpMSUJSQVJZIERFU1RJTkFUSU9OICR7YmFzZWxpYn0vYWNjZWwtcHBwOmciIFwKLSAgICAgICAgICAgICAgIC1lICJzOlwke0NNQUtFX0lOU1RBTExfUFJFRklYfS9saWIvYWNjZWwtcHBwOlwke0NNQUtFX0lOU1RBTExfUFJFRklYfS8ke2Jhc2VsaWJ9L2FjY2VsLXBwcDpnIiBcCi0gICAgICAgICAgICAgICAkY21saXN0Ci0gICAgZG9uZQotfQotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy84MTAwMy8KLVBOQkxBQ0tMSVNUW2FjY2VsLXBwcF0gPz0gIkJST0tFTjogZmFpbHMgdG8gYnVpbGQgd2l0aCBuZXcgYmludXRpbHMtMi4yNyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzL2J1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYjlkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzL2J1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMTY3IEBACitGcm9tIDQzYjZlOThjOWMzN2FmZDBkOTE0OTQ5ZGNmZjRlYWI4MWY1YTk5NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcmVuZGFuIExlIEZvbGwgPGJyZW5kYW4ubGUuZm9sbEBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDMgTWFyIDIwMTUgMTE6NDI6NTcgKzAwMDAKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CisKKy0tLQorIG1ETlNQb3NpeC9NYWtlZmlsZSB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9NYWtlZmlsZSBiL21ETlNQb3NpeC9NYWtlZmlsZQoraW5kZXggNGY5OGU5MC4uOGFjOTdhZCAxMDA3NTUKKy0tLSBhL21ETlNQb3NpeC9NYWtlZmlsZQorKysrIGIvbUROU1Bvc2l4L01ha2VmaWxlCitAQCAtNTAsNiArNTAsNyBAQAorIAorIExJQlZFUlMgPSAxCisgCisrUE9TSVhESVIgPSAuLi9tRE5TUG9zaXgKKyBDT1JFRElSID0gLi4vbUROU0NvcmUKKyBTSEFSRURESVIgPz0gLi4vbUROU1NoYXJlZAorIEpESyA9IC91c3IvamRrCitAQCAtNTgsMTEgKzU5LDExIEBAIENDID0gQGNjCisgQklTT04gPSBAYmlzb24KKyBGTEVYID0gQGZsZXgKKyBTVCA9IEBzdHJpcAorLUxEID0gbGQgLXNoYXJlZAorK0xEID1ATEQKKyBDUCA9IGNwCisgUk0gPSBybQorIExOID0gbG4gLXMgLWYKKy1DRkxBR1NfQ09NTU9OID0gLUkkKENPUkVESVIpIC1JJChTSEFSRURESVIpIC1JJChPQkpESVIpIC1md3JhcHYgLVcgLVdhbGwgLURQSURfRklMRT1cIi92YXIvcnVuL21kbnNkLnBpZFwiIC1ETUROU19VRFNfU0VSVkVSUEFUSD1cIi92YXIvcnVuL21kbnNkXCIKKytDRkxBR1NfQ09NTU9OID0gLUkkKFBPU0lYRElSKSAtSSQoQ09SRURJUikgLUkkKFNIQVJFRERJUikgLUkkKE9CSkRJUikgLWZ3cmFwdiAtVyAtV2FsbCAtRFBJRF9GSUxFPVwiL3Zhci9ydW4vbWRuc2QucGlkXCIgLURNRE5TX1VEU19TRVJWRVJQQVRIPVwiL3Zhci9ydW4vbWRuc2RcIgorIENGTEFHU19QVEhSRUFEID0KKyBMSU5LT1BUUyA9CisgTElOS09QVFNfUFRIUkVBRCA9IC1scHRocmVhZAorQEAgLTcwLDcgKzcxLDcgQEAgTERTVUZGSVggPSBzbworIEpBVkFDRkxBR1NfT1MgPSAtZlBJQyAtc2hhcmVkIC1sZG5zX3NkCisgCisgIyBTZXQgdXAgZGl2ZXJnaW5nIHBhdGhzIGZvciBkZWJ1ZyB2cy4gcHJvZCBidWlsZHMKKy1ERUJVRz0wCisrREVCVUc/PTEKKyBpZmVxICgkKERFQlVHKSwxKQorIENGTEFHU19ERUJVRyA9IC1nIC1ETUROU19ERUJVR01TR1M9MgorIE9CSkRJUiA9IG9iamVjdHMvZGVidWcKK0BAIC0yMTMsNyArMjE0LDcgQEAgZW5kaWYKKyBlbmRpZgorIGVuZGlmCisgCistQ0ZMQUdTID0gJChDRkxBR1NfQ09NTU9OKSAkKENGTEFHU19PUykgJChDRkxBR1NfREVCVUcpCisrQ0ZMQUdTX0JVSUxEID0gJChDRkxBR1MpICQoQ0ZMQUdTX0NPTU1PTikgJChDRkxBR1NfT1MpICQoQ0ZMQUdTX0RFQlVHKQorIAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCitAQCAtMjQ5LDggKzI1MCw3IEBAIERhZW1vbjogc2V0dXAgJChCVUlMRERJUikvbWRuc2QKKyAJQGVjaG8gIlJlc3BvbmRlciBkYWVtb24gZG9uZSIKKyAKKyAkKEJVSUxERElSKS9tZG5zZDogJChEQUVNT05PQkpTKQorLQkkKENDKSAtbyAkQCAkKyAkKExJTktPUFRTKQorLQlAJChTVFJJUCkgJEAKKysJJChDQykgLW8gJEAgJCsKKyAKKyAjIGxpYmRuc19zZCB0YXJnZXQgYnVpbGRzIHRoZSBjbGllbnQgbGlicmFyeQorIGxpYmRuc19zZDogc2V0dXAgJChCVUlMRERJUikvbGliZG5zX3NkLiQoTERTVUZGSVgpCitAQCAtMjU5LDIyICsyNTksMTggQEAgbGliZG5zX3NkOiBzZXR1cCAkKEJVSUxERElSKS9saWJkbnNfc2QuJChMRFNVRkZJWCkKKyBDTElFTlRMSUJPQkpTID0gJChPQkpESVIpL2Ruc3NkX2NsaWVudGxpYi5jLnNvLm8gJChPQkpESVIpL2Ruc3NkX2NsaWVudHN0dWIuYy5zby5vICQoT0JKRElSKS9kbnNzZF9pcGMuYy5zby5vCisgCisgJChCVUlMRERJUikvbGliZG5zX3NkLiQoTERTVUZGSVgpOiAkKENMSUVOVExJQk9CSlMpCistCUAkKExEKSAkKExJTktPUFRTKSAtbyAkQCAkKworLQlAJChTVFJJUCkgJEAKKysJJChMRCkgLXNoYXJlZCAkKExJTktPUFRTKSAtV2wsLXNvbmFtZSxsaWJkbnNfc2QuJChMRFNVRkZJWCkuMSAtbyAkQCAkKworIAorLUNsaWVudHM6IHNldHVwIGxpYmRuc19zZCAuLi9DbGllbnRzL2J1aWxkL2Rucy1zZAorK0NsaWVudHM6IHNldHVwIGxpYmRuc19zZAorKwlAJChNQUtFKSAtQyAuLi9DbGllbnRzIERFQlVHPSR7REVCVUd9CisgCUBlY2hvICJDbGllbnRzIGRvbmUiCisgCistLi4vQ2xpZW50cy9idWlsZC9kbnMtc2Q6CistCUAkKE1BS0UpIC1DIC4uL0NsaWVudHMKKy0KKyAjIG5zc19tZG5zIHRhcmdldCBidWlsZHMgdGhlIE5hbWUgU2VydmljZSBTd2l0Y2ggbW9kdWxlCisgbnNzX21kbnM6IHNldHVwICQoQlVJTERESVIpLyQoTlNTTElCRklMRSkKKyAJQGVjaG8gIk5hbWUgU2VydmljZSBTd2l0Y2ggbW9kdWxlIGRvbmUiCisgCisgJChCVUlMRERJUikvJChOU1NMSUJGSUxFKTogJChDTElFTlRMSUJPQkpTKSAkKE9CSkRJUikvbnNzX21kbnMuYy5zby5vCistCUAkKExEKSAkKExJTktPUFRTKSAtbyAkQCAkKworLQlAJChTVFJJUCkgJEAKKysJJChMRCkgLXNoYXJlZCAkKExJTktPUFRTKSAtbyAkQCAkKworIAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCitAQCAtNDcwLDU1ICs0NjYsNTUgQEAgZG5zZXh0ZDogc2V0dXAgJChCVUlMRERJUikvZG5zZXh0ZAorIAlAZWNobyAiZG5zZXh0ZCBkb25lIgorIAorICQoQlVJTERESVIpL21ETlNDbGllbnRQb3NpeDogICAgICAgICAkKEFQUE9CSikgICAgICQoT0JKRElSKS9DbGllbnQuYy5vCistCSQoQ0MpICQrIC1vICRAICQoTElOS09QVFMpCisrCSQoQ0MpICQrIC1vICRACisgCisgJChCVUlMRERJUikvbUROU1Jlc3BvbmRlclBvc2l4OiAgICAgICQoQ09NTU9OT0JKKSAgJChPQkpESVIpL1Jlc3BvbmRlci5jLm8KKy0JJChDQykgJCsgLW8gJEAgJChMSU5LT1BUUykKKysJJChDQykgJCsgLW8gJEAKKyAKKyAkKEJVSUxERElSKS9tRE5TUHJveHlSZXNwb25kZXJQb3NpeDogJChDT01NT05PQkopICAkKE9CSkRJUikvUHJveHlSZXNwb25kZXIuYy5vCistCSQoQ0MpICQrIC1vICRAICQoTElOS09QVFMpCisrCSQoQ0MpICQrIC1vICRACisgCisgJChCVUlMRERJUikvbUROU0lkZW50aWZ5OiAgICAgICAgICAgICQoU1BFQ0lBTE9CSikgJChPQkpESVIpL0lkZW50aWZ5LmMubworLQkkKENDKSAkKyAtbyAkQCAkKExJTktPUFRTKQorKwkkKENDKSAkKyAtbyAkQAorIAorICQoT0JKRElSKS9JZGVudGlmeS5jLm86ICAgICAgICAgICAgICAkKENPUkVESVIpL21ETlMuYyAjIE5vdGU6IElkZW50aWZ5LmMgdGV4dHVhbGx5IGltcG9ydHMgbUROUy5jCisgCisgJChCVUlMRERJUikvbUROU05ldE1vbml0b3I6ICAgICAgICAgICQoU1BFQ0lBTE9CSikgJChPQkpESVIpL05ldE1vbml0b3IuYy5vCistCSQoQ0MpICQrIC1vICRAICQoTElOS09QVFMpCisrCSQoQ0MpICQrIC1vICRACisgCisgJChPQkpESVIpL05ldE1vbml0b3IuYy5vOiAgICAgICAgICAgICQoQ09SRURJUikvbUROUy5jICMgTm90ZTogTmV0TW9uaXRvci5jIHRleHR1YWxseSBpbXBvcnRzIG1ETlMuYworIAorICQoQlVJTERESVIpL2Ruc2V4dGQ6ICAgICAgICAgICAgICAgICAkKEROU0VYVERPQkopICQoT0JKRElSKS9kbnNleHRkLmMudGhyZWFkc2FmZS5vCistCSQoQ0MpICQrIC1vICRAICQoTElOS09QVFMpICQoTElOS09QVFNfUFRIUkVBRCkKKysJJChDQykgJCsgLW8gJEAgJChMSU5LT1BUU19QVEhSRUFEKQorIAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCisgIyBJbXBsaWNpdCBydWxlcworICQoT0JKRElSKS8lLmMubzoJJS5jCistCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkQCAkPAorKwkkKENDKSAkKENGTEFHU19CVUlMRCkgLWMgLW8gJEAgJDwKKyAKKyAkKE9CSkRJUikvJS5jLm86CSQoQ09SRURJUikvJS5jCistCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkQCAkPAorKwkkKENDKSAkKENGTEFHU19CVUlMRCkgLWMgLW8gJEAgJDwKKyAKKyAkKE9CSkRJUikvJS5jLm86CSQoU0hBUkVERElSKS8lLmMKKy0JJChDQykgJChDRkxBR1MpIC1jIC1vICRAICQ8CisrCSQoQ0MpICQoQ0ZMQUdTX0JVSUxEKSAtYyAtbyAkQCAkPAorIAorICQoT0JKRElSKS8lLmMudGhyZWFkc2FmZS5vOgklLmMKKy0JJChDQykgJChDRkxBR1MpICQoQ0ZMQUdTX1BUSFJFQUQpIC1EX1JFRU5UUkFOVCAtYyAtbyAkQCAkPAorKwkkKENDKSAkKENGTEFHU19CVUlMRCkgJChDRkxBR1NfUFRIUkVBRCkgLURfUkVFTlRSQU5UIC1jIC1vICRAICQ8CisgCisgJChPQkpESVIpLyUuYy50aHJlYWRzYWZlLm86CSQoU0hBUkVERElSKS8lLmMKKy0JJChDQykgJChDRkxBR1MpICQoQ0ZMQUdTX1BUSFJFQUQpIC1EX1JFRU5UUkFOVCAtYyAtbyAkQCAkPAorKwkkKENDKSAkKENGTEFHU19CVUlMRCkgJChDRkxBR1NfUFRIUkVBRCkgLURfUkVFTlRSQU5UIC1jIC1vICRAICQ8CisgCisgJChPQkpESVIpLyUuYy5zby5vOgklLmMKKy0JJChDQykgJChDRkxBR1MpIC1jIC1mUElDIC1vICRAICQ8CisrCSQoQ0MpICQoQ0ZMQUdTX0JVSUxEKSAtYyAtZlBJQyAtbyAkQCAkPAorIAorICQoT0JKRElSKS8lLmMuc28ubzoJJChTSEFSRURESVIpLyUuYworLQkkKENDKSAkKENGTEFHUykgLWMgLWZQSUMgLW8gJEAgJDwKKysJJChDQykgJChDRkxBR1NfQlVJTEQpIC1jIC1mUElDIC1vICRAICQ8CisgCisgJChPQkpESVIpLyUueS5vOiAkKFNIQVJFRERJUikvJS55CisgCSQoQklTT04pICAgICAgICAgICAgICAtbyAkKE9CSkRJUikvJCouYyAtZCAkPAorLQkkKENDKSAkKENGTEFHUykgLWMgLW8gJEAgJChPQkpESVIpLyQqLmMKKysJJChDQykgJChDRkxBR1NfQlVJTEQpIC1jIC1vICRAICQoT0JKRElSKS8kKi5jCisgCisgJChPQkpESVIpLyUubC5vOiAkKFNIQVJFRERJUikvJS5sCisgCSQoRkxFWCkgJChGTEVYRkxBR1NfT1MpIC1pICAgICAgICAgICAgIC1vJChPQkpESVIpLyQqLmwuYyAkPAorLQkkKENDKSAkKENGTEFHUykgLVduby1lcnJvciAtYyAtbyAkQCAkKE9CSkRJUikvJCoubC5jCisrCSQoQ0MpICQoQ0ZMQUdTX0JVSUxEKSAtV25vLWVycm9yIC1jIC1vICRAICQoT0JKRElSKS8kKi5sLmMKKy0tIAorMi45LjUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy9tZG5zLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzL21kbnMuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzFkMTQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy9tZG5zLnNlcnZpY2UKQEAgLTAsMCArMSwxNSBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1aZXJvLWNvbmZpZ3VyYXRpb24gbmV0d29ya2luZworQWZ0ZXI9bmV0d29yay50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPWZvcmtpbmcKK0V4ZWNTdGFydFByZT0vYmluL3JtIC1mIC92YXIvcnVuL21kbnNkLnBpZAorRXhlY1N0YXJ0PS91c3Ivc2Jpbi9tZG5zZAorRXhlY1JlbG9hZD0vYmluL2tpbGwgLUhVUCAkTUFJTlBJRAorUElERmlsZT0vdmFyL3J1bi9tZG5zZC5waWQKK1Jlc3RhcnQ9YWx3YXlzCitSZXN0YXJ0U2VjPTEwcworCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL21kbnNfNzY1LjUwLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL21kbnNfNzY1LjUwLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE4MGY3YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvbWRuc183NjUuNTAuOS5iYgpAQCAtMCwwICsxLDg5IEBACitTVU1NQVJZID0gIlB1Ymxpc2hlcyAmIGJyb3dzZXMgYXZhaWxhYmxlIHNlcnZpY2VzIG9uIGEgbGluayBhY2NvcmRpbmcgdG8gdGhlIFplcm9jb25mIC8gQm9uam91ciBwcm90b2NvbCIKK0RFU0NSSVBUSU9OID0gIkJvbmpvdXIsIGFsc28ga25vd24gYXMgemVyby1jb25maWd1cmF0aW9uIG5ldHdvcmtpbmcsIGVuYWJsZXMgYXV0b21hdGljIGRpc2NvdmVyeSBvZiBjb21wdXRlcnMsIGRldmljZXMsIGFuZCBzZXJ2aWNlcyBvbiBJUCBuZXR3b3Jrcy4iCitIT01FUEFHRSA9ICJodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9uZXR3b3JraW5nL2JvbmpvdXIvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9MzFjNTAzNzE5MjFlMGZiNzMxMDAzYmJjNjY1ZjI5YmYiCisKK1JQUk9WSURFU18ke1BOfSArPSAibGliZG5zX3NkLnNvIgorCitTUkNfVVJJID0gImh0dHA6Ly9vcGVuc291cmNlLmFwcGxlLmNvbS90YXJiYWxscy9tRE5TUmVzcG9uZGVyL21ETlNSZXNwb25kZXItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2J1aWxkLnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgZmlsZTovL21kbnMuc2VydmljZSBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjRhNmJjMTYyODg1MTAwMjYzNGVhMzgzM2E0ZGNhMzE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlNjFkZDAwMzQzNTdhYTUwYzYwODA2NzI2ZmIxZjcwZmE4ZTk1M2ZmOWNiNjJlY2NmYjczZWZhZDEwZGJhMGEiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitTID0gIiR7V09SS0RJUn0vbUROU1Jlc3BvbmRlci0ke1BWfS9tRE5TUG9zaXgiCisKK0VYVFJBX09FTUFLRSArPSAib3M9bGludXggREVCVUc9MCAnQ0M9JHtDQ30nICdMRD0ke0NDTER9ICR7TERGTEFHU30nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBidWlsZC9wcm9kL21kbnNkICR7RH0ke3NiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICBjcCBidWlsZC9wcm9kL2xpYmRuc19zZC5zbyAke0R9JHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xCisgICAgY2htb2QgMDY0NCAke0R9JHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xCisgICAgbG4gLXMgbGliZG5zX3NkLnNvLjEgJHtEfSR7bGliZGlyfS9saWJkbnNfc2Quc28KKworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgLi4vbUROU1NoYXJlZC9kbnNfc2QuaCAke0R9JHtpbmNsdWRlZGlyfQorCisgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1tIDA2NDQgLi4vbUROU1NoYXJlZC9tRE5TUmVzcG9uZGVyLjggJHtEfSR7bWFuZGlyfS9tYW44L21kbnNkLjgKKworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAuLi9DbGllbnRzL2J1aWxkL2Rucy1zZCAke0R9JHtiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL3Byb2QgLXNvIGxpYm5zc19tZG5zLTAuMiAke0R9JHtsaWJkaXJ9CisgICAgbG4gLXMgbGlibnNzX21kbnMtMC4yLnNvICR7RH0ke2xpYmRpcn0vbGlibnNzX21kbnMuc28uMgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCBuc3NfbWRucy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuNQorICAgIGluc3RhbGwgLW0gMDY0NCBuc3NfbWRucy5jb25mLjUgJHtEfSR7bWFuZGlyfS9tYW41CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDY0NCBsaWJuc3NfbWRucy44ICR7RH0ke21hbmRpcn0vbWFuOAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9tZG5zLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bWRuc1w+Ly8nIFwKKyAgICAgICAgLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG1kbnNcM1w0XDUvJyBcCisgICAgICAgIC1pICREL2V0Yy9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisgICAgc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bWRuc1w+Ly8nIFwKKyAgICAgICAgLWUgJy9eaG9zdHM6L3MvXHMqbWRucy8vJyBcCisgICAgICAgIC1pICREL2V0Yy9uc3N3aXRjaC5jb25mCit9CisKK2luaGVyaXQgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWRucy5zZXJ2aWNlIgorCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tZG5zLnNlcnZpY2UiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vZG5zLXNkIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX21kbnMtMC4yLnNvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L25zc19tZG5zLmNvbmYiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmRuc19zZC5zbyBcCisgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZG5zX3NkLmggIgorCitGSUxFU18ke1BOfS1tYW4gKz0gIiR7bWFuZGlyfS9tYW44L21kbnNkLjggXAorICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuNS9uc3NfbWRucy5jb25mLjUgXAorICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuOC9saWJuc3NfbWRucy44IgorCitQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kZXYgJHtQTn0tbWFuICR7UE59LWRiZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL2ZpbGVzL2luaXQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9maWxlcy9pbml0CmluZGV4IDJiOGZlMTguLjQ3OTk1NDYgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL2ZpbGVzL2luaXQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvZmlsZXMvaW5pdApAQCAtMyw5ICszLDYgQEAKIAogLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKIAotdGVzdCAteCAvdXNyL3NiaW4vc25tcGQgfHwgZXhpdCAwCi10ZXN0IC14IC91c3Ivc2Jpbi9zbm1wdHJhcGQgfHwgZXhpdCAwCi0KICMgRGVmYXVsdHMKIGV4cG9ydCBNSUJESVJTPS91c3Ivc2hhcmUvc25tcC9taWJzCiBTTk1QRFJVTj15ZXMKQEAgLTE4LDYgKzE1LDkgQEAKICMgUmVhZHMgY29uZmlnIGZpbGUgaWYgZXhpc3RzICh3aWxsIG92ZXJyaWRlIGRlZmF1bHRzIGFib3ZlKQogWyAtciAvZXRjL2RlZmF1bHQvc25tcGQgXSAmJiAuIC9ldGMvZGVmYXVsdC9zbm1wZAogCitbICIkU05NUERSVU4iID0gInllcyIgXSAmJiB7IHRlc3QgLXggL3Vzci9zYmluL3NubXBkIHx8IGV4aXQgMDsgfQorWyAiJFRSQVBEUlVOIiA9ICJ5ZXMiIF0gJiYgeyB0ZXN0IC14IC91c3Ivc2Jpbi9zbm1wdHJhcGQgfHwgZXhpdCAwOyB9CisKIGNhc2UgIiQxIiBpbgogICBzdGFydCkKICAgICBlY2hvIC1uICJTdGFydGluZyBuZXR3b3JrIG1hbmFnZW1lbnQgc2VydmljZXM6IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtNS43LjItZml4LWVuZ2luZUJvb3RzLXZhbHVlLW9uLVNJR0hVUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLTUuNy4yLWZpeC1lbmdpbmVCb290cy12YWx1ZS1vbi1TSUdIVVAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZlODAzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLTUuNy4yLWZpeC1lbmdpbmVCb290cy12YWx1ZS1vbi1TSUdIVVAucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSBlNDdjNjBkYzdmNjQ5OTU5ZjYzZTU2YmM2MjM1NWRlNGJkZmQ3M2Y0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyaWFuIEZsb3JlYSA8bWFyaWFuLmZsb3JlYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMCBKdWwgMjAxNyAxNjo1NToyNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBuZXQgc25tcDogZml4IGVuZ2luZUJvb3RzIHZhbHVlIG9uIFNJR0hVUAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFyaWFuIEZsb3JlYSA8bWFyaWFuLmZsb3JlYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorLS0tCisgYWdlbnQvc25tcGQuYyAgICB8IDEgKworIHNubXBsaWIvc25tcHYzLmMgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2FnZW50L3NubXBkLmMgYi9hZ2VudC9zbm1wZC5jCitpbmRleCAwNTYwNDhhLi4xMmE3ZWExIDEwMDY0NAorLS0tIGEvYWdlbnQvc25tcGQuYworKysrIGIvYWdlbnQvc25tcGQuYworQEAgLTEyNDYsNiArMTI0Niw3IEBAIHJlY2VpdmUodm9pZCkKKyAJICAgIHNubXBfbG9nKExPR19JTkZPLCAiTkVULVNOTVAgdmVyc2lvbiAlcyByZXN0YXJ0ZWRcbiIsCisgCQkgICAgIG5ldHNubXBfZ2V0X3ZlcnNpb24oKSk7CisgICAgICAgICAgICAgdXBkYXRlX2NvbmZpZygpOworKyAgICAgICAgICAgIHNubXBfc3RvcmUoYXBwX25hbWUpOworICAgICAgICAgICAgIHNlbmRfZWFzeV90cmFwKFNOTVBfVFJBUF9FTlRFUlBSSVNFU1BFQ0lGSUMsIDMpOworICNpZiBIQVZFX1NJR0hPTEQKKyAgICAgICAgICAgICBzaWdyZWxzZShTSUdIVVApOworZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcHYzLmMgYi9zbm1wbGliL3NubXB2My5jCitpbmRleCA0MzVjYWZkLi42YWQ4MjA4IDEwMDY0NAorLS0tIGEvc25tcGxpYi9zbm1wdjMuYworKysrIGIvc25tcGxpYi9zbm1wdjMuYworQEAgLTk4NCw5ICs5ODQsOSBAQCBpbml0X3NubXB2M19wb3N0X2NvbmZpZyhpbnQgbWFqb3JpZCwgaW50IG1pbm9yaWQsIHZvaWQgKnNlcnZlcmFyZywKKyAgICAgLyoKKyAgICAgICogaWYgb3VyIGVuZ2luZUlEIGhhcyBjaGFuZ2VkIGF0IGFsbCwgdGhlIGJvb3RzIHJlY29yZCBtdXN0IGJlIHNldCB0byAxIAorICAgICAgKi8KKy0gICAgaWYgKGVuZ2luZUlETGVuICE9IG9sZEVuZ2luZUlETGVuZ3RoIHx8CisrICAgIGlmIChvbGRFbmdpbmVJRExlbmd0aCAhPSAoc2l6ZV90KTAgJiYgKGVuZ2luZUlETGVuICE9IG9sZEVuZ2luZUlETGVuZ3RoIHx8CisgICAgICAgICBvbGRFbmdpbmVJRCA9PSBOVUxMIHx8IGNfZW5naW5lSUQgPT0gTlVMTCB8fAorLSAgICAgICAgbWVtY21wKG9sZEVuZ2luZUlELCBjX2VuZ2luZUlELCBlbmdpbmVJRExlbikgIT0gMCkgeworKyAgICAgICAgbWVtY21wKG9sZEVuZ2luZUlELCBjX2VuZ2luZUlELCBlbmdpbmVJRExlbikgIT0gMCkpIHsKKyAgICAgICAgIGVuZ2luZUJvb3RzID0gMTsKKyAgICAgfQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC1maXgtZm9yLWRpc2FibGUtZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtZml4LWZvci1kaXNhYmxlLWRlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWViOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtZml4LWZvci1kaXNhYmxlLWRlcy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDI3MGU5NTJmNThhN2U1ZGRlYWJlNWExNWUzZGRhYWFkZjQwMDE3ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMiBKdW4gMjAxNyAxMDoyNTowOCArMDgwMAorU3ViamVjdDogW1BBVENIXSBuZXQtc25tcDogZml4IGZvciAtLWRpc2FibGUtZGVzCisKK0luY2x1ZGUgZGVzLmggb25seSBpZiBpdCdzIGZvdW5kIGluIG9wZW5zc2wgc28gdGhhdAordGhlIC0tZGlzYWJsZS1kZXMgd29ya3MgY29ycmVjdGx5LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldF0KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNubXBsaWIvc2NhcGkuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zbm1wbGliL3NjYXBpLmMgYi9zbm1wbGliL3NjYXBpLmMKK2luZGV4IDE2YWM4MjkuLjI3MTY4NGIgMTAwNjQ0CistLS0gYS9zbm1wbGliL3NjYXBpLmMKKysrKyBiL3NubXBsaWIvc2NhcGkuYworQEAgLTc5LDcgKzc5LDkgQEAgbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzbV9zY2FwaSwgdXNtX3N1cHBvcnQpCisgI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysjaWZkZWYgSEFWRV9PUEVOU1NMX0RFU19ICisgI2luY2x1ZGUgPG9wZW5zc2wvZGVzLmg+CisrI2VuZGlmCisgI2lmZGVmIEhBVkVfQUVTCisgI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisgI2VuZGlmCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcF81LjcuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuNy4zLmJiCmluZGV4IDJkNjg4N2UuLjg0OWFlMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuNy4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuNy4zLmJiCkBAIC0zMCw2ICszMCw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS1maXgtYS1jYy1jaGVjay1pc3N1ZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUNIQU5HRVMtQlVHLTI3MTItRml4LVBlcmwtbW9kdWxlLWNvbXBpbGF0aW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLWZpeC1pbmNvcnJlY3QtdmFyaWFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmV0LXNubXAtNS43LjItZml4LWVuZ2luZUJvb3RzLXZhbHVlLW9uLVNJR0hVUC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXQtc25tcC1maXgtZm9yLWRpc2FibGUtZGVzLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjlmNjgyYmQ3MGM3MTdlZmRkOWYxNWI2ODZkMDdiYWVlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4ZGZjNzliNjUzOWI3MWE2ZmYzMzU3NDZjZTYzZDJkYTIyMzkwNjJhZDQxODcyZmZmNDM1NGNhZmVkMDdhM2UiCkBAIC01OCw3ICs2MCw4IEBACiAgICAgICAgICAgICAgICAgLS13aXRoLWRlZmF1bHRzIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtaW5zdGFsbC1wcmVmaXg9JHtEfSBcCiAgICAgICAgICAgICAgICAgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PSR7bG9jYWxzdGF0ZWRpcn0vbGliL25ldC1zbm1wIFwKLSAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy0td2l0aC1lbmRpYW5uZXNzPWxpdHRsZScsICctLXdpdGgtZW5kaWFubmVzcz1iaWcnLCBkKX0iCisgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctLXdpdGgtZW5kaWFubmVzcz1saXR0bGUnLCAnLS13aXRoLWVuZGlhbm5lc3M9YmlnJywgZCl9IFwKKyIKIAogIyBuZXQtc25tcCBuZWVkcyB0byBoYXZlIG1pYi1tb2R1bGVzPXNtdXggZW5hYmxlZCB0byBlbmFibGUgcXVhZ2dhIHRvIHN1cHBvcnQgc25tcAogRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbWliLW1vZHVsZXM9c211eCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwLzAwMDEtbDJ0cF9hcGkuYy1pbmNsdWRlLXJwYy1jbG50LmgtZm9yLXJlc3VsdHByb2NfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwLzAwMDEtbDJ0cF9hcGkuYy1pbmNsdWRlLXJwYy1jbG50LmgtZm9yLXJlc3VsdHByb2NfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTFhOTdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvMDAwMS1sMnRwX2FwaS5jLWluY2x1ZGUtcnBjLWNsbnQuaC1mb3ItcmVzdWx0cHJvY190LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gOGYyOTlkZjRkZDFjYTg1N2UzNDg1OWMzNzdhMjliMTgzYzYzMDk2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIFNlcCAyMDE3IDEzOjA1OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGwydHBfYXBpLmM6IGluY2x1ZGUgcnBjL2NsbnQuaCBmb3IgJ3Jlc3VsdHByb2NfdCcKKworRml4ZXMKKworfCAvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjItYmVjLWxpbnV4LW11c2wvb3BlbmwydHAvMS44LXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL3RpcnBjL3JwYy9wbWFwX2NsbnQuaDo4MToxMjogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdyZXN1bHRwcm9jX3QnOyBkaWQgeW91IG1lYW4gJ3JwY3Byb2NfdCc/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgcmVzdWx0cHJvY190KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIF5+fn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIGwydHBfYXBpLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2wydHBfYXBpLmMgYi9sMnRwX2FwaS5jCitpbmRleCBmMDk0NmZkLi5mNzc4ODFjIDEwMDY0NAorLS0tIGEvbDJ0cF9hcGkuYworKysrIGIvbDJ0cF9hcGkuYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHJwYy90eXBlcy5oPgorICNpbmNsdWRlIDxycGMveGRyLmg+CisrI2luY2x1ZGUgPHJwYy9jbG50Lmg+CisgI2luY2x1ZGUgPHJwYy9wbWFwX2NsbnQuaD4KKyAvLyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgtc3lzY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LXN5c2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTE5NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LXN5c2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitjb21taXQgNmVhMzEyNWUyYmVjMTUwMDRmMzEyODE0MDIyMzM1ZDk0Y2RmN2U5NAorQXV0aG9yOiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+CitEYXRlOiAgIFdlZCBTZXAgMTkgMTE6MzQ6NDggMjAxMiAtMDQwMAorCisgICAgRml4IG9wZW5sMnRwIGNvbmZpZyBzY3JpcHQgbG9jYXRpb24KKyAgICAKKyAgICBDb3JyZWN0IHRoZSBsb2NhdGlvbiBvZiB0aGUgc3lzY29uZmlnCisgICAgc2NyaXB0LiBVc2UgL2V0Yy9kZWZhdWx0LyBpbnN0ZWFkIG9mCisgICAgL2V0Yy9zeXNjb25maWcvCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgorCisgICAgVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCisgICAgU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2V0Yy9yYy5kL2luaXQuZC9vcGVubDJ0cGQgYi9ldGMvcmMuZC9pbml0LmQvb3BlbmwydHBkCitpbmRleCA3ZjI3YmI3Li40MTk0ZjYzIDEwMDc1NQorLS0tIGEvZXRjL3JjLmQvaW5pdC5kL29wZW5sMnRwZAorKysrIGIvZXRjL3JjLmQvaW5pdC5kL29wZW5sMnRwZAorQEAgLTgsMTIgKzgsMTIgQEAKKyAjICAgICAgICAgICAgICBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgTDJUUCBWUE5zLiBBcyBhIHNlcnZlciwgaXQgY2FuIGhhbmRsZQorICMgICAgICAgICAgICAgIGh1bmRyZWRzIG9mIHR1bm5lbHMgYW5kIHNlc3Npb25zLgorICMgcHJvY2Vzc25hbWU6IG9wZW5sMnRwZAorLSMgY29uZmlnOiAvZXRjL3N5c2NvbmZpZy9vcGVubDJ0cGQKKysjIGNvbmZpZzogL2V0Yy9kZWZhdWx0L29wZW5sMnRwZAorICMgcGlkZmlsZTogL3Zhci9ydW4vb3BlbmwydHBkLnBpZAorIAorICMgU291cmNlIGZ1bmN0aW9uIGxpYnJhcnkuCisgLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKKy0uIC9ldGMvc3lzY29uZmlnL29wZW5sMnRwZAorKy4gL2V0Yy9kZWZhdWx0L29wZW5sMnRwZAorICAKKyAjIFNlZSBob3cgd2Ugd2VyZSBjYWxsZWQuCisgICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC1pbml0c2NyaXB0LWZpeC13YXJuaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhOGM1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC1pbml0c2NyaXB0LWZpeC13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK29wZW5sMnRwOiBlbGltaW5hdGUgd2FybmluZyBmcm9tIG1vZHByb2JlCisKK21vZHByb2JlIHdpbGwgZW1pdCBhbGFybWluZyB3YXJuaW5ncyBpZiBpdCBjYW5ub3QKK2ZpbmQgYSBtb2R1bGUsIGJ1dCB3ZSBvbmx5IGNhcmUgdGhhdCBpdCBmaW5kIG9uZQorb2YgdHdvIHBvc3NpYmxlIG1vZHVsZXMgd2hlbiB3ZSBzdGFydCBvcGVubDJ0cGQuCisKK1N1cHByZXNzIG1lc3NhZ2VzIGZyb20gbW9kcHJvYmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLSBhL2V0Yy9yYy5kL2luaXQuZC9vcGVubDJ0cGQKKysrKyBiL2V0Yy9yYy5kL2luaXQuZC9vcGVubDJ0cGQKK0BAIC0yOSw3ICsyOSw3IEBAIHN0YXJ0KCkgeworIAkJcmV0dXJuIDEKKyAJICAgIGZpCisgCWZpCistCW1vZHByb2JlIC1zIHBwcG9sMnRwIHx8IG1vZHByb2JlIC1zIGwydHBfcHBwCisrCW1vZHByb2JlIC1zcSBwcHBvbDJ0cCB8fCBtb2Rwcm9iZSAtc3EgbDJ0cF9wcHAKKyAJUkVUVkFMPSQ/CisgCWlmIFsgJFJFVFZBTCAtZXEgMCBdOyB0aGVuCisgCSAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tZXhlYyBvcGVubDJ0cGQgJE9QRU5MMlRQREFSR1MKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0b3AoKSB7CisgCSAgICByZXR1cm4gMTsKKyAJZmkKKyAJa2lsbHByb2Mgb3BlbmwydHBkCistCW1vZHByb2JlIC1zIC1yIHBwcG9sMnRwIHx8IG1vZHByb2JlIC1zIC1yIGwydHBfcHBwCisrCW1vZHByb2JlIC1zcnEgcHBwb2wydHAgfHwgbW9kcHJvYmUgLXNycSBsMnRwX3BwcAorIAllY2hvCisgCXJtIC1mIC92YXIvcnVuL29wZW5sMnRwZC5waWQKKyAgICAgICAgIHJtIC1mIC92YXIvbG9jay9zdWJzeXMvb3BlbmwydHBkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC9vcGVubDJ0cGQtaW5pdHNjcmlwdC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVjZDRiMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC1pbml0c2NyaXB0LWZpeC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitjb21taXQgN2M1OGExZTI0NGVhODNhOWU3YmJkNTFhNmQzNTRjZWUyNWNkYmQzMworQXV0aG9yOiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+CitEYXRlOiAgIFdlZCBTZXAgMTIgMjM6MzU6NDAgMjAxMiAtMDQwMAorCisgICAgRml4IG9wZW5sMnRwZCBpbml0c2NyaXB0CisgICAgCisgICAgLSBDb3JyZWN0IHRoZSBsb2NhdGlvbiBvZiB0aGUgcmV0dmFsIHN0YXRlbWVudC4KKyAgICAtIHVzZSBzdGFydC1zdG9wLWRhZW1vbiBpbnN0ZWFkIG9mIGRhZW1vbi4KKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+CisKKyAgICBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCisgICAgU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2V0Yy9yYy5kL2luaXQuZC9vcGVubDJ0cGQgYi9ldGMvcmMuZC9pbml0LmQvb3BlbmwydHBkCitpbmRleCBjZTIxYjUwLi43ZjI3YmI3IDEwMDc1NQorLS0tIGEvZXRjL3JjLmQvaW5pdC5kL29wZW5sMnRwZAorKysrIGIvZXRjL3JjLmQvaW5pdC5kL29wZW5sMnRwZAorQEAgLTI0LDcgKzI0LDcgQEAgc3RhcnQoKSB7CisgICAgICAgICBpZiBbIC1lIC92YXIvbG9jay9zdWJzeXMvb3BlbmwydHBkIF07IHRoZW4KKyAJICAgIGlmIFsgLWUgL3Zhci9ydW4vb3BlbmwydHBkLnBpZCBdICYmIFsgLWUgL3Byb2MvYGNhdCAvdmFyL3J1bi9vcGVubDJ0cGQucGlkYCBdOyB0aGVuCisgCQllY2hvIC1uICQiY2Fubm90IHN0YXJ0IG9wZW5sMnRwZDogb3BlbmwydHBkIGlzIGFscmVhZHkgcnVubmluZy4iOworLQkJZmFpbHVyZSAkImNhbm5vdCBzdGFydCBvcGVubDJ0cGQ6IG9wZW5sMnRwZCBhbHJlYWR5IHJ1bm5pbmcuIjsKKysJCSNmYWlsdXJlICQiY2Fubm90IHN0YXJ0IG9wZW5sMnRwZDogb3BlbmwydHBkIGFscmVhZHkgcnVubmluZy4iOworIAkJZWNobworIAkJcmV0dXJuIDEKKyAJICAgIGZpCitAQCAtMzIsOSArMzIsOSBAQCBzdGFydCgpIHsKKyAJbW9kcHJvYmUgLXMgcHBwb2wydHAgfHwgbW9kcHJvYmUgLXMgbDJ0cF9wcHAKKyAJUkVUVkFMPSQ/CisgCWlmIFsgJFJFVFZBTCAtZXEgMCBdOyB0aGVuCistCSAgICBkYWVtb24gb3BlbmwydHBkICRPUEVOTDJUUERBUkdTCisrCSAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tZXhlYyBvcGVubDJ0cGQgJE9QRU5MMlRQREFSR1MKKysgICAgICAgIFJFVFZBTD0kPworIAlmaQorLQlSRVRWQUw9JD8KKyAJZWNobworIAlpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgorIAkgICAgdG91Y2ggL3Zhci9sb2NrL3N1YnN5cy9vcGVubDJ0cGQKK0BAIC01Miw3ICs1Miw3IEBAIHN0b3AoKSB7CisgCWVjaG8gLW4gJCJTdG9wcGluZyAkcHJvZzogIgorICAgICAgICAgaWYgWyAhIC1lIC92YXIvbG9jay9zdWJzeXMvb3BlbmwydHBkIF07IHRoZW4KKyAJICAgIGVjaG8gLW4gJCJjYW5ub3Qgc3RvcCBvcGVubDJ0cGQ6IG9wZW5sMnRwZCBpcyBub3QgcnVubmluZy4iCistCSAgICBmYWlsdXJlICQiY2Fubm90IHN0b3Agb3BlbmwydHBkOiBvcGVubDJ0cGQgaXMgbm90IHJ1bm5pbmcuIgorKwkgICAgI2ZhaWx1cmUgJCJjYW5ub3Qgc3RvcCBvcGVubDJ0cGQ6IG9wZW5sMnRwZCBpcyBub3QgcnVubmluZy4iCisgCSAgICBlY2hvCisgCSAgICByZXR1cm4gMTsKKyAJZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvb3BlbmwydHBkLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IzZmFmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwL29wZW5sMnRwZC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTcgQEAKK1tVbml0XQorRGVzY3JpcHRpb249VGhlIG9wZW4gTDJUUCBpbXBsZW1lbnRhdGlvbgorQWZ0ZXI9bmV0d29yay50YXJnZXQgcmVtb3RlLWZzLnRhcmdldCBuc3MtbG9va3VwLnRhcmdldCBycGNiaW5kLnRhcmdldAorUmVxdWlyZXM9cnBjYmluZC5zZXJ2aWNlCisKK1tTZXJ2aWNlXQorVHlwZT1mb3JraW5nCitQSURGaWxlPUBTVEFURURJUkAvcnVuL29wZW5sMnRwZC5waWQKK0Vudmlyb25tZW50RmlsZT1AU1lTQ09ORkRJUkAvZGVmYXVsdC9vcGVubDJ0cGQKK0V4ZWNTdGFydFByZT1AQkFTRV9CSU5ESVJAL3NoIC1jICJAQkFTRV9TQklORElSQC9tb2Rwcm9iZSAtc3EgbDJ0cF9wcHAgfHwgQEJBU0VfU0JJTkRJUkAvbW9kcHJvYmUgLXNxIHBwcG9sMnRwIgorRXhlY1N0YXJ0PUBTQklORElSQC9vcGVubDJ0cGQgJE9QRU5MMlRQREFSR1MKK0V4ZWNTdGFydFBvc3Q9QEJBU0VfQklORElSQC9zaCAtYyAnaWYgWyAtbiAiJE9QRU5MMlRQRF9DT05GSUdfRklMRSIgXTsgdGhlbiBzbGVlcCAxOyBAQklORElSQC9sMnRwY29uZmlnIGNvbmZpZyByZXN0b3JlIGZpbGU9JE9QRU5MMlRQRF9DT05GSUdfRklMRTsgZmknCitFeGVjU3RvcFBvc3Q9QEJBU0VfQklORElSQC9zaCAtYyAiQEJBU0VfU0JJTkRJUkAvbW9kcHJvYmUgLXJzcSBsMnRwX3BwcCB8fCBAQkFTRV9TQklORElSQC9tb2Rwcm9iZSAtcnNxIHBwcG9sMnRwIgorU3VjY2Vzc0V4aXRTdGF0dXM9MQorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cF8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cF8xLjguYmIKaW5kZXggZTE2NzBiMy4uYmJkZThhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHBfMS44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwXzEuOC5iYgpAQCAtNyw4ICs3LDE1IEBACiBMMlRQIHNlcnZpY2VzIGFuZCBieSBjb3Jwb3JhdGlvbnMgdG8gaW1wbGVtZW50IEwyVFAgVlBOcy4iCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5sMnRwLm9yZy8iCiBTRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZDkyNTljYmJmMDA5NDVhZGMyNWE0NzBjMWQzNTg1IgorCisjIGNsaSBhbmQgdXNsIHVzZSBsaWNlbnNlIExHUEwtMi4xCitMSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZDkyNTljYmJmMDA5NDVhZGMyNWE0NzBjMWQzNTg1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PWY4OTcwYWJkNWVhOWJlNzAxYTBkZWVkZjVhZmQ3N2E1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NsaS9MSUNFTlNFO21kNT05YzEzODdhM2M1MjEzYWE0MDY3MTQzOGFmM2UwMDc5MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly91c2wvTElDRU5TRTttZDU9OWMxMzg3YTNjNTIxM2FhNDA2NzE0MzhhZjNlMDA3OTMgXAorICAgICAgICAgICAgICAgICAgICAiCisKIERFUEVORFMgPSAicG9wdCBmbGV4IHJlYWRsaW5lIgogCiBTUkNfVVJJID0gImZ0cDovL2Z0cC5vcGVubDJ0cC5vcmcvcmVsZWFzZXMvJHtCUH0vJHtCUH0udGFyLmd6IFwKQEAgLTIwLDE2ICsyNywyNCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMi1jbGktaW5jbHVkZS1mY250bC5oLWZvci1PX0NSRUFULWRlZmluZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNsaS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLWdldHRpbmctc2lnaGFuZGxlcl90LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbDJ0cF9hcGktSW5jbHVkZWQtbmVlZGVkLWhlYWRlcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5sMnRwZC1pbml0c2NyaXB0LWZpeC1zeXNjb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmwydHBkLWluaXRzY3JpcHQtZml4LXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmwydHBkLnNlcnZpY2UgXAogICAgICAgICAgICAiCiAKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUFkanVzdC1mb3ItbGludXgta2VybmVsLWhlYWRlcnMtYXNzdW1wdGlvbnMtb24tZ2xpYmMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi11c2VyLWlwdjYtc3RydWN0dXJlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWwydHBfYXBpLmMtaW5jbHVkZS1ycGMtY2xudC5oLWZvci1yZXN1bHRwcm9jX3QucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZTNkMDhkZWRmYjllNmE5YTFlMjRmNjc2NmY2ZGFkZDAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM5NzcwNGQ0Yjk2M2E4N2ZiYzBlNzQxNjY4ZDQ1MzA5MzM5OTE1MTVhZTlhYjBkZmZkMTFiNTQ0NGY0ODYwZiIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJvcGVubDJ0cGQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKIAogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKIENQUEZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCkBAIC01MSwzICs2NiwyMyBAQAogICAgICAgICAtZSAnczpDUFBGTEFHUy15OkNQUEZMQUdTOmcnIFwKICAgICAgICAgJHtTfS9NYWtlZmlsZQogfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ldGMvcmMuZC9pbml0LmQvb3BlbmwydHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVubDJ0cGQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ldGMvc3lzY29uZmlnL29wZW5sMnRwZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L29wZW5sMnRwZAorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BlbmwydHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3BlbmwydHBkLnNlcnZpY2UKKyAgICAgICAgc2VkIC1pIC1lICdzLEBTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyBcCisgICAgICAgICAgICAgICAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisgICAgICAgICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgICAgICAgICAtZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorICAgICAgICAgICAgICAgLWUgJ3MsQEJBU0VfU0JJTkRJUkAsJHtiYXNlX3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgICAgIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3BlbmwydHBkLnNlcnZpY2UKKyAgICBmaQorfQorCitSREVQRU5EU18ke1BOfSA9ICJwcHAgcHBwLWwydHAgYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eC8wMDAxLWluY2x1ZGUtbWlzc2luZy1zeXMtdHlwZXMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eC8wMDAxLWluY2x1ZGUtbWlzc2luZy1zeXMtdHlwZXMuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDRiZjEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4LzAwMDEtaW5jbHVkZS1taXNzaW5nLXN5cy10eXBlcy5oLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZjZjNGQyNDY4YWUwZGFkZDJmMzU2ODBkNjFiOThiMmE1OTA3NzMyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDcgSnVsIDIwMTcgMTA6MzE6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBtaXNzaW5nIHN5cy90eXBlcy5oCisKK0ZpeGVzIGVycm9ycyBzZWVuIG9uIG11c2wKK3BxdWV1ZS5oOjIxOjM6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAndV9pbnQzMl90JworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgcHF1ZXVlLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3BxdWV1ZS5oIGIvcHF1ZXVlLmgKK2luZGV4IGMzN2JhN2IuLmFlNGNjNmEgMTAwNjQ0CistLS0gYS9wcXVldWUuaAorKysrIGIvcHF1ZXVlLmgKK0BAIC0zLDYgKzMsNyBAQAorIAorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorIC8qIHdhaXQgdGhpcyBtYW55IHNlY29uZHMgZm9yIG1pc3NpbmcgcGFja2V0cyBiZWZvcmUgZm9yZ2V0dGluZyBhYm91dCB0aGVtICovCisgI2RlZmluZSBERUZBVUxUX1BBQ0tFVF9USU1FT1VUIDAuMworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4LTEuOC4wL29wdGlvbnMucHB0cCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eC9vcHRpb25zLnBwdHAKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eC0xLjguMC9vcHRpb25zLnBwdHAKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eC9vcHRpb25zLnBwdHAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eF8xLjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eF8xLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM4YjJjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkNsaWVudCBmb3IgTWljcm9zb2Z0IFBQVFAgVlBOcyIKLURFU0NSSVBUSU9OID0gIlBQVFAgQ2xpZW50IGlzIGEgTGludXgsIEZyZWVCU0QsIE5ldEJTRCBcCi0gICAgYW5kIE9wZW5CU0QgY2xpZW50IGZvciB0aGUgcHJvcHJpZXRhcnkgTWljcm9zb2Z0IFBvaW50LXRvLVBvaW50IFwKLSAgICBUdW5uZWxpbmcgUHJvdG9jb2wsIFBQVFAuIEFsbG93cyBjb25uZWN0aW9uIHRvIGEgUFBUUCBiYXNlZCBcCi0gICAgVmlydHVhbCBQcml2YXRlIE5ldHdvcmsgKFZQTikgYXMgdXNlZCBieSBlbXBsb3llcnMgYW5kIHNvbWUgXAotICAgIGNhYmxlIGFuZCBBRFNMIGludGVybmV0IHNlcnZpY2UgcHJvdmlkZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9wcHRwY2xpZW50LnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3NvdXJjZWZvcmdlL3BwdHBjbGllbnQvcHB0cC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3B0aW9ucy5wcHRwIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlZmNlOWYyNjNlMmMzZjM4ZDc5ZDlkZjIyMjQ3NmRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzOWM0MmQ5MzMyNDJhOGE2ZGQ4NjAwYTBmYTdmMGE1ZWM4ZjA2NmQxMGM0MTQ5ZDhlODFhNWM2OGZlNGJiZGEiCi0KLVMgPSAiJHtXT1JLRElSfS9wcHRwLSR7UFZ9IgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9L3BwcCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1tIDU1NSBwcHRwICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA2NDQgcHB0cC44ICR7RH0ke21hbmRpcn0vbWFuOAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3B0aW9ucy5wcHRwICR7RH0ke3N5c2NvbmZkaXJ9L3BwcAotfQotCi1SREVQRU5EU18ke1BOfSA9ICJwcHAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBjOTE3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3BwdHAtbGludXgvcHB0cC1saW51eF8xLjkuMC5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIkNsaWVudCBmb3IgTWljcm9zb2Z0IFBQVFAgVlBOcyIKK0RFU0NSSVBUSU9OID0gIlBQVFAgQ2xpZW50IGlzIGEgTGludXgsIEZyZWVCU0QsIE5ldEJTRCBcCisgICAgYW5kIE9wZW5CU0QgY2xpZW50IGZvciB0aGUgcHJvcHJpZXRhcnkgTWljcm9zb2Z0IFBvaW50LXRvLVBvaW50IFwKKyAgICBUdW5uZWxpbmcgUHJvdG9jb2wsIFBQVFAuIEFsbG93cyBjb25uZWN0aW9uIHRvIGEgUFBUUCBiYXNlZCBcCisgICAgVmlydHVhbCBQcml2YXRlIE5ldHdvcmsgKFZQTikgYXMgdXNlZCBieSBlbXBsb3llcnMgYW5kIHNvbWUgXAorICAgIGNhYmxlIGFuZCBBRFNMIGludGVybmV0IHNlcnZpY2UgcHJvdmlkZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wcHRwY2xpZW50LnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc291cmNlZm9yZ2UvcHB0cGNsaWVudC9wcHRwLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcHRpb25zLnBwdHAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLW1pc3Npbmctc3lzLXR5cGVzLmgucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMjExN2IzNzdmNjUyOTRhOTc4NmY4MGYwMjM1ZDMwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjFlOGNiZmM1NzhkM2Y1YWIxMmVlODdjNWMyYzYwNDE5YWJmZTljYzQ0NTY5MGE4YTE5YzMyMGIxMWM5MjAxIgorCitTID0gIiR7V09SS0RJUn0vcHB0cC0ke1BWfSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfSAke0R9JHtzeXNjb25mZGlyfS9wcHAgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtbSA1NTUgcHB0cCAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gNjQ0IHBwdHAuOCAke0R9JHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wdGlvbnMucHB0cCAke0R9JHtzeXNjb25mZGlyfS9wcHAKK30KKworUkRFUEVORFNfJHtQTn0gPSAicHBwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhLmluYwppbmRleCA0ZmI2NzIzLi5kZmQ2YWE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhLmluYwpAQCAtNywyMSArNywyMCBAQAogYXJvdW5kIFF1YWdnYSB0aGFuIHRoZSBjdXJyZW50IGNlbnRyYWxpc2VkIG1vZGVsIG9mIEdOVSBaZWJyYS4iCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5vbmdudS5vcmcvcXVhZ2dhLyIKIFNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEwtMi4wICYgTEdQTC0yLjAiCi1ERVBFTkRTID0gInJlYWRsaW5lIG5jdXJzZXMgcGVybC1uYXRpdmUiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAnLCAnbmV0LXNubXAnLCAnJywgZCl9IgotU05NUF9DT05GPSIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAnLCAnLS1lbmFibGUtc25tcCcsICcnLCBkKX0iCiAKKworTElDRU5TRSA9ICJHUEwtMi4wICYgTEdQTC0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04MWJjZWNlMjE3NDhjOTFiYTk5OTIzNDlhOTFlYzExZCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MDFlZjI0NDAxZGVkMzZjZDhlNWQxOGJmZTk0NzI0MGMiCiAKK0RFUEVORFMgPSAicmVhZGxpbmUgbmN1cnNlcyBwZXJsLW5hdGl2ZSBjLWFyZXMiCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAnLCAnbmV0LXNubXAnLCAnJywgZCl9IgorU05NUF9DT05GPSIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAnLCAnLS1lbmFibGUtc25tcCcsICcnLCBkKX0iCisKICMgdGhlICJpcCIgY29tbWFuZCBmcm9tIGJ1c3lib3ggaXMgbm90IHN1ZmZpY2llbnQgKGZsdXNoIGJ5IHByb3RvY29sIGZsdXNoZXMgYWxsIHJvdXRlcykKIFJERVBFTkRTXyR7UE59ICs9ICJpcHJvdXRlMiIKIAotUVVBR0dBU1VCRElSID0gIiIKLSMgJHtRVUFHR0FTVUJESVJ9IGlzIGRlYWwgd2l0aCBvbGQgdmVyc2lvbnMuIFNldCB0byAiL2F0dGljIiBmb3Igb2xkCi0jIHZlcnNpb25zIGFuZCBsZWF2ZSBpdCBlbXB0eSBmb3IgcmVjZW50IHZlcnNpb25zLgotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L3F1YWdnYSR7UVVBR0dBU1VCRElSfS9xdWFnZ2EtJHtQVn0udGFyLmd6OyBcCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vcXVhZ2dhL3F1YWdnYS0ke1BWfS50YXIuZ3o7IFwKICAgICAgICAgICAgZmlsZTovL3F1YWdnYS5pbml0IFwKICAgICAgICAgICAgZmlsZTovL3F1YWdnYS5kZWZhdWx0IFwKICAgICAgICAgICAgZmlsZTovL3dhdGNocXVhZ2dhLmluaXQgXApAQCAtMzUsNyArMzQsNyBAQAogICAgICAgICAgICBmaWxlOi8vcmlwZC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL3JpcG5nZC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL3plYnJhLnNlcnZpY2UgXAotIgorICAgICAgICAgICIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKIFBBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1jYXBhYmlsaXRpZXMsLS1kaXNhYmxlLWNhcGFiaWxpdGllcyxsaWJjYXAiCkBAIC0xMDgsMTAgKzEwNyw2IEBACiAgICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8qICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzL3ZvbGF0aWxlcy4wM19xdWFnZ2EKICAgICBzZWQgLWkgJ3MhXlBBVEg9LiohUEFUSD0ke2Jhc2Vfc2JpbmRpcn06JHtzYmluZGlyfToke2Jhc2VfYmluZGlyfToke2JpbmRpcn0hJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvKgogCi0gICAgIyBSZW1vdmUgZ2VuZXJhdGVkIGluZm8gZGlyIGZpbGUsIGl0IGRvZXNuJ3QgYmVsb25nIGluIHRoZSBnZW5lcmF0ZWQKLSAgICAjIHBhY2thZ2UuCi0gICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCi0KICAgICAjIEZvciBQQU0KICAgICBmb3IgZmVhdHVyZSBpbiAke0RJU1RST19GRUFUVVJFU307IGRvCiAgICAgICAgIGlmIFsgIiRmZWF0dXJlIiA9ICJwYW0iIF07IHRoZW4KQEAgLTE4OCw5ICsxODMsNiBAQAogREVCSUFOX05PQVVUT05BTUVfJHtQTn0tb3NwZmQgPSAiMSIKIERFQklBTl9OT0FVVE9OQU1FXyR7UE59LW9zcGZjbGllbnQgPSAiMSIKIAotIyB0aGUgImlwIiBjb21tYW5kIGZyb20gYnVzeWJveCBpcyBub3Qgc3VmZmljaWVudCAoZmx1c2ggYnkgcHJvdG9jb2wgZmx1c2hlcyBhbGwgcm91dGVzKQotUkRFUEVORFNfJHtQTn0gICAgICAgICAgKz0gImlwcm91dGUyIgotCiAjIE1haW4gaW5pdCBzY3JpcHQgc3RhcnRzIGFsbCBkZWFtb25zCiAjIFNlcGVyYXRlIGluaXQgc2NyaXB0IGZvciB3YXRjaHF1YWdnYQogSU5JVFNDUklQVF9QQUNLQUdFUyAgICAgICAgICAgICAgICAgICAgID0gIiR7UE59ICR7UE59LXdhdGNocXVhZ2dhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2FfMS4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNWMzNGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBxdWFnZ2EuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYWEzMDM4NzFlMDdlYTU4NTZhYWU2ZmQ3OWU4OTcyMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmN2E0M2E5YzU5YmZkMzcyMjAwMjIxMDUzMGIyNTUzYzhkNWNjMDViZmVhNWFjZDU2ZDRmMTAyYjlmNTVkYzYzIgotCi1RVUFHR0FTVUJESVIgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYV8xLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2FfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ0M2Q3YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2FfMS4yLjEuYmIKQEAgLTAsMCArMSw0IEBACityZXF1aXJlIHF1YWdnYS5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gImIxNTQ2ZGU4OTA2MmY3MDcwZDU2ZTc4MGIzMGJlNGIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhZGRiYTVkNGY0MWVkOGU0YzJmMTU1ZjQ1ODRjOTkzNDY1ZDEyMmM5MDk2YjViNTJhZGEzZmM3NTI2NmZiY2QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy94bDJ0cGQveGwydHBkLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3hsMnRwZC94bDJ0cGQuaW5jCmluZGV4IDZmN2Y2OTMuLmQwMzdjN2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3hsMnRwZC94bDJ0cGQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3hsMnRwZC94bDJ0cGQuaW5jCkBAIC02LDEyICs2LDkgQEAKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKIExJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKLQotSU5DX1BSID0gInIwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS94ZWxlcmFuY2UveGwydHBkLmdpdCBcCi0gICAgZmlsZTovL2ZpeC1pbmxpbmUtZnVuY3Rpb25zLWVycm9ycy13aXRoLWdjYy01LngucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZC9maXgtaW5saW5lLWZ1bmN0aW9ucy1lcnJvcnMtd2l0aC1nY2MtNS54LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZC9maXgtaW5saW5lLWZ1bmN0aW9ucy1lcnJvcnMtd2l0aC1nY2MtNS54LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzVjOTEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3hsMnRwZC94bDJ0cGQvZml4LWlubGluZS1mdW5jdGlvbnMtZXJyb3JzLXdpdGgtZ2NjLTUueC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUJhY2twb3J0IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3hlbGVyYW5jZS94bDJ0cGQvY29tbWl0LzkwOThmNjQ5NTBlYjIyY2YwNDkwNThkNDBmNjQ3YmFmZGI4MjIxNzQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gOTA5OGY2NDk1MGViMjJjZjA0OTA1OGQ0MGY2NDdiYWZkYjgyMjE3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMyBTZXAgMjAxNSAxMDo0MTowNSArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgZXJyb3JzIGNhdXNlZCBieSBpbmxpbmUgZnVuY3Rpb24gd2l0aCBnY2MgNQotCi1HQ0MgNSBkZWZhdWx0cyB0byAtc3RkPWdudTExIGluc3RlYWQgb2YgLXN0ZD1nbnU4OS4gQW5kIC1zdGQ9Z251ODkKLWVtcGxveXMgdGhlIEdOVTg5IGlubGluZSBzZW1hbnRpY3MsIC1zdGQ9Z251MTEgdXNlcyB0aGUgQzk5IGlubGluZQotc2VtYW50aWNzLgotCi1Gb3IgJ2lubGluZScgZnVjdGlvbiwgaXQgaXMgTk9UIGV4cG9ydGVkIGJ5IEM5OS4gU28gZXJyb3IgbWVzc2FnZXMgc3VjaCBhczoKLQotfCBjb250cm9sLmM6MTcxNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY2hlY2tfY29udHJvbCcKLQotRm9yIHRoZXNlIGZ1bmN0aW9ucyB3aGljaCBpcyBub3QgcmVmZXJyZWQgYnkgb3RoZXIgY29tcGlsZSB1bml0cywgbWFrZQotdGhlbSAnc3RhdGljIGlubGluZScuCi0KLUZvciAnZXh0ZXJuIGlubGluZScgZnVuY3Rpb24sIGl0IGZhaWxzIHN1Y2ggYXM6Ci0KLXwgbWlzYy5oOjY4OjIwOiB3YXJuaW5nOiBpbmxpbmUgZnVuY3Rpb24gJ3N3YXBzJyBkZWNsYXJlZCBidXQgbmV2ZXIgZGVmaW5lZAotfCAgZXh0ZXJuIGlubGluZSB2b2lkIHN3YXBzICh2b2lkICosIGludCk7Ci18ICAgICAgICAgICAgICAgICAgICAgIF4KLQotQmVjYXVzZSBmdW5jdGlvbiBzd2FwcygpIGlzIHJlZmVycmVkIGJ5IG90aGVyIGNvbXBpbGUgdW5pdHMsIGl0IG11c3QgYmUKLWV4cG9ydGVkLiBUaGUgc2VtYW50aWNzIG9mICdleHRlcm4gaW5saW5lJyBhcmUgbm90IHNhbWUgYmV0d2VlbiBHTlU4OQotYW5kIEM5OSwgc28gcmVtb3ZlICdpbmxpbmUnIGF0dHJpYnV0ZSBmb3IgY29tcGF0aWJsZSB3aXRoIEdOVTg5LgotCi1SZWY6Ci1odHRwczovL2djYy5nbnUub3JnL2djYy01L3BvcnRpbmdfdG8uaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbnRyb2wuYyB8IDggKysrKy0tLS0KLSBtaXNjLmMgICAgfCAyICstCi0gbWlzYy5oICAgIHwgMiArLQotIG5ldHdvcmsuYyB8IDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29udHJvbC5jIGIvY29udHJvbC5jCi1pbmRleCBiMjg5MWE5Li5jNGEzOWI1IDEwMDY0NAotLS0tIGEvY29udHJvbC5jCi0rKysgYi9jb250cm9sLmMKLUBAIC0xMTQwLDcgKzExNDAsNyBAQCBpbnQgY29udHJvbF9maW5pc2ggKHN0cnVjdCB0dW5uZWwgKnQsIHN0cnVjdCBjYWxsICpjKQotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0taW5saW5lIGludCBjaGVja19jb250cm9sIChjb25zdCBzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsCi0rc3RhdGljIGlubGluZSBpbnQgY2hlY2tfY29udHJvbCAoY29uc3Qgc3RydWN0IGJ1ZmZlciAqYnVmLCBzdHJ1Y3QgdHVubmVsICp0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNhbGwgKmMpCi0gewotICAgICAvKgotQEAgLTEyNzYsNyArMTI3Niw3IEBAIGlubGluZSBpbnQgY2hlY2tfY29udHJvbCAoY29uc3Qgc3RydWN0IGJ1ZmZlciAqYnVmLCBzdHJ1Y3QgdHVubmVsICp0LAotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0taW5saW5lIGludCBjaGVja19wYXlsb2FkIChzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsCi0rc3RhdGljIGlubGluZSBpbnQgY2hlY2tfcGF5bG9hZCAoc3RydWN0IGJ1ZmZlciAqYnVmLCBzdHJ1Y3QgdHVubmVsICp0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNhbGwgKmMpCi0gewotICAgICAvKgotQEAgLTEzODIsNyArMTM4Miw3IEBAIGlubGluZSBpbnQgY2hlY2tfcGF5bG9hZCAoc3RydWN0IGJ1ZmZlciAqYnVmLCBzdHJ1Y3QgdHVubmVsICp0LAotICNlbmRpZgotICAgICByZXR1cm4gMDsKLSB9Ci0taW5saW5lIGludCBleHBhbmRfcGF5bG9hZCAoc3RydWN0IGJ1ZmZlciAqYnVmLCBzdHJ1Y3QgdHVubmVsICp0LAotK3N0YXRpYyBpbmxpbmUgaW50IGV4cGFuZF9wYXlsb2FkIChzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNhbGwgKmMpCi0gewotICAgICAvKgotQEAgLTE1NjIsNyArMTU2Miw3IEBAIHZvaWQgc2VuZF96bGIgKHZvaWQgKmRhdGEpCi0gICAgIHRvc3MgKGJ1Zik7Ci0gfQotIAotLWlubGluZSBpbnQgd3JpdGVfcGFja2V0IChzdHJ1Y3QgYnVmZmVyICpidWYsIHN0cnVjdCB0dW5uZWwgKnQsIHN0cnVjdCBjYWxsICpjLAotK3N0YXRpYyBpbmxpbmUgaW50IHdyaXRlX3BhY2tldCAoc3RydWN0IGJ1ZmZlciAqYnVmLCBzdHJ1Y3QgdHVubmVsICp0LCBzdHJ1Y3QgY2FsbCAqYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbnZlcnQpCi0gewotICAgICAvKgotZGlmZiAtLWdpdCBhL21pc2MuYyBiL21pc2MuYwotaW5kZXggMzA5MjQwMS4uYWY5MGRiZiAxMDA2NDQKLS0tLSBhL21pc2MuYwotKysrIGIvbWlzYy5jCi1AQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgZG9fcGFja2V0X2R1bXAgKHN0cnVjdCBidWZmZXIgKmJ1ZikKLSAgICAgcHJpbnRmICgifVxuIik7Ci0gfQotIAotLWlubGluZSB2b2lkIHN3YXBzICh2b2lkICpidWZfdiwgaW50IGxlbikKLSt2b2lkIHN3YXBzICh2b2lkICpidWZfdiwgaW50IGxlbikKLSB7Ci0gI2lmZGVmIF9fYWxwaGEKLSAgICAgLyogUmV2ZXJzZSBieXRlIG9yZGVyIGFscGhhIGlzIGxpdHRsZSBlbmRpYW4gc28gbGVzdCBzYXZlIGEgc3RlcC4KLWRpZmYgLS1naXQgYS9taXNjLmggYi9taXNjLmgKLWluZGV4IGFhZmRjNjIuLmNhYWI3YTEgMTAwNjQ0Ci0tLS0gYS9taXNjLmgKLSsrKyBiL21pc2MuaAotQEAgLTY1LDcgKzY1LDcgQEAgZXh0ZXJuIHZvaWQgbDJ0cF9sb2cgKGludCBsZXZlbCwgY29uc3QgY2hhciAqZm10LCAuLi4pOwotIGV4dGVybiBzdHJ1Y3QgYnVmZmVyICpuZXdfYnVmIChpbnQpOwotIGV4dGVybiB2b2lkIHVkcHB1c2hfaGFuZGxlciAoaW50KTsKLSBleHRlcm4gaW50IGFkZGZjcyAoc3RydWN0IGJ1ZmZlciAqYnVmKTsKLS1leHRlcm4gaW5saW5lIHZvaWQgc3dhcHMgKHZvaWQgKiwgaW50KTsKLStleHRlcm4gdm9pZCBzd2FwcyAodm9pZCAqLCBpbnQpOwotIGV4dGVybiB2b2lkIGRvX3BhY2tldF9kdW1wIChzdHJ1Y3QgYnVmZmVyICopOwotIGV4dGVybiB2b2lkIHN0YXR1cyAoY29uc3QgY2hhciAqZm10LCAuLi4pOwotIGV4dGVybiB2b2lkIHN0YXR1c19oYW5kbGVyIChpbnQgc2lnbmFsKTsKLWRpZmYgLS1naXQgYS9uZXR3b3JrLmMgYi9uZXR3b3JrLmMKLWluZGV4IGIxMjY4YzYuLmQzMjRhNzEgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JrLmMKLSsrKyBiL25ldHdvcmsuYwotQEAgLTEzNSw3ICsxMzUsNyBAQCBpbnQgaW5pdF9uZXR3b3JrICh2b2lkKQotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0taW5saW5lIHZvaWQgZXh0cmFjdCAodm9pZCAqYnVmLCBpbnQgKnR1bm5lbCwgaW50ICpjYWxsKQotK3N0YXRpYyBpbmxpbmUgdm9pZCBleHRyYWN0ICh2b2lkICpidWYsIGludCAqdHVubmVsLCBpbnQgKmNhbGwpCi0gewotICAgICAvKgotICAgICAgKiBFeHRyYWN0IHRoZSB0dW5uZWwgYW5kIGNhbGwgIydzLCBhbmQgZml4IHRoZSBvcmRlciBvZiB0aGUgCi1AQCAtMTU1LDcgKzE1NSw3IEBAIGlubGluZSB2b2lkIGV4dHJhY3QgKHZvaWQgKmJ1ZiwgaW50ICp0dW5uZWwsIGludCAqY2FsbCkKLSAgICAgfQotIH0KLSAKLS1pbmxpbmUgdm9pZCBmaXhfaGRyICh2b2lkICpidWYpCi0rc3RhdGljIGlubGluZSB2b2lkIGZpeF9oZHIgKHZvaWQgKmJ1ZikKLSB7Ci0gICAgIC8qCi0gICAgICAqIEZpeCB0aGUgYnl0ZSBvcmRlciBvZiB0aGUgaGVhZGVyCi0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3hsMnRwZC94bDJ0cGRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZF9naXQuYmIKaW5kZXggNDJiYzM5OC4uODhhZTVkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMveGwydHBkL3hsMnRwZF9naXQuYmIKQEAgLTIsNyArMiw3IEBACiAKICMgVGhpcyBpcyB2MS4zLjYgcGx1cyBzb21lIGNvbW1pdHMuICBUaGVyZSBpcyBubyB0YWcgZm9yIHRoaXMgY29tbWl0LgogIwotUFYgPSAiMS4zLjYrZ2l0JHtTUkNQVn0iCitQViA9ICIxLjMuOStnaXQke1NSQ1BWfSIKIAotU1JDUkVWID0gImE5NmIzNDU5NjI2MjJlYTU4NDkwOTI0MTMwNjc1ZGY2ZGIwNjJkMTEiCitTUkNSRVYgPSAiZjExNGMxMGFjNTMyMDUxYmFkZWNhMDEzMmIxNDRhMmYxNTk2ZjA0NyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXNfZ2l0LmJiCmluZGV4IDI3NGE1NWQuLmNlYzFkMWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlc19naXQuYmIKQEAgLTIzLDcgKzIzLDggQEAKIAogRVhUUkFfT0VNQUtFID0gIidCSU5ESVI9JHtzYmluZGlyfScgJ01BTkRJUj0ke21hbmRpcn0nIgogCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQogICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCiAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9hcnB0YWJsZXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXMvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtb3ZlcnJpZGUtcGFzc2VkLWNmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LW92ZXJyaWRlLXBhc3NlZC1jZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwZmFkNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXMvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtb3ZlcnJpZGUtcGFzc2VkLWNmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gMmE3MjM2ZDJhN2JiOWMzZDNjM2Y0NGViZjU5NDA0YmY3MTM0ZmNiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLURhdGU6IFR1ZSwgMTIgQXByIDIwMTYgMTE6Mzc6MjggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBkb24ndCBvdmVycmlkZSBwYXNzZWQgY2ZsYWdzCi0KLVdlIGFyZSBjb250cm9sbGluZyBkZWJ1ZyBhbmQgb3B0aW1pc2VyIGZsYWdzIGZyb20gT0UKLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNWMwMjQ1MC4uM2NmOWZjZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTQ3LDggKzE0Nyw2IEBAIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gCi0gQ0FSRVNfQ0hFQ0tfQ09NUElMRVIKLSBDQVJFU19TRVRfQ09NUElMRVJfQkFTSUNfT1BUUwotLUNBUkVTX1NFVF9DT01QSUxFUl9ERUJVR19PUFRTCi0tQ0FSRVNfU0VUX0NPTVBJTEVSX09QVElNSVpFX09QVFMKLSBDQVJFU19TRVRfQ09NUElMRVJfV0FSTklOR19PUFRTCi0gCi0gaWYgdGVzdCAiJGNvbXBpbGVyX2lkIiA9ICJJTlRFTF9VTklYX0MiOyB0aGVuCi0tLSAKLTIuOC4wLnJjMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXMvY21ha2UtaW5zdGFsbC1saWJjYXJlcy5wYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGQ0YzdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXMvY21ha2UtaW5zdGFsbC1saWJjYXJlcy5wYy5wYXRjaApAQCAtMCwwICsxLDEwNSBAQAorRnJvbSA3ZTFhZTY4NzkxNmZkNTg3OGVlNzU1YWZiZGVhNmIxMDQ5NGUwYjkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGV5IEZpcmFnbyA8YWxleGV5X2ZpcmFnb0BtZW50b3IuY29tPgorRGF0ZTogV2VkLCAyNiBKdWwgMjAxNyAyMzoyMToyNSArMDMwMAorU3ViamVjdDogW1BBVENIXSBjbWFrZTogSW5zdGFsbCBsaWJjYXJlcy5wYworCitQcmVwYXJlIGFuZCBpbnN0YWxsIGxpYmNhcmVzLnBjIGZpbGUgZHVyaW5nIGNtYWtlIGJ1aWxkLCBzbyBsaWJyYXJpZXMKK3VzaW5nIHBrZy1jb25maWcgdG8gZmluZCBsaWJjYXJlcyB3aWxsIG5vdCBmYWlsLgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgbGliY2FyZXMucGMuY21ha2VpbiB8IDIwICsrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNhcmVzLnBjLmNtYWtlaW4KKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDM2NGI2YzcuLjAwMTZiNjcgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNzMsMjEgKzE3MywyOSBAQCBBRERfREVGSU5JVElPTlMoJHtTWVNGTEFHU30pCisgCisgCisgIyBUZWxsIEMtQXJlcyBhYm91dCBsaWJyYXJpZXMgdG8gZGVwZW5kIG9uCisrIyBBbHNvIHBhc3MgdGhlc2UgbGlicmFyaWVzIHRvIHBrZy1jb25maWcgZmlsZQorK1NFVChDQVJFU19QUklWQVRFX0xJQlNfTElTVCkKKyBJRiAoSEFWRV9MSUJSRVNPTFYpCisgCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyByZXNvbHYpCisrCUxJU1QgKEFQUEVORCBDQVJFU19QUklWQVRFX0xJQlNfTElTVCAiLWxyZXNvbHYiKQorIEVORElGICgpCisgSUYgKEhBVkVfTElCTlNMKQorIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgbnNsKQorKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1sbnNsIikKKyBFTkRJRiAoKQorIElGIChIQVZFX0xJQlNPQ0tFVCkKKyAJTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHNvY2tldCkKKysJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbHNvY2tldCIpCisgRU5ESUYgKCkKKyBJRiAoSEFWRV9MSUJSVCkKKyAJTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHJ0KQorKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1scnQiKQorIEVORElGICgpCisgSUYgKFdJTjMyKQorIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgd3MyXzMyKQorKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1sd3MyXzMyIikKKyBFTkRJRiAoKQorK3N0cmluZyAoUkVQTEFDRSAiOyIgIiAiIENBUkVTX1BSSVZBVEVfTElCUyAiJHtDQVJFU19QUklWQVRFX0xJQlNfTElTVH0iKQorIAorIAorICMgV2hlbiBjaGVja2luZyBmb3Igc3ltYm9scywgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBwcm9wZXIKK0BAIC00ODksNiArNDk3LDEzIEBAIENPTkZJR1VSRV9GSUxFIChhcmVzX2J1aWxkLmguY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2FyZXNfYnVpbGQuaCkKKyAjIFdyaXRlIGFyZXNfY29uZmlnLmggY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIHRoZSBidWlsZC4KKyBDT05GSUdVUkVfRklMRSAoYXJlc19jb25maWcuaC5jbWFrZSAke1BST0pFQ1RfQklOQVJZX0RJUn0vYXJlc19jb25maWcuaCkKKyAKKysjIFBhc3MgcmVxdWlyZWQgQ0ZMQUdTIHRvIHBrZy1jb25maWcgaW4gY2FzZSBvZiBzdGF0aWMgbGlicmFyeQorK0lGIChDQVJFU19TVEFUSUMpCisrCVNFVCAoQ1BQRkxBR19DQVJFU19TVEFUSUNMSUIgIi1EQ0FSRVNfU1RBVElDTElCIikKKytFTkRJRigpCisrCisrIyBXcml0ZSBhcmVzX2NvbmZpZy5oIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgaXMgdXNlZCBvbmx5IGZvciB0aGUgYnVpbGQuCisrQ09ORklHVVJFX0ZJTEUgKGxpYmNhcmVzLnBjLmNtYWtlaW4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIEBPTkxZKQorIAorICMgVFJBTlNGT1JNX01BS0VGSUxFX0lOQworICMKK0BAIC02MjUsNiArNjQwLDEyIEBAIElGIChDQVJFU19JTlNUQUxMKQorIAlJTlNUQUxMIChGSUxFUyAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyR7UFJPSkVDVF9OQU1FfS1jb25maWcuY21ha2UiIERFU1RJTkFUSU9OICR7Q01BS0VDT05GSUdfSU5TVEFMTF9ESVJ9KQorIEVORElGICgpCisgCisrIyBwa2ctY29uZmlnIGZpbGUKKytJRiAoQ0FSRVNfSU5TVEFMTCkKKysJU0VUIChQS0dDT05GSUdfSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L3BrZ2NvbmZpZyIpCisrCUlOU1RBTEwgKEZJTEVTICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vbGliY2FyZXMucGMiIERFU1RJTkFUSU9OICR7UEtHQ09ORklHX0lOU1RBTExfRElSfSkKKytFTkRJRiAoKQorKworICMgTGVnYWN5IGNoYWluLWJ1aWxkaW5nIHZhcmlhYmxlcyAocHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgY29kZSkuCisgIyBEb24ndCB1c2UgdGhlc2UsIGV4dGVybmFsIGNvZGUgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gcmVmZXIgdG8gdGhlIGFsaWFzZXMgZGlyZWN0bHkgKGUuZy4sIENhcmVzOjpjYXJlcykuCisgU0VUIChDQVJFU19GT1VORCAxIENBQ0hFIElOVEVSTkFMICJDQVJFUyBMSUJSQVJZIEZPVU5EIikKK2RpZmYgLS1naXQgYS9saWJjYXJlcy5wYy5jbWFrZWluIGIvbGliY2FyZXMucGMuY21ha2VpbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmYyOWZlZGUKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmNhcmVzLnBjLmNtYWtlaW4KK0BAIC0wLDAgKzEsMjAgQEAKKysjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrIyBQcm9qZWN0ICAgICAgICBfX18gICAgICAgX18gXyBfIF9fIF9fXyAgX19fIAorKyMgICAgICAgICAgICAgICAvIF9ffF9fX18gLyBfYCB8ICdfXy8gXyBcLyBfX3wKKysjICAgICAgICAgICAgICB8IChffF9fX19ffCAoX3wgfCB8IHwgIF9fL1xfXyBcCisrIyAgICAgICAgICAgICAgIFxfX198ICAgICBcX18sX3xffCAgXF9fX3x8X19fLworKyMKKytwcmVmaXg9QENNQUtFX0lOU1RBTExfUFJFRklYQAorK2V4ZWNfcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BSRUZJWEAKKytsaWJkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9MSUJESVJACisraW5jbHVkZWRpcj1AQ01BS0VfSU5TVEFMTF9GVUxMX0lOQ0xVREVESVJACisrCisrTmFtZTogYy1hcmVzCisrVVJMOiBodHRwOi8vZGFuaWVsLmhheHguc2UvcHJvamVjdHMvYy1hcmVzLworK0Rlc2NyaXB0aW9uOiBhc3luY2hyb25vdXMgRE5TIGxvb2t1cCBsaWJyYXJ5CisrVmVyc2lvbjogQFZFUlNJT05ACisrUmVxdWlyZXM6IAorK1JlcXVpcmVzLnByaXZhdGU6IAorK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IEBDUFBGTEFHX0NBUkVTX1NUQVRJQ0xJQkAKKytMaWJzOiAtTCR7bGliZGlyfSAtbGNhcmVzCisrTGlicy5wcml2YXRlOiBAQ0FSRVNfUFJJVkFURV9MSUJTQAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjEyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMjhkNmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXNfMS4xMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBMRyBFbGVjdHJvbmljcywgSW5jLgotCi1TVU1NQVJZID0gImMtYXJlcyBpcyBhIEMgbGlicmFyeSB0aGF0IHJlc29sdmVzIG5hbWVzIGFzeW5jaHJvbm91c2x5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYW5pZWwuaGF4eC5zZS9wcm9qZWN0cy9jLWFyZXMvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT1mNGIwMjY4ODA4MzRlYjAxYzAzNWM1ZTVjYjQ3Y2NhYyIKLQotU1JDX1VSSSA9ICJodHRwOi8vYy1hcmVzLmhheHguc2UvZG93bmxvYWQvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LW92ZXJyaWRlLXBhc3NlZC1jZmxhZ3MucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjJjYTQ0YmUxNzE1Y2QyYzU2NjZhMTY1ZDM1Nzg4NDI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg2OTJmOTQwM2NkY2RmOTM2MTMwZTA0NWM4NDAyMTY2NTExOGVlOWJmZWE5MDVkMWE3NmYwNGQ0ZTZmMzY1ZmIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXNfMS4xMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXNfMS4xMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZTQ5N2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjEzLjAuYmIKQEAgLTAsMCArMSwyNCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBMRyBFbGVjdHJvbmljcywgSW5jLgorU1VNTUFSWSA9ICJjLWFyZXMgaXMgYSBDIGxpYnJhcnkgdGhhdCByZXNvbHZlcyBuYW1lcyBhc3luY2hyb25vdXNseS4iCitIT01FUEFHRSA9ICJodHRwOi8vZGFuaWVsLmhheHguc2UvcHJvamVjdHMvYy1hcmVzLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZjRiMDI2ODgwODM0ZWIwMWMwMzVjNWU1Y2I0N2NjYWMiCitTUkNSRVYgPSAiM2JlMTkyNDIyMWUxMzI2ZGY1MjBmODQ5OGQ3MDRhNWM0YzhkMGNjZSIKK1BWID0gIjEuMTMuMCtnaXRyJHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL2dpdGh1Yi5jb20vYy1hcmVzL2MtYXJlcy5naXQgXAorICAgIGZpbGU6Ly9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworUEFDS0FHRVMgPSsgIiR7UE59LXV0aWxzIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHNfZ2l0LmJiCmluZGV4IGVmZGE3MDcuLjNjYTViNzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHNfZ2l0LmJiCkBAIC00LDEyICs0LDEzIEBACiBMSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCiAKLVBWID0gIjYuNiIKK1BWID0gIjYuNyIKIAotU1JDUkVWID0gIjc5MjZhYWVhOThjZGM5NmI2NTQ0YjhlMjFmYjViMGI0NDIyYzM0MGQiCitTUkNSRVYgPSAiODEwMWEwNzg3MWYxODVjNzA0NGZhMmNhMjIxYjI4MmFiNDYwN2M4YiIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNhbWJhLm9yZy9jaWZzLXV0aWxzLmdpdCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKK0RFUEVORFMgKz0gImxpYnRhbGxvYyIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N1cmxwcC9jdXJscHAvZXhhbXBsZTIxLmNwcC1yZW1vdmUtZGVwcmVjYXRlZC1jb2RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N1cmxwcC9jdXJscHAvZXhhbXBsZTIxLmNwcC1yZW1vdmUtZGVwcmVjYXRlZC1jb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWU1ODNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jdXJscHAvY3VybHBwL2V4YW1wbGUyMS5jcHAtcmVtb3ZlLWRlcHJlY2F0ZWQtY29kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLWV4YW1wbGUyMS5jcHA6IHJlbW92ZSBkZXByZWNhdGVkIGNvZGUKLQotVGhlIGRlcHJlY2F0ZWQgY29kZSB3YXMgbm8gbG9uZ2VyIHVzZWQsIHNvIHJlbW92ZSBpdCB0byBhdm9pZAotY29tcGlsaW5nIGZhaWx1cmUgd2l0aCAtV2Vycm9yPXVudXNlZC1mdW5jdGlvbgotLi4uCi18IGV4YW1wbGUyMS5jcHA6NTE6ODogZXJyb3I6ICdzaXplX3Qge2Fub255bW91c306OnJlYWREYXRhKGNoYXIqLAotc2l6ZV90LCBzaXplX3QpJyBkZWZpbmVkIGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtZnVuY3Rpb25dCi18ICBzaXplX3QgcmVhZERhdGEoY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5pdGVtcykKLS4uLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZXhhbXBsZXMvZXhhbXBsZTIxLmNwcCB8IDE3IC0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTIxLmNwcCBiL2V4YW1wbGVzL2V4YW1wbGUyMS5jcHAKLS0tLSBhL2V4YW1wbGVzL2V4YW1wbGUyMS5jcHAKLSsrKyBiL2V4YW1wbGVzL2V4YW1wbGUyMS5jcHAKLUBAIC0zOSwyMyArMzksNiBAQAotICNpbmNsdWRlIDxjdXJscHAvT3B0aW9ucy5ocHA+Ci0gI2luY2x1ZGUgPGN1cmxwcC9FeGNlcHRpb24uaHBwPgotICAKLS0vKgotLSAgIGFub255bW91cyBuYW1lc3BhY2UgdG8gcHJldmVudCBuYW1lIGNsYXNoIGluIGNhc2Ugb3RoZXIgZXhhbXBsZXMgdXNpbmcgdGhlIHNhbWUgZ2xvYmFsIGVudGl0aWVzCi0tICAgd291bGQgYmUgY29tcGlsZWQgaW4gdGhlIHNhbWUgcHJvamVjdAotLSovCi0tbmFtZXNwYWNlCi0tewotLQotLWNoYXIgKmRhdGEgPSBOVUxMOwotLQotLXNpemVfdCByZWFkRGF0YShjaGFyICpidWZmZXIsIHNpemVfdCBzaXplLCBzaXplX3Qgbml0ZW1zKQotLXsKLS0gIHN0cm5jcHkoYnVmZmVyLCBkYXRhLCBzaXplICogbml0ZW1zKTsKLS0gIHJldHVybiBzaXplICogbml0ZW1zOwotLX0KLS0KLS19IC8vIG5hbWVzcGFjZQotLQotIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gewotICAgaWYoYXJnYyAhPSAzKSB7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3EuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcS5pbmMKaW5kZXggZWY3OWM1Zi4uNGY0YmJmMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcS5pbmMKQEAgLTYsOCArNiw4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLXYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIAotI2F0IGxlYXN0IHZlcnNpb25zIDIuMTUgYW5kIHByaW9yIGFyZSBtb3ZlZCB0byB0aGUgYXJjaGl2ZSBmb2xkZXIgb24gdGhlIHNlcnZlcgotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnRoZWtlbGxleXMub3JnLnVrL2Ruc21hc3EvJHtAWydhcmNoaXZlLycsICcnXVtmbG9hdChkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdKSA+IDE1XX1kbnNtYXNxLSR7UFZ9LnRhci5nejtuYW1lPWRuc21hc3EtJHtQVn0gXAorI2F0IGxlYXN0IHZlcnNpb25zIDIuNjkgYW5kIHByaW9yIGFyZSBtb3ZlZCB0byB0aGUgYXJjaGl2ZSBmb2xkZXIgb24gdGhlIHNlcnZlcgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnRoZWtlbGxleXMub3JnLnVrL2Ruc21hc3EvJHtAWydhcmNoaXZlLycsICcnXVtmbG9hdChkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdKSA+IDY5XX1kbnNtYXNxLSR7UFZ9LnRhci5nejtuYW1lPWRuc21hc3EtJHtQVn0gXAogICAgICAgICAgICBmaWxlOi8vaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly9kbnNtYXNxLmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vZG5zbWFzcS1yZXNvbHZjb25mLnNlcnZpY2UgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcS9sdWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxL2x1YS5wYXRjaAppbmRleCA5MThjMGI2Li4wOTkxZGQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxL2x1YS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxL2x1YS5wYXRjaApAQCAtMSwyOSArMSwzMCBAQAotRnJvbSAxZTViZTBhMGJjZjg1OTEzZDYzNDA4MDMwZGVjMDM4ZDM2MGE1ZmE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZTFiM2QyZDBmMTYwOGNiYTVlZmVlNzNkNmFhYzVhZDA3MDkwNDFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgogRGF0ZTogVHVlLCA5IFNlcCAyMDE0IDEwOjI0OjU4IC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CitTaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KIAogLS0tCi0gTWFrZWZpbGUgfCAgICA0ICsrLS0KKyBNYWtlZmlsZSB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBmYzM4MzkzLi5hNzlmOGJmIDEwMDY0NAoraW5kZXggNzNlYTIzZS4uZWQzZWViOSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQotQEAgLTU3LDggKzU3LDggQEAgaWRuX2NmbGFncyA9ICAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0lETiAkKFBLR19DT05GSUcpIC0KLSBpZG5fbGlicyA9ICAgICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfSUROICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYmlkbmAgCitAQCAtNTksOCArNTksOCBAQCBpZG4yX2NmbGFncyA9ICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfTElCSUROMiAkKFBLR19DT05GSQorIGlkbjJfbGlicyA9ICAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9MSUJJRE4yICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYmlkbjJgCiAgY3RfY2ZsYWdzID0gICAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0NPTk5UUkFDSyAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYm5ldGZpbHRlcl9jb25udHJhY2tgCiAgY3RfbGlicyA9ICAgICAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0NPTk5UUkFDSyAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJuZXRmaWx0ZXJfY29ubnRyYWNrYAotLWx1YV9jZmxhZ3MgPSAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9MVUFTQ1JJUFQgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsdWE1LjFgIAotLWx1YV9saWJzID0gICAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9MVUFTQ1JJUFQgJChQS0dfQ09ORklHKSAtLWxpYnMgbHVhNS4xYCAKKy1sdWFfY2ZsYWdzID0gICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfTFVBU0NSSVBUICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbHVhNS4yYCAKKy1sdWFfbGlicyA9ICAgICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfTFVBU0NSSVBUICQoUEtHX0NPTkZJRykgLS1saWJzIGx1YTUuMmAgCiArbHVhX2NmbGFncyA9ICAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0xVQVNDUklQVCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGx1YWAKICtsdWFfbGlicyA9ICAgICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfTFVBU0NSSVBUICQoUEtHX0NPTkZJRykgLS1saWJzIGx1YWAKICBuZXR0bGVfY2ZsYWdzID0gYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfRE5TU0VDICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbmV0dGxlIGhvZ3dlZWRgCiAgbmV0dGxlX2xpYnMgPSAgIGBlY2hvICQoQ09QVFMpIHwgJCh0b3ApL2JsZC9wa2ctd3JhcHBlciBIQVZFX0ROU1NFQyAkKFBLR19DT05GSUcpIC0tbGlicyBuZXR0bGUgaG9nd2VlZGAKLSBnbXBfbGlicyA9ICAgICAgYGVjaG8gJChDT1BUUykgfCAkKHRvcCkvYmxkL3BrZy13cmFwcGVyIEhBVkVfRE5TU0VDICQoUEtHX0NPTkZJRykgLS1jb3B5IC1sZ21wYAorIGdtcF9saWJzID0gICAgICBgZWNobyAkKENPUFRTKSB8ICQodG9wKS9ibGQvcGtnLXdyYXBwZXIgSEFWRV9ETlNTRUMgTk9fR01QIC0tY29weSAtbGdtcGAKIC0tIAotMS43LjkuNQorMi45LjUKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcV8yLjc2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcV8yLjc2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTU3M2Q5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3FfMi43Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBkbnNtYXNxLmluYwotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2x1YS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbZG5zbWFzcS0yLjc2Lm1kNXN1bV0gPSAiNjYxMGY4MjMzY2E4OWIxNWExYmI0N2M3ODhmZmI4NGYiCi1TUkNfVVJJW2Ruc21hc3EtMi43Ni5zaGEyNTZzdW1dID0gIjc3N2M0NzYyZDJmZWUzNzM4YTAzODA0MDFmMmQwODdiNDdmYWE0MWRiMjMxN2M2MDY2MGQ2OWFkMTBhNzZjMzIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxXzIuNzguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxXzIuNzguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQxZGM2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3FfMi43OC5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgZG5zbWFzcS5pbmMKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly9sdWEucGF0Y2ggXAorIgorCitTUkNfVVJJW2Ruc21hc3EtMi43OC5tZDVzdW1dID0gIjNiYjk3ZjI2NGM3Mzg1M2Y4MDJiZjcwNjEwMTUwNzg4IgorU1JDX1VSSVtkbnNtYXNxLTIuNzguc2hhMjU2c3VtXSA9ICJjOTJlNWQ3OGFhNjM1MzM1NGQwMmFhYmY3NDU5MGQwODk4MGJiMTM4NWQ4YTAwYjgwZWY5YmM4MDQzMGFhMWRjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RvdmVjb3QvZG92ZWNvdC8wMDAxLWRvdmVhZG0tRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RvdmVjb3QvZG92ZWNvdC8wMDAxLWRvdmVhZG0tRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YWU5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290LzAwMDEtZG92ZWFkbS1GaXgtcGFyYWxsZWwtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBiZTliMzgwOWI4NmZlNTkzZGJiMTZmMGI5ODFiM2QzMTVhMjdiNzk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjIgT2N0IDIwMTcgMjI6MTA6NDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZG92ZWFkbTogRml4IHBhcmFsbGVsIGJ1aWxkCisKK1NvbWV0aW1lcyBkb3ZldGFpbCBidWlsZCBmYWlscyB3aXRoIGVycm9ycyBsaWtlCisKK2RvdmVhZG0tdXRpbC5vOiBmaWxlIG5vdCByZWNvZ25pemVkOiBGaWxlIHRydW5jYXRlZAorY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCittYWtlWzRdOiAqKiogW01ha2VmaWxlOjgxMjogdGVzdC1kb3ZlYWRtLXV0aWxdIEVycm9yIDEKKworVGhpcyBpcyBwYXJ0aWFsIGJhY2twb3J0IGZyb20KKworaHR0cHM6Ly9naXRodWIuY29tL2RvdmVjb3QvY29yZS9jb21taXQvYjIwMGJjMzg3NWZhMDZkNDJjODYxOTg2NWNjMzA2YzMyOTdmY2FjYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2RvdmVhZG0vTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2RvdmVhZG0vTWFrZWZpbGUuYW0gYi9zcmMvZG92ZWFkbS9NYWtlZmlsZS5hbQoraW5kZXggYzY0NDY0Ni4uNmFlOTE0NCAxMDA2NDQKKy0tLSBhL3NyYy9kb3ZlYWRtL01ha2VmaWxlLmFtCisrKysgYi9zcmMvZG92ZWFkbS9NYWtlZmlsZS5hbQorQEAgLTE4MCw4ICsxODAsOCBAQCB0ZXN0X2xpYnMgPSBcCisgCS4uL2xpYi9saWJsaWIubGEKKyB0ZXN0X2RlcHMgPSAkKG5vaW5zdF9MVExJQlJBUklFUykgJCh0ZXN0X2xpYnMpCisgCistdGVzdF9kb3ZlYWRtX3V0aWxfU09VUkNFUyA9IHRlc3QtZG92ZWFkbS11dGlsLmMKKy10ZXN0X2RvdmVhZG1fdXRpbF9MREFERCA9IGRvdmVhZG0tdXRpbC5vICQodGVzdF9saWJzKSAkKE1PRFVMRV9MSUJTKQorK3Rlc3RfZG92ZWFkbV91dGlsX1NPVVJDRVMgPSBkb3ZlYWRtLXV0aWwuYyB0ZXN0LWRvdmVhZG0tdXRpbC5jCisrdGVzdF9kb3ZlYWRtX3V0aWxfTERBREQgPSAkKHRlc3RfbGlicykgJChNT0RVTEVfTElCUykKKyB0ZXN0X2RvdmVhZG1fdXRpbF9ERVBFTkRFTkNJRVMgPSAkKHRlc3RfZGVwcykKKyAKKyBjaGVjazogY2hlY2stYW0gY2hlY2stdGVzdAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RvdmVjb3QvZG92ZWNvdF8yLjIuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4yOS5iYgppbmRleCBiMmEzZGUzLi4xNjYzNDA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4yOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4yOS5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiRG92ZWNvdCBpcyBhbiBvcGVuIHNvdXJjZSBJTUFQIGFuZCBQT1AzIGVtYWlsIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmRvdmVjb3Qub3JnLyIKIERFU0NSSVBUSU9OID0gIkRvdmVjb3QgaXMgYW4gb3BlbiBzb3VyY2UgSU1BUCBhbmQgUE9QMyBlbWFpbCBzZXJ2ZXIgZm9yIExpbnV4L1VOSVgtbGlrZSBzeXN0ZW1zLCB3cml0dGVuIHdpdGggc2VjdXJpdHkgcHJpbWFyaWx5IGluIG1pbmQuIERvdmVjb3QgaXMgYW4gZXhjZWxsZW50IGNob2ljZSBmb3IgYm90aCBzbWFsbCBhbmQgbGFyZ2UgaW5zdGFsbGF0aW9ucy4gSXQncyBmYXN0LCBzaW1wbGUgdG8gc2V0IHVwLCByZXF1aXJlcyBubyBzcGVjaWFsIGFkbWluaXN0cmF0aW9uIGFuZCBpdCB1c2VzIHZlcnkgbGl0dGxlIG1lbW9yeS4iCiBTRUNUSU9OID0gIm1haWwiCiBMSUNFTlNFID0gIkxHUEx2Mi4xICYgTUlUIgpAQCAtNyw3ICs4LDkgQEAKIFNSQ19VUkkgPSAiaHR0cDovL2RvdmVjb3Qub3JnL3JlbGVhc2VzLzIuMi9kb3ZlY290LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1jb252ZXJ0LUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTkstc3RhdGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZG92ZWNvdC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2RvdmVjb3Quc29ja2V0IgorICAgICAgICAgICBmaWxlOi8vZG92ZWNvdC5zb2NrZXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kb3ZlYWRtLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImZmOTU0ODZhNWM0MzAyNWEyYzNmNWE3MTJlNzk2MmI5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5MzllYTk5MTI2ZWI4YThjNjk1NTM5MGI0MjJiNmUyN2VjMGZhNDNhM2I1OWIyYjMyMThjYjVhZDY3MTM5YTYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkL2NoZWNrX2V4aXN0ZW5jZV9vZl9tb2R1bGVzX2JlZm9yZV9pbnN0YWxsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC9jaGVja19leGlzdGVuY2Vfb2ZfbW9kdWxlc19iZWZvcmVfaW5zdGFsbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDE0ZjczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC9jaGVja19leGlzdGVuY2Vfb2ZfbW9kdWxlc19iZWZvcmVfaW5zdGFsbGluZy5wYXRjaApAQCAtMCwwICsxLDI0IEBACitJZiBDT05GSUdfQkxLX0RFVl9EUkJEIGtlcm5lbCBjb25maWcgaXMgZW5hYmxlZCwgdGhlbiBEUkJECitkb2VzIG5vdCBidWlsZCBkcmJkLmtvIGhlcmUuIFVuZGVyIHRoaXMgY2lyY3Vtc3RhbmNlIGRvX2luc3RhbGwKK3Rhc2sgaXMgZ29pbmcgdG8gZmFpbCB3aXRoIGEgYmVsb3cgZXJyb3I6CistLSBzbmlwIC0tCit8IGluc3RhbGw6IGNhbm5vdCBzdGF0IOKAmGRyYmQua2/igJk6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK3wgbWFrZVsxXTogKioqIFtpbnN0YWxsXSBFcnJvciAxCistLSBzbmlwIC0tCisKK1NvLCBjaGVjayBmb3Iga2VybmVsIG1vZHVsZSBleGlzdGVuY2UgYmVmb3JlIGluc3RhbGxpbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KKy0tLSBkcmJkLTkuMC4xLTEvZHJiZC9NYWtlZmlsZQkyMDE2LTA3LTAzIDA2OjU0OjE5LjQyMTUzODY5MCAtMDcwMAorKysrIGRyYmQtOS4wLjEtMS9kcmJkL01ha2VmaWxlX21vZAkyMDE2LTA3LTAzIDA2OjUzOjE4LjkzODgwMTYyOCAtMDcwMAorQEAgLTE1OCw3ICsxNTgsNyBAQCBlbHNlCisgCWZpCisgCWluc3RhbGwgLWQgJChERVNURElSKS9saWIvbW9kdWxlcy8kKEtFUk5FTFJFTEVBU0UpLyQoTU9EU1VCRElSKQorIAlzZXQgLWUgOyBmb3Iga28gaW4gJChNT0RPQkpTKTsgZG8gXAorLQkJaW5zdGFsbCAtbSA2NDQgJCRrbyAkKERFU1RESVIpL2xpYi9tb2R1bGVzLyQoS0VSTkVMUkVMRUFTRSkvJChNT0RTVUJESVIpOyBcCisrCQlbIC1lICQka28gXSAmJiBpbnN0YWxsIC1tIDY0NCAkJGtvICQoREVTVERJUikvbGliL21vZHVsZXMvJChLRVJORUxSRUxFQVNFKS8kKE1PRFNVQkRJUik7IFwKKyAJZG9uZQorICAgICBpZmVxICgkKERFU1RESVIpLC8pCisgICAgICAgaWZlcSAoJChzaGVsbCB1bmFtZSAtciksJChLRVJORUxSRUxFQVNFKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmRfOS4wLjgtMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmRfOS4wLjgtMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTQzZjI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZF85LjAuOC0xLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiRGlzdHJpYnV0ZWQgYmxvY2sgZGV2aWNlIGRyaXZlciBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJEUkJEIGlzIGEgYmxvY2sgZGV2aWNlIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJ1aWxkIGhpZ2ggXAorICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5IGNsdXN0ZXJzLiBUaGlzIGlzIGRvbmUgYnkgbWlycm9yaW5nIGEgd2hvbGUgXAorICAgICAgICAgICAgICAgYmxvY2sgZGV2aWNlIHZpYSAoYSBkZWRpY2F0ZWQpIG5ldHdvcmsuIFlvdSBjb3VsZCBzZWUgXAorICAgICAgICAgICAgICAgaXQgYXMgYSBuZXR3b3JrIHJhaWQtMS4iCitIT01FUEFHRSA9ICJodHRwOi8vb3NzLmxpbmJpdC5jb20vZHJiZC8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTU3NGM2OTY1YWU1ZjU4M2U1NTg4MGUzOTdmYmIwMTgiCitERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGluYml0LmNvbS9kb3dubG9hZHMvZHJiZC85LjAvZHJiZC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY2hlY2tfZXhpc3RlbmNlX29mX21vZHVsZXNfYmVmb3JlX2luc3RhbGxpbmcucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMWRkNTgwNDNmNDZlOTkyNmI1NzlhYTY1ZDRlYTk4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4N2Y3MmQ0NmRiOWJhZDkyNjQxNWIzYWI5ZjVmMTM5N2RlOGM1ODFkMmUyZWMxYWRkYmRkNWNlMjYwNGU2MTIzIgoraW5oZXJpdCBtb2R1bGUKKworRVhUUkFfT0VNQUtFICs9ICJLRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0iJHtEfSIKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9mZXRjaG1haWwvZmV0Y2htYWlsXzYuMy4yNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9mZXRjaG1haWwvZmV0Y2htYWlsXzYuMy4yNi5iYgppbmRleCAzNTk5MTFlLi4xZDc4Mjg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZmV0Y2htYWlsL2ZldGNobWFpbF82LjMuMjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi4zLjI2LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJGZXRjaG1haWwgcmV0cmlldmVzIG1haWwgZnJvbSByZW1vdGUgbWFpbCBzZXJ2ZXJzIGFuZCBmb3J3YXJkcyBpdCB2aWEgU01UUCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZmV0Y2htYWlsLmluZm8vIgogREVTQ1JJUFRJT04gPSAiRmV0Y2htYWlsIGlzIGEgZnVsbC1mZWF0dXJlZCwgcm9idXN0LCB3ZWxsLWRvY3VtZW50ZWQgcmVtb3RlLW1haWwgcmV0cmlldmFsIGFuZCBmb3J3YXJkaW5nIHV0aWxpdHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBvdmVyIG9uLWRlbWFuZCBUQ1AvSVAgbGlua3MgKHN1Y2ggYXMgU0xJUCBvciBQUFAgY29ubmVjdGlvbnMpLiBJdCBzdXBwb3J0cyBldmVyeSByZW1vdGUtbWFpbCBwcm90b2NvbCBub3cgaW4gdXNlIG9uIHRoZSBJbnRlcm5ldDogUE9QMiwgUE9QMywgUlBPUCwgQVBPUCwgS1BPUCwgYWxsIGZsYXZvcnMgb2YgSU1BUCwgRVRSTiwgYW5kIE9ETVIuIEl0IGNhbiBldmVuIHN1cHBvcnQgSVB2NiBhbmQgSVBTRUMuIgogU0VDVElPTiA9ICJtYWlsIgogTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZS0yLjIuMi9HZW9JUC5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlLTIuNC4wL0dlb0lQLmNvbmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZS0yLjIuMi9HZW9JUC5jb25mCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGUtMi40LjAvR2VvSVAuY29uZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlLTIuMi4yL2dlb2lwdXBkYXRlLmNyb24gYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGUtMi40LjAvZ2VvaXB1cGRhdGUuY3JvbgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlLTIuMi4yL2dlb2lwdXBkYXRlLmNyb24KcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZS0yLjQuMC9nZW9pcHVwZGF0ZS5jcm9uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGVfMi4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGVfMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYzkzNmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwdXBkYXRlXzIuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9udGFiIGVudHJ5IHRvIHByb3ZpZGUgd2Vla2x5IHVwZGF0ZXMgb2YgdGhlIEdlb0lQIGZyZWUgZGF0YWJhc2VzLiIKLURFU0NSSVBUSU9OID0gInVwZGF0ZSBkYXRhYmFzZXMgZm9yIEdlb0lQIgotCi1IT01FUEFHRSA9ICJodHRwOi8vZGV2Lm1heG1pbmQuY29tL2dlb2lwLyIKLVNFQ1RJT04gPSAibmV0IgotCi1ERVBFTkRTID0gInpsaWIgY3VybCIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWF4bWluZC9nZW9pcHVwZGF0ZS9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjIvZ2VvaXB1cGRhdGUtMi4yLjIudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL0dlb0lQLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vZ2VvaXB1cGRhdGUuY3JvbiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDYyODRiZDdiY2IyOThkMDc4ZDc5NGViNjMwZGFlNTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTU2YWI3NjA0MjU1YTljNjJjNGE0NDJjNzZkNDhkMDI0YWM4MTNjNjU0MjYzOWJmZmE5M2IyOGUyYTc4MTYyMSIKLQotTElDRU5TRSA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi1maWxlOi8vQ2hhbmdlTG9nLm1kO21kNT04ZWJmNmYyN2EzOTEyNWMzZDYwMGM5MDkxNGI0MDM0YSBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5kCi0gICAgaW5zdGFsbCAke1dPUktESVJ9L0dlb0lQLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9LwotICAgIGluc3RhbGwgJHtXT1JLRElSfS9nZW9pcHVwZGF0ZS5jcm9uICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLmQvCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGVfMi40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXB1cGRhdGVfMi40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UwNDViYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcHVwZGF0ZV8yLjQuMC5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIkNyb250YWIgZW50cnkgdG8gcHJvdmlkZSB3ZWVrbHkgdXBkYXRlcyBvZiB0aGUgR2VvSVAgZnJlZSBkYXRhYmFzZXMuIgorREVTQ1JJUFRJT04gPSAidXBkYXRlIGRhdGFiYXNlcyBmb3IgR2VvSVAiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9kZXYubWF4bWluZC5jb20vZ2VvaXAvIgorU0VDVElPTiA9ICJuZXQiCisKK0RFUEVORFMgPSAiemxpYiBjdXJsIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYXhtaW5kL2dlb2lwdXBkYXRlL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjQuMC9nZW9pcHVwZGF0ZS0yLjQuMC50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vR2VvSVAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9nZW9pcHVwZGF0ZS5jcm9uIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDJmOTcxMmZiODBlOGU5NzlkM2Q1NGNkYTdmNzcwNGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGI0ZTg4Y2U4ZDg0ZTljNzViYzY4MTcwNGQxOWVjNWM2M2M1NGYwMWU5NDVmNzY2OWY5N2ZiMGRmN2UxMzk1MiIKKworTElDRU5TRSA9ICJHUEx2MiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJcCitmaWxlOi8vQ2hhbmdlTG9nLm1kO21kNT0zMzQzMzdiNmVjYmI2NTA5M2JhZTY2YjNhZTIxYzhjMiBcCisiCitGSUxFU18ke1BOfSA9ICIvdXNyL3NoYXJlL0dlb0lQIFwKKyAgICAgICAgICAgICAgL2V0Yy9HZW9JUC5jb25mIFwKKyAgICAgICAgICAgICAvZXRjL2Nyb24uZC9nZW9pcHVwZGF0ZS5jcm9uIFwKKyAgICAgICAgICAgICAvdXNyL2Jpbi9nZW9pcHVwZGF0ZSBcCisiCitpbmhlcml0IGF1dG90b29scworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24uZAorICAgIGluc3RhbGwgJHtXT1JLRElSfS9HZW9JUC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS8KKyAgICBpbnN0YWxsICR7V09SS0RJUn0vZ2VvaXB1cGRhdGUuY3JvbiAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5kLworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lmZW5zbGF2ZS9pZmVuc2xhdmVfMi43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lmZW5zbGF2ZS9pZmVuc2xhdmVfMi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDI4OTIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pZmVuc2xhdmUvaWZlbnNsYXZlXzIuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29uZmlndXJlIG5ldHdvcmsgaW50ZXJmYWNlcyBmb3IgcGFyYWxsZWwgcm91dGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXhmb3VuZGF0aW9uLm9yZy9jb2xsYWJvcmF0ZS93b3JrZ3JvdXBzL25ldHdvcmtpbmcvYm9uZGluZyIKLVNFQ1RJT04gPSAibmV0IgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9NjgwN2JhODFjMDc0NGFiNTBkNzM1Yzk0NjI4YzNmNjQiCi0KLVNSQ1JFViA9ICI0MDBjNDkwZDUyYWNiMzFmMTA2NGUxYmY0ZmM5ZmNhZjM3OTE4ODhmIgotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvY29sbGFiLW1haW50L2lmZW5zbGF2ZS5naXQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2lmZW5zbGF2ZSAke0R9JHtzYmluZGlyfS8KLQotICAgIGluc3RhbGwgLW0gMDc1NSAtRCAke1N9L2RlYmlhbi9pZmVuc2xhdmUuaWYtcHJlLXVwICR7RH0ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtcHJlLXVwLmQvaWZlbnNsYXZlCi0gICAgaW5zdGFsbCAtbSAwNzU1IC1EICR7U30vZGViaWFuL2lmZW5zbGF2ZS5pZi1wb3N0LWRvd24gJHtEfSR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1wb3N0LWRvd24uZC9pZmVuc2xhdmUKLSAgICBpbnN0YWxsIC1tIDA3NTUgLUQgJHtTfS9kZWJpYW4vaWZlbnNsYXZlLmlmLXVwICR7RH0ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZC9pZmVuc2xhdmUKLSAgICBpbnN0YWxsIC1tIDA2NDQgLUQgJHtTfS9kZWJpYW4vaWZlbnNsYXZlLjggJHtEfSR7bWFuZGlyfS9tYW44L2lmZW5zbGF2ZS44Ci19Ci0KLUZJTEVTXyR7UE59LWRvY19yZW1vdmUgPSAiJHttYW5kaXJ9IgotRklMRVNfJHtQTn0gKz0gIiR7bWFuZGlyfS9tYW44L2lmZW5zbGF2ZS44IgotCi1SREVQRU5EU18ke1BOfSA9ICJtYW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaWZlbnNsYXZlL2lmZW5zbGF2ZV8yLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaWZlbnNsYXZlL2lmZW5zbGF2ZV8yLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEyOGIzNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pZmVuc2xhdmUvaWZlbnNsYXZlXzIuOS5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkNvbmZpZ3VyZSBuZXR3b3JrIGludGVyZmFjZXMgZm9yIHBhcmFsbGVsIHJvdXRpbmciCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4Zm91bmRhdGlvbi5vcmcvY29sbGFib3JhdGUvd29ya2dyb3Vwcy9uZXR3b3JraW5nL2JvbmRpbmciCitTRUNUSU9OID0gIm5ldCIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWFjYzg5ODEyOTM4Y2Y5YWQ2YjFkZWJjMzdjZWEwMjUzIgorCisKK1NSQ1JFViA9ICI0MmJmYmI5YmViOTI0NjcyY2E4NmI4NmU5Njc5YWMzZDZiODdkOTkyIgorU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvY29sbGFiLW1haW50L2lmZW5zbGF2ZS5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2lmZW5zbGF2ZSAke0R9JHtzYmluZGlyfS8KKworICAgIGluc3RhbGwgLW0gMDc1NSAtRCAke1N9L2RlYmlhbi9pZmVuc2xhdmUuaWYtcHJlLXVwICR7RH0ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtcHJlLXVwLmQvaWZlbnNsYXZlCisgICAgaW5zdGFsbCAtbSAwNzU1IC1EICR7U30vZGViaWFuL2lmZW5zbGF2ZS5pZi1wb3N0LWRvd24gJHtEfSR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1wb3N0LWRvd24uZC9pZmVuc2xhdmUKKyAgICBpbnN0YWxsIC1tIDA3NTUgLUQgJHtTfS9kZWJpYW4vaWZlbnNsYXZlLmlmLXVwICR7RH0ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZC9pZmVuc2xhdmUKKyAgICBpbnN0YWxsIC1tIDA2NDQgLUQgJHtTfS9kZWJpYW4vaWZlbnNsYXZlLjggJHtEfSR7bWFuZGlyfS9tYW44L2lmZW5zbGF2ZS44Cit9CisKK0ZJTEVTXyR7UE59LWRvY19yZW1vdmUgPSAiJHttYW5kaXJ9IgorRklMRVNfJHtQTn0gKz0gIiR7bWFuZGlyfS9tYW44L2lmZW5zbGF2ZS44IgorCitSREVQRU5EU18ke1BOfSA9ICJtYW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHMvZml4LUNWRS0yMDE2LTEwMzk2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzL2ZpeC1DVkUtMjAxNi0xMDM5Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDA3OTY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzL2ZpeC1DVkUtMjAxNi0xMDM5Ni5wYXRjaApAQCAtMCwwICsxLDIwNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvY2dpdC9wa2ctaXBzZWMtdG9vbHMvcGtnLWlwc2VjLXRvb2xzLmdpdC9wbGFpbi9kZWJpYW4vcGF0Y2hlcy9DVkUtMjAxNi0xMDM5Ni5wYXRjaD9pZD02MmFjMTI2NDhhNGViN2M1YmE1ZGJhMGY4MTk5OGQxYWNmMzEwZDhiXQorCitGaXggQ1ZFLTIwMTYtMTAzOTYuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitEZXNjcmlwdGlvbjogRml4IHJlbW90ZWx5IGV4cGxvaXRhYmxlIERvUy4gaHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDE2LTEwMzk2CitTb3VyY2U6IHZlbmRvcjsgaHR0cHM6Ly9nbmF0cy5uZXRic2Qub3JnL2NnaS1iaW4vcXVlcnktcHItc2luZ2xlLnBsP251bWJlcj01MTY4MgorQnVnLWRlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz04Njc5ODYKKworSW5kZXg6IHBrZy1pcHNlYy10b29scy9zcmMvcmFjb29uL2lzYWttcF9mcmFnLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwa2ctaXBzZWMtdG9vbHMub3JpZy9zcmMvcmFjb29uL2lzYWttcF9mcmFnLmMKKysrKyBwa2ctaXBzZWMtdG9vbHMvc3JjL3JhY29vbi9pc2FrbXBfZnJhZy5jCitAQCAtMSw0ICsxLDQgQEAKKy0vKgkkTmV0QlNEOiBpc2FrbXBfZnJhZy5jLHYgMS41IDIwMDkvMDQvMjIgMTE6MjQ6MjAgdHRlcmFzIEV4cCAkCSovCisrLyoJJE5ldEJTRDogaXNha21wX2ZyYWcuYyx2IDEuNS4zNi4xIDIwMTcvMDQvMjEgMTY6NTA6NDIgYm91eWVyIEV4cCAkCSovCisgCisgLyogSWQ6IGlzYWttcF9mcmFnLmMsdiAxLjQgMjAwNC8xMS8xMyAxNzozMTozNiBtYW51YnNkIEV4cCAqLworIAorQEAgLTE3Myw2ICsxNzMsNDMgQEAgdmVuZG9yaWRfZnJhZ19jYXAoZ2VuKQorIAlyZXR1cm4gbnRvaGwoaHBbTUQ1X0RJR0VTVF9MRU5HVEggLyBzaXplb2YoKmhwKV0pOworIH0KKyAKKytzdGF0aWMgaW50IAorK2lzYWttcF9mcmFnX2luc2VydChzdHJ1Y3QgcGgxaGFuZGxlICppcGgxLCBzdHJ1Y3QgaXNha21wX2ZyYWdfaXRlbSAqaXRlbSkKKyt7CisrCXN0cnVjdCBpc2FrbXBfZnJhZ19pdGVtICpwaXRlbSA9IE5VTEw7CisrCXN0cnVjdCBpc2FrbXBfZnJhZ19pdGVtICpjaXRlbSA9IGlwaDEtPmZyYWdfY2hhaW47CisrCisrCS8qIG5vIGZyYWcgeWV0LCBqdXN0IGluc2VydCBhdCBiZWdpbm5pbmcgb2YgbGlzdCAqLworKwlpZiAoaXBoMS0+ZnJhZ19jaGFpbiA9PSBOVUxMKSB7CisrCQlpcGgxLT5mcmFnX2NoYWluID0gaXRlbTsKKysJCXJldHVybiAwOworKwl9CisrCisrCWRvIHsKKysJCS8qIGR1cGxpY2F0ZSBmcmFnbWVudCBudW1iZXIsIGFib3J0IChDVkUtMjAxNi0xMDM5NikgKi8KKysJCWlmIChjaXRlbS0+ZnJhZ19udW0gPT0gaXRlbS0+ZnJhZ19udW0pCisrCQkJcmV0dXJuIC0xOworKworKwkJLyogbmVlZCB0byBpbnNlcnQgYmVmb3JlIGN1cnJlbnQgaXRlbSAqLworKwkJaWYgKGNpdGVtLT5mcmFnX251bSA+IGl0ZW0tPmZyYWdfbnVtKSB7CisrCQkJaWYgKHBpdGVtICE9IE5VTEwpCisrCQkJCXBpdGVtLT5mcmFnX25leHQgPSBpdGVtOworKwkJCWVsc2UKKysJCQkJLyogaW5zZXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QgICovCisrCQkJCWlwaDEtPmZyYWdfY2hhaW4gPSBpdGVtOworKwkJCWl0ZW0tPmZyYWdfbmV4dCA9IGNpdGVtOworKwkJCXJldHVybiAwOworKwkJfQorKworKwkJcGl0ZW0gPSBjaXRlbTsKKysJCWNpdGVtID0gY2l0ZW0tPmZyYWdfbmV4dDsKKysJfSB3aGlsZSAoY2l0ZW0gIT0gTlVMTCk7CisrCisrCS8qIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgaW5zZXJ0ICovCisrCXBpdGVtLT5mcmFnX25leHQgPSBpdGVtOworKwlyZXR1cm4gMDsKKyt9CisrCisgaW50IAorIGlzYWttcF9mcmFnX2V4dHJhY3QoaXBoMSwgbXNnKQorIAlzdHJ1Y3QgcGgxaGFuZGxlICppcGgxOworQEAgLTIyNCwzOSArMjYxLDQzIEBAIGlzYWttcF9mcmFnX2V4dHJhY3QoaXBoMSwgbXNnKQorIAlpdGVtLT5mcmFnX25leHQgPSBOVUxMOworIAlpdGVtLT5mcmFnX3BhY2tldCA9IGJ1ZjsKKyAKKy0JLyogTG9vayBmb3IgdGhlIGxhc3QgZnJhZyB3aGlsZSBpbnNlcnRpbmcgdGhlIG5ldyBpdGVtIGluIHRoZSBjaGFpbiAqLworLQlpZiAoaXRlbS0+ZnJhZ19sYXN0KQorLQkJbGFzdF9mcmFnID0gaXRlbS0+ZnJhZ19udW07CisrCS8qIENoZWNrIGZvciB0aGUgbGFzdCBmcmFnIGJlZm9yZSBpbnNlcnRpbmcgdGhlIG5ldyBpdGVtIGluIHRoZSBjaGFpbiAqLworKwlpZiAoaXRlbS0+ZnJhZ19sYXN0KSB7CisrCQkvKiBpZiB3ZSBoYXZlIHRoZSBsYXN0IGZyYWdtZW50LCBpbmRpY2VzIG11c3QgbWF0Y2ggKi8KKysJCWlmIChpcGgxLT5mcmFnX2xhc3RfaW5kZXggIT0gMCAmJgorKwkJICAgIGl0ZW0tPmZyYWdfbGFzdCAhPSBpcGgxLT5mcmFnX2xhc3RfaW5kZXgpIHsKKysJCQlwbG9nKExMVl9FUlJPUiwgTE9DQVRJT04sIE5VTEwsCisrCQkJICAgICAiUmVwZWF0ZWQgbGFzdCBmcmFnbWVudCBpbmRleCBtaXNtYXRjaFxuIik7CisrCQkJcmFjb29uX2ZyZWUoaXRlbSk7CisrCQkJdmZyZWUoYnVmKTsKKysJCQlyZXR1cm4gLTE7CisrCQl9CisgCistCWlmIChpcGgxLT5mcmFnX2NoYWluID09IE5VTEwpIHsKKy0JCWlwaDEtPmZyYWdfY2hhaW4gPSBpdGVtOworLQl9IGVsc2UgeworLQkJc3RydWN0IGlzYWttcF9mcmFnX2l0ZW0gKmN1cnJlbnQ7CisrCQlsYXN0X2ZyYWcgPSBpcGgxLT5mcmFnX2xhc3RfaW5kZXggPSBpdGVtLT5mcmFnX251bTsKKysJfQorIAorLQkJY3VycmVudCA9IGlwaDEtPmZyYWdfY2hhaW47CistCQl3aGlsZSAoY3VycmVudC0+ZnJhZ19uZXh0KSB7CistCQkJaWYgKGN1cnJlbnQtPmZyYWdfbGFzdCkKKy0JCQkJbGFzdF9mcmFnID0gaXRlbS0+ZnJhZ19udW07CistCQkJY3VycmVudCA9IGN1cnJlbnQtPmZyYWdfbmV4dDsKKy0JCX0KKy0JCWN1cnJlbnQtPmZyYWdfbmV4dCA9IGl0ZW07CisrCS8qIGluc2VydCBmcmFnbWVudCBpbnRvIGNoYWluICovCisrCWlmIChpc2FrbXBfZnJhZ19pbnNlcnQoaXBoMSwgaXRlbSkgPT0gLTEpIHsKKysJCXBsb2coTExWX0VSUk9SLCBMT0NBVElPTiwgTlVMTCwKKysJCSAgICAiUmVwZWF0ZWQgZnJhZ21lbnQgaW5kZXggbWlzbWF0Y2hcbiIpOworKwkJcmFjb29uX2ZyZWUoaXRlbSk7CisrCQl2ZnJlZShidWYpOworKwkJcmV0dXJuIC0xOworIAl9CisgCistCS8qIElmIHdlIHNhdyB0aGUgbGFzdCBmcmFnLCBjaGVjayBpZiB0aGUgY2hhaW4gaXMgY29tcGxldGUgKi8KKysJLyogSWYgd2Ugc2F3IHRoZSBsYXN0IGZyYWcsIGNoZWNrIGlmIHRoZSBjaGFpbiBpcyBjb21wbGV0ZQorKwkgKiB3ZSBoYXZlIGEgc29ydGVkIGxpc3Qgbm93LCBzbyBqdXN0IHdhbGsgdGhyb3VnaCAqLworIAlpZiAobGFzdF9mcmFnICE9IDApIHsKKysJCWl0ZW0gPSBpcGgxLT5mcmFnX2NoYWluOworIAkJZm9yIChpID0gMTsgaSA8PSBsYXN0X2ZyYWc7IGkrKykgeworLQkJCWl0ZW0gPSBpcGgxLT5mcmFnX2NoYWluOworLQkJCWRvIHsKKy0JCQkJaWYgKGl0ZW0tPmZyYWdfbnVtID09IGkpCistCQkJCQlicmVhazsKKy0JCQkJaXRlbSA9IGl0ZW0tPmZyYWdfbmV4dDsKKy0JCQl9IHdoaWxlIChpdGVtICE9IE5VTEwpOworLQorKwkJCWlmIChpdGVtLT5mcmFnX251bSAhPSBpKQorKwkJCQlicmVhazsKKysJCQlpdGVtID0gaXRlbS0+ZnJhZ19uZXh0OworIAkJCWlmIChpdGVtID09IE5VTEwpIC8qIE5vdCBmb3VuZCAqLworIAkJCQlicmVhazsKKyAJCX0KKyAKKy0JCWlmIChpdGVtICE9IE5VTEwpIC8qIEl0IGlzIGNvbXBsZXRlICovCisrCQlpZiAoaSA+IGxhc3RfZnJhZykgLyogSXQgaXMgY29tcGxldGUgKi8KKyAJCQlyZXR1cm4gMTsKKyAJfQorIAkJCitAQCAtMjkxLDE1ICszMzIsOSBAQCBpc2FrbXBfZnJhZ19yZWFzc2VtYmx5KGlwaDEpCisgCX0KKyAJZGF0YSA9IGJ1Zi0+djsKKyAKKysJaXRlbSA9IGlwaDEtPmZyYWdfY2hhaW47CisgCWZvciAoaSA9IDE7IGkgPD0gZnJhZ19jb3VudDsgaSsrKSB7CistCQlpdGVtID0gaXBoMS0+ZnJhZ19jaGFpbjsKKy0JCWRvIHsKKy0JCQlpZiAoaXRlbS0+ZnJhZ19udW0gPT0gaSkKKy0JCQkJYnJlYWs7CistCQkJaXRlbSA9IGl0ZW0tPmZyYWdfbmV4dDsKKy0JCX0gd2hpbGUgKGl0ZW0gIT0gTlVMTCk7CistCistCQlpZiAoaXRlbSA9PSBOVUxMKSB7CisrCQlpZiAoaXRlbS0+ZnJhZ19udW0gIT0gaSkgeworIAkJCXBsb2coTExWX0VSUk9SLCBMT0NBVElPTiwgTlVMTCwgCisgCQkJICAgICJNaXNzaW5nIGZyYWdtZW50ICMlZFxuIiwgaSk7CisgCQkJdmZyZWUoYnVmKTsKK0BAIC0zMDgsNiArMzQzLDcgQEAgaXNha21wX2ZyYWdfcmVhc3NlbWJseShpcGgxKQorIAkJfQorIAkJbWVtY3B5KGRhdGEsIGl0ZW0tPmZyYWdfcGFja2V0LT52LCBpdGVtLT5mcmFnX3BhY2tldC0+bCk7CisgCQlkYXRhICs9IGl0ZW0tPmZyYWdfcGFja2V0LT5sOworKwkJaXRlbSA9IGl0ZW0tPmZyYWdfbmV4dDsKKyAJfQorIAorIG91dDoKK0luZGV4OiBwa2ctaXBzZWMtdG9vbHMvc3JjL3JhY29vbi9pc2FrbXBfaW5mLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwa2ctaXBzZWMtdG9vbHMub3JpZy9zcmMvcmFjb29uL2lzYWttcF9pbmYuYworKysrIHBrZy1pcHNlYy10b29scy9zcmMvcmFjb29uL2lzYWttcF9pbmYuYworQEAgLTcyMCw2ICs3MjAsNyBAQCBpc2FrbXBfaW5mb19zZW5kX254KGlzYWttcCwgcmVtb3RlLCBsb2NhCisgI2VuZGlmCisgI2lmZGVmIEVOQUJMRV9GUkFHCisgCWlwaDEtPmZyYWcgPSAwOworKwlpcGgxLT5mcmFnX2xhc3RfaW5kZXggPSAwOworIAlpcGgxLT5mcmFnX2NoYWluID0gTlVMTDsKKyAjZW5kaWYKKyAKK0luZGV4OiBwa2ctaXBzZWMtdG9vbHMvc3JjL3JhY29vbi9pc2FrbXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBrZy1pcHNlYy10b29scy5vcmlnL3NyYy9yYWNvb24vaXNha21wLmMKKysrKyBwa2ctaXBzZWMtdG9vbHMvc3JjL3JhY29vbi9pc2FrbXAuYworQEAgLTEwNzIsNiArMTA3Miw3IEBAIGlzYWttcF9waDFiZWdpbl9pKHJtY29uZiwgcmVtb3RlLCBsb2NhbCkKKyAJCWlwaDEtPmZyYWcgPSAxOworIAllbHNlCisgCQlpcGgxLT5mcmFnID0gMDsKKysJaXBoMS0+ZnJhZ19sYXN0X2luZGV4ID0gMDsKKyAJaXBoMS0+ZnJhZ19jaGFpbiA9IE5VTEw7CisgI2VuZGlmCisgCWlwaDEtPmFwcHJvdmFsID0gTlVMTDsKK0BAIC0xMTc2LDYgKzExNzcsNyBAQCBpc2FrbXBfcGgxYmVnaW5fcihtc2csIHJlbW90ZSwgbG9jYWwsIGV0CisgI2VuZGlmCisgI2lmZGVmIEVOQUJMRV9GUkFHCisgCWlwaDEtPmZyYWcgPSAwOworKwlpcGgxLT5mcmFnX2xhc3RfaW5kZXggPSAwOworIAlpcGgxLT5mcmFnX2NoYWluID0gTlVMTDsKKyAjZW5kaWYKKyAJaXBoMS0+YXBwcm92YWwgPSBOVUxMOworSW5kZXg6IHBrZy1pcHNlYy10b29scy9zcmMvcmFjb29uL2hhbmRsZXIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBrZy1pcHNlYy10b29scy5vcmlnL3NyYy9yYWNvb24vaGFuZGxlci5oCisrKysgcGtnLWlwc2VjLXRvb2xzL3NyYy9yYWNvb24vaGFuZGxlci5oCitAQCAtMSw0ICsxLDQgQEAKKy0vKgkkTmV0QlNEOiBoYW5kbGVyLmgsdiAxLjI1IDIwMTAvMTEvMTcgMTA6NDA6NDEgdHRlcmFzIEV4cCAkCSovCisrLyoJJE5ldEJTRDogaGFuZGxlci5oLHYgMS4yNiAyMDE3LzAxLzI0IDE5OjIzOjU2IGNocmlzdG9zIEV4cCAkCSovCisgCisgLyogSWQ6IGhhbmRsZXIuaCx2IDEuMTkgMjAwNi8wMi8yNSAwODoyNToxMiBtYW51YnNkIEV4cCAqLworIAorQEAgLTE0MSw2ICsxNDEsNyBAQCBzdHJ1Y3QgcGgxaGFuZGxlIHsKKyAjZW5kaWYKKyAjaWZkZWYgRU5BQkxFX0ZSQUcKKyAJaW50IGZyYWc7CQkJLyogSUtFIHBoYXNlIDEgZnJhZ21lbnRhdGlvbiAqLworKwlpbnQgZnJhZ19sYXN0X2luZGV4OworIAlzdHJ1Y3QgaXNha21wX2ZyYWdfaXRlbSAqZnJhZ19jaGFpbjsJLyogUmVjZWl2ZWQgZnJhZ21lbnRzICovCisgI2VuZGlmCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHNfMC44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHNfMC44LjIuYmIKaW5kZXggZDdlOGIyNS4uNWNiZWIxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzXzAuOC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHNlYy10b29scy9pcHNlYy10b29sc18wLjguMi5iYgpAQCAtMjQsNiArMjQsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1oZWFkZXItaXNzdWVzLWZvdW5kLXdpdGgtbXVzbC1saWJjLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItY2ZwYXJzZS1jbGVhci1tZW1vcnktZXF1YWwtdG8tc2l6ZS1vZi1hcnJheS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtQ1ZFLTIwMTYtMTAzOTYucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZDUzZWMxNGEwYTNlY2U2NGUwOWU1ZTM0YjMzNTBiNDEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGViNmIzODcxNmUyZjNhOGE3MmYxZjU0OWM5NDQ0YzJiYzI4ZDUyYzk1MzY3OTI2OTA1NjRjNzRmZTcyMmYyZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG1fMS4yNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG1fMS4yNi5iYgppbmRleCA4ZDFiM2YwLi5iMzVhOWY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXB2c2FkbS9pcHZzYWRtXzEuMjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwdnNhZG0vaXB2c2FkbV8xLjI2LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJMaW51eCBWaXJ0dWFsIFNlcnZlciBhZG1pbmlzdHJhdGlvbiBVdGlsaXR5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC12cy5vcmcvc29mdHdhcmUvaW5kZXguaHRtbCIKIERFU0NSSVBUSU9OID0gIklwdnNhZG0gIGlzICB1c2VkICB0byBzZXQgdXAsIG1haW50YWluIG9yIGluc3BlY3QgdGhlIHZpcnR1YWwgc2VydmVyIFwKIHRhYmxlIGluIHRoZSBMaW51eCBrZXJuZWwuIFRoZSBMaW51eCBWaXJ0dWFsICBTZXJ2ZXIgIGNhbiAgYmUgIHVzZWQgIHRvIFwKIGJ1aWxkICBzY2FsYWJsZSAgbmV0d29yayAgc2VydmljZXMgIGJhc2VkICBvbiAgYSBjbHVzdGVyIG9mIHR3byBvciBtb3JlIG5vZGVzLiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGliZXNtdHAvbGliZXNtdHAvc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGliZXNtdHAvbGliZXNtdHAvc25wcmludGYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBkMjAzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJlc210cC9saWJlc210cC9zbnByaW50Zi5wYXRjaApAQCAtMCwwICsxLDE5IEBACitVc2UgSEFWRV9XT1JLSU5HX1NOUFJJTlRGIHRvIGNoZWNrIGZvciBzbnByaW50ZigpCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogbGliZXNtdHAtMS4wLjYvbWlzc2luZy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliZXNtdHAtMS4wLjYub3JpZy9taXNzaW5nLmgKKysrKyBsaWJlc210cC0xLjAuNi9taXNzaW5nLmgKK0BAIC00Myw3ICs0Myw3IEBAIGludCBzdHJuY2FzZWNtcCAoY29uc3QgY2hhciAqYSwgY29uc3QgY2gKKyB2b2lkICptZW1yY2hyIChjb25zdCB2b2lkICphLCBpbnQgYywgc2l6ZV90IGxlbik7CisgI2VuZGlmCisgCistI2lmbmRlZiBIQVZFX1NOUFJJTlRGCisrI2lmbmRlZiBIQVZFX1dPUktJTkdfU05QUklOVEYKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgaW50IHNucHJpbnRmKGNoYXIgKnMsIHNpemVfdCBuLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGliZXNtdHAvbGliZXNtdHBfMS4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGliZXNtdHAvbGliZXNtdHBfMS4wLjYuYmIKaW5kZXggN2RkZjU5MS4uNzFjNWQ5NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmVzbXRwL2xpYmVzbXRwXzEuMC42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJlc210cC9saWJlc210cF8xLjAuNi5iYgpAQCAtOSw3ICs5LDkgQEAKIERFUEVORFMgPSAib3BlbnNzbCIKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LnN0YWZmb3JkLnVrbGludXgubmV0L2xpYmVzbXRwL2xpYmVzbXRwLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS10b3BkaXIucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlLXRvcGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi5wYXRjaCBcCisgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImJmMzkxNWU2MjdmZDhmMzU1MjRhOGZkZmVlZDk3OWM4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwYTYxYTVjNTJkOTlmYTdjZTdkMDBlZDBhMDdlMzQxZGJkYTY3MTAxZGJlZDFhYjBjZGFlM2YzN2RiNGViMGIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiL3RkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2gKaW5kZXggNDAwMDU1Ny4uMjcyOTIxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2gKQEAgLTEsNyArMSwxMCBAQAotRnJvbSAxMGFjNWU1ZmRkYTQ0YWRjYzJhMTU5YjZmOWEyZDUxYTUxMzYxMDU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjEgU2VwIDIwMTYgMTA6NDY6MTkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGRiOiBBZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yIHBhY2thZ2VzCitGcm9tIDI0OTExZjM2YmNiMDA0MTJlNWRjNGNkMTFmZGExMzllMDlkNTg3OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+CitEYXRlOiBUdWUsIDEgQXVnIDIwMTcgMDM6MTI6MDkgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gRnJvbSAxMGFjNWU1ZmRkYTQ0YWRjYzJhMTU5YjZmOWEyZDUxYTUxMzYxMDU3IE1vbiBTZXAgMTcKKyAwMDowMDowMCAyMDAxIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+IERhdGU6IFdlZCwgMjEKKyBTZXAgMjAxNiAxMDo0NjoxOSArMDgwMCBTdWJqZWN0OiBbUEFUQ0hdIHRkYjogQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvcgorIHBhY2thZ2VzCiAKIEFkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBwYWNrYWdlczoKICAtIGFjbApAQCAtMTQsNiArMTcsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UgZGV0ZXJtaW5pc3RpYyBidWlsZCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKworVXBkYXRlIGZvciBsaWJ0ZGJfMS4zLjE0LgorCitTaWduZWQtb2ZmLWJ5OiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+CiAtLS0KICBsaWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUgfCAgNiArKy0KICBsaWIvcmVwbGFjZS93c2NyaXB0ICAgICAgICAgICAgICAgICAgfCA4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KQEAgLTM3LDcgKzQ0LDcgQEAKICAKICAjIHNvbGFyaXMgdmFyaWVudHMgb2YgZ2V0WFhlbnRfcgogZGlmZiAtLWdpdCBhL2xpYi9yZXBsYWNlL3dzY3JpcHQgYi9saWIvcmVwbGFjZS93c2NyaXB0Ci1pbmRleCAxNDUzMDBkLi4zMTAwNDhjIDEwMDY0NAoraW5kZXggN2M1MGUxZC4uMTVkZjVjMyAxMDA2NDQKIC0tLSBhL2xpYi9yZXBsYWNlL3dzY3JpcHQKICsrKyBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKIEBAIC0yMyw2ICsyMyw0MSBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKQEAgLTEyNCw3ICsxMzEsNyBAQAogICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ25zc19jb21tb24uaCBuc3N3aXRjaC5oIG5zX2FwaS5oJykKICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZXh0YXR0ci5oIHN5cy9lYS5oIHN5cy9wcm9wbGlzdC5oIHN5cy9jZGVmcy5oJykKICAgICAgY29uZi5DSEVDS19IRUFERVJTKCd1dG1wLmggdXRtcHguaCBsYXN0bG9nLmgnKQotQEAgLTI0OCwxNyArMjk4LDE4IEBAIGRlZiBjb25maWd1cmUoY29uZik6CitAQCAtMjUxLDE3ICszMDEsMTggQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKICAKICAgICAgY29uZi5DSEVDS19GVU5DUygncHJjdGwgZGlybmFtZSBiYXNlbmFtZScpCiAgCkBAIC0xNTUsMjMgKzE2MiwyMyBAQAogICAgICBjb25mLkNIRUNLX0NPREUoJycnCiAgICAgICAgICAgICAgICAgIHN0cnVjdCB1Y3JlZCBjcmVkOwogZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0Ci1pbmRleCA1MGIyMjg2Li43NDhlZWYxIDEwMDY0NAoraW5kZXggMWM5NjU1YS4uOGMyMGQzYiAxMDA2NDQKIC0tLSBhL3dzY3JpcHQKICsrKyBiL3dzY3JpcHQKLUBAIC02NCw3ICs2NCwxMiBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKLSAgICAgICAgIG9wdC5hZGRfb3B0aW9uKCctLWRpc2FibGUtcHl0aG9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJkaXNhYmxlIHRoZSBweXRkYiBtb2R1bGUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2Rpc2FibGVfcHl0aG9uJywgZGVmYXVsdD1GYWxzZSkKK0BAIC02Miw3ICs2MiwxMiBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKKyAgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdGhlIHVzZSBvZiBwdGhyZWFkIHJvYnVzdCBtdXRleGVzIiksCisgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2Rpc2FibGVfdGRiX211dGV4X2xvY2tpbmcnLAorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlKQogLQotKyAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC12YWxncmluZCcsCi0rICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiZW5hYmxlIHVzZSBvZiB2YWxncmluZCIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX3ZhbGdyaW5kJykKLSsgICAgICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtdmFsZ3JpbmQnLAotKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oImRpc2FibGUgdXNlIG9mIHZhbGdyaW5kIiksCi0rICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX3ZhbGdyaW5kJywgZGVmYXVsdD1GYWxzZSkKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC12YWxncmluZCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJlbmFibGUgdXNlIG9mIHZhbGdyaW5kIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV92YWxncmluZCcpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtdmFsZ3JpbmQnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiZGlzYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV92YWxncmluZCcsIGRlZmF1bHQ9RmFsc2UpCiAgCiAgZGVmIGNvbmZpZ3VyZShjb25mKToKICAgICAgY29uZi5lbnYuZGlzYWJsZV90ZGJfbXV0ZXhfbG9ja2luZyA9IGdldGF0dHIoT3B0aW9ucy5vcHRpb25zLAogLS0gCi0yLjguMworMi43LjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS4zLjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS4zLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjU2YWM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIHRkYiBsaWJyYXJ5IgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMLTMuMCsgJiBHUEwtMy4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdG9vbHMvdGRiZHVtcC5jO2VuZGxpbmU9MTg7bWQ1PWI1OWNkNDVhYTg2MjQ1NzgxMjZhOGM5OGY0ODAxOGM0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdGRiLmg7ZW5kbGluZT0yNzttZDU9ZjViYjU0NDY0MWQzMDgxODIxYmNjMWRkNTgzMTBiZTYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RkYi90ZGItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkOTYyN2U3YWFjZDUzNWE4MjUxNDAxZjkxNGJiNjkyNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDEzNGUzMjI1M2NhYzhlMmVmZTVlMDE4NWQyMDEyM2MyMDhiY2Y2YWQxNWVkZjJmNTBkODBkYWFkZjhjMzQ4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKLVBBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKLVBBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgotUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLVMgPSAiJHtXT1JLRElSfS90ZGItJHtQVn0iCi0KLWluaGVyaXQgd2FmLXNhbWJhCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1OT05FIFwKLSAgICAgICAgICAgICAgICAgLS1idWlsdGluLWxpYnJhcmllcz1yZXBsYWNlIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCi0gICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAidGRiLXRvb2xzIHB5dGhvbi10ZGIgcHl0aG9uLXRkYi1kYmciCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCi1GSUxFU190ZGItdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19weXRob24tdGRiID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgotRklMRVNfcHl0aG9uLXRkYi1kYmcgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLy5kZWJ1Zy8qIgotUkRFUEVORFNfcHl0aG9uLXRkYiA9ICJweXRob24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjMuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjMuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyMmI5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIlRoZSB0ZGIgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly90ZGIuc2FtYmEub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0zLjArICYgR1BMLTMuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rvb2xzL3RkYmR1bXAuYztlbmRsaW5lPTE4O21kNT1iNTljZDQ1YWE4NjI0NTc4MTI2YThjOThmNDgwMThjNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3RkYi5oO2VuZGxpbmU9Mjc7bWQ1PWY1YmI1NDQ2NDFkMzA4MTgyMWJjYzFkZDU4MzEwYmU2IgorCitTUkNfVVJJID0gImh0dHBzOi8vc2FtYmEub3JnL2Z0cC90ZGIvdGRiLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGQyM2YyYmE4Y2EyYmZkY2I4MzNiYzc5ZDViNWFjNmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2E3ZDRiYjc5MjI5NDYwZGY1MzBjN2UxYzcwNjdiYTlmYjlkMzcwYWE2MWZmZjUzN2ZkYzJiZGY5MThhY2JlOSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wsLS13aXRob3V0LWFjbCxhY2wiCitQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCitQQUNLQUdFQ09ORklHW2xpYmFpb10gPSAiLS13aXRoLWxpYmFpbywtLXdpdGhvdXQtbGliYWlvLGxpYmFpbyIKK1BBQ0tBR0VDT05GSUdbbGliYnNkXSA9ICItLXdpdGgtbGliYnNkLC0td2l0aG91dC1saWJic2QsbGliYnNkIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgorCitTID0gIiR7V09SS0RJUn0vdGRiLSR7UFZ9IgorCitpbmhlcml0IHdhZi1zYW1iYQorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9Tk9ORSBcCisgICAgICAgICAgICAgICAgIC0tYnVpbHRpbi1saWJyYXJpZXM9cmVwbGFjZSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9XAorICAgICAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gInRkYi10b29scyBweXRob24tdGRiIHB5dGhvbi10ZGItZGJnIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKi5zby4qIgorRklMRVNfdGRiLXRvb2xzID0gIiR7YmluZGlyfS8qIgorRklMRVNfcHl0aG9uLXRkYiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKiIKK0ZJTEVTX3B5dGhvbi10ZGItZGJnID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8uZGVidWcvKiIKK1JERVBFTkRTX3B5dGhvbi10ZGIgPSAicHl0aG9uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnQvZG8tbm90LWNoZWNrLXhzbHRwcm9jLW1hbnBhZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnQvZG8tbm90LWNoZWNrLXhzbHRwcm9jLW1hbnBhZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2U0ZGRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZXZlbnQvbGlidGV2ZW50L2RvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLURvbid0IGNoZWNrIG1hbnBhZ2VzIGZvciB4c2x0cHJvYy4KLQotU2lnbmVkLW9mZi1ieTogQmlhbiBOYWltZW5nIDxiaWFubm1AY24uZnVqaXRzdS5jb20+Ci0KLWRpZmYgLU51cnAgdGV2ZW50LTAuOS4yMS5vcmlnL2xpYi90YWxsb2Mvd3NjcmlwdCB0ZXZlbnQtMC45LjIxL2xpYi90YWxsb2Mvd3NjcmlwdAotLS0tIHRldmVudC0wLjkuMjEub3JpZy9saWIvdGFsbG9jL3dzY3JpcHQJMjAxMy0wOS0wOCAyMToyNDoxNC4wMDAwMDAwMDAgKzA5MDAKLSsrKyB0ZXZlbnQtMC45LjIxL2xpYi90YWxsb2Mvd3NjcmlwdAkyMDE1LTA0LTI0IDE2OjI4OjA0LjA4NTAwMDIzMCArMDkwMAotQEAgLTU1LDcgKzU1LDcgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKLSAgICAgaWYgY29uZi5lbnYuc3RhbmRhbG9uZV90YWxsb2M6Ci0gICAgICAgICBjb25mLmVudi5UQUxMT0NfQ09NUEFUMSA9IE9wdGlvbnMub3B0aW9ucy5UQUxMT0NfQ09NUEFUMQotIAotLSAgICBjb25mLkNIRUNLX1hTTFRQUk9DX01BTlBBR0VTKCkKLSsgICAgY29uZi5maW5kX3Byb2dyYW0oJ3hzbHRwcm9jJywgdmFyPSdYU0xUUFJPQycpCi0gCi0gICAgIGlmIG5vdCBjb25mLmVudi5kaXNhYmxlX3B5dGhvbjoKLSAgICAgICAgICMgYWxzbyBkaXNhYmxlIGlmIHdlIGRvbid0IGhhdmUgdGhlIHB5dGhvbiBsaWJzIGluc3RhbGxlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS40LjM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS40LjM2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGMzYzllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9tZW1jYWNoZWQvbWVtY2FjaGVkXzEuNC4zNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiQSBoaWdoLXBlcmZvcm1hbmNlIG1lbW9yeSBvYmplY3QgY2FjaGluZyBzeXN0ZW0iCi1ERVNDUklQVElPTiA9ICJcCi0gbWVtY2FjaGVkIG9wdGltaXplcyBzcGVjaWZpYyBoaWdoLWxvYWQgc2VydmluZyBhcHBsaWNhdGlvbnMgdGhhdCBhcmUgZGVzaWduZWQgXAotIHRvIHRha2UgYWR2YW50YWdlIG9mIGl0cyB2ZXJzYXRpbGUgbm8tbG9ja2luZyBtZW1vcnkgYWNjZXNzIHN5c3RlbS4gQ2xpZW50cyBcCi0gYXJlIGF2YWlsYWJsZSBpbiBzZXZlcmFsIGRpZmZlcmVudCBwcm9ncmFtbWluZyBsYW5ndWFnZXMsIHRvIHN1aXQgdGhlIG5lZWRzIFwKLSBvZiB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24uIFRyYWRpdGlvbmFsbHkgdGhpcyBoYXMgYmVlbiB1c2VkIGluIG1vZF9wZXJsIFwKLSBhcHBzIHRvIGF2b2lkIHN0b3JpbmcgbGFyZ2UgY2h1bmtzIG9mIGRhdGEgaW4gQXBhY2hlIG1lbW9yeSwgYW5kIHRvIHNoYXJlIFwKLSB0aGlzIGJ1cmRlbiBhY3Jvc3Mgc2V2ZXJhbCBtYWNoaW5lcy4iCi1TRUNUSU9OID0gIndlYiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tZW1jYWNoZWQub3JnLyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZTVkZWQ3MzYzZDMzNWUxYmIxODAxM2NhMDgwNDZmZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotREVQRU5EUyArPSAibGliZXZlbnQiCi1SREVQRU5EU18ke1BOfSArPSAicGVybCBwZXJsLW1vZHVsZS1wb3NpeCBwZXJsLW1vZHVsZS1hdXRvbG9hZGVyIFwKLSAgICBwZXJsLW1vZHVsZS10aWUtaGFzaCBiYXNoIFwKLSAgICAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5tZW1jYWNoZWQub3JnL2ZpbGVzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9tZW1jYWNoZWQtYWRkLWh1Z2V0bGJmcy1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxZTAyOGZiYWI3Mjg4OTExZmNhYTVlZDJhMjE4MTdmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NzNiNmJiMjBiZjgwMjIzY2E2YTE1ZDc1ZjU3MGZiYWIzNDZhZDExZWM5ODU5NWU1YWY1ZTMzZjU0YmQ4MmQ4IgotCi0jIHNldCB0aGUgc2FtZSBDT01QQVRJQkxFX0hPU1QgYXMgbGliaHVnZXRsYmZzCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fHBvd2VycGN8cG93ZXJwYzY0fGFybSkuKi1saW51eCcKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBlbmRpYW5uZXNzID0gZC5nZXRWYXIoJ1NJVEVJTkZPX0VORElBTk5FU1MnKQotICAgIGlmIGVuZGlhbm5lc3MgPT0gJ2xlJzoKLSAgICAgICAgZC5hcHBlbmRWYXIoJ0VYVFJBX09FQ09ORicsICIgYWNfY3ZfY19lbmRpYW49bGl0dGxlIikKLSAgICBlbHNlOgotICAgICAgICBkLmFwcGVuZFZhcignRVhUUkFfT0VDT05GJywgIiBhY19jdl9jX2VuZGlhbj1iaWciKQotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1todWdldGxiZnNdID0gIi0tZW5hYmxlLWh1Z2V0bGJmcywgLS1kaXNhYmxlLWh1Z2V0bGJmcywgbGliaHVnZXRsYmZzIgotCi1pbmhlcml0IHVwZGF0ZS1yYy5kCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJtZW1jYWNoZWQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtTfS9zY3JpcHRzL21lbWNhY2hlZC1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tZW1jYWNoZWQKLSAgICBta2RpciAtcCAke0R9L3Vzci9zaGFyZS9tZW1jYWNoZWQvc2NyaXB0cwotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2NyaXB0cy9tZW1jYWNoZWQtdG9vbCAke0R9L3Vzci9zaGFyZS9tZW1jYWNoZWQvc2NyaXB0cwotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2NyaXB0cy9zdGFydC1tZW1jYWNoZWQgJHtEfS91c3Ivc2hhcmUvbWVtY2FjaGVkL3NjcmlwdHMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9tZW1jYWNoZWQvbWVtY2FjaGVkXzEuNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQzZDE3MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9tZW1jYWNoZWQvbWVtY2FjaGVkXzEuNS4wLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQSBoaWdoLXBlcmZvcm1hbmNlIG1lbW9yeSBvYmplY3QgY2FjaGluZyBzeXN0ZW0iCitERVNDUklQVElPTiA9ICJcCisgbWVtY2FjaGVkIG9wdGltaXplcyBzcGVjaWZpYyBoaWdoLWxvYWQgc2VydmluZyBhcHBsaWNhdGlvbnMgdGhhdCBhcmUgZGVzaWduZWQgXAorIHRvIHRha2UgYWR2YW50YWdlIG9mIGl0cyB2ZXJzYXRpbGUgbm8tbG9ja2luZyBtZW1vcnkgYWNjZXNzIHN5c3RlbS4gQ2xpZW50cyBcCisgYXJlIGF2YWlsYWJsZSBpbiBzZXZlcmFsIGRpZmZlcmVudCBwcm9ncmFtbWluZyBsYW5ndWFnZXMsIHRvIHN1aXQgdGhlIG5lZWRzIFwKKyBvZiB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24uIFRyYWRpdGlvbmFsbHkgdGhpcyBoYXMgYmVlbiB1c2VkIGluIG1vZF9wZXJsIFwKKyBhcHBzIHRvIGF2b2lkIHN0b3JpbmcgbGFyZ2UgY2h1bmtzIG9mIGRhdGEgaW4gQXBhY2hlIG1lbW9yeSwgYW5kIHRvIHNoYXJlIFwKKyB0aGlzIGJ1cmRlbiBhY3Jvc3Mgc2V2ZXJhbCBtYWNoaW5lcy4iCitTRUNUSU9OID0gIndlYiIKK0hPTUVQQUdFID0gImh0dHA6Ly9tZW1jYWNoZWQub3JnLyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZTVkZWQ3MzYzZDMzNWUxYmIxODAxM2NhMDgwNDZmZiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworREVQRU5EUyArPSAibGliZXZlbnQiCitSREVQRU5EU18ke1BOfSArPSAicGVybCBwZXJsLW1vZHVsZS1wb3NpeCBwZXJsLW1vZHVsZS1hdXRvbG9hZGVyIFwKKyAgICBwZXJsLW1vZHVsZS10aWUtaGFzaCBiYXNoIFwKKyAgICAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5tZW1jYWNoZWQub3JnL2ZpbGVzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tZW1jYWNoZWQtYWRkLWh1Z2V0bGJmcy1jaGVjay5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MTMyNjUxM2Y2MGQ3YmE0ODJmODEzMTk3NWNkNTVhZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMDAxZjgxMjAyNGJiNDYxYjVlNGQ3ZDA1MDZkYWFiNjNkZmY5NjE0ZWVhMjZmNDY1MzZjM2I3ZTFlNjAxYzMyIgorCisjIHNldCB0aGUgc2FtZSBDT01QQVRJQkxFX0hPU1QgYXMgbGliaHVnZXRsYmZzCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fHBvd2VycGN8cG93ZXJwYzY0fGFybSkuKi1saW51eCcKKworcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICBlbmRpYW5uZXNzID0gZC5nZXRWYXIoJ1NJVEVJTkZPX0VORElBTk5FU1MnKQorICAgIGlmIGVuZGlhbm5lc3MgPT0gJ2xlJzoKKyAgICAgICAgZC5hcHBlbmRWYXIoJ0VYVFJBX09FQ09ORicsICIgYWNfY3ZfY19lbmRpYW49bGl0dGxlIikKKyAgICBlbHNlOgorICAgICAgICBkLmFwcGVuZFZhcignRVhUUkFfT0VDT05GJywgIiBhY19jdl9jX2VuZGlhbj1iaWciKQorfQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1todWdldGxiZnNdID0gIi0tZW5hYmxlLWh1Z2V0bGJmcywgLS1kaXNhYmxlLWh1Z2V0bGJmcywgbGliaHVnZXRsYmZzIgorCitpbmhlcml0IHVwZGF0ZS1yYy5kCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJtZW1jYWNoZWQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtTfS9zY3JpcHRzL21lbWNhY2hlZC1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tZW1jYWNoZWQKKyAgICBta2RpciAtcCAke0R9L3Vzci9zaGFyZS9tZW1jYWNoZWQvc2NyaXB0cworICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2NyaXB0cy9tZW1jYWNoZWQtdG9vbCAke0R9L3Vzci9zaGFyZS9tZW1jYWNoZWQvc2NyaXB0cworICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2NyaXB0cy9zdGFydC1tZW1jYWNoZWQgJHtEfS91c3Ivc2hhcmUvbWVtY2FjaGVkL3NjcmlwdHMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2LzAwMDEtYXV0b2dlbi1Eby1ub3Qtc3ltbGluay1nZXR0ZXh0LmgtZnJvbS1idWlsZC1ob3N0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzYvMDAwMS1hdXRvZ2VuLURvLW5vdC1zeW1saW5rLWdldHRleHQuaC1mcm9tLWJ1aWxkLWhvc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVhZTUzMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2LzAwMDEtYXV0b2dlbi1Eby1ub3Qtc3ltbGluay1nZXR0ZXh0LmgtZnJvbS1idWlsZC1ob3N0LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMWVlMmM5OTg5MzNjNGEzZDdlN2IzODYzNTJjYmRiMTJmMjcwNzc0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDYgU2VwIDIwMTcgMjA6NTA6NDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXV0b2dlbjogRG8gbm90IHN5bWxpbmsgZ2V0dGV4dC5oIGZyb20gYnVpbGQgaG9zdAorCitUaGlzIHdpbGwgY3JlYXRlIGEgZGVwZW5kZW5jeSBvbiBidWlsZCBob3N0IGhhdmluZyBnZXR0ZXh0CitpbnN0YWxsZWQgd2hpY2ggbWF5IG5vdCBhbHdheXMgYmUgdGhlIGNhc2UuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ3Jvc3MtY29tcGlsZSBzcGVjaWZpY10KKyBhdXRvZ2VuLnNoIHwgNiAtLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2F1dG9nZW4uc2ggYi9hdXRvZ2VuLnNoCitpbmRleCAzMzcxMDExLi5iYmM3YWRkIDEwMDc1NQorLS0tIGEvYXV0b2dlbi5zaAorKysrIGIvYXV0b2dlbi5zaAorQEAgLTI1LDEyICsyNSw2IEBAIGVjaG8gIlJ1bm5pbmcgYXV0b3JlY29uZiAuLi4iCisgYXV0b3JlY29uZiAtc2ZpCisgdW5saW5rIHBvL01ha2V2YXJzLnRlbXBsYXRlCisgCistZm9yIGQgaW4gL3VzciAvdXNyL2xvY2FsIC9vcHQvZ2V0dGV4dCAvdXNyL3BrZyAkSE9NRSA7IGRvCistCWlmIHRlc3QgLWYgJGQvc2hhcmUvZ2V0dGV4dC9nZXR0ZXh0LmggOyB0aGVuCistCQlsbiAtc2YgJGQvc2hhcmUvZ2V0dGV4dC9nZXR0ZXh0LmggaW5jbHVkZS9nZXR0ZXh0LmgKKy0JZmkKKy1kb25lCistCisgdGVzdCAtZiAiaW5jbHVkZS9nZXR0ZXh0LmgiIHx8IHsKKyBlY2hvICJFcnJvcjogY2FuJ3QgZmluZCA8Z2V0dGV4dC5oPiBjb252ZW5pZW5jZSBDIGhlYWRlci4iCisgZWNobyAiUGxlYXNlIHB1dCBhIGxpbmsgdG8gaXQgYnkgaGFuZCBhcyBpbmNsdWRlL2dldHRleHQuaCIKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2LzAwMDEtcmVwbGFjZS1WTEFJUy13aXRoLW1hbGxvYy1mcmVlLXBhaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNi8wMDAxLXJlcGxhY2UtVkxBSVMtd2l0aC1tYWxsb2MtZnJlZS1wYWlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNThiNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNi8wMDAxLXJlcGxhY2UtVkxBSVMtd2l0aC1tYWxsb2MtZnJlZS1wYWlyLnBhdGNoCkBAIC0wLDAgKzEsMTI0IEBACitGcm9tIDNhN2Q1Mzk2ZTYzM2U2YzAyYTQ1ODNiZTdmYWYzZDc5ZDBkMzM3NDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBBdWcgMjAxNyAxMToxNDo0MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gcmVwbGFjZSBWTEFJUyB3aXRoIG1hbGxvYy9mcmVlIHBhaXIKKworTWFrZXMgaXQgY29tcGF0aWJsZSB3aXRoIG5vbi1nbnUgY29tcGlsZXJzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3RyYWNlLWljbXAuYyB8ICA3ICsrKysrLS0KKyBzcmMvdHJhY2UtdGNwLmMgIHwgMTQgKysrKysrKysrKy0tLS0KKyBzcmMvdHJhY2UtdWRwLmMgIHwgIDcgKysrKystLQorIDMgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy90cmFjZS1pY21wLmMgYi9zcmMvdHJhY2UtaWNtcC5jCitpbmRleCA4NDI5MzhlLi5jNzZjYjU0IDEwMDY0NAorLS0tIGEvc3JjL3RyYWNlLWljbXAuYworKysrIGIvc3JjL3RyYWNlLWljbXAuYworQEAgLTQzLDE2ICs0MywxOSBAQCBzZW5kX2VjaG9fcHJvYmUgKGludCBmZCwgdW5zaWduZWQgdHRsLCB1bnNpZ25lZCBuLCBzaXplX3QgcGxlbiwgdWludDE2X3QgcG9ydCkKKyAJc3RydWN0CisgCXsKKyAJCXN0cnVjdCBpY21wNl9oZHIgaWg7CistCQl1aW50OF90IHBheWxvYWRbcGxlbiAtIHNpemVvZiAoc3RydWN0IGljbXA2X2hkcildOworKwkJdWludDhfdCAqcGF5bG9hZDsKKyAJfSBwYWNrZXQ7CisgCW1lbXNldCAoJnBhY2tldCwgMCwgcGxlbik7CisrCXBhY2tldC5wYXlsb2FkID0gbWFsbG9jKHBsZW4gLSBzaXplb2YgKHN0cnVjdCBpY21wNl9oZHIpKTsKKyAKKyAJcGFja2V0LmloLmljbXA2X3R5cGUgPSBJQ01QNl9FQ0hPX1JFUVVFU1Q7CisgCXBhY2tldC5paC5pY21wNl9pZCA9IGh0b25zIChnZXRwaWQgKCkpOworIAlwYWNrZXQuaWguaWNtcDZfc2VxID0gaHRvbnMgKCh0dGwgPDwgOCkgfCAobiAmIDB4ZmYpKTsKKyAJKHZvaWQpcG9ydDsKKyAKKy0JcmV0dXJuIHNlbmRfcGF5bG9hZCAoZmQsICZwYWNrZXQuaWgsIHBsZW4sIHR0bCk7CisrCXNzaXplX3QgcmV0ID0gc2VuZF9wYXlsb2FkIChmZCwgJnBhY2tldC5paCwgcGxlbiwgdHRsKTsKKysJZnJlZShwYWNrZXQucGF5bG9hZCk7CisrCXJldHVybiByZXQ7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3NyYy90cmFjZS10Y3AuYyBiL3NyYy90cmFjZS10Y3AuYworaW5kZXggOTQwZjkxOC4uNjJkMjJmZiAxMDA2NDQKKy0tLSBhL3NyYy90cmFjZS10Y3AuYworKysrIGIvc3JjL3RyYWNlLXRjcC5jCitAQCAtNTQsMTAgKzU0LDExIEBAIHNlbmRfc3luX3Byb2JlIChpbnQgZmQsIHVuc2lnbmVkIHR0bCwgdW5zaWduZWQgbiwgc2l6ZV90IHBsZW4sIHVpbnQxNl90IHBvcnQpCisgCXN0cnVjdAorIAl7CisgCQlzdHJ1Y3QgdGNwaGRyIHRoOworLQkJdWludDhfdCBwYXlsb2FkW3BsZW4gLSBzaXplb2YgKHN0cnVjdCB0Y3BoZHIpXTsKKysJCXVpbnQ4X3QgKnBheWxvYWQ7CisgCX0gcGFja2V0OworIAorIAltZW1zZXQgKCZwYWNrZXQsIDAsIHNpemVvZiAocGFja2V0KSk7CisrCXBhY2tldC5wYXlsb2FkID0gbWFsbG9jKHBsZW4gLSBzaXplb2YgKHN0cnVjdCB0Y3BoZHIpKTsKKyAJcGFja2V0LnRoLnRoX3Nwb3J0ID0gc3BvcnQ7CisgCXBhY2tldC50aC50aF9kcG9ydCA9IHBvcnQ7CisgCXBhY2tldC50aC50aF9zZXEgPSBodG9ubCAoKHR0bCA8PCAyNCkgfCAobiA8PCAxNikgfCAodWludDE2X3QpZ2V0cGlkICgpKTsKK0BAIC02NSw3ICs2Niw5IEBAIHNlbmRfc3luX3Byb2JlIChpbnQgZmQsIHVuc2lnbmVkIHR0bCwgdW5zaWduZWQgbiwgc2l6ZV90IHBsZW4sIHVpbnQxNl90IHBvcnQpCisgCXBhY2tldC50aC50aF9mbGFncyA9IFRIX1NZTiB8IChlY24gPyAoVEhfRUNFIHwgVEhfQ1dSKSA6IDApOworIAlwYWNrZXQudGgudGhfd2luID0gaHRvbnMgKFRDUF9XSU5ET1cpOworIAorLQlyZXR1cm4gc2VuZF9wYXlsb2FkIChmZCwgJnBhY2tldCwgcGxlbiwgdHRsKTsKKysJc3NpemVfdCByZXQgPSBzZW5kX3BheWxvYWQgKGZkLCAmcGFja2V0LCBwbGVuLCB0dGwpOworKwlmcmVlKHBhY2tldC5wYXlsb2FkKTsKKysJcmV0dXJuIHJldDsKKyB9CisgCisgCitAQCAtMTMxLDEwICsxMzQsMTEgQEAgc2VuZF9hY2tfcHJvYmUgKGludCBmZCwgdW5zaWduZWQgdHRsLCB1bnNpZ25lZCBuLCBzaXplX3QgcGxlbiwgdWludDE2X3QgcG9ydCkKKyAJc3RydWN0CisgCXsKKyAJCXN0cnVjdCB0Y3BoZHIgdGg7CistCQl1aW50OF90IHBheWxvYWRbcGxlbiAtIHNpemVvZiAoc3RydWN0IHRjcGhkcildOworKwkJdWludDhfdCAqcGF5bG9hZDsKKyAJfSBwYWNrZXQ7CisgCisgCW1lbXNldCAoJnBhY2tldCwgMCwgc2l6ZW9mIChwYWNrZXQpKTsKKysJcGFja2V0LnBheWxvYWQgPSBtYWxsb2MocGxlbiAtIHNpemVvZiAoc3RydWN0IHRjcGhkcikpOworIAlwYWNrZXQudGgudGhfc3BvcnQgPSBzcG9ydDsKKyAJcGFja2V0LnRoLnRoX2Rwb3J0ID0gcG9ydDsKKyAJcGFja2V0LnRoLnRoX2FjayA9IGh0b25sICgodHRsIDw8IDI0KSB8IChuIDw8IDE2KSB8ICh1aW50MTZfdClnZXRwaWQgKCkpOworQEAgLTE0Miw3ICsxNDYsOSBAQCBzZW5kX2Fja19wcm9iZSAoaW50IGZkLCB1bnNpZ25lZCB0dGwsIHVuc2lnbmVkIG4sIHNpemVfdCBwbGVuLCB1aW50MTZfdCBwb3J0KQorIAlwYWNrZXQudGgudGhfZmxhZ3MgPSBUSF9BQ0s7CisgCXBhY2tldC50aC50aF93aW4gPSBodG9ucyAoVENQX1dJTkRPVyk7CisgCistCXJldHVybiBzZW5kX3BheWxvYWQgKGZkLCAmcGFja2V0LCBwbGVuLCB0dGwpOworKwlzc2l6ZV90IHJldCA9IHNlbmRfcGF5bG9hZCAoZmQsICZwYWNrZXQsIHBsZW4sIHR0bCk7CisrCWZyZWUocGFja2V0LnBheWxvYWQpOworKwlyZXR1cm4gcmV0OworIH0KKyAKKyAKK2RpZmYgLS1naXQgYS9zcmMvdHJhY2UtdWRwLmMgYi9zcmMvdHJhY2UtdWRwLmMKK2luZGV4IDRhZGRlNmIuLmE2Y2JiMDcgMTAwNjQ0CistLS0gYS9zcmMvdHJhY2UtdWRwLmMKKysrKyBiL3NyYy90cmFjZS11ZHAuYworQEAgLTQ2LDkgKzQ2LDEwIEBAIHNlbmRfdWRwX3Byb2JlIChpbnQgZmQsIHVuc2lnbmVkIHR0bCwgdW5zaWduZWQgbiwgc2l6ZV90IHBsZW4sIHVpbnQxNl90IHBvcnQpCisgCXN0cnVjdAorIAl7CisgCQlzdHJ1Y3QgdWRwaGRyIHVoOworLQkJdWludDhfdCBwYXlsb2FkW3BsZW4gLSBzaXplb2YgKHN0cnVjdCB1ZHBoZHIpXTsKKysJCXVpbnQ4X3QgKnBheWxvYWQ7CisgCX0gcGFja2V0OworIAltZW1zZXQgKCZwYWNrZXQsIDAsIHBsZW4pOworKwlwYWNrZXQucGF5bG9hZCA9IG1hbGxvYyhwbGVuIC0gc2l6ZW9mIChzdHJ1Y3QgdWRwaGRyKSk7CisgCisgCSh2b2lkKW47CisgCXBhY2tldC51aC51aF9zcG9ydCA9IHNwb3J0OworQEAgLTYxLDcgKzYyLDkgQEAgc2VuZF91ZHBfcHJvYmUgKGludCBmZCwgdW5zaWduZWQgdHRsLCB1bnNpZ25lZCBuLCBzaXplX3QgcGxlbiwgdWludDE2X3QgcG9ydCkKKyAJLyppZiAocGxlbiA+IHNpemVvZiAoc3RydWN0IHVkcGhkcikpCisgCQlwYWNrZXQucGF5bG9hZFswXSA9ICh1aW50OF90KXR0bDsqLworIAorLQlyZXR1cm4gc2VuZF9wYXlsb2FkIChmZCwgJnBhY2tldCwgcGxlbiwgdHRsKTsKKysJc3NpemVfdCByZXQgPSBzZW5kX3BheWxvYWQgKGZkLCAmcGFja2V0LCBwbGVuLCB0dGwpOworKwlmcmVlKHBhY2tldC5wYXlsb2FkKTsKKysJcmV0dXJuIHJldDsKKyB9CisgCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNi8wMDAyLURvLW5vdC11bmRlZi1fR05VX1NPVVJDRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2LzAwMDItRG8tbm90LXVuZGVmLV9HTlVfU09VUkNFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYzJiYTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNi8wMDAyLURvLW5vdC11bmRlZi1fR05VX1NPVVJDRS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDJhNTAxNTRmYmNlMzhmZDM2YmU3ZTE0ZjVjZDRhOGIwM2M2NWM3MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBBdWcgMjAxNyAxMToxNTozNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gRG8gbm90IHVuZGVmIF9HTlVfU09VUkNFCisKK1RoZXJlIGFyZSBmdW5jdGlvbnMgZnJvbSB0Y3AuaCB3aGljaCBhcmUgdW5kZXIgX0dOVV9TT1VSQ0UKK2luIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvdHJhY2UtdGNwLmMgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RyYWNlLXRjcC5jIGIvc3JjL3RyYWNlLXRjcC5jCitpbmRleCA2MmQyMmZmLi4zODAwMDhlIDEwMDY0NAorLS0tIGEvc3JjL3RyYWNlLXRjcC5jCisrKysgYi9zcmMvdHJhY2UtdGNwLmMKK0BAIC0yMSw3ICsyMSw2IEBACisgIyBpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jdW5kZWYgX0dOVV9TT1VSQ0UKKyAjZGVmaW5lIF9ERUZBVUxUX1NPVVJDRSAxCisgCisgI2luY2x1ZGUgPHN0cmluZy5oPgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzZfMS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl8xLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVhNWUxMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl8xLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBpbmNsdWRlcyBzb21lIHVzZWZ1bCBkaWFnbm9zdGljcyB0b29scyBmb3IgXAotSVB2NiBuZXR3b3JrcywgaW5jbHVkaW5nIG5kaXNjNiwgcmRpc2M2LCB0Y3B0cmFjZXJvdXRlNiBhbmQgdHJhY2Vyb3V0ZTYuIgotU0VDVElPTiA9ICJuZXQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnJlbWxhYi5uZXQvbmRpc2M2LyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLQotIyBUaGUgdGNwdHJhY2Vyb3V0ZTYgYW5kIHRyYWNlcnQ2IGNvbW1hbmRzIGRlcGVuZCBvbiBybHRyYWNlcm91dGU2IHRvCi0jIHBlcmZvcm0gdGhlIGFjdHVhbCB0cmFjZSBvcGVyYXRpb24uCi1SREVQRU5EU18ke1BOfS10Y3B0cmFjZXJvdXRlNiA9ICIke1BOfS1ybHRyYWNlcm91dGU2IgotUkRFUEVORFNfJHtQTn0tdHJhY2VydDYgPSAiJHtQTn0tcmx0cmFjZXJvdXRlNiIKLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gInBlcmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5yZW1sYWIubmV0L2ZpbGVzL25kaXNjNi9uZGlzYzYtJHtQVn0udGFyLmJ6MiBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNTBjYjRjMTk2MDZjZjZmZjJiNzM4OGU3MTgzMmY1NzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmFjZWM4YTBjYjllZmEzYWM5ODQ1NmY0NmMzMDE2YWVlYzA1OThiMGM3NTU3Yzk1MjQyYjUyMjhhZDYyY2E3YSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotIyBTcGxpdCBpbnRvIHNlcGVyYXRlIHBhY2thZ2VzIHNpbmNlIHdlIG5vcm1hbCBkb24ndCB3YW50IHRoZW0gYWxsCi0jIFRoZSBtYWluIHBhY2thZ2UgaXMgbGVmdCBlbXB0eSBhbmQgdGhlcmVmb3JlIG5vdCBjcmVhdGVkLgotUEFDS0FHRVMgKz0gIiR7UE59LW5kaXNjNiAke1BOfS10Y3BzcHJheTYgJHtQTn0tcmRpc2M2IFwKLSAgICAke1BOfS10Y3B0cmFjZXJvdXRlNiAke1BOfS1ybHRyYWNlcm91dGU2IFwKLSAgICAke1BOfS10cmFjZXJ0NiAke1BOfS1yZG5zc2QgJHtQTn0tbWlzYyIKLUZJTEVTXyR7UE59ICAgICAgICAgICAgPSAiIgotRklMRVNfJHtQTn0tbmRpc2M2ICAgICAgICA9ICIke2JpbmRpcn0vbmRpc2M2IgotRklMRVNfJHtQTn0tdGNwc3ByYXk2ICAgICAgICAgPSAiJHtiaW5kaXJ9L3RjcHNwcmF5NiIKLUZJTEVTXyR7UE59LXJkaXNjNiAgICAgICAgPSAiJHtiaW5kaXJ9L3JkaXNjNiIKLUZJTEVTXyR7UE59LXRjcHRyYWNlcm91dGU2ICAgID0gIiR7YmluZGlyfS90Y3B0cmFjZXJvdXRlNiIKLUZJTEVTXyR7UE59LXJsdHJhY2Vyb3V0ZTYgICAgPSAiJHtiaW5kaXJ9L3JsdHJhY2Vyb3V0ZTYiCi1GSUxFU18ke1BOfS10cmFjZXJ0NiAgICAgICAgPSAiJHtiaW5kaXJ9L3RyYWNlcnQ2IgotRklMRVNfJHtQTn0tcmRuc3NkICAgICAgICA9ICIke3NiaW5kaXJ9L3JkbnNzZCAke3N5c2NvbmZkaXJ9L3JkbnNzZCIKLUZJTEVTXyR7UE59LW1pc2MgICAgICAgICAgICAgICAgPSAiJHtiaW5kaXJ9L2Ruc3NvcnQgJHtiaW5kaXJ9L25hbWUyYWRkciAke2JpbmRpcn0vdGNwc3ByYXkgJHtiaW5kaXJ9L2FkZHIybmFtZSIKLQotREVTQ1JJUFRJT05fJHtQTn0tbmRpc2M2ICAgID0gIklDTVB2NiBOZWlnaGJvciBEaXNjb3ZlcnkgdG9vbC4gXAotUGVyZm9ybXMgSVB2NiBuZWlnaGJvciBkaXNjb3ZlcnkgaW4gdXNlcmxhbmQuIFJlcGxhY2VzIGFycGluZyBmcm9tIHRoZSBcCi1JUHY0IHdvcmxkLiIKLURFU0NSSVBUSU9OXyR7UE59LXJkaXNjNiAgICA9ICJJQ01QdjYgUm91dGVyIERpc2NvdmVyeSB0b29sLiBcCi1RdWVyaWVzIElQdjYgcm91dGVycyBvbiB0aGUgbmV0d29yayBmb3IgYWR2ZXJ0aXNlZCBwcmVmaXhlcy4gQ2FuIGJlIHVzZWQgXAotdG8gZGV0ZWN0IHJvZ3VlIElQdjYgcm91dGVycywgbW9uaXRvciBsZWdpdGltYXRlIElQdjYgcm91dGVycy4iCi1ERVNDUklUUElPTl8ke1BOfS10Y3BzcHJheTYgICAgPSAiUGVyZm9ybXMgYmFuZHdpZHRoIG1lYXN1cmVtZW50cyBvZiBUQ1AgXAotc2Vzc2lvbnMgYmV0d2VlbiB0aGUgbG9jYWwgc3lzdGVtIGFuZCBhIHJlbW90ZSBlY2hvIHNlcnZlciBpbiBlaXRoZXIgSVB2NiBcCi1vciBJUHY0LiIKLQotREVTQ1JJVFBJT05fJHtQTn0tcmRuc3NkICAgICAgID0gIkRhZW1vbiB0byBhdXRvY29uZmlndXJlIHRoZSBsaXN0IG9mIEROUyBcCi1zZXJ2ZXJzIHRocm91Z2ggc2xhdGVsZXNzIElQdjYgYXV0b2NvbmZpZ3VyYXRpb24uIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0gICAgIyBFbmFibGUgU1VJRCBiaXQgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgaXQKLSAgICBjaG1vZCA0NTU1ICR7RH0ke2JpbmRpcn0vcmx0cmFjZXJvdXRlNgotICAgIGNobW9kIDQ1NTUgJHtEfSR7YmluZGlyfS9uZGlzYzYKLSAgICBjaG1vZCA0NTU1ICR7RH0ke2JpbmRpcn0vcmRpc2M2Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhhODNiOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYgpAQCAtMCwwICsxLDcyIEBACitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaW5jbHVkZXMgc29tZSB1c2VmdWwgZGlhZ25vc3RpY3MgdG9vbHMgZm9yIFwKK0lQdjYgbmV0d29ya3MsIGluY2x1ZGluZyBuZGlzYzYsIHJkaXNjNiwgdGNwdHJhY2Vyb3V0ZTYgYW5kIHRyYWNlcm91dGU2LiIKK1NFQ1RJT04gPSAibmV0IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5yZW1sYWIubmV0L25kaXNjNi8iCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworUFYgPSAiMS4wLjQrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNGM3OTRiNTUxMmQyM2M2NDlkZWYxZjk0YTY4NDIyNWRjYmI2YWMzZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnJlbWxhYi5uZXQvZ2l0L25kaXNjNi5naXQ7cHJvdG9jb2w9aHR0cCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2UtVkxBSVMtd2l0aC1tYWxsb2MtZnJlZS1wYWlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXVuZGVmLV9HTlVfU09VUkNFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXV0b2dlbi1Eby1ub3Qtc3ltbGluay1nZXR0ZXh0LmgtZnJvbS1idWlsZC1ob3N0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CisKK0VYVFJBX09FQ09ORiArPSAiUEVSTD0ke1VTUkJJTlBBVEh9L3BlcmwiCisKK0xERkxBR1MgKz0gIi1mdXNlLWxkPWdvbGQiCitUT09MQ0hBSU4gPSAiZ2NjIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvZ2V0dGV4dC5oICR7U30vaW5jbHVkZQorICAgICR7U30vYXV0b2dlbi5zaAorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CisgICAgIyBFbmFibGUgU1VJRCBiaXQgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgaXQKKyAgICBjaG1vZCA0NTU1ICR7RH0ke2JpbmRpcn0vcmx0cmFjZXJvdXRlNgorICAgIGNobW9kIDQ1NTUgJHtEfSR7YmluZGlyfS9uZGlzYzYKKyAgICBjaG1vZCA0NTU1ICR7RH0ke2JpbmRpcn0vcmRpc2M2Cit9CitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCisjIFNwbGl0IGludG8gc2VwZXJhdGUgcGFja2FnZXMgc2luY2Ugd2Ugbm9ybWFsIGRvbid0IHdhbnQgdGhlbSBhbGwKKyMgVGhlIG1haW4gcGFja2FnZSBpcyBsZWZ0IGVtcHR5IGFuZCB0aGVyZWZvcmUgbm90IGNyZWF0ZWQuCitQQUNLQUdFUyArPSAiJHtQTn0tbmRpc2M2ICR7UE59LXRjcHNwcmF5NiAke1BOfS1yZGlzYzYgXAorICAgICR7UE59LXRjcHRyYWNlcm91dGU2ICR7UE59LXJsdHJhY2Vyb3V0ZTYgXAorICAgICR7UE59LXRyYWNlcnQ2ICR7UE59LXJkbnNzZCAke1BOfS1taXNjIgorRklMRVNfJHtQTn0gICAgICAgICAgICA9ICIiCitGSUxFU18ke1BOfS1uZGlzYzYgICAgICAgID0gIiR7YmluZGlyfS9uZGlzYzYiCitGSUxFU18ke1BOfS10Y3BzcHJheTYgICAgICAgICA9ICIke2JpbmRpcn0vdGNwc3ByYXk2IgorRklMRVNfJHtQTn0tcmRpc2M2ICAgICAgICA9ICIke2JpbmRpcn0vcmRpc2M2IgorRklMRVNfJHtQTn0tdGNwdHJhY2Vyb3V0ZTYgICAgPSAiJHtiaW5kaXJ9L3RjcHRyYWNlcm91dGU2IgorRklMRVNfJHtQTn0tcmx0cmFjZXJvdXRlNiAgICA9ICIke2JpbmRpcn0vcmx0cmFjZXJvdXRlNiIKK0ZJTEVTXyR7UE59LXRyYWNlcnQ2ICAgICAgICA9ICIke2JpbmRpcn0vdHJhY2VydDYiCitGSUxFU18ke1BOfS1yZG5zc2QgICAgICAgID0gIiR7c2JpbmRpcn0vcmRuc3NkICR7c3lzY29uZmRpcn0vcmRuc3NkIgorRklMRVNfJHtQTn0tbWlzYyAgICAgICAgICAgICAgICA9ICIke2JpbmRpcn0vZG5zc29ydCAke2JpbmRpcn0vbmFtZTJhZGRyICR7YmluZGlyfS90Y3BzcHJheSAke2JpbmRpcn0vYWRkcjJuYW1lIgorCitERVNDUklQVElPTl8ke1BOfS1uZGlzYzYgICAgPSAiSUNNUHY2IE5laWdoYm9yIERpc2NvdmVyeSB0b29sLiBcCitQZXJmb3JtcyBJUHY2IG5laWdoYm9yIGRpc2NvdmVyeSBpbiB1c2VybGFuZC4gUmVwbGFjZXMgYXJwaW5nIGZyb20gdGhlIFwKK0lQdjQgd29ybGQuIgorREVTQ1JJUFRJT05fJHtQTn0tcmRpc2M2ICAgID0gIklDTVB2NiBSb3V0ZXIgRGlzY292ZXJ5IHRvb2wuIFwKK1F1ZXJpZXMgSVB2NiByb3V0ZXJzIG9uIHRoZSBuZXR3b3JrIGZvciBhZHZlcnRpc2VkIHByZWZpeGVzLiBDYW4gYmUgdXNlZCBcCit0byBkZXRlY3Qgcm9ndWUgSVB2NiByb3V0ZXJzLCBtb25pdG9yIGxlZ2l0aW1hdGUgSVB2NiByb3V0ZXJzLiIKK0RFU0NSSVRQSU9OXyR7UE59LXRjcHNwcmF5NiAgICA9ICJQZXJmb3JtcyBiYW5kd2lkdGggbWVhc3VyZW1lbnRzIG9mIFRDUCBcCitzZXNzaW9ucyBiZXR3ZWVuIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIGEgcmVtb3RlIGVjaG8gc2VydmVyIGluIGVpdGhlciBJUHY2IFwKK29yIElQdjQuIgorCitERVNDUklUUElPTl8ke1BOfS1yZG5zc2QgICAgICAgPSAiRGFlbW9uIHRvIGF1dG9jb25maWd1cmUgdGhlIGxpc3Qgb2YgRE5TIFwKK3NlcnZlcnMgdGhyb3VnaCBzbGF0ZWxlc3MgSVB2NiBhdXRvY29uZmlndXJhdGlvbi4iCisKKyMgVGhlIHRjcHRyYWNlcm91dGU2IGFuZCB0cmFjZXJ0NiBjb21tYW5kcyBkZXBlbmQgb24gcmx0cmFjZXJvdXRlNiB0bworIyBwZXJmb3JtIHRoZSBhY3R1YWwgdHJhY2Ugb3BlcmF0aW9uLgorUkRFUEVORFNfJHtQTn0tdGNwdHJhY2Vyb3V0ZTYgPSAiJHtQTn0tcmx0cmFjZXJvdXRlNiIKK1JERVBFTkRTXyR7UE59LXRyYWNlcnQ2ID0gIiR7UE59LXJsdHJhY2Vyb3V0ZTYiCitSREVQRU5EU18ke1BOfS1taXNjICs9ICJwZXJsIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2YvbmV0Y2ZfMC4yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2YvbmV0Y2ZfMC4yLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE2ZjYwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjZi9uZXRjZl8wLjIuOC5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gIm5ldGNmIgorREVTQ1JJUFRJT04gPSAibmV0Y2YgaXMgYSBjcm9zcy1wbGF0Zm9ybSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwczovL3BhZ3VyZS5pby9uZXRjZiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiOTE5Y2M4OGRiZTA2ZWMwYjBiZDUwZTAwMWNjZjFmIgorCitTUkNSRVYgPSAiMmM1ZDQyNTU4NTc1MzFiYzA5ZDkxZGNkMDJlODY1NDVmMjkwMDRkNCIKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vcGFndXJlLmlvL25ldGNmLmdpdDtwcm90b2NvbD1odHRwcyBcCisiCisKK0RFUEVORFMgKz0gImF1Z2VhcyBsaWJubCBsaWJ4c2x0IGxpYnhtbDIgZ251bGliIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtLXdpdGgtZHJpdmVyPXJlZGhhdCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXNpbml0PXN5c3RlbWQsLS13aXRoLXN5c2luaXQ9aW5pdHNjcmlwdHMsIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dudWxpYi9tNCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgY3VycmRpcj1gcHdkYAorICAgIGNkICR7U30KKworICAgICMgYXZvaWQgYm9vdHN0cmFwIGNsb25pbmcgZ251bGliIG9uIGV2ZXJ5IGNvbmZpZ3VyZQorICAgICMgdGhlIGRpciBzdGFydHMgb3V0IGVtcHR5IGZyb20gdGhlIHBrZywgYnV0IHVuY29uZGl0aW9uYWxseSBibG93IGl0CisgICAgIyBhd2F5IHNvIGlmIHdlIHJlY29uZmlndXJlIGR1ZSB0byBnbnVsaWIgc3lzcm9vdCBzaWcgY2hhbmdlcywgd2Ugd2lsbAorICAgICMgZ2V0IHRoZSBuZXdlciBnbnVsaWIgY29udGVudCBpbnRvIHRoZSBidWlsZCBoZXJlLgorICAgIHJtIC1yZiAke1N9Ly5nbnVsaWIKKyAgICBjcCAtcmYgJHtTVEFHSU5HX0RBVEFESVJ9L2dudWxpYiAke1N9Ly5nbnVsaWIKKworICAgICMgLS1mb3JjZSB0byBhdm9pZCBlcnJvcnMgb24gcmVjb25maWd1cmUgZS5nIGlmIHJlY2lwZXMgY2hhbmdlZCB3ZSBkZXBlbmQgb24KKyAgICAjIHwgYm9vdHN0cmFwOiBydW5uaW5nOiBsaWJ0b29saXplIC0tcXVpZXQKKyAgICAjIHwgbGlidG9vbGl6ZTogICBlcnJvcjogJ2xpYmx0ZGwvQ09QWUlORy5MSUInIGV4aXN0czogdXNlICctLWZvcmNlJyB0byBvdmVyd3JpdGUKKyAgICAjIHwgLi4uCisgICAgLi9ib290c3RyYXAgLS1mb3JjZSAtLW5vLWdpdCAtLWdudWxpYi1zcmNkaXI9LmdudWxpYgorCisgICAgY2QgJGN1cnJkaXIKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgaWYgWyAtZCAiJHtEfSR7bGliZGlyfS9zeXN0ZW1kL3N5c3RlbSIgXTsgdGhlbgorICAgICAgICAgICBpZiBbICIke3N5c3RlbWRfdW5pdGRpcn0iICE9ICIke2xpYmRpcn0vc3lzdGVtZCIgXSA7IHRoZW4gCisgICAgICAgICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3N5c3RlbWQvc3lzdGVtLyogJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgICAgICAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9zeXN0ZW1kLworCSAgIGZpCisgICAgICAgZWxpZiBbICIke3N5c3RlbWRfdW5pdGRpcn0iICE9ICIke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kIiBdIDsgdGhlbiAKKyAgICAgICAgICAgbXYgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvc3lzdGVtLyogJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgICAgIHJtIC1yZiAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC8KKyAgICAgICBmaQorICAgIGVsc2UKKyAgICAgICBtdiAke0R9JHtzeXNjb25mZGlyfS9yYy5kL2luaXQuZC8gJHtEfSR7c3lzY29uZmRpcn0KKyAgICAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZC8KKyAgICBmaQorfQorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAgICAgJHtsaWJkaXJ9IFwKKyAgICAgICAgJHtub25hcmNoX2xpYmRpcn0gXAorICAgICAgICAiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZXRjZi10cmFuc2FjdGlvbi5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjZi9uZXRjZl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YTUwMDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVNVTU1BUlkgPSAibmV0Y2YiCi1ERVNDUklQVElPTiA9ICJuZXRjZiBpcyBhIGNyb3NzLXBsYXRmb3JtIG5ldHdvcmsgY29uZmlndXJhdGlvbiBsaWJyYXJ5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9uZXRjZi8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKLQotU1JDUkVWID0gIjkxNTgyNzhhZDM1YjQ2Y2U5YTQ5YjJlODg3NDgzYzZkOGMyODc5OTQiCi1QViA9ICIwLjIuOCtnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZmVkb3JhaG9zdGVkLm9yZy9uZXRjZi5naXQ7cHJvdG9jb2w9Z2l0IFwKLSIKLQotREVQRU5EUyArPSAiYXVnZWFzIGxpYm5sIGxpYnhzbHQgbGlieG1sMiBnbnVsaWIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0td2l0aC1kcml2ZXI9cmVkaGF0IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c2luaXQ9c3lzdGVtZCwtLXdpdGgtc3lzaW5pdD1pbml0c2NyaXB0cywiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGN1cnJkaXI9YHB3ZGAKLSAgICBjZCAke1N9Ci0KLSAgICAjIGF2b2lkIGJvb3RzdHJhcCBjbG9uaW5nIGdudWxpYiBvbiBldmVyeSBjb25maWd1cmUKLSAgICAjIHRoZSBkaXIgc3RhcnRzIG91dCBlbXB0eSBmcm9tIHRoZSBwa2csIGJ1dCB1bmNvbmRpdGlvbmFsbHkgYmxvdyBpdAotICAgICMgYXdheSBzbyBpZiB3ZSByZWNvbmZpZ3VyZSBkdWUgdG8gZ251bGliIHN5c3Jvb3Qgc2lnIGNoYW5nZXMsIHdlIHdpbGwKLSAgICAjIGdldCB0aGUgbmV3ZXIgZ251bGliIGNvbnRlbnQgaW50byB0aGUgYnVpbGQgaGVyZS4KLSAgICBybSAtcmYgJHtTfS8uZ251bGliCi0gICAgY3AgLXJmICR7U1RBR0lOR19EQVRBRElSfS9nbnVsaWIgJHtTfS8uZ251bGliCi0KLSAgICAjIC0tZm9yY2UgdG8gYXZvaWQgZXJyb3JzIG9uIHJlY29uZmlndXJlIGUuZyBpZiByZWNpcGVzIGNoYW5nZWQgd2UgZGVwZW5kIG9uCi0gICAgIyB8IGJvb3RzdHJhcDogcnVubmluZzogbGlidG9vbGl6ZSAtLXF1aWV0Ci0gICAgIyB8IGxpYnRvb2xpemU6ICAgZXJyb3I6ICdsaWJsdGRsL0NPUFlJTkcuTElCJyBleGlzdHM6IHVzZSAnLS1mb3JjZScgdG8gb3ZlcndyaXRlCi0gICAgIyB8IC4uLgotICAgIC4vYm9vdHN0cmFwIC0tZm9yY2UgLS1uby1naXQgLS1nbnVsaWItc3JjZGlyPS5nbnVsaWIKLQotICAgIGNkICRjdXJyZGlyCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgIGlmIFsgLWQgIiR7RH0ke2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0iIF07IHRoZW4KLSAgICAgICAgICAgaWYgWyAiJHtzeXN0ZW1kX3VuaXRkaXJ9IiAhPSAiJHtsaWJkaXJ9L3N5c3RlbWQiIF0gOyB0aGVuIAotICAgICAgICAgICAgICAgbXYgJHtEfSR7bGliZGlyfS9zeXN0ZW1kL3N5c3RlbS8qICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICAgICAgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vc3lzdGVtZC8KLQkgICBmaQotICAgICAgIGVsaWYgWyAiJHtzeXN0ZW1kX3VuaXRkaXJ9IiAhPSAiJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZCIgXSA7IHRoZW4gCi0gICAgICAgICAgIG12ICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3N5c3RlbS8qICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICAgICBybSAtcmYgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvCi0gICAgICAgZmkKLSAgICBlbHNlCi0gICAgICAgbXYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZC9pbml0LmQvICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQvCi0gICAgZmkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgICAgICR7bGliZGlyfSBcCi0gICAgICAgICR7bm9uYXJjaF9saWJkaXJ9IFwKLSAgICAgICAgIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmV0Y2YtdHJhbnNhY3Rpb24uc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfMi42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9uZXRwZXJmXzIuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTBmZGFlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfMi42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1TVU1NQVJZID0gIkEgbmV0d29ya2luZyBiZW5jaG1hcmtpbmcgdG9vbCIKLURFU0NSSVBUSU9OID0gIk5ldHdvcmsgcGVyZm9ybWFuY2UgYmVuY2htYXJrIGluY2x1ZGluZyB0ZXN0cyBmb3IgVENQLCBVRFAsIHNvY2tldHMsIEFUTSBhbmQgbW9yZS4iCi1TRUNUSU9OID0gIm5ldCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0cGVyZi5vcmcvIgotTElDRU5TRSA9ICJuZXRwZXJmIgotTElDRU5TRV9GTEFHUyA9ICJub24tY29tbWVyY2lhbCIKLQotCi1TUkNfVVJJPSJmdHA6Ly9mdHAubmV0cGVyZi5vcmcvbmV0cGVyZi9hcmNoaXZlL25ldHBlcmYtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICBmaWxlOi8vY3B1X3NldC5wYXRjaCBcCi0gICAgICAgICBmaWxlOi8vdmZvcmsucGF0Y2ggXAotICAgICAgICAgZmlsZTovL2luaXQiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTY1NGZmZGZkNGM0ZjJjOTNjZTM3MzNjZDllZDkyMzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Q4ZGFjNzEwZDQyNzNkMjlmNzBlOGRiZDA5MzUzYTYzNjJhYzU4YTExOTI2ZTA4MjIyMzNjMGNiMjMwMzIzYSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTBhYjE3MjUzZTdhM2YzMThkYTg1MzgyYzdkNWQ1ZDYiCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQgYXV0b3Rvb2xzCi0KLVMgPSAiJHtXT1JLRElSfS9uZXRwZXJmLSR7UFZ9IgotCi0jIGNwdV9zZXQucGF0Y2ggcGx1cyBfR05VX1NPVVJDRSBtYWtlcyBzcmMvbmV0bGliLmMgY29tcGlsZSB3aXRoIENQVV8gbWFjcm9zCi1DRkxBR1NfYXBwZW5kID0gIiAtRERPX1VOSVggLURET19JUFY2IC1EX0dOVV9TT1VSQ0UiCi0KLSMgc2V0IHRoZSAiX0ZJTEVfT0ZGU0VUX0JJVFMiIHByZXByb2Nlc3NvciBzeW1ib2wgdG8gNjQgdG8gc3VwcG9ydCBmaWxlcwotIyBsYXJnZXIgdGhhbiAyR0IKLUNGTEFHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCBcCi0gICAgJyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0JywgJycsIGQpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbc2N0cF0gPSAiLS1lbmFibGUtc2N0cCwtLWRpc2FibGUtc2N0cCxsa3NjdHAtdG9vbHMsIgotCi0jIGF1dG90b29scy5iYmNsYXNzIGF0dGVuZHMgdG8gaW5jbHVkZSBtNCBmaWxlcyB3aXRoIHBhdGggZGVwdGggPD0gMiBieQotIyAiZmluZCAke1N9IC1tYXhkZXB0aCAyIC1uYW1lIFwqLm00Iiwgc28gbW92ZSBtNCBmaWxlcyBmcm9tIG00L200LgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgdGVzdCAtZCAke1N9L200L200ICYmIG12IC1mICR7U30vbTQvbTQgJHtTfS9tNC1maWxlcwotfQotCi1kb19pbnN0YWxsKCkgewotICAgIHNlZCAtZSAncyMvdXNyL3NiaW4vIyR7c2JpbmRpcn0vI2cnIC1pICR7V09SS0RJUn0vaW5pdAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfSAke0R9JHtiaW5kaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNDc1NSBzcmMvbmV0cGVyZiAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA0NzU1IHNyYy9uZXRzZXJ2ZXIgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZXRwZXJmCi0KLSAgICAjIG1hbgotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9uZXRzZXJ2ZXIubWFuICR7RH0ke21hbmRpcn0vbWFuMS9uZXRzZXJ2ZXIuMQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9uZXRwZXJmLm1hbiAke0R9JHttYW5kaXJ9L21hbjEvbmV0cGVyZi4xCi0KLSAgICAjIG1vdmUgc2NyaXB0cyB0byBleGFtcGxlcyBkaXJlY3RvcnkKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vbmV0cGVyZi9leGFtcGxlcwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9leGFtcGxlcy8qX3NjcmlwdCAke0R9JHtkb2NkaXJ9L25ldHBlcmYvZXhhbXBsZXMvCi0KLSAgICAjIGRvY3MgLi4KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9DT1BZSU5HICR7RH0ke2RvY2Rpcn0vbmV0cGVyZgotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L1JlbGVhc2VfTm90ZXMgJHtEfSR7ZG9jZGlyfS9uZXRwZXJmCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vUkVBRE1FICR7RH0ke2RvY2Rpcn0vbmV0cGVyZgotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9uZXRwZXJmX29sZC5wcyAke0R9JHtkb2NkaXJ9L25ldHBlcmYKLX0KLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjdHAnLCAna2VybmVsLW1vZHVsZS1zY3RwJywgJycsIGQpfSIKLQotSU5JVFNDUklQVF9OQU1FPSJuZXRwZXJmIgotSU5JVFNDUklQVF9QQVJBTVM9ImRlZmF1bHRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldHBlcmYvbmV0cGVyZl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9uZXRwZXJmX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGUwZjljCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldHBlcmYvbmV0cGVyZl9naXQuYmIKQEAgLTAsMCArMSw2NiBAQAorU1VNTUFSWSA9ICJBIG5ldHdvcmtpbmcgYmVuY2htYXJraW5nIHRvb2wiCitERVNDUklQVElPTiA9ICJOZXR3b3JrIHBlcmZvcm1hbmNlIGJlbmNobWFyayBpbmNsdWRpbmcgdGVzdHMgZm9yIFRDUCwgVURQLCBzb2NrZXRzLCBBVE0gYW5kIG1vcmUuIgorU0VDVElPTiA9ICJuZXQiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldHBlcmYub3JnLyIKK0xJQ0VOU0UgPSAibmV0cGVyZiIKK0xJQ0VOU0VfRkxBR1MgPSAibm9uLWNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMGFiMTcyNTNlN2EzZjMxOGRhODUzODJjN2Q1ZDVkNiIKKworUFYgPSAiMi43LjArZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkk9ImdpdDovL2dpdGh1Yi5jb20vSGV3bGV0dFBhY2thcmQvbmV0cGVyZi5naXQgXAorICAgICAgICAgZmlsZTovL2NwdV9zZXQucGF0Y2ggXAorICAgICAgICAgZmlsZTovL3Zmb3JrLnBhdGNoIFwKKyAgICAgICAgIGZpbGU6Ly9pbml0IgorCitTUkNSRVYgPSAiZjQ4MmJhYjQ5ZmNlZGVlNDZmYzViNzU1ZGExMjdmNjA4MzI1Y2QxMyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCB1cGRhdGUtcmMuZCBhdXRvdG9vbHMKKworIyBjcHVfc2V0LnBhdGNoIHBsdXMgX0dOVV9TT1VSQ0UgbWFrZXMgc3JjL25ldGxpYi5jIGNvbXBpbGUgd2l0aCBDUFVfIG1hY3JvcworQ0ZMQUdTX2FwcGVuZCA9ICIgLURET19VTklYIC1ERE9fSVBWNiAtRF9HTlVfU09VUkNFIgorCisjIHNldCB0aGUgIl9GSUxFX09GRlNFVF9CSVRTIiBwcmVwcm9jZXNzb3Igc3ltYm9sIHRvIDY0IHRvIHN1cHBvcnQgZmlsZXMKKyMgbGFyZ2VyIHRoYW4gMkdCCitDRkxBR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgXAorICAgICcgLURfRklMRV9PRkZTRVRfQklUUz02NCcsICcnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3NjdHBdID0gIi0tZW5hYmxlLXNjdHAsLS1kaXNhYmxlLXNjdHAsbGtzY3RwLXRvb2xzLCIKKworIyBhdXRvdG9vbHMuYmJjbGFzcyBhdHRlbmRzIHRvIGluY2x1ZGUgbTQgZmlsZXMgd2l0aCBwYXRoIGRlcHRoIDw9IDIgYnkKKyMgImZpbmQgJHtTfSAtbWF4ZGVwdGggMiAtbmFtZSBcKi5tNCIsIHNvIG1vdmUgbTQgZmlsZXMgZnJvbSBtNC9tNC4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHRlc3QgLWQgJHtTfS9tNC9tNCAmJiBtdiAtZiAke1N9L200L200ICR7U30vbTQtZmlsZXMKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBzZWQgLWUgJ3MjL3Vzci9zYmluLyMke3NiaW5kaXJ9LyNnJyAtaSAke1dPUktESVJ9L2luaXQKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0gJHtEfSR7YmluZGlyfSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDQ3NTUgc3JjL25ldHBlcmYgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gNDc1NSBzcmMvbmV0c2VydmVyICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmV0cGVyZgorCisgICAgIyBtYW4KKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuMS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb2MvbmV0c2VydmVyLm1hbiAke0R9JHttYW5kaXJ9L21hbjEvbmV0c2VydmVyLjEKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb2MvbmV0cGVyZi5tYW4gJHtEfSR7bWFuZGlyfS9tYW4xL25ldHBlcmYuMQorCisgICAgIyBtb3ZlIHNjcmlwdHMgdG8gZXhhbXBsZXMgZGlyZWN0b3J5CisgICAgaW5zdGFsbCAtZCAke0R9JHtkb2NkaXJ9L25ldHBlcmYvZXhhbXBsZXMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb2MvZXhhbXBsZXMvKl9zY3JpcHQgJHtEfSR7ZG9jZGlyfS9uZXRwZXJmL2V4YW1wbGVzLworCisgICAgIyBkb2NzIC4uCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vQ09QWUlORyAke0R9JHtkb2NkaXJ9L25ldHBlcmYKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9SZWxlYXNlX05vdGVzICR7RH0ke2RvY2Rpcn0vbmV0cGVyZgorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L1JFQURNRSAke0R9JHtkb2NkaXJ9L25ldHBlcmYKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb2MvbmV0cGVyZl9vbGQucHMgJHtEfSR7ZG9jZGlyfS9uZXRwZXJmCit9CisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3RwJywgJ2tlcm5lbC1tb2R1bGUtc2N0cCcsICcnLCBkKX0iCisKK0lOSVRTQ1JJUFRfTkFNRT0ibmV0cGVyZiIKK0lOSVRTQ1JJUFRfUEFSQU1TPSJkZWZhdWx0cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMS1saWIteXBfYWxsX2hvc3QuYy1GaXgtYnVpbGQtd2l0aC1nY2MtNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMS1saWIteXBfYWxsX2hvc3QuYy1GaXgtYnVpbGQtd2l0aC1nY2MtNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFkNWY5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzLzAwMDEtbGliLXlwX2FsbF9ob3N0LmMtRml4LWJ1aWxkLXdpdGgtZ2NjLTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDcxZmRmZGZjZWEyYmZhNWY1MjI1MTIzNjZiZmNkZjk1Zjg2MWVjYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMyBBcHIgMjAxNyAyMzo0NDozNyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWIveXBfYWxsX2hvc3QuYzogRml4IGJ1aWxkIHdpdGggZ2NjIDcKLQotZml4ZXMKLQotfCAuLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy95cC10b29scy9saWIveXBfYWxsX2hvc3QuYzogSW4gZnVuY3Rpb24gJ3lwX2FsbF9ob3N0JzoKLXwgLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMveXAtdG9vbHMvbGliL3lwX2FsbF9ob3N0LmM6MTA5OjMwOiBlcnJvcjogY29tcGFyaXNvbiBiZXR3ZWVuIHBvaW50ZXIgYW5kIHplcm8gY2hhcmFjdGVyIGNvbnN0YW50IFstV2Vycm9yPXBvaW50ZXItY29tcGFyZV0KLXwgICAgICAgIGlubWFwID09IE5VTEwgfHwgaW5tYXAgPT0gJ1wwJykKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYi95cF9hbGxfaG9zdC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3lwX2FsbF9ob3N0LmMgYi9saWIveXBfYWxsX2hvc3QuYwotaW5kZXggNTljZjIzNi4uNGEwN2E3ZSAxMDA2NDQKLS0tLSBhL2xpYi95cF9hbGxfaG9zdC5jCi0rKysgYi9saWIveXBfYWxsX2hvc3QuYwotQEAgLTEwNiw3ICsxMDYsNyBAQCB5cF9hbGxfaG9zdCAoY29uc3QgY2hhciAqaW5kb21haW4sIGNvbnN0IGNoYXIgKmlubWFwLAotIAotICAgaWYgKGhvc3RuYW1lID09IE5VTEwgfHwgaG9zdG5hbWVbMF0gPT0gJ1wwJyB8fAotICAgICAgIGluZG9tYWluID09IE5VTEwgfHwgaW5kb21haW5bMF0gPT0gJ1wwJyB8fAotLSAgICAgIGlubWFwID09IE5VTEwgfHwgaW5tYXAgPT0gJ1wwJykKLSsgICAgICBpbm1hcCA9PSBOVUxMIHx8IGlubWFwWzBdID09ICdcMCcpCi0gICAgIHJldHVybiBZUEVSUl9CQURBUkdTOwotIAotICAgcmVzID0gWVBFUlJfWVBFUlI7Ci0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzLzAwMDEteXBiaW5kM19iaW5kaW5nX2R1cC5jLUluY2x1ZGUtc3RyaW5nLmgtZm9yLXN0cmR1cC1kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMS15cGJpbmQzX2JpbmRpbmdfZHVwLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3Itc3RyZHVwLWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNGQ0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzLzAwMDEteXBiaW5kM19iaW5kaW5nX2R1cC5jLUluY2x1ZGUtc3RyaW5nLmgtZm9yLXN0cmR1cC1kZS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDQyMGNiNjkyNzU1M2JiY2E1YjQ5Yjc2ODFjZjIwOGU2ZGY2ZTRkN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCA4IFNlcCAyMDE3IDA4OjQyOjQ1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSB5cGJpbmQzX2JpbmRpbmdfZHVwLmM6IEluY2x1ZGUgc3RyaW5nLmggZm9yIHN0cmR1cAorIGRlY2xhcmF0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBsaWIveXBiaW5kM19iaW5kaW5nX2R1cC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9saWIveXBiaW5kM19iaW5kaW5nX2R1cC5jIGIvbGliL3lwYmluZDNfYmluZGluZ19kdXAuYworaW5kZXggY2U0YWFkZi4uODE5OWMwYiAxMDA2NDQKKy0tLSBhL2xpYi95cGJpbmQzX2JpbmRpbmdfZHVwLmMKKysrKyBiL2xpYi95cGJpbmQzX2JpbmRpbmdfZHVwLmMKK0BAIC0xOSw2ICsxOSw3IEBACisgCisgI2lmIGRlZmluZWQoSEFWRV9ZUEJJTkQzKQorIAorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8cnBjc3ZjL3lwX3Byb3QuaD4KKyAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMi15cF9kdW1wX2JpbmRpbmdzLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3ItbWVtc2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy8wMDAyLXlwX2R1bXBfYmluZGluZ3MuYy1JbmNsdWRlLXN0cmluZy5oLWZvci1tZW1zZXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU2MmU1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMvMDAwMi15cF9kdW1wX2JpbmRpbmdzLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3ItbWVtc2V0LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMDNjY2FiYjYyNjRjMDA4NDMwYzRiMTczOTM1MWRmNWE2MzgyOWY4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDggU2VwIDIwMTcgMDg6NTI6MzIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIHlwX2R1bXBfYmluZGluZ3MuYzogSW5jbHVkZSBzdHJpbmcuaCBmb3IgbWVtc2V0CisKK0ZpeGVzCitlcnJvcjogaW1wbGljaXRseSBkZWNsYXJpbmcgbGlicmFyeSBmdW5jdGlvbiAnbWVtc2V0JworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgc3JjL3lwX2R1bXBfYmluZGluZy5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMveXBfZHVtcF9iaW5kaW5nLmMgYi9zcmMveXBfZHVtcF9iaW5kaW5nLmMKK2luZGV4IGE1YWI5MjAuLmQ3NWUyYzIgMTAwNjQ0CistLS0gYS9zcmMveXBfZHVtcF9iaW5kaW5nLmMKKysrKyBiL3NyYy95cF9kdW1wX2JpbmRpbmcuYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8Z2V0b3B0Lmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyAjaW5jbHVkZSA8cnBjc3ZjL3lwY2xudC5oPgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy9hbGlnbm1lbnQtY2hlYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzL2FsaWdubWVudC1jaGVhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU5YjYyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzL2FsaWdubWVudC1jaGVhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLXlwLXRvb2xzOiBhdm9pZCBmYXRhbCBjYXN0IHdhcm5pbmcKLQotVGhlIHdheSBjYXN0aW5nIGlzIGRvbmUsIHdlIHdpbGwgZ2V0IGEgZmF0YWwgYWxpZ25tZW50IHdhcm5pbmcgb24gc29tZQotYXJjaGl0ZWN0dXJlcy4gIFRoaXMgcGF0Y2ggY2hlYXRzIG91ciB3YXkgYXJvdW5kIHRoaXMuCi0KLVdlIGFsc28gZWxpbWluYXRlIGFuIHVudXNlZCBjb25zdGFudCB3aGljaCBjYXVzZXMgYSBmYXRhbCB3YXJuaW5nLgotCi1VcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvZGUgZG9lcyBub3QgZXhpc3QgaW4gdmVyc2lvbiA0LnhdCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotLS0tIGEvbGliL2RvX3lwY2FsbC5jCi0rKysgYi9saWIvZG9feXBjYWxsLmMKLUBAIC00NCw3ICs0NCw2IEBAIHN0cnVjdCBkb21fYmluZGluZwotIHR5cGVkZWYgc3RydWN0IGRvbV9iaW5kaW5nIGRvbV9iaW5kaW5nOwotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGltZXZhbCBSUENUSU1FT1VUID0gezI1LCAwfTsKLS1zdGF0aWMgY29uc3Qgc3RydWN0IHRpbWV2YWwgVURQVElNRU9VVCA9IHs1LCAwfTsKLSBzdGF0aWMgaW50IGNvbnN0IE1BWFRSSUVTID0gMjsKLSBzdGF0aWMgcHRocmVhZF9tdXRleF90IHlwYmluZGxpc3RfbG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7Ci0gc3RhdGljIGRvbV9iaW5kaW5nICp5cGJpbmRsaXN0ID0gTlVMTDsKLUBAIC0zODEsNyArMzgwLDcgQEAgX195cGNsbnRfY2FsbCAodV9sb25nIHByb2csIHhkcnByb2NfdCB4YQotIAotIGludAotIGRvX3lwY2FsbCAoY29uc3QgY2hhciAqZG9tYWluLCB1X2xvbmcgcHJvZywgeGRycHJvY190IHhhcmdzLAotLQkgICBjYWRkcl90IHJlcSwgeGRycHJvY190IHhyZXMsIGNhZGRyX3QgcmVzcCkKLSsJICAgY2FkZHJfdCByZXEsIHhkcnByb2NfdCB4cmVzLCB2b2lkICpyZXNwKQotIHsKLSAgIGRvbV9iaW5kaW5nICp5ZGI7Ci0gICBpbnQgc3RhdHVzOwotQEAgLTQ1MCw3ICs0NDksNyBAQCBkb195cGNhbGwgKGNvbnN0IGNoYXIgKmRvbWFpbiwgdV9sb25nIHByCi0gLyogTGlrZSBkb195cGNhbGwsIGJ1dCB0cmFuc2xhdGUgdGhlIHN0YXR1cyB2YWx1ZSBpZiBuZWNlc3NhcnkuICAqLwotIGludAotIGRvX3lwY2FsbF90ciAoY29uc3QgY2hhciAqZG9tYWluLCB1X2xvbmcgcHJvZywgeGRycHJvY190IHhhcmdzLAotLQkgICAgICBjYWRkcl90IHJlcSwgeGRycHJvY190IHhyZXMsIGNhZGRyX3QgcmVzcCkKLSsJICAgICAgY2FkZHJfdCByZXEsIHhkcnByb2NfdCB4cmVzLCB2b2lkICpyZXNwKQotIHsKLSAgIGludCBzdGF0dXMgPSBkb195cGNhbGwgKGRvbWFpbiwgcHJvZywgeGFyZ3MsIHJlcSwgeHJlcywgcmVzcCk7Ci0gICBpZiAoc3RhdHVzID09IFlQRVJSX1NVQ0NFU1MpCi0tLS0gYS9saWIvaW50ZXJuYWwuaAotKysrIGIvbGliL2ludGVybmFsLmgKLUBAIC0xNyw4ICsxNyw4IEBACi0gI2RlZmluZSBfSU5URVJOQUxfSF8KLSAKLSBleHRlcm4gaW50IGRvX3lwY2FsbCAoY29uc3QgY2hhciAqZG9tYWluLCB1X2xvbmcgcHJvZywgeGRycHJvY190IHhhcmdzLAotLQkJICAgICAgY2FkZHJfdCByZXEsIHhkcnByb2NfdCB4cmVzLCBjYWRkcl90IHJlc3ApOwotKwkJICAgICAgY2FkZHJfdCByZXEsIHhkcnByb2NfdCB4cmVzLCB2b2lkICpyZXNwKTsKLSBleHRlcm4gaW50IGRvX3lwY2FsbF90ciAoY29uc3QgY2hhciAqZG9tYWluLCB1X2xvbmcgcHJvZywgeGRycHJvY190IHhhcmdzLAotLQkJCSBjYWRkcl90IHJlcSwgeGRycHJvY190IHhyZXMsIGNhZGRyX3QgcmVzcCk7Ci0rCQkJIGNhZGRyX3QgcmVxLCB4ZHJwcm9jX3QgeHJlcywgdm9pZCAqcmVzcCk7Ci0gZXh0ZXJuIGludCB5cF9tYXBsaXN0IChjb25zdCBjaGFyICosIHN0cnVjdCB5cG1hcGxpc3QgKiopOwotICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy95cC10b29scy1pcHY0LWlwdjYtUHJvdmlkZS1hbi1pbi1wbGFjZS12ZXJzaW9uLW9mLW1hcHY0djZhZGRyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29scy95cC10b29scy1pcHY0LWlwdjYtUHJvdmlkZS1hbi1pbi1wbGFjZS12ZXJzaW9uLW9mLW1hcHY0djZhZGRyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWY1NjlmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHMveXAtdG9vbHMtaXB2NC1pcHY2LVByb3ZpZGUtYW4taW4tcGxhY2UtdmVyc2lvbi1vZi1tYXB2NHY2YWRkci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi1Gcm9tIGExZWYxMGQ2M2IwZWEzNGM3ODhkNTQzMmU5NGM3MmIwMGFlNTVlMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb2UgTWFjRG9uYWxkIDxqb2VfbWFjZG9uYWxkQG1lbnRvci5jb20+Ci1EYXRlOiBGcmksIDI3IEZlYiAyMDE1IDEyOjA0OjEwIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlwdjQvaXB2NjogUHJvdmlkZSBhbiBpbi1wbGFjZSB2ZXJzaW9uIG9mIG1hcHY0djZhZGRyLmgKLQotbWFwdjR2NmFkZHIuaCBpc24ndCBhbHdheXMgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24geW91ciBidWlsZCwgYnV0Ci1uaXMtaG9zdHMuYyBvbmx5IG5lZWRzIGl0IGZvciBhIHNpbmdsZSwgaW5saW5lIGZ1bmN0aW9uLiAgU28gZHJvcCBhIGNvcHkKLWhlcmUgcmF0aGVyIHRoYW4gcGxheWluZyBnYW1lcyB3aXRoIHRoZSBpbmNsdWRlIHBhdGggdGhhdCB3b3VsZAotcG90ZW50aWFsbHkgbGVhZCB0byBjcm9zcy1jb21waWxhdGlvbiBpc3N1ZXMuCi0KLVVwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBNYWNEb25hbGQgPGpvZV9tYWNkb25hbGRAbWVudG9yLmNvbT4KLS0tLQotIG5zc19uaXM2L21hcHY0djZhZGRyLmggfCA2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIG5zc19uaXM2L25pcy1ob3N0cy5jICAgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBuc3NfbmlzNi9tYXB2NHY2YWRkci5oCi0KLWRpZmYgLS1naXQgYS9uc3NfbmlzNi9tYXB2NHY2YWRkci5oIGIvbnNzX25pczYvbWFwdjR2NmFkZHIuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjdmODVmN2QKLS0tLSAvZGV2L251bGwKLSsrKyBiL25zc19uaXM2L21hcHY0djZhZGRyLmgKLUBAIC0wLDAgKzEsNjkgQEAKLSsvKgotKyAqICsrQ29weXJpZ2h0KysgMTk4NSwgMTk4OCwgMTk5MwotKyAqIC0KLSsgKiBDb3B5cmlnaHQgKGMpIDE5ODUsIDE5ODgsIDE5OTMKLSsgKiAgICBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0rICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsgKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0rICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0rICogU1VDSCBEQU1BR0UuCi0rICogLQotKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5MyBieSBEaWdpdGFsIEVxdWlwbWVudCBDb3Jwb3JhdGlvbi4KLSsgKgotKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQotKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKLSsgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLCBhbmQgdGhhdAotKyAqIHRoZSBuYW1lIG9mIERpZ2l0YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yCi0rICogcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBkb2N1bWVudCBvciBzb2Z0d2FyZSB3aXRob3V0Ci0rICogc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBESUdJVEFMIEVRVUlQTUVOVCBDT1JQLiBESVNDTEFJTVMgQUxMCi0rICogV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUwotKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gICBJTiBOTyBFVkVOVCBTSEFMTCBESUdJVEFMIEVRVUlQTUVOVAotKyAqIENPUlBPUkFUSU9OIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwKLSsgKiBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IKLSsgKiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUwotKyAqIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUwotKyAqIFNPRlRXQVJFLgotKyAqIC0KLSsgKiAtLUNvcHlyaWdodC0tCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KLSsKLStzdGF0aWMgdm9pZAotK21hcF92NHY2X2FkZHJlc3MgKGNvbnN0IGNoYXIgKnNyYywgY2hhciAqZHN0KQotK3sKLSsgIHVfY2hhciAqcCA9ICh1X2NoYXIgKikgZHN0OwotKyAgaW50IGk7Ci0rCi0rICAvKiBNb3ZlIHRoZSBJUHY0IHBhcnQgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uLiAgKi8KLSsgIG1lbWNweSAoZHN0ICsgMTIsIHNyYywgSU5BRERSU1opOwotKwotKyAgLyogTWFyayB0aGlzIGlwdjYgYWRkciBhcyBhIG1hcHBlZCBpcHY0LiAqLwotKyAgZm9yIChpID0gMDsgaSA8IDEwOyBpKyspCi0rICAgICpwKysgPSAweDAwOwotKyAgKnArKyA9IDB4ZmY7Ci0rICAqcCA9IDB4ZmY7Ci0rfQotZGlmZiAtLWdpdCBhL25zc19uaXM2L25pcy1ob3N0cy5jIGIvbnNzX25pczYvbmlzLWhvc3RzLmMKLWluZGV4IGFmOTljNzQuLjk2ZDhmYTEgMTAwNjQ0Ci0tLS0gYS9uc3NfbmlzNi9uaXMtaG9zdHMuYwotKysrIGIvbnNzX25pczYvbmlzLWhvc3RzLmMKLUBAIC0zNiw3ICszNiw3IEBACi0gI2luY2x1ZGUgIm5zcy1uaXM2LmgiCi0gCi0gLyogR2V0IGltcGxlbWVudGF0aW9uIGZvciBzb21lIGludGVybmFsIGZ1bmN0aW9ucy4gKi8KLS0jaW5jbHVkZSA8cmVzb2x2L21hcHY0djZhZGRyLmg+Ci0rI2luY2x1ZGUgIm1hcHY0djZhZGRyLmgiCi0gCi0gI2RlZmluZSBFTlROQU1FICAgICAgICAgaG9zdGVudAotICNkZWZpbmUgREFUQUJBU0UgICAgICAgICJob3N0cyIKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29sc18zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JkNDYzMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMgVGhpcyBwYWNrYWdlIGJ1aWxkcyB0b29scyB0byBtYW5hZ2UgTklTCi0jIFRoZSBzb3VyY2UgcGFja2FnZSBpcyB1dGlscy9uZXQvTklTL3lwLXRvb2xzCi0jCi1yZXF1aXJlIG5pcy5pbmMKLQotU1VNTUFSWSA9ICJOSVMgY2xpZW50IHByb2dyYW1zIgotREVTQ1JJUFRJT04gPSAiIFwKLU5ldHdvcmsgSW5mb3JtYXRpb24gU2VydmljZSB0b29scy4gIFwKLVRoaXMgcGFja2FnZSBjb250YWlucyB5cGNhdCwgeXBtYXRjaCwgeXBzZXQsIFwKLXlwd2hpY2gsIHlwcGFzc3dkLCBkb21haW5uYW1lLCBuaXNkb21haW5uYW1lIFwKLWFuZCB5cGRvbWFpbm5hbWUuIFwKLSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpbnV4LW5pcy5vcmcvZG93bmxvYWQveXAtdG9vbHMvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kb21haW5uYW1lLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8veXAtdG9vbHMtaXB2NC1pcHY2LVByb3ZpZGUtYW4taW4tcGxhY2UtdmVyc2lvbi1vZi1tYXB2NHY2YWRkci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbGlnbm1lbnQtY2hlYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWIteXBfYWxsX2hvc3QuYy1GaXgtYnVpbGQtd2l0aC1nY2MtNy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhY2ViZWVjYzExYTczZmI4MDk3NTAzNjcwMzQ0ODM0YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MTJiZTgxN2RmM2Q0YzI1ODEzNTUyYmUzMzZjNmM2YWQ1YWVkYWY2NTYxMWI4MWFmM2FkOWY5OGZiM2MyZTUwIgotCi1ERVBFTkRTID0gImxpYnRpcnBjIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZG9tYWlubmFtZS5zZXJ2aWNlIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcHJvZ19TVFJJUD0vYmluL3RydWUiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgLS1saWJkaXI9JHtsaWJkaXJ9L3lwLW5pcy8gXAotICAgICAgICAgICAgICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9L3lwLW5pcy8gXAotICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfSArPSAiICR7bGliZGlyfS95cC1uaXMvKi5zby4qLiogJHtsaWJkaXJ9L3lwLW5pcy9wa2djb25maWcvIgotRklMRVNfJHtQTn0tZGJnICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiAke2xpYmRpcn0veXAtbmlzLyouc28gJHtsaWJkaXJ9L3lwLW5pcy8qLnNvLlsxMl0gJHtsaWJkaXJ9L3lwLW5pcy8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8qLmEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kb21haW5uYW1lLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHNfNC4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzQuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzk3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwLXRvb2xzXzQuMi4yLmJiCkBAIC0wLDAgKzEsNDYgQEAKKyMgVGhpcyBwYWNrYWdlIGJ1aWxkcyB0b29scyB0byBtYW5hZ2UgTklTCisjIFRoZSBzb3VyY2UgcGFja2FnZSBpcyB1dGlscy9uZXQvTklTL3lwLXRvb2xzCisjCityZXF1aXJlIG5pcy5pbmMKKworU1VNTUFSWSA9ICJOSVMgY2xpZW50IHByb2dyYW1zIgorREVTQ1JJUFRJT04gPSAiIFwKK05ldHdvcmsgSW5mb3JtYXRpb24gU2VydmljZSB0b29scy4gIFwKK1RoaXMgcGFja2FnZSBjb250YWlucyB5cGNhdCwgeXBtYXRjaCwgeXBzZXQsIFwKK3lwd2hpY2gsIHlwcGFzc3dkLCBkb21haW5uYW1lLCBuaXNkb21haW5uYW1lIFwKK2FuZCB5cGRvbWFpbm5hbWUuIFwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpbnV4LW5pcy5vcmcvZG93bmxvYWQveXAtdG9vbHMvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9kb21haW5uYW1lLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS15cGJpbmQzX2JpbmRpbmdfZHVwLmMtSW5jbHVkZS1zdHJpbmcuaC1mb3Itc3RyZHVwLWRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDIteXBfZHVtcF9iaW5kaW5ncy5jLUluY2x1ZGUtc3RyaW5nLmgtZm9yLW1lbXNldC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmYjRhOGJmZmI0NGFlNWQzMzkwMzUxZDY3ZjMyMGVmMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzdmMTlhOTg2MzgyYjI3NWJmNGEyYjFhNjllYjI2Njg5ZDZmNGFjMDU2ZGRhYTIxNzg0ZDZiODBlYjk4ZmFhIgorCitERVBFTkRTID0gImxpYnRpcnBjIGxpYm5zbDIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkb21haW5uYW1lLnNlcnZpY2UiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wcm9nX1NUUklQPS9iaW4vdHJ1ZSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1kb21haW5uYW1lIFwKKyAgICAgICAgICAgICAgICIKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtV25vLWVycm9yPWNwcCIKKworRklMRVNfJHtQTn0gKz0gIiAke2xpYmRpcn0veXAtbmlzLyouc28uKi4qICR7bGliZGlyfS95cC1uaXMvcGtnY29uZmlnLyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiICR7bGliZGlyfS95cC1uaXMvLmRlYnVnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIgJHtsaWJkaXJ9L3lwLW5pcy8qLnNvICR7bGliZGlyfS95cC1uaXMvKi5zby5bMTJdICR7bGliZGlyfS95cC1uaXMvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiICR7bGliZGlyfS95cC1uaXMvKi5hIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZG9tYWlubmFtZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdC8wMDAxLWRuc19ob3N0cy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXQvMDAwMS1kbnNfaG9zdHMtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDNiMGE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXQvMDAwMS1kbnNfaG9zdHMtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIDU0NTI5NjE3NTAyNzViMWUzZjdjOTVlOTUyODMzOGYwZWUwMzU3YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAwOToxNzozNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBkbnNfaG9zdHM6IEZpeCBidWlsZCB3aXRoIG11c2wKKworQWRkIE5FVERCXyogZGVmaW5lcyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSBpbiBtdXNsCityZW1vdmUgbmVlZCBmb3Igc3lzL2NkZWZzLmggYnkgcmVtb3ZlIF9fUAorQWRkIF9HTlVfU09VUkNFIGZvciBtaXNzaW5nIHVfY2hhciBkZWZpbml0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgbGliL01ha2VmaWxlLmFtIHwgMiArLQorIGxpYi9kbnNfaG9zdHMuYyB8IDkgKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KK2luZGV4IDk3N2E4ZGIuLjM1Y2I1YjMgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2xpYi9NYWtlZmlsZS5hbQorQEAgLTgsNyArOCw3IEBACisgbm9pbnN0X0xJQlJBUklFUyA9IGxpYmNvbXBhdC5hCisgbm9pbnN0X0hFQURFUlMgPSB5cGJpbmQzX2JpbmRpbmcuaAorIAorLUFNX0NGTEFHUyA9IC1EX1JFRU5UUkFOVD0xIEBXQVJORkxBR1NACisrQU1fQ0ZMQUdTID0gLURfR05VX1NPVVJDRSAtRF9SRUVOVFJBTlQ9MSBAV0FSTkZMQUdTQAorIEFNX0NQUEZMQUdTID0gLUkkKHNyY2RpcikgQFRJUlBDX0NGTEFHU0AgQE5TTF9DRkxBR1NAIC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKKyAKKyBsaWJjb21wYXRfYV9TT1VSQ0VTID0gZG5zX2hvc3RzLmMgcmVzX29wdGlvbnMuaCB5cGJpbmQzX2JpbmRpbmdfZHVwLmMgXAorZGlmZiAtLWdpdCBhL2xpYi9kbnNfaG9zdHMuYyBiL2xpYi9kbnNfaG9zdHMuYworaW5kZXggZmQ0MjFmZC4uNjA2Nzg3OSAxMDA2NDQKKy0tLSBhL2xpYi9kbnNfaG9zdHMuYworKysrIGIvbGliL2Ruc19ob3N0cy5jCitAQCAtNjQsNiArNjQsNyBAQAorIAorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyAjaW5jbHVkZSA8YXJwYS9uYW1lc2VyLmg+CitAQCAtODQsNiArODUsMTIgQEAgZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpfZ2V0aHRieWFkZHIoY29uc3QgY2hhciAqLCBpbnQsIGludCk7CisgI2lmbmRlZiBMT0dfQVVUSAorICMgZGVmaW5lIExPR19BVVRIIDAKKyAjZW5kaWYKKysjaWZuZGVmIE5FVERCX1NVQ0NFU1MKKysjIGRlZmluZSBORVREQl9TVUNDRVNTIDAKKysjZW5kaWYKKysjaWZuZGVmIE5FVERCX0lOVEVSTkFMCisrIyBkZWZpbmUgTkVUREJfSU5URVJOQUwgLTEKKysjZW5kaWYKKyAKKyAjZGVmaW5lIE1VTFRJX1BUUlNfQVJFX0FMSUFTRVMgMQkvKiBYWFggLSBleHBlcmltZW50YWwgKi8KKyAKK0BAIC0xMDEsNyArMTA4LDcgQEAgc3RhdGljIGNoYXIgaG9zdGJ1Zls4KjEwMjRdOworIHN0YXRpYyBzdHJ1Y3QgaW5fYWRkciBob3N0X2FkZHI7CisgCisgI2lmZGVmIFJFU09MVlNPUlQKKy1zdGF0aWMgdm9pZCBhZGRyc29ydCBfX1AoKGNoYXIgKiosIGludCkpOworK3N0YXRpYyB2b2lkIGFkZHJzb3J0IChjaGFyICoqLCBpbnQpOworICNlbmRpZgorIAorICNpZiBQQUNLRVRTWiA+IDEwMjQKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzEuMzguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdF8xLjM4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWMwYWE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzEuMzguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0jIFRoaXMgcGFja2FnZSBidWlsZHMgdGhlIE5JUyB5cGJpbmQgZGFlbW9uCi0jIFRoZSBzb3VyY2UgcGFja2FnZSBpcyB1dGlscy9uZXQvTklTL3lwYmluZC1tdAotIwotcmVxdWlyZSBuaXMuaW5jCi0KLURFU0NSSVBUSU9OID0gIiBcCi1NdWx0aXRocmVhZGVkIE5JUyBiaW5kIHNlcnZpY2UgKHlwYmluZC1tdCkuICBcCi15cGJpbmQtbXQgaXMgYSBjb21wbGV0ZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgYSBOSVMgXAotYmluZGluZyBkYWVtb24gZm9yIExpbnV4LiBJdCBoYXMgdGhlIGZvbGxvd2luZyBcCi1mZWF0dXJlcy4gIFN1cHBvcnRzIHlwYmluZCBwcm90b2NvbCBWMSBhbmQgVjIuICBcCi1Vc2VzIHRocmVhZHMgZm9yIGJldHRlciByZXNwb25zZS4gIFN1cHBvcnRzIG11bHRpcGxlIFwKLWRvbWFpbiBiaW5kaW5ncy4gIFN1cHBvcnRzIC92YXIveXAvYmluZGluZy8qIGZpbGUgXAotZm9yIExpbnV4IGxpYmMgNC81IGFuZCBnbGliYyAyLnguICBTdXBwb3J0cyBhIGxpc3QgXAotb2Yga25vd24gc2VjdXJlIE5JUyBzZXJ2ZXIgKC9ldGMveXAuY29uZikgQmluZHMgdG8gXAotdGhlIHNlcnZlciB3aGljaCBhbnN3ZXJlZCBhcyBmaXJzdC4gXAotXAotVGhpcyBpcyB0aGUgZmluYWwgSVB2NC1vbmx5IHZlcnNpb24gb2YgeXBiaW5kLW10LiBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4LW5pcy5vcmcvbmlzL3lwYmluZC1tdC9pbmRleC5odG1sIgotREVQRU5EUyA9ICIgXAotICAgICAgICAgICB5cC10b29scyBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAotICAgICAgICAgICIKLVJERVBFTkRTXyR7UE59ICs9ICJ5cC10b29scyIKLQotIyB5cGJpbmQtbXQgbm93IHByb3ZpZGVzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB5cGJpbmQKLSMgYW5kIGlzIHVzZWQgaW4gcGxhY2Ugb2YgaXQuCi1QUk9WSURFUyArPSAieXBiaW5kIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9kb3dubG9hZC95cGJpbmQtbXQvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly95cGJpbmQuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly95cGJpbmQuc2VydmljZSBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMDk0MDg4YzBlMjgyZmE3ZjNiM2RkNmNjNTFkMGE0ZTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTkzMGNlMTlmNmNjZmUxMDQwMGYzNDk3YjMxODY3ZjcxNjkwZDJiY2QzZjViNTc1MTk5ZmE5MTU1NTliNzc0NiIKLQotaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ5cGJpbmQuc2VydmljZSIKLUlOSVRTQ1JJUFRfTkFNRSA9ICJ5cGJpbmQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA0NCAzIDUgLiBzdG9wIDcwIDAgMSAyIDYgLiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcHJvZ19TVFJJUD0vYmluL3RydWUiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcmNTLmQKLQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3lwYmluZC5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC95cGJpbmQKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS95cGJpbmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotfQotCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdF8yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdF8yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiN2U1MDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotIyBUaGlzIHBhY2thZ2UgYnVpbGRzIHRoZSBOSVMgeXBiaW5kIGRhZW1vbgotIyBUaGUgc291cmNlIHBhY2thZ2UgaXMgdXRpbHMvbmV0L05JUy95cGJpbmQtbXQKLSMKLXJlcXVpcmUgbmlzLmluYwotCi1ERVNDUklQVElPTiA9ICIgXAotTXVsdGl0aHJlYWRlZCBOSVMgYmluZCBzZXJ2aWNlICh5cGJpbmQtbXQpLiAgXAoteXBiaW5kLW10IGlzIGEgY29tcGxldGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIGEgTklTIFwKLWJpbmRpbmcgZGFlbW9uIGZvciBMaW51eC4gSXQgaGFzIHRoZSBmb2xsb3dpbmcgXAotZmVhdHVyZXMuICBTdXBwb3J0cyB5cGJpbmQgcHJvdG9jb2wgVjEgYW5kIFYyLiAgXAotVXNlcyB0aHJlYWRzIGZvciBiZXR0ZXIgcmVzcG9uc2UuICBTdXBwb3J0cyBtdWx0aXBsZSBcCi1kb21haW4gYmluZGluZ3MuICBTdXBwb3J0cyAvdmFyL3lwL2JpbmRpbmcvKiBmaWxlIFwKLWZvciBMaW51eCBsaWJjIDQvNSBhbmQgZ2xpYmMgMi54LiAgU3VwcG9ydHMgYSBsaXN0IFwKLW9mIGtub3duIHNlY3VyZSBOSVMgc2VydmVyICgvZXRjL3lwLmNvbmYpIEJpbmRzIHRvIFwKLXRoZSBzZXJ2ZXIgd2hpY2ggYW5zd2VyZWQgYXMgZmlyc3QuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9uaXMveXBiaW5kLW10L2luZGV4Lmh0bWwiCi1ERVBFTkRTID0gInlwLXRvb2xzICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi1QUk9WSURFUyArPSAieXBiaW5kIgotCi1QTkJMQUNLTElTVFt5cGJpbmQtbXRdID89ICJCUk9LRU46IERlcGVuZHMgb24gYnJva2VuIHlwLXRvb2xzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9kb3dubG9hZC95cGJpbmQtbXQvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly95cGJpbmQuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly95cGJpbmQuc2VydmljZSBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNTRlMjA0MGQ4MjY2YWU3ZDMwMmQwODFjYTMxMGM4YTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGMyZjdkOTdjOTRkY2FiMGFjZmRjZDExNWNkOGI0NjRlYjhjNDI3ZTRiYjBmZTY4NDA0YWU3NDY1ZjUxN2NkMyIKLQotaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ5cGJpbmQuc2VydmljZSIKLUlOSVRTQ1JJUFRfTkFNRSA9ICJ5cGJpbmQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA0NCAzIDUgLiBzdG9wIDcwIDAgMSAyIDYgLiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcHJvZ19TVFJJUD0vYmluL3RydWUiCi0KLUVYVFJBX09FQ09ORiA9ICJQS0dfQ09ORklHX1BBVEg9JyR7U1RBR0lOR19MSUJESVJ9L3lwLW5pcy9wa2djb25maWcvJyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9yY1MuZAotCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0veXBiaW5kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3lwYmluZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3lwYmluZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi19Ci0KLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzIuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODIyZjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMi40LmJiCkBAIC0wLDAgKzEsNjIgQEAKKyMgVGhpcyBwYWNrYWdlIGJ1aWxkcyB0aGUgTklTIHlwYmluZCBkYWVtb24KKyMgVGhlIHNvdXJjZSBwYWNrYWdlIGlzIHV0aWxzL25ldC9OSVMveXBiaW5kLW10CisjCityZXF1aXJlIG5pcy5pbmMKKworREVTQ1JJUFRJT04gPSAiIFwKK011bHRpdGhyZWFkZWQgTklTIGJpbmQgc2VydmljZSAoeXBiaW5kLW10KS4gIFwKK3lwYmluZC1tdCBpcyBhIGNvbXBsZXRlIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBhIE5JUyBcCitiaW5kaW5nIGRhZW1vbiBmb3IgTGludXguIEl0IGhhcyB0aGUgZm9sbG93aW5nIFwKK2ZlYXR1cmVzLiAgU3VwcG9ydHMgeXBiaW5kIHByb3RvY29sIFYxIGFuZCBWMi4gIFwKK1VzZXMgdGhyZWFkcyBmb3IgYmV0dGVyIHJlc3BvbnNlLiAgU3VwcG9ydHMgbXVsdGlwbGUgXAorZG9tYWluIGJpbmRpbmdzLiAgU3VwcG9ydHMgL3Zhci95cC9iaW5kaW5nLyogZmlsZSBcCitmb3IgTGludXggbGliYyA0LzUgYW5kIGdsaWJjIDIueC4gIFN1cHBvcnRzIGEgbGlzdCBcCitvZiBrbm93biBzZWN1cmUgTklTIHNlcnZlciAoL2V0Yy95cC5jb25mKSBCaW5kcyB0byBcCit0aGUgc2VydmVyIHdoaWNoIGFuc3dlcmVkIGFzIGZpcnN0LiBcCitcCitUaGlzIGlzIHRoZSBmaW5hbCBJUHY0LW9ubHkgdmVyc2lvbiBvZiB5cGJpbmQtbXQuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtbmlzLm9yZy9uaXMveXBiaW5kLW10L2luZGV4Lmh0bWwiCitERVBFTkRTID0gIiBcCisgICAgICAgICAgIHlwLXRvb2xzIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisgICAgICAgICAgIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBic2QtaGVhZGVycyBuc3MiCitSREVQRU5EU18ke1BOfSArPSAieXAtdG9vbHMiCisKKyMgeXBiaW5kLW10IG5vdyBwcm92aWRlcyBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgeXBiaW5kCisjIGFuZCBpcyB1c2VkIGluIHBsYWNlIG9mIGl0LgorUFJPVklERVMgKz0gInlwYmluZCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpbnV4LW5pcy5vcmcvZG93bmxvYWQveXBiaW5kLW10LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8veXBiaW5kLmluaXQgXAorICAgICAgICAgICBmaWxlOi8veXBiaW5kLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kbnNfaG9zdHMtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYWVjY2QwZDExYzA2NGQ1ZDU5YzU2OTQxYmNhNjgyYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMmUxZmE4ZmM5OTJhMTJiMjg5YzIyOWUwMGUzOGMyMGQ1OTA3MGMzYmNmMDhiYWJmNDBjNjkyNTE1YzM0MGUwIgorCitpbmhlcml0IHN5c3RlbWQgdXBkYXRlLXJjLmQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInlwYmluZC5zZXJ2aWNlIgorSU5JVFNDUklQVF9OQU1FID0gInlwYmluZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDQ0IDMgNSAuIHN0b3AgNzAgMCAxIDIgNiAuIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9wcm9nX1NUUklQPS9iaW4vdHJ1ZSIKKworQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNzMyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9yY1MuZAorCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0veXBiaW5kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3lwYmluZAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3lwYmluZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCit9CisKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvMDAwMS1uRFBJLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wLzAwMDEtbkRQSS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZmZlZWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wLzAwMDEtbkRQSS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gNjU0M2YzZTJkNWZlMjE0ZTJmYzZjMDUwMjg5YmYxYWU3M2IxODcyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMwIEF1ZyAyMDE3IDEzOjU2OjI0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG5EUEk6IEluY2x1ZGUgc3lzL3R5cGVzLmgKKworTmVlZGVkIGZvciB1aW50X3QgdHlwZXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBuRFBJL3NyYy9pbmNsdWRlL2lwcV9hcGkuaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitJbmRleDogbnRvcC01LjAuMS9uRFBJL3NyYy9pbmNsdWRlL2lwcV9hcGkuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG50b3AtNS4wLjEub3JpZy9uRFBJL3NyYy9pbmNsdWRlL2lwcV9hcGkuaAorKysrIG50b3AtNS4wLjEvbkRQSS9zcmMvaW5jbHVkZS9pcHFfYXBpLmgKK0BAIC0yNCw2ICsyNCw3IEBACisgI2lmbmRlZiBfX0lQT1FVRV9BUElfSU5DTFVERV9GSUxFX18NCisgI2RlZmluZSBfX0lQT1FVRV9BUElfSU5DTFVERV9GSUxFX18NCisgDQorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCisgDQorICNpZiBkZWZpbmVkKEhBVkVfTlRPUCkgJiYgZGVmaW5lZChXSU4zMikNCisgI2luY2x1ZGUgPHdpbnNvY2syLmg+DQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3Auc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWFkMmEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wLnNlcnZpY2UKQEAgLTAsMCArMSwxNSBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1BIG5ldHdvcmsgdHJhZmZpYyBwcm9iZSBzaW1pbGFyIHRvIHRoZSBVTklYIHRvcCBjb21tYW5kCitSZXF1aXJlcz1uZXR3b3JrLnRhcmdldAorCitDb25kaXRpb25QYXRoRXhpc3RzPUBTWVNDT05GRElSQC9udG9wLmNvbmYKK0FmdGVyPXN5c2xvZy50YXJnZXQgbmV0d29yay50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPW9uZXNob3QKK1JlbWFpbkFmdGVyRXhpdD15ZXMKK0V4ZWNTdGFydD1ATElCRVhFQ0RJUkAvbnRvcC1oZWxwZXIgc3RhcnQKK0V4ZWNTdG9wPUBMSUJFWEVDRElSQC9udG9wLWhlbHBlciBzdG9wCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcF9jb25maWd1cmVfaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3BfY29uZmlndXJlX2luLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MmNiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3BfY29uZmlndXJlX2luLnBhdGNoCkBAIC0wLDAgKzEsMTY0IEBACisxKWFkZCAtLXdpdGgtcGNhcC1jb25maWcgb3B0aW9uIHRvIHVzZSBsaWJwY2FwJ3MgcGNhcC1jb25maWcKKzIpYWRkIEFDX0NIRUNLX0xJQiBpZiB1c2VyIGRpZG4ndCBzcGVjaWZ5IFBDQVBfUk9PVCBhbmQgcGNhcC1jb25maWcKKyAgcHV0IGl0IGJlZm9yZSBob3N0IGNoZWNrIHRvIG1ha2UgY3Jvc3MtY29tcGlsaW5nIGVhc2llci4KKyAgcGNhcCBkb2Vzbid0IG5lZWQgZXh0cmEgaW5jbHVkZSBhbmQgbGlicyBzbyBpdCBpcyBmaW5lLgorMylyZW1vdmUgb2xkIHJyZCBjb25maWd1cmUgY29kZSBidXQgdXNlIHBrZy1jb25maWcgdG8gY29uZmlnIHJyZAorICBycmR0b29sIHNob3VsZCBoYXZlIHRoZSBwa2ctY29uZmlnIGZpbGUgaW5zdGFsbGVkLgorNClmaXggcHl0aG9uLWNvbmZpZworNSljaGFuZ2UgQUNfVFJZX1JVTiB0byBBQ19DT01QSUxFX0lGRUxTRSBmb3IgcHRocmVhZF9yd2xvY2tfdCBjaGVja2luZworNilmaXggYSBuZXQtc25tcC1jb25maWcgYnVnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBZYW8gWmhhbyA8eWFvLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggMGM3YzBhNS4uY2FkNDBiZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjMwLDE0ICsyMzAsMTQgQEAgZG5sPgorIEFDX0FSR19XSVRIKHZvaWQsCisgICAgICAgICAgICAgICBbICArLUV4dGVybmFsLXNvdXJjZS1sb2NhdGlvbnM6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStdKQorIAorLUFDX0FSR19XSVRIKCAgcnJkLWhvbWUsCistICAgICAgICAgICAgICBbICAtLXdpdGgtcnJkLWhvbWU9RElSICAgICAgICBVc3VhbGx5IC91c3IvbG9jYWwvcnJkdG9vbC0xLjIueF0sCistICAgICAgICAgICAgICBSUkRfSE9NRT0iJHdpdGh2YWwiLAorLSAgICAgICAgICAgICAgUlJEX0hPTUU9L3Vzci9sb2NhbC9ycmR0b29sLTEuMi4xOSkKKyBBQ19BUkdfV0lUSCggIHBjYXAtcm9vdCwKKyAgICAgICAgICAgICAgIFsgIC0td2l0aC1wY2FwLXJvb3Q9RElSICAgICAgICBMQk5MIHBjYXAgbG9jYXRlZCBpbiBESVJdLAorICAgICAgICAgICAgICAgUENBUF9ST09UPSIkd2l0aHZhbCIsCisgICAgICAgICAgICAgICBQQ0FQX1JPT1Q9KQorK0FDX0FSR19XSVRIKCAgcGNhcC1jb25maWcsCisrICAgICAgICAgICAgICBbICAtLXdpdGgtcGNhcC1jb25maWc9cGF0aC9wY2FwLWNvbmZpZyB3aGVyZSB0byBmaW5kIHBjYXAtY29uZmlnXSwKKysgICAgICAgICAgICAgIFBDQVBfQ09ORklHPSIkd2l0aHZhbCIsCisrICAgICAgICAgICAgICBQQ0FQX0NPTkZJRz0pCisgQUNfQVJHX1dJVEgoICBnZGJtLXJvb3QsCisgICAgICAgICAgICAgICBbICAtLXdpdGgtZ2RibS1yb290PURJUiAgICAgICAgZ2RibSBsb2NhdGVkIGluIERJUl0sCisgICAgICAgICAgICAgICBHREJNX0RJUkVDVE9SWT0iJHdpdGh2YWwiLAorQEAgLTU1Niw2ICs1NTYsNyBAQCBpZiB0ZXN0ICIuJHtQQ0FQUklOR19ESVJ9IiAhPSAuOyB0aGVuCisgZWxzZQorIAorIFRNUF9ST09UPSR7SE9NRX0vUEZfUklORy91c2VybGFuZC9saWJwY2FwLworK0ZPVU5EX1BDQVA9MQorIGlmIHRlc3QgIi4ke1BDQVBfUk9PVH0iID09IC4gJiYKKyAgICB0ZXN0IC1kICR7VE1QX1JPT1R9ICYmCisgICAgdGVzdCAtciAke1RNUF9ST09UfS9saWJwY2FwLmE7IHRoZW4KK0BAIC01NjMsNiArNTY0LDE4IEBAIGlmIHRlc3QgIi4ke1BDQVBfUk9PVH0iID09IC4gJiYKKyAgICAgICAgQ09SRUxJQlM9IiR7Q09SRUxJQlN9IC1MJHtUTVBfUk9PVH0gLUwke0hPTUV9L1BGX1JJTkcvdXNlcmxhbmQvbGliIC1scGZyaW5nIC1scGNhcCAiCisgICAgICAgIElOQ1M9IiR7SU5DU30gLUkgJHtQQ0FQX1JPT1R9IgorICAgICAgICBBQ19NU0dfUkVTVUxUKFtmb3VuZCBpbiAkUENBUF9ST09UXSkKKytlbGlmIHRlc3QgLW4gIiR7UENBUF9DT05GSUd9IiAmJiB0ZXN0IC14ICIke1BDQVBfQ09ORklHfSI7IHRoZW4KKysgICAgICAgQ09SRUxJQlM9IiR7Q09SRUxJQlN9ICQoJHtQQ0FQX0NPTkZJR30gLS1saWJzKSIgCisrICAgICAgIElOQ1M9IiR7SU5DU30gJCgke1BDQVBfQ09ORklHfSAtLWNmbGFncykiCisrICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0xJQlBDQVAsIDEsIFtoYXZlIGxpYnBjYXAgXSkKKysgICAgICAgQUNfTVNHX1JFU1VMVChbZm91bmQgcGNhcC1jb25maWc6ICRQQ0FQX0NPTkZJRywgbGliczokKCR7UENBUF9DT05GSUd9IC0tbGlicykgY2ZsYWdzOiQoJHtQQ0FQX0NPTkZJR30gLS1jZmxhZ3MpXSkKKytlbHNlCisrICAgICBBQ19DSEVDS19MSUIocGNhcCwgcGNhcF9sb29rdXBkZXYsICwKKysgICAgICAgIFtGT1VORF9QQ0FQPV0pCisrZmkKKysKKytpZiB0ZXN0IC1uICIkRk9VTkRfUENBUCI7IHRoZW4KKysJOgorIGVsaWYgdGVzdCAiLiR7UENBUF9ST09UfSIgIT0gLjsgdGhlbgorICAgaWYgdGVzdCAtZCAkUENBUF9ST09UICYmCisgICAgICB0ZXN0IC1yICRQQ0FQX1JPT1QvbGliL2xpYnBjYXAuYSAmJgorQEAgLTg4MCw0NCArODkzLDExIEBAIEFDX0NIRUNLX0xJQihbel0sIFt6bGliVmVyc2lvbl0sIFtdLCBbCisgICAgICAgICBleGl0IC0xCisgICAgICAgICBdKQorIAorLSMgUlJECistaWYgdGVzdCAtZCAiJFJSRF9IT01FIjsgdGhlbgorLSAgIEFDX01TR19SRVNVTFQoY2hlY2tpbmcgZm9yIFJSRCBob21lLi4uIHllcykKKy1lbHNlCistICAgUlJEX0hPTUU9L3Vzci9sb2NhbC9ycmR0b29sCistICAgaWYgdGVzdCAtZCAiJFJSRF9IT01FIjsgdGhlbgorLSAgICAgIEFDX01TR19SRVNVTFQoQ2hlY2tpbmcgcnJkdG9vbCBpbiAkUlJEX0hPTUUpCistICAgZWxzZQorLSAgICAgIFJSRF9IT01FPS91c3IvbG9jYWwKKy0gICBmaQorLWZpCistCistUlJEX0xJQj0iLUwke1JSRF9IT01FfS9saWIgLWxycmRfdGgiCistCistaWYgdGVzdCAtZiAiJFJSRF9IT01FL2xpYi9saWJycmRfdGguc28iOyB0aGVuCistICAgQUNfTVNHX1JFU1VMVChjaGVja2luZyBmb3IgcnJkdG9vbC4uLiB5ZXMpCistZWxzZQorLSAgaWYgdGVzdCAtZiAiJFJSRF9IT01FL2xpYi9saWJycmRfdGguZHlsaWIiOyB0aGVuICMgT1NYCistICAgICBBQ19NU0dfUkVTVUxUKGNoZWNraW5nIGZvciBycmR0b29sLi4uIHllcykKKy0gIGVsc2UKKy0gICAgIGlmIHRlc3QgLWYgIiRSUkRfSE9NRS9saWIvbGlicnJkX3RoLmEiOyB0aGVuCistICAgICAgIEFDX01TR19SRVNVTFQoY2hlY2tpbmcgZm9yIHJyZHRvb2wuLi4geWVzKQorLSAgICAgZWxzZQorLSAgICAgICBBQ19DSEVDS19MSUIoW3JyZF90aF0sIFttYWluXSkKKy0gICAgICAgaWYgdGVzdCAiLiR7YWNfY3ZfbGliX3JyZF90aF9tYWlufSIgIT0gIi55ZXMiOyB0aGVuCistICAgICAgICAgQUNfTVNHX0VSUk9SKFVuYWJsZSB0byBmaW5kIFJSRCBhdCAkUlJEX0hPTUU6IHBsZWFzZSB1c2UgLS13aXRoLXJyZC1ob21lPURJUik7CistCSBBQ19NU0dfRVJST1IoUlJEIHNvdXJjZSBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly93d3cucnJkdG9vbC5vcmcvKTsKKy0gICAgICAgZWxzZQorLSAgICAgICAgIFJSRF9MSUI9CistICAgICAgIGZpCistICAgICBmaQorLSAgZmkKKy1maQorLQorLVJSRF9JTkM9CistaWYgdGVzdCAtZCAiJHtSUkRfSE9NRX0vaW5jbHVkZSI7IHRoZW4KKy0gIFJSRF9JTkM9Ii1JJHtSUkRfSE9NRX0vaW5jbHVkZSIKKy1maQorK1BLR19DSEVDS19NT0RVTEVTKCBbUlJEXSwgW2xpYnJyZF0gKQorK0FDX1NVQlNUKFJSRF9DRkxBR1MpCisrQUNfU1VCU1QoUlJEX0xJQlMpCisrUlJEX0lOQz0kUlJEX0ZMQUdTCisrUlJEX0xJQj0kUlJEX0xJQlMKKyAKKyBkbmw+IFRoZSBmYWlsZWQgcmVjaGVjayBzdHVmZiBiZWxvdyBpcyBjb3VydGVzeSBvZiBDaHJpcyBUdXJiZXZpbGxlIFt0dXJib0B2ZXJpby5uZXRdCisgZG5sPiBDaHJpcyBkZXZlbG9wZWQgdGhpcyBmb3IgU29sYXJpcyA5LCBjb25maXJtaW5nIHdvcmsgSSBoYWQgZG9uZSBlYXJsaWVyIGZvciBGcmVlQlNECitAQCAtMTA0MSw3ICsxMDIxLDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbc2NoZWQuaCBzeXMvc2NoZWQuaF0pCisgQUNfQ0hFQ0tfSEVBREVSUyhbcHRocmVhZC5oXSkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHIvdyBsb2NrcyBhcmUgc3VwcG9ydGVkXSkKKy1BQ19UUllfUlVOKFsKKytBQ19DT01QSUxFX0lGRUxTRShbCisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyAKKyBpbnQgbWFpbigpCitAQCAtMTQ0MywxNSArMTQyMywxNSBAQCBkbmw+IE5FVC1TTk1QCisgZG5sPgorIGlmIHRlc3QgIi4ke2FjX2Rpc2FibGVfc25tcH0iICE9ICIueWVzIjsgdGhlbgorICAgQUNfQ0hFQ0tfVE9PTChORVRTTk1QLCBuZXQtc25tcC1jb25maWcpCistICBpZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfYWNfY3RfTkVUU05NUCIgPSAieG5ldC1zbm1wLWNvbmZpZyI7IHRoZW4KKysgIGlmIHRlc3QgLW4gIiRORVRTTk1QIjsgdGhlbgorICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TTk1QLCAxLCBbU05NUCBpcyBzdXBwb3J0ZWRdKQorLSAgICBTTk1QTElCUz0iYG5ldC1zbm1wLWNvbmZpZyAtLWxpYnNgIgorKyAgICBTTk1QTElCUz0iYCRORVRTTk1QIC0tbGlic2AiCisgICAgIFNOTVBMSUJTPSJgZWNobyAke1NOTVBMSUJTfXxzZWQgLWUgcywnLVIuLi9saWInLCxnYCIKKyAgICAgZWNobyAibmV0LXNubXAgbGliczogJHtTTk1QTElCU30iCisgICAgIExJQlM9IiR7TElCU30gJHtTTk1QTElCU30iCisgZG5sIHJlbW92ZSB1bmVjZXNzYXJ5IHBhdGgKKyAgICAgTElCUz1gZWNobyAke0xJQlN9fHNlZCAtZSBzLCctUi4uL2xpYicsLGdgCistICAgIElOQ1M9IiR7SU5DU30gYG5ldC1zbm1wLWNvbmZpZyAtLWNmbGFnc2AiCisrICAgIElOQ1M9IiR7SU5DU30gYCRORVRTTk1QIC0tY2ZsYWdzYCIKKyAgIGVsc2UKKyAgICAgQUNfTVNHX1JFU1VMVChORVRTTk1QIGlzIG5vdCBwcmVzZW50OiBTTk1QIHN1cHBvcnQgaXMgZGlzYWJsZWQpCisgICBmaQorQEAgLTE0NjQsMTAgKzE0NDQsOSBAQCBTQVZFRF9MSUJTPSRMSUJTCisgZG5sPgorIGRubD4gUFlUSE9OCisgZG5sPgorLSAgQUNfQ0hFQ0tfVE9PTChQWVRIT04sIHB5dGhvbi1jb25maWcpCistICBQWVRIT05fQ09ORklHPSIiCisrICBBQ19DSEVDS19UT09MKFBZVEhPTl9DT05GSUcsIHB5dGhvbi1jb25maWcpCisgCistICBpZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfYWNfY3RfUFlUSE9OIiAhPSAieHB5dGhvbi1jb25maWciOyB0aGVuICAgCisrICBpZiB0ZXN0IC16ICIkUFlUSE9OX0NPTkZJRyI7IHRoZW4gICAKKyAgICAgICAgaWYgdGVzdCAtZiAiL2V0Yy9kZWJpYW5fdmVyc2lvbiI7IHRoZW4KKyAgICAgICAgCSAgIEFDX01TR19SRVNVTFQoUGxlYXNlIGluc3RhbGwgcHl0aG9uLWRldiBhbmQgcmVydW4gY29uZmlndXJlKQorIAkgICBleGl0IDEKK0BAIC0xNDgxLDggKzE0NjAsNiBAQCBkbmw+CisgICAgICAgICAgIFBZVEhPTl9DT05GSUc9InB5dGhvbi1jb25maWciCisgICAgICAgICBmaQorICAgICAgZmkKKy0gIGVsc2UKKy0gICAgIFBZVEhPTl9DT05GSUc9InB5dGhvbi1jb25maWciCisgICBmaQorIAorICAgaWYgdGVzdCAieCRQWVRIT05fQ09ORklHIiAhPSAieCI7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcF9jb25maWd1cmVfaW5fbmV0X3NubXBfY29uZmlnX2V4aXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX2NvbmZpZ3VyZV9pbl9uZXRfc25tcF9jb25maWdfZXhpc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5MTM4ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcF9jb25maWd1cmVfaW5fbmV0X3NubXBfY29uZmlnX2V4aXN0LnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK0NoZWNrIG5ldC1zbm1wLWNvbmZpZydzIGV4aXN0ZW5jZSBpbiBjYXNlIHVzZXIgc3BlY2lmaWVkIHRoZQorYWNfY3ZfcHJvZ19ORVRTTk1QIHRvIGF2b2lkIEhBVkVfU05NUCBkZWZpbmVkIGlmIHRoZSBzcGVjaWZpZWQKK25ldC1zbm1wLWNvbmZpZyBkb2Vzbid0IGV4aXN0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBZYW8gWmhhbyA8eWFvLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggNmYzZTg4Zi4uOGRkZjAxNyAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMTQyMyw3ICsxNDIzLDcgQEAgZG5sPiBORVQtU05NUAorIGRubD4KKyBpZiB0ZXN0ICIuJHthY19kaXNhYmxlX3NubXB9IiAhPSAiLnllcyI7IHRoZW4KKyAgIEFDX0NIRUNLX1RPT0woTkVUU05NUCwgbmV0LXNubXAtY29uZmlnKQorLSAgaWYgdGVzdCAtbiAiJE5FVFNOTVAiOyB0aGVuCisrICBpZiB0ZXN0IC1uICIkTkVUU05NUCIgLWEgLWUgIiRORVRTTk1QIjsgdGhlbgorICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TTk1QLCAxLCBbU05NUCBpcyBzdXBwb3J0ZWRdKQorICAgICBTTk1QTElCUz0iYCRORVRTTk1QIC0tbGlic2AiCisgICAgIFNOTVBMSUJTPSJgZWNobyAke1NOTVBMSUJTfXxzZWQgLWUgcywnLVIuLi9saWInLCxnYCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcF9pbml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX2luaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc2ODRjMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvbnRvcF9pbml0LnBhdGNoCkBAIC0wLDAgKzEsMjI4IEBACitNb2RpZnkgbnRvcC5pbml0IHRvIFdSTGludXggNS4wIHN0eWxlLgorCitGaXggYSBzbWFsbCBwcm9ibGVtIHRoYXQgd2hlbiBudG9wIG5vdCBydW5uaW5nLAorL2V0Yy9pbml0LmQvbnRvcCBzdG9wIHdpbGwgcmV0dXJuIDEKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogWWFvIFpoYW8gPHlhby56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBwYWNrYWdlcy9SZWRIYXQvbnRvcC5pbml0IHwgIDEwMiArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wYWNrYWdlcy9SZWRIYXQvbnRvcC5pbml0IGIvcGFja2FnZXMvUmVkSGF0L250b3AuaW5pdAoraW5kZXggNDBkNDlmMS4uYTE4OWM1OSAxMDA3NTUKKy0tLSBhL3BhY2thZ2VzL1JlZEhhdC9udG9wLmluaXQKKysrKyBiL3BhY2thZ2VzL1JlZEhhdC9udG9wLmluaXQKK0BAIC0xMCwxOSArMTAsOSBAQAorICMgICAgICAgICAgIFlvdSBoYXZlIHNldCB0aGUgYWRtaW4gcGFzc3dvcmQgLSByZWFkIGRvY3MvMVNUUlVOLnR4dAorICMgICAgICAgICAgIFlvdSBoYXZlIGNyZWF0ZWQgL2V0Yy9udG9wLmNvbmYgd2l0aCBhcHByb3ByaWF0ZSBwYXJhbWV0ZXJzLgorIAorLSMgIFRvIGlkZW50aWZ5IGFuIGludGVyZmFjZSB0byBudG9wLCB1c2UgdGhlIGZvbGxvd2luZyBmbGFncyAKKy0jICBpbiAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrLXNjcmlwdHMvaWZjZmctZXRoeAorLQorLSMgICBOVE9QPSJ5ZXMiICAgICAgPC0tLSBtZWFucyBmb3IgbnRvcCB0byB1c2UgdGhpcyBpbnRlcmZhY2UKKy0jICAgTlRPUENPTkZJRz0ieWVzIiAgPC0tLSBtZWFucyBmb3IgbnRvcCB0byBjb25maWd1cmUgdGhpcyBpbnRlcmZhY2UKKy0KKyAjIE5vdGUgdGhhdCBpZiB5b3UgZ2l2ZSBhIC1pIHBhcmFtZXRlciBpbiBlaXRoZXIgL2V0Yy9udG9wLmNvbmYgb3IKKyAjIHRoZSBjb21tYW5kIGxpbmUsIHRoZSBzY2FuIGlzIE5PVCBwZXJmb3JtZWQuICAKKyAKKy0jIEhvd2V2ZXIsIHdoZW4gaXQgY29tZXMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gc3RlcCwgd2l0aCBOVE9QQ09ORklHPSJ5ZXMiCistIyB0aGUgaW50ZXJmYWNlIGlzIGNvbmZpZ3VyZWQgcmVnYXJkbGVzcyBvZiBob3cgdGhlIGludGVyZmFjZSBsaXN0IHdhcworLSMgc3BlY2lmaWVkLgorLQorICMKKyAjICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KKyAjIAorQEAgLTEwNywxMSArOTcsNyBAQCBudG9wdXNlc3lzbG9nPSJsb2NhbDMiCisgaW52b2tlZD0kMAorIAorICMgU291cmNlIGZ1bmN0aW9uIGxpYnJhcnkuCistLiAvZXRjL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworLQorLSMgU291cmNlIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbi4KKy0uIC9ldGMvc3lzY29uZmlnL25ldHdvcmsKKy0KKysuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworIAorICMgQmFzaWMgc2FuaXR5IGNoZWNrcy4uLgorIGlmICEgWyAteCAkcHJvZyBdOyB0aGVuCitAQCAtMTI0LDE2ICsxMTAsNiBAQCBpZiAhIFsgLXggJHByb2cgXTsgdGhlbgorICAgZXhpdCAxCisgZmkKKyAKKy1pZiBbICR7TkVUV09SS0lOR30gPSAibm8iIF07IHRoZW4KKy0gIGVjaG8gIiIKKy0gIGVjaG8gIkVSUk9SIC0iCistICBlY2hvICIgICAgICAgIE5ldHdvcmtpbmcgaXMgbm90IHVwISIKKy0gIGVjaG8gIiIKKy0gIGVjaG8gIkFib3J0aW5nLi4uIgorLSAgZWNobyAiIgorLSAgZXhpdCAxCistZmkKKy0KKyBpZiAhIFsgLWYgJHtjb25mfSBdOyB0aGVuCisgICBlY2hvICIiCisgICBlY2hvICJFUlJPUiAtIgorQEAgLTE4MCw4ICsxNTYsOCBAQCBmaQorIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIkRFQlVHOiBwYXJtIGZpbGUgdGVtcCBpcyAke3Bhcm1maWxlfSI7IGZpCisgIAorIGNtZD1gZWNobyBcCistICAgIEAke2NvbmZ9IFwKKyAgICAgLWkgdGJkIFwKKysgICAgQCR7Y29uZn0gXAorICAgICAkZXh0cmEgJEBgCisgCisgZWNobyAke2NtZH0gfCBhd2sgJyBcCitAQCAtMzA1LDQyICsyODEsNiBAQCBsb2dnZXIgLXAgJHtudG9wdXNlc3lzbG9nfSAtdCAke25hbWV9JHtpbnN0YW5jZX0gLS0gIklOSVREIC0gICAgICBDb25maWd1cmF0aW9uCisgCisgIyBCdWlsZCBsaXN0IG9mIGludGVyZmFjZXMsIGUuZyAgZXRoMCBldGgxIGV0aDE6MQorICMgKFllYWgsIHdlJ2xsIGhhdmUgdG8gY29udmVydCB0aGF0IHRvIGV0aDAsZXRoMSxldGgxOjEgbGF0ZXIKKy1pZiBbICIuJHtudG9waW50ZXJmYWNlfSIgPSAiLnRiZCIgXTsgdGhlbgorLQorLSAgICBudG9waW50ZXJmYWNlPSIiCistICAgIGlmbGlzdD1gaXAgbGluayBzaG93IHwgXAorLSAgICAgICAgYXdrICcvXlswLTldKjpcIGV0aC8geyBwcmludGYoIiVzICIsIHN1YnN0cigkMiwgMSwgbGVuZ3RoKCQyKS0xKSkgfSdgCistICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSBTY2FubmluZyBhbGwgaW50ZXJmYWNlcyAkaWZsaXN0IgorLSAgICBpZiBbICIke2RlYnVnfSIgPSAieSIgXTsgdGhlbiBlY2hvICJERUJVRzogSW50ZXJmYWNlIGNhbmRpZGF0ZXMgYXJlICR7aWZsaXN0fSI7IGZpCistCistICAgIGZvciBldGggaW4gJGlmbGlzdDsgZG8KKy0KKy0gICAgICAgaWYgISBMQU5HPUMgZWdyZXAgLUwgIl5bTm5dW1R0XVtPb11bUHBdPVsnXCJdP1tZeV1bRWVdW1NzXVsnXCJdPyIgXAorLSAgICAgICAgICAgICAgICAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrLXNjcmlwdHMvaWZjZmctJGV0aCA+IC9kZXYvbnVsbCA7IHRoZW4KKy0gICAgICAgICAgICBsb2dnZXIgLXAgJHtudG9wdXNlc3lzbG9nfSAtdCAke25hbWV9JHtpbnN0YW5jZX0gLS0gIklOSVREIC0gJGV0aCBpcyBub3QgbnRvcD15ZXMsIHNraXBwaW5nIgorLSAgICAgICAgICAgIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIkRFQlVHOiAkZXRoIG5vdCBudG9wPXllcyI7IGZpCistICAgICAgICAgICAgY29udGludWUKKy0gICAgICAgZmkKKy0KKy0gICAgICAgbnRvcGludGVyZmFjZT0iJHtudG9waW50ZXJmYWNlfSAkZXRoIgorLSAgCistICAgICAgIGlwPWBpcCBhZGRyIHNob3cgJGV0aCB8IFwKKy0gICAgICAgICAgIGF3ayAnL2luZXQvIHsgcHJpbnRmKCIlcyIsIHN1YnN0cigkMiwgMSwgaW5kZXgoJDIsICIvIiktMSkpIH0nYAorLQorLSAgICAgICBpZiBbICIuJGlwIiA9ICIuIiBdOyB0aGVuCistICAgICAgICAgICBpcz0iaXMgdW5udW1iZXJlZCBpbnRlcmZhY2UiCistICAgICAgIGVsc2UKKy0gICAgICAgICAgIGlzPSJoYXMgSVAgYWRkcmVzcyAkaXAiCistICAgICAgIGZpCistICAgICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSAkZXRoIGlzIG50b3A9eWVzLCAke2lzfSIKKy0gICAgICAgaWYgWyAiJHtkZWJ1Z30iID0gInkiIF07IHRoZW4gZWNobyAiREVCVUc6ICRldGggbnRvcD15ZXMsICR7aXN9IjsgZmkKKy0KKy0gICAgZG9uZQorLQorLWVsc2UKKy0gICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtIFNraXBwaW5nIGludGVyZmFjZSBzY2FuIC0gbGlzdCBpbiBwYXJtcyIKKy1maQorLQorIGlmIFsgIngke250b3BpbnRlcmZhY2V9IiA9ICJ4IiBdOyB0aGVuCisgICBudG9waW50ZXJmYWNlPSJub25lIgorIGZpCitAQCAtNDYyLDEyICs0MDIsNiBAQCBjb25maWdfaW50ZXJmYWNlcyAoKSB7CisgICAgICAgICAgIGlmPSIke2lmfSwke2V0aH0iCisgICAgICAgZmkKKyAKKy0gICAgICAgaWYgISBMQU5HPUMgZWdyZXAgLUwgIl5bTm5dW1R0XVtPb11bUHBdW0NjXS4qPVsnXCJdP1tZeV1bRWVdW1NzXVsnXCJdPyIgXAorLSAgICAgICAgICAgICAgICAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrLXNjcmlwdHMvaWZjZmctJGV0aCA+IC9kZXYvbnVsbCA7IHRoZW4KKy0gICAgICAgICAgICBsb2dnZXIgLXAgJHtudG9wdXNlc3lzbG9nfSAtdCAke25hbWV9JHtpbnN0YW5jZX0gLS0gIklOSVREIC0gJGV0aCBpcyBub3QgbnRvcGNvbmZpZ3VyZT15ZXMsIHNraXBwaW5nIgorLSAgICAgICAgICAgIGNvbnRpbnVlCistICAgICAgIGZpCistCisgICAgICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtIENvbmZpZ3VyaW5nICRldGgiCisgICAgICAgaWYgWyAiJHtkZWJ1Z30iID0gInkiIF07IHRoZW4gZWNobyAiREVCVUc6IENvbmZpZ3VyaW5nICRldGgiOyBmaQorIAorQEAgLTUyNyw3ICs0NjEsNyBAQCBzdGFydCAoKSB7CisgICBzaG93X2V4dHJhCisgICBjb25maWdfaW50ZXJmYWNlcworIAorLSAgY21kPWBlY2hvICRwcm9nIFwKKysgIGNtZD1gZWNobyBcCisgICAgICAgICAgICAgICAgQCR7Y29uZn0gXAorICAgICAgICAgICAgICAgIC1pICRpZiBcCisgICAgICAgICAgICAgICAgJGV4dHJhICRAYAorQEAgLTU0MSw3ICs0NzUsNyBAQCBzdGFydCAoKSB7CisgICBpZiBbICIuJHtsZGxpYnBhdGh9IiAhPSAiLiIgXTsgdGhlbgorICAgICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIke2xkbGlicGF0aH0iCisgICBmaQorLSAgZGFlbW9uICR7Y21kfQorKyAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tZXhlYyAkcHJvZyAtLSAke2NtZH0KKyAgIFJFVFZBTD0kPworIAorICAgWyAkUkVUVkFMID0gMCBdICYmIHRvdWNoIC92YXIvbG9jay9zdWJzeXMvJHtuYW1lfSR7aW5zdGFuY2V9CitAQCAtNTUxLDYgKzQ4NSw3IEBAIHN0YXJ0ICgpIHsKKyBzdG9wICgpIHsKKyAgICMgc3RvcCBkYWVtb24KKyAKKysgIE5PVF9SVU5OSU5HPTEKKyAgIFJFVFZBTD0xCisgICBlY2hvIC1uICQiU3RvcHBpbmcgJHtuYW1lfSR7aW5zdGFuY2V9OiAiCisgICBsb2dnZXIgLXAgJHtudG9wdXNlc3lzbG9nfSAtdCAke25hbWV9JHtpbnN0YW5jZX0gLS0gIklOSVREIC0gU3RvcHBpbmc6ICR7bmFtZX0ke2luc3RhbmNlfSIKK0BAIC01NjMsMTMgKzQ5OCwxNCBAQCBzdG9wICgpIHsKKyAgICAgaWYgWyAkcmMgPSAwIF07IHRoZW4KKyAgICAgICBsb2dnZXIgLXAgJHtudG9wdXNlc3lzbG9nfSAtdCAke25hbWV9JHtpbnN0YW5jZX0gLS0gIklOSVREIC0gU2VuZGluZyBTSUdURVJNIHRvICR7cGlkfSIKKyAgICAgICBpZiBbICIke2RlYnVnfSIgPSAieSIgXTsgdGhlbiBlY2hvICJTZW5kaW5nIFNJR1RFUk0gdG8gJHtwaWR9IjsgZmkKKy0gICAgICBraWxsIC1zIFNJR1RFUk0gJHtwaWR9CisrICAgICAga2lsbCAtVEVSTSAke3BpZH0gMj4mMSA+IC9kZXYvbnVsbAorICAgICAgIFJFVFZBTD0kPworICAgICAgIHJtIC1mICR7bnRvcGRiZmlsZXBhdGh9L250b3AucGlkCisgICAgIGVsc2UgCisgICAgICAgbG9nZ2VyIC1wICR7bnRvcHVzZXN5c2xvZ30gLXQgJHtuYW1lfSR7aW5zdGFuY2V9IC0tICJJTklURCAtIFVuYWJsZSB0byBmaW5kIHByb2Nlc3MgJHtwaWR9IC4uLiB3aWxsIGtpbGwgYnkgbmFtZSIKKyAgICAgICBpZiBbICIke2RlYnVnfSIgPSAieSIgXTsgdGhlbiBlY2hvICJVbmFibGUgdG8gZmluZCBwcm9jZXNzICR7cGlkfSAuLi4gd2lsbCBraWxsIGJ5IG5hbWUiOyBmaQorICAgICBmaQorKyAgICBOT1RfUlVOTklORz0wCisgICBlbHNlCisgCisgICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSBVbmFibGUgdG8gZmluZCAke250b3BkYmZpbGVwYXRofS9udG9wLnBpZCBmaWxlIC4uLiB3aWxsIGtpbGwgYnkgbmFtZSIKK0BAIC01NzcsMTUgKzUxMywxNiBAQCBzdG9wICgpIHsKKyAKKyAgIGZpCisgCistICBlY2hvIAorLQorICAgaWYgWyAkUkVUVkFMICE9IDAgXTsgdGhlbgorICAgICBwaWRzPWBwcyBheGYgfCBncmVwICdcL3VzclwvYmluXC9udG9wJyB8IGF3ayAneyBwcmludGYoIiAlcyIsICQxKSB9OyBFTkQgeyBwcmludCAiIiB9J2AKKy0gICAgaWYgWyAiJHtwaWRzfSIgIT0gIiAiIF07IHRoZW4KKysgICAgaWYgWyAiJHtwaWRzfSIgIT0gIiIgXTsgdGhlbgorICAgICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSBTZW5kaW5nIFNJR1RFUk0gdG8gJHtwcm9nfS4uLiR7cGlkc30iCisgICAgICAgaWYgWyAiJHtkZWJ1Z30iID0gInkiIF07IHRoZW4gZWNobyAiU2VuZGluZyBTSUdURVJNIHRvICR7cHJvZ30uLi4ke3BpZHN9IjsgZmkKKy0gICAgICBraWxsIC1JTlQgJHtwaWRzfQorKyAgICAgIGtpbGwgLVRFUk0gJHtwaWRzfSA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgUkVUVkFMPSQ/CisrICAgICAgTk9UX1JVTk5JTkc9MAorKyAgICBlbHNlCisrICAgICAgTk9UX1JVTk5JTkc9MQorICAgICBmaQorICAgZmkKKyAKK0BAIC01OTcsMTMgKzUzNCw5IEBAIHN0b3AgKCkgeworICAgICAgIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIkRFQlVHOiBVbmNvbmZpZ3VyaW5nIGludGVyZmFjZXMiOyBmaQorIAorICAgICAgIGZvciBldGggaW4gJHtudG9waW50ZXJmYWNlfTsgZG8KKy0gICAgICAgICAgaWYgISBMQU5HPUMgZWdyZXAgLUwgIl5bTm5dW1R0XVtPb11bUHBdW0NjXS4qPVsnXCJdP1tZeV1bRWVdW1NzXVsnXCJdPyIgXAorLSAgICAgICAgICAgICAgICAgICAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrLXNjcmlwdHMvaWZjZmctJGV0aCA+IC9kZXYvbnVsbCA7IHRoZW4KKy0gICAgICAgICAgICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSAkZXRoIGlzIG5vdCBudG9wY29uZmlndXJlPXllcywgc2tpcHBpbmciCistICAgICAgICAgICAgICBpZiBbICIke2RlYnVnfSIgPSAieSIgXTsgdGhlbiBlY2hvICJERUJVRzogJGV0aCBpcyBub3QgbnRvcGNvbmZpZ3VyZT15ZXMiOyBmaQorLSAgICAgICAgICAgICAgY29udGludWUKKysgICAgICAgICAgaWYgWyAiJGV0aCIgPSAibm9uZSIgXTsgdGhlbgorKyAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgIGZpCistCisgICAgICAgICAgIGxvZ2dlciAtcCAke250b3B1c2VzeXNsb2d9IC10ICR7bmFtZX0ke2luc3RhbmNlfSAtLSAiSU5JVEQgLSBVbmNvbmZpZ3VyaW5nICRldGgiCisgICAgICAgICAgIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIkRFQlVHOiBVbmNvbmZpZ3VyaW5nICRldGgiOyBmaQorICAgICAKK0BAIC02MjMsNiArNTU2LDEzIEBAIHN0b3AgKCkgeworICAgICAgIGlmIFsgIiR7ZGVidWd9IiA9ICJ5IiBdOyB0aGVuIGVjaG8gIkRFQlVHOiBJbnRlcmZhY2VzIGFyZSB1bmNvbmZpZ3VyZWQiOyBmaQorICAgZmkKKyAKKysgIGlmIFsgJE5PVF9SVU5OSU5HIC1lcSAxIC1vICRSRVRWQUwgLWVxIDAgXTsgdGhlbgorKyAgICBlY2hvICIgWyBPSyBdIgorKyAgICBSRVRWQUw9MAorKyAgZWxzZQorKyAgICBlY2hvICIgWyBGQUlMRUQgXSIKKysgIGZpCisrCisgICByZXR1cm4gJFJFVFZBTAorIH0KKyAKKy0tIAorMS43LjUuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL250b3Bfd2ViSW50ZXJmYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX3dlYkludGVyZmFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjU3Y2E0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9udG9wX3dlYkludGVyZmFjZS5wYXRjaApAQCAtMCwwICsxLDE5IEBACitjaGFuZ2Ugb3NOYW1lIHRvIHZlcnNpb24gYXMgaXQgcHJpbnRzIG91dCAibnRvcCBWZXJzaW9uIi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFlhbyBaaGFvIDx5YW8uemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvd2ViSW50ZXJmYWNlLmMgYi93ZWJJbnRlcmZhY2UuYworaW5kZXggNTYyMmU2OS4uOGNiN2E2NyAxMDA2NDQKKy0tLSBhL3dlYkludGVyZmFjZS5jCisrKysgYi93ZWJJbnRlcmZhY2UuYworQEAgLTU4MTYsNyArNTgxNiw3IEBAIHN0YXRpYyB2b2lkIHByaW50TnRvcENvbmZpZ0luZm9EYXRhKGludCB0ZXh0UHJpbnRGbGFnLCBVc2VyUHJlZiAqcHJlZikgeworICAgcHJpbnRJbmZvU2VjdGlvblRpdGxlKHRleHRQcmludEZsYWcsICJCYXNpYyBJbmZvcm1hdGlvbiIpOworIAorICAgc2FmZV9zbnByaW50ZihfX0ZJTEVfXywgX19MSU5FX18sIGZvcm1hdEJ1Ziwgc2l6ZW9mKGZvcm1hdEJ1ZiksICIlcyAoJWQgYml0KSIsCistCQlvc05hbWUsIHNpemVvZihsb25nKSA9PSA4ID8gNjQgOiAzMik7CisrCQl2ZXJzaW9uLCBzaXplb2YobG9uZykgPT0gOCA/IDY0IDogMzIpOworICAgcHJpbnRGZWF0dXJlQ29uZmlnSW5mbyh0ZXh0UHJpbnRGbGFnLCAibnRvcCBWZXJzaW9uIiwgZm9ybWF0QnVmKTsKKyAKKyAjaWZuZGVmIFdJTjMyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL3VzZS1zdGF0aWMtaW5saW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC91c2Utc3RhdGljLWlubGluZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjAwMWMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC91c2Utc3RhdGljLWlubGluZS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitbUEFUQ0hdIHJlcGxhY2UgJ2lubGluZScgd2l0aCAnc3RhdGljIGlubGluZScgZm9yIGdjYyA1LngKKworZ2NjIDUueCBkZWZhdWx0cyB0byAtc3RkPWdudTExIGluc3RlYWQgb2YgLXN0ZD1nbnU4OSB3aGljaCBjaGFuZ2UKK3RoZSBzZW1hbnRpY3MgZm9yIGlubGluZSBmdW5jdGlvbnMgYW5kIHRoZSBzdGFuZGFsb25lICdpbmxpbmUnCitjYXVzZXMgZXJyb3Igd2l0aCAiZ2NjNSAtZyAtbzAiCisgCitSZXBsYWNlIGlubGluZSB3aXRoIHN0YXRpYyBpbmxpbmUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGJvdGggZ2NjIDQKK2FuZCA1LgorCitVcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgbkRQSS9zcmMvbGliL3Byb3RvY29scy9zc2wuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL25EUEkvc3JjL2xpYi9wcm90b2NvbHMvc3NsLmMgYi9uRFBJL3NyYy9saWIvcHJvdG9jb2xzL3NzbC5jCitpbmRleCAyNDViOGMzLi43MmJlZGE5IDEwMDY0NAorLS0tIGEvbkRQSS9zcmMvbGliL3Byb3RvY29scy9zc2wuYworKysrIGIvbkRQSS9zcmMvbGliL3Byb3RvY29scy9zc2wuYworQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIHZvaWQgaXBvcXVlX2ludF9zc2xfYWRkX2Nvbm5lY3Rpb24oc3RydWN0IGlwb3F1ZV9kZXRlY3Rpb25fbW9kdWxlX3N0cnVjdAorIAorICNpZmRlZiBIQVZFX05UT1AKKyAjaWZuZGVmIFdJTjMyCistaW5saW5lIGludCBtaW4oaW50IGEsIGludCBiKSB7IHJldHVybihhIDwgYiA/IGEgOiBiKTsgfQorK3N0YXRpYyBpbmxpbmUgaW50IG1pbihpbnQgYSwgaW50IGIpIHsgcmV0dXJuKGEgPCBiID8gYSA6IGIpOyB9CisgI2VuZGlmCisgCisgc3RhdGljIHZvaWQgc3RyaXBDZXJ0aWZpY2F0ZVRyYWlsZXIoY2hhciAqYnVmZmVyLCBpbnQgYnVmZmVyX2xlbikgeworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wXzUuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOThmYmVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYgpAQCAtMCwwICsxLDEzNyBAQAorU1VNTUFSWSA9ICJudG9wIGlzIG5ldHdvcmsgdG9wIgorREVTQ1JJUFRJT04gPSAibnRvcCBpcyBhIG5ldHdvcmsgdHJhZmZpYyBwcm9iZSB0aGF0IHNob3dzIHRoZSBuZXR3b3JrIHVzYWdlLCBcCitzaW1pbGFyIHRvIHdoYXQgdGhlIHBvcHVsYXIgdG9wIFVuaXggY29tbWFuZCBkb2VzLiIKKworU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgR1BMdjMgJiBPcGVuU1NMIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS1PcGVuU1NMLnR4dDttZDU9YTQwOWY5MDJlNDQ3ZGRkODg5Y2ZmYTBjNzBlN2M3YzIgXAorICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbnRvcC9udG9wLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9udG9wX2NvbmZpZ3VyZV9pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9udG9wX2luaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnRvcF93ZWJJbnRlcmZhY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnRvcF9jb25maWd1cmVfaW5fbmV0X3NubXBfY29uZmlnX2V4aXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL250b3Auc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly91c2Utc3RhdGljLWlubGluZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5EUEktSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjAxNzEwYjY5MjVhOGE1ZmZlMWE0MWI4YjUxMmViZDY5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlOGU4NGNiMTRkMjE3M2JlYWNhNGQ0Y2I5OTFhMTRkODRhNGJlZjg0ZWMzN2IyMjc2YmMzNjNmNDVjNTJlZjgiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1c2VyYWRkIHB5dGhvbm5hdGl2ZSBwa2djb25maWcgc3lzdGVtZAorCitERVBFTkRTID0gImdlb2lwIHJyZHRvb2wgcHl0aG9uIHpsaWIgbGlicGNhcCBnZGJtIgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBzbm1wIHBsdWdpbnMiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1zc2wsIC0td2l0aG91dC1zc2wsIG9wZW5zc2wsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXA9eWVzIE5FVFNOTVA9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbmV0LXNubXAtY29uZmlnLCBcCistLWRpc2FibGUtc25tcCxuZXQtc25tcCwiCitQQUNLQUdFQ09ORklHW3BsdWdpbnNdID0gIi0tZW5hYmxlLXBsdWdpbnM9eWVzLCAtLWRpc2FibGUtcGx1Z2lucywgLCIKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX2FjbG9jYWxfbTQ9eWVzIGFjX2N2X2ZpbGVfZGVwY29tcD1ubyIKKworZG9fY29uZmlndXJlKCkgeworICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC9saWJ0b29sLm00IGxpYnRvb2wubTQuaW4KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5ndWVzcyAke1N9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5ndWVzcyAke1N9L25EUEkKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfS9uRFBJCisgICAgY2F0IGFjaW5jbHVkZS5tNC5pbiBhY2luY2x1ZGUubTQubnRvcCBsaWJ0b29sLm00LmluID4gYWNpbmNsdWRlLm00CisgICAgY3AgM3JkX3BhcnR5LyogLi8KKworICAgICMgY29uZmlnIG5EUEkKKyAgICBjZCBuRFBJCisgICAgLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAtLXdpdGgtcGljCisgICAgY2QgLi4KKworICAgIHNlZCAtaSAtZSAnczpeQ0ZHX0RCRklMRV9ESVI9JGxvY2Fsc3RhdGVkaXIvbnRvcDpDRkdfREJGSUxFX0RJUj0kbG9jYWxzdGF0ZWRpci9saWIvbnRvcDonICR7U30vY29uZmlndXJlLmluCisKKyAgICAjIGZpeCB0aGUgQ0ZMQUdTLCBDUFBGTEFHUywgTERGTEFHUywgcmVtb3ZlIHRoZSBob3N0IGluY2x1ZGUKKyAgICBzZWQgLWkgXAorICAgICAgICAtZSAnczpcKF5DRkxBR1M9IlwkLipcKSAtSS91c3IvbG9jYWwvaW5jbHVkZSAtSS9vcHQvbG9jYWwvaW5jbHVkZSI6XDEiOicgXAorICAgICAgICAtZSAnczpcKF5DUFBGTEFHUz0iXCQuKlwpIC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1JL29wdC9sb2NhbC9pbmNsdWRlIjpcMSI6JyBcCisgICAgICAgIC1lICdzOlwoXkxERkxBR1M9IlwkLipcKSAtTC91c3IvbG9jYWwvbGliIC1ML29wdC9sb2NhbC9saWIiOlwxIjonIFwKKyAgICAgICAgJHtTfS9jb25maWd1cmUuaW4KKworICAgICMgcmVwbGFjZSB0aGUgRElTVFJPIFJFTEVBU0UgaW4gY29uZmlndXJlLmluIHdoaWNoIGFyZSBob3N0J3MKKyAgICAjIHdpdGggb3VyIHJlbGVhc2UsIGFsdGhvdWdoIHRob3NlIGRvZXNuJ3QgYWZmZWN0IGZ1bmN0aW9uYWxpdHkKKyAgICBzZWQgLWkgLWUgXAorICAgICAgICAnL0RFRklORU9TPSJMSU5VWCIve047cy9ESVNUUk89LiovRElTVFJPPSIke0RJU1RST30iLztOO3MvUkVMRUFTRT0uKi9SRUxFQVNFPSIke0RJU1RST19WRVJTSU9OfSIvO30nIFwKKyAgICAgICAgJHtTfS9jb25maWd1cmUuaW4KKworICAgICMgb3NOYW1lIGluIG9yaWdpbmFsIGNvbmZpZ3VyZS5pbiBzaG91bGQgYmUgJHtUQVJHRVRfU1lTfQorICAgICMgd2hpY2ggd2lsbCBzaG93IGluIG50b3AncyAic2hvdyBjb25maWd1cmF0aW9uIgorICAgIHNlZCAtaSAtZSBcCisgICAgICAgICdzOl5vc05hbWU9Lio6b3NOYW1lPSR7VEFSR0VUX1NZU306JyBcCisgICAgICAgICR7U30vY29uZmlndXJlLmluCisKKyAgICAjIHJlbmFtZSBjb25maWd1cmVleHRyYSB0byBjb25maWd1cmVleHRyYV9yZW5hbWUgdG8gYXZvaWQKKyAgICAjIGNvbmZpZ3VyZS5pbiB0byBndWVzcyBob3N0IE9TIGFuZCBwdWxsIGluIG1vcmUgY29uZmlndXJlLCBub24gbmVlZGVkCisgICAgIyB3aGljaCB3aWxsIGNhdXNlIHNvbWUgY3Jvc3MtY29tcGlsaW5nIGZhaWx1cmUgb24gc3BlY2lmaWMgaG9zdAorICAgICMgZS5nLiBTVVNFKFNMRUQuLi4pCisgICAgdGVzdCAhIC1mIGNvbmZpZ3VyZWV4dHJhIHx8IG12IC1mIGNvbmZpZ3VyZWV4dHJhIGNvbmZpZ3VyZWV4dHJhX3JlbmFtZQorCisgICAgIyBtYWtlIHN1cmUgY29uZmlndXJlIGZpbmRzIHB5dGhvbiBpbmNsdWRkaXJzL2xpYnMgd2l0aCB0aGVzZSBlbnZzCisgICAgZXhwb3J0IEJVSUxEX1NZUz0ke0JVSUxEX1NZU30gSE9TVF9TWVM9JHtIT1NUX1NZU30gXAorICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9CisKKyAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBjZCBuRFBJCisgICAgb2VfcnVubWFrZQorICAgIGNkIC4uCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgcmVtb3ZlIHRoZSBlbXB0eSBkaXJzCisgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vcGx1Z2lucworCisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7U30vcGFja2FnZXMvUmVkSGF0L250b3AuaW5pdCBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9udG9wCisgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vcGFja2FnZXMvUmVkSGF0L250b3AuY29uZi5zYW1wbGUgXAorICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9udG9wLmNvbmYKKworICAgICMgY2hhbmdlIG50b3AgZGlyIGluIG50b3AuY29uZgorICAgICMgZG9uJ3QgdXNlIHRoZSAtUCBhcyB0aGUgbnRvcC5pbml0IGRpZG4ndCBzdXBwb3J0IGl0CisgICAgc2VkIC1pIC1lICJzOl4tLWRiLWZpbGUtcGF0aCAvdXNyL3NoYXJlL250b3A6LS1kYi1maWxlLXBhdGggL3Zhci9saWIvbnRvcDoiIFwKKyAgICAgICAgLWUgInM6XiM/IC1QIC92YXIvbnRvcDojPyAtUCAvdmFyL2xpYi9udG9wOiIgXAorICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9udG9wLmNvbmYKKworICAgICMgRm9yIHN5c3RlbWQKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wYWNrYWdlcy9SZWRIYXQvbnRvcC5pbml0ICR7RH0ke2xpYmV4ZWNkaXJ9L250b3AtaGVscGVyCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L250b3Auc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9udG9wLnNlcnZpY2UKKyAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnIFwKKyAgICAgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L250b3Auc2VydmljZQorICAgIGZpCisKKyAgICAjIEZpeCBob3N0LXVzZXItY29udGFtaW5hdGVkIGlzc3VlCisgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KKworICAgIGNob3duIC1SIG50b3AubnRvcCAke0R9JHtkYXRhZGlyfS9udG9wCisgICAgY2hvd24gLVIgbnRvcDpudG9wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9udG9wCit9CisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi1NIC1nIG50b3AgLXIgLWQgJHtsb2NhbHN0YXRlZGlyfS9saWIvbnRvcCBcCistcyAvdXNyL3NiaW4vbm9sb2dpbiAtYyAnbnRvcCcgbnRvcCIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG50b3AiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJudG9wLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIke2xpYmRpcn0vbnRvcC9wbHVnaW5zICR7bGliZGlyfS9saWJudG9wLSouc28gXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJudG9wcmVwb3J0LSouc28gJHtsaWJkaXJ9L2xpYiotJHtQVn0uc28iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGlibnRvcC5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm50b3ByZXBvcnQuc28gXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuZXRmbG93UGx1Z2luLnNvICR7bGliZGlyfS9saWJzZmxvd1BsdWdpbi5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnJyZFBsdWdpbi5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouYSAke2xpYmRpcn0vbGlibnRvcHJlcG9ydC5hICR7bGliZGlyfS8qLmxhIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNucy8wMDAxLXV0aWwuaC1lbmRpYW4uaC1pcy1hdmFpbGFibGUtb24tbXVzbC1vbi1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuLWlzbnMvb3Blbi1pc25zLzAwMDEtdXRpbC5oLWVuZGlhbi5oLWlzLWF2YWlsYWJsZS1vbi1tdXNsLW9uLWxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNWUyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNucy8wMDAxLXV0aWwuaC1lbmRpYW4uaC1pcy1hdmFpbGFibGUtb24tbXVzbC1vbi1saW51eC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGUwZDg2MzE4MjI3YTIzZjAwY2YwZjY2MzlhNjY4NWJiOWY1NzcxYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMiBEZWMgMjAxNyAwOTo0MjoxOSAtMDgwMAorU3ViamVjdDogW1BBVENIXSB1dGlsLmg6IGVuZGlhbi5oIGlzIGF2YWlsYWJsZSBvbiBtdXNsIG9uIGxpbnV4CisKK2p1c3QgY2hlY2tpbmcgZm9yIGdsaWJjIGFsb25lIGlzIG5vdCBlbm91Z2ggc2luY2UKK2l0IGV4Y2x1ZGVzIG11c2wsIHRoZXJlZm9yZSBjaGVjayBmb3IgcGxhdGZvcm0KK2JlaW5nIGxpbnV4IGFzIHdlbGwKKworRml4ZXMgYnVpbGQgaXNzdWVzCisKK2luY2x1ZGUvbGliaXNucy91dGlsLmg6MTE0OjEyOiBmYXRhbCBlcnJvcjogc3lzL2VuZGlhbi5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisgIyAgaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgorICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIGluY2x1ZGUvbGliaXNucy91dGlsLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpYmlzbnMvdXRpbC5oIGIvaW5jbHVkZS9saWJpc25zL3V0aWwuaAoraW5kZXggOWEyYmQxMy4uNmNjMWExYiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbGliaXNucy91dGlsLmgKKysrKyBiL2luY2x1ZGUvbGliaXNucy91dGlsLmgKK0BAIC0xMDAsNyArMTAwLDcgQEAgZW51bSB7CisgICogVGhlcmUncyBubyBodG9ubGwgeWV0CisgICovCisgI2lmbmRlZiBodG9ubGwKKy0jIGlmZGVmIF9fR0xJQkNfXworKyMgaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19saW51eF9fKQorICMgIGluY2x1ZGUgPGVuZGlhbi5oPgorICMgIGluY2x1ZGUgPGJ5dGVzd2FwLmg+CisgIyAgaWYgX19CWVRFX09SREVSID09IF9fQklHX0VORElBTgorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnNfMC45Ny5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuLWlzbnMvb3Blbi1pc25zXzAuOTcuYmIKaW5kZXggNDIwZWY1Yi4uY2MyOTU5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnNfMC45Ny5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNuc18wLjk3LmJiCkBAIC0xMyw5ICsxMyw5IEBACiAKIERFUEVORFMgPSAib3BlbnNzbCBzeXN0ZW1kIgogCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuLWlzY3NpL29wZW4taXNucyBcCi0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3Blbi1pc2NzaS9vcGVuLWlzbnMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11dGlsLmgtZW5kaWFuLmgtaXMtYXZhaWxhYmxlLW9uLW11c2wtb24tbGludXgucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ1JFViA/PSAiMDk5NTQ0MDRlOTQ4ZTQxZWIwZmNlOGUyODgzNjAxOGI0Y2UzZDIwZCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzLzAwMDEtbGFuc2Vydi1SZW5hbWUtc3RydWN0LXBhcmFtZXRlci1wcmludGYtZm9yLW5hbWVzcGFjZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy8wMDAxLWxhbnNlcnYtUmVuYW1lLXN0cnVjdC1wYXJhbWV0ZXItcHJpbnRmLWZvci1uYW1lc3BhY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUwNTdmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy8wMDAxLWxhbnNlcnYtUmVuYW1lLXN0cnVjdC1wYXJhbWV0ZXItcHJpbnRmLWZvci1uYW1lc3BhY2UucGF0Y2gKQEAgLTAsMCArMSw2MTggQEAKK0Zyb20gOGI1MWE2YmY1YTQ4MjlkOGFkZDUzNWEwOThjMGMwNmEwNDlhOTk1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDIyOjUwOjU3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxhbnNlcnY6IFJlbmFtZSBzdHJ1Y3QgcGFyYW1ldGVyIHByaW50ZiBmb3IgbmFtZXNwYWNlCisgY29sbGlzaW9uCisKK1RoaXMgY29tZXMgdG8gZm9yZSB3aGVuIHdlIHVzZSBoYXJkZW5pbmcgZmxhZ3Mgd2hlcmUgcHJpbnRmCitpcyB0cmVhdGVkIGFzIG1hY3JvIGFuZCBnZXRzIHJlcGxhY2VkIHdpdGggcHJpbnRmX2NoaworCitGaXhlcyBlcnJvcnMgbGlrZQorCitlcnJvcjogbm8gbWVtYmVyIG5hbWVkICdfX3ByaW50Zl9jaGsnIGluICdzdHJ1Y3QgZW11X291dF9zJworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGFuc2Vydi9PcGVuSVBNSS9zZXJ2LmggfCAgIDIgKy0KKyBsYW5zZXJ2L2VtdV9jbWQuYyAgICAgICB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBsYW5zZXJ2L2lwbWlfc2ltLmMgICAgICB8ICAxMCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA3MiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xhbnNlcnYvT3BlbklQTUkvc2Vydi5oIGIvbGFuc2Vydi9PcGVuSVBNSS9zZXJ2LmgKK2luZGV4IGQxMmQ2M2EuLjg1NTVjODUgMTAwNjQ0CistLS0gYS9sYW5zZXJ2L09wZW5JUE1JL3NlcnYuaAorKysrIGIvbGFuc2Vydi9PcGVuSVBNSS9zZXJ2LmgKK0BAIC01MjIsNyArNTIyLDcgQEAgdWludDhfdCBpcG1iX2NoZWNrc3VtKHVpbnQ4X3QgKmRhdGEsIGludCBzaXplLCB1aW50OF90IHN0YXJ0KTsKKyB0eXBlZGVmIHN0cnVjdCBlbXVfZGF0YV9zIGVtdV9kYXRhX3Q7CisgdHlwZWRlZiBzdHJ1Y3QgZW11X291dF9zCisgeworLSAgICB2b2lkICgqcHJpbnRmKShzdHJ1Y3QgZW11X291dF9zICpvdXQsIGNoYXIgKmZvcm1hdCwgLi4uKTsKKysgICAgdm9pZCAoKmVwcmludGYpKHN0cnVjdCBlbXVfb3V0X3MgKm91dCwgY2hhciAqZm9ybWF0LCAuLi4pOworICAgICB2b2lkICpkYXRhOworIH0gZW11X291dF90OworIAorZGlmZiAtLWdpdCBhL2xhbnNlcnYvZW11X2NtZC5jIGIvbGFuc2Vydi9lbXVfY21kLmMKK2luZGV4IGNhNDQwMzIuLjU0YjZmN2IgMTAwNjQ0CistLS0gYS9sYW5zZXJ2L2VtdV9jbWQuYworKysrIGIvbGFuc2Vydi9lbXVfY21kLmMKK0BAIC03Niw3ICs3Niw3IEBAIGVtdV9nZXRfdWNoYXIoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2tzLCB1bnNpZ25lZCBjaGFyICp2YWwsIGNoYXIgKmVycnN0ciwKKyAJaWYgKGVtcHR5X29rKQorIAkgICAgcmV0dXJuIEVOT1NQQzsKKyAJaWYgKGVycnN0cikKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKyAJcmV0dXJuIEVJTlZBTDsKKyAgICAgfQorICAgICBpZiAoc3RyWzBdID09ICdcJycpIHsKK0BAIC04Niw3ICs4Niw3IEBAIGVtdV9nZXRfdWNoYXIoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2tzLCB1bnNpZ25lZCBjaGFyICp2YWwsIGNoYXIgKmVycnN0ciwKKyAgICAgKnZhbCA9IHN0cnRvdWwoc3RyLCAmdG1wc3RyLCAwKTsKKyAgICAgaWYgKCp0bXBzdHIgIT0gJ1wwJykgeworIAlpZiAoZXJyc3RyKQorLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkICVzIGdpdmVuXG4iLCBlcnJzdHIpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKyAJcmV0dXJuIEVJTlZBTDsKKyAgICAgfQorIAorQEAgLTEwOCw3ICsxMDgsNyBAQCBlbXVfZ2V0X3VjaGFyX3dpdGhfdmFscyhlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3MsCisgCWlmIChlbXB0eV9vaykKKyAJICAgIHJldHVybiBFTk9TUEM7CisgCWlmIChlcnJzdHIpCistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisgCXJldHVybiBFSU5WQUw7CisgICAgIH0KKyAgICAgaWYgKHN0clswXSA9PSAnXCcnKSB7CitAQCAtMTMxLDcgKzEzMSw3IEBAIGVtdV9nZXRfdWNoYXJfd2l0aF92YWxzKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcywKKyAgICAgKnZhbCA9IHN0cnRvdWwoc3RyLCAmdG1wc3RyLCAwKTsKKyAgICAgaWYgKCp0bXBzdHIgIT0gJ1wwJykgeworIAlpZiAoZXJyc3RyKQorLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkICVzIGdpdmVuXG4iLCBlcnJzdHIpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKyAJcmV0dXJuIEVJTlZBTDsKKyAgICAgfQorICBvdXQ6CitAQCAtMTUwLDEyICsxNTAsMTIgQEAgZW11X2dldF9iaXRtYXNrKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcywgdWludDE2X3QgKnZhbCwgY2hhciAqZXJyc3RyLAorIAlpZiAoZW1wdHlfb2spCisgCSAgICByZXR1cm4gRU5PU1BDOworIAlpZiAoZXJyc3RyKQorLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgICAgIGlmIChzdHJsZW4oc3RyKSAhPSBzaXplKSB7CisgCWlmIChlcnJzdHIpCistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKmludmFsaWQgbnVtYmVyIG9mIGJpdHMgaW4gJXNcbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKippbnZhbGlkIG51bWJlciBvZiBiaXRzIGluICVzXG4iLCBlcnJzdHIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgICAgICp2YWwgPSAwOworQEAgLTE2Niw3ICsxNjYsNyBAQCBlbXVfZ2V0X2JpdG1hc2soZW11X291dF90ICpvdXQsIGNoYXIgKip0b2tzLCB1aW50MTZfdCAqdmFsLCBjaGFyICplcnJzdHIsCisgCSAgICAqdmFsIHw9IDEgPDwgaTsKKyAJfSBlbHNlIHsKKyAJICAgIGlmIChlcnJzdHIpCistCQlvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgYml0IHZhbHVlICclYycgaW4gJXNcbiIsIHN0cltqXSwKKysJCW91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgYml0IHZhbHVlICclYycgaW4gJXNcbiIsIHN0cltqXSwKKyAJCQkgICAgZXJyc3RyKTsKKyAJICAgIHJldHVybiBFSU5WQUw7CisgCX0KK0BAIC0xODQsMTMgKzE4NCwxMyBAQCBlbXVfZ2V0X3VpbnQoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2tzLCB1bnNpZ25lZCBpbnQgKnZhbCwgY2hhciAqZXJyc3RyKQorICAgICBzdHIgPSBteXN0cnRvayhOVUxMLCAiIFx0XG4iLCB0b2tzKTsKKyAgICAgaWYgKCFzdHIpIHsKKyAJaWYgKGVycnN0cikKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKyAJcmV0dXJuIEVJTlZBTDsKKyAgICAgfQorICAgICAqdmFsID0gc3RydG91bChzdHIsICZ0bXBzdHIsIDApOworICAgICBpZiAoKnRtcHN0ciAhPSAnXDAnKSB7CisgCWlmIChlcnJzdHIpCistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkICVzIGdpdmVuXG4iLCBlcnJzdHIpOworIAlyZXR1cm4gRUlOVkFMOworICAgICB9CisgCitAQCAtMjA2LDcgKzIwNiw3IEBAIGVtdV9nZXRfYnl0ZXMoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2twdHIsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIGNoYXIgKmVycnN0ciwKKyAKKyAgICAgaWYgKCF0b2spIHsKKyAJaWYgKGVycnN0cikKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKKyAJcmV0dXJuIEVJTlZBTDsKKyAgICAgfQorICAgICBpZiAoKnRvayA9PSAnIicpIHsKK0BAIC0yMTUsNyArMjE1LDcgQEAgZW11X2dldF9ieXRlcyhlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3B0ciwgdW5zaWduZWQgY2hhciAqZGF0YSwgY2hhciAqZXJyc3RyLAorIAl0b2srKzsKKyAJZW5kID0gc3RybGVuKHRvaykgLSAxOworIAlpZiAodG9rW2VuZF0gIT0gJyInKSB7CistCSAgb3V0LT5wcmludGYob3V0LCAiKipBU0NJSSAlcyBkb2Vzbid0IGVuZCBpbiAnXCInIiwgZXJyc3RyKTsKKysJICBvdXQtPmVwcmludGYob3V0LCAiKipBU0NJSSAlcyBkb2Vzbid0IGVuZCBpbiAnXCInIiwgZXJyc3RyKTsKKyAJICAgIHJldHVybiBFSU5WQUw7CisgCX0KKyAJaWYgKGVuZCA+IChsZW4gLSAxKSkKK0BAIC0yMjgsNyArMjI4LDcgQEAgZW11X2dldF9ieXRlcyhlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3B0ciwgdW5zaWduZWQgY2hhciAqZGF0YSwgY2hhciAqZXJyc3RyLAorIAljaGFyICAgICAgICAgY1szXTsKKyAJLyogSEVYIHB3ICovCisgCWlmIChzdHJsZW4odG9rKSAhPSAzMikgeworLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipIRVggJXMgbm90IDMyIEhFWCBjaGFyYWN0ZXJzIGxvbmciLCBlcnJzdHIpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqSEVYICVzIG5vdCAzMiBIRVggY2hhcmFjdGVycyBsb25nIiwgZXJyc3RyKTsKKyAJICAgIHJldHVybiBFSU5WQUw7CisgCX0KKyAJY1syXSA9ICdcMCc7CitAQCAtMjM5LDcgKzIzOSw3IEBAIGVtdV9nZXRfYnl0ZXMoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2twdHIsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIGNoYXIgKmVycnN0ciwKKyAJICAgIHRvaysrOworIAkgICAgZGF0YVtpXSA9IHN0cnRvdWwoYywgJmVuZCwgMTYpOworIAkgICAgaWYgKCplbmQgIT0gJ1wwJykgeworLQkJb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkIEhFWCBjaGFyYWN0ZXIgaW4gJXMiLCBlcnJzdHIpOworKwkJb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCBIRVggY2hhcmFjdGVyIGluICVzIiwgZXJyc3RyKTsKKyAJCXJldHVybiAtMTsKKyAJICAgIH0KKyAJfQorQEAgLTI2MywxMiArMjYzLDEyIEBAIHJlYWRfY29tbWFuZF9maWxlKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGNvbnN0IGNoYXIgKmNvbW1hbmRfZmlsZSkKKyAKKyAJYnVmZmVyID0gbWFsbG9jKElOUFVUX0JVRkZFUl9TSVpFKTsKKyAJaWYgKCFidWZmZXIpIHsKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIkNvdWxkIG5vdCBhbGxvY2F0ZSBidWZmZXIgbWVtb3J5XG4iKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICJDb3VsZCBub3QgYWxsb2NhdGUgYnVmZmVyIG1lbW9yeVxuIik7CisgCSAgICBydiA9IEVOT01FTTsKKyAJICAgIGdvdG8gb3V0OworIAl9CisgCXdoaWxlIChmZ2V0cyhidWZmZXIrcG9zLCBJTlBVVF9CVUZGRVJfU0laRS1wb3MsIGYpKSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICIlcyIsIGJ1ZmZlcitwb3MpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIiVzIiwgYnVmZmVyK3Bvcyk7CisgCSAgICBpZiAoYnVmZmVyW3Bvc10gPT0gJyMnKQorIAkJY29udGludWU7CisgCSAgICBwb3MgPSBzdHJsZW4oYnVmZmVyKTsKK0BAIC0zMTgsNyArMzE4LDcgQEAgc2VsX2VuYWJsZShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHJ2ID0gaXBtaV9tY19lbmFibGVfc2VsKG1jLCBtYXhfcmVjb3JkcywgZmxhZ3MpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGVuYWJsZSBzZWwsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGVuYWJsZSBzZWwsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC0zNDMsOSArMzQzLDkgQEAgc2VsX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHJ2ID0gaXBtaV9tY19hZGRfdG9fc2VsKG1jLCByZWNvcmRfdHlwZSwgZGF0YSwgJnIpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0byBzZWwsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0byBzZWwsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgZWxzZQorLQlvdXQtPnByaW50ZihvdXQsICJBZGRlZCByZWNvcmQgJWRcbiIsIHIpOworKwlvdXQtPmVwcmludGYob3V0LCAiQWRkZWQgcmVjb3JkICVkXG4iLCByKTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC0zNjEsMTQgKzM2MSwxNCBAQCBtYWluX3Nkcl9hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAlpZiAocnYgPT0gRU5PU1BDKQorIAkgICAgYnJlYWs7CisgCWlmIChydikgeworLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipFcnJvciAweCV4IGluIGRhdGEgYnl0ZSAlZFxuIiwgcnYsIGkpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqRXJyb3IgMHgleCBpbiBkYXRhIGJ5dGUgJWRcbiIsIHJ2LCBpKTsKKyAJICAgIHJldHVybiBydjsKKyAJfQorICAgICB9CisgCisgICAgIHJ2ID0gaXBtaV9tY19hZGRfbWFpbl9zZHIobWMsIGRhdGEsIGkpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0byBzZHIsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0byBzZHIsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC0zODksMTQgKzM4OSwxNCBAQCBkZXZpY2Vfc2RyX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCWlmIChydiA9PSBFTk9TUEMpCisgCSAgICBicmVhazsKKyAJaWYgKHJ2KSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkVycm9yIDB4JXggaW4gZGF0YSBieXRlICVkXG4iLCBydiwgaSk7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipFcnJvciAweCV4IGluIGRhdGEgYnl0ZSAlZFxuIiwgcnYsIGkpOworIAkgICAgcmV0dXJuIHJ2OworIAl9CisgICAgIH0KKyAKKyAgICAgcnYgPSBpcG1pX21jX2FkZF9kZXZpY2Vfc2RyKG1jLCBsdW4sIGRhdGEsIGkpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0byBzZHIsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0byBzZHIsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC00MzksNyArNDM5LDcgQEAgc2Vuc29yX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgICAgIHdoaWxlICh0b2spIHsKKyAJaWYgKHN0cmNtcCh0b2ssICJwb2xsIikgPT0gMCkgeworIAkgICAgaWYgKGhhbmRsZXIpIHsKKy0JCW91dC0+cHJpbnRmKG91dCwgIioqcG9sbCBnaXZlbiB0d2ljZSBpbiBzZW5zb3JcbiIsIHRvayk7CisrCQlvdXQtPmVwcmludGYob3V0LCAiKipwb2xsIGdpdmVuIHR3aWNlIGluIHNlbnNvclxuIiwgdG9rKTsKKyAJCXJldHVybiAtMTsKKyAJICAgIH0KKyAKK0BAIC00NDksMjcgKzQ0OSwyNyBAQCBzZW5zb3JfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAKKyAJICAgIHRvayA9IG15c3RydG9rKE5VTEwsICIgXHRcbiIsIHRva3MpOworIAkgICAgaWYgKCF0b2spIHsKKy0JCW91dC0+cHJpbnRmKG91dCwgIioqTm8gcG9sbGVkIHNlbnNvciBoYW5kbGVyIGdpdmVuXG4iLCB0b2spOworKwkJb3V0LT5lcHJpbnRmKG91dCwgIioqTm8gcG9sbGVkIHNlbnNvciBoYW5kbGVyIGdpdmVuXG4iLCB0b2spOworIAkJcmV0dXJuIC0xOworIAkgICAgfQorIAorIAkgICAgaGFuZGxlciA9IGlwbWlfc2Vuc29yX2ZpbmRfaGFuZGxlcih0b2spOworIAkgICAgaWYgKCFoYW5kbGVyKSB7CistCQlvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgc2Vuc29yIGhhbmRsZXI6ICVzXG4iLCB0b2spOworKwkJb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCBzZW5zb3IgaGFuZGxlcjogJXNcbiIsIHRvayk7CisgCQlyZXR1cm4gLTE7CisgCSAgICB9CisgCisgCSAgICBydiA9IGhhbmRsZXItPmluaXQobWMsIGx1biwgbnVtLCB0b2tzLCBoYW5kbGVyLT5jYl9kYXRhLCAmcmNiX2RhdGEsCisgCQkJICAgICAgICZlcnJzdHIpOworIAkgICAgaWYgKHJ2KSB7CistCQlvdXQtPnByaW50ZihvdXQsICIqKkVycm9yIGluaXRpYWxpemluZyBzZW5zb3IgaGFuZGxlcjogJXNcbiIsIAorKwkJb3V0LT5lcHJpbnRmKG91dCwgIioqRXJyb3IgaW5pdGlhbGl6aW5nIHNlbnNvciBoYW5kbGVyOiAlc1xuIiwgCisgCQkJICAgIGVycnN0cik7CisgCQlyZXR1cm4gcnY7CisgCSAgICB9CisgCX0gZWxzZSBpZiAoc3RyY21wKHRvaywgImV2ZW50LW9ubHkiKSA9PSAwKSB7CisgCSAgICBldmVudF9vbmx5ID0gMTsKKyAJfSBlbHNlIHsKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqVW5rbm93biBzZW5zb3Igb3B0aW9uOiAlc1xuIiwgdG9rKTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKlVua25vd24gc2Vuc29yIG9wdGlvbjogJXNcbiIsIHRvayk7CisgCSAgICByZXR1cm4gLTE7CisgCX0KKyAKK0BAIC00NzcsNyArNDc3LDcgQEAgc2Vuc29yX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgICAgIH0KKyAKKyAgICAgaWYgKGhhbmRsZXIgJiYgZXZlbnRfb25seSkgeworLQlvdXQtPnByaW50ZihvdXQsICIqKkFuIGV2ZW50LW9ubHkgc2Vuc29yIGNhbm5vdCBiZSBwb2xsZWRcbiIpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipBbiBldmVudC1vbmx5IHNlbnNvciBjYW5ub3QgYmUgcG9sbGVkXG4iKTsKKyAJcmV0dXJuIC0xOworICAgICB9CisgCitAQCAtNDg4LDcgKzQ4OCw3IEBAIHNlbnNvcl9hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAlpZiAoIXJ2ICYmIGhhbmRsZXItPnBvc3Rpbml0KSB7CisgCSAgICBydiA9IGhhbmRsZXItPnBvc3Rpbml0KHJjYl9kYXRhLCAmZXJyc3RyKTsKKyAJICAgIGlmIChydikgeworLQkJb3V0LT5wcmludGYob3V0LCAiKipFcnJvciBpbiBzZW5zb3IgaGFuZGxlciBwb3N0aW5pdDogJXNcbiIsIAorKwkJb3V0LT5lcHJpbnRmKG91dCwgIioqRXJyb3IgaW4gc2Vuc29yIGhhbmRsZXIgcG9zdGluaXQ6ICVzXG4iLCAKKyAJCQkgICAgZXJyc3RyKTsKKyAJICAgIH0KKyAJfQorQEAgLTQ5Niw3ICs0OTYsNyBAQCBzZW5zb3JfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAJcnYgPSBpcG1pX21jX2FkZF9zZW5zb3IobWMsIGx1biwgbnVtLCB0eXBlLCBjb2RlLCBldmVudF9vbmx5KTsKKyAgICAgfQorICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0byBzZW5zb3IsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCB0byBzZW5zb3IsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC01MzIsNyArNTMyLDcgQEAgc2Vuc29yX3NldF9iaXQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorICAgICBydiA9IGlwbWlfbWNfc2Vuc29yX3NldF9iaXQobWMsIGx1biwgbnVtLCBiaXQsIHZhbHVlLCBnZW5fZXZlbnQpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgYml0LCBlcnJvciAweCV4XG4iLCBydik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIGJpdCwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTU2Myw3ICs1NjMsNyBAQCBzZW5zb3Jfc2V0X2JpdF9jbHJfcmVzdChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKgorIAorICAgICBydiA9IGlwbWlfbWNfc2Vuc29yX3NldF9iaXRfY2xyX3Jlc3QobWMsIGx1biwgbnVtLCBiaXQsIGdlbl9ldmVudCk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciBiaXQsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgYml0LCBlcnJvciAweCV4XG4iLCBydik7CisgICAgIHJldHVybiBydjsKKyB9CisgCitAQCAtNTk0LDcgKzU5NCw3IEBAIHNlbnNvcl9zZXRfdmFsdWUoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorICAgICBydiA9IGlwbWlfbWNfc2Vuc29yX3NldF92YWx1ZShtYywgbHVuLCBudW0sIHZhbHVlLCBnZW5fZXZlbnQpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgdmFsdWUsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgdmFsdWUsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC02MzcsNyArNjM3LDcgQEAgc2Vuc29yX3NldF9oeXN0ZXJlc2lzKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG8KKyAgICAgcnYgPSBpcG1pX21jX3NlbnNvcl9zZXRfaHlzdGVyZXNpcyhtYywgbHVuLCBudW0sIHN1cHBvcnQsIHBvc2l0aXZlLAorIAkJCQkgICAgICAgbmVnYXRpdmUpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgaHlzdGVyZXNpcywgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciBoeXN0ZXJlc2lzLCBlcnJvciAweCV4XG4iLCBydik7CisgICAgIHJldHVybiBydjsKKyB9CisgCitAQCAtNjgyLDcgKzY4Miw3IEBAIHNlbnNvcl9zZXRfdGhyZXNob2xkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rCisgICAgIHJ2ID0gaXBtaV9tY19zZW5zb3Jfc2V0X3RocmVzaG9sZChtYywgbHVuLCBudW0sIHN1cHBvcnQsCisgCQkJCSAgICAgIGVuYWJsZWQsIDEsIHRocmVzaG9sZHMpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgdGhyZXNob2xkcywgZXJyb3IgMHgleFxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciB0aHJlc2hvbGRzLCBlcnJvciAweCV4XG4iLCBydik7CisgICAgIHJldHVybiBydjsKKyB9CisgCitAQCAtNzU5LDcgKzc1OSw3IEBAIHNlbnNvcl9zZXRfZXZlbnRfc3VwcG9ydChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqCisgCQkJCQkgIGFzc2VydF9zdXBwb3J0LCBkZWFzc2VydF9zdXBwb3J0LAorIAkJCQkJICBhc3NlcnRfZW5hYmxlZCwgZGVhc3NlcnRfZW5hYmxlZCk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciB0aHJlc2hvbGRzLCBlcnJvciAweCV4XG4iLCBydik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIHRocmVzaG9sZHMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC04MTksNyArODE5LDcgQEAgbWNfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAJZWxzZSBpZiAoc3RyY21wKCJwZXJzaXN0X3NkciIsIHRvaykgPT0gMCkKKyAJICAgIGZsYWdzIHw9IElQTUlfTUNfUEVSU0lTVF9TRFI7CisgCWVsc2UgeworLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkIE1DIGZsYWc6ICVzXG4iLCB0b2spOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCBNQyBmbGFnOiAlc1xuIiwgdG9rKTsKKyAJICAgIHJldHVybiAtMTsKKyAJfQorICAgICB9CitAQCAtODMzLDcgKzgzMyw3IEBAIG1jX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCQkJIGRldmljZV9yZXZpc2lvbiwgbWFqb3JfZndfcmV2LCBtaW5vcl9md19yZXYsCisgCQkJIGRldmljZV9zdXBwb3J0LCBtZmdfaWQsIHByb2R1Y3RfaWQsIGZsYWdzKTsKKyAgICAgaWYgKHJ2KQorLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdGhlIE1DLCBlcnJvciAweCV4XG4iLCBydik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdGhlIE1DLCBlcnJvciAweCV4XG4iLCBydik7CisgICAgIHJldHVybiBydjsKKyB9CisgCitAQCAtODkwLDcgKzg5MCw3IEBAIG1jX3NldF9wb3dlcihlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHJ2ID0gaXBtaV9tY19zZXRfcG93ZXIobWMsIHBvd2VyLCBnZW5faW50KTsKKyAgICAgaWYgKHJ2KQorLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgcG93ZXIsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBwb3dlciwgZXJyb3IgMHgleFxuIiwgcnYpOworICAgICByZXR1cm4gcnY7CisgfQorIAorQEAgLTkxNiw3ICs5MTYsNyBAQCBtY19hZGRfZnJ1X2RhdGEoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorICAgICB0b2sgPSBteXN0cnRvayhOVUxMLCAiIFx0XG4iLCB0b2tzKTsKKyAgICAgaWYgKCF0b2spIHsKKy0Jb3V0LT5wcmludGYob3V0LCAiKipObyBGUlUgZGF0YSB0eXBlIGdpdmVuIik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKk5vIEZSVSBkYXRhIHR5cGUgZ2l2ZW4iKTsKKyAJcmV0dXJuIC0xOworICAgICB9CisgICAgIGlmIChzdHJjbXAodG9rLCAiZmlsZSIpID09IDApIHsKK0BAIC05MjksMTMgKzkyOSwxMyBAQCBtY19hZGRfZnJ1X2RhdGEoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorIAlydiA9IGdldF9kZWxpbV9zdHIodG9rcywgJmZydWZuLCAmZXJyc3RyKTsKKyAJaWYgKHJ2KSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkVycm9yIHdpdGggRlJVIGZpbGVuYW1lOiAlZCIsIHN0cmVycm9yKHJ2KSk7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipFcnJvciB3aXRoIEZSVSBmaWxlbmFtZTogJWQiLCBzdHJlcnJvcihydikpOworIAkgICAgcmV0dXJuIHJ2OworIAl9CisgCXJ2ID0gaXBtaV9tY19hZGRfZnJ1X2ZpbGUobWMsIGRldmlkLCBsZW5ndGgsIGZpbGVfb2Zmc2V0LAorIAkJCQkgICh2b2lkICopIGZydWZuKTsKKyAJaWYgKHJ2KQorLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIEZSVSBmaWxlLCBlcnJvciAweCV4XG4iLCBydik7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIEZSVSBmaWxlLCBlcnJvciAweCV4XG4iLCBydik7CisgCQorICAgICB9IGVsc2UgaWYgKHN0cmNtcCh0b2ssICJkYXRhIikgPT0gMCkgeworIAlmb3IgKGk9MDsgaTxsZW5ndGg7IGkrKykgeworQEAgLTk0MywxNCArOTQzLDE0IEBAIG1jX2FkZF9mcnVfZGF0YShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCSAgICBpZiAocnYgPT0gRU5PU1BDKQorIAkJYnJlYWs7CisgCSAgICBpZiAocnYpIHsKKy0JCW91dC0+cHJpbnRmKG91dCwgIioqRXJyb3IgMHgleCBpbiBkYXRhIGJ5dGUgJWRcbiIsIHJ2LCBpKTsKKysJCW91dC0+ZXByaW50ZihvdXQsICIqKkVycm9yIDB4JXggaW4gZGF0YSBieXRlICVkXG4iLCBydiwgaSk7CisgCQlyZXR1cm4gcnY7CisgCSAgICB9CisgCX0KKyAKKyAJcnYgPSBlbXVfZ2V0X3VjaGFyKG91dCwgdG9rcywgJmRhdGFbaV0sICJkYXRhIGJ5dGUiLCAxKTsKKyAJaWYgKHJ2ICE9IEVOT1NQQykgeworLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipFcnJvcjogaW5wdXQgZGF0YSB0b28gbG9uZyBmb3IgRlJVXG4iLCBydiwgaSk7CisrCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipFcnJvcjogaW5wdXQgZGF0YSB0b28gbG9uZyBmb3IgRlJVXG4iLCBydiwgaSk7CisgCSAgICByZXR1cm4gRUlOVkFMOworIAl9CisgCitAQCAtOTU4LDkgKzk1OCw5IEBAIG1jX2FkZF9mcnVfZGF0YShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgCXJ2ID0gaXBtaV9tY19hZGRfZnJ1X2RhdGEobWMsIGRldmlkLCBsZW5ndGgsIE5VTEwsIGRhdGEpOworIAlpZiAocnYpCistCSAgICBvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgRlJVIGRhdGEsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgRlJVIGRhdGEsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgfSBlbHNlIHsKKy0Jb3V0LT5wcmludGYob3V0LCAiKipGUlUgdHlwZSBub3QgZ2l2ZW4sIG5lZWQgZmlsZSBvciBkYXRhXG4iKTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqRlJVIHR5cGUgbm90IGdpdmVuLCBuZWVkIGZpbGUgb3IgZGF0YVxuIik7CisgCXJ2ID0gRUlOVkFMOworICAgICB9CisgICAgIHJldHVybiBydjsKK0BAIC05ODEsMjggKzk4MSwyOCBAQCBtY19kdW1wX2ZydV9kYXRhKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKKyAKKyAgICAgcnYgPSBpcG1pX21jX2dldF9mcnVfZGF0YV9sZW4obWMsIGRldmlkLCAmbGVuZ3RoKTsKKyAgICAgaWYgKHJ2KSB7CistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGR1bXAgRlJVIGRhdGEsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGR1bXAgRlJVIGRhdGEsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAJZ290byBvdXQ7CisgICAgIH0KKyAKKyAgICAgZGF0YSA9IG1hbGxvYyhsZW5ndGgpOworICAgICBpZiAoIWRhdGEpIHsKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gZHVtcCBGUlUgZGF0YSwgb3V0IG9mIG1lbW9yeVxuIiwgcnYpOworKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gZHVtcCBGUlUgZGF0YSwgb3V0IG9mIG1lbW9yeVxuIiwgcnYpOworIAlnb3RvIG91dDsKKyAgICAgfQorIAorICAgICBydiA9IGlwbWlfbWNfZ2V0X2ZydV9kYXRhKG1jLCBkZXZpZCwgbGVuZ3RoLCBkYXRhKTsKKyAgICAgaWYgKHJ2KSB7CistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGR1bXAgRlJVIGRhdGEsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGR1bXAgRlJVIGRhdGEsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAJZ290byBvdXQ7CisgICAgIH0KKyAKKyAgICAgZm9yIChpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAJaWYgKChpID4gMCkgJiYgKChpICUgOCkgPT0gMCkpCistCSAgICBvdXQtPnByaW50ZihvdXQsICJcbiIpOworLQlvdXQtPnByaW50ZihvdXQsICIgMHglMi4yeCIsIGRhdGFbaV0pOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIlxuIik7CisrCW91dC0+ZXByaW50ZihvdXQsICIgMHglMi4yeCIsIGRhdGFbaV0pOworICAgICB9CistICAgIG91dC0+cHJpbnRmKG91dCwgIlxuIik7CisrICAgIG91dC0+ZXByaW50ZihvdXQsICJcbiIpOworIAorICBvdXQ6CisgICAgIGlmIChkYXRhKQorQEAgLTEwMjEsNyArMTAyMSw3IEBAIG1jX3NldGJtYyhlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCXJldHVybiBydjsKKyAgICAgcnYgPSBpcG1pX2VtdV9zZXRfYm1jX21jKGVtdSwgaXBtYik7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkIElQTUIgYWRkcmVzc1xuIik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgSVBNQiBhZGRyZXNzXG4iKTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC0xMDMyLDcgKzEwMzIsNyBAQCBhdGNhX2VuYWJsZShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHJ2ID0gaXBtaV9lbXVfYXRjYV9lbmFibGUoZW11KTsKKyAgICAgaWYgKHJ2KQorLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBlbmFibGUgQVRDQSBtb2RlLCBlcnJvciAweCV4XG4iLCBydik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBlbmFibGUgQVRDQSBtb2RlLCBlcnJvciAweCV4XG4iLCBydik7CisgICAgIHJldHVybiBydjsKKyB9CisgCitAQCAtMTA1Niw3ICsxMDU2LDcgQEAgYXRjYV9zZXRfc2l0ZShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCisgICAgIHJ2ID0gaXBtaV9lbXVfYXRjYV9zZXRfc2l0ZShlbXUsIGh3X2FkZHJlc3MsIHNpdGVfdHlwZSwgc2l0ZV9udW1iZXIpOworICAgICBpZiAocnYpCistCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzaXRlIHR5cGUsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzaXRlIHR5cGUsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC0xMDcyLDcgKzEwNzIsNyBAQCBtY19zZXRfbnVtX2xlZHMoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorICAgICBydiA9IGlwbWlfbWNfc2V0X251bV9sZWRzKG1jLCBjb3VudCk7CisgICAgIGlmIChydikKKy0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IG51bWJlciBvZiBMRURzLCBlcnJvciAweCV4XG4iLCBydik7CisrCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgbnVtYmVyIG9mIExFRHMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKK0BAIC0xMDg1LDcgKzEwODUsNyBAQCByZWFkX2NtZHMoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorICAgICBlcnIgPSBnZXRfZGVsaW1fc3RyKHRva3MsICZmaWxlbmFtZSwgJmVycnN0cik7CisgICAgIGlmIChlcnIpIHsKKy0Jb3V0LT5wcmludGYob3V0LCAiQ291bGQgbm90IGdldCBpbmNsdWRlIGZpbGVuYW1lOiAlc1xuIiwgZXJyc3RyKTsKKysJb3V0LT5lcHJpbnRmKG91dCwgIkNvdWxkIG5vdCBnZXQgaW5jbHVkZSBmaWxlbmFtZTogJXNcbiIsIGVycnN0cik7CisgCXJldHVybiBlcnI7CisgICAgIH0KKyAKK0BAIC0xMDk3LDcgKzEwOTcsNyBAQCByZWFkX2NtZHMoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorICAgICB7CisgCWNoYXIgKm5mID0gbWFsbG9jKHN0cmxlbihCQVNFX0NPTkZfU1RSKSArIHN0cmxlbihmaWxlbmFtZSkgKyAyKTsKKyAJaWYgKCFuZikgeworLQkgICAgb3V0LT5wcmludGYob3V0LCAiT3V0IG9mIG1lbW9yeSBpbiBpbmNsdWRlXG4iLCBlcnJzdHIpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIk91dCBvZiBtZW1vcnkgaW4gaW5jbHVkZVxuIiwgZXJyc3RyKTsKKyAJICAgIGdvdG8gb3V0X2VycjsKKyAJfQorIAlzdHJjcHkobmYsIEJBU0VfQ09ORl9TVFIpOworQEAgLTExMDcsNyArMTEwNyw3IEBAIHJlYWRfY21kcyhlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCisgCWZpbGVuYW1lID0gbmY7CisgCWVyciA9IHJlYWRfY29tbWFuZF9maWxlKG91dCwgZW11LCBmaWxlbmFtZSk7CisgCWlmIChlcnIpIHsKKy0JICAgIG91dC0+cHJpbnRmKG91dCwgIkNvdWxkIG5vdCByZWFkIGluY2x1ZGUgZmlsZSAlc1xuIiwgZmlsZW5hbWUpOworKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIkNvdWxkIG5vdCByZWFkIGluY2x1ZGUgZmlsZSAlc1xuIiwgZmlsZW5hbWUpOworIAl9CisgICAgIH0KKyAKK0BAIC0xMTQ3LDcgKzExNDcsNyBAQCBkZWJ1Z19jbWQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAl9IGVsc2UgaWYgKHN0cmNtcCh0b2ssICJzb2wiKSA9PSAwKSB7CisgCSAgICBsZXZlbCB8PSBERUJVR19TT0w7CisgCX0gZWxzZSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICJJbnZhbGlkIGRlYnVnIGxldmVsICclcycsIG9wdGlvbnMgYXJlICdyYXcnIGFuZCAnbXNnJ1xuIiwKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICJJbnZhbGlkIGRlYnVnIGxldmVsICclcycsIG9wdGlvbnMgYXJlICdyYXcnIGFuZCAnbXNnJ1xuIiwKKyAJCSAgIHRvayk7CisgCSAgICByZXR1cm4gRUlOVkFMOworIAl9CitAQCAtMTE2OCw3ICsxMTY4LDcgQEAgcGVyc2lzdF9jbWQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAl9IGVsc2UgaWYgKHN0cmNtcCh0b2ssICJvZmYiKSA9PSAwKSB7CisgCSAgICBwZXJzaXN0X2VuYWJsZSA9IDA7CisgCX0gZWxzZSB7CistCSAgICBvdXQtPnByaW50ZihvdXQsICJJbnZhbGlkIHBlcnNpc3QgdmFsZSAnJXMnLCBvcHRpb25zIGFyZSAnb24nIGFuZCAnb2ZmJ1xuIiwKKysJICAgIG91dC0+ZXByaW50ZihvdXQsICJJbnZhbGlkIHBlcnNpc3QgdmFsZSAnJXMnLCBvcHRpb25zIGFyZSAnb24nIGFuZCAnb2ZmJ1xuIiwKKyAJCSAgIHRvayk7CisgCSAgICByZXR1cm4gRUlOVkFMOworIAl9CitAQCAtMTE5NCwxOCArMTE5NCwxOCBAQCBkb19kZWZpbmUoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQorIAorICAgICBuYW1lID0gbXlzdHJ0b2soTlVMTCwgIiBcdFxuIiwgdG9rcyk7CisgICAgIGlmICghbmFtZSkgeworLQlvdXQtPnByaW50ZihvdXQsICJObyB2YXJpYWJsZSBuYW1lIGdpdmVuIGZvciBkZWZpbmVcbiIpOworKwlvdXQtPmVwcmludGYob3V0LCAiTm8gdmFyaWFibGUgbmFtZSBnaXZlbiBmb3IgZGVmaW5lXG4iKTsKKyAJcmV0dXJuIEVJTlZBTDsKKyAgICAgfQorICAgICBlcnIgPSBnZXRfZGVsaW1fc3RyKHRva3MsICZ2YWx1ZSwgJmVycnN0cik7CisgICAgIGlmIChlcnIpIHsKKy0Jb3V0LT5wcmludGYob3V0LCAiQ291bGQgbm90IGdldCB2YXJpYWJsZSAlcyB2YWx1ZTogJXNcbiIsIG5hbWUsIGVycnN0cik7CisrCW91dC0+ZXByaW50ZihvdXQsICJDb3VsZCBub3QgZ2V0IHZhcmlhYmxlICVzIHZhbHVlOiAlc1xuIiwgbmFtZSwgZXJyc3RyKTsKKyAJcmV0dXJuIGVycjsKKyAgICAgfQorICAgICBlcnIgPSBhZGRfdmFyaWFibGUobmFtZSwgdmFsdWUpOworICAgICBpZiAoZXJyKSB7CisgCWZyZWUodmFsdWUpOworLQlvdXQtPnByaW50ZihvdXQsICJPdXQgb2YgbWVtb3J5IHNldHRpbmcgdmFyaWFibGUgJXNcbiIsIG5hbWUpOworKwlvdXQtPmVwcmludGYob3V0LCAiT3V0IG9mIG1lbW9yeSBzZXR0aW5nIHZhcmlhYmxlICVzXG4iLCBuYW1lKTsKKyAJcmV0dXJuIGVycjsKKyAgICAgfQorICAgICByZXR1cm4gMDsKK0BAIC0xMzAxLDcgKzEzMDEsNyBAQCBpcG1pX2VtdV9jbWQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgY2hhciAqY21kX3N0cikKKyAJCSAgICByZXR1cm4gcnY7CisgCQlydiA9IGlwbWlfZW11X2dldF9tY19ieV9hZGRyKGVtdSwgaXBtYiwgJm1jKTsKKyAJCWlmIChydikgeworLQkJICAgIG91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCBNQyBhZGRyZXNzXG4iKTsKKysJCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkIE1DIGFkZHJlc3NcbiIpOworIAkJICAgIHJldHVybiBydjsKKyAJCX0KKyAJICAgIH0KK0BAIC0xMzEyLDcgKzEzMTIsNyBAQCBpcG1pX2VtdV9jbWQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgY2hhciAqY21kX3N0cikKKyAJfQorICAgICB9CisgCistICAgIG91dC0+cHJpbnRmKG91dCwgIioqVW5rbm93biBjb21tYW5kOiAlc1xuIiwgY21kKTsKKysgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqVW5rbm93biBjb21tYW5kOiAlc1xuIiwgY21kKTsKKyAKKyAgb3V0OgorICAgICByZXR1cm4gcnY7CitkaWZmIC0tZ2l0IGEvbGFuc2Vydi9pcG1pX3NpbS5jIGIvbGFuc2Vydi9pcG1pX3NpbS5jCitpbmRleCA5NDcyY2NlLi4zMGM0ZjI3IDEwMDY0NAorLS0tIGEvbGFuc2Vydi9pcG1pX3NpbS5jCisrKysgYi9sYW5zZXJ2L2lwbWlfc2ltLmMKK0BAIC02MDcsOCArNjA3LDggQEAgaXNpbV9sb2coc3lzX2RhdGFfdCAqc3lzLCBpbnQgbG9ndHlwZSwgbXNnX3QgKm1zZywgY29uc3QgY2hhciAqZm9ybWF0LAorIAorICAgICBjb24gPSBkYXRhLT5jb25zb2xlczsKKyAgICAgd2hpbGUgKGNvbikgeworLQljb24tPm91dC5wcmludGYoJmNvbi0+b3V0LCAiJXMiLCBzdHIpOworLQljb24tPm91dC5wcmludGYoJmNvbi0+b3V0LCAiXG4iKTsKKysJY29uLT5vdXQuZXByaW50ZigmY29uLT5vdXQsICIlcyIsIHN0cik7CisrCWNvbi0+b3V0LmVwcmludGYoJmNvbi0+b3V0LCAiXG4iKTsKKyAJY29uID0gY29uLT5uZXh0OworICAgICB9CisgI2lmIEhBVkVfU1lTTE9HCitAQCAtOTU2LDcgKzk1Niw3IEBAIGNvbnNvbGVfYmluZF9yZWFkeShpbnQgZmQsIHZvaWQgKmNiX2RhdGEsIG9zX2huZF9mZF9pZF90ICppZCkKKyAgICAgbmV3Y29uLT5zaHV0ZG93bl9vbl9jbG9zZSA9IDA7CisgICAgIG5ld2Nvbi0+dGVsbmV0ID0gMTsKKyAgICAgbmV3Y29uLT50bl9wb3MgPSAwOworLSAgICBuZXdjb24tPm91dC5wcmludGYgPSBlbXVfcHJpbnRmOworKyAgICBuZXdjb24tPm91dC5lcHJpbnRmID0gZW11X3ByaW50ZjsKKyAgICAgbmV3Y29uLT5vdXQuZGF0YSA9IG5ld2NvbjsKKyAKKyAgICAgc2V0c29ja29wdChydiwgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLCAoY2hhciAqKSZ2YWwsIHNpemVvZih2YWwpKTsKK0BAIC0xNDYzLDEwICsxNDYzLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKKyAgICAgc3RkaW9fY29uc29sZS50ZWxuZXQgPSAwOworICAgICBzdGRpb19jb25zb2xlLnRuX3BvcyA9IDA7CisgICAgIGlmIChub3N0ZGlvKSB7CistCXN0ZGlvX2NvbnNvbGUub3V0LnByaW50ZiA9IGR1bW15X3ByaW50ZjsKKysJc3RkaW9fY29uc29sZS5vdXQuZXByaW50ZiA9IGR1bW15X3ByaW50ZjsKKyAJc3RkaW9fY29uc29sZS5vdXQuZGF0YSA9ICZzdGRpb19jb25zb2xlOworICAgICB9IGVsc2UgeworLQlzdGRpb19jb25zb2xlLm91dC5wcmludGYgPSBlbXVfcHJpbnRmOworKwlzdGRpb19jb25zb2xlLm91dC5lcHJpbnRmID0gZW11X3ByaW50ZjsKKyAJc3RkaW9fY29uc29sZS5vdXQuZGF0YSA9ICZzdGRpb19jb25zb2xlOworICAgICB9CisgICAgIHN0ZGlvX2NvbnNvbGUubmV4dCA9IE5VTEw7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2RvLW5vdC1pbnN0YWxsLXB5Yy1hbmQtcHlvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2RvLW5vdC1pbnN0YWxsLXB5Yy1hbmQtcHlvLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2RvLW5vdC1pbnN0YWxsLXB5Yy1hbmQtcHlvLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvZG8tbm90LWluc3RhbGwtcHljLWFuZC1weW8ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvZml4LXN5bWxpbmstaW5zdGFsbC1lcnJvci1pbi1jbWRsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2ZpeC1zeW1saW5rLWluc3RhbGwtZXJyb3ItaW4tY21kbGFuZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9maXgtc3ltbGluay1pbnN0YWxsLWVycm9yLWluLWNtZGxhbmcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9maXgtc3ltbGluay1pbnN0YWxsLWVycm9yLWluLWNtZGxhbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaW5jbHVkZV9zeXNfdHlwZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaW5jbHVkZV9zeXNfdHlwZXMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaW5jbHVkZV9zeXNfdHlwZXMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pbmNsdWRlX3N5c190eXBlcy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pcG1pLWluaXQtZml4LXRoZS1hcmd1bWVudHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaS1pbml0LWZpeC10aGUtYXJndW1lbnRzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2lwbWktaW5pdC1maXgtdGhlLWFyZ3VtZW50cy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2lwbWktaW5pdC1maXgtdGhlLWFyZ3VtZW50cy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9pcG1pLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaS5zZXJ2aWNlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2lwbWkuc2VydmljZQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2lwbWkuc2VydmljZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1oZWxwZXIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktaGVscGVyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLWhlbHBlcgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLWhlbHBlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1uby1vcGVuaXBtaWd1aS1tYW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktbm8tb3BlbmlwbWlndWktbWFuLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLW5vLW9wZW5pcG1pZ3VpLW1hbi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLW5vLW9wZW5pcG1pZ3VpLW1hbi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLXJlbW92ZS1ob3N0LXBhdGgtZnJvbS1sYV9MREZMQUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLXJlbW92ZS1ob3N0LXBhdGgtZnJvbS1sYV9MREZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNDg1YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktcmVtb3ZlLWhvc3QtcGF0aC1mcm9tLWxhX0xERkxBR1MucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBhYTBkYzA3ODNhNmZmNWZiNTZjOTE0YjY0MDgzNjIyM2UzYzE5MmJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjkgRGVjIDIwMTQgMTg6MTY6MDQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIGhvc3QgcGF0aCBmcm9tIGxhX0xERkxBR1MKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgY3Jvc3MgY29tcGlsZSBzcGVjaWZpYyBdCisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjbWRsYW5nL01ha2VmaWxlLmFtIHwgICAgMiArLQorIGdsaWIvTWFrZWZpbGUuYW0gICAgfCAgICA0ICsrLS0KKyB0Y2wvTWFrZWZpbGUuYW0gICAgIHwgICAgMiArLQorIHVuaXgvTWFrZWZpbGUuYW0gICAgfCAgICA0ICsrLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworSW5kZXg6IE9wZW5JUE1JLTIuMC4yNC9jbWRsYW5nL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gT3BlbklQTUktMi4wLjI0Lm9yaWcvY21kbGFuZy9NYWtlZmlsZS5hbQorKysrIE9wZW5JUE1JLTIuMC4yNC9jbWRsYW5nL01ha2VmaWxlLmFtCitAQCAtMTUsOCArMTUsNyBAQCBsaWJPcGVuSVBNSWNtZGxhbmdfbGFfU09VUkNFUyA9IGNtZGxhbmcuCisgbGliT3BlbklQTUljbWRsYW5nX2xhX0xJQkFERCA9IC1sbSBcCisgCSQodG9wX2J1aWxkZGlyKS91dGlscy9saWJPcGVuSVBNSXV0aWxzLmxhIFwKKyAJJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJPcGVuSVBNSS5sYQorLWxpYk9wZW5JUE1JY21kbGFuZ19sYV9MREZMQUdTID0gLXJkeW5hbWljIC12ZXJzaW9uLWluZm8gJChMRF9WRVJTSU9OKSBcCistCS1MJChsaWJkaXIpCisrbGliT3BlbklQTUljbWRsYW5nX2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pCisgCisgYmluX1BST0dSQU1TID0gb3BlbmlwbWlzaAorIAorSW5kZXg6IE9wZW5JUE1JLTIuMC4yNC91bml4L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gT3BlbklQTUktMi4wLjI0Lm9yaWcvdW5peC9NYWtlZmlsZS5hbQorKysrIE9wZW5JUE1JLTIuMC4yNC91bml4L01ha2VmaWxlLmFtCitAQCAtMTAsMTQgKzEwLDEyIEBAIGxpYl9MVExJQlJBUklFUyA9IGxpYk9wZW5JUE1JcG9zaXgubGEgbGkKKyBsaWJPcGVuSVBNSXB0aHJlYWRfbGFfU09VUkNFUyA9IHBvc2l4X3RocmVhZF9vc19obmQuYyBzZWxlY3Rvci5jCisgbGliT3BlbklQTUlwdGhyZWFkX2xhX0xJQkFERCA9IC1scHRocmVhZCAkKEdEQk1fTElCKSBcCisgCSQodG9wX2J1aWxkZGlyKS91dGlscy9saWJPcGVuSVBNSXV0aWxzLmxhICQoUlRfTElCKQorLWxpYk9wZW5JUE1JcHRocmVhZF9sYV9MREZMQUdTID0gLXJkeW5hbWljIC12ZXJzaW9uLWluZm8gJChMRF9WRVJTSU9OKSBcCistCS1MJChsaWJkaXIpCisrbGliT3BlbklQTUlwdGhyZWFkX2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pCisgCisgbGliT3BlbklQTUlwb3NpeF9sYV9TT1VSQ0VTID0gcG9zaXhfb3NfaG5kLmMgc2VsZWN0b3IuYworIGxpYk9wZW5JUE1JcG9zaXhfbGFfTElCQUREID0gJCh0b3BfYnVpbGRkaXIpL3V0aWxzL2xpYk9wZW5JUE1JdXRpbHMubGEgXAorIAkkKEdEQk1fTElCKSAkKFJUX0xJQikKKy1saWJPcGVuSVBNSXBvc2l4X2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pIFwKKy0JLUwkKGxpYmRpcikKKytsaWJPcGVuSVBNSXBvc2l4X2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pCisgCisgbm9pbnN0X0hFQURFUlMgPSBoZWFwLmgKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZjYzYzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI0LmJiCkBAIC0wLDAgKzEsMTEwIEBACitTVU1NQVJZID0gIklQTUkgKEludGVsbGlnZW50IFBsYXRmb3JtIE1hbmFnZW1lbnQgSW50ZXJmYWNlKSBsaWJyYXJ5IGFuZCB0b29scyIKK0RFU0NSSVBUSU9OID0gIk9wZW5JUE1JIGlzIGFuIGVmZm9ydCB0byBjcmVhdGUgYSBmdWxsLWZ1bmN0aW9uIElQTUkgc3lzdGVtLCBcCit0byBhbGxvdyBmdWxsIGFjY2VzcyB0byBhbGwgSVBNSSBpbmZvcm1hdGlvbiBvbiBhIHNlcnZlciBcCithbmQgdG8gYWJzdHJhY3QgaXQgdG8gYSBsZXZlbCB0aGF0IHdpbGwgbWFrZSBpdCBlYXN5IHRvIHVzZSIKKworSE9NRVBBR0UgPSAiaHR0cDovL29wZW5pcG1pLnNvdXJjZWZvcmdlLm5ldCIKKworREVQRU5EUyA9ICIgXAorICAgIGdsaWItMi4wIFwKKyAgICBuY3Vyc2VzIFwKKyAgICBuZXQtc25tcCBcCisgICAgb3BlbnNzbCBcCisgICAgcG9wdCBcCisgICAgcHl0aG9uIFwKKyAgICBzd2lnLW5hdGl2ZSBcCisgICAgIgorCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEgJiBCU0QiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9NGIzMThkNDE2MGViNjljOGVlNTM0NTJmZWIxYjRjZGYgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L29wZW5pcG1pL09wZW5JUE1JLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtc3ltbGluay1pbnN0YWxsLWVycm9yLWluLWNtZGxhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktbm8tb3BlbmlwbWlndWktbWFuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLXJlbW92ZS1ob3N0LXBhdGgtZnJvbS1sYV9MREZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2lwbWktaW5pdC1maXgtdGhlLWFyZ3VtZW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtaW5zdGFsbC1weWMtYW5kLXB5by5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlX3N5c190eXBlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1oZWxwZXIgXAorICAgICAgICAgICBmaWxlOi8vaXBtaS5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGFuc2Vydi1SZW5hbWUtc3RydWN0LXBhcmFtZXRlci1wcmludGYtZm9yLW5hbWVzcGFjZS5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L09wZW5JUE1JLSR7UFZ9IgorU1JDX1VSSVttZDVzdW1dID0gIjU4Zjk1NDJjYmZjYjVmZTI1MGI3N2NmODgzNDVlMWVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjYTM5YTI3MDcxMjc4YThiNzQ2MTAxODFlZGU4ZGY1MWUxNTVlNWU5MDMxYmM4ZWFhMzY5OWQxNzIwMjkyYjQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXN0YXRpYyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXBlcmw9JyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsJyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXB5dGhvbj0nJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uJyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXB5dGhvbmluc3RhbGw9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWdsaWJ2ZXI9Mi4wIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ2RibSIKK1BBQ0tBR0VDT05GSUdbZ2RibV0gPSAiYWNfY3ZfaGVhZGVyX2dkYm1faD15ZXMsYWNfY3ZfaGVhZGVyX2dkYm1faD1ubyxnZGJtLCIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBlcmwgJHtQTn0tcHl0aG9uIgorCitGSUxFU18ke1BOfS1wZXJsID0gIiBcCisgICAgJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9PcGVuSVBNSS5wbSBcCisgICAgJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL09wZW5JUE1JL09wZW5JUE1JLnNvIFwKKyAgICAiCisKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworRklMRVNfJHtQTn0tZGJnICs9ICIgXAorICAgICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9PcGVuSVBNSS8uZGVidWcgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1ZyBcCisgICAgIgorCitkb19jb25maWd1cmUgKCkgeworCisgICAgIyBMZXQncyBwZXJmb3JtIHJlZ3VsYXIgY29uZmlndXJhdGlvbiBmaXJzdCB0aGVuIGhhbmRsZSBwZXJsIGlzc3Vlcy4KKyAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCisKKyAgICBwZXJsX3Zlcj1gcGVybCAtVjp2ZXJzaW9uIHwgY3V0IC1kXCcgLWYgMmAKKyAgICAKKyAgICAjIEZvcmNlIG9wZW5pcG1pIHBlcmwgYmluZGluZ3MgdG8gYmUgY29tcGlsZWQgdXNpbmcgcGVybC1uYXRpdmUgaW5zdGVhZCBvZgorICAgICMgdGhlIGhvc3QncyBwZXJsLiBTZXQgdGhlIHByb3BlciBpbnN0YWxsIGRpcmVjdG9yeSBmb3IgdGhlIHJlc3VsdGluZworICAgICMgb3BlbmlwbWkucG0gYW5kIG9wZW5pcG1pLnNvCisgICAgZm9yIGkgaW4gJHtTfS9zd2lnL01ha2VmaWxlICR7U30vc3dpZy9wZXJsL01ha2VmaWxlOyBkbworICAgICAgICBlY2hvICJTQUw6IGkgPSAkaSIKKyAgICAgICAgZWNobyAiU0FMOiBTVEFHSU5HX0lOQ0RJUl9OQVRJVkUgPSAkU1RBR0lOR19JTkNESVJfTkFUSVZFIgorICAgICAgICBlY2hvICJTQUw6IGxpYmRpciA9ICRsaWJkaXIiCisgICAgICAgIHNlZCAtaSAtZSAiL15QRVJMX0NGTEFHUy9zOi1JL3Vzci9sb2NhbC9pbmNsdWRlOi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9OmciICRpCisgICAgICAgIHNlZCAtaSAtZSAiL15QRVJMX0lOU1RBTExfRElSL3M6XlBFUkxfSU5TVEFMTF9ESVIgPSAuKjpQRVJMX0lOU1RBTExfRElSID0gJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvJHBlcmxfdmVyOmciICRpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgZWNobyAiU0FMOiBEID0gJEQiCisgICAgZWNobyAiU0FMOiBsaWJkaXIgPSAkbGliZGlyIgorICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vaXBtaS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pcG1pCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaXBtaS5zeXNjb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9pcG1pCisgICAgIyBTQUw6IG12OiBjYW5ub3Qgc3RhdCBgL2xvY2FsZGlzay9sb2FkYnVpbGQvc2xpdHRsZTEvd29ya3NwYWNlL2NndHNfdGVzdF9idWlsZC9iaXRiYWtlX2J1aWxkL3RtcC93b3JrL3g4Nl82NC13cnMtbGludXgvb3BlbmlwbWktMi4wLjE5LXI0L2ltYWdlL3Vzci9saWI2NC9wZXJsNSc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyAgICAjIFNBTDogcmVhbCBwYXRoIHRvIHBlcmwgaXMgL2xvY2FsZGlzay9sb2FkYnVpbGQvc2xpdHRsZTEvd29ya3NwYWNlL2NndHNfdGVzdF9idWlsZC9iaXRiYWtlX2J1aWxkL3RtcC93b3JrL3g4Nl82NC13cnMtbGludXgvcGVybC01LjE0LjItcjguMy9wYWNrYWdlL3Vzci9saWI2NC9wZXJsNSBhbmQgaXQgaXMgYSBzeW1saW5rIHRvIHBlcmwgc28gbm8gbmVlZCB0byBtdi4KKyAgICBpZiBbIC1kICR7RH0ke2xpYmRpcn0vcGVybDUgXQorICAgIHRoZW4KKyAgICAgICAgbXYgJHtEfSR7bGliZGlyfS9wZXJsNSAke0R9JHtsaWJkaXJ9L3BlcmwKKyAgICBmaQorIAorICAgICMgZm9yIHN5c3RlbWQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjY0ICR7V09SS0RJUn0vaXBtaS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1pIC1lICJzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGciICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2lwbWkuc2VydmljZQorICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9vcGVuaXBtaS1oZWxwZXIgJHtEfSR7bGliZXhlY2Rpcn0KK30KKworSU5JVFNDUklQVF9OQU1FID0gImlwbWkiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAzMCAuIHN0b3AgNzAgMCAxIDIgMyA0IDUgNiAuIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaXBtaS5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjMuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi4zLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiNTEwZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjMuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBmdWxsLWZlYXR1cmVkIFNTTCBWUE4gc29sdXRpb24gdmlhIHR1biBkZXZpY2UuIgotSE9NRVBBR0UgPSAiaHR0cDovL29wZW52cG4uc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWFhYzIwMDE5OWZkZTQ3NTAxODc2Y2JhNzI2M2NiMGMiCi1ERVBFTkRTID0gImx6byBvcGVuc3NsIGlwcm91dGUyICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKLQotU1JDX1VSSSA9ICJodHRwOi8vc3d1cGRhdGUub3BlbnZwbi5vcmcvY29tbXVuaXR5L3JlbGVhc2VzL29wZW52cG4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wZW52cG4gXAotICAgICAgICAgICBmaWxlOi8vb3BlbnZwbkAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVudnBuLXZvbGF0aWxlLmNvbmYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNjU3NTUwNDRhZTg4ZjkyNDlkNTA5ZjZkMDYxZjdlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzEyZmU5ZWE2NDFhYzEyOTFlNzAzMjJjYzUwMDY0MWM4NGU1OTAzZGQ0ZjQwYmYyZWRhN2U5ZjIwOWIyZjljIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2Ugb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotQ0ZMQUdTICs9ICItZm5vLWlubGluZSIKLQotIyBJIHdhbnQgb3BlbnZwbiB0byBiZSBhYmxlIHRvIHJlYWQgcGFzc3dvcmQgZnJvbSBmaWxlIChocncpCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWlwcm91dGUyIgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcnLCAnLS1kaXNhYmxlLXBsdWdpbi1hdXRoLXBhbScsIGQpfSIKLQotIyBFeHBsaWNpdGx5IHNwZWNpZnkgSVBST1VURSB0byBieXBhc3MgdGhlIGNvbmZpZ3VyZS10aW1lIGNoZWNrIGZvciAvc2Jpbi9pcCBvbiB0aGUgaG9zdC4KLUVYVFJBX09FQ09ORiArPSAiSVBST1VURT0ke2Jhc2Vfc2JpbmRpcn0vaXAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vb3BlbnZwbiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUKLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NhbXBsZS9zYW1wbGUtY29uZmlnLWZpbGVzL2xvb3BiYWNrLXNlcnZlciAgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvbG9vcGJhY2stc2VydmVyLmNvbmYKLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NhbXBsZS9zYW1wbGUtY29uZmlnLWZpbGVzL2xvb3BiYWNrLWNsaWVudCAgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvbG9vcGJhY2stY2xpZW50LmNvbmYKLSAgICBpbnN0YWxsIC1kbSA3NTUgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3NhbXBsZS9zYW1wbGUta2V5cy8qICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL3NhbXBsZS1rZXlzCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZQotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYgotICAgICAgICBpbnN0YWxsIC1kIC1tIDcxMCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL29wZW52cG4KLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BlbnZwbi12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCi0gICAgICAgIHNlZCAtaSAtZSAncyNATE9DQUxTVEFURURJUkAjJHtsb2NhbHN0YXRlZGlyfSNnJyAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL29wZW52cG4uY29uZgotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIgJHtQTn0tc2FtcGxlICIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS10dW4iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L29wZW52cG4vcGx1Z2lucy8uZGVidWciCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQgXAotICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tc2FtcGxlICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMDk3ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC4zLmJiCkBAIC0wLDAgKzEsNjcgQEAKK1NVTU1BUlkgPSAiQSBmdWxsLWZlYXR1cmVkIFNTTCBWUE4gc29sdXRpb24gdmlhIHR1biBkZXZpY2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL29wZW52cG4uc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTliNjQ0OTFlYzk4ZWI2YzY0OTNhYzVlNDExOGYxMDciCitERVBFTkRTID0gImx6byBvcGVuc3NsIGlwcm91dGUyICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworU1JDX1VSSSA9ICJodHRwOi8vc3d1cGRhdGUub3BlbnZwbi5vcmcvY29tbXVuaXR5L3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVudnBuIFwKKyAgICAgICAgICAgZmlsZTovL29wZW52cG5ALnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnZwbi12b2xhdGlsZS5jb25mIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTE5MjlmODJhZmY0MGYzZDEwNWU1ZjcyYWFjZmY5YzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2VlM2QzY2E0NjI5NjBhNTBhNjdjMGViZDE4NmUwMWI2ZDEzZGI3MDI3NTIwNTY2MzY5NTE1MmM5YWNhODU3OSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ICs9ICJvcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlIG9wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0NGTEFHUyArPSAiLWZuby1pbmxpbmUiCisKKyMgSSB3YW50IG9wZW52cG4gdG8gYmUgYWJsZSB0byByZWFkIHBhc3N3b3JkIGZyb20gZmlsZSAoaHJ3KQorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1pcHJvdXRlMiIKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJywgJy0tZGlzYWJsZS1wbHVnaW4tYXV0aC1wYW0nLCBkKX0iCisKKyMgRXhwbGljaXRseSBzcGVjaWZ5IElQUk9VVEUgdG8gYnlwYXNzIHRoZSBjb25maWd1cmUtdGltZSBjaGVjayBmb3IgL3NiaW4vaXAgb24gdGhlIGhvc3QuCitFWFRSQV9PRUNPTkYgKz0gIklQUk9VVEU9JHtiYXNlX3NiaW5kaXJ9L2lwIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L29wZW52cG4gJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vb3BlbnZwbgorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zYW1wbGUvc2FtcGxlLWNvbmZpZy1maWxlcy9sb29wYmFjay1zZXJ2ZXIgICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL2xvb3BiYWNrLXNlcnZlci5jb25mCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zYW1wbGUvc2FtcGxlLWNvbmZpZy1maWxlcy9sb29wYmFjay1jbGllbnQgICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL2xvb3BiYWNrLWNsaWVudC5jb25mCisgICAgaW5zdGFsbCAtZG0gNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL3NhbXBsZS1rZXlzCisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9zYW1wbGUvc2FtcGxlLWtleXMvKiAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9zYW1wbGUta2V5cworCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfQorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIKKyAgICAgICAgaW5zdGFsbCAtZCAtbSA3MTAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9vcGVudnBuCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wZW52cG4tdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL29wZW52cG4uY29uZgorICAgICAgICBzZWQgLWkgLWUgJ3MjQExPQ0FMU1RBVEVESVJAIyR7bG9jYWxzdGF0ZWRpcn0jZycgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9vcGVudnBuLmNvbmYKKyAgICBmaQorfQorCitQQUNLQUdFUyA9KyAiICR7UE59LXNhbXBsZSAiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtdHVuIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9vcGVudnBuL3BsdWdpbnMvLmRlYnVnIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKKyAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LXNhbXBsZSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcGltZC9waW1kLzAwMDEtY29uZmlndXJlLURvbnQtdXNlLXVuYW1lLXRvLWRldGVybWluZS10YXJnZXQtT1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcGltZC9waW1kLzAwMDEtY29uZmlndXJlLURvbnQtdXNlLXVuYW1lLXRvLWRldGVybWluZS10YXJnZXQtT1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1NDlkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9waW1kL3BpbWQvMDAwMS1jb25maWd1cmUtRG9udC11c2UtdW5hbWUtdG8tZGV0ZXJtaW5lLXRhcmdldC1PUy5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGYzZTA0MjgxYmFkMzYxMjQ5YThkYWQwY2RlMTUwYTgwMWQ3MjBmNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAxODo0Njo1MiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IERvbnQgdXNlIHVuYW1lIHRvIGRldGVybWluZSB0YXJnZXQgT1MKKworSGVscHMgd2l0aCBjcm9zcy1jb21waWxpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggNmMzNWE3Mi4uZjk3MTRlMiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtMzEsNyArMzEsNyBAQAorICNERUZTICs9IC1EU0NPUEVEX0FDTAorICMKKyAKKy1PUz1gdW5hbWVgCisrT1M9IkxpbnV4IgorIENGRz1jb25maWcubWsKKyBUTVA9YG1rdGVtcCAvdG1wL1hYWFhYWGAKKyBCVUdSRVBPUlRfVVJMPSJodHRwczovL2dpdGh1Yi5jb20vdHJvZ2xvYml0L3BpbWQvaXNzdWVzIgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3BpbWQvcGltZF8yLjEuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9waW1kL3BpbWRfMi4xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZGI2NDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3BpbWQvcGltZF8yLjEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAicGltZCBpcyBhIGxpZ2h0d2VpZ2h0IHN0YW5kLWFsb25lIFBJTS1TTSB2MiBtdWx0aWNhc3Qgcm91dGluZyBkYWVtb24uIgotSE9NRVBBR0UgPSAiaHR0cDovL3Ryb2dsb2JpdC5jb20vcGltZC5odG1sIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk0ZjEwOGY5MWZhYjcyMGQ2MjQyNTc3MGI3MGRkNzkwIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC50cm9nbG9iaXQuY29tL3BpbWQvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTI0NDhiYzdjOWJmY2ViZjUxYTEzZWJmMWZmYTk2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMTAxNjk0MDU0M2EwYTYxMzFkNGU2YzkxYjU5NWQ0N2UxODcwMTJjNTlhMjk4ZWVjMTRjM2RiYzM4NTY0YjNhIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLUNGTEFHUyArPSAiLUkgJHtTfS9pbmNsdWRlICIKLQotZG9faW5zdGFsbCgpIHsKLSAgICB1bnNldCBkYXRhZGlyCi0gICAgdW5zZXQgbWFuZGlyCi0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9waW1kL3BpbWRfMi4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcGltZC9waW1kXzIuMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmYWE3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcGltZC9waW1kXzIuMy4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAicGltZCBpcyBhIGxpZ2h0d2VpZ2h0IHN0YW5kLWFsb25lIFBJTS1TTSB2MiBtdWx0aWNhc3Qgcm91dGluZyBkYWVtb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3Ryb2dsb2JpdC5jb20vcGltZC5odG1sIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk0ZjEwOGY5MWZhYjcyMGQ2MjQyNTc3MGI3MGRkNzkwIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC50cm9nbG9iaXQuY29tL3BpbWQvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLURvbnQtdXNlLXVuYW1lLXRvLWRldGVybWluZS10YXJnZXQtT1MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYTNjMDNlNDA1NDA5ODBiMmMwNmUyNjVhMTc5ODhlNjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc3YTk4MTI3NTFmMTE0NDkwYTI4YTY4MzliMTZhYWM4YjAyMGM4ZDlmZDZhYTIyYmYzODgwYzA1NGUxOWYxZCIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZW1iZWRkZWQtbGliYyIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBvZV9ydW5jb25mCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL2ZpbGVzLzAwMDEtbWVtb3J5LmgtSW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vZmlsZXMvMDAwMS1tZW1vcnkuaC1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ViYzM5OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL2ZpbGVzLzAwMDEtbWVtb3J5LmgtSW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMmEzYWIwNGJiZGM0NjI0NzkyODg2YWE1MTU3OWVhZGI0MjdlZjk5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDA3OjQyOjExIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lbW9yeS5oOiBJbmNsdWRlIHN0ZGludC5oIGZvciB1aW50cHRyX3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWJzdHJvbmdzd2FuL3V0aWxzL3V0aWxzL21lbW9yeS5oIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9saWJzdHJvbmdzd2FuL3V0aWxzL3V0aWxzL21lbW9yeS5oIGIvc3JjL2xpYnN0cm9uZ3N3YW4vdXRpbHMvdXRpbHMvbWVtb3J5LmgKK2luZGV4IGI5NzhlN2MuLjU1YWFhZjUgMTAwNjQ0CistLS0gYS9zcmMvbGlic3Ryb25nc3dhbi91dGlscy91dGlscy9tZW1vcnkuaAorKysrIGIvc3JjL2xpYnN0cm9uZ3N3YW4vdXRpbHMvdXRpbHMvbWVtb3J5LmgKK0BAIC0yMiw2ICsyMiw4IEBACisgI2lmbmRlZiBNRU1PUllfSF8KKyAjZGVmaW5lIE1FTU9SWV9IXworIAorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKyAvKioKKyAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjb21wYXJlcyB0d28gYmluYXJ5IGJsb2JzIGZvciBlcXVhbGl0eQorICAqLworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MzIxNGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBcCi1MaW51eCBvcGVyYXRpbmcgc3lzdGVtLiIKLVNVTU1BUlkgPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zdHJvbmdzd2FuLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJnbXAgb3BlbnNzbCBmbGV4LW5hdGl2ZSBmbGV4IGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc3Ryb25nc3dhbi5vcmcvc3Ryb25nc3dhbi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgZmlsZTovL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZWJhOTQ3NGY3ZGM2YzhjOGQ3MDM3MjYxMzU4ZTY4ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MjBiMzAxOTkxZjc3YmRlZGQ4ZDU1MWE5NTZmNTJlMmQxMTY4NmEwZWMxOGU4MzIwOTRmODZjZjJiODQyYWI3IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAgICAgLS13aXRob3V0LWxpYi1wcmVmaXggXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCAnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJywgZCl9IgotCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJjaGFyb24gY3VybCBnbXAgb3BlbnNzbCBzdHJva2Ugc3FsaXRlMyBcCi0gICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xkYXAnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thZXNuaV0gPSAiLS1lbmFibGUtYWVzbmksLS1kaXNhYmxlLWFlc25pLCwke1BOfS1wbHVnaW4tYWVzbmkiCi1QQUNLQUdFQ09ORklHW2NoYXJvbl0gPSAiLS1lbmFibGUtY2hhcm9uLC0tZGlzYWJsZS1jaGFyb24sIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsJHtQTn0tcGx1Z2luLWN1cmwiCi1QQUNLQUdFQ09ORklHW2dtcF0gPSAiLS1lbmFibGUtZ21wLC0tZGlzYWJsZS1nbXAsZ21wLCR7UE59LXBsdWdpbi1nbXAiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXAsLS1kaXNhYmxlLWxkYXAsb3BlbmxkYXAsJHtQTn0tcGx1Z2luLWxkYXAiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCwtLWRpc2FibGUtbXlzcWwsbXlzcWw1LCR7UE59LXBsdWdpbi1teXNxbCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsLCR7UE59LXBsdWdpbi1vcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzY2VwXSA9ICItLWVuYWJsZS1zY2VwY2xpZW50LC0tZGlzYWJsZS1zY2VwY2xpZW50LCIKLVBBQ0tBR0VDT05GSUdbc291cF0gPSAiLS1lbmFibGUtc291cCwtLWRpc2FibGUtc291cCxsaWJzb3VwLTIuNCwke1BOfS1wbHVnaW4tc291cCIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMywke1BOfS1wbHVnaW4tc3FsaXRlIgotUEFDS0FHRUNPTkZJR1tzdHJva2VdID0gIi0tZW5hYmxlLXN0cm9rZSwtLWRpc2FibGUtc3Ryb2tlLCwke1BOfS1wbHVnaW4tc3Ryb2tlIgotUEFDS0FHRUNPTkZJR1tzd2FuY3RsXSA9ICItLWVuYWJsZS1zd2FuY3RsLC0tZGlzYWJsZS1zd2FuY3RsLCxsaWJnY2MiCi0KLSMgcmVxdWlyZXMgc3dhbmN0bAotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kLWNoYXJvbl0gPSAiLS1lbmFibGUtc3lzdGVtZCwtLWRpc2FibGUtc3lzdGVtZCxzeXN0ZW1kLCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCBwa2djb25maWcKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1pcHNlYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9pcHNlYy9saWIqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGJnICs9ICIke2JpbmRpcn0vLmRlYnVnICR7bGliZGlyfS9pcHNlYy8uZGVidWcgJHtsaWJleGVjZGlyfS9pcHNlYy8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9pcHNlYy9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS9pcHNlYy8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vaXBzZWMvKi5hIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8qLmNvbmYgJHtzeXNjb25mZGlyfS9pcHNlYy5kLyouY29uZiAke3N5c2NvbmZkaXJ9L3N0cm9uZ3N3YW4uZC8qLmNvbmYiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1wbHVnaW5zIgotQUxMT1dfRU1QVFlfJHtQTn0tcGx1Z2lucyA9ICIxIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tcGx1Z2luLS4qJCIKLU5PQVVUT1BBQ0tBR0VERUJVRyA9ICIxIgotCi1weXRob24gc3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICgpIHsKLSAgICBzeXNjb25mZGlyID0gZC5leHBhbmQoJyR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kL2NoYXJvbicpCi0gICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9pcHNlYy9wbHVnaW5zJykKLSAgICBkYmdsaWJkaXIgPSBvcy5wYXRoLmpvaW4obGliZGlyLCAnLmRlYnVnJykKLQotICAgIGRlZiBhZGRfcGx1Z2luX2NvbmYoZiwgcGtnLCBmaWxlX3JlZ2V4LCBvdXRwdXRfcGF0dGVybiwgbW9kdWxlbmFtZSk6Ci0gICAgICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcsIFRydWUpCi0gICAgICAgIG9sZGZpbGVzID0gZC5nZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBUcnVlKQotICAgICAgICBuZXdmaWxlID0gJy8nICsgb3MucGF0aC5yZWxwYXRoKGYsIGR2YXIpCi0KLSAgICAgICAgaWYgbm90IG9sZGZpbGVzOgotICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBuZXdmaWxlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBvbGRmaWxlcyArICIgIiArIG5ld2ZpbGUpCi0KLSAgICBzcGxpdF9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c2NvbmZkaXIsICcoLiopXC5jb25mJywgJyR7UE59LXBsdWdpbi0lcycsICdzdHJvbmdTd2FuICVzIHBsdWdpbicsIHByZXBlbmQ9VHJ1ZSwgaG9vaz1hZGRfcGx1Z2luX2NvbmYpCi0KLSAgICBzcGxpdF9kYmdfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBkYmdsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLnNvJywgJyR7UE59LXBsdWdpbi0lcy1kYmcnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZWJ1Z2dpbmcgZmlsZXMnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRiZycpCi0gICAgc3BsaXRfZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5sYScsICcke1BOfS1wbHVnaW4tJXMtZGV2JywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luIC0gRGV2ZWxvcG1lbnQgZmlsZXMnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCi0gICAgc3BsaXRfc3RhdGljZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5hJywgJyR7UE59LXBsdWdpbi0lcy1zdGF0aWNkZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcyAoU3RhdGljIExpYnJhcmllcyknLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LXN0YXRpY2RldicpCi0KLSAgICBpZiBzcGxpdF9wYWNrYWdlczoKLSAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQotICAgICAgICBkLnNldFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1wbHVnaW5zJywgJyAnLmpvaW4oc3BsaXRfcGFja2FnZXMpKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1kYmcnLCAnICcgKyAnICcuam9pbihzcGxpdF9kYmdfcGFja2FnZXMpKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1kZXYnLCAnICcgKyAnICcuam9pbihzcGxpdF9kZXZfcGFja2FnZXMpKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1zdGF0aWNkZXYnLCAnICcgKyAnICcuam9pbihzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMpKQotfQotCi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3N0cm9uZ3N3YW5fcGx1Z2lucyAiCi0KLSMgSW5zdGFsbCBzb21lIGRlZmF1bHQgcGx1Z2lucyBiYXNlZCBvbiBkZWZhdWx0IHN0cm9uZ1N3YW4gLi9jb25maWd1cmUgb3B0aW9ucwotIyBTZWUgaHR0cHM6Ly93aWtpLnN0cm9uZ3N3YW4ub3JnL3Byb2plY3RzL3N0cm9uZ3N3YW4vd2lraS9QbHVnaW5saXN0Ci1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UE59LXBsdWdpbi1hZXMgXAotICAgICR7UE59LXBsdWdpbi1hdHRyIFwKLSAgICAke1BOfS1wbHVnaW4tY21hYyBcCi0gICAgJHtQTn0tcGx1Z2luLWNvbnN0cmFpbnRzIFwKLSAgICAke1BOfS1wbHVnaW4tZGVzIFwKLSAgICAke1BOfS1wbHVnaW4tZG5za2V5IFwKLSAgICAke1BOfS1wbHVnaW4taG1hYyBcCi0gICAgJHtQTn0tcGx1Z2luLWtlcm5lbC1uZXRsaW5rIFwKLSAgICAke1BOfS1wbHVnaW4tbWQ1IFwKLSAgICAke1BOfS1wbHVnaW4tbm9uY2UgXAotICAgICR7UE59LXBsdWdpbi1wZW0gXAotICAgICR7UE59LXBsdWdpbi1wZ3AgXAotICAgICR7UE59LXBsdWdpbi1wa2NzMSBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3M3IFwKLSAgICAke1BOfS1wbHVnaW4tcGtjczggXAotICAgICR7UE59LXBsdWdpbi1wa2NzMTIgXAotICAgICR7UE59LXBsdWdpbi1wdWJrZXkgXAotICAgICR7UE59LXBsdWdpbi1yYW5kb20gXAotICAgICR7UE59LXBsdWdpbi1yYzIgXAotICAgICR7UE59LXBsdWdpbi1yZXNvbHZlIFwKLSAgICAke1BOfS1wbHVnaW4tcmV2b2NhdGlvbiBcCi0gICAgJHtQTn0tcGx1Z2luLXNoYTEgXAotICAgICR7UE59LXBsdWdpbi1zaGEyIFwKLSAgICAke1BOfS1wbHVnaW4tc29ja2V0LWRlZmF1bHQgXAotICAgICR7UE59LXBsdWdpbi1zc2hrZXkgXAotICAgICR7UE59LXBsdWdpbi11cGRvd24gXAotICAgICR7UE59LXBsdWdpbi12aWNpIFwKLSAgICAke1BOfS1wbHVnaW4teDUwOSBcCi0gICAgJHtQTn0tcGx1Z2luLXhhdXRoLWdlbmVyaWMgXAotICAgICR7UE59LXBsdWdpbi14Y2JjIFwKLSAgICAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3dhbmN0bCcsICcke0JQTn0tc3dhbmN0bC5zZXJ2aWNlJywgJyR7QlBOfS5zZXJ2aWNlJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjUuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiNTZiYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS41LjMuYmIKQEAgLTAsMCArMSwxMzEgQEAKK0RFU0NSSVBUSU9OID0gInN0cm9uZ1N3YW4gaXMgYW4gT3BlblNvdXJjZSBJUHNlYyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFwKK0xpbnV4IG9wZXJhdGluZyBzeXN0ZW0uIgorU1VNTUFSWSA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnN0cm9uZ3N3YW4ub3JnIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCitERVBFTkRTID0gImdtcCBvcGVuc3NsIGZsZXgtbmF0aXZlIGZsZXggYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5zdHJvbmdzd2FuLm9yZy9zdHJvbmdzd2FuLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZml4LWZ1bnRpb24tcGFyYW1ldGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtb3J5LmgtSW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGFmZmZlM2MyMTliYjJlMDRmMDk1MTA5MDVhZjgzNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzVlYTU0YjE5OTE3NDcwOGRlMTFhZjliOGY0ZWNmMjhiNWIwNzQzZDRiYzBlMzgwZTc0MWYyNWIyOGMwZjhkNCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgIC0td2l0aG91dC1saWItcHJlZml4IFwKKyIKKworRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJywgJy0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcicsIGQpfSIKKworCitQQUNLQUdFQ09ORklHID8/PSAiY2hhcm9uIGN1cmwgZ21wIG9wZW5zc2wgc3Ryb2tlIHNxbGl0ZTMgXAorICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsZGFwJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWVzbmldID0gIi0tZW5hYmxlLWFlc25pLC0tZGlzYWJsZS1hZXNuaSwsJHtQTn0tcGx1Z2luLWFlc25pIgorUEFDS0FHRUNPTkZJR1tjaGFyb25dID0gIi0tZW5hYmxlLWNoYXJvbiwtLWRpc2FibGUtY2hhcm9uLCIKK1BBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsLCR7UE59LXBsdWdpbi1jdXJsIgorUEFDS0FHRUNPTkZJR1tnbXBdID0gIi0tZW5hYmxlLWdtcCwtLWRpc2FibGUtZ21wLGdtcCwke1BOfS1wbHVnaW4tZ21wIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLG9wZW5sZGFwLCR7UE59LXBsdWdpbi1sZGFwIgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS1lbmFibGUtbXlzcWwsLS1kaXNhYmxlLW15c3FsLG15c3FsNSwke1BOfS1wbHVnaW4tbXlzcWwiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCwke1BOfS1wbHVnaW4tb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2NlcF0gPSAiLS1lbmFibGUtc2NlcGNsaWVudCwtLWRpc2FibGUtc2NlcGNsaWVudCwiCitQQUNLQUdFQ09ORklHW3NvdXBdID0gIi0tZW5hYmxlLXNvdXAsLS1kaXNhYmxlLXNvdXAsbGlic291cC0yLjQsJHtQTn0tcGx1Z2luLXNvdXAiCitQQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0tZW5hYmxlLXNxbGl0ZSwtLWRpc2FibGUtc3FsaXRlLHNxbGl0ZTMsJHtQTn0tcGx1Z2luLXNxbGl0ZSIKK1BBQ0tBR0VDT05GSUdbc3Ryb2tlXSA9ICItLWVuYWJsZS1zdHJva2UsLS1kaXNhYmxlLXN0cm9rZSwsJHtQTn0tcGx1Z2luLXN0cm9rZSIKK1BBQ0tBR0VDT05GSUdbc3dhbmN0bF0gPSAiLS1lbmFibGUtc3dhbmN0bCwtLWRpc2FibGUtc3dhbmN0bCwsbGliZ2NjIgorCisjIHJlcXVpcmVzIHN3YW5jdGwKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZC1jaGFyb25dID0gIi0tZW5hYmxlLXN5c3RlbWQsLS1kaXNhYmxlLXN5c3RlbWQsc3lzdGVtZCwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgcGtnY29uZmlnCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtaXBzZWMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vaXBzZWMvbGliKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtiaW5kaXJ9Ly5kZWJ1ZyAke2xpYmRpcn0vaXBzZWMvLmRlYnVnICR7bGliZXhlY2Rpcn0vaXBzZWMvLmRlYnVnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vaXBzZWMvbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vaXBzZWMvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2lwc2VjLyouYSIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vKi5jb25mICR7c3lzY29uZmRpcn0vaXBzZWMuZC8qLmNvbmYgJHtzeXNjb25mZGlyfS9zdHJvbmdzd2FuLmQvKi5jb25mIgorCitQQUNLQUdFUyArPSAiJHtQTn0tcGx1Z2lucyIKK0FMTE9XX0VNUFRZXyR7UE59LXBsdWdpbnMgPSAiMSIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LXBsdWdpbi0uKiQiCitOT0FVVE9QQUNLQUdFREVCVUcgPSAiMSIKKworcHl0aG9uIHNwbGl0X3N0cm9uZ3N3YW5fcGx1Z2lucyAoKSB7CisgICAgc3lzY29uZmRpciA9IGQuZXhwYW5kKCcke3N5c2NvbmZkaXJ9L3N0cm9uZ3N3YW4uZC9jaGFyb24nKQorICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vaXBzZWMvcGx1Z2lucycpCisgICAgZGJnbGliZGlyID0gb3MucGF0aC5qb2luKGxpYmRpciwgJy5kZWJ1ZycpCisKKyAgICBkZWYgYWRkX3BsdWdpbl9jb25mKGYsIHBrZywgZmlsZV9yZWdleCwgb3V0cHV0X3BhdHRlcm4sIG1vZHVsZW5hbWUpOgorICAgICAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnLCBUcnVlKQorICAgICAgICBvbGRmaWxlcyA9IGQuZ2V0VmFyKCdDT05GRklMRVNfJyArIHBrZywgVHJ1ZSkKKyAgICAgICAgbmV3ZmlsZSA9ICcvJyArIG9zLnBhdGgucmVscGF0aChmLCBkdmFyKQorCisgICAgICAgIGlmIG5vdCBvbGRmaWxlczoKKyAgICAgICAgICAgIGQuc2V0VmFyKCdDT05GRklMRVNfJyArIHBrZywgbmV3ZmlsZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGQuc2V0VmFyKCdDT05GRklMRVNfJyArIHBrZywgb2xkZmlsZXMgKyAiICIgKyBuZXdmaWxlKQorCisgICAgc3BsaXRfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLnNvJywgJyR7UE59LXBsdWdpbi0lcycsICdzdHJvbmdTd2FuICVzIHBsdWdpbicsIHByZXBlbmQ9VHJ1ZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBzeXNjb25mZGlyLCAnKC4qKVwuY29uZicsICcke1BOfS1wbHVnaW4tJXMnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4nLCBwcmVwZW5kPVRydWUsIGhvb2s9YWRkX3BsdWdpbl9jb25mKQorCisgICAgc3BsaXRfZGJnX3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgZGJnbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5zbycsICcke1BOfS1wbHVnaW4tJXMtZGJnJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luIC0gRGVidWdnaW5nIGZpbGVzJywgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScke1BOfS1kYmcnKQorICAgIHNwbGl0X2Rldl9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwubGEnLCAnJHtQTn0tcGx1Z2luLSVzLWRldicsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERldmVsb3BtZW50IGZpbGVzJywgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQorICAgIHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuYScsICcke1BOfS1wbHVnaW4tJXMtc3RhdGljZGV2JywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luIC0gRGV2ZWxvcG1lbnQgZmlsZXMgKFN0YXRpYyBMaWJyYXJpZXMpJywgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScke1BOfS1zdGF0aWNkZXYnKQorCisgICAgaWYgc3BsaXRfcGFja2FnZXM6CisgICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKKyAgICAgICAgZC5zZXRWYXIoJ1JSRUNPTU1FTkRTXycgKyBwbiArICctcGx1Z2lucycsICcgJy5qb2luKHNwbGl0X3BhY2thZ2VzKSkKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXycgKyBwbiArICctZGJnJywgJyAnICsgJyAnLmpvaW4oc3BsaXRfZGJnX3BhY2thZ2VzKSkKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXycgKyBwbiArICctZGV2JywgJyAnICsgJyAnLmpvaW4oc3BsaXRfZGV2X3BhY2thZ2VzKSkKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXycgKyBwbiArICctc3RhdGljZGV2JywgJyAnICsgJyAnLmpvaW4oc3BsaXRfc3RhdGljZGV2X3BhY2thZ2VzKSkKK30KKworUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9zdHJvbmdzd2FuX3BsdWdpbnMgIgorCisjIEluc3RhbGwgc29tZSBkZWZhdWx0IHBsdWdpbnMgYmFzZWQgb24gZGVmYXVsdCBzdHJvbmdTd2FuIC4vY29uZmlndXJlIG9wdGlvbnMKKyMgU2VlIGh0dHBzOi8vd2lraS5zdHJvbmdzd2FuLm9yZy9wcm9qZWN0cy9zdHJvbmdzd2FuL3dpa2kvUGx1Z2lubGlzdAorUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BOfS1wbHVnaW4tYWVzIFwKKyAgICAke1BOfS1wbHVnaW4tYXR0ciBcCisgICAgJHtQTn0tcGx1Z2luLWNtYWMgXAorICAgICR7UE59LXBsdWdpbi1jb25zdHJhaW50cyBcCisgICAgJHtQTn0tcGx1Z2luLWRlcyBcCisgICAgJHtQTn0tcGx1Z2luLWRuc2tleSBcCisgICAgJHtQTn0tcGx1Z2luLWhtYWMgXAorICAgICR7UE59LXBsdWdpbi1rZXJuZWwtbmV0bGluayBcCisgICAgJHtQTn0tcGx1Z2luLW1kNSBcCisgICAgJHtQTn0tcGx1Z2luLW5vbmNlIFwKKyAgICAke1BOfS1wbHVnaW4tcGVtIFwKKyAgICAke1BOfS1wbHVnaW4tcGdwIFwKKyAgICAke1BOfS1wbHVnaW4tcGtjczEgXAorICAgICR7UE59LXBsdWdpbi1wa2NzNyBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3M4IFwKKyAgICAke1BOfS1wbHVnaW4tcGtjczEyIFwKKyAgICAke1BOfS1wbHVnaW4tcHVia2V5IFwKKyAgICAke1BOfS1wbHVnaW4tcmFuZG9tIFwKKyAgICAke1BOfS1wbHVnaW4tcmMyIFwKKyAgICAke1BOfS1wbHVnaW4tcmVzb2x2ZSBcCisgICAgJHtQTn0tcGx1Z2luLXJldm9jYXRpb24gXAorICAgICR7UE59LXBsdWdpbi1zaGExIFwKKyAgICAke1BOfS1wbHVnaW4tc2hhMiBcCisgICAgJHtQTn0tcGx1Z2luLXNvY2tldC1kZWZhdWx0IFwKKyAgICAke1BOfS1wbHVnaW4tc3Noa2V5IFwKKyAgICAke1BOfS1wbHVnaW4tdXBkb3duIFwKKyAgICAke1BOfS1wbHVnaW4tdmljaSBcCisgICAgJHtQTn0tcGx1Z2luLXg1MDkgXAorICAgICR7UE59LXBsdWdpbi14YXV0aC1nZW5lcmljIFwKKyAgICAke1BOfS1wbHVnaW4teGNiYyBcCisgICAgIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N3YW5jdGwnLCAnJHtCUE59LXN3YW5jdGwuc2VydmljZScsICcke0JQTn0uc2VydmljZScsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWwvZml4LW9wZW5zc2wtbm8tZGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0dW5uZWwvc3R1bm5lbC9maXgtb3BlbnNzbC1uby1kZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA5YjBkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWwvZml4LW9wZW5zc2wtbm8tZGVzLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitXaGVuIG9wZW5zc2wgZGlzYWJsZSBkZXMgc3VwcG9ydCB3aXRoIGNvbmZpZ3VyZSBvcHRpb24gJ25vLWRlcycsIGl0IGRvZXNuJ3QKK3Byb3ZpZGUgZGVzIHJlbGF0ZWQgaGVhZGVyIGZpbGUgYW5kIGZ1bmN0aW9ucy4gVGhhdCBjYXVzZXMgc3R1bm5lbCBjb21waWxlCitmYWlsZWQuIEZpeCBpdCBieSBjaGVja2luZyBtYWNybyBPUEVOU1NMX05PX0RFUyB0byB1c2Ugb3BlbnNzbCBkZXMgcmVsYXRlZAorbGlicmFyeSBjb25kaXRpb25hbHkuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi5oIGIvc3JjL2NvbW1vbi5oCitpbmRleCBmN2QzOGIwLi5iZjQ4NWFmIDEwMDY0NAorLS0tIGEvc3JjL2NvbW1vbi5oCisrKysgYi9zcmMvY29tbW9uLmgKK0BAIC00NzEsNyArNDcxLDkgQEAgZXh0ZXJuIGNoYXIgKnN5c19lcnJsaXN0W107CisgI2lmbmRlZiBPUEVOU1NMX05PX01ENAorICNpbmNsdWRlIDxvcGVuc3NsL21kNC5oPgorICNlbmRpZiAvKiAhZGVmaW5lZChPUEVOU1NMX05PX01ENCkgKi8KKysjaWZuZGVmIE9QRU5TU0xfTk9fREVTCisgI2luY2x1ZGUgPG9wZW5zc2wvZGVzLmg+CisrI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX0RICisgI2luY2x1ZGUgPG9wZW5zc2wvZGguaD4KKyAjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUjwweDEwMTAwMDAwTAorZGlmZiAtLWdpdCBhL3NyYy9wcm90b2NvbC5jIGIvc3JjL3Byb3RvY29sLmMKK2luZGV4IDU4N2RmMDkuLjgxOThlYjYgMTAwNjQ0CistLS0gYS9zcmMvcHJvdG9jb2wuYworKysrIGIvc3JjL3Byb3RvY29sLmMKK0BAIC02Niw3ICs2Niw3IEBAIE5PRVhQT1JUIGNoYXIgKmltYXBfc2VydmVyKENMSSAqLCBTRVJWSUNFX09QVElPTlMgKiwgY29uc3QgUEhBU0UpOworIE5PRVhQT1JUIGNoYXIgKm5udHBfY2xpZW50KENMSSAqLCBTRVJWSUNFX09QVElPTlMgKiwgY29uc3QgUEhBU0UpOworIE5PRVhQT1JUIGNoYXIgKmNvbm5lY3Rfc2VydmVyKENMSSAqLCBTRVJWSUNFX09QVElPTlMgKiwgY29uc3QgUEhBU0UpOworIE5PRVhQT1JUIGNoYXIgKmNvbm5lY3RfY2xpZW50KENMSSAqLCBTRVJWSUNFX09QVElPTlMgKiwgY29uc3QgUEhBU0UpOworLSNpZm5kZWYgT1BFTlNTTF9OT19NRDQKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19NRDQpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fREVTKQorIE5PRVhQT1JUIHZvaWQgbnRsbShDTEkgKiwgU0VSVklDRV9PUFRJT05TICopOworIE5PRVhQT1JUIGNoYXIgKm50bG0xKCk7CisgTk9FWFBPUlQgY2hhciAqbnRsbTMoY2hhciAqLCBjaGFyICosIGNoYXIgKiwgY2hhciAqKTsKK0BAIC0xMTc1LDcgKzExNzUsNyBAQCBOT0VYUE9SVCBjaGFyICpjb25uZWN0X2NsaWVudChDTEkgKmMsIFNFUlZJQ0VfT1BUSU9OUyAqb3B0LCBjb25zdCBQSEFTRSBwaGFzZSkgeworICAgICBmZF9wcmludGYoYywgYy0+cmVtb3RlX2ZkLmZkLCAiSG9zdDogJXMiLCBvcHQtPnByb3RvY29sX2hvc3QpOworICAgICBpZihvcHQtPnByb3RvY29sX3VzZXJuYW1lICYmIG9wdC0+cHJvdG9jb2xfcGFzc3dvcmQpIHsKKyAgICAgICAgIGlmKCFzdHJjYXNlY21wKG9wdC0+cHJvdG9jb2xfYXV0aGVudGljYXRpb24sICJudGxtIikpIHsKKy0jaWZuZGVmIE9QRU5TU0xfTk9fTUQ0CisrI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fTUQ0KSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0RFUykKKyAgICAgICAgICAgICBudGxtKGMsIG9wdCk7CisgI2Vsc2UKKyAgICAgICAgICAgICBzX2xvZyhMT0dfRVJSLCAiTlRMTSBhdXRoZW50aWNhdGlvbiBpcyBub3QgYXZhaWxhYmxlIik7CitAQCAtMTIxNiw3ICsxMjE2LDcgQEAgTk9FWFBPUlQgY2hhciAqY29ubmVjdF9jbGllbnQoQ0xJICpjLCBTRVJWSUNFX09QVElPTlMgKm9wdCwgY29uc3QgUEhBU0UgcGhhc2UpIHsKKyAgICAgcmV0dXJuIE5VTEw7CisgfQorIAorLSNpZm5kZWYgT1BFTlNTTF9OT19NRDQKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19NRDQpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fREVTKQorIAorIC8qCisgICogTlRMTSBjb2RlIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRhdGlvbjoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWxfNS4zNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWxfNS4zNS5iYgppbmRleCAzZTJlMmMyLi5lYzg0NzhkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3R1bm5lbC9zdHVubmVsXzUuMzUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0dW5uZWwvc3R1bm5lbF81LjM1LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJQcm9ncmFtIGZvciBwcm92aWRpbmcgdW5pdmVyc2FsIFRMUy9TU0wgdHVubmVsaW5nIHNlcnZpY2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnN0dW5uZWwub3JnLyIKIERFU0NSSVBUSU9OID0gIlNTTCBlbmNyeXB0aW9uIHdyYXBwZXIgYmV0d2VlbiByZW1vdGUgY2xpZW50IGFuZCBsb2NhbCAoaW5ldGQtc3RhcnRhYmxlKSBvciByZW1vdGUgc2VydmVyLiIKIFNFQ1RJT04gPSAibmV0IgogTElDRU5TRSA9ICJHUEx2MiIKQEAgLTcsNyArOCw5IEBACiAKIFJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgogCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5zdHVubmVsLm9yZy9zdHVubmVsL2FyY2hpdmUvNS54LyR7QlB9LnRhci5neiIKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLnN0dW5uZWwub3JnL3N0dW5uZWwvYXJjaGl2ZS81LngvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1vcGVuc3NsLW5vLWRlcy5wYXRjaCBcCisiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5MDc5ZjVmYWZiY2NhZjg4YjdkOTJiMjI3ZDc4MjQ5YSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZmEzODZhZTRjODI1ZjM1ZjM1MTU3YzI4NWU3NDAyYTZkNTg3NzlhZDhjMzgyMmY3NGE5ZDM1NWI1NGFiYTFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcC90Y3BkdW1wLWNvbmZpZ3VyZS1kbHBpLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcC90Y3BkdW1wLWNvbmZpZ3VyZS1kbHBpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGUyZDU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3BkdW1wL3RjcGR1bXAvdGNwZHVtcC1jb25maWd1cmUtZGxwaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVtQQVRDSF0gdGNwZHVtcDogY3Jvc3MtY29tcGlsaW5nIG5vdCBjaGVjayBkbHBpLgotCi1Gb3IgY3Jvc3MtY29tcGlsaW5nIG9uIExpbnV4IHBsYXRmb3Jtcywgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgbGliZGxwaSAKLXNpbmNlIGl0IGlzIG9ubHkgcGxhY2VkIG9uIFNvbGFyaXMuCi1BbHNvLCBjaGVja2luZyBsaWJkbHBpIGluIG5hdGl2ZSAvbGliIHdvdWxkIGNhdXNlIGRvX3FhX2NvbmZpZ3VyZSBmYWlsLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IFhpbiBPdXlhbmcgPFhpbi5PdXlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8ICAgIDQgKysrLQotIDEgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA3Zjk1OTFjLi5jYTI3N2MwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC03MTYsNyArNzE2LDkgQEAgZG9uJ3QuXSkKLSBmaQotIAotICMgbGliZGxwaSBpcyBuZWVkZWQgZm9yIFNvbGFyaXMgMTEgYW5kIGxhdGVyLgotLUFDX0NIRUNLX0xJQihkbHBpLCBkbHBpX3dhbGssIExJQlM9IiRMSUJTIC1sZGxwaSIgTERGTEFHUz0iLUwvbGliICRMREZMQUdTIiwgLC1ML2xpYikKLStpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSB5ZXM7IHRoZW4KLSsJQUNfQ0hFQ0tfTElCKGRscGksIGRscGlfd2FsaywgTElCUz0iJExJQlMgLWxkbHBpIiBMREZMQUdTPSItTC9saWIgJExERkxBR1MiLCAsLUwvbGliKQotK2ZpCi0gCi0gZG5sIHBvcnRhYmlsaXR5IG1hY3JvcyBmb3IgZ2V0YWRkcmluZm8vZ2V0bmFtZWluZm8KLSBkbmwKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwZHVtcC90Y3BkdW1wXzQuOS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcGR1bXAvdGNwZHVtcF80LjkuMi5iYgppbmRleCA4NWRiNjkzLi5kMzg1NDBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGNwZHVtcC90Y3BkdW1wXzQuOS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3BkdW1wL3RjcGR1bXBfNC45LjIuYmIKQEAgLTgsNyArOCw2IEBACiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cDovL3d3dy50Y3BkdW1wLm9yZy9yZWxlYXNlLyR7QlB9LnRhci5neiBcCiAgICAgZmlsZTovL3VubmVjZXNzYXJ5LXRvLWNoZWNrLWxpYnBjYXAucGF0Y2ggXAotICAgIGZpbGU6Ly90Y3BkdW1wLWNvbmZpZ3VyZS1kbHBpLnBhdGNoIFwKICAgICBmaWxlOi8vYWRkLXB0ZXN0LnBhdGNoIFwKICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3ByZXBsYXkvdGNwcmVwbGF5XzQuMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcHJlcGxheS90Y3ByZXBsYXlfNC4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZTlkNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcHJlcGxheS90Y3ByZXBsYXlfNC4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIlVzZSBwcmV2aW91c2x5IGNhcHR1cmVkIHRyYWZmaWMgdG8gdGVzdCBuZXR3b3JrIGRldmljZXMiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly90Y3ByZXBsYXkuc3luZmluLm5ldC8iCi1TRUNUSU9OID0gIm5ldCIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRTttZDU9ODkwYjgzMGIyMmZkNjMyZTlmZmQ5OTZkZjIwMzM4ZjgiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC90Y3ByZXBsYXkvJHtQVn0vdGNwcmVwbGF5LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMxMDViMTBiMDdkYmMwYjA3Y2UyZGEwN2EyMzY4MzU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhNDgzMzQ3ZTgzYTliNWRmMGUwZGJiMGY4MjJhMmQzNzIzNmU3OWRkYTM1ZjRiYzRlNjY4NGZhODI3ZjI1ZWEiCi0KLURFUEVORFMgPSAibGlicGNhcCIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbGlicGNhcD0ke1NUQUdJTkdfRElSX0hPU1R9L3VzciIKLQotaW5oZXJpdCBzaXRlaW5mbyBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3ByZXBsYXkvdGNwcmVwbGF5XzQuMi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3RjcHJlcGxheS90Y3ByZXBsYXlfNC4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgxZWYwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90Y3ByZXBsYXkvdGNwcmVwbGF5XzQuMi42LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiVXNlIHByZXZpb3VzbHkgY2FwdHVyZWQgdHJhZmZpYyB0byB0ZXN0IG5ldHdvcmsgZGV2aWNlcyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3RjcHJlcGxheS5zeW5maW4ubmV0LyIKK1NFQ1RJT04gPSAibmV0IgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9MSUNFTlNFO21kNT04OTBiODMwYjIyZmQ2MzJlOWZmZDk5NmRmMjAzMzhmOCIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXBwbmV0YS90Y3ByZXBsYXkvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L3RjcHJlcGxheS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZTY1ZDViODcyZTQ0MWM2YTAwMzgxOTFhM2RjN2NlOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNDM3NTZjNTMyZGFiOTNlMmJlMzNhNTE3ZWY0NmIxMzQxZjcyMzkyNzhhMTA0NWFlNjcwMDQxZGQ4YTQ1MzFkIgorCitERVBFTkRTID0gImxpYnBjYXAiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLWxpYnBjYXA9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IiCisKK2luaGVyaXQgc2l0ZWluZm8gYXV0b3Rvb2xzLWJyb2tlbnNlcAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18yLjIuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18yLjIuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM1OGJhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuMi4xMC5iYgpAQCAtMCwwICsxLDcxIEBACitERVNDUklQVElPTiA9ICJ3aXJlc2hhcmsgLSBhIHBvcHVsYXIgbmV0d29yayBwcm90b2NvbCBhbmFseXplciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cud2lyZXNoYXJrLm9yZyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmUyNzEyMzRiYTFhMTNjNmU1MTJlNzZiOTRhYzJmNzciCisKK0RFUEVORFMgPSAicGNyZSBleHBhdCBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly8yLm5hLmRsLndpcmVzaGFyay5vcmcvc3JjL2FsbC12ZXJzaW9ucy8ke0JQfS50YXIuYnoyIgorCitQRSA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWUzYTFhNDNhNmUzNjg3ZjQ0YTczOGZkMTVkNzgwMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODU3NGE1ZTFmZGVjN2FmZmFlNjQwOTI0YmQ0NmMxYWVkMWJkODY2ZTAyNjMyZmE1NjI1ZTE0NTBlNGE1MDcwNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUKKworQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCisKK1BBQ0tBR0VDT05GSUcgPz0gImxpYnBjYXAgZ251dGxzIGxpYm5sIGxpYmNhcCBzYmMiCitQQUNLQUdFQ09ORklHICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiZ3RrMiBncmFwaGljcyIsICIiLCBkKX0iCisjUEFDS0FHRUNPTkZJRyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAib3BlbmdsIiwgImd0azMiLCAiIiwgZCl9IgorCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcD0ke1NUQUdJTkdfTElCRElSfSwgLS13aXRoLWxpYmNhcD1ubyAtLWVuYWJsZS1wY2FwLW5nLWRlZmF1bHQgLCBsaWJjYXAiCitQQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi0td2l0aC1wY2FwPSR7U1RBR0lOR19MSUJESVJ9IC0td2l0aC1wY2FwLXJlbW90ZSwgLS13aXRoLXBjYXA9bm8gLS1lbmFibGUtcGNhcC1uZy1kZWZhdWx0ICAsIGxpYnBjYXAiCitQQUNLQUdFQ09ORklHW2xpYnNtaV0gPSAiLS13aXRoLWxpYnNtaT15ZXMsIC0td2l0aC1saWJzbWk9bm8sIGxpYnNtaSIKK1BBQ0tBR0VDT05GSUdbbGlibmxdID0gIi0td2l0aC1saWJubD15ZXMsIC0td2l0aC1saWJubD1ubywgbGlibmwiCitQQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLS13aXRoLXBvcnRhdWRpbz15ZXMsIC0td2l0aC1wb3J0YXVkaW89bm8sIHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW2d0azJdID0gIi0td2l0aC1ndGs9MiwgLCBndGsrIgorUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLXdpdGgtZ3RrPTMsICwgZ3RrKzMiCitQQUNLQUdFQ09ORklHW2dyYXBoaWNzXSA9ICItLWVuYWJsZS13aXJlc2hhcmssIC0td2l0aC1ndGs9bm8gLS1kaXNhYmxlLXdpcmVzaGFyaywiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscz15ZXMsIC0td2l0aC1nbnV0bHM9bm8sIGdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtZ2NyeXB0PXllcywgLS13aXRoLWdjcnlwdD1ubywgbGliZ2NyeXB0IgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2w9eWVzLCAtLXdpdGgtc3NsPW5vLCBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgta3JiNT15ZXMsIC0td2l0aC1rcmI1PW5vLCBrcmI1IgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWE9eWVzLCAtLXdpdGgtbHVhPW5vLCBsdWEiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPXllcywgLS13aXRoLXpsaWI9bm8sIHpsaWIiCitQQUNLQUdFQ09ORklHW2dlb2lwXSA9ICItLXdpdGgtZ2VvaXA9eWVzLCAtLXdpdGgtZ2VvaXA9bm8sIGdlb2lwIgorUEFDS0FHRUNPTkZJR1twbHVnaW5zXSA9ICItLXdpdGgtcGx1Z2lucz15ZXMsIC0td2l0aC1wbHVnaW5zPW5vIgorUEFDS0FHRUNPTkZJR1tzYmNdID0gIi0td2l0aC1zYmM9eWVzLCAtLXdpdGgtc2JjPW5vLCBzYmMiCisKK1BBQ0tBR0VDT05GSUdbbGlic3NoXSA9ICItLXdpdGgtc3NoPXllcywgLS13aXRoLXNzaD1ubywgbGlic3NoMiIKKworCisjIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKK1BBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItLXdpdGgtYy1hcmVzPXllcywgLS13aXRoLWMtYXJlcz1ubywgYy1hcmVzIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1xdD1ubyAtLWVuYWJsZS10c2hhcmsgLS1lbmFibGUtcmF3c2hhcmsiCisKKyMgQ3VycmVudGx5IHdpcmVzaGFyayBkb2VzIG5vdCBpbnN0YWxsIGhlYWRlciBmaWxlcworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCisJaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59CisJaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4KKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9jcnlwdAorCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2RmaWx0ZXIKKwlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9kaXNzZWN0b3JzCisJaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZnR5cGVzCisJaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vd21lbQorCisJaW5zdGFsbCBjb25maWcuaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59CisJaW5zdGFsbCAke1N9L3JlZ2lzdGVyLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfQorCWluc3RhbGwgLUQgJHtTfS9lcGFuLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4KKwlpbnN0YWxsIC1EICR7U30vZXBhbi9jcnlwdC8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2NyeXB0CisJaW5zdGFsbCAtRCAke1N9L2VwYW4vZGZpbHRlci8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2RmaWx0ZXIKKwlpbnN0YWxsIC1EICR7U30vZXBhbi9kaXNzZWN0b3JzLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGlzc2VjdG9ycworCWluc3RhbGwgLUQgJHtTfS9lcGFuL2Z0eXBlcy8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2Z0eXBlcworCWluc3RhbGwgLUQgJHtTfS9lcGFuL3dtZW0vKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi93bWVtCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9KiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuMi45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMi4yLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyYzI1ZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMi4yLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJ3aXJlc2hhcmsgLSBhIHBvcHVsYXIgbmV0d29yayBwcm90b2NvbCBhbmFseXplciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2lyZXNoYXJrLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmUyNzEyMzRiYTFhMTNjNmU1MTJlNzZiOTRhYzJmNzciCi0KLURFUEVORFMgPSAicGNyZSBleHBhdCBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly8yLm5hLmRsLndpcmVzaGFyay5vcmcvc3JjL2FsbC12ZXJzaW9ucy8ke0JQfS50YXIuYnoyIgotCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2Q1ZTY1ZWZkMDcxNGJkNjI0OGFhNWIzNmMyODMyMGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzhiMzJjMGU3ZDQ0YTI3N2U3MzdjNTNkOWQxNDJhZDNmZTQyNjUzMzhmMjVhN2ZkOGM4OTFmNThhNzYzM2ZjMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUKLQotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gImxpYnBjYXAgZ251dGxzIGxpYm5sIGxpYmNhcCBzYmMiCi1QQUNLQUdFQ09ORklHICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiZ3RrMiBncmFwaGljcyIsICIiLCBkKX0iCi0jUEFDS0FHRUNPTkZJRyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAib3BlbmdsIiwgImd0azMiLCAiIiwgZCl9IgotCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcD0ke1NUQUdJTkdfTElCRElSfSwgLS13aXRoLWxpYmNhcD1ubyAtLWVuYWJsZS1wY2FwLW5nLWRlZmF1bHQgLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi0td2l0aC1wY2FwPSR7U1RBR0lOR19MSUJESVJ9IC0td2l0aC1wY2FwLXJlbW90ZSwgLS13aXRoLXBjYXA9bm8gLS1lbmFibGUtcGNhcC1uZy1kZWZhdWx0ICAsIGxpYnBjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnNtaV0gPSAiLS13aXRoLWxpYnNtaT15ZXMsIC0td2l0aC1saWJzbWk9bm8sIGxpYnNtaSIKLVBBQ0tBR0VDT05GSUdbbGlibmxdID0gIi0td2l0aC1saWJubD15ZXMsIC0td2l0aC1saWJubD1ubywgbGlibmwiCi1QQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLS13aXRoLXBvcnRhdWRpbz15ZXMsIC0td2l0aC1wb3J0YXVkaW89bm8sIHBvcnRhdWRpby12MTkiCi1QQUNLQUdFQ09ORklHW2d0azJdID0gIi0td2l0aC1ndGs9MiwgLCBndGsrIgotUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLXdpdGgtZ3RrPTMsICwgZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2dyYXBoaWNzXSA9ICItLWVuYWJsZS13aXJlc2hhcmssIC0td2l0aC1ndGs9bm8gLS1kaXNhYmxlLXdpcmVzaGFyaywiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscz15ZXMsIC0td2l0aC1nbnV0bHM9bm8sIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtZ2NyeXB0PXllcywgLS13aXRoLWdjcnlwdD1ubywgbGliZ2NyeXB0IgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2w9eWVzLCAtLXdpdGgtc3NsPW5vLCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgta3JiNT15ZXMsIC0td2l0aC1rcmI1PW5vLCBrcmI1IgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWE9eWVzLCAtLXdpdGgtbHVhPW5vLCBsdWEiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPXllcywgLS13aXRoLXpsaWI9bm8sIHpsaWIiCi1QQUNLQUdFQ09ORklHW2dlb2lwXSA9ICItLXdpdGgtZ2VvaXA9eWVzLCAtLXdpdGgtZ2VvaXA9bm8sIGdlb2lwIgotUEFDS0FHRUNPTkZJR1twbHVnaW5zXSA9ICItLXdpdGgtcGx1Z2lucz15ZXMsIC0td2l0aC1wbHVnaW5zPW5vIgotUEFDS0FHRUNPTkZJR1tzYmNdID0gIi0td2l0aC1zYmM9eWVzLCAtLXdpdGgtc2JjPW5vLCBzYmMiCi0KLVBBQ0tBR0VDT05GSUdbbGlic3NoXSA9ICItLXdpdGgtc3NoPXllcywgLS13aXRoLXNzaD1ubywgbGlic3NoMiIKLQotCi0jIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKLVBBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItLXdpdGgtYy1hcmVzPXllcywgLS13aXRoLWMtYXJlcz1ubywgYy1hcmVzIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1xdD1ubyAtLWVuYWJsZS10c2hhcmsgLS1lbmFibGUtcmF3c2hhcmsiCi0KLSMgQ3VycmVudGx5IHdpcmVzaGFyayBkb2VzIG5vdCBpbnN0YWxsIGhlYWRlciBmaWxlcwotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCi0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59Ci0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4KLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9jcnlwdAotCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2RmaWx0ZXIKLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9kaXNzZWN0b3JzCi0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZnR5cGVzCi0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vd21lbQotCi0JaW5zdGFsbCBjb25maWcuaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59Ci0JaW5zdGFsbCAke1N9L3JlZ2lzdGVyLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfQotCWluc3RhbGwgLUQgJHtTfS9lcGFuLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4KLQlpbnN0YWxsIC1EICR7U30vZXBhbi9jcnlwdC8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2NyeXB0Ci0JaW5zdGFsbCAtRCAke1N9L2VwYW4vZGZpbHRlci8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2RmaWx0ZXIKLQlpbnN0YWxsIC1EICR7U30vZXBhbi9kaXNzZWN0b3JzLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGlzc2VjdG9ycwotCWluc3RhbGwgLUQgJHtTfS9lcGFuL2Z0eXBlcy8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2Z0eXBlcwotCWluc3RhbGwgLUQgJHtTfS9lcGFuL3dtZW0vKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi93bWVtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9KiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvUkVBRE1FCmluZGV4IGZkYzU2NDAuLmRhYmVkMmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL1JFQURNRQpAQCAtMSwxNSArMSwxNSBAQAogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29lLWNvcmUuZ2l0Ci1icmFuY2g6IHB5cm8KK2JyYW5jaDogcm9ja28KIHJldmlzaW9uOiBIRUFECiAKLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1vZV1bcHlyb10nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLW9lXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0JwogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2Ugc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtb2VdW3B5cm9dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW9lXVtyb2Nrb11bUEFUQ0gnCiAKIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBmb3JrIHRoZSBtaXJyb3Igb24gZ2l0aHViIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS8gdG8gc2hhcmUgeW91ciBwYXRjaGVzLCB0aGlzIGlzIHByZWZlcnJlZCBmb3IgcGF0Y2ggc2V0cyBjb25zaXN0aW5nIG9mIG1vcmUgdGhhbiBvbmUgcGF0Y2guIE90aGVyIHNlcnZpY2VzIGxpa2UgZ2l0b3Jpb3VzLCByZXBvLm9yLmN6IG9yIHNlbGYgaG9zdGVkIHNldHVwcyBhcmUgb2YgY291cnNlIGFjY2VwdGVkIGFzIHdlbGwsICdnaXQgZmV0Y2ggPHJlbW90ZT4nIHdvcmtzIHRoZSBzYW1lIG9uIGFsbCBvZiB0aGVtLiBXZSByZWNvbW1lbmQgZ2l0aHViIGJlY2F1c2UgaXQgaXMgZnJlZSwgZWFzeSB0byB1c2UsIGhhcyBiZWVuIHByb3ZlbiB0byBiZSByZWxpYWJsZSBhbmQgaGFzIGEgcmVhbGx5IGdvb2Qgd2ViIEdVSS4KIAotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKK3JvY2tvIEJyYW5jaCBNYWludGFpbmVyOgogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL2RvczJ1bml4LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY2xhc3Nlcy9kb3MydW5peC5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYWQ5OTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY2xhc3Nlcy9kb3MydW5peC5iYmNsYXNzCkBAIC0wLDAgKzEsMTQgQEAKKyMgQ2xhc3MgZm9yIHVzZSB0byBjb252ZXJ0IGFsbCBDUkxGIGxpbmUgdGVybWluYXRvcnMgdG8gTEYKKyMgcHJvdmlkZWQgdGhhdCBzb21lIHByb2plY3RzIGFyZSBiZWluZyBkZXZlbG9wZWQvbWFpbnRhaW5lZAorIyBvbiBXaW5kb3dzIHNvIHRoZXkgaGF2ZSBkaWZmZXJlbnQgbGluZSB0ZXJtaW5hdG9ycyhDUkxGKSB2cworIyBvbiBMaW51eChMRiksIHdoaWNoIGNhbiBjYXVzZSBhbm5veWluZyBwYXRjaGluZyBlcnJvcnMgZHVyaW5nCisjIGdpdCBwdXNoL2NoZWNrb3V0IHByb2Nlc3Nlcy4KKworZG9fY29udmVydF9jcmxmX3RvX2xmW2RlcGVuZHNdICs9ICJkb3MydW5peC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKworIyBDb252ZXJ0IENSTEYgbGluZSB0ZXJtaW5hdG9ycyB0byBMRgorZG9fY29udmVydF9jcmxmX3RvX2xmICgpIHsKKyAgICBmaW5kICR7U30gLXR5cGUgZiAtZXhlYyBkb3MydW5peCB7fSBcOworfQorCithZGR0YXNrIGNvbnZlcnRfY3JsZl90b19sZiBhZnRlciBkb191bnBhY2sgYmVmb3JlIGRvX3BhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvbWVzb24uYmJjbGFzcwppbmRleCBjMzMxNzRhLi5hMDliYzI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL21lc29uLmJiY2xhc3MKQEAgLTEwLDEwICsxMCwxNSBAQAogTUVTT05fU09VUkNFUEFUSCA9ICIke1N9IgogCiAjIFRoZXNlIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgb3ZlcnJpZGUgdGhlICpuYXRpdmUqIHRvb2xzLCBub3QgdGhlIGNyb3NzLgorZXhwb3J0IENQUEZMQUdTID0gIiR7QlVJTERfQ1BQRkxBR1N9IgogZXhwb3J0IENDID0gIiR7QlVJTERfQ0N9IgorZXhwb3J0IENGTEFHUyA9ICIke0JVSUxEX0NGTEFHU30iCiBleHBvcnQgQ1hYID0gIiR7QlVJTERfQ1hYfSIKK2V4cG9ydCBDWFhGTEFHUyA9ICIke0JVSUxEX0NYWEZMQUdTfSIKIGV4cG9ydCBMRCA9ICIke0JVSUxEX0xEfSIKK2V4cG9ydCBMREZMQUdTID0gIiR7QlVJTERfTERGTEFHU30iCiBleHBvcnQgQVIgPSAiJHtCVUlMRF9BUn0iCitleHBvcnQgUEtHX0NPTkZJRyA9ICJwa2ctY29uZmlnLW5hdGl2ZSIKIAogZGVmIG5vcHJlZml4KHZhciwgZCk6CiAgICAgcmV0dXJuIGQuZ2V0VmFyKHZhciwgVHJ1ZSkucmVwbGFjZShkLmdldFZhcigncHJlZml4JywgVHJ1ZSkgKyAnLycsICcnLCAxKQpAQCAtMjcsMTIgKzMyLDEyIEBACiAgICAgICAgICAgICAgIC0taW5jbHVkZWRpciAke0Bub3ByZWZpeCgnaW5jbHVkZWRpcicsIGQpfSBcCiAgICAgICAgICAgICAgIC0tbWFuZGlyICR7QG5vcHJlZml4KCdtYW5kaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLWluZm9kaXIgJHtAbm9wcmVmaXgoJ2luZm9kaXInLCBkKX0gXAotICAgICAgICAgICAgICAtLWxvY2FsZWRpciAke0Bub3ByZWZpeCgnbG9jYWxlZGlyJywgZCl9IFwKICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyICR7c3lzY29uZmRpcn0gXAogICAgICAgICAgICAgICAtLWxvY2Fsc3RhdGVkaXIgJHtsb2NhbHN0YXRlZGlyfSBcCiAgICAgICAgICAgICAgIC0tc2hhcmVkc3RhdGVkaXIgJHtzaGFyZWRzdGF0ZWRpcn0iCiAKLU1FU09OX0NfQVJHUyA9ICIke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIKK01FU09OX0NfQVJHUyA9ICIke1RBUkdFVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IgorTUVTT05fTElOS19BUkdTID0gIiR7TUVTT05fQ19BUkdTfSAke0xERkxBR1N9IgogCiBNRVNPTl9IT1NUX0VORElBTiA9ICIke0BiYi51dGlscy5jb250YWlucygnU0lURUlORk9fRU5ESUFOTkVTUycsICdiZScsICdiaWcnLCAnbGl0dGxlJywgZCl9IgogTUVTT05fVEFSR0VUX0VORElBTiA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnYmlnJywgJ2xpdHRsZScsIGQpfSIKQEAgLTYwLDEwICs2NSwxMSBAQAogcGtnY29uZmlnID0gJ3BrZy1jb25maWcnCiAKIFtwcm9wZXJ0aWVzXQorbmVlZHNfZXhlX3dyYXBwZXIgPSB0cnVlCiBjX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0NfQVJHUycsIGQpfV0KLWNwcF9hcmdzID0gWyR7QG1lc29uX2FycmF5KCdUT09MQ0hBSU5fT1BUSU9OUycsIGQpfV0KLWNfbGlua19hcmdzID0gWyR7QG1lc29uX2FycmF5KCdUT09MQ0hBSU5fT1BUSU9OUycsIGQpfV0KLWNwcF9saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ1RPT0xDSEFJTl9PUFRJT05TJywgZCl9XQorY19saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KK2NwcF9hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9DX0FSR1MnLCBkKX1dCitjcHBfbGlua19hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9MSU5LX0FSR1MnLCBkKX1dCiAKIFtob3N0X21hY2hpbmVdCiBzeXN0ZW0gPSAnJHtIT1NUX09TfScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2Rpc3Ryby9pbmNsdWRlL21ldGFfb2Vfc2VjdXJpdHlfZmxhZ3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWV0YV9vZV9zZWN1cml0eV9mbGFncy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzODY4YmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWV0YV9vZV9zZWN1cml0eV9mbGFncy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIEJ1aWxkIGVycm9ycyB3aXRoIHRoZSBwaWUgb3B0aW9ucyBlbmFibGVkCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliZGJ1cy1jKysgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJkZXZtYXBwZXIgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1sdm0yID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcnJkdG9vbCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotCi0jIFRoaXMgaGFzIHRleHQgcmVsb2MgZXJyb3JzIHdpdGggdGhlIHBpZSBvcHRpb25zIGVuYWJsZWQKLVNFQ1VSSVRZX0NGTEFHU19wbi1sbHZtMy4zID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbW96anMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1vcGVubGRhcCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXMzYzY0eHgtZ3BpbyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXMzYzI0eHgtZ3BpbyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWNwdWZyZXF1dGlscyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmNlYyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYm1vZHBsdWcgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJjZGlvID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi0KLSN8IC9tbnQvYi9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvaW50ZWwtY29yZWk3LTY0L3Vzci9saWIvbGliY19ub25zaGFyZWQuYShlbGYtaW5pdC5vUyk6IEluIGZ1bmN0aW9uIGBfX2xpYmNfY3N1X2luaXQnOgotI3wgL3Vzci9zcmMvZGVidWcvZ2xpYmMvMi4yNC1yMC9naXQvY3N1L2VsZi1pbml0LmM6ODY6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9faW5pdF9hcnJheV9zdGFydCcKLQotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYnZkcGF1ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi0KLSN8IC9tbnQvYS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWJleGVjL3g4Nl82NC1vZS1saW51eC9nY2MveDg2XzY0LW9lLWxpbnV4LzYuMi4wL2xkOiBsal9lcnJfZHluLm86IHJlbG9jYXRpb24gUl9YODZfNjRfVFBPRkYzMiBhZ2FpbnN0IGBzdGF0aWNfdWV4JyBjYW4gbm90IGJlIHVzZWQgd2hlbiBtYWtpbmcgYSBzaGFyZWQgb2JqZWN0OyByZWNvbXBpbGUgd2l0aCAtZlBJQwotI3wgL21udC9hL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMveDg2XzY0LW9lLWxpbnV4L2djYy94ODZfNjQtb2UtbGludXgvNi4yLjAvbGQ6IGZpbmFsIGxpbmsgZmFpbGVkOiBOb25yZXByZXNlbnRhYmxlIHNlY3Rpb24gb24gb3V0cHV0Ci0jfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLSN8IG1ha2VbMV06ICoqKiBbTWFrZWZpbGU6Njc1OiBsaWJsdWFqaXQuc29dIEVycm9yIDEKLVNFQ1VSSVRZX0NGTEFHU19wbi1sdWFqaXQgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKaW5kZXggNTQ0MjVjNi4uZDg0YmQwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mCkBAIC00MSw2ICs0MSw3IEBACiAiCiAKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCisgIGFuZHJvaWQtdG9vbHMtPmFuZHJvaWQtdG9vbHMtY29uZiBcCiAgIHVzYi1tb2Rlc3dpdGNoLWRhdGEtPnVzYi1tb2Rlc3dpdGNoIFwKICAgbG1zZW5zb3JzLT5sbXNlbnNvcnMtY29uZmlnIFwKICAgcGhvcm9uaXgtdGVzdC1zdWl0ZS0+YmFzaCBcCkBAIC03NCwxMCArNzUsMyBAQAogICBzb3VyY2UtaGFuLXNhbnMta3ItZm9udHMtPmZvbnRjb25maWcgXAogICBzb3VyY2UtaGFuLXNhbnMtdHctZm9udHMtPmZvbnRjb25maWcgXAogIgotCi1GUkVFU01BUlRQSE9ORV9HSVQgPSAiZ2l0Oi8vZ2l0LmZyZWVzbWFydHBob25lLm9yZyIKLQotIyBPdmVycmlkZSBzZWN1cml0eSBmbGFncwotcmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL21ldGFfb2Vfc2VjdXJpdHlfZmxhZ3MuaW5jCi0KLUhPU1RUT09MUyArPSAiaWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvRkxUSyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9GTFRLCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1NDIwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvRkxUSwpAQCAtMCwwICsxLDUzMCBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTFRLIExpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2VtYmVyIDExLCAyMDAxCisKK1RoZSBGTFRLIGxpYnJhcnkgYW5kIGluY2x1ZGVkIHByb2dyYW1zIGFyZSBwcm92aWRlZCB1bmRlciB0aGUgdGVybXMKK29mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChMR1BMKSB3aXRoIHRoZSBmb2xsb3dpbmcKK2V4Y2VwdGlvbnM6CisKKyAgICAxLiBNb2RpZmljYXRpb25zIHRvIHRoZSBGTFRLIGNvbmZpZ3VyZSBzY3JpcHQsIGNvbmZpZworICAgICAgIGhlYWRlciBmaWxlLCBhbmQgbWFrZWZpbGVzIGJ5IHRoZW1zZWx2ZXMgdG8gc3VwcG9ydAorICAgICAgIGEgc3BlY2lmaWMgcGxhdGZvcm0gZG8gbm90IGNvbnN0aXR1dGUgYSBtb2RpZmllZCBvcgorICAgICAgIGRlcml2YXRpdmUgd29yay4KKworICAgICAgVGhlIGF1dGhvcnMgZG8gcmVxdWVzdCB0aGF0IHN1Y2ggbW9kaWZpY2F0aW9ucyBiZQorICAgICAgY29udHJpYnV0ZWQgdG8gdGhlIEZMVEsgcHJvamVjdCAtIHNlbmQgYWxsIGNvbnRyaWJ1dGlvbnMKKyAgICAgIHRocm91Z2ggdGhlICJTb2Z0d2FyZSBUcm91YmxlIFJlcG9ydCIgb24gdGhlIGZvbGxvd2luZyBwYWdlOgorIAorICAgICAgICAgICBodHRwOi8vd3d3LmZsdGsub3JnL3N0ci5waHAKKworICAgIDIuIFdpZGdldHMgdGhhdCBhcmUgc3ViY2xhc3NlZCBmcm9tIEZMVEsgd2lkZ2V0cyBkbyBub3QKKyAgICAgICBjb25zdGl0dXRlIGEgZGVyaXZhdGl2ZSB3b3JrLgorCisgICAgMy4gU3RhdGljIGxpbmtpbmcgb2YgYXBwbGljYXRpb25zIGFuZCB3aWRnZXRzIHRvIHRoZQorICAgICAgIEZMVEsgbGlicmFyeSBkb2VzIG5vdCBjb25zdGl0dXRlIGEgZGVyaXZhdGl2ZSB3b3JrCisgICAgICAgYW5kIGRvZXMgbm90IHJlcXVpcmUgdGhlIGF1dGhvciB0byBwcm92aWRlIHNvdXJjZQorICAgICAgIGNvZGUgZm9yIHRoZSBhcHBsaWNhdGlvbiBvciB3aWRnZXQsIHVzZSB0aGUgc2hhcmVkCisgICAgICAgRkxUSyBsaWJyYXJpZXMsIG9yIGxpbmsgdGhlaXIgYXBwbGljYXRpb25zIG9yCisgICAgICAgd2lkZ2V0cyBhZ2FpbnN0IGEgdXNlci1zdXBwbGllZCB2ZXJzaW9uIG9mIEZMVEsuCisKKyAgICAgICBJZiB5b3UgbGluayB0aGUgYXBwbGljYXRpb24gb3Igd2lkZ2V0IHRvIGEgbW9kaWZpZWQKKyAgICAgICB2ZXJzaW9uIG9mIEZMVEssIHRoZW4gdGhlIGNoYW5nZXMgdG8gRkxUSyBtdXN0IGJlCisgICAgICAgcHJvdmlkZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBMR1BMIGluIHNlY3Rpb25zCisgICAgICAgMSwgMiwgYW5kIDQuCisKKyAgICA0LiBZb3UgZG8gbm90IGhhdmUgdG8gcHJvdmlkZSBhIGNvcHkgb2YgdGhlIEZMVEsgbGljZW5zZQorICAgICAgIHdpdGggcHJvZ3JhbXMgdGhhdCBhcmUgbGlua2VkIHRvIHRoZSBGTFRLIGxpYnJhcnksIG5vcgorICAgICAgIGRvIHlvdSBoYXZlIHRvIGlkZW50aWZ5IHRoZSBGTFRLIGxpY2Vuc2UgaW4geW91cgorICAgICAgIHByb2dyYW0gb3IgZG9jdW1lbnRhdGlvbiBhcyByZXF1aXJlZCBieSBzZWN0aW9uIDYKKyAgICAgICBvZiB0aGUgTEdQTC4KKworICAgICAgIEhvd2V2ZXIsIHByb2dyYW1zIG11c3Qgc3RpbGwgaWRlbnRpZnkgdGhlaXIgdXNlIG9mIEZMVEsuCisgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHN0YXRlbWVudCBjYW4gYmUgaW5jbHVkZWQgaW4gdXNlcgorICAgICAgIGRvY3VtZW50YXRpb24gdG8gc2F0aXNmeSB0aGlzIHJlcXVpcmVtZW50OgorCisgICAgICAgICAgIFtwcm9ncmFtL3dpZGdldF0gaXMgYmFzZWQgaW4gcGFydCBvbiB0aGUgd29yayBvZgorICAgICAgICAgICB0aGUgRkxUSyBwcm9qZWN0IChodHRwOi8vd3d3LmZsdGsub3JnKS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCQkgIEdOVSBMSUJSQVJZIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKwkJCSBWZXJzaW9uIDIsIEp1bmUgMTk5MQorCisJICBDb3B5cmlnaHQgKEMpIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorCisgICAgIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcworICAgICAgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKKyAgICBbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBHUEwuICBJdCBpcworICAgbnVtYmVyZWQgMiBiZWNhdXNlIGl0IGdvZXMgd2l0aCB2ZXJzaW9uIDIgb2YgdGhlIG9yZGluYXJ5IEdQTC5dCisKKwkJCSAgICAgICBQcmVhbWJsZQorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCitmcmVlIHNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuCisKKyAgVGhpcyBsaWNlbnNlLCB0aGUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIHNvbWUKK3NwZWNpYWxseSBkZXNpZ25hdGVkIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSwgYW5kIHRvIGFueQorb3RoZXIgbGlicmFyaWVzIHdob3NlIGF1dGhvcnMgZGVjaWRlIHRvIHVzZSBpdC4gIFlvdSBjYW4gdXNlIGl0IGZvcgoreW91ciBsaWJyYXJpZXMsIHRvby4KKworICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CitwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91CitoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCit0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKK2lmIHlvdSB3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0CitpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCisKKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBtYWtlIHJlc3RyaWN0aW9ucyB0aGF0IGZvcmJpZAorYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgorVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZgoreW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBsaWJyYXJ5LCBvciBpZiB5b3UgbW9kaWZ5IGl0LgorCisgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnksIHdoZXRoZXIgZ3JhdGlzCitvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdCB3ZSBnYXZlCit5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCitjb2RlLiAgSWYgeW91IGxpbmsgYSBwcm9ncmFtIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKK2NvbXBsZXRlIG9iamVjdCBmaWxlcyB0byB0aGUgcmVjaXBpZW50cyBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCit3aXRoIHRoZSBsaWJyYXJ5LCBhZnRlciBtYWtpbmcgY2hhbmdlcyB0byB0aGUgbGlicmFyeSBhbmQgcmVjb21waWxpbmcKK2l0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgorCisgIE91ciBtZXRob2Qgb2YgcHJvdGVjdGluZyB5b3VyIHJpZ2h0cyBoYXMgdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0Cit0aGUgbGlicmFyeSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbAorcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIGxpYnJhcnkuCisKKyAgQWxzbywgZm9yIGVhY2ggZGlzdHJpYnV0b3IncyBwcm90ZWN0aW9uLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgordGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUKK2xpYnJhcnkuICBJZiB0aGUgbGlicmFyeSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKK3dhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwKK3ZlcnNpb24sIHNvIHRoYXQgYW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgb3RoZXJzIHdpbGwgbm90IHJlZmxlY3Qgb24KK3RoZSBvcmlnaW5hbCBhdXRob3JzJyByZXB1dGF0aW9ucy4KKwwKKyAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKK3BhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCBjb21wYW5pZXMgZGlzdHJpYnV0aW5nIGZyZWUKK3NvZnR3YXJlIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIHRodXMgaW4gZWZmZWN0Cit0cmFuc2Zvcm1pbmcgdGhlIHByb2dyYW0gaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZS4gIFRvIHByZXZlbnQgdGhpcywKK3dlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueSBwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncworZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KKworICBNb3N0IEdOVSBzb2Z0d2FyZSwgaW5jbHVkaW5nIHNvbWUgbGlicmFyaWVzLCBpcyBjb3ZlcmVkIGJ5IHRoZSBvcmRpbmFyeQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdoaWNoIHdhcyBkZXNpZ25lZCBmb3IgdXRpbGl0eSBwcm9ncmFtcy4gIFRoaXMKK2xpY2Vuc2UsIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4KK2Rlc2lnbmF0ZWQgbGlicmFyaWVzLiAgVGhpcyBsaWNlbnNlIGlzIHF1aXRlIGRpZmZlcmVudCBmcm9tIHRoZSBvcmRpbmFyeQorb25lOyBiZSBzdXJlIHRvIHJlYWQgaXQgaW4gZnVsbCwgYW5kIGRvbid0IGFzc3VtZSB0aGF0IGFueXRoaW5nIGluIGl0IGlzCit0aGUgc2FtZSBhcyBpbiB0aGUgb3JkaW5hcnkgbGljZW5zZS4KKworICBUaGUgcmVhc29uIHdlIGhhdmUgYSBzZXBhcmF0ZSBwdWJsaWMgbGljZW5zZSBmb3Igc29tZSBsaWJyYXJpZXMgaXMgdGhhdAordGhleSBibHVyIHRoZSBkaXN0aW5jdGlvbiB3ZSB1c3VhbGx5IG1ha2UgYmV0d2VlbiBtb2RpZnlpbmcgb3IgYWRkaW5nIHRvIGEKK3Byb2dyYW0gYW5kIHNpbXBseSB1c2luZyBpdC4gIExpbmtpbmcgYSBwcm9ncmFtIHdpdGggYSBsaWJyYXJ5LCB3aXRob3V0CitjaGFuZ2luZyB0aGUgbGlicmFyeSwgaXMgaW4gc29tZSBzZW5zZSBzaW1wbHkgdXNpbmcgdGhlIGxpYnJhcnksIGFuZCBpcworYW5hbG9nb3VzIHRvIHJ1bm5pbmcgYSB1dGlsaXR5IHByb2dyYW0gb3IgYXBwbGljYXRpb24gcHJvZ3JhbS4gIEhvd2V2ZXIsIGluCithIHRleHR1YWwgYW5kIGxlZ2FsIHNlbnNlLCB0aGUgbGlua2VkIGV4ZWN1dGFibGUgaXMgYSBjb21iaW5lZCB3b3JrLCBhCitkZXJpdmF0aXZlIG9mIHRoZSBvcmlnaW5hbCBsaWJyYXJ5LCBhbmQgdGhlIG9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK3RyZWF0cyBpdCBhcyBzdWNoLgorCisgIEJlY2F1c2Ugb2YgdGhpcyBibHVycmVkIGRpc3RpbmN0aW9uLCB1c2luZyB0aGUgb3JkaW5hcnkgR2VuZXJhbAorUHVibGljIExpY2Vuc2UgZm9yIGxpYnJhcmllcyBkaWQgbm90IGVmZmVjdGl2ZWx5IHByb21vdGUgc29mdHdhcmUKK3NoYXJpbmcsIGJlY2F1c2UgbW9zdCBkZXZlbG9wZXJzIGRpZCBub3QgdXNlIHRoZSBsaWJyYXJpZXMuICBXZQorY29uY2x1ZGVkIHRoYXQgd2Vha2VyIGNvbmRpdGlvbnMgbWlnaHQgcHJvbW90ZSBzaGFyaW5nIGJldHRlci4KKworICBIb3dldmVyLCB1bnJlc3RyaWN0ZWQgbGlua2luZyBvZiBub24tZnJlZSBwcm9ncmFtcyB3b3VsZCBkZXByaXZlIHRoZQordXNlcnMgb2YgdGhvc2UgcHJvZ3JhbXMgb2YgYWxsIGJlbmVmaXQgZnJvbSB0aGUgZnJlZSBzdGF0dXMgb2YgdGhlCitsaWJyYXJpZXMgdGhlbXNlbHZlcy4gIFRoaXMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvCitwZXJtaXQgZGV2ZWxvcGVycyBvZiBub24tZnJlZSBwcm9ncmFtcyB0byB1c2UgZnJlZSBsaWJyYXJpZXMsIHdoaWxlCitwcmVzZXJ2aW5nIHlvdXIgZnJlZWRvbSBhcyBhIHVzZXIgb2Ygc3VjaCBwcm9ncmFtcyB0byBjaGFuZ2UgdGhlIGZyZWUKK2xpYnJhcmllcyB0aGF0IGFyZSBpbmNvcnBvcmF0ZWQgaW4gdGhlbS4gIChXZSBoYXZlIG5vdCBzZWVuIGhvdyB0byBhY2hpZXZlCit0aGlzIGFzIHJlZ2FyZHMgY2hhbmdlcyBpbiBoZWFkZXIgZmlsZXMsIGJ1dCB3ZSBoYXZlIGFjaGlldmVkIGl0IGFzIHJlZ2FyZHMKK2NoYW5nZXMgaW4gdGhlIGFjdHVhbCBmdW5jdGlvbnMgb2YgdGhlIExpYnJhcnkuKSAgVGhlIGhvcGUgaXMgdGhhdCB0aGlzCit3aWxsIGxlYWQgdG8gZmFzdGVyIGRldmVsb3BtZW50IG9mIGZyZWUgbGlicmFyaWVzLgorCisgIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCittb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEKKyJ3b3JrIGJhc2VkIG9uIHRoZSBsaWJyYXJ5IiBhbmQgYSAid29yayB0aGF0IHVzZXMgdGhlIGxpYnJhcnkiLiAgVGhlCitmb3JtZXIgY29udGFpbnMgY29kZSBkZXJpdmVkIGZyb20gdGhlIGxpYnJhcnksIHdoaWxlIHRoZSBsYXR0ZXIgb25seQord29ya3MgdG9nZXRoZXIgd2l0aCB0aGUgbGlicmFyeS4KKworICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgZm9yIGEgbGlicmFyeSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBvcmRpbmFyeQorR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByYXRoZXIgdGhhbiBieSB0aGlzIHNwZWNpYWwgb25lLgorDAorCQkgIEdOVSBMSUJSQVJZIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgorCisgIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSB3aGljaAorY29udGFpbnMgYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9yIG90aGVyIGF1dGhvcml6ZWQKK3BhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGlicmFyeQorR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoYWxzbyBjYWxsZWQgInRoaXMgTGljZW5zZSIpLiAgRWFjaCBsaWNlbnNlZSBpcworYWRkcmVzc2VkIGFzICJ5b3UiLgorCisgIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKK3ByZXBhcmVkIHNvIGFzIHRvIGJlIGNvbnZlbmllbnRseSBsaW5rZWQgd2l0aCBhcHBsaWNhdGlvbiBwcm9ncmFtcworKHdoaWNoIHVzZSBzb21lIG9mIHRob3NlIGZ1bmN0aW9ucyBhbmQgZGF0YSkgdG8gZm9ybSBleGVjdXRhYmxlcy4KKworICBUaGUgIkxpYnJhcnkiLCBiZWxvdywgcmVmZXJzIHRvIGFueSBzdWNoIHNvZnR3YXJlIGxpYnJhcnkgb3Igd29yaword2hpY2ggaGFzIGJlZW4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlc2UgdGVybXMuICBBICJ3b3JrIGJhc2VkIG9uIHRoZQorTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKK2NvcHlyaWdodCBsYXc6IHRoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgTGlicmFyeSBvciBhCitwb3J0aW9uIG9mIGl0LCBlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkCitzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCitpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4gdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKQorCisgICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCittYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhIGxpYnJhcnksIGNvbXBsZXRlIHNvdXJjZSBjb2RlIG1lYW5zCithbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkgYXNzb2NpYXRlZAoraW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCithbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBsaWJyYXJ5LgorCisgIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90Citjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mCitydW5uaW5nIGEgcHJvZ3JhbSB1c2luZyB0aGUgTGlicmFyeSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIG91dHB1dCBmcm9tCitzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCitvbiB0aGUgTGlicmFyeSAoaW5kZXBlbmRlbnQgb2YgdGhlIHVzZSBvZiB0aGUgTGlicmFyeSBpbiBhIHRvb2wgZm9yCit3cml0aW5nIGl0KS4gIFdoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgTGlicmFyeSBkb2VzCithbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KKworICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBMaWJyYXJ5J3MKK2NvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0Cit5b3UgY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbgorYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QKK2FsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55Cit3YXJyYW50eTsgYW5kIGRpc3RyaWJ1dGUgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZQorTGlicmFyeS4KKworICBZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LAorYW5kIHlvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYQorZmVlLgorDAorICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBMaWJyYXJ5IG9yIGFueSBwb3J0aW9uCitvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGNvcHkgYW5kCitkaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDEKK2Fib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CisKKyAgICBhKSBUaGUgbW9kaWZpZWQgd29yayBtdXN0IGl0c2VsZiBiZSBhIHNvZnR3YXJlIGxpYnJhcnkuCisKKyAgICBiKSBZb3UgbXVzdCBjYXVzZSB0aGUgZmlsZXMgbW9kaWZpZWQgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKKyAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgorCisgICAgYykgWW91IG11c3QgY2F1c2UgdGhlIHdob2xlIG9mIHRoZSB3b3JrIHRvIGJlIGxpY2Vuc2VkIGF0IG5vCisgICAgY2hhcmdlIHRvIGFsbCB0aGlyZCBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCisKKyAgICBkKSBJZiBhIGZhY2lsaXR5IGluIHRoZSBtb2RpZmllZCBMaWJyYXJ5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGEKKyAgICB0YWJsZSBvZiBkYXRhIHRvIGJlIHN1cHBsaWVkIGJ5IGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gdGhhdCB1c2VzCisgICAgdGhlIGZhY2lsaXR5LCBvdGhlciB0aGFuIGFzIGFuIGFyZ3VtZW50IHBhc3NlZCB3aGVuIHRoZSBmYWNpbGl0eQorICAgIGlzIGludm9rZWQsIHRoZW4geW91IG11c3QgbWFrZSBhIGdvb2QgZmFpdGggZWZmb3J0IHRvIGVuc3VyZSB0aGF0LAorICAgIGluIHRoZSBldmVudCBhbiBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgc3VjaCBmdW5jdGlvbiBvcgorICAgIHRhYmxlLCB0aGUgZmFjaWxpdHkgc3RpbGwgb3BlcmF0ZXMsIGFuZCBwZXJmb3JtcyB3aGF0ZXZlciBwYXJ0IG9mCisgICAgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLgorCisgICAgKEZvciBleGFtcGxlLCBhIGZ1bmN0aW9uIGluIGEgbGlicmFyeSB0byBjb21wdXRlIHNxdWFyZSByb290cyBoYXMKKyAgICBhIHB1cnBvc2UgdGhhdCBpcyBlbnRpcmVseSB3ZWxsLWRlZmluZWQgaW5kZXBlbmRlbnQgb2YgdGhlCisgICAgYXBwbGljYXRpb24uICBUaGVyZWZvcmUsIFN1YnNlY3Rpb24gMmQgcmVxdWlyZXMgdGhhdCBhbnkKKyAgICBhcHBsaWNhdGlvbi1zdXBwbGllZCBmdW5jdGlvbiBvciB0YWJsZSB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gbXVzdAorICAgIGJlIG9wdGlvbmFsOiBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IGl0LCB0aGUgc3F1YXJlCisgICAgcm9vdCBmdW5jdGlvbiBtdXN0IHN0aWxsIGNvbXB1dGUgc3F1YXJlIHJvb3RzLikKKworVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgoraWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgTGlicmFyeSwKK2FuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgordGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQorc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CitkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKK29uIHRoZSBMaWJyYXJ5LCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgordGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKK2VudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZQoraXQuCisKK1RodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdAoreW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCitleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKK2NvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIExpYnJhcnkuCisKK0luIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIExpYnJhcnkKK3dpdGggdGhlIExpYnJhcnkgKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5KSBvbiBhIHZvbHVtZSBvZgorYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKK3RoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCisKKyAgMy4gWW91IG1heSBvcHQgdG8gYXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UgdG8gYSBnaXZlbiBjb3B5IG9mIHRoZSBMaWJyYXJ5LiAgVG8gZG8KK3RoaXMsIHlvdSBtdXN0IGFsdGVyIGFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSwgc28KK3RoYXQgdGhleSByZWZlciB0byB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwKK2luc3RlYWQgb2YgdG8gdGhpcyBMaWNlbnNlLiAgKElmIGEgbmV3ZXIgdmVyc2lvbiB0aGFuIHZlcnNpb24gMiBvZiB0aGUKK29yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGhhcyBhcHBlYXJlZCwgdGhlbiB5b3UgY2FuIHNwZWNpZnkKK3RoYXQgdmVyc2lvbiBpbnN0ZWFkIGlmIHlvdSB3aXNoLikgIERvIG5vdCBtYWtlIGFueSBvdGhlciBjaGFuZ2UgaW4KK3RoZXNlIG5vdGljZXMuCisMCisgIE9uY2UgdGhpcyBjaGFuZ2UgaXMgbWFkZSBpbiBhIGdpdmVuIGNvcHksIGl0IGlzIGlycmV2ZXJzaWJsZSBmb3IKK3RoYXQgY29weSwgc28gdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gYWxsCitzdWJzZXF1ZW50IGNvcGllcyBhbmQgZGVyaXZhdGl2ZSB3b3JrcyBtYWRlIGZyb20gdGhhdCBjb3B5LgorCisgIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCB3aGVuIHlvdSB3aXNoIHRvIGNvcHkgcGFydCBvZiB0aGUgY29kZSBvZgordGhlIExpYnJhcnkgaW50byBhIHByb2dyYW0gdGhhdCBpcyBub3QgYSBsaWJyYXJ5LgorCisgIDQuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSAob3IgYSBwb3J0aW9uIG9yCitkZXJpdmF0aXZlIG9mIGl0LCB1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybQordW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWNjb21wYW55CitpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUgc291cmNlIGNvZGUsIHdoaWNoCittdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEKK21lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KKworICBJZiBkaXN0cmlidXRpb24gb2Ygb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZyBhY2Nlc3MgdG8gY29weQorZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUKK3NvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2Ugc2F0aXNmaWVzIHRoZSByZXF1aXJlbWVudCB0bworZGlzdHJpYnV0ZSB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdAorY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KKworICA1LiBBIHByb2dyYW0gdGhhdCBjb250YWlucyBubyBkZXJpdmF0aXZlIG9mIGFueSBwb3J0aW9uIG9mIHRoZQorTGlicmFyeSwgYnV0IGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgTGlicmFyeSBieSBiZWluZyBjb21waWxlZCBvcgorbGlua2VkIHdpdGggaXQsIGlzIGNhbGxlZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIuICBTdWNoIGEKK3dvcmssIGluIGlzb2xhdGlvbiwgaXMgbm90IGEgZGVyaXZhdGl2ZSB3b3JrIG9mIHRoZSBMaWJyYXJ5LCBhbmQKK3RoZXJlZm9yZSBmYWxscyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCisKKyAgSG93ZXZlciwgbGlua2luZyBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeQorY3JlYXRlcyBhbiBleGVjdXRhYmxlIHRoYXQgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5IChiZWNhdXNlIGl0Citjb250YWlucyBwb3J0aW9ucyBvZiB0aGUgTGlicmFyeSksIHJhdGhlciB0aGFuIGEgIndvcmsgdGhhdCB1c2VzIHRoZQorbGlicmFyeSIuICBUaGUgZXhlY3V0YWJsZSBpcyB0aGVyZWZvcmUgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UuCitTZWN0aW9uIDYgc3RhdGVzIHRlcm1zIGZvciBkaXN0cmlidXRpb24gb2Ygc3VjaCBleGVjdXRhYmxlcy4KKworICBXaGVuIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IiB1c2VzIG1hdGVyaWFsIGZyb20gYSBoZWFkZXIgZmlsZQordGhhdCBpcyBwYXJ0IG9mIHRoZSBMaWJyYXJ5LCB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIG1heSBiZSBhCitkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnkgZXZlbiB0aG91Z2ggdGhlIHNvdXJjZSBjb2RlIGlzIG5vdC4KK1doZXRoZXIgdGhpcyBpcyB0cnVlIGlzIGVzcGVjaWFsbHkgc2lnbmlmaWNhbnQgaWYgdGhlIHdvcmsgY2FuIGJlCitsaW5rZWQgd2l0aG91dCB0aGUgTGlicmFyeSwgb3IgaWYgdGhlIHdvcmsgaXMgaXRzZWxmIGEgbGlicmFyeS4gIFRoZQordGhyZXNob2xkIGZvciB0aGlzIHRvIGJlIHRydWUgaXMgbm90IHByZWNpc2VseSBkZWZpbmVkIGJ5IGxhdy4KKworICBJZiBzdWNoIGFuIG9iamVjdCBmaWxlIHVzZXMgb25seSBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YQorc3RydWN0dXJlIGxheW91dHMgYW5kIGFjY2Vzc29ycywgYW5kIHNtYWxsIG1hY3JvcyBhbmQgc21hbGwgaW5saW5lCitmdW5jdGlvbnMgKHRlbiBsaW5lcyBvciBsZXNzIGluIGxlbmd0aCksIHRoZW4gdGhlIHVzZSBvZiB0aGUgb2JqZWN0CitmaWxlIGlzIHVucmVzdHJpY3RlZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIGxlZ2FsbHkgYSBkZXJpdmF0aXZlCit3b3JrLiAgKEV4ZWN1dGFibGVzIGNvbnRhaW5pbmcgdGhpcyBvYmplY3QgY29kZSBwbHVzIHBvcnRpb25zIG9mIHRoZQorTGlicmFyeSB3aWxsIHN0aWxsIGZhbGwgdW5kZXIgU2VjdGlvbiA2LikKKworICBPdGhlcndpc2UsIGlmIHRoZSB3b3JrIGlzIGEgZGVyaXZhdGl2ZSBvZiB0aGUgTGlicmFyeSwgeW91IG1heQorZGlzdHJpYnV0ZSB0aGUgb2JqZWN0IGNvZGUgZm9yIHRoZSB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDYuCitBbnkgZXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGF0IHdvcmsgYWxzbyBmYWxsIHVuZGVyIFNlY3Rpb24gNiwKK3doZXRoZXIgb3Igbm90IHRoZXkgYXJlIGxpbmtlZCBkaXJlY3RseSB3aXRoIHRoZSBMaWJyYXJ5IGl0c2VsZi4KKwwKKyAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbXBpbGUgb3IKK2xpbmsgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkgdG8gcHJvZHVjZSBhCit3b3JrIGNvbnRhaW5pbmcgcG9ydGlvbnMgb2YgdGhlIExpYnJhcnksIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawordW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAorbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGZvciB0aGUgY3VzdG9tZXIncyBvd24gdXNlIGFuZCByZXZlcnNlCitlbmdpbmVlcmluZyBmb3IgZGVidWdnaW5nIHN1Y2ggbW9kaWZpY2F0aW9ucy4KKworICBZb3UgbXVzdCBnaXZlIHByb21pbmVudCBub3RpY2Ugd2l0aCBlYWNoIGNvcHkgb2YgdGhlIHdvcmsgdGhhdCB0aGUKK0xpYnJhcnkgaXMgdXNlZCBpbiBpdCBhbmQgdGhhdCB0aGUgTGlicmFyeSBhbmQgaXRzIHVzZSBhcmUgY292ZXJlZCBieQordGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yaworZHVyaW5nIGV4ZWN1dGlvbiBkaXNwbGF5cyBjb3B5cmlnaHQgbm90aWNlcywgeW91IG11c3QgaW5jbHVkZSB0aGUKK2NvcHlyaWdodCBub3RpY2UgZm9yIHRoZSBMaWJyYXJ5IGFtb25nIHRoZW0sIGFzIHdlbGwgYXMgYSByZWZlcmVuY2UKK2RpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKK29mIHRoZXNlIHRoaW5nczoKKworICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCisgICAgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSBmb3IgdGhlIExpYnJhcnkgaW5jbHVkaW5nIHdoYXRldmVyCisgICAgY2hhbmdlcyB3ZXJlIHVzZWQgaW4gdGhlIHdvcmsgKHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIKKyAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAorICAgIHdpdGggdGhlIExpYnJhcnksIHdpdGggdGhlIGNvbXBsZXRlIG1hY2hpbmUtcmVhZGFibGUgIndvcmsgdGhhdAorICAgIHVzZXMgdGhlIExpYnJhcnkiLCBhcyBvYmplY3QgY29kZSBhbmQvb3Igc291cmNlIGNvZGUsIHNvIHRoYXQgdGhlCisgICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKKyAgICBleGVjdXRhYmxlIGNvbnRhaW5pbmcgdGhlIG1vZGlmaWVkIExpYnJhcnkuICAoSXQgaXMgdW5kZXJzdG9vZAorICAgIHRoYXQgdGhlIHVzZXIgd2hvIGNoYW5nZXMgdGhlIGNvbnRlbnRzIG9mIGRlZmluaXRpb25zIGZpbGVzIGluIHRoZQorICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCisgICAgdG8gdXNlIHRoZSBtb2RpZmllZCBkZWZpbml0aW9ucy4pCisKKyAgICBiKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAorICAgIGxlYXN0IHRocmVlIHllYXJzLCB0byBnaXZlIHRoZSBzYW1lIHVzZXIgdGhlIG1hdGVyaWFscworICAgIHNwZWNpZmllZCBpbiBTdWJzZWN0aW9uIDZhLCBhYm92ZSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUKKyAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCisKKyAgICBjKSBJZiBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgaXMgbWFkZSBieSBvZmZlcmluZyBhY2Nlc3MgdG8gY29weQorICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQorICAgIHNwZWNpZmllZCBtYXRlcmlhbHMgZnJvbSB0aGUgc2FtZSBwbGFjZS4KKworICAgIGQpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQorICAgIG1hdGVyaWFscyBvciB0aGF0IHlvdSBoYXZlIGFscmVhZHkgc2VudCB0aGlzIHVzZXIgYSBjb3B5LgorCisgIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQorTGlicmFyeSIgbXVzdCBpbmNsdWRlIGFueSBkYXRhIGFuZCB1dGlsaXR5IHByb2dyYW1zIG5lZWRlZCBmb3IKK3JlcHJvZHVjaW5nIHRoZSBleGVjdXRhYmxlIGZyb20gaXQuICBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uLAordGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUgYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseQorZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCitjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9uCit3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQgaXRzZWxmIGFjY29tcGFuaWVzCit0aGUgZXhlY3V0YWJsZS4KKworICBJdCBtYXkgaGFwcGVuIHRoYXQgdGhpcyByZXF1aXJlbWVudCBjb250cmFkaWN0cyB0aGUgbGljZW5zZQorcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQorYWNjb21wYW55IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgU3VjaCBhIGNvbnRyYWRpY3Rpb24gbWVhbnMgeW91IGNhbm5vdAordXNlIGJvdGggdGhlbSBhbmQgdGhlIExpYnJhcnkgdG9nZXRoZXIgaW4gYW4gZXhlY3V0YWJsZSB0aGF0IHlvdQorZGlzdHJpYnV0ZS4KKwwKKyAgNy4gWW91IG1heSBwbGFjZSBsaWJyYXJ5IGZhY2lsaXRpZXMgdGhhdCBhcmUgYSB3b3JrIGJhc2VkIG9uIHRoZQorTGlicmFyeSBzaWRlLWJ5LXNpZGUgaW4gYSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKK2ZhY2lsaXRpZXMgbm90IGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSBzdWNoIGEgY29tYmluZWQKK2xpYnJhcnksIHByb3ZpZGVkIHRoYXQgdGhlIHNlcGFyYXRlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd29yayBiYXNlZCBvbgordGhlIExpYnJhcnkgYW5kIG9mIHRoZSBvdGhlciBsaWJyYXJ5IGZhY2lsaXRpZXMgaXMgb3RoZXJ3aXNlCitwZXJtaXR0ZWQsIGFuZCBwcm92aWRlZCB0aGF0IHlvdSBkbyB0aGVzZSB0d28gdGhpbmdzOgorCisgICAgYSkgQWNjb21wYW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsKKyAgICBiYXNlZCBvbiB0aGUgTGlicmFyeSwgdW5jb21iaW5lZCB3aXRoIGFueSBvdGhlciBsaWJyYXJ5CisgICAgZmFjaWxpdGllcy4gIFRoaXMgbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgICAgU2VjdGlvbnMgYWJvdmUuCisKKyAgICBiKSBHaXZlIHByb21pbmVudCBub3RpY2Ugd2l0aCB0aGUgY29tYmluZWQgbGlicmFyeSBvZiB0aGUgZmFjdAorICAgIHRoYXQgcGFydCBvZiBpdCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nCisgICAgd2hlcmUgdG8gZmluZCB0aGUgYWNjb21wYW55aW5nIHVuY29tYmluZWQgZm9ybSBvZiB0aGUgc2FtZSB3b3JrLgorCisgIDguIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvciBkaXN0cmlidXRlCit0aGUgTGlicmFyeSBleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueQorYXR0ZW1wdCBvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yCitkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIKK3JpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuICBIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywKK29yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIgdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMKK3Rlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KKworICA5LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKK3NpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCitkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKK3Byb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKK21vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorTGlicmFyeSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKK2FsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKK3RoZSBMaWJyYXJ5IG9yIHdvcmtzIGJhc2VkIG9uIGl0LgorCisgIDEwLiBFYWNoIHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCitMaWJyYXJ5KSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQorb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSwgbGluayB3aXRoIG9yIG1vZGlmeSB0aGUgTGlicmFyeQorc3ViamVjdCB0byB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgorcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgorWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KK3RoaXMgTGljZW5zZS4KKwwKKyAgMTEuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBwYXRlbnQKK2luZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCitjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCitvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CitleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdAorZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcworTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdQorbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudAorbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgTGlicmFyeSBieQorYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCit0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCityZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5LgorCitJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55CitwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gYXBwbHksCithbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlciBjaXJjdW1zdGFuY2VzLgorCitJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55CitwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQorc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQoraW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0gd2hpY2ggaXMKK2ltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNlbnNlIHByYWN0aWNlcy4gIE1hbnkgcGVvcGxlIGhhdmUgbWFkZQorZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAordGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKK3N5c3RlbTsgaXQgaXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcKK3RvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAoraW1wb3NlIHRoYXQgY2hvaWNlLgorCitUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KK2JlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgorCisgIDEyLiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIExpYnJhcnkgaXMgcmVzdHJpY3RlZCBpbgorY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCitvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIExpYnJhcnkgdW5kZXIgdGhpcyBMaWNlbnNlIG1heSBhZGQKK2FuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLAorc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcgY291bnRyaWVzIG5vdCB0aHVzCitleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcyB0aGUgbGltaXRhdGlvbiBhcyBpZgord3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCisKKyAgMTMuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3Cit2ZXJzaW9ucyBvZiB0aGUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLgorU3VjaCBuZXcgdmVyc2lvbnMgd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLAorYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgorCitFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBMaWJyYXJ5CitzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQKKyJhbnkgbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQKK2NvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGEKK2xpY2Vuc2UgdmVyc2lvbiBudW1iZXIsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorDAorICAxNC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIExpYnJhcnkgaW50byBvdGhlciBmcmVlCitwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgaW5jb21wYXRpYmxlIHdpdGggdGhlc2UsCit3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcworY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcyBtYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIKK2RlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKK29mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQgb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nCithbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgorCisJCQkgICAgTk8gV0FSUkFOVFkKKworICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KK1dBUlJBTlRZIEZPUiBUSEUgTElCUkFSWSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuCitFWENFUFQgV0hFTiBPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUgorT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKK0tJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCitQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKK0xJQlJBUlkgSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIExJQlJBUlkgUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FCitUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywgUkVQQUlSIE9SIENPUlJFQ1RJT04uCisKKyAgMTYuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4KK1dSSVRJTkcgV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZCitBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQorRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUKK0xJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKK1JFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBCitGQUlMVVJFIE9GIFRIRSBMSUJSQVJZIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIgU09GVFdBUkUpLCBFVkVOIElGCitTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICitEQU1BR0VTLgorCisJCSAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisMCisgICAgIEFwcGVuZGl4OiBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgTGlicmFyaWVzCisKKyAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdAorcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHdlIHJlY29tbWVuZCBtYWtpbmcgaXQgZnJlZSBzb2Z0d2FyZSB0aGF0CitldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UuICBZb3UgY2FuIGRvIHNvIGJ5IHBlcm1pdHRpbmcKK3JlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkuCisKKyAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcworc2FmZXN0IHRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKK2NvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0IHRoZQorImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KKworICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBsaWJyYXJ5J3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CisgICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCitBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KKworWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKK3NjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIGxpYnJhcnksIGlmCituZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CisKKyAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUKKyAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KKworICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5OTAKKyAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKKworVGhhdCdzIGFsbCB0aGVyZSBpcyB0byBpdCEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9JbnRlbCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9JbnRlbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI4MWRkNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvSW50ZWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1MaWNlbnNlIGZvciBDb250cmlidXRpb25zIHRvIEFDUElDQQotCi1Db3B5cmlnaHQgKGMpIDIwMDAg4oCTIDIwMTUgSW50ZWwgQ29ycC4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLUlNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi1BUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCi1MSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVMKLUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1DT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLVBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL1VGTCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9VRkwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4YWM0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9VRkwKQEAgLTAsMCArMSw5NyBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVUJVTlRVIEZPTlQgTElDRU5DRSBWZXJzaW9uIDEuMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQUkVBTUJMRQorVGhpcyBsaWNlbmNlIGFsbG93cyB0aGUgbGljZW5zZWQgZm9udHMgdG8gYmUgdXNlZCwgc3R1ZGllZCwgbW9kaWZpZWQgYW5kCityZWRpc3RyaWJ1dGVkIGZyZWVseS4gVGhlIGZvbnRzLCBpbmNsdWRpbmcgYW55IGRlcml2YXRpdmUgd29ya3MsIGNhbiBiZQorYnVuZGxlZCwgZW1iZWRkZWQsIGFuZCByZWRpc3RyaWJ1dGVkIHByb3ZpZGVkIHRoZSB0ZXJtcyBvZiB0aGlzIGxpY2VuY2UKK2FyZSBtZXQuIFRoZSBmb250cyBhbmQgZGVyaXZhdGl2ZXMsIGhvd2V2ZXIsIGNhbm5vdCBiZSByZWxlYXNlZCB1bmRlcgorYW55IG90aGVyIGxpY2VuY2UuIFRoZSByZXF1aXJlbWVudCBmb3IgZm9udHMgdG8gcmVtYWluIHVuZGVyIHRoaXMKK2xpY2VuY2UgZG9lcyBub3QgcmVxdWlyZSBhbnkgZG9jdW1lbnQgY3JlYXRlZCB1c2luZyB0aGUgZm9udHMgb3IgdGhlaXIKK2Rlcml2YXRpdmVzIHRvIGJlIHB1Ymxpc2hlZCB1bmRlciB0aGlzIGxpY2VuY2UsIGFzIGxvbmcgYXMgdGhlIHByaW1hcnkKK3B1cnBvc2Ugb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0byBiZSBhIHZlaGljbGUgZm9yIHRoZSBkaXN0cmlidXRpb24gb2YKK3RoZSBmb250cy4KKworREVGSU5JVElPTlMKKyJGb250IFNvZnR3YXJlIiByZWZlcnMgdG8gdGhlIHNldCBvZiBmaWxlcyByZWxlYXNlZCBieSB0aGUgQ29weXJpZ2h0CitIb2xkZXIocykgdW5kZXIgdGhpcyBsaWNlbmNlIGFuZCBjbGVhcmx5IG1hcmtlZCBhcyBzdWNoLiBUaGlzIG1heQoraW5jbHVkZSBzb3VyY2UgZmlsZXMsIGJ1aWxkIHNjcmlwdHMgYW5kIGRvY3VtZW50YXRpb24uCisKKyJPcmlnaW5hbCBWZXJzaW9uIiByZWZlcnMgdG8gdGhlIGNvbGxlY3Rpb24gb2YgRm9udCBTb2Z0d2FyZSBjb21wb25lbnRzCithcyByZWNlaXZlZCB1bmRlciB0aGlzIGxpY2VuY2UuCisKKyJNb2RpZmllZCBWZXJzaW9uIiByZWZlcnMgdG8gYW55IGRlcml2YXRpdmUgbWFkZSBieSBhZGRpbmcgdG8sIGRlbGV0aW5nLAorb3Igc3Vic3RpdHV0aW5nIC0tIGluIHBhcnQgb3IgaW4gd2hvbGUgLS0gYW55IG9mIHRoZSBjb21wb25lbnRzIG9mIHRoZQorT3JpZ2luYWwgVmVyc2lvbiwgYnkgY2hhbmdpbmcgZm9ybWF0cyBvciBieSBwb3J0aW5nIHRoZSBGb250IFNvZnR3YXJlIHRvCithIG5ldyBlbnZpcm9ubWVudC4KKworIkNvcHlyaWdodCBIb2xkZXIocykiIHJlZmVycyB0byBhbGwgaW5kaXZpZHVhbHMgYW5kIGNvbXBhbmllcyB3aG8gaGF2ZSBhCitjb3B5cmlnaHQgb3duZXJzaGlwIG9mIHRoZSBGb250IFNvZnR3YXJlLgorCisiU3Vic3RhbnRpYWxseSBDaGFuZ2VkIiByZWZlcnMgdG8gTW9kaWZpZWQgVmVyc2lvbnMgd2hpY2ggY2FuIGJlIGVhc2lseQoraWRlbnRpZmllZCBhcyBkaXNzaW1pbGFyIHRvIHRoZSBGb250IFNvZnR3YXJlIGJ5IHVzZXJzIG9mIHRoZSBGb250CitTb2Z0d2FyZSBjb21wYXJpbmcgdGhlIE9yaWdpbmFsIFZlcnNpb24gd2l0aCB0aGUgTW9kaWZpZWQgVmVyc2lvbi4KKworVG8gIlByb3BhZ2F0ZSIgYSB3b3JrIG1lYW5zIHRvIGRvIGFueXRoaW5nIHdpdGggaXQgdGhhdCwgd2l0aG91dAorcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgoraW5mcmluZ2VtZW50IHVuZGVyIGFwcGxpY2FibGUgY29weXJpZ2h0IGxhdywgZXhjZXB0IGV4ZWN1dGluZyBpdCBvbiBhCitjb21wdXRlciBvciBtb2RpZnlpbmcgYSBwcml2YXRlIGNvcHkuIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsCitkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24gYW5kIHdpdGggb3Igd2l0aG91dCBjaGFyZ2luZworYSByZWRpc3RyaWJ1dGlvbiBmZWUpLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMsIGFuZCBpbiBzb21lCitjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgorCitQRVJNSVNTSU9OICYgQ09ORElUSU9OUworVGhpcyBsaWNlbmNlIGRvZXMgbm90IGdyYW50IGFueSByaWdodHMgdW5kZXIgdHJhZGVtYXJrIGxhdyBhbmQgYWxsIHN1Y2gKK3JpZ2h0cyBhcmUgcmVzZXJ2ZWQuCisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCitjb3B5IG9mIHRoZSBGb250IFNvZnR3YXJlLCB0byBwcm9wYWdhdGUgdGhlIEZvbnQgU29mdHdhcmUsIHN1YmplY3QgdG8KK3RoZSBiZWxvdyBjb25kaXRpb25zOgorCisxKSBFYWNoIGNvcHkgb2YgdGhlIEZvbnQgU29mdHdhcmUgbXVzdCBjb250YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSBhbmQgdGhpcyBsaWNlbmNlLiBUaGVzZSBjYW4gYmUgaW5jbHVkZWQgZWl0aGVyIGFzIHN0YW5kLWFsb25lCit0ZXh0IGZpbGVzLCBodW1hbi1yZWFkYWJsZSBoZWFkZXJzIG9yIGluIHRoZSBhcHByb3ByaWF0ZSBtYWNoaW5lLQorcmVhZGFibGUgbWV0YWRhdGEgZmllbGRzIHdpdGhpbiB0ZXh0IG9yIGJpbmFyeSBmaWxlcyBhcyBsb25nIGFzIHRob3NlCitmaWVsZHMgY2FuIGJlIGVhc2lseSB2aWV3ZWQgYnkgdGhlIHVzZXIuCisKKzIpIFRoZSBmb250IG5hbWUgY29tcGxpZXMgd2l0aCB0aGUgZm9sbG93aW5nOgorKGEpIFRoZSBPcmlnaW5hbCBWZXJzaW9uIG11c3QgcmV0YWluIGl0cyBuYW1lLCB1bm1vZGlmaWVkLgorKGIpIE1vZGlmaWVkIFZlcnNpb25zIHdoaWNoIGFyZSBTdWJzdGFudGlhbGx5IENoYW5nZWQgbXVzdCBiZSByZW5hbWVkIHRvCithdm9pZCB1c2Ugb2YgdGhlIG5hbWUgb2YgdGhlIE9yaWdpbmFsIFZlcnNpb24gb3Igc2ltaWxhciBuYW1lcyBlbnRpcmVseS4KKyhjKSBNb2RpZmllZCBWZXJzaW9ucyB3aGljaCBhcmUgbm90IFN1YnN0YW50aWFsbHkgQ2hhbmdlZCBtdXN0IGJlCityZW5hbWVkIHRvIGJvdGggKGkpIHJldGFpbiB0aGUgbmFtZSBvZiB0aGUgT3JpZ2luYWwgVmVyc2lvbiBhbmQgKGlpKSBhZGQKK2FkZGl0aW9uYWwgbmFtaW5nIGVsZW1lbnRzIHRvIGRpc3Rpbmd1aXNoIHRoZSBNb2RpZmllZCBWZXJzaW9uIGZyb20gdGhlCitPcmlnaW5hbCBWZXJzaW9uLiBUaGUgbmFtZSBvZiBzdWNoIE1vZGlmaWVkIFZlcnNpb25zIG11c3QgYmUgdGhlIG5hbWUgb2YKK3RoZSBPcmlnaW5hbCBWZXJzaW9uLCB3aXRoICJkZXJpdmF0aXZlIFgiIHdoZXJlIFggcmVwcmVzZW50cyB0aGUgbmFtZSBvZgordGhlIG5ldyB3b3JrLCBhcHBlbmRlZCB0byB0aGF0IG5hbWUuCisKKzMpIFRoZSBuYW1lKHMpIG9mIHRoZSBDb3B5cmlnaHQgSG9sZGVyKHMpIGFuZCBhbnkgY29udHJpYnV0b3IgdG8gdGhlCitGb250IFNvZnR3YXJlIHNoYWxsIG5vdCBiZSB1c2VkIHRvIHByb21vdGUsIGVuZG9yc2Ugb3IgYWR2ZXJ0aXNlIGFueQorTW9kaWZpZWQgVmVyc2lvbiwgZXhjZXB0IChpKSBhcyByZXF1aXJlZCBieSB0aGlzIGxpY2VuY2UsIChpaSkgdG8KK2Fja25vd2xlZGdlIHRoZSBjb250cmlidXRpb24ocykgb2YgdGhlIENvcHlyaWdodCBIb2xkZXIocykgb3IgKGlpaSkgd2l0aAordGhlaXIgZXhwbGljaXQgd3JpdHRlbiBwZXJtaXNzaW9uLgorCis0KSBUaGUgRm9udCBTb2Z0d2FyZSwgbW9kaWZpZWQgb3IgdW5tb2RpZmllZCwgaW4gcGFydCBvciBpbiB3aG9sZSwgbXVzdAorYmUgZGlzdHJpYnV0ZWQgZW50aXJlbHkgdW5kZXIgdGhpcyBsaWNlbmNlLCBhbmQgbXVzdCBub3QgYmUgZGlzdHJpYnV0ZWQKK3VuZGVyIGFueSBvdGhlciBsaWNlbmNlLiBUaGUgcmVxdWlyZW1lbnQgZm9yIGZvbnRzIHRvIHJlbWFpbiB1bmRlciB0aGlzCitsaWNlbmNlIGRvZXMgbm90IGFmZmVjdCBhbnkgZG9jdW1lbnQgY3JlYXRlZCB1c2luZyB0aGUgRm9udCBTb2Z0d2FyZSwKK2V4Y2VwdCBhbnkgdmVyc2lvbiBvZiB0aGUgRm9udCBTb2Z0d2FyZSBleHRyYWN0ZWQgZnJvbSBhIGRvY3VtZW50CitjcmVhdGVkIHVzaW5nIHRoZSBGb250IFNvZnR3YXJlIG1heSBvbmx5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMKK2xpY2VuY2UuCisKK1RFUk1JTkFUSU9OCitUaGlzIGxpY2VuY2UgYmVjb21lcyBudWxsIGFuZCB2b2lkIGlmIGFueSBvZiB0aGUgYWJvdmUgY29uZGl0aW9ucyBhcmUKK25vdCBtZXQuCisKK0RJU0NMQUlNRVIKK1RIRSBGT05UIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gQU5ZIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVCBPRgorQ09QWVJJR0hULCBQQVRFTlQsIFRSQURFTUFSSywgT1IgT1RIRVIgUklHSFQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorQ09QWVJJR0hUIEhPTERFUiBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCitJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElORElSRUNULCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMCitEQU1BR0VTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKK0ZST00sIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIEZPTlQgU09GVFdBUkUgT1IgRlJPTSBPVEhFUgorREVBTElOR1MgSU4gVEhFIEZPTlQgU09GVFdBUkUuCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9saWNlbnNlcy9YMTEgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvWDExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhM2U0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvWDExCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxleCBHcmF2ZWxleQorICogQ29weXJpZ2h0IChDKSAyMDEwIFVscmlrIFN2ZXJkcnVwIDx1bHJpay5zdmVyZHJ1cEBnbWFpbC5jb20+CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKyAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorICogTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorICogTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorICogT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisgKiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2RocnlzdG9uZS9kaHJ5c3RvbmUtMi4xL2RocnlzdG9uZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9kaHJ5c3RvbmUvZGhyeXN0b25lLTIuMS9kaHJ5c3RvbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1MzUwYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9kaHJ5c3RvbmUvZGhyeXN0b25lLTIuMS9kaHJ5c3RvbmUucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorZGhyeXN0b25lOiBmaXggY29tcGlsYXRpb24gcHJvYmxlbXMKKworVGhpcyBwYXRjaCBmaXhlcyB0d28gY29tcGlsYXRpb24gZXJyb3JzIHdpdGggb3JpZ2luYWwKK2RocnlzdG9uZSBzb3VyY2VzOgorKiBSZWRlZmluaXRpb24gb2YgdGltZXMoKSB3aXRoIHdyb25nIHJldHVybiB0eXBlCisgIC0gRml4ZWQgYnkgY29tbWVudGluZyBvdXQgdGhlIHVubmVjZXNzYXJ5IHJlZGVmaW5pdGlvbgorKiBVbmRlZmluZWQgaWRlbnRpZmllciBIWgorICAtIE9yaWdpbmFsbHkgSFogd2FzIHN1cHBvc2VkIHRvIGJlIHRoZSBjbG9jayBmcmVxdWVuY3kKKyAgICB2YWx1ZSBmb3IgdGltZXMoKQorICAtIEZvciBMaW51eCwgdGhlIGZyZXF1ZW5jeSBzaG91bGQgY29tZSBmcm9tIHN5c2NvbmYKKyAgLSBUaGlzIHBhdGNoIGRlZmluZXMgZ2xvYmFsIHZhcmlibGUgSFogYW5kIGluaXRpYWxpemVzCisgICAgaXQgZnJvbSBzeXNjb25mCisKK0FkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBhZGRzIGEgc2ltcGxlIE1ha2VmaWxlLgorCitVcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKKworU2lnbi1vZmYtYnk6IEtpbW1vIFN1cmFra2EgPGtpbW1vLnN1cmFra2FAZ2UuY29tPgorU2lnbmVkLW9mZi1ieTogSm9zZSBBbGFyY29uIDxqb3NlLmFsYXJjb25AZ2UuY29tPgorLS0tCisKK2RpZmYgLU5hdXIgZGhyeS5vcmlnL2RocnlfMS5jIGRocnkvZGhyeV8xLmMKKy0tLSBkaHJ5Lm9yaWcvZGhyeV8xLmMJMjAxNS0wNy0yMCAxNDoyNTo1OC4wNTk5NDUzNTMgKzAzMDAKKysrKyBkaHJ5L2RocnlfMS5jCTIwMTUtMDctMjAgMTI6NDM6MjUuMzE4OTQ1MzUzICswMzAwCitAQCAtNDUsMTEgKzQ1LDE1IEBACisgCisgI2lmZGVmIFRJTUVTCisgc3RydWN0IHRtcyAgICAgIHRpbWVfaW5mbzsKKy1leHRlcm4gIGludCAgICAgdGltZXMgKCk7CisrLyogZXh0ZXJuICBpbnQgICAgIHRpbWVzICgpOyAqLworICAgICAgICAgICAgICAgICAvKiBzZWUgbGlicmFyeSBmdW5jdGlvbiAidGltZXMiICovCisgI2RlZmluZSBUb29fU21hbGxfVGltZSAxMjAKKyAgICAgICAgICAgICAgICAgLyogTWVhc3VyZW1lbnRzIHNob3VsZCBsYXN0IGF0IGxlYXN0IGFib3V0IDIgc2Vjb25kcyAqLworICNlbmRpZgorKyNpZm5kZWYgSFoKKysjaW5jbHVkZSA8dW5pc3RkLmg+ICAvKiBzeXNjb25mICovCisrICAgbG9uZyBIWjsKKysjZW5kaWYKKyAjaWZkZWYgVElNRQorIGV4dGVybiBsb25nICAgICB0aW1lKCk7CisgICAgICAgICAgICAgICAgIC8qIHNlZSBsaWJyYXJ5IGZ1bmN0aW9uICJ0aW1lIiAgKi8KK0BAIC04NCw2ICs4OCw5IEBACisgCisgICAvKiBJbml0aWFsaXphdGlvbnMgKi8KKyAKKysjaWZuZGVmIEhaCisrICBIWiA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOworKyNlbmRpZgorICAgTmV4dF9QdHJfR2xvYiA9IChSZWNfUG9pbnRlcikgbWFsbG9jIChzaXplb2YgKFJlY19UeXBlKSk7CisgICBQdHJfR2xvYiA9IChSZWNfUG9pbnRlcikgbWFsbG9jIChzaXplb2YgKFJlY19UeXBlKSk7CisgCitkaWZmIC1OYXVyIGRocnkub3JpZy9kaHJ5LmggZGhyeS9kaHJ5LmgKKy0tLSBkaHJ5Lm9yaWcvZGhyeS5oCTIwMTUtMDctMjAgMTQ6MjU6NTguMDU0OTQ1MzUzICswMzAwCisrKysgZGhyeS9kaHJ5LmgJMjAxNS0wNy0yMCAxMjo0Mjo1OS45MDM5NDUzNTMgKzAzMDAKK0BAIC00MjAsNCArNDIwLDYgQEAKKyAgICAgICAgICAgfSB2YXJpYW50OworICAgICAgIH0gUmVjX1R5cGUsICpSZWNfUG9pbnRlcjsKKyAKKy0KKysjaWZuZGVmIEhaCisrICAgZXh0ZXJuIGxvbmcgSFo7CisrI2VuZGlmCitkaWZmIC1OYXVyIGRocnkub3JpZy9NYWtlZmlsZSBkaHJ5L01ha2VmaWxlCistLS0gZGhyeS5vcmlnL01ha2VmaWxlCTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKysgZGhyeS9NYWtlZmlsZQkyMDE1LTA3LTIwIDE0OjEwOjQ1LjgzMjk0NTM1MyArMDMwMAorQEAgLTAsMCArMSwxNSBAQAorK0NDPWdjYworKworK2FsbDogZGhyeQorKworK2Rocnk6IGRocnlfMS5vIGRocnlfMi5vCisrCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4gJChMT0FETElCRVMpICQoTERMSUJTKQorKworK2RocnlfMS5vOiBkaHJ5XzEuYyBkaHJ5LmgKKysKKytkaHJ5XzIubzogZGhyeV8yLmMgZGhyeS5oCisrCisrY2xlYW46CisrCXJtIC1mICoubyAqfgorKworKy5QSE9OWTogYWxsIGNsZWFuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZGhyeXN0b25lL2RocnlzdG9uZV8yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZGhyeXN0b25lL2RocnlzdG9uZV8yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlOGM3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9kaHJ5c3RvbmUvZGhyeXN0b25lXzIuMS5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIkRocnlzdG9uZSBDUFUgYmVuY2htYXJrIgorTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL1BEO21kNT1iMzU5N2QxMjk0Njg4MWUxM2NiM2I1NDhkMTE3Mzg1MSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5ldGxpYi5vcmcvYmVuY2htYXJrL2RocnktYztkb3dubG9hZGZpbGVuYW1lPWRocnktYy5zaGFyIFwKKyAgICAgICAgICAgZmlsZTovL2RocnlzdG9uZS5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NWFhNTkwOWMxNzRlZWQ5OGMxMzRiZTJmNTYzMDdkYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzhhN2U5MTY5Nzg3MTI1YzM0NTFhNmM5NDFmM2FjYTVkYjJkMmYzODYzODcxYWZjZGNlMTU0ZWYxN2Y0ZTNlIgorCisjIE5lZWQgdG8gb3ZlcnJpZGUgTWFrZWZpbGUgdmFyaWFibGVzCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworZG9fdW5wYWNrKCkgeworICAgIFsgLWQgJHtTfSBdIHx8IG1rZGlyIC1wICR7U30KKyAgICBjZCAke1N9CisgICAgc2ggJHtETF9ESVJ9L2RocnktYy5zaGFyCit9Citkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2RocnkgJHtEfSR7YmluZGlyfQorfQorCisjIFByZXZlbnQgcHJvY2VkdXJlIG1lcmdpbmcgYXMgcmVxdWlyZWQgYnkgZGhyeXN0b25lLmM6CitDRkxBR1MgKz0gIi1mbm8tbHRvIgorCitMREZMQUdTICs9ICItZm5vLWx0byIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2ZpbGVzLzAwMDEtRml4LWNsYW5nLXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZmlsZXMvMDAwMS1GaXgtY2xhbmctd2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RmMDlmYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2ZpbGVzLzAwMDEtRml4LWNsYW5nLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMzVlOWY4MDUxOGQ2NjZkYjVmOWM2MmU4MDcyZmZiYzMwN2I0YWY0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDA4OjMwOjAxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBjbGFuZyB3YXJuaW5ncworCisuLi9zcmMvbmF0aXZlLXN0YXRlLWRybS5jcHA6MzM0OjIwOiBlcnJvcjogY2Fubm90IHBhc3Mgb2JqZWN0IG9mIG5vbi10cml2aWFsIHR5cGUgJ3N0ZDo6X19jeHgxMTo6YmFzaWNfc3RyaW5nPGNoYXI+JyB0aHJvdWdoIHZhcmlhZGljIGZ1bmN0aW9uOyBjYWxsIHdpbGwgYWJvcnQgYXQgcnVudGltZSBbLVdub24tcG9kLXZhcmFyZ3NdCisgICAgICAgICAgICAgICAgICAgZGV2X3BhdGgpOworICAgICAgICAgICAgICAgICAgIF4KKzEgZXJyb3IgZ2VuZXJhdGVkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL25hdGl2ZS1zdGF0ZS1kcm0uY3BwIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL25hdGl2ZS1zdGF0ZS1kcm0uY3BwIGIvc3JjL25hdGl2ZS1zdGF0ZS1kcm0uY3BwCitpbmRleCBkYzJiMzIzLi42MjU2NmVlIDEwMDY0NAorLS0tIGEvc3JjL25hdGl2ZS1zdGF0ZS1kcm0uY3BwCisrKysgYi9zcmMvbmF0aXZlLXN0YXRlLWRybS5jcHAKK0BAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIGludCBvcGVuX3VzaW5nX3VkZXZfc2NhbigpCisgICAgIGlmICghdmFsaWRfZmQoZmQpKSB7CisgICAgICAgICAvLyAlbSBpcyBHTElCQyBzcGVjaWZpYy4uLiBNYXliZSB1c2Ugc3RyZXJyb3IgaGVyZS4uLgorICAgICAgICAgTG9nOjplcnJvcigiVHJpZWQgdG8gdXNlICclcycgYnV0IGZhaWxlZC5cblJlYXNvbiA6ICVtIiwKKy0gICAgICAgICAgICAgICAgICAgZGV2X3BhdGgpOworKyAgICAgICAgICAgICAgICAgICBkZXZfcGF0aC5jX3N0cigpKTsKKyAgICAgfQorICAgICBlbHNlCisgICAgICAgICBMb2c6OmRlYnVnKCJTdWNjZXNzIVxuIik7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9maWxlcy8wMDAxLUZpeC13bF9zdXJmYWNlLXNob3VsZC1iZS1kZXN0b3J5ZWQtYWZ0ZXItdGhlLXdsX3dpbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9maWxlcy8wMDAxLUZpeC13bF9zdXJmYWNlLXNob3VsZC1iZS1kZXN0b3J5ZWQtYWZ0ZXItdGhlLXdsX3dpbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOTUwODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZmlsZXMvMDAwMS1GaXgtd2xfc3VyZmFjZS1zaG91bGQtYmUtZGVzdG9yeWVkLWFmdGVyLXRoZS13bF93aW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA5Yzc0ZWM4M2UyOTI5YjFkNWFiNjVkNTEzN2I2YmE0MmVkZWIzMzJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWW9uZyBHYW4gPGI0NTc0OEBmcmVlc2NhbGUuY29tPgotRGF0ZTogVHVlLCAyNyBPY3QgMjAxNSAxODoxNToyMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXg6IHdsX3N1cmZhY2Ugc2hvdWxkIGJlIGRlc3RvcnllZCBhZnRlciB0aGUgd2xfd2luZG93Ci0gZGVzdHJveWVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2dsbWFyazIvZ2xtYXJrMi9pc3N1ZXMvMTJdCi0KLVNpZ25lZC1vZmYtYnk6IFlvbmcgR2FuIDxiNDU3NDhAZnJlZXNjYWxlLmNvbT4KLQotLS0tCi0gc3JjL25hdGl2ZS1zdGF0ZS13YXlsYW5kLmNwcCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbmF0aXZlLXN0YXRlLXdheWxhbmQuY3BwIGIvc3JjL25hdGl2ZS1zdGF0ZS13YXlsYW5kLmNwcAotaW5kZXggNDFmYzc0My4uY2RjZGYzNCAxMDA2NDQKLS0tLSBhL3NyYy9uYXRpdmUtc3RhdGUtd2F5bGFuZC5jcHAKLSsrKyBiL3NyYy9uYXRpdmUtc3RhdGUtd2F5bGFuZC5jcHAKLUBAIC01NiwxMCArNTYsMTAgQEAgTmF0aXZlU3RhdGVXYXlsYW5kOjp+TmF0aXZlU3RhdGVXYXlsYW5kKCkKLSAgICAgICAgICAgICB3bF9zaGVsbF9zdXJmYWNlX2Rlc3Ryb3kod2luZG93Xy0+c2hlbGxfc3VyZmFjZSk7Ci0gICAgICAgICBpZiAod2luZG93Xy0+b3BhcXVlX3JlcWlvbikKLSAgICAgICAgICAgICB3bF9yZWdpb25fZGVzdHJveSh3aW5kb3dfLT5vcGFxdWVfcmVxaW9uKTsKLS0gICAgICAgIGlmICh3aW5kb3dfLT5zdXJmYWNlKQotLSAgICAgICAgICAgIHdsX3N1cmZhY2VfZGVzdHJveSh3aW5kb3dfLT5zdXJmYWNlKTsKLSAgICAgICAgIGlmICh3aW5kb3dfLT5uYXRpdmUpCi0gICAgICAgICAgICAgd2xfZWdsX3dpbmRvd19kZXN0cm95KHdpbmRvd18tPm5hdGl2ZSk7Ci0rICAgICAgICBpZiAod2luZG93Xy0+c3VyZmFjZSkKLSsgICAgICAgICAgICB3bF9zdXJmYWNlX2Rlc3Ryb3kod2luZG93Xy0+c3VyZmFjZSk7Ci0gICAgICAgICBkZWxldGUgd2luZG93XzsKLSAgICAgfQotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9nbG1hcmsyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiCmluZGV4IDI2YzVjMDQuLmI3MmNlZDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiCkBAIC04LDIxICs4LDI0IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLlNHSTtiZWdpbmxpbmU9NTttZDU9MjY5Y2RhYjRhZjY3NDg2NzdhY2NlNTFkOWFhMTM1NTIiCiAKLURFUEVORFMgPSAibGlicG5nMTIganBlZyIKK0RFUEVORFMgPSAibGlicG5nIGpwZWcgdWRldiIKIAotUFYgPSAiMjAxNC4wMyske1NSQ1BWfSIKK1BWID0gIjIwMTcuMDcrJHtTUkNQVn0iCiAKLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL2dsbWFyazIvZ2xtYXJrMi5naXQ7cHJvdG9jb2w9aHR0cHMgXAotICAgIGZpbGU6Ly9idWlsZC1DaGVjay1wYWNrYWdlcy10by1iZS11c2VkLWJ5LXRoZS1lbmFibGVkLWZsYXZvLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtd2xfc3VyZmFjZS1zaG91bGQtYmUtZGVzdG9yeWVkLWFmdGVyLXRoZS13bF93aW5kLnBhdGNoIFwKLSAgICBmaWxlOi8vRml4LWNvbmZpZ3VyZS1mb3Itc3FydC1jaGVjay5wYXRjaCBcCi0iCi1TUkNSRVYgPSAiZjQxM2M1YjQyMzI1MGI0ZmRlOGY5NTYzOWFkMzY4ZDViMDJjNWI5YiIKK0NPTVBBVElCTEVfSE9TVF9ycGkgID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJy4qLWxpbnV4KicsICdudWxsJywgZCl9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ2xtYXJrMi9nbG1hcmsyLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC1DaGVjay1wYWNrYWdlcy10by1iZS11c2VkLWJ5LXRoZS1lbmFibGVkLWZsYXZvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1jb25maWd1cmUtZm9yLXNxcnQtY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtY2xhbmctd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiZWQyMGM2MzNmMTkyNmQxZGQ3OGUzZTg5MDQzYzg1YTgxMzAyY2JlNiIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCB3YWYgcGtnY29uZmlnCitpbmhlcml0IHdhZiBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAib3BlbmdsIgogCiBQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAneDExLWdsIHgxMS1nbGVzMicsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIG9wZW5nbCcsICd3YXlsYW5kLWdsIHdheWxhbmQtZ2xlczInLCAnJywgZCl9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDFiMGM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfMy4yLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiTmV0d29yayBiZW5jaG1hcmsgdG9vbCIKK0RFU0NSSVBUSU9OID0gIlwKK2lwZXJmIGlzIGEgdG9vbCBmb3IgYWN0aXZlIG1lYXN1cmVtZW50cyBvZiB0aGUgbWF4aW11bSBhY2hpZXZhYmxlIGJhbmR3aWR0aCBcCitvbiBJUCBuZXR3b3Jrcy4gSXQgc3VwcG9ydHMgdHVuaW5nIG9mIHZhcmlvdXMgcGFyYW1ldGVycyByZWxhdGVkIHRvIHRpbWluZywgXAorcHJvdG9jb2xzLCBhbmQgYnVmZmVycy4gRm9yIGVhY2ggdGVzdCBpdCByZXBvcnRzIHRoZSBiYW5kd2lkdGgsIGxvc3MsIGFuZCBcCitvdGhlciBwYXJhbWV0ZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb2Z0d2FyZS5lcy5uZXQvaXBlcmYvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9lc25ldC9pcGVyZi9pc3N1ZXMiCitBVVRIT1IgPSAiRVNORVQgPGluZm9AZXMubmV0PiwgTGF3cmVuY2UgQmVya2VsZXkgTmF0aW9uYWwgTGFib3JhdG9yeSA8d2Vic3VwcG9ydEBsYmwuZ292PiIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDA5ODIyM2U0NGJkZDE5NTg1MzE1ZWU3NWNkOWQyZDciCisKK0RFUEVORFMgPSAib3BlbnNzbCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2VzbmV0L2lwZXJmLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdmFyaW91cy1zdGQtYzk5LWludC10eXBlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1wZy1mcm9tLXByb2ZpbGVfQ0ZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiODhkOTA3ZjdmYjU4YmZhYjVkMDg2YzVkYTYwYzkyMmUxYzU4MmM5MiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUEFDS0FHRUNPTkZJR1tsa3NjdHBdID0gImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD15ZXMsYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vLGxrc2N0cC10b29scyIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLW9wZW5zc2w9JHtSRUNJUEVfU1lTUk9PVH0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTAxODk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBiZW5jaG1hcmsgdG9vbCIKLURFU0NSSVBUSU9OID0gIlwKLWlwZXJmIGlzIGEgdG9vbCBmb3IgYWN0aXZlIG1lYXN1cmVtZW50cyBvZiB0aGUgbWF4aW11bSBhY2hpZXZhYmxlIGJhbmR3aWR0aCBcCi1vbiBJUCBuZXR3b3Jrcy4gSXQgc3VwcG9ydHMgdHVuaW5nIG9mIHZhcmlvdXMgcGFyYW1ldGVycyByZWxhdGVkIHRvIHRpbWluZywgXAotcHJvdG9jb2xzLCBhbmQgYnVmZmVycy4gRm9yIGVhY2ggdGVzdCBpdCByZXBvcnRzIHRoZSBiYW5kd2lkdGgsIGxvc3MsIGFuZCBcCi1vdGhlciBwYXJhbWV0ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb2Z0d2FyZS5lcy5uZXQvaXBlcmYvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9lc25ldC9pcGVyZi9pc3N1ZXMiCi1BVVRIT1IgPSAiRVNORVQgPGluZm9AZXMubmV0PiwgTGF3cmVuY2UgQmVya2VsZXkgTmF0aW9uYWwgTGFib3JhdG9yeSA8d2Vic3VwcG9ydEBsYmwuZ292PiIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGMzNDM0YzVhOWE1M2M3OGM3NzM5ZjBiYzllNWFkZGEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9lc25ldC9pcGVyZi5naXQgXAotICAgICAgICAgICBmaWxlOi8vYXV0b21ha2UtZm9yZWlnbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLXZhcmlvdXMtc3RkLWM5OS1pbnQtdHlwZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1SZW1vdmUtcGctZnJvbS1wcm9maWxlX0NGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUFYgPSAiMy4xLjMrZ2l0ciR7U1JDUFZ9IgotU1JDUkVWID0gIjA5OTI0NGVjNjg2YjYyMDM5M2U5ODQ1NDc4YTU1NGIxYzdjYTVjOGIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBBQ0tBR0VDT05GSUdbbGtzY3RwXSA9ICJhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9eWVzLGFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ubyxsa3NjdHAtdG9vbHMiCi0KLUNGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzL2ZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzL2ZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NmZhOGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy9maXgtbGliNjQtY2FuLW5vdC1iZS1zaGlwZWQtaW4tNjRiaXQtdGFyZ2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotCi0KLWZpeCB0aGUgYmVsb3cgZXJyb3I6Ci0gIEVSUk9SOiBRQSBJc3N1ZTogbGliaHVnZXRsYmZzOiBGaWxlcy9kaXJlY3RvcmllcyB3ZXJlIGluc3RhbGxlZCBidXQgbm90IHNoaXBwZWQKLSAgL3Vzci9saWI2NAotICAvdXNyL2xpYjY0L2xpYmh1Z2V0bGJmcy5zbwotICAvdXNyL2xpYjY0L2xpYmh1Z2V0bGJmcy5hCi0gIC91c3IvbGliNjQvbGliaHVnZXRsYmZzX3ByaXZ1dGlscy5zbwotICAvdXNyL2xpYjY0L3Blcmw1Ci0gIC91c3IvbGliNjQvcGVybDUvVExCQwotICAvdXNyL2xpYjY0L3Blcmw1L1RMQkMvUGVyZkNvbGxlY3QucG0KLSAgL3Vzci9saWI2NC9wZXJsNS9UTEJDL1JlcG9ydC5wbQotICAvdXNyL2xpYjY0L3Blcmw1L1RMQkMvRGF0YUNvbGxlY3QucG0KLSAgL3Vzci9saWI2NC9wZXJsNS9UTEJDL09wQ29sbGVjdC5wbQotJDw1MD5FUlJPUjogUUEgcnVuIGZvdW5kIGZhdGFsIGVycm9ycy4gUGxlYXNlIGNvbnNpZGVyIGZpeGluZyB0aGVtLgotCi0KLVNpZ25lZC1vZmYtYnk6IEd1byBDaHVucm9uZyA8QjQwMjkwQGZyZWVzY2FsZS5jb20+Ci0KLS0tLSBhL01ha2VmaWxlCTIwMTMtMDktMjMgMDI6Mjg6NTcuMzQwNTY2OTk4IC0wNTAwCi0rKysgYi9NYWtlZmlsZQkyMDEzLTA5LTIzIDAyOjMxOjA1LjM0NDU2OTg5NiAtMDUwMAotQEAgLTMzLDcgKzMzLDYgQEAKLSBDUFBGTEFHUyArPSAtRF9fTElCSFVHRVRMQkZTX18gLURQUENfTk9fU0VHTUVOVFMKLSAKLSBBUkNIID0gJChzaGVsbCB1bmFtZSAtbSB8IHNlZCAtZSBzL2kuODYvaTM4Ni8pCi0tQ0MgPSBnY2MKLSAKLSBDVVNUT01fTERTQ1JJUFRTID0geWVzCi0gCi1AQCAtNTksOSArNTgsOSBAQAotIENVU1RPTV9MRFNDUklQVFMgPSBubwotIGVsc2UKLSBpZmVxICgkKEFSQ0gpLGFhcmNoNjQpCi0tQ0M2NCA9IGdjYwotK0NDNjQgPSAkKENDKQotIEVMRjY0ID0gYWFyY2g2NGVsZgotLVRNUExJQjY0ID0gbGliNjQKLStUTVBMSUI2NCA9IGxpYgotIENVU1RPTV9MRFNDUklQVFMgPSBubwotIGVsc2UKLSBpZmVxICgkKEFSQ0gpLGkzODYpCi1AQCAtNzIsNyArNzEsNyBAQAotIGlmZXEgKCQoQVJDSCkseDg2XzY0KQotIENDNjQgPSAkKENDKSAtbTY0Ci0gRUxGNjQgPSBlbGZfeDg2XzY0Ci0tVE1QTElCNjQgPSBsaWI2NAotK1RNUExJQjY0ID0gbGliCi0gVE1QTElCMzIgPSBsaWIKLSBpZm5lcSAoJChCVUlMRFRZUEUpLE5BVElWRU9OTFkpCi0gQ0MzMiA9ICQoQ0MpIC1tMzIKLUBAIC0xNzIsMTEgKzE3MSwyMyBAQAotIEJJTkRJUiA9ICQoUFJFRklYKS9zaGFyZS9saWJodWdldGxiZnMKLSBFWEVESVIgPSAkKFBSRUZJWCkvYmluCi0gRE9DRElSID0gJChQUkVGSVgpL3NoYXJlL2RvYy9saWJodWdldGxiZnMKLSsKLSBpZmRlZiBDQzMyCi0gUE1ESVIgPSAkKFBSRUZJWCkvbGliL3Blcmw1L1RMQkMKLStlbmRpZgotKwotK2lmZGVmIENDNjQKLStpZmVxICgkKEFSQ0gpLHg4Nl82NCkKLStQTURJUiA9ICQoUFJFRklYKS9saWIvcGVybDUvVExCQwotK2Vsc2UKLStpZmVxICgkKEFSQ0gpLGFhcmNoNjQpCi0rUE1ESVIgPSAkKFBSRUZJWCkvbGliL3Blcmw1L1RMQkMKLSBlbHNlCi0gUE1ESVIgPSAkKFBSRUZJWCkvbGliNjQvcGVybDUvVExCQwotIGVuZGlmCi0rZW5kaWYKLStlbmRpZgotKwotIE1BTkRJUjEgPSAkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjEKLSBNQU5ESVIzID0gJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zCi0gTUFORElSNyA9ICQoUFJFRklYKS9zaGFyZS9tYW4vbWFuNwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9saWJodWdldGxiZnNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9saWJodWdldGxiZnNfZ2l0LmJiCmluZGV4IDgyM2UwN2MuLmE2MzQ5NGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvbGliaHVnZXRsYmZzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2xpYmh1Z2V0bGJmc19naXQuYmIKQEAgLTMzLDYgKzMzLDggQEAKIFBBUkFMTEVMX01BS0UgPSAiIgogQ0ZMQUdTICs9ICItZmV4cGVuc2l2ZS1vcHRpbWl6YXRpb25zIC1mcmVuYW1lLXJlZ2lzdGVycyAtZm9taXQtZnJhbWUtcG9pbnRlciAtZzAiCiAKK2V4cG9ydCBIVUdFVExCX0xEU0NSSVBUX1BBVEg9IiR7U30vbGRzY3JpcHRzIgorCiBUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKIAogI1RoZSBDVVNUT01fTERTQ1JJUFRTIGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBnb2xkIGxpbmtlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL25iZW5jaC1ieXRlL25iZW5jaC1ieXRlXzIuMi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL25iZW5jaC1ieXRlL25iZW5jaC1ieXRlXzIuMi4zLmJiCmluZGV4IDU2MjcyZDkuLmRhMmNiNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9uYmVuY2gtYnl0ZS9uYmVuY2gtYnl0ZV8yLjIuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbmJlbmNoLWJ5dGUvbmJlbmNoLWJ5dGVfMi4yLjMuYmIKQEAgLTEsMyArMSw0IEBACitTVU1NQVJZID0gIkEgQ1BVIGJlbmNobWFyayB1dGlsaXR5IgogREVTQ1JJUFRJT04gPSAiQllURSBNYWdhemluZSdzIG5hdGl2ZSBiZW5jaG1hcmtzIChhbHNvIGNhbGxlZCBCWVRFbWFyaykgXAogZGVzaWduZWQgdG8gZXhwb3NlIHRoZSBjYXBhYmlsaXRpZXMgb2YgYSBzeXN0ZW0ncyBDUFUsIEZQVSwgXAogYW5kIG1lbW9yeSBzeXN0ZW0uIgpAQCAtNiw3ICs3LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NTc7ZW5kbGluZT02NjttZDU9MDIwZWY1NzlmOGZhNTc0NmI3ZTMwN2E1NDcwNzgzNGYiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy50dXgub3JnL35tYXllci9saW51eC8ke0JQfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL2Zvc3NpZXMub3JnL2xpbnV4L21pc2MvJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL25iZW5jaF8zMmJpdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtYWRkLW1vcmUtZGVwZW5kZW5jaWVzLXRvLXBvaW50ZXIuaC5wYXRjaCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV82LjYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNi42LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMjE3NzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV82LjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiUGhvcm9uaXggVGVzdCBTdWl0ZSIKLURFU0NSSVBUSU9OID0gIlRoZSBQaG9yb25peCBUZXN0IFN1aXRlIGlzIGRlc2lnbmVkIHRvIGNhcnJ5IG91dCBib3RoIHF1YWxpdGF0aXZlIFwKLWFuZCBxdWFudGl0YXRpdmUgYmVuY2htYXJrcyBpbiBhIGNsZWFuLCByZXByb2R1Y2libGUsIGFuZCBlYXN5LXRvLXVzZSBtYW5uZXIuIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotU0VDVElPTiA9ICJjb25zb2xlL3Rlc3RzIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucGhvcm9uaXgtdGVzdC1zdWl0ZS5jb20vcmVsZWFzZXMvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjViY2FjNTg5NmE0YTM0ZmM2YWU0YWU5NDk5MWUxNjM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzMWNlYjgwOGQ4YmQ2Y2ViZTY5YzhiNzExZDU1MDkwZDY4ODBlOTA2YTY1ODM3ZjE4ZmE4MjAwZmU3ZDJjNGQiCi0KLVMgPSAiJHtXT1JLRElSfS9waG9yb25peC10ZXN0LXN1aXRlIgotCi1pbmhlcml0IHN5c3RlbWQgYWxsYXJjaAotCi1kb19pbnN0YWxsKCkgewotICAgIERFU1RESVI9JHtEfSAuL2luc3RhbGwtc2ggJHtleGVjX3ByZWZpeH0KLQotICAgIGlmIFsgIiR7c3lzdGVtZF91bml0ZGlyfSIgIT0gIi91c3IvbGliL3N5c3RlbWQiIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgIG12ICR7RH0vdXNyL2xpYi9zeXN0ZW1kL3N5c3RlbS8qICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICAgICAgcm0gLXJmICR7RH0vdXNyL2xpYi8KLSAgICBmaQotfQotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicGhvcm9tYXRpYy1jbGllbnQuc2VydmljZSBwaG9yb21hdGljLXNlcnZlci5zZXJ2aWNlIgotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIHBocC1jbGkiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vcGhvcm9uaXgtdGVzdC1zdWl0ZSBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhL3Bob3Jvbml4LXRlc3Qtc3VpdGUuYXBwZGF0YS54bWwgXAotICAgICR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzL3Bob3Jvbml4LXRlc3Qtc3VpdGUucG5nIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNjR4NjQvbWltZXR5cGVzL2FwcGxpY2F0aW9uLXgtb3BlbmJlbmNobWFya2luZy5wbmcgXAotICAgICR7ZGF0YWRpcn0vbWltZS9wYWNrYWdlcy9vcGVuYmVuY2htYXJraW5nLW1pbWUueG1sIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vKiBcCi0iCi0KLVBOQkxBQ0tMSVNUW3Bob3Jvbml4LXRlc3Qtc3VpdGVdID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgcGhwLWNsaSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzcuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjY2Q1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzcuNC4wLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiUGhvcm9uaXggVGVzdCBTdWl0ZSIKK0RFU0NSSVBUSU9OID0gIlRoZSBQaG9yb25peCBUZXN0IFN1aXRlIGlzIGRlc2lnbmVkIHRvIGNhcnJ5IG91dCBib3RoIHF1YWxpdGF0aXZlIFwKK2FuZCBxdWFudGl0YXRpdmUgYmVuY2htYXJrcyBpbiBhIGNsZWFuLCByZXByb2R1Y2libGUsIGFuZCBlYXN5LXRvLXVzZSBtYW5uZXIuIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorU0VDVElPTiA9ICJjb25zb2xlL3Rlc3RzIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cucGhvcm9uaXgtdGVzdC1zdWl0ZS5jb20vcmVsZWFzZXMvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjg2ZmEzZWVkZTQzZmZmZjg4OTkyZmUyMTM2OGIxMWI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlOWFlYzNlZjRmOTgwNTgxNzU2ZmQwYmY3YjMwZGQxY2NiMjBlN2FhZTYzNzA3OGE1ODc2MDZiZjc1YTZiNjciCisKK1MgPSAiJHtXT1JLRElSfS9waG9yb25peC10ZXN0LXN1aXRlIgorCitpbmhlcml0IHN5c3RlbWQgYWxsYXJjaAorCitkb19pbnN0YWxsKCkgeworICAgIERFU1RESVI9JHtEfSAuL2luc3RhbGwtc2ggJHtleGVjX3ByZWZpeH0KKworICAgIGlmIFsgIiR7c3lzdGVtZF91bml0ZGlyfSIgIT0gIi91c3IvbGliL3N5c3RlbWQiIF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgIG12ICR7RH0vdXNyL2xpYi9zeXN0ZW1kL3N5c3RlbS8qICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgcm0gLXJmICR7RH0vdXNyL2xpYi8KKyAgICBmaQorfQorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicGhvcm9tYXRpYy1jbGllbnQuc2VydmljZSBwaG9yb21hdGljLXNlcnZlci5zZXJ2aWNlIgorUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIHBocC1jbGkiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vcGhvcm9uaXgtdGVzdC1zdWl0ZSBcCisgICAgJHtkYXRhZGlyfS9hcHBkYXRhL3Bob3Jvbml4LXRlc3Qtc3VpdGUuYXBwZGF0YS54bWwgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzL3Bob3Jvbml4LXRlc3Qtc3VpdGUucG5nIFwKKyAgICAke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNjR4NjQvbWltZXR5cGVzL2FwcGxpY2F0aW9uLXgtb3BlbmJlbmNobWFya2luZy5wbmcgXAorICAgICR7ZGF0YWRpcn0vbWltZS9wYWNrYWdlcy9vcGVuYmVuY2htYXJraW5nLW1pbWUueG1sIFwKKyAgICAke3N5c3RlbWRfdW5pdGRpcn0vKiBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcG1idy9wbWJ3X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9wbWJ3L3BtYndfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTEzZGE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9wbWJ3L3BtYndfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUVSWSA9ICJQYXJhbGxlbCBNZW1vcnkgQmFuZHdpZHRoIE1lYXN1cmVtZW50IC8gQmVuY2htYXJrIgotREVTQ1JJUFRJT04gPSAiXAotVGhlIHRvb2wgcG1idyBpcyBhIHNldCBvZiBhc3NlbWJsZXIgcm91dGluZXMgdG8gbWVhc3VyZSB0aGUgcGFyYWxsZWwgbWVtb3J5IFwKLShjYWNoZSBhbmQgUkFNKSBiYW5kd2lkdGggb2YgbW9kZXJuIG11bHRpLWNvcmUgbWFjaGluZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3BhbnRoZW1hLm5ldC8yMDEzL3BtYncvIgotU0VDVElPTiA9ICJiZW5jaG1hcmsvdGVzdHMiCi1BVVRIT1IgPSAiVGltbyBCaW5nbWFubiIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2JpbmdtYW5uL3BtYnc7cHJvdG9jb2w9aHR0cHMiCi0KLVBWID0gIjAuNi4yK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjRhM2IzNzcyODA2MGE4YWJhMDZmYzgzZjE1N2ExOTY1MDg4ZDc5ZDYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLSMgdGhlIGhhbmQgY29kZWQgYXNtIHVzZXMgcjExLCB3aGljaCB0aGVyZWZvcmUgY2Fubm90IGJlIHVzZWQgZm9yIHN0b3JpbmcKLSMgdGhlIGZyYW1lIHBvaW50ZXIgd2hlbiBkZWJ1Z2dpbmcgb24gYXJtCi1TRUxFQ1RFRF9PUFRJTUlaQVRJT05fcmVtb3ZlX2FybSA9ICItZm5vLW9taXQtZnJhbWUtcG9pbnRlciIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXN0YXRzMmdudXBsb3QiCi0KLUZJTEVTXyR7UE59LXN0YXRzMmdudXBsb3QgPSAiJHtiaW5kaXJ9L3N0YXRzMmdudXBsb3QiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIiR7UE59LXN0YXRzMmdudXBsb3QiCi0KLVBOQkxBQ0tMSVNUW3BtYnddID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNTY4LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay90aW9iZW5jaC90aW9iZW5jaC0wLjMuMy8wMDAxLVNwZWNpZnktcHJpbnRmLWZvcm1hdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvdGlvYmVuY2gvdGlvYmVuY2gtMC4zLjMvMDAwMS1TcGVjaWZ5LXByaW50Zi1mb3JtYXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZDM0ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvdGlvYmVuY2gvdGlvYmVuY2gtMC4zLjMvMDAwMS1TcGVjaWZ5LXByaW50Zi1mb3JtYXRzLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gYjA4ZTYxZWY2NGVlY2UyM2NlOGZmYTI3ODRjZDNjNGY3MGI2MTY5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE3IEp1biAyMDE3IDA4OjA4OjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFNwZWNpZnkgcHJpbnRmIGZvcm1hdHMKKworRml4ZXMKK3Rpb3Rlc3QuYzo1NTU6NDogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdGlvdGVzdC5jIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGlvdGVzdC5jIGIvdGlvdGVzdC5jCitpbmRleCA2YjNkMGMzLi4zZTYxNjZhIDEwMDY0NAorLS0tIGEvdGlvdGVzdC5jCisrKysgYi90aW90ZXN0LmMKK0BAIC05MSw3ICs5MSw3IEBAIGlubGluZSB2b2lkIGNoZWNrSW50WmVybyhpbnQgdmFsdWUsIGNoYXIgKm1lc3MpCisgeworIAlpZiAodmFsdWUgPD0gMCkgCisgCXsKKy0JCXByaW50ZihtZXNzKTsKKysJCXByaW50ZigiJXMiLG1lc3MpOworIAkJcHJpbnRmKCJUcnkgJ3Rpb3Rlc3QgLWgnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIik7CisgCQlleGl0KDEpOworIAl9CitAQCAtMTAxLDcgKzEwMSw3IEBAIGlubGluZSB2b2lkIGNoZWNrTG9uZyhsb25nIHZhbHVlLCBjaGFyICptZXNzKQorIHsKKyAJaWYgKHZhbHVlIDwgMCkgCisgCXsKKy0JCXByaW50ZihtZXNzKTsKKysJCXByaW50ZigiJXMiLCBtZXNzKTsKKyAJCXByaW50ZigiVHJ5ICd0aW90ZXN0IC1oJyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIik7CisgCQlleGl0KDEpOworIAl9CitAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgZG9fdGVzdCggVGhyZWFkVGVzdCAqdGVzdCwgaW50IHRlc3RDYXNlLCBpbnQgc2VxdWVudGlhbCwKKyAJCWlmKGFyZ3MuZGVidWdMZXZlbCA+IDQpCisgCQl7CisgCQkJcHJpbnRmKCJDcmVhdGVkICVkIHRocmVhZHNcbiIsIGkpOworLQkJCWZwcmludGYoc3RkZXJyLCBkZWJ1Z01lc3NhZ2UpOworKwkJCWZwcmludGYoc3RkZXJyLCAiJXMiLCAgZGVidWdNZXNzYWdlKTsKKyAJCQlmZmx1c2goc3RkZXJyKTsKKyAJCX0KKyAJCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvdGlvYmVuY2gvdGlvYmVuY2hfMC4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvdGlvYmVuY2gvdGlvYmVuY2hfMC4zLjMuYmIKaW5kZXggMzVhZjM1Zi4uNDI3Y2U2NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Rpb2JlbmNoL3Rpb2JlbmNoXzAuMy4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay90aW9iZW5jaC90aW9iZW5jaF8wLjMuMy5iYgpAQCAtMTAsNiArMTAsNyBAQAogICAgIGZpbGU6Ly90aW9iZW5jaC1tYWtlZmlsZS5wYXRjaCBcCiAgICAgZmlsZTovL2F2b2lkLWdsaWJjLWNsYXNoZXMucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAxLURyb3AtaW5saW5lLW9mLWNyYzMyLWZ1bmN0aW9uLXRvLWZpeC1idWlsZC11c2luZy1HQ0MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLVNwZWNpZnktcHJpbnRmLWZvcm1hdHMucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gImJmNDg1YmY4MjBlNjkzYzc5ZTZiZDJhMzg3MDJhMTI4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhZDAxMTA1OWEzNWFjNzBjZGI1ZTNkMzk5OWNlZWU0NGE4ZThlOTA3ODkyNjg0NGIwNjg1YjdlYTlkYjJiY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXotaGNpZHVtcC0yLjUvb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6LWhjaWR1bXAtMi41L29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM3N2YxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXotaGNpZHVtcC0yLjUvb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtwYWNrYWdlIG9ic29sZXRlL25vdCBtYWludGFpbmVkIGJ5IHVwc3RyZWFtXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgotZGlmZiAtTnVyZCBibHVlei1oY2lkdW1wLTIuNS9jb25maWd1cmUuYWMgYmx1ZXotaGNpZHVtcC0yLjUvY29uZmlndXJlLmFjCi0tLS0gYmx1ZXotaGNpZHVtcC0yLjUvY29uZmlndXJlLmFjCTIwMTItMTEtMzAgMTA6Mjk6NDEuMDAwMDAwMDAwICswMjAwCi0rKysgYmx1ZXotaGNpZHVtcC0yLjUvY29uZmlndXJlLmFjCTIwMTMtMDEtMTIgMTA6MDI6MTAuNjA5NTExNDYzICswMjAwCi1AQCAtMiw3ICsyLDcgQEAKLSBBQ19JTklUKGJsdWV6LWhjaWR1bXAsIDIuNSkKLQotIEFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gc3ViZGlyLW9iamVjdHNdKQotLUFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCi0rQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0KLSBtNF9pZmRlZihbQU1fU0lMRU5UX1JVTEVTXSwgW0FNX1NJTEVOVF9SVUxFUyhbeWVzXSldKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6LWhjaWR1bXBfMi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6LWhjaWR1bXBfMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTE1ZDY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlei1oY2lkdW1wXzIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggQmx1ZXRvb3RoIFN0YWNrIEhDSSBEZWJ1Z2dlciBUb29sIgotREVTQ1JJUFRJT04gPSAiVGhlIGhjaWR1bXAgdG9vbCByZWFkcyByYXcgSENJIGRhdGEgY29taW5nIGZyb20gYW5kIGdvaW5nIHRvIGEgQmx1ZXRvb3RoIGRldmljZSBcCi1hbmQgZGlzcGxheXMgdGhlIGNvbW1hbmRzLCBldmVudHMgYW5kIGRhdGEgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtLiIKLQotU0VDVElPTiA9ICJjb25zb2xlIgotIyBoY2lkdW1wIHdhcyBpbnRlZ3JhdGVkIGludG8gYmx1ZXo1Ci1ERVBFTkRTID0gImJsdWV6NCIKLVJDT05GTElDVFNfJHtQTn0gPSAiYmx1ZXo1IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaGNpZHVtcC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PTNiZWUzYTE2MmRmZjQzYTViZTc0NzA3MTBiOTlmYmNmIgotUFIgPSAicjEiCi0KLVBOQkxBQ0tMSVNUW2JsdWV6LWhjaWR1bXBdID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV6NScsICdibHVlejUgY29uZmxpY3RzIHdpdGggYmx1ZXo0IGFuZCBibHVlejUgaXMgc2VsZWN0ZWQgaW4gRElTVFJPX0ZFQVRVUkVTJywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2JsdWV0b290aC9ibHVlei1oY2lkdW1wLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9vYnNvbGV0ZV9hdXRvbWFrZV9tYWNyb3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmVhYjU0YmJkMmI1OWEyZWQ0Mjc0ZWJiOTM5MGNmMTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWI3YzUyYjM3NTA4MTg4MzczOGNmMDQ5ZWNhYmMxMDNiOTdkMDk0YjE5YzY1NDRmYjI0MTI2NzkwNWQ4ODg4MSIKLVMgPSAiJHtXT1JLRElSfS9ibHVlei1oY2lkdW1wLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9ibHVldG9vdGguY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvYmx1ZXRvb3RoLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNWU5ZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9ibHVldG9vdGguY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTwhLS0gVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgc3BlY2lmaWVzIHRoZSByZXF1aXJlZCBzZWN1cml0eSBwb2xpY2llcwotICAgICBmb3IgQmx1ZXRvb3RoIGNvcmUgZGFlbW9uIHRvIHdvcmsuIC0tPgotCi08IURPQ1RZUEUgYnVzY29uZmlnIFBVQkxJQyAiLS8vZnJlZWRlc2t0b3AvL0RURCBELUJVUyBCdXMgQ29uZmlndXJhdGlvbiAxLjAvL0VOIgotICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zdGFuZGFyZHMvZGJ1cy8xLjAvYnVzY29uZmlnLmR0ZCI+Ci08YnVzY29uZmlnPgotCi0gIDwhLS0gLi4vc3lzdGVtLmNvbmYgaGF2ZSBkZW5pZWQgZXZlcnl0aGluZywgc28gd2UganVzdCBwdW5jaCBzb21lIGhvbGVzIC0tPgotCi0gIDxwb2xpY3kgY29udGV4dD0iZGVmYXVsdCI+Ci0gICAgPGFsbG93IG93bj0ib3JnLmJsdWV6Ii8+Ci0gICAgPGFsbG93IHNlbmRfZGVzdGluYXRpb249Im9yZy5ibHVleiIvPgotICAgIDxhbGxvdyBzZW5kX2ludGVyZmFjZT0ib3JnLmJsdWV6LkFnZW50Ii8+Ci0gIDwvcG9saWN5PgotCi08L2J1c2NvbmZpZz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvZml4LXVkZXYtcGF0aHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL2ZpeC11ZGV2LXBhdGhzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDg5OTE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvZml4LXVkZXYtcGF0aHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1BZGQgdWRldmRpci91ZGV2cnVsZXNkaXIgb3B0aW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLUluZGV4OiBibHVlei00LjEwMS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJsdWV6LTQuMTAxLm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBibHVlei00LjEwMS9NYWtlZmlsZS5hbQotQEAgLTM5NSw3ICszOTUsNyBAQCBFWFRSQV9ESVNUICs9IGF1ZGlvL2JsdWV0b290aC5jb25mCi0gaW5jbHVkZSBNYWtlZmlsZS50b29scwotIAotIGlmIERBVEFGSUxFUwotLXJ1bGVzZGlyID0gQFVERVZfRElSQC9ydWxlcy5kCi0rcnVsZXNkaXIgPSBAVURFVl9SVUxFU19ESVJACi0gCi0gdWRldl9maWxlcyA9Ci0gCi1JbmRleDogYmx1ZXotNC4xMDEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmx1ZXotNC4xMDEub3JpZy9jb25maWd1cmUuYWMKLSsrKyBibHVlei00LjEwMS9jb25maWd1cmUuYWMKLUBAIC02MSw0ICs2MSwxNCBAQCBpZiAodGVzdCAtbiAiJHtwYXRoX3N5c3RlbWR1bml0fSIpOyB0aGVuCi0gZmkKLSBBTV9DT05ESVRJT05BTChTWVNURU1ELCB0ZXN0IC1uICIke3BhdGhfc3lzdGVtZHVuaXR9IikKLSAKLStBQ19BUkdfV0lUSChbdWRldmRpcl0sCi0rICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtdWRldmRpcj1ESVJdLCBbdWRldiBkaXJlY3RvcnldKSwKLSsgICAgW10sIFt3aXRoX3VkZXZkaXI9L2xpYi91ZGV2L10pCi0rQUNfU1VCU1QoW1VERVZfRElSXSwgWyR3aXRoX3VkZXZkaXJdKQotKwotK0FDX0FSR19XSVRIKFt1ZGV2cnVsZXNkaXJdLAotKyAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXVkZXZydWxlc2Rpcj1ESVJdLCBbdWRldiBydWxlcyBkaXJlY3RvcnldKSwKLSsgICAgW10sIFt3aXRoX3VkZXZydWxlc2Rpcj0vbGliL3VkZXYvcnVsZXMuZF0pCi0rQUNfU1VCU1QoW1VERVZfUlVMRVNfRElSXSwgWyR3aXRoX3VkZXZydWxlc2Rpcl0pCi0rCi0gQUNfT1VUUFVUKE1ha2VmaWxlIGRvYy92ZXJzaW9uLnhtbCBzcmMvYmx1ZXRvb3RoZC44IHNyYy9ibHVldG9vdGguc2VydmljZSBibHVlei5wYykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvZml4X2VuY3J5cHRfY29sbGlzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9maXhfZW5jcnlwdF9jb2xsaXNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzM5MGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9maXhfZW5jcnlwdF9jb2xsaXNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotQXZvaWQgbmFtZXBzcGFjZSBjb2xsaXNpb24gd2l0aCBlbmNyeXB0IGZ1bmN0aW9uIGZyb20gbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBibHVlei00LjEwMS90ZXN0L2wydGVzdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmx1ZXotNC4xMDEub3JpZy90ZXN0L2wydGVzdC5jCi0rKysgYmx1ZXotNC4xMDEvdGVzdC9sMnRlc3QuYwotQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgY2hhciAqZmlsZW5hbWUgPSBOVUxMOwotIHN0YXRpYyBpbnQgcmZjbW9kZSA9IDA7Ci0gc3RhdGljIGludCBtYXN0ZXIgPSAwOwotIHN0YXRpYyBpbnQgYXV0aCA9IDA7Ci0tc3RhdGljIGludCBlbmNyeXB0ID0gMDsKLStzdGF0aWMgaW50IGVuY3J5cHRpb25fcmVxdWVzdCA9IDA7Ci0gc3RhdGljIGludCBzZWN1cmUgPSAwOwotIHN0YXRpYyBpbnQgc29ja3R5cGUgPSBTT0NLX1NFUVBBQ0tFVDsKLSBzdGF0aWMgaW50IGxpbmdlciA9IDA7Ci1AQCAtMzQwLDcgKzM0MCw3IEBAIHN0YXRpYyBpbnQgZG9fY29ubmVjdChjaGFyICpzdnIpCi0gCQlvcHQgfD0gTDJDQVBfTE1fTUFTVEVSOwotIAlpZiAoYXV0aCkKLSAJCW9wdCB8PSBMMkNBUF9MTV9BVVRIOwotLQlpZiAoZW5jcnlwdCkKLSsJaWYgKGVuY3J5cHRpb25fcmVxdWVzdCkKLSAJCW9wdCB8PSBMMkNBUF9MTV9FTkNSWVBUOwotIAlpZiAoc2VjdXJlKQotIAkJb3B0IHw9IEwyQ0FQX0xNX1NFQ1VSRTsKLUBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIHZvaWQgZG9fbGlzdGVuKHZvaWQgKCpoYW5kbGVyKShpbgotIAkJb3B0IHw9IEwyQ0FQX0xNX01BU1RFUjsKLSAJaWYgKGF1dGgpCi0gCQlvcHQgfD0gTDJDQVBfTE1fQVVUSDsKLS0JaWYgKGVuY3J5cHQpCi0rCWlmIChlbmNyeXB0aW9uX3JlcXVlc3QpCi0gCQlvcHQgfD0gTDJDQVBfTE1fRU5DUllQVDsKLSAJaWYgKHNlY3VyZSkKLSAJCW9wdCB8PSBMMkNBUF9MTV9TRUNVUkU7Ci1AQCAtMTQwNyw3ICsxNDA3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQlicmVhazsKLSAKLSAJCWNhc2UgJ0UnOgotLQkJCWVuY3J5cHQgPSAxOwotKwkJCWVuY3J5cHRpb25fcmVxdWVzdCA9IDE7Ci0gCQkJYnJlYWs7Ci0gCi0gCQljYXNlICdTJzoKLUluZGV4OiBibHVlei00LjEwMS90ZXN0L3JjdGVzdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmx1ZXotNC4xMDEub3JpZy90ZXN0L3JjdGVzdC5jCi0rKysgYmx1ZXotNC4xMDEvdGVzdC9yY3Rlc3QuYwotQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIGNoYXIgKmZpbGVuYW1lID0gTlVMTDsKLSAKLSBzdGF0aWMgaW50IG1hc3RlciA9IDA7Ci0gc3RhdGljIGludCBhdXRoID0gMDsKLS1zdGF0aWMgaW50IGVuY3J5cHQgPSAwOwotK3N0YXRpYyBpbnQgZW5jcnlwdGlvbl9yZXF1ZXN0ID0gMDsKLSBzdGF0aWMgaW50IHNlY3VyZSA9IDA7Ci0gc3RhdGljIGludCBzb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOwotIHN0YXRpYyBpbnQgbGluZ2VyID0gMDsKLUBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIGludCBkb19jb25uZWN0KGNvbnN0IGNoYXIgKnN2cikKLSAJCW9wdCB8PSBSRkNPTU1fTE1fTUFTVEVSOwotIAlpZiAoYXV0aCkKLSAJCW9wdCB8PSBSRkNPTU1fTE1fQVVUSDsKLS0JaWYgKGVuY3J5cHQpCi0rCWlmIChlbmNyeXB0aW9uX3JlcXVlc3QpCi0gCQlvcHQgfD0gUkZDT01NX0xNX0VOQ1JZUFQ7Ci0gCWlmIChzZWN1cmUpCi0gCQlvcHQgfD0gUkZDT01NX0xNX1NFQ1VSRTsKLUBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIHZvaWQgZG9fbGlzdGVuKHZvaWQgKCpoYW5kbGVyKShpbgotIAkJb3B0IHw9IFJGQ09NTV9MTV9NQVNURVI7Ci0gCWlmIChhdXRoKQotIAkJb3B0IHw9IFJGQ09NTV9MTV9BVVRIOwotLQlpZiAoZW5jcnlwdCkKLSsJaWYgKGVuY3J5cHRpb25fcmVxdWVzdCkKLSAJCW9wdCB8PSBSRkNPTU1fTE1fRU5DUllQVDsKLSAJaWYgKHNlY3VyZSkKLSAJCW9wdCB8PSBSRkNPTU1fTE1fU0VDVVJFOwotQEAgLTcwMSw3ICs3MDEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkJCWJyZWFrOwotIAotIAkJY2FzZSAnRSc6Ci0tCQkJZW5jcnlwdCA9IDE7Ci0rCQkJZW5jcnlwdGlvbl9yZXF1ZXN0ID0gMTsKLSAJCQlicmVhazsKLSAKLSAJCWNhc2UgJ1MnOgotSW5kZXg6IGJsdWV6LTQuMTAxL3NyYy90ZXh0ZmlsZS5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmx1ZXotNC4xMDEub3JpZy9zcmMvdGV4dGZpbGUuaAotKysrIGJsdWV6LTQuMTAxL3NyYy90ZXh0ZmlsZS5oCi1AQCAtMjQsNiArMjQsOCBAQAotICNpZm5kZWYgX19URVhURklMRV9ICi0gI2RlZmluZSBfX1RFWFRGSUxFX0gKLSAKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0gaW50IGNyZWF0ZV9kaXJzKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBtb2RlX3QgbW9kZSk7Ci0gaW50IGNyZWF0ZV9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBtb2RlX3QgbW9kZSk7Ci0gaW50IGNyZWF0ZV9uYW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKnBhdGgsCi1JbmRleDogYmx1ZXotNC4xMDEvdGVzdC9hdHRlc3QuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJsdWV6LTQuMTAxLm9yaWcvdGVzdC9hdHRlc3QuYwotKysrIGJsdWV6LTQuMTAxL3Rlc3QvYXR0ZXN0LmMKLUBAIC0zNCw2ICszNCw3IEBACi0gI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSsjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgotIAotICNpbmNsdWRlIDxibHVldG9vdGgvYmx1ZXRvb3RoLmg+Ci0gI2luY2x1ZGUgPGJsdWV0b290aC9yZmNvbW0uaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvaW5zdGFsbC10ZXN0LXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvaW5zdGFsbC10ZXN0LXNjcmlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNmN2Q5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL2luc3RhbGwtdGVzdC1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotSW5zdGFsbCB0aGUgYmx1ZXoncyB0ZXN0IHNjcmlwdHMKLQotU2lnbmVkLW9mZi1ieTogWmhvbmcgSG9uZ2JvIDxob25nYm8uemhvbmdAd2luZHJpdmVyLmNvbT4KLWRpZmYgLU51cmQgYmx1ZXotNC4xMDEub3JpZy9NYWtlZmlsZS50b29scyBibHVlei00LjEwMS9NYWtlZmlsZS50b29scwotLS0tIGJsdWV6LTQuMTAxLm9yaWcvTWFrZWZpbGUudG9vbHMJMjAxMy0xMS0xOSAxNTo0OTowNy42ODg4MzgwMDAgKzA4MDAKLSsrKyBibHVlei00LjEwMS9NYWtlZmlsZS50b29scwkyMDEzLTExLTE5IDE1OjUwOjA5LjI1NjgzNzg0OCArMDgwMAotQEAgLTIyNyw2ICsyMjcsMTcgQEAKLSAJCXRlc3Qvc2VydmljZS1zcHAueG1sIHRlc3Qvc2VydmljZS1vcHAueG1sIHRlc3Qvc2VydmljZS1mdHAueG1sIFwKLSAJCXRlc3Qvc2ltcGxlLXBsYXllciB0ZXN0L3Rlc3QtbmFwCi0gCi0rYmx1ZXo0X3Rlc3RkaXIgPSAkKGxpYmRpcikvYmx1ZXo0L3Rlc3QvCi0rZGlzdF9ibHVlejRfdGVzdF9TQ1JJUFRTID0gdGVzdC9zYXAtY2xpZW50IHRlc3QvaHNwbGF5IHRlc3QvaHNtaWNybyBcCi0rCQl0ZXN0L21vbml0b3ItYmx1ZXRvb3RoIHRlc3QvbGlzdC1kZXZpY2VzIFwKLSsJCXRlc3QvdGVzdC1kaXNjb3ZlcnkgdGVzdC90ZXN0LW1hbmFnZXIgdGVzdC90ZXN0LWFkYXB0ZXIgXAotKwkJdGVzdC90ZXN0LWRldmljZSB0ZXN0L3Rlc3Qtc2VydmljZSB0ZXN0L3Rlc3Qtc2VyaWFsIFwKLSsJCXRlc3QvdGVzdC10ZWxlcGhvbnkgdGVzdC90ZXN0LW5ldHdvcmsgdGVzdC9zaW1wbGUtYWdlbnQgXAotKwkJdGVzdC9zaW1wbGUtc2VydmljZSB0ZXN0L3NpbXBsZS1lbmRwb2ludCB0ZXN0L3Rlc3QtYXVkaW8gXAotKwkJdGVzdC90ZXN0LWlucHV0IHRlc3QvdGVzdC1zYXAtc2VydmVyIHRlc3QvdGVzdC1vb2IgXAotKwkJdGVzdC90ZXN0LWF0dHJpYiB0ZXN0L3Rlc3QtcHJveGltaXR5IHRlc3QvdGVzdC10aGVybW9tZXRlciBcCi0rCQl0ZXN0L3Rlc3Qtc2VyaWFsLXByb3h5IHRlc3QvdGVzdC1oZWFsdGggdGVzdC90ZXN0LWhlYWx0aC1zaW5rIFwKLSsJCXRlc3Qvc2ltcGxlLXBsYXllciB0ZXN0L3Rlc3QtbmFwCi0gaWYgSElERAotIGJpbl9QUk9HUkFNUyArPSBjb21wYXQvaGlkZAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9uZXR3b3JrLWZpeC1uZXR3b3JrLUNvbm5lY3QtbWV0aG9kLXBhcmFtZXRlcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL25ldHdvcmstZml4LW5ldHdvcmstQ29ubmVjdC1tZXRob2QtcGFyYW1ldGVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdmOTE5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL25ldHdvcmstZml4LW5ldHdvcmstQ29ubmVjdC1tZXRob2QtcGFyYW1ldGVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFBldGVyIEEuIEJpZ290IDxwYWJAcGFiaWdvdC5jb20+Ci0KLUZyb20gNTcxNzBiMzExZjE0NjgzMzBmNGE5OTYxZGMwYjNhYzQ1Zjk3YmMxMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5jby51az4KLURhdGU6IFNhdCwgMzAgSnVuIDIwMTIgMDA6Mzk6MDUgLTAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0d29yazogZml4IG5ldHdvcmsgQ29ubmVjdCgpIG1ldGhvZCBwYXJhbWV0ZXJzCi0KLS0tLQotIG5ldHdvcmsvY29ubmVjdGlvbi5jIHwgICAgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29yay9jb25uZWN0aW9uLmMgYi9uZXR3b3JrL2Nvbm5lY3Rpb24uYwotaW5kZXggNTQ0ZWMzYS4uNTk0MjNhOSAxMDA2NDQKLS0tLSBhL25ldHdvcmsvY29ubmVjdGlvbi5jCi0rKysgYi9uZXR3b3JrL2Nvbm5lY3Rpb24uYwotQEAgLTU1NCw3ICs1NTQsOSBAQCBzdGF0aWMgdm9pZCBwYXRoX3VucmVnaXN0ZXIodm9pZCAqZGF0YSkKLSAKLSBzdGF0aWMgY29uc3QgR0RCdXNNZXRob2RUYWJsZSBjb25uZWN0aW9uX21ldGhvZHNbXSA9IHsKLSAJeyBHREJVU19BU1lOQ19NRVRIT0QoIkNvbm5lY3QiLAotLQkJCU5VTEwsIE5VTEwsIGNvbm5lY3Rpb25fY29ubmVjdCkgfSwKLSsJCQkJR0RCVVNfQVJHUyh7InV1aWQiLCAicyJ9KSwKLSsJCQkJR0RCVVNfQVJHUyh7ImludGVyZmFjZSIsICJzIn0pLAotKwkJCQljb25uZWN0aW9uX2Nvbm5lY3QpIH0sCi0gCXsgR0RCVVNfTUVUSE9EKCJEaXNjb25uZWN0IiwKLSAJCQlOVUxMLCBOVUxMLCBjb25uZWN0aW9uX2Rpc2Nvbm5lY3QpIH0sCi0gCXsgR0RCVVNfTUVUSE9EKCJHZXRQcm9wZXJ0aWVzIiwKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LTQuMTAxL29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDY4ZjI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgotZGlmZiAtTnVyZCBibHVlei00LjEwMS9jb25maWd1cmUuYWMgYmx1ZXotNC4xMDEvY29uZmlndXJlLmFjCi0tLS0gYmx1ZXotNC4xMDEvY29uZmlndXJlLmFjCTIwMTItMDYtMjIgMTk6MzY6NDkuMDAwMDAwMDAwICswMzAwCi0rKysgYmx1ZXotNC4xMDEvY29uZmlndXJlLmFjCTIwMTMtMDEtMDcgMDY6MTM6MTguMzg1ODg4OTY2ICswMjAwCi1AQCAtMiw3ICsyLDcgQEAKLSBBQ19JTklUKGJsdWV6LCA0LjEwMSkKLQotIEFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gc3ViZGlyLW9iamVjdHMgY29sb3ItdGVzdHNdKQotLUFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCi0rQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0KLSBtNF9pZmRlZihbQU1fU0lMRU5UX1JVTEVTXSwgW0FNX1NJTEVOVF9SVUxFUyhbeWVzXSldKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9zYmNfbW14LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC00LjEwMS9zYmNfbW14LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGZhYjQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9ibHVlejQtNC4xMDEvc2JjX21teC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLW9uIHg4NiBhbmQgeDg2XzY0IGdjYyA0LjcgY29tcGxhaW5zCi0KLXNiYy9zYmNfcHJpbWl0aXZlc19tbXguYzogSW4gZnVuY3Rpb24gJ3NiY19jYWxjX3NjYWxlZmFjdG9yc19tbXgnOgotc2JjL3NiY19wcmltaXRpdmVzX21teC5jOjI5NDo0OiB3YXJuaW5nOiBhc20gb3BlcmFuZCAyIHByb2JhYmx5IGRvZXNuJ3QgbWF0Y2ggY29uc3RyYWludHMgW2VuYWJsZWQgYnkgZGVmYXVsdF0KLXNiYy9zYmNfcHJpbWl0aXZlc19tbXguYzoyOTQ6NDogZXJyb3I6IGltcG9zc2libGUgY29uc3RyYWludCBpbiAnYXNtJwotCi1UaGlzIHBhdGNoIGlzIHRha2VuIGZyb20gaHR0cHM6Ly9idWdzLmxhdW5jaHBhZC5uZXQvdWJ1bnR1Lytzb3VyY2UvYmx1ZXovK2J1Zy85MTE4NzEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogYmx1ZXotNC45OC9zYmMvc2JjX3ByaW1pdGl2ZXNfbW14LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBibHVlei00Ljk4Lm9yaWcvc2JjL3NiY19wcmltaXRpdmVzX21teC5jCTIwMTEtMTItMjEgMTQ6NTM6NTQuMDAwMDAwMDAwIC0wODAwCi0rKysgYmx1ZXotNC45OC9zYmMvc2JjX3ByaW1pdGl2ZXNfbW14LmMJMjAxMi0wMi0yNCAxMDowNzowMy40MjIwNzM4MDAgLTA4MDAKLUBAIC0zMTgsNyArMzE4LDcgQEAKLSAJCQkJIm1vdmwgICAgICAgICAgJWswLCA0KCUzKVxuIgotIAkJCTogIityIiAoYmxrKQotIAkJCTogInIiICgmc2Jfc2FtcGxlX2ZbMF1bY2hdW3NiXSksCi0tCQkJCSJpIiAoKGNoYXIgKikgJnNiX3NhbXBsZV9mWzFdWzBdWzBdIC0KLSsJCQkJInIiICgoY2hhciAqKSAmc2Jfc2FtcGxlX2ZbMV1bMF1bMF0gLQotIAkJCQkJKGNoYXIgKikgJnNiX3NhbXBsZV9mWzBdWzBdWzBdKSwKLSAJCQkJInIiICgmc2NhbGVfZmFjdG9yW2NoXVtzYl0pLAotIAkJCQkiciIgKCZjb25zdHMpLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI0MGNjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggQmx1ZXRvb3RoIFN0YWNrIFVzZXJsYW5kIFY0IgotREVTQ1JJUFRJT04gPSAiTGludXggQmx1ZXRvb3RoIHN0YWNrIFY0IHVzZXJsYW5kIGNvbXBvbmVudHMuICBUaGVzZSBpbmNsdWRlIGEgc3lzdGVtIGNvbmZpZ3VyYXRpb25zLCBkYWVtb25zLCB0b29scyBhbmQgc3lzdGVtIGxpYnJhcmllcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJsdWV6Lm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWZiNTA0YjY3YzUwMzMxZmM3ODczNGZlZDkwZmIwZTA5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNDttZDU9OWJjNTRiOTNjZDdlMTdiZjAzZjUyNTEzZjM5ZjkyNmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2JjL3NiYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjU7bWQ1PTFhNDA3ODFlZDMwZDUwZDg2MzkzMjNhMTg0YWViMTkxIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotCi1ERVBFTkRTID0gInVkZXYgbGlidXNiIGRidXMtZ2xpYiBnbGliLTIuMCBsaWJjaGVjayByZWFkbGluZSBsaWJzbmRmaWxlMSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICJibHVlei1oY2lkdW1wIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBwaWUgc3lzdGVtZCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS1lbmFibGUtYWxzYSwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiIKLVBBQ0tBR0VDT05GSUdbcGllXSA9ICItLWVuYWJsZS1waWUsLS1kaXNhYmxlLXBpZSwiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGgtc3lzdGVtZHVuaXRkaXI9IgotCi1BU05FRURFRCA9ICIiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9ibHVldG9vdGgvYmx1ZXotJHtQVn0udGFyLmd6IgotUyA9ICIke1dPUktESVJ9L2JsdWV6LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtZ3N0cmVhbWVyIFwKLSAgICAtLWVuYWJsZS11c2IgXAotICAgIC0tZW5hYmxlLXRvb2xzIFwKLSAgICAtLWVuYWJsZS1iY2NtZCBcCi0gICAgLS1lbmFibGUtaGlkMmhjaSBcCi0gICAgLS1lbmFibGUtZGZ1dG9vbCBcCi0gICAgLS1kaXNhYmxlLWhpZGQgXAotICAgIC0tZGlzYWJsZS1wYW5kIFwKLSAgICAtLWRpc2FibGUtZHVuZCBcCi0gICAgLS1kaXNhYmxlLWN1cHMgXAotICAgIC0tZW5hYmxlLXRlc3QgXAotICAgIC0tZW5hYmxlLWRhdGFmaWxlcyBcCi0gICAgLS13aXRoLXVkZXZkaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIFwKLSAgICAtLXdpdGgtdWRldnJ1bGVzZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kIFwKLSIKLQotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0XzQuMTAxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2JsdWV6NF80LjEwMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZkMTZjMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXovYmx1ZXo0XzQuMTAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotcmVxdWlyZSBibHVlejQuaW5jCi0KLVBOQkxBQ0tMSVNUW2JsdWV6NF0gPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXo1JywgJ2JsdWV6NSBjb25mbGljdHMgd2l0aCBibHVlejQgYW5kIGJsdWV6NSBpcyBzZWxlY3RlZCBpbiBESVNUUk9fRkVBVFVSRVMnLCAnJywgZCl9IgotCi1QUiA9ICJyMTEiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9ibHVldG9vdGguY29uZiBcCi0gICAgICAgICAgICBmaWxlOi8vc2JjX21teC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZml4LXVkZXYtcGF0aHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbmV0d29yay1maXgtbmV0d29yay1Db25uZWN0LW1ldGhvZC1wYXJhbWV0ZXJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsLXRlc3Qtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXhfZW5jcnlwdF9jb2xsaXNpb24ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmI0MmNiNzAzOGMzODBlYjBlMmZhMjA4OTg3Yzk2YWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTk3Mzg0MTBhZGU5ZjBlNjFhMTNjMGY3N2Q5YWFmZmFhZmU0OWJhOTQxODEwN2U0YWQ3NWZlNTI4NDZmNzQ4NyIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJibHVlejUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2F1ZGlvL2F1ZGlvLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2JsdWV0b290aC8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9uZXR3b3JrL25ldHdvcmsuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2lucHV0L2lucHV0LmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2JsdWV0b290aC8KLSAgICAjIGF0X2NvbnNvbGUgZG9lc24ndCByZWFsbHkgd29yayB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIE9FLCBzbyBwdW5jaCBzb21lIG1vcmUgaG9sZXMgc28gcGVvcGxlIGNhbiBhY3R1YWxseSB1c2UgQlQKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ibHVldG9vdGguY29uZiAke0R9LyR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kLwotfQotCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiYmx1ZXotaGNpZHVtcCIKLVJERVBFTkRTXyR7UE59LXRlc3R0b29scyArPSAicHl0aG9uIHB5dGhvbi1kYnVzIHB5dGhvbi1weWdvYmplY3QiCi0KLUFMTE9XX0VNUFRZX2xpYmFzb3VuZC1tb2R1bGUtYmx1ZXogPSAiMSIKLVBBQ0tBR0VTID0rICJsaWJhc291bmQtbW9kdWxlLWJsdWV6ICR7UE59LXRlc3R0b29scyIKLQotRklMRVNfbGliYXNvdW5kLW1vZHVsZS1ibHVleiA9ICIke2xpYmRpcn0vYWxzYS1saWIvbGliKi5zbyAke2RhdGFkaXJ9L2Fsc2EiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zICR7bGliZGlyfS9ibHVldG9vdGgvcGx1Z2lucy8qLnNvICR7YmFzZV9saWJkaXJ9L3VkZXYvICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8gJHtzeXN0ZW1kX3VuaXRkaXJ9LyAke2RhdGFkaXJ9L2RidXMtMSIKLUZJTEVTXyR7UE59LWRldiArPSAiXAotICAgICR7bGliZGlyfS9ibHVldG9vdGgvcGx1Z2lucy8qLmxhIFwKLSAgICAke2xpYmRpcn0vYWxzYS1saWIvKi5sYSBcCi0iCi0KLUZJTEVTXyR7UE59LXRlc3R0b29scyA9ICIke2xpYmRpcn0vYmx1ZXo0L3Rlc3QvKiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICJcCi0gICAgJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9LyovLmRlYnVnIFwKLSAgICAqL3VkZXYvLmRlYnVnIFwKLSIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImJsdWV0b290aC5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2dzdC1wbHVnaW4tYmx1ZXRvb3RoXzQuMTAxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6L2dzdC1wbHVnaW4tYmx1ZXRvb3RoXzQuMTAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjJhZWM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlei9nc3QtcGx1Z2luLWJsdWV0b290aF80LjEwMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLXJlcXVpcmUgYmx1ZXo0LmluYwotcmVxdWlyZSByZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCi0KLVBOQkxBQ0tMSVNUW2dzdC1wbHVnaW4tYmx1ZXRvb3RoXSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVlejUnLCAnYmx1ZXo1IGNvbmZsaWN0cyB3aXRoIGJsdWV6NCBhbmQgYmx1ZXo1IGlzIHNlbGVjdGVkIGluIERJU1RST19GRUFUVVJFUycsICcnLCBkKX0iCi0KLVBSID0gInIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmI0MmNiNzAzOGMzODBlYjBlMmZhMjA4OTg3Yzk2YWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTk3Mzg0MTBhZGU5ZjBlNjFhMTNjMGY3N2Q5YWFmZmFhZmU0OWJhOTQxODEwN2U0YWQ3NWZlNTI4NDZmNzQ4NyIKLQotREVQRU5EUyA9ICJibHVlejQgZ3N0LXBsdWdpbnMtYmFzZSIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1nc3RyZWFtZXIgXAotIgotCi0jIGNsZWFuIHVud2FudGVkIGZpbGVzCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtcmYgJHtEfSR7YmluZGlyfQotICAgIHJtIC1yZiAke0R9JHtzYmluZGlyfQotICAgIHJtIC1mICAke0R9JHtsaWJkaXJ9L2xpYioKLSAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBybSAtcmYgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vYmx1ZXRvb3RoCi0gICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0gICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vYWxzYS1saWIKLSAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0KLSAgICBybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0KLSAgICBybSAtcmYgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0KLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0wLjEwL2xpYiouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIlwKLSAgICAke2xpYmRpcn0vZ3N0cmVhbWVyLTAuMTAvKi5sYSBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiXAotICAgICR7bGliZGlyfS8qLy5kZWJ1ZyBcCi0iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9lbGwvZWxsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9lbGwvZWxsX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1OWY1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvZWxsL2VsbF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZICA9ICJFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiRUxMIGlzIGEgREJVUyBsaWJyYXJ5IHdoaWNoIHByb3ZpZGVzIERCVVMgYmluZGluZ3MuIgotTElDRU5TRSAgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKLVNFQ1RJT04gPSAibGlicyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiMzk5MDk5OTQ2YWJhZWIyZjM3MThhMDY2N2NjMTE0MzZhN2MwYmUxNCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saWJzL2VsbC9lbGwuZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgbWtkaXIgJHtTfS9idWlsZC1hdXgKLX0KLQotREVQRU5EUyA9ICJkYnVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dub2tpaS9nbm9raWlfMC42LjMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dub2tpaS9nbm9raWlfMC42LjMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjA5OGQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nbm9raWkvZ25va2lpXzAuNi4zMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiQ2VsbHBob25lIHRvb2xzIGFuZCBkcml2ZXIgc29mdHdhcmUiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5nbm9raWkub3JnL2Rvd25sb2FkL2dub2tpaS9nbm9raWktJHtQVn0udGFyLmJ6MiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCi1YMTFERVBFTkRTID0gIiBsaWJ4cG0gZ3RrKyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbYmx1ZXo0XSA9ICItLWVuYWJsZS1ibHVldG9vdGgsLS1kaXNhYmxlLWJsdWV0b290aCxibHVlejQiCi1QQUNLQUdFQ09ORklHW2xpYmljYWxdID0gIi0tZW5hYmxlLWxpYmljYWwsLS1kaXNhYmxlLWxpYmljYWwsbGliaWNhbCIKLVBBQ0tBR0VDT05GSUdbcGNzYy1saXRlXSA9ICItLWVuYWJsZS1saWJwY3NjbGl0ZSwtLWRpc2FibGUtbGlicGNzY2xpdGUscGNzYy1saXRlIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lLC0td2l0aG91dC1yZWFkbGluZSxyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbdXNiXSA9ICItLWVuYWJsZS1saWJ1c2IsLS1kaXNhYmxlLWxpYnVzYix2aXJ0dWFsL2xpYnVzYjAiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLC0td2l0aG91dC14LCR7WDExREVQRU5EU30iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyArPSAibGliZ25va2lpIGxpYmdub2tpaS1kZXYiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc21zZCIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7c2JpbmRpcn0iCi1GSUxFU19saWJnbm9raWktZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYiouc28gJHtsaWJkaXJ9LyoubGEgXAotICAgICR7bGliZGlyfS8qLmEgJHtsaWJkaXJ9LyoubyAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAvbGliLyouYSAvbGliLyoubyAke2RhdGFkaXJ9L2FjbG9jYWwgXAotIgotRklMRVNfJHtQTn0tZGV2ID0gIiIKLUZJTEVTX2xpYmdub2tpaSA9ICIke2xpYmRpcn0vbGliZ25va2lpLnNvLioiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkOTYyN2Y0YTExNTJkM2VhNzgwNmRmNDUzMjg1MGQ1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjVhMDgzYjA1YzFhNjZhMzQwMmNhNWNkODAwODRlMTRjMmMwNjMyYzk5MWJiNTNiMDNjNzhlOWFkYjAyNTAxIgotCi1QTkJMQUNLTElTVFtnbm9raWldID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjYyLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcnNzaS9pcnNzaV8xLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcnNzaS9pcnNzaV8xLjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQxZjVkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJzc2kvaXJzc2lfMS4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIm5jdXJzZXMgSVJDIGNsaWVudCIKLURFU0NSSVBUSU9OID0gIklyc3NpIGlzIGFuIG5jdXJzZXMgSVJDIGNsaWVudCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWZkYzExMTMzMDYxNjdkNmVhMjU2MTQwNGNlMDJmOCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBuY3Vyc2VzIG9wZW5zc2wiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImY2YmVkMTk2Y2VmNjNlYTA4OWY1Y2NlMDg5Nzg0NDQ1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0MjhjNTFhM2YzNTk4ZmZhZWY0MzhjMzUxYThkNjA5Y2YxMGRiMzRmMjQzNWJkY2I4NDQ1NjIyNmMzODNjY2YiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwYjA0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJzc2kvaXJzc2lfMS4wLjQuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJuY3Vyc2VzIElSQyBjbGllbnQiCitERVNDUklQVElPTiA9ICJJcnNzaSBpcyBhbiBuY3Vyc2VzIElSQyBjbGllbnQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVmZGMxMTEzMzA2MTY3ZDZlYTI1NjE0MDRjZTAyZjgiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbmN1cnNlcyBvcGVuc3NsIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NmQ0YWMyYTdhYjQ3MmU1ZGM4MDBlNWQ3YmQ5YTg3OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODVjMDdkYmFmZTE3ODIxM2VjY2RjNjlmNWY4ZjBhYzAyNGRlYTAxYzY3MjQ0NjY4ZjkxZWMxYzA2Yjk4NmNhIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdGV4dHVpIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXByb3h5IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWJvdCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPW5vIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtdHJ1ZS1jb2xvciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvQ1ZFLTIwMTctMTE0NjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L0NWRS0yMDE3LTExNDYyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiODJmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L0NWRS0yMDE3LTExNDYyLnBhdGNoCkBAIC0wLDAgKzEsNDE5IEBACitGcm9tIDU2ZjdiMWJjOTVhMmEzZWViNDIwZTA2OWU3NjU1ZmIxODFhZGU1Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHcmVnIEh1ZHNvbiA8Z2h1ZHNvbkBtaXQuZWR1PgorRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAxMzowMjo0NiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBQcmVzZXJ2ZSBHU1MgY29udGV4dCBvbiBpbml0L2FjY2VwdCBmYWlsdXJlCisKK0FmdGVyIGdzc19pbml0X3NlY19jb250ZXh0KCkgb3IgZ3NzX2FjY2VwdF9zZWNfY29udGV4dCgpIGhhcyBjcmVhdGVkIGEKK2NvbnRleHQsIGRvbid0IGRlbGV0ZSB0aGUgbWVjaGdsdWUgY29udGV4dCBvbiBmYWlsdXJlcyBmcm9tIHN1YnNlcXVlbnQKK2NhbGxzLCBldmVuIGlmIHRoZSBtZWNoYW5pc20gZGVsZXRlcyB0aGUgbWVjaC1zcGVjaWZpYyBjb250ZXh0ICh3aGljaAoraXMgYWxsb3dlZCBieSBSRkMgMjc0NCBidXQgbm90IHByZWZlcnJlZCkuICBDaGVjayBmb3IgdW5pb24gY29udGV4dHMKK3dpdGggbm8gbWVjaGFuaXNtIGNvbnRleHQgaW4gZWFjaCBHU1MgZnVuY3Rpb24gd2hpY2ggYWNjZXB0cyBhCitnc3NfY3R4X2lkX3QuCisKK0NWRS0yMDE3LTExNDYyOgorCitSRkMgMjc0NCBwZXJtaXRzIGEgR1NTLUFQSSBpbXBsZW1lbnRhdGlvbiB0byBkZWxldGUgYW4gZXhpc3RpbmcKK3NlY3VyaXR5IGNvbnRleHQgb24gYSBzZWNvbmQgb3Igc3Vic2VxdWVudCBjYWxsIHRvCitnc3NfaW5pdF9zZWNfY29udGV4dCgpIG9yIGdzc19hY2NlcHRfc2VjX2NvbnRleHQoKSBpZiB0aGUgY2FsbCByZXN1bHRzCitpbiBhbiBlcnJvci4gIFRoaXMgQVBJIGJlaGF2aW9yIGhhcyBiZWVuIGZvdW5kIHRvIGJlIGRhbmdlcm91cywKK2xlYWRpbmcgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIG1lbW9yeSBlcnJvcnMgaW4gc29tZSBjYWxsZXJzLiAgRm9yCitzYWZldHksIEdTUy1BUEkgaW1wbGVtZW50YXRpb25zIHNob3VsZCBpbnN0ZWFkIHByZXNlcnZlIGV4aXN0aW5nCitzZWN1cml0eSBjb250ZXh0cyBvbiBlcnJvciB1bnRpbCB0aGUgY2FsbGVyIGRlbGV0ZXMgdGhlbS4KKworQWxsIHZlcnNpb25zIG9mIE1JVCBrcmI1IHByaW9yIHRvIHRoaXMgY2hhbmdlIG1heSBkZWxldGUgYWNjZXB0b3IKK2NvbnRleHRzIG9uIGVycm9yLiAgVmVyc2lvbnMgMS4xMy40IHRocm91Z2ggMS4xMy43LCAxLjE0LjEgdGhyb3VnaAorMS4xNC41LCBhbmQgMS4xNSB0aHJvdWdoIDEuMTUuMSBtYXkgYWxzbyBkZWxldGUgaW5pdGlhdG9yIGNvbnRleHRzIG9uCitlcnJvci4KKwordGlja2V0OiA4NTk4IChuZXcpCit0YXJnZXRfdmVyc2lvbjogMS4xNS1uZXh0Cit0YXJnZXRfdmVyc2lvbjogMS4xNC1uZXh0Cit0YWdzOiBwdWxsdXAKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xMTQ2MgorCitTaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfYWNjZXB0X3NlY19jb250ZXh0LmMgIHwgMjIgKysrKysrKysrKysrKysrLS0tLS0tLQorIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29tcGxldGVfYXV0aF90b2tlbi5jIHwgIDIgKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbnRleHRfdGltZS5jICAgICAgICB8ICAyICsrCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19kZWxldGVfc2VjX2NvbnRleHQuYyAgfCAxNCArKysrKysrKy0tLS0tLQorIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZXhwX3NlY19jb250ZXh0LmMgICAgIHwgIDIgKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2luaXRfc2VjX2NvbnRleHQuYyAgICB8IDE5ICsrKysrKysrKysrLS0tLS0tLS0KKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2lucV9jb250ZXh0LmMgICAgICAgICB8ICAyICsrCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcmYuYyAgICAgICAgICAgICAgICAgfCAgMiArKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJvY2Vzc19jb250ZXh0LmMgICAgIHwgIDIgKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NlYWwuYyAgICAgICAgICAgICAgICB8ICA0ICsrKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NpZ24uYyAgICAgICAgICAgICAgICB8ICAyICsrCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bnNlYWwuYyAgICAgICAgICAgICAgfCAgMiArKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2FlYWQuYyAgICAgICAgIHwgIDIgKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9pb3YuYyAgICAgICAgICB8ICA0ICsrKysKKyBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ZlcmlmeS5jICAgICAgICAgICAgICB8ICAyICsrCisgc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2FlYWQuYyAgICAgICAgICAgfCAgMiArKworIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9pb3YuYyAgICAgICAgICAgIHwgIDggKysrKysrKysKKyAxNyBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfYWNjZXB0X3NlY19jb250ZXh0LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2FjY2VwdF9zZWNfY29udGV4dC5jCitpbmRleCBkZGFmODc0Li5mMjhlMmIxIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19hY2NlcHRfc2VjX2NvbnRleHQuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19hY2NlcHRfc2VjX2NvbnRleHQuYworQEAgLTIxNiw2ICsyMTYsOCBAQCBnc3NfY3JlZF9pZF90ICoJCWRfY3JlZDsKKyAgICAgfSBlbHNlIHsKKyAJdW5pb25fY3R4X2lkID0gKGdzc191bmlvbl9jdHhfaWRfdCkqY29udGV4dF9oYW5kbGU7CisgCXNlbGVjdGVkX21lY2ggPSB1bmlvbl9jdHhfaWQtPm1lY2hfdHlwZTsKKysJaWYgKHVuaW9uX2N0eF9pZC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCSAgICByZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICB9CisgCisgICAgIC8qIE5vdyBjcmVhdGUgYSBuZXcgY29udGV4dCBpZiB3ZSBkaWRuJ3QgZ2V0IG9uZS4gKi8KK0BAIC0yMzQsOSArMjM2LDYgQEAgZ3NzX2NyZWRfaWRfdCAqCQlkX2NyZWQ7CisgCSAgICBmcmVlKHVuaW9uX2N0eF9pZCk7CisgCSAgICByZXR1cm4gKHN0YXR1cyk7CisgCX0KKy0KKy0JLyogc2V0IHRoZSBuZXcgY29udGV4dCBoYW5kbGUgdG8gY2FsbGVyJ3MgZGF0YSAqLworLQkqY29udGV4dF9oYW5kbGUgPSAoZ3NzX2N0eF9pZF90KXVuaW9uX2N0eF9pZDsKKyAgICAgfQorIAorICAgICAvKgorQEAgLTI3Nyw4ICsyNzYsMTAgQEAgZ3NzX2NyZWRfaWRfdCAqCQlkX2NyZWQ7CisgCQkJCQlkX2NyZWQgPyAmdG1wX2RfY3JlZCA6IE5VTEwpOworIAorIAkgICAgLyogSWYgdGhlcmUncyBtb3JlIHdvcmsgdG8gZG8sIGtlZXAgZ29pbmcuLi4gKi8KKy0JICAgIGlmIChzdGF0dXMgPT0gR1NTX1NfQ09OVElOVUVfTkVFREVEKQorKwkgICAgaWYgKHN0YXR1cyA9PSBHU1NfU19DT05USU5VRV9ORUVERUQpIHsKKysJCSpjb250ZXh0X2hhbmRsZSA9IChnc3NfY3R4X2lkX3QpdW5pb25fY3R4X2lkOworIAkJcmV0dXJuIEdTU19TX0NPTlRJTlVFX05FRURFRDsKKysJICAgIH0KKyAKKyAJICAgIC8qIGlmIHRoZSBjYWxsIGZhaWxlZCwgcmV0dXJuIHdpdGggZmFpbHVyZSAqLworIAkgICAgaWYgKHN0YXR1cyAhPSBHU1NfU19DT01QTEVURSkgeworQEAgLTM2NCwxNCArMzY1LDIyIEBAIGdzc19jcmVkX2lkX3QgKgkJZF9jcmVkOworIAkJKm1lY2hfdHlwZSA9IGdzc2ludF9nZXRfcHVibGljX29pZChhY3R1YWxfbWVjaCk7CisgCSAgICBpZiAocmV0X2ZsYWdzICE9IE5VTEwpCisgCQkqcmV0X2ZsYWdzID0gdGVtcF9yZXRfZmxhZ3M7CistCSAgICByZXR1cm4JKHN0YXR1cyk7CisrCSAgICAqY29udGV4dF9oYW5kbGUgPSAoZ3NzX2N0eF9pZF90KXVuaW9uX2N0eF9pZDsKKysJICAgIHJldHVybiBHU1NfU19DT01QTEVURTsKKyAgICAgfSBlbHNlIHsKKyAKKyAJc3RhdHVzID0gR1NTX1NfQkFEX01FQ0g7CisgICAgIH0KKyAKKyBlcnJvcl9vdXQ6CistICAgIGlmICh1bmlvbl9jdHhfaWQpIHsKKysJLyoKKysJICogUkZDIDI3NDQgNS4xIHJlcXVpcmVzIHRoYXQgd2Ugbm90IGNyZWF0ZSBhIGNvbnRleHQgb24gYSBmYWlsZWQgZmlyc3QKKysJICogY2FsbCB0byBhY2NlcHQsIGFuZCByZWNvbW1lbmRzIHRoYXQgb24gYSBmYWlsZWQgc3Vic2VxdWVudCBjYWxsIHdlCisrCSAqIG1ha2UgdGhlIGNhbGxlciByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBnc3NfZGVsZXRlX3NlY19jb250ZXh0LgorKwkgKiBFdmVuIGlmIHRoZSBtZWNoIGRlbGV0ZWQgaXRzIGNvbnRleHQsIGtlZXAgdGhlIHVuaW9uIGNvbnRleHQgYXJvdW5kCisrCSAqIGZvciB0aGUgY2FsbGVyIHRvIGRlbGV0ZS4KKysJICovCisrICAgIGlmICh1bmlvbl9jdHhfaWQgJiYgKmNvbnRleHRfaGFuZGxlID09IEdTU19DX05PX0NPTlRFWFQpIHsKKyAJaWYgKHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlKSB7CisgCSAgICBpZiAodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUtPmVsZW1lbnRzKQorIAkJZnJlZSh1bmlvbl9jdHhfaWQtPm1lY2hfdHlwZS0+ZWxlbWVudHMpOworQEAgLTM4NCw3ICszOTMsNiBAQCBlcnJvcl9vdXQ6CisgCQkJCQkgR1NTX0NfTk9fQlVGRkVSKTsKKyAJfQorIAlmcmVlKHVuaW9uX2N0eF9pZCk7CistCSpjb250ZXh0X2hhbmRsZSA9IEdTU19DX05PX0NPTlRFWFQ7CisgICAgIH0KKyAKKyAgICAgaWYgKHNyY19uYW1lKQorZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29tcGxldGVfYXV0aF90b2tlbi5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb21wbGV0ZV9hdXRoX3Rva2VuLmMKK2luZGV4IDkxODE1NTEuLjRiY2I0N2UgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbXBsZXRlX2F1dGhfdG9rZW4uYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb21wbGV0ZV9hdXRoX3Rva2VuLmMKK0BAIC01Miw2ICs1Miw4IEBAIGdzc19jb21wbGV0ZV9hdXRoX3Rva2VuIChPTV91aW50MzIgKm1pbm9yX3N0YXR1cywKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAobWVjaCAhPSBOVUxMKSB7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb250ZXh0X3RpbWUuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMKK2luZGV4IDJmZjhkMDkuLmM5NDdlNzYgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbnRleHRfdGltZS5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbnRleHRfdGltZS5jCitAQCAtNTgsNiArNTgsOCBAQCBPTV91aW50MzIgKgkJdGltZV9yZWM7CisgICAgICAqLworIAorICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAobWVjaCkgeworZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZGVsZXRlX3NlY19jb250ZXh0LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jCitpbmRleCA0YmYwZGVjLi41NzRmZjAyIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19kZWxldGVfc2VjX2NvbnRleHQuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19kZWxldGVfc2VjX2NvbnRleHQuYworQEAgLTg3LDEyICs4NywxNCBAQCBnc3NfYnVmZmVyX3QJCW91dHB1dF90b2tlbjsKKyAgICAgaWYgKEdTU0lOVF9DSEtfTE9PUChjdHgpKQorIAlyZXR1cm4gKEdTU19TX0NBTExfSU5BQ0NFU1NJQkxFX1JFQUQgfCBHU1NfU19OT19DT05URVhUKTsKKyAKKy0gICAgc3RhdHVzID0gZ3NzaW50X2RlbGV0ZV9pbnRlcm5hbF9zZWNfY29udGV4dChtaW5vcl9zdGF0dXMsCistCQkJCQkJY3R4LT5tZWNoX3R5cGUsCistCQkJCQkJJmN0eC0+aW50ZXJuYWxfY3R4X2lkLAorLQkJCQkJCW91dHB1dF90b2tlbik7CistICAgIGlmIChzdGF0dXMpCistCXJldHVybiBzdGF0dXM7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCAhPSBHU1NfQ19OT19DT05URVhUKSB7CisrCXN0YXR1cyA9IGdzc2ludF9kZWxldGVfaW50ZXJuYWxfc2VjX2NvbnRleHQobWlub3Jfc3RhdHVzLAorKwkJCQkJCSAgICBjdHgtPm1lY2hfdHlwZSwKKysJCQkJCQkgICAgJmN0eC0+aW50ZXJuYWxfY3R4X2lkLAorKwkJCQkJCSAgICBvdXRwdXRfdG9rZW4pOworKwlpZiAoc3RhdHVzKQorKwkgICAgcmV0dXJuIHN0YXR1czsKKysgICAgfQorIAorICAgICAvKiBub3cgZnJlZSB1cCB0aGUgc3BhY2UgZm9yIHRoZSB1bmlvbiBjb250ZXh0IHN0cnVjdHVyZSAqLworICAgICBmcmVlKGN0eC0+bWVjaF90eXBlLT5lbGVtZW50cyk7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19leHBfc2VjX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZXhwX3NlY19jb250ZXh0LmMKK2luZGV4IGI2Mzc0NTIuLjFkNzk5MGIgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2V4cF9zZWNfY29udGV4dC5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2V4cF9zZWNfY29udGV4dC5jCitAQCAtOTUsNiArOTUsOCBAQCBnc3NfYnVmZmVyX3QJCWludGVycHJvY2Vzc190b2tlbjsKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpICpjb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworICAgICBpZiAoIW1lY2gpCisgCXJldHVybiBHU1NfU19CQURfTUVDSDsKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2luaXRfc2VjX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5pdF9zZWNfY29udGV4dC5jCitpbmRleCA5ZjE1NGI4Li5lMmRmMWNlIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbml0X3NlY19jb250ZXh0LmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5pdF9zZWNfY29udGV4dC5jCitAQCAtMTkyLDggKzE5MiwxMyBAQCBPTV91aW50MzIgKgkJdGltZV9yZWM7CisgCisgCS8qIGNvcHkgdGhlIHN1cHBsaWVkIGNvbnRleHQgaGFuZGxlICovCisgCXVuaW9uX2N0eF9pZC0+aW50ZXJuYWxfY3R4X2lkID0gR1NTX0NfTk9fQ09OVEVYVDsKKy0gICAgfSBlbHNlCisrICAgIH0gZWxzZSB7CisgCXVuaW9uX2N0eF9pZCA9IChnc3NfdW5pb25fY3R4X2lkX3QpKmNvbnRleHRfaGFuZGxlOworKwlpZiAodW5pb25fY3R4X2lkLT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkgeworKwkgICAgc3RhdHVzID0gR1NTX1NfTk9fQ09OVEVYVDsKKysJICAgIGdvdG8gZW5kOworKwl9CisrICAgIH0KKyAKKyAgICAgLyoKKyAgICAgICogZ2V0IHRoZSBhcHByb3ByaWF0ZSBjcmVkIGhhbmRsZSBmcm9tIHRoZSB1bmlvbiBjcmVkIHN0cnVjdC4KK0BAIC0yMjQsMTUgKzIyOSwxMyBAQCBPTV91aW50MzIgKgkJdGltZV9yZWM7CisgCisgICAgIGlmIChzdGF0dXMgIT0gR1NTX1NfQ09NUExFVEUgJiYgc3RhdHVzICE9IEdTU19TX0NPTlRJTlVFX05FRURFRCkgeworIAkvKgorLQkgKiBUaGUgc3BlYyBzYXlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGlzIHRvIGRlbGV0ZSBhbGwgY29udGV4dCBpbmZvIG9uCistCSAqIHRoZSBmaXJzdCBjYWxsIHRvIGluaXQsIGFuZCBvbiBhbGwgc3Vic2VxdWVudCBjYWxscyBtYWtlIHRoZSBjYWxsZXIKKy0JICogcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgZ3NzX2RlbGV0ZV9zZWNfY29udGV4dC4gIEhvd2V2ZXIsIGlmIHRoZQorLQkgKiBtZWNoYW5pc20gZGVjaWRlZCB0byBkZWxldGUgdGhlIGludGVybmFsIGNvbnRleHQsIHdlIHNob3VsZCBhbHNvCistCSAqIGRlbGV0ZSB0aGUgdW5pb24gY29udGV4dC4KKysJICogUkZDIDI3NDQgNS4xOSByZXF1aXJlcyB0aGF0IHdlIG5vdCBjcmVhdGUgYSBjb250ZXh0IG9uIGEgZmFpbGVkCisrCSAqIGZpcnN0IGNhbGwgdG8gaW5pdCwgYW5kIHJlY29tbWVuZHMgdGhhdCBvbiBhIGZhaWxlZCBzdWJzZXF1ZW50IGNhbGwKKysJICogd2UgbWFrZSB0aGUgY2FsbGVyIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGdzc19kZWxldGVfc2VjX2NvbnRleHQuCisrCSAqIEV2ZW4gaWYgdGhlIG1lY2ggZGVsZXRlZCBpdHMgY29udGV4dCwga2VlcCB0aGUgdW5pb24gY29udGV4dCBhcm91bmQKKysJICogZm9yIHRoZSBjYWxsZXIgdG8gZGVsZXRlLgorIAkgKi8KKyAJbWFwX2Vycm9yKG1pbm9yX3N0YXR1cywgbWVjaCk7CistCWlmICh1bmlvbl9jdHhfaWQtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorLQkgICAgKmNvbnRleHRfaGFuZGxlID0gR1NTX0NfTk9fQ09OVEVYVDsKKyAJaWYgKCpjb250ZXh0X2hhbmRsZSA9PSBHU1NfQ19OT19DT05URVhUKSB7CisgCSAgICBmcmVlKHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlLT5lbGVtZW50cyk7CisgCSAgICBmcmVlKHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlKTsKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2lucV9jb250ZXh0LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2lucV9jb250ZXh0LmMKK2luZGV4IDZmMWM3MWUuLjZjMGQ5OGQgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2lucV9jb250ZXh0LmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYworQEAgLTEwNCw2ICsxMDQsOCBAQCBnc3NfaW5xdWlyZV9jb250ZXh0KAorICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAKKyAgICAgaWYgKCFtZWNoIHx8ICFtZWNoLT5nc3NfaW5xdWlyZV9jb250ZXh0IHx8ICFtZWNoLT5nc3NfZGlzcGxheV9uYW1lIHx8CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcmYuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJmLmMKK2luZGV4IGZjY2EzZTQuLjllMTY4YWQgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ByZi5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ByZi5jCitAQCAtNTksNiArNTksOCBAQCBnc3NfcHNldWRvX3JhbmRvbSAoT01fdWludDMyICptaW5vcl9zdGF0dXMsCisgICAgICAqLworIAorICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiBHU1NfU19OT19DT05URVhUOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAKKyAgICAgaWYgKG1lY2ggIT0gTlVMTCkgeworZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJvY2Vzc19jb250ZXh0LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Byb2Nlc3NfY29udGV4dC5jCitpbmRleCBiYzI2MGFlLi4zOTY4YjVkIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcm9jZXNzX2NvbnRleHQuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcm9jZXNzX2NvbnRleHQuYworQEAgLTYxLDYgKzYxLDggQEAgZ3NzX2J1ZmZlcl90CQl0b2tlbl9idWZmZXI7CisgICAgICAqLworIAorICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAobWVjaCkgeworZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2VhbC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zZWFsLmMKK2luZGV4IGYxNzI0MWMuLjNkYjFlZTAgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NlYWwuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zZWFsLmMKK0BAIC05Miw2ICs5Miw4IEBAIGdzc193cmFwKCBPTV91aW50MzIgKm1pbm9yX3N0YXR1cywKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysgICAgICAgIHJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAobWVjaCkgeworQEAgLTIyNiw2ICsyMjgsOCBAQCBnc3Nfd3JhcF9zaXplX2xpbWl0KE9NX3VpbnQzMiAgKm1pbm9yX3N0YXR1cywKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysgICAgICAgIHJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAoIW1lY2gpCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zaWduLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NpZ24uYworaW5kZXggODZkNjQxYS4uMDNmYmQ4YyAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NpZ24uYworQEAgLTk0LDYgKzk0LDggQEAgZ3NzX2J1ZmZlcl90CQltc2dfdG9rZW47CisgICAgICAqLworIAorICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7CisgICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOworIAorICAgICBpZiAobWVjaCkgeworZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW5zZWFsLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jCitpbmRleCAzZTgwNTNjLi5jMjA4NjM1IDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bnNlYWwuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bnNlYWwuYworQEAgLTc2LDYgKzc2LDggQEAgZ3NzX3FvcF90ICoJCXFvcF9zdGF0ZTsKKyAgICAgICogY2FsbCBpdC4KKyAgICAgICovCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoKSB7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfYWVhZC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfYWVhZC5jCitpbmRleCBlNzhiZmYyLi4wNjgyYmQ4IDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfYWVhZC5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMKK0BAIC0xODYsNiArMTg2LDggQEAgZ3NzX3FvcF90CQkqcW9wX3N0YXRlOworICAgICAgKiBjYWxsIGl0LgorICAgICAgKi8KKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAKKyAgICAgaWYgKCFtZWNoKQorZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2lvdi5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfaW92LmMKK2luZGV4IGMwZGQzMTQuLjU5OWJlMmMgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9pb3YuYworKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfaW92LmMKK0BAIC04OSw2ICs4OSw4IEBAIGludAkJCWlvdl9jb3VudDsKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoKSB7CitAQCAtMTI4LDYgKzEzMCw4IEBAIGdzc192ZXJpZnlfbWljX2lvdihPTV91aW50MzIgKm1pbm9yX3N0YXR1cywgZ3NzX2N0eF9pZF90IGNvbnRleHRfaGFuZGxlLAorIAorICAgICAvKiBTZWxlY3QgdGhlIGFwcHJvcHJhdGUgdW5kZXJseWluZyBtZWNoYW5pc20gcm91dGluZSBhbmQgY2FsbCBpdC4gKi8KKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCljb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiBHU1NfU19OT19DT05URVhUOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20oY3R4LT5tZWNoX3R5cGUpOworICAgICBpZiAobWVjaCA9PSBOVUxMKQorIAlyZXR1cm4gR1NTX1NfQkFEX01FQ0g7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ192ZXJpZnkuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMKK2luZGV4IDE1NzhhZTEuLjg5OTZmY2UgMTAwNjQ0CistLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ZlcmlmeS5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ZlcmlmeS5jCitAQCAtNjUsNiArNjUsOCBAQCBnc3NfcW9wX3QgKgkJcW9wX3N0YXRlOworICAgICAgKi8KKyAKKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKKyAKKyAgICAgaWYgKG1lY2gpIHsKK2RpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfYWVhZC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2FlYWQuYworaW5kZXggOTZjZGYzYy4uN2ZlM2I3YiAxMDA2NDQKKy0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9hZWFkLmMKKysrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9hZWFkLmMKK0BAIC0yNTYsNiArMjU2LDggQEAgZ3NzX2J1ZmZlcl90CQlvdXRwdXRfbWVzc2FnZV9idWZmZXI7CisgICAgICAqIGNhbGwgaXQuCisgICAgICAqLworICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KWNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgICAgIGlmICghbWVjaCkKKyAJcmV0dXJuIChHU1NfU19CQURfTUVDSCk7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2lvdi5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2lvdi5jCitpbmRleCA0MGNkOThmLi4xNDQ0N2M0IDEwMDY0NAorLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2lvdi5jCisrKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMKK0BAIC05Myw2ICs5Myw4IEBAIGludAkJCWlvdl9jb3VudDsKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoKSB7CitAQCAtMTUxLDYgKzE1Myw4IEBAIGludAkJCWlvdl9jb3VudDsKKyAgICAgICovCisgCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOworKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKKysJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7CisgCisgICAgIGlmIChtZWNoKSB7CitAQCAtMTkwLDYgKzE5NCw4IEBAIGdzc19nZXRfbWljX2lvdihPTV91aW50MzIgKm1pbm9yX3N0YXR1cywgZ3NzX2N0eF9pZF90IGNvbnRleHRfaGFuZGxlLAorIAorICAgICAvKiBTZWxlY3QgdGhlIGFwcHJvcHJhdGUgdW5kZXJseWluZyBtZWNoYW5pc20gcm91dGluZSBhbmQgY2FsbCBpdC4gKi8KKyAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCljb250ZXh0X2hhbmRsZTsKKysgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCisrCXJldHVybiBHU1NfU19OT19DT05URVhUOworICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20oY3R4LT5tZWNoX3R5cGUpOworICAgICBpZiAobWVjaCA9PSBOVUxMKQorIAlyZXR1cm4gR1NTX1NfQkFEX01FQ0g7CitAQCAtMjE4LDYgKzIyNCw4IEBAIGdzc19nZXRfbWljX2lvdl9sZW5ndGgoT01fdWludDMyICptaW5vcl9zdGF0dXMsIGdzc19jdHhfaWRfdCBjb250ZXh0X2hhbmRsZSwKKyAKKyAgICAgLyogU2VsZWN0IHRoZSBhcHByb3ByYXRlIHVuZGVybHlpbmcgbWVjaGFuaXNtIHJvdXRpbmUgYW5kIGNhbGwgaXQuICovCisgICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpY29udGV4dF9oYW5kbGU7CisrICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQorKwlyZXR1cm4gR1NTX1NfTk9fQ09OVEVYVDsKKyAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtKGN0eC0+bWVjaF90eXBlKTsKKyAgICAgaWYgKG1lY2ggPT0gTlVMTCkKKyAJcmV0dXJuIEdTU19TX0JBRF9NRUNIOworLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE1LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTUuMS5iYgppbmRleCBiNTE1ZWI1Li5lNzVlODYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTUuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTUuMS5iYgpAQCAtMzEsNiArMzEsNyBAQAogICAgICAgICAgICBmaWxlOi8va3JiNS1rZGMuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1DVkUtMjAxNy0xMTM2OC5wYXRjaDtzdHJpcGxldmVsPTIgXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTE0NjIucGF0Y2g7c3RyaXBsZXZlbD0yIFwKICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4MDIyZjNhMWNkZTg0NjNlNDRmZDM1ZWY0MjczMWY4NSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MzdjODgzMWRkZDVmZGUyYTk5M2ZlZjQyNWRlZGI0ODQ2ODEwOWJiM2QzMjYxZWY4MzgyOTUwNDVhODllYjQ1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm10cC9saWJtdHBfMS4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibXRwL2xpYm10cF8xLjEuNS5iYgppbmRleCBjMDVmZjRlLi43OThiMTcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibXRwL2xpYm10cF8xLjEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibXRwL2xpYm10cF8xLjEuNS5iYgpAQCAtNDUsMTAgKzQ1LDEwIEBACiBQQUNLQUdFQ09ORklHW2xhcmdlZmlsZV0gPSAiLS1lbmFibGUtbGFyZ2VmaWxlLC0tZGlzYWJsZS1sYXJnZWZpbGUiCiBQQUNLQUdFQ09ORklHW210cHpdID0gIi0tZW5hYmxlLW10cHosLS1kaXNhYmxlLW10cHosbGliZ2NyeXB0IgogCi1QQUNLQUdFUyA9KyAibGlibXRwLWNvbW1vbiBsaWJtdHAtcnVudGltZSBtdHAtdG9vbHMiCitQQUNLQUdFUyA9KyAibGlibXRwLWNvbW1vbiBsaWJtdHAtcnVudGltZSIKIAogUkRFUEVORFNfJHtQTn0gKz0gImxpYm10cC1jb21tb24iCi1SUkVDT01NRU5EU18ke1BOfSArPSAibGlibXRwLXJ1bnRpbWUgbXRwLXRvb2xzIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImxpYm10cC1ydW50aW1lICR7UE59LWJpbiIKIEZJTEVTXyR7UE59LWRiZyArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2Ly5kZWJ1Zy8qIgogRklMRVNfbGlibXRwLWNvbW1vbiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC8qIgogU1VNTUFSWV9saWJtdHAtY29tbW9uID0gIlRoZSB1ZGV2IHJ1bGVzIGZpbGUgZm9yIE1UUCBkZXZpY2VzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5kcC9saWJuZHBfMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5kcC9saWJuZHBfMS42LmJiCmluZGV4IDJjYzM0NWEuLjUxNDg3OTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuZHAvbGlibmRwXzEuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcF8xLjYuYmIKQEAgLTEsNSArMSw1IEBACiBTVU1NQVJZID0gIkxpYnJhcnkgZm9yIElQdjYgTmVpZ2hib3IgRGlzY292ZXJ5IFByb3RvY29sIgotCitIT01FUEFHRSA9ICJodHRwOi8vbGlibmRwLm9yZy8iCiBMSUNFTlNFID0gIkxHUEx2Mi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saW51eHB0cC9saW51eHB0cC8wMDAzLWluY2x1ZGUtbWlzc2luZy10aW1lLmgtZm9yLXRpbWVfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saW51eHB0cC9saW51eHB0cC8wMDAzLWluY2x1ZGUtbWlzc2luZy10aW1lLmgtZm9yLXRpbWVfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjE2M2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwLzAwMDMtaW5jbHVkZS1taXNzaW5nLXRpbWUuaC1mb3ItdGltZV90LnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gYjM2Y2FmZGJjYmUyMTkzZjViNjY5ZTcwM2M2MDhlMTllMjNmODBhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE1IEp1bCAyMDE3IDExOjE2OjQyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBpbmNsdWRlIG1pc3NpbmcgdGltZS5oIGZvciB0aW1lX3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHV0aWwuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3V0aWwuaCBiL3V0aWwuaAoraW5kZXggZTkxMmYxOS4uM2M2MzRjMSAxMDA2NDQKKy0tLSBhL3V0aWwuaAorKysrIGIvdXRpbC5oCitAQCAtMjIsNyArMjIsNyBAQAorIAorICNpbmNsdWRlICJkZHQuaCIKKyAjaW5jbHVkZSAiZXRoZXIuaCIKKy0KKysjaW5jbHVkZSA8dGltZS5oPgorIC8qKgorICAqIFRhYmxlIG9mIGh1bWFuIHJlYWRhYmxlIHN0cmluZ3MsIG9uZSBmb3IgZWFjaCBwb3J0IHN0YXRlLgorICAqLworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwLzAwMDQtQWRqdXN0LWluY2x1ZGUtaGVhZGVyLXNlcXVlbmNlLXRvLWF2b2lkLWR1cGxpY2F0ZS1kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saW51eHB0cC9saW51eHB0cC8wMDA0LUFkanVzdC1pbmNsdWRlLWhlYWRlci1zZXF1ZW5jZS10by1hdm9pZC1kdXBsaWNhdGUtZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5OTI3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saW51eHB0cC9saW51eHB0cC8wMDA0LUFkanVzdC1pbmNsdWRlLWhlYWRlci1zZXF1ZW5jZS10by1hdm9pZC1kdXBsaWNhdGUtZGUucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAzY2QyOGFhNzcxOTM0ZDkxNjVmZjBkN2UxOTkzMmNkZTY1ZGUzZTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMTE6MTY6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIEFkanVzdCBpbmNsdWRlIGhlYWRlciBzZXF1ZW5jZSB0byBhdm9pZCBkdXBsaWNhdGUKKyBkZWZpbml0aW9ucyBvbiBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyByYXcuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9yYXcuYyBiL3Jhdy5jCitpbmRleCBmNTFjODI5Li40OTRlYTdmIDEwMDY0NAorLS0tIGEvcmF3LmMKKysrKyBiL3Jhdy5jCitAQCAtMTgsOCArMTgsNiBAQAorICAqLworICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxsaW51eC9maWx0ZXIuaD4KKy0jaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CitAQCAtMzIsNiArMzAsOCBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2luY2x1ZGUgPGxpbnV4L2ZpbHRlci5oPgorKyNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxsaW51eC9lcnJxdWV1ZS5oPgorICNpbmNsdWRlIDxsaW51eC9uZXRfdHN0YW1wLmg+CisgI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saW51eHB0cC9saW51eHB0cF8xLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGludXhwdHAvbGludXhwdHBfMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTI4NjQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saW51eHB0cC9saW51eHB0cF8xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBhY2NvcmRpbmcgdG8gSUVFRSBzdGFuZGFyZCAxNTg4IGZvciBMaW51eCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4cHRwL2ZpbGVzL3Yke1BWfS9saW51eHB0cC0ke1BWfS50Z3ogXAotICAgICAgICAgICBmaWxlOi8vYnVpbGQtQWxsb3ctQ0MtYW5kLXByZWZpeC10by1iZS1vdmVycmlkZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm8taW5jZGVmcy11c2luZy1ob3N0LWhlYWRlcnMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YWExNWQ4M2Y1YTM1ZjFmZDA3NmJhOWFkYzRlNzI4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlN2ZkMTZhOWYyMzViMDU5YmU1MjdiZDUxMmU4NmYwYzFkOWYyZTdjMzY3MzZlNmQ2ZDk3MjdhNDQyN2FjMTRjIgotCi1FWFRSQV9PRU1BS0UgPSAiQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0gICAgRVhUUkFfQ0ZMQUdTPSctRF9HTlVfU09VUkNFIC1ESEFWRV9DTE9DS19BREpUSU1FIC1ESEFWRV9QT1NJWF9TUEFXTiAtREhBVkVfT05FU1RFUF9TWU5DICR7Q0ZMQUdTfSciCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1wICR7U30vcHRwNGwgICR7RH0vJHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtcCAke1N9L3BtYyAgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1wICR7U30vcGhjMnN5cyAgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1wICR7U30vaHdzdGFtcF9jdGwgICR7RH0vJHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGludXhwdHAvbGludXhwdHBfMS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwXzEuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2I4YjI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpbnV4cHRwL2xpbnV4cHRwXzEuOC5iYgpAQCAtMCwwICsxLDI0IEBACitERVNDUklQVElPTiA9ICJQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBhY2NvcmRpbmcgdG8gSUVFRSBzdGFuZGFyZCAxNTg4IGZvciBMaW51eCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4cHRwL2ZpbGVzL3Yke1BWfS9saW51eHB0cC0ke1BWfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vYnVpbGQtQWxsb3ctQ0MtYW5kLXByZWZpeC10by1iZS1vdmVycmlkZW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm8taW5jZGVmcy11c2luZy1ob3N0LWhlYWRlcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1pbmNsdWRlLW1pc3NpbmctdGltZS5oLWZvci10aW1lX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGp1c3QtaW5jbHVkZS1oZWFkZXItc2VxdWVuY2UtdG8tYXZvaWQtZHVwbGljYXRlLWRlLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTY4OGNkZmU1NzkzMjI3M2UxZGJmMzViM2I5N2I5YTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmE4ZTAwZjZlYzczY2VmYTdiYjMxM2RjZTdmNjBkZmU1ZWI5ZTJiZGUzMzUzNTk0ZTlhYzE4ZWRjOTNlNTE2NSIKKworRVhUUkFfT0VNQUtFID0gIkFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorICAgIEVYVFJBX0NGTEFHUz0nLURfR05VX1NPVVJDRSAtREhBVkVfQ0xPQ0tfQURKVElNRSAtREhBVkVfUE9TSVhfU1BBV04gLURIQVZFX09ORVNURVBfU1lOQyAke0NGTEFHU30nIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtcCAke1N9L3B0cDRsICAke0R9LyR7YmluZGlyfQorICAgIGluc3RhbGwgLXAgJHtTfS9wbWMgICR7RH0vJHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtcCAke1N9L3BoYzJzeXMgICR7RH0vJHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtcCAke1N9L2h3c3RhbXBfY3RsICAke0R9LyR7YmluZGlyfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQwOTEyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw5NCBAQAorRnJvbSBlYmQ3YzhlNTQ4ZTliOGUwOTZlZTRjMzkwMTczZGI5YTcwMWYyNjA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJ1bm8gQm90dGF6emluaSA8YnJ1bm8uYm90dGF6emluaUBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDIzIE1hciAyMDE2IDExOjE4OjI2IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkCisKK0Rpc2FibGUgc3RyaXBwaW5nIGFuZCBhbGxvdyBlYXNpbHkgb3ZlcnJpZGluZyBwcmVmaXgKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEJydW5vIEJvdHRhenppbmkgPGJydW5vLmJvdHRhenppbmlAaW50ZWwuY29tPgorLS0tCisgY2xpZW50L01ha2VmaWxlICB8IDQgKystLQorIGNvbmZpZy5tayAgICAgICAgfCAyICstCisgbGliL01ha2VmaWxlICAgICB8IDIgKy0KKyBsaWIvY3BwL01ha2VmaWxlIHwgMiArLQorIHNyYy9NYWtlZmlsZSAgICAgfCA0ICsrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9NYWtlZmlsZSBiL2NsaWVudC9NYWtlZmlsZQoraW5kZXggYmQ2NTM1NS4uNGU1YTY0MCAxMDA2NDQKKy0tLSBhL2NsaWVudC9NYWtlZmlsZQorKysrIGIvY2xpZW50L01ha2VmaWxlCitAQCAtMjQsOCArMjQsOCBAQCBjbGllbnRfc2hhcmVkLm8gOiBjbGllbnRfc2hhcmVkLmMgY2xpZW50CisgCisgaW5zdGFsbCA6IGFsbAorIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvYmluCistCSQoSU5TVEFMTCkgLXMgLS1zdHJpcC1wcm9ncmFtPSR7Q1JPU1NfQ09NUElMRX0ke1NUUklQfSBtb3NxdWl0dG9fcHViICR7REVTVERJUn0ke3ByZWZpeH0vYmluL21vc3F1aXR0b19wdWIKKy0JJChJTlNUQUxMKSAtcyAtLXN0cmlwLXByb2dyYW09JHtDUk9TU19DT01QSUxFfSR7U1RSSVB9IG1vc3F1aXR0b19zdWIgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3N1YgorKwkkKElOU1RBTEwpIG1vc3F1aXR0b19wdWIgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3B1YgorKwkkKElOU1RBTEwpIG1vc3F1aXR0b19zdWIgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3N1YgorIAorIHVuaW5zdGFsbCA6CisgCS1ybSAtZiAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fcHViCitkaWZmIC0tZ2l0IGEvY29uZmlnLm1rIGIvY29uZmlnLm1rCitpbmRleCBjMGYxNzVmLi4zNDI3YjgzIDEwMDY0NAorLS0tIGEvY29uZmlnLm1rCisrKysgYi9jb25maWcubWsKK0BAIC0yNDEsNyArMjQxLDcgQEAgaWZlcSAoJChXSVRIX0RPQ1MpLHllcykKKyBlbmRpZgorIAorIElOU1RBTEw/PWluc3RhbGwKKy1wcmVmaXg9L3Vzci9sb2NhbAorK3ByZWZpeD89L3VzcgorIG1hbmRpcj0ke3ByZWZpeH0vc2hhcmUvbWFuCisgbG9jYWxlZGlyPSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKKyBTVFJJUD89c3RyaXAKK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKK2luZGV4IDgyNWZjZWEuLjliN2MwNWMgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUKKysrKyBiL2xpYi9NYWtlZmlsZQorQEAgLTI1LDcgKzI1LDcgQEAgYWxsIDogbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfSBsaWJtbworIAorIGluc3RhbGwgOiBhbGwKKyAJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JChwcmVmaXgpL2xpYiR7TElCX1NVRkZJWH0vCistCSQoSU5TVEFMTCkgLXMgLS1zdHJpcC1wcm9ncmFtPSR7Q1JPU1NfQ09NUElMRX0ke1NUUklQfSBsaWJtb3NxdWl0dG8uc28uJHtTT1ZFUlNJT059ICR7REVTVERJUn0ke3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfS9saWJtb3NxdWl0dG8uc28uJHtTT1ZFUlNJT059CisrCSQoSU5TVEFMTCkgbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfQorIAlsbiAtc2YgbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvLnNvCisgCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSR7cHJlZml4fS9pbmNsdWRlLworIAkkKElOU1RBTEwpIG1vc3F1aXR0by5oICR7REVTVERJUn0ke3ByZWZpeH0vaW5jbHVkZS9tb3NxdWl0dG8uaAorZGlmZiAtLWdpdCBhL2xpYi9jcHAvTWFrZWZpbGUgYi9saWIvY3BwL01ha2VmaWxlCitpbmRleCA4YjYyN2QzLi5jZGIyOTIzIDEwMDY0NAorLS0tIGEvbGliL2NwcC9NYWtlZmlsZQorKysrIGIvbGliL2NwcC9NYWtlZmlsZQorQEAgLTEwLDcgKzEwLDcgQEAgYWxsIDogbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059CisgCisgaW5zdGFsbCA6IGFsbAorIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvbGliJHtMSUJfU1VGRklYfS8KKy0JJChJTlNUQUxMKSAtcyAtLXN0cmlwLXByb2dyYW09JHtDUk9TU19DT01QSUxFfSR7U1RSSVB9IGxpYm1vc3F1aXR0b3BwLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059CisrCSQoSU5TVEFMTCkgbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059ICR7REVTVERJUn0ke3ByZWZpeH0vbGliJHtMSUJfU1VGRklYfS9saWJtb3NxdWl0dG9wcC5zby4ke1NPVkVSU0lPTn0KKyAJbG4gLXNmIGxpYm1vc3F1aXR0b3BwLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvcHAuc28KKyAJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JHtwcmVmaXh9L2luY2x1ZGUvCisgCSQoSU5TVEFMTCkgbW9zcXVpdHRvcHAuaCAke0RFU1RESVJ9JHtwcmVmaXh9L2luY2x1ZGUvbW9zcXVpdHRvcHAuaAorZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQoraW5kZXggMmNmYjdkNC4uOWE5NzY0NCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZQorKysrIGIvc3JjL01ha2VmaWxlCitAQCAtMTAzLDEyICsxMDMsMTIgQEAgbW9zcXVpdHRvX3Bhc3N3ZC5vIDogbW9zcXVpdHRvX3Bhc3N3ZC5jCisgCisgaW5zdGFsbCA6IGFsbAorIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvc2JpbgorLQkkKElOU1RBTEwpIC1zIC0tc3RyaXAtcHJvZ3JhbT0ke0NST1NTX0NPTVBJTEV9JHtTVFJJUH0gbW9zcXVpdHRvICR7REVTVERJUn0ke3ByZWZpeH0vc2Jpbi9tb3NxdWl0dG8KKysJJChJTlNUQUxMKSBtb3NxdWl0dG8gJHtERVNURElSfSR7cHJlZml4fS9zYmluL21vc3F1aXR0bworCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSQocHJlZml4KS9pbmNsdWRlCisgCSQoSU5TVEFMTCkgbW9zcXVpdHRvX3BsdWdpbi5oICR7REVTVERJUn0ke3ByZWZpeH0vaW5jbHVkZS9tb3NxdWl0dG9fcGx1Z2luLmgKKyBpZmVxICgkKFdJVEhfVExTKSx5ZXMpCisJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JChwcmVmaXgpL2JpbgorLQkkKElOU1RBTEwpIC1zIC0tc3RyaXAtcHJvZ3JhbT0ke0NST1NTX0NPTVBJTEV9JHtTVFJJUH0gbW9zcXVpdHRvX3Bhc3N3ZCAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fcGFzc3dkCisrCSQoSU5TVEFMTCkgbW9zcXVpdHRvX3Bhc3N3ZCAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fcGFzc3dkCisgZW5kaWYKKyAKKyB1bmluc3RhbGwgOgorLS0gCisyLjcuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5pbml0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uaW5pdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmEyN2IyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uaW5pdApAQCAtMCwwICsxLDg5IEBACisjISAvYmluL3NoCisKKyMgQmFzZWQgb24gdGhlIERlYmlhbiBpbml0c2NyaXB0IGZvciBtb3NxdWl0dG8KKworIyMjIEJFR0lOIElOSVQgSU5GTworIyBQcm92aWRlczogICAgICAgICBtb3NxdWl0dG8KKyMgUmVxdWlyZWQtU3RhcnQ6ICAgJHJlbW90ZV9mcyAkc3lzbG9nCisjIFJlcXVpcmVkLVN0b3A6ICAgICRyZW1vdGVfZnMgJHN5c2xvZworIyBEZWZhdWx0LVN0YXJ0OiAgICAyIDMgNCA1CisjIERlZmF1bHQtU3RvcDogICAgIDAgMSA2CisjIFNob3J0LURlc2NyaXB0aW9uOiAgICBtb3NxdWl0dG8gTVFUVCB2My4xIG1lc3NhZ2UgYnJva2VyCisjIERlc2NyaXB0aW9uOiAKKyMgIFRoaXMgaXMgYSBtZXNzYWdlIGJyb2tlciB0aGF0IHN1cHBvcnRzIHZlcnNpb24gMy4xIG9mIHRoZSBNUSBUZWxlbWV0cnkKKyMgIFRyYW5zcG9ydCAoTVFUVCkgcHJvdG9jb2wuCisjICAKKyMgIE1RVFQgcHJvdmlkZXMgYSBtZXRob2Qgb2YgY2Fycnlpbmcgb3V0IG1lc3NhZ2luZyB1c2luZyBhIHB1Ymxpc2gvc3Vic2NyaWJlCisjICBtb2RlbC4gSXQgaXMgbGlnaHR3ZWlnaHQsIGJvdGggaW4gdGVybXMgb2YgYmFuZHdpZHRoIHVzYWdlIGFuZCBlYXNlIG9mCisjICBpbXBsZW1lbnRhdGlvbi4gVGhpcyBtYWtlcyBpdCBwYXJ0aWN1bGFybHkgdXNlZnVsIGF0IHRoZSBlZGdlIG9mIHRoZSBuZXR3b3JrCisjICB3aGVyZSBhIHNlbnNvciBvciBvdGhlciBzaW1wbGUgZGV2aWNlIG1heSBiZSBpbXBsZW1lbnRlZCB1c2luZyBhbiBhcmR1aW5vIGZvcgorIyAgZXhhbXBsZS4KKyMjIyBFTkQgSU5JVCBJTkZPCisKK3NldCAtZQorCitQSURGSUxFPUBMT0NBTFNUQVRFRElSQC9ydW4vbW9zcXVpdHRvLnBpZAorREFFTU9OPUBTQklORElSQC9tb3NxdWl0dG8KKworIyBzdGFydCBhbmQgc3RvcCB0aGUgbW9zcXVpdHRvIE1RVFQgbWVzc2FnZSBicm9rZXIKKwordGVzdCAteCAke0RBRU1PTn0gfHwgZXhpdCAwCisKK3VtYXNrIDAyMgorCisuIEBTWVNDT05GRElSQC9pbml0LmQvZnVuY3Rpb25zCisKK2V4cG9ydCBQQVRIPSIke1BBVEg6KyRQQVRIOn1AU0JJTkRJUkA6QEJBU0VfU0JJTkRJUkAiCisKK2Nhc2UgIiQxIiBpbgorICAgIHN0YXJ0KQorICAgICAgICBlY2hvICJTdGFydGluZyBNb3NxdWl0dG8gbWVzc2FnZSBicm9rZXIiICJtb3NxdWl0dG8iCisgICAgICAgIGlmIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLW9rbm9kbyAtLWJhY2tncm91bmQgIC0tbWFrZS1waWRmaWxlIC0tcGlkZmlsZSAke1BJREZJTEV9IC0tZXhlYyAke0RBRU1PTn0gOyB0aGVuCisgICAgICAgICAgICBleGl0IDAKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgc3RvcCkKKyAgICAgICAgZWNobyAiU3RvcHBpbmcgTW9zcXVpdHRvIG1lc3NhZ2UgYnJva2VyIiAibW9zcXVpdHRvIgorICAgICAgICBpZiBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLW9rbm9kbyAtLXBpZGZpbGUgJHtQSURGSUxFfTsgdGhlbgorICAgICAgICAgICAgcm0gLWYgJHtQSURGSUxFfQorICAgICAgICAgICAgZXhpdCAwCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4aXQgMQorICAgICAgICBmaQorICAgICAgICA7OworCisKKyAgICByZWxvYWR8Zm9yY2UtcmVsb2FkKQorICAgICAgICBpZiBbIC1mICR7UElERklMRX0gXSA7IHRoZW4KKyAgICAgICAgICAgIGVjaG8gIlJlbG9hZGluZyBjb25maWd1cmF0aW9uIGZvciBtb3NxdWl0dG8iCisgICAgICAgICAgICBwaWQ9YGNhdCAke1BJREZJTEV9YAorICAgICAgICAgICAga2lsbCAtSFVQICRwaWQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWNobyAibW9zcXVpdHRvIGRvZXMgbm90IHNlZW0gdG8gYmUgcnVubmluZyIKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKworICAgIHJlc3RhcnQpCisgICAgICAgIGVjaG8gIlJlc3RhcnRpbmcgTW9zcXVpdHRvIG1lc3NhZ2UgYnJva2VyIiAibW9zcXVpdHRvIgorICAgICAgICBpZiBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLW9rbm9kbyAtLXJldHJ5IDMwIC0tcGlkZmlsZSAke1BJREZJTEV9OyB0aGVuCisgICAgICAgICAgICBybSAtZiAke1BJREZJTEV9CisgICAgICAgIGZpCisgICAgICAgIGlmIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLW9rbm9kbyAtLWJhY2tncm91bmQgLS1tYWtlLXBpZGZpbGUgLS1waWRmaWxlICR7UElERklMRX0gLS1leGVjICR7REFFTU9OfSAtLSAtYyBAU1lTQ09ORkRJUkAvbW9zcXVpdHRvL21vc3F1aXR0by5jb25mIDsgdGhlbgorICAgICAgICAgICAgZXhpdCAwCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4aXQgMQorICAgICAgICBmaQorICAgICAgICA7OworCisgICAgc3RhdHVzKQorICAgICAgICBzdGF0dXMgJHtEQUVNT059ICYmIGV4aXQgMCB8fCBleGl0ICQ/CisgICAgICAgIDs7CisKKyAgICAqKQorICAgICAgICBlY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8cmVsb2FkfGZvcmNlLXJlbG9hZHxyZXN0YXJ0fHN0YXR1c30iCisgICAgICAgIGV4aXQgMQorZXNhYworCitleGl0IDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvbW9zcXVpdHRvLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZjY4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5zZXJ2aWNlCkBAIC0wLDAgKzEsMTUgQEAKK1tVbml0XQorRGVzY3JpcHRpb249TW9zcXVpdHRvIC0gbGlnaHR3ZWlnaHQgc2VydmVyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNUVRUIGFuZCBNUVRULVNOIHByb3RvY29scworQ29uZGl0aW9uUGF0aEV4aXN0cz0vZXRjL21vc3F1aXR0by9tb3NxdWl0dG8uY29uZgorQWZ0ZXI9bmV0d29yay50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPXNpbXBsZQorRXhlY1N0YXJ0UHJlPS9iaW4vcm0gLWYgL3Zhci9ydW4vbW9zcXVpdHRvLnBpZAorRXhlY1N0YXJ0PS91c3Ivc2Jpbi9tb3NxdWl0dG8gLWMgL2V0Yy9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYKK0V4ZWNSZWxvYWQ9L2Jpbi9raWxsIC1IVVAgJE1BSU5QSUQKK1BJREZpbGU9L3Zhci9ydW4vbW9zcXVpdHRvLnBpZAorUmVzdGFydD1vbi1mYWlsdXJlCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNC4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTU0MjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9tb3NxdWl0dG9fMS40LjE0LmJiCkBAIC0wLDAgKzEsODAgQEAKK1NVTU1BUlkgPSAiT3BlbiBzb3VyY2UgTVFUVCB2My4xLzMuMS4xIGltcGxlbWVudGlvbiIKK0RFU0NSSVBUSU9OID0gIk1vc3F1aXR0byBpcyBhbiBvcGVuIHNvdXJjZSAoRWNsaXBzZSBsaWNlbnNlZCkgbWVzc2FnZSBicm9rZXIgdGhhdCBpbXBsZW1lbnRzIHRoZSBNUSBUZWxlbWV0cnkgVHJhbnNwb3J0IHByb3RvY29sIHZlcnNpb24gMy4xIGFuZCAzLjEuMS4gTVFUVCBwcm92aWRlcyBhIGxpZ2h0d2VpZ2h0IG1ldGhvZCBvZiBjYXJyeWluZyBvdXQgbWVzc2FnaW5nIHVzaW5nIGEgcHVibGlzaC9zdWJzY3JpYmUgbW9kZWwuICIKK0hPTUVQQUdFID0gImh0dHA6Ly9tb3NxdWl0dG8ub3JnLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT02MmRkYzg0NjE3OWU5MDhkYzBjOGVmZWM0YTQyZWYyMCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT1jMDlmMTIxOTM5ZjA2M2FlYjUyMzU5NzJiZThjNzIyYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT04ZDM4M2MzNzllOTFkMjBiYTE4YTUyYzNlN2QzYTk3OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9YTAwZDZmOWFiNTQyYmU3YmFiYzJkOGI4MGQ1ZDJhNGMgXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly9tb3NxdWl0dG8ub3JnL2ZpbGVzL3NvdXJjZS9tb3NxdWl0dG8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2J1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vc3F1aXR0by5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL21vc3F1aXR0by5pbml0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjZiMDk2NmU5M2YxMThiYzcxYWQ3YjYxNjAwYTZjMmQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1NmIxZmE3MzFkMTJiYWFkNGI4YjIyZjdiNmE4YWY1MGJhODgxZmM3MTFiODFlOTkxOWVjMTAzY2YyOTQyZDEiCisKK2luaGVyaXQgc3lzdGVtZCB1cGRhdGUtcmMuZCB1c2VyYWRkCisKK1BBQ0tBR0VDT05GSUcgPz89ICJzc2wgdXVpZCIKKworUEFDS0FHRUNPTkZJR1tkbnMtc3J2XSA9ICIsLGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbc3NsXSA9ICIsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3V1aWRdID0gIiwsdXRpbC1saW51eCIKK0VYVFJBX09FTUFLRSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbnMtc3J2JywgJ1dJVEhfU1JWPXllcycsICdXSVRIX1NSVj1ubycsIGQpfSBcCisgICAgICAgICAgICAgICAgV0lUSF9ET0NTPW5vIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzc2wnLCAnV0lUSF9UTFM9eWVzIFdJVEhfVExTX1BTSz15ZXMnLCAnV0lUSF9UTFM9bm8gV0lUSF9UTFNfUFNLPW5vJywgZCl9IFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dWlkJywgJ1dJVEhfVVVJRD15ZXMnLCAnV0lUSF9VVUlEPW5vJywgZCl9IgorCitleHBvcnQgTElCX1NVRkZJWD0iJHtAZC5nZXRWYXIoJ2Jhc2VsaWInLCBUcnVlKS5yZXBsYWNlKCdsaWInLCAnJyl9IgorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgbGliL2xpYm1vc3F1aXR0by5hICR7RH0ke2xpYmRpcn0vCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L21vc3F1aXR0by5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbW9zcXVpdHRvLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vc3F1aXR0bworICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBCQVNFX1NCSU5ESVJALCR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnIFwKKyAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbW9zcXVpdHRvCit9CisKK1BBQ0tBR0VTICs9ICJsaWJtb3NxdWl0dG8xIGxpYm1vc3F1aXR0b3BwMSAke1BOfS1jbGllbnRzIgorCitGSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L21vc3F1aXR0byBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vbW9zcXVpdHRvX3Bhc3N3ZCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vc3F1aXR0byBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZCBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21vc3F1aXR0by5zZXJ2aWNlIFwKKyIKKworRklMRVNfbGlibW9zcXVpdHRvMSA9ICIke2xpYmRpcn0vbGlibW9zcXVpdHRvLnNvLjEiCisKK0ZJTEVTX2xpYm1vc3F1aXR0b3BwMSA9ICIke2xpYmRpcn0vbGlibW9zcXVpdHRvcHAuc28uMSIKKworRklMRVNfJHtQTn0tY2xpZW50cyA9ICIke2JpbmRpcn0vbW9zcXVpdHRvX3B1YiBcCisgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tb3NxdWl0dG9fc3ViIFwKKyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1vc3F1aXR0by5zZXJ2aWNlIgorCitJTklUU0NSSVBUX05BTUUgPSAibW9zcXVpdHRvIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgMzAiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIG1vc3F1aXR0byIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjQuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUwOThmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS40LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlciIKLVNFQ1RJT04gPSAibmV0L21pc2MiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2JiZmZkNTY4MjI3YWRhNTA2NjQwZmU5NTBhNDgyM2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlibm0tdXRpbC9DT1BZSU5HO21kNT0xYzRmYTc2NWQ2ZWIzY2QyZmJkODQzNDRhMWI4MTZjZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL2FwaS9odG1sL2xpY2Vuc2UuaHRtbDttZDU9OGViOGU3MmJhYjA5N2I5ZDExNzYzMDAyY2IwMDM2OTcgXAotIgotCi1ERVBFTkRTID0gIiBcCi0gICAgaW50bHRvb2wtbmF0aXZlIFwKLSAgICBsaWJubCBcCi0gICAgZGJ1cyBcCi0gICAgZGJ1cy1nbGliIFwKLSAgICBkYnVzLWdsaWItbmF0aXZlIFwKLSAgICBsaWJndWRldiBcCi0gICAgdXRpbC1saW51eCBcCi0gICAgbGlibmRwIFwKLSAgICBsaWJuZXd0IFwKLSAgICBwb2xraXQgXAotICAgIGphbnNzb24gXAotIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgYmx1ZXRvb3RoIGJhc2gtY29tcGxldGlvbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbi10LXRyeS10by1ydW4tc2Jpbi1kaGNsaWVudC10by1nZXQtdGhlLXZlcnNpb24tbnUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtbm0tdmVyc2lvbi1tYWNyby1pbmNsdWRlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkanVzdC1uZXQtaGVhZGVycy1mb3ItbXVzbC1jb21wYXRpYmlsaXR5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItc29ja2V0LXV0aWwuaC1JbmNsdWRlLWxpbnV4LXNvY2tpb3MuaC1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtRGVmaW5lLUVUSF9BTEVOLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRGVmaW5lLW1pc3NpbmctZmVhdHVyZXMtdG8tY2F0ZXItZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2hlY2stZm9yLXN0cm5kdXBhLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2M2YxZTBkNmQ3ZTkwOTk0OTlkMDYyYzg0YzkyN2E3NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MjkzNzhmMzE4Y2MwMDhkMTM4YTIzY2E2YTkxOTE5MjhjZTc1MzQ0ZTdlNDdhMmYyYzM1ZjRhYzgyMTMzMzA5IgotCi1TID0gIiR7V09SS0RJUn0vTmV0d29ya01hbmFnZXItJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1pZmNmZy1yaCBcCi0gICAgLS1kaXNhYmxlLWlmbmV0IFwKLSAgICAtLWRpc2FibGUtaWZjZmctc3VzZSBcCi0gICAgLS1kaXNhYmxlLW1vcmUtd2FybmluZ3MgXAotICAgIC0td2l0aC1pcHRhYmxlcz0ke3NiaW5kaXJ9L2lwdGFibGVzIFwKLSAgICAtLXdpdGgtdGVzdHMgXAotICAgIC0td2l0aC1ubXR1aT15ZXMgXAotIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2xpYm5tLXV0aWwvLmxpYnMiCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJuc3MgaWZ1cGRvd24gbmV0Y29uZmlnIGRoY2xpZW50IGRuc21hc3EgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJ2NvbnNvbGVraXQnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiBcCi0gICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gLS13aXRoLXNlc3Npb24tdHJhY2tpbmc9c3lzdGVtZCAtLWVuYWJsZS1wb2xraXQsIFwKLSAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsIFwKLSAgICBwb2xraXQgXAotIgotUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgotIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCi1QQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKLVBBQ0tBR0VDT05GSUdbY29uY2hlY2tdID0gIi0td2l0aC1saWJzb3VwPXllcywtLXdpdGgtbGlic291cD1ubyxsaWJzb3VwLTIuNCIKLVBBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKLVBBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgotIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQotUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgotUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1jcnlwdG89Z251dGxzLCxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3dpZmldID0gIi0tZW5hYmxlLXdpZmk9eWVzLC0tZW5hYmxlLXdpZmk9bm8sd2lyZWxlc3MtdG9vbHMsd3BhLXN1cHBsaWNhbnQgd2lyZWxlc3MtdG9vbHMiCi1QQUNLQUdFQ09ORklHW2lmdXBkb3duXSA9ICItLWVuYWJsZS1pZnVwZG93biwtLWRpc2FibGUtaWZ1cGRvd24iCi1QQUNLQUdFQ09ORklHW25ldGNvbmZpZ10gPSAiLS13aXRoLW5ldGNvbmZpZz15ZXMsLS13aXRoLW5ldGNvbmZpZz1ubyIKLVBBQ0tBR0VDT05GSUdbcXQ0LXgxMS1mcmVlXSA9ICItLWVuYWJsZS1xdCwtLWRpc2FibGUtcXQscXQ0LXgxMS1mcmVlIgotCi1QQUNLQUdFUyA9KyAibGlibm11dGlsIGxpYm5tZ2xpYiBsaWJubWdsaWItdnBuIFwKLSAgJHtQTn0tbm10dWkgJHtQTn0tbm10dWktZG9jIFwKLSAgJHtQTn0tYWRzbCBcCi0iCi0KLUZJTEVTX2xpYm5tdXRpbCArPSAiJHtsaWJkaXJ9L2xpYm5tLXV0aWwuc28uKiIKLUZJTEVTX2xpYm5tZ2xpYiArPSAiJHtsaWJkaXJ9L2xpYm5tLWdsaWIuc28uKiIKLUZJTEVTX2xpYm5tZ2xpYi12cG4gKz0gIiR7bGliZGlyfS9saWJubS1nbGliLXZwbi5zby4qIgotCi1GSUxFU18ke1BOfS1hZHNsID0gIiR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9saWJubS1kZXZpY2UtcGx1Z2luLWFkc2wuc28iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZXhlY2Rpcn0gXAotICAgICR7bGliZGlyfS9wcHBkLyovbm0tcHBwZC1wbHVnaW4uc28gXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLnNvIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtiYXNlX2xpYmRpcn0vdWRldi8qIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKLSIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gImlwdGFibGVzIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnZG5zbWFzcScsIGQpfSBcCi0iCi1SQ09ORkxJQ1RTXyR7UE59ID0gImNvbm5tYW4iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiIFwKLSAgICAke2RhdGFkaXJ9L05ldHdvcmtNYW5hZ2VyL2dkYi1jbWQgXAotICAgICR7bGliZGlyfS9wcHBkLyovKi5sYSBcCi0gICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyoubGEgXAotIgotCi1GSUxFU18ke1BOfS1ubXR1aSA9ICIgXAotICAgICR7YmluZGlyfS9ubXR1aSBcCi0gICAgJHtiaW5kaXJ9L25tdHVpLWVkaXQgXAotICAgICR7YmluZGlyfS9ubXR1aS1jb25uZWN0IFwKLSAgICAke2JpbmRpcn0vbm10dWktaG9zdG5hbWUgXAotIgotCi1GSUxFU18ke1BOfS1ubXR1aS1kb2MgPSAiIFwKLSAgICAke21hbmRpcn0vbWFuMS9ubXR1aSogXAotIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiTmV0d29ya01hbmFnZXIuc2VydmljZSBOZXR3b3JrTWFuYWdlci1kaXNwYXRjaGVyLnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1yZiAke0R9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29wZW5vYmV4XzEuNy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb3Blbm9iZXhfMS43LjIuYmIKaW5kZXggMDUzYzgwYS4uMmRiNDhmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb3Blbm9iZXhfMS43LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb3Blbm9iZXhfMS43LjIuYmIKQEAgLTIxLDYgKzIxLDcgQEAKIFMgPSAiJHtXT1JLRElSfS8ke0JQfS1Tb3VyY2UiCiAKIEVYVFJBX09FQ09ORiA9ICIgLURDTUFLRV9TS0lQX1JQQVRIPU9OICIKK0VYVFJBX09FQ01BS0UgKz0gIi1EQlVJTERfRE9DVU1FTlRBVElPTj1PRkYiCiAKICMtLWVuYWJsZS1hcHBzIC0tZW5hYmxlLXN5c2xvZwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtdG9vbHMtYmx1ZXRvb3RoLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXRvb2xzLWJsdWV0b290aC5iYgppbmRleCAwZWRlNWU1Li5mMmExNmRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtdG9vbHMtYmx1ZXRvb3RoLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC10b29scy1ibHVldG9vdGguYmIKQEAgLTIsNyArMiw3IEBACiAjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCiAKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiAKIFNVTU1BUlkgPSAiU2V0IG9mIEJsdWV0b290aCByZWxhdGVkIHRvb2xzIGZvciBpbmNsdXNpb24gaW4gaW1hZ2VzIgpAQCAtMTUsMTMgKzE1LDEzIEBACiAKIFJERVBFTkRTX2JsdWV6NCA9ICIgXAogICAgIG9iZXhmdHAgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsICdsaWJhc291bmQtbW9kdWxlLWJsdWV6JywgJycsIGQpfSBcCiAiCiAKIFJERVBFTkRTX2JsdWV6NSA9ICIgXAogICAgIGJsdWV6NS1ub2luc3QtdG9vbHMgXAogICAgIGJsdWV6NS1vYmV4IFwKICAgICBibHVlejUtdGVzdHRvb2xzICBcCi0gICAgbGliYXNvdW5kLW1vZHVsZS1ibHVleiBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgXAogICAgICAgICAncHVsc2VhdWRpby1tb2R1bGUtYmx1ZXRvb3RoLWRpc2NvdmVyIFwKICAgICAgICAgIHB1bHNlYXVkaW8tbW9kdWxlLWJsdWV0b290aC1wb2xpY3kgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL2ZpbGVzL21ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL2ZpbGVzL21ha2VmaWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMWJmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvZmlsZXMvbWFrZWZpbGUucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRGlzYWJsZSBidWlsZGluZyBzb21lIHRoaW5ncyB3ZSBkb24ndCBuZWVkCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlnXQorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KKworLS0tCisgTWFrZWZpbGUgfCAgICAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDMzYmQyZDAuLjg0MjYyYmQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xMTUsNyArMTE1LDggQEAgTERGTEFHU19BUyA9IC1zaGFyZWQgLVdsLC1zb25hbWUsbGliJHtNUVRUTElCX0FTfS5zby4ke01BSk9SX1ZFUlNJT059IC1scHRocmVhZAorIAorIGFsbDogYnVpbGQKKyAJCistYnVpbGQ6IHwgbWtkaXIgJHtNUVRUTElCX0NfVEFSR0VUfSAke01RVFRMSUJfQ1NfVEFSR0VUfSAke01RVFRMSUJfQV9UQVJHRVR9ICR7TVFUVExJQl9BU19UQVJHRVR9ICR7TVFUVFZFUlNJT05fVEFSR0VUfSAke1NZTkNfU0FNUExFU30gJHtBU1lOQ19TQU1QTEVTfSAke1NZTkNfVEVTVFN9ICR7U1lOQ19TU0xfVEVTVFN9ICR7QVNZTkNfVEVTVFN9ICR7QVNZTkNfU1NMX1RFU1RTfQorK2J1aWxkOiB8IG1rZGlyICR7TVFUVExJQl9DX1RBUkdFVH0gJHtNUVRUTElCX0NTX1RBUkdFVH0gJHtNUVRUTElCX0FfVEFSR0VUfSAke01RVFRMSUJfQVNfVEFSR0VUfQorKyMke01RVFRWRVJTSU9OX1RBUkdFVH0gJHtTWU5DX1NBTVBMRVN9ICR7QVNZTkNfU0FNUExFU30gJHtTWU5DX1RFU1RTfSAke1NZTkNfU1NMX1RFU1RTfSAke0FTWU5DX1RFU1RTfSAke0FTWU5DX1NTTF9URVNUU30KKyAKKyBjbGVhbjoKKyAJcm0gLXJmICR7YmxkZGlyfS8qCistLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9wYWhvLW1xdHQtY18xLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9wYWhvLW1xdHQtY18xLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWMzODBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMi4wLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiUGFobyBNUVRUIC0gQyBsaWJyYXJpZXMgZm9yIHRoZSBNUVRUIGFuZCBNUVRULVNOIHByb3RvY29scyIKK0RFU0NSSVBUSU9OID0gIkNsaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVuIGFuZCBzdGFuZGFyZCBtZXNzYWdpbmcgcHJvdG9jb2xzIGZvciBNYWNoaW5lLXRvLU1hY2hpbmUgKE0yTSkgYW5kIEludGVybmV0IG9mIFRoaW5ncyAoSW9UKS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhaG8vIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT0zYWRmY2M3MGY1YWViN2E0NGYzZjliNDk1YWExZmJmMyBcCisgICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT02NTljOGU5MmE0MGI2ZGYxZDllM2RjY2Y1YWU0NWEwOCBcCisgICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9YTAwZDZmOWFiNTQyYmU3YmFiYzJkOGI4MGQ1ZDJhNGMgXAorICAgICAgICBmaWxlOi8vYWJvdXQuaHRtbDttZDU9ZGNkZTQzOGQ3M2NmNDIzOTNkYTlkNDBmYWJjMGM5YmMgXAorIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZWNsaXBzZS9wYWhvLm1xdHQuYztwcm90b2NvbD1odHRwIgorCitTUkNSRVYgPSAiZThkMzRkYTI0YWQ4MDdmNWU2OThiMzI3ZDY3NTkxZmQ0YjRiZmE3ZSIKKworREVQRU5EUyA9ICJvcGVuc3NsIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL291dHB1dCAtc28gbGlicGFoby1tcXR0M2EgJHtEfSR7bGliZGlyfQorICAgIG9lX2xpYmluc3RhbGwgLUMgYnVpbGQvb3V0cHV0IC1zbyBsaWJwYWhvLW1xdHQzYXMgJHtEfSR7bGliZGlyfQorICAgIG9lX2xpYmluc3RhbGwgLUMgYnVpbGQvb3V0cHV0IC1zbyBsaWJwYWhvLW1xdHQzYyAgJHtEfSR7bGliZGlyfQorICAgIG9lX2xpYmluc3RhbGwgLUMgYnVpbGQvb3V0cHV0IC1zbyBsaWJwYWhvLW1xdHQzY3MgJHtEfSR7bGliZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBpbnN0YWxsIC1tIDY0NCBzcmMvTVFUVEFzeW5jLmggJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBpbnN0YWxsIC1tIDY0NCBzcmMvTVFUVENsaWVudC5oICR7RH0ke2luY2x1ZGVkaXJ9CisgICAgaW5zdGFsbCAtbSA2NDQgc3JjL01RVFRDbGllbnRQZXJzaXN0ZW5jZS5oICR7RH0ke2luY2x1ZGVkaXJ9Cit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waG9uZXQtdXRpbHMvcGhvbmV0LXV0aWxzLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGhvbmV0LXV0aWxzL3Bob25ldC11dGlscy8wMDAxLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYjdlNWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGhvbmV0LXV0aWxzL3Bob25ldC11dGlscy8wMDAxLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gZjdhZDlhNDQ3MWNlZTIzMjRmMjE2YTBkODJiYTgwOTdlYzc0NmM1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE1IEp1bCAyMDE3IDExOjQ4OjEyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgbGltaXRzLmggZm9yIFBBVEhfTUFYCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvcG5zdGF0LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9wbnN0YXQuYyBiL3NyYy9wbnN0YXQuYworaW5kZXggNjYxYTViYy4uNzYwNjhlNiAxMDA2NDQKKy0tLSBhL3NyYy9wbnN0YXQuYworKysrIGIvc3JjL3Buc3RhdC5jCitAQCAtMzUsNiArMzUsNyBAQAorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorIHN0cnVjdCBmZAorIHsKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waG9uZXQtdXRpbHMvcGhvbmV0LXV0aWxzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waG9uZXQtdXRpbHMvcGhvbmV0LXV0aWxzX2dpdC5iYgppbmRleCA1NTg5OTYzLi4zYzU5OTk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGhvbmV0LXV0aWxzL3Bob25ldC11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Bob25ldC11dGlscy9waG9uZXQtdXRpbHNfZ2l0LmJiCkBAIC0yLDcgKzIsOSBAQAogSE9NRVBBR0UgPSAiIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRvcmlvdXMub3JnL21lZWdvLWNlbGx1bGFyL3Bob25ldC11dGlscy5naXQ7YnJhbmNoPW1hc3RlciIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0b3Jpb3VzLm9yZy9tZWVnby1jZWxsdWxhci9waG9uZXQtdXRpbHMuZ2l0O2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBcCisgICAgICAgICAgICIKIFBSID0gInIyIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIFNSQ1JFViA9ICI0YWNmYTcyMGZkMzdkMTc4YTA0OGZjMmJlMTcxODAxMzdkNGE3MGVhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J0b3JyZW50L3J0b3JyZW50X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ydG9ycmVudC9ydG9ycmVudF9naXQuYmIKaW5kZXggYWYxYzRkNi4uYzczMWNmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J0b3JyZW50L3J0b3JyZW50X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnRvcnJlbnQvcnRvcnJlbnRfZ2l0LmJiCkBAIC0xNCw2ICsxNCwxMCBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8yLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zZXIybmV0L3NlcjJuZXRfMi45LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4OGM1ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8yLjkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzZXJpYWwgdG8gbmV0d29yayBwcm94eSIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zZXIybmV0LyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJhZTMwMTliNGM2ZGM0MTM4YzIxNzg2NGJkMDQzMzFmIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L3NlcjJuZXQvc2VyMm5ldC9zZXIybmV0LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgwMDExYWMwZTYwYmJkY2I2NWYxZDdhODYyNTFlM2YzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkZWUxZTY5OTAzY2Y0MDliZGM2ZjMyNDAzYTU2NmNiYzYwMDZhYTllMmE0ZDZmOGYxMmI5MGRmZDVjYTBkMGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2VyMm5ldC9zZXIybmV0XzMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zZXIybmV0L3NlcjJuZXRfMy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwODY1MGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2VyMm5ldC9zZXIybmV0XzMuNC5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIkEgc2VyaWFsIHRvIG5ldHdvcmsgcHJveHkiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvc2VyMm5ldC8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYWUzMDE5YjRjNmRjNDEzOGMyMTc4NjRiZDA0MzMxZiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9zZXIybmV0L3NlcjJuZXQvc2VyMm5ldC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NjIyNzRkNzgzNTM0Mjc2YTlmZWFjOTEzYjdkOGM0ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkODQ2MDY2ZTI3YzMwNzI1NjU5OTA3NDVkMDMwMzU3YWEwYzI3OGY5NmI3ZDFkNGY1OTAyMzM0N2MxZGI4ODI0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvZnQ2Ni9maWxlcy9maXgtYXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29mdDY2L2ZpbGVzL2ZpeC1hci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYxZmZkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29mdDY2L2ZpbGVzL2ZpeC1hci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgIDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYwotQEAgLTcsNSArNyw2IEBAIEFDX1BST0dfQ0MKLSBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQotIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGUgbGliL01ha2VmaWxlIHRvb2xzL01ha2VmaWxlXSkKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhbRlRESV0sIFtsaWJmdGRpID49IDAuMTNdKQotIEFDX09VVFBVVAotIEFNX1BST0dfQ0NfQ19PCi0rQU1fUFJPR19BUgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvZnQ2Ni9zb2Z0NjZfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvZnQ2Ni9zb2Z0NjZfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTZmNTgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2Z0NjYvc29mdDY2X2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBhbmQgdG9vbHMgZm9yIFNvZnQ2NkFERCBhbmQgcmVsYXRlZCBTRFIgcmFkaW8gcmVjZWl2ZXJzIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgIgotCi1QTkJMQUNLTElTVFtzb2Z0NjZdID89ICJCUk9LRU46IGRlcGVuZHMgb24gYnJva2VuIGxpYmZ0ZGkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLURFUEVORFMgPSAibGliZnRkaSIKLQotUFYgPSAiMC4xLjMrZ2l0ciR7U1JDUFZ9IgotUFIgPSAicjEiCi0KLVNSQ1JFViA9ICJhMWRhYjI1ZTczODk2YzkwYzk4MjI3YWM4MDU1ZjIyN2I4MzBkNTEyIgotU1JDX1VSSSA9ICJnaXQ6Ly9ob21lLmhvcnN0ZW4uY29tL3NvZnQ2NiBcCi1maWxlOi8vZml4LWFyLnBhdGNoIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS9saWJ0ZWxlcGF0aHkvZG91YmxlZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS9saWJ0ZWxlcGF0aHkvZG91YmxlZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzczN2ZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvbGlidGVsZXBhdGh5L2RvdWJsZWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLUZpeCBkb3VibGUgcmVmZXJlbmNlIHRvIHRoaXMgZmlsZSB0byB3b3JrIHdpdGggcmVjZW50IGF1dG9jb25mK2F1dG9tYWtlCi0KLVJQIDEvMi8xMAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBsaWJ0ZWxlcGF0aHktMC4zLjMvc3JjL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlidGVsZXBhdGh5LTAuMy4zLm9yaWcvc3JjL01ha2VmaWxlLmFtCTIwMTAtMDItMDEgMTM6MTM6NTAuODY5MDM4OTg0ICswMDAwCi0rKysgbGlidGVsZXBhdGh5LTAuMy4zL3NyYy9NYWtlZmlsZS5hbQkyMDEwLTAyLTAxIDEzOjE0OjIzLjI2Nzc4OTQ1NiArMDAwMAotQEAgLTI3LDcgKzI3LDYgQEAKLSAgICAgdHAtY2hhbi10eXBlLXRleHQtZ2VuLmggXAotICAgICB0cC1jaGFuLXR5cGUtdHViZXMtZ2VuLmggXAotICAgICB0cC1jb25uLWlmYWNlLWFsaWFzaW5nLWdlbi5oIFwKLS0gICAgdHAtY29ubi1pZmFjZS1hdmF0YXJzLWdlbi5oIFwKLSAgICAgdHAtY29ubi1pZmFjZS1jYXBhYmlsaXRpZXMtZ2VuLmggXAotICAgICB0cC1jb25uLWlmYWNlLWNvbnRhY3QtaW5mby1nZW4uaCBcCi0gICAgIHRwLWNvbm4taWZhY2UtZm9yd2FyZGluZy1nZW4uaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L2xpYnRlbGVwYXRoeS9wcmVmZXJfcHl0aG9uXzIuNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvbGlidGVsZXBhdGh5L3ByZWZlcl9weXRob25fMi41LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzY3OWFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvbGlidGVsZXBhdGh5L3ByZWZlcl9weXRob25fMi41LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogbGlidGVsZXBhdGh5LTAuMy4xL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnRlbGVwYXRoeS0wLjMuMS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDA3LTExLTIyIDE5OjA1OjU2LjAwMDAwMDAwMCArMDAwMAotKysrIGxpYnRlbGVwYXRoeS0wLjMuMS9jb25maWd1cmUuYWMJMjAwOC0wMS0wNCAxMjowNzoyOC4wMDAwMDAwMDAgKzAwMDAKLUBAIC01MSw3ICs1MSw3IEBACi0gICBBQ19NU0dfRVJST1IoW3hzbHRwcm9jIChmcm9tIHRoZSBsaWJ4c2x0IHNvdXJjZSBwYWNrYWdlKSBpcyByZXF1aXJlZF0pCi0gZmkKLSAKLS1BQ19DSEVDS19QUk9HUyhbUFlUSE9OXSwgW3B5dGhvbjIuMyBweXRob24yLjQgcHl0aG9uMi41IHB5dGhvbl0pCi0rQUNfQ0hFQ0tfUFJPR1MoW1BZVEhPTl0sIFtweXRob24yLjUgcHl0aG9uMi40IHB5dGhvbjIuMyBweXRob25dKQotIGlmIHRlc3QgLXogIiRQWVRIT04iOyB0aGVuCi0gICBBQ19NU0dfRVJST1IoW1B5dGhvbiBpcyByZXF1aXJlZCB0byBjb21waWxlIHRoaXMgcGFja2FnZV0pCi0gZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvbGlidGVsZXBhdGh5XzAuMy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS9saWJ0ZWxlcGF0aHlfMC4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4M2JkNWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS9saWJ0ZWxlcGF0aHlfMC4zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIlRlbGVwYXRoeSBmcmFtZXdvcmsiCi1ERVNDUklQVElPTiA9ICJUZWxlcGF0aHkgaXMgYSBELUJ1cyBmcmFtZXdvcmsgZm9yIHVuaWZ5aW5nIHJlYWwgdGltZSBcCi1jb21tdW5pY2F0aW9uLCBpbmNsdWRpbmcgaW5zdGFudCBtZXNzYWdpbmcsIHZvaWNlIGNhbGxzIGFuZCB2aWRlbyBjYWxscy4gIEl0IFwKLWFic3RyYWN0cyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHByb3RvY29scyB0byBwcm92aWRlIGEgdW5pZmllZCBpbnRlcmZhY2UgZm9yIFwKLWFwcGxpY2F0aW9ucy4iCi1IT01FUEFHRSA9ICJodHRwOi8vdGVsZXBhdGh5LmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZGJ1cyBkYnVzLWdsaWIgdGVsZXBhdGh5LWdsaWIgbGlieHNsdC1uYXRpdmUiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy90cC1jb25uLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9NGM1ODA2OWY3N2Q2MDFjYzU5MjAwYmNlNTM5NmM3Y2IiCi1QUiA9ICJyNSIKLQotU1JDX1VSSSA9ICJodHRwOi8vdGVsZXBhdGh5LmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9saWJ0ZWxlcGF0aHkvbGlidGVsZXBhdGh5LSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL3ByZWZlcl9weXRob25fMi41LnBhdGNoIFwKLSAgICBmaWxlOi8vZG91YmxlZml4LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ5MGNhMWEwYzYxNGQ0NDY2Mzk0YjcyZDQzYmY3MzcwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwZDIzMGJlODU1MTI1MTYzNTc5NzQzNDE4MjAzYzZmNmJlMmYxMGY5OGM0ZjA2NTczNWMxZGM5ZWQxMTU4NzgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob25uYXRpdmUKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdGVsZXBhdGh5IFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSIKLQotUE5CTEFDS0xJU1RbbGlidGVsZXBhdGh5XSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYwOS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1taXNzaW9uLWNvbnRyb2wvdG1jLU1ha2VmaWxlLWZpeC1yYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktbWlzc2lvbi1jb250cm9sL3RtYy1NYWtlZmlsZS1maXgtcmFjZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNlMWRhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1taXNzaW9uLWNvbnRyb2wvdG1jLU1ha2VmaWxlLWZpeC1yYWNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTdW4sIDIyIFNlcCAyMDEzIDIzOjIxOjAxIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy9NYWtlZmlsZS5hbTogZml4IHJhY2UgaXNzdWUgZm9yIF9nZW4vZ3R5cGVzLmggYW5kIF9nZW4vZ3R5cGVzLWJvZHkuaAotCi1UaGVyZSBtaWdodCBiZSBhbiBlcnJvciB3aGVuIHBhcmFsbGVsIGJ1aWxkOgotCi1bc25pcF0KLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgRmlsZSAiL3BhdGgvdG8vdG9vbHMvZ2xpYi1ndHlwZXMtZ2VuZXJhdG9yLnB5IiwgbGluZSAzMDQsIGluIDxtb2R1bGU+Ci0gICAgR1R5cGVzR2VuZXJhdG9yKGRvbSwgYXJndlsxXSwgYXJndlsyXSkoKQotICBGaWxlICIvcGF0aC90by90b29scy9nbGliLWd0eXBlcy1nZW5lcmF0b3IucHkiLCBsaW5lIDI5NSwgaW4gX19jYWxsX18KLSAgICBmaWxlX3NldF9jb250ZW50cyhzZWxmLm91dHB1dCArICcuaCcsICcnLmpvaW4oc2VsZi5oZWFkZXIpKQotICBGaWxlICIvcGF0aC90by90b29scy9saWJ0cGNvZGVnZW4ucHkiLCBsaW5lIDQyLCBpbiBmaWxlX3NldF9jb250ZW50cwotICAgIG9zLnJlbmFtZShmaWxlbmFtZSArICcudG1wJywgZmlsZW5hbWUpCi1PU0Vycm9yOiBbRXJybm8gMl0gTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotW3NuaXBdCi0KLVRoaXMgaXMgYSByYWNlIGlzc3VlLCB0aGUgX2dlbi9ndHlwZXMuaCBhbmQgX2dlbi9ndHlwZXMtYm9keS5oIG1heQotd3JpdGUocmVtb3ZlL3JlbmFtZSkgX2dlbi9ndHlwZXMudG1wIGF0IHRoZSBzYW1lIHRpbWUsIHRoZW4gdGhlcmUgd291bGQKLWJlIHRoZSBlcnJvci4KLQotVGhlcmUgd2FzIGEgc2ltaWxhciBidWcgaW4gdGVsZXBhdGh5LWdsaWIgd2hpY2ggd2FzIGFscmVhZHkgZml4ZWQsIHdlIHVzZSB0aGUKLXNpbWlsYXIgcGF0Y2ggdG8gZml4IGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCAgIDE4ICsrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTI4OCw3ICsyODgsMTEgQEAgX2dlbi9pbnRlcmZhY2VzLWJvZHkuaDogX2dlbi9tY2QueG1sIFwKLSAJCSQodG9vbHNfZGlyKS9nbGliLWludGVyZmFjZXMtYm9keS1nZW5lcmF0b3IueHNsIFwKLSAJCSQ8ID4gJEAKLSAKLS1fZ2VuL2d0eXBlcy5oIF9nZW4vZ3R5cGVzLWJvZHkuaDogX2dlbi9tY2QueG1sIFwKLSsjIGRvIG5vdGhpbmcsIG91dHB1dCBhcyBhIHNpZGUtZWZmZWN0Ci0rX2dlbi9ndHlwZXMuaDogX2dlbi9ndHlwZXMtYm9keS5oCi0rCUA6Ci0rCi0rX2dlbi9ndHlwZXMtYm9keS5oOiBfZ2VuL21jZC54bWwgXAotIAkkKHRvcF9zcmNkaXIpL3Rvb2xzL2dsaWItZ3R5cGVzLWdlbmVyYXRvci5weQotIAkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkKHRvcF9zcmNkaXIpL3Rvb2xzL2dsaWItZ3R5cGVzLWdlbmVyYXRvci5weSBcCi0gCQkkPCBfZ2VuL2d0eXBlcyBtYwotQEAgLTMwOSw3ICszMTMsMTEgQEAgX2dlbi8lLnhtbDogJS54bWwgJCh3aWxkY2FyZCAkKHRvcF9zcmNkaXIpL3htbC8qLnhtbCkgTWFrZWZpbGUuYW0KLSAJJChBTV9WX0dFTikkKFhTTFRQUk9DKSAkKFhTTFRQUk9DRkxBR1MpIC0teGluY2x1ZGUgJCh0b29sc19kaXIpL2lkZW50aXR5LnhzbCBcCi0gCQkkPCA+ICRACi0gCi0tX2dlbi9jbGktJS1ib2R5LmggX2dlbi9jbGktJS5oOiBfZ2VuLyUueG1sIFwKLSsjIGRvIG5vdGhpbmcsIG91dHB1dCBhcyBhIHNpZGUtZWZmZWN0Ci0rX2dlbi9jbGktJS5oOiBfZ2VuL2NsaS0lLWJvZHkuaAotKwlAOgotKwotK19nZW4vY2xpLSUtYm9keS5oOiBfZ2VuLyUueG1sIFwKLSAJJCh0b29sc19kaXIpL2dsaWItY2xpZW50LWdlbi5weSBNYWtlZmlsZS5hbQotIAkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkKHRvb2xzX2RpcikvZ2xpYi1jbGllbnQtZ2VuLnB5IFwKLSAJCS0tZ3JvdXA9YGVjaG8gJCogfCB0ciB4LSB4X2AgXAotQEAgLTMxNyw3ICszMjUsMTEgQEAgX2dlbi9jbGktJS1ib2R5LmggX2dlbi9jbGktJS5oOiBfZ2VuLyUueG1sIFwKLSAJCS0tdHAtcHJveHktYXBpPTAuNy42IFwKLSAJCSQ8IE1jX0NsaSBfZ2VuL2NsaS0kKgotIAotLV9nZW4vc3ZjLSUuYyBfZ2VuL3N2Yy0lLmg6IF9nZW4vJS54bWwgXAotKyMgZG8gbm90aGluZywgb3V0cHV0IGFzIGEgc2lkZS1lZmZlY3QKLStfZ2VuL3N2Yy0lLmg6IF9nZW4vc3ZjLSUuYwotKwlAOgotKwotK19nZW4vc3ZjLSUuYzogX2dlbi8lLnhtbCBcCi0gCSQodG9vbHNfZGlyKS9nbGliLWdpbnRlcmZhY2UtZ2VuLnB5IE1ha2VmaWxlLmFtCi0gCSQoQU1fVl9HRU4pJChQWVRIT04pICQodG9vbHNfZGlyKS9nbGliLWdpbnRlcmZhY2UtZ2VuLnB5IFwKLSAJCS0tZmlsZW5hbWU9X2dlbi9zdmMtJCogXAotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1taXNzaW9uLWNvbnRyb2xfNS4xNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktbWlzc2lvbi1jb250cm9sXzUuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE0ZDVkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1taXNzaW9uLWNvbnRyb2xfNS4xNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJDZW50cmFsIGNvbnRyb2wgZm9yIFRlbGVwYXRoeSBJTSBjb25uZWN0aW9uIG1hbmFnZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3RlbGVwYXRoeS5mcmVlZGVza3RvcC5vcmcvd2lraS9NaXNzaW9uX0NvbnRyb2wvIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcmVxdWVzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWY4MDUzNGQ5YWYxYzMzMjkxYjNiNzk2MDlmMTk2ZWIyIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJsaWJ0ZWxlcGF0aHkgZGJ1cy1nbGliIGdjb25mIGxpYnhzbHQtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly90ZWxlcGF0aHkuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL3RlbGVwYXRoeS1taXNzaW9uLWNvbnRyb2wvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtYy1NYWtlZmlsZS1maXgtcmFjZS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQyMTExNWEzNWI5ZTQyNzgwNzMyNjg3N2Y4NmU3ZjQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE0Y2ViN2Q1MzUzNWI0M2Q0NGI4MjcxYWQxMTMxOWQxZDBmZTZkMTkzZDE1NDYzNmI5ZTYyYjQyNzk5Yjk3MjMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9ubmF0aXZlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3Vwb3dlcl0gPSAiLS1lbmFibGUtdXBvd2VyLC0tZGlzYWJsZS11cG93ZXIsdXBvd2VyIgotCi0jIHRvIHNlbGVjdCBjb25ubWFuIG9yIG5tIHlvdSBuZWVkIHRvIHVzZSAiY29ubmVjdGl2aXR5IiBhbmQgImNvbm5tYW4iIG9yICJubSIsIGRlZmF1bHQgaXMgdG8gZGlzYWJsZSBib3RoCi1QQUNLQUdFQ09ORklHW2Nvbm5lY3Rpdml0eV0gPSAiLC0td2l0aC1jb25uZWN0aXZpdHk9bm8iCi1QQUNLQUdFQ09ORklHW2Nvbm5tYW5dID0gIi0td2l0aC1jb25uZWN0aXZpdHk9Y29ubm1hbiwsY29ubm1hbiIKLVBBQ0tBR0VDT05GSUdbbm1dID0gIi0td2l0aC1jb25uZWN0aXZpdHk9bm0sLG5ldHdvcmttYW5hZ2VyIgotCi1QQUNLQUdFUyA9KyAiIFwKLSAgICBsaWJtaXNzaW9uY29udHJvbCBcCi0gICAgbGlibWlzc2lvbmNvbnRyb2wtY29uZmlnIFwKLSAgICBsaWJtaXNzaW9uY29udHJvbC1zZXJ2ZXIgXAotICAgIGxpYm1pc3Npb25jb250cm9sLWRldiBcCi0gICAgbGlibWlzc2lvbmNvbnRyb2wtY29uZmlnLWRldiBcCi0gICAgbGlibWlzc2lvbmNvbnRyb2wtc2VydmVyLWRldiBcCi0gICAgbGlibWlzc2lvbmNvbnRyb2wtZGJnIFwKLSAgICBsaWJtaXNzaW9uY29udHJvbC1jb25maWctZGJnIFwKLSAgICBsaWJtaXNzaW9uY29udHJvbC1zZXJ2ZXItZGJnIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cyogJHtkYXRhZGlyfS9nbGliLTIuMC9zY2hlbWFzIgotCi1GSUxFU19saWJtaXNzaW9uY29udHJvbCA9ICIke2xpYmRpcn0vbGlibWlzc2lvbmNvbnRyb2wuc28uKiIKLUZJTEVTX2xpYm1pc3Npb25jb250cm9sLWNvbmZpZyA9ICIke2xpYmRpcn0vbGlibWlzc2lvbmNvbnRyb2wtY29uZmlnLnNvLioiCi1GSUxFU19saWJtaXNzaW9uY29udHJvbC1zZXJ2ZXIgPSAiJHtsaWJkaXJ9L2xpYm1pc3Npb25jb250cm9sLXNlcnZlci5zby4qIgotCi1GSUxFU19saWJtaXNzaW9uY29udHJvbC1kZXYgPSAiJHtsaWJkaXJ9L2xpYm1pc3Npb25jb250cm9sLiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlibWlzc2lvbmNvbnRyb2wvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYm1pc3Npb25jb250cm9sLnBjIgotRklMRVNfbGlibWlzc2lvbmNvbnRyb2wtY29uZmlnLWRldiA9ICIke2xpYmRpcn0vbGlibWlzc2lvbmNvbnRyb2wtY29uZmlnLioiCi1GSUxFU19saWJtaXNzaW9uY29udHJvbC1zZXJ2ZXItZGV2ID0gIiR7bGliZGlyfS9saWJtaXNzaW9uY29udHJvbC1zZXJ2ZXIuKiIKLQotRklMRVNfbGlibWlzc2lvbmNvbnRyb2wtZGJnID0gIiR7bGliZGlyfS8uZGVidWcvbGlibWlzc2lvbmNvbnRyb2wuc28uKiIKLUZJTEVTX2xpYm1pc3Npb25jb250cm9sLWNvbmZpZy1kYmcgPSAiJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJtaXNzaW9uY29udHJvbC1jb25maWcuc28uKiIKLUZJTEVTX2xpYm1pc3Npb25jb250cm9sLXNlcnZlci1kYmcgPSAiJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJtaXNzaW9uY29udHJvbC1zZXJ2ZXIuc28uKiIKLQotUE5CTEFDS0xJU1RbdGVsZXBhdGh5LW1pc3Npb24tY29udHJvbF0gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgbGlidGVsZXBhdGh5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnRfMC45LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdF8wLjkuMy5iYgppbmRleCA5YmFlZWQxLi5hYTkzMjgzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdF8wLjkuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdF8wLjkuMy5iYgpAQCAtNDEsMTEgKzQxLDYgQEAKICAgICAtRFdJVEhfUVQ1PU9GRiBcCiAiCiAKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICJcCi0gICAgICAgICAgICAgLURCVUlMRF9URVNUSU5HPU9GRiAtREJVSUxEX0VYQU1QTEVTPU9GRiAtRFdJVEhfQ1BQPU9GRiIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICJcCi0gICAgICAgICAgICAgLURCVUlMRF9URVNUSU5HPU9GRiAtREJVSUxEX0VYQU1QTEVTPU9GRiAtRFdJVEhfUFlUSE9OPU9GRiIKLQogUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmV2ZW50IGdsaWIgcHl0aG9uIgogUEFDS0FHRUNPTkZJR1tsaWJldmVudF0gPSAiLURXSVRIX0xJQkVWRU5UPU9OLC1EV0lUSF9MSUJFVkVOVD1PRkYsbGliZXZlbnQsIgogUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi1EV0lUSF9QWVRIT049T04sLURXSVRIX1BZVEhPTj1PRkYscHl0aG9uLCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXBfMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcF8xLjAuYmIKaW5kZXggY2JmMzA2MS4uMjEyOWUzNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcF8xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcF8xLjAuYmIKQEAgLTksMTMgKzksMTMgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA3M2RjMzFjY2IyZWJlZDcwZGI1NGYxZThhZWI0YzMzIgogREVQRU5EUyA9ICJycG0gaW5kZW50LW5hdGl2ZSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXQudW1pcC5vcmcvdW1pcC5naXQgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2psYW56YS91bWlwIFwKICAgICAgICAgICAgZmlsZTovL2FkZC1kZXBlbmRlbmN5LXRvLXN1cHBvcnQtcGFyYWxsZWwtY29tcGlsYXRpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbWlwNmQgXAogICAgICAgICAgICBmaWxlOi8vbWlwNmQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1mb3JtYXQtc3RyaW5nLXRvLWZwcmludGYtY2FsbC5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ1JFViA9ICI0Mjg5NzRjMmQwZDhlNzVhMjc1MGEzYWIwNDg4NzA4YzVkZmRkOGUzIgorU1JDUkVWID0gIjdkNjcyMDljZDFiYmEyZGQwZTE4M2EwZmEwN2VlZWYwNzk2NGRkMTQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96YWJiaXgvemFiYml4XzMuMC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfMy4wLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlN2Q2ZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfMy4wLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4tc291cmNlIG1vbml0b3Jpbmcgc29sdXRpb24gZm9yIHlvdXIgSVQgaW5mcmFzdHJ1Y3R1cmUiCi1ERVNDUklQVElPTiA9ICJcCi1aQUJCSVggaXMgc29mdHdhcmUgdGhhdCBtb25pdG9ycyBudW1lcm91cyBwYXJhbWV0ZXJzIG9mIGEgbmV0d29yayBhbmQgdGhlIFwKLWhlYWx0aCBhbmQgaW50ZWdyaXR5IG9mIHNlcnZlcnMuIFpBQkJJWCB1c2VzIGEgZmxleGlibGUgbm90aWZpY2F0aW9uIFwKLW1lY2hhbmlzbSB0aGF0IGFsbG93cyB1c2VycyB0byBjb25maWd1cmUgZS1tYWlsIGJhc2VkIGFsZXJ0cyBmb3IgdmlydHVhbGx5IFwKLWFueSBldmVudC4gVGhpcyBhbGxvd3MgYSBmYXN0IHJlYWN0aW9uIHRvIHNlcnZlciBwcm9ibGVtcy4gWkFCQklYIG9mZmVycyBcCi1leGNlbGxlbnQgcmVwb3J0aW5nIGFuZCBkYXRhIHZpc3VhbGlzYXRpb24gZmVhdHVyZXMgYmFzZWQgb24gdGhlIHN0b3JlZCBcCi1kYXRhLiBUaGlzIG1ha2VzIFpBQkJJWCBpZGVhbCBmb3IgY2FwYWNpdHkgcGxhbm5pbmcuIFwKLVwKLVpBQkJJWCBzdXBwb3J0cyBib3RoIHBvbGxpbmcgYW5kIHRyYXBwaW5nLiBBbGwgWkFCQklYIHJlcG9ydHMgYW5kIFwKLXN0YXRpc3RpY3MsIGFzIHdlbGwgYXMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGEgXAotd2ViLWJhc2VkIGZyb250IGVuZC4gQSB3ZWItYmFzZWQgZnJvbnQgZW5kIGVuc3VyZXMgdGhhdCB0aGUgc3RhdHVzIG9mIFwKLXlvdXIgbmV0d29yayBhbmQgdGhlIGhlYWx0aCBvZiB5b3VyIHNlcnZlcnMgY2FuIGJlIGFzc2Vzc2VkIGZyb20gYW55IFwKLWxvY2F0aW9uLiBQcm9wZXJseSBjb25maWd1cmVkLCBaQUJCSVggY2FuIHBsYXkgYW4gaW1wb3J0YW50IHJvbGUgaW4gXAotbW9uaXRvcmluZyBJVCBpbmZyYXN0cnVjdHVyZS4gVGhpcyBpcyBlcXVhbGx5IHRydWUgZm9yIHNtYWxsIFwKLW9yZ2FuaXNhdGlvbnMgd2l0aCBhIGZldyBzZXJ2ZXJzIGFuZCBmb3IgbGFyZ2UgY29tcGFuaWVzIHdpdGggYSBcCi1tdWx0aXR1ZGUgb2Ygc2VydmVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnphYmJpeC5jb20vIgotU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvSW50ZXJuZXQiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMwMGU5MzhhZDMwMzE0N2ZlZGUyMjk0ZWQ3OGZlMDJlIgotREVQRU5EUyAgPSAib3BlbmxkYXAgdmlydHVhbC9saWJpY29udiIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vamFpc3QuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvemFiYml4L1pBQkJJWCUyMExhdGVzdCUyMFN0YWJsZS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICBmaWxlOi8vemFiYml4LWFnZW50LnNlcnZpY2UgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjdmNDE4NTAzOTdkMjA3OGNjYWU0YjczODlmOWEwMDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWRmM2UxMDY0MjdlZDIxNTQ3YjgxMTkwNDlhMTYxMDkyZjU5N2QwNDUwN2Y5ZWI1MzU5NTFhOWVlODg3YTQ3NiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpbnV4LWtlcm5lbC1iYXNlIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ6YWJiaXgtYWdlbnQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgemFiYml4IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItciAtZyB6YWJiaXggLWQgL3Zhci9saWIvemFiYml4IFwKLSAgICAtcyAvc2Jpbi9ub2xvZ2luIC1jIFwiWmFiYml4IE1vbml0b3JpbmcgU3lzdGVtXCIgemFiYml4IFwKLSIKLQotS0VSTkVMX1ZFUlNJT04gPSAiJHtAZ2V0X2tlcm5lbHZlcnNpb25faGVhZGVycygnJHtTVEFHSU5HX0tFUk5FTF9ESVJ9Jyl9IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKLSAgICAtLWVuYWJsZS1hZ2VudCBcCi0gICAgLS1lbmFibGUtaXB2NiBcCi0gICAgLS13aXRoLW5ldC1zbm1wIFwKLSAgICAtLXdpdGgtbGRhcD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotICAgIC0td2l0aC1qYWJiZXIgXAotICAgIC0td2l0aC11bml4b2RiYyBcCi0gICAgLS13aXRoLXNzaDIgXAotICAgIC0td2l0aC1zcWxpdGUzIFwKLSIKLUNGTEFHU19hcHBlbmQgPSAiIC1sbGRhcCAtbGxiZXIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBLRVJORUxfVkVSU0lPTj0iJHtLRVJORUxfVkVSU0lPTn0iCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS96YWJiaXgtYWdlbnQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICAgICAgc2VkIC1pIC1lICdzI0BTQklORElSQCMke3NiaW5kaXJ9I2cnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3phYmJpeC1hZ2VudC5zZXJ2aWNlCi0gICAgZmkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSIKLQotUkRFUEVORFNfJHtQTn0gPSAibG9ncm90YXRlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfMy4wLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF8zLjAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWI1YTZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfMy4wLjkuYmIKQEAgLTAsMCArMSw3NSBAQAorU1VNTUFSWSA9ICJPcGVuLXNvdXJjZSBtb25pdG9yaW5nIHNvbHV0aW9uIGZvciB5b3VyIElUIGluZnJhc3RydWN0dXJlIgorREVTQ1JJUFRJT04gPSAiXAorWkFCQklYIGlzIHNvZnR3YXJlIHRoYXQgbW9uaXRvcnMgbnVtZXJvdXMgcGFyYW1ldGVycyBvZiBhIG5ldHdvcmsgYW5kIHRoZSBcCitoZWFsdGggYW5kIGludGVncml0eSBvZiBzZXJ2ZXJzLiBaQUJCSVggdXNlcyBhIGZsZXhpYmxlIG5vdGlmaWNhdGlvbiBcCittZWNoYW5pc20gdGhhdCBhbGxvd3MgdXNlcnMgdG8gY29uZmlndXJlIGUtbWFpbCBiYXNlZCBhbGVydHMgZm9yIHZpcnR1YWxseSBcCithbnkgZXZlbnQuIFRoaXMgYWxsb3dzIGEgZmFzdCByZWFjdGlvbiB0byBzZXJ2ZXIgcHJvYmxlbXMuIFpBQkJJWCBvZmZlcnMgXAorZXhjZWxsZW50IHJlcG9ydGluZyBhbmQgZGF0YSB2aXN1YWxpc2F0aW9uIGZlYXR1cmVzIGJhc2VkIG9uIHRoZSBzdG9yZWQgXAorZGF0YS4gVGhpcyBtYWtlcyBaQUJCSVggaWRlYWwgZm9yIGNhcGFjaXR5IHBsYW5uaW5nLiBcCitcCitaQUJCSVggc3VwcG9ydHMgYm90aCBwb2xsaW5nIGFuZCB0cmFwcGluZy4gQWxsIFpBQkJJWCByZXBvcnRzIGFuZCBcCitzdGF0aXN0aWNzLCBhcyB3ZWxsIGFzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhcmUgYWNjZXNzZWQgdGhyb3VnaCBhIFwKK3dlYi1iYXNlZCBmcm9udCBlbmQuIEEgd2ViLWJhc2VkIGZyb250IGVuZCBlbnN1cmVzIHRoYXQgdGhlIHN0YXR1cyBvZiBcCit5b3VyIG5ldHdvcmsgYW5kIHRoZSBoZWFsdGggb2YgeW91ciBzZXJ2ZXJzIGNhbiBiZSBhc3Nlc3NlZCBmcm9tIGFueSBcCitsb2NhdGlvbi4gUHJvcGVybHkgY29uZmlndXJlZCwgWkFCQklYIGNhbiBwbGF5IGFuIGltcG9ydGFudCByb2xlIGluIFwKK21vbml0b3JpbmcgSVQgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgaXMgZXF1YWxseSB0cnVlIGZvciBzbWFsbCBcCitvcmdhbmlzYXRpb25zIHdpdGggYSBmZXcgc2VydmVycyBhbmQgZm9yIGxhcmdlIGNvbXBhbmllcyB3aXRoIGEgXAorbXVsdGl0dWRlIG9mIHNlcnZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy56YWJiaXguY29tLyIKK1NFQ1RJT04gPSAiQXBwbGljYXRpb25zL0ludGVybmV0IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMDBlOTM4YWQzMDMxNDdmZWRlMjI5NGVkNzhmZTAyZSIKK0RFUEVORFMgID0gIm9wZW5sZGFwIHZpcnR1YWwvbGliaWNvbnYiCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2phaXN0LmRsLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3phYmJpeC9aQUJCSVglMjBMYXRlc3QlMjBTdGFibGUvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtRml4LWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgZmlsZTovL3phYmJpeC1hZ2VudC5zZXJ2aWNlIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ4OWQyMWI0NjQyNzdjMGQ0MTIxNTVjN2U1NjExYThmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ0NDVmMjZjMDI1MDA5NjgxYzI5YzliMzUwYWE2YzRlZTdiMTI0ZGRjYWYxNjA5YWUzNmM1NTk5N2JjYjhjZjIiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaW51eC1rZXJuZWwtYmFzZSBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiemFiYml4LWFnZW50LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIHphYmJpeCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLXIgLWcgemFiYml4IC1kIC92YXIvbGliL3phYmJpeCBcCisgICAgLXMgL3NiaW4vbm9sb2dpbiAtYyBcIlphYmJpeCBNb25pdG9yaW5nIFN5c3RlbVwiIHphYmJpeCBcCisiCisKK0tFUk5FTF9WRVJTSU9OID0gIiR7QGdldF9rZXJuZWx2ZXJzaW9uX2hlYWRlcnMoJyR7U1RBR0lOR19LRVJORUxfRElSfScpfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBcCisgICAgLS1lbmFibGUtYWdlbnQgXAorICAgIC0tZW5hYmxlLWlwdjYgXAorICAgIC0td2l0aC1uZXQtc25tcCBcCisgICAgLS13aXRoLWxkYXA9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKKyAgICAtLXdpdGgtamFiYmVyIFwKKyAgICAtLXdpdGgtdW5peG9kYmMgXAorICAgIC0td2l0aC1zc2gyIFwKKyAgICAtLXdpdGgtc3FsaXRlMyBcCisiCitDRkxBR1NfYXBwZW5kID0gIiAtbGxkYXAgLWxsYmVyIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgS0VSTkVMX1ZFUlNJT049IiR7S0VSTkVMX1ZFUlNJT059IgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vemFiYml4LWFnZW50LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgIHNlZCAtaSAtZSAncyNAU0JJTkRJUkAjJHtzYmluZGlyfSNnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS96YWJiaXgtYWdlbnQuc2VydmljZQorICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0iCisKK1JERVBFTkRTXyR7UE59ID0gImxvZ3JvdGF0ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvYy1pY2UvemVyb2MtaWNlLTMuNS4xLzAwMDItTW9kaWZ5LU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9jLWljZS96ZXJvYy1pY2UtMy41LjEvMDAwMi1Nb2RpZnktTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMDk2ZDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9jLWljZS96ZXJvYy1pY2UtMy41LjEvMDAwMi1Nb2RpZnktTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLVRoaXMgcGF0Y2ggbGV0cyB5b3UgYnVpbGQgSWNlIHdpdGggT3BlbkVtYmVkZGVkLiBJIGRvdWJ0IHlvdSBjb3VsZCBkbwotYSByZWd1bGFyIGJ1aWxkIGFmdGVyIGFwcGx5aW5nIHRoaXMgcGF0Y2guCi0KLUZyb20gYmM2MjJjZTc0ZmEwM2E5MzUyNzhkMjE3MzZhNWEyNTE0NjZlMTc5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvbSBSb25kZWF1IDx0b21AdHJvbmRlYXUuY29tPgotRGF0ZTogV2VkLCAxNiBBcHIgMjAxNCAxNDozNDo1MSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBNb2RpZnkgTWFrZWZpbGVzIGZvciBjcm9zcyBjb21waWxlCi0KLS0tLQotIGNvbmZpZy9NYWtlLmNvbW1vbi5ydWxlcyAgICAgICAgICAgfCAgIDIwICsrKysrKystLS0tLS0KLSBjcHAvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArKystLS0KLSBjcHAvY29uZmlnL01ha2UucnVsZXMgICAgICAgICAgICAgIHwgICAzMiArKysrKysrKysrKystLS0tLS0tLQotIGNwcC9jb25maWcvTWFrZS5ydWxlcy5MaW51eCAgICAgICAgfCAgIDE4ICsrLS0tLS0tLS0tCi0gY3BwL3NyYy9JY2VTdG9ybS9GcmVlemVEQi9NYWtlZmlsZSB8ICAgIDIgKy0KLSBweS9jb25maWcvTWFrZS5ydWxlcyAgICAgICAgICAgICAgIHwgICA1OCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlnL01ha2UuY29tbW9uLnJ1bGVzIGIvY29uZmlnL01ha2UuY29tbW9uLnJ1bGVzCi1pbmRleCBkN2IxZDU5Li5hM2ZiMTdlIDEwMDY0NAotLS0tIGEvY29uZmlnL01ha2UuY29tbW9uLnJ1bGVzCi0rKysgYi9jb25maWcvTWFrZS5jb21tb24ucnVsZXMKLUBAIC02NSw5ICs2NSw5IEBAIGlmZXEgKCQoVU5BTUUpLExpbnV4KQotICAgICAgICMKLSAgICAgICAjIFNvbWUgTGludXggZGlzdHJpYnV0aW9ucyBsaWtlIERlYmlhbi9VYnVudHUgZG9uJ3QgdXNlIC91c3IvbGliNjQuCi0gICAgICAgIwotLSAgICAgIGlmZXEgKCQoc2hlbGwgdGVzdCAtZCAvdXNyL2xpYjY0ICYmIGVjaG8gMCksMCkKLS0gICAgICAgICAgbHA2NHN1ZmZpeAk9IDY0Ci0tICAgICAgZW5kaWYKLSsgICAgICAjaWZlcSAoJChzaGVsbCB0ZXN0IC1kIC91c3IvbGliNjQgJiYgZWNobyAwKSwwKQotKyAgICAgICMgICAgbHA2NHN1ZmZpeAk9IDY0Ci0rICAgICAgI2VuZGlmCi0gICAgICAgaWZlcSAoJChMUDY0KSwpCi0gICAgICAgICAgIExQNjQgICAgICAJPSB5ZXMKLSAgICAgICBlbmRpZgotQEAgLTI0NCwxMiArMjQ0LDEzIEBAIGVsc2UKLSAgICAgc2xpY2VkaXIgPSAkKGljZV9kaXIpL3NsaWNlCi0gZW5kaWYKLSAKLS1pZmVxICgkKHByZWZpeCksIC91c3IpCi0tICAgIGluc3RhbGxfc2xpY2VkaXIgPSAvdXNyL3NoYXJlL0ljZS0kKFZFUlNJT04pL3NsaWNlCi0tZWxzZQotLSAgICBpbnN0YWxsX3NsaWNlZGlyID0gJChwcmVmaXgpL3NsaWNlCi0tZW5kaWYKLSsjaWZlcSAoJChwcmVmaXgpLCAvdXNyKQotKyMgICAgaW5zdGFsbF9zbGljZWRpciA9IC91c3Ivc2hhcmUvSWNlLSQoVkVSU0lPTikvc2xpY2UKLSsjZWxzZQotKyMgICAgaW5zdGFsbF9zbGljZWRpciA9ICQocHJlZml4KS9zbGljZQotKyNlbmRpZgotIAotK2luc3RhbGxfc2xpY2VkaXIgPSAkKHByZWZpeCkvc2xpY2UKLSAjCi0gIyBTZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgU2xpY2UgdHJhbnNsYXRvci4KLSAjCi1AQCAtMjY1LDcgKzI2Niw4IEBAIGlmbmVxICgkKGljZV9kaXIpLCAvdXNyKQotICAgICBlbmRpZgotIAotICAgICBpZmVxICgkKFVOQU1FKSxMaW51eCkKLS0gICAgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEggOj0gJChpY2VfbGliX2Rpcik6JChMRF9MSUJSQVJZX1BBVEgpCi0rICAgICAgICAjZXhwb3J0IExEX0xJQlJBUllfUEFUSCA6PSAkKGljZV9saWJfZGlyKTokKExEX0xJQlJBUllfUEFUSCkKLSsgICAgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEggOj0gJChJQ0VfSE9NRSkvbGliOiQoTERfTElCUkFSWV9QQVRIKQotICAgICBlbmRpZgotIAotICAgICBpZmVxICgkKFVOQU1FKSxTdW5PUykKLWRpZmYgLS1naXQgYS9jcHAvTWFrZWZpbGUgYi9jcHAvTWFrZWZpbGUKLWluZGV4IGE2OGYxMTMuLjFmNDRmNTcgMTAwNjQ0Ci0tLS0gYS9jcHAvTWFrZWZpbGUKLSsrKyBiL2NwcC9NYWtlZmlsZQotQEAgLTExLDExICsxMSwxMiBAQCB0b3Bfc3JjZGlyCT0gLgotIAotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb25maWcvTWFrZS5ydWxlcwotIAotLVNVQkRJUlMJCT0gY29uZmlnIHNyYyBpbmNsdWRlIHRlc3QKLSsjU1VCRElSUwkJPSBjb25maWcgc3JjIGluY2x1ZGUgdGVzdAotK1NVQkRJUlMJCT0gY29uZmlnIHNyYyBpbmNsdWRlCi0gCi0taWZlcSAoJChzaGVsbCB1bmFtZSB8IGdyZXAgTUlOR1cpLCkKLS1TVUJESVJTCQk6PSAkKFNVQkRJUlMpIGRlbW8KLS1lbmRpZgotKyNpZmVxICgkKHNoZWxsIHVuYW1lIHwgZ3JlcCBNSU5HVyksKQotKyNTVUJESVJTCQk6PSAkKFNVQkRJUlMpIGRlbW8KLSsjZW5kaWYKLSAKLSBJTlNUQUxMX1NVQkRJUlMJPSAkKGluc3RhbGxfYmluZGlyKSAkKGluc3RhbGxfbGliZGlyKSAkKGluc3RhbGxfaW5jbHVkZWRpcikgXAotIAkkKGluc3RhbGxfY29uZmlnZGlyKSAkKGluc3RhbGxfbWFuZGlyKQotZGlmZiAtLWdpdCBhL2NwcC9jb25maWcvTWFrZS5ydWxlcyBiL2NwcC9jb25maWcvTWFrZS5ydWxlcwotaW5kZXggMzc0NjFhZS4uMTk3YzVlOCAxMDA2NDQKLS0tLSBhL2NwcC9jb25maWcvTWFrZS5ydWxlcwotKysrIGIvY3BwL2NvbmZpZy9NYWtlLnJ1bGVzCi1AQCAtMTc1LDExICsxNzUsMTIgQEAgaGVhZGVyZGlyCQk9ICQodG9wX3NyY2RpcikvaW5jbHVkZQotICMgaW5jbHVkZWRpciBpcyBub3QgaGFuZGxlZCB0aGUgc2FtZSBhcyBiaW5kaXIgYW5kIGxpYmRpcgotICMgYmVjYXVzZSBpdCBpcyB1c2VkIGluIHRoZSAuZGVwZW5kIGZpbGVzCi0gIwotLWlmZGVmIGljZV9zcmNfZGlzdAotLSAgICBpbmNsdWRlZGlyCQk9ICQodG9wX3NyY2RpcikvaW5jbHVkZQotLWVsc2UKLS0gICAgaW5jbHVkZWRpcgkJPSAkKGljZV9kaXIpL2luY2x1ZGUKLS1lbmRpZgotKyNpZmRlZiBpY2Vfc3JjX2Rpc3QKLSsjICAgIGluY2x1ZGVkaXIJCT0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCi0rI2Vsc2UKLSsjICAgIGluY2x1ZGVkaXIJCT0gJChpY2VfZGlyKS9pbmNsdWRlCi0rI2VuZGlmCi0raW5jbHVkZWRpcgkJPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUKLSAKLSAjCi0gIyBQbGF0Zm9ybSBzcGVjaWZpYyBkZWZpbml0aW9ucwotQEAgLTI3NywxNCArMjc4LDE3IEBAIElDRUNQUEZMQUdTCQk9IC1JJChzbGljZWRpcikKLSBTTElDRTJDUFBGTEFHUwkJPSAkKElDRUNQUEZMQUdTKQotIAotIGlmZXEgKCQoaWNlX2RpciksIC91c3IpIAotLSAgICBMREZMQUdTCQk9ICQoTERQTEFURk9STUZMQUdTKSAkKENYWEZMQUdTKQotKyAgICBMREZMQUdTCQkrPSAkKExEUExBVEZPUk1GTEFHUykgJChDWFhGTEFHUykKLSBlbHNlCi0gICAgIENQUEZMQUdTCSs9IC1JJChpbmNsdWRlZGlyKQotLSAgICBpZmRlZiBpY2Vfc3JjX2Rpc3QKLS0JTERGTEFHUwk9ICQoTERQTEFURk9STUZMQUdTKSAkKENYWEZMQUdTKSAtTCQobGliZGlyKQotLSAgICBlbHNlCi0tCUxERkxBR1MJPSAkKExEUExBVEZPUk1GTEFHUykgJChDWFhGTEFHUykgLUwkKGljZV9kaXIpLyQobGlic3ViZGlyKSQoY3BwMTFzdWZmaXgpCi0tICAgIGVuZGlmCi0rIyBXZSBtdXN0IGFsd2F5cyBidWlsZCB1c2luZyB0aGUgbGlicmFyaWVzIGluIHRoZSBzb3VyY2UgdHJlZSwgdGhlIGhvc3QncyBhcmUgb2J2aW91c2x5Ci0rIyBub3Qgd2hhdCB3ZSB3YW50IGZvciB0aGUgdGFyZ2V0Ci0rICAgIExERkxBR1MJKz0gJChMRFBMQVRGT1JNRkxBR1MpICQoQ1hYRkxBR1MpIC1MJChsaWJkaXIpICQoY2FsbCBycGF0aGxpbmssJChsaWJkaXIpKQotKyMgICAgaWZkZWYgaWNlX3NyY19kaXN0Ci0rIyAgICAgICAgTERGTEFHUwk9ICQoTERQTEFURk9STUZMQUdTKSAkKENYWEZMQUdTKSAtTCQobGliZGlyKQotKyMgICAgZWxzZQotKyMJTERGTEFHUwk9ICQoTERQTEFURk9STUZMQUdTKSAkKENYWEZMQUdTKSAtTCQoaWNlX2RpcikvJChsaWJzdWJkaXIpJChjcHAxMXN1ZmZpeCkKLSsjICAgIGVuZGlmCi0gZW5kaWYKLSAKLSBpZmVxICgkKEZMRVhfTk9MSU5FKSx5ZXMpCi1AQCAtMzEzLDggKzMxNywxMCBAQCBlbmRpZgotIAotIGlmZGVmIGljZV9zcmNfZGlzdAotICAgICBTTElDRVBBUlNFUkxJQgk9ICQobGliZGlyKS8kKGNhbGwgbWtsaWJmaWxlbmFtZSxTbGljZSwkKFZFUlNJT04pKQotLSAgICBTTElDRTJDUFAJCT0gJChiaW5kaXIpL3NsaWNlMmNwcAotLSAgICBTTElDRTJGUkVFWkUJPSAkKGJpbmRpcikvc2xpY2UyZnJlZXplCi0rIyAgICBTTElDRTJDUFAJCT0gJChiaW5kaXIpL3NsaWNlMmNwcAotKyMgICAgU0xJQ0UyRlJFRVpFCT0gJChiaW5kaXIpL3NsaWNlMmZyZWV6ZQotKyAgICBTTElDRTJDUFAJCT0gJChJQ0VfSE9NRSkvYmluL3NsaWNlMmNwcAotKyAgICBTTElDRTJGUkVFWkUJPSAkKElDRV9IT01FKS9iaW4vc2xpY2UyZnJlZXplCi0gZWxzZQotICAgICBTTElDRVBBUlNFUkxJQgk9ICQoaWNlX2RpcikvJChsaWJzdWJkaXIpJChjcHAxMXN1ZmZpeCkvJChjYWxsIG1rbGliZmlsZW5hbWUsU2xpY2UsJChWRVJTSU9OKSkKLSAgICAgU0xJQ0UyQ1BQCQk9ICQoaWNlX2RpcikvJChiaW5zdWJkaXIpJChjcHAxMXN1ZmZpeCkvc2xpY2UyY3BwCi1kaWZmIC0tZ2l0IGEvY3BwL2NvbmZpZy9NYWtlLnJ1bGVzLkxpbnV4IGIvY3BwL2NvbmZpZy9NYWtlLnJ1bGVzLkxpbnV4Ci1pbmRleCA1ZDU3MTdjLi44MzYzYzZlIDEwMDY0NAotLS0tIGEvY3BwL2NvbmZpZy9NYWtlLnJ1bGVzLkxpbnV4Ci0rKysgYi9jcHAvY29uZmlnL01ha2UucnVsZXMuTGludXgKLUBAIC0zMSw3ICszMSw3IEBAIGlmZXEgKCQoQ1hYKSxjKyspCi0gICAgQ1hYCQkJPSBnKysKLSBlbmRpZgotIAotLWlmZXEgKCQoQ1hYKSxnKyspCi0rI2lmZXEgKCQoQ1hYKSxnKyspCi0gCi0gICAgIGlmbmVxICgkKFNVU0VfaTU4NiksKQotICAgICAgICAgQ1hYQVJDSEZMQUdTCSs9IC1tYXJjaD1pNTg2Ci1AQCAtNzEsMTQgKzcxLDYgQEAgaWZlcSAoJChDWFgpLGcrKykKLSAgICAgICBDWFhBUkNIRkxBR1MJKz0gLW10dW5lPXY4IC1waXBlIC1Xbm8tZGVwcmVjYXRlZCAtRElDRV9VU0VfTVVURVhfU0hBUkVECi0gICAgZW5kaWYKLSAKLS0gICBpZmVxICgkKE1BQ0hJTkUpLHg4Nl82NCkKLS0gICAgICBpZmVxICgkKExQNjQpLHllcykKLS0gICAgICAgICBDWFhBUkNIRkxBR1MJKz0gLW02NAotLSAgICAgIGVsc2UKLS0gICAgICAgICBDWFhBUkNIRkxBR1MJKz0gLW0zMgotLSAgICAgIGVuZGlmCi0tICAgZW5kaWYKLS0KLSAgICBDWFhGTEFHUwkJPSAkKENYWEFSQ0hGTEFHUykgLVdhbGwgLVdlcnJvciAtcHRocmVhZAotIAotICAgIGlmbmVxICgkKEdFTlBJQyksbm8pCi1AQCAtMTAyLDE1ICs5NCwxMSBAQCBpZmVxICgkKENYWCksZysrKQotIAotICAgIHJwYXRobGluayAgICAgICAgICAgID0gLVdsLC1ycGF0aC1saW5rLCQoMSkgCi0gCi0tICAgaWZuZXEgKCQoZW1iZWRkZWRfcnVucGF0aF9wcmVmaXgpLCkKLS0gICAgICBMRFBMQVRGT1JNRkxBR1MgICAgICA9IC1XbCwtLWVuYWJsZS1uZXctZHRhZ3MgLVdsLC1ycGF0aCwkKHJ1bnBhdGhfbGliZGlyKQotLSAgIGVsc2UKLS0gICAgICBMRFBMQVRGT1JNRkxBR1MgICAgICA9IC1XbCwtLWVuYWJsZS1uZXctZHRhZ3MKLS0gICBlbmRpZgotKyAgIExEUExBVEZPUk1GTEFHUyAgICAgID0gLVdsLC0tZW5hYmxlLW5ldy1kdGFncyAtV2wsLXJwYXRoLC4uLy4uLy4uL2xpYgotIAotICAgIExEUExBVEZPUk1GTEFHUwkrPSAtcmR5bmFtaWMKLSAKLS1lbmRpZgotKyNlbmRpZgotIAotIGlmZXEgKCQoQ1hYKSxpY3BjKQotICAgICQod2FybmluZyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KSAKLWRpZmYgLS1naXQgYS9jcHAvc3JjL0ljZVN0b3JtL0ZyZWV6ZURCL01ha2VmaWxlIGIvY3BwL3NyYy9JY2VTdG9ybS9GcmVlemVEQi9NYWtlZmlsZQotaW5kZXggN2M4NDRiNy4uY2YxNWNiMSAxMDA2NDQKLS0tLSBhL2NwcC9zcmMvSWNlU3Rvcm0vRnJlZXplREIvTWFrZWZpbGUKLSsrKyBiL2NwcC9zcmMvSWNlU3Rvcm0vRnJlZXplREIvTWFrZWZpbGUKLUBAIC02Niw3ICs2Niw3IEBAICQobGliZGlyKS8kKExJQk5BTUUpOiAkKGxpYmRpcikvJChTT05BTUUpCi0gCi0gJChNSUdSQVRFKTogJChNT0JKUykKLSAJcm0gLWYgJEAKLS0JJChDWFgpICQoTERGTEFHUykgLW8gJEAgJChNT0JKUykgJChEQl9SUEFUSF9MSU5LKSAtbEljZVN0b3JtU2VydmljZSAtbEljZVN0b3JtIC1sRnJlZXplICQoTElCUykKLSsJJChDWFgpICQoTERGTEFHUykgLW8gJEAgJChNT0JKUykgJChEQl9SUEFUSF9MSU5LKSAtbEljZVN0b3JtU2VydmljZSAtbEljZVN0b3JtIC1sRnJlZXplICQoTElCUykgLWxkYl9jeHgKLSAKLSAjIFRoZSBzbGljZTJmcmVlemUgcnVsZXMgYXJlIHN0cnVjdHVyZWQgbGlrZSB0aGlzIHRvIGF2b2lkIGlzc3VlcyB3aXRoCi0gIyBwYXJhbGxlbCBtYWtlLgotZGlmZiAtLWdpdCBhL3B5L2NvbmZpZy9NYWtlLnJ1bGVzIGIvcHkvY29uZmlnL01ha2UucnVsZXMKLWluZGV4IDQzY2UwMWIuLjEzNDkzNDIgMTAwNjQ0Ci0tLS0gYS9weS9jb25maWcvTWFrZS5ydWxlcwotKysrIGIvcHkvY29uZmlnL01ha2UucnVsZXMKLUBAIC05MiwyMSArOTIsMjMgQEAgaWZlcSAoJChzaGVsbCB0ZXN0IC1mICQodG9wX3NyY2RpcikvY29uZmlnL01ha2UucnVsZXMuJChVTkFNRSkgJiYgZWNobyAwKSwwKQotICAgICBpbmNsdWRlICQodG9wX3NyY2RpcikvY29uZmlnL01ha2UucnVsZXMuJChVTkFNRSkKLSBlbHNlCi0gICAgIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS8uLi9jcHAvY29uZmlnL01ha2UucnVsZXMuJChVTkFNRSkKLS1lbmRpZiAKLStlbmRpZgotIAotIGxpYmRpciAgICAgICAgICAgICAgICAgID0gJCh0b3Bfc3JjZGlyKS9weXRob24KLS1pZm5lcSAoJChwcmVmaXgpLCAvdXNyKQotLWluc3RhbGxfcHl0aG9uZGlyICAgICAgID0gJChwcmVmaXgpL3B5dGhvbgotLWluc3RhbGxfbGliZGlyICAgICAgICAgID0gJChwcmVmaXgpL3B5dGhvbgotLWVsc2UKLS0gICAgaWZlcSAoJChzaGVsbCB0ZXN0IC1kICQocHJlZml4KS8kKGxpYnN1YmRpcikvJChQWVRIT05fVkVSU0lPTikvZGlzdC1wYWNrYWdlcyAmJiBlY2hvIDApLDApCi0tICAgICAgICBpbnN0YWxsX3B5dGhvbmRpciAgICAgICA9ICQocHJlZml4KS8kKGxpYnN1YmRpcikvJChQWVRIT05fVkVSU0lPTikvZGlzdC1wYWNrYWdlcwotLSAgICAgICAgaW5zdGFsbF9saWJkaXIgICAgICAgICAgPSAkKHByZWZpeCkvJChsaWJzdWJkaXIpLyQoUFlUSE9OX1ZFUlNJT04pL2Rpc3QtcGFja2FnZXMKLS0gICAgZWxzZQotLSAgICAgICAgaW5zdGFsbF9weXRob25kaXIgICAgICAgPSAkKHByZWZpeCkvJChsaWJzdWJkaXIpLyQoUFlUSE9OX1ZFUlNJT04pL3NpdGUtcGFja2FnZXMKLS0gICAgICAgIGluc3RhbGxfbGliZGlyICAgICAgICAgID0gJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9zaXRlLXBhY2thZ2VzCi0tICAgIGVuZGlmCi0tZW5kaWYKLSsjaWZuZXEgKCQocHJlZml4KSwgL3VzcikKLSsjaW5zdGFsbF9weXRob25kaXIgICAgICAgPSAkKHByZWZpeCkvcHl0aG9uCi0rI2luc3RhbGxfbGliZGlyICAgICAgICAgID0gJChwcmVmaXgpL3B5dGhvbgotKyNlbHNlCi0rIyAgICBpZmVxICgkKHNoZWxsIHRlc3QgLWQgJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9kaXN0LXBhY2thZ2VzICYmIGVjaG8gMCksMCkKLSsjICAgICAgICBpbnN0YWxsX3B5dGhvbmRpciAgICAgICA9ICQocHJlZml4KS8kKGxpYnN1YmRpcikvJChQWVRIT05fVkVSU0lPTikvZGlzdC1wYWNrYWdlcwotKyMgICAgICAgIGluc3RhbGxfbGliZGlyICAgICAgICAgID0gJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9kaXN0LXBhY2thZ2VzCi0rIyAgICBlbHNlCi0rIyAgICAgICAgaW5zdGFsbF9weXRob25kaXIgICAgICAgPSAkKHByZWZpeCkvJChsaWJzdWJkaXIpLyQoUFlUSE9OX1ZFUlNJT04pL3NpdGUtcGFja2FnZXMKLSsjICAgICAgICBpbnN0YWxsX2xpYmRpciAgICAgICAgICA9ICQocHJlZml4KS8kKGxpYnN1YmRpcikvJChQWVRIT05fVkVSU0lPTikvc2l0ZS1wYWNrYWdlcwotKyMgICAgZW5kaWYKLSsjZW5kaWYKLStpbnN0YWxsX3B5dGhvbmRpciAgICAgICA9ICQocHJlZml4KS8kKGxpYnN1YmRpcikvJChQWVRIT05fVkVSU0lPTikvc2l0ZS1wYWNrYWdlcwotK2luc3RhbGxfbGliZGlyICAgICAgICAgID0gJChwcmVmaXgpLyQobGlic3ViZGlyKS8kKFBZVEhPTl9WRVJTSU9OKS9zaXRlLXBhY2thZ2VzCi0gCi0gaWZlcSAoJChVTkFNRSksU3VuT1MpCi0gICAgaWZlcSAoJChMUDY0KSx5ZXMpCi1AQCAtMTE1LDE5ICsxMTcsMjEgQEAgaWZlcSAoJChVTkFNRSksU3VuT1MpCi0gICAgZW5kaWYKLSBlbmRpZgotIAotLWlmZGVmIGljZV9zcmNfZGlzdAotLSAgICBpZmVxICgkKGljZV9jcHBfZGlyKSwgJChpY2VfZGlyKS9jcHApCi0tICAgICAgICBJQ0VfTElCX0RJUiA9IC1MJChpY2VfY3BwX2RpcikvbGliCi0tICAgIGVsc2UKLS0gICAgICAgIElDRV9MSUJfRElSID0gLUwkKGljZV9jcHBfZGlyKS8kKGxpYnN1YmRpcikKLS0gICAgZW5kaWYKLS0gICAgSUNFX0xJQl9ESVIgPSAtTCQoaWNlX2NwcF9kaXIpL2xpYgotLSAgICBJQ0VfRkxBR1MgCT0gLUkkKGljZV9jcHBfZGlyKS9pbmNsdWRlCi0tZW5kaWYKLS1pZmRlZiBpY2VfYmluX2Rpc3QKLS0gICAgSUNFX0xJQl9ESVIgPSAtTCQoaWNlX2RpcikvJChsaWJzdWJkaXIpCi0tICAgIElDRV9GTEFHUwk9IC1JJChpY2VfZGlyKS9pbmNsdWRlCi0tZW5kaWYKLSsjaWZkZWYgaWNlX3NyY19kaXN0Ci0rIyAgICBpZmVxICgkKGljZV9jcHBfZGlyKSwgJChpY2VfZGlyKS9jcHApCi0rIyAgICAgICAgSUNFX0xJQl9ESVIgPSAtTCQoaWNlX2NwcF9kaXIpL2xpYgotKyMgICAgZWxzZQotKyMgICAgICAgIElDRV9MSUJfRElSID0gLUwkKGljZV9jcHBfZGlyKS8kKGxpYnN1YmRpcikKLSsjICAgIGVuZGlmCi0rIyAgICBJQ0VfTElCX0RJUiA9IC1MJChpY2VfY3BwX2RpcikvbGliCi0rIyAgICBJQ0VfRkxBR1MgCT0gLUkkKGljZV9jcHBfZGlyKS9pbmNsdWRlCi0rI2VuZGlmCi0rI2lmZGVmIGljZV9iaW5fZGlzdAotKyMgICAgSUNFX0xJQl9ESVIgPSAtTCQoaWNlX2RpcikvJChsaWJzdWJkaXIpCi0rIyAgICBJQ0VfRkxBR1MJPSAtSSQoaWNlX2RpcikvaW5jbHVkZQotKyNlbmRpZgotK0lDRV9MSUJfRElSID0gLUwkKHRvcF9zcmNkaXIpLy4uL2NwcC9saWIKLStJQ0VfRkxBR1MgPSAtSSQoaWNlX2NwcF9kaXIpL2luY2x1ZGUKLSBJQ0VfTElCUyA9ICQoSUNFX0xJQl9ESVIpIC1sSWNlIC1sU2xpY2UgLWxJY2VVdGlsCi0gCi0gaWZuZXEgKCQoZW1iZWRkZWRfcnVucGF0aF9wcmVmaXgpLCkKLUBAIC0xMzcsNyArMTQxLDcgQEAgZW5kaWYKLSBDUFBGTEFHUwkJPQotIElDRUNQUEZMQUdTCQk9IC1JJChzbGljZWRpcikKLSBTTElDRTJQWUZMQUdTCQk9ICQoSUNFQ1BQRkxBR1MpCi0tTERGTEFHUwkJCT0gJChMRFBMQVRGT1JNRkxBR1MpICQoQ1hYRkxBR1MpIC1MJChsaWJkaXIpCi0rTERGTEFHUwkJCSs9ICQoTERQTEFURk9STUZMQUdTKSAkKENYWEZMQUdTKSAtTCQobGliZGlyKQotIAotIGlmZGVmIGljZV9zcmNfZGlzdAotICAgICBpZmVxICgkKGljZV9jcHBfZGlyKSwgJChpY2VfZGlyKS9jcHApCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9jLWljZS96ZXJvYy1pY2VfMy41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb2MtaWNlL3plcm9jLWljZV8zLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M4MzNiMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb2MtaWNlL3plcm9jLWljZV8zLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBJbnRlcm5ldCBDb21tdW5pY2F0aW9ucyBFbmdpbmUiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vSUNFX0xJQ0VOU0U7bWQ1PTNkYzMwMzcwMjNjYzJhZTZiMmM1Yjk5NWRhNTI5NTE1IgotREVQRU5EUyA9ICJiemlwMiBleHBhdCBvcGVuc3NsIHB5dGhvbiBkYiBtY3BwIgotREVQRU5EU19wcmVwZW5kX2NsYXNzLXRhcmdldCA9ICJ6ZXJvYy1pY2UtbmF0aXZlICIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lnplcm9jLmNvbS9kb3dubG9hZC9JY2UvMy41L0ljZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Nb2RpZnktTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMDBjNTk5ODNjYzkwNGJjYTk3NzEzM2MwYTliM2U4MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODllNTExOTRjNmFkYWRiZDE1NmRhMzI4OGUzN2JhZDg0N2I5M2IzYjg3NjUwMmU4MzAzM2I3MDQ5M2FmMzkyIgotCi0jfCBNYXBEYi5jcHA6IEluIGNvbnN0cnVjdG9yICdGcmVlemU6Ok1hcERiOjpNYXBEYihjb25zdCBDb25uZWN0aW9uSVB0ciYsIGNvbnN0IHN0cmluZyYsIGNvbnN0IHN0cmluZyYsIGNvbnN0IHN0cmluZyYsIGNvbnN0IEtleUNvbXBhcmVCYXNlUHRyJiwgY29uc3Qgc3RkOjp2ZWN0b3I8SWNlVXRpbDo6SGFuZGxlPEZyZWV6ZTo6TWFwSW5kZXhCYXNlPiA+JiwgYm9vbCknOgotI3wgTWFwRGIuY3BwOjEzODo0NjogZXJyb3I6IGNhbGwgb2Ygb3ZlcmxvYWRlZCAnc2V0X2J0X2NvbXBhcmUoaW50ICgqKShEQiosIGNvbnN0IERCVCosIGNvbnN0IERCVCopKScgaXMgYW1iaWd1b3VzCi0jfCBNYXBEYi5jcHA6MTM4OjQ2OiBub3RlOiBjYW5kaWRhdGVzIGFyZToKLSN8IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUvZGJfY3h4Lmg6MjcyOjE0OiBub3RlOiB2aXJ0dWFsIGludCBEYjo6c2V0X2J0X2NvbXBhcmUoYnRfY29tcGFyZV9mY25fdHlwZSkgPG5lYXIgbWF0Y2g+Ci0jfCAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlL2RiX2N4eC5oOjI3MjoxNDogbm90ZTogICBubyBrbm93biBjb252ZXJzaW9uIGZvciBhcmd1bWVudCAxIGZyb20gJ2ludCAoKikoREIqLCBjb25zdCBEQlQqLCBjb25zdCBEQlQqKSB7YWthIGludCAoKikoX19kYiosIGNvbnN0IF9fZGJfZGJ0KiwgY29uc3QgX19kYl9kYnQqKX0nIHRvICdidF9jb21wYXJlX2Zjbl90eXBlIHtha2EgaW50ICgqKShfX2RiKiwgY29uc3QgX19kYl9kYnQqLCBjb25zdCBfX2RiX2RidCosIGxvbmcgdW5zaWduZWQgaW50Kil9JwotI3wgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZS9kYl9jeHguaDoyNzM6MTQ6IG5vdGU6IHZpcnR1YWwgaW50IERiOjpzZXRfYnRfY29tcGFyZShpbnQgKCopKERiKiwgY29uc3QgRGJ0KiwgY29uc3QgRGJ0Kiwgc2l6ZV90KikpIDxuZWFyIG1hdGNoPgotI3wgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZS9kYl9jeHguaDoyNzM6MTQ6IG5vdGU6ICAgbm8ga25vd24gY29udmVyc2lvbiBmb3IgYXJndW1lbnQgMSBmcm9tICdpbnQgKCopKERCKiwgY29uc3QgREJUKiwgY29uc3QgREJUKikge2FrYSBpbnQgKCopKF9fZGIqLCBjb25zdCBfX2RiX2RidCosIGNvbnN0IF9fZGJfZGJ0Kil9JyB0byAnaW50ICgqKShEYiosIGNvbnN0IERidCosIGNvbnN0IERidCosIHNpemVfdCopIHtha2EgaW50ICgqKShEYiosIGNvbnN0IERidCosIGNvbnN0IERidCosIGxvbmcgdW5zaWduZWQgaW50Kil9JwotI3wgbWFrZVszXTogKioqIFtNYXBEYi5vXSBFcnJvciAxCi1QTkJMQUNLTElTVFt6ZXJvYy1pY2VdID89ICJCUk9LRU46IG5vdCBjb21wYXRpYmxlIHdpdGggZGVmYXVsdCBkYiB2ZXJzaW9uIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TID0gIiR7V09SS0RJUn0vSWNlLSR7UFZ9IgotCi1pbmhlcml0IHB5dGhvbi1kaXIgcGtnY29uZmlnCi0KLWV4cG9ydCBQWVRIT05fVkVSU0lPTiA9ICJweXRob24yLjciCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICA6Ci19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgewotICAgIGV4cG9ydCBQWVRIT05fSU5DTFVERV9ESVI9IiR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCi0gICAgZXhwb3J0IFBZVEhPTl9MSUJfRElSPSIke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9IgotICAgIGV4cG9ydCBJQ0VfSE9NRT0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9L3VzciIKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0gICAgZXhwb3J0IFBZVEhPTl9JTkNMVURFX0RJUj0iJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKLSAgICBleHBvcnQgUFlUSE9OX0xJQl9ESVI9IiR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0iCi0gICAgZXhwb3J0IElDRV9IT01FPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyIgotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBleHBvcnQgUFlUSE9OX0lOQ0xVREVfRElSPSIke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgotICAgIGV4cG9ydCBQWVRIT05fTElCX0RJUj0iJHtTVEFHSU5HX0xJQkRJUn0vJHtQWVRIT05fRElSfSIKLSAgICBleHBvcnQgSUNFX0hPTUU9IiR7U30vY3BwIgotfQotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgLUMgJHtTfSBjcHAKLSAgICBvZV9ydW5tYWtlIC1DICR7U30gcHkKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgZXhwb3J0IFBZVEhPTl9JTkNMVURFX0RJUj0iJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKLSAgICBleHBvcnQgUFlUSE9OX0xJQl9ESVI9IiR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0iCi0gICAgZXhwb3J0IElDRV9IT01FPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyIgotfQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLSAgICBleHBvcnQgUFlUSE9OX0lOQ0xVREVfRElSPSIke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgotICAgIGV4cG9ydCBQWVRIT05fTElCX0RJUj0iJHtTVEFHSU5HX0xJQkRJUn0vJHtQWVRIT05fRElSfSIKLSAgICBleHBvcnQgSUNFX0hPTUU9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IiCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGV4cG9ydCBJQ0VfSE9NRT0iJHtTfS9jcHAiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyAke1N9L2NwcCBwcmVmaXg9JHtEfSR7cHJlZml4fSBpbnN0YWxsIGluc3RhbGwtY29tbW9uCi0gICAgb2VfcnVubWFrZSAtQyAke1N9L3B5IHByZWZpeD0ke0R9JHtwcmVmaXh9IGluc3RhbGwKLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LXB5dGhvbiAke1BOfS1weXRob24tZGV2ICR7UE59LXB5dGhvbi1kYmciCi0KLUZJTEVTXyR7UE59LWRvYyArPSAiJHtwcmVmaXh9L21hbi9tYW4xIgotRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8qTElDRU5TRSAke2xpYmRpcn0vSW1wb3J0S2V5LmNsYXNzICR7cHJlZml4fS9SRUxFQVNFX05PVEVTICR7cHJlZml4fS9DSEFOR0VTIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2luY2x1ZGVkaXJ9ICR7cHJlZml4fS9zbGljZSAke3ByZWZpeH0vY29uZmlnIgotRklMRVNfJHtQTn0tcHl0aG9uLWRldiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9JY2VQeS5zbyIKLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLnB5ICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L0ljZVB5LnNvLiogJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vSWNlKi8qLnB5IgotRklMRVNfJHtQTn0tcHl0aG9uLWRiZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9zbGljZSogJHtkYXRhZGlyfS9JY2UtJHtQVn0vc2xpY2UvKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZGFlbW9uLXByb3h5LzAwMDEtZGJ1cy1kYWVtb24tcHJveHktUmV0dXJuLURCVVNfSEFORExFUl9SRVNVTFRfTk9UX1lFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWRhZW1vbi1wcm94eS8wMDAxLWRidXMtZGFlbW9uLXByb3h5LVJldHVybi1EQlVTX0hBTkRMRVJfUkVTVUxUX05PVF9ZRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM0Y2EwNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWRhZW1vbi1wcm94eS8wMDAxLWRidXMtZGFlbW9uLXByb3h5LVJldHVybi1EQlVTX0hBTkRMRVJfUkVTVUxUX05PVF9ZRVQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSA4ZTZkMWY1OTBiMWNiNDM3ZGM2N2M1MTI5OGVmMTcyMmE3MjY2ZDM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjUgSnVsIDIwMTcgMTg6Mzc6NTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZGJ1cy1kYWVtb24tcHJveHk6IFJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX05PVF9ZRVRfSEFORExFRAorIGZyb20gbWFzdGVyX2ZpbHRlcl9jYigpIGlmIERCdXNDb25uZWN0aW9uIGlzIG51bGwKKworU28gaXQgY2FuIGJlIHBhc3NlZCBvbiB0byBvdGhlciBoYW5kbGVycyBzaW5jZSB0aGlzIGNvdWxkCitub3QgYmUgaGFuZGxlZCBoZXJlCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBkYnVzLWRhZW1vbi1wcm94eS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZGJ1cy1kYWVtb24tcHJveHkuYyBiL2RidXMtZGFlbW9uLXByb3h5LmMKK2luZGV4IDAwOWU0ZmQuLmYzZjBkODAgMTAwNjQ0CistLS0gYS9kYnVzLWRhZW1vbi1wcm94eS5jCisrKysgYi9kYnVzLWRhZW1vbi1wcm94eS5jCitAQCAtMTE1LDcgKzExNSw3IEBAIG1hc3Rlcl9maWx0ZXJfY2IgKERCdXNDb25uZWN0aW9uICpjb25uLAorICAgZ3VpbnQzMiBzZXJpYWw7CisgCisgICBpZiAoIWRidXNfY29ubikKKy0gICAgcmV0dXJuOworKyAgICBEQlVTX0hBTkRMRVJfUkVTVUxUX05PVF9ZRVRfSEFORExFRDsKKyAKKyAgIGlmICh2ZXJib3NlKQorICAgICBnX3ByaW50ICgiTmV3IG1lc3NhZ2UgZnJvbSBzZXJ2ZXI6IHR5cGU9JyVkJyBwYXRoPSclcycgaWZhY2U9JyVzJyIKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWRhZW1vbi1wcm94eV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1kYWVtb24tcHJveHlfZ2l0LmJiCmluZGV4IGE5NTNlYmMuLjQyY2QwMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWRhZW1vbi1wcm94eV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZGFlbW9uLXByb3h5X2dpdC5iYgpAQCAtNCwyMSArNCwyMCBAQAogREVQRU5EUyA9ICJkYnVzIGRidXMtZ2xpYiIKIFNSQ1JFViA9ICIxMjI2YTBhMTM3NDYyOGZmMTkxZjZkOGE1NjAwMGJlNWU1M2U3NjA4IgogUFYgPSAiMC4wLjArZ2l0ciR7U1JDUFZ9IgotUFIgPSAicjEiCitQUiA9ICJyMS41OSIKIAotQVNORUVERURfcG4tZGJ1cy1kYWVtb24tcHJveHkgPSAiIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5jb2xsYWJvcmEuY28udWsvZ2l0L3VzZXIvYWxiYW4vZGJ1cy1kYWVtb24tcHJveHkiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYWxiYW4vZGJ1cy1kYWVtb24tcHJveHkgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kYnVzLWRhZW1vbi1wcm94eS1SZXR1cm4tREJVU19IQU5ETEVSX1JFU1VMVF9OT1RfWUVULnBhdGNoIFwKKyAgICAgICAgICAgIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAoraW5oZXJpdCBwa2djb25maWcKKwogZG9fY29tcGlsZSgpIHsKLSAgICAke0NDfSAke0xERkxBR1N9IGBwa2ctY29uZmlnIC0tY2ZsYWdzIC0tbGlicyBkYnVzLWdsaWItMWAgLW8gZGJ1cy1kYWVtb24tcHJveHkgZGJ1cy1kYWVtb24tcHJveHkuYworICAgICR7Q0N9ICR7Q0ZMQUdTfSAtbyBkYnVzLWRhZW1vbi1wcm94eSBkYnVzLWRhZW1vbi1wcm94eS5jIGBwa2ctY29uZmlnIC0tY2ZsYWdzIC0tbGlicyBkYnVzLWdsaWItMWAgJHtMREZMQUdTfQogfQogCiBkb19pbnN0YWxsKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQogICAgIGluc3RhbGwgLW0gMDc1NSBkYnVzLWRhZW1vbi1wcm94eSAke0R9JHtiaW5kaXJ9CiB9Ci0KLQotUE5CTEFDS0xJU1RbZGJ1cy1kYWVtb24tcHJveHldID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjEzLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwZGY2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfZ2l0LmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgID0gIkVtYmVkZGVkIExpbnV4IExpYnJhcnkiCitERVNDUklQVElPTiA9ICJFTEwgaXMgYSBEQlVTIGxpYnJhcnkgd2hpY2ggcHJvdmlkZXMgREJVUyBiaW5kaW5ncy4iCitMSUNFTlNFICA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiNTA0YjY3YzUwMzMxZmM3ODczNGZlZDkwZmIwZTA5IgorU0VDVElPTiA9ICJsaWJzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI3YjdjMTVjMmU1Y2FmZjg4ZmM0NWU3YThiODc0YTQ3MTk2YTBlZGRkIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpYnMvZWxsL2VsbC5naXQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBta2RpciAke1N9L2J1aWxkLWF1eAorfQorCitERVBFTkRTID0gImRidXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2Zha2Vyb290L2Zha2Vyb290LW5hdGl2ZV8xLjE4LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2Zha2Vyb290L2Zha2Vyb290LW5hdGl2ZV8xLjE4LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNTBlYTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9mYWtlcm9vdC9mYWtlcm9vdC1uYXRpdmVfMS4xOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBmYWtlcm9vdF8ke1BWfS5iYgotCi1TID0gIiR7V09SS0RJUn0vZmFrZXJvb3QtJHtQVn0iCi0KLWluaGVyaXQgbmF0aXZlCi0KLUVYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PSIKLQotIyBDb21wYXRhYmlsaXR5IGZvciB0aGUgcmFyZSBzeXN0ZW1zIG5vdCB1c2luZyBvciBoYXZpbmcgU1lTVgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcignSE9TVF9OT05TWVNWJykgYW5kIGQuZ2V0VmFyKCdIT1NUX05PTlNZU1YnKSAhPSAnMCc6Ci0gICAgICAgIGQuc2V0VmFyKCdFWFRSQV9PRUNPTkYnLCAnIC0td2l0aC1pcGM9dGNwIC0tcHJvZ3JhbS1wcmVmaXg9ICcpCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gInV0aWwtbGludXgtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9mYWtlcm9vdC9mYWtlcm9vdF8xLjE4LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2Zha2Vyb290L2Zha2Vyb290XzEuMTguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE3ODdlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2Zha2Vyb290L2Zha2Vyb290XzEuMTguNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiR2l2ZXMgYSBmYWtlIHJvb3QgZW52aXJvbm1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vZmFrZXJvb3QuYWxpb3RoLmRlYmlhbi5vcmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCi0KLVNSQ19VUkkgPSAiXAotICAgICR7REVCSUFOX01JUlJPUn0vbWFpbi9mL2Zha2Vyb290L2Zha2Vyb290XyR7UFZ9Lm9yaWcudGFyLmJ6MiBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIG1rZGlyIC1wICR7U30vYnVpbGQtYXV4Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vZmFrZXJvb3QKLSAgICBpbnN0YWxsIC1tIDY0NCAqLmggJHtEfSR7aW5jbHVkZWRpcn0vZmFrZXJvb3QKLX0KLQotIyBmYWtlcm9vdCBuZWVkcyBnZXRvcHQgd2hpY2ggaXMgcHJvdmlkZWQgYnkgdGhlIHV0aWwtbGludXggcGFja2FnZQotUkRFUEVORFNfJHtQTn0gPSAidXRpbC1saW51eCIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzA2MTcxZDhkNTIwYjFjYTE1NzZhYzczZjJjZWI0ZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGEzNTllZmEzZTk0OTZjMzMyMzRiM2U5Yzg5MzA2YTA5YmI0ZGE5ZDMzZGU0M2MyNjFmMWQ4NDQ3ZTZlYmVhMiIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMzUxNDMvCi1QTkJMQUNLTElTVFtmYWtlcm9vdF0gPz0gIkJST0tFTjogUUEgSXNzdWU6IC1kZXYgcGFja2FnZSBjb250YWlucyBub24tc3ltbGluayAuc28gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbV8yLjUwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbV8yLjUwLjEuYmIKaW5kZXggNDAxYjNiMi4uOWNjNTU4ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41MC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTAuMS5iYgpAQCAtMjMsNiArMjMsMTAgQEAKIAogICAgIGluc3RhbGwgLW0gMDY0NCBnbGliL2dsaWJtbWNvbmZpZy5oICR7RH0ke2RhdGFkaXJ9L2dsaWJtbS0yLjQvCiAgICAgaW5zdGFsbCAtbSAwNjQ0IHNjcmlwdHMvZ2xpYm1tX2NoZWNrX3BlcmwubTQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbC8gfHwgdHJ1ZQorCisgICAgZm9yIGkgaW4gZ2VuZXJhdGVfd3JhcF9pbml0LnBsIGdtbXByb2M7IGRvCisgICAgICAgIHNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L2dsaWJtbS0yLjQvcHJvYy8kaQorICAgIGRvbmUKIH0KIAogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtLWNvbW1vbi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtLWNvbW1vbi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE4Y2MxZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xsdm0vbGx2bS1jb21tb24uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkhlbHBlciBzY3JpcHQgZm9yIE9FJ3MgbGx2bSBzdXBwb3J0IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCBcCi0iCi0KLVNSQ19VUkkgPSAiZmlsZTovL2xsdm0tY29uZmlnIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGxsdm1fY29tbW9uX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotbGx2bV9jb21tb25fc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9sbHZtLWNvbmZpZyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9sbHZtLWNvbmZpZyAke0R9JHtiaW5kaXJ9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0tY29tbW9uL2xsdm0tY29uZmlnIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0tY29tbW9uL2xsdm0tY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGYzM2M4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtLWNvbW1vbi9sbHZtLWNvbmZpZworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMhL2Jpbi9zaAotIyBXcmFwcGVyIHNjcmlwdCBmb3IgcmVhbCBsbHZtLWNvbmZpZy4gU2ltcGx5IGNhbGxzCi0KLWlmIFsgJFdBTlRfTExWTV9SRUxFQVNFIF07IHRoZW4KLQlleGVjIGBkaXJuYW1lICQwYC8ke1RBUkdFVF9QUkVGSVh9bGx2bS1jb25maWckV0FOVF9MTFZNX1JFTEVBU0UgJHtAfQotZWxzZQotCWVjaG8gIlRvIHVzZSBsbHZtLWNvbW1vbiBXQU5UX0xMVk1fUkVMRUFTRSBuZWVkcyB0byBiZSBleHBvcnRlZC4iCi0JZWNobyAiRm9yIGV4YW1wbGUgaWYgdGhpcyBpcyBiZWluZyBjYWxsZWQgdGhyb3VnaCBhIHJlY2lwZToiCi0JZWNobyAiZXhwb3J0IFdBTlRfTExWTV9SRUxFQVNFPVwiMy4zXCIiCi0JZXhpdCAxCi1maQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9sbHZtL2xsdm0uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjcyNjFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0jIExMVk0gZG9lcyBub3QgcHJvdmlkZSBBQkkgc3RhYmlsaXR5IGJldHdlZW4gZGlmZmVyZW50IHZlcnNpb25zLiBGb3IgdGhpcwotIyByZWFzb24gT0UgbWFrZXMgaXQgcG9zc2libGUgdG8gYnVpbGQgYW5kIGluc3RhbGwgZGlmZmVyZW50IGxsdm0gdmVyc2lvbnMKLSMgYXQgdGhlIHNhbWUgdGltZS4KLSMKLSMgVGhpcyBpcyB0cnVlIGZvciB0aGUgbm9ybWFsIHJlY2lwZXMgYXMgd2VsbCBhcyB0aGUgbmF0aXZlIG9uZXMuCi0jCi0jIEFsbCByZWd1bGFyIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllcyBhcmUgcHJlZml4ZWQgd2l0aCAnbGx2bSR7TExWTV9SRUxFQVNFfScKLSMgZS5nLiAiJHtTVEFHSU5HX0JJTkRJUn0vbGx2bTIuNSIgb3IgIiR7U1RBR0lOR19JTkNESVJ9L2xsdm0yLjUiCi0jCi0jIEZvciB5b3VyIHByb2dyYW0gb3IgbGlicmFyeSB0aGF0IG1ha2VzIHVzZSBvZiBsbHZtIHlvdSBkbyBzaG91bGQgbm90IG5lZWQgdG8KLSMgbW9kaWZ5IGFueXRoaW5nIGFzIGxvbmcgYXMgaXQgdXNlcyB0aGUgcmVzdWx0cyBvZiB2YXJpb3VzIGxsdm0tY29uZmlnCi0jIGludm9jYXRpb25zLiBJZiB5b3UgbmVlZCBjdXN0b21pemF0aW9ucyBzb21ldGhpbmcgaXMgd3JvbmcgYW5kIGl0IG5lZWRzIHRvIGJlCi0jIGZpeGVkIChyZXBvcnQgYnVnKS4KLSMKLSMgSG93ZXZlciB0aGUgKnJlY2lwZSogZm9yIHlvdXIgcHJvZ3JhbS9saWJyYXJ5ICptdXN0KiBkZWNsYXJlCi0jIGV4cG9ydCBXQU5UX0xMVk1fUkVMRUFTRSA9ICI8dmFsaWQgdmVyc2lvbiBudW1iZXI+IgotIyBUaGUgdmVyc2lvbiBudW1iZXIgaXMgcGlja2VkIHVwIGJ5IGEgZ2VuZXJpYyB3cmFwcGVyIHNjcmlwdCB3aGljaCBqdXN0IGNhbGxzCi0jIHRoZSB2YXJpYW50IG9mIHRoZSBzcGVjaWZpZWQgdmVyc2lvbi4KLQotREVTQ1JJUFRJT04gPSAiVGhlIExvdyBMZXZlbCBWaXJ0dWFsIE1hY2hpbmUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGx2bS5vcmciCi0KLSMgMy1jbGF1c2UgQlNELWxpa2UKLSMgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcy9OQ1NBIE9wZW4gU291cmNlIExpY2Vuc2UKLUxJQ0VOU0UgPSAiTkNTQSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVFhUO21kNT1kMGEzZWYwZDNlMGU4ZjVjZjU5ZTVmZmMyNzNhYjFmOCIKLQotREVQRU5EUyA9ICJsaWJmZmkgbGlieG1sMi1uYXRpdmUgbGx2bS1jb21tb24iCi0KLWluaGVyaXQgcGVybG5hdGl2ZSBweXRob25uYXRpdmUgYXV0b3Rvb2xzCi0KLUxMVk1fUkVMRUFTRSA9ICIke1BWfSIKLUxMVk1fRElSID0gImxsdm0ke0xMVk1fUkVMRUFTRX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2xsdm0ub3JnL3JlbGVhc2VzLyR7UFZ9L2xsdm0tJHtQVn0uc3JjLnRhci5neiIKLVMgPSAiJHtXT1JLRElSfS9sbHZtLSR7UFZ9LnNyYyIKLQotTExWTV9CVUlMRF9ESVIgPSAiJHtXT1JLRElSfS9sbHZtLSR7UFZ9LmJ1aWxkIgotTExWTV9JTlNUQUxMX0RJUiA9ICIke1dPUktESVJ9L2xsdm0taW5zdGFsbCIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtYXNzZXJ0aW9ucyBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWRlYnVnLXJ1bnRpbWUgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZXhwZW5zaXZlLWNoZWNrcyBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWJpbmRpbmdzPW5vbmUgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1rZWVwLXN5bWJvbHMgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJmZmkgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1vcHRpbWl6ZWQgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS10YXJnZXRzPWhvc3Qtb25seSIKLUVYVFJBX09FTUFLRSArPSAiUkVRVUlSRVNfUlRUST0xIFZFUkJPU0U9MSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgUlBBVEhzCi0gICAgc2VkIC1pICdzOiQoUlBBVEgpIC1XbCwkKFwoVG9vbERpclx8TGliRGlyXHxFeG1wbERpclwpKTo6ZycgJHtTfS9NYWtlZmlsZS5ydWxlcwotCi0gICAgIyBEcm9wICJzdm4iIHN1ZmZpeCBmcm9tIHZlcnNpb24gc3RyaW5nCi0gICAgc2VkIC1pICdzLyR7UFZ9c3ZuLyR7UFZ9L2cnICR7U30vY29uZmlndXJlCi0KLSAgICAjIEZpeCBwYXRocyBpbiBsbHZtLWNvbmZpZwotICAgIHNlZCAtaSAic3xzeXM6OnBhdGg6OnBhcmVudF9wYXRoKEN1cnJlbnRQYXRoKSlcLnN0cigpfHN5czo6cGF0aDo6cGFyZW50X3BhdGgoc3lzOjpwYXRoOjpwYXJlbnRfcGF0aChDdXJyZW50UGF0aCkpKS5zdHIoKXxnIiAke1N9L3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAotICAgIHNlZCAtcmkgInMjLyhiaW58aW5jbHVkZXxsaWIpKC8/XCIpIy9cMS8ke0xMVk1fRElSfVwyI2ciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCi0KLSAgICAjIEZpeCB0aGUgaGFyZGNvZGVkIGxpYmRpciBpbiBsbHZtLWNvbmZpZwotICAgIHNlZCAtaSAnczovbGliXD46LyR7YmFzZWxpYn06ZycgJHtTfS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKLQotICAgICMgRmFpbHMgdG8gYnVpbGQgdW5sZXNzIHVzaW5nIHNlcGFyYXRlIGRpcmVjdG9yeSBmcm9tIHNvdXJjZQotICAgIG1rZGlyIC1wICR7TExWTV9CVUlMRF9ESVJ9Ci0gICAgY2QgJHtMTFZNX0JVSUxEX0RJUn0KLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBjZCAke0xMVk1fQlVJTERfRElSfQotCi0gICAgIyBGaXggbGliZGlyIGZvciBtdWx0aWxpYgotICAgIHNlZCAtaSAnczooUFJPSl9wcmVmaXgpL2xpYjooUFJPSl9wcmVmaXgpLyR7YmFzZWxpYn06ZycgTWFrZWZpbGUuY29uZmlnCi0KLSAgICBvZV9ydW5tYWtlIFwKLSAgICAgICAgQVI9IiR7QlVJTERfQVJ9IiBcCi0gICAgICAgIENDPSIke0JVSUxEX0NDfSIgXAotICAgICAgICBDRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSIgXAotICAgICAgICBDWFg9IiR7QlVJTERfQ1hYfSIgXAotICAgICAgICBDWFhGTEFHUz0iJHtCVUlMRF9DWFhGTEFHU30iIFwKLSAgICAgICAgQ1BQPSIke0JVSUxEX0NQUH0iIFwKLSAgICAgICAgQ1BQRkxBR1M9IiR7QlVJTERfQ1BQRkxBR1N9IiBcCi0gICAgICAgIE5NPSIke0JVSUxEX05NfSIgXAotICAgICAgICBSQU5MSUI9IiR7QlVJTERfUkFOTElCfSIgXAotICAgICAgICBQQVRIPSIke1NUQUdJTkdfQklORElSX05BVElWRX06JFBBVEgiIFwKLSAgICAgICAgY3Jvc3MtY29tcGlsZS1idWlsZC10b29scwotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBjZCAke0xMVk1fQlVJTERfRElSfQotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0xMVk1fSU5TVEFMTF9ESVJ9IGluc3RhbGwKLQotICAgIG12ICR7TExWTV9JTlNUQUxMX0RJUn0ke2JpbmRpcn0vJHtIT1NUX1NZU30tbGx2bS1jb25maWctaG9zdCAke0xMVk1fSU5TVEFMTF9ESVJ9L2xsdm0tY29uZmlnLWhvc3QKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke0xMVk1fRElSfQotICAgIG12ICR7TExWTV9JTlNUQUxMX0RJUn0ke2JpbmRpcn0vKiAke0R9JHtiaW5kaXJ9LyR7TExWTV9ESVJ9LwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS8ke0xMVk1fRElSfQotICAgIG12ICR7TExWTV9JTlNUQUxMX0RJUn0ke2luY2x1ZGVkaXJ9LyogJHtEfSR7aW5jbHVkZWRpcn0vJHtMTFZNX0RJUn0vCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0KLSAgICBtdiAke0xMVk1fSU5TVEFMTF9ESVJ9JHtsaWJkaXJ9LyogJHtEfSR7bGliZGlyfS8ke0xMVk1fRElSfS8KLSAgICBsbiAtcyAke0xMVk1fRElSfS9saWJMTFZNLSR7UFZ9LnNvICR7RH0ke2xpYmRpcn0vbGliTExWTS0ke1BWfS5zbwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtkb2NkaXJ9LyR7TExWTV9ESVJ9Ci0gICAgbXYgJHtMTFZNX0lOU1RBTExfRElSfSR7cHJlZml4fS9kb2NzL2xsdm0vKiAke0R9JHtkb2NkaXJ9LyR7TExWTV9ESVJ9Ci19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAibGx2bV9zeXNyb290X3ByZXByb2Nlc3MiCi0KLWxsdm1fc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotICAgIG12ICR7TExWTV9JTlNUQUxMX0RJUn0vbGx2bS1jb25maWctaG9zdCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2xsdm0tY29uZmlnJHtQVn0KLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LWJ1Z3BvaW50cGFzc2VzICR7UE59LWxsdm1oZWxsbyIKLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1zdGF0aWNkZXYgPSAiMSIKLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIiCi1GSUxFU18ke1BOfS1kYmcgPSAiIFwKLSAgICAke2JpbmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnL0J1Z3BvaW50UGFzc2VzLnNvIFwKLSAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnL0xMVk1IZWxsby5zbyBcCi0gICAgL3Vzci9zcmMvZGVidWcgXAotIgotCi1GSUxFU18ke1BOfS1kZXYgPSAiIFwKLSAgICAke2JpbmRpcn0vJHtMTFZNX0RJUn0gXAotICAgICR7aW5jbHVkZWRpcn0vJHtMTFZNX0RJUn0gXAotIgotUlJFQ09NTUVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1idWdwb2ludHBhc3NlcyAke1BOfS1sbHZtaGVsbG8iCi0KLUZJTEVTXyR7UE59LWJ1Z3BvaW50cGFzc2VzID0gIlwKLSAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vQnVncG9pbnRQYXNzZXMuc28gXAotIgotRklMRVNfJHtQTn0tbGx2bWhlbGxvID0gIlwKLSAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vTExWTUhlbGxvLnNvIFwKLSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICJebGlibGx2bSR7TExWTV9SRUxFQVNFfS0uKiQiCi1OT0FVVE9QQUNLQUdFREVCVUcgPSAiMSIKLQotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJsbHZtJHtMTFZNX1JFTEVBU0V9LWxsdm0tJHtMTFZNX1JFTEVBU0V9ICs9ICJkZXYtc28iCi0KLXB5dGhvbiBsbHZtX3BvcHVsYXRlX3BhY2thZ2VzKCkgewotICAgIGxpYmRpciA9IGJiLmRhdGEuZXhwYW5kKCcke2xpYmRpcn0nLCBkKQotICAgIGxpYmxsdm1fbGliZGlyID0gYmIuZGF0YS5leHBhbmQoJyR7bGliZGlyfS8ke0xMVk1fRElSfScsIGQpCi0gICAgc3BsaXRfZGJnX3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlibGx2bV9saWJkaXIrJy8uZGVidWcnLCAnXmxpYiguKilcLnNvJCcsICdsaWJsbHZtJHtMTFZNX1JFTEVBU0V9LSVzLWRiZycsICdTcGxpdCBkZWJ1ZyBwYWNrYWdlIGZvciAlcycsIGFsbG93X2RpcnM9VHJ1ZSkKLSAgICBzcGxpdF9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGlibGx2bSR7TExWTV9SRUxFQVNFfS0lcycsICdTcGxpdCBwYWNrYWdlIGZvciAlcycsIGFsbG93X2RpcnM9VHJ1ZSwgYWxsb3dfbGlua3M9VHJ1ZSwgcmVjdXJzaXZlPVRydWUpCi0gICAgc3BsaXRfc3RhdGljZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlibGx2bV9saWJkaXIsICdebGliKC4qKVwuYSQnLCAnbGlibGx2bSR7TExWTV9SRUxFQVNFfS0lcy1zdGF0aWNkZXYnLCAnU3BsaXQgc3RhdGljZGV2IHBhY2thZ2UgZm9yICVzJywgYWxsb3dfZGlycz1UcnVlKQotICAgIGlmIHNwbGl0X3BhY2thZ2VzOgotICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcG4sICcgJysnICcuam9pbihzcGxpdF9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcG4gKyAnLWRiZycsICcgJysnICcuam9pbihzcGxpdF9kYmdfcGFja2FnZXMpKQotICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBuICsgJy1zdGF0aWNkZXYnLCAnICcrJyAnLmpvaW4oc3BsaXRfc3RhdGljZGV2X3BhY2thZ2VzKSkKLX0KLQotUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJsbHZtX3BvcHVsYXRlX3BhY2thZ2VzICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zL1JlbW92ZS1lcnJvci1vdXRwdXQtZnJvbS1jb25maWd1cmUtaWYtQ0ZMQUdTLWlzLXNldC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xsdm0vbGx2bTMuMy9SZW1vdmUtZXJyb3Itb3V0cHV0LWZyb20tY29uZmlndXJlLWlmLUNGTEFHUy1pcy1zZXQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDM4N2U4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zL1JlbW92ZS1lcnJvci1vdXRwdXQtZnJvbS1jb25maWd1cmUtaWYtQ0ZMQUdTLWlzLXNldC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIGQ0YmY3YTM4NTNkYWIxMmMxMWNiZmM4MDg4ZmQ3NmY1NDhhOGQwMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWsgSGFnZ2x1bmQgPHBhdHJpay5oLmhhZ2dsdW5kQGVyaWNzc29uLmNvbT4KLURhdGU6IFR1ZSwgMjQgU2VwIDIwMTMgMTE6Mzg6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGVycm9yIG91dHB1dCBmcm9tIGNvbmZpZ3VyZSBpZiBDRkxBR1MgaXMgc2V0IChyMTc0MzEzKS4KLQotVGhpcyBmaXhlcyBQUjE2NzI0LgotCi1naXQtc3ZuLWlkOiBodHRwczovL2xsdm0ub3JnL3N2bi9sbHZtLXByb2plY3QvbGx2bS90cnVua0AxOTEyODkgOTExNzczMDgtMGQzNC0wNDEwLWI1ZTYtOTYyMzFiM2I4MGQ4Ci0KLWh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtLW1pcnJvci9sbHZtL2NvbW1pdC9kNGJmN2EzODUzZGFiMTJjMTFjYmZjODA4OGZkNzZmNTQ4YThkMDE3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIGF1dG9jb25mL2NvbmZpZ3VyZS5hYyB8IDQgKystLQotIGNvbmZpZ3VyZSAgICAgICAgICAgICB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXV0b2NvbmYvY29uZmlndXJlLmFjIGIvYXV0b2NvbmYvY29uZmlndXJlLmFjCi1pbmRleCBmOWMzNjVjLi40NWYyZmU0IDEwMDY0NAotLS0tIGEvYXV0b2NvbmYvY29uZmlndXJlLmFjCi0rKysgYi9hdXRvY29uZi9jb25maWd1cmUuYWMKLUBAIC02MSw4ICs2MSw4IEBAIGZpCi0gCi0gZG5sIERlZmF1bHQgdG8gZW1wdHkgKGkuZS4gYXNzaWduaW5nIHRoZSBudWxsIHN0cmluZyB0bykgQ0ZMQUdTIGFuZCBDWFhGTEFHUywKLSBkbmwgaW5zdGVhZCBvZiB0aGUgYXV0b2NvbmYgZGVmYXVsdCAoZm9yIGV4YW1wbGUsICctZyAtTzInIGZvciBDQz1nY2MpLgotLSR7Q0ZMQUdTPX0KLS0ke0NYWEZMQUdTPX0KLSs6ICR7Q0ZMQUdTPX0KLSs6ICR7Q1hYRkxBR1M9fQotIAotIGRubCBXZSBuZWVkIHRvIGNoZWNrIGZvciB0aGUgY29tcGlsZXIgdXAgaGVyZSB0byBhdm9pZCBhbnl0aGluZyBlbHNlCi0gZG5sIHN0YXJ0aW5nIHdpdGggYSBkaWZmZXJlbnQgb25lLgotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggZjNhNjU5NC4uOTA5MGNkYSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtMTk5Miw4ICsxOTkyLDggQEAgZWNobyAiJGFzX21lOiBlcnJvcjogQWxyZWFkeSBjb25maWd1cmVkIGluICR7c3JjZGlyfSIgPiYyO30KLSAgIGZpCi0gZmkKLSAKLS0ke0NGTEFHUz19Ci0tJHtDWFhGTEFHUz19Ci0rOiAke0NGTEFHUz19Ci0rOiAke0NYWEZMQUdTPX0KLSAKLSBhY19leHQ9YwotIGFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zL2FybV9mZW52X3VjbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zL2FybV9mZW52X3VjbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNhZTQ5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xsdm0vbGx2bTMuMy9hcm1fZmVudl91Y2xpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1JbmRleDogbGx2bS0yLjkvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRkVudi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGx2bS0yLjkub3JpZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9GRW52LmgJMjAxMC0xMS0yOSAyMDo0NDo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsbHZtLTIuOS9pbmNsdWRlL2xsdm0vU3VwcG9ydC9GRW52LmgJMjAxMS0xMS0xOCAxODo0MjoyMi41ODAxNjEyOTcgKzAxMDAKLUBAIC0xNyw2ICsxNyw5IEBACi0gCi0gI2luY2x1ZGUgImxsdm0vQ29uZmlnL2NvbmZpZy5oIgotICNpbmNsdWRlIDxjZXJybm8+Ci0rCi0rI3VuZGVmIEhBVkVfRkVOVl9ICi0rCi0gI2lmZGVmIEhBVkVfRkVOVl9ICi0gI2luY2x1ZGUgPGZlbnYuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGx2bS9sbHZtMy4zXzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBhMjIyMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xsdm0vbGx2bTMuM18zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlIGxsdm0uaW5jCi0KLURFUEVORFMgKz0gInpsaWIiCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXpsaWIiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9SZW1vdmUtZXJyb3Itb3V0cHV0LWZyb20tY29uZmlndXJlLWlmLUNGTEFHUy1pcy1zZXQtLnBhdGNoIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgZmlsZTovL2FybV9mZW52X3VjbGliYy5wYXRjaCAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MDU2NGUxZGMzOTBmOTg0NGYxNzExYzA4YjA4ZTM5MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODc2NmIxZTcwZDA1YTI1ZTJmNTAyZTk5N2EzY2IzOTM3MTg3YTMyOTY1OTVjZjZlMDk3N2Q1Y2Q2NzI3NTc4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tyNjAwXSA9ICItLWVuYWJsZS1leHBlcmltZW50YWwtdGFyZ2V0cz1SNjAwLCwsIgotCi0jIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKLSMgfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci0jIHwge3N0YW5kYXJkIGlucHV0fToyMjogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHN0bWRiIHNwISx7cjAscjEscjIscjMsbHJ9JwotIyB8IHtzdGFuZGFyZCBpbnB1dH06MzE6IEVycm9yOiBsbyByZWdpc3RlciByZXF1aXJlZCAtLSBgbGRtaWEgc3AhLHtyMCxyMSxyMixyMyxscn0nCi0jIHwge3N0YW5kYXJkIGlucHV0fTozMjogRXJyb3I6IGxvIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBsZHIgcGMsW3NwXSwjNCcKLSMgfCBtYWtlWzNdOiAqKiogWy9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL2xsdm0zLjMvMy4zLXIwL2xsdm0tMy4zLmJ1aWxkL2xpYi9UYXJnZXQvQVJNL1JlbGVhc2UvQVJNSklUSW5mby5vXSBFcnJvciAxCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzaWMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2ljLmJiCmluZGV4IGE1M2ZhNjkuLmIxMjE4M2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzaWMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNpYy5iYgpAQCAtMyw3ICszLDcgQEAKIAogU1VNTUFSWSA9ICJCYXNpYyB0YXNrIHRvIGdldCBhIGRldmljZSBvbmxpbmUiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKIFBSID0gInIxMyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ib290LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ib290LmJiCmluZGV4IGE1NDJhZTQuLjNhZTdhNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYm9vdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJvb3QuYmIKQEAgLTEsNiArMSw2IEBACiBTVU1NQVJZID0gIkJhc2ljIHRhc2sgdG8gZ2V0IGEgZGV2aWNlIGJvb3RpbmciCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKIFBSID0gInI1OCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jbGktdG9vbHMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNsaS10b29scy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk3ZjliZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNsaS10b29scy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzZXQgb2YgdXNlZnVsIGNvbW1hbmQgbGluZSB0b29scyIKLVNVTU1BUllfJHtQTn0tZGVidWcgPSAiQSBzZXQgb2YgY29tbWFuZCBsaW5lIHRvb2xzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIgotU0VDVElPTiA9ICJjb25zb2xlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKLVBWID0gIjEuMCIKLVBSID0gInIyMSIKLQotaW5oZXJpdCBwYWNrYWdlZ3JvdXAgYWxsYXJjaAotCi1QQUNLQUdFUyArPSAiJHtQTn0tZGVidWciCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICBkYnVzLWRhZW1vbi1wcm94eSBcCi0gICAgZG9zZnN0b29scyBcCi0gICAgaHRvcCBcCi0gICAgaXB0YWJsZXMgXAotICAgIGxzb2YgXAotICAgIG1idWZmZXIgXAotICAgIG10ZC11dGlscyBcCi0gICAgbmFubyBcCi0gICAgbmZzLXV0aWxzLWNsaWVudCBcCi0gICAgbm1vbiBcCi0gICAgcG93ZXJ0b3AgXAotICAgIHNjcmVlbiBcCi0gICAgc29jYXQgXAotICAgIHN5c3N0YXQgXAotIgotCi1SREVQRU5EU18ke1BOfS1kZWJ1ZyA9ICJcCi0gICAgZXZ0ZXN0IFwKLSAgICBkZXZtZW0yIFwKLSAgICBpMmMtdG9vbHMgXAotICAgIGdkYiBcCi0gICAgcHJvY3BzIFwKLSAgICBweGFyZWdzIFwKLSAgICBzM2MyNHh4LWdwaW8gXAotICAgIHMzYzY0eHgtZ3BpbyBcCi0gICAgc2VyaWFsLWZvcndhcmQgXAotICAgIHN0cmFjZSBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRlYnVnID0gIlwKLSAgICBsdHJhY2UgXAotIgotCi1QTkJMQUNLTElTVFtwYWNrYWdlZ3JvdXAtY2xpLXRvb2xzXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGRidXMtZGFlbW9uLXByb3h5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFtwYWNrYWdlZ3JvdXAtY2xpLXRvb2xzXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIHBhY2thZ2Vncm91cC1jbGktdG9vbHMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3Byb3h5LWxpYmludGwvcHJveHktbGliaW50bC0yMDEwMDkwMi9zb25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3Byb3h5LWxpYmludGwvcHJveHktbGliaW50bC0yMDEwMDkwMi9zb25hbWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZjIzMmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wcm94eS1saWJpbnRsL3Byb3h5LWxpYmludGwtMjAxMDA5MDIvc29uYW1lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotSW5kZXg6IHByb3h5LWxpYmludGwtMjAwODA0MTgtcjYvc3JjL3Byb3h5LWxpYmludGwvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwcm94eS1saWJpbnRsLTIwMDgwNDE4LXI2Lm9yaWcvc3JjL3Byb3h5LWxpYmludGwvTWFrZWZpbGUJMjAxMC0wNy0yNSAwODo0MDoyMi44OTM2MjAwMDEgLTA3MDAKLSsrKyBwcm94eS1saWJpbnRsLTIwMDgwNDE4LXI2L3NyYy9wcm94eS1saWJpbnRsL01ha2VmaWxlCTIwMTAtMDctMjUgMTA6NTE6MjkuNTczNjIwMDAwIC0wNzAwCi1AQCAtNiwxNiArNiwxMyBAQCBDRkxBR1MgPSAtV2FsbCAtSSAuLi8uLi9pbmNsdWRlCi0gCi0gYWxsIDogLi4vLi4vbGliL2xpYmludGwuc28gLi4vLi4vbGliL2ludGwubGliCi0gCi0tLi4vLi4vbGliL2xpYmludGwuc28gOiBsaWJpbnRsLm8KLS0JJChDQykgLXNoYXJlZCAtbyAkQCBsaWJpbnRsLm8KLSsuLi8uLi9saWIvbGliaW50bC5zbyA6IGxpYmludGwuYwotKwkkKENDKSAkKENGTEFHUykgLXNoYXJlZCAtV2wsLXNvbmFtZSAtV2wsbGliaW50bC5zbyAtbyAkQCAkPAotIAotIC4uLy4uL2xpYi9pbnRsLmxpYiA6IC4uLy4uL2xpYi9saWJpbnRsLnNvCi0gCWNwIC4uLy4uL2xpYi9saWJpbnRsLnNvICRACi0gCSQoU1RSSVApIC0tc3RyaXAtdW5uZWVkZWQgJEAKLSAKLS1saWJpbnRsLm8gOiBsaWJpbnRsLmMKLS0JJChDQykgJChDRkxBR1MpIC1jIGxpYmludGwuYwotLQotIGNsZWFuIDoKLSAJcm0gLWYgKi5vIC4uLy4uL2xpYi9saWJpbnRsLnNvIC4uLy4uLyQoWklQRklMRSkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF8wLjcuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF8wLjcuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNkNDRmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfMC43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1TVU1NQVJZID0gIlRveWJveCBjb21iaW5lcyBjb21tb24gdXRpbGl0aWVzIHRvZ2V0aGVyIGludG8gYSBzaW5nbGUgZXhlY3V0YWJsZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxhbmRsZXkubmV0L3RveWJveC8iCi1ERVBFTkRTID0gImF0dHIiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vd3d3LmxhbmRsZXkubmV0L3RveWJveC9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZmEyYTAwMTQwMmNiMDY3YmE1NDFlMGQ4OTQ4ZGE1MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNjQ2OWI1MDgyMjRlMGQyZTQ1NjRkZGEwNWM0YmI0N2FlZjVjMjhiZjI5ZDZjOTgzYmNkYzZlM2EwY2QyOWQ2IgotCi1MSUNFTlNFID0gIkJTRC0wLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWYwYjhiM2RkNjQzMWJjYWEyNDVkYTBhMDhiZDBkNTExIgotCi1TRUNUSU9OID0gImJhc2UiCi0KLVRPWUJPWF9CSU4gPSAiZ2VuZXJhdGVkL3Vuc3RyaXBwZWQvdG95Ym94IgotCi1FWFRSQV9PRU1BS0UgPSAnSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSInCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBvZV9ydW5tYWtlIGRlZmNvbmZpZwotCi0gICAgIyBEaXNhYmxlIGtpbGxhbGw1IGFzIGl0IGlzbid0IG1hbmFnZWQgYnkgdXBkYXRlLWFsdGVybmF0aXZlcwotICAgIHNlZCAtZSAncy9DT05GSUdfS0lMTEFMTDU9eS8jIENPTkZJR19LSUxMQUxMNSBpcyBub3Qgc2V0LycgLWkgLmNvbmZpZwotCi0gICAgIyBEaXNhYmxlIHN3YXBvbiBhcyBpdCBkb2Vzbid0IGhhbmRsZSB0aGUgJy1hJyBhcmd1bWVudCB1c2VkIGR1cmluZyBib290Ci0gICAgc2VkIC1lICdzL0NPTkZJR19TV0FQT049eS8jIENPTkZJR19TV0FQT04gaXMgbm90IHNldC8nIC1pIC5jb25maWcKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlICR7VE9ZQk9YX0JJTn0KLQotICAgICMgQ3JlYXRlIGEgbGlzdCBvZiBsaW5rcyBuZWVkZWQKLSAgICAke0JVSUxEX0NDfSAtSSAuIHNjcmlwdHMvaW5zdGFsbC5jIC1vIGdlbmVyYXRlZC9pbnN0bGlzdAotICAgIC4vZ2VuZXJhdGVkL2luc3RsaXN0IGxvbmcgfCBzZWQgLWUgJ3MjXiMvIycgPiB0b3lib3gubGlua3MKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICAjIEluc3RhbGwgbWFudWFsbHkgaW5zdGVhZCBvZiB1c2luZyAnbWFrZSBpbnN0YWxsJwotICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0gICAgaWYgZ3JlcCAtcSAiQ09ORklHX1RPWUJPWF9TVUlEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgotICAgICAgICBpbnN0YWxsIC1tIDQ3NTUgJHtCfS8ke1RPWUJPWF9CSU59ICR7RH0ke2Jhc2VfYmluZGlyfS90b3lib3gKLSAgICBlbHNlCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9LyR7VE9ZQk9YX0JJTn0gJHtEfSR7YmFzZV9iaW5kaXJ9L3RveWJveAotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vdG95Ym94LmxpbmtzICR7RH0ke3N5c2NvbmZkaXJ9Ci19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi0jIElmIHlvdSd2ZSBjaG9zZW4gdG8gaW5zdGFsbCB0b3lib3ggeW91IHByb2JhYmx5IHdhbnQgaXQgdG8gdGFrZSBwcmVjZWRlbmNlCi0jIG92ZXIgYnVzeWJveCB3aGVyZSBwb3NzaWJsZSBidXQgbm90IG92ZXIgb3RoZXIgcGFja2FnZXMKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgotCi1weXRob24gZG9fcGFja2FnZV9wcmVwZW5kICgpIHsKLSAgICAjIFJlYWQgbGlua3MgZnJvbSAvZXRjL3RveWJveC5saW5rcyBhbmQgY3JlYXRlIGFwcHJvcHJpYXRlCi0gICAgIyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHZhcmlhYmxlcwotCi0gICAgZHZhciA9IGQuZ2V0VmFyKCdEJykKLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgdGFyZ2V0ID0gIi9iaW4vdG95Ym94IgotCi0gICAgZiA9IG9wZW4oJyVzL2V0Yy90b3lib3gubGlua3MnICUgKGR2YXIpLCAncicpCi0gICAgZm9yIGFsdF9saW5rX25hbWUgaW4gZjoKLSAgICAgICAgYWx0X2xpbmtfbmFtZSA9IGFsdF9saW5rX25hbWUuc3RyaXAoKQotICAgICAgICBhbHRfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoYWx0X2xpbmtfbmFtZSkKLSAgICAgICAgZC5hcHBlbmRWYXIoJ0FMVEVSTkFUSVZFXyVzJyAlIChwbiksICcgJyArIGFsdF9uYW1lKQotICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIGFsdF9uYW1lLCBhbHRfbGlua19uYW1lKQotICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX1RBUkdFVCcsIGFsdF9uYW1lLCB0YXJnZXQpCi0gICAgZi5jbG9zZSgpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS90b3lib3gvdG95Ym94X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGY5NzE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS90b3lib3gvdG95Ym94X2dpdC5iYgpAQCAtMCwwICsxLDc1IEBACitTVU1NQVJZID0gIlRveWJveCBjb21iaW5lcyBjb21tb24gdXRpbGl0aWVzIHRvZ2V0aGVyIGludG8gYSBzaW5nbGUgZXhlY3V0YWJsZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxhbmRsZXkubmV0L3RveWJveC8iCitERVBFTkRTID0gImF0dHIiCisKK0xJQ0VOU0UgPSAiQlNELTAtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjBiOGIzZGQ2NDMxYmNhYTI0NWRhMGEwOGJkMGQ1MTEiCisKK1BWID0gIjAuNy40K2dpdCR7U1JDUFZ9IgorCitTUkNSRVYgPSAiNzgyODkyMDMwMzFhZmMyMzU4NTAzNWMzNjJiZWVjMTBkYjU0OTU4ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sYW5kbGV5L3RveWJveDtwcm90b2NvbD1odHRwcyBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1NFQ1RJT04gPSAiYmFzZSIKKworVE9ZQk9YX0JJTiA9ICJnZW5lcmF0ZWQvdW5zdHJpcHBlZC90b3lib3giCisKK0VYVFJBX09FTUFLRSA9ICdIT1NUQ0M9IiR7QlVJTERfQ0N9IiBDUFVTPSR7QG9lLnV0aWxzLmNwdV9jb3VudCgpfScKKworZG9fY29uZmlndXJlKCkgeworICAgIG9lX3J1bm1ha2UgZGVmY29uZmlnCisKKyAgICAjIERpc2FibGUga2lsbGFsbDUgYXMgaXQgaXNuJ3QgbWFuYWdlZCBieSB1cGRhdGUtYWx0ZXJuYXRpdmVzCisgICAgc2VkIC1lICdzL0NPTkZJR19LSUxMQUxMNT15LyMgQ09ORklHX0tJTExBTEw1IGlzIG5vdCBzZXQvJyAtaSAuY29uZmlnCisKKyAgICAjIERpc2FibGUgc3dhcG9uIGFzIGl0IGRvZXNuJ3QgaGFuZGxlIHRoZSAnLWEnIGFyZ3VtZW50IHVzZWQgZHVyaW5nIGJvb3QKKyAgICBzZWQgLWUgJ3MvQ09ORklHX1NXQVBPTj15LyMgQ09ORklHX1NXQVBPTiBpcyBub3Qgc2V0LycgLWkgLmNvbmZpZworfQorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UgJHtUT1lCT1hfQklOfQorCisgICAgIyBDcmVhdGUgYSBsaXN0IG9mIGxpbmtzIG5lZWRlZAorICAgICR7QlVJTERfQ0N9IC1JIC4gc2NyaXB0cy9pbnN0YWxsLmMgLW8gZ2VuZXJhdGVkL2luc3RsaXN0CisgICAgLi9nZW5lcmF0ZWQvaW5zdGxpc3QgbG9uZyB8IHNlZCAtZSAncyNeIy8jJyA+IHRveWJveC5saW5rcworfQorCitkb19pbnN0YWxsKCkgeworICAgICMgSW5zdGFsbCBtYW51YWxseSBpbnN0ZWFkIG9mIHVzaW5nICdtYWtlIGluc3RhbGwnCisgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICBpZiBncmVwIC1xICJDT05GSUdfVE9ZQk9YX1NVSUQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisgICAgICAgIGluc3RhbGwgLW0gNDc1NSAke0J9LyR7VE9ZQk9YX0JJTn0gJHtEfSR7YmFzZV9iaW5kaXJ9L3RveWJveAorICAgIGVsc2UKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vJHtUT1lCT1hfQklOfSAke0R9JHtiYXNlX2JpbmRpcn0vdG95Ym94CisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtCfS90b3lib3gubGlua3MgJHtEfSR7c3lzY29uZmRpcn0KK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKKyMgSWYgeW91J3ZlIGNob3NlbiB0byBpbnN0YWxsIHRveWJveCB5b3UgcHJvYmFibHkgd2FudCBpdCB0byB0YWtlIHByZWNlZGVuY2UKKyMgb3ZlciBidXN5Ym94IHdoZXJlIHBvc3NpYmxlIGJ1dCBub3Qgb3ZlciBvdGhlciBwYWNrYWdlcworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCisKK3B5dGhvbiBkb19wYWNrYWdlX3ByZXBlbmQgKCkgeworICAgICMgUmVhZCBsaW5rcyBmcm9tIC9ldGMvdG95Ym94LmxpbmtzIGFuZCBjcmVhdGUgYXBwcm9wcmlhdGUKKyAgICAjIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdmFyaWFibGVzCisKKyAgICBkdmFyID0gZC5nZXRWYXIoJ0QnKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICB0YXJnZXQgPSAiL2Jpbi90b3lib3giCisKKyAgICBmID0gb3BlbignJXMvZXRjL3RveWJveC5saW5rcycgJSAoZHZhciksICdyJykKKyAgICBmb3IgYWx0X2xpbmtfbmFtZSBpbiBmOgorICAgICAgICBhbHRfbGlua19uYW1lID0gYWx0X2xpbmtfbmFtZS5zdHJpcCgpCisgICAgICAgIGFsdF9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShhbHRfbGlua19uYW1lKQorICAgICAgICBkLmFwcGVuZFZhcignQUxURVJOQVRJVkVfJXMnICUgKHBuKSwgJyAnICsgYWx0X25hbWUpCisgICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgYWx0X25hbWUsIGFsdF9saW5rX25hbWUpCisgICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUJywgYWx0X25hbWUsIHRhcmdldCkKKyAgICBmLmNsb3NlKCkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLy5naXRpZ25vcmUKaW5kZXggYjhhMDhmOC4uYjAzNGMxMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLy5naXRpZ25vcmUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLy5naXRpZ25vcmUKQEAgLTMsNiArMyw4IEBACiAhKi5pbmRpcmVjdGlvbnN5bWxpbmsKICEqLltjaF0KICEqLm1rCishKi5wYXRjaAorISouc2VydmljZQogIU5PVElDRQogIU1PRFVMRV9MSUNFTlNFXyoKICEvc3lzdGVtLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLzAwMDEtYWRkLWJhc2U2NC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy8wMDAxLWFkZC1iYXNlNjQtaW1wbGVtZW50YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgwZDIxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy8wMDAxLWFkZC1iYXNlNjQtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzNTEgQEAKK0Zyb20gYmJlYjcyZjExYzY0ZjE5MGIyM2FiYmVkNWY0NDMxMWJkMDIxYmRjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDE1OjQ2OjM4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBhZGQgYmFzZTY0IGltcGxlbWVudGF0aW9uCisKK211c2wgbmVlZHMgaXQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c3RlbS9jb3JlL2FkYi9hZGJfYXV0aF9jbGllbnQuYyB8ICAgMiArLQorIHN5c3RlbS9jb3JlL2FkYi9iYXNlNjQuYyAgICAgICAgICB8IDMxNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jCisKK2RpZmYgLS1naXQgYS9zeXN0ZW0vY29yZS9hZGIvYWRiX2F1dGhfY2xpZW50LmMgYi9zeXN0ZW0vY29yZS9hZGIvYWRiX2F1dGhfY2xpZW50LmMKK2luZGV4IDU1ZTlkY2EuLjEwNGI0MTMgMTAwNjQ0CistLS0gYS9zeXN0ZW0vY29yZS9hZGIvYWRiX2F1dGhfY2xpZW50LmMKKysrKyBiL3N5c3RlbS9jb3JlL2FkYi9hZGJfYXV0aF9jbGllbnQuYworQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHZvaWQgcmVhZF9rZXlzKGNvbnN0IGNoYXIgKmZpbGUsIHN0cnVjdCBsaXN0bm9kZSAqbGlzdCkKKyAgICAgICAgIGlmIChzZXApCisgICAgICAgICAgICAgKnNlcCA9ICdcMCc7CisgCistICAgICAgICByZXQgPSBfX2I2NF9wdG9uKGJ1ZiwgKHVfY2hhciAqKSZrZXktPmtleSwgc2l6ZW9mKGtleS0+a2V5KSArIDQpOworKyAgICAgICAgcmV0ID0gYjY0X3B0b24oYnVmLCAodV9jaGFyICopJmtleS0+a2V5LCBzaXplb2Yoa2V5LT5rZXkpICsgNCk7CisgICAgICAgICBpZiAocmV0ICE9IHNpemVvZihrZXktPmtleSkpIHsKKyAgICAgICAgICAgICBEKCIlczogSW52YWxpZCBiYXNlNjQgZGF0YSByZXQ9JWRcbiIsIGZpbGUsIHJldCk7CisgICAgICAgICAgICAgZnJlZShrZXkpOworZGlmZiAtLWdpdCBhL3N5c3RlbS9jb3JlL2FkYi9iYXNlNjQuYyBiL3N5c3RlbS9jb3JlL2FkYi9iYXNlNjQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjk1ZGEyODQKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c3RlbS9jb3JlL2FkYi9iYXNlNjQuYworQEAgLTAsMCArMSwzMTUgQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMTk5Ni0xOTk5IGJ5IEludGVybmV0IFNvZnR3YXJlIENvbnNvcnRpdW0uCisrICoKKysgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKysgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCisrICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBJTlRFUk5FVCBTT0ZUV0FSRSBDT05TT1JUSVVNIERJU0NMQUlNUworKyAqIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMKKysgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIElOVEVSTkVUIFNPRlRXQVJFCisrICogQ09OU09SVElVTSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMCisrICogREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SCisrICogUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMKKysgKiBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMKKysgKiBTT0ZUV0FSRS4KKysgKi8KKysKKysvKgorKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NSBieSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzLCBJbmMuCisrICoKKysgKiBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzLCBJbmMuIChoZXJlaW5hZnRlciBjYWxsZWQgSUJNKSBncmFudHMKKysgKiBwZXJtaXNzaW9uIHVuZGVyIGl0cyBjb3B5cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzCisrICogU29mdHdhcmUgd2l0aCBvciB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQKKysgKiBhbGwgcGFyYWdyYXBocyBvZiB0aGlzIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcywgYW5kIHRoYXQgdGhlIG5hbWUgb2YgSUJNCisrICogbm90IGJlIHVzZWQgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBtYXJrZXRpbmcgb2YgYW55IHByb2R1Y3QgaW5jb3Jwb3JhdGluZworKyAqIHRoZSBTb2Z0d2FyZSBvciBtb2RpZmljYXRpb25zIHRoZXJlb2YsIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKKysgKiBwZXJtaXNzaW9uLgorKyAqCisrICogVG8gdGhlIGV4dGVudCBpdCBoYXMgYSByaWdodCB0byBkbyBzbywgSUJNIGdyYW50cyBhbiBpbW11bml0eSBmcm9tIHN1aXQKKysgKiB1bmRlciBpdHMgcGF0ZW50cywgaWYgYW55LCBmb3IgdGhlIHVzZSwgc2FsZSBvciBtYW51ZmFjdHVyZSBvZiBwcm9kdWN0cyB0bworKyAqIHRoZSBleHRlbnQgdGhhdCBzdWNoIHByb2R1Y3RzIGFyZSB1c2VkIGZvciBwZXJmb3JtaW5nIERvbWFpbiBOYW1lIFN5c3RlbQorKyAqIGR5bmFtaWMgdXBkYXRlcyBpbiBUQ1AvSVAgbmV0d29ya3MgYnkgbWVhbnMgb2YgdGhlIFNvZnR3YXJlLiAgTm8gaW1tdW5pdHkgaXMKKysgKiBncmFudGVkIGZvciBhbnkgcHJvZHVjdCBwZXIgc2Ugb3IgZm9yIGFueSBvdGhlciBmdW5jdGlvbiBvZiBhbnkgcHJvZHVjdC4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBBTkQgSUJNIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUywKKysgKiBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKysgKiBQQVJUSUNVTEFSIFBVUlBPU0UuICBJTiBOTyBFVkVOVCBTSEFMTCBJQk0gQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwKKysgKiBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBBUklTSU5HCisrICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4KKysgKiBJRiBJQk0gSVMgQVBQUklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KKysgKi8KKysKKysjaWYgIWRlZmluZWQoTElOVCkgJiYgIWRlZmluZWQoQ09ERUNFTlRFUikKKytzdGF0aWMgY29uc3QgY2hhciByY3NpZFtdID0gIiRCSU5ESWQ6IGJhc2U2NC5jLHYgOC43IDE5OTkvMTAvMTMgMTY6Mzk6MzMgdml4aWUgRXhwICQiOworKyNlbmRpZiAvKiBub3QgbGludCAqLworKworKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisrI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysKKysjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKysjaW5jbHVkZSA8YXJwYS9uYW1lc2VyLmg+CisrCisrI2luY2x1ZGUgPGN0eXBlLmg+CisrI2luY2x1ZGUgPHJlc29sdi5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNkZWZpbmUgQXNzZXJ0KENvbmQpIGlmICghKENvbmQpKSBhYm9ydCgpCisrCisrc3RhdGljIGNvbnN0IGNoYXIgQmFzZTY0W10gPQorKwkiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7Cisrc3RhdGljIGNvbnN0IGNoYXIgUGFkNjQgPSAnPSc7CisrCisrLyogKEZyb20gUkZDMTUyMSBhbmQgZHJhZnQtaWV0Zi1kbnNzZWMtc2VjZXh0LTAzLnR4dCkKKysgICBUaGUgZm9sbG93aW5nIGVuY29kaW5nIHRlY2huaXF1ZSBpcyB0YWtlbiBmcm9tIFJGQyAxNTIxIGJ5IEJvcmVuc3RlaW4KKysgICBhbmQgRnJlZWQuICBJdCBpcyByZXByb2R1Y2VkIGhlcmUgaW4gYSBzbGlnaHRseSBlZGl0ZWQgZm9ybSBmb3IKKysgICBjb252ZW5pZW5jZS4KKysKKysgICBBIDY1LWNoYXJhY3RlciBzdWJzZXQgb2YgVVMtQVNDSUkgaXMgdXNlZCwgZW5hYmxpbmcgNiBiaXRzIHRvIGJlCisrICAgcmVwcmVzZW50ZWQgcGVyIHByaW50YWJsZSBjaGFyYWN0ZXIuIChUaGUgZXh0cmEgNjV0aCBjaGFyYWN0ZXIsICI9IiwKKysgICBpcyB1c2VkIHRvIHNpZ25pZnkgYSBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb24uKQorKworKyAgIFRoZSBlbmNvZGluZyBwcm9jZXNzIHJlcHJlc2VudHMgMjQtYml0IGdyb3VwcyBvZiBpbnB1dCBiaXRzIGFzIG91dHB1dAorKyAgIHN0cmluZ3Mgb2YgNCBlbmNvZGVkIGNoYXJhY3RlcnMuIFByb2NlZWRpbmcgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBhCisrICAgMjQtYml0IGlucHV0IGdyb3VwIGlzIGZvcm1lZCBieSBjb25jYXRlbmF0aW5nIDMgOC1iaXQgaW5wdXQgZ3JvdXBzLgorKyAgIFRoZXNlIDI0IGJpdHMgYXJlIHRoZW4gdHJlYXRlZCBhcyA0IGNvbmNhdGVuYXRlZCA2LWJpdCBncm91cHMsIGVhY2gKKysgICBvZiB3aGljaCBpcyB0cmFuc2xhdGVkIGludG8gYSBzaW5nbGUgZGlnaXQgaW4gdGhlIGJhc2U2NCBhbHBoYWJldC4KKysKKysgICBFYWNoIDYtYml0IGdyb3VwIGlzIHVzZWQgYXMgYW4gaW5kZXggaW50byBhbiBhcnJheSBvZiA2NCBwcmludGFibGUKKysgICBjaGFyYWN0ZXJzLiBUaGUgY2hhcmFjdGVyIHJlZmVyZW5jZWQgYnkgdGhlIGluZGV4IGlzIHBsYWNlZCBpbiB0aGUKKysgICBvdXRwdXQgc3RyaW5nLgorKworKyAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAxOiBUaGUgQmFzZTY0IEFscGhhYmV0CisrCisrICAgICAgVmFsdWUgRW5jb2RpbmcgIFZhbHVlIEVuY29kaW5nICBWYWx1ZSBFbmNvZGluZyAgVmFsdWUgRW5jb2RpbmcKKysgICAgICAgICAgMCBBICAgICAgICAgICAgMTcgUiAgICAgICAgICAgIDM0IGkgICAgICAgICAgICA1MSB6CisrICAgICAgICAgIDEgQiAgICAgICAgICAgIDE4IFMgICAgICAgICAgICAzNSBqICAgICAgICAgICAgNTIgMAorKyAgICAgICAgICAyIEMgICAgICAgICAgICAxOSBUICAgICAgICAgICAgMzYgayAgICAgICAgICAgIDUzIDEKKysgICAgICAgICAgMyBEICAgICAgICAgICAgMjAgVSAgICAgICAgICAgIDM3IGwgICAgICAgICAgICA1NCAyCisrICAgICAgICAgIDQgRSAgICAgICAgICAgIDIxIFYgICAgICAgICAgICAzOCBtICAgICAgICAgICAgNTUgMworKyAgICAgICAgICA1IEYgICAgICAgICAgICAyMiBXICAgICAgICAgICAgMzkgbiAgICAgICAgICAgIDU2IDQKKysgICAgICAgICAgNiBHICAgICAgICAgICAgMjMgWCAgICAgICAgICAgIDQwIG8gICAgICAgICAgICA1NyA1CisrICAgICAgICAgIDcgSCAgICAgICAgICAgIDI0IFkgICAgICAgICAgICA0MSBwICAgICAgICAgICAgNTggNgorKyAgICAgICAgICA4IEkgICAgICAgICAgICAyNSBaICAgICAgICAgICAgNDIgcSAgICAgICAgICAgIDU5IDcKKysgICAgICAgICAgOSBKICAgICAgICAgICAgMjYgYSAgICAgICAgICAgIDQzIHIgICAgICAgICAgICA2MCA4CisrICAgICAgICAgMTAgSyAgICAgICAgICAgIDI3IGIgICAgICAgICAgICA0NCBzICAgICAgICAgICAgNjEgOQorKyAgICAgICAgIDExIEwgICAgICAgICAgICAyOCBjICAgICAgICAgICAgNDUgdCAgICAgICAgICAgIDYyICsKKysgICAgICAgICAxMiBNICAgICAgICAgICAgMjkgZCAgICAgICAgICAgIDQ2IHUgICAgICAgICAgICA2MyAvCisrICAgICAgICAgMTMgTiAgICAgICAgICAgIDMwIGUgICAgICAgICAgICA0NyB2CisrICAgICAgICAgMTQgTyAgICAgICAgICAgIDMxIGYgICAgICAgICAgICA0OCB3ICAgICAgICAgKHBhZCkgPQorKyAgICAgICAgIDE1IFAgICAgICAgICAgICAzMiBnICAgICAgICAgICAgNDkgeAorKyAgICAgICAgIDE2IFEgICAgICAgICAgICAzMyBoICAgICAgICAgICAgNTAgeQorKworKyAgIFNwZWNpYWwgcHJvY2Vzc2luZyBpcyBwZXJmb3JtZWQgaWYgZmV3ZXIgdGhhbiAyNCBiaXRzIGFyZSBhdmFpbGFibGUKKysgICBhdCB0aGUgZW5kIG9mIHRoZSBkYXRhIGJlaW5nIGVuY29kZWQuICBBIGZ1bGwgZW5jb2RpbmcgcXVhbnR1bSBpcworKyAgIGFsd2F5cyBjb21wbGV0ZWQgYXQgdGhlIGVuZCBvZiBhIHF1YW50aXR5LiAgV2hlbiBmZXdlciB0aGFuIDI0IGlucHV0CisrICAgYml0cyBhcmUgYXZhaWxhYmxlIGluIGFuIGlucHV0IGdyb3VwLCB6ZXJvIGJpdHMgYXJlIGFkZGVkIChvbiB0aGUKKysgICByaWdodCkgdG8gZm9ybSBhbiBpbnRlZ3JhbCBudW1iZXIgb2YgNi1iaXQgZ3JvdXBzLiAgUGFkZGluZyBhdCB0aGUKKysgICBlbmQgb2YgdGhlIGRhdGEgaXMgcGVyZm9ybWVkIHVzaW5nIHRoZSAnPScgY2hhcmFjdGVyLgorKworKyAgIFNpbmNlIGFsbCBiYXNlNjQgaW5wdXQgaXMgYW4gaW50ZWdyYWwgbnVtYmVyIG9mIG9jdGV0cywgb25seSB0aGUKKysgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrICAgZm9sbG93aW5nIGNhc2VzIGNhbiBhcmlzZToKKysKKysgICAgICAgKDEpIHRoZSBmaW5hbCBxdWFudHVtIG9mIGVuY29kaW5nIGlucHV0IGlzIGFuIGludGVncmFsCisrICAgICAgICAgICBtdWx0aXBsZSBvZiAyNCBiaXRzOyBoZXJlLCB0aGUgZmluYWwgdW5pdCBvZiBlbmNvZGVkCisrCSAgIG91dHB1dCB3aWxsIGJlIGFuIGludGVncmFsIG11bHRpcGxlIG9mIDQgY2hhcmFjdGVycworKwkgICB3aXRoIG5vICI9IiBwYWRkaW5nLAorKyAgICAgICAoMikgdGhlIGZpbmFsIHF1YW50dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgZXhhY3RseSA4IGJpdHM7CisrICAgICAgICAgICBoZXJlLCB0aGUgZmluYWwgdW5pdCBvZiBlbmNvZGVkIG91dHB1dCB3aWxsIGJlIHR3bworKwkgICBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5IHR3byAiPSIgcGFkZGluZyBjaGFyYWN0ZXJzLCBvcgorKyAgICAgICAoMykgdGhlIGZpbmFsIHF1YW50dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgZXhhY3RseSAxNiBiaXRzOworKyAgICAgICAgICAgaGVyZSwgdGhlIGZpbmFsIHVuaXQgb2YgZW5jb2RlZCBvdXRwdXQgd2lsbCBiZSB0aHJlZQorKwkgICBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5IG9uZSAiPSIgcGFkZGluZyBjaGFyYWN0ZXIuCisrICAgKi8KKysKKytpbnQKKytiNjRfbnRvcChjb25zdCB1aW50OF90KiBzcmMsIHNpemVfdCBzcmNsZW5ndGgsIGNoYXIqIHRhcmdldCwgc2l6ZV90IHRhcmdzaXplKQorK3sKKysJc2l6ZV90IGRhdGFsZW5ndGggPSAwOworKwl1aW50OF90IGlucHV0WzNdOworKwl1aW50OF90IG91dHB1dFs0XTsKKysJc2l6ZV90IGk7CisrCisrCXdoaWxlICgyIDwgc3JjbGVuZ3RoKSB7CisrCQlpbnB1dFswXSA9ICpzcmMrKzsKKysJCWlucHV0WzFdID0gKnNyYysrOworKwkJaW5wdXRbMl0gPSAqc3JjKys7CisrCQlzcmNsZW5ndGggLT0gMzsKKysKKysJCW91dHB1dFswXSA9IGlucHV0WzBdID4+IDI7CisrCQlvdXRwdXRbMV0gPSAoKGlucHV0WzBdICYgMHgwMykgPDwgNCkgKyAoaW5wdXRbMV0gPj4gNCk7CisrCQlvdXRwdXRbMl0gPSAoKGlucHV0WzFdICYgMHgwZikgPDwgMikgKyAoaW5wdXRbMl0gPj4gNik7CisrCQlvdXRwdXRbM10gPSBpbnB1dFsyXSAmIDB4M2Y7CisrCQlBc3NlcnQob3V0cHV0WzBdIDwgNjQpOworKwkJQXNzZXJ0KG91dHB1dFsxXSA8IDY0KTsKKysJCUFzc2VydChvdXRwdXRbMl0gPCA2NCk7CisrCQlBc3NlcnQob3V0cHV0WzNdIDwgNjQpOworKworKwkJaWYgKGRhdGFsZW5ndGggKyA0ID4gdGFyZ3NpemUpCisrCQkJcmV0dXJuICgtMSk7CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbMF1dOworKwkJdGFyZ2V0W2RhdGFsZW5ndGgrK10gPSBCYXNlNjRbb3V0cHV0WzFdXTsKKysJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFsyXV07CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbM11dOworKwl9CisrCisrCS8qIE5vdyB3ZSB3b3JyeSBhYm91dCBwYWRkaW5nLiAqLworKwlpZiAoMCAhPSBzcmNsZW5ndGgpIHsKKysJCS8qIEdldCB3aGF0J3MgbGVmdC4gKi8KKysJCWlucHV0WzBdID0gaW5wdXRbMV0gPSBpbnB1dFsyXSA9ICdcMCc7CisrCQlmb3IgKGkgPSAwOyBpIDwgc3JjbGVuZ3RoOyBpKyspCisrCQkJaW5wdXRbaV0gPSAqc3JjKys7CisrCisrCQlvdXRwdXRbMF0gPSBpbnB1dFswXSA+PiAyOworKwkJb3V0cHV0WzFdID0gKChpbnB1dFswXSAmIDB4MDMpIDw8IDQpICsgKGlucHV0WzFdID4+IDQpOworKwkJb3V0cHV0WzJdID0gKChpbnB1dFsxXSAmIDB4MGYpIDw8IDIpICsgKGlucHV0WzJdID4+IDYpOworKwkJQXNzZXJ0KG91dHB1dFswXSA8IDY0KTsKKysJCUFzc2VydChvdXRwdXRbMV0gPCA2NCk7CisrCQlBc3NlcnQob3V0cHV0WzJdIDwgNjQpOworKworKwkJaWYgKGRhdGFsZW5ndGggKyA0ID4gdGFyZ3NpemUpCisrCQkJcmV0dXJuICgtMSk7CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbMF1dOworKwkJdGFyZ2V0W2RhdGFsZW5ndGgrK10gPSBCYXNlNjRbb3V0cHV0WzFdXTsKKysJCWlmIChzcmNsZW5ndGggPT0gMSkKKysJCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IFBhZDY0OworKwkJZWxzZQorKwkJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFsyXV07CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IFBhZDY0OworKwl9CisrCWlmIChkYXRhbGVuZ3RoID49IHRhcmdzaXplKQorKwkJcmV0dXJuICgtMSk7CisrCXRhcmdldFtkYXRhbGVuZ3RoXSA9ICdcMCc7CS8qIFJldHVybmVkIHZhbHVlIGRvZXNuJ3QgY291bnQgXDAuICovCisrCXJldHVybiAoZGF0YWxlbmd0aCk7CisrfQorKworKy8qIHNraXBzIGFsbCB3aGl0ZXNwYWNlIGFueXdoZXJlLgorKyAgIGNvbnZlcnRzIGNoYXJhY3RlcnMsIGZvdXIgYXQgYSB0aW1lLCBzdGFydGluZyBhdCAob3IgYWZ0ZXIpCisrICAgc3JjIGZyb20gYmFzZSAtIDY0IG51bWJlcnMgaW50byB0aHJlZSA4IGJpdCBieXRlcyBpbiB0aGUgdGFyZ2V0IGFyZWEuCisrICAgaXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGRhdGEgYnl0ZXMgc3RvcmVkIGF0IHRoZSB0YXJnZXQsIG9yIC0xIG9uIGVycm9yLgorKyAqLworKworK2ludCBiNjRfcHRvbihjb25zdCBjaGFyKiBzcmMsIHVpbnQ4X3QqIHRhcmdldCwgc2l6ZV90IHRhcmdzaXplKQorK3sKKysJaW50IHRhcmluZGV4LCBzdGF0ZSwgY2g7CisrCWNoYXIgKnBvczsKKysKKysJc3RhdGUgPSAwOworKwl0YXJpbmRleCA9IDA7CisrCisrCXdoaWxlICgoY2ggPSAqc3JjKyspICE9ICdcMCcpIHsKKysJCWlmIChpc3NwYWNlKGNoKSkJLyogU2tpcCB3aGl0ZXNwYWNlIGFueXdoZXJlLiAqLworKwkJCWNvbnRpbnVlOworKworKwkJaWYgKGNoID09IFBhZDY0KQorKwkJCWJyZWFrOworKworKwkJcG9zID0gc3RyY2hyKEJhc2U2NCwgY2gpOworKwkJaWYgKHBvcyA9PSAwKSAJCS8qIEEgbm9uLWJhc2U2NCBjaGFyYWN0ZXIuICovCisrCQkJcmV0dXJuICgtMSk7CisrCisrCQlzd2l0Y2ggKHN0YXRlKSB7CisrCQljYXNlIDA6CisrCQkJaWYgKHRhcmdldCkgeworKwkJCQlpZiAoKHNpemVfdCl0YXJpbmRleCA+PSB0YXJnc2l6ZSkKKysJCQkJCXJldHVybiAoLTEpOworKwkJCQl0YXJnZXRbdGFyaW5kZXhdID0gKHBvcyAtIEJhc2U2NCkgPDwgMjsKKysJCQl9CisrCQkJc3RhdGUgPSAxOworKwkJCWJyZWFrOworKwkJY2FzZSAxOgorKwkJCWlmICh0YXJnZXQpIHsKKysJCQkJaWYgKChzaXplX3QpdGFyaW5kZXggKyAxID49IHRhcmdzaXplKQorKwkJCQkJcmV0dXJuICgtMSk7CisrCQkJCXRhcmdldFt0YXJpbmRleF0gICB8PSAgKHBvcyAtIEJhc2U2NCkgPj4gNDsKKysJCQkJdGFyZ2V0W3RhcmluZGV4KzFdICA9ICgocG9zIC0gQmFzZTY0KSAmIDB4MGYpCisrCQkJCQkJCTw8IDQgOworKwkJCX0KKysJCQl0YXJpbmRleCsrOworKwkJCXN0YXRlID0gMjsKKysJCQlicmVhazsKKysJCWNhc2UgMjoKKysJCQlpZiAodGFyZ2V0KSB7CisrCQkJCWlmICgoc2l6ZV90KXRhcmluZGV4ICsgMSA+PSB0YXJnc2l6ZSkKKysJCQkJCXJldHVybiAoLTEpOworKwkJCQl0YXJnZXRbdGFyaW5kZXhdICAgfD0gIChwb3MgLSBCYXNlNjQpID4+IDI7CisrCQkJCXRhcmdldFt0YXJpbmRleCsxXSAgPSAoKHBvcyAtIEJhc2U2NCkgJiAweDAzKQorKwkJCQkJCQk8PCA2OworKwkJCX0KKysJCQl0YXJpbmRleCsrOworKwkJCXN0YXRlID0gMzsKKysJCQlicmVhazsKKysJCWNhc2UgMzoKKysJCQlpZiAodGFyZ2V0KSB7CisrCQkJCWlmICgoc2l6ZV90KXRhcmluZGV4ID49IHRhcmdzaXplKQorKwkJCQkJcmV0dXJuICgtMSk7CisrCQkJCXRhcmdldFt0YXJpbmRleF0gfD0gKHBvcyAtIEJhc2U2NCk7CisrCQkJfQorKwkJCXRhcmluZGV4Kys7CisrCQkJc3RhdGUgPSAwOworKwkJCWJyZWFrOworKwkJZGVmYXVsdDoKKysJCQlhYm9ydCgpOworKwkJfQorKwl9CisrCisrCS8qCisrCSAqIFdlIGFyZSBkb25lIGRlY29kaW5nIEJhc2UtNjQgY2hhcnMuICBMZXQncyBzZWUgaWYgd2UgZW5kZWQKKysJICogb24gYSBieXRlIGJvdW5kYXJ5LCBhbmQvb3Igd2l0aCBlcnJvbmVvdXMgdHJhaWxpbmcgY2hhcmFjdGVycy4KKysJICovCisrCisrCWlmIChjaCA9PSBQYWQ2NCkgewkJLyogV2UgZ290IGEgcGFkIGNoYXIuICovCisrCQljaCA9ICpzcmMrKzsJCS8qIFNraXAgaXQsIGdldCBuZXh0LiAqLworKwkJc3dpdGNoIChzdGF0ZSkgeworKwkJY2FzZSAwOgkJLyogSW52YWxpZCA9IGluIGZpcnN0IHBvc2l0aW9uICovCisrCQljYXNlIDE6CQkvKiBJbnZhbGlkID0gaW4gc2Vjb25kIHBvc2l0aW9uICovCisrCQkJcmV0dXJuICgtMSk7CisrCisrCQljYXNlIDI6CQkvKiBWYWxpZCwgbWVhbnMgb25lIGJ5dGUgb2YgaW5mbyAqLworKwkJCS8qIFNraXAgYW55IG51bWJlciBvZiBzcGFjZXMuICovCisrCQkJZm9yICgodm9pZClOVUxMOyBjaCAhPSAnXDAnOyBjaCA9ICpzcmMrKykKKysJCQkJaWYgKCFpc3NwYWNlKGNoKSkKKysJCQkJCWJyZWFrOworKwkJCS8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBhbm90aGVyIHRyYWlsaW5nID0gc2lnbi4gKi8KKysJCQlpZiAoY2ggIT0gUGFkNjQpCisrCQkJCXJldHVybiAoLTEpOworKwkJCWNoID0gKnNyYysrOwkJLyogU2tpcCB0aGUgPSAqLworKwkJCS8qIEZhbGwgdGhyb3VnaCB0byAic2luZ2xlIHRyYWlsaW5nID0iIGNhc2UuICovCisrCQkJLyogRkFMTFRIUk9VR0ggKi8KKysKKysJCWNhc2UgMzoJCS8qIFZhbGlkLCBtZWFucyB0d28gYnl0ZXMgb2YgaW5mbyAqLworKwkJCS8qCisrCQkJICogV2Uga25vdyB0aGlzIGNoYXIgaXMgYW4gPS4gIElzIHRoZXJlIGFueXRoaW5nIGJ1dAorKwkJCSAqIHdoaXRlc3BhY2UgYWZ0ZXIgaXQ/CisrCQkJICovCisrCQkJZm9yICgodm9pZClOVUxMOyBjaCAhPSAnXDAnOyBjaCA9ICpzcmMrKykKKysJCQkJaWYgKCFpc3NwYWNlKGNoKSkKKysJCQkJCXJldHVybiAoLTEpOworKworKwkJCS8qCisrCQkJICogTm93IG1ha2Ugc3VyZSBmb3IgY2FzZXMgMiBhbmQgMyB0aGF0IHRoZSAiZXh0cmEiCisrCQkJICogYml0cyB0aGF0IHNsb3BwZWQgcGFzdCB0aGUgbGFzdCBmdWxsIGJ5dGUgd2VyZQorKwkJCSAqIHplcm9zLiAgSWYgd2UgZG9uJ3QgY2hlY2sgdGhlbSwgdGhleSBiZWNvbWUgYQorKwkJCSAqIHN1YmxpbWluYWwgY2hhbm5lbC4KKysJCQkgKi8KKysJCQlpZiAodGFyZ2V0ICYmIHRhcmdldFt0YXJpbmRleF0gIT0gMCkKKysJCQkJcmV0dXJuICgtMSk7CisrCQl9CisrCX0gZWxzZSB7CisrCQkvKgorKwkJICogV2UgZW5kZWQgYnkgc2VlaW5nIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gIE1ha2Ugc3VyZSB3ZQorKwkJICogaGF2ZSBubyBwYXJ0aWFsIGJ5dGVzIGx5aW5nIGFyb3VuZC4KKysJCSAqLworKwkJaWYgKHN0YXRlICE9IDApCisrCQkJcmV0dXJuICgtMSk7CisrCX0KKysKKysJcmV0dXJuICh0YXJpbmRleCk7CisrfQorKworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLzAwMDItYWRiLU11c2wtZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvMDAwMi1hZGItTXVzbC1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2FlYmI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLzAwMDItYWRiLU11c2wtZml4ZXMucGF0Y2gKQEAgLTAsMCArMSwxMzQgQEAKK0Zyb20gZjg2NTNlZDBlZGU0YWE3ODFhYjc1OGZjZDQ0ZmRjMDVmZmJlMGIwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDE1OjUwOjU3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBhZGI6IE11c2wgZml4ZXMKKworX19ub25udWxsIGlzIGdjYyBzcGVjaWZpYworaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3Igc2l6ZV90CitEbyBub3QgcmVkZWZpbmUgY2xvc2UoKSBhbmQgbHNlZWsoKQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzdGVtL2NvcmUvYWRiL2FkYi5oICAgICAgICAgICAgICAgICAgICB8ICAyICsrCisgc3lzdGVtL2NvcmUvYWRiL2Rpc2FibGVfdmVyaXR5X3NlcnZpY2UuYyB8IDEzICsrKysrKysrLS0tLS0KKyBzeXN0ZW0vY29yZS9hZGIvZnJhbWVidWZmZXJfc2VydmljZS5jICAgIHwgIDcgKysrKy0tLQorIHN5c3RlbS9jb3JlL2FkYi9zeXNkZXBzLmggICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvYWRiL2FkYi5oIGIvc3lzdGVtL2NvcmUvYWRiL2FkYi5oCitpbmRleCA0NGU1OTgxLi5iY2RjNDlmIDEwMDY0NAorLS0tIGEvc3lzdGVtL2NvcmUvYWRiL2FkYi5oCisrKysgYi9zeXN0ZW0vY29yZS9hZGIvYWRiLmgKK0BAIC0xOCw3ICsxOCw5IEBACisgI2RlZmluZSBfX0FEQl9ICisgCisgI2luY2x1ZGUgPGxpbWl0cy5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKysjaW5jbHVkZSAiZmRldmVudC5oIgorICNpbmNsdWRlICJhZGJfdHJhY2UuaCIKKyAjaW5jbHVkZSAidHJhbnNwb3J0LmgiICAvKiByZWFkeCgpLCB3cml0ZXgoKSAqLworIAorZGlmZiAtLWdpdCBhL3N5c3RlbS9jb3JlL2FkYi9kaXNhYmxlX3Zlcml0eV9zZXJ2aWNlLmMgYi9zeXN0ZW0vY29yZS9hZGIvZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jCitpbmRleCBlZDNkYTUyLi4yOWZhM2Q2IDEwMDY0NAorLS0tIGEvc3lzdGVtL2NvcmUvYWRiL2Rpc2FibGVfdmVyaXR5X3NlcnZpY2UuYworKysrIGIvc3lzdGVtL2NvcmUvYWRiL2Rpc2FibGVfdmVyaXR5X3NlcnZpY2UuYworQEAgLTE0LDI1ICsxNCwyOCBAQAorICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAqLworIAorLSNpbmNsdWRlICJzeXNkZXBzLmgiCisgCisgI2RlZmluZSAgVFJBQ0VfVEFHICBUUkFDRV9BREIKKyAjaW5jbHVkZSAiYWRiLmgiCisrI2luY2x1ZGUgInN5c2RlcHMuaCIKKysjaW5jbHVkZSAiY3V0aWxzL3Byb3BlcnRpZXMuaCIKKysjaW5jbHVkZSAiZXh0NF9zYi5oIgorKyNpbmNsdWRlIDxmc19tZ3IuaD4KKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxzdGRib29sLmg+CisgCistI2luY2x1ZGUgImN1dGlscy9wcm9wZXJ0aWVzLmgiCistI2luY2x1ZGUgImV4dDRfc2IuaCIKKy0jaW5jbHVkZSA8ZnNfbWdyLmg+CisgCisgI2RlZmluZSBGU1RBQl9QUkVGSVggIi9mc3RhYi4iCisgc3RydWN0IGZzdGFiICpmc3RhYjsKKyAKKy1fX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBfX25vbm51bGwoKDIpKQorK19fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpIF9fYXR0cmlidXRlX18oKG5vbm51bGwoKDIpKSkpCisgc3RhdGljIHZvaWQgd3JpdGVfY29uc29sZShpbnQgZmQsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQorIHsKKyAgICAgY2hhciBidWZmZXJbMjU2XTsKK2RpZmYgLS1naXQgYS9zeXN0ZW0vY29yZS9hZGIvZnJhbWVidWZmZXJfc2VydmljZS5jIGIvc3lzdGVtL2NvcmUvYWRiL2ZyYW1lYnVmZmVyX3NlcnZpY2UuYworaW5kZXggOGNiZTg0MC4uOGYwY2NmYiAxMDA2NDQKKy0tLSBhL3N5c3RlbS9jb3JlL2FkYi9mcmFtZWJ1ZmZlcl9zZXJ2aWNlLmMKKysrKyBiL3N5c3RlbS9jb3JlL2FkYi9mcmFtZWJ1ZmZlcl9zZXJ2aWNlLmMKK0BAIC0xNCw2ICsxNCwxMCBAQAorICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAqLworIAorKyNpbmNsdWRlICJmZGV2ZW50LmgiCisrI2luY2x1ZGUgImFkYi5oIgorKyNpbmNsdWRlICJzeXNkZXBzLmgiCisrCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK0BAIC0yMyw5ICsyNyw2IEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorIAorLSNpbmNsdWRlICJmZGV2ZW50LmgiCistI2luY2x1ZGUgImFkYi5oIgorLQorICNpbmNsdWRlIDxsaW51eC9mYi5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KK2RpZmYgLS1naXQgYS9zeXN0ZW0vY29yZS9hZGIvc3lzZGVwcy5oIGIvc3lzdGVtL2NvcmUvYWRiL3N5c2RlcHMuaAoraW5kZXggY2MxZjgzOS4uZWEzOWFjMyAxMDA2NDQKKy0tLSBhL3N5c3RlbS9jb3JlL2FkYi9zeXNkZXBzLmgKKysrKyBiL3N5c3RlbS9jb3JlL2FkYi9zeXNkZXBzLmgKK0BAIC0xMjMsOCArMTIzLDggQEAgc3RhdGljIF9faW5saW5lX18gaW50ICB1bml4X2Nsb3NlKGludCBmZCkKKyB7CisgICAgIHJldHVybiBjbG9zZShmZCk7CisgfQorLSN1bmRlZiAgIGNsb3NlCistI2RlZmluZSAgY2xvc2UgICBfX19feHh4X2Nsb3NlCisrLy8jdW5kZWYgICBjbG9zZQorKy8vI2RlZmluZSAgY2xvc2UgICBfX19feHh4X2Nsb3NlCisgCisgc3RhdGljIF9faW5saW5lX18gIGludCAgdW5peF9yZWFkKGludCAgZmQsIHZvaWQqICBidWYsIHNpemVfdCAgbGVuKQorIHsKK0BAIC0zNjksOCArMzY5LDggQEAgc3RhdGljIF9faW5saW5lX18gaW50ICBhZGJfY2xvc2UoaW50IGZkKQorIHsKKyAgICAgcmV0dXJuIGNsb3NlKGZkKTsKKyB9CistI3VuZGVmICAgY2xvc2UKKy0jZGVmaW5lICBjbG9zZSAgIF9fX194eHhfY2xvc2UKKysvLyN1bmRlZiAgIGNsb3NlCisrLy8jZGVmaW5lICBjbG9zZSAgIF9fX194eHhfY2xvc2UKKyAKKyAKKyBzdGF0aWMgX19pbmxpbmVfXyAgaW50ICBhZGJfcmVhZChpbnQgIGZkLCB2b2lkKiAgYnVmLCBzaXplX3QgIGxlbikKK0BAIC0zOTIsOCArMzkyLDggQEAgc3RhdGljIF9faW5saW5lX18gaW50ICAgYWRiX2xzZWVrKGludCAgZmQsIGludCAgcG9zLCBpbnQgIHdoZXJlKQorIHsKKyAgICAgcmV0dXJuIGxzZWVrKGZkLCBwb3MsIHdoZXJlKTsKKyB9CistI3VuZGVmICAgbHNlZWsKKy0jZGVmaW5lICBsc2VlayAgIF9fX3h4eF9sc2VlaworKy8vI3VuZGVmICAgbHNlZWsKKysvLyNkZWZpbmUgIGxzZWVrICAgX19feHh4X2xzZWVrCisgCisgc3RhdGljIF9faW5saW5lX18gIGludCAgICBhZGJfdW5saW5rKGNvbnN0IGNoYXIqICBwYXRoKQorIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9hZGJkLm1rIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2FkYmQubWsKaW5kZXggODRjZDA2Yi4uMzE0NTJhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2FkYmQubWsKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2FkYmQubWsKQEAgLTE2LDYgKzE2LDcgQEAKIGFkYmRfU1JDX0ZJTEVTICs9IGZyYW1lYnVmZmVyX3NlcnZpY2UuYwogYWRiZF9TUkNfRklMRVMgKz0gcmVtb3VudF9zZXJ2aWNlLmMKIGFkYmRfU1JDX0ZJTEVTICs9IGRpc2FibGVfdmVyaXR5X3NlcnZpY2UuYworYWRiZF9TUkNfRklMRVMgKz0gYmFzZTY0LmMKIGFkYmRfU1JDX0ZJTEVTICs9IHVzYl9saW51eF9jbGllbnQuYwogYWRiZF9PQkpTIDo9ICQoYWRiZF9TUkNfRklMRVM6LmM9Lm8pCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29sc181LjEuMS5yMzcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCmluZGV4IDM0ZmRkY2IuLmQzY2NkMWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29sc181LjEuMS5yMzcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYgpAQCAtMzIsNiArMzIsOCBAQAogICAgIGZpbGU6Ly9kZWZpbmUtc2hlbGwtY29tbWFuZC5wYXRjaCBcCiAgICAgZmlsZTovL2ltcGxpY2l0LWRlY2xhcmF0aW9uLWZ1bmN0aW9uLXN0cmxjYXQtc3RybGNvcHkucGF0Y2ggXAogICAgIGZpbGU6Ly9maXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtYWRkLWJhc2U2NC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItYWRiLU11c2wtZml4ZXMucGF0Y2ggXAogICAgIGZpbGU6Ly9hbmRyb2lkLXRvb2xzLWFkYmQuc2VydmljZSBcCiAgICAgZmlsZTovLy5naXRpZ25vcmU7c3ViZGlyPWdpdCBcCiAgICAgZmlsZTovL2FkYi5taztzdWJkaXI9JHtCUE59IFwKQEAgLTUyLDI0ICs1NCw2IEBACiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJhbmRyb2lkLXRvb2xzLWFkYmQuc2VydmljZSIKIAotIyBHZXQgcmlkIG9mIGZpbGVzIHVuZWVkZWQgdG8gYnVpbGQgQW5kcm9pZCB0b29scwotZG9fdW5wYWNrX2V4dHJhKCkgewotICAgIGNkICR7U30KLSAgICBybSAtcmYgXAotICAgICAgc3lzdGVtL2NvcmUvLmdpdCBcCi0gICAgICBzeXN0ZW0vZXh0cmFzLy5naXQgXAotICAgICAgaGFyZHdhcmUvbGliaGFyZHdhcmUvLmdpdCBcCi0gICAgICBleHRlcm5hbC9saWJzZWxpbnV4Ly5naXQgXAotICAgICAgYnVpbGQvLmdpdAotICAgIGdpdCBpbml0Ci0gICAgZ2l0IGFkZCAuCi0gICAgZ2l0IGNvbW1pdCAtbSBcCi0gICAgICAiSW5pdGlhbCBpbXBvcnQgLSBjb21taXR0ZWQgJHtBTkRST0lEX1RBR30iCi0gICAgZ2l0IGNsZWFuIC1mZHgKLX0KLQotYWRkdGFzayB1bnBhY2tfZXh0cmEgYWZ0ZXIgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaAotCiAjIEZpbmQgbGliYnNkIGhlYWRlcnMgZHVyaW5nIG5hdGl2ZSBidWlsZHMKIENDX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0iCiBDQ19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ODRkMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLUxJQ0VOU0UgPSAiR1BMdjMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS8iCi1TRUNUSU9OID0gImRldmVsIgotCi1ERVBFTkRTICs9ICJtNC1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJtNC1uYXRpdmUgZ251LWNvbmZpZy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJtNC1uYXRpdmVzZGsgZ251LWNvbmZpZy1uYXRpdmVzZGsiCi0KLVJERVBFTkRTXyR7UE59ID0gIm00IGdudS1jb25maWcgZ25vbWUtY29tbW9uIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIm00LW5hdGl2ZSBnbnUtY29uZmlnLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICJtNC1uYXRpdmVzZGsgZ251LWNvbmZpZy1uYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZS9kZWxldGUtc29tZS1tNC1maWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZS9kZWxldGUtc29tZS1tNC1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFhNzg4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmUvZGVsZXRlLXNvbWUtbTQtZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1EZWxldGUgdHdvIG00ZmlsZXMgYXhfY29kZV9jb3ZlcmFnZS5tNCBhbmQgYXhfY2hlY2tfZW5hYmxlX2RlYnVnLm00Ci10byBhdm9pZCBpbnN0YWxsaW5nIGNvbmZsaWN0cy4gVGhlc2UgdHdvIGZpbGVzIGNhbiBiZSBpbnN0YWxsZWQgYnkKLWdub21lLWNvbW1vbiBmcm9tIG9lLWNvcmUsIGV2ZW4gaWYgdGhlIGZpbGVzIGluIGdubW9lLWNvbW1vbiBpcwotY29waWVkIGZyb20gYXV0b2NvbmYtYXJjaGl2ZSh0aGUgcmVhc29uIGlzIHRoYXQgdGhlIG9sZCB2ZXJzaW9uCi1hdXRvY29uZi1hcmNoaXZlIGRvbid0IHByb3ZpZGUgdGhlIHR3byBmaWxlcykuCi1BZnRlciB1cGdyYWRpbmcgdG8gdGhlIG5ldyB2ZXJzaW9uLCB3ZSBuZWVkIHRvIGRyb3AgdGhlbSBpbiBtZXRhLW9lCi1hbmQgdGhlbiBzZXQgcmRlcGVuZHMgdG8gZ25vbWUtY29tbW9uKG9lLWNvcmUpCi0KLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBhL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvY29uZmlndXJlLmFjICAgICAyMDE2LTA5LTE2IDA2OjAwOjAwLjAwMDAwMDAwMCArMDgwMAotKysrIGIvY29uZmlndXJlLmFjICAgICAyMDE3LTA0LTE4IDE3OjQzOjA1Ljk0NjI5MDU1NCArMDgwMAotQEAgLTE5LDcgKzE5LDcgQEAKLSAKLSBBQ19QUk9HX1NFRAotIAotLU00RklMRVM9Im00X2VzeXNjbWQoW2VjaG8gLW4gbTQvKi5tNF0pIgotK000RklMRVM9Im00X2VzeXNjbWQoW2VjaG8gLW4gbTQvKi5tNCB8IHNlZCAtZSAnczptNC9heF9jb2RlX2NvdmVyYWdlLm00IDo6Zyd8c2VkIC1lICdzOm00L2F4X2NoZWNrX2VuYWJsZV9kZWJ1Zy5tNCA6OmcnXSkiCi0gQUNfU1VCU1QoW000RklMRVNdKQotIAotIFRFWElGSUxFUz0ibTRfZXN5c2NtZChbY2QgbTQgJiYgZWNobyAtbiAqLm00IHwgc2VkIC1lICdzL1wubTQvLnRleGkvZyddKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE2LjA5LjE2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MWI1N2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlIGF1dG9jb25mLWFyY2hpdmUuaW5jCi0KLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmYxOWQ0Y2RkY2UyNjBiM2MzZTFkNTFkNDI1MDkwNzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThmMmVmZDIzNWY4NDJiYWQyZjY5MzhiZjRhNzIyNDBhNWU1ZmNkMjQ4ZTg0NDQzMzVlNjNiZWI2MGZhYmQ4MiIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vZGVsZXRlLXNvbWUtbTQtZmlsZXMucGF0Y2ggXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3BhdGhfTTQ9bTQiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLVJlcGxhY2UtdXNlLW9mLXN0cnVjdC11Y29udGV4dC13aXRoLXVjb250ZXh0X3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLVJlcGxhY2UtdXNlLW9mLXN0cnVjdC11Y29udGV4dC13aXRoLXVjb250ZXh0X3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdjYjhhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtUmVwbGFjZS11c2Utb2Ytc3RydWN0LXVjb250ZXh0LXdpdGgtdWNvbnRleHRfdC5wYXRjaApAQCAtMCwwICsxLDI0MiBAQAorRnJvbSBiOTBjOGYzYjYwYmZlNWRiZWQyODIzNjIwMjQyZTlkMzBiOWViMjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTk6MDE6MTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSB1c2Ugb2Ygc3RydWN0IHVjb250ZXh0IHdpdGggdWNvbnRleHRfdAorCitnbGliYyAyLjI2IHdvdWxkIG5vdCBleHBvc2Ugc3RydWN0IHVjb250ZXh0IGFueW1vcmUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyAuLi4vbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYyAgICB8IDMyICsrKysrKysrKysrLS0tLS0tLS0tLS0KKyAuLi4vbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oICAgICB8IDE0ICsrKysrLS0tLS0KKyBzcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MgICAgICB8IDEwICsrKy0tLS0KKyBzcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaCAgICAgICB8ICA0ICstLQorIC4uLi9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MgICAgIHwgIDIgKy0KKyAuLi4vbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYyAgICAgICB8ICAyICstCisgNiBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYyBiL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYworaW5kZXggYzgwNzI0ZGQuLjA1MmNlMzdjIDEwMDY0NAorLS0tIGEvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCisrKysgYi9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKK0BAIC0zNiwxOSArMzYsMTkgQEAgbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7CisgCisgLy8gTWluaWR1bXAgZGVmaW5lcyByZWdpc3RlciBzdHJ1Y3R1cmVzIHdoaWNoIGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUgcmF3CisgLy8gc3RydWN0dXJlcyB3aGljaCB3ZSBnZXQgZnJvbSB0aGUga2VybmVsLiBUaGVzZSBhcmUgcGxhdGZvcm0gc3BlY2lmaWMKKy0vLyBmdW5jdGlvbnMgdG8ganVnZ2xlIHRoZSB1Y29udGV4dCBhbmQgdXNlciBzdHJ1Y3R1cmVzIGludG8gbWluaWR1bXAgZm9ybWF0LgorKy8vIGZ1bmN0aW9ucyB0byBqdWdnbGUgdGhlIHVjb250ZXh0X3QgYW5kIHVzZXIgc3RydWN0dXJlcyBpbnRvIG1pbmlkdW1wIGZvcm1hdC4KKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykKKyAKKy11aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCBzdHJ1Y3QgdWNvbnRleHQqIHVjKSB7CisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKyAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX0VTUF07CisgfQorIAorLXVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHN0cnVjdCB1Y29udGV4dCogdWMpIHsKKyt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUlQXTsKKyB9CisgCistdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMsCisrdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSogZnApIHsKKyAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVnczsKKyAKK0BAIC04OCwxNSArODgsMTUgQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMsCisgCisgI2VsaWYgZGVmaW5lZChfX3g4Nl82NCkKKyAKKy11aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCBzdHJ1Y3QgdWNvbnRleHQqIHVjKSB7CisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKyAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX1JTUF07CisgfQorIAorLXVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHN0cnVjdCB1Y29udGV4dCogdWMpIHsKKyt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfUklQXTsKKyB9CisgCistdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMsCisrdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSogZnByZWdzKSB7CisgICBjb25zdCBncmVnX3QqIHJlZ3MgPSB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3M7CisgCitAQCAtMTQ1LDE1ICsxNDUsMTUgQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMsCisgCisgI2VsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pCisgCistdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3Qgc3RydWN0IHVjb250ZXh0KiB1YykgeworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmFybV9zcDsKKyB9CisgCistdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qgc3RydWN0IHVjb250ZXh0KiB1YykgeworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmFybV9wYzsKKyB9CisgCistdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMpIHsKKyt2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKSB7CisgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX0FSTV9GVUxMOworIAorICAgb3V0LT5pcmVnc1swXSA9IHVjLT51Y19tY29udGV4dC5hcm1fcjA7CitAQCAtMTg0LDE1ICsxODQsMTUgQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMpIHsKKyAKKyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorIAorLXVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHN0cnVjdCB1Y29udGV4dCogdWMpIHsKKyt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5zcDsKKyB9CisgCistdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qgc3RydWN0IHVjb250ZXh0KiB1YykgeworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisgICByZXR1cm4gdWMtPnVjX21jb250ZXh0LnBjOworIH0KKyAKKy12b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YywKKyt2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnByZWdzKSB7CisgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05URVhUX0FSTTY0X0ZVTEw7CisgCitAQCAtMjEwLDE1ICsyMTAsMTUgQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMsCisgCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAKKy11aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCBzdHJ1Y3QgdWNvbnRleHQqIHVjKSB7CisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKyAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF07CisgfQorIAorLXVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHN0cnVjdCB1Y29udGV4dCogdWMpIHsKKyt1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldEluc3RydWN0aW9uUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5wYzsKKyB9CisgCistdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dCAqdWMpIHsKKyt2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKSB7CisgI2lmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKyAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfTUlQUzY0X0ZVTEw7CisgI2VsaWYgX01JUFNfU0lNID09IF9BQklPMzIKK2RpZmYgLS1naXQgYS9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaCBiL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCitpbmRleCBiNmU3N2I0Yi4uMmRlODBiNzAgMTAwNjQ0CistLS0gYS9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAorKysrIGIvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKK0BAIC0zOSwyMyArMzksMjMgQEAKKyAKKyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKKyAKKy0vLyBXcmFwcyBwbGF0Zm9ybS1kZXBlbmRlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFjY2Vzc29ycyB0byB1Y29udGV4dCBzdHJ1Y3RzLgorKy8vIFdyYXBzIHBsYXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYWNjZXNzb3JzIHRvIHVjb250ZXh0X3Qgc3RydWN0cy4KKyBzdHJ1Y3QgVUNvbnRleHRSZWFkZXIgeworLSAgc3RhdGljIHVpbnRwdHJfdCBHZXRTdGFja1BvaW50ZXIoY29uc3Qgc3RydWN0IHVjb250ZXh0KiB1Yyk7CisrICBzdGF0aWMgdWludHB0cl90IEdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1Yyk7CisgCistICBzdGF0aWMgdWludHB0cl90IEdldEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBzdHJ1Y3QgdWNvbnRleHQqIHVjKTsKKysgIHN0YXRpYyB1aW50cHRyX3QgR2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKTsKKyAKKy0gIC8vIEp1Z2dsZSBhIGFyY2gtc3BlY2lmaWMgdWNvbnRleHQgaW50byBhIG1pbmlkdW1wIGZvcm1hdAorKyAgLy8gSnVnZ2xlIGEgYXJjaC1zcGVjaWZpYyB1Y29udGV4dF90IGludG8gYSBtaW5pZHVtcCBmb3JtYXQKKyAgIC8vICAgb3V0OiB0aGUgbWluaWR1bXAgc3RydWN0dXJlCisgICAvLyAgIGluZm86IHRoZSBjb2xsZWN0aW9uIG9mIHJlZ2lzdGVyIHN0cnVjdHVyZXMuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjQpCistICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YywKKysgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSogZnApOworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCistICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0ICp1YywKKysgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQqIGZwcmVncyk7CisgI2Vsc2UKKy0gIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHQgKnVjKTsKKysgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpOworICNlbmRpZgorIH07CisgCitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitpbmRleCA1ODZkODRlOS4uMDU5MzZkMjggMTAwNjQ0CistLS0gYS9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKKysrKyBiL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworQEAgLTQ1Nyw5ICs0NTcsOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OkhhbmRsZVNpZ25hbChpbnQgLypzaWcqLywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1YykgeworICAgLy8gRmlsbCBpbiBhbGwgdGhlIGhvbGVzIGluIHRoZSBzdHJ1Y3QgdG8gbWFrZSBWYWxncmluZCBoYXBweS4KKyAgIG1lbXNldCgmZ19jcmFzaF9jb250ZXh0XywgMCwgc2l6ZW9mKGdfY3Jhc2hfY29udGV4dF8pKTsKKyAgIG1lbWNweSgmZ19jcmFzaF9jb250ZXh0Xy5zaWdpbmZvLCBpbmZvLCBzaXplb2Yoc2lnaW5mb190KSk7CistICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8uY29udGV4dCwgdWMsIHNpemVvZihzdHJ1Y3QgdWNvbnRleHQpKTsKKysgIG1lbWNweSgmZ19jcmFzaF9jb250ZXh0Xy5jb250ZXh0LCB1Yywgc2l6ZW9mKHVjb250ZXh0X3QpKTsKKyAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKy0gIHN0cnVjdCB1Y29udGV4dCogdWNfcHRyID0gKHN0cnVjdCB1Y29udGV4dCopdWM7CisrICB1Y29udGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7CisgICBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQqIGZwX3B0ciA9CisgICAgICAgKHN0cnVjdCBmcHNpbWRfY29udGV4dCopJnVjX3B0ci0+dWNfbWNvbnRleHQuX19yZXNlcnZlZDsKKyAgIGlmIChmcF9wdHItPmhlYWQubWFnaWMgPT0gRlBTSU1EX01BR0lDKSB7CitAQCAtNDY4LDkgKzQ2OCw5IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6SGFuZGxlU2lnbmFsKGludCAvKnNpZyovLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVjKSB7CisgICB9CisgI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAgIC8vIEZQIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIHVzZXIgQUJJIG9uIEFSTSBMaW51eC4KKy0gIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2Ygc3RydWN0IHVjb250ZXh0CisrICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKKyAgIC8vIGFuZCAnZmxvYXRfc3RhdGUnIGlzIG5vdCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCistICBzdHJ1Y3QgdWNvbnRleHQqIHVjX3B0ciA9IChzdHJ1Y3QgdWNvbnRleHQqKXVjOworKyAgdWNvbnRleHRfdCogdWNfcHRyID0gKHVjb250ZXh0X3QqKXVjOworICAgaWYgKHVjX3B0ci0+dWNfbWNvbnRleHQuZnByZWdzKSB7CisgICAgIG1lbWNweSgmZ19jcmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSwgdWNfcHRyLT51Y19tY29udGV4dC5mcHJlZ3MsCisgICAgICAgICAgICBzaXplb2YoZ19jcmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSkpOworQEAgLTQ5NCw3ICs0OTQsNyBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OlNpbXVsYXRlU2lnbmFsRGVsaXZlcnkoaW50IHNpZykgeworICAgLy8gRXhjZXB0aW9uSGFuZGxlcjo6SGFuZGxlU2lnbmFsKCkuCisgICBzaWdpbmZvLnNpX2NvZGUgPSBTSV9VU0VSOworICAgc2lnaW5mby5zaV9waWQgPSBnZXRwaWQoKTsKKy0gIHN0cnVjdCB1Y29udGV4dCBjb250ZXh0OworKyAgdWNvbnRleHRfdCBjb250ZXh0OworICAgZ2V0Y29udGV4dCgmY29udGV4dCk7CisgICByZXR1cm4gSGFuZGxlU2lnbmFsKHNpZywgJnNpZ2luZm8sICZjb250ZXh0KTsKKyB9CitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmggYi9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaAoraW5kZXggZGFiYTU3ZTAuLjI1NTk4YTI5IDEwMDY0NAorLS0tIGEvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmgKKysrKyBiL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oCitAQCAtMTkxLDExICsxOTEsMTEgQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlciB7CisgICBzdHJ1Y3QgQ3Jhc2hDb250ZXh0IHsKKyAgICAgc2lnaW5mb190IHNpZ2luZm87CisgICAgIHBpZF90IHRpZDsgIC8vIHRoZSBjcmFzaGluZyB0aHJlYWQuCistICAgIHN0cnVjdCB1Y29udGV4dCBjb250ZXh0OworKyAgICB1Y29udGV4dF90IGNvbnRleHQ7CisgI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAgIC8vICNpZmRlZiB0aGlzIG91dCBiZWNhdXNlIEZQIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIHVzZXIgQUJJIGZvciBMaW51eCBBUk0uCisgICAgIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2Ygc3RydWN0CistICAgIC8vIHVjb250ZXh0IHNvICdmbG9hdF9zdGF0ZScgaXMgbm90IHJlcXVpcmVkLgorKyAgICAvLyB1Y29udGV4dF90IHNvICdmbG9hdF9zdGF0ZScgaXMgbm90IHJlcXVpcmVkLgorICAgICBmcHN0YXRlX3QgZmxvYXRfc3RhdGU7CisgI2VuZGlmCisgICB9OworZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyLmNjIGIvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MKK2luZGV4IDM3NjRlZWMyLi44MGFkNWM0NiAxMDA2NDQKKy0tLSBhL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyLmNjCisrKysgYi9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYworQEAgLTU5Myw3ICs1OTMsNyBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgeworIAorICAgdm9pZCogQWxsb2ModW5zaWduZWQgYnl0ZXMpIHsgcmV0dXJuIGR1bXBlcl8tPmFsbG9jYXRvcigpLT5BbGxvYyhieXRlcyk7IH0KKyAKKy0gIGNvbnN0IHN0cnVjdCB1Y29udGV4dCogY29uc3QgdWNvbnRleHRfOworKyAgY29uc3QgdWNvbnRleHRfdCogY29uc3QgdWNvbnRleHRfOworICNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MgYi9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MKK2luZGV4IGQxMWJhNmU1Li5jNzE2MTQzNCAxMDA2NDQKKy0tLSBhL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYworKysrIGIvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNjCitAQCAtMTMyMyw3ICsxMzIzLDcgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgeworICAgY29uc3QgaW50IGZkXzsgIC8vIEZpbGUgZGVzY3JpcHRvciB3aGVyZSB0aGUgbWluaWR1bSBzaG91bGQgYmUgd3JpdHRlbi4KKyAgIGNvbnN0IGNoYXIqIHBhdGhfOyAgLy8gUGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgbWluaWR1bSBzaG91bGQgYmUgd3JpdHRlbi4KKyAKKy0gIGNvbnN0IHN0cnVjdCB1Y29udGV4dCogY29uc3QgdWNvbnRleHRfOyAgLy8gYWxzbyBmcm9tIHRoZSBzaWduYWwgaGFuZGxlcgorKyAgY29uc3QgdWNvbnRleHRfdCogY29uc3QgdWNvbnRleHRfOyAgLy8gYWxzbyBmcm9tIHRoZSBzaWduYWwgaGFuZGxlcgorICNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsgIC8vIGRpdHRvCisgI2VuZGlmCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLVR1cm4tb2ZmLXNpZ24tY29tcGFyZS1mb3ItbXVzbC1saWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1UdXJuLW9mZi1zaWduLWNvbXBhcmUtZm9yLW11c2wtbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2JhZTFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1UdXJuLW9mZi1zaWduLWNvbXBhcmUtZm9yLW11c2wtbGliYy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGFiOGRjYWQyNWQwYWMxZjNhODg4MTRlNzg3OTRlNWQ0NTBkZTE1YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAyMzoxMjo1MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvNV0gVHVybiBvZmYgc2lnbi1jb21wYXJlIGZvciBtdXNsLWxpYmMKKworRml4CisKKy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYzoyMzQ6MTQ6IGVycm9yOiAgICAgICAgICAgICAgICAgY29tcGFyaXNvbiBvZiBpbnRlZ2VycyBvZiBkaWZmZXJlbnQgc2lnbnM6ICd1bnNpZ25lZCBsb25nJyBhbmQgJ2ludCcgWy1XZXJyb3IsLVdzaWduLWNvbXBhcmVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyID0gQ01TR19OWFRIRFIoJm1zZywgaGRyKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+CisvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTdoZi1uZW9uLXZmcHY0LWJlYy1saW51eC1tdXNsZWFiaS9icmVha3BhZC8xXzEuMCtnaXQ5OTktcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oOjI4ODo0NDogbm90ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgZnJvbSBtYWNybyAnQ01TR19OWFRIRFInICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fQ01TR19MRU4oY21zZykgKyBzaXplb2Yoc3RydWN0IGNtc2doZHIpID49IF9fTUhEUl9FTkQobWhkcikgLSAodW5zaWduZWQgY2hhciAqKShjbXNnKSBcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4gXiAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSBlcnJvciBnZW5lcmF0ZWQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvY2xpZW50L2xpbnV4L2NyYXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MgfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYyBiL3NyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYworaW5kZXggMjU5NmFmZGUuLjJmYWViOWU1IDEwMDY0NAorLS0tIGEvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjCisrKysgYi9zcmMvY2xpZW50L2xpbnV4L2NyYXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MKK0BAIC0yMzAsOCArMjMwLDE4IEBAIENyYXNoR2VuZXJhdGlvblNlcnZlcjo6Q2xpZW50RXZlbnQoc2hvcnQgcmV2ZW50cykKKyAgIC8vIFdhbGsgdGhlIGNvbnRyb2wgcGF5bG9hZCBhbmQgZXh0cmFjdCB0aGUgZmlsZSBkZXNjcmlwdG9yIGFuZCB2YWxpZGF0ZWQgcGlkLgorICAgcGlkX3QgY3Jhc2hpbmdfcGlkID0gLTE7CisgICBpbnQgc2lnbmFsX2ZkID0gLTE7CisrI2lmbmRlZiBfX0dMSUJDX18KKysgIC8vIEluIG11c2wtbGliYywgQ01TR19OWFRIRFIgdHlwZWNhc3RzIGNoYXIqIHRvIGNtc2doZHIqIHdoaWNoIGNhdXNlcworKyAgLy8gY2xhbmcgdG8gdGhyb3cgc2lnbi1jb21wYXJlIHdhcm5pbmcuIFRoaXMgaXMgdG8gc3VwcHJlc3MgdGhlIHdhcm5pbmcKKysgIC8vIGlubGluZS4KKysgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisrICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzaWduLWNvbXBhcmUiCisrI2VuZGlmCisgICBmb3IgKHN0cnVjdCBjbXNnaGRyICpoZHIgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOyBoZHI7CisgICAgICAgIGhkciA9IENNU0dfTlhUSERSKCZtc2csIGhkcikpIHsKKysjaWZuZGVmIF9fR0xJQkNfXworKyAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorKyNlbmRpZgorICAgICBpZiAoaGRyLT5jbXNnX2xldmVsICE9IFNPTF9TT0NLRVQpCisgICAgICAgY29udGludWU7CisgICAgIGlmIChoZHItPmNtc2dfdHlwZSA9PSBTQ01fUklHSFRTKSB7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ODNkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDY4NTgwY2I2MmY3NzExN2JlMzE2NGM1MmFiYWU2OGY3NWU4ZTU5YTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDE0OjI2OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBpbmNsdWRlIDxzeXMvcmVnLmg+IHRvIGdldCBfX1dPUkRTSVpFIG9uIG11c2wgbGliYworCistLS0KKyBzcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitJbmRleDogZ2l0L3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmgKKysrKyBnaXQvc3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmgKK0BAIC0zMywxMCArMzMsMTMgQEAKKyAjaWZuZGVmIENPTU1PTl9MSU5VWF9FTEZfQ09SRV9EVU1QX0hfCisgI2RlZmluZSBDT01NT05fTElOVVhfRUxGX0NPUkVfRFVNUF9IXworIAorKyNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSA8ZWxmLmg+CisgI2luY2x1ZGUgPGxpbmsuaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CistCisrI2lmZGVmIEhBVkVfU1lTX1JFR19ICisrI2luY2x1ZGUgPHN5cy9yZWcuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSAiY29tbW9uL21lbW9yeV9yYW5nZS5oIgorIAorIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1sc3MtTWF0Y2gtc3lzY2FsbHMtdG8tbWF0Y2gtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtbHNzLU1hdGNoLXN5c2NhbGxzLXRvLW1hdGNoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI4OTJhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtbHNzLU1hdGNoLXN5c2NhbGxzLXRvLW1hdGNoLW11c2wucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA1ZjczMzNlNGY3Yjc0ODU1OThiZDcxYWE4MDk2N2UxYTE2YTdmOTAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTQgU2VwIDIwMTcgMjI6NTc6NTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbHNzOiBNYXRjaCBzeXNjYWxscyB0byBtYXRjaCBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaW51eF9zeXNjYWxsX3N1cHBvcnQuaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitJbmRleDogbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHNzLm9yaWcvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKysrKyBsc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK0BAIC03OTMsNiArNzkzLDkgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgeworICNkZWZpbmUgRlVURVhfVFJZTE9DS19QSV9QUklWQVRFICAoRlVURVhfVFJZTE9DS19QSSB8IEZVVEVYX1BSSVZBVEVfRkxBRykKKyAjZW5kaWYKKyAKKysjaWZuZGVmIF9fTlJfZnN0YXRhdAorKyNkZWZpbmUgX19OUl9mc3RhdGF0IF9fTlJfZnN0YXRhdDY0CisrI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykKKyAjaWZuZGVmIEFSQ0hfU0VUX0dTCitAQCAtOTI0LDYgKzkyNyw3IEBAIHN0cnVjdCBrZXJuZWxfc3RhdGZzIHsKKyAjaWZuZGVmIF9fTlJfZmFsbG9jYXRlCisgI2RlZmluZSBfX05SX2ZhbGxvY2F0ZSAgICAgICAgICAzMjQKKyAjZW5kaWYKKysKKyAvKiBFbmQgb2YgaTM4NiBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgI2VsaWYgZGVmaW5lZChfX0FSTV9BUkNIXzNfXykgfHwgZGVmaW5lZChfX0FSTV9FQUJJX18pCisgI2lmbmRlZiBfX05SX3NldHJlc3VpZAorQEAgLTEyMTEsNiArMTIxNSwxMiBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRmcyB7CisgI2lmbmRlZiBfX05SX2ZhbGxvY2F0ZQorICNkZWZpbmUgX19OUl9mYWxsb2NhdGUgICAgICAgICAgMjg1CisgI2VuZGlmCisrI2lmbmRlZiBfX05SX3ByZWFkCisrI2RlZmluZSBfX05SX3ByZWFkIF9fTlJfcHJlYWQ2NAorKyNlbmRpZgorKyNpZm5kZWYgX19OUl9wd3JpdGUKKysjZGVmaW5lIF9fTlJfcHdyaXRlIF9fTlJfcHdyaXRlNjQKKysjZW5kaWYKKyAvKiBFbmQgb2YgeDg2LTY0IGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAjaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMi1Bdm9pZC11c2luZy1iYXNlbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDItQXZvaWQtdXNpbmctYmFzZW5hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM2MjgyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDItQXZvaWQtdXNpbmctYmFzZW5hbWUucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA4MDY5NjRmODUyNzczZTQyN2ZlYTgyYTc3MTZkNDRjZTNiZTQ0OThjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KK0RhdGU6IFN1biwgMSBGZWIgMjAxNSAxNDoyNzozMiArMDEwMAorU3ViamVjdDogW1BBVENIIDIvM10gQXZvaWQgdXNpbmcgYmFzZW5hbWUKKworLS0tCisgc3JjL2NvbW1vbi9saW51eC9kdW1wX3N5bWJvbHMuY2MgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uL2xpbnV4L2R1bXBfc3ltYm9scy5jYyBiL3NyYy9jb21tb24vbGludXgvZHVtcF9zeW1ib2xzLmNjCitpbmRleCBkMDI5Y2ExNC4uNmFjNGExN2IgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL2xpbnV4L2R1bXBfc3ltYm9scy5jYworKysrIGIvc3JjL2NvbW1vbi9saW51eC9kdW1wX3N5bWJvbHMuY2MKK0BAIC04ODEsOSArODgxLDkgQEAgY29uc3QgY2hhciogRWxmQXJjaGl0ZWN0dXJlKGNvbnN0IHR5cGVuYW1lIEVsZkNsYXNzOjpFaGRyKiBlbGZfaGVhZGVyKSB7CisgLy8gbGFzdCBzbGFzaCwgb3IgdGhlIHdob2xlIGZpbGVuYW1lIGlmIHRoZXJlIGFyZSBubyBzbGFzaGVzLgorIHN0cmluZyBCYXNlRmlsZU5hbWUoY29uc3Qgc3RyaW5nICZmaWxlbmFtZSkgeworICAgLy8gTG90cyBvZiBjb3BpZXMhICBiYXNlbmFtZSdzIGJlaGF2aW9yIGlzIGxlc3MgdGhhbiBpZGVhbC4KKy0gIGNoYXIqIGNfZmlsZW5hbWUgPSBzdHJkdXAoZmlsZW5hbWUuY19zdHIoKSk7CistICBzdHJpbmcgYmFzZSA9IGJhc2VuYW1lKGNfZmlsZW5hbWUpOworLSAgZnJlZShjX2ZpbGVuYW1lKTsKKysgIGNvbnN0IGNoYXIgKmNfZmlsZW5hbWUgPSBmaWxlbmFtZS5jX3N0cigpOworKyAgY29uc3QgY2hhciAqcCA9IHN0cnJjaHIoY19maWxlbmFtZSwgJy8nKTsKKysgIHN0cmluZyBiYXNlID0gcCA/IHArMSA6IGNfZmlsZW5hbWU7CisgICByZXR1cm4gYmFzZTsKKyB9CisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMwOTdjZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDItVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNfZnBzdGF0ZS1vbi1saW51eC5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIDBiYTFiM2UzNWU3Yzc0M2I2NzBiZWRjM2U5MDAwMWRmYjg2OGRmMTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDEzOjQ1OjUxICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi82XSBVc2UgX2Zwc3RhdGUgaW5zdGVhZCBvZiBfbGliY19mcHN0YXRlIG9uIGxpbnV4CisKK2dsaWJjIGRlZmluZXMgYm90aC4gbXVzbCBsaWJjIG9ubHkgdGhlIGZvcm1lci4KKy0tLQorIHNyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYyB8IDQgKystLQorIHNyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oICB8IDIgKy0KKyBzcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuaCAgICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCisrKysgZ2l0L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYworQEAgLTQ5LDcgKzQ5LDcgQEAgdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvbgorIH0KKyAKKyB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfZnBzdGF0ZSogZnApIHsKKyAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4dC5ncmVnczsKKyAKKyAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfWDg2X0ZVTEwgfAorQEAgLTk3LDcgKzk3LDcgQEAgdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvbgorIH0KKyAKKyB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcHJlZ3MpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Zwc3RhdGUqIGZwcmVncykgeworICAgY29uc3QgZ3JlZ190KiByZWdzID0gdWMtPnVjX21jb250ZXh0LmdyZWdzOworIAorICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9BTUQ2NF9GVUxMOworSW5kZXg6IGdpdC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCisrKysgZ2l0L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCitAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgVUNvbnRleHRSZWFkZXIgeworICAgLy8gICBpbmZvOiB0aGUgY29sbGVjdGlvbiBvZiByZWdpc3RlciBzdHJ1Y3R1cmVzLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0KQorICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRlKiBmcCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2Zwc3RhdGUqIGZwKTsKKyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnByZWdzKTsKK0luZGV4OiBnaXQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuaAorKysrIGdpdC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuaAorQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlcjsKKyAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyB0eXBlZGVmIHN0cnVjdCBmcHNpbWRfY29udGV4dCBmcHN0YXRlX3Q7CisgI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKy10eXBlZGVmIHN0cnVjdCBfbGliY19mcHN0YXRlIGZwc3RhdGVfdDsKKyt0eXBlZGVmIHN0cnVjdCBfZnBzdGF0ZSBmcHN0YXRlX3Q7CisgI2VuZGlmCisgCisgLy8gVGhlc2UgZW50cmllcyBzdG9yZSBhIGxpc3Qgb2YgbWVtb3J5IHJlZ2lvbnMgdGhhdCB0aGUgY2xpZW50IHdhbnRzIGluY2x1ZGVkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAyLXN5cy1zaWduYWwuaC1pcy1hLW5vbnBvcnRhYmxlLWFsaWFzLWZvci1zaWduYWwuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDItc3lzLXNpZ25hbC5oLWlzLWEtbm9ucG9ydGFibGUtYWxpYXMtZm9yLXNpZ25hbC5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZDlhOWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAyLXN5cy1zaWduYWwuaC1pcy1hLW5vbnBvcnRhYmxlLWFsaWFzLWZvci1zaWduYWwuaC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDE1NTgyZTE5YzI1NDVkNWZmZThmZjA3Zjk1N2QwZWQ2MDJhZWNhNzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAyMzoxNTowOSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNV0gPHN5cy9zaWduYWwuaD4gaXMgYSBub25wb3J0YWJsZSBhbGlhcyBmb3IgPHNpZ25hbC5oPgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitpbmRleCAwNTkzNmQyOC4uY2NhMDIzZmQgMTAwNjQ0CistLS0gYS9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKKysrKyBiL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworQEAgLTc4LDcgKzc4LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCistI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KKysjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHN5cy91Y29udGV4dC5oPgorICNpbmNsdWRlIDxzeXMvdXNlci5oPgorICNpbmNsdWRlIDx1Y29udGV4dC5oPgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMy1Eb250LWluY2x1ZGUtc3RhYi5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMy1Eb250LWluY2x1ZGUtc3RhYi5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OTNlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAzLURvbnQtaW5jbHVkZS1zdGFiLmgucGF0Y2gKQEAgLTAsMCArMSw4OCBAQAorRnJvbSA1NjlhZjcxMmRhOTQ2MzcwOTEwODA5NDNmNmEwZDY5Y2NiMzU4NjRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTQgU2VwIDIwMTcgMjM6MjQ6MDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIERvbnQgaW5jbHVkZSBzdGFiLmgKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb21tb24vc3RhYnNfcmVhZGVyLmNjICAgICAgICAgIHwgIDEgLQorIHNyYy9jb21tb24vc3RhYnNfcmVhZGVyLmggICAgICAgICAgIHwgMTIgKysrKysrKysrKystCisgc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MgfCAgMSAtCisgMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MKKysrKyBnaXQvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MKK0BAIC0zNCw3ICszNCw5IEBACisgI2luY2x1ZGUgImNvbW1vbi9zdGFic19yZWFkZXIuaCIKKyAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2lmZGVmIEhBVkVfU1RBQl9ICisgI2luY2x1ZGUgPHN0YWIuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCisgI2luY2x1ZGUgPHN0cmluZz4KK0luZGV4OiBnaXQvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmgKKysrKyBnaXQvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaAorQEAgLTU4LDYgKzU4LDMwIEBACisgI2VsaWYgZGVmaW5lZChIQVZFX0FfT1VUX0gpCisgI2luY2x1ZGUgPGEub3V0Lmg+CisgI2VuZGlmCisrLy8gRGVmaW5pdGlvbnMgZnJvbSA8c3RhYi5oPiBhbmQgPGEub3V0Lmg+IGZvciBzeXN0ZW1zIHdoaWNoCisrLy8gZG8gbm90IGhhdmUgdGhlbQorKyNpZm5kZWYgSEFWRV9BX09VVF9ICisrI3VuZGVmIE5fVU5ERgorKyNkZWZpbmUgTl9VTkRGIDB4MAorKyNpZm5kZWYgTl9GVU4KKysjZGVmaW5lIE5fRlVOIDB4MjQKKysjZW5kaWYKKysjaWZuZGVmIE5fU0xJTkUKKysjZGVmaW5lIE5fU0xJTkUgMHg0NAorKyNlbmRpZgorKyNpZm5kZWYgTl9TTworKyNkZWZpbmUgTl9TTyAweDY0CisrI2VuZGlmCisrI2lmbmRlZiBOX0xTWU0KKysjZGVmaW5lIE5fTFNZTSAweDgwCisrI2VuZGlmCisrI2lmbmRlZiBOX0JJTkNMCisrI2RlZmluZSBOX0JJTkNMIDB4ODIKKysjZW5kaWYKKysjaWZuZGVmIE5fU09MCisrI2RlZmluZSBOX1NPTCAweDg0CisrI2VuZGlmCisrI2VuZGlmCisgCisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8dmVjdG9yPgorSW5kZXg6IGdpdC9zcmMvY29tbW9uL3N0YWJzX3JlYWRlcl91bml0dGVzdC5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjCisrKysgZ2l0L3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjCitAQCAtMzMsNyArMzMsOSBAQAorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaWZkZWYgSEFWRV9TVEFCX0gKKyAjaW5jbHVkZSA8c3RhYi5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKKysrKyBnaXQvY29uZmlndXJlLmFjCitAQCAtNzIsNyArNzIsNyBAQCBBQ19BUkdfRU5BQkxFKG0zMiwKKyBBQ19IRUFERVJfU1REQworIEFDX1NZU19MQVJHRUZJTEUKKyBBWF9QVEhSRUFECistQUNfQ0hFQ0tfSEVBREVSUyhbYS5vdXQuaCBzeXMvcmFuZG9tLmhdKQorK0FDX0NIRUNLX0hFQURFUlMoW2Eub3V0Lmggc3RhYi5oIHN5cy9yYW5kb20uaF0pCisgQUNfQ0hFQ0tfRlVOQ1MoW2FyYzRyYW5kb20gZ2V0cmFuZG9tXSkKKyAKKyBBWF9DWFhfQ09NUElMRV9TVERDWFgoMTEsIG5vZXh0LCBtYW5kYXRvcnkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAzLUZpeC1jb25mbGljdC1iZXR3ZWVuLW11c2wtbGliYy1kaXJlbnQuaC1hbmQtbHNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMy1GaXgtY29uZmxpY3QtYmV0d2Vlbi1tdXNsLWxpYmMtZGlyZW50LmgtYW5kLWxzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTEwMDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMy1GaXgtY29uZmxpY3QtYmV0d2Vlbi1tdXNsLWxpYmMtZGlyZW50LmgtYW5kLWxzcy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDdhYTI2NjU0NWRhYmY5OTM0Y2NkNDRkNGZjODM2MDQwNDk3MTU5YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDEzOjQxOjA4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBGaXggY29uZmxpY3QgYmV0d2VlbiBtdXNsIGxpYmMgPGRpcmVudC5oPiBhbmQgbHNzCisKK0luY2x1ZGUgPGRpcmVudC5oPiBsYXRlIHRvIGF2b2lkIHRoZSBtYWNybyBnZXRkZW50czY0IGluIG11c2wKK2xpYmMncyA8ZGlyZW50Lmg+IHRvIGNvbmZsaWN0IHdpdGggbGludXhfc3ljYWxsX3N1cHBvcnQuaC4KKy0tLQorIHNyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjIGIvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5lcmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjCitpbmRleCAyNmM1MGE1Yy4uMjU5NmFmZGUgMTAwNjQ0CistLS0gYS9zcmMvY2xpZW50L2xpbnV4L2NyYXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2VuZXJhdGlvbl9zZXJ2ZXIuY2MKKysrKyBiL3NyYy9jbGllbnQvbGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYworQEAgLTI4LDcgKzI4LDYgQEAKKyAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKy0jaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxwb2xsLmg+CitAQCAtNDksNiArNDgsOCBAQAorICNpbmNsdWRlICJjb21tb24vbGludXgvZ3VpZF9jcmVhdG9yLmgiCisgI2luY2x1ZGUgImNvbW1vbi9saW51eC9zYWZlX3JlYWRsaW5rLmgiCisgCisrI2luY2x1ZGUgPGRpcmVudC5oPgorKworIHN0YXRpYyBjb25zdCBjaGFyIGtDb21tYW5kUXVpdCA9ICd4JzsKKyAKKyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDQtZWxmX3JlYWRlci5jYy1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDQtZWxmX3JlYWRlci5jYy1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjVhMTU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNC1lbGZfcmVhZGVyLmNjLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpFLW9uLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNjgwZjk1OTBkMTlhNmUzNWM3YzU1ODdlM2Y0ZDgxOTRhYWIwZmNkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IFNlcCAyMDE3IDIzOjI4OjM2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBlbGZfcmVhZGVyLmNjOiBpbmNsdWRlIDxzeXMvcmVnLmg+IHRvIGdldCBfX1dPUkRTSVpFIG9uCisgbXVzbCBsaWJjCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvY29tbW9uL2R3YXJmL2VsZl9yZWFkZXIuY2MgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworSW5kZXg6IGdpdC9zcmMvY29tbW9uL2R3YXJmL2VsZl9yZWFkZXIuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvY29tbW9uL2R3YXJmL2VsZl9yZWFkZXIuY2MKKysrKyBnaXQvc3JjL2NvbW1vbi9kd2FyZi9lbGZfcmVhZGVyLmNjCitAQCAtMjksMTAgKzI5LDEzIEBACisgI2lmbmRlZiBfR05VX1NPVVJDRQorICNkZWZpbmUgX0dOVV9TT1VSQ0UgIC8vIG5lZWRlZCBmb3IgcHJlYWQoKQorICNlbmRpZgorLQorKyNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisrI2lmZGVmIEhBVkVfU1lTX1JFR19ICisrI2luY2x1ZGUgPHN5cy9yZWcuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKKysrKyBnaXQvY29uZmlndXJlLmFjCitAQCAtNzIsNyArNzIsNyBAQCBBQ19BUkdfRU5BQkxFKG0zMiwKKyBBQ19IRUFERVJfU1REQworIEFDX1NZU19MQVJHRUZJTEUKKyBBWF9QVEhSRUFECistQUNfQ0hFQ0tfSEVBREVSUyhbYS5vdXQuaCBzdGFiLmggc3lzL3JhbmRvbS5oXSkKKytBQ19DSEVDS19IRUFERVJTKFthLm91dC5oIHN0YWIuaCBzeXMvcmFuZG9tLmggc3lzL3JlZy5oXSkKKyBBQ19DSEVDS19GVU5DUyhbYXJjNHJhbmRvbSBnZXRyYW5kb21dKQorIAorIEFYX0NYWF9DT01QSUxFX1NURENYWCgxMSwgbm9leHQsIG1hbmRhdG9yeSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDUtSW1wb3J0LW5lY2Vzc2FyeS1kZWZpbml0aW9ucy1mcm9tLXN0YWIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDUtSW1wb3J0LW5lY2Vzc2FyeS1kZWZpbml0aW9ucy1mcm9tLXN0YWIuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGRlOGM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNS1JbXBvcnQtbmVjZXNzYXJ5LWRlZmluaXRpb25zLWZyb20tc3RhYi5oLnBhdGNoCkBAIC0wLDAgKzEsMTk5IEBACitGcm9tIGZhN2EzYjczMTIzMDdhY2FkMDA0NTU0OWQ1ZjMwNmU3ZmQxMTc4MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDE0OjM0OjQ0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNS82XSBJbXBvcnQgbmVjZXNzYXJ5IGRlZmluaXRpb25zIGZyb20gc3RhYi5oCisKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KKyBzcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zdGFiLmggICB8IDEwMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzcmMvY29tbW9uL2NvbW1vbi5neXAgICAgICAgICAgICAgICB8ICAgMSAtCisgc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MgICAgICAgICAgfCAgIDEgLQorIHNyYy9jb21tb24vc3RhYnNfcmVhZGVyLmggICAgICAgICAgIHwgIDEzICsrKy0tCisgc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MgfCAgIDEgLQorIDYgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zdGFiLmgKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjIyMzkyMC4uMGU1NWNkOSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzMsNyArNzMsNiBAQCBBQ19IRUFERVJfU1REQworIEFDX1NZU19MQVJHRUZJTEUKKyBtNF9pbmNsdWRlKG00L2F4X3B0aHJlYWQubTQpCisgQVhfUFRIUkVBRAorLUFDX0NIRUNLX0hFQURFUlMoW2Eub3V0LmhdKQorIAorICMgT25seSBidWlsZCBMaW51eCBjbGllbnQgbGlicyB3aGVuIGNvbXBpbGluZyBmb3IgTGludXgKKyBjYXNlICRob3N0IGluCitkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3RhYi5oIGIvc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3RhYi5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGNkOTI5MDIuLjAwMDAwMDAKKy0tLSBhL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL3N0YWIuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsMTAwICswLDAgQEAKKy0vLyBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuCistLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy0vLworLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy0vLyBtZXQ6CistLy8KKy0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCistLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy0vLyBkaXN0cmlidXRpb24uCistLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCistLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy0vLworLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCistLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCistLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLQorLSNpZm5kZWYgR09PR0xFX0JSRUFLUEFEX0NPTU1PTl9BTkRST0lEX0lOQ0xVREVfU1RBQl9ICistI2RlZmluZSBHT09HTEVfQlJFQUtQQURfQ09NTU9OX0FORFJPSURfSU5DTFVERV9TVEFCX0gKKy0KKy0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CistCistI2lmZGVmIF9fQklPTklDX0hBVkVfU1RBQl9ICistI2luY2x1ZGUgPHN0YWIuaD4KKy0jZWxzZQorLQorLSNpZmRlZiBfX2NwbHVzcGx1cworLWV4dGVybiAiQyIgeworLSNlbmRpZiAgLy8gX19jcGx1c3BsdXMKKy0KKy0jZGVmaW5lIF9TVEFCX0NPREVfTElTVCAgICAgICBcCistICBfU1RBQl9DT0RFX0RFRihVTkRGLDB4MDApICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoR1NZTSwweDIwKSAgIFwKKy0gIF9TVEFCX0NPREVfREVGKEZOQU1FLDB4MjIpICBcCistICBfU1RBQl9DT0RFX0RFRihGVU4sMHgyNCkgICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoU1RTWU0sMHgyNikgIFwKKy0gIF9TVEFCX0NPREVfREVGKExDU1lNLDB4MjgpICBcCistICBfU1RBQl9DT0RFX0RFRihNQUlOLDB4MmEpICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoUEMsMHgzMCkgICAgIFwKKy0gIF9TVEFCX0NPREVfREVGKE5TWU1TLDB4MzIpICBcCistICBfU1RBQl9DT0RFX0RFRihOT01BUCwweDM0KSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoT0JKLDB4MzgpICAgIFwKKy0gIF9TVEFCX0NPREVfREVGKE9QVCwweDNjKSAgICBcCistICBfU1RBQl9DT0RFX0RFRihSU1lNLDB4NDApICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoTTJDLDB4NDIpICAgIFwKKy0gIF9TVEFCX0NPREVfREVGKFNMSU5FLDB4NDQpICBcCistICBfU1RBQl9DT0RFX0RFRihEU0xJTkUsMHg0NikgXAorLSAgX1NUQUJfQ09ERV9ERUYoQlNMSU5FLDB4NDgpIFwKKy0gIF9TVEFCX0NPREVfREVGKEJST1dTLDB4NDgpICBcCistICBfU1RBQl9DT0RFX0RFRihERUZELDB4NGEpICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoRUhERUNMLDB4NTApIFwKKy0gIF9TVEFCX0NPREVfREVGKE1PRDIsMHg1MCkgICBcCistICBfU1RBQl9DT0RFX0RFRihDQVRDSCwweDU0KSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoU1NZTSwweDYwKSAgIFwKKy0gIF9TVEFCX0NPREVfREVGKFNPLDB4NjQpICAgICBcCistICBfU1RBQl9DT0RFX0RFRihMU1lNLDB4ODApICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoQklOQ0wsMHg4MikgIFwKKy0gIF9TVEFCX0NPREVfREVGKFNPTCwweDg0KSAgICBcCistICBfU1RBQl9DT0RFX0RFRihQU1lNLDB4YTApICAgXAorLSAgX1NUQUJfQ09ERV9ERUYoRUlOQ0wsMHhhMikgIFwKKy0gIF9TVEFCX0NPREVfREVGKEVOVFJZLDB4YTQpICBcCistICBfU1RBQl9DT0RFX0RFRihMQlJBQywweGMwKSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoRVhDTCwweGMyKSAgIFwKKy0gIF9TVEFCX0NPREVfREVGKFNDT1BFLDB4YzQpICBcCistICBfU1RBQl9DT0RFX0RFRihSQlJBQywweGUwKSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoQkNPTU0sMHhlMikgIFwKKy0gIF9TVEFCX0NPREVfREVGKEVDT01NLDB4ZTQpICBcCistICBfU1RBQl9DT0RFX0RFRihFQ09NTCwweGU4KSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoTkJURVhULDB4ZjApIFwKKy0gIF9TVEFCX0NPREVfREVGKE5CREFUQSwweGYyKSBcCistICBfU1RBQl9DT0RFX0RFRihOQkJTUywweGY0KSAgXAorLSAgX1NUQUJfQ09ERV9ERUYoTkJTVFMsMHhmNikgIFwKKy0gIF9TVEFCX0NPREVfREVGKE5CTENTLDB4ZjgpICBcCistICBfU1RBQl9DT0RFX0RFRihMRU5HLDB4ZmUpCistCistZW51bSBfX3N0YWJfZGVidWdfY29kZSB7CistI2RlZmluZSBfU1RBQl9DT0RFX0RFRih4LHkpICBOXyMjeCA9IHksCistX1NUQUJfQ09ERV9MSVNUCistI3VuZGVmIF9TVEFCX0NPREVfREVGCistfTsKKy0KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy19ICAvLyBleHRlcm4gIkMiCistI2VuZGlmICAvLyBfX2NwbHVzcGx1cworLQorLSNlbmRpZiAgLy8gX19CSU9OSUNfSEFWRV9TVEFCX0gKKy0KKy0jZW5kaWYgIC8vIEdPT0dMRV9CUkVBS1BBRF9DT01NT05fQU5EUk9JRF9JTkNMVURFX1NUQUJfSAorZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vY29tbW9uLmd5cCBiL3NyYy9jb21tb24vY29tbW9uLmd5cAoraW5kZXggZjAxZWRlNS4uYzQ5ZmY4NSAxMDA2NDQKKy0tLSBhL3NyYy9jb21tb24vY29tbW9uLmd5cAorKysrIGIvc3JjL2NvbW1vbi9jb21tb24uZ3lwCitAQCAtNDYsNyArNDYsNiBAQAorICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9lbGYuaCcsCisgICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL2xpbmsuaCcsCisgICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3NnaWRlZnMuaCcsCistICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N0YWIuaCcsCisgICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N5cy9wcm9jZnMuaCcsCisgICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N5cy9zaWduYWwuaCcsCisgICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N5cy91c2VyLmgnLAorZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmNjIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MKK2luZGV4IDYwMTlmYzcuLjk1NjJjYWEgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5jYworKysrIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MKK0BAIC0zNCw3ICszNCw2IEBACisgI2luY2x1ZGUgImNvbW1vbi9zdGFic19yZWFkZXIuaCIKKyAKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CistI2luY2x1ZGUgPHN0YWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCisgI2luY2x1ZGUgPHN0cmluZz4KK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5oIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaAoraW5kZXggZDg5YWZjMC4uNTkxZjAwNyAxMDA2NDQKKy0tLSBhL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmgKKysrKyBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmgKK0BAIC01MywxMiArNTMsMTkgQEAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2lmZGVmIEhBVkVfQV9PVVRfSAorLSNpbmNsdWRlIDxhLm91dC5oPgorLSNlbmRpZgorICNpZmRlZiBIQVZFX01BQ0hfT19OTElTVF9ICisgI2luY2x1ZGUgPG1hY2gtby9ubGlzdC5oPgorICNlbmRpZgorKy8vIERlZmluaXRpb25zIGZyb20gPHN0YWIuaD4gYW5kIDxhLm91dC5oPiBmb3Igc3lzdGVtcyB3aGljaAorKy8vIGRvIG5vdCBoYXZlIHRoZW0KKysjdW5kZWYgTl9VTkRGCisrI2RlZmluZSBOX1VOREYgMHgwCisrI2RlZmluZSBOX0ZVTiAweDI0CisrI2RlZmluZSBOX1NMSU5FIDB4NDQKKysjZGVmaW5lIE5fU08gMHg2NAorKyNkZWZpbmUgTl9MU1lNIDB4ODAKKysjZGVmaW5lIE5fQklOQ0wgMHg4MgorKyNkZWZpbmUgTl9TT0wgMHg4NAorIAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlcl91bml0dGVzdC5jYyBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjCitpbmRleCBhODRkYTFjLi44NTRhYzQyIDEwMDY0NAorLS0tIGEvc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MKKysrKyBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjCitAQCAtMzMsNyArMzMsNiBAQAorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8c3RhYi5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLS0gCisyLjAuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDA1LW1kMmNvcmUtUmVwbGFjZS1iYXNlbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDUtbWQyY29yZS1SZXBsYWNlLWJhc2VuYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MmMxZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDA1LW1kMmNvcmUtUmVwbGFjZS1iYXNlbmFtZS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGJiZjJiNWVkNWQ5M2IyMjdkZjhhZWE1NzI2NzI3YjQ4ZTI5ZjY3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAyMzozNTo0MCAtMDcwMAorU3ViamVjdDogW1BBVENIIDUvNV0gbWQyY29yZTogUmVwbGFjZSBiYXNlbmFtZSgpCisKK211c2wgZG9lcyBub3QgcHJvdmlkZSBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjIHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYyBiL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYworaW5kZXggNmE5ZTI4ZWIuLjUyYjgxYzIyIDEwMDY0NAorLS0tIGEvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCisrKysgYi9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKK0BAIC0xMDcsNiArMTA3LDkgQEAgc3RydWN0IE9wdGlvbnMgeworIAorIHN0YXRpYyB2b2lkCisgVXNhZ2UoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkgeworKyAgY29uc3QgY2hhciAqY19maWxlbmFtZSA9IGFyZ3ZbMF07OworKyAgY29uc3QgY2hhciAqcCA9IHN0cnJjaHIoY19maWxlbmFtZSwgJy8nKTsKKysgIGNvbnN0IGNoYXIgKmJhc2UgPSBwID8gcCsxIDogY19maWxlbmFtZTsKKyAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAiVXNhZ2U6ICVzIFtvcHRpb25zXSA8bWluaWR1bXAgZmlsZT5cbiIKKyAgICAgICAgICAgIlxuIgorQEAgLTEzMyw3ICsxMzYsNyBAQCBVc2FnZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKSB7CisgICAgICAgICAgICIgICAgICAgICAgICAgbG9va3VwcyB0byBiZSBkb25lIGluIHRoaXMgZGlyZWN0b3J5IHJhdGhlciB0aGFuIHRoZSBmaWxlc3lzdGVtXG4iCisgICAgICAgICAgICIgICAgICAgICAgICAgbGF5b3V0IGFzIGl0IGV4aXN0cyBpbiB0aGUgY3Jhc2hpbmcgaW1hZ2UuICBUaGlzIHBhdGggc2hvdWxkIGVuZFxuIgorICAgICAgICAgICAiICAgICAgICAgICAgIHdpdGggYSBzbGFzaCBpZiBpdCdzIGEgZGlyZWN0b3J5LiAgZS5nLiAvdmFyL2xpYi9icmVha3BhZC9cbiIKKy0gICAgICAgICAgIiIsIGJhc2VuYW1lKGFyZ3ZbMF0pKTsKKysgICAgICAgICAgIiIsIGJhc2UpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvbWNvbnRleHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC9tY29udGV4dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmUwNzNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvbWNvbnRleHQucGF0Y2gKQEAgLTAsMCArMSw3NyBAQAorbWFwIHRoZSBtY29udGV4dF90IHN0cnVjdHVyZSBmb3IgbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbbmVlZCB0byBjb25zaWRlciBBbmRyb2lkXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorSW5kZXg6IGdpdC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCisrKysgZ2l0L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCitAQCAtMjI5LDcgKzIyOSw2IEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGUKKyB9CisgCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKy0KKyB1aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QgeworICAgcmV0dXJuIG1jb250ZXh0LnBjOworIH0KK0BAIC0yNjMsOCArMjYyLDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGUKKyAgIG91dC0+Y2F1c2UgPSAwOyAvLyBOb3Qgc3RvcmVkIGluIG1jb250ZXh0CisgCisgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfTUlQU19GUFJfQ09VTlQ7ICsraSkKKysjaWZkZWYgX19HTElCQ19fCisgICAgIG91dC0+ZmxvYXRfc2F2ZS5yZWdzW2ldID0gbWNvbnRleHQuZnByZWdzLmZwX3IuZnBfZnJlZ3NbaV0uX2ZwX2ZyZWdzOworLQorKyNlbHNlCisrICAgIG91dC0+ZmxvYXRfc2F2ZS5yZWdzW2ldID0gbWNvbnRleHQuZnByZWdzW2ldOworKyNlbmRpZgorICAgb3V0LT5mbG9hdF9zYXZlLmZwY3NyID0gbWNvbnRleHQuZnBjX2NzcjsKKyAjaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSBtY29udGV4dC5mcGNfZWlyOworSW5kZXg6IGdpdC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKysrKyBnaXQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitAQCAtMjQ3LDggKzI0NywxMSBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDCisgICBvdXQtPmNhdXNlID0gMDsgIC8vIE5vdCByZXBvcnRlZCBpbiBzaWduYWwgY29udGV4dC4KKyAKKyAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9NSVBTX0ZQUl9DT1VOVDsgKytpKQorKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgb3V0LT5mbG9hdF9zYXZlLnJlZ3NbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZnByZWdzLmZwX3IuZnBfZHJlZ3NbaV07CistCisrI2Vsc2UKKysgICAgb3V0LT5mbG9hdF9zYXZlLnJlZ3NbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZnByZWdzW2ldOworKyNlbmRpZgorICAgb3V0LT5mbG9hdF9zYXZlLmZwY3NyID0gdWMtPnVjX21jb250ZXh0LmZwY19jc3I7CisgI2lmIF9NSVBTX1NJTSA9PSBfQUJJTzMyCisgICBvdXQtPmZsb2F0X3NhdmUuZmlyID0gdWMtPnVjX21jb250ZXh0LmZwY19laXI7ICAvLyBVbnVzZWQuCitJbmRleDogZ2l0L3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKKysrKyBnaXQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKK0BAIC0xOTYsNyArMTk2LDcgQEAgYm9vbCBMaW51eENvcmVEdW1wZXI6OkVudW1lcmF0ZVRocmVhZHMoKQorICAgICAgICAgaW5mby50Z2lkID0gc3RhdHVzLT5wcl9wZ3JwOworICAgICAgICAgaW5mby5wcGlkID0gc3RhdHVzLT5wcl9wcGlkOworICNpZiBkZWZpbmVkKF9fbWlwc19fKQorLSNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSB8fCAhZGVmaW5lZChfX0dMSUJDX18pCisgICAgICAgICBmb3IgKGludCBpID0gRUZfUjA7IGkgPD0gRUZfUjMxOyBpKyspCisgICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3JlZ3NbaSAtIEVGX1IwXSA9IHN0YXR1cy0+cHJfcmVnW2ldOworICNlbHNlICAvLyBfX0FORFJPSURfXworSW5kZXg6IGdpdC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKKysrKyBnaXQvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCitAQCAtNTE2LDggKzUxNiwxMiBAQCBQYXJzZVRocmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyCisgICB0aHJlYWQtPm1jb250ZXh0LmxvMyA9IHJhd3JlZ3MtPmxvWzJdOworIAorICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX01JUFNfRlBSX0NPVU5UOyArK2kpIHsKKysjaWZkZWYgX19HTElCQ19fCisgICAgIHRocmVhZC0+bWNvbnRleHQuZnByZWdzLmZwX3IuZnBfZnJlZ3NbaV0uX2ZwX2ZyZWdzID0KKyAgICAgICAgIHJhd3JlZ3MtPmZsb2F0X3NhdmUucmVnc1tpXTsKKysjZWxzZQorKyAgICB0aHJlYWQtPm1jb250ZXh0LmZwcmVnc1tpXSA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUucmVnc1tpXTsKKysjZW5kaWYKKyAgIH0KKyAKKyAgIHRocmVhZC0+bWNvbnRleHQuZnBjX2NzciA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZnBjc3I7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC9taXBzX2FzbV9zZ2lkZWZzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvbWlwc19hc21fc2dpZGVmcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWJiNTYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvbWlwc19hc21fc2dpZGVmcy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitJbmRleDogbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHNzLm9yaWcvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKysrKyBsc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK0BAIC0xMTgsMjEgKzExOCwxMyBAQCBleHRlcm4gIkMiIHsKKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CisgCisgI2lmZGVmIF9fbWlwc19fCistLyogSW5jbHVkZSBkZWZpbml0aW9ucyBvZiB0aGUgQUJJIGN1cnJlbnRseSBpbiB1c2UuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLSNpZmRlZiBfX0FORFJPSURfXworLS8qIEFuZHJvaWQgZG9lc24ndCBoYXZlIHNnaWRlZnMuaCwgYnV0IGRvZXMgaGF2ZSBhc20vc2dpZGVmcy5oLAorLSAqIHdoaWNoIGhhcyB0aGUgZGVmaW5pdGlvbnMgd2UgbmVlZC4KKy0gKi8KKyAjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KKy0jZWxzZQorLSNpbmNsdWRlIDxzZ2lkZWZzLmg+CistI2VuZGlmCisgI2VuZGlmCisgI2VuZGlmCisgCisgLyogVGhlIEFuZHJvaWQgTkRLJ3MgPHN5cy9zdGF0Lmg+ICNkZWZpbmVzIHRoZXNlIG1hY3JvcyBhcyBhbGlhc2VzCisgICogdG8gdGhlaXIgbm9uLTY0IGNvdW50ZXJwYXJ0cy4gVG8gYXZvaWQgbmFtaW5nIGNvbmZsaWN0LCByZW1vdmUgdGhlbS4gKi8KKy0jaWZkZWYgX19BTkRST0lEX18KKysjaWYgZGVmaW5lZChfX0FORFJPSURfXykgfHwgKGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX2dsaWJjX18pKQorICAgLyogVGhlc2UgYXJlIHJlc3RvcmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nICNwcmFnbWEgcG9wX21hY3JvIG5lYXIKKyAgICAqIHRoZSBlbmQgb2YgdGhpcyBmaWxlLiAqLworICMgcHJhZ21hIHB1c2hfbWFjcm8oInN0YXQ2NCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZF9naXQuYmIKaW5kZXggMzZjMmI2My4uNWY2ZDgyYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkX2dpdC5iYgpAQCAtMTcsMjQgKzE3LDM3IEBACiAKIFBWID0gIjEuMCtnaXQke1NSQ1BWfSIKIAotU1JDUkVWX0ZPUk1BVCA9ICJicmVha3BhZF9nbG9nX2dtb2NrX2d0ZXN0X3Byb3RvYnVmX2xzcyIKK1NSQ1JFVl9GT1JNQVQgPSAiYnJlYWtwYWRfZ3Rlc3RfcHJvdG9idWZfbHNzX2d5cCIKIAotU1JDUkVWX2JyZWFrcGFkID0gIjJmNmNiODY2ZDYxNWQ2MjQwYTE4Yzc1MzVjOTk0YzZiYjkzYjFiYTUiCi1TUkNSRVZfZ2xvZyA9ICJkOGNiNDdmNzdkMWMzMTc3OWYzZmY4OTBlMWE1NzQ4NDgzNzc4ZDZhIgotU1JDUkVWX2dtb2NrID0gImY3ZDAzZDI3MzQ3NTllZTEyYjU3ZDJkYmNiNjk1NjA3ZDg5ZThlMDUiCitTUkNSRVZfYnJlYWtwYWQgPSAiZGVhODY3ZTc2ZjI0ZTRhNjgzOTU2ODRiOWQxY2YyNGJjZWY4MmYyMCIKIFNSQ1JFVl9ndGVzdCA9ICJlYzQ0YzZjMTY3NWMyNWI5ODI3YWFjZDA4YzAyNDMzY2NjZGU3NzgwIgogU1JDUkVWX3Byb3RvYnVmID0gImNiNmRkNGVmNWY4MmU0MWUwNjE3OWRjZDU3ZDNiMWQ5MjQ2YWQ2YWMiCi1TUkNSRVZfbHNzID0gIjE1NDlkMjBmNmQzZTdkNjZiYjRlNjg3YzBhYjlkYTQyYzJiZmYyYWMiCitTUkNSRVZfbHNzID0gImE5MTYzM2QxNzI0MDdmNmM4M2RkNjlhZjExNTEwYjM3YWZlYmI3ZjkiCitTUkNSRVZfZ3lwID0gIjMyNGRkMTY2YjdjMGIzOWQ1MTMwMjZmYTUyZDYyODBhYzZkNTY3NzAiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvYnJlYWtwYWQ7bmFtZT1icmVha3BhZCBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dsb2cuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3NyYy90aGlyZF9wYXJ0eS9nbG9nO25hbWU9Z2xvZyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZW1vY2suZ2l0O2Rlc3RzdWZmaXg9Z2l0L3NyYy90ZXN0aW5nO25hbWU9Z21vY2sgXAogICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdDtkZXN0c3VmZml4PWdpdC9zcmMvdGVzdGluZy9ndGVzdDtuYW1lPWd0ZXN0IFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3NyYy90aGlyZF9wYXJ0eS9wcm90b2J1Zi9wcm90b2J1ZjtuYW1lPXByb3RvYnVmIFwKICAgICAgICAgICAgZ2l0Oi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9saW51eC1zeXNjYWxsLXN1cHBvcnQ7cHJvdG9jb2w9aHR0cHM7ZGVzdHN1ZmZpeD1naXQvc3JjL3RoaXJkX3BhcnR5L2xzcztuYW1lPWxzcyBcCisgICAgICAgICAgIGdpdDovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vZXh0ZXJuYWwvZ3lwO3Byb3RvY29sPWh0dHBzO2Rlc3RzdWZmaXg9Z2l0L3NyYy90b29scy9neXA7bmFtZT1neXAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLXVzZS1vZi1zdHJ1Y3QtdWNvbnRleHQtd2l0aC11Y29udGV4dF90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQXZvaWQtdXNpbmctYmFzZW5hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1GaXgtY29uZmxpY3QtYmV0d2Vlbi1tdXNsLWxpYmMtZGlyZW50LmgtYW5kLWxzcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVR1cm4tb2ZmLXNpZ24tY29tcGFyZS1mb3ItbXVzbC1saWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItc3lzLXNpZ25hbC5oLWlzLWEtbm9ucG9ydGFibGUtYWxpYXMtZm9yLXNpZ25hbC5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRG9udC1pbmNsdWRlLXN0YWIuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWVsZl9yZWFkZXIuY2MtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1tZDJjb3JlLVJlcGxhY2UtYmFzZW5hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21jb250ZXh0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbHNzLU1hdGNoLXN5c2NhbGxzLXRvLW1hdGNoLW11c2wucGF0Y2g7cGF0Y2hkaXI9c3JjL3RoaXJkX3BhcnR5L2xzcyBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzX2FzbV9zZ2lkZWZzLnBhdGNoO3BhdGNoZGlyPXNyYy90aGlyZF9wYXJ0eS9sc3MgXAogIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAorQ1hYRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCisKIENPTVBBVElCTEVfTUFDSElORV9wb3dlcnBjID0gIighLipwcGMpLioiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewpAQCAtNjcsNyArODAsNyBAQAogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9mb3JtYXQuaCAke0R9JHtpbmNsdWRlZGlyfS9icmVha3BhZC9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2Zvcm1hdC5oCiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2NwdV9hbWQ2NC5oICR7RH0ke2luY2x1ZGVkaXJ9L2JyZWFrcGFkL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X2FtZDY0LmgKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X2FybS5oICR7RH0ke2luY2x1ZGVkaXJ9L2JyZWFrcGFkL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X2FybS5oCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2NwdV9hcm0uaCAke0R9JHtpbmNsdWRlZGlyfS9icmVha3BhZC9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2NwdV9hcm02NC5oCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2NwdV9hcm02NC5oICR7RH0ke2luY2x1ZGVkaXJ9L2JyZWFrcGFkL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X2FybTY0LmgKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X21pcHMuaCAke0R9JHtpbmNsdWRlZGlyfS9icmVha3BhZC9nb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2NwdV9taXBzLmgKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2dvb2dsZV9icmVha3BhZC9jb21tb24vbWluaWR1bXBfY3B1X3BwYzY0LmggJHtEfSR7aW5jbHVkZWRpcn0vYnJlYWtwYWQvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfcHBjNjQuaAogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfcHBjLmggJHtEfSR7aW5jbHVkZWRpcn0vYnJlYWtwYWQvZ29vZ2xlX2JyZWFrcGFkL2NvbW1vbi9taW5pZHVtcF9jcHVfcHBjLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NhcG5wcm90by9jYXBucHJvdG9fMC42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jYXBucHJvdG8vY2FwbnByb3RvXzAuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYmU3M2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jYXBucHJvdG8vY2FwbnByb3RvXzAuNi4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQ2FwJ24gUHJvdG8gc2VyaWFsaXphdGlvbi9SUEMgc3lzdGVtIgorREVTQ1JJUFRJT04gPSAiQ2Fw4oCZbiBQcm90byBpcyBhbiBpbnNhbmVseSBmYXN0IGRhdGEgaW50ZXJjaGFuZ2UgZm9ybWF0IGFuZCBjYXBhYmlsaXR5LWJhc2VkIFJQQyBzeXN0ZW0uICIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYW5kc3Rvcm0taW8vY2FwbnByb3RvIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTBhNWI1Yjc0MmJhZjEwY2MxYzE1ODU3OWViYTdmYjFkIgorCitTUkNSRVYgPSAiYzk0OWExOGRhNWYwNDFhMzZjYzIxOGM1YzRiNzljNzcwNTk5OWI0ZiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zYW5kc3Rvcm0taW8vY2FwbnByb3RvLmdpdDticmFuY2g9cmVsZWFzZS0ke1BWfSIKKworRVhUUkFfT0VDTUFLRSArPSAiXAorICAgIC1EQlVJTERfVEVTVElORz1PRkYgXAorIgorCitpbmhlcml0IGNtYWtlCisKK1MgPSAiJHtXT1JLRElSfS9naXQvYysrIgorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1jb21waWxlciIKK1JERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jbG91ZDkvY2xvdWQ5LzAwMDEtaWRlLXVzZS1ub2RlLWFzLWludGVycHJldGVyLWZvci1za2V0Y2hlcy1pbnN0ZWFkLW9mLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Nsb3VkOS9jbG91ZDkvMDAwMS1pZGUtdXNlLW5vZGUtYXMtaW50ZXJwcmV0ZXItZm9yLXNrZXRjaGVzLWluc3RlYWQtb2YtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzIzMTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Nsb3VkOS9jbG91ZDkvMDAwMS1pZGUtdXNlLW5vZGUtYXMtaW50ZXJwcmV0ZXItZm9yLXNrZXRjaGVzLWluc3RlYWQtb2YtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBhYzE5NTNkMDRmM2YyNmQ2YWE1ZDhmNTNhOTM5N2QzYmEwZTk2ZmEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGNpcmN1aXRjby5jb20+Ci1EYXRlOiBGcmksIDExIE1heSAyMDEyIDE1OjIzOjAyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlkZTogdXNlICdub2RlJyBhcyBpbnRlcnByZXRlciBmb3Igc2tldGNoZXMgaW5zdGVhZCBvZgotIGFyZ3ZbMF0KLQotVGhpcyBlbmFibGVzIHJ1bm5pbmcgc2NyaXB0cyB3aXRoIG5vZGUgMC42LnggaW5zdGVhZCBvZiAwLjQueAotCi1TaWduZWQtb2ZmLWJ5OiByb290IDxyb290QGJlYWdsZWJvbmUuKG5vbmUpPgotLS0tCi0gc2VydmVyL2Nsb3VkOS9pZGUuanMgfCAgICAyICstCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXJ2ZXIvY2xvdWQ5L2lkZS5qcyBiL3NlcnZlci9jbG91ZDkvaWRlLmpzCi1pbmRleCBjZTc4MmY1Li42YzRlMGY3IDEwMDY0NAotLS0tIGEvc2VydmVyL2Nsb3VkOS9pZGUuanMKLSsrKyBiL3NlcnZlci9jbG91ZDkvaWRlLmpzCi1AQCAtNTMsNyArNTMsNyBAQCB2YXIgSWRlID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zLCBodHRwU2VydmVyLCBleHRzLCBzb2NrZXQpIHsKLSAgICAgfTsKLSAKLSAgICAgdGhpcy4kdXNlcnMgPSB7fTsKLS0gICAgdGhpcy5ub2RlQ21kID0gcHJvY2Vzcy5hcmd2WzBdOwotKyAgICB0aGlzLm5vZGVDbWQgPSAibm9kZSI7Ci0gCi0gICAgIHZhciBkYXZPcHRpb25zID0gewotICAgICAgICAgbm9kZTogdGhpcy5vcHRpb25zLm1vdW50RGlyLAotLS0gCi0xLjcuNwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jbG91ZDkvY2xvdWQ5XzAuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Nsb3VkOS9jbG91ZDlfMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmQ3ODkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Nsb3VkOS9jbG91ZDlfMC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWVldCBDbG91ZDksIGRldmVsb3BtZW50LWFzLWEtc2VydmljZSBmb3IgSmF2YXNjcmlwdGVycyBhbmQgb3RoZXIgZGV2ZWxvcGVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jOS5pbyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00Nzg0YzNiY2ZmNjAxZmQ4Zjk1MTVmNTJhMTFlNzAxOCIKLQotUFIgPSAicjUiCi0KLSMgTm9kZWpzLW5hdGl2ZSBmb3Igbm9kZS13YWYsIG5vZGVqczQtbmF0aXZlIGZvciB0aGUgaGVhZGVycwotREVQRU5EUyA9ICJsaWJ4bWwyIG5vZGVqcy1uYXRpdmUgbm9kZWpzNC1uYXRpdmUiCi0KLVBOQkxBQ0tMSVNUW2Nsb3VkOV0gPz0gIk5vdCBjb21hdGlibGUgd2l0aCBjdXJyZW50IG5vZGVqcyAwLjEyLCBidXQgdXBzdHJlYW0gaXMgd29ya2luZyBvbiBpdCBmb3IgdjMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi1pbmhlcml0IHN5c3RlbWQKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvY2xvdWQ5LmdpdDtuYW1lPWNsb3VkOWlkZSBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9vMztkZXN0c3VmZml4PW8zO25hbWU9bzMgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvYWNlLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2FjZTtuYW1lPWFjZSBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9hY2Uud2lraS5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9hY2UvZG9jL3dpa2k7bmFtZT1hY2V3aWtpIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9hamF4b3JnL2FwZi5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9hcGY7bmFtZT1hcGYgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvYXN5bmMuanMuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvYXN5bmNqcztuYW1lPWFzeW5janMgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvY29ubmVjdC5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9jb25uZWN0O25hbWU9Y29ubmVjdDticmFuY2g9YWpheG9yZyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vamFzaGtlbmFzL2NvZmZlZS1zY3JpcHQuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvY29ubmVjdC9zdXBwb3J0L2NvZmZlZS1zY3JpcHQ7bmFtZT1jb2ZmZWUtc2NyaXB0IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS92aXNpb25tZWRpYS9leHByZXNzby5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9jb25uZWN0L3N1cHBvcnQvZXhwcmVzc287bmFtZT1leHByZXNzbyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vdmlzaW9ubWVkaWEvbm9kZS1qc2NvdmVyYWdlLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2Nvbm5lY3Qvc3VwcG9ydC9leHByZXNzby9kZXBzL2pzY292ZXJhZ2U7bmFtZT1qc2NvdmVyYWdlIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9jbG91ZGhlYWQvbGVzcy5qcy5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9jb25uZWN0L3N1cHBvcnQvbGVzcztuYW1lPWxlc3MgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL21hdGVoYXQvc2Fzcy5qcy5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9jb25uZWN0L3N1cHBvcnQvc2FzcztuYW1lPXNhc3MgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvanNEQVYuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvanNkYXY7bmFtZT1qc2RhdiBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vZmpha29icy9hc3luYy5qcy5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9qc2Rhdi9zdXBwb3J0L2FzeW5jLmpzO25hbWU9YXN5bmMtanMgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2ZlbGl4Z2Uvbm9kZS1mb3JtaWRhYmxlLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2pzZGF2L3N1cHBvcnQvZm9ybWlkYWJsZTtuYW1lPWZvcm1pZGFibGUgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvanNmdHAuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvanNkYXYvc3VwcG9ydC9qc2Z0cDtuYW1lPWpzZnRwIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9Hb3phbGEvc3RyZWFtZXIuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvanNkYXYvc3VwcG9ydC9qc2Z0cC9zdXBwb3J0L3N0cmVhbWVyO25hbWU9c3RyZWFtZXIgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2FqYXhvcmcvbm9kZS1zZnRwLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L2pzZGF2L3N1cHBvcnQvbm9kZS1zZnRwO25hbWU9c2Z0cCBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy9saWItdjhkZWJ1Zy5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9saWItdjhkZWJ1ZztuYW1lPWxpYi12OGRlYnVnIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9hamF4b3JnL3NvY2tldC5pby5naXQ7ZGVzdHN1ZmZpeD1naXQvc3VwcG9ydC9zb2NrZXQuaW87bmFtZT1zb2NrZXRpbzticmFuY2g9Y2Fkb3JuLXVwc3RyZWFtIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9MZWFybkJvb3N0L3NvY2tldC5pby1jbGllbnQuZ2l0O2Rlc3RzdWZmaXg9Z2l0L3N1cHBvcnQvc29ja2V0LmlvLWNsaWVudDtuYW1lPXNvY2tldGlvLWNsaWVudCBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vYWpheG9yZy90cmVlaHVnZ2VyLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L3RyZWVodWdnZXI7bmFtZT10cmVlaHVnZ2VyIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9hamF4b3JnL1VnbGlmeUpTLmdpdDtkZXN0c3VmZml4PWdpdC9zdXBwb3J0L3VnbGlmeS1qcztuYW1lPXVnbGlmeS1qcyBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmRleC5qcyBcCi0gICAgICAgICAgIGZpbGU6Ly9jbG91ZDktYXZhaGkuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9jbG91ZDkuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlkZS11c2Utbm9kZS1hcy1pbnRlcnByZXRlci1mb3Itc2tldGNoZXMtaW5zdGVhZC1vZi0ucGF0Y2ggXAotIgotCi1TUkNSRVZfY2xvdWQ5aWRlID0gImM0ZTI1NzQ4OTZhMjJiYjc0OWYwNTAwYjI1ZjQxYzg4OGQzNDZiZWQiCi1TUkNSRVZfbzMgPSAiZDY2ZDRlMzI1MmU1MDVmNDRhZGE2ODA0YzhjYWIzOTkxNWNlOGFmZCIKLVNSQ1JFVl9hY2UgPSAiMGZjNTM5MmNiZTQ2ZmIxMzQwNTJjMzA2NWEyMzhhZDhlM2IzMWNmZCIKLVNSQ1JFVl9hY2V3aWtpID0gImQyYTY1ZDBhZGRjMmU1YWI5MjJiYmZmOWNiNjAyMmE0NjUyYjRmMTMiCi1TUkNSRVZfYXBmID0gIjI1NjBiNzYyYjJiMGU1YThiNDZmOGE0MDYyZjkyN2E5YTlkMjM5ZjQiCi1TUkNSRVZfYXN5bmNqcyA9ICJkMzZlYWQ0MDhlMjk1OWIxZTk5NTcyMTE0ZWYzYTFiNmE0OGMxMDcyIgotU1JDUkVWX2Nvbm5lY3QgPSAiNmJlYzk1YjUxZjIyODZiOTQyYmM3ZjM0MGQ2MmQ4MTZiY2RjMTNkNCIKLVNSQ1JFVl9jb2ZmZWUtc2NyaXB0ID0gImE1M2MxMDRkYjE2ZDNhYzlkMTNjZjlmMTY4MzRlZGVjMjUwYjk3NDkiCi1TUkNSRVZfZXhwcmVzc28gPSAiN2YxMGFiN2ZhNjU1Mjk5YjRlMmY1MTkwNjViMDQ5NWU2YWMzNGVmMiIKLVNSQ1JFVl9qc2NvdmVyYWdlID0gIjBkNDYwOGE2YjQyNzViMDIwYmE2NjUzODlhYTc1ODk3ZDVkNGE1ODQiCi1TUkNSRVZfbGVzcyA9ICJhMjgwNzI4ODAwODU4N2I5NWM2YzJmOGJhNWNhYzE2ZjFiY2FiOThmIgotU1JDUkVWX3Nhc3MgPSAiNGRmZDRjNjk5ZTdhOGJhZjIyNjIxNWFiMDQ0ODU0YzQ1MDdmNDQyMCIKLVNSQ1JFVl9qc2RhdiA9ICJmMDRlYmYzZDAxMmNjOGFlYWJmY2ZiMmI4ZmFiODk2NmQ1MjkyOWU5IgotU1JDUkVWX2FzeW5jLWpzID0gIjkyZmI3MTBhNzBlZmQzY2RjMjM3NmViZmJhNzFhN2ZiM2E0ZjE2NTEiCi1TUkNSRVZfZm9ybWlkYWJsZSA9ICJhMzcyOTJkNGI3ZDZkNzZhMzg5MDllZDY3MDMzNGM5MDY4ZDQwODcxIgotU1JDUkVWX2pzZnRwID0gImUzZjEwYzg5MjczNDdjMTcwY2RkMDE1MGVmMzhlMTgyNzJhY2Y5NDIiCi1TUkNSRVZfc3RyZWFtZXIgPSAiMWE3Zjc1ZDQwNjU4MTkxNzFhYzkxYTA5OTc0MTk5YjkzMmRiZTE3ZCIKLVNSQ1JFVl9zZnRwID0gImEwNTM5MzQ1MTM0OTcwZDc1MzVhMTljYjI2MDhlM2QxYmMxMTlkNzEiCi1TUkNSRVZfbGliLXY4ZGVidWcgPSAiN2MxMTg5N2Y0YmM3N2M3Mjc1YzJiNmRmZjViZWNjNzJhYzAxODY2MiIKLVNSQ1JFVl9zb2NrZXRpbyA9ICI3MzVkNTIzOWIzMjVkZjJiYTY3ZDJiOWJiNGVjMzI0NDIyODNiYzA2IgotU1JDUkVWX3NvY2tldGlvLWNsaWVudCA9ICI0Mzc1ZWYxMzQ0ZWNiOGFkNzVhMzg0OGEwMGFmNmIzOTE4MjJmODZiIgotU1JDUkVWX3RyZWVodWdnZXIgPSAiNDM2ZDBkNmRkMGNlNDM3ODJlNmJlMDhhZDEyYzM1NjczMDYyNjk5NiIKLVNSQ1JFVl91Z2xpZnktanMgPSAiOTQxYzg0NWM0YTAxZTRlNDdhMTU4NDU4ZmU4NDZlYjM2ZDA4MjhhZCIKLQotU1JDUkVWX0ZPUk1BVCA9ICJjbG91ZDlpZGUiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgY2QgJHtXT1JLRElSfS9vMwotICAgIG5vZGUtd2FmIC12diBjb25maWd1cmUKLX0KLQotRVhUUkFfQ1hYRkxBR1MgPSAiLUlkZWZhdWx0L2luY2x1ZGUgLUkuLi9pbmNsdWRlIC1JZGVmYXVsdC9ob3N0cyAtSS4uL2hvc3RzIC1JZGVmYXVsdC9tb2R1bGVzIC1JLi4vbW9kdWxlcyAtSWRlZmF1bHQvZGVwcyAtSS4uL2RlcHMgLUkke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2luY2x1ZGUvbm9kZTQgLWZQSUMgLURQSUMiCi0KLWRvX2NvbXBpbGUgKCkgewotICAgIGNkICR7V09SS0RJUn0vbzMKLSAgICBub2RlNCB0b29scy9nbHVlZ2VuLmpzCi0gICAgY2QgaG9zdHMKLSAgICAke0NYWH0gJHtUQVJHRVRfQ1hYRkxBR1N9ICR7RVhUUkFfQ1hYRkxBR1N9IC1jIC1vIHNoX25vZGUubyBub2RlLW8zL3NoX25vZGUuY2MKLSAgICAke0NYWH0gJHtUQVJHRVRfQ1hYRkxBR1N9ICR7RVhUUkFfQ1hYRkxBR1N9IC1jIC1vIHNoX25vZGVfbGlicy5vIG5vZGUtbzMvc2hfbm9kZV9saWJzLmNjCi0gICAgY2QgLi4KLSAgICAke0NYWH0gJHtUQVJHRVRfTERGTEFHU30gaG9zdHMvc2hfbm9kZS5vIGhvc3RzL3NoX25vZGVfbGlicy5vIC1vIG8zLm5vZGUgLXNoYXJlZCAtV2wsLUJkeW5hbWljIC1seG1sMgotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7ZGF0YWRpcn0vY2xvdWQ5ICR7RH0ke2JpbmRpcn0gJHtEfS92YXIvbGliL2Nsb3VkOQotICAgIHJzeW5jIC1yIC0tZXhjbHVkZT0iLioiICR7U30vKiAke0R9JHtkYXRhZGlyfS9jbG91ZDkKLQotICAgIHRvdWNoICR7RH0ke2JpbmRpcn0vY2xvdWQ5Ci0gICAgZWNobyAiIyEvYmluL3NoIiA+ICR7RH0ke2JpbmRpcn0vY2xvdWQ5Ci0gICAgZWNobyAibm9kZTQgJHtkYXRhZGlyfS9jbG91ZDkvYmluL2Nsb3VkOS5qcyAtbCAwLjAuMC4wIC13IC92YXIvbGliL2Nsb3VkOSAtcCAzMDAwIiA+PiAke0R9JHtiaW5kaXJ9L2Nsb3VkOQotICAgIGNobW9kIDA3NTUgJHtEfSR7YmluZGlyfS9jbG91ZDkKLQotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtkYXRhZGlyfS9jbG91ZDkvc3VwcG9ydC9qc2Rhdi9zdXBwb3J0L25vZGUtbzMteG1sLXY0L2xpYi9vMy14bWwKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5qcyAke0R9JHtkYXRhZGlyfS9jbG91ZDkvc3VwcG9ydC9qc2Rhdi9zdXBwb3J0L25vZGUtbzMteG1sLXY0L2xpYi9vMy14bWwvaW5kZXguanMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vMy9tb2R1bGVzL28zLmpzICR7RH0ke2RhdGFkaXJ9L2Nsb3VkOS9zdXBwb3J0L2pzZGF2L3N1cHBvcnQvbm9kZS1vMy14bWwtdjQvbGliL28zLXhtbC9vMy5qcwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L28zL28zLm5vZGUgJHtEfSR7ZGF0YWRpcn0vY2xvdWQ5L3N1cHBvcnQvanNkYXYvc3VwcG9ydC9ub2RlLW8zLXhtbC12NC9saWIvbzMteG1sL28zLm5vZGUKLQotICAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXZhaGkvc2VydmljZXMvCi0gICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nsb3VkOS1hdmFoaS5zZXJ2aWNlICR7RH0ke3N5c2NvbmZkaXJ9L2F2YWhpL3NlcnZpY2VzLwotCi0gICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY2xvdWQ5LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2RhdGFkaXJ9L2Nsb3VkOS9zdXBwb3J0L2pzZGF2L3N1cHBvcnQvbm9kZS1vMy14bWwtdjQvbGliL28zLXhtbC8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2Nsb3VkOS9zdXBwb3J0L2pzZGF2L3N1cHBvcnQvbm9kZS1vMy14bWwtdjQvbGliLy5kZWJ1ZyBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIm5vZGVqczQgbm9kZWpzIGd6aXAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY2xvdWQ5LnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kZWJvb3RzdHJhcC9kZWJvb3RzdHJhcF8xLjAuNjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kZWJvb3RzdHJhcC9kZWJvb3RzdHJhcF8xLjAuNjcuYmIKaW5kZXggNjJiMjc5Ni4uODQ3MmFjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZGVib290c3RyYXAvZGVib290c3RyYXBfMS4wLjY3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2RlYm9vdHN0cmFwL2RlYm9vdHN0cmFwXzEuMC42Ny5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiSW5zdGFsbCBhIERlYmlhbiBzeXN0ZW0gaW50byBhIHN1YmRpcmVjdG9yeSIKIEhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL0RlYm9vdHN0cmFwIgogU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiZGVib290c3RyYXAtY3VzdG9tLWxpY2Vuc2UiCitMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTFlNjhjZWQ2ZTE2ODlkNGNkOWRhYzc1ZmY1MjI1NjA4IgogCiBpbmhlcml0IHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHQvU3RvcC11c2luZy1yZWxhdGl2ZS1wYXRoLWZvci1zY3NpbGliLmMtbGluay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2R0L2R0L1N0b3AtdXNpbmctcmVsYXRpdmUtcGF0aC1mb3Itc2NzaWxpYi5jLWxpbmsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYjlhMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHQvU3RvcC11c2luZy1yZWxhdGl2ZS1wYXRoLWZvci1zY3NpbGliLmMtbGluay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNGNmN2UxNmZlOWI3NzNlMmU3NzYzZDRiNzczODU0ZWVmZTJhYTlhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBUdWUsIDEyIEphbiAyMDE2IDA5OjU5OjU1IC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFN0b3AgdXNpbmcgcmVsYXRpdmUgcGF0aCBmb3Igc2NzaWxpYi5jIGxpbmsKLU9yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gTWFrZWZpbGUubGludXggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5saW51eCBiL01ha2VmaWxlLmxpbnV4Ci1pbmRleCA3ODMzM2ZmLi5lMjEwNTY0IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUubGludXgKLSsrKyBiL01ha2VmaWxlLmxpbnV4Ci1AQCAtMTI5LDcgKzEyOSw3IEBAIHNjc2lsaWIuYzoKLSAJICAgIGVjaG8gIlBsZWFzZSBzcGVjaWZ5IE9TPXthaXgsbGludXgsaHB1eCxzb2xhcmlzLHdpbmRvd3N9IjsgXAotIAkgICAgZXhpdCAxOyBcCi0gCWZpOyBcCi0tCWxuIC1zZiAuLi9zY3NpbGliLSQoT1MpLmMgc2NzaWxpYi5jCi0rCWxuIC1zZiBzY3NpbGliLSQoT1MpLmMgc2NzaWxpYi5jCi0gCi0gcHJpbnQ6OwotIAkJQCQoUFJJTlRFUikgJChQUklOVEZMQUdTKSAkKEFMTF9DRklMRVMpCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2R0L2R0L1VzZS10Y3NoLXNoZWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHQvVXNlLXRjc2gtc2hlbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMDBmZGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHQvVXNlLXRjc2gtc2hlbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi1Gcm9tIGUzYzZlYjg3NzZmNjU5ZWI5ZTZlZWNjZjkwZDc4NWVmZjE4ZWNmNzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogTW9uLCAxNSBGZWIgMjAxNiAxODowMDowNSAtMDIwMAotU3ViamVjdDogW1BBVENIXSBVc2UgJ3Rjc2gnIHNoZWxsCi1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLS0tLQotIFNjcmlwdHMvZHRhIHwgMiArLQotIFNjcmlwdHMvZHRjIHwgMiArLQotIFNjcmlwdHMvZHRmIHwgMiArLQotIFNjcmlwdHMvZHRyIHwgMiArLQotIFNjcmlwdHMvZHRzIHwgMiArLQotIFNjcmlwdHMvZHR0IHwgMiArLQotIFNjcmlwdHMvZHR3IHwgMiArLQotIDcgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvU2NyaXB0cy9kdGEgYi9TY3JpcHRzL2R0YQotaW5kZXggZWJjNzA3Mi4uNGY5MDI0NyAxMDA3NTUKLS0tLSBhL1NjcmlwdHMvZHRhCi0rKysgYi9TY3JpcHRzL2R0YQotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2NzaAotKyMhL2Jpbi90Y3NoCi0gIwotICMJU2NyaXB0IGZpbGUgdG8gdGVzdCBhc3luY2hyb25vdXMgY29tbXVuaWNhdGlvbiBsaW5lcy4KLSAjCi1kaWZmIC0tZ2l0IGEvU2NyaXB0cy9kdGMgYi9TY3JpcHRzL2R0YwotaW5kZXggZGE2OWMyZS4uODlkNDhjMiAxMDA3NTUKLS0tLSBhL1NjcmlwdHMvZHRjCi0rKysgYi9TY3JpcHRzL2R0YwotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2NzaAotKyMhL2Jpbi90Y3NoCi0gIwklWiUlTSUgJUklICVFJQotICMKLSAjCURhdGU6CUF1Z3VzdCA3LCAxOTkwCi1kaWZmIC0tZ2l0IGEvU2NyaXB0cy9kdGYgYi9TY3JpcHRzL2R0ZgotaW5kZXggOWY4Y2Q4Ny4uMzIxZDI2MSAxMDA3NTUKLS0tLSBhL1NjcmlwdHMvZHRmCi0rKysgYi9TY3JpcHRzL2R0ZgotQEAgLTEsNCArMSw0IEBACi0tIyEgL2Jpbi9jc2gKLSsjISAvYmluL3Rjc2gKLSAjCi0gIwlTY3JpcHQgZmlsZSB0byBnYXRoZXIgZmxvcHB5IGRpc2sgcGVyZm9ybWFuY2UgZGF0YS4KLSAjCi1kaWZmIC0tZ2l0IGEvU2NyaXB0cy9kdHIgYi9TY3JpcHRzL2R0cgotaW5kZXggZGRiNzk0Ny4uMWZmNWEwYiAxMDA3NTUKLS0tLSBhL1NjcmlwdHMvZHRyCi0rKysgYi9TY3JpcHRzL2R0cgotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2NzaAotKyMhL2Jpbi90Y3NoCi0gIwklWiUlTSUgJUklICVFJQotICMKLSAjCURhdGU6CUF1Z3VzdCAyMSwgMTk5MAotZGlmZiAtLWdpdCBhL1NjcmlwdHMvZHRzIGIvU2NyaXB0cy9kdHMKLWluZGV4IDZiOGExNjcuLjQyZDIzMTIgMTAwNzU1Ci0tLS0gYS9TY3JpcHRzL2R0cwotKysrIGIvU2NyaXB0cy9kdHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9jc2gKLSsjIS9iaW4vdGNzaAotICMJJVolJU0lICVJJSAlRSUKLSAjCi0gIwlEYXRlOglBdWd1c3QgNywgMTk5MAotZGlmZiAtLWdpdCBhL1NjcmlwdHMvZHR0IGIvU2NyaXB0cy9kdHQKLWluZGV4IDM2Y2M2YmQuLmRmMTlkMmYgMTAwNzU1Ci0tLS0gYS9TY3JpcHRzL2R0dAotKysrIGIvU2NyaXB0cy9kdHQKLUBAIC0xLDQgKzEsNCBAQAotLSMhIC9iaW4vY3NoCi0rIyEgL2Jpbi90Y3NoCi0gIwklWiUlTSUgJUklICVFJQotICMKLSAjCURhdGU6CUF1Z3VzdCA3LCAxOTkwCi1kaWZmIC0tZ2l0IGEvU2NyaXB0cy9kdHcgYi9TY3JpcHRzL2R0dwotaW5kZXggOGE0YWMzOS4uYzU4ZTMwNCAxMDA3NTUKLS0tLSBhL1NjcmlwdHMvZHR3Ci0rKysgYi9TY3JpcHRzL2R0dwotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2NzaAotKyMhL2Jpbi90Y3NoCi0gIwklWiUlTSUgJUklICVFJQotICMKLSAjCURhdGU6CUF1Z3VzdCAyMSwgMTk5MAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9kdC1kZWZhdWx0LXNvdXJjZS1kZWZpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9kdC1kZWZhdWx0LXNvdXJjZS1kZWZpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MDE2ZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHQvZHQtZGVmYXVsdC1zb3VyY2UtZGVmaW5lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotUGF0Y2ggZnJvbSBodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9naXQvcnBtcy9kdC5naXQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci0KLWRpZmYgLXJ1cE4gZHQudjE4LjMyLm9sZC9jb21tb24uaCBkdC52MTguMzIvY29tbW9uLmgKLS0tLSBkdC52MTguMzIub2xkL2NvbW1vbi5oCTIwMTMtMDMtMDEgMjM6NTI6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZHQudjE4LjMyL2NvbW1vbi5oCTIwMTQtMDktMjQgMTc6NDE6NDAuNzc3NjA0NzEwICswMjAwCi1AQCAtMTI3LDcgKzEyNyw3IEBAIHR5cGVkZWYgdm9sYXRpbGUgc2xhcmdlX3QJdl9zbGFyZ2U7Ci0gCi0gI2VuZGlmIC8qIGRlZmluZWQoX1dJTjY0KSAqLwotIAotLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX0JTRF9TT1VSQ0UpIHx8IGRlZmluZWQoU0NPKSB8fCBkZWZpbmVkKF9fUU5YTlRPX18pIHx8IGRlZmluZWQoU09MQVJJUykgfHwgZGVmaW5lZChIUF9VWCkgfHwgZGVmaW5lZChBSVgpIHx8IGRlZmluZWQoX05UX1NPVVJDRSkgCi0rI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfQlNEX1NPVVJDRSkgfHwgZGVmaW5lZCAoX0RFRkFVTFRfU09VUkNFKSB8fCAgZGVmaW5lZChTQ08pIHx8IGRlZmluZWQoX19RTlhOVE9fXykgfHwgZGVmaW5lZChTT0xBUklTKSB8fCBkZWZpbmVkKEhQX1VYKSB8fCBkZWZpbmVkKEFJWCkgfHwgZGVmaW5lZChfTlRfU09VUkNFKSAKLSAKLSAjZGVmaW5lIFF1YWRJc0xvbmdMb25nCi0gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50CWxhcmdlX3Q7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9kdC13Zm9ybWF0LXNlY3VyaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHQvZHQtd2Zvcm1hdC1zZWN1cml0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY3ODBjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdC9kdC13Zm9ybWF0LXNlY3VyaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotUGF0Y2ggZnJvbSBodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9naXQvcnBtcy9kdC5naXQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci0KLWRpZmYgLXJ1cE4gZHQudjE4LjMyLm9sZC9kdC5jIGR0LnYxOC4zMi9kdC5jCi0tLS0gZHQudjE4LjMyLm9sZC9kdC5jCTIwMTQtMDgtMTggMTQ6NDU6NTMuMjQyMzUxMTE1ICswMjAwCi0rKysgZHQudjE4LjMyL2R0LmMJMjAxNC0wOC0xOCAxNToxMTozNi4zNjc3MTk4ODAgKzAyMDAKLUBAIC00Mzc4LDcgKzQzNzgsNyBAQCByZXBvcnRfZXJyb3IoCi0gCSAgICAodm9pZClzcHJpbnRmKGRpcC0+ZGlfbXNnX2J1ZmZlciwgIiglZCk6ICclcycsIGVycm5vID0gJWQgLSAlc1xuIiwKLSAJCQkgIGRpcC0+ZGlfcHJvY2Vzc19pZCwgZXJyb3JfaW5mbywgZXJybm8sIGVtc2cpOwotIAl9Ci0tCXN5c2xvZyhMT0dfRVJSLCBkaXAtPmRpX21zZ19idWZmZXIpOwotKwlzeXNsb2coTE9HX0VSUiwgIiVzIiwgZGlwLT5kaV9tc2dfYnVmZmVyKTsKLSAgICAgfQotICNlbmRpZiAvKiBkZWZpbmVkKFNZU0xPRykgKi8KLSAKLWRpZmYgLXJ1cE4gZHQudjE4LjMyLm9sZC9kdHV0aWwuYyBkdC52MTguMzIvZHR1dGlsLmMKLS0tLSBkdC52MTguMzIub2xkL2R0dXRpbC5jCTIwMTQtMDgtMTggMTQ6NDU6NTMuMzU0MzUwNzc5ICswMjAwCi0rKysgZHQudjE4LjMyL2R0dXRpbC5jCTIwMTQtMDgtMTggMTU6MTM6NTMuODM1MzA3MzExICswMjAwCi1AQCAtNTE4MCw3ICs1MTgwLDcgQEAgUmVwb3J0RGV2aWNlSW5mbyAoCi0gCSAgICBicCArPSBTcHJpbnRmKGJwLAotIAkJCSAgIiglZCkgRGV2aWNlIG5hbWU6ICVzXG4iLAotIAkJCSAgIGRpcC0+ZGlfcHJvY2Vzc19pZCwgZGlwLT5kaV9kbmFtZSk7Ci0tCSAgICBzeXNsb2coTE9HX0VSUiwgZGlwLT5kaV9tc2dfYnVmZmVyKTsKLSsJICAgIHN5c2xvZyhMT0dfRVJSLCAiJXMiLCBkaXAtPmRpX21zZ19idWZmZXIpOwotIAkgICAgYnAgPSBkaXAtPmRpX21zZ19idWZmZXI7Ci0gIyBpZiBkZWZpbmVkKFNDU0kpCi0gCSAgICBpZiAoZGlwLT5kaV9zZXJpYWxfbnVtYmVyKSB7Ci1AQCAtNTE5Myw3ICs1MTkzLDcgQEAgUmVwb3J0RGV2aWNlSW5mbyAoCi0gCQkJICAgICAgZGlwLT5kaV9wcm9jZXNzX2lkLCBkaXAtPmRpX2RldmljZV9pZCk7Ci0gCSAgICB9Ci0gIyBlbmRpZiAvKiBkZWZpbmVkKFNDU0kpICovCi0tCSAgICBzeXNsb2coTE9HX0VSUiwgZGlwLT5kaV9tc2dfYnVmZmVyKTsKLSsJICAgIHN5c2xvZyhMT0dfRVJSLCAiJXMiLCBkaXAtPmRpX21zZ19idWZmZXIpOwotIAkgICAgYnAgPSBkaXAtPmRpX21zZ19idWZmZXI7Ci0gCSAgICBicCArPSBTcHJpbnRmKGJwLAotIAkJICAiKCVkKSBSZWxhdGl2ZSBibG9jayBudW1iZXIgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkIGlzICIgTFVGICIsIgotQEAgLTUyMDMsNyArNTIwMyw3IEBAIFJlcG9ydERldmljZUluZm8gKAotICAgCSAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICBicCArPSBTcHJpbnRmKGJwLCAiXG4iKTsKLSAgICAgICAgICAgICB9Ci0tCSAgICBzeXNsb2coTE9HX0VSUiwgZGlwLT5kaV9tc2dfYnVmZmVyKTsKLSsJICAgIHN5c2xvZyhMT0dfRVJSLCAiJXMiLCBkaXAtPmRpX21zZ19idWZmZXIpOwotIAl9Ci0gI2VuZGlmIC8qIGRlZmluZWQoU1lTTE9HKSAqLwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZHQvZHRfMTguMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdF8xOC4zMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIzNGY3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kdC9kdF8xOC4zMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJpYyBkYXRhIHRlc3QgcHJvZ3JhbSIKLURFU0NSSVBUSU9OID0gIlRoZSBEYXRhIFRlc3QgUHJvZ3JhbSAoZHQpIGlzIGEgZ2VuZXJpYyBkYXRhIHRlc3QgcHJvZ3JhbSB1c2VkIHRvIHZlcmlmeSBwcm9wZXIgXAotb3BlcmF0aW9uIG9mIHBlcmlwaGVyYWxzLCBmaWxlIHN5c3RlbXMsIGRldmljZSBkcml2ZXJzLCBvciBhbnkgZGF0YSBzdHJlYW0gc3VwcG9ydGVkIGJ5IHRoZSBcCi1vcGVyYXRpbmcgc3lzdGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc2NzaWZhcS5vcmcvUk1pbGxlcl9Ub29scy9kdC5odG1sIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdGVzdHMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YmU4YmIyNWJiY2ZhYTA3MjU3MTBkMTg4ZTUxNTI2NjgiCi0KLSMgU291cmNlIFVSSSB0YWtlbiBmcm9tIEZlZG9yYSBSUE0gc3BlYyBmaWxlIGF0OgotIyAgaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvZ2l0L3JwbXMvZHQuZ2l0Ci1TUkNfVVJJID0gImh0dHA6Ly9kbC5kcm9wYm94dXNlcmNvbnRlbnQuY29tL3UvMzIzNjM2MjkvRGF0YXRlc3QvZHQtc291cmNlLXYke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZHQtZGVmYXVsdC1zb3VyY2UtZGVmaW5lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2R0LXdmb3JtYXQtc2VjdXJpdHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vU3RvcC11c2luZy1yZWxhdGl2ZS1wYXRoLWZvci1zY3NpbGliLmMtbGluay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Vc2UtdGNzaC1zaGVsbC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMDU0YWVhYWJhMDQ3YTFkYmU5MGMyMTMyYTM4MmVlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMGQxNjQ2NzZlOTE4YTRkMDdmMjMzYmNkMTFlNGNiNmJmZDEwNTJjOTk2MTgyY2QxODI3Y2NkMGMwNjNmY2M2IgotCi1TID0gIiR7V09SS0RJUn0vZHQudiR7UFZ9IgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotRVhUUkFfT0VNQUtFICs9ICItZiBNYWtlZmlsZS5saW51eCBcCi0gICAgICAgICAgICAgICAgIE9TPWxpbnV4IFwKLSAgICAgICAgICAgICAgICAgQ0ZMQUdTPSItSS4uIC1EQUlPIC1ERklGTyAtRE1NQVAgLURfX2xpbnV4X18gLURfR05VX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EVEhSRUFEUyAtRFNDU0kiIgotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1EbTc1NSBkdCAke0R9JHtzYmluZGlyfS9kdAotICAgIGluc3RhbGwgLURtNjQ0IERvY3VtZW50YXRpb24vZHQubWFuICR7RH0ke21hbmRpcn0vbWFuOC9kdC44Ci0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2R0LwotICAgIGluc3RhbGwgLWQgJHtEfSR7ZG9jZGlyfS9kdC9odG1sLwotICAgIGluc3RhbGwgLW03NTUgU2NyaXB0cy9kdD8gJHtEfSR7ZGF0YWRpcn0vZHQvCi0gICAgaW5zdGFsbCAtbTY0NCBkYXRhL3BhdHRlcm5fKiAke0R9JHtkYXRhZGlyfS9kdC8KLSAgICBpbnN0YWxsIC1tNjQ0IGh0bWwvKiAke0R9JHtkb2NkaXJ9L2R0L2h0bWwvCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJ0Y3NoIgotCi1QTkJMQUNLTElTVFtkdF0gPz0gIlJkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIHRjc2ggLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9maWxlcy8wMDAxLWNvcnJlY3QtdmVyc2lvbi1mb3Itc28tbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmlsZXMvMDAwMS1jb3JyZWN0LXZlcnNpb24tZm9yLXNvLWxpYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2E0MmY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmlsZXMvMDAwMS1jb3JyZWN0LXZlcnNpb24tZm9yLXNvLWxpYi5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDhiNDRkYzY1ZDk4ZDUwYjQ2Mjg0M2FjOWRhYjZmZTNmYzI1YWJlMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CitEYXRlOiBGcmksIDEyIE1heSAyMDE3IDEzOjU0OjQ5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvcnJlY3QgdmVyc2lvbiBmb3Igc28gbGliCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBDTWFrZUxpc3RzLnR4dCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggMzY3MGFmZS4uZjRmY2QyYyAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTE3Miw2ICsxNzIsNyBAQCBlbmRpZigpCisgaWYoRkxBVEJVRkZFUlNfQlVJTERfU0hBUkVETElCKQorICAgYWRkX2xpYnJhcnkoZmxhdGJ1ZmZlcnNfc2hhcmVkIFNIQVJFRCAke0ZsYXRCdWZmZXJzX0xpYnJhcnlfU1JDU30pCisgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoZmxhdGJ1ZmZlcnNfc2hhcmVkIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgZmxhdGJ1ZmZlcnMpCisrICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoZmxhdGJ1ZmZlcnNfc2hhcmVkIFBST1BFUlRJRVMgVkVSU0lPTiAiJHtQVn0iKQorIGVuZGlmKCkKKyAKKyBmdW5jdGlvbihjb21waWxlX2ZsYXRidWZmZXJzX3NjaGVtYV90b19jcHAgU1JDX0ZCUykKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmlsZXMvMDAwMS1mbGF0YnVmZmVycy1Nb3ZlLUVuZGlhblN3YXAtdGVtcGxhdGUtdG8tZmxhdGJ1ZmZlcnMtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmlsZXMvMDAwMS1mbGF0YnVmZmVycy1Nb3ZlLUVuZGlhblN3YXAtdGVtcGxhdGUtdG8tZmxhdGJ1ZmZlcnMtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MzZmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9maWxlcy8wMDAxLWZsYXRidWZmZXJzLU1vdmUtRW5kaWFuU3dhcC10ZW1wbGF0ZS10by1mbGF0YnVmZmVycy0ucGF0Y2gKQEAgLTAsMCArMSwxMTMgQEAKK0Zyb20gYTYxNGQ4ZTIwZmE5ZTRmZDE2YjY5OWQ1ODFkZGFjMjk1NmMxMjBmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IFNlcCAyMDE3IDEwOjA0OjAyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBmbGF0YnVmZmVyczogTW92ZSBFbmRpYW5Td2FwIHRlbXBsYXRlIHRvCisgZmxhdGJ1ZmZlcnMvYmFzZS5oCisKK0NsYW5nIGNvbXBsYWlucworY2FsbCB0byBmdW5jdGlvbiAnRW5kaWFuU3dhcCcgdGhhdCBpcyBuZWl0aGVyIHZpc2libGUgaW4gdGhlIHRlbXBsYXRlIGRlZmluaXRpb24gbm9yIGZvdW5kIGJ5IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAKKyAgICAgcmV0dXJuIEVuZGlhblN3YXAodCk7CisKK1RoaXMgc2VlbXMgdG8gYmUgZHVlIHRvIGxpbWl0YXRpb24gb2YgdHdvLXBoYXNlIGxvb2t1cCBvZiBkZXBlbmRlbnQgbmFtZXMgaW4gdGVtcGxhdGUgZGVmaW5pdGlvbnMKKworSXRzIG5vdCBiZWluZyBmb3VuZCB1c2luZyBhc3NvY2lhdGVkIG5hbWVzcGFjZXMgdGhlcmVmb3JlCitpdCBoYXMgdG8gYmUgbWFkZSB2aXNpYmxlIGF0IHRoZSB0ZW1wbGF0ZSBkZWZpbml0aW9uIHNpdGUgYXMgd2VsbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgaW5jbHVkZS9mbGF0YnVmZmVycy9iYXNlLmggICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgaW5jbHVkZS9mbGF0YnVmZmVycy9mbGF0YnVmZmVycy5oIHwgMzIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mbGF0YnVmZmVycy9iYXNlLmggYi9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAoraW5kZXggZjA1MTc1NS4uYzczZmIyZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oCisrKysgYi9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAorQEAgLTE1MCw2ICsxNTAsMzkgQEAgdHlwZWRlZiB1aW50bWF4X3QgbGFyZ2VzdF9zY2FsYXJfdDsKKyAvLyBXZSBzdXBwb3J0IGFsaWduaW5nIHRoZSBjb250ZW50cyBvZiBidWZmZXJzIHVwIHRvIHRoaXMgc2l6ZS4KKyAjZGVmaW5lIEZMQVRCVUZGRVJTX01BWF9BTElHTk1FTlQgMTYKKyAKKyt0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIEVuZGlhblN3YXAoVCB0KSB7CisrICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKKysgICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDE2IF9ieXRlc3dhcF91c2hvcnQKKysgICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDMyIF9ieXRlc3dhcF91bG9uZworKyAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQNjQgX2J5dGVzd2FwX3VpbnQ2NAorKyAgI2Vsc2UKKysgICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPCA0MDgKKysgICAgICAvLyBfX2J1aWx0aW5fYnN3YXAxNiB3YXMgbWlzc2luZyBwcmlvciB0byBHQ0MgNC44LgorKyAgICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAxNih4KSBcCisrICAgICAgICBzdGF0aWNfY2FzdDx1aW50MTZfdD4oX19idWlsdGluX2Jzd2FwMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHgpIDw8IDE2KSkKKysgICAgI2Vsc2UKKysgICAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYgX19idWlsdGluX2Jzd2FwMTYKKysgICAgI2VuZGlmCisrICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAzMiBfX2J1aWx0aW5fYnN3YXAzMgorKyAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQNjQgX19idWlsdGluX2Jzd2FwNjQKKysgICNlbmRpZgorKyAgaWYgKHNpemVvZihUKSA9PSAxKSB7ICAgLy8gQ29tcGlsZS10aW1lIGlmLXRoZW4ncy4KKysgICAgcmV0dXJuIHQ7CisrICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSAyKSB7CisrICAgIGF1dG8gciA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYoKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QgKj4oJnQpKTsKKysgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFQgKj4oJnIpOworKyAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gNCkgeworKyAgICBhdXRvIHIgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDMyKCpyZWludGVycHJldF9jYXN0PHVpbnQzMl90ICo+KCZ0KSk7CisrICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxUICo+KCZyKTsKKysgIH0gZWxzZSBpZiAoc2l6ZW9mKFQpID09IDgpIHsKKysgICAgYXV0byByID0gRkxBVEJVRkZFUlNfQllURVNXQVA2NCgqcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCAqPigmdCkpOworKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VCAqPigmcik7CisrICB9IGVsc2UgeworKyAgICBhc3NlcnQoMCk7CisrICB9CisrfQorKworKworIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgRW5kaWFuU2NhbGFyKFQgdCkgeworICAgI2lmIEZMQVRCVUZGRVJTX0xJVFRMRUVORElBTgorICAgICByZXR1cm4gdDsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzLmggYi9pbmNsdWRlL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzLmgKK2luZGV4IDkyMTZjZjQuLmY3NDlkY2IgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzLmgKKysrKyBiL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnMuaAorQEAgLTM3LDM4ICszNyw2IEBAIGlubGluZSB2b2lkIEVuZGlhbkNoZWNrKCkgeworICAgKHZvaWQpZW5kaWFudGVzdDsKKyB9CisgCistdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBFbmRpYW5Td2FwKFQgdCkgeworLSAgI2lmIGRlZmluZWQoX01TQ19WRVIpCistICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAxNiBfYnl0ZXN3YXBfdXNob3J0CistICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVAzMiBfYnl0ZXN3YXBfdWxvbmcKKy0gICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDY0IF9ieXRlc3dhcF91aW50NjQKKy0gICNlbHNlCistICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fIDwgNDA4CistICAgICAgLy8gX19idWlsdGluX2Jzd2FwMTYgd2FzIG1pc3NpbmcgcHJpb3IgdG8gR0NDIDQuOC4KKy0gICAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYoeCkgXAorLSAgICAgICAgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KF9fYnVpbHRpbl9ic3dhcDMyKHN0YXRpY19jYXN0PHVpbnQzMl90Pih4KSA8PCAxNikpCistICAgICNlbHNlCistICAgICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDE2IF9fYnVpbHRpbl9ic3dhcDE2CistICAgICNlbmRpZgorLSAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQMzIgX19idWlsdGluX2Jzd2FwMzIKKy0gICAgI2RlZmluZSBGTEFUQlVGRkVSU19CWVRFU1dBUDY0IF9fYnVpbHRpbl9ic3dhcDY0CistICAjZW5kaWYKKy0gIGlmIChzaXplb2YoVCkgPT0gMSkgeyAgIC8vIENvbXBpbGUtdGltZSBpZi10aGVuJ3MuCistICAgIHJldHVybiB0OworLSAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gMikgeworLSAgICBhdXRvIHIgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDE2KCpyZWludGVycHJldF9jYXN0PHVpbnQxNl90ICo+KCZ0KSk7CistICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxUICo+KCZyKTsKKy0gIH0gZWxzZSBpZiAoc2l6ZW9mKFQpID09IDQpIHsKKy0gICAgYXV0byByID0gRkxBVEJVRkZFUlNfQllURVNXQVAzMigqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCAqPigmdCkpOworLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VCAqPigmcik7CistICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSA4KSB7CistICAgIGF1dG8gciA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQNjQoKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QgKj4oJnQpKTsKKy0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFQgKj4oJnIpOworLSAgfSBlbHNlIHsKKy0gICAgYXNzZXJ0KDApOworLSAgfQorLX0KKy0KKyB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBGTEFUQlVGRkVSU19DT05TVEVYUFIgc2l6ZV90IEFsaWduT2YoKSB7CisgICAjaWZkZWYgX01TQ19WRVIKKyAgICAgcmV0dXJuIF9fYWxpZ25vZihUKTsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZpbGVzLzAwMDItdXNlLV9fYnVpbHRpbl9ic3dhcDE2LXdoZW4tYnVpbGRpbmctd2l0aC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZpbGVzLzAwMDItdXNlLV9fYnVpbHRpbl9ic3dhcDE2LXdoZW4tYnVpbGRpbmctd2l0aC1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjAxNTlmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmlsZXMvMDAwMi11c2UtX19idWlsdGluX2Jzd2FwMTYtd2hlbi1idWlsZGluZy13aXRoLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNjI2ZmU1ZTA0M2RlMjVlOTcwZWJkZjA2MWI4OGM2NDZmYTY4OTExMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IFNlcCAyMDE3IDEwOjA5OjMxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSB1c2UgX19idWlsdGluX2Jzd2FwMTYgd2hlbiBidWlsZGluZyB3aXRoIGNsYW5nCisKK2NsYW5nIHByZXRlbmRzIHRvIGJlIGdjYyA0LjIuMCBhbmQgdGhlcmVmb3JlIHRoZSBjb2RlIGRvZXMKK25vdCB1c2UgX19idWlsdGluX2Jzd2FwMTYgYnV0IHRyaWVzIHRvIHN5bnRoZXNpemUgaXQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKyBpbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZmxhdGJ1ZmZlcnMvYmFzZS5oIGIvaW5jbHVkZS9mbGF0YnVmZmVycy9iYXNlLmgKK2luZGV4IGM3M2ZiMmQuLjEzZThmYWMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAorKysrIGIvaW5jbHVkZS9mbGF0YnVmZmVycy9iYXNlLmgKK0BAIC0xNTYsNyArMTU2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBFbmRpYW5Td2FwKFQgdCkgeworICAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQMzIgX2J5dGVzd2FwX3Vsb25nCisgICAgICNkZWZpbmUgRkxBVEJVRkZFUlNfQllURVNXQVA2NCBfYnl0ZXN3YXBfdWludDY0CisgICAjZWxzZQorLSAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA8IDQwOAorKyAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA8IDQwOCAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgLy8gX19idWlsdGluX2Jzd2FwMTYgd2FzIG1pc3NpbmcgcHJpb3IgdG8gR0NDIDQuOC4KKyAgICAgICAjZGVmaW5lIEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYoeCkgXAorICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KF9fYnVpbHRpbl9ic3dhcDMyKHN0YXRpY19jYXN0PHVpbnQzMl90Pih4KSA8PCAxNikpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVyc18xLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuNy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZGY0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVyc18xLjcuMS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIk1lbW9yeSBFZmZpY2llbnQgU2VyaWFsaXphdGlvbiBMaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9mbGF0YnVmZmVycyIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIiCisKK1JERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWE4NzNjNTY0NWMxODRkNTFlMGY5YjM0ZTFkN2NmNTU5IgorCitTUkNSRVYgPSAiMjVhMTU5NTBmNWEyNGQ3MjE3Njg5NzM5ZWQ4ZjZkYWM2NDkxMmQ2MiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9mbGF0YnVmZmVycy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb3JyZWN0LXZlcnNpb24tZm9yLXNvLWxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZsYXRidWZmZXJzLU1vdmUtRW5kaWFuU3dhcC10ZW1wbGF0ZS10by1mbGF0YnVmZmVycy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtX19idWlsdGluX2Jzd2FwMTYtd2hlbi1idWlsZGluZy13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorCisjIE1ha2Ugc3VyZSBDKysxMSBpcyB1c2VkLCByZXF1aXJlZCBmb3IgZXhhbXBsZSBmb3IgR0NDIDQuOQorQ1hYRkxBR1MgKz0gIi1zdGQ9YysrMTEiCitCVUlMRF9DWFhGTEFHUyArPSAiLXN0ZD1jKysxMSIKKworRVhUUkFfT0VDTUFLRSArPSAiXAorICAgIC1ERkxBVEJVRkZFUlNfQlVJTERfVEVTVFM9T0ZGIFwKKyAgICAtREZMQVRCVUZGRVJTX0JVSUxEX1NIQVJFRExJQj1PTiBcCisgICAgLURQVj0ke1BWfSBcCisiCisKK2luaGVyaXQgY21ha2UKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueS1wbHVnaW5zXzEuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueS1wbHVnaW5zXzEuMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMWRkYTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnktcGx1Z2luc18xLjMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgZmFzdCBhbmQgbGlnaHR3ZWlnaHQgSURFIgotSE9NRVBBR0UgPSAiaHR0cDovL3BsdWdpbnMuZ2Vhbnkub3JnLyIKLQotTElDRU5TRV9ERUZBVUxUID0gIkdQTHYyIgotTElDRU5TRSA9ICIke0xJQ0VOU0VfREVGQVVMVH0gJiBCU0QtMi1DbGF1c2UgJiBHUEx2MyIKLQotcHl0aG9uICgpIHsKLSAgICBmb3IgcGx1Z2luIGluIGQuZ2V0VmFyKCdQTFVHSU5TJykuc3BsaXQoKToKLSAgICAgICAgaWYgJ0xJQ0VOU0VfJXMnICUgcGx1Z2luIG5vdCBpbiBkOgotICAgICAgICAgICAgZC5zZXRWYXIoJ0xJQ0VOU0VfJyArIHBsdWdpbiwgJyR7TElDRU5TRV9ERUZBVUxUfScpCi19Ci0KLURFUEVORFMgPSAiIFwKLSAgICBnZWFueSBcCi0gICAgbGlieG1sMiBcCi0gICAgbGlic291cC0yLjQgXAotICAgIGVuY2hhbnQgXAotICAgIGludGx0b29sLW5hdGl2ZSBcCi0gICAgbGliYXNzdWFuIFwKLSAgICBncGdtZSBcCi0gICAgdnRlOSBcCi0gICAgbGliZ2l0MiBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZQotCi1TUkNfVVJJID0gImh0dHA6Ly9wbHVnaW5zLmdlYW55Lm9yZy8ke1BOfS8ke1BOfS0ke1BWfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjEzZjhlNWQ5MDBiNDkxMTA1OTM4NTY0OWI4ZGRlODg3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhZGI5MDY0NWQyNzNkOTU0OWUxZmE5OWI2OWVhODdkYzFmZDYxMmY3NDY3ZWIxOGVlZTExYTZiMzBjOWJhNWIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHJtIC1mICR7U30vYnVpbGQvY2FjaGUvZ2xpYi1nZXR0ZXh0Lm00Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2VhbnkvKi5sYSAke2xpYmRpcn0vJHtQTn0vKi8qLmxhIgotCi1QTFVHSU5TICs9ICIke1BOfS1hZGRvbnMiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vYWRkb25zL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotRklMRVNfJHtQTn0tYWRkb25zID0gIiR7bGliZGlyfS9nZWFueS9hZGRvbnMuc28iCi1SREVQRU5EU18ke1BOfS1hZGRvbnMgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWF1dG9jbG9zZSIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9hdXRvY2xvc2UvQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1GSUxFU18ke1BOfS1hdXRvY2xvc2UgPSAiJHtsaWJkaXJ9L2dlYW55L2F1dG9jbG9zZS5zbyIKLVJERVBFTkRTXyR7UE59LWF1dG9jbG9zZSA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tYXV0b21hcmsiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vYXV0b21hcmsvQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1GSUxFU18ke1BOfS1hdXRvbWFyayA9ICIke2xpYmRpcn0vZ2VhbnkvYXV0b21hcmsuc28iCi1SREVQRU5EU18ke1BOfS1hdXRvbWFyayA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tY29kZW5hdiIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9jb2RlbmF2L0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotRklMRVNfJHtQTn0tY29kZW5hdiA9ICIke2xpYmRpcn0vZ2VhbnkvY29kZW5hdi5zbyIKLVJERVBFTkRTXyR7UE59LWNvZGVuYXYgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWNvbW1hbmRlciIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9jb21tYW5kZXIvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1MSUNFTlNFXyR7UE59LWNvbW1hbmRlciA9ICJHUEx2MyIKLUZJTEVTXyR7UE59LWNvbW1hbmRlciA9ICIke2xpYmRpcn0vZ2VhbnkvY29tbWFuZGVyLnNvIgotUkRFUEVORFNfJHtQTn0tY29tbWFuZGVyID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1kZWJ1Z2dlciIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9kZWJ1Z2dlci9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLUZJTEVTXyR7UE59LWRlYnVnZ2VyID0gIiR7bGliZGlyfS9nZWFueS9kZWJ1Z2dlci5zbyAke2RhdGFkaXJ9LyR7UE59L2RlYnVnZ2VyIgotUkRFUEVORFNfJHtQTn0tZGVidWdnZXIgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWRlZmluZWZvcm1hdCIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9kZWZpbmVmb3JtYXQvQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1GSUxFU18ke1BOfS1kZWZpbmVmb3JtYXQgPSAiJHtsaWJkaXJ9L2dlYW55L2RlZmluZWZvcm1hdC5zbyIKLVJERVBFTkRTXyR7UE59LWRlZmluZWZvcm1hdCA9ICIke1BOfSIKLQotIyBubyBnbm9tZSBkZXZoZWxwIGluIHNvbWUgY29tbW9uIGxheWVyCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kZXZoZWxwIgotI1BMVUdJTlMgKz0gIiR7UE59LWRldmhlbHAiCi0jTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2RldmhlbHAvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0jTElDRU5TRV8ke1BOfS1kZXZoZWxwID0gIkdQTHYzIgotI0ZJTEVTXyR7UE59LWRldmhlbHAgPSAiJHtsaWJkaXJ9L2dlYW55L2RldmhlbHAuc28iCi0jUkRFUEVORFNfJHtQTn0tZGV2aGVscCA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2VhbnljdGFncyIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWN0YWdzL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tZ2VhbnljdGFncyA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnljdGFncy5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55Y3RhZ3MgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlYW55ZG9jIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55ZG9jL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotTElDRU5TRV8ke1BOfS1nZWFueWRvYyA9ICJHUEx2MyIKLUZJTEVTXyR7UE59LWdlYW55ZG9jID0gIiR7bGliZGlyfS9nZWFueS9nZWFueWRvYy5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55ZG9jID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1nZWFueWV4dHJhc2VsIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55ZXh0cmFzZWwvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCi1GSUxFU18ke1BOfS1nZWFueWV4dHJhc2VsID0gIiR7bGliZGlyfS9nZWFueS9nZWFueWV4dHJhc2VsLnNvIgotUkRFUEVORFNfJHtQTn0tZ2VhbnlleHRyYXNlbCA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlpbnNlcnRudW0iCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlpbnNlcnRudW0vQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCi1GSUxFU18ke1BOfS1nZWFueWluc2VydG51bSA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlpbnNlcnRudW0uc28iCi1SREVQRU5EU18ke1BOfS1nZWFueWluc2VydG51bSA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlsYXRleCIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWxhdGV4L0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tZ2VhbnlsYXRleCA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlsYXRleC5zbyIKLVJERVBFTkRTXyR7UE59LWdlYW55bGF0ZXggPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlYW55bGlwc3VtIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2xpcHN1bS9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLUZJTEVTXyR7UE59LWdlYW55bGlwc3VtID0gIiR7bGliZGlyfS9nZWFueS9saXBzdW0uc28iCi1SREVQRU5EU18ke1BOfS1nZWFueWxpcHN1bSA9ICIke1BOfSIKLQotIyBubyBsdWE6IG1heCBzdXBwb3J0ZWQgdmVyc2lvbiBpcyA1LjIKLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdlYW55bHVhIgotI1BMVUdJTlMgKz0gIiR7UE59LWdlYW55bHVhIgotI0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWx1YS9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLSNGSUxFU18ke1BOfS1nZWFueWx1YSA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlsdWEuc28gJHtsaWJkaXJ9LyR7UE59L2dlYW55bHVhLyouc28iCi0jUkRFUEVORFNfJHtQTn0tZ2VhbnlsdWEgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlYW55bWFjcm8iCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnltYWNyby9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKLUZJTEVTXyR7UE59LWdlYW55bWFjcm8gPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55bWFjcm8uc28iCi1SREVQRU5EU18ke1BOfS1nZWFueW1hY3JvID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1nZWFueW1pbmlzY3JpcHQiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnltaW5pc2NyaXB0L0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotRklMRVNfJHtQTn0tZ2VhbnltaW5pc2NyaXB0ID0gIiR7bGliZGlyfS9nZWFueS9nZWFueW1pbmlzY3JpcHQuc28iCi1SREVQRU5EU18ke1BOfS1nZWFueW1pbmlzY3JpcHQgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlYW55bnVtYmVyZWRib29rbWFya3MiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnludW1iZXJlZGJvb2ttYXJrcy9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKLUZJTEVTXyR7UE59LWdlYW55bnVtYmVyZWRib29rbWFya3MgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55bnVtYmVyZWRib29rbWFya3Muc28iCi1SREVQRU5EU18ke1BOfS1nZWFueW51bWJlcmVkYm9va21hcmtzID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1nZWFueXBnIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55cGcvQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1GSUxFU18ke1BOfS1nZWFueXBnID0gIiR7bGliZGlyfS9nZWFueS9nZWFueXBnLnNvIgotUkRFUEVORFNfJHtQTn0tZ2VhbnlwZyA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlwcmoiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlwcmovQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1MSUNFTlNFXyR7UE59LWdlYW55cHJqID0gIkdQTHYzIgotRklMRVNfJHtQTn0tZ2VhbnlwcmogPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55cHJqLnNvIgotUkRFUEVORFNfJHtQTn0tZ2VhbnlwcmogPSAiJHtQTn0iCi0KLSMgbm8gZ25vbWUgcHlndGsKLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdlYW55cHkiCi0jUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlweSIKLSNMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlweS9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLSNGSUxFU18ke1BOfS1nZWFueXB5ID0gIiR7bGliZGlyfS9nZWFueS9nZWFueXB5LnNvIgotI1JERVBFTkRTXyR7UE59LWdlYW55cHkgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdlYW55dmMiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2Vhbnl2Yy9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKLUZJTEVTXyR7UE59LWdlYW55dmMgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55dmMuc28iCi1SREVQRU5EU18ke1BOfS1nZWFueXZjID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1nZW5pdXNwYXN0ZSIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZW5pdXNwYXN0ZS9DT1BZSU5HO21kNT1iZmMyMDMyNjlmODg2MmViZmMxMTk4Y2RjODA5YTk1YSIKLUZJTEVTXyR7UE59LWdlbml1c3Bhc3RlID0gIiR7bGliZGlyfS9nZWFueS9nZW5pdXNwYXN0ZS5zbyAke2RhdGFkaXJ9LyR7UE59L2dlbml1c3Bhc3RlIgotUkRFUEVORFNfJHtQTn0tZ2VuaXVzcGFzdGUgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LWdpdC1jaGFuZ2ViYXIiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2l0LWNoYW5nZWJhci9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLUxJQ0VOU0VfJHtQTn0tZ2l0LWNoYW5nZWJhciA9ICJHUEx2MyIKLUZJTEVTXyR7UE59LWdpdC1jaGFuZ2ViYXIgPSAiJHtsaWJkaXJ9L2dlYW55L2dpdC1jaGFuZ2ViYXIuc28iCi1SREVQRU5EU18ke1BOfS1naXQtY2hhbmdlYmFyID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS1saW5lb3BlcmF0aW9ucyIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9saW5lb3BlcmF0aW9ucy9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKLUZJTEVTXyR7UE59LWxpbmVvcGVyYXRpb25zID0gIiR7bGliZGlyfS9nZWFueS9saW5lb3BlcmF0aW9ucy5zbyIKLVJERVBFTkRTXyR7UE59LWxpbmVvcGVyYXRpb25zID0gIiR7UE59IgotCi0jIG5vIG1hcmtkb3duIC0gYXZvaWQgZmxvYXRpbmcgZGVwZW5kZW5jaWVzCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcGVnLW1hcmtkb3duIgotI1BMVUdJTlMgKz0gIiR7UE59LW1hcmtkb3duIgotI0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9tYXJrZG93bi9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLSNGSUxFU18ke1BOfS1tYXJrZG93biA9ICIke2xpYmRpcn0vZ2VhbnkvbWFya2Rvd24uc28iCi0jUkRFUEVORFNfJHtQTn0tbWFya2Rvd24gPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LW11bHRpdGVybSIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9tdWx0aXRlcm0vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1GSUxFU18ke1BOfS1tdWx0aXRlcm0gPSAiJHtsaWJkaXJ9L2dlYW55L211bHRpdGVybS5zbyIKLVJERVBFTkRTXyR7UE59LW11bHRpdGVybSA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tb3ZlcnZpZXciCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vb3ZlcnZpZXcvb3ZlcnZpZXcvb3ZlcnZpZXdwbHVnaW4uYztiZWdpbmxpbmU9NDtlbmRsaW5lPTIwO21kNT0xYWEzMzUyMjkxNmNkZWI0NmNjY2FjMGM2MjlkYTBkMCIKLUZJTEVTXyR7UE59LW92ZXJ2aWV3ID0gIiR7bGliZGlyfS9nZWFueS9vdmVydmlldy5zbyAke2RhdGFkaXJ9LyR7UE59L292ZXJ2aWV3IgotUkRFUEVORFNfJHtQTn0tb3ZlcnZpZXcgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LXBhaXJ0YWdoaWdobGlnaHRlciIKLUxJQ0VOU0VfJHtQTn0tcGFpcnRhZ2hpZ2hsaWdodGVyID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9wYWlydGFnaGlnaGxpZ2h0ZXIvQ09QWUlORzttZDU9ZDZkOTI3NTI1YTYxMmIzYThkYmViYzRiMmU5YjQ3YzEiCi1GSUxFU18ke1BOfS1wYWlydGFnaGlnaGxpZ2h0ZXIgPSAiJHtsaWJkaXJ9L2dlYW55L3BhaXJ0YWdoaWdobGlnaHRlci5zbyIKLVJERVBFTkRTXyR7UE59LXBhaXJ0YWdoaWdobGlnaHRlciA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tcG9oZWxwZXIiCi1MSUNFTlNFXyR7UE59LXBvaGVscGVyID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3BvaGVscGVyL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotRklMRVNfJHtQTn0tcG9oZWxwZXIgPSAiJHtsaWJkaXJ9L2dlYW55L3BvaGVscGVyLnNvIgotUkRFUEVORFNfJHtQTn0tcG9oZWxwZXIgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LXByZXR0eS1wcmludGVyIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3ByZXR0eS1wcmludGVyL3NyYy9QcmV0dHlQcmludGVyLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9MTY2NTExNWMyZmFkYjE3YzFiNTNjZGI0ZTQzYjI0NDAiCi1GSUxFU18ke1BOfS1wcmV0dHktcHJpbnRlciA9ICIke2xpYmRpcn0vZ2VhbnkvcHJldHR5LXByaW50ZXIuc28iCi1SREVQRU5EU18ke1BOfS1wcmV0dHktcHJpbnRlciA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tcHJvamVjdG9yZ2FuaXplciIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9wcm9qZWN0b3JnYW5pemVyL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tcHJvamVjdG9yZ2FuaXplciA9ICIke2xpYmRpcn0vZ2VhbnkvcHJvamVjdG9yZ2FuaXplci5zbyIKLVJERVBFTkRTXyR7UE59LXByb2plY3Rvcmdhbml6ZXIgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LXNjb3BlIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3Njb3BlL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tc2NvcGUgPSAiJHtsaWJkaXJ9L2dlYW55L3Njb3BlLnNvIgotUkRFUEVORFNfJHtQTn0tc2NvcGUgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LXNlbmRtYWlsIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3NlbmRtYWlsL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgotRklMRVNfJHtQTn0tc2VuZG1haWwgPSAiJHtsaWJkaXJ9L2dlYW55L3NlbmRtYWlsLnNvIgotUkRFUEVORFNfJHtQTn0tc2VuZG1haWwgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LXNoaWZ0Y29sdW1uIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3NoaWZ0Y29sdW1uL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotRklMRVNfJHtQTn0tc2hpZnRjb2x1bW4gPSAiJHtsaWJkaXJ9L2dlYW55L3NoaWZ0Y29sdW1uLnNvIgotUkRFUEVORFNfJHtQTn0tc2hpZnRjb2x1bW4gPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LXNwZWxsY2hlY2siCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vc3BlbGxjaGVjay9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLUZJTEVTXyR7UE59LXNwZWxsY2hlY2sgPSAiJHtsaWJkaXJ9L2dlYW55L3NwZWxsY2hlY2suc28iCi1SREVQRU5EU18ke1BOfS1zcGVsbGNoZWNrID0gIiR7UE59IgotCi1QTFVHSU5TICs9ICIke1BOfS10YWJsZWNvbnZlcnQiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vdGFibGVjb252ZXJ0L0NPUFlJTkc7bWQ1PTY3NTM2ODY4NzhkMDkwYTFmM2Y5NDQ1NjYxZDNkZmJjIgotRklMRVNfJHtQTn0tdGFibGVjb252ZXJ0ID0gIiR7bGliZGlyfS9nZWFueS90YWJsZWNvbnZlcnQuc28iCi1SREVQRU5EU18ke1BOfS10YWJsZWNvbnZlcnQgPSAiJHtQTn0iCi0KLVBMVUdJTlMgKz0gIiR7UE59LXRyZWVicm93c2VyIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3RyZWVicm93c2VyL1JFQURNRTtiZWdpbmxpbmU9Njc7ZW5kbGluZT02NzttZDU9NTJmOTA4NTdmZDFhOTY3MjExMWU0NzJkZDA1NmEwZDgiCi1GSUxFU18ke1BOfS10cmVlYnJvd3NlciA9ICIke2xpYmRpcn0vZ2VhbnkvdHJlZWJyb3dzZXIuc28iCi1SREVQRU5EU18ke1BOfS10cmVlYnJvd3NlciA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0tdXBkYXRlY2hlY2tlciIKLUxJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly91cGRhdGVjaGVja2VyL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotRklMRVNfJHtQTn0tdXBkYXRlY2hlY2tlciA9ICIke2xpYmRpcn0vZ2VhbnkvdXBkYXRlY2hlY2tlci5zbyIKLVJERVBFTkRTXyR7UE59LXVwZGF0ZWNoZWNrZXIgPSAiJHtQTn0iCi0KLSMgbm8gd2Via2l0IC0gbGFzdHMgYWdlcyBhbmQgaXMgbm90IHByb3Blcmx5IGRldGVjdGVkCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtd2ViaGVscGVyIgotI1BMVUdJTlMgKz0gIiR7UE59LXdlYmhlbHBlciIKLSNMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vd2ViaGVscGVyL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotI0xJQ0VOU0VfJHtQTn0td2ViaGVscGVyID0gIkdQTHYzIgotI0ZJTEVTXyR7UE59LXdlYmhlbHBlciA9ICIke2xpYmRpcn0vZ2Vhbnkvd2ViaGVscGVyLnNvIgotI1JERVBFTkRTXyR7UE59LXdlYmhlbHBlciA9ICIke1BOfSIKLQotUExVR0lOUyArPSAiJHtQTn0teG1sc25pcHBldHMiCi1MSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8veG1sc25pcHBldHMvQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCi1GSUxFU18ke1BOfS14bWxzbmlwcGV0cyA9ICIke2xpYmRpcn0vZ2VhbnkveG1sc25pcHBldHMuc28iCi1SREVQRU5EU18ke1BOfS14bWxzbmlwcGV0cyA9ICIke1BOfSIKLQotUEFDS0FHRVMgPSsgIiR7UExVR0lOU30iCi1SREVQRU5EU18ke1BOfSA9ICIke1BMVUdJTlN9IgotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55LXBsdWdpbnNfMS4zMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55LXBsdWdpbnNfMS4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZlODYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnktcGx1Z2luc18xLjMxLmJiCkBAIC0wLDAgKzEsMjY4IEBACitERVNDUklQVElPTiA9ICJBIGZhc3QgYW5kIGxpZ2h0d2VpZ2h0IElERSIKK0hPTUVQQUdFID0gImh0dHA6Ly9wbHVnaW5zLmdlYW55Lm9yZy8iCisKK0xJQ0VOU0VfREVGQVVMVCA9ICJHUEx2MiIKK0xJQ0VOU0UgPSAiJHtMSUNFTlNFX0RFRkFVTFR9ICYgQlNELTItQ2xhdXNlICYgR1BMdjMiCisKK3B5dGhvbiAoKSB7CisgICAgZm9yIHBsdWdpbiBpbiBkLmdldFZhcignUExVR0lOUycpLnNwbGl0KCk6CisgICAgICAgIGlmICdMSUNFTlNFXyVzJyAlIHBsdWdpbiBub3QgaW4gZDoKKyAgICAgICAgICAgIGQuc2V0VmFyKCdMSUNFTlNFXycgKyBwbHVnaW4sICcke0xJQ0VOU0VfREVGQVVMVH0nKQorfQorCitERVBFTkRTID0gIiBcCisgICAgZ2VhbnkgXAorICAgIGxpYnhtbDIgXAorICAgIGxpYnNvdXAtMi40IFwKKyAgICBlbmNoYW50IFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgXAorICAgIGxpYmFzc3VhbiBcCisgICAgZ3BnbWUgXAorICAgIHZ0ZTkgXAorICAgIGxpYmdpdDIgXAorIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWljb24tY2FjaGUKKworU1JDX1VSSSA9ICJodHRwOi8vcGx1Z2lucy5nZWFueS5vcmcvJHtQTn0vJHtQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MDhmOTA0OGI3N2ZkOTcwNDU2OWVkMmJhMTJhNTZlOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NmJkOWU4MDNkYjVhNjI2Yjg2NjY5ZjA4MzMwY2Y5NWI4Y2MzNTA1N2ExY2RmNjU3NTliYzAwYWVmMTIwZTI1IgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBybSAtZiAke1N9L2J1aWxkL2NhY2hlL2dsaWItZ2V0dGV4dC5tNAorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dlYW55LyoubGEgJHtsaWJkaXJ9LyR7UE59LyovKi5sYSIKKworUExVR0lOUyArPSAiJHtQTn0tYWRkb25zIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2FkZG9ucy9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKK0ZJTEVTXyR7UE59LWFkZG9ucyA9ICIke2xpYmRpcn0vZ2VhbnkvYWRkb25zLnNvIgorUkRFUEVORFNfJHtQTn0tYWRkb25zID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1hdXRvY2xvc2UiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vYXV0b2Nsb3NlL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorRklMRVNfJHtQTn0tYXV0b2Nsb3NlID0gIiR7bGliZGlyfS9nZWFueS9hdXRvY2xvc2Uuc28iCitSREVQRU5EU18ke1BOfS1hdXRvY2xvc2UgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWF1dG9tYXJrIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2F1dG9tYXJrL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorRklMRVNfJHtQTn0tYXV0b21hcmsgPSAiJHtsaWJkaXJ9L2dlYW55L2F1dG9tYXJrLnNvIgorUkRFUEVORFNfJHtQTn0tYXV0b21hcmsgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWNvZGVuYXYiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vY29kZW5hdi9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0ZJTEVTXyR7UE59LWNvZGVuYXYgPSAiJHtsaWJkaXJ9L2dlYW55L2NvZGVuYXYuc28iCitSREVQRU5EU18ke1BOfS1jb2RlbmF2ID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1jb21tYW5kZXIiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vY29tbWFuZGVyL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorTElDRU5TRV8ke1BOfS1jb21tYW5kZXIgPSAiR1BMdjMiCitGSUxFU18ke1BOfS1jb21tYW5kZXIgPSAiJHtsaWJkaXJ9L2dlYW55L2NvbW1hbmRlci5zbyIKK1JERVBFTkRTXyR7UE59LWNvbW1hbmRlciA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZGVidWdnZXIiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZGVidWdnZXIvQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCitGSUxFU18ke1BOfS1kZWJ1Z2dlciA9ICIke2xpYmRpcn0vZ2VhbnkvZGVidWdnZXIuc28gJHtkYXRhZGlyfS8ke1BOfS9kZWJ1Z2dlciIKK1JERVBFTkRTXyR7UE59LWRlYnVnZ2VyID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1kZWZpbmVmb3JtYXQiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZGVmaW5lZm9ybWF0L0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorRklMRVNfJHtQTn0tZGVmaW5lZm9ybWF0ID0gIiR7bGliZGlyfS9nZWFueS9kZWZpbmVmb3JtYXQuc28iCitSREVQRU5EU18ke1BOfS1kZWZpbmVmb3JtYXQgPSAiJHtQTn0iCisKKyMgbm8gZ25vbWUgZGV2aGVscCBpbiBzb21lIGNvbW1vbiBsYXllcgorRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZGV2aGVscCIKKyNQTFVHSU5TICs9ICIke1BOfS1kZXZoZWxwIgorI0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9kZXZoZWxwL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorI0xJQ0VOU0VfJHtQTn0tZGV2aGVscCA9ICJHUEx2MyIKKyNGSUxFU18ke1BOfS1kZXZoZWxwID0gIiR7bGliZGlyfS9nZWFueS9kZXZoZWxwLnNvIgorI1JERVBFTkRTXyR7UE59LWRldmhlbHAgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55Y3RhZ3MiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnljdGFncy9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKK0ZJTEVTXyR7UE59LWdlYW55Y3RhZ3MgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55Y3RhZ3Muc28iCitSREVQRU5EU18ke1BOfS1nZWFueWN0YWdzID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZWFueWRvYyIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWRvYy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0xJQ0VOU0VfJHtQTn0tZ2Vhbnlkb2MgPSAiR1BMdjMiCitGSUxFU18ke1BOfS1nZWFueWRvYyA9ICIke2xpYmRpcn0vZ2VhbnkvZ2Vhbnlkb2Muc28iCitSREVQRU5EU18ke1BOfS1nZWFueWRvYyA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlleHRyYXNlbCIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueWV4dHJhc2VsL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgorRklMRVNfJHtQTn0tZ2VhbnlleHRyYXNlbCA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlleHRyYXNlbC5zbyIKK1JERVBFTkRTXyR7UE59LWdlYW55ZXh0cmFzZWwgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55aW5zZXJ0bnVtIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55aW5zZXJ0bnVtL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgorRklMRVNfJHtQTn0tZ2VhbnlpbnNlcnRudW0gPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55aW5zZXJ0bnVtLnNvIgorUkRFUEVORFNfJHtQTn0tZ2VhbnlpbnNlcnRudW0gPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55bGF0ZXgiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlsYXRleC9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKK0ZJTEVTXyR7UE59LWdlYW55bGF0ZXggPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55bGF0ZXguc28iCitSREVQRU5EU18ke1BOfS1nZWFueWxhdGV4ID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZWFueWxpcHN1bSIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9saXBzdW0vQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCitGSUxFU18ke1BOfS1nZWFueWxpcHN1bSA9ICIke2xpYmRpcn0vZ2VhbnkvbGlwc3VtLnNvIgorUkRFUEVORFNfJHtQTn0tZ2VhbnlsaXBzdW0gPSAiJHtQTn0iCisKKyMgbm8gbHVhOiBtYXggc3VwcG9ydGVkIHZlcnNpb24gaXMgNS4yCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nZWFueWx1YSIKKyNQTFVHSU5TICs9ICIke1BOfS1nZWFueWx1YSIKKyNMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VhbnlsdWEvQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCisjRklMRVNfJHtQTn0tZ2VhbnlsdWEgPSAiJHtsaWJkaXJ9L2dlYW55L2dlYW55bHVhLnNvICR7bGliZGlyfS8ke1BOfS9nZWFueWx1YS8qLnNvIgorI1JERVBFTkRTXyR7UE59LWdlYW55bHVhID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZWFueW1hY3JvIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55bWFjcm8vQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCitGSUxFU18ke1BOfS1nZWFueW1hY3JvID0gIiR7bGliZGlyfS9nZWFueS9nZWFueW1hY3JvLnNvIgorUkRFUEVORFNfJHtQTn0tZ2VhbnltYWNybyA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZ2VhbnltaW5pc2NyaXB0IgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55bWluaXNjcmlwdC9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKK0ZJTEVTXyR7UE59LWdlYW55bWluaXNjcmlwdCA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnltaW5pc2NyaXB0LnNvIgorUkRFUEVORFNfJHtQTn0tZ2VhbnltaW5pc2NyaXB0ID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZWFueW51bWJlcmVkYm9va21hcmtzIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55bnVtYmVyZWRib29rbWFya3MvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCitGSUxFU18ke1BOfS1nZWFueW51bWJlcmVkYm9va21hcmtzID0gIiR7bGliZGlyfS9nZWFueS9nZWFueW51bWJlcmVkYm9va21hcmtzLnNvIgorUkRFUEVORFNfJHtQTn0tZ2VhbnludW1iZXJlZGJvb2ttYXJrcyA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZ2VhbnlwZyIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9nZWFueXBnL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorRklMRVNfJHtQTn0tZ2VhbnlwZyA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlwZy5zbyIKK1JERVBFTkRTXyR7UE59LWdlYW55cGcgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LWdlYW55cHJqIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55cHJqL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorTElDRU5TRV8ke1BOfS1nZWFueXByaiA9ICJHUEx2MyIKK0ZJTEVTXyR7UE59LWdlYW55cHJqID0gIiR7bGliZGlyfS9nZWFueS9nZWFueXByai5zbyIKK1JERVBFTkRTXyR7UE59LWdlYW55cHJqID0gIiR7UE59IgorCisjIG5vIGdub21lIHB5Z3RrCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nZWFueXB5IgorI1BMVUdJTlMgKz0gIiR7UE59LWdlYW55cHkiCisjTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55cHkvQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisjRklMRVNfJHtQTn0tZ2VhbnlweSA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VhbnlweS5zbyIKKyNSREVQRU5EU18ke1BOfS1nZWFueXB5ID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1nZWFueXZjIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dlYW55dmMvQ09QWUlORzttZDU9YzEwN2NmNzU0NTUwZTY1NzU1YzQyOTg1YTVkNGU5YzkiCitGSUxFU18ke1BOfS1nZWFueXZjID0gIiR7bGliZGlyfS9nZWFueS9nZWFueXZjLnNvIgorUkRFUEVORFNfJHtQTn0tZ2Vhbnl2YyA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tZ2VuaXVzcGFzdGUiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vZ2VuaXVzcGFzdGUvQ09QWUlORzttZDU9YmZjMjAzMjY5Zjg4NjJlYmZjMTE5OGNkYzgwOWE5NWEiCitGSUxFU18ke1BOfS1nZW5pdXNwYXN0ZSA9ICIke2xpYmRpcn0vZ2VhbnkvZ2VuaXVzcGFzdGUuc28gJHtkYXRhZGlyfS8ke1BOfS9nZW5pdXNwYXN0ZSIKK1JERVBFTkRTXyR7UE59LWdlbml1c3Bhc3RlID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1naXQtY2hhbmdlYmFyIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2dpdC1jaGFuZ2ViYXIvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitMSUNFTlNFXyR7UE59LWdpdC1jaGFuZ2ViYXIgPSAiR1BMdjMiCitGSUxFU18ke1BOfS1naXQtY2hhbmdlYmFyID0gIiR7bGliZGlyfS9nZWFueS9naXQtY2hhbmdlYmFyLnNvIgorUkRFUEVORFNfJHtQTn0tZ2l0LWNoYW5nZWJhciA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0ta2V5cmVjb3JkIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL2tleXJlY29yZC9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0ZJTEVTXyR7UE59LWtleXJlY29yZCA9ICIke2xpYmRpcn0vZ2Vhbnkva2V5cmVjb3JkLnNvIgorUkRFUEVORFNfJHtQTn0ta2V5cmVjb3JkID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS1saW5lb3BlcmF0aW9ucyIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9saW5lb3BlcmF0aW9ucy9DT1BZSU5HO21kNT1jMTA3Y2Y3NTQ1NTBlNjU3NTVjNDI5ODVhNWQ0ZTljOSIKK0ZJTEVTXyR7UE59LWxpbmVvcGVyYXRpb25zID0gIiR7bGliZGlyfS9nZWFueS9saW5lb3BlcmF0aW9ucy5zbyIKK1JERVBFTkRTXyR7UE59LWxpbmVvcGVyYXRpb25zID0gIiR7UE59IgorCisjIG5vIG1hcmtkb3duIC0gYXZvaWQgZmxvYXRpbmcgZGVwZW5kZW5jaWVzCitFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcGVnLW1hcmtkb3duIgorI1BMVUdJTlMgKz0gIiR7UE59LW1hcmtkb3duIgorI0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9tYXJrZG93bi9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKyNGSUxFU18ke1BOfS1tYXJrZG93biA9ICIke2xpYmRpcn0vZ2VhbnkvbWFya2Rvd24uc28iCisjUkRFUEVORFNfJHtQTn0tbWFya2Rvd24gPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LW11bHRpdGVybSIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9tdWx0aXRlcm0vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCitGSUxFU18ke1BOfS1tdWx0aXRlcm0gPSAiJHtsaWJkaXJ9L2dlYW55L211bHRpdGVybS5zbyIKK1JERVBFTkRTXyR7UE59LW11bHRpdGVybSA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tb3ZlcnZpZXciCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vb3ZlcnZpZXcvb3ZlcnZpZXcvb3ZlcnZpZXdwbHVnaW4uYztiZWdpbmxpbmU9NDtlbmRsaW5lPTIwO21kNT0xYWEzMzUyMjkxNmNkZWI0NmNjY2FjMGM2MjlkYTBkMCIKK0ZJTEVTXyR7UE59LW92ZXJ2aWV3ID0gIiR7bGliZGlyfS9nZWFueS9vdmVydmlldy5zbyAke2RhdGFkaXJ9LyR7UE59L292ZXJ2aWV3IgorUkRFUEVORFNfJHtQTn0tb3ZlcnZpZXcgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LXBhaXJ0YWdoaWdobGlnaHRlciIKK0xJQ0VOU0VfJHtQTn0tcGFpcnRhZ2hpZ2hsaWdodGVyID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9wYWlydGFnaGlnaGxpZ2h0ZXIvQ09QWUlORzttZDU9ZDZkOTI3NTI1YTYxMmIzYThkYmViYzRiMmU5YjQ3YzEiCitGSUxFU18ke1BOfS1wYWlydGFnaGlnaGxpZ2h0ZXIgPSAiJHtsaWJkaXJ9L2dlYW55L3BhaXJ0YWdoaWdobGlnaHRlci5zbyIKK1JERVBFTkRTXyR7UE59LXBhaXJ0YWdoaWdobGlnaHRlciA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tcG9oZWxwZXIiCitMSUNFTlNFXyR7UE59LXBvaGVscGVyID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3BvaGVscGVyL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorRklMRVNfJHtQTn0tcG9oZWxwZXIgPSAiJHtsaWJkaXJ9L2dlYW55L3BvaGVscGVyLnNvIgorUkRFUEVORFNfJHtQTn0tcG9oZWxwZXIgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LXByZXR0eS1wcmludGVyIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3ByZXR0eS1wcmludGVyL3NyYy9QcmV0dHlQcmludGVyLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9MTY2NTExNWMyZmFkYjE3YzFiNTNjZGI0ZTQzYjI0NDAiCitGSUxFU18ke1BOfS1wcmV0dHktcHJpbnRlciA9ICIke2xpYmRpcn0vZ2VhbnkvcHJldHR5LXByaW50ZXIuc28iCitSREVQRU5EU18ke1BOfS1wcmV0dHktcHJpbnRlciA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tcHJvamVjdG9yZ2FuaXplciIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly9wcm9qZWN0b3JnYW5pemVyL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgorRklMRVNfJHtQTn0tcHJvamVjdG9yZ2FuaXplciA9ICIke2xpYmRpcn0vZ2VhbnkvcHJvamVjdG9yZ2FuaXplci5zbyIKK1JERVBFTkRTXyR7UE59LXByb2plY3Rvcmdhbml6ZXIgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LXNjb3BlIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3Njb3BlL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgorRklMRVNfJHtQTn0tc2NvcGUgPSAiJHtsaWJkaXJ9L2dlYW55L3Njb3BlLnNvIgorUkRFUEVORFNfJHtQTn0tc2NvcGUgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LXNlbmRtYWlsIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3NlbmRtYWlsL0NPUFlJTkc7bWQ1PWMxMDdjZjc1NDU1MGU2NTc1NWM0Mjk4NWE1ZDRlOWM5IgorRklMRVNfJHtQTn0tc2VuZG1haWwgPSAiJHtsaWJkaXJ9L2dlYW55L3NlbmRtYWlsLnNvIgorUkRFUEVORFNfJHtQTn0tc2VuZG1haWwgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LXNoaWZ0Y29sdW1uIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3NoaWZ0Y29sdW1uL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorRklMRVNfJHtQTn0tc2hpZnRjb2x1bW4gPSAiJHtsaWJkaXJ9L2dlYW55L3NoaWZ0Y29sdW1uLnNvIgorUkRFUEVORFNfJHtQTn0tc2hpZnRjb2x1bW4gPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LXNwZWxsY2hlY2siCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vc3BlbGxjaGVjay9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKK0ZJTEVTXyR7UE59LXNwZWxsY2hlY2sgPSAiJHtsaWJkaXJ9L2dlYW55L3NwZWxsY2hlY2suc28iCitSREVQRU5EU18ke1BOfS1zcGVsbGNoZWNrID0gIiR7UE59IgorCitQTFVHSU5TICs9ICIke1BOfS10YWJsZWNvbnZlcnQiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vdGFibGVjb252ZXJ0L0NPUFlJTkc7bWQ1PTY3NTM2ODY4NzhkMDkwYTFmM2Y5NDQ1NjYxZDNkZmJjIgorRklMRVNfJHtQTn0tdGFibGVjb252ZXJ0ID0gIiR7bGliZGlyfS9nZWFueS90YWJsZWNvbnZlcnQuc28iCitSREVQRU5EU18ke1BOfS10YWJsZWNvbnZlcnQgPSAiJHtQTn0iCisKK1BMVUdJTlMgKz0gIiR7UE59LXRyZWVicm93c2VyIgorTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL3RyZWVicm93c2VyL1JFQURNRTtiZWdpbmxpbmU9Njc7ZW5kbGluZT02NzttZDU9NTJmOTA4NTdmZDFhOTY3MjExMWU0NzJkZDA1NmEwZDgiCitGSUxFU18ke1BOfS10cmVlYnJvd3NlciA9ICIke2xpYmRpcn0vZ2VhbnkvdHJlZWJyb3dzZXIuc28iCitSREVQRU5EU18ke1BOfS10cmVlYnJvd3NlciA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0tdXBkYXRlY2hlY2tlciIKK0xJQ19GSUxFU19DSEtTVU0gKz0gImZpbGU6Ly91cGRhdGVjaGVja2VyL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgorRklMRVNfJHtQTn0tdXBkYXRlY2hlY2tlciA9ICIke2xpYmRpcn0vZ2VhbnkvdXBkYXRlY2hlY2tlci5zbyIKK1JERVBFTkRTXyR7UE59LXVwZGF0ZWNoZWNrZXIgPSAiJHtQTn0iCisKKyMgbm8gd2Via2l0IC0gbGFzdHMgYWdlcyBhbmQgaXMgbm90IHByb3Blcmx5IGRldGVjdGVkCitFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtd2ViaGVscGVyIgorI1BMVUdJTlMgKz0gIiR7UE59LXdlYmhlbHBlciIKKyNMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8vd2ViaGVscGVyL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorI0xJQ0VOU0VfJHtQTn0td2ViaGVscGVyID0gIkdQTHYzIgorI0ZJTEVTXyR7UE59LXdlYmhlbHBlciA9ICIke2xpYmRpcn0vZ2Vhbnkvd2ViaGVscGVyLnNvIgorI1JERVBFTkRTXyR7UE59LXdlYmhlbHBlciA9ICIke1BOfSIKKworUExVR0lOUyArPSAiJHtQTn0teG1sc25pcHBldHMiCitMSUNfRklMRVNfQ0hLU1VNICs9ICJmaWxlOi8veG1sc25pcHBldHMvQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCitGSUxFU18ke1BOfS14bWxzbmlwcGV0cyA9ICIke2xpYmRpcn0vZ2VhbnkveG1sc25pcHBldHMuc28iCitSREVQRU5EU18ke1BOfS14bWxzbmlwcGV0cyA9ICIke1BOfSIKKworUEFDS0FHRVMgPSsgIiR7UExVR0lOU30iCitSREVQRU5EU18ke1BOfSA9ICIke1BMVUdJTlN9IgorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMxNmVhNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjMwLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkEgZmFzdCBhbmQgbGlnaHR3ZWlnaHQgSURFIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nZWFueS5vcmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJkN2IyYzk5NGFmMjFkMzE4YmQyY2QzYjNmODBjMmQ1IgotCi1ERVBFTkRTID0gImd0aysgbGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSBweXRob24zLWRvY3V0aWxzLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZSBnZXR0ZXh0Ci0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmdlYW55Lm9yZy8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjc1MDgxYjYwMDU2MGM1YzgzNjZlZGEwZTFiOGNjNTMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBhYzM2MGYxZjNkNmMyODc5MGE4MWQ1NzAyNTJhN2Q0MDQyMWY2ZTFkOGU1YThkNjUzNzU2YmQwNDFkODg0OTEiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWh0bWwtZG9jcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMzZlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjMxLmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiQSBmYXN0IGFuZCBsaWdodHdlaWdodCBJREUiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdlYW55Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmQ3YjJjOTk0YWYyMWQzMThiZDJjZDNiM2Y4MGMyZDUiCisKK0RFUEVORFMgPSAiZ3RrKyBsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlIGdldHRleHQKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ2Vhbnkub3JnLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMzg2MDAwYmU2YjI2OTcyYzZhNjk5OTM5YzM3Y2RhMzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzBmZGI5MDZiYjc2YzQyNTFhOGJjZjgzZWUyNjdkYjI4YzI2ZWY2YWI4Njc2NjhhNzgyY2VjMTE2NGEzYWJhNSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtaHRtbC1kb2NzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUvcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZS9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGE4NzE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUvcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA0MmVmYzk0YzExZDUxMGI0MWQ4Y2YzNDA3ZTFjMzkwMGViNTJiNjAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA0IEp1biAyMDE1IDE2OjI4OjAyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgKFlFTFBfSEVMUF9SVUxFUykKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGhlbHAvTWFrZWZpbGUuYW0gfCAyIC0tCisgaGVscC9NYWtlZmlsZS5pbiB8IDIgLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9oZWxwL01ha2VmaWxlLmFtIGIvaGVscC9NYWtlZmlsZS5hbQoraW5kZXggNTBjMGU4NC4uNWM1ZDJlOSAxMDA2NDQKKy0tLSBhL2hlbHAvTWFrZWZpbGUuYW0KKysrKyBiL2hlbHAvTWFrZWZpbGUuYW0KK0BAIC0xLDUgKzEsMyBAQAorLUBZRUxQX0hFTFBfUlVMRVNACistCisgSEVMUF9JRCA9IGdsYWRlCisgCisgSEVMUF9GSUxFUyA9IFwKK2RpZmYgLS1naXQgYS9oZWxwL01ha2VmaWxlLmluIGIvaGVscC9NYWtlZmlsZS5pbgoraW5kZXggNjk3OGVhNS4uZTFjN2QzYiAxMDA2NDQKKy0tLSBhL2hlbHAvTWFrZWZpbGUuaW4KKysrKyBiL2hlbHAvTWFrZWZpbGUuaW4KK0BAIC01MjEsOCArNTIxLDYgQEAgdW5pbnN0YWxsLWFtOgorIAorIC5QUkVDSU9VUzogTWFrZWZpbGUKKyAKKy1AWUVMUF9IRUxQX1JVTEVTQAorLQorICMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSB0byBub3QgZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisgIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCisgLk5PRVhQT1JUOgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9maWxlcy8wMDAxLWdub21lLWRvYy11dGlscy5tYWtlLXN5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2ZpbGVzLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAxLWdub21lLWRvYy11dGlscy5tYWtlLXN5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9maWxlcy8wMDAyLWZpeC1nY2MtNi1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAyLWZpeC1nY2MtNi1idWlsZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZmlsZXMvMDAwMi1maXgtZ2NjLTYtYnVpbGQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAyLWZpeC1nY2MtNi1idWlsZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzM2I2ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIwLjAuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJHbGFkZSAtIEEgVXNlciBJbnRlcmZhY2UgRGVzaWduZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ25hc2giCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWFiZTg3NTkxY2I4YWUwZjNjNjhiZTY5NzdiYjU1MjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTlhYzJlN2NmZjFkZGFmNDhiNmVhYjYwMjhmMjNlZjg4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9MjUyODkwZDllZWUyNmFhYjdiNDMyZThiOGE2MTY0NzUiCitERVBFTkRTID0gImd0aysgZ3RrKzMgZ2xpYi0yLjAgbGlieG1sMiBpbnRsdG9vbC1uYXRpdmUgXAorICAgICAgICAgICBnbm9tZS1jb21tb24tbmF0aXZlIFwKKyIKKworCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2dsYWRlLzMuMjAvZ2xhZGUtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS15ZWxwLWhlbHAtcnVsZXMtdmFyLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOTk2NGEyZGExNGM1Zjg0NWVhZTM2Mzg4OTU4NmNhNDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODJkOTZkY2E1ZGVjNDBlZTM0ZTJmNDFkNDljMTNiNGVhNTBkYThmMzJhM2E0OWNhMmRhODAyZmYxNGRjMThmZSIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbWFuLXBhZ2VzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8qICR7bGliZGlyfS9nbGFkZS9tb2R1bGVzL2xpYmdsYWRlZ3RrLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy9saWJnbGFkZWd0ay5sYSIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvLmRlYnVnL2xpYmdsYWRlZ3RrLnNvIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmLW5nLzAwMDEtRml4LXByaW50ZC1mb3JtYXR0aW5nLXN0cmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmLW5nLzAwMDEtRml4LXByaW50ZC1mb3JtYXR0aW5nLXN0cmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI5YWZkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYtbmcvMDAwMS1GaXgtcHJpbnRkLWZvcm1hdHRpbmctc3RyaW5ncy5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDg2YjRkMzk4ZGJiOTVlMjQzN2I3MGViYTNiMzBlOTk1ZWM5YmU1MDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBBdWcgMjAxNyAyMDo0Nzo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXggcHJpbnRkIGZvcm1hdHRpbmcgc3RyaW5ncworCitGaXhlcworZXJyb3I6IGZvcm1hdCBzdHJpbmcgaXMgbm90IGEgc3RyaW5nIGxpdGVyYWwgKHBvdGVudGlhbGx5IGluc2VjdXJlKSBbLVdlcnJvciwtV2Zvcm1hdC1zZWN1cml0eV0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvaXBmaWx0ZXIuYyB8IDIgKy0KKyBzcmMvb3RocHRhYi5jICB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2lwZmlsdGVyLmMgYi9zcmMvaXBmaWx0ZXIuYworaW5kZXggZWIxN2VjNy4uOGM3NmU0YyAxMDA2NDQKKy0tLSBhL3NyYy9pcGZpbHRlci5jCisrKysgYi9zcmMvaXBmaWx0ZXIuYworQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIGdldGhvc3RwYXJhbXMoc3RydWN0IGhvc3RwYXJhbXMgKmRhdGEsIGNoYXIgKmluaXRfc2FkZHIsIGNoYXIgKmluaXRfc21hc2ssCisgCQkJCXNucHJpbnRmKG1zZ3N0ciwgNjAsCisgCQkJCQkgIkludmFsaWQgcHJvdG9jb2wgaW5wdXQgYXQgb3IgbmVhciB0b2tlbiBcIiVzXCIiLAorIAkJCQkJIGJwdHIpOworLQkJCQl0dWlfZXJyb3IoQU5ZS0VZX01TRywgbXNnc3RyKTsKKysJCQkJdHVpX2Vycm9yKEFOWUtFWV9NU0csICIlcyIsIG1zZ3N0cik7CisgCQkJCWRvYWdhaW4gPSAxOworIAkJCX0gZWxzZQorIAkJCQlkb2FnYWluID0gMDsKK2RpZmYgLS1naXQgYS9zcmMvb3RocHRhYi5jIGIvc3JjL290aHB0YWIuYworaW5kZXggMTQyYzljMi4uZmUzOTVjMiAxMDA2NDQKKy0tLSBhL3NyYy9vdGhwdGFiLmMKKysrKyBiL3NyYy9vdGhwdGFiLmMKK0BAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBwcmludG90aHBlbnRyeShzdHJ1Y3Qgb3RocHRhYmxlICp0YWJsZSwgc3RydWN0IG90aHB0YWJlbnQgKmVudHJ5LAorIAkJCQlicmVhazsKKyAJCQl9CisgCistCQkJc3ByaW50ZihzY3JhdGNocGFkLCByYXJwX21hY19hZGRyKTsKKysJCQlzcHJpbnRmKHNjcmF0Y2hwYWQsICIlcyIsIHJhcnBfbWFjX2FkZHIpOworIAkJCXN0cmNhdChtc2dzdHJpbmcsIHNjcmF0Y2hwYWQpOworIAkJCXdhdHRyc2V0KHRhYmxlLT5vdGhwd2luLCBBUlBBVFRSKTsKKyAJCQlicmVhazsKK0BAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBwcmludG90aHBlbnRyeShzdHJ1Y3Qgb3RocHRhYmxlICp0YWJsZSwgc3RydWN0IG90aHB0YWJlbnQgKmVudHJ5LAorIAkJd2F0dHJzZXQodGFibGUtPm90aHB3aW4sIFVOS05JUEFUVFIpOworIAkJcHJvdHB0ciA9IGdldHByb3RvYnludW1iZXIoZW50cnktPnByb3RvY29sKTsKKyAJCWlmIChwcm90cHRyICE9IE5VTEwpIHsKKy0JCQlzcHJpbnRmKHByb3RuYW1lLCBwcm90cHRyLT5wX2FsaWFzZXNbMF0pOworKwkJCXNwcmludGYocHJvdG5hbWUsICIlcyIsIHByb3RwdHItPnBfYWxpYXNlc1swXSk7CisgCQl9IGVsc2UgeworIAkJCXNwcmludGYocHJvdG5hbWUsICJJUCBwcm90b2NvbCIpOworIAkJCXVua25vd24gPSAxOworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi1uZy9uY3Vyc2VzLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYtbmcvbmN1cnNlcy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjViOTJkYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYtbmcvbmN1cnNlcy1jb25maWcucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorVXNlIHBrZy1jb25maWcgdG8gc2VhcmNoIGZvciBuY3Vyc2VzIGxpYnJhcmllcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitJbmRleDogaXB0cmFmLW5nLTEuMS40L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaXB0cmFmLW5nLTEuMS40Lm9yaWcvTWFrZWZpbGUKKysrKyBpcHRyYWYtbmctMS4xLjQvTWFrZWZpbGUKK0BAIC0yMDUsOCArMjA1LDggQEAgZW5kaWYKKyAKKyBpZm5kZWYgTkNVUlNFU19MREZMQUdTCisgaWZkZWYgTkVFRFNfTkNVUlNFUzUKKy0JTkNVUlNFU19DRkxBR1MgOj0gJChzaGVsbCBuY3Vyc2VzNS1jb25maWcgLS1jZmxhZ3MgMj4vZGV2L251bGwpCistCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXM1LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpCisrCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzIC0tY2ZsYWdzIDI+L2Rldi9udWxsKQorKwlOQ1VSU0VTX0xERkxBR1MgOj0gJChzaGVsbCBwa2ctY29uZmlnIG5jdXJzZXMgLS1saWJzIDI+L2Rldi9udWxsKQorIAlpZm5kZWYgTk9fUEFORUwKKyAJCU5DVVJTRVNfTERGTEFHUyArPSAtbHBhbmVsCisgCWVuZGlmCitAQCAtMjE1LDggKzIxNSw4IEBAIGVuZGlmCisgCisgaWZuZGVmIE5DVVJTRVNfTERGTEFHUworIGlmZGVmIE5FRURTX05DVVJTRVNXNQorLQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXN3NS1jb25maWcgLS1jZmxhZ3MgMj4vZGV2L251bGwpCistCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXN3NS1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKQorKwlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIHBbay1jb25maWcgbmN1cnNlc3cgLS1jZmxhZ3MgMj4vZGV2L251bGwpCisrCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlc3cgLS1saWJzIDI+L2Rldi9udWxsKQorIAlpZm5kZWYgTk9fUEFORUwKKyAJCU5DVVJTRVNfTERGTEFHUyArPSAtbHBhbmVsCisgCWVuZGlmCitAQCAtMjI1LDggKzIyNSw4IEBAIGVuZGlmCisgCisgaWZuZGVmIE5DVVJTRVNfTERGTEFHUworIGlmZGVmIE5FRURTX05DVVJTRVM2CistCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlczYtY29uZmlnIC0tY2ZsYWdzIDI+L2Rldi9udWxsKQorLQlOQ1VSU0VTX0xERkxBR1MgOj0gJChzaGVsbCBuY3Vyc2VzNi1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKQorKwlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlczYgLS1jZmxhZ3MgMj4vZGV2L251bGwpCisrCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlczYgLS1saWJzIDI+L2Rldi9udWxsKQorIAlpZm5kZWYgTk9fUEFORUwKKyAJCU5DVVJTRVNfTERGTEFHUyArPSAtbHBhbmVsCisgCWVuZGlmCitAQCAtMjM1LDggKzIzNSw4IEBAIGVuZGlmCisgCisgaWZuZGVmIE5DVVJTRVNfTERGTEFHUworIGlmZGVmIE5FRURTX05DVVJTRVNXNgorLQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXN3Ni1jb25maWcgLS1jZmxhZ3MgMj4vZGV2L251bGwpCistCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXN3Ni1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKQorKwlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlc3cgLS1jZmxhZ3MgMj4vZGV2L251bGwpCisrCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlc3cgLS1saWJzIDI+L2Rldi9udWxsKQorIAlpZm5kZWYgTk9fUEFORUwKKyAJCU5DVVJTRVNfTERGTEFHUyArPSAtbHBhbmVsCisgCWVuZGlmCitAQCAtMjQ2LDE3ICsyNDYsMTcgQEAgZW5kaWYKKyAjIHRyeSBmaW5kIG5jdXNlcyBieSBhdXRvZGV0ZWN0CisgaWZuZGVmIE5DVVJTRVNfTERGTEFHUworIAlpZm5lcSAoJChzaGVsbCBuY3Vyc2VzdzYtY29uZmlnIC0tbGlicyAyPi9kZXYvbnVsbCksKQorLQkJTkNVUlNFU19DRkxBR1MgOj0gJChzaGVsbCBuY3Vyc2VzdzYtY29uZmlnIC0tY2ZsYWdzIDI+L2Rldi9udWxsKQorLQkJTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgbmN1cnNlc3c2LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpCistCWVsc2UgaWZuZXEgKCQoc2hlbGwgbmN1cnNlczYtY29uZmlnIC0tbGlicyAyPi9kZXYvbnVsbCksKQorLQkJTkNVUlNFU19DRkxBR1MgOj0gJChzaGVsbCBuY3Vyc2VzNi1jb25maWcgLS1jZmxhZ3MgMj4vZGV2L251bGwpCistCQlOQ1VSU0VTX0xERkxBR1MgOj0gJChzaGVsbCBuY3Vyc2VzNi1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKQorLQllbHNlIGlmbmVxICgkKHNoZWxsIG5jdXJzZXN3NS1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKSwpCistCQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXN3NS1jb25maWcgLS1jZmxhZ3MgMj4vZGV2L251bGwpCistCQlOQ1VSU0VTX0xERkxBR1MgOj0gJChzaGVsbCBuY3Vyc2VzdzUtY29uZmlnIC0tbGlicyAyPi9kZXYvbnVsbCkKKy0JZWxzZSBpZm5lcSAoJChzaGVsbCBuY3Vyc2VzNS1jb25maWcgLS1saWJzIDI+L2Rldi9udWxsKSwpCistCQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXM1LWNvbmZpZyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKy0JCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIG5jdXJzZXM1LWNvbmZpZyAtLWxpYnMgMj4vZGV2L251bGwpCisrCQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlc3cgLS1jZmxhZ3MgMj4vZGV2L251bGwpCisrCQlOQ1VSU0VTX0xERkxBR1MgOj0gJChzaGVsbCBwa2ctY29uZmlnIG5jdXJzZXN3IC0tbGlicyAyPi9kZXYvbnVsbCkKKysJZWxzZSBpZm5lcSAoJChzaGVsbCBwa2ctY29uZmlnIG5jdXJzZXMgLS1saWJzIDI+L2Rldi9udWxsKSwpCisrCQlOQ1VSU0VTX0NGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlcyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKysJCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlcyAtLWxpYnMgMj4vZGV2L251bGwpCisrCWVsc2UgaWZuZXEgKCQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzdyAtLWxpYnMgMj4vZGV2L251bGwpLCkKKysJCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzdyAtLWNmbGFncyAyPi9kZXYvbnVsbCkKKysJCU5DVVJTRVNfTERGTEFHUyA6PSAkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlc3cgLS1saWJzIDI+L2Rldi9udWxsKQorKwllbHNlIGlmbmVxICgkKHNoZWxsIHBrZy1jb25maWcgbmN1cnNlcyAtLWxpYnMgMj4vZGV2L251bGwpLCkKKysJCU5DVVJTRVNfQ0ZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzIC0tY2ZsYWdzIDI+L2Rldi9udWxsKQorKwkJTkNVUlNFU19MREZMQUdTIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyBuY3Vyc2VzIC0tbGlicyAyPi9kZXYvbnVsbCkKKyAJZW5kaWYKKyAKKyAJaWZuZXEgKCQoTkNVUlNFU19MREZMQUdTKSwpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmLW5nXzEuMS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi1uZ18xLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTNlNjYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi1uZ18xLjEuNC5iYgpAQCAtMCwwICsxLDQyIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIkEgY29uc29sZS1iYXNlZCBuZXR3b3JrIG1vbml0b3JpbmcgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIklQVHJhZi1uZyBpcyBhIGNvbnNvbGUtYmFzZWQgbmV0d29yayBtb25pdG9yaW5nIHV0aWxpdHkuICBJUFRyYWYgZ2F0aGVycyBcCitkYXRhIGxpa2UgVENQIGNvbm5lY3Rpb24gcGFja2V0IGFuZCBieXRlIGNvdW50cywgaW50ZXJmYWNlIHN0YXRpc3RpY3MgXAorYW5kIGFjdGl2aXR5IGluZGljYXRvcnMsIFRDUC9VRFAgdHJhZmZpYyBicmVha2Rvd25zLCBhbmQgTEFOIHN0YXRpb24gXAorcGFja2V0IGFuZCBieXRlIGNvdW50cy4gIElQVHJhZi1uZyBmZWF0dXJlcyBpbmNsdWRlIGFuIElQIHRyYWZmaWMgbW9uaXRvciBcCit3aGljaCBzaG93cyBUQ1AgZmxhZyBpbmZvcm1hdGlvbiwgcGFja2V0IGFuZCBieXRlIGNvdW50cywgSUNNUCBcCitkZXRhaWxzLCBPU1BGIHBhY2tldCB0eXBlcywgYW5kIG92ZXJzaXplZCBJUCBwYWNrZXQgd2FybmluZ3M7IFwKK2ludGVyZmFjZSBzdGF0aXN0aWNzIHNob3dpbmcgSVAsIFRDUCwgVURQLCBJQ01QLCBub24tSVAgYW5kIG90aGVyIElQIFwKK3BhY2tldCBjb3VudHMsIElQIGNoZWNrc3VtIGVycm9ycywgaW50ZXJmYWNlIGFjdGl2aXR5IGFuZCBwYWNrZXQgc2l6ZSBcCitjb3VudHM7IGEgVENQIGFuZCBVRFAgc2VydmljZSBtb25pdG9yIHNob3dpbmcgY291bnRzIG9mIGluY29taW5nIGFuZCBcCitvdXRnb2luZyBwYWNrZXRzIGZvciBjb21tb24gVENQIGFuZCBVRFAgYXBwbGljYXRpb24gcG9ydHMsIGEgTEFOIFwKK3N0YXRpc3RpY3MgbW9kdWxlIHRoYXQgZGlzY292ZXJzIGFjdGl2ZSBob3N0cyBhbmQgZGlzcGxheXMgc3RhdGlzdGljcyBcCithYm91dCB0aGVpciBhY3Rpdml0eTsgVENQLCBVRFAgYW5kIG90aGVyIHByb3RvY29sIGRpc3BsYXkgZmlsdGVycyBzbyBcCit5b3UgY2FuIHZpZXcganVzdCB0aGUgdHJhZmZpYyB5b3Ugd2FudDsgbG9nZ2luZzsgc3VwcG9ydCBmb3IgRXRoZXJuZXQsIFwKK0ZEREksIElTRE4sIFNMSVAsIFBQUCwgYW5kIGxvb3BiYWNrIGludGVyZmFjZXM7IGFuZCB1dGlsaXphdGlvbiBvZiB0aGUgXAorYnVpbHQtaW4gcmF3IHNvY2tldCBpbnRlcmZhY2Ugb2YgdGhlIExpbnV4IGtlcm5lbCwgc28gaXQgY2FuIGJlIHVzZWQgXAorb24gYSB3aWRlIHZhcmlldHkgb2Ygc3VwcG9ydGVkIG5ldHdvcmsgY2FyZHMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvaXB0cmFmLW5nLyIKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUyYjM4NTA1OTNiODk5YjFhMTc1OTRlZDRjYzRjNzMxIgorREVQRU5EUyA9ICJuY3Vyc2VzIgorCitTUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9pcHRyYWYtbmcvaXB0cmFmLW5nLTEuMS40LnRhci5nei9lMGY4ZGYzYjdiYWYyYjUxMDY3MDlhYmM0ZjhjMDI5YS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbmN1cnNlcy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtcHJpbnRkLWZvcm1hdHRpbmctc3RyaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMGY4ZGYzYjdiYWYyYjUxMDY3MDlhYmM0ZjhjMDI5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNmI5YjA1YmY1ZDM3MjVkODY0MDliOTAxNjk2NjM5YWQ0Njk0NGQwMmRlNmRlZjg3YjFjZWFlNTMxMGRkMzVjIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworUFJPVklERVMgPSAiaXB0cmFmIgorUlBST1ZJREVTXyR7UE59ICs9ICJpcHRyYWYiCitSUkVQTEFDRVNfJHtQTn0gKz0gImlwdHJhZiIKK1JDT05GTElDVFNfJHtQTn0gKz0gImlwdHJhZiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi8wMDAxLXNyYy1GaXgtZXJyb3ItaW4tY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYvMDAwMS1zcmMtRml4LWVycm9yLWluLWNyb3NzLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MWVkMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi8wMDAxLXNyYy1GaXgtZXJyb3ItaW4tY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi1Gcm9tIDI3OTEwZWExOTI2MGI3ZjdhM2Y5YzA0NjVhZGRkMWRlYTgwY2YzYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMaSBYaW4gPGxpeGluLmZuc3RAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBUaHUsIDggT2N0IDIwMTUgMTU6MTE6MTcgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjOiBGaXggZXJyb3IgaW4gY3Jvc3MtY29tcGlsZQotCi1UaGUgZXJyb3JzIGFyZSBsaWtlIHRoaXM6Ci10Y3B0YWJsZS5oOjI2OjI1OiBmYXRhbCBlcnJvcjogbGludXgvaWZfdHIuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotbGQ6IGNhbm5vdCBmaW5kIC1sdGV4dGJveAotCi1VcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTGkgWGluIDxsaXhpbi5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlICAgICB8IDIgKy0KLSBzcmMvaG9zdG1vbi5jICAgIHwgMiArLQotIHNyYy9pbnN0YWxsLnNoICAgfCA0ICsrLS0KLSBzcmMvb3RocHRhYi5jICAgIHwgMiArLQotIHNyYy9wYWNrZXQuYyAgICAgfCAyICstCi0gc3JjL3RjcHRhYmxlLmggICB8IDIgKy0KLSBzcmMvdHIuYyAgICAgICAgIHwgMiArLQotIHN1cHBvcnQvTWFrZWZpbGUgfCAzICstLQotIDggZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQotaW5kZXggMjA0M2MyZC4uMGY3N2JlYSAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZQotKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtMzksNyArMzksNyBAQCBMRE9QVFMJCT0gIy1zdGF0aWMKLSAjIHlvdSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyB0byBwb2ludCB0byB5b3VyIG5jdXJzZXMgaW5jbHVkZSBkaXJlY3RvcnkKLSAjIGlmIHRoZSBuY3Vyc2VzIGluY2x1ZGUgZmlsZXMgYXJlIG5vdCBpbiB0aGUgZGVmYXVsdCBsb2NhdGlvbi4KLSAKLS1JTkNMVURFRElSCT0gLUkvdXNyL2luY2x1ZGUvbmN1cnNlcyAtSS4uL3N1cHBvcnQKLStJTkNMVURFRElSCT0gIC1JLi4vc3VwcG9ydAotIAotICMgWW91IGNhbiB1bmNvbW1lbnQgdGhpcyBvbmUgdG8gZGlzYWJsZSB0aGUgYmFja3NwYWNlIGtleSBpbiBpbnB1dCBmaWVsZHMuCi0gIyBUaGlzIG1lYW5zIHlvdSBtdXN0IHVzZSB0aGUgRGVsIGtleSBvciBDdHJsK0ggY29tYmluYXRpb24gdG8gZXJhc2UgdGhlCi1kaWZmIC0tZ2l0IGEvc3JjL2hvc3Rtb24uYyBiL3NyYy9ob3N0bW9uLmMKLWluZGV4IDE0ZGYyYzguLjY1NzE1NjIgMTAwNjQ0Ci0tLS0gYS9zcmMvaG9zdG1vbi5jCi0rKysgYi9zcmMvaG9zdG1vbi5jCi1AQCAtMzEsNyArMzEsNyBAQCBkZXRhaWxzLgotICNpbmNsdWRlIDxsaW51eC9pZl9wYWNrZXQuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfZmRkaS5oPgotLSNpbmNsdWRlIDxsaW51eC9pZl90ci5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX3RyLmg+Ci0gI2luY2x1ZGUgPG5ldC9pZl9hcnAuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLWRpZmYgLS1naXQgYS9zcmMvaW5zdGFsbC5zaCBiL3NyYy9pbnN0YWxsLnNoCi1pbmRleCBkMmZkMzYwLi4zNmQzNTE2IDEwMDc1NQotLS0tIGEvc3JjL2luc3RhbGwuc2gKLSsrKyBiL3NyYy9pbnN0YWxsLnNoCi1AQCAtMjMsOSArMjMsOSBAQCBlY2hvCi0gZWNobyAiKioqIEluc3RhbGxpbmcgZXhlY3V0YWJsZSBwcm9ncmFtcyBhbmQgcHJlcGFyaW5nIHdvcmsgZGlyZWN0b3JpZXMiCi0gZWNobwotIGVjaG8gIj4+PiBJbnN0YWxsaW5nIGlwdHJhZiBpbiAkVEFSR0VUIgotLSRJTlNUQUxMIC1tIDA3MDAgLW8gcm9vdCAtZyByb290IC1zIGlwdHJhZiAkVEFSR0VUCi0rJElOU1RBTEwgLW0gMDcwMCAtbyByb290IC1nIHJvb3QgIGlwdHJhZiAkVEFSR0VUCi0gZWNobyAiPj4+IEluc3RhbGxpbmcgcnZuYW1lZCBpbiAkVEFSR0VUIgotLSRJTlNUQUxMIC1tIDA3MDAgLW8gcm9vdCAtZyByb290IC1zIHJ2bmFtZWQgJFRBUkdFVAotKyRJTlNUQUxMIC1tIDA3MDAgLW8gcm9vdCAtZyByb290ICBydm5hbWVkICRUQVJHRVQKLSAKLSBpZiBbICEgLWQgJFdPUktESVIgXTsgdGhlbgotICAgICBlY2hvICI+Pj4gQ3JlYXRpbmcgSVBUcmFmIHdvcmsgZGlyZWN0b3J5ICRXT1JLRElSIgotZGlmZiAtLWdpdCBhL3NyYy9vdGhwdGFiLmMgYi9zcmMvb3RocHRhYi5jCi1pbmRleCA5Nzc3MWQxLi5hOGJiNTM2IDEwMDY0NAotLS0tIGEvc3JjL290aHB0YWIuYwotKysrIGIvc3JjL290aHB0YWIuYwotQEAgLTE4LDcgKzE4LDcgQEAgZGV0YWlscy4KLSAKLSAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L2lmX3RyLmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvaWZfdHIuaD4KLSAjaW5jbHVkZSA8bGludXgvaWZfZmRkaS5oPgotICNpbmNsdWRlIDx3aW5vcHMuaD4KLSAjaW5jbHVkZSAiYXJwaGRyLmgiCi1kaWZmIC0tZ2l0IGEvc3JjL3BhY2tldC5jIGIvc3JjL3BhY2tldC5jCi1pbmRleCAzM2ZkZjJhLi4xZTJiODFiIDEwMDY0NAotLS0tIGEvc3JjL3BhY2tldC5jCi0rKysgYi9zcmMvcGFja2V0LmMKLUBAIC0zNiw3ICszNiw3IEBAIGRldGFpbHMuCi0gI2luY2x1ZGUgPGxpbnV4L2lmX3BhY2tldC5oPgotICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgotICNpbmNsdWRlIDxsaW51eC9pZl9mZGRpLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L2lmX3RyLmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvaWZfdHIuaD4KLSAjaW5jbHVkZSA8bGludXgvaXNkbi5oPgotICNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0gI2luY2x1ZGUgPG1zZ2JveGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3RjcHRhYmxlLmggYi9zcmMvdGNwdGFibGUuaAotaW5kZXggM2UxNzc5My4uZDEzODBiNSAxMDA2NDQKLS0tLSBhL3NyYy90Y3B0YWJsZS5oCi0rKysgYi9zcmMvdGNwdGFibGUuaAotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8bGludXgvaWZfcGFja2V0Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2ZkZGkuaD4KLS0jaW5jbHVkZSA8bGludXgvaWZfdHIuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl90ci5oPgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgotICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgotZGlmZiAtLWdpdCBhL3NyYy90ci5jIGIvc3JjL3RyLmMKLWluZGV4IDQwYzllNjMuLjExZjgwNDUgMTAwNjQ0Ci0tLS0gYS9zcmMvdHIuYwotKysrIGIvc3JjL3RyLmMKLUBAIC03LDcgKzcsNyBAQAotICAqLwotIAotICNpbmNsdWRlIDxhc20vdHlwZXMuaD4KLS0jaW5jbHVkZSA8bGludXgvaWZfdHIuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl90ci5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gCi0gdW5zaWduZWQgaW50IGdldF90cl9pcF9vZmZzZXQodW5zaWduZWQgY2hhciAqcGt0KQotZGlmZiAtLWdpdCBhL3N1cHBvcnQvTWFrZWZpbGUgYi9zdXBwb3J0L01ha2VmaWxlCi1pbmRleCAxMTRiZmMzLi5jOTYyYzA5IDEwMDY0NAotLS0tIGEvc3VwcG9ydC9NYWtlZmlsZQotKysrIGIvc3VwcG9ydC9NYWtlZmlsZQotQEAgLTEsNCArMSwzIEBACi0tSU5DTFVERURJUgkJPSAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzCi0gCi0gT0JKUwkJCT0gaW5wdXQubyBtZW51cnQubyBsaXN0Ym94Lm8gd2lub3BzLm8gbGFiZWxzLm8gXAotIAkJCQltc2dib3hlcy5vIHR4Ym94Lm8KLUBAIC0xMiw3ICsxMSw3IEBAIGxpYnRleHRib3guYTogJChPQkpTKQotICMJZ2NjIC1zaGFyZWQgLW8gbGlidGV4dGJveC5zbyAkKE9CSlMpCi0gCi0gJS5vOiAlLmMgKi5oCi0tCWdjYyAtTzIgLWcgLVdhbGwgLWZQSUMgJChJTkNMVURFRElSKSAtYyAtbyAkKi5vICQ8Ci0rCSR7Q0N9IC1PMiAtZyAtV2FsbCAtZlBJQyAgLWMgLW8gJCoubyAkPAotIAotIGNsZWFuOgotIAlybSAtcmYgKi5vICp+IGxpYnRleHRib3guYSBsaWJ0ZXh0Ym94LnNvCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi9mb3JtYXRfc3RyaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvaXB0cmFmL2lwdHJhZi9mb3JtYXRfc3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Zjk2ZjBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYvZm9ybWF0X3N0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUluZGV4OiBpcHRyYWYtMy4wLjAvc3JjL290aHB0YWIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwdHJhZi0zLjAuMC5vcmlnL3NyYy9vdGhwdGFiLmMKLSsrKyBpcHRyYWYtMy4wLjAvc3JjL290aHB0YWIuYwotQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIHByaW50b3RocGVudHJ5KHN0cnVjdCBvdGhwdGFibGUgKnRhCi0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLSAKLS0gICAgICAgICAgICBzcHJpbnRmKHNjcmF0Y2hwYWQsIGluZXRfbnRvYShzYWRkcikpOwotKyAgICAgICAgICAgIHNwcmludGYoc2NyYXRjaHBhZCwgIiVzIiwgaW5ldF9udG9hKHNhZGRyKSk7Ci0gICAgICAgICAgICAgc3RyY2F0KG1zZ3N0cmluZywgc2NyYXRjaHBhZCk7Ci0gICAgICAgICAgICAgd2F0dHJzZXQodGFibGUtPm90aHB3aW4sIEFSUEFUVFIpOwotICAgICAgICAgICAgIGJyZWFrOwotQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIHByaW50b3RocGVudHJ5KHN0cnVjdCBvdGhwdGFibGUgKnRhCi0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLSAKLS0gICAgICAgICAgICBzcHJpbnRmKHNjcmF0Y2hwYWQsIHJhcnBfbWFjX2FkZHIpOwotKyAgICAgICAgICAgIHNwcmludGYoc2NyYXRjaHBhZCwgIiVzIiwgcmFycF9tYWNfYWRkcik7Ci0gICAgICAgICAgICAgc3RyY2F0KG1zZ3N0cmluZywgc2NyYXRjaHBhZCk7Ci0gICAgICAgICAgICAgd2F0dHJzZXQodGFibGUtPm90aHB3aW4sIEFSUEFUVFIpOwotICAgICAgICAgICAgIGJyZWFrOwotQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIHByaW50b3RocGVudHJ5KHN0cnVjdCBvdGhwdGFibGUgKnRhCi0gICAgICAgICB3YXR0cnNldCh0YWJsZS0+b3RocHdpbiwgVU5LTklQQVRUUik7Ci0gICAgICAgICBwcm90cHRyID0gZ2V0cHJvdG9ieW51bWJlcihlbnRyeS0+cHJvdG9jb2wpOwotICAgICAgICAgaWYgKHByb3RwdHIgIT0gTlVMTCkgewotLSAgICAgICAgICAgIHNwcmludGYocHJvdG5hbWUsIHByb3RwdHItPnBfYWxpYXNlc1swXSk7Ci0rICAgICAgICAgICAgc3ByaW50Zihwcm90bmFtZSwgIiVzIiwgcHJvdHB0ci0+cF9hbGlhc2VzWzBdKTsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgc3ByaW50Zihwcm90bmFtZSwgIklQIHByb3RvY29sIik7Ci0gICAgICAgICAgICAgdW5rbm93biA9IDE7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmL2xkb3B0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYvbGRvcHRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODRhMGEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWYvbGRvcHRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotSW5kZXg6IGlwdHJhZi0zLjAuMC9zcmMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcHRyYWYtMy4wLjAub3JpZy9zcmMvTWFrZWZpbGUKLSsrKyBpcHRyYWYtMy4wLjAvc3JjL01ha2VmaWxlCi1AQCAtNSw3ICs1LDcgQEAKLSAjCi0gIyBBcmNoaXRlY3R1cmUgZGV0ZXJtaW5hdGlvbiBzdHJpbmcgYm9ycm93ZWQgZnJvbSB0aGUga2VybmVsIG1ha2VmaWxlLgotICMKLS1BUkNIIAkJOj0gJChzaGVsbCB1bmFtZSAtbSB8IHNlZCAtZSBzL2kuODYvaTM4Ni8gLWUgcy9zdW40dS9zcGFyYzY0LyBcCi0rQVJDSCAJCT89ICQoc2hlbGwgdW5hbWUgLW0gfCBzZWQgLWUgcy9pLjg2L2kzODYvIC1lIHMvc3VuNHUvc3BhcmM2NC8gXAotIAkJCS1lIHMvYXJtLiovYXJtLyAtZSBzL3NhMTEwL2FybS8pCi0gUExBVEZPUk0gCT0gLURQTEFURk9STT1cIiQoc2hlbGwgdW5hbWUgLXMpLyQoQVJDSClcIgotIFZFUk5VTUJFUgk6PSAkKHNoZWxsIGNhdCB2ZXJzaW9uKQotQEAgLTE3LDcgKzE3LDcgQEAgVkVSU0lPTiAJPSAtRFZFUlNJT049XCIkKFZFUk5VTUJFUilcIgotICMKLSBCSU5ESVIJCT0gLi4vLi4vaXB0cmFmLSQoVkVSTlVNQkVSKS5iaW4uJChBUkNIKQotIAotLUNDCQk9IGdjYwotK0NDCQk9ICQoQ0MpCi0gTElCUwkJPSAtTC4uL3N1cHBvcnQgLWx0ZXh0Ym94IC1scGFuZWwgLWxuY3Vyc2VzICAgIyBpbiB0aGlzIG9yZGVyIQotIAotICMgY29tbWVudCB0aGlzIG9uZSBvdXQgdG8gb21pdCBkZWJ1ZyBjb2RlIHdoZW4gZG9uZS4KLUBAIC0zMSwxMCArMzEsMTAgQEAgUFJPRgkJPSAjLXBnCi0gIyBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUgY29tcGlsZXIuICBJIGRvbid0IGJlbGlldmUgdGhleSBuZWVkIHRvIGJlCi0gIyBtb2RpZmllZCAoZXhjZXB0IGZvciAtbTQ4NiBvbiBub24tSW50ZWwgeDg2IHBsYXRmb3JtcykuCi0gCi0tQ0ZMQUdTCQk9IC1XYWxsICMtTzIgIy1tNDg2Ci0rQ0ZMQUdTCQk/PSAtV2FsbCAjLU8yICMtbTQ4NgotIERJUlMJCT0gLURXT1JLRElSPVwiJChXT1JLRElSKVwiIFwKLSAJCSAgLURMT0dESVI9XCIkKExPR0RJUilcIiAtREVYRUNESVI9XCIkKFRBUkdFVClcIgotLUxET1BUUwkJPSAjLXN0YXRpYwotK0xET1BUUwkJPz0gIy1zdGF0aWMKLSAKLSAjIHlvdSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyB0byBwb2ludCB0byB5b3VyIG5jdXJzZXMgaW5jbHVkZSBkaXJlY3RvcnkKLSAjIGlmIHRoZSBuY3Vyc2VzIGluY2x1ZGUgZmlsZXMgYXJlIG5vdCBpbiB0aGUgZGVmYXVsdCBsb2NhdGlvbi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWZfMy4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9pcHRyYWYvaXB0cmFmXzMuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmZhYjAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2lwdHJhZi9pcHRyYWZfMy4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJJUFRyYWYgaXMgYSBjb25zb2xlLWJhc2VkIG5ldHdvcmsgc3RhdGlzdGljcyB1dGlsaXR5IGZvciBMaW51eC4gXAotSXQgZ2F0aGVycyBhIHZhcmlldHkgb2YgZmlndXJlcyBzdWNoIGFzIFRDUCBjb25uZWN0aW9uIHBhY2tldCBhbmQgYnl0ZSBjb3VudHMsIFwKLWludGVyZmFjZSBzdGF0aXN0aWNzIGFuZCBhY3Rpdml0eSBpbmRpY2F0b3JzLCBUQ1AvVURQIHRyYWZmaWMgYnJlYWtkb3ducywgXAotYW5kIExBTiBzdGF0aW9uIHBhY2tldCBhbmQgYnl0ZSBjb3VudHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vaXB0cmFmLnNldWwub3JnIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGMwYmRjMjlkZjczOGJhZjMyNzM2OGIxYmJiMTVhNDUiCi0KLURFUEVORFMgPSAibmN1cnNlcyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGZ0cDovL2lwdHJhZi5zZXVsLm9yZy9wdWIvaXB0cmFmL2lwdHJhZi0zLjAuMC50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLXNyYy1GaXgtZXJyb3ItaW4tY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgZmlsZTovL2Zvcm1hdF9zdHJpbmcucGF0Y2ggXAotICAgIGZpbGU6Ly9sZG9wdHMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjM3NzM3MWMyOGVlM2MyMWE3NmY3MDI0OTIwNjQ5ZWE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllZTQzM2Q5NTU3M2Q2MTI1MzlkYTRiNDUyZTZjZGNiY2E2YWI2Njc0YTg4YmZiZjZlYWYxMmQ0OTAyYjUxNjMiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSBMRE9QVFM9JyR7TERGTEFHU30nIEFSQ0g9JyR7VEFSR0VUX0FSQ0h9JyIKLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlIC1DIHNyYyBhbGwKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXIgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIG9lX3J1bm1ha2UgLUMgc3JjIGluc3RhbGwgXAotICAgICAgICBUQVJHRVQ9JHtEfSR7YmluZGlyfSBcCi0gICAgICAgIFdPUktESVI9JHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9jYWwvaXB0cmFmIFwKLSAgICAgICAgTE9HRElSPSR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9pcHRyYWYgXAotICAgICAgICBMT0NLRElSPSR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9pcHRyYWYKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IC9ydW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uLXNwaXJpdC9qc29uLXNwaXJpdC8wMDAxLUxpbmstdG8tbGliYXRvbWljLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1zcGlyaXQvanNvbi1zcGlyaXQvMDAwMS1MaW5rLXRvLWxpYmF0b21pYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzhjN2I5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1zcGlyaXQvanNvbi1zcGlyaXQvMDAwMS1MaW5rLXRvLWxpYmF0b21pYy5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIGJiYWM5YWMzZTM5MTI1M2JjMWY5MGNmMGY3MGEyY2UxYWFjOTUxMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMwIEF1ZyAyMDE3IDE2OjUwOjU2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIExpbmsgdG8gbGliYXRvbWljCisKK1RoaXMgaXMgbmVlZGVkIGZvciBjbGFuZyBjb21waWxlci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KKy0tLQorIGpzb25fZGVtby9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgfCAyICstCisganNvbl9oZWFkZXJzX29ubHlfZGVtby9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyBqc29uX21hcF9kZW1vL0NNYWtlTGlzdHMudHh0ICAgICAgICAgIHwgMiArLQorIGpzb25fdGVzdC9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9qc29uX2RlbW8vQ01ha2VMaXN0cy50eHQgYi9qc29uX2RlbW8vQ01ha2VMaXN0cy50eHQKK2luZGV4IGIxZDNjNmEuLjBkZmQzMDggMTAwNjQ0CistLS0gYS9qc29uX2RlbW8vQ01ha2VMaXN0cy50eHQKKysrKyBiL2pzb25fZGVtby9DTWFrZUxpc3RzLnR4dAorQEAgLTUsNSArNSw1IEBAIEZJTkRfUEFDS0FHRShCb29zdCAxLjM0IFJFUVVJUkVEKQorIElOQ0xVREVfRElSRUNUT1JJRVMoJHtCb29zdF9JTkNMVURFX0RJUn0pCisgCisgQUREX0VYRUNVVEFCTEUoanNvbl9kZW1vICR7SlNPTl9ERU1PX1NSQ1N9KQorLVRBUkdFVF9MSU5LX0xJQlJBUklFUyhqc29uX2RlbW8ganNvbl9zcGlyaXQpCisrVEFSR0VUX0xJTktfTElCUkFSSUVTKGpzb25fZGVtbyBqc29uX3NwaXJpdCAtbGF0b21pYykKKyAKK2RpZmYgLS1naXQgYS9qc29uX2hlYWRlcnNfb25seV9kZW1vL0NNYWtlTGlzdHMudHh0IGIvanNvbl9oZWFkZXJzX29ubHlfZGVtby9DTWFrZUxpc3RzLnR4dAoraW5kZXggYTNjNzg3YS4uNmVhZTExZSAxMDA2NDQKKy0tLSBhL2pzb25faGVhZGVyc19vbmx5X2RlbW8vQ01ha2VMaXN0cy50eHQKKysrKyBiL2pzb25faGVhZGVyc19vbmx5X2RlbW8vQ01ha2VMaXN0cy50eHQKK0BAIC01LDUgKzUsNSBAQCBGSU5EX1BBQ0tBR0UoQm9vc3QgMS4zNCBSRVFVSVJFRCkKKyBJTkNMVURFX0RJUkVDVE9SSUVTKCR7Qm9vc3RfSU5DTFVERV9ESVJ9KQorIAorIEFERF9FWEVDVVRBQkxFKGpzb25faGVhZGVyc19vbmx5X2RlbW8gJHtKU09OX0hFQURFUlNfT05MWV9ERU1PX1NSQ1N9KQorLVRBUkdFVF9MSU5LX0xJQlJBUklFUyhqc29uX2hlYWRlcnNfb25seV9kZW1vIGpzb25fc3Bpcml0KQorK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhqc29uX2hlYWRlcnNfb25seV9kZW1vIGpzb25fc3Bpcml0IC1sYXRvbWljKQorIAorZGlmZiAtLWdpdCBhL2pzb25fbWFwX2RlbW8vQ01ha2VMaXN0cy50eHQgYi9qc29uX21hcF9kZW1vL0NNYWtlTGlzdHMudHh0CitpbmRleCA1OTkwMDZhLi5lM2U0NWU4IDEwMDY0NAorLS0tIGEvanNvbl9tYXBfZGVtby9DTWFrZUxpc3RzLnR4dAorKysrIGIvanNvbl9tYXBfZGVtby9DTWFrZUxpc3RzLnR4dAorQEAgLTUsNSArNSw1IEBAIEZJTkRfUEFDS0FHRShCb29zdCAxLjM0IFJFUVVJUkVEKQorIElOQ0xVREVfRElSRUNUT1JJRVMoJHtCb29zdF9JTkNMVURFX0RJUn0pCisgCisgQUREX0VYRUNVVEFCTEUoanNvbl9tYXBfZGVtbyAke0pTT05fTUFQX0RFTU9fU1JDU30pCistVEFSR0VUX0xJTktfTElCUkFSSUVTKGpzb25fbWFwX2RlbW8ganNvbl9zcGlyaXQpCisrVEFSR0VUX0xJTktfTElCUkFSSUVTKGpzb25fbWFwX2RlbW8ganNvbl9zcGlyaXQgLWxhdG9taWMpCisgCitkaWZmIC0tZ2l0IGEvanNvbl90ZXN0L0NNYWtlTGlzdHMudHh0IGIvanNvbl90ZXN0L0NNYWtlTGlzdHMudHh0CitpbmRleCAzOGZmYTdmLi4xZWMxMzY1IDEwMDY0NAorLS0tIGEvanNvbl90ZXN0L0NNYWtlTGlzdHMudHh0CisrKysgYi9qc29uX3Rlc3QvQ01ha2VMaXN0cy50eHQKK0BAIC0xMSw1ICsxMSw1IEBAIEZJTkRfUEFDS0FHRShCb29zdCAxLjM0IFJFUVVJUkVEKQorIElOQ0xVREVfRElSRUNUT1JJRVMoJHtCb29zdF9JTkNMVURFX0RJUn0pCisgCisgQUREX0VYRUNVVEFCTEUoanNvbl90ZXN0ICR7SlNPTl9URVNUX1NSQ1N9KQorLVRBUkdFVF9MSU5LX0xJQlJBUklFUyhqc29uX3Rlc3QganNvbl9zcGlyaXQpCisrVEFSR0VUX0xJTktfTElCUkFSSUVTKGpzb25fdGVzdCBqc29uX3NwaXJpdCAtbGF0b21pYykKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1zcGlyaXQvanNvbi1zcGlyaXRfNC4wOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb24tc3Bpcml0L2pzb24tc3Bpcml0XzQuMDguYmIKaW5kZXggMmY0NTZiZi4uYzdjMWFkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1zcGlyaXQvanNvbi1zcGlyaXRfNC4wOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uLXNwaXJpdC9qc29uLXNwaXJpdF80LjA4LmJiCkBAIC0xMSwxNCArMTEsMTMgQEAKIAogU1JDX1VSSSA9ICJmaWxlOi8vanNvbl9zcGlyaXRfdiR7UFZ9LnppcCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkanVzdC10aGUtY21ha2UtZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1MaW5rLXRvLWxpYmF0b21pYy5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9qc29uX3NwaXJpdF92JHtQVn0iCiAKIERFUEVORFMgPSAiYm9vc3QiCiAKLUxERkxBR1MgKz0gIi1XbCwtLWFzLW5lZWRlZCAtbGF0b21pYyAtV2wsLS1uby1hcy1uZWVkZWQiCi0KIGluaGVyaXQgY21ha2UKIAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMvRmluZExpYkpzb25TcGlyaXQuY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uY3BwL2pzb25jcHBfMS44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uY3BwL2pzb25jcHBfMS44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNmFlMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbmNwcC9qc29uY3BwXzEuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJKU09OIEMrKyBsaWIgdXNlZCB0byByZWFkIGFuZCB3cml0ZSBqc29uIGZpbGUuIgotREVTQ1JJUFRJT04gPSAiSnNvbmNwcCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIEpTT04gKGh0dHA6Ly9qc29uLm9yZykgcmVhZGVyIFwKLSAgICAgICAgICAgICAgIGFuZCB3cml0ZXIgaW4gQysrLiBKU09OIChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbikgaXMgYSBcCi0gICAgICAgICAgICAgICBsaWdodHdlaWdodCBkYXRhLWludGVyY2hhbmdlIGZvcm1hdC4gSXQgaXMgZWFzeSBmb3IgaHVtYW5zIHRvIFwKLSAgICAgICAgICAgICAgIHJlYWQgYW5kIHdyaXRlLiBJdCBpcyBlYXN5IGZvciBtYWNoaW5lcyB0byBwYXJzZSBhbmQgZ2VuZXJhdGUuIgotCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzU2ZWU1NWMwM2E1NWY4MTA1Yjk2OWQ4MjcwNjMyY2UiCi0KLVNSQ1JFViA9ICJmNzAwZmU0NTU5NDBkNGQzMjVjMDg4YjkxNzRhMTczZTEzMGUwZmE4IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1FWFRSQV9PRUNNQUtFICs9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OIC1ESlNPTkNQUF9XSVRIX1RFU1RTPU9GRiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2EwMmVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbmNwcC9qc29uY3BwXzEuOC4zLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiSlNPTiBDKysgbGliIHVzZWQgdG8gcmVhZCBhbmQgd3JpdGUganNvbiBmaWxlLiIKK0RFU0NSSVBUSU9OID0gIkpzb25jcHAgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBKU09OIChodHRwOi8vanNvbi5vcmcpIHJlYWRlciBcCisgICAgICAgICAgICAgICBhbmQgd3JpdGVyIGluIEMrKy4gSlNPTiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24pIGlzIGEgXAorICAgICAgICAgICAgICAgbGlnaHR3ZWlnaHQgZGF0YS1pbnRlcmNoYW5nZSBmb3JtYXQuIEl0IGlzIGVhc3kgZm9yIGh1bWFucyB0byBcCisgICAgICAgICAgICAgICByZWFkIGFuZCB3cml0ZS4gSXQgaXMgZWFzeSBmb3IgbWFjaGluZXMgdG8gcGFyc2UgYW5kIGdlbmVyYXRlLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcCIKKworU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZhMmEyM2RkMWRjNmMxMzlmMzUxMDUzNzlkNzZkZjJiIgorCitTUkNSRVYgPSAiMmRlMTgwMjFmY2IxMTM3MGU5YjVhMWZiZTdkY2ZkNjczNTMzYTEzNCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSArPSAiLURCVUlMRF9TSEFSRURfTElCUz1PTiAtREpTT05DUFBfV0lUSF9URVNUUz1PRkYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9rY29uZmlnLWZyb250ZW5kcy9maWxlcy8wMDAxLU1ha2VmaWxlLWVuc3VyZS1mcm9udGVuZHMtZXhpdHMtYmVmb3JlLXdyaXRpbmctaW50by0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9rY29uZmlnLWZyb250ZW5kcy9maWxlcy8wMDAxLU1ha2VmaWxlLWVuc3VyZS1mcm9udGVuZHMtZXhpdHMtYmVmb3JlLXdyaXRpbmctaW50by0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUyNjNjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZW5zdXJlLWZyb250ZW5kcy1leGl0cy1iZWZvcmUtd3JpdGluZy1pbnRvLS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDc4MGIwYjhlNDg1NTFiYTQ5YjAxMWNhZWViMDkxMDFhMDljMTRhNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogRnJpLCAyNiBNYXkgMjAxNyAxNzoxMTozMiArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogZW5zdXJlIGZyb250ZW5kcy8gZXhpdHMgYmVmb3JlIHdyaXRpbmcgaW50byBpdAorCitBcyBwcmV2aW91c2x5LCBpZiBHQ0MgZGVwZW5kZW5jaWVzIGFyZSBub3QgYmVpbmcgd3JpdHRlbiBhbmQgdGhlIGJ1aWxkIGlzIG91dCBvZgordHJlZSB0aGVuIGZyb250ZW5kcy8gd29uJ3QgZXhpc3Qgc28gd2UgbmVlZCB0byBjcmVhdGUgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZYW5uIEUuIE1PUklOIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGY3OTg2Mzc1MTI5ZDFhZGE3ZGM2YWJlZWVjNWI5ZDAwZWY2ZjcxNDkpCitTaWduZWQtb2ZmLWJ5OiBZYW5uIEUuIE1PUklOIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KKy0tLQorIE1ha2VmaWxlLmFtIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAxYmFhMTEwLi40MzRkYjVkIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTcxLDYgKzE3MSw3IEBAIGlmIENPTkRfa2NvbmZpZworIGJpbl9TQ1JJUFRTICs9IGZyb250ZW5kcy9rY29uZmlnCisgCisgZnJvbnRlbmRzL2tjb25maWc6IGZyb250ZW5kcy9rY29uZmlnLmluCisrCSQoTUtESVJfUCkgJChARCkKKyAJJChBTV9WX0dFTikkKFNFRCkgLWUgJ3MvQEtDRkdfTElTVEAvJChrY2ZnX2xpc3QpL2cnIFwKKyAJCSQ8ID4kQAorIAlAY2htb2QgK3ggJEAKKy0tIAorMi4xMi4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2ZpbGVzLzAwMDEtU3dpdGNoLXV0aWxzLWtjb25maWctZGlmZi10by11c2UtUHl0aG9uLTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9rY29uZmlnLWZyb250ZW5kcy9maWxlcy8wMDAxLVN3aXRjaC11dGlscy1rY29uZmlnLWRpZmYtdG8tdXNlLVB5dGhvbi0zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4Zjg5MDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9rY29uZmlnLWZyb250ZW5kcy9maWxlcy8wMDAxLVN3aXRjaC11dGlscy1rY29uZmlnLWRpZmYtdG8tdXNlLVB5dGhvbi0zLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gM2I5YjBmODJjMzNmNzkzYTE0ZDQ0YmYwNmI2YzgxMzZiYzNmYzRiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAxNjo0ODo0MiArMDMwMAorU3ViamVjdDogW1BBVENIXSBTd2l0Y2ggdXRpbHMva2NvbmZpZy1kaWZmIHRvIHVzZSBQeXRob24gMworCitUaGUgc2NyaXB0IHN1cHBvcnRzIGl0LCBidXQgY29udGludWVzIHRvIHJlZmVyIHRvIDIueCBpbiBzaGViYW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdXRpbHMva2NvbmZpZy1kaWZmIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdXRpbHMva2NvbmZpZy1kaWZmIGIvdXRpbHMva2NvbmZpZy1kaWZmCitpbmRleCAwZGIyNjdkLi4xOTE4OWYzIDEwMDc1NQorLS0tIGEvdXRpbHMva2NvbmZpZy1kaWZmCisrKysgYi91dGlscy9rY29uZmlnLWRpZmYKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIGRpZmZjb25maWcgLSBhIHRvb2wgdG8gY29tcGFyZSAuY29uZmlnIGZpbGVzLgorICMKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzQuMTEuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfNC4xMS4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwOGI4YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzQuMTEuMC4xLmJiCkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK1NVTU1BUlkgPSAiTGludXgga2VybmVsIHN0eWxlIGNvbmZpZ3VyYXRpb24gZnJhbWV3b3JrIGZvciBvdGhlciBwcm9qZWN0cyIKK0RFU0NSSVBUSU9OID0gIlRoZSBrY29uZmlnLWZyb250ZW5kcyBwcm9qZWN0IGFpbXMgYXQgY2VudHJhbGlzaW5nIFwKK3RoZSBlZmZvcnQgb2Yga2VlcGluZyBhbiB1cC10by1kYXRlLCBvdXQtb2YtdHJlZSwgcGFja2FnaW5nIG9mIHRoZSBcCitrY29uZmlnIGluZnJhc3RydWN0dXJlLCByZWFkeSBmb3IgdXNlIGJ5IHRoaXJkLXBhcnR5IHByb2plY3RzLiBcCitUaGUga2NvbmZpZy1mcm9udGVuZHMgcGFja2FnZSBwcm92aWRlcyB0aGUga2NvbmZpZyBwYXJzZXIsIGFzIHdlbGwgYXMgYWxsIFwKK3RoZSBmcm9udGVuZHMiCitIT01FUEFHRSA9ICJodHRwOi8veW1vcmluLmlzLWEtZ2Vlay5vcmcvcHJvamVjdHMva2NvbmZpZy1mcm9udGVuZHMiCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05YjhjZjYwZmYzOTc2N2ZmMDRiNjcxZmNhODMwMjQwOCIKK1NFQ1RJT04gPSAiZGV2ZWwiCitERVBFTkRTICs9ICJuY3Vyc2VzIGZsZXggYmlzb24gZ3BlcmYtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMgYmFzaCIKK1NSQ19VUkkgPSAiZ2l0Oi8veW1vcmluLmlzLWEtZ2Vlay5vcmcva2NvbmZpZy1mcm9udGVuZHM7YnJhbmNoPTQuMTEueCBcCisJICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtZW5zdXJlLWZyb250ZW5kcy1leGl0cy1iZWZvcmUtd3JpdGluZy1pbnRvLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN3aXRjaC11dGlscy1rY29uZmlnLWRpZmYtdG8tdXNlLVB5dGhvbi0zLnBhdGNoIgorCitTUkNSRVYgPSAiZjIyZmNlM2EzMDhiZTFjNzc5MGViZWZjNmJiZWRiMzNjNWY3Yzg2YSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJbWtkaXIgLXAgJHtTfS9zY3JpcHRzLy5hdXRvc3R1ZmYvbTQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJbG4gLXMga2NvbmZpZy1jb25mICR7RH0ke2JpbmRpcn0vY29uZgorCWxuIC1zIGtjb25maWctbWNvbmYgJHtEfSR7YmluZGlyfS9tY29uZgorfQorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nY29uZiAtLWRpc2FibGUtcWNvbmYiCisKKyMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5CisjIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KK1NPTElCUyA9ICItJHtAZC5nZXRWYXIoJ1BWJylbOi0yXX0uc28iCitGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmtjb25maWctcGFyc2VyLnNvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvMDAwMS1BZGQtQ01ha2UtYnVpbGQtZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmLzAwMDEtQWRkLUNNYWtlLWJ1aWxkLWZpbGVzLnBhdGNoCmluZGV4IGNkMGQxNDMuLjU2MGMzYTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvMDAwMS1BZGQtQ01ha2UtYnVpbGQtZmlsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi8wMDAxLUFkZC1DTWFrZS1idWlsZC1maWxlcy5wYXRjaApAQCAtNTMsNyArNTMsNyBAQAogKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiArSU5DTFVERSAoJHtDTUFLRV9TT1VSQ0VfRElSfS9WRVJTSU9OLmNtYWtlKQogKwotK1NFVCAoTElCUkNGX0xJQlJBUklFUyAiLWxwdGhyZWFkIC1sZGwiKQorK1NFVCAoTElCUkNGX0xJQlJBUklFUyAiLWxwdGhyZWFkIC1sZGwgLWxhdG9taWMiKQogK0lOQ0xVREVfRElSRUNUT1JJRVMgKCR7Q01BS0VfU09VUkNFX0RJUn0vaW5jbHVkZSkKICsKICtJRiAoTElCUkNGX1VTRV9PUEVOU1NMKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi8wMDAxLUNoZWNrLWZvci1fX3Bvd2VycGNfXy1kZWZpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmLzAwMDEtQ2hlY2stZm9yLV9fcG93ZXJwY19fLWRlZmluZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTFhY2NmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi8wMDAxLUNoZWNrLWZvci1fX3Bvd2VycGNfXy1kZWZpbmUucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBhYzczMTY2NzllMzBmNzAxMzYwNGIxOWFhMDk0OWEwNzQ0ZTkxZDJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMSBKdWwgMjAxNyAxMzowNjozMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBDaGVjayBmb3IgX19wb3dlcnBjX18gZGVmaW5lCisKK0Fsc28gY2hlY2sgZm9yIGdjYydzIGludGVybmFsIGRlZmluZSBmb3IgcHBjIHBsYXRmb3JtCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAgYi9zcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAKK2luZGV4IDI3OGNhODAuLjlmOWM0NDYgMTAwNzU1CistLS0gYS9zcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAKKysrKyBiL3NyYy9SQ0YvQnl0ZU9yZGVyaW5nLmNwcAorQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFJDRiB7CisgCisgICAgIGNvbnN0IEJ5dGVPcmRlciBNYWNoaW5lQnl0ZU9yZGVyID0gQmlnRW5kaWFuOworIAorLSNlbGlmIGRlZmluZWQoIF9fcHBjX18gKQorKyNlbGlmIGRlZmluZWQoIF9fcHBjX18gKSB8fCBkZWZpbmVkKCBfX3Bvd2VycGNfXyApCisgCisgICAgIGNvbnN0IEJ5dGVPcmRlciBNYWNoaW5lQnl0ZU9yZGVyID0gQmlnRW5kaWFuOworIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi8wMDAxLUNsaWVudFN0dWIuaHBwLWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvMDAwMS1DbGllbnRTdHViLmhwcC1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk0OWRlZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvMDAwMS1DbGllbnRTdHViLmhwcC1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBkNzg4NTFiNmY4N2YyNDcyZjA0MTEwMmQ3YjM3MjZmZmMwMDliZmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgorRGF0ZTogVHVlLCA2IEp1biAyMDE3IDA1OjU0OjIwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIENsaWVudFN0dWIuaHBwOiBmaXggYSBjbGFuZyBjb21waWxpbmcgaXNzdWUKKworQSBlcnJvciB3YXMgb2JzZXJ2ZWQgd2l0aCBjbGFuZyBjb21waWxlciwgYXMgZm9sbG93czoKK3wgc3JjL1JDRi9SQ0YuY3BwOjQ5OgorfCBzcmMvUkNGL0NsaWVudFN0dWIuY3BwOjI4OgorfCBpbmNsdWRlL1JDRi9GdXR1cmUuaHBwOjQ5OjI2OiBlcnJvcjogJ2Vucm9sJyBpcyBhIHByaXZhdGUgbWVtYmVyIG9mICdSQ0Y6OkNsaWVudFN0dWInCisKK2l0IGNhbiBiZSBmaXhlZCBieSBkZWNsYXJpbmcgRnV0dXJlIGFzIGEgZnJpZW5kIGNsYXNzIG9mIENsaWVudFN0dWIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+CistLS0KKyBpbmNsdWRlL1JDRi9DbGllbnRTdHViLmhwcCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL1JDRi9DbGllbnRTdHViLmhwcCBiL2luY2x1ZGUvUkNGL0NsaWVudFN0dWIuaHBwCitpbmRleCA5ODgyY2Y0Li44NDY1NjI1IDEwMDc1NQorLS0tIGEvaW5jbHVkZS9SQ0YvQ2xpZW50U3R1Yi5ocHAKKysrKyBiL2luY2x1ZGUvUkNGL0NsaWVudFN0dWIuaHBwCitAQCAtMzcyLDYgKzM3Miw4IEBAIG5hbWVzcGFjZSBSQ0YgeworIAorICAgICBwcml2YXRlOgorIAorKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKysgICAgICAgIGZyaWVuZCBjbGFzcyBGdXR1cmU7CisgICAgICAgICBmcmllbmQgY2xhc3MgRnV0dXJlSW1wbEJhc2U7CisgCisgICAgICAgICB0ZW1wbGF0ZTwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZi9hYXJjaDY0LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmL2FhcmNoNjQtc3VwcG9ydC5wYXRjaAppbmRleCAyOGNkMGZlLi5lMDhlZmI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmL2FhcmNoNjQtc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmL2FhcmNoNjQtc3VwcG9ydC5wYXRjaApAQCAtMywxMSArMywxMSBAQAogLS0tIFJDRi0yLjIuMC4wLm9yaWcvc3JjL1JDRi9CeXRlT3JkZXJpbmcuY3BwCiArKysgUkNGLTIuMi4wLjAvc3JjL1JDRi9CeXRlT3JkZXJpbmcuY3BwCiBAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgUkNGIHsKLSANCi0gICAgIGNvbnN0IEJ5dGVPcmRlciBNYWNoaW5lQnl0ZU9yZGVyID0gTGl0dGxlRW5kaWFuOw0KLSANCi0tI2VsaWYgZGVmaW5lZChfX2FybV9fKQ0KLSsjZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pDQotIA0KLSAgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBMaXR0bGVFbmRpYW47DQotIA0KKyAKKyAgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBMaXR0bGVFbmRpYW47CisgCistI2VsaWYgZGVmaW5lZChfX2FybV9fKQorKyNlbGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAKKyAgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBMaXR0bGVFbmRpYW47CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmL21pcHMtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2YvbWlwcy1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMzI3ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmL21pcHMtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDE5IEBACitJbmRleDogUkNGLTIuMi4wLjAvc3JjL1JDRi9CeXRlT3JkZXJpbmcuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUkNGLTIuMi4wLjAub3JpZy9zcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAKKysrKyBSQ0YtMi4yLjAuMC9zcmMvUkNGL0J5dGVPcmRlcmluZy5jcHAKK0BAIC02NCw2ICs2NCwxNCBAQCBuYW1lc3BhY2UgUkNGIHsKKyAKKyAgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBMaXR0bGVFbmRpYW47CisgCisrI2VsaWYgZGVmaW5lZChfX21pcHNlbF9fKSB8fCBkZWZpbmVkKF9fbWlwczY0ZWxfXykKKysKKysgICAgY29uc3QgQnl0ZU9yZGVyIE1hY2hpbmVCeXRlT3JkZXIgPSBMaXR0bGVFbmRpYW47CisrCisrI2VsaWYgZGVmaW5lZCggX19taXBzX18gKSB8fCBkZWZpbmVkKF9fbWlwczY0X18pCisrCisrICAgIGNvbnN0IEJ5dGVPcmRlciBNYWNoaW5lQnl0ZU9yZGVyID0gQmlnRW5kaWFuOworKworICNlbGlmIGRlZmluZWQoX19iZmluX18pCisgCisgICAgIGNvbnN0IEJ5dGVPcmRlciBNYWNoaW5lQnl0ZU9yZGVyID0gTGl0dGxlRW5kaWFuOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZl8yLjIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZl8yLjIuMC4wLmJiCmluZGV4IDUxYWQ3ZWMuLjQzZWZmNzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2ZfMi4yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmXzIuMi4wLjAuYmIKQEAgLTgsMTkgKzgsMjIgQEAKIFNFQ1RJT04gPSAibGlicyIKIFBSSU9SSVRZID0gIm9wdGlvbmFsIgogTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UudHh0O21kNT0xMzdjMjkzNWI1MWM5NTA2OGE4YjFiYmQ0MzRmZmUyZCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UudHh0O21kNT03NTg2YTMxMmI5ZTk3OGY5ZDZmYWM5YTU3ODBkMWY4NCIKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LmRlbHRhdnNvZnQuY29tL2Rvd25sb2Fkcy9SQ0YtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUNNYWtlLWJ1aWxkLWZpbGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2FhcmNoNjQtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1DbGllbnRTdHViLmhwcC1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlwcy1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLV9fcG93ZXJwY19fLWRlZmluZS5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjdlY2IzYzczZjdlYjY2ZGJhODc5MGI2NTkzNzRmNjkwIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImJiZmNjODhkZTUwMmMzOTYwNDg3OGMzOTVmNTE2YjAzZmZmNGVhYzYzZWI0ZjdmNDRjMDdkNDMzODM5NzEyZGQiCiAKIFMgPSAiJHtXT1JLRElSfS9SQ0YtJHtQVn0iCiAKLWluaGVyaXQgY21ha2UKK2luaGVyaXQgY21ha2UgZG9zMnVuaXgKIAogUEFDS0FHRUNPTkZJRyA/PSAiemxpYiBvcGVuc3NsIHNmLXNlcmlhbGl6YXRpb24gYm9vc3QtZmlsZXN5c3RlbSBib29zdC1hc2lvIHByb3RvYnVmIGpzb24gZGxsIHN0YXRpYyBzaGFyZWQgZGVtb3MiCiBQQUNLQUdFQ09ORklHW3psaWJdID0gIi1ETElCUkNGX1VTRV9aTElCPU9OLC1ETElCUkNGX1VTRV9aTElCPU9GRix6bGliLHpsaWIiCkBAIC0zMSw4ICszNCw4IEBACiBQQUNLQUdFQ09ORklHW2Jvb3N0LXNlcmlhbGl6YXRpb25dID0gIi1ETElCUkNGX1VTRV9CT09TVF9TRVJJQUxJWkFUSU9OPU9OLC1ETElCUkNGX1VTRV9CT09TVF9TRVJJQUxJWkFUSU9OPU9GRixib29zdCwiCiBQQUNLQUdFQ09ORklHW2Jvb3N0LWZpbGVzeXN0ZW1dID0gIi1ETElCUkNGX1VTRV9CT09TVF9GSUxFU1lTVEVNPU9OLC1ETElCUkNGX1VTRV9CT09TVF9GSUxFU1lTVEVNPU9GRixib29zdCwiCiBQQUNLQUdFQ09ORklHW2Jvb3N0LWFzaW9dID0gIi1ETElCUkNGX1VTRV9CT09TVF9BU0lPPU9OLC1ETElCUkNGX1VTRV9CT09TVF9BU0lPPU9GRixib29zdCwiCi1QQUNLQUdFQ09ORklHW3Byb3RvYnVmXSA9ICItRExJQlJDRl9VU0VfUFJPVE9CVUY9T04sLURMSUJSQ0ZfVVNFX1BST1RPQlVGPU9GRixwcm90b2J1ZiwiCi1QQUNLQUdFQ09ORklHW2pzb25dID0gIi1ETElCUkNGX1VTRV9KU09OPU9OLC1ETElCUkNGX1VTRV9KU09OPU9GRixqc29uLXNwaXJpdCwiCitQQUNLQUdFQ09ORklHW3Byb3RvYnVmXSA9ICItRExJQlJDRl9VU0VfUFJPVE9CVUY9T04sLURMSUJSQ0ZfVVNFX1BST1RPQlVGPU9GRixwcm90b2J1Zixwcm90b2J1ZiIKK1BBQ0tBR0VDT05GSUdbanNvbl0gPSAiLURMSUJSQ0ZfVVNFX0pTT049T04sLURMSUJSQ0ZfVVNFX0pTT049T0ZGLGpzb24tc3Bpcml0LGpzb24tc3Bpcml0IgogUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItRExJQlJDRl9VU0VfSVBWNj1PTiwtRExJQlJDRl9VU0VfSVBWNj1PRkYsIgogUEFDS0FHRUNPTkZJR1tjdXN0b20tYWxsb2NhdG9yXSA9ICItRExJQlJDRl9VU0VfQ1VTVE9NX0FMTE9DQVRPUj1PTiwtRExJQlJDRl9VU0VfQ1VTVE9NX0FMTE9DQVRPUj1PRkYsIgogUEFDS0FHRUNPTkZJR1tkbGxdID0gIi1ETElCUkNGX0JVSUxEX0RMTD1PTiwtRExJQlJDRl9CVUlMRF9ETEw9T0ZGLCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnNvbWJvazMvbGlic29tYm9rMy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY3Jvc3MtY29tcGlsaW5nLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlic29tYm9rMy9saWJzb21ib2szLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jcm9zcy1jb21waWxpbmctaXNzdWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE2OTI4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnNvbWJvazMvbGlic29tYm9rMy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY3Jvc3MtY29tcGlsaW5nLWlzc3VlLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gOWMyZmZlODI1ZTI4ZDYzZTJhNzcxMTM1ZjI5N2U4ZmZhYzBkYmU4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTEgSnVsIDIwMTcgMTQ6MzU6MzAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggY3Jvc3MtY29tcGlsaW5nIGlzc3VlCisKK0F2b2lkIGNoZWNraW5nIGZvciBmaWxlIGV4aXN0ZW5jZSB3aGVuIGNyb3NzIGNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggOTk3ODg1Mi4uMDZiMTZlMyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTIwLDkgKzEyMCw2IEBAIEFDX0FSR19XSVRIKHVuaWNvZGUtdmVyc2lvbiwKKyAgIEFDX0hFTFBfU1RSSU5HKC0td2l0aC11bmljb2RlLXZlcnNpb249VkVSU0lPTiwKKyAgIFt2ZXJzaW9uIG9mIFVuaWNvZGUgU3RhbmRhcmQgQDw6QGRlZmF1bHQ9Y3VycmVudCB2ZXJzaW9uQDo+QF0pLAorICAgVU5JQ09ERV9WRVJTSU9OPSR3aXRodmFsLFVOSUNPREVfVkVSU0lPTj0kREVGQVVMVF9VTklDT0RFX1ZFUlNJT04pCistQUNfQ0hFQ0tfRklMRShbbGliLyRVTklDT0RFX1ZFUlNJT04uY10sCistICBBQ19NU0dfUkVTVUxUKCRVTklDT0RFX1ZFUlNJT04pLAorLSAgQUNfTVNHX0VSUk9SKFVua25vd24gVW5pY29kZSB2ZXJzaW9uICRVTklDT0RFX1ZFUlNJT04uKSkKKyBBQ19TVUJTVChVTklDT0RFX1ZFUlNJT04pCisgCisgIyBjaGVjayBpZiBjb2RlIHRvIGRlYnVnIG1lbW9yeSBhbGxvY2F0aW9uIGlzIGVuYWJsZWQuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnNvbWJvazMvbGlic29tYm9rM18yLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnNvbWJvazMvbGlic29tYm9rM18yLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODNlODZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlic29tYm9rMy9saWJzb21ib2szXzIuNC4wLmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiU29tYm9rIC0gVW5pY29kZSBUZXh0IFNlZ21lbnRhdGlvbiBQYWNrYWdlLiIKK0RFU0NSSVBUSU9OID0gIlNvbWJvayBsaWJyYXJ5IHBhY2thZ2UgcGVyZm9ybXMgTGluZSBCcmVha2luZyBBbGdvcml0aG0gZGVzY3JpYmVkIGluIFwKK1VuaWNvZGUgU3RhbmRhcmQgQW5uZXggIzE0IChVQVggIzE0KS4gIEVhc3RfQXNpYW5fV2lkdGggaW5mb3JtYXRpdmUgXAorcHJvcGVydGllcyBkZWZpbmVkIGJ5IEFubmV4ICMxMSAoVUFYICMxMSkgbWF5IGJlIGNvbmNlcm5lZCB0byBkZXRlcm1pbiBcCiticmVha2luZyBwb3NpdGlvbnMuICBUaGlzIHBhY2thZ2UgYWxzbyBpbXBsZW1lbnRzICJkZWZhdWx0IiBHcmFwaGVtZSBcCitDbHVzdGVyIHNlZ21lbnRhdGlvbiBkZXNjcmliZWQgaW4gQW5uZXggIzI5IChVQVggIzI5KS4iCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTHYxKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTViMTIyYTM2ZDBmNmRjNTUyNzlhMGViYzY5ZjNjNjBiIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaGF0dWthbmV6dW1pL3NvbWJvay5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LWNyb3NzLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBzb21ib2stMi40LjAKK1NSQ1JFViA9ICIwMDk4ZDg1YTAzN2VmNWM5OWE2NDhhMzY2OWEwNzc3ODFhNDVlOGNjIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCisjIERpc2FibGUgbGlidGhhaSBzdXBwb3J0CitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxpYnRoYWkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRwLWRkdC9sdHAtZGR0L2x0cC1Eby1ub3QtbGluay1hZ2FpbnN0LWxpYmZsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRwLWRkdC9sdHAtZGR0L2x0cC1Eby1ub3QtbGluay1hZ2FpbnN0LWxpYmZsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTRhYTczLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cC1kZHQvbHRwLWRkdC9sdHAtRG8tbm90LWxpbmstYWdhaW5zdC1saWJmbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNWJkYTljMGFmNTY4NjljNmZmMmMyNWQzOGVhMDg3MTc5Yzk0NmJjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxMSBNYXIgMjAxNCAxNDo0NzoyMiArMDgwMAotU3ViamVjdDogW1BBVENIXSBsdHA6IERvbid0IGxpbmsgYWdhaW5zdCBsaWJmbAotCi1XZSBoYXZlIGFscmVhZHkgZGVmaW5lZCB5eXdyYXAgZnVuY3Rpb24gaW4gc2Nhbi5sIGZpbGUuIEFmdGVyIHRoaXMsIHdlIG5vIGxvbmdlciBuZWVkIHRvCi1saW5rIGFnYWluc3QgbGliZmwgYW5kIHNvIG5vIGxvbmdlciBnZXQgZXJyb3JzIGFib3V0IHVuZGVmaW5lZCByZWZlcmVuY2VzIHRvIHl5bGV4LgotCi1VcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBwYW4vTWFrZWZpbGUgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wYW4vTWFrZWZpbGUgYi9wYW4vTWFrZWZpbGUKLWluZGV4IDRjYzY0NjYuLmE0YjU3NWIgMTAwNjQ0Ci0tLS0gYS9wYW4vTWFrZWZpbGUKLSsrKyBiL3Bhbi9NYWtlZmlsZQotQEAgLTMxLDcgKzMxLDcgQEAgQ1BQRkxBR1MJCSs9IC1Xbm8tZXJyb3IKLSAKLSBDUFBGTEFHUwkJKz0gLUkkKGFic19zcmNkaXIpCi0gCi0tTERMSUJTCQkJKz0gLWxtICQoTEVYTElCKQotK0xETElCUwkJCSs9IC1sbQotIAotIExGTEFHUwkJCSs9IC1sCi0gCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRwLWRkdC9sdHAtZGR0XzEuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRwLWRkdC9sdHAtZGR0XzEuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTNiZDdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cC1kZHQvbHRwLWRkdF8xLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLVNVTU1BUlkgPSAiRW1iZWRkZWQgTGludXggRGV2aWNlIERyaXZlciBUZXN0cyBiYXNlZCBvbiBMaW51eCBUZXN0IFByb2plY3QiCi1IT01FUEFHRSA9ICJodHRwOi8vYXJhZ28tcHJvamVjdC5vcmcvZ2l0L3Byb2plY3RzL3Rlc3QtYXV0b21hdGlvbi9sdHAtZGR0LmdpdCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKLQotUFJPVklERVMgKz0gImx0cCIKLURFUEVORFMgKz0gInppcC1uYXRpdmUgdmlydHVhbC9rZXJuZWwgYWxzYS1saWIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwbS1xYSBzZXJpYWxjaGVjayIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbW9kdWxlLWJhc2Uga2VybmVsLW1vZHVsZS1zcGxpdAotCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotCi1TUkNSRVYgPSAiZjA4NmJlZDZjYzg4YmYxMDJlYWFkMGU5NmNiN2ViZTc5OTQ0YThhZCIKLUJSQU5DSCA/PSAibWFzdGVyIgotCi1TUkNfVVJJID0gImdpdDovL2FyYWdvLXByb2plY3Qub3JnL2dpdC9wcm9qZWN0cy90ZXN0LWF1dG9tYXRpb24vbHRwLWRkdC5naXQ7YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgZmlsZTovL2x0cC1Eby1ub3QtbGluay1hZ2FpbnN0LWxpYmZsLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotTFRQUk9PVCA9ICIvb3B0L2x0cCIKLQotRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgXAotICAgIHByZWZpeD0ke0xUUFJPT1R9IFwKLSAgICBDUk9TU19DT01QSUxFPSR7SE9TVF9QUkVGSVh9IFwKLSAgICBTS0lQX0lEQ0hFQ0s9MSBcCi0gICAgS0VSTkVMX1BBVEg9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9IFwKLSAgICBLRVJORUxfSU5DPSR7U1RBR0lOR19LRVJORUxfRElSfSBcCi0gICAgS0VSTkVMX1VTUl9JTkM9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgIEFMU0FfSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgQUxTQV9MSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICBQTEFURk9STT0ke01BQ0hJTkV9IFwKLSAgICBSQU5MSUI9JHtSQU5MSUJ9IFwKLSAgICBERVNURElSPSR7RH0gXAotICAgIENDPScke0NDfScgXAotICAgIEtFUk5FTF9DQz0nJHtLRVJORUxfQ0N9JyBcCi0iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgJHtMVFBST09UfS8uZGVidWcgXAotICAgICR7TFRQUk9PVH0vYmluLy5kZWJ1ZyBcCi0gICAgJHtMVFBST09UfS9ydW50ZXN0Ly5kZWJ1ZyBcCi0gICAgJHtMVFBST09UfS90ZXN0Y2FzZXMvYmluLy5kZWJ1ZyBcCi0gICAgJHtMVFBST09UfS90ZXN0Y2FzZXMvYmluLyovYmluLy5kZWJ1ZyBcCi0gICAgJHtMVFBST09UfS90ZXN0Y2FzZXMvYmluLyovdGVzdC8uZGVidWcgXAotICAgICR7TFRQUk9PVH0vdGVzdGNhc2VzL2Jpbi9kZHQvLmRlYnVnIFwKLSAgICAke0xUUFJPT1R9L3Rlc3RjYXNlcy9iaW4vZGR0LyovYmluLy5kZWJ1ZyBcCi0gICAgJHtMVFBST09UfS90ZXN0Y2FzZXMvYmluL2RkdC8qL3Rlc3QvLmRlYnVnIFwKLSAgICAke0xUUFJPT1R9L3Rlc3RjYXNlcy9yZWFsdGltZS8qLyovLmRlYnVnIFwKLSIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke0xUUFJPT1R9L2xpYiIKLUZJTEVTXyR7UE59ICs9ICIke0xUUFJPT1R9LyoiCi0KLUtFUk5FTF9NT0RVTEVTX01FVEFfUEFDS0FHRSA9ICIke1BOfSIKLQota21vZGRpciA9ICIvbGliL21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsL2RyaXZlcnMvZGR0IgotCi0jIGx0cCBkb2Vzbid0IHJlZ2VuZXJhdGUgZmZzYi02LjAtcmMyIGNvbmZpZ3VyZSBhbmQgaGFyZGNvZGUgY29uZmlndXJlIGNhbGwuCi0jIHdlIGV4cGxpY2l0bHkgZm9yY2UgcmVnZW5lcmF0aW9uIG9mIHRoYXQgZGlyZWN0b3J5IGFuZCBwYXNzIGNvbmZpZ3VyZSBvcHRpb25zLgotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICAoY2QgdXRpbHMvZmZzYi02LjAtcmMyOyBhdXRvcmVjb25mIC1mdmk7IC4vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30pCi19Ci0KLSMgVGhlIG1ha2VmaWxlcyBtYWtlIGV4Y2Vzc2l2ZSB1c2Ugb2YgbWFrZSAtQyBhbmQgc2V2ZXJhbCBpbmNsdWRlIHRlc3RjYXNlcy5tawotIyB3aGljaCB0cmlnZ2VycyBhIGJ1aWxkIG9mIHRoZSBzeXNjYWxsIGhlYWRlci4gVG8gcmVwcm9kdWNlLCBidWlsZCBsdHAsCi0jIHRoZW4gZGVsZXRlIHRoZSBoZWFkZXIsIHRoZW4gIm1ha2UgLWogWFgiIGFuZCB3YXRjaCByZWdlbi5zaCBydW4gbXVsdGlwbGUKLSMgdGltZXMuIEl0cyBlYXNpZXIgdG8gZ2VuZXJhdGUgdGhpcyBvbmNlIGhlcmUgaW5zdGVhZC4KLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0gICAgKCBtYWtlIC1DICR7Qn0vdGVzdGNhc2VzL2tlcm5lbCBpbmNsdWRlL2xpbnV4X3N5c2NhbGxfbnVtYmVycy5oICkKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQgKCkgewotICAgIHVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTCi0gICAgb2VfcnVubWFrZSBtb2R1bGVzCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsCi0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfSR7a21vZGRpcn0KLSAgICBtdiAke0R9JHtMVFBST09UfS90ZXN0Y2FzZXMvYmluL2RkdC8qLmtvICR7RH0ke2ttb2RkaXJ9Ci19Ci0KLSMgZG9fbWFrZV9zY3JpcHRzIHNob3VsZCBiZSBhIHNlcGFyYXRlIHRhc2sgZm9yIHRoZSBsb2NrIHRvIHdvcmsKLWFkZHRhc2sgbWFrZV9zY3JpcHRzIGJlZm9yZSBkb19jb21waWxlCi1kb19tYWtlX3NjcmlwdHNbbG9ja2ZpbGVzXSA9ICIke1RNUERJUn0va2VybmVsLXNjcmlwdHMubG9jayIKLWRvX21ha2Vfc2NyaXB0c1tkZXB0YXNrXSA9ICJkb19wb3B1bGF0ZV9zeXNyb290IgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy81NjMyNy8KLVBOQkxBQ0tMSVNUW2x0cC1kZHRdID89ICJCUk9LRU46IGZhaWxzIHNpbmNlIGxhc3QgYXV0b3Rvb2xzLmJiY2xhc3MgY2hhbmdlcyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2UvMDAwMS1taXBzLXBsdC5jLURlbGV0ZS1pbmNsdWRlLWVycm9yLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHJhY2UvbHRyYWNlLzAwMDEtbWlwcy1wbHQuYy1EZWxldGUtaW5jbHVkZS1lcnJvci5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YmE3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHJhY2UvbHRyYWNlLzAwMDEtbWlwcy1wbHQuYy1EZWxldGUtaW5jbHVkZS1lcnJvci5oLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMTlhM2U1OTBjOTc0MjBiZDM5NTIzMDFiZjM3NjA2N2M3NWQwZWUzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE4IFNlcCAyMDE3IDIzOjQ1OjU0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1pcHMvcGx0LmM6IERlbGV0ZSBpbmNsdWRlIGVycm9yLmgKKworSXRzIG5vdCBuZWVkZWQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvbGludXgtZ251L21pcHMvcGx0LmMgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9saW51eC1nbnUvbWlwcy9wbHQuYyBiL3N5c2RlcHMvbGludXgtZ251L21pcHMvcGx0LmMKK2luZGV4IDJkODVhZDkuLjljM2FlMmYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2xpbnV4LWdudS9taXBzL3BsdC5jCisrKysgYi9zeXNkZXBzL2xpbnV4LWdudS9taXBzL3BsdC5jCitAQCAtMjQsNyArMjQsNiBAQAorIAorICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHJhY2UvbHRyYWNlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2VfZ2l0LmJiCmluZGV4IDAxYjNiYmUuLmFiZTAxNWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2VfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2VfZ2l0LmJiCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC10YXV0b2xvZ2ljYWwtY29tcGFyZS13YXJuaW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1uMzItbjY0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLVJlY29nbmlzZS1saW51eC1tdXNsLWFzLWEtaG9zdC1PUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pcHMtcGx0LmMtRGVsZXRlLWluY2x1ZGUtZXJyb3IuaC5wYXRjaCBcCiAgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWEvbHVhXzUuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzk5NWMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJMdWEgaXMgYSBwb3dlcmZ1bCBsaWdodC13ZWlnaHQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZGVzaWduZWQgXAotZm9yIGV4dGVuZGluZyBhcHBsaWNhdGlvbnMuIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvcmVhZG1lLmh0bWw7YmVnaW5saW5lPTMxODtlbmRsaW5lPTM1MjttZDU9MTBmZmQ1N2Q1NzRjNjBkNWI0ZDYxODk1NDRlMjA1YTkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmx1YS5vcmcvIgotCi1ERVBFTkRTID0gInJlYWRsaW5lIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmx1YS5vcmcvZnRwL2x1YS0ke1BWfS50YXIuZ3o7bmFtZT10YXJiYWxsc3JjIFwKLSAgICAgICAgICAgZmlsZTovL2x1YS5wYy5pbiBcCi0gICAgICAgICAgICIKLVNSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCBcCi0gICAgICAgICAgICdodHRwOi8vd3d3Lmx1YS5vcmcvdGVzdHMvbHVhLSR7UFZ9LXRlc3RzLnRhci5nejtuYW1lPXRhcmJhbGx0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAnLCAnJywgZCl9IgotCi1TUkNfVVJJW3RhcmJhbGxzcmMubWQ1c3VtXSA9ICI3MDNmNzVjYWE0ZmRmNGE5MTFjMWE3MmU2N2EyNzQ5OCIKLVNSQ19VUklbdGFyYmFsbHNyYy5zaGEyNTZzdW1dID0gIjUxMTNjMDY4ODRmN2RlNDUzY2U1NzcwMmFiYWFjMWQ2MTgzMDdmMzNmNjc4OWZhODcwZTg3YTU5ZDc3MmFjYTIiCi1TUkNfVVJJW3RhcmJhbGx0ZXN0Lm1kNXN1bV0gPSAiNzZmNGZiMDdmMmE0OTcwZDU1NDY0NWFjMjZkZjg2ZGYiCi1TUkNfVVJJW3RhcmJhbGx0ZXN0LnNoYTI1NnN1bV0gPSAiMTMxNTRhYmMyMDk3NjE5NjExOWRiNTMxYjQxNjljZTFjZTUxMTc1NTg3OWQ0MGI0MTkyZTQxNzMyOTEyODdlNSIKLQotaW5oZXJpdCBwa2djb25maWcgYmluY29uZmlnIHB0ZXN0Ci0KLVVDTElCQ19QQVRDSEVTICs9ICJmaWxlOi8vdWNsaWJjLXB0aHJlYWQucGF0Y2giCi1TUkNfVVJJX2FwcGVuZF9saWJjLXVjbGliYyA9ICIke1VDTElCQ19QQVRDSEVTfSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiAtZlBJQyAke0xERkxBR1N9IgotRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfSAtZlBJQycgJ01ZQ0ZMQUdTPSR7Q0ZMQUdTfSAtRExVQV9VU0VfTElOVVggLWZQSUMnIE1ZTERGTEFHUz0nJHtMREZMQUdTfSciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOi91c3IvbG9jYWw6JHtwcmVmaXh9Omcgc3JjL2x1YWNvbmYuaAotfQotCi1kb19jb21waWxlICgpIHsKLSAgICBvZV9ydW5tYWtlIGxpbnV4Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgXAotICAgICAgICAnSU5TVEFMTF9UT1A9JHtEfSR7cHJlZml4fScgXAotICAgICAgICAnSU5TVEFMTF9CSU49JHtEfSR7YmluZGlyfScgXAotICAgICAgICAnSU5TVEFMTF9JTkM9JHtEfSR7aW5jbHVkZWRpcn0vJyBcCi0gICAgICAgICdJTlNUQUxMX01BTj0ke0R9JHttYW5kaXJ9L21hbjEnIFwKLSAgICAgICAgJ0lOU1RBTExfU0hBUkU9JHtEfSR7ZGF0YWRpcn0vbHVhJyBcCi0gICAgICAgICdJTlNUQUxMX0xJQj0ke0R9JHtsaWJkaXJ9JyBcCi0gICAgICAgICdJTlNUQUxMX0NNT0Q9JHtEfSR7bGliZGlyfS9sdWEvNS4zJyBcCi0gICAgICAgIGluc3RhbGwKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0KLSAgICBzZWQgLWUgcy9AVkVSU0lPTkAvJHtQVn0vICR7V09SS0RJUn0vbHVhLnBjLmluID4gJHtXT1JLRElSfS9sdWEucGMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sdWEucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0gICAgcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbHVhLzUuMwotICAgIHJtZGlyICR7RH0ke2RhdGFkaXJ9L2x1YQotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICAgICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtXT1JLRElSfS9sdWEtJHtQVn0tdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWEvbHVhXzUuMy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNGU4ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWEvbHVhXzUuMy40LmJiCkBAIC0wLDAgKzEsNTkgQEAKK0RFU0NSSVBUSU9OID0gIkx1YSBpcyBhIHBvd2VyZnVsIGxpZ2h0LXdlaWdodCBwcm9ncmFtbWluZyBsYW5ndWFnZSBkZXNpZ25lZCBcCitmb3IgZXh0ZW5kaW5nIGFwcGxpY2F0aW9ucy4iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9yZWFkbWUuaHRtbDtiZWdpbmxpbmU9MzE4O2VuZGxpbmU9MzUyO21kNT02MGFhNWNmZGJkNDAwODY1MDE3NzhkOWI2ZWJmMjllZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubHVhLm9yZy8iCisKK0RFUEVORFMgPSAicmVhZGxpbmUiCitTUkNfVVJJID0gImh0dHA6Ly93d3cubHVhLm9yZy9mdHAvbHVhLSR7UFZ9LnRhci5nejtuYW1lPXRhcmJhbGxzcmMgXAorICAgICAgICAgICBmaWxlOi8vbHVhLnBjLmluIFwKKyAgICAgICAgICAgIgorU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsIFwKKyAgICAgICAgICAgJ2h0dHA6Ly93d3cubHVhLm9yZy90ZXN0cy9sdWEtJHtQVn0tdGVzdHMudGFyLmd6O25hbWU9dGFyYmFsbHRlc3QgXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICcsICcnLCBkKX0iCisKK1NSQ19VUklbdGFyYmFsbHNyYy5tZDVzdW1dID0gIjUzYTljNjhiY2MwZWRhNThiZGMyMDk1YWQ1Y2RmYzYzIgorU1JDX1VSSVt0YXJiYWxsc3JjLnNoYTI1NnN1bV0gPSAiZjY4MWFhNTE4MjMzYmM0MDdlMjNhY2YwZjU4ODdjODg0ZjE3NDM2ZjAwMGQ0NTNiMjQ5MWE5ZjExYTUyNDAwYyIKK1NSQ19VUklbdGFyYmFsbHRlc3QubWQ1c3VtXSA9ICJiMTRmZTM3NDhjMWNiMmQ3NGUzYWNkMTk0MzYyOWJhMyIKK1NSQ19VUklbdGFyYmFsbHRlc3Quc2hhMjU2c3VtXSA9ICJiODA3NzEyMzgyNzFjNzI1NjVlNWExMTgzMjkyZWYzMWJkNzE2NjQxNGNkMGQ0M2E4ZWI3OTg0NWZhN2Y1OTlmIgorCitpbmhlcml0IHBrZ2NvbmZpZyBiaW5jb25maWcgcHRlc3QKKworVUNMSUJDX1BBVENIRVMgKz0gImZpbGU6Ly91Y2xpYmMtcHRocmVhZC5wYXRjaCIKK1NSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiR7VUNMSUJDX1BBVENIRVN9IgorCitUQVJHRVRfQ0NfQVJDSCArPSAiIC1mUElDICR7TERGTEFHU30iCitFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9IC1mUElDJyAnTVlDRkxBR1M9JHtDRkxBR1N9IC1ETFVBX1VTRV9MSU5VWCAtZlBJQycgTVlMREZMQUdTPScke0xERkxBR1N9JyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lIHM6L3Vzci9sb2NhbDoke3ByZWZpeH06ZyBzcmMvbHVhY29uZi5oCit9CisKK2RvX2NvbXBpbGUgKCkgeworICAgIG9lX3J1bm1ha2UgbGludXgKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSBcCisgICAgICAgICdJTlNUQUxMX1RPUD0ke0R9JHtwcmVmaXh9JyBcCisgICAgICAgICdJTlNUQUxMX0JJTj0ke0R9JHtiaW5kaXJ9JyBcCisgICAgICAgICdJTlNUQUxMX0lOQz0ke0R9JHtpbmNsdWRlZGlyfS8nIFwKKyAgICAgICAgJ0lOU1RBTExfTUFOPSR7RH0ke21hbmRpcn0vbWFuMScgXAorICAgICAgICAnSU5TVEFMTF9TSEFSRT0ke0R9JHtkYXRhZGlyfS9sdWEnIFwKKyAgICAgICAgJ0lOU1RBTExfTElCPSR7RH0ke2xpYmRpcn0nIFwKKyAgICAgICAgJ0lOU1RBTExfQ01PRD0ke0R9JHtsaWJkaXJ9L2x1YS81LjMnIFwKKyAgICAgICAgaW5zdGFsbAorICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKworICAgIHNlZCAtZSBzL0BWRVJTSU9OQC8ke1BWfS8gJHtXT1JLRElSfS9sdWEucGMuaW4gPiAke1dPUktESVJ9L2x1YS5wYworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x1YS5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKyAgICBybWRpciAke0R9JHtkYXRhZGlyfS9sdWEvNS4zCisgICAgcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbHVhCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgICAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1dPUktESVJ9L2x1YS0ke1BWfS10ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0L2NsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOWVmNmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0L2NsYW5nLnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK2NsYW5nIHByZXRlbmRzIHRvIGJlIGdjYyA0LjIuMCB3aGljaCBpcyBhIGJpZyBsaWUgd2hlbiBpdCBjb21lcwordG8gZmVhdHVyZXMsIGl0cyBzYW1lIGFzIGxhdGVzdCBnY2MKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogTHVhSklULTIuMC41L3NyYy9sal9hcmNoLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMdWFKSVQtMi4wLjUub3JpZy9zcmMvbGpfYXJjaC5oCisrKysgTHVhSklULTIuMC41L3NyYy9sal9hcmNoLmgKK0BAIC0zMTMsNyArMzEzLDcgQEAKKyAjZXJyb3IgIk5lZWQgYXQgbGVhc3QgR0NDIDQuMiBvciBuZXdlciIKKyAjZW5kaWYKKyAjZWxpZiAhTEpfVEFSR0VUX1BTMworLSNpZiAoX19HTlVDX18gPCA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIF9fR05VQ19NSU5PUl9fIDwgMykKKysjaWYgKF9fR05VQ19fIDwgNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiBfX0dOVUNfTUlOT1JfXyA8IDMpICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAjZXJyb3IgIk5lZWQgYXQgbGVhc3QgR0NDIDQuMyBvciBuZXdlciIKKyAjZW5kaWYKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWU5Y2M0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1TVU1NQVJZID0gIkp1c3QtSW4tVGltZSBDb21waWxlciBmb3IgTHVhIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTM5OTJmMWZiYWUzYjhiMDYxZjkwNTZiN2ZjZGE4Y2M2IgotSE9NRVBBR0UgPSAiaHR0cDovL2x1YWppdC5vcmciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x1YWppdC5vcmcvZG93bmxvYWQvTHVhSklULSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1zdHJpcC1hdXRvbWF0aWNhbGx5LXRoaXMtbGVhdmVzLXRoZS1zdHJpcHBpbmcucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImRkOWMzODMwN2YyMjIzYTUwNGNiZmI5NmU0NzdlY2EwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyMGZhNGViMTIzNzUwMjFiZWY2ZTRmMjM3Y2JkMmRkNWQ0OWU1NmJlYjQxNGJlZTA1MmM3NDZiZWVmMTgwN2QiCi0KLVMgPSAiJHtXT1JLRElSfS9MdWFKSVQtJHtQVn0iCi0KLWluaGVyaXQgcGtnY29uZmlnIGJpbmNvbmZpZyBzaXRlaW5mbwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotIyBodHRwOi8vbHVhaml0Lm9yZy9pbnN0YWxsLmh0bWwjY3Jvc3MKLSMgSG9zdCBsdWFqaXQgbmVlZHMgdG8gYmUgY29tcGlsZWQgd2l0aCB0aGUgc2FtZSBwb2ludGVyIHNpemUKLSMgSWYgeW91IHdhbnQgdG8gY3Jvc3MtY29tcGlsZSB0byBhbnkgMzIgYml0IHRhcmdldCBvbiBhbiB4NjQgT1MsCi0jIHlvdSBuZWVkIHRvIGluc3RhbGwgdGhlIG11bHRpbGliIGRldmVsb3BtZW50IHBhY2thZ2UgKGUuZy4KLSMgbGliYzYtZGV2LWkzODYgb24gRGViaWFuL1VidW50dSkgYW5kIGJ1aWxkIGEgMzIgYml0IGhvc3QgcGFydAotIyAoSE9TVF9DQz0iZ2NjIC1tMzIiKS4KLUJVSUxEX0NDX0FSQ0hfYXBwZW5kID0gIiAke0BbJy1tMzInLCcnXVtkLmdldFZhcignU0lURUlORk9fQklUUycsIFRydWUpICE9ICczMiddfSIKLQotIyBUaGUgbHVhIG1ha2VmaWxlcyBleHBlY3QgdGhlIFRBUkdFVF9TWVMgdG8gYmUgZnJvbSB1bmFtZSAtcwotIyBWYWx1ZXM6IFdpbmRvd3MsIExpbnV4LCBEYXJ3aW4sIGlPUywgU3VuT1MsIFBTMywgR05VL2tGcmVlQlNECi1MVUFfVEFSR0VUX09TID0gIlVua25vd24iCi1MVUFfVEFSR0VUX09TX2RhcndpbiA9ICJEYXJ3aW4iCi1MVUFfVEFSR0VUX09TX2xpbnV4ID0gIkxpbnV4IgotTFVBX1RBUkdFVF9PU19saW51eC1nbnVlYWJpID0gIkxpbnV4IgotTFVBX1RBUkdFVF9PU19taW5ndzMyID0gIldpbmRvd3MiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0aGUgbHVhIGJ1aWxkc3lzdGVtJ3MgY29tcGlsZXIgb3B0aW1pemF0aW9ucywgb3IgaXRzCi0jIHN0cmlwcGluZywgYW5kIHdlIGRvbid0IHdhbnQgaXQgdG8gcGljayB1cCBDRkxBR1Mgb3IgTERGTEFHUywgYXMgdGhvc2UgYXBwbHkKLSMgdG8gYm90aCBob3N0IGFuZCB0YXJnZXQgY29tcGlsZXMKLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgUT0gRT0nQDonIFwKLSAgICBcCi0gICAgQ0NPUFQ9IENDT1BUX3g4Nj0gQ0ZMQUdTPSBMREZMQUdTPSBUQVJHRVRfU1RSSVA9J0A6JyBcCi0gICAgXAotICAgICdUQVJHRVRfU1lTPSR7TFVBX1RBUkdFVF9PU30nIFwKLSAgICBcCi0gICAgJ0NDPSR7Q0N9JyBcCi0gICAgJ1RBUkdFVF9BUj0ke0FSfSByY3VzJyBcCi0gICAgJ1RBUkdFVF9DRkxBR1M9JHtDRkxBR1N9JyBcCi0gICAgJ1RBUkdFVF9MREZMQUdTPSR7TERGTEFHU30nIFwKLSAgICAnVEFSR0VUX1NITERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJ0hPU1RfQ0M9JHtCVUlMRF9DQ30nIFwKLSAgICAnSE9TVF9DRkxBR1M9JHtCVUlMRF9DRkxBR1N9JyBcCi0gICAgJ0hPU1RfTERGTEFHUz0ke0JVSUxEX0xERkxBR1N9JyBcCi0gICAgXAotICAgICdQUkVGSVg9JHtwcmVmaXh9JyBcCi0gICAgJ01VTFRJTElCPSR7YmFzZWxpYn0nIFwKLSIKLQotZG9fY29tcGlsZSAoKSB7Ci0gICAgb2VfcnVubWFrZQotfQotCi0jIFRoZXJlJ3MgSU5TVEFMTF9MSUIgYW5kIElOU1RBTExfU0hBUkUgYWxzbywgYnV0IHRoZSBsdWEgYmluYXJ5IGhhcmRjb2RlcyB0aGUKLSMgJy9zaGFyZScgYW5kICcvJyArIExVQV9NVUxUSUxJQiBwYXRocywgc28gd2UgZG9uJ3Qgd2FudCB0byBicmVhayB0aG9zZQotIyBleHBlY3RhdGlvbnMuCi1FWFRSQV9PRU1BS0VJTlNUID0gIlwKLSAgICAnREVTVERJUj0ke0R9JyBcCi0gICAgJ0lOU1RBTExfQklOPSR7RH0ke2JpbmRpcn0nIFwKLSAgICAnSU5TVEFMTF9JTkM9JHtEfSR7aW5jbHVkZWRpcn0vbHVhaml0LSQoTUFKVkVSKS4kKE1JTlZFUiknIFwKLSAgICAnSU5TVEFMTF9NQU49JHtEfSR7bWFuZGlyfS9tYW4xJyBcCi0iCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlICR7RVhUUkFfT0VNQUtFSU5TVH0gaW5zdGFsbAotICAgIHJtZGlyICR7RH0ke2RhdGFkaXJ9L2x1YS81LiogXAotICAgICAgICAgICR7RH0ke2RhdGFkaXJ9L2x1YSBcCi0gICAgICAgICAgJHtEfSR7bGliZGlyfS9sdWEvNS4qIFwKLSAgICAgICAgICAke0R9JHtsaWJkaXJ9L2x1YQotfQotCi1QQUNLQUdFUyArPSAnbHVhaml0LWNvbW1vbicKLQotIyBTZWUgdGhlIGNvbW1lbnQgZm9yIEVYVFJBX09FTUFLRUlOU1QuIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGUgaGFyZGNvZGVkCi0jIHBhdGhzIGFyZSBwYWNrYWdlZCByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIGxpYmRpciBhbmQgZGF0YWRpciBwYXRocyBhcmUuCi1GSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9LyR7YmFzZWxpYn0gJHtwcmVmaXh9L3NoYXJlIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJsdWFqaXQtNS4xLnNvLjIgXAotICAgICR7bGliZGlyfS9saWJsdWFqaXQtNS4xLnNvLiR7UFZ9IFwKLSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmx1YWppdC01LjEuYSBcCi0gICAgJHtsaWJkaXJ9L2xpYmx1YWppdC01LjEuc28gXAotICAgICR7bGliZGlyfS9wa2djb25maWcvbHVhaml0LnBjIFwKLSIKLUZJTEVTX2x1YWppdC1jb21tb24gPSAiJHtkYXRhZGlyfS8ke0JQTn0tJHtQVn0iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYzM4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC41LmJiCkBAIC0wLDAgKzEsOTIgQEAKK1NVTU1BUlkgPSAiSnVzdC1Jbi1UaW1lIENvbXBpbGVyIGZvciBMdWEiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9MTBhOTZjOTM0MDNhZmZjYzM0NzY1ZjRjMjYxMmJjMjIiCitIT01FUEFHRSA9ICJodHRwOi8vbHVhaml0Lm9yZyIKKworU1JDX1VSSSA9ICJodHRwOi8vbHVhaml0Lm9yZy9kb3dubG9hZC9MdWFKSVQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXN0cmlwLWF1dG9tYXRpY2FsbHktdGhpcy1sZWF2ZXMtdGhlLXN0cmlwcGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGFuZy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNDgzNTMyMDJjYmNhY2FiODRlZTQxYTVhNzBlYTBhMmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc0YjFmODI5N2M2OTc4MjFmNTYxZjliNzNiNTdmZmQ0MTllZDhmNDI3OGM4MmUwNWI0ODgwNmQzMGMxZTk3OSIKKworUyA9ICIke1dPUktESVJ9L0x1YUpJVC0ke1BWfSIKKworaW5oZXJpdCBwa2djb25maWcgYmluY29uZmlnIHNpdGVpbmZvCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIGh0dHA6Ly9sdWFqaXQub3JnL2luc3RhbGwuaHRtbCNjcm9zcworIyBIb3N0IGx1YWppdCBuZWVkcyB0byBiZSBjb21waWxlZCB3aXRoIHRoZSBzYW1lIHBvaW50ZXIgc2l6ZQorIyBJZiB5b3Ugd2FudCB0byBjcm9zcy1jb21waWxlIHRvIGFueSAzMiBiaXQgdGFyZ2V0IG9uIGFuIHg2NCBPUywKKyMgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgbXVsdGlsaWIgZGV2ZWxvcG1lbnQgcGFja2FnZSAoZS5nLgorIyBsaWJjNi1kZXYtaTM4NiBvbiBEZWJpYW4vVWJ1bnR1KSBhbmQgYnVpbGQgYSAzMiBiaXQgaG9zdCBwYXJ0CisjIChIT1NUX0NDPSJnY2MgLW0zMiIpLgorQlVJTERfQ0NfQVJDSF9hcHBlbmQgPSAiICR7QFsnLW0zMicsJyddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJywgVHJ1ZSkgIT0gJzMyJ119IgorCisjIFRoZSBsdWEgbWFrZWZpbGVzIGV4cGVjdCB0aGUgVEFSR0VUX1NZUyB0byBiZSBmcm9tIHVuYW1lIC1zCisjIFZhbHVlczogV2luZG93cywgTGludXgsIERhcndpbiwgaU9TLCBTdW5PUywgUFMzLCBHTlUva0ZyZWVCU0QKK0xVQV9UQVJHRVRfT1MgPSAiVW5rbm93biIKK0xVQV9UQVJHRVRfT1NfZGFyd2luID0gIkRhcndpbiIKK0xVQV9UQVJHRVRfT1NfbGludXggPSAiTGludXgiCitMVUFfVEFSR0VUX09TX2xpbnV4LWdudWVhYmkgPSAiTGludXgiCitMVUFfVEFSR0VUX09TX21pbmd3MzIgPSAiV2luZG93cyIKKworIyBXZSBkb24ndCB3YW50IHRoZSBsdWEgYnVpbGRzeXN0ZW0ncyBjb21waWxlciBvcHRpbWl6YXRpb25zLCBvciBpdHMKKyMgc3RyaXBwaW5nLCBhbmQgd2UgZG9uJ3Qgd2FudCBpdCB0byBwaWNrIHVwIENGTEFHUyBvciBMREZMQUdTLCBhcyB0aG9zZSBhcHBseQorIyB0byBib3RoIGhvc3QgYW5kIHRhcmdldCBjb21waWxlcworRVhUUkFfT0VNQUtFID0gIlwKKyAgICBRPSBFPSdAOicgXAorICAgIFwKKyAgICBDQ09QVD0gQ0NPUFRfeDg2PSBDRkxBR1M9IExERkxBR1M9IFRBUkdFVF9TVFJJUD0nQDonIFwKKyAgICBcCisgICAgJ1RBUkdFVF9TWVM9JHtMVUFfVEFSR0VUX09TfScgXAorICAgIFwKKyAgICAnQ0M9JHtDQ30nIFwKKyAgICAnVEFSR0VUX0FSPSR7QVJ9IHJjdXMnIFwKKyAgICAnVEFSR0VUX0NGTEFHUz0ke0NGTEFHU30nIFwKKyAgICAnVEFSR0VUX0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICdUQVJHRVRfU0hMREZMQUdTPSR7TERGTEFHU30nIFwKKyAgICAnSE9TVF9DQz0ke0JVSUxEX0NDfScgXAorICAgICdIT1NUX0NGTEFHUz0ke0JVSUxEX0NGTEFHU30nIFwKKyAgICAnSE9TVF9MREZMQUdTPSR7QlVJTERfTERGTEFHU30nIFwKKyAgICBcCisgICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKKyAgICAnTVVMVElMSUI9JHtiYXNlbGlifScgXAorIgorCitkb19jb21waWxlICgpIHsKKyAgICBvZV9ydW5tYWtlCit9CisKKyMgVGhlcmUncyBJTlNUQUxMX0xJQiBhbmQgSU5TVEFMTF9TSEFSRSBhbHNvLCBidXQgdGhlIGx1YSBiaW5hcnkgaGFyZGNvZGVzIHRoZQorIyAnL3NoYXJlJyBhbmQgJy8nICsgTFVBX01VTFRJTElCIHBhdGhzLCBzbyB3ZSBkb24ndCB3YW50IHRvIGJyZWFrIHRob3NlCisjIGV4cGVjdGF0aW9ucy4KK0VYVFJBX09FTUFLRUlOU1QgPSAiXAorICAgICdERVNURElSPSR7RH0nIFwKKyAgICAnSU5TVEFMTF9CSU49JHtEfSR7YmluZGlyfScgXAorICAgICdJTlNUQUxMX0lOQz0ke0R9JHtpbmNsdWRlZGlyfS9sdWFqaXQtJChNQUpWRVIpLiQoTUlOVkVSKScgXAorICAgICdJTlNUQUxMX01BTj0ke0R9JHttYW5kaXJ9L21hbjEnIFwKKyIKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgJHtFWFRSQV9PRU1BS0VJTlNUfSBpbnN0YWxsCisgICAgcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbHVhLzUuKiBcCisgICAgICAgICAgJHtEfSR7ZGF0YWRpcn0vbHVhIFwKKyAgICAgICAgICAke0R9JHtsaWJkaXJ9L2x1YS81LiogXAorICAgICAgICAgICR7RH0ke2xpYmRpcn0vbHVhCit9CisKK1BBQ0tBR0VTICs9ICdsdWFqaXQtY29tbW9uJworCisjIFNlZSB0aGUgY29tbWVudCBmb3IgRVhUUkFfT0VNQUtFSU5TVC4gVGhpcyBpcyBuZWVkZWQgdG8gZW5zdXJlIHRoZSBoYXJkY29kZWQKKyMgcGF0aHMgYXJlIHBhY2thZ2VkIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgbGliZGlyIGFuZCBkYXRhZGlyIHBhdGhzIGFyZS4KK0ZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vJHtiYXNlbGlifSAke3ByZWZpeH0vc2hhcmUiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYmx1YWppdC01LjEuc28uMiBcCisgICAgJHtsaWJkaXJ9L2xpYmx1YWppdC01LjEuc28uJHtQVn0gXAorIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGlibHVhaml0LTUuMS5hIFwKKyAgICAke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zbyBcCisgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9sdWFqaXQucGMgXAorIgorRklMRVNfbHVhaml0LWNvbW1vbiA9ICIke2RhdGFkaXJ9LyR7QlBOfS0ke1BWfSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbmF0aXZlX2JpbmRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL25hdGl2ZV9iaW5kaXIucGF0Y2gKaW5kZXggNTNlZWZmNy4uOTkzZTk3NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbmF0aXZlX2JpbmRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9uYXRpdmVfYmluZGlyLnBhdGNoCkBAIC0xLDggKzEsMTMgQEAKK1RoZXJlIGFyZSBzb21lIGRpc2N1c3Npb25zIHVwc3RyZWFtIHRvIG1lcmdlIHRoaXMgcGF0Y2gsIGJ1dCBJIHByZXNvbmFseSBiZWxpZXZlCit0aGF0IGlzIGlzIE9FIG9ubHkuIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy8xODQ5I2lzc3VlY29tbWVudC0zMDM3MzAzMjMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgogZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzLnB5IGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMucHkKLWluZGV4IGRhNzNhNTdiN2VjZC4uMjIxMDBmNjljNTgwIDEwMDY0NAoraW5kZXggMDRhMjJmOTg1OTQxLi4zZTMzYmM0YTc5ZTcgMTAwNjQ0CiAtLS0gYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy5weQogKysrIGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMucHkKLUBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIERlcGVuZGVuY3koKToKK0BAIC05NSw3ICs5NSw3IEBAIGNsYXNzIERlcGVuZGVuY3k6CiAgICAgIGRlZiBuZWVkX3RocmVhZHMoc2VsZik6CiAgICAgICAgICByZXR1cm4gRmFsc2UKICAKQEAgLTExLDcgKzE2LDcgQEAKICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKCdUcmllZCB0byBnZXQgYSBwa2ctY29uZmlnIHZhcmlhYmxlIGZyb20gYSBub24tcGtnY29uZmlnIGRlcGVuZGVuY3kuJykKICAKICBjbGFzcyBJbnRlcm5hbERlcGVuZGVuY3koRGVwZW5kZW5jeSk6Ci1AQCAtMTc3LDggKzE3NywxMiBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgorQEAgLTIyNCw4ICsyMjQsMTIgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKICAgICAgICAgIHJldHVybiBzLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBzZWxmLmlzX2ZvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbl9yZXFzKQogIApAQCAtMjMsMTAgKzI4LDEwIEBACiArICAgICAgICBlbHNlOgogKyAgICAgICAgICAgIHBrZ2JpbiA9IFtzZWxmLnBrZ2Jpbl0KICsgICAgICAgIHAsIG91dCA9IFBvcGVuX3NhZmUocGtnYmluICsgYXJncywgZW52PW9zLmVudmlyb24pWzA6Ml0KLSAgICAgICAgIHJldHVybiAocC5yZXR1cm5jb2RlLCBvdXQuc3RyaXAoKSkKKyAgICAgICAgIHJldHVybiBwLnJldHVybmNvZGUsIG91dC5zdHJpcCgpCiAgCiAgICAgIGRlZiBfc2V0X2NhcmdzKHNlbGYpOgotQEAgLTIxMiw4ICsyMTYsOCBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgorQEAgLTI1OSw4ICsyNjMsOCBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgogICAgICAgICAgICAgICAgICBzZWxmLmlzX2xpYnRvb2wgPSBUcnVlCiAgICAgICAgICAgICAgc2VsZi5saWJzLmFwcGVuZChsaWIpCiAgCkBAIC0zNywxMiArNDIsOCBAQAogICAgICAgICAgdmFyaWFibGUgPSAnJwogICAgICAgICAgaWYgcmV0ICE9IDA6CiAgICAgICAgICAgICAgaWYgc2VsZi5yZXF1aXJlZDoKLUBAIC05MzMsMTAgKzkzNywxMCBAQCBjbGFzcyBRdEJhc2VEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgotICAgICAgICAgICAgIGNvcmVrd2FyZ3MgPSB7J3JlcXVpcmVkJzogJ2ZhbHNlJywgJ3NpbGVudCc6ICd0cnVlJ30KLSAgICAgICAgICAgICBjb3JlID0gUGtnQ29uZmlnRGVwZW5kZW5jeShzZWxmLnF0cGtnbmFtZSArICdDb3JlJywgZW52LCBjb3Jla3dhcmdzKQotICAgICAgICAgIyBVc2VkIGJ5IHNlbGYuY29tcGlsZXJzX2RldGVjdCgpCi0tICAgICAgICBzZWxmLmJpbmRpciA9IGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaG9zdF9iaW5zJykKLSsgICAgICAgIHNlbGYuYmluZGlyID0gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB1c2VfbmF0aXZlPVRydWUpCitAQCAtMTA5MSw3ICsxMDk1LDcgQEAgY2xhc3MgUXRCYXNlRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKKyAgICAgICAgIHNlbGYuYmluZGlyID0gc2VsZi5nZXRfcGtnY29uZmlnX2hvc3RfYmlucyhjb3JlKQogICAgICAgICAgaWYgbm90IHNlbGYuYmluZGlyOgogICAgICAgICAgICAgICMgSWYgZXhlY19wcmVmaXggaXMgbm90IGRlZmluZWQsIHRoZSBwa2ctY29uZmlnIGZpbGUgaXMgYnJva2VuCiAtICAgICAgICAgICAgcHJlZml4ID0gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdleGVjX3ByZWZpeCcpCkBAIC01MCwzICs1MSwyMSBAQAogICAgICAgICAgICAgIGlmIHByZWZpeDoKICAgICAgICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSBvcy5wYXRoLmpvaW4ocHJlZml4LCAnYmluJykKICAKK0BAIC0xMjAyLDcgKzEyMDYsNyBAQCBjbGFzcyBRdDVEZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgorICAgICAgICAgUXRCYXNlRGVwZW5kZW5jeS5fX2luaXRfXyhzZWxmLCAncXQ1JywgZW52LCBrd2FyZ3MpCisgCisgICAgIGRlZiBnZXRfcGtnY29uZmlnX2hvc3RfYmlucyhzZWxmLCBjb3JlKToKKy0gICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycpCisrICAgICAgICByZXR1cm4gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB1c2VfbmF0aXZlPVRydWUpCisgCisgY2xhc3MgUXQ0RGVwZW5kZW5jeShRdEJhc2VEZXBlbmRlbmN5KToKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVudiwga3dhcmdzKToKK0BAIC0xMjE2LDcgKzEyMjAsNyBAQCBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgorICAgICAgICAgYXBwbGljYXRpb25zID0gWydtb2MnLCAndWljJywgJ3JjYycsICdsdXBkYXRlJywgJ2xyZWxlYXNlJ10KKyAgICAgICAgIGZvciBhcHBsaWNhdGlvbiBpbiBhcHBsaWNhdGlvbnM6CisgICAgICAgICAgICAgdHJ5OgorLSAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24pKQorKyAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24sIHVzZV9uYXRpdmU9VHJ1ZSkpCisgICAgICAgICAgICAgZXhjZXB0IE1lc29uRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICBwYXNzCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjM3LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjM3LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiYmVhNjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC4zNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL21lc29uYnVpbGQuY29tIgotU1VNTUFSWSA9ICJBIGhpZ2ggcGVyZm9ybWFuY2UgYnVpbGQgc3lzdGVtIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi5naXQgXAotICAgIGZpbGU6Ly9uYXRpdmVfYmluZGlyLnBhdGNoIFwKLSIKLQotU1JDUkVWID0gIjNkNGJmZGNiMjIzMTRlYTdkYjQ1YTViMDc1ZjhiMmE5YzE0OThhYWIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIm5pbmphIHB5dGhvbjMtY29yZSBweXRob24zLW1vZHVsZXMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40MC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40MC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NjQ0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQwLjEuYmIKQEAgLTAsMCArMSwyMCBAQAorSE9NRVBBR0UgPSAiaHR0cDovL21lc29uYnVpbGQuY29tIgorU1VNTUFSWSA9ICJBIGhpZ2ggcGVyZm9ybWFuY2UgYnVpbGQgc3lzdGVtIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi5naXQgXAorICAgIGZpbGU6Ly9uYXRpdmVfYmluZGlyLnBhdGNoIFwKKyIKKworU1JDUkVWID0gImIyNWQzZTRkM2YyYjRkMzcwMjlhNTA3Y2MwODliZGRlNjQzYzYyNDAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gPSAibmluamEgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbW9kdWxlcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tcGljaC9tcGljaF8zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tcGljaC9tcGljaF8zLjIuYmIKaW5kZXggNDUzN2E2Ni4uNGEyYzM3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXBpY2gvbXBpY2hfMy4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21waWNoL21waWNoXzMuMi5iYgpAQCAtMTIsOCArMTIsNiBAQAogU1JDX1VSSVttZDVzdW1dID0gImY0MTRjZmE3NzA5OWNkMWZhMWE1YWU0ZTIyZGI1MDhhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3Nzg2NzlhNmI2OTNkN2I3Y2FmZjM3ZmY5ZDI4NTZkYzJiZmM1MTMxOGJmODM3Mzg1OWJmYTc0MjUzZGEzZGMiCiAKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJCQVNIX1NIRUxMPSR7YmFzZV9iaW5kaXJ9L2Jhc2giCi0KIFJERVBFTkRTXyR7UE59ICs9ICJiYXNoIHBlcmwgbGlieG1sMiIKIFMgPSAiJHtXT1JLRElSfS8ke0JQfSIKIApAQCAtMjYsNiArMjQsOCBAQAogICAgIC0tZGlzYWJsZS1mYyBcCiAgICAgLS1kaXNhYmxlLWZvcnRyYW4gXAogICAgIC0tZGlzYWJsZS1jeHggXAorICAgIEJBU0hfU0hFTEw9JyR7VVNSQklOUEFUSH0vZW52IGJhc2gnIFwKKyAgICBQRVJMPScke1VTUkJJTlBBVEh9L2VudiBwZXJsJyBcCiAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stYy8wMDAxLUNvbW1lbnQtaW50ZW50aW9uYWwtZmFsbHRocm91Z2gtaW4tY2FzZS1zdGF0ZW1lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWMvMDAwMS1Db21tZW50LWludGVudGlvbmFsLWZhbGx0aHJvdWdoLWluLWNhc2Utc3RhdGVtZW50cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM4ODI5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stYy8wMDAxLUNvbW1lbnQtaW50ZW50aW9uYWwtZmFsbHRocm91Z2gtaW4tY2FzZS1zdGF0ZW1lbnRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSAxNWQ4YmI2NzkyYzk2MzlkODVhOWZmZTJhYzgxNDMxZjFiOTg2YzIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjIgQXByIDIwMTcgMDg6NTM6NTAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gQ29tbWVudCBpbnRlbnRpb25hbCBmYWxsdGhyb3VnaCBpbiBjYXNlIHN0YXRlbWVudHMKLQotRml4ZXMgYnVpbGQgd2l0aCBnY2M3Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpbmNsdWRlL21zZ3BhY2svdjEvYWRhcHRvci9kZXRhaWwvY3BwMDNfZGVmaW5lX2FycmF5LmhwcCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbXNncGFjay92MS9hZGFwdG9yL2RldGFpbC9jcHAwM19kZWZpbmVfYXJyYXkuaHBwIGIvaW5jbHVkZS9tc2dwYWNrL3YxL2FkYXB0b3IvZGV0YWlsL2NwcDAzX2RlZmluZV9hcnJheS5ocHAKLWluZGV4IGIzNWMyMWE3Li40YzQ2M2E5MCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbXNncGFjay92MS9hZGFwdG9yL2RldGFpbC9jcHAwM19kZWZpbmVfYXJyYXkuaHBwCi0rKysgYi9pbmNsdWRlL21zZ3BhY2svdjEvYWRhcHRvci9kZXRhaWwvY3BwMDNfZGVmaW5lX2FycmF5LmhwcAotQEAgLTEwNSw2ICsxMDUsNyBAQCBzdHJ1Y3QgZGVmaW5lX2FycmF5PEEwLCBBMT4gewotICAgICAgICAgICAgIHN3aXRjaChzaXplKSB7Ci0gICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICBjYXNlIDI6IHB0clsxXS5jb252ZXJ0KGExKTsKLSsgICAgICAgICAgICAvL2ZhbGx0aHJvdWdoCi0gICAgICAgICAgICAgY2FzZSAxOiBwdHJbMF0uY29udmVydChhMCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotQEAgLTE5Myw4ICsxOTQsMTEgQEAgc3RydWN0IGRlZmluZV9hcnJheTxBMCwgQTEsIEEyLCBBMz4gewotICAgICAgICAgICAgIHN3aXRjaChzaXplKSB7Ci0gICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICBjYXNlIDQ6IHB0clszXS5jb252ZXJ0KGEzKTsKLSsgICAgICAgICAgICAvL2ZhbGx0aHJvdWdoCi0gICAgICAgICAgICAgY2FzZSAzOiBwdHJbMl0uY29udmVydChhMik7Ci0rICAgICAgICAgICAgLy9mYWxsdGhyb3VnaAotICAgICAgICAgICAgIGNhc2UgMjogcHRyWzFdLmNvbnZlcnQoYTEpOwotKyAgICAgICAgICAgIC8vZmFsbHRocm91Z2gKLSAgICAgICAgICAgICBjYXNlIDE6IHB0clswXS5jb252ZXJ0KGEwKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stY18yLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjU1ZDk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJNZXNzYWdlUGFjayBpbXBsZW1lbnRhdGlvbiBmb3IgQyBhbmQgQysrIgotREVTQ1JJUFRJT04gPSAiTWVzc2FnZVBhY2sgaXMgYW4gZWZmaWNpZW50IGJpbmFyeSBzZXJpYWxpemF0aW9uIGZvcm1hdC4gSXQncyBsaWtlIEpTT04uIGJ1dCBmYXN0IGFuZCBzbWFsbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9tc2dwYWNrLm9yZy9pbmRleC5odG1sIgotTElDRU5TRSA9ICJCU0wtMS4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTk9USUNFO21kNT03YTg1OGMwNzQ3MjM2MDhlMDg2MTQwNjFkYzA0NDM1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0wNjM5YzQyMDliNmYyYWJmMTQzN2M4MTNiMjA4ZjJkMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVBWIC49ICIrZ2l0JHtTUkNQVn0iCi0KLVNSQ1JFViA9ICIyMGVmMWY5MjViMDA3ZjE3MGFiMWMyNTdlNGFhNjFmZGQwOTI3NzczIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbXNncGFjay9tc2dwYWNrLWMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db21tZW50LWludGVudGlvbmFsLWZhbGx0aHJvdWdoLWluLWNhc2Utc3RhdGVtZW50cy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvbXNncGFjay8qLmNtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stY18yLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWY2OTU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjUuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJNZXNzYWdlUGFjayBpbXBsZW1lbnRhdGlvbiBmb3IgQyBhbmQgQysrIgorREVTQ1JJUFRJT04gPSAiTWVzc2FnZVBhY2sgaXMgYW4gZWZmaWNpZW50IGJpbmFyeSBzZXJpYWxpemF0aW9uIGZvcm1hdC4gSXQncyBsaWtlIEpTT04uIGJ1dCBmYXN0IGFuZCBzbWFsbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9tc2dwYWNrLm9yZy9pbmRleC5odG1sIgorTElDRU5TRSA9ICJCU0wtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTk9USUNFO21kNT03YTg1OGMwNzQ3MjM2MDhlMDg2MTQwNjFkYzA0NDM1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0wNjM5YzQyMDliNmYyYWJmMTQzN2M4MTNiMjA4ZjJkMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICI3YTk4MTM4ZjI3ZjI3MjkwZTY4MGJmOGZiZjFmOGQxYjA4OWJmMTM4IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbXNncGFjay9tc2dwYWNrLWMgXAorICAgICAgICAgICAiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlL21zZ3BhY2svKi5jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuNy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMmUzYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIk5pbmphIGlzIGEgc21hbGwgYnVpbGQgc3lzdGVtIHdpdGggYSBmb2N1cyBvbiBzcGVlZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vbWFydGluZS5naXRodWIuY29tL25pbmphLyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE4MTU4NmE2NGFkNGU0NzZjNzkxY2RhN2UyZjJjNTJlIgotCi1ERVBFTkRTID0gInJlMmMtbmF0aXZlIG5pbmphLW5hdGl2ZSIKLQotU1JDUkVWID0gIjcxN2I3YjRhMzFkYjYwMjcyMDc1ODhjMGZiODljM2VhZDM4NDc0N2IiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tYXJ0aW5lL25pbmphLmdpdDticmFuY2g9cmVsZWFzZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgLi9jb25maWd1cmUucHkgLS1ib290c3RyYXAKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICAuL2NvbmZpZ3VyZS5weQotICAgIG5pbmphCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vbmluamEgJHtEfSR7YmluZGlyfS8KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzLzAwMDEtRGlzYWJsZS1ydW5uaW5nLWd5cC1maWxlcy1mb3ItYnVuZGxlZC1kZXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzLzAwMDEtRGlzYWJsZS1ydW5uaW5nLWd5cC1maWxlcy1mb3ItYnVuZGxlZC1kZXBzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNGE0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBjMmFmZjE2Y2MxOTZhNjFmNGFiMWNkYWU0YTkxYzc5MjYxMjNjMjM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWnV6YW5hIFN2ZXRsaWtvdmEgPHpzdmV0bGlrQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDI3IEFwciAyMDE3IDE0OjI1OjQyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgcnVubmluZyBneXAgb24gc2hhcmVkIGRlcHMKKworLS0tCisgTWFrZWZpbGUgfCA3ICsrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMGEyMTdiZDg5My4uZTEyMjlhZDA3ZiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTc5LDEwICs3OSw5IEBAICQoTk9ERV9HX0VYRSk6IGNvbmZpZy5neXBpIG91dC9NYWtlZmlsZQorIAkkKE1BS0UpIC1DIG91dCBCVUlMRFRZUEU9RGVidWcgVj0kKFYpCisgCWlmIFsgISAtciAkQCAtbyAhIC1MICRAIF07IHRoZW4gbG4gLWZzIG91dC9EZWJ1Zy8kKE5PREVfRVhFKSAkQDsgZmkKKyAKKy1vdXQvTWFrZWZpbGU6IGNvbW1vbi5neXBpIGRlcHMvdXYvdXYuZ3lwIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKKy0gICAgICAgICAgICAgIGRlcHMvemxpYi96bGliLmd5cCBkZXBzL3Y4L2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIFwKKy0gICAgICAgICAgICAgIGRlcHMvdjgvZ3lwZmlsZXMvZmVhdHVyZXMuZ3lwaSBkZXBzL3Y4L3NyYy92OC5neXAgbm9kZS5neXAgXAorLSAgICAgICAgICAgICAgY29uZmlnLmd5cGkKKytvdXQvTWFrZWZpbGU6IGNvbW1vbi5neXBpIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKKysgICAgICAgICAgICAgIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgZGVwcy92OC9neXBmaWxlcy9mZWF0dXJlcy5neXBpIFwKKysJCQkgIGRlcHMvdjgvc3JjL3Y4Lmd5cCBub2RlLmd5cCBjb25maWcuZ3lwaQorIAkkKFBZVEhPTikgdG9vbHMvZ3lwX25vZGUucHkgLWYgbWFrZQorIAorIGNvbmZpZy5neXBpOiBjb25maWd1cmUKKy0tIAorMi4xMi4yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDEtRGlzYWJsZS1ydW5uaW5nLWd5cC1maWxlcy1mb3ItYnVuZGxlZC1kZXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjRhNDY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGMyYWZmMTZjYzE5NmE2MWY0YWIxY2RhZTRhOTFjNzkyNjEyM2MyMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBadXphbmEgU3ZldGxpa292YSA8enN2ZXRsaWtAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMjcgQXByIDIwMTcgMTQ6MjU6NDIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBydW5uaW5nIGd5cCBvbiBzaGFyZWQgZGVwcworCistLS0KKyBNYWtlZmlsZSB8IDcgKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAwYTIxN2JkODkzLi5lMTIyOWFkMDdmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNzksMTAgKzc5LDkgQEAgJChOT0RFX0dfRVhFKTogY29uZmlnLmd5cGkgb3V0L01ha2VmaWxlCisgCSQoTUFLRSkgLUMgb3V0IEJVSUxEVFlQRT1EZWJ1ZyBWPSQoVikKKyAJaWYgWyAhIC1yICRAIC1vICEgLUwgJEAgXTsgdGhlbiBsbiAtZnMgb3V0L0RlYnVnLyQoTk9ERV9FWEUpICRAOyBmaQorIAorLW91dC9NYWtlZmlsZTogY29tbW9uLmd5cGkgZGVwcy91di91di5neXAgZGVwcy9odHRwX3BhcnNlci9odHRwX3BhcnNlci5neXAgXAorLSAgICAgICAgICAgICAgZGVwcy96bGliL3psaWIuZ3lwIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgXAorLSAgICAgICAgICAgICAgZGVwcy92OC9neXBmaWxlcy9mZWF0dXJlcy5neXBpIGRlcHMvdjgvc3JjL3Y4Lmd5cCBub2RlLmd5cCBcCistICAgICAgICAgICAgICBjb25maWcuZ3lwaQorK291dC9NYWtlZmlsZTogY29tbW9uLmd5cGkgZGVwcy9odHRwX3BhcnNlci9odHRwX3BhcnNlci5neXAgXAorKyAgICAgICAgICAgICAgZGVwcy92OC9neXBmaWxlcy90b29sY2hhaW4uZ3lwaSBkZXBzL3Y4L2d5cGZpbGVzL2ZlYXR1cmVzLmd5cGkgXAorKwkJCSAgZGVwcy92OC9zcmMvdjguZ3lwIG5vZGUuZ3lwIGNvbmZpZy5neXBpCisgCSQoUFlUSE9OKSB0b29scy9neXBfbm9kZS5weSAtZiBtYWtlCisgCisgY29uZmlnLmd5cGk6IGNvbmZpZ3VyZQorLS0gCisyLjEyLjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfNC44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzXzQuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTg0YWQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfNC44LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJub2RlSlMgRXZlbnRlZCBJL08gZm9yIFY4IEphdmFTY3JpcHQiCi1IT01FUEFHRSA9ICJodHRwOi8vbm9kZWpzLm9yZyIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEICYgQXJ0aXN0aWMtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjQ1ZTlmZmI5N2U2NGRhNDZkMTRmNDYyZDM0YTAzOWYiCi0KLURFUEVORFMgPSAib3BlbnNzbCB6bGliIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfYXJtdjQgPSAiKCEuKmFybXY0KS4qIgotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY1ID0gIighLiphcm12NSkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9taXBzNjQgPSAiKCEuKm1pcHM2NCkuKiIKLQotU1JDX1VSSSA9ICJodHRwOi8vbm9kZWpzLm9yZy9kaXN0L3Yke1BWfS9ub2RlLXYke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9uby1yZWdpc3RyeS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYWVhNjEzOWY5NTJiYjdlMWQ2NmY3NmFmZWRlZTgxM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjk2MTM1MGI4NDkwYzc5MWJkZDM2NjM5MjU2NjJiYTBmYmUwMWUwMDRiNDNmMWMyNzc5YmFmZmNjODE2YjkzMCIKLQotUyA9ICIke1dPUktESVJ9L25vZGUtdiR7UFZ9IgotCi0jIHY4IGVycm9ycyBvdXQgaWYgeW91IGhhdmUgc2V0IENDQUNIRQotQ0NBQ0hFID0gIiIKLQotZGVmIG1hcF9ub2RlanNfYXJjaChhLCBkKToKLSAgICBpbXBvcnQgcmUKLQotICAgIGlmICAgcmUubWF0Y2goJ2kuODYkJywgYSk6IHJldHVybiAnaWEzMicKLSAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgYSk6IHJldHVybiAneDY0JwotICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6IHJldHVybiAnYXJtNjQnCi0gICAgZWxpZiByZS5tYXRjaCgncG93ZXJwYzY0JCcsIGEpOiByZXR1cm4gJ3BwYzY0JwotICAgIGVsaWYgcmUubWF0Y2goJ3Bvd2VycGMkJywgYSk6IHJldHVybiAncHBjJwotICAgIHJldHVybiBhCi0KLUFSQ0hGTEFHU19hcm0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY2FsbGNvbnZlbnRpb24taGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1oYXJkJywgJy0td2l0aC1hcm0tZmxvYXQtYWJpPXNvZnRmcCcsIGQpfSBcCi0gICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWFybS1mcHU9bmVvbicsIFwKLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjNkMTYnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMtZDE2JywgXAotICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICd2ZnB2MycsICctLXdpdGgtYXJtLWZwdT12ZnB2MycsIFwKLSAgICAgICAgICAgICAgICAgICAgJy0td2l0aC1hcm0tZnB1PXZmcCcsIGQpLCBkKSwgZCl9IgotR1lQX0RFRklORVNfYXBwZW5kX21pcHNlbCA9ICIgbWlwc19hcmNoX3ZhcmlhbnQ9J3IxJyAiCi1BUkNIRkxBR1MgPz0gIiIKLQotIyBOb2RlIGlzIHdheSB0b28gY29vbCB0byB1c2UgcHJvcGVyIGF1dG90b29scywgc28gd2UgaW5zdGFsbCB0d28gd3JhcHBlcnMgdG8gZm9yY2VmdWxseSBpbmplY3QgcHJvcGVyIGFyY2ggY2ZsYWdzIHRvIHdvcmthcm91bmQgZ3lwaQotZG9fY29uZmlndXJlICgpIHsKLSAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKLSAgICBHWVBfREVGSU5FUz0iJHtHWVBfREVGSU5FU30iIGV4cG9ydCBHWVBfREVGSU5FUwotICAgICMgJFRBUkdFVF9BUkNIIHNldHRpbmdzIGRvbid0IG1hdGNoIC0tZGVzdC1jcHUgc2V0dGluZ3MKLSAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAtLXdpdGhvdXQtc25hcHNob3QgLS1zaGFyZWQtb3BlbnNzbCAtLXNoYXJlZC16bGliIFwKLSAgICAgICAgICAgICAgIC0tZGVzdC1jcHU9IiR7QG1hcF9ub2RlanNfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IiBcCi0gICAgICAgICAgICAgICAtLWRlc3Qtb3M9bGludXggXAotICAgICAgICAgICAgICAgJHtBUkNIRkxBR1N9Ci19Ci0KLWRvX2NvbXBpbGUgKCkgewotICAgIGV4cG9ydCBMRD0iJHtDWFh9IgotICAgIG9lX3J1bm1ha2UgQlVJTERUWVBFPVJlbGVhc2UKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgIyB1c2Ugbm9kZSBmcm9tIFBBVEggaW5zdGVhZCBvZiBhYnNvbHV0ZSBwYXRoIHRvIHN5c3Jvb3QKLSAgICAjIG5vZGUtdjAuMTAuMjUvdG9vbHMvaW5zdGFsbC5weSBpcyB1c2luZzoKLSAgICAjIHNoZWJhbmcgPSBvcy5wYXRoLmpvaW4obm9kZV9wcmVmaXgsICdiaW4vbm9kZScpCi0gICAgIyB1cGRhdGVfc2hlYmFuZyhsaW5rX3BhdGgsIHNoZWJhbmcpCi0gICAgIyBhbmQgbm9kZV9wcmVmaXggY2FuIGJlIHZlcnkgbG9uZyBwYXRoIHRvIGJpbmRpciBpbiBuYXRpdmUgc3lzcm9vdCBhbmQKLSAgICAjIHdoZW4gaXQgZXhjZWVkcyAxMjggY2hhcmFjdGVyIHNoZWJhbmcgbGltaXQgaXQncyBzdHJpcHBlZCB0byBpbmNvcnJlY3QgcGF0aAotICAgICMgYW5kIG5wbSBmYWlscyB0byBleGVjdXRlIGxpa2UgaW4gdGhpcyBjYXNlIHdpdGggMTMzIGNoYXJhY3RlcnMgc2hvdyBpbiBsb2cuZG9faW5zdGFsbDoKLSAgICAjIHVwZGF0aW5nIHNoZWJhbmcgb2YgL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni93b3JrL3g4Nl82NC1saW51eC9ub2RlanMtbmF0aXZlLzAuMTAuMTUtcjAvaW1hZ2UvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL25wbSB0byAvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL25vZGUKLSAgICAjIC91c3IvYmluL25wbSBpcyBzeW1saW5rIHRvIC91c3IvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKLSAgICAjIHVzZSBzZWQgb24gbnBtLWNsaS5qcyBiZWNhdXNlIG90aGVyd2lzZSBzeW1saW5rIGlzIHJlcGxhY2VkIHdpdGggbm9ybWFsIGZpbGUgYW5kCi0gICAgIyBucG0tY2xpLmpzIGNvbnRpbnVlcyB0byB1c2Ugb2xkIHNoZWJhbmcKLSAgICBzZWQgIjFzXi4qXiNcIS91c3IvYmluL2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgc2VkICIxc14uKl4jXCEke2JpbmRpcn0vZW52IG5vZGVeZyIgLWkgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1ucG0iCi1GSUxFU18ke1BOfS1ucG0gPSAiJHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcyAke2JpbmRpcn0vbnBtIgotUkRFUEVORFNfJHtQTn0tbnBtID0gImJhc2ggcHl0aG9uLXNoZWxsIHB5dGhvbi1kYXRldGltZSBweXRob24tc3VicHJvY2VzcyBweXRob24tdGV4dHV0aWxzIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc3lzdGVtdGFwIgotRklMRVNfJHtQTn0tc3lzdGVtdGFwID0gIiR7ZGF0YWRpcn0vc3lzdGVtdGFwIgotCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc184LjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJjYmMwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC40LjAuYmIKQEAgLTAsMCArMSw4OSBAQAorREVTQ1JJUFRJT04gPSAibm9kZUpTIEV2ZW50ZWQgSS9PIGZvciBWOCBKYXZhU2NyaXB0IgorSE9NRVBBR0UgPSAiaHR0cDovL25vZGVqcy5vcmciCitMSUNFTlNFID0gIk1JVCAmIEJTRCAmIEFydGlzdGljLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU0ZDM1YzYxMjBmMTc1ZTFmYmU1ZmY5MDhiMWNmMmQ2IgorCitERVBFTkRTID0gIm9wZW5zc2wxMCB6bGliIgorCitDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjQgPSAiKCEuKmFybXY0KS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX2FybXY1ID0gIighLiphcm12NSkuKiIKK0NPTVBBVElCTEVfTUFDSElORV9taXBzNjQgPSAiKCEuKm1pcHM2NCkuKiIKKworU1JDX1VSSSA9ICJodHRwOi8vbm9kZWpzLm9yZy9kaXN0L3Yke1BWfS9ub2RlLXYke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImU2Yzg1YzgzMDAxMzQwYjMwNjcxZTk0MzJlMWJkMzM3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkNWFhMmExMDFkY2M2MTcyMzFhNDc1ODEyZWI4ZWQ4N2NhYzIxNDkxZjFkY2M3OTk3YjlkZDQ2MzU2M2YzNjEiCisKK1MgPSAiJHtXT1JLRElSfS9ub2RlLXYke1BWfSIKKworIyB2OCBlcnJvcnMgb3V0IGlmIHlvdSBoYXZlIHNldCBDQ0FDSEUKK0NDQUNIRSA9ICIiCisKK2RlZiBtYXBfbm9kZWpzX2FyY2goYSwgZCk6CisgICAgaW1wb3J0IHJlCisKKyAgICBpZiAgIHJlLm1hdGNoKCdpLjg2JCcsIGEpOiByZXR1cm4gJ2lhMzInCisgICAgZWxpZiByZS5tYXRjaCgneDg2XzY0JCcsIGEpOiByZXR1cm4gJ3g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOiByZXR1cm4gJ2FybTY0JworICAgIGVsaWYgcmUubWF0Y2goJ3Bvd2VycGM2NCQnLCBhKTogcmV0dXJuICdwcGM2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjJCcsIGEpOiByZXR1cm4gJ3BwYycKKyAgICByZXR1cm4gYQorCitBUkNIRkxBR1NfYXJtID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NhbGxjb252ZW50aW9uLWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9aGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1zb2Z0ZnAnLCBkKX0gXAorICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1hcm0tZnB1PW5lb24nLCBcCisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzZDE2JywgJy0td2l0aC1hcm0tZnB1PXZmcHYzLWQxNicsIFwKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjMnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMnLCBcCisgICAgICAgICAgICAgICAgICAgICctLXdpdGgtYXJtLWZwdT12ZnAnLCBkKSwgZCksIGQpfSIKK0dZUF9ERUZJTkVTX2FwcGVuZF9taXBzZWwgPSAiIG1pcHNfYXJjaF92YXJpYW50PSdyMScgIgorQVJDSEZMQUdTID89ICIiCisKKyMgTm9kZSBpcyB3YXkgdG9vIGNvb2wgdG8gdXNlIHByb3BlciBhdXRvdG9vbHMsIHNvIHdlIGluc3RhbGwgdHdvIHdyYXBwZXJzIHRvIGZvcmNlZnVsbHkgaW5qZWN0IHByb3BlciBhcmNoIGNmbGFncyB0byB3b3JrYXJvdW5kIGd5cGkKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgcm0gLXJmICR7U30vZGVwcy9vcGVuc3NsCisgICAgZXhwb3J0IExEPSIke0NYWH0iCisgICAgR1lQX0RFRklORVM9IiR7R1lQX0RFRklORVN9IiBleHBvcnQgR1lQX0RFRklORVMKKyAgICAjICRUQVJHRVRfQVJDSCBzZXR0aW5ncyBkb24ndCBtYXRjaCAtLWRlc3QtY3B1IHNldHRpbmdzCisgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gLS13aXRob3V0LWludGwgLS13aXRob3V0LXNuYXBzaG90IC0tc2hhcmVkLW9wZW5zc2wgLS1zaGFyZWQtemxpYiBcCisgICAgICAgICAgICAgICAtLWRlc3QtY3B1PSIke0BtYXBfbm9kZWpzX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIgXAorICAgICAgICAgICAgICAgLS1kZXN0LW9zPWxpbnV4IFwKKyAgICAgICAgICAgICAgICR7QVJDSEZMQUdTfQorfQorCitkb19jb21waWxlICgpIHsKKyAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKKyAgICBvZV9ydW5tYWtlIEJVSUxEVFlQRT1SZWxlYXNlCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICMgdXNlIG5vZGUgZnJvbSBQQVRIIGluc3RlYWQgb2YgYWJzb2x1dGUgcGF0aCB0byBzeXNyb290CisgICAgIyBub2RlLXYwLjEwLjI1L3Rvb2xzL2luc3RhbGwucHkgaXMgdXNpbmc6CisgICAgIyBzaGViYW5nID0gb3MucGF0aC5qb2luKG5vZGVfcHJlZml4LCAnYmluL25vZGUnKQorICAgICMgdXBkYXRlX3NoZWJhbmcobGlua19wYXRoLCBzaGViYW5nKQorICAgICMgYW5kIG5vZGVfcHJlZml4IGNhbiBiZSB2ZXJ5IGxvbmcgcGF0aCB0byBiaW5kaXIgaW4gbmF0aXZlIHN5c3Jvb3QgYW5kCisgICAgIyB3aGVuIGl0IGV4Y2VlZHMgMTI4IGNoYXJhY3RlciBzaGViYW5nIGxpbWl0IGl0J3Mgc3RyaXBwZWQgdG8gaW5jb3JyZWN0IHBhdGgKKyAgICAjIGFuZCBucG0gZmFpbHMgdG8gZXhlY3V0ZSBsaWtlIGluIHRoaXMgY2FzZSB3aXRoIDEzMyBjaGFyYWN0ZXJzIHNob3cgaW4gbG9nLmRvX2luc3RhbGw6CisgICAgIyB1cGRhdGluZyBzaGViYW5nIG9mIC9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvd29yay94ODZfNjQtbGludXgvbm9kZWpzLW5hdGl2ZS8wLjEwLjE1LXIwL2ltYWdlL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ucG0gdG8gL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ub2RlCisgICAgIyAvdXNyL2Jpbi9ucG0gaXMgc3ltbGluayB0byAvdXNyL2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCisgICAgIyB1c2Ugc2VkIG9uIG5wbS1jbGkuanMgYmVjYXVzZSBvdGhlcndpc2Ugc3ltbGluayBpcyByZXBsYWNlZCB3aXRoIG5vcm1hbCBmaWxlIGFuZAorICAgICMgbnBtLWNsaS5qcyBjb250aW51ZXMgdG8gdXNlIG9sZCBzaGViYW5nCisgICAgc2VkICIxc14uKl4jXCEvdXNyL2Jpbi9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIHNlZCAiMXNeLipeI1whJHtiaW5kaXJ9L2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tbnBtIgorRklMRVNfJHtQTn0tbnBtID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMgJHtiaW5kaXJ9L25wbSAke2JpbmRpcn0vbnB4IgorUkRFUEVORFNfJHtQTn0tbnBtID0gImJhc2ggcHl0aG9uLXNoZWxsIHB5dGhvbi1kYXRldGltZSBweXRob24tc3VicHJvY2VzcyBweXRob24tdGV4dHV0aWxzIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tc3lzdGVtdGFwIgorRklMRVNfJHtQTn0tc3lzdGVtdGFwID0gIiR7ZGF0YWRpcn0vc3lzdGVtdGFwIgorCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDEtQWRkLWZhbGx0aHJvdWdoLWNvbW1lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDEtQWRkLWZhbGx0aHJvdWdoLWNvbW1lbnRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NDE0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMS1BZGQtZmFsbHRocm91Z2gtY29tbWVudHMucGF0Y2gKQEAgLTAsMCArMSwxNTUgQEAKK0Zyb20gOGY4NTE2M2IwMzBlN2I5NTc2NDhmOTBjZDhmYTU5OWZiMDRkNWQ2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE2IEp1biAyMDE3IDIzOjMyOjQ5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS81XSBBZGQgZmFsbHRocm91Z2ggY29tbWVudHMKKworRml4ZXMKKworc3JjL3N2Zi9zdmYuYzo2NjM6NzogZXJyb3I6IHRoaXMgc3RhdGVtZW50IG1heSBmYWxsIHRocm91Z2ggWy1XZXJyb3I9aW1wbGljaXQtZmFsbHRocm91Z2g9XQorICAgICBpID0gLTE7CisgICAgIH5+Xn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9mbGFzaC9tZmxhc2guYyAgICAgICAgICAgIHwgMyArKy0KKyBzcmMvZmxhc2gvbmFuZC9teDMuYyAgICAgICAgICB8IDEgKworIHNyYy9qdGFnL2RyaXZlcnMvZnRkaS5jICAgICAgIHwgMSArCisgc3JjL3N2Zi9zdmYuYyAgICAgICAgICAgICAgICAgfCAyICsrCisgc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMgICAgICAgfCA5ICsrKysrKysrKworIHNyYy90YXJnZXQvYXJtX2Rpc2Fzc2VtYmxlci5jIHwgMSArCisgc3JjL3RhcmdldC90YXJnZXQuYyAgICAgICAgICAgfCAxICsKKyA3IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9mbGFzaC9tZmxhc2guYyBiL3NyYy9mbGFzaC9tZmxhc2guYworaW5kZXggYjY5OTk1NTQyLi4zMjU0YTNkNTYgMTAwNjQ0CistLS0gYS9zcmMvZmxhc2gvbWZsYXNoLmMKKysrKyBiL3NyYy9mbGFzaC9tZmxhc2guYworQEAgLTI1OSwxMCArMjU5LDExIEBAIHN0YXRpYyBpbnQgbWdfZHNrX3dhaXQobWdfaW9fdHlwZV93YWl0IHdhaXRfbG9jYWwsIHVpbnQzMl90IHRpbWVfdmFyKQorIAkJCQljYXNlIG1nX2lvX3dhaXRfcmR5OgorIAkJCQkJaWYgKHN0YXR1cyAmIG1nX2lvX3JiaXRfc3RhdHVzX3JlYWR5KQorIAkJCQkJCXJldHVybiBFUlJPUl9PSzsKKy0KKysJCQkJCS8qIGZhbGx0aHJ1ICovCisgCQkJCWNhc2UgbWdfaW9fd2FpdF9kcnE6CisgCQkJCQlpZiAoc3RhdHVzICYgbWdfaW9fcmJpdF9zdGF0dXNfZGF0YV9yZXEpCisgCQkJCQkJcmV0dXJuIEVSUk9SX09LOworKwkJCQkJLyogZmFsbHRocnUgKi8KKyAKKyAJCQkJZGVmYXVsdDoKKyAJCQkJCWJyZWFrOworZGlmZiAtLWdpdCBhL3NyYy9mbGFzaC9uYW5kL214My5jIGIvc3JjL2ZsYXNoL25hbmQvbXgzLmMKK2luZGV4IGI2MWU0NzUzNS4uMGE1NTkyOWVkIDEwMDY0NAorLS0tIGEvc3JjL2ZsYXNoL25hbmQvbXgzLmMKKysrKyBiL3NyYy9mbGFzaC9uYW5kL214My5jCitAQCAtMjgxLDYgKzI4MSw3IEBAIHN0YXRpYyBpbnQgaW14MzFfY29tbWFuZChzdHJ1Y3QgbmFuZF9kZXZpY2UgKm5hbmQsIHVpbnQ4X3QgY29tbWFuZCkKKyAJCQkgKiBvZmZzZXQgPT0gb25lIGhhbGYgb2YgcGFnZSBzaXplCisgCQkJICovCisgCQkJaW5fc3JhbV9hZGRyZXNzID0gTVgzX05GX01BSU5fQlVGRkVSMCArIChuYW5kLT5wYWdlX3NpemUgPj4gMSk7CisrCQkJLyogZmFsbHRocnUgKi8KKyAJCWRlZmF1bHQ6CisgCQkJaW5fc3JhbV9hZGRyZXNzID0gTVgzX05GX01BSU5fQlVGRkVSMDsKKyAJfQorZGlmZiAtLWdpdCBhL3NyYy9qdGFnL2RyaXZlcnMvZnRkaS5jIGIvc3JjL2p0YWcvZHJpdmVycy9mdGRpLmMKK2luZGV4IDAwZmUzN2ZhZi4uMjBmMTdkODEwIDEwMDY0NAorLS0tIGEvc3JjL2p0YWcvZHJpdmVycy9mdGRpLmMKKysrKyBiL3NyYy9qdGFnL2RyaXZlcnMvZnRkaS5jCitAQCAtODU1LDYgKzg1NSw3IEBAIENPTU1BTkRfSEFORExFUihmdGRpX2hhbmRsZV9zZXRfc2lnbmFsX2NvbW1hbmQpCisgCQkJZnRkaV9zZXRfc2lnbmFsKHNpZywgKkNNRF9BUkdWWzFdKTsKKyAJCQlicmVhazsKKyAJCX0KKysJCS8qIGZhbGx0aHJ1ICovCisgCWRlZmF1bHQ6CisgCQlMT0dfRVJST1IoInVua25vd24gc2lnbmFsIGxldmVsICclcycsIHVzZSAwLCAxIG9yIHoiLCBDTURfQVJHVlsxXSk7CisgCQlyZXR1cm4gRVJST1JfQ09NTUFORF9TWU5UQVhfRVJST1I7CitkaWZmIC0tZ2l0IGEvc3JjL3N2Zi9zdmYuYyBiL3NyYy9zdmYvc3ZmLmMKK2luZGV4IGU3ZTgxNWMxMC4uN2IyNjFjYzcyIDEwMDY0NAorLS0tIGEvc3JjL3N2Zi9zdmYuYworKysrIGIvc3JjL3N2Zi9zdmYuYworQEAgLTY2MSwxMSArNjYxLDEzIEBAIHN0YXRpYyBpbnQgc3ZmX3JlYWRfY29tbWFuZF9mcm9tX2ZpbGUoRklMRSAqZmQpCisgCQkJCWlmIChzdmZfZ2V0bGluZSgmc3ZmX3JlYWRfbGluZSwgJnN2Zl9yZWFkX2xpbmVfc2l6ZSwgc3ZmX2ZkKSA8PSAwKQorIAkJCQkJcmV0dXJuIEVSUk9SX0ZBSUw7CisgCQkJCWkgPSAtMTsKKysJCQkJLyogZmFsbHRocnUgKi8KKyAJCQljYXNlICdccic6CisgCQkJCXNsYXNoID0gMDsKKyAJCQkJLyogRG9uJ3Qgc2F2ZSAnXHInIGFuZCAnXG4nIGlmIG5vIGRhdGEgaXMgcGFyc2VkICovCisgCQkJCWlmICghY21kX3BvcykKKyAJCQkJCWJyZWFrOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCWRlZmF1bHQ6CisgCQkJCS8qIFRoZSBwYXJzaW5nIGNvZGUgY3VycmVudGx5IGV4cGVjdHMgYSBzcGFjZQorIAkJCQkgKiBiZWZvcmUgcGFyZW50aGVzZXMgLS0gIlRESSAoMTIzKSIuICBBbHNvIGEKK2RpZmYgLS1naXQgYS9zcmMvdGFyZ2V0L2FybV9hZGlfdjUuYyBiL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jCitpbmRleCBlYWZjMmRkYzAuLmQ0NDRkYjJiMSAxMDA2NDQKKy0tLSBhL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jCisrKysgYi9zcmMvdGFyZ2V0L2FybV9hZGlfdjUuYworQEAgLTM0NiwxMCArMzQ2LDEzIEBAIHN0YXRpYyBpbnQgbWVtX2FwX3dyaXRlKHN0cnVjdCBhZGl2NV9hcCAqYXAsIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwgdWludDMyX3Qgc2l6CisgCQkJY2FzZSA0OgorIAkJCQlvdXR2YWx1ZSB8PSAodWludDMyX3QpKmJ1ZmZlcisrIDw8IDggKiAoYWRkcmVzcysrICYgMyk7CisgCQkJCW91dHZhbHVlIHw9ICh1aW50MzJfdCkqYnVmZmVyKysgPDwgOCAqIChhZGRyZXNzKysgJiAzKTsKKysJCQkJLyogZmFsbHRocnUgKi8KKyAJCQljYXNlIDI6CisgCQkJCW91dHZhbHVlIHw9ICh1aW50MzJfdCkqYnVmZmVyKysgPDwgOCAqIChhZGRyZXNzKysgJiAzKTsKKysJCQkJLyogZmFsbHRocnUgKi8KKyAJCQljYXNlIDE6CisgCQkJCW91dHZhbHVlIHw9ICh1aW50MzJfdCkqYnVmZmVyKysgPDwgOCAqIChhZGRyZXNzKysgJiAzKTsKKysJCQkJLyogZmFsbHRocnUgKi8KKyAJCQl9CisgCQl9CisgCitAQCAtNTA5LDIwICs1MTIsMjYgQEAgc3RhdGljIGludCBtZW1fYXBfcmVhZChzdHJ1Y3QgYWRpdjVfYXAgKmFwLCB1aW50OF90ICpidWZmZXIsIHVpbnQzMl90IHNpemUsIHVpbnQKKyAJCQljYXNlIDQ6CisgCQkJCSpidWZmZXIrKyA9ICpyZWFkX3B0ciA+PiA4ICogKDMgLSAoYWRkcmVzcysrICYgMykpOworIAkJCQkqYnVmZmVyKysgPSAqcmVhZF9wdHIgPj4gOCAqICgzIC0gKGFkZHJlc3MrKyAmIDMpKTsKKysJCQkJLyogZmFsbHRocnUgKi8KKyAJCQljYXNlIDI6CisgCQkJCSpidWZmZXIrKyA9ICpyZWFkX3B0ciA+PiA4ICogKDMgLSAoYWRkcmVzcysrICYgMykpOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCWNhc2UgMToKKyAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoMyAtIChhZGRyZXNzKysgJiAzKSk7CisrCQkJCS8qIGZhbGx0aHJ1ICovCisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlzd2l0Y2ggKHRoaXNfc2l6ZSkgeworIAkJCWNhc2UgNDoKKyAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoYWRkcmVzcysrICYgMyk7CisgCQkJCSpidWZmZXIrKyA9ICpyZWFkX3B0ciA+PiA4ICogKGFkZHJlc3MrKyAmIDMpOworKwkJCQkvKiBmYWxsdGhydSAqLworIAkJCWNhc2UgMjoKKyAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoYWRkcmVzcysrICYgMyk7CisrCQkJCS8qIGZhbGx0aHJ1ICovCisgCQkJY2FzZSAxOgorIAkJCQkqYnVmZmVyKysgPSAqcmVhZF9wdHIgPj4gOCAqIChhZGRyZXNzKysgJiAzKTsKKysJCQkJLyogZmFsbHRocnUgKi8KKyAJCQl9CisgCQl9CisgCitkaWZmIC0tZ2l0IGEvc3JjL3RhcmdldC9hcm1fZGlzYXNzZW1ibGVyLmMgYi9zcmMvdGFyZ2V0L2FybV9kaXNhc3NlbWJsZXIuYworaW5kZXggNTI3N2I5NGQ4Li4yZWIyMWVhMzMgMTAwNjQ0CistLS0gYS9zcmMvdGFyZ2V0L2FybV9kaXNhc3NlbWJsZXIuYworKysrIGIvc3JjL3RhcmdldC9hcm1fZGlzYXNzZW1ibGVyLmMKK0BAIC0zMjk5LDYgKzMyOTksNyBAQCBzdGF0aWMgaW50IHQyZXZfZGF0YV9pbW1lZCh1aW50MzJfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHJlc3MsCisgCQljYXNlIDB4MTA6CisgCQljYXNlIDB4MTI6CisgCQkJaXNfc2lnbmVkID0gdHJ1ZTsKKysJCQkvKiBmYWxsdGhydSAqLworIAkJY2FzZSAweDE4OgorIAkJY2FzZSAweDFhOgorIAkJCS8qIHNpZ25lZC91bnNpZ25lZCBzYXR1cmF0ZWQgYWRkICovCitkaWZmIC0tZ2l0IGEvc3JjL3RhcmdldC90YXJnZXQuYyBiL3NyYy90YXJnZXQvdGFyZ2V0LmMKK2luZGV4IGUwNGVjYzQ3MC4uNTk3YjRiMTNkIDEwMDY0NAorLS0tIGEvc3JjL3RhcmdldC90YXJnZXQuYworKysrIGIvc3JjL3RhcmdldC90YXJnZXQuYworQEAgLTM2ODQsNiArMzY4NCw3IEBAIENPTU1BTkRfSEFORExFUihoYW5kbGVfYnBfY29tbWFuZCkKKyAJCQkJYWRkciA9IDA7CisgCQkJCXJldHVybiBoYW5kbGVfYnBfY29tbWFuZF9zZXQoQ01EX0NUWCwgYWRkciwgYXNpZCwgbGVuZ3RoLCBodyk7CisgCQkJfQorKwkJCS8qIGZhbGx0aHJ1ICovCisgCisgCQljYXNlIDQ6CisgCQkJaHcgPSBCS1BUX0hBUkQ7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMi1Xb3JrYXJvdW5kLW5ldy13YXJuaW5ncy1nZW5lcmF0ZWQtYnktR0NDLTcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMi1Xb3JrYXJvdW5kLW5ldy13YXJuaW5ncy1nZW5lcmF0ZWQtYnktR0NDLTcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE5OTczNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDAyLVdvcmthcm91bmQtbmV3LXdhcm5pbmdzLWdlbmVyYXRlZC1ieS1HQ0MtNy5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDhkYWFhOGMyNzc5NDY1M2QwMjg1NGM1OTgyNjY5YTc2Mzg0NzMyMjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBKdW4gMjAxNyAyMzo1Mjo0NiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNV0gV29ya2Fyb3VuZCBuZXcgd2FybmluZ3MgZ2VuZXJhdGVkIGJ5IEdDQyA3CisKK3NyYy9mbGFzaC9ub3IveG1jNHh4eC5jOiBJbiBmdW5jdGlvbiAneG1jNHh4eF9nZXRfaW5mb19jb21tYW5kJzoKK3NyYy9mbGFzaC9ub3IveG1jNHh4eC5jOjkzOTo0MzogZXJyb3I6ICclZCcgZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIHdyaXRpbmcgYmV0d2VlbiAxIGFuZCAxMCBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgNiBbLVdlcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbj1dCisgICAgIHNucHJpbnRmKG90cF9zdHIsIHNpemVvZihvdHBfc3RyKSwgIi0gJWRcbiIsIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+CitzcmMvZmxhc2gvbm9yL3htYzR4eHguYzo5Mzk6NDA6IG5vdGU6IGRpcmVjdGl2ZSBhcmd1bWVudCBpbiB0aGUgcmFuZ2UgWzAsIDIxNDc0ODM2NDddCisgICAgIHNucHJpbnRmKG90cF9zdHIsIHNpemVvZihvdHBfc3RyKSwgIi0gJWRcbiIsIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+CitzcmMvZmxhc2gvbm9yL3htYzR4eHguYzo5Mzk6NTogbm90ZTogJ3NucHJpbnRmJyBvdXRwdXQgYmV0d2VlbiA1IGFuZCAxNCBieXRlcyBpbnRvIGEgZGVzdGluYXRpb24gb2Ygc2l6ZSA4CisgICAgIHNucHJpbnRmKG90cF9zdHIsIHNpemVvZihvdHBfc3RyKSwgIi0gJWRcbiIsIGkpOworICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9mbGFzaC9ub3IveG1jNHh4eC5jIHwgMiArLQorIHNyYy90YXJnZXQvYXJtX2FkaV92NS5jIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ZsYXNoL25vci94bWM0eHh4LmMgYi9zcmMvZmxhc2gvbm9yL3htYzR4eHguYworaW5kZXggMDJkZjQ2YTNmLi5lNmMzOThmZjkgMTAwNjQ0CistLS0gYS9zcmMvZmxhc2gvbm9yL3htYzR4eHguYworKysrIGIvc3JjL2ZsYXNoL25vci94bWM0eHh4LmMKK0BAIC05MzEsNyArOTMxLDcgQEAgc3RhdGljIGludCB4bWM0eHh4X2dldF9pbmZvX2NvbW1hbmQoc3RydWN0IGZsYXNoX2JhbmsgKmJhbmssIGNoYXIgKmJ1ZiwgaW50IGJ1Zl8KKyAKKyAJLyogSWYgT1RQIFdyaXRlIHByb3RlY3Rpb24gaXMgZW5hYmxlZCAoVXNlciAyKSwgbGlzdCBlYWNoCisgCSAqIHNlY3RvciB0aGF0IGhhcyBpdCBlbmFibGVkICovCistCWNoYXIgb3RwX3N0cls4XTsKKysJY2hhciBvdHBfc3RyWzE0XTsKKyAJaWYgKG90cF9lbmFibGVkKSB7CisgCQlzdHJjYXQocHJvdF9zdHIsICJcbk9UUCBQcm90ZWN0aW9uIGlzIGVuYWJsZWQgZm9yIHNlY3RvcnM6XG4iKTsKKyAJCWZvciAoaW50IGkgPSAwOyBpIDwgYmFuay0+bnVtX3NlY3RvcnM7IGkrKykgeworZGlmZiAtLWdpdCBhL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jIGIvc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMKK2luZGV4IGQ0NDRkYjJiMS4uZDBkOTUxMjFmIDEwMDY0NAorLS0tIGEvc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMKKysrKyBiL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jCitAQCAtMTA2Miw3ICsxMDYyLDcgQEAgc3RhdGljIGludCBkYXBfcm9tX2Rpc3BsYXkoc3RydWN0IGNvbW1hbmRfY29udGV4dCAqY21kX2N0eCwKKyAJaW50IHJldHZhbDsKKyAJdWludDY0X3QgcGlkOworIAl1aW50MzJfdCBjaWQ7CistCWNoYXIgdGFic1s3XSA9ICIiOworKwljaGFyIHRhYnNbMTZdID0gIiI7CisgCisgCWlmIChkZXB0aCA+IDE2KSB7CisgCQljb21tYW5kX3ByaW50KGNtZF9jdHgsICJcdFRhYmxlcyB0b28gZGVlcCIpOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDMtYXJtdjdhLUFkZC1taXNzaW5nLWJyZWFrLXRvLWZpeC1mYWxsdGhyb3VnaC13YXJuaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDMtYXJtdjdhLUFkZC1taXNzaW5nLWJyZWFrLXRvLWZpeC1mYWxsdGhyb3VnaC13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZmJmYzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMy1hcm12N2EtQWRkLW1pc3NpbmctYnJlYWstdG8tZml4LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA4ZTUwNTFlODNmZWRiMDc4MTcwNTY1YTI0ZDFmNWRlNmMyY2U0NDI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTcgSnVuIDIwMTcgMDA6MDE6NTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIGFybXY3YTogQWRkIG1pc3NpbmcgYnJlYWsgdG8gZml4IGZhbGx0aHJvdWdoIHdhcm5pbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvdGFyZ2V0L2FybXY3YS5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvdGFyZ2V0L2FybXY3YS5jIGIvc3JjL3RhcmdldC9hcm12N2EuYworaW5kZXggNjAyMWRlZjRlLi5iYWQ4MDZiM2QgMTAwNjQ0CistLS0gYS9zcmMvdGFyZ2V0L2FybXY3YS5jCisrKysgYi9zcmMvdGFyZ2V0L2FybXY3YS5jCitAQCAtMzU1LDYgKzM1NSw3IEBAIGludCBhcm12N2FfbW11X3RyYW5zbGF0ZV92YV9wYShzdHJ1Y3QgdGFyZ2V0ICp0YXJnZXQsIHVpbnQzMl90IHZhLAorIAkJCQlicmVhazsKKyAJCQljYXNlIDc6CisgCQkJCUxPR19JTkZPKCJpbm5lcjogV3JpdGUtQmFjaywgbm8gV3JpdGUtQWxsb2NhdGUiKTsKKysJCQkJYnJlYWs7CisgCisgCQkJZGVmYXVsdDoKKyAJCQkJTE9HX0lORk8oImlubmVyOiAlIiBQUkl4MzIgIiA/Pz8iLCBJTk5FUik7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNC1GaXgtb3ZlcmZsb3ctd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDA0LUZpeC1vdmVyZmxvdy13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYzU2MjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNC1GaXgtb3ZlcmZsb3ctd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGQzY2E1NjM3MGEyYmU3ZTczN2Q0OGJkMTRkNDc0ZDc5MGEwYWI4YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNyBKdW4gMjAxNyAwMDowNDowMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNV0gRml4IG92ZXJmbG93IHdhcm5pbmcKKworUmVtb3ZlIGFuIGVtcHR5IHNwYWNlIHdoaWNoIG1ha2VzIGl0IGZpdCBpbnRvIDExIGJ5dGUgc3RyaW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3RhcmdldC9uZHMzMl9jbWQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy90YXJnZXQvbmRzMzJfY21kLmMgYi9zcmMvdGFyZ2V0L25kczMyX2NtZC5jCitpbmRleCBlZGI0ODcyZTQuLjczMzU1MDczYyAxMDA2NDQKKy0tLSBhL3NyYy90YXJnZXQvbmRzMzJfY21kLmMKKysrKyBiL3NyYy90YXJnZXQvbmRzMzJfY21kLmMKK0BAIC04MjEsNyArODIxLDcgQEAgc3RhdGljIGludCBqaW1fbmRzMzJfYnVsa19yZWFkKEppbV9JbnRlcnAgKmludGVycCwgaW50IGFyZ2MsIEppbV9PYmogKiBjb25zdCAqYXIKKyAJamltX3dpZGUgaTsKKyAJSmltX1NldFJlc3VsdChpbnRlcnAsIEppbV9OZXdFbXB0eVN0cmluZ09iaihpbnRlcnApKTsKKyAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKy0JCXNwcmludGYoZGF0YV9zdHIsICIweCUwOCIgUFJJeDMyICIgIiwgZGF0YVtpXSk7CisrCQlzcHJpbnRmKGRhdGFfc3RyLCAiMHglMDgiIFBSSXgzMiAiIiwgZGF0YVtpXSk7CisgCQlKaW1fQXBwZW5kU3RyaW5ncyhpbnRlcnAsIEppbV9HZXRSZXN1bHQoaW50ZXJwKSwgZGF0YV9zdHIsIE5VTEwpOworIAl9CisgCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNS1jb21tYW5kLU1vdmUtdGhlLWZhbGwtdGhyb3VnaC1jb21tZW50LXRvLXJpZ2h0LXNjb3BlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDUtY29tbWFuZC1Nb3ZlLXRoZS1mYWxsLXRocm91Z2gtY29tbWVudC10by1yaWdodC1zY29wZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGY3NWRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDUtY29tbWFuZC1Nb3ZlLXRoZS1mYWxsLXRocm91Z2gtY29tbWVudC10by1yaWdodC1zY29wZS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDI5ZGJmOTJmZmRiZGRhMjk2NjJiNDE5MGEyZjhlYjA5Y2FhZDhiNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNyBKdW4gMjAxNyAwMDowNjozMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDUvNV0gY29tbWFuZDogTW92ZSB0aGUgZmFsbCB0aHJvdWdoIGNvbW1lbnQgdG8gcmlnaHQgc2NvcGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9oZWxwZXIvY29tbWFuZC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2hlbHBlci9jb21tYW5kLmMgYi9zcmMvaGVscGVyL2NvbW1hbmQuYworaW5kZXggNWRlYWVlODU5Li4yODdjMTQ4NTcgMTAwNjQ0CistLS0gYS9zcmMvaGVscGVyL2NvbW1hbmQuYworKysrIGIvc3JjL2hlbHBlci9jb21tYW5kLmMKK0BAIC0xNDU2LDggKzE0NTYsOCBAQCBDT01NQU5EX0hFTFBFUihoYW5kbGVfY29tbWFuZF9wYXJzZV9ib29sLCBib29sICpvdXQsIGNvbnN0IGNoYXIgKmxhYmVsKQorIAkJCQlMT0dfRVJST1IoIiVzOiBhcmd1bWVudCAnJXMnIGlzIG5vdCB2YWxpZCIsIENNRF9OQU1FLCBpbik7CisgCQkJCXJldHVybiBFUlJPUl9DT01NQU5EX1NZTlRBWF9FUlJPUjsKKyAJCQl9CistCQkJLyogZmFsbCB0aHJvdWdoICovCisgCQl9CisrCQkvKiBmYWxsIHRocm91Z2ggKi8KKyAJCWNhc2UgMDoKKyAJCQlMT0dfSU5GTygiJXMgaXMgJXMiLCBsYWJlbCwgKm91dCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOworIAkJCWJyZWFrOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBiYzY2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZF9naXQuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJGcmVlIGFuZCBPcGVuIE9uLUNoaXAgRGVidWdnaW5nLCBJbi1TeXN0ZW0gUHJvZ3JhbW1pbmcgYW5kIEJvdW5kYXJ5LVNjYW4gVGVzdGluZyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAibGlidXNiLWNvbXBhdCBsaWJmdGRpIgorUkRFUEVORFNfJHtQTn0gPSAibGlidXNiMSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9yZXBvLm9yLmN6L29wZW5vY2QuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWZhbGx0aHJvdWdoLWNvbW1lbnRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItV29ya2Fyb3VuZC1uZXctd2FybmluZ3MtZ2VuZXJhdGVkLWJ5LUdDQy03LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtYXJtdjdhLUFkZC1taXNzaW5nLWJyZWFrLXRvLWZpeC1mYWxsdGhyb3VnaC13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW92ZXJmbG93LXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1jb21tYW5kLU1vdmUtdGhlLWZhbGwtdGhyb3VnaC1jb21tZW50LXRvLXJpZ2h0LXNjb3BlLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICIxMDI1YmUzNjNlMmJmNDJmMTYxMzA4MzIyM2EyMzIyY2MzYTliZDRjIgorCitQViA9ICIwLjEwK2dpdHIke1NSQ1BWfSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dAorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmVzZGsiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1mdGRpIC0tZGlzYWJsZS1kb3h5Z2VuLWh0bWwgIgorCitkb19jb25maWd1cmUoKSB7CisgICAgLi9ib290c3RyYXAKKyAgICBvZV9ydW5jb25mICR7RVhUUkFfT0VDT05GfQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKKyAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfSIgXTsgdGhlbgorICAgICAgcm0gLVJmICR7RH0ke2luZm9kaXJ9CisgICAgZmkKKyAgICBpZiBbIC1lICIke0R9JHttYW5kaXJ9IiBdOyB0aGVuCisgICAgICBybSAtUmYgJHtEfSR7bWFuZGlyfQorICAgIGZpCisgICAgaWYgWyAtZSAiJHtEfSR7YmluZGlyfS8uZGVidWciIF07IHRoZW4KKyAgICAgIHJtIC1SZiAke0R9JHtiaW5kaXJ9Ly5kZWJ1ZworICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ID0gIiBcCisgICR7ZGF0YWRpcn0vb3Blbm9jZC8qIFwKKyAgJHtiaW5kaXJ9L29wZW5vY2QgXAorICAiCisKK1BBQ0tBR0VDT05GSUdbc3lzZnNncGlvXSA9ICItLWVuYWJsZS1zeXNmc2dwaW8sLS1kaXNhYmxlLXN5c2ZzZ3BpbyIKK1BBQ0tBR0VDT05GSUcgPz89ICJzeXNmc2dwaW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZGstdGFyZ2V0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2RrLXRhcmdldC5iYgppbmRleCAxNGU3NWRjLi4xYmU3ZjZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZGstdGFyZ2V0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNkay10YXJnZXQuYmIKQEAgLTEsNiArMSw2IEBACiBTVU1NQVJZID0gIlBhY2thZ2VzIHJlcXVpcmVkIGZvciBhIHRhcmdldCAob24tZGV2aWNlKSBTREsiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKIFBSID0gInIxIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdla2l0L3BhY2thZ2VraXQtMC41LjYvMDAwMS1Eb24tdC1jYWxsLWRlcHJlY2F0ZWQtZ2xpYi1mdW5jdGlvbnMtYW5kLXVzZS10aGUtbmV3LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0LTAuNS42LzAwMDEtRG9uLXQtY2FsbC1kZXByZWNhdGVkLWdsaWItZnVuY3Rpb25zLWFuZC11c2UtdGhlLW5ldy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNmOGU3NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdla2l0L3BhY2thZ2VraXQtMC41LjYvMDAwMS1Eb24tdC1jYWxsLWRlcHJlY2F0ZWQtZ2xpYi1mdW5jdGlvbnMtYW5kLXVzZS10aGUtbmV3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLUZyb20gODY5ZTUyYTkwNTVjNzI5NzBmZWQwMzZhMTUxMGY2NzZlNmNlMDgyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEzIEp1biAyMDEzIDAxOjI0OjE5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IGNhbGwgZGVwcmVjYXRlZCBnbGliIGZ1bmN0aW9ucyBhbmQgdXNlIHRoZSBuZXcgZ3RocmVhZAotIEFQSS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW3ZlcnNpb24gVW5tYWludGFpbmVkIFVwc3RyZWFtXQotLS0tCi0gY2xpZW50L3BrLWNvbnNvbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArKy0KLSBjbGllbnQvcGstZ2VuZXJhdGUtcGFjay5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsrLQotIGNsaWVudC9way1tb25pdG9yLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKystCi0gY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9QYWNrYWdlS2l0LnNoICAgICAgICAgIHwgICAgMiArLQotIGNvbnRyaWIvY29tbWFuZC1ub3QtZm91bmQvcGstY29tbWFuZC1ub3QtZm91bmQuYyB8ICAgIDQgKystLQotIGNvbnRyaWIvZGVidWdpbmZvLWluc3RhbGwvcGstZGVidWdpbmZvLWluc3RhbGwuYyB8ICAgIDQgKystLQotIHNyYy9way1iYWNrZW5kLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKysrKysrKwotIHNyYy9way1tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKystLQotIDEwIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3BrLWNvbnNvbGUuYyBiL2NsaWVudC9way1jb25zb2xlLmMKLWluZGV4IGRlOTI3ZTEuLjI0MzVmMjcgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvcGstY29uc29sZS5jCi0rKysgYi9jbGllbnQvcGstY29uc29sZS5jCi1AQCAtMTI2NCwxMSArMTI2NCwxMiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAliaW5kdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOwotIAliaW5kX3RleHRkb21haW5fY29kZXNldCAoR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKLSAJdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFKTsKLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDMyLDApCi0gCWlmICghIGdfdGhyZWFkX3N1cHBvcnRlZCAoKSkKLSAJCWdfdGhyZWFkX2luaXQgKE5VTEwpOwotIAlnX3R5cGVfaW5pdCAoKTsKLSAJZGJ1c19nX3RocmVhZF9pbml0ICgpOwotKyNlbmRpZgotIAotIAkvKiBkbyBzdHVmZiBvbiBjdHJsLWMgKi8KLSAJc2lnbmFsIChTSUdJTlQsIHBrX2NvbnNvbGVfc2lnaW50X2NiKTsKLWRpZmYgLS1naXQgYS9jbGllbnQvcGstZ2VuZXJhdGUtcGFjay5jIGIvY2xpZW50L3BrLWdlbmVyYXRlLXBhY2suYwotaW5kZXggMGIyYjQwZi4uMjBkN2U4ZCAxMDA2NDQKLS0tLSBhL2NsaWVudC9way1nZW5lcmF0ZS1wYWNrLmMKLSsrKyBiL2NsaWVudC9way1nZW5lcmF0ZS1wYWNrLmMKLUBAIC0yNTEsMTIgKzI1MSwxMyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAliaW5kdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOwotIAliaW5kX3RleHRkb21haW5fY29kZXNldCAoR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKLSAJdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFKTsKLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDMyLDApCi0gCWlmICghIGdfdGhyZWFkX3N1cHBvcnRlZCAoKSkKLSAJCWdfdGhyZWFkX2luaXQgKE5VTEwpOwotIAotIAlnX3R5cGVfaW5pdCAoKTsKLSAJZGJ1c19nX3RocmVhZF9pbml0ICgpOwotKyNlbmRpZgotIAotIAkvKiBkbyBzdHVmZiBvbiBjdHJsLWMgKi8KLSAJc2lnbmFsIChTSUdJTlQsIHBrX2dlbmVyYXRlX3BhY2tfc2lnaW50X2NiKTsKLWRpZmYgLS1naXQgYS9jbGllbnQvcGstbW9uaXRvci5jIGIvY2xpZW50L3BrLW1vbml0b3IuYwotaW5kZXggZjIzMGY3YS4uZDQzMDA3ZiAxMDA2NDQKLS0tLSBhL2NsaWVudC9way1tb25pdG9yLmMKLSsrKyBiL2NsaWVudC9way1tb25pdG9yLmMKLUBAIC0yODUsMTEgKzI4NSwxMiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAliaW5kdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOwotIAliaW5kX3RleHRkb21haW5fY29kZXNldCAoR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKLSAJdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFKTsKLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDMyLDApCi0gCWlmICghIGdfdGhyZWFkX3N1cHBvcnRlZCAoKSkKLSAJCWdfdGhyZWFkX2luaXQgKE5VTEwpOwotIAlnX3R5cGVfaW5pdCAoKTsKLSAJZGJ1c19nX3RocmVhZF9pbml0ICgpOwotKyNlbmRpZgotIAotIAljb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcgKE5VTEwpOwotIAkvKiBUUkFOU0xBVE9SUzogdGhpcyBpcyBhIHByb2dyYW0gdGhhdCBtb25pdG9ycyBQYWNrYWdlS2l0ICovCi1kaWZmIC0tZ2l0IGEvY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9QYWNrYWdlS2l0LnNoIGIvY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9QYWNrYWdlS2l0LnNoCi1pbmRleCBkMDg5ODljLi5kNzA4ZmZmIDEwMDY0NAotLS0tIGEvY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9QYWNrYWdlS2l0LnNoCi0rKysgYi9jb250cmliL2NvbW1hbmQtbm90LWZvdW5kL1BhY2thZ2VLaXQuc2gKLUBAIC0xOCw3ICsxOCw3IEBAIGNvbW1hbmRfbm90X2ZvdW5kX2hhbmRsZSAoKSB7Ci0gCi0gCSMgcnVuIHRoZSBjb21tYW5kLCBvciBqdXN0IHByaW50IGEgd2FybmluZwotIAlpZiBbICRydW5jbmYgLWVxIDEgXTsgdGhlbgotLQkJL2hvbWUvaHVnaHNpZS8ucm9vdC9saWJleGVjL3BrLWNvbW1hbmQtbm90LWZvdW5kICQxCi0rCQkvdXNyL2xpYi9wYWNrYWdla2l0L3BrLWNvbW1hbmQtbm90LWZvdW5kICQxCi0gCQlyZXR2YWw9JD8KLSAJZWxzZQotIAkJZWNobyAiYmFzaDogJDE6IGNvbW1hbmQgbm90IGZvdW5kIgotZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29tbWFuZC1ub3QtZm91bmQvcGstY29tbWFuZC1ub3QtZm91bmQuYyBiL2NvbnRyaWIvY29tbWFuZC1ub3QtZm91bmQvcGstY29tbWFuZC1ub3QtZm91bmQuYwotaW5kZXggNzA2NzljMC4uOWY4MWNlNCAxMDA2NDQKLS0tLSBhL2NvbnRyaWIvY29tbWFuZC1ub3QtZm91bmQvcGstY29tbWFuZC1ub3QtZm91bmQuYwotKysrIGIvY29udHJpYi9jb21tYW5kLW5vdC1mb3VuZC9way1jb21tYW5kLW5vdC1mb3VuZC5jCi1AQCAtNjU5LDEyICs2NTksMTIgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJYmluZHRleHRkb21haW4gKEdFVFRFWFRfUEFDS0FHRSwgUEFDS0FHRV9MT0NBTEVfRElSKTsKLSAJYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKEdFVFRFWFRfUEFDS0FHRSwgIlVURi04Iik7Ci0gCXRleHRkb21haW4gKEdFVFRFWFRfUEFDS0FHRSk7Ci0tCi0rI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwzMiwwKQotIAlpZiAoISBnX3RocmVhZF9zdXBwb3J0ZWQgKCkpCi0gCQlnX3RocmVhZF9pbml0IChOVUxMKTsKLSAJZGJ1c19nX3RocmVhZF9pbml0ICgpOwotIAlnX3R5cGVfaW5pdCAoKTsKLS0KLSsjZW5kaWYKLSAJY29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3IChOVUxMKTsKLSAJLyogVFJBTlNMQVRPUlM6IHRvb2wgdGhhdCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBjb21tYW5kIGlzIG5vdCBmb3VuZCAqLwotIAlnX29wdGlvbl9jb250ZXh0X3NldF9zdW1tYXJ5IChjb250ZXh0LCBfKCJQYWNrYWdlS2l0IENvbW1hbmQgTm90IEZvdW5kIikpOwotZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGVidWdpbmZvLWluc3RhbGwvcGstZGVidWdpbmZvLWluc3RhbGwuYyBiL2NvbnRyaWIvZGVidWdpbmZvLWluc3RhbGwvcGstZGVidWdpbmZvLWluc3RhbGwuYwotaW5kZXggYzEyYWNhNS4uYjBlMWU3YyAxMDA2NDQKLS0tLSBhL2NvbnRyaWIvZGVidWdpbmZvLWluc3RhbGwvcGstZGVidWdpbmZvLWluc3RhbGwuYwotKysrIGIvY29udHJpYi9kZWJ1Z2luZm8taW5zdGFsbC9way1kZWJ1Z2luZm8taW5zdGFsbC5jCi1AQCAtNTMyLDExICs1MzIsMTEgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJYmluZHRleHRkb21haW4gKEdFVFRFWFRfUEFDS0FHRSwgUEFDS0FHRV9MT0NBTEVfRElSKTsKLSAJYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKEdFVFRFWFRfUEFDS0FHRSwgIlVURi04Iik7Ci0gCXRleHRkb21haW4gKEdFVFRFWFRfUEFDS0FHRSk7Ci0tCi0rI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwzMiwwKQotIAlpZiAoISBnX3RocmVhZF9zdXBwb3J0ZWQgKCkpCi0gCQlnX3RocmVhZF9pbml0IChOVUxMKTsKLSAJZ190eXBlX2luaXQgKCk7Ci0tCi0rI2VuZGlmCi0gCWNvbnRleHQgPSBnX29wdGlvbl9jb250ZXh0X25ldyAoTlVMTCk7Ci0gCS8qIFRSQU5TTEFUT1JTOiB0b29sIHRoYXQgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgY29tbWFuZCBpcyBub3QgZm91bmQgKi8KLSAJZ19vcHRpb25fY29udGV4dF9zZXRfc3VtbWFyeSAoY29udGV4dCwgXygiUGFja2FnZUtpdCBEZWJ1Z2luZm8gSW5zdGFsbGVyIikpOwotZGlmZiAtLWdpdCBhL3NyYy9way1iYWNrZW5kLmMgYi9zcmMvcGstYmFja2VuZC5jCi1pbmRleCA1MjE2YjYzLi41YjgzYWU0IDEwMDY0NAotLS0tIGEvc3JjL3BrLWJhY2tlbmQuYwotKysrIGIvc3JjL3BrLWJhY2tlbmQuYwotQEAgLTIxMDMsNyArMjEwMywxNCBAQCBwa19iYWNrZW5kX3RocmVhZF9jcmVhdGUgKFBrQmFja2VuZCAqYmFja2VuZCwgUGtCYWNrZW5kVGhyZWFkRnVuYyBmdW5jKQotIAkJZWdnX3dhcm5pbmcgKCJhbHJlYWR5IGhhcyB0aHJlYWQiKTsKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotKyNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsMzIsMCkKLSAJYmFja2VuZC0+cHJpdi0+dGhyZWFkID0gZ190aHJlYWRfY3JlYXRlICgoR1RocmVhZEZ1bmMpIGZ1bmMsIGJhY2tlbmQsIEZBTFNFLCBOVUxMKTsKLSsjZWxzZQotKwliYWNrZW5kLT5wcml2LT50aHJlYWQgPSBnX3RocmVhZF90cnlfbmV3ICgiZGFlbW9uIHRocmVhZCIsIChHVGhyZWFkRnVuYykgZnVuYywgYmFja2VuZCwgTlVMTCk7Ci0rCWlmIChiYWNrZW5kLT5wcml2LT50aHJlYWQgIT0gTlVMTCkgewotKwkJZ190aHJlYWRfdW5yZWYoYmFja2VuZC0+cHJpdi0+dGhyZWFkKTsKLSsJfQotKyNlbmRpZgotIAlpZiAoYmFja2VuZC0+cHJpdi0+dGhyZWFkID09IE5VTEwpIHsKLSAJCWVnZ193YXJuaW5nICgiZmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQiKTsKLSAJCXJldHVybiBGQUxTRTsKLWRpZmYgLS1naXQgYS9zcmMvcGstbWFpbi5jIGIvc3JjL3BrLW1haW4uYwotaW5kZXggNGM3NThjZC4uOGZhMjQ4MiAxMDA2NDQKLS0tLSBhL3NyYy9way1tYWluLmMKLSsrKyBiL3NyYy9way1tYWluLmMKLUBAIC0yMTksMTIgKzIxOSwxMiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAliaW5kdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFLCBQQUNLQUdFX0xPQ0FMRV9ESVIpOwotIAliaW5kX3RleHRkb21haW5fY29kZXNldCAoR0VUVEVYVF9QQUNLQUdFLCAiVVRGLTgiKTsKLSAJdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFKTsKLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDMyLDApCi0gCWlmICghIGdfdGhyZWFkX3N1cHBvcnRlZCAoKSkKLSAJCWdfdGhyZWFkX2luaXQgKE5VTEwpOwotIAlkYnVzX2dfdGhyZWFkX2luaXQgKCk7Ci0gCWdfdHlwZV9pbml0ICgpOwotLQotKyNlbmRpZgotIAkvKiBUUkFOU0xBVE9SUzogZGVzY3JpYmluZyB0aGUgc2VydmljZSB0aGF0IGlzIHJ1bm5pbmcgKi8KLSAJY29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3IChfKCJQYWNrYWdlS2l0IHNlcnZpY2UiKSk7Ci0gCWdfb3B0aW9uX2NvbnRleHRfYWRkX21haW5fZW50cmllcyAoY29udGV4dCwgb3B0aW9ucywgTlVMTCk7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0LTAuNS42L2NvbmZpZ3VyZWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2VraXQvcGFja2FnZWtpdC0wLjUuNi9jb25maWd1cmVmaXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4Zjk1OTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0LTAuNS42L2NvbmZpZ3VyZWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBQYWNrYWdlS2l0LTAuNi4wL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFBhY2thZ2VLaXQtMC42LjAub3JpZy9jb25maWd1cmUuYWMJMjAxMC0wMS0wNCAxNjozMjoxOC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBQYWNrYWdlS2l0LTAuNi4wL2NvbmZpZ3VyZS5hYwkyMDEwLTAxLTI5IDExOjMzOjQ4LjAwMDAwMDAwMCArMDAwMAotQEAgLTkwLDcgKzkwLDcgQEAKLSAJCQkJCQkJZW5hYmxlX3N0cmljdD0kZGVmYXVsdF9zdHJpY3QpCi0gaWYgdGVzdCB4JGVuYWJsZV9zdHJpY3QgIT0geG5vOyB0aGVuCi0gCWlmIHRlc3QgIiRHQ0MiID0gInllcyI7IHRoZW4KLS0JCVdBUk5JTkdGTEFHU19DUFA9IiRXQVJOSU5HRkxBR1NfQ1BQIC1XZXJyb3IiCi0rCQk6Ci0gCWZpCi0gZmkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2VraXQvcGFja2FnZWtpdC0wLjUuNi9vcGtnZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdla2l0L3BhY2thZ2VraXQtMC41LjYvb3BrZ2ZpeGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTczYTE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2VraXQvcGFja2FnZWtpdC0wLjUuNi9vcGtnZml4ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MjIgKzAsMCBAQAotSW5kZXg6IFBhY2thZ2VLaXQtMC42LjAvYmFja2VuZHMvb3BrZy9way1iYWNrZW5kLW9wa2cuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFBhY2thZ2VLaXQtMC42LjAub3JpZy9iYWNrZW5kcy9vcGtnL3BrLWJhY2tlbmQtb3BrZy5jCTIwMTAtMDEtMjkgMDk6Mzk6MzMuMDAwMDAwMDAwICswMDAwCi0rKysgUGFja2FnZUtpdC0wLjYuMC9iYWNrZW5kcy9vcGtnL3BrLWJhY2tlbmQtb3BrZy5jCTIwMTAtMDEtMjkgMTE6MzA6NTEuMDAwMDAwMDAwICswMDAwCi1AQCAtMjksOCArMjksNyBAQAotIAotKyNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxsaWJvcGtnL29wa2cuaD4KLSAKLS1zdGF0aWMgb3BrZ190ICpvcGtnOwotLQotIGVudW0gewotIAlTRUFSQ0hfTkFNRSwKLSAJU0VBUkNIX0RFU0NSSVBUSU9OLAotQEAgLTYyLDcgKzYwLDcgQEAKLSAgKiBjaGVjayBhbiBvcGtnIHBhY2thZ2UgZm9yIGtub3duIEdVSSBkZXBlbmRhbmNpZXMKLSAgKi8KLSBzdGF0aWMgZ2Jvb2xlYW4KLS1vcGtnX2lzX2d1aV9wa2cgKG9wa2dfcGFja2FnZV90ICpwa2cpCi0rb3BrZ19pc19ndWlfcGtnIChwa2dfdCAqcGtnKQotIHsKLSAKLSAgIC8qIFRPRE86IGNoZWNrIGFwcHJvcHJpYXRlIHRhZyAqLwotQEAgLTg0LDcgKzgyLDcgQEAKLSAgKiBjaGVjayBhbiBvcGtnIHBhY2thZ2UgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGEgZGV2ZWxvcG1lbnQgcGFja2FnZQotICAqLwotIHN0YXRpYyBnYm9vbGVhbgotLW9wa2dfaXNfZGV2ZWxfcGtnIChvcGtnX3BhY2thZ2VfdCAqcGtnKQotK29wa2dfaXNfZGV2ZWxfcGtnIChwa2dfdCAqcGtnKQotIHsKLSAgIGlmIChnX3N0cnJzdHIgKHBrZy0+bmFtZSwgIi1kZXYiKSkKLSAgICAgICByZXR1cm4gVFJVRTsKLUBAIC0xMDUsNyArMTAzLDcgQEAKLSAgKiByZXR1cm5zIHRydWUgaWYgdGhlIHRhZyBpcyBwcmVzZW50Ci0gICovCi0gc3RhdGljIGdib29sZWFuIAotLW9wa2dfY2hlY2tfdGFnIChvcGtnX3BhY2thZ2VfdCAqcGtnLCBjb25zdCBnY2hhciAqdGFnKQotK29wa2dfY2hlY2tfdGFnIChwa2dfdCAqcGtnLCBjb25zdCBnY2hhciAqdGFnKQotIHsKLSAJaWYgKHBrZy0+dGFncyAmJiB0YWcpCi0gCQlyZXR1cm4gKGdfc3RycnN0ciAocGtnLT50YWdzLCB0YWcpICE9IE5VTEwpOwotQEAgLTExOCw3ICsxMTYsNyBAQAotIHsKLSAJc3dpdGNoIChlcnIpCi0gCXsKLS0JY2FzZSBPUEtHX05PX0VSUk9SOgotKy8qCWNhc2UgT1BLR19OT19FUlJPUjoKLSAJCWJyZWFrOwotIAljYXNlIE9QS0dfUEFDS0FHRV9OT1RfSU5TVEFMTEVEOgotIAkJcGtfYmFja2VuZF9lcnJvcl9jb2RlIChiYWNrZW5kLCBQS19FUlJPUl9FTlVNX1BBQ0tBR0VfTk9UX0lOU1RBTExFRCwgTlVMTCk7Ci1AQCAtMTQwLDcgKzEzOCw3IEBACi0gCQlicmVhazsKLSAJY2FzZSBPUEtHX1BBQ0tBR0VfTk9UX0FWQUlMQUJMRToKLSAJCXBrX2JhY2tlbmRfZXJyb3JfY29kZSAoYmFja2VuZCwgUEtfRVJST1JfRU5VTV9QQUNLQUdFX05PVF9GT1VORCwgTlVMTCk7Ci0tCQlicmVhazsKLSsJCWJyZWFrOyovCi0gCWRlZmF1bHQ6Ci0gCQlvcGtnX3Vua25vd25fZXJyb3IgKGJhY2tlbmQsIGVyciwgIlVwZGF0ZSBwYWNrYWdlIik7Ci0gCX0KLUBAIC0xNTIsNyArMTUwLDcgQEAKLSBzdGF0aWMgdm9pZAotIGJhY2tlbmRfaW5pdGlhbGl6ZSAoUGtCYWNrZW5kICpiYWNrZW5kKQotIHsKLS0Jb3BrZyA9IG9wa2dfbmV3ICgpOwotKwlpbnQgb3BrZyA9IG9wa2dfbmV3ICgpOwotIAotIAlpZiAoIW9wa2cpIHsKLSAJCXBrX2JhY2tlbmRfZXJyb3JfY29kZSAoYmFja2VuZCwKLUBAIC0xNjIsOCArMTYwLDggQEAKLSAJfQotIAotICNpZmRlZiBPUEtHX09GRkxJTkVfUk9PVAotLQlvcGtnX3NldF9vcHRpb24gKG9wa2csIChjaGFyICopICJvZmZsaW5lX3Jvb3QiLCBPUEtHX09GRkxJTkVfUk9PVCk7Ci0tCW9wa2dfcmVfcmVhZF9jb25maWdfZmlsZXMgKG9wa2cpOwotKwlvcGtnX3NldF9vcHRpb24gKChjaGFyICopICJvZmZsaW5lX3Jvb3QiLCBPUEtHX09GRkxJTkVfUk9PVCk7Ci0rCW9wa2dfcmVfcmVhZF9jb25maWdfZmlsZXMgKCk7Ci0gI2VuZGlmCi0gCi0gfQotQEAgLTE3NCwyMiArMTcyLDIyIEBACi0gc3RhdGljIHZvaWQKLSBiYWNrZW5kX2Rlc3Ryb3kgKFBrQmFja2VuZCAqYmFja2VuZCkKLSB7Ci0tCW9wa2dfZnJlZSAob3BrZyk7Ci0rCW9wa2dfZnJlZSAoKTsKLSB9Ci0gCi0gCi0gc3RhdGljIHZvaWQKLS1wa19vcGtnX3Byb2dyZXNzX2NiIChvcGtnX3QgKl9vcGtnLCBjb25zdCBvcGtnX3Byb2dyZXNzX2RhdGFfdCAqcGRhdGEsIHZvaWQgKmRhdGEpCi0rcGtfb3BrZ19wcm9ncmVzc19jYiAoY29uc3Qgb3BrZ19wcm9ncmVzc19kYXRhX3QgKnBkYXRhLCB2b2lkICpkYXRhKQotIHsKLS0JUGtCYWNrZW5kICpiYWNrZW5kID0gUEtfQkFDS0VORCAoZGF0YSk7Ci0rCVBrQmFja2VuZCAqYmFja2VuZCA9IChQa0JhY2tlbmQqKSBkYXRhOwotIAlpZiAoIWJhY2tlbmQpCi0gCQlyZXR1cm47Ci0gCi0gCXBrX2JhY2tlbmRfc2V0X3BlcmNlbnRhZ2UgKGJhY2tlbmQsIHBkYXRhLT5wZXJjZW50YWdlKTsKLS0JaWYgKHBkYXRhLT5wYWNrYWdlKQotKwlpZiAocGRhdGEtPnBrZykKLSAJewotIAkJZ2NoYXIgKnVpZDsKLS0JCW9wa2dfcGFja2FnZV90ICpwa2cgPSBwZGF0YS0+cGFja2FnZTsKLSsJCXBrZ190ICpwa2cgPSBwZGF0YS0+cGtnOwotIAkJZ2ludCBzdGF0dXMgPSBQS19JTkZPX0VOVU1fVU5LTk9XTjsKLSAKLSAJCXVpZCA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzOyVzOyVzOyIsCi1AQCAtMjI1LDEyICsyMjMsMTIgQEAKLSB7Ci0gCWludCByZXQ7Ci0gCi0tCXJldCA9IG9wa2dfdXBkYXRlX3BhY2thZ2VfbGlzdHMgKG9wa2csIHBrX29wa2dfcHJvZ3Jlc3NfY2IsIGJhY2tlbmQpOwotKwlyZXQgPSBvcGtnX3VwZGF0ZV9wYWNrYWdlX2xpc3RzIChwa19vcGtnX3Byb2dyZXNzX2NiLCBiYWNrZW5kKTsKLSAKLSAJaWYgKHJldCkgewotLQkJaWYgKHJldCA9PSBPUEtHX0RPV05MT0FEX0ZBSUxFRCkKLS0JCQlwa19iYWNrZW5kX2Vycm9yX2NvZGUgKGJhY2tlbmQsIFBLX0VSUk9SX0VOVU1fUkVQT19OT1RfQVZBSUxBQkxFLCBOVUxMKTsKLS0JCWVsc2UKLSsvLwkJaWYgKHJldCA9PSBPUEtHX0RPV05MT0FEX0ZBSUxFRCkKLSsvLwkJCXBrX2JhY2tlbmRfZXJyb3JfY29kZSAoYmFja2VuZCwgUEtfRVJST1JfRU5VTV9SRVBPX05PVF9BVkFJTEFCTEUsIE5VTEwpOwotKy8vCQllbHNlCi0gCQkJb3BrZ191bmtub3duX2Vycm9yIChiYWNrZW5kLCByZXQsICJSZWZyZXNoaW5nIGNhY2hlIik7Ci0gCX0KLSAJcGtfYmFja2VuZF9maW5pc2hlZCAoYmFja2VuZCk7Ci1AQCAtMjU2LDcgKzI1NCw3IEBACi0gICovCi0gCi0gc3RhdGljIHZvaWQKLS1wa19vcGtnX3BhY2thZ2VfbGlzdF9jYiAob3BrZ190ICpfb3BrZywgb3BrZ19wYWNrYWdlX3QgKnBrZywgdm9pZCAqZGF0YSkKLStwa19vcGtnX3BhY2thZ2VfbGlzdF9jYiAocGtnX3QgKnBrZywgdm9pZCAqZGF0YSkKLSB7Ci0gCVNlYXJjaFBhcmFtcyAqcGFyYW1zID0gKFNlYXJjaFBhcmFtcyopIGRhdGE7Ci0gCWdjaGFyICp1aWQ7Ci1AQCAtMjk4LDcgKzI5Niw3IEBACi0gCXVpZCA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzOyVzOyVzOyIsCi0gCQlwa2ctPm5hbWUsIHBrZy0+dmVyc2lvbiwgcGtnLT5hcmNoaXRlY3R1cmUpOwotIAotLQlpZiAocGtnLT5pbnN0YWxsZWQpCi0rCWlmIChwa2ctPnN0YXRlX3N0YXR1cyA9PSBTU19JTlNUQUxMRUQpCi0gCQlzdGF0dXMgPSBQS19JTkZPX0VOVU1fSU5TVEFMTEVEOwotIAllbHNlCi0gCQlzdGF0dXMgPSBQS19JTkZPX0VOVU1fQVZBSUxBQkxFOwotQEAgLTMxOCwxMCArMzE2LDEwIEBACi0gICAgICAgICAgICAgICAgIG9wa2dfaXNfZ3VpX3BrZyAocGtnKSkKLSAJCWdvdG8gZW5kX2hhbmRsZTsKLSAJaWYgKHBrX2JpdGZpZWxkX2NvbnRhaW4oZmlsdGVycywgUEtfRklMVEVSX0VOVU1fSU5TVEFMTEVEKSAmJiAKLS0gICAgICAgICAgICAgICAgKCFwa2ctPmluc3RhbGxlZCkpCi0rICAgICAgICAgICAgICAgIChwa2ctPnN0YXRlX3N0YXR1cyAhPSBTU19JTlNUQUxMRUQpKQotIAkJZ290byBlbmRfaGFuZGxlOwotIAlpZiAocGtfYml0ZmllbGRfY29udGFpbihmaWx0ZXJzLCBQS19GSUxURVJfRU5VTV9OT1RfSU5TVEFMTEVEKSAmJiAKLS0gICAgICAgICAgICAgICAgKHBrZy0+aW5zdGFsbGVkKSkKLSsgICAgICAgICAgICAgICAgKHBrZy0+c3RhdGVfc3RhdHVzID09IFNTX0lOU1RBTExFRCkpCi0gCQlnb3RvIGVuZF9oYW5kbGU7Ci0gCi0gCXBrX2JhY2tlbmRfcGFja2FnZSAocGFyYW1zLT5iYWNrZW5kLCBzdGF0dXMsIHVpZCwgcGtnLT5kZXNjcmlwdGlvbik7Ci1AQCAtMzM4LDcgKzMzNiw3IEBACi0gCi0gCXBhcmFtcyA9IHBrX2JhY2tlbmRfZ2V0X3BvaW50ZXIgKGJhY2tlbmQsICJzZWFyY2gtcGFyYW1zIik7Ci0gCi0tCW9wa2dfbGlzdF9wYWNrYWdlcyAob3BrZywgcGtfb3BrZ19wYWNrYWdlX2xpc3RfY2IsIHBhcmFtcyk7Ci0rCW9wa2dfbGlzdF9wYWNrYWdlcyAocGtfb3BrZ19wYWNrYWdlX2xpc3RfY2IsIHBhcmFtcyk7Ci0gCi0gCXBrX2JhY2tlbmRfZmluaXNoZWQgKHBhcmFtcy0+YmFja2VuZCk7Ci0gCi1AQCAtMzQ5LDcgKzM0Nyw3IEBACi0gfQotIAotIHN0YXRpYyB2b2lkCi0tYmFja2VuZF9zZWFyY2hfbmFtZSAoUGtCYWNrZW5kICpiYWNrZW5kLCBQa0JpdGZpZWxkIGZpbHRlcnMsIGNvbnN0IGdjaGFyICpzZWFyY2gpCi0rYmFja2VuZF9zZWFyY2hfbmFtZSAoUGtCYWNrZW5kICpiYWNrZW5kLCBQa0JpdGZpZWxkIGZpbHRlcnMsIGdjaGFyICoqc2VhcmNoKQotIHsKLSAJU2VhcmNoUGFyYW1zICpwYXJhbXM7Ci0gCi1AQCAtMzYwLDcgKzM1OCw3IEBACi0gCXBhcmFtcyA9IGdfbmV3MCAoU2VhcmNoUGFyYW1zLCAxKTsKLSAJcGFyYW1zLT5maWx0ZXJzID0gZmlsdGVyczsKLSAJcGFyYW1zLT5zZWFyY2hfdHlwZSA9IFNFQVJDSF9OQU1FOwotLQlwYXJhbXMtPm5lZWRsZSA9IGdfdXRmOF9zdHJkb3duIChzZWFyY2gsIC0xKTsKLSsJcGFyYW1zLT5uZWVkbGUgPSBnX3V0Zjhfc3RyZG93biAoc2VhcmNoWzBdLCAtMSk7Ci0gCXBhcmFtcy0+YmFja2VuZCA9IGJhY2tlbmQ7Ci0gCi0gCXBrX2JhY2tlbmRfc2V0X3BvaW50ZXIgKGJhY2tlbmQsICJzZWFyY2gtcGFyYW1zIiwgcGFyYW1zKTsKLUBAIC0zNzEsNyArMzY5LDcgQEAKLSAgKiBiYWNrZW5kX3NlYXJjaF9kZXNjcmlwdGlvbjoKLSAgKi8KLSBzdGF0aWMgdm9pZAotLWJhY2tlbmRfc2VhcmNoX2Rlc2NyaXB0aW9uIChQa0JhY2tlbmQgKmJhY2tlbmQsIFBrQml0ZmllbGQgZmlsdGVycywgY29uc3QgZ2NoYXIgKnNlYXJjaCkKLStiYWNrZW5kX3NlYXJjaF9kZXNjcmlwdGlvbiAoUGtCYWNrZW5kICpiYWNrZW5kLCBQa0JpdGZpZWxkIGZpbHRlcnMsIGdjaGFyICoqc2VhcmNoKQotIHsKLSAJU2VhcmNoUGFyYW1zICpwYXJhbXM7Ci0gCi1AQCAtMzgyLDcgKzM4MCw3IEBACi0gCXBhcmFtcyA9IGdfbmV3MCAoU2VhcmNoUGFyYW1zLCAxKTsKLSAJcGFyYW1zLT5maWx0ZXJzID0gZmlsdGVyczsKLSAJcGFyYW1zLT5zZWFyY2hfdHlwZSA9IFNFQVJDSF9ERVNDUklQVElPTjsKLS0JcGFyYW1zLT5uZWVkbGUgPSBnX3V0Zjhfc3RyZG93biAoc2VhcmNoLCAtMSk7Ci0rCXBhcmFtcy0+bmVlZGxlID0gZ191dGY4X3N0cmRvd24gKHNlYXJjaFswXSwgLTEpOwotIAlwYXJhbXMtPmJhY2tlbmQgPSBiYWNrZW5kOwotIAotIAlwa19iYWNrZW5kX3NldF9wb2ludGVyIChiYWNrZW5kLCAic2VhcmNoLXBhcmFtcyIsIHBhcmFtcyk7Ci1AQCAtMzkwLDcgKzM4OCw3IEBACi0gfQotIAotIHN0YXRpYyB2b2lkCi0tYmFja2VuZF9zZWFyY2hfZ3JvdXAgKFBrQmFja2VuZCAqYmFja2VuZCwgUGtCaXRmaWVsZCBmaWx0ZXJzLCBjb25zdCBnY2hhciAqc2VhcmNoKQotK2JhY2tlbmRfc2VhcmNoX2dyb3VwIChQa0JhY2tlbmQgKmJhY2tlbmQsIFBrQml0ZmllbGQgZmlsdGVycywgZ2NoYXIgKipzZWFyY2gpCi0gewotIAlTZWFyY2hQYXJhbXMgKnBhcmFtczsKLSAKLUBAIC00MDEsNyArMzk5LDcgQEAKLSAJcGFyYW1zID0gZ19uZXcwIChTZWFyY2hQYXJhbXMsIDEpOwotIAlwYXJhbXMtPmZpbHRlcnMgPSBmaWx0ZXJzOwotIAlwYXJhbXMtPnNlYXJjaF90eXBlID0gU0VBUkNIX1RBRzsKLS0JcGFyYW1zLT5uZWVkbGUgPSBnX3N0cmR1cF9wcmludGYgKCJncm91cDo6JXMiLCBzZWFyY2gpOwotKwlwYXJhbXMtPm5lZWRsZSA9IGdfc3RyZHVwX3ByaW50ZiAoImdyb3VwOjolcyIsIHNlYXJjaFswXSk7Ci0gCXBhcmFtcy0+YmFja2VuZCA9IGJhY2tlbmQ7Ci0gCi0gCXBrX2JhY2tlbmRfc2V0X3BvaW50ZXIgKGJhY2tlbmQsICJzZWFyY2gtcGFyYW1zIiwgcGFyYW1zKTsKLUBAIC00MTIsOSArNDEwLDkgQEAKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBiYWNrZW5kX2luc3RhbGxfcGFja2FnZXNfdGhyZWFkIChQa0JhY2tlbmQgKmJhY2tlbmQpCi0gewotLQlQa1BhY2thZ2VJZCAqcGk7Ci0gCWdpbnQgZXJyLCBpOwotIAlnY2hhciAqKnBhY2thZ2VfaWRzOwotKwlnY2hhciAqKnBhcnRzOwotIAotIAlwYWNrYWdlX2lkcyA9IHBrX2JhY2tlbmRfZ2V0X3N0cnYgKGJhY2tlbmQsICJwa2lkcyIpOwotIAotQEAgLTQyNCwxMyArNDIyLDEzIEBACi0gCXsKLSAJCXBrX2JhY2tlbmRfcGFja2FnZSAoYmFja2VuZCwgUEtfSU5GT19FTlVNX0lOU1RBTExJTkcsIHBhY2thZ2VfaWRzW2ldLCBOVUxMKTsKLSAKLS0JCXBpID0gcGtfcGFja2FnZV9pZF9uZXdfZnJvbV9zdHJpbmcgKHBhY2thZ2VfaWRzW2ldKTsKLSsJCXBhcnRzID0gcGtfcGFja2FnZV9pZF9zcGxpdCAocGFja2FnZV9pZHNbaV0pOwotIAotLQkJZXJyID0gb3BrZ19pbnN0YWxsX3BhY2thZ2UgKG9wa2csIHBpLT5uYW1lLCBwa19vcGtnX3Byb2dyZXNzX2NiLCBiYWNrZW5kKTsKLSsJCWVyciA9IG9wa2dfaW5zdGFsbF9wYWNrYWdlIChwYXJ0c1tQS19QQUNLQUdFX0lEX05BTUVdLCBwa19vcGtnX3Byb2dyZXNzX2NiLCBiYWNrZW5kKTsKLSAJCWlmIChlcnIpCi0gCQkJaGFuZGxlX2luc3RhbGxfZXJyb3IgKGJhY2tlbmQsIGVycik7Ci0gCi0tCQlwa19wYWNrYWdlX2lkX2ZyZWUgKHBpKTsKLSsJCWdfc3RyZnJlZXYgKHBhcnRzKTsKLSAJCWlmIChlcnIgIT0gMCkKLSAJCQlicmVhazsKLSAJfQotQEAgLTQ1Myw5ICs0NTEsOSBAQAotIHN0YXRpYyBnYm9vbGVhbgotIGJhY2tlbmRfcmVtb3ZlX3BhY2thZ2VzX3RocmVhZCAoUGtCYWNrZW5kICpiYWNrZW5kKQotIHsKLS0JUGtQYWNrYWdlSWQgKnBpOwotIAlnaW50IGVyciwgaTsKLSAJZ2NoYXIgKipwYWNrYWdlX2lkczsKLSsJZ2NoYXIgKipwYXJ0czsKLSAJZ2Jvb2xlYW4gYWxsb3dfZGVwczsKLSAJZ2Jvb2xlYW4gYXV0b3JlbW92ZTsKLSAJZ3BvaW50ZXIgKmRhdGE7Ci1AQCAtNDY3LDI5ICs0NjUsMzAgQEAKLSAJYXV0b3JlbW92ZSA9IEdQT0lOVEVSX1RPX0lOVCAoZGF0YVsyXSk7Ci0gCWdfZnJlZSAoZGF0YSk7Ci0gCi0tCW9wa2dfc2V0X29wdGlvbiAob3BrZywgKGNoYXIgKikiYXV0b3JlbW92ZSIsICZhdXRvcmVtb3ZlKTsKLS0Jb3BrZ19zZXRfb3B0aW9uIChvcGtnLCAoY2hhciAqKSJmb3JjZV9yZW1vdmFsX29mX2RlcGVuZGVudF9wYWNrYWdlcyIsICZhbGxvd19kZXBzKTsKLSsJb3BrZ19zZXRfb3B0aW9uICgoY2hhciAqKSJhdXRvcmVtb3ZlIiwgJmF1dG9yZW1vdmUpOwotKwlvcGtnX3NldF9vcHRpb24gKChjaGFyICopImZvcmNlX3JlbW92YWxfb2ZfZGVwZW5kZW50X3BhY2thZ2VzIiwgJmFsbG93X2RlcHMpOwotIAotIAllcnIgPSAwOwotIAotIAlmb3IgKGkgPSAwOyBwYWNrYWdlX2lkc1tpXTsgaSsrKQotIAl7Ci0tCQlwaSA9IHBrX3BhY2thZ2VfaWRfbmV3X2Zyb21fc3RyaW5nIChwYWNrYWdlX2lkc1tpXSk7Ci0gCQlwa19iYWNrZW5kX3BhY2thZ2UgKGJhY2tlbmQsIFBLX0lORk9fRU5VTV9SRU1PVklORywgcGFja2FnZV9pZHNbaV0sIE5VTEwpOwotIAotLQkJZXJyID0gb3BrZ19yZW1vdmVfcGFja2FnZSAob3BrZywgcGktPm5hbWUsIHBrX29wa2dfcHJvZ3Jlc3NfY2IsIGJhY2tlbmQpOwotKwkJcGFydHMgPSBwa19wYWNrYWdlX2lkX3NwbGl0IChwYWNrYWdlX2lkc1tpXSk7Ci0rCi0rCQllcnIgPSBvcGtnX3JlbW92ZV9wYWNrYWdlIChwYXJ0c1tQS19QQUNLQUdFX0lEX05BTUVdLCBwa19vcGtnX3Byb2dyZXNzX2NiLCBiYWNrZW5kKTsKLSAKLSAJCXN3aXRjaCAoZXJyKQotIAkJewotLQkJY2FzZSBPUEtHX05PX0VSUk9SOgotLQkJCWJyZWFrOwotLQkJY2FzZSBPUEtHX1BBQ0tBR0VfTk9UX0lOU1RBTExFRDoKLS0JCQlwa19iYWNrZW5kX2Vycm9yX2NvZGUgKGJhY2tlbmQsIFBLX0VSUk9SX0VOVU1fUEFDS0FHRV9OT1RfSU5TVEFMTEVELCBOVUxMKTsKLS0JCQlicmVhazsKLSsJCS8vY2FzZSBPUEtHX05PX0VSUk9SOgotKwkJLy8JYnJlYWs7Ci0rCQkvL2Nhc2UgT1BLR19QQUNLQUdFX05PVF9JTlNUQUxMRUQ6Ci0rCQkvLwlwa19iYWNrZW5kX2Vycm9yX2NvZGUgKGJhY2tlbmQsIFBLX0VSUk9SX0VOVU1fUEFDS0FHRV9OT1RfSU5TVEFMTEVELCBOVUxMKTsKLSsJCS8vCWJyZWFrOwotIAkJZGVmYXVsdDoKLSAJCQlvcGtnX3Vua25vd25fZXJyb3IgKGJhY2tlbmQsIGVyciwgIlJlbW92ZSIpOwotIAkJfQotLQkJcGtfcGFja2FnZV9pZF9mcmVlIChwaSk7Ci0rCQlnX3N0cmZyZWV2IChwYXJ0cyk7Ci0gCi0gCQlpZiAoZXJyICE9IDApCi0gCQkJYnJlYWs7Ci1AQCAtNTQwLDcgKzUzOSw3IEBACi0gCWdpbnQgZXJyOwotIAotIAkvKiBGSVhNRTogc3VwcG9ydCBvbmx5X3RydXN0ZWQgKi8KLS0JZXJyID0gb3BrZ191cGdyYWRlX2FsbCAob3BrZywgcGtfb3BrZ19wcm9ncmVzc19jYiwgYmFja2VuZCk7Ci0rCWVyciA9IG9wa2dfdXBncmFkZV9hbGwgKHBrX29wa2dfcHJvZ3Jlc3NfY2IsIGJhY2tlbmQpOwotIAotIAlpZiAoZXJyKQotIAkJb3BrZ191bmtub3duX2Vycm9yIChiYWNrZW5kLCBlcnIsICJVcGdyYWRpbmcgc3lzdGVtIik7Ci1AQCAtNTY0LDI5ICs1NjMsMjggQEAKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBiYWNrZW5kX3VwZGF0ZV9wYWNrYWdlX3RocmVhZCAoUGtCYWNrZW5kICpiYWNrZW5kKQotIHsKLS0JUGtQYWNrYWdlSWQgKnBpOwotKyAgICAgICAgZ2NoYXIgKipwYXJ0czsKLSAJZ2ludCBlcnIgPSAwOwotIAljb25zdCBnY2hhciAqcGFja2FnZV9pZDsKLSAKLSAJLyogRklYTUU6IHN1cHBvcnQgb25seV90cnVzdGVkICovCi0gCXBhY2thZ2VfaWQgPSBwa19iYWNrZW5kX2dldF9zdHJpbmcgKGJhY2tlbmQsICJwa2dpZCIpOwotLQlwaSA9IHBrX3BhY2thZ2VfaWRfbmV3X2Zyb21fc3RyaW5nIChwYWNrYWdlX2lkKTsKLSsJcGFydHMgPSBwa19wYWNrYWdlX2lkX3NwbGl0IChwYWNrYWdlX2lkKTsKLSAKLS0JaWYgKCFwaS0+bmFtZSB8fCAhcGktPnZlcnNpb24pCi0rCWlmICghcGFydHMpCi0gCXsKLSAJCXBrX2JhY2tlbmRfZXJyb3JfY29kZSAoYmFja2VuZCwgUEtfRVJST1JfRU5VTV9QQUNLQUdFX05PVF9GT1VORCwKLSAJCQkJIlBhY2thZ2Ugbm90IGZvdW5kIik7Ci0tCQlwa19wYWNrYWdlX2lkX2ZyZWUgKHBpKTsKLSAJCXBrX2JhY2tlbmRfZmluaXNoZWQgKGJhY2tlbmQpOwotIAkJcmV0dXJuIEZBTFNFOwotIAl9Ci0gCi0tCWVyciA9IG9wa2dfdXBncmFkZV9wYWNrYWdlIChvcGtnLCBwaS0+bmFtZSwgcGtfb3BrZ19wcm9ncmVzc19jYiwgYmFja2VuZCk7Ci0rCWVyciA9IG9wa2dfdXBncmFkZV9wYWNrYWdlIChwYXJ0c1tQS19QQUNLQUdFX0lEX05BTUVdLCBwa19vcGtnX3Byb2dyZXNzX2NiLCBiYWNrZW5kKTsKLSAJaWYgKGVycikKLSAJCWhhbmRsZV9pbnN0YWxsX2Vycm9yIChiYWNrZW5kLCBlcnIpOwotIAotIAotLQlwa19wYWNrYWdlX2lkX2ZyZWUgKHBpKTsKLSsJZ19zdHJmcmVldiAocGFydHMpOwotIAlwa19iYWNrZW5kX2ZpbmlzaGVkIChiYWNrZW5kKTsKLSAJcmV0dXJuIChlcnIgIT0gMCk7Ci0gfQotQEAgLTYxMCwxMyArNjA4LDEzIEBACi0gICovCi0gCi0gc3RhdGljIHZvaWQKLS1wa19vcGtnX2xpc3RfdXBncmFkYWJsZV9jYiAob3BrZ190ICpfb3BrZywgb3BrZ19wYWNrYWdlX3QgKnBrZywgdm9pZCAqZGF0YSkKLStwa19vcGtnX2xpc3RfdXBncmFkYWJsZV9jYiAocGtnX3QgKnBrZywgdm9pZCAqZGF0YSkKLSB7Ci0tCVBrQmFja2VuZCAqYmFja2VuZCA9IFBLX0JBQ0tFTkQgKGRhdGEpOwotKwlQa0JhY2tlbmQgKmJhY2tlbmQgPSAoUGtCYWNrZW5kKikgZGF0YTsKLSAJZ2NoYXIgKnVpZDsKLSAJZ2ludCBzdGF0dXM7Ci0gCi0tCWlmIChwa2ctPmluc3RhbGxlZCkKLSsJaWYgKHBrZy0+c3RhdGVfc3RhdHVzID09IFNTX0lOU1RBTExFRCkKLSAJCXN0YXR1cyA9IFBLX0lORk9fRU5VTV9JTlNUQUxMRUQ7Ci0gCWVsc2UKLSAJCXN0YXR1cyA9IFBLX0lORk9fRU5VTV9BVkFJTEFCTEU7Ci1AQCAtNjMxLDcgKzYyOSw3IEBACi0gc3RhdGljIGdib29sZWFuCi0gYmFja2VuZF9nZXRfdXBkYXRlc190aHJlYWQgKFBrQmFja2VuZCAqYmFja2VuZCkKLSB7Ci0tCW9wa2dfbGlzdF91cGdyYWRhYmxlX3BhY2thZ2VzIChvcGtnLCBwa19vcGtnX2xpc3RfdXBncmFkYWJsZV9jYiwgYmFja2VuZCk7Ci0rCW9wa2dfbGlzdF91cGdyYWRhYmxlX3BhY2thZ2VzIChwa19vcGtnX2xpc3RfdXBncmFkYWJsZV9jYiwgYmFja2VuZCk7Ci0gCXBrX2JhY2tlbmRfZmluaXNoZWQgKGJhY2tlbmQpOwotIAlyZXR1cm4gVFJVRTsKLSB9Ci1AQCAtNjY4LDE2ICs2NjYsMTggQEAKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBiYWNrZW5kX2dldF9kZXRhaWxzX3RocmVhZCAoUGtCYWNrZW5kICpiYWNrZW5kKQotIHsKLS0JUGtQYWNrYWdlSWQgKnBpOwotIAlnY2hhciAqKnBhY2thZ2VfaWRzOwotKyAgICAgICAgZ2NoYXIgKipwYXJ0czsKLSAJaW50IGdyb3VwX2luZGV4OwotIAlQa0dyb3VwRW51bSBncm91cCA9IDA7Ci0tCW9wa2dfcGFja2FnZV90ICpwa2c7Ci0rCXBrZ190ICpwa2c7Ci0gCWdjaGFyICpuZXdpZDsKLSAKLSAgICAgICAgIHBhY2thZ2VfaWRzID0gcGtfYmFja2VuZF9nZXRfc3RydihiYWNrZW5kLCAicGFja2FnZV9pZHMiKTsKLS0JcGkgPSBwa19wYWNrYWdlX2lkX25ld19mcm9tX3N0cmluZyAocGFja2FnZV9pZHNbMF0pOwotLQlpZiAocGkgPT0gTlVMTCkKLSsJcGFydHMgPSBwa19wYWNrYWdlX2lkX3NwbGl0IChwYWNrYWdlX2lkc1swXSk7Ci0rCi0rCi0rCWlmICghcGFydHMpCi0gCXsKLSAJCXBrX2JhY2tlbmRfZXJyb3JfY29kZSAoYmFja2VuZCwgUEtfRVJST1JfRU5VTV9QQUNLQUdFX0lEX0lOVkFMSUQsICJpbnZhbGlkIHBhY2thZ2UgaWQiKTsKLSAJCXBrX2JhY2tlbmRfZmluaXNoZWQgKGJhY2tlbmQpOwotQEAgLTY4NSw4ICs2ODUsOCBAQAotIAl9Ci0gCi0gCi0tCXBrZyA9IG9wa2dfZmluZF9wYWNrYWdlIChvcGtnLCBwaS0+bmFtZSwgcGktPnZlcnNpb24sIHBpLT5hcmNoLCBwaS0+ZGF0YSk7Ci0tCXBrX3BhY2thZ2VfaWRfZnJlZSAocGkpOwotKwlwa2cgPSBvcGtnX2ZpbmRfcGFja2FnZSAocGFydHNbUEtfUEFDS0FHRV9JRF9OQU1FXSwgcGFydHNbUEtfUEFDS0FHRV9JRF9WRVJTSU9OXSwgcGFydHNbUEtfUEFDS0FHRV9JRF9BUkNIXSwgcGFydHNbUEtfUEFDS0FHRV9JRF9EQVRBXSk7Ci0rCWdfc3RyZnJlZXYgKHBhcnRzKTsKLSAKLSAJaWYgKCFwa2cpCi0gCXsKLUBAIC02OTUsNyArNjk1LDcgQEAKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotIAotLQluZXdpZCA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzOyVzOyVzOyVzIiwgcGtnLT5uYW1lLCBwa2ctPnZlcnNpb24sIHBrZy0+YXJjaGl0ZWN0dXJlLCBwa2ctPnJlcG9zaXRvcnkpOwotKwluZXdpZCA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzOyVzOyVzOyVzIiwgcGtnLT5uYW1lLCBwa2ctPnZlcnNpb24sIHBrZy0+YXJjaGl0ZWN0dXJlLCBwa2ctPnNyYy0+bmFtZSk7Ci0gCi0gCWlmIChwa2ctPnRhZ3MpIHsKLSAJCWZvciAoZ3JvdXBfaW5kZXggPSAwOyBncm91cCA8IFBLX0dST1VQX0VOVU1fTEFTVDsgZ3JvdXBfaW5kZXgrKykgewotQEAgLTcwNiw5ICs3MDYsOCBAQAotIAkJfQotIAl9Ci0gCi0tCXBrX2JhY2tlbmRfZGV0YWlscyAoYmFja2VuZCwgbmV3aWQsIE5VTEwsIGdyb3VwLCBwa2ctPmRlc2NyaXB0aW9uLCBwa2ctPnVybCwgcGtnLT5zaXplKTsKLSsJcGtfYmFja2VuZF9kZXRhaWxzIChiYWNrZW5kLCBuZXdpZCwgTlVMTCwgZ3JvdXAsIHBrZy0+ZGVzY3JpcHRpb24sIE5VTEwsIHBrZy0+c2l6ZSk7Ci0gCWdfZnJlZSAobmV3aWQpOwotLQlvcGtnX3BhY2thZ2VfZnJlZShwa2cpOwotIAlwa19iYWNrZW5kX2ZpbmlzaGVkIChiYWNrZW5kKTsKLSAJcmV0dXJuIFRSVUU7Ci0gfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0XzAuNS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWtpdC9wYWNrYWdla2l0XzAuNS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjYwYzQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2VraXQvcGFja2FnZWtpdF8wLjUuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLVNVTU1BUlkgPSAiUGFja2FnZUtpdCBwYWNrYWdlIG1hbmFnZW1lbnQgYWJzdHJhY3Rpb24iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTC0yLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi1ERVBFTkRTID0gImd0aysgcHl0aG9uIHBvbGtpdCBkYnVzIGRidXMtZ2xpYiBnbGliLTIuMCBzcWxpdGUzIG9wa2cgaW50bHRvb2wgaW50bHRvb2wtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAib3BrZyBiYXNoIgotCi1pbmhlcml0IGdub21lIHB5dGhvbm5hdGl2ZQotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL1BhY2thZ2VLaXQvcmVsZWFzZXMvUGFja2FnZUtpdC0ke1BWfS50YXIuYnoyO25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmVmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BrZ2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtY2FsbC1kZXByZWNhdGVkLWdsaWItZnVuY3Rpb25zLWFuZC11c2UtdGhlLW5ldy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzM2EzMTI3ZTllZDQxZTI2NjcxNzg2YWVlOWZlNTZmZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjhkYWU0MTQ5M2RmYjAxMTQ0Mjc0NmQyNTJiMzQzNWJmMzIwNGUxN2JmN2M0N2UzOTZmOTBmYmQyMTUyNjBlMTQiCi0KLVMgPSAiJHtXT1JLRElSfS9QYWNrYWdlS2l0LSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tzZXJ2aWNlLXBhY2tzXSA9ICItLWVuYWJsZS1zZXJ2aWNlLXBhY2tzLC0tZGlzYWJsZS1zZXJ2aWNlLXBhY2tzLGxpYmFyY2hpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc2VjdXJpdHktZnJhbWV3b3JrPWR1bW15IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGVmYXVsdC1iYWNrZW5kPW9wa2cgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9wa2cgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJ1Y2sgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1xdCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdzdHJlYW1lci1wbHVnaW4gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1sb2NhbCAgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZXR3b3JrbWFuYWdlciBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldmljZS1yZWJpbmQgXAotICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfWE1MVE89bm8gXAotIgotCi0jZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0jICAgIG1rZGlyIC1wIG00Ci0jICAgIGVjaG8gIkVYVFJBX0RJU1Q9IiA+IGd0ay1kb2MubWFrZQotI30KLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBmb3IgaSBpbiAkKGZpbmQgLiAtbmFtZSBNYWtlZmlsZSkgOyBkbwotICAgICAgICBzZWQgLWkgLWUgczoke1NUQUdJTkdfRElSX05BVElWRX06OmcgXAotICAgICAgICAgICAgICAgLWUgczovdXNyL2Jpbi9pbnRsdG9vbC1tZXJnZToke1NUQUdJTkdfQklORElSX05BVElWRX0vaW50bHRvb2wtbWVyZ2U6ZyBcCi0gICAgICAgICAgICAgICAkaQotICAgIGRvbmUKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXdlYnNpdGUiCi1GSUxFU18ke1BOfS13ZWJzaXRlID0gIiR7ZGF0YWRpcn0vUGFja2FnZUtpdC93ZWJzaXRlIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24qIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ3RrbW9kdWxlIgotRklMRVNfJHtQTn0tZ3RrbW9kdWxlID0gIiR7bGliZGlyfS9ndGstMi4wLyovKi5zbyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9wYWNrYWdla2l0LWJhY2tlbmQvKi5zbyAke2xpYmRpcn0vcG0tdXRpbHMgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzLyAke2RhdGFkaXJ9L1BvbGljeUtpdCAke2RhdGFkaXJ9L1BhY2thZ2VLaXQiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9wYWNrYWdla2l0LWJhY2tlbmQvLmRlYnVnLyouc28gJHtsaWJkaXJ9L2d0ay0yLjAvKi8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wYWNrYWdla2l0LWJhY2tlbmQvKi5sYSAke2xpYmRpcn0vZ3RrLTIuMC8qLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9wYWNrYWdla2l0LWJhY2tlbmQvKi5hICR7bGliZGlyfS9ndGstMi4wLyovKi5hIgotCi0jIFBhY2thZ2VLaXQtMC41LjYvYmFja2VuZHMvb3BrZy9way1iYWNrZW5kLW9wa2cuYzozMToyNjogZmF0YWwgZXJyb3I6IGxpYm9wa2cvb3BrZy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1QTkJMQUNLTElTVFtwYWNrYWdla2l0XSA/PSAiQlJPS0VOOiBkZXBlbmRzIG9uIG9sZCBkZXByZWNhdGVkIGxpYm9wa2cgd2hpY2ggaXMgY3VycmVudGx5IGRpc2FibGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgc29vbiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvaXBjLXJ1bl8wLjk0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTQuYmIKaW5kZXggNjYwNTRhMi4uM2I1ODkzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTQuYmIKQEAgLTMsNiArMyw3IEBACiB1c2luZyBmaWxlcywgcGlwZXMsIGFuZCBwc2V1ZG8tdHR5cy4gQm90aCBzeXN0ZW0oKS1zdHlsZSBhbmQgc2NyaXB0ZWQgXAogdXNhZ2VzIGFyZSBzdXBwb3J0ZWQgYW5kIG1heSBiZSBtaXhlZC4gTGlrZXdpc2UsIGZ1bmN0aW9uYWwgYW5kIE9PIEFQSSBcCiBzdHlsZXMgYXJlIGJvdGggc3VwcG9ydGVkIGFuZCBtYXkgYmUgbWl4ZWQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9JUEMtUnVuIgogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTBlYmQzN2NhZjUzNzgxZThiNzIyM2U2Yjk5YjYzZjRlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMjYvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNS42LjMxLzAwMDEtQWRkLWxwdGhyZWFkLXRvLWxpbmsucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNS42LjI2LzAwMDEtQWRkLWxwdGhyZWFkLXRvLWxpbmsucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNS42LjMxLzAwMDEtQWRkLWxwdGhyZWFkLXRvLWxpbmsucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNS42LjI2L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNS42LjI2L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTUuNi4zMS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuNy8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvMDAwMS1TcGVjaWZ5LXRhZy13aXRoLWxpYnRvb2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjcvMDAwMS1TcGVjaWZ5LXRhZy13aXRoLWxpYnRvb2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvMDAwMS1TcGVjaWZ5LXRhZy13aXRoLWxpYnRvb2wucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvQ1ZFLTIwMTctMTY2NDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS45L0NWRS0yMDE3LTE2NjQyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZDJhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS45L0NWRS0yMDE3LTE2NjQyLnBhdGNoCkBAIC0wLDAgKzEsNTI0MSBAQAorRnJvbSBmMmY5MDc2NzMxMTM1NWNhZmFiZmY2MDRhN2E4NTdjYTYwZWUzZjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyMiBOb3YgMjAxNyAyMToxNDo1OSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXhlZCBidWcgIzc1MDU1IE91dC1PZi1Cb3VuZHMgUmVhZCBpbiB0aW1lbGliX21lcmlkaWFuKCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNjY0MgorU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorLS0tCisgZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyAgICAgICAgIHwgMTU0NCArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUgICAgICAgIHwgICAgNCArLQorIGV4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdCB8ICAgIDIgKy0KKyBleHQvd2RkeC90ZXN0cy9idWc3NTA1NS5waHB0ICAgICAgfCAgIDIwICsKKyBleHQvd2RkeC90ZXN0cy9idWc3NTA1NS53ZGR4ICAgICAgfCAgIDEzICsKKyA1IGZpbGVzIGNoYW5nZWQsIDkxMSBpbnNlcnRpb25zKCspLCA2NzIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LnBocHQKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUud2RkeAorCitkaWZmIC0tZ2l0IGEvZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyBiL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMKK2luZGV4IGY5Mjk2MTkuLjZiMTE0MTggMTAwNjQ0CistLS0gYS9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jCisrKysgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jCitAQCAtMSw0ICsxLDUgQEAKKy0vKiBHZW5lcmF0ZWQgYnkgcmUyYyAwLjE1LjMgb24gVHVlIEp1bCAgNCAyMToxNToxNyAyMDE3ICovCisrLyogR2VuZXJhdGVkIGJ5IHJlMmMgMC4xNS4zIG9uIFdlZCBOb3YgMjIgMjE6MTQ6NDcgMjAxNyAqLworKyNsaW5lIDEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIC8qCisgICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCisgICoKK0BAIC04MzcsOSArODM4LDExIEBAIHN0YXRpYyBpbnQgc2NhbihTY2FubmVyICpzLCB0aW1lbGliX3R6X2dldF93cmFwcGVyIHR6X2dldF93cmFwcGVyKQorIHN0ZDoKKyAJcy0+dG9rID0gY3Vyc29yOworIAlzLT5sZW4gPSAwOworKyNsaW5lIDk2NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCisgCisgCisrI2xpbmUgODQ2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHsKKyAJWVlDVFlQRSB5eWNoOworIAl1bnNpZ25lZCBpbnQgeXlhY2NlcHQgPSAwOworQEAgLTk2MiwxOCArOTY1LDE5IEBAIHl5MjoKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7CistCQkJZ290byB5eTE1MjE7CisrCQkJZ290byB5eTE1MjM7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnZCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7CisgCQkJaWYgKHl5Y2ggPj0gJ2EnKSBnb3RvIHl5MTcwOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTMwOworKwkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzI7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOworIAkJfQorIAl9CisgeXkzOgorKyNsaW5lIDE2NzMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgdHpfbm90X2ZvdW5kOworIAkJREVCVUdfT1VUUFVUKCJ0emNvcnJlY3Rpb24gfCB0eiIpOworQEAgLTk4Niw2ICs5OTAsNyBAQCB5eTM6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1RJTUVaT05FOworIAl9CisrI2xpbmUgOTk0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnRScpIHsKK0BAIC05OTUsNyArMTAwMCw3IEBAIHl5NDoKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7CistCQkJZ290byB5eTE1MjE7CisrCQkJZ290byB5eTE1MjM7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnZCcpIHsKK0BAIC0xMDAzLDcgKzEwMDgsNyBAQCB5eTQ6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY1OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTIxOworKwkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MjM7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OworIAkJCWdvdG8geXkzOworIAkJfQorQEAgLTEwMTcsMTIgKzEwMjIsMTIgQEAgeXk1OgorIAkJCWdvdG8geXkxNjU7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdIJykgeworLQkJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDkyOworKwkJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDk0OworIAkJCQlnb3RvIHl5MTY1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdJJykgZ290byB5eTE0OTM7CisrCQkJCWlmICh5eWNoIDw9ICdJJykgZ290byB5eTE0OTU7CisgCQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE2NTsKKy0JCQkJZ290byB5eTE0OTE7CisrCQkJCWdvdG8geXkxNDkzOworIAkJCX0KKyAJCX0KKyAJfSBlbHNlIHsKK0BAIC0xMDMxLDE1ICsxMDM2LDE1IEBAIHl5NToKKyAJCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTA4OworKwkJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTEwOworIAkJCQlnb3RvIHl5MTcwOworIAkJCX0KKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ24nKSB7CistCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE1MDk7CisrCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE1MTE7CisgCQkJCWdvdG8geXkxNzA7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTUwNzsKKysJCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTUwOTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CitAQCAtMTA1NCwxMiArMTA1OSwxMiBAQCB5eTY6CisgCQkJZ290byB5eTE2NTsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0gnKSB7CistCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0OTI7CisrCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0OTQ7CisgCQkJCWdvdG8geXkxNjU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ5MzsKKysJCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ5NTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTY1OworLQkJCQlnb3RvIHl5MTQ5MTsKKysJCQkJZ290byB5eTE0OTM7CisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworQEAgLTEwNjgsMTUgKzEwNzMsMTUgQEAgeXk2OgorIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7CisgCQkJCWdvdG8geXkzOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE0OTI7CisrCQkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE0OTQ7CisgCQkJCWdvdG8geXkxNjU7CisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnbicpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ5MzsKKysJCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ5NTsKKyAJCQkJZ290byB5eTE2NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDkxOworKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDkzOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KK0BAIC0xMDg4LDI0ICsxMDkzLDI0IEBAIHl5NzoKKyAJCWlmICh5eWNoIDw9ICdBJykgeworIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworLQkJCWdvdG8geXkxNDYxOworKwkJCWdvdG8geXkxNDYzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDYyOworKwkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTE0NjQ7CisgCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTY1OworLQkJCWdvdG8geXkxNDYzOworKwkJCWdvdG8geXkxNDY1OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2gnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ3NjsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDc4OworIAkJCWdvdG8geXkxNzA7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICduJykgeworLQkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDc3OworKwkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDc5OworIAkJCQlnb3RvIHl5MTcwOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0Nzg7CisrCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0ODA7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MDsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorQEAgLTExMTcsMjQgKzExMjIsMjQgQEAgeXk4OgorIAkJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CistCQkJZ290byB5eTE0NjE7CisrCQkJZ290byB5eTE0NjM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTE0NjI7CisrCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQ2NDsKKyAJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNjU7CistCQkJZ290byB5eTE0NjM7CisrCQkJZ290byB5eTE0NjU7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnaCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDYxOworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NjM7CisgCQkJZ290byB5eTE2NTsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ24nKSB7CistCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0NjI7CisrCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0NjQ7CisgCQkJCWdvdG8geXkxNjU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ2MzsKKysJCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ2NTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CitAQCAtMTE0NiwxNSArMTE1MSwxNSBAQCB5eTk6CisgCXN3aXRjaCAoeXljaCkgeworIAljYXNlICcpJzoJZ290byB5eTE2NDsKKyAJY2FzZSAnMCc6CistCWNhc2UgJzEnOglnb3RvIHl5MTM5MTsKKy0JY2FzZSAnMic6CWdvdG8geXkxMzkyOworKwljYXNlICcxJzoJZ290byB5eTEzOTM7CisrCWNhc2UgJzInOglnb3RvIHl5MTM5NDsKKyAJY2FzZSAnMyc6CisgCWNhc2UgJzQnOgorIAljYXNlICc1JzoKKyAJY2FzZSAnNic6CisgCWNhc2UgJzcnOgorIAljYXNlICc4JzoKKy0JY2FzZSAnOSc6CWdvdG8geXkxMzkzOworKwljYXNlICc5JzoJZ290byB5eTEzOTU7CisgCWNhc2UgJ0EnOgorIAljYXNlICdCJzoKKyAJY2FzZSAnQyc6CitAQCAtMTE3NiwxMSArMTE4MSwxMSBAQCB5eTk6CisgCWNhc2UgJ1gnOgorIAljYXNlICdZJzoKKyAJY2FzZSAnWic6CWdvdG8geXkxNjU7CistCWNhc2UgJ0UnOglnb3RvIHl5MTM4NjsKKy0JY2FzZSAnSCc6CWdvdG8geXkxMzg3OworLQljYXNlICdPJzoJZ290byB5eTEzODg7CistCWNhc2UgJ1UnOglnb3RvIHl5MTM4OTsKKy0JY2FzZSAnVyc6CWdvdG8geXkxMzkwOworKwljYXNlICdFJzoJZ290byB5eTEzODg7CisrCWNhc2UgJ0gnOglnb3RvIHl5MTM4OTsKKysJY2FzZSAnTyc6CWdvdG8geXkxMzkwOworKwljYXNlICdVJzoJZ290byB5eTEzOTE7CisrCWNhc2UgJ1cnOglnb3RvIHl5MTM5MjsKKyAJY2FzZSAnYSc6CisgCWNhc2UgJ2InOgorIAljYXNlICdjJzoKK0BAIC0xMjAyLDExICsxMjA3LDExIEBAIHl5OToKKyAJY2FzZSAneCc6CisgCWNhc2UgJ3knOgorIAljYXNlICd6JzoJZ290byB5eTE3MDsKKy0JY2FzZSAnZSc6CWdvdG8geXkxNDI5OworLQljYXNlICdoJzoJZ290byB5eTE0MzA7CistCWNhc2UgJ28nOglnb3RvIHl5MTQzMTsKKy0JY2FzZSAndSc6CWdvdG8geXkxNDMyOworLQljYXNlICd3JzoJZ290byB5eTE0MzM7CisrCWNhc2UgJ2UnOglnb3RvIHl5MTQzMTsKKysJY2FzZSAnaCc6CWdvdG8geXkxNDMyOworKwljYXNlICdvJzoJZ290byB5eTE0MzM7CisrCWNhc2UgJ3UnOglnb3RvIHl5MTQzNDsKKysJY2FzZSAndyc6CWdvdG8geXkxNDM1OworIAlkZWZhdWx0Oglnb3RvIHl5MzsKKyAJfQorIHl5MTA6CitAQCAtMTIxNSwxNSArMTIyMCwxNSBAQCB5eTEwOgorIAlzd2l0Y2ggKHl5Y2gpIHsKKyAJY2FzZSAnKSc6CWdvdG8geXkxNjQ7CisgCWNhc2UgJzAnOgorLQljYXNlICcxJzoJZ290byB5eTEzOTE7CistCWNhc2UgJzInOglnb3RvIHl5MTM5MjsKKysJY2FzZSAnMSc6CWdvdG8geXkxMzkzOworKwljYXNlICcyJzoJZ290byB5eTEzOTQ7CisgCWNhc2UgJzMnOgorIAljYXNlICc0JzoKKyAJY2FzZSAnNSc6CisgCWNhc2UgJzYnOgorIAljYXNlICc3JzoKKyAJY2FzZSAnOCc6CistCWNhc2UgJzknOglnb3RvIHl5MTM5MzsKKysJY2FzZSAnOSc6CWdvdG8geXkxMzk1OworIAljYXNlICdBJzoKKyAJY2FzZSAnQic6CisgCWNhc2UgJ0MnOgorQEAgLTEyNjcsMjggKzEyNzIsMzAgQEAgeXkxMDoKKyAJY2FzZSAneSc6CisgCWNhc2UgJ3onOglnb3RvIHl5MTY1OworIAljYXNlICdFJzoKKy0JY2FzZSAnZSc6CWdvdG8geXkxMzg2OworKwljYXNlICdlJzoJZ290byB5eTEzODg7CisgCWNhc2UgJ0gnOgorLQljYXNlICdoJzoJZ290byB5eTEzODc7CisrCWNhc2UgJ2gnOglnb3RvIHl5MTM4OTsKKyAJY2FzZSAnTyc6CistCWNhc2UgJ28nOglnb3RvIHl5MTM4ODsKKysJY2FzZSAnbyc6CWdvdG8geXkxMzkwOworIAljYXNlICdVJzoKKy0JY2FzZSAndSc6CWdvdG8geXkxMzg5OworKwljYXNlICd1JzoJZ290byB5eTEzOTE7CisgCWNhc2UgJ1cnOgorLQljYXNlICd3JzoJZ290byB5eTEzOTA7CisrCWNhc2UgJ3cnOglnb3RvIHl5MTM5MjsKKyAJZGVmYXVsdDoJZ290byB5eTM7CisgCX0KKyB5eTExOgorIAl5eWFjY2VwdCA9IDE7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CistCWlmICh5eWNoID09ICctJykgZ290byB5eTEzNzQ7CisrCWlmICh5eWNoID09ICctJykgZ290byB5eTEzNzY7CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyOworLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc1OworKwlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc3OworIHl5MTI6CisrI2xpbmUgMTc2OCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWFkZF9lcnJvcihzLCAiVW5leHBlY3RlZCBjaGFyYWN0ZXIiKTsKKyAJCWdvdG8gc3RkOworIAl9CisrI2xpbmUgMTI5OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTEzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdSJykgeworQEAgLTEyOTksMTYgKzEzMDYsMTYgQEAgeXkxMzoKKyAJCQl9IGVsc2UgeworIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7CistCQkJCWdvdG8geXkxMzEwOworKwkJCQlnb3RvIHl5MTMxMTsKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdOJykgeworLQkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzExOworKwkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzEyOworIAkJCQlnb3RvIHl5MTY1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTI7CisrCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTM7CisgCQkJCWlmICh5eWNoIDw9ICdRJykgZ290byB5eTE2NTsKKy0JCQkJZ290byB5eTEzMTM7CisrCQkJCWdvdG8geXkxMzE0OworIAkJCX0KKyAJCX0KKyAJfSBlbHNlIHsKK0BAIC0xMzE4LDE2ICsxMzI1LDE2IEBAIHl5MTM6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzA7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTM1MTsKKysJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTM1MzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ2gnKSBnb3RvIHl5MTcwOworLQkJCQlnb3RvIHl5MTM1MjsKKysJCQkJZ290byB5eTEzNTQ7CisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAncScpIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTM1MzsKKysJCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTM1NTsKKyAJCQkJZ290byB5eTE3MDsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzU0OworKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzU2OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzA7CisgCQkJCWdvdG8geXkzOworIAkJCX0KK0BAIC0xMzQzLDE2ICsxMzUwLDE2IEBAIHl5MTQ6CisgCQkJfSBlbHNlIHsKKyAJCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY1OworLQkJCQlnb3RvIHl5MTMxMDsKKysJCQkJZ290byB5eTEzMTE7CisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnTicpIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxMTsKKysJCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxMjsKKyAJCQkJZ290byB5eTE2NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxMzEyOworKwkJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxMzEzOworIAkJCQlpZiAoeXljaCA8PSAnUScpIGdvdG8geXkxNjU7CistCQkJCWdvdG8geXkxMzEzOworKwkJCQlnb3RvIHl5MTMxNDsKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CitAQCAtMTM2MiwxNiArMTM2OSwxNiBAQCB5eTE0OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTY1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTEzMTA7CisrCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTEzMTE7CisgCQkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NTsKKy0JCQkJZ290byB5eTEzMTE7CisrCQkJCWdvdG8geXkxMzEyOworIAkJCX0KKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ3EnKSB7CistCQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTEzMTI7CisrCQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTEzMTM7CisgCQkJCWdvdG8geXkxNjU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMxMzsKKysJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMxNDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CitAQCAtMTM4MiwxMyArMTM4OSwxMyBAQCB5eTE1OgorIAlpZiAoeXljaCA8PSAnQScpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CistCQlnb3RvIHl5MTI5NjsKKysJCWdvdG8geXkxMjk3OworIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzA3OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMDg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOworIAkJCWdvdG8geXkzOworIAkJfQorQEAgLTEzOTgsMTMgKzE0MDUsMTMgQEAgeXkxNjoKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworLQkJZ290byB5eTEyOTY7CisrCQlnb3RvIHl5MTI5NzsKKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI5NjsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjk3OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KK0BAIC0xNDIwLDcgKzE0MjcsNyBAQCB5eTE3OgorIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI5MzsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjk0OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MDsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KK0BAIC0yNDk1LDE4ICsyNTAyLDIyIEBAIHl5NDg6CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTQ5OworIAlpZiAoeXljaCA8PSAnOScpIGdvdG8geXk1NDsKKyB5eTQ5OgorKyNsaW5lIDE3NTcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlnb3RvIHN0ZDsKKyAJfQorKyNsaW5lIDI1MTAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk1MDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlnb3RvIHl5NDk7CisgeXk1MToKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxNzYyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJcy0+cG9zID0gY3Vyc29yOyBzLT5saW5lKys7CisgCQlnb3RvIHN0ZDsKKyAJfQorKyNsaW5lIDI1MjEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk1MzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlnb3RvIHl5MTI7CitAQCAtMjY5MywyMyArMjcwNCwyMyBAQCB5eTU2OgorIAkJCQkJfQorIAkJCQl9IGVsc2UgeworIAkJCQkJaWYgKHl5YWNjZXB0ID09IDI4KSB7CistCQkJCQkJZ290byB5eTEzNzc7CisrCQkJCQkJZ290byB5eTEzNzk7CisgCQkJCQl9IGVsc2UgeworLQkJCQkJCWdvdG8geXkxNDE1OworKwkJCQkJCWdvdG8geXkxNDE3OworIAkJCQkJfQorIAkJCQl9CisgCQkJfSBlbHNlIHsKKyAJCQkJaWYgKHl5YWNjZXB0IDw9IDMxKSB7CisgCQkJCQlpZiAoeXlhY2NlcHQgPT0gMzApIHsKKy0JCQkJCQlnb3RvIHl5MTQxODsKKysJCQkJCQlnb3RvIHl5MTQyMDsKKyAJCQkJCX0gZWxzZSB7CistCQkJCQkJZ290byB5eTE0OTg7CisrCQkJCQkJZ290byB5eTE1MDA7CisgCQkJCQl9CisgCQkJCX0gZWxzZSB7CisgCQkJCQlpZiAoeXlhY2NlcHQgPT0gMzIpIHsKKy0JCQkJCQlnb3RvIHl5MTUwNjsKKysJCQkJCQlnb3RvIHl5MTUwODsKKyAJCQkJCX0gZWxzZSB7CistCQkJCQkJZ290byB5eTE1Mjk7CisrCQkJCQkJZ290byB5eTE1MzE7CisgCQkJCQl9CisgCQkJCX0KKyAJCQl9CitAQCAtMjkyMCw2ICsyOTMxLDcgQEAgeXk3MzoKKyAJaWYgKHl5Y2ggPT0gJ1MnKSBnb3RvIHl5NzU7CisgCWlmICh5eWNoID09ICdzJykgZ290byB5eTc1OworIHl5NzQ6CisrI2xpbmUgMTc0MSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCXRpbWVsaWJfdWxsIGk7CisgCQlERUJVR19PVVRQVVQoInJlbGF0aXZlIik7CitAQCAtMjkzNCw2ICsyOTQ2LDcgQEAgeXk3NDoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKysjbGluZSAyOTUwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NzU6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5NzY7CitAQCAtMzcxOSw2ICszNzMyLDcgQEAgeXkxOTA6CisgCQl9CisgCX0KKyB5eTE5MToKKysjbGluZSAxNjA0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJY29uc3QgdGltZWxpYl9yZWx1bml0KiByZWx1bml0OworIAkJREVCVUdfT1VUUFVUKCJkYXl0ZXh0Iik7CitAQCAtMzczNSw2ICszNzQ5LDcgQEAgeXkxOTE6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1dFRUtEQVk7CisgCX0KKysjbGluZSAzNzUzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MTkyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdLJykgeworQEAgLTQyMjcsNiArNDI0Miw3IEBAIHl5MjE3OgorIAkJfQorIAl9CisgeXkyMTg6CisrI2xpbmUgMTY2MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgibW9udGh0ZXh0Iik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtNDIzNSw2ICs0MjUxLDcgQEAgeXkyMTg6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0RBVEVfVEVYVDsKKyAJfQorKyNsaW5lIDQyNTUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkyMTk6CisgCSsrWVlDVVJTT1I7CisgCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDIzKSBZWUZJTEwoMjMpOworQEAgLTQ0NjksNiArNDQ4Niw3IEBAIHl5MjMxOgorIAlpZiAoeXljaCA9PSAndCcpIGdvdG8geXkzMTk7CisgCWdvdG8geXkyMzc7CisgeXkyMzI6CisrI2xpbmUgMTQwOSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCBsZW5ndGggPSAwOworIAkJREVCVUdfT1VUUFVUKCJkYXRldGV4dHVhbCB8IGRhdGVub3llYXIiKTsKK0BAIC00NDgxLDYgKzQ0OTksNyBAQCB5eTIzMjoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfREFURV9URVhUOworIAl9CisrI2xpbmUgNDUwMyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTIzMzoKKyAJeXlhY2NlcHQgPSA2OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTQ1OTMsNiArNDYxMiw3IEBAIHl5MjQ1OgorIAkJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5MjQ4OworIAl9CisgeXkyNDY6CisrI2xpbmUgMTcxMSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCB0el9ub3RfZm91bmQ7CisgCQlERUJVR19PVVRQVVQoImRhdGVzaG9ydHdpdGh0aW1lc2hvcnQgfCBkYXRlc2hvcnR3aXRodGltZWxvbmcgfCBkYXRlc2hvcnR3aXRodGltZWxvbmd0eiIpOworQEAgLTQ2MjEsNiArNDY0MSw3IEBAIHl5MjQ2OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9TSE9SVERBVEVfV0lUSF9USU1FOworIAl9CisrI2xpbmUgNDY0NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTI0NzoKKyAJeXlhY2NlcHQgPSA3OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTQ4OTMsNiArNDkxNCw3IEBAIHl5MjY5OgorIAl9CisgeXkyNzA6CisgCSsrWVlDVVJTT1I7CisrI2xpbmUgMTY4NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgiZGF0ZXNob3J0d2l0aHRpbWVzaG9ydDEyIHwgZGF0ZXNob3J0d2l0aHRpbWVsb25nMTIiKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC00OTE1LDYgKzQ5MzcsNyBAQCB5eTI3MDoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfU0hPUlREQVRFX1dJVEhfVElNRTsKKyAJfQorKyNsaW5lIDQ5NDEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkyNzI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gMHgxRikgeworQEAgLTU0NzAsNiArNTQ5Myw3IEBAIHl5MzIwOgorIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKKyAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7CisgCSsrWVlDVVJTT1I7CisrI2xpbmUgMTM4MSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCBsZW5ndGggPSAwOworIAkJREVCVUdfT1VUUFVUKCJkYXRlbm9kYXkiKTsKK0BAIC01NDgyLDYgKzU1MDYsNyBAQCB5eTMyMDoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfREFURV9OT19EQVk7CisgCX0KKysjbGluZSA1NTEwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MzIzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICc5JykgeworQEAgLTU3MDQsNiArNTcyOSw3IEBAIHl5MzI3OgorIAlpZiAoKHl5Y2ggPSAqWVlDVVJTT1IpIDw9ICcvJykgZ290byB5eTMzMDsKKyAJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MzMxOworIHl5MzMwOgorKyNsaW5lIDE1MjUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgbGVuZ3RoID0gMDsKKyAJCURFQlVHX09VVFBVVCgicGd0ZXh0c2hvcnQiKTsKK0BAIC01NzE2LDYgKzU3NDIsNyBAQCB5eTMzMDoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUEdfVEVYVDsKKyAJfQorKyNsaW5lIDU3NDYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkzMzE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MzMwOworQEAgLTYyNzAsNiArNjI5Nyw3IEBAIHl5MzU2OgorIAkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAl9CisgeXkzNTc6CisrI2xpbmUgMTU4MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgiYWdvIik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtNjI4OSw2ICs2MzE3LDcgQEAgeXkzNTc6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0FHTzsKKyAJfQorKyNsaW5lIDYzMjEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkzNTg6CisgCXl5YWNjZXB0ID0gNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC04MDA5LDYgKzgwMzgsNyBAQCB5eTQxNzoKKyB5eTQxODoKKyAJKytZWUNVUlNPUjsKKyB5eTQxOToKKysjbGluZSAxMjg2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJpc284NjAxZGF0ZTQgfCBpc284NjAxZGF0ZTIgfCBpc284NjAxZGF0ZXNsYXNoIHwgZGF0ZXNsYXNoIik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtODAxOSw2ICs4MDQ5LDcgQEAgeXk0MTk6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0lTT19EQVRFOworIAl9CisrI2xpbmUgODA1MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTQyMDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTg2NDEsNiArODY3Miw3IEBAIHl5NDM5OgorIAkJfQorIAl9CisgeXk0NDA6CisrI2xpbmUgMTQyMyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgiZGF0ZW5veWVhcnJldiIpOworIAkJVElNRUxJQl9JTklUOworQEAgLTg2NTEsNiArODY4Myw3IEBAIHl5NDQwOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9EQVRFX1RFWFQ7CisgCX0KKysjbGluZSA4Njg3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NDQxOgorIAl5eWFjY2VwdCA9IDk7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtODc3OCw2ICs4ODExLDcgQEAgeXk0NTA6CisgCX0KKyB5eTQ1MjoKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxMTQxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJ0aW1ldGlueTEyIHwgdGltZXNob3J0MTIgfCB0aW1lbG9uZzEyIik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtODc5Myw2ICs4ODI3LDcgQEAgeXk0NTI6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1RJTUUxMjsKKyAJfQorKyNsaW5lIDg4MzEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk0NTQ6CisgCXl5YWNjZXB0ID0gMTA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtODgwMyw2ICs4ODM4LDcgQEAgeXk0NTQ6CisgCQlpZiAoeXljaCA8PSAnOicpIGdvdG8geXk0NTc7CisgCX0KKyB5eTQ1NToKKysjbGluZSAxMTc4ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IHR6X25vdF9mb3VuZDsKKyAJCURFQlVHX09VVFBVVCgidGltZXNob3J0MjQgfCB0aW1lbG9uZzI0IHwgaXNvODYwMWxvbmciKTsKK0BAIC04ODI3LDYgKzg4NjMsNyBAQCB5eTQ1NToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfVElNRTI0X1dJVEhfWk9ORTsKKyAJfQorKyNsaW5lIDg4NjcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk0NTY6CisgCXl5YWNjZXB0ID0gMTA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtOTEwMyw2ICs5MTQwLDcgQEAgeXk0ODU6CisgCX0KKyB5eTQ4NzoKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxMTU4ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJtc3NxbHRpbWUiKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC05MTIxLDYgKzkxNTksNyBAQCB5eTQ4NzoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfVElNRTI0X1dJVEhfWk9ORTsKKyAJfQorKyNsaW5lIDkxNjMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk0ODk6CisgCXl5YWNjZXB0ID0gMTA7CisgCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKK0BAIC05MjE1LDYgKzkyNTQsNyBAQCB5eTQ5ODoKKyAJaWYgKCh5eWNoID0gKllZQ1VSU09SKSA8PSAnLycpIGdvdG8geXk0OTk7CisgCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTUwNTsKKyB5eTQ5OToKKysjbGluZSAxMzQwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoImRhdGVmdWxsIik7CitAQCAtOTIyOCw2ICs5MjY4LDcgQEAgeXk0OTk6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0RBVEVfRlVMTDsKKyAJfQorKyNsaW5lIDkyNzIgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk1MDA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ00nKSBnb3RvIHl5NTAxOworQEAgLTk4OTEsNiArOTkzMiw3IEBAIHl5NTY5OgorIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKKyAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7CisgCSsrWVlDVVJTT1I7CisrI2xpbmUgMTM1NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgicG9pbnRlZCBkYXRlIFlZWVkiKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC05OTAxLDYgKzk5NDMsNyBAQCB5eTU2OToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfREFURV9GVUxMX1BPSU5URUQ7CisgCX0KKysjbGluZSA5OTQ3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NTcyOgorIAl5eWFjY2VwdCA9IDEwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTk5MzEsNiArOTk3NCw3IEBAIHl5NTc1OgorIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NzY7CisgCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTU2OTsKKyB5eTU3NjoKKysjbGluZSAxMzY3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoInBvaW50ZWQgZGF0ZSBZWSIpOworQEAgLTk5NDMsNiArOTk4Nyw3IEBAIHl5NTc2OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9EQVRFX0ZVTExfUE9JTlRFRDsKKyAJfQorKyNsaW5lIDk5OTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk1Nzc6CisgCXl5YWNjZXB0ID0gMTA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CitAQCAtMTA1MzgsNiArMTA1ODMsNyBAQCB5eTYyMDoKKyAJCX0KKyAJfQorIHl5NjIxOgorKyNsaW5lIDEzMjYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgbGVuZ3RoID0gMDsKKyAJCURFQlVHX09VVFBVVCgiZ251ZGF0ZXNob3J0Iik7CitAQCAtMTA1NTAsNiArMTA1OTYsNyBAQCB5eTYyMToKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfSVNPX0RBVEU7CisgCX0KKysjbGluZSAxMDYwMCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTYyMjoKKyAJeXlhY2NlcHQgPSAxMjsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC0xMDY0NSw2ICsxMDY5Miw3IEBAIHl5NjMwOgorIAkJfQorIAl9CisgeXk2MzE6CisrI2xpbmUgMTI3MCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCBsZW5ndGggPSAwOworIAkJREVCVUdfT1VUUFVUKCJhbWVyaWNhbnNob3J0IHwgYW1lcmljYW4iKTsKK0BAIC0xMDY1OSw2ICsxMDcwNyw3IEBAIHl5NjMxOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9BTUVSSUNBTjsKKyAJfQorKyNsaW5lIDEwNzExICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NjMyOgorIAl5eWFjY2VwdCA9IDEzOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTEwODU3LDYgKzEwOTA2LDcgQEAgeXk2NjQ6CisgCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTY2NzsKKyAJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5NjY4OworIHl5NjY1OgorKyNsaW5lIDE1NTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgdHpfbm90X2ZvdW5kOworIAkJREVCVUdfT1VUUFVUKCJjbGYiKTsKK0BAIC0xMDg3Niw2ICsxMDkyNiw3IEBAIHl5NjY1OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9DTEY7CisgCX0KKysjbGluZSAxMDkzMCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTY2NjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnNScpIHsKK0BAIC0xMTM2Miw2ICsxMTQxMyw3IEBAIHl5NzI3OgorIAkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5NjI3OworIAl9CisgeXk3Mjg6CisrI2xpbmUgMTI5OCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCWludCBsZW5ndGggPSAwOworIAkJREVCVUdfT1VUUFVUKCJpc284NjAxZGF0ZTIiKTsKK0BAIC0xMTM3NCw2ICsxMTQyNiw3IEBAIHl5NzI4OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9JU09fREFURTsKKyAJfQorKyNsaW5lIDExNDMwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NzI5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoID09ICdDJykgZ290byB5eTczMDsKK0BAIC0xMTQwNCw2ICsxMTQ1Nyw3IEBAIHl5NzM0OgorIAlpZiAoeXljaCA+PSAnMicpIGdvdG8geXk1NjsKKyB5eTczNToKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxNTM5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoInBndGV4dHJldmVyc2UiKTsKK0BAIC0xMTQxNiw2ICsxMTQ3MCw3IEBAIHl5NzM1OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9QR19URVhUOworIAl9CisrI2xpbmUgMTE0NzQgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk3Mzc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ1YnKSBnb3RvIHl5NzMwOworQEAgLTExNTY4LDYgKzExNjIzLDcgQEAgeXk3NDc6CisgCQl9CisgCX0KKyB5eTc0ODoKKysjbGluZSAxNTc0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJ5ZWFyNCIpOworIAkJVElNRUxJQl9JTklUOworQEAgLTExNTc1LDYgKzExNjMxLDcgQEAgeXk3NDg6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0NMRjsKKyAJfQorKyNsaW5lIDExNjM1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NzQ5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCXN3aXRjaCAoeXljaCkgeworQEAgLTExNzY5LDYgKzExODI2LDcgQEAgeXk3NTc6CisgCQlpZiAoeXljaCA8PSAnWCcpIGdvdG8geXk4NDg7CisgCX0KKyB5eTc1ODoKKysjbGluZSAxMzk1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoImRhdGVub2RheXJldiIpOworQEAgLTExNzgxLDYgKzExODM5LDcgQEAgeXk3NTg6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0RBVEVfTk9fREFZOworIAl9CisrI2xpbmUgMTE4NDMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk3NTk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5ODkyOworQEAgLTExOTgwLDYgKzEyMDM5LDcgQEAgeXk3Nzg6CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTc3OTsKKyAJaWYgKHl5Y2ggPD0gJzcnKSBnb3RvIHl5NzgxOworIHl5Nzc5OgorKyNsaW5lIDE1MDYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQl0aW1lbGliX3NsbCB3LCBkOworIAkJREVCVUdfT1VUUFVUKCJpc293ZWVrIik7CitAQCAtMTE5OTcsMTIgKzEyMDU3LDE0IEBAIHl5Nzc5OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9JU09fV0VFSzsKKyAJfQorKyNsaW5lIDEyMDYxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5NzgwOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OworIAlpZiAoeXljaCA+PSAnOCcpIGdvdG8geXk1NjsKKyB5eTc4MToKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxNDg3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJdGltZWxpYl9zbGwgdywgZDsKKyAJCURFQlVHX09VVFBVVCgiaXNvd2Vla2RheSIpOworQEAgLTEyMDIwLDYgKzEyMDgyLDcgQEAgeXk3ODE6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0lTT19XRUVLOworIAl9CisrI2xpbmUgMTIwODYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXk3ODM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NjA7CitAQCAtMTIwODUsNiArMTIxNDgsNyBAQCB5eTc4NToKKyAJCX0KKyAJfQorIHl5Nzg2OgorKyNsaW5lIDE0NzMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgbGVuZ3RoID0gMDsKKyAJCURFQlVHX09VVFBVVCgicGd5ZG90ZCIpOworQEAgLTEyMDk3LDYgKzEyMTYxLDcgQEAgeXk3ODY6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1BHX1lFQVJEQVk7CisgCX0KKysjbGluZSAxMjE2NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTc4NzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk2MDsKK0BAIC0xMjE3OCw2ICsxMjI0Myw3IEBAIHl5ODA1OgorIHl5ODA2OgorIAkrK1lZQ1VSU09SOworIHl5ODA3OgorKyNsaW5lIDE0NDcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgdHpfbm90X2ZvdW5kOworIAkJREVCVUdfT1VUUFVUKCJ4bWxycGMgfCB4bWxycGNub2NvbG9uIHwgc29hcCB8IHdkZHggfCBleGlmIik7CitAQCAtMTIyMDIsNiArMTIyNjgsNyBAQCB5eTgwNzoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfWE1MUlBDX1NPQVA7CisgCX0KKysjbGluZSAxMjI3MiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTgwODoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnMicpIHsKK0BAIC0xMjQ5MCw2ICsxMjU1Nyw3IEBAIHl5ODEyOgorIAkJfQorIAl9CisgeXk4MTM6CisrI2xpbmUgMTQzNSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgiZGF0ZW5vY29sb24iKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC0xMjUwMCw2ICsxMjU2OCw3IEBAIHl5ODEzOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9EQVRFX05PQ09MT047CisgCX0KKysjbGluZSAxMjU3MiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTgxNDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnSCcpIHsKK0BAIC0xMzI5Myw2ICsxMzM2Miw3IEBAIHl5OTM3OgorIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk5Mzg7CisgCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTk2MDsKKyB5eTkzODoKKysjbGluZSAxMzEyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJaW50IGxlbmd0aCA9IDA7CisgCQlERUJVR19PVVRQVVQoImdudWRhdGVzaG9ydGVyIik7CitAQCAtMTMzMDUsNiArMTMzNzUsNyBAQCB5eTkzODoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfSVNPX0RBVEU7CisgCX0KKysjbGluZSAxMzM3OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTkzOToKKyAJeXlhY2NlcHQgPSAyMTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC0xNDMwMyw2ICsxNDM3NCw3IEBAIHl5MTAzMDoKKyAJCX0KKyAJfQorIHl5MTAzMjoKKysjbGluZSAxMjA0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJnbnVub2NvbG9uIik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtMTQzMjQsNiArMTQzOTYsNyBAQCB5eTEwMzI6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0dOVV9OT0NPTE9OOworIAl9CisrI2xpbmUgMTQ0MDAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisgeXkxMDMzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTYwOworQEAgLTE0NDEzLDYgKzE0NDg2LDcgQEAgeXkxMDM5OgorIAkJfQorIAl9CisgeXkxMDQwOgorKyNsaW5lIDEyNTAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlpbnQgdHpfbm90X2ZvdW5kOworIAkJREVCVUdfT1VUUFVUKCJpc284NjAxbm9jb2xvbiIpOworQEAgLTE0NDMxLDYgKzE0NTA1LDcgQEAgeXkxMDQwOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9JU09fTk9DT0xPTjsKKyAJfQorKyNsaW5lIDE0NTA5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MTA0MToKKyAJeXlhY2NlcHQgPSAyNDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC0xNTM2Miw2ICsxNTQzNyw3IEBAIHl5MTA4MzoKKyAJCX0KKyAJfQorIHl5MTA4NDoKKysjbGluZSAxNjQ2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJdGltZWxpYl9zbGwgaTsKKyAJCWludCAgICAgICAgIGJlaGF2aW9yID0gMDsKK0BAIC0xNTM3Nyw2ICsxNTQ1Myw3IEBAIHl5MTA4NDoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKysjbGluZSAxNTQ1NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTEwODU6CisgCSsrWVlDVVJTT1I7CisgCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDIpIFlZRklMTCgyKTsKK0BAIC0xNTQxOCw2ICsxNTQ5NSw3IEBAIHl5MTA5MToKKyAJaWYgKHl5Y2ggIT0gJ2YnKSBnb3RvIHl5NTY7CisgeXkxMDkyOgorIAkrK1lZQ1VSU09SOworKyNsaW5lIDExMTkgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQl0aW1lbGliX3NsbCBpOworIAkJaW50ICAgICAgICAgYmVoYXZpb3IgPSAwOworQEAgLTE1NDM4LDYgKzE1NTE2LDcgQEAgeXkxMDkyOgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9XRUVLX0RBWV9PRl9NT05USDsKKyAJfQorKyNsaW5lIDE1NTIwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MTA5NDoKKyAJeXlhY2NlcHQgPSAyNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC0xNTUzMCw2ICsxNTYwOSw3IEBAIHl5MTEwNzoKKyAJCX0KKyAJfQorIHl5MTEwODoKKysjbGluZSAxNjIyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJdGltZWxpYl9zbGwgaTsKKyAJCWludCAgICAgICAgIGJlaGF2aW9yID0gMDsKK0BAIC0xNTU1Miw2ICsxNTYzMiw3IEBAIHl5MTEwODoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKysjbGluZSAxNTYzNiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKKyB5eTExMDk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJZ290byB5eTEwODQ7CitAQCAtMTgyMDYsMTAgKzE4Mjg3LDI1IEBAIHl5MTI4MToKKyB5eTEyODM6CisgCXl5YWNjZXB0ID0gMjc7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CistCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyODc7CistCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEyODY7CistCWdvdG8geXkxMjg3OworKwlpZiAoeXljaCA8PSAnQCcpIHsKKysJCWlmICh5eWNoIDw9IDB4MUYpIHsKKysJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI4NzsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI4NzsKKysJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMjg0OworKwkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEyODY7CisrCQl9CisrCX0gZWxzZSB7CisrCQlpZiAoeXljaCA8PSAnYCcpIHsKKysJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMjg5OworKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEyODk7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODk7CisrCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTI4OTsKKysJCX0KKysJfQorIHl5MTI4NDoKKysjbGluZSAxMDk2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJiYWNrb2YgfCBmcm9udG9mIik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtMTgyMzEsNjYgKzE4MzI3LDEwNCBAQCB5eTEyODQ6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX0xGX0RBWV9PRl9NT05USDsKKyAJfQorKyNsaW5lIDE4MzMxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorIHl5MTI4NToKKyAJeXlhY2NlcHQgPSAyNzsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKy0JaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI4NzsKKy0JaWYgKHl5Y2ggPj0gJzUnKSBnb3RvIHl5MTI4NzsKKysJaWYgKHl5Y2ggPD0gJ0AnKSB7CisrCQlpZiAoeXljaCA8PSAweDFGKSB7CisrCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODc7CisrCQkJZ290byB5eTEyODQ7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyODc7CisrCQkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI4NDsKKysJCQlpZiAoeXljaCA+PSAnNScpIGdvdG8geXkxMjg0OworKwkJfQorKwl9IGVsc2UgeworKwkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisrCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTI4OTsKKysJCQlpZiAoeXljaCA9PSAnUCcpIGdvdG8geXkxMjg5OworKwkJCWdvdG8geXkxMjg0OworKwkJfSBlbHNlIHsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjg5OworKwkJCWlmICh5eWNoID09ICdwJykgZ290byB5eTEyODk7CisrCQkJZ290byB5eTEyODQ7CisrCQl9CisrCX0KKyB5eTEyODY6CisgCXl5YWNjZXB0ID0gMjc7CistCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKKysJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKysJaWYgKHl5Y2ggPD0gJ0EnKSB7CisrCQlpZiAoeXljaCA8PSAweDFGKSB7CisrCQkJaWYgKHl5Y2ggIT0gJ1x0JykgZ290byB5eTEyODQ7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyODc7CisrCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTI4NDsKKysJCQlnb3RvIHl5MTI4OTsKKysJCX0KKysJfSBlbHNlIHsKKysJCWlmICh5eWNoIDw9ICdgJykgeworKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEyODk7CisrCQkJZ290byB5eTEyODQ7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODk7CisrCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTI4OTsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0KKysJfQorK3l5MTI4NzoKKysJKytZWUNVUlNPUjsKKyAJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgNSkgWVlGSUxMKDUpOworIAl5eWNoID0gKllZQ1VSU09SOworLXl5MTI4NzoKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQlpZiAoeXljaCA8PSAweDFGKSB7CistCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODY7CistCQkJZ290byB5eTEyODQ7CisrCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODc7CisrCQkJZ290byB5eTU2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjg2OworLQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTEyODQ7CisrCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI4NzsKKysJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXk1NjsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworLQkJCWlmICh5eWNoICE9ICdQJykgZ290byB5eTEyODQ7CisrCQkJaWYgKHl5Y2ggIT0gJ1AnKSBnb3RvIHl5NTY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODg7CistCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5MTI4NDsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjg5OworKwkJCWlmICh5eWNoICE9ICdwJykgZ290byB5eTU2OworIAkJfQorIAl9CisteXkxMjg4OgorK3l5MTI4OToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTCcpIHsKKyAJCWlmICh5eWNoICE9ICcuJykgZ290byB5eTU2OworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTI5MDsKKy0JCWlmICh5eWNoID09ICdtJykgZ290byB5eTEyOTA7CisrCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxMjkxOworKwkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTI5MTsKKyAJCWdvdG8geXk1NjsKKyAJfQorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdNJykgZ290byB5eTEyOTA7CisrCWlmICh5eWNoID09ICdNJykgZ290byB5eTEyOTE7CisgCWlmICh5eWNoICE9ICdtJykgZ290byB5eTU2OworLXl5MTI5MDoKKyt5eTEyOTE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gMHgxRikgeworLQkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTI7CistCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI5MjsKKysJCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkzOworKwkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyOTM7CisgCQlnb3RvIHl5NTY7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjkyOworKwkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI5MzsKKyAJCWlmICh5eWNoICE9ICcuJykgZ290byB5eTU2OworIAl9CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1x0JykgeworLQkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTI7CisrCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MzsKKyAJCWlmICh5eWNoIDw9IDB4MDgpIGdvdG8geXk1NjsKKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoICE9ICcgJykgZ290byB5eTU2OworIAl9CisteXkxMjkyOgorK3l5MTI5MzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlnb3RvIHl5MTI4NDsKKy15eTEyOTM6CisreXkxMjk0OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdCJykgeworQEAgLTE4MzE0LDEzICsxODQ0OCwxMyBAQCB5eTEyOTM6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2MnKSBnb3RvIHl5MTI5NDsKKysJCQkJaWYgKHl5Y2ggPD0gJ2MnKSBnb3RvIHl5MTI5NTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEyOTQ6CisreXkxMjk1OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdKJykgeworQEAgLTE4MzQ0LDEzICsxODQ3OCwxMyBAQCB5eTEyOTQ6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2snKSBnb3RvIHl5MTI5NTsKKysJCQkJaWYgKHl5Y2ggPD0gJ2snKSBnb3RvIHl5MTI5NjsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEyOTU6CisreXkxMjk2OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcuJykgeworQEAgLTE4Mzc1LDcgKzE4NTA5LDcgQEAgeXkxMjk1OgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMjk2OgorK3l5MTI5NzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnUycpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTE4MzkxLDEyICsxODUyNSwxMiBAQCB5eTEyOTY6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMjk3OworKwkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEyOTg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMjk3OgorK3l5MTI5ODoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnVCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTE4NDEyLDEyICsxODU0NiwxMiBAQCB5eTEyOTc6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY3OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMjk4OworKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEyOTk7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMjk4OgorK3l5MTI5OToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnKCcpIHsKK0BAIC0xODQzOCwxOSArMTg1NzIsMTkgQEAgeXkxMjk4OgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMjk5OgorK3l5MTMwMDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnRCcpIGdvdG8geXkxMzAwOworKwlpZiAoeXljaCA9PSAnRCcpIGdvdG8geXkxMzAxOworIAlpZiAoeXljaCAhPSAnZCcpIGdvdG8geXkxMDcwOworLXl5MTMwMDoKKyt5eTEzMDE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ0EnKSBnb3RvIHl5MTMwMTsKKysJaWYgKHl5Y2ggPT0gJ0EnKSBnb3RvIHl5MTMwMjsKKyAJaWYgKHl5Y2ggIT0gJ2EnKSBnb3RvIHl5NTY7CisteXkxMzAxOgorK3l5MTMwMjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxMzAyOworKwlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxMzAzOworIAlpZiAoeXljaCAhPSAneScpIGdvdG8geXk1NjsKKy15eTEzMDI6CisreXkxMzAzOgorIAl5eWFjY2VwdCA9IDI1OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUicpIHsKK0BAIC0xODQ2MSwxNCArMTg1OTUsMTUgQEAgeXkxMzAyOgorIAkJZ290byB5eTEwODQ7CisgCX0KKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnTycpIGdvdG8geXkxMzA0OworKwlpZiAoeXljaCA9PSAnTycpIGdvdG8geXkxMzA1OworIAlpZiAoeXljaCAhPSAnbycpIGdvdG8geXk1NjsKKy15eTEzMDQ6CisreXkxMzA1OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMDU7CisrCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMDY7CisgCWlmICh5eWNoICE9ICdmJykgZ290byB5eTU2OworLXl5MTMwNToKKyt5eTEzMDY6CisgCSsrWVlDVVJTT1I7CisrI2xpbmUgMTA3OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgiZmlyc3RkYXlvZiB8IGxhc3RkYXlvZiIpOworIAkJVElNRUxJQl9JTklUOworQEAgLTE4NDg0LDcgKzE4NjE5LDggQEAgeXkxMzA1OgorIAkJVElNRUxJQl9ERUlOSVQ7CisgCQlyZXR1cm4gVElNRUxJQl9MRl9EQVlfT0ZfTU9OVEg7CisgCX0KKy15eTEzMDc6CisrI2xpbmUgMTg2MjMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisreXkxMzA4OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdSJykgeworQEAgLTE4NDk5LDcgKzE4NjM1LDcgQEAgeXkxMzA3OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTI5NzsKKysJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxMjk4OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMTg1MDgsMTMgKzE4NjQ0LDEzIEBAIHl5MTMwNzoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMzA4OworKwkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMzA5OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTMwODoKKyt5eTEzMDk6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CitAQCAtMTg1MjksNyArMTg2NjUsNyBAQCB5eTEzMDg6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMjk4OworKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEyOTk7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xODUzOCwyMCArMTg2NzQsMjAgQEAgeXkxMzA4OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMDk7CisrCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMTA7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzA5OgorK3l5MTMxMDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLScpIHsKKyAJCWlmICh5eWNoIDw9ICcgJykgeworIAkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMDY5OworIAkJCWlmICh5eWNoIDw9IDB4MUYpIGdvdG8geXkzOworLQkJCWdvdG8geXkxMjk5OworKwkJCWdvdG8geXkxMzAwOworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQkJaWYgKHl5Y2ggPD0gJywnKSBnb3RvIHl5MzsKK0BAIC0xODU3Myw3ICsxODcwOSw3IEBAIHl5MTMwOToKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzMTA6CisreXkxMzExOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdCJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg1ODIsNyArMTg3MTgsNyBAQCB5eTEzMTA6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxMzQ2OworKwkJCWdvdG8geXkxMzQ4OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2EnKSB7CitAQCAtMTg1OTAsMzUgKzE4NzI2LDM1IEBAIHl5MTMxMDoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNDY7CisrCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTM0ODsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMTE6CisreXkxMzEyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdSJykgeworIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnRicpIGdvdG8geXkxMzM2OworKwkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzg7CisgCQkJaWYgKHl5Y2ggPD0gJ1EnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxMzM1OworKwkJCWdvdG8geXkxMzM3OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2YnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxMzM2OworKwkJCWdvdG8geXkxMzM4OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxMzM1OworKwkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTEzMzc7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzEyOgorK3l5MTMxMzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnVScpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTE4NjI3LDcgKzE4NzYzLDcgQEAgeXkxMzEyOgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTMzMjsKKysJCQlnb3RvIHl5MTMzNDsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICd0JykgeworQEAgLTE4NjM1LDE5ICsxODc3MSwxOSBAQCB5eTEzMTI6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxMzMyOworKwkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzMzQ7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzEzOgorK3l5MTMxNDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTycpIHsKKyAJCWlmICh5eWNoIDw9ICdAJykgeworIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxNTsKKysJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzE2OworIAkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE2NjsKKyAJCX0KKyAJfSBlbHNlIHsKK0BAIC0xODY1NSwxNCArMTg3OTEsMTQgQEAgeXkxMzEzOgorIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTMxNTsKKysJCQlnb3RvIHl5MTMxNjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTMxNDsKKysJCQlpZiAoeXljaCA9PSAnbycpIGdvdG8geXkxMzE1OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMxNDoKKyt5eTEzMTU6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ04nKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODY3MSw3ICsxODgwNyw3IEBAIHl5MTMxNDoKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxNjc7CistCQkJZ290byB5eTEzMTg7CisrCQkJZ290byB5eTEzMTk7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnbScpIHsKK0BAIC0xODY3OSwxMiArMTg4MTUsMTIgQEAgeXkxMzE0OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTMxODsKKysJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxMzE5OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTMxNToKKyt5eTEzMTY6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0xODcwMCwxMiArMTg4MzYsMTIgQEAgeXkxMzE1OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE5MTsKKyAJCQlnb3RvIHl5MTY3OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxMzE2OworKwkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzMTc7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkxOTE7CisgCQl9CisgCX0KKy15eTEzMTY6CisreXkxMzE3OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdBJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworQEAgLTE4NzE1LDEyICsxODg1MSwxMiBAQCB5eTEzMTY6CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzE3OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMTg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzE3OgorK3l5MTMxODoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnWScpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTE4NzQyLDcgKzE4ODc4LDcgQEAgeXkxMzE3OgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzE4OgorK3l5MTMxOToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnVCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTE4NzU4LDE2ICsxODg5NCwxNiBAQCB5eTEzMTg6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY4OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzE5OworKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMjA7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzE5OgorK3l5MTMyMDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnKScpIHsKKy0JCWlmICh5eWNoID09ICcgJykgZ290byB5eTEzMjA7CisrCQlpZiAoeXljaCA9PSAnICcpIGdvdG8geXkxMzIxOworIAkJaWYgKHl5Y2ggPD0gJygnKSBnb3RvIHl5MzsKKyAJCWdvdG8geXkxNjQ7CisgCX0gZWxzZSB7CitAQCAtMTg3ODAsODggKzE4OTE2LDE0MyBAQCB5eTEzMTk6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMjA6CisreXkxMzIxOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzMjE7CisrCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzMjI7CisgCWlmICh5eWNoICE9ICdvJykgZ290byB5eTU2OworLXl5MTMyMToKKyt5eTEzMjI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMyMjsKKysJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMyMzsKKyAJaWYgKHl5Y2ggIT0gJ2YnKSBnb3RvIHl5NTY7CisteXkxMzIyOgorK3l5MTMyMzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCAhPSAnICcpIGdvdG8geXk1NjsKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKKy0JaWYgKHl5Y2ggPD0gJzEnKSBnb3RvIHl5MTMyNDsKKy0JaWYgKHl5Y2ggPD0gJzInKSBnb3RvIHl5MTMyNTsKKy0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNjsKKysJaWYgKHl5Y2ggPD0gJzEnKSBnb3RvIHl5MTMyNTsKKysJaWYgKHl5Y2ggPD0gJzInKSBnb3RvIHl5MTMyNjsKKysJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNzsKKyAJZ290byB5eTU2OworLXl5MTMyNDoKKy0JeXlhY2NlcHQgPSAyNzsKKy0JeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKy0JaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTMyNzsKKy0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNjsKKy0JZ290byB5eTEzMjc7CisgeXkxMzI1OgorIAl5eWFjY2VwdCA9IDI3OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworLQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMzI3OworLQlpZiAoeXljaCA+PSAnNScpIGdvdG8geXkxMzI3OworKwlpZiAoeXljaCA8PSAnQCcpIHsKKysJCWlmICh5eWNoIDw9IDB4MUYpIHsKKysJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTMyODsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTMyODsKKysJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMjg0OworKwkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzMjc7CisrCQkJZ290byB5eTEyODQ7CisrCQl9CisrCX0gZWxzZSB7CisrCQlpZiAoeXljaCA8PSAnYCcpIHsKKysJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzMwOworKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEzMzA7CisrCQkJZ290byB5eTEyODQ7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMzA7CisrCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTMzMDsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0KKysJfQorIHl5MTMyNjoKKyAJeXlhY2NlcHQgPSAyNzsKKy0JWVlNQVJLRVIgPSArK1lZQ1VSU09SOworLQlpZiAoKFlZTElNSVQgLSBZWUNVUlNPUikgPCA1KSBZWUZJTEwoNSk7CistCXl5Y2ggPSAqWVlDVVJTT1I7CisrCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisrCWlmICh5eWNoIDw9ICdAJykgeworKwkJaWYgKHl5Y2ggPD0gMHgxRikgeworKwkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMzI4OworKwkJCWdvdG8geXkxMjg0OworKwkJfSBlbHNlIHsKKysJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OworKwkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyODQ7CisrCQkJaWYgKHl5Y2ggPj0gJzUnKSBnb3RvIHl5MTI4NDsKKysJCX0KKysJfSBlbHNlIHsKKysJCWlmICh5eWNoIDw9ICdgJykgeworKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzMzA7CisrCQkJaWYgKHl5Y2ggPT0gJ1AnKSBnb3RvIHl5MTMzMDsKKysJCQlnb3RvIHl5MTI4NDsKKysJCX0gZWxzZSB7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTMzMDsKKysJCQlpZiAoeXljaCA9PSAncCcpIGdvdG8geXkxMzMwOworKwkJCWdvdG8geXkxMjg0OworKwkJfQorKwl9CisgeXkxMzI3OgorKwl5eWFjY2VwdCA9IDI3OworKwl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQScpIHsKKyAJCWlmICh5eWNoIDw9IDB4MUYpIHsKKy0JCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTMyNjsKKy0JCQlnb3RvIHl5MTI4NDsKKysJCQlpZiAoeXljaCAhPSAnXHQnKSBnb3RvIHl5MTI4NDsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTMyNjsKKysJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTEyODQ7CisrCQkJZ290byB5eTEzMzA7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKy0JCQlpZiAoeXljaCAhPSAnUCcpIGdvdG8geXkxMjg0OworKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEzMzA7CisrCQkJZ290byB5eTEyODQ7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMjg7CistCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5MTI4NDsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzMwOworKwkJCWlmICh5eWNoID09ICdwJykgZ290byB5eTEzMzA7CisrCQkJZ290byB5eTEyODQ7CisgCQl9CisgCX0KKyB5eTEzMjg6CisrCSsrWVlDVVJTT1I7CisrCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDUpIFlZRklMTCg1KTsKKysJeXljaCA9ICpZWUNVUlNPUjsKKysJaWYgKHl5Y2ggPD0gJ0EnKSB7CisrCQlpZiAoeXljaCA8PSAweDFGKSB7CisrCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEzMjg7CisrCQkJZ290byB5eTU2OworKwkJfSBlbHNlIHsKKysJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OworKwkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTU2OworKwkJfQorKwl9IGVsc2UgeworKwkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisrCQkJaWYgKHl5Y2ggIT0gJ1AnKSBnb3RvIHl5NTY7CisrCQl9IGVsc2UgeworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMzA7CisrCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5NTY7CisrCQl9CisrCX0KKyt5eTEzMzA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0wnKSB7CisgCQlpZiAoeXljaCAhPSAnLicpIGdvdG8geXk1NjsKKyAJfSBlbHNlIHsKKy0JCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTEzMzA7CistCQlpZiAoeXljaCA9PSAnbScpIGdvdG8geXkxMzMwOworKwkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTMzMjsKKysJCWlmICh5eWNoID09ICdtJykgZ290byB5eTEzMzI7CisgCQlnb3RvIHl5NTY7CisgCX0KKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnTScpIGdvdG8geXkxMzMwOworKwlpZiAoeXljaCA9PSAnTScpIGdvdG8geXkxMzMyOworIAlpZiAoeXljaCAhPSAnbScpIGdvdG8geXk1NjsKKy15eTEzMzA6CisreXkxMzMyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9IDB4MUYpIHsKKy0JCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkyOworLQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyOTI7CisrCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MzsKKysJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMjkzOworIAkJZ290byB5eTU2OworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI5MjsKKysJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyOTM7CisgCQlpZiAoeXljaCAhPSAnLicpIGdvdG8geXk1NjsKKyAJfQorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdcdCcpIHsKKy0JCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkyOworKwkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTM7CisgCQlpZiAoeXljaCA8PSAweDA4KSBnb3RvIHl5NTY7CistCQlnb3RvIHl5MTI5MjsKKysJCWdvdG8geXkxMjkzOworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPT0gJyAnKSBnb3RvIHl5MTI5MjsKKysJCWlmICh5eWNoID09ICcgJykgZ290byB5eTEyOTM7CisgCQlnb3RvIHl5NTY7CisgCX0KKy15eTEzMzI6CisreXkxMzM0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdSJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg4NzcsMTIgKzE5MDY4LDEyIEBAIHl5MTMzMjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzMzM7CisrCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMzNTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMzM6CisreXkxMzM1OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdUJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg4OTgsMTIgKzE5MDg5LDEyIEBAIHl5MTMzMzoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzQ7CisrCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzNjsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMzQ6CisreXkxMzM2OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdIJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg5MjUsNyArMTkxMTYsNyBAQCB5eTEzMzQ6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMzU6CisreXkxMzM3OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdTJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg5MzQsNyArMTkxMjUsNyBAQCB5eTEzMzU6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTY3OworLQkJCWdvdG8geXkxMzM4OworKwkJCWdvdG8geXkxMzQwOworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ3InKSB7CitAQCAtMTg5NDIsMTIgKzE5MTMzLDEyIEBAIHl5MTMzNToKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzMzg7CisrCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTM0MDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMzY6CisreXkxMzM4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdUJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg5NjMsMTIgKzE5MTU0LDEyIEBAIHl5MTMzNjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzc7CisrCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzOTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMzc6CisreXkxMzM5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdIJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTg5OTAsNyArMTkxODEsNyBAQCB5eTEzMzc6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMzg6CisreXkxMzQwOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdUJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTkwMDYsMTIgKzE5MTk3LDEyIEBAIHl5MTMzODoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzk7CisrCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM0MTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzMzk6CisreXkxMzQxOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcoJykgeworQEAgLTE5MDMyLDE5ICsxOTIyMywxOSBAQCB5eTEzMzk6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzNDA6CisreXkxMzQyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdEJykgZ290byB5eTEzNDE7CisrCWlmICh5eWNoID09ICdEJykgZ290byB5eTEzNDM7CisgCWlmICh5eWNoICE9ICdkJykgZ290byB5eTExOTc7CisteXkxMzQxOgorK3l5MTM0MzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxMzQyOworKwlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxMzQ0OworIAlpZiAoeXljaCAhPSAnYScpIGdvdG8geXk1NjsKKy15eTEzNDI6CisreXkxMzQ0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdZJykgZ290byB5eTEzNDM7CisrCWlmICh5eWNoID09ICdZJykgZ290byB5eTEzNDU7CisgCWlmICh5eWNoICE9ICd5JykgZ290byB5eTU2OworLXl5MTM0MzoKKyt5eTEzNDU6CisgCXl5YWNjZXB0ID0gMjU7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdSJykgeworQEAgLTE5MDU1LDE0ICsxOTI0NiwxNCBAQCB5eTEzNDM6CisgCQlnb3RvIHl5MTA4NDsKKyAJfQorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzNDU7CisrCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzNDc7CisgCWlmICh5eWNoICE9ICdvJykgZ290byB5eTU2OworLXl5MTM0NToKKyt5eTEzNDc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMwNTsKKy0JaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTMwNTsKKysJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMwNjsKKysJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTMwNjsKKyAJZ290byB5eTU2OworLXl5MTM0NjoKKyt5eTEzNDg6CisgCXl5YWNjZXB0ID0gNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy8nKSB7CitAQCAtMTkwOTcsMTMgKzE5Mjg4LDEzIEBAIHl5MTM0NjoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OworIAkJCQlnb3RvIHl5MTY3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNDc7CisrCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNDk7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQkJZ290byB5eTIxODsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNDc6CisreXkxMzQ5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdVJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTkxMTksMTIgKzE5MzEwLDEyIEBAIHl5MTM0NzoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNDg7CisrCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTM1MDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzNDg6CisreXkxMzUwOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdBJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworQEAgLTE5MTM0LDI3ICsxOTMyNSwyNyBAQCB5eTEzNDg6CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzQ5OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNTE7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzQ5OgorK3l5MTM1MToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUScpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCWdvdG8geXkzOworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM1MDsKKysJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzNTI7CisgCQlpZiAoeXljaCAhPSAncicpIGdvdG8geXkzOworIAl9CisteXkxMzUwOgorK3l5MTM1MjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkyMjk7CisgCWlmICh5eWNoID09ICd5JykgZ290byB5eTIyOTsKKyAJZ290byB5eTU2OworLXl5MTM1MToKKyt5eTEzNTM6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CitAQCAtMTkxNjksNyArMTkzNjAsNyBAQCB5eTEzNTE6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnQicpIGdvdG8geXkxMzQ2OworKwkJCWlmICh5eWNoIDw9ICdCJykgZ290byB5eTEzNDg7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTE3OCwxMyArMTkzNjksMTMgQEAgeXkxMzUxOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNjk7CisrCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNzE7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzUyOgorK3l5MTM1NDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUScpIHsKK0BAIC0xOTIwMSwxNCArMTkzOTIsMTQgQEAgeXkxMzUyOgorIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7CisgCQkJCWdvdG8geXkzOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzY7CisrCQkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzg7CisgCQkJCWdvdG8geXkxNjY7CisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSB7CistCQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzU7CisrCQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzc7CisgCQkJCWdvdG8geXkxNjY7CisgCQkJfSBlbHNlIHsKKyAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworQEAgLTE5MjE2LDE2ICsxOTQwNywxNiBAQCB5eTEzNTI6CisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAncScpIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTM2NTsKKysJCQkJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTM2NzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzY0OworKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzY2OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM1MzoKKyt5eTEzNTU6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CitAQCAtMTkyNDAsNyArMTk0MzEsNyBAQCB5eTEzNTM6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnVScpIGdvdG8geXkxMzMyOworKwkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTEzMzQ7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTI0OSwxMyArMTk0NDAsMTMgQEAgeXkxMzUzOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNjE7CisrCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNjM7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzU0OgorK3l5MTM1NjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTicpIHsKK0BAIC0xOTI3MiwxNCArMTk0NjMsMTQgQEAgeXkxMzU0OgorIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7CisgCQkJCWdvdG8geXkzOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTU7CisrCQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTY7CisgCQkJCWdvdG8geXkxNjY7CisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSB7CistCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTQ7CisrCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTU7CisgCQkJCWdvdG8geXkxNjY7CisgCQkJfSBlbHNlIHsKKyAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworQEAgLTE5Mjg3LDE2ICsxOTQ3OCwxNiBAQCB5eTEzNTQ6CisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnbicpIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ2knKSBnb3RvIHl5MTM1NjsKKysJCQkJaWYgKHl5Y2ggPT0gJ2knKSBnb3RvIHl5MTM1ODsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxMzU1OworKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxMzU3OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM1NToKKyt5eTEzNTc6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ00nKSB7CitAQCAtMTkzMTEsNyArMTk1MDIsNyBAQCB5eTEzNTU6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxMzE4OworKwkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTEzMTk7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTMyMCwxMyArMTk1MTEsMTMgQEAgeXkxMzU1OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTEzNTk7CisrCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTEzNjE7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzU2OgorK3l5MTM1ODoKKyAJeXlhY2NlcHQgPSA0OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQycpIHsKK0BAIC0xOTM0MSw3ICsxOTUzMiw3IEBAIHl5MTM1NjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTEzMTY7CisrCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTMxNzsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MTkxOworIAkJCWdvdG8geXkxNzI7CitAQCAtMTkzNTAsMTMgKzE5NTQxLDEzIEBAIHl5MTM1NjoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzNTc7CisrCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzNTk7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTE5MTsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNTc6CisreXkxMzU5OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdAJykgeworQEAgLTE5MzcwLDE4ICsxOTU2MSwxOCBAQCB5eTEzNTc6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzE3OworKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzMTg7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKy0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzU4OworKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNjA7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzU4OgorK3l5MTM2MDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnWCcpIHsKK0BAIC0xOTQxMSw3ICsxOTYwMiw3IEBAIHl5MTM1ODoKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNTk6CisreXkxMzYxOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdTJykgeworQEAgLTE5NDI2LDcgKzE5NjE3LDcgQEAgeXkxMzU5OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMxOTsKKysJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzIwOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMTk0MzUsMTggKzE5NjI2LDE4IEBAIHl5MTM1OToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NjsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzYwOworKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzYyOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM2MDoKKyt5eTEzNjI6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy4nKSB7CisgCQlpZiAoeXljaCA8PSAnKCcpIHsKKy0JCQlpZiAoeXljaCA9PSAnICcpIGdvdG8geXkxMzIwOworKwkJCWlmICh5eWNoID09ICcgJykgZ290byB5eTEzMjE7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICcpJykgZ290byB5eTE2NDsKK0BAIC0xOTQ2Niw3ICsxOTY1Nyw3IEBAIHl5MTM2MDoKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM2MToKKyt5eTEzNjM6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1EnKSB7CitAQCAtMTk0ODEsNyArMTk2NzIsNyBAQCB5eTEzNjE6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxMzMzOworKwkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzU7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTQ5MCwxMyArMTk2ODEsMTMgQEAgeXkxMzYxOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNjI7CisrCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNjQ7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzYyOgorK3l5MTM2NDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUycpIHsKK0BAIC0xOTUxMSw3ICsxOTcwMiw3IEBAIHl5MTM2MjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzMzQ7CisrCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMzNjsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5NTIwLDEzICsxOTcxMSwxMyBAQCB5eTEzNjI6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzY7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2MzsKKysJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2NTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNjM6CisreXkxMzY1OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdHJykgeworQEAgLTE5NTU2LDcgKzE5NzQ3LDcgQEAgeXkxMzYzOgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM2NDoKKyt5eTEzNjY6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CitAQCAtMTk1NzEsNyArMTk3NjIsNyBAQCB5eTEzNjQ6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxMzM4OworKwkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTEzNDA7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTU4MCwxMyArMTk3NzEsMTMgQEAgeXkxMzY0OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzNjc7CisrCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzNjk7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzY1OgorK3l5MTM2NzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUycpIHsKK0BAIC0xOTYwMSw3ICsxOTc5Miw3IEBAIHl5MTM2NToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzMzc7CisrCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMzOTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTE5NjEwLDEzICsxOTgwMSwxMyBAQCB5eTEzNjU6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2NjsKKysJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2ODsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNjY6CisreXkxMzY4OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdHJykgeworQEAgLTE5NjQ2LDcgKzE5ODM3LDcgQEAgeXkxMzY2OgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM2NzoKKyt5eTEzNjk6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CitAQCAtMTk2NjEsNyArMTk4NTIsNyBAQCB5eTEzNjc6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzM5OworKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzNDE7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTY3MCwyMCArMTk4NjEsMjAgQEAgeXkxMzY3OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzNjg7CisrCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzNzA7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzY4OgorK3l5MTM3MDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLScpIHsKKyAJCWlmICh5eWNoIDw9ICcgJykgeworIAkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMTk2OworIAkJCWlmICh5eWNoIDw9IDB4MUYpIGdvdG8geXkzOworLQkJCWdvdG8geXkxMzQwOworKwkJCWdvdG8geXkxMzQyOworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQkJaWYgKHl5Y2ggPD0gJywnKSBnb3RvIHl5MzsKK0BAIC0xOTcwNSw3ICsxOTg5Niw3IEBAIHl5MTM2ODoKKyAJCQl9CisgCQl9CisgCX0KKy15eTEzNjk6CisreXkxMzcxOgorIAl5eWFjY2VwdCA9IDU7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICc5JykgeworQEAgLTE5NzMzLDcgKzE5OTI0LDcgQEAgeXkxMzY5OgorIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkyMTg7CisgCQkJCWdvdG8geXkxNjc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM0NzsKKysJCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM0OTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCQlnb3RvIHl5MjE4OworIAkJCX0KK0BAIC0xOTc0MywxMyArMTk5MzQsMTMgQEAgeXkxMzY5OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkyMTg7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM3MDsKKysJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM3MjsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MjE4OworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTM3MDoKKyt5eTEzNzI6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CitAQCAtMTk3NjQsNyArMTk5NTUsNyBAQCB5eTEzNzA6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnVScpIGdvdG8geXkxMzQ4OworKwkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTEzNTA7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0xOTc3MywxMyArMTk5NjQsMTMgQEAgeXkxMzcwOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNzE7CisrCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNzM7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxMzcxOgorK3l5MTM3MzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQCcpIHsKK0BAIC0xOTc5MywxOCArMTk5ODQsMTggQEAgeXkxMzcxOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTM0OTsKKysJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzUxOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTM3MjsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzc0OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM3MjoKKyt5eTEzNzQ6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1EnKSB7CitAQCAtMTk4MTgsMzMgKzIwMDA5LDM0IEBAIHl5MTM3MjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzNTA7CisrCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM1MjsKKyAJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTEzNzM7CisrCQkJaWYgKHl5Y2ggPT0gJ3InKSBnb3RvIHl5MTM3NTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzNzM6CisreXkxMzc1OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoID09ICdZJykgZ290byB5eTIyOTsKKyAJaWYgKHl5Y2ggPT0gJ3knKSBnb3RvIHl5MzQxOworIAlnb3RvIHl5MTc5OworLXl5MTM3NDoKKyt5eTEzNzY6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NTY7CisgCWlmICh5eWNoID49ICc6JykgZ290byB5eTU2OworLXl5MTM3NToKKyt5eTEzNzc6CisgCXl5YWNjZXB0ID0gMjg7CisgCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKKyAJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgNykgWVlGSUxMKDcpOworIAl5eWNoID0gKllZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMzc4OworLQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMzc3OworLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc1OworLXl5MTM3NzoKKysJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTM4MDsKKysJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTM3OTsKKysJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTM3NzsKKyt5eTEzNzk6CisrI2xpbmUgMTAyNSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCXRpbWVsaWJfdWxsIGk7CisgCitAQCAtMTk4NjksNyArMjAwNjEsOCBAQCB5eTEzNzc6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOworIAl9CisteXkxMzc4OgorKyNsaW5lIDIwMDY1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorK3l5MTM4MDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKKyAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7CitAQCAtMTk4ODksNiArMjAwODIsNyBAQCB5eTEzNzg6CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OworIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKKyAJKytZWUNVUlNPUjsKKysjbGluZSAxMDUxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJdGltZWxpYl91bGwgaSwgbXM7CisgCitAQCAtMTk5MTUsNyArMjAxMDksOCBAQCB5eTEzNzg6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOworIAl9CisteXkxMzg2OgorKyNsaW5lIDIwMTEzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorK3l5MTM4ODoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTicpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTE5OTI0LDcgKzIwMTE5LDcgQEAgeXkxMzg2OgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTQyNzsKKysJCQlnb3RvIHl5MTQyOTsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdtJykgeworQEAgLTE5OTMyLDU4ICsyMDEyNyw1OCBAQCB5eTEzODY6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDI3OworKwkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0Mjk7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxMzg3OgorK3l5MTM4OToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnVScpIHsKKyAJCWlmICh5eWNoIDw9ICdAJykgeworIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQxOTsKKysJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDIxOworIAkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTQyMDsKKysJCQlnb3RvIHl5MTQyMjsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdpJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTQxOTsKKysJCQlnb3RvIHl5MTQyMTsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ3UnKSBnb3RvIHl5MTQyMDsKKysJCQlpZiAoeXljaCA9PSAndScpIGdvdG8geXkxNDIyOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTM4ODoKKyt5eTEzOTA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ00nKSB7CisgCQlpZiAoeXljaCA8PSAnQCcpIHsKKyAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MDg7CisrCQkJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5MTQxMDsKKyAJCQlpZiAoeXljaCA8PSAnTCcpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTE0MDk7CisrCQkJZ290byB5eTE0MTE7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnZCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTE0MDg7CisrCQkJZ290byB5eTE0MTA7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdtJykgZ290byB5eTE0MDk7CisrCQkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTQxMTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzODk6CisreXkxMzkxOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdFJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMTk5OTIsNyArMjAxODcsNyBAQCB5eTEzODk6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxNDA0OworKwkJCWdvdG8geXkxNDA2OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2QnKSB7CitAQCAtMjAwMDAsMTIgKzIwMTk1LDEyIEBAIHl5MTM4OToKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0MDQ7CisrCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQwNjsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzOTA6CisreXkxMzkyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdFJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjAwMTQsNyArMjAyMDksNyBAQCB5eTEzOTA6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxNDAwOworKwkJCWdvdG8geXkxNDAyOworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2QnKSB7CitAQCAtMjAwMjIsNjggKzIwMjE3LDY4IEBAIHl5MTM5MDoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0MDA7CisrCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQwMjsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTEzOTE6CisreXkxMzkzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgeworIAkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTAyOTsKKyAJCWdvdG8geXk1NjsKKyAJfSBlbHNlIHsKKy0JCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzOTQ7CisrCQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzk2OworIAkJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5MTAyOTsKKyAJCWdvdG8geXk1NjsKKyAJfQorLXl5MTM5MjoKKyt5eTEzOTQ6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJy8nKSB7CisgCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMDI5OworIAkJZ290byB5eTU2OworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJzQnKSBnb3RvIHl5MTM5NDsKKysJCWlmICh5eWNoIDw9ICc0JykgZ290byB5eTEzOTY7CisgCQlpZiAoeXljaCA9PSAnOicpIGdvdG8geXkxMDI5OworIAkJZ290byB5eTU2OworIAl9CisteXkxMzkzOgorK3l5MTM5NToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMDI5OworIAlpZiAoeXljaCA9PSAnOicpIGdvdG8geXkxMDI5OworIAlnb3RvIHl5NTY7CisteXkxMzk0OgorK3l5MTM5NjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIHsKKyAJCWlmICh5eWNoID09ICcuJykgZ290byB5eTEwMjk7CisgCQlnb3RvIHl5NTY7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnNScpIGdvdG8geXkxMzk1OworKwkJaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5NzsKKyAJCWlmICh5eWNoID09ICc6JykgZ290byB5eTEwMjk7CisgCQlnb3RvIHl5NTY7CisgCX0KKy15eTEzOTU6CisreXkxMzk3OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OworIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKKyAJeXlhY2NlcHQgPSAyMzsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTAzMjsKKy0JaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5NzsKKy0JaWYgKHl5Y2ggPD0gJzYnKSBnb3RvIHl5MTM5ODsKKysJaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5OTsKKysJaWYgKHl5Y2ggPD0gJzYnKSBnb3RvIHl5MTQwMDsKKyAJZ290byB5eTEwMzI7CisteXkxMzk3OgorK3l5MTM5OToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKKy0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTM5OTsKKysJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTQwMTsKKyAJZ290byB5eTU2OworLXl5MTM5ODoKKyt5eTE0MDA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggIT0gJzAnKSBnb3RvIHl5NTY7CisteXkxMzk5OgorK3l5MTQwMToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlnb3RvIHl5MTA0MDsKKy15eTE0MDA6CisreXkxNDAyOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdMJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjAwOTksMTIgKzIwMjk0LDEyIEBAIHl5MTQwMDoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdsJykgZ290byB5eTE0MDE7CisrCQkJaWYgKHl5Y2ggPD0gJ2wnKSBnb3RvIHl5MTQwMzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0MDE6CisreXkxNDAzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdGJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjAxMjAsMTIgKzIwMzE1LDEyIEBAIHl5MTQwMToKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0MDI7CisrCQkJaWYgKHl5Y2ggPD0gJ2YnKSBnb3RvIHl5MTQwNDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0MDI6CisreXkxNDA0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdUJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjAxNDEsMTIgKzIwMzM2LDEyIEBAIHl5MTQwMjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjk7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0MDM7CisrCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQwNTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0MDM6CisreXkxNDA1OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdHJykgeworQEAgLTIwMTU3LDcgKzIwMzUyLDcgQEAgeXkxNDAzOgorIAkJaWYgKHl5Y2ggPT0gJ2gnKSBnb3RvIHl5MTE5NTsKKyAJCWdvdG8geXkzOworIAl9CisteXkxNDA0OgorK3l5MTQwNjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnUycpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwMTczLDEyICsyMDM2OCwxMiBAQCB5eTE0MDQ6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0MDU7CisrCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQwNzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTE5MTsKKyAJCX0KKyAJfQorLXl5MTQwNToKKyt5eTE0MDc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDE5NCwxMiArMjAzODksMTIgQEAgeXkxNDA1OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQwNjsKKysJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDA4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQwNjoKKyt5eTE0MDg6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CitAQCAtMjAyMDksMTIgKzIwNDA0LDEyIEBAIHl5MTQwNjoKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0MDc7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQwOTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0MDc6CisreXkxNDA5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdYJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworQEAgLTIwMjI0LDIzICsyMDQxOSwyMyBAQCB5eTE0MDc6CisgCQlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxOTc7CisgCQlnb3RvIHl5MzsKKyAJfQorLXl5MTQwODoKKyt5eTE0MTA6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworLQkJZ290byB5eTE0MTY7CisrCQlnb3RvIHl5MTQxODsKKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQxNjsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDE4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQwOToKKyt5eTE0MTE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ08nKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDI1NiwxMiArMjA0NTEsMTIgQEAgeXkxNDA5OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQxMDsKKysJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDEyOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQxMDoKKyt5eTE0MTI6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDI3NywxMiArMjA0NzIsMTIgQEAgeXkxNDEwOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQxMTsKKysJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDEzOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQxMToKKyt5eTE0MTM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDI5OCwyOCArMjA0OTMsMjkgQEAgeXkxNDExOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2OTsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQxMjsKKysJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDE0OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQxMjoKKyt5eTE0MTQ6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ04nKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQlnb3RvIHl5MzsKKyAJfSBlbHNlIHsKKy0JCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTM7CisrCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNDE1OworIAkJaWYgKHl5Y2ggIT0gJ28nKSBnb3RvIHl5MzsKKyAJfQorLXl5MTQxMzoKKyt5eTE0MTU6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ1cnKSBnb3RvIHl5MTQxNDsKKysJaWYgKHl5Y2ggPT0gJ1cnKSBnb3RvIHl5MTQxNjsKKyAJaWYgKHl5Y2ggIT0gJ3cnKSBnb3RvIHl5NTY7CisteXkxNDE0OgorK3l5MTQxNjoKKyAJKytZWUNVUlNPUjsKKy15eTE0MTU6CisreXkxNDE3OgorKyNsaW5lIDEwMTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgorIAl7CisgCQlERUJVR19PVVRQVVQoInRvbW9ycm93Iik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtMjAzMzAsNyArMjA1MjYsOCBAQCB5eTE0MTU6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOworIAl9CisteXkxNDE2OgorKyNsaW5lIDIwNTMwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorK3l5MTQxODoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnWScpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwMzQ2LDIxICsyMDU0MywyMiBAQCB5eTE0MTY6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY4OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDE3OworKwkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0MTk7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDE3OgorK3l5MTQxOToKKyAJKytZWUNVUlNPUjsKKyAJaWYgKCh5eWNoID0gKllZQ1VSU09SKSA8PSAnQCcpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKy0JCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0MTg7CisrCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDIwOworIAkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OworIAl9CisteXkxNDE4OgorK3l5MTQyMDoKKysjbGluZSAxMDAzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJtaWRuaWdodCB8IHRvZGF5Iik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtMjAzNjksNyArMjA1NjcsOCBAQCB5eTE0MTg6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOworIAl9CisteXkxNDE5OgorKyNsaW5lIDIwNTcxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorK3l5MTQyMToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnUycpIHsKKyAJCWlmICh5eWNoIDw9ICdAJykgeworQEAgLTIwMzc3LDggKzIwNTc2LDggQEAgeXkxNDE5OgorIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnUScpIGdvdG8geXkxNjc7CistCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQyNTsKKy0JCQlnb3RvIHl5MTQyNjsKKysJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDI3OworKwkJCWdvdG8geXkxNDI4OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ3EnKSB7CitAQCAtMjAzODYsMTMgKzIwNTg1LDEzIEBAIHl5MTQxOToKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0MjU7CistCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQyNjsKKysJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDI3OworKwkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0Mjg7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDIwOgorK3l5MTQyMjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnUicpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwNDA4LDEyICsyMDYwNywxMiBAQCB5eTE0MjA6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0MjE7CisrCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQyMzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTE5MTsKKyAJCX0KKyAJfQorLXl5MTQyMToKKyt5eTE0MjM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1MnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDQyOSwxMiArMjA2MjgsMTIgQEAgeXkxNDIxOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2ODsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQyMjsKKysJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNDI0OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQyMjoKKyt5eTE0MjQ6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMDQ1MCwyNyArMjA2NDksMjcgQEAgeXkxNDIyOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2OTsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQyMzsKKysJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDI1OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQyMzoKKyt5eTE0MjU6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0AnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCQlnb3RvIHl5MzsKKyAJfSBlbHNlIHsKKy0JCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MjQ7CisrCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDI2OworIAkJaWYgKHl5Y2ggIT0gJ2EnKSBnb3RvIHl5MzsKKyAJfQorLXl5MTQyNDoKKyt5eTE0MjY6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTk3OworIAlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxOTc7CisgCWdvdG8geXk1NjsKKy15eTE0MjU6CisreXkxNDI3OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdEJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjA0OTIsNyArMjA2OTEsNyBAQCB5eTE0MjU6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0MjY6CisreXkxNDI4OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcoJykgeworQEAgLTIwNTE0LDcgKzIwNzEzLDcgQEAgeXkxNDI2OgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDI3OgorK3l5MTQyOToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnVCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwNTMwLDEyICsyMDcyOSwxMiBAQCB5eTE0Mjc6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY3OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDI4OworKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0MzA7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDI4OgorK3l5MTQzMDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnSCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIwNTU3LDcgKzIwNzU2LDcgQEAgeXkxNDI4OgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDI5OgorK3l5MTQzMToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTScpIHsKK0BAIC0yMDU3Miw3ICsyMDc3MSw3IEBAIHl5MTQyOToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0Mjc7CisrCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQyOTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIwNTgxLDEzICsyMDc4MCwxMyBAQCB5eTE0Mjk6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ1OTsKKysJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ2MTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0MzA6CisreXkxNDMyOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdUJykgeworQEAgLTIwNjA0LDE0ICsyMDgwMywxNCBAQCB5eTE0MzA6CisgCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKKyAJCQkJZ290byB5eTM7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQxOTsKKysJCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQyMTsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTQyMDsKKysJCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTQyMjsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9IGVsc2UgeworIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CitAQCAtMjA2MTksMTYgKzIwODE4LDE2IEBAIHl5MTQzMDoKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICd0JykgeworLQkJCQlpZiAoeXljaCA9PSAnaScpIGdvdG8geXkxNDUxOworKwkJCQlpZiAoeXljaCA9PSAnaScpIGdvdG8geXkxNDUzOworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTE0NTI7CisrCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTE0NTQ7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDMxOgorK3l5MTQzMzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTCcpIHsKK0BAIC0yMDY0NSwxNCArMjA4NDQsMTQgQEAgeXkxNDMxOgorIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7CisgCQkJCWdvdG8geXkzOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MDg7CisrCQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MTA7CisgCQkJCWdvdG8geXkxNjY7CisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSB7CistCQkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE0MDk7CisrCQkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE0MTE7CisgCQkJCWdvdG8geXkxNjY7CisgCQkJfSBlbHNlIHsKKyAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworQEAgLTIwNjYwLDE2ICsyMDg1OSwxNiBAQCB5eTE0MzE6CisgCQkJfQorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnbCcpIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ2QnKSBnb3RvIHl5MTQ0MjsKKysJCQkJaWYgKHl5Y2ggPT0gJ2QnKSBnb3RvIHl5MTQ0NDsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNDQzOworKwkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNDQ1OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQzMjoKKyt5eTE0MzQ6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0QnKSB7CitAQCAtMjA2ODQsNyArMjA4ODMsNyBAQCB5eTE0MzI6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDA0OworKwkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0MDY7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMDY5MywxMyArMjA4OTIsMTMgQEAgeXkxNDMyOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0Mzg7CisrCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0NDA7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDMzOgorK3l5MTQzNToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRCcpIHsKK0BAIC0yMDcxNCw3ICsyMDkxMyw3IEBAIHl5MTQzMzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0MDA7CisrCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTQwMjsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIwNzIzLDEzICsyMDkyMiwxMyBAQCB5eTE0MzM6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQzNDsKKysJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQzNjsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0MzQ6CisreXkxNDM2OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdLJykgeworQEAgLTIwNzQ0LDcgKzIwOTQzLDcgQEAgeXkxNDM0OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0wnKSBnb3RvIHl5MTQwMTsKKysJCQlpZiAoeXljaCA8PSAnTCcpIGdvdG8geXkxNDAzOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjA3NTMsMTMgKzIwOTUyLDEzIEBAIHl5MTQzNDoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbCcpIGdvdG8geXkxNDM1OworKwkJCQlpZiAoeXljaCA8PSAnbCcpIGdvdG8geXkxNDM3OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQzNToKKyt5eTE0Mzc6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0UnKSB7CitAQCAtMjA3NzQsNyArMjA5NzMsNyBAQCB5eTE0MzU6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnRicpIGdvdG8geXkxNDAyOworKwkJCWlmICh5eWNoIDw9ICdGJykgZ290byB5eTE0MDQ7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMDc4MywxMyArMjA5ODIsMTMgQEAgeXkxNDM1OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0MzY7CisrCQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0Mzg7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDM2OgorK3l5MTQzODoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUycpIHsKK0BAIC0yMDgwNCw3ICsyMTAwMyw3IEBAIHl5MTQzNjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE0MDM7CisrCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQwNTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIwODEzLDEzICsyMTAxMiwxMyBAQCB5eTE0MzY6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQzNzsKKysJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQzOTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0Mzc6CisreXkxNDM5OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdHJykgeworQEAgLTIwODQyLDcgKzIxMDQxLDcgQEAgeXkxNDM3OgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDM4OgorK3l5MTQ0MDoKKyAJeXlhY2NlcHQgPSA0OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUicpIHsKK0BAIC0yMDg1Nyw3ICsyMTA1Niw3IEBAIHl5MTQzODoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0MDU7CisrCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTQwNzsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MTkxOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjA4NjYsMTMgKzIxMDY1LDEzIEBAIHl5MTQzODoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0Mzk7CisrCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NDE7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTE5MTsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0Mzk6CisreXkxNDQxOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdDJykgeworQEAgLTIwODg3LDcgKzIxMDg2LDcgQEAgeXkxNDM5OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQwNjsKKysJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDA4OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjA4OTYsMTMgKzIxMDk1LDEzIEBAIHl5MTQzOToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NjsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDQwOworKwkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDQyOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ0MDoKKyt5eTE0NDI6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0AnKSB7CitAQCAtMjA5MTYsMTggKzIxMTE1LDE4IEBAIHl5MTQ0MDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MDc7CisrCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQwOTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NDE7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ0MzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NDE6CisreXkxNDQzOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdYJykgeworQEAgLTIwOTUwLDcgKzIxMTQ5LDcgQEAgeXkxNDQxOgorIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDQyOgorK3l5MTQ0NDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQCcpIHsKK0BAIC0yMDk2NCwxOCArMjExNjMsMTggQEAgeXkxNDQyOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQxNjsKKysJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDE4OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ0OTsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDUxOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ0MzoKKyt5eTE0NDU6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ04nKSB7CitAQCAtMjA5OTAsNyArMjExODksNyBAQCB5eTE0NDM6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNDEwOworKwkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTI7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMDk5OSwxMyArMjExOTgsMTMgQEAgeXkxNDQzOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0NDQ7CisrCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0NDY7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDQ0OgorK3l5MTQ0NjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUScpIHsKK0BAIC0yMTAyMCw3ICsyMTIxOSw3IEBAIHl5MTQ0NDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE0MTE7CisrCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQxMzsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIxMDI5LDEzICsyMTIyOCwxMyBAQCB5eTE0NDQ6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzY7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ0NTsKKysJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ0NzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NDU6CisreXkxNDQ3OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdRJykgeworQEAgLTIxMDUwLDcgKzIxMjQ5LDcgQEAgeXkxNDQ1OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQxMjsKKysJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDE0OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjEwNTksMTMgKzIxMjU4LDEzIEBAIHl5MTQ0NToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDQ2OworKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDQ4OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ0NjoKKyt5eTE0NDg6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ04nKSB7CitAQCAtMjEwNzksMTggKzIxMjc4LDE4IEBAIHl5MTQ0NjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworLQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTM7CisrCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQxNTsKKyAJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTE0NDc7CisrCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTQ0OTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NDc6CisreXkxNDQ5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdXJykgZ290byB5eTE0MTQ7CisrCWlmICh5eWNoID09ICdXJykgZ290byB5eTE0MTY7CisgCWlmICh5eWNoICE9ICd3JykgZ290byB5eTE3OTsKKyAJeXlhY2NlcHQgPSAyOTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKK0BAIC0yMTA5OSwxMyArMjEyOTgsMTMgQEAgeXkxNDQ3OgorIAl9CisgCWlmICh5eWNoIDw9ICcuJykgeworIAkJaWYgKHl5Y2ggPT0gJy0nKSBnb3RvIHl5MTcyOworLQkJZ290byB5eTE0MTU7CisrCQlnb3RvIHl5MTQxNzsKKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKKyAJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKKy0JCWdvdG8geXkxNDE1OworKwkJZ290byB5eTE0MTc7CisgCX0KKy15eTE0NDk6CisreXkxNDUxOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdYJykgeworQEAgLTIxMTIwLDcgKzIxMzE5LDcgQEAgeXkxNDQ5OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQxNzsKKysJCQlpZiAoeXljaCA8PSAnWScpIGdvdG8geXkxNDE5OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjExMjksMzYgKzIxMzI4LDM2IEBAIHl5MTQ0OToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NjsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDUwOworKwkJCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDUyOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ1MDoKKyt5eTE0NTI6CisgCXl5YWNjZXB0ID0gMzA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcvJykgeworIAkJaWYgKHl5Y2ggPD0gJywnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworLQkJCWdvdG8geXkxNDE4OworKwkJCWdvdG8geXkxNDIwOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxNDE4OworKwkJCWlmICh5eWNoID09ICcuJykgZ290byB5eTE0MjA7CisgCQkJZ290byB5eTE3MjsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdeJykgeworLQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTE0MTg7CisrCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTQyMDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CistCQkJZ290byB5eTE0MTg7CisrCQkJZ290byB5eTE0MjA7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdfJykgZ290byB5eTE3MjsKKy0JCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDE4OworKwkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0MjA7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OworLQkJCWdvdG8geXkxNDE4OworKwkJCWdvdG8geXkxNDIwOworIAkJfQorIAl9CisteXkxNDUxOgorK3l5MTQ1MzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUicpIHsKK0BAIC0yMTE3MywxMyArMjEzNzIsMTMgQEAgeXkxNDUxOgorIAkJCX0gZWxzZSB7CisgCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJCWlmICh5eWNoIDw9ICdRJykgZ290byB5eTE2NzsKKy0JCQkJZ290byB5eTE0MjU7CisrCQkJCWdvdG8geXkxNDI3OworIAkJCX0KKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdgJykgeworIAkJCWlmICh5eWNoIDw9ICdaJykgeworLQkJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDI2OworKwkJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDI4OworIAkJCQlnb3RvIHl5MTY3OworIAkJCX0gZWxzZSB7CisgCQkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKK0BAIC0yMTE4OCwxNSArMjEzODcsMTUgQEAgeXkxNDUxOgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAncicpIHsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3EnKSBnb3RvIHl5MTc1OworLQkJCQlnb3RvIHl5MTQ1NzsKKysJCQkJZ290byB5eTE0NTk7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ1ODsKKysJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ2MDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NTI6CisreXkxNDU0OgorIAl5eWFjY2VwdCA9IDQ7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdRJykgeworQEAgLTIxMjExLDcgKzIxNDEwLDcgQEAgeXkxNDUyOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQyMTsKKysJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDIzOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkxOTE7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMTIyMCwxMyArMjE0MTksMTMgQEAgeXkxNDUyOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxOTE7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ1MzsKKysJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ1NTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MTkxOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ1MzoKKyt5eTE0NTU6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1InKSB7CitAQCAtMjEyNDEsNyArMjE0NDAsNyBAQCB5eTE0NTM6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDIyOworKwkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0MjQ7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMTI1MCwxMyArMjE0NDksMTMgQEAgeXkxNDUzOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NTQ7CisrCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NTY7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDU0OgorK3l5MTQ1NjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQycpIHsKK0BAIC0yMTI3MSw3ICsyMTQ3MCw3IEBAIHl5MTQ1NDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0MjM7CisrCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQyNTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIxMjgwLDEzICsyMTQ3OSwxMyBAQCB5eTE0NTQ6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ1NTsKKysJCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ1NzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NTU6CisreXkxNDU3OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdAJykgeworQEAgLTIxMzAwLDIyICsyMTQ5OSwyMiBAQCB5eTE0NTU6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDI0OworKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NTY7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ1ODsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NTY6CisreXkxNDU4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoID09ICdZJykgZ290byB5eTE5NzsKKyAJaWYgKHl5Y2ggPT0gJ3knKSBnb3RvIHl5MjEwOworIAlnb3RvIHl5MTc5OworLXl5MTQ1NzoKKyt5eTE0NTk6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0MnKSB7CitAQCAtMjEzNDUsNyArMjE1NDQsNyBAQCB5eTE0NTc6CisgCQkJfQorIAkJfQorIAl9CisteXkxNDU4OgorK3l5MTQ2MDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLScpIHsKK0BAIC0yMTM3NCw3ICsyMTU3Myw3IEBAIHl5MTQ1ODoKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NTk6CisreXkxNDYxOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdTJykgeworQEAgLTIxMzg5LDcgKzIxNTg4LDcgQEAgeXkxNDU5OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQyODsKKysJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDMwOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjEzOTgsMTMgKzIxNTk3LDEzIEBAIHl5MTQ1OToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDYwOworKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDYyOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ2MDoKKyt5eTE0NjI6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CitAQCAtMjE0MzQsMzAgKzIxNjMzLDMwIEBAIHl5MTQ2MDoKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NjE6CisreXkxNDYzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdZJykgeworIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7CisgCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkxNDczOworKwkJCWlmICh5eWNoID09ICdSJykgZ290byB5eTE0NzU7CisgCQkJaWYgKHl5Y2ggPD0gJ1gnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxNDc0OworKwkJCWdvdG8geXkxNDc2OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ3InKSB7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ3EnKSBnb3RvIHl5MTY2OworLQkJCWdvdG8geXkxNDczOworKwkJCWdvdG8geXkxNDc1OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxNDc0OworKwkJCWlmICh5eWNoID09ICd5JykgZ290byB5eTE0NzY7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDYyOgorK3l5MTQ2NDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnRCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIxNDY2LDcgKzIxNjY1LDcgQEAgeXkxNDYyOgorIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCWlmICh5eWNoIDw9ICdDJykgZ290byB5eTE2NjsKKy0JCQlnb3RvIHl5MTQ2NzsKKysJCQlnb3RvIHl5MTQ2OTsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdjJykgeworQEAgLTIxNDc0LDEyICsyMTY3MywxMiBAQCB5eTE0NjI6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDY3OworKwkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0Njk7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDYzOgorK3l5MTQ2NToKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTicpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIxNDk1LDEyICsyMTY5NCwxMiBAQCB5eTE0NjM6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY2OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDY0OworKwkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0NjY7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNDY0OgorK3l5MTQ2NjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnRCcpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIxNTE2LDEyICsyMTcxNSwxMiBAQCB5eTE0NjQ6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0NjU7CisrCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ2NzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTE5MTsKKyAJCX0KKyAJfQorLXl5MTQ2NToKKyt5eTE0Njc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CitAQCAtMjE1MzEsMTIgKzIxNzMwLDEyIEBAIHl5MTQ2NToKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NjY7CisrCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ2ODsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NjY6CisreXkxNDY4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdZJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjE1NTgsNyArMjE3NTcsNyBAQCB5eTE0NjY6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0Njc6CisreXkxNDY5OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdOJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjE1NzQsMTIgKzIxNzczLDEyIEBAIHl5MTQ2NzoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0Njg7CisrCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ3MDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0Njg6CisreXkxNDcwOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdJJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjE1OTUsMTIgKzIxNzk0LDEyIEBAIHl5MTQ2ODoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0Njk7CisrCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ3MTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0Njk6CisreXkxNDcxOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdHJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjE2MTYsMjkgKzIxODE1LDI5IEBAIHl5MTQ2OToKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjk7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0NzA7CisrCQkJaWYgKHl5Y2ggPD0gJ2cnKSBnb3RvIHl5MTQ3MjsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NzA6CisreXkxNDcyOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdHJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJZ290byB5eTM7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnSCcpIGdvdG8geXkxNDcxOworKwkJaWYgKHl5Y2ggPD0gJ0gnKSBnb3RvIHl5MTQ3MzsKKyAJCWlmICh5eWNoICE9ICdoJykgZ290byB5eTM7CisgCX0KKy15eTE0NzE6CisreXkxNDczOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdUJykgZ290byB5eTE0NzI7CisrCWlmICh5eWNoID09ICdUJykgZ290byB5eTE0NzQ7CisgCWlmICh5eWNoICE9ICd0JykgZ290byB5eTU2OworLXl5MTQ3MjoKKyt5eTE0NzQ6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JZ290byB5eTE0MTg7CisteXkxNDczOgorKwlnb3RvIHl5MTQyMDsKKyt5eTE0NzU6CisgCXl5YWNjZXB0ID0gNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy8nKSB7CitAQCAtMjE2NjYsNyArMjE4NjUsNyBAQCB5eTE0NzM6CisgCQkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTIyMDsKKyAJCQkJZ290byB5eTIxODsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA9PSAnQycpIGdvdG8geXkxNDc1OworKwkJCQlpZiAoeXljaCA9PSAnQycpIGdvdG8geXkxNDc3OworIAkJCQlnb3RvIHl5MTY3OworIAkJCX0KKyAJCX0gZWxzZSB7CitAQCAtMjE2NzQsMTMgKzIxODczLDEzIEBAIHl5MTQ3MzoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OworIAkJCQlnb3RvIHl5MTY3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE0NzU7CisrCQkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE0Nzc7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQkJZ290byB5eTIxODsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0NzQ6CisreXkxNDc2OgorIAl5eWFjY2VwdCA9IDU7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICctJykgeworQEAgLTIxNzA1LDcgKzIxOTA0LDcgQEAgeXkxNDc0OgorIAkJCWdvdG8geXkyMTg7CisgCQl9CisgCX0KKy15eTE0NzU6CisreXkxNDc3OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdIJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjE3MjcsNyArMjE5MjYsNyBAQCB5eTE0NzU6CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE0NzY6CisreXkxNDc4OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdYJykgeworQEAgLTIxNzQ0LDE0ICsyMTk0MywxNCBAQCB5eTE0NzY6CisgCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKKyAJCQkJZ290byB5eTM7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MTQ3MzsKKysJCQkJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MTQ3NTsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQ3NDsKKysJCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQ3NjsKKyAJCQkJZ290byB5eTE2NjsKKyAJCQl9IGVsc2UgeworIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7CitAQCAtMjE3NTksMTYgKzIxOTU4LDE2IEBAIHl5MTQ3NjoKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICd4JykgeworLQkJCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxNDg4OworKwkJCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxNDkwOworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0ODk7CisrCQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0OTE7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDc3OgorK3l5MTQ3OToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQycpIHsKK0BAIC0yMTc4Myw3ICsyMTk4Miw3IEBAIHl5MTQ3NzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0Njc7CisrCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQ2OTsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIxNzkyLDEzICsyMTk5MSwxMyBAQCB5eTE0Nzc6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ4MjsKKysJCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ4NDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0Nzg6CisreXkxNDgwOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdNJykgeworQEAgLTIxODEzLDcgKzIyMDEyLDcgQEAgeXkxNDc4OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ2NDsKKysJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNDY2OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjE4MjIsMTMgKzIyMDIxLDEzIEBAIHl5MTQ3ODoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3MTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDc5OworKwkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDgxOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ3OToKKyt5eTE0ODE6CisgCXl5YWNjZXB0ID0gNDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0MnKSB7CitAQCAtMjE4NDMsNyArMjIwNDIsNyBAQCB5eTE0Nzk6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDY1OworKwkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0Njc7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTE5MTsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIxODUyLDEzICsyMjA1MSwxMyBAQCB5eTE0Nzk6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE5MTsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDgwOworKwkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDgyOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkxOTE7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDgwOgorK3l5MTQ4MjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnQCcpIHsKK0BAIC0yMTg3MiwxOCArMjIwNzEsMTggQEAgeXkxNDgwOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQ2NjsKKysJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDY4OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CistCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ4MTsKKysJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDgzOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ4MToKKyt5eTE0ODM6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1gnKSB7CitAQCAtMjE5MTMsNyArMjIxMTIsNyBAQCB5eTE0ODE6CisgCQkJfQorIAkJfQorIAl9CisteXkxNDgyOgorK3l5MTQ4NDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTScpIHsKK0BAIC0yMTkyOCw3ICsyMjEyNyw3IEBAIHl5MTQ4MjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0Njg7CisrCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ3MDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIxOTM3LDEzICsyMjEzNiwxMyBAQCB5eTE0ODI6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ4MzsKKysJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ4NTsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0ODM6CisreXkxNDg1OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdIJykgeworQEAgLTIxOTU4LDcgKzIyMTU3LDcgQEAgeXkxNDgzOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ2OTsKKysJCQlpZiAoeXljaCA8PSAnSScpIGdvdG8geXkxNDcxOworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjE5NjcsMTMgKzIyMTY2LDEzIEBAIHl5MTQ4MzoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NjsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDg0OworKwkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDg2OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ4NDoKKyt5eTE0ODY6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0YnKSB7CitAQCAtMjE5ODgsNyArMjIxODcsNyBAQCB5eTE0ODQ6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnRycpIGdvdG8geXkxNDcwOworKwkJCWlmICh5eWNoIDw9ICdHJykgZ290byB5eTE0NzI7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMTk5NywxMyArMjIxOTYsMTMgQEAgeXkxNDg0OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0ODU7CisrCQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0ODc7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDg1OgorK3l5MTQ4NzoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRycpIHsKK0BAIC0yMjAxNywxOCArMjIyMTYsMTggQEAgeXkxNDg1OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0gnKSBnb3RvIHl5MTQ3MTsKKysJCQlpZiAoeXljaCA8PSAnSCcpIGdvdG8geXkxNDczOworIAkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ2gnKSBnb3RvIHl5MTQ4NjsKKysJCQlpZiAoeXljaCA9PSAnaCcpIGdvdG8geXkxNDg4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ4NjoKKyt5eTE0ODg6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ1QnKSBnb3RvIHl5MTQ3MjsKKysJaWYgKHl5Y2ggPT0gJ1QnKSBnb3RvIHl5MTQ3NDsKKyAJaWYgKHl5Y2ggIT0gJ3QnKSBnb3RvIHl5MTc5OworIAl5eWFjY2VwdCA9IDMwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTIyMDM3LDEzICsyMjIzNiwxMyBAQCB5eTE0ODY6CisgCX0KKyAJaWYgKHl5Y2ggPD0gJy4nKSB7CisgCQlpZiAoeXljaCA9PSAnLScpIGdvdG8geXkxNzI7CistCQlnb3RvIHl5MTQxODsKKysJCWdvdG8geXkxNDIwOworIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOworIAkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworLQkJZ290byB5eTE0MTg7CisrCQlnb3RvIHl5MTQyMDsKKyAJfQorLXl5MTQ4ODoKKyt5eTE0OTA6CisgCXl5YWNjZXB0ID0gNTsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJzknKSB7CitAQCAtMjIwNzEsNyArMjIyNzAsNyBAQCB5eTE0ODg6CisgCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTIxODsKKyAJCQkJZ290byB5eTE2NzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnQycpIGdvdG8geXkxNDc1OworKwkJCQlpZiAoeXljaCA8PSAnQycpIGdvdG8geXkxNDc3OworIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJCWdvdG8geXkyMTg7CisgCQkJfQorQEAgLTIyMDgxLDEzICsyMjI4MCwxMyBAQCB5eTE0ODg6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTIxODsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNDkwOworKwkJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNDkyOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkyMTg7CisgCQkJfQorIAkJfQorIAl9CisteXkxNDg5OgorK3l5MTQ5MToKKyAJeXlhY2NlcHQgPSA1OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLicpIHsKK0BAIC0yMjEyMiw3ICsyMjMyMSw3IEBAIHl5MTQ4OToKKyAJCQl9CisgCQl9CisgCX0KKy15eTE0OTA6CisreXkxNDkyOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdHJykgeworQEAgLTIyMTUyLDcgKzIyMzUxLDcgQEAgeXkxNDkwOgorIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ5MToKKyt5eTE0OTM6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1cnKSB7CisgCQlpZiAoeXljaCA8PSAnTicpIHsKK0BAIC0yMjE2MCwyOSArMjIzNTksMjkgQEAgeXkxNDkxOgorIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQ5OTsKKysJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNTAxOworIAkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTE2NjsKKy0JCQlpZiAoeXljaCA8PSAnVicpIGdvdG8geXkxNTAwOworLQkJCWdvdG8geXkxNDk3OworKwkJCWlmICh5eWNoIDw9ICdWJykgZ290byB5eTE1MDI7CisrCQkJZ290byB5eTE0OTk7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnbycpIHsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTE0OTk7CisrCQkJZ290byB5eTE1MDE7CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICd2JykgeworIAkJCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxNjY7CistCQkJCWdvdG8geXkxNTAwOworKwkJCQlnb3RvIHl5MTUwMjsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNDk3OworKwkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNDk5OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTQ5MjoKKyt5eTE0OTQ6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1gnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjE5MSw3ICsyMjM5MCw3IEBAIHl5MTQ5MjoKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNjY7CistCQkJZ290byB5eTE0OTY7CisrCQkJZ290byB5eTE0OTg7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAndycpIHsKK0BAIC0yMjE5OSwxMiArMjIzOTgsMTIgQEAgeXkxNDkyOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3gnKSBnb3RvIHl5MTQ5NjsKKysJCQlpZiAoeXljaCA8PSAneCcpIGdvdG8geXkxNDk4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ5MzoKKyt5eTE0OTU6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ04nKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjIyMCwxMiArMjI0MTksMTIgQEAgeXkxNDkzOgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NjsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ5NDsKKysJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDk2OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ5NDoKKyt5eTE0OTY6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjI0MSwxMiArMjI0NDAsMTIgQEAgeXkxNDk0OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ5NTsKKysJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDk3OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ5NToKKyt5eTE0OTc6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ0gnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjI2OCw3ICsyMjQ2Nyw3IEBAIHl5MTQ5NToKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ5NjoKKyt5eTE0OTg6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPD0gJ1QnKSB7CisgCQlpZiAoeXljaCA8PSAnKScpIHsKK0BAIC0yMjI3Nyw3ICsyMjQ3Niw3IEBAIHl5MTQ5NjoKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKKyAJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNjc7CistCQkJZ290byB5eTE0MjY7CisrCQkJZ290byB5eTE0Mjg7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAncycpIHsKK0BAIC0yMjI4NSwyMSArMjI0ODQsMjIgQEAgeXkxNDk2OgorIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJZ290byB5eTE2NzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQyNjsKKysJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDI4OworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTQ5NzoKKyt5eTE0OTk6CisgCSsrWVlDVVJTT1I7CisgCWlmICgoeXljaCA9ICpZWUNVUlNPUikgPD0gJ0AnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CistCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDk4OworKwkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwMDsKKyAJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKKyAJfQorLXl5MTQ5ODoKKyt5eTE1MDA6CisrI2xpbmUgOTgyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJub3ciKTsKKyAJCVRJTUVMSUJfSU5JVDsKK0BAIC0yMjMwNyw3ICsyMjUwNyw4IEBAIHl5MTQ5ODoKKyAJCVRJTUVMSUJfREVJTklUOworIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7CisgCX0KKy15eTE0OTk6CisrI2xpbmUgMjI1MTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCisreXkxNTAxOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdOJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjIzMTYsNyArMjI1MTcsNyBAQCB5eTE0OTk6CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7CisgCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTY3OworLQkJCWdvdG8geXkxNTA1OworKwkJCWdvdG8geXkxNTA3OworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ20nKSB7CitAQCAtMjIzMjQsMTIgKzIyNTI1LDEyIEBAIHl5MTQ5OToKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MDU7CisrCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUwNzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE1MDA6CisreXkxNTAyOgorIAl5eWFjY2VwdCA9IDU7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICcvJykgeworQEAgLTIyMzY0LDEzICsyMjU2NSwxMyBAQCB5eTE1MDA6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTIxODsKKyAJCQkJZ290byB5eTE2NzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTAxOworKwkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTAzOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJCWdvdG8geXkyMTg7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTAxOgorK3l5MTUwMzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnTScpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIyMzg2LDEyICsyMjU4NywxMiBAQCB5eTE1MDE6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY4OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTAyOworKwkJCWlmICh5eWNoIDw9ICdtJykgZ290byB5eTE1MDQ7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNTAyOgorK3l5MTUwNDoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA8PSAnQicpIHsKKyAJCWlmICh5eWNoIDw9ICcpJykgeworQEAgLTIyNDA3LDM2ICsyMjYwOCwzNyBAQCB5eTE1MDI6CisgCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTY5OworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA8PSAnYicpIGdvdG8geXkxNTAzOworKwkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MDU7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNTAzOgorK3l5MTUwNToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRCcpIHsKKyAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKyAJCWdvdG8geXkzOworIAl9IGVsc2UgeworLQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwNDsKKysJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDY7CisgCQlpZiAoeXljaCAhPSAnZScpIGdvdG8geXkzOworIAl9CisteXkxNTA0OgorK3l5MTUwNjoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworIAlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkyMjk7CisgCWlmICh5eWNoID09ICdyJykgZ290byB5eTIyOTsKKyAJZ290byB5eTU2OworLXl5MTUwNToKKyt5eTE1MDc6CisgCSsrWVlDVVJTT1I7CisgCWlmICgoeXljaCA9ICpZWUNVUlNPUikgPD0gJ0AnKSB7CisgCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7CistCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTA2OworKwkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwODsKKyAJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKKyAJfQorLXl5MTUwNjoKKyt5eTE1MDg6CisrI2xpbmUgOTkxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAJeworIAkJREVCVUdfT1VUUFVUKCJub29uIik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtMjI0NDcsNyArMjI2NDksOCBAQCB5eTE1MDY6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOworIAl9CisteXkxNTA3OgorKyNsaW5lIDIyNjUzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorK3l5MTUwOToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnVicpIHsKK0BAIC0yMjQ2NSwxNSArMjI2NjgsMTUgQEAgeXkxNTA3OgorIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTY2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0OTk7CisrCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE1MDE7CisgCQkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTE2NjsKKy0JCQkJZ290byB5eTE1MDA7CisrCQkJCWdvdG8geXkxNTAyOworIAkJCX0KKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICduJykgeworIAkJCWlmICh5eWNoIDw9ICdeJykgeworLQkJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNDk3OworKwkJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNDk5OworIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJCWdvdG8geXkzOworIAkJCX0gZWxzZSB7CitAQCAtMjI0ODMsMTcgKzIyNjg2LDE3IEBAIHl5MTUwNzoKKyAJCQl9CisgCQl9IGVsc2UgeworIAkJCWlmICh5eWNoIDw9ICd2JykgeworLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNTE0OworKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNTE2OworIAkJCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxNzE7CistCQkJCWdvdG8geXkxNTE1OworKwkJCQlnb3RvIHl5MTUxNzsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNTEzOworKwkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNTE1OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUwODoKKyt5eTE1MTA6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ1cnKSB7CitAQCAtMjI1MDgsNyArMjI3MTEsNyBAQCB5eTE1MDg6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnWCcpIGdvdG8geXkxNDk2OworKwkJCWlmICh5eWNoIDw9ICdYJykgZ290byB5eTE0OTg7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMjUxNywxMyArMjI3MjAsMTMgQEAgeXkxNTA4OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTcxOworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICd4JykgZ290byB5eTE1MTI7CisrCQkJCWlmICh5eWNoIDw9ICd4JykgZ290byB5eTE1MTQ7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTA5OgorK3l5MTUxMToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnTScpIHsKK0BAIC0yMjUzOCw3ICsyMjc0MSw3IEBAIHl5MTUwOToKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0OTQ7CisrCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ5NjsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIyNTQ3LDEzICsyMjc1MCwxMyBAQCB5eTE1MDk6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUxMDsKKysJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUxMjsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MTA6CisreXkxNTEyOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdTJykgeworQEAgLTIyNTY4LDcgKzIyNzcxLDcgQEAgeXkxNTEwOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQ5NTsKKysJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDk3OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjI1NzcsMTMgKzIyNzgwLDEzIEBAIHl5MTUxMDoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTExOworKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTEzOworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUxMToKKyt5eTE1MTM6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0cnKSB7CitAQCAtMjI2MTMsNyArMjI4MTYsNyBAQCB5eTE1MTE6CisgCQkJfQorIAkJfQorIAl9CisteXkxNTEyOgorK3l5MTUxNDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUycpIHsKK0BAIC0yMjYyOCw3ICsyMjgzMSw3IEBAIHl5MTUxMjoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE0MjY7CisrCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQyODsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIyNjM3LDM2ICsyMjg0MCwzNiBAQCB5eTE1MTI6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzU7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ1ODsKKysJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ2MDsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MTM6CisreXkxNTE1OgorIAl5eWFjY2VwdCA9IDMxOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnLycpIHsKKyAJCWlmICh5eWNoIDw9ICcsJykgeworIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKKy0JCQlnb3RvIHl5MTQ5ODsKKysJCQlnb3RvIHl5MTUwMDsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTQ5ODsKKysJCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxNTAwOworIAkJCWdvdG8geXkxNzI7CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXicpIHsKKy0JCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxNDk4OworKwkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTE1MDA7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworLQkJCWdvdG8geXkxNDk4OworKwkJCWdvdG8geXkxNTAwOworIAkJfSBlbHNlIHsKKyAJCQlpZiAoeXljaCA8PSAnXycpIGdvdG8geXkxNzI7CistCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTQ5ODsKKysJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTAwOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKy0JCQlnb3RvIHl5MTQ5ODsKKysJCQlnb3RvIHl5MTUwMDsKKyAJCX0KKyAJfQorLXl5MTUxNDoKKyt5eTE1MTY6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ00nKSB7CitAQCAtMjI2ODEsNyArMjI4ODQsNyBAQCB5eTE1MTQ6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNTA1OworKwkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE1MDc7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMjY5MCwxMyArMjI4OTMsMTMgQEAgeXkxNTE0OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MjA7CisrCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MjI7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTE1OgorK3l5MTUxNzoKKyAJeXlhY2NlcHQgPSA1OworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnOScpIHsKK0BAIC0yMjcyNCw3ICsyMjkyNyw3IEBAIHl5MTUxNToKKyAJCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MjE4OworIAkJCQlnb3RvIHl5MTY3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDE7CisrCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDM7CisgCQkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQkJZ290byB5eTIxODsKKyAJCQl9CitAQCAtMjI3MzQsMTMgKzIyOTM3LDEzIEBAIHl5MTUxNToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OworIAkJCQlnb3RvIHl5MTc1OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MTY7CisrCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MTg7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKKyAJCQkJZ290byB5eTIxODsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MTY6CisreXkxNTE4OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdMJykgeworQEAgLTIyNzU1LDcgKzIyOTU4LDcgQEAgeXkxNTE2OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTUwMjsKKysJCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxNTA0OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjI3NjQsMTMgKzIyOTY3LDEzIEBAIHl5MTUxNjoKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NjsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTE3OworKwkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTE5OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUxNzoKKyt5eTE1MTk6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0EnKSB7CitAQCAtMjI3ODUsNyArMjI5ODgsNyBAQCB5eTE1MTc6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnQicpIGdvdG8geXkxNTAzOworKwkJCWlmICh5eWNoIDw9ICdCJykgZ290byB5eTE1MDU7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMjc5NCwxMyArMjI5OTcsMTMgQEAgeXkxNTE3OgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc3OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MTg7CisrCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MjA7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTE4OgorK3l5MTUyMDoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnRCcpIHsKK0BAIC0yMjgxNCw0NCArMjMwMTcsNDQgQEAgeXkxNTE4OgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwNDsKKysJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNTA2OworIAkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKKyAJCQlnb3RvIHl5MzsKKyAJCX0gZWxzZSB7CistCQkJaWYgKHl5Y2ggPT0gJ2UnKSBnb3RvIHl5MTUxOTsKKysJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTIxOworIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKKyAJCQlnb3RvIHl5MzsKKyAJCX0KKyAJfQorLXl5MTUxOToKKyt5eTE1MjE6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKyAJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MjI5OworIAlpZiAoeXljaCA9PSAncicpIGdvdG8geXkzNDE7CisgCWdvdG8geXkxNzk7CisteXkxNTIwOgorK3l5MTUyMjoKKyAJeXlhY2NlcHQgPSAzMjsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJy8nKSB7CisgCQlpZiAoeXljaCA8PSAnLCcpIHsKKyAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7CistCQkJZ290byB5eTE1MDY7CisrCQkJZ290byB5eTE1MDg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoID09ICcuJykgZ290byB5eTE1MDY7CisrCQkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTUwODsKKyAJCQlnb3RvIHl5MTcyOworIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ14nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTUwNjsKKysJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxNTA4OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKKy0JCQlnb3RvIHl5MTUwNjsKKysJCQlnb3RvIHl5MTUwODsKKyAJCX0gZWxzZSB7CisgCQkJaWYgKHl5Y2ggPD0gJ18nKSBnb3RvIHl5MTcyOworLQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE1MDY7CisrCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwODsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7CistCQkJZ290byB5eTE1MDY7CisrCQkJZ290byB5eTE1MDg7CisgCQl9CisgCX0KKy15eTE1MjE6CisreXkxNTIzOgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdTJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjI4NjcsMTIgKzIzMDcwLDEyIEBAIHl5MTUyMToKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjY7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE1MjI7CisrCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUyNDsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE1MjI6CisreXkxNTI0OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdUJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjI4ODgsMTIgKzIzMDkxLDEyIEBAIHl5MTUyMjoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjc7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE1MjM7CisrCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTUyNTsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE1MjM6CisreXkxNTI1OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdFJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjI5MDksMTIgKzIzMTEyLDEyIEBAIHl5MTUyMzoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjg7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MjQ7CisrCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUyNjsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE1MjQ6CisreXkxNTI2OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CisgCWlmICh5eWNoIDw9ICdSJykgeworIAkJaWYgKHl5Y2ggPD0gJyknKSB7CitAQCAtMjI5MzAsMzIgKzIzMTMzLDMzIEBAIHl5MTUyNDoKKyAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNjk7CisgCQl9IGVsc2UgeworLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE1MjU7CisrCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUyNzsKKyAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7CisgCQkJZ290byB5eTM7CisgCQl9CisgCX0KKy15eTE1MjU6CisreXkxNTI3OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdDJykgeworIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OworIAkJZ290byB5eTM7CisgCX0gZWxzZSB7CistCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNTI2OworKwkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTUyODsKKyAJCWlmICh5eWNoICE9ICdkJykgZ290byB5eTM7CisgCX0KKy15eTE1MjY6CisreXkxNTI4OgorIAl5eWNoID0gKisrWVlDVVJTT1I7CistCWlmICh5eWNoID09ICdBJykgZ290byB5eTE1Mjc7CisrCWlmICh5eWNoID09ICdBJykgZ290byB5eTE1Mjk7CisgCWlmICh5eWNoICE9ICdhJykgZ290byB5eTU2OworLXl5MTUyNzoKKyt5eTE1Mjk6CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUyODsKKysJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUzMDsKKyAJaWYgKHl5Y2ggIT0gJ3knKSBnb3RvIHl5NTY7CisteXkxNTI4OgorK3l5MTUzMDoKKyAJKytZWUNVUlNPUjsKKy15eTE1Mjk6CisreXkxNTMxOgorKyNsaW5lIDk3MCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCisgCXsKKyAJCURFQlVHX09VVFBVVCgieWVzdGVyZGF5Iik7CisgCQlUSU1FTElCX0lOSVQ7CitAQCAtMjI5NjYsNyArMjMxNzAsOCBAQCB5eTE1Mjk6CisgCQlUSU1FTElCX0RFSU5JVDsKKyAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOworIAl9CisteXkxNTMwOgorKyNsaW5lIDIzMTc0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgorK3l5MTUzMjoKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUicpIHsKK0BAIC0yMjk4MSw3ICsyMzE4Niw3IEBAIHl5MTUzMDoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE1MjI7CisrCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTUyNDsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIyOTkwLDEzICsyMzE5NSwxMyBAQCB5eTE1MzA6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzE7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUzMTsKKysJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUzMzsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MzE6CisreXkxNTMzOgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdTJykgeworQEAgLTIzMDExLDcgKzIzMjE2LDcgQEAgeXkxNTMxOgorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJ18nKSB7CistCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTUyMzsKKysJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNTI1OworIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKKyAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOworIAkJCWdvdG8geXkxNzI7CitAQCAtMjMwMjAsMTMgKzIzMjI1LDEzIEBAIHl5MTUzMToKKyAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKKyAJCQkJZ290byB5eTE3NTsKKyAJCQl9IGVsc2UgeworLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTMyOworKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTM0OworIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7CisgCQkJCWdvdG8geXkzOworIAkJCX0KKyAJCX0KKyAJfQorLXl5MTUzMjoKKyt5eTE1MzQ6CisgCXl5YWNjZXB0ID0gMDsKKyAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKKyAJaWYgKHl5Y2ggPD0gJ0QnKSB7CitAQCAtMjMwNDEsNyArMjMyNDYsNyBAQCB5eTE1MzI6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnXycpIHsKKy0JCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNTI0OworKwkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MjY7CisgCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OworIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7CisgCQkJZ290byB5eTE3MjsKK0BAIC0yMzA1MCwxMyArMjMyNTUsMTMgQEAgeXkxNTMyOgorIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOworIAkJCQlnb3RvIHl5MTc2OworIAkJCX0gZWxzZSB7CistCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzM7CisrCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzU7CisgCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKKyAJCQkJZ290byB5eTM7CisgCQkJfQorIAkJfQorIAl9CisteXkxNTMzOgorK3l5MTUzNToKKyAJeXlhY2NlcHQgPSAwOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworIAlpZiAoeXljaCA8PSAnUScpIHsKK0BAIC0yMzA3MSw3ICsyMzI3Niw3IEBAIHl5MTUzMzoKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCWlmICh5eWNoIDw9ICdfJykgeworLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE1MjU7CisrCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTUyNzsKKyAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7CisgCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKKyAJCQlnb3RvIHl5MTcyOworQEAgLTIzMDgwLDEzICsyMzI4NSwxMyBAQCB5eTE1MzM6CisgCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7CisgCQkJCWdvdG8geXkxNzc7CisgCQkJfSBlbHNlIHsKKy0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUzNDsKKysJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUzNjsKKyAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OworIAkJCQlnb3RvIHl5MzsKKyAJCQl9CisgCQl9CisgCX0KKy15eTE1MzQ6CisreXkxNTM2OgorIAl5eWFjY2VwdCA9IDA7CisgCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7CisgCWlmICh5eWNoIDw9ICdDJykgeworQEAgLTIzMTAwLDIxICsyMzMwNSwyMSBAQCB5eTE1MzQ6CisgCQl9CisgCX0gZWxzZSB7CisgCQlpZiAoeXljaCA8PSAnYCcpIHsKKy0JCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNTI2OworKwkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE1Mjg7CisgCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworIAkJCWdvdG8geXkzOworIAkJfSBlbHNlIHsKKy0JCQlpZiAoeXljaCA9PSAnZCcpIGdvdG8geXkxNTM1OworKwkJCWlmICh5eWNoID09ICdkJykgZ290byB5eTE1Mzc7CisgCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc4OworIAkJCWdvdG8geXkzOworIAkJfQorIAl9CisteXkxNTM1OgorK3l5MTUzNzoKKyAJeXljaCA9ICorK1lZQ1VSU09SOworLQlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxNTI3OworKwlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxNTI5OworIAlpZiAoeXljaCAhPSAnYScpIGdvdG8geXkxNzk7CisgCXl5Y2ggPSAqKytZWUNVUlNPUjsKKy0JaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUyODsKKysJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUzMDsKKyAJaWYgKHl5Y2ggIT0gJ3knKSBnb3RvIHl5MTc5OworIAl5eWFjY2VwdCA9IDMzOworIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworQEAgLTIzMTIzLDEzICsyMzMyOCwxNCBAQCB5eTE1MzU6CisgCX0KKyAJaWYgKHl5Y2ggPD0gJy4nKSB7CisgCQlpZiAoeXljaCA9PSAnLScpIGdvdG8geXkxNzI7CistCQlnb3RvIHl5MTUyOTsKKysJCWdvdG8geXkxNTMxOworIAl9IGVsc2UgeworIAkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOworIAkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOworLQkJZ290byB5eTE1Mjk7CisrCQlnb3RvIHl5MTUzMTsKKyAJfQorIH0KKysjbGluZSAxNzcyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKKyAKKyB9CisgCitkaWZmIC0tZ2l0IGEvZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZQoraW5kZXggNzRkOWVhMy4uZjI2ZTI3NiAxMDA2NDQKKy0tLSBhL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlCisrKysgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZQorQEAgLTkzMSw4ICs5MzEsOCBAQCBpc293ZWVrICAgICAgICAgID0geWVhcjQgIi0iPyAiVyIgd2Vla29meWVhcjsKKyBleGlmICAgICAgICAgICAgID0geWVhcjQgIjoiIG1vbnRobHogIjoiIGRheWx6ICIgIiBob3VyMjRseiAiOiIgbWludXRlbHogIjoiIHNlY29uZGx6OworIGZpcnN0ZGF5b2YgICAgICAgPSAnZmlyc3QgZGF5IG9mJzsKKyBsYXN0ZGF5b2YgICAgICAgID0gJ2xhc3QgZGF5IG9mJzsKKy1iYWNrb2YgICAgICAgICAgID0gJ2JhY2sgb2YgJyBob3VyMjQgc3BhY2U/IG1lcmlkaWFuPzsKKy1mcm9udG9mICAgICAgICAgID0gJ2Zyb250IG9mICcgaG91cjI0IHNwYWNlPyBtZXJpZGlhbj87CisrYmFja29mICAgICAgICAgICA9ICdiYWNrIG9mICcgaG91cjI0IChzcGFjZT8gbWVyaWRpYW4pPzsKKytmcm9udG9mICAgICAgICAgID0gJ2Zyb250IG9mICcgaG91cjI0IChzcGFjZT8gbWVyaWRpYW4pPzsKKyAKKyAvKiBDb21tb24gTG9nIEZvcm1hdDogMTAvT2N0LzIwMDA6MTM6NTU6MzYgLTA3MDAgKi8KKyBjbGYgICAgICAgICAgICAgID0gZGF5ICIvIiBtb250aGFiYnIgIi8iIHllYXI0ICI6IiBob3VyMjRseiAiOiIgbWludXRlbHogIjoiIHNlY29uZGx6IHNwYWNlIHR6Y29ycmVjdGlvbjsKK2RpZmYgLS1naXQgYS9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQgYi9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQKK2luZGV4IDhmNDhiMWIuLjhkY2Q0YzggMTAwNjQ0CistLS0gYS9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQKKysrKyBiL2V4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdAorQEAgLTQwLDcgKzQwLDcgQEAgb2JqZWN0KERhdGVJbnRlcnZhbCkjJWQgKDE2KSB7CisgICBbInNwZWNpYWxfYW1vdW50Il09PgorICAgaW50KC0xKQorICAgWyJoYXZlX3dlZWtkYXlfcmVsYXRpdmUiXT0+CistICBpbnQoOSkKKysgIGludCgwKQorICAgWyJoYXZlX3NwZWNpYWxfcmVsYXRpdmUiXT0+CisgICBpbnQoMCkKKyAgIFsiZiJdPT4KK2RpZmYgLS1naXQgYS9leHQvd2RkeC90ZXN0cy9idWc3NTA1NS5waHB0IGIvZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUucGhwdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjI5NTYyODQKKy0tLSAvZGV2L251bGwKKysrKyBiL2V4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LnBocHQKK0BAIC0wLDAgKzEsMjAgQEAKKystLVRFU1QtLQorK0J1ZyAjNzUwNTUgT3V0LU9mLUJvdW5kcyBSZWFkIGluIHRpbWVsaWJfbWVyaWRpYW4oKQorKy0tU0tJUElGLS0KKys8P3BocCBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoIndkZHgiKSkgcHJpbnQgInNraXAiOyA/PgorKy0tRklMRS0tCisrPD9waHAKKysKKyskZmlsZV9zdHIgPSBkaXJuYW1lKF9fRklMRV9fKSAuICIvYnVnNzUwNTUud2RkeCI7CisrCisrJHdkZHhfc3RyID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVfc3RyKTsKKytwcmludCBzdHJsZW4oJHdkZHhfc3RyKSAuICIgYnl0ZXMgcmVhZC5cbiI7CisrCisrdmFyX2R1bXAod2RkeF9kZXNlcmlhbGl6ZSgkd2RkeF9zdHIpKTsKKys/PgorKy0tRVhQRUNULS0KKyszMjMgYnl0ZXMgcmVhZC4KKythcnJheSgxKSB7CisrICBbImFEYXRlVGltZSJdPT4KKysgIHN0cmluZygxMikgImZyT050IG9mIDAgMCIKKyt9CitkaWZmIC0tZ2l0IGEvZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUud2RkeCBiL2V4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LndkZHgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42NDkzMzUyCistLS0gL2Rldi9udWxsCisrKysgYi9leHQvd2RkeC90ZXN0cy9idWc3NTA1NS53ZGR4CitAQCAtMCwwICsxLDEzIEBACisrPD94bWwgdmVyc2lvbj0nMS4wJz8+CisrPCFET0NUWVBFIHdkZHhQYWNrZXQgU1lTVEVNICd3ZGR4XzAxMDAuZHRkJz4KKys8d2RkeFBhY2tldCB2ZXJzaW9uPScxLjAnPgorKzxoZWFkZXIvPgorKwk8ZGF0YT4KKysgICAgICAgIAk8c3RydWN0PgorKyAgICAgICAgICAgICAgICAgICAgPHZhciBuYW1lPSdhRGF0ZVRpbWUnPgorKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZGF0ZVRpbWU+ZnJPTnQgb2YgMCAwPC9kYXRlVGltZT4KKysgICAgICAgICAgICAgICAgICAgICA8L3Zhcj4KKysgICAgICAgICAgICAgICAgPC9zdHJ1Y3Q+CisrCTwvZGF0YT4KKys8L3dkZHhQYWNrZXQ+CisrCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS43L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuNy9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLmluYwppbmRleCAwZTU1MDIwLi4yODNkNjMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLmluYwpAQCAtMjAzLDYgKzIwMyw3IEBACiAKIFBBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BOfS1jbGkgJHtQTn0tY2dpICR7UE59LWZwbSAke1BOfS1mcG0tYXBhY2hlMiAke1BOfS1wZWFyICR7UE59LXBoYXIgJHtNT0RQSFBfUEFDS0FHRX0gJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgJHtQTn0iCiAKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJnY2MiCiBSREVQRU5EU18ke1BOfS1wZWFyID0gIiR7UE59IgogUkRFUEVORFNfJHtQTn0tcGhhciA9ICIke1BOfS1jbGkiCiBSREVQRU5EU18ke1BOfS1jbGkgPSAiJHtQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4yNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjI2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmNlOTQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBwaHAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2MDI2MzZkNDZhNjFjMGFjMDQzMmJiZjVjMDc4ZmU0IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B0aHJlYWQtY2hlY2stdGhyZWFkcy1tNC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYjQyNGI3MDVjZmI3MTVmYzA0ZjQ5OWY4YThjZjUyZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDdhYWI4MDgzYTQyODRiOTA1Nzc3ZTFiNDVkZDc3MzVhZGM1M2JlODI3YjI5Zjg5NjY4NDc1MGFjOGI2MjM2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDgwNDdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMzEuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBwaHAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2MDI2MzZkNDZhNjFjMGFjMDQzMmJiZjVjMDc4ZmU0IgorCitTUkNfVVJJICs9ICJmaWxlOi8vY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B0aHJlYWQtY2hlY2stdGhyZWFkcy1tNC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MjBhYmUyNWUwZDZjZDVmMDQxYTM2MGEzMGNlNTc4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjM5NzE2OWNiNjVmMDUzOWYzYmNiMDQwNjBmOTc3NzBkNzNlMTkwNzRhMzdiZDJjNThiOThlYmY2ZWNiMTBmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjEuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViZjkyMzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgcGhwLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMGFmNTk5ZjY2ZDA0NjFjNTgzN2M2OTVmY2JjNWMxZSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMmUxMWEzNzJmOTlhZmJiYmYzZjQ2YTMxZThhODJjYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzliNjc5Mjk4N2YzOGRjNDg1ZjkyMjU4YzA0ZjllMDJkZWRkNTkzZjlkMjYwZWJlNzI1MzQzZjgxMmQxZmY4IgotCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtcGRvLW15c3FsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAsLS13aXRob3V0LW15c3FsaSAtLXdpdGhvdXQtcGRvLW15c3FsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICxteXNxbDUiCi0KLUZJTEVTXyR7UE59LWZwbSArPSAiJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZjY4YTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMS45LmJiCkBAIC0wLDAgKzEsMTcgQEAKK3JlcXVpcmUgcGhwLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMGFmNTk5ZjY2ZDA0NjFjNTgzN2M2OTVmY2JjNWMxZSIKKworU1JDX1VSSSArPSAiZmlsZTovL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTY2NDIucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjM5N2JlNTRmMzI4MWNkZjMwYzdlZjA3NmIyOGY3ZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzE0ZGNjMTBkZmRkN2M0NDQzZWRiNGZlMWUxMzNhNDRmMmIyYTgzNTFiZThjOWViNmFiOTIyMmQ0NWZkOWJhZSIKKworUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsaT0ke1NUQUdJTkdfQklORElSX0NST1NTfS9teXNxbF9jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBkby1teXNxbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9teXNxbF9jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgLC0td2l0aG91dC1teXNxbGkgLS13aXRob3V0LXBkby1teXNxbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAsbXlzcWw1IgorCitGSUxFU18ke1BOfS1mcG0gKz0gIiR7c3lzY29uZmRpcn0vcGhwLWZwbS5kL3d3dy5jb25mLmRlZmF1bHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbS1xYS9wbS1xYV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbS1xYS9wbS1xYV9naXQuYmIKaW5kZXggNzMyMmRmOC4uMWVlNjU3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcG0tcWEvcG0tcWFfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BtLXFhL3BtLXFhX2dpdC5iYgpAQCAtNCwxMiArNCwxMSBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1QViA9ICIwLjQuMTQiCitQViA9ICIwLjUuMiIKIAogQlJBTkNIID89ICJtYXN0ZXIiCiAKLSMgQ29ycmVzcG9uZHMgdG8gdGFnIHBtLXFhLXYwLjQuMTQKLVNSQ1JFViA9ICI5MTExZDE5MzBmMDIzMzczOTRjZjE2ZTg0YWQyYTI3ZjMzNjA3Y2JiIgorU1JDUkVWID0gIjA1NzEwZWM1MDMyYmU0YzhlZGFmYjQxMDlkNGQ5MDhkMzEyNDM5MDYiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmxpbmFyby5vcmcvcG93ZXIvcG0tcWEuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9JHtCUkFOQ0h9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbXRvb2xzL3BtdG9vbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcG10b29scy9wbXRvb2xzX2dpdC5iYgppbmRleCA5NGZjNzM2Li44NDkxZmM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbXRvb2xzL3BtdG9vbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BtdG9vbHMvcG10b29sc19naXQuYmIKQEAgLTE1LDYgKzE1LDExIEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFjcGl4dHJhY3QiCisKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiBkb19jb21waWxlKCkgewogICAgIG9lX3J1bm1ha2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGZiOTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIlByb3RvY29sIEJ1ZmZlcnMgLSBzdHJ1Y3R1cmVkIGRhdGEgc2VyaWFsaXNhdGlvbiBtZWNoYW5pc20iCi1ERVNDUklQVElPTiA9ICJUaGlzIGlzIHByb3RvYnVmLWMsIGEgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgR29vZ2xlIFByb3RvY29sIEJ1ZmZlcnMgZGF0YSBcCi1zZXJpYWxpemF0aW9uIGZvcm1hdC4gSXQgaW5jbHVkZXMgbGlicHJvdG9idWYtYywgYSBwdXJlIEMgbGlicmFyeSB0aGF0IFwKLWltcGxlbWVudHMgcHJvdG9idWYgZW5jb2RpbmcgYW5kIGRlY29kaW5nLCBhbmQgcHJvdG9jLWMsIGEgY29kZSBnZW5lcmF0b3IgdGhhdCBcCi1jb252ZXJ0cyBQcm90b2NvbCBCdWZmZXIgLnByb3RvIGZpbGVzIHRvIEMgZGVzY3JpcHRvciBjb2RlLCBiYXNlZCBvbiB0aGUgXAotb3JpZ2luYWwgcHJvdG9jLiBwcm90b2J1Zi1jIGZvcm1lcmx5IGluY2x1ZGVkIGFuIFJQQyBpbXBsZW1lbnRhdGlvbjsgdGhhdCBjb2RlIFwKLWhhcyBiZWVuIHNwbGl0IG91dCBpbnRvIHRoZSBwcm90b2J1Zi1jLXJwYyBwcm9qZWN0LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9wcm90b2J1Zi1jL3Byb3RvYnVmLWMiCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLQotREVQRU5EUyA9ICJwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgotUkRFUEVORFNfJHtQTn0tY29tcGlsZXIgPSAicHJvdG9idWYtY29tcGlsZXIiCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMzVjMzE5NWEzOTY4NTI0ZGMxNTI0YjRlYmVhMGMwZSIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Byb3RvYnVmLWMvcHJvdG9idWYtYy9hcmNoaXZlL3Yke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiODg0YWViYTQyODMzMDk0NDVhOGUzYjZlNzMyMmRkNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDcwOGZiM2MwMjRiOWU2ZTg2ZGYxNDFmYWZmODAyMTk0ZjVkYjkwYTRiNzllNmQ0YWE2YmQ2MWRkOTgzZGQ2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTFlNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMC5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIlByb3RvY29sIEJ1ZmZlcnMgLSBzdHJ1Y3R1cmVkIGRhdGEgc2VyaWFsaXNhdGlvbiBtZWNoYW5pc20iCitERVNDUklQVElPTiA9ICJUaGlzIGlzIHByb3RvYnVmLWMsIGEgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgR29vZ2xlIFByb3RvY29sIEJ1ZmZlcnMgZGF0YSBcCitzZXJpYWxpemF0aW9uIGZvcm1hdC4gSXQgaW5jbHVkZXMgbGlicHJvdG9idWYtYywgYSBwdXJlIEMgbGlicmFyeSB0aGF0IFwKK2ltcGxlbWVudHMgcHJvdG9idWYgZW5jb2RpbmcgYW5kIGRlY29kaW5nLCBhbmQgcHJvdG9jLWMsIGEgY29kZSBnZW5lcmF0b3IgdGhhdCBcCitjb252ZXJ0cyBQcm90b2NvbCBCdWZmZXIgLnByb3RvIGZpbGVzIHRvIEMgZGVzY3JpcHRvciBjb2RlLCBiYXNlZCBvbiB0aGUgXAorb3JpZ2luYWwgcHJvdG9jLiBwcm90b2J1Zi1jIGZvcm1lcmx5IGluY2x1ZGVkIGFuIFJQQyBpbXBsZW1lbnRhdGlvbjsgdGhhdCBjb2RlIFwKK2hhcyBiZWVuIHNwbGl0IG91dCBpbnRvIHRoZSBwcm90b2J1Zi1jLXJwYyBwcm9qZWN0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9wcm90b2J1Zi1jL3Byb3RvYnVmLWMiCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKKworREVQRU5EUyA9ICJwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYiCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgorUkRFUEVORFNfJHtQTn0tY29tcGlsZXIgPSAicHJvdG9idWYtY29tcGlsZXIiCitSREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jYjkwMTE2ODcxNWY0NzgyYTJiMDZjM2RkYWVmYTU1OCIKKworUFYgLj0gIitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJkYWMxYTY1ZmVhYzRhZDcyZjYxMmFhYjk5ZjQ4NzA1NmZiY2Y1YzFhIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jLmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0ZJTEVTXyR7UE59LWNvbXBpbGVyID0gIiR7YmluZGlyfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgyMTBiMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKLURFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMgYXJlIGEgd2F5IG9mIGVuY29kaW5nIHN0cnVjdHVyZWQgZGF0YSBpbiBhbiBcCi1lZmZpY2llbnQgeWV0IGV4dGVuc2libGUgZm9ybWF0LiBHb29nbGUgdXNlcyBQcm90b2NvbCBCdWZmZXJzIGZvciBhbG1vc3QgXAotYWxsIG9mIGl0cyBpbnRlcm5hbCBSUEMgcHJvdG9jb2xzIGFuZCBmaWxlIGZvcm1hdHMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1ZiIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotCi1QQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1jb21waWxlciIKLQotREVQRU5EUyA9ICJ6bGliIgotUkRFUEVORFNfJHtQTn0tY29tcGlsZXIgPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNTk1M2M3NTJlZmM5Mjk5YjE4NGY5MWJlZjU0MDA5NSIKLQotU1JDUkVWID0gImE0MjhlNDIwNzI3NjU5OTNmZjY3NGZkYTcyODYzYzlmMWFhMmQyNjgiCi0KLVBWID0gIjMuMS4wK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmLmdpdCIKLQotRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLXByb3RvYz1lY2hvIgotCi1pbmhlcml0IGF1dG90b29scwotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9L2xpYnByb3RvYyR7U09MSUJTfSIKLQotTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWU3YzE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy40LjEuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJQcm90b2NvbCBCdWZmZXJzIC0gc3RydWN0dXJlZCBkYXRhIHNlcmlhbGlzYXRpb24gbWVjaGFuaXNtIgorREVTQ1JJUFRJT04gPSAiUHJvdG9jb2wgQnVmZmVycyBhcmUgYSB3YXkgb2YgZW5jb2Rpbmcgc3RydWN0dXJlZCBkYXRhIGluIGFuIFwKK2VmZmljaWVudCB5ZXQgZXh0ZW5zaWJsZSBmb3JtYXQuIEdvb2dsZSB1c2VzIFByb3RvY29sIEJ1ZmZlcnMgZm9yIGFsbW9zdCBcCithbGwgb2YgaXRzIGludGVybmFsIFJQQyBwcm90b2NvbHMgYW5kIGZpbGUgZm9ybWF0cy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyICR7UE59LWxpdGUiCisKK0RFUEVORFMgPSAiemxpYiIKK1JERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzU5NTNjNzUyZWZjOTI5OWIxODRmOTFiZWY1NDAwOTUiCisKK1NSQ1JFViA9ICJiMDRlNWNiYTM1NjIxMmU0ZThjNjZjNjFiYmUwYzNhMjA1MzdjNWI5IgorCitQViA9ICIzLjQuMStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi5naXQ7YnJhbmNoPTMuNC54IgorCitFWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGgtcHJvdG9jPWVjaG8iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9L2xpYnByb3RvYyR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWxpdGUgPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS9saWJwcm90b2J1Zi1saXRlJHtTT0xJQlN9IgorCitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZXNfMy4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZXNfMy4wLjUuYmIKaW5kZXggM2ViMTg4Mi4uYzg1ZmM1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVzXzMuMC41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjAuNS5iYgpAQCAtMTIsMyArMTIsNSBAQAogUyA9ICIke1dPUktESVJ9L2Z1dHVyZXMtJHtQVn0iCiAKIGluaGVyaXQgc2V0dXB0b29scworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjIuMC5iYgppbmRleCBhY2MyZjViLi45ZDJlMTY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdF8zLjIyLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yMi4wLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJQeXRob24gR09iamVjdCBiaW5kaW5ncyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucHlndGsub3JnLyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJMR1BMdjIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcmFwaWRqc29uL3JhcGlkanNvbl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9yYXBpZGpzb24vcmFwaWRqc29uX2dpdC5iYgppbmRleCA0Y2RlZDA3Li44YWIzNWQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9yYXBpZGpzb24vcmFwaWRqc29uX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9yYXBpZGpzb24vcmFwaWRqc29uX2dpdC5iYgpAQCAtMjEsNSArMjEsNiBAQAogIyBSYXBpZEpTT04gaXMgYSBoZWFkZXItb25seSBDKysgbGlicmFyeSwgc28gdGhlIG1haW4gcGFja2FnZSB3aWxsIGJlIGVtcHR5LgogCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZV8wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91ZnRyYWNlL3VmdHJhY2VfMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYjE3OTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91ZnRyYWNlL3VmdHJhY2VfMC44LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiVHJhY2UgYW5kIGFuYWx5emUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSB3cml0dGVuIGluIEMvQysrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbWh5dW5nL3VmdHJhY2UiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uYW1oeXVuZy91ZnRyYWNlL2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAiZWxmdXRpbHMiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworU1JDUkVWID0gIjVhZjlmZjlmYTg5YzM0MDYxN2U1MmM4ZWQwNTc5OGIzNTJhNzE0NWMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbmFtaHl1bmcvJHtCUE59IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCitFWFRSQV9PRUNPTkYgPSAiQVJDSD0ke1RBUkdFVF9BUkNIfSIKKworZG9fY29uZmlndXJlKCkgeworICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitGSUxFU19TT0xJQlNERVYgPSAiIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLnNvIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxhYXJjaDY0fGFybSkiCisKKyMgdWZ0cmFjZSBzdXBwb3J0cyBhcm12NiBhbmQgYWJvdmUKK0NPTVBBVElCTEVfSE9TVF9hcm12NCA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2FybXY1ID0gJ251bGwnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91dy1pbWFwL3V3LWltYXBfMjAwN2YuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91dy1pbWFwL3V3LWltYXBfMjAwN2YuYmIKaW5kZXggMDg0OWU4OC4uOTEwMDNmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdXctaW1hcC91dy1pbWFwXzIwMDdmLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3V3LWltYXAvdXctaW1hcF8yMDA3Zi5iYgpAQCAtNiw3ICs2LDcgQEAKIAogREVQRU5EUyA9ICJvcGVuc3NsIgogCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5jYWMud2FzaGluZ3Rvbi5lZHUvaW1hcC9pbWFwLSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYy9vbGQvaW1hcC0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vcXVvdGVfY2N0eXBlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ltYXAtMjAwN2Utc2hhcmVkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ltYXAtMjAwN2YtZm9ybWF0LXNlY3VyaXR5LnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy92YWxhLWRidXMtYmluZGluZy10b29sL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2Q0ODBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJWYWxhIERCdXMgQmluZGluZyBUb29sIgotU0VDVElPTiA9ICJkZXZlbCIKLURFUEVORFMgPSAidmFsYSBsaWJnZWUgbGlieG1sMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93aWtpLmZyZWVzbWFydHBob25lLm9yZy9pbmRleC5waHAvSW1wbGVtZW50YXRpb25zL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1QRSA9ICIxIgotSU5DX1BSID0gInIzIgotCi1leHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZyZWVzbWFydHBob25lL3NvdXJjZXMvJHtCUH0udGFyLmJ6MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGVybG5hdGl2ZSBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy92YWxhLWRidXMtYmluZGluZy10b29sL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRhc2gtaW4tbTQtbWFjcm8tbmFtZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy92YWxhLWRidXMtYmluZGluZy10b29sL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRhc2gtaW4tbTQtbWFjcm8tbmFtZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZDg0YWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS1kYnVzLWJpbmRpbmctdG9vbC92YWxhLWRidXMtYmluZGluZy10b29sLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LXVzZS1kYXNoLWluLW00LW1hY3JvLW5hbWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA4YWJlZDJlNWJmOGU3ODE1YjExZGY2ZDIyMDQyZDVmMGFjOGVmY2IwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogVHVlLCA1IE1heSAyMDE1IDEzOjQzOjM1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogZG9uJ3QgdXNlIGRhc2ggaW4gbTQgbWFjcm8gbmFtZXMKLQotKiBvdGhlcndpc2UgaXQgZG9lc24ndCBnZXQgZXhwYW5kZWQgYW5kIHZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wgZW5kcyB3aXRoIHZlcnNpb24gJ3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfdmVyc2lvbicKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQ4ZjAwN2MuLjE4ZDBiZGUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEsOSArMSw5IEBACi0tbTRfZGVmaW5lKFt2YWxhLWRidXMtYmluZGluZy10b29sX3JlbGVhc2VkXSwgWzBdKQotLW00X2RlZmluZShbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF9iYXNlX3ZlcnNpb25dLCBbMS4wXSkKLS1tNF9kZWZpbmUoW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfbWF5YmVfZ2l0cmV2XSwgbTRfaWYodmFsYS1kYnVzLWJpbmRpbmctdG9vbF9yZWxlYXNlZCwgWzFdLCBbXSwgW200X2VzeXNjbWQoW2dpdCBzaG93LXJlZiAtLWhhc2g9NSBIRUFEIHwgdHIgLWQgJ1xuXHInXSldKSkKLS1tNF9kZWZpbmUoW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfdmVyc2lvbl0sIG00X2lmKHZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfcmVsZWFzZWQsIFsxXSwgW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfYmFzZV92ZXJzaW9uXSwgW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfYmFzZV92ZXJzaW9uLXZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfbWF5YmVfZ2l0cmV2XSkpCi0rbTRfZGVmaW5lKFt2YWxhX2RidXNfYmluZGluZ190b29sX3JlbGVhc2VkXSwgWzBdKQotK200X2RlZmluZShbdmFsYV9kYnVzX2JpbmRpbmdfdG9vbF9iYXNlX3ZlcnNpb25dLCBbMS4wXSkKLSttNF9kZWZpbmUoW3ZhbGFfZGJ1c19iaW5kaW5nX3Rvb2xfbWF5YmVfZ2l0cmV2XSwgbTRfaWYodmFsYV9kYnVzX2JpbmRpbmdfdG9vbF9yZWxlYXNlZCwgWzFdLCBbXSwgW200X2VzeXNjbWQoW2dpdCBzaG93LXJlZiAtLWhhc2g9NSBIRUFEIHwgdHIgLWQgJ1xuXHInXSldKSkKLSttNF9kZWZpbmUoW3ZhbGFfZGJ1c19iaW5kaW5nX3Rvb2xfdmVyc2lvbl0sIG00X2lmKHZhbGFfZGJ1c19iaW5kaW5nX3Rvb2xfcmVsZWFzZWQsIFsxXSwgW3ZhbGFfZGJ1c19iaW5kaW5nX3Rvb2xfYmFzZV92ZXJzaW9uXSwgW3ZhbGFfZGJ1c19iaW5kaW5nX3Rvb2xfYmFzZV92ZXJzaW9uLXZhbGFfZGJ1c19iaW5kaW5nX3Rvb2xfbWF5YmVfZ2l0cmV2XSkpCi0gCi0tQUNfSU5JVChbdmFsYS1kYnVzLWJpbmRpbmctdG9vbF0sIFt2YWxhLWRidXMtYmluZGluZy10b29sX3ZlcnNpb25dLCBbZnNvQG9wZW5waG9lbnV4Lm9yZ10sIFt2YWxhLWRidXMtYmluZGluZy10b29sXSkKLStBQ19JTklUKFt2YWxhLWRidXMtYmluZGluZy10b29sXSwgW3ZhbGFfZGJ1c19iaW5kaW5nX3Rvb2xfdmVyc2lvbl0sIFtmc29Ab3BlbnBob2VudXgub3JnXSwgW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xdKQotIEFDX0NPTkZJR19TUkNESVIoW3NyYy9NYWtlZmlsZS5hbV0pCi0gQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0gQU1fSU5JVF9BVVRPTUFLRShbZGlzdC1iemlwMl0pCi0tLSAKLTIuMy41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbF8wLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbF8wLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTllM2RjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy92YWxhLWRidXMtYmluZGluZy10b29sL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfMC40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgdmFsYS1kYnVzLWJpbmRpbmctdG9vbC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gIjU5ZWFiN2FiZjM4ZjM1MzU1ZDM3ODY4MDNiZDI0NDFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlMzdhYjJlNjIzOGVhZWY5ZjU3MzU2MGVhNzM3OWU2OTU1NTcwZjdjOTUwMzA4M2U1MGM0YzE4NWMxOTU2ZGYiCi0KLVBOQkxBQ0tMSVNUW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMxNjI4LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy92YWxhLWRidXMtYmluZGluZy10b29sL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmYzNDU1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wvdmFsYS1kYnVzLWJpbmRpbmctdG9vbF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIHZhbGEtZGJ1cy1iaW5kaW5nLXRvb2wuaW5jCi0KLSMgVGVtcG9yYXJ5IHJlbW92ZSBuZWdhdGl2ZSBwcmVmZXJlbmNlLCBiZWNhdXNlIHRoZXJlIGFyZSAyIHZlcnNpb25zIG9mIDAuNC4wIGFyY2hpdmVzOgotIyB0aGUgb3JpZ2luYWwgb25lIGRlcGVuZGluZyBvbiBsaWJnZWUxLjAgZnJvbQotIyBodHRwOi8vZG93bmxvYWRzLmZyZWVzbWFydHBob25lLm9yZy9zb3VyY2VzLyR7QlBOfS8ke0JQfS50YXIuYnoyCi0jIGFuZCBuZXcgb25lIGRlcGVuZGluZyBvbiBsaWJnZWUwLjggZnJvbQotIyBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZyZWVzbWFydHBob25lL2ZpbGVzL3NvdXJjZXMvCi0jIFRoZSBvcmlnaW5hbCBvbmUgY2FuIGJlIGFscmVhZHkgZGVwbG95ZWQgb24gdmFyaW91cyBwcmVtaXJyb3JzLAotIyBzbyBwcmVmZXIgdGhlIGdpdCByZWNpcGUgd2hpY2ggZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIGlzc3VlCi0jIERFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQotU1JDUkVWID0gIjc0MmMwNGMyYmIwNzQzODkxOTA0NTIyY2U0N2U1MGY5ZTVjOTliMTIiCi1QViA9ICIwLjQuMCtnaXRyJHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mcmVlc21hcnRwaG9uZS92YWxhLWRidXMtYmluZGluZy10b29sLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LXVzZS1kYXNoLWluLW00LW1hY3JvLW5hbWVzLnBhdGNoIFwKLSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVBOQkxBQ0tMSVNUW3ZhbGEtZGJ1cy1iaW5kaW5nLXRvb2xdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNTgxLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3htbHJwYy1jL3htbHJwYy1jLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWMvMDAwMS1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0ZDY5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3htbHJwYy1jL3htbHJwYy1jLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gOTUwYjI3ZjgzMjBiODQxNDkwY2FmY2IzZTZlM2I4MThjNzE3NGMwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjAgSnVsIDIwMTcgMjI6MzI6NTAgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNvbXBpbGUgZmFpbHVyZSBhZ2FpbnN0IG11c2wgQyBsaWJyYXJ5CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0L2NwcC9zZXJ2ZXJfYWJ5c3MuY3BwICAgICAgICAgICAgICAgfCAgMiArLQorIHRvb2xzL3htbHJwY19wc3RyZWFtL3htbHJwY19wc3RyZWFtLmNwcCB8IDEwICsrKysrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3QvY3BwL3NlcnZlcl9hYnlzcy5jcHAgYi90ZXN0L2NwcC9zZXJ2ZXJfYWJ5c3MuY3BwCitpbmRleCAyNDU4YThmLi44MmY5MWRhIDEwMDY0NAorLS0tIGEvdGVzdC9jcHAvc2VydmVyX2FieXNzLmNwcAorKysrIGIvdGVzdC9jcHAvc2VydmVyX2FieXNzLmNwcAorQEAgLTE4LDcgKzE4LDcgQEAKKyAjaWZkZWYgV0lOMzIKKyAgICNpbmNsdWRlIDx3aW5zb2NrMi5oPgorICNlbHNlCistICAjaW5jbHVkZSA8c3lzL3VuaXN0ZC5oPgorKyAgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAgICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyAgICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CitkaWZmIC0tZ2l0IGEvdG9vbHMveG1scnBjX3BzdHJlYW0veG1scnBjX3BzdHJlYW0uY3BwIGIvdG9vbHMveG1scnBjX3BzdHJlYW0veG1scnBjX3BzdHJlYW0uY3BwCitpbmRleCBkMzllMTA1Li4xZmQ4OTAwIDEwMDY0NAorLS0tIGEvdG9vbHMveG1scnBjX3BzdHJlYW0veG1scnBjX3BzdHJlYW0uY3BwCisrKysgYi90b29scy94bWxycGNfcHN0cmVhbS94bWxycGNfcHN0cmVhbS5jcHAKK0BAIC0xNSwxMSArMTUsMTUgQEAKKyAjaW5jbHVkZSAieG1scnBjLWMvZ2lyZXJyLmhwcCIKKyB1c2luZyBnaXJlcnI6OnRocm93ZjsKKyAKKy0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4gIC8vIGZvciBfX0JFR0lOX0RFQ0xTCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisgCistX19CRUdJTl9ERUNMUworICNpbmNsdWRlICJkdW1wdmFsdWUuaCIgIC8qIEFuIGludGVybmFsIFhtbHJwYy1jIGhlYWRlciBmaWxlICEgKi8KKy1fX0VORF9ERUNMUworKworKyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKyAKKyAKKyAjaW5jbHVkZSA8eG1scnBjLWMvYmFzZS5ocHA+CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3htbHJwYy1jL3htbHJwYy1jLzAwMDItZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWMvMDAwMi1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5MmU0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3htbHJwYy1jL3htbHJwYy1jLzAwMDItZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMTRmMTVjYjBmMDNkZWZhOGVmYjRjOGUyZmVjZTU4ZTUwNjU1YmU2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMjMgSnVsIDIwMTcgMjI6MjA6MjkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL3htbHJwY19zZXJ2ZXJfYWJ5c3MuYzogZml4IGZvcm1hdHRpbmcgaXNzdWVzCisKK0ZpeGVkIHdoZW4gY29tcGlsZSB3aXRoICItV2Zvcm1hdCAtV2Zvcm1hdC1zZWN1cml0eSAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSI6Cit8c3JjL3htbHJwY19zZXJ2ZXJfYWJ5c3MuYzo3NzE6MTM6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwKK2FuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICAgICAgeG1scnBjX2ZhdWx0ZihlbnZQLCBlcnJvcik7Cit8ICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy94bWxycGNfc2VydmVyX2FieXNzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMveG1scnBjX3NlcnZlcl9hYnlzcy5jIGIvc3JjL3htbHJwY19zZXJ2ZXJfYWJ5c3MuYworaW5kZXggMjM4ODY1Mi4uMzg0M2YxMCAxMDA2NDQKKy0tLSBhL3NyYy94bWxycGNfc2VydmVyX2FieXNzLmMKKysrKyBiL3NyYy94bWxycGNfc2VydmVyX2FieXNzLmMKK0BAIC03NjgsNyArNzY4LDcgQEAgY3JlYXRlU2VydmVyKHhtbHJwY19lbnYgKiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnZQLAorICAgICAgICAgU2VydmVySW5pdDIoYWJ5c3NTZXJ2ZXJQLCAmZXJyb3IpOworIAorICAgICAgICAgaWYgKGVycm9yKSB7CistICAgICAgICAgICAgeG1scnBjX2ZhdWx0ZihlbnZQLCBlcnJvcik7CisrICAgICAgICAgICAgeG1scnBjX2ZhdWx0ZihlbnZQLCAiJXMiLCBlcnJvcik7CisgICAgICAgICAgICAgeG1scnBjX3N0cmZyZWUoZXJyb3IpOworICAgICAgICAgfQorICAgICB9CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3htbHJwYy1jL3htbHJwYy1jXzEuMzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3htbHJwYy1jL3htbHJwYy1jXzEuMzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmE1OGYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveG1scnBjLWMveG1scnBjLWNfMS4zMS4wLmJiCkBAIC0wLDAgKzEsMjQgQEAKK0RFU0NSSVBUSU9OID0gIlhNTC1SUEMgZm9yIEMvQysrIGlzIHByb2dyYW1taW5nIGxpYnJhcmllcyBhbmQgcmVsYXRlZCB0b29scyB0byBoZWxwIHlvdSBcCit3cml0ZSBhbiBYTUwtUlBDIHNlcnZlciBvciBjbGllbnQgaW4gQyBvciBDKysuIgorCitIT01FUEFHRSA9ICJodHRwOi8veG1scnBjLWMuc291cmNlZm9yZ2UubmV0LyIKK0xJQ0VOU0UgPSAiQlNEICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWFlZmJmODFiYTA3NTBmMDIxNzZiNmY4Njc1MmVhOTUxIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZW5zYy94bWxycGMtYy5naXQ7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCisiCitTUkNSRVYgPSAiODE0NDNhOWRjMjM0Y2MyNzU0NDlkYmMxNzg2N2FkNzdhZTE4OTEyNCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiY3VybCBsaWJ4bWwyIgorUkRFUEVORFNfJHtQTn0gPSAiY3VybCBwZXJsIgorCitpbmhlcml0IGNtYWtlCisKK0VYVFJBX09FQ01BS0UgPSAiLURfbGliOlNUUklORz0ke2Jhc2VsaWJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworVEFSR0VUX0NGTEFHUyArPSAiLVduby1uYXJyb3dpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy42LjMzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYm9pbmMvYm9pbmMtY2xpZW50XzcuNi4zMy5iYgppbmRleCBhYzVmNzU1Li45OWI0M2ZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy42LjMzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2JvaW5jL2JvaW5jLWNsaWVudF83LjYuMzMuYmIKQEAgLTM5LDcgKzM5LDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0MzdiNGI5OGUzODRiNGJkYTRlZjcwNTZlNjgxNjZhYyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNGIxYzI5Yjk2NTUwMTNlMGFjNjFkZGRmNDdhZDdmMzBmMzhjNDYxNTlmMDJhOWQ5ZGM4YWI4NTRlOTlhYTZkIgogCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJvcGVuZ2wiCiAKIFMgPSAiJHtXT1JLRElSfS8ke0JQTn1fcmVsZWFzZS03LjYtJHtQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmRhZmQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQmVya2VsZXkgTEFMUiBZYWNjIHBhcnNlciBnZW5lcmF0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvYnlhY2MvIgorREVTQ1JJUFRJT04gPSAiQSBwYXJzZXIgZ2VuZXJhdG9yIHV0aWxpdHkgdGhhdCByZWFkcyBhIGdyYW1tYXIgc3BlY2lmaWNhdGlvbiBmcm9tIGEgZmlsZSBhbmQgZ2VuZXJhdGVzIGFuIExSKDEpIFwKK3BhcnNlciBmb3IgaXQuICBUaGUgcGFyc2VycyBjb25zaXN0IG9mIGEgc2V0IG9mIExBTFIoMSkgcGFyc2luZyB0YWJsZXMgYW5kIGEgZHJpdmVyIHJvdXRpbmUgd3JpdHRlbiBpbiB0aGUgQyBcCitwcm9ncmFtbWluZyBsYW5ndWFnZS4iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJQRCIKKworU1JDX1VSSSA9ICJmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9ieWFjYy9ieWFjYy0ke1BWfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vYnlhY2Mtb3Blbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ5YWNjLWRvLW5vdC1yZW9yZGVyLUNDLWFuZC1DRkxBR1MucGF0Y2giCisKK0VYVFJBX09FQ09ORiArPSAiLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSdzLF4sYiwnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZG9fY29uZmlndXJlKCkgeworCWluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KKwlpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQorCW9lX3J1bmNvbmYKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLzAwMDEtYnlhY2MtZG8tbm90LXJlb3JkZXItQ0MtYW5kLUNGTEFHUy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjL2J5YWNjLW9wZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy9ieWFjYy1vcGVuLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjL2J5YWNjLW9wZW4ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjL2J5YWNjLW9wZW4ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTcwMjAxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNzAyMDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAyYzRjOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTcwMjAxLmJiCkBAIC0wLDAgKzEsMTIgQEAKKyMgU2lnaC4gVGhpcyBpcyBvbmUgb2YgdGhvc2UgcGxhY2VzIHdoZXJlIGV2ZXJ5b25lIGxpY2Vuc2VzIGl0IGRpZmZlcmVudGx5LiBTb21lb25lCisjIGV2ZW4gYXBwbHkgVUNCIHRvIGl0IChGcmVlL05ldC9PcGVuQlNEKS4gVGhlIG1haW50YWluZXIgc3RhdGVzIHRoYXQ6CisjICJJJ3ZlIGZvdW5kIG5vIHJlbGlhYmxlIHNvdXJjZSB3aGljaCBzdGF0ZXMgdGhhdCBieWFjYyBtdXN0IGJlYXIgYSBVQ0IgY29weXJpZ2h0LiIKKyMgU2V0dGluZyB0byBQRCBhcyB0aGlzIGlzIHdoYXQgdGhlIHVwc3RyZWFtIGhhcyBpdCBhcy4KKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodDttZDU9OTE3NmJmYjE2ZGFiNDNlYmNiOGU1MGQ5ZWU5NTUwYjYiCityZXF1aXJlIGJ5YWNjLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiNGJiMjc0YmJkN2I2NDhkNDI1MWMyYjljYTM2ZWQwYzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTBiNzY4ZDE3N2Y5MTIwNGU2ZTdjZWYyMjZhZTFkYzdjYWM4MzFiNjI1Nzc0Y2ViZDNlMjMzYTkxNzc1NGY5MSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoCmluZGV4IDcwYjA5ODMuLjUwNjlhNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2gKQEAgLTEsMTQgKzEsMTggQEAKLUZyb20gMTRkNDY5YmM4MmM3NTgxMTZhZWY3ZDU0OWFiZDQ5YzEzMWI0MTcwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjQ1OWM1NWU0OTY4MzIxZTVhODIyNzJjYjM5YWE2OWQ0MDU0OTkwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDIyIEFwciAyMDE3IDExOjU0OjU3IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQ2hlY2sgZm9yIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24gY29tcGlsZXIKICBvcHRpb24KIAogSWYgdGhpcyBvcHRpb24gaXMgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyIHRoZW4gZGlzYWJsZSBpdCAoIGdjYzcrKQorVXNlIC1XZXJyb3IgdG8gZWxldmF0ZSB0aGUgd2FybmluZyB0byBhbiBlcnJvciBpbiBjYXNlIGNvbXBpbGVyIGxpa2UgY2xhbmcKK3doaWNoIHdhcm4gYWJvdXQgdW5rbm93biBvcHRpb25zIGJ1dCBub3QgZXJyb3Igb3V0IHVubGVzcyBhc2tlZCBmb3IKKwogRml4ZXMKIGNsaWVudC5jOjgzNDoyMzogZXJyb3I6ICclcycgZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIHdyaXRpbmcgdXAgdG8gMTAyMyBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgMTAxMCBbLVdlcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbj1dCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICB8ICAzICstCiAgbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00IHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCkBAIC0xNiw3ICsyMCw3IEBACiAgY3JlYXRlIG1vZGUgMTAwNjQ0IG00L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNAogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4ODU0NTQyLi5mM2E2YjU3IDEwMDY0NAoraW5kZXggODg1NDU0Mi4uZWRiOGNmYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtNCw3ICs0LDYgQEAgQUNfSU5JVChbY29sbGVjdGRdLFttNF9lc3lzY21kKC4vdmVyc2lvbi1nZW4uc2gpXSkKQEAgLTMxLDcgKzM1LDcgQEAKICAgICAgICAgIEFNX0NGTEFHUz0iJEFNX0NGTEFHUyAtV2Vycm9yIgogICAgICAgICAgQU1fQ1hYRkxBR1M9IiRBTV9DWFhGTEFHUyAtV2Vycm9yIgogIGZpCi0rQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKFstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uXSxbQU1fQ0ZMQUdTPSIkQU1fQ0ZMQUdTIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24iIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiJdKQorK0FYX0NIRUNLX0NPTVBJTEVfRkxBRyhbLVdlcnJvciAtV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uXSxbQU1fQ0ZMQUdTPSIkQU1fQ0ZMQUdTIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24iIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiJdKQogKwogIEFDX1NVQlNUKFtBTV9DRkxBR1NdKQogIEFDX1NVQlNUKFtBTV9DWFhGTEFHU10pCkBAIC0xMTcsNSArMTIxLDUgQEAKICtBU19WQVJfUE9QREVGKFtDQUNIRVZBUl0pZG5sCiArXSlkbmwgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHUwogLS0gCi0yLjEyLjIKKzIuMTMuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZF81LjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzc4OWM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotU1VNTUFSWSA9ICJDb2xsZWN0cyBhbmQgc3VtbWFyaXNlcyBzeXN0ZW0gcGVyZm9ybWFuY2Ugc3RhdGlzdGljcyIKLURFU0NSSVBUSU9OID0gImNvbGxlY3RkIGlzIGEgZGFlbW9uIHdoaWNoIGNvbGxlY3RzIHN5c3RlbSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzIHBlcmlvZGljYWxseSBhbmQgcHJvdmlkZXMgbWVjaGFuaXNtcyB0byBzdG9yZSB0aGUgdmFsdWVzIGluIGEgdmFyaWV0eSBvZiB3YXlzLCBmb3IgZXhhbXBsZSBpbiBSUkQgZmlsZXMuIgotTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFiZDIxZjE5ZjdmMGM2MWE3YmU4ZWNhY2IwZTI4ODU0IgotCi1ERVBFTkRTID0gInJyZHRvb2wgY3VybCBsaWJwY2FwIGxpYnhtbDIgeWFqbCBsaWJnY3J5cHQgbGlidG9vbCBsdm0yIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jb2xsZWN0ZC5vcmcvZmlsZXMvY29sbGVjdGQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb2xsZWN0ZC5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2NvbGxlY3RkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbm8tZ2NyeXB0LWJhZHBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25kaXRpb25hbGx5LWNoZWNrLWxpYnZpcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtdG8tYnVpbGQtd2l0aC1nbGliYy0yLjI1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZGMzNjE0MWVkMzA1OGM0OTE5YmJkNTRiODdjMDc4NzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2VkZDM2NDNjMDg0MjIxNTU1M2IyNDIxZDU0NTZmNGU5YThhNThiMDdlMjE2YjQwYTdlOGU5MTAyNmQ4ZTUwMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9ubmF0aXZlIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjb2xsZWN0ZC5zZXJ2aWNlIgotCi0jIEZsb2F0aW5ncG9pbnQgbGF5b3V0LCBhcmNoaXRlY3R1cmUgZGVwZW5kZW50Ci0jICdub3RoaW5nJywgJ2VuZGlhbmZsaXAnIG9yICdpbnRzd2FwJwotRlBMQVlPVVQgPz0gIi0td2l0aC1mcC1sYXlvdXQ9bm90aGluZyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbb3Blbmpka10gPSAiLS13aXRoLWphdmE9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtsaWJkaXJ9L2p2bSwtLXdpdGhvdXQtamF2YSxvcGVuamRrLTciCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAgLS13aXRoLWxpYm5ldHNubXA9bm8sbmV0LXNubXAiCi1QQUNLQUdFQ09ORklHW2xpYm1lbWNhY2hlZF0gPSAiLS13aXRoLWxpYm1lbWNhY2hlZCwtLXdpdGhvdXQtbGlibWVtY2FjaGVkLGxpYm1lbWNhY2hlZCIKLVBBQ0tBR0VDT05GSUdbaXB0YWJsZXNdID0gIi0tZW5hYmxlLWlwdGFibGVzLC0tZGlzYWJsZS1pcHRhYmxlcyxpcHRhYmxlcyIKLVBBQ0tBR0VDT05GSUdbcG9zdGdyZXNxbF0gPSAiLS1lbmFibGUtcG9zdGdyZXNxbCAtLXdpdGgtbGlicHE9eWVzLCBcCi0gICAgICAgIC0tZGlzYWJsZS1wb3N0Z3Jlc3FsIC0td2l0aC1saWJwcT1ubyxwb3N0Z3Jlc3FsIgotUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS1lbmFibGUtbXlzcWwgLS13aXRoLWxpYm15c3FsPXllcywgXAotICAgICAgICAtLWRpc2FibGUtbXlzcWwgLS13aXRoLWxpYm15c3FsPW5vLG15c3FsNSIKLVBBQ0tBR0VDT05GSUdbZGJpXSA9ICItLWVuYWJsZS1kYmksLS1kaXNhYmxlLWRiaSxsaWJkYmkiCi1QQUNLQUdFQ09ORklHW21vZGJ1c10gPSAiLS1lbmFibGUtbW9kYnVzLC0tZGlzYWJsZS1tb2RidXMsbGlibW9kYnVzIgotUEFDS0FHRUNPTkZJR1tsaWJvd2NhcGldID0gIi0td2l0aC1saWJvd2NhcGksLS13aXRob3V0LWxpYm93Y2FwaSxvd2ZzIgotUEFDS0FHRUNPTkZJR1tzZW5zb3JzXSA9ICItLWVuYWJsZS1zZW5zb3JzIC0td2l0aC1saWJzZW5zb3JzPXllcywgXAotICAgICAgICAtLWRpc2FibGUtc2Vuc29ycyAtLXdpdGgtbGlic2Vuc29ycz1ubyxsbXNlbnNvcnMiCi1QQUNLQUdFQ09ORklHW2FtcXBdID0gIi0tZW5hYmxlLWFtcXAgLS13aXRoLWxpYnJhYmJpdG1xPXllcywgXAotICAgICAgICAtLWRpc2FibGUtYW1xcCAtLXdpdGgtbGlicmFiYml0bXE9bm8scmFiYml0bXEtYyIKLSMgcHJvdG9idWYtYywgbGlidmlydCB0aGF0IGFyZSBjdXJyZW50bHkgb25seSBhdmFpbGFibGUgaW4gbWV0YS12aXJ0dWFsaXphdGlvbiBsYXllcgotUEFDS0FHRUNPTkZJR1twaW5iYV0gPSAiLS1lbmFibGUtcGluYmEsLS1kaXNhYmxlLXBpbmJhLHByb3RvYnVmLWMtbmF0aXZlIHByb3RvYnVmLWMiCi1QQUNLQUdFQ09ORklHW2xpYnZpcnRdID0gIi0tZW5hYmxlLWxpYnZpcnQsLS1kaXNhYmxlLWxpYnZpcnQsbGlidmlydCIKLVBBQ0tBR0VDT05GSUdbbGliZXNtdHBdID0gIi0td2l0aC1saWJlc210cCwtLXdpdGhvdXQtbGliZXNtdHAsbGliZXNtdHAiCi1QQUNLQUdFQ09ORklHW2xpYm1ubF0gPSAiLS13aXRoLWxpYm1ubCwtLXdpdGhvdXQtbGlibW5sLGxpYm1ubCIKLVBBQ0tBR0VDT05GSUdbbGliYXRhc21hcnRdID0gIi0td2l0aC1saWJhdGFzbWFydCwtLXdpdGhvdXQtbGliYXRhc21hcnQsbGliYXRhc21hcnQiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLW9wZW5sZGFwIC0td2l0aC1saWJsZGFwLC0tZGlzYWJsZS1vcGVubGRhcCAtLXdpdGhvdXQtbGlibGRhcCwgb3BlbmxkYXAiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgICR7RlBMQVlPVVR9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGVybCAtLXdpdGgtbGlicGVybD1ubyAtLXdpdGgtcGVybC1iaW5kaW5ncz1ubyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWxpYmdjcnlwdD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9saWJnY3J5cHQtY29uZmlnIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbm90aWZ5X2Rlc2t0b3AgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2NvbGxlY3RkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCi0gICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCi0gICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKLSAgICBzZWQgLWkgJ3MhXlBBVEg9LiohUEFUSD0ke2Jhc2Vfc2JpbmRpcn06JHtiYXNlX2JpbmRpcn06JHtzYmluZGlyfToke2JpbmRpcn0hJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKLQotICAgICMgRml4IGNvbmZpZ3VyYXRpb24gZmlsZSB0byBhbGxvdyBjb2xsZWN0ZCB0byBzdGFydCB1cAotICAgIHNlZCAtaSAncyFeI0ZRRE5Mb29rdXBbIFx0XSp0cnVlIUZRRE5Mb29rdXAgICBmYWxzZSFnJyAke0R9JHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mCi0KLSAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLQotICAgICMgSW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY29sbGVjdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2NvbGxlY3RkLnNlcnZpY2UKLX0KLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vY29sbGVjdGQuY29uZiIKLQotSU5JVFNDUklQVF9OQU1FID0gImNvbGxlY3RkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLSMgdGhyZXNob2xkLnNvIGxvYWQuc28gYXJlIGFsc28gcHJvdmlkZWQgYnkgZ2VnbAotIyBkaXNrLnNvIGlzIGFsc28gcHJvdmlkZWQgYnkgbGliZ3Bob3RvMi1jYW1saWJzCi1QUklWQVRFX0xJQlMgPSAidGhyZXNob2xkLnNvIGxvYWQuc28gZGlzay5zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuNy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS43LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1NmVhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuNy4yLmJiCkBAIC0wLDAgKzEsODYgQEAKK1NVTU1BUlkgPSAiQ29sbGVjdHMgYW5kIHN1bW1hcmlzZXMgc3lzdGVtIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MiCitERVNDUklQVElPTiA9ICJjb2xsZWN0ZCBpcyBhIGRhZW1vbiB3aGljaCBjb2xsZWN0cyBzeXN0ZW0gcGVyZm9ybWFuY2Ugc3RhdGlzdGljcyBwZXJpb2RpY2FsbHkgYW5kIHByb3ZpZGVzIG1lY2hhbmlzbXMgdG8gc3RvcmUgdGhlIHZhbHVlcyBpbiBhIHZhcmlldHkgb2Ygd2F5cywgZm9yIGV4YW1wbGUgaW4gUlJEIGZpbGVzLiIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xYmQyMWYxOWY3ZjBjNjFhN2JlOGVjYWNiMGUyODg1NCIKKworREVQRU5EUyA9ICJycmR0b29sIGN1cmwgbGlicGNhcCBsaWJ4bWwyIHlhamwgbGliZ2NyeXB0IGxpYnRvb2wgbHZtMiIKKworU1JDX1VSSSA9ICJodHRwOi8vY29sbGVjdGQub3JnL2ZpbGVzL2NvbGxlY3RkLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vY29sbGVjdGQuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9jb2xsZWN0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25vLWdjcnlwdC1iYWRwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZGl0aW9uYWxseS1jaGVjay1saWJ2aXJ0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjVkYTJiNjljMjg2YTA2NGRiMzVjNmNjMWU3NThiMDM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkMjBhMDIyMTU2OWE4ZDZiODBiYmM1MmI4NmU1ZTg0OTY1ZjViYWZkYmY1ZGZjMzc5MGUwZmVkMDc2M2U1OTIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbm5hdGl2ZSB1cGRhdGUtcmMuZCBwa2djb25maWcgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29sbGVjdGQuc2VydmljZSIKKworIyBGbG9hdGluZ3BvaW50IGxheW91dCwgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudAorIyAnbm90aGluZycsICdlbmRpYW5mbGlwJyBvciAnaW50c3dhcCcKK0ZQTEFZT1VUID89ICItLXdpdGgtZnAtbGF5b3V0PW5vdGhpbmciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW29wZW5qZGtdID0gIi0td2l0aC1qYXZhPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7bGliZGlyfS9qdm0sLS13aXRob3V0LWphdmEsb3Blbmpkay03IgorUEFDS0FHRUNPTkZJR1tzbm1wXSA9ICItLWVuYWJsZS1zbm1wLC0tZGlzYWJsZS1zbm1wIC0td2l0aC1saWJuZXRzbm1wPW5vLG5ldC1zbm1wIgorUEFDS0FHRUNPTkZJR1tsaWJtZW1jYWNoZWRdID0gIi0td2l0aC1saWJtZW1jYWNoZWQsLS13aXRob3V0LWxpYm1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCitQQUNLQUdFQ09ORklHW2lwdGFibGVzXSA9ICItLWVuYWJsZS1pcHRhYmxlcywtLWRpc2FibGUtaXB0YWJsZXMsaXB0YWJsZXMiCitQQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0tZW5hYmxlLXBvc3RncmVzcWwgLS13aXRoLWxpYnBxPXllcywgXAorICAgICAgICAtLWRpc2FibGUtcG9zdGdyZXNxbCAtLXdpdGgtbGlicHE9bm8scG9zdGdyZXNxbCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsIC0td2l0aC1saWJteXNxbD15ZXMsIFwKKyAgICAgICAgLS1kaXNhYmxlLW15c3FsIC0td2l0aC1saWJteXNxbD1ubyxteXNxbDUiCitQQUNLQUdFQ09ORklHW2RiaV0gPSAiLS1lbmFibGUtZGJpLC0tZGlzYWJsZS1kYmksbGliZGJpIgorUEFDS0FHRUNPTkZJR1ttb2RidXNdID0gIi0tZW5hYmxlLW1vZGJ1cywtLWRpc2FibGUtbW9kYnVzLGxpYm1vZGJ1cyIKK1BBQ0tBR0VDT05GSUdbbGlib3djYXBpXSA9ICItLXdpdGgtbGlib3djYXBpLC0td2l0aG91dC1saWJvd2NhcGksb3dmcyIKK1BBQ0tBR0VDT05GSUdbc2Vuc29yc10gPSAiLS1lbmFibGUtc2Vuc29ycyAtLXdpdGgtbGlic2Vuc29ycz15ZXMsIFwKKyAgICAgICAgLS1kaXNhYmxlLXNlbnNvcnMgLS13aXRoLWxpYnNlbnNvcnM9bm8sbG1zZW5zb3JzIgorUEFDS0FHRUNPTkZJR1thbXFwXSA9ICItLWVuYWJsZS1hbXFwIC0td2l0aC1saWJyYWJiaXRtcT15ZXMsIFwKKyAgICAgICAgLS1kaXNhYmxlLWFtcXAgLS13aXRoLWxpYnJhYmJpdG1xPW5vLHJhYmJpdG1xLWMiCisjIHByb3RvYnVmLWMsIGxpYnZpcnQgdGhhdCBhcmUgY3VycmVudGx5IG9ubHkgYXZhaWxhYmxlIGluIG1ldGEtdmlydHVhbGl6YXRpb24gbGF5ZXIKK1BBQ0tBR0VDT05GSUdbcGluYmFdID0gIi0tZW5hYmxlLXBpbmJhLC0tZGlzYWJsZS1waW5iYSxwcm90b2J1Zi1jLW5hdGl2ZSBwcm90b2J1Zi1jIgorUEFDS0FHRUNPTkZJR1tsaWJ2aXJ0XSA9ICItLWVuYWJsZS1saWJ2aXJ0LC0tZGlzYWJsZS1saWJ2aXJ0LGxpYnZpcnQiCitQQUNLQUdFQ09ORklHW2xpYmVzbXRwXSA9ICItLXdpdGgtbGliZXNtdHAsLS13aXRob3V0LWxpYmVzbXRwLGxpYmVzbXRwIgorUEFDS0FHRUNPTkZJR1tsaWJtbmxdID0gIi0td2l0aC1saWJtbmwsLS13aXRob3V0LWxpYm1ubCxsaWJtbmwiCitQQUNLQUdFQ09ORklHW2xpYmF0YXNtYXJ0XSA9ICItLXdpdGgtbGliYXRhc21hcnQsLS13aXRob3V0LWxpYmF0YXNtYXJ0LGxpYmF0YXNtYXJ0IgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1vcGVubGRhcCAtLXdpdGgtbGlibGRhcCwtLWRpc2FibGUtb3BlbmxkYXAgLS13aXRob3V0LWxpYmxkYXAsIG9wZW5sZGFwIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAke0ZQTEFZT1VUfSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXBlcmwgLS13aXRoLWxpYnBlcmw9bm8gLS13aXRoLXBlcmwtYmluZGluZ3M9bm8gXAorICAgICAgICAgICAgICAgIC0td2l0aC1saWJnY3J5cHQ9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbGliZ2NyeXB0LWNvbmZpZyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5vdGlmeV9kZXNrdG9wIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jb2xsZWN0ZC5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAorICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAorICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKyAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCisgICAgc2VkIC1pICdzIV5QQVRIPS4qIVBBVEg9JHtiYXNlX3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7c2JpbmRpcn06JHtiaW5kaXJ9IScgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCisKKyAgICAjIEZpeCBjb25maWd1cmF0aW9uIGZpbGUgdG8gYWxsb3cgY29sbGVjdGQgdG8gc3RhcnQgdXAKKyAgICBzZWQgLWkgJ3MhXiNGUUROTG9va3VwWyBcdF0qdHJ1ZSFGUUROTG9va3VwICAgZmFsc2UhZycgJHtEfSR7c3lzY29uZmRpcn0vY29sbGVjdGQuY29uZgorCisgICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisKKyAgICAjIEluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2NvbGxlY3RkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jb2xsZWN0ZC5zZXJ2aWNlCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJjb2xsZWN0ZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCisjIHRocmVzaG9sZC5zbyBsb2FkLnNvIGFyZSBhbHNvIHByb3ZpZGVkIGJ5IGdlZ2wKKyMgZGlzay5zbyBpcyBhbHNvIHByb3ZpZGVkIGJ5IGxpYmdwaG90bzItY2FtbGlicworUFJJVkFURV9MSUJTID0gInRocmVzaG9sZC5zbyBsb2FkLnNvIGRpc2suc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jXzIuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGFmMDA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jXzIuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgYW5kIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIENvcm9zeW5jIENsdXN0ZXIgRW5naW5lIEV4ZWN1dGl2ZSwgc2V2ZXJhbCBkZWZhdWx0IFwKLUFQSXMgYW5kIGxpYnJhcmllcywgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgYW4gaW5pdCBzY3JpcHQuIgotSE9NRVBBR0UgPSAiaHR0cDovL2Nvcm9zeW5jLmdpdGh1Yi5pby9jb3Jvc3luYy8iCi0KLVNFQ1RJT04gPSAiYmFzZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKLQotU1JDX1VSSSA9ICJodHRwOi8vYnVpbGQuY2x1c3RlcmxhYnMub3JnL2Nvcm9zeW5jL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItRl8tYW5kLU9fLWRlZmluZXMucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NDdmYTc4NzA0ZGE1M2FhMzU5MTJiZTU4ZDMxMDM1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMjZlMzAxMTMwOWZlNGJjY2U5NGIxZGMyMGVhOGM0NjJmMTk0ODNhNzNmM2NhNjJmMTNiOTI1ZDAxMWE0YmE5IgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE4NWViNGNlMjQwMzNhZGI2MDg4ZGQxZDZmZmM1ZTVkIgotCi1ERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSBuc3MgbGlicWIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjb3Jvc3luYy5zZXJ2aWNlIGNvcm9zeW5jLW5vdGlmeWQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgotCi1JTklUU0NSSVBUX05BTUUgPSAiY29yb3N5bmMtZGFlbW9uIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRkaXIsc3lzdGVtZCIKLQotRVhUUkFfT0VDT05GID0gImFjX2N2X3BhdGhfQkFTSFBBVEg9JHtiYXNlX2JpbmRpcn0vYmFzaCIKLUVYVFJBX09FTUFLRSA9ICJ0bXBmaWxlc2Rpcl9EQVRBPSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgKCBjZCAke1N9Ci0gICAgJHtTfS9hdXRvZ2VuLnNoICkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9jb3Jvc3luYy5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9jb3Jvc3luYy1ub3RpZnlkLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYy1ub3RpZnlkCi0KLSAgICBybSAtcmYgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLSAgICBlY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgbm9uZSIgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYwotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9jbHVzdGVyIC0gLSAtIC0iID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9jb3Jvc3luYy5jb25mCi0gICAgZmkKLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9sY3Jzby8uZGVidWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kaWFsb2cvZGlhbG9nXzEuMy0yMDE2MDgyOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTYwODI4LmJiCmluZGV4IGJmZjNkOTcuLjg1ZGVkZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTYwODI4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTYwODI4LmJiCkBAIC04LDcgKzgsNyBAQAogTElDRU5TRSA9ICJMR1BMLTIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgogCi1TUkNfVVJJID0gImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy9kaWFsb2ctJHtQVn0udGd6IFwKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmludmlzaWJsZS1pc2xhbmQubmV0LyR7QlBOfS8ke0JQfS50Z3ogXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJhMzllYzE4MzUxN2JjMWZlYWZmMDE3ZDA2NzMwMGI4YyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NTMwOTVhYmFlYzI4OGJmYmMxY2E5ZmFjZWQ5MTdlMTc3NDJjZmYxZWE0NWVjNDYyMTAwNzFhYzE1MzU2MmY5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyLzAwMDEtUmVtb3ZlLWV4dHJhLWNvbnN0LWtleXdvcmRzLWdjYy03LWdyaXBlcy1hYm91dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaWJvb3RtZ3IvZWZpYm9vdG1nci8wMDAxLVJlbW92ZS1leHRyYS1jb25zdC1rZXl3b3Jkcy1nY2MtNy1ncmlwZXMtYWJvdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MjExYzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyLzAwMDEtUmVtb3ZlLWV4dHJhLWNvbnN0LWtleXdvcmRzLWdjYy03LWdyaXBlcy1hYm91dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gYTlmOGQ0MTQ5NzJiMGI3Yzk2M2Q3ZWZlMzhiNWNmZGNiNjQxM2M0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgNiBGZWIgMjAxNyAxNjozNDo1NCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgZXh0cmEgY29uc3Qga2V5d29yZHMgZ2NjIDcgZ3JpcGVzIGFib3V0LgotCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+Ci0tLS0KLSBzcmMvZWZpYm9vdGR1bXAuYyB8IDIgKy0KLSBzcmMvZWZpYm9vdG1nci5jICB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2VmaWJvb3RkdW1wLmMgYi9zcmMvZWZpYm9vdGR1bXAuYwotaW5kZXggM2U0NDhjMi4uNWE5YjY4MSAxMDA2NDQKLS0tLSBhL3NyYy9lZmlib290ZHVtcC5jCi0rKysgYi9zcmMvZWZpYm9vdGR1bXAuYwotQEAgLTM2LDcgKzM2LDcgQEAgcHJpbnRfYm9vdF9lbnRyeShlZmlfbG9hZF9vcHRpb24gKmxvYWRvcHQsIHNpemVfdCBkYXRhX3NpemUpCi0gCXVpbnQ4X3QgKm9wdGlvbmFsX2RhdGEgPSBOVUxMOwotIAlzaXplX3Qgb3B0aW9uYWxfZGF0YV9sZW4gPSAwOwotIAl1aW50MTZfdCBwYXRobGVuOwotLQljb25zdCB1bnNpZ25lZCBjaGFyIGNvbnN0ICpkZXNjOwotKwljb25zdCB1bnNpZ25lZCBjaGFyICpkZXNjOwotIAljaGFyICpyYXc7Ci0gCXNpemVfdCByYXdfbGVuOwotIAotZGlmZiAtLWdpdCBhL3NyYy9lZmlib290bWdyLmMgYi9zcmMvZWZpYm9vdG1nci5jCi1pbmRleCBiYWVmYTY4Li42ODM2MjNiIDEwMDY0NAotLS0tIGEvc3JjL2VmaWJvb3RtZ3IuYwotKysrIGIvc3JjL2VmaWJvb3RtZ3IuYwotQEAgLTIxNCw3ICsyMTQsNyBAQCB3YXJuX2R1cGxpY2F0ZV9uYW1lKGxpc3RfdCAqYm9vdF9saXN0KQotIAlsaXN0X3QgKnBvczsKLSAJdmFyX2VudHJ5X3QgKmJvb3Q7Ci0gCWVmaV9sb2FkX29wdGlvbiAqbG9hZF9vcHRpb247Ci0tCWNvbnN0IHVuc2lnbmVkIGNoYXIgY29uc3QgKmRlc2M7Ci0rCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRlc2M7Ci0gCi0gCWxpc3RfZm9yX2VhY2gocG9zLCBib290X2xpc3QpIHsKLSAJCWJvb3QgPSBsaXN0X2VudHJ5KHBvcywgdmFyX2VudHJ5X3QsIGxpc3QpOwotQEAgLTgyMSw3ICs4MjEsNyBAQCBzaG93X2Jvb3RfdmFycygpCi0gewotIAlsaXN0X3QgKnBvczsKLSAJdmFyX2VudHJ5X3QgKmJvb3Q7Ci0tCWNvbnN0IHVuc2lnbmVkIGNoYXIgY29uc3QgKmRlc2NyaXB0aW9uOwotKwljb25zdCB1bnNpZ25lZCBjaGFyICpkZXNjcmlwdGlvbjsKLSAJZWZpX2xvYWRfb3B0aW9uICpsb2FkX29wdGlvbjsKLSAJZWZpZHAgZHAgPSBOVUxMOwotIAl1bnNpZ25lZCBjaGFyICpvcHRpb25hbF9kYXRhID0gTlVMTDsKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaWJvb3RtZ3IvZWZpYm9vdG1ncl8wLjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyXzAuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MzE1MGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyXzAuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJMaW51eCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIHRvIG1vZGlmeSB0aGUgRUZJIEJvb3QgTWFuYWdlci4iCi1TVU1NQVJZID0gIkVGSSBCb290IE1hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpYm9vdG1nciIKLVNFQ1RJT04gPSAiYmFzZSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKLQotREVQRU5EUyA9ICJwY2l1dGlscyB6bGliIGVmaXZhciIKLQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKLQotU1JDUkVWID0gIjc1ZDI1ODA3YmE4MWNiNzI0OTY0Yzk4OTAxMjYxMTI3MmM4ZjFmNWQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpYm9vdG1nci5naXQ7cHJvdG9jb2w9aHR0cHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtZXh0cmEtY29uc3Qta2V5d29yZHMtZ2NjLTctZ3JpcGVzLWFib3V0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLQotaW5oZXJpdCBwa2djb25maWcKLQotRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfScgJ0NGTEFHUz0ke0NGTEFHU30gLUkke1N9L3NyYy9pbmNsdWRlIGBwa2ctY29uZmlnIC0tY2ZsYWdzIGVmaXZhcmAgXAotICAgICAgICAgICAgICAgICAtREVGSUJPT1RNR1JfVkVSU0lPTj1cIiQoUkVMRUFTRV9NQUpPUikuJChSRUxFQVNFX01JTk9SKVwiICciCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IHNyYy9lZmlib290bWdyICR7RH0vJHtzYmluZGlyfS9lZmlib290bWdyCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaWJvb3RtZ3IvZWZpYm9vdG1ncl8wLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYzYyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xNS5iYgpAQCAtMCwwICsxLDI3IEBACitERVNDUklQVElPTiA9ICJMaW51eCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIHRvIG1vZGlmeSB0aGUgRUZJIEJvb3QgTWFuYWdlci4iCitTVU1NQVJZID0gIkVGSSBCb290IE1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpYm9vdG1nciIKK1NFQ1RJT04gPSAiYmFzZSIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKKworREVQRU5EUyA9ICJwY2l1dGlscyB6bGliIGVmaXZhciIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKKworU1JDUkVWID0gIjVjMTRkYTIyODAyNTc2YTk5ZWJiODU0ZjdhYTE3NGY3OTZmN2IwMzEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpYm9vdG1nci5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgcGtnY29uZmlnCisKK0VYVFJBX09FTUFLRSA9ICInRUZJRElSPS8nICdDQz0ke0NDfScgJ0NGTEFHUz0ke0NGTEFHU30gLUkke1N9L3NyYy9pbmNsdWRlIGBwa2ctY29uZmlnIC0tY2ZsYWdzIGVmaXZhcmAnIgorCitDRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLVduby1lcnJvciIKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1ICR7Qn0vc3JjL2VmaWJvb3RtZ3IgJHtEfS8ke3NiaW5kaXJ9L2VmaWJvb3RtZ3IKK30KKworQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1SZW1vdmUtc29tZS1leHRyYS1jb25zdC10aGF0LWdjYy1jb21wbGFpbnMtYWJvdXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtUmVtb3ZlLXNvbWUtZXh0cmEtY29uc3QtdGhhdC1nY2MtY29tcGxhaW5zLWFib3V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWU4Y2I5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1SZW1vdmUtc29tZS1leHRyYS1jb25zdC10aGF0LWdjYy1jb21wbGFpbnMtYWJvdXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDI5YTJkZWExNjExM2I1YThlNTFkZTQ2NDM3YzZhOWY3NDI2YzU4NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDYgRmViIDIwMTcgMTQ6Mjg6MTkgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFJlbW92ZSBzb21lIGV4dHJhICJjb25zdCIgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0LgotCi1PbmUgb2YgdGhlc2UgZGF5cyBJJ2xsIGdldCB0aGVzZSByaWdodC4KLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgotLS0tCi0gc3JjL2luY2x1ZGUvZWZpdmFyL2VmaWJvb3QtbG9hZG9wdC5oIHwgNCArKy0tCi0gc3JjL2xvYWRvcHQuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaWJvb3QtbG9hZG9wdC5oIGIvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaWJvb3QtbG9hZG9wdC5oCi1pbmRleCAwN2RiNWM0Li5lZmMyOWM2IDEwMDY0NAotLS0tIGEvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaWJvb3QtbG9hZG9wdC5oCi0rKysgYi9zcmMvaW5jbHVkZS9lZml2YXIvZWZpYm9vdC1sb2Fkb3B0LmgKLUBAIC0zMiw4ICszMiw4IEBAIGV4dGVybiBzc2l6ZV90IGVmaV9sb2Fkb3B0X2NyZWF0ZSh1aW50OF90ICpidWYsIHNzaXplX3Qgc2l6ZSwKLSAKLSBleHRlcm4gZWZpZHAgZWZpX2xvYWRvcHRfcGF0aChlZmlfbG9hZF9vcHRpb24gKm9wdCwgc3NpemVfdCBsaW1pdCkKLSAJX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18gKDEpKSk7Ci0tZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgY29uc3QgKiBlZmlfbG9hZG9wdF9kZXNjKGVmaV9sb2FkX29wdGlvbiAqb3B0LAotLQkJCQkJCSAgICBzc2l6ZV90IGxpbWl0KQotK2V4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyICogZWZpX2xvYWRvcHRfZGVzYyhlZmlfbG9hZF9vcHRpb24gKm9wdCwKLSsJCQkJCSAgICAgIHNzaXplX3QgbGltaXQpCi0gCV9fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKLSAJX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18gKDEpKSk7Ci0gZXh0ZXJuIHVpbnQzMl90IGVmaV9sb2Fkb3B0X2F0dHJzKGVmaV9sb2FkX29wdGlvbiAqb3B0KQotZGlmZiAtLWdpdCBhL3NyYy9sb2Fkb3B0LmMgYi9zcmMvbG9hZG9wdC5jCi1pbmRleCA2NGUzMzNmLi5lYzUwNzIyIDEwMDY0NAotLS0tIGEvc3JjL2xvYWRvcHQuYwotKysrIGIvc3JjL2xvYWRvcHQuYwotQEAgLTMzNiw3ICszMzYsNyBAQCB0ZWFyZG93bih2b2lkKQotIAotIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fICgxKSkpCi0gX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQotLWNvbnN0IHVuc2lnbmVkIGNoYXIgY29uc3QgKgotK2NvbnN0IHVuc2lnbmVkIGNoYXIgKgotIGVmaV9sb2Fkb3B0X2Rlc2MoZWZpX2xvYWRfb3B0aW9uICpvcHQsIHNzaXplX3QgbGltaXQpCi0gewotIAlpZiAobGFzdF9kZXNjKSB7Ci0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWRwLmgtQWRkLVd1bmtub3duLWF0dHJpYnV0ZXMtd2hlbi11c2luZy1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiODgxNWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWRwLmgtQWRkLVd1bmtub3duLWF0dHJpYnV0ZXMtd2hlbi11c2luZy1jbGFuZy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDNkNDNjNWVmZGI2MzJkYTVkNzM4N2RjYWRjZTRlODdiODM5MjljNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyNCBBdWcgMjAxNyAxNTo1NDo0NyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBlZml2YXItZHAuaDogQWRkIC1XdW5rbm93bi1hdHRyaWJ1dGVzIHdoZW4gdXNpbmcgY2xhbmcKKworY2hhbmdlICFkcCBjaGVjayB0byBhIGNvbXBhcmlzaW9uIGFnYWluc3QgTlVMTCB0byBzaWxlbnQgY2xhbmcgd2FybmluZworbm9ubnVsbCBwYXJhbWV0ZXIgJ2RwJyB3aWxsIGV2YWx1YXRlIHRvICd0cnVlJyBvbiBmaXJzdCBlbmNvdW50ZXIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaCB8IDEyICsrKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oCisrKysgZ2l0L3NyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaAorQEAgLTc4Myw5ICs3ODMsMTQgQEAgZXh0ZXJuIGludCBlZmlkcF9hcHBlbmRfaW5zdGFuY2UoY29uc3RfZQorICAqIHRob3VnaCBvbGRlciBvciBvdGhlciBjb21waWxlcnMgbWlnaHQganVzdCBpZ25vcmUgdGhhdCBhdHRyaWJ1dGUgaWYgdGhleQorICAqIGRvbid0IHN1cHBvcnQgaXQuICBVZ2guCisgICovCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDYKKyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xbm9ubnVsbC1jb21wYXJlIgorICNlbmRpZgorKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1hdHRyaWJ1dGVzIgorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdwb2ludGVyLWJvb2wtY29udmVyc2lvbiIKKysjZW5kaWYKKyAKKyBzdGF0aWMgaW5saW5lIGludDE2X3QKKyBfX2F0dHJpYnV0ZV9fKChfX2FydGlmaWNpYWxfXykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAxLW1ha2VndWlkcy1Eby1ub3QtdXNlLV9fYnN3YXBfY29uc3RhbnRfLTE2LTMyLW1hY3Jvcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2E3NzIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAxLW1ha2VndWlkcy1Eby1ub3QtdXNlLV9fYnN3YXBfY29uc3RhbnRfLTE2LTMyLW1hY3Jvcy5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDk4YjMzZDQxOTM5OTg2ODdhYTNhNzhjMDk3ZjdiZDRjMzkzZTBjODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAwMDoyOTo0MiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtYWtlZ3VpZHM6IERvIG5vdCB1c2UgX19ic3dhcF9jb25zdGFudF97MTZ8MzJ9IG1hY3JvcworCitub3QgYXZhaWxhYmxlIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tYWtlZ3VpZHMuYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2VndWlkcy5jIGIvc3JjL21ha2VndWlkcy5jCitpbmRleCBkYTJmNWY3Li5kYWY4MjFhIDEwMDY0NAorLS0tIGEvc3JjL21ha2VndWlkcy5jCisrKysgYi9zcmMvbWFrZWd1aWRzLmMKK0BAIC0xNTUsMTMgKzE1NSwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgI2lmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTlxuXAorICNkZWZpbmUgY3B1X3RvX2JlMzIobikgKG4pXG5cCisgI2RlZmluZSBjcHVfdG9fYmUxNihuKSAobilcblwKKy0jZGVmaW5lIGNwdV90b19sZTMyKG4pIChfX2Jzd2FwX2NvbnN0YW50XzMyKG4pKVxuXAorLSNkZWZpbmUgY3B1X3RvX2xlMTYobikgKF9fYnN3YXBfY29uc3RhbnRfMTYobikpXG5cCisrI2RlZmluZSBjcHVfdG9fbGUzMihuKSAoKHVpbnQzMl90KSAoKG4pPj4yNCB8IChuKT4+OCYweGZmMDAgfCAobik8PDgmMHhmZjAwMDAgfCAobik8PDI0KSlcblwKKysjZGVmaW5lIGNwdV90b19sZTE2KG4pICgodWludDE2X3QpICgobik8PDggfCAobik+PjgpKVxuXAorICNlbHNlXG5cCisgI2RlZmluZSBjcHVfdG9fbGUzMihuKSAobilcblwKKyAjZGVmaW5lIGNwdV90b19sZTE2KG4pIChuKVxuXAorLSNkZWZpbmUgY3B1X3RvX2JlMzIobikgKF9fYnN3YXBfY29uc3RhbnRfMzIobikpXG5cCistI2RlZmluZSBjcHVfdG9fYmUxNihuKSAoX19ic3dhcF9jb25zdGFudF8xNihuKSlcblwKKysjZGVmaW5lIGNwdV90b19iZTMyKG4pICgodWludDMyX3QpICgobik+PjI0IHwgKG4pPj44JjB4ZmYwMCB8IChuKTw8OCYweGZmMDAwMCB8IChuKTw8MjQpKVxuXAorKyNkZWZpbmUgY3B1X3RvX2JlMTYobikgKCh1aW50MTZfdCkgKChuKTw8OCB8IChuKT4+OCkpXG5cCisgI2VuZGlmXG5cCisgIiIiKTsKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMi1OZXctZ2NjLXZlcnNpb24tbmV3LXdheS1zeW1ib2wtdmVyc2lvbmluZy1icmVha3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDItTmV3LWdjYy12ZXJzaW9uLW5ldy13YXktc3ltYm9sLXZlcnNpb25pbmctYnJlYWtzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzdiNzhiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMi1OZXctZ2NjLXZlcnNpb24tbmV3LXdheS1zeW1ib2wtdmVyc2lvbmluZy1icmVha3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1Gcm9tIDMxZTY1NWQyYjVmNjZlNzcyZDk3MTQ0MjJiNzMzMmJiYWE2MGQyZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDYgRmViIDIwMTcgMTQ6NDE6NTggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIE5ldyBnY2MgdmVyc2lvbiwgbmV3IHdheSBzeW1ib2wgdmVyc2lvbmluZyBicmVha3MuCi0KLUFwcGFyZW50bHkgSSBnZXQgdG8gcmVkbyB0aGlzIGV2ZXJ5IHRpbWUgdGhlcmUncyBhIGNvbXBpbGVyIHJlbGVhc2UuCi1ZYWFhYWFheS4KLQotQW55d2F5LCB0aGUgY3VycmVudCBtZXRob2QgaXMgdG8gZGVmaW5lIHRoZSB0d28gY29tcGF0IHRoaW5ncyBmcm9tIHRoZQotbGFuZCBiZWZvcmUgdGltZSBhcyBAbGliZWZpdmFyLnNvLjAgc3ltYm9scyBhbmQgbGlzdCB0aGVtIHRoZXJlIGluIHRoZQotbGluayBtYXAuICBUaGVuIHdlIGhhdmUgdGhlIHJlYWwgb25lIGRlZmluZWQgd2l0aCBhbm90aGVyIG5hbWUsIGFuZCBzZXQKLWFzIGVmaV9zZXRfdmFyaWFibGVAQExJQkVGSVZBUl8wLjI0LiAgVGhlbiB0byBtYWtlIHRoZXJlIGFjdHVhbGx5IGJlIGEKLWVmaV9zZXRfdmFyaWFibGUgc3ltYm9sIHRvIGxpbmsgYWdhaW5zdCwgd2UgY3JlYXRlIGl0IGFzIGEgd2VhayBhbGlhcy4KLQotVGhpcyBpcyBhbGwgY29tcGxldGVseSBhYnN1cmQuCi0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KLS0tLQotIHNyYy9saWIuYyB8IDE3ICsrKysrKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGliLmMgYi9zcmMvbGliLmMKLWluZGV4IDZhOWIzOTIuLmFmYTdkOTQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliLmMKLSsrKyBiL3NyYy9saWIuYwotQEAgLTQ5LDcgKzQ5LDcgQEAgX2VmaV9zZXRfdmFyaWFibGUoZWZpX2d1aWRfdCBndWlkLCBjb25zdCBjaGFyICpuYW1lLCB1aW50OF90ICpkYXRhLAotIHsKLSAJcmV0dXJuIG9wcy0+c2V0X3ZhcmlhYmxlKGd1aWQsIG5hbWUsIGRhdGEsIGRhdGFfc2l6ZSwgYXR0cmlidXRlcywgMDYwMCk7Ci0gfQotLV9fYXNtX18oIi5zeW12ZXIgX2VmaV9zZXRfdmFyaWFibGUsX2VmaV9zZXRfdmFyaWFibGVAIik7Ci0rX19hc21fXygiLnN5bXZlciBfZWZpX3NldF92YXJpYWJsZSxfZWZpX3NldF92YXJpYWJsZUBsaWJlZml2YXIuc28uMCIpOwotIAotIGludAotIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fICgyLCAzKSkpCi1AQCAtNTksMTcgKzU5LDI0IEBAIF9lZmlfc2V0X3ZhcmlhYmxlX3ZhcmlhZGljKGVmaV9ndWlkX3QgZ3VpZCwgY29uc3QgY2hhciAqbmFtZSwgdWludDhfdCAqZGF0YSwKLSB7Ci0gCXJldHVybiBvcHMtPnNldF92YXJpYWJsZShndWlkLCBuYW1lLCBkYXRhLCBkYXRhX3NpemUsIGF0dHJpYnV0ZXMsIDA2MDApOwotIH0KLS1fX2FzbV9fKCIuc3ltdmVyIF9lZmlfc2V0X3ZhcmlhYmxlX3ZhcmlhZGljLGVmaV9zZXRfdmFyaWFibGVAIik7Ci0rX19hc21fXygiLnN5bXZlciBfZWZpX3NldF92YXJpYWJsZV92YXJpYWRpYyxlZmlfc2V0X3ZhcmlhYmxlQGxpYmVmaXZhci5zby4wIik7Ci0gCi0gaW50Ci0gX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18gKDIsIDMpKSkKLSBfX2F0dHJpYnV0ZV9fKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCi0tZWZpX3NldF92YXJpYWJsZShlZmlfZ3VpZF90IGd1aWQsIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ4X3QgKmRhdGEsCi0tCQkgc2l6ZV90IGRhdGFfc2l6ZSwgdWludDMyX3QgYXR0cmlidXRlcywgbW9kZV90IG1vZGUpCi0rX2VmaV9zZXRfdmFyaWFibGVfbW9kZShlZmlfZ3VpZF90IGd1aWQsIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ4X3QgKmRhdGEsCi0rCQkgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSwgdWludDMyX3QgYXR0cmlidXRlcywgbW9kZV90IG1vZGUpCi0gewotIAlyZXR1cm4gb3BzLT5zZXRfdmFyaWFibGUoZ3VpZCwgbmFtZSwgZGF0YSwgZGF0YV9zaXplLCBhdHRyaWJ1dGVzLCBtb2RlKTsKLSB9Ci0tX19hc21fXygiLnN5bXZlciBlZmlfc2V0X3ZhcmlhYmxlLGVmaV9zZXRfdmFyaWFibGVAQExJQkVGSVZBUl8wLjI0Iik7Ci0rX19hc21fXygiLnN5bXZlciBfZWZpX3NldF92YXJpYWJsZV9tb2RlLGVmaV9zZXRfdmFyaWFibGVAQExJQkVGSVZBUl8wLjI0Iik7Ci0rCi0raW50Ci0rX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18gKDIsIDMpKSkKLStfX2F0dHJpYnV0ZV9fKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCi0rZWZpX3NldF92YXJpYWJsZShlZmlfZ3VpZF90IGd1aWQsIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ4X3QgKmRhdGEsCi0rCQkgc2l6ZV90IGRhdGFfc2l6ZSwgdWludDMyX3QgYXR0cmlidXRlcywgbW9kZV90IG1vZGUpCi0rCV9fYXR0cmlidXRlKCh3ZWFrLCBhbGlhcyAoIl9lZmlfc2V0X3ZhcmlhYmxlX21vZGUiKSkpOwotIAotIGludAotIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fICgyLCAzKSkpCi0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDItZGlzYWJsZS1zdGF0aWMtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDItZGlzYWJsZS1zdGF0aWMtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MWIxNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAyLWRpc2FibGUtc3RhdGljLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAxMjZlMGQzYzFhZDc0Y2Y1YjBhYmU5ZTk4ZWM0NDRiY2MzYzgzMTU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuLmtvb2lAbGluYXJvLm9yZz4KLURhdGU6IEZyaSwgNCBNYXIgMjAxNiAxNDo1Mzo1NSArMDEwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZGlzYWJsZSBzdGF0aWMgYnVpbGQKLQotU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuLmtvb2lAbGluYXJvLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttZXRhLW9lIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBzcmMvTWFrZWZpbGUgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCAxODI5ZDIyLi5jN2EwY2EzIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC04LDkgKzgsOSBAQCBpbmNsdWRlICQoVE9QRElSKS9NYWtlLmRlZmF1bHRzCi0gCi0gTElCVEFSR0VUUz1saWJlZml2YXIuc28gbGliZWZpYm9vdC5zbwotIFNUQVRJQ0xJQlRBUkdFVFM9bGliZWZpdmFyLmEgbGliZWZpYm9vdC5hCi0tQklOVEFSR0VUUz1lZml2YXIgZWZpdmFyLXN0YXRpYwotK0JJTlRBUkdFVFM9ZWZpdmFyCi0gUENUQVJHRVRTPWVmaXZhci5wYyBlZmlib290LnBjCi0tVEFSR0VUUz0kKExJQlRBUkdFVFMpICQoU1RBVElDTElCVEFSR0VUUykgJChCSU5UQVJHRVRTKSAkKFBDVEFSR0VUUykKLStUQVJHRVRTPSQoTElCVEFSR0VUUykgJChCSU5UQVJHRVRTKSAkKFBDVEFSR0VUUykKLSAKLSBMSUJFRklCT09UX1NPVVJDRVMgPSBjcmMzMi5jIGNyZWF0b3IuYyBkaXNrLmMgZ3B0LmMgbGludXguYyBsb2Fkb3B0LmMKLSBMSUJFRklCT09UX09CSkVDVFMgPSAkKHBhdHN1YnN0ICUuYywlLm8sJChMSUJFRklCT09UX1NPVVJDRVMpKQotLS0gCi0yLjQuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDQtZml4LXVua25vdy1vcHRpb24tZm9yLWdvbGQtbGlua2VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDA0LWZpeC11bmtub3ctb3B0aW9uLWZvci1nb2xkLWxpbmtlci5wYXRjaAppbmRleCA1ZDUwYzE5Li45NmQwYzZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDQtZml4LXVua25vdy1vcHRpb24tZm9yLWdvbGQtbGlua2VyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwNC1maXgtdW5rbm93LW9wdGlvbi1mb3ItZ29sZC1saW5rZXIucGF0Y2gKQEAgLTIzLDE2ICsyMywxMyBAQAogIGdjYy5zcGVjcyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2djYy5zcGVjcyBiL2djYy5zcGVjcwotaW5kZXggMjRmYWJjMi4uNWIwZmRlZiAxMDA2NDQKLS0tLSBhL2djYy5zcGVjcwotKysrIGIvZ2NjLnNwZWNzCitJbmRleDogZ2l0L2djYy5zcGVjcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2djYy5zcGVjcworKysrIGdpdC9nY2Muc3BlY3MKIEBAIC0xNCw0ICsxNCw0IEBACiAgKyAleyFzaGFyZWQ6JXshc3RhdGljOiV7IXI6LXBpZX19fSAle3N0YXRpYzotV2wsLW5vLWZhdGFsLXdhcm5pbmdzIC1XbCwtc3RhdGljIC1zdGF0aWMgLVdsLC16LHJlbHJvLC16LG5vd30KICAKICAqbGluazoKLS0rICV7IXN0YXRpYzotLWZhdGFsLXdhcm5pbmdzfSAtLW5vLXVuZGVmaW5lZC12ZXJzaW9uIC0tbm8tYWxsb3ctc2hsaWItdW5kZWZpbmVkIC0tYWRkLW5lZWRlZCAteiBub3cgLS1idWlsZC1pZCAleyFzdGF0aWM6JXshc2hhcmVkOi1QSUV9fSAle3NoYXJlZDoteiByZWxybyAtUElDfSAle3N0YXRpYzolPHBpZX0KLSsrICV7IXN0YXRpYzotLWZhdGFsLXdhcm5pbmdzfSAtLW5vLXVuZGVmaW5lZC12ZXJzaW9uIC0tbm8tYWxsb3ctc2hsaWItdW5kZWZpbmVkIC16IG5vdyAtLWJ1aWxkLWlkICV7IXN0YXRpYzoleyFzaGFyZWQ6LXBpZX19ICV7c2hhcmVkOi16IHJlbHJvIC1mUElDfSAle3N0YXRpYzolPHBpZX0KLS0tIAotMi44LjEKLQorLSsgJXshc3RhdGljOi0tZmF0YWwtd2FybmluZ3N9IC0tbm8tdW5kZWZpbmVkLXZlcnNpb24gLS1uby1hbGxvdy1zaGxpYi11bmRlZmluZWQgLS1hZGQtbmVlZGVkIC16IG5vdyAtLWJ1aWxkLWlkICV7IXN0YXRpYzoleyFzaGFyZWQ6LXBpZX19ICV7c2hhcmVkOi16IHJlbHJvfSAle3N0YXRpYzolPHBpZX0KKysrICV7IXN0YXRpYzotLWZhdGFsLXdhcm5pbmdzfSAtLW5vLXVuZGVmaW5lZC12ZXJzaW9uIC0tbm8tYWxsb3ctc2hsaWItdW5kZWZpbmVkIC16IG5vdyAtLWJ1aWxkLWlkICV7IXN0YXRpYzoleyFzaGFyZWQ6LXBpZX19ICV7c2hhcmVkOi16IHJlbHJvfSAle3N0YXRpYzolPHBpZX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaAppbmRleCAxYzY4YTI5Li5lM2ZhMmUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyL2ZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1ob3N0LWdjYy00LjYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoCkBAIC0yMCwxMCArMjAsMTAgQEAKICBnY2Muc3BlY3MgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvZ2NjLnNwZWNzIGIvZ2NjLnNwZWNzCi1pbmRleCAwZDRiYmRhLi4zODAyY2E2IDEwMDY0NAotLS0tIGEvZ2NjLnNwZWNzCi0rKysgYi9nY2Muc3BlY3MKK0luZGV4OiBnaXQvZ2NjLnNwZWNzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvZ2NjLnNwZWNzCisrKysgZ2l0L2djYy5zcGVjcwogQEAgLTIsMTMgKzIsMTMgQEAKICArIC1EX0dOVV9TT1VSQ0UKICAKQEAgLTM1LDExICszNSw4IEBACiAgKyAlKGVmaXZhcl9jcHBfb3B0aW9ucykKICAKICAqY2MxX29wdGlvbnM6Ci0tKyAlKGVmaXZhcl9jcHBfb3B0aW9ucykgLVdtYXliZS11bmluaXRpYWxpemVkIC1mbm8tbWVyZ2UtY29uc3RhbnRzIC1mbHRvIC1mdmlzaWJpbGl0eT1oaWRkZW4gJXshcjoleyFmcGllOiV7IWZQSUU6JXshZnBpYzoleyFmUElDOiV7IWZuby1waWM6LWZQSUV9fX19fX0KKy0rICUoZWZpdmFyX2NwcF9vcHRpb25zKSAtV21heWJlLXVuaW5pdGlhbGl6ZWQgLWZuby1tZXJnZS1jb25zdGFudHMgLWZ2aXNpYmlsaXR5PWhpZGRlbiAleyFyOiV7IWZwaWU6JXshZlBJRToleyFmcGljOiV7IWZQSUM6JXshZm5vLXBpYzotZlBJRX19fX19fQogKysgJShlZml2YXJfY3BwX29wdGlvbnMpIC1mbm8tbWVyZ2UtY29uc3RhbnRzIC1mdmlzaWJpbGl0eT1oaWRkZW4gJXshcjoleyFmcGllOiV7IWZQSUU6JXshZnBpYzoleyFmUElDOiV7IWZuby1waWM6LWZQSUV9fX19fX0KICAKICAqc2VsZl9zcGVjOgogICsgJXshc2hhcmVkOiV7IXN0YXRpYzoleyFyOi1waWV9fX0gJXtzdGF0aWM6LVdsLC1uby1mYXRhbC13YXJuaW5ncyAtV2wsLXN0YXRpYyAtc3RhdGljIC1XbCwteixyZWxybywteixub3d9Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvbXVzbC1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvbXVzbC1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzhmOGM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9tdXNsLXN0cm5kdXBhLnBhdGNoCkBAIC0wLDAgKzEsMTcgQEAKK1Rha2VuIGZyb20gdm9pZCBsaW51eAorCitJbmRleDogZ2l0L3NyYy9saW51eC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2xpbnV4LmMKKysrKyBnaXQvc3JjL2xpbnV4LmMKK0BAIC00MCw2ICs0MCwxMCBAQAorICNpbmNsdWRlIDxlZml2YXIuaD4KKyAjaW5jbHVkZSA8ZWZpYm9vdC5oPgorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2RlZmluZSBzdHJuZHVwYSh4LHMpIHN0cm5jcHkoYWxsb2NhKHN0cmxlbih4KSsxKSx4LHMpCisrI2VuZGlmCisrCisgI2luY2x1ZGUgImRwLmgiCisgI2luY2x1ZGUgImxpbnV4LmgiCisgI2luY2x1ZGUgInV0aWwuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXJfMC4yNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXJfMC4yNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc3Y2E5MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyXzAuMjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIHRvIG1hbmlwdWxhdGUgVUVGSSB2YXJpYWJsZXMiCi1ERVNDUklQVElPTiA9ICJlZml2YXIgcHJvdmlkZXMgYSBzaW1wbGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB0aGUgVUVGSSB2YXJpYWJsZSBmYWNpbGl0eSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZml2YXIiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NjI2YmIxZTIwMTg5Y2ZhOTVmMmM1MDhiYTI4NjM5MyIKLQotREVQRU5EUyA9ICJwb3B0IgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBlZml2YXItbmF0aXZlIgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1TUkNSRVYgPSAiOTYzY2IyZTVhZGMxNDVmZTAwNzE3Zjk0ZTM4MmYyOTczZjgwZTc1MyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZml2YXIuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZGlzYWJsZS1zdGF0aWMtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3ctbXVsdGktZGVmaW5pdGlvbnMtZm9yLW5hdGl2ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1zb21lLWV4dHJhLWNvbnN0LXRoYXQtZ2NjLWNvbXBsYWlucy1hYm91dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLU5ldy1nY2MtdmVyc2lvbi1uZXctd2F5LXN5bWJvbC12ZXJzaW9uaW5nLWJyZWFrcy5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJ2ZpbGU6Ly8wMDA0LWZpeC11bmtub3ctb3B0aW9uLWZvci1nb2xkLWxpbmtlci5wYXRjaCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSMgU2V0dGluZyBDUk9TU19DT01QSUxFIGJyZWFrcyBwa2djb25maWcsIHNvIGp1c3Qgc2V0IEFSCi1FWFRSQV9PRU1BS0UgPSAiQVI9JHtUQVJHRVRfUFJFRklYfWdjYy1hciIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOi1XZXJyb3I6OmcgJHtTfS9nY2Muc3BlY3MKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9zcmMvbWFrZWd1aWRzICR7RH0ke2JpbmRpcn0vbWFrZWd1aWRzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhcl8wLjMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhcl8wLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNGNkYzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyXzAuMzEuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJUb29scyB0byBtYW5pcHVsYXRlIFVFRkkgdmFyaWFibGVzIgorREVTQ1JJUFRJT04gPSAiZWZpdmFyIHByb3ZpZGVzIGEgc2ltcGxlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgdG8gdGhlIFVFRkkgdmFyaWFibGUgZmFjaWxpdHkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpdmFyIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjYyNmJiMWUyMDE4OWNmYTk1ZjJjNTA4YmEyODYzOTMiCisKK0RFUEVORFMgPSAicG9wdCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZWZpdmFyLW5hdGl2ZSIKKworaW5oZXJpdCBwa2djb25maWcKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKKworU1JDUkVWID0gIjExMzI0Nzk5YzY4MTkzMTE2ZTFkZDVmOTRiNDE2NTkxYmQzMjRmOTAiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpdmFyLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9hbGxvdy1tdWx0aS1kZWZpbml0aW9ucy1mb3ItbmF0aXZlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL211c2wtc3RybmR1cGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDMtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICdmaWxlOi8vMDAwNC1maXgtdW5rbm93LW9wdGlvbi1mb3ItZ29sZC1saW5rZXIucGF0Y2gnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2ZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1ob3N0LWdjYy00LjYucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIFNldHRpbmcgQ1JPU1NfQ09NUElMRSBicmVha3MgcGtnY29uZmlnLCBzbyBqdXN0IHNldCBBUgorRVhUUkFfT0VNQUtFID0gIkFSPSR7VEFSR0VUX1BSRUZJWH1nY2MtYXIiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgczotV2Vycm9yOjpnICR7U30vZ2NjLnNwZWNzCit9CisKK2RvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgeworICAgIG9lX3J1bm1ha2UgLUMgc3JjIG1ha2VndWlkcworfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vc3JjL21ha2VndWlkcyAke0R9JHtiaW5kaXJ9L21ha2VndWlkcworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Vuc2NyaXB0L2Vuc2NyaXB0L2Vuc2NyaXB0LWF1dG9jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZW5zY3JpcHQvZW5zY3JpcHQvZW5zY3JpcHQtYXV0b2NvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNiYjVjMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Vuc2NyaXB0L2Vuc2NyaXB0L2Vuc2NyaXB0LWF1dG9jb25mLnBhdGNoCkBAIC0wLDAgKzEsMTE4IEBACithdXRvY29uZiBubyBsb25nZXIgc3VwcG9ydHMgQU1fQ19QUk9UT1RZUEVTCisKK3wgY29uZmlndXJlLmFjOjE0OiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCit8IC9iaXRiYWtlX2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2FjbG9jYWwtMS4xMi9wcm90b3MubTQ6MTA6IEFNX0NfUFJPVE9UWVBFUyBpcyBleHBhbmRlZCBmcm9tLi4uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitBdXRob3I6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKK0luZGV4OiBlbnNjcmlwdC0xLjYuNi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlbnNjcmlwdC0xLjYuNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGVuc2NyaXB0LTEuNi42L2NvbmZpZ3VyZS5hYworQEAgLTExLDcgKzExLDYgQEAgQUNfUFJPR19JTlNUQUxMCisgQUNfUFJPR19DQworIAorIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUworLUFNX0NfUFJPVE9UWVBFUworIAorIEFDX0NfQ09OU1QKKyBBQ19GVU5DX0FMTE9DQQorSW5kZXg6IGVuc2NyaXB0LTEuNi42L2FmbWxpYi9hZm0uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVuc2NyaXB0LTEuNi42Lm9yaWcvYWZtbGliL2FmbS5oCisrKysgZW5zY3JpcHQtMS42LjYvYWZtbGliL2FmbS5oCitAQCAtMjQsMTEgKzI0LDcgQEAKKyAjZGVmaW5lIEFGTV9ICisgCisgI2lmbmRlZiBfX19QCistI2lmIFBST1RPVFlQRVMKKyAjZGVmaW5lIF9fX1AocHJvdG9zKSBwcm90b3MKKy0jZWxzZSAvKiBubyBQUk9UT1RZUEVTICovCistI2RlZmluZSBfX19QKHByb3RvcykgKCkKKy0jZW5kaWYgLyogbm8gUFJPVE9UWVBFUyAqLworICNlbmRpZgorIAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitJbmRleDogZW5zY3JpcHQtMS42LjYvYWZtbGliL2FmbWludC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZW5zY3JpcHQtMS42LjYub3JpZy9hZm1saWIvYWZtaW50LmgKKysrKyBlbnNjcmlwdC0xLjYuNi9hZm1saWIvYWZtaW50LmgKK0BAIC0zNCwxMSArMzQsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorIAorICNpZm5kZWYgX19fUAorLSNpZiBQUk9UT1RZUEVTCisgI2RlZmluZSBfX19QKHByb3RvcykgcHJvdG9zCistI2Vsc2UgLyogbm8gUFJPVE9UWVBFUyAqLworLSNkZWZpbmUgX19fUChwcm90b3MpICgpCistI2VuZGlmIC8qIG5vIFBST1RPVFlQRVMgKi8KKyAjZW5kaWYKKyAKKyAjaWYgU1REQ19IRUFERVJTCitJbmRleDogZW5zY3JpcHQtMS42LjYvYWZtbGliL3N0cmhhc2guaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVuc2NyaXB0LTEuNi42Lm9yaWcvYWZtbGliL3N0cmhhc2guaAorKysrIGVuc2NyaXB0LTEuNi42L2FmbWxpYi9zdHJoYXNoLmgKK0BAIC0yNCwxMSArMjQsNyBAQAorICNkZWZpbmUgU1RSSEFTSF9ICisgCisgI2lmbmRlZiBfX19QCistI2lmIFBST1RPVFlQRVMKKyAjZGVmaW5lIF9fX1AocHJvdG9zKSBwcm90b3MKKy0jZWxzZSAvKiBubyBQUk9UT1RZUEVTICovCistI2RlZmluZSBfX19QKHByb3RvcykgKCkKKy0jZW5kaWYgLyogbm8gUFJPVE9UWVBFUyAqLworICNlbmRpZgorIAorIHR5cGVkZWYgc3RydWN0IHN0cmluZ2hhc2hfc3QgKlN0cmluZ0hhc2hQdHI7CitJbmRleDogZW5zY3JpcHQtMS42LjYvY29tcGF0L3hhbGxvYy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZW5zY3JpcHQtMS42LjYub3JpZy9jb21wYXQveGFsbG9jLmgKKysrKyBlbnNjcmlwdC0xLjYuNi9jb21wYXQveGFsbG9jLmgKK0BAIC0yOCwxMSArMjgsNyBAQAorICNkZWZpbmUgWEFMTE9DX0gKKyAKKyAjaWZuZGVmIF9fX1AKKy0jaWYgUFJPVE9UWVBFUworICNkZWZpbmUgX19fUChwcm90b3MpIHByb3RvcworLSNlbHNlIC8qIG5vIFBST1RPVFlQRVMgKi8KKy0jZGVmaW5lIF9fX1AocHJvdG9zKSAoKQorLSNlbmRpZiAvKiBubyBQUk9UT1RZUEVTICovCisgI2VuZGlmCisgCisgdm9pZCAqeG1hbGxvYyBfX19QICgoc2l6ZV90IHNpemUpKTsKK0luZGV4OiBlbnNjcmlwdC0xLjYuNi9zcmMvZ3NpbnQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVuc2NyaXB0LTEuNi42Lm9yaWcvc3JjL2dzaW50LmgKKysrKyBlbnNjcmlwdC0xLjYuNi9zcmMvZ3NpbnQuaAorQEAgLTM5LDExICszOSw3IEBACisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgCisgI2lmbmRlZiBfX19QCistI2lmIFBST1RPVFlQRVMKKyAjZGVmaW5lIF9fX1AocHJvdG9zKSBwcm90b3MKKy0jZWxzZSAvKiBubyBQUk9UT1RZUEVTICovCistI2RlZmluZSBfX19QKHByb3RvcykgKCkKKy0jZW5kaWYgLyogbm8gUFJPVE9UWVBFUyAqLworICNlbmRpZgorIAorICNpZiBTVERDX0hFQURFUlMKK0luZGV4OiBlbnNjcmlwdC0xLjYuNi9zdGF0ZXMvZGVmcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZW5zY3JpcHQtMS42LjYub3JpZy9zdGF0ZXMvZGVmcy5oCisrKysgZW5zY3JpcHQtMS42LjYvc3RhdGVzL2RlZnMuaAorQEAgLTM3LDExICszNyw3IEBACisgI2luY2x1ZGUgPGN0eXBlLmg+CisgCisgI2lmbmRlZiBfX19QCistI2lmIFBST1RPVFlQRVMKKyAjZGVmaW5lIF9fX1AocHJvdG9zKSBwcm90b3MKKy0jZWxzZSAvKiBubyBQUk9UT1RZUEVTICovCistI2RlZmluZSBfX19QKHByb3RvcykgKCkKKy0jZW5kaWYgLyogbm8gUFJPVE9UWVBFUyAqLworICNlbmRpZgorIAorICNpZiBTVERDX0hFQURFUlMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Vuc2NyaXB0L2Vuc2NyaXB0XzEuNi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZW5zY3JpcHQvZW5zY3JpcHRfMS42LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI2ZDE0ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Vuc2NyaXB0L2Vuc2NyaXB0XzEuNi42LmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiQSBwbGFpbiBBU0NJSSB0byBQb3N0U2NyaXB0IGNvbnZlcnRlciIKK0RFU0NSSVBUSU9OID0gIkdOVSBlbnNjcmlwdCBpcyBhIGZyZWUgcmVwbGFjZW1lbnQgZm9yIEFkb2JlJydzIEVuc2NyaXB0IFwKK3Byb2dyYW0uIEVuc2NyaXB0IGNvbnZlcnRzIEFTQ0lJIGZpbGVzIHRvIFBvc3RTY3JpcHQoVE0pIGFuZCBzcG9vbHMgZ2VuZXJhdGVkIFwKK1Bvc3RTY3JpcHQgb3V0cHV0IHRvIHRoZSBzcGVjaWZpZWQgcHJpbnRlciBvciBzYXZlcyBpdCB0byBhIGZpbGUuIEVuc2NyaXB0IGNhbiBcCitiZSBleHRlbmRlZCB0byBoYW5kbGUgZGlmZmVyZW50IG91dHB1dCBtZWRpYSBhbmQgaW5jbHVkZXMgbWFueSBvcHRpb25zIGZvciBcCitjdXN0b21pemluZyBwcmludG91dHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Vuc2NyaXB0LyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZW5zY3JpcHQtYXV0b2NvbmYucGF0Y2ggXAorIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CisKK0VYVFJBX09FQ09ORiArPSAiUEVSTD0nJHtVU1JCSU5QQVRIfS9lbnYgcGVybCciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzYWNjMjQyYjgyOWFkYWNhYmNhZjI4NTMzZjA0OWFmZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZDU2YmFkYTY5MzRkMDU1YjM0YjZjOTAzOTlhYTg1OTc1ZTY2NDU3YWM1YmY1MTM0MjdhZTdmYzc3ZjVjMGJiIgorCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1GaXgtY29tcGlsYXRpb24tb24tYWFyY2g2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtRml4LWNvbXBpbGF0aW9uLW9uLWFhcmNoNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMmY2NGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1GaXgtY29tcGlsYXRpb24tb24tYWFyY2g2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gZDllNGRjNzUwZGM0NWU0MmI0ODJkNzQ0ODI5MjU0YTM2NzJjMTFiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE5IE9jdCAyMDE2IDAwOjI0OjA4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBGaXggY29tcGlsYXRpb24gb24gYWFyY2g2NAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gYXJjaC5oICAgICB8IDIgKy0KLSBod2FjY2Vzcy5jIHwgMiArLQotIGh3YWNjZXNzLmggfCA2ICsrKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZmxhc2hyb20tMC45LjYuMS9hcmNoLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGFzaHJvbS0wLjkuNi4xLm9yaWcvYXJjaC5oCi0rKysgZmxhc2hyb20tMC45LjYuMS9hcmNoLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2RlZmluZSBfX0ZMQVNIUk9NX0FSQ0hfXyAibWlwcyIKLSAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pIHx8IGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pCi0gI2RlZmluZSBfX0ZMQVNIUk9NX0FSQ0hfXyAicHBjIgotLSNlbGlmIGRlZmluZWQoX19hcm1fXykKLSsjZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCi0gI2RlZmluZSBfX0ZMQVNIUk9NX0FSQ0hfXyAiYXJtIgotICNlbmRpZgotIF9fRkxBU0hST01fQVJDSF9fCi1JbmRleDogZmxhc2hyb20tMC45LjYuMS9od2FjY2Vzcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxhc2hyb20tMC45LjYuMS5vcmlnL2h3YWNjZXNzLmMKLSsrKyBmbGFzaHJvbS0wLjkuNi4xL2h3YWNjZXNzLmMKLUBAIC0xMjEsNyArMTIxLDcgQEAgaW50IHJnZXRfaW9fcGVybXModm9pZCkKLSAJcmV0dXJuIDA7Ci0gfQotIAotLSNlbGlmIGRlZmluZWQgKF9fYXJtX18pCi0rI2VsaWYgZGVmaW5lZCAoX19hcm1fXykgfHwgZGVmaW5lZCAoX19hYXJjaDY0X18pCi0gCi0gc3RhdGljIGlubGluZSB2b2lkIHN5bmNfcHJpbWl0aXZlKHZvaWQpCi0gewotSW5kZXg6IGZsYXNocm9tLTAuOS42LjEvaHdhY2Nlc3MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsYXNocm9tLTAuOS42LjEub3JpZy9od2FjY2Vzcy5oCi0rKysgZmxhc2hyb20tMC45LjYuMS9od2FjY2Vzcy5oCi1AQCAtNjgsOCArNjgsOCBAQAotICNlcnJvciBMaXR0bGUtZW5kaWFuIFBvd2VyUEMgI2RlZmluZXMgYXJlIHVua25vd24KLSAjZW5kaWYKLSAKLS0jZWxpZiBkZWZpbmVkIChfX2FybV9fKQotLSNpZiBkZWZpbmVkIChfX0FSTUVMX18pCi0rI2VsaWYgZGVmaW5lZCAoX19hcm1fXykgfHwgZGVmaW5lZCAoX19hYXJjaDY0X18pCi0rI2lmIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCi0gI2RlZmluZSBfX0ZMQVNIUk9NX0xJVFRMRV9FTkRJQU5fXyAxCi0gI2Vsc2UKLSAjZXJyb3IgQmlnLWVuZGlhbiBBUk0gI2RlZmluZXMgYXJlIHVua25vd24KLUBAIC0zMzcsNyArMzM3LDcgQEAgaW50IGxpYnBheWxvYWRfd3Jtc3IoaW50IGFkZHIsIG1zcl90IG1zcgotIAotIC8qIFBDSSBwb3J0IEkvTyBpcyBub3QgeWV0IGltcGxlbWVudGVkIG9uIE1JUFMuICovCi0gCi0tI2VsaWYgZGVmaW5lZChfX2FybV9fKQotKyNlbGlmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZCAoX19hYXJjaDY0X18pCi0gCi0gLyogTm9uIG1lbW9yeSBtYXBwZWQgSS9PIGlzIG5vdCBzdXBwb3J0ZWQgb24gQVJNLiAqLwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1SZW1vdmUtdW5kZWZpbmVkLWJlaGF2aW9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1SZW1vdmUtdW5kZWZpbmVkLWJlaGF2aW9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMzk3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLVJlbW92ZS11bmRlZmluZWQtYmVoYXZpb3IucGF0Y2gKQEAgLTAsMCArMSw4MiBAQAorRnJvbSBkMmEwM2IzZTQzMDQzYjU5NmE3OTgwM2JjYjkzZjcwZTUxM2JiYjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF0cmljayBHZW9yZ2kgPHBnZW9yZ2lAZ29vZ2xlLmNvbT4KK0RhdGU6IE1vbiwgMTMgTWFyIDIwMTcgMTM6NDg6MDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHVuZGVmaW5lZCBiZWhhdmlvcgorCitQZXIgY2xhbmctMy45LCB0aGUgY29tcGlsZXIgZmFpbHMgb24gI2RlZmluZSAuLi5kZWZpbmVkKC4uLikgc3RhdGVtZW50cworYXMgdGhleSdyZSB1bmRlZmluZWQgYmVoYXZpb3IgKGFwcGFyZW50bHkgd2l0aCBkaWZmZXJlbnQgYmVoYXZpb3IKK2JldHdlZW4gZ2NjL2NsYW5nIGFuZCBtc3ZjLCB0b28pLgorCitTZWUgY2xhbmcncyBjZmUgcmVwbyBjb21taXQgcjI1ODEyOCBmb3IgZGV0YWlscy4KKworQ2hhbmdlLUlkOiBJODJiNjIzNWUxMWI0MjVmYWU0NWVlYmJlMDZiMDhmODFjNWJkYmI5OAorU2lnbmVkLW9mZi1ieTogUGF0cmljayBHZW9yZ2kgPHBnZW9yZ2lAZ29vZ2xlLmNvbT4KK1Jldmlld2VkLW9uOiBodHRwczovL3Jldmlldy5jb3JlYm9vdC5vcmcvMTg3OTIKK1Jldmlld2VkLWJ5OiBTdGVmYW4gUmVpbmF1ZXIgPHN0ZWZhbi5yZWluYXVlckBjb3JlYm9vdC5vcmc+CitUZXN0ZWQtYnk6IGJ1aWxkIGJvdCAoSmVua2lucykgPG5vLXJlcGx5QGNvcmVib290Lm9yZz4KKy0tLQorIGh3YWNjZXNzLmMgfCAxOCArKysrKysrKysrKysrKystLS0KKyBwbGF0Zm9ybS5oIHwgMTggKysrKysrKysrKysrKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHdhY2Nlc3MuYyBiL2h3YWNjZXNzLmMKK2luZGV4IGFlZGU3ZTMuLjJiZjZmNDIgMTAwNjQ0CistLS0gYS9od2FjY2Vzcy5jCisrKysgYi9od2FjY2Vzcy5jCitAQCAtMzcsOSArMzcsMjEgQEAKKyAjZXJyb3IgIlVua25vd24gb3BlcmF0aW5nIHN5c3RlbSIKKyAjZW5kaWYKKyAKKy0jZGVmaW5lIFVTRV9JT1BMCShJU19MSU5VWCB8fCBJU19NQUNPU1ggfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSkKKy0jZGVmaW5lIFVTRV9ERVZfSU8JKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pKQorLSNkZWZpbmUgVVNFX0lPUEVSTQkoZGVmaW5lZChfX2dudV9odXJkX18pKQorKyNpZiBJU19MSU5VWCB8fCBJU19NQUNPU1ggfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKQorKyNkZWZpbmUgVVNFX0lPUEwgMQorKyNlbHNlCisrI2RlZmluZSBVU0VfSU9QTCAwCisrI2VuZGlmCisrI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCisrI2RlZmluZSBVU0VfREVWX0lPIDEKKysjZWxzZQorKyNkZWZpbmUgVVNFX0RFVl9JTyAwCisrI2VuZGlmCisrI2lmIGRlZmluZWQoX19nbnVfaHVyZF9fKQorKyNkZWZpbmUgVVNFX0lPUEVSTSAxCisrI2Vsc2UKKysjZGVmaW5lIFVTRV9JT1BFUk0gMAorKyNlbmRpZgorIAorICNpZiBVU0VfSU9QRVJNCisgI2luY2x1ZGUgPHN5cy9pby5oPgorZGlmZiAtLWdpdCBhL3BsYXRmb3JtLmggYi9wbGF0Zm9ybS5oCitpbmRleCBjNWE1MmVmLi5iMmZkY2QwIDEwMDY0NAorLS0tIGEvcGxhdGZvcm0uaAorKysrIGIvcGxhdGZvcm0uaAorQEAgLTI1LDkgKzI1LDIxIEBACisgI2RlZmluZSBfX1BMQVRGT1JNX0hfXyAxCisgCisgLy8gSGVscGVyIGRlZmluZXMgZm9yIG9wZXJhdGluZyBzeXN0ZW1zCistI2RlZmluZSBJU19MSU5VWAkoZGVmaW5lZChfX2dudV9saW51eF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykpCistI2RlZmluZSBJU19NQUNPU1gJKGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKF9fTUFDSF9fKSkgLyogeWVzLCBib3RoLiAqLworLSNkZWZpbmUgSVNfV0lORE9XUwkoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfX1dJTkRPV1NfXykpCisrI2lmIGRlZmluZWQoX19nbnVfbGludXhfXykgfHwgZGVmaW5lZChfX2xpbnV4X18pCisrI2RlZmluZSBJU19MSU5VWCAxCisrI2Vsc2UKKysjZGVmaW5lIElTX0xJTlVYIDAKKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19NQUNIX18pIC8qIHllcywgYm90aC4gKi8KKysjZGVmaW5lIElTX01BQ09TWCAxCisrI2Vsc2UKKysjZGVmaW5lIElTX01BQ09TWCAwCisrI2VuZGlmCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX19XSU5ET1dTX18pCisrI2RlZmluZSBJU19XSU5ET1dTIDEKKysjZWxzZQorKyNkZWZpbmUgSVNfV0lORE9XUyAwCisrI2VuZGlmCisgCisgLy8gTGlrZXdpc2UgZm9yIHRhcmdldCBhcmNoaXRlY3R1cmVzCisgI2lmIGRlZmluZWQgKF9faTM4Nl9fKSB8fCBkZWZpbmVkIChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYW1kNjRfXykKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtaWNoc3BpLmMtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLWljaHNwaS5jLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjE2ZjBiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtaWNoc3BpLmMtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGEyZjYwM2M1NDAxM2NkMGIwNGJiMDEwM2RjNjE1NjQ0ZjMxNWQ1ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNSBOb3YgMjAxNiAxNzozOToyNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBpY2hzcGkuYzogRml4IGJ1aWxkIHdpdGggY2xhbmcKLQotaWNoc3BpLmM6MTEzMDoyNDogZXJyb3I6IGR1cGxpY2F0ZSAnY29uc3QnIGRlY2xhcmF0aW9uIHNwZWNpZmllciBbLVdlcnJvciwtV2R1cGxpY2F0ZS1kZWNsLXNwZWNpZmllcl0KLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGNvbnN0IGRlY19iZXJhc2VbNF0gPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gaWNoc3BpLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pY2hzcGkuYyBiL2ljaHNwaS5jCi1pbmRleCAwMjIzYWUzLi5lNDdhZWJkIDEwMDY0NAotLS0tIGEvaWNoc3BpLmMKLSsrKyBiL2ljaHNwaS5jCi1AQCAtMTEyNyw3ICsxMTI3LDcgQEAgc3RhdGljIHZvaWQgaWNoX2h3c2VxX3NldF9hZGRyKHVpbnQzMl90IGFkZHIpCi0gc3RhdGljIHVpbnQzMl90IGljaF9od3NlcV9nZXRfZXJhc2VfYmxvY2tfc2l6ZSh1bnNpZ25lZCBpbnQgYWRkcikKLSB7Ci0gCXVpbnQ4X3QgZW5jX2JlcmFzZTsKLS0Jc3RhdGljIGNvbnN0IHVpbnQzMl90IGNvbnN0IGRlY19iZXJhc2VbNF0gPSB7Ci0rCXN0YXRpYyBjb25zdCB1aW50MzJfdCBkZWNfYmVyYXNlWzRdID0gewotIAkJMjU2LAotIAkJNCAqIDEwMjQsCi0gCQk4ICogMTAyNCwKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtc3BpLURlZmluZS1fWE9QRU5fU09VUkNFLXRvLWVuYWJsZS1mZnMtbGliYy1BUEkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE3MGZlZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtc3BpLURlZmluZS1fWE9QRU5fU09VUkNFLXRvLWVuYWJsZS1mZnMtbGliYy1BUEkucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA3YzY1YTQ2NWEzZGRlYjdhZmI5YTdjNDlkMDEwYWU3ZTVkNWIxYWQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMjA6MjU6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3BpOiBEZWZpbmUgX1hPUEVOX1NPVVJDRSB0byBlbmFibGUgZmZzKCkgbGliYyBBUEkKKworbXVzbCBleHBvc2VzIHRoaXMgaXNzdWUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNwaS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3BpLmMgYi9zcGkuYworaW5kZXggODk0ZjczZi4uYWViNjUxOCAxMDA2NDQKKy0tLSBhL3NwaS5jCisrKysgYi9zcGkuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAvKgorICAqIENvbnRhaW5zIHRoZSBnZW5lcmljIFNQSSBmcmFtZXdvcmsKKyAgKi8KKy0KKysjZGVmaW5lIF9YT1BFTl9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RyaW5ncy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSAiZmxhc2guaCIKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDItRGlzYWJsZS1XdGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZS13aGVuLXVzaW5nLWNsYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDItRGlzYWJsZS1XdGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZS13aGVuLXVzaW5nLWNsYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjMTFiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAyLURpc2FibGUtV3RhdXRvbG9naWNhbC1wb2ludGVyLWNvbXBhcmUtd2hlbi11c2luZy1jbGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDliZTBkMTUyZGZlOGFjMGY5YjY2NWQ2MWFlYjNmOTlkYWU1MzNlMGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOSBPY3QgMjAxNiAwMDoyNTowOSArMDAwMAotU3ViamVjdDogW1BBVENIIDIvM10gRGlzYWJsZSBXdGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZSB3aGVuIHVzaW5nIGNsYW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBmbGFzaHJvbS5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZmxhc2hyb20uYyBiL2ZsYXNocm9tLmMKLWluZGV4IDA0ZTk5MzQuLmJmNDkxMDQgMTAwNjQ0Ci0tLS0gYS9mbGFzaHJvbS5jCi0rKysgYi9mbGFzaHJvbS5jCi1AQCAtMTU2OSw2ICsxNTY5LDkgQEAgaW50IHNlbGZjaGVjayh2b2lkKQotIAkgKiBGb3IgJ2ZsYXNoY2hpcHMnIHdlIGNoZWNrIHRoZSBmaXJzdCBlbGVtZW50IHRvIGJlIG5vbi1udWxsLiBJbiB0aGUKLSAJICogb3RoZXIgY2FzZXMgdGhlcmUgZXhpc3QgdXNlIGNhc2VzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IGNhbiBiZQotIAkgKiBudWxsLiAqLwotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZSIKLSsKLSAJaWYgKGZsYXNoY2hpcHMgPT0gTlVMTCB8fCBmbGFzaGNoaXBzWzBdLnZlbmRvciA9PSBOVUxMKSB7Ci0gCQltc2dfZ2VycigiRmxhc2hjaGlwcyB0YWJsZSBtaXNjb21waWxhdGlvbiFcbiIpOwotIAkJcmV0ID0gMTsKLUBAIC0xNjAyLDYgKzE2MDUsNyBAQCBpbnQgc2VsZmNoZWNrKHZvaWQpCi0gCQltc2dfZ2VycigiS25vd24gbGFwdG9wcyB0YWJsZSBkb2VzIG5vdCBleGlzdCFcbiIpOwotIAkJcmV0ID0gMTsKLSAJfQotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAjZW5kaWYKLSAJcmV0dXJuIHJldDsKLSB9Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDMtcmVtb3ZlLWR1cGxpY2F0ZS1jb25zdC1xdWFsaWZpZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMy1yZW1vdmUtZHVwbGljYXRlLWNvbnN0LXF1YWxpZmllcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MjgzZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMy1yZW1vdmUtZHVwbGljYXRlLWNvbnN0LXF1YWxpZmllcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIDQyZWM5YmQ1MWU2MGFhMzhmZTZlNzhmNjQ0ZTc0MmQ2OTg5YjY2ODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOSBPY3QgMjAxNiAwMDoyNToyMyArMDAwMAotU3ViamVjdDogW1BBVENIIDMvM10gcmVtb3ZlIGR1cGxpY2F0ZSBjb25zdCBxdWFsaWZpZXJzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBiaXRiYW5nX3NwaS5jICB8IDEyICsrKysrKy0tLS0tLQotIGR1bW15Zmxhc2hlci5jIHwgIDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JpdGJhbmdfc3BpLmMgYi9iaXRiYW5nX3NwaS5jCi1pbmRleCAxMWQyZGUxLi41MDhjZjQ1IDEwMDY0NAotLS0tIGEvYml0YmFuZ19zcGkuYwotKysrIGIvYml0YmFuZ19zcGkuYwotQEAgLTI2LDMzICsyNiwzMyBAQAotICNpbmNsdWRlICJzcGkuaCIKLSAKLSAvKiBOb3RlIHRoYXQgQ1MjIGlzIGFjdGl2ZSBsb3csIHNvIHZhbD0wIG1lYW5zIHRoZSBjaGlwIGlzIGFjdGl2ZS4gKi8KLS1zdGF0aWMgdm9pZCBiaXRiYW5nX3NwaV9zZXRfY3MoY29uc3QgY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyLCBpbnQgdmFsKQotK3N0YXRpYyB2b2lkIGJpdGJhbmdfc3BpX3NldF9jcyhjb25zdCBzdHJ1Y3QgYml0YmFuZ19zcGlfbWFzdGVyICptYXN0ZXIsIGludCB2YWwpCi0gewotIAltYXN0ZXItPnNldF9jcyh2YWwpOwotIH0KLSAKLS1zdGF0aWMgdm9pZCBiaXRiYW5nX3NwaV9zZXRfc2NrKGNvbnN0IGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlciwgaW50IHZhbCkKLStzdGF0aWMgdm9pZCBiaXRiYW5nX3NwaV9zZXRfc2NrKGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlciwgaW50IHZhbCkKLSB7Ci0gCW1hc3Rlci0+c2V0X3Njayh2YWwpOwotIH0KLSAKLS1zdGF0aWMgdm9pZCBiaXRiYW5nX3NwaV9zZXRfbW9zaShjb25zdCBjb25zdCBzdHJ1Y3QgYml0YmFuZ19zcGlfbWFzdGVyICptYXN0ZXIsIGludCB2YWwpCi0rc3RhdGljIHZvaWQgYml0YmFuZ19zcGlfc2V0X21vc2koY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyLCBpbnQgdmFsKQotIHsKLSAJbWFzdGVyLT5zZXRfbW9zaSh2YWwpOwotIH0KLSAKLS1zdGF0aWMgaW50IGJpdGJhbmdfc3BpX2dldF9taXNvKGNvbnN0IGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlcikKLStzdGF0aWMgaW50IGJpdGJhbmdfc3BpX2dldF9taXNvKGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlcikKLSB7Ci0gCXJldHVybiBtYXN0ZXItPmdldF9taXNvKCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIGJpdGJhbmdfc3BpX3JlcXVlc3RfYnVzKGNvbnN0IGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlcikKLStzdGF0aWMgdm9pZCBiaXRiYW5nX3NwaV9yZXF1ZXN0X2J1cyhjb25zdCBzdHJ1Y3QgYml0YmFuZ19zcGlfbWFzdGVyICptYXN0ZXIpCi0gewotIAlpZiAobWFzdGVyLT5yZXF1ZXN0X2J1cykKLSAJCW1hc3Rlci0+cmVxdWVzdF9idXMoKTsKLSB9Ci0gCi0tc3RhdGljIHZvaWQgYml0YmFuZ19zcGlfcmVsZWFzZV9idXMoY29uc3QgY29uc3Qgc3RydWN0IGJpdGJhbmdfc3BpX21hc3RlciAqbWFzdGVyKQotK3N0YXRpYyB2b2lkIGJpdGJhbmdfc3BpX3JlbGVhc2VfYnVzKGNvbnN0IHN0cnVjdCBiaXRiYW5nX3NwaV9tYXN0ZXIgKm1hc3RlcikKLSB7Ci0gCWlmIChtYXN0ZXItPnJlbGVhc2VfYnVzKQotIAkJbWFzdGVyLT5yZWxlYXNlX2J1cygpOwotZGlmZiAtLWdpdCBhL2R1bW15Zmxhc2hlci5jIGIvZHVtbXlmbGFzaGVyLmMKLWluZGV4IDY2ZDBkZjAuLmQwZGU0MWMgMTAwNjQ0Ci0tLS0gYS9kdW1teWZsYXNoZXIuYwotKysrIGIvZHVtbXlmbGFzaGVyLmMKLUBAIC02Niw3ICs2Niw3IEBAIGludCBzcGlfaWdub3JlbGlzdF9zaXplID0gMDsKLSBzdGF0aWMgdWludDhfdCBlbXVfc3RhdHVzID0gMDsKLSAKLSAvKiBBIGxlZ2l0IGNvbXBsZXRlIFNGRFAgdGFibGUgYmFzZWQgb24gdGhlIE1YMjVMNjQzNkUgKHJldi4gMS44KSBkYXRhc2hlZXQuICovCi0tc3RhdGljIGNvbnN0IHVpbnQ4X3QgY29uc3Qgc2ZkcF90YWJsZVtdID0gewotK3N0YXRpYyBjb25zdCB1aW50OF90IHNmZHBfdGFibGVbXSA9IHsKLSAJMHg1MywgMHg0NiwgMHg0NCwgMHg1MCwgLy8gQDB4MDA6IFNGRFAgc2lnbmF0dXJlCi0gCTB4MDAsIDB4MDEsIDB4MDEsIDB4RkYsIC8vIEAweDA0OiByZXZpc2lvbiAxLjAsIDIgaGVhZGVycwotIAkweDAwLCAweDAwLCAweDAxLCAweDA5LCAvLyBAMHgwODogSkVERUMgU0ZEUCBoZWFkZXIgcmV2LiAxLjAsIDkgRFcgbG9uZwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS9zc3QyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tL3NzdDI2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YTAxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS9zc3QyNi5wYXRjaApAQCAtMCwwICsxLDE5OCBAQAorLS0tIGZsYXNocm9tLTAuOS45Lm9yaWcvY2hpcGRyaXZlcnMuaAorKysrIGZsYXNocm9tLTAuOS45L2NoaXBkcml2ZXJzLmgKK0BAIC0xMDMsNiArMTAzLDcgQEAKKyBpbnQgc3BpX3ByZXR0eXByaW50X3N0YXR1c19yZWdpc3Rlcl9zc3QyNShzdHJ1Y3QgZmxhc2hjdHggKmZsYXNoKTsKKyBpbnQgc3BpX3ByZXR0eXByaW50X3N0YXR1c19yZWdpc3Rlcl9zc3QyNXZmMDE2KHN0cnVjdCBmbGFzaGN0eCAqZmxhc2gpOworIGludCBzcGlfcHJldHR5cHJpbnRfc3RhdHVzX3JlZ2lzdGVyX3NzdDI1dmYwNDBiKHN0cnVjdCBmbGFzaGN0eCAqZmxhc2gpOworK2ludCBzcGlfZGlzYWJsZV9ibG9ja3Byb3RlY3Rfc3N0MjZfZ2xvYmFsX3VucHJvdGVjdChzdHJ1Y3QgZmxhc2hjdHggKmZsYXNoKTsKKyAKKyAvKiBzZmRwLmMgKi8KKyBpbnQgcHJvYmVfc3BpX3NmZHAoc3RydWN0IGZsYXNoY3R4ICpmbGFzaCk7CistLS0gZmxhc2hyb20tMC45Ljkub3JpZy9mbGFzaGNoaXBzLmMKKysrKyBmbGFzaHJvbS0wLjkuOS9mbGFzaGNoaXBzLmMKK0BAIC0xMjU2NCw2ICsxMjU2NCwxMjAgQEAKKyAKKyAJeworIAkJLnZlbmRvcgkJPSAiU1NUIiwKKysJCS5uYW1lCQk9ICJTU1QyNlZGMDE2QihBKSIsCisrCQkuYnVzdHlwZQk9IEJVU19TUEksCisrCQkubWFudWZhY3R1cmVfaWQJPSBTU1RfSUQsCisrCQkubW9kZWxfaWQJPSBTU1RfU1NUMjZWRjAxNkIsCisrCQkudG90YWxfc2l6ZQk9IDIwNDgsCisrCQkucGFnZV9zaXplCT0gMjU2LAorKwkJLmZlYXR1cmVfYml0cwk9IEZFQVRVUkVfV1JTUl9XUkVOIHwgRkVBVFVSRV9PVFAsCisrCQkudGVzdGVkCQk9IFRFU1RfT0tfUFJFVywKKysJCS5wcm9iZQkJPSBwcm9iZV9zcGlfcmRpZCwKKysJCS5wcm9iZV90aW1pbmcJPSBUSU1JTkdfWkVSTywKKysJCS5ibG9ja19lcmFzZXJzCT0KKysJCXsKKysJCQl7CisrCQkJCS5lcmFzZWJsb2NrcyA9IHsgezQgKiAxMDI0LCA1MTJ9IH0sCisrCQkJCS5ibG9ja19lcmFzZSA9IHNwaV9ibG9ja19lcmFzZV8yMCwKKysJCQl9LCB7CisrCQkJCS5lcmFzZWJsb2NrcyA9IHsKKysJCQkJCXs4ICogMTAyNCwgNH0sCisrCQkJCQl7MzIgKiAxMDI0LCAxfSwKKysJCQkJCXs2NCAqIDEwMjQsIDMwfSwKKysJCQkJCXszMiAqIDEwMjQsIDF9LAorKwkJCQkJezggKiAxMDI0LCA0fSwKKysJCQkJfSwKKysJCQkJLmJsb2NrX2VyYXNlID0gc3BpX2Jsb2NrX2VyYXNlX2Q4LAorKwkJCX0sIHsKKysJCQkJLmVyYXNlYmxvY2tzID0geyB7MiAqIDEwMjQgKiAxMDI0LCAxfSB9LAorKwkJCQkuYmxvY2tfZXJhc2UgPSBzcGlfYmxvY2tfZXJhc2VfYzcsCisrCQkJfSwKKysJCX0sCisrCQkucHJpbnRsb2NrCT0gc3BpX3ByZXR0eXByaW50X3N0YXR1c19yZWdpc3Rlcl9wbGFpbiwgLyogVE9ETzogaW1wcm92ZSAqLworKwkJLnVubG9jawkJPSBzcGlfZGlzYWJsZV9ibG9ja3Byb3RlY3Rfc3N0MjZfZ2xvYmFsX3VucHJvdGVjdCwKKysJCS53cml0ZQkJPSBzcGlfY2hpcF93cml0ZV8yNTYsIC8qIE11bHRpIEkvTyBzdXBwb3J0ZWQgKi8KKysJCS5yZWFkCQk9IHNwaV9jaGlwX3JlYWQsIC8qIEZhc3QgcmVhZCAoMHgwQikgYW5kIG11bHRpIEkvTyBzdXBwb3J0ZWQgKi8KKysJCS52b2x0YWdlCT0gezI3MDAsIDM2MDB9LAorKwl9LAorKwl7CisrCQkudmVuZG9yCQk9ICJTU1QiLAorKwkJLm5hbWUJCT0gIlNTVDI2VkYwMzJCKEEpIiwKKysJCS5idXN0eXBlCT0gQlVTX1NQSSwKKysJCS5tYW51ZmFjdHVyZV9pZAk9IFNTVF9JRCwKKysJCS5tb2RlbF9pZAk9IFNTVF9TU1QyNlZGMDMyQiwKKysJCS50b3RhbF9zaXplCT0gNDA5NiwKKysJCS5wYWdlX3NpemUJPSAyNTYsCisrCQkuZmVhdHVyZV9iaXRzCT0gRkVBVFVSRV9XUlNSX1dSRU4gfCBGRUFUVVJFX09UUCwKKysJCS50ZXN0ZWQJCT0gVEVTVF9VTlRFU1RFRCwKKysJCS5wcm9iZQkJPSBwcm9iZV9zcGlfcmRpZCwKKysJCS5wcm9iZV90aW1pbmcJPSBUSU1JTkdfWkVSTywKKysJCS5ibG9ja19lcmFzZXJzCT0KKysJCXsKKysJCQl7CisrCQkJCS5lcmFzZWJsb2NrcyA9IHsgezQgKiAxMDI0LCAxMDI0fSB9LAorKwkJCQkuYmxvY2tfZXJhc2UgPSBzcGlfYmxvY2tfZXJhc2VfMjAsCisrCQkJfSwgeworKwkJCQkuZXJhc2VibG9ja3MgPSB7CisrCQkJCQl7OCAqIDEwMjQsIDR9LAorKwkJCQkJezMyICogMTAyNCwgMX0sCisrCQkJCQl7NjQgKiAxMDI0LCA2Mn0sCisrCQkJCQl7MzIgKiAxMDI0LCAxfSwKKysJCQkJCXs4ICogMTAyNCwgNH0sCisrCQkJCX0sCisrCQkJCS5ibG9ja19lcmFzZSA9IHNwaV9ibG9ja19lcmFzZV9kOCwKKysJCQl9LCB7CisrCQkJCS5lcmFzZWJsb2NrcyA9IHsgezQgKiAxMDI0ICogMTAyNCwgMX0gfSwKKysJCQkJLmJsb2NrX2VyYXNlID0gc3BpX2Jsb2NrX2VyYXNlX2M3LAorKwkJCX0sCisrCQl9LAorKwkJLnByaW50bG9jawk9IHNwaV9wcmV0dHlwcmludF9zdGF0dXNfcmVnaXN0ZXJfcGxhaW4sIC8qIFRPRE86IGltcHJvdmUgKi8KKysJCS51bmxvY2sJCT0gc3BpX2Rpc2FibGVfYmxvY2twcm90ZWN0X3NzdDI2X2dsb2JhbF91bnByb3RlY3QsCisrCQkud3JpdGUJCT0gc3BpX2NoaXBfd3JpdGVfMjU2LCAvKiBNdWx0aSBJL08gc3VwcG9ydGVkICovCisrCQkucmVhZAkJPSBzcGlfY2hpcF9yZWFkLCAvKiBGYXN0IHJlYWQgKDB4MEIpIGFuZCBtdWx0aSBJL08gc3VwcG9ydGVkICovCisrCQkudm9sdGFnZQk9IHsyNzAwLCAzNjAwfSwKKysJfSwKKysKKysKKysJeworKwkJLnZlbmRvcgkJPSAiU1NUIiwKKysJCS5uYW1lCQk9ICJTU1QyNlZGMDY0QihBKSIsCisrCQkuYnVzdHlwZQk9IEJVU19TUEksCisrCQkubWFudWZhY3R1cmVfaWQJPSBTU1RfSUQsCisrCQkubW9kZWxfaWQJPSBTU1RfU1NUMjZWRjA2NEIsCisrCQkudG90YWxfc2l6ZQk9IDgxOTIsCisrCQkucGFnZV9zaXplCT0gMjU2LAorKwkJLmZlYXR1cmVfYml0cwk9IEZFQVRVUkVfV1JTUl9XUkVOIHwgRkVBVFVSRV9PVFAsCisrCQkudGVzdGVkCQk9IFRFU1RfT0tfUFJFVywKKysJCS5wcm9iZQkJPSBwcm9iZV9zcGlfcmRpZCwKKysJCS5wcm9iZV90aW1pbmcJPSBUSU1JTkdfWkVSTywKKysJCS5ibG9ja19lcmFzZXJzCT0KKysJCXsKKysJCQl7CisrCQkJCS5lcmFzZWJsb2NrcyA9IHsgezQgKiAxMDI0LCAyMDQ4fSB9LAorKwkJCQkuYmxvY2tfZXJhc2UgPSBzcGlfYmxvY2tfZXJhc2VfMjAsCisrCQkJfSwgeworKwkJCQkuZXJhc2VibG9ja3MgPSB7CisrCQkJCQl7OCAqIDEwMjQsIDR9LAorKwkJCQkJezMyICogMTAyNCwgMX0sCisrCQkJCQl7NjQgKiAxMDI0LCAxMjZ9LAorKwkJCQkJezMyICogMTAyNCwgMX0sCisrCQkJCQl7OCAqIDEwMjQsIDR9LAorKwkJCQl9LAorKwkJCQkuYmxvY2tfZXJhc2UgPSBzcGlfYmxvY2tfZXJhc2VfZDgsCisrCQkJfSwgeworKwkJCQkuZXJhc2VibG9ja3MgPSB7IHs4ICogMTAyNCAqIDEwMjQsIDF9IH0sCisrCQkJCS5ibG9ja19lcmFzZSA9IHNwaV9ibG9ja19lcmFzZV9jNywKKysJCQl9LAorKwkJfSwKKysJCS5wcmludGxvY2sJPSBzcGlfcHJldHR5cHJpbnRfc3RhdHVzX3JlZ2lzdGVyX3BsYWluLCAvKiBUT0RPOiBpbXByb3ZlICovCisrCQkudW5sb2NrCQk9IHNwaV9kaXNhYmxlX2Jsb2NrcHJvdGVjdF9zc3QyNl9nbG9iYWxfdW5wcm90ZWN0LAorKwkJLndyaXRlCQk9IHNwaV9jaGlwX3dyaXRlXzI1NiwgLyogTXVsdGkgSS9PIHN1cHBvcnRlZCAqLworKwkJLnJlYWQJCT0gc3BpX2NoaXBfcmVhZCwgLyogRmFzdCByZWFkICgweDBCKSBhbmQgbXVsdGkgSS9PIHN1cHBvcnRlZCAqLworKwkJLnZvbHRhZ2UJPSB7MjcwMCwgMzYwMH0sCisrCX0sCisrCisrCXsKKysJCS52ZW5kb3IJCT0gIlNTVCIsCisgCQkubmFtZQkJPSAiU1NUMjVXRjUxMiIsCisgCQkuYnVzdHlwZQk9IEJVU19TUEksCisgCQkubWFudWZhY3R1cmVfaWQJPSBTU1RfSUQsCistLS0gZmxhc2hyb20tMC45Ljkub3JpZy9mbGFzaGNoaXBzLmgKKysrKyBmbGFzaHJvbS0wLjkuOS9mbGFzaGNoaXBzLmgKK0BAIC02OTcsNiArNjk3LDggQEAKKyAjZGVmaW5lIFNTVF9TU1QyNVZGMDY0QwkJMHgyNTRCCisgI2RlZmluZSBTU1RfU1NUMjZWRjAxNgkJMHgyNjAxCisgI2RlZmluZSBTU1RfU1NUMjZWRjAzMgkJMHgyNjAyCisrI2RlZmluZSBTU1RfU1NUMjZWRjAxNkIJCTB4MjY0MQorKyNkZWZpbmUgU1NUX1NTVDI2VkYwMzJCCQkweDI2NDIKKyAjZGVmaW5lIFNTVF9TU1QyNlZGMDY0QgkJMHgyNjQzCisgI2RlZmluZSBTU1RfU1NUMjdTRjUxMgkJMHhBNAorICNkZWZpbmUgU1NUX1NTVDI3U0YwMTAJCTB4QTUKKy0tLSBmbGFzaHJvbS0wLjkuOS5vcmlnL2xpbnV4X3NwaS5jCisrKysgZmxhc2hyb20tMC45LjkvbGludXhfc3BpLmMKK0BAIC0xNDEsNiArMTQxLDE2IEBACisgCXJldHVybiAwOworIH0KKyAKKytzdGF0aWMgdm9pZCBwcmludF9oZXgoY29uc3QgY2hhciAqbXNnLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pCisreworKyAgICAgICAgc2l6ZV90IGk7CisrCW1zZ19wc3BldygiJXM6XG4iLCBtc2cpOworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisrICAgICAgICAgICAgICAgIG1zZ19wc3BldygiICUwMngiLCAoKHVpbnQ4X3QgKilidWYpW2ldKTsKKysgICAgICAgIH0KKysgICAgICAgIG1zZ19wc3BldygiXG4iKTsKKyt9CisrCisgc3RhdGljIGludCBsaW51eF9zcGlfc2VuZF9jb21tYW5kKHN0cnVjdCBmbGFzaGN0eCAqZmxhc2gsIHVuc2lnbmVkIGludCB3cml0ZWNudCwKKyAJCQkJICB1bnNpZ25lZCBpbnQgcmVhZGNudCwKKyAJCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyICp0eGJ1ZiwKK0BAIC0xNzIsMTAgKzE4MiwxMiBAQAorIAllbHNlCisgCQlpb2NvbnRyb2xfY29kZSA9IFNQSV9JT0NfTUVTU0FHRSgyKTsKKyAKKysJcHJpbnRfaGV4KCJXcml0ZSIsIHR4YnVmLCB3cml0ZWNudCk7CisgCWlmIChpb2N0bChmZCwgaW9jb250cm9sX2NvZGUsIG1zZykgPT0gLTEpIHsKKyAJCW1zZ19jZXJyKCIlczogaW9jdGw6ICVzXG4iLCBfX2Z1bmNfXywgc3RyZXJyb3IoZXJybm8pKTsKKyAJCXJldHVybiAtMTsKKyAJfQorKwlpZiAocmVhZGNudCkgcHJpbnRfaGV4KCJHb3QiLCByeGJ1ZiwgcmVhZGNudCk7CisgCXJldHVybiAwOworIH0KKyAKKy0tLSBmbGFzaHJvbS0wLjkuOS5vcmlnL3NwaTI1X3N0YXR1c3JlZy5jCisrKysgZmxhc2hyb20tMC45Ljkvc3BpMjVfc3RhdHVzcmVnLmMKK0BAIC0xOTYsNiArMTk2LDE5IEBACisgCXJldHVybiBzcGlfZGlzYWJsZV9ibG9ja3Byb3RlY3RfZ2VuZXJpYyhmbGFzaCwgMHgzQywgMCwgMCwgMHhGRik7CisgfQorIAorK2ludCBzcGlfZGlzYWJsZV9ibG9ja3Byb3RlY3Rfc3N0MjZfZ2xvYmFsX3VucHJvdGVjdChzdHJ1Y3QgZmxhc2hjdHggKmZsYXNoKQorK3sKKysJaW50IHJlc3VsdCA9IHNwaV93cml0ZV9lbmFibGUoZmxhc2gpOworKwlpZiAocmVzdWx0KQorKwkJcmV0dXJuIHJlc3VsdDsKKysKKysJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY21kW10gPSB7IDB4OTggfTsgLyogVUxCUFIgKi8KKysJcmVzdWx0ID0gc3BpX3NlbmRfY29tbWFuZChmbGFzaCwgc2l6ZW9mKGNtZCksIDAsIGNtZCwgTlVMTCk7CisrCWlmIChyZXN1bHQpCisrCQltc2dfY2VycigiVUxCUFIgZmFpbGVkXG4iKTsKKysJcmV0dXJuIHJlc3VsdDsKKyt9CisrCisgLyogQSBjb21tb24gYmxvY2sgcHJvdGVjdGlvbiBkaXNhYmxlIHRoYXQgdHJpZXMgdG8gdW5zZXQgdGhlIHN0YXR1cyByZWdpc3RlciBiaXRzIG1hc2tlZCBieSAweDBDIChCUDAtMSkgYW5kCisgICogcHJvdGVjdGVkL2xvY2tlZCBieSBiaXQgIzcuIFVzZWZ1bCB3aGVuIGJpdHMgNC01IG1heSBiZSBub24tMCkuICovCisgaW50IHNwaV9kaXNhYmxlX2Jsb2NrcHJvdGVjdF9icDFfc3J3ZChzdHJ1Y3QgZmxhc2hjdHggKmZsYXNoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb21fMC45LjYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tXzAuOS42LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZGM2ODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb21fMC45LjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLURFU0NSSVBUSU9OID0gImZsYXNocm9tIGlzIGEgdXRpbGl0eSBmb3IgaWRlbnRpZnlpbmcsIHJlYWRpbmcsIHdyaXRpbmcsIHZlcmlmeWluZyBhbmQgZXJhc2luZyBmbGFzaCBjaGlwcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1IT01FUEFHRSA9ICJodHRwOi8vZmxhc2hyb20ub3JnIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAicGNpdXRpbHMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmZsYXNocm9tLm9yZy9yZWxlYXNlcy9mbGFzaHJvbS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWNvbXBpbGF0aW9uLW9uLWFhcmNoNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1EaXNhYmxlLVd0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlLXdoZW4tdXNpbmctY2xhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWR1cGxpY2F0ZS1jb25zdC1xdWFsaWZpZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaWNoc3BpLmMtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MDdlODM2YzBhMmIxN2VjNzY1ODNjYjY4MDlmNjVlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZjdiNTg4Y2NlNzRjOTBiNGZlOWM5Yzc5NGRlMTA1ZGU3NmUwMzIzNDQyZmI1NzcwYjFhZWFiODFlOWQ1NjBhIgotCi1DRkxBR1MgKz0gIi1Xbm8tZXJyb3I9dW5rbm93bi1wcmFnbWFzIgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb21fMC45LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbV8wLjkuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2RkOGFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb21fMC45LjkuYmIKQEAgLTAsMCArMSwyMCBAQAorREVTQ1JJUFRJT04gPSAiZmxhc2hyb20gaXMgYSB1dGlsaXR5IGZvciBpZGVudGlmeWluZywgcmVhZGluZywgd3JpdGluZywgdmVyaWZ5aW5nIGFuZCBlcmFzaW5nIGZsYXNoIGNoaXBzIgorTElDRU5TRSA9ICJHUEx2MiIKK0hPTUVQQUdFID0gImh0dHA6Ly9mbGFzaHJvbS5vcmciCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJwY2l1dGlscyBsaWJ1c2IgbGlidXNiLWNvbXBhdCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZmxhc2hyb20ub3JnL3JlbGVhc2VzL2ZsYXNocm9tLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zc3QyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS11bmRlZmluZWQtYmVoYXZpb3IucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYWFiOWM5ODkyNWQ5Y2ZiNWZmYjI4YjY3YTYxMTI1MzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2IzMTU2YjBmNjNlYjE5MjAyNGI3NmMwODE0MTM1OTMwMjk3YWFjNDFmODA3NjFhNWQyOTNkZTc2OTc4M2M0NSIKKworaW5oZXJpdCBwa2djb25maWcKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXQvMDAwMS1DTWFrZUxpc3RzLnR4dC1BZGQtQVVUT0NPTkZfSE9TVF9PUFQtdG8taGVscC1jcm9zcy1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdC8wMDAxLUNNYWtlTGlzdHMudHh0LUFkZC1BVVRPQ09ORl9IT1NUX09QVC10by1oZWxwLWNyb3NzLWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzOWE0MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdC8wMDAxLUNNYWtlTGlzdHMudHh0LUFkZC1BVVRPQ09ORl9IT1NUX09QVC10by1oZWxwLWNyb3NzLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIGNlYjQ3ZjM3NTgyYTA1NWJiN2YyNTNmODEzYzQzNWFkNTVjNWI2ZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyMiBBcHIgMjAxNyAxMDowMjo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gQ01ha2VMaXN0cy50eHQ6IEFkZCBBVVRPQ09ORl9IT1NUX09QVCB0byBoZWxwIGNyb3NzCi0gY29tcGlsaW5nCi0KLVRoaXMgaGVscHMgaW4gZG9pbmcgY3Jvc3MgY29tcGlsZXMgZm9yIG1vZHVsZXMgd2hpY2ggYXJlIHVzaW5nCi1HTlUgYXV0b2NvbmYgZm9yIGJ1aWxkIHN5c3RlbQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCAxMCArKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGIwOTNmOWEuLmViZjBjZDcgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0yOTAsNiArMjkwLDEyIEBAIGVsc2UoKQotICAgZW5kaWYoKQotIGVuZGlmKCkKLSAKLStpZigiJHtHTlVfSE9TVH0iIFNUUkVRVUFMICIiKQotKyAgICBzZXQoQVVUT0NPTkZfSE9TVF9PUFQgIiIpCi0rZWxzZSgpCi0rICAgIHNldChBVVRPQ09ORl9IT1NUX09QVCAiLS1ob3N0PSR7R05VX0hPU1R9IikKLStlbmRpZigpCi0rCi0gIyBNZW1vcnkgQWxsb2NhdG9yCi0gIyA9PT09PT09PT09PT09PT09Ci0gaWYoRkxCX0pFTUFMTE9DIEFORCAke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJMaW51eCIpCi1AQCAtMjk5LDcgKzMwNSw3IEBAIGlmKEZMQl9KRU1BTExPQyBBTkQgJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiTGludXgiKQotICAgIyBMaW5rIHRvIEplbWFsbG9jIGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kKLSAgIEV4dGVybmFsUHJvamVjdF9BZGQoamVtYWxsb2MKLSAgICAgU09VUkNFX0RJUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbGliL2plbWFsbG9jCi0tICAgIENPTkZJR1VSRV9DT01NQU5EICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvamVtYWxsb2MvY29uZmlndXJlIC0td2l0aC1sZy1xdWFudHVtPTMgLS1lbmFibGUtY2Mtc2lsZW5jZSAtLXByZWZpeD08SU5TVEFMTF9ESVI+Ci0rICAgIENPTkZJR1VSRV9DT01NQU5EICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvamVtYWxsb2MvY29uZmlndXJlICR7QVVUT0NPTkZfSE9TVF9PUFR9IC0td2l0aC1sZy1xdWFudHVtPTMgLS1lbmFibGUtY2Mtc2lsZW5jZSAtLXByZWZpeD08SU5TVEFMTF9ESVI+Ci0gICAgIENGTEFHUz0tc3RkPWdudTk5XCAtV2FsbFwgLXBpcGVcIC1nM1wgLU8zXCAtZnVucm9sbC1sb29wcwotICAgICBCVUlMRF9DT01NQU5EICR7TUFLRX0KLSAgICAgSU5TVEFMTF9ESVIgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LwotQEAgLTMxNyw3ICszMjMsNyBAQCBlbmRpZigpCi0gaWYoRkxCX1JFR0VYKQotICAgRXh0ZXJuYWxQcm9qZWN0X0FkZChvbmlnbW8KLSAgICAgU09VUkNFX0RJUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbGliL29uaWdtbwotLSAgICBDT05GSUdVUkVfQ09NTUFORCAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbGliL29uaWdtby9jb25maWd1cmUgLS13aXRoLXBpYyAtLWRpc2FibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLXByZWZpeD08SU5TVEFMTF9ESVI+Ci0rICAgIENPTkZJR1VSRV9DT01NQU5EICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvb25pZ21vL2NvbmZpZ3VyZSAke0FVVE9DT05GX0hPU1RfT1BUfSAtLXdpdGgtcGljIC0tZGlzYWJsZS1zaGFyZWQgLS1lbmFibGUtc3RhdGljIC0tcHJlZml4PTxJTlNUQUxMX0RJUj4KLSAgICAgQ0ZMQUdTPS1zdGQ9Z251OTlcIC1XYWxsXCAtcGlwZVwgLWczXCAtTzNcIC1mdW5yb2xsLWxvb3BzCi0gICAgIEJVSUxEX0NPTU1BTkQgJHtNQUtFfQotICAgICBJTlNUQUxMX0RJUiAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vCi0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0LzAwMDEtZmx1ZW50LWJpdC1zaGFyZWQtTGluay13aXRoLWxwdGhyZWFkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdC8wMDAxLWZsdWVudC1iaXQtc2hhcmVkLUxpbmstd2l0aC1scHRocmVhZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWVlZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdC8wMDAxLWZsdWVudC1iaXQtc2hhcmVkLUxpbmstd2l0aC1scHRocmVhZC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDYyZmE5YmNlYjE1YTlkMTYwZGQ1ZDYyNGE2ZDQ2OTA3YzEwMTljNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCA4IFNlcCAyMDE3IDE3OjAyOjU1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGZsdWVudC1iaXQtc2hhcmVkOiBMaW5rIHdpdGggLWxwdGhyZWFkCisKK1RoaXMgZml4ZXMgYSByZWZlcmVuY2UgdG8gcHRocmVhZF9hdGZvcmsgaW4gbGliZmx1ZW50LWJpdC5zbworb3RoZXJ3aXNlIHdlIGdldCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIHRoZSBzeW1ib2xzIGluIGJpbmFyaWVzCit3aGljaCBhcmUgbGlua2VkIHdpdGggbGliZmx1ZW50LWJpdC5zbworCitGaXhlcyBlcnJvcnMgbGlrZQorYXJtLWJlYy1saW51eC1nbnVlYWJpLWxkOiAuLi8uLi9iaW4vaGVsbG9fd29ybGQ6IGhpZGRlbiBzeW1ib2wgYHB0aHJlYWRfYXRmb3JrJyBpbiAvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQtYmVjLWxpbnV4LWdudWVhYmkvZmx1ZW50Yml0LzAuMTIuMS1yMC9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xpYnB0aHJlYWRfbm9uc2hhcmVkLmEocHRocmVhZF9hdGZvcmsub1MpIGlzIHJlZmVyZW5jZWQgYnkgRFNPCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBzcmMvQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvQ01ha2VMaXN0cy50eHQgYi9zcmMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDQyNWEyNDYuLjEyNjRlNTkgMTAwNjQ0CistLS0gYS9zcmMvQ01ha2VMaXN0cy50eHQKKysrKyBiL3NyYy9DTWFrZUxpc3RzLnR4dAorQEAgLTE2OCw3ICsxNjgsNyBAQCBzZXQoRkxCX0RFUFMKKyAjIFNoYXJlZCBMaWJyYXJ5CisgaWYoTk9UIEZMQl9XSVRIT1VUX1NIQVJFRF9MSUIpCisgICBhZGRfbGlicmFyeShmbHVlbnQtYml0LXNoYXJlZCBTSEFSRUQgJHtzcmN9KQorLSAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGZsdWVudC1iaXQtc2hhcmVkICR7RkxCX0RFUFN9KQorKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGZsdWVudC1iaXQtc2hhcmVkICR7RkxCX0RFUFN9IC1scHRocmVhZCkKKyAgIHNldF90YXJnZXRfcHJvcGVydGllcyhmbHVlbnQtYml0LXNoYXJlZAorICAgICBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FIGZsdWVudC1iaXQpCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0LzAwMDItbXNncGFjay1BZGQtY29tbWVudC1mb3ItaW50ZW5kZWQtZmFsbHRocm91Z2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0LzAwMDItbXNncGFjay1BZGQtY29tbWVudC1mb3ItaW50ZW5kZWQtZmFsbHRocm91Z2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1Y2RiMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdC8wMDAyLW1zZ3BhY2stQWRkLWNvbW1lbnQtZm9yLWludGVuZGVkLWZhbGx0aHJvdWdoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBkOTVjMjk3N2RhMDc0YmUwZDM5MTNlOTRmYjhmYjVlZDFjNjQ0MDRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjIgQXByIDIwMTcgMTA6MDQ6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIG1zZ3BhY2s6IEFkZCBjb21tZW50IGZvciBpbnRlbmRlZCBmYWxsdGhyb3VnaAotCi1IZWxwcyBmaXhpbmcgYnVpbGQgd2l0aCBnY2M3Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWIvbXNncGFjay1jLTBiN2NhYmQvaW5jbHVkZS9tc2dwYWNrL3VucGFja190ZW1wbGF0ZS5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL21zZ3BhY2stYy0wYjdjYWJkL2luY2x1ZGUvbXNncGFjay91bnBhY2tfdGVtcGxhdGUuaCBiL2xpYi9tc2dwYWNrLWMtMGI3Y2FiZC9pbmNsdWRlL21zZ3BhY2svdW5wYWNrX3RlbXBsYXRlLmgKLWluZGV4IGE2ZGFlNmYuLjY1MWU2YzIgMTAwNjQ0Ci0tLS0gYS9saWIvbXNncGFjay1jLTBiN2NhYmQvaW5jbHVkZS9tc2dwYWNrL3VucGFja190ZW1wbGF0ZS5oCi0rKysgYi9saWIvbXNncGFjay1jLTBiN2NhYmQvaW5jbHVkZS9tc2dwYWNrL3VucGFja190ZW1wbGF0ZS5oCi1AQCAtMjQ4LDcgKzI0OCw3IEBAIG1zZ3BhY2tfdW5wYWNrX2Z1bmMoaW50LCBfZXhlY3V0ZSkobXNncGFja191bnBhY2tfc3RydWN0KF9jb250ZXh0KSogY3R4LCBjb25zdCBjCi0gCi0gICAgICAgICAgICAgX2ZpeGVkX3RyYWlsX2FnYWluOgotICAgICAgICAgICAgICAgICArK3A7Ci0tCi0rICAgICAgICAgICAgLy8gZmFsbHRocm91Z2gKLSAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICBpZigoc2l6ZV90KShwZSAtIHApIDwgdHJhaWwpIHsgZ290byBfb3V0OyB9Ci0gICAgICAgICAgICAgICAgIG4gPSBwOyAgcCArPSB0cmFpbCAtIDE7Ci0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0L2plbWFsbG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdC9qZW1hbGxvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmFmOTJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdC9qZW1hbGxvYy5wYXRjaApAQCAtMCwwICsxLDE4IEBACitBZGQgIC0td2l0aC1qZW1hbGxvYy1wcmVmaXg9amVfIHNvIGl0IGNvbXBpbGVzIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogZmx1ZW50LWJpdC0wLjEyLjEvQ01ha2VMaXN0cy50eHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmbHVlbnQtYml0LTAuMTIuMS5vcmlnL0NNYWtlTGlzdHMudHh0CisrKysgZmx1ZW50LWJpdC0wLjEyLjEvQ01ha2VMaXN0cy50eHQKK0BAIC0zMjUsNyArMzI1LDcgQEAgaWYoRkxCX0pFTUFMTE9DIEFORCAke0NNQUtFX1NZU1RFTV9OQU1FfQorICAgIyBMaW5rIHRvIEplbWFsbG9jIGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kKKyAgIEV4dGVybmFsUHJvamVjdF9BZGQoamVtYWxsb2MKKyAgICAgU09VUkNFX0RJUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbGliL2plbWFsbG9jCistICAgIENPTkZJR1VSRV9DT01NQU5EICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvamVtYWxsb2MvY29uZmlndXJlICR7QVVUT0NPTkZfSE9TVF9PUFR9IC0td2l0aC1sZy1xdWFudHVtPTMgLS1lbmFibGUtY2Mtc2lsZW5jZSAtLXByZWZpeD08SU5TVEFMTF9ESVI+CisrICAgIENPTkZJR1VSRV9DT01NQU5EICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saWIvamVtYWxsb2MvY29uZmlndXJlIC0td2l0aC1qZW1hbGxvYy1wcmVmaXg9amVfICR7QVVUT0NPTkZfSE9TVF9PUFR9IC0td2l0aC1sZy1xdWFudHVtPTMgLS1lbmFibGUtY2Mtc2lsZW5jZSAtLXByZWZpeD08SU5TVEFMTF9ESVI+CisgICAgIENGTEFHUz0tc3RkPWdudTk5XCAtV2FsbFwgLXBpcGVcIC1nM1wgLU8zXCAtZnVucm9sbC1sb29wcworICAgICBCVUlMRF9DT01NQU5EICR7TUFLRX0KKyAgICAgSU5TVEFMTF9ESVIgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjExLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0XzAuMTEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ3NTZlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0XzAuMTEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiRmFzdCBkYXRhIGNvbGxlY3RvciBmb3IgRW1iZWRkZWQgTGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vZmx1ZW50Yml0LmlvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vZmx1ZW50L2ZsdWVudC1iaXQvaXNzdWVzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mbHVlbnRiaXQuaW8vcmVsZWFzZXMvMC4xMS9mbHVlbnQtYml0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LUFkZC1BVVRPQ09ORl9IT1NUX09QVC10by1oZWxwLWNyb3NzLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tc2dwYWNrLUFkZC1jb21tZW50LWZvci1pbnRlbmRlZC1mYWxsdGhyb3VnaC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5MzgzMjYyMzM5NDEyNzgyYjgwY2M0OWU3YWQxNTYwOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlYjhhODVjNjU2ZmE2MDY4MmIwYmY4ZGQxYWQ1OGQ4NDhjZDI1MWRhYjRmMzVhNjc3N2FjZDU1MmM2NWIwNTExIgotCi1TID0gIiR7V09SS0RJUn0vZmx1ZW50LWJpdC0ke1BWfSIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmVlNDExMTJhNDRmZTcwMTRkY2UzM2UyNjQ2OGJhOTMiCi0KLURFUEVORFMgPSAiemxpYiIKLUlOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKLQotaW5oZXJpdCBjbWFrZSBzeXN0ZW1kCi0KLUVYVFJBX09FQ01BS0UgPSAiLURHTlVfSE9TVD0ke0hPU1RfU1lTfSIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImZsdWVudC1iaXQuc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMC4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJlZGQwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMC4xMi4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiRmFzdCBkYXRhIGNvbGxlY3RvciBmb3IgRW1iZWRkZWQgTGludXgiCitIT01FUEFHRSA9ICJodHRwOi8vZmx1ZW50Yml0LmlvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vZmx1ZW50L2ZsdWVudC1iaXQvaXNzdWVzIgorCitTUkNfVVJJID0gImh0dHA6Ly9mbHVlbnRiaXQuaW8vcmVsZWFzZXMvMC4xMi9mbHVlbnQtYml0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9qZW1hbGxvYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZsdWVudC1iaXQtc2hhcmVkLUxpbmstd2l0aC1scHRocmVhZC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjQ0NzJjYjdlNzIxM2EwMTQyNWFmOTEyMTU3NjgyNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWMwNTM2NWJhZWE3MjMwMzMxNjU2ODc2MTFiM2JiYTNlNjdhNzdkY2U3MmUyODJlOWYwMDBmN2FjZjllMzdiIgorCitTID0gIiR7V09SS0RJUn0vZmx1ZW50LWJpdC0ke1BWfSIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmVlNDExMTJhNDRmZTcwMTRkY2UzM2UyNjQ2OGJhOTMiCisKK0RFUEVORFMgPSAiemxpYiIKK0lOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKKworaW5oZXJpdCBjbWFrZSBzeXN0ZW1kCisKK0VYVFJBX09FQ01BS0UgPSAiLURHTlVfSE9TVD0ke0hPU1RfU1lTfSAtREZMQl9BTEw9T04gLURGTEJfVEQ9MSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInRkLWFnZW50LWJpdC5zZXJ2aWNlIgorCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmQgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hpcmVkaXMvZmlsZXMvMDAwMS1NYWtlZmlsZS1yZW1vdmUtaGFyZGNvZGluZy1vZi1DQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hpcmVkaXMvZmlsZXMvMDAwMS1NYWtlZmlsZS1yZW1vdmUtaGFyZGNvZGluZy1vZi1DQy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWYyYmM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGlyZWRpcy9maWxlcy8wMDAxLU1ha2VmaWxlLXJlbW92ZS1oYXJkY29kaW5nLW9mLUNDLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gZDEzYjkxOGEzZmY4YjBlYmZkMWU3YjE4YjE5OGI0YjQ1ODQxZDcyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBHYWxidXNlcmEgPGdpemVyb0BnbWFpbC5jb20+CitEYXRlOiBGcmksIDMxIEp1bCAyMDE1IDE2OjQyOjA4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiByZW1vdmUgaGFyZGNvZGluZyBvZiBDQworCisqIHVwZ3JhZGUgcHJldmlvdXMgcGF0Y2ggdG8gYXZvaWQgd2lwaW5nIENGTEFHUy4gVGhpcyBmaXhlcyBidWlsZCBvbiBhcm0KK3BsYXRmb3JtcyB3aGljaCBwcmV2aW91c2x5IGNhdXNlZCBhbmQgaXNzdWUgZHVlIHRvIC1mUElDIGJlaW5nIGxvc3QKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhIEdhbGJ1c2VyYSA8Z2l6ZXJvQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgNSAtLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggOGIwZjBjMi4uNjZhNDMxNyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTM0LDExICszNCw2IEBAIGRlZmluZSBSRURJU19URVNUX0NPTkZJRworIGVuZGVmCisgZXhwb3J0IFJFRElTX1RFU1RfQ09ORklHCisgCistIyBGYWxsYmFjayB0byBnY2Mgd2hlbiAkQ0MgaXMgbm90IGluICRQQVRILgorLUNDOj0kKHNoZWxsIHNoIC1jICd0eXBlICQoQ0MpID4vZGV2L251bGwgMj4vZGV2L251bGwgJiYgZWNobyAkKENDKSB8fCBlY2hvIGdjYycpCistT1BUSU1JWkFUSU9OPz0tTzMKKy1XQVJOSU5HUz0tV2FsbCAtVyAtV3N0cmljdC1wcm90b3R5cGVzIC1Xd3JpdGUtc3RyaW5ncworLURFQlVHPz0gLWcgLWdnZGIKKyBSRUFMX0NGTEFHUz0kKE9QVElNSVpBVElPTikgLWZQSUMgJChDRkxBR1MpICQoV0FSTklOR1MpICQoREVCVUcpICQoQVJDSCkKKyBSRUFMX0xERkxBR1M9JChMREZMQUdTKSAkKEFSQ0gpCisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hpcmVkaXMvaGlyZWRpc18wLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oaXJlZGlzL2hpcmVkaXNfMC4xMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTMwZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oaXJlZGlzL2hpcmVkaXNfMC4xMy4xLmJiCkBAIC0wLDAgKzEsMjIgQEAKK0RFU0NSSVBUSU9OID0gIk1pbmltYWxpc3RpYyBDIGNsaWVudCBsaWJyYXJ5IGZvciBSZWRpcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL3JlZGlzL2hpcmVkaXMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAicmVkaXMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4NGQ2NTlhMzVjNjY2ZDIzMjMzZTU0NTAzYWFlYTUxIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JlZGlzL2hpcmVkaXM7cHJvdG9jb2w9Z2l0O3Jldj1mNThkZDI0OWQ2ZWQ0N2E3ZTgzNTQ2M2MzYjA0NzIyOTcyMjgxZGJiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtcmVtb3ZlLWhhcmRjb2Rpbmctb2YtQ0MucGF0Y2giCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworRVhUUkFfT0VNQUtFID0gIlBSRUZJWD0ke3ByZWZpeH0iCisKKyMgQnkgZGVmYXVsdCBJTlNUQUxMIHZhcmlhYmxlIGluIE1ha2VmaWxlIGlzIGVxdWFsIHRvICdjcCAtYScsIHdoaWNoIHByZXNlcnZlcworIyBvd25lcnNoaXAgYW5kIGNhdXNlcyBob3N0LXVzZXItY29udGFtaW5hdGlvbiBRQSBpc3N1ZS4KKyMgQW5kIFBSRUZJWCBkZWZhdWx0cyB0byAvdXNyL2xvY2FsLgorZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICBleHBvcnQgSU5TVEFMTD0nY3AgLXInCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9od2xvYy9od2xvY18xLjExLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9od2xvYy9od2xvY18xLjExLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzMzViOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2h3bG9jL2h3bG9jXzEuMTEuNS5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlBvcnRhYmxlIEhhcmR3YXJlIExvY2FsaXR5IChod2xvYykgc29mdHdhcmUgcGFja2FnZSIKK0RFU0NSSVBUSU9OID0gIlRoZSBQb3J0YWJsZSBIYXJkd2FyZSBMb2NhbGl0eSAoaHdsb2MpIHNvZnR3YXJlIHBhY2thZ2UgXAorIHByb3ZpZGVzIGEgcG9ydGFibGUgYWJzdHJhY3Rpb24gb2YgdGhlIGhpZXJhcmNoaWNhbCB0b3BvbG9neSBvZiBtb2Rlcm4gXAorIGFyY2hpdGVjdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cub3Blbi1tcGkub3JnL3NvZnR3YXJlL2h3bG9jLyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzI4MmUyMGRjM2NlYzMxMWRlZGEzYzZkNGIxZjk5MGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cub3Blbi1tcGkub3JnL3NvZnR3YXJlLyR7UE59L3YxLjExL2Rvd25sb2Fkcy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjk2YzM0MTM2ZmY0MTZkMmIxM2E3ODIxYzI3NDc3YmVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1ZDgwMjg2ZGZlNjU4YTNmNzllMmFjOTA2OTg3ODJiYjM2ZTU1MDRmNGJhYzFiYmEyMzk0YmExNGRiYmFkMjQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitERVBFTkRTICs9ICJuY3Vyc2VzIHVkZXYgemxpYiIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdsaWJzZWxpbnV4JywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/PSAicGNpIGxpYnhtbDIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tudW1hY3RsXSA9ICItLWVuYWJsZS1saWJudW1hLC0tZGlzYWJsZS1saWJudW1hLG51bWFjdGwsbnVtYWN0bCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS1lbmFibGUtbGlieG1sMiwtLWRpc2FibGUtbGlieG1sMixsaWJ4bWwyLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgsdmlydHVhbC9saWJ4MTEgY2Fpcm8sY2Fpcm8iCitQQUNLQUdFQ09ORklHW3BjaV0gPSAiLS1lbmFibGUtcGNpLC0tZGlzYWJsZS1wY2ksbGlicGNpYWNjZXNzLGxpYnBjaWFjY2VzcyIKKworIyBTcGxpdCBod2xvYyBsaWJyYXJ5IGludG8gc2VwYXJhdGUgc3VicGFja2FnZQorUEFDS0FHRVNfcHJlcGVuZCA9ICIgbGliaHdsb2MgIgorRklMRVNfbGliaHdsb2MgKz0gIiR7bGliZGlyfS9saWJod2xvYy5zby4qIgorUkRFUEVORFNfJHtQTn0gKz0gImxpYmh3bG9jICg9ICR7RVhURU5EUEtHVn0pIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2ZpbGVzLzAwMDEtdHdlYWstaW5zdGFsbC1wcmVmaXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vZmlsZXMvMDAwMS10d2Vhay1pbnN0YWxsLXByZWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2ZjMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2ZpbGVzLzAwMDEtdHdlYWstaW5zdGFsbC1wcmVmaXgucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorRnJvbSBjZmZlNDc2N2Y4OWVhMGI1NGI1N2U4YmY5MDY1YTA4YTljMzhkNDZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxOCBKdWwgMjAxNyAyMTo1MzowMCAtMDQwMAorU3ViamVjdDogW1BBVENIXSB0d2VhayBpbnN0YWxsIHByZWZpeAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZSB8IDI4ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBkZjE2YTNiLi5mYmRmY2I0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMzksMjYgKzM5LDI2IEBAIHB5aXNvbWQ1c3VtLnNvOiAkKFBZT0JKUykKKyBpbnN0YWxsOiBhbGwgaW5zdGFsbC1iaW4gaW5zdGFsbC1weXRob24gaW5zdGFsbC1kZXZlbAorIAorIGluc3RhbGwtYmluOgorLQlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKS91c3IvYmluCistCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpL3Vzci9zaGFyZS9tYW4vbWFuMQorLQlpbnN0YWxsIC1tIDA3NTUgaW1wbGFudGlzb21kNSAkKERFU1RESVIpL3Vzci9iaW4KKy0JaW5zdGFsbCAtbSAwNzU1IGNoZWNraXNvbWQ1ICQoREVTVERJUikvdXNyL2JpbgorLQlpbnN0YWxsIC1tIDA2NDQgaW1wbGFudGlzb21kNS4xICQoREVTVERJUikvdXNyL3NoYXJlL21hbi9tYW4xCistCWluc3RhbGwgLW0gMDY0NCBjaGVja2lzb21kNS4xICQoREVTVERJUikvdXNyL3NoYXJlL21hbi9tYW4xCisrCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChiaW5kaXIpCisrCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKKysJaW5zdGFsbCAtbSAwNzU1IGltcGxhbnRpc29tZDUgJChERVNURElSKSQoYmluZGlyKQorKwlpbnN0YWxsIC1tIDA3NTUgY2hlY2tpc29tZDUgJChERVNURElSKSQoYmluZGlyKQorKwlpbnN0YWxsIC1tIDA2NDQgaW1wbGFudGlzb21kNS4xICQoREVTVERJUikkKG1hbmRpcikvbWFuMQorKwlpbnN0YWxsIC1tIDA2NDQgY2hlY2tpc29tZDUuMSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKKyAKKyBpbnN0YWxsLXB5dGhvbjoKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBZVEhPTlNJVEVQQUNLQUdFUykKKyAJaW5zdGFsbCAtbSAwNzU1IHB5aXNvbWQ1c3VtLnNvICQoREVTVERJUikkKFBZVEhPTlNJVEVQQUNLQUdFUykKKyAKKyBpbnN0YWxsLWRldmVsOgorLQlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKS91c3IvaW5jbHVkZQorLQlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKS91c3IvJChMSUJESVIpCistCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpL3Vzci9zaGFyZS9wa2djb25maWcKKy0JaW5zdGFsbCAtbSAwNjQ0IGxpYmltcGxhbnRpc29tZDUuaCAkKERFU1RESVIpL3Vzci9pbmNsdWRlLworLQlpbnN0YWxsIC1tIDA2NDQgbGliY2hlY2tpc29tZDUuaCAkKERFU1RESVIpL3Vzci9pbmNsdWRlLworLQlpbnN0YWxsIC1tIDA2NDQgbGliaW1wbGFudGlzb21kNS5hICQoREVTVERJUikvdXNyLyQoTElCRElSKQorLQlpbnN0YWxsIC1tIDA2NDQgbGliY2hlY2tpc29tZDUuYSAkKERFU1RESVIpL3Vzci8kKExJQkRJUikKKy0Jc2VkICJzI0BWRVJTSU9OQCMke1ZFUlNJT059I2c7IHMjQGluY2x1ZGVkaXJAIyR7REVTVERJUn0vdXNyL2luY2x1ZGUjZzsgcyNAbGliZGlyQCMke0RFU1RESVJ9L3Vzci8ke0xJQkRJUn0jZyIgaXNvbWQ1c3VtLnBjLmluID4gJHtERVNURElSfS91c3Ivc2hhcmUvcGtnY29uZmlnL2lzb21kNXN1bS5wYworKwlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoaW5jbHVkZWRpcikKKysJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKGxpYmRpcikKKysJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikke2RhdGFkaXJ9L3BrZ2NvbmZpZworKwlpbnN0YWxsIC1tIDA2NDQgbGliaW1wbGFudGlzb21kNS5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCisrCWluc3RhbGwgLW0gMDY0NCBsaWJjaGVja2lzb21kNS5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCisrCWluc3RhbGwgLW0gMDY0NCBsaWJpbXBsYW50aXNvbWQ1LmEgJChERVNURElSKSQobGliZGlyKQorKwlpbnN0YWxsIC1tIDA2NDQgbGliY2hlY2tpc29tZDUuYSAkKERFU1RESVIpJChsaWJkaXIpCisrCXNlZCAicyNAVkVSU0lPTkAjJHtWRVJTSU9OfSNnOyBzI0BpbmNsdWRlZGlyQCMke0RFU1RESVJ9L3Vzci9pbmNsdWRlI2c7IHMjQGxpYmRpckAjJHtERVNURElSfS91c3IvJHtMSUJESVJ9I2ciIGlzb21kNXN1bS5wYy5pbiA+ICR7REVTVERJUn0ke2RhdGFkaXJ9L3BrZ2NvbmZpZy9pc29tZDVzdW0ucGMKKyAKKyBjbGVhbjoKKyAJcm0gLWYgKi5vICouc28gKi5weWMgKi5hIC5kZXBlbmQgKn4KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2ZpbGVzLzAwMDItZml4LXBhcmFsbGVsLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2ZpbGVzLzAwMDItZml4LXBhcmFsbGVsLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMzNlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vZmlsZXMvMDAwMi1maXgtcGFyYWxsZWwtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAyYWNjZTdiYzhhYjc3MTFlNzZjNzc2NWM4NGExOThmZTM4ZjI0N2YzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxOCBKdWwgMjAxNyAyMzowNjo0MSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBmaXggcGFyYWxsZWwgZXJyb3IKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggZmJkZmNiNC4uMmFkMzIzOCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTI5LDkgKzI5LDExIEBAIGltcGxhbnRpc29tZDU6IGltcGxhbnRpc29tZDUubyBsaWJpbXBsYW50aXNvbWQ1LmEKKyBjaGVja2lzb21kNTogY2hlY2tpc29tZDUubyBsaWJjaGVja2lzb21kNS5hCisgCSQoQ0MpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSBjaGVja2lzb21kNS5vIGxpYmNoZWNraXNvbWQ1LmEgLWxwb3B0ICQoTERGTEFHUykgLW8gY2hlY2tpc29tZDUKKyAKKy1saWJpbXBsYW50aXNvbWQ1LmE6IGxpYmltcGxhbnRpc29tZDUuYShsaWJpbXBsYW50aXNvbWQ1Lm8gbWQ1Lm8gdXRpbGl0aWVzLm8pCisrbGliaW1wbGFudGlzb21kNS5hOiBsaWJpbXBsYW50aXNvbWQ1Lm8gbWQ1Lm8gdXRpbGl0aWVzLm8KKysJJChBUikgcnYgJEAgJF4KKyAKKy1saWJjaGVja2lzb21kNS5hOiBsaWJjaGVja2lzb21kNS5hKGxpYmNoZWNraXNvbWQ1Lm8gbWQ1Lm8gdXRpbGl0aWVzLm8pCisrbGliY2hlY2tpc29tZDUuYTogbGliY2hlY2tpc29tZDUubyBtZDUubyB1dGlsaXRpZXMubworKwkkKEFSKSBydiAkQCAkXgorIAorIHB5aXNvbWQ1c3VtLnNvOiAkKFBZT0JKUykKKyAJJChDQykgJChDUFBGTEFHUykgJChDRkxBR1MpIC1zaGFyZWQgLWcgLWZwaWMgJChQWU9CSlMpICQoTERGTEFHUykgLW8gcHlpc29tZDVzdW0uc28KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2lzb21kNXN1bV8xLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lzb21kNXN1bS9pc29tZDVzdW1fMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE1MTEzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lzb21kNXN1bS9pc29tZDVzdW1fMS4yLjEuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJUb29scyBmb3IgdGFraW5nIHRoZSBNRDUgc3VtIG9mIElTTyBpbWFnZXMiCitERVNDUklQVElPTiA9ICJUb29scyBmb3IgdGFraW5nIHRoZSBNRDUgc3VtIG9mIElTTyBpbWFnZXMiCisKK0RFUEVORFMgPSAicG9wdCBweXRob24zIG9wZW5zc2wgY3VybCBwb3B0LW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ID0gIm9wZW5zc2wgY3VybCIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvaXNvbWQ1c3VtLmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdHdlYWstaW5zdGFsbC1wcmVmaXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtcGFyYWxsZWwtZXJyb3IucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgoraW5oZXJpdCBweXRob24zbmF0aXZlCisKK0VYVFJBX09FTUFLRSArPSAiIFwKKyAgICBERVNURElSPScke0R9JyBcCisgICAgUFlUSE9OSU5DTFVERT0nLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfScgXAorICAgIFBZVEhPTlNJVEVQQUNLQUdFUz0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyIKKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsCit9CisKK1BBQ0tBR0VTICs9ICIke1BZVEhPTl9QTn0tJHtQTn0gJHtQWVRIT05fUE59LSR7UE59LWRiZyIKKworRklMRVNfJHtQWVRIT05fUE59LSR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5aXNvbWQ1c3VtLnNvIgorRklMRVNfJHtQWVRIT05fUE59LSR7UE59LWRiZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWcvcHlpc29tZDVzdW0uc28iCisKK1NSQ1JFViA9ICI2OWRjMDM2ZDIwNzYxNzE1YjczNGNhOWNjNTllY2M2ZGM4MTQ1MDI2IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpLW5hdGl2ZV8wLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpLW5hdGl2ZV8wLjkuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIyYWNlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waS1uYXRpdmVfMC45LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgZm9yIHJhcGlkIENNUEkgcHJvdmlkZXJzIGRldmVsb3BtZW50IgotREVTQ1JJUFRJT04gPSAiXAotS29ua3JldENNUEkgbWFrZXMgQ01QSSBwcm92aWRlciBkZXZlbG9wbWVudCBlYXNpZXIgYnkgZ2VuZXJhdGluZyB0eXBlLXNhZmUgXAotY29uY3JldGUgQ0lNIGludGVyZmFjZXMgZnJvbSBNT0YgZGVmaW5pdGlvbnMgYW5kIGJ5IHByb3ZpZGluZyBkZWZhdWx0IFwKLWltcGxlbWVudGF0aW9ucyBmb3IgbWFueSBvZiB0aGUgcHJvdmlkZXIgb3BlcmF0aW9ucy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcm5vdmFjZWsva29ua3JldGNtcGkiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY2NzMyNzBiZmMzNTBkOWNlMWVmYzg3MjRjNmMxODczIgotREVQRU5EUyA9ICJjbWFrZS1uYXRpdmUgY21waS1iaW5kaW5ncy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ybm92YWNlay9rb25rcmV0Y21waS5naXQgXAotICAgICAgICAgICBmaWxlOi8va29ua3JldGNtcGktMC45LjItZml4LXJldHVybmluZy1pbnN0YW5jZS1mcm9tLW1ldGhvZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LWZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC0ucGF0Y2ggIgotCi1TUkNSRVYgPSAiNDYwZTY0MjFjMTZhODIxNmQyOWNjZDFiNzQ5MGY4MTRkYWI4Yjc2OSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgbmF0aXZlIGNtYWtlCi1MREZMQUdTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgotCi1FWFRSQV9PRUNNQUtFID0gIi1EV0lUSF9QWVRIT049T04gXAotICAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliMzIiLCAiLURMSUJfU1VGRklYPTMyIiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpLzAwMDEtZHJvcC1pbmNsdWRpbmctcnBhdGgtY21ha2UtbW9kdWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGkvMDAwMS1kcm9wLWluY2x1ZGluZy1ycGF0aC1jbWFrZS1tb2R1bGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQyMDE3YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpLzAwMDEtZHJvcC1pbmNsdWRpbmctcnBhdGgtY21ha2UtbW9kdWxlLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gNDVlMWM0YzA0YTEyNmQyMzg2NDQ2Nzc1Zjk5MDg0YmQ2MDMwMTZhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEgSnVuIDIwMTcgMjM6MTA6NTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZHJvcCBpbmNsdWRpbmcgcnBhdGggY21ha2UgbW9kdWxlCisKK0ZpeGVzIGNyb3NzIGNvbXBpbGF0aW9uIFFBIGVycm9ycyBlLmcuCisvdXNyL2xpYi9saWJrb25rcmV0LnNvLjAuMC4xIGNvbnRhaW5zIHByb2JhYmx5LXJlZHVuZGFudCBSUEFUSCAvdXNyL2xpYiBbdXNlbGVzcy1ycGF0aHNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMva29ua3JldC9DTWFrZUxpc3RzLnR4dCB8IDEgLQorIHNyYy9wcm9ncmFtL0NNYWtlTGlzdHMudHh0IHwgMSAtCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2tvbmtyZXQvQ01ha2VMaXN0cy50eHQgYi9zcmMva29ua3JldC9DTWFrZUxpc3RzLnR4dAoraW5kZXggYzJmYWE0MC4uZGY0OWUxMSAxMDA2NDQKKy0tLSBhL3NyYy9rb25rcmV0L0NNYWtlTGlzdHMudHh0CisrKysgYi9zcmMva29ua3JldC9DTWFrZUxpc3RzLnR4dAorQEAgLTgsNyArOCw2IEBAIHNldChrb25rcmV0X1NSQ1MKKyAgICAga3N0ci5jCisgICAgIHByaW50LmMKKyApCistaW5jbHVkZShycGF0aCkKKyBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7Q01QSV9JTkNMVURFX0RJUn0pCisgCisgYWRkX2xpYnJhcnkobGlia29ua3JldCBTSEFSRUQgJHtrb25rcmV0X1NSQ1N9KQorZGlmZiAtLWdpdCBhL3NyYy9wcm9ncmFtL0NNYWtlTGlzdHMudHh0IGIvc3JjL3Byb2dyYW0vQ01ha2VMaXN0cy50eHQKK2luZGV4IGFmY2VmZTUuLjhhNDY0NmMgMTAwNjQ0CistLS0gYS9zcmMvcHJvZ3JhbS9DTWFrZUxpc3RzLnR4dAorKysrIGIvc3JjL3Byb2dyYW0vQ01ha2VMaXN0cy50eHQKK0BAIC0xLDQgKzEsMyBAQAorLWluY2x1ZGUgKHJwYXRoKQorIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTVBJX0lOQ0xVREVfRElSfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYykKKyAKKyBhZGRfZXhlY3V0YWJsZShrb25rcmV0IG1haW4uY3BwKQorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGkva29ua3JldGNtcGktMC45LjItZml4LXJldHVybmluZy1pbnN0YW5jZS1mcm9tLW1ldGhvZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpLTAuOS4yLWZpeC1yZXR1cm5pbmctaW5zdGFuY2UtZnJvbS1tZXRob2QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NGQwOTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGkva29ua3JldGNtcGktMC45LjItZml4LXJldHVybmluZy1pbnN0YW5jZS1mcm9tLW1ldGhvZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVBvcnQgZnJvbSBGZWRvcmEyMAotCi0gICAgfCBjb21taXQgYWNhNmM3ZjkxMGZmZTk5MzBiNTc4OTk2OWYwYWRmYWRkNjY4YmI0NgotICAgIHwgQXV0aG9yOiBNaWNoYWwgTWluYXIgPG1pbWluYXJAcmVkaGF0LmNvbT4KLSAgICB8IERhdGU6ICAgRnJpIEp1biAyMCAxMDo1MDo0NSAyMDE0ICswMjAwCi0gICAgfCAKLSAgICB8ICAgICBGaXggcmV0dXJuaW5nIGluc3RhbmNlIGFzIGFuIG91dHB1dCBhcmd1bWVudCBmcm9tIG1ldGhvZAotICAgIHwgICAgIAotICAgIHwgICAgIFN1Ym1pdHRlZCBCeTogUmFkZWsgTm92YWNlayA8cm5vdmFjZWtAcmVkaGF0LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBRaWFuIExlaSA8cWlhbmwuZm5zdEBjbi5mdWppdHN1LmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy9wcm9ncmFtL21haW4uY3BwIGIvc3JjL3Byb2dyYW0vbWFpbi5jcHAKLWluZGV4IDg4NWRjMTIuLjllNzEwOGEgMTAwNjQ0Ci0tLS0gYS9zcmMvcHJvZ3JhbS9tYWluLmNwcAotKysrIGIvc3JjL3Byb2dyYW0vbWFpbi5jcHAKLUBAIC01MDYsNyArNTA2LDExIEBAIHN0YXRpYyB2b2lkIGdlbl9mZWF0dXJlX2RlY2xzKAotIAotICAgICAgICAgICAgIC8vIEFkZCBzaWcgZW50cnkgW3R5cGVdW2xlbmd0aF1bbmFtZV1bemVyby10ZXJtaW5hdG9yXQotIAotLSAgICAgICAgICAgIEtUYWcgdGFnID0gX2t0YWcocGQtPmRhdGFfdHlwZSwgcGQtPmFycmF5X2luZGV4LCBrZXksIGZhbHNlLCBmYWxzZSk7Ci0rICAgICAgICAgICAgS1RhZyB0YWc7Ci0rICAgICAgICAgICAgaWYgKHBkLT5xdWFsaWZpZXJzLT5oYXNfa2V5KCJFbWJlZGRlZEluc3RhbmNlIikpCi0rICAgICAgICAgICAgICAgIHRhZyA9IF9rdGFnKFRPS19JTlNUQU5DRSwgcGQtPmFycmF5X2luZGV4LCBrZXksIGZhbHNlLCBmYWxzZSk7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICB0YWcgPSBfa3RhZyhwZC0+ZGF0YV90eXBlLCBwZC0+YXJyYXlfaW5kZXgsIGtleSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgICBwYWNrX3RhZyhzaWcsIHRhZyk7Ci0gICAgICAgICAgICAgcGFja19uYW1lKHNpZywgcGQtPm5hbWUpOwotICAgICAgICAgICAgIGNvdW50Kys7Ci1AQCAtNjQwLDYgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIGdlbl9wYXJhbShGSUxFKiBvcywgTU9GX1BhcmFtZXRlciogcCwgdmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBzaWcpCi0gICAgICAgICBjb25zdCBjaGFyKiBrdG4gPSBfa3R5cGVfbmFtZShwLT5kYXRhX3R5cGUpOwotIAotICAgICAgICAgaWYgKHAtPnF1YWxpZmllcnMtPmhhc19rZXkoIkVtYmVkZGVkSW5zdGFuY2UiKSkgewotKyAgICAgICAgICAgIHRhZyA9IF9rdGFnKFRPS19JTlNUQU5DRSwgcC0+YXJyYXlfaW5kZXgsIGZhbHNlLCBpbiwgb3V0KTsKLSAgICAgICAgICAgICBpZiAocC0+YXJyYXlfaW5kZXgpCi0gICAgICAgICAgICAgICAgIHB1dChvcywgIiAgICBLSW5zdGFuY2VBICQwO1xuIiwgcC0+bmFtZSwgTlVMTCk7Ci0gICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgppbmRleCAxZDhiMGRiLi5jYmYwNDczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgpAQCAtNiwxNCArNiwxNSBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Jub3ZhY2VrL2tvbmtyZXRjbXBpIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNjczMjcwYmZjMzUwZDljZTFlZmM4NzI0YzZjMTg3MyIKLURFUEVORFMgPSAic3dpZy1uYXRpdmUgc2JsaW0tY21waS1kZXZlbCBweXRob24iCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHN3aWctbmF0aXZlIHNibGltLWNtcGktZGV2ZWwgcHl0aG9uIgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBjbXBpLWJpbmRpbmdzLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Jub3ZhY2VrL2tvbmtyZXRjbXBpLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9rb25rcmV0Y21waS0wLjkuMi1maXgtcmV0dXJuaW5nLWluc3RhbmNlLWZyb20tbWV0aG9kLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRyb3AtaW5jbHVkaW5nLXJwYXRoLWNtYWtlLW1vZHVsZS5wYXRjaCBcCiAgICAgICAgICAgICIKIAotU1JDUkVWID0gIjQ2MGU2NDIxYzE2YTgyMTZkMjljY2QxYjc0OTBmODE0ZGFiOGI3NjkiCitTUkNSRVYgPSAiYWQyODIyNWU2ZWNlZmY4ODQxN2E2MGMxYmE4ODk2YzhlNDBmMjFhNyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgY21ha2UKQEAgLTIzLDYgKzI0LDggQEAKICAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliMzIiLCAiLURMSUJfU1VGRklYPTMyIiwgIiIsIGQpfSBcCiAgICAgICAgICAgICAgICAgIgogCitMREZMQUdTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgorCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0KIH0KQEAgLTMyLDMgKzM1LDQgQEAKIEZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMva29ua3JldG1vZi5weSogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL19rb25rcmV0bW9mLnNvIgogRklMRVNfJHtQTn0tcHl0aG9uLWRiZyA9ICIke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvLmRlYnVnLyoiCiAKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtRXhwbGljaXRseS1kaXNhYmxlLXRjbWFsbG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtRXhwbGljaXRseS1kaXNhYmxlLXRjbWFsbG9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Yjc2ZGQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAxLUV4cGxpY2l0bHktZGlzYWJsZS10Y21hbGxvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gZDZkYWFjMDRkYWI0YjNhY2Y0Yjg4ZjE2NzQyZDFiNDAyY2RjM2Q4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMSBPY3QgMjAxNCAxODo1NDowNCArMDIwMAotU3ViamVjdDogW1BBVENIXSBFeHBsaWNpdGx5IGRpc2FibGUgdGNtYWxsb2MKLQotV2l0aG91dCB0aGlzIGNoYW5nZSBsZXZlbGRiIGF1dG9kZXRlY3RzIHRjbWFsbG9jIGZyb20gc3lzcm9vdCBhbmQKLXNvbWV0aW1lcyBiZWNhbWUgZGVwZW5kYW50IG9uIGdwZXJmdG9vbHMKLQotRGlzYWJsZSBhdXRvZGV0ZWN0aW9uIHdpdGhvdXQgVENNQUxMT0NfRU5BQkxFRD10cnVlIHBhc2VkIHRvIG1ha2UKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBidWlsZF9kZXRlY3RfcGxhdGZvcm0gfCAxNiArKysrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2J1aWxkX2RldGVjdF9wbGF0Zm9ybSBiL2J1aWxkX2RldGVjdF9wbGF0Zm9ybQotaW5kZXggYmI3NmM0Zi4uYTU4NjM2NCAxMDA3NTUKLS0tLSBhL2J1aWxkX2RldGVjdF9wbGF0Zm9ybQotKysrIGIvYnVpbGRfZGV0ZWN0X3BsYXRmb3JtCi1AQCAtMjAxLDE1ICsyMDEsMTcgQEAgRU9GCi0gICAgICAgICBQTEFURk9STV9MSUJTPSIkUExBVEZPUk1fTElCUyAtbHNuYXBweSIKLSAgICAgZmkKLSAKLS0gICAgIyBUZXN0IHdoZXRoZXIgdGNtYWxsb2MgaXMgYXZhaWxhYmxlCi0tICAgICRDWFggJENYWEZMQUdTIC14IGMrKyAtIC1vICRDWFhPVVRQVVQgLWx0Y21hbGxvYyAyPi9kZXYvbnVsbCAgPDxFT0YKLS0gICAgICBpbnQgbWFpbigpIHt9Ci0rICAgIGlmIFsgIiRUQ01BTExPQ19FTkFCTEVEIiA9ICJ0cnVlIiBdOyB0aGVuCi0rICAgICAgICAjIFRlc3Qgd2hldGhlciB0Y21hbGxvYyBpcyBhdmFpbGFibGUKLSsgICAgICAgICRDWFggJENYWEZMQUdTIC14IGMrKyAtIC1vICRDWFhPVVRQVVQgLWx0Y21hbGxvYyAyPi9kZXYvbnVsbCAgPDxFT0YKLSsgICAgICAgICAgaW50IG1haW4oKSB7fQotIEVPRgotLSAgICBpZiBbICIkPyIgPSAwIF07IHRoZW4KLS0gICAgICAgIFBMQVRGT1JNX0xJQlM9IiRQTEFURk9STV9MSUJTIC1sdGNtYWxsb2MiCi0tICAgIGZpCi0rICAgICAgICBpZiBbICIkPyIgPSAwIF07IHRoZW4KLSsgICAgICAgICAgICBQTEFURk9STV9MSUJTPSIkUExBVEZPUk1fTElCUyAtbHRjbWFsbG9jIgotKyAgICAgICAgZmkKLSAKLS0gICAgcm0gLWYgJENYWE9VVFBVVCAyPi9kZXYvbnVsbAotKyAgICAgICAgcm0gLWYgJENYWE9VVFBVVCAyPi9kZXYvbnVsbAotKyAgICBmaQotIGZpCi0gCi0gUExBVEZPUk1fQ0NGTEFHUz0iJFBMQVRGT1JNX0NDRkxBR1MgJENPTU1PTl9GTEFHUyIKLS0tIAotMi4xLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtTWFrZWZpbGUtRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtTWFrZWZpbGUtRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMzVkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMS1NYWtlZmlsZS1GaXgtcGFyYWxsZWwtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBjODU5NzhlNzc3MjVlZjIzMzU0MzM3MGQyNGUyM2Y4NTNmNDQ5MTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgU2VwIDIwMTcgMTc6NDc6MDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IEZpeCBwYXJhbGxlbCBidWlsZAorCitTb21ldGltZXMgbWtkaXIgJChTSEFSRURfT1VURElSKS9kYiByYWNlcyB3aXRoIGNvbXBpbGVyIHdoaWNoIGlzCitjcmVhdGluZyAubyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSAkKFNIQVJFRF9PVVRESVIpL2RiL2RiX2JlbmNoLm8KKworRml4ZXMgZXJyb3IgbGlrZQorCit8IG1rZGlyIG91dC1zdGF0aWMKK3wgbWtkaXIgb3V0LXNoYXJlZC9kYgorfCBBc3NlbWJsZXIgbWVzc2FnZXM6Cit8IEZhdGFsIGVycm9yOiBjYW4ndCBjcmVhdGUgb3V0LXNoYXJlZC9kYi9kYl9iZW5jaC5vOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBNYWtlZmlsZSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBmN2NjN2Q3Li41MWEwYmNkIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMzg2LDYgKzM4Niw3IEBAICQoU1RBVElDX09VVERJUikvd3JpdGVfYmF0Y2hfdGVzdDpkYi93cml0ZV9iYXRjaF90ZXN0LmNjICQoU1RBVElDX0xJQk9CSkVDVFMpICQoCisgJChTVEFUSUNfT1VURElSKS9tZW1lbnZfdGVzdDokKFNUQVRJQ19PVVRESVIpL2hlbHBlcnMvbWVtZW52L21lbWVudl90ZXN0Lm8gJChTVEFUSUNfT1VURElSKS9saWJtZW1lbnYuYSAkKFNUQVRJQ19PVVRESVIpL2xpYmxldmVsZGIuYSAkKFRFU1RIQVJORVNTKQorIAkkKFhDUlVOKSAkKENYWCkgJChMREZMQUdTKSAkKFNUQVRJQ19PVVRESVIpL2hlbHBlcnMvbWVtZW52L21lbWVudl90ZXN0Lm8gJChTVEFUSUNfT1VURElSKS9saWJtZW1lbnYuYSAkKFNUQVRJQ19PVVRESVIpL2xpYmxldmVsZGIuYSAkKFRFU1RIQVJORVNTKSAtbyAkQCAkKExJQlMpCisgCisrJChTSEFSRURfT1VURElSKS9kYi9kYl9iZW5jaC5vOiB8ICQoU0hBUkVEX09VVERJUikvZGIKKyAkKFNIQVJFRF9PVVRESVIpL2RiX2JlbmNoOiQoU0hBUkVEX09VVERJUikvZGIvZGJfYmVuY2gubyAkKFNIQVJFRF9MSUJTKSAkKFRFU1RVVElMKQorIAkkKFhDUlVOKSAkKENYWCkgJChMREZMQUdTKSAkKENYWEZMQUdTKSAkKFBMQVRGT1JNX1NIQVJFRF9DRkxBR1MpICQoU0hBUkVEX09VVERJUikvZGIvZGJfYmVuY2gubyAkKFRFU1RVVElMKSAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjMpIC1vICRAICQoTElCUykKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAxLWJ1aWxkX2RldGVjdF9wbGF0Zm9ybS1DaGVjay1mb3ItX19TU0U0XzJfXy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAxLWJ1aWxkX2RldGVjdF9wbGF0Zm9ybS1DaGVjay1mb3ItX19TU0U0XzJfXy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjkzY2IzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtYnVpbGRfZGV0ZWN0X3BsYXRmb3JtLUNoZWNrLWZvci1fX1NTRTRfMl9fLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNWZkMDkxOGRmMmJiMzBlOGYzZWRiMmVlODk1ZDE3OGVkYmYyNmY0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDQgU2VwIDIwMTcgMjI6Mzg6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGJ1aWxkX2RldGVjdF9wbGF0Zm9ybTogQ2hlY2sgZm9yIF9fU1NFNF8yX18KKworanVzdCB1c2luZyAtbXNzZTQuMiBpcyBub3QgZW5vdWdoLCBlc3BlY2lhbGx5IHdpdGggY2xhbmcKK3doZXJlIGl0IG1heSBhY2NlcHQgLW1zc2U0LjIgZXZlbiBkdXJpbmcgY3Jvc3MgY29tcGlsaW5nCitmb3Igc2F5IGFybSwgaG93ZXZlciB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGJ1aWx0aW4gZGVmaW5lcword29udCBiZSBkZWZpbmVkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIGJ1aWxkX2RldGVjdF9wbGF0Zm9ybSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvYnVpbGRfZGV0ZWN0X3BsYXRmb3JtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvYnVpbGRfZGV0ZWN0X3BsYXRmb3JtCisrKysgZ2l0L2J1aWxkX2RldGVjdF9wbGF0Zm9ybQorQEAgLTIyNCwxMyArMjI0LDEzIEBAIEVPRgorICAgICBybSAtZiAkQ1hYT1VUUFVUIDI+L2Rldi9udWxsCisgCisgICAgICMgVGVzdCBpZiBnY2MgU1NFIDQuMiBpcyBzdXBwb3J0ZWQKKy0gICAgJENYWCAkQ1hYRkxBR1MgLXggYysrIC0gLW8gJENYWE9VVFBVVCAtbXNzZTQuMiAyPi9kZXYvbnVsbCAgPDxFT0YKKysgICAgJENYWCAkQ1hYRkxBR1MgLVdlcnJvciAteCBjKysgLSAtbyAkQ1hYT1VUUFVUIC1tc3NlNC4yIC1kRCAtRSAyPi9kZXYvbnVsbCAgPDxFT0YKKyAgICAgICBpbnQgbWFpbigpIHt9CisgRU9GCisrICAgIGV2YWwgZmdyZXAgX19TU0U0XzJfXyAkQ1hYT1VUUFVUID4vZGV2L251bGwgMj4mMQorICAgICBpZiBbICIkPyIgPSAwIF07IHRoZW4KKyAgICAgICAgIFBMQVRGT1JNX1NTRUZMQUdTPSItbXNzZTQuMiIKKyAgICAgZmkKKy0KKyAgICAgcm0gLWYgJENYWE9VVFBVVCAyPi9kZXYvbnVsbAorIGZpCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMi1tYWtlZmlsZS1idWlsZC1TSEFSRURfTUVNRU5WTElCLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDItbWFrZWZpbGUtYnVpbGQtU0hBUkVEX01FTUVOVkxJQi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzcwOGIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDItbWFrZWZpbGUtYnVpbGQtU0hBUkVEX01FTUVOVkxJQi5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDFlZDhjZWMxZmNmNjY2OTA0YmIzZWJkMjlmYzg1ZTIzNWI3MmQxMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA0IFNlcCAyMDE3IDIyOjQwOjQ5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBtYWtlZmlsZTogYnVpbGQgU0hBUkVEX01FTUVOVkxJQgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIE1ha2VmaWxlIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggZjdjYzdkNy4uY2I0MjI3OCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTEyNiwxMiArMTI2LDEyIEBAIFNIQVJFRF9WRVJTSU9OX01JTk9SID0gMjAKKyBTSEFSRURfTElCMSA9IGxpYmxldmVsZGIuJChQTEFURk9STV9TSEFSRURfRVhUKQorIFNIQVJFRF9MSUIyID0gJChTSEFSRURfTElCMSkuJChTSEFSRURfVkVSU0lPTl9NQUpPUikKKyBTSEFSRURfTElCMyA9ICQoU0hBUkVEX0xJQjEpLiQoU0hBUkVEX1ZFUlNJT05fTUFKT1IpLiQoU0hBUkVEX1ZFUlNJT05fTUlOT1IpCistU0hBUkVEX0xJQlMgPSAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjEpICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMikgJChTSEFSRURfT1VURElSKS8kKFNIQVJFRF9MSUIzKQorK1NIQVJFRF9MSUJTID0gJChTSEFSRURfT1VURElSKS8kKFNIQVJFRF9MSUIxKSAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjIpICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMykgJChTSEFSRURfTUVNRU5WTElCKQorICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMSk6ICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMykKKyAJbG4gLWZzICQoU0hBUkVEX0xJQjMpICQoU0hBUkVEX09VVERJUikvJChTSEFSRURfTElCMSkKKyAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjIpOiAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjMpCisgCWxuIC1mcyAkKFNIQVJFRF9MSUIzKSAkKFNIQVJFRF9PVVRESVIpLyQoU0hBUkVEX0xJQjIpCistU0hBUkVEX01FTUVOVkxJQiA9ICQoU0hBUkVEX09VVERJUikvbGlibWVtZW52LmEKKytTSEFSRURfTUVNRU5WTElCID0gJChTSEFSRURfT1VURElSKS9saWJtZW1lbnYuJChQTEFURk9STV9TSEFSRURfRVhUKS4kKFNIQVJFRF9WRVJTSU9OX01BSk9SKS4kKFNIQVJFRF9WRVJTSU9OX01JTk9SKQorIGVuZGlmCisgCisgJChTSEFSRURfT1VURElSKS8kKFNIQVJFRF9MSUIzKTogJChTSEFSRURfTElCT0JKRUNUUykKK0BAIC0yOTQsNyArMjk0LDcgQEAgZW5kaWYKKyAKKyAkKFNIQVJFRF9NRU1FTlZMSUIpOiQoU0hBUkVEX01FTUVOVk9CSkVDVFMpCisgCXJtIC1mICRACistCSQoQVIpIC1ycyAkQCAkKFNIQVJFRF9NRU1FTlZPQkpFQ1RTKQorKwkkKENYWCkgJChMREZMQUdTKSAkKFBMQVRGT1JNX1NIQVJFRF9MREZMQUdTKSQoYmFzZW5hbWUgJChub3RkaXIgJChTSEFSRURfTUVNRU5WTElCKSkpICQoU0hBUkVEX01FTUVOVk9CSkVDVFMpIC1vICQoU0hBUkVEX01FTUVOVkxJQikgJChMSUJTKQorIAorICQoU1RBVElDX09VVERJUikvZGJfYmVuY2g6ZGIvZGJfYmVuY2guY2MgJChTVEFUSUNfTElCT0JKRUNUUykgJChURVNUVVRJTCkKKyAJJChDWFgpICQoTERGTEFHUykgJChDWFhGTEFHUykgZGIvZGJfYmVuY2guY2MgJChTVEFUSUNfTElCT0JKRUNUUykgJChURVNUVVRJTCkgLW8gJEAgJChMSUJTKQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYl9naXQuYmIKaW5kZXggYTZhMzAyNC4uOGZlYzg5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGJfZ2l0LmJiCkBAIC00LDI0ICs0LDM0IEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkyZDFiMTI4OTUwYjExYmE4NDk1YjY0OTM4ZmMxNjRkIgogCi1TUkNSRVYgPSAiODAzZDY5MjAzYTYyZmFmNTBmMWI3Nzg5NzMxMGEzYTFmY2FlNzEyYiIKLVBWID0gIjEuMTgrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiYTUzOTM0YTNhZTEyNDQ2NzlmODEyZDk5OGE0ZjE2ZjJjN2YzMDlhNiIKK1BWID0gIjEuMjArZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvJHtCUE59LmdpdCBcCi0gICAgZmlsZTovLzAwMDEtRXhwbGljaXRseS1kaXNhYmxlLXRjbWFsbG9jLnBhdGNoIFwKLSIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRfZGV0ZWN0X3BsYXRmb3JtLUNoZWNrLWZvci1fX1NTRTRfMl9fLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWFrZWZpbGUtYnVpbGQtU0hBUkVEX01FTUVOVkxJQi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCisgICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAoraW5oZXJpdCB1dGlscworCiBkb19jb21waWxlKCkgewogICAgICMgZG8gbm90IHVzZSBvZV9ydW5tYWtlLiBvZV9ydW5tYWtlIHBhc3MgdG8gbWFrZSBjb21waWxhdGlvbiBhcmd1bWVudHMgYW5kIG92ZXJyaWRlCiAgICAgIyBsZXZlbGRiIG1ha2VmaWxlIHZhcmlhYmxlIENGTEFHUyBhbmQgYnJva2UgbGV2ZWxkYiBidWlsZC4KLSAgICBDRkxBR1M9IiR7Q0ZMQUdTfSIgbWFrZSB8fCBkaWUKKyAgICBDRkxBR1M9IiR7Q0ZMQUdTfSIgbWFrZSAke1BBUkFMTEVMX01BS0V9fHwgZGllCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgb2VfbGliaW5zdGFsbCAtQyAke1N9IC1zbyBsaWJsZXZlbGRiICR7RH0ke2xpYmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2xldmVsZGIKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0gJHtEfSR7YmluZGlyfSAke0R9JHtpbmNsdWRlZGlyfS9sZXZlbGRiCisgICAgb2VfbGliaW5zdGFsbCAtQyAke0J9L291dC1zaGFyZWQgbGlibGV2ZWxkYiAke0R9JHtsaWJkaXJ9CisgICAgb2VfbGliaW5zdGFsbCAtQyAke1N9L291dC1zdGF0aWMgbGlibGV2ZWxkYiAke0R9JHtsaWJkaXJ9CisgICAgb2VfbGliaW5zdGFsbCAtQyAke1N9L291dC1zdGF0aWMgbGlibWVtZW52ICR7RH0ke2xpYmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9vdXQtc2hhcmVkL2RiX2JlbmNoICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9vdXQtc3RhdGljLypfdGVzdCAke0R9JHtiaW5kaXJ9CiAgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2xldmVsZGIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9L2xldmVsZGIvCiB9CisKK1BBQ0tBR0VTID0rICIke1BOfS1wdGVzdCIKK0ZJTEVTXyR7UE59LXB0ZXN0ID0gIiR7YmluZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTRlZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMS1maXgtY29uZmlndXJlLWFuZC1jb21waWxlLWZhaWx1cmVzLnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0Zyb20gODY2ODZjY2JmNDNjNWQ5ZThjOGRjOTdjNjZiYTA5ZTUyMjA1MGU1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgSnVsIDIwMTcgMTA6MDY6MjQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIGZpeCBjb25maWd1cmUgYW5kIGNvbXBpbGUgZmFpbHVyZXMKKworMS4gRml4IGRvX2NvbmZpZ3VyZSBmYWlsdXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3xDaGVja2luZyBoZWFkZXIgdm9sdW1lX2tleS9saWJ2b2x1bWVfa2V5LmggZXhpc3RlbmNlIGFuZCB1c2FiaWxpdHkuCisuLi90bXAvNnR2dEsuYzoxOjM4OiBmYXRhbCBlcnJvcjogdm9sdW1lX2tleS9saWJ2b2x1bWVfa2V5Lmg6CitObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit8ICNpbmNsdWRlIDx2b2x1bWVfa2V5L2xpYnZvbHVtZV9rZXkuaD4KK3xDaGVja2luZyBoZWFkZXIgZG1yYWlkL2RtcmFpZC5oIGV4aXN0ZW5jZSBhbmQgdXNhYmlsaXR5Li4uL3RtcC8KK2t0Vko2LmM6MToyNzogZmF0YWwgZXJyb3I6IGRtcmFpZC9kbXJhaWQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorfCAjaW5jbHVkZSA8ZG1yYWlkL2RtcmFpZC5oPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitXZSBleHBsaWN0bHkgYWRkIHZvbHVtZV9rZXkgYW5kIGRtcmFpZCB0byBERVBFTkRTLCBkbyBub3QgbmVlZAorY29uZmlndXJlIHRvIHRlc3QuCisKKzIuIEZpeCBjb25maWcuaCBub3QgZm91bmQKK0FkZCBpdCB0byBjb25maWd1cmUuYWMKKworMy4gQ29ycmVjdCBBQ19ERUZJTkUKKy4uLgorYXV0b2hlYWRlcjogd2FybmluZzogbWlzc2luZyB0ZW1wbGF0ZTogTElCTU9VTlRfTkVXX0VSUl9BUEkKK2F1dG9oZWFkZXI6IFVzZSBBQ19ERUZJTkUoW0xJQk1PVU5UX05FV19FUlJfQVBJXSwgW10sIFtEZXNjcmlwdGlvbl0pCisuLi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTAgKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDAyNzBjOTkuLmI3YzczNjggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTksNiArOSw4IEBAIEFDX0RJU0FCTEVfU1RBVElDCisgQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiAtV2FsbCAtV2Vycm9yIC1Xbm8tc3ludGF4IC1Xbm8tcG9ydGFiaWxpdHldKQorIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKKyAKKytBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQorKworIEFNX1BBVEhfUFlUSE9OCisgCisgQU1fUFJPR19BUgorQEAgLTEyOSw3ICsxMzEsNiBAQCBMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbVURFVl0sIFtsaWJ1ZGV2ID49IDIxNl0pCisgQVNfSUYoW3Rlc3QgIngkd2l0aF9jcnlwdG8iICE9ICJ4bm8iXSwKKyAgICAgICBbTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0NSWVBUU0VUVVBdLCBbbGliY3J5cHRzZXR1cCA+PSAxLjYuN10pCisgICAgICAgIExJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtOU1NdLCBbbnNzID49IDMuMTguMF0pCistICAgICAgIExJQkJMT0NLREVWX0NIRUNLX0hFQURFUihbdm9sdW1lX2tleS9saWJ2b2x1bWVfa2V5LmhdLCBbJEdMSUJfQ0ZMQUdTICROU1NfQ0ZMQUdTXSwgW2xpYnZvbHVtZV9rZXkuaCBub3QgYXZhaWxhYmxlXSkKKyAgICAgICBdLAorICAgICAgIFtdKQorIAorQEAgLTEzNywxMCArMTM4LDYgQEAgQVNfSUYoW3Rlc3QgIngkd2l0aF9kbSIgIT0gInhubyIgLW8gIngkd2l0aF9sdm0iICE9ICJ4bm8iIC1vICJ4JHdpdGhfbHZtX2RidXMiICEKKyAgICAgICBbTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0RFVk1BUFBFUl0sIFtkZXZtYXBwZXIgPj0gMS4wMi45M10pXSwKKyAgICAgICBbXSkKKyAKKy1BU19JRihbdGVzdCAieCR3aXRoX2RtIiAhPSAieG5vIl0sCistICAgICAgW0xJQkJMT0NLREVWX0NIRUNLX0hFQURFUihbZG1yYWlkL2RtcmFpZC5oXSwgW10sIFtkbXJhaWQuaCBub3QgYXZhaWxhYmxlXSldLAorLSAgICAgIFtdKQorLQorIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfa2JkIiAhPSAieG5vIl0sCisgICAgICAgW0xJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtLTU9EXSwgW2xpYmttb2QgPj0gMTldKV0sCisgICAgICAgW10pCitAQCAtMTU0LDcgKzE1MSw4IEBAIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfZnMiICE9ICJ4bm8iXSwKKyAgICAgICBbTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW01PVU5UXSwgW21vdW50ID49IDIuMjMuMF0pCisgICAgICAgICMgbmV3IHZlcnNpb25zIG9mIGxpYm1vdW50IGhhcyBzb21lIG5ldyBmdW5jdGlvbnMgd2UgY2FuIHVzZQorICAgICAgICBBU19JRihbJFBLR19DT05GSUcgLS1hdGxlYXN0LXZlcnNpb249Mi4zMC4wIG1vdW50XSwKKy0gICAgICAgICAgICAgW0FDX0RFRklORShbTElCTU9VTlRfTkVXX0VSUl9BUEldKV0sIFtdKQorKyAgICAgICAgICAgICBbQUNfREVGSU5FKFtMSUJNT1VOVF9ORVdfRVJSX0FQSV0sIFsxXSwgW25ldyB2ZXJzaW9ucyBvZiBsaWJtb3VudCBoYXMgc29tZSBuZXcgZnVuY3Rpb25zIHdlIGNhbiB1c2VdKV0sCisrICAgICAgICAgICAgIFtdKQorIAorICAgICAgICBMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbQkxLSURdLCBbYmxraWQgPj0gMi4yMy4wXSkKKyAgICAgICAgIyBvbGRlciB2ZXJzaW9ucyBvZiBsaWJibGtpZCBkb24ndCBzdXBwb3J0IEJMS0lEX1NVQkxLU19CQURDU1VNIHNvIGxldCdzIGp1c3QKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAyLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAyLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcxOTc1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDItcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDQwZGFlN2VhNjQ1MGNiMzBmMDY2ZGE4NDQzZWFiZjA2M2I1YjBhZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMDI6MDU6NDAgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIHJlbW92ZSBweXRob24yIHN1cHBvcnQKKworT25seSBweXRob24zIGlzIHJlcXVpcmVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dyLWluc3RhbGxlciBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvTWFrZWZpbGUuYW0gfCA1IC0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9NYWtlZmlsZS5hbSBiL3NyYy9weXRob24vZ2kvb3ZlcnJpZGVzL01ha2VmaWxlLmFtCitpbmRleCBhMjkyN2FjLi42Mzg1NTAyIDEwMDY0NAorLS0tIGEvc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9weXRob24vZ2kvb3ZlcnJpZGVzL01ha2VmaWxlLmFtCitAQCAtMSw4ICsxLDMgQEAKKy1weWxpYmRpciA9ICQoc2hlbGwgcHl0aG9uIC1jICJpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgcHJpbnQoZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigxLDAscHJlZml4PScke2V4ZWNfcHJlZml4fScpKSIpCistCistb3ZlcnJpZGVzZGlyID0gJChweWxpYmRpcikvZ2kvb3ZlcnJpZGVzCistZGlzdF9vdmVycmlkZXNfREFUQSA9IEJsb2NrRGV2LnB5CistCisgaWYgV0lUSF9QWVRIT04zCisgcHkzbGliZGlyID0gJChzaGVsbCBweXRob24zIC1jICJpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgcHJpbnQoZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigxLDAscHJlZml4PScke2V4ZWNfcHJlZml4fScpKSIpCisgcHkzb3ZlcnJpZGVzZGlyID0gJChweTNsaWJkaXIpL2dpL292ZXJyaWRlcworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMy1yZW1vdmUtZG1yYWlkLXdoaWxlLWNvbXBpbGluZy13aXRoLXdpdGgtZG0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q5Y2I2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoCkBAIC0wLDAgKzEsNDcwIEBACitGcm9tIGJkYTdjOTM3YmE1NDQxODJhNWNhZTJhOWNmMGMxNzNlMGJhMjY4YzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI3IEp1bCAyMDE3IDA5OjQ3OjIzICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSByZW1vdmUgZG1yYWlkIHdoaWxlIGNvbXBpbGluZyB3aXRoIC0td2l0aC1kbQorCitGaXggdGhlIGZvbGxvd2luZyBmYWlsdXJlOgorCisuLi4KK1BlcmhhcHMgeW91IHNob3VsZCBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGBkbXJhaWQucGMnCit0byB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlCitObyBwYWNrYWdlICdkbXJhaWQnIGZvdW5kCisuLi4KKworLi4uCisuLi8uLi8uLi9naXQvc3JjL3BsdWdpbnMvZG0uYzoyNDoxMDogZmF0YWwgZXJyb3I6IGRtcmFpZC9kbXJhaWQuaDogTm8KK3N1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyAjaW5jbHVkZSA8ZG1yYWlkL2RtcmFpZC5oPgorICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+CisuLi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkgICAgICAgICAgfCAgNDEgLS0tLS0KKyBzcmMvcGx1Z2lucy9NYWtlZmlsZS5hbSAgICAgICAgICAgICB8ICAgMiArLQorIHNyYy9wbHVnaW5zL2RtLmMgICAgICAgICAgICAgICAgICAgIHwgMzE4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9wbHVnaW5zL2RtLmggICAgICAgICAgICAgICAgICAgIHwgICA1IC0KKyBzcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weSB8ICAgNiAtCisgNSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMzcxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkgYi9zcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaQoraW5kZXggYTg4NWJiYS4uZWM4NmI4MCAxMDA2NDQKKy0tLSBhL3NyYy9saWIvcGx1Z2luX2FwaXMvZG0uYXBpCisrKysgYi9zcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaQorQEAgLTY4LDQ0ICs2OCwzIEBAIGdjaGFyKiBiZF9kbV9ub2RlX2Zyb21fbmFtZSAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBHRXJyb3IgKiplcnJvcik7CisgICovCisgZ2Jvb2xlYW4gYmRfZG1fbWFwX2V4aXN0cyAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBnYm9vbGVhbiBsaXZlX29ubHksIGdib29sZWFuIGFjdGl2ZV9vbmx5LCBHRXJyb3IgKiplcnJvcik7CisgCistLyoqCistICogYmRfZG1fZ2V0X21lbWJlcl9yYWlkX3NldHM6CistICogQG5hbWU6IChhbGxvdy1ub25lKTogbmFtZSBvZiB0aGUgbWVtYmVyCistICogQHV1aWQ6IChhbGxvdy1ub25lKTogdXVpZCBvZiB0aGUgbWVtYmVyCistICogQG1ham9yOiBtYWpvciBudW1iZXIgb2YgdGhlIGRldmljZSBvciAtMSBpZiBub3Qgc3BlY2lmaWVkCistICogQG1pbm9yOiBtaW5vciBudW1iZXIgb2YgdGhlIGRldmljZSBvciAtMSBpZiBub3Qgc3BlY2lmaWVkCistICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKKy0gKgorLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKSAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpOiBsaXN0IG9mIG5hbWVzIG9mIHRoZSBSQUlEIHNldHMgcmVsYXRlZCB0bworLSAqIHRoZSBtZW1iZXIgb3IgJU5VTEwgaW4gY2FzZSBvZiBlcnJvcgorLSAqCistICogT25lIG9mIEBuYW1lLCBAdXVpZCBvciBAbWFqb3I6QG1pbm9yIGhhcyB0byBiZSBnaXZlbi4KKy0gKi8KKy1nY2hhcioqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzIChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIEdFcnJvciAqKmVycm9yKTsKKy0KKy0vKioKKy0gKiBiZF9kbV9hY3RpdmF0ZV9yYWlkX3NldDoKKy0gKiBAbmFtZTogbmFtZSBvZiB0aGUgRE0gUkFJRCBzZXQgdG8gYWN0aXZhdGUKKy0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQorLSAqCistICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBhY3RpdmF0ZSBvciBub3QKKy0gKi8KKy1nYm9vbGVhbiBiZF9kbV9hY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKKy0KKy0vKioKKy0gKiBiZF9kbV9kZWFjdGl2YXRlX3JhaWRfc2V0OgorLSAqIEBuYW1lOiBuYW1lIG9mIHRoZSBETSBSQUlEIHNldCB0byBkZWFjdGl2YXRlCistICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKKy0gKgorLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIFJBSUQgc2V0IEBuYW1lIHdhcyBzdWNjZXNzZnVsbHkgZGVhY3RpdmF0ZSBvciBub3QKKy0gKi8KKy1nYm9vbGVhbiBiZF9kbV9kZWFjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOworLQorLS8qKgorLSAqIGJkX2RtX2dldF9yYWlkX3NldF90eXBlOgorLSAqIEBuYW1lOiBuYW1lIG9mIHRoZSBETSBSQUlEIHNldCB0byBnZXQgdGhlIHR5cGUgb2YKKy0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQorLSAqCistICogUmV0dXJuczogc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBAbmFtZSBSQUlEIHNldCdzIHR5cGUKKy0gKi8KKy1nY2hhciogYmRfZG1fZ2V0X3JhaWRfc2V0X3R5cGUgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0gYi9zcmMvcGx1Z2lucy9NYWtlZmlsZS5hbQoraW5kZXggNmM0MDM4Zi4uNTlkYzVlMyAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtCisrKysgYi9zcmMvcGx1Z2lucy9NYWtlZmlsZS5hbQorQEAgLTc2LDcgKzc2LDcgQEAgZW5kaWYKKyAKKyBpZiBXSVRIX0RNCisgbGliYmRfZG1fbGFfQ0ZMQUdTID0gJChHTElCX0NGTEFHUykgJChERVZNQVBQRVJfQ0ZMQUdTKSAkKFVERVZfQ0ZMQUdTKSAtV2FsbCAtV2V4dHJhIC1XZXJyb3IKKy1saWJiZF9kbV9sYV9MSUJBREQgPSAkKEdMSUJfTElCUykgJChERVZNQVBQRVJfTElCUykgJChVREVWX0xJQlMpIC1sZG1yYWlkICR7YnVpbGRkaXJ9Ly4uL3V0aWxzL2xpYmJkX3V0aWxzLmxhCisrbGliYmRfZG1fbGFfTElCQUREID0gJChHTElCX0xJQlMpICQoREVWTUFQUEVSX0xJQlMpICQoVURFVl9MSUJTKSAke2J1aWxkZGlyfS8uLi91dGlscy9saWJiZF91dGlscy5sYQorIGxpYmJkX2RtX2xhX0xERkxBR1MgPSAtTCR7c3JjZGlyfS8uLi91dGlscy8gLXZlcnNpb24taW5mbyAyOjA6MCAtV2wsLS1uby11bmRlZmluZWQKKyAjIERlYXIgYXV0aG9yIG9mIGxpYmRtZHJhaWQsIFZFUlNJT04gcmVhbGx5IGlzIG5vdCBhIGdvb2QgbmFtZSBmb3IgYW4gZW51bSBtZW1iZXIhCisgbGliYmRfZG1fbGFfQ1BQRkxBR1MgPSAtSSR7YnVpbGRkaXJ9Ly4uLy4uL2luY2x1ZGUvIC1VVkVSU0lPTgorZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2RtLmMgYi9zcmMvcGx1Z2lucy9kbS5jCitpbmRleCA5Y2VlNzQyLi5mZDdjN2JhIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvZG0uYworKysrIGIvc3JjL3BsdWdpbnMvZG0uYworQEAgLTIxLDE2ICsyMSwxMCBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8YmxvY2tkZXYvdXRpbHMuaD4KKyAjaW5jbHVkZSA8bGliZGV2bWFwcGVyLmg+CistI2luY2x1ZGUgPGRtcmFpZC9kbXJhaWQuaD4KKyAjaW5jbHVkZSA8bGlidWRldi5oPgorIAorICNpbmNsdWRlICJkbS5oIgorIAorLS8qIG1hY3JvcyB0YWtlbiBmcm9tIHRoZSBweWJsb2NrL2RtcmFpZC5oIGZpbGUgcGx1cyBvbmUgbW9yZSovCistI2RlZmluZSBmb3JfZWFjaF9yYWlkc2V0KF9jLCBfbikgbGlzdF9mb3JfZWFjaF9lbnRyeShfbiwgTENfUlMoX2MpLCBsaXN0KQorLSNkZWZpbmUgZm9yX2VhY2hfc3Vic2V0KF9ycywgX24pIGxpc3RfZm9yX2VhY2hfZW50cnkoX24sICYoX3JzKS0+c2V0cywgbGlzdCkKKy0jZGVmaW5lIGZvcl9lYWNoX2RldmljZShfcnMsIF9kKSBsaXN0X2Zvcl9lYWNoX2VudHJ5KF9kLCAmKF9ycyktPmRldnMsIGRldnMpCistCisgLyoqCisgICogU0VDVElPTjogZG0KKyAgKiBAc2hvcnRfZGVzY3JpcHRpb246IHBsdWdpbiBmb3IgYmFzaWMgb3BlcmF0aW9ucyB3aXRoIGRldmljZSBtYXBwZXIKK0BAIC0yODYsMzE1ICsyODAsMyBAQCBnYm9vbGVhbiBiZF9kbV9tYXBfZXhpc3RzIChjb25zdCBnY2hhciAqbWFwX25hbWUsIGdib29sZWFuIGxpdmVfb25seSwgZ2Jvb2xlYW4gYQorICAgICByZXR1cm4gcmV0OworIH0KKyAKKy0vKioKKy0gKiBpbml0X2RtcmFpZF9zdGFjazogKHNraXApCistICoKKy0gKiBJbml0aWFsaXplcyB0aGUgZG1yYWlkIHN0YWNrIGJ5IGNyZWF0aW5nIHRoZSBsaWJyYXJ5IGNvbnRleHQsIGRpc2NvdmVyaW5nCistICogZGV2aWNlcywgcmFpZCBzZXRzLCBldGMuCistICovCistc3RhdGljIHN0cnVjdCBsaWJfY29udGV4dCogaW5pdF9kbXJhaWRfc3RhY2sgKEdFcnJvciAqKmVycm9yKSB7CistICAgIGdpbnQgcmMgPSAwOworLSAgICBnY2hhciAqYXJndltdID0geyJibG9ja2Rldi5kbXJhaWQiLCBOVUxMfTsKKy0gICAgc3RydWN0IGxpYl9jb250ZXh0ICpsYzsKKy0KKy0gICAgLyogdGhlIGNvZGUgZm9yIHRoaXMgZnVuY3Rpb24gd2FzIGNoZXJyeS1waWNrZWQgZnJvbSB0aGUgcHlibG9jayBjb2RlICovCistICAgIC8qIFhYWDogZG8gdGhpcyBhbGwganVzdCBvbmNlLCBzdG9yZSBnbG9iYWwgbGMgYW5kIHByb3ZpZGUgYSByZWluaXQKKy0gICAgICogICAgICBmdW5jdGlvbj8gKi8KKy0KKy0gICAgLyogaW5pdGlhbGl6ZSBkbXJhaWQgbGlicmFyeSBjb250ZXh0ICovCistICAgIGxjID0gbGliZG1yYWlkX2luaXQgKDEsIChnY2hhciAqKilhcmd2KTsKKy0KKy0gICAgcmMgPSBkaXNjb3Zlcl9kZXZpY2VzIChsYywgTlVMTCk7CistICAgIGlmICghcmMpIHsKKy0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfRkFJTCwKKy0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGRpc2NvdmVyIGRldmljZXMiKTsKKy0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7CistICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgfQorLSAgICBkaXNjb3Zlcl9yYWlkX2RldmljZXMgKGxjLCBOVUxMKTsKKy0KKy0gICAgaWYgKCFjb3VudF9kZXZpY2VzIChsYywgUkFJRCkpIHsKKy0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfTk9fREVWUywKKy0gICAgICAgICAgICAgICAgICAgICAiTm8gUkFJRHMgZGlzY292ZXJlZCIpOworLSAgICAgICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKKy0gICAgICAgIHJldHVybiBOVUxMOworLSAgICB9CistCistICAgIGFyZ3ZbMF0gPSBOVUxMOworLSAgICBpZiAoIWdyb3VwX3NldCAobGMsIGFyZ3YpKSB7CistICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEJEX0RNX0VSUk9SLCBCRF9ETV9FUlJPUl9SQUlEX0ZBSUwsCistICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBncm91cF9zZXQiKTsKKy0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7CistICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgfQorLQorLSAgICByZXR1cm4gbGM7CistfQorLQorLS8qKgorLSAqIHJhaWRfZGV2X21hdGNoZXNfc3BlYzogKHNraXApCistICoKKy0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IEBzeXNuYW1lIG1hdGNoZXMgdGhlIHNwZWMgZ2l2ZW4gYnkgQG5hbWUsCistICogICAgICAgICAgQHV1aWQsIEBtYWpvciBhbmQgQG1pbm9yCistICovCistc3RhdGljIGdib29sZWFuIHJhaWRfZGV2X21hdGNoZXNfc3BlYyAoc3RydWN0IHJhaWRfZGV2ICpyYWlkX2RldiwgY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yKSB7CistICAgIGdjaGFyIGNvbnN0ICpkZXZfbmFtZSA9IE5VTEw7CistICAgIGdjaGFyIGNvbnN0ICpkZXZfdXVpZDsKKy0gICAgZ2NoYXIgY29uc3QgKm1ham9yX3N0cjsKKy0gICAgZ2NoYXIgY29uc3QgKm1pbm9yX3N0cjsKKy0gICAgc3RydWN0IHVkZXYgKmNvbnRleHQ7CistICAgIHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2aWNlOworLSAgICBnYm9vbGVhbiByZXQgPSBUUlVFOworLQorLSAgICAvKiBmaW5kIHRoZSBzZWNvbmQgJy8nIHRvIGdldCBuYW1lICh0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLworLSAgICBkZXZfbmFtZSA9IHN0cmNociAocmFpZF9kZXYtPmRpLT5wYXRoLCAnLycpOworLSAgICBpZiAoZGV2X25hbWUgJiYgc3RybGVuIChkZXZfbmFtZSkgPiAxKSB7CistICAgICAgICBkZXZfbmFtZSsrOworLSAgICAgICAgZGV2X25hbWUgPSBzdHJjaHIgKGRldl9uYW1lLCAnLycpOworLSAgICB9CistICAgIGlmIChkZXZfbmFtZSAmJiBzdHJsZW4gKGRldl9uYW1lKSA+IDEpIHsKKy0gICAgICAgIGRldl9uYW1lKys7CistICAgIH0KKy0gICAgZWxzZQorLSAgICAgICAgZGV2X25hbWUgPSBOVUxMOworLQorLSAgICAvKiBpZiB3ZSBkb24ndCBoYXZlIHRoZSBuYW1lLCB3ZSBjYW5ub3QgY2hlY2sgYW55IG1hdGNoICovCistICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkZXZfbmFtZSwgRkFMU0UpOworLQorLSAgICBpZiAobmFtZSAmJiBzdHJjbXAgKGRldl9uYW1lLCBuYW1lKSAhPSAwKSB7CistICAgICAgICByZXR1cm4gRkFMU0U7CistICAgIH0KKy0KKy0gICAgY29udGV4dCA9IHVkZXZfbmV3ICgpOworLSAgICBkZXZpY2UgPSB1ZGV2X2RldmljZV9uZXdfZnJvbV9zdWJzeXN0ZW1fc3lzbmFtZSAoY29udGV4dCwgImJsb2NrIiwgZGV2X25hbWUpOworLSAgICBkZXZfdXVpZCA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZSAoZGV2aWNlLCAiVVVJRCIpOworLSAgICBtYWpvcl9zdHIgPSB1ZGV2X2RldmljZV9nZXRfcHJvcGVydHlfdmFsdWUgKGRldmljZSwgIk1BSk9SIik7CistICAgIG1pbm9yX3N0ciA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZSAoZGV2aWNlLCAiTUlOT1IiKTsKKy0KKy0gICAgaWYgKHV1aWQgJiYgKGdfc3RyY21wMCAodXVpZCwgIiIpICE9IDApICYmIChnX3N0cmNtcDAgKHV1aWQsIGRldl91dWlkKSAhPSAwKSkKKy0gICAgICAgIHJldCA9IEZBTFNFOworLQorLSAgICBpZiAobWFqb3IgPj0gMCAmJiAoYXRvaSAobWFqb3Jfc3RyKSAhPSBtYWpvcikpCistICAgICAgICByZXQgPSBGQUxTRTsKKy0KKy0gICAgaWYgKG1pbm9yID49IDAgJiYgKGF0b2kgKG1pbm9yX3N0cikgIT0gbWlub3IpKQorLSAgICAgICAgcmV0ID0gRkFMU0U7CistCistICAgIHVkZXZfZGV2aWNlX3VucmVmIChkZXZpY2UpOworLSAgICB1ZGV2X3VucmVmIChjb250ZXh0KTsKKy0KKy0gICAgcmV0dXJuIHJldDsKKy19CistCistLyoqCistICogZmluZF9yYWlkX3NldHNfZm9yX2RldjogKHNraXApCistICovCistc3RhdGljIHZvaWQgZmluZF9yYWlkX3NldHNfZm9yX2RldiAoY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjLCBzdHJ1Y3QgcmFpZF9zZXQgKnJzLCBHUHRyQXJyYXkgKnJldF9zZXRzKSB7CistICAgIHN0cnVjdCByYWlkX3NldCAqc3Vic2V0OworLSAgICBzdHJ1Y3QgcmFpZF9kZXYgKmRldjsKKy0KKy0gICAgaWYgKFRfR1JPVVAocnMpIHx8ICFsaXN0X2VtcHR5KCYocnMtPnNldHMpKSkgeworLSAgICAgICAgZm9yX2VhY2hfc3Vic2V0IChycywgc3Vic2V0KQorLSAgICAgICAgICAgIGZpbmRfcmFpZF9zZXRzX2Zvcl9kZXYgKG5hbWUsIHV1aWQsIG1ham9yLCBtaW5vciwgbGMsIHN1YnNldCwgcmV0X3NldHMpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgZm9yX2VhY2hfZGV2aWNlIChycywgZGV2KSB7CistICAgICAgICAgICAgaWYgKHJhaWRfZGV2X21hdGNoZXNfc3BlYyAoZGV2LCBuYW1lLCB1dWlkLCBtYWpvciwgbWlub3IpKQorLSAgICAgICAgICAgICAgICBnX3B0cl9hcnJheV9hZGQgKHJldF9zZXRzLCBnX3N0cmR1cCAocnMtPm5hbWUpKTsKKy0gICAgICAgIH0KKy0gICAgfQorLX0KKy0KKy0vKioKKy0gKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0czoKKy0gKiBAbmFtZTogKGFsbG93LW5vbmUpOiBuYW1lIG9mIHRoZSBtZW1iZXIKKy0gKiBAdXVpZDogKGFsbG93LW5vbmUpOiB1dWlkIG9mIHRoZSBtZW1iZXIKKy0gKiBAbWFqb3I6IG1ham9yIG51bWJlciBvZiB0aGUgZGV2aWNlIG9yIC0xIGlmIG5vdCBzcGVjaWZpZWQKKy0gKiBAbWlub3I6IG1pbm9yIG51bWJlciBvZiB0aGUgZGV2aWNlIG9yIC0xIGlmIG5vdCBzcGVjaWZpZWQKKy0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQorLSAqCistICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpIChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSk6IGxpc3Qgb2YgbmFtZXMgb2YgdGhlIFJBSUQgc2V0cyByZWxhdGVkIHRvCistICogdGhlIG1lbWJlciBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yCistICoKKy0gKiBPbmUgb2YgQG5hbWUsIEB1dWlkIG9yIEBtYWpvcjpAbWlub3IgaGFzIHRvIGJlIGdpdmVuLgorLSAqLworLWdjaGFyKiogYmRfZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMgKGNvbnN0IGdjaGFyICpuYW1lLCBjb25zdCBnY2hhciAqdXVpZCwgZ2ludCBtYWpvciwgZ2ludCBtaW5vciwgR0Vycm9yICoqZXJyb3IpIHsKKy0gICAgZ3VpbnQ2NCBpID0gMDsKKy0gICAgc3RydWN0IGxpYl9jb250ZXh0ICpsYyA9IE5VTEw7CistICAgIHN0cnVjdCByYWlkX3NldCAqcnMgPSBOVUxMOworLSAgICBHUHRyQXJyYXkgKnJldF9zZXRzID0gZ19wdHJfYXJyYXlfbmV3ICgpOworLSAgICBnY2hhciAqKnJldCA9IE5VTEw7CistCistICAgIGxjID0gaW5pdF9kbXJhaWRfc3RhY2sgKGVycm9yKTsKKy0gICAgaWYgKCFsYykKKy0gICAgICAgIC8qIGVycm9yIGlzIGFscmVhZHkgcG9wdWxhdGVkICovCistICAgICAgICByZXR1cm4gTlVMTDsKKy0KKy0gICAgZm9yX2VhY2hfcmFpZHNldCAobGMsIHJzKSB7CistICAgICAgICBmaW5kX3JhaWRfc2V0c19mb3JfZGV2IChuYW1lLCB1dWlkLCBtYWpvciwgbWlub3IsIGxjLCBycywgcmV0X3NldHMpOworLSAgICB9CistCistICAgIC8qIG5vdyBjcmVhdGUgdGhlIHJldHVybiB2YWx1ZSAtLSBOVUxMLXRlcm1pbmF0ZWQgYXJyYXkgb2Ygc3RyaW5ncyAqLworLSAgICByZXQgPSBnX25ldzAgKGdjaGFyKiwgcmV0X3NldHMtPmxlbiArIDEpOworLSAgICBmb3IgKGk9MDsgaSA8IHJldF9zZXRzLT5sZW47IGkrKykKKy0gICAgICAgIHJldFtpXSA9IChnY2hhciopIGdfcHRyX2FycmF5X2luZGV4IChyZXRfc2V0cywgaSk7CistICAgIHJldFtpXSA9IE5VTEw7CistCistICAgIGdfcHRyX2FycmF5X2ZyZWUgKHJldF9zZXRzLCBGQUxTRSk7CistCistICAgIGxpYmRtcmFpZF9leGl0IChsYyk7CistICAgIHJldHVybiByZXQ7CistfQorLQorLS8qKgorLSAqIGZpbmRfaW5fcmFpZF9zZXRzOiAoc2tpcCkKKy0gKgorLSAqIFJ1bnMgQGV2YWxfZm4gd2l0aCBAZGF0YSBvbiBlYWNoIHNldCAodHJhdmVyc2luZyByZWN1cnNpdmVseSkgYW5kIHJldHVybnMgdGhlCistICogZmlyc3QgUkFJRCBzZXQgdGhhdCBAZXZhbF9mbiByZXR1cm5zLiBUaHVzIHRoZSBAZXZhbF9mbiBzaG91bGQgcmV0dXJuICVOVUxMCistICogb24gYWxsIFJBSUQgc2V0cyB0aGF0IGRvbid0IGZ1bGZpbGwgdGhlIHNlYXJjaCBjcml0ZXJpYS4KKy0gKi8KKy1zdGF0aWMgc3RydWN0IHJhaWRfc2V0KiBmaW5kX2luX3JhaWRfc2V0cyAoc3RydWN0IHJhaWRfc2V0ICpycywgUlNFdmFsRnVuYyBldmFsX2ZuLCBncG9pbnRlciBkYXRhKSB7CistICAgIHN0cnVjdCByYWlkX3NldCAqc3Vic2V0ID0gTlVMTDsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICpyZXQgPSBOVUxMOworLQorLSAgICByZXQgPSBldmFsX2ZuIChycywgZGF0YSk7CistICAgIGlmIChyZXQpCistICAgICAgICByZXR1cm4gcmV0OworLQorLSAgICBpZiAoVF9HUk9VUChycykgfHwgIWxpc3RfZW1wdHkoJihycy0+c2V0cykpKSB7CistICAgICAgICBmb3JfZWFjaF9zdWJzZXQgKHJzLCBzdWJzZXQpIHsKKy0gICAgICAgICAgICByZXQgPSBmaW5kX2luX3JhaWRfc2V0cyAoc3Vic2V0LCBldmFsX2ZuLCBkYXRhKTsKKy0gICAgICAgICAgICBpZiAocmV0KQorLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworLSAgICAgICAgfQorLSAgICB9CistCistICAgIHJldHVybiByZXQ7CistfQorLQorLXN0YXRpYyBzdHJ1Y3QgcmFpZF9zZXQqIHJzX21hdGNoZXNfbmFtZSAoc3RydWN0IHJhaWRfc2V0ICpycywgZ3BvaW50ZXIgKm5hbWVfZGF0YSkgeworLSAgICBnY2hhciAqbmFtZSA9IChnY2hhciopIG5hbWVfZGF0YTsKKy0KKy0gICAgaWYgKGdfc3RyY21wMCAocnMtPm5hbWUsIG5hbWUpID09IDApCistICAgICAgICByZXR1cm4gcnM7CistICAgIGVsc2UKKy0gICAgICAgIHJldHVybiBOVUxMOworLX0KKy0KKy1zdGF0aWMgZ2Jvb2xlYW4gY2hhbmdlX3NldF9ieV9uYW1lIChjb25zdCBnY2hhciAqbmFtZSwgZW51bSBhY3RpdmF0ZV90eXBlIGFjdGlvbiwgR0Vycm9yICoqZXJyb3IpIHsKKy0gICAgZ2ludCByYyA9IDA7CistICAgIHN0cnVjdCBsaWJfY29udGV4dCAqbGM7CistICAgIHN0cnVjdCByYWlkX3NldCAqaXRlcl9yczsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICptYXRjaF9ycyA9IE5VTEw7CistCistICAgIGxjID0gaW5pdF9kbXJhaWRfc3RhY2sgKGVycm9yKTsKKy0gICAgaWYgKCFsYykKKy0gICAgICAgIC8qIGVycm9yIGlzIGFscmVhZHkgcG9wdWxhdGVkICovCistICAgICAgICByZXR1cm4gRkFMU0U7CistCistICAgIGZvcl9lYWNoX3JhaWRzZXQgKGxjLCBpdGVyX3JzKSB7CistICAgICAgICBtYXRjaF9ycyA9IGZpbmRfaW5fcmFpZF9zZXRzIChpdGVyX3JzLCAoUlNFdmFsRnVuYylyc19tYXRjaGVzX25hbWUsIChnY2hhciAqKW5hbWUpOworLSAgICAgICAgaWYgKG1hdGNoX3JzKQorLSAgICAgICAgICAgIGJyZWFrOworLSAgICB9CistCistICAgIGlmICghbWF0Y2hfcnMpIHsKKy0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfTk9fRVhJU1QsCistICAgICAgICAgICAgICAgICAgICAgIlJBSUQgc2V0ICVzIGRvZXNuJ3QgZXhpc3QiLCBuYW1lKTsKKy0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7CistICAgICAgICByZXR1cm4gRkFMU0U7CistICAgIH0KKy0KKy0gICAgcmMgPSBjaGFuZ2Vfc2V0IChsYywgYWN0aW9uLCBtYXRjaF9ycyk7CistICAgIGlmICghcmMpIHsKKy0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfRkFJTCwKKy0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFjdGl2YXRlIHRoZSBSQUlEIHNldCAnJXMnIiwgbmFtZSk7CistICAgICAgICBsaWJkbXJhaWRfZXhpdCAobGMpOworLSAgICAgICAgcmV0dXJuIEZBTFNFOworLSAgICB9CistCistICAgIGxpYmRtcmFpZF9leGl0IChsYyk7CistICAgIHJldHVybiBUUlVFOworLX0KKy0KKy0vKioKKy0gKiBiZF9kbV9hY3RpdmF0ZV9yYWlkX3NldDoKKy0gKiBAbmFtZTogbmFtZSBvZiB0aGUgRE0gUkFJRCBzZXQgdG8gYWN0aXZhdGUKKy0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQorLSAqCistICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBhY3RpdmF0ZSBvciBub3QKKy0gKi8KKy1nYm9vbGVhbiBiZF9kbV9hY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKSB7CistICAgIGd1aW50NjQgcHJvZ3Jlc3NfaWQgPSAwOworLSAgICBnY2hhciAqbXNnID0gTlVMTDsKKy0gICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CistCistICAgIG1zZyA9IGdfc3RyZHVwX3ByaW50ZiAoIkFjdGl2YXRpbmcgRE0gUkFJRCBzZXQgJyVzJyIsIG5hbWUpOworLSAgICBwcm9ncmVzc19pZCA9IGJkX3V0aWxzX3JlcG9ydF9zdGFydGVkIChtc2cpOworLSAgICBnX2ZyZWUgKG1zZyk7CistICAgIHJldCA9IGNoYW5nZV9zZXRfYnlfbmFtZSAobmFtZSwgQV9BQ1RJVkFURSwgZXJyb3IpOworLSAgICBiZF91dGlsc19yZXBvcnRfZmluaXNoZWQgKHByb2dyZXNzX2lkLCAiQ29tcGxldGVkIik7CistICAgIHJldHVybiByZXQ7CistfQorLQorLS8qKgorLSAqIGJkX2RtX2RlYWN0aXZhdGVfcmFpZF9zZXQ6CistICogQG5hbWU6IG5hbWUgb2YgdGhlIERNIFJBSUQgc2V0IHRvIGRlYWN0aXZhdGUKKy0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQorLSAqCistICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBkZWFjdGl2YXRlIG9yIG5vdAorLSAqLworLWdib29sZWFuIGJkX2RtX2RlYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcikgeworLSAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKKy0gICAgZ2NoYXIgKm1zZyA9IE5VTEw7CistICAgIGdib29sZWFuIHJldCA9IEZBTFNFOworLQorLSAgICBtc2cgPSBnX3N0cmR1cF9wcmludGYgKCJEZWFjdGl2YXRpbmcgRE0gUkFJRCBzZXQgJyVzJyIsIG5hbWUpOworLSAgICBwcm9ncmVzc19pZCA9IGJkX3V0aWxzX3JlcG9ydF9zdGFydGVkIChtc2cpOworLSAgICBnX2ZyZWUgKG1zZyk7CistICAgIHJldCA9IGNoYW5nZV9zZXRfYnlfbmFtZSAobmFtZSwgQV9ERUFDVElWQVRFLCBlcnJvcik7CistICAgIGJkX3V0aWxzX3JlcG9ydF9maW5pc2hlZCAocHJvZ3Jlc3NfaWQsICJDb21wbGV0ZWQiKTsKKy0gICAgcmV0dXJuIHJldDsKKy19CistCistLyoqCistICogYmRfZG1fZ2V0X3JhaWRfc2V0X3R5cGU6CistICogQG5hbWU6IG5hbWUgb2YgdGhlIERNIFJBSUQgc2V0IHRvIGdldCB0aGUgdHlwZSBvZgorLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCistICoKKy0gKiBSZXR1cm5zOiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIEBuYW1lIFJBSUQgc2V0J3MgdHlwZQorLSAqLworLWdjaGFyKiBiZF9kbV9nZXRfcmFpZF9zZXRfdHlwZSAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKSB7CistICAgIHN0cnVjdCBsaWJfY29udGV4dCAqbGM7CistICAgIHN0cnVjdCByYWlkX3NldCAqaXRlcl9yczsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICptYXRjaF9ycyA9IE5VTEw7CistICAgIGNvbnN0IGdjaGFyICp0eXBlID0gTlVMTDsKKy0KKy0gICAgbGMgPSBpbml0X2RtcmFpZF9zdGFjayAoZXJyb3IpOworLSAgICBpZiAoIWxjKQorLSAgICAgICAgLyogZXJyb3IgaXMgYWxyZWFkeSBwb3B1bGF0ZWQgKi8KKy0gICAgICAgIHJldHVybiBOVUxMOworLQorLSAgICBmb3JfZWFjaF9yYWlkc2V0IChsYywgaXRlcl9ycykgeworLSAgICAgICAgbWF0Y2hfcnMgPSBmaW5kX2luX3JhaWRfc2V0cyAoaXRlcl9ycywgKFJTRXZhbEZ1bmMpcnNfbWF0Y2hlc19uYW1lLCAoZ2NoYXIgKiluYW1lKTsKKy0gICAgICAgIGlmIChtYXRjaF9ycykKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgfQorLQorLSAgICBpZiAoIW1hdGNoX3JzKSB7CistICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEJEX0RNX0VSUk9SLCBCRF9ETV9FUlJPUl9SQUlEX05PX0VYSVNULAorLSAgICAgICAgICAgICAgICAgICAgICJSQUlEIHNldCAlcyBkb2Vzbid0IGV4aXN0IiwgbmFtZSk7CistICAgICAgICBsaWJkbXJhaWRfZXhpdCAobGMpOworLSAgICAgICAgcmV0dXJuIE5VTEw7CistICAgIH0KKy0KKy0gICAgdHlwZSA9IGdldF9zZXRfdHlwZSAobGMsIG1hdGNoX3JzKTsKKy0gICAgaWYgKCF0eXBlKSB7CistICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEJEX0RNX0VSUk9SLCBCRF9ETV9FUlJPUl9SQUlEX0ZBSUwsCistICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgUkFJRCBzZXQncyB0eXBlIik7CistICAgICAgICBsaWJkbXJhaWRfZXhpdCAobGMpOworLSAgICAgICAgcmV0dXJuIE5VTEw7CistICAgIH0KKy0KKy0gICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKKy0gICAgcmV0dXJuIGdfc3RyZHVwICh0eXBlKTsKKy19CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvZG0uaCBiL3NyYy9wbHVnaW5zL2RtLmgKK2luZGV4IDg1OWZiODAuLjgwYWNkNDkgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9kbS5oCisrKysgYi9zcmMvcGx1Z2lucy9kbS5oCitAQCAtMSw1ICsxLDQgQEAKKyAjaW5jbHVkZSA8Z2xpYi5oPgorLSNpbmNsdWRlIDxkbXJhaWQvZG1yYWlkLmg+CisgCisgI2lmbmRlZiBCRF9ETQorICNkZWZpbmUgQkRfRE0KK0BAIC0zNSw5ICszNCw1IEBAIGdib29sZWFuIGJkX2RtX3JlbW92ZSAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBHRXJyb3IgKiplcnJvcik7CisgZ2NoYXIqIGJkX2RtX25hbWVfZnJvbV9ub2RlIChjb25zdCBnY2hhciAqZG1fbm9kZSwgR0Vycm9yICoqZXJyb3IpOworIGdjaGFyKiBiZF9kbV9ub2RlX2Zyb21fbmFtZSAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBHRXJyb3IgKiplcnJvcik7CisgZ2Jvb2xlYW4gYmRfZG1fbWFwX2V4aXN0cyAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBnYm9vbGVhbiBsaXZlX29ubHksIGdib29sZWFuIGFjdGl2ZV9vbmx5LCBHRXJyb3IgKiplcnJvcik7CistZ2NoYXIqKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cyAoY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBHRXJyb3IgKiplcnJvcik7CistZ2Jvb2xlYW4gYmRfZG1fYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7CistZ2Jvb2xlYW4gYmRfZG1fZGVhY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKKy1nY2hhciogYmRfZG1fZ2V0X3JhaWRfc2V0X3R5cGUgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7CisgCisgI2VuZGlmICAvKiBCRF9ETSAqLworZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ2kvb3ZlcnJpZGVzL0Jsb2NrRGV2LnB5IGIvc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvQmxvY2tEZXYucHkKK2luZGV4IGZiM2ZmYjQuLmVlZDBhMzggMTAwNjQ0CistLS0gYS9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weQorKysrIGIvc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvQmxvY2tEZXYucHkKK0BAIC0yMzMsMTIgKzIzMyw2IEBAIGRlZiBkbV9jcmVhdGVfbGluZWFyKG1hcF9uYW1lLCBkZXZpY2UsIGxlbmd0aCwgdXVpZD1Ob25lKToKKyAgICAgcmV0dXJuIF9kbV9jcmVhdGVfbGluZWFyKG1hcF9uYW1lLCBkZXZpY2UsIGxlbmd0aCwgdXVpZCkKKyBfX2FsbF9fLmFwcGVuZCgiZG1fY3JlYXRlX2xpbmVhciIpCisgCistX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzID0gQmxvY2tEZXYuZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMKKy1Ab3ZlcnJpZGUoQmxvY2tEZXYuZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMpCistZGVmIGRtX2dldF9tZW1iZXJfcmFpZF9zZXRzKG5hbWU9Tm9uZSwgdXVpZD1Ob25lLCBtYWpvcj0tMSwgbWlub3I9LTEpOgorLSAgICByZXR1cm4gX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzKG5hbWUsIHV1aWQsIG1ham9yLCBtaW5vcikKKy1fX2FsbF9fLmFwcGVuZCgiZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMiKQorLQorIAorIF9sb29wX3NldHVwID0gQmxvY2tEZXYubG9vcF9zZXR1cAorIEBvdmVycmlkZShCbG9ja0Rldi5sb29wX3NldHVwKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDQtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE4YjU2OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDQtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gNTlmYmQ1N2FjZDFkZjI1YjE5NzJhMTMxZGM2YTc3YTRmZTE0NzcyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgSnVsIDIwMTcgMTA6NDU6MDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNvbXBpbGUgZmFpbHVyZSBhZ2FpbnN0IG11c2wgQyBsaWJyYXJ5CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcGx1Z2lucy9jcnlwdG8uYyB8IDIgKy0KKyBzcmMvcGx1Z2lucy9wYXJ0LmMgICB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9jcnlwdG8uYyBiL3NyYy9wbHVnaW5zL2NyeXB0by5jCitpbmRleCA4ZmJjZTRmLi42NmUxMWU1IDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvY3J5cHRvLmMKKysrKyBiL3NyYy9wbHVnaW5zL2NyeXB0by5jCitAQCAtMjIsNyArMjIsNyBAQAorICNpbmNsdWRlIDxsaWJjcnlwdHNldHVwLmg+CisgI2luY2x1ZGUgPG5zcy5oPgorICNpbmNsdWRlIDx2b2x1bWVfa2V5L2xpYnZvbHVtZV9rZXkuaD4KKy0jaW5jbHVkZSA8c3lzL2ZjbnRsLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvcGFydC5jIGIvc3JjL3BsdWdpbnMvcGFydC5jCitpbmRleCAxMmQyZWY3Li4zYWZlMjk3IDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvcGFydC5jCisrKysgYi9zcmMvcGx1Z2lucy9wYXJ0LmMKK0BAIC0yNSw2ICsyNSw3IEBACisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvZmlsZS5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxibG9ja2Rldi91dGlscy5oPgorICNpbmNsdWRlIDxwYXJ0X2Vyci5oPgorIAorQEAgLTEyMjQsNyArMTIyNSw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzZXRfZ3B0X2ZsYWdzIChjb25zdCBnY2hhciAqZGV2aWNlLCBpbnQgcGFydF9udW0sIGd1aW50NjQgZmxhZ3MsCisgICAgICAgICByZWFsX2ZsYWdzIHw9IDB4NDAwMDAwMDAwMDAwMDAwMDsgLyogMSA8PCA2MiAqLworICAgICBpZiAoZmxhZ3MgJiBCRF9QQVJUX0ZMQUdfR1BUX05PX0FVVE9NT1VOVCkKKyAgICAgICAgIHJlYWxfZmxhZ3MgfD0gMHg4MDAwMDAwMDAwMDAwMDAwOyAvKiAxIDw8IDYzICovCistICAgIG1hc2tfc3RyID0gZ19zdHJkdXBfcHJpbnRmICgiJS4xNiJfX1BSSTY0X1BSRUZJWCJ4IiwgcmVhbF9mbGFncyk7CisrICAgIG1hc2tfc3RyID0gZ19zdHJkdXBfcHJpbnRmICgiJS4xNiJfX1BSSTY0IngiLCByZWFsX2ZsYWdzKTsKKyAKKyAgICAgYXJnc1syXSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVkOj06JXMiLCBwYXJ0X251bSwgbWFza19zdHIpOworICAgICBnX2ZyZWUgKG1hc2tfc3RyKTsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA1LWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDUtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MTg5MzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA1LWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaApAQCAtMCwwICsxLDExMSBAQAorRnJvbSA5YjRhN2E0ZDA2NTNiNjI3ZDc0N2UwMGQ2YjNhZGEyOTkwY2FhMWQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCA5IEF1ZyAyMDE3IDEzOjU3OjU3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBhIGNsYW5nIGNvbXBpbGluZyBpc3N1ZQorCitbc25pcF0KKy4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9mcy5jOjI2MTc6MjY6IGVycm9yOiBtaXNzaW5nIGZpZWxkICdzdGFydCcKK2luaXRpYWxpemVyIFstV2Vycm9yLC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnNdCisgICAgUGVkR2VvbWV0cnkgZ2VvbSA9IHswfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBeCisuLi8uLi8uLi9naXQvc3JjL3BsdWdpbnMvZnMuYzoyNjE4OjMwOiBlcnJvcjogbWlzc2luZyBmaWVsZCAnc3RhcnQnCitpbml0aWFsaXplciBbLVdlcnJvciwtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzXQorICAgIFBlZEdlb21ldHJ5IG5ld19nZW9tID0gezB9OworW3NuaXBdCisKK0ZpeCB0eXBvIHMvZW51bSBsaWJ2a19wYWNrZXRfZm9ybWF0IGZvcm1hdC9lbnVtIGxpYnZrX3NlY3JldCBzZWNyZXRfdHlwZS8KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zdG9yYWdlZC1wcm9qZWN0L2xpYmJsb2NrZGV2L3B1bGwvMjY2XQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcGx1Z2lucy9jcnlwdG8uYyB8IDYgKysrLS0tCisgc3JjL3BsdWdpbnMvZnMuYyAgICAgfCA0ICsrLS0KKyBzcmMvcGx1Z2lucy9wYXJ0LmMgICB8IDQgKystLQorIHNyYy91dGlscy9leGVjLmMgICAgIHwgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvY3J5cHRvLmMgYi9zcmMvcGx1Z2lucy9jcnlwdG8uYworaW5kZXggOGZiY2U0Zi4uN2VlN2NkYyAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL2NyeXB0by5jCisrKysgYi9zcmMvcGx1Z2lucy9jcnlwdG8uYworQEAgLTg4MSw3ICs4ODEsNyBAQCBnYm9vbGVhbiBiZF9jcnlwdG9fdGNfb3BlbiAoY29uc3QgZ2NoYXIgKmRldmljZSwgY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGd1aW50OAorICAgICBnaW50IHJldCA9IDA7CisgICAgIGd1aW50NjQgcHJvZ3Jlc3NfaWQgPSAwOworICAgICBnY2hhciAqbXNnID0gTlVMTDsKKy0gICAgc3RydWN0IGNyeXB0X3BhcmFtc190Y3J5cHQgcGFyYW1zID0gezB9OworKyAgICBzdHJ1Y3QgY3J5cHRfcGFyYW1zX3RjcnlwdCBwYXJhbXMgPSB7TlVMTCwwLE5VTEwsMCxOVUxMLE5VTEwsTlVMTCwwLDB9OworIAorICAgICBtc2cgPSBnX3N0cmR1cF9wcmludGYgKCJTdGFydGVkIG9wZW5pbmcgJyVzJyBUcnVlQ3J5cHQvVmVyYUNyeXB0IGRldmljZSIsIGRldmljZSk7CisgICAgIHByb2dyZXNzX2lkID0gYmRfdXRpbHNfcmVwb3J0X3N0YXJ0ZWQgKG1zZyk7CitAQCAtOTk5LDcgKzk5OSw3IEBAIHN0YXRpYyBnY2hhciAqcmVwbGFjZV9jaGFyIChnY2hhciAqc3RyLCBnY2hhciBvcmlnLCBnY2hhciBuZXcpIHsKKyAgICAgcmV0dXJuIHN0cjsKKyB9CisgCistc3RhdGljIGdib29sZWFuIHdyaXRlX2VzY3Jvd19kYXRhX2ZpbGUgKHN0cnVjdCBsaWJ2a192b2x1bWUgKnZvbHVtZSwgc3RydWN0IGxpYnZrX3VpICp1aSwgZW51bSBsaWJ2a19wYWNrZXRfZm9ybWF0IGZvcm1hdCwgY29uc3QgZ2NoYXIgKm91dF9wYXRoLAorK3N0YXRpYyBnYm9vbGVhbiB3cml0ZV9lc2Nyb3dfZGF0YV9maWxlIChzdHJ1Y3QgbGlidmtfdm9sdW1lICp2b2x1bWUsIHN0cnVjdCBsaWJ2a191aSAqdWksIGVudW0gbGlidmtfc2VjcmV0IHNlY3JldF90eXBlLCBjb25zdCBnY2hhciAqb3V0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUlRDZXJ0aWZpY2F0ZSAqY2VydCwgR0Vycm9yICoqZXJyb3IpIHsKKyAgICAgZ3BvaW50ZXIgcGFja2V0X2RhdGEgPSBOVUxMOworICAgICBnc2l6ZSBwYWNrZXRfZGF0YV9zaXplID0gMDsKK0BAIC0xMDA4LDcgKzEwMDgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd3JpdGVfZXNjcm93X2RhdGFfZmlsZSAoc3RydWN0IGxpYnZrX3ZvbHVtZSAqdm9sdW1lLCBzdHJ1Y3QgbGlidgorICAgICBnc2l6ZSBieXRlc193cml0dGVuID0gMDsKKyAgICAgR0Vycm9yICp0bXBfZXJyb3IgPSBOVUxMOworIAorLSAgICBwYWNrZXRfZGF0YSA9IGxpYnZrX3ZvbHVtZV9jcmVhdGVfcGFja2V0X2FzeW1tZXRyaWNfd2l0aF9mb3JtYXQgKHZvbHVtZSwgJnBhY2tldF9kYXRhX3NpemUsIGZvcm1hdCwgY2VydCwKKysgICAgcGFja2V0X2RhdGEgPSBsaWJ2a192b2x1bWVfY3JlYXRlX3BhY2tldF9hc3ltbWV0cmljX3dpdGhfZm9ybWF0ICh2b2x1bWUsICZwYWNrZXRfZGF0YV9zaXplLCBzZWNyZXRfdHlwZSwgY2VydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aSwgTElCVktfUEFDS0VUX0ZPUk1BVF9BU1lNTUVUUklDX1dSQVBfU0VDUkVUX09OTFksIGVycm9yKTsKKyAKKyAgICAgaWYgKCFwYWNrZXRfZGF0YSkgeworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2ZzLmMgYi9zcmMvcGx1Z2lucy9mcy5jCitpbmRleCBjNGI2YWM4Li42NDcwOTZkIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvZnMuYworKysrIGIvc3JjL3BsdWdpbnMvZnMuYworQEAgLTI2MTQsOCArMjYxNCw4IEBAIEJERlNWZmF0SW5mbyogYmRfZnNfdmZhdF9nZXRfaW5mbyAoY29uc3QgZ2NoYXIgKmRldmljZSwgR0Vycm9yICoqZXJyb3IpIHsKKyAgKi8KKyBnYm9vbGVhbiBiZF9mc192ZmF0X3Jlc2l6ZSAoY29uc3QgZ2NoYXIgKmRldmljZSwgZ3VpbnQ2NCBuZXdfc2l6ZSwgR0Vycm9yICoqZXJyb3IpIHsKKyAgICAgUGVkRGV2aWNlICpwZWRfZGV2ID0gTlVMTDsKKy0gICAgUGVkR2VvbWV0cnkgZ2VvbSA9IHswfTsKKy0gICAgUGVkR2VvbWV0cnkgbmV3X2dlb20gPSB7MH07CisrICAgIFBlZEdlb21ldHJ5IGdlb20gPSB7TlVMTCwgMCwgMCwgMH07CisrICAgIFBlZEdlb21ldHJ5IG5ld19nZW9tID0ge05VTEwsIDAsIDAsIDB9OworICAgICBQZWRGaWxlU3lzdGVtICpmcyA9IE5VTEw7CisgICAgIFBlZFNlY3RvciBzdGFydCA9IDA7CisgICAgIFBlZFNlY3RvciBsZW5ndGggPSAwOworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL3BhcnQuYyBiL3NyYy9wbHVnaW5zL3BhcnQuYworaW5kZXggMTJkMmVmNy4uZDI3NzY4OCAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL3BhcnQuYworKysrIGIvc3JjL3BsdWdpbnMvcGFydC5jCitAQCAtODQ5LDcgKzg0OSw3IEBAIHN0YXRpYyBQZWRQYXJ0aXRpb24qIGFkZF9wYXJ0X3RvX2Rpc2sgKFBlZERldmljZSAqZGV2LCBQZWREaXNrICpkaXNrLCBCRFBhcnRUeXBlCisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorIAorLSAgICBwYXJ0ID0gcGVkX3BhcnRpdGlvbl9uZXcgKGRpc2ssIHR5cGUsIE5VTEwsIGdlb20tPnN0YXJ0LCBnZW9tLT5lbmQpOworKyAgICBwYXJ0ID0gcGVkX3BhcnRpdGlvbl9uZXcgKGRpc2ssIChQZWRQYXJ0aXRpb25UeXBlKXR5cGUsIE5VTEwsIGdlb20tPnN0YXJ0LCBnZW9tLT5lbmQpOworICAgICBpZiAoIXBhcnQpIHsKKyAgICAgICAgIHNldF9wYXJ0ZWRfZXJyb3IgKGVycm9yLCBCRF9QQVJUX0VSUk9SX0ZBSUwpOworICAgICAgICAgZ19wcmVmaXhfZXJyb3IgKGVycm9yLCAiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcGFydGl0aW9uIG9uIGRldmljZSAnJXMnIiwgZGV2LT5wYXRoKTsKK0BAIC0xNDI3LDcgKzE0MjcsNyBAQCBnYm9vbGVhbiBiZF9wYXJ0X3NldF9wYXJ0X2ZsYWdzIChjb25zdCBnY2hhciAqZGlzaywgY29uc3QgZ2NoYXIgKnBhcnQsIGd1aW50NjQgZgorICAgICBQZWRQYXJ0aXRpb24gKnBlZF9wYXJ0ID0gTlVMTDsKKyAgICAgY29uc3QgZ2NoYXIgKnBhcnRfbnVtX3N0ciA9IE5VTEw7CisgICAgIGdpbnQgcGFydF9udW0gPSAwOworLSAgICBndWludDY0IGkgPSAwOworKyAgICBpbnQgaSA9IDA7CisgICAgIGdpbnQgc3RhdHVzID0gMDsKKyAgICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisgICAgIGd1aW50NjQgcHJvZ3Jlc3NfaWQgPSAwOworZGlmZiAtLWdpdCBhL3NyYy91dGlscy9leGVjLmMgYi9zcmMvdXRpbHMvZXhlYy5jCitpbmRleCA3YWM0NGZkLi4wYTMwOTRjIDEwMDY0NAorLS0tIGEvc3JjL3V0aWxzL2V4ZWMuYworKysrIGIvc3JjL3V0aWxzL2V4ZWMuYworQEAgLTM1NCw3ICszNTQsNyBAQCBnYm9vbGVhbiBiZF91dGlsc19leGVjX2FuZF9yZXBvcnRfcHJvZ3Jlc3MgKGNvbnN0IGdjaGFyICoqYXJndiwgY29uc3QgQkRFeHRyYUFyZworICAgICBHSU9TdGF0dXMgaW9fc3RhdHVzID0gR19JT19TVEFUVVNfTk9STUFMOworICAgICBndWludCBpID0gMDsKKyAgICAgZ3VpbnQ4IGNvbXBsZXRpb24gPSAwOworLSAgICBHUG9sbEZEIGZkc1syXSA9IHt7MH0sIHswfX07CisrICAgIEdQb2xsRkQgZmRzWzJdID0ge3swLDAsMH0sIHswLDAsMH19OworICAgICBnYm9vbGVhbiBvdXRfZG9uZSA9IEZBTFNFOworICAgICBnYm9vbGVhbiBlcnJfZG9uZSA9IEZBTFNFOworICAgICBHU3RyaW5nICpzdGRvdXRfZGF0YSA9IGdfc3RyaW5nX25ldyAoTlVMTCk7CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2xpYmJsb2NrZGV2XzIuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE5MjM1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2xpYmJsb2NrZGV2XzIuMTAuYmIKQEAgLTAsMCArMSw1MSBAQAorREVTQ1JJUFRJT04gPSAibGliYmxvY2tkZXYgaXMgYSBDIGxpYnJhcnkgc3VwcG9ydGluZyBHT2JqZWN0IGludHJvc3BlY3Rpb24gZm9yIG1hbmlwdWxhdGlvbiBvZiBcCitibG9jayBkZXZpY2VzLiBJdCBoYXMgYSBwbHVnaW4tYmFzZWQgYXJjaGl0ZWN0dXJlIHdoZXJlIGVhY2ggdGVjaG5vbG9neSAobGlrZSBcCitMVk0sIEJ0cmZzLCBNRCBSQUlELCBTd2FwLC4uLikgaXMgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZSBwbHVnaW4sIHBvc3NpYmx5IFwKK3dpdGggbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIChlLmcuIHVzaW5nIExWTSBDTEkgb3IgdGhlIG5ldyBMVk0gREJ1cyBBUEkpLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9yaGluc3RhbGxlci5naXRodWIuaW8vbGliYmxvY2tkZXYvIgorTElDRU5TRSA9ICJMR1BMdjIrIgorU0VDVElPTiA9ICJkZXZlbC9saWIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwN2NiNDk5ZDI1OTQ1MmYzMjRiYjkwYzMwNjdkODVjIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiYzFkZGE0NTAwMTU0MmVkZDdkN2YxZmZjNjQ1MWM1YTc0NjIzZjgwNSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9saWJibG9ja2RldjticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1yZW1vdmUtZG1yYWlkLXdoaWxlLWNvbXBpbGluZy13aXRoLXdpdGgtZG0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK0RFUEVORFMgKz0gIiBcCisgICAgY3J5cHRzZXR1cCBcCisgICAgbnNzIFwKKyAgICB2b2x1bWUta2V5IFwKKyAgICBsaWJieXRlc2l6ZSBcCisgICAgYnRyZnMtdG9vbHMgXAorIgorUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgbHZtMiBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMgbHZtIGRtIGttb2QgcGFydGVkIGZzIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uMywgLS13aXRob3V0LXB5dGhvbjMsLHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW2x2bV0gPSAiLS13aXRoLWx2bSwgLS13aXRob3V0LWx2bSwgbXVsdGlwYXRoLXRvb2xzIgorUEFDS0FHRUNPTkZJR1tkbV0gPSAiLS13aXRoLWRtLCAtLXdpdGhvdXQtZG0iCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi0td2l0aC1rYmQsIC0td2l0aG91dC1rYmQsIGttb2QiCitQQUNLQUdFQ09ORklHW3BhcnRlZF0gPSAiLS13aXRoLXBhcnQsIC0td2l0aG91dC1wYXJ0LCBwYXJ0ZWQiCitQQUNLQUdFQ09ORklHW2ZzXSA9ICItLXdpdGgtZnMsIC0td2l0aG91dC1mcywgdXRpbC1saW51eCIKK1BBQ0tBR0VDT05GSUdbZG9jXSA9ICItLXdpdGgtZ3RrLWRvYywgLS13aXRob3V0LWd0ay1kb2MsIGd0ay1kb2MtbmF0aXZlIgorCitleHBvcnQgU1RBR0lOR19JTkNESVIKK2V4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy91dGlscy8ubGlicyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliZXhlY2luZm8vbGliZXhlY2luZm9fMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliZXhlY2luZm8vbGliZXhlY2luZm9fMS4xLmJiCmluZGV4IDEzYTM4YWIuLmQ0YmFkMzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmV4ZWNpbmZvL2xpYmV4ZWNpbmZvXzEuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJleGVjaW5mby9saWJleGVjaW5mb18xLjEuYmIKQEAgLTE1LDggKzE1LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4ZTllODFjNTU0YzFjNWQ3MzViYzg3NzQ0OGU5MmI5MSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOWEyMTkxM2U3ZmRhYzhlZjZiMzMyNTBiMTY3YWExZmMwYTdiOGExNzUxNDVlMjY5MTNhNGMxOWQ4YTU5YjFmIgogCi1DRkxBR1MgKz0gIi1mbm8tb21pdC1mcmFtZS1wb2ludGVyIgotQ0ZMQUdTICs9ICIgLURfR05VX1NPVVJDRSIKK0NGTEFHUyArPSAiLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgIC1EX0dOVV9TT1VSQ0UiCiAKIGRvX2luc3RhbGwoKSB7CiAgICAgaW5zdGFsbCAtRCAtbSAwNzQ0ICR7U30vZXhlY2luZm8uaCAke0R9JHtpbmNsdWRlZGlyfS9leGVjaW5mby5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZV8xLjA5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGVfMS4wOS5iYgppbmRleCBlNTY1NWI1Li4wYzQxYWZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZV8xLjA5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlXzEuMDkuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkZpbGUgbG9ja2luZyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLnFhLmRlYmlhbi5vcmcvbGlibC9saWJsb2NrZmlsZS5odG1sIgogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1hYzI4NGE2MGQ0OGVhYTRiYzgxMWNkZGMzNzdmYTM0MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9maWxlcy9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2ZpbGVzL2FkZC1taXNzaW5nLXB5dGhvbi1pbmNsdWRlLWRpci1mb3ItY3Jvc3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEyNDkyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9maWxlcy9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gMWVhMDllMDlhYjIzODdjMzI2YmI3MTcwODM1MzYxZWNlNmUyNTQ3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMyBBdWcgMjAxNSAxMzo0MzoxNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weS5pbjogYWRkIG1pc3NpbmcgcHl0aG9uIGluY2x1ZGUgZGlyIGZvciBjcm9zcworIGNvbXBpbGluZworCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHB5dGhvbi9NYWtlZmlsZS5hbSB8IDIgKy0KKyBweXRob24vc2V0dXAucHkuaW4gfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCBhYmM1Y2QzLi5lMzViYTcxIDEwMDY0NAorLS0tIGEvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9weXRob24vTWFrZWZpbGUuYW0KK0BAIC0xNCw0ICsxNCw0IEBAIGFsbC1sb2NhbDoKKyAJQ0ZMQUdTPSIke0NGTEFHU30gLWZuby1zdHJpY3QtYWxpYXNpbmciIEBQWVRIT05CSU5BUllAIHNldHVwLnB5IGJ1aWxkIC0tYnVpbGQtbGliPS4KKyAKKyBpbnN0YWxsLWV4ZWMtbG9jYWw6CistCUNGTEFHUz0iJHtDRkxBR1N9IC1mbm8tc3RyaWN0LWFsaWFzaW5nIiBAUFlUSE9OQklOQVJZQCBzZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PSR7REVTVERJUn0ke3ByZWZpeH0KKysJQ0ZMQUdTPSIke0NGTEFHU30gLWZuby1zdHJpY3QtYWxpYXNpbmciIEBQWVRIT05CSU5BUllAIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JHtERVNURElSfSR7cHJlZml4fSAtLWluc3RhbGwtbGliPSR7REVTVERJUn0vJHtQWVRIT05TSVRFRElSfQorZGlmZiAtLWdpdCBhL3B5dGhvbi9zZXR1cC5weS5pbiBiL3B5dGhvbi9zZXR1cC5weS5pbgoraW5kZXggNjQ1NzU5NS4uZDNkYjBlNSAxMDA3NTUKKy0tLSBhL3B5dGhvbi9zZXR1cC5weS5pbgorKysrIGIvcHl0aG9uL3NldHVwLnB5LmluCitAQCAtNiw2ICs2LDcgQEAKKyAKKyBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cCwgRXh0ZW5zaW9uCisgZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQgaW1wb3J0IGJ1aWxkX2V4dCBhcyBfYnVpbGRfZXh0CisraW1wb3J0IG9zCisgCisgY2xhc3MgYnVpbGRfZXh0KF9idWlsZF9leHQpOgorICAgICBkZWYgZ2VuY29uc3RhbnRzKHNlbGYsIGhlYWRlcmZpbGUsIG91dHB1dGZpbGUpOgorQEAgLTIzLDcgKzI0LDcgQEAgY2xhc3MgYnVpbGRfZXh0KF9idWlsZF9leHQpOgorIAorIHB3cW1vZHVsZSA9IEV4dGVuc2lvbigncHdxdWFsaXR5JywKKyAgICAgICAgICAgICBzb3VyY2VzID0gWydwd3F1YWxpdHkuYyddLAorLSAgICAgICAgICAgIGluY2x1ZGVfZGlycyA9IFsnLi4vc3JjJ10sCisrICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gWycuLi9zcmMnLCBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnU1RBR0lOR19JTkNESVInXSwgb3MuZW52aXJvblsnUFlUSE9OX0RJUiddKV0sCisgICAgICAgICAgICAgbGlicmFyeV9kaXJzID0gWycuLi9zcmMvLmxpYnMnXSwKKyAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3B3cXVhbGl0eSddKQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5XzEuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzk2MDYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMC5iYgpAQCAtMCwwICsxLDQ1IEBACitERVNDUklQVElPTiA9ICJMaWJyYXJ5IGZvciBwYXNzd29yZCBxdWFsaXR5IGNoZWNraW5nIGFuZCBnZW5lcmF0aW5nIHJhbmRvbSBwYXNzd29yZHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eSIKK1NFQ1RJT04gPSAiZGV2ZWwvbGliIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZiZDJmMTM4NmRmODEzYTQ1OWEwYzM0ZmRlNjc2ZmMyIgorCitTUkNOQU1FID0gImxpYnB3cXVhbGl0eSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC8ke1NSQ05BTUV9LSR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImI4ZGVmY2M3MjgwYTkwZTk0MDBkNjY4OWM5M2EyNzljIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkZTZmZjA0NmNmMjE3MmQyNjVhMmNiNmY4ZGE0MzlkODk0ZjNlNGU4MTU3YjA1NmM1MTU1MTUyMzJmYWRlNmIiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitERVBFTkRTID0gImNyYWNrbGliIHZpcnR1YWwvZ2V0dGV4dCBweXRob24zIgorUkRFUEVORFNfcHl0aG9uMy1saWJwd3F1YWxpdHkgPSAiJHtQTn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgZ2V0dGV4dAorCitCID0gIiR7U30iCisKK2V4cG9ydCBQWVRIT05fRElSCitleHBvcnQgQlVJTERfU1lTCitleHBvcnQgSE9TVF9TWVMKK2V4cG9ydCBTVEFHSU5HX0xJQkRJUgorZXhwb3J0IFNUQUdJTkdfSU5DRElSCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXB5dGhvbi1yZXY9JHtQWVRIT05fQkFTRVZFUlNJT059IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXB5dGhvbi1iaW5hcnk9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXB5dGhvbnNpdGVkaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAorICAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS1wYW0sIC0tZGlzYWJsZS1wYW0sIGxpYnBhbSIKKworUEFDS0FHRVMgKz0gInB5dGhvbjMtbGlicHdxdWFsaXR5IHB5dGhvbjMtbGlicHdxdWFsaXR5LWRiZyIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvcGFtX3B3cXVhbGl0eS5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5L3BhbV9wd3F1YWxpdHkuYSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5L3BhbV9wd3F1YWxpdHkubGEiCitGSUxFU19weXRob24zLSR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU19weXRob24zLSR7UE59LWRiZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjZiYjdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBJUEMgbGlicmFyeSBmb3IgaGlnaCBwZXJmb3JtYW5jZSBzZXJ2ZXJzIgotREVTQ1JJUFRJT04gPSAibGlicWIgaXMgYSBsaWJyYXJ5IHdpdGggdGhlIHByaW1hcnkgcHVycG9zZSBvZiBwcm92aWRpbmcgaGlnaCBwZXJmb3JtYW5jZSBjbGllbnQgc2VydmVyIHJldXNhYmxlIGZlYXR1cmVzLiBcCi1JdCBwcm92aWRlcyBoaWdoIHBlcmZvcm1hbmNlIGxvZ2dpbmcsIHRyYWNpbmcsIGlwYywgYW5kIHBvbGwuIgotCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY2x1c3RlcmxhYnMvbGlicWIvd2lraSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjFiZjQxZjI4MGNmODA1MDg2ZGQ1YTcyMGIzNzc4NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBWIC49ICIrZ2l0JHtTUkNQVn0iCi0KLVNSQ1JFViA9ICIwYTMyOTY4M2E3NmJjNmFlYjM2ZjIwZjJiZjZiNDNiYTA0NDBjNGRjIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0NsdXN0ZXJMYWJzLyR7QlBOfS5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtcnVudGltZS1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKLSAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAoIGNkICR7U30KLSAgICAke1N9L2F1dG9nZW4uc2ggKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWJfMS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzRmNjYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWJfMS4wLjIuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJBbiBJUEMgbGlicmFyeSBmb3IgaGlnaCBwZXJmb3JtYW5jZSBzZXJ2ZXJzIgorREVTQ1JJUFRJT04gPSAibGlicWIgaXMgYSBsaWJyYXJ5IHdpdGggdGhlIHByaW1hcnkgcHVycG9zZSBvZiBwcm92aWRpbmcgaGlnaCBwZXJmb3JtYW5jZSBjbGllbnQgc2VydmVyIHJldXNhYmxlIGZlYXR1cmVzLiBcCitJdCBwcm92aWRlcyBoaWdoIHBlcmZvcm1hbmNlIGxvZ2dpbmcsIHRyYWNpbmcsIGlwYywgYW5kIHBvbGwuIgorCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY2x1c3RlcmxhYnMvbGlicWIvd2lraSIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjFiZjQxZjI4MGNmODA1MDg2ZGQ1YTcyMGIzNzc4NSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICI2MDhkZTZkNTlhM2RlMGVlZjBmYmNiZDhmMjg0YWNiYzAxOGRhYTlhIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0NsdXN0ZXJMYWJzLyR7QlBOfS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtcnVudGltZS1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKKyAgICAgICAgICAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30KKyAgICAke1N9L2F1dG9nZW4uc2ggKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tcmVtb3ZlLWRvYy1hbmQtYXBpZG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tcmVtb3ZlLWRvYy1hbmQtYXBpZG9jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMzI4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMS1NYWtlZmlsZS5hbS1yZW1vdmUtZG9jLWFuZC1hcGlkb2MucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBkYjMyYmE2MGNhNzVkMjg4ZDNhYzA4YjU0MjU2Y2I3NGQ5ZTE1ODFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNiBBcHIgMjAxNyAwMzo0Nzo1OCAtMDQwMAorU3ViamVjdDogW1BBVENIIDEvM10gTWFrZWZpbGUuYW06IHJlbW92ZSBkb2MgYW5kIGFwaWRvYworCitUaGVyZSB3YXMgYSBmYWlsdXJlIGF0IGRvX2luc3RhbGwgdGltZSwgc28gcmVtb3ZlIGRvYyB0byB3b3JrYXJvdW5kLgorCitVcHN0cmVhbS1TdGF0dXM6ICBJbmFwcHJvcHJpYXRlIHdvcmthcm91bmQKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBjNmFiNjQwLi5mYjA5ZmMxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMSw1ICsxLDUgQEAKKyBBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAorLVNVQkRJUlMgPSBwbyBzcmMgdGVzdHMgZG9jIGFwaWRvYworK1NVQkRJUlMgPSBwbyBzcmMgdGVzdHMKKyAKKyBFWFRSQV9ESVNUID0gXAorICAgICBsaWJyZXBvcnQucGMuaW4gXAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMi1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi14bWx0by1hbmQtYXNjaWlkb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMi1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi14bWx0by1hbmQtYXNjaWlkb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ2NTEwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAyLWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLXhtbHRvLWFuZC1hc2NpaWRvYy5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIGQ4YzQ5ZTZhMTVhYjI4ZjRjYTk0ZTAzYjJhNTNlZDhkZjYzMzQ2Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI2IEFwciAyMDE3IDAzOjQ5OjQ1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBjb25maWd1cmUuYWM6IHJlbW92ZSBwcm9nIHRlc3Qgb2YgeG1sdG8gYW5kIGFzY2lpZG9jCisKK1RoZSBwcm9nIG9mIHhtbHRvIGFuZCBhc2NpaWRvYyB3ZXJlIHVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRzLAorYW5kIHNpbmNlIHRoZSBkb2MgbW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gZGlzYWJsZWQsIHNvIHdlIHNob3VsZAorcmVtb3ZlIHRoZSBwcm9nIHRlc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgd29ya2Fyb3VuZAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxOCAtLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGNjZWZlNTAuLmVkNDhjODggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY4LDI0ICs2OCw2IEBAIGlmIHRlc3QgLXogIiRQWVRIT04zIjsgdGhlbgorICAgICBleGl0IDEKKyBmaQorIAorLUFDX1BBVEhfUFJPRyhbQVNDSUlET0NdLCBbYXNjaWlkb2NdLCBbbm9dKQorLVtpZiB0ZXN0ICIkQVNDSUlET0MiID0gIm5vIl0KKy1bdGhlbl0KKy0gICAgW2VjaG8gIlRoZSBhc2NpaWRvYyBwcm9ncmFtIHdhcyBub3QgZm91bmQgaW4gdGhlIHNlYXJjaCBwYXRoLiBQbGVhc2UgZW5zdXJlIl0KKy0gICAgW2VjaG8gInRoYXQgaXQgaXMgaW5zdGFsbGVkIGFuZCBpdHMgZGlyZWN0b3J5IGlzIGluY2x1ZGVkIGluIHRoZSBzZWFyY2ggcGF0aC4iXQorLSAgICBbZWNobyAiVGhlbiBydW4gY29uZmlndXJlIGFnYWluIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGJ1aWxkIGxpYnJlcG9ydC4iXQorLSAgICBbZXhpdCAxXQorLVtmaV0KKy0KKy1BQ19QQVRIX1BST0coW1hNTFRPXSwgW3htbHRvXSwgW25vXSkKKy1baWYgdGVzdCAiJFhNTFRPIiA9ICJubyJdCistW3RoZW5dCistICAgIFtlY2hvICJUaGUgeG1sdG8gcHJvZ3JhbSB3YXMgbm90IGZvdW5kIGluIHRoZSBzZWFyY2ggcGF0aC4gUGxlYXNlIGVuc3VyZSJdCistICAgIFtlY2hvICJ0aGF0IGl0IGlzIGluc3RhbGxlZCBhbmQgaXRzIGRpcmVjdG9yeSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VhcmNoIHBhdGguIl0KKy0gICAgW2VjaG8gIlRoZW4gcnVuIGNvbmZpZ3VyZSBhZ2FpbiBiZWZvcmUgYXR0ZW1wdGluZyB0byBidWlsZCBsaWJyZXBvcnQuIl0KKy0gICAgW2V4aXQgMV0KKy1bZmldCistCisgQUNfQVJHX1dJVEgoYnVnemlsbGEsCisgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1idWd6aWxsYV0sW3VzZSBCdWd6aWxsYSBwbHVnaW4gKGRlZmF1bHQgaXMgWUVTKV0pLAorIExJQlJFUE9SVF9QQVJTRV9XSVRIKFtidWd6aWxsYV0pKQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMy13aXRob3V0LWJ1aWxkLXBsdWdpbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMy13aXRob3V0LWJ1aWxkLXBsdWdpbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FkNzc3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAzLXdpdGhvdXQtYnVpbGQtcGx1Z2lucy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDBlOTZkOWYyM2IyYjE2NmU3NDQ0ZTdjOGUwYTZkNGI4M2MyZWNjZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI2IEFwciAyMDE3IDAzOjUxOjAzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSB3aXRob3V0IGJ1aWxkIHBsdWdpbnMKKworVXBzdHJlYW0tU3RhdHVzOiAgSW5hcHByb3ByaWF0ZSB3b3JrYXJvdW5kCisKK1JlYmFzZSB0byAyLjkuMQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCBjMTU5MjhjLi5iYWMwMmIxIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC04LDQgKzgsNCBAQCBpZiBCVUlMRF9ORVdUCisgc3ViX2RpcnMgKz0gcmVwb3J0LW5ld3QKKyBlbmRpZgorIAorLVNVQkRJUlMgPSBpbmNsdWRlIGxpYiBwbHVnaW5zIHJlcG9ydC1weXRob24gY2xpIGNsaWVudC1weXRob24gd29ya2Zsb3dzICQoc3ViX2RpcnMpCisrU1VCRElSUyA9IGluY2x1ZGUgbGliIHJlcG9ydC1weXRob24gY2xpIGNsaWVudC1weXRob24gd29ya2Zsb3dzICQoc3ViX2RpcnMpCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDA0LWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLWF1Z3BhcnNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDQtY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YtYXVncGFyc2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzOWU1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDA0LWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLWF1Z3BhcnNlLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gY2YzYjY0NmZhY2MxOTA3OGVkMjlmODI4ZTM2ZGQyZTU1MjI4MzUxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgQXByIDIwMTcgMDI6MTU6MDIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiByZW1vdmUgcHJvZyB0ZXN0IG9mIGF1Z3BhcnNlCisKK1RoZSBidWlsZCB0aW1lIGRvZXMgbm90IHJlcXVpcmUgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgd29ya2Fyb3VuZAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA4IC0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGMwNmFmMmQuLmI5MGY0OWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI4OCwxNCArMjg4LDYgQEAgQUNfQVJHX1dJVEgoYXVnZWFzbGVuc2xpYmRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGlyZWN0b3J5IGZvciBsaWJyZXBvciBsZW5zIChkZWZhdWx0OiAvdXNyL3NoYXJlL2F1Z2Vhcy9sZW5zZXMpXSldLAorICAgICAgICAgICAgIFtdLCBbd2l0aF9hdWdlYXNsZW5zbGliZGlyPSIvdXNyL3NoYXJlL2F1Z2Vhcy9sZW5zZXMiXSkKKyBBQ19TVUJTVChbQVVHRUFTX0xFTlNfTElCX0RJUl0sIFskd2l0aF9hdWdlYXNsZW5zbGliZGlyXSkKKy1BQ19QQVRIX1BST0coQVVHUEFSU0UsIGF1Z3BhcnNlLCBubykKKy1baWYgdGVzdCAiJEFVR1BBUlNFIiA9ICJubyJdCistW3RoZW5dCistICAgIFtlY2hvICJUaGUgYXVncGFyc2UgcHJvZ3JhbSB3YXMgbm90IGZvdW5kIGluIHRoZSBzZWFyY2ggcGF0aC4gUGxlYXNlIGVuc3VyZSJdCistICAgIFtlY2hvICJ0aGF0IGl0IGlzIGluc3RhbGxlZCBhbmQgaXRzIGRpcmVjdG9yeSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VhcmNoIHBhdGguIl0KKy0gICAgW2VjaG8gIlRoZW4gcnVuIGNvbmZpZ3VyZSBhZ2FpbiBiZWZvcmUgYXR0ZW1wdGluZyB0byBidWlsZCBsaWJyZXBvcnQuIl0KKy0gICAgW2V4aXQgMV0KKy1bZmldCisgCisgQUNfQVJHX1dJVEgoW2RlZmF1bHRkdW1wZGlybW9kZV0sCisgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kZWZhdWx0ZHVtcGRpcm1vZGU9T0NUQUwtTU9ERV0sCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDA1LXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwNS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzBmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwNS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTQyIEBACitGcm9tIDA2NzEwYWI4OWZjN2Q3YTgyYTM3ODI4OWFhM2ZjZDkyZDMzMDc0ZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI3IEFwciAyMDE3IDAzOjMxOjAwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBweXRob24yIHN1cHBvcnQKKworV2UgZG8gbm90IHJlcXVpcmUgcHl0aG9uMiwgc28gcmVtb3ZlIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6ICBJbmFwcHJvcHJpYXRlIHdvcmthcm91bmQKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUgLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NsaWVudC1weXRob24vcmVwb3J0Y2xpZW50L01ha2VmaWxlLmFtIHwgIDkgLS0tLS0tLS0tCisgc3JjL3JlcG9ydC1weXRob24vTWFrZWZpbGUuYW0gICAgICAgICAgICAgIHwgMTkgLS0tLS0tLS0tLS0tLS0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGViNTAzODIuLjgyNmQwZmUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE2NiwxNSArMTY2LDYgQEAgZG8KKyBkb25lCisgZmkgZG5sIGVuZCBOT19NQU5USVNCVAorIAorLUFDX1BBVEhfUFJPRyhbUFlUSE9OX0NPTkZJR10sIFtweXRob24tY29uZmlnXSwgW25vXSkKKy1baWYgdGVzdCAiJFBZVEhPTl9DT05GSUciID0gIm5vIl0KKy1bdGhlbl0KKy0gICAgW2VjaG8gIlRoZSBweXRob24tY29uZmlnIHByb2dyYW0gd2FzIG5vdCBmb3VuZCBpbiB0aGUgc2VhcmNoIHBhdGguIFBsZWFzZSBlbnN1cmUiXQorLSAgICBbZWNobyAidGhhdCBpdCBpcyBpbnN0YWxsZWQgYW5kIGl0cyBkaXJlY3RvcnkgaXMgaW5jbHVkZWQgaW4gdGhlIHNlYXJjaCBwYXRoLiJdCistICAgIFtlY2hvICJUaGVuIHJ1biBjb25maWd1cmUgYWdhaW4gYmVmb3JlIGF0dGVtcHRpbmcgdG8gYnVpbGQgbGlicmVwb3J0LiJdCistICAgIFtleGl0IDFdCistW2ZpXQorLQorIEFDX1BBVEhfUFJPRyhbUFlUSE9OM19DT05GSUddLCBbcHl0aG9uMy1jb25maWddLCBbbm9dKQorIFtpZiB0ZXN0ICIkUFlUSE9OM19DT05GSUciID0gIm5vIl0KKyBbdGhlbl0KK0BAIC0xODQsOSArMTc1LDYgQEAgQUNfUEFUSF9QUk9HKFtQWVRIT04zX0NPTkZJR10sIFtweXRob24zLWNvbmZpZ10sIFtub10pCisgICAgIFtleGl0IDFdCisgW2ZpXQorIAorLVBZVEhPTl9DRkxBR1M9YHB5dGhvbi1jb25maWcgLS1jZmxhZ3MgMj4gL2Rldi9udWxsYAorLVBZVEhPTl9MSUJTPWBweXRob24tY29uZmlnIC0tbGlicyAyPiAvZGV2L251bGxgCistCisgUFlUSE9OM19DRkxBR1M9YHB5dGhvbjMtY29uZmlnIC0tY2ZsYWdzIDI+IC9kZXYvbnVsbGAKKyBQWVRIT04zX0xJQlM9YHB5dGhvbjMtY29uZmlnIC0tbGlicyAyPiAvZGV2L251bGxgCisgCitAQCAtMTk4LDkgKzE4Niw2IEBAIFBZVEhPTjNfRElSPWAkUFlUSE9OMyAtYyAiaW1wb3J0IGRpc3R1dGlscy5zeXNjb25maWc7IFwKKyBQWVRIT04zX0VYRUNESVI9YCRQWVRIT04zIC1jICJpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgXAorICAgICBwcmludChkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliKDEsMCxwcmVmaXg9JyRQWVRIT04zX0VYRUNfUFJFRklYJykpImAKKyAKKy1BQ19TVUJTVChQWVRIT05fQ0ZMQUdTKQorLUFDX1NVQlNUKFBZVEhPTl9MSUJTKQorLQorIEFDX1NVQlNUKFBZVEhPTjNfQ0ZMQUdTKQorIEFDX1NVQlNUKFBZVEhPTjNfTElCUykKKyBBQ19TVUJTVChweXRob24zZGlyLCAkUFlUSE9OM19ESVIpCitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC1weXRob24vcmVwb3J0Y2xpZW50L01ha2VmaWxlLmFtIGIvc3JjL2NsaWVudC1weXRob24vcmVwb3J0Y2xpZW50L01ha2VmaWxlLmFtCitpbmRleCA0NmFjNDJmLi5mYjUyMTZhIDEwMDY0NAorLS0tIGEvc3JjL2NsaWVudC1weXRob24vcmVwb3J0Y2xpZW50L01ha2VmaWxlLmFtCisrKysgYi9zcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0KK0BAIC00LDEzICs0LDEwIEBAIFBZRklMRVMgPSBcCisgICAgIGRuZmRlYnVnaW5mby5weSBcCisgICAgIHl1bWRlYnVnaW5mby5weQorIAorLXB5MmNsaWVudGRpciA9ICQocHlleGVjZGlyKS9yZXBvcnRjbGllbnQKKyBweTNjbGllbnRkaXIgPSAkKHB5M2V4ZWNkaXIpL3JlcG9ydGNsaWVudAorIAorLXB5MmNsaWVudF9QWVRIT04gPSAkKFBZRklMRVMpCisgcHkzY2xpZW50X1BZVEhPTiA9ICQoUFlGSUxFUykKKyAKKy1weTJjbGllbnRfTFRMSUJSQVJJRVMgPSBfcmVwb3J0Y2xpZW50LmxhCisgcHkzY2xpZW50X0xUTElCUkFSSUVTID0gX3JlcG9ydGNsaWVudDMubGEKKyAKKyBQWUVYVEZJTEVTID0gXAorQEAgLTMzLDEyICszMCw2IEBAIFBZRVhUTERGTEFHUyA9IFwKKyAgICAgLWF2b2lkLXZlcnNpb24gXAorICAgICAtV2wsLXoscmVscm8gLVdsLC16LG5vdworIAorLV9yZXBvcnRjbGllbnRfbGFfU09VUkNFUyA9ICQoUFlFWFRGSUxFUykKKy1fcmVwb3J0Y2xpZW50X2xhX0NQUEZMQUdTID0gJChQWUVYVENQUEZMQUdTKSAkKFBZVEhPTl9DRkxBR1MpCistX3JlcG9ydGNsaWVudF9sYV9MREZMQUdTID0gJChQWUVYVExERkxBR1MpIFwKKy0gICAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IGluaXRfcmVwb3J0Y2xpZW50CistX3JlcG9ydGNsaWVudF9sYV9MSUJBREQgPSAuLi8uLi9saWIvbGlicmVwb3J0LmxhCistCisgX3JlcG9ydGNsaWVudDNfbGFfU09VUkNFUyA9ICQoUFlFWFRGSUxFUykKKyBfcmVwb3J0Y2xpZW50M19sYV9DUFBGTEFHUyA9ICQoUFlFWFRDUFBGTEFHUykgJChQWVRIT04zX0NGTEFHUykKKyBfcmVwb3J0Y2xpZW50M19sYV9MREZMQUdTID0gJChQWUVYVExERkxBR1MpIFwKK2RpZmYgLS1naXQgYS9zcmMvcmVwb3J0LXB5dGhvbi9NYWtlZmlsZS5hbSBiL3NyYy9yZXBvcnQtcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCA3OTNjZWJkLi4yNDFkY2I3IDEwMDY0NAorLS0tIGEvc3JjL3JlcG9ydC1weXRob24vTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9yZXBvcnQtcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtMSwxMiArMSw5IEBACisgUFlGSUxFUyA9IF9faW5pdF9fLnB5IGFjY291bnRtYW5hZ2VyLnB5CisgCistcHlyZXBvcnRleGVjZGlyID0gJChweWV4ZWNkaXIpL3JlcG9ydAorIHB5M3JlcG9ydGV4ZWNkaXIgPSAkKHB5M2V4ZWNkaXIpL3JlcG9ydAorIAorLXB5cmVwb3J0ZXhlY19QWVRIT04gPSAkKFBZRklMRVMpCisgcHkzcmVwb3J0ZXhlY19QWVRIT04gPSAkKFBZRklMRVMpCisgCistcHlyZXBvcnRleGVjX0xUTElCUkFSSUVTID0gX3B5cmVwb3J0LmxhCisgcHkzcmVwb3J0ZXhlY19MVExJQlJBUklFUyA9IF9weTNyZXBvcnQubGEKKyAKKyBQWUVYVEZJTEVTID0gXAorQEAgLTM0LDIwICszMSw2IEBAIFBZRVhUTERGTEFHUyA9IFwKKyAgICAgLWF2b2lkLXZlcnNpb24gXAorICAgICAtV2wsLXoscmVscm8gLVdsLC16LG5vdworIAorLV9weXJlcG9ydF9sYV9TT1VSQ0VTID0gJChQWUVYVEZJTEVTKQorLQorLV9weXJlcG9ydF9sYV9DUFBGTEFHUyA9IFwKKy0gICAgJChQWUVYVENQUEZMQUdTKSBcCistICAgICQoUFlUSE9OX0NGTEFHUykKKy0KKy1fcHlyZXBvcnRfbGFfTERGTEFHUyA9IFwKKy0gICAkKFBZRVhUTERGTEFHUykgXAorLSAgIC1leHBvcnQtc3ltYm9scy1yZWdleCBpbml0X3B5cmVwb3J0CistCistX3B5cmVwb3J0X2xhX0xJQkFERCA9IFwKKy0gICAgLi4vbGliL2xpYnJlcG9ydC5sYSBcCistICAgICQoUFlUSE9OMl9MSUJTKQorLQorIF9weTNyZXBvcnRfbGFfU09VUkNFUyA9ICQoUFlFWFRGSUxFUykKKyAKKyBfcHkzcmVwb3J0X2xhX0NQUEZMQUdTID0gXAorQEAgLTY0LDcgKzQ3LDYgQEAgX3B5M3JlcG9ydF9sYV9MSUJBREQgPSBcCisgCisgIyByZXBvcnQgY29tcGF0OgorIAorLXB5cmVwb3J0aW9leGVjZGlyID0gJChweWV4ZWNkaXIpL3JlcG9ydC9pbworIHB5M3JlcG9ydGlvZXhlY2RpciA9ICQocHkzZXhlY2RpcikvcmVwb3J0L2lvCisgCisgUFlJT0ZJTEVTID0gXAorQEAgLTczLDUgKzU1LDQgQEAgUFlJT0ZJTEVTID0gXAorICAgICBpby9OZXd0SU8ucHkgXAorICAgICBpby9UZXh0SU8ucHkKKyAKKy1weXJlcG9ydGlvZXhlY19QWVRIT04gPSAkKFBZSU9GSUxFUykKKyBweTNyZXBvcnRpb2V4ZWNfUFlUSE9OID0gJChQWUlPRklMRVMpCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9saWJyZXBvcnRfMi45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvbGlicmVwb3J0XzIuOS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNTQzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvbGlicmVwb3J0XzIuOS4yLmJiCkBAIC0wLDAgKzEsNDIgQEAKK0RFU0NSSVBUSU9OID0gIkxpYnJhcmllcyBwcm92aWRpbmcgQVBJIGZvciByZXBvcnRpbmcgZGlmZmVyZW50IHByb2JsZW1zIGluIGFwcGxpY2F0aW9ucyBcCit0byBkaWZmZXJlbnQgYnVnIHRhcmdldHMgbGlrZSBCdWd6aWxsYSwgZnRwLCB0cmFjLCBldGMuLi4iCitTVU1NQVJZID0gIkdlbmVyaWMgbGlicmFyeSBmb3IgcmVwb3J0aW5nIHZhcmlvdXMgcHJvYmxlbXMiCitIT01FUEFHRSA9ICJodHRwczovL2FicnQucmVhZHRoZWRvY3Mub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorREVQRU5EUyA9ICJ4bWxycGMtYyB4bWxycGMtYy1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIFwKKyAgICAgICAganNvbi1jIGxpYnRhciBsaWJuZXd0IGxpYnByb3h5IHJwbSBcCisgICAgICAgIGF1Z2VhcyBzYXR5ciBzeXN0ZW1kIGd0ayszIFwKKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FicnQvbGlicmVwb3J0LmdpdDtwcm90b2NvbD1odHRwcyIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLXJlbW92ZS1kb2MtYW5kLWFwaWRvYy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi14bWx0by1hbmQtYXNjaWlkb2MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtd2l0aG91dC1idWlsZC1wbHVnaW5zLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLWF1Z3BhcnNlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggXAorIgorU1JDUkVWID0gImNmZmY0OWYwNmQ5ZDE3ZTI2OWQ0NjNlZTcxYjNkOTRjOGJmYjBjNTgiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKKworUkRFUEVORFNfcHl0aG9uMy1saWJyZXBvcnQgKz0gIiR7UE59IgorCitkb19wYXRjaFtwcmVmdW5jc10gKz0gImRvX2dlbl92ZXJzaW9uIgorZG9fZ2VuX3ZlcnNpb24oKSB7CisgICAgY2QgJHtTfQorICAgIC4vZ2VuLXZlcnNpb24KK30KKworUEFDS0FHRVMgKz0gInB5dGhvbjMtbGlicmVwb3J0IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8qIgorRklMRVNfJHtQTn0tZGJnICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLy5kZWJ1ZyIKK0ZJTEVTX3B5dGhvbjMtbGlicmVwb3J0ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE0YzJhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sb2djaGVjay9sb2djaGVja18xLjMuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIkFuYWx5emVzIGxvZyBmaWxlcyBhbmQgc2VuZHMgbm90aWNlYWJsZSBldmVudHMgYXMgZW1haWwiCi1ERVNDUklQVElPTiA9ICJcCi1Mb2djaGVjayBpcyBhIHNpbXBsZSB1dGlsaXR5IHdoaWNoIGlzIGRlc2lnbmVkIHRvIGFsbG93IGEgc3lzdGVtIGFkbWluaXN0cmF0b3IgXAotdG8gdmlldyB0aGUgbG9nLWZpbGVzIHdoaWNoIGFyZSBwcm9kdWNlZCB1cG9uIGhvc3RzIHVuZGVyIHRoZWlyIGNvbnRyb2wuIFwKLUl0IGRvZXMgdGhpcyBieSBtYWlsaW5nIHN1bW1hcmllcyBvZiB0aGUgbG9nLWZpbGVzIHRvIHRoZW0sIGFmdGVyIGZpcnN0IFwKLWZpbHRlcmluZyBvdXQgIm5vcm1hbCIgZW50cmllcy4gXAotTm9ybWFsIGVudHJpZXMgYXJlIGVudHJpZXMgd2hpY2ggbWF0Y2ggb25lIG9mIHRoZSBtYW55IGluY2x1ZGVkIHJlZ3VsYXIgXAotZXhwcmVzc2lvbiBmaWxlcyBjb250YWluIGluIHRoZSBkYXRhYmFzZS4iCi1TRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlYmlhbi5vcmcvZ2l0L2xvZ2NoZWNrL2xvZ2NoZWNrLmdpdCIKLVNSQ1JFViA9ICIyNDI5ZTY3YWQ4NzVmZWU4YTAyMzRjNjRkNTA0Mjc3YjAzOGM4OWNkIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19pbnN0YWxsKCkgewotICAgICMgRml4IFFBIElzc3VlCi0gICAgc2VkIC1pICcvaW5zdGFsbCAtZCAkKERFU1RESVIpXC92YXJcL2xvY2tcL2xvZ2NoZWNrL3MvXi8jLycgTWFrZWZpbGUKLQotICAgICMgIm1ha2UgaW5zdGFsbCIgZG8gbm90IGluc3RhbGwgdGhlIG1hbnBhZ2VzLiBJbnN0YWxsIHRoZW0gbWFudWFsbHkuCi0gICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7bWFuZGlyfS9tYW4xCi0gICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtbSA2NDQgZG9jcy9sb2djaGVjay10ZXN0LjEgJHtEfSR7bWFuZGlyfS9tYW4xLwotICAgIGluc3RhbGwgLW0gNjQ0IGRvY3MvbG9ndGFpbC44ICR7RH0ke21hbmRpcn0vbWFuOC8KLSAgICBpbnN0YWxsIC1tIDY0NCBkb2NzL2xvZ3RhaWwyLjggJHtEfSR7bWFuZGlyfS9tYW44LwotICAgIHNlZCAtaSAicy9zeXNsb2cvbWVzc2FnZXMvIiBldGMvbG9nY2hlY2subG9nZmlsZXMKLSAgICBzZWQgLWkgInMvYXV0aFwubG9nL3NlY3VyZS8iIGV0Yy9sb2djaGVjay5sb2dmaWxlcwotICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAotICAgIGluc3RhbGwgLW0gNjQ0IGRlYmlhbi9sb2djaGVjay5jcm9uLmQgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kL2xvZ2NoZWNrCi0gICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfS92YXIvbGliL2xvZ2NoZWNrCi0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sb2d0YWlsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAxLURvbi10LXJldXNlLXdlYWstc3ltYm9sLW9wdG9wdC10by1maXgtRlRCRlMtb24tbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAxLURvbi10LXJldXNlLXdlYWstc3ltYm9sLW9wdG9wdC10by1maXgtRlRCRlMtb24tbWlwcy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAyLVBhdGNoZWQtb3V0LVNTTDItc3VwcG9ydC1zaW5jZS1pdC1pcy1uby1sb25nZXItc3VwcG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAyLVBhdGNoZWQtb3V0LVNTTDItc3VwcG9ydC1zaW5jZS1pdC1pcy1uby1sb25nZXItc3VwcG8ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMi1QYXRjaGVkLW91dC1TU0wyLXN1cHBvcnQtc2luY2UtaXQtaXMtbm8tbG9uZ2VyLXN1cHBvLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAyLVBhdGNoZWQtb3V0LVNTTDItc3VwcG9ydC1zaW5jZS1pdC1pcy1uby1sb25nZXItc3VwcG8ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMy1GaXhlZC1MaW50aWFuLXdhcm5pbmctd2FybmluZy1tYWNyby1OLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMy1GaXhlZC1MaW50aWFuLXdhcm5pbmctd2FybmluZy1tYWNyby1OLW5vdC1kZWZpbmVkLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDMtRml4ZWQtTGludGlhbi13YXJuaW5nLXdhcm5pbmctbWFjcm8tTi1ub3QtZGVmaW5lZC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMy1GaXhlZC1MaW50aWFuLXdhcm5pbmctd2FybmluZy1tYWNyby1OLW5vdC1kZWZpbmVkLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDExLW91dG9mLUludHJvZHVjZS1leHBhbmRhZGRyLWZsYWcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMi11bnBhY2stRGlzYWJsZS1vcHRpb24tcHJvY2Vzc2luZy1mb3ItZW1haWwtYWRkcmVzc2VzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMy1maW8uYy1VbmNvbmRpdGlvbmFsbHktcmVxdWlyZS13b3JkZXhwLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMy1maW8uYy1VbmNvbmRpdGlvbmFsbHktcmVxdWlyZS13b3JkZXhwLXN1cHBvcnQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNC1nbG9ibmFtZS1JbnZva2Utd29yZGV4cC13aXRoLVdSREVfTk9DTUQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE0LWdsb2JuYW1lLUludm9rZS13b3JkZXhwLXdpdGgtV1JERV9OT0NNRC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE0LWdsb2JuYW1lLUludm9rZS13b3JkZXhwLXdpdGgtV1JERV9OT0NNRC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNC1nbG9ibmFtZS1JbnZva2Utd29yZGV4cC13aXRoLVdSREVfTk9DTUQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNS11c3Itc2Jpbi1zZW5kbWFpbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTUtdXNyLXNiaW4tc2VuZG1haWwucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNS11c3Itc2Jpbi1zZW5kbWFpbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNS11c3Itc2Jpbi1zZW5kbWFpbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy9leHBsaWNpdGx5LmRpc2FibGUua3JiNS5zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvZXhwbGljaXRseS5kaXNhYmxlLmtyYjUuc3VwcG9ydC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy9leHBsaWNpdGx5LmRpc2FibGUua3JiNS5zdXBwb3J0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy9leHBsaWNpdGx5LmRpc2FibGUua3JiNS5zdXBwb3J0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9tYWlseF8xMi41LTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9tYWlseF8xMi41LTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGExOTFhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYgpAQCAtMCwwICsxLDUzIEBACitTVU1NQVJZID0gIm1haWx4IGlzIHRoZSB0cmFkaXRpb25hbCBjb21tYW5kLWxpbmUtbW9kZSBtYWlsIHVzZXIgYWdlbnQiCisKK0RFU0NSSVBUSU9OID0gIk1haWx4IGlzIGRlcml2ZWQgZnJvbSBCZXJrZWxleSBNYWlsIGFuZCBpcyBpbnRlbmRlZCBwcm92aWRlIHRoZSBcCitmdW5jdGlvbmFsaXR5IG9mIHRoZSBQT1NJWCBtYWlseCBjb21tYW5kIHdpdGggYWRkaXRpb25hbCBzdXBwb3J0IFwKK2ZvciBNSU1FLCBJTUFQLCBQT1AzLCBTTVRQLCBhbmQgUy9NSU1FLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2hlaXJsb29tLnNvdXJjZWZvcmdlLm5ldC9tYWlseC5odG1sIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRCAmIE1QTC0xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDIwMmEwYTYyOTEwY2Y5NGY3YWY4YTM0MzZhMmEyZGQiCisKK0RFUEVORFMgPSAib3BlbnNzbDEwIgorCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNzI4VDA0MzQ0M1ovcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS5vcmlnLnRhci5nejtuYW1lPWFyY2hpdmUgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1yZXVzZS13ZWFrLXN5bWJvbC1vcHRvcHQtdG8tZml4LUZUQkZTLW9uLW1pcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1QYXRjaGVkLW91dC1TU0wyLXN1cHBvcnQtc2luY2UtaXQtaXMtbm8tbG9uZ2VyLXN1cHBvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRml4ZWQtTGludGlhbi13YXJuaW5nLXdhcm5pbmctbWFjcm8tTi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLW91dG9mLUludHJvZHVjZS1leHBhbmRhZGRyLWZsYWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi11bnBhY2stRGlzYWJsZS1vcHRpb24tcHJvY2Vzc2luZy1mb3ItZW1haWwtYWRkcmVzc2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtZmlvLmMtVW5jb25kaXRpb25hbGx5LXJlcXVpcmUtd29yZGV4cC1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtZ2xvYm5hbWUtSW52b2tlLXdvcmRleHAtd2l0aC1XUkRFX05PQ01ELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtdXNyLXNiaW4tc2VuZG1haWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZXhwbGljaXRseS5kaXNhYmxlLmtyYjUuc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyOWE2MDMzZWYxNDEyODI0ZDAyZWI5ZDkyMTNjYjFmMiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjAxNWJhNDIwOTEzNTg2N2YzN2EwMjQ1ZDIyMjM1YTM5MmI4YmJlZDk1NjkxMzI4NmI4ODdjMmUyYTlhNDIxYWQiCisKKyMgZm9yIHRoaXMgcGFja2FnZSB3ZSdyZSBtb3N0bHkgaW50ZXJlc3RlZCBpbiB0cmFja2luZyBkZWJpYW4gcGF0Y2hlcywKKyMgYW5kIG5vdCBpbiB0aGUgdXBzdHJlYW0gdmVyc2lvbiB3aGVyZSBhbGwgZGV2ZWxvcG1lbnQgaGFzIGVmZmVjdGl2ZWx5IHN0b3BwZWQKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vaC9oZWlybG9vbS1tYWlseC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj4oKFxkK1wuKikrKS0oKFxkK1wuKikrKSlcLihkaWZmfGRlYmlhblwudGFyKVwuKGd6fHh6KSIKKworUyA9ICIke1dPUktESVJ9L2hlaXJsb29tLW1haWx4LTEyLjUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitDRkxBR1NfYXBwZW5kID0gIiAtRF9CU0RfU09VUkNFIC1EREVCSUFOIC1JJHtTfS9FWFQiCisKKyMgIlNUUklQPXRydWUiIG1lYW5zIHRoYXQgJ3RydWUnIGNvbW1hbmQgd2lsbCBiZSB1c2VkIHRvICdzdHJpcCcgZmlsZXMgd2hpY2ggd2lsbCBhY2hpZXZlIHRoZSBlZmZlY3Qgb2Ygbm90IHN0cmlwcGluZyB0aGVtCisjIG1haWx4J3MgTWFrZWZpbGUgZG9lc24ndCBhbGxvdyBhIG1vcmUgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBhdm9pZCBzdHJpcHBpbmcKK0VYVFJBX09FTUFLRSA9ICJTRU5ETUFJTD0ke3NiaW5kaXJ9L3NlbmRtYWlsIElQdjY9LURIQVZFX0lQdjZfRlVOQ1MgUFJFRklYPS91c3IgVUNCSU5TVEFMTD0vdXNyL2Jpbi9pbnN0YWxsIFNUUklQPXRydWUiCisKKyMgVGhlIG1ha2Vjb25maWcgY2FuJ3QgcnVuIHBhcmFsbGVsbHksIG90aGVyd2lzZSB0aGUgY2hlY2tpbmcgcmVzdWx0cworIyBtaWdodCBiZSBpbmNvcnJlY3QgYW5kIGxlYWQgdG8gZXJyb3JzOgorIyBmaW8uYzo1NjoxNzogZmF0YWwgZXJyb3I6IHNzbC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisjICNpbmNsdWRlIDxzc2wuaD4KK1BBUkFMTEVMX01BS0UgPSAiIgorCisjIENhdXNlcyBnY2MgdG8gZ2V0IHN0dWNrIGFuZCBlYXQgYWxsIGF2YWlsYWJsZSBtZW1vcnkgaW4gcWVtdWFybSBidWlsZHMKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg4LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzXzE3LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzXzE3LjAuMC5iYgppbmRleCBiNjc0NDM5Li40OWI3ZjE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqc18xNy4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfMTcuMC4wLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJTcGlkZXJNb25rZXkgaXMgTW96aWxsYSdzIEphdmFTY3JpcHQgZW5naW5lIHdyaXR0ZW4gaW4gQy9DKysiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL2pzLyIKIExJQ0VOU0UgPSAiTVBMLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uLy4uL0xJQ0VOU0U7bWQ1PTgxNWNhNTk5YzlkZjI0N2EwYzdmNjE5YmFiMTIzZGFkIgogCkBAIC01MSw2ICs1Miw5IEBACiAKICMgbW96anMgcmVxdWlyZXMgYXV0b3JlY29uZiAyLjEzCiBkb19jb25maWd1cmUoKSB7CisgICAgZXhwb3J0IEhPU1RfQ0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCisgICAgZXhwb3J0IEhPU1RfQ1hYRkxBR1M9IiR7QlVJTERfQ1BQRkxBR1N9IgorICAgIGV4cG9ydCBIT1NUX0xERkxBR1M9IiR7QlVJTERfTERGTEFHU30iCiAgICAgKCBjZCAke1N9CiAgICAgICBnbnUtY29uZmlnaXplIC0tZm9yY2UKICAgICAgIG12IGNvbmZpZy5ndWVzcyBjb25maWcuc3ViIGJ1aWxkL2F1dG9jb25mICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNjA0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiTGludXggTGlicmFyeSBmb3IgbG93IHNwZWVkIEkvTyBDb21tdW5pY2F0aW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLWlvdC1kZXZraXQvbXJhYSIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NjQ5M2Q1NGU2NWJmYzEyYzc5ODNmZjJlODg0ZjM3ZiIKKworU1JDUkVWID0gIjhkZGJjZGU4NGUyZDE0NmJjMGY5ZTM4NTA0ZDZjODljMTQyOTE0ODAiCitQViA9ICIxLjcuMC1naXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsLWlvdC1kZXZraXQvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIENNYWtlTGlzdHMudHh0IGNoZWNrcyB0aGUgYXJjaGl0ZWN0dXJlLCBvbmx5IHg4NiBhbmQgQVJNIHN1cHBvcnRlZCBmb3Igbm93CitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKnxhYXJjaDY0Lip8YXJtLiopLWxpbnV4IgorCitpbmhlcml0IGNtYWtlIGRpc3R1dGlsczMtYmFzZQorCitERVBFTkRTICs9ICJqc29uLWMiCisKK0VYVFJBX09FQ01BS0VfYXBwZW5kID0gIiAtRElOU1RBTExUT09MUzpCT09MPU9OIC1ERklSTUFUQT1PTiAtRENNQUtFX1NLSVBfUlBBVEg9T04iCisKKyMgUHJlcGVuZCBtcmFhLXV0aWxzIHRvIG1ha2Ugc3VyZSBiaW5kaXIgZW5kcyB1cCBpbiB0aGVyZQorUEFDS0FHRVMgPSsgIiR7UE59LXV0aWxzIgorCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbXJhYS9leGFtcGxlcy8iCisKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8iCisKKyMgb3ZlcnJpZGUgdGhpcyBpbiBsb2NhbC5jb25mIHRvIGdldCBuZWVkZWQgYmluZGluZ3MuCisjIEJJTkRJTkdTX3BuLW1yYWE9InB5dGhvbiIKKyMgd2lsbCByZXN1bHQgaW4gb25seSB0aGUgcHl0aG9uIGJpbmRpbmdzIGJlaW5nIGJ1aWx0L3BhY2thZ2VkLgorQklORElOR1MgPz89ICJweXRob24gJHtAICdub2RlanMnIGlmIG9lLnR5cGVzLmJvb2xlYW4oZC5nZXRWYXIoJ0hBVkVfTk9ERUpTJykgb3IgJzAnKSBlbHNlICcnIH0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRVMnLCAnbm9kZS0ke1BOfScsICdub2RlanMnLCAnJywgZCl9IFwKKyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRVMnLCAnJHtQWVRIT05fUE59LSR7UE59JywgJ3B5dGhvbicsICcnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItREJVSUxEU1dJR1BZVEhPTj1PTiwgLURCVUlMRFNXSUdQWVRIT049T0ZGLCBzd2lnLW5hdGl2ZSAke1BZVEhPTl9QTn0sIgorUEFDS0FHRUNPTkZJR1tub2RlanNdID0gIi1EQlVJTERTV0lHTk9ERT1PTiwgLURCVUlMRFNXSUdOT0RFPU9GRiwgc3dpZy1uYXRpdmUgbm9kZWpzLW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW2Z0NDIyMl0gPSAiLURVU0JQTEFUPU9OIC1ERlRESTQyMjI9T04sIC1EVVNCUExBVD1PRkYgLURGVERJNDIyMj1PRkYsLCBsaWJmdDQyMjIiCisKK0ZJTEVTXyR7UFlUSE9OX1BOfS0ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8iCitSREVQRU5EU18ke1BZVEhPTl9QTn0tJHtQTn0gKz0gIiR7UFlUSE9OX1BOfSIKKworRklMRVNfbm9kZS0ke1BOfSA9ICIke3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy8iCitSREVQRU5EU19ub2RlLSR7UE59ICs9ICJub2RlanMiCisKKyMjIyBJbmNsdWRlIGRlc2lyZWQgbGFuZ3VhZ2UgYmluZGluZ3MgIyMjCitQQUNLQUdFUyA9KyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0JJTkRJTkdTJywgJ25vZGVqcycsICdub2RlLSR7UE59JywgJycsIGQpfSIKK1BBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnQklORElOR1MnLCAncHl0aG9uJywgJyR7UFlUSE9OX1BOfS0ke1BOfScsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9uaWNzdGF0L25pY3N0YXQvMDAwMS1uaWNzdGF0LmMtRG8tbm90LWRlZmluZS11aW50NjRfdC1hbmQtdWludDMyX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9uaWNzdGF0L25pY3N0YXQvMDAwMS1uaWNzdGF0LmMtRG8tbm90LWRlZmluZS11aW50NjRfdC1hbmQtdWludDMyX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIwOGY5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25pY3N0YXQvbmljc3RhdC8wMDAxLW5pY3N0YXQuYy1Eby1ub3QtZGVmaW5lLXVpbnQ2NF90LWFuZC11aW50MzJfdC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDUyNTkwZmJmNzM1Y2VmM2ZlYzg1YTA0MjQ1OGFhODlhMDJjNTJiNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAxMTozMzoxMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBuaWNzdGF0LmM6IERvIG5vdCBkZWZpbmUgdWludDY0X3QgYW5kIHVpbnQzMl90CisKK1VzZSB0aGUgZGVmaW5lcyBmcm9tIHBsYXRmb3JtCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIG5pY3N0YXQuYyB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbmljc3RhdC5jIGIvbmljc3RhdC5jCitpbmRleCA4M2FkNTU3Li4yYTZlMGMxIDEwMDY0NAorLS0tIGEvbmljc3RhdC5jCisrKysgYi9uaWNzdGF0LmMKK0BAIC0zMiw2ICszMiw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorQEAgLTg4LDggKzg5LDYgQEAKKyAjZGVmaW5lCVBST0NfTkVUX0JVRlNJWgkJKDEyOCAqIDEwMjQpCisgI2RlZmluZQlQUk9DX1VQVElNRQkJIi9wcm9jL3VwdGltZSIKKyAvKiBOZWVkcyB0byBiZSBmaXhlZCBpZiBub3QgYnVpbHQgdW5kZXIgSUxQMzIgKi8KKy10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZwl1aW50NjRfdDsKKy10eXBlZGVmIHVuc2lnbmVkIGludAkJdWludDMyX3Q7CisgZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyBleHRlcm4gaW50IG9wdGluZCwgb3B0ZXJyLCBvcHRvcHQ7CisgI2VuZGlmIC8qIE9TX0xJTlVYICovCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9uaWNzdGF0L25pY3N0YXRfMS45NS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25pY3N0YXQvbmljc3RhdF8xLjk1LmJiCmluZGV4IDUxMjZhMzEuLjM4NzVmMGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25pY3N0YXQvbmljc3RhdF8xLjk1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25pY3N0YXQvbmljc3RhdF8xLjk1LmJiCkBAIC01LDcgKzUsOSBAQAogTElDRU5TRSA9ICJBcnRpc3RpYy0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YjRhOTRkYTJhMWY5MThiMjE3ZWY1MTU2NjM0ZmM5ZTAiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3NvZnRsYXllci1zbmcuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvJHtCUE59LyR7QlB9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cDovL3NvZnRsYXllci1zbmcuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5pY3N0YXQuYy1Eby1ub3QtZGVmaW5lLXVpbnQ2NF90LWFuZC11aW50MzJfdC5wYXRjaCBcCisgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI5YTBiODdiYmM2NzBjMWU3MzhlNWI0MGM3YWZkMTg0ZCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNGNjMzNmODgzOGY0NTIzZjI3YzNkNzU4NGVlZGJlNTlmNGM1ODdmMDgyMTYxMmY1YWMyMjAxYWRjMThiMzY3IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktbmV0d29ya2luZy8wMDAxLWZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktbmV0d29ya2luZy8wMDAxLWZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMzgyMDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLW5ldHdvcmtpbmcvMDAwMS1maXgtbGliNjQtY2FuLW5vdC1iZS1zaGlwZWQtaW4tNjRiaXQtdGFyZ2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAzMzZiYjVhMDMxMDc3NDYxZWM2YjJlNTQzODczOGJmMTAwZjBkZDJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotRGF0ZTogTW9uLCAzIEF1ZyAyMDE1IDAyOjM3OjQ2ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBsaWI2NCBjYW4gbm90IGJlIHNoaXBlZCBpbiA2NGJpdCB0YXJnZXQKLQotU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCA3IC0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDFiYTNjZDMuLjI0MTE3NDUgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0zNSwxMyArMzUsNiBAQCBpZiAoREVCVUcpCi0gICAgIGFkZF9kZWZpbml0aW9ucygiLURERUJVR19FTkFCTEVEIikKLSBlbmRpZiAoREVCVUcpCi0gCi0tIyBTZXQgTElCX1NVRkZJWCB0byA2NCBvbiA2NGJpdCBhcmNoaXRlY3R1cmVzCi0taWYoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQotLSAgICBzZXQoTElCX1NVRkZJWCAiIikKLS1lbHNlKENNQUtFX1NJWkVPRl9WT0lEX1AgRVFVQUwgNCkKLS0gICAgU0VUKExJQl9TVUZGSVggNjQpCi0tZW5kaWYoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQotLQotICMgRmluZCBPcGVuTE1JTWFjcm9zIHdoZW4gaW5zdGFsbGVkIGluIG90aGVyIHByZWZpeCB0aGFuIC91c3IgKGUuZy4gL3Vzci9sb2NhbCkKLSBzZXQoQ01BS0VfTU9EVUxFX1BBVEggJHtDTUFLRV9NT0RVTEVfUEFUSH0gJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0pCi0gaW5jbHVkZShPcGVuTE1JTWFjcm9zIFJFU1VMVF9WQVJJQUJMRSBMTUlNQUNST1MpCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLW5ldHdvcmtpbmdfMC4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktbmV0d29ya2luZ18wLjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgxYmQzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktbmV0d29ya2luZ18wLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiQ0lNIHByb3ZpZGVycyBmb3IgbmV0d29yayBtYW5hZ2VtZW50IgotREVTQ1JJUFRJT04gPSAiXAotb3BlbmxtaS1uZXR3b3JraW5nIGlzIHNldCBvZiBDTVBJIHByb3ZpZGVycyBmb3IgbmV0d29yayBtYW5hZ2VtZW50IHVzaW5nIFwKLUNvbW1vbiBJbmZvcm1hdGlvbiBNb2RlbCAoQ0lNKS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5sbWkub3JnLyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2MxM2IzMzc2Y2VhMGNlNjhkMmQyZGEwYTFiM2E3MmMiCi1TRUNUSU9OID0gIlN5c3RlbS9NYW5hZ2VtZW50IgotREVQRU5EUyA9ICJvcGVubG1pLXByb3ZpZGVycyBrb25rcmV0Y21waSBrb25rcmV0Y21waS1uYXRpdmUgc2JsaW0tY21waS1kZXZlbCBjaW0tc2NoZW1hLWV4cGVyIG5ldHdvcmttYW5hZ2VyIGRidXMgbGliY2hlY2sgZ2xpYi0yLjAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZlZG9yYWhvc3RlZC5vcmcvcmVsZWFzZWQvJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMjBkZThjNzZmYjZhODAwMDFiMTRjMWViMDM1OTUzZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NzhlYWE1YzY1ZmU5MjRiNWQ3YWViNjM1NTA5ZGQ0NjQ0MzE2NmNkNmE4OGIwMTliYzQyNjQ2ZTM1MThhNDYwIgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliNjQiLCAiLURMSUJfU1VGRklYPTY0IiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAotICAgICAgICAgICAgICAgICIKLQotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgZXhwb3J0IENNQUtFX0lOU1RBTExfREFURElSPSIke1NUQUdJTkdfREFUQURJUn0iCi19Ci0KLQotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9jbXBpL2xpYmNtcGlMTUlfTmV0d29ya2luZy5zbyAke3ByZWZpeH0vbGliZXhlYyoiCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS9jbXBpLy5kZWJ1ZyoiCi0KLVBOQkxBQ0tMSVNUW29wZW5sbWktbmV0d29ya2luZ10gPz0gIkRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgb3BlbmxtaS1wcm92aWRlcnMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktcHJvdmlkZXJzLzAwMDEtZml4LWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXByb3ZpZGVycy8wMDAxLWZpeC1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJjZDFjNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktcHJvdmlkZXJzLzAwMDEtZml4LWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSA3NjQxNzE4NjZiODRlMDE5OGI2NzUzOGY2MzAyMmFiZGUzZTYyOGFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUWlhbiBMZWkgPHFpYW5sLmZuc3RAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBGcmksIDE2IEphbiAyMDE1IDE0OjE1OjI1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBlcnJvcgotCi1TaWduZWQtb2ZmLWJ5OiBRaWFuIExlaSA8cWlhbmwuZm5zdEBjbi5mdWppdHN1LmNvbT4KLS0tLQotIGNtYWtlL21vZHVsZXMvT3BlbkxNSU1hY3Jvcy5jbWFrZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NtYWtlL21vZHVsZXMvT3BlbkxNSU1hY3Jvcy5jbWFrZSBiL2NtYWtlL21vZHVsZXMvT3BlbkxNSU1hY3Jvcy5jbWFrZQotaW5kZXggZDU1Zjk4My4uZGJjMzJlYyAxMDA2NDQKLS0tLSBhL2NtYWtlL21vZHVsZXMvT3BlbkxNSU1hY3Jvcy5jbWFrZQotKysrIGIvY21ha2UvbW9kdWxlcy9PcGVuTE1JTWFjcm9zLmNtYWtlCi1AQCAtODksNyArODksNyBAQCBtYWNybyhrb25rcmV0Y21waV9nZW5lcmF0ZSBNT0ZTIENJTV9QUk9WSURFUlMgQ0lNX0hFQURFUlMgQ0lNX0NMQVNTRVMpCi0gICAgICAgICBlbmRmb3JlYWNoKENMQVNTICR7Q0lNX0NMQVNTX05BTUVTfSkKLSAKLSAgICAgICAgICMgR2VuZXJhdGUgaGVhZGVycyBmb3IgQ0lNIGNsYXNzZXMKLS0gICAgICAgIHNldChFTlZ7S09OS1JFVF9TQ0hFTUFfRElSfSAiL3Vzci9zaGFyZS9tb2YvY2ltLWN1cnJlbnQiKQotKyAgICAgICAgc2V0KEVOVntLT05LUkVUX1NDSEVNQV9ESVJ9ICIkRU5We0NNQUtFX0lOU1RBTExfREFURElSfS9tb2YvY2ltLWN1cnJlbnQiKQotICAgICAgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtLT05LUkVUQ01QSV9LT05LUkVUfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtLT05LUkVUX01PRl9GSUxFU30KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7R0VORVJBVEVfUFJPVklERVJTfQotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1wcm92aWRlcnMvMDAwMS1maXgtbGliNjQtY2FuLW5vdC1iZS1zaGlwZWQtaW4tNjRiaXQtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXByb3ZpZGVycy8wMDAxLWZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljOGViZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXByb3ZpZGVycy8wMDAxLWZpeC1saWI2NC1jYW4tbm90LWJlLXNoaXBlZC1pbi02NGJpdC10YXJnZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDdjZWNmYTk1ZjAzM2IzM2ExYzMyNjBjMjE0YjJkMGU1ZTgxYjRmZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBNb24sIDMgQXVnIDIwMTUgMDI6MDU6NTYgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGxpYjY0IGNhbiBub3QgYmUgc2hpcGVkIGluIDY0Yml0IHRhcmdldAotCi1TaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+Ci0tLS0KLSBDTWFrZUxpc3RzLnR4dCB8IDcgLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggNDhhZTIwNi4uM2VhZDljNiAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTIxLDEzICsyMSw2IEBAIGVsc2UoSEFTX1NUQUNLX1BST1RFQ1RPUl9TVFJPTkcpCi0gICAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1mc3RhY2stcHJvdGVjdG9yIikKLSBlbmRpZigpCi0gCi0tIyBTZXQgTElCX1NVRkZJWCB0byA2NCBvbiA2NGJpdCBhcmNoaXRlY3R1cmVzCi0taWYoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQotLSAgICBzZXQoTElCX1NVRkZJWCAiIikKLS1lbHNlKENNQUtFX1NJWkVPRl9WT0lEX1AgRVFVQUwgNCkKLS0gICAgU0VUKExJQl9TVUZGSVggNjQpCi0tZW5kaWYoQ01BS0VfU0laRU9GX1ZPSURfUCBFUVVBTCA0KQotLQotIGlmKE5PVCBTWVNDT05GX0lOU1RBTExfRElSKQotICAgICBzZXQoU1lTQ09ORl9JTlNUQUxMX0RJUiAke0NNQUtFX0lOU1RBTExfUFJFRklYfS9ldGMpCi0gZW5kaWYoTk9UIFNZU0NPTkZfSU5TVEFMTF9ESVIpCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXByb3ZpZGVyc18wLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1wcm92aWRlcnNfMC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZGE2NTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXByb3ZpZGVyc18wLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAiU2V0IG9mIGJhc2ljIENJTSBwcm92aWRlcnMiCi1ERVNDUklQVElPTiA9ICJcCi1vcGVubG1pLXByb3ZpZGVycyBpcyBzZXQgb2YgKHVzdWFsbHkpIHNtYWxsIENNUEkgcHJvdmlkZXJzIChhZ2VudHMpIGZvciBcCi1iYXNpYyBtb25pdG9yaW5nIGFuZCBtYW5hZ2VtZW50IG9mIGhvc3Qgc3lzdGVtIHVzaW5nIENvbW1vbiBJbmZvcm1hdGlvbiBcCi1Nb2RlbCAoQ0lNKS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5sbWkub3JnLyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdjMTNiMzM3NmNlYTBjZTY4ZDJkMmRhMGExYjNhNzJjIgotU0VDVElPTiA9ICJTeXN0ZW0vTWFuYWdlbWVudCIKLURFUEVORFMgPSAia29ua3JldGNtcGktbmF0aXZlIGtvbmtyZXRjbXBpIHNibGltLXNmY2Igc2JsaW0tY21waS1kZXZlbCBjaW0tc2NoZW1hLWV4cGVyIGxtc2Vuc29ycyBsaWJ1c2VyIHN3aWcgc3dpZy1uYXRpdmUgZGJ1cyB1ZGV2IHN5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZSBwY2l1dGlscyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZmVkb3JhaG9zdGVkLm9yZy9yZWxlYXNlZC8ke0JQTn0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWxpYjY0LWNhbi1ub3QtYmUtc2hpcGVkLWluLTY0Yml0LXRhcmdldC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU5MDRmMjNjZjQ5NDk0NjIzN2NmYmJkYmU2NDRhM2NkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyYjJmYmVhZWM0NWE4MzkwNWQwZGEzYjg3ZGE4MzkwNGQ5Y2Q5NGMxYjg2MzEyZjg0NDU4N2IzZmZmMTFmNTYiCi0KLWluaGVyaXQgY21ha2UKLUxERkxBR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1ERVZBU1NJU1RBTlQ9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILUpPVVJOQUxEPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1TRVJWSUNFPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1TRVJWSUNFLUxFR0FDWT1PTiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1BQ0NPVU5UPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1QQ1A9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILVJFQUxNRD1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEgtRkFOPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSC1MT0NBTEU9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURXSVRILUlORFNFTkRFUj1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEgtSk9CTUFOQUdFUj1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEgtU1NTRD1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEgtU0VMSU5VWD1PRkYgXAotICAgICAgICAgICAgICAgICAtRFdJVEgtU09GVFdBUkUtREJVUz1PTiBcCi0gICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjY0IiwgIi1ETElCX1NVRkZJWD02NCIsICIiLCBkKX0gXAotICAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWIzMiIsICItRExJQl9TVUZGSVg9MzIiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IENNQUtFX0lOU1RBTExfREFURElSPSIke1NUQUdJTkdfREFUQURJUn0iCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgLWQgJHtEfSR7cHJlZml4fSR7c3lzY29uZmlkcn0gXTsgdGhlbgotICAgICAgICBtdiAke0R9JHtwcmVmaXh9JHtzeXNjb25mZGlyfSAke0R9JHtzeXNjb25mZGlyfQotICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vY21waS9saWJjbXBpTE1JKiAke3ByZWZpeH0vbGliZXhlYyoiCi1GSUxFU18ke1BOfS1kZXYgPSsgIiR7ZGF0YWRpcn0vY21ha2UqIgotRklMRVNfJHtQTn0tZGJnID0rICIke2xpYmRpcn0vY21waS8uZGVidWcqIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24iCi0KLVBOQkxBQ0tMSVNUW29wZW5sbWktcHJvdmlkZXJzXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBsbXNlbnNvcnMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktc3RvcmFnZV8wLjguMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1zdG9yYWdlXzAuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTliNzdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS1zdG9yYWdlXzAuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJDSU0gcHJvdmlkZXJzIGZvciBzdG9yYWdlIG1hbmFnZW1lbnQiCi1ERVNDUklQVElPTiA9ICJcCi1UaGUgb3BlbmxtaS1zdG9yYWdlIHBhY2thZ2UgY29udGFpbnMgQ01QSSBwcm92aWRlcnMgZm9yIG1hbmFnZW1lbnQgb2Ygc3RvcmFnZSBcCi11c2luZyBDb21tb24gSW5mb3JtYXRpb24gTWFuYWdlbWVuIChDSU0pIHByb3RvY29sLiBcCi1cCi1UaGUgcHJvdmlkZXJzIGNhbiBiZSByZWdpc3RlcmVkIGluIGFueSBDTVBJLWF3YXJlIENJTU9NLCBib3RoIE9wZW5QZWdhc3VzIGFuZCBcCi1TRkNCIHdlcmUgdGVzdGVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbmxtaS5vcmcvIgotTElDRU5TRSA9ICJMR1BMLTIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLVNFQ1RJT04gPSAiU3lzdGVtL01hbmFnZW1lbnQiCi1ERVBFTkRTID0gIm9wZW5sbWktcHJvdmlkZXJzIHB5d2JlbSBjbXBpLWJpbmRpbmdzIgotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZlZG9yYWhvc3RlZC5vcmcvcmVsZWFzZWQvJHtCUE59LyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4OThjZjBkOGMwM2I4YWQ2YjQ1ZDY1ZjMzNWRkZWUwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YTFiYTk5NTc3NTBmOTRlYTU4YTg5Y2VhMjg5ODU1NjRmMzhkN2NjOWFhMDBmY2FlMjBjNTFlN2IzMmJkMGE4IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tb2YvKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0vCi0KLSAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9vcGVubG1pL3N0b3JhZ2UKLSAgICBpbnN0YWxsIC1tIDY0NCBzdG9yYWdlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BlbmxtaS9zdG9yYWdlL3N0b3JhZ2UuY29uZgotCi0gICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7bGliZXhlY2Rpcn0vcGVnYXN1cwotICAgIGluc3RhbGwgLW0gNzU1IHB5Y21waUxNSV9TdG9yYWdlLWNpbXByb3ZhZ3QgJHtEfSR7bGliZXhlY2Rpcn0vcGVnYXN1cy8KLX0KLQotRklMRVNfJHtQTn0gPSsgIiR7c3lzY29uZmRpcn0vb3BlbmxtaS9zdG9yYWdlL3N0b3JhZ2UuY29uZiAke2RhdGFkaXJ9LyR7QlBOfS8qIgotCi1QTkJMQUNLTElTVFtvcGVubG1pLXN0b3JhZ2VdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIHB5d2JlbSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS10b29sc18wLjEwLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktdG9vbHNfMC4xMC41LmJiCmluZGV4IGIyMzg2OWQuLjEzZTY3Y2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS10b29sc18wLjEwLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXRvb2xzXzAuMTAuNS5iYgpAQCAtMjEsMyArMjEsOCBAQAogZG9faW5zdGFsbF9wcmVwZW5kKCkgewogICAgIGNkIGNsaQogfQorCitweXRob24oKSB7CisgICAgaWYgJ21ldGEtcHl0aG9uJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtcHl0aG9uIHRvIGJlIHByZXNlbnQuJykKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW4vMDAwMS1sb2NrLmMtRGVmaW5lLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QLWlmLXVuZGVmaW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbi8wMDAxLWxvY2suYy1EZWZpbmUtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAtaWYtdW5kZWZpbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgyM2ZkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW4vMDAwMS1sb2NrLmMtRGVmaW5lLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QLWlmLXVuZGVmaW5lLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gZTA1YmFkNzNmNWZlNGJlMTYyNjU2MGQ5MjQ2NTg5M2E1ZmM5MzFlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDAwOjAxOjE5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2suYzogRGVmaW5lIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QIGlmIHVuZGVmaW5lZAorCitDaGVjayBmb3IgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAgYmVpbmcgZGVmaW5lZCBpbnN0ZWFkIG9mCitjaGVja2luZyBmb3IgT1MKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWIvdS9sb2NrLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL3UvbG9jay5jIGIvc3JjL2xpYi91L2xvY2suYworaW5kZXggMDI1ZWVhNGMuLmIzMWM3N2I1IDEwMDY0NAorLS0tIGEvc3JjL2xpYi91L2xvY2suYworKysrIGIvc3JjL2xpYi91L2xvY2suYworQEAgLTUwLDcgKzUwLDcgQEAKKyBleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUocHRocmVhZF9tdXRleGF0dHJfdCAqYXR0ciwgaW50IHR5cGUpOworICNlbmRpZgorIAorLSNpZiBkZWZpbmVkIChfX1NWUjQpICYmIGRlZmluZWQgKF9fc3VuKQorKyNpZm5kZWYgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAKKyAjZGVmaW5lIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFCisgI2VuZGlmCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbl8yLjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyNWY0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuc291cmNlIEltcGxlbWVudGF0aW9uIG9mIFdTLU1hbmFnZW1lbnQiCi1ERVNDUklQVElPTiA9ICJPcGVud3NtYW4gaXMgYSBwcm9qZWN0IGludGVuZGVkIHRvIHByb3ZpZGUgYW4gb3Blbi1zb3VyY2UgXAotaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYiBTZXJ2aWNlcyBNYW5hZ2VtZW50IHNwZWNpcGljYXRpb24gXAotKFdTLU1hbmFnZW1lbnQpIGFuZCB0byBleHBvc2Ugc3lzdGVtIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gb24gdGhlIFwKLUxpbnV4IG9wZXJhdGluZyBzeXN0ZW0gdXNpbmcgdGhlIFdTLU1hbmFnZW1lbnQgcHJvdG9jb2wuIFdTLU1hbmFnZW1lbnQgXAotaXMgYmFzZWQgb24gYSBzdWl0ZSBvZiB3ZWIgc2VydmljZXMgc3BlY2lmaWNhdGlvbnMgYW5kIHVzYWdlIFwKLXJlcXVpcmVtZW50cyB0aGF0IGV4cG9zZXMgYSBzZXQgb2Ygb3BlcmF0aW9ucyBmb2N1c2VkIG9uIGFuZCBjb3ZlcnMgXAotYWxsIHN5c3RlbSBtYW5hZ2VtZW50IGFzcGVjdHMuIFwKLU9wZW53c21hbiBTZXJ2ZXIgYW5kIHNlcnZpY2UgbGlicmFyaWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVud3NtYW4ub3JnLyIKLVNFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKLQotREVQRU5EUyA9ICJjdXJsIGxpYnhtbDIgb3BlbnNzbCBsaWJwYW0iCi0KLVNSQ1JFViA9ICJmZWI3ZWM5YjAwNGZjYWVhMGRiZTY1Y2U4YTFhNzljYzI5ZGQ5OTRjIgotUFYgPSAiMi42LjMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PcGVud3NtYW4vb3BlbndzbWFuLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJzc2wtaXMtcmVxdWlyZWQtaWYtZXZlbnRpbnQtc3VwcG9ydGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW53c21hbmQuc2VydmljZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNGY1M2Q0YzZjZjczYjlkNDMxODZjZTNiZTZkZDBiYSIKLQotaW5oZXJpdCBzeXN0ZW1kIGNtYWtlIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgcGVybG5hdGl2ZQotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BlbndzbWFuZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1MREZMQUdTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAiIC1mdXNlLWxkPWJmZCAiLCAnJywgZCl9IgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfQklORElOR1M9Tk8gXAotICAgICAgICAgICAgICAgICAtREJVSUxEX0xJQkNJTT1OTyBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfUEVSTD1ZRVMgXAotICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfUFJFRklYPSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC1ETElCPSR7YmFzZWxpYn0gXAotICAgICAgICAgICAgICAgICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9Ci0gICAgZXhwb3J0IFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNzU1ICR7Qn0vZXRjL2luaXQvb3BlbndzbWFuZC5zaCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW53c21hbmQKLSAgICBsbiAtc2YgJHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbndzbWFuZCAke0R9LyR7c2JpbmRpcn0vcmNvcGVud3NtYW5kCi0gICAgY2htb2QgNzU1ICR7RH0vJHtzeXNjb25mZGlyfS9vcGVud3NtYW4vb3dzbWFuZ2VuY2VydC5zaAotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVud3NtYW5kLnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0KLSAgICAgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW53c21hbmQuc2VydmljZQotICAgICAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbndzbWFuZC5zZXJ2aWNlCi0gICAgICAgIHNlZCAtaSAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVud3NtYW5kLnNlcnZpY2UKLSAgICBmaQotfQotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9vcGVud3NtYW4vcGx1Z2lucy8uZGVidWcvIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L29wZW53c21hbi9hdXRoZW50aWNhdG9ycy8uZGVidWcvIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Nzc4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4zLmJiCkBAIC0wLDAgKzEsNjcgQEAKK1NVTU1BUlkgPSAiT3BlbnNvdXJjZSBJbXBsZW1lbnRhdGlvbiBvZiBXUy1NYW5hZ2VtZW50IgorREVTQ1JJUFRJT04gPSAiT3BlbndzbWFuIGlzIGEgcHJvamVjdCBpbnRlbmRlZCB0byBwcm92aWRlIGFuIG9wZW4tc291cmNlIFwKK2ltcGxlbWVudGF0aW9uIG9mIHRoZSBXZWIgU2VydmljZXMgTWFuYWdlbWVudCBzcGVjaXBpY2F0aW9uIFwKKyhXUy1NYW5hZ2VtZW50KSBhbmQgdG8gZXhwb3NlIHN5c3RlbSBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIG9uIHRoZSBcCitMaW51eCBvcGVyYXRpbmcgc3lzdGVtIHVzaW5nIHRoZSBXUy1NYW5hZ2VtZW50IHByb3RvY29sLiBXUy1NYW5hZ2VtZW50IFwKK2lzIGJhc2VkIG9uIGEgc3VpdGUgb2Ygd2ViIHNlcnZpY2VzIHNwZWNpZmljYXRpb25zIGFuZCB1c2FnZSBcCityZXF1aXJlbWVudHMgdGhhdCBleHBvc2VzIGEgc2V0IG9mIG9wZXJhdGlvbnMgZm9jdXNlZCBvbiBhbmQgY292ZXJzIFwKK2FsbCBzeXN0ZW0gbWFuYWdlbWVudCBhc3BlY3RzLiBcCitPcGVud3NtYW4gU2VydmVyIGFuZCBzZXJ2aWNlIGxpYnJhcmllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbndzbWFuLm9yZy8iCitTRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCisKK0RFUEVORFMgPSAiY3VybCBsaWJ4bWwyIG9wZW5zc2wgbGlicGFtIgorCitTUkNSRVYgPSAiZmViN2VjOWIwMDRmY2FlYTBkYmU2NWNlOGExYTc5Y2MyOWRkOTk0YyIKK1BWID0gIjIuNi4zIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vT3BlbndzbWFuL29wZW53c21hbi5naXQgXAorICAgICAgICAgICBmaWxlOi8vbGlic3NsLWlzLXJlcXVpcmVkLWlmLWV2ZW50aW50LXN1cHBvcnRlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVud3NtYW5kLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NrLmMtRGVmaW5lLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QLWlmLXVuZGVmaW5lLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ0ZjUzZDRjNmNmNzNiOWQ0MzE4NmNlM2JlNmRkMGJhIgorCitpbmhlcml0IHN5c3RlbWQgY21ha2UgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBwZXJsbmF0aXZlCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJvcGVud3NtYW5kLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0xERkxBR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICIgLWZ1c2UtbGQ9YmZkICIsICcnLCBkKX0iCisKK0VYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9CSU5ESU5HUz1OTyBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfTElCQ0lNPU5PIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9QRVJMPVlFUyBcCisgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9QUkVGSVg9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgLURMSUI9JHtiYXNlbGlifSBcCisgICAgICAgICAgICAgICAgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0KKyAgICBleHBvcnQgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA3NTUgJHtCfS9ldGMvaW5pdC9vcGVud3NtYW5kLnNoICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbndzbWFuZAorICAgIGxuIC1zZiAke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVud3NtYW5kICR7RH0vJHtzYmluZGlyfS9yY29wZW53c21hbmQKKyAgICBjaG1vZCA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW53c21hbi9vd3NtYW5nZW5jZXJ0LnNoCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW53c21hbmQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKworICAgICAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbndzbWFuZC5zZXJ2aWNlCisgICAgICAgIHNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVud3NtYW5kLnNlcnZpY2UKKyAgICAgICAgc2VkIC1pIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW53c21hbmQuc2VydmljZQorICAgIGZpCit9CisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L29wZW53c21hbi9wbHVnaW5zLy5kZWJ1Zy8gXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vb3BlbndzbWFuL2F1dGhlbnRpY2F0b3JzLy5kZWJ1Zy8gXAorICAgICAgICAgICAgICAgICAgICIKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXNzaC1hZ2VudC1hdXRoXzAuMTAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjg4NTMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJwYW0tc3NoLWFnZW50LWF1dGgiCitERVNDUklQVElPTiA9ICJBIFBBTSBtb2R1bGUgd2hpY2ggcGVybWl0cyBhdXRoZW50aWNhdGlvbiB2aWEgc3NoLWFnZW50LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvcGFtc3NoYWdlbnRhdXRoLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAib3BlbnNzbCAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuT3BlblNTTDttZDU9OGFiMDExNDYxNDFkZWQ1OWI3NWY4YmE3ODExZWQwNWEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vT1BFTlNTSF9MSUNFTlNFO21kNT03YWUwOTIxODE3M2JlMTY0M2M5OThhNGI3MTAyN2Y5YiBcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wYW1zc2hhZ2VudGF1dGgvZmlsZXMvcGFtX3NzaF9hZ2VudF9hdXRoL3Yke1BWfS9wYW1fc3NoX2FnZW50X2F1dGgtJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZGJlOTBhYjM2MjVlNTQ1MDM2MzMzZTZmNTFjY2YxZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYzUzZDM1OGQ2ZWFlZDFiMjExMjM5ZGYwMTdjMjdjNmY5OTcwOTk1ZDE0MTAyYWU2N2JhZTE2ZDRmNDdhNzYzIgorCitERVBFTkRTICs9ICJsaWJwYW0gb3BlbnNzbCIKKworIyBUaGlzIGdldHMgdXMgc3NoLWFnZW50LCB3aGljaCB3ZSBhcmUgYWxtb3N0IGNlcnRhaW4gdG8gd2FudC4KKyMKK1JERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NoLW1pc2MiCisKKyMgS2luZCBvZiB1bmZvcnR1bmF0ZSB0byBoYXZlIHVuZGVyc2NvcmVzIGluIHRoZSBuYW1lLgorIworUyA9ICIke1dPUktESVJ9L3BhbV9zc2hfYWdlbnRfYXV0aC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKKyMgQXZvaWQgYXV0b3JlY29uZi4gIE92ZXJyaWRlIHRoZSAtLWxpYmV4ZWMgb2VfcnVuY29uZiBzcGVjaWZpZXMgc28gdGhhdAorIyB0aGUgbW9kdWxlIGlzIHB1dCB3aXRoIHRoZSBvdGhlciBwYW0gbW9kdWxlcy4gIEJlY2F1c2UgaXQgY2Fubm90LCBpbiBnZW5lcmFsLAorIyBkbyBhIHJ1bnRpbWUgdGVzdCwgY29uZmlndXJlIHdhbnRzIHRvIHVzZSBycGxfbWFsbG9jKCkgYW5kIHJwbF9yZWFsbG9jKCkKKyMgaW5zdGVhZCBvZiBtYWxsb2MoKSBhbmQgcmVhbGxvYygpLiAgV2Ugc2V0IHZhcmlhYmxlcyB0byB0ZWxsIGl0IG5vdCB0byBiZWNhdXNlCisjIHRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgZXhpc3QuCisjCitkb19jb25maWd1cmUgKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQorICAgIG9lX3J1bmNvbmYgLS13aXRob3V0LW9wZW5zc2wtaGVhZGVyLWNoZWNrICAtLWxpYmV4ZWNkaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgXAorICAgICAgICAgICAgICAgYWNfY3ZfZnVuY19tYWxsb2NfMF9ub25udWxsPXllcyBhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPXllcworfQorCisjIExpbmsgd2l0aCBDQy4gIENvbmZpZ3VyZSBjYW5ub3QgZmlndXJlIG91dCB0aGUgY29ycmVjdCBBUi4KKyMKK2RvX2NvbXBpbGUgKCkgeworICAgIG9lX3J1bm1ha2UgIExEPSIke0NDfSIgQVI9IiR7QVJ9IgorfQorCisjIFRoaXMgc3R1ZmYgaXMgbm90IGFueSBwbGFjZSBsb29rZWQgYXQgYnkgZGVmYXVsdC4KKyMKK0ZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS9wYW0qIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8uZGVidWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYmZpbGUtZm5tYXRjaC1wZXJsXzAuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYmZpbGUtZm5tYXRjaC1wZXJsXzAuMDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM1ZmU5ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGliZmlsZS1mbm1hdGNoLXBlcmxfMC4wMi5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRoYXQgcHJvdmlkZXMgc2ltcGxlIGZpbGVuYW1lIGFuZCBwYXRobmFtZSBtYXRjaGluZyIKK0RFU0NSSVBUSU9OID0gIkZpbGU6OkZuTWF0Y2g6OmZubWF0Y2goKSBwcm92aWRlcyBzaW1wbGUsIHNoZWxsLWxpa2UgcGF0dGVybiBcCittYXRjaGluZy4gXAorVGhvdWdoIGNvbnNpZGVyYWJseSBsZXNzIHBvd2VyZnVsIHRoYW4gcmVndWxhciBleHByZXNzaW9ucywgc2hlbGwgcGF0dGVybnMgXAorYXJlIG5vbmV0aGVsZXNzIHVzZWZ1bCBhbmQgZmFtaWxpYXIgdG8gYSBsYXJnZSBhdWRpZW5jZSBvZiBlbmQtdXNlcnMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvRmlsZS1Gbk1hdGNoLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MzQ7ZW5kbGluZT0zNzttZDU9NTRmZGZhYzYyOTYzYjdjZWNlNTU4M2FiMzhmMmNmMGQiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL00vTUovTUpQL0ZpbGUtRm5NYXRjaC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMmY3N2MyMGQwZmI1YWYwMWEzMTY1ZTJkZjJmZTM0YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjI0NTRiOGU4NmJlYThiMTMyYmY4YWYzNTc1N2QwYzZhOGY1ZDU5OTAxNWJkNmE1ZDY4Y2I3YWU3YTllOTE2IgorCitTID0gIiR7V09SS0RJUn0vRmlsZS1Gbk1hdGNoLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0LWdyb3VwLXJ1bGUtZGF0ZXRpbWUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0LWdyb3VwLXJ1bGUtZGF0ZXRpbWUuYmIKaW5kZXggZWNlZDRiNi4uOTM0YTUzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1ncm91cC1ydWxlLWRhdGV0aW1lLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ3JvdXAtcnVsZS1kYXRldGltZS5iYgpAQCAtMSw2ICsxLDYgQEAKIERFU0NSSVBUSU9OID0gIkNyZWF0ZSB1c2VyZ3JvdXAgZGF0ZXRpbWUuIEFsbCBtZW1iZXJzIG9mZiB0aGlzIGdyb3VwIGFyZSBhbGxvd2VkIHNldCBkYXRlL3RpbWUvdGltZXpvbmUgdmlhIHN5c3RlbSBkYnVzIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgogCiByZXF1aXJlIHBvbGtpdC1ncm91cC1ydWxlLmluYwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0LWdyb3VwLXJ1bGUtbmV0d29yay5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ3JvdXAtcnVsZS1uZXR3b3JrLmJiCmluZGV4IDU1MWVkM2UuLjY2YTczZWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ3JvdXAtcnVsZS1uZXR3b3JrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ3JvdXAtcnVsZS1uZXR3b3JrLmJiCkBAIC0xLDYgKzEsNiBAQAogREVTQ1JJUFRJT04gPSAiQ3JlYXRlIHVzZXJncm91cCBuZXR3b3JrLiBBbGwgbWVtYmVycyBvZmYgdGhpcyBncm91cCBhcmUgYWxsb3dlZCB0byBtb2RpZnkgbmV0d29ya21hbmFnZXIgc2V0dGluZ3MiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L0xJQ0VOU0U7bWQ1PTRkOTJjZDM3M2FiZGEzOTM3YzJiYzQ3ZmJjNDlkNjkwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKIHJlcXVpcmUgcG9sa2l0LWdyb3VwLXJ1bGUuaW5jCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXRfMC4xMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0XzAuMTEzLmJiCmluZGV4IDMyNmM5MzQuLmYzNDkyOGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXRfMC4xMTMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdF8wLjExMy5iYgpAQCAtMTAsNyArMTAsOSBAQAogaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBwa2djb25maWcgdXNlcmFkZCBzeXN0ZW1kIGdvYmplY3QtaW50cm9zcGVjdGlvbgogCiBQQUNLQUdFQ09ORklHID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJ2NvbnNvbGVraXQnLCBkKX0iCisgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgXAorICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAorICAgICAgICAgICAgICAgICIKIAogUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1hdXRoZnc9cGFtLC0td2l0aC1hdXRoZnc9c2hhZG93LGxpYnBhbSxsaWJwYW0iCiBQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLWxpYnN5c3RlbWQtbG9naW49eWVzIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLWVuYWJsZS1saWJzeXN0ZW1kLWxvZ2luPW5vIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0sc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMTljMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiUm9ja3NEQiBhbiBlbWJlZGRhYmxlLCBwZXJzaXN0ZW50IGtleS12YWx1ZSBzdG9yZSIKK0RFU0NSSVBUSU9OID0gIlJvY2tzREIgaXMgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGFuIGVtYmVkZGFibGUsIHBlcnNpc3RlbnQga2V5LXZhbHVlIHN0b3JlIGZvciBmYXN0IHN0b3JhZ2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL3JvY2tzZGIub3JnLyIKK0xJQ0VOU0UgPSAiKEFwYWNoZS0yLjAgfCBHUEwtMi4wKSAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQXBhY2hlO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmxldmVsZGI7bWQ1PWZiMDRmZjU3YTE0ZjMwOGYyZWVkNGE5Yjg3ZDQ1ODM3IgorCitTUkNSRVYgPSAiMjY2YWMyNDVhZmZkNjk1NTU2NDNiNzM1ZDE5ZDM3MTVjNGVmZjkxYSIKK1BWID0gIjUuOCtnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZhY2Vib29rLyR7QlBOfS5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gImJ6aXAyIHpsaWIgbHo0IgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLURXSVRIX0JaMj1PTiwtRFdJVEhfQloyPU9GRixiemlwMiIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItRFdJVEhfTFo0PU9OLC1EV0lUSF9MWjQ9T0ZGLGx6NCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLURXSVRIX1pMSUI9T04sLURXSVRIX1pMSUI9T0ZGLHpsaWIiCitQQUNLQUdFQ09ORklHW2xpdGVdID0gIi1EUk9DS1NEQl9MSVRFPU9OLC1EUk9DS1NEQl9MSVRFPU9GRiIKKworIyBUb29scyBhbmQgdGVzdHMgY3VycmVudGx5IGRvbid0IGNvbXBpbGUgb24gYXJtdjUgc28gd2UgZGlzYWJsZSB0aGVtCitFWFRSQV9PRUNNQUtFID0gIlwKKyAgICAtRFBPUlRBQkxFPU9OIFwKKyAgICAtRFdJVEhfVEVTVFM9T0ZGIFwKKyAgICAtRFdJVEhfVE9PTFM9T0ZGIFwKKyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ycmR0b29sL3JyZHRvb2xfMS42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ycmR0b29sL3JyZHRvb2xfMS42LjAuYmIKaW5kZXggYTNhYWM0NS4uNzk3YmNhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnJkdG9vbC9ycmR0b29sXzEuNi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjYuMC5iYgpAQCAtMjIsNyArMjIsNyBAQAogU1lTVEVNRF9QQUNLQUdFUyA9ICJycmRjYWNoZWQiCiBTWVNURU1EX1NFUlZJQ0VfcnJkY2FjaGVkID0gInJyZGNhY2hlZC5zb2NrZXQgcnJkY2FjaGVkLnNlcnZpY2UiCiAKLUVYVFJBX0FVVE9SRUNPTkYgPSAiLUkgbTQiCitFWFRSQV9BVVRPUkVDT05GID0gIi1JIG00IC0tZXhjbHVkZT1hdXRvcG9pbnQiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gcGVybCAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgogCkBAIC00OSw2ICs0OSw3IEBACiAgICAgLS1kaXNhYmxlLWx1YSBcCiAgICAgLS1kaXNhYmxlLXRjbCBcCiAgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAtLWVuYWJsZS1ubHM9JHtVU0VfTkxTfSBcCiAiCiAKIGV4cG9ydCBTVEFHSU5HX0xJQkRJUgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9saWJyZWxwXzEuMi4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjIuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0YzI1ODMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9saWJyZWxwXzEuMi4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSByZWxpYWJsZSBsb2dnaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJmYXN0anNvbiIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmYjljMTBlZDlmZDY4MjY3NTc2MTU0NTVjYTg5M2E5IgotCi1ERVBFTkRTID0gImdtcCBuZXR0bGUgbGliaWRuIHpsaWIgZ251dGxzIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJyZWxwLmdpdDtwcm90b2NvbD1odHRwcyIKLQotU1JDUkVWID0gIjAyYzNiZTRmNWMzOWZlYzU5ZDA1Y2Q4Yjc1YjA4ZGJiYTA0MDk4YWQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9saWJyZWxwXzEuMi4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjIuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgwNDdlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjIuMTQuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJBIHJlbGlhYmxlIGxvZ2dpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yc3lzbG9nL2xpYmZhc3Rqc29uIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWZiOWMxMGVkOWZkNjgyNjc1NzYxNTQ1NWNhODkzYTkiCisKK0RFUEVORFMgPSAiZ21wIG5ldHRsZSBsaWJpZG4gemxpYiBnbnV0bHMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yc3lzbG9nL2xpYnJlbHAuZ2l0O3Byb3RvY29sPWh0dHBzIgorCitTUkNSRVYgPSAiZmM1MTJlMzM3YmZjN2M5Mjc3MDI0NmRiZmY1ZjQ4MmI4Nzk0OThiOSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFkMzkxYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLVNVTU1BUlkgPSAiUnN5c2xvZyBpcyBhbiBlbmhhbmNlZCBtdWx0aS10aHJlYWRlZCBzeXNsb2dkIgotREVTQ1JJUFRJT04gPSAiXAotUnN5c2xvZyBpcyBhbiBlbmhhbmNlZCBzeXNsb2dkIHN1cHBvcnRpbmcsIGFtb25nIG90aGVycywgTXlTUUwsXAotIFBvc3RncmVTUUwsIGZhaWxvdmVyIGxvZyBkZXN0aW5hdGlvbnMsIHN5c2xvZy90Y3AsIGZpbmUgZ3JhaW5cCi0gb3V0cHV0IGZvcm1hdCBjb250cm9sLCBoaWdoIHByZWNpc2lvbiB0aW1lc3RhbXBzLCBxdWV1ZWQgb3BlcmF0aW9uc1wKLSBhbmQgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIG9uIGFueSBtZXNzYWdlIHBhcnQuIEl0IGlzIHF1aXRlXAotIGNvbXBhdGlibGUgdG8gc3RvY2sgc3lza2xvZ2QgYW5kIGNhbiBiZSB1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudC5cCi0gSXRzIGFkdmFuY2VkIGZlYXR1cmVzIG1ha2UgaXQgc3VpdGFibGUgZm9yIGVudGVycHJpc2UtY2xhc3MsXAotIGVuY3J5cHRpb24gcHJvdGVjdGVkIHN5c2xvZyByZWxheSBjaGFpbnMgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSBiZWluZ1wKLSB2ZXJ5IGVhc3kgdG8gc2V0dXAgZm9yIHRoZSBub3ZpY2UgdXNlci4iCi0KLURFUEVORFMgPSAiemxpYiBsaWJlc3RyIGxpYmZhc3Rqc29uIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSBsaWJsb2dnaW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS8iCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzICYgQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUxZDk2MzVlNjQ2ZmI3NWUxYjc0YzA3NGY3ODhlOTczIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1jYjc5MDNmMWU1YzM5YWU4MzgyMDllMTMwZGNhMjcwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkFTTDIwO21kNT0wNTJmOGEwOTIwNjYxNWFiMDczMjZmZjhjZTJkOWQzMlwKLSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnJzeXNsb2cuY29tL2Rvd25sb2FkL2ZpbGVzL2Rvd25sb2FkL3JzeXNsb2cvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0c2NyaXB0IFwKLSAgICAgICAgICAgZmlsZTovL3JzeXNsb2cuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmxvZ3JvdGF0ZSBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtcGtnY29uZmlnLXRvLWNoZWNrLWxpYmdjcnlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy1maXgtcHRlc3Qtbm90LWZpbmlzaC5wYXRjaCBcCi0iCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLVVuZGVmaW5lLUdMT0JfQlJBQ0UucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZDBmMjVmNDI5YWEyZGFhMzI2NzMyOTUwYTVlZWI2YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNmUyODg0MTgxMzMzZGNjZWNjZWFjYTgyODI3YWUyNGNhN2EyNThiNGZiZjdiMWUwN2E4MGQ0Y2FhZTY0MGNhIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBwdGVzdAotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nZW5lcmF0ZS1tYW4tcGFnZXMgYXBfY3ZfYXRvbWljX2J1aWx0aW5zPXllcyIKLQotIyBmaXJzdCBsaW5lIGlzIGRlZmF1bHQgeWVzIGluIGNvbmZpZ3VyZQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgcnN5c2xvZ2QgcnN5c2xvZ3J0IGtsb2cgaW5ldCByZWdleHAgdXVpZCBsaWJnY3J5cHQgXAotICAgIGltZGlhZyBnbnV0bHMgaW1maWxlIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzbm1wIHN5c3RlbWQnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAndGVzdGJlbmNoIHJlbHAgJHtWQUxHUklORH0nLCAnJywgZCl9IFwKLSIKLQotIyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKLVBBQ0tBR0VDT05GSUdbcmVscF0gPSAiLS1lbmFibGUtcmVscCwtLWRpc2FibGUtcmVscCxsaWJyZWxwLCIKLVBBQ0tBR0VDT05GSUdbcnN5c2xvZ2RdID0gIi0tZW5hYmxlLXJzeXNsb2dkLC0tZGlzYWJsZS1yc3lzbG9nZCwsIgotUEFDS0FHRUNPTkZJR1tyc3lzbG9ncnRdID0gIi0tZW5hYmxlLXJzeXNsb2dydCwtLWRpc2FibGUtcnN5c2xvZ3J0LCwiCi1QQUNLQUdFQ09ORklHW2luZXRdID0gIi0tZW5hYmxlLWluZXQsLS1kaXNhYmxlLWluZXQsLCIKLVBBQ0tBR0VDT05GSUdba2xvZ10gPSAiLS1lbmFibGUta2xvZywtLWRpc2FibGUta2xvZywsIgotUEFDS0FHRUNPTkZJR1tyZWdleHBdID0gIi0tZW5hYmxlLXJlZ2V4cCwtLWRpc2FibGUtcmVnZXhwLCwiCi1QQUNLQUdFQ09ORklHW3V1aWRdID0gIi0tZW5hYmxlLXV1aWQsLS1kaXNhYmxlLXV1aWQsdXRpbC1saW51eCwiCi1QQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLS1lbmFibGUtbGliZ2NyeXB0LC0tZGlzYWJsZS1saWJnY3J5cHQsbGliZ2NyeXB0LCIKLVBBQ0tBR0VDT05GSUdbdGVzdGJlbmNoXSA9ICItLWVuYWJsZS10ZXN0YmVuY2gsLS1kaXNhYmxlLXRlc3RiZW5jaCwsIgotCi0jIGRlZmF1bHQgbm8gaW4gY29uZmlndXJlCi1QQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWcsLCIKLVBBQ0tBR0VDT05GSUdbaW1kaWFnXSA9ICItLWVuYWJsZS1pbWRpYWcsLS1kaXNhYmxlLWltZGlhZywsIgotUEFDS0FHRUNPTkZJR1tpbWZpbGVdID0gIi0tZW5hYmxlLWltZmlsZSwtLWRpc2FibGUtaW1maWxlLCwiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAsIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywtLWRpc2FibGUtZ251dGxzLGdudXRscywiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCwiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCwtLWRpc2FibGUtbXlzcWwsbXlzcWw1LCIKLVBBQ0tBR0VDT05GSUdbcG9zdGdyZXNxbF0gPSAiLS1lbmFibGUtcGdzcWwsLS1kaXNhYmxlLXBnc3FsLHBvc3RncmVzcWwsIgotUEFDS0FHRUNPTkZJR1tsaWJkYmldID0gIi0tZW5hYmxlLWxpYmRiaSwtLWRpc2FibGUtbGliZGJpLGxpYmRiaSwiCi1QQUNLQUdFQ09ORklHW21haWxdID0gIi0tZW5hYmxlLW1haWwsLS1kaXNhYmxlLW1haWwsLCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCwiCi0KLVRFU1RESVIgPSAidGVzdHMiCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgIGVjaG8gJ2J1aWxkdGVzdC1URVNUUzogJChjaGVja19QUk9HUkFNUyknID4+ICR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgIyBpbnN0YWxsIHRoZSB0ZXN0cwotICAgIGNwIC1yZiAke1N9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBjcCAtcmYgJHtCfS8ke1RFU1RESVJ9ICR7RH0ke1BURVNUX1BBVEh9Ci0KLSAgICAjIGRvIE5PVCBuZWVkIHRvIHJlYnVpbGQgTWFrZWZpbGUgaXRzZWxmCi0gICAgc2VkIC1pICdzL15NYWtlZmlsZTouKiQvTWFrZWZpbGU6LycgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotCi0gICAgIyBmaXggdGhlIHNyY2RpciwgdG9wX3NyY2RpcgotICAgIHNlZCAtaSAncyxeXChzcmNkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS90ZXN0cywnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBzZWQgLWkgJ3MsXlwodG9wX3NyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotCi0gICAgIyB2YWxncmluZCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGFybSBhbmQgbWlwcywKLSAgICAjIHNvIHJlbW92ZSByZWxhdGVkIHRlc3QgY2FzZXMgaWYgdGhlcmUgaXMgbm8gdmFsZ3JpbmQuCi0gICAgaWYgWyB4JHtWQUxHUklORH0gPSB4IF07IHRoZW4KLSAgICAgICAgc2VkIC1pICcvdWRwLW1zZ3JlZHVjLS9kJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0gICAgZmkKLQotICAgICMgaW5zdGFsbCB0ZXN0LWRyaXZlcgotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICMgaW5zdGFsbCBuZWNlc3NhcnkgbGlua3MKLSAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rvb2xzCi0gICAgbG4gLXNmICR7c2JpbmRpcn0vcnN5c2xvZ2QgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbHMvcnN5c2xvZ2QKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZQotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZS8ubGlicwotICAgICgKLSAgICAgICAgY2QgJHtEfS8ke2xpYmRpcn0vcnN5c2xvZwotICAgICAgICBhbGxzbz0iKi5zbyIKLSAgICAgICAgZm9yIGkgaW4gJGFsbHNvOyBkbwotICAgICAgICAgICAgbG4gLXNmICR7bGliZGlyfS9yc3lzbG9nLyRpICR7RH0ke1BURVNUX1BBVEh9L3J1bnRpbWUvLmxpYnMvJGkKLSAgICAgICAgZG9uZQotICAgICkKLQotICAgICMgZml4IHRoZSBtb2R1bGUgbG9hZCBwYXRoIHdpdGggcnVudGltZS8ubGlicwotICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfSAtbmFtZSAiKi5jb25mIiAtbyAtbmFtZSAiKi5zaCIgLW8gLW5hbWUgIiouYyIgfCB4YXJncyBcCi0gICAgICAgIHNlZCAtaSAtZSAnczouLi9wbHVnaW5zLy4qLy5saWJzLzouLi9ydW50aW1lLy5saWJzLzpnJwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9pbml0c2NyaXB0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3JzeXNsb2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmNvbmYKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3JzeXNsb2cubG9ncm90YXRlICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5yc3lzbG9nCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0iCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJzeXNsb2ciCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vcnN5c2xvZy5jb25mIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gImJ1c3lib3gtc3lzbG9nIHN5c2tsb2dkIHN5c2xvZy1uZyIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImxvZ3JvdGF0ZSIKLQotIyBmb3IgcnN5c2xvZy1wdGVzdAotVkFMR1JJTkQgPSAidmFsZ3JpbmQiCi1WQUxHUklORF9taXBzID0gIiIKLVZBTEdSSU5EX21pcHM2NCA9ICIiCi1WQUxHUklORF9taXBzNjRuMzIgPSAiIgotVkFMR1JJTkRfYXJtID0gIiIKLVZBTEdSSU5EX2FhcmNoNjQgPSAiIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgZGlmZnV0aWxzIGd6aXAgYmFzaCBnYXdrIGNvcmV1dGlscyBwcm9jcHMiCi1SUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAiJHtUQ0xJQkN9LWRiZyAke1ZBTEdSSU5EfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjI5LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNTZlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yOS4wLmJiCkBAIC0wLDAgKzEsMTUxIEBACitTVU1NQVJZID0gIlJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgbXVsdGktdGhyZWFkZWQgc3lzbG9nZCIKK0RFU0NSSVBUSU9OID0gIlwKK1JzeXNsb2cgaXMgYW4gZW5oYW5jZWQgc3lzbG9nZCBzdXBwb3J0aW5nLCBhbW9uZyBvdGhlcnMsIE15U1FMLFwKKyBQb3N0Z3JlU1FMLCBmYWlsb3ZlciBsb2cgZGVzdGluYXRpb25zLCBzeXNsb2cvdGNwLCBmaW5lIGdyYWluXAorIG91dHB1dCBmb3JtYXQgY29udHJvbCwgaGlnaCBwcmVjaXNpb24gdGltZXN0YW1wcywgcXVldWVkIG9wZXJhdGlvbnNcCisgYW5kIHRoZSBhYmlsaXR5IHRvIGZpbHRlciBvbiBhbnkgbWVzc2FnZSBwYXJ0LiBJdCBpcyBxdWl0ZVwKKyBjb21wYXRpYmxlIHRvIHN0b2NrIHN5c2tsb2dkIGFuZCBjYW4gYmUgdXNlZCBhcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuXAorIEl0cyBhZHZhbmNlZCBmZWF0dXJlcyBtYWtlIGl0IHN1aXRhYmxlIGZvciBlbnRlcnByaXNlLWNsYXNzLFwKKyBlbmNyeXB0aW9uIHByb3RlY3RlZCBzeXNsb2cgcmVsYXkgY2hhaW5zIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYmVpbmdcCisgdmVyeSBlYXN5IHRvIHNldHVwIGZvciB0aGUgbm92aWNlIHVzZXIuIgorCitERVBFTkRTID0gInpsaWIgbGliZXN0ciBsaWJmYXN0anNvbiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgbGlibG9nZ2luZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucnN5c2xvZy5jb20vIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyAmIEFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01MWQ5NjM1ZTY0NmZiNzVlMWI3NGMwNzRmNzg4ZTk3MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9Y2I3OTAzZjFlNWMzOWFlODM4MjA5ZTEzMGRjYTI3MGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5BU0wyMDttZDU9MDUyZjhhMDkyMDY2MTVhYjA3MzI2ZmY4Y2UyZDlkMzJcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS9kb3dubG9hZC9maWxlcy9kb3dubG9hZC9yc3lzbG9nLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy5sb2dyb3RhdGUgXAorICAgICAgICAgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3JzeXNsb2ctZml4LXB0ZXN0LW5vdC1maW5pc2gucGF0Y2ggXAorIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1VbmRlZmluZS1HTE9CX0JSQUNFLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXN5cy10aW1lLWgucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzgwNTYxN2Y2NWE0YjRiZWEzNDYwNjQ4N2E1MjU1YTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjIwYmEzMGI1YWZiMGYzZGRiMzI4NjEzZmVhN2FhMzk2NmIwMWU0ZDBjNTJkNmRlOWFiMjdiMDg1OGYxOTczOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgcHRlc3QKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZ2VuZXJhdGUtbWFuLXBhZ2VzIGFwX2N2X2F0b21pY19idWlsdGlucz15ZXMiCisKKyMgZmlyc3QgbGluZSBpcyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgIHJzeXNsb2dkIHJzeXNsb2dydCBrbG9nIGluZXQgcmVnZXhwIHV1aWQgbGliZ2NyeXB0IFwKKyAgICBpbWRpYWcgZ251dGxzIGltZmlsZSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc25tcCBzeXN0ZW1kJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3Rlc3RiZW5jaCByZWxwICR7VkFMR1JJTkR9JywgJycsIGQpfSBcCisiCisKKyMgZGVmYXVsdCB5ZXMgaW4gY29uZmlndXJlCitQQUNLQUdFQ09ORklHW3JlbHBdID0gIi0tZW5hYmxlLXJlbHAsLS1kaXNhYmxlLXJlbHAsbGlicmVscCwiCitQQUNLQUdFQ09ORklHW3JzeXNsb2dkXSA9ICItLWVuYWJsZS1yc3lzbG9nZCwtLWRpc2FibGUtcnN5c2xvZ2QsLCIKK1BBQ0tBR0VDT05GSUdbcnN5c2xvZ3J0XSA9ICItLWVuYWJsZS1yc3lzbG9ncnQsLS1kaXNhYmxlLXJzeXNsb2dydCwsIgorUEFDS0FHRUNPTkZJR1tpbmV0XSA9ICItLWVuYWJsZS1pbmV0LC0tZGlzYWJsZS1pbmV0LCwiCitQQUNLQUdFQ09ORklHW2tsb2ddID0gIi0tZW5hYmxlLWtsb2csLS1kaXNhYmxlLWtsb2csLCIKK1BBQ0tBR0VDT05GSUdbcmVnZXhwXSA9ICItLWVuYWJsZS1yZWdleHAsLS1kaXNhYmxlLXJlZ2V4cCwsIgorUEFDS0FHRUNPTkZJR1t1dWlkXSA9ICItLWVuYWJsZS11dWlkLC0tZGlzYWJsZS11dWlkLHV0aWwtbGludXgsIgorUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi0tZW5hYmxlLWxpYmdjcnlwdCwtLWRpc2FibGUtbGliZ2NyeXB0LGxpYmdjcnlwdCwiCitQQUNLQUdFQ09ORklHW3Rlc3RiZW5jaF0gPSAiLS1lbmFibGUtdGVzdGJlbmNoIC0tZW5hYmxlLW9tc3Rkb3V0LC0tZGlzYWJsZS10ZXN0YmVuY2ggLS1kaXNhYmxlLW9tc3Rkb3V0LCwiCisKKyMgZGVmYXVsdCBubyBpbiBjb25maWd1cmUKK1BBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZywsIgorUEFDS0FHRUNPTkZJR1tpbWRpYWddID0gIi0tZW5hYmxlLWltZGlhZywtLWRpc2FibGUtaW1kaWFnLCwiCitQQUNLQUdFQ09ORklHW2ltZmlsZV0gPSAiLS1lbmFibGUtaW1maWxlLC0tZGlzYWJsZS1pbWZpbGUsLCIKK1BBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCxuZXQtc25tcCwiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLC0tZGlzYWJsZS1nbnV0bHMsZ251dGxzLCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kLCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wZ3NxbCwtLWRpc2FibGUtcGdzcWwscG9zdGdyZXNxbCwiCitQQUNLQUdFQ09ORklHW2xpYmRiaV0gPSAiLS1lbmFibGUtbGliZGJpLC0tZGlzYWJsZS1saWJkYmksbGliZGJpLCIKK1BBQ0tBR0VDT05GSUdbbWFpbF0gPSAiLS1lbmFibGUtbWFpbCwtLWRpc2FibGUtbWFpbCwsIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKKworVEVTVERJUiA9ICJ0ZXN0cyIKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgZWNobyAnYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrX1BST0dSQU1TKScgPj4gJHtURVNURElSfS9NYWtlZmlsZQorICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAjIGluc3RhbGwgdGhlIHRlc3RzCisgICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKKyAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisKKyAgICAjIGZpeCB0aGUgc3JjZGlyLCB0b3Bfc3JjZGlyCisgICAgc2VkIC1pICdzLF5cKHNyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorICAgIHNlZCAtaSAncyxeXCh0b3Bfc3JjZGlyID0gXCkuKixcMSR7UFRFU1RfUEFUSH0vdGVzdHMsJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisKKyAgICAjIHZhbGdyaW5kIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYXJtIGFuZCBtaXBzLAorICAgICMgc28gcmVtb3ZlIHJlbGF0ZWQgdGVzdCBjYXNlcyBpZiB0aGVyZSBpcyBubyB2YWxncmluZC4KKyAgICBpZiBbIHgke1ZBTEdSSU5EfSA9IHggXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy91ZHAtbXNncmVkdWMtL2QnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKyAgICBmaQorCisgICAgIyBpbnN0YWxsIHRlc3QtZHJpdmVyCisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgIyBpbnN0YWxsIG5lY2Vzc2FyeSBsaW5rcworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbHMKKyAgICBsbiAtc2YgJHtzYmluZGlyfS9yc3lzbG9nZCAke0R9JHtQVEVTVF9QQVRIfS90b29scy9yc3lzbG9nZAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lCisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzCisgICAgKAorICAgICAgICBjZCAke0R9LyR7bGliZGlyfS9yc3lzbG9nCisgICAgICAgIGFsbHNvPSIqLnNvIgorICAgICAgICBmb3IgaSBpbiAkYWxsc287IGRvCisgICAgICAgICAgICBsbiAtc2YgJHtsaWJkaXJ9L3JzeXNsb2cvJGkgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZS8ubGlicy8kaQorICAgICAgICBkb25lCisgICAgKQorCisgICAgIyBmaXggdGhlIG1vZHVsZSBsb2FkIHBhdGggd2l0aCBydW50aW1lLy5saWJzCisgICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9IC1uYW1lICIqLmNvbmYiIC1vIC1uYW1lICIqLnNoIiAtbyAtbmFtZSAiKi5jIiB8IHhhcmdzIFwKKyAgICAgICAgc2VkIC1pIC1lICdzOi4uL3BsdWdpbnMvLiovLmxpYnMvOi4uL3J1bnRpbWUvLmxpYnMvOmcnCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKKyAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZCIKKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2luaXRzY3JpcHQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZworICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuY29uZgorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5sb2dyb3RhdGUgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQvbG9ncm90YXRlLnJzeXNsb2cKK30KKworRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKKworSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9yc3lzbG9nLmNvbmYiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiYnVzeWJveC1zeXNsb2cgc3lza2xvZ2Qgc3lzbG9nLW5nIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgorCitSREVQRU5EU18ke1BOfSArPSAibG9ncm90YXRlIgorCisjIGZvciByc3lzbG9nLXB0ZXN0CitWQUxHUklORCA9ICJ2YWxncmluZCIKK1ZBTEdSSU5EX21pcHMgPSAiIgorVkFMR1JJTkRfbWlwczY0ID0gIiIKK1ZBTEdSSU5EX21pcHM2NG4zMiA9ICIiCitWQUxHUklORF9hcm0gPSAiIgorVkFMR1JJTkRfYWFyY2g2NCA9ICIiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBkaWZmdXRpbHMgZ3ppcCBiYXNoIGdhd2sgY29yZXV0aWxzIHByb2NwcyIKK1JSRUNPTU1FTkRTXyR7UE59LXB0ZXN0ICs9ICIke1RDTElCQ30tZGJnICR7VkFMR1JJTkR9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYy9zYmxpbS1zZmNjLzAwMDEtY2lteG1sLUluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNjL3NibGltLXNmY2MvMDAwMS1jaW14bWwtSW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWU1MGVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYy9zYmxpbS1zZmNjLzAwMDEtY2lteG1sLUluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA5OTgxNTQyY2I0NDNjZGFmOTEzNDUwMGI3OGZlN2VkYTlmOTk4NjFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgNyBTZXAgMjAxNyAyMTo0MzoyNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjaW14bWw6IEluY2x1ZGUgc3lzL3NlbGVjdC5oIGZvciBmZF9zZXQKKworZGVmaW5lIF9fU09DS0FERFJfQVJHIG9uIGxpbnV4IHdoZW4gbGliYyAhPSBnbGliYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKyBiYWNrZW5kL2NpbXhtbC9pbmRpY2F0aW9ubGlzdGVuZXIuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmFja2VuZC9jaW14bWwvaW5kaWNhdGlvbmxpc3RlbmVyLmMgYi9iYWNrZW5kL2NpbXhtbC9pbmRpY2F0aW9ubGlzdGVuZXIuYworaW5kZXggMGQ3ZDlmZS4uMzdjNDVhZSAxMDA3NTUKKy0tLSBhL2JhY2tlbmQvY2lteG1sL2luZGljYXRpb25saXN0ZW5lci5jCisrKysgYi9iYWNrZW5kL2NpbXhtbC9pbmRpY2F0aW9ubGlzdGVuZXIuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAKKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorQEAgLTM2LDcgKzM3LDcgQEAgc3RhdGljIGludCBkb19saXN0ZW49MTsKKyAjZGVmaW5lIGhkckJ1ZnNpemUgNTAwMAorICNkZWZpbmUgaGRyTGltbWl0IDUwMDAKKyAKKy0jaWZkZWYgX19BUFBMRV9fCisrI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCAoZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykpCisgIyBkZWZpbmUgX19TT0NLQUREUl9BUkcgICBzdHJ1Y3Qgc29ja2FkZHIgKl9fcmVzdHJpY3QKKyAjZW5kaWYKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Mvc2JsaW0tc2ZjY18yLjIuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Mvc2JsaW0tc2ZjY18yLjIuOC5iYgppbmRleCAxZWM5OTQwLi5kZjU1YTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNjL3NibGltLXNmY2NfMi4yLjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYy9zYmxpbS1zZmNjXzIuMi44LmJiCkBAIC0yLDcgKzIsOSBAQAogREVTQ1JJUFRJT04gPSAiU21hbGwgRm9vdHByaW50IENJTSBDbGllbnQgTGlicmFyeSBSdW50aW1lIExpYnJhcmllcyIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuc2JsaW0ub3JnIgogCi1TUkNfVVJJID0gImh0dHA6Ly9uZXRjb2xvZ25lLmRsLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3NibGltLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUkkgPSAiaHR0cDovL25ldGNvbG9nbmUuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3Qvc2JsaW0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2lteG1sLUluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwYmFjMGRlYzE5ZjE3ZWMwNjViNmMzMzJhNTZkN2JhZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjhmMTg3NTgzYmM2YzZiMGE2M2FhZTAxNjVjYTM3ODkyYTJhM2JkNGJiMDY4MmNkNzZiNTYyNjhiNDJjM2Q2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29scy9tZGFkbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Njc2lyYXN0b29scy9zY3NpcmFzdG9vbHMvbWRhZG0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVkZGEwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Njc2lyYXN0b29scy9zY3NpcmFzdG9vbHMvbWRhZG0ucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAorLS0tIG1kYWRtLmQvbWRhZG0tMS4zLjAvbWRhZG0uaC5vcmcJMjAxNy0wNi0yMCAwMDozNTo1NS4zNjY5NzgzNzIgLTA3MDAKKysrKyBtZGFkbS5kL21kYWRtLTEuMy4wL21kYWRtLmgJMjAxNy0wNi0yMCAwMDozNjo0MS4yNDQzNjMzNDggLTA3MDAKK0BAIC0yOSw4ICsyOSw5IEBACisgCisgI2RlZmluZQlfX1VTRV9MQVJHRUZJTEU2NAorICNpbmNsdWRlCTx1bmlzdGQuaD4KKy1leHRlcm4gX19vZmY2NF90IGxzZWVrNjQgX19QICgoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSk7CisrLy9leHRlcm4gX19vZmY2NF90IGxzZWVrNjQgX19QICgoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSk7CisgCisrI2luY2x1ZGUJPHN5cy9zeXNtYWNyb3MuaD4KKyAjaW5jbHVkZQk8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUJPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUJPHN0ZGxpYi5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29scy9wcmludC1mb3JtYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzL3ByaW50LWZvcm1hdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgxNzgwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29scy9wcmludC1mb3JtYXQucGF0Y2gKQEAgLTAsMCArMSwyMTggQEAKK0luZGV4OiBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NnY29tbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzY3NpcmFzdG9vbHMtMS42LjYub3JpZy9zcmMvc2djb21tb24uYworKysrIHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2djb21tb24uYworQEAgLTMwNCw4ICszMDQsOCBAQCB2b2lkIHNob3dpdChjaGFyICpidWYpCisgCSAgICBmZGxvZyA9IHN0ZGVycjsKKyAJfQorICAgICB9CistICAgIGlmIChmbG9nb3BlbikgZnByaW50ZihmZGxvZywgYnVmKTsJLyp3cml0ZSB0byBsb2cgKi8KKy0gICAgZnByaW50ZihmZG1zZywgYnVmKTsJLypkZWZhdWx0cyB0byBzdGRvdXQgKi8KKysgICAgaWYgKGZsb2dvcGVuKSBmcHJpbnRmKGZkbG9nLCAiJXMiLCBidWYpOwkvKndyaXRlIHRvIGxvZyAqLworKyAgICBmcHJpbnRmKGZkbXNnLCAiJXMiLCBidWYpOwkvKmRlZmF1bHRzIHRvIHN0ZG91dCAqLworIH0KKyAKKyB2b2lkIHNob3dsb2coY29uc3QgY2hhciAqIGZvcm1hdCwgLi4uKSAKK0luZGV4OiBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NnZGVmZWN0cy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2NzaXJhc3Rvb2xzLTEuNi42Lm9yaWcvc3JjL3NnZGVmZWN0cy5jCisrKysgc2NzaXJhc3Rvb2xzLTEuNi42L3NyYy9zZ2RlZmVjdHMuYworQEAgLTIyNiw3ICsyMjYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSAgICAoIiAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKTsKKyAJaWYgKGZsb2dvcGVuKQorIAkgICAgcHJpbnRmKCJMb2cgZmlsZSAlcyBpcyBvcGVuXG4iLCBsb2dmaWxlKTsKKy0JcHJpbnRmKEhlYWRlclN0cik7CisrCXByaW50ZigiJXMiLCBIZWFkZXJTdHIpOworIAkvKiBnZXQgU0NTSSBEZXZpY2UgSW5mbyAqLworIAlpZGV2ID0gMDsKKyAJZmxhZ3MgPSBPX1JEV1I7CQkvKiBjb3VsZCB1c2UgT1BFTl9GTEFHIGlmIHJlYWQtb25seS4gKi8KK0luZGV4OiBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NnZGlhZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2NzaXJhc3Rvb2xzLTEuNi42Lm9yaWcvc3JjL3NnZGlhZy5jCisrKysgc2NzaXJhc3Rvb2xzLTEuNi42L3NyYy9zZ2RpYWcuYworQEAgLTI1MCw3ICsyNTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSAgIHByaW50ZigiICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOworIAkgICBpZiAoZmxvZ29wZW4pCisgCSAgICAgICBwcmludGYoIkxvZyBmaWxlICVzIGlzIG9wZW4sIGRlYnVnPSVkXG4iLCBsb2dmaWxlLGZkZWJ1Zyk7CistCSAgIHByaW50ZihIZWFkZXJTdHIpOworKwkgICBwcmludGYoIiVzIiwgSGVhZGVyU3RyKTsKKyAJfQorIAkvKiBnZXQgU0NTSSBEZXZpY2UgSW5mbyAqLworIAlpZGV2ID0gMDsKK0BAIC0zNTYsMTIgKzM1NiwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCWNhc2UgJ0YnOgorIAljYXNlICdmJzoKKyAJICAgIGZ1bmMgPSAnZic7CistCSAgICBwcmludGYoZXJhc2VfbXNnKTsKKysJICAgIHByaW50ZigiJXMiLCBlcmFzZV9tc2cpOworIAkgICAgYnJlYWs7CisgCWNhc2UgJ1cnOgorIAljYXNlICd3JzoKKyAJICAgIGZ1bmMgPSAndyc7CistCSAgICBwcmludGYoZXJhc2VfbXNnKTsKKysJICAgIHByaW50ZigiJXMiLCBlcmFzZV9tc2cpOworIAkgICAgYnJlYWs7CisgCWNhc2UgJ1MnOgorIAljYXNlICdzJzoKK0luZGV4OiBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3NnZGlza21vbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2NzaXJhc3Rvb2xzLTEuNi42Lm9yaWcvc3JjL3NnZGlza21vbi5jCisrKysgc2NzaXJhc3Rvb2xzLTEuNi42L3NyYy9zZ2Rpc2ttb24uYworQEAgLTE5Nyw5ICsxOTcsOSBAQCB2b2lkIHNob3dpdChjaGFyICpidWYpCisgICAgICAgICB9CisgICAgIH0KKyAgICAgaWYgKGZsb2dvcGVuKQorLSAgICAgICAgZnByaW50ZihmZGxvZywgYnVmKTsgICAgLyp3cml0ZSB0byBsb2cgKi8KKysgICAgICAgIGZwcmludGYoZmRsb2csICIlcyIsIGJ1Zik7ICAgIC8qd3JpdGUgdG8gbG9nICovCisgICAgIGlmICghYmFja2dyb3VuZCkKKy0gICAgICAgIGZwcmludGYoZmRtc2csIGJ1Zik7ICAgIC8qbWVzc2FnZSBkaXNwbGF5IGRlZmF1bHRzIHRvIHN0ZG91dCAqLworKyAgICAgICAgZnByaW50ZihmZG1zZywgIiVzIiwgIGJ1Zik7ICAgIC8qbWVzc2FnZSBkaXNwbGF5IGRlZmF1bHRzIHRvIHN0ZG91dCAqLworIH0KKyAKKyAvKgorQEAgLTIzNSw3ICsyMzUsNyBAQCByZW1fc2NzaV9kZXYoaW50IGJ1cywgaW50IGNoLCBpbnQgaWQsIGluCisgCWZwID0gZm9wZW4oIi9wcm9jL3Njc2kvc2NzaSIsInIrIik7CisgCWlmIChmcCA9PSBOVUxMKSByZXR1cm4oZXJybm8pOyAKKyAJc3ByaW50ZihjbWQsInJlbW92ZS1zaW5nbGUtZGV2aWNlICVkICVkICVkICVkIixidXMsY2gsaWQsbHVuKTsKKy0JbiA9IGZwcmludGYoZnAsY21kKTsKKysJbiA9IGZwcmludGYoZnAsIiVzIiwgY21kKTsKKyAJZmNsb3NlKGZwKTsKKyAJc3RyY2F0KGNtZCwiXG4iKTsKKyAJc2hvd2l0KGNtZCk7CitAQCAtMjU2LDcgKzI1Niw3IEBAIGFkZF9zY3NpX2RldihpbnQgYnVzLCBpbnQgY2gsIGludCBpZCwgaW4KKyAJZnAgPSBmb3BlbigiL3Byb2Mvc2NzaS9zY3NpIiwicisiKTsKKyAJaWYgKGZwID09IE5VTEwpIHJldHVybihlcnJubyk7IAorIAlzcHJpbnRmKGNtZCwiYWRkLXNpbmdsZS1kZXZpY2UgJWQgJWQgJWQgJWQiLGJ1cyxjaCxpZCxsdW4pOworLQluID0gZnByaW50ZihmcCxjbWQpOworKwluID0gZnByaW50ZihmcCwgIiVzIiwgY21kKTsKKyAJZmNsb3NlKGZwKTsKKyAJc3RyY2F0KGNtZCwiXG4iKTsKKyAJc2hvd2l0KGNtZCk7CitAQCAtMTIzMyw3ICsxMjMzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgaW50ZXJ2YWwgPSBhdG9pKG9wdGFyZyk7CisgICAgICAgICAgICAgYnJlYWs7CisgCWRlZmF1bHQ6CistICAgICAgICAgICAgcHJpbnRmKG91dHB1dDIpOyAgICAvKnByb2cgaGVhZGVyKi8KKysgICAgICAgICAgICBwcmludGYoIiVzIiwgb3V0cHV0Mik7ICAgIC8qcHJvZyBoZWFkZXIqLworICAgICAgICAgICAgIHByaW50ZigiVXNhZ2U6ICVzIFstYmVtbnJ4IC10IHRpbWVdXG4iLHByb2duYW1lKTsKKyAJICAgIHByaW50ZigiIC1iICBSdW4gaW4gQmFja2dyb3VuZCBhcyBhIGRhZW1vblxuIik7CisgCSAgICBwcmludGYoIiAtZSAgRG8gbm90IHdyaXRlIHRvIGFueSBmaWxlcy5cbiIpOworQEAgLTEyNDYsNyArMTI0Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgIGV4aXQoMSk7IAorIAl9CisgICAgfQorLSAgIGlmICghYmFja2dyb3VuZCkgcHJpbnRmKG91dHB1dDIpOyAgLypwcm9nIGhlYWRlciovCisrICAgaWYgKCFiYWNrZ3JvdW5kKSBwcmludGYoIiVzIiwgb3V0cHV0Mik7ICAvKnByb2cgaGVhZGVyKi8KKyAKKyAgICAvKiBvbmx5IHJ1biB0aGlzIGFzIHN1cGVydXNlciAqLworICAgIGkgPSBnZXRldWlkKCk7CitJbmRleDogc2NzaXJhc3Rvb2xzLTEuNi42L3NyYy9zZ21vZGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNjc2lyYXN0b29scy0xLjYuNi5vcmlnL3NyYy9zZ21vZGUuYworKysrIHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2dtb2RlLmMKK0BAIC0zMDMsNyArMzAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkgICAgKCIgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CisgCWlmIChmbG9nb3BlbikKKyAJICAgIHByaW50ZigiTG9nIGZpbGUgJXMgaXMgb3BlblxuIiwgbG9nZmlsZSk7CistCXByaW50ZihIZWFkZXJTdHIpOworKwlwcmludGYoIiVzIiwgSGVhZGVyU3RyKTsKKyAJLyogZ2V0IFNDU0kgRGV2aWNlIEluZm8gKi8KKyAJaWRldiA9IDA7CisgCWZsYWdzID0gT19SRFdSOwkJLyogY291bGQgdXNlIE9QRU5fRkxBRyBpZiByZWFkLW9ubHkuICovCitAQCAtNTg1LDggKzU4NSw4IEBAIGludCBkb19tb2Rlc2VsZWN0KGludCBpZHgpCisgCSAgICBpZiAoIWZvdmVyd3JpdGUpIHsKKyAJCS8qIHVzZSBleGlzdGluZyBjYXBhY2l0eSBmcm9tIG1vZGUgc2Vuc2UgKi8KKyAJCW1lbWNweShzZWxfYnVmZmVyICsgNCwgb3V0X2J1ZmZlciArIDQsIDgpOworLQkJc3ByaW50ZihzY3JhdGNoLCAiVXNpbmcgZXhpc3RpbmcgY2FwYWNpdHkgaW5zdGVhZFxuIik7CistCQlwcmludGYoc2NyYXRjaCk7CisrCQlzcHJpbnRmKHNjcmF0Y2gsICIlcyIsICJVc2luZyBleGlzdGluZyBjYXBhY2l0eSBpbnN0ZWFkXG4iKTsKKysJCXByaW50ZigiJXMiLHNjcmF0Y2gpOworIAkJc2hvd2xvZyggc2NyYXRjaCk7CisgCSAgICB9IGVsc2UgeyAgLyogZm92ZXJ3cml0ZT09MSwgY2hhbmdpbmcgc29tZXRoaW5nICovCisgCQkvKiB1c3VhbGx5IG9ubHkgY2hhbmdlIG51bSBibGtzLCBpZiBjaGFuZ2UgYmxrIHNpemUsIGZsYWcgaXQuICovCitJbmRleDogc2NzaXJhc3Rvb2xzLTEuNi42L3NyYy9zZ3JhaWRtb24uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNjc2lyYXN0b29scy0xLjYuNi5vcmlnL3NyYy9zZ3JhaWRtb24uYworKysrIHNjc2lyYXN0b29scy0xLjYuNi9zcmMvc2dyYWlkbW9uLmMKK0BAIC0yNjksOSArMjY5LDkgQEAgdm9pZCBzaG93aXQoY2hhciAqYnVmKQorICAgICAgICAgfQorICAgICB9CisgICAgIGlmIChmbG9nb3BlbikKKy0gICAgICAgIGZwcmludGYoZmRsb2csIGJ1Zik7ICAgIC8qd3JpdGUgdG8gbG9nICovCisrICAgICAgICBmcHJpbnRmKGZkbG9nLCAiJXMiLCBidWYpOyAgICAvKndyaXRlIHRvIGxvZyAqLworICAgICBpZiAoIWJhY2tncm91bmQpCistICAgICAgICBmcHJpbnRmKGZkbXNnLCBidWYpOyAgICAvKm1lc3NhZ2UgZGlzcGxheSBkZWZhdWx0cyB0byBzdGRvdXQgKi8KKysgICAgICAgIGZwcmludGYoZmRtc2csICIlcyIsIGJ1Zik7ICAgIC8qbWVzc2FnZSBkaXNwbGF5IGRlZmF1bHRzIHRvIHN0ZG91dCAqLworIH0KKyAKKyAvKgorQEAgLTU2Myw3ICs1NjMsNyBAQCBhZGRfc2NzaV9kZXYoaW50IGJ1cywgaW50IGNoLCBpbnQgaWQsIGluCisgCWZwID0gZm9wZW4oIi9wcm9jL3Njc2kvc2NzaSIsInIrIik7CisgCWlmIChmcCA9PSBOVUxMKSByZXR1cm4oZXJybm8pOyAKKyAJc3ByaW50ZihjbWQsImFkZC1zaW5nbGUtZGV2aWNlICVkICVkICVkICVkIixidXMsY2gsaWQsbHVuKTsKKy0JZnByaW50ZihmcCxjbWQpOworKwlmcHJpbnRmKGZwLCAiJXMiLCBjbWQpOworIAlmY2xvc2UoZnApOworIAlzdHJjYXQoY21kLCJcbiIpOworIAlzaG93aXQoY21kKTsKK0BAIC0xNTg1LDcgKzE1ODUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICBpbnRlcnZhbCA9IGF0b2kob3B0YXJnKTsKKyAgICAgICAgICAgICBicmVhazsKKyAJZGVmYXVsdDoKKy0gICAgICAgICAgICBwcmludGYob3V0cHV0Mik7ICAgIC8qcHJvZyBoZWFkZXIqLworKyAgICAgICAgICAgIHByaW50ZigiJXMiLCBvdXRwdXQyKTsgICAgLypwcm9nIGhlYWRlciovCisgICAgICAgICAgICAgcHJpbnRmKCJVc2FnZTogJXMgWy1iZW1ucnggLXQgdGltZV1cbiIscHJvZ25hbWUpOworIAkgICAgcHJpbnRmKCIgLWIgIFJ1biBpbiBCYWNrZ3JvdW5kIGFzIGEgZGFlbW9uXG4iKTsKKyAJICAgIHByaW50ZigiIC1lICBEbyBub3Qgd3JpdGUgdG8gYW55IGZpbGVzLlxuIik7CitAQCAtMTU5OCw3ICsxNTk4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgZXhpdCgxKTsgCisgCX0KKyAgICB9CistICAgaWYgKCFiYWNrZ3JvdW5kKSBwcmludGYob3V0cHV0Mik7ICAvKnByb2cgaGVhZGVyKi8KKysgICBpZiAoIWJhY2tncm91bmQpIHByaW50ZigiJXMiLCBvdXRwdXQyKTsgIC8qcHJvZyBoZWFkZXIqLworIAorICAgIC8qIG9ubHkgcnVuIHRoaXMgYXMgc3VwZXJ1c2VyICovCisgICAgaSA9IGdldGV1aWQoKTsKK0luZGV4OiBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3Nnc2FmdGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNjc2lyYXN0b29scy0xLjYuNi5vcmlnL3NyYy9zZ3NhZnRlLmMKKysrKyBzY3NpcmFzdG9vbHMtMS42LjYvc3JjL3Nnc2FmdGUuYworQEAgLTE3NCw5ICsxNzQsOSBAQCB2b2lkIHNob3dpdChjaGFyICpidWYpCisgICAgICAgICB9CisgICAgIH0KKyAgICAgaWYgKGZsb2dvcGVuKQorLSAgICAgICAgZnByaW50ZihmZGxvZywgYnVmKTsgICAgLyp3cml0ZSB0byBsb2cgKi8KKysgICAgICAgIGZwcmludGYoZmRsb2csICIlcyIsIGJ1Zik7ICAgIC8qd3JpdGUgdG8gbG9nICovCisgICAgIGlmICghYmFja2dyb3VuZCkKKy0gICAgICAgIGZwcmludGYoZmRtc2csIGJ1Zik7ICAgIC8qbWVzc2FnZSBkaXNwbGF5IGRlZmF1bHRzIHRvIHN0ZG91dCAqLworKyAgICAgICAgZnByaW50ZihmZG1zZywgIiVzIiwgYnVmKTsgICAgLyptZXNzYWdlIGRpc3BsYXkgZGVmYXVsdHMgdG8gc3Rkb3V0ICovCisgfQorICAKKyAvKgorQEAgLTM4NCw3ICszODQsNyBAQCBhZGRfc2NzaV9kZXYoaW50IGJ1cywgaW50IGNoLCBpbnQgaWQsIGluCisgCWZwID0gZm9wZW4oIi9wcm9jL3Njc2kvc2NzaSIsInIrIik7CisgCWlmIChmcCA9PSBOVUxMKSByZXR1cm4oZXJybm8pOyAKKyAJc3ByaW50ZihjbWQsImFkZC1zaW5nbGUtZGV2aWNlICVkICVkICVkICVkIixidXMsY2gsaWQsbHVuKTsKKy0JZnByaW50ZihmcCxjbWQpOworKwlmcHJpbnRmKGZwLCAiJXMiLCBjbWQpOworIAlmY2xvc2UoZnApOworIAlzdHJjYXQoY21kLCJcbiIpOworIAlzaG93aXQoY21kKTsKK0BAIC0xMjYxLDcgKzEyNjEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICBkb19udW1lcmljID0gMDsKKyAgICAgICAgICAgICBicmVhazsgCisgCWRlZmF1bHQ6CistICAgICAgICAgICAgcHJpbnRmKG91dHB1dDIpOyAgICAvKnByb2cgaGVhZGVyKi8KKysgICAgICAgICAgICBwcmludGYoIiVzIiwgb3V0cHV0Mik7ICAgIC8qcHJvZyBoZWFkZXIqLworICAgICAgICAgICAgIHByaW50ZigiVXNhZ2U6ICVzIFstZCBudW0gLXJmIC1lbW54XVxuIixwcm9nbmFtZSk7CisgCSAgICBwcmludGYoIiAtZCAgZHJpdmUgbnVtYmVyIHRvIHNldCAoMCwgMSwgLi4uKVxuIik7CisgCSAgICBwcmludGYoIiAtciAgc2V0IFNBRi1URSBzdGF0dXMgdG8gcmVhZHlcbiIpOworQEAgLTEyNzMsNyArMTI3Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgIGV4aXQoMSk7IAorIAl9CisgICAgfQorLSAgIGlmICghYmFja2dyb3VuZCkgcHJpbnRmKG91dHB1dDIpOyAgLypwcm9nIGhlYWRlciovCisrICAgaWYgKCFiYWNrZ3JvdW5kKSBwcmludGYoIiVzIiwgb3V0cHV0Mik7ICAvKnByb2cgaGVhZGVyKi8KKyAKKyAgICBpZiAoc2V0dmFsICE9IDAgJiYgZHJpdmVudW0gPT0gLTEpIGRyaXZlbnVtID0gMDsgIC8qZGVmYXVsdCB0byBmaXJzdCBkcml2ZSovCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzXzEuNi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29sc18xLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBjMzZlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzXzEuNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBTQ1NpIHRvb2xzIHRvIHNlcnZpY2UgbWFpbnRhaW4gZGlzayBzdG9yYWdlIGRldmljZXMiCi1ERVNDUklQVElPTiA9ICJzY3NpcmFzdG9vbHMgd2VyZSBkZXNpZ25lZCB0byBhZGQgdG8gdGhlIFNlcnZpY2VhYmlsaXR5IG9mIFwKLSAgICAgICAgICAgICAgIFNDU0kgZGV2aWNlcyB1bmRlciBMaW51eCBzbyB0aGF0IHRoZSBzeXN0ZW0gZG9lcyBub3QgaGF2ZSBcCi0gICAgICAgICAgICAgICB0byBiZSByZWJvb3RlZCBvciB0YWtlbiBvdXQgb2Ygc2VydmljZSB0byBwZXJmb3JtIGNvbW1vbiBcCi0gICAgICAgICAgICAgICBtYWludGVuYW5jZSBvciBzZXJ2aWNlIGZ1bmN0aW9ucy4gSXQgaGFuZGxlcyBTQ1NJLCBcCi0gICAgICAgICAgICAgICBMaW51eCBTVyBSQUlELCBTQVMsIFNBVEEsIGFuZCBVU0IgZGV2aWNlcyB2aWEgU0NTSSBlbXVsYXRpb24uIgotSE9NRVBBR0UgPSAiaHR0cDovL3Njc2lyYXN0b29scy5zb3VyY2Vmb3JnZS5uZXQvIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ODdlYTEwODQ3OGQyNjE1MmFlNDZlYjI5ZDlkMTU0NSIKLQotREVQRU5EUyArPSAiZ3JvZmYtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29scy0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQ3NzUxMTFiNjJlMmRmYzE5NjBhNzIyZjVmZGEyMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhkMmM2YzliMDRhMmM1OTRlNTI4OTI3Yjk1MDc1NGY5NGMwNTIyNzE4ZDE3Yzc4ZTY1ODliYTc3ODMzOWJmOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQKLQotIyBtZGFkbSBNYWtlZmlsZSBoYXMgQ0Mgc2V0IHRvIGdjYywgaGVuY2Ugb3ZlcnJpZGUgQ0MgdG8gJHtDQ30KLUVYVFJBX09FTUFLRSArPSAiQ0M9JyR7Q0N9JyIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1kaXNrbW9uICR7UE59LXJhaWRtb24iCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tZGlza21vbiA9ICJzZ2Rpc2siCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1kaXNrbW9uID0gImRlZmF1bHRzIDgwIDIwIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXJhaWRtb24gPSAic2dyYWlkIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tcmFpZG1vbiA9ICJkZWZhdWx0cyA4MCAyMCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWRpc2ttb24gJHtQTn0tZGlza21vbi1kYmciCi1QQUNLQUdFUyA9KyAiJHtQTn0tcmFpZG1vbiAke1BOfS1yYWlkbW9uLWRiZyIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIvdXNyL3NoYXJlL3Njc2lyYXN0b29scy8uZGVidWciCi0KLUZJTEVTXyR7UE59LWRpc2ttb24gPSAiJHtzYmluZGlyfS9zZ2Rpc2ttb24gJHtzeXNjb25mZGlyfS9pbml0LmQvc2dkaXNrIgotRklMRVNfJHtQTn0tZGlza21vbi1kYmcgPSAiJHtzYmluZGlyfS8uZGVidWcvc2dkaXNrbW9uIgotCi1GSUxFU18ke1BOfS1yYWlkbW9uID0gIiR7c2JpbmRpcn0vc2dyYWlkbW9uICR7c3lzY29uZmRpcn0vaW5pdC5kL3NncmFpZCIKLUZJTEVTXyR7UE59LXJhaWRtb24tZGJnID0gIiR7c2JpbmRpcn0vLmRlYnVnL3NncmFpZG1vbiIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCi1SREVQRU5EU18ke1BOfS1kaXNrbW9uICs9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59LXJhaWRtb24gKz0gIiR7UE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29sc18xLjYuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Njc2lyYXN0b29scy9zY3NpcmFzdG9vbHNfMS42LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIwMmQxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Njc2lyYXN0b29scy9zY3NpcmFzdG9vbHNfMS42LjYuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJMaW51eCBTQ1NpIHRvb2xzIHRvIHNlcnZpY2UgbWFpbnRhaW4gZGlzayBzdG9yYWdlIGRldmljZXMiCitERVNDUklQVElPTiA9ICJzY3NpcmFzdG9vbHMgd2VyZSBkZXNpZ25lZCB0byBhZGQgdG8gdGhlIFNlcnZpY2VhYmlsaXR5IG9mIFwKKyAgICAgICAgICAgICAgIFNDU0kgZGV2aWNlcyB1bmRlciBMaW51eCBzbyB0aGF0IHRoZSBzeXN0ZW0gZG9lcyBub3QgaGF2ZSBcCisgICAgICAgICAgICAgICB0byBiZSByZWJvb3RlZCBvciB0YWtlbiBvdXQgb2Ygc2VydmljZSB0byBwZXJmb3JtIGNvbW1vbiBcCisgICAgICAgICAgICAgICBtYWludGVuYW5jZSBvciBzZXJ2aWNlIGZ1bmN0aW9ucy4gSXQgaGFuZGxlcyBTQ1NJLCBcCisgICAgICAgICAgICAgICBMaW51eCBTVyBSQUlELCBTQVMsIFNBVEEsIGFuZCBVU0IgZGV2aWNlcyB2aWEgU0NTSSBlbXVsYXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3Njc2lyYXN0b29scy5zb3VyY2Vmb3JnZS5uZXQvIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ODdlYTEwODQ3OGQyNjE1MmFlNDZlYjI5ZDlkMTU0NSIKKworREVQRU5EUyArPSAiZ3JvZmYtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29scy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbWRhZG0ucGF0Y2g7YXBwbHk9bm8gXAorICAgICAgICAgICBmaWxlOi8vcHJpbnQtZm9ybWF0LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MjcxYTYxYjJjZTQwYWFmMzNlZjYxNzc1MTQ4Y2RhMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlN2I5OTdlNzVkZWNiMDZhNjUwYzQyYzM1Y2Q2M2QwYzk0YzM0ZTM5Y2YxMzNjNzIzMzM3YjBlZWFiYmZkZjZhIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZAorCisjIG1kYWRtIE1ha2VmaWxlIGhhcyBDQyBzZXQgdG8gZ2NjLCBoZW5jZSBvdmVycmlkZSBDQyB0byAke0NDfQorRVhUUkFfT0VNQUtFICs9ICJDQz0nJHtDQ30nIgorCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJb2VfcnVubWFrZSAtQyBtZGFkbS5kIG1kYWRtLTEuMy4wCisJcGF0Y2ggLXAwIDwgJHtXT1JLRElSfS9tZGFkbS5wYXRjaAorfQorSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1kaXNrbW9uICR7UE59LXJhaWRtb24iCitJTklUU0NSSVBUX05BTUVfJHtQTn0tZGlza21vbiA9ICJzZ2Rpc2siCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1kaXNrbW9uID0gImRlZmF1bHRzIDgwIDIwIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXJhaWRtb24gPSAic2dyYWlkIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tcmFpZG1vbiA9ICJkZWZhdWx0cyA4MCAyMCIKKworUEFDS0FHRVMgPSsgIiR7UE59LWRpc2ttb24gJHtQTn0tZGlza21vbi1kYmciCitQQUNLQUdFUyA9KyAiJHtQTn0tcmFpZG1vbiAke1BOfS1yYWlkbW9uLWRiZyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIvdXNyL3NoYXJlL3Njc2lyYXN0b29scy8uZGVidWciCisKK0ZJTEVTXyR7UE59LWRpc2ttb24gPSAiJHtzYmluZGlyfS9zZ2Rpc2ttb24gJHtzeXNjb25mZGlyfS9pbml0LmQvc2dkaXNrIgorRklMRVNfJHtQTn0tZGlza21vbi1kYmcgPSAiJHtzYmluZGlyfS8uZGVidWcvc2dkaXNrbW9uIgorCitGSUxFU18ke1BOfS1yYWlkbW9uID0gIiR7c2JpbmRpcn0vc2dyYWlkbW9uICR7c3lzY29uZmRpcn0vaW5pdC5kL3NncmFpZCIKK0ZJTEVTXyR7UE59LXJhaWRtb24tZGJnID0gIiR7c2JpbmRpcn0vLmRlYnVnL3NncmFpZG1vbiIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCitSREVQRU5EU18ke1BOfS1kaXNrbW9uICs9ICIke1BOfSIKK1JERVBFTkRTXyR7UE59LXJhaWRtb24gKz0gIiR7UE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2dwaW8vc2dwaW9fMS4yLjAuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zZ3Bpby9zZ3Bpb18xLjIuMC4xMC5iYgppbmRleCBlZTdiY2RhLi42M2U4ZDM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zZ3Bpby9zZ3Bpb18xLjIuMC4xMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zZ3Bpby9zZ3Bpb18xLjIuMC4xMC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiU0dQSU8gY2FwdGl2ZSBiYWNrcGxhbmUgdG9vbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vbHZtMi93aWtpL0RNUkFJRF9FdmVudGluZyIKIERFU0NSSVBUSU9OID0gIkludGVsIFNHUElPIGVuY2xvc3VyZSBtYW5hZ2VtZW50IHV0aWxpdHkiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzLyR7QlBOfS8ke0JQTn0tMS4yLTAuMTAtc3JjLnRhci5nei9hNDE3YmY2OGRhNGU5YmQ3OWE0NjY0YzExZDdkZWJkMS8ke0JQTn0tMS4yLTAuMTAtc3JjLnRhci5neiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zb2NrZXRjYW4vY2FuLXV0aWxzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4tdXRpbHNfZ2l0LmJiCmluZGV4IDkzMWUzMzIuLmEyZDYyYzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4tdXRpbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4tdXRpbHNfZ2l0LmJiCkBAIC02LDcgKzYsNyBAQAogREVQRU5EUyA9ICJsaWJzb2NrZXRjYW4iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1jYW4vJHtCUE59LmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPW1hc3RlciIKLVNSQ1JFViA9ICI2N2EyYmRjZDMzNmU2YmVjZmE1Nzg0NzQyZTE4Yzg4ZGJlZGRjOTczIgorU1JDUkVWID0gIjRjOGZiMDVjYjRkNmRkY2Q2NzI5OTAwOGRiNTRhZjQyM2Y4NmZkMDUiCiAKIFBWID0gIjAuMCtnaXRyJHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N1YnN1cmZhY2Uvc3Vic3VyZmFjZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zdWJzdXJmYWNlL3N1YnN1cmZhY2VfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGFkYWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N1YnN1cmZhY2Uvc3Vic3VyZmFjZV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlN1YnN1cmZhY2UgaXMgYW4gb3BlbiBzb3VyY2UgZGl2ZSBsb2cgcHJvZ3JhbSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLURFUEVORFMgPSAibGliZGl2ZWNvbXB1dGVyIGd0aysgbGlieG1sMiBnbGliLTIuMCBnY29uZiIKLQotUE5CTEFDS0xJU1Rbc3Vic3VyZmFjZV0gPz0gIk5lZWRzIHRvIGJlIHVwZ3JhZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbmV3IGxpYmRpdmVjb21wdXRlciAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotaW5oZXJpdCBndGstaWNvbi1jYWNoZSBjbWFrZQotCi1pbmhlcml0IGdpdHBrZ3YKLVBLR1YgPSAiJHtHSVRQS0dWVEFHfSIKLVBWID0gIjQuMiIKLQotU1JDUkVWID0gImY2MWVlMjBiYTM1NmVjZmM0YzViMjQ3ZjU0OGY1MmQ1ODgxNzljOTQiCi1TUkNfVVJJID0gImdpdDovL3N1YnN1cmZhY2UuaG9obmRlbC5vcmcvc3Vic3VyZmFjZS5naXQiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci9zY2FsYWJsZS9hcHBzL3N1YnN1cmZhY2Uuc3ZnIgotUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWlzbzg4NTktMTUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcGN1dGlscy90aXBjdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlsc19naXQuYmIKaW5kZXggYjcxNTdiNC4uNzIwYWEzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlsc19naXQuYmIKQEAgLTE3LDYgKzE3LDggQEAKIAogREVQRU5EUyArPSAibGliZGFlbW9uIgogCitSREVQRU5EU18ke1BOfSA9ICJpcHJvdXRlMi10aXBjIgorCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS9maWxlcy9hZHMxeDE1LWZpeGVkLWNhc2UtbG9naWMtaW4tZ2V0VGhyZXNoLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL2ZpbGVzL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYxN2QxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS9maWxlcy9hZHMxeDE1LWZpeGVkLWNhc2UtbG9naWMtaW4tZ2V0VGhyZXNoLWZ1bmN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gYzY0ZDA0ZDA4NGY0N2I0Y2IzZTFjZGVlNmU5NjM0OGZjYzZhNzU2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1paGFpIFR1ZG9yIFBhbnUgPG1paGFpLnR1ZG9yLnBhbnVAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAxNToxNDowOSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMV0gYWRzMXgxNTogZml4ZWQgY2FzZSBsb2dpYyBpbiBnZXRUaHJlc2goKSBmdW5jdGlvbgorCitTaWduZWQtb2ZmLWJ5OiBNaWhhaSBUdWRvciBQYW51IDxtaWhhaS50dWRvci5wYW51QGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydGVkIFtjNjRkMDRkMDg0ZjQ3YjRjYjNlMWNkZWU2ZTk2MzQ4ZmNjNmE3NTZlXQorCitTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+CisKKy0tLQorIHNyYy9hZHMxeDE1L2FkczF4MTUuY3h4IHwgNCArKy0tCisgc3JjL2FkczF4MTUvYWRzMXgxNS5ocHAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYWRzMXgxNS9hZHMxeDE1LmN4eCBiL3NyYy9hZHMxeDE1L2FkczF4MTUuY3h4CitpbmRleCAzNTc4MjcwOS4uNDc3MDFiMmEgMTAwNjQ0CistLS0gYS9zcmMvYWRzMXgxNS9hZHMxeDE1LmN4eAorKysrIGIvc3JjL2FkczF4MTUvYWRzMXgxNS5jeHgKK0BAIC0xMTYsNyArMTE2LDcgQEAgQURTMVgxNTo6c2V0Q29udGludW91cyhib29sIG1vZGUpeworIAorIGZsb2F0CisgQURTMVgxNTo6Z2V0VGhyZXNoKEFEU1RIUkVTSCByZWcpeworLSAgICAgaWYoIFRIUkVTSF9ISUdIICYmIFRIUkVTSF9MT1cpIHJldHVybiBnZXRMYXN0U2FtcGxlKHJlZyk7CisrICAgICBpZihyZWcgPT0gVEhSRVNIX0hJR0ggfHwgcmVnID09IFRIUkVTSF9MT1cpIHJldHVybiBnZXRMYXN0U2FtcGxlKHJlZyk7CisgICAgICBlbHNlIHJldHVybiAwLjA7CisgfQorIAorQEAgLTEzNyw3ICsxMzcsNyBAQCBBRFMxWDE1OjpzZXRUaHJlc2goQURTVEhSRVNIIHJlZywgZmxvYXQgdmFsdWUpeworICAgICAgY2FzZSAyOgorICAgICAgY2FzZSAzOgorICAgICAgICAgICBzZXRfdmFsdWUgPSB2YWx1ZSAvIGdldE11bHRpcGxpZXIoKTsKKy0gICAgICAgICBzZXRfdmFsdWUgPSBzZXRfdmFsdWUgPDwgbV9iaXRTaGlmdDsKKysgICAgICAgICAgc2V0X3ZhbHVlID0gc2V0X3ZhbHVlIDw8IG1fYml0U2hpZnQ7CisgICAgICAgICAgIGlmKGkyYy0+d3JpdGVXb3JkUmVnKHJlZywgc3dhcFdvcmQoc2V0X3ZhbHVlKSkgIT0gbXJhYTo6U1VDQ0VTUyl7CisgICAgICAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKHN0ZDo6c3RyaW5nKF9fRlVOQ1RJT05fXykgKyAiOiBJMmMud3JpdGUoKSBmYWlsZWQiKTsKKyAgICAgICAgICAgICByZXR1cm47CitkaWZmIC0tZ2l0IGEvc3JjL2FkczF4MTUvYWRzMXgxNS5ocHAgYi9zcmMvYWRzMXgxNS9hZHMxeDE1LmhwcAoraW5kZXggNzUyNDU3MmQuLmVmZDhjOGVjIDEwMDY0NAorLS0tIGEvc3JjL2FkczF4MTUvYWRzMXgxNS5ocHAKKysrKyBiL3NyYy9hZHMxeDE1L2FkczF4MTUuaHBwCitAQCAtMzkwLDcgKzM5MCw3IEBAIG5hbWVzcGFjZSB1cG0geworICAgICAgICAgICAgICAqIEBwYXJhbSByZWcgQURTVEhSRVMgZW51bSB2YWx1ZS4KKyAgICAgICAgICAgICAgKiBSZXR1cm5zIDAuMCB1bmxlc3MgVEhSRVNIX0hJR0ggb3IgVEhSRVNIX0xPVyByZXF1ZXN0ZWQuCisgICAgICAgICAgICAgICovCistICAgICAgICAgICAgZmxvYXQgZ2V0VGhyZXNoKEFEU1RIUkVTSCByZWcgPSBUSFJFU0hfTE9XKTsKKysgICAgICAgICAgICBmbG9hdCBnZXRUaHJlc2goQURTVEhSRVNIIHJlZyA9IFRIUkVTSF9ERUZBVUxUKTsKKyAKKyAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAgKiBTZXRzIHRocmVzaG9sZCBsZXZlbHMgb3IgY29uZmlndXJlcyBmb3IgY29udmVyc2lvbiByZWFkeQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODA2NWNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKQEAgLTAsMCArMSw0NSBAQAorU1VNTUFSWSA9ICJTZW5zb3IvQWN0dWF0b3IgcmVwb3NpdG9yeSBmb3IgTXJhYSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC1pb3QtZGV2a2l0L3VwbSIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NjQ5M2Q1NGU2NWJmYzEyYzc5ODNmZjJlODg0ZjM3ZiIKKworREVQRU5EUyA9ICJsaWJqcGVnLXR1cmJvIG1yYWEiCisKK1NSQ1JFViA9ICIxMDZiNmM3MDYyNjg1MjJhYjAxNjhhNGRkYjE5ZTg5Y2U4MzJlMDg0IgorUFYgPSAiMS4zLjAtZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL2ludGVsLWlvdC1kZXZraXQvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwIFwKKyAgICBmaWxlOi8vYWRzMXgxNS1maXhlZC1jYXNlLWxvZ2ljLWluLWdldFRocmVzaC1mdW5jdGlvbi5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgRGVwZW5kcyBvbiBtcmFhIHdoaWNoIG9ubHkgc3VwcG9ydHMgeDg2IGFuZCBBUk0gZm9yIG5vdworQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2Lip8YWFyY2g2NC4qfGFybS4qKS1saW51eCIKKworaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgY21ha2UKKworCisjIG92ZXJyaWRlIHRoaXMgaW4gbG9jYWwuY29uZiB0byBnZXQgbmVlZGVkIGJpbmRpbmdzLgorIyBCSU5ESU5HU19wbi11cG09InB5dGhvbiIKKyMgd2lsbCByZXN1bHQgaW4gb25seSB0aGUgcHl0aG9uIGJpbmRpbmdzIGJlaW5nIGJ1aWx0L3BhY2thZ2VkLgorQklORElOR1MgPz89ICJweXRob24gJHtAICdub2RlanMnIGlmIG9lLnR5cGVzLmJvb2xlYW4oZC5nZXRWYXIoJ0hBVkVfTk9ERUpTJykgb3IgJzAnKSBlbHNlICcnIH0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRVMnLCAnbm9kZS0ke1BOfScsICdub2RlanMnLCAnJywgZCl9IFwKKyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRVMnLCAnJHtQWVRIT05fUE59LSR7UE59JywgJ3B5dGhvbicsICcnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItREJVSUxEU1dJR1BZVEhPTj1PTiwgLURCVUlMRFNXSUdQWVRIT049T0ZGLCBzd2lnLW5hdGl2ZSAke1BZVEhPTl9QTn0sIgorUEFDS0FHRUNPTkZJR1tub2RlanNdID0gIi1EQlVJTERTV0lHTk9ERT1PTiwgLURCVUlMRFNXSUdOT0RFPU9GRiwgc3dpZy1uYXRpdmUgbm9kZWpzLW5hdGl2ZSwiCisKK0ZJTEVTXyR7UFlUSE9OX1BOfS0ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKK1JERVBFTkRTXyR7UFlUSE9OX1BOfS0ke1BOfSArPSAiJHtQWVRIT05fUE59IgorCitGSUxFU19ub2RlLSR7UE59ID0gIiR7cHJlZml4fS9saWIvbm9kZV9tb2R1bGVzLyIKK1JERVBFTkRTX25vZGUtJHtQTn0gKz0gIm5vZGVqcyIKKworIyMjIEluY2x1ZGUgZGVzaXJlZCBsYW5ndWFnZSBiaW5kaW5ncyAjIyMKK1BBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnQklORElOR1MnLCAnbm9kZWpzJywgJ25vZGUtJHtQTn0nLCAnJywgZCl9IgorUEFDS0FHRVMgPSsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCSU5ESU5HUycsICdweXRob24nLCAnJHtQWVRIT05fUE59LSR7UE59JywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL2Rpc2FibGVfdmxvY2tyYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL2Rpc2FibGVfdmxvY2tyYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTBkMDc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvZGlzYWJsZV92bG9ja3JjLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKword3JpdHRlbiBieTogSmVmZiBQb2xrIDxqZWZmLnBvbGtAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKK0luZGV4OiB2bG9jay0yLjIuMi9tYW4vdmxvY2suMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHZsb2NrLTIuMi4yLm9yaWcvbWFuL3Zsb2NrLjEJMjAxMC0wNy0yNiAxNDoxMjo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrKyB2bG9jay0yLjIuMi9tYW4vdmxvY2suMQkyMDEwLTA3LTI2IDE0OjEzOjA2LjAwMDAwMDAwMCAtMDQwMAorQEAgLTExMSwxMSArMTExLDYgQEAKKyB0byBhbiBpbnZhbGlkIHZhbHVlIG9yIDAgbm8gdGltZW91dCBpcyB1c2VkLiAgXGZCV2FybmluZ1xmUjogSWYgdGhpcyB2YWx1ZSBpcworIHRvbyBsb3csIHlvdSBtYXkgbm90IGJlIGFibGUgdG8gdW5sb2NrIHlvdXIgc2Vzc2lvbi4KKyAuUFAKKy0uU0ggRklMRVMKKy0uQiB+Ly52bG9ja3JjCistLklQCistVGhpcyBmaWxlIGlzIHJlYWQgYnkgXGZCdmxvY2tcZlIgb24gc3RhcnR1cCBpZiBpdCBleGlzdHMuICBBbGwgdGhlIHZhcmlhYmxlcworLW1lbnRpb25lZCBhYm92ZSBjYW4gYmUgc2V0IGhlcmUuCisgLlNIIFNFQ1VSSVRZCisgU2VlIHRoZSBTRUNVUklUWSBmaWxlIGluIHRoZSBcZkJ2bG9ja1xmUiBkaXN0cmlidXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgLlBQCitJbmRleDogdmxvY2stMi4yLjIvc3JjL3Zsb2NrLnNoCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdmxvY2stMi4yLjIub3JpZy9zcmMvdmxvY2suc2gJMjAxMC0wNy0yNiAxNDoxMjozMi4wMDAwMDAwMDAgLTA0MDAKKysrKyB2bG9jay0yLjIuMi9zcmMvdmxvY2suc2gJMjAxMC0wNy0yNiAxNDoxMzozMy4wMDAwMDAwMDAgLTA0MDAKK0BAIC0zNSwxMSArMzUsNiBAQAorIAorICR7VkxPQ0tfRU5URVJfUFJPTVBUfSIKKyAKKy0jIFJlYWQgdXNlciBzZXR0aW5ncy4KKy1pZiBbIC1yICIke0hPTUV9Ly52bG9ja3JjIiBdIDsgdGhlbgorLSAgLiAiJHtIT01FfS8udmxvY2tyYyIKKy1maQorLQorICMgIkNvbXBpbGUiIHRpbWUgdmFyaWFibGVzLgorIFZMT0NLX01BSU49IiVQUkVGSVglL3NiaW4vdmxvY2stbWFpbiIKKyBWTE9DS19WRVJTSU9OPSIlVkxPQ0tfVkVSU0lPTiUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9jay1ub190YWxseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrLW5vX3RhbGx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlOGE2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9jay1ub190YWxseS5wYXRjaApAQCAtMCwwICsxLDEwNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK3dyaXR0ZW4gYnk6IEplZmYgUG9sayA8amVmZi5wb2xrQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xMjYsNiArMTI2LDEwIEBAIGlmZXEgKCQoQVVUSF9NRVRIT0QpLHNoYWRvdykKKyB2bG9jay1tYWluIDogb3ZlcnJpZGUgTERMSUJTICs9ICQoQ1JZUFRfTElCKQorIGVuZGlmCisgCisraWZuZXEgKCQoRU5BQkxFX0ZBSUxfQ09VTlQpLHllcykKKyt2bG9jay1tYWluLm8gOiBvdmVycmlkZSBDRkxBR1MgKz0gLUROT19GQUlMX0NPVU5UCisrZW5kaWYKKysKKyBpZmVxICgkKEVOQUJMRV9QTFVHSU5TKSx5ZXMpCisgdmxvY2stbWFpbjogcGx1Z2lucy5vIHBsdWdpbi5vIG1vZHVsZS5vIHByb2Nlc3MubyBzY3JpcHQubyB0c29ydC5vIGxpc3QubworICMgLXJkeW5hbWljIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBhbGwgcGx1Z2luIGNhbiBhY2Nlc3MgdGhlIHN5bWJvbHMgZnJvbSBjb25zb2xlX3N3aXRjaC5vCistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTQ0LDYgKzQ0LDcgQEAgT3B0aW9uYWwgRmVhdHVyZXM6CisgICAtLWVuYWJsZS1zaGFkb3cgICAgICAgICBlbmFibGUgc2hhZG93IGF1dGhlbnRpY2F0aW9uIFtkaXNhYmxlZF0KKyAgIC0tZW5hYmxlLXJvb3QtcGFzc3dvcmQgIGVuYWJsZSB1bmxvZ2dpbmcgd2l0aCByb290IHBhc3N3b3JkIFtlbmFibGVkXQorICAgLS1lbmFibGUtZGVidWcgICAgICAgICAgZW5hYmxlIGRlYnVnZ2luZworKyAgLS1lbmFibGUtZmFpbC1jb3VudCAgICAgZW5hYmxlIGZhaWxlZCBsb2dpbiBhdHRlbXB0IHN1bW1hcnkgW2VuYWJsZWRdCisgCisgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uOgorICAgLS13aXRoLXNjcmlwdHM9U0NSSVBUUyAgZW5hYmxlIHRoZSBuYW1lZCBzY3JpcHRzIFtdCitAQCAtNzgsNiArNzksOSBAQCBlbmFibGVfZmVhdHVyZSgpIHsKKyAgICAgcm9vdC1wYXNzd29yZCkKKyAgICAgICBFTkFCTEVfUk9PVF9QQVNTV09SRD0iJDIiCisgICAgIDs7CisrICAgIGZhaWwtY291bnQpCisrICAgICAgRU5BQkxFX0ZBSUxfQ09VTlQ9IiQyIgorKyAgICA7OworICAgICBwYW18c2hhZG93KQorICAgICAgIGlmIFsgIiQyIiA9ICJ5ZXMiIF0gOyB0aGVuCisgICAgICAgICBpZiBbIC1uICIkYXV0aF9tZXRob2QiIF0gJiYgWyAiJGF1dGhfbWV0aG9kIiAhPSAiJDEiIF0gOyB0aGVuCitAQCAtMjMyLDYgKzIzMiw3IEBAIHNldF9kZWZhdWx0cygpIHsKKyAgIEFVVEhfTUVUSE9EPSJwYW0iCisgICBFTkFCTEVfUk9PVF9QQVNTV09SRD0ieWVzIgorICAgRU5BQkxFX1BMVUdJTlM9InllcyIKKysgIEVOQUJMRV9GQUlMX0NPVU5UPSJ5ZXMiCisgICBTQ1JJUFRTPSIiCisgCisgICBWTE9DS19HUk9VUD0idmxvY2siCitAQCAtMzU2LDEwICszNTYsMTQgQEAgRU5BQkxFX1BMVUdJTlMgPSAke0VOQUJMRV9QTFVHSU5TfQorICMgd2hpY2ggcGx1Z2lucyBzaG91bGQgYmUgYnVpbGQKKyBNT0RVTEVTID0gJHtNT0RVTEVTfQorICMgd2hpY2ggc2NyaXB0cyBzaG91bGQgYmUgaW5zdGFsbGVkCisgU0NSSVBUUyA9ICR7U0NSSVBUU30KKyAKKysjIGRpc3BsYXkgYSBzdW1tYXJ5IG9mIGZhaWxlZCBhdXRoZW50aWNhdGlvbiBhdHRlbXB0cyBhZnRlciBzdWNjZXNzZnVsbHkKKysjIHVubG9ja2luZz8KKytFTkFCTEVfRkFJTF9DT1VOVCA9ICR7RU5BQkxFX0ZBSUxfQ09VTlR9CisrCisgIyByb290J3MgZ3JvdXAKKyBST09UX0dST1VQID0gJHtST09UX0dST1VQfQorIAorICMgZ3JvdXAgZm9yIHByaXZpbGVnZWQgcGx1Z2lucworIFZMT0NLX0dST1VQID0gJHtWTE9DS19HUk9VUH0KKy0tLSBhL3NyYy92bG9jay1tYWluLmMKKysrKyBiL3NyYy92bG9jay1tYWluLmMKK0BAIC0xMTEsNyArMTExLDkgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV90ZXJtaW5hbCh2b2lkKQorICAgKHZvaWQpIHRjc2V0YXR0cihTVERJTl9GSUxFTk8sIFRDU0FOT1csICZ0ZXJtKTsKKyB9CisgCisrI2lmZGVmIEVOQUJMRV9GQUlMX0NPVU5UCisgc3RhdGljIGludCBhdXRoX3RyaWVzOworKyNlbmRpZiAvKiBFTkFCTEVfRkFJTF9DT1VOVCAqLworIAorIHN0YXRpYyB2b2lkIGF1dGhfbG9vcChjb25zdCBjaGFyICp1c2VybmFtZSkKKyB7CitAQCAtMTgxLDcgKzE4Myw5IEBAIHN0YXRpYyB2b2lkIGF1dGhfbG9vcChjb25zdCBjaGFyICp1c2VybmEKKyAgICAgfQorICNlbmRpZgorIAorKyNpZmRlZiBFTkFCTEVfRkFJTF9DT1VOVAorICAgICBhdXRoX3RyaWVzKys7CisrI2VuZGlmIC8qIEVOQUJMRV9GQUlMX0NPVU5UICovCisgICB9CisgCisgICAvKiBGcmVlIHRpbWVvdXRzIG1lbW9yeS4gKi8KK0BAIC0xODksMTEgKzE5MywxMyBAQCBzdGF0aWMgdm9pZCBhdXRoX2xvb3AoY29uc3QgY2hhciAqdXNlcm5hCisgICBmcmVlKHByb21wdF90aW1lb3V0KTsKKyB9CisgCisrI2lmZGVmIEVOQUJMRV9GQUlMX0NPVU5UCisgdm9pZCBkaXNwbGF5X2F1dGhfdHJpZXModm9pZCkKKyB7CisgICBpZiAoYXV0aF90cmllcyA+IDApCisgICAgIGZwcmludGYoc3RkZXJyLCAiJWQgZmFpbGVkIGF1dGhlbnRpY2F0aW9uICVzLlxuIiwgYXV0aF90cmllcywgYXV0aF90cmllcyA+IDEgPyAidHJpZXMiIDogInRyeSIpOworIH0KKysjZW5kaWYgLyogRU5BQkxFX0ZBSUxfQ09VTlQgKi8KKyAKKyAjaWZkZWYgVVNFX1BMVUdJTlMKKyBzdGF0aWMgdm9pZCBjYWxsX2VuZF9ob29rKHZvaWQpCitAQCAtMjE2LDcgKzIyMiw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10pCisgICBpZiAodXNlcm5hbWUgPT0gTlVMTCkKKyAgICAgZmF0YWxfcGVycm9yKCJ2bG9jazogY291bGQgbm90IGdldCB1c2VybmFtZSIpOworIAorKyNpZmRlZiBFTkFCTEVfRkFJTF9DT1VOVAorICAgZW5zdXJlX2F0ZXhpdChkaXNwbGF5X2F1dGhfdHJpZXMpOworKyNlbmRpZiAvKiBFTkFCTEVfRkFJTF9DT1VOVCAqLworIAorICNpZmRlZiBVU0VfUExVR0lOUworICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyBpKyspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9ja19wYW0gYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9ja19wYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxOTY4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrX3BhbQpAQCAtMCwwICsxLDMgQEAKKyMgVXNlIHRoZSBkZWZhdWx0IGF1dGggYW5kIGFjY291bnQgcG9saWNpZXMgZm9yIHZsb2NrCithdXRoICAgICAgIGluY2x1ZGUgICAgICBjb21tb24tYXV0aAorYWNjb3VudCAgICBpbmNsdWRlICAgICAgY29tbW9uLWFjY291bnQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrX3BhbV90YWxseTJfcmVzZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9ja19wYW1fdGFsbHkyX3Jlc2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZTBhYmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9ja19wYW1fdGFsbHkyX3Jlc2V0LnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCit3cml0dGVuIGJ5OiBKZWZmIFBvbGsgPGplZmYucG9sa0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IHZsb2NrLTIuMi4yL3NyYy9hdXRoLXBhbS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdmxvY2stMi4yLjIub3JpZy9zcmMvYXV0aC1wYW0uYwkyMDEwLTA2LTE0IDE0OjM4OjUxLjAwMDAwMDAwMCAtMDQwMAorKysrIHZsb2NrLTIuMi4yL3NyYy9hdXRoLXBhbS5jCTIwMTAtMDYtMTQgMTQ6Mzk6MTIuMDAwMDAwMDAwIC0wNDAwCitAQCAtMTQ4LDYgKzE0OCw5IEBACisgCisgICBpZiAocGFtX3N0YXR1cyAhPSBQQU1fU1VDQ0VTUykgeworICAgICBmcHJpbnRmKHN0ZGVyciwgInZsb2NrOiAlc1xuIiwgcGFtX3N0cmVycm9yKHBhbWgsIHBhbV9zdGF0dXMpKTsKKysgIH0gZWxzZSB7CisrICAgIHBhbV9zdGF0dXMgPSBwYW1fYWNjdF9tZ210KHBhbWgsIDApOworKyAgICBpZiAocGFtX3N0YXR1cyA9PSBQQU1fU1VDQ0VTUykgcGFtX3NldGNyZWQocGFtaCwgUEFNX1JFSU5JVElBTElaRV9DUkVEKTsKKyAgIH0KKyAKKyBlbmQ6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9ja18yLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrXzIuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OWQzYTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9ja18yLjIuMy5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIlZpcnR1YWwgQ29uc29sZSBsb2NrIHByb2dyYW0iCitERVNDUklQVElPTiA9ICJTb21ldGltZXMgYSBtYWxpY2lvdXMgbG9jYWwgdXNlciBjb3VsZCBjYXVzZSBtb3JlIHByb2JsZW1zIFwKKyAgdGhhbiBhIHNvcGhpc3RpY2F0ZWQgcmVtb3RlIG9uZS4gdmxvY2sgaXMgYSBwcm9ncmFtIHRoYXQgbG9ja3Mgb25lIG9yIG1vcmUgXAorICBzZXNzaW9ucyBvbiB0aGUgTGludXggY29uc29sZSB0byBwcmV2ZW50IGF0dGFja2VycyBmcm9tIGdhaW5pbmcgcGh5c2ljYWwgXAorICBhY2Nlc3MgdG8gdGhlIG1hY2hpbmUuIFwKKyAgIgorU0VDVElPTiA9ICJ1dGlscyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWExN2NiMGE4NzNkMjUyNDQwYWNmZGY5YjNkMGU3ZmJmIgorCitTUkNfVVJJID0gIiR7R0VOVE9PX01JUlJPUn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICBmaWxlOi8vZGlzYWJsZV92bG9ja3JjLnBhdGNoIFwKKyAgICAgICBmaWxlOi8vdmxvY2tfcGFtX3RhbGx5Ml9yZXNldC5wYXRjaCBcCisgICAgICAgZmlsZTovL3Zsb2NrLW5vX3RhbGx5LnBhdGNoIFwKKyAgICAgICBmaWxlOi8vdmxvY2tfcGFtIFwKKyAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNzgxNzVjNzY5MmE4ZjI4OGU2NWZkNGRiZjhhMzhlYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NWFhNWFlZDFhZTQ5MzUxMzc4YTBiZDUyN2EwMTMwNzhmMGY5NjkzNzJhNjMxNjRiMTk0NDE3NGFlMWE1ZTM5IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLWFsdGVybmF0aXZlcworCisjIGF1dGhlbnRpZmljYXRpb24gbWV0aG9kOiBlaXRoZXIgcGFtIG9yIHNoYWRvdworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJ3NoYWRvdycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS1wYW0sLGxpYnBhbSwiCitQQUNLQUdFQ09ORklHW3NoYWRvd10gPSAiLS1lbmFibGUtc2hhZG93LCxzaGFkb3csIgorCitDRkxBR1MgKz0gIi1XYWxsIC1XIC1wZWRhbnRpYyAtc3RkPWdudTk5IgorCitkb19jb25maWd1cmUgKCkgeworICAgICMgVGhlIGNvbmZpZ3VyZSB0cmllcyB0byB1c2UgJ2dldGVudCcgdG8gZ2V0IHRoZSBncm91cAorICAgICMgaW5mbyBmcm9tIHRoZSBob3N0LCB3aGljaCBzaG91bGQgYmUgYXZvaWRlZC4KKyAgICBzZWQgLWkgJ3MvXChST09UX0dST1VQPVwpLiovXDEicm9vdCIvJyAke0NPTkZJR1VSRV9TQ1JJUFR9CisKKyAgICAke0NPTkZJR1VSRV9TQ1JJUFR9IFwKKyAgICAgICAgVkxPQ0tfR1JPVVA9cm9vdCBcCisgICAgICAgIFJPT1RfR1JPVVA9cm9vdCBcCisgICAgICAgIENDPSIke0NDfSIgXAorICAgICAgICBDRkxBR1M9IiR7Q0ZMQUdTfSIgXAorICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9IiBcCisgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgICAgIC0tbWFuZGlyPSR7bWFuZGlyfSBcCisgICAgICAgIC0td2l0aC1tb2R1bGVzPSJhbGwuc28gbmV3LnNvIG5vc3lzcnEuc28gdHR5Ymxhbmsuc28gdmVzYWJsYW5rLnNvIiBcCisgICAgICAgIC0tZGlzYWJsZS1yb290LXBhc3N3b3JkIC0tZW5hYmxlLWRlYnVnIC0tZGlzYWJsZS1mYWlsLWNvdW50IFwKKyAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaWYgWyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd5ZXMnLCAnJywgZCl9ID0geWVzIF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZAorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92bG9ja19wYW0gJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvdmxvY2sKKyAgICBmaQorfQorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ2bG9jayIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Zsb2NrXSA9ICIke2JpbmRpcn0vdmxvY2siCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92b2x1bWVfa2V5L2ZpbGVzLzAwMDEtZXhwbGljaXRseS1zdXBwb3J0LXB5dGhvbjMtYnktcGtnLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvZmlsZXMvMDAwMS1leHBsaWNpdGx5LXN1cHBvcnQtcHl0aG9uMy1ieS1wa2ctY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZWRiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92b2x1bWVfa2V5L2ZpbGVzLzAwMDEtZXhwbGljaXRseS1zdXBwb3J0LXB5dGhvbjMtYnktcGtnLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDE4NDE1YzBiNGM2ZTUwZWQ5Yjk5ZGZkYWU4ZDIxMDU5MGQwYWI3MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI4IEFwciAyMDE3IDA0OjUwOjMwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGV4cGxpY2l0bHkgc3VwcG9ydCBweXRob24zIGJ5IHBrZy1jb25maWcKKworVGhlIFBZVEhPTl9DUFBGTEFHUyBhbmQgLWxweXRob24kKFBZVEhPTl9WRVJTSU9OKSBpcyBoYXJkY29kZWQsCit1c2UgcGtnLWNvbmZpZyB0byByZXBsYWNlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd3ItaW5zdGFsbGVyIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5hbSAgfCA1ICsrLS0tCisgY29uZmlndXJlLmFjIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggNDU2OWJiZi4uN2E4ZGFmNCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTIwLDcgKzIwLDYgQEAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyBBTV9DUFBGTEFHUyA9ICQoYmxraWRfQ0ZMQUdTKSAkKGdsaWJfQ0ZMQUdTKSAkKEdQR01FX0NGTEFHUykgXAorIAkkKGxpYmNyeXB0c2V0dXBfQ0ZMQUdTKSAkKG5zc19DRkxBR1MpCisgTE9DQUxFRElSX0NQUEZMQUdTID0gLURMT0NBTEVESVI9JyIkKGxvY2FsZWRpcikiJworLVBZVEhPTl9DUFBGTEFHUyA9IC1JL3Vzci9pbmNsdWRlL3B5dGhvbiQoUFlUSE9OX1ZFUlNJT04pCisgCisgIyMgVGFyZ2V0cworIFNVQkRJUlMgPSBwbworQEAgLTYzLDkgKzYyLDkgQEAgbGliX2xpYnZvbHVtZV9rZXlfbGFfTElCQUREID0gJChibGtpZF9MSUJTKSAkKGdsaWJfTElCUykgJChHUEdNRV9MSUJTKSBcCisgCSQoTFRMSUJJTlRMKSAkKGxpYmNyeXB0c2V0dXBfTElCUykgJChuc3NfTElCUykKKyAKKyBweXRob25fX3ZvbHVtZV9rZXlfbGFfU09VUkNFUyA9IHB5dGhvbi92b2x1bWVfa2V5X3dyYXAuYworLXB5dGhvbl9fdm9sdW1lX2tleV9sYV9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpICQoUFlUSE9OX0NQUEZMQUdTKQorK3B5dGhvbl9fdm9sdW1lX2tleV9sYV9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpICQocHl0aG9uM19DRkxBR1MpCisgcHl0aG9uX192b2x1bWVfa2V5X2xhX0xERkxBR1MgPSAtbW9kdWxlIC1hdm9pZC12ZXJzaW9uICQoZ2xpYl9MSUJTKQorLXB5dGhvbl9fdm9sdW1lX2tleV9sYV9MSUJBREQgPSBsaWIvbGlidm9sdW1lX2tleS5sYSAtbHB5dGhvbiQoUFlUSE9OX1ZFUlNJT04pIFwKKytweXRob25fX3ZvbHVtZV9rZXlfbGFfTElCQUREID0gbGliL2xpYnZvbHVtZV9rZXkubGEgJChweXRob24zX0xJQlMpIFwKKyAJJChnbGliX0xJQlMpICQobnNzX0xJQlMpCisgCisgc3JjX3ZvbHVtZV9rZXlfU09VUkNFUyA9IHNyYy92b2x1bWVfa2V5LmMKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGZmMzVkZDAuLjA5MjhhNmMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI3LDYgKzI3LDggQEAgQU1fSU5JVF9BVVRPTUFLRShbbm8tZGlzdC1nemlwIGRpc3QteHogbm8tZGVmaW5lIHN1YmRpci1vYmplY3RzIC1XYWxsXSkKKyBBQ19QUk9HX0NDCisgQU1fUFJPR19DQ19DX08KKyBMVF9JTklUKFtkaXNhYmxlLXN0YXRpY10pCisrCisrUEtHX0NIRUNLX01PRFVMRVMocHl0aG9uMywgW3B5dGhvbjNdKQorIEFNX1BBVEhfUFlUSE9OCisgCisgZG5sIE5vdCBncGcyLCBpdCBjYW5ub3QgcmVjZWl2ZSBwYXNzcGhyYXNlcyBmcm9tIGdwZ21lCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvdm9sdW1lLWtleV8wLjMuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvdm9sdW1lLWtleV8wLjMuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWJmM2YyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdm9sdW1lX2tleS92b2x1bWUta2V5XzAuMy45LmJiCkBAIC0wLDAgKzEsMzQgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSB2b2x1bWVfa2V5IHByb2plY3QgcHJvdmlkZXMgYSBsaWJ2b2x1bWVfa2V5LCBhIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBcCitzdG9yYWdlIHZvbHVtZSBlbmNyeXB0aW9uIGtleXMgYW5kIHN0b3JpbmcgdGhlbSBzZXBhcmF0ZWx5IGZyb20gdm9sdW1lcywgYW5kIGFuIFwKK2Fzc29jaWF0ZWQgY29tbWFuZC1saW5lIHRvb2wsIG5hbWVkIHZvbHVtZV9rZXkuIgorTElDRU5TRSA9ICJHUEx2MiIKK1NFQ1RJT04gPSAiZGV2ZWwvbGliIgorCitIT01FUEFHRSA9ICJodHRwczovL3BhZ3VyZS5pby92b2x1bWVfa2V5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvdm9sdW1lX2tleS92b2x1bWVfa2V5LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4cGxpY2l0bHktc3VwcG9ydC1weXRob24zLWJ5LXBrZy1jb25maWcucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImEyZDE0OTMxMTc3YzY2MGUxZjNlYmJjZjVmNDdkOGUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1MGE1NGZlOWJmNTZhY2VjNjg1MGMxZTcxMzcxZDNlNDkxM2M5Y2ExZWYwY2RjM2E1MTdiNGI2OTEwNDEyYTYiCisKK1NSQ05BTUUgPSAidm9sdW1lX2tleSIKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIGdldHRleHQKKworREVQRU5EUyArPSAiIFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICBnbGliLTIuMCBcCisgICAgY3J5cHRzZXR1cCBcCisgICAgbnNzIFwKKyAgICBncGdtZSBcCisiCisKK1JERVBFTkRTX3B5dGhvbjMtJHtQTn0gKz0gIiR7UE59IgorCitQQUNLQUdFUyArPSAicHl0aG9uMy0ke1BOfSIKK0ZJTEVTX3B5dGhvbjMtJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvemxvZy96bG9nLzAwMDEtZXZlbnQuYy1DYXN0LXB0aHJlYWRfdC10by11bnNpZ25lZC1sb25nLWluc3RlYWQtb2YtdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3psb2cvemxvZy8wMDAxLWV2ZW50LmMtQ2FzdC1wdGhyZWFkX3QtdG8tdW5zaWduZWQtbG9uZy1pbnN0ZWFkLW9mLXUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFhOTg5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3psb2cvemxvZy8wMDAxLWV2ZW50LmMtQ2FzdC1wdGhyZWFkX3QtdG8tdW5zaWduZWQtbG9uZy1pbnN0ZWFkLW9mLXUucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBiOTdmNjJmZGYzYjc4ZWI1Y2ZjYjNhMWIxMmM2ZmQ2MmY3MzU3MTdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMDk6Mjk6MzMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZXZlbnQuYzogQ2FzdCBwdGhyZWFkX3QgdG8gdW5zaWduZWQgbG9uZyBpbnN0ZWFkIG9mIHVuc2lnbmVkCisgaW50CisKK09uIDY0Yml0IG1hY2hpbmVzIGl0IGVuZHMgdXAgaW4gZXJyb3JzCisKK2V2ZW50LmM6ODU6Njc6IGVycm9yOiBjYXN0IGZyb20gcG9pbnRlciB0byBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplIFstV2Vycm9yPXBvaW50ZXItdG8taW50LWNhc3RdCisgIGFfZXZlbnQtPnRpZF9oZXhfc3RyX2xlbiA9IHNwcmludGYoYV9ldmVudC0+dGlkX2hleF9zdHIsICIweCV4IiwgKHVuc2lnbmVkIGludClhX2V2ZW50LT50aWQpOworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2V2ZW50LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZXZlbnQuYyBiL3NyYy9ldmVudC5jCitpbmRleCA4Zjk4OGI1Li5jNjMyYzMzIDEwMDY0NAorLS0tIGEvc3JjL2V2ZW50LmMKKysrKyBiL3NyYy9ldmVudC5jCitAQCAtODIsNyArODIsNyBAQCB6bG9nX2V2ZW50X3QgKnpsb2dfZXZlbnRfbmV3KGludCB0aW1lX2NhY2hlX2NvdW50KQorIAlhX2V2ZW50LT50aWQgPSBwdGhyZWFkX3NlbGYoKTsKKyAKKyAJYV9ldmVudC0+dGlkX3N0cl9sZW4gPSBzcHJpbnRmKGFfZXZlbnQtPnRpZF9zdHIsICIlbHUiLCAodW5zaWduZWQgbG9uZylhX2V2ZW50LT50aWQpOworLQlhX2V2ZW50LT50aWRfaGV4X3N0cl9sZW4gPSBzcHJpbnRmKGFfZXZlbnQtPnRpZF9oZXhfc3RyLCAiMHgleCIsICh1bnNpZ25lZCBpbnQpYV9ldmVudC0+dGlkKTsKKysJYV9ldmVudC0+dGlkX2hleF9zdHJfbGVuID0gc3ByaW50ZihhX2V2ZW50LT50aWRfaGV4X3N0ciwgIjB4JWx1IiwgKHVuc2lnbmVkIGxvbmcpYV9ldmVudC0+dGlkKTsKKyAKKyAJLy96bG9nX2V2ZW50X3Byb2ZpbGUoYV9ldmVudCwgWkNfREVCVUcpOworIAlyZXR1cm4gYV9ldmVudDsKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3psb2cvemxvZ19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96bG9nL3psb2dfZ2l0LmJiCmluZGV4IDUxYzc0NmYuLjg2ZTZkMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3psb2cvemxvZ19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvemxvZy96bG9nX2dpdC5iYgpAQCAtNiw3ICs2LDkgQEAKIFBWID0gIjEuMi4xMitnaXQke1NSQ1BWfSIKIAogU1JDUkVWID0gIjEzOTA0ZGFiMjg3OGFhMjY1NGQwYzIwZmI4NjAwYTNkYzVmMmRkNjgiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vSGFyZHlTaW1wc29uL3psb2ciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vSGFyZHlTaW1wc29uL3psb2cgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ldmVudC5jLUNhc3QtcHRocmVhZF90LXRvLXVuc2lnbmVkLWxvbmctaW5zdGVhZC1vZi11LnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96cmFtL3pyYW1fMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenJhbS96cmFtXzAuMS5iYgppbmRleCBlMDdmNTcwLi5kZmQ3NWU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96cmFtL3pyYW1fMC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pyYW0venJhbV8wLjEuYmIKQEAgLTEsNiArMSw2IEBACiBTVU1NQVJZID0gIkxpbnV4IHpyYW0gY29tcHJlc3NlZCBpbi1tZW1vcnkgc3dhcCIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96c2gvenNoXzUuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWIyZDk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1TVU1NQVJZID0gIlVOSVggU2hlbGwgc2ltaWxhciB0byB0aGUgS29ybiBzaGVsbCIKLURFU0NSSVBUSU9OID0gIlpzaCBpcyBhIHNoZWxsIGRlc2lnbmVkIGZvciBpbnRlcmFjdGl2ZSB1c2UsIGFsdGhvdWdoIGl0IGlzIGFsc28gYSBcCi0gICAgICAgICAgICAgICBwb3dlcmZ1bCBzY3JpcHRpbmcgbGFuZ3VhZ2UuIE1hbnkgb2YgdGhlIHVzZWZ1bCBmZWF0dXJlcyBvZiBiYXNoLCBcCi0gICAgICAgICAgICAgICBrc2gsIGFuZCB0Y3NoIHdlcmUgaW5jb3Jwb3JhdGVkIGludG8genNoOyBtYW55IG9yaWdpbmFsIGZlYXR1cmVzIHdlcmUgYWRkZWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy56c2gub3JnIgotU0VDVElPTiA9ICJiYXNlL3NoZWxsIgotCi1MSUNFTlNFID0gInpzaCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWI3YmM4NTM4OTQ2NjRiZTQ1NWE5MjJkYjk4MDUyODhlIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgYmlzb24tbmF0aXZlIGxpYmNhcCBsaWJwY3JlIGdkYm0gZ3JvZmYtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjZmYjBlM2U1MmEwZjhkZTVjYTYzMTM4MzkxYjgxY2UwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzNWNmMTllNGE2YmEzOWZkMDNjNjM3MmI4YTg3NjBhNDkxY2MyZTJlNGFiYTNkMTUwMjNmZjI5MWMyODk0YjQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWJpbmRpcj0ke2Jhc2VfYmluZGlyfSBcCi0gICAgLS1lbmFibGUtZXRjZGlyPSR7c3lzY29uZmRpcn0gXAotICAgIC0tZW5hYmxlLWZuZGlyPSR7ZGF0YWRpcn0vJHtQTn0vJHtQVn0vZnVuY3Rpb25zIFwKLSAgICAtLWVuYWJsZS1zaXRlLWZuZGlyPSR7ZGF0YWRpcn0vJHtQTn0vc2l0ZS1mdW5jdGlvbnMgXAotICAgIC0td2l0aC10ZXJtLWxpYj0nbmN1cnNlc3cgbmN1cnNlcycgXAotICAgIC0td2l0aC10Y3NldHBncnAgXAotICAgIC0tZW5hYmxlLWNhcCBcCi0gICAgLS1lbmFibGUtbXVsdGlieXRlIFwKLSAgICAtLWRpc2FibGUtZ2RibSBcCi0gICAgLS1kaXNhYmxlLWR5bmFtaWMgXAotICAgIHpzaF9jdl9zaGFyZWRfZW52aXJvbj15ZXMgXAotIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAic2giCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2hdID0gIiR7YmFzZV9iaW5kaXJ9L3NoIgotQUxURVJOQVRJVkVfVEFSR0VUW3NoXSA9ICIke2Jhc2VfYmluZGlyfS8ke0JQTn0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLWV4cG9ydCBBVVRPSEVBREVSID0gInRydWUiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICR7U30KLSAgICBvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBybSAtZnIgJHtEfS91c3Ivc2hhcmUKLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICB0b3VjaCAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi0gICAgZ3JlcCAtcSAiYmluL3pzaCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvIC9iaW4venNoID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLSAgICBncmVwIC1xICJiaW4vc2giICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAvYmluL3NoID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KLQotRklMRVNfJHtQTn0tZGJnICs9ICJcCi0gICAgJHtsaWJkaXJ9LyR7UE59LyR7UFZ9LyR7UE59Ly5kZWJ1Zy8qLnNvIFwKLSAgICAke2xpYmRpcn0vJHtQTn0vJHtQVn0vJHtQTn0vZGIvLmRlYnVnLyouc28gXAotICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS8ke1BOfS9uZXQvLmRlYnVnLyouc28gXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenNoL3pzaF81LjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY1ZTM5MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4zLjEuYmIKQEAgLTAsMCArMSw2MSBAQAorU1VNTUFSWSA9ICJVTklYIFNoZWxsIHNpbWlsYXIgdG8gdGhlIEtvcm4gc2hlbGwiCitERVNDUklQVElPTiA9ICJac2ggaXMgYSBzaGVsbCBkZXNpZ25lZCBmb3IgaW50ZXJhY3RpdmUgdXNlLCBhbHRob3VnaCBpdCBpcyBhbHNvIGEgXAorICAgICAgICAgICAgICAgcG93ZXJmdWwgc2NyaXB0aW5nIGxhbmd1YWdlLiBNYW55IG9mIHRoZSB1c2VmdWwgZmVhdHVyZXMgb2YgYmFzaCwgXAorICAgICAgICAgICAgICAga3NoLCBhbmQgdGNzaCB3ZXJlIGluY29ycG9yYXRlZCBpbnRvIHpzaDsgbWFueSBvcmlnaW5hbCBmZWF0dXJlcyB3ZXJlIGFkZGVkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuenNoLm9yZyIKK1NFQ1RJT04gPSAiYmFzZS9zaGVsbCIKKworTElDRU5TRSA9ICJ6c2giCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1iN2JjODUzODk0NjY0YmU0NTVhOTIyZGI5ODA1Mjg4ZSIKKworREVQRU5EUyA9ICJuY3Vyc2VzIGJpc29uLW5hdGl2ZSBsaWJjYXAgbGlicGNyZSBnZGJtIGdyb2ZmLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTgzZmJjYTBjMjQxMGJmOTU0MmNlOGE2NTFjMjZjYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDk0YTU5MGZmM2M1NjJlY2YzODdkYTc4YWMzNTZkNmJlYTc5YjA1MGE5ZWY4MWUzZWNiOWY4ZWU1MTMwNDBlIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1iaW5kaXI9JHtiYXNlX2JpbmRpcn0gXAorICAgIC0tZW5hYmxlLWV0Y2Rpcj0ke3N5c2NvbmZkaXJ9IFwKKyAgICAtLWVuYWJsZS1mbmRpcj0ke2RhdGFkaXJ9LyR7UE59LyR7UFZ9L2Z1bmN0aW9ucyBcCisgICAgLS1lbmFibGUtc2l0ZS1mbmRpcj0ke2RhdGFkaXJ9LyR7UE59L3NpdGUtZnVuY3Rpb25zIFwKKyAgICAtLXdpdGgtdGVybS1saWI9J25jdXJzZXN3IG5jdXJzZXMnIFwKKyAgICAtLXdpdGgtdGNzZXRwZ3JwIFwKKyAgICAtLWVuYWJsZS1jYXAgXAorICAgIC0tZW5hYmxlLW11bHRpYnl0ZSBcCisgICAgLS1kaXNhYmxlLWdkYm0gXAorICAgIC0tZGlzYWJsZS1keW5hbWljIFwKKyAgICB6c2hfY3Zfc2hhcmVkX2Vudmlyb249eWVzIFwKKyIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInNoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NoXSA9ICIke2Jhc2VfYmluZGlyfS9zaCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vJHtCUE59IgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitleHBvcnQgQVVUT0hFQURFUiA9ICJ0cnVlIgorCitkb19jb25maWd1cmUgKCkgeworICAgIGdudS1jb25maWdpemUgLS1mb3JjZSAke1N9CisgICAgb2VfcnVuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgcm0gLWZyICR7RH0vdXNyL3NoYXJlCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgdG91Y2ggJEQke3N5c2NvbmZkaXJ9L3NoZWxscworICAgIGdyZXAgLXEgImJpbi96c2giICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAvYmluL3pzaCA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCisgICAgZ3JlcCAtcSAiYmluL3NoIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gL2Jpbi9zaCA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CisKK0ZJTEVTXyR7UE59LWRiZyArPSAiXAorICAgICR7bGliZGlyfS8ke1BOfS8ke1BWfS8ke1BOfS8uZGVidWcvKi5zbyBcCisgICAgJHtsaWJkaXJ9LyR7UE59LyR7UFZ9LyR7UE59L2RiLy5kZWJ1Zy8qLnNvIFwKKyAgICAke2xpYmRpcn0vJHtQTn0vJHtQVn0vJHtQTn0vbmV0Ly5kZWJ1Zy8qLnNvIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtY29tbW9uXzMuMTguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dub21lLWNvbW1vbi9nbm9tZS1jb21tb25fMy4xOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWNvbW1vbl8zLjE4LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dub21lLWNvbW1vbi9nbm9tZS1jb21tb25fMy4xOC4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtleHRyYS9maWxlcy9yZW1vdmUtdHV0b3JpYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtleHRyYS9maWxlcy9yZW1vdmUtdHV0b3JpYWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNGYzZjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RrZXh0cmEvZmlsZXMvcmVtb3ZlLXR1dG9yaWFsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1kaWZmIC0tZ2l0IGEvZG9jcy9NYWtlZmlsZS5hbSBiL2RvY3MvTWFrZWZpbGUuYW0KLWluZGV4IGY1Mzc1ZjUuLmMzMDZmMjMgMTAwNjQ0Ci0tLS0gYS9kb2NzL01ha2VmaWxlLmFtCi0rKysgYi9kb2NzL01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKLS1TVUJESVJTID0gcmVmZXJlbmNlIHR1dG9yaWFsCi0rU1VCRElSUyA9IHJlZmVyZW5jZQotIAotIEVYVFJBX0RJU1QgPSBcCi0gCUNPUFlJTkcgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RrZXh0cmEvZ3RrZXh0cmFfMy4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtleHRyYS9ndGtleHRyYV8zLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRiN2FhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtleHRyYS9ndGtleHRyYV8zLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiR3RrK0V4dHJhIGlzIGEgc2V0IG9mIGN1c3RvbSB3aWRnZXQgZm9yIHBsb3RzIGFuZCBpbWFnZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3RrZXh0cmEuc291cmNlZm9yZ2UubmV0LyIKLQotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZ3RrZXh0cmEvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS10dXRvcmlhbC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ODZjZWE5MzY2NjAyMGY4NWYxMDFlZDgzNDFiYWY0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2FiNmM1ZDZiNzkyZWI4MjhkMTdjZWMyYjljMWJhYmEyZWY1N2Y3ODlhMjkwNDY0YWZhYjgwYjUzOTY5ZTY1IgotCi1ERVBFTkRTID0gImd0aysiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotIyB8IC4vLmxpYnMvbGliZ3RrZXh0cmEteDExLTMuMC5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3JvdW5kaW50JwotUE5CTEFDS0xJU1RbZ3RrZXh0cmFdID89ICJCUk9LRU46IEZhaWxzIHRvIGJ1aWxkIHdpdGggZ2NjLTUgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtodG1sMi9maWxlcy8wMDAxLXRlc3RzLW1haW4uYy1maXgtYnVpbGQtd2l0aC1nbGliLTIuMzYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtodG1sMi9maWxlcy8wMDAxLXRlc3RzLW1haW4uYy1maXgtYnVpbGQtd2l0aC1nbGliLTIuMzYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZWIzOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RraHRtbDIvZmlsZXMvMDAwMS10ZXN0cy1tYWluLmMtZml4LWJ1aWxkLXdpdGgtZ2xpYi0yLjM2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA0YjE3ZWVkNGI4NTg4NTY5ZDExZWM0YmQyYjZmYTNjMDYzODMwZTZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVGh1LCAxNiBNYXkgMjAxMyAxODo0NDo1MCArMDIwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0cy9tYWluLmM6IGZpeCBidWlsZCB3aXRoIGdsaWIgMi4zNgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1VcHN0cmVhbS1TdGF0dXM6IHByb2plY3Qgc2VlbXMgZGVhZAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSB0ZXN0cy9tYWluLmMgfCAgICAyICsrCi0gMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9tYWluLmMgYi90ZXN0cy9tYWluLmMKLWluZGV4IDYxY2NlODIuLjE4MTY1ZWQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9tYWluLmMKLSsrKyBiL3Rlc3RzL21haW4uYwotQEAgLTMwLDcgKzMwLDkgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3YpCi0gewotIAlHdGtXaWRnZXQgKmJyb3dzZXI7Ci0gCi0rI2lmICFHTElCX0NIRUNLX1ZFUlNJT04gKDIsIDM2LCAwKQotIAlnX3RocmVhZF9pbml0KE5VTEwpOwotKyNlbmRpZgotIAotIAlndGtfaW5pdCAoJmFyZ2MsICZhcmd2KTsKLSAKLS0tIAotMS43LjYuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtodG1sMi9ndGtodG1sMl9zdm4uYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGtodG1sMi9ndGtodG1sMl9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMWIwNzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RraHRtbDIvZ3RraHRtbDJfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJndGsrIGdsaWItMi4wIGxpYnhtbDIiCi1TVU1NQVJZID0gIkEgR1RLKyBIVE1MIHJlbmRlcmluZyBsaWJyYXJ5IgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUiCi0KLVNSQ1JFViA9ICIxMTYxIgotUFYgPSAiMi4xMS4wK3N2bnIke1NSQ1BWfSIKLVBSID0gInI1IgotCi1TUkNfVVJJID0gInN2bjovL3N2bi5nbm9tZS5vcmcvc3ZuL2d0a2h0bWwyLzttb2R1bGU9dHJ1bms7cHJvdG9jb2w9aHR0cCBcCi0gICAgICAgICAgIGh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3dlYi1wYXRjaGVzL3BsYWluL2Nzcy1zdHlsZXNoZWV0LXVzZXIucGF0Y2g7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gyIFwKLSAgICAgICAgICAgaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvd2ViLXBhdGNoZXMvcGxhaW4vY3NzLW1lZGlhLnBhdGNoO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMyBcCi0gICAgICAgICAgIGh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3dlYi1wYXRjaGVzL3BsYWluL2FkZC1lbmQtZWxlbWVudC1zaWduYWwucGF0Y2g7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2g0IFwKLSAgICAgICAgICAgaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvd2ViLXBhdGNoZXMvcGxhaW4vYWRkLWRvbS1mdW5jdGlvbnMucGF0Y2g7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2g1IFwKLSAgICAgICAgICAgaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvd2ViLXBhdGNoZXMvcGxhaW4vaWFpbi1tZW0tbGVhay5wYXRjaDtzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1tYWluLmMtZml4LWJ1aWxkLXdpdGgtZ2xpYi0yLjM2LnBhdGNoIFwKLSIKLQotU1JDX1VSSVtwYXRjaDIubWQ1c3VtXSA9ICIwNWZjMzYyN2NhMzY0MDk1NzAyZGM4MDRmNDFjODM5MSIKLVNSQ19VUklbcGF0Y2gyLnNoYTI1NnN1bV0gPSAiZGY1Y2NhNTBhOGY5NTMzMzUwNWQ3OTIwOTI5ZmVhMjUxZGFlYTNiZTI1YmU2ODM0YTFjNTBhNzQyZDllYjY3NCIKLQotU1JDX1VSSVtwYXRjaDMubWQ1c3VtXSA9ICJkM2ZlNGNkYTM1NDVmM2U0NzE4ZjFhY2MxODY2MDhhYiIKLVNSQ19VUklbcGF0Y2gzLnNoYTI1NnN1bV0gPSAiM2FlZmFhMTdmZmEzODE0M2JmNWRmMTE2MWM1MWFiNDAyZDM1YmZiZWU0MWFiNDY0M2MzMTNlZGY1NjkxNjVkNSIKLQotU1JDX1VSSVtwYXRjaDQubWQ1c3VtXSA9ICI2NTFiMTYwMWQ4YTFiMjFjOGEzMDQwZmFkYjcyOTA0MyIKLVNSQ19VUklbcGF0Y2g0LnNoYTI1NnN1bV0gPSAiZDA2N2U4MzMxYmY5YzY4NTFmMWM2MDY3ZDk5MWE3ZjU0MzI3ZjUzMjkwMGI0MDVlYmRmOGUxNDljMDcxZjM4MSIKLQotU1JDX1VSSVtwYXRjaDUubWQ1c3VtXSA9ICIwNDFiZTk3MTFhMTZlNjI5ZDAxNDg3NjY0YmE5NzE1MiIKLVNSQ19VUklbcGF0Y2g1LnNoYTI1NnN1bV0gPSAiNDI5NTZmYjQxMzQxY2Y4MmFlOGJjZTE4YjRjZjk2YTdlMmFhNjMxYjFiNjA2NTdhZmI2ZDdlOWJlN2NkMTM4YyIKLQotU1JDX1VSSVtwYXRjaDYubWQ1c3VtXSA9ICI0ZTExZGM3ODk5ZDY4ZjJiZTJlMDZjY2VlMDFkMjk2ZCIKLVNSQ19VUklbcGF0Y2g2LnNoYTI1NnN1bV0gPSAiMWUyY2MwODBlNjU0YzE4MzljNWNiNGI0YWRmNGM2MmEyM2U3ZGEyMDg0MjdmM2JhMGIxNmNmZWQ5ZTVjZmE5OCIKLQotUyA9ICIke1dPUktESVJ9L3RydW5rIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKLQotRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtYWNjZXNzaWJpbGl0eSIKLQotUE5CTEFDS0xJU1RbZ3RraHRtbDJdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjMzLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Fzc2ltcC9hc3NpbXBfMy4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9hc3NpbXAvYXNzaW1wXzMuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGEzZGMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Fzc2ltcC9hc3NpbXBfMy4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuIEFzc2V0IEltcG9ydCBMaWJyYXJ5IGlzIGEgcG9ydGFibGUgT3BlbiBTb3VyY2UgbGlicmFyeSB0byBpbXBvcnQgXAotICAgICAgICAgICAgICAgdmFyaW91cyB3ZWxsLWtub3duIDNEIG1vZGVsIGZvcm1hdHMgaW4gYSB1bmlmb3JtIG1hbm5lci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFzc2ltcC5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YmM0MjMxYTIyNjhkYThmYzU1NTI1YWQxMTk2MzhhODciCi0KLURFUEVORFMgPSAiYm9vc3QgdmlydHVhbC9saWJnbCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzLyR7QlBOfS9maWxlcy8ke0JQTn0tMy4xLyR7QlBOfS0ke1BWfV9ub190ZXN0X21vZGVscy56aXAiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2NkNDc4ODIwNDUwOWRhNThhM2E1M2M3YWVkYTdhOGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGE5ODI3ODc2ZjEwYThiNDQ3MjcwMzY4NzUzMzkyY2ZkNTAyZTcwYTJlOWQxMzYxNTU0ZTVkZmNiMWZlZGU5ZSIKLQotaW5oZXJpdCBjbWFrZQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2JhYmwvYmFibF8wLjEuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9iYWJsL2JhYmxfMC4xLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWVhMDUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2JhYmwvYmFibF8wLjEuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIkJhYmwgaXMgYSBkeW5hbWljLCBhbnkgdG8gYW55LCBwaXhlbCBmb3JtYXQgY29udmVyc2lvbiBsaWJyYXJ5IgotTElDRU5TRSA9ICJMR1BMLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IgotCi1pbmhlcml0IGdub21lYmFzZQotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ2ltcC5vcmcvcHViLyR7QlBOfS8wLjEvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhMWM3MmU1ZjVkNTVhOGI3MzZlZjJmYTY3ZGRiODZlYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZDZiYTU1ZWM1M2VlNmY2YmY2OTQ1YmVlYzI4ODM5ZDA5ZmY3MjM3NmY0ZDgzMDM1ZWIzNzljZDRmM2U5ODBlIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2JhYmwtKi8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYmFibC0qLyoubGEiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9iYWJsLSovLmRlYnVnLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2JhYmwvYmFibF8wLjEuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9iYWJsL2JhYmxfMC4xLjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkOGM5MGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9iYWJsL2JhYmxfMC4xLjI4LmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiQmFibCBpcyBhIGR5bmFtaWMsIGFueSB0byBhbnksIHBpeGVsIGZvcm1hdCBjb252ZXJzaW9uIGxpYnJhcnkiCitMSUNFTlNFID0gIkxHUEwtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCisKK2luaGVyaXQgZ25vbWViYXNlCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvJHtCUE59LzAuMS8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImNjNTNkODQ3NGE0M2FhZmI3Y2RhY2NlYTU2Y2ZkZTQ0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzZjNlZDIzZTcyYTg1N2EwZTZkZjUzZDlkOTY4YTMyNTAyNDE3N2IwMWVkYmUzMTRhMGM5OGI0OTllYjg2MDMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmFibC0qLyouc28iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9iYWJsLSovKi5sYSIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2JhYmwtKi8uZGVidWcvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWJveDJkLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ib3gyZC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NmI3ODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWJveDJkLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkNsdXR0ZXIgQm94MkQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmNsdXR0ZXItcHJvamVjdC5vcmcvIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi0KLSMgVGhlIG1haW4gY2x1dHRlciBsaWIgaXMgbWFjaGluZSBzcGVjaWZpYyBzbyB3ZSBuZWVkIHRvIGJlIHRvbwotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgJHtTfS9leGFtcGxlcy8ubGlicy9ibG9ja2JveCAke0R9JHtiaW5kaXJ9Ci19Ci0KLUZJTEVTUEFUSCA9ICIke0ZJTEVfRElSTkFNRX0vY2x1dHRlci1ib3gyZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ib3gyZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItYm94MmRfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzNlMmYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ib3gyZF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItYm94MmQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2JveDJkL0xpY2Vuc2UudHh0O21kNT1lNWQzOWFkOTFmN2RjNDY5MmRjZGIxZDg1MTM5ZWM2YiIKLQotIyAwLjEyLjErZ2l0QVVUT0lOQytkZTU0NTJlNTZiLXIxL2dpdC9jbHV0dGVyLWJveDJkL2NsdXR0ZXItYm94MmQuaDoyMjY6NDc6Ci0jICBmYXRhbCBlcnJvcjogY2x1dHRlci1ib3gyZC9jbHV0dGVyLWJveDJkLWNoaWxkLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLSMgfCAgI2luY2x1ZGUgPGNsdXR0ZXItYm94MmQvY2x1dHRlci1ib3gyZC1jaGlsZC5oPgotUE5CTEFDS0xJU1RbY2x1dHRlci1ib3gyZF0gPz0gIkJST0tFTjogZG9lc24ndCBidWlsZCB3aXRoIEIhPVMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVNSQ1JFViA9ICJkZTU0NTJlNTZiNTM3YTExZmQ3Zjk0NTNkMDQ4ZmY0YjQ3OTNiNWEyIgotUFYgPSAiMC4xMi4xK2dpdCR7U1JDUFZ9IgotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmdub21lLm9yZy9jbHV0dGVyLWJveDJkLmdpdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyArPSAiY2x1dHRlci0xLjAiCi1QUk9WSURFUyA9ICJjbHV0dGVyLWJveDJkLTEuNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpZXRzcGxhc2gvZGlldHNwbGFzaC8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZGVtYW5kLWxpbmtlci1oYXNoLXN0eWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlldHNwbGFzaC9kaWV0c3BsYXNoLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1kZW1hbmQtbGlua2VyLWhhc2gtc3R5bGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdlODYzNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpZXRzcGxhc2gvZGlldHNwbGFzaC8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZGVtYW5kLWxpbmtlci1oYXNoLXN0eWxlLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNjVlOGUzYzljNjlmNDE3NzhiNjMwOGMyZjhmMzI2MmM4MmM2ZjNlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDEzOjU3OjUzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogRG8gbm90IGRlbWFuZCBsaW5rZXIgaGFzaC1zdHlsZQorCitUaGlzIGhlbHBzIGZpeGluZyBvbiBhcmNoaXRlY3R1cmVzIGUuZy4gbWlwcyB3aGVyZSBnbnUgaGFzaAoraXMgbm90IHN1cHBvcnRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZTFkYmEyMy4uN2JjYzAzOSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjUsNyArNjUsNiBAQCBDQ19DSEVDS19DRkxBR1NfQVBQRU5EKFsgXAorICAgICAgICAgLWZmdW5jdGlvbi1zZWN0aW9ucyBcCisgICAgICAgICAtZmRhdGEtc2VjdGlvbnMgXAorIAktV2wsLU8xIFwKKy0JLVdsLC0taGFzaC1zdHlsZT1nbnUgXAorICAgICAgICAgLVdsLC0tYXMtbmVlZGVkIFwKKyAgICAgICAgIC1XbCwtLWdjLXNlY3Rpb25zXSkKKyAKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpZXRzcGxhc2gvZGlldHNwbGFzaF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kaWV0c3BsYXNoL2RpZXRzcGxhc2hfZ2l0LmJiCmluZGV4IGE4OGNhZjguLjMyZjA4MTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpZXRzcGxhc2gvZGlldHNwbGFzaF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlldHNwbGFzaC9kaWV0c3BsYXNoX2dpdC5iYgpAQCAtNyw4ICs3LDEwIEBACiBQViA9ICIwLjMiCiBQUiA9ICJyMSIKIAotU1JDUkVWID0gImY3YWFkYWNiZTNjMTllMzdlYTkzOGUwMGE1MTQxYjU3N2ZiNzRhNWUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbHVjYXNkZW1hcmNoaS9kaWV0c3BsYXNoLmdpdCIKK1NSQ1JFViA9ICJlZjJlMWEzOTBlNzY4ZTIxZTZhNjI2ODk3NzU4MGVlMTI5YTk2NjMzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2x1Y2FzZGVtYXJjaGkvZGlldHNwbGFzaC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWRlbWFuZC1saW5rZXItaGFzaC1zdHlsZS5wYXRjaCBcCisgICAgICAgICAgICIKIAogaW5oZXJpdCBhdXRvdG9vbHMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmltL2ZpbGVzL2Nyb3NzX2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmltL2ZpbGVzL2Nyb3NzX2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWFiMWVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZpbS9maWxlcy9jcm9zc19jYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gOWIwYjMyMmQ4NmM3YjJkMmNkZGFhNjJmN2RhYjRhYTY2OTczOWE0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHRoaWV1IENyYXBldCA8TWF0dGhpZXUuQ3JhcGV0QGluZ2VuaWNvLmNvbT4KLURhdGU6IFdlZCwgMTkgTWFyIDIwMTQgMTM6MTg6MjEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWIyYmEgc2hvdWxkIGJlIGJ1aWx0IGJ5IEJVSUxEX0NDIGluIGNyb3NzIGVudmlyb25tZW50Ci1UaGlzIGlzIG9ubHkgdXNlZCB3aGVuIGNvbmZpZ3VyZWQgd2l0aCAtLWVuYWJsZS1oYXJkY29kZWQtZm9udAotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IGExZDQzMzAuLmE4MTUwYjkgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTYzLDcgKzYzLDcgQEAgaGVscC1hY20uY3BwOiBmaW0uaAotIAkkKEVDSE8pICcvLyNlbmRpZicgPj4gJEAKLSAKLSBiMmJhOgotLQkkKENDKSAtbyBiMmJhIGIyYmEuYwotKwkkKEJVSUxEX0NDKSAtbyBiMmJhIGIyYmEuYwotIAotIGlmIEZJTV9XQU5UX0NVU1RPTV9IQVJEQ09ERURfQ09OU09MRUZPTlQKLSBkZWZhdWx0X2ZvbnRfYnl0ZV9hcnJheS5oOiAkKEZJTV9DVVNUT01fSEFSRENPREVEX0NPTlNPTEVGT05UKSBiMmJhCi0tLSAKLTEuOC41LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmltL2ZpbV8wLjQtcmMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmltL2ZpbV8wLjQtcmMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDFhM2FhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZpbS9maW1fMC40LXJjMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiRnJhbWVidWZmZXIgKHNjcmlwdGFibGUpIGltYWdlIHZpZXdlciIKLURFU0NSSVBUSU9OID0gIkZJTSAoRmJpIElNcHJvdmVkKSBhaW1zIHRvIGJlIGEgaGlnaGx5IGN1c3RvbWl6YWJsZSBhbmQgc2NyaXB0YWJsZSBcCi0gICAgICAgICAgICAgICBpbWFnZSB2aWV3ZXIgdGFyZ2V0ZWQgYXQgdXNlcnMgd2hvIGFyZSBjb21mb3J0YWJsZSB3aXRoIHNvZnR3YXJlIFwKLSAgICAgICAgICAgICAgIGxpa2UgdGhlIFZpbSB0ZXh0IGVkaXRvciBvciB0aGUgTXV0dCBtYWlsIHVzZXIgYWdlbnQuIgotU0VDVElPTiA9ICJ1dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYXV0aXN0aWNpLm9yZy9kZXpwZXJhZG8vZmltLyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZhMDFiZmYxMzhjYzk4YTYyYjg4NDBhMTU3OTUxYzg4IgotCi1QTkJMQUNLTElTVFtmaW1dID89ICJCUk9LRU46IGRvZXNuJ3QgYnVpbGQgd2l0aCBCIT1TIChmbGV4OiBjYW4ndCBvcGVuIGxleC5sZXgpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi0jIGZsZXggd2l0aCBwcm92aWRlIC91c3IvaW5jbHVkZS9GbGV4TGV4ZXIuaAotREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgZmxleCIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX05PTkdOVV9NSVJST1J9L2ZiaS1pbXByb3ZlZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzX2NjLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImQ3MzYyZGRlNTU0MWMyYjY0MzljMzVjNmUyYmQ1MDQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmNmJmMmRlMjk1MmI5YWRjYmViM2RiMTJjMmE5NzllOTk5YTgxZGQxZTMxNGEwM2JjNThlMjRmMWVhOWY2ODYiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBEb24ndCB1c2UgcHJvdmlkZWQgcmVnZXguYwotRVhUUkFfT0VDT05GID0gImZpbV9jdl9yZWdleD1ubyBmaW1fY3ZfcmVnZXhfYnJva2VuPW5vIFwKLSAgICAtLWVuYWJsZS1mcmFtZWJ1ZmZlciBcCi0gICAgLS1kaXNhYmxlLWRqdnUgXAotICAgIC0tZGlzYWJsZS1wcyBcCi0gICAgLS1kaXNhYmxlLXhjZnRvcG5tIFwKLSAgICAtLWRpc2FibGUtY29udmVydCBcCi0gICAgLS1kaXNhYmxlLWlua3NjYXBlIFwKLSAgICAtLWRpc2FibGUteGZpZyBcCi0gICAgLS1kaXNhYmxlLWRpYSBcCi0gICAgLS1kaXNhYmxlLWFhIFwKLSAgICAtLWRpc2FibGUtc2RsIFwKLSAgICAtLWVuYWJsZS1yZWFkLWRpcnMgXAotICAgIC0tZW5hYmxlLXJlY3Vyc2l2ZS1kaXJzIFwKLSAgICAtLWVuYWJsZS1jdXN0b20tc3RhdHVzLWJhciBcCi0iCi0KLSMgTm90ZTogaW1saWIyIGlzIGxvY2F0ZWQgaW4gbWV0YS1lZmwgbGF5ZXIuCi1QQUNLQUdFQ09ORklHID89ICJqcGVnIHJsIGhmIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCi1QQUNLQUdFQ09ORklHW2dpZl0gPSAiLS1lbmFibGUtZ2lmLC0tZGlzYWJsZS1naWYsZ2lmbGliIgotUEFDS0FHRUNPTkZJR1twZGZdID0gIi0tZW5hYmxlLXBvcHBsZXIsLS1kaXNhYmxlLXBvcHBsZXIscG9wcGxlciIKLVBBQ0tBR0VDT05GSUdbbWFnaWNrXSA9ICItLWVuYWJsZS1ncmFwaGljc21hZ2ljaywtLWRpc2FibGUtZ3JhcGhpY3NtYWdpY2ssaW1hZ2VtYWdpY2siCi1QQUNLQUdFQ09ORklHW2ltbGliMl0gPSAiLS1lbmFibGUtaW1saWIyLC0tZGlzYWJsZS1pbWxpYjIsaW1saWIyIgotUEFDS0FHRUNPTkZJR1tybF0gPSAiLS1lbmFibGUtcmVhZGxpbmUsLS1kaXNhYmxlLXJlYWRsaW5lLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1toZl0gPSAiLS1lbmFibGUtaGFyZGNvZGVkLWZvbnQsLS1kaXNhYmxlLWhhcmRjb2RlZC1mb250IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGZvcmdlL2ZvbnRmb3JnZV8yMDE2MTAxMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNjEwMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMzM3NmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGZvcmdlL2ZvbnRmb3JnZV8yMDE2MTAxMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBmb250IGVkaXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly9mb250Zm9yZ2UuZ2l0aHViLmlvL2VuLVVTLyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICYgR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkcuZ3BsdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICBmaWxlOi8vTElDRU5TRTttZDU9M2Y5MjJiNDJlZDAwMzNmYTBmZDRjZDMyNjhmNjQyOWMgXAotIgotCi1ERVBFTkRTID0gImdsaWItMi4wIHBhbmdvIGdpZmxpYiB0aWZmIGxpYnhtbDIganBlZyBweXRob24gbGlidG9vbCB1dGhhc2ggZ251bGliIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBsaWJ4aSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ2V0dGV4dAotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgeDExIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS5naXQiCi0jIHRhZyAyMDE2MTAxMgotU1JDUkVWID0gIjA3MmVkYjAyMzVjZDE2M2Q2YzMzOTFkYTljYzM3NTRjM2M2NmY0N2EiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgd2l0aF94PW5vIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIHV0aGFzaCBzb3VyY2VzIGFyZSBleHBlY3RlZCBpbiB1dGhhc2gvc3JjCi0gICAgY3VycmRpcj1gcHdkYAotICAgIGNkICR7U30KLQotICAgIG1rZGlyIC1wIHV0aGFzaC9zcmMKLSAgICBjcCAke1NUQUdJTkdfSU5DRElSfS91dCouaCB1dGhhc2gvc3JjCi0KLSAgICAjIGF2b2lkIGJvb3RzdHJhcCBjbG9uaW5nIGdudWxpYiBvbiBldmVyeSBjb25maWd1cmUKLSAgICBjYXQgPi5naXRtb2R1bGVzIDw8RU9GCi1bc3VibW9kdWxlICJnbnVsaWIiXQotICAgICAgIHBhdGggPSBnbnVsaWIKLSAgICAgICB1cmwgPSBnaXQ6Ly9naXQuc3YuZ251Lm9yZy9nbnVsaWIKLUVPRgotICAgIGNwIC1yZiAke1NUQUdJTkdfREFUQURJUn0vZ251bGliICR7U30KLQotICAgICMgLS1mb3JjZSB0byBhdm9pZCBlcnJvcnMgb24gcmVjb25maWd1cmUgZS5nIGlmIHJlY2lwZXMgY2hhbmdlZCB3ZSBkZXBlbmQgb24KLSAgICAjIHwgYm9vdHN0cmFwOiBydW5uaW5nOiBsaWJ0b29saXplIC0tcXVpZXQKLSAgICAjIHwgbGlidG9vbGl6ZTogICBlcnJvcjogJ2xpYmx0ZGwvQ09QWUlORy5MSUInIGV4aXN0czogdXNlICctLWZvcmNlJyB0byBvdmVyd3JpdGUKLSAgICAjIHwgLi4uCi0gICAgLi9ib290c3RyYXAgLS1mb3JjZQotCi0gICAgY2QgJGN1cnJkaXIKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXB5dGhvbi1kYmcgJHtQTn0tcHl0aG9uIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L21pbWUgXAotICAgICR7ZGF0YWRpcn0vaWNvbnMgXAotIgotCi1GSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gJHtkYXRhZGlyfS8ke1BOfS9weXRob24iCi1GSUxFU18ke1BOfS1weXRob24tZGJnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1ZyIKLVJERVBFTkRTXyR7UE59LXB5dGhvbiA9ICJweXRob24iCi0KLSMgZm9yIGUuZyBrZGUncyBveHlnZW4tZm9udHMKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGZvcmdlL2ZvbnRmb3JnZV8yMDE3MDczMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNzA3MzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlmMDg2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNzA3MzEuYmIKQEAgLTAsMCArMSw2MCBAQAorU1VNTUFSWSA9ICJBIGZvbnQgZWRpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL2ZvbnRmb3JnZS5naXRodWIuaW8vZW4tVVMvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UgJiBHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vQ09QWUlORy5ncGx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0zZjkyMmI0MmVkMDAzM2ZhMGZkNGNkMzI2OGY2NDI5YyBcCisiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgcGFuZ28gZ2lmbGliIHRpZmYgbGlieG1sMiBqcGVnIHB5dGhvbiBsaWJ0b29sIHV0aGFzaCBnbnVsaWIiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGxpYnhpIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayBnZXR0ZXh0CisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB4MTEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59LmdpdCIKKyMgdGFnIDIwMTcwNzMxCitTUkNSRVYgPSAiYjkxNDljMTNlOGY5NDY0ZmMyMTQ3M2YxZjY3NmIzNmEyMTMwNzc1ZCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB3aXRoX3g9bm8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgdXRoYXNoIHNvdXJjZXMgYXJlIGV4cGVjdGVkIGluIHV0aGFzaC9zcmMKKyAgICBjdXJyZGlyPWBwd2RgCisgICAgY2QgJHtTfQorCisgICAgbWtkaXIgLXAgdXRoYXNoL3NyYworICAgIGNwICR7U1RBR0lOR19JTkNESVJ9L3V0Ki5oIHV0aGFzaC9zcmMKKworICAgICMgYXZvaWQgYm9vdHN0cmFwIGNsb25pbmcgZ251bGliIG9uIGV2ZXJ5IGNvbmZpZ3VyZQorICAgIGNhdCA+LmdpdG1vZHVsZXMgPDxFT0YKK1tzdWJtb2R1bGUgImdudWxpYiJdCisgICAgICAgcGF0aCA9IGdudWxpYgorICAgICAgIHVybCA9IGdpdDovL2dpdC5zdi5nbnUub3JnL2dudWxpYgorRU9GCisgICAgY3AgLXJmICR7U1RBR0lOR19EQVRBRElSfS9nbnVsaWIgJHtTfQorCisgICAgIyAtLWZvcmNlIHRvIGF2b2lkIGVycm9ycyBvbiByZWNvbmZpZ3VyZSBlLmcgaWYgcmVjaXBlcyBjaGFuZ2VkIHdlIGRlcGVuZCBvbgorICAgICMgfCBib290c3RyYXA6IHJ1bm5pbmc6IGxpYnRvb2xpemUgLS1xdWlldAorICAgICMgfCBsaWJ0b29saXplOiAgIGVycm9yOiAnbGlibHRkbC9DT1BZSU5HLkxJQicgZXhpc3RzOiB1c2UgJy0tZm9yY2UnIHRvIG92ZXJ3cml0ZQorICAgICMgfCAuLi4KKyAgICAuL2Jvb3RzdHJhcCAtLWZvcmNlCisKKyAgICBjZCAkY3VycmRpcgorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uLWRiZyAke1BOfS1weXRob24iCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vbWltZSBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisiCisKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAke2RhdGFkaXJ9LyR7UE59L3B5dGhvbiIKK0ZJTEVTXyR7UE59LXB5dGhvbi1kYmcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnIgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbiIKKworIyBmb3IgZS5nIGtkZSdzIG94eWdlbi1mb250cworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2xfMC4zLjE4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2MyMGY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkdFR0wgKEdlbmVyaWMgR3JhcGhpY3MgTGlicmFyeSkgaXMgYSBncmFwaCBiYXNlZCBpbWFnZSBwcm9jZXNzaW5nIGZyYW1ld29yayIKK0xJQ0VOU0UgPSAiTEdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0RFUEVORFMgPSAiYmFibCBsaWJyc3ZnIGdsaWItMi4wIGd0aysgcGFuZ28gY2Fpcm8gZXhwYXQgemxpYiBsaWJwbmcganBlZyB2aXJ0dWFsL2xpYnNkbCBqc29uLWdsaWIgaW50bHRvb2wtbmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3MiCisKK2luaGVyaXQgZ25vbWViYXNlIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2phc3Blcl0gPSAiLS13aXRoLWphc3BlciwtLXdpdGhvdXQtamFzcGVyLGphc3BlciIKK1BBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0td2l0aC1saWJhdmZvcm1hdCwtLXdpdGhvdXQtbGliYXZmb3JtYXQsbGliYXYiCitQQUNLQUdFQ09ORklHW2xjbXNdID0gIi0td2l0aC1sY21zLC0td2l0aG91dC1sY21zLGxjbXMiCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0td2l0aC1saWJ0aWZmLC0td2l0aG91dC1saWJ0aWZmLHRpZmYiCitQQUNLQUdFQ09ORklHW3dlYnBdID0gIi0td2l0aC13ZWJwLC0td2l0aG91dC13ZWJwLHdlYnAiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvJHtCUE59LzAuMy8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCAiCitTUkNfVVJJW21kNXN1bV0gPSAiNmU1YzZmMjI5MjYxNDc4ZGM0MzZhMzhjODQ0MDViMmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDc4NThlZjI2ZWRlMTM2ZDE0ZTNkZTE4OGE5ZTljMGRlNzcwNzA2MWE5ZmI5NmQ3ZDYxNWZhYjQ5NTg0OTFmYiIKKworTERGTEFHUyArPSAiLWxtIgorCisjIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBub24tc3ltbGluayAuc28gZmlsZXMgaW5zdGFsbGVkIGludG8gbGliZGlyLCB3aGljaCBuZWVkIHRvIGdvIGludG8gbWFpbiBwYWNrYWdlCitGSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9nZWdsLTAuMy8qLnNvICR7bGliZGlyfS9nZWdsLTAuMy8qLmpzb24gJHtsaWJkaXJ9L2xpYmdlZ2wtbnBkLTAuMy5zbyAke2xpYmRpcn0vbGliZ2VnbC1zYy0wLjMuc28iCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2xpYmRpcn0vZ2VnbC0wLjMvKi5sYSAke2xpYmRpcn0vbGliZ2VnbC0wLjMuc28iCitGSUxFU18ke1BOfS1kZXZfcmVtb3ZlID0gIiR7bGliZGlyfS9saWIqLnNvIgorCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyMgZ2VnbC0wLjIuMC9vcGVyYXRpb25zL2NvbW1vbi9tYXR0aW5nLWdsb2JhbC5jOiBJbiBmdW5jdGlvbiAnbWF0dGluZ19wcm9jZXNzJzoKKyMgZ2VnbC0wLjIuMC9vcGVyYXRpb25zL2NvbW1vbi9tYXR0aW5nLWdsb2JhbC5jOjQ2MzoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gcGF0Y2hfanVtcF9pbnNuLCBhdCBjZmdydGwuYzoxMjc1CitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dlZ2wvZ2VnbF8wLjMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dlZ2wvZ2VnbF8wLjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBmMDIxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2xfMC4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkdFR0wgKEdlbmVyaWMgR3JhcGhpY3MgTGlicmFyeSkgaXMgYSBncmFwaCBiYXNlZCBpbWFnZSBwcm9jZXNzaW5nIGZyYW1ld29yayIKLUxJQ0VOU0UgPSAiTEdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAiYmFibCBsaWJyc3ZnIGdsaWItMi4wIGd0aysgcGFuZ28gY2Fpcm8gZXhwYXQgemxpYiBsaWJwbmcganBlZyB2aXJ0dWFsL2xpYnNkbCBqc29uLWdsaWIgaW50bHRvb2wtbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3MiCi0KLWluaGVyaXQgZ25vbWViYXNlIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2phc3Blcl0gPSAiLS13aXRoLWphc3BlciwtLXdpdGhvdXQtamFzcGVyLGphc3BlciIKLVBBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0td2l0aC1saWJhdmZvcm1hdCwtLXdpdGhvdXQtbGliYXZmb3JtYXQsbGliYXYiCi1QQUNLQUdFQ09ORklHW2xjbXNdID0gIi0td2l0aC1sY21zLC0td2l0aG91dC1sY21zLGxjbXMiCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0td2l0aC1saWJ0aWZmLC0td2l0aG91dC1saWJ0aWZmLHRpZmYiCi1QQUNLQUdFQ09ORklHW3dlYnBdID0gIi0td2l0aC13ZWJwLC0td2l0aG91dC13ZWJwLHdlYnAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvJHtCUE59LzAuMy8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzE5NDc4MzIxNTk0ZDcxNWE0Y2IzMjRhMGRlY2RhNmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODQ2MjkwYTc5MDg1NGQxZTZiN2MxN2EyZDZmODJhZDdjYjE0YzcyZTI0MGJkM2I4MWI5OGNjMGNlZGRiYzNlYyIKLQotTERGTEFHUyArPSAiLWxtIgotCi0jIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBub24tc3ltbGluayAuc28gZmlsZXMgaW5zdGFsbGVkIGludG8gbGliZGlyLCB3aGljaCBuZWVkIHRvIGdvIGludG8gbWFpbiBwYWNrYWdlCi1GSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9nZWdsLTAuMy8qLnNvICR7bGliZGlyfS9nZWdsLTAuMy8qLmpzb24gJHtsaWJkaXJ9L2xpYmdlZ2wtbnBkLTAuMy5zbyAke2xpYmRpcn0vbGliZ2VnbC1zYy0wLjMuc28iCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2xpYmRpcn0vZ2VnbC0wLjMvKi5sYSAke2xpYmRpcn0vbGliZ2VnbC0wLjMuc28iCi1GSUxFU18ke1BOfS1kZXZfcmVtb3ZlID0gIiR7bGliZGlyfS9saWIqLnNvIgotCi0jIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKLSMgZ2VnbC0wLjIuMC9vcGVyYXRpb25zL2NvbW1vbi9tYXR0aW5nLWdsb2JhbC5jOiBJbiBmdW5jdGlvbiAnbWF0dGluZ19wcm9jZXNzJzoKLSMgZ2VnbC0wLjIuMC9vcGVyYXRpb25zL2NvbW1vbi9tYXR0aW5nLWdsb2JhbC5jOjQ2MzoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gcGF0Y2hfanVtcF9pbnNuLCBhdCBjZmdydGwuYzoxMjc1Ci1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvMDAwMy1GaXgtdXNlLW9mLWdlZ2wtQVBJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYTc4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvMDAwMy1GaXgtdXNlLW9mLWdlZ2wtQVBJLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gZTFjOGY0YjgzMjNlMzk2NTI3MWE5MzUyOWVhYjU3NzRjMWE3MDgzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDEwOjMyOjE0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBGaXggdXNlIG9mIGdlZ2wgQVBJCisKK25ld2VyIHZlcnNpb24gb2YgZ2VnbCBkb2VzIG5vdCBkZWZpbmUgR0VHTF9JU19QQVJBTV9TUEVDX01VTFRJTElORQorCit8IGNvcmUvbGliYXBwY29yZS5hKGdpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5vKTogSW4gZnVuY3Rpb24gYGdpbXBfcGFyYW1fc3BlY19kdXBsaWNhdGUnOgorfCAvdXNyL3NyYy9kZWJ1Zy9naW1wLzIuOC4yMi1yMC9naW1wLTIuOC4yMi9hcHAvY29yZS8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9naW1wL2FwcC9jb3JlL2dpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5jOjcwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBHRUdMX0lTX1BBUkFNX1NQRUNfTVVMVElMSU5FJworfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBhcHAvY29yZS9naW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2FwcC9jb3JlL2dpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5jIGIvYXBwL2NvcmUvZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLmMKK2luZGV4IGMwYjc0MjYuLjJlZmFmMjMgMTAwNjQ0CistLS0gYS9hcHAvY29yZS9naW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUuYworKysrIGIvYXBwL2NvcmUvZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLmMKK0BAIC02Nyw3ICs2Nyw3IEBAIGdpbXBfcGFyYW1fc3BlY19kdXBsaWNhdGUgKEdQYXJhbVNwZWMgKnBzcGVjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5kZWZhdWx0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3BlYy0+ZmxhZ3MpOworIAorLSAgICAgICAgICBpZiAoR0VHTF9JU19QQVJBTV9TUEVDX01VTFRJTElORSAocHNwZWMpKQorKyAgICAgICAgICBpZiAoZ2VnbF9wYXJhbV9zcGVjX2dldF9wcm9wZXJ0eV9rZXkocHNwZWMsICJtdWx0aWxpbmUiKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc2V0X3FkYXRhIChuZXcsIG11bHRpbGluZV9xdWFyaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoVFJVRSkpOworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcF8yLjguMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1ODhhYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIEdJTVAgaXMgdGhlIEdOVSBJbWFnZSBNYW5pcHVsYXRpb24gUHJvZ3JhbSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ2ltcC5vcmciCi1TRUNUSU9OID0gIngxMS9ncmFwaGljcyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICIgXAotICAgIGdkay1waXhidWYtbmF0aXZlIFwKLSAgICBpbnRsdG9vbC1uYXRpdmUgXAotICAgIGxpYnhzbHQtbmF0aXZlIFwKLSAgICBndGsrIFwKLSAgICBiYWJsIFwKLSAgICBnZWdsIFwKLSAgICBsaWJhcnQtbGdwbCBcCi0gICAganBlZyBcCi0gICAgbGlicG5nIFwKLSAgICBsaWJleGlmIFwKLSAgICB0aWZmIFwKLSAgICBsY21zIFwKLSAgICBwb3BwbGVyIFwKLSAgICBqYXNwZXIgXAotICAgIGJ6aXAyIFwKLSAgICBsaWJndWRldiBcCi0gICAgbGlibW5nIFwKLSIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2xpYnhtdSBsaWJ4cG0nLCAnJywgZCl9IgotCi1pbmhlcml0IGdub21lIGd0ay1kb2MKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9mdHAuZ2ltcC5vcmcvcHViL2dpbXAvdjIuOC9naW1wLSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaCBcCi0gICAgZmlsZTovL2J1bXBfQmFibC1HRUdMX3ZlcnNpb25zLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNDA1NjQwYzQyNmIyMzRkNmVmYzM2ZmI0ZjViYWU1NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzljYTFkZjcwYmU4NjVjNjcyZmZkNjU0ZjRlMjBmMTg4MTIxZDAxNjAxYzVjOTAyMzcyMTQxMDE1MzNjODA1IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXB5dGhvbiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXdlYmtpdCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXdtZiIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkkKGluY2x1ZGVkaXIpJzonLUkuJzpnCi0gICAgZmluZCAke0J9IC1uYW1lIE1ha2VmaWxlIHwgeGFyZ3Mgc2VkIC1pIHM6Jy1JL3Vzci9pbmNsdWRlJzonLUkke1NUQUdJTkdfSU5DRElSfSc6ZwotfQotCi1DRkxBR1MgKz0gIi1mUElDIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9naW1wLzIuMC8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59ICArPSAiJHtkYXRhZGlyfS9hcHBkYXRhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcF8yLjguMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q3ZTI3YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcF8yLjguMjIuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJUaGUgR0lNUCBpcyB0aGUgR05VIEltYWdlIE1hbmlwdWxhdGlvbiBQcm9ncmFtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naW1wLm9yZyIKK1NFQ1RJT04gPSAieDExL2dyYXBoaWNzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gIiBcCisgICAgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisgICAgbGlieHNsdC1uYXRpdmUgXAorICAgIGd0aysgXAorICAgIGJhYmwgXAorICAgIGdlZ2wgXAorICAgIGpwZWcgXAorICAgIGxpYnBuZyBcCisgICAgbGliZXhpZiBcCisgICAgdGlmZiBcCisgICAgbGNtcyBcCisgICAgcG9wcGxlciBcCisgICAgamFzcGVyIFwKKyAgICBiemlwMiBcCisgICAgbGliZ3VkZXYgXAorICAgIGxpYm1uZyBcCisiCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdsaWJ4bXUgbGlieHBtJywgJycsIGQpfSIKKworaW5oZXJpdCBnbm9tZSBndGstZG9jCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvZ2ltcC92Mi44L2dpbXAtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idW1wX0JhYmwtR0VHTF92ZXJzaW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiN2U0ZmQ3YTUzYjFkM2MzMmRmZjY0MmFiMWE5NGI0NGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTE4N2EzNWNjNTJiMTEwZDc4MTI0ZDdiMjdiNjhhNjhhZGUxNGE3OTRjMjcyMTMxNGJhYzYxMzRkMmE1NjM4YSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC13ZWJraXQgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC13bWYiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisgICAgZmluZCAke0J9IC1uYW1lIE1ha2VmaWxlIHwgeGFyZ3Mgc2VkIC1pIHM6Jy1JJChpbmNsdWRlZGlyKSc6Jy1JLic6ZworICAgIGZpbmQgJHtCfSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIHNlZCAtaSBzOictSS91c3IvaW5jbHVkZSc6Jy1JJHtTVEFHSU5HX0lOQ0RJUn0nOmcKK30KKworQ0ZMQUdTICs9ICItZlBJQyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2ltcC8yLjAvKi8uZGVidWciCitGSUxFU18ke1BOfSAgKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoLzAwMDEtYnVpbGQtU3BlY2lmeS1zdGQtYy0xMS1vbi1jbWRsaW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvMDAwMS1idWlsZC1TcGVjaWZ5LXN0ZC1jLTExLW9uLWNtZGxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYmMyOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvMDAwMS1idWlsZC1TcGVjaWZ5LXN0ZC1jLTExLW9uLWNtZGxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIDQ3YmZlZjBkZDgzZWQyZTEwZWM0YzYxNTkwOGVjOTI2YzRkNWZlMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOSBPY3QgMjAxNiAwMDo1Njo1NCArMDAwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogU3BlY2lmeSAtc3RkPWMrKzExIG9uIGNtZGxpbmUKLQotV2UgdXNlIGMrKzExIGZlYXR1cmVzIHNvIGRlbWFuZCBpdCBleHBsaWNpdGx5IGZyb20gY29tcGlsZXIKLQotRml4ZXMKLXwgLi4vc3JjL2xpYm1hdHJpeC9zaGFkZXItc291cmNlLmNjOjM3OjEwOiBlcnJvcjogbm8gbWVtYmVyIG5hbWVkICd1bmlxdWVfcHRyJyBpbiBuYW1lc3BhY2UgJ3N0ZCcKLXwgICAgIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OmlzdHJlYW0+IGlzX3B0cihVdGlsOjpnZXRfcmVzb3VyY2UoZmlsZW5hbWUpKTsKLXwgICAgIH5+fn5+XgotfCAuLi9zcmMvbGlibWF0cml4L3NoYWRlci1zb3VyY2UuY2M6Mzc6MzM6IGVycm9yOiBleHBlY3RlZCAnKCcgZm9yIGZ1bmN0aW9uLXN0eWxlIGNhc3Qgb3IgdHlwZSBjb25zdHJ1Y3Rpb24KLXwgICAgIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OmlzdHJlYW0+IGlzX3B0cihVdGlsOjpnZXRfcmVzb3VyY2UoZmlsZW5hbWUpKTsKLXwgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5eCi18IC4uL3NyYy9saWJtYXRyaXgvc2hhZGVyLXNvdXJjZS5jYzozNzozNTogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ2lzX3B0cicKLXwgICAgIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OmlzdHJlYW0+IGlzX3B0cihVdGlsOjpnZXRfcmVzb3VyY2UoZmlsZW5hbWUpKTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLXwgLi4vc3JjL2xpYm1hdHJpeC9zaGFkZXItc291cmNlLmNjOjM4OjMwOiBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnaXNfcHRyJwotfCAgICAgc3RkOjppc3RyZWFtJiBpbnB1dEZpbGUoKmlzX3B0cik7Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCA0IGVycm9ycyBnZW5lcmF0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gd3NjcmlwdCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0Ci1pbmRleCBkY2FmMjk4Li40ODVhOWZiIDEwMDY0NAotLS0tIGEvd3NjcmlwdAotKysrIGIvd3NjcmlwdAotQEAgLTc5LDcgKzc5LDcgQEAgZGVmIGNvbmZpZ3VyZShjdHgpOgotICAgICAgICAgICAgIGN0eC5jaGVja19jZmcocGFja2FnZSA9IHBrZywgdXNlbGliX3N0b3JlID0gdXNlbGliLCBhcmdzID0gJy0tY2ZsYWdzIC0tbGlicycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnkgPSBUcnVlKQotIAotLSAgICBjdHguZW52LmFwcGVuZF91bmlxdWUoJ0NYWEZMQUdTJywgJy1XYWxsIC1XZXJyb3IgLVdleHRyYScuc3BsaXQoJyAnKSkKLSsgICAgY3R4LmVudi5hcHBlbmRfdW5pcXVlKCdDWFhGTEFHUycsICctV2FsbCAtV2Vycm9yIC1zdGQ9YysrMTEgLVdleHRyYScuc3BsaXQoJyAnKSkKLSAKLSAgICAgIyBQcmVwZW5kIC1PIyBhbmQgLWcgZmxhZ3Mgc28gdGhhdCB0aGV5IGNhbiBiZSBvdmVycmlkZW4gYnkgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAgICBpZiBPcHRpb25zLm9wdGlvbnMub3B0OgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC8wMDAxLXdhZi1EaXNhYmxlLWVycm9ycy1kdWUtdG8tV2RlcHJlY2F0ZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC8wMDAxLXdhZi1EaXNhYmxlLWVycm9ycy1kdWUtdG8tV2RlcHJlY2F0ZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlYjYwMTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvMDAwMS13YWYtRGlzYWJsZS1lcnJvcnMtZHVlLXRvLVdkZXByZWNhdGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA0OTI5N2UyZmJlMDQyMGEyNTVjYmU2Nzk4OWQwZWM1MzkxMjU0MTJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjMgQXByIDIwMTcgMTA6Mzg6MjQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gd2FmOiBEaXNhYmxlIGVycm9ycyBkdWUgdG8gLVdkZXByZWNhdGVkCi0KLXRocm93KCkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBjKysxMSBhbmQgcmVtb3ZlZAotZnJvbSBjKysxNywgZ2NjNyBpcyBtb3JlIHBlZGFuZGljIGFib3V0IHRoaXMgd2FybmluZwotd2UgdGhlcmVmb3JlIGFkZCBhIHdvcmthcm91bmQgdG8gaWdub3JlIHRoaXMgd2FybmluZwotZm9yIG5vdy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHdzY3JpcHQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS93c2NyaXB0IGIvd3NjcmlwdAotaW5kZXggNDg1YTlmYi4uN2Y1OTc2MSAxMDA2NDQKLS0tLSBhL3dzY3JpcHQKLSsrKyBiL3dzY3JpcHQKLUBAIC03OSw3ICs3OSw3IEBAIGRlZiBjb25maWd1cmUoY3R4KToKLSAgICAgICAgICAgICBjdHguY2hlY2tfY2ZnKHBhY2thZ2UgPSBwa2csIHVzZWxpYl9zdG9yZSA9IHVzZWxpYiwgYXJncyA9ICctLWNmbGFncyAtLWxpYnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5ID0gVHJ1ZSkKLSAKLS0gICAgY3R4LmVudi5hcHBlbmRfdW5pcXVlKCdDWFhGTEFHUycsICctV2FsbCAtV2Vycm9yIC1zdGQ9YysrMTEgLVdleHRyYScuc3BsaXQoJyAnKSkKLSsgICAgY3R4LmVudi5hcHBlbmRfdW5pcXVlKCdDWFhGTEFHUycsICctV2FsbCAtV2Vycm9yIC1zdGQ9YysrMTEgLVdleHRyYSAtV25vLWVycm9yPWRlcHJlY2F0ZWQnLnNwbGl0KCcgJykpCi0gCi0gICAgICMgUHJlcGVuZCAtTyMgYW5kIC1nIGZsYWdzIHNvIHRoYXQgdGhleSBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBDRkxBR1MgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgaWYgT3B0aW9ucy5vcHRpb25zLm9wdDoKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL0ZpeC1jb25maWd1cmUtZm9yLXNxcnQtY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC9GaXgtY29uZmlndXJlLWZvci1zcXJ0LWNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0ODMxYzQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL0ZpeC1jb25maWd1cmUtZm9yLXNxcnQtY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1JbmRleDogZ2l0L3dzY3JpcHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy93c2NyaXB0CTIwMTYtMDctMjkgMTM6MTU6NDQuOTU0MjQ5Nzk2IC0wNTAwCi0rKysgZ2l0L3dzY3JpcHQJMjAxNi0wNy0yOSAxNTo1MjowNi4xOTY3Njg4NjUgLTA1MDAKLUBAIC01Niw3ICs1Niw3IEBACi0gICAgICAgICBjdHguY2hlY2tfY3h4KGxpYiA9IGxpYiwgdXNlbGliX3N0b3JlID0gdXNlbGliKQotIAotICAgICAjIENoZWNrIHJlcXVpcmVkIGZ1bmN0aW9ucwotLSAgICByZXFfZnVuY3MgPSBbKCdnZXR0aW1lb2ZkYXknLCAnc3lzL3RpbWUuaCcsIFtdKSAsKCdzcXJ0JywgJ21hdGguaCcsIFsnbSddKSwKLSsgICAgcmVxX2Z1bmNzID0gWygnZ2V0dGltZW9mZGF5JywgJ3N5cy90aW1lLmgnLCBbXSksCi0gICAgICAgICAgICAgICAgICAoJ3N0cnRvbCcsICdzdGRsaWIuaCcsIFtdKSwgKCdzdHJ0b3VsJywgJ3N0ZGxpYi5oJywgW10pXQotICAgICBmb3IgZnVuYywgaGVhZGVyLCB1c2VsaWIgaW4gcmVxX2Z1bmNzOgotICAgICAgICAgY3R4LmNoZWNrX2N4eChmdW5jdGlvbl9uYW1lID0gZnVuYywgaGVhZGVyX25hbWUgPSBoZWFkZXIsIHVzZWxpYiA9IHVzZWxpYiwgbWFuZGF0b3J5ID0gVHJ1ZSkKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvRml4X2F1dG9fcHRyX2RlcHJlY2F0ZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC9GaXhfYXV0b19wdHJfZGVwcmVjYXRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTMwYzdjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC9GaXhfYXV0b19wdHJfZGVwcmVjYXRlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLWRpZmYgLWF1ciBnbGNvbXBiZW5jaC0yMDEyLjA4L3NyYy9saWJtYXRyaXgvc2hhZGVyLXNvdXJjZS5jYyBGaXhlZC9zcmMvbGlibWF0cml4L3NoYWRlci1zb3VyY2UuY2MKLS0tLSBnbGNvbXBiZW5jaC0yMDEyLjA4L3NyYy9saWJtYXRyaXgvc2hhZGVyLXNvdXJjZS5jYwkyMDEyLTA4LTIyIDEzOjQxOjM2LjAwMDAwMDAwMCAtMDUwMAotKysrIEZpeGVkL3NyYy9saWJtYXRyaXgvc2hhZGVyLXNvdXJjZS5jYwkyMDE2LTA4LTI0IDE0OjIzOjQ5LjU3NjAyMzMxNyAtMDUwMAotQEAgLTM0LDcgKzM0LDcgQEAKLSBib29sCi0gU2hhZGVyU291cmNlOjpsb2FkX2ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lLCBzdGQ6OnN0cmluZyYgc3RyKQotIHsKLS0gICAgc3RkOjphdXRvX3B0cjxzdGQ6OmlzdHJlYW0+IGlzX3B0cihVdGlsOjpnZXRfcmVzb3VyY2UoZmlsZW5hbWUpKTsKLSsgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6aXN0cmVhbT4gaXNfcHRyKFV0aWw6OmdldF9yZXNvdXJjZShmaWxlbmFtZSkpOwotICAgICBzdGQ6OmlzdHJlYW0mIGlucHV0RmlsZSgqaXNfcHRyKTsKLSAKLSAgICAgaWYgKCFpbnB1dEZpbGUpCi1kaWZmIC1hdXIgZ2xjb21wYmVuY2gtMjAxMi4wOC9zcmMvdGV4dHVyZS5jYyBGaXhlZC9zcmMvdGV4dHVyZS5jYwotLS0tIGdsY29tcGJlbmNoLTIwMTIuMDgvc3JjL3RleHR1cmUuY2MJMjAxMi0wOC0yMiAxMzo0MTozNi4wMDAwMDAwMDAgLTA1MDAKLSsrKyBGaXhlZC9zcmMvdGV4dHVyZS5jYwkyMDE2LTA4LTI0IDE0OjIzOjI4LjIyMzkxNzQzOCAtMDUwMAotQEAgLTUyLDcgKzUyLDcgQEAKLSAKLSAgICAgICAgIExvZzo6ZGVidWcoIlJlYWRpbmcgUE5HIGZpbGUgJXNcbiIsIGZpbGVuYW1lLmNfc3RyKCkpOwotIAotLSAgICAgICAgY29uc3Qgc3RkOjphdXRvX3B0cjxzdGQ6OmlzdHJlYW0+IGlzX3B0cihVdGlsOjpnZXRfcmVzb3VyY2UoZmlsZW5hbWUpKTsKLSsgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OmlzdHJlYW0+IGlzX3B0cihVdGlsOjpnZXRfcmVzb3VyY2UoZmlsZW5hbWUpKTsKLSAgICAgICAgIGlmICghKCppc19wdHIpKSB7Ci0gICAgICAgICAgICAgTG9nOjplcnJvcigiQ2Fubm90IG9wZW4gZmlsZSAlcyFcbiIsIGZpbGVuYW1lLmNfc3RyKCkpOwotICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL0ZpeF9zcGFjZV9pc3N1ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaC9GaXhfc3BhY2VfaXNzdWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1MTZiYWFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL0ZpeF9zcGFjZV9pc3N1ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1kaWZmIC1hdXIgZ2xjb21wYmVuY2gtMjAxMi4wOC9zcmMvY29tcG9zaXRlLWNhbnZhcy5jYyBGaXhlZC9zcmMvY29tcG9zaXRlLWNhbnZhcy5jYwotLS0tIGdsY29tcGJlbmNoLTIwMTIuMDgvc3JjL2NvbXBvc2l0ZS1jYW52YXMuY2MJMjAxMi0wOC0yMiAxMzo0MTozNi4wMDAwMDAwMDAgLTA1MDAKLSsrKyBGaXhlZC9zcmMvY29tcG9zaXRlLWNhbnZhcy5jYwkyMDE2LTA4LTI0IDE0OjA1OjI4Ljk3MDU2NTcwOSAtMDUwMAotQEAgLTQxLDcgKzQxLDcgQEAKLSAjaW5jbHVkZSAibG9nLmgiCi0gI2luY2x1ZGUgInByb2ZpbGVyLmgiCi0gCi0tY29uc3Qgc3RkOjpzdHJpbmcgZ2xjb21wYmVuY2hfdmVyc2lvbl9zdHJpbmcoImdsY29tcGJlbmNoICJHTENPTVBCRU5DSF9WRVJTSU9OKTsKLStjb25zdCBzdGQ6OnN0cmluZyBnbGNvbXBiZW5jaF92ZXJzaW9uX3N0cmluZygiZ2xjb21wYmVuY2ggIiBHTENPTVBCRU5DSF9WRVJTSU9OKTsKLSAKLSAvKioqKioqKioqKioqKioqKioqKgotICAqIFByaXZhdGUgbWV0aG9kcyAqCi1AQCAtNDk1LDcgKzQ5NSw3IEBACi0gICAgIC8vIFdoZW4gd2UgY29tcGxldGUgYW4gaXRlcmF0aW9uLCByZXNldCB0aGUgY291bnQgYW5kIHRlbGwgdGhlIGNhbGxlci4KLSAKLSAgICAgaWYgKHN0YXRzLnRvdGFsID49IGN1cnJlbnRfdGVzdF9kdXJhdGlvbl8pIHsKLS0gICAgICAgIExvZzo6aW5mbygiRlBTOiAlIlBSSXU2NCJcbiIsICh1aW50NjRfdCkoMTAwMCAqIHN0YXRzLm5zYW1wbGVzIC8gc3RhdHMudG90YWwpKTsKLSsgICAgICAgIExvZzo6aW5mbygiRlBTOiAlIiBQUkl1NjQgIlxuIiwgKHVpbnQ2NF90KSgxMDAwICogc3RhdHMubnNhbXBsZXMgLyBzdGF0cy50b3RhbCkpOwotIAotICAgICAgICAgZm9yIChQcm9maWxlcjo6UG9pbnQgcCA9IDA7IHAgPCBwcm9maWxlci5nZXRfbnVtX3BvaW50cygpOyBwICs9IDIpIHsKLSAgICAgICAgICAgICBwcm9maWxlci5nZXRfc3RhdHMocCwgcCArIDEsIHN0YXRzKTsKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvZ2xiZW5jaC1jb21waWxlLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoL2dsYmVuY2gtY29tcGlsZS1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NGE2Y2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xjb21wYmVuY2gvZ2xjb21wYmVuY2gvZ2xiZW5jaC1jb21waWxlLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gYzRiYzQ0YzNhYmY2OWYyNmU0YzJiNzY4NGY0ZGE0NjcwYTUxZjk5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFByYWJodSBTdW5kYXJhcmFqIDxwcmFiaHUuc3VuZGFyYXJhakBmcmVlc2NhbGUuY29tPgotRGF0ZTogVHVlLCA1IE5vdiAyMDEzIDExOjAzOjA0IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRvIG1ha2UgY29tcGlsYWJsZQotCi1VcHN0cmVhbSBTdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmRdCi0KLVNpZ25lZC1vZmYtYnk6IFByYWJodSBTdW5kYXJhcmFqIDxwcmFiaHUuc3VuZGFyYXJhakBmcmVlc2NhbGUuY29tPgotLS0tCi0gc3JjL2NvbXBvc2l0ZS10ZXN0LXNpbXBsZS1ibHVyLmNjIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jb21wb3NpdGUtdGVzdC1zaW1wbGUtYmx1ci5jYyBiL3NyYy9jb21wb3NpdGUtdGVzdC1zaW1wbGUtYmx1ci5jYwotaW5kZXggMTcwYWQ2NC4uZDdmNzdjZiAxMDA2NDQKLS0tLSBhL3NyYy9jb21wb3NpdGUtdGVzdC1zaW1wbGUtYmx1ci5jYwotKysrIGIvc3JjL2NvbXBvc2l0ZS10ZXN0LXNpbXBsZS1ibHVyLmNjCi1AQCAtMzQ3LDYgKzM0Nyw3IEBAIENvbXBvc2l0ZVRlc3RTaW1wbGVCbHVyOjpDb21wb3NpdGVUZXN0U2ltcGxlQmx1cigpIDoKLSAKLSBDb21wb3NpdGVUZXN0U2ltcGxlQmx1cjo6fkNvbXBvc2l0ZVRlc3RTaW1wbGVCbHVyKCkKLSB7Ci0rI2lmIDAKLSAgICAgZm9yIChCbHVyV2luZG93TWFwVHlwZTo6aXRlcmF0b3Igd2luSXQgPSBwcml2Xy0+d2luZG93TWFwLmJlZ2luKCk7Ci0gICAgICAgICAgd2luSXQgIT0gcHJpdl8tPndpbmRvd01hcC5lbmQoKTsKLSAgICAgICAgICB3aW5JdCsrKQotQEAgLTM1NCw2ICszNTUsNyBAQCBDb21wb3NpdGVUZXN0U2ltcGxlQmx1cjo6fkNvbXBvc2l0ZVRlc3RTaW1wbGVCbHVyKCkKLSAgICAgICAgIFJlbmRlcldpbmRvd0JsdXIqIHJvID0gd2luSXQtPnNlY29uZDsKLSAgICAgICAgIGRlbGV0ZSBybzsKLSAgICAgfQotKyNlbmRpZgotICAgICBkZWxldGUgcHJpdl87Ci0gfQotIAotLS0gCi0xLjguMS4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoXzIwMTIuMDguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbGNvbXBiZW5jaC9nbGNvbXBiZW5jaF8yMDEyLjA4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlODQ2NTg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsY29tcGJlbmNoL2dsY29tcGJlbmNoXzIwMTIuMDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkEgYmVuY2htYXJrIGZvciBHTChFUykyIGJhc2VkIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJnbCB2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgXAotICAgICAgICAgICB2aXJ0dWFsL2xpYngxMSBsaWJ4Y29tcG9zaXRlIHBpeG1hbiBsaWJ4cmVuZGVyIGxpYnBuZzEyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9nbGNvbXBiZW5jaC90cnVuay8ke1BWfS8rZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9nbGJlbmNoLWNvbXBpbGUtZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0ZpeC1jb25maWd1cmUtZm9yLXNxcnQtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4X3NwYWNlX2lzc3Vlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXhfYXV0b19wdHJfZGVwcmVjYXRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLVNwZWNpZnktc3RkLWMtMTEtb24tY21kbGluZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdhZi1EaXNhYmxlLWVycm9ycy1kdWUtdG8tV2RlcHJlY2F0ZWQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjOTM5ZDkxNTZmZTk0MDk2MDA5OGYzODcwN2ZlYTgyNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMDRiNzM4Y2VjMDZjNjc4NmNlYWZhODZlNDczNWZkOGI5NzFjMDc4MjY1NzU0ODU0ZWYzNTZiMDM3OTU0MmVlIgotCi1pbmhlcml0IHBrZ2NvbmZpZyB3YWYgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjguYmIKaW5kZXggNWU3OThlZi4uNDQzNGFmOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuOC5iYgpAQCAtMzEsNyArMzEsNyBAQAogUEFDS0FHRUNPTkZJR1tzZXJpYWxdID0gIi0tZW5hYmxlLXNlcmlhbCwtLWRpc2FibGUtc2VyaWFsLGxvY2tkZXYiCiAKIGRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9saWJncGhvdG8yX3BvcnQvcG8vCisgICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vbGliZ3Bob3RvMl9wb3J0L3BvLwogICAgIGNkICR7U30vbGliZ3Bob3RvMl9wb3J0LwogICAgIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgJHtFWFRSQV9BVVRPUkVDT05GfSAkYWNwYXRocwogICAgIGNkICR7U30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xlcHRvbmljYS9sZXB0b25pY2FfMS43My5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xlcHRvbmljYS9sZXB0b25pY2FfMS43My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyZDI0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9sZXB0b25pY2EvbGVwdG9uaWNhXzEuNzMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBIHBlZGFnb2dpY2FsbHktb3JpZW50ZWQgb3BlbiBzb3VyY2Ugc2l0ZSBjb250YWluaW5nIHNvZnR3YXJlIHRoYXQgaXMgYnJvYWRseSB1c2VmdWwgZm9yIGltYWdlIHByb2Nlc3NpbmcgYW5kIGltYWdlIGFuYWx5c2lzIGFwcGxpY2F0aW9ucyIKLURFUEVORFMgPSAianBlZyB0aWZmIGxpYnBuZyB6bGliIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sZXB0b25pY2EtbGljZW5zZS50eHQ7bWQ1PTIwY2RkM2FmMDk3Y2E0MzFiODIwMDRjNjkxZjQwNmE2IgotCi1TUkNfVVJJID0gImh0dHA6Ly9sZXB0b25pY2EuY29tL3NvdXJjZS9sZXB0b25pY2EtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjA5MmNlYTJlNTY4Y2FkYTc5ZmZmMTc4ODIwMzk3OTIyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE5ZTQzMzVjNjc0ZTdiNzhhZjkzMzhkNTM4MmNjNTI2NmYzNGE2MmQ0Y2U1MzNkODYwYWY0OGVhYTg1OWFmYzEiCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLXdpdGhvdXQtbGlid2VicCBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnaWZsaWIiCi1QQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItLXdpdGgtbGlib3BlbmpwZWcsLS13aXRob3V0LWxpYm9wZW5qcGVnLG9wZW5qcGVnIgotUEFDS0FHRUNPTkZJR1tnaWZsaWJdID0gIi0td2l0aC1naWZsaWIsLS13aXRob3V0LWdpZmxpYixnaWZsaWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGVwdG9uaWNhL2xlcHRvbmljYV8xLjc0LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9sZXB0b25pY2EvbGVwdG9uaWNhXzEuNzQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWZhMDBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGVwdG9uaWNhL2xlcHRvbmljYV8xLjc0LjQuYmIKQEAgLTAsMCArMSwxOCBAQAorREVTQ1JJUFRJT04gPSAiQSBwZWRhZ29naWNhbGx5LW9yaWVudGVkIG9wZW4gc291cmNlIHNpdGUgY29udGFpbmluZyBzb2Z0d2FyZSB0aGF0IGlzIGJyb2FkbHkgdXNlZnVsIGZvciBpbWFnZSBwcm9jZXNzaW5nIGFuZCBpbWFnZSBhbmFseXNpcyBhcHBsaWNhdGlvbnMiCitERVBFTkRTID0gImpwZWcgdGlmZiBsaWJwbmcgemxpYiIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGVwdG9uaWNhLWxpY2Vuc2UudHh0O21kNT0zNGFhNTc5Mjk0ZTgyODRiN2I4NDhjOGQ1ZDM2MWU4ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vbGVwdG9uaWNhLmNvbS9zb3VyY2UvbGVwdG9uaWNhLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZjMyYmU5YmQyZTJjMTQyYmEwMTgwMzdhYjVkNzQ2ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyOWMzNTQyNmE0MTZiZjQ1NDQxM2M2ZmVjMjRjMjRhMGI2MzNlMjYxNDRhMTdlOTgzNTFiNmRmZmFhNGE4MzNiIgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgLS13aXRob3V0LWxpYndlYnAgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ2lmbGliIgorUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLS13aXRoLWxpYm9wZW5qcGVnLC0td2l0aG91dC1saWJvcGVuanBlZyxvcGVuanBlZyIKK1BBQ0tBR0VDT05GSUdbZ2lmbGliXSA9ICItLXdpdGgtZ2lmbGliLC0td2l0aG91dC1naWZsaWIsZ2lmbGliIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNleHkvbGlic2V4eS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZXh5L2xpYnNleHkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTExY2EwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNleHkvbGlic2V4eS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJMaWJzZXh5IGlzIGEgY29sbGVjdGlvbiBvZiBHVEsrIHdpZGdldHMgdGhhdCBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc3VjaCBzdGFuZGFyZCB3aWRnZXRzIGFzIEd0a0VudHJ5IGFuZCBHdGtMYWJlbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93aWtpLmNoaXB4ODYuY29tL3dpa2kvTGlic2V4eSIKLUFVVEhPUiA9ICJDaHJpc3RpYW4gSGFtbW9uZCA8Y2hpcHg4NkBjaGlweDg2LmNvbT4iCi1TRUNUSU9OID0gIngxMS9saWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLURFUEVORFMgPSAiZ3RrKyBlbmNoYW50IGxpYnhtbDIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3JlbGVhc2VzLmNoaXB4ODYuY29tL2xpYnNleHkvJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJzZXh5LXBrZ2NvbmZpZy1maXhlcy5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNleHkvbGlic2V4eS9saWJzZXh5LXBrZ2NvbmZpZy1maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNleHkvbGlic2V4eS9saWJzZXh5LXBrZ2NvbmZpZy1maXhlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFkYTk0Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZXh5L2xpYnNleHkvbGlic2V4eS1wa2djb25maWctZml4ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1JbmRleDogbGlic2V4eS0wLjEuMTEvbGlic2V4eS5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnNleHktMC4xLjExLm9yaWcvbGlic2V4eS5wYy5pbgkyMDA1LTExLTEwIDEwOjIxOjE4LjAwMDAwMDAwMCArMDAwMAotKysrIGxpYnNleHktMC4xLjExL2xpYnNleHkucGMuaW4JMjAwOC0wMy0wNSAxNDozNjozOS4wMDAwMDAwMDAgKzAwMDAKLUBAIC02LDcgKzYsOCBAQAotIE5hbWU6IGxpYnNleHkKLSBEZXNjcmlwdGlvbjogRG9pbmcgbmF1Z2h0eSB0aGluZ3MgdG8gZ29vZCB3aWRnZXRzCi0gVmVyc2lvbjogQFZFUlNJT05ACi0tTGliczogLUwke2xpYmRpcn0gLWxzZXh5IEBQQUNLQUdFX0xJQlNACi0tQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQFBBQ0tBR0VfQ0ZMQUdTQAotIAotK1JlcXVpcmVzOiBwYW5nbyBnbGliLTIuMCBndGsrLTIuMCBsaWJ4bWwtMi4wCi0rTGliczogLUwke2xpYmRpcn0gLWxzZXh5IAotK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZXh5L2xpYnNleHlfMC4xLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2V4eS9saWJzZXh5XzAuMS4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJhMWViYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZXh5L2xpYnNleHlfMC4xLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIGxpYnNleHkuaW5jCi0KLVBSID0gInIyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzNjMDc5YTI1MzI3MGVjOGJmYjk1MDhlNGJiMzA3NTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGM0MTAxYThjZGE1ZmNjYmJhODViYTFhMTVmNDZmMmNmNzVkZWFhOGIzYzUyNWNlNWIxMzViOWUxYThmZTQ5ZSIKLQotUE5CTEFDS0xJU1RbbGlic2V4eV0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2MDcvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlci8wMDAxLXJlbW92ZS13ZWJjbGllbnRzLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlci8wMDAxLXJlbW92ZS13ZWJjbGllbnRzLWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjQzNjVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXIvMDAwMS1yZW1vdmUtd2ViY2xpZW50cy1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA1YzJhOTRkLi5mOTgwMzhhIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMSw3ICsxLDcgQEAKLSBBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAotIAotLVNVQkRJUlM9bGlidm5jc2VydmVyIGV4YW1wbGVzIGxpYnZuY2NsaWVudCB3ZWJjbGllbnRzIGNsaWVudF9leGFtcGxlcyB0ZXN0Ci0tRElTVF9TVUJESVJTPWxpYnZuY3NlcnZlciBleGFtcGxlcyBsaWJ2bmNjbGllbnQgd2ViY2xpZW50cyBjbGllbnRfZXhhbXBsZXMgdGVzdAotK1NVQkRJUlM9bGlidm5jc2VydmVyIGV4YW1wbGVzIGxpYnZuY2NsaWVudCBjbGllbnRfZXhhbXBsZXMgdGVzdAotK0RJU1RfU1VCRElSUz1saWJ2bmNzZXJ2ZXIgZXhhbXBsZXMgbGlidm5jY2xpZW50IGNsaWVudF9leGFtcGxlcyB0ZXN0Ci0gRVhUUkFfRElTVCA9IENNYWtlTGlzdHMudHh0IHJmYi9yZmJpbnQuaC5jbWFrZSByZmIvcmZiY29uZmlnLmguY21ha2UKLSAKLSBiaW5fU0NSSVBUUyA9IGxpYnZuY3NlcnZlci1jb25maWcKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGNhOWYzYjMuLjliNDY0Y2YgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYwMCw5ICs2MDAsNiBAQCBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlCi0gCWxpYnZuY3NlcnZlci9NYWtlZmlsZQotIAlleGFtcGxlcy9NYWtlZmlsZQotIAlleGFtcGxlcy9hbmRyb2lkL01ha2VmaWxlCi0tCXdlYmNsaWVudHMvTWFrZWZpbGUKLS0Jd2ViY2xpZW50cy9qYXZhLWFwcGxldC9NYWtlZmlsZQotLQl3ZWJjbGllbnRzL2phdmEtYXBwbGV0L3NzbC9NYWtlZmlsZQotIAlsaWJ2bmNjbGllbnQvTWFrZWZpbGUKLSAJY2xpZW50X2V4YW1wbGVzL01ha2VmaWxlCi0gCXRlc3QvTWFrZWZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXIvMDAwMi1jb21tb24tYWRkLXNoYTEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyLzAwMDItY29tbW9uLWFkZC1zaGExLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjcwZDJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXIvMDAwMi1jb21tb24tYWRkLXNoYTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MjQgKzAsMCBAQAotZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGExLmMgYi9jb21tb24vc2hhMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTg4YjE4OAotLS0tIC9kZXYvbnVsbAotKysrIGIvY29tbW9uL3NoYTEuYwotQEAgLTAsMCArMSw0MTEgQEAKLSsvKgotKyAqIENvcHlyaWdodCAoQykgVGhlIEludGVybmV0IFNvY2lldHkgKDIwMDEpLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSsgKgotKyAqIFRoaXMgZG9jdW1lbnQgYW5kIHRyYW5zbGF0aW9ucyBvZiBpdCBtYXkgYmUgY29waWVkIGFuZCBmdXJuaXNoZWQgdG8KLSsgKiBvdGhlcnMsIGFuZCBkZXJpdmF0aXZlIHdvcmtzIHRoYXQgY29tbWVudCBvbiBvciBvdGhlcndpc2UgZXhwbGFpbiBpdAotKyAqIG9yIGFzc2lzdCBpbiBpdHMgaW1wbGVtZW50YXRpb24gbWF5IGJlIHByZXBhcmVkLCBjb3BpZWQsIHB1Ymxpc2hlZAotKyAqIGFuZCBkaXN0cmlidXRlZCwgaW4gd2hvbGUgb3IgaW4gcGFydCwgd2l0aG91dCByZXN0cmljdGlvbiBvZiBhbnkKLSsgKiBraW5kLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcmUKLSsgKiBpbmNsdWRlZCBvbiBhbGwgc3VjaCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MuICBIb3dldmVyLCB0aGlzCi0rICogZG9jdW1lbnQgaXRzZWxmIG1heSBub3QgYmUgbW9kaWZpZWQgaW4gYW55IHdheSwgc3VjaCBhcyBieSByZW1vdmluZwotKyAqIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIHJlZmVyZW5jZXMgdG8gdGhlIEludGVybmV0IFNvY2lldHkgb3Igb3RoZXIKLSsgKiBJbnRlcm5ldCBvcmdhbml6YXRpb25zLCBleGNlcHQgYXMgbmVlZGVkIGZvciB0aGUgcHVycG9zZSBvZgotKyAqIGRldmVsb3BpbmcgSW50ZXJuZXQgc3RhbmRhcmRzIGluIHdoaWNoIGNhc2UgdGhlIHByb2NlZHVyZXMgZm9yCi0rICogY29weXJpZ2h0cyBkZWZpbmVkIGluIHRoZSBJbnRlcm5ldCBTdGFuZGFyZHMgcHJvY2VzcyBtdXN0IGJlCi0rICogZm9sbG93ZWQsIG9yIGFzIHJlcXVpcmVkIHRvIHRyYW5zbGF0ZSBpdCBpbnRvIGxhbmd1YWdlcyBvdGhlciB0aGFuCi0rICogRW5nbGlzaC4KLSsgKgotKyAqIFRoZSBsaW1pdGVkIHBlcm1pc3Npb25zIGdyYW50ZWQgYWJvdmUgYXJlIHBlcnBldHVhbCBhbmQgd2lsbCBub3QgYmUKLSsgKiByZXZva2VkIGJ5IHRoZSBJbnRlcm5ldCBTb2NpZXR5IG9yIGl0cyBzdWNjZXNzb3JzIG9yIGFzc2lnbnMuCi0rICoKLSsgKiBUaGlzIGRvY3VtZW50IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBwcm92aWRlZCBvbiBhbgotKyAqICJBUyBJUyIgYmFzaXMgYW5kIFRIRSBJTlRFUk5FVCBTT0NJRVRZIEFORCBUSEUgSU5URVJORVQgRU5HSU5FRVJJTkcKLSsgKiBUQVNLIEZPUkNFIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUywgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcKLSsgKiBCVVQgTk9UIExJTUlURUQgVE8gQU5ZIFdBUlJBTlRZIFRIQVQgVEhFIFVTRSBPRiBUSEUgSU5GT1JNQVRJT04KLSsgKiBIRVJFSU4gV0lMTCBOT1QgSU5GUklOR0UgQU5ZIFJJR0hUUyBPUiBBTlkgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0rICogTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotKyAqLwotKwotKy8qCi0rICogIHNoYTEuYwotKyAqCi0rICogIERlc2NyaXB0aW9uOgotKyAqICAgICAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIFNlY3VyZSBIYXNoaW5nIEFsZ29yaXRobSAxIGFzCi0rICogICAgICBkZWZpbmVkIGluIEZJUFMgUFVCIDE4MC0xIHB1Ymxpc2hlZCBBcHJpbCAxNywgMTk5NS4KLSsgKgotKyAqICAgICAgVGhlIFNIQS0xLCBwcm9kdWNlcyBhIDE2MC1iaXQgbWVzc2FnZSBkaWdlc3QgZm9yIGEgZ2l2ZW4KLSsgKiAgICAgIGRhdGEgc3RyZWFtLiAgSXQgc2hvdWxkIHRha2UgYWJvdXQgMioqbiBzdGVwcyB0byBmaW5kIGEKLSsgKiAgICAgIG1lc3NhZ2Ugd2l0aCB0aGUgc2FtZSBkaWdlc3QgYXMgYSBnaXZlbiBtZXNzYWdlIGFuZAotKyAqICAgICAgMioqKG4vMikgdG8gZmluZCBhbnkgdHdvIG1lc3NhZ2VzIHdpdGggdGhlIHNhbWUgZGlnZXN0LAotKyAqICAgICAgd2hlbiBuIGlzIHRoZSBkaWdlc3Qgc2l6ZSBpbiBiaXRzLiAgVGhlcmVmb3JlLCB0aGlzCi0rICogICAgICBhbGdvcml0aG0gY2FuIHNlcnZlIGFzIGEgbWVhbnMgb2YgcHJvdmlkaW5nIGEKLSsgKiAgICAgICJmaW5nZXJwcmludCIgZm9yIGEgbWVzc2FnZS4KLSsgKgotKyAqICBQb3J0YWJpbGl0eSBJc3N1ZXM6Ci0rICogICAgICBTSEEtMSBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIDMyLWJpdCAid29yZHMiLiAgVGhpcyBjb2RlCi0rICogICAgICB1c2VzIDxzdGRpbnQuaD4gKGluY2x1ZGVkIHZpYSAic2hhMS5oIiB0byBkZWZpbmUgMzIgYW5kIDgKLSsgKiAgICAgIGJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGVzLiAgSWYgeW91ciBDIGNvbXBpbGVyIGRvZXMgbm90Ci0rICogICAgICBzdXBwb3J0IDMyIGJpdCB1bnNpZ25lZCBpbnRlZ2VycywgdGhpcyBjb2RlIGlzIG5vdAotKyAqICAgICAgYXBwcm9wcmlhdGUuCi0rICoKLSsgKiAgQ2F2ZWF0czoKLSsgKiAgICAgIFNIQS0xIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBtZXNzYWdlcyBsZXNzIHRoYW4gMl42NCBiaXRzCi0rICogICAgICBsb25nLiAgQWx0aG91Z2ggU0hBLTEgYWxsb3dzIGEgbWVzc2FnZSBkaWdlc3QgdG8gYmUgZ2VuZXJhdGVkCi0rICogICAgICBmb3IgbWVzc2FnZXMgb2YgYW55IG51bWJlciBvZiBiaXRzIGxlc3MgdGhhbiAyXjY0LCB0aGlzCi0rICogICAgICBpbXBsZW1lbnRhdGlvbiBvbmx5IHdvcmtzIHdpdGggbWVzc2FnZXMgd2l0aCBhIGxlbmd0aCB0aGF0IGlzCi0rICogICAgICBhIG11bHRpcGxlIG9mIHRoZSBzaXplIG9mIGFuIDgtYml0IGNoYXJhY3Rlci4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlICJzaGExLmgiCi0rCi0rLyoKLSsgKiAgRGVmaW5lIHRoZSBTSEExIGNpcmN1bGFyIGxlZnQgc2hpZnQgbWFjcm8KLSsgKi8KLSsjZGVmaW5lIFNIQTFDaXJjdWxhclNoaWZ0KGJpdHMsd29yZCkgXAotKyAgICAgICAgICAgICAgICAoKCh3b3JkKSA8PCAoYml0cykpIHwgKCh3b3JkKSA+PiAoMzItKGJpdHMpKSkpCi0rCi0rLyogTG9jYWwgRnVuY3Rpb24gUHJvdG90eXB0ZXMgKi8KLSt2b2lkIFNIQTFQYWRNZXNzYWdlKFNIQTFDb250ZXh0ICopOwotK3ZvaWQgU0hBMVByb2Nlc3NNZXNzYWdlQmxvY2soU0hBMUNvbnRleHQgKik7Ci0rCi0rLyoKLSsgKiAgU0hBMVJlc2V0Ci0rICoKLSsgKiAgRGVzY3JpcHRpb246Ci0rICogICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgaW5pdGlhbGl6ZSB0aGUgU0hBMUNvbnRleHQgaW4gcHJlcGFyYXRpb24KLSsgKiAgICAgIGZvciBjb21wdXRpbmcgYSBuZXcgU0hBMSBtZXNzYWdlIGRpZ2VzdC4KLSsgKgotKyAqICBQYXJhbWV0ZXJzOgotKyAqICAgICAgY29udGV4dDogW2luL291dF0KLSsgKiAgICAgICAgICBUaGUgY29udGV4dCB0byByZXNldC4KLSsgKgotKyAqICBSZXR1cm5zOgotKyAqICAgICAgc2hhIEVycm9yIENvZGUuCi0rICoKLSsgKi8KLStpbnQgU0hBMVJlc2V0KFNIQTFDb250ZXh0ICpjb250ZXh0KQotK3sKLSsgICAgaWYgKCFjb250ZXh0KQotKyAgICB7Ci0rICAgICAgICByZXR1cm4gc2hhTnVsbDsKLSsgICAgfQotKwotKyAgICBjb250ZXh0LT5MZW5ndGhfTG93ICAgICAgICAgICAgID0gMDsKLSsgICAgY29udGV4dC0+TGVuZ3RoX0hpZ2ggICAgICAgICAgICA9IDA7Ci0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXggICAgPSAwOwotKwotKyAgICBjb250ZXh0LT5JbnRlcm1lZGlhdGVfSGFzaFswXSAgID0gMHg2NzQ1MjMwMTsKLSsgICAgY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbMV0gICA9IDB4RUZDREFCODk7Ci0rICAgIGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzJdICAgPSAweDk4QkFEQ0ZFOwotKyAgICBjb250ZXh0LT5JbnRlcm1lZGlhdGVfSGFzaFszXSAgID0gMHgxMDMyNTQ3NjsKLSsgICAgY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbNF0gICA9IDB4QzNEMkUxRjA7Ci0rCi0rICAgIGNvbnRleHQtPkNvbXB1dGVkICAgPSAwOwotKyAgICBjb250ZXh0LT5Db3JydXB0ZWQgID0gMDsKLSsgICAgcmV0dXJuIHNoYVN1Y2Nlc3M7Ci0rfQotKwotKy8qCi0rICogIFNIQTFSZXN1bHQKLSsgKgotKyAqICBEZXNjcmlwdGlvbjoKLSsgKiAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIDE2MC1iaXQgbWVzc2FnZSBkaWdlc3QgaW50byB0aGUKLSsgKiAgICAgIE1lc3NhZ2VfRGlnZXN0IGFycmF5ICBwcm92aWRlZCBieSB0aGUgY2FsbGVyLgotKyAqICAgICAgTk9URTogVGhlIGZpcnN0IG9jdGV0IG9mIGhhc2ggaXMgc3RvcmVkIGluIHRoZSAwdGggZWxlbWVudCwKLSsgKiAgICAgICAgICAgIHRoZSBsYXN0IG9jdGV0IG9mIGhhc2ggaW4gdGhlIDE5dGggZWxlbWVudC4KLSsgKgotKyAqICBQYXJhbWV0ZXJzOgotKyAqICAgICAgY29udGV4dDogW2luL291dF0KLSsgKiAgICAgICAgICBUaGUgY29udGV4dCB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBTSEEtMSBoYXNoLgotKyAqICAgICAgTWVzc2FnZV9EaWdlc3Q6IFtvdXRdCi0rICogICAgICAgICAgV2hlcmUgdGhlIGRpZ2VzdCBpcyByZXR1cm5lZC4KLSsgKgotKyAqICBSZXR1cm5zOgotKyAqICAgICAgc2hhIEVycm9yIENvZGUuCi0rICoKLSsgKi8KLStpbnQgU0hBMVJlc3VsdCggU0hBMUNvbnRleHQgKmNvbnRleHQsCi0rICAgICAgICAgICAgICAgIHVpbnQ4X3QgTWVzc2FnZV9EaWdlc3RbU0hBMUhhc2hTaXplXSkKLSt7Ci0rICAgIGludCBpOwotKwotKyAgICBpZiAoIWNvbnRleHQgfHwgIU1lc3NhZ2VfRGlnZXN0KQotKyAgICB7Ci0rICAgICAgICByZXR1cm4gc2hhTnVsbDsKLSsgICAgfQotKwotKyAgICBpZiAoY29udGV4dC0+Q29ycnVwdGVkKQotKyAgICB7Ci0rICAgICAgICByZXR1cm4gY29udGV4dC0+Q29ycnVwdGVkOwotKyAgICB9Ci0rCi0rICAgIGlmICghY29udGV4dC0+Q29tcHV0ZWQpCi0rICAgIHsKLSsgICAgICAgIFNIQTFQYWRNZXNzYWdlKGNvbnRleHQpOwotKyAgICAgICAgZm9yKGk9MDsgaTw2NDsgKytpKQotKyAgICAgICAgewotKyAgICAgICAgICAgIC8qIG1lc3NhZ2UgbWF5IGJlIHNlbnNpdGl2ZSwgY2xlYXIgaXQgb3V0ICovCi0rICAgICAgICAgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1tpXSA9IDA7Ci0rICAgICAgICB9Ci0rICAgICAgICBjb250ZXh0LT5MZW5ndGhfTG93ID0gMDsgICAgLyogYW5kIGNsZWFyIGxlbmd0aCAqLwotKyAgICAgICAgY29udGV4dC0+TGVuZ3RoX0hpZ2ggPSAwOwotKyAgICAgICAgY29udGV4dC0+Q29tcHV0ZWQgPSAxOwotKyAgICB9Ci0rCi0rICAgIGZvcihpID0gMDsgaSA8IFNIQTFIYXNoU2l6ZTsgKytpKQotKyAgICB7Ci0rICAgICAgICBNZXNzYWdlX0RpZ2VzdFtpXSA9IGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoW2k+PjJdCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+IDggKiAoIDMgLSAoIGkgJiAweDAzICkgKTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gc2hhU3VjY2VzczsKLSt9Ci0rCi0rLyoKLSsgKiAgU0hBMUlucHV0Ci0rICoKLSsgKiAgRGVzY3JpcHRpb246Ci0rICogICAgICBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW4gYXJyYXkgb2Ygb2N0ZXRzIGFzIHRoZSBuZXh0IHBvcnRpb24KLSsgKiAgICAgIG9mIHRoZSBtZXNzYWdlLgotKyAqCi0rICogIFBhcmFtZXRlcnM6Ci0rICogICAgICBjb250ZXh0OiBbaW4vb3V0XQotKyAqICAgICAgICAgIFRoZSBTSEEgY29udGV4dCB0byB1cGRhdGUKLSsgKiAgICAgIG1lc3NhZ2VfYXJyYXk6IFtpbl0KLSsgKiAgICAgICAgICBBbiBhcnJheSBvZiBjaGFyYWN0ZXJzIHJlcHJlc2VudGluZyB0aGUgbmV4dCBwb3J0aW9uIG9mCi0rICogICAgICAgICAgdGhlIG1lc3NhZ2UuCi0rICogICAgICBsZW5ndGg6IFtpbl0KLSsgKiAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIGluIG1lc3NhZ2VfYXJyYXkKLSsgKgotKyAqICBSZXR1cm5zOgotKyAqICAgICAgc2hhIEVycm9yIENvZGUuCi0rICoKLSsgKi8KLStpbnQgU0hBMUlucHV0KCAgICBTSEExQ29udGV4dCAgICAqY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICAqbWVzc2FnZV9hcnJheSwKLSsgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAgICAgICBsZW5ndGgpCi0rewotKyAgICBpZiAoIWxlbmd0aCkKLSsgICAgewotKyAgICAgICAgcmV0dXJuIHNoYVN1Y2Nlc3M7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFjb250ZXh0IHx8ICFtZXNzYWdlX2FycmF5KQotKyAgICB7Ci0rICAgICAgICByZXR1cm4gc2hhTnVsbDsKLSsgICAgfQotKwotKyAgICBpZiAoY29udGV4dC0+Q29tcHV0ZWQpCi0rICAgIHsKLSsgICAgICAgIGNvbnRleHQtPkNvcnJ1cHRlZCA9IHNoYVN0YXRlRXJyb3I7Ci0rICAgICAgICByZXR1cm4gc2hhU3RhdGVFcnJvcjsKLSsgICAgfQotKwotKyAgICBpZiAoY29udGV4dC0+Q29ycnVwdGVkKQotKyAgICB7Ci0rICAgICAgICAgcmV0dXJuIGNvbnRleHQtPkNvcnJ1cHRlZDsKLSsgICAgfQotKyAgICB3aGlsZShsZW5ndGgtLSAmJiAhY29udGV4dC0+Q29ycnVwdGVkKQotKyAgICB7Ci0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCsrXSA9Ci0rICAgICAgICAgICAgICAgICAgICAoKm1lc3NhZ2VfYXJyYXkgJiAweEZGKTsKLSsKLSsgICAgY29udGV4dC0+TGVuZ3RoX0xvdyArPSA4OwotKyAgICBpZiAoY29udGV4dC0+TGVuZ3RoX0xvdyA9PSAwKQotKyAgICB7Ci0rICAgICAgICBjb250ZXh0LT5MZW5ndGhfSGlnaCsrOwotKyAgICAgICAgaWYgKGNvbnRleHQtPkxlbmd0aF9IaWdoID09IDApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgLyogTWVzc2FnZSBpcyB0b28gbG9uZyAqLwotKyAgICAgICAgICAgIGNvbnRleHQtPkNvcnJ1cHRlZCA9IDE7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgaWYgKGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXggPT0gNjQpCi0rICAgIHsKLSsgICAgICAgIFNIQTFQcm9jZXNzTWVzc2FnZUJsb2NrKGNvbnRleHQpOwotKyAgICB9Ci0rCi0rICAgIG1lc3NhZ2VfYXJyYXkrKzsKLSsgICAgfQotKwotKyAgICByZXR1cm4gc2hhU3VjY2VzczsKLSt9Ci0rCi0rLyoKLSsgKiAgU0hBMVByb2Nlc3NNZXNzYWdlQmxvY2sKLSsgKgotKyAqICBEZXNjcmlwdGlvbjoKLSsgKiAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBwcm9jZXNzIHRoZSBuZXh0IDUxMiBiaXRzIG9mIHRoZSBtZXNzYWdlCi0rICogICAgICBzdG9yZWQgaW4gdGhlIE1lc3NhZ2VfQmxvY2sgYXJyYXkuCi0rICoKLSsgKiAgUGFyYW1ldGVyczoKLSsgKiAgICAgIE5vbmUuCi0rICoKLSsgKiAgUmV0dXJuczoKLSsgKiAgICAgIE5vdGhpbmcuCi0rICoKLSsgKiAgQ29tbWVudHM6Ci0rICogICAgICBNYW55IG9mIHRoZSB2YXJpYWJsZSBuYW1lcyBpbiB0aGlzIGNvZGUsIGVzcGVjaWFsbHkgdGhlCi0rICogICAgICBzaW5nbGUgY2hhcmFjdGVyIG5hbWVzLCB3ZXJlIHVzZWQgYmVjYXVzZSB0aG9zZSB3ZXJlIHRoZQotKyAqICAgICAgbmFtZXMgdXNlZCBpbiB0aGUgcHVibGljYXRpb24uCi0rICoKLSsgKgotKyAqLwotK3ZvaWQgU0hBMVByb2Nlc3NNZXNzYWdlQmxvY2soU0hBMUNvbnRleHQgKmNvbnRleHQpCi0rewotKyAgICBjb25zdCB1aW50MzJfdCBLW10gPSAgICB7ICAgICAgIC8qIENvbnN0YW50cyBkZWZpbmVkIGluIFNIQS0xICAgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1QTgyNzk5OSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2RUQ5RUJBMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RjFCQkNEQywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhDQTYyQzFENgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwotKyAgICBpbnQgICAgICAgICAgIHQ7ICAgICAgICAgICAgICAgICAvKiBMb29wIGNvdW50ZXIgICAgICAgICAgICAgICAgKi8KLSsgICAgdWludDMyX3QgICAgICB0ZW1wOyAgICAgICAgICAgICAgLyogVGVtcG9yYXJ5IHdvcmQgdmFsdWUgICAgICAgICovCi0rICAgIHVpbnQzMl90ICAgICAgV1s4MF07ICAgICAgICAgICAgIC8qIFdvcmQgc2VxdWVuY2UgICAgICAgICAgICAgICAqLwotKyAgICB1aW50MzJfdCAgICAgIEEsIEIsIEMsIEQsIEU7ICAgICAvKiBXb3JkIGJ1ZmZlcnMgICAgICAgICAgICAgICAgKi8KLSsKLSsgICAgLyoKLSsgICAgICogIEluaXRpYWxpemUgdGhlIGZpcnN0IDE2IHdvcmRzIGluIHRoZSBhcnJheSBXCi0rICAgICAqLwotKyAgICBmb3IodCA9IDA7IHQgPCAxNjsgdCsrKQotKyAgICB7Ci0rICAgICAgICBXW3RdID0gY29udGV4dC0+TWVzc2FnZV9CbG9ja1t0ICogNF0gPDwgMjQ7Ci0rICAgICAgICBXW3RdIHw9IGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbdCAqIDQgKyAxXSA8PCAxNjsKLSsgICAgICAgIFdbdF0gfD0gY29udGV4dC0+TWVzc2FnZV9CbG9ja1t0ICogNCArIDJdIDw8IDg7Ci0rICAgICAgICBXW3RdIHw9IGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbdCAqIDQgKyAzXTsKLSsgICAgfQotKwotKyAgICBmb3IodCA9IDE2OyB0IDwgODA7IHQrKykKLSsgICAgewotKyAgICAgICBXW3RdID0gU0hBMUNpcmN1bGFyU2hpZnQoMSxXW3QtM10gXiBXW3QtOF0gXiBXW3QtMTRdIF4gV1t0LTE2XSk7Ci0rICAgIH0KLSsKLSsgICAgQSA9IGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzBdOwotKyAgICBCID0gY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbMV07Ci0rICAgIEMgPSBjb250ZXh0LT5JbnRlcm1lZGlhdGVfSGFzaFsyXTsKLSsgICAgRCA9IGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzNdOwotKyAgICBFID0gY29udGV4dC0+SW50ZXJtZWRpYXRlX0hhc2hbNF07Ci0rCi0rICAgIGZvcih0ID0gMDsgdCA8IDIwOyB0KyspCi0rICAgIHsKLSsgICAgICAgIHRlbXAgPSAgU0hBMUNpcmN1bGFyU2hpZnQoNSxBKSArCi0rICAgICAgICAgICAgICAgICgoQiAmIEMpIHwgKCh+QikgJiBEKSkgKyBFICsgV1t0XSArIEtbMF07Ci0rICAgICAgICBFID0gRDsKLSsgICAgICAgIEQgPSBDOwotKyAgICAgICAgQyA9IFNIQTFDaXJjdWxhclNoaWZ0KDMwLEIpOwotKyAgICAgICAgQiA9IEE7Ci0rICAgICAgICBBID0gdGVtcDsKLSsgICAgfQotKwotKyAgICBmb3IodCA9IDIwOyB0IDwgNDA7IHQrKykKLSsgICAgewotKyAgICAgICAgdGVtcCA9IFNIQTFDaXJjdWxhclNoaWZ0KDUsQSkgKyAoQiBeIEMgXiBEKSArIEUgKyBXW3RdICsgS1sxXTsKLSsgICAgICAgIEUgPSBEOwotKyAgICAgICAgRCA9IEM7Ci0rICAgICAgICBDID0gU0hBMUNpcmN1bGFyU2hpZnQoMzAsQik7Ci0rICAgICAgICBCID0gQTsKLSsgICAgICAgIEEgPSB0ZW1wOwotKyAgICB9Ci0rCi0rICAgIGZvcih0ID0gNDA7IHQgPCA2MDsgdCsrKQotKyAgICB7Ci0rICAgICAgICB0ZW1wID0gU0hBMUNpcmN1bGFyU2hpZnQoNSxBKSArCi0rICAgICAgICAgICAgICAgKChCICYgQykgfCAoQiAmIEQpIHwgKEMgJiBEKSkgKyBFICsgV1t0XSArIEtbMl07Ci0rICAgICAgICBFID0gRDsKLSsgICAgICAgIEQgPSBDOwotKyAgICAgICAgQyA9IFNIQTFDaXJjdWxhclNoaWZ0KDMwLEIpOwotKyAgICAgICAgQiA9IEE7Ci0rICAgICAgICBBID0gdGVtcDsKLSsgICAgfQotKwotKyAgICBmb3IodCA9IDYwOyB0IDwgODA7IHQrKykKLSsgICAgewotKyAgICAgICAgdGVtcCA9IFNIQTFDaXJjdWxhclNoaWZ0KDUsQSkgKyAoQiBeIEMgXiBEKSArIEUgKyBXW3RdICsgS1szXTsKLSsgICAgICAgIEUgPSBEOwotKyAgICAgICAgRCA9IEM7Ci0rICAgICAgICBDID0gU0hBMUNpcmN1bGFyU2hpZnQoMzAsQik7Ci0rICAgICAgICBCID0gQTsKLSsgICAgICAgIEEgPSB0ZW1wOwotKyAgICB9Ci0rCi0rICAgIGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzBdICs9IEE7Ci0rICAgIGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzFdICs9IEI7Ci0rICAgIGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzJdICs9IEM7Ci0rICAgIGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzNdICs9IEQ7Ci0rICAgIGNvbnRleHQtPkludGVybWVkaWF0ZV9IYXNoWzRdICs9IEU7Ci0rCi0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXggPSAwOwotK30KLSsKLSsKLSsvKgotKyAqICBTSEExUGFkTWVzc2FnZQotKyAqCi0rICogIERlc2NyaXB0aW9uOgotKyAqICAgICAgQWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCwgdGhlIG1lc3NhZ2UgbXVzdCBiZSBwYWRkZWQgdG8gYW4gZXZlbgotKyAqICAgICAgNTEyIGJpdHMuICBUaGUgZmlyc3QgcGFkZGluZyBiaXQgbXVzdCBiZSBhICcxJy4gIFRoZSBsYXN0IDY0Ci0rICogICAgICBiaXRzIHJlcHJlc2VudCB0aGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBtZXNzYWdlLiAgQWxsIGJpdHMgaW4KLSsgKiAgICAgIGJldHdlZW4gc2hvdWxkIGJlIDAuICBUaGlzIGZ1bmN0aW9uIHdpbGwgcGFkIHRoZSBtZXNzYWdlCi0rICogICAgICBhY2NvcmRpbmcgdG8gdGhvc2UgcnVsZXMgYnkgZmlsbGluZyB0aGUgTWVzc2FnZV9CbG9jayBhcnJheQotKyAqICAgICAgYWNjb3JkaW5nbHkuICBJdCB3aWxsIGFsc28gY2FsbCB0aGUgUHJvY2Vzc01lc3NhZ2VCbG9jayBmdW5jdGlvbgotKyAqICAgICAgcHJvdmlkZWQgYXBwcm9wcmlhdGVseS4gIFdoZW4gaXQgcmV0dXJucywgaXQgY2FuIGJlIGFzc3VtZWQgdGhhdAotKyAqICAgICAgdGhlIG1lc3NhZ2UgZGlnZXN0IGhhcyBiZWVuIGNvbXB1dGVkLgotKyAqCi0rICogIFBhcmFtZXRlcnM6Ci0rICogICAgICBjb250ZXh0OiBbaW4vb3V0XQotKyAqICAgICAgICAgIFRoZSBjb250ZXh0IHRvIHBhZAotKyAqICAgICAgUHJvY2Vzc01lc3NhZ2VCbG9jazogW2luXQotKyAqICAgICAgICAgIFRoZSBhcHByb3ByaWF0ZSBTSEEqUHJvY2Vzc01lc3NhZ2VCbG9jayBmdW5jdGlvbgotKyAqICBSZXR1cm5zOgotKyAqICAgICAgTm90aGluZy4KLSsgKgotKyAqLwotKwotK3ZvaWQgU0hBMVBhZE1lc3NhZ2UoU0hBMUNvbnRleHQgKmNvbnRleHQpCi0rewotKyAgICAvKgotKyAgICAgKiAgQ2hlY2sgdG8gc2VlIGlmIHRoZSBjdXJyZW50IG1lc3NhZ2UgYmxvY2sgaXMgdG9vIHNtYWxsIHRvIGhvbGQKLSsgICAgICogIHRoZSBpbml0aWFsIHBhZGRpbmcgYml0cyBhbmQgbGVuZ3RoLiAgSWYgc28sIHdlIHdpbGwgcGFkIHRoZQotKyAgICAgKiAgYmxvY2ssIHByb2Nlc3MgaXQsIGFuZCB0aGVuIGNvbnRpbnVlIHBhZGRpbmcgaW50byBhIHNlY29uZAotKyAgICAgKiAgYmxvY2suCi0rICAgICAqLwotKyAgICBpZiAoY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCA+IDU1KQotKyAgICB7Ci0rICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2NvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXgrK10gPSAweDgwOwotKyAgICAgICAgd2hpbGUoY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCA8IDY0KQotKyAgICAgICAgewotKyAgICAgICAgICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbY29udGV4dC0+TWVzc2FnZV9CbG9ja19JbmRleCsrXSA9IDA7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBTSEExUHJvY2Vzc01lc3NhZ2VCbG9jayhjb250ZXh0KTsKLSsKLSsgICAgICAgIHdoaWxlKGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXggPCA1NikKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2NvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXgrK10gPSAwOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAgewotKyAgICAgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1tjb250ZXh0LT5NZXNzYWdlX0Jsb2NrX0luZGV4KytdID0gMHg4MDsKLSsgICAgICAgIHdoaWxlKGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXggPCA1NikKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrW2NvbnRleHQtPk1lc3NhZ2VfQmxvY2tfSW5kZXgrK10gPSAwOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIC8qCi0rICAgICAqICBTdG9yZSB0aGUgbWVzc2FnZSBsZW5ndGggYXMgdGhlIGxhc3QgOCBvY3RldHMKLSsgICAgICovCi0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbNTZdID0gY29udGV4dC0+TGVuZ3RoX0hpZ2ggPj4gMjQ7Ci0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbNTddID0gY29udGV4dC0+TGVuZ3RoX0hpZ2ggPj4gMTY7Ci0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbNThdID0gY29udGV4dC0+TGVuZ3RoX0hpZ2ggPj4gODsKLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s1OV0gPSBjb250ZXh0LT5MZW5ndGhfSGlnaDsKLSsgICAgY29udGV4dC0+TWVzc2FnZV9CbG9ja1s2MF0gPSBjb250ZXh0LT5MZW5ndGhfTG93ID4+IDI0OwotKyAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrWzYxXSA9IGNvbnRleHQtPkxlbmd0aF9Mb3cgPj4gMTY7Ci0rICAgIGNvbnRleHQtPk1lc3NhZ2VfQmxvY2tbNjJdID0gY29udGV4dC0+TGVuZ3RoX0xvdyA+PiA4OwotKyAgICBjb250ZXh0LT5NZXNzYWdlX0Jsb2NrWzYzXSA9IGNvbnRleHQtPkxlbmd0aF9Mb3c7Ci0rCi0rICAgIFNIQTFQcm9jZXNzTWVzc2FnZUJsb2NrKGNvbnRleHQpOwotK30KLWRpZmYgLS1naXQgYS9jb21tb24vc2hhMS5oIGIvY29tbW9uL3NoYTEuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjFkNDliMWIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2NvbW1vbi9zaGExLmgKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKEMpIFRoZSBJbnRlcm5ldCBTb2NpZXR5ICgyMDAxKS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0rICoKLSsgKiBUaGlzIGRvY3VtZW50IGFuZCB0cmFuc2xhdGlvbnMgb2YgaXQgbWF5IGJlIGNvcGllZCBhbmQgZnVybmlzaGVkIHRvCi0rICogb3RoZXJzLCBhbmQgZGVyaXZhdGl2ZSB3b3JrcyB0aGF0IGNvbW1lbnQgb24gb3Igb3RoZXJ3aXNlIGV4cGxhaW4gaXQKLSsgKiBvciBhc3Npc3QgaW4gaXRzIGltcGxlbWVudGF0aW9uIG1heSBiZSBwcmVwYXJlZCwgY29waWVkLCBwdWJsaXNoZWQKLSsgKiBhbmQgZGlzdHJpYnV0ZWQsIGluIHdob2xlIG9yIGluIHBhcnQsIHdpdGhvdXQgcmVzdHJpY3Rpb24gb2YgYW55Ci0rICoga2luZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXJlCi0rICogaW5jbHVkZWQgb24gYWxsIHN1Y2ggY29waWVzIGFuZCBkZXJpdmF0aXZlIHdvcmtzLiAgSG93ZXZlciwgdGhpcwotKyAqIGRvY3VtZW50IGl0c2VsZiBtYXkgbm90IGJlIG1vZGlmaWVkIGluIGFueSB3YXksIHN1Y2ggYXMgYnkgcmVtb3ZpbmcKLSsgKiB0aGUgY29weXJpZ2h0IG5vdGljZSBvciByZWZlcmVuY2VzIHRvIHRoZSBJbnRlcm5ldCBTb2NpZXR5IG9yIG90aGVyCi0rICogSW50ZXJuZXQgb3JnYW5pemF0aW9ucywgZXhjZXB0IGFzIG5lZWRlZCBmb3IgdGhlIHB1cnBvc2Ugb2YKLSsgKiBkZXZlbG9waW5nIEludGVybmV0IHN0YW5kYXJkcyBpbiB3aGljaCBjYXNlIHRoZSBwcm9jZWR1cmVzIGZvcgotKyAqIGNvcHlyaWdodHMgZGVmaW5lZCBpbiB0aGUgSW50ZXJuZXQgU3RhbmRhcmRzIHByb2Nlc3MgbXVzdCBiZQotKyAqIGZvbGxvd2VkLCBvciBhcyByZXF1aXJlZCB0byB0cmFuc2xhdGUgaXQgaW50byBsYW5ndWFnZXMgb3RoZXIgdGhhbgotKyAqIEVuZ2xpc2guCi0rICoKLSsgKiBUaGUgbGltaXRlZCBwZXJtaXNzaW9ucyBncmFudGVkIGFib3ZlIGFyZSBwZXJwZXR1YWwgYW5kIHdpbGwgbm90IGJlCi0rICogcmV2b2tlZCBieSB0aGUgSW50ZXJuZXQgU29jaWV0eSBvciBpdHMgc3VjY2Vzc29ycyBvciBhc3NpZ25zLgotKyAqCi0rICogVGhpcyBkb2N1bWVudCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJlaW4gaXMgcHJvdmlkZWQgb24gYW4KLSsgKiAiQVMgSVMiIGJhc2lzIGFuZCBUSEUgSU5URVJORVQgU09DSUVUWSBBTkQgVEhFIElOVEVSTkVUIEVOR0lORUVSSU5HCi0rICogVEFTSyBGT1JDRSBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMsIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HCi0rICogQlVUIE5PVCBMSU1JVEVEIFRPIEFOWSBXQVJSQU5UWSBUSEFUIFRIRSBVU0UgT0YgVEhFIElORk9STUFUSU9OCi0rICogSEVSRUlOIFdJTEwgTk9UIElORlJJTkdFIEFOWSBSSUdIVFMgT1IgQU5ZIElNUExJRUQgV0FSUkFOVElFUyBPRgotKyAqIE1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KLSsgKi8KLSsKLSsvKgotKyAqICBzaGExLmgKLSsgKgotKyAqICBEZXNjcmlwdGlvbjoKLSsgKiAgICAgIFRoaXMgaXMgdGhlIGhlYWRlciBmaWxlIGZvciBjb2RlIHdoaWNoIGltcGxlbWVudHMgdGhlIFNlY3VyZQotKyAqICAgICAgSGFzaGluZyBBbGdvcml0aG0gMSBhcyBkZWZpbmVkIGluIEZJUFMgUFVCIDE4MC0xIHB1Ymxpc2hlZAotKyAqICAgICAgQXByaWwgMTcsIDE5OTUuCi0rICoKLSsgKiAgICAgIE1hbnkgb2YgdGhlIHZhcmlhYmxlIG5hbWVzIGluIHRoaXMgY29kZSwgZXNwZWNpYWxseSB0aGUKLSsgKiAgICAgIHNpbmdsZSBjaGFyYWN0ZXIgbmFtZXMsIHdlcmUgdXNlZCBiZWNhdXNlIHRob3NlIHdlcmUgdGhlIG5hbWVzCi0rICogICAgICB1c2VkIGluIHRoZSBwdWJsaWNhdGlvbi4KLSsgKgotKyAqICAgICAgUGxlYXNlIHJlYWQgdGhlIGZpbGUgc2hhMS5jIGZvciBtb3JlIGluZm9ybWF0aW9uLgotKyAqCi0rICovCi0rCi0rCi0rI2lmbmRlZiBfU0hBMV9IXwotKyNkZWZpbmUgX1NIQTFfSF8KLSsKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rLyoKLSsgKiBJZiB5b3UgZG8gbm90IGhhdmUgdGhlIElTTyBzdGFuZGFyZCBzdGRpbnQuaCBoZWFkZXIgZmlsZSwgdGhlbiB5b3UKLSsgKiBtdXN0IHR5cGRlZiB0aGUgZm9sbG93aW5nOgotKyAqICAgIG5hbWUgICAgICAgICAgICAgIG1lYW5pbmcKLSsgKiAgdWludDMyX3QgICAgICAgICB1bnNpZ25lZCAzMiBiaXQgaW50ZWdlcgotKyAqICB1aW50OF90ICAgICAgICAgIHVuc2lnbmVkIDggYml0IGludGVnZXIgKGkuZS4sIHVuc2lnbmVkIGNoYXIpCi0rICogIGludF9sZWFzdDE2X3QgICAgaW50ZWdlciBvZiA+PSAxNiBiaXRzCi0rICoKLSsgKi8KLSsKLSsjaWZuZGVmIF9TSEFfZW51bV8KLSsjZGVmaW5lIF9TSEFfZW51bV8KLStlbnVtCi0rewotKyAgICBzaGFTdWNjZXNzID0gMCwKLSsgICAgc2hhTnVsbCwgICAgICAgICAgICAvKiBOdWxsIHBvaW50ZXIgcGFyYW1ldGVyICovCi0rICAgIHNoYUlucHV0VG9vTG9uZywgICAgLyogaW5wdXQgZGF0YSB0b28gbG9uZyAqLwotKyAgICBzaGFTdGF0ZUVycm9yICAgICAgIC8qIGNhbGxlZCBJbnB1dCBhZnRlciBSZXN1bHQgKi8KLSt9OwotKyNlbmRpZgotKyNkZWZpbmUgU0hBMUhhc2hTaXplIDIwCi0rCi0rLyoKLSsgKiAgVGhpcyBzdHJ1Y3R1cmUgd2lsbCBob2xkIGNvbnRleHQgaW5mb3JtYXRpb24gZm9yIHRoZSBTSEEtMQotKyAqICBoYXNoaW5nIG9wZXJhdGlvbgotKyAqLwotK3R5cGVkZWYgc3RydWN0IFNIQTFDb250ZXh0Ci0rewotKyAgICB1aW50MzJfdCBJbnRlcm1lZGlhdGVfSGFzaFtTSEExSGFzaFNpemUvNF07IC8qIE1lc3NhZ2UgRGlnZXN0ICAqLwotKwotKyAgICB1aW50MzJfdCBMZW5ndGhfTG93OyAgICAgICAgICAgIC8qIE1lc3NhZ2UgbGVuZ3RoIGluIGJpdHMgICAgICAqLwotKyAgICB1aW50MzJfdCBMZW5ndGhfSGlnaDsgICAgICAgICAgIC8qIE1lc3NhZ2UgbGVuZ3RoIGluIGJpdHMgICAgICAqLwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbmRleCBpbnRvIG1lc3NhZ2UgYmxvY2sgYXJyYXkgICAqLwotKyAgICBpbnRfbGVhc3QxNl90IE1lc3NhZ2VfQmxvY2tfSW5kZXg7Ci0rICAgIHVpbnQ4X3QgTWVzc2FnZV9CbG9ja1s2NF07ICAgICAgLyogNTEyLWJpdCBtZXNzYWdlIGJsb2NrcyAgICAgICovCi0rCi0rICAgIGludCBDb21wdXRlZDsgICAgICAgICAgICAgICAvKiBJcyB0aGUgZGlnZXN0IGNvbXB1dGVkPyAgICAgICAgICovCi0rICAgIGludCBDb3JydXB0ZWQ7ICAgICAgICAgICAgIC8qIElzIHRoZSBtZXNzYWdlIGRpZ2VzdCBjb3JydXB0ZWQ/ICovCi0rfSBTSEExQ29udGV4dDsKLSsKLSsvKgotKyAqICBGdW5jdGlvbiBQcm90b3R5cGVzCi0rICovCi0raW50IFNIQTFSZXNldCggIFNIQTFDb250ZXh0ICopOwotK2ludCBTSEExSW5wdXQoICBTSEExQ29udGV4dCAqLAotKyAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICosCi0rICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCk7Ci0raW50IFNIQTFSZXN1bHQoIFNIQTFDb250ZXh0ICosCi0rICAgICAgICAgICAgICAgIHVpbnQ4X3QgTWVzc2FnZV9EaWdlc3RbU0hBMUhhc2hTaXplXSk7Ci0rCi0rI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyLzAwMDItZm9ybWF0X3N0cmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXIvMDAwMi1mb3JtYXRfc3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjZhMjA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXIvMDAwMi1mb3JtYXRfc3RyaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotRnJvbTogTHVjYSBGYWxhdmlnbmEgPGRrdHJrcmFuekBkZWJpYW4ub3JnPgotRGF0ZTogVHVlLCAyNyBKYW4gMjAxNSAwMToyNjowNCArMDAwMAotU3ViamVjdDogZm9ybWF0X3N0cmluZwotCi0tLS0KLSBjbGllbnRfZXhhbXBsZXMvZ3Rrdm5jdmlld2VyLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnRfZXhhbXBsZXMvZ3Rrdm5jdmlld2VyLmMgYi9jbGllbnRfZXhhbXBsZXMvZ3Rrdm5jdmlld2VyLmMKLWluZGV4IDI2MWIyZGEuLjg2MWU0ZTMgMTAwNjQ0Ci0tLS0gYS9jbGllbnRfZXhhbXBsZXMvZ3Rrdm5jdmlld2VyLmMKLSsrKyBiL2NsaWVudF9leGFtcGxlcy9ndGt2bmN2aWV3ZXIuYwotQEAgLTU4OCw3ICs1ODgsNyBAQCBzdGF0aWMgdm9pZCBHdGtEZWZhdWx0TG9nIChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSAKLSAJdGltZSAoJmxvZ19jbG9jayk7Ci0gCXN0cmZ0aW1lIChidWYsIDI1NSwgIiVkLyVtLyVZICVYICIsIGxvY2FsdGltZSAoJmxvZ19jbG9jaykpOwotLQlmcHJpbnRmIChzdGRvdXQsIGJ1Zik7Ci0rCWZwcmludGYgKHN0ZG91dCwgIiVzIiwgYnVmKTsKLSAKLSAJdmZwcmludGYgKHN0ZG91dCwgZm9ybWF0LCBhcmdzKTsKLSAJZmZsdXNoIChzdGRvdXQpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlcl8wLjkuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViYTg3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gImxpYnJhcnkgZm9yIGVhc3kgaW1wbGVtZW50YXRpb24gb2YgYSBSRFAvVk5DIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGlidm5jLmdpdGh1Yi5pbyIKLVNFQ1RJT04gPSAibGlicyIKLVBSSU9SSVRZID0gIm9wdGlvbmFsIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM2MWI2YjgzN2NhZDI2YzY5MDBhOTI2YjYyYWFkYTVmIgotCi1ERVBFTkRTICs9ICJ6bGliIGxpYnNkbCBqcGVnIGxpYnBuZyBndGsrIGxpYmdjcnlwdCBuZXR0bGUgZ251dGxzIGdtcCIKLVJERVBFTkRTXyR7UE59ICs9ICJsaWJwbmcgZ3RrKyBsaWJnY3J5cHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBwa2djb25maWcKLQotU1JDX1VSSSAgPSAiXAotICAgICR7REVCSUFOX01JUlJPUn0vbWFpbi9saWJ2L2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjEwK2Rmc2cub3JpZy50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLXJlbW92ZS13ZWJjbGllbnRzLWJ1aWxkLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1jb21tb24tYWRkLXNoYTEucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWZvcm1hdF9zdHJpbmcucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTg4M2I2YzdiZDMzOWE1ZTFjNDg2NDUwNTFhYmU1YzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTgzZjI4ODY5YjgyYWVjNTc3NjhkN2QxOGNkN2ZmODFiZjA5MmVjYmJjMTIwOWI1ODdjMmMyY2Q2ODMzMDI1MCIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfS1MaWJWTkNTZXJ2ZXItJHtQVn0iCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnZhIgotCi1UQVJHRVRfTERGTEFHUyArPSAiLWxnY3J5cHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1N2Q3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMS5iYgpAQCAtMCwwICsxLDIzIEBACitERVNDUklQVElPTiA9ICJsaWJyYXJ5IGZvciBlYXN5IGltcGxlbWVudGF0aW9uIG9mIGEgUkRQL1ZOQyBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwczovL2xpYnZuYy5naXRodWIuaW8iCitTRUNUSU9OID0gImxpYnMiCitQUklPUklUWSA9ICJvcHRpb25hbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNjFiNmI4MzdjYWQyNmM2OTAwYTkyNmI2MmFhZGE1ZiIKKworREVQRU5EUyArPSAiemxpYiBsaWJzZGwganBlZyBsaWJwbmcgZ3RrKyBsaWJnY3J5cHQgbmV0dGxlIGdudXRscyBnbXAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3N5c3RlbWQnLCcnLGQpfSIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLCxzeXN0ZW1kIgorCitSREVQRU5EU18ke1BOfSArPSAibGlicG5nIGd0aysgbGliZ2NyeXB0IgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWcgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0xpYlZOQy9saWJ2bmNzZXJ2ZXIvYXJjaGl2ZS9MaWJWTkNTZXJ2ZXItJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjdmMDYxMDRkNWMwMDk4MTNlOTUxNDI5MzJjNGRkYjA2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE5M2Q2MzAzNzI3MjJhNTMyMTM2ZmQyNWM1MzI2YjJjYTFhNjM2Y2JiOGJmOWJiMTE1ZWY4NjljODA0ZDI4OTQiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tTGliVk5DU2VydmVyLSR7UFZ9IgorCitUQVJHRVRfTERGTEFHUyArPSAiLWxnY3J5cHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9seGRtL2x4ZG1fMC41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9seGRtL2x4ZG1fMC41LjMuYmIKaW5kZXggYzk4YzNhMS4uOGU3ZWZjZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbHhkbS9seGRtXzAuNS4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2x4ZG0vbHhkbV8wLjUuMy5iYgpAQCAtMzQsNyArMzQsNyBAQAogIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBjcCAke1NUQUdJTkdfREFUQURJUn0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiAke1N9L3BvLworICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiAke1N9L3BvLwogfQogCiBkb19jb21waWxlX2FwcGVuZCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL2ZpbGVzLzAwMDEtYm1wX3JlYWRfaW5mb19oZWFkZXItcmVqZWN0LWJtcC1maWxlcy13aXRoLWJpQml0Q291bi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL2ZpbGVzLzAwMDEtYm1wX3JlYWRfaW5mb19oZWFkZXItcmVqZWN0LWJtcC1maWxlcy13aXRoLWJpQml0Q291bi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjZkOWFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvZmlsZXMvMDAwMS1ibXBfcmVhZF9pbmZvX2hlYWRlci1yZWplY3QtYm1wLWZpbGVzLXdpdGgtYmlCaXRDb3VuLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMjI2ZjA3ZTRiNDljMjc1N2IxODFjNjJlNjg0MTAwMGM1MTIwNTRlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBNb24sIDE0IEF1ZyAyMDE3IDE3OjI2OjU4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGJtcF9yZWFkX2luZm9faGVhZGVyKCk6IHJlamVjdCBibXAgZmlsZXMgd2l0aCBiaUJpdENvdW50ID09IDAKKyAoIzk4MykKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3VjbG91dmFpbi9vcGVuanBlZy9jb21taXQvYmFmMGMxYWQ0NTcyZGFhODljYWEzYjEyOTg1YmRkOTM1MzBmMGRkN10KK0NWRTogQ1ZFLTIwMTctMTI5ODIKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmluL2pwMi9jb252ZXJ0Ym1wLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmluL2pwMi9jb252ZXJ0Ym1wLmMgYi9zcmMvYmluL2pwMi9jb252ZXJ0Ym1wLmMKK2luZGV4IGI0OWU3YTAuLjI3MTVmZGYgMTAwNjQ0CistLS0gYS9zcmMvYmluL2pwMi9jb252ZXJ0Ym1wLmMKKysrKyBiL3NyYy9iaW4vanAyL2NvbnZlcnRibXAuYworQEAgLTM5Miw2ICszOTIsMTAgQEAgc3RhdGljIE9QSl9CT09MIGJtcF9yZWFkX2luZm9faGVhZGVyKEZJTEUqIElOLCBPUEpfQklUTUFQSU5GT0hFQURFUiogaGVhZGVyKQorIAorICAgICBoZWFkZXItPmJpQml0Q291bnQgID0gKE9QSl9VSU5UMTYpZ2V0YyhJTik7CisgICAgIGhlYWRlci0+YmlCaXRDb3VudCB8PSAoT1BKX1VJTlQxNikoKE9QSl9VSU5UMzIpZ2V0YyhJTikgPDwgOCk7CisrICAgIGlmIChoZWFkZXItPmJpQml0Q291bnQgPT0gMCkgeworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciwgaW52YWxpZCBiaUJpdENvdW50ICVkXG4iLCAwKTsKKysgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisrICAgIH0KKyAKKyAgICAgaWYgKGhlYWRlci0+YmlTaXplID49IDQwVSkgeworICAgICAgICAgaGVhZGVyLT5iaUNvbXByZXNzaW9uICA9IChPUEpfVUlOVDMyKWdldGMoSU4pOworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZ18yLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTRmNzk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiT3BlbkpQRUcgbGlicmFyeSBpcyBhbiBvcGVuLXNvdXJjZSBKUEVHIDIwMDAgY29kZWMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5qcGVnLm9yZyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjQ4ODc4YjQ4NDBkN2JhYmFhZGUxMzAzZTdmMTA4YyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdWNsb3V2YWluLyR7QlBOfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMGNjNGIyYWVlMGE5YjZlOWUyMWI3YWJjZDIwMWEzZWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODJjMjdmNDdmYzcyMTllMmVkNTUzN2FjNjk1NDViZjE1ZWQ4YzZiYThlNmUxZTUyOWY4OWY3MzU2NTA2ZGJhYSIKLQotaW5oZXJpdCBjbWFrZQotCi1ERVBFTkRTID0gImxpYnBuZyB0aWZmIGxjbXMgemxpYiIKLQotIyBzdGFuZGFyZCBwYXRoIGZvciAqLmNtYWtlCi1FWFRSQV9PRUNNQUtFICs9ICItRE9QRU5KUEVHX0lOU1RBTExfUEFDS0FHRV9ESVI9JHtiYXNlbGlifS9jbWFrZSBcCi0gICAgICAgICAgICAgICAgICAtRE9QRU5KUEVHX0lOU1RBTExfTElCX0RJUjpQQVRIPSR7bGliZGlyfSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvKi5jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVmMWM0MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMi4wLmJiCkBAIC0wLDAgKzEsMjEgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW5KUEVHIGxpYnJhcnkgaXMgYW4gb3Blbi1zb3VyY2UgSlBFRyAyMDAwIGNvZGVjIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuanBlZy5vcmciCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY0ODg3OGI0ODQwZDdiYWJhYWRlMTMwM2U3ZjEwOGMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3VjbG91dmFpbi8ke0JQTn0vYXJjaGl2ZS92JHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYm1wX3JlYWRfaW5mb19oZWFkZXItcmVqZWN0LWJtcC1maWxlcy13aXRoLWJpQml0Q291bi5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjI2OWJiMGIxNzU0NzZmM2FkZGNjMGQwM2JkOWE5N2I2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZmZGRiY2U1YTYxOGU5MTBlMDNhZDAwZDY2ZTdmY2QwOWNjNmVlMzA3Y2U2OTkzMjY2NmQ1NGM3M2I3YzZlN2IiCisKK2luaGVyaXQgY21ha2UKKworREVQRU5EUyA9ICJsaWJwbmcgdGlmZiBsY21zIHpsaWIiCisKKyMgc3RhbmRhcmQgcGF0aCBmb3IgKi5jbWFrZQorRVhUUkFfT0VDTUFLRSArPSAiLURPUEVOSlBFR19JTlNUQUxMX1BBQ0tBR0VfRElSPSR7YmFzZWxpYn0vY21ha2UgXAorICAgICAgICAgICAgICAgICAgLURPUEVOSlBFR19JTlNUQUxMX0xJQl9ESVI6UEFUSD0ke2xpYmRpcn0iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyouY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwMi1GaXgtaW1hZ2UtaGFuZGxpbmctaW50ZWdlci1vdmVyZmxvd3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwMi1GaXgtaW1hZ2UtaGFuZGxpbmctaW50ZWdlci1vdmVyZmxvd3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlODJkNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDItRml4LWltYWdlLWhhbmRsaW5nLWludGVnZXItb3ZlcmZsb3dzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQzICswLDAgQEAKLUZyb20gMjRlNTQ4YTIyMmYwYWFiNDMxM2Q1YmE4YjA0ZjA4NDBiMTczMDAwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGl3YW1hdHN1IDxpd2FtYXRzdUA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDg+Ci1EYXRlOiBNb24sIDMwIEF1ZyAyMDEwIDAxOjI0OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi84XSBGaXggaW1hZ2UgaGFuZGxpbmcgaW50ZWdlciBvdmVyZmxvd3MKLQotSW1hZ2UgbG9hZGluZyBtZW1vcnkgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgaW1hZ2Ugd2lkdGggYW5kIGhlaWdodDoKLSBtYWxsb2MoaGVpZ3RoICogd2lkdGggKiAzKS4gIFByb3ZpZGluZyBhbiBpbWFnZSB3aXRoIGxhcmdlIGhlaWdodCBhbmQKLXdpZHRoIHZhbHVlcyBjYW4gY2F1c2UgdGhlIHJlc3VsdCBvZiB0aGlzIGNhbGN1bGF0aW9uIHRvIGV4Y2VlZCB0aGUKLW1heGltdW0gdmFsdWUgb2YgYW4gdW5zaWduZWQgaW50IGFuZCB0aHVzIGNhdXNlcyBhbiBpbnRlZ2VyIG92ZXJmbG93LgotVGhlIHJlc3VsdDogdG9vIGxpdHRsZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGFuZCBhbiBoZWFwIG92ZXJmbG93IG9jY3Vycy4KLQotVGhpcyBwYXRjaCB3YXMgYmFzZWQgYnkgTmllbHMgSGVpbmVuIDxuaWVsc0BmcmVlYnNkLm9yZz4KLVRoYW5rcyEKLQotU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1naXQtc3ZuLWlkOiBzdm46Ly9zdm4uYmVybGlvcy5kZS9zbGltL3RydW5rQDE3NiA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDgKLS0tLQotIGNvbnN0LmggfCAgICAzICsrCi0ganBlZy5jICB8ICAgNTEgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSBwbmcuYyAgIHwgIDEyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25zdC5oIGIvY29uc3QuaAotaW5kZXggZGYwOTg5Yy4uYTE4YzZmMyAxMDA2NDQKLS0tLSBhL2NvbnN0LmgKLSsrKyBiL2NvbnN0LmgKLUBAIC00Miw0ICs0Miw3IEBACi0gLy8gdmFyaWFibGVzIHJlcGxhY2VkIGluIHByZS1zZXNzaW9uX2NtZCBhbmQgcG9zdC1zZXNzaW9uX2NtZAotICNkZWZpbmUgVVNFUl9WQVIgICAgICAgIiV1c2VyIgotIAotKy8vIG1heCBoZWlnaHQvd2lkdGggZm9yIGltYWdlcwotKyNkZWZpbmUgTUFYX0RJTUVOU0lPTiAxMDAwMAotKwotICNlbmRpZgotZGlmZiAtLWdpdCBhL2pwZWcuYyBiL2pwZWcuYwotaW5kZXggMWNmMTA2Yy4uZTFmODM1MiAxMDA2NDQKLS0tLSBhL2pwZWcuYwotKysrIGIvanBlZy5jCi1AQCAtMjIsMTYgKzIyLDIyIEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotICNpbmNsdWRlIDxqcGVnbGliLmg+Ci0rI2luY2x1ZGUgImNvbnN0LmgiCi0gCi0gaW50Ci0gcmVhZF9qcGVnKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgdW5zaWduZWQgY2hhciAqKnJnYikKLSB7Ci0rICAgIGludCByZXQgPSAwOwotICAgICBzdHJ1Y3QganBlZ19kZWNvbXByZXNzX3N0cnVjdCBjaW5mbzsKLSAgICAgc3RydWN0IGpwZWdfZXJyb3JfbWdyIGplcnI7Ci0gICAgIHVuc2lnbmVkIGNoYXIgKnB0ciA9IE5VTEw7Ci0gICAgIHVuc2lnbmVkIGludCBpLCBpcG9zOwotIAotICAgICBGSUxFICppbmZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInJiIik7Ci0rICAgIGlmIChpbmZpbGUgPT0gTlVMTCkgewotKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4gbm90IGZvcGVuIGZpbGU6ICVzXG4iLGZpbGVuYW1lKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rICAgIH0KLSAKLSAgICAgY2luZm8uZXJyID0ganBlZ19zdGRfZXJyb3IoJmplcnIpOwotICAgICBqcGVnX2NyZWF0ZV9kZWNvbXByZXNzKCZjaW5mbyk7Ci1AQCAtMzksNDMgKzQ1LDM5IEBAIHJlYWRfanBlZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQsIHVuc2lnbmVkIGNoYXIgKipyZ2IpCi0gICAgIGpwZWdfcmVhZF9oZWFkZXIoJmNpbmZvLCBUUlVFKTsKLSAgICAganBlZ19zdGFydF9kZWNvbXByZXNzKCZjaW5mbyk7Ci0gCi0rICAgIC8qIFByZXZlbnQgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93ICovCi0rICAgIGlmKGNpbmZvLm91dHB1dF93aWR0aCA+PSBNQVhfRElNRU5TSU9OIHx8IGNpbmZvLm91dHB1dF9oZWlnaHQgPj0gTUFYX0RJTUVOU0lPTikgewotKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbnJlYXNvbmFibGUgZGltZW5zaW9uIGZvdW5kIGluIGZpbGU6ICVzXG4iLGZpbGVuYW1lKTsKLSsgICAgICAgIGdvdG8gY2xvc2VfZmlsZTsKLSsgICAgfQotKwotICAgICAqd2lkdGggPSBjaW5mby5vdXRwdXRfd2lkdGg7Ci0gICAgICpoZWlnaHQgPSBjaW5mby5vdXRwdXRfaGVpZ2h0OwotIAotICAgICByZ2JbMF0gPSBtYWxsb2MoMyAqIGNpbmZvLm91dHB1dF93aWR0aCAqIGNpbmZvLm91dHB1dF9oZWlnaHQpOwotLSAgICBpZiAocmdiWzBdID09IE5VTEwpCi0tICAgIHsKLSsgICAgaWYgKHJnYlswXSA9PSBOVUxMKSB7Ci0gICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgSlBFRyBmaWxlLlxuIik7Ci0tICAgIGZjbG9zZShpbmZpbGUpOwotLSAgICAgICAgcmV0dXJuKDApOwotKyAgICAgICAgZ290byBjbG9zZV9maWxlOwotICAgICB9Ci0gCi0tICAgIGlmIChjaW5mby5vdXRwdXRfY29tcG9uZW50cyA9PSAzKQotLSAgICB7Ci0rICAgIGlmIChjaW5mby5vdXRwdXRfY29tcG9uZW50cyA9PSAzKSB7Ci0gICAgICAgICBwdHIgPSByZ2JbMF07Ci0tICAgICAgICB3aGlsZSAoY2luZm8ub3V0cHV0X3NjYW5saW5lIDwgY2luZm8ub3V0cHV0X2hlaWdodCkgCi0tICAgICAgICB7Ci0rICAgICAgICB3aGlsZSAoY2luZm8ub3V0cHV0X3NjYW5saW5lIDwgY2luZm8ub3V0cHV0X2hlaWdodCkgewotICAgICAgICAgICAgIGpwZWdfcmVhZF9zY2FubGluZXMoJmNpbmZvLCAmcHRyLCAxKTsKLSAgICAgICAgICAgICBwdHIgKz0gMyAqIGNpbmZvLm91dHB1dF93aWR0aDsKLSAgICAgICAgIH0KLS0gICAgfQotLSAgICBlbHNlIGlmIChjaW5mby5vdXRwdXRfY29tcG9uZW50cyA9PSAxKQotLSAgICB7Ci0rICAgIH0gZWxzZSBpZiAoY2luZm8ub3V0cHV0X2NvbXBvbmVudHMgPT0gMSkgewotICAgICAgICAgcHRyID0gbWFsbG9jKGNpbmZvLm91dHB1dF93aWR0aCk7Ci0tICAgICAgICBpZiAocHRyID09IE5VTEwpCi0tICAgICAgICB7Ci0rICAgICAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgSlBFRyBmaWxlLlxuIik7Ci0tICAgICAgICBmY2xvc2UoaW5maWxlKTsKLS0gICAgICAgICAgICByZXR1cm4oMCk7Ci0rICAgICAgICAgICAgZ290byByZ2JfZnJlZTsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGlwb3MgPSAwOwotLSAgICAgICAgd2hpbGUgKGNpbmZvLm91dHB1dF9zY2FubGluZSA8IGNpbmZvLm91dHB1dF9oZWlnaHQpIAotLSAgICAgICAgewotKyAgICAgICAgd2hpbGUgKGNpbmZvLm91dHB1dF9zY2FubGluZSA8IGNpbmZvLm91dHB1dF9oZWlnaHQpIHsKLSAgICAgICAgICAgICBqcGVnX3JlYWRfc2NhbmxpbmVzKCZjaW5mbywgJnB0ciwgMSk7Ci0gCi0tICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNpbmZvLm91dHB1dF93aWR0aDsgaSsrKQotLSAgICAgICAgICAgIHsKLSsgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2luZm8ub3V0cHV0X3dpZHRoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgbWVtc2V0KHJnYlswXSArIGlwb3MsIHB0cltpXSwgMyk7Ci0gICAgICAgICAgICAgICAgIGlwb3MgKz0gMzsKLSAgICAgICAgICAgICB9Ci1AQCAtODUsOSArODcsMTYgQEAgcmVhZF9qcGVnKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgdW5zaWduZWQgY2hhciAqKnJnYikKLSAgICAgfQotIAotICAgICBqcGVnX2ZpbmlzaF9kZWNvbXByZXNzKCZjaW5mbyk7Ci0tICAgIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzKCZjaW5mbyk7Ci0gCi0rICAgIHJldCA9IDE7Ci0rICAgIGdvdG8gY2xvc2VfZmlsZTsKLSsKLStyZ2JfZnJlZToKLSsgICAgZnJlZShyZ2JbMF0pOwotKwotK2Nsb3NlX2ZpbGU6Ci0rICAgIGpwZWdfZGVzdHJveV9kZWNvbXByZXNzKCZjaW5mbyk7Ci0gICAgIGZjbG9zZShpbmZpbGUpOwotIAotLSAgICByZXR1cm4oMSk7Ci0rICAgIHJldHVybihyZXQpOwotIH0KLWRpZmYgLS1naXQgYS9wbmcuYyBiL3BuZy5jCi1pbmRleCBhMjY2MWM2Li41YzA4NmM2IDEwMDY0NAotLS0tIGEvcG5nLmMKLSsrKyBiL3BuZy5jCi1AQCAtMjIsMTIgKzIyLDEzIEBACi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotIAotICNpbmNsdWRlIDxwbmcuaD4KLSsjaW5jbHVkZSAiY29uc3QuaCIKLSAKLSBpbnQKLSByZWFkX3BuZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQsIHVuc2lnbmVkIGNoYXIgKipyZ2IsIAotICAgICAgdW5zaWduZWQgY2hhciAqKmFscGhhKQotIHsKLS0gICAgRklMRSAqaW5maWxlID0gZm9wZW4oZmlsZW5hbWUsICJyYiIpOwotKyAgICBpbnQgcmV0ID0gMDsKLSAKLSAgICAgcG5nX3N0cnVjdHAgcG5nX3B0cjsKLSAgICAgcG5nX2luZm9wIGluZm9fcHRyOwotQEAgLTM4LDMxICszOSwyNyBAQCByZWFkX3BuZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQsIHVuc2lnbmVkIGNoYXIgKipyZ2IsCi0gICAgIGludCBiaXRfZGVwdGgsIGNvbG9yX3R5cGUsIGludGVybGFjZV90eXBlOwotICAgICBpbnQgaTsKLSAKLSsgICAgRklMRSAqaW5maWxlID0gZm9wZW4oZmlsZW5hbWUsICJyYiIpOwotKyAgICBpZiAoaW5maWxlID09IE5VTEwpIHsKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuIG5vdCBmb3BlbiBmaWxlOiAlc1xuIixmaWxlbmFtZSk7Ci0rICAgICAgICByZXR1cm4gcmV0OwotKyAgICB9Ci0rCi0gICAgIHBuZ19wdHIgPSBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KFBOR19MSUJQTkdfVkVSX1NUUklORywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbmdfdm9pZHApIE5VTEwsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG5nX2Vycm9yX3B0cikgTlVMTCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbmdfZXJyb3JfcHRyKSBOVUxMKTsKLS0gICAgaWYgKCFwbmdfcHRyKSAKLS0gICAgewotLSAgICAgICAgZmNsb3NlKGluZmlsZSk7Ci0tICAgICAgICByZXR1cm4oMCk7Ci0tICAgIH0KLSsgICAgaWYgKCFwbmdfcHRyKQotKyAgICAgICAgZ290byBmaWxlX2Nsb3NlOwotICAgCi0gICAgIGluZm9fcHRyID0gcG5nX2NyZWF0ZV9pbmZvX3N0cnVjdChwbmdfcHRyKTsKLS0gICAgaWYgKCFpbmZvX3B0cikKLS0gICAgewotKyAgICBpZiAoIWluZm9fcHRyKSB7Ci0gICAgICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCgmcG5nX3B0ciwgKHBuZ19pbmZvcHApIE5VTEwsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBuZ19pbmZvcHApIE5VTEwpOwotLSAgICAgICAgZmNsb3NlKGluZmlsZSk7Ci0tICAgICAgICByZXR1cm4oMCk7Ci0gICAgIH0KLSAgIAotICAgICBpZiAoc2V0am1wKHBuZ19wdHItPmptcGJ1ZikpCi0tICAgIHsKLS0gICAgICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIsIChwbmdfaW5mb3BwKSBOVUxMKTsKLS0gICAgICAgIGZjbG9zZShpbmZpbGUpOwotLSAgICAgICAgcmV0dXJuKDApOwotLSAgICB9Ci0rICAgICAgICBnb3RvIHBuZ19kZXN0cm95OwotICAgCi0gICAgIHBuZ19pbml0X2lvKHBuZ19wdHIsIGluZmlsZSk7Ci0gICAgIHBuZ19yZWFkX2luZm8ocG5nX3B0ciwgaW5mb19wdHIpOwotQEAgLTcwLDE4ICs2NywyMyBAQCByZWFkX3BuZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQsIHVuc2lnbmVkIGNoYXIgKipyZ2IsCi0gICAgIHBuZ19nZXRfSUhEUihwbmdfcHRyLCBpbmZvX3B0ciwgJncsICZoLCAmYml0X2RlcHRoLCAmY29sb3JfdHlwZSwKLSAgICAgICAgICAgICAgICAgICZpbnRlcmxhY2VfdHlwZSwgKGludCAqKSBOVUxMLCAoaW50ICopIE5VTEwpOwotIAotKyAgICAvKiBQcmV2ZW50IGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdyAqLwotKyAgICBpZih3ID49IE1BWF9ESU1FTlNJT04gfHwgaCA+PSBNQVhfRElNRU5TSU9OKSB7Ci0rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVucmVhc29uYWJsZSBkaW1lbnNpb24gZm91bmQgaW4gZmlsZTogJXNcbiIsZmlsZW5hbWUpOwotKyAgICAgICAgZ290byBwbmdfZGVzdHJveTsKLSsgICAgfQotKwotICAgICAqd2lkdGggPSAoaW50KSB3OwotICAgICAqaGVpZ2h0ID0gKGludCkgaDsKLSAgICAgCi0gICAgIGlmIChjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1JHQl9BTFBIQQotLSAgICB8fCBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEEpCi0tICAgIHsKLS0gICAgYWxwaGFbMF0gPSBtYWxsb2MoKndpZHRoICogKmhlaWdodCk7Ci0tICAgIGlmIChhbHBoYVswXSA9PSBOVUxMKQotLSAgICB7Ci0tICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgYWxwaGEgY2hhbm5lbCBpbiBQTkcgZmlsZS5cbiIpOwotLSAgICAgICAgcmV0dXJuKDApOyAKLS0gICAgfQotKyAgICAgICAgfHwgY29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9HUkFZX0FMUEhBKSB7Ci0rICAgICAgICBhbHBoYVswXSA9IG1hbGxvYygqd2lkdGggKiAqaGVpZ2h0KTsKLSsgICAgICAgIGlmIChhbHBoYVswXSA9PSBOVUxMKQotKyAgICAgICAgewotKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBhbHBoYSBjaGFubmVsIGluIFBORyBmaWxlLlxuIik7Ci0rICAgICAgICAgICAgZ290byBwbmdfZGVzdHJveTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICAvKiBDaGFuZ2UgYSBwYWxldHRlZC9ncmF5c2NhbGUgaW1hZ2UgdG8gUkdCICovCi1AQCAtOTQsNjggKzk2LDcwIEBAIHJlYWRfcG5nKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgdW5zaWduZWQgY2hhciAqKnJnYiwKLSAgICAgICAgIHBuZ19zZXRfZ3JheV90b19yZ2IocG5nX3B0cik7Ci0gCi0gICAgIC8qIElmIHRoZSBQTkcgZmlsZSBoYXMgMTYgYml0cyBwZXIgY2hhbm5lbCwgc3RyaXAgdGhlbSBkb3duIHRvIDggKi8KLS0gICAgaWYgKGJpdF9kZXB0aCA9PSAxNikgcG5nX3NldF9zdHJpcF8xNihwbmdfcHRyKTsKLSsgICAgaWYgKGJpdF9kZXB0aCA9PSAxNikKLSsgICAgICAgIHBuZ19zZXRfc3RyaXBfMTYocG5nX3B0cik7Ci0gCi0gICAgIC8qIHVzZSAxIGJ5dGUgcGVyIHBpeGVsICovCi0gICAgIHBuZ19zZXRfcGFja2luZyhwbmdfcHRyKTsKLSAKLSAgICAgcm93X3BvaW50ZXJzID0gbWFsbG9jKCpoZWlnaHQgKiBzaXplb2YocG5nX2J5dGVwKSk7Ci0tICAgIGlmIChyb3dfcG9pbnRlcnMgPT0gTlVMTCkKLS0gICAgewotKyAgICBpZiAocm93X3BvaW50ZXJzID09IE5VTEwpIHsKLSAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBQTkcgZmlsZS5cbiIpOwotLSAgICAgICAgcmV0dXJuKDApOwotKyAgICAgICAgZ290byBwbmdfZGVzdHJveTsKLSAgICAgfQotIAotLSAgICBmb3IgKGkgPSAwOyBpIDwgKmhlaWdodDsgaSsrKQotLSAgICB7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCAqaGVpZ2h0OyBpKyspIHsKLSAgICAgICAgIHJvd19wb2ludGVyc1tpXSA9IG1hbGxvYyg0ICogKndpZHRoKTsKLS0gICAgICAgIGlmIChyb3dfcG9pbnRlcnMgPT0gTlVMTCkKLS0gICAgICAgIHsKLSsgICAgICAgIGlmIChyb3dfcG9pbnRlcnMgPT0gTlVMTCkgewotICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBQTkcgbGluZS5cbiIpOwotLSAgICAgICAgICAgIHJldHVybigwKTsKLSsgICAgICAgICAgICBnb3RvIHJvd3NfZnJlZTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotICAgICBwbmdfcmVhZF9pbWFnZShwbmdfcHRyLCByb3dfcG9pbnRlcnMpOwotIAotICAgICByZ2JbMF0gPSBtYWxsb2MoMyAqICp3aWR0aCAqICpoZWlnaHQpOwotLSAgICBpZiAocmdiWzBdID09IE5VTEwpCi0tICAgIHsKLSsgICAgaWYgKHJnYlswXSA9PSBOVUxMKSB7Ci0gICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgUE5HIGZpbGUuXG4iKTsKLS0gICAgICAgIHJldHVybigwKTsKLSsgICAgICAgIGdvdG8gcm93c19mcmVlOwotICAgICB9Ci0gCi0gICAgIGlmIChhbHBoYVswXSA9PSBOVUxMKQotICAgICB7Ci0tICAgIHB0ciA9IHJnYlswXTsKLS0gICAgZm9yIChpID0gMDsgaSA8ICpoZWlnaHQ7IGkrKykKLS0gICAgewotLSAgICAgICAgbWVtY3B5KHB0ciwgcm93X3BvaW50ZXJzW2ldLCAzICogKndpZHRoKTsKLS0gICAgICAgIHB0ciArPSAzICogKndpZHRoOwotLSAgICB9Ci0tICAgIH0KLS0gICAgZWxzZQotLSAgICB7Ci0tICAgIGludCBqOwotLSAgICBwdHIgPSByZ2JbMF07Ci0tICAgIGZvciAoaSA9IDA7IGkgPCAqaGVpZ2h0OyBpKyspCi0tICAgIHsKLS0gICAgICAgIGludCBpcG9zID0gMDsKLS0gICAgICAgIGZvciAoaiA9IDA7IGogPCAqd2lkdGg7IGorKykKLS0gICAgICAgIHsKLS0gICAgICAgICpwdHIrKyA9IHJvd19wb2ludGVyc1tpXVtpcG9zKytdOwotLSAgICAgICAgKnB0cisrID0gcm93X3BvaW50ZXJzW2ldW2lwb3MrK107Ci0tICAgICAgICAqcHRyKysgPSByb3dfcG9pbnRlcnNbaV1baXBvcysrXTsKLS0gICAgICAgIGFscGhhWzBdW2kgKiAqd2lkdGggKyBqXSA9IHJvd19wb2ludGVyc1tpXVtpcG9zKytdOwotKyAgICAgICAgcHRyID0gcmdiWzBdOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8ICpoZWlnaHQ7IGkrKykgewotKyAgICAgICAgICAgIG1lbWNweShwdHIsIHJvd19wb2ludGVyc1tpXSwgMyAqICp3aWR0aCk7Ci0rICAgICAgICAgICAgcHRyICs9IDMgKiAqd2lkdGg7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBpbnQgajsKLSsgICAgICAgIHB0ciA9IHJnYlswXTsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCAqaGVpZ2h0OyBpKyspIHsKLSsgICAgICAgICAgICBpbnQgaXBvcyA9IDA7Ci0rICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8ICp3aWR0aDsgaisrKSB7Ci0rICAgICAgICAgICAgICAgICpwdHIrKyA9IHJvd19wb2ludGVyc1tpXVtpcG9zKytdOwotKyAgICAgICAgICAgICAgICAqcHRyKysgPSByb3dfcG9pbnRlcnNbaV1baXBvcysrXTsKLSsgICAgICAgICAgICAgICAgKnB0cisrID0gcm93X3BvaW50ZXJzW2ldW2lwb3MrK107Ci0rICAgICAgICAgICAgICAgIGFscGhhWzBdW2kgKiAqd2lkdGggKyBqXSA9IHJvd19wb2ludGVyc1tpXVtpcG9zKytdOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0gICAgfQotICAgICB9Ci0gCi0tICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZwbmdfcHRyLCAmaW5mb19wdHIsIChwbmdfaW5mb3BwKSBOVUxMKTsKLSsgICAgcmV0ID0gMTsgLyogZGF0YSByZWFkaW5nIGlzIE9LICovCi0rCi0rcm93c19mcmVlOgotKyAgICBmb3IgKGkgPSAwOyBpIDwgKmhlaWdodDsgaSsrKSB7Ci0rICAgICAgICBpZiAocm93X3BvaW50ZXJzW2ldICE9IE5VTEwgKSB7Ci0rICAgICAgICAgICAgZnJlZShyb3dfcG9pbnRlcnNbaV0pOwotKyAgICAgICAgfQotKyAgICB9Ci0gCi0tICAgIGZvciAoaSA9IDA7IGkgPCAqaGVpZ2h0OyBpKyspIGZyZWUocm93X3BvaW50ZXJzW2ldKTsKLSAgICAgZnJlZShyb3dfcG9pbnRlcnMpOwotIAotK3BuZ19kZXN0cm95OgotKyAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCgmcG5nX3B0ciwgJmluZm9fcHRyLCAocG5nX2luZm9wcCkgTlVMTCk7Ci0rCi0rZmlsZV9jbG9zZToKLSAgICAgZmNsb3NlKGluZmlsZSk7Ci0tICAgIHJldHVybigxKTsKLSsgICAgcmV0dXJuKHJldCk7Ci0gfQotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDAzLUZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbGQtYXMtbmVlZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDMtRml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1sZC1hcy1uZWVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MWM0ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDMtRml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1sZC1hcy1uZWVkZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDZhYWQ5MTNkZGQ1Y2RiNDczZGI5ZmEyMWE1ZThlY2VjNThkZTE3MmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBpd2FtYXRzdSA8aXdhbWF0c3VAN2M1M2U3Y2MtOThlYS0wMzEwLThmMWYtYTBiMjRkYTYwNDA4PgotRGF0ZTogV2VkLCAxMiBKYW4gMjAxMSAwNDo0MTowMiArMDAwMAotU3ViamVjdDogW1BBVENIIDMvOF0gRml4IGJ1aWxkIGZhaWx1cmUgd2l0aCBsZCAtLWFzLW5lZWRlZC4KLQotU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1naXQtc3ZuLWlkOiBzdm46Ly9zdm4uYmVybGlvcy5kZS9zbGltL3RydW5rQDE3NyA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDgKLS0tLQotIE1ha2VmaWxlIHwgICAgNCArKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAxMjE5ZGU0Li5mYWZhMGVmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNCw3ICs0LDcgQEAKLSAjIHRvIGZpdCBpbnRvIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSAvIGRpc3RyaWJ1dGlvbgotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSBDWFg9L3Vzci9iaW4vZysrCi0tQ0M9L3Vzci9iaW4vZ2NjCi0rQ0M9L3Vzci9iaW4vZ2NjLTQuNQotIENGTEFHUz0tV2FsbCAtSS4gLUkvdXNyL2luY2x1ZGUvZnJlZXR5cGUyIC1JL3Vzci9pbmNsdWRlL2ZyZWV0eXBlMi9jb25maWcgLUkvdXNyL2luY2x1ZGUvbGlicG5nMTIgLUkvdXNyL2luY2x1ZGUKLSBDWFhGTEFHUz0kKENGTEFHUykKLSBMREZMQUdTPS1sWGZ0IC1sWDExIC1sZnJlZXR5cGUgLWxYcmVuZGVyIC1sZm9udGNvbmZpZyAtbHBuZzEyIC1seiAtbG0gLWxjcnlwdCAtbFhtdSAtbHBuZyAtbGpwZWcgLWxydAotQEAgLTMzLDcgKzMzLDcgQEAgZW5kaWYKLSBhbGw6IHNsaW0KLSAKLSBzbGltOiAkKE9CSkVDVFMpCi0tCSQoQ1hYKSAkKExERkxBR1MpICQoT0JKRUNUUykgLW8gJChOQU1FKQotKwkkKENYWCkgJChPQkpFQ1RTKSAkKExERkxBR1MpIC1vICQoTkFNRSkKLSAKLSAuY3BwLm86Ci0gCSQoQ1hYKSAkKENYWEZMQUdTKSAkKERFRklORVMpICQoQ1VTVE9NKSAtYyAkPCAtbyAkQAotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA0LUFkZC1zdXBwb3J0LWxpYnBuZzE1LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDQtQWRkLXN1cHBvcnQtbGlicG5nMTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMDg3YzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDQtQWRkLXN1cHBvcnQtbGlicG5nMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIGMyMDY3ZThjMTZiZmI3MjFkMzM5NzE4YWUwYzk5YzcwYTk5NDkzNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBpd2FtYXRzdSA8aXdhbWF0c3VAN2M1M2U3Y2MtOThlYS0wMzEwLThmMWYtYTBiMjRkYTYwNDA4PgotRGF0ZTogRnJpLCAxNyBKdW4gMjAxMSAyMDozNTowNyArMDAwMAotU3ViamVjdDogW1BBVENIIDQvOF0gQWRkIHN1cHBvcnQgbGlicG5nMTUKLQotU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1naXQtc3ZuLWlkOiBzdm46Ly9zdm4uYmVybGlvcy5kZS9zbGltL3RydW5rQDE3OCA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDgKLS0tLQotIE1ha2VmaWxlIHwgICAgNCArKy0tCi0gcG5nLmMgICAgfCAgICA2ICsrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggZmFmYTBlZi4uMTIwMjYxNCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTUsOSArNSw5IEBACi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIENYWD0vdXNyL2Jpbi9nKysKLSBDQz0vdXNyL2Jpbi9nY2MtNC41Ci0tQ0ZMQUdTPS1XYWxsIC1JLiAtSS91c3IvaW5jbHVkZS9mcmVldHlwZTIgLUkvdXNyL2luY2x1ZGUvZnJlZXR5cGUyL2NvbmZpZyAtSS91c3IvaW5jbHVkZS9saWJwbmcxMiAtSS91c3IvaW5jbHVkZQotK0NGTEFHUz0tV2FsbCAtSS4gLUkvdXNyL2luY2x1ZGUvZnJlZXR5cGUyIC1JL3Vzci9pbmNsdWRlL2ZyZWV0eXBlMi9jb25maWcgLUkvdXNyL2luY2x1ZGUKLSBDWFhGTEFHUz0kKENGTEFHUykKLS1MREZMQUdTPS1sWGZ0IC1sWDExIC1sZnJlZXR5cGUgLWxYcmVuZGVyIC1sZm9udGNvbmZpZyAtbHBuZzEyIC1seiAtbG0gLWxjcnlwdCAtbFhtdSAtbHBuZyAtbGpwZWcgLWxydAotK0xERkxBR1M9LWxYZnQgLWxYMTEgLWxmcmVldHlwZSAtbFhyZW5kZXIgLWxmb250Y29uZmlnIC1scG5nIC1seiAtbG0gLWxjcnlwdCAtbFhtdSAtbHBuZyAtbGpwZWcgLWxydAotIENVU1RPTT0tREhBVkVfU0hBRE9XCi0gaWZkZWYgVVNFX1BBTQotIExERkxBR1MrPSAtbHBhbQotZGlmZiAtLWdpdCBhL3BuZy5jIGIvcG5nLmMKLWluZGV4IDVjMDg2YzYuLmFhMGY1ZTUgMTAwNjQ0Ci0tLS0gYS9wbmcuYwotKysrIGIvcG5nLmMKLUBAIC01Nyw4ICs1NywxMiBAQCByZWFkX3BuZyhjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQsIHVuc2lnbmVkIGNoYXIgKipyZ2IsCi0gICAgICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCgmcG5nX3B0ciwgKHBuZ19pbmZvcHApIE5VTEwsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBuZ19pbmZvcHApIE5VTEwpOwotICAgICB9Ci0tICAKLSsKLSsjaWYgUE5HX0xJQlBOR19WRVJfTUFKT1IgPj0gMSAmJiBQTkdfTElCUE5HX1ZFUl9NSU5PUiA+PSA0Ci0rCWlmIChzZXRqbXAocG5nX2ptcGJ1ZigoZGF0YS0+cG5nX3B0cikpKSkKLSsjZWxzZQotICAgICBpZiAoc2V0am1wKHBuZ19wdHItPmptcGJ1ZikpCi0rI2VuZGlmCi0gICAgICAgICBnb3RvIHBuZ19kZXN0cm95OwotICAgCi0gICAgIHBuZ19pbml0X2lvKHBuZ19wdHIsIGluZmlsZSk7Ci0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDUtUmVtb3ZlLXBhdGgtb2YtZ2NjLWFtZC1nLWFuZC12ZXJzaW9uLW9mLWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwNS1SZW1vdmUtcGF0aC1vZi1nY2MtYW1kLWctYW5kLXZlcnNpb24tb2YtZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY2YWUzNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwNS1SZW1vdmUtcGF0aC1vZi1nY2MtYW1kLWctYW5kLXZlcnNpb24tb2YtZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNGY2OWViMWFhODVmYmIzOTVhMDQ3NGIxZjM3NjUwNWZhYjgxZWUyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGl3YW1hdHN1IDxpd2FtYXRzdUA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDg+Ci1EYXRlOiBGcmksIDE3IEp1biAyMDExIDIwOjM1OjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNS84XSBSZW1vdmUgcGF0aCBvZiBnY2MgYW1kIGcrKywgYW5kIHZlcnNpb24gb2YgZysrCi0KLVNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotZ2l0LXN2bi1pZDogc3ZuOi8vc3ZuLmJlcmxpb3MuZGUvc2xpbS90cnVua0AxNzkgN2M1M2U3Y2MtOThlYS0wMzEwLThmMWYtYTBiMjRkYTYwNDA4Ci0tLS0KLSBNYWtlZmlsZSB8ICAgIDQgKystLQotIDEgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMTIwMjYxNC4uNWM1ZmRlMSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTMsOCArMyw4IEBACi0gIyBFZGl0IHRoZSBmb2xsb3dpbmcgc2VjdGlvbiB0byBhZGp1c3QgdGhlIG9wdGlvbnMKLSAjIHRvIGZpdCBpbnRvIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSAvIGRpc3RyaWJ1dGlvbgotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLS1DWFg9L3Vzci9iaW4vZysrCi0tQ0M9L3Vzci9iaW4vZ2NjLTQuNQotK0NYWD1nKysKLStDQz1nY2MKLSBDRkxBR1M9LVdhbGwgLUkuIC1JL3Vzci9pbmNsdWRlL2ZyZWV0eXBlMiAtSS91c3IvaW5jbHVkZS9mcmVldHlwZTIvY29uZmlnIC1JL3Vzci9pbmNsdWRlCi0gQ1hYRkxBR1M9JChDRkxBR1MpCi0gTERGTEFHUz0tbFhmdCAtbFgxMSAtbGZyZWV0eXBlIC1sWHJlbmRlciAtbGZvbnRjb25maWcgLWxwbmcgLWx6IC1sbSAtbGNyeXB0IC1sWG11IC1scG5nIC1sanBlZyAtbHJ0Ci0tLSAKLTEuNi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDYtUmVtb3ZlLWxvY2FsaG9zdC1mcm9tLUF1dGhlbnRpY2F0b3Itb2YtcGFtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDYtUmVtb3ZlLWxvY2FsaG9zdC1mcm9tLUF1dGhlbnRpY2F0b3Itb2YtcGFtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWI4MTI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA2LVJlbW92ZS1sb2NhbGhvc3QtZnJvbS1BdXRoZW50aWNhdG9yLW9mLXBhbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gZTE4OGQ1ZmQzZTNjMGU0MGMzZTM1NzI5ZmQ4YjgxYjEzODE5MWE3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGl3YW1hdHN1IDxpd2FtYXRzdUA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDg+Ci1EYXRlOiBGcmksIDE3IEp1biAyMDExIDIwOjM1OjEzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNi84XSBSZW1vdmUgbG9jYWxob3N0IGZyb20gQXV0aGVudGljYXRvciBvZiBwYW0KLQotaHR0cDovL2J1Z3MuZ2VudG9vLm9yZy8zNDYwMzcKLWh0dHBzOi8vZGV2ZWxvcGVyLmJlcmxpb3MuZGUvYnVncy8/ZnVuYz1kZXRhaWxidWcmYnVnX2lkPTE3NzU3Jmdyb3VwX2lkPTI2NjMKLWh0dHA6Ly9zb3VyY2VzLmdlbnRvby5vcmcvY2dpLWJpbi92aWV3dmMuY2dpL2dlbnRvby14ODYveDExLW1pc2Mvc2xpbS9maWxlcy8zNDYwMzctc3RvcF9zZXR0aW5nX2hvc3RfZm9yX3BhbV9ja19jb25uZWN0b3Jfc28ucGF0Y2g/dmlldz1sb2cKLQotU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1naXQtc3ZuLWlkOiBzdm46Ly9zdm4uYmVybGlvcy5kZS9zbGltL3RydW5rQDE4MCA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDgKLS0tLQotIGFwcC5jcHAgfCAgICAyIC0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hcHAuY3BwIGIvYXBwLmNwcAotaW5kZXggYzgwYTczZS4uNzE3NzM2MyAxMDA2NDQKLS0tLSBhL2FwcC5jcHAKLSsrKyBiL2FwcC5jcHAKLUBAIC0yMzYsOCArMjM2LDYgQEAgdm9pZCBBcHA6OlJ1bigpIHsKLSAgICAgICAgIHBhbS5zdGFydCgic2xpbSIpOwotICAgICAgICAgcGFtLnNldF9pdGVtKFBBTTo6QXV0aGVudGljYXRvcjo6VFRZLCBEaXNwbGF5TmFtZSk7Ci0gICAgICAgICBwYW0uc2V0X2l0ZW0oUEFNOjpBdXRoZW50aWNhdG9yOjpSZXF1ZXN0b3IsICJyb290Iik7Ci0tICAgICAgICBwYW0uc2V0X2l0ZW0oUEFNOjpBdXRoZW50aWNhdG9yOjpIb3N0LCAibG9jYWxob3N0Iik7Ci0tCi0gICAgIH0KLSAgICAgY2F0Y2goUEFNOjpFeGNlcHRpb24mIGUpewotICAgICAgICAgY2VyciA8PCBBUFBOQU1FIDw8ICI6ICIgPDwgZSA8PCBlbmRsOwotLS0gCi0xLjYuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA3LUZpeC10dHktc2xvd25lc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwNy1GaXgtdHR5LXNsb3duZXNzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTI1MDJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS8wMDA3LUZpeC10dHktc2xvd25lc3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIGRhMTcyZmQ2MjM0YjNiMmI0ODdhYjM2ZDYzZGE3Mjc1ODgyOWNiMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBpd2FtYXRzdSA8aXdhbWF0c3VAN2M1M2U3Y2MtOThlYS0wMzEwLThmMWYtYTBiMjRkYTYwNDA4PgotRGF0ZTogRnJpLCAxNyBKdW4gMjAxMSAyMDozNToxNSArMDAwMAotU3ViamVjdDogW1BBVENIIDcvOF0gRml4IHR0eSBzbG93bmVzcwotCi1TaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWdpdC1zdm4taWQ6IHN2bjovL3N2bi5iZXJsaW9zLmRlL3NsaW0vdHJ1bmtAMTgxIDdjNTNlN2NjLTk4ZWEtMDMxMC04ZjFmLWEwYjI0ZGE2MDQwOAotLS0tCi0gYXBwLmNwcCB8ICAgMTAgKysrKysrLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXBwLmNwcCBiL2FwcC5jcHAKLWluZGV4IDcxNzczNjMuLjQ0YWIwOTkgMTAwNjQ0Ci0tLS0gYS9hcHAuY3BwCi0rKysgYi9hcHAuY3BwCi1AQCAtMjc4LDIxICsyNzgsMjMgQEAgdm9pZCBBcHA6OlJ1bigpIHsKLSAgICAgICAgIHNpZ25hbChTSUdBTFJNLCBBbGFybVNpZ25hbCk7Ci0gCi0gI2lmbmRlZiBYTkVTVF9ERUJVRwotLSAgICAgICAgT3BlbkxvZygpOwotLSAgICAgICAgCi0gICAgICAgICBpZiAoIWZvcmNlX25vZGFlbW9uICYmIGNmZy0+Z2V0T3B0aW9uKCJkYWVtb24iKSA9PSAieWVzIikgewotICAgICAgICAgICAgIGRhZW1vbm1vZGUgPSB0cnVlOwotICAgICAgICAgfQotIAotICAgICAgICAgLy8gRGFlbW9uaXplCi0gICAgICAgICBpZiAoZGFlbW9ubW9kZSkgewotLSAgICAgICAgICAgIGlmIChkYWVtb24oMCwgMSkgPT0gLTEpIHsKLSsgICAgICAgICAgICBpZiAoZGFlbW9uKDAsIDApID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgIGNlcnIgPDwgQVBQTkFNRSA8PCAiOiAiIDw8IHN0cmVycm9yKGVycm5vKSA8PCBlbmRsOwotICAgICAgICAgICAgICAgICBleGl0KEVSUl9FWElUKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgVXBkYXRlUGlkKCk7Ci0gICAgICAgICB9Ci0gCi0rICAgICAgICBPcGVuTG9nKCk7Ci0rCi0rICAgICAgICBpZiAoZGFlbW9ubW9kZSkKLSsgICAgICAgICAgICBVcGRhdGVQaWQoKTsKLSsKLSAgICAgICAgIENyZWF0ZVNlcnZlckF1dGgoKTsKLSAgICAgICAgIFN0YXJ0U2VydmVyKCk7Ci0gICAgICAgICBhbGFybSgyKTsKLS0tIAotMS42LjYuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwOC1yZXN0YXJ0LVhzZXJ2ZXItaWYta2lsbGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltLzAwMDgtcmVzdGFydC1Yc2VydmVyLWlmLWtpbGxlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM1Y2ZiNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vMDAwOC1yZXN0YXJ0LVhzZXJ2ZXItaWYta2lsbGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLUZyb20gZWU3N2EzZDE1NDQ0M2QyODIzZWNiZjIxNDFkYWExYjU5MjRmNjI5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGl3YW1hdHN1IDxpd2FtYXRzdUA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDg+Ci1EYXRlOiBGcmksIDE3IEp1biAyMDExIDIwOjM4OjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggOC84XSByZXN0YXJ0IFhzZXJ2ZXIgaWYga2lsbGVkCi0KLVBhdGNoIGZyb20gaHR0cDovL2RldmVsb3Blci5iZXJsaW9zLmRlL3BhdGNoLz9mdW5jPWRldGFpbHBhdGNoJnBhdGNoX2lkPTIzNzgmZ3JvdXBfaWQ9MjY2My4KLQotU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1naXQtc3ZuLWlkOiBzdm46Ly9zdm4uYmVybGlvcy5kZS9zbGltL3RydW5rQDE4MiA3YzUzZTdjYy05OGVhLTAzMTAtOGYxZi1hMGIyNGRhNjA0MDgKLS0tLQotIGFwcC5jcHAgfCAgIDM2ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGFwcC5oICAgfCAgICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FwcC5jcHAgYi9hcHAuY3BwCi1pbmRleCA0NGFiMDk5Li4zNThhOThmIDEwMDY0NAotLS0tIGEvYXBwLmNwcAotKysrIGIvYXBwLmNwcAotQEAgLTEwNCw2ICsxMDQsMTEgQEAgaW50IGNvbnYoaW50IG51bV9tc2csIGNvbnN0IHN0cnVjdCBwYW1fbWVzc2FnZSAqKm1zZywKLSAKLSBleHRlcm4gQXBwKiBMb2dpbkFwcDsKLSAKLStpbnQgeGlvZXJyb3IoRGlzcGxheSAqZGlzcCkgewotKwlMb2dpbkFwcC0+UmVzdGFydFNlcnZlcigpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0gdm9pZCBDYXRjaFNpZ25hbChpbnQgc2lnKSB7Ci0gICAgIGNlcnIgPDwgQVBQTkFNRSA8PCAiOiB1bmV4cGVjdGVkIHNpZ25hbCAiIDw8IHNpZyA8PCBlbmRsOwotIAotQEAgLTExNCwxOSArMTE5LDYgQEAgdm9pZCBDYXRjaFNpZ25hbChpbnQgc2lnKSB7Ci0gICAgIGV4aXQoRVJSX0VYSVQpOwotIH0KLSAKLS0KLS12b2lkIEFsYXJtU2lnbmFsKGludCBzaWcpIHsKLS0gICAgaW50IHBpZCA9IExvZ2luQXBwLT5HZXRTZXJ2ZXJQSUQoKTsKLS0gICAgaWYod2FpdHBpZChwaWQsIE5VTEwsIFdOT0hBTkcpID09IHBpZCkgewotLSAgICAgICAgTG9naW5BcHAtPlN0b3BTZXJ2ZXIoKTsKLS0gICAgICAgIExvZ2luQXBwLT5SZW1vdmVMb2NrKCk7Ci0tICAgICAgICBleGl0KE9LX0VYSVQpOwotLSAgICB9Ci0tICAgIHNpZ25hbChzaWcsIEFsYXJtU2lnbmFsKTsKLS0gICAgYWxhcm0oMik7Ci0tfQotLQotLQotIHZvaWQgVXNlcjFTaWduYWwoaW50IHNpZykgewotICAgICBzaWduYWwoc2lnLCBVc2VyMVNpZ25hbCk7Ci0gfQotQEAgLTI3NSw3ICsyNjcsNiBAQCB2b2lkIEFwcDo6UnVuKCkgewotICAgICAgICAgc2lnbmFsKFNJR0hVUCwgQ2F0Y2hTaWduYWwpOwotICAgICAgICAgc2lnbmFsKFNJR1BJUEUsIENhdGNoU2lnbmFsKTsKLSAgICAgICAgIHNpZ25hbChTSUdVU1IxLCBVc2VyMVNpZ25hbCk7Ci0tICAgICAgICBzaWduYWwoU0lHQUxSTSwgQWxhcm1TaWduYWwpOwotIAotICNpZm5kZWYgWE5FU1RfREVCVUcKLSAgICAgICAgIGlmICghZm9yY2Vfbm9kYWVtb24gJiYgY2ZnLT5nZXRPcHRpb24oImRhZW1vbiIpID09ICJ5ZXMiKSB7Ci1AQCAtMjk3LDcgKzI4OCw2IEBAIHZvaWQgQXBwOjpSdW4oKSB7Ci0gCi0gICAgICAgICBDcmVhdGVTZXJ2ZXJBdXRoKCk7Ci0gICAgICAgICBTdGFydFNlcnZlcigpOwotLSAgICAgICAgYWxhcm0oMik7Ci0gI2VuZGlmCi0gCi0gICAgIH0KLUBAIC02MTMsNiArNjAzLDggQEAgdm9pZCBBcHA6OkxvZ2luKCkgewotICAgICBpbnQgc3RhdHVzOwotICAgICB3aGlsZSAod3BpZCAhPSBwaWQpIHsKLSAgICAgICAgIHdwaWQgPSB3YWl0KCZzdGF0dXMpOwotKwkJaWYgKHdwaWQgPT0gU2VydmVyUElEKQotKwkJCXhpb2Vycm9yKERweSk7CS8vIFNlcnZlciBkaWVkLCBzaW11bGF0ZSBJTyBlcnJvcgotICAgICB9Ci0gICAgIGlmIChXSUZFWElURUQoc3RhdHVzKSAmJiBXRVhJVFNUQVRVUyhzdGF0dXMpKSB7Ci0gICAgICAgICBMb2dpblBhbmVsLT5NZXNzYWdlKCJGYWlsZWQgdG8gZXhlY3V0ZSBsb2dpbiBjb21tYW5kIik7Ci1AQCAtNjU4LDkgKzY1MCw2IEBAIHZvaWQgQXBwOjpMb2dpbigpIHsKLSAKLSAKLSB2b2lkIEFwcDo6UmVib290KCkgewotLSAgICAvLyBTdG9wIGFsYXJtIGNsb2NrCi0tICAgIGFsYXJtKDApOwotLQotICNpZmRlZiBVU0VfUEFNCi0gICAgIHRyeXsKLSAgICAgICAgIHBhbS5lbmQoKTsKLUBAIC02ODMsOSArNjcyLDYgQEAgdm9pZCBBcHA6OlJlYm9vdCgpIHsKLSAKLSAKLSB2b2lkIEFwcDo6SGFsdCgpIHsKLS0gICAgLy8gU3RvcCBhbGFybSBjbG9jawotLSAgICBhbGFybSgwKTsKLS0KLSAjaWZkZWYgVVNFX1BBTQotICAgICB0cnl7Ci0gICAgICAgICBwYW0uZW5kKCk7Ci1AQCAtNzcxLDYgKzc1Nyw3IEBAIHZvaWQgQXBwOjpSZXN0YXJ0U2VydmVyKCkgewotIAotICAgICBTdG9wU2VydmVyKCk7IAotICAgICBSZW1vdmVMb2NrKCk7Ci0rCXdoaWxlICh3YWl0cGlkKC0xLCBOVUxMLCBXTk9IQU5HKSA+IDApOyAvLyBDb2xsZWN0cyBhbGwgZGVhZCBjaGlsZHJlbnMKLSAgICAgUnVuKCk7Ci0gfSAKLSAKLUBAIC04NDEsNiArODI4LDcgQEAgaW50IEFwcDo6V2FpdEZvclNlcnZlcigpIHsKLSAKLSAgICAgZm9yKGN5Y2xlcyA9IDA7IGN5Y2xlcyA8IG5jeWNsZXM7IGN5Y2xlcysrKSB7Ci0gICAgICAgICBpZigoRHB5ID0gWE9wZW5EaXNwbGF5KERpc3BsYXlOYW1lKSkpIHsKLSsgICAgICAgICAgICBYU2V0SU9FcnJvckhhbmRsZXIoeGlvZXJyb3IpOwotICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICBpZighU2VydmVyVGltZW91dCgxLCAoY2hhciAqKSAiWCBzZXJ2ZXIgdG8gYmVnaW4gYWNjZXB0aW5nIGNvbm5lY3Rpb25zIikpCi1AQCAtOTI1LDkgKzkxMyw2IEBAIGludCBBcHA6OlN0YXJ0U2VydmVyKCkgewotICAgICAgICAgICAgIFNlcnZlclBJRCA9IC0xOwotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotLSAgICAgICAgYWxhcm0oMTUpOwotLSAgICAgICAgcGF1c2UoKTsKLS0gICAgICAgIGFsYXJtKDApOwotIAotICAgICAgICAgLy8gV2FpdCBmb3Igc2VydmVyIHRvIHN0YXJ0IHVwCi0gICAgICAgICBpZihXYWl0Rm9yU2VydmVyKCkgPT0gMCkgewotQEAgLTk2MiwxNSArOTQ3LDEyIEBAIGludCBJZ25vcmVYSU8oRGlzcGxheSAqZCkgewotIAotIAotIHZvaWQgQXBwOjpTdG9wU2VydmVyKCkgewotLSAgICAvLyBTdG9wIGFsYXJzIGNsb2NrIGFuZCBpZ25vcmUgc2lnbmFscwotLSAgICBhbGFybSgwKTsKLSAgICAgc2lnbmFsKFNJR1FVSVQsIFNJR19JR04pOwotICAgICBzaWduYWwoU0lHSU5ULCBTSUdfSUdOKTsKLSAgICAgc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7Ci0gICAgIHNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLSAgICAgc2lnbmFsKFNJR1RFUk0sIFNJR19ERkwpOwotICAgICBzaWduYWwoU0lHS0lMTCwgU0lHX0RGTCk7Ci0tICAgIHNpZ25hbChTSUdBTFJNLCBTSUdfREZMKTsKLSAKLSAgICAgLy8gQ2F0Y2ggWCBlcnJvcgotICAgICBYU2V0SU9FcnJvckhhbmRsZXIoSWdub3JlWElPKTsKLWRpZmYgLS1naXQgYS9hcHAuaCBiL2FwcC5oCi1pbmRleCBkZDdjMjgxLi4yZGIxMDM4IDEwMDY0NAotLS0tIGEvYXBwLmgKLSsrKyBiL2FwcC5oCi1AQCAtMzQsNiArMzQsNyBAQCBwdWJsaWM6Ci0gICAgIH5BcHAoKTsKLSAgICAgdm9pZCBSdW4oKTsKLSAgICAgaW50IEdldFNlcnZlclBJRCgpOwotKyAgICB2b2lkIFJlc3RhcnRTZXJ2ZXIoKTsKLSAgICAgdm9pZCBTdG9wU2VydmVyKCk7Ci0gCi0gCWJvb2wgc2VydmVyU3RhcnRlZDsKLUBAIC00OSw3ICs1MCw2IEBAIHByaXZhdGU6Ci0gICAgIHZvaWQgQ29uc29sZSgpOwotICAgICB2b2lkIEV4aXQoKTsKLSAgICAgdm9pZCBLaWxsQWxsQ2xpZW50cyhCb29sIHRvcCk7Ci0tICAgIHZvaWQgUmVzdGFydFNlcnZlcigpOwotICAgICB2b2lkIFJlYWRDb25maWcoKTsKLSAgICAgdm9pZCBPcGVuTG9nKCk7Ci0gICAgIHZvaWQgQ2xvc2VMb2coKTsKLS0tIAotMS42LjYuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW1fMS4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW1fMS4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYmRjYWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltXzEuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotREVTQ1JJUFRJT049IlNpbXBsZSBMb2dpbiBNYW5hZ2VyIgotSE9NRVBBR0U9Imh0dHA6Ly9zbGltLmJlcmxpb3MuZGUiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIgotCi1QUiA9ICJyMSIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4bXUgbGlicG5nIGpwZWcgZnJlZXR5cGUgc2Vzc3JlZyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2Rvd25sb2FkLmJlcmxpb3MuZGUvJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDItRml4LWltYWdlLWhhbmRsaW5nLWludGVnZXItb3ZlcmZsb3dzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1GaXgtYnVpbGQtZmFpbHVyZS13aXRoLWxkLWFzLW5lZWRlZC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtQWRkLXN1cHBvcnQtbGlicG5nMTUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LVJlbW92ZS1wYXRoLW9mLWdjYy1hbWQtZy1hbmQtdmVyc2lvbi1vZi1nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNi1SZW1vdmUtbG9jYWxob3N0LWZyb20tQXV0aGVudGljYXRvci1vZi1wYW0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA3LUZpeC10dHktc2xvd25lc3MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA4LXJlc3RhcnQtWHNlcnZlci1pZi1raWxsZWQucGF0Y2ggXAotICAgIGZpbGU6Ly9zbGltLWR5bndtIFwKLSAgICBmaWxlOi8vdXBkYXRlX3NsaW1fd21saXN0IFwKLSAgICBmaWxlOi8vTWFrZWZpbGUub2UgXAotICAgIGZpbGU6Ly9zbGltLnBhbWQgXAotICAgIGZpbGU6Ly9zbGltLnNlcnZpY2UgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2ExYWU2MTIwZTZmNGI0OTY5ZjJkNmNmOTRmNDdiNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjE1NjAxMjUwMDVmMjUzYjliODgyMjA1OThmZWQ3YTk1NzVlZjQwNTcxNjg2MmM2Y2EzZmNjNzJkYmQ0ODJiOCIKLQotCi1FWFRSQV9PRU1BS0UgKz0gIiBcCi0gICAgVVNFX1BBTT0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcxJywgJzAnLCBkKX0gXAotICAgIFBSRUZJWD0ke3ByZWZpeH0gXAotICAgIENGR0RJUj0ke3N5c2NvbmZkaXJ9IFwKLSAgICBNQU5ESVI9JHttYW5kaXJ9IFwKLSAgICBERVNURElSPSR7RH0gXAotICAgIENGTEFHUys9LUkke1NUQUdJTkdfSU5DRElSfS9mcmVldHlwZTIgXAotICAgIENYWEZMQUdTKz0tSSR7U1RBR0lOR19JTkNESVJ9L2ZyZWV0eXBlMiBcCi0iCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBjcCAtcFAgJHtXT1JLRElSfS9NYWtlZmlsZS5vZSAke1N9L01ha2VmaWxlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2xpbS1keW53bSAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3VwZGF0ZV9zbGltX3dtbGlzdCAke0R9JHtiaW5kaXJ9LwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2xpbS5wYW1kICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NsaW0KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCi0gICAgZWNobyAnc2Vzc2lvbnN0YXJ0X2NtZCAgICAvdXNyL2Jpbi9zZXNzcmVnIC1hIC1sICRESVNQTEFZICV1c2VyJyA+PiAke0R9JHtzeXNjb25mZGlyfS9zbGltLmNvbmYKLSAgICBlY2hvICdzZXNzaW9uc3RvcF9jbWQgICAgIC91c3IvYmluL3Nlc3NyZWcgLWQgLWwgJERJU1BMQVkgJXVzZXInID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NsaW0uY29uZgotfQotCi0KLVJERVBFTkRTXyR7UE59ID0gInBlcmwgeGF1dGggZnJlZXR5cGUgc2Vzc3JlZyAiCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCi0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci1pZiB0ZXN0ICJ4JEQiICE9ICJ4IjsgdGhlbgotICAgIGV4aXQgMQotZmkKLXN5c3RlbWN0bCBlbmFibGUgc2xpbS5zZXJ2aWNlCi0KLSMgUmVnaXN0ZXIgU0xpTSBhcyBkZWZhdWx0IERNCi1ta2RpciAtcCAke3N5c2NvbmZkaXJ9L1gxMS8KLWVjaG8gIiR7YmluZGlyfS9zbGltIiA+ICR7c3lzY29uZmRpcn0vWDExL2RlZmF1bHQtZGlzcGxheS1tYW5hZ2VyCi19Ci0KLXBrZ19wb3N0cm1fJHtQTn0gKCkgewotaWYgdGVzdCAieCREIiAhPSAieCI7IHRoZW4KLSAgICBleGl0IDEKLWZpCi1zeXN0ZW1jdGwgZGlzYWJsZSBzbGltLnNlcnZpY2UKLXNlZCAtaSAvc2xpbS9kICREJHtzeXNjb25mZGlyfS9YMTEvZGVmYXVsdC1kaXNwbGF5LW1hbmFnZXIgfHwgdHJ1ZQotfQotCi1QTkJMQUNLTElTVFtzbGltXSA/PSAiZG9lcyBub3QgYnVpbGQgd2l0aCBkaXN0cm9sZXNzIHFlbXVhcm0gYXMgcmVwb3J0ZWQgaW4gJ1N0YXRlIG9mIGJpdGJha2Ugd29ybGQnIHRocmVhZCwgbm9ib2R5IHZvbHVudGVlcmVkIHRvIGZpeCB0aGVtIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGVybWludXMtZm9udC90ZXJtaW51cy1mb250XzQuMzguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90ZXJtaW51cy1mb250L3Rlcm1pbnVzLWZvbnRfNC4zOC5iYgppbmRleCA0YzgzOTlkLi5jNDYwZmMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90ZXJtaW51cy1mb250L3Rlcm1pbnVzLWZvbnRfNC4zOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90ZXJtaW51cy1mb250L3Rlcm1pbnVzLWZvbnRfNC4zOC5iYgpAQCAtOCw3ICs4LDcgQEAKIExJQ0VOU0UgPSAiT0ZMLTEuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL09GTC5UWFQ7bWQ1PTljYWRiMjZmNGM1YzAwNTYxOGM1YWU3NGYwNDFlYzU0IgogCi1ERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIGd6aXAtbmF0aXZlIgorREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSBnemlwLW5hdGl2ZSBiZGZ0b3BjZi1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgogU1JDX1VSSVttZDVzdW1dID0gImE4ZTc5MmZlNmU4NGM4NmVkMmI2ZWQzZTJhMTJiYTY2IgpAQCAtNDMsNSArNDMsMyBAQAogRklMRVNfJHtQTn0tY29uc29sZWZvbnRzID0gIiR7ZGF0YWRpcn0vY29uc29sZWZvbnRzIgogRklMRVNfJHtQTn0tY29uc29sZXRyYW5zID0gIiR7ZGF0YWRpcn0vY29uc29sZXRyYW5zIgogRklMRVNfJHtQTn0tcGNmID0gIiR7ZGF0YWRpcn0vZm9udHMvdGVybWludXMiCi0KLVBOQkxBQ0tMSVNUW3Rlcm1pbnVzLWZvbnRdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjM4LyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3Rlc3NlcmFjdC90ZXNzZXJhY3RfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGVzc2VyYWN0L3Rlc3NlcmFjdF9naXQuYmIKaW5kZXggYzI2NzVjZC4uODlkMDlhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGVzc2VyYWN0L3Rlc3NlcmFjdF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGVzc2VyYWN0L3Rlc3NlcmFjdF9naXQuYmIKQEAgLTEsMTEgKzEsMTIgQEAKIFNVTU1BUlkgPSAiQSBjb21tZXJjaWFsIHF1YWxpdHkgT0NSIGVuZ2luZSAiCiAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMwYzk0YjNjODZhZDBjMzg2YmI2ZGVjNzBjYThhMzZhIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2VhNGY5YTQzYWJhOWQzYzg0OWZlNWMyMDNhMGVkNDAiCiAKLVBWID0gIjMuMDQuMDArZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiMjI4MzE3Y2FhMWNlZDIxN2U2ZDI2NGFhZmM5MDFmMzYxZWNkN2U5MCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8ke0JQTn0tb2NyLyR7QlBOfS5naXQiCitCUkFOQ0ggPSAiMy4wNSIKK1BWID0gIiR7QlJBTkNIfS4wMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICIyMTU4NjYxNTFlNzc0OTcyYzk1MDIyODIxMTFiOTk4ZDdhMDUzNTYyIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLyR7QlBOfS1vY3IvJHtCUE59LmdpdDticmFuY2g9JHtCUkFOQ0h9IgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogREVQRU5EUyA9ICJsZXB0b25pY2EiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDAxLXRpZ2Vydm5jLXJlbW92ZS1pbmNsdWRlZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwMS10aWdlcnZuYy1yZW1vdmUtaW5jbHVkZWRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmM0Mzc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwMS10aWdlcnZuYy1yZW1vdmUtaW5jbHVkZWRpci5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIDRiNDIzY2QyZTVlNDI5NmFiY2EzYmU1NTNiZjY0ZDhjYzI4NzE4MGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIEp1bCAyMDE3IDE3OjA5OjA1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSB0aWdlcnZuYzogcmVtb3ZlIGluY2x1ZGVkaXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgorCitJdCBmaXhlcyBob3N0IGNvbnRhbWluYXRpb24KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdW5peC94c2VydmVyL2h3L3ZuYy9NYWtlZmlsZS5hbSB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3VuaXgveHNlcnZlci9ody92bmMvTWFrZWZpbGUuYW0gYi91bml4L3hzZXJ2ZXIvaHcvdm5jL01ha2VmaWxlLmFtCitpbmRleCAwZDZhNGFjLi44NTRmMDc4IDEwMDY0NAorLS0tIGEvdW5peC94c2VydmVyL2h3L3ZuYy9NYWtlZmlsZS5hbQorKysrIGIvdW5peC94c2VydmVyL2h3L3ZuYy9NYWtlZmlsZS5hbQorQEAgLTIyLDcgKzIyLDcgQEAgbGlidm5jY29tbW9uX2xhX1NPVVJDRVMgPSAkKEhEUlMpIFwKKyAKKyBsaWJ2bmNjb21tb25fbGFfQ1BQRkxBR1MgPSAtRFZFTkRPUl9SRUxFQVNFPSIkKFZFTkRPUl9SRUxFQVNFKSIgXAorIAktRFZFTkRPUl9TVFJJTkc9IlwiJChWRU5ET1JfU1RSSU5HKVwiIiAtSSQoVElHRVJWTkNfU1JDRElSKS9jb21tb24gLVVIQVZFX0NPTkZJR19IIFwKKy0JLUkkKFRJR0VSVk5DX1NSQ0RJUikvdW5peC92bmNjb25maWcgJChYVk5DX0NQUEZMQUdTKSAke1hTRVJWRVJMSUJTX0NGTEFHU30gLUkkKGluY2x1ZGVkaXIpIFwKKysJLUkkKFRJR0VSVk5DX1NSQ0RJUikvdW5peC92bmNjb25maWcgJChYVk5DX0NQUEZMQUdTKSAke1hTRVJWRVJMSUJTX0NGTEFHU30gXAorIAktSSQodG9wX3NyY2RpcikvaW5jbHVkZQorIAorIGJpbl9QUk9HUkFNUyA9IFh2bmMKK0BAIC00Miw3ICs0Miw3IEBAIFh2bmNfQ1BQRkxBR1MgPSAkKFhWTkNfQ1BQRkxBR1MpIC1EVElHRVJWTkMgLUROT19NT0RVTEVfRVhUUyBcCisgCS1VSEFWRV9DT05GSUdfSCBcCisgCS1EWEZyZWU4NlNlcnZlciAtRFZFTkRPUl9SRUxFQVNFPSIkKFZFTkRPUl9SRUxFQVNFKSIgXAorIAktRFZFTkRPUl9TVFJJTkc9IlwiJChWRU5ET1JfU1RSSU5HKVwiIiAtSSQoVElHRVJWTkNfU1JDRElSKS9jb21tb24gXAorLQktSSQodG9wX3NyY2RpcikvaW5jbHVkZSAke1hTRVJWRVJMSUJTX0NGTEFHU30gLUkkKGluY2x1ZGVkaXIpCisrCS1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlICR7WFNFUlZFUkxJQlNfQ0ZMQUdTfQorIAorIFh2bmNfTERBREQgPSAkKFhWTkNfTElCUykgbGlidm5jY29tbW9uLmxhICQoQ09NTU9OX0xJQlMpIFwKKyAJJChYU0VSVkVSX0xJQlMpICQoWFNFUlZFUl9TWVNfTElCUykgJChYVk5DX1NZU19MSUJTKSAtbFgxMQorQEAgLTYyLDcgKzYyLDcgQEAgbGlidm5jX2xhX0NQUEZMQUdTID0gJChYVk5DX0NQUEZMQUdTKSAtSSQoVElHRVJWTkNfU1JDRElSKS9jb21tb24gLVVIQVZFX0NPTkZJR18KKyAJLUkkKHRvcF9zcmNkaXIpL2h3L3hmcmVlODYvb3Mtc3VwcG9ydCBcCisgCS1JJCh0b3Bfc3JjZGlyKS9ody94ZnJlZTg2L29zLXN1cHBvcnQvYnVzIFwKKyAJLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgXAorLQkke1hTRVJWRVJMSUJTX0NGTEFHU30gLUkkKGluY2x1ZGVkaXIpCisrCSR7WFNFUlZFUkxJQlNfQ0ZMQUdTfQorIAorIGxpYnZuY19sYV9MREZMQUdTID0gLW1vZHVsZSAtYXZvaWQtdmVyc2lvbiAtV2wsLXosbm93CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDItZG8tbm90LWJ1aWxkLXRlc3RzLXN1Yi1kaXJlY3RvcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDAyLWRvLW5vdC1idWlsZC10ZXN0cy1zdWItZGlyZWN0b3J5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlODc1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDAyLWRvLW5vdC1idWlsZC10ZXN0cy1zdWItZGlyZWN0b3J5LnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYzM0NjBkNjNmMGI2Y2Q1MGI5YTY0MjY1ZjQyMGYwNDM5ZTEyYTFkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjUgQXByIDIwMTcgMDE6MzY6NDQgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGRvIG5vdCBidWlsZCB0ZXN0cyBzdWIgZGlyZWN0b3J5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDk0ZWMyZWYuLmZiNzJhMDAgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0zMDAsOSArMzAwLDYgQEAgaWYoQlVJTERfVklFV0VSKQorICAgYWRkX3N1YmRpcmVjdG9yeShtZWRpYSkKKyBlbmRpZigpCisgCistYWRkX3N1YmRpcmVjdG9yeSh0ZXN0cykKKy0KKy0KKyBpbmNsdWRlKGNtYWtlL0J1aWxkUGFja2FnZXMuY21ha2UpCisgCisgIyB1bmluc3RhbGwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwMy1hZGQtbWlzc2luZy1keW5hbWljLWxpYnJhcnktdG8tRkxUS19MSUJSQVJJRVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDAzLWFkZC1taXNzaW5nLWR5bmFtaWMtbGlicmFyeS10by1GTFRLX0xJQlJBUklFUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmI4NGFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwMy1hZGQtbWlzc2luZy1keW5hbWljLWxpYnJhcnktdG8tRkxUS19MSUJSQVJJRVMucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA2MzY5YTViZTJhZjJlZDFmYTQ0M2Y0MGY0OGRlYWYzMThkMjI3MTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMCBKdWwgMjAxNyAwNTowNjowMCAtMDQwMAorU3ViamVjdDogW1BBVENIIDMvNF0gYWRkIG1pc3NpbmcgZHluYW1pYyBsaWJyYXJ5IHRvIEZMVEtfTElCUkFSSUVTCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBmYjcyYTAwLi41NzMyZGM4IDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMjQ2LDYgKzI0Niw4IEBAIGlmKFVOSVggQU5EIE5PVCBBUFBMRSkKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCisrc2V0KEZMVEtfTElCUkFSSUVTICR7RkxUS19MSUJSQVJJRVN9IC1sbSAtbGRsIC1scG5nIC1sanBlZykKKysKKyAjIENoZWNrIGZvciBHTlVUTFMgbGlicmFyeQorIG9wdGlvbihFTkFCTEVfR05VVExTICJFbmFibGUgcHJvdG9jb2wgZW5jcnlwdGlvbiBhbmQgYWR2YW5jZWQgYXV0aGVudGljYXRpb24iIE9OKQorIGlmKEVOQUJMRV9HTlVUTFMpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDQtdGlnZXJ2bmMtYWRkLWZQSUMtb3B0aW9uLXRvLUNPTVBJTEVfRkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDA0LXRpZ2Vydm5jLWFkZC1mUElDLW9wdGlvbi10by1DT01QSUxFX0ZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YjBhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDA0LXRpZ2Vydm5jLWFkZC1mUElDLW9wdGlvbi10by1DT01QSUxFX0ZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gOTU2M2I2OTY0MDIyN2RhMjIyMGVlMGMzOTA3N2FmYjczNmNjOTZkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjAgSnVsIDIwMTcgMTc6MTI6MTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIHRpZ2Vydm5jOiBhZGQgZlBJQyBvcHRpb24gdG8gQ09NUElMRV9GTEFHUworCitUaGUgc3RhdGljIGxpYnJhcmllcyBpbiBYcmVnaW9uL25ldHdvcmsvcmRyL3JmYiB3ZXJlIGxpbmtlZCBieSBzaGFyZWQKK2xpYnJhcnkgbGlidm5jLnNvLCBzbyB3ZSBzaG91bGQgYWRkIGZQSUMgb3B0aW9uIHRvIENPTVBJTEVfRkxBR1MgdG8gZml4CityZWxvY2F0aW9uIGlzc3VlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29tbW9uL1hyZWdpb24vQ01ha2VMaXN0cy50eHQgfCAxICsKKyBjb21tb24vbmV0d29yay9DTWFrZUxpc3RzLnR4dCB8IDEgKworIGNvbW1vbi9yZHIvQ01ha2VMaXN0cy50eHQgICAgIHwgMSArCisgY29tbW9uL3JmYi9DTWFrZUxpc3RzLnR4dCAgICAgfCAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29tbW9uL1hyZWdpb24vQ01ha2VMaXN0cy50eHQgYi9jb21tb24vWHJlZ2lvbi9DTWFrZUxpc3RzLnR4dAoraW5kZXggNDBjYTk3ZS4uOTQxMTMyOCAxMDA2NDQKKy0tLSBhL2NvbW1vbi9YcmVnaW9uL0NNYWtlTGlzdHMudHh0CisrKysgYi9jb21tb24vWHJlZ2lvbi9DTWFrZUxpc3RzLnR4dAorQEAgLTMsNCArMyw1IEBAIGFkZF9saWJyYXJ5KFhyZWdpb24gU1RBVElDCisgCisgaWYoVU5JWCkKKyAgIGxpYnRvb2xfY3JlYXRlX2NvbnRyb2xfZmlsZShYcmVnaW9uKQorKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFhyZWdpb24gUFJPUEVSVElFUyBDT01QSUxFX0ZMQUdTIC1mUElDKQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9jb21tb24vbmV0d29yay9DTWFrZUxpc3RzLnR4dCBiL2NvbW1vbi9uZXR3b3JrL0NNYWtlTGlzdHMudHh0CitpbmRleCBiNjI0YzhlLi42YzA2ZWM5IDEwMDY0NAorLS0tIGEvY29tbW9uL25ldHdvcmsvQ01ha2VMaXN0cy50eHQKKysrKyBiL2NvbW1vbi9uZXR3b3JrL0NNYWtlTGlzdHMudHh0CitAQCAtOSw0ICs5LDUgQEAgZW5kaWYoKQorIAorIGlmKFVOSVgpCisgICBsaWJ0b29sX2NyZWF0ZV9jb250cm9sX2ZpbGUobmV0d29yaykKKysgIHNldF90YXJnZXRfcHJvcGVydGllcyhuZXR3b3JrIFBST1BFUlRJRVMgQ09NUElMRV9GTEFHUyAtZlBJQykKKyBlbmRpZigpCitkaWZmIC0tZ2l0IGEvY29tbW9uL3Jkci9DTWFrZUxpc3RzLnR4dCBiL2NvbW1vbi9yZHIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDk4OWJhMmYuLjIwZjY0ODkgMTAwNjQ0CistLS0gYS9jb21tb24vcmRyL0NNYWtlTGlzdHMudHh0CisrKysgYi9jb21tb24vcmRyL0NNYWtlTGlzdHMudHh0CitAQCAtMjcsNCArMjcsNSBAQCB0YXJnZXRfbGlua19saWJyYXJpZXMocmRyICR7UkRSX0xJQlJBUklFU30pCisgCisgaWYoVU5JWCkKKyAgIGxpYnRvb2xfY3JlYXRlX2NvbnRyb2xfZmlsZShyZHIpCisrICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMocmRyIFBST1BFUlRJRVMgQ09NUElMRV9GTEFHUyAtZlBJQykKKyBlbmRpZigpCitkaWZmIC0tZ2l0IGEvY29tbW9uL3JmYi9DTWFrZUxpc3RzLnR4dCBiL2NvbW1vbi9yZmIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDUwNDdlNWUuLjg4ODM4YWIgMTAwNjQ0CistLS0gYS9jb21tb24vcmZiL0NNYWtlTGlzdHMudHh0CisrKysgYi9jb21tb24vcmZiL0NNYWtlTGlzdHMudHh0CitAQCAtOTgsNCArOTgsNSBAQCB0YXJnZXRfbGlua19saWJyYXJpZXMocmZiICR7UkZCX0xJQlJBUklFU30pCisgCisgaWYoVU5JWCkKKyAgIGxpYnRvb2xfY3JlYXRlX2NvbnRyb2xfZmlsZShyZmIpCisrICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMocmZiIFBST1BFUlRJRVMgQ09NUElMRV9GTEFHUyAtZlBJQykKKyBlbmRpZigpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDUtUmVtb3ZlLUlOSVRBUkdTLWZyb20teHNlcnZlcjExOS5wYXRjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDUtUmVtb3ZlLUlOSVRBUkdTLWZyb20teHNlcnZlcjExOS5wYXRjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjM0MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwNS1SZW1vdmUtSU5JVEFSR1MtZnJvbS14c2VydmVyMTE5LnBhdGNoLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZTRlYzk5Mjk4NDk4M2FjOTEwN2VmYWUxZjFjYzU1MjAwN2U0MjI5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpc2hhbCBCaXN3YXMgPHZzaGxiaXN3YXNAeW1haWwuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDExOjA2OjExICswNTMwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBJTklUQVJHUyBmcm9tIHhzZXJ2ZXIxMTkucGF0Y2gKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCistLS0KKyB1bml4L3hzZXJ2ZXIxMTkucGF0Y2ggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91bml4L3hzZXJ2ZXIxMTkucGF0Y2ggYi91bml4L3hzZXJ2ZXIxMTkucGF0Y2gKK2luZGV4IDYxNGYxMDQuLjdhZGYzMTQgMTAwNjQ0CistLS0gYS91bml4L3hzZXJ2ZXIxMTkucGF0Y2gKKysrKyBiL3VuaXgveHNlcnZlcjExOS5wYXRjaAorQEAgLTY2LDcgKzY2LDcgQEAgZGlmZiAtdXAgeHNlcnZlci9taS9taWluaXRleHQuYy54c2VydmVyMTE2LXJlYmFzZWQgeHNlcnZlci9taS9taWluaXRleHQuYworICAjaW5jbHVkZSAiZ2xvYmFscy5oIgorICAKKyArI2lmZGVmIFRJR0VSVk5DCistK2V4dGVybiB2b2lkIHZuY0V4dGVuc2lvbkluaXQoSU5JVEFSR1MpOworKytleHRlcm4gdm9pZCB2bmNFeHRlbnNpb25Jbml0KHZvaWQpOworICsjZW5kaWYKKyArCisgIC8qIFRoZSBmb2xsb3dpbmcgaXMgb25seSBhIHNtYWxsIGZpcnN0IHN0ZXAgdG93YXJkcyBydW4tdGltZQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy90aWdlcnZuY18xLjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OTc0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy90aWdlcnZuY18xLjguMC5iYgpAQCAtMCwwICsxLDEzMiBAQAorREVTQ1JJUFRJT04gPSAiVGlnZXJWTkMgcmVtb3RlIGRpc3BsYXkgc3lzdGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy50aWdlcnZuYy5jb20vIgorTElDRU5TRSA9ICJHUEx2MisiCitTRUNUSU9OID0gIngxMS91dGlscyIKK0RFUEVORFMgPSAieHNlcnZlci14b3JnIGdudXRscyBqcGVnIGxpYnh0c3QgZ2V0dGV4dC1uYXRpdmUgZmx0ayIKK1JERVBFTkRTXyR7UE59ID0gImNoa2NvbmZpZyBjb3JldXRpbHMgaGljb2xvci1pY29uLXRoZW1lIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFLlRYVDttZDU9NzViMDJjMjg3MjQyMTM4MGJiZDQ3NzgxZDJiZDc1ZDMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitpbmhlcml0IGF1dG90b29scyBjbWFrZQorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiNGQ2ZTFiODMwNmE4Y2NhOGFkNWUxNWZmODIwMWY2ZWEyNDQ1OWNmZCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1RpZ2VyVk5DL3RpZ2Vydm5jLmdpdDticmFuY2g9MS44LWJyYW5jaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRpZ2Vydm5jLXJlbW92ZS1pbmNsdWRlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZG8tbm90LWJ1aWxkLXRlc3RzLXN1Yi1kaXJlY3RvcnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1hZGQtbWlzc2luZy1keW5hbWljLWxpYnJhcnktdG8tRkxUS19MSUJSQVJJRVMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC10aWdlcnZuYy1hZGQtZlBJQy1vcHRpb24tdG8tQ09NUElMRV9GTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LVJlbW92ZS1JTklUQVJHUy1mcm9tLXhzZXJ2ZXIxMTkucGF0Y2gucGF0Y2ggXAorIgorCisjIEtlZXAgc3luYyB3aXRoIHhvcmctc2VydmVyIGluIG9lLWNvcmUKK1hPUkdfUE4gPz0gInhvcmctc2VydmVyIgorWE9SR19QViA/PSAiMS4xOS4zIgorU1JDX1VSSSArPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC94c2VydmVyLyR7WE9SR19QTn0tJHtYT1JHX1BWfS50YXIuYnoyO25hbWU9eG9yZyIKK1hPUkdfUyA9ICIke1dPUktESVJ9LyR7WE9SR19QTn0tJHtYT1JHX1BWfSIKK1NSQ19VUklbeG9yZy5tZDVzdW1dID0gIjAxNWQyZmM0YjlmMmJmZTdhNjI2ZWRiNjNhNjJjNjVlIgorU1JDX1VSSVt4b3JnLnNoYTI1NnN1bV0gPSAiNjc3YTgxNjZlMDM0NzQ3MTkyMzhkZmUzOTZjZTY3M2M0MjM0NzM1NDY0ZDZkYWRmMjk1OWI2MDBkMjBlNWE5OCIKKworIyBJdCBpcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIFhvcmcgc291cmNlIGZvciB0aGUKKyMgbWFjaGluZSBvbiB3aGljaCB5b3UgYXJlIGJ1aWxkaW5nIFRpZ2VyVk5DLgorWFNFUlZFUl9TT1VSQ0VfRElSPSIke1N9L3VuaXgveHNlcnZlciIKKworZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiZG9fcGF0Y2hfeHNlcnZlciIKK2RvX3BhdGNoX3hzZXJ2ZXIgKCkgeworICAgIGZvciBzdWJkaXIgaW4gWGV4dCB4a2IgR0wgaHcveHF1YXJ0ei9idW5kbGUgaHcveGZyZWU4Ni9jb21tb247IGRvCisgICAgICAgIGluc3RhbGwgLWQgJHtYU0VSVkVSX1NPVVJDRV9ESVJ9LyRzdWJkaXIKKyAgICBkb25lCisKKyAgICBmb3Igc3ViZGlyIGluIGh3L2RteC9kb2MgbWFuIGRvYyBody9kbXgvZG94eWdlbjsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAke1hTRVJWRVJfU09VUkNFX0RJUn0vJHN1YmRpcgorICAgIGRvbmUKKworICAgIHNvdXJjZXM9Imh3L3hxdWFydHovYnVuZGxlL2NwcHJ1bGVzLmluIG1hbi9Yc2VydmVyLm1hbiBkb2Mvc21hcnRzY2hlZCBcCisgICAgICAgICAgICAgaHcvZG14L2RveHlnZW4vZG94eWdlbi5jb25mLmluIHhzZXJ2ZXIuZW50LmluIHhrYi9SRUFETUUuY29tcGlsZWQgXAorICAgICAgICAgICAgIGh3L3hmcmVlODYveG9yZ2NvbmYuY3BwIGh3L3hmcmVlODYvWG9yZy5zaC5pbiIKKyAgICBmb3IgaSBpbiAke3NvdXJjZXN9OyBkbworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtYT1JHX1N9LyRpICR7WFNFUlZFUl9TT1VSQ0VfRElSfS8kaTsKKyAgICBkb25lCisKKyAgICBjZCAke1hPUkdfU30KKyAgICBmaW5kIC4gLXR5cGUgZiB8IGVncmVwICcuKlwuKGN8aHxhbXxhY3xpbmN8bTR8aC5pbnxwYy5pbnxtYW4ucHJlfHBsfHR4dCkkJyB8IFwKKyAgICB4YXJncyB0YXIgY2YgLSB8IChjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0gJiYgdGFyIHhmIC0pCisKKyAgICBjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0KKyAgICB4c2VydmVycGF0Y2g9IiR7U30vdW5peC94c2VydmVyMTE5LnBhdGNoIgorICAgIGVjaG8gIkFwcGx5ICR4c2VydmVycGF0Y2giCisgICAgcGF0Y2ggLXAxIC1iIC0tc3VmZml4IC52bmMgPCAkeHNlcnZlcnBhdGNoCit9CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUteG9yZyAtLWRpc2FibGUteG5lc3QgLS1kaXNhYmxlLXh2ZmIgLS1kaXNhYmxlLWRteCBcCisgICAgICAgIC0tZGlzYWJsZS14d2luIC0tZGlzYWJsZS14ZXBoeXIgLS1kaXNhYmxlLWtkcml2ZSAtLXdpdGgtcGljIFwKKyAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyAtLWRpc2FibGUteGluZXJhbWEgXAorICAgICAgICAtLXdpdGgteGtiLW91dHB1dD0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi94a2IgXAorICAgICAgICAtLWRpc2FibGUtZ2x4IC0tZGlzYWJsZS1kcmkgLS1kaXNhYmxlLWRyaTIgXAorICAgICAgICAtLWRpc2FibGUtY29uZmlnLWhhbCBcCisgICAgICAgIC0tZGlzYWJsZS1jb25maWctdWRldiBcCisgICAgICAgIC0td2l0aG91dC1kdHJhY2UgXAorICAgICAgICAtLWRpc2FibGUtdW5pdC10ZXN0cyBcCisgICAgICAgIC0tZGlzYWJsZS1kZXZlbC1kb2NzIFwKKyAgICAgICAgLS1kaXNhYmxlLXNlbGVjdGl2ZS13ZXJyb3IgXAorICAgICAgICAtLWRpc2FibGUteHNobWZlbmNlIFwKKyAgICAgICAgLS1kaXNhYmxlLWNvbmZpZy11ZGV2IFwKKyAgICAgICAgLS1kaXNhYmxlLWRyaTMgXAorICAgICAgICAtLWRpc2FibGUtbGlidW53aW5kIFwKKyAgICAgICAgLS13aXRob3V0LXhtbHRvIFwKKyAgICAgICAgLS1lbmFibGUtc3lzdGVtZC1sb2dpbmQ9bm8gXAorICAgICAgICAtLWRpc2FibGUteGluZXJhbWEgXAorICAgICAgICAtLWRpc2FibGUteHdheWxhbmQgXAorIgorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICBvbGRkaXI9YHB3ZGAKKyAgICBjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0KKworICAgIHJtIC1yZiBhY2xvY2FsLWNvcHkvCisgICAgcm0gLWYgYWNsb2NhbC5tNAorCisgICAgZXhwb3J0IEFDTE9DQUxESVI9IiR7WFNFUlZFUl9TT1VSQ0VfRElSfS9hY2xvY2FsLWNvcHkiCisgICAgbWtkaXIgLXAgJHtBQ0xPQ0FMRElSfS8KKyAgICBpZiBbIC1kICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbCBdOyB0aGVuCisgICAgICAgIGNwLW5vZXJyb3IgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsLyAke0FDTE9DQUxESVJ9LworICAgIGZpCisgICAgaWYgWyAtZCAke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbCAtYSAiJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsIiAhPSAiJHtTVEFHSU5HX0RBVEFESVJ9L2FjbG9jYWwiIF07IHRoZW4KKyAgICAgICAgY3Atbm9lcnJvciAke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbC8gJHtBQ0xPQ0FMRElSfS8KKyAgICBmaQorICAgIEFDTE9DQUw9ImFjbG9jYWwgLS1zeXN0ZW0tYWNkaXI9JHtBQ0xPQ0FMRElSfS8iIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgJHtFWFRSQV9BVVRPUkVDT05GfSAkYWNwYXRocyB8fCBiYmZhdGFsICJhdXRvcmVjb25mIGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgIGNobW9kICt4IC4vY29uZmlndXJlCisgICAgJHtDQUNIRURfQ09ORklHVVJFVkFSU30gLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KKyAgICBjZCAkb2xkZGlyCit9CisKK2RvX2NvbXBpbGVfYXBwZW5kICgpIHsKKyAgICBvbGRkaXI9YHB3ZGAKKyAgICBjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0KKworICAgIG9lX3J1bm1ha2UKKworICAgIGNkICRvbGRkaXIKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgb2xkZGlyPWBwd2RgCisgICAgY2QgJHtYU0VSVkVSX1NPVVJDRV9ESVJ9L2h3L3ZuYworCisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisKKyAgICBjZCAkb2xkZGlyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZGlyfS94b3JnL21vZHVsZXMvZXh0ZW5zaW9ucyBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3hvcmcvbW9kdWxlcy9leHRlbnNpb25zLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMS5iYgppbmRleCA1MDIwMzRhLi5lN2M0OGZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYl8xLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xLmJiCkBAIC0zLDcgKzMsNyBAQAogZXZlbnRzLCBhcyB3ZWxsIGFzIGEgZmlsdGVyIHN0YWNrIGZvciB0aGUgbWFuaXB1bGF0aW9uIG9mIHRob3NlIGV2ZW50cy4gXAogVHNsaWIgaXMgZ2VuZXJhbGx5IHVzZWQgb24gZW1iZWRkZWQgZGV2aWNlcyB0byBwcm92aWRlIGEgY29tbW9uIHVzZXIgXAogc3BhY2UgaW50ZXJmYWNlIHRvIHRvdWNoc2NyZWVuIGZ1bmN0aW9uYWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3RzbGliLmJlcmxpb3MuZGUvIgorSE9NRVBBR0UgPSAiaHR0cDovL3RzbGliLm9yZy8iCiAKIEFVVEhPUiA9ICJSdXNzZWxsIEtpbmcgdy8gcGx1Z2lucyBieSBDaHJpcyBMYXJzb24gZXQuIGFsLiIKIFNFQ1RJT04gPSAiYmFzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1maXRzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1maXRzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMmFmNjY5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtZml0c19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIldheWxhbmQtZml0cywgdGhlIFdheWxhbmQgRnVuY3Rpb25hbCBJbnRlZ3JhdGlvbiBUZXN0IFN1aXRlIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZC1maXRzIGlzIGEgZnVsbHkgYXV0b21hdGVkIGZ1bmN0aW9uYWwgaW50ZWdyYXRpb24gXAotdGVzdCBzdWl0ZS4gSXRzIG1haW4gcHVycG9zZSBpcyB0byB0ZXN0IHRoZSBmdW5jdGlvbmFsaXR5IGFuZCBpbnRlZ3JhdGlvbiBvZiBcCi1jbGllbnQtc2lkZSAoaS5lLiB0b29sa2l0KSBhbmQgc2VydmVyLXNpZGUgKGNvbXBvc2l0b3IpIGltcGxlbWVudGF0aW9ucyBvZiBcCi10aGUgV2F5bGFuZCBwcm90b2NvbC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvd2F5bGFuZC1maXRzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mOGQzNGNhZGFmODkxNzUzYzBmMDBjNmNkNDhmMDhmNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZXh0ZW5zaW9ucy93ZXN0b24vd2VzdG9uLXdmaXRzLmNwcDtlbmRsaW5lPTIxO21kNT04NDhjODFlNTVjZjNhMzBhOWY2ZWQ3NWYwZGJhN2E5NyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL3dheWxhbmQtZml0cy5naXQiCi1TUkNSRVYgPSAiZjEwODMzNWUzNzQ3NzJhZTI4MThhMzBhZTM3ZmU2ZmNkYTgxOTgwZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLURFUEVORFMgPSAibGliY2hlY2sgYm9vc3Qgd2F5bGFuZCB3ZXN0b24iCi1SREVQRU5EU18ke1BOfSA9ICJ3ZXN0b24iCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zdGF0aWMgLS13aXRoLWJvb3N0LWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSIKLQotUEFDS0FHRUNPTkZJRyA/PSAiZ3RrKzMiCi0KLVBBQ0tBR0VDT05GSUdbZWxlbWVudGFyeV0gPSAiLS1lbmFibGUtZWZsLXRlc3RzLC0tZGlzYWJsZS1lZmwtdGVzdHMsZWxlbWVudGFyeSIKLVBBQ0tBR0VDT05GSUdbZ3RrKzNdID0gIi0tZW5hYmxlLWd0ay10ZXN0cywtLWRpc2FibGUtZ3RrLXRlc3RzLGd0ayszIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtZiAke0R9LyR7bGliZGlyfS93ZXN0b24vKi5sYQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtiaW5kaXJ9L3dmaXRzICR7bGliZGlyfS93ZXN0b24vKi5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtiaW5kaXJ9Ly5kZWJ1ZyAke2xpYmRpcn0vd2VzdG9uLy5kZWJ1ZyAke3ByZWZpeH0vc3JjIgotCi1QTkJMQUNLTElTVFt3YXlsYW5kLWZpdHNdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjMyLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3Nlc3NyZWdfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9zZXNzcmVnXzEuMS4wLmJiCmluZGV4IDJlMjViN2QuLjM4ODVkNjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3Nlc3NyZWdfMS4xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMC5iYgpAQCAtNiwzICs2LDYgQEAKIFNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLUVycm9yLUZpeC5wYXRjaCIKIFNSQ19VUklbbWQ1c3VtXSA9ICJlMjM4Yzg5ZGFiYzU2NmUxODM1ZTFlY2I2MWI2MDViOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NTExNzc2NTc4MzVlMDkwMmI1ZWVlN2IxOTcxMzAzNWJlYWExNTgxYmJkM2M2NTA2YmFhNTUzZTc1MWUwMTdjIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfV1RNUFhfRklMRT1XVE1QX0ZJTEUgLURfUEFUSF9XVE1QWD1fUEFUSF9XVE1QIC1EX1VUTVBYX0ZJTEU9VVRNUF9GSUxFIC1EX1BBVEhfVVRNUFg9X1BBVEhfVVRNUCAiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMyNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMyNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYyN2FmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveG9yZy1hcHAtY29tbW9uLmluYwotU1VNTUFSWSA9ICJ4dGVybSBpcyB0aGUgc3RhbmRhcmQgdGVybWluYWwgZW11bGF0b3IgZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0iCi1ERVBFTkRTID0gImxpYnhhdyB4cHJvdG8geGV4dHByb3RvIGxpYnhleHQgbGlieGF1IGxpYnhpbmVyYW1hIGxpYnhwbSBuY3Vyc2VzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94dGVybS5oO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PTg0MmU5NDVjNDZjNDNlMDVjNDRkOTUwMDNhYTg3OGUxIgotCi1TUkNfVVJJID0gImh0dHA6Ly9pbnZpc2libGUtbWlycm9yLm5ldC9hcmNoaXZlcy8ke0JQTn0vJHtCUH0udGd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc4YTBiYmM0ZDVmYTM3ODA5MTdlNDQ3YWU4ZWJjNmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2IzMWIwN2EwYzQwNDI3ZTkzMzBlYzNiZTlkMWE3NDhjNzI4MDhmOTQ1OTUzY2VhOWU1MjZlNDhiZTMxNWYxYiIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1t4ZnRdID0gIi0tZW5hYmxlLWZyZWV0eXBlLC0tZGlzYWJsZS1mcmVldHlwZSxsaWJ4ZnQgZm9udGNvbmZpZyBmcmVldHlwZS1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIEZSRUVUWVBFX0NPTkZJRz0ke1NUQUdJTkdfQklORElSX0NST1NTfS9mcmVldHlwZS1jb25maWcgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtaW1ha2UgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zZXR1aWQiCi0KLUIgPSAiJHtTfSIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGdudS1jb25maWdpemUgLS1mb3JjZQotICAgIHNlZCAtZSAicyUvdXNyL2NvbnRyaWIvWDExUjYlJHtTVEFHSU5HX0xJQkRJUn0lZyIgLWkgY29uZmlndXJlCi0gICAgb2VfcnVuY29uZgotfQotCi1GSUxFU18ke1BOfSArPSAiL3Vzci9saWIvWDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzMwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYmIwZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIKQEAgLTAsMCArMSwyOSBAQAorcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hvcmctYXBwLWNvbW1vbi5pbmMKK1NVTU1BUlkgPSAieHRlcm0gaXMgdGhlIHN0YW5kYXJkIHRlcm1pbmFsIGVtdWxhdG9yIGZvciB0aGUgWCBXaW5kb3cgU3lzdGVtIgorREVQRU5EUyA9ICJsaWJ4YXcgeHByb3RvIHhleHRwcm90byBsaWJ4ZXh0IGxpYnhhdSBsaWJ4aW5lcmFtYSBsaWJ4cG0gbmN1cnNlcyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veHRlcm0uaDtiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1mMDJhYjllYmRhODdiNzcwZWNmNzExZGJiMzc4NGEzMyIKKworU1JDX1VSSSA9ICJodHRwOi8vaW52aXNpYmxlLW1pcnJvci5uZXQvYXJjaGl2ZXMvJHtCUE59LyR7QlB9LnRneiIKKworU1JDX1VSSVttZDVzdW1dID0gIjlhNmRiNzk3NGFhNGNjYmI1MGVhYmViZjcyNjE4NDY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdhZWVmOWYyOWY2Yjk1ZTA5ZjQ4MTE3M2M4YzMwNTMzNTdiZjVmZmUxNjI1ODU2NDdmNjkwZmQxNzA3NTU2ZGYiCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW3hmdF0gPSAiLS1lbmFibGUtZnJlZXR5cGUsLS1kaXNhYmxlLWZyZWV0eXBlLGxpYnhmdCBmb250Y29uZmlnIGZyZWV0eXBlLW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIiAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgICAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgRlJFRVRZUEVfQ09ORklHPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2ZyZWV0eXBlLWNvbmZpZyBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1pbWFrZSBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1oYWNrIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNldHVpZCIKKworQiA9ICIke1N9IgorCitkb19jb25maWd1cmUoKSB7CisgICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlCisgICAgc2VkIC1lICJzJS91c3IvY29udHJpYi9YMTFSNiUke1NUQUdJTkdfTElCRElSfSVnIiAtaSBjb25maWd1cmUKKyAgICBvZV9ydW5jb25mCit9CisKK0ZJTEVTXyR7UE59ICs9ICIvdXNyL2xpYi9YMTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW10ZXYvZml4LWl0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1tdGV2L2ZpeC1pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxYTJhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW10ZXYvZml4LWl0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLWRpZmYgLS1naXQgYS9zcmMvbXVsdGl0b3VjaC5jIGIvc3JjL211bHRpdG91Y2guYwotaW5kZXggYzU1ZDc0Mi4uNGE4MTkyZCAxMDA2NDQKLS0tLSBhL3NyYy9tdWx0aXRvdWNoLmMKLSsrKyBiL3NyYy9tdWx0aXRvdWNoLmMKLUBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIGludCBpbml0X3Byb3BlcnRpZXMoRGV2aWNlSW50UHRyIGRldikKLSAJcmV0dXJuIFN1Y2Nlc3M7Ci0gfQotIAotLXN0YXRpYyBpbnQgZGV2aWNlX2luaXQoRGV2aWNlSW50UHRyIGRldiwgTG9jYWxEZXZpY2VQdHIgbG9jYWwpCi0rc3RhdGljIGludCBkZXZpY2VfaW5pdChEZXZpY2VJbnRQdHIgZGV2LCBJbnB1dEluZm9QdHIgbG9jYWwpCi0gewotIAlzdHJ1Y3QgbXRldl9tdG91Y2ggKm10ID0gbG9jYWwtPnByaXZhdGU7Ci0gCUF0b20gYXRvbTsKLUBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGludCBkZXZpY2VfaW5pdChEZXZpY2VJbnRQdHIgZGV2LCBMb2NhbERldmljZVB0ciBsb2NhbCkKLSAJCQl4Zjg2SW5pdFZhbHVhdG9yQXhpc1N0cnVjdChkZXYsIHZhbCwgYXhlc19sYWJlbHNbdmFsXSwKLSAJCQkJCQkgICBtaW4sCi0gCQkJCQkJICAgbWF4LAotLQkJCQkJCSAgIDEsIDAsIDEpOwotKwkJCQkJCSAgIDEsIDAsIDEsQWJzb2x1dGUpOwotIAkJCXhmODZJbml0VmFsdWF0b3JEZWZhdWx0cyhkZXYsIHZhbCk7Ci0gCQl9Ci0gCX0KLUBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIGludCBkZXZpY2VfaW5pdChEZXZpY2VJbnRQdHIgZGV2LCBMb2NhbERldmljZVB0ciBsb2NhbCkKLSAJcmV0dXJuIFN1Y2Nlc3M7Ci0gfQotIAotLXN0YXRpYyBpbnQgZGV2aWNlX29uKExvY2FsRGV2aWNlUHRyIGxvY2FsKQotK3N0YXRpYyBpbnQgZGV2aWNlX29uKElucHV0SW5mb1B0ciBsb2NhbCkKLSB7Ci0gCXN0cnVjdCBtdGV2X210b3VjaCAqbXQgPSBsb2NhbC0+cHJpdmF0ZTsKLSAJbG9jYWwtPmZkID0geGY4Nk9wZW5TZXJpYWwobG9jYWwtPm9wdGlvbnMpOwotQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0aWMgaW50IGRldmljZV9vbihMb2NhbERldmljZVB0ciBsb2NhbCkKLSAJcmV0dXJuIFN1Y2Nlc3M7Ci0gfQotIAotLXN0YXRpYyBpbnQgZGV2aWNlX29mZihMb2NhbERldmljZVB0ciBsb2NhbCkKLStzdGF0aWMgaW50IGRldmljZV9vZmYoSW5wdXRJbmZvUHRyIGxvY2FsKQotIHsKLSAJc3RydWN0IG10ZXZfbXRvdWNoICptdCA9IGxvY2FsLT5wcml2YXRlOwotIAl4Zjg2UmVtb3ZlRW5hYmxlZERldmljZShsb2NhbCk7Ci1AQCAtMjU5LDEyICsyNTksMTIgQEAgc3RhdGljIGludCBkZXZpY2Vfb2ZmKExvY2FsRGV2aWNlUHRyIGxvY2FsKQotIAlyZXR1cm4gU3VjY2VzczsKLSB9Ci0gCi0tc3RhdGljIGludCBkZXZpY2VfY2xvc2UoTG9jYWxEZXZpY2VQdHIgbG9jYWwpCi0rc3RhdGljIGludCBkZXZpY2VfY2xvc2UoSW5wdXRJbmZvUHRyIGxvY2FsKQotIHsKLSAJcmV0dXJuIFN1Y2Nlc3M7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHByb2Nlc3Nfc3RhdGUoTG9jYWxEZXZpY2VQdHIgbG9jYWwsCi0rc3RhdGljIHZvaWQgcHJvY2Vzc19zdGF0ZShJbnB1dEluZm9QdHIgbG9jYWwsCi0gCQkJICBjb25zdCBzdHJ1Y3QgbXRldl9tdG91Y2ggKm10KQotIHsKLSAKLUBAIC0zMjEsMjIgKzMyMSwyMiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3N0YXRlKExvY2FsRGV2aWNlUHRyIGxvY2FsLAotIAl9Ci0gCi0gCS8qIFNvbWUgeC1jbGllbnRzIGFzc3VtZSB0aGV5IGdldCBtb3Rpb24gZXZlbnRzIGJlZm9yZSBidXR0b24gZG93biAqLwotKwl4Zjg2TXNnKFhfSU5GTywiZG93biAlZHxwZG93biAlZFxuIiwgZG93biwgcGRvd24pOwotIAlpZiAoZG93bikKLSAJCXhmODZQb3N0TW90aW9uRXZlbnRQKGxvY2FsLT5kZXYsIFRSVUUsCi0gCQkJCSAgICAgMCwgZG93biAqIE1UX0FYSVNfUEVSX0ZJTkdFUiwgdmFsdWF0b3JzKTsKLS0KLSAJaWYoZG93biAmJiBwZG93biA9PSAwKQotIAkJeGY4NlBvc3RCdXR0b25FdmVudFAobG9jYWwtPmRldiwgVFJVRSwKLSAJCQkJICAgICAxLCAxLAotIAkJCQkgICAgIDAsIGRvd24gKiBNVF9BWElTX1BFUl9GSU5HRVIsIHZhbHVhdG9ycyk7Ci0tCWVsc2UgaWYgKGRvd24gPT0gMCAmJiBwZG93bikKLS0JCXhmODZQb3N0QnV0dG9uRXZlbnQobG9jYWwtPmRldiwgVFJVRSwgMSwgMCwgMCwgMCk7Ci0tCi0rCWVsc2UgaWYgKGRvd24gPT0gMCAmJiBwZG93bil7Ci0rCQl4Zjg2UG9zdEJ1dHRvbkV2ZW50KGxvY2FsLT5kZXYsIFRSVUUsIDEsIDEsIDAsIDApOwotKwl9Ci0gCXBkb3duID0gISFkb3duOwotIH0KLSAKLSAvKiBjYWxsZWQgZm9yIGVhY2ggZnVsbCByZWNlaXZlZCBwYWNrZXQgZnJvbSB0aGUgdG91Y2hwYWQgKi8KLS1zdGF0aWMgdm9pZCByZWFkX2lucHV0KExvY2FsRGV2aWNlUHRyIGxvY2FsKQotK3N0YXRpYyB2b2lkIHJlYWRfaW5wdXQoSW5wdXRJbmZvUHRyIGxvY2FsKQotIHsKLSAJc3RydWN0IG10ZXZfbXRvdWNoICptdCA9IGxvY2FsLT5wcml2YXRlOwotIAl3aGlsZSAobXRvdWNoX3JlYWRfc3luY2hyb25pemVkX2V2ZW50KG10LCBsb2NhbC0+ZmQpKSB7Ci1AQCAtMzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyB2b2lkIHJlYWRfaW5wdXQoTG9jYWxEZXZpY2VQdHIgbG9jYWwpCi0gCi0gc3RhdGljIEJvb2wgZGV2aWNlX2NvbnRyb2woRGV2aWNlSW50UHRyIGRldiwgaW50IG1vZGUpCi0gewotLQlMb2NhbERldmljZVB0ciBsb2NhbCA9IGRldi0+cHVibGljLmRldmljZVByaXZhdGU7Ci0rCUlucHV0SW5mb1B0ciBsb2NhbCA9IGRldi0+cHVibGljLmRldmljZVByaXZhdGU7Ci0gCXN3aXRjaCAobW9kZSkgewotIAljYXNlIERFVklDRV9JTklUOgotIAkJeGY4Nk1zZyhYX0lORk8sICJkZXZpY2UgY29udHJvbDogaW5pdFxuIik7Ci1AQCAtMzY2LDM5ICszNjYsMjkgQEAgc3RhdGljIEJvb2wgZGV2aWNlX2NvbnRyb2woRGV2aWNlSW50UHRyIGRldiwgaW50IG1vZGUpCi0gCX0KLSB9Ci0gCi0tc3RhdGljIElucHV0SW5mb1B0ciBwcmVpbml0KElucHV0RHJpdmVyUHRyIGRydiwgSURldlB0ciBkZXYsIGludCBmbGFncykKLStzdGF0aWMgSW5wdXRJbmZvUHRyIHByZWluaXQoSW5wdXREcml2ZXJQdHIgZHJ2LCBJbnB1dEluZm9QdHIgcEluZm8sIGludCBmbGFncykKLSB7Ci0gCXN0cnVjdCBtdGV2X210b3VjaCAqbXQ7Ci0tCUlucHV0SW5mb1B0ciBsb2NhbCA9IHhmODZBbGxvY2F0ZUlucHV0KGRydiwgMCk7Ci0tCWlmICghbG9jYWwpCi0tCQlnb3RvIGVycm9yOwotKwlpbnQgcmM7Ci0rCi0gCW10ID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbXRldl9tdG91Y2gpKTsKLSsKLSAJaWYgKCFtdCkKLSAJCWdvdG8gZXJyb3I7Ci0gCi0tCWxvY2FsLT5uYW1lID0gZGV2LT5pZGVudGlmaWVyOwotLQlsb2NhbC0+dHlwZV9uYW1lID0gWElfVE9VQ0hTQ1JFRU47Ci0tCWxvY2FsLT5kZXZpY2VfY29udHJvbCA9IGRldmljZV9jb250cm9sOwotLQlsb2NhbC0+cmVhZF9pbnB1dCA9IHJlYWRfaW5wdXQ7Ci0tCWxvY2FsLT5wcml2YXRlID0gbXQ7Ci0tCWxvY2FsLT5mbGFncyA9IFhJODZfUE9JTlRFUl9DQVBBQkxFIHwKLS0JCVhJODZfU0VORF9EUkFHX0VWRU5UUzsKLS0KLS0JbG9jYWwtPmNvbmZfaWRldiA9IGRldjsKLS0KLS0JeGY4NkNvbGxlY3RJbnB1dE9wdGlvbnMobG9jYWwsIE5VTEwsIE5VTEwpOwotLQkvL3hmODZPcHRpb25MaXN0UmVwb3J0KGxvY2FsLT5vcHRpb25zKTsKLS0JeGY4NlByb2Nlc3NDb21tb25PcHRpb25zKGxvY2FsLCBsb2NhbC0+b3B0aW9ucyk7Ci0rCXBJbmZvLT5wcml2YXRlID0gbXQ7Ci0rCXBJbmZvLT50eXBlX25hbWUgPSAiVU5LTk9XTiI7Ci0rCXBJbmZvLT5kZXZpY2VfY29udHJvbCA9IGRldmljZV9jb250cm9sOwotKwlwSW5mby0+cmVhZF9pbnB1dCA9IHJlYWRfaW5wdXQ7Ci0gCi0rCW10LT5zd2FwX3h5ID0geGY4NlNldEJvb2xPcHRpb24ocEluZm8tPm9wdGlvbnMsICJTd2FwQXhlcyIsIEZBTFNFKTsKLSsJbXQtPmludmVydF94ID0geGY4NlNldEJvb2xPcHRpb24ocEluZm8tPm9wdGlvbnMsICJJbnZlcnRYIiwgRkFMU0UpOwotKwltdC0+aW52ZXJ0X3kgPSB4Zjg2U2V0Qm9vbE9wdGlvbihwSW5mby0+b3B0aW9ucywgIkludmVydFkiLCBGQUxTRSk7Ci0gCi0tCW10LT5zd2FwX3h5ID0geGY4NlNldEJvb2xPcHRpb24obG9jYWwtPm9wdGlvbnMsICJTd2FwQXhlcyIsIEZBTFNFKTsKLS0JbXQtPmludmVydF94ID0geGY4NlNldEJvb2xPcHRpb24obG9jYWwtPm9wdGlvbnMsICJJbnZlcnRYIiwgRkFMU0UpOwotLQltdC0+aW52ZXJ0X3kgPSB4Zjg2U2V0Qm9vbE9wdGlvbihsb2NhbC0+b3B0aW9ucywgIkludmVydFkiLCBGQUxTRSk7Ci0tCi0tCWxvY2FsLT5mbGFncyB8PSBYSTg2X0NPTkZJR1VSRUQ7Ci0rCXJldHVybiBTdWNjZXNzOwotIAotIGVycm9yOgotLQlyZXR1cm4gbG9jYWw7Ci0rCXJldHVybiAhU3VjY2VzczsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdW5pbml0KElucHV0RHJpdmVyUHRyIGRydiwgSW5wdXRJbmZvUHRyIGxvY2FsLCBpbnQgZmxhZ3MpCi1AQCAtNDE1LDcgKzQwNSw2IEBAIHN0YXRpYyBJbnB1dERyaXZlclJlYyBNVEVWID0gewotIAkuUHJlSW5pdCA9IHByZWluaXQsCi0gCS5VbkluaXQgPSB1bmluaXQsCi0gCS5tb2R1bGUgPSBOVUxMLAotLQkucmVmQ291bnQgPSAwCi0gfTsKLSAKLSBzdGF0aWMgWEY4Nk1vZHVsZVZlcnNpb25JbmZvIFZFUlNJT04gPSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW10ZXZfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1tdGV2X2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYyYWRlYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW10ZXZfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWlucHV0LmluYwotU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBtdWx0aXRvdWNoIGlucHV0IGRyaXZlciIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGE3MWQwNDc1ZDA4ZWVlNzZkOGI2ZDBjNmRiZWM1NDMiCi0KLURFUEVORFMgKz0gInBpeG1hbiIKLQotUE5CTEFDS0xJU1RbeGY4Ni1pbnB1dC1tdGV2XSA/PSAiQlJPS0VOOiBkb2Vzbid0IGJ1aWxkIHdpdGggQiE9UyAoTWFrZWZpbGUgd2l0aG91dCAke1N9IGluIHNlZCBjYWxsKSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRvcmlvdXMub3JnL3hvcmcveGY4Ni1pbnB1dC1tdGV2LmdpdCBmaWxlOi8vZml4LWl0LnBhdGNoIgotU1JDUkVWID0gIjFlYjQ2OTE2NmZmYzA5NWM1ODAxNDc1ZjA1N2Y5MTFmOTdhNmU2NDEiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotUFYgPSAiMS4wLjArZ2l0ciR7U1JDUFZ9IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLUVYVFJBX09FTUFLRSA9ICInSU5DTFVERT0tSSR7U1RBR0lOR19JTkNESVJ9L3hvcmcgLUkke1NUQUdJTkdfSU5DRElSfS9waXhtYW4tMSciCi0KLSNza2lwIHhvcmctZHJpdmVyLWNvbW1vbi5pbmMgQUNfQ0hFQ0tfRklMRSBtYW5nbGluZwotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIHNlZCAncyNnY2MjJHtDQ30jZycgLWkgTWFrZWZpbGUKLSAgICByZXR1cm4KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tYXRpXzcuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1hdGlfNy44LjAuYmIKaW5kZXggYTEwMTAwOC4uZDQwOWExOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1hdGlfNy44LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1hdGlfNy44LjAuYmIKQEAgLTksNiArOSw5IEBACiBERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4dm1jIGRybSB4Zjg2ZHJpcHJvdG8gZ2xwcm90byBcCiAgICAgICAgICAgICB2aXJ0dWFsL2xpYmdsIHhpbmVyYW1hcHJvdG8gbGlicGNpYWNjZXNzIgogCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJvcGVuZ2wiCisKIENPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjQpLiotbGludXgnCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJmMzRkMDRhNzU1ZTc2MWUwM2I0NTkxNTVmYTNkZGNiYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2VvZGUvMDAwMS1BZGQtY29uZmlnLmgtaW5jbHVkZS10by1zcmMtbHhfbWVtb3J5LmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdlb2RlLzAwMDEtQWRkLWNvbmZpZy5oLWluY2x1ZGUtdG8tc3JjLWx4X21lbW9yeS5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2QyZjY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2VvZGUvMDAwMS1BZGQtY29uZmlnLmgtaW5jbHVkZS10by1zcmMtbHhfbWVtb3J5LmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDYyMWQ5NDZlNTZlZmFjMmM3NzliODNiMWE1YzZiNjQ1MTY5YzRlYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQnJpYW4gQS4gTGxveWQiIDxicmlhbi5sbG95ZEBmYW1pbHlob25vci5uZXQ+Ci1EYXRlOiBXZWQsIDEgT2N0IDIwMTQgMTI6MzU6MTggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIGNvbmZpZy5oIGluY2x1ZGUgdG8gc3JjL2x4X21lbW9yeS5jCi0KLVRoZSBzcmMvbHhfbWVtb3J5LmMgZmlsZSB1c2VzIHRoZSB4Zjg2LmggaGVhZGVyIGZpbGUuICBUaGlzIGZpbGUgbXVzdCBoYXZlCi1IQVZFX1NUUk5EVVAgZGVmaW5lZCBiZWZvcmUgY2FsbGluZyBpdCB3aGVuIHRoZSBidWlsZGluZyBwbGF0Zm9ybSBoYXMgYSBzdHJuZHVwCi1mdW5jdGlvbi4gIFdoZW4gdXNpbmcgY29uZmlnLmgsIHRoaXMgZmlsZSBkb2Vzbid0IGhhdmUgdGhhdCBkZWZpbmUgYW5kIHNvIGZhaWxzCi10byBjb21waWxlLgotCi1UaGUgYXR0YWNoZWQgcGF0Y2ggYWRkcyB0aGUgY29uZGl0aW9uYWwgY29uZmlnLmggdG8gdGhpcyBmaWxlIHNvIGl0IG1heSBjb21waWxlCi1vbiB0aGUgYWZmZWN0ZWQgcGxhdGZvcm1zLgotCi1UaGUgcGF0Y2ggaXMgdHJpdmlhbCBhbmQgbWF5IGJlIGluY2x1ZGVkIGFuZCB1c2VkIHVuZGVyIHdoYXRldmVyIGxpY2Vuc2luZwotZGVzaXJlZC4KLQotQ2xvc2VzOiBGcmVlIERlc2t0b3AgQnVnICM4NDU0MQotCi1TaWduZWQtb2ZmLWJ5OiBCcmlhbiBBLiBMbG95ZCA8YnJpYW4ubGxveWRAZmFtaWx5aG9ub3IubmV0PgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotLS0tCi0gc3JjL2x4X21lbW9yeS5jIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbHhfbWVtb3J5LmMgYi9zcmMvbHhfbWVtb3J5LmMKLWluZGV4IGYyNmQyODAuLjk5MjQ0NmYgMTAwNjQ0Ci0tLS0gYS9zcmMvbHhfbWVtb3J5LmMKLSsrKyBiL3NyYy9seF9tZW1vcnkuYwotQEAgLTIyLDYgKzIyLDkgQEAKLSAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gICogc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gICovCi0rI2lmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgInhmODYuaCIKLSAjaW5jbHVkZSAiZ2VvZGUuaCIKLS0tIAotMi4xLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nZW9kZV8yLjExLjE2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nZW9kZV8yLjExLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTQzNDEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2VvZGVfMi4xMS4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci12aWRlby5pbmMKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU3ZjNlMzk0NzRhZWVhNWFmMzgxYThlMTAzZGFmYzM2IgotCi1TVU1NQVJZID0gIlgub3JnIHNlcnZlciAtLSBHZW9kZSBHWDIvTFggZGlzcGxheSBkcml2ZXIiCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQWRkLWNvbmZpZy5oLWluY2x1ZGUtdG8tc3JjLWx4X21lbW9yeS5jLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjM1ZmEzODdmNmEzM2Y2YjIyYTU2Y2U0YmRhNDI0MzkyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM4ZmMxZjU1ZTI5ZmI3OTg1YjkwYzkwMjFhNGI3ZTUyOTVkNDI4ODhiZDY2OTE3NGY0MmYzYjdmNjgxZmMxYTciCi0KLUNPTVBBVElCTEVfSE9TVCA9ICJpLjg2LiotbGludXgiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ4c2VydmVyLXhvcmctbW9kdWxlLWV4YSIKLQotIyAyXzIuMTEuMTYtcjIxLjAveGY4Ni12aWRlby1nZW9kZS0yLjExLjE2L3NyYy9neF9kcml2ZXIuYzozNzY6MjA6IGVycm9yOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAneGY4Nk1hcFZpZE1lbScgWy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCi1QTkJMQUNLTElTVFt4Zjg2LXZpZGVvLWdlb2RlXSA/PSAiQlJPS0VOLCBmYWlscyB0byBidWlsZCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMS1maXgtYnVpbGQtd2l0aC1LTVMtZGlzYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdsYW1vLzAwMDEtZml4LWJ1aWxkLXdpdGgtS01TLWRpc2FibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWU4MzIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMS1maXgtYnVpbGQtd2l0aC1LTVMtZGlzYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGY0ODVlODc4YmM4YmIwZTM4MWEzOGEzMDAwOTMwOGM4MmZhOGQ2NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDE2IEF1ZyAyMDEyIDA4OjE4OjU2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWlsZCB3aXRoIEtNUyBkaXNhYmxlZAotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvZ2xhbW8uaCB8ICAgIDMgKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2xhbW8uaCBiL3NyYy9nbGFtby5oCi1pbmRleCBkNGEyZjE5Li41ZmQ1YzA0IDEwMDY0NAotLS0tIGEvc3JjL2dsYW1vLmgKLSsrKyBiL3NyYy9nbGFtby5oCi1AQCAtMzcsOCArMzcsMTEgQEAKLSAjaW5jbHVkZSAieGY4Ni5oIgotICNpbmNsdWRlICJleGEuaCIKLSAjaW5jbHVkZSA8bGludXgvZmIuaD4KLSsKLSsjaWZkZWYgSEFWRV9LTVMKLSAjaW5jbHVkZSA8bGliZHJtL2RybS5oPgotICNpbmNsdWRlIDxsaWJkcm0vZ2xhbW9fYm8uaD4KLSsjZW5kaWYKLSAKLSAjZGVmaW5lIEdMQU1PX1JFR19CQVNFKGMpCQkoKGMpLT5hdHRyLmFkZHJlc3NbMF0pCi0gI2RlZmluZSBHTEFNT19SRUdfU0laRShjKQkJKDB4MjQwMCkKLS0tIAotMS43LjguNgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdsYW1vLzAwMDEtZ2xhbW8tZHJpdmVyLXJlbW92ZS1yZWZlcmVuY2VzLXRvLW1pYnN0b3JlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1nbGFtby8wMDAxLWdsYW1vLWRyaXZlci1yZW1vdmUtcmVmZXJlbmNlcy10by1taWJzdG9yZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFiMGIyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdsYW1vLzAwMDEtZ2xhbW8tZHJpdmVyLXJlbW92ZS1yZWZlcmVuY2VzLXRvLW1pYnN0b3JlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSAwNDBhZGU4YmI4NmE3NzFmYTRlNzFiNDFkMjA4MDI1NDgzMGNhOWYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogU2F0LCAxNiBNYXIgMjAxMyAxNzo0NDozNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBnbGFtbypkcml2ZXI6IHJlbW92ZSByZWZlcmVuY2VzIHRvIG1pYnN0b3JlCi0KLSogZml4IGJ1aWxkIHdpdGggeHNlcnZlci0xLjE0Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9nbGFtby1kcml2ZXIuYyAgICAgfCAyIC0tCi0gc3JjL2dsYW1vLWttcy1kcml2ZXIuYyB8IDEgLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9nbGFtby1kcml2ZXIuYyBiL3NyYy9nbGFtby1kcml2ZXIuYwotaW5kZXggMTBiNzc2Mi4uMjJmNTdkNyAxMDA2NDQKLS0tLSBhL3NyYy9nbGFtby1kcml2ZXIuYwotKysrIGIvc3JjL2dsYW1vLWRyaXZlci5jCi1AQCAtMTQsNyArMTQsNiBAQAotICNpbmNsdWRlICJ4Zjg2X09TcHJvYy5oIgotIAotICNpbmNsdWRlICJtaXBvaW50ZXIuaCIKLS0jaW5jbHVkZSAibWlic3RvcmUuaCIKLSAjaW5jbHVkZSAibWljbWFwLmgiCi0gI2luY2x1ZGUgImNvbG9ybWFwc3QuaCIKLSAjaW5jbHVkZSAieGY4NmNtYXAuaCIKLUBAIC02MTIsNyArNjExLDYgQEAgR2xhbW9TY3JlZW5Jbml0KFNDUkVFTl9JTklUX0FSR1NfREVDTCkKLSAgICAgfQotIAotICAgICB4Zjg2U2V0QmxhY2tXaGl0ZVBpeGVscyhwU2NyZWVuKTsKLS0gICAgbWlJbml0aWFsaXplQmFja2luZ1N0b3JlKHBTY3JlZW4pOwotICAgICB4Zjg2U2V0QmFja2luZ1N0b3JlKHBTY3JlZW4pOwotIAotICAgICAvKiBzb2Z0d2FyZSBjdXJzb3IgKi8KLWRpZmYgLS1naXQgYS9zcmMvZ2xhbW8ta21zLWRyaXZlci5jIGIvc3JjL2dsYW1vLWttcy1kcml2ZXIuYwotaW5kZXggYzVjN2EwMC4uZjE5MjM5OCAxMDA2NDQKLS0tLSBhL3NyYy9nbGFtby1rbXMtZHJpdmVyLmMKLSsrKyBiL3NyYy9nbGFtby1rbXMtZHJpdmVyLmMKLUBAIC00MTUsNyArNDE1LDYgQEAgQm9vbCBHbGFtb0tNU1NjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLAotIAotIAlHbGFtb0tNU0V4YUluaXQocFNjcm4pOwotIAotLQltaUluaXRpYWxpemVCYWNraW5nU3RvcmUocFNjcmVlbik7Ci0gCXhmODZTZXRCYWNraW5nU3RvcmUocFNjcmVlbik7Ci0gCXhmODZTZXRTaWxrZW5Nb3VzZShwU2NyZWVuKTsKLSAJbWlEQ0luaXRpYWxpemUocFNjcmVlbiwgeGY4NkdldFBvaW50ZXJTY3JlZW5GdW5jcygpKTsKLS0tIAotMS44LjEuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdsYW1vLzAwMDEtZ2xhbW8ta21zLWRyaXZlci1kcm9wLXVudXNlZC14Zjg2X2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMS1nbGFtby1rbXMtZHJpdmVyLWRyb3AtdW51c2VkLXhmODZfY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDYzNzQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMS1nbGFtby1rbXMtZHJpdmVyLWRyb3AtdW51c2VkLXhmODZfY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA5NjNjMjIxYWEwMWJlMmVhOTlkMzk1NzhkOTFlNGFhMDhlYzNhYjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMyBNYXkgMjAxMSAxNDoyOTozOCArMDIwMAotU3ViamVjdDogW1BBVENIXSBnbGFtby1rbXMtZHJpdmVyOiBkcm9wIHVudXNlZCB4Zjg2X2NvbmZpZwotCi0qIGdjYy00LjYgZG9lc24ndCBsaWtlIHVudXNlZCB2YXJpYWJsZXMgd2hpY2ggYXJlIG9ubHkgc2V0IGFuZCBuZXZlciByZWFkCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9nbGFtby1rbXMtZHJpdmVyLmMgfCAgICAyIC0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2xhbW8ta21zLWRyaXZlci5jIGIvc3JjL2dsYW1vLWttcy1kcml2ZXIuYwotaW5kZXggY2U4N2NhYS4uYzVjN2EwMCAxMDA2NDQKLS0tLSBhL3NyYy9nbGFtby1rbXMtZHJpdmVyLmMKLSsrKyBiL3NyYy9nbGFtby1rbXMtZHJpdmVyLmMKLUBAIC0yMDgsNyArMjA4LDYgQEAgc3RhdGljIGNvbnN0IHhmODZDcnRjQ29uZmlnRnVuY3NSZWMgY3J0Y19jb25maWdfZnVuY3MgPSB7Ci0gCi0gQm9vbCBHbGFtb0tNU1ByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncykKLSB7Ci0tCXhmODZDcnRjQ29uZmlnUHRyIHhmODZfY29uZmlnOwotIAlHbGFtb1B0ciBwR2xhbW87Ci0gCXJnYiBkZWZhdWx0V2VpZ2h0ID0geyAwLCAwLCAwIH07Ci0gCWludCBtYXhfd2lkdGgsIG1heF9oZWlnaHQ7Ci1AQCAtMjU0LDcgKzI1Myw2IEBAIEJvb2wgR2xhbW9LTVNQcmVJbml0KFNjcm5JbmZvUHRyIHBTY3JuLCBpbnQgZmxhZ3MpCi0gCi0gCS8qIEFsbG9jYXRlIGFuIHhmODZDcnRjQ29uZmlnICovCi0gCXhmODZDcnRjQ29uZmlnSW5pdChwU2NybiwgJmNydGNfY29uZmlnX2Z1bmNzKTsKLS0JeGY4Nl9jb25maWcgPSBYRjg2X0NSVENfQ09ORklHX1BUUihwU2Nybik7Ci0gCi0gCW1heF93aWR0aCA9IDQ4MDsKLSAJbWF4X2hlaWdodCA9IDY0MDsKLS0tIAotMS43LjUucmMzCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMy1nbGFtby1kcml2ZXItYWRhcHQtdG8teHNlcnZlci0wLjEzLXZpZGVvLUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwMy1nbGFtby1kcml2ZXItYWRhcHQtdG8teHNlcnZlci0wLjEzLXZpZGVvLUFQSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JkYzZlNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdsYW1vLzAwMDMtZ2xhbW8tZHJpdmVyLWFkYXB0LXRvLXhzZXJ2ZXItMC4xMy12aWRlby1BUEkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotRnJvbSA1N2U4OTQ0ZTNjY2VkMDNiOTUyNmJkMDc1NjQ5ZDc0ZDk3YzI0ODk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMCBOb3YgMjAxMiAyMjoxODoyMyArMDEwMAotU3ViamVjdDogW1BBVENIIDMvM10gZ2xhbW8tZHJpdmVyOiBhZGFwdCB0byB4c2VydmVyLTAuMTMgdmlkZW8gQVBJCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jb21wYXQtYXBpLmggICB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9nbGFtby1kcml2ZXIuYyB8IDQzICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTE4IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvY29tcGF0LWFwaS5oCi0KLWRpZmYgLS1naXQgYS9zcmMvY29tcGF0LWFwaS5oIGIvc3JjL2NvbXBhdC1hcGkuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmIxNTkxYjEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9jb21wYXQtYXBpLmgKLUBAIC0wLDAgKzEsOTYgQEAKLSsvKgotKyAqIENvcHlyaWdodCAyMDEyIFJlZCBIYXQsIEluYy4KLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0rICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKLSsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0rICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0rICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCi0rICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsgKgotKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKLSsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0rICogU29mdHdhcmUuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAotKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0rICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0rICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotKyAqCi0rICogQXV0aG9yOiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgotKyAqLwotKwotKy8qIHRoaXMgZmlsZSBwcm92aWRlcyBBUEkgY29tcGF0IGJldHdlZW4gc2VydmVyIHBvc3QgMS4xMyBhbmQgcHJlIGl0LAotKyAgIGl0IHNob3VsZCBiZSByZXVzZWQgaW5zaWRlIGFzIG1hbnkgZHJpdmVycyBhcyBwb3NzaWJsZSAqLwotKyNpZm5kZWYgQ09NUEFUX0FQSV9ICi0rI2RlZmluZSBDT01QQVRfQVBJX0gKLSsKLSsjaWZuZGVmIEdMWVBIX0hBU19HTFlQSF9QSUNUVVJFX0FDQ0VTU09SCi0rI2RlZmluZSBHZXRHbHlwaFBpY3R1cmUoZywgcykgR2x5cGhQaWN0dXJlKChnKSlbKHMpLT5teU51bV0KLSsjZGVmaW5lIFNldEdseXBoUGljdHVyZShnLCBzLCBwKSBHbHlwaFBpY3R1cmUoKGcpKVsocyktPm15TnVtXSA9IHAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIFhGODZfSEFTX1NDUk5fQ09OVgotKyNkZWZpbmUgeGY4NlNjcmVlblRvU2NybihzKSB4Zjg2U2NyZWVuc1socyktPm15TnVtXQotKyNkZWZpbmUgeGY4NlNjcm5Ub1NjcmVlbihzKSBzY3JlZW5JbmZvLnNjcmVlbnNbKHMpLT5zY3JuSW5kZXhdCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBYRjg2X1NDUk5fSU5URVJGQUNFCi0rCi0rI2RlZmluZSBTQ1JOX0FSR19UWVBFIGludAotKyNkZWZpbmUgU0NSTl9JTkZPX1BUUihhcmcxKSBTY3JuSW5mb1B0ciBwU2NybiA9IHhmODZTY3JlZW5zWyhhcmcxKV0KLSsKLSsjZGVmaW5lIFNDUkVFTl9BUkdfVFlQRSBpbnQKLSsjZGVmaW5lIFNDUkVFTl9QVFIoYXJnMSkgU2NyZWVuUHRyIHBTY3JlZW4gPSBzY3JlZW5JbmZvLnNjcmVlbnNbKGFyZzEpXQotKwotKyNkZWZpbmUgU0NSRUVOX0lOSVRfQVJHU19ERUNMIGludCBpbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndgotKwotKyNkZWZpbmUgQkxPQ0tIQU5ETEVSX0FSR1NfREVDTCBpbnQgYXJnLCBwb2ludGVyIGJsb2NrRGF0YSwgcG9pbnRlciBwVGltZW91dCwgcG9pbnRlciBwUmVhZG1hc2sKLSsjZGVmaW5lIEJMT0NLSEFORExFUl9BUkdTIGFyZywgYmxvY2tEYXRhLCBwVGltZW91dCwgcFJlYWRtYXNrCi0rCi0rI2RlZmluZSBDTE9TRV9TQ1JFRU5fQVJHU19ERUNMIGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuCi0rI2RlZmluZSBDTE9TRV9TQ1JFRU5fQVJHUyBzY3JuSW5kZXgsIHBTY3JlZW4KLSsKLSsjZGVmaW5lIEFESlVTVF9GUkFNRV9BUkdTX0RFQ0wgaW50IGFyZywgaW50IHgsIGludCB5LCBpbnQgZmxhZ3MKLSsKLSsjZGVmaW5lIFNXSVRDSF9NT0RFX0FSR1NfREVDTCBpbnQgYXJnLCBEaXNwbGF5TW9kZVB0ciBtb2RlLCBpbnQgZmxhZ3MKLSsKLSsjZGVmaW5lIEZSRUVfU0NSRUVOX0FSR1NfREVDTCBpbnQgYXJnLCBpbnQgZmxhZ3MKLSsjZGVmaW5lIEZSRUVfU0NSRUVOX0FSR1MoeCkgKHgpLT5zY3JuSW5kZXgsIDAKLSsKLSsjZGVmaW5lIFZUX0ZVTkNfQVJHU19ERUNMIGludCBhcmcsIGludCBmbGFncwotKyNkZWZpbmUgVlRfRlVOQ19BUkdTKGZsYWdzKSBwU2Nybi0+c2NybkluZGV4LCAoZmxhZ3MpCi0rCi0rI2RlZmluZSBYRjg2X0VOQUJMRURJU0FCTEVGQl9BUkcoeCkgKCh4KS0+c2NybkluZGV4KQotKyNlbHNlCi0rI2RlZmluZSBTQ1JOX0FSR19UWVBFIFNjcm5JbmZvUHRyCi0rI2RlZmluZSBTQ1JOX0lORk9fUFRSKGFyZzEpIFNjcm5JbmZvUHRyIHBTY3JuID0gKGFyZzEpCi0rCi0rI2RlZmluZSBTQ1JFRU5fQVJHX1RZUEUgU2NyZWVuUHRyCi0rI2RlZmluZSBTQ1JFRU5fUFRSKGFyZzEpIFNjcmVlblB0ciBwU2NyZWVuID0gKGFyZzEpCi0rCi0rI2RlZmluZSBTQ1JFRU5fSU5JVF9BUkdTX0RFQ0wgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndgotKwotKyNkZWZpbmUgQkxPQ0tIQU5ETEVSX0FSR1NfREVDTCBTY3JlZW5QdHIgYXJnLCBwb2ludGVyIHBUaW1lb3V0LCBwb2ludGVyIHBSZWFkbWFzawotKyNkZWZpbmUgQkxPQ0tIQU5ETEVSX0FSR1MgYXJnLCBwVGltZW91dCwgcFJlYWRtYXNrCi0rCi0rI2RlZmluZSBDTE9TRV9TQ1JFRU5fQVJHU19ERUNMIFNjcmVlblB0ciBwU2NyZWVuCi0rI2RlZmluZSBDTE9TRV9TQ1JFRU5fQVJHUyBwU2NyZWVuCi0rCi0rI2RlZmluZSBBREpVU1RfRlJBTUVfQVJHU19ERUNMIFNjcm5JbmZvUHRyIGFyZywgaW50IHgsIGludCB5Ci0rI2RlZmluZSBTV0lUQ0hfTU9ERV9BUkdTX0RFQ0wgU2NybkluZm9QdHIgYXJnLCBEaXNwbGF5TW9kZVB0ciBtb2RlCi0rCi0rI2RlZmluZSBGUkVFX1NDUkVFTl9BUkdTX0RFQ0wgU2NybkluZm9QdHIgYXJnCi0rI2RlZmluZSBGUkVFX1NDUkVFTl9BUkdTKHgpICh4KQotKwotKyNkZWZpbmUgVlRfRlVOQ19BUkdTX0RFQ0wgU2NybkluZm9QdHIgYXJnCi0rI2RlZmluZSBWVF9GVU5DX0FSR1MoZmxhZ3MpIHBTY3JuCi0rCi0rI2RlZmluZSBYRjg2X0VOQUJMRURJU0FCTEVGQl9BUkcoeCkgKHgpCi0rCi0rI2VuZGlmCi0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL2dsYW1vLWRyaXZlci5jIGIvc3JjL2dsYW1vLWRyaXZlci5jCi1pbmRleCBiMTNjYWFlLi4xMGI3NzYyIDEwMDY0NAotLS0tIGEvc3JjL2dsYW1vLWRyaXZlci5jCi0rKysgYi9zcmMvZ2xhbW8tZHJpdmVyLmMKLUBAIC00Myw2ICs0Myw3IEBACi0gCi0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0gCi0rI2luY2x1ZGUgImNvbXBhdC1hcGkuaCIKLSAKLSBzdGF0aWMgQm9vbCBkZWJ1ZyA9IDA7Ci0gCi1AQCAtNjgsMTAgKzY5LDEwIEBAIHN0YXRpYyBCb29sCi0gR2xhbW9QcmVJbml0KFNjcm5JbmZvUHRyIHBTY3JuLCBpbnQgZmxhZ3MpOwotIAotIHN0YXRpYyBCb29sCi0tR2xhbW9TY3JlZW5Jbml0KGludCBJbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndik7Ci0rR2xhbW9TY3JlZW5Jbml0KFNDUkVFTl9JTklUX0FSR1NfREVDTCk7Ci0gCi0gc3RhdGljIEJvb2wKLS1HbGFtb0Nsb3NlU2NyZWVuKGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuKTsKLStHbGFtb0Nsb3NlU2NyZWVuKENMT1NFX1NDUkVFTl9BUkdTX0RFQ0wpOwotIAotIHN0YXRpYyBCb29sCi0gR2xhbW9DcnRjUmVzaXplKFNjcm5JbmZvUHRyIHNjcm4sIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci1AQCAtODYsMTAgKzg3LDEwIEBAIHN0YXRpYyB2b2lkCi0gR2xhbW9SZXN0b3JlSFcoU2NybkluZm9QdHIgcFNjcmVuKTsKLSAKLSBzdGF0aWMgQm9vbAotLUdsYW1vRW50ZXJWVChpbnQgc2NybkluZGV4LCBpbnQgZmxhZ3MpOwotK0dsYW1vRW50ZXJWVChWVF9GVU5DX0FSR1NfREVDTCk7Ci0gCi0gc3RhdGljIHZvaWQKLS1HbGFtb0xlYXZlVlQoaW50IHNjcm5JbmRleCwgaW50IGZsYWdzKTsKLStHbGFtb0xlYXZlVlQoVlRfRlVOQ19BUkdTX0RFQ0wpOwotIAotIHN0YXRpYyB2b2lkCi0gR2xhbW9Mb2FkQ29sb3JtYXAoU2NybkluZm9QdHIgcFNjcm4sIGludCBudW1Db2xvcnMsIGludCAqaW5kaWNlcywKLUBAIC0yNDgsOCArMjQ5LDggQEAgR2xhbW9Vbm1hcE1NSU8oU2NybkluZm9QdHIgcFNjcm4pIHsKLSB9Ci0gCi0gc3RhdGljIEJvb2wKLS1HbGFtb1N3aXRjaE1vZGUoaW50IHNjcm5JbmRleCwgRGlzcGxheU1vZGVQdHIgbW9kZSwgaW50IGZsYWdzKSB7Ci0tICAgIFNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVlbnNbc2NybkluZGV4XTsKLStHbGFtb1N3aXRjaE1vZGUoU1dJVENIX01PREVfQVJHU19ERUNMKSB7Ci0rICAgIFNDUk5fSU5GT19QVFIoYXJnKTsKLSAgICAgeGY4NkNydGNDb25maWdQdHIgY29uZmlnID0gWEY4Nl9DUlRDX0NPTkZJR19QVFIgKHBTY3JuKTsKLSAgICAgeGY4Nk91dHB1dFB0ciBvdXRwdXQgPSBjb25maWctPm91dHB1dFtjb25maWctPmNvbXBhdF9vdXRwdXRdOwotICAgICBSb3RhdGlvbiByb3RhdGlvbjsKLUBAIC0yODYsNyArMjg3LDcgQEAgR2xhbW9GYmRldlByb2JlKERyaXZlclB0ciBkcnYsIEdEZXZQdHIgKmRldlNlY3Rpb25zLCBpbnQgbnVtRGV2U2VjdGlvbnMpCi0gCi0gCWZvciAoaSA9IDA7IGkgPCBudW1EZXZTZWN0aW9uczsgaSsrKSB7Ci0gCi0tCQlkZXYgPSB4Zjg2RmluZE9wdGlvblZhbHVlKGRldlNlY3Rpb25zW2ldLT5vcHRpb25zLCAiRGV2aWNlIik7Ci0rCQlkZXYgPSAoY2hhciAqKSB4Zjg2RmluZE9wdGlvblZhbHVlKGRldlNlY3Rpb25zW2ldLT5vcHRpb25zLCAiRGV2aWNlIik7Ci0gCQlpZiAoZmJkZXZIV1Byb2JlKE5VTEwsIGRldiwgTlVMTCkpIHsKLSAJCQlpbnQgZW50aXR5OwotIAkJCXBTY3JuID0gTlVMTDsKLUBAIC00MzAsNyArNDMxLDcgQEAgR2xhbW9QcmVJbml0KFNjcm5JbmZvUHRyIHBTY3JuLCBpbnQgZmxhZ3MpCi0gCi0gICAgIHBHbGFtby0+cEVudCA9IHhmODZHZXRFbnRpdHlJbmZvKHBTY3JuLT5lbnRpdHlMaXN0WzBdKTsKLSAKLS0gICAgZmJfZGV2aWNlID0geGY4NkZpbmRPcHRpb25WYWx1ZShwR2xhbW8tPnBFbnQtPmRldmljZS0+b3B0aW9ucywgIkRldmljZSIpOwotKyAgICBmYl9kZXZpY2UgPSAoY2hhciAqKSB4Zjg2RmluZE9wdGlvblZhbHVlKHBHbGFtby0+cEVudC0+ZGV2aWNlLT5vcHRpb25zLCAiRGV2aWNlIik7Ci0gCi0gICAgIC8qIG9wZW4gZGV2aWNlICovCi0gICAgIGlmICghZmJkZXZIV0luaXQocFNjcm4sIE5VTEwsIGZiX2RldmljZSkpCi1AQCAtNTIzLDcgKzUyNCw3IEBAIEdsYW1vUHJlSW5pdChTY3JuSW5mb1B0ciBwU2NybiwgaW50IGZsYWdzKQotIAotIAotIHN0YXRpYyBCb29sCi0tR2xhbW9TY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rR2xhbW9TY3JlZW5Jbml0KFNDUkVFTl9JTklUX0FSR1NfREVDTCkKLSB7Ci0gICAgIFNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVlbnNbcFNjcmVlbi0+bXlOdW1dOwotICAgICBHbGFtb1B0ciBwR2xhbW8gPSBHbGFtb1BUUihwU2Nybik7Ci1AQCAtNTQ1LDcgKzU0Niw3IEBAIEdsYW1vU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICNlbmRpZgotIAotICAgICBpZiAoTlVMTCA9PSAocEdsYW1vLT5mYm1lbSA9IGZiZGV2SFdNYXBWaWRtZW0ocFNjcm4pKSkgewotLSAgICAgICAgeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsICJtYXBwaW5nIG9mIHZpZGVvIG1lbW9yeSBmYWlsZWRcbiIpOwotKyAgICAgICAgeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLCAibWFwcGluZyBvZiB2aWRlbyBtZW1vcnkgZmFpbGVkXG4iKTsKLSAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgfQotIAotQEAgLTU1NiwxMyArNTU3LDEzIEBAIEdsYW1vU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAvKiBtaSBsYXllciAqLwotICAgICBtaUNsZWFyVmlzdWFsVHlwZXMoKTsKLSAgICAgaWYgKCFtaVNldFZpc3VhbFR5cGVzKHBTY3JuLT5kZXB0aCwgVHJ1ZUNvbG9yTWFzaywgcFNjcm4tPnJnYkJpdHMsIFRydWVDb2xvcikpIHsKLS0gICAgICAgIHhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLAotKyAgICAgICAgeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAidmlzdWFsIHR5cGUgc2V0dXAgZmFpbGVkIGZvciAlZCBiaXRzIHBlciBwaXhlbCBbMV1cbiIsCi0gICAgICAgICAgICAgICAgICAgIHBTY3JuLT5iaXRzUGVyUGl4ZWwpOwotICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICB9Ci0gICAgIGlmICghbWlTZXRQaXhtYXBEZXB0aHMoKSkgewotLSAgICAgIHhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLCAicGl4bWFwIGRlcHRoIHNldHVwIGZhaWxlZFxuIik7Ci0rICAgICAgeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLCAicGl4bWFwIGRlcHRoIHNldHVwIGZhaWxlZFxuIik7Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotICAgICB9Ci0gCi1AQCAtNjE3LDcgKzYxOCw3IEBAIEdsYW1vU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAvKiBzb2Z0d2FyZSBjdXJzb3IgKi8KLSAgICAgbWlEQ0luaXRpYWxpemUocFNjcmVlbiwgeGY4NkdldFBvaW50ZXJTY3JlZW5GdW5jcygpKTsKLSAKLS0gICAgR2xhbW9FbnRlclZUKHNjcm5JbmRleCwgMCk7Ci0rICAgIEdsYW1vRW50ZXJWVChWVF9GVU5DX0FSR1MoMCkpOwotIAotICAgICB4Zjg2Q3J0Y1NjcmVlbkluaXQocFNjcmVlbik7Ci0gI2lmIFhPUkdfVkVSU0lPTl9DVVJSRU5UID49IFhPUkdfVkVSU0lPTl9OVU1FUklDKDEsNSwwLDAsMCkKLUBAIC02MjcsNyArNjI4LDcgQEAgR2xhbW9TY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgIC8qIGNvbG9ybWFwICovCi0gICAgIHBHbGFtby0+Y29sb3JtYXAgPSBOVUxMOwotICAgICBpZiAoIW1pQ3JlYXRlRGVmQ29sb3JtYXAocFNjcmVlbikpIHsKLS0gICAgICAgIHhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLAotKyAgICAgICAgeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3I6IG1pQ3JlYXRlRGVmQ29sb3JtYXAgZmFpbGVkICIKLSAgICAgICAgICAgICAgICAgICAgImluIEdsYW1vU2NyZWVuSW5pdCgpXG4iKTsKLSAgICAgICAgIHJldHVybiBGQUxTRTsKLUBAIC02NTIsOSArNjUzLDkgQEAgR2xhbW9TY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gfQotIAotIHN0YXRpYyBCb29sCi0tR2xhbW9DbG9zZVNjcmVlbihpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbikKLStHbGFtb0Nsb3NlU2NyZWVuKENMT1NFX1NDUkVFTl9BUkdTX0RFQ0wpCi0gewotLSAgICBTY3JuSW5mb1B0ciBwU2NybiA9IHhmODZTY3JlZW5zW3Njcm5JbmRleF07Ci0rICAgIFNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVlblRvU2NybihwU2NyZWVuKTsKLSAgICAgR2xhbW9QdHIgcEdsYW1vID0gR2xhbW9QVFIocFNjcm4pOwotIAotICAgICBpZiAocEdsYW1vLT5hY2NlbCkKLUBAIC02NzUsNyArNjc2LDcgQEAgR2xhbW9DbG9zZVNjcmVlbihpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbikKLSAKLSAgICAgcFNjcmVlbi0+Q3JlYXRlU2NyZWVuUmVzb3VyY2VzID0gcEdsYW1vLT5DcmVhdGVTY3JlZW5SZXNvdXJjZXM7Ci0gICAgIHBTY3JlZW4tPkNsb3NlU2NyZWVuID0gcEdsYW1vLT5DbG9zZVNjcmVlbjsKLS0gICAgcmV0dXJuICgqcFNjcmVlbi0+Q2xvc2VTY3JlZW4pKHNjcm5JbmRleCwgcFNjcmVlbik7Ci0rICAgIHJldHVybiAoKnBTY3JlZW4tPkNsb3NlU2NyZWVuKShDTE9TRV9TQ1JFRU5fQVJHUyk7Ci0gfQotIAotIHN0YXRpYyBCb29sCi1AQCAtODI2LDggKzgyNyw4IEBAIEdsYW1vUmVzdG9yZUhXKFNjcm5JbmZvUHRyIHBTY3JuKSB7Ci0gfQotIAotIHN0YXRpYyBCb29sCi0tR2xhbW9FbnRlclZUKGludCBzY3JuSW5kZXgsIGludCBmbGFncykgewotLSAgICBTY3JuSW5mb1B0ciBwU2NybiA9IHhmODZTY3JlZW5zW3Njcm5JbmRleF07Ci0rR2xhbW9FbnRlclZUKFZUX0ZVTkNfQVJHU19ERUNMKSB7Ci0rICAgIFNDUk5fSU5GT19QVFIoYXJnKTsKLSAgICAgR2xhbW9QdHIgcEdsYW1vID0gR2xhbW9QVFIocFNjcm4pOwotIAotICAgICBHbGFtb1NhdmVIVyhwU2Nybik7Ci1AQCAtODQyLDggKzg0Myw4IEBAIEdsYW1vRW50ZXJWVChpbnQgc2NybkluZGV4LCBpbnQgZmxhZ3MpIHsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1HbGFtb0xlYXZlVlQoaW50IHNjcm5JbmRleCwgaW50IGZsYWdzKSB7Ci0tICAgIFNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVlbnNbc2NybkluZGV4XTsKLStHbGFtb0xlYXZlVlQoVlRfRlVOQ19BUkdTX0RFQ0wpIHsKLSsgICAgU0NSTl9JTkZPX1BUUihhcmcpOwotICAgICBHbGFtb1B0ciBwR2xhbW8gPSBHbGFtb1BUUihwU2Nybik7Ci0gCi0gICAgIGlmIChwR2xhbW8tPmFjY2VsKQotLS0gCi0xLjguMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdsYW1vLzAwMDQtZ2xhbW8uaC11c2UtY29uc3QtZm9yLWpidDZrNzRfc3RhdGVfcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwNC1nbGFtby5oLXVzZS1jb25zdC1mb3ItamJ0Nms3NF9zdGF0ZV9wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODIwMzcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW8vMDAwNC1nbGFtby5oLXVzZS1jb25zdC1mb3ItamJ0Nms3NF9zdGF0ZV9wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSAxODBhMDA2MzRmMzUxYTA5Y2VhYmM1Njk1ZDhlMWFjYzNlNTg1NTAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMiBEZWMgMjAxNCAxMjowMDoxMCArMDEwMAotU3ViamVjdDogW1BBVENIXSBnbGFtby5oOiB1c2UgY29uc3QgZm9yIGpidDZrNzRfc3RhdGVfcGF0aAotCi0qIGZpeCBidWlsZCBpc3N1ZSB3aXRoIHhzZXJ2ZXIgMS4xNjoKLSAgZ2xhbW8tZHJpdmVyLmM6NTAxOjMyOiBlcnJvcjogYXNzaWdubWVudCBkaXNjYXJkcyAnY29uc3QnIHF1YWxpZmllciBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUgWy1XZXJyb3JdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9nbGFtby5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dsYW1vLmggYi9zcmMvZ2xhbW8uaAotaW5kZXggNWZkNWMwNC4uNWUwNzJiZSAxMDA2NDQKLS0tLSBhL3NyYy9nbGFtby5oCi0rKysgYi9zcmMvZ2xhbW8uaAotQEAgLTE0OCw3ICsxNDgsNyBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gI2VuZGlmCi0gCi0gI2lmZGVmIEpCVDZLNzRfU0VUX1NUQVRFCi0tICAgIGNoYXIgKmpidDZrNzRfc3RhdGVfcGF0aDsKLSsgICAgY29uc3QgY2hhciAqamJ0Nms3NF9zdGF0ZV9wYXRoOwotICAgICBjaGFyIHNhdmVkX2pidDZrNzRfc3RhdGVbMTRdOwotICNlbmRpZgotIAotLS0gCi0yLjEuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWdsYW1vX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODE4ZDBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZ2xhbW9fZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLXZpZGVvLmluYwotU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBHbGFtbyBkaXNwbGF5IGRyaXZlciB3aXRoIEtNUyBzdXBwb3J0IgotREVQRU5EUyArPSAibGliZHJtIgotUkRFUEVORFNfJHtQTn0gKz0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtZXhhIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOGNiZDk5ZmZmNzczZjkyZTg0NDk0OGY3NGVmMGRmOCIKLQotUEUgPSAiMiIKLVBWID0gIjEuMC4wK2dpdHIke1NSQ1BWfSIKLVBSID0gIiR7SU5DX1BSfS40IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5vcGVubW9rby5vcmcvZ2l0L3hmODYtdmlkZW8tZ2xhbW8uZ2l0O2JyYW5jaD1tYXN0ZXIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nbGFtby1rbXMtZHJpdmVyLWRyb3AtdW51c2VkLXhmODZfY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWJ1aWxkLXdpdGgtS01TLWRpc2FibGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZ2xhbW8tZHJpdmVyLWFkYXB0LXRvLXhzZXJ2ZXItMC4xMy12aWRlby1BUEkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nbGFtby1kcml2ZXItcmVtb3ZlLXJlZmVyZW5jZXMtdG8tbWlic3RvcmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1nbGFtby5oLXVzZS1jb25zdC1mb3ItamJ0Nms3NF9zdGF0ZV9wYXRoLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICJjYjllZDE3MDM1YTc5ZTQ5ZGRlMjZhMWU3ZTJiYzVmMTBmZDgxNDRiIgotCi1FWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1rbXMgIgotCi1QTkJMQUNLTElTVFt4Zjg2LXZpZGVvLWdsYW1vXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYyOS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW1nYS9jaGVja2ZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW1nYS9jaGVja2ZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VhZTZkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbWdhL2NoZWNrZmlsZS5wYXRjaApAQCAtMCwwICsxLDY4IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc2MDZdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIGM5MDE0YThmM2M5YjY5MWI1YWE3YjFmM2VjNjZjZjdjODRiODIxMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyOSBOb3YgMjAxMiAxMTowMDo0MyArMDAwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogZG9udCB1c2UgQUNfQ0hFQ0tfRklMRSB3aGVuIGVuYWJsaW5nIERSSQorCitBdXRvbWF0aWNhbGx5IGVuYWJsaW5nIG9yIGRpc2FibGluZyBhIGZlYXR1cmUgYmFzZWQgb24gaW5zdGFsbGVkIGZpbGVzIGlzbid0CitkZXRlcm1pbmlzdGljLCBhbmQgQUNfQ0hFQ0tfRklMRSByZXR1cm5zIGFuIGVycm9yIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgorCitGaXggdGhpcyBieSBlbmFibGluZyBEUkkgYnkgZGVmYXVsdCwgYW5kIHJlbW92aW5nIHRoZSBleHBsaWNpdCBmaWxlIGNoZWNrcyBhcworcGtnLWNvbmZpZyBpcyBnb29kIGVub3VnaC4KKworKCM1NzYwNikKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8ICAgMjUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBmY2ExYTljLi5kMmFhMmVkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01NSw5ICs1NSw5IEBAIEFDX0FSR19XSVRIKHhvcmctbW9kdWxlLWRpciwKKyAgICAgICAgICAgICBbbW9kdWxlZGlyPSIkbGliZGlyL3hvcmcvbW9kdWxlcyJdKQorIAorIEFDX0FSR19FTkFCTEUoZHJpLCBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWRyaV0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEaXNhYmxlIERSSSBzdXBwb3J0IFtbZGVmYXVsdD1hdXRvXV1dKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rpc2FibGUgRFJJIHN1cHBvcnQgW1tkZWZhdWx0PWVuYWJsZWRdXV0pLAorICAgICAgICAgICAgICAgW0RSST0iJGVuYWJsZXZhbCJdLAorLSAgICAgICAgICAgICAgW0RSST1hdXRvXSkKKysgICAgICAgICAgICAgIFtEUkk9eWVzXSkKKyBBQ19BUkdfRU5BQkxFKGV4YSwKKyAgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZXhhXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEaXNhYmxlIEVYQSBzdXBwb3J0IFtbZGVmYXVsdD1lbmFibGVkXV1dKSwKK0BAIC03NiwyNyArNzYsNiBAQCBzZGtkaXI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9c2RrZGlyIHhvcmctc2VydmVyYAorIAorICMgQ2hlY2tzIGZvciBsaWJyYXJpZXMuCisgCistaWYgdGVzdCAieCREUkkiICE9IHhubzsgdGhlbgorLSAgICAgICAgQUNfQ0hFQ0tfRklMRShbJHtzZGtkaXJ9L2RyaS5oXSwKKy0gICAgICAgICAgICAgICAgICAgICAgW2hhdmVfZHJpX2g9InllcyJdLCBbaGF2ZV9kcmlfaD0ibm8iXSkKKy0gICAgICAgIEFDX0NIRUNLX0ZJTEUoWyR7c2RrZGlyfS9zYXJlYS5oXSwKKy0gICAgICAgICAgICAgICAgICAgICAgW2hhdmVfc2FyZWFfaD0ieWVzIl0sIFtoYXZlX3NhcmVhX2g9Im5vIl0pCistICAgICAgICBBQ19DSEVDS19GSUxFKFske3Nka2Rpcn0vZHJpc3RydWN0LmhdLAorLSAgICAgICAgICAgICAgICAgICAgICBbaGF2ZV9kcmlzdHJ1Y3RfaD0ieWVzIl0sIFtoYXZlX2RyaXN0cnVjdF9oPSJubyJdKQorLWZpCistCistQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGluY2x1ZGUgRFJJIHN1cHBvcnRdKQorLWlmIHRlc3QgIngkRFJJIiA9IHhhdXRvOyB0aGVuCistICAgICAgICBpZiB0ZXN0ICJ4JGhhdmVfZHJpX2giID0geHllcyAmJiBcCistICAgICAgICAgICB0ZXN0ICJ4JGhhdmVfc2FyZWFfaCIgPSB4eWVzICYmIFwKKy0gICAgICAgICAgIHRlc3QgIngkaGF2ZV9kcmlzdHJ1Y3RfaCIgPSB4eWVzOyB0aGVuCistICAgICAgICAgICAgICAgIERSST0ieWVzIgorLSAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBEUkk9Im5vIgorLSAgICAgICAgZmkKKy1maQorLUFDX01TR19SRVNVTFQoWyREUkldKQorLQorIEFNX0NPTkRJVElPTkFMKERSSSwgdGVzdCAieCREUkkiID0geHllcykKKyBpZiB0ZXN0ICJ4JERSSSIgPSB4eWVzOyB0aGVuCisgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhEUkksIFtsaWJkcm0gPj0gMi4wIHhmODZkcmlwcm90b10pCistLSAKKzEuNy4xMC40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbWdhXzEuNi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1tZ2FfMS42LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q2ODA1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbWdhXzEuNi41LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci12aWRlby5pbmMKKworU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBNYXRyb3ggTUdBIGRpc3BsYXkgZHJpdmVyIgorCitERVNDUklQVElPTiA9ICJtZ2EgaXMgYW4gWG9yZyBkcml2ZXIgZm9yIE1hdHJveCB2aWRlbyBjYXJkcyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmMxMzk1ZDJjZDMyZGZjNWQ2YzU3ZDJkOGY4M2QzZmMiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jaGVja2ZpbGUucGF0Y2giCisKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGxpYnBjaWFjY2VzcyIKKworQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2LiotbGludXh8eDg2XzY0LiotbGludXgpJworCitTUkNfVVJJW21kNXN1bV0gPSAiM2VlMjU0OTI0N2UwMWRlM2U3YmNlNTJjMjc0ODMxMTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjY2M2NkOGU2MzY0ZjdjNGUyNjM3YjlmY2FiOTg2MWQwZTM5NzE1MThjNzNiMDBkMjEzZjY1NDVhMTI4OTQyMiIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZHJpJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbZHJpXSA9ICItLWVuYWJsZS1kcmksLS1kaXNhYmxlLWRyaSxkcm0geGY4NmRyaXByb3RvLHhzZXJ2ZXIteG9yZy1leHRlbnNpb24tZHJpIgorCitSREVQRU5EU18ke1BOfSA9ICJ4c2VydmVyLXhvcmctbW9kdWxlLWV4YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbm91dmVhdV8xLjAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW5vdXZlYXVfMS4wLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDQxODlhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbm91dmVhdV8xLjAuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItdmlkZW8uaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ2NDFkZWRkYWE4MGZlN2NhODhlOTQ0ZTFmZDk0YTk0IgotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIG5vdXZlYXUgdmlkZW8gZHJpdmVyIgotCi1ERVNDUklQVElPTiA9ICJPcGVuLXNvdXJjZSBYLm9yZyBncmFwaGljcyBkcml2ZXIgZm9yIE5WSURJQSBncmFwaGljcyIKLQotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgbGlieHZtYyBkcm0geGY4NmRyaXByb3RvIGdscHJvdG8gXAotICAgICAgICAgICAgdmlydHVhbC9saWJnbCB4aW5lcmFtYXByb3RvIGxpYnBjaWFjY2VzcyIKLVJERVBFTkRTXyR7UE59ICs9ICJ4c2VydmVyLXhvcmctbW9kdWxlLWV4YSIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NCkuKi1saW51eCcKLQotU1JDX1VSSVttZDVzdW1dID0gImRjNzk5MTBjN2I5ZTMyMzIxY2VmYzdhZjI1MGM3NzY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlYTA1N2FkN2ZjMzFjYWJhMmQ0ZTQ2YzdlNDE4ZmUyYjNjNzYyYjA0ZmI4ZDM4MmY1MzM4MzM5N2ZkODM5MWUiCi0KLQotUE5CTEFDS0xJU1RbeGY4Ni12aWRlby1ub3V2ZWF1XSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDY1Ny8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW5vdXZlYXVfMS4wLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1ub3V2ZWF1XzEuMC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzQ2ODIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1ub3V2ZWF1XzEuMC4xNS5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItdmlkZW8uaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ2NDFkZWRkYWE4MGZlN2NhODhlOTQ0ZTFmZDk0YTk0IgorCitTVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIG5vdXZlYXUgdmlkZW8gZHJpdmVyIgorCitERVNDUklQVElPTiA9ICJPcGVuLXNvdXJjZSBYLm9yZyBncmFwaGljcyBkcml2ZXIgZm9yIE5WSURJQSBncmFwaGljcyIKKworREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgbGlieHZtYyBkcm0geGY4NmRyaXByb3RvIGdscHJvdG8gXAorICAgICAgICAgICAgdmlydHVhbC9saWJnbCB4aW5lcmFtYXByb3RvIGxpYnBjaWFjY2VzcyIKK1JERVBFTkRTXyR7UE59ICs9ICJ4c2VydmVyLXhvcmctbW9kdWxlLWV4YSIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAib3BlbmdsIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0KS4qLWxpbnV4JworCitTUkNfVVJJW21kNXN1bV0gPSAiNzE3MjAzY2I4NzAyOWNkZGNiY2NmNzM5OGY5YWQ4YzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWVkZTEwZmQzOTU2MTBhMzI4Njk3YWRjYTM0MzRmYjE0ZTlhZmJkNzk5MTFkNmM4NTQ1Y2ZhMmMwZTU0MWQ0YyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L3hvcmctZm9udHMtMTAwZHBpLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1mb250L3hvcmctZm9udHMtMTAwZHBpLmJiCmluZGV4IGZjZjY4MjYuLjQ1ZTNmN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZm9udC94b3JnLWZvbnRzLTEwMGRwaS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWZvbnQveG9yZy1mb250cy0xMDBkcGkuYmIKQEAgLTEyLDEzICsxMiwzIEBACiAgICAgZm9udC1iaC1sdWNpZGF0eXBld3JpdGVyLTEwMGRwaSBcCiAgICAgZm9udC1iaXRzdHJlYW0tMTAwZHBpIFwKICIKLQotUE5CTEFDS0xJU1RbeG9yZy1mb250cy0xMDBkcGldID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZm9udC1hZG9iZS0xMDBkcGkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBOQkxBQ0tMSVNUW3hvcmctZm9udHMtMTAwZHBpXSA/PSAiUnVudGltZSBkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIHhvcmctZm9udHMtMTAwZHBpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFt4b3JnLWZvbnRzLTEwMGRwaV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBmb250LWJoLTEwMGRwaSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotUE5CTEFDS0xJU1RbeG9yZy1mb250cy0xMDBkcGldID89ICJSdW50aW1lIGRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgZm9udC1hZG9iZS11dG9waWEtMTAwZHBpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1QTkJMQUNLTElTVFt4b3JnLWZvbnRzLTEwMGRwaV0gPz0gIlJ1bnRpbWUgZGVwZW5kcyBvbiBibGFja2xpc3RlZCBmb250LWJoLWx1Y2lkYXR5cGV3cml0ZXItMTAwZHBpIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2FnZW50LXByb3h5L2FnZW50LXByb3h5X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9hZ2VudC1wcm94eS9hZ2VudC1wcm94eV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUzNzBmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9hZ2VudC1wcm94eS9hZ2VudC1wcm94eV9naXQuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJQcm94eSBmb3IgVURQL1RDUCBkZWJ1ZyBjb25uZWN0aW9ucyIKK0RFU0NSSVBUSU9OID0gIlRoZSBhZ2VudC1wcm94eSB3aWxsIGZvcndhcmQgdGNwIG9yIHVkcCBjb25uZWN0aW9ucyBhcyB3ZWxsIGFzIGFsbG93IGZvciBzY3JpcHQgbXVsdGlwbGV4aW5nIG9mIHRlcm1pbmFsIHNlc3Npb25zLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9rZ2RiLndpa2kua2VybmVsLm9yZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCisKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0VYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nIgorCitTUkNSRVYgPSAiZTZjOWQzZDk5NmJkNTVlN2FiMTRkYmQ3NGRlYjc4NDFlMGMzYTRmMSIKK1BWID0gIjEuOTYrZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9rZXJuZWwva2dkYi9hZ2VudC1wcm94eS5naXQ7cHJvdG9jb2w9Z2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtQWRkLUxERkxBR1MtdmFyaWFibGUucGF0Y2ggXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBhZ2VudC1wcm94eSAke0R9JHtiaW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvYWdlbnQtcHJveHkvZmlsZXMvMDAwMS1NYWtlZmlsZS1BZGQtTERGTEFHUy12YXJpYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9hZ2VudC1wcm94eS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZWM5MWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvYWdlbnQtcHJveHkvZmlsZXMvMDAwMS1NYWtlZmlsZS1BZGQtTERGTEFHUy12YXJpYWJsZS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDFiZWIwZGFkNmY4Yjk5ZWIzYmYxYjk5ODJlMGI0OWU4MWZmNzdiYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyMyBOb3YgMjAxNiAxOToxNzozMSArMDgwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogQWRkIExERkxBR1MgdmFyaWFibGUKKworQWRkIExERkxBR1MgdmFyaWFibGUgdG8gbWFrZSBzdXJlIHRoZSBleHRyYSBsaW5rZGVyCitmbGFncyBjYW4gYmUgcGFzc2VkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggZTIwOTE4Zi4uMjVkOTJkMyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTUxLDcgKzUxLDcgQEAgJChDUk9TU19DT01QSUxFKWFnZW50LXByb3h5OiAkKE9CSlMpCisgCSQoQ0MpIC1EQUdFTlRfVkVSPSQoQUdFTlRWRVIpICQoTElOS0ZMQUdTKSAkKENGTEFHUykgLW8gJChleHRwYXRoKSRAICQoT0JKUykgd3NvY2szMi5saWIKKyBlbHNlCisgJChDUk9TU19DT01QSUxFKWFnZW50LXByb3h5OiAkKE9CSlMpCistCSQoQ0MpIC1EQUdFTlRfVkVSPSQoQUdFTlRWRVIpICQoQ0ZMQUdTKSAtbyAkKGV4dHBhdGgpJEAgJChPQkpTKSAkKExETElCUykKKysJJChDQykgLURBR0VOVF9WRVI9JChBR0VOVFZFUikgJChDRkxBR1MpICQoTERGTEFHUykgLW8gJChleHRwYXRoKSRAICQoT0JKUykgJChMRExJQlMpCisgZW5kaWYKKyAKKyAKK0BAIC02MSw5ICs2MSw5IEBAIGNsZWFuOgorIAlybSAtZiAkKGV4dHBhdGgpJChDUk9TU19DT01QSUxFKWFnZW50LXByb3h5ICQoZXh0cGF0aClhZ2VudC1wcm94eSAkKGV4dHBhdGgpKi5vICQoZXh0cGF0aCkqLm9iaiAkKGV4dHBhdGgpKi5leHAgJChleHRwYXRoKSouZXhlICQoZXh0cGF0aCkqLmlsayAkKGV4dHBhdGgpKi5wZGIgKn4KKyAKKyAkKGV4dHBhdGgpJChDUk9TU19DT01QSUxFKSUubzo6JS5jCistCSQoQ0MpIC1EQUdFTlRfVkVSPSQoQUdFTlRWRVIpICQoQ0ZMQUdTKSAtYyAkPCAtbyAkQAorKwkkKENDKSAtREFHRU5UX1ZFUj0kKEFHRU5UVkVSKSAkKENGTEFHUykgJChMREZMQUdTKSAtYyAkPCAtbyAkQAorIAorICQoZXh0cGF0aCklLm9iajolLmMKKy0JJChDQykgLURBR0VOVF9WRVI9JChBR0VOVFZFUikgJChDRkxBR1MpIC1jIC1GbyRAICQoVExTUEFUSF9JTkMpICQ8CisrCSQoQ0MpIC1EQUdFTlRfVkVSPSQoQUdFTlRWRVIpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1jIC1GbyRAICQoVExTUEFUSF9JTkMpICQ8CisgCisgCistLSAKKzIuOC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcHVwb3dlci9jcHVwb3dlci5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcHVwb3dlci9jcHVwb3dlci5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTYzYzhlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NwdXBvd2VyL2NwdXBvd2VyLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiU2hvd3MgYW5kIHNldHMgcHJvY2Vzc29yIHBvd2VyIHJlbGF0ZWQgdmFsdWVzIgorREVTQ1JJUFRJT04gPSAiY3B1cG93ZXIgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIHRvIGV4YW1pbmUgYW5kIHR1bmUgcG93ZXIgXAorc2F2aW5nIHJlbGF0ZWQgZmVhdHVyZXMgb2YgeW91ciBwcm9jZXNzb3IuIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3ODEwZmFiNzQ4N2ZiMGFhZDMyN2I3NmYxYmU3Y2Q3IgorREVQRU5EUyA9ICJwY2l1dGlscyIKK1BST1ZJREVTID0gInZpcnR1YWwvY3B1cG93ZXIiCisKK2luaGVyaXQga2VybmVsc3JjIGtlcm5lbC1hcmNoCisKK2RvX3BvcHVsYXRlX2xpY1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcGF0Y2giCisKK0VYVFJBX09FTUFLRSA9ICItQyAke1N9L3Rvb2xzL3Bvd2VyL2NwdXBvd2VyIE89JHtCfSBDUk9TUz0ke1RBUkdFVF9QUkVGSVh9IENDPSIke0NDfSIgTEQ9IiR7TER9IiBBUj0ke0FSfSBBUkNIPSR7QVJDSH0iCisKK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKKyAgICAjIERvIG5vdCBzaGlwIGhlYWRlcnMKKyAgICBybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCitweXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgeworICAgIGQuc2V0VmFyKCdQS0dWJywgZC5nZXRWYXIoIktFUk5FTF9WRVJTSU9OIiwgVHJ1ZSkuc3BsaXQoIi0iKVswXSkKK30KKworQiA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaC8wMDAxLUZpeC1mb3ItYS1jb21waWxhdGlvbi1lcnJvci1pZi1nbGliYy0yLjI1LW9yLWxhdGVyLWgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2gvMDAwMS1GaXgtZm9yLWEtY29tcGlsYXRpb24tZXJyb3ItaWYtZ2xpYmMtMi4yNS1vci1sYXRlci1oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDM0ODE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaC8wMDAxLUZpeC1mb3ItYS1jb21waWxhdGlvbi1lcnJvci1pZi1nbGliYy0yLjI1LW9yLWxhdGVyLWgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotRnJvbSBiOGM4ZmJlMGEyNDgxZTk3ZmM1N2RkNTk2MzQ2ODI3YTY5MmE1NzY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGF2ZSBBbmRlcnNvbiA8YW5kZXJzb25AcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjggTWFyIDIwMTcgMTU6NDQ6NDAgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIEZpeCBmb3IgYSBjb21waWxhdGlvbiBlcnJvciBpZiBnbGliYy0yLjI1IG9yIGxhdGVyIGhhcwotIGJlZW4gaW5zdGFsbGVkIG9uIHRoZSBob3N0IGJ1aWxkIG1hY2hpbmUuICBXaXRob3V0IHRoZSBwYXRjaCwgdGhlIGJ1aWxkIGZhaWxzCi0gd2l0aCB0aGUgZXJyb3IgbWVzc2FnZSAiYW1kNjQtbGludXgtbmF0LmM6NDk2OjE6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IKLSAncHNfZ2V0X3RocmVhZF9hcmVhJyIuIChhbmRlcnNvbkByZWRoYXQuY29tKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysKLSBjb25maWd1cmUuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBnZGItNy42LXByb2Nfc2VydmljZS5oLnBhdGNoIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiLTcuNi1wcm9jX3NlcnZpY2UuaC5wYXRjaAotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMjAyZWY4Yi4uYjZiN2U4MCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTI2NCw2ICsyNjQsMTIgQEAgZ2RiX3BhdGNoOgotIAlpZiBbICIke0FSQ0h9IiA9ICJ4ODZfNjQiIF0gJiYgWyAiJHtUQVJHRVR9IiA9ICJQUEM2NCIgXSAmJiBbIC1mICR7R0RCfS1wcGM2NGxlLXN1cHBvcnQucGF0Y2ggXTsgdGhlbiBcCi0gCQlwYXRjaCAtZCAke0dEQn0gLXAxIC1GMCA8ICR7R0RCfS1wcGM2NGxlLXN1cHBvcnQucGF0Y2ggOyBcCi0gCWZpCi0rCWlmIFsgLWYgL3Vzci9pbmNsdWRlL3Byb2Nfc2VydmljZS5oIF07IHRoZW4gXAotKwkJZ3JlcCAnZXh0ZXJuIHBzX2Vycl9lIHBzX2dldF90aHJlYWRfYXJlYSAoc3RydWN0JyAvdXNyL2luY2x1ZGUvcHJvY19zZXJ2aWNlLmg7IFwKLSsJCWlmIFsgJCQ/IC1lcSAwIF07IHRoZW4gXAotKwkJCXBhdGNoIC1wMCA8ICR7R0RCfS1wcm9jX3NlcnZpY2UuaC5wYXRjaDsgXAotKwkJZmk7IFwKLSsJZmkKLSAKLSBsaWJyYXJ5OiBtYWtlX2J1aWxkX2RhdGEgJHtPQkpFQ1RfRklMRVN9Ci0gCWFyIC1ycyAke1BST0dSQU19bGliLmEgJHtPQkpFQ1RfRklMRVN9Ci1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmMgYi9jb25maWd1cmUuYwotaW5kZXggZDYzY2RkNy4uNzc2ZGVmZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5jCi0rKysgYi9jb25maWd1cmUuYwotQEAgLTI0MCw3ICsyNDAsNyBAQCBzdHJ1Y3Qgc3VwcG9ydGVkX2dkYl92ZXJzaW9uIHsKLSAJICAgICI3LjYiLAotIAkgICAgIkdEQl9GSUxFUz0ke0dEQl83LjZfRklMRVN9IiwKLSAJICAgICJHREJfT0ZJTEVTPSR7R0RCXzcuNl9PRklMRVN9IiwKLS0JICAgICJHREJfUEFUQ0hfRklMRVM9Z2RiLTcuNi5wYXRjaCBnZGItNy42LXBwYzY0bGUtc3VwcG9ydC5wYXRjaCIsCi0rCSAgICAiR0RCX1BBVENIX0ZJTEVTPWdkYi03LjYucGF0Y2ggZ2RiLTcuNi1wcGM2NGxlLXN1cHBvcnQucGF0Y2ggZ2RiLTcuNi1wcm9jX3NlcnZpY2UuaC5wYXRjaCIsCi0gCSAgICAiR0RCX0ZMQUdTPS1ER0RCXzdfNiIsCi0gCSAgICAiR1BMdjMiCi0gCX0sCi1kaWZmIC0tZ2l0IGEvZ2RiLTcuNi1wcm9jX3NlcnZpY2UuaC5wYXRjaCBiL2dkYi03LjYtcHJvY19zZXJ2aWNlLmgucGF0Y2gKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi40OWQxOGJiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGItNy42LXByb2Nfc2VydmljZS5oLnBhdGNoCi1AQCAtMCwwICsxLDU1IEBACi0rLS0tIGdkYi03LjYvZ2RiL2dkYl9wcm9jX3NlcnZpY2UuaC5vcmlnCi0rKysrIGdkYi03LjYvZ2RiL2dkYl9wcm9jX3NlcnZpY2UuaAotK0BAIC0xMTUsNyArMTE1LDcgQEAgZXh0ZXJuIHBpZF90IHBzX2dldHBpZCAoc3RydWN0IHBzX3Byb2NoYQotKyAvKiBGZXRjaCB0aGUgc3BlY2lhbCBwZXItdGhyZWFkIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBMV1AuCi0rICAgIFRoaXMgY2FsbCBpcyBvbmx5IHVzZWQgb24gYSBmZXcgcGxhdGZvcm1zIChtb3N0IHVzZSBhIG5vcm1hbCByZWdpc3RlcikuCi0rICAgIFRoZSBtZWFuaW5nIG9mIHRoZSBgaW50JyBwYXJhbWV0ZXIgaXMgbWFjaGluZS1kZXBlbmRlbnQuICAqLwotKy1leHRlcm4gcHNfZXJyX2UgcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqLAotKytleHRlcm4gcHNfZXJyX2UgcHNfZ2V0X3RocmVhZF9hcmVhIChzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqLAotKyAJCQkJICAgIGx3cGlkX3QsIGludCwgcHNhZGRyX3QgKik7Ci0rIAotKyAKLSstLS0gZ2RiLTcuNi9nZGIvYW1kNjQtbGludXgtbmF0LmMub3JpZwotKysrKyBnZGItNy42L2dkYi9hbWQ2NC1saW51eC1uYXQuYwotK0BAIC00OTMsNyArNDkzLDcgQEAgYW1kNjRfbGludXhfbmV3X2ZvcmsgKHN0cnVjdCBsd3BfaW5mbyAqcAotKyAgICBhIHJlcXVlc3QgZm9yIGEgdGhyZWFkJ3MgbG9jYWwgc3RvcmFnZSBhZGRyZXNzLiAgKi8KLSsgCi0rIHBzX2Vycl9lCi0rLXBzX2dldF90aHJlYWRfYXJlYSAoY29uc3Qgc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLAotKytwc19nZXRfdGhyZWFkX2FyZWEgKHN0cnVjdCBwc19wcm9jaGFuZGxlICpwaCwKLSsgICAgICAgICAgICAgICAgICAgICBsd3BpZF90IGx3cGlkLCBpbnQgaWR4LCB2b2lkICoqYmFzZSkKLSsgewotKyAgIGlmIChnZGJhcmNoX2JmZF9hcmNoX2luZm8gKHRhcmdldF9nZGJhcmNoICgpKS0+Yml0c19wZXJfd29yZCA9PSAzMikKLSstLS0gZ2RiLTcuNi9nZGIvYWFyY2g2NC1saW51eC1uYXQuYy5vcmlnCi0rKysrIGdkYi03LjYvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKLStAQCAtNzUwLDcgKzc1MCw3IEBAIGFhcmNoNjRfbGludXhfbmV3X2ZvcmsgKHN0cnVjdCBsd3BfaW5mbwotKyAgICBzdG9yYWdlIChvciBpdHMgZGVzY3JpcHRvcikuICAqLwotKyAKLSsgcHNfZXJyX2UKLSstcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rK3BzX2dldF90aHJlYWRfYXJlYSAoc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLAotKyAJCSAgICBsd3BpZF90IGx3cGlkLCBpbnQgaWR4LCB2b2lkICoqYmFzZSkKLSsgewotKyAgIHN0cnVjdCBpb3ZlYyBpb3ZlYzsKLSstLS0gZ2RiLTcuNi9nZGIvYXJtLWxpbnV4LW5hdC5jLm9yaWcKLSsrKysgZ2RiLTcuNi9nZGIvYXJtLWxpbnV4LW5hdC5jCi0rQEAgLTYxMyw3ICs2MTMsNyBAQCBzdXBwbHlfZnByZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjCi0rIC8qIEZldGNoIHRoZSB0aHJlYWQtbG9jYWwgc3RvcmFnZSBwb2ludGVyIGZvciBsaWJ0aHJlYWRfZGIuICAqLwotKyAKLSsgcHNfZXJyX2UKLSstcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rK3BzX2dldF90aHJlYWRfYXJlYSAoc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLAotKyAgICAgICAgICAgICAgICAgICAgIGx3cGlkX3QgbHdwaWQsIGludCBpZHgsIHZvaWQgKipiYXNlKQotKyB7Ci0rICAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVF9USFJFQURfQVJFQSwgbHdwaWQsIE5VTEwsIGJhc2UpICE9IDApCi0rLS0tIGdkYi03LjYvZ2RiL2kzODYtbGludXgtbmF0LmMub3JpZwotKysrKyBnZGItNy42L2dkYi9pMzg2LWxpbnV4LW5hdC5jCi0rQEAgLTg0OSw3ICs4NDksNyBAQCBpMzg2X2xpbnV4X25ld19mb3JrIChzdHJ1Y3QgbHdwX2luZm8gKnBhCi0rICAgIHN0b3JhZ2UgKG9yIGl0cyBkZXNjcmlwdG9yKS4gICovCi0rIAotKyBwc19lcnJfZQotKy1wc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxlICpwaCwgCi0rK3BzX2dldF90aHJlYWRfYXJlYSAoc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLCAKLSsgCQkgICAgbHdwaWRfdCBsd3BpZCwgaW50IGlkeCwgdm9pZCAqKmJhc2UpCi0rIHsKLSsgICAvKiBOT1RFOiBjYWduZXkvMjAwMy0wOC0yNjogVGhlIGRlZmluaXRpb24gb2YgdGhpcyBidWZmZXIgaXMgZm91bmQKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzMxZjVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1TVU1NQVJZID0gIktlcm5lbCBhbmFseXNpcyB1dGlsaXR5IGZvciBsaXZlIHN5c3RlbXMsIG5ldGR1bXAsIGRpc2tkdW1wLCBrZHVtcCwgTEtDRCBvciBtY29yZSBkdW1wZmlsZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgY29yZSBhbmFseXNpcyBzdWl0ZSBpcyBhIHNlbGYtY29udGFpbmVkIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0b1wKLWludmVzdGlnYXRlIGVpdGhlciBsaXZlIHN5c3RlbXMsIGtlcm5lbCBjb3JlIGR1bXBzIGNyZWF0ZWQgZnJvbSB0aGVcCi1uZXRkdW1wLCBkaXNrZHVtcCBhbmQga2R1bXAgcGFja2FnZXMgZnJvbSBSZWQgSGF0IExpbnV4LCB0aGUgbWNvcmUga2VybmVsIHBhdGNoXAotb2ZmZXJlZCBieSBNaXNzaW9uIENyaXRpY2FsIExpbnV4LCBvciB0aGUgTEtDRCBrZXJuZWwgcGF0Y2guIgotCi1IT01FUEFHRSA9ICJodHRwOi8vcGVvcGxlLnJlZGhhdC5jb20vYW5kZXJzb24iCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gInpsaWIgcmVhZGxpbmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvJHtCUE59L2FyY2hpdmUvJHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLTcuNi50YXIuZ3o7bmFtZT1nZGI7c3ViZGlyPSR7QlB9IFwKLSAgICAgICAgICAgZmlsZTovLzcwMDFmb3JjZV9kZWZpbmVfYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzcwMDNjcm9zc19yYW5saWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jcm9zc19hZGRfY29uZmlndXJlX29wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaW0tcHBjLWRyb3AtTElCUy1mcm9tLXBzaW0tZGVwZW5kZW5jeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaW0tY29tbW9uLXNpbS1hcmFuZ2UtZml4LWV4dGVybi1pbmxpbmUtaGFuZGxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9ubm90LWV4dHJhY3QtZ2RiLWR1cmluZy1kby1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dkYl9idWlsZF9qb2JzX2FuZF9ub3Rfd3JpdGVfY3Jhc2hfdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS11bnJlY29nbml6ZWQtZ2NjLW9wdGlvbi1tMzItZm9yLW1pcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZm9yLWEtY29tcGlsYXRpb24tZXJyb3ItaWYtZ2xpYmMtMi4yNS1vci1sYXRlci1oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY3Jhc2gtZml4LWJ1aWxkLWVycm9yLXVua25vd24tdHlwZS1uYW1lLWdkYl9mcHJlZ3NldC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWNyYXNoLWRldGVjdC10aGUtc3lzcm9vdC1zLWdsaWJjLWhlYWRlci1maWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzE3ODcwNzRmMjY3YTM1MzZlZWJmZjAwOGEwNjUyZWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTk2NWRlZTkxOTlkN2UzOTc2NGZiZWU3ZjIxYzdjNDViMWY3YjZkMTdjOGU5MmFkNjJmNDY4ZjA2Mjg3NjQ3OCIKLQotU1JDX1VSSVtnZGIubWQ1c3VtXSA9ICJhOTgzNjcwNzMzN2U1ZjdiZjc2YTAwOWE4OTA0ZjQ3MCIKLVNSQ19VUklbZ2RiLnNoYTI1NnN1bV0gPSAiODA3MDM4OWE1ZGNjMTA0ZWIwYmU0ODNkNTgyNzI5Zjk4ZWQ0ZDc2MWFkMTljZWRkM2YxN2I1ZDI1MDJmYWEzNiIKLQotaW5oZXJpdCBnZXR0ZXh0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIGNyb3NzIgotVEFSR0VUX0NDX0FSQ0hfYXBwZW5kID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCi0KLSMgY3Jhc2ggNy4xLjMgYW5kIGJlZm9yZSBkb24ndCBzdXBwb3J0IG1pcHM2NAotQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFtaXBzNjQpLioiCi0KLUVYVFJBX09FTUFLRSA9ICdSUE1QS0c9IiR7UFZ9IiBcCi0gICAgICAgICAgICAgICAgR0RCX1RBUkdFVD0iJHtUQVJHRVRfU1lTfSIgXAotICAgICAgICAgICAgICAgIEdEQl9IT1NUPSIke0JVSUxEX1NZU30iIFwKLSAgICAgICAgICAgICAgICBHREJfTUFLRV9KT0JTPSIke1BBUkFMTEVMX01BS0V9IiBcCi0gICAgICAgICAgICAgICAgTERGTEFHUz0iJHtMREZMQUdTfSIgXAotICAgICAgICAgICAgICAgICcKLQotRVhUUkFfT0VNQUtFX2NsYXNzLWNyb3NzID0gJ1JQTVBLRz0iJHtQVn0iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke0JVSUxEX1NZU30gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwke0dEQl9DT05GX0ZMQUdTfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9IT1NUPSIke0JVSUxEX1NZU30iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfTUFLRV9KT0JTPSIke1BBUkFMTEVMX01BS0V9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJwotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfSciCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLWNyb3NzID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKLQotUkVNT1ZFX00zMiA9ICJzZWQgLWkgLWUgJ3MvI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjQuKi8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NFx0XCJUQVJHRVRfQ0ZMQUdTPS1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjRcIi9nJyAke1N9L2NvbmZpZ3VyZS5jIgotCi1SRU1PVkVfTTMyX2NsYXNzLWNyb3NzID0gIiIKLQotZG9fY29uZmlndXJlKCkgewotICAgIDoKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KLSAgICAgICAgYWFyY2g2NCopICAgIEFSQ0g9QVJNNjQgOzsKLSAgICAgICAgYXJtKikgICAgICAgIEFSQ0g9QVJNIDs7Ci0gICAgICAgIGkqODYqKSAgICAgICBBUkNIPVg4NiA7OwotICAgICAgICB4ODZfNjQqKSAgICAgQVJDSD1YODZfNjQgOzsKLSAgICAgICAgcG93ZXJwYzY0KikgIEFSQ0g9UFBDNjQgOzsKLSAgICAgICAgcG93ZXJwYyopICAgIEFSQ0g9UFBDIDs7Ci0gICAgICAgIG1pcHMqKSAgICAgICBBUkNIPU1JUFMgOzsKLSAgICBlc2FjCi0KLSAgICBzZWQgLWkgcy9GT1JDRV9ERUZJTkVfQVJDSC8iJHtBUkNIfSIvZyAke1N9L2NvbmZpZ3VyZS5jCi0gICAgJHtSRU1PVkVfTTMyfQotICAgIHNlZCAtaSAncy8mZ3Q7Lz4vZycgJHtTfS9NYWtlZmlsZQotfQotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgJHtFWFRSQV9PRU1BS0V9IFJFQ0lQRV9TWVNST09UPSR7UkVDSVBFX1NZU1JPT1R9Ci19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9jcmFzaAotCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3Jhc2guOCAke0R9LyR7bWFuZGlyfS9tYW44LwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RlZnMuaCAke0R9JHtpbmNsdWRlZGlyfS9jcmFzaAotfQotCi1kb19pbnN0YWxsX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0ke1NUQUdJTkdfRElSX05BVElWRX0gaW5zdGFsbAotfQotCi1kb19pbnN0YWxsX2NsYXNzLWNyb3NzICgpIHsKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9jcmFzaCAke0R9LyR7YmluZGlyfQotfQotCi1SREVQRU5EU18ke1BOfSArPSAibGlibHptYSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1jcm9zcyA9ICIiCi0KLSMgQ2F1c2VzIGdjYyB0byBnZXQgc3R1Y2sgYW5kIGVhdCBhbGwgYXZhaWxhYmxlIG1lbW9yeSBpbiBxZW11YXJtIGJ1aWxkcwotIyBqZW5raW5zICAxNTE2MSAgMTAwIDEyLjUgMTAzODk1OTYgMTAzMjEyODQgPyAgIFIgICAgMTE6NDAgIDI4OjE3IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliZXhlYy9hcm0tb2UtbGludXgtZ251ZWFiaS9nY2MvYXJtLW9lLWxpbnV4LWdudWVhYmkvNC45LjIvY2MxIC1xdWlldCAtSSAuIC1JIC4gLUkgLi9jb21tb24gLUkgLi9jb25maWcgLUkgLi8uLi9pbmNsdWRlL29wY29kZSAtSSAuLy4uL29wY29kZXMvLi4gLUkgLi8uLi9yZWFkbGluZS8uLiAtSSAuLi9iZmQgLUkgLi8uLi9iZmQgLUkgLi8uLi9pbmNsdWRlIC1JIC4uL2xpYmRlY251bWJlciAtSSAuLy4uL2xpYmRlY251bWJlciAtSSAuL2dudWxpYi9pbXBvcnQgLUkgYnVpbGQtZ251bGliL2ltcG9ydCAtaXN5c3Jvb3QgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdWFybSAtTU1EIGV2YWwuZCAtTUYgLmRlcHMvZXZhbC5UcG8gLU1QIC1NVCBldmFsLm8gLUQgTE9DQUxFRElSPSIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIgLUQgQ1JBU0hfTUVSR0UgLUQgSEFWRV9DT05GSUdfSCAtRCBUVUk9MSBldmFsLmMgLXF1aWV0IC1kdW1wYmFzZSBldmFsLmMgLW1hcmNoPWFybXY1dGUgLW10aHVtYiAtbXRodW1iLWludGVyd29yayAtbXRscy1kaWFsZWN0PWdudSAtYXV4YmFzZS1zdHJpcCBldmFsLm8gLWcgLU8yIC1XYWxsIC1XcG9pbnRlci1hcml0aCAtV2Zvcm1hdC1ub25saXRlcmFsIC1Xbm8tcG9pbnRlci1zaWduIC1Xbm8tdW51c2VkIC1XdW51c2VkLXZhbHVlIC1XdW51c2VkLWZ1bmN0aW9uIC1Xbm8tc3dpdGNoIC1Xbm8tY2hhci1zdWJzY3JpcHRzIC1XbWlzc2luZy1wcm90b3R5cGVzIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IC1XZW1wdHktYm9keSAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLW8gLQotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwOTM3ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjEuOS5iYgpAQCAtMCwwICsxLDExNiBAQAorU1VNTUFSWSA9ICJLZXJuZWwgYW5hbHlzaXMgdXRpbGl0eSBmb3IgbGl2ZSBzeXN0ZW1zLCBuZXRkdW1wLCBkaXNrZHVtcCwga2R1bXAsIExLQ0Qgb3IgbWNvcmUgZHVtcGZpbGVzIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgYW5hbHlzaXMgc3VpdGUgaXMgYSBzZWxmLWNvbnRhaW5lZCB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG9cCitpbnZlc3RpZ2F0ZSBlaXRoZXIgbGl2ZSBzeXN0ZW1zLCBrZXJuZWwgY29yZSBkdW1wcyBjcmVhdGVkIGZyb20gdGhlXAorbmV0ZHVtcCwgZGlza2R1bXAgYW5kIGtkdW1wIHBhY2thZ2VzIGZyb20gUmVkIEhhdCBMaW51eCwgdGhlIG1jb3JlIGtlcm5lbCBwYXRjaFwKK29mZmVyZWQgYnkgTWlzc2lvbiBDcml0aWNhbCBMaW51eCwgb3IgdGhlIExLQ0Qga2VybmVsIHBhdGNoLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL2FuZGVyc29uIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJ6bGliIHJlYWRsaW5lIGNvcmV1dGlscy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvJHtCUE59L2FyY2hpdmUvJHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLTcuNi50YXIuZ3o7bmFtZT1nZGI7c3ViZGlyPSR7QlB9IFwKKyAgICAgICAgICAgZmlsZTovLzcwMDFmb3JjZV9kZWZpbmVfYXJjaGl0ZWN0dXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzcwMDNjcm9zc19yYW5saWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jcm9zc19hZGRfY29uZmlndXJlX29wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zaW0tcHBjLWRyb3AtTElCUy1mcm9tLXBzaW0tZGVwZW5kZW5jeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zaW0tY29tbW9uLXNpbS1hcmFuZ2UtZml4LWV4dGVybi1pbmxpbmUtaGFuZGxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9ubm90LWV4dHJhY3QtZ2RiLWR1cmluZy1kby1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dkYl9idWlsZF9qb2JzX2FuZF9ub3Rfd3JpdGVfY3Jhc2hfdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS11bnJlY29nbml6ZWQtZ2NjLW9wdGlvbi1tMzItZm9yLW1pcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jcmFzaC1maXgtYnVpbGQtZXJyb3ItdW5rbm93bi10eXBlLW5hbWUtZ2RiX2ZwcmVnc2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY3Jhc2gtZGV0ZWN0LXRoZS1zeXNyb290LXMtZ2xpYmMtaGVhZGVyLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjNiNDRhMTUxZGJlNzA0NjQ2MmI5Y2FhYTk4NDdjYTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzQ4ZTEyNjk0NDNhNmE4ZTgzMzdlMzI4YjIxYjAzZTRlNTAyNDhmNjA3ZWVkODNmYmIyN2ViMGQ4MzNkNmFhNCIKKworU1JDX1VSSVtnZGIubWQ1c3VtXSA9ICJhOTgzNjcwNzMzN2U1ZjdiZjc2YTAwOWE4OTA0ZjQ3MCIKK1NSQ19VUklbZ2RiLnNoYTI1NnN1bV0gPSAiODA3MDM4OWE1ZGNjMTA0ZWIwYmU0ODNkNTgyNzI5Zjk4ZWQ0ZDc2MWFkMTljZWRkM2YxN2I1ZDI1MDJmYWEzNiIKKworaW5oZXJpdCBnZXR0ZXh0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIGNyb3NzIgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCisKKyMgY3Jhc2ggNy4xLjMgYW5kIGJlZm9yZSBkb24ndCBzdXBwb3J0IG1pcHM2NAorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFtaXBzNjQpLioiCisKK0VYVFJBX09FTUFLRSA9ICdSUE1QS0c9IiR7UFZ9IiBcCisgICAgICAgICAgICAgICAgR0RCX1RBUkdFVD0iJHtUQVJHRVRfU1lTfSIgXAorICAgICAgICAgICAgICAgIEdEQl9IT1NUPSIke0JVSUxEX1NZU30iIFwKKyAgICAgICAgICAgICAgICBHREJfTUFLRV9KT0JTPSIke1BBUkFMTEVMX01BS0V9IiBcCisgICAgICAgICAgICAgICAgTERGTEFHUz0iJHtMREZMQUdTfSIgXAorICAgICAgICAgICAgICAgICcKKworRVhUUkFfT0VNQUtFX2NsYXNzLWNyb3NzID0gJ1JQTVBLRz0iJHtQVn0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke0JVSUxEX1NZU30gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwke0dEQl9DT05GX0ZMQUdTfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9IT1NUPSIke0JVSUxEX1NZU30iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfTUFLRV9KT0JTPSIke1BBUkFMTEVMX01BS0V9IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfSciCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLWNyb3NzID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKKworUkVNT1ZFX00zMiA9ICJzZWQgLWkgLWUgJ3MvI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjQuKi8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NFx0XCJUQVJHRVRfQ0ZMQUdTPS1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjRcIi9nJyAke1N9L2NvbmZpZ3VyZS5jIgorCitSRU1PVkVfTTMyX2NsYXNzLWNyb3NzID0gIiIKKworZG9fY29uZmlndXJlKCkgeworICAgIDoKK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KKyAgICAgICAgYWFyY2g2NCopICAgIEFSQ0g9QVJNNjQgOzsKKyAgICAgICAgYXJtKikgICAgICAgIEFSQ0g9QVJNIDs7CisgICAgICAgIGkqODYqKSAgICAgICBBUkNIPVg4NiA7OworICAgICAgICB4ODZfNjQqKSAgICAgQVJDSD1YODZfNjQgOzsKKyAgICAgICAgcG93ZXJwYzY0KikgIEFSQ0g9UFBDNjQgOzsKKyAgICAgICAgcG93ZXJwYyopICAgIEFSQ0g9UFBDIDs7CisgICAgICAgIG1pcHMqKSAgICAgICBBUkNIPU1JUFMgOzsKKyAgICBlc2FjCisKKyAgICBzZWQgLWkgcy9GT1JDRV9ERUZJTkVfQVJDSC8iJHtBUkNIfSIvZyAke1N9L2NvbmZpZ3VyZS5jCisgICAgJHtSRU1PVkVfTTMyfQorICAgIHNlZCAtaSAncy8mZ3Q7Lz4vZycgJHtTfS9NYWtlZmlsZQorfQorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UgJHtFWFRSQV9PRU1BS0V9IFJFQ0lQRV9TWVNST09UPSR7UkVDSVBFX1NZU1JPT1R9Cit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9jcmFzaAorCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3Jhc2guOCAke0R9LyR7bWFuZGlyfS9tYW44LworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RlZnMuaCAke0R9JHtpbmNsdWRlZGlyfS9jcmFzaAorfQorCitkb19pbnN0YWxsX2NsYXNzLXRhcmdldCAoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0ke1NUQUdJTkdfRElSX05BVElWRX0gaW5zdGFsbAorfQorCitkb19pbnN0YWxsX2NsYXNzLWNyb3NzICgpIHsKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9jcmFzaCAke0R9LyR7YmluZGlyfQorfQorCitSREVQRU5EU18ke1BOfSArPSAibGlibHptYSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1jcm9zcyA9ICIiCisKKyMgQ2F1c2VzIGdjYyB0byBnZXQgc3R1Y2sgYW5kIGVhdCBhbGwgYXZhaWxhYmxlIG1lbW9yeSBpbiBxZW11YXJtIGJ1aWxkcworIyBqZW5raW5zICAxNTE2MSAgMTAwIDEyLjUgMTAzODk1OTYgMTAzMjEyODQgPyAgIFIgICAgMTE6NDAgIDI4OjE3IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliZXhlYy9hcm0tb2UtbGludXgtZ251ZWFiaS9nY2MvYXJtLW9lLWxpbnV4LWdudWVhYmkvNC45LjIvY2MxIC1xdWlldCAtSSAuIC1JIC4gLUkgLi9jb21tb24gLUkgLi9jb25maWcgLUkgLi8uLi9pbmNsdWRlL29wY29kZSAtSSAuLy4uL29wY29kZXMvLi4gLUkgLi8uLi9yZWFkbGluZS8uLiAtSSAuLi9iZmQgLUkgLi8uLi9iZmQgLUkgLi8uLi9pbmNsdWRlIC1JIC4uL2xpYmRlY251bWJlciAtSSAuLy4uL2xpYmRlY251bWJlciAtSSAuL2dudWxpYi9pbXBvcnQgLUkgYnVpbGQtZ251bGliL2ltcG9ydCAtaXN5c3Jvb3QgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdWFybSAtTU1EIGV2YWwuZCAtTUYgLmRlcHMvZXZhbC5UcG8gLU1QIC1NVCBldmFsLm8gLUQgTE9DQUxFRElSPSIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIgLUQgQ1JBU0hfTUVSR0UgLUQgSEFWRV9DT05GSUdfSCAtRCBUVUk9MSBldmFsLmMgLXF1aWV0IC1kdW1wYmFzZSBldmFsLmMgLW1hcmNoPWFybXY1dGUgLW10aHVtYiAtbXRodW1iLWludGVyd29yayAtbXRscy1kaWFsZWN0PWdudSAtYXV4YmFzZS1zdHJpcCBldmFsLm8gLWcgLU8yIC1XYWxsIC1XcG9pbnRlci1hcml0aCAtV2Zvcm1hdC1ub25saXRlcmFsIC1Xbm8tcG9pbnRlci1zaWduIC1Xbm8tdW51c2VkIC1XdW51c2VkLXZhbHVlIC1XdW51c2VkLWZ1bmN0aW9uIC1Xbm8tc3dpdGNoIC1Xbm8tY2hhci1zdWJzY3JpcHRzIC1XbWlzc2luZy1wcm90b3R5cGVzIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IC1XZW1wdHktYm9keSAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLW8gLQorQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3RhcC9rdGFwLW1vZHVsZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3RhcC9rdGFwLW1vZHVsZV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMTlkNGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2t0YXAva3RhcC1tb2R1bGVfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1yZXF1aXJlIGt0YXAuaW5jCi0KLVNVTU1BUlkgPSAiS1RBUCBpcyBhIHNjcmlwdGluZyBkeW5hbWljIHRyYWNpbmcgdG9vbCBmb3IgTGludXgiCi0KLWluaGVyaXQgbW9kdWxlCi0KLSMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9rdGFwL2t0YXAvaXNzdWVzLzgwCi1QTkJMQUNLTElTVFtrdGFwLW1vZHVsZV0gPz0gIk5vdCBjb21wYXRpYmxlIHdpdGggMy4xOSBrZXJuZWwgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLSMgT25seSBidWlsZCB0aGUgbW9kdWxlCi1NQUtFX1RBUkdFVFMgPSAibW9kIgotCi0jIEtlcm5lbCBtb2R1bGUgcGFja2FnZXMgTVVTVCBiZWdpbiB3aXRoICdrZXJuZWwtbW9kdWxlLScsIG90aGVyd2lzZQotIyBtdWx0aWxpYiBpbWFnZSBnZW5lcmF0aW9uIGNhbiBmYWlsLgotIwotIyBUaGUgZm9sbG93aW5nIGxpbmUgaXMgb25seSBuZWNlc3NhcnkgaWYgdGhlIHJlY2lwZSBuYW1lIGRvZXMgbm90IGJlZ2luCi0jIHdpdGgga2VybmVsLW1vZHVsZS0uCi0jCi1QS0dfJHtQTn0gPSAia2VybmVsLW1vZHVsZS0ke1BOfSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2t0YXAva3RhcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3RhcC9rdGFwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIxNGEwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3RhcC9rdGFwLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rdGFwLm9yZyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLUdQTDttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCi0KLVBWID0gIjAuNCtnaXRyJHtTUkNQVn0iCi1TUkNSRVYgPSAiYzg0MDFlMDdjODljZGVjOWE1ZjY3M2RhNGRkYjEyYjc5ODJiNTIyYiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9rdGFwL2t0YXAuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jIFBhY2thZ2UgY29uZmlnIGlzIGFidXNlZCBhcyBhIGdlbmVyYWwgY29tcGlsZSB0aW1lIGNvbmZpZ3VyYXRpb24gdG9vbC4KLQotIyBPbmx5IHN1cHBvcnRzIHg4Nl82NCBmb3Igbm93IS4gTmVlZHMgdG8gYmUgZW5hYmxlZCBmb3Iga3RhcC1tb2R1bGUgdG9vLgotUEFDS0FHRUNPTkZJR1tmZmldID0gIiIKLQotIyBOZWVkZWQgdG8gcmVzb2x2ZSBzeW1ib2xzIGluIERTTyBhbmQgZm9yIHNkdAotUEFDS0FHRUNPTkZJR1tsaWJlbGZdID0gIiwsZWxmdXRpbHMiCi0KLVBBQ0tBR0VDT05GSUcgPz0gImxpYmVsZiIKLQotRVhUUkFfT0VNQUtFID0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbGliZWxmJywgJycsICdOT19MSUJFTEY9MScsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZmZpJywgJ0ZGST0xJywgJycsIGQpfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3RhcC9rdGFwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rdGFwL2t0YXBfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTQ3YjdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rdGFwL2t0YXBfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1yZXF1aXJlIGt0YXAuaW5jCi0KLVNVTU1BUlkgPSAiS1RBUCBpcyBhIHNjcmlwdGluZyBkeW5hbWljIHRyYWNpbmcgdG9vbCBmb3IgTGludXgiCi1ERVBFTkRTID0gImt0YXAtbW9kdWxlIgotCi1QTkJMQUNLTElTVFtrdGFwXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBrZXJuZWwtbW9kdWxlLWt0YXB2bSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotIyBPbmx5IGJ1aWxkIHRoZSB1c2Vyc3BhY2UgYXBwCi1FWFRSQV9PRU1BS0UgKz0gImt0YXAiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30va3RhcCAke0R9JHtiaW5kaXJ9LwotfQotCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1rdGFwdm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAxLW1ha2VkdW1wZmlsZS1BZGQtcHJvcGVyLWZvcm1hdC1zdHJpbmctdG8tcHJpbnQtYS1zdHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAxLW1ha2VkdW1wZmlsZS1BZGQtcHJvcGVyLWZvcm1hdC1zdHJpbmctdG8tcHJpbnQtYS1zdHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NmEwYmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGUvMDAwMS1tYWtlZHVtcGZpbGUtQWRkLXByb3Blci1mb3JtYXQtc3RyaW5nLXRvLXByaW50LWEtc3RyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAwZmZmMjhmMzFhZWY5YWQxZDVhODE3MjE2YTNjOThiYTlkNjA1MTA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTkgSnVuIDIwMTcgMjM6NTI6MTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWFrZWR1bXBmaWxlOiBBZGQgcHJvcGVyIGZvcm1hdCBzdHJpbmcgdG8gcHJpbnQgYSBzdHJpbmcKLQotRml4Ci1tYWtlZHVtcGZpbGUuYzogSW4gZnVuY3Rpb24gJ3dyaXRlX2VyYXNlaW5mbyc6Ci1tYWtlZHVtcGZpbGUuYzo4MjczOjQ6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICAgIERFQlVHX01TRyhvYnVmKTsKLSAgICBefn5+fn5+fn4KLW1ha2VkdW1wZmlsZS5jOjgyNzM6NDogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbWFrZWR1bXBmaWxlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tYWtlZHVtcGZpbGUuYyBiL21ha2VkdW1wZmlsZS5jCi1pbmRleCBlNjliNmRmLi44YjhhNmIwIDEwMDY0NAotLS0tIGEvbWFrZWR1bXBmaWxlLmMKLSsrKyBiL21ha2VkdW1wZmlsZS5jCi1AQCAtODI3MCw3ICs4MjcwLDcgQEAgd3JpdGVfZXJhc2VpbmZvKHN0cnVjdCBjYWNoZV9kYXRhICpjZF9wYWdlLCB1bnNpZ25lZCBsb25nICpzaXplX291dCkKLSAJCQl9Ci0gCQkJc3ByaW50ZihvYnVmLCAiZXJhc2UgJXMgJXMiLCBlcmFzZV9pbmZvW2ldLnN5bWJvbF9leHByLAotIAkJCQkJCQlzaXplX3N0cik7Ci0tCQkJREVCVUdfTVNHKG9idWYpOwotKwkJCURFQlVHX01TRygiJXMiLCBvYnVmKTsKLSAJCQlpZiAoIXdyaXRlX2NhY2hlKGNkX3BhZ2UsIG9idWYsIHN0cmxlbihvYnVmKSkpCi0gCQkJCWdvdG8gb3V0OwotIAkJCXNpemVfZXJhc2VpbmZvICs9IHN0cmxlbihvYnVmKTsKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlXzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYmJmN2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIlZNY29yZSBleHRyYWN0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJcCi0gICAgVGhpcyBwcm9ncmFtIGlzIHVzZWQgdG8gZXh0cmFjdCBhIHN1YnNldCBvZiB0aGUgbWVtb3J5IGF2YWlsYWJsZSBlaXRoZXIgXAotICAgIHZpYSAvZGV2L21lbSBvciAvcHJvYy92bWNvcmUgKGZvciBjcmFzaGR1bXBzKS4gSXQgaXMgdXNlZCB0byBnZXQgbWVtb3J5IFwKLSAgICBpbWFnZXMgd2l0aG91dCBleHRyYSB1bmVlZGVkIGluZm9ybWF0aW9uICh6ZXJvIHBhZ2VzLCB1c2Vyc3BhY2UgcHJvZ3JhbXMsIFwKLSAgICBldGMpLiBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vbWFrZWR1bXBmaWxlLnNvdXJjZWZvcmdlLm5ldCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1MSUNFTlNFID0gIkdQTHYyLjAiCi0KLURFUEVORFMgPSAiYnppcDIgemxpYiBlbGZ1dGlscyIKLVJERVBFTkRTXyR7UE59LXRvb2xzID0gInBlcmwgJHtQTn0iCi0KLSMgYXJtIHdvdWxkIGNvbXBpbGUgYnV0IGhhcyBuZXZlciBiZWVuIHRlc3RlZCB1cHN0cmVhbS4gIG1pcHMgd291bGQgbm90IGNvbXBpbGUuCi0jCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtKS4qLWxpbnV4IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKi5wbCIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L21ha2VkdW1wZmlsZS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1tYWtlZHVtcGZpbGUtcmVwbGFjZS1oYXJkY29kZS1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLW1lbV9zZWN0aW9uLVN1cHBvcnQtb25seS00Ni1iaXQtZm9yLU1BWF9QSFlTTUVNX0JJVFMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLW1ha2VkdW1wZmlsZS1BZGQtcHJvcGVyLWZvcm1hdC1zdHJpbmctdG8tcHJpbnQtYS1zdHIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjE2YzBhZTk5MDJhZTU3YmU0YTYwM2E2YWIxZTg2YzUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiNmU3MzEwNjk5ODY3MDQwNzg4N2RlOWUxYTUwNWIzYTJkYmIyZmI1MTdhNGI5NjhhNjY1ZWRhOGZiMDk3Y2UiCi0KLVNFQ1RJT04gPSAiYmFzZSIKLQotIyBJZiB3ZSBkbyBub3Qgc3BlY2lmeSBUQVJHRVQsIG1ha2VkdW1wZmlsZSB3aWxsIGJ1aWxkIGZvciB0aGUgaG9zdCBidXQgdXNlIHRoZQotIyB0YXJnZXQgZ2NjLgotIwotRVhUUkFfT0VNQUtFID0gIlwKLSAgICBMSU5LVFlQRT1zdGF0aWMgXAotICAgIFRBUkdFVD0ke1RBUkdFVF9BUkNIfSBcCi0iCi0KLWRvX2luc3RhbGwgKCkgewotICAgIG1rZGlyIC1wICR7RH0vdXNyL2JpbgotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vbWFrZWR1bXBmaWxlICR7RH0vdXNyL2JpbgotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vbWFrZWR1bXBmaWxlLVIucGwgJHtEfS91c3IvYmluCi0KLSAgICBta2RpciAtcCAke0R9L3Vzci9zaGFyZS9tYW4vbWFuOAotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLjguZ3ogJHtEfS91c3Ivc2hhcmUvbWFuL21hbjgKLQotICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21hbi9tYW41Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuY29uZi41Lmd6ICR7RH0vdXNyL3NoYXJlL21hbi9tYW41Ci0KLSAgICBta2RpciAtcCAke0R9L2V0Yy8KLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS5jb25mICR7RH0vZXRjL21ha2VkdW1wZmlsZS5jb25mLnNhbXBsZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmYyZDgwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjIuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJWTWNvcmUgZXh0cmFjdGlvbiB0b29sIgorREVTQ1JJUFRJT04gPSAiXAorICAgIFRoaXMgcHJvZ3JhbSBpcyB1c2VkIHRvIGV4dHJhY3QgYSBzdWJzZXQgb2YgdGhlIG1lbW9yeSBhdmFpbGFibGUgZWl0aGVyIFwKKyAgICB2aWEgL2Rldi9tZW0gb3IgL3Byb2Mvdm1jb3JlIChmb3IgY3Jhc2hkdW1wcykuIEl0IGlzIHVzZWQgdG8gZ2V0IG1lbW9yeSBcCisgICAgaW1hZ2VzIHdpdGhvdXQgZXh0cmEgdW5lZWRlZCBpbmZvcm1hdGlvbiAoemVybyBwYWdlcywgdXNlcnNwYWNlIHByb2dyYW1zLCBcCisgICAgZXRjKS4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL21ha2VkdW1wZmlsZS5zb3VyY2Vmb3JnZS5uZXQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorTElDRU5TRSA9ICJHUEx2Mi4wIgorCitERVBFTkRTID0gImJ6aXAyIHpsaWIgZWxmdXRpbHMiCitSREVQRU5EU18ke1BOfS10b29scyA9ICJwZXJsICR7UE59IgorCisjIGFybSB3b3VsZCBjb21waWxlIGJ1dCBoYXMgbmV2ZXIgYmVlbiB0ZXN0ZWQgdXBzdHJlYW0uICBtaXBzIHdvdWxkIG5vdCBjb21waWxlLgorIworQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjR8aS44Nnxwb3dlcnBjfGFybSkuKi1saW51eCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoucGwiCisKK1NSQ19VUkkgPSAiXAorICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9tYWtlZHVtcGZpbGUvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1tZW1fc2VjdGlvbi1TdXBwb3J0LW9ubHktNDYtYml0LWZvci1NQVhfUEhZU01FTV9CSVRTLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MmJlNWJmOTczZWVkODk4YzUxMjdlM2FiYzQ2NjU4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZTNkMjFjYjQwMzJhNjBiZDJjODAyZDFkOGIyMWI5ZjM5OTcxMGUxNTc0ZjhkZThlYWQ1YWI1MGNkODIxYTZkIgorCitTRUNUSU9OID0gImJhc2UiCisKKyMgSWYgd2UgZG8gbm90IHNwZWNpZnkgVEFSR0VULCBtYWtlZHVtcGZpbGUgd2lsbCBidWlsZCBmb3IgdGhlIGhvc3QgYnV0IHVzZSB0aGUKKyMgdGFyZ2V0IGdjYy4KKyMKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgTElOS1RZUEU9c3RhdGljIFwKKyAgICBUQVJHRVQ9JHtUQVJHRVRfQVJDSH0gXAorIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBta2RpciAtcCAke0R9L3Vzci9iaW4KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L21ha2VkdW1wZmlsZSAke0R9L3Vzci9iaW4KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L21ha2VkdW1wZmlsZS1SLnBsICR7RH0vdXNyL2JpbgorCisgICAgbWtkaXIgLXAgJHtEfS91c3Ivc2hhcmUvbWFuL21hbjgKKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS44Lmd6ICR7RH0vdXNyL3NoYXJlL21hbi9tYW44CisKKyAgICBta2RpciAtcCAke0R9L3Vzci9zaGFyZS9tYW4vbWFuNQorICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLmNvbmYuNS5neiAke0R9L3Vzci9zaGFyZS9tYW4vbWFuNQorCisgICAgbWtkaXIgLXAgJHtEfS9ldGMvCisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuY29uZiAke0R9L2V0Yy9tYWtlZHVtcGZpbGUuY29uZi5zYW1wbGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy8wMDAxLWZpeC1jb21waWxlLWVycm9yLW9uLWFyY2gteDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzLzAwMDEtZml4LWNvbXBpbGUtZXJyb3Itb24tYXJjaC14MzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJhNmFkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy8wMDAxLWZpeC1jb21waWxlLWVycm9yLW9uLWFyY2gteDMyLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gODgzZjUzZWUzM2VhZWY4YWNhMTI4OGExMTA4NTc0MDJhZDM2Mjk2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvaG4gT2duZXNzIDxqb2huLm9nbmVzc0BsaW51dHJvbml4LmRlPgorRGF0ZTogRnJpLCA4IFNlcCAyMDE3IDE1OjAzOjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb21waWxlIGVycm9yIG9uIGFyY2g9eDMyCisKK09uIHRoZSB4MzIgYXJjaGl0ZWN0dXJlIHRpbWVfdCBpcyBhICJsb25nIGxvbmcgaW50Ii4gQnkKKyB0eXBlY2FzdGluZyB0aW1lX3QgdG8gImxvbmcgbG9uZyIsIHRoaXMgc2hvdWxkIHdvcmsgY29ycmVjdGx5CisgZm9yIGFsbCBhcmNoaXRlY3R1cmVzLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYyBiL3NyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYworaW5kZXggZmQzOWJmYi4uMDdkYzMxOCAxMDA2NDQKKy0tLSBhL3NyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYworKysrIGIvc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jCitAQCAtMTI0MSw3ICsxMjQxLDcgQEAgc3RhdGljIGludCBkdW1wX2NvbXByZXNzZWRfdGFyKHN0cnVjdCBkdW1wX2luZm8gKmRpKQorIAlzbnByaW50ZihoZHIubW9kZSwgc2l6ZW9mKGhkci5tb2RlKSwgIiUwN28iLCAwNjQ0KTsKKyAJc25wcmludGYoaGRyLnVpZCwgc2l6ZW9mKGhkci51aWQpLCAiJTA3byIsIDApOworIAlzbnByaW50ZihoZHIuZ2lkLCBzaXplb2YoaGRyLmdpZCksICIlMDdvIiwgMCk7CistCXNucHJpbnRmKGhkci5tdGltZSwgc2l6ZW9mKGhkci5tdGltZSksICIlMDExbG8iLAorKwlzbnByaW50ZihoZHIubXRpbWUsIHNpemVvZihoZHIubXRpbWUpLCAiJTAxMWxsbyIsCisgCQkgKGxvbmcgbG9uZyl0aW1lKE5VTEwpKTsKKyAJbWVtc2V0KGhkci5jaGVja3N1bSwgJyAnLCBzaXplb2YoaGRyLmNoZWNrc3VtKSk7CisgCWhkci50eXBlID0gJ1MnOworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzLzAwMDEtbWluaWNvcmVkdW1wZXItSW5pdGlhbGl6ZS1wb2ludGVyLXRvLWNvbmZpZy1zdHJ1Y3QtdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy8wMDAxLW1pbmljb3JlZHVtcGVyLUluaXRpYWxpemUtcG9pbnRlci10by1jb25maWctc3RydWN0LXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQyNTVmYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy8wMDAxLW1pbmljb3JlZHVtcGVyLUluaXRpYWxpemUtcG9pbnRlci10by1jb25maWctc3RydWN0LXQucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA2MTgxZDljM2M0MDdlZTAzMGI0YzNhOTQwNDUzMThiOWUzYTNjYzg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjUgSnVsIDIwMTcgMTQ6MDg6NTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWluaWNvcmVkdW1wZXI6IEluaXRpYWxpemUgcG9pbnRlciB0byBjb25maWcgc3RydWN0IHRvIG51bGwKKworRml4ZXMKK2NvcmVzdHJpcHBlci5jOjM2MzI6MTM6IGVycm9yOiB2YXJpYWJsZSAnY2ZnJyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQgd2hlbmV2ZXIgJ2lmJyBjb25kaXRpb24gaXMgZmFsc2UgWy1XZXJyb3IsLVdzb21ldGltZXMtdW5pbml0aWFsaXplZF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYyBiL3NyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYworaW5kZXggYTc2NDA3My4uZGRiMGQyNSAxMDA2NDQKKy0tLSBhL3NyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYworKysrIGIvc3JjL21pbmljb3JlZHVtcGVyL2NvcmVzdHJpcHBlci5jCitAQCAtMzYwNSw3ICszNjA1LDcgQEAgb3V0OgorIAorIHN0YXRpYyBpbnQgZG9fYWxsX2R1bXBzKHN0cnVjdCBkdW1wX2luZm8gKmRpLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQorIHsKKy0Jc3RydWN0IGNvbmZpZyAqY2ZnOworKwlzdHJ1Y3QgY29uZmlnICpjZmcgPSAwOworIAljb25zdCBjaGFyICpyZWNlcHQ7CisgCWJvb2wgbGl2ZV9kdW1wZXI7CisgCWNoYXIgKmNvbW1fYmFzZTsKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9taW5pY29yZWR1bXBlcl8yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9taW5pY29yZWR1bXBlcl8yLjAuMC5iYgppbmRleCA1OGNkNDVhLi4xODU4ZTEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvbWluaWNvcmVkdW1wZXJfMi4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL21pbmljb3JlZHVtcGVyXzIuMC4wLmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJtaW5pY29yZWR1bXBlciBwcm92aWRlcyBhbiBhbHRlcm5hdGUgY29yZSBkdW1wIGZhY2lsaXR5IGZvciBMaW51eCBcCiB0byBhbGxvdyBtaW5pbWFsIGFuZCBjdXN0b21pemVkIGNyYXNoIGR1bXBzIgogTElDRU5TRSA9ICIgTEdQTHYyLjEgJiBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03MDkwODdjMmVkMGFjZGE1NGE0ZDkxNDk3YTg4OWU0MiBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYTg0NmFlMzY1ZjcxYjY5ZTlmYTBkMjFhNTYzOTFlYyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9YjkxNWFjODBkNTIzNmQ2YWE2NTljYjk4NmRhZjAwZTUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9MzIxYmY0MWYyODBjZjgwNTA4NmRkNWE3MjBiMzc3ODUgXAogICAgICAgICAgICAgICAgICAgICIKQEAgLTksMTQgKzksMTYgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQKIAotU1JDUkVWID0gIjI0ODAxOTQ0NmNjZjYwNzk5MjZlZmI1NGY4YjZkZDdiZTc2OWJiYWUiCitTUkNSRVYgPSAiY2RjMWZhZjEyMTJhNTFlODliNDc3NDY4ODc2ZTIyOTIyM2ZjZWI5YSIKIAogUFIgLj0gIitnaXQke1NSQ1BWfSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0xpbnV0cm9uaXgvbWluaWNvcmVkdW1wZXItZGViaWFuO2JyYW5jaD11bnN0YWJsZSBcCitTUkNfVVJJID0gImdpdDovL2dpdC5saW51eGZvdW5kYXRpb24ub3JnL2RpYW1vbi9taW5pY29yZWR1bXBlci5naXQ7cHJvdG9jb2w9aHR0cCBcCiAgICAgICAgICAgIGZpbGU6Ly9taW5pY29yZWR1bXBlci5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL21pbmljb3JlZHVtcGVyLmluaXQgXAotIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1taW5pY29yZWR1bXBlci1Jbml0aWFsaXplLXBvaW50ZXItdG8tY29uZmlnLXN0cnVjdC10LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWNvbXBpbGUtZXJyb3Itb24tYXJjaC14MzIucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMDE2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiU3lzdGVtLVdpZGUgUHJvZmlsZXIiCitERVNDUklQVElPTiA9ICJPUHJvZmlsZSBpcyBhIHN5c3RlbS13aWRlIHByb2ZpbGVyIGZvciBMaW51eCBzeXN0ZW1zLCBjYXBhYmxlIFwKK29mIHByb2ZpbGluZyBhbGwgcnVubmluZyBjb2RlIGF0IGxvdyBvdmVyaGVhZC4iCitIT01FUEFHRSA9ICJodHRwOi8vb3Byb2ZpbGUuc291cmNlZm9yZ2UubmV0L25ld3MvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE2MTkxJmF0aWQ9MTE2MTkxIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlib3BhZ2VudC9vcGFnZW50Lmg7YmVnaW5saW5lPTU7ZW5kbGluZT0yNjttZDU9NGYxNmY3MmM3YTQ5M2Q4YTQ3MDRhYTE4ZDAzZDE1YzYgXAorICAgICAgICAgICAgICAgICAgICIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0RFUEVORFMgPSAicG9wdCBiaW51dGlscyIKK1JERVBFTkRTXyR7UE59ID0gImJpbnV0aWxzLXN5bWxpbmtzIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLXZtbGludXgiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2xpYmRpcn0vJHtCUE59L2xpYioke1NPTElCU30gJHtkYXRhZGlyfS8ke0JQTn0iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vJHtCUE59L2xpYioubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vbGliKi5hIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hY2luY2x1ZGUubTQgXAorICAgICAgICAgICBmaWxlOi8vYXV0b21ha2UtZm9yZWlnbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9yb290LWhvbWUtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoIFwKKyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm9wcm9maWxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvb3Byb2ZpbGUvZmlsZXMvb3Byb2ZpbGUvIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLnBhdGNoIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAtLXdpdGhvdXQteCBhY19jdl9wcm9nX1hTTFRQUk9DPSIKK2RvX2NvbmZpZ3VyZSAoKSB7CisJY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KKwlhdXRvdG9vbHNfZG9fY29uZmlndXJlCit9CisKK0VYVFJBX09FTUFLRSA9ICJTUkNESVI9JHtQVEVTVF9QQVRIfS9saWJ1dGlsKysvdGVzdHMiCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgY2hlY2sKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlzdWJkaXJzPSJsaWJkYi90ZXN0cyBsaWJ1dGlsKysvdGVzdHMgbGlicmVnZXgvdGVzdHMgbGlidXRpbC90ZXN0cyBsaWJvcC90ZXN0cyBsaWJkYi90ZXN0cyAiCisJZm9yIHRvb2x0ZXN0IGluICR7c3ViZGlyc30KKwlkbworCQlmaW5kICR7dG9vbHRlc3R9IC1wZXJtIC91PXggLXR5cGUgZnwgY3BpbyAtcHZkdSAke0R9JHtQVEVTVF9QQVRIfQorCWRvbmUKKworCSMgbmVlZGVkIGJ5IHNvbWUgbGlib3AgdGVzdHMKKwljcCAtciBldmVudHMgJHtEfSR7UFRFU1RfUEFUSH0KKworCSMgbmVlZGVkIGJ5IGxpYnJlZ2V4IHJlZ2V4X3Rlc3QKKwljcCBsaWJyZWdleC9zdGwucGF0ICR7RH0ke1BURVNUX1BBVEh9L2xpYnJlZ2V4CisJY3AgbGlicmVnZXgvdGVzdHMvbWFuZ2xlZC1uYW1lICR7RH0ke1BURVNUX1BBVEh9L2xpYnJlZ2V4L3Rlc3RzCisKKwkjIG5lZWRlZCBieSBsaXR1dGlsKysgZmlsZV9tYW5pcF90ZXN0cworCWNwICR7U30vbGlidXRpbCsrL3Rlc3RzL2ZpbGVfbWFuaXBfdGVzdHMuY3BwIFwKKwkJbGlidXRpbCsrL3Rlc3RzL2ZpbGVfbWFuaXBfdGVzdHMubyAke0R9JHtQVEVTVF9QQVRIfS9saWJ1dGlsKysvdGVzdHMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUFkZC1ybWItZGVmaW5pdGlvbi1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU4NTYyYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUFkZC1ybWItZGVmaW5pdGlvbi1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMzRiMGQ5YjFhMzJmYjQwNGEzMDMyN2E3YWU4OTMxYzdjNzU1ODNiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgorRGF0ZTogVHVlLCA5IEZlYiAyMDE2IDAyOjAwOjI5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBybWIoKSBkZWZpbml0aW9uIGZvciBOSU9TMiBhcmNoaXRlY3R1cmUKKworU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHA6Ly9tYXJjLmluZm8vP2w9b3Byb2ZpbGUtbGlzdCZtPTE0NTUwMTkxNTkzMTg3NCZ3PTIgXQorLS0tCisgbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaCB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJwZXJmX2V2ZW50cy9vcGVyZl91dGlscy5oIGIvbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaAoraW5kZXggMzI5NTRjYy4uODI3MGU1MyAxMDA2NDQKKy0tLSBhL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmgKKysrKyBiL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmgKK0BAIC0xNzgsNiArMTc4LDExIEBAIHZvaWQgb3BfcmVsZWFzZV9yZXNvdXJjZXModm9pZCk7CisgI2RlZmluZSBjcHVfcmVsYXgoKQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQorICNlbmRpZgorIAorKyNpZmRlZiBfX25pb3MyX18KKysjZGVmaW5lIHJtYigpCQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQorKyNkZWZpbmUgY3B1X3JlbGF4KCkJYXNtIHZvbGF0aWxlKCIiIDo6OiAibWVtb3J5IikKKysjZW5kaWYKKysKKyAjaWZkZWYgX190aWxlX18KKyAjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorICNkZWZpbmUgcm1iKCkJCV9faW5zbl9tZigpCistLSAKKzIuNy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzJmZDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMzlkNGQ0NmEwYmQ1MDRhYzcwOGZmZTcyZGY4N2JmNzRjZDEyYWQzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdpbGxpYW0gQ29oZW4gPHdjb2hlbkByZWRoYXQuY29tPgorRGF0ZTogRnJpLCA1IEZlYiAyMDE2IDE3OjMwOjE5IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBGVEJGUyBwcm9ibGVtIHdpdGggR0NDLTYKKworR0NDLTYgaXMgcGlja2llciBhYm91dCBzb21lIG9mIHRoZSB0eXBlIGNvbnZlcnNpb25zIGNhdXNpbmcgdGhlIEZlZG9yYQorMjQgbWFzcyByZWJ1aWxkIHRoZSBidWlsZCBvZiBvcHJvZmlsZSBmYWlsZWQgd2l0aDoKKworbWFrZVszXTogRW50ZXJpbmcgZGlyZWN0b3J5ICcvYnVpbGRkaXIvYnVpbGQvQlVJTEQvb3Byb2ZpbGUtMS4xLjAvbGlidXRpbCsrJworZysrIC1ESEFWRV9DT05GSUdfSCAtSS4gLUkuLiAgLUkgLi4vbGlidXRpbCAtSSAuLi9saWJvcCAtSSAuLi9saWJwcCAgIC1XIC1XYWxsIC1mbm8tY29tbW9uIC1mdGVtcGxhdGUtZGVwdGgtNTAgLU8yIC1nIC1waXBlIC1XYWxsIC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1mZXhjZXB0aW9ucyAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NCAtZ3JlY29yZC1nY2Mtc3dpdGNoZXMgLXNwZWNzPS91c3IvbGliL3JwbS9yZWRoYXQvcmVkaGF0LWhhcmRlbmVkLWNjMSAtbTMyIC1tYXJjaD1pNjg2IC1tdHVuZT1hdG9tIC1mYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWMgLW8gb3BfYmZkLm8gb3BfYmZkLmNwcAorb3BfYmZkLmNwcDogSW4gbWVtYmVyIGZ1bmN0aW9uICd2b2lkIG9wX2JmZDo6Z2V0X3N5bWJvbF9yYW5nZShzeW1ib2xfaW5kZXhfdCwgbG9uZyBsb25nIHVuc2lnbmVkIGludCYsIGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQmKSBjb25zdCc6CitvcF9iZmQuY3BwOjUzODo0NzogZXJyb3I6IGNhbm5vdCBjb252ZXJ0ICdzdGQ6Om9zdHJlYW0ge2FrYSBzdGQ6OmJhc2ljX29zdHJlYW08Y2hhcj59JyB0byAnY29uc3QgYm9vbCcgaW4gaW5pdGlhbGl6YXRpb24KKyAgYm9vbCBjb25zdCB2ZXJib3NlID0gY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorb3BfYmZkLmNwcDo1NDY6NzogZXJyb3I6IGluIGFyZ3VtZW50IHRvIHVuYXJ5ICEKKyAgaWYgKCF2ZXJib3NlKQorICAgICAgIF5+fn5+fn4KKworQXZvaWQgdGhlIGludGVybWVkaWF0ZSBib29sIHR5cGUgdG8gbWFrZSBHQ0MtNiBoYXBweS4KKworU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBDb2hlbiA8d2NvaGVuQHJlZGhhdC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworIGxpYnV0aWwrKy9vcF9iZmQuY3BwIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlidXRpbCsrL29wX2JmZC5jcHAgYi9saWJ1dGlsKysvb3BfYmZkLmNwcAoraW5kZXggMzg5YzkyMC4uZjJlYjQyYiAxMDA2NDQKKy0tLSBhL2xpYnV0aWwrKy9vcF9iZmQuY3BwCisrKysgYi9saWJ1dGlsKysvb3BfYmZkLmNwcAorQEAgLTUzNSwxNSArNTM1LDEzIEBAIHZvaWQgb3BfYmZkOjpnZXRfc3ltYm9sX3JhbmdlKHN5bWJvbF9pbmRleF90IHN5bV9pZHgsCisgeworIAlvcF9iZmRfc3ltYm9sIGNvbnN0ICYgc3ltID0gc3ltc1tzeW1faWR4XTsKKyAKKy0JYm9vbCBjb25zdCB2ZXJib3NlID0gY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKTsKKy0KKyAJaWYgKGFub25fb2JqKQorIAkJc3RhcnQgPSBzeW0udm1hKCk7CisgCWVsc2UKKyAJCXN0YXJ0ID0gc3ltLmZpbGVwb3MoKTsKKyAJZW5kID0gc3RhcnQgKyBzeW0uc2l6ZSgpOworIAorLQlpZiAoIXZlcmJvc2UpCisrCWlmICghKGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSkpKQorIAkJcmV0dXJuOworIAorIAlpb19zdGF0ZSBzdGF0ZShjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpKTsKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hY2luY2x1ZGUubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVlY2Q5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hY2luY2x1ZGUubTQKQEAgLTAsMCArMSw1ODEgQEAKK2RubCBBWF9LRVJORUxfT1BUSU9OKG9wdGlvbiwgYWN0aW9uLWlmLWZvdW5kLCBhY3Rpb24taWYtbm90LWZvdW5kKQorZG5sIHNlZSBpZiBhdXRvY29uZi5oIGRlZmluZXMgdGhlIG9wdGlvbgorQUNfREVGVU4oW0FYX0tFUk5FTF9PUFRJT05dLCBbCitTQVZFX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9Ii1JJEtJTkMgLU8yIC1EX19LRVJORUxfXyIKK0FDX1RSWV9DT01QSUxFKCBbI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPl0sCitbCisjaWZuZGVmICQxCiticmVha19tZV9oYXJkKFxcXCk7CisjZW5kaWYKK10sWyQyXSxbJDNdLCkKK0NGTEFHUz0kU0FWRV9DRkxBR1MKK10pCisKK2RubCBIYW5kbGUgdGhlIDIuNCBtb2R1bGUgaW5zaWRlIG1vZHVsZS8KK0FDX0RFRlVOKFtBWF9DT05GSUdfTU9EVUxFXSwKK1sKK2lmIHRlc3QgISAtZiAkS0lOQy9saW51eC9hdXRvY29uZi5oOyB0aGVuCisJQUNfTVNHX0VSUk9SKFtubyBzdWl0YWJseSBjb25maWd1cmVkIGtlcm5lbCBpbmNsdWRlIHRyZWUgZm91bmRdKQorZmkKKworZG5sICAtLS0gR2V0IExpbnV4IGtlcm5lbCB2ZXJzaW9uIGFuZCBjb21waWxlIHBhcmFtZXRlcnMgLS0tCisKK0FDX1NVQlNUKEtWRVJTKQorQUNfTVNHX0NIRUNLSU5HKFtmb3Iga2VybmVsIHZlcnNpb25dKQorZG5sIGl0J3MgbGlrZSB0aGlzIHRvIGhhbmRsZSBtYW5kcmFrZSdzIGZ1YmFyIHZlcnNpb24uaCAtIGJ1ZyAjNDcxNDQ4CitldmFsIEtWRVJTPWBnY2MgLUkkS0lOQyAtRSAtZE0gJEtJTkMvbGludXgvdmVyc2lvbi5oIHwgZ3JlcCAtdyBVVFNfUkVMRUFTRSB8IGF3ayAne3ByaW50ICRbXTN9J2AKK0FDX01TR19SRVNVTFQoWyRLVkVSU10pCitjYXNlICIkS1ZFUlMiIGluCisyLjIuKnwyLjQuKikgOzsKKyopIEFDX01TR19FUlJPUihbVW5zdXBwb3J0ZWQga2VybmVsIHZlcnNpb25dKQorZXNhYworCitkbmwgQ2hlY2sgZm9yIHRoZSBtaW5pbWFsIGtlcm5lbCB2ZXJzaW9uIHN1cHBvcnRlZAorQUNfTVNHX0NIRUNLSU5HKFtrZXJuZWwgdmVyc2lvbl0pCitBWF9LRVJORUxfVkVSU0lPTigyLCAyLCAxMCwgPD0sIEFDX01TR19SRVNVTFQoW29rXSksIEFDX01TR19FUlJPUihbY2hlY2sgaHRtbCBkb2N1bWVudGF0aW9uIGluc3RhbGwgc2VjdGlvbl0pKQorCitkbmwgbGludXgvc3BpbmxvY2suaCBhZGRlZCBhdCBzb21lIHBvaW50IGluIHBhc3QKK0FDX01TR19DSEVDS0lORyhbZm9yICRLSU5DL2xpbnV4L3NwaW5sb2NrLmhdKQoraWYgdGVzdCAtZiAkS0lOQy9saW51eC9zcGlubG9jay5oOyB0aGVuCisJRVhUUkFfQ0ZMQUdTX01PRFVMRT0iJEVYVFJBX0NGTEFHU19NT0RVTEUgLURIQVZFX0xJTlVYX1NQSU5MT0NLX0hFQURFUiIKKwlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorZWxzZQorCUFDX01TR19SRVNVTFQoW25vXSkKK2ZpCisKK0FDX01TR19DSEVDS0lORyhbZm9yIHJ0Y19sb2NrXSkKK2djYyAtSSRLSU5DIC1FICRLSU5DL2xpbnV4L21jMTQ2ODE4cnRjLmggfCBncmVwIHJ0Y19sb2NrID4vZGV2L251bGwKK2lmIHRlc3QgIiQ/IiAtZXEgMDsgdGhlbgorCUVYVFJBX0NGTEFHU19NT0RVTEU9IiRFWFRSQV9DRkxBR1NfTU9EVUxFIC1EUlRDX0xPQ0siCisJQUNfTVNHX1JFU1VMVChbeWVzXSkKK2Vsc2UKKwlBQ19NU0dfUkVTVUxUKFtub10pCitmaQorCSAKK2FyY2g9InVua25vd24iCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg4Ni02NCBhcmNoaXRlY3R1cmUpCitBWF9LRVJORUxfT1BUSU9OKENPTkZJR19YODZfNjQsIHg4NjY0PTEsIHg4NjY0PTApCitBWF9NU0dfUkVTVUxUX1lOKCR4ODY2NCkKK0JVSUxEX0hBTU1FUj1ubworaWYgdGVzdCAiJHg4NjY0IiAtZXEgMTsgdGhlbgorCWFyY2g9Ing4NiIKKwlCVUlMRF9IQU1NRVI9eWVzCitlbHNlCisJQUNfTVNHX0NIRUNLSU5HKGZvciB4ODYgYXJjaGl0ZWN0dXJlKQorCUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX1g4NiwgeDg2PTEsIHg4Nj0wKQorCUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX1g4Nl9XUF9XT1JLU19PSywgeDg2PTEsIHg4Nj0keDg2KQorCUFYX01TR19SRVNVTFRfWU4oJHg4NikKKwl0ZXN0ICIkeDg2IiA9IDEgJiYgYXJjaD0ieDg2IgorCQorCWlmIHRlc3QgIiRhcmNoIiA9ICJ1bmtub3duIjsgdGhlbgorICAJCUFDX01TR19DSEVDS0lORyhmb3IgaWE2NCBhcmNoaXRlY3R1cmUpCisgIAkJQVhfS0VSTkVMX09QVElPTihDT05GSUdfSUE2NCwgaWE2ND0xLCBpYTY0PTApCisgIAkJQVhfTVNHX1JFU1VMVF9ZTigkaWE2NCkKKyAgCQl0ZXN0ICIkaWE2NCIgPSAxICYmIGFyY2g9ImlhNjQiCisJZmkKKworZmkKK0FDX1NVQlNUKEJVSUxEX0hBTU1FUikKKwordGVzdCAiJGFyY2giID0gInVua25vd24iICYmIEFDX01TR19FUlJPUihVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUpCisKK2RubCBjaGVjayB0byBzZWUgaWYga2VybmVsIHZlcmlvbiBhcHByb3ByaWF0ZSBmb3IgYXJjaAorQUNfTVNHX0NIRUNLSU5HKGFyY2gva2VybmVsIHZlcnNpb24gY29tYmluYXRpb24pCitjYXNlICIkYXJjaCIgaW4KK2lhNjQpCisJQVhfS0VSTkVMX1ZFUlNJT04oMiwgNCwgMTgsIDwsIEFDX01TR19SRVNVTFQoW29rXSksCisJCUFDX01TR19FUlJPUihbdW5zdXBwb3J0ZWQgYXJjaC9rZXJuZWxdKSkgOzsKKyopIEFDX01TR19SRVNVTFQoW29rXSkKK2VzYWMKKworZG5sIGZvciBub3cgd2UgZG8gbm90IHN1cHBvcnQgUFJFRU1QVCBwYXRjaAorQUNfTVNHX0NIRUNLSU5HKFtmb3IgcHJlZW1wdCBwYXRjaF0pCitBWF9LRVJORUxfT1BUSU9OKENPTkZJR19QUkVFTVBULHByZWVtcHQ9MSxwcmVlbXB0PTApCitBWF9NU0dfUkVTVUxUX1lOKFskcHJlZW1wdF0pCit0ZXN0ICIkcHJlZW1wdCIgPSAwIHx8IEFDX01TR19FUlJPUihbdW5zdXBwb3J0ZWQga2VybmVsIGNvbmZpZ3VyYXRpb24gOiBDT05GSUdfUFJFRU1QVF0pCisKK0FDX1NVQlNUKEtJTkMpCisKK01PRElOU1RBTExESVI9L2xpYi9tb2R1bGVzLyRLVkVSUworIAorT1BST0ZJTEVfTU9EVUxFX0FSQ0g9JGFyY2gKK0FDX1NVQlNUKE9QUk9GSUxFX01PRFVMRV9BUkNIKQorXQorKQorCitkbmwgQVhfTVNHX1JFU1VMVF9ZTihhKQorZG5sIHJlc3VsdHMgInllcyIgaWZmIGE9PTEsICJubyIgZWxzZQorQUNfREVGVU4oW0FYX01TR19SRVNVTFRfWU5dLCBbeD1ubwordGVzdCAieCQxIiA9ICJ4MSIgJiYgeD15ZXMKK0FDX01TR19SRVNVTFQoJHgpXSkKKworZG5sIEFYX01BTExPQ19BVFRSSUJVVEUgLSBzZWUgaWYgZ2NjIHdpbGwgdGFrZSBfX2F0dHJpYnV0ZV9fKChtYWxsb2MpKQorQUNfREVGVU4oW0FYX01BTExPQ19BVFRSSUJVVEVdLAorWworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIG1hbGxvYyBhdHRyaWJ1dGUgaXMgdW5kZXJzdG9vZF0pCitTQVZFX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9Ii1XZXJyb3IgJENGTEFHUyIKK0FDX1RSWV9DT01QSUxFKCxbCit2b2lkIG1vbmtleSgpIF9fYXR0cmlidXRlX18oKG1hbGxvYykpOworXSxBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgQUNfREVGSU5FKE1BTExPQ19BVFRSSUJVVEVfT0ssIDEsIFt3aGV0aGVyIG1hbGxvYyBhdHRyaWJ1dGUgaXMgdW5kZXJzdG9vZF0pLCBBQ19NU0dfUkVTVUxUKFtub10pKQorQ0ZMQUdTPSRTQVZFX0NGTEFHUyAKK10KKykKKworZG5sIGJ1aWx0aW5fZXhwZWN0IGlzIHVzZWQgaW4gbW9kdWxlIHdlIGNhbid0IGFkZCB0aGF0IGluIGNvbmZpZy5oCitBQ19ERUZVTihbQVhfQlVJTFRJTl9FWFBFQ1RdLAorWworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIF9fYnVpbHRpbl9leHBlY3QgaXMgdW5kZXJzdG9vZF0pCitTQVZFX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9Ii1XZXJyb3IgJENGTEFHUyIKK0FDX1RSWV9MSU5LKCxbCitpbnQgaTsKK2lmIChfX2J1aWx0aW5fZXhwZWN0KGksIDApKSB7IH0KK10sCitBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgRVhUUkFfQ0ZMQUdTX01PRFVMRT0iJEVYVFJBX0NGTEFHU19NT0RVTEUgLURFWFBFQ1RfT0siLAorQUNfTVNHX1JFU1VMVChbbm9dKTspCitDRkxBR1M9JFNBVkVfQ0ZMQUdTIAorXQorKSAKKworZG5sIEFYX0VYVFJBX0RJUlMgLSBMZXQgdXNlciBzcGVjaWZ5IGV4dHJhIGRpcnMgZm9yIGluY2x1ZGUvbGlicworQUNfREVGVU4oW0FYX0VYVFJBX0RJUlNdLAorWworQUNfQVJHX1dJVEgoZXh0cmEtaW5jbHVkZXMsCitbICAtLXdpdGgtZXh0cmEtaW5jbHVkZXM9RElSICAgIGFkZCBleHRyYSBpbmNsdWRlIHBhdGhzXSwKKyAgdXNlX2V4dHJhX2luY2x1ZGVzPSIkd2l0aHZhbCIsCisgIHVzZV9leHRyYV9pbmNsdWRlcz1OTworKQoraWYgdGVzdCAtbiAiJHVzZV9leHRyYV9pbmNsdWRlcyIgJiYgXAorICAgICAgICB0ZXN0ICIkdXNlX2V4dHJhX2luY2x1ZGVzIiAhPSAiTk8iOyB0aGVuCisgIGFjX3NhdmVfaWZzPSRJRlMKKyAgSUZTPSc6JworICBmb3IgZGlyIGluICR1c2VfZXh0cmFfaW5jbHVkZXM7IGRvCisgICAgZXh0cmFfaW5jbHVkZXM9IiRleHRyYV9pbmNsdWRlcyAtSSRkaXIiCisgIGRvbmUKKyAgSUZTPSRhY19zYXZlX2lmcworICBDUFBGTEFHUz0iJENQUEZMQUdTICRleHRyYV9pbmNsdWRlcyIKK2ZpCisKK0FDX0FSR19XSVRIKGV4dHJhLWxpYnMsCitbICAtLXdpdGgtZXh0cmEtbGlicz1ESVIgICAgICAgIGFkZCBleHRyYSBsaWJyYXJ5IHBhdGhzXSwKKyAgdXNlX2V4dHJhX2xpYnM9JHdpdGh2YWwsCisgIHVzZV9leHRyYV9saWJzPU5PCispCitpZiB0ZXN0IC1uICIkdXNlX2V4dHJhX2xpYnMiICYmIFwKKyAgICAgICAgdGVzdCAiJHVzZV9leHRyYV9saWJzIiAhPSAiTk8iOyB0aGVuCisgICBhY19zYXZlX2lmcz0kSUZTCisgICBJRlM9JzonCisgICBmb3IgZGlyIGluICR1c2VfZXh0cmFfbGliczsgZG8KKyAgICAgZXh0cmFfbGlicmFyaWVzPSIkZXh0cmFfbGlicmFyaWVzIC1MJGRpciIKKyAgIGRvbmUKKyAgIElGUz0kYWNfc2F2ZV9pZnMKKyAgIExERkxBR1M9IiRMREZMQUdTICRleHRyYV9saWJyYXJpZXMiCitmaQorXQorKQorCitkbmwgQVhfUE9QVF9DT05TVCAtIGNoZWNrIHBvcHQgcHJvdG90eXBlCitBQ19ERUZVTihbQVhfUE9QVF9DT05TVF0sCitbCitBQ19NU0dfQ0hFQ0tJTkcoW3BvcHQgcHJvdG90eXBlXSkKK1NBVkVfQ1hYRkxBR1M9JENYWEZMQUdTCitDWFhGTEFHUz0iLVdlcnJvciAkQ1hYRkxBR1MiCitBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHBvcHQuaD5dLAorWworaW50IGM7IGNoYXIgKip2OworcG9wdEdldENvbnRleHQoMCwgYywgdiwgMCwgMCk7CitdLAorQUNfTVNHX1JFU1VMVChbdGFrZXMgY2hhciAqKl0pOywKK0FDX01TR19SRVNVTFQoW3Rha2VzIGNvbnN0IGNoYXIgKipdKTsgQUNfREVGSU5FKENPTlNUX1BPUFQsIDEsIFt3aGV0aGVyIHBvcHQgcHJvdG90eXBlIHRha2VzIGEgY29uc3QgY2hhciAqKl0pKQorQ1hYRkxBR1M9IiRTQVZFX0NYWEZMQUdTIgorXQorKQorCitkbmwgQVhfQ0hFQ0tfU1NUUkVBTSAtIGNoZWNrIGlmIGxvY2FsIHNzdHJlYW0gaXMgbmVlZGVkIHRvIGNvbXBpbGUgT0sKK0FDX0RFRlVOKFtBWF9DSEVDS19TU1RSRUFNXSwKK1sKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byB1c2UgaW5jbHVkZWQgc3N0cmVhbV0pCitBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHNzdHJlYW0+XSwgW10sIAorQUNfTVNHX1JFU1VMVChbbm9dKTssCitBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgT1BfQ1hYRkxBR1M9IiRPUF9DWFhGTEFHUyAtSVwke3RvcF9zcmNkaXJ9L2luY2x1ZGUiKQorXQorKQorCitkbmwgQVhfQ0hFQ0tfVFlQRURFRih0eXBlZGVmX25hbWUsIHR5cGUsIGFjdGlvbi1pZi10cnVlLCBhY3Rpb24taWYtZmFsc2UpCitkbmwgZXhlYyBhY3Rpb24taWYtdHJ1ZSBpZiB0eXBlZGVmX25hbWUgaXMgYSB0eXBlZGVmIHRvIHR5cGUgZWxzZSBleGVjIAorZG5sIGFjdGlvbi1pZi1mYWxzZQorZG5sIGN1cnJlbnRseSB3b3JrIG9ubHkgd2l0aCB0eXBlIHR5cGVkZWYnZWQgaW4gc3RkZGVmLmgKK0FDX0RFRlVOKFtBWF9DSEVDS19UWVBFREVGXSwgWworZG5sIEFDX0xBTkdfUFVTSChDKSBub3QgaW4gYXV0b2NvbmYgMi4xMworQUNfTEFOR19TQVZFCitBQ19MQU5HX0MKK1NBVkVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgorCitBQ19UUllfQ09NUElMRSgKKyAgWworICAjaW5jbHVkZSA8c3RkZGVmLmg+CisgIF0sCisgIFsKKyAgdHlwZWRlZiB2b2lkICgqZmN0MSkoJDEpOworICB0eXBlZGVmIHZvaWQgKCpmY3QyKSgkMik7CisgIGZjdDEgZjEgPSAwOworICBmY3QyIGYyID0gMDsKKyAgaWYgKGYxID09IGYyKSB7fQorICBdLAorWyQzXSxbJDRdKQorCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCitBQ19MQU5HX1JFU1RPUkUKK10pCisKKworZG5sIEFYX1RZUEVERUZFRF9OQU1FKHR5cGVkZWZfbmFtZSwgY2FuZGlkYXRlX2xpc3QsIHZhcl9uYW1lKQorZG5sIHNldCB2YXJfbmFtZSB0byB0aGUgdHlwZWRlZiBuYW1lIG9mICQxIHdoaWNoIG11c3QgYmUgaW4gY2FuZGl0YXRlX2xpc3QKK2RubCBlbHNlIHByb2R1Y2UgYSBmYXRhbCBlcnJvcgorQUNfREVGVU4oW0FYX1RZUEVERUZFRF9OQU1FXSwgWworCUFDX01TR19DSEVDS0lORyhbdHlwZSBvZiAkMV0pCisJZm9yIGYgaW4gJDI7IGRvCisJCUFYX0NIRUNLX1RZUEVERUYoJDEsICRmLCAkMz0iJGYiLCAkMz0iIikKKwkJaWYgdGVzdCAtbiAiJHskM30iOyB0aGVuCisJCQlicmVhaworCQlmaQorCWRvbmUKKwlpZiB0ZXN0IC1uICIkeyQzfSI7IHRoZW4KKwkJQUNfTVNHX1JFU1VMVChbJHskM31dKQorCWVsc2UKKwkJQUNfTVNHX0VSUk9SKFtub3QgZm91bmRdKQorCWZpCitdKQorCitkbmwgZmluZCBhIGJpbmFyeSBpbiB0aGUgcGF0aAorQUNfREVGVU4oW1FUX0ZJTkRfUEFUSF0sCitbCisJQUNfTVNHX0NIRUNLSU5HKFtmb3IgJDFdKQorCUFDX0NBQ0hFX1ZBTChxdF9jdl9wYXRoXyQxLAorCVsKKwkJcXRfY3ZfcGF0aF8kMT0iTk9ORSIKKwkJaWYgdGVzdCAtbiAiJCQyIjsgdGhlbgorCQkJcXRfY3ZfcGF0aF8kMT0iJCQyIjsKKwkJZWxzZQorCQkJZGlycz0iJDMiCisJCQlxdF9zYXZlX0lGUz0kSUZTCisJCQlJRlM9JzonCisJCQlmb3IgZGlyIGluICRQQVRIOyBkbworCQkJCWRpcnM9IiRkaXJzICRkaXIiCisJCQlkb25lCisJCQlJRlM9JHF0X3NhdmVfSUZTCisgCisJCQlmb3IgZGlyIGluICRkaXJzOyBkbworCQkJCWlmIHRlc3QgLXggIiRkaXIvJDEiOyB0aGVuCisJCQkJCWlmIHRlc3QgLW4gIiQ1IjsgdGhlbgorCQkJCQkJZXZhbHN0cj0iJGRpci8kMSAkNSAyPiYxICIKKwkJCQkJCWlmIGV2YWwgJGV2YWxzdHI7IHRoZW4KKwkJCQkJCQlxdF9jdl9wYXRoXyQxPSIkZGlyLyQxIgorCQkJCQkJCWJyZWFrCisJCQkJCQlmaQorCQkJCQllbHNlCisJCQkJCQlxdF9jdl9wYXRoXyQxPSIkZGlyLyQxIgorCQkJCQkJYnJlYWsKKwkJCQkJZmkKKwkJCQlmaQorCQkJZG9uZQorCQlmaQorCV0pCisgCisJaWYgdGVzdCAteiAiJHF0X2N2X3BhdGhfJDEiIHx8IHRlc3QgIiRxdF9jdl9wYXRoXyQxIiA9ICJOT05FIjsgdGhlbgorCQlBQ19NU0dfUkVTVUxUKG5vdCBmb3VuZCkKKwkJJDQKKwllbHNlCisJCUFDX01TR19SRVNVTFQoJHF0X2N2X3BhdGhfJDEpCisJCSQyPSRxdF9jdl9wYXRoXyQxCisJZmkKK10pCisKK2RubCBGaW5kIHRoZSB1aWMgY29tcGlsZXIgb24gdGhlIHBhdGggb3IgaW4gcXRfY3ZfZGlyCitBQ19ERUZVTihbUVRfRklORF9VSUNdLAorWworCVFUX0ZJTkRfUEFUSCh1aWMsIGFjX3VpYywgJHF0X2N2X2Rpci9iaW4pCisJaWYgdGVzdCAteiAiJGFjX3VpYyIgLWEgIiRGQVRBTCIgPSAxOyB0aGVuCisJCUFDX01TR19FUlJPUihbdWljIGJpbmFyeSBub3QgZm91bmQgaW4gXCRQQVRIIG9yICRxdF9jdl9kaXIvYmluICFdKQorCWZpCitdKQorIAorZG5sIEZpbmQgdGhlIHJpZ2h0IG1vYyBpbiBwYXRoL3F0X2N2X2RpcgorQUNfREVGVU4oW1FUX0ZJTkRfTU9DXSwKK1sKKwlRVF9GSU5EX1BBVEgobW9jMiwgYWNfbW9jMiwgJHF0X2N2X2Rpci9iaW4pCisJUVRfRklORF9QQVRIKG1vYywgYWNfbW9jMSwgJHF0X2N2X2Rpci9iaW4pCisKKwlpZiB0ZXN0IC1uICIkYWNfbW9jMSIgLWEgLW4gIiRhY19tb2MyIjsgdGhlbgorCQlkbmwgZm91bmQgYm90aC4gUHJlZmVyIFF0MydzIGlmIGl0IGV4aXN0cyBlbHNlIG1vYzIKKwkJJGFjX21vYzEgLXYgMj4mMSB8IGdyZXAgIlF0IDMiID4vZGV2L251bGwKKwkJaWYgdGVzdCAiJD8iID0gMDsgdGhlbgorCQkJYWNfbW9jPSRhY19tb2MxOworCQllbHNlCisJCQlhY19tb2M9JGFjX21vYzI7CisJCWZpCisJZWxzZQorCQlpZiB0ZXN0IC1uICIkYWNfbW9jMSI7IHRoZW4KKwkJCWFjX21vYz0kYWNfbW9jMTsKKwkJZWxzZQorCQkJYWNfbW9jPSRhY19tb2MyOworCQlmaQorCWZpCisKKwlpZiB0ZXN0IC16ICIkYWNfbW9jIiAgLWEgIiRGQVRBTCIgPSAxOyB0aGVuCisJCUFDX01TR19FUlJPUihbbW9jIGJpbmFyeSBub3QgZm91bmQgaW4gXCRQQVRIIG9yICRxdF9jdl9kaXIvYmluICFdKQorCWZpCitdKQorCitkbmwgY2hlY2sgYSBwYXJ0aWN1bGFyIGxpYm5hbWUKK0FDX0RFRlVOKFtRVF9UUllfTElOS10sCitbCisJU0FWRV9MSUJTPSIkTElCUyIKKwlMSUJTPSIkTElCUyAkMSIKKwlBQ19UUllfTElOSyhbCisJI2luY2x1ZGUgPHFnbG9iYWwuaD4KKwkjaW5jbHVkZSA8cXN0cmluZy5oPgorCQldLAorCVsKKwlRU3RyaW5nIHMoIm1hbmdsZV9mYWlsdXJlIik7CisJI2lmIChRVF9WRVJTSU9OIDwgMjIxKQorCWJyZWFrX21lXyhcXFwpOworCSNlbmRpZgorCV0sCisJcXRfY3ZfbGlibmFtZT0kMSwKKwkpCisJTElCUz0iJFNBVkVfTElCUyIKK10pCisgCitkbmwgY2hlY2sgd2UgY2FuIGRvIGEgY29tcGlsZQorQUNfREVGVU4oW1FUX0NIRUNLX0NPTVBJTEVdLAorWworCUFDX01TR19DSEVDS0lORyhbZm9yIFF0IGxpYnJhcnkgbmFtZV0pCisgCisJQUNfQ0FDSEVfVkFMKHF0X2N2X2xpYm5hbWUsCisJWworCQlBQ19MQU5HX0NQTFVTUExVUworCQlTQVZFX0NYWEZMQUdTPSRDWFhGTEFHUworCQlDWFhGTEFHUz0iJENYWEZMQUdTICRRVF9JTkNMVURFUyAkUVRfTERGTEFHUyIgCisKKwkJZm9yIGxpYm5hbWUgaW4gLWxxdC1tdCAtbHF0MyAtbHF0MiAtbHF0OworCQlkbworCQkJUVRfVFJZX0xJTksoJGxpYm5hbWUpCisJCQlpZiB0ZXN0IC1uICIkcXRfY3ZfbGlibmFtZSI7IHRoZW4KKwkJCQlicmVhazsKKwkJCWZpCisJCWRvbmUKKworCQlDWFhGTEFHUz0kU0FWRV9DWFhGTEFHUworCV0pCisKKwlpZiB0ZXN0IC16ICIkcXRfY3ZfbGlibmFtZSI7IHRoZW4KKwkJQUNfTVNHX1JFU1VMVChbZmFpbGVkXSkgCisJCWlmIHRlc3QgIiRGQVRBTCIgPSAxIDsgdGhlbgorCQkJQUNfTVNHX0VSUk9SKFtDYW5ub3QgY29tcGlsZSBhIHNpbXBsZSBRdCBleGVjdXRhYmxlLiBDaGVjayB5b3UgaGF2ZSB0aGUgcmlnaHQgXCRRVERJUiAhXSkKKwkJZmkKKwllbHNlCisJCUFDX01TR19SRVNVTFQoWyRxdF9jdl9saWJuYW1lXSkKKwlmaQorXSkKKworZG5sIGdldCBRdCB2ZXJzaW9uIHdlJ3JlIHVzaW5nCitBQ19ERUZVTihbUVRfR0VUX1ZFUlNJT05dLAorWworCUFDX0NBQ0hFX0NIRUNLKFtRdCB2ZXJzaW9uXSxseXhfY3ZfcXR2ZXJzaW9uLAorCVsKKwkJQUNfTEFOR19DUExVU1BMVVMKKwkJU0FWRV9DUFBGTEFHUz0kQ1BQRkxBR1MKKwkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkUVRfSU5DTFVERVMiCisKKwkJY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCisjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyNpbmNsdWRlIDxxZ2xvYmFsLmg+CisiJSUlIlFUX1ZFUlNJT05fU1RSIiUlJSIKK0VPRgorCQlseXhfY3ZfcXR2ZXJzaW9uPWAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8IFwKKwkJCWdyZXAgJ14iJSUlIicgIDI+L2Rldi9udWxsIHwgXAorCQkJc2VkIC1lICdzLyIlJSUiLy9nJyAtZSAncy8iLy9nJ2AKKwkJcm0gLWYgY29uZnRlc3QuJGFjX2V4dAorCQlDUFBGTEFHUz0kU0FWRV9DUFBGTEFHUworCV0pCisgCisJUVRfVkVSU0lPTj0kbHl4X2N2X3F0dmVyc2lvbgorCUFDX1NVQlNUKFFUX1ZFUlNJT04pCitdKQorIAorZG5sIHN0YXJ0IGhlcmUgCitBQ19ERUZVTihbUVRfRE9fSVRfQUxMXSwKK1sKKwlkbmwgUGxlYXNlIGxlYXZlIHRoaXMgYWxvbmUuIEkgdXNlIHRoaXMgZmlsZSBpbgorCWRubCBvcHJvZmlsZS4KKwlGQVRBTD0wCisKKwlBQ19BUkdfV0lUSChxdC1kaXIsIFsgIC0td2l0aC1xdC1kaXIgICAgICAgICAgIHdoZXJlIHRoZSByb290IG9mIFF0IGlzIGluc3RhbGxlZCBdLAorCQlbIHF0X2N2X2Rpcj1gZXZhbCBlY2hvICIkd2l0aHZhbCIvYCBdKQorCSAKKwlBQ19BUkdfV0lUSChxdC1pbmNsdWRlcywgWyAgLS13aXRoLXF0LWluY2x1ZGVzICAgICAgd2hlcmUgdGhlIFF0IGluY2x1ZGVzIGFyZS4gXSwKKwkJWyBxdF9jdl9pbmNsdWRlcz1gZXZhbCBlY2hvICIkd2l0aHZhbCJgIF0pCisgCisJQUNfQVJHX1dJVEgocXQtbGlicmFyaWVzLCBbICAtLXdpdGgtcXQtbGlicmFyaWVzICAgICB3aGVyZSB0aGUgUXQgbGlicmFyeSBpcyBpbnN0YWxsZWQuXSwKKwkJWyAgcXRfY3ZfbGlicmFyaWVzPWBldmFsIGVjaG8gIiR3aXRodmFsImAgXSkKKworCWRubCBwYXkgYXR0ZW50aW9uIHRvICRRVERJUiB1bmxlc3Mgb3ZlcnJpZGRlbgorCWlmIHRlc3QgLXogIiRxdF9jdl9kaXIiOyB0aGVuCisJCXF0X2N2X2Rpcj0kUVRESVIKKwlmaQorIAorCWRubCBkZXJpdmUgaW5jL2xpYiBpZiBuZWVkZWQKKwlpZiB0ZXN0IC1uICIkcXRfY3ZfZGlyIjsgdGhlbgorCQlpZiB0ZXN0IC16ICIkcXRfY3ZfaW5jbHVkZXMiOyB0aGVuCisJCQlxdF9jdl9pbmNsdWRlcz0kcXRfY3ZfZGlyL2luY2x1ZGUKKwkJZmkKKwkJaWYgdGVzdCAteiAiJHF0X2N2X2xpYnJhcmllcyI7IHRoZW4KKwkJCXF0X2N2X2xpYnJhcmllcz0kcXRfY3ZfZGlyL2xpYgorCQlmaQorCWZpCisKKwlkbmwgZmxhZ3MgZm9yIGNvbXBpbGF0aW9uCisJUVRfSU5DTFVERVM9CisJUVRfTERGTEFHUz0KKwlpZiB0ZXN0IC1uICIkcXRfY3ZfaW5jbHVkZXMiOyB0aGVuCisJCVFUX0lOQ0xVREVTPSItSSRxdF9jdl9pbmNsdWRlcyIKKwlmaQorCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJyYXJpZXMiOyB0aGVuCisJCVFUX0xERkxBR1M9Ii1MJHF0X2N2X2xpYnJhcmllcyIKKwlmaQorCUFDX1NVQlNUKFFUX0lOQ0xVREVTKQorCUFDX1NVQlNUKFFUX0xERkxBR1MpCisgCisJUVRfRklORF9NT0MKKwlNT0M9JGFjX21vYworCUFDX1NVQlNUKE1PQykKKwlRVF9GSU5EX1VJQworCVVJQz0kYWNfdWljCisJQUNfU1VCU1QoVUlDKQorCisJUVRfQ0hFQ0tfQ09NUElMRQorIAorCVFUX0xJQj0kcXRfY3ZfbGlibmFtZTsKKwlBQ19TVUJTVChRVF9MSUIpCisKKwlpZiB0ZXN0IC1uICIkcXRfY3ZfbGlibmFtZSI7IHRoZW4KKwkJUVRfR0VUX1ZFUlNJT04KKwlmaQorXSkKKworZG5sIEFYX0NYWEZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKK2RubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDWFggc3VwcG9ydCBpdC4KK0FDX0RFRlVOKFtBWF9DSEVDS19QUkVDT01QSUxFRF9IRUFERVJdLCBbCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDWFh9IHN1cHBvcnQgcHJlY29tcGlsZWQgaGVhZGVyXSkKK0FDX0xBTkdfU0FWRQorQUNfTEFOR19DUExVU1BMVVMKK1NBVkVfQ1hYRkxBR1M9JENYWEZMQUdTCitkbmwgd2UgY29uc2lkZXIgdGhhbiBpZiAtV2ludmFsaWQtcGNoIGlzIGFjY2VwdGVkIHBjaCB3aWxsIHdvcmtzIC4uLgorQ1hYRkxBR1M9LVdpbnZhbGlkLXBjaAorZG5sIGJ1dCB3ZSBkb24ndCB3YW50IC1XaW52YWxpZC1wY2ggZWxzZSBjb21waWxhdGlvbiB3aWxsIGZhaWwgZHVlIC1XZXJyb3IgYW5kCitkbmwgdGhlIGZhY3QgdGhhbiBzb21lIHBjaCB3aWxsIGJlIGludmFsaWQgZm9yIHRoZSBnaXZlbiBjb21waWxhdGlvbiBvcHRpb24KK0FDX1RSWV9DT01QSUxFKCxbO10sQUNfTVNHX1JFU1VMVChbeWVzXSk7ICQxPSIkeyQxfSAtaW5jbHVkZSBiaXRzL3N0ZGMrKy5oIiwgQUNfTVNHX1JFU1VMVChbbm9dKSkKK0NYWEZMQUdTPSRTQVZFX0NYWEZMQUdTCitBQ19MQU5HX1JFU1RPUkUKK10pCisKK2RubCBBWF9DSEVDS19ET0NCT09LCitBQ19ERUZVTihbQVhfQ0hFQ0tfRE9DQk9PS10sIFsKKyMgSXQncyBqdXN0IHJ1ZGUgdG8gZ28gb3ZlciB0aGUgbmV0IHRvIGJ1aWxkCitYU0xUUFJPQ19GTEFHUz0tLW5vbmV0CitET0NCT09LX1JPT1Q9CitpZiB0ZXN0ICEgLWYgL2V0Yy94bWwvY2F0YWxvZzsgdGhlbgorCWZvciBpIGluIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rL3N0eWxlc2hlZXQveHNsL253YWxzaCAvdXNyL3NoYXJlL3NnbWwvZG9jYm9vay94c2wtc3R5bGVzaGVldHMvOworCWRvCisJCWlmIHRlc3QgLWQgIiRpIjsgdGhlbgorCQkJRE9DQk9PS19ST09UPSRpCisJCWZpCisJZG9uZQorCisJIyBMYXN0IHJlc29ydCAtIHRyeSBuZXQKKwlpZiB0ZXN0IC16ICIkRE9DQk9PS19ST09UIjsgdGhlbgorCQlYU0xUUFJPQ19GTEFHUz0KKwlmaQorZWxzZQorCVhNTF9DQVRBTE9HPS9ldGMveG1sL2NhdGFsb2cKKwlDQVRfRU5UUllfU1RBUlQ9JzwhLS0nCisJQ0FUX0VOVFJZX0VORD0nLS0+JworZmkKKworQUNfQ0hFQ0tfUFJPRyhYU0xUUFJPQyx4c2x0cHJvYyx4c2x0cHJvYywpCitYU0xUUFJPQ19XT1JLUz1ubworaWYgdGVzdCAtbiAiJFhTTFRQUk9DIjsgdGhlbgorCUFDX01TR19DSEVDS0lORyhbd2hldGhlciB4c2x0cHJvYyB3b3Jrc10pCisKKwlpZiB0ZXN0IC1uICIkWE1MX0NBVEFMT0ciOyB0aGVuCisJCURCX0ZJTEU9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC9jdXJyZW50L3hodG1sL2RvY2Jvb2sueHNsIgorCWVsc2UKKwkJREJfRklMRT0iJERPQ0JPT0tfUk9PVC9kb2Nib29rLnhzbCIKKwlmaQorCisJJFhTTFRQUk9DICRYU0xUUFJPQ19GTEFHUyAkREJfRklMRSA+L2Rldi9udWxsIDI+JjEgPDwgRU5ECis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSdJU08tODg1OS0xJz8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIj4KKzxib29rIGlkPSJ0ZXN0Ij4KKzwvYm9vaz4KK0VORAorCWlmIHRlc3QgIiQ/IiA9IDA7IHRoZW4KKwkJWFNMVFBST0NfV09SS1M9eWVzCisJZmkKKwlBQ19NU0dfUkVTVUxUKCRYU0xUUFJPQ19XT1JLUykKK2ZpCitBTV9DT05ESVRJT05BTChoYXZlX3hzbHRwcm9jLCB0ZXN0ICIkWFNMVFBST0NfV09SS1MiID0gInllcyIpCisKK0FDX1NVQlNUKFhNTF9DQVRBTE9HKQorQUNfU1VCU1QoWFNMVFBST0NfRkxBR1MpCitBQ19TVUJTVChET0NCT09LX1JPT1QpCitBQ19TVUJTVChDQVRfRU5UUllfU1RBUlQpCitBQ19TVUJTVChDQVRfRU5UUllfRU5EKQorXSkKKworZG5sIEFYX0NGTEFHU19PUFRJT05TKHZhci1uYW1lLCBvcHRpb24pCitkbmwgYWRkIG9wdGlvbiB0byB2YXItbmFtZSBpZiAkQ0Mgc3VwcG9ydCBpdC4KK0FDX0RFRlVOKFtBWF9DRkxBR1NfT1BUSU9OXSwgWworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyICR7Q0N9ICQyIGlzIHVuZGVyc3Rvb2RdKQorQUNfTEFOR19TQVZFCitBQ19MQU5HX0MKK1NBVkVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0kMgorQUNfVFJZX0NPTVBJTEUoLFs7XSxBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgJDE9IiR7JDF9ICQyIixBQ19NU0dfUkVTVUxUKFtub10pKQorQ0ZMQUdTPSRTQVZFX0NGTEFHUworQUNfTEFOR19SRVNUT1JFCitdKQorCisKK2RubCBBWF9DWFhGTEFHU19PUFRJT05TKHZhci1uYW1lLCBvcHRpb24pCitkbmwgYWRkIG9wdGlvbiB0byB2YXItbmFtZSBpZiAkQ1hYIHN1cHBvcnQgaXQuCitBQ19ERUZVTihbQVhfQ1hYRkxBR1NfT1BUSU9OXSwgWworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyICR7Q1hYfSAkMiBpcyB1bmRlcnN0b29kXSkKK0FDX0xBTkdfU0FWRQorQUNfTEFOR19DUExVU1BMVVMKK1NBVkVfQ1hYRkxBR1M9JENYWEZMQUdTCitDWFhGTEFHUz0kMgorQUNfVFJZX0NPTVBJTEUoLFs7XSxBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgJDE9IiR7JDF9ICQyIixBQ19NU0dfUkVTVUxUKFtub10pKQorQ1hYRkxBR1M9JFNBVkVfQ1hYRkxBR1MKK0FDX0xBTkdfUkVTVE9SRQorXSkKKworZG5sIEFYX0NPUFlfSUZfQ0hBTkdFKHNvdXJjZSwgZGVzdCkKK2RubCBjb3B5IHNvdXJjZSB0byBkZXN0IGlmIHRoZXkgZG9uJ3QgY29tcGFyZSBlcXVhbGx5IG9yIGlmIGRlc3QgZG9lc24ndCBleGlzdAorQUNfREVGVU4oW0FYX0NPUFlfSUZfQ0hBTkdFXSwgWworaWYgdGVzdCAtciAkMjsgdGhlbgorCWlmIGNtcCAkMSAkMiA+IC9kZXYvbnVsbDsgdGhlbgorCQllY2hvICQyIGlzIHVuY2hhbmdlZAorCWVsc2UKKwkJY3AgLWYgJDEgJDIKKwlmaQorZWxzZQorCWNwIC1mICQxICQyCitmaQorXSkKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYXV0b21ha2UtZm9yZWlnbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWJiNmM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorb3Byb2ZpbGUgZG9lc24ndCB3YW50IEdOVS1sZXZlbHMgb2YgYXV0b21ha2Ugc3RyaWN0bmVzcyBzbyB0ZWxsIGl0IHRvIGJlICJmb3JlaWduIi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA1NzQwNTg1Li5jZjZjMzE2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNiArMTYgQEAgQUNfQ09ORklHX1NSQ0RJUihbbGlib3Avb3BfY29uZmlnLmhdKQorLUFNX0lOSVRfQVVUT01BS0UKKytBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFkYjQwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0ZpeCBnbGliYy1pc21zIHNvIHRoYXQgb3Byb2ZpbGUgYnVpbGRzIHdpdGggbXVzbC4KKworUGF0Y2ggdGFrZW4gZnJvbSBvcGVud3J0IChodHRwczovL2dpdGh1Yi5jb20vb3BlbndydC1taXJyb3Ivb3BlbndydC9ibG9iL21hc3Rlci9wYWNrYWdlL2RldmVsL29wcm9maWxlL3BhdGNoZXMvMTAwLW11c2wucGF0Y2gpCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tIGEvcGVfcHJvZmlsaW5nL29wZXJmLmNwcAorKysrIGIvcGVfcHJvZmlsaW5nL29wZXJmLmNwcAorQEAgLTg1NywxMSArODU3LDE0IEBAIHN0YXRpYyBpbnQgX19kZWxldGVfb2xkX3ByZXZpb3VzX3NhbXBsZV8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZmxhZyAgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgRlRXICpmdHdidWYgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCisgeworKwlpbnQgZXJyOworKworIAlpZiAocmVtb3ZlKGZwYXRoKSkgeworKwkJZXJyID0gZXJybm87CisgCQlwZXJyb3IoInNhbXBsZSBkYXRhIHJlbW92YWwgZXJyb3IiKTsKKy0JCXJldHVybiBGVFdfU1RPUDsKKysJCXJldHVybiBlcnI7CisgCX0gZWxzZSB7CistCQlyZXR1cm4gRlRXX0NPTlRJTlVFOworKwkJcmV0dXJuIDA7CisgCX0KKyB9CisgCitAQCAtODk2LDcgKzg5OSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfc2FtcGxlX2RhdGEodm9pZCkKKyAJCXJldHVybjsKKyAKKyAJaWYgKCFvcGVyZl9vcHRpb25zOjphcHBlbmQpIHsKKy0gICAgICAgICAgICAgICAgaW50IGZsYWdzID0gRlRXX0RFUFRIIHwgRlRXX0FDVElPTlJFVFZBTDsKKysgICAgICAgICAgICAgICAgaW50IGZsYWdzID0gRlRXX0RFUFRIOworIAkJZXJybm8gPSAwOworIAkJaWYgKG5mdHcocHJldmlvdXNfc2FtcGxlZGlyLmNfc3RyKCksIF9fZGVsZXRlX29sZF9wcmV2aW91c19zYW1wbGVfZGF0YSwgMzIsIGZsYWdzKSAhPTAgJiYKKyAJCQkJZXJybm8gIT0gRU5PRU5UKSB7CistLS0gYS9saWJvcC9vcF9ldmVudHMuYworKysrIGIvbGlib3Avb3BfZXZlbnRzLmMKK0BAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfaGV4KGNoYXIgY29uc3QgKiBzdHIpCisgc3RhdGljIHU2NCBwYXJzZV9sb25nX2hleChjaGFyIGNvbnN0ICogc3RyKQorIHsKKyAJdTY0IHZhbHVlOworLQlpZiAoc3NjYW5mKHN0ciwgIiVMeCIsICZ2YWx1ZSkgIT0gMSkKKysJaWYgKHNzY2FuZihzdHIsICIweCVsbHgiLCAmdmFsdWUpICE9IDEpCisgCQlwYXJzZV9lcnJvcigiZXhwZWN0ZWQgbG9uZyBoZXhhZGVjaW1hbCB2YWx1ZSIpOworIAorIAlmZmx1c2goc3RkZXJyKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVmYTk1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsOTggQEAKK1ByZXZlbnQgcnVubmluZyBjaGVjayB0ZXN0cyBvbiBob3N0IGlmIGNyb3NzIGNvbXBpbGluZworCitUaGlzIHBhdGNoIGVuYWJsZXMgcnVubmluZyB0aGUgJ21ha2UgY2hlY2snIHRlc3RzIG9uIHRoZSB0YXJnZXQKK2luIGEgY3Jvc3MtY29tcGlsZWQgZW52aXJvbm1lbnQuIElmIG5vdCBjcm9zcy1jb21waWxpbmcsIHRoZW4gJ21ha2UKKyBjaGVjaycgYnVpbGRzIGFuZCBleGVjdXRlcyB0aGUgdGVzdHM7IG5vIGNoYW5nZSBmcm9tIHRoaXMgcGF0Y2guCitJbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudCwgdGhlIG1ha2UgdmFyaWFibGUgQ1JPU1NfQ09NUElMRSBpcworc2V0IHdoaWNoIGJ5cGFzc2VzIGFzc2lnaW5nIHRlc3RzIHRvIHRoZSBtYWtla2ZpbGUgdmFyaWFibGUgVEVTVFMuCitTaW5jZSBURVNUUyBpcyBlbXB0eSwgdGhlICdtYWtlIGNoZWNrJyBwcm9jZXNzIG5ldmVyIHRyaWVzIHRvIHJ1biB0aGUKK3Rlc3RzIG9uIHRoZSBob3N0cy4gIE9uIHRoZSB0YXJnZXQsIHRoZSB0ZXN0cyBtdXN0IGJlIHJ1biBtYW51YWxseS4KKworQWxzbywgaW4gdGhlIGxpYnV0aWwrKyB0ZXN0cywgYSBtYWtlZmlsZSB2YXJpYWJsZSBTUkNESVIgaXMgcGFzc2VkIGludG8KK3RoZSBjb21waWxhdGlvbiBwaGFzZSwgcG9pbnRpbmcgdG8gdGhlIHJ1bnRpbWUgbG9jYXRpb24gb2YgdGhlIHRlc3QKKydmaWxlLW1hbmlwLXRlc3RzJy4gIFRoZSBtZWNoYW5pc20gdXNlZCBmb3IgYSBob3N0IHRlc3QsIGJhc2VkIG9uCisndG9wZGlyJyBkb2Vzbid0IHdvcmsuICBJbnN0ZWFkLCBpZiBDUk9TU19DT01QSUxFIGlzIHNldCwgdGhlCittYWtlZmlsZSB0YWtlcyB0aGUgcGF0aCBvZiBTUkNESVIgZnJvbSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYW5kIG5vdAorZnJvbSBhbiBleHByZXNzaW9uIGJhc2VkIG9uIHRoZSBob3N0IHBhdGggJ3RvcGRpcicuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBEYXZlIExlcm5lciA8ZGF2ZS5sZXJuZXJAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNDFlY2U2NC4uY2U1YTE2ZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzkyLDYgKzM5Miw3IEBAIEFDX0FSR19FTkFCTEUoYWNjb3VudC1jaGVjaywKKyAJZW5hYmxlX2FjY291bnRfY2hlY2s9JGVuYWJsZXZhbCwgZW5hYmxlX2FjY291bnRfY2hlY2s9eWVzKQorIAorIEFNX0NPTkRJVElPTkFMKENIRUNLX0FDQ09VTlQsIHRlc3QgIngkZW5hYmxlX2FjY291bnRfY2hlY2siID0gInh5ZXMiKQorK0FNX0NPTkRJVElPTkFMKENST1NTX0NPTVBJTEUsIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9ICJ4eWVzIikKKyAKKyBBQ19TVUJTVChPUF9DRkxBR1MpCisgQUNfU1VCU1QoT1BfQ1hYRkxBR1MpCitkaWZmIC0tZ2l0IGEvbGliZGIvdGVzdHMvTWFrZWZpbGUuYW0gYi9saWJkYi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggOGE2OTAwMy4uZDgyMDA5MCAxMDA2NDQKKy0tLSBhL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9saWJkYi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTEzLDQgKzEzLDYgQEAgY2hlY2tfUFJPR1JBTVMgPSBkYl90ZXN0CisgZGJfdGVzdF9TT1VSQ0VTID0gZGJfdGVzdC5jCisgZGJfdGVzdF9MREFERCA9IC4uL2xpYm9kYi5hIC4uLy4uL2xpYnV0aWwvbGlidXRpbC5hCisgCisraWYgISBDUk9TU19DT01QSUxFCisgVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQorK2VuZGlmCitkaWZmIC0tZ2l0IGEvbGlib3AvdGVzdHMvTWFrZWZpbGUuYW0gYi9saWJvcC90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggOGE3OWViNS4uNmQ0MTdjNCAxMDA2NDQKKy0tLSBhL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9saWJvcC90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTMzLDQgKzMzLDYgQEAgbG9hZF9ldmVudHNfZmlsZXNfdGVzdHNfTERBREQgPSAke0NPTU1PTl9MSUJTfQorIG1hbmdsZV90ZXN0c19TT1VSQ0VTID0gbWFuZ2xlX3Rlc3RzLmMKKyBtYW5nbGVfdGVzdHNfTERBREQgPSAke0NPTU1PTl9MSUJTfQorIAorK2lmICEgQ1JPU1NfQ09NUElMRQorIFRFU1RTID0gJHtjaGVja19QUk9HUkFNU30gdXRmOF9jaGVja2VyLnNoCisrZW5kaWYKK2RpZmYgLS1naXQgYS9saWJyZWdleC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYnJlZ2V4L3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA2ZjE5ODM4Li4xZDE3NmY5IDEwMDY0NAorLS0tIGEvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL2xpYnJlZ2V4L3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTgsNCArMTgsNiBAQCBqYXZhX3Rlc3RfTERBREQgPSBcCisgCisgRVhUUkFfRElTVCA9IG1hbmdsZWQtbmFtZS5pbgorIAorK2lmICEgQ1JPU1NfQ09NUElMRQorIFRFU1RTID0gJHtjaGVja19QUk9HUkFNU30KKytlbmRpZgorZGlmZiAtLWdpdCBhL2xpYnV0aWwrKy90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYnV0aWwrKy90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggNTFhZjAzMS4uYTAxZWEyZCAxMDA2NDQKKy0tLSBhL2xpYnV0aWwrKy90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDkgQEAKKyAKKyBSRUFMUEFUSD0gcmVhZGxpbmsgLWYKKyAKKytpZiAhIENST1NTX0NPTVBJTEUKKyBTUkNESVIgOj0gJChzaGVsbCAkKFJFQUxQQVRIKSAkKHRvcGRpcikvbGlidXRpbCsrL3Rlc3RzLyApCisrZW5kaWYKKyAKKyBBTV9DUFBGTEFHUyA9IFwKKyAJLUkgJHt0b3Bfc3JjZGlyfS9saWJ1dGlsKysgLUQgU1JDRElSPSJcIiQoU1JDRElSKS9cIiIgQE9QX0NQUEZMQUdTQAorQEAgLTQ2LDQgKzQ4LDYgQEAgY2FjaGVkX3ZhbHVlX3Rlc3RzX0xEQUREID0gJHtDT01NT05fTElCU30KKyB1dGlsaXR5X3Rlc3RzX1NPVVJDRVMgPSB1dGlsaXR5X3Rlc3RzLmNwcAorIHV0aWxpdHlfdGVzdHNfTERBREQgPSAke0NPTU1PTl9MSUJTfQorIAorK2lmICEgQ1JPU1NfQ09NUElMRQorIFRFU1RTID0gJHtjaGVja19QUk9HUkFNU30KKytlbmRpZgorZGlmZiAtLWdpdCBhL2xpYnV0aWwvdGVzdHMvTWFrZWZpbGUuYW0gYi9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCBkZmNkNmVjLi5lODgzMWI1IDEwMDY0NAorLS0tIGEvbGlidXRpbC90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvbGlidXRpbC90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTEyLDQgKzEyLDYgQEAgZmlsZV90ZXN0c19MREFERCA9IC4uL2xpYnV0aWwuYQorIHN0cmluZ190ZXN0c19TT1VSQ0VTID0gc3RyaW5nX3Rlc3RzLmMKKyBzdHJpbmdfdGVzdHNfTERBREQgPSAuLi9saWJ1dGlsLmEKKyAKKytpZiAhIENST1NTX0NPTVBJTEUKKyBURVNUUyA9ICR7Y2hlY2tfUFJPR1JBTVN9CisrZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9yb290LWhvbWUtZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3Jvb3QtaG9tZS1kaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VhZjZhNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9yb290LWhvbWUtZGlyLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK29wcm9maWxlOiBEZXRlcm1pbmUgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnkgZHluYW1pY2FsbHkKKworVGhpcyBjb21taXQgZGV0ZWN0cyB0aGUgcm9vdCBob21lIGRpcmVjdG9yeSBkeW5hbWljYWxseSB3aXRoIGNoYW5nZXMgdG8KK3RoZSBvcHJvZmlsZSBndWkgYXBwIHNvdXJjZS4KKworVGhlIGNvbW1pdCByZXBsYWNlcyBhbiBlYXJsaWVyIGZpeCB0aGF0IGRldGVjdGVkIGFuZCBhZGp1c3RlZCBhCisnbm9uLXN0YW5kYXJkJyByb290IGhvbWUgZGlyZWN0b3J5IGF0IGJ1aWxkIHRpbWUuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMKK3BhdGNoIGlzIHRoYXQgdGhlIG9wcm9maWxlIHRvb2xzIGFyZSBhZGp1c3RlZCB0byB0aGUgY3VycmVudCBydW4tdGltZQorcGF0aCB0byB+cm9vdCwgbm90IHRoZSBidWlsZCB0aW1lIHBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IERhdmUgTGVybmVyIDxkYXZlLmxlcm5lckB3aW5kcml2ZXIuY29tPgorCitJbmRleDogb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLmh0bWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcHJvZmlsZS0xLjAuMC5vcmlnL2RvYy9vcHJvZmlsZS5odG1sCTIwMTQtMTEtMDMgMTc6NTU6MzEuNTExMDM0ODU3ICswMDAwCisrKysgb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLmh0bWwJMjAxNC0xMS0wMyAxNzo1NzoyNi40MTUwMzc5ODggKzAwMDAKK0BAIC0xNTYzLDggKzE1NjMsOCBAQAorIAkJPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bXVzdDwvZW0+PC9zcGFuPiBzdG9wIGl0IGluIGEgY29udHJvbGxlZCBtYW5uZXIgaW4gb3JkZXIgdG8gcHJvY2VzcworIAkJdGhlIHByb2ZpbGUgZGF0YSBpdCBoYXMgY29sbGVjdGVkLiAgVXNlIDxjb2RlIGNsYXNzPSJjb2RlIj5raWxsIC1TSUdJTlQgJmx0O29wZXJmLVBJRCZndDs8L2NvZGU+CisgCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4KKy0JCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcm9vdDwvY29kZT4gb3IgYSBzdWJkaXJlY3RvcnkKKy0JCW9mIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Jvb3Q8L2NvZGU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KKysJCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5+cm9vdDwvY29kZT4gb3IgYSBzdWJkaXJlY3RvcnkKKysJCW9mIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+fnJvb3Q8L2NvZGU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KKyAJCTwvcD4KKyAgICAgICAgICAgICAgIDwvZGQ+CisgICAgICAgICAgICAgICA8ZHQ+CitJbmRleDogb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLnhtbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wcm9maWxlLTEuMC4wLm9yaWcvZG9jL29wcm9maWxlLnhtbAkyMDE0LTExLTAzIDE3OjU1OjMxLjUxNTAzNDg1NyArMDAwMAorKysrIG9wcm9maWxlLTEuMC4wL2RvYy9vcHJvZmlsZS54bWwJMjAxNC0xMS0wMyAxNzo1ODowMy43MTkwMzkwMDUgKzAwMDAKK0BAIC02NTQsOCArNjU0LDggQEAKKyAJCTxlbXBoYXNpcz5tdXN0PC9lbXBoYXNpcz4gc3RvcCBpdCBpbiBhIGNvbnRyb2xsZWQgbWFubmVyIGluIG9yZGVyIHRvIHByb2Nlc3MKKyAJCXRoZSBwcm9maWxlIGRhdGEgaXQgaGFzIGNvbGxlY3RlZC4gIFVzZSA8Y29kZT5raWxsIC1TSUdJTlQgJmx0O29wZXJmLVBJRCZndDs8L2NvZGU+CisgCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8Y29tbWFuZD5vcGVyZjwvY29tbWFuZD4KKy0JCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGZpbGVuYW1lPi9yb290PC9maWxlbmFtZT4gb3IgYSBzdWJkaXJlY3RvcnkKKy0JCW9mIDxmaWxlbmFtZT4vcm9vdDwvZmlsZW5hbWU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KKysJCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGZpbGVuYW1lPn5yb290PC9maWxlbmFtZT4gb3IgYSBzdWJkaXJlY3RvcnkKKysJCW9mIDxmaWxlbmFtZT5+cm9vdDwvZmlsZW5hbWU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KKyAJCTwvcGFyYT48L2xpc3RpdGVtPgorIAk8L3Zhcmxpc3RlbnRyeT4KKyAJPHZhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MTRiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMTkgQEAKKyMhL2Jpbi9zaAorCitzYXZlZF9kaXI9JFBXRAorZm9yIGRpciBpbiAqL3Rlc3RzIDsgZG8KKwljZCAkZGlyCisJZm9yIGF0ZXN0IGluICogOyBkbworCQlpZiBbIFwoIC14ICRhdGVzdCBcKSAtYSBcKCAtZiAkYXRlc3QgXCkgXSA7IHRoZW4KKwkJCS4vJGF0ZXN0ID4gJHthdGVzdH0uc3Rkb3V0IDI+ICR7YXRlc3R9LnN0ZGVycgorCQkJaWYgWyAkPyA9IDAgXSA7IHRoZW4KKwkJCQllY2hvICJQQVNTOiAkZGlyICRhdGVzdCIKKwkJCQlybSAke2F0ZXN0fS5zdGRvdXQgJHthdGVzdH0uc3RkZXJyCisJCQllbHNlCisJCQkJZWNobyAiRkFJTDogJHtkaXJ9LyR7YXRlc3R9IgorCQkJZmkKKwkJZmkKKwlkb25lCisJY2QgJHNhdmVkX2RpcgorZG9uZQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGVfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGVfMS4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJhOTRhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIG9wcm9maWxlLmluYworCitERVBFTkRTICs9ICJ2aXJ0dWFsL2tlcm5lbCIKK0RFUEVORFNfYXBwZW5kX3Bvd2VycGM2NCA9ICIgbGlicGZtNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjI0OGM0YzA2OWY5NDc2ZjQyN2ZhNzE5NTU2M2Y5ODY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmNzU5YTZkZTFhNjAzM2Q1ZGZjOTNiZGExMjlhOWYyZTEyOGFlY2M0MjM4Y2M2NTdmZWIwODAxZDFiMDM2NmMiCisKK1MgPSAiJHtXT1JLRElSfS9vcHJvZmlsZS0ke1BWfSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvY2Rya2l0XzEuMS4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2NkcmtpdF8xLjEuMTEuYmIKaW5kZXggZjBlZmM1MS4uYzBmMjIwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvY2Rya2l0XzEuMS4xMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9jZHJraXRfMS4xLjExLmJiCkBAIC04LDYgKzgsOCBAQAogU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vYy8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZG8tbm90LWNyZWF0ZS1hLXJ1bi10ZXN0LXRvLWRldGVybWluZS1vcmRlci1vZi1iaXRmaS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbmlzb2ltYWdlLUZpeC1mcHJpbnRmLWZvcm1hdC1lcnJvcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kZWZpbmUtX19USFJPVy10by1hdm9pZC1idWlsZC1pc3N1ZS13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdXNlLXJjbWQtb24tYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImVmZTA4ZTJmM2NhNDc4NDg2MDM3YjA1M2FjZDUxMmU5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQxYzAzMDc1NmVjYzE4MmRlZmVlOWZlODg1NjM4YzE3ODVkMzVhMmMyYTI5N2I0NjA0YzBlMGRjYzc4ZTQ3ZGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9maWxlcy8wMDAxLWRlZmluZS1fX1RIUk9XLXRvLWF2b2lkLWJ1aWxkLWlzc3VlLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2ZpbGVzLzAwMDEtZGVmaW5lLV9fVEhST1ctdG8tYXZvaWQtYnVpbGQtaXNzdWUtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYmViMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9maWxlcy8wMDAxLWRlZmluZS1fX1RIUk9XLXRvLWF2b2lkLWJ1aWxkLWlzc3VlLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIDdjMzAzNjYwOTQ5NDI5NmY3YzI5NDEzYmYzYWNiYTgyOWM4MWY2MmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb21haW4gTmFvdXIgPHJvbWFpbi5uYW91ckBvcGVud2lkZS5mcj4KK0RhdGU6IFNhdCwgOCBBdWcgMjAxNSAyMjo1ODo1NyArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gZGVmaW5lIF9fVEhST1cgdG8gYXZvaWQgYnVpbGQgaXNzdWUgd2l0aCBtdXNsCisKK0ZpeGVzOgoraHR0cDovL2F1dG9idWlsZC5idWlsZHJvb3QubmV0L3Jlc3VsdHMvZDI3L2QyNzgxZTcwYjA0YTIwN2UyZTkzOTdkODg4MDMyMjk0YzcyODUwMzQvYnVpbGQtZW5kLmxvZworCitTaWduZWQtb2ZmLWJ5OiBSb21haW4gTmFvdXIgPHJvbWFpbi5uYW91ckBvcGVud2lkZS5mcj4KKy0tLQorIGdlbmlzb2ltYWdlL3NoYTI1Ni5oIHwgNCArKysrCisgZ2VuaXNvaW1hZ2Uvc2hhNTEyLmggfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2VuaXNvaW1hZ2Uvc2hhMjU2LmggYi9nZW5pc29pbWFnZS9zaGEyNTYuaAoraW5kZXggZTdmNGNiOS4uYmNhZTdlZiAxMDA2NDQKKy0tLSBhL2dlbmlzb2ltYWdlL3NoYTI1Ni5oCisrKysgYi9nZW5pc29pbWFnZS9zaGEyNTYuaAorQEAgLTI5LDYgKzI5LDEwIEBACisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorIAorKy8qIGRlZmluZSBfX1RIUk9XIHRvIGF2b2lkIGJ1aWxkIGlzc3VlIHdoZW4gaXQncyBub3QgYXZhaWxhYmxlIGZyb20gdGhlIGxpYmMgKi8KKysjaWZuZGVmIF9fVEhST1cKKysjIGRlZmluZSBfX1RIUk9XCisrI2VuZGlmCisgCisgLyogU3RydWN0dXJlIHRvIHNhdmUgc3RhdGUgb2YgY29tcHV0YXRpb24gYmV0d2VlbiB0aGUgc2luZ2xlIHN0ZXBzLiAgKi8KKyBzdHJ1Y3Qgc2hhMjU2X2N0eAorZGlmZiAtLWdpdCBhL2dlbmlzb2ltYWdlL3NoYTUxMi5oIGIvZ2VuaXNvaW1hZ2Uvc2hhNTEyLmgKK2luZGV4IDcyOTgzNTUuLjhjZWU4YjAgMTAwNjQ0CistLS0gYS9nZW5pc29pbWFnZS9zaGE1MTIuaAorKysrIGIvZ2VuaXNvaW1hZ2Uvc2hhNTEyLmgKK0BAIC0yOSw2ICsyOSwxMCBAQAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAKKysvKiBkZWZpbmUgX19USFJPVyB0byBhdm9pZCBidWlsZCBpc3N1ZSB3aGVuIGl0J3Mgbm90IGF2YWlsYWJsZSBmcm9tIHRoZSBsaWJjICovCisrI2lmbmRlZiBfX1RIUk9XCisrIyBkZWZpbmUgX19USFJPVworKyNlbmRpZgorIAorIC8qIFN0cnVjdHVyZSB0byBzYXZlIHN0YXRlIG9mIGNvbXB1dGF0aW9uIGJldHdlZW4gdGhlIHNpbmdsZSBzdGVwcy4gICovCisgc3RydWN0IHNoYTUxMl9jdHgKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2ZpbGVzLzAwMDItRG8tbm90LXVzZS1yY21kLW9uLWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2ZpbGVzLzAwMDItRG8tbm90LXVzZS1yY21kLW9uLWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDdhMjFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvZmlsZXMvMDAwMi1Eby1ub3QtdXNlLXJjbWQtb24tYnVpbGQtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNTEwODM4YjJjOTZhOWIwOTdiM2VlMjY5NGNiYTFjMzYyM2IwYmFjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIFNlcCAyMDE3IDIyOjM4OjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBEbyBub3QgdXNlIHJjbWQgb24gYnVpbGQgd2l0aCBtdXNsCisKK2NkcmtpdCB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlcyBjb2RlIHVzaW5nIHJjbWQoMyksIHdoaWNoIGlzbid0IGF2YWlsYWJsZQorb24gbXVzbC4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGluY2x1ZGUveGNvbmZpZy5oLmluIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3hjb25maWcuaC5pbiBiL2luY2x1ZGUveGNvbmZpZy5oLmluCitpbmRleCA0NzZjMDBiLi42YjRiMjk4IDEwMDY0NAorLS0tIGEvaW5jbHVkZS94Y29uZmlnLmguaW4KKysrKyBiL2luY2x1ZGUveGNvbmZpZy5oLmluCitAQCAtMTg2LDggKzE4Niw5IEBACisgICoJSW5zdGVhZCB1c2UgdGhlIHRlc3RzIEFDX1NNQUxMX0ZTRUVLTy9BQ19TTUFMTC9TVEVMTE8gYW5kIG1ha2Ugc3VyZQorICAqCXRoZXkgYXJlIHBsYWNlZCBiZWZvcmUgdGhlIGxhcmdlIGZpbGUgdGVzdHMuCisgICovCistCisrI2lmZGVmIF9fR0xJQkNfXworICNkZWZpbmUgSEFWRV9SQ01EIDEJCS8qIHJjbWQoKSBpcyBwcmVzZW50IGluIGxpYmMvbGlic29ja2V0ICovCisrI2VuZGlmCisgI2RlZmluZSBIQVZFX1NPQ0tFVCAxCQkvKiBzb2NrZXQoKSBpcyBwcmVzZW50IGluIGxpYmMvbGlic29ja2V0ICovCisgI2RlZmluZSBIQVZFX1NPQ0tFVFBBSVIgMQkJLyogc29ja2V0cGFpcigpIGlzIHByZXNlbnQgaW4gbGliYy9saWJzb2NrZXQgKi8KKyAjZGVmaW5lIEhBVkVfR0VUU0VSVkJZTkFNRSAxCS8qIGdldHNlcnZieW5hbWUoKSBpcyBwcmVzZW50IGluIGxpYmMvbGlic29ja2V0ICovCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMS1hdWRpb19hbHNhMDkuYy1hbHNhLWRyYWluLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAxLWF1ZGlvX2Fsc2EwOS5jLWFsc2EtZHJhaW4tZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjN2YzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMS1hdWRpb19hbHNhMDkuYy1hbHNhLWRyYWluLWZpeC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGE4NjBmZTA3OTZjNDNlMzVlYWM5NzgzMTQwZmNiNTYzY2FiOWY1NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDIzOjA5OjUxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBhdWRpb19hbHNhMDkuYzogYWxzYSBkcmFpbiBmaXgKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGF1ZGlvX2Fsc2EwOS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYXVkaW9fYWxzYTA5LmMgYi9hdWRpb19hbHNhMDkuYworaW5kZXggNTM0ZTNkYi4uZDk0NTBlNiAxMDA2NDQKKy0tLSBhL2F1ZGlvX2Fsc2EwOS5jCisrKysgYi9hdWRpb19hbHNhMDkuYworQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIGVzZF9hdWRpb19mbHVzaCh2b2lkKQorIAl9CisgCisgCWlmIChhbHNhX3BsYXliYWNrX2hhbmRsZSAhPSBOVUxMKQorLQkJc25kX3BjbV9kcmFpbiggYWxzYV9wbGF5YmFja19oYW5kbGUgKTsKKysJCXNuZF9wY21fZHJvcCggYWxzYV9wbGF5YmFja19oYW5kbGUgKTsKKyAgIAorIAlpZiAoYWxzYWRiZykgCisgCQlwcmludF9zdGF0ZSgpOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtcmVwbGFjZS1taXNzaW5nLUFNX1BBVEhfQVVESU9GSUxFLWJ5LVBLR19DSEVDS19NT0RVTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAxLXJlcGxhY2UtbWlzc2luZy1BTV9QQVRIX0FVRElPRklMRS1ieS1QS0dfQ0hFQ0tfTU9EVUwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5Yzk3YTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtcmVwbGFjZS1taXNzaW5nLUFNX1BBVEhfQVVESU9GSUxFLWJ5LVBLR19DSEVDS19NT0RVTC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMjE4ZTA3MDJkNmNlNGQyY2IyMGQ1ZDEwOGRhYTE2YWZjYTJiN2M0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTYgRGVjIDIwMTYgMTM6MjI6NTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVwbGFjZSBtaXNzaW5nIEFNX1BBVEhfQVVESU9GSUxFIGJ5IFBLR19DSEVDS19NT0RVTEVTKAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1VcHN0cmVtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQ4NmM0OTIuLmRjY2ZkMWIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1Myw3ICszNTMsNyBAQCBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0gZWNobyAiLS0tIENoZWNraW5nIGZvciB0aGUgYXVkaW9maWxlIGxpYnJhcnkuICBOT1RFOiBUaGlzIGxpYnJhcnkgaXMgbm93IgotIGVjaG8gIi0tLSBSRVFVSVJFRCBmcm9tIHByb3BlciBjb21waWxhdGlvbiBvZiB0aGUgZXNvdW5kIHBhY2thZ2UuIgotIAotLUFNX1BBVEhfQVVESU9GSUxFKDAuMS41LCBbCi0rUEtHX0NIRUNLX01PRFVMRVMoQVVESU9GSUxFLCBhdWRpb2ZpbGUsIFsKLSAKLSBidWlsZF9lc2RwbGF5PXRydWUKLSBlY2hvICItLS0gbGliYXVkaW9maWxlIGZvdW5kLiBCdWlsZGluZyBlc291bmQgd2l0aCBhdWRpb2ZpbGUgc3VwcG9ydCIKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDItVW5kZWZpbmUtb3BlbjY0LWFuZC1mb3BlbjY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDItVW5kZWZpbmUtb3BlbjY0LWFuZC1mb3BlbjY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzU0NmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMi1VbmRlZmluZS1vcGVuNjQtYW5kLWZvcGVuNjQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSAxZmJlZTZlOTYzODRmMzQwYjgxNmUyMjFmZTFjMmYzZmYwYjQ4N2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOCBKdW4gMjAxNyAyMzoxMTozMSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvM10gVW5kZWZpbmUgb3BlbjY0IGFuZCBmb3BlbjY0CisKK1NpbmNlIHRoZSBzaWduYXR1cmVzIGRvIG5vdCBtYXRjaCB3aXRoIGxpYmMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGVzZGRzcC5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2VzZGRzcC5jIGIvZXNkZHNwLmMKK2luZGV4IGQzYzZlYTkuLjE3YjU5NDkgMTAwNjQ0CistLS0gYS9lc2Rkc3AuYworKysrIGIvZXNkZHNwLmMKK0BAIC0yOTAsNiArMjkwLDcgQEAgb3BlbiAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQorICAgcmV0dXJuIG9wZW5fd3JhcHBlcihmdW5jLCBwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOworIH0KKyAKKysjdW5kZWYgb3BlbjY0CisgaW50Cisgb3BlbjY0IChjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzLCAuLi4pCisgeworQEAgLTM3NCw2ICszNzUsNyBAQCBmb3BlbiAoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKKyAgIHJldHVybiBmb3Blbl93cmFwcGVyKGZ1bmMsIHBhdGgsIG1vZGUpOworIH0KKyAKKysjdW5kZWYgZm9wZW42NAorIEZJTEUgKgorIGZvcGVuNjQgKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCisgeworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDMtVXNlLUktcGF0aC1pbi1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMy1Vc2UtSS1wYXRoLWluLWNvbmZpZ3VyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmM4ODBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDMtVXNlLUktcGF0aC1pbi1jb25maWd1cmUucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA5NzlhMDJkOWVjOWMyODY4NjAyMWNkMmI0OWNhNTVkMjE5NWM5ZGNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOCBKdW4gMjAxNyAyMzoxMjozNiAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvM10gVXNlIC1JPTxwYXRoPiBpbiBjb25maWd1cmUKKworVGhpcyBoZWxwcyB0byB1c2UgcHJvcGVyIHN5c3Jvb3QgaW4KK2Nyb3NzIGJ1aWxkIGVudmlyb25tZW50CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA1NjQ1ZGNlLi5kMzc0Y2RhIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMDgsNyArMjA4LDcgQEAgaWYgdGVzdCAieCRlbmFibGVfbG9jYWxfc291bmQiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfQ0hFQ0tfSEVBREVSUyhDb3JlQXVkaW8vQ29yZUF1ZGlvLmgpCisgICAgIyBtbWVfYXBpLmggZGlyZWN0bHkgaW5jbHVkZXMgb3RoZXIgZmlsZXMgZnJvbSB0aGUgbW1lIHN1YmRpcgorICAgIHhDUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbW1lIgorKyAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUk9L3Vzci9pbmNsdWRlL21tZSIKKyAgICBBQ19DSEVDS19IRUFERVJTKG1tZS9tbWVfYXBpLmgpCisgICAgQ1BQRkxBR1M9IiR4Q1BQRkxBR1MiCisgICAgQU1fUEFUSF9BUlRTKCwgSEFWRV9BUlRTPXllcywgSEFWRV9BUlRTPW5vKQorQEAgLTI2OSw3ICsyNjksNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9sb2NhbF9zb3VuZCIgPSAieHllcyI7IHRoZW4KKyAgICAgICBvc2YqKQorIAlmb3VuZF9zb3VuZD15ZXMKKyAJQUNfREVGSU5FKERSSVZFUl9PU0YsIDEsIFtEZWZpbmVkIGlmIE9TRiBiYWNrZW5kIGlzIGVuYWJsZWRdKQorLQlDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL21tZSIKKysJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtST0vdXNyL2luY2x1ZGUvbW1lIgorIAlTT1VORF9MSUJTPS1sbW1lCisgICAgICAgZXNhYworICAgIGZpCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvY29uZmlndXJlLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9jb25maWd1cmUtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmRjMzVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9jb25maWd1cmUtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLS0tIC90bXAvY29uZmlndXJlLmFjCTIwMDgtMDYtMDIgMTY6NDY6NTUuNjQwNzkzMzA2ICswMjAwCi0rKysgZXNvdW5kLTAuMi4zNi9jb25maWd1cmUuYWMJMjAwOC0wNi0wMiAxNjo0NzoyNi4wMzA3OTM0OTQgKzAyMDAKLUBAIC0yOSw2ICsyOSw3IEBACi0gQUNfU1VCU1QocGtnZG9jZGlyKQotIAotIEFDX1BST0dfQ0MKLStBQ19QUk9HX0NYWAotIEFDX1BST0dfQ1BQCi0gQUNfTElCVE9PTF9XSU4zMl9ETEwKLSBBTV9QUk9HX0xJQlRPT0wKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9lc291bmRfMC4yLjM2LTF1YnVudHU1LmRpZmYuZ3ogYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvZXNvdW5kXzAuMi4zNi0xdWJ1bnR1NS5kaWZmLmd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTlmNWQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9lc291bmRfMC4yLjM2LTF1YnVudHU1LmRpZmYuZ3oKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmRfMC4yLjM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kXzAuMi4zNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE5YmE4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmRfMC4yLjM2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJFbmxpZ2h0ZW5lZCBTb3VuZCBEYWVtb24iCi1TRUNUSU9OID0gImdwZS9iYXNlIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUiCi1ERVBFTkRTID0gImF1ZGlvZmlsZSIKLQotaW5oZXJpdCBnbm9tZSBiaW5jb25maWcKLQotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBmdHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Vzb3VuZC8wLjIvZXNvdW5kLTAuMi4zNi50YXIuYnoyO25hbWU9YXJjaGl2ZSBcCi0gICAgZmlsZTovL2Vzb3VuZF8wLjIuMzYtMXVidW50dTUuZGlmZi5neiBcCi0gICAgZmlsZTovL25vLWRvY3MucGF0Y2ggXAotICAgIGZpbGU6Ly9jb25maWd1cmUtZml4LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLW1pc3NpbmctQU1fUEFUSF9BVURJT0ZJTEUtYnktUEtHX0NIRUNLX01PRFVMLnBhdGNoIFwKLSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiM2ZhY2I1YWEwMTE1Y2MxYzMxNzcxYjlhZDQ1NGFlNzYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2OGJmMzk5ZmNiZDQ1YzVlOWJhOTljZDEzYTNhNDc5ZTRlZjJiYzVkYzUyZTU0MGZmYTAwYWVmMWUxYjE5YTc2IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtYWxzYSBcCi0gICAgLS1kaXNhYmxlLWFydHMgXAotICAgIC0tZGlzYWJsZS1hcnRzdGVzdCBcCi0iCi0KLUNGTEFHUyArPSAiLWxtIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6L3Vzci9pbmNsdWRlL21tZToke1NUQUdJTkdfSU5DRElSfS9tbWU6ZycgJHtTfS9jb25maWd1cmUuYWMKLX0KLQotUEFDS0FHRVMgPSsgImVzZGRzcCBlc2QgZXNkLXV0aWxzIgotCi1GSUxFU19lc2Rkc3AgPSAiJHtiaW5kaXJ9L2VzZGRzcCAke2xpYmRpcn0vbGliZXNkZHNwLnNvLioiCi1GSUxFU19lc2QgPSAiJHtiaW5kaXJ9L2VzZCIKLUZJTEVTX2VzZC11dGlscyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZF8wLjIuNDEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmRfMC4yLjQxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZGY5NGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmRfMC4yLjQxLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiRW5saWdodGVuZWQgU291bmQgRGFlbW9uIgorU0VDVElPTiA9ICJncGUvYmFzZSIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IgorREVQRU5EUyA9ICJhdWRpb2ZpbGUiCisKK2luaGVyaXQgZ25vbWUKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Vzb3VuZC8wLjIvJHtQfS50YXIuYnoyO25hbWU9YXJjaGl2ZSBcCisgICAgICAgICAgIGZpbGU6Ly9uby1kb2NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1VbmRlZmluZS1vcGVuNjQtYW5kLWZvcGVuNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1Vc2UtSS1wYXRoLWluLWNvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjhkOWFhZDNkOTRkMTVlMGQ1OWJhOWRjMGVhOTkwYzZjIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNWViNWRkMjlhNjRiMzQ2MmEyOWE1YjIwNjUyYWJhN2FhOTI2NzQyY2VmNDM1NzdiZjA3OTZiNzg3Y2EzNDkxMSIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgIC0tZGlzYWJsZS1hcnRzIFwKKyAgICAtLWRpc2FibGUtYXJ0c3Rlc3QgXAorIgorRVhUUkFfT0VDT05GX3JlbW92ZSA9ICItLWRpc2FibGUtc2NoZW1hcy1pbnN0YWxsIgorCitDRkxBR1MgKz0gIi1sbSIKKworUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKK1BBQ0tBR0VDT05GSUdbbGlid3JhcF0gPSAiLS13aXRoLWxpYndyYXAsLS13aXRob3V0LWxpYndyYXAsdGNwLXdyYXBwZXJzLCIKK1BBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS1lbmFibGUtYWxzYSAtLWRpc2FibGUtb3NzLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliLCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYndyYXAgYWxzYSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFUyA9KyAiZXNkZHNwIGVzZCBlc2QtdXRpbHMiCisKK0ZJTEVTX2VzZGRzcCA9ICIke2JpbmRpcn0vZXNkZHNwICR7bGliZGlyfS9saWJlc2Rkc3Auc28uKiIKK0ZJTEVTX2VzZCA9ICIke2JpbmRpcn0vZXNkIgorRklMRVNfZXNkLXV0aWxzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saXZlNTU1L2xpdmU1NTUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saXZlNTU1L2xpdmU1NTUuaW5jCmluZGV4IGRhYWU4ZDcuLjE0ZWE2NjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGl2ZTU1NS9saXZlNTU1LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpdmU1NTUvbGl2ZTU1NS5pbmMKQEAgLTE2LDEyICsxNiw5IEBACiBTID0gIiR7V09SS0RJUn0vbGl2ZSIKIFRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgogCi1YTE9DQUxFX2xpYmMtbXVzbCA9ICIgLURYTE9DQUxFX05PVF9VU0VEIgotWExPQ0FMRSA/PSAiIgotCiBkb19jb25maWd1cmUoKSB7CiAgICAgY3AgJHtXT1JLRElSfS9jb25maWcubGludXgtY3Jvc3MgLgotICAgIGVjaG8gIkNPTVBJTEVfT1BUUys9IiAtZlBJQyAke1hMT0NBTEV9IiIgPj4gY29uZmlnLmxpbnV4LWNyb3NzCisgICAgZWNobyAiQ09NUElMRV9PUFRTKz0iIC1mUElDIC1EWExPQ0FMRV9OT1RfVVNFRCIiID4+IGNvbmZpZy5saW51eC1jcm9zcwogICAgIC4vZ2VuTWFrZWZpbGVzIGxpbnV4LWNyb3NzCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMzNmY2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJNaW5pRExOQSAoYWthIFJlYWR5RExOQSkgaXMgc2VydmVyIHNvZnR3YXJlIHdpdGggdGhlIGFpbSBvZiBcCi1iZWluZyBmdWxseSBjb21wbGlhbnQgd2l0aCBETE5BL1VQblAtQVYgY2xpZW50cy4iCi1MSUNFTlNFID0gIkdQTC0yLjB8QlNEIgotREVQRU5EUyA9ICJmZm1wZWcgZmxhYyBsaWJhdiBqcGVnIHNxbGl0ZTMgbGliZXhpZiBsaWJvZ2cgbGliaWQzdGFnIGxpYnZvcmJpcyIKLQotIyBiZWNhdXNlIGl0IGRlcGVuZHMgb24gbGliYXYgd2hpY2ggaGFzIGNvbW1lcmNpYWwgZmxhZwotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvbWluaWRsbmEvZ2l0O2JyYW5jaD1tYXN0ZXI7bW9kdWxlPWdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9taW5pZGxuYS1kYWVtb24uaW5pdC5kIFwKLSAgICAgICAgICAgZmlsZTovL21pbmlkbG5hLnNlcnZpY2UgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jIFRoaXMgcmVtb3ZlICItLWV4Y2x1ZGU9YXV0b3BvaW50IiBvcHRpb24gZnJvbSBhdXRvcmVjb25mIGFyZ3VtZW50IHRvIGF2b2lkCi0jIGNvbmZpZ3VyZS5hYzozMDogZXJyb3I6IHJlcXVpcmVkIGZpbGUgJy4vQUJPVVQtTkxTJyBub3QgZm91bmQKLUVYVFJBX0FVVE9SRUNPTkYgPSAiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgbWluaWRsbmEuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCi0jIFN5c3RlbWQgc2NyaXB0Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9zeXN0ZW1kL3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21pbmlkbG5hLnNlcnZpY2UgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0KLQotIyBTeXN2aW5pdCBzY3JpcHQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21pbmlkbG5hLWRhZW1vbi5pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21pbmlkbG5hCi0KLX0KLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1pbmlkbG5hLnNlcnZpY2UiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJtaW5pZGxuYSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDkwIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYV8xLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFkNzAwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hXzEuMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDUkVWID0gInYxXzFfNSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UubWluaXVwbnBkO21kNT1iMGRhYmY5ZDhlMGY4NzE1NTRlMzA5ZDYyZWFkOGQyYiIKLQotUE5CTEFDS0xJU1RbbWluaWRsbmFdID89ICJGYWlscyB0byBidWlsZCB3aXRoIFJTUyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTMwNjMwLyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcGxheWVyMi8wMDAxLWNvbmZpZ3VyZS1kb24tdC1kaXNhYmxlLUFTUy1zdXBwb3J0LXdoZW4tZXhwbGljaXRseS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXBsYXllcjIvMDAwMS1jb25maWd1cmUtZG9uLXQtZGlzYWJsZS1BU1Mtc3VwcG9ydC13aGVuLWV4cGxpY2l0bHktLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjMyNTk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcGxheWVyMi8wMDAxLWNvbmZpZ3VyZS1kb24tdC1kaXNhYmxlLUFTUy1zdXBwb3J0LXdoZW4tZXhwbGljaXRseS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDM1NDE2NDliNzExYTc3M2FhMmU0MmFjODBkOWI0YzFiMzZmY2UyM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDI3IE1hciAyMDE0IDAwOjA4OjU0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogZG9uJ3QgZGlzYWJsZSBBU1Mgc3VwcG9ydCB3aGVuIGV4cGxpY2l0bHkgZW5hYmxlZAotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDYwZmQzMDguLjJmN2RmM2IgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTQzNDYsNyArNDM0Niw3IEBAIGZpCi0gCi0gCi0gZWNob2NoZWNrICJTU0EvQVNTIHN1cHBvcnQiCi0taWYgdGVzdCAiJF9hc3MiID0gYXV0byA7IHRoZW4KLStpZiB0ZXN0ICIkX2FzcyIgPSBhdXRvIC1vICIkX2FzcyIgPSB5ZXMgOyB0aGVuCi0gICAgIGlmIHBrZ19jb25maWdfYWRkIGxpYmFzcyA7IHRoZW4KLSAgICAgICAgIF9hc3M9eWVzCi0gICAgICAgICBkZWZfYXNzPScjZGVmaW5lIENPTkZJR19BU1MgMScKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wbGF5ZXIyLzAwMDEtZGVtdXhfb2dnLXBhcnRpYWxseS1wb3J0LWxpYnRoZW9yYS1nbHVlLWNvZGUtdG8tVGhlby5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcGxheWVyMi8wMDAxLWRlbXV4X29nZy1wYXJ0aWFsbHktcG9ydC1saWJ0aGVvcmEtZ2x1ZS1jb2RlLXRvLVRoZW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZDk4NDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wbGF5ZXIyLzAwMDEtZGVtdXhfb2dnLXBhcnRpYWxseS1wb3J0LWxpYnRoZW9yYS1nbHVlLWNvZGUtdG8tVGhlby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi1Gcm9tIDA1NzFiYjRmMWE2ZTE5MzRlZTdlMDkzY2U3YWE1MTdiOWJhYzhlNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLURhdGU6IFN1biwgMTcgSmFuIDIwMTYgMTQ6NDY6MTAgKzA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gZGVtdXhfb2dnOiBwYXJ0aWFsbHkgcG9ydCBsaWJ0aGVvcmEgZ2x1ZSBjb2RlIHRvIFRoZW9yYSAxLjAKLSBBUEkKLQotVGhpcyBwYXJ0aWFsbHkgYmFja3BvcnRzIHRoZSBmb2xsb3dpbmcgY29tbWl0IHRvIGFsbG93IGJ1aWxkaW5nCi13aXRoIGdjYy01LnggYW5kIG90aGVyd2lzZSBmYWlscyB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mCi10aGUgX2lsb2cgZnVuY3Rpb24gdGhlIHdheSBpdCBpcyB1c2VkLgotCi1odHRwczovL2dpdGh1Yi5jb20vcGlnb3ovbXBsYXllci1zdm4vY29tbWl0Lzg1ZTUxNDA4Y2QwMDk3OWZjMjA5ZGE4ZTNhMzliNmYwZTdmMzI1YmMKLQotU2lnbmVkLW9mZi1ieTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+Ci0tLS0KLSBsaWJtcGRlbXV4L2RlbXV4X29nZy5jIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJtcGRlbXV4L2RlbXV4X29nZy5jIGIvbGlibXBkZW11eC9kZW11eF9vZ2cuYwotaW5kZXggOWVlYTA2MS4uOTE0NDQyNiAxMDA2NDQKLS0tLSBhL2xpYm1wZGVtdXgvZGVtdXhfb2dnLmMKLSsrKyBiL2xpYm1wZGVtdXgvZGVtdXhfb2dnLmMKLUBAIC01MCw4ICs1MCw3IEBACi0gI2VuZGlmCi0gCi0gI2lmZGVmIENPTkZJR19PR0dUSEVPUkEKLS0jaW5jbHVkZSA8dGhlb3JhL3RoZW9yYS5oPgotLWludCBfaWxvZyAodW5zaWduZWQgaW50KTsgLyogZGVmaW5lZCBpbiBtYW55IHBsYWNlcyBpbiB0aGVvcmEvbGliLyAqLwotKyNpbmNsdWRlIDx0aGVvcmEvdGhlb3JhZGVjLmg+Ci0gI2VuZGlmCi0gCi0gI2RlZmluZSBCTE9DS19TSVpFIDQwOTYKLUBAIC02Miw5ICs2MSwxMCBAQCBpbnQgX2lsb2cgKHVuc2lnbmVkIGludCk7IC8qIGRlZmluZWQgaW4gbWFueSBwbGFjZXMgaW4gdGhlb3JhL2xpYi8gKi8KLSAgKi8KLSAjaWZkZWYgQ09ORklHX09HR1RIRU9SQQotIHR5cGVkZWYgc3RydWN0IHRoZW9yYV9zdHJ1Y3Rfc3QgewotLSAgICB0aGVvcmFfc3RhdGUgICBzdDsKLS0gICAgdGhlb3JhX2NvbW1lbnQgY2M7Ci0tICAgIHRoZW9yYV9pbmZvICAgIGluZjsKLSsgICAgdGhfc2V0dXBfaW5mbyAqdHNpOwotKyAgICB0aF9kZWNfY3R4ICAgICp0Y3R4OwotKyAgICB0aF9jb21tZW50ICAgICB0YzsKLSsgICAgdGhfaW5mbyAgICAgICAgdGk7Ci0gfSB0aGVvcmFfc3RydWN0X3Q7Ci0gI2VuZGlmCi0gCi1AQCAtMTE3LDcgKzExNyw3IEBAIHR5cGVkZWYgc3RydWN0IG9nZ19zdHJlYW0gewotICAgICBmbG9hdCAgIHNhbXBsZXJhdGU7IC8vLyBncmFudWxwb3MgMiB0aW1lCi0gICAgIGludDY0X3QgbGFzdHBvczsKLSAgICAgaW50MzJfdCBsYXN0c2l6ZTsKLS0gICAgaW50ICAgICBrZXlmcmFtZV9mcmVxdWVuY3lfZm9yY2U7Ci0rICAgIGludCAgICAga2V5ZnJhbWVfZ3JhbnVsZV9zaGlmdDsKLSAKLSAgICAgLy8gTG9naWNhbCBzdHJlYW0gc3RhdGUKLSAgICAgb2dnX3N0cmVhbV9zdGF0ZSBzdHJlYW07Ci1AQCAtMzAwLDExICszMDAsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIgKmRlbXV4X29nZ19yZWFkX3BhY2tldChvZ2dfc3RyZWFtX3QgKm9zLCBvZ2dfcGFja2V0ICpwYWNrLAotICAgICAgICAgICAgaGF2ZSB0aGVvcmFfc3RhdGUgc3QsIHVudGlsIGFsbCBoZWFkZXIgcGFja2V0cyB3ZXJlIHBhc3NlZCB0byB0aGUKLSAgICAgICAgICAgIGRlY29kZXIuICovCi0gICAgICAgICBpZiAoIXBhY2stPmJ5dGVzIHx8ICEoKmRhdGEmMHg4MCkpIHsKLS0gICAgICAgICAgICBpbnQga2V5ZnJhbWVfZ3JhbnVsZV9zaGlmdCA9IF9pbG9nKG9zLT5rZXlmcmFtZV9mcmVxdWVuY3lfZm9yY2UgLSAxKTsKLS0gICAgICAgICAgICBpbnQ2NF90IGlmcmFtZW1hc2sgPSAoMSA8PCBrZXlmcmFtZV9ncmFudWxlX3NoaWZ0KSAtIDE7Ci0rICAgICAgICAgICAgaW50NjRfdCBpZnJhbWVtYXNrID0gaWZyYW1lbWFzayA9ICgxIDw8IG9zLT5rZXlmcmFtZV9ncmFudWxlX3NoaWZ0KSAtIDE7Ci0gCi0gICAgICAgICAgICAgaWYgKHBhY2stPmdyYW51bGVwb3MgPj0gMCkgewotLSAgICAgICAgICAgICAgICBvcy0+bGFzdHBvcyAgPSBwYWNrLT5ncmFudWxlcG9zID4+IGtleWZyYW1lX2dyYW51bGVfc2hpZnQ7Ci0rICAgICAgICAgICAgICAgIG9zLT5sYXN0cG9zICA9IHBhY2stPmdyYW51bGVwb3MgPj4gb3MtPmtleWZyYW1lX2dyYW51bGVfc2hpZnQ7Ci0gICAgICAgICAgICAgICAgIG9zLT5sYXN0cG9zICs9IHBhY2stPmdyYW51bGVwb3MgJiBpZnJhbWVtYXNrOwotICAgICAgICAgICAgICAgICAqa2V5ZnJhbWUgPSAocGFjay0+Z3JhbnVsZXBvcyAmIGlmcmFtZW1hc2spID09IDA7Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLUBAIC04ODgsMTQgKzg4NywxNSBAQCBpbnQgZGVtdXhfb2dnX29wZW4oZGVtdXhlcl90ICpkZW11eGVyKQotICNpZmRlZiBDT05GSUdfT0dHVEhFT1JBCi0gICAgICAgICB9IGVsc2UgaWYgKHBhY2suYnl0ZXMgPj0gNyAmJiAhc3RybmNtcCAoJnBhY2sucGFja2V0WzFdLCAidGhlb3JhIiwgNikpIHsKLSAgICAgICAgICAgICBpbnQgZXJyb3JDb2RlID0gMDsKLS0gICAgICAgICAgICB0aGVvcmFfaW5mbyBpbmY7Ci0tICAgICAgICAgICAgdGhlb3JhX2NvbW1lbnQgY2M7Ci0rICAgICAgICAgICAgdGhfaW5mbyB0aTsKLSsgICAgICAgICAgICB0aF9jb21tZW50IHRjOwotKyAgICAgICAgICAgIHRoX3NldHVwX2luZm8gKnRzaSA9IE5VTEw7Ci0gCi0tICAgICAgICAgICAgdGhlb3JhX2luZm9faW5pdCAoJmluZik7Ci0tICAgICAgICAgICAgdGhlb3JhX2NvbW1lbnRfaW5pdCAoJmNjKTsKLSsgICAgICAgICAgICB0aF9pbmZvX2luaXQgKCZ0aSk7Ci0rICAgICAgICAgICAgdGhfY29tbWVudF9pbml0ICgmdGMpOwotIAotLSAgICAgICAgICAgIGVycm9yQ29kZSA9IHRoZW9yYV9kZWNvZGVfaGVhZGVyICgmaW5mLCAmY2MsICZwYWNrKTsKLS0gICAgICAgICAgICBpZiAoZXJyb3JDb2RlKSB7Ci0rICAgICAgICAgICAgZXJyb3JDb2RlID0gdGhfZGVjb2RlX2hlYWRlcmluKCZ0aSwgJnRjLCAmdHNpLCAmcGFjayk7Ci0rICAgICAgICAgICAgaWYgKGVycm9yQ29kZSA8IDApIHsKLSAgICAgICAgICAgICAgICAgbXBfbXNnKE1TR1RfREVNVVgsIE1TR0xfRVJSLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRoZW9yYSBoZWFkZXIgcGFyc2luZyBmYWlsZWQ6ICVpIFxuIiwgZXJyb3JDb2RlKTsKLSAgICAgICAgICAgICB9IGVsc2UgewotQEAgLTkwNCwzMCArOTA0LDMyIEBAIGludCBkZW11eF9vZ2dfb3BlbihkZW11eGVyX3QgKmRlbXV4ZXIpCi0gICAgICAgICAgICAgICAgIHNoX3YtPmJpaCA9IGNhbGxvYygxLCBzaXplb2YoKnNoX3YtPmJpaCkpOwotICAgICAgICAgICAgICAgICBzaF92LT5iaWgtPmJpU2l6ZSAgICAgICAgPSBzaXplb2YoKnNoX3YtPmJpaCk7Ci0gICAgICAgICAgICAgICAgIHNoX3YtPmJpaC0+YmlDb21wcmVzc2lvbiA9IHNoX3YtPmZvcm1hdCA9IEZPVVJDQ19USEVPUkE7Ci0tICAgICAgICAgICAgICAgIHNoX3YtPmZwcyA9ICgoZG91YmxlKWluZi5mcHNfbnVtZXJhdG9yKSAvIChkb3VibGUpaW5mLmZwc19kZW5vbWluYXRvcjsKLS0gICAgICAgICAgICAgICAgc2hfdi0+ZnJhbWV0aW1lID0gKChkb3VibGUpaW5mLmZwc19kZW5vbWluYXRvcikgLyAoZG91YmxlKWluZi5mcHNfbnVtZXJhdG9yOwotLSAgICAgICAgICAgICAgICBzaF92LT5kaXNwX3cgPSBzaF92LT5iaWgtPmJpV2lkdGggID0gaW5mLmZyYW1lX3dpZHRoOwotLSAgICAgICAgICAgICAgICBzaF92LT5kaXNwX2ggPSBzaF92LT5iaWgtPmJpSGVpZ2h0ID0gaW5mLmZyYW1lX2hlaWdodDsKLSsgICAgICAgICAgICAgICAgc2hfdi0+ZnBzID0gKChkb3VibGUpdGkuZnBzX251bWVyYXRvcikgLyAoZG91YmxlKXRpLmZwc19kZW5vbWluYXRvcjsKLSsgICAgICAgICAgICAgICAgc2hfdi0+ZnJhbWV0aW1lID0gKChkb3VibGUpdGkuZnBzX2Rlbm9taW5hdG9yKSAvIChkb3VibGUpdGkuZnBzX251bWVyYXRvcjsKLSsgICAgICAgICAgICAgICAgc2hfdi0+aV9icHMgID0gdGkudGFyZ2V0X2JpdHJhdGUgLyA4OwotKyAgICAgICAgICAgICAgICBzaF92LT5kaXNwX3cgPSBzaF92LT5iaWgtPmJpV2lkdGggID0gdGkuZnJhbWVfd2lkdGg7Ci0rICAgICAgICAgICAgICAgIHNoX3YtPmRpc3BfaCA9IHNoX3YtPmJpaC0+YmlIZWlnaHQgPSB0aS5mcmFtZV9oZWlnaHQ7Ci0gICAgICAgICAgICAgICAgIHNoX3YtPmJpaC0+YmlCaXRDb3VudCAgPSAyNDsKLSAgICAgICAgICAgICAgICAgc2hfdi0+YmloLT5iaVBsYW5lcyAgICA9IDM7Ci0gICAgICAgICAgICAgICAgIHNoX3YtPmJpaC0+YmlTaXplSW1hZ2UgPSAoKHNoX3YtPmJpaC0+YmlCaXRDb3VudCAvIDgpICogc2hfdi0+YmloLT5iaVdpZHRoICogc2hfdi0+YmloLT5iaUhlaWdodCk7Ci0gICAgICAgICAgICAgICAgIG9nZ19kLT5zdWJzW29nZ19kLT5udW1fc3ViXS5zYW1wbGVyYXRlICAgICAgICAgICAgICAgPSBzaF92LT5mcHM7Ci0gICAgICAgICAgICAgICAgIG9nZ19kLT5zdWJzW29nZ19kLT5udW1fc3ViXS50aGVvcmEgICAgICAgICAgICAgICAgICAgPSAxOwotLSAgICAgICAgICAgICAgICBvZ2dfZC0+c3Vic1tvZ2dfZC0+bnVtX3N1Yl0ua2V5ZnJhbWVfZnJlcXVlbmN5X2ZvcmNlID0gaW5mLmtleWZyYW1lX2ZyZXF1ZW5jeV9mb3JjZTsKLSsgICAgICAgICAgICAgICAgb2dnX2QtPnN1YnNbb2dnX2QtPm51bV9zdWJdLmtleWZyYW1lX2dyYW51bGVfc2hpZnQgICA9IHRpLmtleWZyYW1lX2dyYW51bGVfc2hpZnQ7Ci0gICAgICAgICAgICAgICAgIG9nZ19kLT5zdWJzW29nZ19kLT5udW1fc3ViXS5pZCAgICAgICAgICAgICAgICAgICAgICAgPSBuX3ZpZGVvOwotICAgICAgICAgICAgICAgICBuX3ZpZGVvKys7Ci0gICAgICAgICAgICAgICAgIG1wX21zZyhNU0dUX0RFTVVYLCBNU0dMX0lORk8sCi0gICAgICAgICAgICAgICAgICAgICAgICAiW09nZ10gc3RyZWFtICVkOiB2aWRlbyAoVGhlb3JhIHYlZC4lZC4lZCksIC12aWQgJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBvZ2dfZC0+bnVtX3N1YiwKLS0gICAgICAgICAgICAgICAgICAgICAgIChpbnQpaW5mLnZlcnNpb25fbWFqb3IsCi0tICAgICAgICAgICAgICAgICAgICAgICAoaW50KWluZi52ZXJzaW9uX21pbm9yLAotLSAgICAgICAgICAgICAgICAgICAgICAgKGludClpbmYudmVyc2lvbl9zdWJtaW5vciwKLSsgICAgICAgICAgICAgICAgICAgICAgIChpbnQpdGkudmVyc2lvbl9tYWpvciwKLSsgICAgICAgICAgICAgICAgICAgICAgIChpbnQpdGkudmVyc2lvbl9taW5vciwKLSsgICAgICAgICAgICAgICAgICAgICAgIChpbnQpdGkudmVyc2lvbl9zdWJtaW5vciwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5fdmlkZW8gLSAxKTsKLSAgICAgICAgICAgICAgICAgaWYgKG1wX21zZ190ZXN0KE1TR1RfSEVBREVSLCBNU0dMX1YpKQotICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdmlkZW9faGVhZGVyKHNoX3YtPmJpaCwgTVNHTF9WKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgdGhlb3JhX2NvbW1lbnRfY2xlYXIoJmNjKTsKLS0gICAgICAgICAgICB0aGVvcmFfaW5mb19jbGVhcigmaW5mKTsKLSsgICAgICAgICAgICB0aF9jb21tZW50X2NsZWFyKCZ0Yyk7Ci0rICAgICAgICAgICAgdGhfaW5mb19jbGVhcigmdGkpOwotKyAgICAgICAgICAgIHRoX3NldHVwX2ZyZWUodHNpKTsKLSAjZW5kaWYgLyogQ09ORklHX09HR1RIRU9SQSAqLwotICAgICAgICAgfSBlbHNlIGlmIChwYWNrLmJ5dGVzID49IDQgJiYgIXN0cm5jbXAgKCZwYWNrLnBhY2tldFswXSwgImZMYUMiLCA0KSkgewotICAgICAgICAgICAgIHNoX2EgPSBuZXdfc2hfYXVkaW9fYWlkKGRlbXV4ZXIsIG9nZ19kLT5udW1fc3ViLCBuX2F1ZGlvKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wbGF5ZXIyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcGxheWVyMl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNGFlMjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wbGF5ZXIyX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4gU291cmNlIG11bHRpbWVkaWEgcGxheWVyIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcGxheWVyaHEuaHUvIgotREVQRU5EUyA9ICJsaWJ2cHggbGliZHZkcmVhZCBsaWJ0aGVvcmEgdmlydHVhbC9saWJzZGwgZmZtcGVnIHhzcCB6bGliIFwKLSAgICAgICAgICAgbGlicG5nIGpwZWcgbGliYTUyIGZyZWV0eXBlIGZvbnRjb25maWcgYWxzYS1saWIgbHpvIG5jdXJzZXMgXAotICAgICAgICAgICBsaWJ4diB2aXJ0dWFsL2xpYngxMSBsaWJhc3Mgc3BlZXggZmFhZDIgbGlieHNjcm5zYXZlciIKLQotUkRFUEVORFNfJHtQTn0gPSAibXBsYXllci1jb21tb24iCi1QUk9WSURFUyA9ICJtcGxheWVyIgotUlBST1ZJREVTXyR7UE59ID0gIm1wbGF5ZXIiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIm1wbGF5ZXIiCi0KLSMgRGVwZW5kcyBvbiB4c3AsIGxpYnh2LCB2aXJ0dWFsL2xpYngxMSwgbGlieHNjcm5zYXZlcgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotIyBiZWNhdXNlIGl0IGRlcGVuZHMgb24gbGlicG9zdHByb2MvbGliYXYgd2hpY2ggaGFzIGNvbW1lcmNpYWwgZmxhZwotTElDRU5TRV9GTEFHUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb3N0cHJvYycsICdjb21tZXJjaWFsJywgJycsIGQpfSIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gImdpdDovL3JlcG8ub3IuY3ovbXBsYXllci5naXQgXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1kb24tdC1kaXNhYmxlLUFTUy1zdXBwb3J0LXdoZW4tZXhwbGljaXRseS0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWRlbXV4X29nZy1wYXJ0aWFsbHktcG9ydC1saWJ0aGVvcmEtZ2x1ZS1jb2RlLXRvLVRoZW8ucGF0Y2ggXAotIgotCi1TUkNSRVYgPSAiMmMzNzhjNzFhNGQ5YjFkZjM4MmRiOWFhNzg3YjY0NjYyOGI0ZTNmOSIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLVBWID0gIjIuMCtnaXRyJHtTUkNQVn0iCi1QUiA9ICJyMTMiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vbXBsYXllciAke2xpYmRpcn0gL3Vzci9ldGMvbXBsYXllci8iCi1DT05GRklMRVNfJHtQTn0gKz0gIi91c3IvZXRjL21wbGF5ZXIvaW5wdXQuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgIC91c3IvZXRjL21wbGF5ZXIvZXhhbXBsZS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgL3Vzci9ldGMvbXBsYXllci9jb2RlY3MuY29uZiBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXByZWZpeD0vdXNyIFwKLSAgICAtLW1hbmRpcj0ke21hbmRpcn0gXAotICAgIC0tdGFyZ2V0PSR7U0lNUExFX1RBUkdFVF9TWVN9IFwKLSAgICBcCi0gICAgLS1kaXNhYmxlLWxpcmMgXAotICAgIC0tZGlzYWJsZS1saXJjYyBcCi0gICAgLS1kaXNhYmxlLWpveXN0aWNrIFwKLSAgICAtLWRpc2FibGUtdm0gXAotICAgIC0tZGlzYWJsZS14Zjg2a2V5c3ltIFwKLSAgICAtLWVuYWJsZS10diBcCi0gICAgLS1lbmFibGUtdHYtdjRsMiBcCi0gICAgLS1kaXNhYmxlLXR2LWJzZGJ0ODQ4IFwKLSAgICAtLWVuYWJsZS1ydGMgXAotICAgIC0tZW5hYmxlLW5ldHdvcmtpbmcgXAotICAgIC0tZGlzYWJsZS1zbWIgXAotICAgIC0tZGlzYWJsZS1kdmRuYXYgXAotICAgIC0tZW5hYmxlLWR2ZHJlYWQgXAotICAgIC0tZGlzYWJsZS1kdmRyZWFkLWludGVybmFsIFwKLSAgICAtLWRpc2FibGUtbGliZHZkY3NzLWludGVybmFsIFwKLSAgICAtLWRpc2FibGUtZW5jYSBcCi0gICAgLS1kaXNhYmxlLWZ0cCBcCi0gICAgLS1kaXNhYmxlLXZzdHJlYW0gXAotICAgIFwKLSAgICAtLWRpc2FibGUtZ2lmIFwKLSAgICAtLWVuYWJsZS1wbmcgXAotICAgIC0tZW5hYmxlLWpwZWcgXAotICAgIC0tZGlzYWJsZS1saWJjZGlvIFwKLSAgICAtLWRpc2FibGUtcXR4IFwKLSAgICAtLWRpc2FibGUteGFuaW0gXAotICAgIC0tZGlzYWJsZS1yZWFsIFwKLSAgICAtLWRpc2FibGUteHZpZCBcCi0gICAgXAotICAgIC0tZW5hYmxlLXNwZWV4IFwKLSAgICAtLWVuYWJsZS10aGVvcmEgXAotICAgIC0tZGlzYWJsZS1sYWRzcGEgXAotICAgIC0tZGlzYWJsZS1saWJkdiBcCi0gICAgLS1lbmFibGUtbWFkIFwKLSAgICAtLWRpc2FibGUteG1tcyBcCi0gICAgLS1kaXNhYmxlLW11c2VwYWNrIFwKLSAgICBcCi0gICAgLS1kaXNhYmxlLWdsIFwKLSAgICAtLWVuYWJsZS1zZGwgXAotICAgIC0tZGlzYWJsZS1jYWNhIFwKLSAgICAtLWRpc2FibGUtZGlyZWN0eCBcCi0gICAgLS1kaXNhYmxlLWR2YiBcCi0gICAgLS1lbmFibGUteHYgXAotICAgIC0tZGlzYWJsZS12bSBcCi0gICAgLS1kaXNhYmxlLXhpbmVyYW1hIFwKLSAgICAtLWVuYWJsZS14MTEgXAotICAgIC0tZGlzYWJsZS1kaXJlY3RmYiBcCi0gICAgLS1kaXNhYmxlLXRnYSBcCi0gICAgLS1kaXNhYmxlLXBubSBcCi0gICAgLS1kaXNhYmxlLW1kNXN1bSBcCi0gICAgXAotICAgIC0tZW5hYmxlLWFsc2EgXAotICAgIC0tZW5hYmxlLW9zc2F1ZGlvIFwKLSAgICAtLWRpc2FibGUtcHVsc2UgXAotICAgIC0tZGlzYWJsZS1qYWNrIFwKLSAgICAtLWRpc2FibGUtb3BlbmFsIFwKLSAgICAtLWVuYWJsZS1zZWxlY3QgXAotICAgIC0tZW5hYmxlLWxpYmFzcyBcCi0gICAgXAotICAgIC0tZXh0cmEtbGlicz0nIC1sWGV4dCAtbFgxMSAtbHZvcmJpcyAtbHRoZW9yYWRlYyAtbGFzb3VuZCAnIFwKLSIKLSMgLWx0aGVvcmFkZWMgaXMgbWlzc2luZyBpbjoKLSMgbGlibXBjb2RlY3MvdmRfdGhlb3JhLm86IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gc3ltYm9sICd0aGVvcmFfZGVjb2RlX2luaXRAQGxpYnRoZW9yYS5zby4xLjAnCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjYgPSAiIC0tZW5hYmxlLWFybXY2IgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N2EgPSAiIC0tZW5hYmxlLWFybXY2IC0tZW5hYmxlLW5lb24iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ2b3JiaXMgcG9zdHByb2MiCi1QQUNLQUdFQ09ORklHW21hZF0gPSAiLS1lbmFibGUtbWFkLC0tZGlzYWJsZS1tYWQsbGlibWFkIgotUEFDS0FHRUNPTkZJR1thNTJdID0gIi0tZW5hYmxlLWxpYmE1MiwtLWRpc2FibGUtbGliYTUyLGxpYmE1MiIKLVBBQ0tBR0VDT05GSUdbbGFtZV0gPSAiLCxsYW1lIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLC0tZGlzYWJsZS1saWJwb3N0cHJvYyxsaWJwb3N0cHJvYyIKLVBBQ0tBR0VDT05GSUdbdm9yYmlzXSA9ICIsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCi1QQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLC0tZGlzYWJsZS1wb3J0YXVkaW8scG9ydGF1ZGlvLXYxOSIKLVBBQ0tBR0VDT05GSUdbbXBnMTIzXSA9ICIsLS1kaXNhYmxlLW1wZzEyMyxtcGcxMjMiCi1QQUNLQUdFQ09ORklHW2RpcmVjdGZiXSA9ICItLWVuYWJsZS1kaXJlY3RmYiwtLWRpc2FibGUtZGlyZWN0ZmIsZGlyZWN0ZmIiCi0KLUZVTExfT1BUSU1JWkFUSU9OID0gIi1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZyZW5hbWUtcmVnaXN0ZXJzIC1PNCAtZmZhc3QtbWF0aCIKLUJVSUxEX09QVElNSVpBVElPTiA9ICIke0ZVTExfT1BUSU1JWkFUSU9OfSIKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLUkke1N9L2xpYmR2ZHJlYWQ0ICIKLQotZG9fY29uZmlndXJlKCkgewotICAgIHNlZCAtaSAnc3wvdXNyL2luY2x1ZGV8JHtTVEFHSU5HX0lOQ0RJUn18ZycgJHtTfS9jb25maWd1cmUKLSAgICBzZWQgLWkgJ3N8L3Vzci9saWJ8JHtTVEFHSU5HX0xJQkRJUn18ZycgJHtTfS9jb25maWd1cmUKLSAgICBzZWQgLWkgJ3N8L3Vzci9cUyppbmNsdWRlW1x3L10qfHxnJyAke1N9L2NvbmZpZ3VyZQotICAgIHNlZCAtaSAnc3wvdXNyL1xTKmxpYltcdy9dKnx8ZycgJHtTfS9jb25maWd1cmUKLSAgICBzZWQgLWkgJ3N8X2luc3RhbGxfc3RyaXA9Ii1zInxfaW5zdGFsbF9zdHJpcD0iInxnJyAke1N9L2NvbmZpZ3VyZQotICAgIHNlZCAtaSAnc3xIT1NUX0NDfEJVSUxEX0NDfCcgJHtTfS9NYWtlZmlsZQotICAgIHNlZCAtaSAnc3xleHRyYV9jZmxhZ3M9Ii1JLiAkZXh0cmFfY2ZsYWdzInxleHRyYV9jZmxhZ3M9Ii1JLiAtSSR7U1RBR0lOR19JTkNESVJ9L2RpcmVjdGZiICRleHRyYV9jZmxhZ3MifGcnICR7U30vY29uZmlndXJlCi0gICAgZXhwb3J0IFNJTVBMRV9UQVJHRVRfU1lTPSIkKGVjaG8gJHtUQVJHRVRfU1lTfSB8IHNlZCBzOiR7VEFSR0VUX1ZFTkRPUn06OmcpIgotICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotCi19Ci0KLWRvX2NvbXBpbGUgKCkgewotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtbm8tbWFuCi0gICAgaW5zdGFsbCAtZCAke0R9L3Vzci9ldGMvbXBsYXllcgotICAgIGluc3RhbGwgJHtTfS9ldGMvaW5wdXQuY29uZiAke0R9L3Vzci9ldGMvbXBsYXllci8KLSAgICBpbnN0YWxsICR7U30vZXRjL2V4YW1wbGUuY29uZiAke0R9L3Vzci9ldGMvbXBsYXllci8KLSAgICBpbnN0YWxsICR7U30vZXRjL2NvZGVjcy5jb25mICR7RH0vdXNyL2V0Yy9tcGxheWVyLwotICAgIFsgLWUgJHtEfS91c3IvbGliIF0gJiYgcm1kaXIgJHtEfS91c3IvbGliCi19Ci0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzQwNzM0LwotUE5CTEFDS0xJU1RbbXBsYXllcjJdID89ICJOb3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnRseSB1c2VkIGZmbXBlZyAzIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdi8wMDAxLUZpeC1idWlsZC13aXRoLUhBVkVfR0wtMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHYvMDAwMS1GaXgtYnVpbGQtd2l0aC1IQVZFX0dMLTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMmI1MzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdi8wMDAxLUZpeC1idWlsZC13aXRoLUhBVkVfR0wtMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gMjEyZjZjODIwNmJkNGRjYzdkODk3MGM1ZjE2MzI4MjNhZTRlNzgzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgRm9ybmV5IDxtZm9ybmV5QG1mb3JuZXkub3JnPgotRGF0ZTogU3VuLCAxMiBGZWIgMjAxNyAyMzowMToyMSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBIQVZFX0dMPT0wCi0KLXZpZGVvL291dC9vcGVuZ2wvaHdkZWMuaCBpbmNsdWRlcyB2aWRlby9vdXQvb3BlbmdsL2NvbW1vbi5oLCB3aGljaCB0cmllcwotdG8gaW5jbHVkZSBvcGVuZ2wgaGVhZGVycy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotLS0tCi0gb3B0aW9ucy9vcHRpb25zLmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvb3B0aW9ucy9vcHRpb25zLmMgYi9vcHRpb25zL29wdGlvbnMuYwotaW5kZXggYjcxMTE1Ni4uMGJiMzZhZCAxMDA2NDQKLS0tLSBhL29wdGlvbnMvb3B0aW9ucy5jCi0rKysgYi9vcHRpb25zL29wdGlvbnMuYwotQEAgLTQwLDcgKzQwLDYgQEAKLSAjaW5jbHVkZSAic3RyZWFtL3N0cmVhbS5oIgotICNpbmNsdWRlICJ2aWRlby9jc3B1dGlscy5oIgotICNpbmNsdWRlICJ2aWRlby9od2RlYy5oIgotLSNpbmNsdWRlICJ2aWRlby9vdXQvb3BlbmdsL2h3ZGVjLmgiCi0gI2luY2x1ZGUgInZpZGVvL2ltYWdlX3dyaXRlci5oIgotICNpbmNsdWRlICJzdWIvb3NkLmgiCi0gI2luY2x1ZGUgImF1ZGlvL2ZpbHRlci9hZi5oIgotQEAgLTUzLDYgKzUyLDEwIEBACi0gI2luY2x1ZGUgInZpZGVvL291dC9kcm1fY29tbW9uLmgiCi0gI2VuZGlmCi0gCi0rI2lmIEhBVkVfR0wKLSsjaW5jbHVkZSAidmlkZW8vb3V0L29wZW5nbC9od2RlYy5oIgotKyNlbmRpZgotKwotIGV4dGVybiBjb25zdCBjaGFyIG1wX2hlbHBfdGV4dFtdOwotIAotIHN0YXRpYyB2b2lkIHByaW50X3ZlcnNpb24oc3RydWN0IG1wX2xvZyAqbG9nKQotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWRhMjE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuIFNvdXJjZSBtdWx0aW1lZGlhIHBsYXllciIKLURFU0NSSVBUSU9OID0gIm1wdiBpcyBhIGZvcmsgb2YgbXBsYXllcjIgYW5kIE1QbGF5ZXIuIEl0IHNoYXJlcyBzb21lIGZlYXR1cmVzIHdpdGggdGhlIGZvcm1lciBwcm9qZWN0cyB3aGlsZSBpbnRyb2R1Y2luZyBtYW55IG1vcmUuIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcHYuaW8vIgotREVQRU5EUyA9ICJ6bGliIGZmbXBlZyBqcGVnIHZpcnR1YWwvbGlieDExIHhzcCBsaWJ4diBcCi0gICAgICAgICAgIGxpYnhzY3Juc2F2ZXIgbGlidjRsIGxpYnhpbmVyYW1hIFwKLSIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MWYxY2I4NzBjMWNjMmQzMTM1MWE0ZDI1OTU0NDFjYiIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tcHYtcGxheWVyL21wdi9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7bmFtZT1tcHYgXAotICAgIGh0dHA6Ly93d3cuZnJlZWhhY2tlcnMub3JnL350bmFneS9yZWxlYXNlL3dhZi0xLjguMTI7bmFtZT13YWY7c3ViZGlyPSR7QlBOfS0ke1BWfSBcCi0gICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtSEFWRV9HTC0wLnBhdGNoIFwKLSIKLVNSQ19VUklbbXB2Lm1kNXN1bV0gPSAiNWM4NWQxMTYzOTExZTQ5MzE1YTViZjFjYTFmYWUxM2QiCi1TUkNfVVJJW21wdi5zaGEyNTZzdW1dID0gImE0MTg1NGZhMGFjMzViOWMzMDlhZDY5MmFhZWU2N2M4ZDQ0OTVjMzU0NmYxMWNiNGNkZDBhMTI0MTk1ZDNmMTUiCi1TUkNfVVJJW3dhZi5tZDVzdW1dID0gImNlZjRlZTgyMjA2YjE4NDNkYjA4MmQwYjA1MDZiZjcxIgotU1JDX1VSSVt3YWYuc2hhMjU2c3VtXSA9ICIwMWJmMmJlYWIyMTA2ZDE1NTg4MDBjODcwOWJjMmM4ZTQ5NmQzZGE0YTJjYTM0M2ZlMDkxZjIyZmNhNjBjOThiIgotCi1pbmhlcml0IHdhZiBwa2djb25maWcgcHl0aG9ubmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIE5vdGU6IGJvdGggbHVhIGFuZCBsaWJhc3MgYXJlIHJlcXVpcmVkIHRvIGdldCBvbi1zY3JlZW4tZGlzcGxheSAoY29udHJvbHMpCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICBsdWEgXAotICAgIGxpYmFzcyBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2RybV0gPSAiLS1lbmFibGUtZHJtLC0tZGlzYWJsZS1kcm0sbGliZHJtIgotUEFDS0FHRUNPTkZJR1tnYm1dID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtLHZpcnR1YWwvbWVzYSIKLVBBQ0tBR0VDT05GSUdbbHVhXSA9ICItLWVuYWJsZS1sdWEsLS1kaXNhYmxlLWx1YSxsdWEgbHVhaml0IgotUEFDS0FHRUNPTkZJR1tsaWJhc3NdID0gIi0tZW5hYmxlLWxpYmFzcywtLWRpc2FibGUtbGliYXNzLGxpYmFzcyIKLVBBQ0tBR0VDT05GSUdbbGliYXJjaGl2ZV0gPSAiLS1lbmFibGUtbGliYXJjaGl2ZSwtLWRpc2FibGUtbGliYXJjaGl2ZSxsaWJhcmNoaXZlIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLCAtLWRpc2FibGUtamFjaywgamFjayIKLVBBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLCAtLWRpc2FibGUtdmFhcGksbGlidmEiCi1QQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwgLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLCAtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kIGxpYnhrYmNvbW1vbiIKLQotU0lNUExFX1RBUkdFVF9TWVMgPSAiJHtAJyR7VEFSR0VUX1NZU30nLnJlcGxhY2UoJyR7VEFSR0VUX1ZFTkRPUn0nLCAnJyl9IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgIC0tdGFyZ2V0PSR7U0lNUExFX1RBUkdFVF9TWVN9IFwKLSAgICAtLWNvbmZkaXI9JHtzeXNjb25mZGlyfSBcCi0gICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0gXAotICAgIC0tZGlzYWJsZS1tYW5wYWdlLWJ1aWxkIFwKLSAgICAtLWRpc2FibGUtZ2wgXAotICAgIC0tZGlzYWJsZS1saWJzbWJjbGllbnQgXAotICAgIC0tZGlzYWJsZS1lbmNvZGluZyBcCi0gICAgLS1kaXNhYmxlLWxpYmJsdXJheSBcCi0gICAgLS1kaXNhYmxlLWR2ZHJlYWQgXAotICAgIC0tZGlzYWJsZS1kdmRuYXYgXAotICAgIC0tZGlzYWJsZS1jZGRhIFwKLSAgICAtLWRpc2FibGUtdWNoYXJkZXQgXAotICAgIC0tZGlzYWJsZS1ydWJiZXJiYW5kIFwKLSAgICAtLWRpc2FibGUtbGNtczIgXAotICAgIC0tZGlzYWJsZS12YXBvdXJzeW50aCBcCi0gICAgLS1kaXNhYmxlLXZhcG91cnN5bnRoLWxhenkgXAotICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgbG4gLXNmIHdhZi0xLjguMTIgJHtTfS93YWYKLSAgICBjaG1vZCAreCAke1N9L3dhZgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRkOTJhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNi4wLmJiCkBAIC0wLDAgKzEsNzIgQEAKK1NVTU1BUlkgPSAiT3BlbiBTb3VyY2UgbXVsdGltZWRpYSBwbGF5ZXIiCitERVNDUklQVElPTiA9ICJtcHYgaXMgYSBmb3JrIG9mIG1wbGF5ZXIyIGFuZCBNUGxheWVyLiBJdCBzaGFyZXMgc29tZSBmZWF0dXJlcyB3aXRoIHRoZSBmb3JtZXIgcHJvamVjdHMgd2hpbGUgaW50cm9kdWNpbmcgbWFueSBtb3JlLiIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubXB2LmlvLyIKK0RFUEVORFMgPSAiemxpYiBmZm1wZWcganBlZyB2aXJ0dWFsL2xpYngxMSB4c3AgbGlieHYgXAorICAgICAgICAgICBsaWJ4c2NybnNhdmVyIGxpYnY0bCBsaWJ4aW5lcmFtYSBcCisiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTFmMWNiODcwYzFjYzJkMzEzNTFhNGQyNTk1NDQxY2IiCisKKyMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gZmZtcGVnIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tcHYtcGxheWVyL21wdi9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7bmFtZT1tcHYgXAorICAgIGh0dHA6Ly93d3cuZnJlZWhhY2tlcnMub3JnL350bmFneS9yZWxlYXNlL3dhZi0xLjguMTI7bmFtZT13YWY7c3ViZGlyPSR7QlBOfS0ke1BWfSBcCisiCitTUkNfVVJJW21wdi5tZDVzdW1dID0gIjAzOGQwYjY2MGRlMDdmZjY0NWFkNmE3NDE3MDRlY2FiIgorU1JDX1VSSVttcHYuc2hhMjU2c3VtXSA9ICJkYWYzZWYzNThkNWYyNjBmMjI2OWY3Y2FhYmNlMjdmNDQ2YzI5MTQ1N2VjMzMwMDc3MTUyMTI3MTMzYjcxYjQ2IgorU1JDX1VSSVt3YWYubWQ1c3VtXSA9ICJjZWY0ZWU4MjIwNmIxODQzZGIwODJkMGIwNTA2YmY3MSIKK1NSQ19VUklbd2FmLnNoYTI1NnN1bV0gPSAiMDFiZjJiZWFiMjEwNmQxNTU4ODAwYzg3MDliYzJjOGU0OTZkM2RhNGEyY2EzNDNmZTA5MWYyMmZjYTYwYzk4YiIKKworaW5oZXJpdCB3YWYgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBOb3RlOiBib3RoIGx1YSBhbmQgbGliYXNzIGFyZSByZXF1aXJlZCB0byBnZXQgb24tc2NyZWVuLWRpc3BsYXkgKGNvbnRyb2xzKQorUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgbHVhIFwKKyAgICBsaWJhc3MgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbZ2JtXSA9ICItLWVuYWJsZS1nYm0sLS1kaXNhYmxlLWdibSx2aXJ0dWFsL21lc2EiCitQQUNLQUdFQ09ORklHW2x1YV0gPSAiLS1lbmFibGUtbHVhLC0tZGlzYWJsZS1sdWEsbHVhIGx1YWppdCIKK1BBQ0tBR0VDT05GSUdbbGliYXNzXSA9ICItLWVuYWJsZS1saWJhc3MsLS1kaXNhYmxlLWxpYmFzcyxsaWJhc3MiCitQQUNLQUdFQ09ORklHW2xpYmFyY2hpdmVdID0gIi0tZW5hYmxlLWxpYmFyY2hpdmUsLS1kaXNhYmxlLWxpYmFyY2hpdmUsbGliYXJjaGl2ZSIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywgLS1kaXNhYmxlLWphY2ssIGphY2siCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwgLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgorUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsIC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwgLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZCBsaWJ4a2Jjb21tb24iCisKK1NJTVBMRV9UQVJHRVRfU1lTID0gIiR7QCcke1RBUkdFVF9TWVN9Jy5yZXBsYWNlKCcke1RBUkdFVF9WRU5ET1J9JywgJycpfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtLXRhcmdldD0ke1NJTVBMRV9UQVJHRVRfU1lTfSBcCisgICAgLS1jb25mZGlyPSR7c3lzY29uZmRpcn0gXAorICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9IFwKKyAgICAtLWRpc2FibGUtbWFucGFnZS1idWlsZCBcCisgICAgLS1kaXNhYmxlLWdsIFwKKyAgICAtLWRpc2FibGUtbGlic21iY2xpZW50IFwKKyAgICAtLWRpc2FibGUtZW5jb2RpbmcgXAorICAgIC0tZGlzYWJsZS1saWJibHVyYXkgXAorICAgIC0tZGlzYWJsZS1kdmRyZWFkIFwKKyAgICAtLWRpc2FibGUtZHZkbmF2IFwKKyAgICAtLWRpc2FibGUtY2RkYSBcCisgICAgLS1kaXNhYmxlLXVjaGFyZGV0IFwKKyAgICAtLWRpc2FibGUtcnViYmVyYmFuZCBcCisgICAgLS1kaXNhYmxlLWxjbXMyIFwKKyAgICAtLWRpc2FibGUtdmFwb3Vyc3ludGggXAorICAgIC0tZGlzYWJsZS12YXBvdXJzeW50aC1sYXp5IFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIGxuIC1zZiB3YWYtMS44LjEyICR7U30vd2FmCisgICAgY2htb2QgK3ggJHtTfS93YWYKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlsc18xLjEyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlsc18xLjEyLjMuYmIKaW5kZXggYjQwOGJiMC4uNTdjZmIxMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHNfMS4xMi4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzXzEuMTIuMy5iYgpAQCAtNyw2ICs3LDggQEAKIERFUEVORFMgPSAianBlZyBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3ZpcnR1YWwvbGlieDExJywgJycsIGQpfSIKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgorTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYm0vbGlidnB4XzEuNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJtL2xpYnZweF8xLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ4ODE4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYm0vbGlidnB4XzEuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJWUFggbXVsdGktZm9ybWF0IGNvZGVjIgotREVTQ1JJUFRJT04gPSAiVGhlIEJTRC1saWNlbnNlZCBsaWJ2cHggcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGVuLSBhbmQgZGVjb2RlcnMgZm9yIFZQOCBhbmQgVlA5IGJpdHN0cmVhbXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJtcHJvamVjdC5vcmcvY29kZS8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJtL2lzc3Vlcy9saXN0IgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkJTRCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDViMDQ3NTUwMTViZTkwMTc0NGE3OGNjMzBkMzkwZDQiCi0KLVNSQ19VUkkgKz0gImh0dHA6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VibS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgIGZpbGU6Ly9saWJ2cHgtY29uZmlndXJlLXN1cHBvcnQtYmxhbmstcHJlZml4LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQ5ZTU5ZGQxODRjYWEyNTU4ODY2ODNmYWNlYTU2ZmNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwNmQ2NzkwODYyNTY3NWY4ZTE4OGQzN2E4MWZiZmFmZGY1MDY4YjA5ZDlhYTUyNzAyYjZmYmU2MDFjNzY3OTciCi0KLSMgZmZtcGVnIGxpbmtzIHdpdGggdGhpcyBhbmQgZmFpbHMKLSMgc3lzcm9vdHMvYXJtdjR0LW9lLWxpbnV4LWdudWVhYmkvdXNyL2xpYi9saWJ2cHguYSh2cHhfZW5jb2Rlci5jLm8pKC50ZXh0KzB4YzQpOiB1bnJlc29sdmFibGUgUl9BUk1fVEhNX0NBTEwgcmVsb2NhdGlvbiBhZ2FpbnN0IHN5bWJvbCBgbWVtY3B5QEBHTElCQ18yLjQnCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotQ0ZMQUdTICs9ICItZlBJQyIKLQotZXhwb3J0IENDCi1leHBvcnQgTEQgPSAiJHtDQ30iCi0KLVZQWFRBUkdFVF9hcm12NXRlID0gImFybXY1dGUtbGludXgtZ2NjIgotVlBYVEFSR0VUX2FybXY2ID0gImFybXY2LWxpbnV4LWdjYyIKLVZQWFRBUkdFVF9hcm12N2EgPSAiYXJtdjctbGludXgtZ2NjIgotVlBYVEFSR0VUID89ICJnZW5lcmljLWdudSIKLQotQ09ORklHVVJFT1BUUyA9ICIgXAotICAgIC0tdGFyZ2V0PSR7VlBYVEFSR0VUfSBcCi0gICAgLS1lbmFibGUtdnA5IFwKLSAgICAtLWVuYWJsZS1saWJzIFwKLSAgICAtLWRpc2FibGUtaW5zdGFsbC1kb2NzIFwKLSAgICAtLWRpc2FibGUtc3RhdGljIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLXNpemUtbGltaXQ9MTYzODR4MTYzODQgXAotIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJtL2xpYnZweF8xLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvd2VibS9saWJ2cHhfMS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE3Y2RhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvd2VibS9saWJ2cHhfMS42LjEuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJWUFggbXVsdGktZm9ybWF0IGNvZGVjIgorREVTQ1JJUFRJT04gPSAiVGhlIEJTRC1saWNlbnNlZCBsaWJ2cHggcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGVuLSBhbmQgZGVjb2RlcnMgZm9yIFZQOCBhbmQgVlA5IGJpdHN0cmVhbXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJtcHJvamVjdC5vcmcvY29kZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJtL2lzc3Vlcy9saXN0IgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCitMSUNFTlNFID0gIkJTRCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDViMDQ3NTUwMTViZTkwMTc0NGE3OGNjMzBkMzkwZDQiCisKK1NSQ19VUkkgKz0gImh0dHA6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VibS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgIGZpbGU6Ly9saWJ2cHgtY29uZmlndXJlLXN1cHBvcnQtYmxhbmstcHJlZml4LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImExOTUxOGM4MTExZmE5M2JkYWJkZDg1MjU5MTYyNjExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjMmMwYzJhOTdmYmE5NDc0OTQzYmUzNGVlMzkzMzdkZWU3NTY3ODBmYzEyODcwYmExZGM2ODM3MjU4NmE4MTkiCisKKyMgZmZtcGVnIGxpbmtzIHdpdGggdGhpcyBhbmQgZmFpbHMKKyMgc3lzcm9vdHMvYXJtdjR0LW9lLWxpbnV4LWdudWVhYmkvdXNyL2xpYi9saWJ2cHguYSh2cHhfZW5jb2Rlci5jLm8pKC50ZXh0KzB4YzQpOiB1bnJlc29sdmFibGUgUl9BUk1fVEhNX0NBTEwgcmVsb2NhdGlvbiBhZ2FpbnN0IHN5bWJvbCBgbWVtY3B5QEBHTElCQ18yLjQnCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworQ0ZMQUdTICs9ICItZlBJQyIKKworZXhwb3J0IENDCitleHBvcnQgTEQgPSAiJHtDQ30iCisKK1ZQWFRBUkdFVF9hcm12NXRlID0gImFybXY1dGUtbGludXgtZ2NjIgorVlBYVEFSR0VUX2FybXY2ID0gImFybXY2LWxpbnV4LWdjYyIKK1ZQWFRBUkdFVF9hcm12N2EgPSAiYXJtdjctbGludXgtZ2NjIgorVlBYVEFSR0VUID89ICJnZW5lcmljLWdudSIKKworQ09ORklHVVJFT1BUUyA9ICIgXAorICAgIC0tdGFyZ2V0PSR7VlBYVEFSR0VUfSBcCisgICAgLS1lbmFibGUtdnA5IFwKKyAgICAtLWVuYWJsZS1saWJzIFwKKyAgICAtLWRpc2FibGUtaW5zdGFsbC1kb2NzIFwKKyAgICAtLWRpc2FibGUtc3RhdGljIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNpemUtbGltaXQ9MTYzODR4MTYzODQgXAorIgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9mb3h0cm90Z3BzL2ZveHRyb3RncHNfMS4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2ZveHRyb3RncHMvZm94dHJvdGdwc18xLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkxY2JjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2ZveHRyb3RncHMvZm94dHJvdGdwc18xLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiRm94dHJvdEdQUyBpcyBhIG1hcCBhbmQgR1BTIGFwcGxpY2F0aW9uIHVzaW5nIE9wZW5TdHJlZXRNYXAiCi1BVVRIT1IgPSAiSm9zaHVhIEp1ZHNvbiBSb3NlbiA8cm96emluQGdlZWtzcGFjZS5jb20+IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mb3h0cm90Z3BzLm9yZy8iCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbnMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi1ERVBFTkRTID0gImN1cmwgZ3RrKyBsaWJnbGFkZSBzcWxpdGUzIGxpYmV4aWYgZ3BzZCBibHVlejQgaW50bHRvb2wtbmF0aXZlIgotCi1QTkJMQUNLTElTVFtmb3h0cm90Z3BzXSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVlejUnLCAnYmx1ZXo1IGNvbmZsaWN0cyB3aXRoIGJsdWV6NCBhbmQgYmx1ZXo1IGlzIHNlbGVjdGVkIGluIERJU1RST19GRUFUVVJFUycsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mb3h0cm90Z3BzLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNjc3N2Q0NDhlZTlkM2JhMTk1ZjlkMjZlYTkwZTMxNjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWU5NzA2Mjg1NTEwNTU0Y2MwODEzYWM5MjUyMmUwZDE2NzJiMGRkYjA2NTMwN2JmYWNmY2ZmM2MzMjhmNmFkYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUgZ2NvbmYKLQotUFIgPSAicjIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGlmIFsgLWYgJHtTfS9jb25maWd1cmUuaW4gXSA7IHRoZW4KLSAgICBtdiAke1N9L2NvbmZpZ3VyZS5pbiAke1N9L2NvbmZpZ3VyZS5hYwotICAgIGZpCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24gcGVybCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImdwc2QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dkYWwvZ2RhbF8xLjExLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dkYWwvZ2RhbF8xLjExLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlODIxYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9nZGFsL2dkYWxfMS4xMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiR0RBTCBpcyBhIHRyYW5zbGF0b3IgbGlicmFyeSBmb3IgcmFzdGVyIGdlb3NwYXRpYWwgZGF0YSBmb3JtYXRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nZGFsLm9yZy8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVFhUO21kNT0wOTUyZTE3OTY5ZmFiMTIyMjcwOTZiNTIyOGYyMzE0OSIKLQotREVQRU5EUyA9ICJwcm9qIHNxbGl0ZTMgdGlmZiBqc29uLWMiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZG93bmxvYWQub3NnZW8ub3JnL2dkYWwvJHtQVn0vJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmUxMjZkN2M2NjA1NjkxZDM4ZjNlNzFiOTQ1ZjVjNzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjBlMTA0MmNmZjE1YTcxMDM4NDU5YTI5OTczMmZiMzQyNDI4YWVhOTkxMmYzMmRmMzBjODU3OTBmY2FiNjMwMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXBlcmwgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1waHAgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1ydWJ5IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcHl0aG9uIFwKLSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWdyYXNzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliZ3Jhc3MgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1jZml0c2lvIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZGRzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZ3RhIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGNpZHNrIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtb2dkaSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWZtZSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWhkZjQgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1oZGY1IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGcgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1qcGVnMTIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1vZ2RpIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbmV0Y2RmIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtb3BlbmpwZWcgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1mZ2RiIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZWN3IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQta2FrYWR1IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbXJzaWQgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1qcDJtcnNpZCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LW1yc2lkX2xpZGFyIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbXNnIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtYnNiIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZ3JpYiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LW15c3FsIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtaW5ncmVzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtb2RiYyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWRvZHNfcm9vdCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXhtbDIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1zcGF0aWFsaXRlIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGNyZSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWR3Z2RpcmVjdCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWR3Z2RpcmVjdCBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWlkYiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNkZSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNkZS12ZXJzaW9uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZXBzaWxvbiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXdlYnAgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1vcGVuY2wgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1vcGVuY2wtaW5jbHVkZSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LW9wZW5jbC1saWIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1mcmVleGwgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wYW0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wb3BwbGVyIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcG9kb2ZvIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcG9kb2ZvLWxpYiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXBvZG9mby1leHRyYS1saWItZm9yLXRlc3QgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1zdGF0aWNfcHJvajQgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wZXJsIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGhwIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcnVieSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXB5dGhvbiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWphdmEgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1tZGIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1qdm0tbGliIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtanZtLWxpYi1hZGQtcnBhdGggXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1yYXNkYW1hbiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWFybWFkaWxsbyBcCi0gICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wY3Jhc3Rlcj1pbnRlcm5hbCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWdlb3RpZmY9aW50ZXJuYWwgXAotICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1saWJ0aWZmPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWxpYmpzb24tYz0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1leHBhdD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotIgotCi1FWFRSQV9PRU1BS0UgKz0gIklOU1RfREFUQT0iJHtkYXRhZGlyfS9nZGFsIiIKLQotUEFDS0FHRUNPTkZJRyA/PSAiZ2VvcyBwbmcgamFzcGVyIgotUEFDS0FHRUNPTkZJR1tnZW9zXSA9ICItLXdpdGgtZ2VvcywtLXdpdGhvdXQtZ2VvcyxnZW9zIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLXdpdGgtbGlibHptYSwtLXdpdGhvdXQtbGlibHptYSx4eiIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0td2l0aC1naWYsLS13aXRob3V0LWdpZixnaWZsaWIiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0td2l0aC1qcGVnLC0td2l0aG91dC1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW3pdID0gIi0td2l0aC1saWJ6LC0td2l0aG91dC1saWJ6LHpsaWIiCi1QQUNLQUdFQ09ORklHW2phc3Blcl0gPSAiLS13aXRoLWphc3BlciwtLXdpdGhvdXQtamFzcGVyLGphc3BlciIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS13aXRoLWN1cmwsLS13aXRob3V0LWN1cmwsY3VybCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgaGFzIG1hbnkgaGFyZGNvZGVkIHBhdGhzIHRvIHNlYXJjaAotICAgICMgZm9yIHRoZSBsaWJyYXJ5IGhlYWRlcnMgd2hlbiB1c2luZyBleHRlcm5hbCBsaWJyYXJpZXMsCi0gICAgIyB3b3JrYXJvdW5kIGl0LgotICAgIHNlZCAtZSAncywvdXNyL2luY2x1ZGUsTk9OX0VYSVNURU5UX0RJUixnJyBcCi0gICAgICAgIC1lICdzLC91c3IvbGliLE5PTl9FWElTVEVOVF9ESVIsZycgXAotICAgICAgICAtaSAke1N9L2NvbmZpZ3VyZS5pbgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkYWxwbHVnaW5zIgotCi0jIHwgZ2RhbHNlcnZlci5jOjEyNDoyMTogZXJyb3I6IHN0b3JhZ2Ugc2l6ZSBvZiAnc0hpbnRzJyBpc24ndCBrbm93bgotIyB8ICAgICAgc3RydWN0IGFkZHJpbmZvIHNIaW50czsKLSMgfCAgICAgICAgICAgICAgICAgICAgICBeCi1QTkJMQUNLTElTVFtnZGFsXSA/PSAiQlJPS0VOOiBmYWlscyB0byBidWlsZCB3aXRoIGdjYy01IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLUNoZWNrLWZvci1fX1NURENfTk9fQVRPTUlDU19fLWJlZm9yZS11c2luZy1zdGRhdG9taWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDEtQ2hlY2stZm9yLV9fU1REQ19OT19BVE9NSUNTX18tYmVmb3JlLXVzaW5nLXN0ZGF0b21pYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhYzVhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDEtQ2hlY2stZm9yLV9fU1REQ19OT19BVE9NSUNTX18tYmVmb3JlLXVzaW5nLXN0ZGF0b21pYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb20gYzMwNzE2YmU5ZTYxNTUxM2ZlNjY5OTNmZDNjZGM4MThjM2Q3MDQxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJHYXJ5IEUuIE1pbGxlciIgPGdlbUByZWxsaW0uY29tPgotRGF0ZTogU3VuLCAxNSBNYXIgMjAxNSAxMTo1MTo0NSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvM10gQ2hlY2sgZm9yIF9fU1REQ19OT19BVE9NSUNTX18gYmVmb3JlIHVzaW5nIHN0ZGF0b21pYy5oCi0KLS0tLQotIFNDb25zdHJ1Y3QgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9TQ29uc3RydWN0IGIvU0NvbnN0cnVjdAotaW5kZXggYWRmNDczZC4uNTY2YzE0YSAxMDA2NDQKLS0tLSBhL1NDb25zdHJ1Y3QKLSsrKyBiL1NDb25zdHJ1Y3QKLUBAIC02MzMsNyArNjMzLDcgQEAgZWxzZToKLSAgICAgICAgIGFubm91bmNlKCJZb3UgZG8gbm90IGhhdmUga2VybmVsIENBTmJ1cyBhdmFpbGFibGUuIikKLSAgICAgICAgIGVudlsibm1lYTIwMDAiXSA9IEZhbHNlCi0gCi0tICAgIGlmIGNvbmZpZy5DaGVja0hlYWRlcigic3RkYXRvbWljLmgiKToKLSsgICAgaWYgbm90IGNvbmZpZy5DaGVja0NvbXBpbGVyRGVmaW5lcygiX19TVERDX05PX0FUT01JQ1NfXyIpIGFuZCBjb25maWcuQ2hlY2tIZWFkZXIoInN0ZGF0b21pYy5oIik6Ci0gICAgICAgICBjb25mZGVmcy5hcHBlbmQoIiNkZWZpbmUgSEFWRV9TVERBVE9NSUNfSCAxXG4iKQotICAgICBlbHNlOgotIAljb25mZGVmcy5hcHBlbmQoIi8qICN1bmRlZiBIQVZFX1NUREFUT01JQ19IICovXG4iKQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDEtSW5jbHVkZS1zdGRhdG9taWMuaC1vbmx5LWluLUMtbW9kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1JbmNsdWRlLXN0ZGF0b21pYy5oLW9ubHktaW4tQy1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzkxNjdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1JbmNsdWRlLXN0ZGF0b21pYy5oLW9ubHktaW4tQy1tb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSA3OWY2ZDkxMzMzNzgzMjVkNzBhOTJlNjZmNzM1MmMxYmVjZWZiYjg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR2xlYiBTbWlybm9mZiA8Z2xlYml1c0BGcmVlQlNELm9yZz4KLURhdGU6IFNhdCwgMTYgTWF5IDIwMTUgMDI6NDc6MjggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSA8c3RkYXRvbWljLmg+IG9ubHkgaW4gQyBtb2RlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGZyb20gMy4xNQotCi1XaXRob3V0IHRoaXMgYnVpbGQgd2l0aCBnY2MtNS4yIGZhaWxzIHdpdGg6Ci18IGFybS1vZS1saW51eC1nbnVlYWJpLWcrKyAtbWFyY2g9YXJtdjR0IC1tdGh1bWIgLW10aHVtYi1pbnRlcndvcmsgLW10dW5lPWFybTkyMHQgLS1zeXNyb290PS9PRS9idWlsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvb20tZ3RhMDIgLW8gY2xvY2tfZ2V0dGltZS1xdC5vcyAtYyAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC0tc3lzcm9vdD0vT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL29tLWd0YTAyIC1XZXh0cmEgLVdhbGwgLVduby11bmluaXRpYWxpemVkIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdjYXN0LWFsaWduIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVdwb2ludGVyLWFyaXRoIC1XcmV0dXJuLXR5cGUgLXB0aHJlYWQgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtZyAtTzAgLXB0aHJlYWQgLWZQSUMgLURVU0VfUVQgLURRVF9TSEFSRUQgLUkvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL29tLWd0YTAyL3Vzci9pbmNsdWRlL2RidXMtMS4wIC1JL09FL2J1aWxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9vbS1ndGEwMi91c3IvbGliL2RidXMtMS4wL2luY2x1ZGUgLUkvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL29tLWd0YTAyL3Vzci9pbmNsdWRlL3F0NC9RdE5ldHdvcmsgLUkvT0UvYnVpbGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL29tLWd0YTAyL3Vzci9pbmNsdWRlL3F0NCAtSS9PRS9idWlsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMvb20tZ3RhMDIvdXNyL2luY2x1ZGUvcXQ0L1F0Q29yZSBjbG9ja19nZXR0aW1lLmMKLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGNvbXBpbGVyLmg6NTA6MCwKLXwgICAgICAgICAgICAgICAgICBmcm9tIGNsb2NrX2dldHRpbWUuYzoxMDoKLXwgL09FL2J1aWxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYi9hcm0tb2UtbGludXgtZ251ZWFiaS9nY2MvYXJtLW9lLWxpbnV4LWdudWVhYmkvNS4yLjAvaW5jbHVkZS9zdGRhdG9taWMuaDo0MDo5OiBlcnJvcjogJ19BdG9taWMnIGRvZXMgbm90IG5hbWUgYSB0eXBlCi18ICB0eXBlZGVmIF9BdG9taWMgX0Jvb2wgYXRvbWljX2Jvb2w7Ci18ICAgICAgICAgIF4KLS4uLi4KLQotTW9yZSBpbmZvOgotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjA5MzIKLQotU2lnbmVkLW9mZi1ieTogR2FyeSBFLiBNaWxsZXIgPGdlbUByZWxsaW0uY29tPgotLS0tCi0gY29tcGlsZXIuaCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb21waWxlci5oIGIvY29tcGlsZXIuaAotaW5kZXggODM3YzkzNS4uMDM0MzBjMCAxMDA2NDQKLS0tLSBhL2NvbXBpbGVyLmgKLSsrKyBiL2NvbXBpbGVyLmgKLUBAIC02Niw5ICs2Niw5IEBACi0gICAgIH0gd2hpbGUgKDApCi0gCi0gI2lmZGVmIEhBVkVfU1REQVRPTUlDX0gKLS0jaWZuZGVmIF9fQ09WRVJJVFlfXwkvKiBDb3Zlcml0eSBpcyBjb25mdXNlZCBieSBhIEdOVSB0eXBlZGVmICovCi0rI2lmICFkZWZpbmVkKF9fQ09WRVJJVFlfXykgJiYgIWRlZmluZWQoX19jcGx1c3BsdXMpCi0gI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgotLSNlbmRpZiAvKiBfX0NPVkVSSVRZX18gKi8KLSsjZW5kaWYgLyogX19DT1ZFUklUWV9fIHx8IF9fY3BsdXNwbHVzICovCi0gI2VuZGlmIC8qIEhBVkVfU1REQVRPTUlDX0ggKi8KLSAKLSAjaWZkZWYgSEFWRV9PU0FUT01JQ19ICi0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1TQ29uc3RydWN0LXJlc3BlY3Qtc3lzcm9vdC1hbHNvLWluLVNQTElOVE9QVFMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDEtU0NvbnN0cnVjdC1yZXNwZWN0LXN5c3Jvb3QtYWxzby1pbi1TUExJTlRPUFRTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDEzNGY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1TQ29uc3RydWN0LXJlc3BlY3Qtc3lzcm9vdC1hbHNvLWluLVNQTElOVE9QVFMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDNjNWZiM2E4NjkxYWM3MTFlYTkzZWRmOGUwYjQyYmZmYzYyYjE5N2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI0IEFwciAyMDEyIDExOjUyOjM1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBTQ29uc3RydWN0OiByZXNwZWN0IHN5c3Jvb3QgYWxzbyBpbiBTUExJTlRPUFRTCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbmlzICdHTlV0b28nIENhcmlrbGkgPEdOVXRvb0Buby1sb2cub3JnPgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgQS4gQmlnb3QgPHBhYkBwYWJpZ290LmNvbT4KLS0tLQotIFNDb25zdHJ1Y3QgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKLWluZGV4IDE0ZTJmNTkuLmYwY2FmYTggMTAwNjQ0Ci0tLS0gYS9TQ29uc3RydWN0Ci0rKysgYi9TQ29uc3RydWN0Ci1AQCAtMTQxNCw3ICsxNDE0LDEwIEBAIGRlZiBVdGlsaXR5KHRhcmdldCwgc291cmNlLCBhY3Rpb24pOgotICMgUmVwb3J0IHNwbGludCB3YXJuaW5ncwotICMgTm90ZTogdGVzdF9iaXRzLmMgaXMgdW5zcGxpbnRhYmxlIGJlY2F1c2Ugb2YgdGhlIFBSSTY0IG1hY3Jvcy4KLSAjIElmIHlvdSBnZXQgcHJlcHJvY2Vzc29yIG9yIGZhdGFsIGVycm9ycywgYWRkICtzaG93c2Nhbi4KLS1zcGxpbnRvcHRzID0gIi1JL3Vzci9pbmNsdWRlL2xpYnVzYi0xLjAgK3F1aWV0IgotK2lmIG5vdCBlbnZbJ3N5c3Jvb3QnXToKLSsgICAgc3BsaW50b3B0cyA9ICItSS91c3IvaW5jbHVkZS9saWJ1c2ItMS4wICtxdWlldCIKLStlbHNlOgotKyAgICBzcGxpbnRvcHRzID0gIi1JJXMvdXNyL2luY2x1ZGUvbGlidXNiLTEuMCArcXVpZXQiICUgZW52WydzeXNyb290J10KLSAjIHNwbGludCBkb2VzIG5vdCBrbm93IGFib3V0IG11bHRpLWFyY2gsIHdvcmsgYXJvdW5kIHRoYXQKLSBtYV9zdGF0dXMsIG1hID0gX2dldHN0YXR1c291dHB1dCgnZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9NVUxUSUFSQ0gnKQotIGlmIG1hX3N0YXR1cyA9PSAwOgotLS0gCi0xLjguNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyN2M2NzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDU0M2Y3OTIyMjUyMGNjNmFiNjVkMjBmOWZhMzU2ZGFjNWM4NDhlM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxNyBBdWcgMjAxNiAwMjoxNjoxMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIHN5cy90dHlkZWZhdWx0cy5oCi0KLVRoaXMgaXMgbmVlZGVkIGZvciBDVFJMIGRlZmluaXRpb24sIGFzIGV4cG9zZWQgYnkgbXVzbCBvbiBnbGliYwotdGhpcyBpbmNsdWRlIGZpbGUgZ2V0cyBwdWxsZWQgaW5kaXJlY3RseS4KLQotL3Vzci9zcmMvZGVidWcvZ3BzZC8zLjE0LXIwL2dwc2QtMy4xNC9ncHNtb24uYzo2MDU6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYENUUkwnCi1jbGFuZy0zLjk6IGVycm9yOiBsaW5rZXIgY29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgMSAodXNlIC12IHRvIHNlZSBpbnZvY2F0aW9uKQotc2NvbnM6ICoqKiBbZ3BzbW9uXSBFcnJvciAxCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ3BzbW9uLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2dwc21vbi5jIGIvZ3BzbW9uLmMKLWluZGV4IGJlZTA1YjguLmRhZWQ4MTggMTAwNjQ0Ci0tLS0gYS9ncHNtb24uYwotKysrIGIvZ3BzbW9uLmMKLUBAIC0yMCw2ICsyMCw3IEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+Ci0rI2luY2x1ZGUgPHN5cy90dHlkZWZhdWx0cy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpZm5kZWYgU19TUExJTlRfUwotICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDEtbGliZ3BzZC1jb3JlLUZpeC1pc3N1ZS13aXRoLUFDVElWQVRFLWhvb2stbm90LWJlaW5nLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1saWJncHNkLWNvcmUtRml4LWlzc3VlLXdpdGgtQUNUSVZBVEUtaG9vay1ub3QtYmVpbmctLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTA2Nzk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1saWJncHNkLWNvcmUtRml4LWlzc3VlLXdpdGgtQUNUSVZBVEUtaG9vay1ub3QtYmVpbmctLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA2ZmYwOTliMWJhOGRlNzRkZjlkZGViNjFlMzgyNTI2NGI5NmVmNjkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTW9yaXR6IEZpc2NoZXIgPG1vcml0ei5maXNjaGVyQGV0dHVzLmNvbT4KLURhdGU6IFR1ZSwgMjIgRGVjIDIwMTUgMTk6Mzg6MzEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliZ3BzZC1jb3JlOiBGaXggaXNzdWUgd2l0aCBBQ1RJVkFURSBob29rIG5vdCBiZWluZyBjYWxsZWQuCi0KLUluIHRoZSBjdXJyZW50IHN5c3RlbSBzZXNzaW9uLT5tb2RlIHNlZW1lZCB0byBpZ25vcmUgdGhlCi1PX09QVElNSVpFIGZsYWcsIGxlYWRpbmcgdG8gdGhlIEFDVElWQVRFIGhvb2sgYmVpbmcgaWdub3JlZC4KLQotQW5vdGhlciB3YXkgdG8gZml4IHRoaXMgd291bGQgYmUgdG8ga2VlcCB0aGUgc2Vzc2lvbi0+bW9kZQotY29uZGl0aW9uIHB1bGwgdXAgdGhlIGNoZWNrIGZvciBPX0NPTlRJTlVFLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQKLVRoaXMgcGF0Y2ggaXMgaW4gdXBzdHJlYW0gZ2l0Ci0KLVNpZ25lZC1vZmYtYnk6IE1vcml0eiBGaXNjaGVyIDxtb3JpdHouZmlzY2hlckBldHR1cy5jb20+Ci0tLS0KLSBsaWJncHNkX2NvcmUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdwc2RfY29yZS5jIGIvbGliZ3BzZF9jb3JlLmMKLWluZGV4IDMxZmVjMmEuLmE4NGU4NWYgMTAwNjQ0Ci0tLS0gYS9saWJncHNkX2NvcmUuYwotKysrIGIvbGliZ3BzZF9jb3JlLmMKLUBAIC01NDMsNyArNTQzLDcgQEAgaW50IGdwc2Rfb3BlbihzdHJ1Y3QgZ3BzX2RldmljZV90ICpzZXNzaW9uKQotIGludCBncHNkX2FjdGl2YXRlKHN0cnVjdCBncHNfZGV2aWNlX3QgKnNlc3Npb24sIGNvbnN0IGludCBtb2RlKQotIC8qIGFjcXVpcmUgYSBjb25uZWN0aW9uIHRvIHRoZSBHUFMgZGV2aWNlICovCi0gewotLSAgICBpZiAoc2Vzc2lvbi0+bW9kZSA9PSBPX09QVElNSVpFKQotKyAgICBpZiAobW9kZSA9PSBPX09QVElNSVpFKQotIAlncHNkX3J1bl9kZXZpY2VfaG9vaygmc2Vzc2lvbi0+Y29udGV4dC0+ZXJyb3V0LAotIAkJCSAgICAgc2Vzc2lvbi0+Z3BzZGF0YS5kZXYucGF0aCwgIkFDVElWQVRFIik7Ci0gICAgIHNlc3Npb24tPmdwc2RhdGEuZ3BzX2ZkID0gZ3BzZF9vcGVuKHNlc3Npb24pOwotLS0gCi0yLjQuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDItQWRkLWEtdGVzdC1mb3ItQzExLWFuZC1jaGVjay13ZS1oYXZlLUMxMS1iZWZvcmUtdXNpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMi1BZGQtYS10ZXN0LWZvci1DMTEtYW5kLWNoZWNrLXdlLWhhdmUtQzExLWJlZm9yZS11c2luLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmVlMWJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMi1BZGQtYS10ZXN0LWZvci1DMTEtYW5kLWNoZWNrLXdlLWhhdmUtQzExLWJlZm9yZS11c2luLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSA5OTQ0NGIzZDJjNGE0ZjdmZDcxMjhlNjA0NjEwMDU3ODBkMGM1YzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkdhcnkgRS4gTWlsbGVyIiA8Z2VtQHJlbGxpbS5jb20+Ci1EYXRlOiBTdW4sIDE1IE1hciAyMDE1IDEyOjA1OjE1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBBZGQgYSB0ZXN0IGZvciBDMTEgYW5kIGNoZWNrIHdlIGhhdmUgQzExIGJlZm9yZSB1c2luZwotIHN0ZGF0b21pYy5oCi0KLS0tLQotIFNDb25zdHJ1Y3QgfCAxOSArKysrKysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1NDb25zdHJ1Y3QgYi9TQ29uc3RydWN0Ci1pbmRleCA1NjZjMTRhLi5mYWE4NjUxIDEwMDY0NAotLS0tIGEvU0NvbnN0cnVjdAotKysrIGIvU0NvbnN0cnVjdAotQEAgLTQ3Myw2ICs0NzMsMjAgQEAgZGVmIENoZWNrQ29tcGlsZXJEZWZpbmVzKGNvbnRleHQsIGRlZmluZSk6Ci0gICAgIGNvbnRleHQuUmVzdWx0KHJldCkKLSAgICAgcmV0dXJuIHJldAotIAotKyMgQ2hlY2sgaWYgdGhpcyBjb21waWxlciBpcyBDMTEgb3IgYmV0dGVyCi0rZGVmIENoZWNrQzExKGNvbnRleHQpOgotKyAgICBjb250ZXh0Lk1lc3NhZ2UoICdDaGVja2luZyBpZiBjb21waWxlciBpcyBDMTEgLi4uJyApCi0rICAgIHJldCA9IGNvbnRleHQuVHJ5TGluaygiIiIKLSsJI2lmIChfX1NURENfVkVSU0lPTl9fIDwgMjAxMTEyTCkgCi0rICAgICAgICAjZXJyb3IgTm90IEMxMQotKyAgICAgICAgI2VuZGlmCi0rICAgICAgICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSsgICAgIiIiLCcuYycpCi0rICAgIGNvbnRleHQuUmVzdWx0KHJldCkKLSsgICAgcmV0dXJuIHJldAotKwotIGRlZiBHZXRMb2FkUGF0aChjb250ZXh0KToKLSAgICAgY29udGV4dC5NZXNzYWdlKCJHZXR0aW5nIHN5c3RlbSBsb2FkIHBhdGggLi4uIikKLSAKLUBAIC00OTEsNiArNTA1LDcgQEAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2hlY2tYc2x0cHJvYycgOiBDaGVja1hzbHRwcm9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDaGVja0NvbXBpbGVyT3B0aW9uJyA6IENoZWNrQ29tcGlsZXJPcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoZWNrQ29tcGlsZXJEZWZpbmVzJyA6IENoZWNrQ29tcGlsZXJEZWZpbmVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDaGVja0MxMScgOiBDaGVja0MxMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2hlY2tIZWFkZXJEZWZpbmVzJyA6IENoZWNrSGVhZGVyRGVmaW5lc30pCi0gCi0gCi1AQCAtNjMzLDcgKzY0OCw5IEBAIGVsc2U6Ci0gICAgICAgICBhbm5vdW5jZSgiWW91IGRvIG5vdCBoYXZlIGtlcm5lbCBDQU5idXMgYXZhaWxhYmxlLiIpCi0gICAgICAgICBlbnZbIm5tZWEyMDAwIl0gPSBGYWxzZQotIAotLSAgICBpZiBub3QgY29uZmlnLkNoZWNrQ29tcGlsZXJEZWZpbmVzKCJfX1NURENfTk9fQVRPTUlDU19fIikgYW5kIGNvbmZpZy5DaGVja0hlYWRlcigic3RkYXRvbWljLmgiKToKLSsgICAgIyBjaGVjayBmb3IgQzExIG9yIGJldHRlciwgYW5kIF9fU1REQ19fTk9fQVRPTUlDU19fIGlzIG5vIGRlZmluZWQKLSsgICAgIyBiZWZvcmUgbG9va2luZyBmb3Igc3RkYXRvbWljLmgKLSsgICAgaWYgbm90IGNvbmZpZy5DaGVja0MxMSgpIGFuZCAgbm90IGNvbmZpZy5DaGVja0NvbXBpbGVyRGVmaW5lcygiX19TVERDX05PX0FUT01JQ1NfXyIpIGFuZCBjb25maWcuQ2hlY2tIZWFkZXIoInN0ZGF0b21pYy5oIik6Ci0gICAgICAgICBjb25mZGVmcy5hcHBlbmQoIiNkZWZpbmUgSEFWRV9TVERBVE9NSUNfSCAxXG4iKQotICAgICBlbHNlOgotIAljb25mZGVmcy5hcHBlbmQoIi8qICN1bmRlZiBIQVZFX1NUREFUT01JQ19IICovXG4iKQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDItU0NvbnN0cnVjdC1yZW1vdmUtcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDItU0NvbnN0cnVjdC1yZW1vdmUtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4M2E2NjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAyLVNDb25zdHJ1Y3QtcmVtb3ZlLXJwYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBkMDkwNjM4ZmY5ODNlNTA5MTYyZDVlM2I2MmFhNDkxOGRlNGFhNWZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNCBBcHIgMjAxMiAxNjoyNDozNSArMDIwMAotU3ViamVjdDogW1BBVENIIDIvNF0gU0NvbnN0cnVjdDogcmVtb3ZlIHJwYXRoCi0KLSogZXZlbiB3aXRoIGNvcnJlY3QgcHJlZml4ICh3aXRob3V0IERFU1RESVIpIGluY2x1ZGVkIGl0J3MgcmVkdW5kYW50Ci0gIFdBUk5JTkc6IFFBIElzc3VlOiBsaWJncHM6Ci0gIC93b3JrL2FybXY0dC1vZS1saW51eC1nbnVlYWJpL2dwc2QvZ3BzZC0zLjUtcjAvcGFja2FnZXMtc3BsaXQvbGliZ3BzL3Vzci9saWIvbGliZ3BzLnNvLjIwLjAKLSAgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCi0qIGFuZCB3aXRoIHByZWZpeCBmcm9tIHNjb25zLmJiY2xhc3MgaXQncyBpbnZhbGlkCi0gIFdBUk5JTkc6IFFBIElzc3VlOiBwYWNrYWdlIGxpYmdwcyBjb250YWlucyBiYWQgUlBBVEgKLSAgL09FL3Noci1jb3JlL3RtcC1lZ2xpYmMvd29yay9hcm12NHQtb2UtbGludXgtZ251ZWFiaS9ncHNkL2dwc2QtMy41LXIwL2ltYWdlL3Vzci9saWIKLSAgaW4gZmlsZQotICAvT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy93b3JrL2FybXY0dC1vZS1saW51eC1nbnVlYWJpL2dwc2QvZ3BzZC0zLjUtcjAvcGFja2FnZXMtc3BsaXQvbGliZ3BzL3Vzci9saWIvbGliZ3BzLnNvLjIwLjAKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbmlzICdHTlV0b28nIENhcmlrbGkgPEdOVXRvb0Buby1sb2cub3JnPgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgQS4gQmlnb3QgPHBhYkBwYWJpZ290LmNvbT4KLS0tLQotIFNDb25zdHJ1Y3QgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKLWluZGV4IGYwY2FmYTguLmZmNDY3MTMgMTAwNjQ0Ci0tLS0gYS9TQ29uc3RydWN0Ci0rKysgYi9TQ29uc3RydWN0Ci1AQCAtMTM0MCw4ICsxMzQwLDExIEBAIGlmIHF0X2VudjoKLSAgICAgYmluYXJ5aW5zdGFsbC5hcHBlbmQoTGlicmFyeUluc3RhbGwocXRfZW52LCBpbnN0YWxsZGlyKCdsaWJkaXInKSwgY29tcGlsZWRfcWdwc21tbGliKSkKLSAKLSBpZiBlbnZbInNoYXJlZCJdIGFuZCBlbnZbImNocnBhdGgiXToKLS0gICAgZW52LkFkZFBvc3RBY3Rpb24oYmluYXJ5aW5zdGFsbCwgJyRDSFJQQVRIIC1yICIlcyIgIiRUQVJHRVQiJyBcCi0tICAgICAgICAgICAgICAgICAgICAgICUgKGluc3RhbGxkaXIoJ2xpYmRpcicsIEZhbHNlKSwgKSkKLSsgICAgaWYgbm90IGVudlsnc3lzcm9vdCddOgotKyAgICAgICAgZW52LkFkZFBvc3RBY3Rpb24oYmluYXJ5aW5zdGFsbCwgJyRDSFJQQVRIIC1yICIlcyIgIiRUQVJHRVQiJyBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbnN0YWxsZGlyKCdsaWJkaXInLCBGYWxzZSksICkpCi0rICAgIGVsc2U6Ci0rICAgICAgICBlbnYuQWRkUG9zdEFjdGlvbihiaW5hcnlpbnN0YWxsLCAnJENIUlBBVEggLWQgIiRUQVJHRVQiJykKLSAKLSBpZiBub3QgZW52WydkZWJ1ZyddIGFuZCBub3QgZW52Wydwcm9maWxpbmcnXSBhbmQgZW52WydzdHJpcCddOgotICAgICBlbnYuQWRkUG9zdEFjdGlvbihiaW5hcnlpbnN0YWxsLCAnJFNUUklQICRUQVJHRVQnKQotLS0gCi0xLjguNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMy1XaG9vcHMtY2hlY2stZm9yLUMxMS1ub3QtZm9yLW5vdC1DMTEtaW4tc3RkYXRvbWljLmgtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAzLVdob29wcy1jaGVjay1mb3ItQzExLW5vdC1mb3Itbm90LUMxMS1pbi1zdGRhdG9taWMuaC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYjA5MjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNC8wMDAzLVdob29wcy1jaGVjay1mb3ItQzExLW5vdC1mb3Itbm90LUMxMS1pbi1zdGRhdG9taWMuaC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDY3NGM1MGVlNTRmZDdjZDMwNGU4YjNjNGIzM2QzZmYxMjcyZWQxOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiR2FyeSBFLiBNaWxsZXIiIDxnZW1AcmVsbGltLmNvbT4KLURhdGU6IFN1biwgMTUgTWFyIDIwMTUgMTI6MTc6NTEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIFdob29wcywgY2hlY2sgZm9yIEMxMSwgbm90IGZvciBub3QgQzExIGluIHN0ZGF0b21pYy5oCi0gdGVzdC4KLQotLS0tCi0gU0NvbnN0cnVjdCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1NDb25zdHJ1Y3QgYi9TQ29uc3RydWN0Ci1pbmRleCBmYWE4NjUxLi5mNGVhMTQ1IDEwMDY0NAotLS0tIGEvU0NvbnN0cnVjdAotKysrIGIvU0NvbnN0cnVjdAotQEAgLTY1MCw3ICs2NTAsNyBAQCBlbHNlOgotIAotICAgICAjIGNoZWNrIGZvciBDMTEgb3IgYmV0dGVyLCBhbmQgX19TVERDX19OT19BVE9NSUNTX18gaXMgbm8gZGVmaW5lZAotICAgICAjIGJlZm9yZSBsb29raW5nIGZvciBzdGRhdG9taWMuaAotLSAgICBpZiBub3QgY29uZmlnLkNoZWNrQzExKCkgYW5kICBub3QgY29uZmlnLkNoZWNrQ29tcGlsZXJEZWZpbmVzKCJfX1NURENfTk9fQVRPTUlDU19fIikgYW5kIGNvbmZpZy5DaGVja0hlYWRlcigic3RkYXRvbWljLmgiKToKLSsgICAgaWYgY29uZmlnLkNoZWNrQzExKCkgYW5kICBub3QgY29uZmlnLkNoZWNrQ29tcGlsZXJEZWZpbmVzKCJfX1NURENfTk9fQVRPTUlDU19fIikgYW5kIGNvbmZpZy5DaGVja0hlYWRlcigic3RkYXRvbWljLmgiKToKLSAgICAgICAgIGNvbmZkZWZzLmFwcGVuZCgiI2RlZmluZSBIQVZFX1NUREFUT01JQ19IIDFcbiIpCi0gICAgIGVsc2U6Ci0gCWNvbmZkZWZzLmFwcGVuZCgiLyogI3VuZGVmIEhBVkVfU1REQVRPTUlDX0ggKi9cbiIpCi0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTQvMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDk2YjVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBmMjIxZmE5NTljODBiNDNjNjU0MjY1MDBhNjgzNmExYjVjZjZmZTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTcgQXVnIDIwMTYgMDI6MTY6MTIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvdHR5ZGVmYXVsdHMuaAorCitUaGlzIGlzIG5lZWRlZCBmb3IgQ1RSTCBkZWZpbml0aW9uLCBhcyBleHBvc2VkIGJ5IG11c2wgb24gZ2xpYmMKK3RoaXMgaW5jbHVkZSBmaWxlIGdldHMgcHVsbGVkIGluZGlyZWN0bHkuCisKKy91c3Ivc3JjL2RlYnVnL2dwc2QvMy4xNC1yMC9ncHNkLTMuMTQvZ3BzbW9uLmM6NjA1OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBDVFJMJworY2xhbmctMy45OiBlcnJvcjogbGlua2VyIGNvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDEgKHVzZSAtdiB0byBzZWUgaW52b2NhdGlvbikKK3Njb25zOiAqKiogW2dwc21vbl0gRXJyb3IgMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitGb3Jld2FyZCBwb3J0IHRvIGdwc2QgMy4xNgorU2lnbmVkLW9mZi1ieTogTWF4IEtydW1tZW5hY2hlciA8bWF4LmtydW1tZW5hY2hlckB0b3JhZGV4LmNvbT4KKy0tLQorIGdwc21vbi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9ncHNtb24uYyBiL2dwc21vbi5jCitpbmRleCBlYWQ4NGQwLi5mMjA1Y2IxIDEwMDY0NAorLS0tIGEvZ3BzbW9uLmMKKysrKyBiL2dwc21vbi5jCitAQCAtMjAsNiArMjAsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorKyNpbmNsdWRlIDxzeXMvdHR5ZGVmYXVsdHMuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCistLSAKKzIuMTIuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE0LzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjAyZjk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFRDUC9JUCBEYWVtb24gc2ltcGxpZnlpbmcgdGhlIGNvbW11bmljYXRpb24gd2l0aCBHUFMgZGV2aWNlcyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMjE3YTIzZjQwOGU5MWM5NDM1OTQ0NzczNWJjMTgwMCIKLURFUEVORFMgPSAiZGJ1cyBkYnVzLWdsaWIgbmN1cnNlcyBweXRob24gbGlidXNiMSBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSBwcHMtdG9vbHMiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2dwc2QiCi0KLUVYVFJBTkFUSVZFUEFUSCArPSAiY2hycGF0aC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1TQ29uc3RydWN0LXJlc3BlY3Qtc3lzcm9vdC1hbHNvLWluLVNQTElOVE9QVFMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLVNDb25zdHJ1Y3QtcmVtb3ZlLXJwYXRoLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItX19TVERDX05PX0FUT01JQ1NfXy1iZWZvcmUtdXNpbmctc3RkYXRvbWljLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1BZGQtYS10ZXN0LWZvci1DMTEtYW5kLWNoZWNrLXdlLWhhdmUtQzExLWJlZm9yZS11c2luLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1XaG9vcHMtY2hlY2stZm9yLUMxMS1ub3QtZm9yLW5vdC1DMTEtaW4tc3RkYXRvbWljLmgtLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXN0ZGF0b21pYy5oLW9ubHktaW4tQy1tb2RlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1saWJncHNkLWNvcmUtRml4LWlzc3VlLXdpdGgtQUNUSVZBVEUtaG9vay1ub3QtYmVpbmctLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoIFwKLSAgICBmaWxlOi8vZ3BzZC1kZWZhdWx0IFwKLSAgICBmaWxlOi8vZ3BzZCBcCi0gICAgZmlsZTovLzYwLWdwc2QucnVsZXMgXAotICAgIGZpbGU6Ly9ncHNkLnNlcnZpY2UgXAotIgotU1JDX1VSSVttZDVzdW1dID0gImJjNzQ2NzAwOWI5OWUwN2JhNDYxMzc3YjVkYTZjMDM5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwNGZjODEyZjNjMTUyNWExYTQ4ZTA0YmY0ZDc3ZjlhODA2NmMyMDE0NDhkOTgwODlkZjg5ZDU4ZWY1M2E4Y2IiCi0KLWluaGVyaXQgc2NvbnMgdXBkYXRlLXJjLmQgcHl0aG9uLWRpciBweXRob25uYXRpdmUgc3lzdGVtZCBibHVldG9vdGgKLQotSU5JVFNDUklQVF9OQU1FID0gImdwc2QiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyAzNSIKLQotU1lTVEVNRF9PRVNDT05TID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJyxkKX0iCi0KLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotZXhwb3J0IFNUQUdJTkdfTElCRElSCi0KLUxERkxBR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJibHVlej0ndHJ1ZScsYmx1ZXo9J2ZhbHNlJywke0JMVUVafSIKLVBBQ0tBR0VDT05GSUdbcXRdID0gInF0PSd5ZXMnLHF0PSdubycscXQ0LXgxMS1mcmVlIgotRVhUUkFfT0VTQ09OUyA9ICIgXAotICAgIHN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKLSAgICBsaWJRZ3BzbW09J2ZhbHNlJyBcCi0gICAgZGVidWc9J3RydWUnIFwKLSAgICBzdHJpcD0nZmFsc2UnIFwKLSAgICBjaHJwYXRoPSd5ZXMnIFwKLSAgICBzeXN0ZW1kPScke1NZU1RFTURfT0VTQ09OU30nIFwKLSAgICBsaWJkaXI9JyR7bGliZGlyfScgXAotICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAotIgotIyB0aGlzIGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIHRoZW4gY2hycGF0aCBpcyBub3QgZm91bmQgYW5kIG9ubHkgc3RhdGljIGxpYiBpcyBidWlsdAotIyB0YXJnZXQ9JHtIT1NUX1NZU30KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBQS0dfQ09ORklHX1BBVEg9IiR7UEtHX0NPTkZJR19QQVRIfSIKLSAgICBleHBvcnQgUEtHX0NPTkZJRz0iUEtHX0NPTkZJR19TWVNST09UX0RJUj1cIiR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1cIiBwa2ctY29uZmlnIgotICAgIGV4cG9ydCBTVEFHSU5HX1BSRUZJWD0iJHtTVEFHSU5HX0RJUl9IT1NUfS8ke3ByZWZpeH0iCi0gICAgZXhwb3J0IExJTktGTEFHUz0iJHtMREZMQUdTfSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIke1BLR19DT05GSUdfUEFUSH0iCi0gICAgZXhwb3J0IFBLR19DT05GSUc9IlBLR19DT05GSUdfU1lTUk9PVF9ESVI9XCIke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9XCIgcGtnLWNvbmZpZyIKLSAgICBleHBvcnQgU1RBR0lOR19QUkVGSVg9IiR7U1RBR0lOR19ESVJfSE9TVH0vJHtwcmVmaXh9IgotICAgIGV4cG9ydCBMSU5LRkxBR1M9IiR7TERGTEFHU30iCi0KLSAgICBleHBvcnQgREVTVERJUj0iJHtEfSIKLSAgICAjIHByZWZpeCBpcyB1c2VkIGZvciBSUEFUSCBhbmQgREVTVERJUi9wcmVmaXggZm9yIGluc3RhbGF0aW9uCi0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3Njb25zIHByZWZpeD0ke3ByZWZpeH0gaW5zdGFsbCAke0VYVFJBX09FU0NPTlN9fHwgXAotICAgICAgYmJmYXRhbCAic2NvbnMgaW5zdGFsbCBleGVjdXRpb24gZmFpbGVkLiIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZ3BzZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ncHNkLWRlZmF1bHQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZC5kZWZhdWx0Ci0KLSAgICAjc3VwcG9ydCBmb3IgdWRldgotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzYwLWdwc2QucnVsZXMgJHtEfS8ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAotICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZ3BzZC5ob3RwbHVnICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2LwotCi0gICAgI3N1cHBvcnQgZm9yIHB5dGhvbgotICAgIGluc3RhbGwgLWQgJHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ncHMKLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L2dwcy8qLnB5ICR7RH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vZ3BzCi0KLSAgICAjc3VwcG9ydCBmb3Igc3lzdGVtZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59LnNlcnZpY2UKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zeXN0ZW1kLyR7QlBOfS5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59LnNvY2tldAotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0tY29uZigpIHsKLSAgICB1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZCBncHNkLWRlZmF1bHRzICR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkLmRlZmF1bHQgMTAKLX0KLQotcGtnX3Bvc3RybV8ke1BOfS1jb25mKCkgewotICAgIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1yZW1vdmUgZ3BzZC1kZWZhdWx0cyAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZC5kZWZhdWx0Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJncHMgbGliZ3BzZCBweXRob24tcHlncHMtZGJnIHB5dGhvbi1weWdwcyBncHNkLXVkZXYgZ3BzZC1jb25mIGdwc2QtZ3BzY3RsIGdwcy11dGlscyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmRpci9saWJncHNkLnBjICR7bGliZGlyfS9wa2djb25mZGlyL2xpYmdwcy5wYyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJRZ3BzbW0ucHJsIgotCi1GSUxFU19weXRob24tcHlncHMtZGJnICs9ICIgJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9ncHMvLmRlYnVnIgotCi1SREVQRU5EU18ke1BOfSA9ICJncHNkLWdwc2N0bCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImdwc2QtY29uZiBncHNkLXVkZXYgZ3BzZC1tYWNoaW5lLWNvbmYiCi0KLVNVTU1BUllfZ3BzZC11ZGV2ID0gInVkZXYgcmVsZXZhbnQgZmlsZXMgdG8gdXNlIGdwc2QgaG90cGx1Z2dpbmciCi1GSUxFU19ncHNkLXVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vdWRldiAke3N5c2NvbmZkaXJ9L3VkZXYvKiIKLVJERVBFTkRTX2dwc2QtdWRldiArPSAidWRldiBncHNkLWNvbmYiCi0KLVNVTU1BUllfbGliZ3BzZCA9ICJDIHNlcnZpY2UgbGlicmFyeSB1c2VkIGZvciBjb21tdW5pY2F0aW5nIHdpdGggZ3BzZCIKLUZJTEVTX2xpYmdwc2QgPSAiJHtsaWJkaXJ9L2xpYmdwc2Quc28uKiIKLQotU1VNTUFSWV9saWJncHMgPSAiQyBzZXJ2aWNlIGxpYnJhcnkgdXNlZCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIGdwc2QiCi1GSUxFU19saWJncHMgPSAiJHtsaWJkaXJ9L2xpYmdwcy5zby4qIgotCi1TVU1NQVJZX2dwc2QtY29uZiA9ICJncHNkIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGluaXQgc2NyaXB0cyIKLUZJTEVTX2dwc2QtY29uZiA9ICIke3N5c2NvbmZkaXJ9IgotQ09ORkZJTEVTX2dwc2QtY29uZiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZC5kZWZhdWx0IgotCi1TVU1NQVJZX2dwc2QtZ3BzY3RsID0gIlRvb2wgZm9yIHR3ZWFraW5nIEdQUyBtb2RlcyIKLUZJTEVTX2dwc2QtZ3BzY3RsID0gIiR7YmluZGlyfS9ncHNjdGwiCi0KLVNVTU1BUllfZ3BzLXV0aWxzID0gIlV0aWxzIHVzZWQgZm9yIHNpbXVsYXRpbmcsIG1vbml0b3JpbmcsLi4uIGEgR1BTIgotRklMRVNfZ3BzLXV0aWxzID0gIiR7YmluZGlyfS8qIgotUkRFUEVORFNfZ3BzLXV0aWxzID0gInB5dGhvbi1weWdwcyIKLQotU1VNTUFSWV9weXRob24tcHlncHMgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIGdwc2QiCi1GSUxFU19weXRob24tcHlncHMgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLVJERVBFTkRTX3B5dGhvbi1weWdwcyA9ICJweXRob24tY29yZSBweXRob24tY3Vyc2VzIGdwc2QgcHl0aG9uLWpzb24iCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtQTn0uc29ja2V0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZkNzQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTYuYmIKQEAgLTAsMCArMSwxNDAgQEAKK1NVTU1BUlkgPSAiQSBUQ1AvSVAgRGFlbW9uIHNpbXBsaWZ5aW5nIHRoZSBjb21tdW5pY2F0aW9uIHdpdGggR1BTIGRldmljZXMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDIxN2EyM2Y0MDhlOTFjOTQzNTk0NDc3MzViYzE4MDAiCitERVBFTkRTID0gImRidXMgZGJ1cy1nbGliIG5jdXJzZXMgcHl0aG9uIGxpYnVzYjEgY2hycGF0aC1yZXBsYWNlbWVudC1uYXRpdmUgcHBzLXRvb2xzIgorUFJPVklERVMgPSAidmlydHVhbC9ncHNkIgorCitFWFRSQU5BVElWRVBBVEggKz0gImNocnBhdGgtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaCBcCisgICAgZmlsZTovL2dwc2QtZGVmYXVsdCBcCisgICAgZmlsZTovL2dwc2QgXAorICAgIGZpbGU6Ly82MC1ncHNkLnJ1bGVzIFwKKyAgICBmaWxlOi8vZ3BzZC5zZXJ2aWNlIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ODY5MWI1ZGU0Yzk0ZjgyZWM0MDYyYjA0MmI1ZWI2MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzU3OWFmMTNhNGQzZmUwYzViNzlmYTQ0YjVmNzVjOWYzY2FjNjc0OTM1N2YxZDk5Y2U1ZDM4YzA5YmMyMDI5IgorCitpbmhlcml0IHNjb25zIHVwZGF0ZS1yYy5kIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIHN5c3RlbWQgYmx1ZXRvb3RoIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJncHNkLWNvbmYiCitJTklUU0NSSVBUX05BTUUgPSAiZ3BzZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDM1IgorCitTWVNURU1EX09FU0NPTlMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLGQpfSIKKworZXhwb3J0IFNUQUdJTkdfSU5DRElSCitleHBvcnQgU1RBR0lOR19MSUJESVIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImJsdWV6PSd0cnVlJyxibHVlej0nZmFsc2UnLCR7QkxVRVp9IgorUEFDS0FHRUNPTkZJR1txdF0gPSAicXQ9J3llcycscXQ9J25vJyxxdDQteDExLWZyZWUiCitFWFRSQV9PRVNDT05TID0gIiBcCisgICAgc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAorICAgIGxpYlFncHNtbT0nZmFsc2UnIFwKKyAgICBkZWJ1Zz0ndHJ1ZScgXAorICAgIHN0cmlwPSdmYWxzZScgXAorICAgIGNocnBhdGg9J3llcycgXAorICAgIHN5c3RlbWQ9JyR7U1lTVEVNRF9PRVNDT05TfScgXAorICAgIGxpYmRpcj0nJHtsaWJkaXJ9JyBcCisgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCisiCisjIHRoaXMgY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgdGhlbiBjaHJwYXRoIGlzIG5vdCBmb3VuZCBhbmQgb25seSBzdGF0aWMgbGliIGlzIGJ1aWx0CisjIHRhcmdldD0ke0hPU1RfU1lTfQorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtQS0dfQ09ORklHX1BBVEh9IgorICAgIGV4cG9ydCBQS0dfQ09ORklHPSJQS0dfQ09ORklHX1NZU1JPT1RfRElSPVwiJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfVwiIHBrZy1jb25maWciCisgICAgZXhwb3J0IFNUQUdJTkdfUFJFRklYPSIke1NUQUdJTkdfRElSX0hPU1R9LyR7cHJlZml4fSIKKyAgICBleHBvcnQgTElOS0ZMQUdTPSIke0xERkxBR1N9IgorfQorCitkb19pbnN0YWxsKCkgeworICAgIGV4cG9ydCBQS0dfQ09ORklHX1BBVEg9IiR7UEtHX0NPTkZJR19QQVRIfSIKKyAgICBleHBvcnQgUEtHX0NPTkZJRz0iUEtHX0NPTkZJR19TWVNST09UX0RJUj1cIiR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1cIiBwa2ctY29uZmlnIgorICAgIGV4cG9ydCBTVEFHSU5HX1BSRUZJWD0iJHtTVEFHSU5HX0RJUl9IT1NUfS8ke3ByZWZpeH0iCisgICAgZXhwb3J0IExJTktGTEFHUz0iJHtMREZMQUdTfSIKKworICAgIGV4cG9ydCBERVNURElSPSIke0R9IgorICAgICMgcHJlZml4IGlzIHVzZWQgZm9yIFJQQVRIIGFuZCBERVNURElSL3ByZWZpeCBmb3IgaW5zdGFsYXRpb24KKyAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgcHJlZml4PSR7cHJlZml4fSBpbnN0YWxsICR7RVhUUkFfT0VTQ09OU318fCBcCisgICAgICBiYmZhdGFsICJzY29ucyBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9ncHNkICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2dwc2QtZGVmYXVsdCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkLmRlZmF1bHQKKworICAgICNzdXBwb3J0IGZvciB1ZGV2CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vNjAtZ3BzZC5ydWxlcyAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCisgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ncHNkLmhvdHBsdWcgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvCisKKyAgICAjc3VwcG9ydCBmb3IgcHl0aG9uCisgICAgaW5zdGFsbCAtZCAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2dwcworICAgIGluc3RhbGwgLW0gNzU1ICR7U30vZ3BzLyoucHkgJHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ncHMKKworICAgICNzdXBwb3J0IGZvciBzeXN0ZW1kCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc2VydmljZQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3N5c3RlbWQvJHtCUE59LnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc29ja2V0Cit9CisKK1BBQ0tBR0VTID0rICJsaWJncHMgbGliZ3BzZCBweXRob24tcHlncHMtZGJnIHB5dGhvbi1weWdwcyBncHNkLXVkZXYgZ3BzZC1jb25mIGdwc2QtZ3BzY3RsIGdwcy11dGlscyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmRpci9saWJncHNkLnBjICR7bGliZGlyfS9wa2djb25mZGlyL2xpYmdwcy5wYyBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJRZ3BzbW0ucHJsIgorCitGSUxFU19weXRob24tcHlncHMtZGJnICs9ICIgJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9ncHMvLmRlYnVnIgorCitSREVQRU5EU18ke1BOfSA9ICJncHNkLWdwc2N0bCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdwc2QtY29uZiBncHNkLXVkZXYgZ3BzZC1tYWNoaW5lLWNvbmYiCisKK1NVTU1BUllfZ3BzZC11ZGV2ID0gInVkZXYgcmVsZXZhbnQgZmlsZXMgdG8gdXNlIGdwc2QgaG90cGx1Z2dpbmciCitGSUxFU19ncHNkLXVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vdWRldiAke3N5c2NvbmZkaXJ9L3VkZXYvKiIKK1JERVBFTkRTX2dwc2QtdWRldiArPSAidWRldiBncHNkLWNvbmYiCisKK1NVTU1BUllfbGliZ3BzZCA9ICJDIHNlcnZpY2UgbGlicmFyeSB1c2VkIGZvciBjb21tdW5pY2F0aW5nIHdpdGggZ3BzZCIKK0ZJTEVTX2xpYmdwc2QgPSAiJHtsaWJkaXJ9L2xpYmdwc2Quc28uKiIKKworU1VNTUFSWV9saWJncHMgPSAiQyBzZXJ2aWNlIGxpYnJhcnkgdXNlZCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIGdwc2QiCitGSUxFU19saWJncHMgPSAiJHtsaWJkaXJ9L2xpYmdwcy5zby4qIgorCitTVU1NQVJZX2dwc2QtY29uZiA9ICJncHNkIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGluaXQgc2NyaXB0cyIKK0ZJTEVTX2dwc2QtY29uZiA9ICIke3N5c2NvbmZkaXJ9IgorQ09ORkZJTEVTX2dwc2QtY29uZiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZC5kZWZhdWx0IgorCitTVU1NQVJZX2dwc2QtZ3BzY3RsID0gIlRvb2wgZm9yIHR3ZWFraW5nIEdQUyBtb2RlcyIKK0ZJTEVTX2dwc2QtZ3BzY3RsID0gIiR7YmluZGlyfS9ncHNjdGwiCisKK1NVTU1BUllfZ3BzLXV0aWxzID0gIlV0aWxzIHVzZWQgZm9yIHNpbXVsYXRpbmcsIG1vbml0b3JpbmcsLi4uIGEgR1BTIgorRklMRVNfZ3BzLXV0aWxzID0gIiR7YmluZGlyfS8qIgorUkRFUEVORFNfZ3BzLXV0aWxzID0gInB5dGhvbi1weWdwcyIKKworU1VNTUFSWV9weXRob24tcHlncHMgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIGdwc2QiCitGSUxFU19weXRob24tcHlncHMgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK1JERVBFTkRTX3B5dGhvbi1weWdwcyA9ICIgXAorICAgIHB5dGhvbi1jb3JlIFwKKyAgICBweXRob24taW8gXAorICAgIHB5dGhvbi10aHJlYWRpbmcgXAorICAgIHB5dGhvbi10ZXJtaW5hbCBcCisgICAgcHl0aG9uLWN1cnNlcyBcCisgICAgZ3BzZCBcCisgICAgcHl0aG9uLWpzb24iCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtQTn0uc29ja2V0IgorCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImdwc2QtZGVmYXVsdHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3BzZC1kZWZhdWx0c10gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QiCitBTFRFUk5BVElWRV9UQVJHRVRbZ3BzZC1kZWZhdWx0c10gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QuZGVmYXVsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZmlsZXMvMDAwMS1nX3R5cGVfaW5pdC1pcy1kZXByZWNhdGVkLWZvci1nbGliLTIuMzUuMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZmlsZXMvMDAwMS1nX3R5cGVfaW5pdC1pcy1kZXByZWNhdGVkLWZvci1nbGliLTIuMzUuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYzYmVhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2d5cHN5L2ZpbGVzLzAwMDEtZ190eXBlX2luaXQtaXMtZGVwcmVjYXRlZC1mb3ItZ2xpYi0yLjM1LjAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotRnJvbSA1Yjg1OWI2ZTdjODJmNDlkOTY3YzI1Mzk4YThlNzViNjFhZjliY2MwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTIgSnVuIDIwMTMgMjA6NTg6NTEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ190eXBlX2luaXQoKSBpcyBkZXByZWNhdGVkIGZvciBnbGliID49IDIuMzUuMAotCi1DYWxsIGl0IGZvciBvbGQgdmVyc2lvbnMuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZXhhbXBsZXMvbGlzdC1rbm93bi1ncHMtZGV2aWNlcy5jIHwgICAgNCArKy0tCi0gZXhhbXBsZXMvc2ltcGxlLWdwcy1kYnVzLmMgICAgICAgIHwgICAgMyArKy0KLSBleGFtcGxlcy9zaW1wbGUtZ3BzLWd5cHN5LmMgICAgICAgfCAgICA0ICsrLS0KLSBleGFtcGxlcy9zaW1wbGUtZ3BzLXNhdGVsbGl0ZXMuYyAgfCAgICA0ICsrLS0KLSBneXBzeS9neXBzeS1tYXJzaGFsLmMgICAgICAgICAgICAgfCAgICAyICstCi0gc3JjL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2xpc3Qta25vd24tZ3BzLWRldmljZXMuYyBiL2V4YW1wbGVzL2xpc3Qta25vd24tZ3BzLWRldmljZXMuYwotaW5kZXggYzdjNDA1OS4uMGE4YjA0YiAxMDA2NDQKLS0tLSBhL2V4YW1wbGVzL2xpc3Qta25vd24tZ3BzLWRldmljZXMuYwotKysrIGIvZXhhbXBsZXMvbGlzdC1rbm93bi1ncHMtZGV2aWNlcy5jCi1AQCAtMjAsOSArMjAsOSBAQCBtYWluIChpbnQgYXJnYywKLSAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gICAgIEdQdHJBcnJheSAqa25vd25fZGV2aWNlczsKLSAgICAgaW50IGk7Ci0tCi0rI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwzNSwwKQotICAgICBnX3R5cGVfaW5pdCAoKTsKLS0KLSsjZW5kaWYKLSAgICAgZGlzY292ZXJ5ID0gZ3lwc3lfZGlzY292ZXJ5X25ldyAoKTsKLSAgICAga25vd25fZGV2aWNlcyA9IGd5cHN5X2Rpc2NvdmVyeV9saXN0X2RldmljZXMgKGRpc2NvdmVyeSwgJmVycm9yKTsKLSAKLWRpZmYgLS1naXQgYS9leGFtcGxlcy9zaW1wbGUtZ3BzLWRidXMuYyBiL2V4YW1wbGVzL3NpbXBsZS1ncHMtZGJ1cy5jCi1pbmRleCBmNzA0NGU2Li43NmIxOGFhIDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvc2ltcGxlLWdwcy1kYnVzLmMKLSsrKyBiL2V4YW1wbGVzL3NpbXBsZS1ncHMtZGJ1cy5jCi1AQCAtMTIxLDggKzEyMSw5IEBAIG1haW4gKGludCAgICBhcmdjLAotIAlEQnVzQ29ubmVjdGlvbiAqY29ubjsKLSAJREJ1c0Vycm9yIGVycm9yOwotIAlHTWFpbkxvb3AgKm1haW5sb29wOwotLQotKyNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsMzUsMCkKLSAJZ190eXBlX2luaXQgKCk7Ci0rI2VuZGlmCi0gCWNvbm4gPSBnZXRfY29ubmVjdGlvbiAoKTsKLSAKLSAJZGJ1c19lcnJvcl9pbml0ICgmZXJyb3IpOwotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3NpbXBsZS1ncHMtZ3lwc3kuYyBiL2V4YW1wbGVzL3NpbXBsZS1ncHMtZ3lwc3kuYwotaW5kZXggMGI2YjdhNi4uODYwMzNkOSAxMDA2NDQKLS0tLSBhL2V4YW1wbGVzL3NpbXBsZS1ncHMtZ3lwc3kuYwotKysrIGIvZXhhbXBsZXMvc2ltcGxlLWdwcy1neXBzeS5jCi1AQCAtNjcsOSArNjcsOSBAQCBtYWluIChpbnQgICAgYXJnYywKLSAJCWdfcHJpbnQgKCJVc2FnZTogJXMgZGV2aWNlXG4iLCBhcmd2WzBdKTsKLSAJCXJldHVybiAwOwotIAl9Ci0tCi0rI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwzNSwwKSAKLSAJZ190eXBlX2luaXQgKCk7Ci0tCi0rI2VuZGlmCi0gCWNvbnRyb2wgPSBneXBzeV9jb250cm9sX2dldF9kZWZhdWx0ICgpOwotIAlwYXRoID0gZ3lwc3lfY29udHJvbF9jcmVhdGUgKGNvbnRyb2wsIGFyZ3ZbMV0sICZlcnJvcik7Ci0gCWlmIChwYXRoID09IE5VTEwpIHsKLWRpZmYgLS1naXQgYS9leGFtcGxlcy9zaW1wbGUtZ3BzLXNhdGVsbGl0ZXMuYyBiL2V4YW1wbGVzL3NpbXBsZS1ncHMtc2F0ZWxsaXRlcy5jCi1pbmRleCAxNDBjOThmLi45YTNmOTVhIDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvc2ltcGxlLWdwcy1zYXRlbGxpdGVzLmMKLSsrKyBiL2V4YW1wbGVzL3NpbXBsZS1ncHMtc2F0ZWxsaXRlcy5jCi1AQCAtNDIsOSArNDIsOSBAQCBtYWluIChpbnQgICAgYXJnYywKLSAJCWdfcHJpbnQgKCJVc2FnZTogJXMgZGV2aWNlXG4iLCBhcmd2WzBdKTsKLSAJCXJldHVybiAwOwotIAl9Ci0tCi0rI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwzNSwwKQotIAlnX3R5cGVfaW5pdCAoKTsKLS0KLSsjZW5kaWYKLSAJY29udHJvbCA9IGd5cHN5X2NvbnRyb2xfZ2V0X2RlZmF1bHQgKCk7Ci0gCXBhdGggPSBneXBzeV9jb250cm9sX2NyZWF0ZSAoY29udHJvbCwgYXJndlsxXSwgJmVycm9yKTsKLSAJaWYgKHBhdGggPT0gTlVMTCkgewotZGlmZiAtLWdpdCBhL2d5cHN5L2d5cHN5LW1hcnNoYWwuYyBiL2d5cHN5L2d5cHN5LW1hcnNoYWwuYwotaW5kZXggNjk2NDY0NC4uOWFjMDA5NSAxMDA2NDQKLS0tLSBhL2d5cHN5L2d5cHN5LW1hcnNoYWwuYwotKysrIGIvZ3lwc3kvZ3lwc3ktbWFyc2hhbC5jCi1AQCAtNSw3ICs1LDcgQEAKLSAKLSAjaWZkZWYgR19FTkFCTEVfREVCVUcKLSAjZGVmaW5lIGdfbWFyc2hhbF92YWx1ZV9wZWVrX2Jvb2xlYW4odikgIGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHYpCi0tI2RlZmluZSBnX21hcnNoYWxfdmFsdWVfcGVla19jaGFyKHYpICAgICBnX3ZhbHVlX2dldF9jaGFyICh2KQotKyNkZWZpbmUgZ19tYXJzaGFsX3ZhbHVlX3BlZWtfY2hhcih2KSAgICAgZ192YWx1ZV9nZXRfc2NoYXIgKHYpCi0gI2RlZmluZSBnX21hcnNoYWxfdmFsdWVfcGVla191Y2hhcih2KSAgICBnX3ZhbHVlX2dldF91Y2hhciAodikKLSAjZGVmaW5lIGdfbWFyc2hhbF92YWx1ZV9wZWVrX2ludCh2KSAgICAgIGdfdmFsdWVfZ2V0X2ludCAodikKLSAjZGVmaW5lIGdfbWFyc2hhbF92YWx1ZV9wZWVrX3VpbnQodikgICAgIGdfdmFsdWVfZ2V0X3VpbnQgKHYpCi1kaWZmIC0tZ2l0IGEvc3JjL21haW4uYyBiL3NyYy9tYWluLmMKLWluZGV4IDNlOGE3OTQuLmVjOTgwZTUgMTAwNjQ0Ci0tLS0gYS9zcmMvbWFpbi5jCi0rKysgYi9zcmMvbWFpbi5jCi1AQCAtMTg3LDkgKzE4Nyw5IEBAIG1haW4gKGludCAgICBhcmdjLAotIAlnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGNvbnRleHQpOwotIAotIAl1bWFzayAoMDIyKTsKLS0KLSsjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDM1LDApCi0gCWdfdHlwZV9pbml0ICgpOwotLQotKyNlbmRpZgotIAltYWlubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOwotIAotIAljb25uID0gZGJ1c19nX2J1c19nZXQgKERCVVNfQlVTX1NZU1RFTSwgJmVycm9yKTsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2d5cHN5L2ZpbGVzL2ZpeHVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZmlsZXMvZml4dXBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTRkOTJlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZmlsZXMvZml4dXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0tLS0KLSBkb2NzL3JlZmVyZW5jZS9NYWtlZmlsZS5hbSB8ICAgIDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLS0tLSBneXBzeS5vcmlnL2RvY3MvcmVmZXJlbmNlL01ha2VmaWxlLmFtCi0rKysgZ3lwc3kvZG9jcy9yZWZlcmVuY2UvTWFrZWZpbGUuYW0KLUBAIC04MSwxMCArODEsMTIgQEAgZXhwYW5kX2NvbnRlbnRfZmlsZXM9Ci0gIyBlLmcuIEdUS0RPQ19MSUJTPSQodG9wX2J1aWxkZGlyKS9ndGsvJChndGt0YXJnZXRsaWIpCi0gCi0gSU5DTFVERVM9LUkkKHRvcF9zcmNkaXIpICQoR1lQU1lfQ0ZMQUdTKQotIEdUS0RPQ19MSUJTPSQodG9wX2J1aWxkZGlyKS9neXBzeS9saWJneXBzeS5sYSAkKEdZUFNZX0xJQlMpCi0gCi0rRVhUUkFfRElTVCA9Ci0rQ0xFQU5GSUxFUyA9Ci0gIyBUaGlzIGluY2x1ZGVzIHRoZSBzdGFuZGFyZCBndGstZG9jIG1ha2UgcnVsZXMsIGNvcGllZCBieSBndGtkb2NpemUuCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2d0ay1kb2MubWFrZQotIAotICMgT3RoZXIgZmlsZXMgdG8gZGlzdHJpYnV0ZQotICMgZS5nLiBFWFRSQV9ESVNUICs9IHZlcnNpb24ueG1sLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2d5cHN5L2d5cHN5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZ3lwc3kuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWZkMzU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZ3lwc3kuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJHUFMgTXVsdGlwbGV4aW5nIERhZW1vbiIKLURFU0NSSVBUSU9OID0gIkd5cHN5IGlzIGEgR1BTIG11bHRpcGxleGluZyBkYWVtb24gd2hpY2ggYWxsb3dzIFwKLW11bHRpcGxlIGNsaWVudHMgdG8gYWNjZXNzIEdQUyBkYXRhIGZyb20gbXVsdGlwbGUgR1BTIHNvdXJjZXMgXAotY29uY3VycmVudGx5LiAgR3lwc3kgYWxzbyBoaWRlcyB0aGUgZGV0YWlscyBvZiBwYXJzaW5nIE5NRUEgZnJvbSB0aGUgXAotY2xpZW50IGFwcGxpY2F0aW9ucywgcGFzc2luZyB0aGUgZGF0YSBhcyBzaW1wbGUgdmFsdWVzIGZvciB0aGUgY2xpZW50cyBcCi10byB1c2UuIgotTElDRU5TRSA9ICJHUEx2Mi4wICYgTEdQTHYyLjEiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZGJ1cyBibHVlejQgZGJ1cy1nbGliIGxpYnhzbHQtbmF0aXZlIGxpYnhzbHQiCi0KLVBOQkxBQ0tMSVNUW2d5cHN5XSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVlejUnLCAnYmx1ZXo1IGNvbmZsaWN0cyB3aXRoIGJsdWV6NCBhbmQgYmx1ZXo1IGlzIHNlbGVjdGVkIGluIERJU1RST19GRUFUVVJFUycsICcnLCBkKX0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jCi1QQUNLQUdFUyArPSAibGliZ3lwc3kiCi0KLUZJTEVTXyR7UE59ID0gIiBcCi0gICR7c3lzY29uZmRpcn0vZ3lwc3kuY29uZiBcCi0gICR7c3lzY29uZmRpcn0vZGJ1cy0xIFwKLSAgJHtsaWJleGVjZGlyfS9neXBzeS1kYWVtb24gXAotICAke2RhdGFkaXJ9L2RidXMtMSBcCi0iCi0KLUZJTEVTX2xpYmd5cHN5ID0gIiBcCi0gICR7bGliZGlyfS9saWJneXBzeSR7U09MSUJTfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2d5cHN5L2d5cHN5XzAuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZ3lwc3lfMC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGM4OTg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZ3lwc3lfMC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBneXBzeS5pbmMKLQotUFIgPSAicjIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcubGliO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjU7bWQ1PTNmZTY0ZTI3ZTYxYjI4OWI3NzM4M2E1NGE5ODJjYmRkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d5cHN5L2d5cHN5LXRpbWUuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT0wNjQzMmVhMTlhN2I2NjA3NDI4ZDA0ZDlkYWRjMzdmZCIKLQotU1JDX1VSSSArPSAiaHR0cDovL2d5cHN5LmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9neXBzeS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nX3R5cGVfaW5pdC1pcy1kZXByZWNhdGVkLWZvci1nbGliLTIuMzUuMC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTJkMTg2ZGY5YzJjYzNiNzBhMDI3MDQzZTIyYWNmMWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTRlMWNiZTE3MzUxZjQwODUzOGUwMzNjYTM3MGI0YmY1MWNjZjljODg3NDRlMjM2ZGRmYjI3MTkwNGYxNTRkNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3lwc3kvZ3lwc3lfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9neXBzeV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhYjE2ZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9neXBzeS9neXBzeV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlIGd5cHN5LmluYwotCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLVNSQ1JFViA9ICJiZThjOWMzODJkMmQxZDM3YjUxZDI5YjA4NDMwNDUxMjFlYzkwMjEzIgotUFYgPSAiMC45K2dpdCR7U1JDUFZ9IgotUFIgPSAicjIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcubGliO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjU7bWQ1PTNmZTY0ZTI3ZTYxYjI4OWI3NzM4M2E1NGE5ODJjYmRkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d5cHN5L2d5cHN5LXRpbWUuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT0wNjQzMmVhMTlhN2I2NjA3NDI4ZDA0ZDlkYWRjMzdmZCIKLQotU1JDX1VSSSArPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ3lwc3kgXAotICAgICAgICAgICAgZmlsZTovL2ZpeHVwcy5wYXRjaCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICMgZnJvbSBwYXRjaCA1NjM3MTZmYzU5NmQ1M2YxMDg1OTQ5YTlkZDExYTYyZjM5YjJkNjI0Ci0gIHRlc3QgLWQgJHtTfS9tNCB8fCBta2RpciAtcCAke1N9L200Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0LWZwdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0LWZwdS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YjdhOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC1mcHUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLWRlZiBnZXRfbmF2aXRfZnB1X3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcgXToKLSAgICAgICAgcmV0dXJuICItLWVuYWJsZS1hdm9pZC1mbG9hdCIKLSAgICByZXR1cm4gIiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMwYmZkYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk5hdml0IGlzIGEgY2FyIG5hdmlnYXRpb24gc3lzdGVtIHdpdGggcm91dGluZyBlbmdpbmUuIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkNTM5ZDA5OWQ2Y2UwOGRlNmVhMGRmZWQ5ZWNiMzMzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xHUEwtMjttZDU9MzIxNGYwODA4NzU3NDg5MzhiYTA2MDMxNGI0ZjcyN2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMLTI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSIKLQotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb25zIgotREVQRU5EUyA9ICJnbGliLTIuMCBnZCBneXBzeSBsaWJyc3ZnLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gIiAke1BOfS1pY29ucyAke1BOfS1jb25maWcgIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3BzZCAke1BOfS1kYnVzICR7UE59LXNwZWVjaC1jbWRsaW5lICR7UE59LWd1aS1pbnRlcm5hbCAke1BOfS1ncmFwaGljcy1ndGsiCi1SU1VHR0VTVFNfJHtQTn0gPSAiZmxpdGUtYWxzYSBlc3BlYWsgJHtQTn0tc3BlZWNoLWRidXMgJHtQTn0tZ3VpLWd0ayAke1BOfS1ndWktcW1sICR7UE59LWdyYXBoaWNzLXNkbCAke1BOfS1ncmFwaGljcy1xdCAke1BOfS1tYXB0b29sIgotCi1QRSA9ICIxIgotSU5DX1BSID0gInIxMSIKLQotIyBEZXBlbmRzIG9uIGd5cHN5Ci1QTkJMQUNLTElTVFtuYXZpdF0gPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXo1JywgJ2JsdWV6NSBjb25mbGljdHMgd2l0aCBibHVlejQgYW5kIGJsdWV6NSBpcyBzZWxlY3RlZCBpbiBESVNUUk9fRkVBVFVSRVMnLCAnJywgZCl9IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2ZyaWJpZGldID0gIi0tZW5hYmxlLWZyaWJpZGksLS1kaXNhYmxlLWZyaWJpZGksZnJpYmlkaSIKLVBBQ0tBR0VDT05GSUdbaW1saWIyXSA9ICItLWVuYWJsZS1pbWxpYjIsLS1kaXNhYmxlLWltbGliMixpbWxpYjIiCi1QQUNLQUdFQ09ORklHW3NkbF0gPSAiLS1lbmFibGUtZ3JhcGhpY3Mtc2RsLC0tZGlzYWJsZS1ncmFwaGljcy1zZGwsbGlic2RsIgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0tZW5hYmxlLWdyYXBoaWNzLWd0ay1kcmF3aW5nLWFyZWEgLS1lbmFibGUtZ3VpLWd0aywtLWRpc2FibGUtZ3JhcGhpY3MtZ3RrLWRyYXdpbmctYXJlYSAtLWRpc2FibGUtZ3VpLWd0ayxndGsrIgotUEFDS0FHRUNPTkZJR1txdF0gPSAiLS1lbmFibGUtZ3JhcGhpY3MtcXQtcXBhaW50ZXIgLS1lbmFibGUtZ3VpLXFtbCwtLWRpc2FibGUtZ3JhcGhpY3MtcXQtcXBhaW50ZXIgLS1kaXNhYmxlLWd1aS1xbWwscXQ0LXgxMS1mcmVlLHF0NC1wbHVnaW4taW1hZ2Vmb3JtYXQtc3ZnIgotCi1FWFRSQV9PRUNPTkYgKz0gIiBcCi0gICAgLS1kaXNhYmxlLWJpbmRpbmctcHl0aG9uIFwKLSAgICAtLWRpc2FibGUtc2FtcGxlbWFwIFwKLSAgICAtLWVuYWJsZS1hdm9pZC11bmFsaWduZWQgXAotICAgIC0tZW5hYmxlLXN2ZzJwbmctc2NhbGluZy1mbGFnPTMyIFwKLSAgICAtLWRpc2FibGUtc3BlZWNoLXNwZWVjaC1kaXNwYXRjaGVyIFwKLSAgICAtLWVuYWJsZS1jYWNoZS1zaXplPTIwOTcxNTIwIFwKLSIKLQotIyAgLS1lbmFibGUtYXZvaWQtZmxvYXQgXAotI2NoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cwotcmVxdWlyZSBuYXZpdC1mcHUuaW5jCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9uYXZpdF9mcHVfc2V0dGluZyhiYiwgZCl9IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbWFwdG9vbCAke1BOfS1jb25maWcgJHtQTn0tZGJ1cyAke1BOfS1zcGVlY2gtY21kbGluZSAke1BOfS1zcGVlY2gtZGJ1cyAke1BOfS1ndWktZ3RrICR7UE59LWd1aS1pbnRlcm5hbCAke1BOfS1ndWktcW1sICR7UE59LWdyYXBoaWNzLXNkbCAke1BOfS1ncmFwaGljcy1ndGsgJHtQTn0tZ3JhcGhpY3MtcXQgJHtQTn0taWNvbnMiCi0KLUVYVFJBX0FVVE9SRUNPTkYgPSAiIC1JIG00IgotCi1DT05GRklMRVNfJHtQTn0tY29uZmlnICs9ICIke2RhdGFkaXJ9L25hdml0L25hdml0LmRlZmF1bHQueG1sIFwKLSAgICAke2RhdGFkaXJ9L25hdml0L25hdml0LnhtbCBcCi0gICAgJHtkYXRhZGlyfS9uYXZpdC9tYXBzLnhtbCBcCi0gICAgJHtkYXRhZGlyfS9uYXZpdC9vc2QueG1sIFwKLSAgICAke2RhdGFkaXJ9L25hdml0L3NwZWVjaC54bWwgXAotICAgICR7ZGF0YWRpcn0vbmF2aXQvcGx1Z2lucy54bWwgXAotIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vbmF2aXQueG1sIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tYXBzLnhtbCBcCi0gICAgICAgICAgICBmaWxlOi8vb3NkLnhtbCBcCi0gICAgICAgICAgICBmaWxlOi8vc3BlZWNoLnhtbCBcCi0gICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy54bWwgXAotIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qLyouc28gJHtkYXRhZGlyfS9pY29ucyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LW1hcHRvb2wgPSAiICR7YmluZGlyfS9tYXB0b29sICIKLUZJTEVTXyR7UE59LWNvbmZpZyA9ICIgJHtkYXRhZGlyfS9uYXZpdC8qLnhtbCAiCi1GSUxFU18ke1BOfS1kYnVzID0gIiAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8gJHtsaWJkaXJ9LyR7QlBOfS9iaW5kaW5nL2xpYmJpbmRpbmdfZGJ1cy5zbyAiCi1GSUxFU18ke1BOfS1zcGVlY2gtY21kbGluZSA9ICIgJHtsaWJkaXJ9LyR7QlBOfS9zcGVlY2gvbGlic3BlZWNoX2NtZGxpbmUuc28gIgotRklMRVNfJHtQTn0tc3BlZWNoLWRidXMgPSAiICR7bGliZGlyfS8ke0JQTn0vc3BlZWNoL2xpYnNwZWVjaF9kYnVzLnNvICIKLUZJTEVTXyR7UE59LWd1aS1ndGsgPSAiICR7bGliZGlyfS8ke0JQTn0vZ3VpL2xpYmd1aV9ndGsuc28gIgotRklMRVNfJHtQTn0tZ3VpLXFtbCA9ICIgJHtsaWJkaXJ9LyR7QlBOfS9ndWkvbGliZ3VpX3FtbC5zbyAke2RhdGFkaXJ9L25hdml0L3NraW5zLyAiCi1GSUxFU18ke1BOfS1ndWktaW50ZXJuYWwgPSAiICR7bGliZGlyfS8ke0JQTn0vZ3VpL2xpYmd1aV9pbnRlcm5hbC5zbyAiCi1GSUxFU18ke1BOfS1ncmFwaGljcy1zZGwgPSAiICR7bGliZGlyfS8ke0JQTn0vZ3JhcGhpY3MvbGliZ3JhcGhpY3Nfc2RsLnNvICIKLUZJTEVTXyR7UE59LWdyYXBoaWNzLXF0ID0gIiAke2xpYmRpcn0vJHtCUE59L2dyYXBoaWNzL2xpYmdyYXBoaWNzX3F0X3FwYWludGVyLnNvICIKLUZJTEVTXyR7UE59LWdyYXBoaWNzLWd0ayA9ICIgJHtsaWJkaXJ9LyR7QlBOfS9ncmFwaGljcy9saWJncmFwaGljc19ndGtfZHJhd2luZ19hcmVhLnNvICIKLUZJTEVTXyR7UE59LWljb25zID0gIi91c3Ivc2hhcmUvbmF2aXQveHBtLyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBNT0M9YCRQS0dfQ09ORklHIFF0R3VpIC0tdmFyaWFibGU9bW9jX2xvY2F0aW9uYCByZXR1cm5zIG9ubHkgL3Vzci9iaW4vbW9jNCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9uIGhvc3RzIHdpdGhvdXQgUXQKLSAgICBzZWQgLWkgInMjTU9DPSNNT0M9JHtTVEFHSU5HX0RJUl9OQVRJVkV9I2ciICR7U30vY29uZmlndXJlLmluCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgZml4IFFBIGlzc3VlCi0gICAgc2VkIC1pICdzI0NhdGVnb3JpZXM9R1RLO1V0aWxpdHk7R2VvZ3JhcGh5OyNDYXRlZ29yaWVzPUdyYXBoaWNzOyNnJyAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbmF2aXQuZGVza3RvcAotCi0gICAgcm0gJHtEfSR7bGliZGlyfS8ke0JQTn0vKi8qLmxhCi0KLSAgICAjVXNlIHNwbGl0IGNvbmZpZwotICAgIG12ICR7RH0ke2RhdGFkaXJ9L25hdml0L25hdml0LnhtbCAke0R9JHtkYXRhZGlyfS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hdml0LnhtbCAke0R9JHtkYXRhZGlyfS9uYXZpdC9uYXZpdC54bWwKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9tYXBzLnhtbCAke0R9JHtkYXRhZGlyfS9uYXZpdC9tYXBzLnhtbAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29zZC54bWwgJHtEfSR7ZGF0YWRpcn0vbmF2aXQvb3NkLnhtbAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NwZWVjaC54bWwgJHtEfSR7ZGF0YWRpcn0vbmF2aXQvc3BlZWNoLnhtbAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BsdWdpbnMueG1sICR7RH0ke2RhdGFkaXJ9L25hdml0L3BsdWdpbnMueG1sCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L2NvbmZpZ3VyZS5hZGQuaW1saWIyLm9wdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvY29uZmlndXJlLmFkZC5pbWxpYjIub3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTQxNzkyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvY29uZmlndXJlLmFkZC5pbWxpYjIub3B0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLS0tIGEvY29uZmlndXJlLmluLm9yaWcJMjAxNC0wNS0xMCAxNTo1NzoxOC4xNDYzNjIxMTAgKzAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5pbgkyMDE0LTA1LTEwIDE1OjU5OjI3Ljg1OTM1ODg0NSArMDIwMAotQEAgLTQ5OCwxMCArNDk4LDEzIEBACi0gQUNfU1VCU1QoRlJJQklESV9DRkxBR1MpCi0gQUNfU1VCU1QoRlJJQklESV9MSUJTKQotIAotK0FDX0FSR19FTkFCTEUoaW1saWIyLCBbICAtLWRpc2FibGUtaW1saWIyICBkaXNhYmxlIGltbGliMiBzdXBwb3J0XSwgaW1saWIyPSRlbmFibGV2YWw7aW1saWIyX3JlYXNvbj0iY29uZmlndXJlIHBhcmFtZXRlciIsIGltbGliMj15ZXMpCi0raWYgdGVzdCB4IiR7aW1saWIyfSIgPSAieHllcyI7IHRoZW4KLSBQS0dfQ0hFQ0tfTU9EVUxFUyhJTUxJQjIsIFtpbWxpYjJdLCBbaW1saWIyX3BrZ2NvbmZpZz15ZXNdLCBbaW1saWIyX3BrZ2NvbmZpZz1ub10pCi0gaWYgdGVzdCAieCRpbWxpYjJfcGtnY29uZmlnIiA9ICJ4eWVzIjsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX0lNTElCMiwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGltbGliMl0pCi0gZmkKLStmaQotIEFDX1NVQlNUKElNTElCMl9DRkxBR1MpCi0gQUNfU1VCU1QoSU1MSUIyX0xJQlMpCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L2ZyZWV0eXBlLWluY2x1ZGUtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvZnJlZXR5cGUtaW5jbHVkZS1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODg5OTdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvZnJlZXR5cGUtaW5jbHVkZS1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRGVzY3JpcHRpb246IEZpeCBGVEJGUyBjYXVzZWQgYnkgZnJlZXR5cGUgaGVhZGVycyBwYXRoIGNoYW5nZS4KLUF1dGhvcjogR2lsbGVzIEZpbGlwcGluaSA8cGluaUBkZWJpYW4ub3JnPgotQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy83MzMzNzgKLUluZGV4OiBuYXZpdC9uYXZpdC9mb250L2ZyZWV0eXBlL2ZvbnRfZnJlZXR5cGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5hdml0Lm9yaWcvbmF2aXQvZm9udC9mcmVldHlwZS9mb250X2ZyZWV0eXBlLmMJMjAxMy0wOS0yMyAxMDo0MzozMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBuYXZpdC9uYXZpdC9mb250L2ZyZWV0eXBlL2ZvbnRfZnJlZXR5cGUuYwkyMDEzLTEyLTMwIDE5OjU0OjQ1LjAwMDAwMDAwMCArMDEwMAotQEAgLTMyLDcgKzMyLDcgQEAKLSAjaWYgVVNFX0ZSSUJJREkKLSAjaW5jbHVkZSA8ZnJpYmlkaS5oPgotICNlbmRpZgotLSNpbmNsdWRlIDxmcmVldHlwZS9mdGdseXBoLmg+Ci0rI2luY2x1ZGUgPGZ0Z2x5cGguaD4KLSAjaW5jbHVkZSAicG9pbnQuaCIKLSAjaW5jbHVkZSAiZ3JhcGhpY3MuaCIKLSAjaW5jbHVkZSAiZGVidWcuaCIKLWRpZmYgLXVOciBuYXZpdC5vcmlnL25hdml0L2dyYXBoaWNzL3NkbC9ncmFwaGljc19zZGwuYyBuYXZpdC9uYXZpdC9ncmFwaGljcy9zZGwvZ3JhcGhpY3Nfc2RsLmMKLS0tLSBuYXZpdC5vcmlnL25hdml0L2dyYXBoaWNzL3NkbC9ncmFwaGljc19zZGwuYwkyMDEyLTA2LTIyIDE0OjE2OjAxLjAwMDAwMDAwMCArMDIwMAotKysrIG5hdml0L25hdml0L2dyYXBoaWNzL3NkbC9ncmFwaGljc19zZGwuYwkyMDE0LTAxLTAxIDIyOjMxOjEwLjg5Mjk0ODE2NCArMDEwMAotQEAgLTg0LDcgKzg0LDcgQEAKLSAjZWxzZQotICNpbmNsdWRlIDxmdDJidWlsZC5oPgotICNpbmNsdWRlIEZUX0ZSRUVUWVBFX0gKLS0jaW5jbHVkZSA8ZnJlZXR5cGUvZnRnbHlwaC5oPgotKyNpbmNsdWRlIDxmdGdseXBoLmg+Ci0gI2VuZGlmCi0gI2luY2x1ZGUgPGV2ZW50Lmg+Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L21hcHMueG1sIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9tYXBzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY1OWYyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L21hcHMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotICAgICAgICAgICAgICAgIDwhLS0gSWYgeW91IGhhdmUgdGhlIHJlaXNlcGxhbmVyIG1hcHMgaW5zdGFsbGVkLCBzZXQgZW5hYmxlZD0ieWVzIiBpbiB0aGUgbmV4dCBsaW5lIGFuZCBzZXQgdGhlIHBhdGggY29ycmVjdGx5IC0tPgotICAgICAgICAgICAgICAgIDxtYXBzZXQgZW5hYmxlZD0ibm8iPgotICAgICAgICAgICAgICAgICAgICAgICAgPG1hcCB0eXBlPSJtZyIgZW5hYmxlZD0ieWVzIiBkYXRhPSIvb3B0L3JlaXNlcGxhbmVyL3RyYXZlbC9ERS5tYXAiLz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYXAgdHlwZT0ibWciIGVuYWJsZWQ9InllcyIgZGF0YT0iL29wdC9yZWlzZXBsYW5lci90cmF2ZWwvREUubWFwL3NtcDEuc21wIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bWFwIHR5cGU9Im1nIiBlbmFibGVkPSJ5ZXMiIGRhdGE9Ii9vcHQvcmVpc2VwbGFuZXIvdHJhdmVsL0RFLm1hcC9zbXAyLnNtcCIvPgotICAgICAgICAgICAgICAgICAgICAgICAgPG1hcCB0eXBlPSJtZyIgZW5hYmxlZD0ieWVzIiBkYXRhPSIvb3B0L3JlaXNlcGxhbmVyL3RyYXZlbC9ERS5tYXAvc21wMy5zbXAiLz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxtYXAgdHlwZT0ibWciIGVuYWJsZWQ9InllcyIgZGF0YT0iL29wdC9yZWlzZXBsYW5lci90cmF2ZWwvREUubWFwL3NtcDQuc21wIi8+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bWFwIHR5cGU9Im1nIiBlbmFibGVkPSJ5ZXMiIGRhdGE9Ii9vcHQvcmVpc2VwbGFuZXIvdHJhdmVsL0RFLm1hcC9zbXA1LnNtcCIvPgotICAgICAgICAgICAgICAgIDwvbWFwc2V0PgotCi0gICAgICAgICAgICAgICAgPCEtLSBJZiB5b3UgZG9udCB3YW50IHRvIHVzZSB0aGUgc2FtcGxlIG1hcCwgZWl0aGVyIHNldCBlbmFibGVkPSJubyIgaW4gdGhlIG5leHQgbGluZSBvciByZW1vdmUgdGhlIHhtbCBmaWxlIGZyb20gdGhlIG1hcHMgZGlyZWN0b3J5IC0tPgotICAgICAgICAgICAgICAgIDxtYXBzZXQgZW5hYmxlZD0ibm8iPgotICAgICAgICAgICAgICAgICAgICAgICAgPHhpOmluY2x1ZGUgaHJlZj0iJE5BVklUX1NIQVJFRElSL21hcHMvKi54bWwiLz4KLSAgICAgICAgICAgICAgICA8L21hcHNldD4KLQotICAgICAgICAgICAgICAgIDwhLS0gTWFwc2V0IHRlbXBsYXRlIGZvciBvcGVuc3RyZWV0bWFwcyAtLT4KLSAgICAgICAgICAgICAgICA8bWFwc2V0IGVuYWJsZWQ9InllcyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bWFwIHR5cGU9ImJpbmZpbGUiIGVuYWJsZWQ9InllcyIgZGF0YT0iL21lZGlhL21tYzIvTWFwc05hdml0L29zbV9ldXJvcGUuYmluIi8+Ci0gICAgICAgICAgICAgICAgPC9tYXBzZXQ+Ci0KLSAgICAgICAgICAgICAgICA8IS0tIE1hcHNldCB0ZW1wbGF0ZSBmb3IgZ2FybWluIG1hcHMgLS0+Ci0gICAgICAgICAgICAgICAgPG1hcHNldCBlbmFibGVkPSJubyI+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bWFwIHR5cGU9Imdhcm1pbiIgZW5hYmxlZD0ieWVzIiBkYXRhPSIvcGF0aC90by9pbWciIGRlYnVnPSI0Ii8+Ci0gICAgICAgICAgICAgICAgPC9tYXBzZXQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L25hdml0LnhtbCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvbmF2aXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGM4YzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvbmF2aXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBjb25maWcgU1lTVEVNICJuYXZpdC5kdGQiPgotPGNvbmZpZyB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZSI+Ci0JPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9wbHVnaW5zLnhtbCIvPgotCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvbmF2aXQuZGVmYXVsdC54bWwiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29uZmlnL2RlYnVnKSIvPgotCi0JPG5hdml0IGNlbnRlcj0iNDgwOCBOIDExMzQgRSIgem9vbT0iMjU2IiB0cmFja2luZz0iMSIgb3JpZW50YXRpb249Ii0xIiByZWNlbnRfZGVzdD0iMTAiIGRyYWdfYml0bWFwPSIxIj4KLQkJPGdyYXBoaWNzIHR5cGU9Imd0a19kcmF3aW5nX2FyZWEiLz4KLQkJPGd1aSB0eXBlPSJndGsiIGVuYWJsZWQ9Im5vIiBtZW51YmFyPSIxIiB0b29sYmFyPSIxIiBzdGF0dXNiYXI9IjEiLz4KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbCIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb25maWcvbmF2aXQvZ3VpW0B0eXBlPSdpbnRlcm5hbCddKSIvPgotCQk8IS0tIG9yIGNvbW1lbnQgZ3RrIHZlcnNpb24gYWJvdmUgYW5kIHRyeToKLQkJb3BrZyBpbnN0YWxsIG5hdml0LWdyYXBoaWNzLXF0Ci0JCW9wa2cgaW5zdGFsbCBuYXZpdC1ndWktcW1sCi0JCTxncmFwaGljcyB0eXBlPSJxdF9xcGFpbnRlciIvPgotCQk8Z3VpIHR5cGU9InFtbCIgZW5hYmxlZD0ieWVzIiBtZW51YmFyPSIxIiB0b29sYmFyPSIxIiBzdGF0dXNiYXI9IjEiLz4KLQkJLS0+Ci0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvb3NkLnhtbCIvPgotCQk8bG9nIGVuYWJsZWQ9Im5vIiB0eXBlPSJ0ZXh0ZmlsZV9kZWJ1ZyIgZGF0YT0iZGVidWdfJVklbSVkLSVpLnR4dCIgZmx1c2hfc2l6ZT0iMTAwMCIgZmx1c2hfdGltZT0iMzAiLz4KLQkJPHZlaGljbGUgbmFtZT0iTG9jYWwgR1BTIiBwcm9maWxlbmFtZT0iY2FyIiBlbmFibGVkPSJ5ZXMiIGFjdGl2ZT0iMSIgc291cmNlPSJncHNkOi8vbG9jYWxob3N0IiBncHNkX3F1ZXJ5PSJ3K3hqIj4KLQkJCTwhLS0gPGxvZyB0eXBlPSJncHgiIGF0dHJfdHlwZXM9InBvc2l0aW9uX3RpbWVfaXNvODYwMSxwb3NpdGlvbl9kaXJlY3Rpb24scG9zaXRpb25fc3BlZWQscHJvZmlsZW5hbWUscG9zaXRpb25fcmFkaXVzIiBkYXRhPSJ0cmFja18lWSVtJWQtJWkuZ3B4IiBmbHVzaF9zaXplPSIxMDAwIiBmbHVzaF90aW1lPSIzMCIvPiAtLT4KLQkJPC92ZWhpY2xlPgotCi0JCTx2ZWhpY2xlIG5hbWU9IkRlbW8iIHByb2ZpbGVuYW1lPSJjYXIiIGVuYWJsZWQ9Im5vIiBhY3RpdmU9InllcyIgc291cmNlPSJkZW1vOi8vIi8+Ci0KLQkJPCEtLSBGb3IgdGhlIGN1bXVsYXRpdmUgZGlzcGxhY2VtZW50IGZpbHRlciB0byBiZSBlbmFibGVkLCBzZXQgY2RmX2hpc3RzaXplPSJ4IiBoZXJlLCB3aXRoIHggYmVpbmcgYW4gaW50ZWdlciBzb21ld2hlcmUgYXJvdW5kIDQgLS0+Ci0JCTx0cmFja2luZyBjZGZfaGlzdHNpemU9IjAiLz4KLQotCQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L25hdml0LmRlZmF1bHQueG1sIiB4cG9pbnRlcj0ieHBvaW50ZXIoL2NvbmZpZy9uYXZpdC92ZWhpY2xlcHJvZmlsZVtAbmFtZT0nY2FyJ10pIi8+Ci0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvbmF2aXQuZGVmYXVsdC54bWwiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29uZmlnL25hdml0L3ZlaGljbGVwcm9maWxlW0BuYW1lPSdiaWtlJ10pIi8+Ci0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvbmF2aXQuZGVmYXVsdC54bWwiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29uZmlnL25hdml0L3ZlaGljbGVwcm9maWxlW0BuYW1lPSdwZWRlc3RyaWFuJ10pIi8+Ci0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvbmF2aXQuZGVmYXVsdC54bWwiIHhwb2ludGVyPSJ4cG9pbnRlcigvY29uZmlnL25hdml0L3ZlaGljbGVwcm9maWxlW0BuYW1lPSdob3JzZSddKSIvPgotCi0JCTxyb3V0ZSBkZXN0aW5hdGlvbl9kaXN0YW5jZT0iNTAiLz4KLQotCQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L25hdml0LmRlZmF1bHQueG1sIiB4cG9pbnRlcj0ieHBvaW50ZXIoL2NvbmZpZy9uYXZpdC9uYXZpZ2F0aW9uKSIvPgotCi0JCTx4aTppbmNsdWRlIGhyZWY9Ii91c3Ivc2hhcmUvbmF2aXQvc3BlZWNoLnhtbCIvPgotCQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L21hcHMueG1sIi8+Ci0KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbCIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb25maWcvbmF2aXQvbGF5b3V0W0BuYW1lPSdDYXInXSkiLz4KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbCIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb25maWcvbmF2aXQvbGF5b3V0W0BuYW1lPSdDYXItZGFyayddKSIvPgotCQk8eGk6aW5jbHVkZSBocmVmPSIvdXNyL3NoYXJlL25hdml0L25hdml0LmRlZmF1bHQueG1sIiB4cG9pbnRlcj0ieHBvaW50ZXIoL2NvbmZpZy9uYXZpdC9sYXlvdXRbQG5hbWU9J0Jpa2UnXSkiLz4KLQkJPHhpOmluY2x1ZGUgaHJlZj0iL3Vzci9zaGFyZS9uYXZpdC9uYXZpdC5kZWZhdWx0LnhtbCIgeHBvaW50ZXI9Inhwb2ludGVyKC9jb25maWcvbmF2aXQvbGF5b3V0W0BuYW1lPSdUQEgnXSkiLz4KLQk8L25hdml0PgotPC9jb25maWc+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L29zZC54bWwgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L29zZC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkMGY5ZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9vc2QueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotICAgICAgICAgICAgICAgIDwhLS0gb3NkIGl0ZW1zIGFsbG93IHRvIHBvc2l0aW9uIGRpc3BsYXkgYW5kIGNvbnRyb2wgaXRlbXMgZGlyZWN0bHkgb24gdG9wIG9mIHRoZSBtYXA6IC0tPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9ImNvbXBhc3MiLz4KLSAgICAgICAgICAgICAgICA8b3NkIGVuYWJsZWQ9Im5vIiB0eXBlPSJldGEiLz4KLSAgICAgICAgICAgICAgICA8b3NkIGVuYWJsZWQ9Im5vIiB0eXBlPSJuYXZpZ2F0aW9uX2Rpc3RhbmNlX3RvX3RhcmdldCIvPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9Im5hdmlnYXRpb24iLz4KLSAgICAgICAgICAgICAgICA8b3NkIGVuYWJsZWQ9Im5vIiB0eXBlPSJuYXZpZ2F0aW9uX2Rpc3RhbmNlX3RvX25leHQiLz4KLSAgICAgICAgICAgICAgICA8b3NkIGVuYWJsZWQ9Im5vIiB0eXBlPSJuYXZpZ2F0aW9uX25leHRfdHVybiIvPgotCi0gICAgICAgICAgICAgICAgPCEtLSBDb21tYW5kcyBpbmNsdWRlIGd1aV9pbnRlcm5hbF9tZW51LCBndWlfaW50ZXJuYWxfZnVsbHNjcmVlbiwgem9vbV9pbiBhbmQgem9vbV9vdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgVXNhZ2Ugb2YgbmVnYXRpdmUgdmFsdWVzIGNoYW5nZSB0aGUgYnV0dG9uIG9yaWdpbnMuIHg9IjAiIHk9IjAiIHNwZWNpZmllcyB0aGUgdG9wIGxlZnQsIHg9Ii0wIiB5PSItMCIgdGhlIGJvdHRvbSByaWdodCBjb3JuZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgSXQncyBhbHdheXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgaWNvbiwgc28geW91IG5lZWQgdG8gY29uc2lkZXIgdGhlIGljb24ncyBzaXplIHdoZW4geW91IGVudGVyIHRoZSB2YWx1ZXMuIC0tPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9ImJ1dHRvbiIgeD0iMCIgeT0iMCIgY29tbWFuZD0iZ3VpLmZ1bGxzY3JlZW4oKSIgc3JjPSJ0b2dnbGVfZnVsbHNjcmVlbi54cG0iLz4KLSAgICAgICAgICAgICAgICA8b3NkIGVuYWJsZWQ9Im5vIiB0eXBlPSJidXR0b24iIHg9Ii05NiIgeT0iMCIgY29tbWFuZD0iZ3VpLm1lbnUoKSIgc3JjPSJtZW51LnhwbSIvPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9ImJ1dHRvbiIgeD0iLTk2IiB5PSItOTYiIGNvbW1hbmQ9Inpvb21faW4oKSIgc3JjPSJ6b29tX2luLnhwbSIvPgotICAgICAgICAgICAgICAgIDxvc2QgZW5hYmxlZD0ibm8iIHR5cGU9ImJ1dHRvbiIgeD0iMCIgeT0iLTk2IiBjb21tYW5kPSJ6b29tX291dCgpIiBzcmM9Inpvb21fb3V0LnhwbSIvPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9wbHVnaW5zLnhtbCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvcGx1Z2lucy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNWIwNTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9uYXZpdC9uYXZpdC9wbHVnaW5zLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotPHBsdWdpbnM+Ci0JPHBsdWdpbiBwYXRoPSIkTkFWSVRfTElCRElSLyovJHtOQVZJVF9MSUJQUkVGSVh9bGliKi5zbyIgb25kZW1hbmQ9InllcyIvPgotCTxwbHVnaW4gcGF0aD0iJE5BVklUX0xJQkRJUi9hdXRvbG9hZC8ke05BVklUX0xJQlBSRUZJWH1saWIqLnNvIi8+Ci0JPHBsdWdpbiBwYXRoPSIkTkFWSVRfTElCRElSLyovJHtOQVZJVF9MSUJQUkVGSVh9bGliYmluZGluZ19kYnVzLnNvIiBhY3RpdmU9InllcyIvPgotCTxwbHVnaW4gcGF0aD0iJE5BVklUX0xJQkRJUi8qLyR7TkFWSVRfTElCUFJFRklYfWxpYmdyYXBoaWNzX251bGwuc28iIGFjdGl2ZT0ibm8iLz4KLTwvcGx1Z2lucz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvc3BlZWNoLnhtbCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXQvc3BlZWNoLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhjNDk5MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0L3NwZWVjaC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSAgICAgICAgICAgICAgICA8IS0tIE5hdml0IHByb3ZpZGVzIHNwZWVjaCBvdXRwdXQgaW4gdGV4dCBmb3JtYXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBzcGVlY2ggc3ludGhlc2l6ZXIgbGlrZSBmZXN0aXZhbCBsaXRlIGluc3RhbGxlZCwgeW91IGNhbiBnZXQgdHVybiBieSB0dXJuIGRpcmVjdGlvbnMgb3V0IG9mIG5hdml0LiBQbGVhc2Ugc2V0IHRoZSAiY3BzIi12YWx1ZSB0byBob3cgbWFueSBjaGFyYWN0ZXJzIHlvdXIgdHRzIGVuZ2luZSBhcHByb3hpbWF0ZWx5IHNwZWFrcyBwZXIgc2Vjb25kLgotICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIHRleHQgb3V0cHV0IHRvIHRoZSBzaGVsbCAtLT4KLSAgICAgICAgICAgICAgICA8IS0tIDxzcGVlY2ggdHlwZT0iY21kbGluZSIgZGF0YT0iZWNobyAnRml4IHRoZSBzcGVlY2ggdGFnIGluIG5hdml0LnhtbCB0byBsZXQgbmF2aXQgc2F5OicgJyVzJyIgY3BzPSIxNSIvPiAtLT4KLSAgICAgICAgICAgICAgICA8IS0tIDxzcGVlY2ggdHlwZT0iY21kbGluZSIgZGF0YT0iZXNwZWFrIC1zIDE1MCAtdiBjemVjaCAnJXMnICZhbXA7Ii8+IC0tPgotICAgICAgICAgICAgICAgIDwhLS0gPHNwZWVjaCB0eXBlPSJjbWRsaW5lIiBkYXRhPSJmbGl0ZSAtdCAnJXMnIi8+IC0tPgotICAgICAgICAgICAgICAgIDwhLS0gPHNwZWVjaCB0eXBlPSJjbWRsaW5lIiBkYXRhPSIvdXNyL2xvY2FsL2Jpbi9zYXkuc2ggJyVzJyIvPiAtLT4KLSAgICAgICAgICAgICAgICA8c3BlZWNoIHR5cGU9ImNtZGxpbmUiIGRhdGE9ImVzcGVhayAnJXMnICZhbXA7Ii8+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL25hdml0L25hdml0X3N2bi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXRfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGZiYjRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vbmF2aXQvbmF2aXRfc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBuYXZpdC5pbmMKLQotU1JDUkVWID0gIjUzMTAiCi1QViA9ICIwLjIuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICIke0lOQ19QUn0uMyIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLVNSQ19VUkkgKz0gInN2bjovL2Fub255bW91c0BuYXZpdC5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvbmF2aXQvdHJ1bms7bW9kdWxlPW5hdml0O3Byb3RvY29sPWh0dHAgXAotICAgIGZpbGU6Ly9mcmVldHlwZS1pbmNsdWRlLXBhdGgucGF0Y2ggXAotICAgIGZpbGU6Ly9jb25maWd1cmUuYWRkLmltbGliMi5vcHRpb24ucGF0Y2ggXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9wcm9qL3Byb2pfNC44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval80LjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRiZmFmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval80LjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiUFJPSi40IC0gQ2FydG9ncmFwaGljIFByb2plY3Rpb25zIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vdHJhYy5vc2dlby5vcmcvcHJvai8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzRkOWFhZWM1ZmEwY2Q3MzQzNDFlOGM0ZGM5MWI2MDgiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLm9zZ2VvLm9yZy9wcm9qL3Byb2otJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQ4MTU4MzhjOTJhMjkxNzkyOThjMTI2ZWZmYmIxNTM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkYjJkYmYwZmVjZThkOTg4MDY3OTE1NGUwZDZkMWNlN2M2OTRkZDhlMDhiNGQwOTEwMjgwOTNkODdhOWQxYjUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wcm9qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9wcm9qL3Byb2pfNC45LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval80LjkuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDVmODk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9wcm9qL3Byb2pfNC45LjMuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJQUk9KLjQgLSBDYXJ0b2dyYXBoaWMgUHJvamVjdGlvbnMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly90cmFjLm9zZ2VvLm9yZy9wcm9qLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NGQ5YWFlYzVmYTBjZDczNDM0MWU4YzRkYzkxYjYwOCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL3Byb2ovcHJvai0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZDU5ODMzNmNhODM0NzQyNzM1MTM3YzU2NzRiMjE0YTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjk4NDU0MmZlYTMzMzQ4OGRlNWM4MmVlYTU4ZDY5OWU0YWZmNGIzNTkyMDBhOTk3MTUzN2NkN2UwNDcxODVmNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3Byb2oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtbWFpbF8zLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1tYWlsXzMuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzRiYTNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1tYWlsXzMuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU0VDVElPTiA9ICJ4MTEvbmV0d29yayIKLVNVTU1BUlkgPSAiTWFpbCB1c2VyIGFnZW50IgotREVQRU5EUyA9ICJndGsrIGxpYmV0cGFuIG9wZW5zc2wgYXNwZWxsIGN1cmwgbGliZ2NyeXB0IgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwNTliZGUyOTcyYzE3OTBhZjc4NmYzZTg2YmFjMjJlIgotCi1QTkJMQUNLTElTVFtjbGF3cy1tYWlsXSA/PSAiZGVwZW5kcyBvbiBibGFja2xpc3RlZCBsaWJldHBhbiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotIyB0cmFuc2xhdGlvbiBwYXRjaDogaHR0cDovL3d3dy50aGV3aWxkYmVhc3QuY28udWsvY2xhd3MtbWFpbC9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTc3NAotU1JDX1VSSSA9ICJcCi0gICAgICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2NsYXdzLW1haWwvQ2xhd3MlMjBNYWlsLyR7UFZ9L2NsYXdzLW1haWwtJHtQVn0udGFyLmJ6MjtuYW1lPWFyY2hpdmUgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNGM1YWM3YjIxZjBlZDE3ZDBmNjQwNDEyNGMyMjI5YTQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlZDcwOTc1YTUwNTZiM2ZmYzRmZTZlOTc3ZjBkOTYwNmZlYmMxNDk5NzYzYzA5MDI0MWIwMjlhNzNmZjI0ZTY1IgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIGNkICR7U30vcG8gOyBmb3IgUE8gaW4gKi5wbyA7IGRvIE1PPWBlY2hvICRQTyB8IHNlZCBzL1xcLnBvLy9gLmdtbyA7IGlmICEgdGVzdCAtZiAkTU8gOyB0aGVuIG1zZ2ZtdCAkUE8gLW8gJE1PIDsgZmkgOyBkb25lOyBjZCAke0J9Ci19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJzdGFydHVwLW5vdGlmaWNhdGlvbiBkYnVzIgotUEFDS0FHRUNPTkZJR1tlbmNoYW50XSA9ICItLWVuYWJsZS1lbmNoYW50LC0tZGlzYWJsZS1lbmNoYW50LGVuY2hhbnQiCi1QQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sc3RhcnR1cC1ub3RpZmljYXRpb24iCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyBkYnVzLWdsaWIiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXAsLS1kaXNhYmxlLWxkYXAsb3BlbmxkYXAiCi0KLSMgRklYTUU6IG1hZW1vIGJ1aWxkcyBtYXkgd2FudCAtLWVuYWJsZS1tYWVtbwotIyBGSVhNRTogc29tZSBwbGF0Zm9ybXMgbWF5IHdhbnQgLS1lbmFibGUtZ2VuZXJpYy11bXBjCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtbWFudWFsIFwKLSAgICAtLWRpc2FibGUtY3Jhc2gtZGlhbG9nIFwKLSAgICAtLWRpc2FibGUtanBpbG90IFwKLSAgICAtLWRpc2FibGUtdHJheWljb24tcGx1Z2luIFwKLSAgICAtLWRpc2FibGUtc3BhbWFzc2Fzc2luLXBsdWdpbiBcCi0gICAgLS1kaXNhYmxlLWJvZ29maWx0ZXItcGx1Z2luIFwKLSAgICAtLWRpc2FibGUtcGdwY29yZS1wbHVnaW4gXAotICAgIC0tZGlzYWJsZS1wZ3BtaW1lLXBsdWdpbiBcCi0gICAgLS1kaXNhYmxlLXBncGlubGluZS1wbHVnaW4gXAotICAgIC0tZGlzYWJsZS1kaWxsby12aWV3ZXItcGx1Z2luIFwKLSAgICAtLWRpc2FibGUtdmFsZ3JpbmQgXAotIgotCi0jIFJlbW92ZSBlbmNoYW50IHJlZmVyZW5jZXM6Ci1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOiR7U1RBR0lOR19JTkNESVJ9OiR7aW5jbHVkZWRpcn06ZztzOiR7U1RBR0lOR19MSUJESVJ9OiR7bGliZGlyfTpnJyBjbGF3cy1tYWlsLnBjCi19Ci0KLSMgV29yay1hcm91bmQgYnJva2VuIEdQRSBpY29uIGxvb2t1cDoKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1yICR7RH0ke2RhdGFkaXJ9L2ljb25zCi0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9waXhtYXBzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vY2xhd3MtbWFpbC5wbmcgJHtEfSR7ZGF0YWRpcn0vcGl4bWFwcy8KLSAgICBzZWQgLWkgJ3MvSWNvbj1bXi5dKiQvJi5wbmcvJyAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvY2xhd3MtbWFpbC5kZXNrdG9wCi19Ci0KLVJTVUdHRVNUU18ke1BOfSA9ICJjbGF3cy1wbHVnaW4tZ3RraHRtbDItdmlld2VyIGNsYXdzLXBsdWdpbi1tYWlsbWJveCBjbGF3cy1wbHVnaW4tcnNzeWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLWd0a2h0bWwyLXZpZXdlci9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLWd0a2h0bWwyLXZpZXdlci9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMmE3OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1ndGtodG1sMi12aWV3ZXIvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotSW5kZXg6IGd0a2h0bWwyX3ZpZXdlci0wLjMxL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGd0a2h0bWwyX3ZpZXdlci0wLjMxLm9yaWcvY29uZmlndXJlLmFjCTIwMTEtMDgtMjcgMDg6MDg6NTUuMDAwMDAwMDAwICswMDAwCi0rKysgZ3RraHRtbDJfdmlld2VyLTAuMzEvY29uZmlndXJlLmFjCTIwMTQtMDctMTggMDc6Mjg6NDIuNzY5NTE4NjE4ICswMDAwCi1AQCAtMSwzMyArMSwyNyBAQAotIEFDX1BSRVJFUSgyLjYwKQotLUFDX0lOSVQoc3JjL2d0a2h0bWwyX3ZpZXdlci5jKQotKwotK2RubCBwbHVnaW4gdmVyc2lvbgotK200X2RlZmluZShbcGx1Z2luX21ham9yX3ZlcnNpb25dLFswXSkKLSttNF9kZWZpbmUoW3BsdWdpbl9taW5vcl92ZXJzaW9uXSxbMzFdKQotK200X2RlZmluZShbcGx1Z2luX21pY3JvX3ZlcnNpb25dLFswXSkKLSttNF9kZWZpbmUoW3BsdWdpbl92ZXJzaW9uXSwgW3BsdWdpbl9tYWpvcl92ZXJzaW9uLnBsdWdpbl9taW5vcl92ZXJzaW9uLnBsdWdpbl9taWNyb192ZXJzaW9uXSkKLSsKLStBQ19JTklUKGd0a2htbDJfdmlld2VyLCBwbHVnaW5fdmVyc2lvbikKLStBQ19DT05GSUdfU1JDRElSKHNyYy9ndGtodG1sMl92aWV3ZXIuYykKLSBBQ19DT05GSUdfQVVYX0RJUihjb25maWcpCi0gQU1fTUFJTlRBSU5FUl9NT0RFCi0gCi0gUEFDS0FHRT1ndGtodG1sMl92aWV3ZXIKLSAKLS1kbmwgcGx1Z2luIHZlcnNpb24KLS1NQUpPUl9WRVJTSU9OPTAKLS1NSU5PUl9WRVJTSU9OPTMxCi0tTUlDUk9fVkVSU0lPTj0wCi0rTUFKT1JfVkVSU0lPTj1wbHVnaW5fbWFqb3JfdmVyc2lvbgotK01JTk9SX1ZFUlNJT049cGx1Z2luX21pbm9yX3ZlcnNpb24KLStNSUNST19WRVJTSU9OPXBsdWdpbl9taWNyb192ZXJzaW9uCi0gRVhUUkFfVkVSU0lPTj0wCi0tCi0taWYgdGVzdCBcKCAkRVhUUkFfVkVSU0lPTiAtZXEgMCBcKTsgdGhlbgotLSAgICBpZiB0ZXN0IFwoICRNSUNST19WRVJTSU9OIC1lcSAwIFwpOyB0aGVuCi0tICAgICAgICBWRVJTSU9OPSR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfSAKLS0gICAgZWxzZQotLQkJVkVSU0lPTj0ke01BSk9SX1ZFUlNJT059LiR7TUlOT1JfVkVSU0lPTn0uJHtNSUNST19WRVJTSU9OfQotLSAgICBmaQotLWVsc2UKLS0gICAgaWYgdGVzdCBcKCAkTUlDUk9fVkVSU0lPTiAtZXEgMCBcKTsgdGhlbgotLSAgICAgICAgVkVSU0lPTj0ke01BSk9SX1ZFUlNJT059LiR7TUlOT1JfVkVSU0lPTn1jdnMke0VYVFJBX1ZFUlNJT059Ci0tICAgIGVsc2UKLS0JCVZFUlNJT049JHtNQUpPUl9WRVJTSU9OfS4ke01JTk9SX1ZFUlNJT059LiR7TUlDUk9fVkVSU0lPTn1jdnMke0VYVFJBX1ZFUlNJT059Ci0tICAgIGZpCi0tZmkKLStWRVJTSU9OPXBsdWdpbl92ZXJzaW9uCi0gCi0gQUNfQ0FOT05JQ0FMX1NZU1RFTQotIAotLUFNX0lOSVRfQVVUT01BS0UoJFBBQ0tBR0UsICRWRVJTSU9OLCBuby1kZWZpbmUpCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBuby1kZWZpbmVdKQotIEFDX0NPTkZJR19IRUFERVJTKGNvbmZpZy5oKQotIEFDX0RFRklORV9VTlFVT1RFRChQTFVHSU5WRVJTSU9OLCAiJFZFUlNJT04iLCBbcGx1Z2luIHZlcnNpb25dKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1ndGtodG1sMi12aWV3ZXJfMC4zMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tZ3RraHRtbDItdmlld2VyXzAuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YjQxYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1ndGtodG1sMi12aWV3ZXJfMC4zMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNFQ1RJT04gPSAieDExL25ldHdvcmsiCi1TVU1NQVJZID0gIk1haWwgdXNlciBhZ2VudCBwbHVnaW5zIgotREVQRU5EUyA9ICJjbGF3cy1tYWlsIGd0a2h0bWwyIGN1cmwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTc3ZjA0YTgwNDhjMDQ2ODRlNTIxYzA2ZTI4NDRhOTQiCi0KLVBOQkxBQ0tMSVNUW2NsYXdzLXBsdWdpbi1ndGtodG1sMi12aWV3ZXJdID89ICJkZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGNsYXdzLW1haWwgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVBSID0gInIxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY2xhd3MtbWFpbC5vcmcvZG93bmxvYWRzL3BsdWdpbnNfb2Jzb2xldGUvZ3RraHRtbDJfdmlld2VyLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiYTZjOWRmYTZmOTY5Y2NkODQ0Nzk2YTU3MjRiNTIxNjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQ0MWY2ZDk2MWVmYWFjMGY1MTcwNWU1MDUyYmFjNzMyYmMwYmRhZmVlMmVmMjA4MmE5Y2Y5ZDg5ZjE4M2FlNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotUyA9ICIke1dPUktESVJ9L2d0a2h0bWwyX3ZpZXdlci0ke1BWfSIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2NsYXdzLW1haWwvcGx1Z2lucy8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NsYXdzLW1haWwvcGx1Z2lucy8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9jbGF3cy1tYWlsL3BsdWdpbnMvKi5hIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLW1haWxtYm94XzEuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLW1haWxtYm94XzEuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NmI1ZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL2NsYXdzLXBsdWdpbi1tYWlsbWJveF8xLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU0VDVElPTiA9ICJ4MTEvbmV0d29yayIKLVNVTU1BUlkgPSAiTWFpbCB1c2VyIGFnZW50IHBsdWdpbnMiCi1ERVBFTkRTID0gImNsYXdzLW1haWwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVBOQkxBQ0tMSVNUW2NsYXdzLXBsdWdpbi1tYWlsbWJveF0gPz0gImRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgY2xhd3MtbWFpbCAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNsYXdzLW1haWwub3JnL2Rvd25sb2Fkcy9wbHVnaW5zX29ic29sZXRlL21haWxtYm94LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZjcyYzY4ZTZlMWE4NzY4ZjEyNDdmNDU1ZmQyMGI2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzNmNzgzNTI2MWM4OGEwYWEwNmRlMzg1NTNhYzkzNWExNzk5YTcxMjgxMjA5NjNhN2ZhODdhY2UwMWRhYzE4IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUyA9ICIke1dPUktESVJ9L21haWxtYm94LSR7UFZ9IgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9jbGF3cy1tYWlsL3BsdWdpbnMvLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2NsYXdzLW1haWwvcGx1Z2lucy8qLmEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLXJzc3lsL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tcnNzeWwvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2EzOGYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tcnNzeWwvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotSW5kZXg6IHJzc3lsLTAuMzQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcnNzeWwtMC4zNC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE4IDA3OjM3OjI4Ljk4MTUzMjk1OSArMDAwMAotKysrIHJzc3lsLTAuMzQvY29uZmlndXJlLmFjCTIwMTQtMDctMTggMDc6Mzk6NDUuODgxNTM2NjkwICswMDAwCi1AQCAtMSw1ICsxLDEzIEBACi0rCi0rZG5sIHBsdWdpbiB2ZXJzaW9uCi0rbTRfZGVmaW5lKFtwbHVnaW5fbWFqb3JfdmVyc2lvbl0sWzBdKQotK200X2RlZmluZShbcGx1Z2luX21pbm9yX3ZlcnNpb25dLFszNF0pCi0rbTRfZGVmaW5lKFtwbHVnaW5fbWljcm9fdmVyc2lvbl0sWzBdKQotK200X2RlZmluZShbcGx1Z2luX3ZlcnNpb25dLCBbcGx1Z2luX21ham9yX3ZlcnNpb24ucGx1Z2luX21pbm9yX3ZlcnNpb24ucGx1Z2luX21pY3JvX3ZlcnNpb25dKQotKwotIEFDX1BSRVJFUSgyLjYwKQotLUFDX0lOSVQoc3JjL3BsdWdpbi5jKQotK0FDX0lOSVQocnNzeWwsIHBsdWdpbl92ZXJzaW9uKQotK0FDX0NPTkZJR19TUkNESVIoc3JjL3BsdWdpbi5jKQotIEFDX0NPTkZJR19BVVhfRElSKGNvbmZpZykKLSBBTV9NQUlOVEFJTkVSX01PREUKLSBBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLUBAIC03LDI4ICsxNSwxNSBAQAotIFBBQ0tBR0U9cnNzeWwKLSAKLSBkbmwgcGx1Z2luIHZlcnNpb24KLS1NQUpPUl9WRVJTSU9OPTAKLS1NSU5PUl9WRVJTSU9OPTM0Ci0tTUlDUk9fVkVSU0lPTj0wCi0rTUFKT1JfVkVSU0lPTj1wbHVnaW5fbWFqb3JfdmVyc2lvbgotK01JTk9SX1ZFUlNJT049cGx1Z2luX21pbm9yX3ZlcnNpb24KLStNSUNST19WRVJTSU9OPXBsdWdpbl9taWNyb192ZXJzaW9uCi0gRVhUUkFfVkVSU0lPTj0wCi0tCi0taWYgdGVzdCBcKCAkRVhUUkFfVkVSU0lPTiAtZXEgMCBcKTsgdGhlbgotLSAgICBpZiB0ZXN0IFwoICRNSUNST19WRVJTSU9OIC1lcSAwIFwpOyB0aGVuCi0tICAgICAgICBWRVJTSU9OPSR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfSAKLS0gICAgZWxzZQotLQkJVkVSU0lPTj0ke01BSk9SX1ZFUlNJT059LiR7TUlOT1JfVkVSU0lPTn0uJHtNSUNST19WRVJTSU9OfQotLSAgICBmaQotLWVsc2UKLS0gICAgaWYgdGVzdCBcKCAkTUlDUk9fVkVSU0lPTiAtZXEgMCBcKTsgdGhlbgotLSAgICAgICAgVkVSU0lPTj0ke01BSk9SX1ZFUlNJT059LiR7TUlOT1JfVkVSU0lPTn1jdnMke0VYVFJBX1ZFUlNJT059Ci0tICAgIGVsc2UKLS0JCVZFUlNJT049JHtNQUpPUl9WRVJTSU9OfS4ke01JTk9SX1ZFUlNJT059LiR7TUlDUk9fVkVSU0lPTn1jdnMke0VYVFJBX1ZFUlNJT059Ci0tICAgIGZpCi0tZmkKLStWRVJTSU9OPXBsdWdpbl92ZXJzaW9uCi0gCi0gQUNfQ0FOT05JQ0FMX1NZU1RFTQotIAotLUFNX0lOSVRfQVVUT01BS0UoJFBBQ0tBR0UsICRWRVJTSU9OLCBuby1kZWZpbmUpCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBuby1kZWZpbmVdKQotIEFDX0RFRklORV9VTlFVT1RFRChQTFVHSU5WRVJTSU9OLCAiJFZFUlNJT04iLCBbcGx1Z2luIHZlcnNpb25dKQotIAotIEFDX1BST0dfQ0MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tcnNzeWxfMC4zNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9jbGF3cy1wbHVnaW4tcnNzeWxfMC4zNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVjOWEyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvY2xhd3MtcGx1Z2luLXJzc3lsXzAuMzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TRUNUSU9OID0gIngxMS9uZXR3b3JrIgotU1VNTUFSWSA9ICJNYWlsIHVzZXIgYWdlbnQgcGx1Z2lucyIKLURFUEVORFMgPSAiY2xhd3MtbWFpbCBsaWJ4bWwyIGN1cmwgZ2xpYi0yLjAgZ3RrKyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzIzNDhlMGEwODRlNTczZjAyMjBmNWU0NWQ4MDk3ZSIKLQotUE5CTEFDS0xJU1RbY2xhd3MtcGx1Z2luLXJzc3lsXSA/PSAiZGVwZW5kcyBvbiBibGFja2xpc3RlZCBjbGF3cy1tYWlsIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY2xhd3MtbWFpbC5vcmcvZG93bmxvYWRzL3BsdWdpbnNfb2Jzb2xldGUvcnNzeWwtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0OWI0NTYwOGU4ZDE2MGIzNjI1ZDNkNTAwMTZlYzJjYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZTk2YTFjZDZhMWE1YmI3Zjg2Y2QyZWI0OGY2ZTE3NDY2NTk1N2ZhZmUxZjNiMWU4MzYxYWFjM2JiOTY3Zjc5IgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotUyA9ICIke1dPUktESVJ9L3Jzc3lsLSR7UFZ9IgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9jbGF3cy1tYWlsL3BsdWdpbnMvLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY2xhd3MtbWFpbC9wbHVnaW5zLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2NsYXdzLW1haWwvcGx1Z2lucy8qLmEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvc3lscGhlZWQvZ2xpYi0yLjMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL3N5bHBoZWVkL2dsaWItMi4zMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUyMGU1Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zYXRvL2NsYXdzLW1haWwvc3lscGhlZWQvZ2xpYi0yLjMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIHN5bHBoZWVkLTIuNy4xLm9yaWcvbGlic3lscGgvZGVmcy5oCTIwMDktMDYtMTAgMDk6NTU6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgc3lscGhlZWQtMi43LjEvbGlic3lscGgvZGVmcy5oCTIwMTItMDUtMDYgMDg6Mjg6MjcuNTE0NzQ2MjU2ICswMjAwCi1AQCAtMjQsOCArMjQsNiBAQAotICMgIGluY2x1ZGUgImNvbmZpZy5oIgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxnbGliY29uZmlnLmg+Ci0tCi0gI2lmZGVmIEdfT1NfV0lOMzIKLSAjICBpbmNsdWRlIDxnbGliL2d3aW4zMi5oPgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL3N5bHBoZWVkXzIuNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2F0by9jbGF3cy1tYWlsL3N5bHBoZWVkXzIuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzhkNzc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNhdG8vY2xhd3MtbWFpbC9zeWxwaGVlZF8yLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNFQ1RJT04gPSAieDExL25ldHdvcmsiCi1TVU1NQVJZID0gIk1haWwgdXNlciBhZ2VudCIKLURFUEVORFMgPSAiZ3RrKyBncGdtZSBnbnV0bHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi0KLVBSID0gInIyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zeWxwaGVlZC5zcmFvc3MuanAvc3lscGhlZWQvdjIuNy9zeWxwaGVlZC0ke1BWfS50YXIuYnoyIFwKLSAgICBmaWxlOi8vZ2xpYi0yLjMyLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxZjQ3MDUyNWMxZmJlNTMyNTM4MTNhMDk3OGMxODIyOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YmI2NDU3ZGI0ZTJlZWExODc3YjQ4N2Q5YWM4NTEzNTQ2MzcyZGI5YTZhMmU0MjcxZDExMjI5ZjRhZjg0ZTIzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9waXhtYXBzICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXNzbCIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCBtNAotICAgIGZvciBpIGluICQoZmluZCAke1N9IC1uYW1lICJNYWtlZmlsZS5hbSIpIDsgZG8KLSAgICAgICAgc2VkIC1pIHM6Jy1JJChpbmNsdWRlZGlyKSc6OmcgJGkKLSAgICBkb25lCi19Ci0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0KLVBOQkxBQ0tMSVNUW3N5bHBoZWVkXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDY1MS8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FwY3Vwc2QvYXBjdXBzZF8zLjE0LjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hcGN1cHNkL2FwY3Vwc2RfMy4xNC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNTRhNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FwY3Vwc2QvYXBjdXBzZF8zLjE0LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJBcGN1cHNkIGEgZGFlbW9uIGZvciBjb250cm9sbGluZyBBUEMgVVBTZXMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMTI4NTNjYzdmZGYyMGQxN2I0ZmRkZWZkMjZiNzgwMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ2Fyci5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9hcGN1cHNkL2FwY3Vwc2QlMjAtJTIwU3RhYmxlLzMuMTQuMTAvYXBjdXBzZC0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTkyODgyMmQ4NTVjNWNmN2FjMjk2NTVlM2UwYjhjMjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDcwN2I1ZWM5OTE2ZmJkZTllNDRlYjhkMTgwMzdjOGQ4Zjc1ZGZkNmFlZWY1MWFiYTU0ODdlMTg5ZWVmMjAzMiIKLQotUE5CTEFDS0xJU1RbYXBjdXBzZF0gPz0gIkJST0tFTjogZG9lc24ndCBidWlsZCB3aXRoIEIhPVMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUxEID0gIiR7Q1hYfSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC14IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS11c2IgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kaXN0bmFtZT0ke0RJU1RST30iCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBleHBvcnQgdG9wZGlyPSR7U30KLSAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L2F1dG9jb25mL2NvbmZpZ3VyZS5pbiAke1N9Ci0KLSAgICBpZiAhIFsgLWQgJHtTfS9wbGF0Zm9ybXMvJHtESVNUUk99IF0gOyB0aGVuCi0gICAgICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vcGxhdGZvcm1zL3Vua25vd24gJHtTfS9wbGF0Zm9ybXMvJHtESVNUUk99Ci0gICAgZmkKLQotICAgIGdudS1jb25maWdpemUgLS1mb3JjZQotICAgICMgaW5zdGFsbCAtLWhlbHAgc2F5cyAnLWMnIGlzIGFuIGlnbm9yZWQgb3B0aW9uLCBidXQgaXQgdHVybnMgb3V0IHRoYXQgdGhlIGFyZ3VtZW50IHRvIC1jIGlzbid0IGlnbm9yZWQsIHNvIGRyb3AgdGhlIGNvbXBsZXRlICctYyBwYXRoL3RvL3N0cmlwJyBsaW5lCi0gICAgc2VkIC1pIC1lICdzOiQoSU5TVEFMTF9QUk9HUkFNKSAkKFNUUklQKTokKElOU1RBTExfUFJPR1JBTSk6ZycgJHtTfS9hdXRvY29uZi90YXJnZXRzLm1hawotICAgICMgU2VhcmNoaW5nIGluIGhvc3QgZGlycyB0cmlnZ2VycyB0aGUgUUEgY2hlY2tzCi0gICAgc2VkIC1pIC1lICdzOi1JL3Vzci9sb2NhbC9pbmNsdWRlOjpnJyAtZSAnczotTC91c3IvbG9jYWwvbGliNjQ6OmcnIC1lICdzOi1ML3Vzci9sb2NhbC9saWI6OmcnICR7U30vY29uZmlndXJlCi0KLSAgICAjIG00IG1hY3JvcyBhcmUgbWlzc2luZywgdXNpbmcgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSBsZWFkcyB0byBsaW5raW5nIGVycm9ycyB3aXRoIGdldGhvc3RuYW1lX3JlCi0gICAgb2VfcnVuY29uZgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAke0R9JHtkYXRhZGlyfS9oYWwgLXJmCi19Ci0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djLzAwMDEtY29uZmlndXJlLmFjLWFkZC1jaGVjay1mb3ItTk9fR0VUQ09OVEVYVC1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtY2hlY2stZm9yLU5PX0dFVENPTlRFWFQtZGVmaW5pdGlvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djLzAwMDEtY29uZmlndXJlLmFjLWFkZC1jaGVjay1mb3ItTk9fR0VUQ09OVEVYVC1kZWZpbml0aW9uLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djLzAwMDEtY29uZmlndXJlLmFjLWFkZC1jaGVjay1mb3ItTk9fR0VUQ09OVEVYVC1kZWZpbml0aW9uLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvbXVzbF9oZWFkZXJfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy9tdXNsX2hlYWRlcl9maXgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy9tdXNsX2hlYWRlcl9maXgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvbXVzbF9oZWFkZXJfZml4LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2NfNy42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzcuNi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2NfNy42LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2NfNy42LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2VyZXMtc29sdmVyL2NlcmVzLXNvbHZlcl8xLjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg4M2M3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2VyZXMtc29sdmVyL2NlcmVzLXNvbHZlcl8xLjEzLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gIkNlcmVzIFNvbHZlciBpcyBhbiBvcGVuIHNvdXJjZSBDKysgbGlicmFyeSBmb3IgbW9kZWxpbmcgYW5kIHNvbHZpbmcgbGFyZ2UsIGNvbXBsaWNhdGVkIG9wdGltaXphdGlvbiBwcm9ibGVtcy4iCitBVVRIT1IgPSAiU2FtZWVyIEFnYXJ3YWwgYW5kIEtlaXIgTWllcmxlIGFuZCBPdGhlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vY2VyZXMtc29sdmVyLm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzVlMDBmMGM0Yzk2YTA4MjBhMDNlMGIzMWU2NDE2YmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyLmdpdCIKK1NSQ1JFViA9ICIxOTMzM2IwZjU1Yzg0NjIzODEwMzhlNzBkNDJhZjQzYjUyOTQxMTI4IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gImxpYmVpZ2VuIGdsb2ciCisKK2luaGVyaXQgY21ha2UKKworIyBPbmx5IGEgc3RhdGljIGxpYnJhcnkgYW5kIGhlYWRlcnMgYXJlIGNyZWF0ZWQKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzXzAuNzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzXzAuNzYuYmIKaW5kZXggZGVmNThkYi4uODRlOWJjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kYWVtb250b29scy9kYWVtb250b29sc18wLjc2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHNfMC43Ni5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiREpCIGRhZW1vbnRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cDovL2NyLnlwLnRvL2RhZW1vbnRvb2xzLmh0bWwiCiBERVNDUklQVElPTiA9ICJzdXBlcnZpc2UgbW9uaXRvcnMgYSBzZXJ2aWNlLiBJdCBzdGFydHMgdGhlIHNlcnZpY2UgYW5kIHJlc3RhcnRzIHRoZSBcCiBzZXJ2aWNlIGlmIGl0IGRpZXMuIFRoZSBjb21wYW5pb24gc3ZjIHByb2dyYW0gc3RvcHMsIHBhdXNlcywgb3IgcmVzdGFydHMgXAogdGhlIHNlcnZpY2Ugb24gc3lzYWRtaW4gcmVxdWVzdC4gVGhlIHN2c3RhdCBwcm9ncmFtIHByaW50cyBhIG9uZS1saW5lIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGVic3Vtcy9kZWJzdW1zXzIuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNmMjBlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGVic3Vtcy9kZWJzdW1zXzIuMi4yLmJiCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgorU1VNTUFSWV8ke1BOfS1jcm9uID0gIkNyb24gc2NyaXB0cyB0byBjb250cm9sIGF1dG9tYXRpYyBkZWJzdW0gY2hlY2tpbmciCitERVNDUklQVElPTiA9ICJBIHRvb2wgZm9yIHZlcmlmaWNhdGlvbiBvZiBpbnN0YWxsZWQgcGFja2FnZSBmaWxlcyBhZ2FpbnN0IFwKK01ENSBjaGVja3N1bXMgZGVic3VtcyBjYW4gdmVyaWZ5IHRoZSBpbnRlZ3JpdHkgb2YgaW5zdGFsbGVkIHBhY2thZ2UgZmlsZXMgXAorYWdhaW5zdCBNRDUgY2hlY2tzdW1zIGluc3RhbGxlZCBieSB0aGUgcGFja2FnZSwgb3IgZ2VuZXJhdGVkIGZyb20gYSAuZGViIFwKK2FyY2hpdmUuIgorREVTQ1JJUFRJT05fJHtQTn0tY3JvbiA9ICJDcm9uIHNjcmlwdHMgdG8gY29udHJvbCBhdXRvbWF0aWMgc3lzdGVtIGludGVncml0eSBcCitjaGVja2luZyB2aWEgZGVic3Vtcy4iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9NzcwZDc1MTU1M2U2NTU5ZTllYWVmZDJlMTFjY2Y3ZTkiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNzA1MzBUMjEyMTA4Wi9wb29sL21haW4vZC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIudGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjgyYjA3MTA4NTVhN2U1MjEyZDQzNTgxNjNhMjY5ZTc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhNjE4OTZmOTNhNmJiZmUwMTYxYzIxZGNkNjc1MjlhZThlMWVjOGMzY2NmMjQ0NTIzYzUyYzRhZDgyNTNkOTciCisKKyMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCisjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgorCitpbmhlcml0IHBlcmxuYXRpdmUgZ2V0dGV4dAorCitkb19pbnN0YWxsKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5ICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLndlZWtseQorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLm1vbnRobHkgJHtEfSR7c2JpbmRpcn0gJHtEfSR7YmluZGlyfQorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuMSAke0R9JHttYW5kaXJ9L21hbjgKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1IGRlYnN1bXMgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1IHJkZWJzdW1zICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSBkZWJzdW1zX2luaXQgJHtEfSR7c2JpbmRpcn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IG1hbi9kZWJzdW1zLjEgJHtEfSR7bWFuZGlyfS9tYW4xLworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgbWFuL3JkZWJzdW1zLjEgJHtEfSR7bWFuZGlyfS9tYW4xLworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgbWFuL2RlYnN1bXNfaW5pdC44ICR7RH0ke21hbmRpcn0vbWFuOC8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRlYmlhbi9jcm9uLmRhaWx5IFwKKyAgICAgICAgICAgICAgICAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9kZWJzdW1zCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBkZWJpYW4vY3Jvbi53ZWVrbHkgXAorICAgICAgICAgICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLndlZWtseS9kZWJzdW1zCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBkZWJpYW4vY3Jvbi5tb250aGx5IFwKKyAgICAgICAgICAgICAgICAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5L2RlYnN1bXMKKyAgICAgICAgIyBNdXN0IGV4aXN0LCBkZWZhdWx0cyB0byBlbXB0eS4KKyAgICAgICAgdG91Y2ggJHtEfS8ke3N5c2NvbmZkaXJ9L2RlYnN1bXMtaWdub3JlCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1jcm9uIgorCitSREVQRU5EU18ke1BOfSA9ICJkcGtnIGRwa2ctcGVybCBsaWJmaWxlLWZubWF0Y2gtcGVybCBwZXJsIFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IHBlcmwtbW9kdWxlLWRpZ2VzdC1tZDUgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXJybm8gcGVybC1tb2R1bGUtZmNudGwgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBwZXJsLW1vZHVsZS1maWxlLWNvcHkgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wb3NpeCIKKworRklMRVNfJHtQTn0tY3JvbiA9ICIke3N5c2NvbmZkaXJ9L2Nyb24uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGZ1LXV0aWwvZGZ1LXV0aWwtbmF0aXZlXzAuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGZ1LXV0aWwvZGZ1LXV0aWwtbmF0aXZlXzAuOS5iYgppbmRleCA3YTdhNjYyLi5hZWNhMjNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RmdS11dGlsL2RmdS11dGlsLW5hdGl2ZV8wLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZnUtdXRpbC9kZnUtdXRpbC1uYXRpdmVfMC45LmJiCkBAIC04LDkgKzgsOCBAQAogCiBkb19kZXBsb3lbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7REVQTE9ZX0RJUl9UT09MU30iCiBkb19kZXBsb3koKSB7Ci0gICAgaW5zdGFsbCAtZCAke0RFUExPWV9ESVJfVE9PTFN9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IHNyYy9kZnUtdXRpbF9zdGF0aWMgJHtERVBMT1lfRElSX1RPT0xTfS9kZnUtdXRpbC0ke1BWfQotICAgIHJtIC1mICR7REVQTE9ZX0RJUl9UT09MU30vZGZ1LXV0aWwKLSAgICBsbiAtc2YgLi9kZnUtdXRpbC0ke1BWfSAke0RFUExPWV9ESVJfVE9PTFN9L2RmdS11dGlsCisgICAgaW5zdGFsbCAtbSAwNzU1IHNyYy9kZnUtdXRpbF9zdGF0aWMgJHtERVBMT1lESVJ9L2RmdS11dGlsLSR7UFZ9CisgICAgcm0gLWYgJHtERVBMT1lESVJ9L2RmdS11dGlsCisgICAgbG4gLXNmIC4vZGZ1LXV0aWwtJHtQVn0gJHtERVBMT1lESVJ9L2RmdS11dGlsCiB9CiBhZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fcGFja2FnZSBhZnRlciBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RmdS11dGlsL2RmdS11dGlsXzAuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGZ1LXV0aWwvZGZ1LXV0aWxfMC45LmJiCmluZGV4IDAxYmNhMjIuLjc2ZTE1NTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGZ1LXV0aWwvZGZ1LXV0aWxfMC45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGZ1LXV0aWwvZGZ1LXV0aWxfMC45LmJiCkBAIC0xLDQgKzEsNSBAQAogREVTQ1JJUFRJT04gPSAiVVNCIERldmljZSBGaXJtd2FyZSBVcGdyYWRlIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vZGZ1LXV0aWwuc291cmNlZm9yZ2UubmV0IgogU0VDVElPTiA9ICJkZXZlbCIKIEFVVEhPUiA9ICJIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPiIKIExJQ0VOU0UgPSAiR1BMdjIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmY3ZDFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjMuNC5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIkNvbnZlcnQgdGV4dCBmaWxlIGxpbmUgZW5kaW5ncyBiZXR3ZWVuIENSTEYgYW5kIExGIgorREVTQ1JJUFRJT04gPSAiVGhlIERvczJ1bml4IHBhY2thZ2UgaW5jbHVkZXMgdXRpbGl0aWVzIGRvczJ1bml4IGFuZCBcCit1bml4MmRvcyB0byBjb252ZXJ0IHBsYWluIHRleHQgZmlsZXMgaW4gRE9TIG9yIE1hYyBmb3JtYXQgdG8gVW5peCBcCitmb3JtYXQgYW5kIHZpY2UgdmVyc2EuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dhdGVybGFuLmhvbWUueHM0YWxsLm5sL2RvczJ1bml4Lmh0bWwiCitTRUNUSU9OID0gInN1cHBvcnQiCisKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTFiNzhmY2E3ODRkYjI0ZjRhNDBlMzBiMzAwNzg3ZjNmIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL2RvczJ1bml4L2RvczJ1bml4IgorCisjIFJlbGVhc2UgNy4zLjQKK1NSQ1JFViA9ICI4MzgxYmE0ZTFjNGNkNWNlOThlYmQ5YzI0NzI2ZDUxY2IyMDNjZGUwIgorCitTID0gIiR7V09SS0RJUn0vZ2l0L2RvczJ1bml4IgorCitpbmhlcml0IGdldHRleHQgcGVybG5hdGl2ZQorCisjIFRoZSBkb3MydW5peCBOTFMgcmVsaWVzIG9uIHBvNGEtbmF0aXZlLCB3aGlsZSBwbzRhIHJlY2lwZSBpcworIyBwcm92aWRlZCBieSBtZXRhLXBlcmwgbGF5ZXIsIHNvIG1ha2UgaXQgb3B0aW9uYWwgaGVyZSwgeW91CisjIG5lZWQgaGF2ZSBtZXRhLXBlcmwgaW4gYmJsYXllcnMuY29uZiBiZWZvcmUgZW5hYmxpbmcgbmxzIGluCisjIFBBQ0tBR0VDT05GSUcuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tubHNdID0gIkVOQUJMRV9OTFM9MSxFTkFCTEVfTkxTPSxwbzRhLW5hdGl2ZSIKKworRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gTERGTEFHU19VU0VSPScke0xERkxBR1N9JyIKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiRU5BQkxFX05MUz0iCisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSR7YmFzZV9wcmVmaXh9IiBpbnN0YWxsCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW1hY3MvZW1hY3MtMjMuNC9ub3N0ZGxpYi11bndpbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VtYWNzL2VtYWNzLTIzLjQvbm9zdGRsaWItdW53aW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjAwMzAxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW1hY3MvZW1hY3MtMjMuNC9ub3N0ZGxpYi11bndpbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1GaXggbGlua2luZyBwcm9ibGVtOgotdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19hZWFiaV91bndpbmRfY3BwX3ByMCcKLXVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYWVhYmlfdW53aW5kX2NwcF9wcjEnCi1JbmRleDogZW1hY3Mvc3JjL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZW1hY3Mub3JpZy9zcmMvTWFrZWZpbGUuaW4JMjAwOC0wOC0xNiAxNDoyMDoxOC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBlbWFjcy9zcmMvTWFrZWZpbGUuaW4JMjAwOC0wOC0xNiAxNDo1MToyNS4wMDAwMDAwMDAgKzAwMDAKLUBAIC00NDMsNyArNDQzLDcgQEAKLSAgICBhc2sgR0NDIGV4cGxpY2l0bHkgd2hlcmUgdG8gZmluZCBsaWJnY2MuYS4gICovCi0gCi0gI2lmbmRlZiBMSU5LRVIKLS0jZGVmaW5lIExJTktFUiAkKENDKSAtbm9zdGRsaWIKLSsjZGVmaW5lIExJTktFUiAkKENDKSAtbm9zdGRsaWIgLWxnY2NfcwotICNlbmRpZgotIAotICNpZm5kZWYgTElCX0dDQwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjcy0yMy40L3VzZS1xZW11LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjcy0yMy40L3VzZS1xZW11LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTUyMDdhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW1hY3MvZW1hY3MtMjMuNC91c2UtcWVtdS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1kaWZmIC11TnIgZW1hY3MtMjMuNC9NYWtlZmlsZS5pbiBlbWFjcy0yMy40Lm5ldy9NYWtlZmlsZS5pbgotLS0tIGVtYWNzLTIzLjQvTWFrZWZpbGUuaW4JMjAxMi0wMS0xMSAxMzozNTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBlbWFjcy0yMy40Lm5ldy9NYWtlZmlsZS5pbgkyMDEyLTA3LTMxIDAwOjU0OjA3LjIyMzU5MDg2NiArMDIwMAotQEAgLTMzNiw3ICszMzYsNyBAQAotICMgYWxsIHByZWxvYWRlZCBlbGlzcCBmaWxlcywgYW5kIG9ubHkgdGhlbiBkdW1wIHRoZSBhY3R1YWwgc3JjL2VtYWNzLCB3aGljaAotICMgaXMgbm90IHdyb25nLCBidXQgaXMgb3ZlcmtpbGwgaW4gOTkuOTklIG9mIHRoZSBjYXNlcy4KLSBzcmM6IE1ha2VmaWxlIEZSQwotLQlib290PWJvb3RzdHJhcC1lbWFjcyQoRVhFRVhUKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwlib290PSR7UUVNVX0gYm9vdHN0cmFwLWVtYWNzJChFWEVFWFQpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gCWlmIFsgISAteCAic3JjLyQkYm9vdCIgXTsgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gCSAgICBjZCAkQDsgJChNQUtFKSBhbGwgJChNRkxBR1MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gCSAgICAgIENDPScke0NDfScgQ0ZMQUdTPScke0NGTEFHU30nIENQUEZMQUdTPScke0NQUEZMQUdTfScgICAgICAgICBcCi1kaWZmIC11TnIgZW1hY3MtMjMuNC9sZWltL01ha2VmaWxlLmluIGVtYWNzLTIzLjQubmV3L2xlaW0vTWFrZWZpbGUuaW4KLS0tLSBlbWFjcy0yMy40L2xlaW0vTWFrZWZpbGUuaW4JMjAxMi0wMS0xMSAxMzozNTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBlbWFjcy0yMy40Lm5ldy9sZWltL01ha2VmaWxlLmluCTIwMTItMDctMzEgMDA6NTQ6MDcuMTc5NTkwODY2ICswMjAwCi1AQCAtNTEsNyArNTEsNyBAQAotIAotICMgSG93IHRvIHJ1biBFbWFjcy4KLSBSVU4tRU1BQ1MgPSBFTUFDU0xPQURQQVRIPSQoYnVpbGRsaXNwcGF0aCkgTENfQUxMPUMgXAotLQkke0JVSUxULUVNQUNTfSAtYmF0Y2ggLS1uby1pbml0LWZpbGUgLS1uby1zaXRlLWZpbGUgLS1tdWx0aWJ5dGUKLSsJJHtRRU1VfSAke0JVSUxULUVNQUNTfSAtYmF0Y2ggLS1uby1pbml0LWZpbGUgLS1uby1zaXRlLWZpbGUgLS1tdWx0aWJ5dGUKLSAKLSAjIFN1YmRpcmVjdG9yaWVzIHRvIGJlIG1hZGUgaWYgJHtzcmNkaXJ9IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50Ci0gIyBkaXJlY3RvcnkuCi1kaWZmIC11TnIgZW1hY3MtMjMuNC9saWItc3JjL01ha2VmaWxlLmluIGVtYWNzLTIzLjQubmV3L2xpYi1zcmMvTWFrZWZpbGUuaW4KLS0tLSBlbWFjcy0yMy40L2xpYi1zcmMvTWFrZWZpbGUuaW4JMjAxMi0wMS0xMSAxMzozNTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBlbWFjcy0yMy40Lm5ldy9saWItc3JjL01ha2VmaWxlLmluCTIwMTItMDctMzEgMDA6NTQ6MDcuMTgwNTkwODY2ICswMjAwCi1AQCAtMjMsNyArMjMsNyBAQAotIFNIRUxMID0gL2Jpbi9zaAotIAotICMgRm9sbG93aW5nIC4uL2xpc3AvTWFrZWZpbGUuaW4uCi0tRU1BQ1MgPSAuLi9zcmMvZW1hY3MKLStFTUFDUyA9ICR7UUVNVX0gLi4vc3JjL2VtYWNzCi0gRU1BQ1NPUFQgPSAtYmF0Y2ggLS1uby1zaXRlLWZpbGUgLS1tdWx0aWJ5dGUKLSAKLSAjID09PT09PT09PT09PT09PT09PT09IFRoaW5ncyBgY29uZmlndXJlJyB3aWxsIGVkaXQgPT09PT09PT09PT09PT09PT09PT0KLUBAIC0zNzIsNyArMzcyLDcgQEAKLSAgICBjbG9iYmVyZWQgdG9vLiAgKi8KLSB0ZXN0LWRpc3RyaWIke0VYRUVYVH06ICR7c3JjZGlyfS90ZXN0LWRpc3RyaWIuYwotIAkkKENDKSAke0FMTF9DRkxBR1N9IC1vIHRlc3QtZGlzdHJpYiAke3NyY2Rpcn0vdGVzdC1kaXN0cmliLmMKLS0JLi90ZXN0LWRpc3RyaWIgJHtzcmNkaXJ9L3Rlc3RmaWxlCi0rCSR7UUVNVX0gLi90ZXN0LWRpc3RyaWIgJHtzcmNkaXJ9L3Rlc3RmaWxlCi0gCi0gLyogV2UgbmVlZCB0aGUgZm9sbG93aW5nIGluIG9yZGVyIHRvIGNyZWF0ZSBhIDxnZXRvcHQuaD4gd2hlbiB0aGUgc3lzdGVtCi0gICAgZG9lcyBub3QgaGF2ZSBvbmUgdGhhdCB3b3JrcyB3aXRoIHRoZSBnaXZlbiBjb21waWxlci4gICovCi1kaWZmIC11TnIgZW1hY3MtMjMuNC9saXNwL01ha2VmaWxlLmluIGVtYWNzLTIzLjQubmV3L2xpc3AvTWFrZWZpbGUuaW4KLS0tLSBlbWFjcy0yMy40L2xpc3AvTWFrZWZpbGUuaW4JMjAxMi0wMS0xMSAxMzozNTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBlbWFjcy0yMy40Lm5ldy9saXNwL01ha2VmaWxlLmluCTIwMTItMDctMzEgMDA6NTQ6MDcuMTk1NTkwODY2ICswMjAwCi1AQCAtMjYsOCArMjYsNyBAQAotICMgWW91IGNhbiBzcGVjaWZ5IGEgZGlmZmVyZW50IGV4ZWN1dGFibGUgb24gdGhlIG1ha2UgY29tbWFuZCBsaW5lLAotICMgZS5nLiAibWFrZSBFTUFDUz0uLi9zcmMvZW1hY3MgLi4uIi4KLSAKLS1FTUFDUyA9IC4uL3NyYy9lbWFjcwotLQotK0VNQUNTID0gIiR7UUVNVX0gLi4vc3JjL2VtYWNzIgotICMgQ29tbWFuZCBsaW5lIGZsYWdzIGZvciBFbWFjcy4gIFRoaXMgbXVzdCBpbmNsdWRlIC0tbXVsdGlieXRlLAotICMgb3RoZXJ3aXNlIHNvbWUgZmlsZXMgd2lsbCBub3QgY29tcGlsZS4KLSAKLWRpZmYgLXVOciBlbWFjcy0yMy40L3NyYy9NYWtlZmlsZS5pbiBlbWFjcy0yMy40Lm5ldy9zcmMvTWFrZWZpbGUuaW4KLS0tLSBlbWFjcy0yMy40L3NyYy9NYWtlZmlsZS5pbgkyMDEyLTAxLTEyIDExOjI3OjU0LjAwMDAwMDAwMCArMDEwMAotKysrIGVtYWNzLTIzLjQubmV3L3NyYy9NYWtlZmlsZS5pbgkyMDEyLTA3LTMxIDAwOjU1OjMwLjM0NDU5Mzg0NyArMDIwMAotQEAgLTQ4Miw3ICs0ODIsNyBAQAotICAgIHRoaXMgd2l0aCB0aGUgc2hlbGwnJ3MgYGBmb3InJyBjb25zdHJ1Y3QuCi0gICAgTm90ZSB0aGF0IHNvbWUgcGVvcGxlIGRvIG5vdCBoYXZlICcuJyAgaW4gdGhlaXIgcGF0aHMsIHNvIHdlIG11c3QKLSAgICB1c2UgLi9wcmVmaXgtYXJncy4gICovCi0tI2RlZmluZSBZTUZfUEFTU19MREZMQUdTKGZsYWdzKSBgLi9wcmVmaXgtYXJncyAtWGxpbmtlciBmbGFnc2AKLSsjZGVmaW5lIFlNRl9QQVNTX0xERkxBR1MoZmxhZ3MpIGAke1FFTVV9IC4vcHJlZml4LWFyZ3MgLVhsaW5rZXIgZmxhZ3NgCi0gI2Vsc2UKLSAjZGVmaW5lIFlNRl9QQVNTX0xERkxBR1MoZmxhZ3MpIGZsYWdzCi0gI2VuZGlmCi1AQCAtOTE5LDkgKzkxOSw5IEBACi0gICAgJChHTlVMSUJfVkFSKSBMSUJfTUFUSCBMSUJfU1RBTkRBUkQgJChHTlVMSUJfVkFSKQotIAotICNpZmRlZiBIQVZFX1NITQotLVJVTl9URU1BQ1MgPSBgL2Jpbi9wd2RgL3RlbWFjcyAtbmwKLStSVU5fVEVNQUNTID0gJHtRRU1VfSB0ZW1hY3MgLW5sCi0gI2Vsc2UKLS1SVU5fVEVNQUNTID0gYC9iaW4vcHdkYC90ZW1hY3MKLStSVU5fVEVNQUNTID0gJHtRRU1VfSB0ZW1hY3MKLSAjZW5kaWYKLSAKLSBhbGw6IGVtYWNzJHtFWEVFWFR9ICQoT1RIRVJfRklMRVMpCi1AQCAtOTM2LDcgKzkzNiw3IEBACi0gCUA6IFRoaXMgbmV3IEVtYWNzIGlzIGFzIGZ1bmN0aW9uYWwgYW5kIG1vcmUgZWZmaWNpZW50IHRoZW4KLSAJQDogYm9vdHN0cmFwLWVtYWNzLCBzbyBsZXQgdXMgcmVwbGFjZSBpdC4KLSAJLWxuIC1mIGVtYWNzJHtFWEVFWFR9IGJvb3RzdHJhcC1lbWFjcyR7RVhFRVhUfQotLQktLi9lbWFjcyAtcSAtYmF0Y2ggLWYgbGlzdC1sb2FkLXBhdGgtc2hhZG93cwotKwktJHtRRU1VfSAuL2VtYWNzIC1xIC1iYXRjaCAtZiBsaXN0LWxvYWQtcGF0aC1zaGFkb3dzCi0gI2VuZGlmIC8qICEgZGVmaW5lZCAoQ0FOTk9UX0RVTVApICovCi0gCi0gLyogV2UgcnVuIG1ha2UtZG9jZmlsZSB0d2ljZSBiZWNhdXNlIHRoZSBjb21tYW5kIGxpbmUgbWF5IGdldCB0b28gbG9uZwotQEAgLTk1NCw4ICs5NTQsOCBAQAotICAgIG9ubHkgaW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBjb21tYW5kIGxpbmUgbGVuZ3RoLiAgLS1TdGVmICAqLwotICR7ZXRjfURPQzogJHtsaWJzcmN9bWFrZS1kb2NmaWxlJHtFWEVFWFR9ICR7b2JqfSAke2xpc3B9ICR7U09NRV9NQUNISU5FX0xJU1B9Ci0gCS1ybSAtZiAke2V0Y31ET0MKLS0JJHtsaWJzcmN9bWFrZS1kb2NmaWxlIC1kICR7c3JjZGlyfSAke1NPTUVfTUFDSElORV9PQkpFQ1RTfSAke29ian0gPiAke2V0Y31ET0MKLS0JJHtsaWJzcmN9bWFrZS1kb2NmaWxlIC1hICR7ZXRjfURPQyAtZCAke3NyY2Rpcn0gJHtTT01FX01BQ0hJTkVfTElTUH0gJHtzaG9ydGxpc3B9Ci0rCSR7UUVNVX0ke2xpYnNyY31tYWtlLWRvY2ZpbGUgLWQgJHtzcmNkaXJ9ICR7U09NRV9NQUNISU5FX09CSkVDVFN9ICR7b2JqfSA+ICR7ZXRjfURPQwotKwkke1FFTVV9ICR7bGlic3JjfW1ha2UtZG9jZmlsZSAtYSAke2V0Y31ET0MgLWQgJHtzcmNkaXJ9ICR7U09NRV9NQUNISU5FX0xJU1B9ICR7c2hvcnRsaXNwfQotIAotICR7bGlic3JjfW1ha2UtZG9jZmlsZSR7RVhFRVhUfToKLSAJY2QgJHtsaWJzcmN9OyAke01BS0V9ICR7TUZMQUdTfSBtYWtlLWRvY2ZpbGUke0VYRUVYVH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW1hY3MvZW1hY3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjcy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViOTA1ZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lbWFjcy9lbWFjcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRW1hY3MiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZW1hY3MvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotU0VDVElPTiA9ICJlZGl0b3IiCi0jIGFuZCBpdCBuZWVkcyB0byBydW4gc29tZSBnZW5lcmF0ZWQgYmluYXJpZXMuLgotREVQRU5EUyArPSAicWVtdS1uYXRpdmUiCi0KLURFUEVORFMgKz0iIGxpYmxvY2tmaWxlIgotCi1YMTFERVBFTkRTID0gIiBcCi0gICAgbGliaWNlIGxpYnNtIGF0ayBjYWlybyBkYnVzIGV4cGF0IGxpYmZmaSBmb250Y29uZmlnIGZyZWV0eXBlIGdjb25mIGdpZmxpYiBcCi0gICAganBlZyB4eiBwaXhtYW4gbGlicG5nIGxpYnJzdmcgdGlmZiBsaWJjcm9jbyBcCi0gICAgbGlieDExIGxpYnhhdSBsaWJ4Y29tcG9zaXRlIGxpYnhjdXJzb3IgbGlieGRhbWFnZSBsaWJ4ZG1jcCBsaWJ4ZXh0IGxpYnhmaXhlcyBcCi0gICAgbGlieGZ0IGxpYnhwbSBsaWJ4cmFuZHIgbGlieHJlbmRlciBcCi0gICAgZ2RrLXBpeGJ1ZiBnbGliLTIuMCBndGsrIHBhbmdvIGxpYnhjYiBoYXJmYnV6eiBpY3UgXAotIgotCi1FWFRSQV9PRUNPTkYgPSAgIi0td2l0aG91dC1zb3VuZCAtLXdpdGgtY3J0LWRpcj0ke1NUQUdJTkdfTElCRElSfSAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgtdG9vbGtpdD1ndGssLS13aXRob3V0LXggLS13aXRob3V0LWRidXMsJHtYMTFERVBFTkRTfSIKLQotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZWwiCi0KLUZJTEVTXyR7UE59LWVsID0gIiR7ZGF0YWRpcn0vZW1hY3MvKi8qLyouZWwuZ3ogXAotICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9lbWFjcy8qLyovKi8qLmVsLmd6IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9lbWFjcyAke2RhdGFkaXJ9L2ljb25zIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vZW1hY3MvKi8qLy5kZWJ1ZyAke2RhdGFkaXJ9L2VtYWNzLyovKi8uZGVidWciCi0KLVRSRUVESVIgPSAiJHtXT1JLRElSfS9xZW11LXRyZWVkaXIiCi0KLVFFTVVBUkNIPSAiJHtUQVJHRVRfQVJDSH0iCi1RRU1VQVJDSF94ODYgPSAiaTM4NiIKLQotIyBMYXJnZSBzdGFjayBpcyByZXF1aXJlZCBhdCBsZWFzdCBvbiB4ODZfNjQgaG9zdCwgb3RoZXJ3aXNlIHJhbmRvbSBzZWdmYXVsdHMgYXBwZWFyOgotUUVNVSA9ICJxZW11LSR7UUVNVUFSQ0h9ICR7UUVNVV9PUFRJT05TfSAtcyAxMDQ4NTc2IC1MICR7VFJFRURJUn0gIgotCi1leHBvcnQgTE9HTkFNRSA9ICIkKHdob2FtaSkiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgJzoxO3M6XChTVEFSVC4qIFx8TElCX1NUQU5EQVJELiogXHxMSUJFUy4qIFwpL3Vzci9saWI6XDEke1NUQUdJTkdfTElCRElSfTo7dDEnICR7U30vc3JjL3MvZ251LWxpbnV4LmggYGZpbmQgIiR7U30iIC1uYW1lIE1ha2VmaWxlYAotICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRMRF9MSUJSQVJZX1BBVEg6JHtUT09MQ0hBSU5fUEFUSH0vJHtUQVJHRVRfU1lTfS9saWIiCi0jIFVnbHkgaGFjaywgc2VlIGZpbGVzL3VzZS1xZW11LnBhdGNoIGZvciBtb3JlOgotICAgIGxuIC1zZiAuLi9zcmMvZW1hY3MgbGlzcC9lbWFjcwotICAgIGxuIC1zZiAuLi9zcmMvZW1hY3MgbGliLXNyYy9lbWFjcwotICAgIGxuIC1zZiAuLi9zcmMvZW1hY3MgbGVpbS9lbWFjcwotI2NvcHkgU1RBR0lOR19ESVJfVEFSR0VUIGFuZCBsaWJnY2Nfcy5zbyogdG8gV09SS0RJUi9xZW11LXRyZWVkaXIgI2NvcGllZCBjb2RlIGZyb20gZ2xpYmMtcGFja2FnZS5iYmNsYXNzCi0gICAgdHJlZWRpcj0ke1RSRUVESVJ9Ci0gICAgaWYgWyAtZSAkdHJlZWRpciBdO3RoZW4KLSAgICAgICAgcm0gLXJmICR0cmVlZGlyCi0gICAgZmkKLQotICAgIG1rZGlyIC1wICR0cmVlZGlyLyR7YmFzZV9saWJkaXJ9Ci0KLSAgICBpZiBbIC1mICR7VE9PTENIQUlOX1BBVEh9LyR7VEFSR0VUX1NZU30vJHtiYXNlX2xpYmRpcn0vbGliZ2NjX3Muc28gXTsgdGhlbgotICAgICAgICBjcCAtcFBSICR7VE9PTENIQUlOX1BBVEh9LyR7VEFSR0VUX1NZU30vJHtiYXNlX2xpYmRpcn0vbGliZ2NjX3Muc28gJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0KLSAgICBmaQotICAgIGlmIFsgLWYgJHtUT09MQ0hBSU5fUEFUSH0vJHtUQVJHRVRfU1lTfS8ke2Jhc2VfbGliZGlyfS9saWJnY2Nfcy5zby4qIF07IHRoZW4KLSAgICAgICAgY3AgLXBQUiAke1RPT0xDSEFJTl9QQVRIfS8ke1RBUkdFVF9TWVN9LyR7YmFzZV9saWJkaXJ9L2xpYmdjY19zLnNvLiogJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0KLSAgICBmaQotICAgICMgc3R1cGlkIGhhY2ssIGJ1dCB3aXRob3V0IGl0LCBpdCB0cmllcyB0byB1c2UgL3Vzci9saWIvbGliYy5zbyBmcm9tIGhvc3QgYW5kIGZhaWxzCi0gICAgIyB0ZW1hY3M6IGVycm9yIHdoaWxlIGxvYWRpbmcgc2hhcmVkIGxpYnJhcmllczogL3Vzci9saWIvbGliYy5zbzogRUxGIGZpbGUgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCBjdXJyZW50IG9uZQotICAgIGlmIFsgISAtZiAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfS9saWJjLnNvIF07IHRoZW4KLSAgICAgICAgbG4gLXMgbGliYy5zby42ICR0cmVlZGlyLyR7YmFzZV9saWJkaXJ9L2xpYmMuc28KLSAgICBmaQotCi0gICAgIyBjb3B5IG9ubHkgYXMgbXVjaCBzdHVmZiBhcyB3ZSBuZWVkCi0gICAgIyBiZWZvcmU6IDUuNUcgICAuLi8uLi9xZW11LXRyZWVkaXIvCi0gICAgIyBhZnRlcjogICAxN00gICAuLi8uLi9xZW11LXRyZWVkaXIvCi0gICAgY3AgLXBQUiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xkLSogXAotICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJjLiogXAotICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJjLSogXAotICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJtLSogXAotICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJtLiogXAotICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJ0aW5mby5zby4qIFwKLSAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vbGlicmVzb2x2KiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYmRsKiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYnJ0KiBcCi0gICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9L2xpYmdjY19zLnNvLiogXAotICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJwdGhyZWFkKiAkdHJlZWRpci8ke2Jhc2VfbGliZGlyfS8KLQotICAgIGlmIFsgISAteiAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsIGQpfSIgXTsgdGhlbgotICAgICAgICBlY2hvICJYMTEgYnVpbGQgZW5hYmxlZCIKLSAgICAgICAgIyBjb3B5IG9ubHkgYXMgbXVjaCBzdHVmZiBhcyB3ZSBuZWVkCi0gICAgICAgICMgYmVmb3JlOiA1LjVHICAgLi4vLi4vcWVtdS10cmVlZGlyLwotICAgICAgICAjIGFmdGVyOiAgIDg2TSAgIC4uLy4uL3FlbXUtdHJlZWRpci8KLSAgICAgICAgY3AgLXBQUiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS9saWJ1dWlkLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vbGliei5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJJQ0Uuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliU00uc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliYXRrLTEuMC5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJjYWlyby5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJkYnVzLTEuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliZGJ1cy1nbGliLTEuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliZXhwYXQuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliZmZpLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmZvbnRjb25maWcuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliZnJlZXR5cGUuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliZ2NvbmYtMi5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJnaWYuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGlianBlZy5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJsem1hLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYnBpeG1hbi0xLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYnBuZzEqLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYnJzdmctMi5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJzdGRjKysuc28uKiBcCi0gICAgICAgICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGlidGlmZi5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJ4bWwyLnNvLiogXAotICAgICAgICAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYmNyb2NvLTAuNi5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJoYXJmYnV6ei5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJpY3VsZS5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJpY3V1Yy5zby4qIFwKLSAgICAgICAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJpY3VkYXRhLnNvLiogJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0vCi0KLSAgICAgICAgIyBYMTEgWGF1IFhjb21wb3NpdGUgWGN1cnNvciBYZGFtYWdlIFhkbWNwIFhleHQgWGZpeGVzIFhmdCBYcG0gWHJhbmRyIFhyZW5kZXIKLSAgICAgICAgY3AgLXBQUiAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9L2xpYlgqLnNvLiogJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0vCi0KLSAgICAgICAgIyBnZGsteDExIGdka19waXhidWYgZ2lvIGdsaWIgZ21vZHVsZSBnb2JqZWN0IGd0aHJlYWQgZ3RrLXgxMQotICAgICAgICBjcCAtcFBSICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0vbGliZyotMi4wLnNvLiogJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0vCi0KLSAgICAgICAgIyBwYW5nbyBwYW5nb2NhaXJvIHBhbmdvZnQyCi0gICAgICAgIGNwIC1wUFIgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJwYW5nbyotMS4wLnNvLiogJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0vCi0KLSAgICAgICAgIyB4Y2ItcmVuZGVyIHhjYi1zaG0geGNiCi0gICAgICAgIGNwIC1wUFIgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfS9saWJ4Y2IqLnNvLiogJHRyZWVkaXIvJHtiYXNlX2xpYmRpcn0vCi0gICAgZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBmcmVha3MgcGFja2FnZS5iYmNsYXNzIGFuZCB3aG9sZSBiaXRiYWtlIGNhbGwgcmV0dXJucyBlcnJvciBjb2RlCi0gICAgIyBFUlJPUjogcnVuc3RyaXA6ICcnYXJtLW9lLWxpbnV4LWdudWVhYmktc3RyaXAnICAnL3Zhci9saWIvamVua2lucy9qb2JzL3Noci1jb3JlLWJyYW5jaGVzL3dvcmtzcGFjZS9zaHItY29yZS90bXAtZWdsaWJjL3dvcmsvYXJtdjR0LW9lLWxpbnV4LWdudWVhYmkvZW1hY3MtMjMuNC1yMC9wYWNrYWdlL3Vzci9zaGFyZS9lbWFjcy8yMy40L2V0Yy90dXRvcmlhbHMvVFVUT1JJQUwua28nJyBzdHJpcCBjb21tYW5kIGZhaWxlZAotICAgIG12ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1BWfS9ldGMvdHV0b3JpYWxzL1RVVE9SSUFMLmtvICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1BWfS9ldGMvdHV0b3JpYWxzL1RVVE9SSUFMLktPCi0gICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KLSAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KLSAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCi0gICAgZmkKLX0KLQotRVhUUkFfT0VNQUtFICs9ICdRRU1VPSIke1FFTVV9IicKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW1hY3MvZW1hY3NfMjMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW1hY3MvZW1hY3NfMjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM4OGZmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VtYWNzL2VtYWNzXzIzLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIGVtYWNzLmluYwotCi1QUiA9ICJyNCIKLQotUE5CTEFDS0xJU1RbZW1hY3NdID89ICJxZW11OiB1bmNhdWdodCB0YXJnZXQgc2lnbmFsIDExIChTZWdtZW50YXRpb24gZmF1bHQpIC0gY29yZSBkdW1wZWQgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lbWFjcy9lbWFjcy0ke1BWfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1xZW11LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vc3RkbGliLXVud2luZC5wYXRjaCBcCi0iCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIzNDQwNTE2NWZjZDk3OGZiYzhiMzA0Y2JkOTljY2Y0ZiIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImI5YTJiODQzNDA1Mjc3MWY3OTdkMjAzMjc3MmViYTg2MmZmOWFhMTQzMDI5ZWZjNzIyOTUxNzA2MDcyODljMTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWstZGF0YV8xLjM3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrLWRhdGFfMS4zNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE0YmYzNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWstZGF0YV8xLjM3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotcmVxdWlyZSBlc3BlYWsuaW5jCi0KLWluaGVyaXQgbmF0aXZlCi0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gPSAiJHtsYXlvdXRfZGF0YWRpcn0iCi0KLVBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi1UQVJHRVRfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgIyBGaXhpbmcgYnl0ZSBvcmRlciBvZiBwaG9uZW1lIGRhdGEgZmlsZXMKLSAgICBjZCAiJHtTfS9wbGF0Zm9ybXMvYmlnX2VuZGlhbiIKLSAgICBzZWQgLWkgJy9eICpDQyAqPS9kJyBNYWtlZmlsZQotICAgIHNlZCAtaSAncy9cKC4qQllURV9PUkRFUlwpLyN1bmRlZiBCWVRFX09SREVSXG4jZGVmaW5lIEJZVEVfT1JERVIgQklHX0VORElBTlxuXDEvJyBlc3BlYWstcGhvbmVtZS1kYXRhLmMKLSAgICBvZV9ydW5tYWtlCi0gICAgLi9lc3BlYWstcGhvbmVtZS1kYXRhICIke1N9L2VzcGVhay1kYXRhIgotICAgIGNwIC1mIHBob25kYXRhIHBob25pbmRleCBwaG9udGFiICIke1N9L2VzcGVhay1kYXRhIgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7bGF5b3V0X2RhdGFkaXJ9L2VzcGVhay1kYXRhCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXNwZWFrLWRhdGEvcGhvbiogJHtEfSR7bGF5b3V0X2RhdGFkaXJ9L2VzcGVhay1kYXRhCi19Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YzdiMjkyZDA1MzcyMzI4NjhiNGFjMTMxN2Q3NmMwMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3N2Y0MDZjMzQ1MzYyMTg1ZWM0ZjM2MmJmNDlmNjFkMjAyZTAxYWM5YjljZDVjMTRmODAzMTk1YTU0NGNlNmQzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrLWRhdGFfMS40OC4wNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay1kYXRhXzEuNDguMDQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzliMmNjMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay1kYXRhXzEuNDguMDQuYmIKQEAgLTAsMCArMSwyNCBAQAorcmVxdWlyZSBlc3BlYWsuaW5jCisKK2luaGVyaXQgbmF0aXZlCisKK1BBQ0tBR0VTID0gIiR7UE59IgorRklMRVNfJHtQTn0gPSAiJHtsYXlvdXRfZGF0YWRpcn0iCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCitUQVJHRVRfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK2RvX2NvbXBpbGUoKSB7CisgICAgIyBGaXhpbmcgYnl0ZSBvcmRlciBvZiBwaG9uZW1lIGRhdGEgZmlsZXMKKyAgICBjZCAiJHtTfS9wbGF0Zm9ybXMvYmlnX2VuZGlhbiIKKyAgICBzZWQgLWkgJy9eICpDQyAqPS9kJyBNYWtlZmlsZQorICAgIHNlZCAtaSAncy9cKC4qQllURV9PUkRFUlwpLyN1bmRlZiBCWVRFX09SREVSXG4jZGVmaW5lIEJZVEVfT1JERVIgQklHX0VORElBTlxuXDEvJyBlc3BlYWstcGhvbmVtZS1kYXRhLmMKKyAgICBvZV9ydW5tYWtlCisgICAgLi9lc3BlYWstcGhvbmVtZS1kYXRhICIke1N9L2VzcGVhay1kYXRhIgorICAgIGNwIC1mIHBob25kYXRhIHBob25pbmRleCBwaG9udGFiICIke1N9L2VzcGVhay1kYXRhIgorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7bGF5b3V0X2RhdGFkaXJ9L2VzcGVhay1kYXRhCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXNwZWFrLWRhdGEvcGhvbiogJHtEfSR7bGF5b3V0X2RhdGFkaXJ9L2VzcGVhay1kYXRhCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWsuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrLmluYwppbmRleCA1ZDBiNDAzLi42MGIzZjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWsuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay5pbmMKQEAgLTMsOCArMywxMSBAQAogTElDRU5TRSA9ICJHUEx2MyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2UudHh0O21kNT1jYjdhMjBlZGI0YzlmNWY0NzhkZTY1MjNkY2Q3MzYyYyIKIAotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZXNwZWFrL2VzcGVhay0ke1BWfS1zb3VyY2UuemlwIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1nY2M2LWVycm9ycy5wYXRjaCIKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvZXNwZWFrL2VzcGVhay0xLjQ4LjA0LXNvdXJjZS56aXAgXAorICAgICAgICAgICBmaWxlOi8vZ2NjLW5hcnJvd2luZy13YXJuaW5nLWZpeC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiY2FkZDc0ODJlYWFmZTkyMzk1NDZiZGMwOWZhMjQ0YzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmY5YTE3NjczYWRmZmNjMjhmZjdlYTE4NzY0ZjA2MTM2NTQ3ZTk3YmJkOWVkZjJlYzYxMmYwOWIyMDdmMDY1OSIKIAogUyA9ICIke1dPUktESVJ9L2VzcGVhay0ke1BWfS1zb3VyY2UiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVha18xLjM3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrXzEuMzcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3M2ZlMzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrXzEuMzcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1yZXF1aXJlIGVzcGVhay5pbmMKLWluaGVyaXQgc2l0ZWluZm8KLQotRVhUUkFfUEhPTkVNRVMgPSAnJHtAYmIudXRpbHMuY29udGFpbnMoIlNJVEVJTkZPX0VORElBTk5FU1MiLCAiYmUiLCAgImVzcGVhay1kYXRhICg9ICR7UFZ9KSIsICIiLCBkKX0nCi1SREVQRU5EU18ke1BOfSA9ICJwb3J0YXVkaW8tdjE5ICR7RVhUUkFfUEhPTkVNRVN9IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWM3YjI5MmQwNTM3MjMyODY4YjRhYzEzMTdkNzZjMDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzdmNDA2YzM0NTM2MjE4NWVjNGYzNjJiZjQ5ZjYxZDIwMmUwMWFjOWI5Y2Q1YzE0ZjgwMzE5NWE1NDRjZTZkMyIKLQotQ1hYRkxBR1MgKz0gIi1EVVNFX1BPUlRBVURJTyIKLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9lc3BlYWstZGF0YSIKLQotZG9fY29uZmlndXJlKCkgewotICAgICMgICJzcGVhayIgYmluYXJ5LCBhIFRUUyBlbmdpbmUsIHVzZXMgcG9ydGF1ZGlvIGluIGVpdGhlciBBUElzIFYxOCBvciBWMTksIHVzZSBWMTkKLSAgICBjcCAiJHtTfS9zcmMvcG9ydGF1ZGlvMTkuaCIgIiR7U30vc3JjL3BvcnRhdWRpby5oIgotfQotCi1kb19jb21waWxlKCkgewotICAgIGNkIHNyYwotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2VzcGVhawotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEKLQotICAgICMgd2UgZG8gbm90IHNoaXAgInNwZWFrIiBiaW5hcnkgdGhvdWdoLgotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3NyYy9lc3BlYWsgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9zcGVha19saWIuaCAke0R9JHtpbmNsdWRlZGlyfS9lc3BlYWsvCi0gICAgbG4gLXNmIGVzcGVhay9lc3BlYWsuaCAke0R9JHtpbmNsdWRlZGlyfS8KLSAgICBvZV9saWJpbnN0YWxsIC1zbyAtQyBzcmMgbGliZXNwZWFrICR7RH0ke2xpYmRpcn0KLQotICAgIGlmIFsgIiR7U0lURUlORk9fRU5ESUFOTkVTU30iID0gImJlIiBdIDsgdGhlbgotICAgICAgICAjIHRoZSBiaWctZW5kaWFuIHBob24qIGZpbGVzIGFyZSBwcm92aWRlZCBieSB0aGUgcGFja2FnZSBlc3BlYWstZGF0YQotICAgICAgICBybSAtZiAke1N9L2VzcGVhay1kYXRhL3Bob24qCi0gICAgZmkKLQotICAgIGNwIC1wcmYgJHtTfS9lc3BlYWstZGF0YS8qICR7RH0ke2RhdGFkaXJ9L2VzcGVhay1kYXRhCi0gICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke2RhdGFkaXJ9L2VzcGVhay1kYXRhCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWtfMS40OC4wNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVha18xLjQ4LjA0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MmY0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWtfMS40OC4wNC5iYgpAQCAtMCwwICsxLDQxIEBACityZXF1aXJlIGVzcGVhay5pbmMKK2luaGVyaXQgc2l0ZWluZm8KKworRVhUUkFfUEhPTkVNRVMgPSAnJHtAYmIudXRpbHMuY29udGFpbnMoIlNJVEVJTkZPX0VORElBTk5FU1MiLCAiYmUiLCAgImVzcGVhay1kYXRhICg9ICR7UFZ9KSIsICIiLCBkKX0nCitSREVQRU5EU18ke1BOfSA9ICJwb3J0YXVkaW8tdjE5ICR7RVhUUkFfUEhPTkVNRVN9IgorCitDWFhGTEFHUyArPSAiLURVU0VfUE9SVEFVRElPIgorVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2VzcGVhay1kYXRhIgorCitkb19jb25maWd1cmUoKSB7CisgICAgIyAgInNwZWFrIiBiaW5hcnksIGEgVFRTIGVuZ2luZSwgdXNlcyBwb3J0YXVkaW8gaW4gZWl0aGVyIEFQSXMgVjE4IG9yIFYxOSwgdXNlIFYxOQorICAgIGNwICIke1N9L3NyYy9wb3J0YXVkaW8xOS5oIiAiJHtTfS9zcmMvcG9ydGF1ZGlvLmgiCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgY2Qgc3JjCisgICAgb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vZXNwZWFrCisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9lc3BlYWstZGF0YQorCisgICAgIyB3ZSBkbyBub3Qgc2hpcCAic3BlYWsiIGJpbmFyeSB0aG91Z2guCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vc3JjL2VzcGVhayAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL3NwZWFrX2xpYi5oICR7RH0ke2luY2x1ZGVkaXJ9L2VzcGVhay8KKyAgICBsbiAtc2YgZXNwZWFrL2VzcGVhay5oICR7RH0ke2luY2x1ZGVkaXJ9LworICAgIG9lX2xpYmluc3RhbGwgLXNvIC1DIHNyYyBsaWJlc3BlYWsgJHtEfSR7bGliZGlyfQorCisgICAgaWYgWyAiJHtTSVRFSU5GT19FTkRJQU5ORVNTfSIgPSAiYmUiIF0gOyB0aGVuCisgICAgICAgICMgdGhlIGJpZy1lbmRpYW4gcGhvbiogZmlsZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBwYWNrYWdlIGVzcGVhay1kYXRhCisgICAgICAgIHJtIC1mICR7U30vZXNwZWFrLWRhdGEvcGhvbioKKyAgICBmaQorCisgICAgY3AgLXByZiAke1N9L2VzcGVhay1kYXRhLyogJHtEfSR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEKKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2ZpbGVzL2ZpeC1nY2M2LWVycm9ycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2ZpbGVzL2ZpeC1nY2M2LWVycm9ycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNmMjNjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9maWxlcy9maXgtZ2NjNi1lcnJvcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1GaXggZ2NjNiBlcnJvcnMgd2l0aCBuYXJyb3dpbmcKLQotfCB0cl9sYW5ndWFnZXMuY3BwOjQ2Mjo3MzogZXJyb3I6IG5hcnJvd2luZyBjb252ZXJzaW9uIG9mICcxNzEnIGZyb20gJ2ludCcgdG8gJ2NoYXInIGluc2lkZSB7IH0gWy1XbmFycm93aW5nXQotfCAgICAgc3RhdGljIGNvbnN0IGNoYXIga29fdm9pY2VkW10gPSB7MHgwMiwweDA1LDB4MDYsMHhhYiwweGFmLDB4YjcsMHhiYywwfTsgIC8vIHZvaWNlZCBjb25zb25hbnRzLCBsLG0sbixOCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4KLS0tLSBhL3NyYy90cl9sYW5ndWFnZXMuY3BwCi0rKysgYi9zcmMvdHJfbGFuZ3VhZ2VzLmNwcAotQEAgLTQ1OSw3ICs0NTksNyBAQAotIAljYXNlIEwoJ2snLCdvJyk6ICAgLy8gS29yZWFuLCBURVNUCi0gCQl7Ci0gCQkJc3RhdGljIGNvbnN0IGNoYXIga29faXZvd2Vsc1tdID0gezB4NjMsMHg2NCwweDY3LDB4NjgsMHg2ZCwweDcyLDB4NzQsMHg3NSwwfTsgIC8vIHkgYW5kIGkgdm93ZWxzCi0tCQkJc3RhdGljIGNvbnN0IGNoYXIga29fdm9pY2VkW10gPSB7MHgwMiwweDA1LDB4MDYsMHhhYiwweGFmLDB4YjcsMHhiYywwfTsgIC8vIHZvaWNlZCBjb25zb25hbnRzLCBsLG0sbixOCi0rCQkJc3RhdGljIGNvbnN0IGNoYXIga29fdm9pY2VkW10gPSB7MHgwMiwweDA1LDB4MDYsKGNoYXIpMHhhYiwoY2hhcikweGFmLChjaGFyKTB4YjcsKGNoYXIpMHhiYywwfTsgIC8vIHZvaWNlZCBjb25zb25hbnRzLCBsLG0sbixOCi0gCQkJdHIgPSBuZXcgVHJhbnNsYXRvcigpOwotIAotIAkJCXRyLT5sZXR0ZXJfYml0c19vZmZzZXQgPSBPRkZTRVRfS09SRUFOOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZmlsZXMvZ2NjLW5hcnJvd2luZy13YXJuaW5nLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2ZpbGVzL2djYy1uYXJyb3dpbmctd2FybmluZy1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE5YjQ2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2ZpbGVzL2djYy1uYXJyb3dpbmctd2FybmluZy1maXgucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSBmMDljODM2NDBiOTE3MzU1MmZkOTI3N2MzYTQ4NjE5YjkwM2ZhNDM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlJlZWNlIEguIER1bm4iIDxtc2NscmhkQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjAgSmFuIDIwMTYgMjA6NDg6MjkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IEdDQyAtV25hcnJvd2luZyB3YXJuaW5ncy4KKworLS0tCisgc3JjL3RyX2xhbmd1YWdlcy5jcHAgfCA3ICsrKystLS0KKyBzcmMvdHJhbnNsYXRlLmggICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBlc3BlYWstMS40OC4wNC1zb3VyY2Uvc3JjL3RyX2xhbmd1YWdlcy5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBlc3BlYWstMS40OC4wNC1zb3VyY2Uub3JpZy9zcmMvdHJfbGFuZ3VhZ2VzLmNwcAorKysrIGVzcGVhay0xLjQ4LjA0LXNvdXJjZS9zcmMvdHJfbGFuZ3VhZ2VzLmNwcAorQEAgLTE5OCw4ICsxOTgsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgY2hhcnNfaWdub3JlCisgCTB4MjAwZCwgIDEsIC8vIHplcm8gd2lkdGggam9pbmVyCisgCTAsIDAgfTsKKyAKKy1jb25zdCBjaGFyIHN0cmluZ19vcmRpbmFsW10gPSB7MHhjMiwweGJhLDB9OyAgLy8gbWFzY3VsaW5lIG9yZGluYWwgY2hhcmFjdGVyLCBVVEYtOAorLQorK2NvbnN0IHVuc2lnbmVkIGNoYXIgc3RyaW5nX29yZGluYWxbXSA9IHsweGMyLDB4YmEsMH07ICAvLyBtYXNjdWxpbmUgb3JkaW5hbCBjaGFyYWN0ZXIsIFVURi04CisrY29uc3QgdW5zaWduZWQgY2hhciB1dGY4X251bGxbXSA9IHsgMCB9OyAvLyBudWxsIHN0cmluZywgVVRGLTgKKyAKKyBzdGF0aWMgVHJhbnNsYXRvciogTmV3VHJhbnNsYXRvcih2b2lkKQorIHsvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitAQCAtMjk2LDcgKzI5Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHRyYW5zcG9zZV9tYXBfbGF0aW5bXQorIAl0ci0+bGFuZ29wdHMucmVwbGFjZV9jaGFycyA9IE5VTEw7CisgCXRyLT5sYW5nb3B0cy5hc2NpaV9sYW5ndWFnZVswXSA9IDA7ICAgIC8vIE5vbi1MYXRpbiBhbHBoYWJldCBsYW5ndWFnZXMsIHVzZSB0aGlzIGxhbmd1YWdlIHRvIHNwZWFrIExhdGluIHdvcmRzLCBkZWZhdWx0IGlzIEVuZ2xpc2gKKyAJdHItPmxhbmdvcHRzLmFsdF9hbHBoYWJldF9sYW5nID0gTCgnZScsJ24nKTsKKy0JdHItPmxhbmdvcHRzLnJvbWFuX3N1ZmZpeCA9ICIiOworKwl0ci0+bGFuZ29wdHMucm9tYW5fc3VmZml4ID0gdXRmOF9udWxsOworIAorIAlTZXRMZW5ndGhNb2RzKHRyLDIwMSk7CisgLy8JdHItPmxhbmdvcHRzLmxlbmd0aF9tb2RzID0gbGVuZ3RoX21vZHNfZW47CitAQCAtNzU4LDcgKzc1OCw3IEBAIFRyYW5zbGF0b3IgKlNlbGVjdFRyYW5zbGF0b3IoY29uc3QgY2hhcgorIAkJCQl0ci0+bGFuZ29wdHMuc3RyZXNzX2ZsYWdzID0gU19GSU5BTF9TUEFOSVNIIHwgU19GSU5BTF9ESU1fT05MWSB8IFNfRklOQUxfTk9fMjsKKyAJCQkJdHItPmxhbmdvcHRzLm51bWJlcnMgPSBOVU1fU0lOR0xFX1NUUkVTUyB8IE5VTV9ERUNJTUFMX0NPTU1BIHwgTlVNX0FORF9VTklUUyB8IE5VTV9PTUlUXzFfSFVORFJFRCB8IE5VTV9PTUlUXzFfVEhPVVNBTkQgfCBOVU1fUk9NQU4gfCBOVU1fUk9NQU5fT1JESU5BTDsKKyAJCQkJdHItPmxhbmdvcHRzLm51bWJlcnMyID0gTlVNMl9PUkRJTkFMX05PX0FORDsKKy0JCQkJdHItPmxhbmdvcHRzLnJvbWFuX3N1ZmZpeCA9IHN0cmluZ19vcmRpbmFsOworKwkJCQl0ci0+bGFuZ29wdHMucm9tYW5fc3VmZml4ID0gdXRmOF9udWxsOworIAkJCX0KKyAJCQllbHNlCisgCQkJaWYobmFtZTIgPT0gTF9wYXApCitJbmRleDogZXNwZWFrLTEuNDguMDQtc291cmNlL3NyYy90cmFuc2xhdGUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGVzcGVhay0xLjQ4LjA0LXNvdXJjZS5vcmlnL3NyYy90cmFuc2xhdGUuaAorKysrIGVzcGVhay0xLjQ4LjA0LXNvdXJjZS9zcmMvdHJhbnNsYXRlLmgKK0BAIC01NDUsNyArNTQ1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeworIAlpbnQgZGVjaW1hbF9zZXA7CisgCWludCBtYXhfZGlnaXRzOyAgICAvLyBtYXggbnVtYmVyIG9mIGRpZ2l0cyB3aGljaCBjYW4gYmUgc3Bva2VuIGFzIGFuIGludGVnZXIgbnVtYmVyIChyYXRoZXIgdGhhbiBpbmRpdmlkdWFsIGRpZ2l0cykKKyAJY29uc3QgY2hhciAqb3JkaW5hbF9pbmRpY2F0b3I7ICAgLy8gVVRGLTggc3RyaW5nCistCWNvbnN0IGNoYXIgKnJvbWFuX3N1ZmZpeDsgICAgLy8gYWRkIHRoaXMgKG9yZGluYWwpIHN1ZmZpeCB0byBSb21hbiBudW1iZXJzIChMQU5HPWFuKQorKwljb25zdCB1bnNpZ25lZCBjaGFyICpyb21hbl9zdWZmaXg7ICAgIC8vIGFkZCB0aGlzIChvcmRpbmFsKSBzdWZmaXggdG8gUm9tYW4gbnVtYmVycyAoTEFORz1hbikKKyAKKyAJLy8gYml0IDAsIGFjY2VudCBuYW1lIGJlZm9yZSB0aGUgbGV0dGVyIG5hbWUsIGJpdCAxICJjYXBpdGFsIiBhZnRlciBsZXR0ZXIgbmFtZQorIAlpbnQgYWNjZW50czsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXZlbnRsb2cvZXZlbnRsb2dfMC4yLjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldmVudGxvZy9ldmVudGxvZ18wLjIuMTMuYmIKaW5kZXggMzQ5NTA3ZC4uNTliMDFiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldmVudGxvZy9ldmVudGxvZ18wLjIuMTMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldmVudGxvZy9ldmVudGxvZ18wLjIuMTMuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlJlcGxhY2VtZW50IHN5c2xvZyBBUEkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmJhbGFiaXQuY29tL25ldHdvcmstc2VjdXJpdHkvc3lzbG9nLW5nL29wZW5zb3VyY2UtbG9nZ2luZy1zeXN0ZW0iCiBERVNDUklQVElPTiA9ICJUaGUgRXZlbnRMb2cgbGlicmFyeSBhaW1zIHRvIGJlIGEgcmVwbGFjZW1lbnQgb2YgdGhlIFwKICAgICAgICAgICAgICAgc2ltcGxlIHN5c2xvZygpIEFQSSBwcm92aWRlZCBvbiBVTklYIHN5c3RlbXMuIFRoZSBcCiAgICAgICAgICAgICAgIG1ham9yIGRpZmZlcmVuY2UgYmV0d2VlbiBFdmVudExvZyBhbmQgc3lzbG9nIGlzIHRoYXQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYXJzaWdodC9mYXJzaWdodDJfMC4wLjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYXJzaWdodC9mYXJzaWdodDJfMC4wLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGNlNTdhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmFyc2lnaHQvZmFyc2lnaHQyXzAuMC4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkZhclNpZ2h0IGlzIGFuIGF1ZGlvL3ZpZGVvIGNvbmZlcmVuY2luZyBmcmFtZXdvcmsgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBJbnN0YW50IE1lc3NlbmdlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2ZhcnNpZ2h0LnNmLm5ldCIKLVNSQ19VUkkgPSAiaHR0cDovL2ZhcnNpZ2h0LmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9mYXJzaWdodDIvJHtCUH0udGFyLmd6IgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQiCi0KLVBSID0gInIzIgotCi1ERVBFTkRTID0gImxpYm5pY2UgZ2xpYi0yLjAgbGlieG1sMiB6bGliIGRidXMgZ3N0cmVhbWVyIGdzdC1wbHVnaW5zLWJhc2UiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tndXBucF0gPSAiLS1lbmFibGUtZ3VwbnAsLS1kaXNhYmxlLWd1cG5wLGd1cG5wLWlnZCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLWRlYnVnIFwKLSAgICAtLWRpc2FibGUtZ3RrLWRvYyBcCi0gICAgLS1kaXNhYmxlLXB5dGhvbiBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKi8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vKi8qLmEiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8qLy5kZWJ1ZyIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTFmNTQwY2YzZWJhYjA2YzNkN2RiMWY0NmI0NGFjODgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2FlNTlhYTYxYTgwNzFjOWZhZDExMWU1ZmQ2MDZhYWJjMjc5NjFlYjQxOTJmODcyOTk4N2EyN2RhZTZiMzk3NCIKLQotUE5CTEFDS0xJU1RbZmFyc2lnaHQyXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBnc3RyZWFtZXIgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi1QTkJMQUNLTElTVFtmYXJzaWdodDJdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGxpYm5pY2UgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi1QTkJMQUNLTElTVFtmYXJzaWdodDJdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIGdzdC1wbHVnaW5zLWJhc2UgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Zic2V0L2Zic2V0LW1vZGVzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYnNldC9mYnNldC1tb2Rlcy5iYgppbmRleCA4OGY3YTRmLi41ZjZmOTkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Zic2V0L2Zic2V0LW1vZGVzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJzZXQvZmJzZXQtbW9kZXMuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkRlZmF1bHQgZGlzcGxheSB0aW1pbmdzIGFuZCByZXNvbHV0aW9ucyBmb3IgZmJzZXQiCitIT01FUEFHRSA9ICJodHRwOi8vdXNlcnMudGVsZW5ldC5iZS9nZWVydHUvTGludXgvZmJkZXYvIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYnNldC9mYnNldF8yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Zic2V0L2Zic2V0XzIuMS5iYgppbmRleCBjYmJlNmNhLi5mYmY4MzRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Zic2V0L2Zic2V0XzIuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Zic2V0L2Zic2V0XzIuMS5iYgpAQCAtNiw2ICs2LDcgQEAKICMgRGF0ZTogMjgtTWF5LTA2CiAKIFNVTU1BUlkgPSAiVGhlIGZic2V0IGNvbnNvbGUgdG9vbCIKK0hPTUVQQUdFID0gImh0dHA6Ly91c2Vycy50ZWxlbmV0LmJlL2dlZXJ0dS9MaW51eC9mYmRldi8iCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZmJzZXQuYztlbmRsaW5lPTE5O21kNT1iZjMyNmY4MmNkZmNhYzM5MWFmMjA4ZjAxOWM1NjAzZiIKIFJSRUNPTU1FTkRTXyR7UE59ID0gImZic2V0LW1vZGVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2JlbmNoZmZ0XzMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmZ0dy9iZW5jaGZmdF8zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5Y2MyNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2JlbmNoZmZ0XzMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiRkZUVyBiZW5jaG1hcmtzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MiIKLQotIyBzaW5nbGUgcHJlY2lzaW9uIGZmdHcgaXMgY2FsbGVkIGZmdHdmCi1ERVBFTkRTID0gInZpcnR1YWwvZmZ0dyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZmdHcub3JnL2JlbmNoZmZ0L2JlbmNoZmZ0LSR7UFZ9LnRhci5neiIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1mb3J0cmFuIC0tZW5hYmxlLXNpbmdsZSAtLWVuYWJsZS1zaGFyZWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOmFsbC1yZWN1cnNpdmU6JChSRUNVUlNJVkVfVEFSR0VUUyk6ZycgJHtTfS9NYWtlZmlsZQotfQotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTM1NmU1ZTlkY2IzZjE0ODE5NzcwMDk3MjBhMmNjZjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI0YTViNWU0OGFkNWU2MWEyMTU4NmI3YjU5ZDVjMGE4ODY5MWE5ODFlNzNlMmM2ZGM1ODY4MTk3NDYxNzkxYiIKLQotUE5CTEFDS0xJU1RbYmVuY2hmZnRdID89ICJkb2VzIG5vdCBidWlsZCB3aXRoIGRpc3Ryb2xlc3MgcWVtdWFybSBhcyByZXBvcnRlZCBpbiAnU3RhdGUgb2YgYml0YmFrZSB3b3JsZCcgdGhyZWFkLCBub2JvZHkgdm9sdW50ZWVyZWQgdG8gZml4IHRoZW0gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLWFsc2EtMS4zL2ZsaXRlLWFsc2EtMS4zLWNvbmZpZ3VyZS13aXRoLWF1ZGlvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbGl0ZS9mbGl0ZS1hbHNhLTEuMy9mbGl0ZS1hbHNhLTEuMy1jb25maWd1cmUtd2l0aC1hdWRpby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFlN2FlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLWFsc2EtMS4zL2ZsaXRlLWFsc2EtMS4zLWNvbmZpZ3VyZS13aXRoLWF1ZGlvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZ3VyZS5pbi5vbGQJMjAwOC0wMS0wNiAwMjoxNzo0Ny4wMDAwMDAwMDAgLTA2MDAKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9jb25maWd1cmUuaW4JMjAwOC0wMS0wNiAwMjoxOTo1Ni4wMDAwMDAwMDAgLTA2MDAKLUBAIC0yMjAsNyArMjIwLDggQEAgZG5sIGFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSBvbmUgZAotIGRubAotIEFDX0FSR19XSVRIKCBhdWRpbywKLSAJWyAgLS13aXRoLWF1ZGlvICAgICAgICAgIHdpdGggc3BlY2lmaWMgYXVkaW8gc3VwcG9ydCAobm9uZSBsaW51eCBmcmVlYnNkIGV0YykgXSwKLS0gICAgICAgIEFVRElPRFJJVkVSPSR3aXRoX2F1ZGlvICkKLSsgICAgICAgIFtBVURJT0RSSVZFUj0kd2l0aF9hdWRpbwotKyAgICAgICAgIEFVRElPREVGUz1dKQotIAotIGlmIHRlc3QgIngkQVVESU9ERUZTIiA9IHg7IHRoZW4KLSAgICAgY2FzZSAiJEFVRElPRFJJVkVSIiBpbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbGl0ZS9mbGl0ZS1hbHNhXzEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUtYWxzYV8xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ODNjMWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbGl0ZS9mbGl0ZS1hbHNhXzEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgZmxpdGUuaW5jCi0KLVBSID0gInIxIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWF1ZGlvPWFsc2EgLS1lbmFibGUtc2hhcmVkIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuc3BlZWNoLmNzLmNtdS5lZHUvZmxpdGUvcGFja2VkL2ZsaXRlLSR7UFZ9L2ZsaXRlLSR7UFZ9LXJlbGVhc2UudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZsaXRlLTEuMy1hbHNhX3N1cHBvcnQtMS4yLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZmxpdGUtYWxzYS0xLjMtY29uZmlndXJlLXdpdGgtYXVkaW8ucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZTBhY2ExY2I3YjQ4MDFmNDM3MmYzYTc1YTllNTJiNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MjIyMjVmNzAwMWU1N2EwZmJhY2U4ODMzYjBhNDg3OTBhNjhmNmM3YjQ5MWYyZDQ3Yzc4YWQ1MzdhYjc4YThiIgotCi0jIExvb2tzIGxpa2UgY2F1c2VkIGJ5IGZsaXRlLTEuMy1hbHNhX3N1cHBvcnQtMS4yLmRpZmYKLSMgZmxpdGUtYWxzYS0xLjM6IE5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5OiAnL3RtcC93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9mbGl0ZS1hbHNhLzEuMy1yMS9wYWNrYWdlcy1zcGxpdC9saWJmbGl0ZS1hbHNhLXZveDE2L3Vzci9saWIvbGliZmxpdGVfY211X3VzX2thbDE2LnNvLjEuMycgW2xkZmxhZ3NdCi0jIGZsaXRlLWFsc2EtMS4zOiBObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeTogJy90bXAvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvZmxpdGUtYWxzYS8xLjMtcjEvcGFja2FnZXMtc3BsaXQvbGliZmxpdGUtYWxzYS12b3g4L3Vzci9saWIvbGliZmxpdGVfY211X3VzX2thbC5zby4xLjMnIFtsZGZsYWdzXQotIyBmbGl0ZS1hbHNhLTEuMzogTm8gR05VX0hBU0ggaW4gdGhlIGVsZiBiaW5hcnk6ICcvdG1wL3dvcmsvY29yZTItNjQtb2UtbGludXgvZmxpdGUtYWxzYS8xLjMtcjEvcGFja2FnZXMtc3BsaXQvbGliZmxpdGUtYWxzYS12b3gxNi91c3IvbGliL2xpYmZsaXRlX2NtdV91c19rYWwxNi5zby4xLjMnIFtsZGZsYWdzXQotIyBmbGl0ZS1hbHNhLTEuMzogTm8gR05VX0hBU0ggaW4gdGhlIGVsZiBiaW5hcnk6ICcvdG1wL3dvcmsvY29yZTItNjQtb2UtbGludXgvZmxpdGUtYWxzYS8xLjMtcjEvcGFja2FnZXMtc3BsaXQvbGliZmxpdGUtYWxzYS12b3g4L3Vzci9saWIvbGliZmxpdGVfY211X3VzX2thbC5zby4xLjMnIFtsZGZsYWdzXQotIyBmbGl0ZS1hbHNhLTEuMzogTm8gR05VX0hBU0ggaW4gdGhlIGVsZiBiaW5hcnk6ICcvdG1wL3dvcmsvaTU4Ni1vZS1saW51eC9mbGl0ZS1hbHNhLzEuMy1yMS9wYWNrYWdlcy1zcGxpdC9saWJmbGl0ZS1hbHNhLXZveDE2L3Vzci9saWIvbGliZmxpdGVfY211X3VzX2thbDE2LnNvLjEuMycgW2xkZmxhZ3NdCi0jIGZsaXRlLWFsc2EtMS4zOiBObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeTogJy90bXAvd29yay9pNTg2LW9lLWxpbnV4L2ZsaXRlLWFsc2EvMS4zLXIxL3BhY2thZ2VzLXNwbGl0L2xpYmZsaXRlLWFsc2Etdm94OC91c3IvbGliL2xpYmZsaXRlX2NtdV91c19rYWwuc28uMS4zJyBbbGRmbGFnc10KLVBOQkxBQ0tMSVNUW2ZsaXRlLWFsc2FdID89ICJPTEQ6IHdhc24ndCB1cGRhdGVkIGluIG92ZXIgNiB5ZWFycywgb25seSBuYXZpdCB3YXMgUlNVR0dFU1RpbmcgaXQgYW5kIGRvZXNuJ3QgcmVzcGVjdCBMREZMQUdTIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbGl0ZS9mbGl0ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVmODJjMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLURFU0NSSVBUSU9OID0gImZsaXRlIC0gdGhlIGZlc3RpdmFsIGxpZ2h0IHNwZWVjaCBzeW50aGVzaXplciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZWNoLmNzLmNtdS5lZHUvZmxpdGUvIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJmbGl0ZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY4YTE2YjFlZTQ5Yzk2YzM2ZjIzMmNjZGNkMjg3NjUwIgotREVQRU5EUyA9ICJhbHNhLW9zcyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLVMgPSAiJHtXT1JLRElSfS9mbGl0ZS0ke1BWfS1yZWxlYXNlIgotCi1DRkxBR1MgKz0gIiAtbGFzb3VuZCAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1QQUNLQUdFUyArPSAibGliJHtQTn0gbGliJHtQTn0tdm94OCBsaWIke1BOfS12b3gxNiIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9IgotCi1GSUxFU19saWIke1BOfSA9IiR7bGliZGlyfS9saWJmbGl0ZS5zby4qIFwKLSAgICAke2xpYmRpcn0vbGliZmxpdGVfY211X3RpbWVfYXdiLnNvLiogXAotICAgICR7bGliZGlyfS9saWJmbGl0ZV9jbXVsZXguc28uKiBcCi0gICAgJHtsaWJkaXJ9L2xpYmZsaXRlX3VzZW5nbGlzaC5zby4qIgotCi1GSUxFU19saWIke1BOfS12b3g4ID0gIiR7bGliZGlyfS9saWJmbGl0ZV9jbXVfdXNfa2FsLnNvLioiCi0KLUZJTEVTX2xpYiR7UE59LXZveDE2ID0gIiR7bGliZGlyfS9saWJmbGl0ZV9jbXVfdXNfa2FsMTYuc28uKiIKLQotTEVBRF9TT05BTUUgPSAibGliZmxpdGUuc28iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBJTlNUQUxMQklORElSPSIke0R9JHtiaW5kaXJ9IiBJTlNUQUxMTElCRElSPSIke0R9JHtsaWJkaXJ9IiBJTlNUQUxMSU5DRElSPSIke0R9JHtpbmNsdWRlZGlyfSIgaW5zdGFsbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGstbmF0aXZlLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGstbmF0aXZlLmJiCmluZGV4IDM1Mzk4N2UuLjI2MzYyODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLW5hdGl2ZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay1uYXRpdmUuYmIKQEAgLTE0LDMgKzE0LDggQEAKICAgICAtRE9QVElPTl9VU0VfWEZJWEVTPU9GRiBcCiAgICAgLURPUFRJT05fVVNFX1hDVVJTT1I9T0ZGIFwKICIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBtYWtlIHN1cmUgbmF0aXZlIGZsdGstY29uZmlnIGlzIG5vdCB1c2VkIGFjY2lkZW50YWx5CisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS9mbHRrLWNvbmZpZworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5iYgppbmRleCA1NDJmZDY2Li42MTlkMTQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5iYgpAQCAtMSw2ICsxLDYgQEAKIHJlcXVpcmUgJHtCUE59LmluYwogCi1ERVBFTkRTID0gImFsc2EtbGliIHpsaWIganBlZyBsaWJwbmcgbGlieGV4dCBsaWJ4ZnQgICR7QlBOfS1uYXRpdmUiCitERVBFTkRTID0gImFsc2EtbGliIHpsaWIganBlZyBsaWJwbmcgbGlieGV4dCBsaWJ4ZnQiCiAKIGluaGVyaXQgYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1pY29uLWNhY2hlIG1pbWUKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9maWxlcy9maXgtZ2NjLXVudXNlZC1mdW5jdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2ZpbGVzL2ZpeC1nY2MtdW51c2VkLWZ1bmN0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJjYjVhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2ZpbGVzL2ZpeC1nY2MtdW51c2VkLWZ1bmN0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLWdkZnQuYzogcmVtb3ZlIGZ1bmN0aW9ucyB0aGF0IGNhdXNlIHdhcm5pbmdzIGFib3V0IGJlaW5nIHVudXNlZAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChGaXhlZCBpbiBtYXN0ZXIgYnJhbmNoKQotCi1TaWduZWQtb2ZmLWJ5OiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgotLS0tIGdpdC9zcmMvZ2RmdC5jLm9yaWcJMjAxNi0wOC0xMiAxMDoyMDo0MS40MTg0NDAwOTEgLTA0MDAKLSsrKyBnaXQvc3JjL2dkZnQuYwkyMDE2LTA4LTEyIDEwOjIyOjM0LjIyNjQ0Mjk4NyAtMDQwMAotQEAgLTEzOSwxNiArMTM5LDYgQEAKLSB9Ci0gI2Vsc2UKLSAKLS0jaWZuZGVmIEhBVkVfTElCRk9OVENPTkZJRwotLXN0YXRpYyBjaGFyICogZm9udF9wYXR0ZXJuKGNoYXIgKipmb250cGF0aCwgY2hhciAqZm9udHBhdHRlcm4pCi0tewotLQkodm9pZClmb250cGF0aDsKLS0JKHZvaWQpZm9udHBhdHRlcm47Ci0tCi0tCXJldHVybiAibGliZ2Qgd2FzIG5vdCBidWlsdCB3aXRoIEZvbnRDb25maWcgc3VwcG9ydFxuIjsKLS19Ci0tI2VuZGlmIC8qIEhBVkVfTElCRk9OVENPTkZJRyAqLwotLQotICNpbmNsdWRlICJnZGNhY2hlLmgiCi0gLyogMi4wLjE2IENocmlzdG9waGUgVGhvbWFzOiBzdGFydGluZyB3aXRoIEZyZWVUeXBlIDIuMS42LCB0aGlzIGlzCi0gICBtYW5kYXRvcnksIGFuZCBpdCBoYXMgYmVlbiBzdXBwb3J0ZWQgZm9yIGEgbG9uZyB3aGlsZS4gKi8KLUBAIC00NDYsMTYgKzQzNiwxNSBAQAotIAlyZXR1cm4gKHN0cmNtcCAoYS0+Zm9udGxpc3QsIGItPmZvbnRsaXN0KSA9PSAwICYmIGEtPmZsYWdzID09IGItPmZsYWdzKTsKLSB9Ci0gCi0rI2lmZGVmIEhBVkVfTElCRk9OVENPTkZJRwotIHN0YXRpYyBpbnQgdXNlRm9udENvbmZpZyhpbnQgZmxhZykKLSB7Ci0tI2lmZGVmIEhBVkVfTElCRk9OVENPTkZJRwotIAlpZiAoZm9udENvbmZpZ0ZsYWcpIHsKLSAJCXJldHVybiAoIShmbGFnICYgZ2RGVEVYX0ZPTlRQQVRITkFNRSkpOwotIAl9Ci0tI2VuZGlmCi0gCXJldHVybiBmbGFnICYgZ2RGVEVYX0ZPTlRDT05GSUc7Ci0gfQotLQotKyNlbmRpZgotIHN0YXRpYyB2b2lkICoKLSBmb250RmV0Y2ggKGNoYXIgKiplcnJvciwgdm9pZCAqa2V5KQotIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvLmdpdGlnbm9yZS10aGUtbmV3LXRlc3QtY2FzZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvLmdpdGlnbm9yZS10aGUtbmV3LXRlc3QtY2FzZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFiNDk3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkLy5naXRpZ25vcmUtdGhlLW5ldy10ZXN0LWNhc2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1Gcm9tIDg1MjAyNzQ3NTljYjhmOTVlNDgzYjAyYTQ0NWFmZjIyNWUxMzQ2N2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQ2hyaXN0b3BoIE0uIEJlY2tlciIgPGNtYmVja2VyNjlAZ214LmRlPgotRGF0ZTogVHVlLCAxNiBBdWcgMjAxNiAxNjowMDoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSAuZ2l0aWdub3JlIHRoZSBuZXcgdGVzdCBjYXNlCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0cy90Z2EvLmdpdGlnbm9yZSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhLy5naXRpZ25vcmUgYi90ZXN0cy90Z2EvLmdpdGlnbm9yZQotaW5kZXggZTg4ZTEyNC4uN2E2NTliMSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RnYS8uZ2l0aWdub3JlCi0rKysgYi90ZXN0cy90Z2EvLmdpdGlnbm9yZQotQEAgLTQsMyArNCw0IEBACi0gL2J1ZzAwMjQ4Ci0gL2J1ZzAwMjQ4YQotIC90Z2FfbnVsbAotKy90Z2FfcmVhZAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi0xMDE2Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtMTAxNjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjY2ZiZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi0xMDE2Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gYzkyMjQwYzE2NzBjMjBjMmY4NTQ3NjFkM2E4OWFiNjFkZDE1OGM5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJDaHJpc3RvcGggTS4gQmVja2VyIiA8Y21iZWNrZXI2OUBnbXguZGU+Ci1EYXRlOiBTYXQsIDYgQXVnIDIwMTYgMTA6MDg6NTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHBvdGVudGlhbCB1bnNpZ25lZCB1bmRlcmZsb3cKLQotTm8gbmVlZCB0byBkZWNyZWFzZSBgdWAsIHNvIHdlIGRvbid0IGRvIGl0LiBXaGlsZSB3ZSdyZSBhdCBpdCwgd2UgYWxzbyBmYWN0b3IKLW91dCB0aGUgb3ZlcmZsb3cgY2hlY2sgb2YgdGhlIGxvb3AsIHdoYXQgaW1wcm92ZXMgcGVyZm9ybWFuY2UgYW5kIHJlYWRhYmlsaXR5LgotCi1UaGlzIGlzc3VlIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IFN0ZWZhbiBFc3NlciB0byBzZWN1cml0eUBsaWJnZC5vcmcuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMTAxNjYKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvZ2RfaW50ZXJwb2xhdGlvbi5jIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dkX2ludGVycG9sYXRpb24uYyBiL3NyYy9nZF9pbnRlcnBvbGF0aW9uLmMKLWluZGV4IDdlNzk0M2QuLjk5NDQzNDkgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2RfaW50ZXJwb2xhdGlvbi5jCi0rKysgYi9zcmMvZ2RfaW50ZXJwb2xhdGlvbi5jCi1AQCAtODI5LDggKzgyOSwxMyBAQCBzdGF0aWMgaW5saW5lIExpbmVDb250cmliVHlwZSAqIF9nZENvbnRyaWJ1dGlvbnNBbGxvYyh1bnNpZ25lZCBpbnQgbGluZV9sZW5ndGgsCi0gewotIAl1bnNpZ25lZCBpbnQgdSA9IDA7Ci0gCUxpbmVDb250cmliVHlwZSAqcmVzOwotLQlpbnQgb3ZlcmZsb3dfZXJyb3IgPSAwOwotKwlzaXplX3Qgd2VpZ2h0c19zaXplOwotIAotKwlpZiAob3ZlcmZsb3cyKHdpbmRvd3Nfc2l6ZSwgc2l6ZW9mKGRvdWJsZSkpKSB7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfSBlbHNlIHsKLSsJCXdlaWdodHNfc2l6ZSA9IHdpbmRvd3Nfc2l6ZSAqIHNpemVvZihkb3VibGUpOwotKwl9Ci0gCXJlcyA9IChMaW5lQ29udHJpYlR5cGUgKikgZ2RNYWxsb2Moc2l6ZW9mKExpbmVDb250cmliVHlwZSkpOwotIAlpZiAoIXJlcykgewotIAkJcmV0dXJuIE5VTEw7Ci1AQCAtODQ3LDE1ICs4NTIsMTEgQEAgc3RhdGljIGlubGluZSBMaW5lQ29udHJpYlR5cGUgKiBfZ2RDb250cmlidXRpb25zQWxsb2ModW5zaWduZWQgaW50IGxpbmVfbGVuZ3RoLAotIAkJcmV0dXJuIE5VTEw7Ci0gCX0KLSAJZm9yICh1ID0gMCA7IHUgPCBsaW5lX2xlbmd0aCA7IHUrKykgewotLQkJaWYgKG92ZXJmbG93Mih3aW5kb3dzX3NpemUsIHNpemVvZihkb3VibGUpKSkgewotLQkJCW92ZXJmbG93X2Vycm9yID0gMTsKLS0JCX0gZWxzZSB7Ci0tCQkJcmVzLT5Db250cmliUm93W3VdLldlaWdodHMgPSAoZG91YmxlICopIGdkTWFsbG9jKHdpbmRvd3Nfc2l6ZSAqIHNpemVvZihkb3VibGUpKTsKLS0JCX0KLS0JCWlmIChvdmVyZmxvd19lcnJvciA9PSAxIHx8IHJlcy0+Q29udHJpYlJvd1t1XS5XZWlnaHRzID09IE5VTEwpIHsKLSsJCXJlcy0+Q29udHJpYlJvd1t1XS5XZWlnaHRzID0gKGRvdWJsZSAqKSBnZE1hbGxvYyh3ZWlnaHRzX3NpemUpOwotKwkJaWYgKHJlcy0+Q29udHJpYlJvd1t1XS5XZWlnaHRzID09IE5VTEwpIHsKLSAJCQl1bnNpZ25lZCBpbnQgaTsKLS0JCQl1LS07Ci0tCQkJZm9yIChpPTA7aTw9dTtpKyspIHsKLSsKLSsJCQlmb3IgKGk9MDtpPHU7aSsrKSB7Ci0gCQkJCWdkRnJlZShyZXMtPkNvbnRyaWJSb3dbaV0uV2VpZ2h0cyk7Ci0gCQkJfQotIAkJCWdkRnJlZShyZXMtPkNvbnRyaWJSb3cpOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi0xMDE2Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtMTAxNjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZWYyMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi0xMDE2Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNmFiNTMxZWYwZDgyZWZiOWUwMDIzNmVlNWVhMjM5MjgzMzVkMjIxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCA3IEFwciAyMDE3IDEyOjMwOjIyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBET1MgdnVsbmVyYWJpbGl0eSBpbiBnZEltYWdlQ3JlYXRlRnJvbUdkMkN0eCgpCi0KLVdlIG11c3Qgbm90IHByZXRlbmQgdGhhdCB0aGVyZSBhcmUgaW1hZ2UgZGF0YSBpZiB0aGVyZSBhcmUgbm9uZS4gSW5zdGVhZAotd2UgZmFpbCByZWFkaW5nIHRoZSBpbWFnZSBmaWxlIGdyYWNlZnVsbHkuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMTAxNjcKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvZ2RfZ2QyLmMgfCAxNCArKysrKystLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2RfZ2QyLmMgYi9zcmMvZ2RfZ2QyLmMKLWluZGV4IDhkZjkzYzEuLmJhZTY1ZWEgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2RfZ2QyLmMKLSsrKyBiL3NyYy9nZF9nZDIuYwotQEAgLTQ0NSwxOCArNDQ1LDE2IEBAIEJHRF9ERUNMQVJFKGdkSW1hZ2VQdHIpIGdkSW1hZ2VDcmVhdGVGcm9tR2QyQ3R4IChnZElPQ3R4UHRyIGluKQotIAotIAkJCQkJCWlmIChpbS0+dHJ1ZUNvbG9yKSB7Ci0gCQkJCQkJCWlmICghZ2RHZXRJbnQgKCZpbS0+dHBpeGVsc1t5XVt4XSwgaW4pKSB7Ci0tCQkJCQkJCQkvKnByaW50ZigiRU9GIHdoaWxlIHJlYWRpbmdcbiIpOyAqLwotLQkJCQkJCQkJLypnZEltYWdlRGVzdHJveShpbSk7ICovCi0tCQkJCQkJCQkvKnJldHVybiAwOyAqLwotLQkJCQkJCQkJaW0tPnRwaXhlbHNbeV1beF0gPSAwOwotKwkJCQkJCQkJZ2RfZXJyb3IoImdkMjogRU9GIHdoaWxlIHJlYWRpbmdcbiIpOwotKwkJCQkJCQkJZ2RJbWFnZURlc3Ryb3koaW0pOwotKwkJCQkJCQkJcmV0dXJuIE5VTEw7Ci0gCQkJCQkJCX0KLSAJCQkJCQl9IGVsc2UgewotIAkJCQkJCQlpbnQgY2g7Ci0gCQkJCQkJCWlmICghZ2RHZXRCeXRlICgmY2gsIGluKSkgewotLQkJCQkJCQkJLypwcmludGYoIkVPRiB3aGlsZSByZWFkaW5nXG4iKTsgKi8KLS0JCQkJCQkJCS8qZ2RJbWFnZURlc3Ryb3koaW0pOyAqLwotLQkJCQkJCQkJLypyZXR1cm4gMDsgKi8KLS0JCQkJCQkJCWNoID0gMDsKLSsJCQkJCQkJCWdkX2Vycm9yKCJnZDI6IEVPRiB3aGlsZSByZWFkaW5nXG4iKTsKLSsJCQkJCQkJCWdkSW1hZ2VEZXN0cm95KGltKTsKLSsJCQkJCQkJCXJldHVybiBOVUxMOwotIAkJCQkJCQl9Ci0gCQkJCQkJCWltLT5waXhlbHNbeV1beF0gPSBjaDsKLSAJCQkJCQl9Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTEwMTY4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxNi0xMDE2OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmMTA2MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTEwMTY4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSAyZDM3YmRjMDNhNmUyYjgyMGZlMzgwMDE2ZjIyNTkyYTc3MzNlMGJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDcgQXByIDIwMTcgMTI6MzI6NDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ICMzNTQ6IFNpZ25lZCBJbnRlZ2VyIE92ZXJmbG93IGdkX2lvLmMKLQotR0QyIHN0b3JlcyB0aGUgbnVtYmVyIG9mIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGNodW5rcyBhcyB3b3JkcyAoaS5lLiAyCi1ieXRlIHVuc2lnbmVkKS4gVGhlc2UgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGFuZCBhc3NpZ25lZCB0byBhbiBpbnQgd2hlbgotcmVhZGluZyB0aGUgaW1hZ2UsIHdoYXQgY2FuIGNhdXNlIGludGVnZXIgb3ZlcmZsb3dzLiBXZSBoYXZlIHRvIGF2b2lkCi10aGF0LCBhbmQgYWxzbyBtYWtlIHN1cmUgdGhhdCBlaXRoZXIgY2h1bmsgY291bnQgaXMgYWN0dWFsbHkgZ3JlYXRlcgotdGhhbiB6ZXJvLiBJZiBpbGxlZ2FsIGNodW5rIGNvdW50cyBhcmUgZGV0ZWN0ZWQsIHdlIGJhaWwgb3V0IGZyb20KLXJlYWRpbmcgdGhlIGltYWdlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMTY4Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2dkX2dkMi5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dkX2dkMi5jIGIvc3JjL2dkX2dkMi5jCi1pbmRleCBiYWU2NWVhLi45MDA2YmQyIDEwMDY0NAotLS0tIGEvc3JjL2dkX2dkMi5jCi0rKysgYi9zcmMvZ2RfZ2QyLmMKLUBAIC0xNTEsNiArMTUxLDEwIEBAIF9nZDJHZXRIZWFkZXIgKGdkSU9DdHhQdHIgaW4sIGludCAqc3gsIGludCAqc3ksCi0gCUdEMl9EQkcgKHByaW50ZiAoIiVkIENodW5rcyB2ZXJ0aWNhbGx5XG4iLCAqbmN5KSk7Ci0gCi0gCWlmIChnZDJfY29tcHJlc3NlZCAoKmZtdCkpIHsKLSsJCWlmICgqbmN4IDw9IDAgfHwgKm5jeSA8PSAwIHx8ICpuY3ggPiBJTlRfTUFYIC8gKm5jeSkgewotKwkJCUdEMl9EQkcocHJpbnRmICgiSWxsZWdhbCBjaHVuayBjb3VudHM6ICVkICogJWRcbiIsICpuY3gsICpuY3kpKTsKLSsJCQlnb3RvIGZhaWwxOwotKwkJfQotIAkJbmMgPSAoKm5jeCkgKiAoKm5jeSk7Ci0gCi0gCQlHRDJfREJHIChwcmludGYgKCJSZWFkaW5nICVkIGNodW5rIGluZGV4IGVudHJpZXNcbiIsIG5jKSk7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTY5MDYtMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtNjkwNi0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2I3ZjcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtNjkwNi0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLUZyb20gZmIwZTBjY2UwYjlmMjUzODlhYjU2NjA0YzM1NDczNTE2MTdlMTQxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJDaHJpc3RvcGggTS4gQmVja2VyIiA8Y21iZWNrZXI2OUBnbXguZGU+Ci1EYXRlOiBUdWUsIDE2IEF1ZyAyMDE2IDE2OjI2OjE5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBPT0IgcmVhZHMgb2YgdGhlIFRHQSBkZWNvbXByZXNzaW9uIGJ1ZmZlcgotCi1JdCBpcyBwb3NzaWJsZSB0byBjcmFmdCBUR0EgZmlsZXMgd2hpY2ggd2lsbCBvdmVyZmxvdyB0aGUgZGVjb21wcmVzc2lvbgotYnVmZmVyLCBidXQgbm90IHRoZSBpbWFnZSdzIGJpdG1hcC4gVGhlcmVmb3JlIHdlIGF1Z21lbnQgdGhlIGNoZWNrIGZvciB0aGUKLWJpdG1hcCdzIG92ZXJmbG93IHdpdGggYSBjaGVjayBmb3IgdGhlIGJ1ZmZlcidzIG92ZXJmbG93LgotCi1UaGlzIGlzc3VlIGhhZCBiZWVuIHJlcG9ydGVkIGJ5IElicmFoaW0gRWwtU2F5ZWQgdG8gc2VjdXJpdHlAbGliZ2Qub3JnLgotCi1DVkUtMjAxNi02OTA2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtNjkwNgotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9nZF90Z2EuYyAgICAgICAgICAgICAgICB8ICAgNiArKysrLS0KLSB0ZXN0cy90Z2EvLmdpdGlnbm9yZSAgICAgICAgfCAgIDEgKwotIHRlc3RzL3RnYS9DTWFrZUxpc3RzLnR4dCAgICB8ICAgMSArCi0gdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0gICAgIHwgICAyICsrCi0gdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cuYyAgIHwgIDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cudGdhIHwgQmluIDAgLT4gNjA1IGJ5dGVzCi0gNiBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3RnYS9oZWFwX292ZXJmbG93LnRnYQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dkX3RnYS5jIGIvc3JjL2dkX3RnYS5jCi1pbmRleCA4NzM3YjA0Li42OGU0YjE3IDEwMDY0NAotLS0tIGEvc3JjL2dkX3RnYS5jCi0rKysgYi9zcmMvZ2RfdGdhLmMKLUBAIC0zMDAsNyArMzAwLDggQEAgaW50IHJlYWRfaW1hZ2VfdGdhKCBnZElPQ3R4ICpjdHgsIG9UZ2EgKnRnYSApCi0gCQkJCWVuY29kZWRfcGl4ZWxzID0gKCAoIGRlY29tcHJlc3Npb25fYnVmZmVyWyBidWZmZXJfY2FyZXQgXSAmIH5UR0FfUkxFX0ZMQUcgKSArIDEgKTsKLSAJCQkJYnVmZmVyX2NhcmV0Kys7Ci0gCi0tCQkJCWlmICgoYml0bWFwX2NhcmV0ICsgKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSkpID4gaW1hZ2VfYmxvY2tfc2l6ZSkgewotKwkJCQlpZiAoKGJpdG1hcF9jYXJldCArIChlbmNvZGVkX3BpeGVscyAqIHBpeGVsX2Jsb2NrX3NpemUpKSA+IGltYWdlX2Jsb2NrX3NpemUKLSsJCQkJCQl8fCBidWZmZXJfY2FyZXQgKyBwaXhlbF9ibG9ja19zaXplID4gcmxlX3NpemUpIHsKLSAJCQkJCWdkRnJlZSggZGVjb21wcmVzc2lvbl9idWZmZXIgKTsKLSAJCQkJCWdkRnJlZSggY29udmVyc2lvbl9idWZmZXIgKTsKLSAJCQkJCXJldHVybiAtMTsKLUBAIC0zMTYsNyArMzE3LDggQEAgaW50IHJlYWRfaW1hZ2VfdGdhKCBnZElPQ3R4ICpjdHgsIG9UZ2EgKnRnYSApCi0gCQkJCWVuY29kZWRfcGl4ZWxzID0gZGVjb21wcmVzc2lvbl9idWZmZXJbIGJ1ZmZlcl9jYXJldCBdICsgMTsKLSAJCQkJYnVmZmVyX2NhcmV0Kys7Ci0gCi0tCQkJCWlmICgoYml0bWFwX2NhcmV0ICsgKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSkpID4gaW1hZ2VfYmxvY2tfc2l6ZSkgewotKwkJCQlpZiAoKGJpdG1hcF9jYXJldCArIChlbmNvZGVkX3BpeGVscyAqIHBpeGVsX2Jsb2NrX3NpemUpKSA+IGltYWdlX2Jsb2NrX3NpemUKLSsJCQkJCQl8fCBidWZmZXJfY2FyZXQgKyAoZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplKSA+IHJsZV9zaXplKSB7Ci0gCQkJCQlnZEZyZWUoIGRlY29tcHJlc3Npb25fYnVmZmVyICk7Ci0gCQkJCQlnZEZyZWUoIGNvbnZlcnNpb25fYnVmZmVyICk7Ci0gCQkJCQlyZXR1cm4gLTE7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhLy5naXRpZ25vcmUgYi90ZXN0cy90Z2EvLmdpdGlnbm9yZQotaW5kZXggN2E2NTliMS4uY2YwNTU2YiAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RnYS8uZ2l0aWdub3JlCi0rKysgYi90ZXN0cy90Z2EvLmdpdGlnbm9yZQotQEAgLTMsNSArMyw2IEBACi0gL2J1ZzAwMjQ3YQotIC9idWcwMDI0OAotIC9idWcwMDI0OGEKLSsvaGVhcF9vdmVyZmxvdwotIC90Z2FfbnVsbAotIC90Z2FfcmVhZAotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RzL3RnYS9DTWFrZUxpc3RzLnR4dAotaW5kZXggNzg5ZmIxNC4uMTE1NDJhMCAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RnYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0Ci1AQCAtNSw2ICs1LDcgQEAgTElTVChBUFBFTkQgVEVTVFNfRklMRVMKLSAJYnVnMDAyNDdhCi0gCWJ1ZzAwMjQ4Ci0gCWJ1ZzAwMjQ4YQotKwloZWFwX292ZXJmbG93Ci0gCXRnYV9yZWFkCi0gKQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9NYWtlbW9kdWxlLmFtIGIvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0KLWluZGV4IGExZTZhZjYuLjkxNmQ3MDcgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbQotKysrIGIvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0KLUBAIC00LDYgKzQsNyBAQCBsaWJnZF90ZXN0X3Byb2dyYW1zICs9IFwKLSAJdGdhL2J1ZzAwMjQ3YSBcCi0gCXRnYS9idWcwMDI0OCBcCi0gCXRnYS9idWcwMDI0OGEgXAotKwl0Z2EvaGVhcF9vdmVyZmxvdyBcCi0gCXRnYS90Z2FfbnVsbCBcCi0gCXRnYS90Z2FfcmVhZAotIAotQEAgLTE0LDYgKzE1LDcgQEAgRVhUUkFfRElTVCArPSBcCi0gCXRnYS9idWcwMDI0N2EudGdhIFwKLSAJdGdhL2J1ZzAwMjQ4LnRnYSBcCi0gCXRnYS9idWcwMDI0OGEudGdhIFwKLSsJdGdhL2hlYXBfb3ZlcmZsb3cudGdhIFwKLSAJdGdhL3RnYV9yZWFkX3JnYi5wbmcgXAotIAl0Z2EvdGdhX3JlYWRfcmdiLnRnYSBcCi0gCXRnYS90Z2FfcmVhZF9yZ2JfcmxlLnRnYQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9oZWFwX292ZXJmbG93LmMgYi90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGU5YTJkMAotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cuYwotQEAgLTAsMCArMSw1MSBAQAotKy8qKgotKyAqIFRlc3QgdGhhdCB0aGUgY3JhZnRlZCBUR0EgZmlsZSBkb2Vzbid0IHRyaWdnZXIgT09CIHJlYWRzLgotKyAqLwotKwotKwotKyNpbmNsdWRlICJnZC5oIgotKyNpbmNsdWRlICJnZHRlc3QuaCIKLSsKLSsKLStzdGF0aWMgc2l6ZV90IHJlYWRfdGVzdF9maWxlKGNoYXIgKipidWZmZXIsIGNoYXIgKmJhc2VuYW1lKTsKLSsKLSsKLStpbnQgbWFpbigpCi0rewotKyAgICBnZEltYWdlUHRyIGltOwotKyAgICBjaGFyICpidWZmZXI7Ci0rICAgIHNpemVfdCBzaXplOwotKwotKyAgICBzaXplID0gcmVhZF90ZXN0X2ZpbGUoJmJ1ZmZlciwgImhlYXBfb3ZlcmZsb3cudGdhIik7Ci0rICAgIGltID0gZ2RJbWFnZUNyZWF0ZUZyb21UZ2FQdHIoc2l6ZSwgKHZvaWQgKikgYnVmZmVyKTsKLSsgICAgZ2RUZXN0QXNzZXJ0KGltID09IE5VTEwpOwotKyAgICBmcmVlKGJ1ZmZlcik7Ci0rCi0rICAgIHJldHVybiBnZE51bUZhaWx1cmVzKCk7Ci0rfQotKwotKwotK3N0YXRpYyBzaXplX3QgcmVhZF90ZXN0X2ZpbGUoY2hhciAqKmJ1ZmZlciwgY2hhciAqYmFzZW5hbWUpCi0rewotKyAgICBjaGFyICpmaWxlbmFtZTsKLSsgICAgRklMRSAqZnA7Ci0rICAgIHNpemVfdCBleHBfc2l6ZSwgYWN0X3NpemU7Ci0rCi0rICAgIGZpbGVuYW1lID0gZ2RUZXN0RmlsZVBhdGgyKCJ0Z2EiLCBiYXNlbmFtZSk7Ci0rICAgIGZwID0gZm9wZW4oZmlsZW5hbWUsICJyYiIpOwotKyAgICBnZFRlc3RBc3NlcnQoZnAgIT0gTlVMTCk7Ci0rCi0rCWZzZWVrKGZwLCAwLCBTRUVLX0VORCk7Ci0rCWV4cF9zaXplID0gZnRlbGwoZnApOwotKwlmc2VlayhmcCwgMCwgU0VFS19TRVQpOwotKwotKyAgICAqYnVmZmVyID0gbWFsbG9jKGV4cF9zaXplKTsKLSsgICAgZ2RUZXN0QXNzZXJ0KCpidWZmZXIgIT0gTlVMTCk7Ci0rICAgIGFjdF9zaXplID0gZnJlYWQoKmJ1ZmZlciwgc2l6ZW9mKCoqYnVmZmVyKSwgZXhwX3NpemUsIGZwKTsKLSsgICAgZ2RUZXN0QXNzZXJ0KGFjdF9zaXplID09IGV4cF9zaXplKTsKLSsKLSsgICAgZmNsb3NlKGZwKTsKLSsgICAgZnJlZShmaWxlbmFtZSk7Ci0rCi0rICAgIHJldHVybiBhY3Rfc2l6ZTsKLSt9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cudGdhIGIvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cudGdhCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTliYzBlY2IyYTg0N2FjNmVkYmE5MmRkMGZmNjExNjdiNDkwMDJjZAotR0lUIGJpbmFyeSBwYXRjaAotbGl0ZXJhbCA2MDUKLXpjbVpRejs5YElROXRJdTtnJjc8JEYzbzdZZzFxenloNnRlZnk5d1pBczJkPFVoKnl1ej0/WHdXNFF2dXYjZzJuUwotenA5MyttVDByVlI+VCY4KDJUR3k9Zl9sKUBnU2FwfiRGYXlVRnUoIXxTeUpJRmdhXns4ZkdqfnZ3cThra1ZndnY+Ci1DYXZvcCsKLQotbGl0ZXJhbCAwCi1IY21WP2QwMDAwMQotCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE2LTY5MDYtMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtNjkwNi0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjZkZTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTYtNjkwNi0yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLUZyb20gNThiNmRkZTMxOWMzMDFiMGVhZTI3ZDEyZTJhNjU5ZTA2N2Q4MDU1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJDaHJpc3RvcGggTS4gQmVja2VyIiA8Y21iZWNrZXI2OUBnbXguZGU+Ci1EYXRlOiBUdWUsIDE2IEF1ZyAyMDE2IDE2OjI2OjE5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBPT0IgcmVhZHMgb2YgdGhlIFRHQSBkZWNvbXByZXNzaW9uIGJ1ZmZlcgotCi1JdCBpcyBwb3NzaWJsZSB0byBjcmFmdCBUR0EgZmlsZXMgd2hpY2ggd2lsbCBvdmVyZmxvdyB0aGUgZGVjb21wcmVzc2lvbgotYnVmZmVyLCBidXQgbm90IHRoZSBpbWFnZSdzIGJpdG1hcC4gVGhlcmVmb3JlIHdlIGFsc28gaGF2ZSB0byBjaGVjayBmb3IKLXBvdGVudGlhbCBkZWNvbXByZXNzaW9uIGJ1ZmZlciBvdmVyZmxvd3MuCi0KLVRoaXMgaXNzdWUgaGFkIGJlZW4gcmVwb3J0ZWQgYnkgSWJyYWhpbSBFbC1TYXllZCB0byBzZWN1cml0eUBsaWJnZC5vcmc7Ci1hIG1vZGlmaWVkIGNhc2UgZXhwb3NpbmcgYW4gb2ZmLWJ5LW9uZSBlcnJvciBvZiB0aGUgZmlyc3QgcGF0Y2ggaGFkIGJlZW4KLXByb3ZpZGVkIGJ5IEtvbnJhZCBCZWNrbWFubi4KLQotVGhpcyBjb21taXQgaXMgYW4gYW1lbmRtZW50IHRvIGNvbW1pdCBmYjBlMGNjZSwgc28gd2UgdXNlIENWRS0yMDE2LTY5MDYKLWFzIHdlbGwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtNjkwNgotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9nZF90Z2EuYyAgICAgICAgICAgICAgICAgIHwgICA4ICsrKysrKystCi0gdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0gICAgICAgfCAgIDMgKystCi0gdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cuYyAgICAgfCAgMTYgKysrKysrKysrKysrLS0tLQotIHRlc3RzL3RnYS9oZWFwX292ZXJmbG93XzEudGdhIHwgQmluIDAgLT4gNjA1IGJ5dGVzCi0gdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3dfMi50Z2EgfCBCaW4gMCAtPiA4NzQ2IGJ5dGVzCi0gNSBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Z2EvaGVhcF9vdmVyZmxvd18xLnRnYQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy90Z2EvaGVhcF9vdmVyZmxvd18yLnRnYQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dkX3RnYS5jIGIvc3JjL2dkX3RnYS5jCi1pbmRleCA2OGU0YjE3Li5mODBmMGIxIDEwMDY0NAotLS0tIGEvc3JjL2dkX3RnYS5jCi0rKysgYi9zcmMvZ2RfdGdhLmMKLUBAIC0yOTUsNyArMjk1LDEzIEBAIGludCByZWFkX2ltYWdlX3RnYSggZ2RJT0N0eCAqY3R4LCBvVGdhICp0Z2EgKQotIAkJYnVmZmVyX2NhcmV0ID0gMDsKLSAKLSAJCXdoaWxlKCBiaXRtYXBfY2FyZXQgPCBpbWFnZV9ibG9ja19zaXplICkgewotLQkJCQotKwotKwkJCWlmIChidWZmZXJfY2FyZXQgKyBwaXhlbF9ibG9ja19zaXplID4gcmxlX3NpemUpIHsKLSsJCQkJZ2RGcmVlKCBkZWNvbXByZXNzaW9uX2J1ZmZlciApOwotKwkJCQlnZEZyZWUoIGNvbnZlcnNpb25fYnVmZmVyICk7Ci0rCQkJCXJldHVybiAtMTsKLSsJCQl9Ci0rCi0gCQkJaWYgKChkZWNvbXByZXNzaW9uX2J1ZmZlcltidWZmZXJfY2FyZXRdICYgVEdBX1JMRV9GTEFHKSA9PSBUR0FfUkxFX0ZMQUcpIHsKLSAJCQkJZW5jb2RlZF9waXhlbHMgPSAoICggZGVjb21wcmVzc2lvbl9idWZmZXJbIGJ1ZmZlcl9jYXJldCBdICYgflRHQV9STEVfRkxBRyApICsgMSApOwotIAkJCQlidWZmZXJfY2FyZXQrKzsKLWRpZmYgLS1naXQgYS90ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbSBiL3Rlc3RzL3RnYS9NYWtlbW9kdWxlLmFtCi1pbmRleCA5MTZkNzA3Li5hYjA4ZGJmIDEwMDY0NAotLS0tIGEvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0KLSsrKyBiL3Rlc3RzL3RnYS9NYWtlbW9kdWxlLmFtCi1AQCAtMTUsNyArMTUsOCBAQCBFWFRSQV9ESVNUICs9IFwKLSAJdGdhL2J1ZzAwMjQ3YS50Z2EgXAotIAl0Z2EvYnVnMDAyNDgudGdhIFwKLSAJdGdhL2J1ZzAwMjQ4YS50Z2EgXAotLQl0Z2EvaGVhcF9vdmVyZmxvdy50Z2EgXAotKwl0Z2EvaGVhcF9vdmVyZmxvd18xLnRnYSBcCi0rCXRnYS9oZWFwX292ZXJmbG93XzIudGdhIFwKLSAJdGdhL3RnYV9yZWFkX3JnYi5wbmcgXAotIAl0Z2EvdGdhX3JlYWRfcmdiLnRnYSBcCi0gCXRnYS90Z2FfcmVhZF9yZ2JfcmxlLnRnYQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9oZWFwX292ZXJmbG93LmMgYi90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvdy5jCi1pbmRleCAwZTlhMmQwLi5kZGQ0YjYzIDEwMDY0NAotLS0tIGEvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cuYwotKysrIGIvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3cuYwotQEAgLTEsNSArMSw1IEBACi0gLyoqCi0tICogVGVzdCB0aGF0IHRoZSBjcmFmdGVkIFRHQSBmaWxlIGRvZXNuJ3QgdHJpZ2dlciBPT0IgcmVhZHMuCi0rICogVGVzdCB0aGF0IGNyYWZ0ZWQgVEdBIGZpbGVzIGRvbid0IHRyaWdnZXIgT09CIHJlYWRzLgotICAqLwotIAotIAotQEAgLTcsMjEgKzcsMjkgQEAKLSAjaW5jbHVkZSAiZ2R0ZXN0LmgiCi0gCi0gCi0rc3RhdGljIHZvaWQgY2hlY2tfZmlsZShjaGFyICpiYXNlbmFtZSk7Ci0gc3RhdGljIHNpemVfdCByZWFkX3Rlc3RfZmlsZShjaGFyICoqYnVmZmVyLCBjaGFyICpiYXNlbmFtZSk7Ci0gCi0gCi0gaW50IG1haW4oKQotIHsKLSsgICAgY2hlY2tfZmlsZSgiaGVhcF9vdmVyZmxvd18xLnRnYSIpOwotKyAgICBjaGVja19maWxlKCJoZWFwX292ZXJmbG93XzIudGdhIik7Ci0rCi0rICAgIHJldHVybiBnZE51bUZhaWx1cmVzKCk7Ci0rfQotKwotKwotK3N0YXRpYyB2b2lkIGNoZWNrX2ZpbGUoY2hhciAqYmFzZW5hbWUpCi0rewotICAgICBnZEltYWdlUHRyIGltOwotICAgICBjaGFyICpidWZmZXI7Ci0gICAgIHNpemVfdCBzaXplOwotIAotLSAgICBzaXplID0gcmVhZF90ZXN0X2ZpbGUoJmJ1ZmZlciwgImhlYXBfb3ZlcmZsb3cudGdhIik7Ci0rICAgIHNpemUgPSByZWFkX3Rlc3RfZmlsZSgmYnVmZmVyLCBiYXNlbmFtZSk7Ci0gICAgIGltID0gZ2RJbWFnZUNyZWF0ZUZyb21UZ2FQdHIoc2l6ZSwgKHZvaWQgKikgYnVmZmVyKTsKLSAgICAgZ2RUZXN0QXNzZXJ0KGltID09IE5VTEwpOwotICAgICBmcmVlKGJ1ZmZlcik7Ci0tCi0tICAgIHJldHVybiBnZE51bUZhaWx1cmVzKCk7Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9oZWFwX292ZXJmbG93XzEudGdhIGIvdGVzdHMvdGdhL2hlYXBfb3ZlcmZsb3dfMS50Z2EKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWJjMGVjYjJhODQ3YWM2ZWRiYTkyZGQwZmY2MTE2N2I0OTAwMmNkCi1HSVQgYmluYXJ5IHBhdGNoCi1saXRlcmFsIDYwNQotemNtWlF6OzlgSVE5dEl1O2cmNzwkRjNvN1lnMXF6eWg2dGVmeTl3WkFzMmQ8VWgqeXV6PT9Yd1c0UXZ1diNnMm5TCi16cDkzK21UMHJWUj5UJjgoMlRHeT1mX2wpQGdTYXB+JEZheVVGdSghfFN5SklGZ2FeezhmR2p+dndxOGtrVmd2dj4KLUNhdm9wKwotCi1saXRlcmFsIDAKLUhjbVY/ZDAwMDAxCi0KLWRpZmYgLS1naXQgYS90ZXN0cy90Z2EvaGVhcF9vdmVyZmxvd18yLnRnYSBiL3Rlc3RzL3RnYS9oZWFwX292ZXJmbG93XzIudGdhCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI2ODFmMmRmODk0MWQ2ODIzYWE3NjFiZTBhN2ZhM2MwMmM5MmNiZgotR0lUIGJpbmFyeSBwYXRjaAotbGl0ZXJhbCA4NzQ2Ci16Y21lSXhGJCNiJTZhPio8ZGppajQ/Y3V6K1ZpNT8hUklZKUAqZURBUUBgelBTd1FFMU5USTxZUUVxZFFHI3M1QGgKLXp3REZ0QW9Jam0pQ0lRYXwkeipxKHZ6fURiblBqck4mUkl7WT19YT0mVUZXUFApam9DWjwzMX1leTghKH1GWlo3MQoteldvcD4jZSlBWT1vcG1NdyZqIWg0Y2ImN0lSTVZNY3ZiKVklUHBhdW1HVEJ8e3RTOGxVQ1lrSzZiSm1rO0l6TURDCi1ENFBZSU4KLQotbGl0ZXJhbCAwCi1IY21WP2QwMDAwMQotCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0ZpeC0yOTAtVEdBLVJMRS1kZWNvZGluZy1pcy1icm9rZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0ZpeC0yOTAtVEdBLVJMRS1kZWNvZGluZy1pcy1icm9rZW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZjVjNjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9GaXgtMjkwLVRHQS1STEUtZGVjb2RpbmctaXMtYnJva2VuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzU5ICswLDAgQEAKLUZyb20gNGY4ZTI2ZjJhNDBmZmFhM2E1Yjc3YmU2YTQ5OTg5YTFhNDJlMmI4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJDaHJpc3RvcGggTS4gQmVja2VyIiA8Y21iZWNrZXI2OUBnbXguZGU+Ci1EYXRlOiBUdWUsIDE2IEF1ZyAyMDE2IDE0OjI3OjIzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCAjMjkwOiBUR0EgUkxFIGRlY29kaW5nIGlzIGJyb2tlbgotCi1XZSBtYWtlIGl0IHdvcmsgb25seSwgZm9yIG5vdy4gQWN0dWFsbHksIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0aGF0Ci1gb1RnYTo6Yml0bWFwYCBpcyBhbiBgaW50ICpgIGFzIHdlJ3JlIHN0b3Jpbmcgb25seSBieXRlcyB0aGVyZS4gSWYgdGhpcwotd2lsbCBiZSBjaGFuZ2VkLCB3ZSBjYW4gZXZlbiBnZXQgcmlkIG9mIHRoZSBgY29udmVyc2lvbl9idWZmZXJgIGluCi1gcmVhZF9pbWFnZV90Z2FgIGFsdG9nZXRoZXIsIGFuZCByZWFkIHRoZSBpbWFnZSBkYXRhIGludG8gdGhlCi1gZGVjb21wcmVzc2lvbl9idWZmZXJgIChpZiBSTEUnZCkgb3IgdGhlIGB0Z2EtPmJpdG1hcGAgKGlmIHVuY29tcHJlc3NlZCkKLWRpcmVjdGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2dkX3RnYS5jICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrKysrKysrKystLS0tLS0tLQotIHRlc3RzL3RnYS9DTWFrZUxpc3RzLnR4dCAgICAgICB8ICAgMSArCi0gdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0gICAgICAgIHwgICA4ICsrKysrKy0tCi0gdGVzdHMvdGdhL3RnYV9yZWFkLmMgICAgICAgICAgIHwgIDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSB0ZXN0cy90Z2EvdGdhX3JlYWRfcmdiLnBuZyAgICAgfCBCaW4gMCAtPiAyMzQ5IGJ5dGVzCi0gdGVzdHMvdGdhL3RnYV9yZWFkX3JnYi50Z2EgICAgIHwgQmluIDAgLT4gOTA0NDQgYnl0ZXMKLSB0ZXN0cy90Z2EvdGdhX3JlYWRfcmdiX3JsZS50Z2EgfCBCaW4gMCAtPiA5OTg3IGJ5dGVzCi0gNyBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGdhL3RnYV9yZWFkLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGdhL3RnYV9yZWFkX3JnYi5wbmcKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGdhL3RnYV9yZWFkX3JnYi50Z2EKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdGdhL3RnYV9yZWFkX3JnYl9ybGUudGdhCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2RfdGdhLmMgYi9zcmMvZ2RfdGdhLmMKLWluZGV4IGVjNjc4MWYuLjg3MzdiMDQgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2RfdGdhLmMKLSsrKyBiL3NyYy9nZF90Z2EuYwotQEAgLTIwNywxMiArMjA3LDEzIEBAIGludCByZWFkX2ltYWdlX3RnYSggZ2RJT0N0eCAqY3R4LCBvVGdhICp0Z2EgKQotIHsKLSAJaW50IHBpeGVsX2Jsb2NrX3NpemUgPSAodGdhLT5iaXRzIC8gOCk7Ci0gCWludCBpbWFnZV9ibG9ja19zaXplID0gKHRnYS0+d2lkdGggKiB0Z2EtPmhlaWdodCkgKiBwaXhlbF9ibG9ja19zaXplOwotLQl1aW50OF90KiBkZWNvbXByZXNzaW9uX2J1ZmZlciA9IE5VTEw7Ci0rCWludCogZGVjb21wcmVzc2lvbl9idWZmZXIgPSBOVUxMOwotIAl1bnNpZ25lZCBjaGFyKiBjb252ZXJzaW9uX2J1ZmZlciA9IE5VTEw7Ci0gCWludCBidWZmZXJfY2FyZXQgPSAwOwotIAlpbnQgYml0bWFwX2NhcmV0ID0gMDsKLSAJaW50IGkgPSAwOwotIAlpbnQgZW5jb2RlZF9waXhlbHM7Ci0rCWludCBybGVfc2l6ZTsKLSAKLSAJaWYob3ZlcmZsb3cyKHRnYS0+d2lkdGgsIHRnYS0+aGVpZ2h0KSkgewotIAkJcmV0dXJuIC0xOwotQEAgLTI2Niw3ICsyNjcsNyBAQCBpbnQgcmVhZF9pbWFnZV90Z2EoIGdkSU9DdHggKmN0eCwgb1RnYSAqdGdhICkKLSAJCS8qISBcYnJpZWYgUmVhZCBpbiBSTEUgY29tcHJlc3NlZCBSR0IgVEdBCi0gCQkgKiAgQ2h1bmsgbG9hZCB0aGUgcGl4ZWwgZGF0YSBmcm9tIGFuIFJMRSBjb21wcmVzc2VkIFJHQiB0eXBlIFRHQS4KLSAJCSAqLwotLQkJZGVjb21wcmVzc2lvbl9idWZmZXIgPSAodWludDhfdCopIGdkTWFsbG9jKGltYWdlX2Jsb2NrX3NpemUgKiBzaXplb2YodWludDhfdCkpOwotKwkJZGVjb21wcmVzc2lvbl9idWZmZXIgPSAoaW50KikgZ2RNYWxsb2MoaW1hZ2VfYmxvY2tfc2l6ZSAqIHNpemVvZihpbnQpKTsKLSAJCWlmIChkZWNvbXByZXNzaW9uX2J1ZmZlciA9PSBOVUxMKSB7Ci0gCQkJcmV0dXJuIC0xOwotIAkJfQotQEAgLTI3Nyw3ICsyNzgsOCBAQCBpbnQgcmVhZF9pbWFnZV90Z2EoIGdkSU9DdHggKmN0eCwgb1RnYSAqdGdhICkKLSAJCQlyZXR1cm4gLTE7Ci0gCQl9Ci0gCi0tCQlpZiAoZ2RHZXRCdWYoY29udmVyc2lvbl9idWZmZXIsIGltYWdlX2Jsb2NrX3NpemUsIGN0eCkgIT0gaW1hZ2VfYmxvY2tfc2l6ZSkgewotKwkJcmxlX3NpemUgPSBnZEdldEJ1Zihjb252ZXJzaW9uX2J1ZmZlciwgaW1hZ2VfYmxvY2tfc2l6ZSwgY3R4KTsKLSsJCWlmIChybGVfc2l6ZSA8PSAwKSB7Ci0gCQkJZ2RGcmVlKGNvbnZlcnNpb25fYnVmZmVyKTsKLSAJCQlnZEZyZWUoZGVjb21wcmVzc2lvbl9idWZmZXIpOwotIAkJCXJldHVybiAtMTsKLUBAIC0yODUsNyArMjg3LDcgQEAgaW50IHJlYWRfaW1hZ2VfdGdhKCBnZElPQ3R4ICpjdHgsIG9UZ2EgKnRnYSApCi0gCi0gCQlidWZmZXJfY2FyZXQgPSAwOwotIAotLQkJd2hpbGUoIGJ1ZmZlcl9jYXJldCA8IGltYWdlX2Jsb2NrX3NpemUpIHsKLSsJCXdoaWxlKCBidWZmZXJfY2FyZXQgPCBybGVfc2l6ZSkgewotIAkJCWRlY29tcHJlc3Npb25fYnVmZmVyW2J1ZmZlcl9jYXJldF0gPSAoaW50KWNvbnZlcnNpb25fYnVmZmVyW2J1ZmZlcl9jYXJldF07Ci0gCQkJYnVmZmVyX2NhcmV0Kys7Ci0gCQl9Ci1AQCAtMjk4LDE0ICszMDAsMTQgQEAgaW50IHJlYWRfaW1hZ2VfdGdhKCBnZElPQ3R4ICpjdHgsIG9UZ2EgKnRnYSApCi0gCQkJCWVuY29kZWRfcGl4ZWxzID0gKCAoIGRlY29tcHJlc3Npb25fYnVmZmVyWyBidWZmZXJfY2FyZXQgXSAmIH5UR0FfUkxFX0ZMQUcgKSArIDEgKTsKLSAJCQkJYnVmZmVyX2NhcmV0Kys7Ci0gCi0tCQkJCWlmICgoYml0bWFwX2NhcmV0ICsgKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSkpID49IGltYWdlX2Jsb2NrX3NpemUpIHsKLSsJCQkJaWYgKChiaXRtYXBfY2FyZXQgKyAoZW5jb2RlZF9waXhlbHMgKiBwaXhlbF9ibG9ja19zaXplKSkgPiBpbWFnZV9ibG9ja19zaXplKSB7Ci0gCQkJCQlnZEZyZWUoIGRlY29tcHJlc3Npb25fYnVmZmVyICk7Ci0gCQkJCQlnZEZyZWUoIGNvbnZlcnNpb25fYnVmZmVyICk7Ci0gCQkJCQlyZXR1cm4gLTE7Ci0gCQkJCX0KLSAKLSAJCQkJZm9yIChpID0gMDsgaSA8IGVuY29kZWRfcGl4ZWxzOyBpKyspIHsKLS0JCQkJCW1lbWNweSh0Z2EtPmJpdG1hcCArIGJpdG1hcF9jYXJldCwgZGVjb21wcmVzc2lvbl9idWZmZXIgKyBidWZmZXJfY2FyZXQsIHBpeGVsX2Jsb2NrX3NpemUpOwotKwkJCQkJbWVtY3B5KHRnYS0+Yml0bWFwICsgYml0bWFwX2NhcmV0LCBkZWNvbXByZXNzaW9uX2J1ZmZlciArIGJ1ZmZlcl9jYXJldCwgcGl4ZWxfYmxvY2tfc2l6ZSAqIHNpemVvZihpbnQpKTsKLSAJCQkJCWJpdG1hcF9jYXJldCArPSBwaXhlbF9ibG9ja19zaXplOwotIAkJCQl9Ci0gCQkJCWJ1ZmZlcl9jYXJldCArPSBwaXhlbF9ibG9ja19zaXplOwotQEAgLTMxNCwxMyArMzE2LDEzIEBAIGludCByZWFkX2ltYWdlX3RnYSggZ2RJT0N0eCAqY3R4LCBvVGdhICp0Z2EgKQotIAkJCQllbmNvZGVkX3BpeGVscyA9IGRlY29tcHJlc3Npb25fYnVmZmVyWyBidWZmZXJfY2FyZXQgXSArIDE7Ci0gCQkJCWJ1ZmZlcl9jYXJldCsrOwotIAotLQkJCQlpZiAoKGJpdG1hcF9jYXJldCArIChlbmNvZGVkX3BpeGVscyAqIHBpeGVsX2Jsb2NrX3NpemUpKSA+PSBpbWFnZV9ibG9ja19zaXplKSB7Ci0rCQkJCWlmICgoYml0bWFwX2NhcmV0ICsgKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSkpID4gaW1hZ2VfYmxvY2tfc2l6ZSkgewotIAkJCQkJZ2RGcmVlKCBkZWNvbXByZXNzaW9uX2J1ZmZlciApOwotIAkJCQkJZ2RGcmVlKCBjb252ZXJzaW9uX2J1ZmZlciApOwotIAkJCQkJcmV0dXJuIC0xOwotIAkJCQl9Ci0gCi0tCQkJCW1lbWNweSh0Z2EtPmJpdG1hcCArIGJpdG1hcF9jYXJldCwgZGVjb21wcmVzc2lvbl9idWZmZXIgKyBidWZmZXJfY2FyZXQsIGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSk7Ci0rCQkJCW1lbWNweSh0Z2EtPmJpdG1hcCArIGJpdG1hcF9jYXJldCwgZGVjb21wcmVzc2lvbl9idWZmZXIgKyBidWZmZXJfY2FyZXQsIGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSAqIHNpemVvZihpbnQpKTsKLSAJCQkJYml0bWFwX2NhcmV0ICs9IChlbmNvZGVkX3BpeGVscyAqIHBpeGVsX2Jsb2NrX3NpemUpOwotIAkJCQlidWZmZXJfY2FyZXQgKz0gKGVuY29kZWRfcGl4ZWxzICogcGl4ZWxfYmxvY2tfc2l6ZSk7Ci0gCQkJfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RzL3RnYS9DTWFrZUxpc3RzLnR4dAotaW5kZXggYzNhNTg5Yy4uNzg5ZmIxNCAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RnYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvdGVzdHMvdGdhL0NNYWtlTGlzdHMudHh0Ci1AQCAtNSw2ICs1LDcgQEAgTElTVChBUFBFTkQgVEVTVFNfRklMRVMKLSAJYnVnMDAyNDdhCi0gCWJ1ZzAwMjQ4Ci0gCWJ1ZzAwMjQ4YQotKwl0Z2FfcmVhZAotICkKLSAKLSBBRERfR0RfVEVTVFMoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS9NYWtlbW9kdWxlLmFtIGIvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0KLWluZGV4IGRmZjgyOGYuLmExZTZhZjYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90Z2EvTWFrZW1vZHVsZS5hbQotKysrIGIvdGVzdHMvdGdhL01ha2Vtb2R1bGUuYW0KLUBAIC00LDcgKzQsOCBAQCBsaWJnZF90ZXN0X3Byb2dyYW1zICs9IFwKLSAJdGdhL2J1ZzAwMjQ3YSBcCi0gCXRnYS9idWcwMDI0OCBcCi0gCXRnYS9idWcwMDI0OGEgXAotLQl0Z2EvdGdhX251bGwKLSsJdGdhL3RnYV9udWxsIFwKLSsJdGdhL3RnYV9yZWFkCi0gCi0gRVhUUkFfRElTVCArPSBcCi0gCXRnYS9DTWFrZUxpc3RzLnR4dCBcCi1AQCAtMTIsNCArMTMsNyBAQCBFWFRSQV9ESVNUICs9IFwKLSAJdGdhL2J1ZzAwMjQ3LnRnYSBcCi0gCXRnYS9idWcwMDI0N2EudGdhIFwKLSAJdGdhL2J1ZzAwMjQ4LnRnYSBcCi0tCXRnYS9idWcwMDI0OGEudGdhCi0rCXRnYS9idWcwMDI0OGEudGdhIFwKLSsJdGdhL3RnYV9yZWFkX3JnYi5wbmcgXAotKwl0Z2EvdGdhX3JlYWRfcmdiLnRnYSBcCi0rCXRnYS90Z2FfcmVhZF9yZ2JfcmxlLnRnYQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS90Z2FfcmVhZC5jIGIvdGVzdHMvdGdhL3RnYV9yZWFkLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zMTBiNzJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy90Z2EvdGdhX3JlYWQuYwotQEAgLTAsMCArMSw0MCBAQAotKy8qKgotKyAqIEJhc2ljIHRlc3QgY2FzZSBmb3IgcmVhZGluZyBUR0EgZmlsZXMuCi0rICovCi0rCi0rCi0rI2luY2x1ZGUgImdkLmgiCi0rI2luY2x1ZGUgImdkdGVzdC5oIgotKwotKwotK3N0YXRpYyB2b2lkIGFzc2VydF9lcXVhbHMoY2hhciAqZXhwLCBjaGFyICpvcmlnKTsKLSsKLSsKLStpbnQgbWFpbigpCi0rewotKyAgICBhc3NlcnRfZXF1YWxzKCJ0Z2FfcmVhZF9yZ2IucG5nIiwgInRnYV9yZWFkX3JnYi50Z2EiKTsKLSsgICAgYXNzZXJ0X2VxdWFscygidGdhX3JlYWRfcmdiLnBuZyIsICJ0Z2FfcmVhZF9yZ2JfcmxlLnRnYSIpOwotKwotKyAgICByZXR1cm4gZ2ROdW1GYWlsdXJlcygpOwotK30KLSsKLSsKLStzdGF0aWMgdm9pZCBhc3NlcnRfZXF1YWxzKGNoYXIgKmV4cCwgY2hhciAqb3JpZykKLSt7Ci0rICAgIGdkSW1hZ2VQdHIgaW07Ci0rICAgIEZJTEUgKmZwOwotKyAgICBjaGFyICpmaWxlbmFtZTsKLSsKLSsgICAgZnAgPSBnZFRlc3RGaWxlT3BlbjIoInRnYSIsIG9yaWcpOwotKyAgICBnZFRlc3RBc3NlcnRNc2coZnAgIT0gTlVMTCwgImNhbid0IG9wZW4gJXMiLCBvcmlnKTsKLSsKLSsgICAgaW0gPSBnZEltYWdlQ3JlYXRlRnJvbVRnYShmcCk7Ci0rICAgIGdkVGVzdEFzc2VydE1zZyhpbSAhPSBOVUxMLCAiY2FuJ3QgcmVhZCAlcyIsIG9yaWcpOwotKyAgICBmY2xvc2UoZnApOwotKwotKyAgICBmaWxlbmFtZSA9IGdkVGVzdEZpbGVQYXRoMigidGdhIiwgZXhwKTsKLSsgICAgZ2RBc3NlcnRJbWFnZUVxdWFsc1RvRmlsZShmaWxlbmFtZSwgaW0pOwotKyAgICBnZEZyZWUoZmlsZW5hbWUpOwotKwotKyAgICBnZEltYWdlRGVzdHJveShpbSk7Ci0rfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS90Z2FfcmVhZF9yZ2IucG5nIGIvdGVzdHMvdGdhL3RnYV9yZWFkX3JnYi5wbmcKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzQ2OGUzZDkyN2VhZWI3N2QyZjVjM2JjMzViOTcwNDU3ZjYwZjE4Ci1HSVQgYmluYXJ5IHBhdGNoCi1saXRlcmFsIDIzNDkKLXpjbVpgKmN7dFNYN1hPYU83LTZLNmImUkRfTW5YeSRuSGUjYnNWR35UdmZaKnZPP0psZTglYXIrQXlTRGZTdEZHaAotekcjKilwTDBSVVBKKEZlZEJhRT94LSpvQERfZGVad3BaN1dNZEN1b34tdClmYW9YXyl+bFcrbE5DSSpwKDAwMUN7Ci16SE9KV1NidF8rUGZwXyF3PG1APld6U2B8LVhAJnVJZXl0YUUxKnY+UUIqNUo5SFVObDl7U3B3NmBTYyhrNnV5SkMKLXpIV2VOTkxtfDN+dENve1UwMDJ8NTc/VnJFVSsxJHN5O2EmfDsta2JabGA2RV9DJT5ncWJEdEM9NTdGM2ZVRCQpawotelNHNURUTDYjTm5VPTd3R2NDd3w8Znx7clppKTVxPGNWVypOUVBRQ1kweFBVMF9uR0cjRD93UjM3Qk9eb14yNjElCi16K31xdVFJXzFaUD1nVE5wLW58OyMpen5eOzc4bz1lQHRSWXJTIzhKYz5Ne1cqT2RZRWdqSnA2dTlSYjdsI1gldGAKLXp1bjteaDI4dUVQPVAzUHg/fHJOR0YjMTdEJUEoQ0pfYXJ8P25eMG5xIX53K1dnMjM4NjdyeW4hWmxifH4mN0F+egotenFrUD1JUHlMck9NPzU4PjJyRXE9JnsqOU9NVSFITldKa2dgKGB5KD0ye1dMZzM5Mk9URHlpTTIkaUNMY3Y1TENHCi16ald3UnE0NkRhJHBWfFZeNEd2czM2azFkV0ZeVjRjOGolM35qTnsqMCokcGhwRnwtI3ppQDtrQHQtcz9jcVcmc2QKLXpQaHt4fkB6bWAhNVYyMypMJlFiPV9lbE5+bkVFcVFocmhOWmlSVSN8cWpLPjZwdGFZZ2oqc0FjdVMrdC03WDVhQgotelVJNWYqYUwwRHV0K3kwdmRlP3RnN1FNYV4wYChwbHZ1RF5RPilKKGFiUVk+QDZQXypZWTtYSjU0VkNeX2Y3RjJ4Ci16MjFlZV4zNX0hPExAYlc/PC1KZ0otJXNhaEZ2Njh4UFhnaENsfENzQ2MtUC1Be2BrbF8zQnl9TXF9WW5ZWW1TdDQKLXo4aDhteD88ekJncTlDelY0KiN6Ujh0fXg1T3I4ITlSbjZMZ2FqSiFCKWVieEV0cndDQCpwNE1ARDUxIz9PRVl9PAotenFKSHUrc0NSVTJZWE54aXEoRFBAKihVaT9KejtJUUBPJExiZn1lOE53aWoqTCZpVWQkTjQtWWtmcCR2RHgjdXY/Ci16I19lVUxwQWJQdk48dFZBPkVrIyNyUURBT1crQCkyPyV9WGlpU2ledGVkMVBRdXt2MCY/YkFeciV6PzcqQW4zX0gKLXp2WUZ2OHtwOGZzQ2d1TlIkIzM9Nk97XkgmOGtUOU45MkNlYVJBajNZX2NObC16blk4Slp7TXBPI09LfUE8X3c5SgoteldNSTJLbD94dnxTLUZUVihhVUdfYFVXVFpPRkpHZ3YyKT5KUiMqSDJVYWQod3lxYkladD93fER3fGs8ZVkmJjlGCi16Y3IhekRnNz0jSF49Xk1DK1cwMkdOezc4Sz00S3VxOTBjQCQ3ZiQ3K2gpXllGbX0tPzNjRWRVK0l2aDVSQzwrWXkKLXpPeig3cjx0VHxaMzRTQGdsel45bHBwQE9zdERCR0EoaXdrPExRI3JAaV8pXk1WKlJlM15xQiNqN059NGV0WmZLPgotenQ2PHd0aiZNMihUTGdUaDNBSCh9NDtmNGo9PEl1XmF4dlQwIThCKUswTyE3Zz9XbmhJeUdINUBFdFQ3NyY/RXs2Ci16QjU8I3tQV0pPeFFrRn1Mc2t6SUA7KHFWQ2pFJXYtaHxTODtgayNoXlc1d1ItY2FkVzJIMk1rKzdRWmhxU1JkIU0KLXpjUThmcHh+T14oXk8jMmdYaVdEWCZ1QGxaVCNxalBHflhoMFVvYlZxI35MdW1mISVTOWBKaGYlTUg/NFJlNS0xNwotejdCUD5EPj1zeTU5akVHb2VFeF9XMTNCbm1oQXM/Kmo2I2JHMWFAIzE2T34xPnErUDJAJVFOfmBgV3M3PVdYO0Y5Ci16YD1wNUkkMWlnKkd8aVc4dnNscjJeOGhqK0EwSFdEb1QtQGZuNUk1M1pXV3AhcjhmTWdobXBqZHFDJUUjJTJIRkkKLXpZJkEoZyFMaTMrJDxCXnk4Xkh3NSFzWGQmayVFdiFhO35hQiNqb2oxPzJudHU5fCFHQUZVd3ljMG9lX355PH0/RQotelVoQEhVYkNJKHgyVzFybWc3Y2t6UkwyRXcjY2R1anV0KyotdDBnKTgxVHUrM1pINHVQYHIxZDFrU29vVUA1eWJMCi16UjVfSiVBNXNiYWspS3JTZj4ocnxWKiZ5Q2I7SGEoJkFDaTl3Oz9rUTdxMSRod2psaV4pOytLSUpBaHxLJllMI0UKLXorYihgUFpOPlZfNT92YGh1LVU0MjlLOWZPJTgqazhwRT1qRGtuNVpKS3xWZ2wqQCZRRV47bXdsQ3hXYnE0KGh5aQotelV1eilia0A1XkhPa0BnQmBTYVdaZlgwN0VvbTA3anMlbnA4WG90Jj9ZUDhSKzN8anJSNGMjek97TE88P15HODRPCi16b1B9R2BNSylMWkRvXyQjbldSMDlYPk5ZX21MfjFeQlVHfSkqNGI7Wl96cStgUUBrelVIQyZgdHJDaVFZdW07MT8KLXpCaWMrMEJsPkxMWVU/PiFCM2shSWxzfXVYUipgT0VyM2BmPFBASFpGa2AwZlA1YF5YPUJPdEM/QCF2VXE3QjRPRgotelpFdzYrM2VvRlJFQHhFdyglRGZJeWJoSnVvMDNEdTJsZG0kMjBTbjNoajE1THUmZ1BRcD1OJXIlaE1FJCpqe15ACi16UlRmZlFoSDdKTEItNzBxVmtTbSQ5WnRgbWFoSExUN09eSm5OcUFBSnMwQ15uKzF1al9FLX1TXj8mX1U9SD87RF8KLXoxVTlVSkF6fCs3enxZcSg2JHtBfjVmaGN9aEg1dHduS3VrZiNEbl9KblEkSjQtWiRkfSpUcnE+P2FLcjJwMTljNgotellKfXIrXnM+NmFEfm1ycDtvSVVobGlnNHNNKUpnMz1Ke0s7ZHAjQkN6UnUxc1UzRDF3Smx7akFeWSNTaFZUK3xeCi16VXlqaU0md0R+djN6eX1LIXpXbSUzY3B1IygqKWNteHcxK24rQzdWfGhjWjZoOENaTHViWHQmSiloJDZ5ZmxWNj4KLXpPVnZfZ0RiKmdsTzlGTEw4eDZicU02KEYjcEdoR3krampPeXQ5LWRhTVdHckpLRntYdm5UI15UZVlhcTJNRylxdwoteko9UlY7TXdnKmdvT2E/KHdNPUVIPCNBUyRlZ1JqKndubStCdTRQYnskLU99R1pTaXVUMVVkQkR3djJSeiliMytMCi16UkE9bmthV0hCN0kkVH5CJTtLeW5uUzBiQDNZcEtxdCQyO3F6d0xmPkRaNFJGQ1FCIT1RUWBGdCZ5X1BUaHVEc0EKLXpja2F3bWJGbkE5VGw3K0V6JWEpPj5UK05oQDhVeHpyWlBgPHBIRVhWZCN8MnY9Zl9iI0FAfG9BemJrNlFfPnxPKQotemd3P1hsaSEpLSl4ckYyej10aEgtVEk7fD5VVllLNjRAYXNUJTQ4NENGLXBqayt+fndBK1olZlpZdWErc0RKPE5mCi16Zk9gYmZsfWlnXzAmQzdCQ3VCYSl4Wj8tbVFPPWJRMk41Oz5Td31+fCh0TX1oSyt6PiteOFFRaE9zVHhsKzJBSisKLXpYOFdqbFN8OzBXUnY3c19Caz1AdSR2M0dMQHFDPyZqY05FdjxvNjhrYXohcEhPc0A7I0NTaHx7IWomenJzZm44agotejZ8byNeNkMyTk85IUcmdTtRMFU1aGtwQ3N8MlozSSRuTll+eH1UbDxyT0J8MUtpQnxSUXlpdVlidkA+OUNvb2smCi0KLWxpdGVyYWwgMAotSGNtVj9kMDAwMDEKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RnYS90Z2FfcmVhZF9yZ2IudGdhIGIvdGVzdHMvdGdhL3RnYV9yZWFkX3JnYi50Z2EKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjExZjVhMDgwZjM0MjRkZmY2ZmYzNjhkYjZhZjE0MGE1Nzc3ZTIzCi1HSVQgYmluYXJ5IHBhdGNoCi1saXRlcmFsIDkwNDQ0Ci16Y21lSTRLYWI/YjV5YzZBZig7YygxM2BmVSolJnhiO3RRQ18qYVBoSWBZI2tSK0RPNEZ5Tzd4PjIzRER8ZlB1KiEKLXpjJDNSVnokRmVBU2xJcG1sUjdjPnswWFN7Y3dJIVhobiEqMCZHMHo5dz9MX3kpbTY9Jj8leUxoQ3R8WWZDKXZCZAotekAzTWJwLShgIVJSI2xiQnY8Nn44NDJTX1NBT14mTTchVSh1S24jY2hGKDN4U2ZFVy0xVm43VXQwV2x5MyNERXdPCi16MTdiaTdoeWdKbTJFPjNFNUNkWU0mQT99JGV4NG1fVEZkcllZQ1l6Kzl6aCNGeiZ8OXx4MnpLbl5XI0IjK1RQUWsKLXprR0pxdWcxd1NIK1VxRTs9RDhseSQyfDh7ZE9nbSpOKn44ck5BV24lYihCOGx4diRkZWFyUmFFSUw8blgkOWItIQotel5mQXdVbTBwanR1aFBlSCk9QG1wYX4tOVJkRzQkOWRZcFpnSzh+fUY7JkducUQxRlJ4VSF+WE0/NXAlfm9PS2tCCi16XklYVEVrTUg1ezY2fC1aNkJGfWZWczg4VCpJKWkzSkpob09TSnxPOXd7X0kjbld4P2wpZHVTaClkdVV0bGgkQXQKLXoxN0NqbS18VCh0PV50NWtzUUd5WGVZfVJSNjZ9ckIkNk40VENEPCRKTCkhMlJjQ357eG1oY2FXI3V7cClmSVRFeQotenR0bWVyPXxpa345O1ZVYGBnaklrQl5xblVgQWItcFh3cnYlT1orVUpaS1YlZ3gySk5ncDVpPkQ1OXdveVR1eDw5Ci16KHVlZGg2Jjl5QjU5dmV0bT9EPWBuVW5NKGVOMlZMRGI3UnNrVXBsITx5N1YqZU1sY3VWUjRHe2tVcGYzRFJNY0wKLXpJWX1TViQ1ZEZIO3lmbSVrNHdCfmEtQ289LTF9RHItbHdgd3UmP3l+bTk3b0BHI1R7cTNIKWBVdjQtITdFTWVEKQotencpSzk9Wn5tVFRodVVBVnw3Q35UelYlVzYkRX40NW5ZNms/eG4hTVpGTzJzK3s2bThNamRmdVRLZnBnRSp0aFc8Ci16e0N3MkB4T0hMc0FHckpre3lOY0VMcEdQTj5xTSlXd21IeTtkQXg/TjY2e1R3MUlLI3tzfWslTGEkNmVwXkhFIysKLXphOWxvMVZBQSt5NFlfPW96QCtnamVkenQmdiQhXnFhaFVXV1VlQUtwdkc0MkJobl4kR1g2fkhNQ3cpakM9ZnZ5UwotemJDb2Ala0ZsOU1yfUlmNCgjSlhSSWAmK3A1OXdvVT1GYUpTKHVlZU1QUH5waVNMczlnN0BONnNJLW0zKmVWaH1vCi16VzZ5UEJgcTJBVmB1filaYHV+KGNBNzgtVkJecW5ecDIjS2FGNDRCJEZBNDd2QU17KE5jejN2ZEFOVVlJX1ZxflQKLXpKRm9rN18rOEhye0BkdzZBRDQ7bSp1TXp4KmkjPXg7eWQ8VlFCVUlheW0lZFp6ayl1I2ZXSiNMKjZfRX1GSlg2eQotelJ7IVJAfEV4aER1aTthRT1rJCUhJDZONThAO2olbXF6YEdzR3VZSipgZ2pKUF4xSkVHV2VxdWgyfX05aWJtbUdRCi16YGtyd1hfaXBKISpVK3gocmVnMjdrVXBkalhgIUQxPjcjI2IjRXNUUWBWYSVVNClpbDFlZXwhNXhZNjIzQTdWaCkKLXpmcW4rMGtOJmswSChERiVMayNGVCg5ZU1NKFo0cTBNciRLfGh5aCYoYFdjdipLSkA7cy1hRERwZG5aOTNRK2E8XgotemBqOT4qckh9V3l3fEA1Tj1oXiQlYDx6Pn57bSVxaW5geHt+Jl8pNk9rWjg1OHcyI3grTkExSURfOTV1d0M0N309Ci16ejUyKlRfYF9WK1pvWHhGJTc2ZHNLZXc8b2VjWlJ9ODJRVWskSihYa3FGcT9yVnNyTT0rZEk5MUY+KmRmZVVSXnAKLXpPczg7K3s1O2dMSG4mPXxPTigxPCZSK1ZFS0R6aloyS3ckRigjSj5tPysmX3ViZzUpSnJ1KVpmcDZ7b0FwT1FZZAotendhXnVqS0JOejVDRk1LJXB6cjR4dnhJSGoqaVVHJFVeJEg2djF5JihwJUd1ZW45R19mKmR4NXZUQzl3ajJHNTZuCi16fDV5WXFAT2YlczxIcWA2QUkkeUBmYWtoX1UwQTtOaTAzZWxTMT15aHRodStDPD5VQipGXzw1bHhqZXFJSm51dDMKLXokSW9HYFUlXjtJJnZ+KHJ3KHhibmpsUU1Ob0JETnF0b2VicDQwZSs1PU5PbWw4XmZ7cCV4YF4lTSVAelRiOVU5MgotemV5YGNhVVh6Y0NLSk1GZmpDP1oySSRDYklYcD05Q2xjZ3RqWTtuZjY3KUghJCpKelYtJWNwO0k9ZVdYZypTTXtHCi16PGd8MiVWfikhbHA2NDtOdD4pZXhjVjM1aGUmbm9OLW87cV9QNW5HekBGZT1jeEZzeFJkZm1mKGkoJXdrYm1WT2kKLXo8R212dWxnRmhvVyomUU8lKFRYfnt5dllvKztOZ3k5JTlCZ3hpZn56OV47LVpfQWpsREtJSGhpYiU/UlAyc3pYbwotemIxWkthYXlZKGNvYyR9LSpkTEQ5RnNyTmthbT4wJCphQncjOD5AKnVhLUx3VXk9VUxseGdCZU1WQyg0bXo/ZD1MCi16X2wkQWZMKkVNQ2JLWVZZZVgrSSoqNzZVMUlWYEBmbHkjXjNrN0pAV3dvQj0zcUFtfWRrZEBxJCY/YXc7bkhBUFkKLXprR1NXJWI8VWBeKW57V00kMjM0clRsKHI0fEg8az8teEBWR3VoUkYwez0pVT05c1JzLVNeWDlKJEtyNDU9SypWRQotej94QGRLN19XZEN8NzV3PWhUaiomSFpHXmQ0QzRNaVFUalR6KGVLQ1NkQTQkfS1eTlU5PzBCc0I3PEVKUnY1TTw+Ci16ak1+ejF3eT5OaVVoYCp0PTBnck9hJH5YQnF3ZihgYkx7Jk52KEwpRHQraSRoTSV9VDBZd24yZ3l6RmFxSCs2MnUKLXpuamhGWWcrNlhFdUlaIW1uVV9xdm9FRjBfJk1fOUExIzJWaj87KWtkJjEwe1BuYnozVy17KDtgTD8zeHFKITxfdQotenF8cEs1b3gxNTdxYzRVciRvTXtlWTxBU0lQflh4M2JIbGlkKDtEckojb3lHPTFKMDxBT1cwa2F2OTl3empRQVI2Ci16YFk1fmg0RT8jd1gmOD47UmFZJXokbEd9aT9EYWJBY3s2dDNTVSElTHo1NExeYVhYeG90ZC1Xc3cjNjtCJU9qVU0KLXpEPzs1MHpSP0JSOUp7cUhJTnRrTms+ZnY/KkRsWGZrSTVYSCpWTVRrWWt1SVk9S042S0hQNDlNIXEoaC08VllXVwotekxDXi1ESD9XUTQpd3RkQXo3K1pFUF95JHw7S3JgTWdMNGQ1eVlYWG8/Vzx4ez1sdmpjVF9TeXllJS1CJm9HWH4hCi16VzE0LTliVz5TPT9EdzYrP1J6dEpKVndfcz5pbCYhdzthU3ZTazAtJHkxZUJ1LX07QnRga1hNdjJBPHNDIWwpYkcKLXpRJW5ifmIjZHtYcEF+dHtYRiZTYHd0Jl4yM0JMNmxvVndAQUFGZHMrPiVWYGpqMSV2cG9ZdWFnJnZaay1ebVchbwotens2bHtLPSRzUTZKNGpvb0JkYnBedmRVK3ZnPyYhJUx0bzh2NmdTPHAqM3N2JSYyZUYtaFhRVHQmVz5CM054VG98Ci16SiQwP1h1RD5eSUZePk5ELSt4PkNpdkNCS1g9Rj1aPT0wQkolcXUlczd7cDlSLUNvQVEpWWticDQmcDF2K2w3dEkKLXplMlpKbWQtUWRsR3M7PW04MXp4ITtMblFNYCFFaFl3TWN6RGB0aklLLUUtdisqQXYkbCV4KWF4eXcrMVEpQ0lsZwotenBNMXlxQz1mRyEoQkUpT3stSTU2XzxJTlklZXZHMzJZV3U0OENPUWVKNlQxJWdwbm9NNlJkVDsjYz5oKCp1UlIjCi16WS0pWW4rOG9RKG1LSFozYGk8cCE0JVNESHsmbEV0dCl0SmVIdUMmRD4jLTFQKjRPZ0hgKjdZPCpOU1RsV35sP3UKLXpfXiRUV3pNP2tQNUgrI3M4TUN4fkhTZEBxJWo5UkQpeDBBd2haIzR5OD9Sdjt7aE5AcGZAbDBiOUo3dytUVVpARQotemorPEheX2lnMFptPmdwcllQIVp8S2RzU2MkZ2tgQ24wOztKYkI7Qyt7VVhqeS1FLXYrKk9SUl5TZFEtbFVMJjZNCi16RWAyT189ei0oLWRxYD5MSDFDLTQ5UERjNnRWTGIhKnJ7VjctWXx9U1VoaVlaSVFFOHAlPWRxWUhNS3RPK3BMM2kKLXpqbWRFdD1OTU5vYHdXSEVCZW85bHQjen48P34lSzU8ODs9RF91OyYhdTllPmxhSishcyFxJm09O2k7UChXX3N6fAotekJsUG9tdGMxMCtnayNxRkYkO2ZBd3oyO09qNyR4K01XfGMybm1RS1p4eTQ9SEVuO01vYl8yVSRVO0t4N3QyWFlwCi16VzkwR045TEw3STU2OHs4O2tibXFhJi1sYzg3bk5kJWQtfCUxPyNMeS1FLXYrKkF2KCF8RTdtI0FOYCk4cFdLXjEKLXpudHpZP0ljbEZ+MSl6KFMoP19Fe2U+VSt4b2NHa1ZpckRBMXpxSlFBPUNoTjNLRHpPSHF4UmBtMEpedzwqPmx7Zwotej9AWHpDdUtlTTgzakV1PmZ1MzY2YX4xQ3lZZ3BYMz0tVmc3a0Z4Xk0xZlF2TDdAeWhmKntYTmwjcnRzSFFgZD8rCi16M0p0Nng5ZTdSbmNFTm84b3B1R0YzQTw7UUhkX0NgSlUpQnNvLTJSMm9AfWs1NH1LNVheeXF+NWxjblgjcExQWUgKLXo1QnR0Um9zfDJ8Q2Y8a2hwMU19PytDdjhtU25qTyNlSShBO0ByUGY1KUlDQEo+R1kodikhSz55RigzeFNmRVctMQotelZuN1V0MFdseTMjREV3TzE3Ymk3aHlnSm0yRT4zRTVDZFhCNDJTX1NBT14mTTchVSh1S24jY2hGKDN4U2ZFVy0xCi1wVm43VXQwV2x5M3JwSksyYFR4aD98TE47TEttV3Q/LUBmP1NIQHx4Uj4jdSpGe1JwKyooOD5TKwotCi1saXRlcmFsIDAKLUhjbVY/ZDAwMDAxCi0KLWRpZmYgLS1naXQgYS90ZXN0cy90Z2EvdGdhX3JlYWRfcmdiX3JsZS50Z2EgYi90ZXN0cy90Z2EvdGdhX3JlYWRfcmdiX3JsZS50Z2EKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTg0NWFkMGMzZGE2NTIwNWFmMjU4NTRkNjQ1NjhiMWNmMDkyMWUzCi1HSVQgYmluYXJ5IHBhdGNoCi1saXRlcmFsIDk5ODcKLXpjbWVJMkohfjlSNVhiazxMNU5nV3JoKmw2S0ByZjJBYExGSzMzNE98JEVQVF9hK1R1Sngha2p6SUdpSjJJPFA+eAotemlpUlJiayU5KG9xIWR0Q0lzcFlBJjZVdWdHY0M+WHxJT1FkWiskKzsjPjVlayZlRlZuSjNEVmF7JT5hWD9hNUplCi16Rj4tJTVxd2t9ZVFUJDR3enZ3JUxyIW81JEwlVDElXztVMCZHck1oWUR8Kj0xdStRQk1JN2JCejVHV0FYVUk/NW8KLXo0KT1oMTUyKVl1UH5XJGBgfUI/MXF1dURRIXRLdkktZCpHZG1vTlZqP04wQVUoRlY1LW1XZHdwSDU1eDQ5PkdENgotej0lQkJtWGxVNG1WPkBxSjhmWCE8Y1FvdWJuWmMzVGJWdEt9P0AxWTAhOWFuNW1EMGRFMjh4QSZzTT49Q0w/QD17Ci16MC18UkxxRSZqKThvbFV4dHJ3O0FxQlZOYW1IRUJzNjBLczVSJmw5cDY+VkNAVDQpdSFaK3tnPHlMWTJNWW5eUTEKLXpkOUVMRkU0dFUkdSluMD8zcGxKMUo/dn1QWiltc3lyYDhWPDU/JEtTdS0wUy1NPyZvIzRRb0JiNDtnclhmZFRgTQotek49YyotRmk+RCVuLXhiNXRZRHpQeilIRG45UnRPfUstMiZiZkxURGEkUmVGPSU1LUA0Mys7QChYcWhfTHFnNTtlCi16Z31USGx0enN7PGllMzdvb2RyWHE4UElhPTlPPkU+QkJJczRoUDVSUCpXcXh5NlF6OWBZKHY4cEk2K0h3dFgkcmEKLXp5MWt9YDwrN0VwP3g9aDNePVJSVDNfUVI8ZnFfUmcwfHl1PUZ0OXp9enpQTm00Nkt2fSktZ35sNEVVcXswLXtBMAotekB1ZiN1aTU3KStZXnlqJEtiI1R5KyYtIUs2NCNgTj9BQ19yeDA3Xjc1QkdiSWt5dUJmRm9gWDZkfWNvYmlJPkFHCi16X3lIIXtneENEPmhvMShib05NMnRHOzgtQE1LLUg9c3F3enlfRGs8cDw8WTtnaHBocXctZD0rNDAoKGlYdlg+ZH0KLXplQypBTz87UHlpSkk3ZWdyaDVhQSp0QVNFdjBQfHNIV2R2OzM3bmtsNztHV1F2c2xFbHNoMXc+RSltVmtySzVXcgotenZ5VH5qOF8oPSo2QkY9NzFJdzw0Vz9mT3N0VXM/PUJGYVEqRGEjeGlCWHx9SzhRa0pkR316RlBxbEtMQWNyODMqCi16V2c8ZCRDXylSQFp0KDlHTWs0Vm5LYis0ZT1lbW11SlpAPlErSHpRZFZ7VE9qOyUoNyVqenArS0pTcyR8c1M5RmsKLXppPjh8XzslK01IbjYpTCVofUx4SllOJUxzam09bDJKRUd9cmd0IX12VDgxV1REP2lYTjIyb28oPlElRlckNyQkIQotenQmPyRUMElvcERIWnxBfW5tTGZ6b2s4VzN2anU7bmxBMzVULXJ+LSFNaCUtQHhwXkE2RT1WNExmTWdeaHc0bzJKCi16WkkpanNgTiZrVipnJSN3RFRafm08bldMaTFlUGl6dVd4QWpFPXNvWXZDPW1iJnRUT3h1MDVYXnE8fipaajw5d0wKLXpQPSQtWld6fjU+Y095Nn5FfXNreSROO2NgPXl8RWoyKzFaUTJmOWk0dz9oQGUyezhOTVR+ITk0bkJAaXRHdUxIfQotelhWcG9fZkxuK055PWBfNnViJXFWeHo5SU9IT1FyJm0td3xFPDJDZk9iMj1DYUlXLTY9Um9ZPzhEYnZpZ05oSGNKCi16RyNpXzIwTHM+VFB8c0c8MVQhPkhtPDZDXythXno0WW9pSj41ZGUwNVFJME02SWhlVlNLJTU+fUNFQyNNd0JIQkkKLXppSWExV3BhJmlaX3JAP3RKa0o1PGFmd31ZU3s1NFEqfEFESVI8MHJxN2p1MEV6cXtsQiR3MWdPYmJ6blFaZFpWQwotekN7ZkVzazZfQ0hNZHxQdVdMN3pEP0diaWwkMVBCKHkmWmtuX0l8WkNtT0RvIW1sITs1X1lOPWY4JmYlWExKNjlpCi16dytZcmVvWHl+SWhvPnx7LVd7blpCUCE4JlEkdH1QKkl+KGhSd1o2JSRMcCs+LVY4ODxXMXZYP0tUc0dANE1wNyoKLXpQNDNKTy0tR35VIWdKQmMwPEErZEcwPzE5elVFd2YrfT9MV1JYNn5qX1RLeGclciokLXhpVHR9WWFqdiF2Y21QKQotenFuVGgoZ3Z0V0JtTUhkbEZfOzVIWGIpdilRX3o3byg7bkpCSWk1cyZEN0RHT2toK09hLU9TdUpnT21mMlIxSS1WCi16UkwmTDZqX0RWPGhyPEI/OU1uX1Mhe0g3VWh4NE4yVGNMWn01RkZ2e1pKQT5yRzhfQVJhVUJ8LT5sTXQtLVpuRUkKLXpUSjd7VTQ7U3tqMkF5OVBUbHlTTGtacFBrU3lqRDl4QkAxMUdxej9IJn1ibTZJTlp5WGF8PHVzanREJXNqeStaYAotek9ee0FLdVdLSElVbjJTcz1OOCo5YzVmPGp5RiVjcC1eWmNiNSVGcHtnR2hNbXhYbk5iMT59eSokS1llU3Q9QlReCi16OSluOGY2OXdobzZEQzNJNGk2IypzbVdzdyM4YUFDUExGRFh2YVlwbG9ZYHJUenZedjYlYD1mWj1+dE08R3g3VTIKLXpHVnVedSVXITk0Jnp0JkwrZjNHNVdeUyhgOUdoQSRGXmd4UWFERlAlKVBGUDg0cV8kQDdIelFiNjA+fisjZCUqdAotemYlKVZfRz5EbGszfTAxWDZWOVlBMH1LSCN4K011eVBYWW03JDRCbEMqWWhJfSNnfClVaDAtdippN2dnY3YmQF5DCi16allPJWFjODBLcEpmbWhaa3dYWCRwSF8qO3QmY1FJVF8oeEY2aHQhSWljM1VkVCglN2loZlR8d3RYV0EmVjFTZjsKLXpVM1dFVWBHKCpte3JmYzVMdS1TVWY7MGdXX2dUUTUhd0tFRWsoUWopPVMyO304RlZhXjl1WUVnPVVgP1RKUyY7ZQotelp8SUdyR2hwblQ0SCQ8TjBMPlI+JWZuN2VnKyVLOWluMWV6WDNLJVlgcjZpPG1SSyFmeUUwTDNUJiUjMmU/fVdJCi16Y1NNUUU2JnYyaEdkZGZIWVImTUQyOCU1SDFzMVpRWlUlO1hAV2Yhb1RxPCYxZjstJTRgJXRMIzB5VXp7YGdUeUAKLXg4JX5WcDJfQ2U1JEU9Q3lnITJedGYkWCVfYUY0JGEtdXYrQ043dnJKX1JqVEpLWXNKdFRVVEY7e3NIfnw3JHBEegotCi1saXRlcmFsIDAKLUhjbVY/ZDAwMDAxCi0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjIxNzA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gImdkIGlzIGEgbGlicmFyeSB1c2VkIHRvIGNyZWF0ZSBQTkcsIEpQRUcsIG9yIFdCTVAgaW1hZ2VzIgotREVTQ1JJUFRJT04gPSAiVGhlIGdkIGdyYXBoaWNzIGxpYnJhcnkgYWxsb3dzIHlvdXIgY29kZSB0byBxdWlja2x5IGRyYXcgaW1hZ2VzIFwKLWNvbXBsZXRlIHdpdGggbGluZXMsIGFyY3MsIHRleHQsIG11bHRpcGxlIGNvbG9ycywgY3V0IGFuZCBwYXN0ZSBmcm9tIG90aGVyIFwKLWltYWdlcywgYW5kIGZsb29kIGZpbGxzLCBhbmQgdG8gd3JpdGUgb3V0IHRoZSByZXN1bHQgYXMgYSBQTkcgb3IgSlBFRyBmaWxlLiBcCi1UaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaW4gV2ViIGFwcGxpY2F0aW9ucywgd2hlcmUgUE5HIGFuZCBKUEVHIGFyZSB0d28gXAotb2YgdGhlIGZvcm1hdHMgYWNjZXB0ZWQgZm9yIGlubGluZSBpbWFnZXMgYnkgbW9zdCBicm93c2Vycy4gTm90ZSB0aGF0IGdkIGlzIG5vdCBcCi1hIHBhaW50IHByb2dyYW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmdkLmJpdGJ1Y2tldC5vcmcvIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzk3NjM4Y2FmZDM1ODFlYjg3YWJkMzczMzIxMzc2NjkiCi1ERVBFTkRTID0gImZyZWV0eXBlIGxpYnBuZyBqcGVnIHpsaWIgdGlmZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmdkL2xpYmdkLmdpdDticmFuY2g9R0QtMi4yIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1nY2MtdW51c2VkLWZ1bmN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDE2Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDE2Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDE2OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8uZ2l0aWdub3JlLXRoZS1uZXctdGVzdC1jYXNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0ZpeC0yOTAtVEdBLVJMRS1kZWNvZGluZy1pcy1icm9rZW4ucGF0Y2g7YXBwbHk9bm8gXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjkwNi0xLnBhdGNoO2FwcGx5PW5vIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTY5MDYtMi5wYXRjaDthcHBseT1ubyIKLQotU1JDUkVWID0gIjQ2Y2VlZjU5NzBiZjNhODQ3ZmY2MWQxYmRkZTc1MDFkNjZjMTFkMGMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAgLS13aXRoLWpwZWc9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgICAgLS13aXRoLWZyZWV0eXBlPXllcyBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZm9udGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd2VicCBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteHBtIFwKLSAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14IFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FTUFLRSA9ICdMREZMQUdTPSIke0xERkxBR1N9IicKLQotZG9fZ2l0X2FwcGx5ICgpIHsKLSAgICAgICBjZCAke1N9Ci0gICAgICAgaWYgWyAhIC1mIHRlc3RzL3RnYS90Z2FfcmVhZF9yZ2IucG5nIF07IHRoZW4KLSAgICAgICAgICAgICAgIGdpdCBhcHBseSAke1N9Ly4uL0ZpeC0yOTAtVEdBLVJMRS1kZWNvZGluZy1pcy1icm9rZW4ucGF0Y2gKLSAgICAgICAgICAgICAgIGdpdCBhcHBseSAke1N9Ly4uL0NWRS0yMDE2LTY5MDYtMS5wYXRjaAotICAgICAgICAgICAgICAgZ2l0IGFwcGx5ICR7U30vLi4vQ1ZFLTIwMTYtNjkwNi0yLnBhdGNoCi0gICAgICAgZmkKLX0KLQotZG9fcGF0Y2hfYXBwZW5kKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZ2l0X2FwcGx5JywgZCkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBjbGVhbnVwIGJ1aWxkcGF0aHMgZnJvbSBnZGxpYi5wYwotICAgIHNlZCAtaSAtZSAncyMke1NUQUdJTkdfRElSX0hPU1R9IyNnJyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nZGxpYi5wYwotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tdG9vbHMiCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLVBST1ZJREVTICs9ICIke1BOfS10b29scyIKLVJQUk9WSURFU18ke1BOfS10b29scyA9ICIke1BOfS10b29scyIKLVJERVBFTkRTXyR7UE59LXRvb2xzID0gInBlcmwgcGVybC1tb2R1bGUtc3RyaWN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkzMmJiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjQuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJnZCBpcyBhIGxpYnJhcnkgdXNlZCB0byBjcmVhdGUgUE5HLCBKUEVHLCBvciBXQk1QIGltYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBnZCBncmFwaGljcyBsaWJyYXJ5IGFsbG93cyB5b3VyIGNvZGUgdG8gcXVpY2tseSBkcmF3IGltYWdlcyBcCitjb21wbGV0ZSB3aXRoIGxpbmVzLCBhcmNzLCB0ZXh0LCBtdWx0aXBsZSBjb2xvcnMsIGN1dCBhbmQgcGFzdGUgZnJvbSBvdGhlciBcCitpbWFnZXMsIGFuZCBmbG9vZCBmaWxscywgYW5kIHRvIHdyaXRlIG91dCB0aGUgcmVzdWx0IGFzIGEgUE5HIG9yIEpQRUcgZmlsZS4gXAorVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIFdlYiBhcHBsaWNhdGlvbnMsIHdoZXJlIFBORyBhbmQgSlBFRyBhcmUgdHdvIFwKK29mIHRoZSBmb3JtYXRzIGFjY2VwdGVkIGZvciBpbmxpbmUgaW1hZ2VzIGJ5IG1vc3QgYnJvd3NlcnMuIE5vdGUgdGhhdCBnZCBpcyBub3QgXAorYSBwYWludCBwcm9ncmFtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJnZC5iaXRidWNrZXQub3JnLyIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA3Mzg0YjNhYTJlMGQzOWFmY2EwZDZjNDAyODZmNTQ1IgorCitERVBFTkRTID0gImZyZWV0eXBlIGxpYnBuZyBqcGVnIHpsaWIgdGlmZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmdkL2xpYmdkLmdpdDticmFuY2g9R0QtMi4yIFwKKyAgICAgICAgICAiCisKK1NSQ1JFViA9ICJkZTA5ODc0YjE1YTRjODg3NzJkYjM1Y2VkODQyMzMwZjVkZTIzZTc2IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWcgZ2V0dGV4dCBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgIC0td2l0aC1qcGVnPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAgICAgICAgICAgICAgIC0td2l0aC1mcmVldHlwZT15ZXMgXAorICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWZvbnRjb25maWcgXAorICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXdlYnAgXAorICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXhwbSBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteCBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRU1BS0UgPSAnTERGTEFHUz0iJHtMREZMQUdTfSInCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gZ2RsaWIucGMKKyAgICBzZWQgLWkgLWUgJ3MjJHtTVEFHSU5HX0RJUl9IT1NUfSMjZycgJHtEfSR7bGliZGlyfS9wa2djb25maWcvZ2RsaWIucGMKK30KKworUEFDS0FHRVMgKz0gIiR7UE59LXRvb2xzIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgorCitQUk9WSURFUyArPSAiJHtQTn0tdG9vbHMiCitSUFJPVklERVNfJHtQTn0tdG9vbHMgPSAiJHtQTn0tdG9vbHMiCitSREVQRU5EU18ke1BOfS10b29scyA9ICJwZXJsIHBlcmwtbW9kdWxlLXN0cmljdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYl8yMDE3LTA4LTIwLjE4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliXzIwMTctMDgtMjAuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUwNWFjMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYl8yMDE3LTA4LTIwLjE4LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiVGhlIEdOVSBwb3J0YWJpbGl0eSBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiQSBjb2xsZWN0aW9uIG9mIHNvZnR3YXJlIHN1YnJvdXRpbmVzIHdoaWNoIGFyZSBkZXNpZ25lZCB0byBcCitiZSB1c2FibGUgb24gbWFueSBvcGVyYXRpbmcgc3lzdGVtcy4gVGhlIGdvYWwgb2YgdGhlIHByb2plY3QgXAoraXMgdG8gbWFrZSBpdCBlYXN5IGZvciBmcmVlIHNvZnR3YXJlIGF1dGhvcnMgdG8gbWFrZSB0aGVpciBcCitzb2Z0d2FyZSBydW4gb24gbWFueSBvcGVyYXRpbmcgc3lzdGVtcy4gU2luY2Ugc291cmNlIGlzIGRlc2lnbmVkIFwKK3RvIGJlIGNvcGllZCBmcm9tIGdudWxpYiwgaXQgaXMgbm90IGEgbGlicmFyeSBwZXItc2UsIGFzIG11Y2ggXAorYXMgYSBjb2xsZWN0aW9uIG9mIHBvcnRhYmxlIGlkaW9tcyB0byBiZSB1c2VkIGluIG90aGVyIHByb2plY3RzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dudWxpYi8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJMR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NmEyMmE2ZTViY2NlNDVlMmM4YWMxODRmODE0MTJiNSIKK1NSQ1JFViA9ICJiMjMwMDBkZTFlNDdjN2Q1ODBlMGUyMjA5NjZkZDFlZTQyYTVlNWJjIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5zdi5nbnUub3JnL2dudWxpYjtwcm90b2NvbD1naXQgXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19pbnN0YWxsICgpIHsKKyAgICBjZCAke1N9CisgICAgZ2l0IGNoZWNrb3V0IG1hc3RlcgorICAgIGdpdCBjbG9uZSAke1N9ICR7RH0vJHtkYXRhZGlyfS9nbnVsaWIKK30KKworZG9fcGF0Y2hbbm9leGVjXSA9ICIxIgorZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgorZG9fcGFja2FnZVtub2V4ZWNdID0gIjEiCitkb19wYWNrYWdlZGF0YVtub2V4ZWNdID0gIjEiCitkb19wYWNrYWdlX3dyaXRlX2lwa1tub2V4ZWNdID0gIjEiCitkb19wYWNrYWdlX3dyaXRlX2RlYltub2V4ZWNdID0gIjEiCitkb19wYWNrYWdlX3dyaXRlX3JwbVtub2V4ZWNdID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YzdhZTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIEdOVSBwb3J0YWJpbGl0eSBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiQSBjb2xsZWN0aW9uIG9mIHNvZnR3YXJlIHN1YnJvdXRpbmVzIHdoaWNoIGFyZSBkZXNpZ25lZCB0byBcCi1iZSB1c2FibGUgb24gbWFueSBvcGVyYXRpbmcgc3lzdGVtcy4gVGhlIGdvYWwgb2YgdGhlIHByb2plY3QgXAotaXMgdG8gbWFrZSBpdCBlYXN5IGZvciBmcmVlIHNvZnR3YXJlIGF1dGhvcnMgdG8gbWFrZSB0aGVpciBcCi1zb2Z0d2FyZSBydW4gb24gbWFueSBvcGVyYXRpbmcgc3lzdGVtcy4gU2luY2Ugc291cmNlIGlzIGRlc2lnbmVkIFwKLXRvIGJlIGNvcGllZCBmcm9tIGdudWxpYiwgaXQgaXMgbm90IGEgbGlicmFyeSBwZXItc2UsIGFzIG11Y2ggXAotYXMgYSBjb2xsZWN0aW9uIG9mIHBvcnRhYmxlIGlkaW9tcyB0byBiZSB1c2VkIGluIG90aGVyIHByb2plY3RzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dudWxpYi8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJMR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGNmMzgxMGYzM2EwNjdlYTdjY2QyY2Q4ODlmZWQyMSIKLVNSQ1JFViA9ICJiNmIzZWQxZmE0YzZkZTEyOTA4YTlmMDFkMTY4OWYxNTZjM2NkNDQxIgotUFYgPSAiMC4xLjQ5NitnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc3YuZ251Lm9yZy9nbnVsaWI7cHJvdG9jb2w9Z2l0IFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgY2QgJHtTfQotICAgIGdpdCBjaGVja291dCBtYXN0ZXIKLSAgICBnaXQgY2xvbmUgJHtTfSAke0R9LyR7ZGF0YWRpcn0vZ251bGliCi19Ci0KLWRvX3BhdGNoW25vZXhlY10gPSAiMSIKLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCi1kb19jb21waWxlW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZWRhdGFbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9pcGtbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9kZWJbbm9leGVjXSA9ICIxIgotZG9fcGFja2FnZV93cml0ZV9ycG1bbm9leGVjXSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmUtZm9yLXBwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmUtZm9yLXBwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdmODU1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLUZpeC1idWlsZC1mYWlsdXJlLWZvci1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TdWJqZWN0OiBGaXggYnVpbGQgZmFpbHVyZSBmb3IgcHBjCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1GaXggdGhlIGZvbGxvd2luZyBidWlsZCBmYWlsdXJlLgotCi0gIGVycm9yOiAnc2lnaW5mb190JyBkb2VzIG5vdCBuYW1lIGEgdHlwZQotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oIGIvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaAotaW5kZXggNWQxNmZhMS4uYTliZjc3NSAxMDA2NDQKLS0tLSBhL3NyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmgKLSsrKyBiL3NyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmgKLUBAIC00NCw2ICs0NCw3IEBACi0gCi0gI2luY2x1ZGUgPHN0ZGludC5oPiAgIC8vIGZvciB1aW50cHRyX3QKLSAjaW5jbHVkZSA8c3RkbGliLmg+ICAgLy8gZm9yIE5VTEwKLSsjaW5jbHVkZSA8c2lnbmFsLmg+ICAgLy8gZm9yIHNpZ2luZm9fdAotICNpbmNsdWRlIDxncGVyZnRvb2xzL3N0YWNrdHJhY2UuaD4KLSAjaW5jbHVkZSA8YmFzZS92ZHNvX3N1cHBvcnQuaD4KLSAKLS0tIAotMi44LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MTI3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSBiNTk2MWYxN2U5ZDdmMmJjNDRkYTYxMWIzZTRiMjdjOGE2NDFmYzcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMiBTZXAgMjAxNyAwODowNzoxNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBkaXNiYWxlIGhlYXAgY2hlY2tlcnMgYW5kIGRlYnVnIGFsbG9jYXRvciBvbiBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgY29uZmlndXJlLmFjIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKKysrKyBnaXQvY29uZmlndXJlLmFjCitAQCAtNTEsNiArNTEsOCBAQCBjYXNlICIkaG9zdCIgaW4KKyAgICAqLWN5Z3dpbiopIGRlZmF1bHRfZW5hYmxlX2hlYXBfY2hlY2tlcj1ubzsgZGVmYXVsdF9lbmFibGVfY3B1X3Byb2ZpbGVyPW5vOzsKKyAgICAqLWZyZWVic2QqKSBkZWZhdWx0X2VuYWJsZV9oZWFwX2NoZWNrZXI9bm87OworICAgICotZGFyd2luKikgZGVmYXVsdF9lbmFibGVfaGVhcF9jaGVja2VyPW5vOzsKKysgICAqLW11c2wqKSBkZWZhdWx0X2VuYWJsZV9oZWFwX2NoZWNrZXI9bm87IGRlZmF1bHRfZW5hYmxlX2hlYXBfcHJvZmlsZXI9bm87CisrICAgICAgICAgICAgZGVmYXVsdF9lbmFibGVfZGVidWdhbGxvYz1ubzsgZGVmYXVsdF9lbmFibGVfbGlidW53aW5kPW5vOworIGVzYWMKKyAKKyAjIEN1cnJlbnRseSBvbmx5IGJhY2t0cmFjZSB3b3JrcyBvbiBzMzkwLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODYyMWM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSAxNTc5MTQ5NDFiZDM4ZjFhMzhiYjZiZDcyOTRjYTZjMmJjMWI4ZGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgSnVsIDIwMTcgMTU6NTE6MjggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIHdpdGggbXVzbCBsaWJjCisKK1BhdGNoIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9wdWxsLzc2NS8KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbWFsbG9jX2hvb2tfbW1hcF9saW51eC5oIHwgOCArKysrKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiNDJmZWEzLi43MGI0OWEzIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xODgsNiArMTg4LDcgQEAgQUNfSEVBREVSX1NUREMKKyBBQ19DSEVDS19UWVBFUyhbX19pbnQ2NF0pICAgICAgICMgZGVmaW5lZCBpbiBzb21lIHdpbmRvd3MgcGxhdGZvcm1zCisgQUNfQ0hFQ0tfVFlQRVMoW3N0cnVjdCBtYWxsaW5mb10sLCwgWyNpbmNsdWRlIDxtYWxsb2MuaD5dKQorIEFDX0NIRUNLX1RZUEVTKFtFbGYzMl9WZXJzeW1dLCwsIFsjaW5jbHVkZSA8ZWxmLmg+XSkgICAjIGZvciB2ZHNvX3N1cHBvcnQuaAorK0FDX0NIRUNLX0ZVTkNTKF9fc2JyaykgICAgICAgICAgIyBmb3IgaW50ZXJjZXB0aW5nIGdsaWJjIG1lbW9yeSBhbGxvY2F0b3IKKyBBQ19DSEVDS19GVU5DUyhzYnJrKSAgICAgICAgICAgICMgZm9yIHRjbWFsbG9jIHRvIGdldCBtZW1vcnkKKyBBQ19DSEVDS19GVU5DUyhnZXRldWlkKSAgICAgICAgICMgZm9yIHR1cm5pbmcgb2ZmIHNlcnZpY2VzIHdoZW4gcnVuIGFzIHJvb3QKKyBBQ19DSEVDS19GVU5DUyhmb3JrKSAgICAgICAgICAgICMgZm9yIHRoZSBwdGhyZWFkX2F0Zm9yayBzZXR1cAorZGlmZiAtLWdpdCBhL3NyYy9tYWxsb2NfaG9va19tbWFwX2xpbnV4LmggYi9zcmMvbWFsbG9jX2hvb2tfbW1hcF9saW51eC5oCitpbmRleCA3OWFjNGUzLi5kNDQ0NjM1IDEwMDc1NQorLS0tIGEvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaAorKysrIGIvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaAorQEAgLTQ2LDYgKzQ2LDEwIEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgImJhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgiCisgCisrI2lmbmRlZiBfX0dMSUJDX18KKyt0eXBlZGVmIG9mZjY0X3QgICBfX29mZjY0X3Q7CisrI2VuZGlmCisrCisgLy8gVGhlIHg4Ni0zMiBjYXNlIGFuZCB0aGUgeDg2LTY0IGNhc2UgZGlmZmVyOgorIC8vIDMyYiBoYXMgYSBtbWFwMigpIHN5c2NhbGwsIDY0YiBkb2VzIG5vdC4KKyAvLyA2NGIgYW5kIDMyYiBoYXZlIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGZvciBtbWFwKCkuCitAQCAtMTY4LDcgKzE3Miw3IEBAIGV4dGVybiAiQyIgdm9pZCogbW1hcDY0KHZvaWQgKnN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBpbnQgcHJvdCwgaW50IGZsYWdzLAorICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCistIyBpZiAhZGVmaW5lZChfX1VTRV9GSUxFX09GRlNFVDY0KSB8fCAhZGVmaW5lZChfX1JFRElSRUNUX05USCkKKysjIGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoIWRlZmluZWQoX19VU0VfRklMRV9PRkZTRVQ2NCkgfHwgIWRlZmluZWQoX19SRURJUkVDVF9OVEgpKQorIAorIGV4dGVybiAiQyIgdm9pZCogbW1hcCh2b2lkICpzdGFydCwgc2l6ZV90IGxlbmd0aCwgaW50IHByb3QsIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGZkLCBvZmZfdCBvZmZzZXQpIF9fVEhST1cgeworQEAgLTIwNiw3ICsyMTAsNyBAQCBleHRlcm4gIkMiIHZvaWQqIG1yZW1hcCh2b2lkKiBvbGRfYWRkciwgc2l6ZV90IG9sZF9zaXplLCBzaXplX3QgbmV3X3NpemUsCisgICByZXR1cm4gcmVzdWx0OworIH0KKyAKKy0jaWZuZGVmIF9fVUNMSUJDX18KKysjaWYgSEFWRV9fX1NCUksKKyAvLyBsaWJjJ3MgdmVyc2lvbjoKKyBleHRlcm4gIkMiIHZvaWQqIF9fc2JyayhwdHJkaWZmX3QgaW5jcmVtZW50KTsKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtaW5jbHVkZS1mY250bC5oLWZvci1sb2ZmX3QtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtaW5jbHVkZS1mY250bC5oLWZvci1sb2ZmX3QtZGVmaW5pdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjcwMDhhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1pbmNsdWRlLWZjbnRsLmgtZm9yLWxvZmZfdC1kZWZpbml0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gMDRlYThlMDAxNTAxOTMxZjRkYmYyMDI4OGFjYTc4NDY5NjE3YjA4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDE5OjI4OjE3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgZmNudGwuaCBmb3IgbG9mZl90IGRlZmluaXRpb24KKworRml4ZXMKK2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oOjI2NDE6MjY6IGVycm9yOiAnbG9mZl90JyBoYXMgbm90IGJlZW4gZGVjbGFyZWQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBiL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitpbmRleCA4NTM0N2EyLi43MDQzMWNhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKysrKyBiL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitAQCAtMTYyLDYgKzE2Miw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+CisgI2luY2x1ZGUgPGVuZGlhbi5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorIAorICNpZmRlZiBfX21pcHNfXworIC8qIEluY2x1ZGUgZGVmaW5pdGlvbnMgb2YgdGhlIEFCSSBjdXJyZW50bHkgaW4gdXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9kaXNhYmxlX2xpYnVud2luZF9hYXJjaDY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNjQ3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9kaXNhYmxlX2xpYnVud2luZF9hYXJjaDY0LnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Rpc2FibGUgbGlidW53aW5kIG9uIGFhcmNoNjQKKworRml4ZXMgaGFuZ3Mgd2hlbiB1c2luZyBsaWJ0Y21hbGxvYy5zbworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBnaXQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ2l0L2NvbmZpZ3VyZS5hYworQEAgLTY5LDYgKzY5LDExIEBAIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oLCBbcmUKKyAgICAgICAgICAgICAgICAgICBbZGVmYXVsdF9lbmFibGVfbGlidW53aW5kPXllcworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3RjbWFsbG9jX3BhZ2VzaXplPThdKQorIAorKyMgRGlzYWJsZSBsaWJ1bndpbmQgbGlua2luZyBvbiBhYXJjaDY0IGJ5IGRlZmF1bHQuCisrQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgsIFtyZXR1cm4gX19hYXJjaDY0X19dKV0sCisrICAgICAgICAgICAgICAgICAgW2RlZmF1bHRfZW5hYmxlX2xpYnVud2luZD1ub10sCisrICAgICAgICAgICAgICAgICAgW2RlZmF1bHRfZW5hYmxlX2xpYnVud2luZD15ZXNdKQorKworIEFDX0FSR19FTkFCTEUoW2NwdS1wcm9maWxlcl0sCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1jcHUtcHJvZmlsZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkbyBub3QgYnVpbGQgdGhlIGNwdSBwcm9maWxlcl0pXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3NnaWRlZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3NnaWRlZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTFhMjNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvc2dpZGVmLnBhdGNoCkBAIC0wLDAgKzEsMTcgQEAKK3NnaWRlZi5oIGRvZXMgbm90IGV4aXN0IG9uIG11c2wgYW5kIGl0cyBub3QgbmVlZGVkIHRvIGNvbXBpbGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworSW5kZXg6IGdpdC9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCisrKysgZ2l0L3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitAQCAtMTY0LDcgKzE2NCw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlIDxlbmRpYW4uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAKKy0jaWZkZWYgX19taXBzX18KKysjaWYgZGVmaW5lZChfX21pcHNfXykgJiYgZGVmaW5lZChfX2dsaWJjX18pCisgLyogSW5jbHVkZSBkZWZpbml0aW9ucyBvZiB0aGUgQUJJIGN1cnJlbnRseSBpbiB1c2UuICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICNpbmNsdWRlIDxzZ2lkZWZzLmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzNzgwYTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJGYXN0LCBtdWx0aS10aHJlYWRlZCBtYWxsb2MoKSBhbmQgbmlmdHkgcGVyZm9ybWFuY2UgYW5hbHlzaXMgdG9vbHMiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ3BlcmZ0b29scy8iCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2MjczMjc0MmM3M2RjNmM3ZmJlODYzMmYwNmMwNTlhIgotREVQRU5EUyA9ICJsaWJ1bndpbmQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzL2dwZXJmdG9vbHMvZ3BlcmZ0b29scy0yLjUudGFyLmd6L2FhMWVhZjk1ZGJlMmM5ODI4ZDBiZDNhMDBmNzcwZjUwL2dwZXJmdG9vbHMtMi41LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1mYWlsdXJlLWZvci1wcGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImFhMWVhZjk1ZGJlMmM5ODI4ZDBiZDNhMDBmNzcwZjUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZmYTI3NDhmMWFjZGY0NGQ3NTAyNTNlMTYwY2Y2ZTJlNzI1NzEzMjliNDJlNTYzYjQ1NWJkZTA5ZTllODUxNzMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLSMgT24gbWlwcywgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGVycm9yLgotIyAgIGRvX3BhZ2VfZmF1bHQoKTogc2VuZGluZyBTSUdTRUdWIHRvIGxzIGZvciBpbnZhbGlkIHJlYWQgYWNjZXNzIGZyb20gMDAwMDAwMDgKLSMgICBTZWdtZW50YXRpb24gZmF1bHQgKGNvcmUgZHVtcGVkKQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxwb3dlcnBjfHBvd2VycGM2NHxhcm18YWFyY2g2NCkuKi1saW51eCoiCi0jIE9uIGFhcmNoNjQsIGFkZCB0aGlzIG9wdGlvbiB0byBhdm9pZCBzeXN0ZW0gaGFuZ2luZyB3aGVuIHVzaW5nIGxpYnRjbWFsbG9jLnNvLgotRVhUUkFfT0VDT05GX2FhcmNoNjQgKz0gIi0tZGlzYWJsZS1saWJ1bndpbmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzXzIuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYWM2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjYuMS5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkZhc3QsIG11bHRpLXRocmVhZGVkIG1hbGxvYygpIGFuZCBuaWZ0eSBwZXJmb3JtYW5jZSBhbmFseXNpcyB0b29scyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2MjczMjc0MmM3M2RjNmM3ZmJlODYzMmYwNmMwNTlhIgorREVQRU5EUyArPSAibGlidW53aW5kIgorCitTUkNSRVYgPSAiYmY4NDBkZWMwNDk1ZTE3ZjVjODQwM2U2OGUxMGI5ZDZiZjA1YzU1OSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TdXBwb3J0LUF0b21pYy1vcHMtb24tY2xhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2dpZGVmLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitpbmhlcml0IGF1dG90b29scworCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIERpc2FibGUgdGh1bWIxCisjIHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyMge3N0YW5kYXJkIGlucHV0fTo0MzQ6IEVycm9yOiBsbyByZWdpc3RlciByZXF1aXJlZCAtLSBgbGRyIHBjLFtzcF0nCisjIE1ha2VmaWxlOjQ1Mzg6IHJlY2lwZSBmb3IgdGFyZ2V0ICdzcmMvYmFzZS9saWJ0Y21hbGxvY19sYS1saW51eHRocmVhZHMubG8nIGZhaWxlZAorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BtL2dwbS8wMDAxLVVzZS1zaWdlbXB0eXNldC1BUEktaW5zdGVhZC1vZi1fX3NpZ2VtcHR5c2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtLzAwMDEtVXNlLXNpZ2VtcHR5c2V0LUFQSS1pbnN0ZWFkLW9mLV9fc2lnZW1wdHlzZXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxOTgxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BtL2dwbS8wMDAxLVVzZS1zaWdlbXB0eXNldC1BUEktaW5zdGVhZC1vZi1fX3NpZ2VtcHR5c2V0LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNTJlNmNmMDUyYjFmOTM4ZmNjYTFiYzI0ZDU3OGZlMGJmZDk3Mjk4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDI1IEp1biAyMDE3IDA3OjI1OjMzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBzaWdlbXB0eXNldCBBUEkgaW5zdGVhZCBvZiBfX3NpZ2VtcHR5c2V0CisKK19fc2lnZW1wdHlzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGdsaWJjIHB1YmxpYworQVBJIGhlYWRlcnMgaW4gdXBjb21pbmcgKDIuMjYpIHJlbGVhc2Ugb253YXJkcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgc3JjL3Byb2cvZ3BtLXJvb3QueSB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Byb2cvZ3BtLXJvb3QueSBiL3NyYy9wcm9nL2dwbS1yb290LnkKK2luZGV4IDUxMjZjNjUuLjc2Yzg5NmMgMTAwNjQ0CistLS0gYS9zcmMvcHJvZy9ncG0tcm9vdC55CisrKysgYi9zcmMvcHJvZy9ncG0tcm9vdC55CitAQCAtMTE5NiwxMSArMTE5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPR19EQUVNT04gOiBMT0dfVVNFUik7CisgICAgLyogcmVhcCB5b3VyIHpvbWJpZXMgKi8KKyAgICBjaGlsZGFjdGlvbi5zYV9oYW5kbGVyPXJlYXBfY2hpbGRyZW47CistI2lmIGRlZmluZWQoX19HTElCQ19fKQorLSAgIF9fc2lnZW1wdHlzZXQoJmNoaWxkYWN0aW9uLnNhX21hc2spOworLSNlbHNlIC8qIF9fR0xJQkNfXyAqLworICAgIHNpZ2VtcHR5c2V0KCZjaGlsZGFjdGlvbi5zYV9tYXNrKTsKKy0jZW5kaWYgLyogX19HTElCQ19fICovCisgICAgY2hpbGRhY3Rpb24uc2FfZmxhZ3M9MDsKKyAgICBzaWdhY3Rpb24oU0lHQ0hMRCwmY2hpbGRhY3Rpb24sTlVMTCk7CisgCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwbS9ncG1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgppbmRleCA2OWYxMmQ5Li41MWM0ZGQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwbS9ncG1fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BtL2dwbV9naXQuYmIKQEAgLTEyLDEwICsxMiwxMiBAQAogREVQRU5EUyA9ICJuY3Vyc2VzIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGVsbWljaC9ncG07cHJvdG9jb2w9Z2l0IFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAogICAgICAgICAgICBmaWxlOi8vbm8tZG9jcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wcm9jZXNzY3JlZHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZ3BtLnNlcnZpY2UuaW4gXAotICAgICAgICAgICBmaWxlOi8vaW5pdCIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXNpZ2VtcHR5c2V0LUFQSS1pbnN0ZWFkLW9mLV9fc2lnZW1wdHlzZXQucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXAvMDAwMS1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcC8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYjRiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXAvMDAwMS1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsMTc4IEBACitGcm9tIDhhMTBiNmJkNTU2NDI2NjE2ZTkzZjE1NjM5ZjM2OWRlZmJlY2EzM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxNCBBdWcgMjAxNyAxMTo1ODo1OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXggb3V0IG9mIHRyZWUgYnVpbGRzCisKK1doZW4gYnVpbGQgZGlyIGlzIG5vdCBzYW1lIGFzIHNvdXJjZWRpciB0aGVuIHRoZSBidWlsZCBmYWlsZWQgZHVlCit0byB1c2Ugb2YgJChzcmNkaXIpIHZhcmlhYmxlIHdoaWNoIGFzc3VtZXMgc291cmNlID0gYnVpbGQgdGhlcmVmb3JlCityZXBsYWNlIHRoYXQgd2l0aCB0b3Bfc3JjZGlyCisKK0FkZGl0aW9uYWxseSBtb3ZlIHRoZSBjb25kaXRpb25hbCBhZGRpdGlvbiBvZiBzb3VyY2VzIHRvIE1ha2VmaWxlLmFtCitpbnN0ZWFkIG9mIGFkZGluZyBpdCBpbiBjb25maWd1cmUuYWMsIHNpbmNlIHRoZW4gd2UgY2FuIHVzZSB0b3Bfc3JjZGlyCit2YXJpYWJsZSB0byBhY2Nlc3MgdGhvc2Ugc291cmNlcyB0b28gb3RoZXJ3aXNlIGl0cyBub3QgcG9zc2libGUgdG8KK3NwZWNpZnkgdGhlIHJpZ2h0IGRpciBmb3IgdGhlc2Ugc291cmNlcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZFtodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL2dzb2FwMi9wYXRjaGVzLzE3MS9dCisKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrLS0KKyBnc29hcC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KKyBnc29hcC9zYW1wbGVzL2F1dG90ZXN0L01ha2VmaWxlLmFtICAgIHwgIDggKysrKy0tLS0KKyBnc29hcC9zYW1wbGVzL2RhdGFiaW5kaW5nL01ha2VmaWxlLmFtIHwgIDggKysrKy0tLS0KKyBnc29hcC93c2RsL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKysrLS0tLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMDYzMWMxOC4uYzM2ZTY5NiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjY1LDcgKzI2NSw3IEBAIGlmIHRlc3QgIngkd2l0aF9vcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgorICAgICBXU0RMMkhfRVhUUkFfRkxBR1M9Ii1EV0lUSF9PUEVOU1NMIC1EV0lUSF9HWklQIgorICAgICAjIGFuIHVnbHkgaGFjayB0byBnZXQgaHR0cGRhIGFuZCBzbWRldnAgcGx1Z2lucyB0byBjb25kaXRpb25hbGx5CisgICAgICMgY29tcGlsZSB3aXRoIHdzZGwyaCB3aGVuIE9QRU5TU0wgaXMgYXZhaWxhYmxlCistICAgIFdTREwySF9FWFRSQV9MSUJTPSIke1dTREwySF9FWFRSQV9MSUJTfSAuLi9wbHVnaW4vaHR0cGRhLmMgLi4vcGx1Z2luL3NtZGV2cC5jIC4uL3BsdWdpbi90aHJlYWRzLmMgLWxzc2wgLWxjcnlwdG8gLWx6IgorKyAgICBXU0RMMkhfRVhUUkFfTElCUz0iJHtXU0RMMkhfRVhUUkFfTElCU30gLWxzc2wgLWxjcnlwdG8gLWx6IgorICAgICBTQU1QTEVfSU5DTFVERVM9CisgICAgIFNBTVBMRV9TU0xfTElCUz0iLWxzc2wgLWxjcnlwdG8gLWx6IgorICAgICBXU0RMMkhfU09BUF9DUFBfTElCPSJsaWJnc29hcHNzbCsrLmEiCitAQCAtMjg5LDEyICsyODksMTMgQEAgZWxzZQorICAgU0FNUExFX0lOQ0xVREVTPQorICAgV1NETDJIX1NPQVBfQ1BQX0xJQj0ibGliZ3NvYXArKy5hIgorIGZpCisrQU1fQ09ORElUSU9OQUwoV0lUSF9PUEVOU1NMLCB0ZXN0ICJ4JHdpdGhfb3BlbnNzbCIgPSAieHllcyIgLWEgIngkd2l0aF9nbnV0bHMiICE9ICJ4eWVzIikKKytBQ19TVUJTVChXSVRIX09QRU5TU0wpCisgQUNfU1VCU1QoV1NETDJIX0VYVFJBX0ZMQUdTKQorIEFDX1NVQlNUKFdTREwySF9FWFRSQV9MSUJTKQorIEFDX1NVQlNUKFNBTVBMRV9JTkNMVURFUykKKyBBQ19TVUJTVChTQU1QTEVfU1NMX0xJQlMpCisgQUNfU1VCU1QoV1NETDJIX1NPQVBfQ1BQX0xJQikKKy0KKyAjIGVuYWJsZSB0aGUgY29tcGlsZSBvZiB0aGUgc2FtcGxlcworIEFDX0FSR19FTkFCTEUoc2FtcGxlcywKKyBbICAtLWVuYWJsZS1zYW1wbGVzCSAgZW5hYmxlIGNvbXBpbGUgZm9yIHRoZSBnc29hcCBzYW1wbGVzXSwKK2RpZmYgLS1naXQgYS9nc29hcC9NYWtlZmlsZS5hbSBiL2dzb2FwL01ha2VmaWxlLmFtCitpbmRleCA3MjczYjgyLi45YzBjODlmIDEwMDY0NAorLS0tIGEvZ3NvYXAvTWFrZWZpbGUuYW0KKysrKyBiL2dzb2FwL01ha2VmaWxlLmFtCitAQCAtMTMsMjYgKzEzLDI2IEBAIEFNX0NYWEZMQUdTID0gJChTT0FQQ1BQMl9ERUJVRykgLUQkKHBsYXRmb3JtKQorIEFNX0NGTEFHUyA9ICQoU09BUENQUDJfREVCVUcpIC1EJChwbGF0Zm9ybSkKKyAKKyAjIEluc3RhbGwgYWxsIHNvYXBjcHAyIGFuZCB3c2RsMmggZmlsZXMgaW50byAke3ByZWZpeH0vc2hhcmUvZ3NvYXAKKy1ub2Jhc2VfcGtnZGF0YV9EQVRBID0gJChzcmNkaXIpL2ltcG9ydC8qICQoc3JjZGlyKS9wbHVnaW4vKiAkKHNyY2RpcikvV1MvKiAkKHNyY2RpcikvY3VzdG9tLyogJChzcmNkaXIpL2V4dHJhcy8qCisrbm9iYXNlX3BrZ2RhdGFfREFUQSA9ICQodG9wX3NyY2RpcikvZ3NvYXAvaW1wb3J0LyogJCh0b3Bfc3JjZGlyKS9nc29hcC9wbHVnaW4vKiAkKHRvcF9zcmNkaXIpL2dzb2FwL1dTLyogJCh0b3Bfc3JjZGlyKS9nc29hcC9jdXN0b20vKiAkKHRvcF9zcmNkaXIpL2dzb2FwL2V4dHJhcy8qCisgCisgIyMgd2UgY2Fubm90IGJ1aWxkIHN0ZHNvYXAyLm8gZnJvbSAyIGRpZmZlcmVudCBzb3VyY2VzIChzdGRzb2FwMi5jcHAgYW5kIHN0ZHNvYXAyLmMpLCBzbyB3ZSBuZWVkIGFuIGludGVybWVkaWF0ZSB0YXJnZXQ6Cisgc3Rkc29hcDJfY2suYzogc3Rkc29hcDIuY3BwCistCSQoTE5fUykgLWYgJChzcmNkaXIpL3N0ZHNvYXAyLmNwcCBzdGRzb2FwMl9jay5jCisrCSQoTE5fUykgLWYgJCh0b3Bfc3JjZGlyKS9nc29hcC9zdGRzb2FwMi5jcHAgc3Rkc29hcDJfY2suYworIAorIHN0ZHNvYXAyX2NwcC5jcHA6IHN0ZHNvYXAyLmNwcAorLQkkKExOX1MpIC1mICQoc3JjZGlyKS9zdGRzb2FwMi5jcHAgc3Rkc29hcDJfY3BwLmNwcAorKwkkKExOX1MpIC1mICQodG9wX3NyY2RpcikvZ3NvYXAvc3Rkc29hcDIuY3BwIHN0ZHNvYXAyX2NwcC5jcHAKKyAKKyBzdGRzb2FwMl9ja19jcHAuY3BwOiBzdGRzb2FwMi5jcHAKKy0JJChMTl9TKSAtZiAkKHNyY2Rpcikvc3Rkc29hcDIuY3BwIHN0ZHNvYXAyX2NrX2NwcC5jcHAKKysJJChMTl9TKSAtZiAkKHRvcF9zcmNkaXIpL2dzb2FwL3N0ZHNvYXAyLmNwcCBzdGRzb2FwMl9ja19jcHAuY3BwCisgCisgc3Rkc29hcDJfc3NsLmM6IHN0ZHNvYXAyLmNwcAorLQkkKExOX1MpIC1mICQoc3JjZGlyKS9zdGRzb2FwMi5jcHAgc3Rkc29hcDJfc3NsLmMKKysJJChMTl9TKSAtZiAkKHRvcF9zcmNkaXIpL2dzb2FwL3N0ZHNvYXAyLmNwcCBzdGRzb2FwMl9zc2wuYworIAorIHN0ZHNvYXAyX3NzbF9jcHAuY3BwOiBzdGRzb2FwMi5jcHAKKy0JJChMTl9TKSAtZiAkKHNyY2Rpcikvc3Rkc29hcDIuY3BwIHN0ZHNvYXAyX3NzbF9jcHAuY3BwCisrCSQoTE5fUykgLWYgJCh0b3Bfc3JjZGlyKS9nc29hcC9zdGRzb2FwMi5jcHAgc3Rkc29hcDJfc3NsX2NwcC5jcHAKKyAjIyBkbyB0aGUgc2FtZSBmbyBkb20uY3BwIHNpbmNlIHdlIHdhbnQgdG8gbGluayBpdCBpbnRvIHRoZSBjcHAgbGlicyBhbmQgZG9tLmMgaW50byB0aGUgYyBsaWJzCisgZG9tX2NwcC5jcHA6IGRvbS5jcHAKKy0JJChMTl9TKSAtZiAkKHNyY2RpcikvZG9tLmNwcCBkb21fY3BwLmNwcAorKwkkKExOX1MpIC1mICQodG9wX3NyY2RpcikvZ3NvYXAvZG9tLmNwcCBkb21fY3BwLmNwcAorIAorIGxpYl9MSUJSQVJJRVMgPSBsaWJnc29hcC5hIGxpYmdzb2FwKysuYSBsaWJnc29hcGNrLmEgbGliZ3NvYXBjaysrLmEgbGliZ3NvYXBzc2wuYSBsaWJnc29hcHNzbCsrLmEKKyAKK2RpZmYgLS1naXQgYS9nc29hcC9zYW1wbGVzL2F1dG90ZXN0L01ha2VmaWxlLmFtIGIvZ3NvYXAvc2FtcGxlcy9hdXRvdGVzdC9NYWtlZmlsZS5hbQoraW5kZXggMzZhZGY1MS4uNjFlNTE0YyAxMDA2NDQKKy0tLSBhL2dzb2FwL3NhbXBsZXMvYXV0b3Rlc3QvTWFrZWZpbGUuYW0KKysrKyBiL2dzb2FwL3NhbXBsZXMvYXV0b3Rlc3QvTWFrZWZpbGUuYW0KK0BAIC02LDEzICs2LDEzIEBACisgQVVUT01BS0VfT1BUSU9OUyA9IHN1YmRpci1vYmplY3RzIGZvcmVpZ24gMS40CisgCisgQ1BQRkxBR1M9LUkkKHRvcF9zcmNkaXIpL2dzb2FwIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9wbHVnaW4KKy1BTV9MREZMQUdTPSQoQ1BQRkxBR1MpIC1JJChzcmNkaXIpIC1MJChzcmNkaXIpCisrQU1fTERGTEFHUz0kKENQUEZMQUdTKSAtSSQodG9wX3NyY2RpcikvZ3NvYXAvc2FtcGxlcy9hdXRvdGVzdCAtTCQodG9wX3NyY2RpcikvZ3NvYXAvc2FtcGxlcy9hdXRvdGVzdAorIFNPQVA9JCh0b3Bfc3JjZGlyKS9nc29hcC9zcmMvc29hcGNwcDIkKEVYRUVYVCkKKyBXU0RMPSQodG9wX3NyY2RpcikvZ3NvYXAvd3NkbC93c2RsMmgkKEVYRUVYVCkKKy1XU0RMX0ZMQUdTPS1kIC1QIC10ICQoc3JjZGlyKS90eXBlbWFwLmRhdAorK1dTRExfRkxBR1M9LWQgLVAgLXQgJCh0b3Bfc3JjZGlyKS9nc29hcC9zYW1wbGVzL2F1dG90ZXN0L3R5cGVtYXAuZGF0CisgU09BUF9GTEFHUz0tU0wgLVQgLUkkKHRvcF9zcmNkaXIpL2dzb2FwL2ltcG9ydCAtSSQodG9wX3NyY2RpcikvZ3NvYXAvY3VzdG9tCistV1NETElOUFVUPSQoc3JjZGlyKS9leGFtcGxlcy53c2RsCistU09BUEhFQURFUj0kKHNyY2RpcikvZXhhbXBsZXMuaAorK1dTRExJTlBVVD0kKHRvcF9zcmNkaXIpL2dzb2FwL3NhbXBsZXMvYXV0b3Rlc3QvZXhhbXBsZXMud3NkbAorK1NPQVBIRUFERVI9JCh0b3Bfc3JjZGlyKS9nc29hcC9zYW1wbGVzL2F1dG90ZXN0L2V4YW1wbGVzLmgKKyBTT0FQX0NQUF9TUkM9c29hcEMuY3BwIHNvYXBTZXJ2ZXIuY3BwCisgU09BUF9DUFBfTElCPSQodG9wX2J1aWxkZGlyKS9nc29hcC9saWJnc29hcCsrLmEKKyAKK2RpZmYgLS1naXQgYS9nc29hcC9zYW1wbGVzL2RhdGFiaW5kaW5nL01ha2VmaWxlLmFtIGIvZ3NvYXAvc2FtcGxlcy9kYXRhYmluZGluZy9NYWtlZmlsZS5hbQoraW5kZXggODkyZDRmZC4uODZhZDQ4MiAxMDA2NDQKKy0tLSBhL2dzb2FwL3NhbXBsZXMvZGF0YWJpbmRpbmcvTWFrZWZpbGUuYW0KKysrKyBiL2dzb2FwL3NhbXBsZXMvZGF0YWJpbmRpbmcvTWFrZWZpbGUuYW0KK0BAIC02LDEzICs2LDEzIEBACisgQVVUT01BS0VfT1BUSU9OUyA9IHN1YmRpci1vYmplY3RzIGZvcmVpZ24gMS40CisgCisgQ1BQRkxBR1M9JChTQU1QTEVfSU5DTFVERVMpIC1JJCh0b3Bfc3JjZGlyKS9nc29hcCAtSSQodG9wX3NyY2RpcikvZ3NvYXAvcGx1Z2luCistQU1fTERGTEFHUz0kKEFNX0NQUEZMQUdTKSAtSSQoc3JjZGlyKSAtTCQoc3JjZGlyKQorK0FNX0xERkxBR1M9JChBTV9DUFBGTEFHUykgLUkkKHRvcF9zcmNkaXIpL2dzb2FwL3NhbXBsZXMvZGF0YWJpbmRpbmcgLUwkKHRvcF9zcmNkaXIpL2dzb2FwL3NhbXBsZXMvZGF0YWJpbmRpbmcKKyBTT0FQPSQodG9wX3NyY2RpcikvZ3NvYXAvc3JjL3NvYXBjcHAyJChFWEVFWFQpCisgV1NETD0kKHRvcF9zcmNkaXIpL2dzb2FwL3dzZGwvd3NkbDJoJChFWEVFWFQpCistV1NETF9GTEFHUz0tZyAtdCAkKHNyY2RpcikvYWRkcmVzc3R5cGVtYXAuZGF0CisrV1NETF9GTEFHUz0tZyAtdCAkKHRvcF9zcmNkaXIpL2dzb2FwL3NhbXBsZXMvZGF0YWJpbmRpbmcvYWRkcmVzc3R5cGVtYXAuZGF0CisgU09BUF9GTEFHUz0tMCAtQ1MgLXAgYWRkcmVzcyAtSSQodG9wX3NyY2RpcikvZ3NvYXAvaW1wb3J0CistV1NETElOUFVUPSQoc3JjZGlyKS9hZGRyZXNzLnhzZAorLVNPQVBIRUFERVI9JChzcmNkaXIpL2FkZHJlc3MuaAorK1dTRExJTlBVVD0kKHRvcF9zcmNkaXIpL2dzb2FwL3NhbXBsZXMvZGF0YWJpbmRpbmcvYWRkcmVzcy54c2QKKytTT0FQSEVBREVSPSQodG9wX3NyY2RpcikvZ3NvYXAvc2FtcGxlcy9kYXRhYmluZGluZy9hZGRyZXNzLmgKKyBTT0FQX0NQUF9TUkM9YWRkcmVzc0MuY3BwCisgU09BUF9DUFBfTElCPSQodG9wX2J1aWxkZGlyKS9nc29hcC9saWJnc29hcCsrLmEKKyAKK2RpZmYgLS1naXQgYS9nc29hcC93c2RsL01ha2VmaWxlLmFtIGIvZ3NvYXAvd3NkbC9NYWtlZmlsZS5hbQoraW5kZXggYjhkYTVkYi4uOWYyYWVmYSAxMDA2NDQKKy0tLSBhL2dzb2FwL3dzZGwvTWFrZWZpbGUuYW0KKysrKyBiL2dzb2FwL3dzZGwvTWFrZWZpbGUuYW0KK0BAIC02LDE0ICs2LDE0IEBACisgQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gMS40CisgCisgIyBJTkNMVURFUz0tSSQodG9wX3NyY2RpcikvZ3NvYXAKKy0jIEFNX0xERkxBR1M9JChJTkNMVURFUykgLUkkKHNyY2RpcikgLUwkKHNyY2RpcikKKy1BTV9MREZMQUdTPS1MJChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9nc29hcCAtSSQodG9wX3NyY2RpcikvZ3NvYXAvcGx1Z2luCisrIyBBTV9MREZMQUdTPSQoSU5DTFVERVMpIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC93c2RsIC1MJCh0b3Bfc3JjZGlyKS9nc29hcC93c2RsCisrQU1fTERGTEFHUz0tTCQodG9wX3NyY2RpcikvZ3NvYXAvd3NkbCAtSSQodG9wX3NyY2RpcikvZ3NvYXAgLUkkKHRvcF9zcmNkaXIpL2dzb2FwL3BsdWdpbgorIEFNX0NQUEZMQUdTPS1JJCh0b3Bfc3JjZGlyKS9nc29hcCAtSSQodG9wX3NyY2RpcikvZ3NvYXAvcGx1Z2luCisgU09BUD0kKHRvcF9idWlsZGRpcikvZ3NvYXAvc3JjL3NvYXBjcHAyJChFWEVFWFQpCisgU09BUF9DUFBfTElCPSQodG9wX2J1aWxkZGlyKS9nc29hcC8kKFdTREwySF9TT0FQX0NQUF9MSUIpCisgU09BUF9DUFBfU1JDPXdzZGxDLmNwcAorLVNPQVBIRUFERVI9JChzcmNkaXIpL3dzZGwuaAorLVNPQVBfRkxBR1M9LVNDIC1wd3NkbCAtSSQoc3JjZGlyKSAtSSQodG9wX3NyY2RpcikvZ3NvYXAvaW1wb3J0CisrU09BUEhFQURFUj0kKHRvcF9zcmNkaXIpL2dzb2FwL3dzZGwvd3NkbC5oCisrU09BUF9GTEFHUz0tU0MgLXB3c2RsIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC93c2RsIC1JJCh0b3Bfc3JjZGlyKS9nc29hcC9pbXBvcnQKKyBCVUlMVF9TT1VSQ0VTPSQoU09BUF9DUFBfU1JDKQorICMgV1NETDJIX0VYVFJBX0ZMQUdTPS1EV0lUSF9PUEVOU1NMIC1EV0lUSF9HWklQICMgZGVmaW5lZCBpbiBjb25maWd1cmUuaW4KKyAjIFdTREwySF9FWFRSQV9MSUJTPS1sc3NsIC1sY3J5cHRvIC1seiAjIGRlZmluZWQgaW4gY29uZmlndXJlLmluCitAQCAtMjQsMTEgKzI0LDE0IEBAICQoU09BUF9DUFBfU1JDKSA6ICQoU09BUEhFQURFUikKKyAjTElCUz0KKyAKKyBiaW5fUFJPR1JBTVM9d3NkbDJoCistCisraWYgV0lUSF9PUEVOU1NMCisrd3NkbDJoX0xEQUREPSQoU09BUF9DUFBfTElCKSAkKHRvcF9zcmNkaXIpL2dzb2FwL3BsdWdpbi9odHRwZGEuYyAkKHRvcF9zcmNkaXIpL2dzb2FwL3BsdWdpbi9zbWRldnAuYyAkKHRvcF9zcmNkaXIpL2dzb2FwL3BsdWdpbi90aHJlYWRzLmMgJChXU0RMMkhfRVhUUkFfTElCUykKKytlbHNlCisrd3NkbDJoX0xEQUREPSQoU09BUF9DUFBfTElCKSAkKFdTREwySF9FWFRSQV9MSUJTKQorK2VuZGlmCisgd3NkbDJoX0NGTEFHUz0kKENfREVCVUdfRkxBR1MpICQoU09BUENQUDJfTk9fQ19MT0NBTEUpICQoV1NETDJIX0VYVFJBX0ZMQUdTKQorIHdzZGwyaF9DWFhGTEFHUz0kKENfREVCVUdfRkxBR1MpICQoU09BUENQUDJfTk9fQ19MT0NBTEUpICQoV1NETDJIX0VYVFJBX0ZMQUdTKSAkKFdTREwySF9JTVBPUlRQQVRIKQorIHdzZGwyaF9DUFBGTEFHUz0kKEFNX0NQUEZMQUdTKSAkKFNPQVBDUFAyX05PTkFNRVNQQUNFUykgLUQkKHBsYXRmb3JtKQorIHdzZGwyaF9TT1VSQ0VTPXdzZGwyaC5jcHAgd3NkbC5jcHAgd2FkbC5jcHAgc2NoZW1hLmNwcCB0eXBlcy5jcHAgc2VydmljZS5jcHAgc29hcC5jcHAgbWltZS5jcHAgd3NwLmNwcCBicGVsLmNwcCAkKFNPQVBfQ1BQX1NSQykKKy13c2RsMmhfTERBREQ9JChTT0FQX0NQUF9MSUIpICQoV1NETDJIX0VYVFJBX0xJQlMpCisgCisgQ0xFQU5GSUxFUz0gKn4gKkMuY3BwICpILmggKlN0dWIuaCAqLm5zbWFwCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwLzAwMDEtc3RkZ3NvYXAyLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwLzAwMDEtc3RkZ3NvYXAyLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcxY2JlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXAvMDAwMS1zdGRnc29hcDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIGRiMjYwZmJjN2FmNGM3M2M5OTdjNDg1YTBjNjljNjE1OTRhMGU1OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAzMCBBdWcgMjAxNyAxOTo0ODo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzdGRnc29hcDI6IEZpeCBidWlsZCB3aXRoIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdzb2FwL3N0ZHNvYXAyLmMgICB8IDIgKy0KKyBnc29hcC9zdGRzb2FwMi5jcHAgfCA0ICsrLS0KKyBnc29hcC9zdGRzb2FwMi5oICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc29hcC9zdGRzb2FwMi5jIGIvZ3NvYXAvc3Rkc29hcDIuYworaW5kZXggNThlOWRmNC4uNjIzODllMSAxMDA2NDQKKy0tLSBhL2dzb2FwL3N0ZHNvYXAyLmMKKysrKyBiL2dzb2FwL3N0ZHNvYXAyLmMKK0BAIC00NDYyLDcgKzQ0NjIsNyBAQCB0Y3BfZ2V0aG9zdChzdHJ1Y3Qgc29hcCAqc29hcCwgY29uc3QgY2hhciAqYWRkciwgc3RydWN0IGluX2FkZHIgKmluYWRkcikKKyAgICAgICByZXR1cm4gc29hcC0+ZXJyb3IgPSBTT0FQX0VPTTsKKyAgICAgcmV0dXJuIFNPQVBfT0s7CisgICB9CistI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCAoZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUikgJiYgKGRlZmluZWQoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQorKyNpZiBkZWZpbmVkKExJTlVYKSB8fCAoZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUikgJiYgKGRlZmluZWQoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQorICAgaWYgKGdldGhvc3RieW5hbWVfcihhZGRyLCAmaG9zdGVudCwgc29hcC0+YnVmLCBzaXplb2Yoc29hcC0+YnVmKSwgJmhvc3QsICZzb2FwLT5lcnJudW0pIDwgMCkKKyAgICAgaG9zdCA9IE5VTEw7CisgI2VsaWYgZGVmaW5lZChfQUlYNDMpIHx8ICgoZGVmaW5lZChUUlU2NCkgfHwgZGVmaW5lZChIUF9VWCkpICYmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1IpKQorZGlmZiAtLWdpdCBhL2dzb2FwL3N0ZHNvYXAyLmNwcCBiL2dzb2FwL3N0ZHNvYXAyLmNwcAoraW5kZXggNThlOWRmNC4uYjYzNzE2MSAxMDA2NDQKKy0tLSBhL2dzb2FwL3N0ZHNvYXAyLmNwcAorKysrIGIvZ3NvYXAvc3Rkc29hcDIuY3BwCitAQCAtNDQ2Miw3ICs0NDYyLDcgQEAgdGNwX2dldGhvc3Qoc3RydWN0IHNvYXAgKnNvYXAsIGNvbnN0IGNoYXIgKmFkZHIsIHN0cnVjdCBpbl9hZGRyICppbmFkZHIpCisgICAgICAgcmV0dXJuIHNvYXAtPmVycm9yID0gU09BUF9FT007CisgICAgIHJldHVybiBTT0FQX09LOworICAgfQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgKGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1IpICYmIChkZWZpbmVkKEZSRUVCU0QpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKSkgfHwgZGVmaW5lZChfX0FORFJPSURfXykKKysjaWYgZGVmaW5lZChMSU5VWCkgfHwgKGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1IpICYmIChkZWZpbmVkKEZSRUVCU0QpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKSkgfHwgZGVmaW5lZChfX0FORFJPSURfXykKKyAgIGlmIChnZXRob3N0YnluYW1lX3IoYWRkciwgJmhvc3RlbnQsIHNvYXAtPmJ1Ziwgc2l6ZW9mKHNvYXAtPmJ1ZiksICZob3N0LCAmc29hcC0+ZXJybnVtKSA8IDApCisgICAgIGhvc3QgPSBOVUxMOworICNlbGlmIGRlZmluZWQoX0FJWDQzKSB8fCAoKGRlZmluZWQoVFJVNjQpIHx8IGRlZmluZWQoSFBfVVgpKSAmJiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SKSkKK0BAIC0xOTY1OCw3ICsxOTY1OCw3IEBAIHNvYXBfc3RyZXJyb3Ioc3RydWN0IHNvYXAgKnNvYXApCisgICB7CisgI2lmbmRlZiBXSU4zMgorICMgaWZkZWYgSEFWRV9TVFJFUlJPUl9SCistIyAgaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgIWRlZmluZWQoX19BTkRST0lEX18pCisrIyAgaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgIWRlZmluZWQoX19BTkRST0lEX18pICYmIGRlZmluZWQoX19HTElCQ19fKQorICAgICByZXR1cm4gc3RyZXJyb3JfcihlcnIsIHNvYXAtPm1zZ2J1Ziwgc2l6ZW9mKHNvYXAtPm1zZ2J1ZikpOyAvKiBHTlUtc3BlY2lmaWMgKi8KKyAjICBlbHNlCisgICAgIHN0cmVycm9yX3IoZXJyLCBzb2FwLT5tc2didWYsIHNpemVvZihzb2FwLT5tc2didWYpKTsgLyogWFNJLWNvbXBsaWFudCAqLworZGlmZiAtLWdpdCBhL2dzb2FwL3N0ZHNvYXAyLmggYi9nc29hcC9zdGRzb2FwMi5oCitpbmRleCAwN2EzOTUyLi5jNmFjZTRjIDEwMDY0NAorLS0tIGEvZ3NvYXAvc3Rkc29hcDIuaAorKysrIGIvZ3NvYXAvc3Rkc29hcDIuaAorQEAgLTk0Nyw3ICs5NDcsNyBAQCBleHRlcm4gIkMiIHsKKyAjIGVuZGlmCisgI2VsaWYgZGVmaW5lZChTT0NLTEVOX1QpCisgIyBkZWZpbmUgU09BUF9TT0NLTEVOX1QgU09DS0xFTl9UCistI2VsaWYgZGVmaW5lZChfX3NvY2tsZW5fdF9kZWZpbmVkKSB8fCBkZWZpbmVkKF9TT0NLTEVOX1QpIHx8IGRlZmluZWQoQ1lHV0lOKSB8fCBkZWZpbmVkKEZSRUVCU0QpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoT1BFTkJTRCkgfHwgZGVmaW5lZChfX1FOWF9fKSB8fCBkZWZpbmVkKFFOWCkgfHwgZGVmaW5lZChPUzM5MCkgfHwgZGVmaW5lZChfX0FORFJPSURfXykgfHwgZGVmaW5lZChfWE9QRU5fU09VUkNFKQorKyNlbGlmIGRlZmluZWQoX19zb2NrbGVuX3RfZGVmaW5lZCkgfHwgZGVmaW5lZChfU09DS0xFTl9UKSB8fCBkZWZpbmVkKENZR1dJTikgfHwgZGVmaW5lZChGUkVFQlNEKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKE9QRU5CU0QpIHx8IGRlZmluZWQoX19RTlhfXykgfHwgZGVmaW5lZChRTlgpIHx8IGRlZmluZWQoT1MzOTApIHx8IGRlZmluZWQoX19BTkRST0lEX18pIHx8IGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgfHwgZGVmaW5lZCAoTElOVVgpCisgIyBkZWZpbmUgU09BUF9TT0NLTEVOX1Qgc29ja2xlbl90CisgI2VsaWYgZGVmaW5lZChJUklYKSB8fCBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTVU5fT1MpIHx8IGRlZmluZWQoT1BFTlNFUlZFUikgfHwgZGVmaW5lZChUUlU2NCkgfHwgZGVmaW5lZChWWFdPUktTKQorICMgZGVmaW5lIFNPQVBfU09DS0xFTl9UIGludAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRhMDhhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBnU09BUCB0b29sa2l0IHByb3ZpZGVzIGEgdW5pcXVlIFNPQVAtdG8tQy9DKysgbGFuZ3VhZ2UgYmluZGluZyBcCi1mb3IgdGhlIGRldmVsb3BtZW50IG9mIFNPQVAgV2ViIFNlcnZpY2VzIGFuZCBjbGllbnRzLiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWIzMzhiMDhiMWI2MWUwMjhlMGYzOTlhNGRlMjVlNThmIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0yLyR7QlBOfV8ke1BWfS56aXAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTcwMGQyNmZjNmZlMzA3M2QwMzgzNDllMTljMzY0MGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFlZWYxMTg1NDRmYTg0NmY0ZDJkZWEyZWVkZjkxYzg0YzQ2YTFhYmVhZmM1ZWVlM2RjZmY3ODNmNDAxNWEwMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVBSID0gInIxIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LTIuOCIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiU09BUD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vc29hcGNwcDIiCi0KLURFUEVORFMgPSAib3BlbnNzbCB6bGliIGZsZXggYmlzb24iCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdzb2FwLW5hdGl2ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgZm9yIGxpYiBpbiBsaWJnc29hcHNzbCBsaWJnc29hcHNzbCsrIGxpYmdzb2FwIGxpYmdzb2FwY2srKyBsaWJnc29hcCsrIGxpYmdzb2FwY2sKLSAgICBkbwotICAgICAgICBvZV9saWJpbnN0YWxsIC1DIGdzb2FwICRsaWIgJHtEfSR7bGliZGlyfQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gQklORElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAotfQotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd3NkbDJoICR7YmluZGlyfS9zb2FwY3BwMiIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgotUlJFQ09NTUVORFNfJHtQTn0tZGV2ID0gIiR7UE59LXN0YXRpY2RldiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjUxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguNTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg3NTg0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjUxLmJiCkBAIC0wLDAgKzEsNDQgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBnU09BUCB0b29sa2l0IHByb3ZpZGVzIGEgdW5pcXVlIFNPQVAtdG8tQy9DKysgbGFuZ3VhZ2UgYmluZGluZyBcCitmb3IgdGhlIGRldmVsb3BtZW50IG9mIFNPQVAgV2ViIFNlcnZpY2VzIGFuZCBjbGllbnRzLiIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTC0yLjAtd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00ZjQwYTk0MTM3OTE0MzE4NmY5NjAyMjQyYzNmYjcyOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEx2Ml9saWNlbnNlLnR4dDttZDU9YTMzNjcyZGJlNDkxYjY1MTc3NTBhMDM4OTA2MzUwOGIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfTIvJHtCUE59XyR7UFZ9LnppcCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGRnc29hcDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMTI5NTFkNmUxNDM1YmI1MWZhNDMyMGY0NTg4MDllYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZTdiYjI0YTllNDkyZjVjYjg2ZGFjYTM0MDU0Yzk3ODcxNTJmMWQ3YjcwYWRkMzZiNzg5ZDAzODE2ZDVmZmExIgorCitpbmhlcml0IGF1dG90b29scworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfS0yLjgiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIlNPQVA9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3NvYXBjcHAyIgorCitERVBFTkRTID0gIm9wZW5zc2wgemxpYiBmbGV4IGJpc29uIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnc29hcC1uYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorICAgIGZvciBsaWIgaW4gbGliZ3NvYXBzc2wgbGliZ3NvYXBzc2wrKyBsaWJnc29hcCBsaWJnc29hcGNrKysgbGliZ3NvYXArKyBsaWJnc29hcGNrCisgICAgZG8KKyAgICAgICAgb2VfbGliaW5zdGFsbCAtQyBnc29hcCAkbGliICR7RH0ke2xpYmRpcn0KKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IEJJTkRJUj0ke0R9JHtiaW5kaXJ9IGluc3RhbGwKK30KKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dzZGwyaCAke2JpbmRpcn0vc29hcGNwcDIiCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSIKK1JSRUNPTU1FTkRTXyR7UE59LWRldiA9ICIke1BOfS1zdGF0aWNkZXYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC8wMDAxLWJhY2t0cmFjZS1SZXBsYWNlLXN0cnVjdC11Y29udGV4dC13aXRoLXVjb250ZXh0X3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC8wMDAxLWJhY2t0cmFjZS1SZXBsYWNlLXN0cnVjdC11Y29udGV4dC13aXRoLXVjb250ZXh0X3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZmZmEyZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wLzAwMDEtYmFja3RyYWNlLVJlcGxhY2Utc3RydWN0LXVjb250ZXh0LXdpdGgtdWNvbnRleHRfdC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIGQxOTVmOGNmZTQxOTkxNTczMTI4Y2NkY2QzYTBlZDAyNjdhYTVlMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAxOTo0NDo0NiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBiYWNrdHJhY2U6IFJlcGxhY2Ugc3RydWN0IHVjb250ZXh0IHdpdGggdWNvbnRleHRfdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYWNrdHJhY2UuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFja3RyYWNlLmMgYi9zcmMvYmFja3RyYWNlLmMKK2luZGV4IDY5YmVlOTkuLmRjMzVmOGYgMTAwNjQ0CistLS0gYS9zcmMvYmFja3RyYWNlLmMKKysrKyBiL3NyYy9iYWNrdHJhY2UuYworQEAgLTQyLDcgKzQyLDcgQEAKKyAjZGVmaW5lIE1BWF9CVFNJWkUgNjQKKyAKKyB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyKGludCBuLCBzaWdpbmZvX3QgKmlzdCwgdm9pZCAqZXh0cmEpIHsKKy0gIHN0YXRpYyBzdHJ1Y3QgdWNvbnRleHQgKnB1YzsKKysgIHN0YXRpYyB1Y29udGV4dF90ICpwdWM7CisgICBzdGF0aWMgdm9pZCAqYnRpbmZvW01BWF9CVFNJWkVdOworICAgc3RhdGljIGNoYXIgKiptZXNzYWdlcyA9IE5VTEw7CisgICBzdGF0aWMgc2l6ZV90IGJ0c2l6ZSA9IDA7CitAQCAtNTgsNyArNTgsNyBAQCB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyKGludCBuLCBzaWdpbmZvX3QgKmlzdCwgdm9pZCAqZXh0cmEpIHsKKyAKKyAjZGVmaW5lIFNJQ19DQVNFKGMpIGNhc2UgYzogc3RyZXJyID0gI2MKKyAKKy0gIHB1YyA9IChzdHJ1Y3QgdWNvbnRleHQgKilleHRyYTsKKysgIHB1YyA9ICh1Y29udGV4dF90ICopZXh0cmE7CisgICBzd2l0Y2gobikgeworICAgY2FzZSBTSUdTRUdWOgorICAgICBzd2l0Y2goaXN0LT5zaV9jb2RlKSB7CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcF8wLjMtYmV0YTE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXBfMC4zLWJldGExNS5iYgppbmRleCA2MDFiN2IxLi40YTg3MWJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcF8wLjMtYmV0YTE1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wXzAuMy1iZXRhMTUuYmIKQEAgLTgsNiArOCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9oZGR0ZW1wLW5vLW5scy1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2hkZHRlbXBfMC4zLWJldGExNS01Mi5kaWZmIFwKICAgICAgICAgICAgZmlsZTovL2hkZHRlbXAtMC4zLWJldGExNS1hdXRvZGV0ZWN0LTcxNzQ3OS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJhY2t0cmFjZS1SZXBsYWNlLXN0cnVjdC11Y29udGV4dC13aXRoLXVjb250ZXh0X3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaGRkdGVtcC5kYiBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsXzEuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsXzEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RjMjJjNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbF8xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkZhc3QgYW5kIHBvcnRhYmxlIFhNTCBwYXJzZXIgYW5kIEphYmJlciBwcm90b2NvbCBsaWJyYXJ5IgotQVVUSE9SID0gIkd1cmVyIE96ZW4gPG1lZHVrZXR0byBhdCBnbWFpbC5jb20+IgotSE9NRVBBR0UgPSAiaHR0cDovL2lrc2VtZWwuZ29vZ2xlY29kZS5jb20iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkiCi1ERVBFTkRTID0gImdudXRscyIKLQotUFIgPSAicjEiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzI1ODI1LwotUE5CTEFDS0xJU1RbaWtzZW1lbF0gPz0gIk5vdCBjb21wYXRpYmxlIHdpdGggZ251dGxzIHZlcnNpb24gMy40IGN1cnJlbnRseSBpbiBvZS1jb3JlIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gImh0dHA6Ly9pa3NlbWVsLmdvb2dsZWNvZGUuY29tL2ZpbGVzLyR7QlB9LnRhci5nejtuYW1lPWFyY2hpdmUgXAotICAgICAgICAgICBmaWxlOi8vcjI1LmRpZmYiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1MzJlNzcxODE2OTRmODdhZDVlYjU5NDM1ZDExYzFjYSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjQ1OGMxYjhmYjMzNDkwNzZhNmNlY2YyNmMyOWRiMWQ1NjEzMTVkODRlMTZiZmNmYmE0MTlmMzI3ZjUwMmUyNDQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbWFnZW1hZ2ljay9pbWFnZW1hZ2lja183LjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW1hZ2VtYWdpY2svaW1hZ2VtYWdpY2tfNy4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MGNiMDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbWFnZW1hZ2ljay9pbWFnZW1hZ2lja183LjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLVNVTU1BUlkgPSAiSW1hZ2VNYWdpY2sgaXMgYW4gaW1hZ2UgY29udmVydGlvbiB0b29scyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiSW1hZ2VNYWdpY2siCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMmQ0N2E0N2JmMjUyY2EzZWQ3ZjcxMjczYjUzNjEyZSIKLSMgRklYTUU6IFRoZXJlIGFyZSBtYW55IG1vcmUgY2hlY2tlZCBsaWJyYXJpZXMuIEFsbCBzaG91bGQgYmUgYWRkZWQgb3IgZXhwbGljaXRseSBkaXNhYmxlZCB0byBnZXQgY29uc2lzdGVudCByZXN1bHRzLgotREVQRU5EUyA9ICJsY21zIGJ6aXAyIGpwZWcgbGlicG5nIGxpYnJzdmcgdGlmZiB6bGliIGZmdHcgZnJlZXR5cGUiCi0KLSMgSW1wb3J0YW50IG5vdGU6IHRhcmJhbGxzIGZvciBhbGwgcGF0Y2hzZXRzIHdpdGhpbiBhIHZlcnNpb24gYXJlIGRlbGV0ZWQgd2hlbgotIyBhIG5ldyBwYWNoc2V0IGlzIGNyZWF0ZWQuIFRvIGF2b2lkIG11bHRpcGxlIHBhdGNoZXMgZm9yIGVhY2ggcGF0Y2hzZXQsIHRyeSB0bwotIyB1cGRhdGUgdG8gdGhlIGxhc3QgcGFjaHNldCBvZiBhIHZlcnNpb24KLVBBVENIU0VUID0gIjEwIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZy9kb3dubG9hZC9yZWxlYXNlcy9JbWFnZU1hZ2ljay0ke1BWfS0ke1BBVENIU0VUfS50YXIueHogXAotIgotU1JDX1VSSVttZDVzdW1dID0gImUxY2IyM2Q5YzEwYThlZmYyMjhlZjMwZWUyODE3MTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhZDMwNmJmZDc3MzBlMTY2NWM2ZmRiNmViNDc4ZmIyYzQxZTJkYjcxYWI1NjQ1MWJiYWViZTlkZjU0NmIxZDIiCi0KLVMgPSAiJHtXT1JLRElSfS9JbWFnZU1hZ2ljay0ke1BWfS0ke1BBVENIU0VUfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotIyB4bWwgZGlzYWJsZWQgYmVjYXVzZSBpdCdzIHVzaW5nIHhtbDItY29uZmlnIC0tcHJlZml4IHRvIGRldGVybWluZSBwcmVmaXggd2hpY2ggcmV0dXJucyBqdXN0IC91c3Igd2l0aCBvdXIgbGlieG1sMgotIyBpZiBzb21lb25lIG5lZWRzIHhtbCBzdXBwb3J0IHRoZW4gZml4IGl0IGZpcnN0Ci1FWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD0gLS1wcm9ncmFtLXN1ZmZpeD0uaW03IC0td2l0aG91dC1wZXJsIC0tZGlzYWJsZS1vcGVubXAgLS13aXRob3V0LXhtbCAtLWRpc2FibGUtb3BlbmNsIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz15ZXMiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1tncmFwaHZpel0gPSAiLS13aXRoLWd2YywtLXdpdGhvdXQtZ3ZjLGdyYXBodml6IgotUEFDS0FHRUNPTkZJR1tqcDJdID0gIi0td2l0aC1qcDIsLGphc3BlciIKLVBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHoiCi1QQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItLXdpdGgtb3BlbmpwMiwtLXdpdGhvdXQtb3BlbmpwMixvcGVuanBlZyIKLVBBQ0tBR0VDT05GSUdbcGFuZ29dID0gIi0td2l0aC1wYW5nbywtLXdpdGhvdXQtcGFuZ28scGFuZ28gY2Fpcm8iCi1QQUNLQUdFQ09ORklHW3dlYnBdID0gIi0td2l0aC13ZWJwLC0td2l0aG91dC13ZWJwLGxpYndlYnAiCi1QQUNLQUdFQ09ORklHW3dtZl0gPSAiLS13aXRoLXdtZiwtLXdpdGhvdXQtd21mLGxpYndtZiIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7UFZ9L21vZHVsZXMtUTE2LyovKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7UFZ9L21vZHVsZXMtUTE2LyovKi5sYSBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7UFZ9L21vZHVsZXMtUTE2L2ZpbHRlcnMgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9JbWFnZU1hZ2ljay0ke1BWfS9tb2R1bGVzLVExNi9jb2RlcnMgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9JbWFnZU1hZ2ljay0ke1BWfS9jb25maWctUTE2KiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9JbWFnZU1hZ2ljay03ICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vSW1hZ2VNYWdpY2stJHtQVn0vbW9kdWxlcy1RMTYvKi8qLmEiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7UFZ9L21vZHVsZXMtUTE2LyovLmRlYnVnLyoiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImFuaW1hdGUgY29tcGFyZSBjb21wb3NpdGUgY29uanVyZSBjb252ZXJ0IGRpc3BsYXkgXAotICAgIGlkZW50aWZ5IGltcG9ydCBtb2dyaWZ5IG1vbnRhZ2Ugc3RyZWFtIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbYW5pbWF0ZV0gPSAiJHtiaW5kaXJ9L2FuaW1hdGUuaW03IgotQUxURVJOQVRJVkVfVEFSR0VUW2NvbXBhcmVdID0gIiR7YmluZGlyfS9jb21wYXJlLmltNyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjb21wb3NpdGVdID0gIiR7YmluZGlyfS9jb21wb3NpdGUuaW03IgotQUxURVJOQVRJVkVfVEFSR0VUW2Nvbmp1cmVdID0gIiR7YmluZGlyfS9jb25qdXJlLmltNyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjb252ZXJ0XSA9ICIke2JpbmRpcn0vY29udmVydC5pbTciCi1BTFRFUk5BVElWRV9UQVJHRVRbZGlzcGxheV0gPSAiJHtiaW5kaXJ9L2Rpc3BsYXkuaW03IgotQUxURVJOQVRJVkVfVEFSR0VUW2lkZW50aWZ5XSA9ICIke2JpbmRpcn0vaWRlbnRpZnkuaW03IgotQUxURVJOQVRJVkVfVEFSR0VUW2ltcG9ydF0gPSAiJHtiaW5kaXJ9L2ltcG9ydC5pbTciCi1BTFRFUk5BVElWRV9UQVJHRVRbbW9ncmlmeV0gPSAiJHtiaW5kaXJ9L21vZ3JpZnkuaW03IgotQUxURVJOQVRJVkVfVEFSR0VUW21vbnRhZ2VdID0gIiR7YmluZGlyfS9tb250YWdlLmltNyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtzdHJlYW1dID0gIiR7YmluZGlyfS9zdHJlYW0uaW03IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYW5pbWF0ZS4xIGNvbXBhcmUuMSBjb21wb3NpdGUuMSBjb25qdXJlLjEgXAotICAgIGNvbnZlcnQuMSBkaXNwbGF5LjEgaWRlbnRpZnkuMSBpbXBvcnQuMSBtb2dyaWZ5LjEgbW9udGFnZS4xIHN0cmVhbS4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYW5pbWF0ZS4xXSA9ICIke21hbmRpcn0vbWFuMS9hbmltYXRlLjEiCi1BTFRFUk5BVElWRV9UQVJHRVRbYW5pbWF0ZS4xXSA9ICIke21hbmRpcn0vbWFuMS9hbmltYXRlLmltNy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NvbXBhcmUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29tcGFyZS4xIgotQUxURVJOQVRJVkVfVEFSR0VUW2NvbXBhcmUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29tcGFyZS5pbTcuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjb21wb3NpdGUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29tcG9zaXRlLjEiCi1BTFRFUk5BVElWRV9UQVJHRVRbY29tcG9zaXRlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2NvbXBvc2l0ZS5pbTcuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjb25qdXJlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2Nvbmp1cmUuMSIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjb25qdXJlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2Nvbmp1cmUuaW03LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY29udmVydC4xXSA9ICIke21hbmRpcn0vbWFuMS9jb252ZXJ0LjEiCi1BTFRFUk5BVElWRV9UQVJHRVRbY29udmVydC4xXSA9ICIke21hbmRpcn0vbWFuMS9jb252ZXJ0LmltNy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2Rpc3BsYXkuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGlzcGxheS4xIgotQUxURVJOQVRJVkVfVEFSR0VUW2Rpc3BsYXkuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGlzcGxheS5pbTcuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpZGVudGlmeS4xXSA9ICIke21hbmRpcn0vbWFuMS9pZGVudGlmeS4xIgotQUxURVJOQVRJVkVfVEFSR0VUW2lkZW50aWZ5LjFdID0gIiR7bWFuZGlyfS9tYW4xL2lkZW50aWZ5LmltNy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2ltcG9ydC4xXSA9ICIke21hbmRpcn0vbWFuMS9pbXBvcnQuMSIKLUFMVEVSTkFUSVZFX1RBUkdFVFtpbXBvcnQuMV0gPSAiJHttYW5kaXJ9L21hbjEvaW1wb3J0LmltNy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW21vZ3JpZnkuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW9ncmlmeS4xIgotQUxURVJOQVRJVkVfVEFSR0VUW21vZ3JpZnkuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW9ncmlmeS5pbTcuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVttb250YWdlLjFdID0gIiR7bWFuZGlyfS9tYW4xL21vbnRhZ2UuMSIKLUFMVEVSTkFUSVZFX1RBUkdFVFttb250YWdlLjFdID0gIiR7bWFuZGlyfS9tYW4xL21vbnRhZ2UuaW03LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RyZWFtLjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0cmVhbS4xIgotQUxURVJOQVRJVkVfVEFSR0VUW3N0cmVhbS4xXSA9ICIke21hbmRpcn0vbWFuMS9zdHJlYW0uaW03LjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ltYWdlbWFnaWNrL2ltYWdlbWFnaWNrXzcuMC43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbWFnZW1hZ2ljay9pbWFnZW1hZ2lja183LjAuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Njk1MzRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbWFnZW1hZ2ljay9pbWFnZW1hZ2lja183LjAuNy5iYgpAQCAtMCwwICsxLDgyIEBACitTVU1NQVJZID0gIkltYWdlTWFnaWNrIGlzIGFuIGltYWdlIGNvbnZlcnRpb24gdG9vbHMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkltYWdlTWFnaWNrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGFkNWE5OGYxNzNmZDNmYTY5NThhMWE1OGM2MTMxYzEiCisjIEZJWE1FOiBUaGVyZSBhcmUgbWFueSBtb3JlIGNoZWNrZWQgbGlicmFyaWVzLiBBbGwgc2hvdWxkIGJlIGFkZGVkIG9yIGV4cGxpY2l0bHkgZGlzYWJsZWQgdG8gZ2V0IGNvbnNpc3RlbnQgcmVzdWx0cy4KK0RFUEVORFMgPSAibGNtcyBiemlwMiBqcGVnIGxpYnBuZyBsaWJyc3ZnIHRpZmYgemxpYiBmZnR3IGZyZWV0eXBlIgorCitCQVNFX1BWIDo9ICIke1BWfSIKK1BWIC49ICJfNyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9JbWFnZU1hZ2ljay9JbWFnZU1hZ2ljay5naXQgIgorU1JDUkVWID0gImUxMjYwMmIzOWI1ZTc3ODI0MGQyODZiNmY5YmJiYzBmZTNmYjI2YzUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKKyMgeG1sIGRpc2FibGVkIGJlY2F1c2UgaXQncyB1c2luZyB4bWwyLWNvbmZpZyAtLXByZWZpeCB0byBkZXRlcm1pbmUgcHJlZml4IHdoaWNoIHJldHVybnMganVzdCAvdXNyIHdpdGggb3VyIGxpYnhtbDIKKyMgaWYgc29tZW9uZSBuZWVkcyB4bWwgc3VwcG9ydCB0aGVuIGZpeCBpdCBmaXJzdAorRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9IC0tcHJvZ3JhbS1zdWZmaXg9LmltNyAtLXdpdGhvdXQtcGVybCAtLWRpc2FibGUtb3Blbm1wIC0td2l0aG91dC14bWwgLS1kaXNhYmxlLW9wZW5jbCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9eWVzIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbZ3JhcGh2aXpdID0gIi0td2l0aC1ndmMsLS13aXRob3V0LWd2YyxncmFwaHZpeiIKK1BBQ0tBR0VDT05GSUdbanAyXSA9ICItLXdpdGgtanAyLCxqYXNwZXIiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6IgorUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLS13aXRoLW9wZW5qcDIsLS13aXRob3V0LW9wZW5qcDIsb3BlbmpwZWciCitQQUNLQUdFQ09ORklHW3BhbmdvXSA9ICItLXdpdGgtcGFuZ28sLS13aXRob3V0LXBhbmdvLHBhbmdvIGNhaXJvIgorUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItLXdpdGgtd2VicCwtLXdpdGhvdXQtd2VicCxsaWJ3ZWJwIgorUEFDS0FHRUNPTkZJR1t3bWZdID0gIi0td2l0aC13bWYsLS13aXRob3V0LXdtZixsaWJ3bWYiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4dCIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9JbWFnZU1hZ2ljay0ke0JBU0VfUFZ9L2NvbmZpZy1RMTYqIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L0ltYWdlTWFnaWNrLTciCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7QkFTRV9QVn0vbW9kdWxlcy1RMTYvKi8qLmEiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L0ltYWdlTWFnaWNrLSR7QkFTRV9QVn0vbW9kdWxlcy1RMTYvKi8uZGVidWcvKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiYW5pbWF0ZSBjb21wYXJlIGNvbXBvc2l0ZSBjb25qdXJlIGNvbnZlcnQgZGlzcGxheSBcCisgICAgaWRlbnRpZnkgaW1wb3J0IG1vZ3JpZnkgbW9udGFnZSBzdHJlYW0iCisKK0FMVEVSTkFUSVZFX1RBUkdFVFthbmltYXRlXSA9ICIke2JpbmRpcn0vYW5pbWF0ZS5pbTciCitBTFRFUk5BVElWRV9UQVJHRVRbY29tcGFyZV0gPSAiJHtiaW5kaXJ9L2NvbXBhcmUuaW03IgorQUxURVJOQVRJVkVfVEFSR0VUW2NvbXBvc2l0ZV0gPSAiJHtiaW5kaXJ9L2NvbXBvc2l0ZS5pbTciCitBTFRFUk5BVElWRV9UQVJHRVRbY29uanVyZV0gPSAiJHtiaW5kaXJ9L2Nvbmp1cmUuaW03IgorQUxURVJOQVRJVkVfVEFSR0VUW2NvbnZlcnRdID0gIiR7YmluZGlyfS9jb252ZXJ0LmltNyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtkaXNwbGF5XSA9ICIke2JpbmRpcn0vZGlzcGxheS5pbTciCitBTFRFUk5BVElWRV9UQVJHRVRbaWRlbnRpZnldID0gIiR7YmluZGlyfS9pZGVudGlmeS5pbTciCitBTFRFUk5BVElWRV9UQVJHRVRbaW1wb3J0XSA9ICIke2JpbmRpcn0vaW1wb3J0LmltNyIKK0FMVEVSTkFUSVZFX1RBUkdFVFttb2dyaWZ5XSA9ICIke2JpbmRpcn0vbW9ncmlmeS5pbTciCitBTFRFUk5BVElWRV9UQVJHRVRbbW9udGFnZV0gPSAiJHtiaW5kaXJ9L21vbnRhZ2UuaW03IgorQUxURVJOQVRJVkVfVEFSR0VUW3N0cmVhbV0gPSAiJHtiaW5kaXJ9L3N0cmVhbS5pbTciCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJhbmltYXRlLjEgY29tcGFyZS4xIGNvbXBvc2l0ZS4xIGNvbmp1cmUuMSBcCisgICAgY29udmVydC4xIGRpc3BsYXkuMSBpZGVudGlmeS4xIGltcG9ydC4xIG1vZ3JpZnkuMSBtb250YWdlLjEgc3RyZWFtLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthbmltYXRlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2FuaW1hdGUuMSIKK0FMVEVSTkFUSVZFX1RBUkdFVFthbmltYXRlLjFdID0gIiR7bWFuZGlyfS9tYW4xL2FuaW1hdGUuaW03LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY29tcGFyZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb21wYXJlLjEiCitBTFRFUk5BVElWRV9UQVJHRVRbY29tcGFyZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb21wYXJlLmltNy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NvbXBvc2l0ZS4xXSA9ICIke21hbmRpcn0vbWFuMS9jb21wb3NpdGUuMSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjb21wb3NpdGUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29tcG9zaXRlLmltNy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2Nvbmp1cmUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29uanVyZS4xIgorQUxURVJOQVRJVkVfVEFSR0VUW2Nvbmp1cmUuMV0gPSAiJHttYW5kaXJ9L21hbjEvY29uanVyZS5pbTcuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjb252ZXJ0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2NvbnZlcnQuMSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjb252ZXJ0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2NvbnZlcnQuaW03LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGlzcGxheS4xXSA9ICIke21hbmRpcn0vbWFuMS9kaXNwbGF5LjEiCitBTFRFUk5BVElWRV9UQVJHRVRbZGlzcGxheS4xXSA9ICIke21hbmRpcn0vbWFuMS9kaXNwbGF5LmltNy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2lkZW50aWZ5LjFdID0gIiR7bWFuZGlyfS9tYW4xL2lkZW50aWZ5LjEiCitBTFRFUk5BVElWRV9UQVJHRVRbaWRlbnRpZnkuMV0gPSAiJHttYW5kaXJ9L21hbjEvaWRlbnRpZnkuaW03LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW1wb3J0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2ltcG9ydC4xIgorQUxURVJOQVRJVkVfVEFSR0VUW2ltcG9ydC4xXSA9ICIke21hbmRpcn0vbWFuMS9pbXBvcnQuaW03LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbW9ncmlmeS4xXSA9ICIke21hbmRpcn0vbWFuMS9tb2dyaWZ5LjEiCitBTFRFUk5BVElWRV9UQVJHRVRbbW9ncmlmeS4xXSA9ICIke21hbmRpcn0vbWFuMS9tb2dyaWZ5LmltNy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21vbnRhZ2UuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW9udGFnZS4xIgorQUxURVJOQVRJVkVfVEFSR0VUW21vbnRhZ2UuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW9udGFnZS5pbTcuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzdHJlYW0uMV0gPSAiJHttYW5kaXJ9L21hbjEvc3RyZWFtLjEiCitBTFRFUk5BVElWRV9UQVJHRVRbc3RyZWFtLjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0cmVhbS5pbTcuMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzL2lub3RpZnktbm9zeXMtZml4LXN5c3RlbS1jYWxsLW51bWJlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzL2lub3RpZnktbm9zeXMtZml4LXN5c3RlbS1jYWxsLW51bWJlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWI4OTBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvaW5vdGlmeS1ub3N5cy1maXgtc3lzdGVtLWNhbGwtbnVtYmVyLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK2lub3RpZnktdG9vbHM6IGZpeCBfX05SX2lub3RpZnlfYWRkX3dhdGNoIHN5c3RlbSBjYWxsIG51bWJlciBvbiBfTUlQU19TSU1fQUJJNjQKKworVGhlIGNvcnJlY3QgdmFsdWUgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGRlZmluZWQgaW4KK2xpbnV4L2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3VuaXN0ZC5oCisKK1Vwc3RyZWFtLVN0YXR1czogU3VtbWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnZvaWNpbGFzL2lub3RpZnktdG9vbHMvcHVsbC83MV0KKworU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaCB8ICAgIDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmggYi9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmgKK2luZGV4IGRiNzZiMmMuLjVmN2IxMWIgMTAwNjQ0CistLS0gYS9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmgKKysrKyBiL2xpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaAorQEAgLTEwMCw4ICsxMDAsOCBAQCBzdHJ1Y3QgaW5vdGlmeV9ldmVudCB7CisgIyBlbmRpZgorICMgaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkk2NAorICMgIGRlZmluZSBfX05SX2lub3RpZnlfaW5pdCAoX19OUl9MaW51eCArIDI0MykKKy0jICBkZWZpbmUgX19OUl9pbm90aWZ5X2FkZF93YXRjaCAoX19OUl9MaW51eCArIDI0MykKKy0jICBkZWZpbmUgX19OUl9pbm90aWZ5X3JtX3dhdGNoIChfX05SX0xpbnV4ICsgMjQzKQorKyMgIGRlZmluZSBfX05SX2lub3RpZnlfYWRkX3dhdGNoIChfX05SX0xpbnV4ICsgMjQ0KQorKyMgIGRlZmluZSBfX05SX2lub3RpZnlfcm1fd2F0Y2ggKF9fTlJfTGludXggKyAyNDUpCisgIyBlbmRpZgorICMgaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9OQUJJMzIKKyAjICBkZWZpbmUgX19OUl9pbm90aWZ5X2luaXQgKF9fTlJfTGludXggKyAyNDcpCistLSAKKzEuNy4xMC40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzX2dpdC5iYgppbmRleCBhOGVmNTU3Li5lZmM3NTNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29sc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHNfZ2l0LmJiCkBAIC0xMCw2ICsxMCw3IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ydm9pY2lsYXMvJHtCUE59IFwKICAgICAgICAgICAgZmlsZTovL2lub3RpZnl3YWl0LWZpeC1jb21waWxlLWVycm9yLXdpdGgtR0NDLTYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5vdGlmeS1ub3N5cy1maXgtc3lzdGVtLWNhbGwtbnVtYmVyLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2gKaW5kZXggMmZhN2M2OC4uMzMxMTZiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbC9maXhfc3lzdGVtZF9wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWwvZml4X3N5c3RlbWRfcGF0aC5wYXRjaApAQCAtNiwxMTUgKzYsMTEgQEAKIAogU2lnbmVkLW9mZi1CeTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CiAKLUluZGV4OiBpcG1pdXRpbC0yLjkuNi9jb25maWd1cmUKK0luZGV4OiBpcG1pdXRpbC0zLjAuNS9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcG1pdXRpbC0yLjkuNi5vcmlnL2NvbmZpZ3VyZQotKysrIGlwbWl1dGlsLTIuOS42L2NvbmZpZ3VyZQotQEAgLTc5Miw3ICs3OTIsNiBAQCBMVExJQk9CSlMKLSBMSUJPQkpTCi0gcGtnY29uZmlnZGlyCi0gU0hSX0xJTksKLS1TWVNURU1EX0RJUgotIENST1NTX0xGTEFHUwotIENST1NTX0NGTEFHUwotIFNVQkRJUl9TCi1AQCAtOTk5LDcgKzk5OCw3IEBAIHBzZGlyPScke2RvY2Rpcn0nCi0gbGliZGlyPScke2V4ZWNfcHJlZml4fS9saWInCi0gbG9jYWxlZGlyPScke2RhdGFyb290ZGlyfS9sb2NhbGUnCi0gbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4nCi0tCi0rc3lzdGVtZGRpcj0nJHtkYXRhcm9vdGRpcn0vaXBtaXV0aWwnCi0gYWNfcHJldj0KLSBhY19kYXNoZGFzaD0KLSBmb3IgYWNfb3B0aW9uCi1AQCAtMTU5NCw3ICsxNTkzLDEwIEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1lbmFibGUtc3RhbmRhbG9uZSAgICBidWlsZCBzdGFuZGFsb25lLCB3aXRoIG5vIEdQTCBvciBMYW5QbHVzIGxpYnMuCi0gICAtLWVuYWJsZS1saWJzZW5zb3JzCSBidWlsZCBsaWJpcG1pdXRpbCB3aXRoIHNlbnNvciBtb2R1bGVzIFtkZWZhdWx0PW5vXQotICAgLS1lbmFibGUtZ3BsICAgICAgICAgICBidWlsZCB3aXRoIHNvbWUgR1BMIGNvZGUgW2RlZmF1bHQ9bm9dCi0tICAtLWVuYWJsZS1zeXN0ZW1kICAgICAgIGVuYWJsZSBzeXN0ZW1kIHNlcnZpY2UgdHlwZT1ub3RpZnkgc3VwcG9ydCBhbmQgJV91bml0ZGlyIFtkZWZhdWx0PWRpc2FibGVkXQotKyAgLS1lbmFibGUtc3lzdGVtZFs9c3lzdGVtZGRpcl0gICAgICBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlLiAgSWYgJ3llcycKLSsgICAgICAgICAgICAgICAgcHJvYmUgdGhlIHN5c3RlbSBmb3IgdW5pdCBkaXJlY3RvcnkuCi0rICAgICAgICAgICAgICAgIElmIGEgcGF0aCBpcyBzcGVjaWZpZWQsIGFzc3VtZSB0aGF0Ci0rICAgICAgICAgICAgICAgIGlzIGEgdmFsaWQgaW5zdGFsbCBwYXRoLiAgW2RlZmF1bHQ9ZGlzYWJsZWRdCi0gCi0gT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJHPXllc10KLUBAIC0xMjk4MCw3ICsxMjk4Miw2IEBAIENST1NTX0xGTEFHUz0iIgotIENST1NTX0NGTEFHUz0iIgotIExJQlNFTlNPUlM9IiIKLSBTQU0yT0JKPSJpc2Vuc29yMi5vIGlldmVudHMyLm8iCi0tU1lTVEVNRF9ESVI9L3Vzci9zaGFyZS9pcG1pdXRpbAotIAotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS11c2VmbGFncyB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfdXNlZmxhZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KLUBAIC0xMzAzMiwzMSArMTMwMzMsNDMgQEAgaWYgdGVzdCAiJHtlbmFibGVfZ3BsK3NldH0iID0gc2V0OyB0aGVuCi0gICAgIGZpCi0gCi0gZmkKLS0KLSsjCi0rIyBDaGVjayBmb3Igc3lzdGVtZCB1bml0IGZpbGVzIGRpcmVlY3RvcnkgZXhpc3RzIGlmIHVuaXQgZmlsZSBpbnN0YWxsYXRpb24KLSsjIGlzIHJlcXVlc3RlZAotKyMKLSAKLSAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc3lzdGVtZCB3YXMgZ2l2ZW4uCi0taWYgdGVzdCAiJHtlbmFibGVfc3lzdGVtZCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZW5hYmxldmFsPSRlbmFibGVfc3lzdGVtZDsKLS1maQotLQotLWlmIHRlc3QgIngkZW5hYmxlX3N5c3RlbWQiID0gInh5ZXMiOyB0aGVuCi0tICAgR1BMX0NGTEFHUz0iJEdQTF9DRkxBR1MgLURFTkFCTEVfU1lTVEVNRCIKLS0gICAjIGlmIHN5c3RlbWQgZW5hYmxlZCwgaW5zdGFsbCBzZXJ2aWNlIHNjcmlwdHMgaW4gdW5pdGRpcgotLSAgIFNZU1RFTURfRElSPWBycG0gLS1ldmFsICIle191bml0ZGlyfSJgCi0tZWxzZQotLSAgICMgb3RoZXJ3aXNlIGluc3RhbGwgdGhlIHN5c3RlbWQgc2VydmljZSBzY3JpcHRzIGluIHRoZSBkYXRhIGRpcgotLSAgaWYgdGVzdCAgIngkc3lzbmFtZSIgPSAieERhcndpbiIgOyB0aGVuCi0tICAgICMgTWFjT1MgJ3doaWNoJyBjb21tYW5kIHJldHVybnMgMCBhbHdheXMKLS0gICAgU1lTVEVNRF9ESVI9L3Vzci9zaGFyZS9pcG1pdXRpbAotLSAgZWxzZQotK2lmIHRlc3QgIiR7ZW5hYmxlX3N5c3RlbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kZW5hYmxlX3N5c3RlbWQ7IGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotKyAgR1BMX0NGTEFHUz0iJEdQTF9DRkxBR1MgLURFTkFCTEVfU1lTVEVNRCIKLSsgIGlmIHRlc3QgLXogIiRzeXN0ZW1kZGlyIjsgdGhlbgotKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGxvY2F0aW9uIG9mIHRoZSBzeXN0ZW1kIHVuaXQgZmlsZXMgZGlyZWN0b3J5IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBsb2NhdGlvbiBvZiB0aGUgc3lzdGVtZCB1bml0IGZpbGVzIGRpcmVjdG9yeS4uLiAiID4mNjsgfQotKyAgICBfcnBtZGlyID0gIiIKLSAgICAgd2hpY2ggcnBtID4vZGV2L251bGwgMj4mMQotICAgICBpZiB0ZXN0ICAkPyAtZXEgMCA7IHRoZW4KLS0gICAgICAgZGF0YWQ9YHJwbSAtLWV2YWwgIiV7X2RhdGFkaXJ9ImAKLS0gICAgICAgU1lTVEVNRF9ESVI9JHtkYXRhZH0vaXBtaXV0aWwKLS0gICAgZWxzZQotLSAgICAgICBTWVNURU1EX0RJUj0vdXNyL3NoYXJlL2lwbWl1dGlsCi0rICAgICAgX3JwbWRpciA9IGBycG0gLS1ldmFsICIle191bml0ZGlyfSJgCi0gICAgIGZpCi0rICAgIGZvciBzeXN0ZW1kX2QgaW4gJHtkYXRhZGlyfS91c3Ivc2hhcmUvaXBtaXV0aWwgJHtfcnBtZGlyfSAvdXNyL3NoYXJlL2lwbWl1dGlsOyBkbwotKyAgICAgIGlmIHRlc3QgLXogIiRzeXN0ZW1kZGlyIjsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAtZCAiJHN5c3RlbWRfZCI7IHRoZW4KLSsgICAgICAgICAgc3lzdGVtZGRpcj0iJHN5c3RlbWRfZCIKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZG9uZQotICAgZmkKLSsgIGlmIHRlc3QgLW4gIiRzeXN0ZW1kZGlyIjsgdGhlbgotKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHN5c3RlbWRkaXIiID4mNQotKyRhc19lY2hvICIkc3lzdGVtZGRpciIgPiY2OyB9Ci0rICBlbHNlCi0rICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub3QgZm91bmQiID4mNQotKyRhc19lY2hvICJub3QgZm91bmQiID4mNjsgfQotKyBmaQotK2Vsc2UKLSsgaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vOyB0aGVuCi0rICBzeXN0ZW1kZGlyPSR3aXRodmFsCi0rIGZpCi0rZmkKLSBmaQotIAotIGNhc2UgIiRhcmNobSIgaW4KLUluZGV4OiBpcG1pdXRpbC0yLjkuNi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcG1pdXRpbC0yLjkuNi5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGlwbWl1dGlsLTIuOS42L2NvbmZpZ3VyZS5hYwotQEAgLTE0MCw3ICsxNDAsNiBAQCBDUk9TU19MRkxBR1M9IiIKKy0tLSBpcG1pdXRpbC0zLjAuNS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGlwbWl1dGlsLTMuMC41L2NvbmZpZ3VyZS5hYworQEAgLTE0OSw3ICsxNDksNiBAQCBDUk9TU19MRkxBR1M9IiIKICBDUk9TU19DRkxBR1M9IiIKICBMSUJTRU5TT1JTPSIiCiAgU0FNMk9CSj0iaXNlbnNvcjIubyBpZXZlbnRzMi5vIgpAQCAtMTIyLDcgKzE4LDcgQEAKICAKICBBQ19BUkdfRU5BQkxFKFt1c2VmbGFnc10sCiAgICAgIFsgIC0tZW5hYmxlLXVzZWZsYWdzICAgIGluY2x1ZGUgZW52aXJvbm1lbnQgQ0ZMQUdTIGFuZCBMREZMQUdTLl0sCi1AQCAtMTkxLDI1ICsxOTAsNDIgQEAgQUNfQVJHX0VOQUJMRShbZ3BsXSwKK0BAIC0yMDAsMjkgKzE5OSw0MiBAQCBBQ19BUkdfRU5BQkxFKFtncGxdLAogIAogIGRubCBEb2VzIHRoaXMgTGludXggaGF2ZSBzeXN0ZW1kIGVuYWJsZWQ/ICBPdGhlcndpc2UgdXNlIHN5c3YgaW5pdC4KICBBQ19BUkdfRU5BQkxFKFtzeXN0ZW1kXSwKQEAgLTEzMCw3ICsyNiwxMiBAQAogLWlmIHRlc3QgIngkZW5hYmxlX3N5c3RlbWQiID0gInh5ZXMiOyB0aGVuCiAtICAgR1BMX0NGTEFHUz0iJEdQTF9DRkxBR1MgLURFTkFCTEVfU1lTVEVNRCIKIC0gICAjIGlmIHN5c3RlbWQgZW5hYmxlZCwgaW5zdGFsbCBzZXJ2aWNlIHNjcmlwdHMgaW4gdW5pdGRpcgotLSAgIFNZU1RFTURfRElSPWBycG0gLS1ldmFsICIle191bml0ZGlyfSJgCistICAgd2hpY2ggcnBtID4vZGV2L251bGwgMj4mMQorLSAgIGlmIHRlc3QgICQ/IC1lcSAwIDsgdGhlbgorLQlTWVNURU1EX0RJUj1gcnBtIC0tZXZhbCAiJXtfdW5pdGRpcn0iYAorLSAgIGVsc2UKKy0gICAgU1lTVEVNRF9ESVI9L3Vzci9zaGFyZS9pcG1pdXRpbAorLSAgIGZpCiArICAgIFsgIC0tZW5hYmxlLXN5c3RlbWRbPXN5c3RlbWRkaXJdICAgICAgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZS4gIElmICd5ZXMnCiArICAgICAgICBwcm9iZSB0aGUgc3lzdGVtIGZvciB1bml0IGRpcmVjdG9yeS4KICsgICAgICAgIElmIGEgcGF0aCBpcyBzcGVjaWZpZWQsIGFzc3VtZSB0aGF0CkBAIC0xNjQsMTYgKzY1LDE1IEBACiArCWZpCiAgZWxzZQogLSAgICMgb3RoZXJ3aXNlIGluc3RhbGwgdGhlIHN5c3RlbWQgc2VydmljZSBzY3JpcHRzIGluIHRoZSBkYXRhIGRpcgotLSAgaWYgdGVzdCAgIngkc3lzbmFtZSIgPSAieERhcndpbiIgOyB0aGVuCi0tICAgICMgTWFjT1MgJ3doaWNoJyBjb21tYW5kIHJldHVybnMgMCBhbHdheXMKLS0gICAgU1lTVEVNRF9ESVI9L3Vzci9zaGFyZS9pcG1pdXRpbAotLSAgZWxzZQotLSAgICB3aGljaCBycG0gPi9kZXYvbnVsbCAyPiYxCi0tICAgIGlmIHRlc3QgICQ/IC1lcSAwIDsgdGhlbgotLSAgICAgICBkYXRhZD1gcnBtIC0tZXZhbCAiJXtfZGF0YWRpcn0iYAotLSAgICAgICBTWVNURU1EX0RJUj0ke2RhdGFkfS9pcG1pdXRpbAotLSAgICBlbHNlCi0tICAgICAgIFNZU1RFTURfRElSPS91c3Ivc2hhcmUvaXBtaXV0aWwKKy0gIFNZU1RFTURfRElSPS91c3Ivc2hhcmUvaXBtaXV0aWwKKy0gIGlmIHRlc3QgIngkc3lzbmFtZSIgIT0gInhEYXJ3aW4iIDsgdGhlbgorLSAgICBpZiB0ZXN0ICAieCRvcyIgIT0gInhocHV4IiA7IHRoZW4KKy0gICAgICAjIE1hY09TIGFuZCBIUC1VWDogJ3doaWNoJyBjb21tYW5kIHJldHVybnMgMCBhbHdheXMKKy0gICAgICB3aGljaCBycG0gPi9kZXYvbnVsbCAyPiYxCistICAgICAgaWYgdGVzdCAgJD8gLWVxIDAgOyB0aGVuCistICAgICAgICAgZGF0YWQ9YHJwbSAtLWV2YWwgIiV7X2RhdGFkaXJ9ImAKKy0gICAgICAgICBTWVNURU1EX0RJUj0ke2RhdGFkfS9pcG1pdXRpbAorLSAgICAgIGZpCiAtICAgIGZpCiAtICBmaQogKwlpZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm87IHRoZW4KQEAgLTE4Myw3ICs4Myw3IEBACiAgZmkKICAKICBkbmwgc3RhcnQgbWFpbiBsb2dpYwotQEAgLTQ4MSw3ICs0OTcsNyBAQCBBQ19TVUJTVChJTlNfTElCKQorQEAgLTUyOCw3ICs1NDAsNyBAQCBBQ19TVUJTVChJTlNfTElCKQogIEFDX1NVQlNUKFNVQkRJUl9TKQogIEFDX1NVQlNUKENST1NTX0NGTEFHUykKICBBQ19TVUJTVChDUk9TU19MRkxBR1MpCkBAIC0xOTIsNzQgKzkyLDEwIEBACiAgQUNfU1VCU1QoU0hSX0xJTkspCiAgQUNfU1VCU1QocGtnY29uZmlnZGlyKQogIAotSW5kZXg6IGlwbWl1dGlsLTIuOS42L01ha2VmaWxlLmluCitJbmRleDogaXBtaXV0aWwtMy4wLjUvc2NyaXB0cy9NYWtlZmlsZS5hbQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwbWl1dGlsLTIuOS42Lm9yaWcvTWFrZWZpbGUuaW4KLSsrKyBpcG1pdXRpbC0yLjkuNi9NYWtlZmlsZS5pbgotQEAgLTE4Miw3ICsxODIsNyBAQCBTSEVMTCA9IEBTSEVMTEAKLSBTSFJfTElOSyA9IEBTSFJfTElOS0AKLSBTVFJJUCA9IEBTVFJJUEAKLSBTVUJESVJfUyA9IEBTVUJESVJfU0AKLS1TWVNURU1EX0RJUiA9IEBTWVNURU1EX0RJUkAKLStTWVNURU1EX0RJUiA9IEBzeXN0ZW1kZGlyQAotIFZFUlNJT04gPSBAVkVSU0lPTkAKLSBhYnNfYnVpbGRkaXIgPSBAYWJzX2J1aWxkZGlyQAotIGFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKLUBAIC0yMzMsNiArMjMzLDcgQEAgc2JpbmRpciA9IEBzYmluZGlyQAotIHNoYXJlZHN0YXRlZGlyID0gQHNoYXJlZHN0YXRlZGlyQAotIHNyY2RpciA9IEBzcmNkaXJACi0gc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQAotK3N5c3RlbWRkaXIgPSBAc3lzdGVtZGRpckAKLSB0YXJnZXRfYWxpYXMgPSBAdGFyZ2V0X2FsaWFzQAotIHRvcF9idWlsZF9wcmVmaXggPSBAdG9wX2J1aWxkX3ByZWZpeEAKLSB0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAotSW5kZXg6IGlwbWl1dGlsLTIuOS42L3NjcmlwdHMvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcG1pdXRpbC0yLjkuNi5vcmlnL3NjcmlwdHMvTWFrZWZpbGUuaW4KLSsrKyBpcG1pdXRpbC0yLjkuNi9zY3JpcHRzL01ha2VmaWxlLmluCi1AQCAtMTI2LDcgKzEyNiw3IEBAIFNIRUxMID0gQFNIRUxMQAotIFNIUl9MSU5LID0gQFNIUl9MSU5LQAotIFNUUklQID0gQFNUUklQQAotIFNVQkRJUl9TID0gQFNVQkRJUl9TQAotLVNZU1RFTURfRElSID0gQFNZU1RFTURfRElSQAotK1NZU1RFTURfRElSID0gQHN5c3RlbWRkaXJACi0gVkVSU0lPTiA9IEBWRVJTSU9OQAotIGFic19idWlsZGRpciA9IEBhYnNfYnVpbGRkaXJACi0gYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAotQEAgLTE5NSw3ICsxOTUsOCBAQCBjcm9udG8gPSAke0RFU1RESVJ9JHtldGNkaXJ9L2Nyb24uZGFpbHkKLSBzYmludG8gPSAke0RFU1RESVJ9JHtzYmluZGlyfQotIHZhcnRvID0gJHtERVNURElSfS92YXIvbGliL2lwbWl1dGlsCi0gaW5pdHRvID0gJHtERVNURElSfUBJTklUX0RJUkAKLS1zeXNkdG8gPSAke0RFU1RESVJ9QFNZU1RFTURfRElSQAotK3N5c2R0byA9ICR7REVTVERJUn1Ac3lzdGVtZGRpckAKLStzeXN0ZW1kZGlyID0gQHN5c3RlbWRkaXJACi0gc3lzdmluaXQgPSAke2RhdGF0b30KLSBzYmluZmxzID0gaWFsYXJtcyBpaGVhbHRoIGlmcnUgaWdldGV2ZW50IGlyZXNldCBpY21kIGlzb2wgaWxhbiBpc2Vuc29yIGlzZWwgaXNlcmlhbCBpd2R0IGljb25maWcgaXBpY21nIGlmaXJld2FsbCBpZnd1bSBpaHBtCi0gYWxsOiBhbGwtYW0KLUBAIC0zOTgsMTEgKzM5OSwxNCBAQCBpbnN0YWxsOgotIAkke0lOU1RBTExfU0NSSVBUX1NIfSBldnQuc2ggICAgICAgJHtkYXRhdG99Ci0gCWlmIFsgLWYgL2V0Yy9kZWJpYW5fdmVyc2lvbiBdOyB0aGVuIFwKLSAJICAgc3lzdmluaXQ9JHtpbml0dG99OyBmaQotLQkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pdXRpbF93ZHQgJHtzeXN2aW5pdH0vaXBtaXV0aWxfd2R0Ci0tCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGlwbWl1dGlsX2FzeSAke3N5c3Zpbml0fS9pcG1pdXRpbF9hc3kKLS0JJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaXV0aWxfZXZ0ICR7c3lzdmluaXR9L2lwbWl1dGlsX2V2dAotLQkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pX3BvcnQuc2ggJHtzeXN2aW5pdH0vaXBtaV9wb3J0Ci0tCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGlwbWlfaW5mbyAgICAke3N5c3Zpbml0fS9pcG1pX2luZm8KLSsJaWYgWyAhIC16ICIke3N5c3RlbWRkaXJ9IiBdOyB0aGVuIFwKLSsJCSQoTUtESVIpICR7c3lzZHRvfTsgXAotKwkJJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaXV0aWxfd2R0ICR7c3lzdmluaXR9L2lwbWl1dGlsX3dkdDsgXAotKwkJJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaXV0aWxfYXN5ICR7c3lzdmluaXR9L2lwbWl1dGlsX2FzeTsgXAotKwkJJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaXV0aWxfZXZ0ICR7c3lzdmluaXR9L2lwbWl1dGlsX2V2dDsgXAotKwkJJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaV9wb3J0LnNoICR7c3lzdmluaXR9L2lwbWlfcG9ydDsgXAotKwkJJHtJTlNUQUxMX1NDUklQVF9TSH0gaXBtaV9pbmZvICAgICR7c3lzdmluaXR9L2lwbWlfaW5mbzsgXAotKwlmaQotIAkke0lOU1RBTExfU0NSSVBUX1NIfSBjaGVja3NlbCAgICAgJHtkYXRhdG99Ci0gCSR7SU5TVEFMTF9EQVRBX1NIfSBpcG1pdXRpbF93ZHQuc2VydmljZSAke3N5c2R0b30KLSAJJHtJTlNUQUxMX0RBVEFfU0h9IGlwbWl1dGlsX2FzeS5zZXJ2aWNlICR7c3lzZHRvfQotSW5kZXg6IGlwbWl1dGlsLTIuOS42L3NjcmlwdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcG1pdXRpbC0yLjkuNi5vcmlnL3NjcmlwdHMvTWFrZWZpbGUuYW0KLSsrKyBpcG1pdXRpbC0yLjkuNi9zY3JpcHRzL01ha2VmaWxlLmFtCistLS0gaXBtaXV0aWwtMy4wLjUub3JpZy9zY3JpcHRzL01ha2VmaWxlLmFtCisrKysgaXBtaXV0aWwtMy4wLjUvc2NyaXB0cy9NYWtlZmlsZS5hbQogQEAgLTE3LDcgKzE3LDggQEAgY3JvbnRvID0gJHtERVNURElSfSR7ZXRjZGlyfS9jcm9uLmRhaWx5CiAgc2JpbnRvID0gJHtERVNURElSfSR7c2JpbmRpcn0KICB2YXJ0byAgPSAke0RFU1RESVJ9L3Zhci9saWIvaXBtaXV0aWwKQEAgLTI2OCw3ICsxMDQsNyBAQAogK3N5c2R0byA9ICR7REVTVERJUn1Ac3lzdGVtZGRpckAKICtzeXN0ZW1kZGlyID0gQHN5c3RlbWRkaXJACiAgc3lzdmluaXQgPSAke2RhdGF0b30KLSBzYmluZmxzID0gaWFsYXJtcyBpaGVhbHRoIGlmcnUgaWdldGV2ZW50IGlyZXNldCBpY21kIGlzb2wgaWxhbiBpc2Vuc29yIGlzZWwgaXNlcmlhbCBpd2R0IGljb25maWcgaXBpY21nIGlmaXJld2FsbCBpZnd1bSBpaHBtCisgc2JpbmZscyA9IGlhbGFybXMgaWhlYWx0aCBpZnJ1IGlnZXRldmVudCBpcmVzZXQgaWNtZCBpc29sIGlsYW4gaXNlbnNvciBpc2VsIGlzZXJpYWwgaXdkdCBpY29uZmlnIGlwaWNtZyBpZmlyZXdhbGwgaWZ3dW0gaWhwbSBpdXNlcgogIAogQEAgLTQ3LDEwICs0OCwxNCBAQCBpbnN0YWxsOgogIAkke0lOU1RBTExfU0NSSVBUX1NIfSBpcG1pX3BvcnQuc2ggJHtzeXN2aW5pdH0vaXBtaV9wb3J0CkBAIC0yODksMzAgKzEyNSwzIEBACiAgCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGlwbWl1dGlsLmVudiAgICAgJHtkYXRhdG99CiAgCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGlwbWl1dGlsLnByZSAgICAgJHtkYXRhdG99CiAgCSR7SU5TVEFMTF9TQ1JJUFRfU0h9IGlwbWl1dGlsLnNldHVwICAgJHtkYXRhdG99Ci1JbmRleDogaXBtaXV0aWwtMi45LjYvbGliL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXBtaXV0aWwtMi45LjYub3JpZy9saWIvTWFrZWZpbGUuaW4KLSsrKyBpcG1pdXRpbC0yLjkuNi9saWIvTWFrZWZpbGUuaW4KLUBAIC0xMjgsNyArMTI4LDcgQEAgU0hFTEwgPSBAU0hFTExACi0gU0hSX0xJTksgPSBAU0hSX0xJTktACi0gU1RSSVAgPSBAU1RSSVBACi0gU1VCRElSX1MgPSBAU1VCRElSX1NACi0tU1lTVEVNRF9ESVIgPSBAU1lTVEVNRF9ESVJACi0rU1lTVEVNRF9ESVIgPSBAc3lzdGVtZGRpckAKLSBWRVJTSU9OID0gQFZFUlNJT05ACi0gYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKLSBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACi1JbmRleDogaXBtaXV0aWwtMi45LjYvbGliL2xhbnBsdXMvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcG1pdXRpbC0yLjkuNi5vcmlnL2xpYi9sYW5wbHVzL01ha2VmaWxlLmluCi0rKysgaXBtaXV0aWwtMi45LjYvbGliL2xhbnBsdXMvTWFrZWZpbGUuaW4KLUBAIC0xNzcsNyArMTc3LDggQEAgU0hFTEwgPSBAU0hFTExACi0gU0hSX0xJTksgPSBAU0hSX0xJTktACi0gU1RSSVAgPSBAU1RSSVBACi0gU1VCRElSX1MgPSBAU1VCRElSX1NACi0tU1lTVEVNRF9ESVIgPSBAU1lTVEVNRF9ESVJACi0rU1lTVEVNRF9ESVIgPSBAc3lzdGVtZGRpckAKLStzeXN0ZW1kZGlyID0gQHN5c3RlbWRkaXJACi0gVkVSU0lPTiA9IEBWRVJTSU9OQAotIGFic19idWlsZGRpciA9IEBhYnNfYnVpbGRkaXJACi0gYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbF8yLjkuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWxfMi45LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMDc2NmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbF8yLjkuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVNVTU1BUlkgPSAiaXBtaXV0aWwgaXMgYW4gZWFzeS10by11c2Ugc2V0IG9mIElQTUkgc2VydmVyIG1hbmFnZW1lbnQgdXRpbGl0aWVzLlwKLUl0IGNhbiBnZXQvc2V0IHNlbnNvciB0aHJlc2hvbGRzLCBhdXRvbWF0ZSBTRUwgbWFuYWdlbWVudCwgZG8gU09MIGNvbnNvbGUsIGV0Yy4iCi0KLURFU0NSSVBUSU9OID0gIlRoZSBJUE1JIE1hbmFnZW1lbnQgVXRpbGl0aWVzIGN1cnJlbnRseSB3b3JrIHdpdGggcGxhdGZvcm1zIHRoYXQgXAotc3VwcG9ydCB0aGUgSVBNSSAxLjUgb3IgMi4wIHNwZWNpZmljYXRpb24uICAgSVBNSSBzZXJ2ZXJzIGNhbiBiZSBtYW5hZ2VkXAotbG9jYWxseSwgb3IgcmVtb3RlbHkgdmlhIElQTUkgTEFOLCBldmVuIHdoZW4gdGhlIE9TIG9yIG1haW4gQ1BVIGlzIG5vdFwKLWZ1bmN0aW9uYWwuXG4gXAotVGhlIGlwbWl1dGlsIHV0aWxpdGllcyB3aWxsIHVzZSBhbiBJUE1JIERyaXZlciwgZWl0aGVyIHRoZSBJbnRlbCBJUE1JIHBhY2thZ2UgXAotKGlwbWlkcnZyLCAvZGV2L2ltYiksIE1vbnRhVmlzdGEgT3BlbklQTUkgKC9kZXYvaXBtaTApLCB0aGUgdmFsaW51eCBJUE1JIFwKLURyaXZlciAoL2Rldi9pcG1pa2NzKSwgb3IgdGhlIExBTkRlc2sgbGRpcG1pIGRhZW1vbi4gIFRoZSBpcG1pdXRpbCB1dGlsaXRpZXMgXAotY2FuIGFsc28gdXNlIGRpcmVjdCB1c2VyLXNwYWNlIEkvT3MgaW4gTGludXggb3IgRnJlZUJTRCBpZiBubyBJUE1JIGRyaXZlciBcCi1pcyBkZXRlY3RlZC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9pcG1pdXRpbC5zb3VyY2Vmb3JnZS5uZXQiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmOTM3MjQ5MzQwMWYzMDllNjE0OWRkMmNlMGEwNDRiIgotCi1ERVBFTkRTICs9ICJvcGVuc3NsIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaXBtaXV0aWwvaXBtaXV0aWwtJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vZml4X3N5c3RlbWRfcGF0aC5wYXRjaCAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NjIwODc5OTVmMDVmYTllNjkyZWQ3ZjU1Yzg0MGY3MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ODRjMWYzZDhiZmIwYjMzYzMwMzk3M2QyODZjMzE2NmY1YTUzNzk3NjQ1MWEwMzEyZTM1MjRhZjU0NzcxNTE5IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQKLQotUEFDS0FHRUNPTkZJRyA/PSAibGFucGx1cyBncGwiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kPSR7ZGF0YWRpcn0vJHtCUE59LCAtLWVuYWJsZS1zeXN0ZW1kPW5vIgotUEFDS0FHRUNPTkZJR1tzaGEyNTZdID0gIi0tZW5hYmxlLXNoYTI1NiwgLS1lbmFibGUtc2hhMjU2PW5vLCBvcGVuc3NsLW5hdGl2ZSwgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbbGFucGx1c10gPSAiLS1lbmFibGUtbGFucGx1cywgLS1lbmFibGUtbGFucGx1cz1ubywgb3BlbnNzbC1uYXRpdmUsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2xhbmRlc2tdID0gIi0tZW5hYmxlLWxhbmRlc2ssIC0tZW5hYmxlLWxhbmRlc2s9bm8iCi1QQUNLQUdFQ09ORklHW3NlbnNvcnNdID0gIi0tZW5hYmxlLWxpYnNlbnNvcnMsIC0tZW5hYmxlLWxpYnNlbnNvcnM9bm8iCi0KLSNidWlsZCB3aXRoIHNvbWUgR1BMIGNvZGUKLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsIC0tZW5hYmxlLWdwbD1ubyIKLSNubyBHUEwgb3IgTGFuUGx1cyBsaWJzCi1QQUNLQUdFQ09ORklHW3N0YW5kYWxvbmVdID0gIi0tZW5hYmxlLXN0YW5kYWxvbmUsIC0tZW5hYmxlLXN0YW5kYWxvbmU9bm8iCi0KLUNGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfSIKLUxERkxBR1MgKz0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgYWNsb2NhbAotICAgIGxpYnRvb2xpemUgLS1hdXRvbWFrZSAtLWNvcHkgLS1mb3JjZQotICAgIGF1dG9oZWFkZXIKLSAgICBhdXRvbWFrZSAtLWZvcmVpZ24gLS1hZGQtbWlzc2luZyAtLWNvcHkKLQotICAgIGFjbG9jYWwKLSAgICBhdXRvY29uZgotICAgIGF1dG9tYWtlIC0tZm9yZWlnbgotICAgIC4vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30gJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44NikuKi1saW51eCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWxfMy4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsXzMuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOGNhZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsXzMuMC41LmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiaXBtaXV0aWwgaXMgYW4gZWFzeS10by11c2Ugc2V0IG9mIElQTUkgc2VydmVyIG1hbmFnZW1lbnQgdXRpbGl0aWVzLlwKK0l0IGNhbiBnZXQvc2V0IHNlbnNvciB0aHJlc2hvbGRzLCBhdXRvbWF0ZSBTRUwgbWFuYWdlbWVudCwgZG8gU09MIGNvbnNvbGUsIGV0Yy4iCisKK0RFU0NSSVBUSU9OID0gIlRoZSBJUE1JIE1hbmFnZW1lbnQgVXRpbGl0aWVzIGN1cnJlbnRseSB3b3JrIHdpdGggcGxhdGZvcm1zIHRoYXQgXAorc3VwcG9ydCB0aGUgSVBNSSAxLjUgb3IgMi4wIHNwZWNpZmljYXRpb24uICAgSVBNSSBzZXJ2ZXJzIGNhbiBiZSBtYW5hZ2VkXAorbG9jYWxseSwgb3IgcmVtb3RlbHkgdmlhIElQTUkgTEFOLCBldmVuIHdoZW4gdGhlIE9TIG9yIG1haW4gQ1BVIGlzIG5vdFwKK2Z1bmN0aW9uYWwuXG4gXAorVGhlIGlwbWl1dGlsIHV0aWxpdGllcyB3aWxsIHVzZSBhbiBJUE1JIERyaXZlciwgZWl0aGVyIHRoZSBJbnRlbCBJUE1JIHBhY2thZ2UgXAorKGlwbWlkcnZyLCAvZGV2L2ltYiksIE1vbnRhVmlzdGEgT3BlbklQTUkgKC9kZXYvaXBtaTApLCB0aGUgdmFsaW51eCBJUE1JIFwKK0RyaXZlciAoL2Rldi9pcG1pa2NzKSwgb3IgdGhlIExBTkRlc2sgbGRpcG1pIGRhZW1vbi4gIFRoZSBpcG1pdXRpbCB1dGlsaXRpZXMgXAorY2FuIGFsc28gdXNlIGRpcmVjdCB1c2VyLXNwYWNlIEkvT3MgaW4gTGludXggb3IgRnJlZUJTRCBpZiBubyBJUE1JIGRyaXZlciBcCitpcyBkZXRlY3RlZC4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9pcG1pdXRpbC5zb3VyY2Vmb3JnZS5uZXQiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTYyNmE1OTcwMzA0ZGFhMWZjYjg3Zjc1N2ZiNDJiNzk1IgorCitERVBFTkRTICs9ICJvcGVuc3NsIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaXBtaXV0aWwvaXBtaXV0aWwtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZmVhZjZhODI3MjA1NzkyZTA1N2JiNGZmNWM0ZTg0MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMmQ3ZjcyNTM1MTMxYzc4MzJiYTRiZTEzZGMzM2M4MTUxM2ZjM2VlNDNmZTc5N2I0YjUyMDE0NjAwZWNlZTVlIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/PSAibGFucGx1cyBncGwiCitQQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kPSR7ZGF0YWRpcn0vJHtCUE59LCAtLWVuYWJsZS1zeXN0ZW1kPW5vIgorUEFDS0FHRUNPTkZJR1tzaGEyNTZdID0gIi0tZW5hYmxlLXNoYTI1NiwgLS1lbmFibGUtc2hhMjU2PW5vLCBvcGVuc3NsLW5hdGl2ZSwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbGFucGx1c10gPSAiLS1lbmFibGUtbGFucGx1cywgLS1lbmFibGUtbGFucGx1cz1ubywgb3BlbnNzbC1uYXRpdmUsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2xhbmRlc2tdID0gIi0tZW5hYmxlLWxhbmRlc2ssIC0tZW5hYmxlLWxhbmRlc2s9bm8iCitQQUNLQUdFQ09ORklHW3NlbnNvcnNdID0gIi0tZW5hYmxlLWxpYnNlbnNvcnMsIC0tZW5hYmxlLWxpYnNlbnNvcnM9bm8iCisKKyNidWlsZCB3aXRoIHNvbWUgR1BMIGNvZGUKK1BBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsIC0tZW5hYmxlLWdwbD1ubyIKKyNubyBHUEwgb3IgTGFuUGx1cyBsaWJzCitQQUNLQUdFQ09ORklHW3N0YW5kYWxvbmVdID0gIi0tZW5hYmxlLXN0YW5kYWxvbmUsIC0tZW5hYmxlLXN0YW5kYWxvbmU9bm8iCisKK0NGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfSIKK0xERkxBR1MgKz0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODYpLiotbGludXgnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2ZpbGVzLzAwMDEtcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvZmlsZXMvMDAwMS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1N2UzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2ZpbGVzLzAwMDEtcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDJkZGM5N2IzMDc5MjgxN2QxNjJmNTFlYzM4MTgzNzZhZWZiZjE4NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMgTWF5IDIwMTcgMDI6MDU6MzMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIHB5dGhvbjIgc3VwcG9ydAorCitXZSB1c2UgcHl0aG9uMyByYXRoZXIgdGhhbiBweXRob24yIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3B5dGhvbi9NYWtlZmlsZS5hbSB8IDUgLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9weXRob24vTWFrZWZpbGUuYW0gYi9zcmMvcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCA1NjdkMGQ3Li44ZDlmNDQ2IDEwMDY0NAorLS0tIGEvc3JjL3B5dGhvbi9NYWtlZmlsZS5hbQorKysrIGIvc3JjL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTEsOCArMSwzIEBACistcHlsaWJkaXIgPSAkKHNoZWxsIHB5dGhvbiAtYyAiaW1wb3J0IGRpc3R1dGlscy5zeXNjb25maWc7IHByaW50KGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoMSwwLHByZWZpeD0nJHtleGVjX3ByZWZpeH0nKSkiKQorLQorLXB5Ynl0ZXNpemVkaXIgICAgID0gJChweWxpYmRpcikvYnl0ZXNpemUKKy1kaXN0X3B5Ynl0ZXNpemVfREFUQSA9IGJ5dGVzaXplLnB5IF9faW5pdF9fLnB5CistCisgaWYgV0lUSF9QWVRIT04zCisgcHkzbGliZGlyID0gJChzaGVsbCBweXRob24zIC1jICJpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgcHJpbnQoZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigxLDAscHJlZml4PScke2V4ZWNfcHJlZml4fScpKSIpCisgcHkzYnl0ZXNpemVkaXIgICAgPSAkKHB5M2xpYmRpcikvYnl0ZXNpemUKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8wLjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8wLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MDMwMjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzAuMTAuYmIKQEAgLTAsMCArMSwzNCBAQAorREVTQ1JJUFRJT04gPSAiVGhlIGdvYWwgb2YgdGhpcyBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgYSB0aW55IGxpYnJhcnkgdGhhdCB3b3VsZCBcCitmYWNpbGl0YXRlIHRoZSBjb21tb24gb3BlcmF0aW9ucyB3aXRoIHNpemVzIGluIGJ5dGVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9saWJieXRlc2l6ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK1NFQ1RJT04gPSAiZGV2ZWwvbGliIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMDdjYjQ5OWQyNTk0NTJmMzI0YmI5MGMzMDY3ZDg1YyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtTfSIKKworU1JDUkVWID0gIjM2OTEyN2MwZWRiYmE3ZDFhNGUyZTAyNDg2Mzc1ZGQ5ZDM3OTUyNGYiCitQViA9ICIwLjEwK2dpdCR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJ5dGVzaXplO2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoIFwKKyIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBweXRob24zbmF0aXZlCisKK0RFUEVORFMgKz0gIiBcCisgICAgbGlicGNyZSBcCisgICAgZ21wIFwKKyAgICBtcGZyIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2J5dGVzaXplIgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXB5dGhvbjMsIC0td2l0aG91dC1weXRob24zLCxweXRob24zIgorUEFDS0FHRUNPTkZJR1tkb2NdID0gIi0td2l0aC1ndGstZG9jLCAtLXdpdGhvdXQtZ3RrLWRvYywgZ3RrLWRvYy1uYXRpdmUiCisKK0VYVFJBX09FTUFLRSA9ICJweTNsaWJkaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjeXVzYnNlcmlhbC9saWJjeXVzYnNlcmlhbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmN5dXNic2VyaWFsL2xpYmN5dXNic2VyaWFsX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGI1ZTIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjeXVzYnNlcmlhbC9saWJjeXVzYnNlcmlhbF9naXQuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJFbmFibGUgdXNlcnNwYWNlIGNvbnRyb2wgb2YgQ3lwcmVzcyBVU0ItU2VyaWFsIGJyaWRnZSBkZXZpY2VzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2N5cm96YXAvbGliY3l1c2JzZXJpYWwiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jeXJvemFwL2xpYmN5dXNic2VyaWFsL2lzc3VlcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUi50eHQ7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorREVQRU5EUyA9ICJsaWJ1c2IgdWRldiIKKworUFYgPSAiMS4wLjArZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICI2NTVlMmQ1NDQxODNkMDk0ZjBlMmQxMTljN2UwYzYyMDZhMGRkYjNmIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2N5cm96YXAvJHtCUE59LmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFUyA9KyAiJHtQTn0tdXRpbHMiCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZGJpL2xpYmRiaS1kcml2ZXJzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZGJpL2xpYmRiaS1kcml2ZXJzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwOTUzMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmRiaS9saWJkYmktZHJpdmVycy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0jIGxpYmRiaS1kcml2ZXJzIE9FIGJ1aWxkIGZpbGUKLSMgQ29weXJpZ2h0IChDKSAyMDA1LCBLb25pbmtsaWprZSBQaGlsaXBzIEVsZWN0cm9uaWNzIE5WLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZAotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBwYWNrYWdlcy9DT1BZSU5HKQotCi1ERVNDUklQVElPTiA9ICJEYXRhYmFzZSBEcml2ZXJzIGZvciBsaWJkYmkiCi1IT01FUEFHRSA9ICJodHRwOi8vbGliZGJpLWRyaXZlcnMuc291cmNlZm9yZ2UubmV0LyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKLVNFQ1RJT04gPSAibGlicyIKLQotUFJPVklERVMgPSAibGliZGJkLXNxbGl0ZSIKLURFUEVORFMgPSAibGliZGJpIHNxbGl0ZSBzcWxpdGUzIG15c3FsNSBwb3N0Z3Jlc3FsIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJkYmktZHJpdmVycy9saWJkYmktZHJpdmVycy0ke1BWfS50YXIuZ3oiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBBQ0tBR0VTICs9ICJsaWJkYmQtc3FsaXRlMyBsaWJkYmQtc3FsaXRlIGxpYmRiZC1wZ3NxbCBsaWJkYmQtbXlzcWwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZGJpLWluY2Rpcj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRiaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1zcWxpdGUgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zcWxpdGUzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcGdzcWwgXAotICAgICAgICAgICAgICAgIC0td2l0aC1teXNxbCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXNxbGl0ZS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1zcWxpdGUtaW5jZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3FsaXRlMy1pbmNkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1zcWxpdGUzLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLW15c3FsLWluY2Rpcj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLW15c3FsLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXBnc3FsLWluY2Rpcj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXBnc3FsLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRvY3MiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiICR7bGliZGlyfS9kYmQvLmRlYnVnLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiAke2xpYmRpcn0vZGJkLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiAke2xpYmRpcn0vZGJkLyouYSIKLQotREVTQ1JJUFRJT05fbGliZGJkLXNxbGl0ZSA9ICJTUUxpdGUgZGF0YWJhc2UgZHJpdmVyIGZvciBsaWJkYmkiCi1GSUxFU19saWJkYmQtc3FsaXRlID0gIiR7bGliZGlyfS9kYmQvbGliZGJkc3FsaXRlLnNvIgotCi1ERVNDUklQVElPTl9saWJkYmQtc3FsaXRlMyA9ICAiU1FMaXRlMyBkYXRhYmFzZSBkcml2ZXIgZm9yIGxpYmRiaSIKLUZJTEVTX2xpYmRiZC1zcWxpdGUzID0gIiR7bGliZGlyfS9kYmQvbGliZGJkc3FsaXRlMy5zbyIKLQotREVTQ1JJUFRJT05fbGliZGJkLW15c3FsID0gIk15U1FMNCBkYXRhYmFzZSBkcml2ZXIgZm9yIGxpYmRiaSIKLUZJTEVTX2xpYmRiZC1teXNxbCA9ICIke2xpYmRpcn0vZGJkL2xpYmRiZG15c3FsLnNvIgotCi1ERVNDUklQVElPTl9saWJkYmQtcHNxbCA9ICJQb3N0Z3JlcyBTUUwgZGF0YWJhc2UgZHJpdmVyIGZvciBsaWJkYmkiCi1GSUxFU19saWJkYmQtcGdzcWwgPSAiJHtsaWJkaXJ9L2RiZC9saWJkYmRwZ3NxbC5zbyIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJkYmkvbGliZGJpLWRyaXZlcnNfMC44LjMtMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZGJpL2xpYmRiaS1kcml2ZXJzXzAuOC4zLTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMmM1MDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJkYmkvbGliZGJpLWRyaXZlcnNfMC44LjMtMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSAke1BOfS5pbmMKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGRlNzliMzIzMTYyYTVhNzY1MmI2NWI2MDhlY2E2Y2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGFiOTk0NDM5OGNlNzY5YzBkZWViNjRkMmY3MzU1NWM2N2JjMjVjY2QyYWRlMWNjZjU1MjIyNmM3YjJhY2Y3MiIKLQotIyBsaWJkYmktZHJpdmVycy0wLjguMy0xL2RyaXZlcnMvbXlzcWwvZGJkX215c3FsLmM6MjMyOjU6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ2RiZF9nb3RvX3JvdycKLVBOQkxBQ0tMSVNUW2xpYmRiaS1kcml2ZXJzXSA/PSAiQlJPS0VOOiBmYWlscyB0byBidWlsZCB3aXRoIGdjYy01IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbi0wLjU3L2xpYmV0cGFuLWF1dG9yZWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmV0cGFuL2xpYmV0cGFuLTAuNTcvbGliZXRwYW4tYXV0b3JlY29uZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA1OTY3ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmV0cGFuL2xpYmV0cGFuLTAuNTcvbGliZXRwYW4tYXV0b3JlY29uZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLUluZGV4OiBsaWJldHBhbi0wLjU3L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmV0cGFuLTAuNTcub3JpZy9jb25maWd1cmUuYWMJMjAwOC0xMC0wOCAxOTo1NDoyMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBsaWJldHBhbi0wLjU3L2NvbmZpZ3VyZS5hYwkyMDA4LTExLTExIDE2OjM0OjMzLjAwMDAwMDAwMCArMDAwMAotQEAgLTEwNiw2ICsxMDYsNyBAQAotIAotICMgQ2hlY2sgdGhlIEMgY29tcGlsZXIuCi0gQUNfUFJPR19DQwotK0FDX1BST0dfQ1hYCi0gCi0gIyBDb21waWxlciBmbGFncy4KLSBBQ19BUkdfRU5BQkxFKGRlYnVnLCAgIFsgIC0tZW5hYmxlLWRlYnVnICAgICAgICAgIHNldHVwIGZsYWdzIChnY2MpIGZvciBkZWJ1Z2dpbmcgKGRlZmF1bHQ9bm8pXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXRwYW4vbGliZXRwYW4tMC41Ny9saWJldHBhbi1sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbi0wLjU3L2xpYmV0cGFuLWxkZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOGY0NGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbi0wLjU3L2xpYmV0cGFuLWxkZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gbGliZXRwYW4tMC41Ny9jb25maWd1cmUuYWN+CTIwMDktMDktMjEgMjM6MzE6NDIuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZXRwYW4tMC41Ny9jb25maWd1cmUuYWMJMjAwOS0wOS0yMSAyMzozMTo0Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NTcsNyArNDU3LDcgQEAKLSAgICAgICBMREZMQUdTPSItJGZsYWcgJExERkxBR1MiCi0gICAgICAgQUNfVFJZX0xJTksoW10sIFtwdGhyZWFkX2NyZWF0ZSgpO10sIAotICAgICAgICAgICAgICAgICAgICAgICBbcHRoZmxhZz15ZXM7IGNoZWNrcHRocmVhZD1ub10sIAotLSAgICAgICAgICAgICAgICAgICAgICBbcHRoZmxhZz1ubzsgTERGTEFHUz0iJE9MRENGTEFHUyJdKQotKyAgICAgICAgICAgICAgICAgICAgICBbcHRoZmxhZz1ubzsgTERGTEFHUz0iJE9MREZMQUdTIl0pCi0gICAgICAgQUNfTVNHX1JFU1VMVCgkcHRoZmxhZykKLSAgICAgZmkKLSAgIGRvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXRwYW4vbGliZXRwYW4tMC41Ny9zZXBidWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXRwYW4vbGliZXRwYW4tMC41Ny9zZXBidWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYwMTYxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmV0cGFuL2xpYmV0cGFuLTAuNTcvc2VwYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1JbmRleDogbGliZXRwYW4tMC41Ny9ydWxlcy5tawotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmV0cGFuLTAuNTcub3JpZy9ydWxlcy5tawotKysrIGxpYmV0cGFuLTAuNTcvcnVsZXMubWsKLUBAIC0xMzQsOSArMTM0LDkgQEAgcHJlcGFyZS1hbTogcHJlcGFyZS1sb2NhbAotIAkgICAgICAgICBpZiB0ZXN0IC1lIC4uLy4uLyQoc3ViZGlyKS8kJHtoZHJ9OyB0aGVuIFwKLSAJICAgICAgICAgICBlY2hvICIkKExOX1MpIC1mIC4uLy4uLyQoc3ViZGlyKS8kJHtoZHJ9IC4iOyBcCi0gCSAgICAgICAgICAgJChMTl9TKSAtZiAuLi8uLi8kKHN1YmRpcikvJCR7aGRyfSAuOyBcCi0gICAgICAgICAgICAgIGVsc2UgXAotLQkgICAgICAgICAgIGVjaG8gIiQoTE5fUykgLWYgLi4vLi4vJChzdWJkaXIpLyQoc3JjZGlyKS8kJHtoZHJ9IC4iOyBcCi0tCSAgICAgICAgICAgJChMTl9TKSAtZiAuLi8uLi8kKHN1YmRpcikvJChzcmNkaXIpLyQke2hkcn0gLjsgXAotKwkgICAgICAgICAgIGVjaG8gIiQoTE5fUykgLWYgJChzcmNkaXIpLyQke2hkcn0gLiI7IFwKLSsJICAgICAgICAgICAkKExOX1MpIC1mICQoc3JjZGlyKS8kJHtoZHJ9IC47IFwKLSAgICAgICAgICAgICAgZmk7IFwKLSAgICAgICAgICAgIGZpOyBcCi0gCSAgICAgZG9uZTsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbl8wLjU3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJldHBhbi9saWJldHBhbl8wLjU3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2FkZjE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXRwYW4vbGliZXRwYW5fMC41Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLURFU0NSSVBUSU9OID0gImxpYmV0cGFuIGlzIGEgbGlicmFyeSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIG1haWwgYW5kIG5ld3Mgc2VydmVycy4gXAotSXQgc3VwcG9ydHMgdGhlIHByb3RvY29scyBTTVRQLCBQT1AzLCBJTUFQIGFuZCBOTlRQLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZXRwYW4ub3JnIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJnbnV0bHMgbGlibG9ja2ZpbGUgY3VybCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1mMThlYmU3ZTQ1MjcwOGMyNmY4Mzk1NGY4MTA2MmJhNyIKLQotUFIgPSAicjEiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzI1ODIzLwotUE5CTEFDS0xJU1RbbGliZXRwYW5dID89ICJOb3QgY29tcGF0aWJsZSB3aXRoIGdudXRscyB2ZXJzaW9uIDMuNCBjdXJyZW50bHkgaW4gb2UtY29yZSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGliZXRwYW4vbGliZXRwYW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2xpYmV0cGFuLWF1dG9yZWNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliZXRwYW4tbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXBidWlsZC5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgYmluY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtb3BlbnNzbCAtLXdpdGhvdXQtc2FzbCAtLXdpdGgtZ251dGxzIC0tZGlzYWJsZS1kYiIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtiaW5kaXJ9ICR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYiouc28gJHtsaWJkaXJ9LyoubGEgJHtsaWJkaXJ9LyouYSAke2xpYmRpcn0vcGtnY29uZmlnIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4Y2U4YzZjMDcxZTgxODg0YTQ3NWIxMmI3ZjlhOWNjMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZjNmZGE1YzllMjk2MWQxYTYyOThkYzhhYWRhZTMyMTQ5M2QzNzcyN2Q4ZGI0NWJjMmU4ZDU4ZjIwNTQ3MDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJmdGRpL2xpYmZ0ZGlfMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJmdGRpL2xpYmZ0ZGlfMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTllNWE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZnRkaS9saWJmdGRpXzEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLURFU0NSSVBUSU9OID0gImxpYmZ0ZGkgaXMgYSBsaWJyYXJ5IHRvIHRhbGsgdG8gRlRESSBjaGlwcy5cCi1GVDIzMkJNLzI0NUJNLCBGVDIyMzJDL0QgYW5kIEZUMjMyLzI0NVIgdXNpbmcgbGlidXNiLFwKLWluY2x1ZGluZyB0aGUgcG9wdWxhciBiaXRiYW5nIG1vZGUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pbnRyYTJuZXQuY29tL2VuL2RldmVsb3Blci9saWJmdGRpLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTT0gIlwKLSAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSIKLQotREVQRU5EUyA9ICJsaWJ1c2IxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaW50cmEybmV0LmNvbS9lbi9kZXZlbG9wZXIvJHtCUE59L2Rvd25sb2FkLyR7QlBOfTEtJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1NmNkZjQwY2VjZTlmOGEzY2UxNTgyZGI1OWE1MDJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhOGM5NWM5NGJmYmNmMzY1ODRhMGE1OGE2ZTIwMDNkOWIxMzMyMTNkOTIwMmI3NmFlYzc2MzAyZmZhYTgxZjQiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0xLSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tjcHAtd3JhcHBlcl0gPSAiLURGVERJX0JVSUxEX0NQUD1vbiAtREZURElQUD1vbiwtREZURElfQlVJTERfQ1BQPW9mZiAtREZURElQUD1vZmYsYm9vc3QiCi0KLWluaGVyaXQgY21ha2UgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNNQUtFID0gIi1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZnRkaS9saWJmdGRpXzEuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZnRkaS9saWJmdGRpXzEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmVhMTY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJmdGRpL2xpYmZ0ZGlfMS40LmJiCkBAIC0wLDAgKzEsMzEgQEAKK0RFU0NSSVBUSU9OID0gImxpYmZ0ZGkgaXMgYSBsaWJyYXJ5IHRvIHRhbGsgdG8gRlRESSBjaGlwcy5cCitGVDIzMkJNLzI0NUJNLCBGVDIyMzJDL0QgYW5kIEZUMjMyLzI0NVIgdXNpbmcgbGlidXNiLFwKK2luY2x1ZGluZyB0aGUgcG9wdWxhciBiaXRiYW5nIG1vZGUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pbnRyYTJuZXQuY29tL2VuL2RldmVsb3Blci9saWJmdGRpLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTT0gIlwKKyAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKKyIKKworREVQRU5EUyA9ICJsaWJ1c2IxIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaW50cmEybmV0LmNvbS9lbi9kZXZlbG9wZXIvJHtCUE59L2Rvd25sb2FkLyR7QlBOfTEtJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjBjMDlmYjJiYjE5YTU3YzgzOWZhNjg0NWM2Yzc4MGEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjMzZmYjQ5MDgwZjgzNDY5MGMyNDAwODMyOGE1ZWY0MmQzY2Y1ODRlZjQwNjBmM2EzNWFhNDY4MWNiMzFiNzQiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0xLSR7UFZ9IgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tjcHAtd3JhcHBlcl0gPSAiLURGVERJX0JVSUxEX0NQUD1vbiAtREZURElQUD1vbiwtREZURElfQlVJTERfQ1BQPW9mZiAtREZURElQUD1vZmYsYm9vc3QiCisKK2luaGVyaXQgY21ha2UgYmluY29uZmlnIHBrZ2NvbmZpZworCitFWFRSQV9PRUNNQUtFID0gIi1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MDYwNTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQyBsaWJyYXJ5IGFuZCB0b29scyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGludXggR1BJTyBjaGFyYWN0ZXIgZGV2aWNlIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJjYWNlZDBiMjVkZmVmZDRjNjAxZDkyYmQxNTExNmRlIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL2xpYnMvbGliZ3Bpb2QvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWY5ZDg1NTM1MmIxYTUyNzJjZjZmMWMyZTIwNjg5ZDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmRmZDZhZWI1NDRlOGI3YmFmNDg0YTA1YzlhZTBlNjcwMjJjMTA5MzYyYTQxZDg3MDA1MzkzMDQ2YjZiZWFjZiIKKworUFYgPSAiMC4zLjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIGVuYWJsZSB0b29scworUEFDS0FHRUNPTkZJRyA/PSAidG9vbHMiCisKK1BBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyxrbW9kIHVkZXYiCitQQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItLWVuYWJsZS10b29scywtLWRpc2FibGUtdG9vbHMsIgorCitQQUNLQUdFUyArPSAiICR7UE59LXRvb2xzIgorCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlianMvbGlianMtanF1ZXJ5XzEuNy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJqcy9saWJqcy1qcXVlcnlfMS43LjIuYmIKaW5kZXggZWM4ZjM2MC4uN2Y0MjVjZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJqcy9saWJqcy1qcXVlcnlfMS43LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJqcy9saWJqcy1qcXVlcnlfMS43LjIuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkphdmFTY3JpcHQgbGlicmFyeSBmb3IgZHluYW1pYyB3ZWIgYXBwbGljYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9qcXVlcnkuY29tLyIKIExJQ0VOU0UgPSAiTUlUIHwgQlNEIHwgR1BMLTIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly91c3Ivc2hhcmUvZG9jL2xpYmpzLWpxdWVyeS9jb3B5cmlnaHQ7bWQ1PTVkMWVjNmY5NWUwYTkxZDM4ZTJmNzFkZTkzZGRiMDBlIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmpzL2xpYmpzLXNpenpsZV8xLjEwLjE4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJqcy9saWJqcy1zaXp6bGVfMS4xMC4xOC5iYgppbmRleCA5MmFiMzFmLi40OTI4YjZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmpzL2xpYmpzLXNpenpsZV8xLjEwLjE4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlianMvbGlianMtc2l6emxlXzEuMTAuMTguYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlB1cmUtSmF2YVNjcmlwdCBDU1Mgc2VsZWN0b3IgZW5naW5lIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6bGUvd2lraSIKIExJQ0VOU0UgPSAiR1BMLTIuMCAmIE1JVCAmIEFGTC0yLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NSVQtTElDRU5TRS50eHQ7bWQ1PWU0M2FhNDM3YTZhMWJhNDIxNjUzYmQ1MDM0MzMzYmY5IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZC9DaGVjay1yZXNwb25zZS1leGlzdGVuY2Utb24tdXBncmFkZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkL0NoZWNrLXJlc3BvbnNlLWV4aXN0ZW5jZS1vbi11cGdyYWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDJiYmQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkL0NoZWNrLXJlc3BvbnNlLWV4aXN0ZW5jZS1vbi11cGdyYWRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbTogam9zZS5ib2xsb0Bpb3QuYnpoCi1EYXRlOiBUaHUsIDQgTWF5IDIwMTcgMjE6NDc6MzggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgcmVzcG9uc2UgZXhpc3RlbmNlIG9uIHVwZ3JhZGUKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotV2hlbiBhIGNvbm5lY3Rpb24gdXBncmFkZSBpcyByZXF1ZXN0ZWQgYW5kIHdoZW4gdGhlCi1yZXF1ZXN0IHNlbnQgYW4gZXJyb3IgcmVwbHksIHRoZSByZXNwb25zZSBpcyBtb3N0IG9mCi10aGUgdGltZSBhbHJlYWR5IHNlbnQgd2hlbiB0aGUgdGVzdCBvbgotY29ubmVjdGlvbi0+cmVzcG9uc2UtPnVwZ3JhZGVfaGFuZGxlciBpcyBtYWRlLCBsZWFkaW5nCi10byBkZXJlZmVyZW5jaW5nIE5VTEwuCi0KLVR3byBwb3NzaWJpbGl0aWVzIGV4aXN0OgotCi0gIE5VTEwgPT0gY29ubmVjdGlvbi0+cmVzcG9uc2UgfHwgTlVMTCA9PSBjb25uZWN0aW9uLT5yZXNwb25zZS0+dXBncmFkZV9oYW5kbGVyCi0KLW9yCi0KLSAgTlVMTCAhPSBjb25uZWN0aW9uLT5yZXNwb25zZSAmJiBOVUxMID09IGNvbm5lY3Rpb24tPnJlc3BvbnNlLT51cGdyYWRlX2hhbmRsZXIKLQotVGhlIGZpcnN0IGlzIHByZWZlcmVkIGJlY2F1c2UgaXQgaXMgcHJvYmFibHkgc2FmZXIgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24KLWluIHRoYXQgY2FzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9nbnVuZXQub3JnL2dpdC9saWJtaWNyb2h0dHBkLmdpdC9jb21taXQvP2lkPWI0MjE2YzYwZmRiNWI0OGY2Y2ZlYzQxNjMwMWZjNjNhMTE2N2U2Y2RdCi0KLUNoYW5nZS1JZDogSWU2ZTdmYzE2NWY3ZmUzNjM1YWRlMDk1MmJiMzRhMGI5MzdkMzg3MTYKLVNpZ25lZC1vZmYtYnk6IEpvc8OpIEJvbGxvIDxqb2JvbEBub25hZGV2Lm5ldD4KLVNpZ25lZC1vZmYtYnk6IEpvc8OpIEJvbGxvIDxqb3NlLmJvbGxvQGlvdC5iemg+Ci0tLS0KLSBzcmMvbWljcm9odHRwZC9jb25uZWN0aW9uLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbWljcm9odHRwZC9jb25uZWN0aW9uLmMgYi9zcmMvbWljcm9odHRwZC9jb25uZWN0aW9uLmMKLWluZGV4IGE0OTU1MjQuLmQzOWMxMTAgMTAwNjQ0Ci0tLS0gYS9zcmMvbWljcm9odHRwZC9jb25uZWN0aW9uLmMKLSsrKyBiL3NyYy9taWNyb2h0dHBkL2Nvbm5lY3Rpb24uYwotQEAgLTg4Miw3ICs4ODIsNyBAQCBrZWVwYWxpdmVfcG9zc2libGUgKHN0cnVjdCBNSERfQ29ubmVjdGlvbiAqY29ubmVjdGlvbikKLSAjaWZkZWYgVVBHUkFERV9TVVBQT1JUCi0gICAgIGlmICggKE1IRF9zdHJfZXF1YWxfY2FzZWxlc3NfIChlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXBncmFkZSIpKSAmJgotLSAgICAgICAgIChOVUxMID09IGNvbm5lY3Rpb24tPnJlc3BvbnNlLT51cGdyYWRlX2hhbmRsZXIpICkKLSsgICAgICAgICAoTlVMTCA9PSBjb25uZWN0aW9uLT5yZXNwb25zZSB8fCBOVUxMID09IGNvbm5lY3Rpb24tPnJlc3BvbnNlLT51cGdyYWRlX2hhbmRsZXIpICkKLSAgICAgICByZXR1cm4gTUhEX05POwotICNlbmRpZiAvKiBVUEdSQURFX1NVUFBPUlQgKi8KLSAKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjUzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjUzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWYyNDYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgc21hbGwgQyBsaWJyYXJ5IHRoYXQgaXMgc3VwcG9zZWQgdG8gbWFrZSBpdCBlYXN5IHRvIHJ1biBhbiBIVFRQIHNlcnZlciBhcyBwYXJ0IG9mIGFub3RoZXIgYXBwbGljYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlibWljcm9odHRwZC8iCi1MSUNFTlNFID0gIkxHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkzMzExODZmNGY4MGRiN2RhMGU3MjRiZGQ2NTU0ZWU1IgotU0VDVElPTiA9ICJuZXQiCi1ERVBFTkRTID0gImxpYmdjcnlwdCBnbnV0bHMgZmlsZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2xpYm1pY3JvaHR0cGQvJHtCUE59LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1YTQyNWU5OTNhMGY1Mjk1YWVjYjVkNjYwN2ExYzI0MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjE1ZWMyZDM4MWY0NDkzNjMyM2FkZmQ0Zjk4OWZhMzVhZGQ1MTdjY2NiYmZhNTgxODk2YjAyYTM5M2MyY2M0IgotCi1GSUxFU0VYVFJBUEFUSFNfYXBwZW5kIDo9ICI6JHtUSElTRElSfS8ke1BOfSIKLVNSQ19VUkkgKz0gIiBmaWxlOi8vQ2hlY2stcmVzcG9uc2UtZXhpc3RlbmNlLW9uLXVwZ3JhZGUucGF0Y2giCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXN0YXRpYyAtLXdpdGgtZ251dGxzPSR7U1RBR0lOR19MSUJESVJ9Ly4uLyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiY3VybCIKLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2xhcmdlZmlsZV0gPSAiLS1lbmFibGUtbGFyZ2VmaWxlLC0tZGlzYWJsZS1sYXJnZWZpbGUsLCIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsLCIKLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0gICAgc2VkIC1pIHM6LUwke1NUQUdJTkdfTElCRElSfTo6ZyBsaWJtaWNyb2h0dHBkLnBjCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUzOTlhNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41NS5iYgpAQCAtMCwwICsxLDI1IEBACitERVNDUklQVElPTiA9ICJBIHNtYWxsIEMgbGlicmFyeSB0aGF0IGlzIHN1cHBvc2VkIHRvIG1ha2UgaXQgZWFzeSB0byBydW4gYW4gSFRUUCBzZXJ2ZXIgYXMgcGFydCBvZiBhbm90aGVyIGFwcGxpY2F0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYm1pY3JvaHR0cGQvIgorTElDRU5TRSA9ICJMR1BMLTIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MzMxMTg2ZjRmODBkYjdkYTBlNzI0YmRkNjU1NGVlNSIKK1NFQ1RJT04gPSAibmV0IgorREVQRU5EUyA9ICJsaWJnY3J5cHQgZ251dGxzIGZpbGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9saWJtaWNyb2h0dHBkLyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMWMyMGY4NGE4YjljZjY5MmRkNTBiNTU4YjM1NzFhM2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMxY2FiOGRjOWYyNTg4YmQzMDc2YTI4Zjc3YTdmOGRlOTU2MGNiZjJkODBlNTNmOWE4Njk2YWRhODBlZDBmOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnIGdldHRleHQKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RhdGljIC0td2l0aC1nbnV0bHM9JHtTVEFHSU5HX0xJQkRJUn0vLi4vIgorCitQQUNLQUdFQ09ORklHID89ICJjdXJsIgorUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsIgorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKyAgICBzZWQgLWkgczotTCR7U1RBR0lOR19MSUJESVJ9OjpnIGxpYm1pY3JvaHR0cGQucGMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibmloL2xpYm5paF8xLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibmloL2xpYm5paF8xLjAuMy5iYgppbmRleCAwMmZlODA1Li4zZTM1ZjRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm5paC9saWJuaWhfMS4wLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJuaWgvbGlibmloXzEuMC4zLmJiCkBAIC0xLDYgKzEsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMTMgIExHIEVsZWN0cm9uaWNzLCBJbmMuCiAKIFNVTU1BUlkgPSAibGlibmloIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbGlibmloIgogREVTQ1JJUFRJT04gPSAibGlibmloIGlzIGEgc21hbGwgbGlicmFyeSBmb3IgQyBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBcCiAgICAgY29udGFpbmluZyBmdW5jdGlvbnMgdGhhdCwgZGVzcGl0ZSBpdHMgbmFtZSwgYXJlIG5vdCBpbXBsZW1lbnRlZCBcCiAgICAgZWxzZXdoZXJlIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IHNldC4gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJvbC9saWJvbF8wLjMuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9sL2xpYm9sXzAuMy4xOC5iYgppbmRleCBjMzFmNDgzLi43NGUxZWYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9sL2xpYm9sXzAuMy4xOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9sL2xpYm9sXzAuMy4xOC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiQSB0aW55IEMgc3VwcG9ydCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9teS5iYWxhYml0LmNvbS9kb3dubG9hZHMvbGlib2wiCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ODAwNmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJwMTEvbGlicDExXzAuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciB1c2luZyBQS0NTIgotREVTQ1JJUFRJT04gPSAiXAotTGlicDExIGlzIGEgbGlicmFyeSBpbXBsZW1lbnRpbmcgYSBzbWFsbCBsYXllciBvbiB0b3Agb2YgUEtDUyBcCi1tYWtlIHVzaW5nIFBLQ1MiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zYy1wcm9qZWN0Lm9yZy9saWJwMTEiCi1TRUNUSU9OID0gIkRldmVsb3BtZW50L0xpYnJhcmllcyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IgotREVQRU5EUyA9ICJsaWJ0b29sIG9wZW5zc2wiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PcGVuU0MvbGlicDExLmdpdCIKLVNSQ1JFViA9ICIyMmRlNzkzMzQwYWI3M2NhZmM5MmY4MjM4YWZiNTFhMDZkODQxMWMzIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBDdXJyZW50bHksIE1ha2VmaWxlIGRlcGVuZGVuY2llcyBhcmUgaW5jb3JyZWN0bHkgZGVmaW5lZCB3aGljaCBjYXVzZXMgYnVpbGQgZXJyb3JzCi0jIFRoZSBudW1iZXIgb2Ygam9icyBpcyBoaWdoCi0jIFNlZSBodHRwczovL2dpdGh1Yi5jb20vT3BlblNDL2xpYnAxMS9pc3N1ZXMvOTQKLVBBUkFMTEVMX01BS0UgPSAiIgotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBybSAtcmYgJHtEfSR7bGliZGlyfS8qLmxhCi0gICAgcm0gLXJmICR7RH0ke2RvY2Rpcn0vJHtCUE59Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcGtjczExJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtjczExJHtTT0xJQlNERVZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJwMTEvbGlicDExXzAuNC43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJwMTEvbGlicDExXzAuNC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OWMzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjcuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciB1c2luZyBQS0NTIgorREVTQ1JJUFRJT04gPSAiXAorTGlicDExIGlzIGEgbGlicmFyeSBpbXBsZW1lbnRpbmcgYSBzbWFsbCBsYXllciBvbiB0b3Agb2YgUEtDUyBcCittYWtlIHVzaW5nIFBLQ1MiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zYy1wcm9qZWN0Lm9yZy9saWJwMTEiCitTRUNUSU9OID0gIkRldmVsb3BtZW50L0xpYnJhcmllcyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IgorREVQRU5EUyA9ICJsaWJ0b29sIG9wZW5zc2wiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PcGVuU0MvbGlicDExLmdpdCIKK1NSQ1JFViA9ICI2NDU2OWEzOTE4OTdiZDI5YzUwNjBiMTlmYTQ2MTNlNjE5ZTU5Mjc3IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBybSAtcmYgJHtEfSR7bGliZGlyfS8qLmxhCisgICAgcm0gLXJmICR7RH0ke2RvY2Rpcn0vJHtCUE59Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZW5naW5lcy9wa2NzMTEuc28iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9lbmdpbmVzL2xpYnBrY3MxMSR7U09MSUJTREVWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic3NoMi9saWJzc2gyXzEuNy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gyL2xpYnNzaDJfMS43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MmRhYjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gyL2xpYnNzaDJfMS43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkEgY2xpZW50LXNpZGUgQyBsaWJyYXJ5IGltcGxlbWVudGluZyB0aGUgU1NIMiBwcm90b2NvbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic3NoMi5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzVjZjM0ZmMwYWNiNDRiMDgyZWY1MGVmNWU0MzU0Y2EiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzc2gyLm9yZy9kb3dubG9hZC8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjAxNjYyYTIxMGU5NGNjY2YyZjc2MDk0ZGI3ZGFjNWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTQ1NjFmZDQzYTUwNTM5YThjMmNlYjM3ODQxNjkxYmFmMDNlY2I3ZGFmMDQzNzY2ZGExYjExMmU0MjgwZDU4NCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbGlieiBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJ6LXByZWZpeD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIgotCi0jIG9ubHkgb25lIG9mIG9wZW5zc2wgYW5kIGdjcnlwdCBjb3VsZCBiZSBzZXQKLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCAtLXdpdGgtbGlic3NsLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfSwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0td2l0aC1saWJnY3J5cHQgLS13aXRoLWxpYmdjcnlwdC1wcmVmaXg9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9LC0td2l0aG91dC1saWJnY3J5cHQsbGliZ2NyeXB0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic3NoMi9saWJzc2gyXzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gyL2xpYnNzaDJfMS44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRiZmI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic3NoMi9saWJzc2gyXzEuOC4wLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBjbGllbnQtc2lkZSBDIGxpYnJhcnkgaW1wbGVtZW50aW5nIHRoZSBTU0gyIHByb3RvY29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzc2gyLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiemxpYiIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNWNmMzRmYzBhY2I0NGIwODJlZjUwZWY1ZTQzNTRjYSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYnNzaDIub3JnL2Rvd25sb2FkLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZDExNDdjYWU2NmUyOTU5ZWE1NDQxYjE4M2RlMWIxYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzOWYzNGUyZjY4MzVmNGI5OTJjYWZlODYyNTA3M2E4OGU1YTI4YmE3OGY4M2U4MDk5NjEwYTdiM2FmNDY3NmQ0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICJcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJ6IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYnotcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAiCisKKyMgb25seSBvbmUgb2Ygb3BlbnNzbCBhbmQgZ2NyeXB0IGNvdWxkIGJlIHNldAorUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsIC0td2l0aC1saWJzc2wtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9LC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLS13aXRoLWxpYmdjcnlwdCAtLXdpdGgtbGliZ2NyeXB0LXByZWZpeD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0sLS13aXRob3V0LWxpYmdjcnlwdCxsaWJnY3J5cHQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0YXIvZmlsZXMvMDAwMi1Eby1ub3Qtc3RyaXAtbGlidGFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0YXIvZmlsZXMvMDAwMi1Eby1ub3Qtc3RyaXAtbGlidGFyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYzBkMjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9maWxlcy8wMDAyLURvLW5vdC1zdHJpcC1saWJ0YXIucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSBlOWZlZTY4OTQzMGFmNzc5MWI5MzJhMWVlM2MyY2MxMDNjY2YyOTBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3RlZmFuIEVpY2hlbmJlcmdlciA8c3RlZmFuLmVpY2hlbmJlcmdlckBuZXRtb2R1bGUuY29tPgorRGF0ZTogV2VkLCAyIE5vdiAyMDE2IDA1OjQzOjQzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBzdHJpcCBsaWJ0YXIuCisKKy0tLQorIGxpYnRhci9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYnRhci9NYWtlZmlsZS5pbiBiL2xpYnRhci9NYWtlZmlsZS5pbgoraW5kZXggN2M2ZjFiYy4uODBiYjhkOSAxMDA2NDQKKy0tLSBhL2xpYnRhci9NYWtlZmlsZS5pbgorKysrIGIvbGlidGFyL01ha2VmaWxlLmluCitAQCAtMjAsNyArMjAsNyBAQCBTSEVMTCAgICAgICAgICAgPSBAU0hFTExACisgCisgIyMjIEluc3RhbGxhdGlvbiBwcm9ncmFtcyBhbmQgZmxhZ3MKKyBJTlNUQUxMCQk9IEBJTlNUQUxMQAorLUlOU1RBTExfUFJPR1JBTQk9IEBJTlNUQUxMX1BST0dSQU1AIC1zCisrSU5TVEFMTF9QUk9HUkFNCT0gQElOU1RBTExfUFJPR1JBTUAKKyBJTlNUQUxMX0RBVEEJPSBASU5TVEFMTF9EQVRBQAorIExOX1MJCT0gQExOX1NACisgTUtESVIJCT0gQE1LRElSQAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9maWxlcy9maXhfbGlidG9vbF9zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0YXIvZmlsZXMvZml4X2xpYnRvb2xfc3lzcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzhhOTcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0YXIvZmlsZXMvZml4X2xpYnRvb2xfc3lzcm9vdC5wYXRjaApAQCAtMCwwICsxLDE5IEBACistLS0KKyBjb25maWd1cmUuYWMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNDYyMzEwMC4uMWM2YjQzZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTMsNiArMTMsNyBAQCBBQ19DT05GSUdfTUFDUk9fRElSKFthdXRvY29uZl0pCisgQU1fSU5JVF9BVVRPTUFLRShbZGlzdC1iemlwMl0pCisgRU5DQVBfUEtHKFtdLCBbcG9zdGluc3RhbGwtZW5jYXBdKQorIAorK0xUX0lOSVQKKyAKKyBkbmwgIyMjIExvYWQgc3ViZGlyZWN0b3J5IG1vZHVsZXMuICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyBQU0dfTU9EVUxFKFtjb21wYXRdKQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRhci9saWJ0YXJfMS4yLjIwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0YXIvbGlidGFyXzEuMi4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDcxMGY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0YXIvbGlidGFyXzEuMi4yMC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gImxpYnRhciwgdGFyIG1hbmlwdWxhdGluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlidGFyIGlzIGEgbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIFBPU0lYIHRhciBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZmVlcC5uZXQvbGlidGFyIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTYxY2JhYzY3MTlhZTY4MmNlNmNkNDViNWMxMWUyMWFmIgorCitTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9saWJ0LyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4X2xpYnRvb2xfc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC1zdHJpcC1saWJ0YXIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2Y2VkOTVhYjNhNGIzM2ZiZmUyZGZiMjMxZDE1NmNkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MGYyNGM4NTdhN2VmMWNiMDkyZTY1MDg3NThiODZkMDZmMTE4ODUwOGY4OTdmM2U2YjQwYzU3M2U4ODc5MTA5IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtaW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC1kZWZpbml0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YTE3ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQtZGVmaW5pdGlvbi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDBhYjY5ZGMxOGEyMDU3ZmY1YmY0MWFiY2RmMmI5ODNiNzJkNWE5MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMiBKdWwgMjAxNyAxNTozNDo0OSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gaW5jbHVkZSBzeXMvc2VsZWN0LmggZm9yIGZkX3NldCBkZWZpbml0aW9uCisKK0ZpeGVzCit0ZWFtbmwuYzoxNjA6MjogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdmZF9zZXQnOyBkaWQgeW91IG1lYW4gJ2Zwb3NfdCc/CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB1dGlscy90ZWFtbmwuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdXRpbHMvdGVhbW5sLmMgYi91dGlscy90ZWFtbmwuYworaW5kZXggZThkZTdlMi4uMjUxMjllOCAxMDA2NDQKKy0tLSBhL3V0aWxzL3RlYW1ubC5jCisrKysgYi91dGlscy90ZWFtbmwuYworQEAgLTI0LDYgKzI0LDcgQEAKKyAjaW5jbHVkZSA8Z2V0b3B0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN5cy9zaWduYWxmZC5oPgorKyNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8dGVhbS5oPgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vMDAwMi10ZWFtZC1SZS1hZGp1c3QtaW5jbHVkZS1oZWFkZXItb3JkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS8wMDAyLXRlYW1kLVJlLWFkanVzdC1pbmNsdWRlLWhlYWRlci1vcmRlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWFiZjYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vMDAwMi10ZWFtZC1SZS1hZGp1c3QtaW5jbHVkZS1oZWFkZXItb3JkZXIucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBhNWI5NDVjYjNjNjJhMThkY2Q3MDQ3ZjYyNzA3YzA5MDc2YzRlNDhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTU6MzU6NTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIHRlYW1kOiBSZS1hZGp1c3QgaW5jbHVkZSBoZWFkZXIgb3JkZXIKKworU28gaXQgZ2V0cyB0aGUgbGlicmFyeSBkZWZpbml0aW9uIGJlZm9yZSBrZXJuZWwgZGVmaW5pdGlvbgorCit1c3IvaW5jbHVkZS9uZQordGluZXQvaWZfZXRoZXIuaDoxMDE6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IGV0aGhkcicKKyBzdHJ1Y3QgZXRoaGRyIHsKKyAgICAgICAgXn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB0ZWFtZC90ZWFtZF9ydW5uZXJfbGFjcC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVhbWQvdGVhbWRfcnVubmVyX2xhY3AuYyBiL3RlYW1kL3RlYW1kX3J1bm5lcl9sYWNwLmMKK2luZGV4IDljNzdmYWUuLjg4MDA4NTQgMTAwNjQ0CistLS0gYS90ZWFtZC90ZWFtZF9ydW5uZXJfbGFjcC5jCisrKysgYi90ZWFtZC90ZWFtZF9ydW5uZXJfbGFjcC5jCitAQCAtMjMsNiArMjMsNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorKyNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KKyAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KK0BAIC0zMCw3ICszMSw2IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHRlYW0uaD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9taXNjLmg+CistI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgorIAorICNpbmNsdWRlICJ0ZWFtZC5oIgorICNpbmNsdWRlICJ0ZWFtZF9jb25maWcuaCIKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMjI3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjI3LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgY29udHJvbGxpbmcgdGVhbSBuZXR3b3JrIGRldmljZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlidGVhbS5vcmcvIgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJsaWJubCBsaWJkYWVtb24gamFuc3NvbiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2pwaXJrby9saWJ0ZWFtIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItdGVhbWQtUmUtYWRqdXN0LWluY2x1ZGUtaGVhZGVyLW9yZGVyLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjkxYTkyOGE1NmE1MDFkYWFjNWNlOGIzYzE2YmQ5OTQzNjYxZjFkMTYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NjUxMTRkNzBjNDFiZmY2MDkzZDhlNTdiZTI4NGU4YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjUyODYzNzkxNDFkYjE0MWJlYTMzNDI0ZWMwNTA3YmIwZjgyN2EwYmYwM2Q5YzY1MDA0YmI1OTNlM2Q1NTQ1IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnRlYW0ke1NPTElCU30gXAorIgorCitQQUNLQUdFUyArPSAiJHtQTn0tZGN0bCAke1BOfS11dGlscyIKK0ZJTEVTXyR7UE59LWRjdGwgPSAiJHtsaWJkaXJ9L2xpYnRlYW1kY3RsJHtTT0xJQlN9IFwKKyIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ib25kMnRlYW0gXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RlYW1kIFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS90ZWFtZGN0bCBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGVhbW5sIFwKKyIKKworUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiYmFzaCIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl80LjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGlueXhtbDIvbGlidGlueXhtbDJfNC4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNjY1OTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl80LjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVGlueVhNTC0yIGlzIGEgc2ltcGxlLCBzbWFsbCwgZWZmaWNpZW50LCBDKysgWE1MIHBhcnNlciB0aGF0IGNhbiBiZSBlYXNpbHkgaW50ZWdyYXRpbmcgaW50byBvdGhlciBwcm9ncmFtcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3Jpbm5pbmdsaXphcmQuY29tL3Rpbnl4bWwyLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rpbnl4bWwyLmNwcDtlbmRsaW5lPTIyO21kNT1jMTkyMjFkYmQ4YTY2YWQzMDkwNDYyYWY0YzVkZTVlNyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xlZXRob21hc29uL3Rpbnl4bWwyLmdpdCIKLQotU1JDUkVWID0gIjc0ZDQ0YWNiMTc2Zjg1MTBhYmYyOGVlMGE3MDk2MWViMjY2MzE5ODgiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzUuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl81LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjVhYjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl81LjAuMS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlRpbnlYTUwtMiBpcyBhIHNpbXBsZSwgc21hbGwsIGVmZmljaWVudCwgQysrIFhNTCBwYXJzZXIgdGhhdCBjYW4gYmUgZWFzaWx5IGludGVncmF0aW5nIGludG8gb3RoZXIgcHJvZ3JhbXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdyaW5uaW5nbGl6YXJkLmNvbS90aW55eG1sMi8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIlpsaWIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90aW55eG1sMi5jcHA7ZW5kbGluZT0yMjttZDU9YzE5MjIxZGJkOGE2NmFkMzA5MDQ2MmFmNGM1ZGU1ZTciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sZWV0aG9tYXNvbi90aW55eG1sMi5naXQiCisKK1NSQ1JFViA9ICIzN2JjM2FjYTQyOWYwMTY0YWRmNjhjMjM0NDQ1NDBiNGEyNGI1Nzc4IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLzAwMDEtcHJvZy1Eby1ub3QtbGltaXQtc3lzLWlvLmgtaGVhZGVyLWluY2x1ZGUtdG8tanVzdC1nbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1wcm9nLURvLW5vdC1saW1pdC1zeXMtaW8uaC1oZWFkZXItaW5jbHVkZS10by1qdXN0LWdsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMzg3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLzAwMDEtcHJvZy1Eby1ub3QtbGltaXQtc3lzLWlvLmgtaGVhZGVyLWluY2x1ZGUtdG8tanVzdC1nbC5wYXRjaApAQCAtMCwwICsxLDg4IEBACitGcm9tIDcyNzUyNDQ1M2YxMTVkZGMwNTEwOWU5YmJiM2QwZTYwYTdkYjkxODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBKdWwgMjAxNyAxNTowNTo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBwcm9nOiBEbyBub3QgbGltaXQgc3lzL2lvLmggaGVhZGVyIGluY2x1ZGUgdG8ganVzdCBnbGliYworCittdXNsIHByb3ZpZGVzIGl0IHRvby4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHByb2cvZHVtcC9pc2FkdW1wLmMgfCA2IC0tLS0tLQorIHByb2cvZHVtcC9pc2FzZXQuYyAgfCA2IC0tLS0tLQorIHByb2cvZHVtcC9zdXBlcmlvLmMgfCA1IC0tLS0tCisgcHJvZy9kdW1wL3V0aWwuYyAgICB8IDUgLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDIyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHJvZy9kdW1wL2lzYWR1bXAuYyBiL3Byb2cvZHVtcC9pc2FkdW1wLmMKK2luZGV4IGUwZTZmMDAuLjg3OTQ1MzcgMTAwNjQ0CistLS0gYS9wcm9nL2R1bXAvaXNhZHVtcC5jCisrKysgYi9wcm9nL2R1bXAvaXNhZHVtcC5jCitAQCAtMzYsMTMgKzM2LDcgQEAKKyAjaW5jbHVkZSAidXRpbC5oIgorICNpbmNsdWRlICJzdXBlcmlvLmgiCisgCistCistLyogVG8ga2VlcCBnbGliYzIgaGFwcHkgKi8KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAwCisgI2luY2x1ZGUgPHN5cy9pby5oPgorLSNlbHNlCistI2luY2x1ZGUgPGFzbS9pby5oPgorLSNlbmRpZgorIAorICNpZmRlZiBfX3Bvd2VycGNfXworIHVuc2lnbmVkIGxvbmcgaXNhX2lvX2Jhc2UgPSAwOyAvKiBYWFggZm9yIG5vdyAqLworZGlmZiAtLWdpdCBhL3Byb2cvZHVtcC9pc2FzZXQuYyBiL3Byb2cvZHVtcC9pc2FzZXQuYworaW5kZXggZTc0Mzc1NS4uODVhNGY2NCAxMDA2NDQKKy0tLSBhL3Byb2cvZHVtcC9pc2FzZXQuYworKysrIGIvcHJvZy9kdW1wL2lzYXNldC5jCitAQCAtMzIsMTMgKzMyLDcgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgInV0aWwuaCIKKyAKKy0KKy0vKiBUbyBrZWVwIGdsaWJjMiBoYXBweSAqLworLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDAKKyAjaW5jbHVkZSA8c3lzL2lvLmg+CistI2Vsc2UKKy0jaW5jbHVkZSA8YXNtL2lvLmg+CistI2VuZGlmCisgCisgI2lmZGVmIF9fcG93ZXJwY19fCisgdW5zaWduZWQgbG9uZyBpc2FfaW9fYmFzZSA9IDA7IC8qIFhYWCBmb3Igbm93ICovCitkaWZmIC0tZ2l0IGEvcHJvZy9kdW1wL3N1cGVyaW8uYyBiL3Byb2cvZHVtcC9zdXBlcmlvLmMKK2luZGV4IDY0ZWYyN2IuLjkwNmZlNTUgMTAwNjQ0CistLS0gYS9wcm9nL2R1bXAvc3VwZXJpby5jCisrKysgYi9wcm9nL2R1bXAvc3VwZXJpby5jCitAQCAtMjAsMTIgKzIwLDcgQEAKKyAqLworIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAwCisgI2luY2x1ZGUgPHN5cy9pby5oPgorLSNlbHNlCistI2luY2x1ZGUgPGFzbS9pby5oPgorLSNlbmRpZgorIAorICNpbmNsdWRlICJzdXBlcmlvLmgiCisgCitkaWZmIC0tZ2l0IGEvcHJvZy9kdW1wL3V0aWwuYyBiL3Byb2cvZHVtcC91dGlsLmMKK2luZGV4IDg3NGMxYjkuLjE5N2ZhNjQgMTAwNjQ0CistLS0gYS9wcm9nL2R1bXAvdXRpbC5jCisrKysgYi9wcm9nL2R1bXAvdXRpbC5jCitAQCAtMTEsMTIgKzExLDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAidXRpbC5oIgorIAorLS8qIFRvIGtlZXAgZ2xpYmMyIGhhcHB5ICovCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiBfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMAorICNpbmNsdWRlIDxzeXMvaW8uaD4KKy0jZWxzZQorLSNpbmNsdWRlIDxhc20vaW8uaD4KKy0jZW5kaWYKKyAKKyAvKiBSZXR1cm4gMSBpZiB3ZSBzaG91bGQgY29udGludWUsIDAgaWYgd2Ugc2hvdWxkIGFib3J0ICovCisgaW50IHVzZXJfYWNrKGludCBkZWYpCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29yc18zLjQuMC5iYgppbmRleCBkYmMwNWE4Li40NTRhNjlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy40LjAuYmIKQEAgLTExLDYgKzExLDcgQEAKICAgICAgICAgICAgZmlsZTovL2ZhbmNvbnRyb2wuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly9zZW5zb3JkLmluaXQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1sbXNlbnNvcnMtc2Vuc29ycy1kZXRlY3QtcHJpbnQtYS1zcGVjaWFsLW1lc3NhZ2Utd2hlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHJvZy1Eby1ub3QtbGltaXQtc3lzLWlvLmgtaGVhZGVyLWluY2x1ZGUtdG8tanVzdC1nbC5wYXRjaCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMWU5ZjExN2NiZmExMWJlMTk1NWFkYzk2ZGY3MWVhZGIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTMzNGMxYzJiMDZmNzI5MGUzZTY2YmRhZTMzMGE1ZDM2MDU0NzAxZmZkNDdhNWRkZTdhMDZmOWE3NDAyY2I0ZSIKQEAgLTM3LDYgKzM4LDExIEBACiAgICAgICAgIENDPSIke0NDfSIgQVI9IiR7QVJ9IicKIAogZG9fY29tcGlsZSgpIHsKKyAgICBzZWQgLWkgLWUgJ3M6XiMgXChQUk9HX0VYVFJBXCk6XDE6JyAke1N9L01ha2VmaWxlCisgICAgIyBSZXNwZWN0IExERkxBR1MKKyAgICBzZWQgLWkgLWUgJ3MvXCQoTElCRElSKSQvXCQoTElCRElSKSBcJChMREZMQUdTKS9nJyAke1N9L01ha2VmaWxlCisgICAgc2VkIC1pIC1lICdzL1wkKExJQlNIU09OQU1FKSAtby8kKExJQlNIU09OQU1FKSBcJChMREZMQUdTKSAtby9nJyBcCisgICAgICAgICAgICAgICAgJHtTfS9saWIvTW9kdWxlLm1rCiAgICAgb2VfcnVubWFrZSB1c2VyIFBST0dfRVhUUkE9InNlbnNvcnMgc2Vuc29yZCIKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sb2d3YXJuL2xvZ3dhcm5fMS4wLjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sb2d3YXJuL2xvZ3dhcm5fMS4wLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZTM2YmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xvZ3dhcm4vbG9nd2Fybl8xLjAuMTQuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJBIHV0aWxpdHkgZm9yIGZpbmRpbmcgaW50ZXJlc3RpbmcgbWVzc2FnZXMgaW4gbG9nIGZpbGVzIgorREVTQ1JJUFRJT04gPSAiTG9nd2FybiBzZWFyY2hlcyBmb3IgaW50ZXJlc3RpbmcgbWVzc2FnZXMgaW4gbG9nIGZpbGVzLCBcCisgIHdoZXJlICdpbnRlcmVzdGluZycgaXMgZGVmaW5lZCBieSBhIHVzZXItc3VwcGxpZWQgbGlzdCBvZiBwb3NpdGl2ZSBhbmQgXAorICBuZWdhdGl2ZSBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25zLiBcCisiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXJjaGllY29iYnMvbG9nd2Fybi93aWtpIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vYXJjaGllLXB1YmxpYy8ke0JQTn0vJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTU0NGE2MjMwNjczZWE1NGY3NDMwYmY4MTdiYjM5ZDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGRiZmNmOWIyOGM3ODJhYjNiZGRkNmE2MjBkNGZiOTVkMWIwZmZjYmU5MzI3Njk5NmNkYzQ4MDBhYTlhZWJkMSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKKyMgVGhpcyBkaXJlY3RvcnkgaXMgTk9UIHZvbGF0aWxlLgorIworbGNsX2RlZmF1bHRfc3RhdGVfZGlyID0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3dhcm4iCisKK0NGTEFHUyArPSAnLURERUZBVUxUX1NUQVRFX0RJUj1cIiIke2xjbF9kZWZhdWx0X3N0YXRlX2Rpcn1cIiInCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICIgXAorICAgIGFjX2N2X3BhdGhfQkFTSF9TSEVMTD0ke2Jhc2VfYmluZGlyfS9iYXNoIFwKKyAgICBhY19jdl9wYXRoX0NBVD0ke2Jhc2VfYmluZGlyfS9jYXQgXAorICAgIGFjX2N2X3BhdGhfUk09JHtiYXNlX2JpbmRpcn0vcm0gXAorICAgIGFjX2N2X3BhdGhfU0VEPSR7YmFzZV9iaW5kaXJ9L3NlZCBcCisiCisKKyMgTWFrZSBzdXJlIHNvbWUgZmlsZXMgZXhpc3QgZm9yIGF1dG9yZWNvbmYuCisjCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgdG91Y2ggJHtTfS9ORVdTCisgICAgdG91Y2ggJHtTfS9DaGFuZ2VMb2cKKyAgICB0b3VjaCAke1N9L1JFQURNRQorfQorCisjIENyZWF0ZSBhIGRpcmVjdG9yeSBmb3IgbG9nZmlsZSBzdGF0ZSBpbmZvLCB1c3VhbGx5IHVuZGVyIC92YXIvbGliLgorIworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7bGNsX2RlZmF1bHRfc3RhdGVfZGlyfQorfQorCisjIE1ha2UgYSBwYWNrYWdlIGZvciB0aGUgbmFnaW9zIHBsdWctaW4gKHNjcmlwdCkuCisjCitQQUNLQUdFUyArPSAiJHtQTn0tbmFnaW9zIgorCitGSUxFU18ke1BOfS1uYWdpb3MgPSAiJHtub25hcmNoX2xpYmRpcn0vbmFnaW9zIgorCitSREVQRU5EU18ke1BOfS1uYWdpb3MgKz0gImJhc2ggY29yZXV0aWxzIHNlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA1LWRvLW5vdC1idWlsZC1tYW51YWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwNS1kby1ub3QtYnVpbGQtbWFudWFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YWE5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwNS1kby1ub3QtYnVpbGQtbWFudWFsLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gZDhiYjI1ZTM0ZDY1MzNiYTc4ZWFhZTY5Nzc3MWVlNDk5YTY2NzA2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMiBBdWcgMjAxNyAwMzo0MTozNyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBkbyBub3QgYnVpbGQgbWFudWFsCisKK09uIHNvbWUgaG9zdCAodWJ1bnR1IDE0MDQpLCBidWlsZCBtYW51YWwgZmFpbGVkLgorLi4uCisuL3Rvb2xzL21hbi1nZW5lcmF0b3IgLS1wcmltYXJ5IGx2c2NhbiBsdnNjYW4uOF9kZXMKK0ZhaWxlZCB0byBzdGF0IGRlc2NyaXB0aW9uIGZpbGUgbHZzY2FuLjhfZGVzLgorLi4uCisKK0RvIG5vdCBidWlsZCBtYW4gdG8gd29ya2Fyb3VuZCB0aGUgaXNzdWUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgfCA0ICsrLS0KKyBjb25maWd1cmUuaW4gfCAxIC0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDMxZDQyOGQuLjI0Zjg5YTIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xOCw3ICsxOCw3IEBAIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACisgYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAorIGFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorIAorLVNVQkRJUlMgPSBjb25mIGRhZW1vbnMgaW5jbHVkZSBsaWIgbGliZGFlbW9uIGxpYmRtIG1hbiBzY3JpcHRzIHRvb2xzCisrU1VCRElSUyA9IGNvbmYgZGFlbW9ucyBpbmNsdWRlIGxpYiBsaWJkYWVtb24gbGliZG0gc2NyaXB0cyB0b29scworIAorIGlmZXEgKCJAVURFVl9SVUxFU0AiLCAieWVzIikKKyAgIFNVQkRJUlMgKz0gdWRldgorQEAgLTY5LDcgKzY5LDcgQEAgbGlibHZtLmRldmljZS1tYXBwZXI6IGluY2x1ZGUuZGV2aWNlLW1hcHBlcgorIGRhZW1vbnMuZGV2aWNlLW1hcHBlcjogbGliZG0uZGV2aWNlLW1hcHBlcgorIHRvb2xzLmRldmljZS1tYXBwZXI6IGxpYmRtLmRldmljZS1tYXBwZXIKKyBzY3JpcHRzLmRldmljZS1tYXBwZXI6IGluY2x1ZGUuZGV2aWNlLW1hcHBlcgorLWRldmljZS1tYXBwZXI6IHRvb2xzLmRldmljZS1tYXBwZXIgZGFlbW9ucy5kZXZpY2UtbWFwcGVyIG1hbi5kZXZpY2UtbWFwcGVyCisrZGV2aWNlLW1hcHBlcjogdG9vbHMuZGV2aWNlLW1hcHBlciBkYWVtb25zLmRldmljZS1tYXBwZXIKKyAKKyBpZmVxICgiQElOVExAIiwgInllcyIpCisgbGliLnBvZmlsZTogaW5jbHVkZS5wb2ZpbGUKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDFkYzg4MTkuLjEwOGFjZTQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTIyMTMsNyArMjIxMyw2IEBAIGxpYmRtL01ha2VmaWxlCisgbGliZG0vbGliZGV2bWFwcGVyLnBjCisgbGlibHZtL01ha2VmaWxlCisgbGlibHZtL2xpYmx2bTJhcHAucGMKKy1tYW4vTWFrZWZpbGUKKyBwby9NYWtlZmlsZQorIHB5dGhvbi9NYWtlZmlsZQorIHB5dGhvbi9zZXR1cC5weQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwNi1zdGFydC1sdm0yLW1vbml0b3Iuc2VydmljZS1hZnRlci10bXAubW91bnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwNi1zdGFydC1sdm0yLW1vbml0b3Iuc2VydmljZS1hZnRlci10bXAubW91bnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU2OGQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA2LXN0YXJ0LWx2bTItbW9uaXRvci5zZXJ2aWNlLWFmdGVyLXRtcC5tb3VudC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDI0YTJjNDdmZDAxZGRlMTcxMGYxZmE2NmY1YzMwY2U3MDEwYzU5NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIxIFNlcCAyMDE3IDE1OjI4OjEwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0YXJ0IGx2bTItbW9uaXRvci5zZXJ2aWNlIGFmdGVyIHRtcC5tb3VudAorCitUaGUgbHZtMi1tb25pdG9yLnNlcnZpY2UgcmVxaXJlcyB0aGUgZXhpc3RlbmNlIG9mIGxvY2tpbmdfZGlyCisoIi90bXAvbG9jay9sdm0iKSwgYW5kIHVuaXQgdG1wLm1vdW50IGlzIHRvIG1vdW50IC90bXAuCitTbyBzdGFydCBsdm0yLW1vbml0b3Iuc2VydmljZSBhZnRlciB0bXAubW91bnQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2NyaXB0cy9sdm0yX21vbml0b3Jpbmdfc3lzdGVtZF9yZWRfaGF0LnNlcnZpY2UuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2x2bTJfbW9uaXRvcmluZ19zeXN0ZW1kX3JlZF9oYXQuc2VydmljZS5pbiBiL3NjcmlwdHMvbHZtMl9tb25pdG9yaW5nX3N5c3RlbWRfcmVkX2hhdC5zZXJ2aWNlLmluCitpbmRleCAyMjIzOGI3Li45M2IyYmVlIDEwMDY0NAorLS0tIGEvc2NyaXB0cy9sdm0yX21vbml0b3Jpbmdfc3lzdGVtZF9yZWRfaGF0LnNlcnZpY2UuaW4KKysrKyBiL3NjcmlwdHMvbHZtMl9tb25pdG9yaW5nX3N5c3RlbWRfcmVkX2hhdC5zZXJ2aWNlLmluCitAQCAtMiw3ICsyLDcgQEAKKyBEZXNjcmlwdGlvbj1Nb25pdG9yaW5nIG9mIExWTTIgbWlycm9ycywgc25hcHNob3RzIGV0Yy4gdXNpbmcgZG1ldmVudGQgb3IgcHJvZ3Jlc3MgcG9sbGluZworIERvY3VtZW50YXRpb249bWFuOmRtZXZlbnRkKDgpIG1hbjpsdmNyZWF0ZSg4KSBtYW46bHZjaGFuZ2UoOCkgbWFuOnZnY2hhbmdlKDgpCisgUmVxdWlyZXM9ZG0tZXZlbnQuc29ja2V0IGx2bTItbHZtZXRhZC5zb2NrZXQKKy1BZnRlcj1kbS1ldmVudC5zb2NrZXQgZG0tZXZlbnQuc2VydmljZSBsdm0yLWx2bWV0YWQuc29ja2V0IGx2bTItYWN0aXZhdGlvbi5zZXJ2aWNlIGx2bTItbHZtZXRhZC5zZXJ2aWNlCisrQWZ0ZXI9ZG0tZXZlbnQuc29ja2V0IGRtLWV2ZW50LnNlcnZpY2UgbHZtMi1sdm1ldGFkLnNvY2tldCBsdm0yLWFjdGl2YXRpb24uc2VydmljZSBsdm0yLWx2bWV0YWQuc2VydmljZSB0bXAubW91bnQKKyBCZWZvcmU9bG9jYWwtZnMtcHJlLnRhcmdldAorIERlZmF1bHREZXBlbmRlbmNpZXM9bm8KKyBDb25mbGljdHM9c2h1dGRvd24udGFyZ2V0CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzL2x2bS5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzL2x2bS5jb25mCmluZGV4IDllM2I1ZmUuLmMyYmI4NWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy9sdm0uY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvbHZtLmNvbmYKQEAgLTIxNCw3ICsyMTQsNyBAQAogCiAgICAgIyBMb2NhbCBub24tTFYgZGlyZWN0b3J5IHRoYXQgaG9sZHMgZmlsZS1iYXNlZCBsb2NrcyB3aGlsZSBjb21tYW5kcyBhcmUKICAgICAjIGluIHByb2dyZXNzLiAgQSBkaXJlY3RvcnkgbGlrZSAvdG1wIHRoYXQgbWF5IGdldCB3aXBlZCBvbiByZWJvb3QgaXMgT0suCi0gICAgbG9ja2luZ19kaXIgPSAiL3Zhci9sb2NrL2x2bSIKKyAgICBsb2NraW5nX2RpciA9ICIvdG1wL2xvY2svbHZtIgogCiAgICAgIyBPdGhlciBlbnRyaWVzIGNhbiBnbyBoZXJlIHRvIGFsbG93IHlvdSB0byBsb2FkIHNoYXJlZCBsaWJyYXJpZXMKICAgICAjIGUuZy4gaWYgc3VwcG9ydCBmb3IgTFZNMSBtZXRhZGF0YSB3YXMgY29tcGlsZWQgYXMgYSBzaGFyZWQgbGlicmFyeSB1c2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9saWJkZXZtYXBwZXJfMi4wMi4xNjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbGliZGV2bWFwcGVyXzIuMDIuMTY2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjJlOGZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9saWJkZXZtYXBwZXJfMi4wMi4xNjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1yZXF1aXJlIGx2bTIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNWE1NGVlMGI4NjcwM2RhYWFkNmU4NTY0MzllMTE1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMTIwYjA2NmI4NWIyMjQ1NTJlZmRhNDAyMDQ0ODhjNTEyM2RlMDY4NzI1Njc2ZmQ2ZTVjOGJjNjU1MDUxYjk0IgotCi1ERVBFTkRTICs9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJRyA9ICIiCi0KLSMgVW5zZXQgdXNlci9ncm91cCB0byB1bmJyZWFrIGluc3RhbGwuCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXVzZXI9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZ3JvdXA9IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1wa2djb25maWcgXAotICAgICAgICAgICAgICAgIC0td2l0aC11c3JsaWJkaXI9JHtsaWJkaXJ9IFwKLSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgUmVtb3ZlIHRoaW5ncyB1bnJlbGF0ZWQgdG8gbGliZGV2bWFwcGVyCi0gICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgZm9yIGkgaW4gYGxzICR7RH0ke3NiaW5kaXJ9LypgOyBkbwotCWlmIFsgJGkgIT0gJHtEfSR7c2JpbmRpcn0vZG1zZXR1cCBdOyB0aGVuCi0JICAgIHJtICRpCi0JZmkKLSAgICBkb25lCi0gICAgIyBSZW1vdmUgZG9jcwotICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfQotfQotCi1SUkVDT01NRU5EU18ke1BOfSArPSAibHZtMi11ZGV2cnVsZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbGliZGV2bWFwcGVyXzIuMDIuMTcxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2xpYmRldm1hcHBlcl8yLjAyLjE3MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmFlOTAyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2xpYmRldm1hcHBlcl8yLjAyLjE3MS5iYgpAQCAtMCwwICsxLDE2IEBACityZXF1aXJlIGx2bTIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTNiN2JiNjQzZWIyNjA3MzI3NDk2OGU5MDI2ZmE4ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODE1YTcxMWEyZmFiYWE1YzNkYzFhNGEyODRkZjAyNjhiZjBmMzI1ZjBmYzBmNWM5NTMwYzliYmI1NGI5OTY0IgorCitERVBFTkRTICs9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAtQyBsaWJkbSBpbnN0YWxsCit9CisKK1JSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGx2bTItdWRldnJ1bGVzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMi5pbmMKaW5kZXggY2I1YTllMC4uMjg5ZTA3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yLmluYwpAQCAtMSwzICsxLDQgQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL2x2bTIvIgogU0VDVElPTiA9ICJ1dGlscyIKIERFU0NSSVBUSU9OID0gIkxWTTIgaXMgYSBzZXQgb2YgdXRpbGl0aWVzIHRvIG1hbmFnZSBsb2dpY2FsIHZvbHVtZXMgaW4gTGludXguIgogTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKQEAgLTEzLDE2ICsxNCwyNSBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMy1pbmNsdWRlLWZjbnRsLmgtZm9yLU9fLWRlZmluZXMtYW5kLWZjbnRsLXNpZ25hdHVyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXR3ZWFrLU1PRFBST0JFX0NNRC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUF2b2lkLWJhc2hpc21zLWluLWluaXQtc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRvLW5vdC1idWlsZC1tYW51YWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1zdGFydC1sdm0yLW1vbml0b3Iuc2VydmljZS1hZnRlci10bXAubW91bnQucGF0Y2ggXAogICAgICAgICAgICAiCiBTID0gIiR7V09SS0RJUn0vTFZNMi4ke1BWfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBzeXN0ZW1kCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQgbGljZW5zZQorCitMVk0yX1BBQ0tBR0VDT05GSUcgPSAiZG1ldmVudGQgbHZtZXRhZCIKK0xWTTJfUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsIGQpfSBcCisgICAgJHtAaW5jb21wYXRpYmxlX2xpY2Vuc2VfY29udGFpbnMoJ0dQTHYzJywgJycsICd0aGluLXByb3Zpc2lvbmluZy10b29scycsIGQpfSBcCisgICAgdWRldiBcCisiCiAKICMgb2RpcmVjdCBpcyBhbHdheXMgZW5hYmxlZCBiZWNhdXNlIHRoZXJlIGN1cnJlbnRseSBpcyBhIGJ1ZyBpbgogIyBsaWIvZGV2aWNlL2Rldi1pby5jIHdoaWNoIHByZXZlbnRzIGNvbXBpbGluZyB3aXRob3V0IGl0LiBJdCBpcwogIyBiZXR0ZXIgdG8gc3RpY2sgdG8gY29uZmlndXJhdGlvbnMgdGhhdCB3ZXJlIGFjdHVhbGx5IHRlc3RlZCBieQogIyB1cHN0cmVhbS4uLgotUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiIG9kaXJlY3QiCitQQUNLQUdFQ09ORklHID8/PSAib2RpcmVjdCAke0xWTTJfUEFDS0FHRUNPTkZJR30iCiAKIFBBQ0tBR0VDT05GSUdbZG1ldmVudGRdID0gIi0tZW5hYmxlLWRtZXZlbnRkLC0tZGlzYWJsZS1kbWV2ZW50ZCIKIFBBQ0tBR0VDT05GSUdbbHZtZXRhZF0gPSAiLS1lbmFibGUtbHZtZXRhZCwtLWRpc2FibGUtbHZtZXRhZCIKQEAgLTMxLDMgKzQxLDIwIEBACiBQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCIKIFBBQ0tBR0VDT05GSUdbdGhpbi1wcm92aXNpb25pbmctdG9vbHNdID0gIi0td2l0aC10aGluPWludGVybmFsLC0td2l0aC10aGluPW5vbmUsLHRoaW4tcHJvdmlzaW9uaW5nLXRvb2xzIgogUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2X3N5bmMgLS1lbmFibGUtdWRldl9ydWxlcyAtLXdpdGgtdWRldmRpcj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZCwtLWRpc2FibGUtdWRldl9zeW5jIC0tZGlzYWJsZS11ZGV2X3J1bGVzLHVkZXYiCisKKyMgVW5zZXQgdXNlci9ncm91cCB0byB1bmJyZWFrIGluc3RhbGwuCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXVzZXI9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZ3JvdXA9IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1yZWFsdGltZSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYXBwbGliIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbWRsaWIgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBrZ2NvbmZpZyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXVzcmxpYmRpcj0ke2xpYmRpcn0gXAorICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtdGhpbl9jaGVja19uZWVkc19jaGVjayBcCisgICAgICAgICAgICAgICAgLS13aXRoLXRoaW4tY2hlY2s9JHtzYmluZGlyfS90aGluX2NoZWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtdGhpbi1kdW1wPSR7c2JpbmRpcn0vdGhpbl9kdW1wIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtdGhpbi1yZXBhaXI9JHtzYmluZGlyfS90aGluX3JlcGFpciBcCisgICAgICAgICAgICAgICAgLS13aXRoLXRoaW4tcmVzdG9yZT0ke3NiaW5kaXJ9L3RoaW5fcmVzdG9yZSBcCisiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yLzAwMDEtZXhwbGljaXRseS1kby1ub3QtaW5zdGFsbC1saWJkbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yLzAwMDEtZXhwbGljaXRseS1kby1ub3QtaW5zdGFsbC1saWJkbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODU4MThkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTIvMDAwMS1leHBsaWNpdGx5LWRvLW5vdC1pbnN0YWxsLWxpYmRtLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMGE4ZTQ2NmZjZjk5NjIyODk2ZTA3MGM1MTMzMTY1ZTQyNzhlOGNmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjUgTWF5IDIwMTcgMDU6Mjc6MTEgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gZXhwbGljaXRseSBkbyBub3QgaW5zdGFsbCBsaWJkbQorCitBbHJlYWR5IGhhdmUgcGFja2FnZSBsaWJkZXZtYXBwZXIgd2hpY2ggc3BsaXQgZnJvbSBsdm0yLAorZXhwbGljaXRseSBkbyBub3QgZG8gdGhlIGluc3RhbGxhdGlvbiBoZXJlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW21ldGEtb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmRtL01ha2VmaWxlLmluIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZG0vTWFrZWZpbGUuaW4gYi9saWJkbS9NYWtlZmlsZS5pbgoraW5kZXggM2M5YTRjZS4uNDVjOTFjNiAxMDA2NDQKKy0tLSBhL2xpYmRtL01ha2VmaWxlLmluCisrKysgYi9saWJkbS9NYWtlZmlsZS5pbgorQEAgLTc3LDkgKzc3LDExIEBAIGlmZXEgKCJAUEtHQ09ORklHQCIsICJ5ZXMiKQorICAgSU5TVEFMTF9UWVBFICs9IGluc3RhbGxfcGtnY29uZmlnCisgZW5kaWYKKyAKKy1pbnN0YWxsOiAkKElOU1RBTExfVFlQRSkgaW5zdGFsbF9pbmNsdWRlCisraW5zdGFsbDoKKysJZWNobyAiRG8gbm90IGluc3RhbGwgZGV2aWNlIG1hcHBsZXIgaW4gbHZtMiIKKyAKKy1pbnN0YWxsX2RldmljZS1tYXBwZXI6IGluc3RhbGwKKytpbnN0YWxsX2RldmljZS1tYXBwZXI6CisrCWVjaG8gIkRvIG5vdCBpbnN0YWxsIGRldmljZSBtYXBwbGVyIGluIGx2bTIiCisgCisgaW5zdGFsbF9pbmNsdWRlOiAkKHNyY2RpcikvbGliZGV2bWFwcGVyLmgKKyAJJChJTlNUQUxMX0RBVEEpIC1EICQ8ICQoaW5jbHVkZWRpcikvJCg8RikKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTJfMi4wMi4xNjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMl8yLjAyLjE2Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkzOWYwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMl8yLjAyLjE2Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLXJlcXVpcmUgbHZtMi5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImM1YTU0ZWUwYjg2NzAzZGFhYWQ2ZTg1NjQzOWUxMTVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUxMjBiMDY2Yjg1YjIyNDU1MmVmZGE0MDIwNDQ4OGM1MTIzZGUwNjg3MjU2NzZmZDZlNWM4YmM2NTUwNTFiOTQiCi0KLURFUEVORFMgKz0gImF1dG9jb25mLWFyY2hpdmUtbmF0aXZlIgotCi1MVk0yX1BBQ0tBR0VDT05GSUcgPSAiZG1ldmVudGQgbHZtZXRhZCIKLUxWTTJfUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsIGQpfSBcCi0gICAgdGhpbi1wcm92aXNpb25pbmctdG9vbHMgXAotICAgIHVkZXYgXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtMVk0yX1BBQ0tBR0VDT05GSUd9IgotCi0jIFVuc2V0IHVzZXIvZ3JvdXAgdG8gdW5icmVhayBpbnN0YWxsLgotRVhUUkFfT0VDT05GID0gIi0td2l0aC11c2VyPSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWdyb3VwPSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtcmVhbHRpbWUgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFwcGxpYiBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY21kbGliIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1wa2djb25maWcgXAotICAgICAgICAgICAgICAgIC0td2l0aC11c3JsaWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXRoaW5fY2hlY2tfbmVlZHNfY2hlY2sgXAotICAgICAgICAgICAgICAgIC0td2l0aC10aGluLWNoZWNrPSR7c2JpbmRpcn0vdGhpbl9jaGVjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXRoaW4tZHVtcD0ke3NiaW5kaXJ9L3RoaW5fZHVtcCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXRoaW4tcmVwYWlyPSR7c2JpbmRpcn0vdGhpbl9yZXBhaXIgXAotICAgICAgICAgICAgICAgIC0td2l0aC10aGluLXJlc3RvcmU9JHtzYmluZGlyfS90aGluX3Jlc3RvcmUgXAotIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiTU9EUFJPQkVfQ01EPSR7YmFzZV9zYmluZGlyfS9tb2Rwcm9iZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBJbnN0YWxsIG1hY2hpbmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9sdm0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sdm0uY29uZiAke0R9JHtzeXNjb25mZGlyfS9sdm0vbHZtLmNvbmYKLSAgICBzZWQgLWkgLWUgJ3M6QGxpYmRpckA6JHtsaWJkaXJ9OmcnICR7RH0ke3N5c2NvbmZkaXJ9L2x2bS9sdm0uY29uZgotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsIGluc3RhbGxfc3lzdGVtZF91bml0cwotICAgICAgICBzZWQgLWkgLWUgJ3M6L3Vzci9iaW4vdHJ1ZToke2Jhc2VfYmluZGlyfS90cnVlOmcnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2Jsay1hdmFpbGFiaWxpdHkuc2VydmljZQotICAgIGVsc2UKLSAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsIGluc3RhbGxfaW5pdHNjcmlwdHMKLSAgICAgICAgbXYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZC9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9yYy5kCi0gICAgZmkKLSAgICAjIFJlbW92ZSB0aGluZ3MgcmVsYXRlZCB0byBsaWJkZXZtYXBwZXIKLSAgICBybSAtZiAke0R9JHtzYmluZGlyfS9kbXNldHVwCi0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJkZXZtYXBwZXIuc28uKgotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vbGliZGV2bWFwcGVyLnNvICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2Rldm1hcHBlci5wYyAke0R9JHtpbmNsdWRlZGlyfS9saWJkZXZtYXBwZXIuaAotfQotCi1QQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1zY3JpcHRzICR7UE59LXVkZXZydWxlcyIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbWV2ZW50ZCcsICdsdm0yLW1vbml0b3Iuc2VydmljZSBkbS1ldmVudC5zb2NrZXQgZG0tZXZlbnQuc2VydmljZScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2x2bWV0YWQnLCAnbHZtMi1sdm1ldGFkLnNvY2tldCBsdm0yLXB2c2NhbkAuc2VydmljZScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgIGJsay1hdmFpbGFiaWxpdHkuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZGV2aWNlLW1hcHBlci8qLnNvIgotRklMRVNfJHtQTn0tc2NyaXB0cyA9ICIgXAotICAgICR7c2JpbmRpcn0vYmxrZGVhY3RpdmF0ZSBcCi0gICAgJHtzYmluZGlyfS9mc2FkbSBcCi0gICAgJHtzYmluZGlyfS9sdm1jb25mIFwKLSAgICAke3NiaW5kaXJ9L2x2bWR1bXAgXAotIgotIyBTcGVjaWZpZWQgZXhwbGljaXRseSBmb3IgdGhlIHVkZXYgcnVsZXMsIGp1c3QgaW4gY2FzZSB0aGF0IGl0IGRvZXMgbm90IGdldCBwaWNrZWQKLSMgdXAgYXV0b21hdGljYWxseToKLUZJTEVTXyR7UE59LXVkZXZydWxlcyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZCIKLVJERVBFTkRTXyR7UE59X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGxpYmRldm1hcHBlciIKLQotUkRFUEVORFNfJHtQTn0tc2NyaXB0cyA9ICIke1BOfSAoPSAke0VYVEVORFBLR1Z9KSBiYXNoIgotUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiR7UE59LXNjcmlwdHMgKD0gJHtFWFRFTkRQS0dWfSkiCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sdm0vbHZtLmNvbmYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yXzIuMDIuMTcxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTJfMi4wMi4xNzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4ODFlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yXzIuMDIuMTcxLmJiCkBAIC0wLDAgKzEsNTQgQEAKK3JlcXVpcmUgbHZtMi5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjE1M2I3YmI2NDNlYjI2MDczMjc0OTY4ZTkwMjZmYThmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4MTVhNzExYTJmYWJhYTVjM2RjMWE0YTI4NGRmMDI2OGJmMGYzMjVmMGZjMGY1Yzk1MzBjOWJiYjU0Yjk5NjQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWV4cGxpY2l0bHktZG8tbm90LWluc3RhbGwtbGliZG0ucGF0Y2giCisKK0RFUEVORFMgKz0gImF1dG9jb25mLWFyY2hpdmUtbmF0aXZlIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiTU9EUFJPQkVfQ01EPSR7YmFzZV9zYmluZGlyfS9tb2Rwcm9iZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBJbnN0YWxsIG1hY2hpbmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9sdm0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sdm0uY29uZiAke0R9JHtzeXNjb25mZGlyfS9sdm0vbHZtLmNvbmYKKyAgICBzZWQgLWkgLWUgJ3M6QGxpYmRpckA6JHtsaWJkaXJ9OmcnICR7RH0ke3N5c2NvbmZkaXJ9L2x2bS9sdm0uY29uZgorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsIGluc3RhbGxfc3lzdGVtZF91bml0cworICAgICAgICBzZWQgLWkgLWUgJ3M6L3Vzci9iaW4vdHJ1ZToke2Jhc2VfYmluZGlyfS90cnVlOmcnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2Jsay1hdmFpbGFiaWxpdHkuc2VydmljZQorICAgIGVsc2UKKyAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsIGluc3RhbGxfaW5pdHNjcmlwdHMKKyAgICAgICAgbXYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZC9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9yYy5kCisgICAgZmkKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tc2NyaXB0cyAke1BOfS11ZGV2cnVsZXMiCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZG1ldmVudGQnLCAnbHZtMi1tb25pdG9yLnNlcnZpY2UgZG0tZXZlbnQuc29ja2V0IGRtLWV2ZW50LnNlcnZpY2UnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsdm1ldGFkJywgJ2x2bTItbHZtZXRhZC5zb2NrZXQgbHZtMi1wdnNjYW5ALnNlcnZpY2UnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBibGstYXZhaWxhYmlsaXR5LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2RldmljZS1tYXBwZXIvKi5zbyIKK0ZJTEVTXyR7UE59LXNjcmlwdHMgPSAiIFwKKyAgICAke3NiaW5kaXJ9L2Jsa2RlYWN0aXZhdGUgXAorICAgICR7c2JpbmRpcn0vZnNhZG0gXAorICAgICR7c2JpbmRpcn0vbHZtY29uZiBcCisgICAgJHtzYmluZGlyfS9sdm1kdW1wIFwKKyIKKyMgU3BlY2lmaWVkIGV4cGxpY2l0bHkgZm9yIHRoZSB1ZGV2IHJ1bGVzLCBqdXN0IGluIGNhc2UgdGhhdCBpdCBkb2VzIG5vdCBnZXQgcGlja2VkCisjIHVwIGF1dG9tYXRpY2FsbHk6CitGSUxFU18ke1BOfS11ZGV2cnVsZXMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQiCitSREVQRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBsaWJkZXZtYXBwZXIiCisKK1JERVBFTkRTXyR7UE59LXNjcmlwdHMgPSAiJHtQTn0gKD0gJHtFWFRFTkRQS0dWfSkgYmFzaCIKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIke1BOfS1zY3JpcHRzICg9ICR7RVhURU5EUEtHVn0pIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbHZtL2x2bS5jb25mIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x6aXAvbHppcF8xLjE2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9semlwL2x6aXBfMS4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVkOTk2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x6aXAvbHppcF8xLjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJMb3NzbGVzcyBkYXRhIGNvbXByZXNzb3IgYmFzZWQgb24gdGhlIExaTUEgYWxnb3JpdGhtIgotSE9NRVBBR0UgPSAiaHR0cDovL2x6aXAubm9uZ251Lm9yZy9semlwLmh0bWwiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2ZDZlMzAwZmZkOGZiOWQxOGJkOWIxMzZhOWJiYTEzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlY29kZXIuY2M7ZW5kbGluZT0xNjttZDU9MDgwOTEyOGFjMzIxNjMyNTI4NDZlMDlhNzBjOGI4MGIiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9semlwL2x6aXAtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzE2YTk4NzZkYzU5NWVjNTJkNGYzYmRhODFlNDI0NzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTI4Y2MyNWJhZjkyYzhiNjk3MDA4MzFlNmY5ODRkOTU0MDE2MzE4Y2M3OGVkY2E4Nzg3MGQwYzAzMzExMjc1MSIKLQotQ09ORklHVVJFT1BUUyA9ICJcCi0gICAgJy0tc3JjZGlyPSR7U30nIFwKLSAgICAnLS1wcmVmaXg9JHtwcmVmaXh9JyBcCi0gICAgJy0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0nIFwKLSAgICAnLS1iaW5kaXI9JHtiaW5kaXJ9JyBcCi0gICAgJy0tZGF0YWRpcj0ke2RhdGFkaXJ9JyBcCi0gICAgJy0taW5mb2Rpcj0ke2luZm9kaXJ9JyBcCi0gICAgJy0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCi0gICAgJ0NYWD0ke0NYWH0nIFwKLSAgICAnQ1BQRkxBR1M9JHtDUFBGTEFHU30nIFwKLSAgICAnQ1hYRkxBR1M9JHtDWFhGTEFHU30nIFwKLSAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCi0iCi1FWFRSQV9PRU1BS0UgPSAiIgotCi1CID0gIiR7U30vb2JqIgotZG9fY29uZmlndXJlICgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotICAgICMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCi0gICAgaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCi0gICAgICAgIHJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgotICAgIGZpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWFpbGNhcC9tYWlsY2FwXzIuMS40Ni5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWFpbGNhcC9tYWlsY2FwXzIuMS40Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThiOGYwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21haWxjYXAvbWFpbGNhcF8yLjEuNDYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkhlbHBlciBhcHBsaWNhdGlvbiBhbmQgTUlNRSB0eXBlIGFzc29jaWF0aW9ucyBmb3IgZmlsZSB0eXBlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBtYWlsY2FwIGZpbGUgaXMgdXNlZCBieSB0aGUgbWV0YW1haWwgcHJvZ3JhbS4gTWV0YW1haWwgcmVhZHMgdGhlIFwKLW1haWxjYXAgZmlsZSB0byBkZXRlcm1pbmUgaG93IGl0IHNob3VsZCBkaXNwbGF5IG5vbi10ZXh0IG9yIG11bHRpbWVkaWEgXAotbWF0ZXJpYWwuIEJhc2ljYWxseSwgbWFpbGNhcCBhc3NvY2lhdGVzIGEgcGFydGljdWxhciB0eXBlIG9mIGZpbGUgXAotd2l0aCBhIHBhcnRpY3VsYXIgcHJvZ3JhbSB0aGF0IGEgbWFpbCBhZ2VudCBvciBvdGhlciBwcm9ncmFtIGNhbiBjYWxsIFwKLWluIG9yZGVyIHRvIGhhbmRsZSB0aGUgZmlsZS4gTWFpbGNhcCBzaG91bGQgYmUgaW5zdGFsbGVkIHRvIGFsbG93IFwKLWNlcnRhaW4gcHJvZ3JhbXMgdG8gYmUgYWJsZSB0byBoYW5kbGUgbm9uLXRleHQgZmlsZXMuIFwKLVwKLUFsc28gaW5jbHVkZWQgaW4gdGhpcyBwYWNrYWdlIGlzIHRoZSBtaW1lLnR5cGVzIGZpbGUgd2hpY2ggY29udGFpbnMgYSBcCi1saXN0IG9mIE1JTUUgdHlwZXMgYW5kIHRoZWlyIGZpbGVuYW1lIGV4dGVuc2lvbiBhc3NvY2lhdGlvbnMsIHVzZWQgIFwKLWJ5IHNldmVyYWwgYXBwbGljYXRpb25zIGUuZy4gdG8gZGV0ZXJtaW5lIE1JTUUgdHlwZXMgZm9yIGZpbGVuYW1lcy4iCi0KLVNFQ1RJT04gPSAiU3lzdGVtIEVudmlyb25tZW50L0Jhc2UiCi0KLUxJQ0VOU0UgPSAiUEQgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMDBmY2ZiODQ1MTJjY2MwM2ZmYzdkODlhYzM5MTMwNSIKLQotU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvJHtCUE59LyR7QlB9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ4NjVhMWJhZjU3NGFlNWQzMDlmNWMxZjc5MzE1ODAwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2OGViM2I1MzFkNzMxNDc2ZDU5ODBjOWI3Y2MyODdiZDY0YzJhMTNiZWM1YTUzNzAwOWEyYzRhZjYzZjliYjAiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBzeXNjb25mZGlyPSR7c3lzY29uZmRpcn0gbWFuZGlyPSR7bWFuZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tYWlsY2FwL21haWxjYXBfMi4xLjQ4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tYWlsY2FwL21haWxjYXBfMi4xLjQ4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNGNlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21haWxjYXAvbWFpbGNhcF8yLjEuNDguYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJIZWxwZXIgYXBwbGljYXRpb24gYW5kIE1JTUUgdHlwZSBhc3NvY2lhdGlvbnMgZm9yIGZpbGUgdHlwZXMiCitIT01FUEFHRSA9ICJodHRwczovL3BhZ3VyZS5pby9tYWlsY2FwIgorREVTQ1JJUFRJT04gPSAiVGhlIG1haWxjYXAgZmlsZSBpcyB1c2VkIGJ5IHRoZSBtZXRhbWFpbCBwcm9ncmFtLiBNZXRhbWFpbCByZWFkcyB0aGUgXAorbWFpbGNhcCBmaWxlIHRvIGRldGVybWluZSBob3cgaXQgc2hvdWxkIGRpc3BsYXkgbm9uLXRleHQgb3IgbXVsdGltZWRpYSBcCittYXRlcmlhbC4gQmFzaWNhbGx5LCBtYWlsY2FwIGFzc29jaWF0ZXMgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgZmlsZSBcCit3aXRoIGEgcGFydGljdWxhciBwcm9ncmFtIHRoYXQgYSBtYWlsIGFnZW50IG9yIG90aGVyIHByb2dyYW0gY2FuIGNhbGwgXAoraW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBmaWxlLiBNYWlsY2FwIHNob3VsZCBiZSBpbnN0YWxsZWQgdG8gYWxsb3cgXAorY2VydGFpbiBwcm9ncmFtcyB0byBiZSBhYmxlIHRvIGhhbmRsZSBub24tdGV4dCBmaWxlcy4gXAorXAorQWxzbyBpbmNsdWRlZCBpbiB0aGlzIHBhY2thZ2UgaXMgdGhlIG1pbWUudHlwZXMgZmlsZSB3aGljaCBjb250YWlucyBhIFwKK2xpc3Qgb2YgTUlNRSB0eXBlcyBhbmQgdGhlaXIgZmlsZW5hbWUgZXh0ZW5zaW9uIGFzc29jaWF0aW9ucywgdXNlZCAgXAorYnkgc2V2ZXJhbCBhcHBsaWNhdGlvbnMgZS5nLiB0byBkZXRlcm1pbmUgTUlNRSB0eXBlcyBmb3IgZmlsZW5hbWVzLiIKKworU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvQmFzZSIKKworTElDRU5TRSA9ICJQRCAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwMGZjZmI4NDUxMmNjYzAzZmZjN2Q4OWFjMzkxMzA1IgorCitTUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy8ke0JQTn0vJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmMyNmUxOGU5MTJhNWNmMDAzMThmY2Y3ZjhmMmQ3NDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDdiMDIzYjIzN2Q2MDUzYmYwNWZmNjc4NmUwNjYzYzU1YzYxNGVmY2M5OWNkZjg1NjEyMGJlMTNiNWMyOTE1NyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IHN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfSBtYW5kaXI9JHttYW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTM0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGZiZmNlZWJjZTIxMjE4MzE5MDRmMmY3MTE1MjUyZGQwM2I0MTNhNmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOSBTZXAgMjAxNyAxODo1Mjo1MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBJbnRlbFJERlBNYXRoTGliMjBVMTogQ2hlY2sgZm9yIF9fREVGSU5FRF93Y2hhcl90CisKK1RoaXMgaXMgZGVmaW5lZCBieSBtdXNsIGlmIHdjaGFyX3QgaXMgYWxyZWFkeSBkZWZpbmVkCisKK2F2b2lkcyBlcnJvcnMgbGlrZQorCitzcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oOjQ2OjE1OiBlcnJvcjogdHlwZWRlZiByZWRlZmluaXRpb24gd2l0aCBkaWZmZXJlbnQgdHlwZXMKKyAgICAgICgnaW50JyB2cyAndW5zaWduZWQgaW50JykKK3R5cGVkZWYgaW50ICAgd2NoYXJfdDsKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RoaXJkX3BhcnR5L0ludGVsUkRGUE1hdGhMaWIyMFUxL0xJQlJBUlkvc3JjL2JpZF9mdW5jdGlvbnMuaCBiL3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9MSUJSQVJZL3NyYy9iaWRfZnVuY3Rpb25zLmgKK2luZGV4IDJiM2Y3NmRiODYuLmNjODAzMDU3NzUgMTAwNzU1CistLS0gYS9zcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oCisrKysgYi9zcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oCitAQCAtNDIsNyArNDIsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorIAorIC8vIEZpeCBzeXN0ZW0gaGVhZGVyIGlzc3VlIG9uIFN1biBzb2xhcmlzIGFuZCBkZWZpbmUgcmVxdWlyZWQgdHlwZSBieSBvdXJzZWx2ZXMKKy0jaWYgIWRlZmluZWQoX1dDSEFSX1QpICYmICFkZWZpbmVkKF9XQ0hBUl9UX0RFRklORUQpICYmICFkZWZpbmVkKF9fUU5YX18pCisrI2lmICFkZWZpbmVkKF9XQ0hBUl9UKSAmJiAhZGVmaW5lZChfV0NIQVJfVF9ERUZJTkVEKSAmJiAhZGVmaW5lZChfX1FOWF9fKSAmJiAhZGVmaW5lZChfX0RFRklORURfd2NoYXJfdCkKKyB0eXBlZGVmIGludCAgIHdjaGFyX3Q7CisgI2VuZGlmCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhjNDE5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIDNlZWQ4Mzg4YjQ5ZDVkM2NiYzJkYjc0ZmVlMWIwMTdlYjRiNDBkMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDEwOjA2OjI0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBfX0dMSUJDX18gdG8gY29udHJvbCB1c2Ugb2YgZ251X2dldF9saWJjX3ZlcnNpb24KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisgc3JjL21vbmdvL3V0aWwvcHJvY2Vzc2luZm9fbGludXguY3BwIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3V0aWwvcHJvY2Vzc2luZm9fbGludXguY3BwIGIvc3JjL21vbmdvL3V0aWwvcHJvY2Vzc2luZm9fbGludXguY3BwCitpbmRleCA5MTAwMTUyMTVlLi5iZjhjMWZmZDE1IDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL3V0aWwvcHJvY2Vzc2luZm9fbGludXguY3BwCisrKysgYi9zcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAKK0BAIC00MCw3ICs0MCw3IEBACisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpZmRlZiBfX1VDTElCQ19fCisrI2lmbmRlZiBfX0dMSUJDX18KKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAjZWxzZQorICNpbmNsdWRlIDxnbnUvbGliYy12ZXJzaW9uLmg+CitAQCAtNDUxLDExICs0NTEsMTMgQEAgZG91YmxlIFByb2Nlc3NJbmZvOjpnZXRTeXN0ZW1NZW1vcnlQcmVzc3VyZVBlcmNlbnRhZ2UoKSB7CisgfQorIAorIHZvaWQgUHJvY2Vzc0luZm86OmdldEV4dHJhSW5mbyhCU09OT2JqQnVpbGRlciYgaW5mbykgeworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgTGludXhQcm9jIHAoX3BpZCk7CisgICAgIGlmIChwLl9tYWpfZmx0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpCisgICAgICAgICBpbmZvLmFwcGVuZE51bWJlcigicGFnZV9mYXVsdHMiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHAuX21hal9mbHQpKTsKKyAgICAgZWxzZQorICAgICAgICAgaW5mby5hcHBlbmROdW1iZXIoInBhZ2VfZmF1bHRzIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPihwLl9tYWpfZmx0KSk7CisrI2VuZGlmCisgfQorIAorIC8qKgorQEAgLTQ5MSw3ICs0OTMsNyBAQCB2b2lkIFByb2Nlc3NJbmZvOjpTeXN0ZW1JbmZvOjpjb2xsZWN0U3lzdGVtSW5mbygpIHsKKyAgICAgc3RyaW5nc3RyZWFtIHNzOworICAgICBzcyA8PCAidUNsaWJjLSIgPDwgX19VQ0xJQkNfTUFKT1JfXyA8PCAiLiIgPDwgX19VQ0xJQkNfTUlOT1JfXyA8PCAiLiIgPDwgX19VQ0xJQkNfU1VCTEVWRUxfXzsKKyAgICAgYkV4dHJhLmFwcGVuZCgibGliY1ZlcnNpb24iLCBzcy5zdHIoKSk7CistI2Vsc2UKKysjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgYkV4dHJhLmFwcGVuZCgibGliY1ZlcnNpb24iLCBnbnVfZ2V0X2xpYmNfdmVyc2lvbigpKTsKKyAjZW5kaWYKKyAgICAgaWYgKCF2ZXJTaWcuZW1wdHkoKSkKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0M2JlYjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gYTQ5NTE0ODlkNjQ5YzJiNjA5Y2JiODBmNmNmYjQ5ZmRjYWQ4YmQ0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIgU2VwIDIwMTcgMTA6MDM6MzcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIGxvbmcgbG9uZyBpbnN0ZWFkIG9mIGludDY0X3QKKworRml4ZXMKK2Vycm9yOiBjYWxsIHRvIG1lbWJlciBmdW5jdGlvbiAnYXBwZW5kTnVtYmVyJyBpcyBhbWJpZ3VvdXMKK3NpbmNlIHRoaXMgZnVuY3Rpb24gZXhwZWN0cyBsb25nIGxvbmcgYXMgcGFyYW1ldGVyIGFuZCBub3QgaW50NjRfdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKyBzcmMvbW9uZ28vdXRpbC9wcm9jcGFyc2VyLmNwcCB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAgYi9zcmMvbW9uZ28vdXRpbC9wcm9jcGFyc2VyLmNwcAoraW5kZXggMzZmMmFlMDI1NC4uMmMxNjRiY2JmMyAxMDA2NDQKKy0tLSBhL3NyYy9tb25nby91dGlsL3Byb2NwYXJzZXIuY3BwCisrKysgYi9zcmMvbW9uZ28vdXRpbC9wcm9jcGFyc2VyLmNwcAorQEAgLTI2MCw3ICsyNjAsNyBAQCBTdGF0dXMgcGFyc2VQcm9jU3RhdChjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmdEYXRhPiYga2V5cywKKyAKKyAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0RhdGEgc3RyaW5nVmFsdWUoKCpwYXJ0SXQpLmJlZ2luKCksICgqcGFydEl0KS5lbmQoKSAtICgqcGFydEl0KS5iZWdpbigpKTsKKyAKKy0gICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlOworKyAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nICB2YWx1ZTsKKyAKKyAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHN0cmluZ1ZhbHVlLCAmdmFsdWUpLmlzT0soKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKK0BAIC0yNzIsNyArMjcyLDcgQEAgU3RhdHVzIHBhcnNlUHJvY1N0YXQoY29uc3Qgc3RkOjp2ZWN0b3I8U3RyaW5nRGF0YT4mIGtleXMsCisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpIC0gKCpwYXJ0SXQpLmJlZ2luKCkpOworIAorLSAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWx1ZTsKKysgICAgICAgICAgICAgICAgbG9uZyBsb25nIHZhbHVlOworIAorICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhzdHJpbmdWYWx1ZSwgJnZhbHVlKS5pc09LKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKK0BAIC0zNjUsNyArMzY1LDcgQEAgU3RhdHVzIHBhcnNlUHJvY01lbUluZm8oY29uc3Qgc3RkOjp2ZWN0b3I8U3RyaW5nRGF0YT4mIGtleXMsCisgCisgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpKTsKKyAKKy0gICAgICAgICAgICB1aW50NjRfdCB2YWx1ZTsKKysgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWU7CisgCisgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nVmFsdWUsICZ2YWx1ZSkuaXNPSygpKSB7CisgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKK0BAIC00MjYsNyArNDI2LDcgQEAgU3RhdHVzIHBhcnNlUHJvY0Rpc2tTdGF0cyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmdEYXRhPiYgZGlza3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdEYXRhIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCU09OT2JqQnVpbGRlciogYnVpbGRlcikgeworICAgICBib29sIGZvdW5kS2V5cyA9IGZhbHNlOworLSAgICBzdGQ6OnZlY3Rvcjx1aW50NjRfdD4gc3RhdHM7CisrICAgIHN0ZDo6dmVjdG9yPGxvbmcgbG9uZz4gc3RhdHM7CisgICAgIHN0YXRzLnJlc2VydmUoa0Rpc2tGaWVsZENvdW50KTsKKyAKKyAgICAgdXNpbmcgc3RyaW5nX3NwbGl0X2l0ZXJhdG9yID0gYm9vc3Q6OnNwbGl0X2l0ZXJhdG9yPFN0cmluZ0RhdGE6OmNvbnN0X2l0ZXJhdG9yPjsKK0BAIC01MDEsNyArNTAxLDcgQEAgU3RhdHVzIHBhcnNlUHJvY0Rpc2tTdGF0cyhjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmdEYXRhPiYgZGlza3MsCisgCisgICAgICAgICAgICAgICAgIFN0cmluZ0RhdGEgc3RyaW5nVmFsdWUoKCpwYXJ0SXQpLmJlZ2luKCksICgqcGFydEl0KS5lbmQoKSk7CisgCistICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbHVlOworKyAgICAgICAgICAgICAgICBsb25nIGxvbmcgdmFsdWU7CisgCisgICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHN0cmluZ1ZhbHVlLCAmdmFsdWUpLmlzT0soKSkgeworICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2Utc3RyZXJyb3Jfci1vbmx5LW9uLWdsaWJjLXN5c3RlbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1zdHJlcnJvcl9yLW9ubHktb24tZ2xpYmMtc3lzdGVtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzM0ZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2Utc3RyZXJyb3Jfci1vbmx5LW9uLWdsaWJjLXN5c3RlbXMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBhNGRmYzkyZmYzNDJlNTk1OTZhYjY0MjY3YThkNGYyMmYxNzNjMjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMiBTZXAgMjAxNyAxMjo0MDo0MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvNF0gVXNlIHN0cmVycm9yX3Igb25seSBvbiBnbGliYyBzeXN0ZW1zCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9uZ28vdXRpbC9sb2cuY3BwIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3V0aWwvbG9nLmNwcCBiL3NyYy9tb25nby91dGlsL2xvZy5jcHAKK2luZGV4IDE5NTdlYjQ3OTEuLmRkZjM5MDg4MTggMTAwNjQ0CistLS0gYS9zcmMvbW9uZ28vdXRpbC9sb2cuY3BwCisrKysgYi9zcmMvbW9uZ28vdXRpbC9sb2cuY3BwCitAQCAtMTAxLDcgKzEwMSw3IEBAIHN0cmluZyBlcnJub1dpdGhEZXNjcmlwdGlvbihpbnQgZXJyTnVtYmVyKSB7CisgICAgIGNoYXIgYnVmW2tCdWZsZW5dOworICAgICBjaGFyKiBtc2d7bnVsbHB0cn07CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX0dOVV9TT1VSQ0UpCisrI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX0dOVV9TT1VSQ0UpICYmIGRlZmluZWQoX19HTElCQ19fKQorICAgICBtc2cgPSBzdHJlcnJvcl9yKGVyck51bWJlciwgYnVmLCBrQnVmbGVuKTsKKyAjZWxpZiBkZWZpbmVkKF9XSU4zMikKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLW1vbmdvLUFkZC11c2luZy1zdGQtc3RyaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MTdkNTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLW1vbmdvLUFkZC11c2luZy1zdGQtc3RyaW5nLnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gNWZkZWM5NTkyMjg1ZjU5NzYzNDVmYmNjYjNkMDdmYWUxMjQ1YWI1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIgQXVnIDIwMTcgMTU6NDE6MjIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbW9uZ286IEFkZCB1c2luZyBzdGQ6OnN0cmluZworCitUaGlzIGlzIG5lZWRlZCB3aXRoIGxhdGVzdCBjbGFuZworRml4ZXMKK3NyYy9tb25nby9kYi9kYndlYnNlcnZlci5jcHA6MjA2OjIzOiBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnc3RyaW5nJzsgZGlkIHlvdSBtZWFuICdTdHJpbmcnPworICAgICAgICBzdGF0aWMgdmVjdG9yPHN0cmluZz4gY29tbWFuZHM7CisgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CisgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwICAgICAgICAgICAgIHwgMSArCisgc3JjL21vbmdvL2RiL21hdGNoZXIvZXhwcmVzc2lvbl9sZWFmLmNwcCB8IDIgKysKKyBzcmMvbW9uZ28vZGIvcmVwbC9tYXN0ZXJfc2xhdmUuY3BwICAgICAgIHwgMSArCisgc3JjL21vbmdvL3V0aWwvbmV0L21pbml3ZWJzZXJ2ZXIuY3BwICAgICB8IDEgKworIDQgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwIGIvc3JjL21vbmdvL2RiL2Rid2Vic2VydmVyLmNwcAoraW5kZXggYjIwMmUwNTAwYi4uMDI1NTYxMzUyNCAxMDA2NDQKKy0tLSBhL3NyYy9tb25nby9kYi9kYndlYnNlcnZlci5jcHAKKysrKyBiL3NyYy9tb25nby9kYi9kYndlYnNlcnZlci5jcHAKK0BAIC02Nyw2ICs2Nyw3IEBAIG5hbWVzcGFjZSBtb25nbyB7CisgdXNpbmcgc3RkOjptYXA7CisgdXNpbmcgc3RkOjpzdHJpbmdzdHJlYW07CisgdXNpbmcgc3RkOjp2ZWN0b3I7CisrdXNpbmcgc3RkOjpzdHJpbmc7CisgCisgdXNpbmcgbmFtZXNwYWNlIGh0bWw7CisgCitkaWZmIC0tZ2l0IGEvc3JjL21vbmdvL2RiL21hdGNoZXIvZXhwcmVzc2lvbl9sZWFmLmNwcCBiL3NyYy9tb25nby9kYi9tYXRjaGVyL2V4cHJlc3Npb25fbGVhZi5jcHAKK2luZGV4IGQ1NjJiZmYxNDEuLjRkOTMxOTg1ZTIgMTAwNjQ0CistLS0gYS9zcmMvbW9uZ28vZGIvbWF0Y2hlci9leHByZXNzaW9uX2xlYWYuY3BwCisrKysgYi9zcmMvbW9uZ28vZGIvbWF0Y2hlci9leHByZXNzaW9uX2xlYWYuY3BwCitAQCAtNDQsNiArNDQsOCBAQAorICNpbmNsdWRlICJtb25nby9zdGR4L21lbW9yeS5oIgorICNpbmNsdWRlICJtb25nby91dGlsL21vbmdvdXRpbHMvc3RyLmgiCisgCisrdXNpbmcgc3RkOjpzdHJpbmc7CisrCisgbmFtZXNwYWNlIG1vbmdvIHsKKyAKKyBTdGF0dXMgTGVhZk1hdGNoRXhwcmVzc2lvbjo6c2V0UGF0aChTdHJpbmdEYXRhIHBhdGgpIHsKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vZGIvcmVwbC9tYXN0ZXJfc2xhdmUuY3BwIGIvc3JjL21vbmdvL2RiL3JlcGwvbWFzdGVyX3NsYXZlLmNwcAoraW5kZXggMDVmYWFkMTI1OS4uZWEyNWQ3MTUxYiAxMDA2NDQKKy0tLSBhL3NyYy9tb25nby9kYi9yZXBsL21hc3Rlcl9zbGF2ZS5jcHAKKysrKyBiL3NyYy9tb25nby9kYi9yZXBsL21hc3Rlcl9zbGF2ZS5jcHAKK0BAIC03OCw2ICs3OCw3IEBAIHVzaW5nIHN0ZDo6ZW5kbDsKKyB1c2luZyBzdGQ6Om1heDsKKyB1c2luZyBzdGQ6Om1pbjsKKyB1c2luZyBzdGQ6OnNldDsKKyt1c2luZyBzdGQ6OnN0cmluZzsKKyB1c2luZyBzdGQ6OnN0cmluZ3N0cmVhbTsKKyB1c2luZyBzdGQ6OnVuaXF1ZV9wdHI7CisgdXNpbmcgc3RkOjp2ZWN0b3I7CitkaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3V0aWwvbmV0L21pbml3ZWJzZXJ2ZXIuY3BwIGIvc3JjL21vbmdvL3V0aWwvbmV0L21pbml3ZWJzZXJ2ZXIuY3BwCitpbmRleCA1ZjQxNjVkNDJmLi4yMzk3MjBjMzQ5IDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL3V0aWwvbmV0L21pbml3ZWJzZXJ2ZXIuY3BwCisrKysgYi9zcmMvbW9uZ28vdXRpbC9uZXQvbWluaXdlYnNlcnZlci5jcHAKK0BAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBtb25nbyB7CisgCisgdXNpbmcgc3RkOjpzaGFyZWRfcHRyOworIHVzaW5nIHN0ZDo6c3RyaW5nc3RyZWFtOworK3VzaW5nIHN0ZDo6c3RyaW5nOworIHVzaW5nIHN0ZDo6dmVjdG9yOworIAorIE1pbmlXZWJTZXJ2ZXI6Ok1pbmlXZWJTZXJ2ZXIoY29uc3Qgc3RyaW5nJiBuYW1lLCBjb25zdCBzdHJpbmcmIGlwLCBpbnQgcG9ydCwgU2VydmljZUNvbnRleHQqIGN0eCkKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTgzMDZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gZGY3ZWYxNmFmY2M2YWI1NWRhYTY4NmU0ZjE1YzE2ZTNkMTI4MDMzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIgU2VwIDIwMTcgMTI6NDI6MzAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIEFkZCBhIGRlZmluaXRpb24gZm9yIHRoZSBtYWNybyBfX0VMRl9OQVRJVkVfQ0xBU1MKKworSXQgZGVwZW5kcyBvbiB0aGUgbmF0aXZlIGFyY2gncyB3b3JkIHNpemUuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9uZ28vdXRpbC9zdGFja3RyYWNlX3Bvc2l4LmNwcCB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3V0aWwvc3RhY2t0cmFjZV9wb3NpeC5jcHAgYi9zcmMvbW9uZ28vdXRpbC9zdGFja3RyYWNlX3Bvc2l4LmNwcAoraW5kZXggNTNhYjg1ZjU2Zi4uN2M0NThlN2VmMiAxMDA2NDQKKy0tLSBhL3NyYy9tb25nby91dGlsL3N0YWNrdHJhY2VfcG9zaXguY3BwCisrKysgYi9zcmMvbW9uZ28vdXRpbC9zdGFja3RyYWNlX3Bvc2l4LmNwcAorQEAgLTM3LDYgKzM3LDE1IEBACisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyAKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyNpZiBkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgX19JTFAzMl9fCisrIyBkZWZpbmUgX19XT1JEU0laRSAgICA2NAorKyNlbHNlCisrIyBkZWZpbmUgX19XT1JEU0laRSAgICAzMgorKyNlbmRpZgorKyNkZWZpbmUgX19FTEZfTkFUSVZFX0NMQVNTIF9fV09SRFNJWkUKKysjZW5kaWYKKysKKyAjaW5jbHVkZSAibW9uZ28vYmFzZS9pbml0LmgiCisgI2luY2x1ZGUgIm1vbmdvL2NvbmZpZy5oIgorICNpbmNsdWRlICJtb25nby9kYi9qc29iai5oIgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMi1kX3N0YXRlLmNwcC1BZGQtbWlzc2luZy1kZXBlbmRlbm5jeS1vbi1sb2NhbF9zaGFyZGluLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMi1kX3N0YXRlLmNwcC1BZGQtbWlzc2luZy1kZXBlbmRlbm5jeS1vbi1sb2NhbF9zaGFyZGluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZjljMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1NzU5ODc4ZTVkMjc4ZjExYTEwNjNlOGZjY2QxZTZiN2I1NGNhYWRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMiBBdWcgMjAxNyAxNjoyNTozNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gZF9zdGF0ZS5jcHA6IEFkZCBtaXNzaW5nIGRlcGVuZGVubmN5IG9uCisgbG9jYWxfc2hhcmRpbmdfaW5mbworCitGaXhlcworfCBzcmMvbW9uZ28vcy9kX3N0YXRlLmNwcDo4MTogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ21vbmdvOjplbmFibGVMb2NhbFNoYXJkaW5nSW5mbyhtb25nbzo6U2VydmljZUNvbnRleHQqLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKG1vbmdvOjpPcGVyYXRpb25Db250ZXh0Kiwgc3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCYpPiknCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9uZ28vcy9TQ29uc2NyaXB0IHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vcy9TQ29uc2NyaXB0IGIvc3JjL21vbmdvL3MvU0NvbnNjcmlwdAoraW5kZXggNzE3MjBiZTUxNy4uNTFiZDE5OTEyNyAxMDA2NDQKKy0tLSBhL3NyYy9tb25nby9zL1NDb25zY3JpcHQKKysrKyBiL3NyYy9tb25nby9zL1NDb25zY3JpcHQKK0BAIC0zMTcsNSArMzE3LDYgQEAgZW52LkxpYnJhcnkoCisgICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9kYi9zL3NoYXJkaW5nIiwKKyAgICAgICAgICIkQlVJTERfRElSL21vbmdvL2V4ZWN1dG9yL25ldHdvcmtfaW50ZXJmYWNlX2ZhY3RvcnkiLAorICAgICAgICAgIiRCVUlMRF9ESVIvbW9uZ28vcy9jbGllbnQvc2hhcmRfbG9jYWwiLAorKyAgICAgICAgIiRCVUlMRF9ESVIvbW9uZ28vcy9sb2NhbF9zaGFyZGluZ19pbmZvIiwKKyAgICAgXSwKKyApCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAzLUNvbmRpdGlvbmFsaXplLWdsaWJjLXNwZWNpZmljLXN0cmVycm9yX3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAzLUNvbmRpdGlvbmFsaXplLWdsaWJjLXNwZWNpZmljLXN0cmVycm9yX3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5MWY5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDQ1OGY4MGY0ODJhMjAxYjQyN2ExYzkyMjM1ODA0ZDBjM2Y5OGZkNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDEzOjAxOjExIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBDb25kaXRpb25hbGl6ZSBnbGliYyBzcGVjaWZpYyBzdHJlcnJvcl9yCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyAuLi4vYXNpby1hc2lvLTEtMTEtMC9hc2lvL2luY2x1ZGUvYXNpby9pbXBsL2Vycm9yX2NvZGUuaXBwICAgIHwgMTEgKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RoaXJkX3BhcnR5L2FzaW8tYXNpby0xLTExLTAvYXNpby9pbmNsdWRlL2FzaW8vaW1wbC9lcnJvcl9jb2RlLmlwcCBiL3NyYy90aGlyZF9wYXJ0eS9hc2lvLWFzaW8tMS0xMS0wL2FzaW8vaW5jbHVkZS9hc2lvL2ltcGwvZXJyb3JfY29kZS5pcHAKK2luZGV4IDRlN2JhZGIxNGEuLjBlZWFlODg0ZTIgMTAwNjQ0CistLS0gYS9zcmMvdGhpcmRfcGFydHkvYXNpby1hc2lvLTEtMTEtMC9hc2lvL2luY2x1ZGUvYXNpby9pbXBsL2Vycm9yX2NvZGUuaXBwCisrKysgYi9zcmMvdGhpcmRfcGFydHkvYXNpby1hc2lvLTEtMTEtMC9hc2lvL2luY2x1ZGUvYXNpby9pbXBsL2Vycm9yX2NvZGUuaXBwCitAQCAtOTcsMTcgKzk3LDE0IEBAIHB1YmxpYzoKKyAjaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX1FOWF9fKSB8fCBkZWZpbmVkKF9fU1lNQklBTjMyX18pCisgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CisgICAgIHJldHVybiBzdHJlcnJvcih2YWx1ZSk7CistI2VsaWYgZGVmaW5lZChfX01BQ0hfXykgJiYgZGVmaW5lZChfX0FQUExFX18pIFwKKy0gIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgXAorLSAgfHwgZGVmaW5lZChfQUlYKSB8fCBkZWZpbmVkKF9faHB1eCkgfHwgZGVmaW5lZChfX29zZl9fKSBcCistICB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQorKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9HTlVfU09VUkNFKQorKyAgICBjaGFyIGJ1ZlsyNTZdID0gIiI7CisrICAgIHJldHVybiBzdHJlcnJvcl9yKHZhbHVlLCBidWYsIHNpemVvZihidWYpKTsKKysjZWxzZQorICAgICBjaGFyIGJ1ZlsyNTZdID0gIiI7CisgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CisgICAgIHN0cmVycm9yX3IodmFsdWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICByZXR1cm4gYnVmOworLSNlbHNlCistICAgIGNoYXIgYnVmWzI1Nl0gPSAiIjsKKy0gICAgcmV0dXJuIHN0cmVycm9yX3IodmFsdWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICNlbmRpZgorICNlbmRpZiAvLyBkZWZpbmVkKEFTSU9fV0lORE9XUykKKyAgIH0KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODcxZjJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gYTFjNzc3MDI5MjZlYjg1NDZmZjk2YjAwYjViOTk0Zjc0NzhkYWJhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIgU2VwIDIwMTcgMTM6MTM6MTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIHdpcmVkdGlnZXI6IERpc2FibGUgc3RydG91cSBvbiBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9idWlsZF9saW51eC93aXJlZHRpZ2VyX2NvbmZpZy5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvYnVpbGRfbGludXgvd2lyZWR0aWdlcl9jb25maWcuaCBiL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL2J1aWxkX2xpbnV4L3dpcmVkdGlnZXJfY29uZmlnLmgKK2luZGV4IDExMjJlMWUzMTkuLmZkZmQ0ODY4N2IgMTAwNjQ0CistLS0gYS9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9idWlsZF9saW51eC93aXJlZHRpZ2VyX2NvbmZpZy5oCisrKysgYi9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9idWlsZF9saW51eC93aXJlZHRpZ2VyX2NvbmZpZy5oCitAQCAtMTAxLDcgKzEwMSw3IEBACisgI2RlZmluZSBIQVZFX1NUUklOR19IIDEKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdXEnIGZ1bmN0aW9uLiAqLworLSNkZWZpbmUgSEFWRV9TVFJUT1VRIDEKKysvKiAjdW5kZWYgSEFWRV9TVFJUT1VRIDEgKi8KKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5bmNfZmlsZV9yYW5nZScgZnVuY3Rpb24uICovCisgLyogI3VuZGVmIEhBVkVfU1lOQ19GSUxFX1JBTkdFICovCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi9hcm02NC1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDQ2YmIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitBZGQgYWxpc2VzIGZvciBhcm02NCB3aGljaCBpcyBzYW1lIGFzIGFhcmNoNjQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogZ2l0L1NDb25zdHJ1Y3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9TQ29uc3RydWN0CisrKysgZ2l0L1NDb25zdHJ1Y3QKK0BAIC05OTAsNiArOTkwLDcgQEAgZWxpZiBlbmRpYW4gPT0gImJpZyI6CisgcHJvY2Vzc29yX21hY3JvcyA9IHsKKyAgICAgJ2FybScgICAgIDogeyAnZW5kaWFuJzogJ2xpdHRsZScsICdkZWZpbmVzJzogKCdfX2FybV9fJywpIH0sCisgICAgICdhYXJjaDY0JyA6IHsgJ2VuZGlhbic6ICdsaXR0bGUnLCAnZGVmaW5lcyc6ICgnX19hcm02NF9fJywgJ19fYWFyY2g2NF9fJyl9LAorKyAgICAnYXJtNjQnICAgOiB7ICdlbmRpYW4nOiAnbGl0dGxlJywgJ2RlZmluZXMnOiAoJ19fYXJtNjRfXycsICdfX2FhcmNoNjRfXycpfSwKKyAgICAgJ2kzODYnICAgIDogeyAnZW5kaWFuJzogJ2xpdHRsZScsICdkZWZpbmVzJzogKCdfX2kzODYnLCAnX01fSVg4NicpfSwKKyAgICAgJ3BwYzY0bGUnIDogeyAnZW5kaWFuJzogJ2xpdHRsZScsICdkZWZpbmVzJzogKCdfX3Bvd2VycGM2NF9fJywpfSwKKyAgICAgJ3MzOTB4JyAgIDogeyAnZW5kaWFuJzogJ2JpZycsICAgICdkZWZpbmVzJzogKCdfX3MzOTB4X18nLCl9LAorSW5kZXg6IGdpdC9zcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvU0NvbnNjcmlwdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9TQ29uc2NyaXB0CisrKysgZ2l0L3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9TQ29uc2NyaXB0CitAQCAtMzAxLDcgKzMwMSw3IEBAIGlmIHByb2Nlc3NvciA9PSAnaTM4Nic6CisgZWxpZiBwcm9jZXNzb3IgPT0gJ2FybSc6CisgICAgIGNwcF9kZWZpbmVzWydJQTMyJ10gPSAnMScKKyAgICAgY3BwX2RlZmluZXNbJ2lhMzInXSA9ICcxJworLWVsaWYgcHJvY2Vzc29yID09ICJhYXJjaDY0IjoKKytlbGlmIHByb2Nlc3NvciA9PSAiYWFyY2g2NCIgb3IgcHJvY2Vzc29yID09ICdhcm02NCc6CisgICAgIGNwcF9kZWZpbmVzWydlZmkyJ10gPSAnMScKKyAgICAgY3BwX2RlZmluZXNbJ0VGSTInXSA9ICcxJworICMgVXNpbmcgNjQgYml0IGxpdHRsZSBlbmRpYW4KK0luZGV4OiBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvU0NvbnNjcmlwdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL1NDb25zY3JpcHQKKysrKyBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvU0NvbnNjcmlwdAorQEAgLTEzOSw3ICsxMzksNyBAQCBjb25kaXRpb25fbWFwID0geworICAgICAnUE9TSVhfSE9TVCcgICA6IG5vdCBlbnYuVGFyZ2V0T1NJcygnd2luZG93cycpLAorICAgICAnV0lORE9XU19IT1NUJyA6IGVudi5UYXJnZXRPU0lzKCd3aW5kb3dzJyksCisgCistICAgICdBUk02NF9IT1NUJyAgIDogZW52WydUQVJHRVRfQVJDSCddID09ICdhYXJjaDY0JywKKysgICAgJ0FSTTY0X0hPU1QnICAgOiBlbnZbJ1RBUkdFVF9BUkNIJ10gaW4gKCdhYXJjaDY0JywgJ2FybTY0JyksCisgICAgICdQT1dFUlBDX0hPU1QnIDogZW52WydUQVJHRVRfQVJDSCddID09ICdwcGM2NGxlJywKKyAgICAgJ1g4Nl9IT1NUJyAgICAgOiBlbnZbJ1RBUkdFVF9BUkNIJ10gPT0gJ3g4Nl82NCcsCisgICAgICdaU0VSSUVTX0hPU1QnIDogZW52WydUQVJHRVRfQVJDSCddID09ICdzMzkweCcsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvZGlzYWJsZS1ody1jcmMzMi1vbi1hcm02NC1zMzkweC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzVjMjBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvZGlzYWJsZS1ody1jcmMzMi1vbi1hcm02NC1zMzkweC5wYXRjaApAQCAtMCwwICsxLDUwIEBACitpbXBvcnRlZCBmcm9tIGRlYmlhbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK0luZGV4OiBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvU0NvbnNjcmlwdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL1NDb25zY3JpcHQKKysrKyBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvU0NvbnNjcmlwdAorQEAgLTE2OSw3ICsxNjksOSBAQCBpZiB1c2VTbmFwcHk6CisgIyBJZiBub3QgYXZhaWxhYmxlIGF0IHJ1bnRpbWUsIHdlIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBpbiBzb21lIGNhc2VzLgorICMKKyAjIE9uIHpTZXJpZXMgd2UgbWF5IGRpc2FibGUgYmVjYXVzZSBTTEVTIDExIGtlcm5lbCBkb2Ugbm90IHN1cHBvcnQgdGhlIGluc3RydWN0aW9ucy4KKy1pZiBub3QgKGVudlsnVEFSR0VUX0FSQ0gnXSA9PSAnczM5MHgnIGFuZCBnZXRfb3B0aW9uKCJ1c2UtczM5MHgtY3JjMzIiKSA9PSAib2ZmIik6CisrIyBEZWJpYW46IGRpc2FibGUgaGFyZHdhcmUtYXNzaXN0ZWQgY3JjMzIgb24gczM5MHggYW5kIGFybTY0LCBhcyBhdCBsZWFzdCB0aGUKKysjIGJ1aWxkZCdzIGRvIG5vdCBzdXBwb3J0IHRoZSBpbnN0cnVjdGlvbnMuCisraWYgZW52WydUQVJHRVRfQVJDSCddIG5vdCBpbiAoJ3MzOTB4JywgJ2FybTY0JywgJ2FhcmNoNjQnKToKKyAgICAgZW52LkFwcGVuZChDUFBERUZJTkVTPVsiSEFWRV9DUkMzMl9IQVJEV0FSRSJdKQorIAorIHd0bGliID0gZW52LkxpYnJhcnkoCitJbmRleDogZ2l0L3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL2Rpc3QvZmlsZWxpc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9kaXN0L2ZpbGVsaXN0CisrKysgZ2l0L3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL2Rpc3QvZmlsZWxpc3QKK0BAIC01NCw3ICs1NCw2IEBAIHNyYy9jaGVja3N1bS9wb3dlcjgvY3JjMzJfd3JhcHBlci5jCVBPV0UKKyBzcmMvY2hlY2tzdW0vc29mdHdhcmUvY2hlY2tzdW0uYworIHNyYy9jaGVja3N1bS94ODYvY3JjMzIteDg2LmMJCVg4Nl9IT1NUCisgc3JjL2NoZWNrc3VtL3pzZXJpZXMvY3JjMzItczM5MHguYwlaU0VSSUVTX0hPU1QKKy1zcmMvY2hlY2tzdW0venNlcmllcy9jcmMzMmxlLXZ4LnN4CVpTRVJJRVNfSE9TVAorIHNyYy9jb25maWcvY29uZmlnLmMKKyBzcmMvY29uZmlnL2NvbmZpZ19hcGkuYworIHNyYy9jb25maWcvY29uZmlnX2NoZWNrLmMKK0luZGV4OiBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvc3JjL2NoZWNrc3VtL3pzZXJpZXMvY3JjMzItczM5MHguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL3NyYy9jaGVja3N1bS96c2VyaWVzL2NyYzMyLXMzOTB4LmMKKysrKyBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvc3JjL2NoZWNrc3VtL3pzZXJpZXMvY3JjMzItczM5MHguYworQEAgLTc4LDYgKzc4LDcgQEAgdW5zaWduZWQgaW50IF9fd3RfY3JjMzJjX2xlKHVuc2lnbmVkIGludAorIAkJcmV0dXJuIGNyYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIAl9CisgCisrI2lmIGRlZmluZWQoSEFWRV9DUkMzMl9IQVJEV0FSRSkKKyAvKiBNYWluIENSQy0zMiBmdW5jdGlvbnMgKi8KKyBERUZJTkVfQ1JDMzJfVlgoX193dF9jcmMzMmNfbGVfdngsIF9fd3RfY3JjMzJjX2xlX3ZnZm1fMTYsIF9fd3RfY3JjMzJjX2xlKQorIAorQEAgLTkwLDYgKzkxLDcgQEAgX193dF9jaGVja3N1bV9odyhjb25zdCB2b2lkICpjaHVuaywgc2l6ZQorIHsKKyAJcmV0dXJuICh+X193dF9jcmMzMmNfbGVfdngoMHhmZmZmZmZmZiwgY2h1bmssIGxlbikpOworIH0KKysjZW5kaWYKKyAKKyAjZW5kaWYKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiX2dpdC5iYgppbmRleCBmMWE2NTU1Li4wZmY3ZDBiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCkBAIC0xLDE4ICsxLDMwIEBACiBTVU1NQVJZID0gIm1vbmdvZGIiCi1MSUNFTlNFID0gIkFHUEwtMy4wICYgQXBhY2hlLTIuMCIKK0xJQ0VOU0UgPSAiQUdQTC0zLjAgJiBBcGFjaGUtMi4wICYgWmxpYiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0dOVS1BR1BMLTMuMC50eHQ7bWQ1PTczZjFlYjIwNTE3YzU1YmY5NDkzYjdkZDZlNDgwNzg4IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0FQQUNIRS0yLjAudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKIAotREVQRU5EUyA9ICJvcGVuc3NsIGxpYnBjcmUgbGlicGNhcCB6bGliIgorREVQRU5EUyA9ICJvcGVuc3NsIGxpYnBjcmUgbGlicGNhcCB6bGliIHB5dGhvbiBib29zdCIKIAotaW5oZXJpdCBzY29ucworaW5oZXJpdCBzY29ucyBkb3MydW5peCBzaXRlaW5mbwogCi1QViA9ICIzLjMuMCtnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICJhYWNkMjMxYmUwNjI2YTIwNGNiNDA5MDhhZmRmNjJjNGI2N2JiMGFkIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21vbmdvZGIvbW9uZ28uZ2l0O2JyYW5jaD1tYXN0ZXIgXAorUFYgPSAiMy40LjYrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiYzU1ZWI4NmVmNDZlZTdhZWRlM2IxZTJhNWQxODRhN2RmNGJmYjViNSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tb25nb2RiL21vbmdvLmdpdDticmFuY2g9djMuNCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tb25nby1BZGQtdXNpbmctc3RkLXN0cmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbG9uZy1sb25nLWluc3RlYWQtb2YtaW50NjRfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utc3RyZXJyb3Jfci1vbmx5LW9uLWdsaWJjLXN5c3RlbXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcm02NC1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtaHctY3JjMzItb24tYXJtNjQtczM5MHgucGF0Y2ggXAogICAgICAgICAgICAiCi0KK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9IlwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKICMgV2lyZWR0aWdlciBzdXBwb3J0cyBvbmx5IDY0LWJpdCBwbGF0Zm9ybXMKQEAgLTIyLDEwICszNCwxMyBAQAogIyBncGVyZnRvb2xzIGNvbXBpbGF0aW9uIGZhaWxzIGZvciBhcm0gYmVsb3cgdjcgYmVjYXVzZSBvZiBtaXNzaW5nIHN1cHBvcnQgb2YKICMgZG1iIG9wZXJhdGlvbi4gU28gd2UgdXNlIHN5c3RlbS1hbGxvY2F0b3IgaW5zdGVhZCBvZiB0Y21hbGxvYwogUEFDS0FHRUNPTkZJR19yZW1vdmVfYXJtdjYgPSAidGNtYWxsb2MiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAidGNtYWxsb2MiCiAKICNzdGQ6OmN1cnJlbnRfZXhjZXB0aW9uIGlzIHVuZGVmaW5lZCBmb3IgYXJtIDwgdjYKIENPTVBBVElCTEVfTUFDSElORV9hcm12NCA9ICIoIS4qYXJtdjQpLioiCiBDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjUgPSAiKCEuKmFybXY1KS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX2FybXY3YSA9ICIoIS4qYXJtdjdhKS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX2FybXY3dmUgPSAiKCEuKmFybXY3dmUpLioiCiBDT01QQVRJQkxFX01BQ0hJTkVfbWlwczY0ID0gIighLiptaXBzNjQpLioiCiBDT01QQVRJQkxFX01BQ0hJTkVfcG93ZXJwYyA9ICIoIS4qcHBjKS4qIgogCkBAIC00Myw5ICs1OCwxNCBAQAogICAgICAgICAgICAgICAgICAtLXVzZS1zeXN0ZW0temxpYiBcCiAgICAgICAgICAgICAgICAgIC0tanMtZW5naW5lPW5vbmUgXAogICAgICAgICAgICAgICAgICAtLW5vc3RyaXAgXAorICAgICAgICAgICAgICAgICAtLWVuZGlhbj0ke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKICAgICAgICAgICAgICAgICAgbW9uZ29kIG1vbmdvcyIKIAorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgICMgdGVzdHMgdXNlIGhleCBmbG9hdHMsIG5vdCBzdXBwb3J0ZWQgaW4gcGxhaW4gQysrCisgICAgICAgIHNlZCAtZSAnc3wtc3RkPWMrKzExfC1zdGQ9Z251KysxMXxnJyAtaSAke1N9L1NDb25zdHJ1Y3QKK30KIHNjb25zX2RvX2NvbXBpbGUoKSB7CiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zY29ucyAke1BBUkFMTEVMX01BS0V9ICR7RVhUUkFfT0VTQ09OU30gfHwgXAogICAgICAgICBkaWUgInNjb25zIGJ1aWxkIGV4ZWN1dGlvbiBmYWlsZWQuIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1rcGFydHgtaW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAxLWtwYXJ0eC1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmRkOGUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1rcGFydHgtaW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAzMzAwMjhhNWE5MDRhMGRhMzc4ODE0MTAzMGU2MTQ1NjlkYzVhYWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMjM6Mjg6MTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0ga3BhcnR4OiBpbmNsdWRlIGxpbWl0cy5oIGZvciBQQVRIX01BWAorCitsb3BhcnQuYzo3NjoxMjogZXJyb3I6ICdQQVRIX01BWCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ0lOVDhfTUFYJz8KKyAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICAgICAgICAgIF5+fn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBrcGFydHgvbG9wYXJ0LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2twYXJ0eC9sb3BhcnQuYyBiL2twYXJ0eC9sb3BhcnQuYworaW5kZXggNzAwNTQ0NS4uNWVmZTVkYyAxMDA2NDQKKy0tLSBhL2twYXJ0eC9sb3BhcnQuYworKysrIGIva3BhcnR4L2xvcGFydC5jCitAQCAtMjIsNiArMjIsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEtbXVsdGlwYXRoLWF0dGVtcHQtYXQtY29tbW9uLW11bHRpcGF0aC5ydWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEtbXVsdGlwYXRoLWF0dGVtcHQtYXQtY29tbW9uLW11bHRpcGF0aC5ydWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2I0MjY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGgtYXR0ZW1wdC1hdC1jb21tb24tbXVsdGlwYXRoLnJ1bGVzLnBhdGNoCkBAIC0wLDAgKzEsMTA3IEBACitGcm9tIDVhYjUwZTBjYjg4OGU1NTNhMjYzNWJiYmY4MWVlYTNjZGVmZmVlNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDEyIEFwciAyMDE3IDA5OjA3OjUxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTRdIG11bHRpcGF0aDogYXR0ZW1wdCBhdCBjb21tb24gbXVsdGlwYXRoLnJ1bGVzCisKK1RoaXMgaXMgYSBwcm9wb3NhbCB0byB0cnkgYW5kIGJyaW5nIHRoZSBSZWRoYXQgYW5kIFN1U0UgbXVsdGlwYXRoLnJ1bGVzCitjbG9zZXIuIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBjaGFuZ2VzIHRoYXQgSSdkIGxpa2Ugc29tZSBpbnB1dCBvbi4KKworVGhlIGJpZyBjaGFuZ2UgaXMgbW92aW5nIHRoZSBrcGFydHggY2FsbCBpbnRvIHRoZSBtdWx0aXBhdGggcnVsZXMuICBIYWxmCitvZiB0aGUgY3VycmVudCBrcGFydHgucnVsZXMgZmlsZSBpcyBhYm91dCBjcmVhdGluZyBzeW1saW5rcyBmb3IgbXVsdGlwbGUKK3R5cGVzIG9mIGRtIGRldmljZXMuIFRoZSBvdGhlciBoYWxmIGF1dG8tY3JlYXRlcyBrcGFydHggZGV2aWNlcyBvbiB0b3AKK29mIG11bHRpcGF0aCBkZXZpY2VzLiBTaW5jZSBpdCBpcyBvbmx5IGNyZWF0aW5nIGtwYXJ0eCBkZXZpY2VzIG9uIHRvcCBvZgorbXVsdGlwYXRoIGRldmljZXMsIEkndmUgbW92ZWQgdGhlIHRoZXNlIHJ1bGVzIGludG8gbXVsdGlwYXRoLnJ1bGVzLCBvcgorcmF0aGVyLCBJJ3ZlIHJlcGxhY2VkIHRoZW0gd2l0aCB0aGUgcmVkaGF0IHJ1bGVzIGluIG11bHRpcGF0aC5ydWxlcy4gVGhlCitiaWdnZXN0IGRpZmZlcmVuY2UgaXMgdGhlIGtwYXJ0eCBpc24ndCBydW4gb24gZXZlcnkgcmVsb2FkLiAgSXQgd29ya3MKK3dpdGggdGhlIDExLWRtLW1wYXRoLnJ1bGVzIGNvZGUgdG8gbm90IHJ1biBrcGFydHggb24gbXVsdGlwYXRoZAorZ2VuZXJhdGVkIHJlbG9hZHMgb3Igd2hlbiB0aGVyZSBhcmVuJ3QgYW55IHdvcmtpbmcgcGF0aHMuIEl0IGRvZXMKK3JlbWVtYmVyIGlmIGl0IGRpZG4ndCBnZXQgdG8gcnVuIGtwYXJ0eCB3aGVuIGl0IHdhcyBzdXBwb3NlZCB0byAoYmVjYXVzZQordGhlcmUgd2VyZSBubyB2YWxpZCBwYXRocyBvciB0aGUgZGV2aWNlIHdhcyBzdXNwZW5kZWQpIGFuZCB3aWxsIG1ha2UKK3N1cmUgdG8gcnVuIGl0IG9uIHRoZSBuZXh0IHBvc3NpYmxlIHVldmVudC4KKworVGhlIG90aGVyIGNoYW5nZSBpcyB0aGUgcmVkaGF0IG11bHRpcGF0aCBydWxlcyByZW1vdmUgdGhlIHBhcnRpdGlvbgorZGV2aWNlIG5vZGVzIGZvciBkZXZpY2VzIGNsYWltZWQgYnkgbXVsdGlwYXRoLiBUaGUgdWRldiBydWxlIHdpbGwgb25seQorZG8gdGhpcyBvbmUgdGltZSAoYm90aCB0byBrZWVwIGZyb20gcnVubmluZyBwYXJ0eCBvbiBldmVyeSBldmVudCwgYW5kIHNvCit0aGF0IGlmIHVzZXJzIG1hbnVhbGx5IHJlcmVhZCB0aGUgcGFydGl0aW9uIHRhYmxlLCB3ZSBkb24ndCBrZWVwCityZW1vdmluZyB0aGVtIHdoZW4gY2xlYXJseSB0aGV5IGFyZSB3YW50ZWQpLiBSZWRoYXQgZG9lcyB0aGlzIGJlY2F1c2Ugd2UKK2hhZCBtdWx0aXBsZSBjdXN0b21lciBpc3N1ZXMgd2hlcmUgdGhleSB3ZXJlIHVzaW5nIHRoZSBzY3NpIHBhcnRpdGlvbnMKK2luc3RlYWQgb2YgdGhlIGtwYXJ0eCBkZXZpY2VzLiBPYnZpb3VzbHksIHdpdGggc2V0dGluZyB0aGUgcGFydGl0aW9uCitkZXZpY2VzIHRvIG5vdCByZWFkeSBhbmQgY2xlYXJpbmcgdGhlaXIgZnNfdHlwZSwgdGhpcyBpc24ndCBlc3NlbnRpYWwsCitidXQgaXQgaGFzIGhlbHBlZCBtYWtlIGN1c3RvbWVycyBkbyB0aGUgcmlnaHQgdGhpbmcuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGtwYXJ0eC9rcGFydHgucnVsZXMgICAgICAgfCAgOCAtLS0tLS0tLQorIG11bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEva3BhcnR4L2twYXJ0eC5ydWxlcyBiL2twYXJ0eC9rcGFydHgucnVsZXMKK2luZGV4IGE5NTg3OTEuLjkwNmUzMjAgMTAwNjQ0CistLS0gYS9rcGFydHgva3BhcnR4LnJ1bGVzCisrKysgYi9rcGFydHgva3BhcnR4LnJ1bGVzCitAQCAtMzQsMTIgKzM0LDQgQEAgRU5We0lEX0ZTX0xBQkVMX0VOQ309PSI/KiIsIElNUE9SVHtkYn09IklEX0ZTX0xBQkVMX0VOQyIKKyBFTlZ7SURfRlNfVVNBR0V9PT0iZmlsZXN5c3RlbXxvdGhlciIsIEVOVntJRF9GU19MQUJFTF9FTkN9PT0iPyoiLCBcCisgCVNZTUxJTksrPSJkaXNrL2J5LWxhYmVsLyRlbnZ7SURfRlNfTEFCRUxfRU5DfSIKKyAKKy0jIENyZWF0ZSBkbSB0YWJsZXMgZm9yIHBhcnRpdGlvbnMKKy1FTlZ7RE1fQUNUSU9OfT09IlBBVEhfRkFJTEVEfFBBVEhfUkVJTlNUQVRFRCIsIEdPVE89ImtwYXJ0eF9lbmQiCistRU5We0RNX05SX1ZBTElEX1BBVEhTfT09IjAiLCBHT1RPPSJrcGFydHhfZW5kIgorLUVOVntFTlZ7RE1fVURFVl9QUklNQVJZX1NPVVJDRV9GTEFHfSE9IjEiLCBJTVBPUlR7ZGJ9PSJETV9TVUJTWVNURU1fVURFVl9GTEFHMSIKKy1FTlZ7RE1fU1VCU1lTVEVNX1VERVZfRkxBRzF9PT0iMSIsIEdPVE89ImtwYXJ0eF9lbmQiCistRU5We0RNX1NUQVRFfSE9IlNVU1BFTkRFRCIsIEVOVntETV9VVUlEfT09Im1wYXRoLSoiLCBcCistCVJVTis9Ii9zYmluL2twYXJ0eCAtdW4gLXAgLXBhcnQgL2Rldi8kbmFtZSIKKy0KKyBMQUJFTD0ia3BhcnR4X2VuZCIKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzIGIvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcworaW5kZXggODZkZWZjMC4uNjE2YTA0YyAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMKKysrKyBiL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMKK0BAIC0xLDEzICsxLDEzIEBACisgIyBTZXQgRE1fTVVMVElQQVRIX0RFVklDRV9QQVRIIGlmIHRoZSBkZXZpY2Ugc2hvdWxkIGJlIGhhbmRsZWQgYnkgbXVsdGlwYXRoCisgU1VCU1lTVEVNIT0iYmxvY2siLCBHT1RPPSJlbmRfbXBhdGgiCisgQUNUSU9OIT0iYWRkfGNoYW5nZSIsIEdPVE89ImVuZF9tcGF0aCIKKy1LRVJORUwhPSJzZCp8ZGFzZCoiLCBHT1RPPSJlbmRfbXBhdGgiCistCisrS0VSTkVMIT0ic2QqfGRhc2QqfHJiZCp8ZG0tKiIsIEdPVE89ImVuZF9tcGF0aCIKKyBJTVBPUlR7Y21kbGluZX09Im5vbXBhdGgiCisgRU5We25vbXBhdGh9PT0iPyoiLCBHT1RPPSJlbmRfbXBhdGgiCisgSU1QT1JUe2NtZGxpbmV9PSJtdWx0aXBhdGgiCisgRU5We211bHRpcGF0aH09PSJvZmYiLCBHT1RPPSJlbmRfbXBhdGgiCisgCisrS0VSTkVMPT0iZG0tKiIsIEdPVE89ImNoZWNrX2twYXJ0eCIKKyBFTlZ7REVWVFlQRX0hPSJwYXJ0aXRpb24iLCBHT1RPPSJ0ZXN0X2RldiIKKyBJTVBPUlR7cGFyZW50fT0iRE1fTVVMVElQQVRIX0RFVklDRV9QQVRIIgorIEVOVntETV9NVUxUSVBBVEhfREVWSUNFX1BBVEh9PT0iMSIsIEVOVntJRF9GU19UWVBFfT0ibm9uZSIsIFwKK0BAIC0yMSw3ICsyMSwyOCBAQCBURVNUIT0iJGVudntNUEFUSF9TQklOX1BBVEh9L211bHRpcGF0aCIsIEVOVntNUEFUSF9TQklOX1BBVEh9PSIvdXNyL3NiaW4iCisgCisgRU5We0RNX01VTFRJUEFUSF9ERVZJQ0VfUEFUSH0hPSIxIiwgXAorIAlQUk9HUkFNPT0iJGVudntNUEFUSF9TQklOX1BBVEh9L211bHRpcGF0aCAtdSAlayIsIFwKKy0JRU5We0RNX01VTFRJUEFUSF9ERVZJQ0VfUEFUSH09IjEiLCBFTlZ7SURfRlNfVFlQRX09Im5vbmUiLCBcCisrCUVOVntETV9NVUxUSVBBVEhfREVWSUNFX1BBVEh9PSIxIiwgRU5We0lEX0ZTX1RZUEV9PSJtcGF0aF9tZW1iZXIiLCBcCisgCUVOVntTWVNURU1EX1JFQURZfT0iMCIKKyAKKytFTlZ7RE1fTVVMVElQQVRIX0RFVklDRV9QQVRIfSE9IjEiLCBHT1RPPSJlbmRfbXBhdGgiCisrCisrSU1QT1JUe2RifT0iRE1fTVVMVElQQVRIX1dJUEVfUEFSVFMiCisrRU5We0RNX01VTFRJUEFUSF9XSVBFX1BBUlRTfSE9IjEiLCBFTlZ7RE1fTVVMVElQQVRIX1dJUEVfUEFSVFN9PSIxIiwgXAorKwlSVU4rPSIvc2Jpbi9wYXJ0eCAtZCAtLW5yIDEtMTAyNCAkZW52e0RFVk5BTUV9IgorK0dPVE89ImVuZF9tcGF0aCIKKysKKytMQUJFTD0iY2hlY2tfa3BhcnR4IgorKworK0lNUE9SVHtkYn09IkRNX01VTFRJUEFUSF9ORUVEX0tQQVJUWCIKKytFTlZ7RE1fVURFVl9QUklNQVJZX1NPVVJDRV9GTEFHfSE9IjEiLCBJTVBPUlR7ZGJ9PSJETV9TVUJTWVNURU1fVURFVl9GTEFHMSIKKytFTlZ7RE1fU1VCU1lTVEVNX1VERVZfRkxBRzF9PT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKKytBQ1RJT04hPSJjaGFuZ2UiLCBHT1RPPSJlbmRfbXBhdGgiCisrRU5We0RNX1VVSUR9IT0ibXBhdGgtPyoiLCBHT1RPPSJlbmRfbXBhdGgiCisrRU5We0RNX0FDVElWQVRJT059PT0iMSIsIEVOVntETV9NVUxUSVBBVEhfTkVFRF9LUEFSVFh9PSIxIgorK0VOVntETV9TVVNQRU5ERUR9PT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKKytFTlZ7RE1fQUNUSU9OfT09IlBBVEhfRkFJTEVEIiwgR09UTz0iZW5kX21wYXRoIgorK0VOVntETV9BQ1RJVkFUSU9OfSE9IjEiLCBFTlZ7RE1fTVVMVElQQVRIX05FRURfS1BBUlRYfSE9IjEiLCBHT1RPPSJlbmRfbXBhdGgiCisrUlVOKz0iL3NiaW4va3BhcnR4IC11biAtcCAtcGFydCAvZGV2LyRuYW1lIgorK0VOVntETV9NVUxUSVBBVEhfTkVFRF9LUEFSVFh9PSIiCisrCisgTEFCRUw9ImVuZF9tcGF0aCIKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGhkLnNlcnZpY2UtRXJyb3ItZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGhkLnNlcnZpY2UtRXJyb3ItZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGMzYzBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEtbXVsdGlwYXRoZC5zZXJ2aWNlLUVycm9yLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gNjMwNDgzYjk3MzgzNDljOGIzZTYzN2EwMDg3OWI5NjgzNGEzM2NkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExpIHhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KLURhdGU6IFR1ZSwgNyBKdWwgMjAxNSAxMTozNDozNiArMDkwMAotU3ViamVjdDogW1BBVENIXSBtdWx0aXBhdGhkLnNlcnZpY2U6IEVycm9yIGZpeAotCi1GYWlsZWQgdG8gc3RhcnQgRGV2aWNlLU1hcHBlciBNdWx0aXBhdGggRGV2aWNlIENvbnRyb2xsZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBMaSBYaW4gPGxpeGluLmZuc3RAY24uZnVqaXRzdS5jb20+Ci0tLS0KLSBtdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQotaW5kZXggZTNkNmY5MS4uYTdlMDBiMiAxMDA2NDQKLS0tLSBhL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCi0rKysgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQotQEAgLTgsMTEgKzgsMTIgQEAgV2FudHM9bG9jYWwtZnMtcHJlLnRhcmdldCBtdWx0aXBhdGhkLnNvY2tldCBibGstYXZhaWxhYmlsaXR5LnNlcnZpY2UKLSBDb25mbGljdHM9c2h1dGRvd24udGFyZ2V0Ci0gCi0gW1NlcnZpY2VdCi0tVHlwZT1ub3RpZnkKLStUeXBlPWZvcmtpbmcKLSBOb3RpZnlBY2Nlc3M9bWFpbgotIExpbWl0Q09SRT1pbmZpbml0eQotK1BJREZpbGU9L3Zhci9ydW4vbXVsdGlwYXRoZC5waWQKLSBFeGVjU3RhcnRQcmU9L3NiaW4vbW9kcHJvYmUgLWEgc2NzaV9kaF9hbHVhIHNjc2lfZGhfZW1jIHNjc2lfZGhfcmRhYyBkbS1tdWx0aXBhdGgKLS1FeGVjU3RhcnQ9L3NiaW4vbXVsdGlwYXRoZCAtZCAtcwotK0V4ZWNTdGFydD0vc2Jpbi9tdWx0aXBhdGhkCi0gRXhlY1JlbG9hZD0vc2Jpbi9tdWx0aXBhdGhkIHJlY29uZmlndXJlCi0gCi0gW0luc3RhbGxdCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAyLVJILWZpeHVwLXVkZXYtcnVsZXMtZm9yLXJlZGhhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDItUkgtZml4dXAtdWRldi1ydWxlcy1mb3ItcmVkaGF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2M2QyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAyLVJILWZpeHVwLXVkZXYtcnVsZXMtZm9yLXJlZGhhdC5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorRnJvbSAxNTgyNTUzODNjMDJkM2ZiODFjODJmYjllYzZmZDM2ZmIyMzRmNjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAwNzoyMjoyMyAtMDUwMAorU3ViamVjdDogW1BBVENIIDAyLzE0XSBSSDogZml4dXAgdWRldiBydWxlcyBmb3IgcmVkaGF0CisKK1RoZSBtdWx0aXBhdGggcnVsZXMgbmVlZCB0byBydW4gYWZ0ZXIgc2NzaV9pZCBpcyBydW4uIFRoaXMgbWVhbnMgbW92aW5nCit0aGVtIGFmdGVyIDYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyBmb3IgcmVkaGF0LiBBbHNvLCB3ZSBkb24ndAorY3VycmVudGx5IHNldCB1cCBhbGwgdGhlIHN5bWxpbmtzIHRoYXQgU3VTRSBkb2VzLiBJZiB3ZSB3YW50IHRoZW0sIHRoZXkKK3Nob3VsZCBiZSBkb25lIGluIHRoZSBkZXZpY2UtbWFwcGVyIHBhY2thZ2UsIHNpbmNlIHRoZXkgYXJlIGZvciBhbGwKK2RldmljZS1tYXBwZXIgZGV2aWNlcy4gUmVkaGF0IGFsc28gdXNlcyBhIGRpZmZlcmVudCBuYW1pbmcgc2NoZW1lIGZvcgorcGFydGl0aW9ucyB0aGFuIFN1U0UuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIE1ha2VmaWxlLmluYyAgICAgICAgICAgICAgfCAgMiArLQorIGtwYXJ0eC9NYWtlZmlsZSAgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQorIG11bHRpcGF0aC9NYWtlZmlsZSAgICAgICAgfCAgNCArKy0tCisgbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcyB8ICAzICsrLQorIDQgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbmMgYi9NYWtlZmlsZS5pbmMKK2luZGV4IDE4MTVmOWEuLjI1OTFmYTkgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbmMKKysrKyBiL01ha2VmaWxlLmluYworQEAgLTQ3LDcgKzQ3LDcgQEAgZW5kaWYKKyAKKyBwcmVmaXgJCT0KKyBleGVjX3ByZWZpeAk9ICQocHJlZml4KQorLWJpbmRpcgkJPSAkKGV4ZWNfcHJlZml4KS9zYmluCisrYmluZGlyCQk9ICQoZXhlY19wcmVmaXgpL3Vzci9zYmluCisgbGlidWRldmRpcgk9ICQocHJlZml4KS8kKFNZU1RFTURQQVRIKS91ZGV2CisgdWRldnJ1bGVzZGlyCT0gJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kCisgbXVsdGlwYXRoZGlyCT0gJChUT1BESVIpL2xpYm11bHRpcGF0aAorZGlmZiAtLWdpdCBhL2twYXJ0eC9NYWtlZmlsZSBiL2twYXJ0eC9NYWtlZmlsZQoraW5kZXggN2I3NTAzMi4uYmZhNmZlOCAxMDA2NDQKKy0tLSBhL2twYXJ0eC9NYWtlZmlsZQorKysrIGIva3BhcnR4L01ha2VmaWxlCitAQCAtMjYsMTkgKzI2LDE5IEBAICQoRVhFQyk6ICQoT0JKUykKKyBpbnN0YWxsOiAkKEVYRUMpICQoRVhFQykuOAorIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQoYmluZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1ICQoRVhFQykgJChERVNURElSKSQoYmluZGlyKQorLQkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobGlidWRldmRpcikKKy0JJChJTlNUQUxMX1BST0dSQU0pIC1tIDc1NSBrcGFydHhfaWQgJChERVNURElSKSQobGlidWRldmRpcikKKy0JJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQKKy0JJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCBrcGFydHgucnVsZXMgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Ni1rcGFydHgucnVsZXMKKysjCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKQorKyMJJChJTlNUQUxMX1BST0dSQU0pIC1tIDc1NSBrcGFydHhfaWQgJChERVNURElSKSQobGlidWRldmRpcikKKysjCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kCisrIwkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0IGtwYXJ0eC5ydWxlcyAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzY2LWtwYXJ0eC5ydWxlcworIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobWFuOGRpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLjguZ3ogJChERVNURElSKSQobWFuOGRpcikKKyAKKyB1bmluc3RhbGw6CisgCSQoUk0pICQoREVTVERJUikkKGJpbmRpcikvJChFWEVDKQorIAkkKFJNKSAkKERFU1RESVIpJChtYW44ZGlyKS8kKEVYRUMpLjguZ3oKKy0JJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikva3BhcnR4X2lkCistCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjYta3BhcnR4LnJ1bGVzCistCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjcta3BhcnR4LWNvbXBhdC5ydWxlcworKyMJJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikva3BhcnR4X2lkCisrIwkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzY2LWtwYXJ0eC5ydWxlcworKyMJJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Ny1rcGFydHgtY29tcGF0LnJ1bGVzCisgCisgY2xlYW46CisgCSQoUk0pIGNvcmUgKi5vICQoRVhFQykgKi5negorZGlmZiAtLWdpdCBhL211bHRpcGF0aC9NYWtlZmlsZSBiL211bHRpcGF0aC9NYWtlZmlsZQoraW5kZXggYzg1MzE0ZS4uMWU5ZWU0YiAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9NYWtlZmlsZQorKysrIGIvbXVsdGlwYXRoL01ha2VmaWxlCitAQCAtMjQsNyArMjQsNyBAQCBpbnN0YWxsOgorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1ICQoRVhFQykgJChERVNURElSKSQoYmluZGlyKS8KKyAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKHVkZXZydWxlc2RpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAxMS1kbS1tcGF0aC5ydWxlcyAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpCistCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS5ydWxlcyAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzU2LW11bHRpcGF0aC5ydWxlcworKwkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykucnVsZXMgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Mi1tdWx0aXBhdGgucnVsZXMKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKG1hbjhkaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS44Lmd6ICQoREVTVERJUikkKG1hbjhkaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChtYW41ZGlyKQorQEAgLTMzLDcgKzMzLDcgQEAgaW5zdGFsbDoKKyB1bmluc3RhbGw6CisgCSQoUk0pICQoREVTVERJUikkKGJpbmRpcikvJChFWEVDKQorIAkkKFJNKSAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpLzExLWRtLW1wYXRoLnJ1bGVzCistCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNTYtbXVsdGlwYXRoLnJ1bGVzCisrCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjItbXVsdGlwYXRoLnJ1bGVzCisgCSQoUk0pICQoREVTVERJUikkKG1hbjhkaXIpLyQoRVhFQykuOC5negorIAkkKFJNKSAkKERFU1RESVIpJChtYW41ZGlyKS8kKEVYRUMpLmNvbmYuNS5negorIAorZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCitpbmRleCA2MTZhMDRjLi40ZDc4Yjk4IDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcworKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcworQEAgLTMzLDYgKzMzLDcgQEAgR09UTz0iZW5kX21wYXRoIgorIAorIExBQkVMPSJjaGVja19rcGFydHgiCisgCisrRU5We0RNX1VVSUR9PT0ibXBhdGgtPyp8cGFydFswLTldKi1tcGF0aC0/KiIsIE9QVElPTlMrPSJsaW5rX3ByaW9yaXR5PTEwIgorIElNUE9SVHtkYn09IkRNX01VTFRJUEFUSF9ORUVEX0tQQVJUWCIKKyBFTlZ7RE1fVURFVl9QUklNQVJZX1NPVVJDRV9GTEFHfSE9IjEiLCBJTVBPUlR7ZGJ9PSJETV9TVUJTWVNURU1fVURFVl9GTEFHMSIKKyBFTlZ7RE1fU1VCU1lTVEVNX1VERVZfRkxBRzF9PT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKK0BAIC00Miw3ICs0Myw3IEBAIEVOVntETV9BQ1RJVkFUSU9OfT09IjEiLCBFTlZ7RE1fTVVMVElQQVRIX05FRURfS1BBUlRYfT0iMSIKKyBFTlZ7RE1fU1VTUEVOREVEfT09IjEiLCBHT1RPPSJlbmRfbXBhdGgiCisgRU5We0RNX0FDVElPTn09PSJQQVRIX0ZBSUxFRCIsIEdPVE89ImVuZF9tcGF0aCIKKyBFTlZ7RE1fQUNUSVZBVElPTn0hPSIxIiwgRU5We0RNX01VTFRJUEFUSF9ORUVEX0tQQVJUWH0hPSIxIiwgR09UTz0iZW5kX21wYXRoIgorLVJVTis9Ii9zYmluL2twYXJ0eCAtdW4gLXAgLXBhcnQgL2Rldi8kbmFtZSIKKytSVU4rPSIvc2Jpbi9rcGFydHggLXVuIC9kZXYvJG5hbWUiCisgRU5We0RNX01VTFRJUEFUSF9ORUVEX0tQQVJUWH09IiIKKyAKKyBMQUJFTD0iZW5kX21wYXRoIgorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAzLVJILVJlbW92ZS10aGUtcHJvcGVydHktYmxhY2tsaXN0LWV4Y2VwdGlvbi1idWlsdGluLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMy1SSC1SZW1vdmUtdGhlLXByb3BlcnR5LWJsYWNrbGlzdC1leGNlcHRpb24tYnVpbHRpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODRlOTU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMy1SSC1SZW1vdmUtdGhlLXByb3BlcnR5LWJsYWNrbGlzdC1leGNlcHRpb24tYnVpbHRpbi5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDY5YTY3YzJlZDA5YWU1MWI1M2RlNDAyOTY2YTlmN2E0Y2M3Mzc3MTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDIgSnVsIDIwMTQgMTI6NDk6NTMgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xNF0gUkg6IFJlbW92ZSB0aGUgcHJvcGVydHkgYmxhY2tsaXN0IGV4Y2VwdGlvbiBidWlsdGluCisKK011bHRpcGF0aCBzZXQgdGhlIGRlZmF1bHQgcHJvcGVydHkgYmxhY2tsaXN0IGV4Y2VwdGlvbnMgdG8KKyhJRF9TQ1NJX1ZQRHxJRF9XV04pLiAgVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBibGFja2xpc3Rpbmcgc29tZSBpbnRlcm5hbAorZGV2aWNlcy4gIFRoZXNlIGRldmljZXMgbWF5IG5ldmVyIGhhdmUgbXVsdGlwbGUgcGF0aHMsIGJ1dCBpdCBpcyBuaWNlCit0byBiZSBhYmxlIHRvIHNldCBtdWx0aXBhdGggdXAgb24gdGhlbSBhbGwgdGhlIHNhbWUuICBUaGlzIHBhdGNoIHNpbXBseQorcmVtb3ZlcyB0aGUgZGVmYXVsdCwgYW5kIG1ha2VzIGl0IHNvIHRoYXQgaWYgbm8gcHJvcGVydHkKK2JsYWNrbGlzdF9leGNlcHRpb24gaXMgZ2l2ZW4sIHRoZW4gZGV2aWNlcyBhcmVuJ3QgZmFpbGVkIGZvciBub3QgbWF0Y2hpbmcKK2l0LgorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvYmxhY2tsaXN0LmMgICB8IDE1ICsrKysrKy0tLS0tLS0tLQorIG11bHRpcGF0aC9tdWx0aXBhdGguY29uZi41IHwgIDQgLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9ibGFja2xpc3QuYyBiL2xpYm11bHRpcGF0aC9ibGFja2xpc3QuYworaW5kZXggZWUzOTZlMi4uMTlkNDY5NyAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9ibGFja2xpc3QuYworKysrIGIvbGlibXVsdGlwYXRoL2JsYWNrbGlzdC5jCitAQCAtMTgxLDEyICsxODEsNiBAQCBzZXR1cF9kZWZhdWx0X2JsaXN0IChzdHJ1Y3QgY29uZmlnICogY29uZikKKyAJaWYgKHN0b3JlX2JsZShjb25mLT5ibGlzdF9kZXZub2RlLCBzdHIsIE9SSUdJTl9ERUZBVUxUKSkKKyAJCXJldHVybiAxOworIAorLQlzdHIgPSBTVFJEVVAoIihTQ1NJX0lERU5UX3xJRF9XV04pIik7CistCWlmICghc3RyKQorLQkJcmV0dXJuIDE7CistCWlmIChzdG9yZV9ibGUoY29uZi0+ZWxpc3RfcHJvcGVydHksIHN0ciwgT1JJR0lOX0RFRkFVTFQpKQorLQkJcmV0dXJuIDE7CistCisgCXZlY3Rvcl9mb3JlYWNoX3Nsb3QgKGNvbmYtPmh3dGFibGUsIGh3ZSwgaSkgeworIAkJaWYgKGh3ZS0+YmxfcHJvZHVjdCkgeworIAkJCWlmIChfYmxhY2tsaXN0X2RldmljZShjb25mLT5ibGlzdF9kZXZpY2UsIGh3ZS0+dmVuZG9yLAorQEAgLTM5MCw5ICszODQsMTIgQEAgZmlsdGVyX3Byb3BlcnR5KHN0cnVjdCBjb25maWcgKiBjb25mLCBzdHJ1Y3QgdWRldl9kZXZpY2UgKiB1ZGV2KQorIAkgKiBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSAnbm9ybWFsJyBtYXRjaGluZzsKKyAJICogdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIF9oYXNfIHRvIG1hdGNoLgorIAkgKi8KKy0JbG9nX2ZpbHRlcihkZXZuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAorLQkJICAgTUFUQ0hfUFJPUEVSVFlfQkxJU1RfTUlTU0lORyk7CistCXJldHVybiBNQVRDSF9QUk9QRVJUWV9CTElTVF9NSVNTSU5HOworKwlpZiAoVkVDVE9SX1NJWkUoY29uZi0+ZWxpc3RfcHJvcGVydHkpKSB7CisrCQlsb2dfZmlsdGVyKGRldm5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCisrCQkJICAgTUFUQ0hfUFJPUEVSVFlfQkxJU1RfTUlTU0lORyk7CisrCQlyZXR1cm4gTUFUQ0hfUFJPUEVSVFlfQkxJU1RfTUlTU0lORzsKKysJfQorKwlyZXR1cm4gMDsKKyB9CisgCisgdm9pZAorZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41IGIvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUKK2luZGV4IGYwNGZmMTkuLmZiYmJiMjcgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQorKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUKK0BAIC0xMDE0LDEwICsxMDE0LDYgQEAgVGhlIFxmSVdvcmxkIFdpZGUgSWRlbnRpZmljYXRpb25cZlIgb2YgYSBkZXZpY2UuCisgLlRQCisgLkIgcHJvcGVydHkKKyBSZWd1bGFyIGV4cHJlc3Npb24gb2YgdGhlIHVkZXYgcHJvcGVydHkgdG8gYmUgd2hpdGVsaXN0ZWQuCistLlJTCistLlRQCistVGhlIGRlZmF1bHQgaXM6IFxmQihTQ1NJX0lERU5UX3xJRF9XV04pXGZSCistLlJFCisgLlRQCisgLkIgZGV2aWNlCisgU3Vic2VjdGlvbiBmb3IgdGhlIGRldmljZSBkZXNjcmlwdGlvbi4gVGhpcyBzdWJzZWN0aW9uIHJlY29nbml6ZXMgdGhlCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDQtUkgtZG9uLXQtc3RhcnQtd2l0aG91dC1hLWNvbmZpZy1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNC1SSC1kb24tdC1zdGFydC13aXRob3V0LWEtY29uZmlnLWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdhNmQzZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDQtUkgtZG9uLXQtc3RhcnQtd2l0aG91dC1hLWNvbmZpZy1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMTA4IEBACitGcm9tIGIyYjUwNGZjMTk1OWM3YTNmMGE4NDNjM2MyMDRlOGUxOTNiNjc1YjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDE1IE9jdCAyMDE0IDEwOjM5OjMwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTRdIFJIOiBkb24ndCBzdGFydCB3aXRob3V0IGEgY29uZmlnIGZpbGUKKworSWYgL2V0Yy9tdWx0aXBhdGguY29uZiBkb2Vzbid0IGV4aXN0LCBkb24ndCBzdGFydCBtdWx0aXBhdGhkIGFuZCBibGFja2xpc3QKK2FsbCBkZXZpY2VzIHdoZW4gcnVubmluZyBtdWx0aXBhdGguICBBIGNvbXBsZXRlbHkgYmxhbmsgY29uZmlndXJhdGlvbiBmaWxlCitpcyBhbG1vc3QgbmV2ZXIgd2hhdCB1c2VycyB3YW50LiAgQWxzbywgcGVvcGxlIG1heSBoYXZlIHRoZSBtdWx0aXBhdGgKK3BhY2thZ2VzIGluc3RhbGxlZCBidXQgZG9uJ3Qgd2FudCB0byB1c2UgdGhlbS4gIFRoaXMgcGF0Y2ggcHJvdmlkZXMgYQorc2ltcGxlIHdheSB0byBkaXNhYmxlIG11bHRpcGF0aC4gIFNpbXBseSByZW1vdmluZyBvciByZW5hbWluZworL2V0Yy9tdWx0aXBhdGguY29uZiB3aWxsIGtlZXAgbXVsdGlwYXRoIGZyb20gZG9pbmcgYW55dGhpbmcuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9jb25maWcuYyAgICAgICAgIHwgMTcgKysrKysrKysrKysrKysrKysKKyBsaWJtdWx0aXBhdGgvY29uZmlnLmggICAgICAgICB8ICAxICsKKyBtdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzICAgICB8ICAxICsKKyBtdWx0aXBhdGhkL211bHRpcGF0aGQuOCAgICAgICB8ICAyICsrCisgbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UgfCAgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY29uZmlnLmMgYi9saWJtdWx0aXBhdGgvY29uZmlnLmMKK2luZGV4IGJiNjYxOWIuLmFhZTY5YjggMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY29uZmlnLmMKKysrKyBiL2xpYm11bHRpcGF0aC9jb25maWcuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAjaW5jbHVkZSAicHJpby5oIgorICNpbmNsdWRlICJkZXZtYXBwZXIuaCIKKyAjaW5jbHVkZSAibXBhdGhfY21kLmgiCisrI2luY2x1ZGUgInZlcnNpb24uaCIKKyAKKyBzdGF0aWMgaW50CisgaHdlX3N0cm1hdGNoIChzdHJ1Y3QgaHdlbnRyeSAqaHdlMSwgc3RydWN0IGh3ZW50cnkgKmh3ZTIpCitAQCAtNjY3LDYgKzY2OCwyMiBAQCBsb2FkX2NvbmZpZyAoY2hhciAqIGZpbGUpCisgCQkJZmFjdG9yaXplX2h3dGFibGUoY29uZi0+aHd0YWJsZSwgYnVpbHRpbl9od3RhYmxlX3NpemUpOworIAkJfQorIAorKwl9IGVsc2UgeworKwkJY29uZGxvZygwLCAiL2V0Yy9tdWx0aXBhdGguY29uZiBkb2VzIG5vdCBleGlzdCwgYmxhY2tsaXN0aW5nIGFsbCBkZXZpY2VzLiIpOworKwkJY29uZGxvZygwLCAiQSBkZWZhdWx0IG11bHRpcGF0aC5jb25mIGZpbGUgaXMgbG9jYXRlZCBhdCIpOworKwkJY29uZGxvZygwLCAiL3Vzci9zaGFyZS9kb2MvZGV2aWNlLW1hcHBlci1tdWx0aXBhdGgtJWQuJWQuJWQvbXVsdGlwYXRoLmNvbmYiLCBNVUxUSVBBVEhfVkVSU0lPTihWRVJTSU9OX0NPREUpKTsKKysJCWlmIChjb25mLT5ibGlzdF9kZXZub2RlID09IE5VTEwpIHsKKysJCQljb25mLT5ibGlzdF9kZXZub2RlID0gdmVjdG9yX2FsbG9jKCk7CisrCQkJaWYgKCFjb25mLT5ibGlzdF9kZXZub2RlKSB7CisrCQkJCWNvbmRsb2coMCwgImNhbm5vdCBhbGxvY2F0ZSBibGFja2xpc3RcbiIpOworKwkJCQlnb3RvIG91dDsKKysJCQl9CisrCQl9CisrCQlpZiAoc3RvcmVfYmxlKGNvbmYtPmJsaXN0X2Rldm5vZGUsIHN0cmR1cCgiLioiKSwKKysJCSAgICAgICAgICAgICAgT1JJR0lOX05PX0NPTkZJRykpIHsKKysJCQljb25kbG9nKDAsICJjYW5ub3Qgc3RvcmUgZGVmYXVsdCBuby1jb25maWcgYmxhY2tsaXN0XG4iKTsKKysJCQlnb3RvIG91dDsKKysJCX0KKyAJfQorIAorIAljb25mLT5wcm9jZXNzZWRfbWFpbl9jb25maWcgPSAxOworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWcuaCBiL2xpYm11bHRpcGF0aC9jb25maWcuaAoraW5kZXggZmZjNjliNS4uNjE0MzMxYyAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWcuaAorKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5oCitAQCAtNyw2ICs3LDcgQEAKKyAKKyAjZGVmaW5lIE9SSUdJTl9ERUZBVUxUIDAKKyAjZGVmaW5lIE9SSUdJTl9DT05GSUcgIDEKKysjZGVmaW5lIE9SSUdJTl9OT19DT05GSUcgMgorIAorIC8qCisgICogSW4ga2VybmVsLCBmYXN0X2lvX2ZhaWwgPT0gMCBtZWFucyBpbW1lZGlhdGUgZmFpbHVyZSBvbiBycG9ydCBkZWxldGUuCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcyBiL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMKK2luZGV4IDRkNzhiOTguLjU3NTM3NjYgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCisrKysgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCitAQCAtNiw2ICs2LDcgQEAgSU1QT1JUe2NtZGxpbmV9PSJub21wYXRoIgorIEVOVntub21wYXRofT09Ij8qIiwgR09UTz0iZW5kX21wYXRoIgorIElNUE9SVHtjbWRsaW5lfT0ibXVsdGlwYXRoIgorIEVOVnttdWx0aXBhdGh9PT0ib2ZmIiwgR09UTz0iZW5kX21wYXRoIgorK1RFU1QhPSIvZXRjL211bHRpcGF0aC5jb25mIiwgR09UTz0iZW5kX21wYXRoIgorIAorIEtFUk5FTD09ImRtLSoiLCBHT1RPPSJjaGVja19rcGFydHgiCisgRU5We0RFVlRZUEV9IT0icGFydGl0aW9uIiwgR09UTz0idGVzdF9kZXYiCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLjggYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuOAoraW5kZXggNGM3NjVhZi4uYzE0OTlhNSAxMDA2NDQKKy0tLSBhL211bHRpcGF0aGQvbXVsdGlwYXRoZC44CisrKysgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuOAorQEAgLTM5LDYgKzM5LDggQEAgbWFwIHJlZ2FpbnMgaXRzIG1heGltdW0gcGVyZm9ybWFuY2UgYW5kIHJlZHVuZGFuY3kuCisgVGhpcyBkYWVtb24gZXhlY3V0ZXMgdGhlIGV4dGVybmFsIFxmQm11bHRpcGF0aFxmUiB0b29sIHdoZW4gZXZlbnRzIG9jY3VyLgorIEluIHR1cm4sIHRoZSBtdWx0aXBhdGggdG9vbCBzaWduYWxzIHRoZSBtdWx0aXBhdGhkIGRhZW1vbiB3aGVuIGl0IGlzIGRvbmUgd2l0aAorIGRldm1hcCByZWNvbmZpZ3VyYXRpb24sIHNvIHRoYXQgaXQgY2FuIHJlZnJlc2ggaXRzIGZhaWxlZCBwYXRoIGxpc3QuCisrCisrSW4gdGhpcyBMaW51eCBkaXN0cmlidXRpb24sIG11bHRpcGF0aGQgZG9lcyBub3QgcnVuIHVubGVzcyBhIC9ldGMvbXVsdGlwYXRoLmNvbmZmaWxlIGV4aXN0cworIC4KKyAuCisgLlwiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RpZmYgLS1naXQgYS9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCitpbmRleCBmZDY2Y2Y2Li5mYWZkMDg4IDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UKKysrKyBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCitAQCAtNCw2ICs0LDcgQEAgV2FudHM9c3lzdGVtZC11ZGV2LXRyaWdnZXIuc2VydmljZSBzeXN0ZW1kLXVkZXYtc2V0dGxlLnNlcnZpY2UKKyBCZWZvcmU9aXNjc2kuc2VydmljZSBpc2NzaWQuc2VydmljZSBsdm0yLWx2bWV0YWQuc2VydmljZSBsdm0yLWFjdGl2YXRpb24tZWFybHkuc2VydmljZQorIEJlZm9yZT1sb2NhbC1mcy1wcmUudGFyZ2V0IGJsay1hdmFpbGFiaWxpdHkuc2VydmljZQorIEFmdGVyPW11bHRpcGF0aGQuc29ja2V0IHN5c3RlbWQtdWRldi10cmlnZ2VyLnNlcnZpY2Ugc3lzdGVtZC11ZGV2LXNldHRsZS5zZXJ2aWNlCisrQ29uZGl0aW9uUGF0aEV4aXN0cz0vZXRjL211bHRpcGF0aC5jb25mCisgRGVmYXVsdERlcGVuZGVuY2llcz1ubworIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKKyBDb25kaXRpb25LZXJuZWxDb21tYW5kTGluZT0hbm9tcGF0aAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA1LVJILWFkZC1tcGF0aGNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA1LVJILWFkZC1tcGF0aGNvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNlZjQxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDUtUkgtYWRkLW1wYXRoY29uZi5wYXRjaApAQCAtMCwwICsxLDY0OCBAQAorRnJvbSBkZTQ0NTA0ZmU3Zjc4MDJjZDQ3NGVmZDkyYWMxNWI1YTg4NTdkYjFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAxNiBPY3QgMjAxNCAxNTo0OTowMSAtMDUwMAorU3ViamVjdDogW1BBVENIIDA1LzE0XSBSSDogYWRkIG1wYXRoY29uZgorCittcGF0aGNvbmYgaXMgYSBwcm9ncmFtIChsYXJnZWx5IGJhc2VkIG9uIGx2bWNvbWYpIHRvIGhlbHAgdXNlcnMKK2NvbmZpZ3VyZSAvZXRjL211bHRpcGF0aC5jb25mIGFuZCBlbmFibGUgb3IgZGlzYWJsZSBtdWx0aXBhdGhpbmcuICBJdAoraGFzIGEgY291cGxlIG9mIGJ1aWx0LWluIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2V0IGRpcmVjdGx5IGZyb20gdGhlCitjb21tYW5kIGxpbmUuICBCdXQsIG1vc3RseSBpdCBpcyB1c2VkIHRvIGdldCBhIG11bHRpcGF0aC5jb25mIGZpbGUKK3dpdGggdGhlIE9TIGRlZmF1bHRzLCBhbmQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIG11bHRpcGF0aGluZyB2aWEKK2Egc2luZ2xlIGNvbW1hbmQuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9jb25maWcuYyB8ICAgMSArCisgbXVsdGlwYXRoL01ha2VmaWxlICAgIHwgICA1ICsKKyBtdWx0aXBhdGgvbXBhdGhjb25mICAgfCA0NjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBtdWx0aXBhdGgvbXBhdGhjb25mLjggfCAxMDEgKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDU3MSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IG11bHRpcGF0aC9tcGF0aGNvbmYKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbXVsdGlwYXRoL21wYXRoY29uZi44CisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY29uZmlnLmMgYi9saWJtdWx0aXBhdGgvY29uZmlnLmMKK2luZGV4IGFhZTY5YjguLmM0ODU3NDggMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY29uZmlnLmMKKysrKyBiL2xpYm11bHRpcGF0aC9jb25maWcuYworQEAgLTY3Miw2ICs2NzIsNyBAQCBsb2FkX2NvbmZpZyAoY2hhciAqIGZpbGUpCisgCQljb25kbG9nKDAsICIvZXRjL211bHRpcGF0aC5jb25mIGRvZXMgbm90IGV4aXN0LCBibGFja2xpc3RpbmcgYWxsIGRldmljZXMuIik7CisgCQljb25kbG9nKDAsICJBIGRlZmF1bHQgbXVsdGlwYXRoLmNvbmYgZmlsZSBpcyBsb2NhdGVkIGF0Iik7CisgCQljb25kbG9nKDAsICIvdXNyL3NoYXJlL2RvYy9kZXZpY2UtbWFwcGVyLW11bHRpcGF0aC0lZC4lZC4lZC9tdWx0aXBhdGguY29uZiIsIE1VTFRJUEFUSF9WRVJTSU9OKFZFUlNJT05fQ09ERSkpOworKwkJY29uZGxvZygwLCAiWW91IGNhbiBydW4gL3NiaW4vbXBhdGhjb25mIHRvIGNyZWF0ZSBvciBtb2RpZnkgL2V0Yy9tdWx0aXBhdGguY29uZiIpOworIAkJaWYgKGNvbmYtPmJsaXN0X2Rldm5vZGUgPT0gTlVMTCkgeworIAkJCWNvbmYtPmJsaXN0X2Rldm5vZGUgPSB2ZWN0b3JfYWxsb2MoKTsKKyAJCQlpZiAoIWNvbmYtPmJsaXN0X2Rldm5vZGUpIHsKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvTWFrZWZpbGUgYi9tdWx0aXBhdGgvTWFrZWZpbGUKK2luZGV4IDFlOWVlNGIuLjNkNGQ0NTkgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGgvTWFrZWZpbGUKKysrKyBiL211bHRpcGF0aC9NYWtlZmlsZQorQEAgLTE4LDEwICsxOCwxMiBAQCAkKEVYRUMpOiAkKE9CSlMpCisgCSQoQ0MpICQoQ0ZMQUdTKSAkKE9CSlMpIC1vICQoRVhFQykgJChMREZMQUdTKSAkKExJQkRFUFMpCisgCSQoR1pJUCkgJChFWEVDKS44ID4gJChFWEVDKS44Lmd6CisgCSQoR1pJUCkgJChFWEVDKS5jb25mLjUgPiAkKEVYRUMpLmNvbmYuNS5negorKwkkKEdaSVApIG1wYXRoY29uZi44ID4gbXBhdGhjb25mLjguZ3oKKyAKKyBpbnN0YWxsOgorIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQoYmluZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1ICQoRVhFQykgJChERVNURElSKSQoYmluZGlyKS8KKysJJChJTlNUQUxMX1BST0dSQU0pIC1tIDc1NSBtcGF0aGNvbmYgJChERVNURElSKSQoYmluZGlyKS8KKyAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKHVkZXZydWxlc2RpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAxMS1kbS1tcGF0aC5ydWxlcyAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS5ydWxlcyAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzYyLW11bHRpcGF0aC5ydWxlcworQEAgLTI5LDEzICszMSwxNiBAQCBpbnN0YWxsOgorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykuOC5neiAkKERFU1RESVIpJChtYW44ZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobWFuNWRpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLmNvbmYuNS5neiAkKERFU1RESVIpJChtYW41ZGlyKQorKwkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0IG1wYXRoY29uZi44Lmd6ICQoREVTVERJUikkKG1hbjhkaXIpCisgCisgdW5pbnN0YWxsOgorIAkkKFJNKSAkKERFU1RESVIpJChiaW5kaXIpLyQoRVhFQykKKyAJJChSTSkgJChERVNURElSKSQodWRldnJ1bGVzZGlyKS8xMS1kbS1tcGF0aC5ydWxlcworIAkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzYyLW11bHRpcGF0aC5ydWxlcworKwkkKFJNKSAkKERFU1RESVIpJChiaW5kaXIpL21wYXRoY29uZgorIAkkKFJNKSAkKERFU1RESVIpJChtYW44ZGlyKS8kKEVYRUMpLjguZ3oKKyAJJChSTSkgJChERVNURElSKSQobWFuNWRpcikvJChFWEVDKS5jb25mLjUuZ3oKKysJJChSTSkgJChERVNURElSKSQobWFuOGRpcikvbXBhdGhjb25mLjguZ3oKKyAKKyBjbGVhbjoKKyAJJChSTSkgY29yZSAqLm8gJChFWEVDKSAqLmd6CitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL21wYXRoY29uZiBiL211bHRpcGF0aC9tcGF0aGNvbmYKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lODM5MTM0CistLS0gL2Rldi9udWxsCisrKysgYi9tdWx0aXBhdGgvbXBhdGhjb25mCitAQCAtMCwwICsxLDQ2NCBAQAorKyMhL2Jpbi9iYXNoCisrIworKyMgQ29weXJpZ2h0IChDKSAyMDEwIFJlZCBIYXQsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysjCisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZGV2aWNlLW1hcHBlci1tdWx0aXBhdGggcGFja2FnZS4KKysjCisrIyBUaGlzIGNvcHlyaWdodGVkIG1hdGVyaWFsIGlzIG1hZGUgYXZhaWxhYmxlIHRvIGFueW9uZSB3aXNoaW5nIHRvIHVzZSwKKysjIG1vZGlmeSwgY29weSwgb3IgcmVkaXN0cmlidXRlIGl0IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zCisrIyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugdi4yLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorKworKyMKKysjIFNpbXBsZSBlZGl0dGluZyBvZiAvZXRjL211bHRpcGF0aC5jb25mCisrIyBUaGlzIHByb2dyYW0gd2FzIGxhcmdlbHkgcmlwcGVkIG9mZiBmcm9tIGx2bWNvbmYKKysjCisrCisrdW5zZXQgRU5BQkxFIEZJTkQgRlJJRU5ETFkgTU9EVUxFIE1VTFRJUEFUSEQgSEFWRV9ESVNBQkxFIEhBVkVfV1dJRF9ESVNBQkxFIEhBVkVfRklORCBIQVZFX0JMQUNLTElTVCBIQVZFX0VYQ0VQVElPTlMgSEFWRV9ERUZBVUxUUyBIQVZFX0ZSSUVORExZIEhBVkVfTVVMVElQQVRIRCBIQVZFX01PRFVMRSBIQVZFX09VVEZJTEUgU0hPV19TVEFUVVMgQ0hBTkdFRF9DT05GSUcgV1dJRF9MSVNUCisrCisrREVGQVVMVF9DT05GSUc9IiMgZGV2aWNlLW1hcHBlci1tdWx0aXBhdGggY29uZmlndXJhdGlvbiBmaWxlCisrCisrIyBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdmFsdWVzLCBydW4gZWl0aGVyOgorKyMgIyBtdWx0aXBhdGggLXQKKysjIG9yCisrIyAjIG11bHRpcGF0aGQgc2hvdyBjb25maWcKKysKKysjIEZvciBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGggZGVzY3JpcHRpb25zLCBzZWUgdGhlCisrIyBtdWx0aXBhdGguY29uZiBtYW4gcGFnZS4KKysKKytkZWZhdWx0cyB7CisrCXVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzCisrCWZpbmRfbXVsdGlwYXRocyB5ZXMKKyt9CisrCisrYmxhY2tsaXN0X2V4Y2VwdGlvbnMgeworKyAgICAgICAgcHJvcGVydHkgXCIoU0NTSV9JREVOVF98SURfV1dOKVwiCisrfSIKKysKKytDT05GSUdGSUxFPSIvZXRjL211bHRpcGF0aC5jb25mIgorK09VVFBVVEZJTEU9Ii9ldGMvbXVsdGlwYXRoLmNvbmYiCisrTVVMVElQQVRIRElSPSIvZXRjL211bHRpcGF0aCIKKytUTVBGSUxFPSIvZXRjL211bHRpcGF0aC8ubXVsdGlwYXRoLmNvbmYudG1wIgorK1dXSURTPTAKKysKKytmdW5jdGlvbiB1c2FnZQorK3sKKysJZWNobyAidXNhZ2U6ICQwIDxjb21tYW5kPiIKKysJZWNobyAiIgorKwllY2hvICJDb21tYW5kczoiCisrCWVjaG8gIkVuYWJsZTogLS1lbmFibGUgIgorKwllY2hvICJEaXNhYmxlOiAtLWRpc2FibGUiCisrCWVjaG8gIk9ubHkgYWxsb3cgY2VydGFpbiB3d2lkcyAoaW5zdGVhZCBvZiBlbmFibGUpOiAtLWFsbG93IDxXV0lEPiIKKysJZWNobyAiU2V0IHVzZXJfZnJpZW5kbHlfbmFtZXMgKERlZmF1bHQgeSk6IC0tdXNlcl9mcmllbmRseV9uYW1lcyA8eXxuPiIKKysJZWNobyAiU2V0IGZpbmRfbXVsdGlwYXRocyAoRGVmYXVsdCB5KTogLS1maW5kX211bHRpcGF0aHMgPHl8bj4iCisrCWVjaG8gIkxvYWQgdGhlIGRtLW11bHRpcGF0aCBtb2R1bGVzIG9uIGVuYWJsZSAoRGVmYXVsdCB5KTogLS13aXRoX21vZHVsZSA8eXxuPiIKKysJZWNobyAic3RhcnQvc3RvcC9yZWxvYWQgbXVsdGlwYXRoZCAoRGVmYXVsdCBuKTogLS13aXRoX211bHRpcGF0aGQgPHl8bj4iCisrCWVjaG8gInNlbGVjdCBvdXRwdXQgZmlsZSAoRGVmYXVsdCAvZXRjL211bHRpcGF0aC5jb25mKTogLS1vdXRmaWxlIDxGSUxFPiIKKysJZWNobyAiIgorK30KKysKKytmdW5jdGlvbiBhZGRfd3dpZAorK3sKKysJSU5ERVg9MAorKwl3aGlsZSBbICIkSU5ERVgiIC1sdCAiJFdXSURTIiBdIDsgZG8KKysJCWlmIFsgIiQxIiA9ICIke1dXSURfTElTVFskSU5ERVhdfSIgXSA7IHRoZW4KKysJCQlyZXR1cm4KKysJCWZpCisrCQkoKElOREVYKyspKQorKwlkb25lCisrCVdXSURfTElTVFskV1dJRFNdPSIkMSIKKysJKChXV0lEUysrKSkKKyt9CisrCisrZnVuY3Rpb24gZ2V0X2RtX2RlcHMKKyt7CisrCXNoaWZ0IDMKKysJd2hpbGUgWyAtbiAiJDEiIC1hIC1uICIkMiIgXTsgZG8KKysJCU1BSk9SPSQoZWNobyAkMSB8IHRyIC1kICcoLCcpCisrCQlNSU5PUj0kKGVjaG8gJDIgfCB0ciAtZCAnKScpCisrCQlVVUlEPWBkbXNldHVwIGluZm8gLWMgLS1ub2hlYWRpbmdzIC1vIHV1aWQgLWogJE1BSk9SIC1tICRNSU5PUiAgMj4gL2Rldi9udWxsYAorKwkJaWYgWyAtbiAiJFVVSUQiIF0gOyB0aGVuCisrCQkJc2V0X2RtX3d3aWQgJFVVSUQKKysJCWZpCisrCQlzaGlmdCAyCisrCWRvbmUKKyt9CisrCisrZnVuY3Rpb24gc2V0X2RtX3d3aWQKKyt7CisrCWlmIFtbICIkMSIgPX4gXnBhcnRbWzpkaWdpdDpdXSstbXBhdGgtIF1dIDsgdGhlbgorKwkJYWRkX3d3aWQgIiR7MSMjcGFydCotbXBhdGgtfSIKKysJZWxpZiBbWyAiJDEiID1+IF5tcGF0aC0gXV0gOyB0aGVuCisrCQlhZGRfd3dpZCAiJHsxIyNtcGF0aC19IgorKwllbHNlCisrCQlnZXRfZG1fZGVwcyBgZG1zZXR1cCBkZXBzIC11ICQxYAorKwlmaQorK30KKysKKytmdW5jdGlvbiBzZXRfd3dpZAorK3sKKysJVVVJRD0iIgorKwlpZiBbWyAiJDEiID1+IF5bWzpkaWdpdDpdXSs6W1s6ZGlnaXQ6XV0rJCBdXSA7IHRoZW4KKysJCU1BSk9SPSR7MSUlOip9CisrCQlNSU5PUj0kezEjIyo6fQorKwkJVVVJRD1gZG1zZXR1cCBpbmZvIC1jIC0tbm9oZWFkaW5ncyAtbyB1dWlkIC1qICRNQUpPUiAtbSAkTUlOT1IgIDI+IC9kZXYvbnVsbGAKKysJZWxzZQorKwkJVVVJRD1gZG1zZXR1cCBpbmZvIC1jIC0tbm9oZWFkaW5ncyAtbyB1dWlkICQxIDI+IC9kZXYvbnVsbGAKKysJZmkKKysJaWYgWyAtbiAiJFVVSUQiIF0gOyB0aGVuCisrCQlzZXRfZG1fd3dpZCAkVVVJRAorKwllbHNlCisrCQlhZGRfd3dpZCAiJDEiCisrCWZpCisrfQorKworK2Z1bmN0aW9uIHBhcnNlX2FyZ3MKKyt7CisrCXdoaWxlIFsgLW4gIiQxIiBdOyBkbworKwkJY2FzZSAkMSBpbgorKwkJCS0tZW5hYmxlKQorKwkJCQlFTkFCTEU9MQorKwkJCQlzaGlmdAorKwkJCQk7OworKwkJCS0tZGlzYWJsZSkKKysJCQkJRU5BQkxFPTAKKysJCQkJc2hpZnQKKysJCQkJOzsKKysJCQktLWFsbG93KQorKwkJCQlFTkFCTEU9MgorKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgorKwkJCQkJc2V0X3d3aWQgJDIKKysJCQkJCXNoaWZ0IDIKKysJCQkJZWxzZQorKwkJCQkJdXNhZ2UKKysJCQkJCWV4aXQgMQorKwkJCQlmaQorKwkJCQk7OworKwkJCS0tdXNlcl9mcmllbmRseV9uYW1lcykKKysJCQkJaWYgWyAtbiAiJDIiIF07IHRoZW4KKysJCQkJCUZSSUVORExZPSQyCisrCQkJCQlzaGlmdCAyCisrCQkJCWVsc2UKKysJCQkJCXVzYWdlCisrCQkJCQlleGl0IDEKKysJCQkJZmkKKysJCQkJOzsKKysJCQktLWZpbmRfbXVsdGlwYXRocykKKysJCQkJaWYgWyAtbiAiJDIiIF07IHRoZW4KKysJCQkJCUZJTkQ9JDIKKysJCQkJCXNoaWZ0IDIKKysJCQkJZWxzZQorKwkJCQkJdXNhZ2UKKysJCQkJCWV4aXQgMQorKwkJCQlmaQorKwkJCQk7OworKwkJCS0td2l0aF9tb2R1bGUpCisrCQkJCWlmIFsgLW4gIiQyIiBdOyB0aGVuCisrCQkJCQlNT0RVTEU9JDIKKysJCQkJCXNoaWZ0IDIKKysJCQkJZWxzZQorKwkJCQkJdXNhZ2UKKysJCQkJCWV4aXQgMQorKwkJCQlmaQorKwkJCQk7OworKwkJCS0td2l0aF9tdWx0aXBhdGhkKQorKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgorKwkJCQkJTVVMVElQQVRIRD0kMgorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJLS1vdXRmaWxlKQorKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgorKwkJCQkJT1VUUFVURklMRT0kMgorKwkJCQkJSEFWRV9PVVRGSUxFPTEKKysJCQkJCXNoaWZ0IDIKKysJCQkJZWxzZQorKwkJCQkJdXNhZ2UKKysJCQkJCWV4aXQgMQorKwkJCQlmaQorKwkJCQk7OworKwkJCSopCisrCQkJCXVzYWdlCisrCQkJCWV4aXQKKysJCWVzYWMKKysJZG9uZQorK30KKysKKytmdW5jdGlvbiB2YWxpZGF0ZV9hcmdzCisreworKwlpZiBbICIkRU5BQkxFIiA9ICIwIiBdICYmIFsgLW4gIiRGUklFTkRMWSIgLW8gLW4gIiRGSU5EIiAtbyAtbiAiJE1PRFVMRSIgXTsgdGhlbgorKwkJZWNobyAiaWdub3JpbmcgZXh0cmEgcGFyYW1ldGVycyBvbiBkaXNhYmxlIgorKwkJRlJJRU5ETFk9IiIKKysJCUZJTkQ9IiIKKysJCU1PRFVMRT0iIgorKwlmaQorKwlpZiBbIC1uICIkRlJJRU5ETFkiIF0gJiYgWyAiJEZSSUVORExZIiAhPSAieSIgLWEgIiRGUklFTkRMWSIgIT0gIm4iIF07IHRoZW4KKysJCWVjaG8gIi0tdXNlcl9mcmllbmRseV9uYW1lcyBtdXN0IGJlIGVpdGhlciAneScgb3IgJ24nIgorKwkJZXhpdCAxCisrCWZpCisrCWlmIFsgLW4gIiRGSU5EIiBdICYmIFsgIiRGSU5EIiAhPSAieSIgLWEgIiRGSU5EIiAhPSAibiIgXTsgdGhlbgorKwkJZWNobyAiLS1maW5kX211bHRpcGF0aHMgbXVzdCBiZSBlaXRoZXIgJ3knIG9yICduJyIKKysJCWV4aXQgMQorKwlmaQorKwlpZiBbIC16ICIkRU5BQkxFIiAtYSAteiAiJEZJTkQiIC1hIC16ICIkRlJJRU5ETFkiIF07IHRoZW4KKysJCVNIT1dfU1RBVFVTPTEKKysJZmkKKysJaWYgWyAtbiAiJE1PRFVMRSIgXSAmJiBbICIkTU9EVUxFIiAhPSAieSIgLWEgIiRNT0RVTEUiICE9ICJuIiBdOyB0aGVuCisrCQllY2hvICItLXdpdGhfbW9kdWxlIG11c3QgYmUgZWl0aGVyICd5JyBvciAnbiciCisrCQlleGl0IDEKKysJZmkKKysJaWYgWyAtbiAiJE1VTFRJUEFUSEQiIF0gJiYgWyAiJE1VTFRJUEFUSEQiICE9ICJ5IiAtYSAiJE1VTFRJUEFUSEQiICE9ICJuIiBdOyB0aGVuCisrCQllY2hvICItLXdpdGhfbXVsdGlwYXRoZCBtdXN0IGJlIGVpdGhlciAneScgb3IgJ24nIgorKwkJZXhpdCAxCisrCWZpCisrCWlmIFsgIiRFTkFCTEUiID0gMiAtYSAteiAiJEhBVkVfT1VURklMRSIgXTsgdGhlbgorKwkJZWNobyAiQmVjYXVzZSAtLWFsbG93IG1ha2VzIGNoYW5nZXMgdGhhdCBjYW5ub3QgYmUgYXV0b21hdGljYWxseSByZXZlcnNlZCwiCisrCQllY2hvICJ5b3UgbXVzdCBzZXQgLS1vdXRmaWxlIHdoZW4geW91IHNldCAtLWFsbG93IgorKwkJZXhpdCAxCisrCWZpCisrfQorKworK2Z1bmN0aW9uIGFkZF9ibGFja2xpc3RfZXhjZXB0aW9ucworK3sKKysJSU5ERVg9MAorKwl3aGlsZSBbICIkSU5ERVgiIC1sdCAiJFdXSURTIiBdIDsgZG8KKysJCXNlZCAtaSAnL15ibGFja2xpc3RfZXhjZXB0aW9uc1tbOnNwYWNlOl1dKnsvIGFcCisrCXd3aWQgJyJcIiR7V1dJRF9MSVNUWyRJTkRFWF19XCIiJworKycgJFRNUEZJTEUKKysJCSgoSU5ERVgrKykpCisrCWRvbmUKKyt9CisrCisrdW1hc2sgMDA3NworKworK3BhcnNlX2FyZ3MgIiRAIgorKworK3ZhbGlkYXRlX2FyZ3MKKysKKytpZiBbICEgLWQgIiRNVUxUSVBBVEhESVIiIF07IHRoZW4KKysJZWNobyAiL2V0Yy9tdWx0aXBhdGgvIGRvZXMgbm90IGV4aXN0LiBmYWlsaW5nIgorKwlleGl0IDEKKytmaQorKworK3JtICRUTVBGSUxFIDI+IC9kZXYvbnVsbAorK2VjaG8gIiRERUZBVUxUX0NPTkZJRyIgPiAkVE1QRklMRQorK2lmIFsgLWYgIiRDT05GSUdGSUxFIiBdOyB0aGVuCisrCWNwICRDT05GSUdGSUxFICRUTVBGSUxFCisrZmkKKysKKytpZiBncmVwIC1xICJeYmxhY2tsaXN0W1s6c3BhY2U6XV0qeyIgJFRNUEZJTEUgOyB0aGVuCisrCUhBVkVfQkxBQ0tMSVNUPTEKKytmaQorKworK2lmIGdyZXAgLXEgIl5ibGFja2xpc3RfZXhjZXB0aW9uc1tbOnNwYWNlOl1dKnsiICRUTVBGSUxFIDsgdGhlbgorKwlIQVZFX0VYQ0VQVElPTlM9MQorK2ZpCisrCisraWYgZ3JlcCAtcSAiXmRlZmF1bHRzW1s6c3BhY2U6XV0qeyIgJFRNUEZJTEUgOyB0aGVuCisrCUhBVkVfREVGQVVMVFM9MQorK2ZpCisrCisraWYgWyAteiAiJE1PRFVMRSIgLW8gIiRNT0RVTEUiID0gInkiIF07IHRoZW4KKysJaWYgbHNtb2QgfCBncmVwIC1xICJkbV9tdWx0aXBhdGgiIDsgdGhlbgorKwkJSEFWRV9NT0RVTEU9MQorKwllbHNlCisrCQlIQVZFX01PRFVMRT0wCisrCWZpCisrZmkKKysKKytpZiBbICIkTVVMVElQQVRIRCIgPSAieSIgXTsgdGhlbgorKwlpZiAvYmluL3N5c3RlbWN0bCBzdGF0dXMgbXVsdGlwYXRoZC5zZXJ2aWNlID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCisrCQlIQVZFX01VTFRJUEFUSEQ9MQorKwllbHNlCisrCQlIQVZFX01VTFRJUEFUSEQ9MAorKwlmaQorK2ZpCisrCisraWYgWyAiJEhBVkVfQkxBQ0tMSVNUIiA9ICIxIiBdOyB0aGVuCisrCWlmIHNlZCAtbiAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKmRldm5vZGUgXCJcLlw/XCpcIiIgOyB0aGVuCisrCQlIQVZFX0RJU0FCTEU9MQorKwllbGlmIHNlZCAtbiAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKiNbWzpzcGFjZTpdXSpkZXZub2RlIFwiXC5cP1wqXCIiIDsgdGhlbgorKwkJSEFWRV9ESVNBQkxFPTAKKysJZmkKKytmaQorKworK2lmIFsgIiRIQVZFX0JMQUNLTElTVCIgPSAiMSIgXTsgdGhlbgorKwlpZiBzZWQgLW4gJy9eYmxhY2tsaXN0W1s6c3BhY2U6XV0qey8sL159LyBwJyAkVE1QRklMRSB8IGdyZXAgLXEgIl5bWzpzcGFjZTpdXSp3d2lkIFwiXC5cP1wqXCIiIDsgdGhlbgorKwkJSEFWRV9XV0lEX0RJU0FCTEU9MQorKwllbGlmIHNlZCAtbiAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKiNbWzpzcGFjZTpdXSp3d2lkIFwiXC5cP1wqXCIiIDsgdGhlbgorKwkJSEFWRV9XV0lEX0RJU0FCTEU9MAorKwlmaQorK2ZpCisrCisraWYgWyAiJEhBVkVfREVGQVVMVFMiID0gIjEiIF07IHRoZW4KKysJaWYgc2VkIC1uICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBwJyAkVE1QRklMRSB8IGdyZXAgLXEgIl5bWzpzcGFjZTpdXSpmaW5kX211bHRpcGF0aHNbWzpzcGFjZTpdXSpcKHllc1x8MVwpIiA7IHRoZW4KKysJCUhBVkVfRklORD0xCisrCWVsaWYgc2VkIC1uICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBwJyAkVE1QRklMRSB8IGdyZXAgLXEgIl5bWzpzcGFjZTpdXSpmaW5kX211bHRpcGF0aHNbWzpzcGFjZTpdXSpcKG5vXHwwXCkiIDsgdGhlbgorKwkJSEFWRV9GSU5EPTAKKysJZmkKKysJaWYgc2VkIC1uICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBwJyAkVE1QRklMRSB8IGdyZXAgLXEgIl5bWzpzcGFjZTpdXSp1c2VyX2ZyaWVuZGx5X25hbWVzW1s6c3BhY2U6XV0qXCh5ZXNcfDFcKSIgOyB0aGVuCisrCQlIQVZFX0ZSSUVORExZPTEKKysJZWxpZiBzZWQgLW4gJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKnVzZXJfZnJpZW5kbHlfbmFtZXNbWzpzcGFjZTpdXSpcKG5vXHwwXCkiIDsgdGhlbgorKwkJSEFWRV9GUklFTkRMWT0wCisrCWZpCisrZmkKKysKKytpZiBbIC1uICIkU0hPV19TVEFUVVMiIF07IHRoZW4KKysJaWYgWyAteiAiJEhBVkVfRElTQUJMRSIgLW8gIiRIQVZFX0RJU0FCTEUiID0gMCBdOyB0aGVuCisrCQllY2hvICJtdWx0aXBhdGggaXMgZW5hYmxlZCIKKysJZWxzZQorKwkJZWNobyAibXVsdGlwYXRoIGlzIGRpc2FibGVkIgorKwlmaQorKwlpZiBbIC16ICIkSEFWRV9GSU5EIiAgLW8gIiRIQVZFX0ZJTkQiID0gMCBdOyB0aGVuCisrCQllY2hvICJmaW5kX211bHRpcGF0aHMgaXMgZGlzYWJsZWQiCisrCWVsc2UKKysJCWVjaG8gImZpbmRfbXVsdGlwYXRocyBpcyBlbmFibGVkIgorKwlmaQorKwlpZiBbIC16ICIkSEFWRV9GUklFTkRMWSIgLW8gIiRIQVZFX0ZSSUVORExZIiA9IDAgXTsgdGhlbgorKwkJZWNobyAidXNlcl9mcmllbmRseV9uYW1lcyBpcyBkaXNhYmxlZCIKKysJZWxzZQorKwkJZWNobyAidXNlcl9mcmllbmRseV9uYW1lcyBpcyBlbmFibGVkIgorKwlmaQorKwlpZiBbIC1uICIkSEFWRV9NT0RVTEUiIF07IHRoZW4KKysJCWlmIFsgIiRIQVZFX01PRFVMRSIgPSAxIF07IHRoZW4KKysJCQllY2hvICJkbV9tdWx0aXBhdGggbW9kdWxlIGlzIGxvYWRlZCIKKysJCWVsc2UKKysJCQllY2hvICJkbV9tdWx0aXBhdGggbW9kdWxlIGlzIG5vdCBsb2FkZWQiCisrCQlmaQorKwlmaQorKwlpZiBbIC16ICIkSEFWRV9NVUxUSVBBVEhEIiBdOyB0aGVuCisrCQlpZiAvYmluL3N5c3RlbWN0bCBzdGF0dXMgbXVsdGlwYXRoZC5zZXJ2aWNlID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCisrCQkJSEFWRV9NVUxUSVBBVEhEPTEKKysJCWVsc2UKKysJCQlIQVZFX01VTFRJUEFUSEQ9MAorKwkJZmkKKysJZmkKKysJaWYgWyAiJEhBVkVfTVVMVElQQVRIRCIgPSAxIF07IHRoZW4KKysJCWVjaG8gIm11bHRpcGF0aGQgaXMgcnVubmluZyIKKysJZWxzZQorKwkJZWNobyAibXVsdGlwYXRoZCBpcyBub3QgcnVubmluZyIKKysJZmkKKysJZXhpdCAwCisrZmkKKysKKytpZiBbIC16ICIkSEFWRV9CTEFDS0xJU1QiIF07IHRoZW4KKysJY2F0ID4+ICRUTVBGSUxFIDw8LSBfRU9GXworKworK2JsYWNrbGlzdCB7CisrfQorK19FT0ZfCisrZmkKKysKKytpZiBbIC16ICIkSEFWRV9ERUZBVUxUUyIgXTsgdGhlbgorKwljYXQgPj4gJFRNUEZJTEUgPDwtIF9FT0ZfCisrCisrZGVmYXVsdHMgeworK30KKytfRU9GXworK2ZpCisrCisraWYgWyAiJEVOQUJMRSIgPSAyIF07IHRoZW4KKysJaWYgWyAiJEhBVkVfRElTQUJMRSIgPSAxIF07IHRoZW4KKysJCXNlZCAtaSAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKmRldm5vZGUgXCJcLlw/XCpcIi8jCWRldm5vZGUgIi4qIi8nICRUTVBGSUxFCisrCWZpCisrCWlmIFsgLXogIiRIQVZFX1dXSURfRElTQUJMRSIgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvIGFcCisrCXd3aWQgIi4qIgorKycgJFRNUEZJTEUKKysJZWxpZiBbICIkSEFWRV9XV0lEX0RJU0FCTEUiID0gMCBdOyB0aGVuCisrCQlzZWQgLWkgJy9eYmxhY2tsaXN0W1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSojW1s6c3BhY2U6XV0qd3dpZCBcIlwuXD9cKlwiLwl3d2lkICIuKiIvJyAkVE1QRklMRQorKwlmaQorKwlpZiBbICIkSEFWRV9FWENFUFRJT05TIiA9IDEgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdF9leGNlcHRpb25zW1s6c3BhY2U6XV0qey8sL159LyB7L15bWzpzcGFjZTpdXSp3d2lkLyBkfScgJFRNUEZJTEUKKysJZWxzZQorKwkJY2F0ID4+ICRUTVBGSUxFIDw8LSBfRU9GXworKworK2JsYWNrbGlzdF9leGNlcHRpb25zIHsKKyt9CisrX0VPRl8KKysJZmkKKysJYWRkX2JsYWNrbGlzdF9leGNlcHRpb25zCisrZWxpZiBbICIkRU5BQkxFIiA9IDEgXTsgdGhlbgorKwlpZiBbICIkSEFWRV9ESVNBQkxFIiA9IDEgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcy9eW1s6c3BhY2U6XV0qZGV2bm9kZSBcIlwuXD9cKlwiLyMJZGV2bm9kZSAiLioiLycgJFRNUEZJTEUKKysJZmkKKytlbGlmIFsgIiRFTkFCTEUiID0gMCBdOyB0aGVuCisrCWlmIFsgLXogIiRIQVZFX0RJU0FCTEUiIF07IHRoZW4KKysJCXNlZCAtaSAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LyBhXAorKwlkZXZub2RlICIuKiIKKysnICRUTVBGSUxFCisrCWVsaWYgWyAiJEhBVkVfRElTQUJMRSIgPSAwIF07IHRoZW4KKysJCXNlZCAtaSAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKiNbWzpzcGFjZTpdXSpkZXZub2RlIFwiXC5cP1wqXCIvCWRldm5vZGUgIi4qIi8nICRUTVBGSUxFCisrCWZpCisrZmkKKysKKytpZiBbICIkRklORCIgPSAibiIgXTsgdGhlbgorKwlpZiBbICIkSEFWRV9GSU5EIiA9IDEgXTsgdGhlbgorKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSpmaW5kX211bHRpcGF0aHNbWzpzcGFjZTpdXSpcKHllc1x8MVwpLwlmaW5kX211bHRpcGF0aHMgbm8vJyAkVE1QRklMRQorKwkJQ0hBTkdFRF9DT05GSUc9MQorKwlmaQorK2VsaWYgWyAiJEZJTkQiID0gInkiIF07IHRoZW4KKysJaWYgWyAteiAiJEhBVkVfRklORCIgXTsgdGhlbgorKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8gYVwKKysJZmluZF9tdWx0aXBhdGhzIHllcworKycgJFRNUEZJTEUKKysJCUNIQU5HRURfQ09ORklHPTEKKysJZWxpZiBbICIkSEFWRV9GSU5EIiA9IDAgXTsgdGhlbgorKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSpmaW5kX211bHRpcGF0aHNbWzpzcGFjZTpdXSpcKG5vXHwwXCkvCWZpbmRfbXVsdGlwYXRocyB5ZXMvJyAkVE1QRklMRQorKwkJQ0hBTkdFRF9DT05GSUc9MQorKwlmaQorK2ZpCisrCisraWYgWyAiJEZSSUVORExZIiA9ICJuIiBdOyB0aGVuCisrCWlmIFsgIiRIQVZFX0ZSSUVORExZIiA9IDEgXTsgdGhlbgorKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSp1c2VyX2ZyaWVuZGx5X25hbWVzW1s6c3BhY2U6XV0qXCh5ZXNcfDFcKS8JdXNlcl9mcmllbmRseV9uYW1lcyBuby8nICRUTVBGSUxFCisrCQlDSEFOR0VEX0NPTkZJRz0xCisrCWZpCisrZWxpZiBbICIkRlJJRU5ETFkiID0gInkiIF07IHRoZW4KKysJaWYgWyAteiAiJEhBVkVfRlJJRU5ETFkiIF07IHRoZW4KKysJCXNlZCAtaSAnL15kZWZhdWx0c1tbOnNwYWNlOl1dKnsvIGFcCisrCXVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzCisrJyAkVE1QRklMRQorKwkJQ0hBTkdFRF9DT05GSUc9MQorKwllbGlmIFsgIiRIQVZFX0ZSSUVORExZIiA9IDAgXTsgdGhlbgorKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSp1c2VyX2ZyaWVuZGx5X25hbWVzW1s6c3BhY2U6XV0qXChub1x8MFwpLwl1c2VyX2ZyaWVuZGx5X25hbWVzIHllcy8nICRUTVBGSUxFCisrCQlDSEFOR0VEX0NPTkZJRz0xCisrCWZpCisrZmkKKysKKytpZiBbIC1mICIkT1VUUFVURklMRSIgXTsgdGhlbgorKwljcCAkT1VUUFVURklMRSAkT1VUUFVURklMRS5vbGQKKysJaWYgWyAkPyAhPSAwIF07IHRoZW4KKysJCWVjaG8gImZhaWxlZCB0byBiYWNrdXAgb2xkIGNvbmZpZyBmaWxlLCAkT1VUUFVURklMRSBub3QgdXBkYXRlZCIKKysJCWV4aXQgMQorKwlmaQorK2ZpCisrCisrY3AgJFRNUEZJTEUgJE9VVFBVVEZJTEUKKytpZiBbICQ/ICE9IDAgXTsgdGhlbgorKwllY2hvICJmYWlsZWQgdG8gY29weSBuZXcgY29uZmlnIGZpbGUgaW50byBwbGFjZSwgY2hlY2sgJE9VVFBVVEZJTEUgaXMgc3RpbGwgT0siCisrCWV4aXQgMQorK2ZpCisrCisrcm0gLWYgJFRNUEZJTEUKKysKKytpZiBbICIkRU5BQkxFIiA9IDEgXTsgdGhlbgorKwlpZiBbICIkSEFWRV9NT0RVTEUiID0gMCBdOyB0aGVuCisrCQltb2Rwcm9iZSBkbV9tdWx0aXBhdGgKKysJZmkKKysJaWYgWyAiJEhBVkVfTVVMVElQQVRIRCIgPSAwIF07IHRoZW4KKysJCXN5c3RlbWN0bCBzdGFydCBtdWx0aXBhdGhkLnNlcnZpY2UKKysJZmkKKytlbGlmIFsgIiRFTkFCTEUiID0gMCBdOyB0aGVuCisrCWlmIFsgIiRIQVZFX01VTFRJUEFUSEQiID0gMSBdOyB0aGVuCisrCQlzeXN0ZW1jdGwgc3RvcCBtdWx0aXBhdGhkLnNlcnZpY2UKKysJZmkKKytlbGlmIFsgLW4gIiRDSEFOR0VEX0NPTkZJRyIgLWEgIiRIQVZFX01VTFRJUEFUSEQiID0gMSBdOyB0aGVuCisrCXN5c3RlbWN0bCByZWxvYWQgbXVsdGlwYXRoZC5zZXJ2aWNlCisrZmkKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbXBhdGhjb25mLjggYi9tdWx0aXBhdGgvbXBhdGhjb25mLjgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40Y2QzMjY3CistLS0gL2Rldi9udWxsCisrKysgYi9tdWx0aXBhdGgvbXBhdGhjb25mLjgKK0BAIC0wLDAgKzEsMTAxIEBACisrLlRIIE1QQVRIQ09ORiA4ICJKdW5lIDIwMTAiICIiICJMaW51eCBBZG1pbmlzdHJhdG9yJ3MgTWFudWFsIgorKy5TSCBOQU1FCisrbXBhdGhjb25mIC0gQSB0b29sIGZvciBjb25maWd1cmluZyBkZXZpY2UtbWFwcGVyLW11bHRpcGF0aAorKy5TSCBTWU5PUFNJUworKy5CIG1wYXRoY29uZgorKy5SQiBbXHwgY29tbWFuZHMgXHxdCisrLlJCIFtcfCBvcHRpb25zIFx8XQorKy5TSCBERVNDUklQVElPTgorKy5CIG1wYXRoY29uZgorK2lzIGEgdXRpbGl0eSB0aGF0IGNyZWF0ZXMgb3IgbW9kaWZpZXMKKysuQiAvZXRjL211bHRpcGF0aC5jb25mLgorK0l0IGNhbiBlbmFibGUgb3IgZGlzYWJsZSBtdWx0aXBhdGhpbmcgYW5kIGNvbmZpZ3VyZSBzb21lIGNvbW1vbiBvcHRpb25zLgorKy5CIG1wYXRoY29uZgorK2NhbiBhbHNvIGxvYWQgdGhlCisrLkIgZG1fbXVsdGlwYXRoCisrbW9kdWxlLCBzdGFydCBhbmQgc3RvcCB0aGUKKysuQiBtdWx0aXBhdGhkCisrZGFlbW9uLCBhbmQgY29uZmlndXJlIHRoZQorKy5CIG11bHRpcGF0aGQKKytzZXJ2aWNlIHRvIHN0YXJ0IGF1dG9tYXRpY2FsbHkgb3Igbm90LiBJZgorKy5CIG1wYXRoY29uZgorK2lzIGNhbGxlZCB3aXRoIG5vIGNvbW1hbmRzLCBpdCB3aWxsIGRpc3BsYXkgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKysKKytUaGUgZGVmYXVsdCBvcHRpb25zIGZvciBtcGF0aGNvbmYgYXJlCisrLkIgLS13aXRoX21vZHVsZQorK1RoZQorKy5CIC0td2l0aF9tdWx0aXBhdGhkCisrb3B0aW9uIGlzIG5vdCBzZXQgYnkgZGVmYXVsdC4gIEVuYWJsaW5nIG11bHRpcGF0aGluZyB3aWxsIGxvYWQgdGhlCisrLkIgZG1fbXVsdGlwYXRoCisrbW9kdWxlIGJ1dCBpdCB3aWxsIG5vdCBpbW1lZGlhdGVseSBzdGFydCBpdC4gVGhpcyBpcyBzbworK3RoYXQgdXNlcnMgY2FuIG1hbnVhbGx5IGVkaXQgdGhlaXIgY29uZmlnIGZpbGUgaWYgbmVjZXNzYXJ5LCBiZWZvcmUgc3RhcnRpbmcKKysuQiBtdWx0aXBhdGhkLgorKworK0lmCisrLkIgL2V0Yy9tdWx0aXBhdGguY29uZgorK2FscmVhZHkgZXhpc3RzLCBtcGF0aGNvbmYgd2lsbCBlZGl0IGl0LiBJZiBpdCBkb2VzIG5vdCBleGlzdCwgbXBhdGhjb25mIHdpbGwKKytjcmVhdGUgYSBkZWZhdWx0IGZpbGUgd2l0aAorKy5CIHVzZXJfZnJpZW5kbHlfbmFtZXMKKythbmQKKysuQiBmaW5kX211bHRpcGF0aHMKKytzZXQuIFRvIGRpc2FibGUgdGhlc2UsIHVzZSB0aGUKKysuQiAtLXVzZXJfZnJpZW5kbHlfbmFtZXMgbgorK2FuZAorKy5CIC0tZmluZF9tdWx0aXBhdGhzIG4KKytvcHRpb25zCisrLlNIIENPTU1BTkRTCisrLlRQCisrLkIgLS1lbmFibGUKKytSZW1vdmVzIGFueSBsaW5lIHRoYXQgYmxhY2tsaXN0cyBhbGwgZGV2aWNlIG5vZGVzIGZyb20gdGhlCisrLkIgL2V0Yy9tdWx0aXBhdGguY29uZgorK2JsYWNrbGlzdCBzZWN0aW9uLgorKy5UUAorKy5CIC0tZGlzYWJsZQorK0FkZHMgYSBsaW5lIHRoYXQgYmxhY2tsaXN0cyBhbGwgZGV2aWNlIG5vZGVzIHRvIHRoZQorKy5CIC9ldGMvbXVsdGlwYXRoLmNvbmYKKytibGFja2xpc3Qgc2VjdGlvbi4gSWYgbm8gYmxhY2tsaXN0IHNlY3Rpb24gZXhpc3RzLCBpdCB3aWxsIGNyZWF0ZSBvbmUuCisrLlRQCisrLkIgLS11c2VyX2ZyaWVuZGx5X25hbWUgXGZQIHsgXGZCeVxmUCB8IFxmQm5cZlAgfQorK0lmIHNldCB0byBcZkJ5XGZQLCB0aGlzIGFkZHMgdGhlIGxpbmUKKysuQiB1c2VyX2ZyaWVuZGx5X25hbWVzIHllcworK3RvIHRoZQorKy5CIC9ldGMvbXVsdGlwYXRoLmNvbmYKKytkZWZhdWx0cyBzZWN0aW9uLiBJZiBzZXQgdG8gXGZCblxmUCwgdGhpcyByZW1vdmVzIHRoZSBsaW5lLCBpZiBwcmVzZW50LiBUaGlzCisrY29tbWFuZCBjYW4gYmUgdXNlZCBhbG9uZyB3aXRoIGFueSBvdGhlciBjb21tYW5kLgorKy5UUAorKy5CIC0tZmluZF9tdWx0aXBhdGhzXGZQIHsgXGZCeVxmUCB8IFxmQm5cZlAgfQorK0lmIHNldCB0byBcZkJ5XGZQLCB0aGlzIGFkZHMgdGhlIGxpbmUKKysuQiBmaW5kX211bHRpcGF0aHMgeWVzCisrdG8gdGhlCisrLkIgL2V0Yy9tdWx0aXBhdGguY29uZgorK2RlZmF1bHRzIHNlY3Rpb24uIElmIHNldCB0byBcZkJuXGZQLCB0aGlzIHJlbW92ZXMgdGhlIGxpbmUsIGlmIHByZXNlbnQuIFRoaXMKKytjb21tYW5kIGNhbiBiZSB1c2VkIGFsZG9uZyB3aXRoIGFueSBvdGhlciBjb21tYW5kLgorKy5TSCBPUFRJT05TCisrLlRQCisrLkIgLS13aXRoX21vZHVsZVxmUCB7IFxmQnlcZlAgfCBcZkJuXGZQIH0KKytJZiBzZXQgdG8gXGZCeVxmUCwgdGhpcyBydW5zCisrLkIgbW9kcHJvYmUgZG1fbXVsdGlwYXRoCisrdG8gaW5zdGFsbCB0aGUgbXVsdGlwYXRoIG1vZHVsZXMuIFRoaXMgb3B0aW9uIG9ubHkgd29ya3Mgd2l0aCB0aGUKKysuQiAtLWVuYWJsZQorK2NvbW1hbmQuIFRoaXMgb3B0aW9uIGlzIHNldCB0byBcZkJ5XGZQIGJ5IGRlZmF1bHQuCisrLlRQCisrLkIgLS13aXRoX211bHRpcGF0aGQgeyBcZkJ5XGZQIHwgXGZCblxmUCB9CisrSWYgc2V0IHRvIFxmQnlcZlAsIHRoaXMgcnVucworKy5CIHNlcnZpY2UgbXVsdGlwYXRoZCBzdGFydAorK3RvIHN0YXJ0IHRoZSBtdWx0aXBhdGhkIGRhZW1vbiBvbiBcZkItLWVuYWJsZVxmUCwKKysuQiBzZXJ2aWNlIG11bHRpcGF0aGQgc3RvcAorK3RvIHN0b3AgdGhlIG11bHRpcGF0aGQgZGFlbW9uIG9uIFxmQi0tZGlzYWJsZVxmUCwgYW5kCisrLkIgc2VydmljZSBtdWx0aXBhdGhkIHJlbG9hZAorK3RvIHJlY29uZmlndXJlIG11bHRpcGF0aGQgb24gXGZCLS11c2VyX2ZyaW5kbHlfbmFtZXNcZlAgYW5kCisrXGZCLS1maW5kX211bHRpcGF0aHNcZlAuCisrVGhpcyBvcHRpb24gaXMgc2V0IHRvIFxmQm5cZlAgYnkgZGVmYXVsdC4KKysuU0ggRklMRVMKKysuQlIgL2V0Yy9tdWx0aXBhdGguY29uZgorKy5TSCAiU0VFIEFMU08iCisrLkJSIG11bHRpcGF0aC5jb25mICg1KSwKKysuQlIgbW9kcHJvYmUgKDgpLAorKy5CUiBtdWx0aXBhdGggKDgpLAorKy5CUiBtdWx0aXBhdGhkICg4KSwKKysuQlIgc2VydmljZSAoOCksCisrLlNIIEFVVEhPUgorK0JlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNi1SSC1hZGQtd3dpZHMtZnJvbS1rZXJuZWwtY21kbGluZS1tcGF0aC53d2lkcy13aXRoLUEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA2LVJILWFkZC13d2lkcy1mcm9tLWtlcm5lbC1jbWRsaW5lLW1wYXRoLnd3aWRzLXdpdGgtQS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzI5MWI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNi1SSC1hZGQtd3dpZHMtZnJvbS1rZXJuZWwtY21kbGluZS1tcGF0aC53d2lkcy13aXRoLUEucGF0Y2gKQEAgLTAsMCArMSwxNjYgQEAKK0Zyb20gMTUxNzljODMwNTIxZDhmMzdmOTI1NGViYzZiYmYxNTBhNDA5Zjk1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMTcgT2N0IDIwMTQgMTE6MjA6MzQgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xNF0gUkg6IGFkZCB3d2lkcyBmcm9tIGtlcm5lbCBjbWRsaW5lIG1wYXRoLnd3aWRzIHdpdGggLUEKKworVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgb3B0aW9uIHRvIG11bHRpcGF0aCwgIi1BIiwgd2hpY2ggcmVhZHMKKy9wcm9jL2NtZGxpbmUgZm9yIG1wYXRoLnd3aWQ9PFdXSUQ+IG9wdGlvbnMsIGFuZCBhZGRzIGFueSB3d2lkcyBpdCBmaW5kcwordG8gL2V0Yy9tdWx0aXBhdGgvd3dpZHMuICBXaGlsZSB0aGlzIGlzbid0IHVzdWFsbHkgaW1wb3J0YW50IGR1cmluZworbm9ybWFsIG9wZXJhdGlvbiwgc2luY2UgdGhlc2Ugd3dpZHMgc2hvdWxkIGFscmVhZHkgYmUgYWRkZWQsIGl0IGNhbiBiZQoraGVscGZ1bCBkdXJpbmcgaW5zdGFsbGF0aW9uLCB0byBtYWtlIHN1cmUgdGhhdCBtdWx0aXBhdGggY2FuIGNsYWltCitkZXZpY2VzIGFzIGl0cyBvd24sIGJlZm9yZSBMVk0gb3Igc29tZXRoaW5nIGVsc2UgbWFrZXMgdXNlIG9mIHRoZW0uICBUaGUKK3BhdGNoIGFsc28gZXhlY3MgIi9zYmluL211bHRpcGF0aCAtQSIgYmVmb3JlIHJ1bm5pbmcgbXVsdGlwYXRoZCBpbgorbXVsdGlwYXRoZC5zZXJ2aWNlCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC93d2lkcy5jICAgICAgICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxpYm11bHRpcGF0aC93d2lkcy5oICAgICAgICAgIHwgIDEgKworIG11bHRpcGF0aC9tYWluLmMgICAgICAgICAgICAgIHwgMTAgKysrKysrKystLQorIG11bHRpcGF0aC9tdWx0aXBhdGguOCAgICAgICAgIHwgIDUgKysrKy0KKyBtdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSB8ICAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvd3dpZHMuYyBiL2xpYm11bHRpcGF0aC93d2lkcy5jCitpbmRleCBiYzcwYTI3Li44OGJiNzJiIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3d3aWRzLmMKKysrKyBiL2xpYm11bHRpcGF0aC93d2lkcy5jCitAQCAtMzIxLDMgKzMyMSw0NyBAQCByZW1lbWJlcl93d2lkKGNoYXIgKnd3aWQpCisgCQljb25kbG9nKDQsICJ3d2lkICVzIGFscmVhZHkgaW4gd3dpZHMgZmlsZSIsIHd3aWQpOworIAlyZXR1cm4gMDsKKyB9CisrCisraW50IHJlbWVtYmVyX2NtZGxpbmVfd3dpZCh2b2lkKQorK3sKKysJRklMRSAqZiA9IE5VTEw7CisrCWNoYXIgYnVmW0xJTkVfTUFYXSwgKm5leHQsICpwdHI7CisrCWludCByZXQgPSAwOworKworKwlmID0gZm9wZW4oIi9wcm9jL2NtZGxpbmUiLCAicmUiKTsKKysJaWYgKCFmKSB7CisrCQljb25kbG9nKDAsICJjYW4ndCBvcGVuIC9wcm9jL2NtZGxpbmUgOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisrCQlyZXR1cm4gLTE7CisrCX0KKysKKysJaWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgeworKwkJaWYgKGZlcnJvcihmKSkKKysJCQljb25kbG9nKDAsICJyZWFkIG9mIC9wcm9jL2NtZGxpbmUgZmFpbGVkIDogJXMiLAorKwkJCQlzdHJlcnJvcihlcnJubykpOworKwkJZWxzZQorKwkJCWNvbmRsb2coMCwgImNvdWxkbid0IHJlYWQgL3Byb2MvY21kbGluZSIpOworKwkJZmNsb3NlKGYpOworKwkJcmV0dXJuIC0xOworKwl9CisrCWZjbG9zZShmKTsKKysJbmV4dCA9IGJ1ZjsKKysJd2hpbGUoKHB0ciA9IHN0cnN0cihuZXh0LCAibXBhdGgud3dpZD0iKSkpIHsKKysJCXB0ciArPSAxMTsKKysJCW5leHQgPSBzdHJwYnJrKHB0ciwgIiBcdFxuIik7CisrCQlpZiAobmV4dCkgeworKwkJCSpuZXh0ID0gJ1wwJzsKKysJCQluZXh0Kys7CisrCQl9CisrCQlpZiAoc3RybGVuKHB0cikpIHsKKysJCQlpZiAocmVtZW1iZXJfd3dpZChwdHIpICE9IDApCisrCQkJCXJldCA9IC0xOworKwkJfQorKwkJZWxzZSB7CisrCQkJY29uZGxvZygwLCAiZW1wdHkgbXBhdGgud3dpZCBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbiIpOworKwkJCXJldCA9IC0xOworKwkJfQorKwkJaWYgKCFuZXh0KQorKwkJCWJyZWFrOworKwl9CisrCXJldHVybiByZXQ7CisrfQorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC93d2lkcy5oIGIvbGlibXVsdGlwYXRoL3d3aWRzLmgKK2luZGV4IDk1MjcwMTIuLmI2NjUyMzIgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvd3dpZHMuaAorKysrIGIvbGlibXVsdGlwYXRoL3d3aWRzLmgKK0BAIC0xNyw1ICsxNyw2IEBAIGludCByZW1lbWJlcl93d2lkKGNoYXIgKnd3aWQpOworIGludCBjaGVja193d2lkc19maWxlKGNoYXIgKnd3aWQsIGludCB3cml0ZV93d2lkKTsKKyBpbnQgcmVtb3ZlX3d3aWQoY2hhciAqd3dpZCk7CisgaW50IHJlcGxhY2Vfd3dpZHModmVjdG9yIG1wKTsKKytpbnQgcmVtZW1iZXJfY21kbGluZV93d2lkKHZvaWQpOworIAorICNlbmRpZiAvKiBfV1dJRFNfSCAqLworZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tYWluLmMgYi9tdWx0aXBhdGgvbWFpbi5jCitpbmRleCA0MTc0ZDQzLi43MjU4NWIwIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoL21haW4uYworKysrIGIvbXVsdGlwYXRoL21haW4uYworQEAgLTEwMiw3ICsxMDIsNyBAQCB1c2FnZSAoY2hhciAqIHByb2duYW1lKQorIHsKKyAJZnByaW50ZiAoc3RkZXJyLCBWRVJTSU9OX1NUUklORyk7CisgCWZwcmludGYgKHN0ZGVyciwgIlVzYWdlOlxuIik7CistCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgWy1hfC1jfC13fC1XXSBbLWRdIFstcl0gWy1pXSBbLXYgbHZsXSBbLXAgcG9sXSBbLWIgZmlsXSBbLXFdIFtkZXZdXG4iLCBwcm9nbmFtZSk7CisrCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgWy1hfC1BfC1jfC13fC1XXSBbLWRdIFstcl0gWy1pXSBbLXYgbHZsXSBbLXAgcG9sXSBbLWIgZmlsXSBbLXFdIFtkZXZdXG4iLCBwcm9nbmFtZSk7CisgCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgLWx8LWxsfC1mIFstdiBsdmxdIFstYiBmaWxdIFstUiBudW1dIFtkZXZdXG4iLCBwcm9nbmFtZSk7CisgCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgLUYgWy12IGx2bF0gWy1SIG51bV1cbiIsIHByb2duYW1lKTsKKyAJZnByaW50ZiAoc3RkZXJyLCAiICAlcyAtdFxuIiwgcHJvZ25hbWUpOworQEAgLTExNiw2ICsxMTYsOCBAQCB1c2FnZSAoY2hhciAqIHByb2duYW1lKQorIAkJIiAgLWYgICAgICBmbHVzaCBhIG11bHRpcGF0aCBkZXZpY2UgbWFwXG4iCisgCQkiICAtRiAgICAgIGZsdXNoIGFsbCBtdWx0aXBhdGggZGV2aWNlIG1hcHNcbiIKKyAJCSIgIC1hICAgICAgYWRkIGEgZGV2aWNlIHd3aWQgdG8gdGhlIHd3aWRzIGZpbGVcbiIKKysJCSIgIC1BICAgICAgYWRkIGRldmljZXMgZnJvbSBrZXJuZWwgY29tbWFuZCBsaW5lIG1wYXRoLnd3aWRzXG4iCisrCQkiICAgICAgICAgIHBhcmFtZXRlcnMgdG8gd3dpZHMgZmlsZVxuIgorIAkJIiAgLWMgICAgICBjaGVjayBpZiBhIGRldmljZSBzaG91bGQgYmUgYSBwYXRoIGluIGEgbXVsdGlwYXRoIGRldmljZVxuIgorIAkJIiAgLXEgICAgICBhbGxvdyBxdWV1ZV9pZl9ub19wYXRoIHdoZW4gbXVsdGlwYXRoZCBpcyBub3QgcnVubmluZ1xuIgorIAkJIiAgLWQgICAgICBkcnkgcnVuLCBkbyBub3QgY3JlYXRlIG9yIHVwZGF0ZSBkZXZtYXBzXG4iCitAQCAtNTIyLDcgKzUyNCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQlleGl0KDEpOworIAltdWx0aXBhdGhfY29uZiA9IGNvbmY7CisgCWNvbmYtPnJldHJpZ2dlcl90cmllcyA9IDA7CistCXdoaWxlICgoYXJnID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICI6YWRjaGw6OkZmTTp2OnA6YjpCclI6aXRxdXdXIikpICE9IEVPRiApIHsKKysJd2hpbGUgKChhcmcgPSBnZXRvcHQoYXJnYywgYXJndiwgIjphQWRjaGw6OkZmTTp2OnA6YjpCclI6aXRxdXdXIikpICE9IEVPRiApIHsKKyAJCXN3aXRjaChhcmcpIHsKKyAJCWNhc2UgMTogcHJpbnRmKCJvcHRhcmcgOiAlc1xuIixvcHRhcmcpOworIAkJCWJyZWFrOworQEAgLTU4Niw2ICs1ODgsMTAgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCWNhc2UgJ3QnOgorIAkJCXIgPSBkdW1wX2NvbmZpZyhjb25mKTsKKyAJCQlnb3RvIG91dF9mcmVlX2NvbmZpZzsKKysJCWNhc2UgJ0EnOgorKwkJCWlmIChyZW1lbWJlcl9jbWRsaW5lX3d3aWQoKSAhPSAwKQorKwkJCQlleGl0KDEpOworKwkJCWV4aXQoMCk7CisgCQljYXNlICdoJzoKKyAJCQl1c2FnZShhcmd2WzBdKTsKKyAJCQlleGl0KDApOworZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGguOCBiL211bHRpcGF0aC9tdWx0aXBhdGguOAoraW5kZXggYjk0MzZlNS4uYjlhZDZiMSAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGguOAorKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC44CitAQCAtMjUsNyArMjUsNyBAQCBtdWx0aXBhdGggXC0gRGV2aWNlIG1hcHBlciB0YXJnZXQgYXV0b2NvbmZpZy4KKyAuUkIgW1x8IFwtYlwgXGMKKyAuSVIgYmluZGluZ3NfZmlsZSBcfF0KKyAuUkIgW1x8IFwtZCBcfF0KKy0uUkIgW1x8IFwtaCB8IFwtbCB8IFwtbGwgfCBcLWYgfCBcLXQgfCBcLUYgfCBcLUIgfCBcLWMgfCBcLXEgfCBcfC1yIHwgXHwtaSB8IFwtYSB8IFx8LXUgfCBcLXcgfCBcLVcgXHxdCisrLlJCIFtcfCBcLWggfCBcLWwgfCBcLWxsIHwgXC1mIHwgXC10IHwgXC1GIHwgXC1CIHwgXC1jIHwgXC1xIHwgXHwtciB8IFx8LWkgfCBcLWEgfCBcLUEgfCBcLXUgfCBcLXcgfCBcLVcgXHxdCisgLlJCIFtcfCBcLXBcIFxjCisgLklSIGZhaWxvdmVyIHwgbXVsdGlidXMgfCBncm91cF9ieV9zZXJpYWwgfCBncm91cF9ieV9wcmlvIHwgZ3JvdXBfYnlfbm9kZV9uYW1lIFx8XQorIC5SQiBbXHwgXC1SXCBcYworQEAgLTEyMiw2ICsxMjIsOSBAQCBBZGQgdGhlIFdXSUQgZm9yIHRoZSBzcGVjaWZpZWQgZGV2aWNlIHRvIHRoZSBXV0lEcyBmaWxlLgorIENoZWNrIGlmIHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGluIHRoZSBwcm9ncmFtIGVudmlyb25tZW50IHNob3VsZCBiZQorIGEgcGF0aCBpbiBhIG11bHRpcGF0aCBkZXZpY2UuCisgLgorKy5CIFwtQQorK2FkZCB3d2lkcyBmcm9tIGFueSBrZXJuZWwgY29tbWFuZCBsaW5lIG1wYXRoLnd3aWQgcGFyYW1ldGVycyB0byB0aGUgd3dpZHMgZmlsZQorKy4KKyAuVFAKKyAuQiBcLXcKKyBSZW1vdmUgdGhlIFdXSUQgZm9yIHRoZSBzcGVjaWZpZWQgZGV2aWNlIGZyb20gdGhlIFdXSURzIGZpbGUuCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQoraW5kZXggZmFmZDA4OC4uYTYyM2EzZiAxMDA2NDQKKy0tLSBhL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCisrKysgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQorQEAgLTE1LDYgKzE1LDcgQEAgVHlwZT1ub3RpZnkKKyBOb3RpZnlBY2Nlc3M9bWFpbgorIExpbWl0Q09SRT1pbmZpbml0eQorIEV4ZWNTdGFydFByZT0tL3NiaW4vbW9kcHJvYmUgLWEgc2NzaV9kaF9hbHVhIHNjc2lfZGhfZW1jIHNjc2lfZGhfcmRhYyBkbS1tdWx0aXBhdGgKKytFeGVjU3RhcnRQcmU9LS9zYmluL211bHRpcGF0aCAtQQorIEV4ZWNTdGFydD0vc2Jpbi9tdWx0aXBhdGhkIC1kIC1zCisgRXhlY1JlbG9hZD0vc2Jpbi9tdWx0aXBhdGhkIHJlY29uZmlndXJlCisgCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDctUkgtdHJpZ2dlci1jaGFuZ2UtdWV2ZW50LW9uLW5ldy1kZXZpY2UtY3JlYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA3LVJILXRyaWdnZXItY2hhbmdlLXVldmVudC1vbi1uZXctZGV2aWNlLWNyZWF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNWEzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA3LVJILXRyaWdnZXItY2hhbmdlLXVldmVudC1vbi1uZXctZGV2aWNlLWNyZWF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMTM4IEBACitGcm9tIDBkMmM5YWZiZDg5ZDc5ZmQ3MDBmOWM5OWFhMjBlNWY3YzczODIwMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDI0IEFwciAyMDE3IDA5OjM5OjU3IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTRdIFJIOiB0cmlnZ2VyIGNoYW5nZSB1ZXZlbnQgb24gbmV3IGRldmljZSBjcmVhdGlvbgorCitXaGVuIG11bHRpcGF0aCBmaXJzdCBzZWVzIGEgcGF0aCBkZXZpY2Ugd2l0aCB1c2VyX2ZyaWVuZGx5IG5hbWVzCitlbmFibGVkLCBpdCBjYW4ndCBrbm93IGlmIHRoZSBkZXZpY2Ugc2hvdWxkIGJlIG11bHRpcGF0aGVkLiBUaGlzIG1lYW5zCit0aGF0IGl0IHdpbGwgbm90IGNsYWltIHRoZSBkZXZpY2UgaW4gdWRldi4gIElmIHRoZSBkZXZpY2UgaXMgZXZlbnR1YWxseQorbXVsdGlwYXRoZWQsIG11bHRpcGF0aCBzaG91bGQgdHJpZ2dlciBhIGNoYW5nZSB1ZXZlbnQgdG8gdXBkYXRlIHRoZSB1ZGV2CitkYXRhYmFzZSB0byBjbGFpbSB0aGUgZGV2aWNlLgorCitUaGlzIGFsc28gcmV2ZXJ0cyBjb21taXQgNjRlMjdlYzA2NmEwMDEwMTJmNDQ1NTBmMDk1YzkzNDQzZTkxZDg0NS4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBsaWJtdWx0aXBhdGgvY29uZmlndXJlLmggfCAgMSArCisgbGlibXVsdGlwYXRoL3d3aWRzLmMgICAgIHwgIDQgKystLQorIG11bHRpcGF0aC9tYWluLmMgICAgICAgICB8ICAyICstCisgbXVsdGlwYXRoZC9tYWluLmMgICAgICAgIHwgIDcgKystLS0tLQorIDUgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY29uZmlndXJlLmMgYi9saWJtdWx0aXBhdGgvY29uZmlndXJlLmMKK2luZGV4IGJkMDkwZDkuLjg0M2RkMDkgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY29uZmlndXJlLmMKKysrKyBiL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYworQEAgLTQyMiw2ICs0MjIsMjggQEAgdHJpZ2dlcl91ZGV2X2NoYW5nZShjb25zdCBzdHJ1Y3QgbXVsdGlwYXRoICptcHApCisgCXVkZXZfZGV2aWNlX3VucmVmKHVkZCk7CisgfQorIAorK3ZvaWQKKyt0cmlnZ2VyX3BhdGhzX3VkZXZfY2hhbmdlKGNvbnN0IHN0cnVjdCBtdWx0aXBhdGggKm1wcCkKKyt7CisrCXN0cnVjdCBwYXRoZ3JvdXAgKiBwZ3A7CisrCXN0cnVjdCBwYXRoICogcHA7CisrCWludCBpLCBqOworKworKwlpZiAoIW1wcCB8fCAhbXBwLT5wZykKKysJCXJldHVybjsKKysKKysJdmVjdG9yX2ZvcmVhY2hfc2xvdCAobXBwLT5wZywgcGdwLCBpKSB7CisrCQlpZiAoIXBncC0+cGF0aHMpCisrCQkJY29udGludWU7CisrCQl2ZWN0b3JfZm9yZWFjaF9zbG90KHBncC0+cGF0aHMsIHBwLCBqKSB7CisrCQkJaWYgKCFwcC0+dWRldikKKysJCQkJY29udGludWU7CisrCQkJc3lzZnNfYXR0cl9zZXRfdmFsdWUocHAtPnVkZXYsICJ1ZXZlbnQiLCAiY2hhbmdlIiwKKysJCQkJCSAgICAgc3RybGVuKCJjaGFuZ2UiKSk7CisrCQl9CisrCX0KKyt9CisrCisgc3RhdGljIGludAorIGlzX21wcF9rbm93bl90b191ZGV2KGNvbnN0IHN0cnVjdCBtdWx0aXBhdGggKm1wcCkKKyB7CitAQCAtODAyLDggKzgyNCw4IEBAIGludCBkb21hcChzdHJ1Y3QgbXVsdGlwYXRoICptcHAsIGNoYXIgKnBhcmFtcywgaW50IGlzX2RhZW1vbikKKyAJCSAqIHN1Y2NlZWRlZAorIAkJICovCisgCQltcHAtPmZvcmNlX3VkZXZfcmVsb2FkID0gMDsKKy0JCWlmIChtcHAtPmFjdGlvbiA9PSBBQ1RfQ1JFQVRFKQorLQkJCXJlbWVtYmVyX3d3aWQobXBwLT53d2lkKTsKKysJCWlmIChtcHAtPmFjdGlvbiA9PSBBQ1RfQ1JFQVRFICYmIHJlbWVtYmVyX3d3aWQobXBwLT53d2lkKSA9PSAxKQorKwkJCXRyaWdnZXJfcGF0aHNfdWRldl9jaGFuZ2UobXBwKTsKKyAJCWlmICghaXNfZGFlbW9uKSB7CisgCQkJLyogbXVsdGlwYXRoIGNsaWVudCBtb2RlICovCisgCQkJZG1fc3dpdGNoZ3JvdXAobXBwLT5hbGlhcywgbXBwLT5iZXN0cGcpOworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWd1cmUuaCBiL2xpYm11bHRpcGF0aC9jb25maWd1cmUuaAoraW5kZXggZmQ3ZjU4MS4uMjUzZTI5YiAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWd1cmUuaAorKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5oCitAQCAtMzYsMyArMzYsNCBAQCBpbnQgZ2V0X3JlZnd3aWQgKGVudW0gbXBhdGhfY21kcyBjbWQsIGNoYXIgKiBkZXYsIGVudW0gZGV2dHlwZXMgZGV2X3R5cGUsCisgCQkgdmVjdG9yIHBhdGh2ZWMsIGNoYXIgKip3d2lkKTsKKyBpbnQgcmVsb2FkX21hcChzdHJ1Y3QgdmVjdG9ycyAqdmVjcywgc3RydWN0IG11bHRpcGF0aCAqbXBwLCBpbnQgcmVmcmVzaCwgaW50IGlzX2RhZW1vbik7CisgaW50IHN5c2ZzX2dldF9ob3N0X2FkYXB0ZXJfbmFtZShzdHJ1Y3QgcGF0aCAqcHAsIGNoYXIgKmFkYXB0ZXJfbmFtZSk7Cisrdm9pZCB0cmlnZ2VyX3BhdGhzX3VkZXZfY2hhbmdlKGNvbnN0IHN0cnVjdCBtdWx0aXBhdGggKm1wcCk7CitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL3d3aWRzLmMgYi9saWJtdWx0aXBhdGgvd3dpZHMuYworaW5kZXggODhiYjcyYi4uMjQ5YzZjMSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC93d2lkcy5jCisrKysgYi9saWJtdWx0aXBhdGgvd3dpZHMuYworQEAgLTMxOSw3ICszMTksNyBAQCByZW1lbWJlcl93d2lkKGNoYXIgKnd3aWQpCisgCQljb25kbG9nKDMsICJ3cm90ZSB3d2lkICVzIHRvIHd3aWRzIGZpbGUiLCB3d2lkKTsKKyAJZWxzZQorIAkJY29uZGxvZyg0LCAid3dpZCAlcyBhbHJlYWR5IGluIHd3aWRzIGZpbGUiLCB3d2lkKTsKKy0JcmV0dXJuIDA7CisrCXJldHVybiByZXQ7CisgfQorIAorIGludCByZW1lbWJlcl9jbWRsaW5lX3d3aWQodm9pZCkKK0BAIC0zNTMsNyArMzUzLDcgQEAgaW50IHJlbWVtYmVyX2NtZGxpbmVfd3dpZCh2b2lkKQorIAkJCW5leHQrKzsKKyAJCX0KKyAJCWlmIChzdHJsZW4ocHRyKSkgeworLQkJCWlmIChyZW1lbWJlcl93d2lkKHB0cikgIT0gMCkKKysJCQlpZiAocmVtZW1iZXJfd3dpZChwdHIpIDwgMCkKKyAJCQkJcmV0ID0gLTE7CisgCQl9CisgCQllbHNlIHsKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbWFpbi5jIGIvbXVsdGlwYXRoL21haW4uYworaW5kZXggNzI1ODViMC4uMmVkYTZhMyAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tYWluLmMKKysrKyBiL211bHRpcGF0aC9tYWluLmMKK0BAIC0zMzYsNyArMzM2LDcgQEAgY29uZmlndXJlIChzdHJ1Y3QgY29uZmlnICpjb25mLCBlbnVtIG1wYXRoX2NtZHMgY21kLAorIAkJfQorIAkJaWYgKGNtZCA9PSBDTURfQUREX1dXSUQpIHsKKyAJCQlyID0gcmVtZW1iZXJfd3dpZChyZWZ3d2lkKTsKKy0JCQlpZiAociA9PSAwKQorKwkJCWlmIChyID49IDApCisgCQkJCXByaW50Zigid3dpZCAnJXMnIGFkZGVkXG4iLCByZWZ3d2lkKTsKKyAJCQllbHNlCisgCQkJCXByaW50ZigiZmFpbGVkIGFkZGluZyAnJXMnIHRvIHd3aWRzIGZpbGVcbiIsCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9tYWluLmMgYi9tdWx0aXBhdGhkL21haW4uYworaW5kZXggODFjNzZjYS4uODc0YmNjZSAxMDA2NDQKKy0tLSBhL211bHRpcGF0aGQvbWFpbi5jCisrKysgYi9tdWx0aXBhdGhkL21haW4uYworQEAgLTIwOTMsNyArMjA5Myw4IEBAIGNvbmZpZ3VyZSAoc3RydWN0IHZlY3RvcnMgKiB2ZWNzLCBpbnQgc3RhcnRfd2FpdGVycykKKyAKKyAJc3luY19tYXBzX3N0YXRlKG1wdmVjKTsKKyAJdmVjdG9yX2ZvcmVhY2hfc2xvdChtcHZlYywgbXBwLCBpKXsKKy0JCXJlbWVtYmVyX3d3aWQobXBwLT53d2lkKTsKKysJCWlmIChyZW1lbWJlcl93d2lkKG1wcC0+d3dpZCkgPT0gMSkKKysJCQl0cmlnZ2VyX3BhdGhzX3VkZXZfY2hhbmdlKG1wcCk7CisgCQl1cGRhdGVfbWFwX3ByKG1wcCk7CisgCX0KKyAKK0BAIC0yMTc1LDEwICsyMTc2LDYgQEAgcmVjb25maWd1cmUgKHN0cnVjdCB2ZWN0b3JzICogdmVjcykKKyAJCWNvbmYtPnZlcmJvc2l0eSA9IHZlcmJvc2l0eTsKKyAJaWYgKGJpbmRpbmdzX3JlYWRfb25seSkKKyAJCWNvbmYtPmJpbmRpbmdzX3JlYWRfb25seSA9IGJpbmRpbmdzX3JlYWRfb25seTsKKy0JaWYgKGNvbmYtPmZpbmRfbXVsdGlwYXRocykgeworLQkJY29uZGxvZygyLCAiZmluZF9tdWx0aXBhdGhzIGlzIHNldDogLW4gaXMgaW1wbGllZCIpOworLQkJaWdub3JlX25ld19kZXZzID0gMTsKKy0JfQorIAlpZiAoaWdub3JlX25ld19kZXZzKQorIAkJY29uZi0+aWdub3JlX25ld19kZXZzID0gaWdub3JlX25ld19kZXZzOworIAl1eHNvY2tfdGltZW91dCA9IGNvbmYtPnV4c29ja190aW1lb3V0OworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA4LWxpYm11bHRpcGF0aC1jaGFuZ2UtaG93LVJBRE9TLWNoZWNrZXItaXMtZW5hYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDgtbGlibXVsdGlwYXRoLWNoYW5nZS1ob3ctUkFET1MtY2hlY2tlci1pcy1lbmFibGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2Nzg4MDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA4LWxpYm11bHRpcGF0aC1jaGFuZ2UtaG93LVJBRE9TLWNoZWNrZXItaXMtZW5hYmxlZC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDBiZTE3NGRiZWRkODYxZDc2OTRiMGM3Nzk5ZmUyNmJlMzFlYjMyYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDI2IE1heSAyMDE3IDE3OjUyOjU3IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMTRdIGxpYm11bHRpcGF0aDogY2hhbmdlIGhvdyBSQURPUyBjaGVja2VyIGlzIGVuYWJsZWQKKworSW5zdGVhZCBvZiBtYWtpbmcgdGhlIHVzZXIgY2FsbCAibWFrZSIsICJtYWtlIGluc3RhbGwiIGFuZCAibWFrZSBjbGVhbiIKK3dpdGggRU5BQkxFX1JBRE9TIHNldCBjb3JyZWN0bHksIGhhdmUgdGhlIG1ha2VmaWxlIGNoZWNrIGlmCisvdXNyL2luY2x1ZGUvcmFkb3MvbGlicmFkb3MuaCBleGlzdHMsIGp1c3QgbGlrZSBpdCBjaGVja3MgaWYgc3BlY2lmaWMKK2Z1bmN0aW9ucyBleGlzdCBpbiBhIGZpbGUuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIE1ha2VmaWxlLmluYyAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKysrKysKKyBsaWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUgfCAgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluYyBiL01ha2VmaWxlLmluYworaW5kZXggMjU5MWZhOS4uZTA4NGZkMSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluYworKysrIGIvTWFrZWZpbGUuaW5jCitAQCAtMTA5LDUgKzEwOSwxOCBAQCBjaGVja19mdW5jID0JCQkJCQkJCSAgICAgICBcCisgCWVjaG8gIiQkZm91bmQiCQkJCQkJCSAgICAgICBcCisgICAgICkKKyAKKysjIENoZWNrZXIgd2hldGhlciBhIGZpbGUgd2l0aCBuYW1lICQxIGV4aXN0cworK2NoZWNrX2ZpbGUgPSAkKHNoZWxsCVwKKysJaWYgWyAtZiAiJDEiIF07IHRoZW4gXAorKwkJZm91bmQ9MTsgXAorKwkJc3RhdHVzPSJ5ZXMiOyBcCisrCWVsc2UgXAorKwkJZm91bmQ9MDsgXAorKwkJc3RhdHVzPSJubyI7IFwKKysJZmk7IFwKKysJZWNobyAxPiYyICJDaGVja2luZyBpZiAkMSBleGlzdHMgLi4uICQkc3RhdHVzIjsgXAorKwllY2hvICIkJGZvdW5kIiBcCisrCSkKKysKKyAlLm86CSUuYworIAkkKENDKSAkKENGTEFHUykgLWMgLW8gJEAgJDwKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUKK2luZGV4IDczMmNhOWQuLmJjZTZiOGIgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUKKysrKyBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZQorQEAgLTE0LDcgKzE0LDggQEAgTElCUz0gXAorIAlsaWJjaGVja2VtY19jbGFyaWlvbi5zbyBcCisgCWxpYmNoZWNraHBfc3cuc28gXAorIAlsaWJjaGVja3JkYWMuc28KKy1pZm5lcSAoJChFTkFCTEVfUkFET1MpLDApCisrCisraWZuZXEgKCQoY2FsbCBjaGVja19maWxlLC91c3IvaW5jbHVkZS9yYWRvcy9saWJyYWRvcy5oKSwwKQorIExJQlMgKz0gbGliY2hlY2tyYmQuc28KKyBlbmRpZgorIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA5LW11bHRpcGF0aC1zZXQtdmVyYm9zaXR5LXRvLWRlZmF1bHQtZHVyaW5nLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDktbXVsdGlwYXRoLXNldC12ZXJib3NpdHktdG8tZGVmYXVsdC1kdXJpbmctY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZDJkOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA5LW11bHRpcGF0aC1zZXQtdmVyYm9zaXR5LXRvLWRlZmF1bHQtZHVyaW5nLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDUyNmU1Mzk2MjhlMDUxMTI4YWJmNDZhNjBlYzIyZTE4YzliNWQ4NGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDMxIE1heSAyMDE3IDE1OjAzOjAyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTRdIG11bHRpcGF0aDogc2V0IHZlcmJvc2l0eSB0byBkZWZhdWx0IGR1cmluZyBjb25maWcKKworY29uZGxvZyB3YXMgc2V0dGluZyB0aGUgdmVyYm9zaXR5IHRvIDAgaWYgdGhlcmUgd2FzIG5vIGNvbmZpZ3VyYXRpb24uCitUaGlzIGtlZXBzIG11bHRpcGF0aCBmcm9tIHByaW50aW5nIHdhcm5pbmcgbWVzc2FnZXMgYWJvdXQgY29uZmlnIGZpbGUKK3Byb2JsZW1zIHRoYXQgYXJlIGZvdW5kIHdoaWxlIGxvYWRpbmcgdGhlIGNvbmZpZ3VyYXRpb24uIEluc3RlYWQsIGl0CitzaG91bGQgdXNlIHRoZSBkZWZhdWx0IGNvbmZpZyBsZXZlbCB1bnRpbCBpdCBsb2FkcyB0aGUgY29uZmlndXJhdGlvbgordG8gZmluZCB0aGUgY3VycmVudCB2YWx1ZS4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL2RlYnVnLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9kZWJ1Zy5jIGIvbGlibXVsdGlwYXRoL2RlYnVnLmMKK2luZGV4IGZiZTE3MWEuLmY4OWIyNjQgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvZGVidWcuYworKysrIGIvbGlibXVsdGlwYXRoL2RlYnVnLmMKK0BAIC0xMSw2ICsxMSw3IEBACisgI2luY2x1ZGUgIi4uL3RoaXJkLXBhcnR5L3ZhbGdyaW5kL2RyZC5oIgorICNpbmNsdWRlICJ2ZWN0b3IuaCIKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisrI2luY2x1ZGUgImRlZmF1bHRzLmgiCisgCisgdm9pZCBkbG9nIChpbnQgc2luaywgaW50IHByaW8sIGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKKyB7CitAQCAtMjEsNyArMjIsNyBAQCB2b2lkIGRsb2cgKGludCBzaW5rLCBpbnQgcHJpbywgY29uc3QgY2hhciAqIGZtdCwgLi4uKQorIAl2YV9zdGFydChhcCwgZm10KTsKKyAJY29uZiA9IGdldF9tdWx0aXBhdGhfY29uZmlnKCk7CisgCUFOTk9UQVRFX0lHTk9SRV9SRUFEU19CRUdJTigpOworLQl0aHJlcyA9IChjb25mKSA/IGNvbmYtPnZlcmJvc2l0eSA6IDA7CisrCXRocmVzID0gKGNvbmYpID8gY29uZi0+dmVyYm9zaXR5IDogREVGQVVMVF9WRVJCT1NJVFk7CisgCUFOTk9UQVRFX0lHTk9SRV9SRUFEU19FTkQoKTsKKyAJcHV0X211bHRpcGF0aF9jb25maWcoY29uZik7CisgCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTAtbXBhdGgtc2tpcC1kZXZpY2UtY29uZmlncy13aXRob3V0LXZlbmRvci1wcm9kdWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMC1tcGF0aC1za2lwLWRldmljZS1jb25maWdzLXdpdGhvdXQtdmVuZG9yLXByb2R1Y3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk2YjZkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTAtbXBhdGgtc2tpcC1kZXZpY2UtY29uZmlncy13aXRob3V0LXZlbmRvci1wcm9kdWN0LnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gZjg4ZDYwYTkzZTk4ZDg2YWUyOTRmMjMxN2ExMjJjNGVmZGUyNzZmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMzEgTWF5IDIwMTcgMTc6NTg6NTkgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xNF0gbXBhdGg6IHNraXAgZGV2aWNlIGNvbmZpZ3Mgd2l0aG91dCB2ZW5kb3IvcHJvZHVjdAorCitSaWdodCBub3cgaWYgbXVsdGlwYXRoLmNvbmYgaW5jbHVkZXMgYSBkZXZpY2UgY29uZmlndXJhdGlvbiB3aXRob3V0IGEKK3ZlbmRvciBvciBwcm9kdWN0IHN0cmluZywgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGFwcGxpZWQgdG8gYWxsCitkZXZpY2VzLCBza2lwcGluZyBhbGwgb3RoZXIgY29uZmlncyBlbnRpcmVseS4gIFRoaXMgaXMgY2xlYXJseSB3cm9uZy4KK1RoaXMgcGF0Y2ggbWFrZXMgc3VyZSB0aGF0IHVzZXIgYWRkZWQgY29uZmlncyBpbmNsdWRlIHZlbmRvciBhbmQKK3Byb2R1Y3Qgc3RyaW5ncworCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvY29uZmlnLmMgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY29uZmlnLmMgYi9saWJtdWx0aXBhdGgvY29uZmlnLmMKK2luZGV4IGM0ODU3NDguLmJkZGUxMTMgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY29uZmlnLmMKKysrKyBiL2xpYm11bHRpcGF0aC9jb25maWcuYworQEAgLTQ1Miw2ICs0NTIsMTMgQEAgcmVzdGFydDoKKyAJCQlicmVhazsKKyAJCWogPSBuOworIAkJdmVjdG9yX2ZvcmVhY2hfc2xvdF9hZnRlcihodywgaHdlMiwgaikgeworKwkJCS8qIGRyb3AgaW52YWxpZCBkZXZpY2UgY29uZmlncyAqLworKwkJCWlmICghaHdlMi0+dmVuZG9yIHx8ICFod2UyLT5wcm9kdWN0KSB7CisrCQkJCWNvbmRsb2coMCwgImRldmljZSBjb25maWcgbWlzc2luZyB2ZW5kb3Igb3IgcHJvZHVjdCBwYXJhbWV0ZXIiKTsKKysJCQkJdmVjdG9yX2RlbF9zbG90KGh3LCBqLS0pOworKwkJCQlmcmVlX2h3ZShod2UyKTsKKysJCQkJY29udGludWU7CisrCQkJfQorIAkJCWlmIChod2VfcmVnbWF0Y2goaHdlMSwgaHdlMikpCisgCQkJCWNvbnRpbnVlOworIAkJCS8qIGR1cCAqLworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDExLW11bHRpcGF0aGQtZml4LXNob3ctbWFwcy1qc29uLWNyYXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMS1tdWx0aXBhdGhkLWZpeC1zaG93LW1hcHMtanNvbi1jcmFzaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmQ2ZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMS1tdWx0aXBhdGhkLWZpeC1zaG93LW1hcHMtanNvbi1jcmFzaC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGJjM2NlZGE3NDcxMDRhZmRjMjQzODZkZjVkYzQ1Y2E4NmY2YzI5MzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDEgSnVuIDIwMTcgMTc6NTI6MjggLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xNF0gbXVsdGlwYXRoZDogZml4ICJzaG93IG1hcHMganNvbiIgY3Jhc2gKKworSWYgdGhlcmUgYXJlIG5vIG11bHRpcGF0aCBkZXZpY2VzLCBzaG93X21hcHNfanNvbiBzZXRzIHRoZSBtYXhpbXVtIHNpemUKK29mIHRoZSByZXBseSBidWZmZXIgdG8gMC4gSGF2aW5nIGEgc2l6ZSBvZiAwIGNhdXNlcyB0aGUgY2FsbHMgdG8gY2FsbG9jCithbmQgcmVhbGxvYyB0byBiZWhhdmUgaW4gd2F5cyB0aGF0IHRoZSBjb2RlIGlzbid0IGRlc2lnbmVkIHRvIGhhbmRsZSwKK2xlYWRpbmcgdG8gYSBkb3VibGUtZnJlZSBjcmFzaC4gSW5zdGVhZCwgc2hvd19tYXBzX2pzb24gc2hvdWxkIGp1c3QKK3VzZSB0aGUgSU5JVElBTF9SRVBMWV9MRU4gaWYgdGhlcmUgYXJlIG5vIG11bHRpcGF0aCBkZXZpY2VzLgorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBtdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9jbGlfaGFuZGxlcnMuYyBiL211bHRpcGF0aGQvY2xpX2hhbmRsZXJzLmMKK2luZGV4IDA0YzczODYuLjdiMGQwMGMgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jCisrKysgYi9tdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jCitAQCAtMTYyLDEwICsxNjIsMTIgQEAgc2hvd19tYXBzX2pzb24gKGNoYXIgKiogciwgaW50ICogbGVuLCBzdHJ1Y3QgdmVjdG9ycyAqIHZlY3MpCisgCXN0cnVjdCBtdWx0aXBhdGggKiBtcHA7CisgCWNoYXIgKiBjOworIAljaGFyICogcmVwbHk7CistCXVuc2lnbmVkIGludCBtYXhsZW4gPSBJTklUSUFMX1JFUExZX0xFTiAqCistCQkJUFJJTlRfSlNPTl9NVUxUSVBMSUVSICogVkVDVE9SX1NJWkUodmVjcy0+bXB2ZWMpOworKwl1bnNpZ25lZCBpbnQgbWF4bGVuID0gSU5JVElBTF9SRVBMWV9MRU47CisgCWludCBhZ2FpbiA9IDE7CisgCisrCWlmIChWRUNUT1JfU0laRSh2ZWNzLT5tcHZlYykgPiAwKQorKwkJbWF4bGVuICo9IFBSSU5UX0pTT05fTVVMVElQTElFUiAqIFZFQ1RPUl9TSVpFKHZlY3MtPm1wdmVjKTsKKysKKyAJdmVjdG9yX2ZvcmVhY2hfc2xvdCh2ZWNzLT5tcHZlYywgbXBwLCBpKSB7CisgCQlpZiAodXBkYXRlX211bHRpcGF0aCh2ZWNzLCBtcHAtPmFsaWFzLCAwKSkgeworIAkJCXJldHVybiAxOworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEyLW11bHRpcGF0aC10b29scy1tb2RpZnktTWFrZWZpbGUuaW5jLWZvci1jcm9zcy1jb21waWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEyLW11bHRpcGF0aC10b29scy1tb2RpZnktTWFrZWZpbGUuaW5jLWZvci1jcm9zcy1jb21waWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNjZDRhZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTItbXVsdGlwYXRoLXRvb2xzLW1vZGlmeS1NYWtlZmlsZS5pbmMtZm9yLWNyb3NzLWNvbXBpbC5wYXRjaApAQCAtMCwwICsxLDU4IEBACitGcm9tIDY4NjRiYTI4ZGVjNjE2MDk2NjJjZTVkYzhiYzdlZDE5MjVhYmI1NDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDUgSnVsIDIwMTcgMDI6NTY6MTMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMi8xNF0gbXVsdGlwYXRoLXRvb2xzOiBtb2RpZnkgTWFrZWZpbGUuaW5jIGZvcgorIGNyb3NzLWNvbXBpbGF0aW9uCisKK0RvIG5vdCBsb29rIGZvciBzeXN0ZW1kIGluZm8gb24gdGhlIGhvc3QsIGFuZCBhbGxvdyB1cyB0byBwYXNzIGluIENGTEFHUwordXNpbmcgdGhlIE9QVEZMQUdTIHZhcmlhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKK1VwZGF0ZSBmb3IgdmVyc2lvbiAwLjUuMC0xNDQtZzc3MGU2ZDAKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK1VwZGF0ZSBmb3IgdmVyc2lvbiAwLjcuMQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbmMgfCA4ICsrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluYyBiL01ha2VmaWxlLmluYworaW5kZXggZTA4NGZkMS4uYzdmNDVmYSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluYworKysrIGIvTWFrZWZpbGUuaW5jCitAQCAtMzUsMTIgKzM1LDYgQEAgaWZuZGVmIFJVTgorIAllbmRpZgorIGVuZGlmCisgCistaWZuZGVmIFNZU1RFTUQKKy0JaWZlcSAoJChzaGVsbCBzeXN0ZW1jdGwgLS12ZXJzaW9uID4gL2Rldi9udWxsIDI+JjEgJiYgZWNobyAxKSwgMSkKKy0JCVNZU1RFTUQgPSAkKHNoZWxsIHN5c3RlbWN0bCAtLXZlcnNpb24gMj4gL2Rldi9udWxsIHwgIHNlZCAtbiAncy9zeXN0ZW1kIFwoWzAtOV0qXCkvXDEvcCcpCistCWVuZGlmCistZW5kaWYKKy0KKyBpZm5kZWYgU1lTVEVNRFBBVEgKKyAJU1lTVEVNRFBBVEg9dXNyL2xpYgorIGVuZGlmCitAQCAtODIsMTEgKzc2LDEzIEBAIFRFU1RfQ0NfT1BUSU9OID0gJChzaGVsbCBcCisgCisgU1RBQ0tQUk9UIDo9ICQoY2FsbCBURVNUX0NDX09QVElPTiwtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcsLWZzdGFjay1wcm90ZWN0b3IpCisgCisraWZuZGVmIE9QVEZMQUdTCisgT1BURkxBR1MJPSAtTzIgLWcgLXBpcGUgLVdhbGwgLVdleHRyYSAtV2Zvcm1hdD0yIC1XZXJyb3I9aW1wbGljaXQtaW50IFwKKyAJCSAgLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSBcCisgCQkgIC1Xbm8tc2lnbi1jb21wYXJlIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLWNsb2JiZXJlZCBcCisgCQkgIC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yICQoU1RBQ0tQUk9UKSBcCisgCQkgIC0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQKKytlbmRpZgorIAorIENGTEFHUwkJPSAkKE9QVEZMQUdTKSAtRExJQl9TVFJJTkc9XCIke0xJQn1cIiAtRFJVTl9ESVI9XCIke1JVTn1cIgorIEJJTl9DRkxBR1MJPSAtZlBJRSAtRFBJRQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEzLUFsd2F5cy11c2UtZGV2bWFwcGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMy1BbHdheXMtdXNlLWRldm1hcHBlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjI0MGY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMy1BbHdheXMtdXNlLWRldm1hcHBlci5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDE0OTgzMzg5NzBhMDkzZmNjYmRhM2UzM2Y1NTg4YTI4OWVmMmM2NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDUgSnVsIDIwMTcgMDI6NTk6NDYgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8xNF0gQWx3YXlzIHVzZSBkZXZtYXBwZXIKKworRG8gbm90IHRyeSB0byBjb21wdXRlIHNldmVyYWwgX0FQSV8gbWFrZSB2YXJpYWJsZXMKK2Zyb20gaG9zdCBpbmZvcm1hdGlvbiB3aGVuIGNyb3NzLWNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gMC43LjEKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL01ha2VmaWxlIHwgMTkgKysrKy0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL01ha2VmaWxlIGIvbGlibXVsdGlwYXRoL01ha2VmaWxlCitpbmRleCBiMzI0NGZjLi45MDA2YjNmIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL01ha2VmaWxlCisrKysgYi9saWJtdWx0aXBhdGgvTWFrZWZpbGUKK0BAIC0yMCwyMSArMjAsMTAgQEAgaWZkZWYgU1lTVEVNRAorIAllbmRpZgorIGVuZGlmCisgCistaWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLGRtX3Rhc2tfbm9fZmx1c2gsL3Vzci9pbmNsdWRlL2xpYmRldm1hcHBlci5oKSwwKQorLQlDRkxBR1MgKz0gLURMSUJETV9BUElfRkxVU0ggLURfR05VX1NPVVJDRQorLWVuZGlmCistCistaWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLGRtX3Rhc2tfc2V0X2Nvb2tpZSwvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpLDApCistCUNGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKKy1lbmRpZgorLQorLWlmbmVxICgkKGNhbGwgY2hlY2tfZnVuYyx1ZGV2X21vbml0b3Jfc2V0X3JlY2VpdmVfYnVmZmVyX3NpemUsL3Vzci9pbmNsdWRlL2xpYnVkZXYuaCksMCkKKy0JQ0ZMQUdTICs9IC1ETElCVURFVl9BUElfUkVDVkJVRgorLWVuZGlmCistCistaWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLGRtX3Rhc2tfZGVmZXJyZWRfcmVtb3ZlLC91c3IvaW5jbHVkZS9saWJkZXZtYXBwZXIuaCksMCkKKy0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0RFRkVSUkVECistZW5kaWYKKytDRkxBR1MgKz0gLURMSUJETV9BUElfRkxVU0ggLURfR05VX1NPVVJDRQorK0NGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKKytDRkxBR1MgKz0gLURMSUJVREVWX0FQSV9SRUNWQlVGCisrQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0RFRkVSUkVECisgCisgT0JKUyA9IG1lbW9yeS5vIHBhcnNlci5vIHZlY3Rvci5vIGRldm1hcHBlci5vIGNhbGxvdXQubyBcCisgCWh3dGFibGUubyBibGFja2xpc3QubyB1dGlsLm8gZG1wYXJzZXIubyBjb25maWcubyBcCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTQtQWx3YXlzLXVzZS1kZXZtYXBwZXItZm9yLWtwYXJ0eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTQtQWx3YXlzLXVzZS1kZXZtYXBwZXItZm9yLWtwYXJ0eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTUxMjEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxNC1BbHdheXMtdXNlLWRldm1hcHBlci1mb3Ita3BhcnR4LnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gN2Y1ODY5Y2QzMmE3YjNmNzE3ZDk1NDRiMzU1NjJkOWQwMWNhNjUxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAwMzowMzoxNiAtMDQwMAorU3ViamVjdDogW1BBVENIIDE0LzE0XSBBbHdheXMgdXNlIGRldm1hcHBlciBmb3Iga3BhcnR4CisKK0RvIG5vdCB0cnkgdG8gY29tcHV0ZSB0aGUgTElCRE1fQVBJX0NPT0tJRSBtYWtlIHZhcmlhYmxlCitmcm9tIGhvc3QgaW5mb3JtYXRpb24gd2hlbiBjcm9zcy1jb21waWxpbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDAuNy4xCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBrcGFydHgvTWFrZWZpbGUgfCA0ICstLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9rcGFydHgvTWFrZWZpbGUgYi9rcGFydHgvTWFrZWZpbGUKK2luZGV4IGJmYTZmZTguLmJlODcxMjQgMTAwNjQ0CistLS0gYS9rcGFydHgvTWFrZWZpbGUKKysrKyBiL2twYXJ0eC9NYWtlZmlsZQorQEAgLTgsOSArOCw3IEBAIExERkxBR1MgKz0gJChCSU5fTERGTEFHUykKKyAKKyBMSUJERVBTICs9IC1sZGV2bWFwcGVyCisgCistaWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLGRtX3Rhc2tfc2V0X2Nvb2tpZSwvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpLDApCistCUNGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKKy1lbmRpZgorK0NGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKKyAKKyBPQkpTID0gYnNkLm8gZG9zLm8ga3BhcnR4Lm8gc29sYXJpcy5vIHVuaXh3YXJlLm8gZGFzZC5vIHN1bi5vIFwKKyAJZ3B0Lm8gbWFjLm8gcHMzLm8gY3JjMzIubyBsb3BhcnQubyB4c3RybmNweS5vIGRldm1hcHBlci5vCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2Fsd2F5cy11c2UtbGliZGV2bWFwcGVyLWtwYXJ0eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2Fsd2F5cy11c2UtbGliZGV2bWFwcGVyLWtwYXJ0eC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAzZTUyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9hbHdheXMtdXNlLWxpYmRldm1hcHBlci1rcGFydHgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDcyNjdjZjIzNWZjMDUyZWFhMWNhMzZlNDM3MDk2NTc2ZWRhY2IxMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDIyIFNlcCAyMDE0IDE3OjIyOjMyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFsd2F5cyB1c2UgZGV2bWFwcGVyIGZvciBrcGFydHgKLQotRG8gbm90IHRyeSB0byBjb21wdXRlIHRoZSBMSUJETV9BUElfQ09PS0lFIG1ha2UgdmFyaWFibGUKLWZyb20gaG9zdCBpbmZvcm1hdGlvbiB3aGVuIGNyb3NzLWNvbXBpbGluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotLS0tCi0ga3BhcnR4L01ha2VmaWxlIHwgNiArLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rcGFydHgvTWFrZWZpbGUgYi9rcGFydHgvTWFrZWZpbGUKLWluZGV4IGU4YTU5ZjIuLmU2OTRhNjUgMTAwNjQ0Ci0tLS0gYS9rcGFydHgvTWFrZWZpbGUKLSsrKyBiL2twYXJ0eC9NYWtlZmlsZQotQEAgLTcsMTEgKzcsNyBAQCBDRkxBR1MgKz0gLUkuIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0Ci0gCi0gTElCREVQUyArPSAtbGRldm1hcHBlcgotIAotLUxJQkRNX0FQSV9DT09LSUUgPSAkKHNoZWxsIGdyZXAgLUVjcyAnXlthLXpdKltbOnNwYWNlOl1dK2RtX3Rhc2tfc2V0X2Nvb2tpZScgL3Vzci9pbmNsdWRlL2xpYmRldm1hcHBlci5oKQotLQotLWlmbmVxICgkKHN0cmlwICQoTElCRE1fQVBJX0NPT0tJRSkpLDApCi0tCUNGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKLS1lbmRpZgotK0NGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKLSAKLSBPQkpTID0gYnNkLm8gZG9zLm8ga3BhcnR4Lm8gc29sYXJpcy5vIHVuaXh3YXJlLm8gZGFzZC5vIHN1bi5vIFwKLSAJZ3B0Lm8gbWFjLm8gcHMzLm8gY3JjMzIubyBsb3BhcnQubyB4c3RybmNweS5vIGRldm1hcHBlci5vCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9hbHdheXMtdXNlLWxpYmRldm1hcHBlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2Fsd2F5cy11c2UtbGliZGV2bWFwcGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzgzNGY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2Fsd2F5cy11c2UtbGliZGV2bWFwcGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSBjNGYwZGJhNGU4NmJmYTIwMjUyZmNjODIxODM5OGU3NDY4Y2E5MTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMiBTZXAgMjAxNCAxNzoyMjozMiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBBbHdheXMgdXNlIGRldm1hcHBlcgotCi1EbyBub3QgdHJ5IHRvIGNvbXB1dGUgc2V2ZXJhbCBfQVBJXyBtYWtlIHZhcmlhYmxlcwotZnJvbSBob3N0IGluZm9ybWF0aW9uIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJtdWx0aXBhdGgvTWFrZWZpbGUgfCAyNyArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9NYWtlZmlsZSBiL2xpYm11bHRpcGF0aC9NYWtlZmlsZQotaW5kZXggNDk1Y2ViZS4uOTYyNmU2OSAxMDA2NDQKLS0tLSBhL2xpYm11bHRpcGF0aC9NYWtlZmlsZQotKysrIGIvbGlibXVsdGlwYXRoL01ha2VmaWxlCi1AQCAtMjAsMjkgKzIwLDEwIEBAIGlmZGVmIFNZU1RFTUQKLSAJZW5kaWYKLSBlbmRpZgotIAotLUxJQkRNX0FQSV9GTFVTSCA9ICQoc2hlbGwgZ3JlcCAtRWNzICdeW2Etel0qW1s6c3BhY2U6XV0rZG1fdGFza19ub19mbHVzaCcgL3Vzci9pbmNsdWRlL2xpYmRldm1hcHBlci5oKQotLQotLWlmbmVxICgkKHN0cmlwICQoTElCRE1fQVBJX0ZMVVNIKSksMCkKLS0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0ZMVVNIIC1EX0dOVV9TT1VSQ0UKLS1lbmRpZgotLQotLUxJQkRNX0FQSV9DT09LSUUgPSAkKHNoZWxsIGdyZXAgLUVjcyAnXlthLXpdKltbOnNwYWNlOl1dK2RtX3Rhc2tfc2V0X2Nvb2tpZScgL3Vzci9pbmNsdWRlL2xpYmRldm1hcHBlci5oKQotLQotLWlmbmVxICgkKHN0cmlwICQoTElCRE1fQVBJX0NPT0tJRSkpLDApCi0tCUNGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKLS1lbmRpZgotLQotLUxJQlVERVZfQVBJX1JFQ1ZCVUYgPSAkKHNoZWxsIGdyZXAgLUVjcyAnXlthLXpdKltbOnNwYWNlOl1dK3VkZXZfbW9uaXRvcl9zZXRfcmVjZWl2ZV9idWZmZXJfc2l6ZScgL3Vzci9pbmNsdWRlL2xpYnVkZXYuaCkKLS0KLS1pZm5lcSAoJChzdHJpcCAkKExJQlVERVZfQVBJX1JFQ1ZCVUYpKSwwKQotLQlDRkxBR1MgKz0gLURMSUJVREVWX0FQSV9SRUNWQlVGCi0tZW5kaWYKLS0KLS1MSUJETV9BUElfREVGRVJSRUQgPSAkKHNoZWxsIGdyZXAgLUVjcyAnXlthLXpdKltbOnNwYWNlOl1dK2RtX3Rhc2tfZGVmZXJyZWRfcmVtb3ZlJyAvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpCi0tCi0taWZuZXEgKCQoc3RyaXAgJChMSUJETV9BUElfREVGRVJSRUQpKSwwKQotLQlDRkxBR1MgKz0gLURMSUJETV9BUElfREVGRVJSRUQKLS1lbmRpZgotK0NGTEFHUyArPSAtRExJQkRNX0FQSV9GTFVTSCAtRF9HTlVfU09VUkNFCi0rQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQotK0NGTEFHUyArPSAtRExJQlVERVZfQVBJX1JFQ1ZCVUYKLStDRkxBR1MgKz0gLURMSUJETV9BUElfREVGRVJSRUQKLSAKLSBPQkpTID0gbWVtb3J5Lm8gcGFyc2VyLm8gdmVjdG9yLm8gZGV2bWFwcGVyLm8gY2FsbG91dC5vIFwKLSAJaHd0YWJsZS5vIGJsYWNrbGlzdC5vIHV0aWwubyBkbXBhcnNlci5vIGNvbmZpZy5vIFwKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2NoZWNrZXJzLWRpc2FibGUtbGliY2hlY2tyYmQuc28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9jaGVja2Vycy1kaXNhYmxlLWxpYmNoZWNrcmJkLnNvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDhhNTE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL2NoZWNrZXJzLWRpc2FibGUtbGliY2hlY2tyYmQuc28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDE0OGI4NDhmNDU5NTdlNWUxYzA0NjZlOGM3OWM4NGJhNGEwYmYyNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDI3IEphbiAyMDE3IDEwOjM1OjU0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNoZWNrZXJzOiBkaXNhYmxlIGxpYmNoZWNrcmJkLnNvCi0KLWxpYmNoZWNrcmJkLnNvIGRlcGVuZHMgb24gbGlicmFkb3MsIHdoaWNoIGlzIG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlCi1hcyBhIHJlY2lwZS4gVGhlc2UgY2hlY2tlcnMgc2VlbSB0byBiZSBvcHRpb25hbCwgc28gZm9yIG5vdyB3ZSBtZXJlbHkKLWRpc2FibGUgY29tcGlsYXRpb24gb2YgbGliY2hlY2tyYmQuc28uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZSBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZQotaW5kZXggMTFhYjc2Zi4uYzg0OGQ1MCAxMDA2NDQKLS0tLSBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZQotKysrIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlCi1AQCAtMTQsNyArMTQsNiBAQCBMSUJTPSBcCi0gCWxpYmNoZWNrZW1jX2NsYXJpaW9uLnNvIFwKLSAJbGliY2hlY2tocF9zdy5zbyBcCi0gCWxpYmNoZWNrcmRhYy5zbyBcCi0tCWxpYmNoZWNrcmJkLnNvCi0gCi0gYWxsOiAkKExJQlMpCi0gCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9tYWtlZmlsZV9pbmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9tYWtlZmlsZV9pbmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViN2I2OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvbWFrZWZpbGVfaW5jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSA5ZjU3NjhlY2ExNjU1MDJiMGYxN2QyNzFhYTZmN2NmNTMwZWM2MGIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMiBTZXAgMjAxNCAxNzoyMjozMiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBtdWx0aXBhdGgtdG9vbHM6IG1vZGlmeSBNYWtlZmlsZS5pbmMgZm9yCi0gY3Jvc3MtY29tcGlsYXRpb24KLQotRG8gbm90IGxvb2sgZm9yIHN5c3RlbWQgaW5mbyBvbiB0aGUgaG9zdCwgYW5kIGFsbG93IHVzIHRvIHBhc3MgaW4gQ0ZMQUdTCi11c2luZyB0aGUgT1BURkxBR1MgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotVXBkYXRlIGZvciB2ZXJzaW9uIDAuNS4wLTE0NC1nNzcwZTZkMAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluYyB8IDE3ICsrKysrLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbmMgYi9NYWtlZmlsZS5pbmMKLWluZGV4IDFjYzhmNDQuLjE1ZjhiOTEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbmMKLSsrKyBiL01ha2VmaWxlLmluYwotQEAgLTI5LDEyICsyOSw2IEBAIGlmbmRlZiBSVU4KLSAJZW5kaWYKLSBlbmRpZgotIAotLWlmbmRlZiBTWVNURU1ECi0tCWlmZXEgKCQoc2hlbGwgc3lzdGVtY3RsIC0tdmVyc2lvbiA+IC9kZXYvbnVsbCAyPiYxICYmIGVjaG8gMSksIDEpCi0tCQlTWVNURU1EID0gJChzaGVsbCBzeXN0ZW1jdGwgLS12ZXJzaW9uIDI+IC9kZXYvbnVsbCB8ICBzZWQgLW4gJ3Mvc3lzdGVtZCBcKFswLTldKlwpL1wxL3AnKQotLQllbmRpZgotLWVuZGlmCi0tCi0gaWZuZGVmIFNZU1RFTURQQVRICi0gCVNZU1RFTURQQVRIPXVzci9saWIKLSBlbmRpZgotQEAgLTYxLDEzICs1NSwxMiBAQCBSTQkJPSBybSAtZgotIExOCQk9IGxuIC1zZgotIElOU1RBTExfUFJPR1JBTQk9IGluc3RhbGwKLSAKLS1PUFRGTEFHUwk9IC1PMiAtZyAtcGlwZSAtV2FsbCAtV2V4dHJhIC1XZm9ybWF0PTIgXAotLQkJICAtV25vLXNpZ24tY29tcGFyZSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1jbG9iYmVyZWQgXAotLQkJICAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZnN0YWNrLXByb3RlY3RvciBcCi0tCQkgIC0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQKLStpZm5kZWYgT1BURkxBR1MKLStPUFRGTEFHUyAgICAgPSAkKFJQTV9PUFRfRkxBR1MpIC1XdW51c2VkIC1Xc3RyaWN0LXByb3RvdHlwZXMKLStlbmRpZgotIAotLUNGTEFHUwkJPSAkKE9QVEZMQUdTKSAtZlBJQyAtRExJQl9TVFJJTkc9XCIke0xJQn1cIiAtRFJVTl9ESVI9XCIke1JVTn1cIgotLVNIQVJFRF9GTEFHUwk9IC1zaGFyZWQKLStDRkxBR1MJICAgICA9ICQoT1BURkxBR1MpIC1mUElDIC1ETElCX1NUUklORz1cIiR7TElCfVwiIC1EUlVOX0RJUj1cIiR7UlVOfVwiCi0rU0hBUkVEX0ZMQUdTID0gLXNoYXJlZAotIAotICUubzoJJS5jCi0gCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkQCAkPAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvbXVsdGlwYXRoLmNvbmYuZXhhbXBsZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL211bHRpcGF0aC5jb25mLmV4YW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiZWFkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzL211bHRpcGF0aC5jb25mLmV4YW1wbGUKQEAgLTAsMCArMSw5MCBAQAorIyBUaGlzIGlzIGEgYmFzaWMgY29uZmlndXJhdGlvbiBmaWxlIHdpdGggc29tZSBleGFtcGxlcywgZm9yIGRldmljZSBtYXBwZXIKKyMgbXVsdGlwYXRoLgorIyBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdmFsdWVzLCBzZWUKKyMgL3Vzci9zaGFyZS9kb2MvZGV2aWNlLW1hcHBlci1tdWx0aXBhdGgtMC40LjkvbXVsdGlwYXRoLmNvbmYuZGVmYXVsdHMKKyMgRm9yIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aCBkZXNjcmlwdGlvbnMsIHNlZQorIyAvdXNyL3NoYXJlL2RvYy9kZXZpY2UtbWFwcGVyLW11bHRpcGF0aC0wLjQuOS9tdWx0aXBhdGguY29uZi5hbm5vdGF0ZWQKKworIyMgQnkgZGVmYXVsdCwgZGV2aWNlcyB3aXRoIHZlbmRvciA9ICJJQk0iIGFuZCBwcm9kdWN0ID0gIlMvMzkwLioiIGFyZQorIyMgYmxhY2tsaXN0ZWQuIFRvIGVuYWJsZSBtdWxpdHBhdGhpbmcgb24gdGhlc2UgZGV2aWVzLCB1bmNvbW1lbnQgdGhlCisjIyBmb2xsb3dpbmcgbGluZXMuCisjYmxhY2tsaXN0X2V4Y2VwdGlvbnMgeworIwlkZXZpY2UgeworIwkJdmVuZG9yCSJJQk0iCisjCQlwcm9kdWN0CSJTLzM5MC4qIgorIwl9CisjfQorCisjIyBVc2UgdXNlciBmcmllbmRseSBuYW1lcywgaW5zdGVhZCBvZiB1c2luZyBXV0lEcyBhcyBuYW1lcy4KK2RlZmF1bHRzIHsKKwl1c2VyX2ZyaWVuZGx5X25hbWVzIHllcworfQorIyMKKyMjIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gY29uZmlndXJlIHNvbWUgc3RhbmRhcmQgb3B0aW9ucy4KKyMjCisjCisjZGVmYXVsdHMgeworIwl1ZGV2X2RpcgkJL2RldgorIwlwb2xsaW5nX2ludGVydmFsIAkxMAorIwlzZWxlY3RvcgkJInJvdW5kLXJvYmluIDAiCisjCXBhdGhfZ3JvdXBpbmdfcG9saWN5CW11bHRpYnVzCisjCWdldHVpZF9jYWxsb3V0CQkiL2xpYi91ZGV2L3Njc2lfaWQgLS13aGl0ZWxpc3RlZCAtLWRldmljZT0vZGV2LyVuIgorIwlwcmlvCQkJYWx1YQorIwlwYXRoX2NoZWNrZXIJCXJlYWRzZWN0b3IwCisjCXJyX21pbl9pbwkJMTAwCisjCW1heF9mZHMJCQk4MTkyCisjCXJyX3dlaWdodAkJcHJpb3JpdGllcworIwlmYWlsYmFjawkJaW1tZWRpYXRlCisjCW5vX3BhdGhfcmV0cnkJCWZhaWwKKyMJdXNlcl9mcmllbmRseV9uYW1lcwl5ZXMKKyN9CisjIworIyMgVGhlIHd3aWQgbGluZSBpbiB0aGUgZm9sbG93aW5nIGJsYWNrbGlzdCBzZWN0aW9uIGlzIHNob3duIGFzIGFuIGV4YW1wbGUKKyMjIG9mIGhvdyB0byBibGFja2xpc3QgZGV2aWNlcyBieSB3d2lkLiAgVGhlIDIgZGV2bm9kZSBsaW5lcyBhcmUgdGhlCisjIyBjb21waWxlZCBpbiBkZWZhdWx0IGJsYWNrbGlzdC4gSWYgeW91IHdhbnQgdG8gYmxhY2tsaXN0IGVudGlyZSB0eXBlcworIyMgb2YgZGV2aWNlcywgc3VjaCBhcyBhbGwgc2NzaSBkZXZpY2VzLCB5b3Ugc2hvdWxkIHVzZSBhIGRldm5vZGUgbGluZS4KKyMjIEhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIGJsYWNrbGlzdCBzcGVjaWZpYyBkZXZpY2VzLCB5b3Ugc2hvdWxkIHVzZQorIyMgYSB3d2lkIGxpbmUuICBTaW5jZSB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhIHNwZWNpZmljIGRldmljZSB3aWxsCisjIyBub3QgY2hhbmdlIG5hbWVzIG9uIHJlYm9vdCAoZnJvbSAvZGV2L3NkYSB0byAvZGV2L3NkYiBmb3IgZXhhbXBsZSkKKyMjIGRldm5vZGUgbGluZXMgYXJlIG5vdCByZWNvbW1lbmRlZCBmb3IgYmxhY2tsaXN0aW5nIHNwZWNpZmljIGRldmljZXMuCisjIworI2JsYWNrbGlzdCB7CisjICAgICAgIHd3aWQgMjYzNTM5MDBmMDI3OTY3NjkKKyMJZGV2bm9kZSAiXihyYW18cmF3fGxvb3B8ZmR8bWR8ZG0tfHNyfHNjZHxzdClbMC05XSoiCisjCWRldm5vZGUgIl5oZFthLXpdIgorI30KKyNtdWx0aXBhdGhzIHsKKyMJbXVsdGlwYXRoIHsKKyMJCXd3aWQJCQkzNjAwNTA4YjQwMDAxNTZkNzAwMDEyMDAwMDAwYjAwMDAKKyMJCWFsaWFzCQkJeWVsbG93CisjCQlwYXRoX2dyb3VwaW5nX3BvbGljeQltdWx0aWJ1cworIwkJcGF0aF9jaGVja2VyCQlyZWFkc2VjdG9yMAorIwkJcGF0aF9zZWxlY3RvcgkJInJvdW5kLXJvYmluIDAiCisjCQlmYWlsYmFjawkJbWFudWFsCisjCQlycl93ZWlnaHQJCXByaW9yaXRpZXMKKyMJCW5vX3BhdGhfcmV0cnkJCTUKKyMJfQorIwltdWx0aXBhdGggeworIwkJd3dpZAkJCTFERUNfX19fXzMyMTgxNjc1ODQ3NAorIwkJYWxpYXMJCQlyZWQKKyMJfQorI30KKyNkZXZpY2VzIHsKKyMJZGV2aWNlIHsKKyMJCXZlbmRvcgkJCSJDT01QQVEgICIKKyMJCXByb2R1Y3QJCQkiSFNWMTEwIChDKUNPTVBBUSIKKyMJCXBhdGhfZ3JvdXBpbmdfcG9saWN5CW11bHRpYnVzCisjCQlnZXR1aWRfY2FsbG91dCAgICAgICAgICAiL2xpYi91ZGV2L3Njc2lfaWQgLS13aGl0ZWxpc3RlZCAtLWRldmljZT0vZGV2LyVuIgorIwkJcGF0aF9jaGVja2VyCQlyZWFkc2VjdG9yMAorIwkJcGF0aF9zZWxlY3RvcgkJInJvdW5kLXJvYmluIDAiCisjCQloYXJkd2FyZV9oYW5kbGVyCSIwIgorIwkJZmFpbGJhY2sJCTE1CisjCQlycl93ZWlnaHQJCXByaW9yaXRpZXMKKyMJCW5vX3BhdGhfcmV0cnkJCXF1ZXVlCisjCX0KKyMJZGV2aWNlIHsKKyMJCXZlbmRvcgkJCSJDT01QQVEgICIKKyMJCXByb2R1Y3QJCQkiTVNBMTAwMCAgICAgICAgICIKKyMJCXBhdGhfZ3JvdXBpbmdfcG9saWN5CW11bHRpYnVzCisjCX0KKyN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9zaGFyZWQtbGlicy1hdm9pZC1saW5raW5nLS5zby1hcy1leGVjdXRhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvc2hhcmVkLWxpYnMtYXZvaWQtbGlua2luZy0uc28tYXMtZXhlY3V0YWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1NzllNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy9zaGFyZWQtbGlicy1hdm9pZC1saW5raW5nLS5zby1hcy1leGVjdXRhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSA0MzExODU2MjAwNDgwMjg4NDk0ZGY4ZGY3MzdmNzFlYTMxNjU5MmQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotRGF0ZTogVGh1LCAyNiBKYW4gMjAxNyAxNToyODozNCArMDEwMAotU3ViamVjdDogW1BBVENIXSBzaGFyZWQgbGliczogYXZvaWQgbGlua2luZyAuc28gYXMgZXhlY3V0YWJsZQotCi1XaGVuIHRoZSBPRSBidWlsZCBzeXN0ZW1zIHNldHMgQ0ZMQUdTIGluY2x1ZGluZyAtcGllLCBnY2Mgb3ZlcnJpZGVzCi10aGUgZWFybGllciAtc2hhcmVkIHBhcmFtZXRlciBhbmQgdHJpZXMgdG8gbGluayBhIGJpbmFyeSwgbGVhZGluZyB0bwotZXJyb3JzIGFib3V0IG1pc3NpbmcgZnVuY3Rpb25zIGxpa2UgbWFpbigpLgotCi1SZW9yZGVyaW5nIHRoZSBwYXJhbWV0ZXJzIHNvIHRoYXQgLXNoYXJlZCBjb21lcyBhZnRlciBDRkxBR1MKLWZpeGVzIHRoaXMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWMsIC1waWUgc2hvdWxkbid0IGJlIGluIENGTEFHUz8hXQotCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9saWJtcGF0aGNtZC9NYWtlZmlsZSBiL2xpYm1wYXRoY21kL01ha2VmaWxlCi1pbmRleCA0NTdjNGNhLi5mNjhjODJjIDEwMDY0NAotLS0tIGEvbGlibXBhdGhjbWQvTWFrZWZpbGUKLSsrKyBiL2xpYm1wYXRoY21kL01ha2VmaWxlCi1AQCAtOSw3ICs5LDcgQEAgT0JKUyA9IG1wYXRoX2NtZC5vCi0gYWxsOiAkKExJQlMpCi0gCi0gJChMSUJTKTogJChPQkpTKQotLQkkKENDKSAkKExERkxBR1MpICQoU0hBUkVEX0ZMQUdTKSAtV2wsLXNvbmFtZT0kQCAkKENGTEFHUykgLW8gJEAgJChPQkpTKSAkKExJQkRFUFMpCi0rCSQoQ0MpICQoTERGTEFHUykgJChDRkxBR1MpICQoU0hBUkVEX0ZMQUdTKSAtV2wsLXNvbmFtZT0kQCAtbyAkQCAkKE9CSlMpICQoTElCREVQUykKLSAJJChMTikgJEAgJChERVZMSUIpCi0gCi0gaW5zdGFsbDogJChMSUJTKQotZGlmZiAtLWdpdCBhL2xpYm1wYXRocGVyc2lzdC9NYWtlZmlsZSBiL2xpYm1wYXRocGVyc2lzdC9NYWtlZmlsZQotaW5kZXggNmU0MzQyNy4uMjQ4NjMwMiAxMDA2NDQKLS0tLSBhL2xpYm1wYXRocGVyc2lzdC9NYWtlZmlsZQotKysrIGIvbGlibXBhdGhwZXJzaXN0L01ha2VmaWxlCi1AQCAtMTUsNyArMTUsNyBAQCBhbGw6ICQoTElCUykKLSAKLSAkKExJQlMpOgotIAkkKENDKSAtYyAkKENGTEFHUykgKi5jCi0tCSQoQ0MpICQoTERGTEFHUykgJChTSEFSRURfRkxBR1MpICQoTElCREVQUykgLVdsLC1zb25hbWU9JEAgJChDRkxBR1MpIC1vICRAICQoT0JKUykKLSsJJChDQykgJChMREZMQUdTKSAkKENGTEFHUykgJChTSEFSRURfRkxBR1MpICQoTElCREVQUykgLVdsLC1zb25hbWU9JEAgLW8gJEAgJChPQkpTKQotIAkkKExOKSAkKExJQlMpICQoREVWTElCKQotIAkkKEdaSVApIG1wYXRoX3BlcnNpc3RlbnRfcmVzZXJ2ZV9pbi4zID4gbXBhdGhfcGVyc2lzdGVudF9yZXNlcnZlX2luLjMuZ3oKLSAJJChHWklQKSBtcGF0aF9wZXJzaXN0ZW50X3Jlc2VydmVfb3V0LjMgPiBtcGF0aF9wZXJzaXN0ZW50X3Jlc2VydmVfb3V0LjMuZ3oKLWRpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvTWFrZWZpbGUgYi9saWJtdWx0aXBhdGgvTWFrZWZpbGUKLWluZGV4IDQ5NWNlYmUuLjc1MmJjYzAgMTAwNjQ0Ci0tLS0gYS9saWJtdWx0aXBhdGgvTWFrZWZpbGUKLSsrKyBiL2xpYm11bHRpcGF0aC9NYWtlZmlsZQotQEAgLTU1LDcgKzU1LDcgQEAgT0JKUyA9IG1lbW9yeS5vIHBhcnNlci5vIHZlY3Rvci5vIGRldm1hcHBlci5vIGNhbGxvdXQubyBcCi0gYWxsOiAkKExJQlMpCi0gCi0gJChMSUJTKTogJChPQkpTKQotLQkkKENDKSAkKExERkxBR1MpICQoU0hBUkVEX0ZMQUdTKSAtV2wsLXNvbmFtZT0kQCAkKENGTEFHUykgLW8gJEAgJChPQkpTKSAkKExJQkRFUFMpCi0rCSQoQ0MpICQoTERGTEFHUykgJChDRkxBR1MpICQoU0hBUkVEX0ZMQUdTKSAtV2wsLXNvbmFtZT0kQCAtbyAkQCAkKE9CSlMpICQoTElCREVQUykKLSAJJChMTikgJEAgJChERVZMSUIpCi0gCi0gaW5zdGFsbDoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL211bHRpcGF0aC10b29sc18wLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL211bHRpcGF0aC10b29sc18wLjcuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWM1ZGZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvbXVsdGlwYXRoLXRvb2xzXzAuNy4xLmJiCkBAIC0wLDAgKzEsMTEzIEBACitTVU1NQVJZID0gIlRoZSB1cHN0cmVhbSBwcm9qZWN0IHVzZWQgdG8gZHJpdmUgdGhlIERldmljZSBNYXBwZXIgbXVsdGlwYXRoaW5nIGRyaXZlciIKKworREVTQ1JJUFRJT04gPSAiSXQgcHJvdmlkZXMgdG9vbHMgdG8gbWFuYWdlIG11bHRpcGF0aCBkZXZpY2VzIFwKK2J5IGluc3RydWN0aW5nIHRoZSBkZXZpY2UtbWFwcGVyIGtlcm5lbCBtb2R1bGUgd2hhdCB0byBkby4gVGhlc2UgXAordG9vbHMgaW5jbHVkZTogXAorMS4gbXVsdGlwYXRoIC0gU2NhbiB0aGUgc3lzdGVtIGZvciBtdWx0aXBhdGggZGV2aWNlcyBhbmQgYXNzZW1ibGUgdGhlbS5cCisyLiBtdWx0aXBhdGhkIC0gRGV0ZWN0cyB3aGVuIHBhdGhzIGZhaWwgYW5kIGV4ZWNzIG11bHRpcGF0aCB0byB1cGRhdGUgXAordGhpbmdzLlwKKzMuIG1wYXRocGVyc2lzdCAtIFBlcnNpc3RlbnQgcmVzZXJ2YXRpb24gbWFuYWdlbWVudCBmZWF0dXJlIGFsbG93cyBcCitjbHVzdGVyIG1hbmFnZW1lbnQgc29mdHdhcmUgdG8gbWFuYWdlIHBlcnNpc3RlbnQgcmVzZXJ2YXRpb24gdGhyb3VnaCBcCittcGF0aCBkZXZpY2UuIEl0IHByb2Nlc3NlcyBtYW5hZ2VtZW50IHJlcXVlc3RzIGZyb20gY2FsbGVycyBhbmQgaGlkZXMgXAordGhlIG1hbmFnZW1lbnQgdGFzayBkZXRhaWxzLiBJdCBhbHNvIGhhbmRsZXMgcGVyc2lzdGVudCByZXNlcnZhdGlvbiBcCittYW5hZ2VtZW50IG9mIGRhdGEgcGF0aCBsaWZlIGN5Y2xlIGFuZCBzdGF0ZSBjaGFuZ2VzLlwKKzQuIGtwYXJ0eCAtIFRoaXMgdG9vbCwgZGVyaXZlZCBmcm9tIHV0aWwtbGludXgncyBwYXJ0eCwgcmVhZHMgcGFydGl0aW9uIFwKK3RhYmxlcyBvbiBzcGVjaWZpZWQgZGV2aWNlIGFuZCBjcmVhdGUgZGV2aWNlIG1hcHMgb3ZlciBwYXJ0aXRpb25zIFwKK3NlZ21lbnRzIGRldGVjdGVkLiBJdCBpcyBjYWxsZWQgZnJvbSBob3RwbHVnIHVwb24gZGV2aWNlIG1hcHMgY3JlYXRpb24gXAorYW5kIGRlbGV0aW9uIgorCitIT01FUEFHRSA9ICJodHRwOi8vY2hyaXN0b3BoZS52YXJvcXVpLmZyZWUuZnIvIgorCitERVBFTkRTID0gImxpYmRldm1hcHBlciBcCisgICAgICAgICAgIGxpYmFpbyBcCisgICAgICAgICAgIGxpYnVyY3UgXAorICAgICAgICAgICByZWFkbGluZSBcCisgICAgICAgICAgIHVkZXYgXAorICAgICAgICAgICBqc29uLWMgXAorICAgICAgICAgICIKKworTElDRU5TRSA9ICJHUEx2MiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQub3BlbnN2Yy5jb20vbXVsdGlwYXRoLXRvb2xzLy5naXQ7cHJvdG9jb2w9aHR0cCBcCisgICAgICAgICAgIGZpbGU6Ly9tdWx0aXBhdGhkLm9lIFwKKyAgICAgICAgICAgZmlsZTovL211bHRpcGF0aC5jb25mLmV4YW1wbGUgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tdWx0aXBhdGgtYXR0ZW1wdC1hdC1jb21tb24tbXVsdGlwYXRoLnJ1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUkgtZml4dXAtdWRldi1ydWxlcy1mb3ItcmVkaGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtUkgtUmVtb3ZlLXRoZS1wcm9wZXJ0eS1ibGFja2xpc3QtZXhjZXB0aW9uLWJ1aWx0aW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1SSC1kb24tdC1zdGFydC13aXRob3V0LWEtY29uZmlnLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1SSC1hZGQtbXBhdGhjb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtUkgtYWRkLXd3aWRzLWZyb20ta2VybmVsLWNtZGxpbmUtbXBhdGgud3dpZHMtd2l0aC1BLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctUkgtdHJpZ2dlci1jaGFuZ2UtdWV2ZW50LW9uLW5ldy1kZXZpY2UtY3JlYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1saWJtdWx0aXBhdGgtY2hhbmdlLWhvdy1SQURPUy1jaGVja2VyLWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1tdWx0aXBhdGgtc2V0LXZlcmJvc2l0eS10by1kZWZhdWx0LWR1cmluZy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1tcGF0aC1za2lwLWRldmljZS1jb25maWdzLXdpdGhvdXQtdmVuZG9yLXByb2R1Y3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1tdWx0aXBhdGhkLWZpeC1zaG93LW1hcHMtanNvbi1jcmFzaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLW11bHRpcGF0aC10b29scy1tb2RpZnktTWFrZWZpbGUuaW5jLWZvci1jcm9zcy1jb21waWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1BbHdheXMtdXNlLWRldm1hcHBlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LUFsd2F5cy11c2UtZGV2bWFwcGVyLWZvci1rcGFydHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1rcGFydHgtaW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggXAorICAgICAgICAgICAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworU1JDUkVWID0gImYyMTE2NmE4MTJhMmNmYjUwZWNmOTU1MGQzMjk0N2M4MzEwM2Y4M2EiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgc3lzdGVtZCBwa2djb25maWcKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm11bHRpcGF0aGQuc2VydmljZSIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKKyMgbXVsdGlwYXRoLXRvb2xzIGluY2x1ZGVzIGEgY29weSBvZiB0aGUgdmFsZ3JpbmQuaCBoZWFkZXIKKyMgZmlsZSBhbmQgdXNlcyB0aGUgbWFjcm9zIHRvIHN1cHByZXNzIHNvbWUgZmFsc2UgcG9zaXRpdmVzLiBIb3dldmVyLAorIyB0aGF0IG9ubHkgd29ya3Mgb24gQVJNIHdoZW4gdGh1bWIgaXMgZGlzYWJsZWQuIE90aGVyd2lzZSBvbmUgZ2V0czoKKyMgICBFcnJvcjogc2hpZnRzIGluIENNUC9NT1YgaW5zdHJ1Y3Rpb25zIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB1bmlmaWVkIHN5bnRheCAtLSBgbW92IHIxMixyMTIscm9yIzMnCisjICAgLi4vTWFrZWZpbGUuaW5jOjY2OiByZWNpcGUgZm9yIHRhcmdldCAnZGVidWcubycgZmFpbGVkCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCisjIFRoZSBleGFjdCB2ZXJzaW9uIG9mIFNZU1RFTUQgZG9lcyBub3QgbWF0dGVyIGJ1dCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDIwOS4KKyMKK0VYVFJBX09FTUFLRSA9ICdNVUxUSVBBVEhfVkVSU0lPTj0ke1BWfSBERVNURElSPSR7RH0gc3lzbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAgICAgICAgICAgICBPUFRGTEFHUz0iJHtDRkxBR1N9IiBcCisgICAgICAgICAgICAgICAgYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCisgICAgICAgICAgICAgICAgTElCPSR7YmFzZV9saWJkaXJ9IGxpYmRpcj0ke2Jhc2VfbGliZGlyfS9tdWx0aXBhdGggXAorICAgICAgICAgICAgICAgIHVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJzeXN0ZW1kIiwgIlNZU1RFTUQ9MjE2IiwgIiIsIGQpfSBcCisgICAgICAgICAgICAgICAnCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsCisKKyAgICAjIFdlIGNvcHkgYW4gaW5pdHNjcmlwdCwgYnV0IGRvIG5vdCBzdGFydCBtdWx0aXBhdGhkIGF0IGluaXQgdGltZS4KKyAgICAjCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgICAgICBjcCAke1dPUktESVJ9L211bHRpcGF0aGQub2UgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL211bHRpcGF0aGQKKyAgICBmaQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L211bHRpcGF0aC5jb25mLmV4YW1wbGUgXAorICAgICR7RH0ke3N5c2NvbmZkaXJ9L211bHRpcGF0aC5jb25mLmV4YW1wbGUKK30KKworRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS9tdWx0aXBhdGgvLmRlYnVnIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tbGlicyIKK0ZJTEVTXyR7UE59LWxpYnMgPSAiJHtiYXNlX2xpYmRpcn0vbGliKi5zby4qIFwKKyAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vbXVsdGlwYXRoL2xpYiouc28qIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWxpYnMgYmFzaCIKKworUFJPVklERVMgKz0gImRldmljZS1tYXBwZXItbXVsdGlwYXRoIgorUlBST1ZJREVTXyR7UE59ICs9ICJkZXZpY2UtbWFwcGVyLW11bHRpcGF0aCIKK1JQUk9WSURFU18ke1BOfS1saWJzICs9ICJkZXZpY2UtbWFwcGVyLW11bHRpcGF0aC1saWJzIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyIKKworUEFDS0FHRVMgPSsgImtwYXJ0eCIKK0ZJTEVTX2twYXJ0eCA9ICIke2Jhc2Vfc2JpbmRpcn0va3BhcnR4IFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS91ZGV2L2twYXJ0eF9pZCBcCisgICAgICAgICAgICAgICAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIGtwYXJ0eCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL211bHRpcGF0aC10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9tdWx0aXBhdGgtdG9vbHNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjhjNDIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL211bHRpcGF0aC10b29sc19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1TVU1NQVJZID0gIlRoZSB1cHN0cmVhbSBwcm9qZWN0IHVzZWQgdG8gZHJpdmUgdGhlIERldmljZSBNYXBwZXIgbXVsdGlwYXRoaW5nIGRyaXZlciIKLQotREVQRU5EUyA9ICJsaWJkZXZtYXBwZXIgbGliYWlvIGxpYnVyY3UgcmVhZGxpbmUgdWRldiIKLQotTElDRU5TRSA9ICJMR1BMdjIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lm9wZW5zdmMuY29tL211bHRpcGF0aC10b29scy8uZ2l0O3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vbXVsdGlwYXRoZC5vZSBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZV9pbmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWx3YXlzLXVzZS1saWJkZXZtYXBwZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWx3YXlzLXVzZS1saWJkZXZtYXBwZXIta3BhcnR4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbXVsdGlwYXRoZC5zZXJ2aWNlLUVycm9yLWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGFyZWQtbGlicy1hdm9pZC1saW5raW5nLS5zby1hcy1leGVjdXRhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrZXJzLWRpc2FibGUtbGliY2hlY2tyYmQuc28ucGF0Y2ggXAotICAgICAgICAgICAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotIyAwLjYuNAotU1JDUkVWID0gIjkyMjQyMWNmNzk1ZDUzZDMzOTg2MmJiMmQ5OWYxYTg1Yzk2YWQ5YTMiCi0KLWluaGVyaXQgc3lzdGVtZAotCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVBWID0gIjAuNi40K2dpdCR7QCcke1NSQ1BWfScuc3BsaXQoJysnKVstMV19IgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotIyBtdWx0aXBhdGgtdG9vbHMgaW5jbHVkZXMgYSBjb3B5IG9mIHRoZSB2YWxncmluZC5oIGhlYWRlcgotIyBmaWxlIGFuZCB1c2VzIHRoZSBtYWNyb3MgdG8gc3VwcHJlc3Mgc29tZSBmYWxzZSBwb3NpdGl2ZXMuIEhvd2V2ZXIsCi0jIHRoYXQgb25seSB3b3JrcyBvbiBBUk0gd2hlbiB0aHVtYiBpcyBkaXNhYmxlZC4gT3RoZXJ3aXNlIG9uZSBnZXRzOgotIyAgIEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjEyLHIxMixyb3IjMycKLSMgICAuLi9NYWtlZmlsZS5pbmM6NjY6IHJlY2lwZSBmb3IgdGFyZ2V0ICdkZWJ1Zy5vJyBmYWlsZWQKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLSMgVGhlIGV4YWN0IHZlcnNpb24gb2YgU1lTVEVNRCBkb2VzIG5vdCBtYXR0ZXIgYnV0IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMjA5LgotIwotRVhUUkFfT0VNQUtFID0gJ01VTFRJUEFUSF9WRVJTSU9OPSR7UFZ9IERFU1RESVI9JHtEfSBzeXNsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAotICAgICAgICAgICAgICAgIE9QVEZMQUdTPSIke0NGTEFHU30iIFwKLSAgICAgICAgICAgICAgICBiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICBMSUI9JHtiYXNlX2xpYmRpcn0gbGliZGlyPSR7YmFzZV9saWJkaXJ9L211bHRpcGF0aCBcCi0gICAgICAgICAgICAgICAgdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInN5c3RlbWQiLCAiU1lTVEVNRD0yMTYiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICcKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLQotICAgICMgV2UgY29weSBhbiBpbml0c2NyaXB0LCBidXQgZG8gbm90IHN0YXJ0IG11bHRpcGF0aGQgYXQgaW5pdCB0aW1lLgotICAgICMKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGNwICR7V09SS0RJUn0vbXVsdGlwYXRoZC5vZSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbXVsdGlwYXRoZAotCi19Ci0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtiYXNlX2xpYmRpcn0vbXVsdGlwYXRoLy5kZWJ1ZyIKLQotIyBzeXN0ZW1kIGFuZCB1ZGV2IHN0dWZmIGFsd2F5cyBnb2VzIHVuZGVyIC9saWIhCi0jCi1GSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vbXVsdGlwYXRoIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLQkJIgotCi1QQUNLQUdFUyA9KyAia3BhcnR4IgotRklMRVNfa3BhcnR4ID0gIiR7YmFzZV9zYmluZGlyfS9rcGFydHggXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3VkZXYva3BhcnR4X2lkIFwKLSAgICAgICAgICAgICAgICIKLQotUkRFUEVORFNfJHtQTn0gKz0gImtwYXJ0eCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi1uYXRpdmVfNS41LjU1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLW5hdGl2ZV81LjUuNTcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi1uYXRpdmVfNS41LjU1LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGItbmF0aXZlXzUuNS41Ny5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi5pbmMKaW5kZXggZmQ5ZGNiZC4uMjYzYjMxMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIuaW5jCkBAIC00LDcgKzQsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgogCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMubWFyaWFkYi5jb20vTWFyaWFEQi9tYXJpYWRiLSR7UFZ9L3NvdXJjZS9tYXJpYWRiLSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLm1hcmlhZGIub3JnL2YvJHtCUH0vc291cmNlLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtY21ha2UtbW9kdWxlLXBhdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJhZC1wYXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2ggXApAQCAtMTcsMTAgKzE3LDEwIEBACiAgICAgICAgICAgIGZpbGU6Ly9maXgtYS1idWlsZGluZy1mYWlsdXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NoYW5nZS1jYy10by1jYy12ZXJzaW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzYWJsZS11Y29udGV4dC1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2djYzcucGF0Y2ggXAogICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NGEwYmJiYzliNjczMDhlN2MwNzY2MjJkMDJmMGZjZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYjk0ZTMxNWQwZmM5MGM2MmRiNWE2Yzc4MjljOTk2NmY2NzQyODVkOTliM2JhM2ZmYTU3NWZiNGEyNmVkYzg2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmQ0MTA0YWFlMGI5ZTVlZmE4ODc4OTE4YmQzMjljYjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWRiZGU5OGQ3ZTRhNWExNzIxYjZjYmVkNzg5OGIyNTQ5YTg4ODY2MjQ3OTUxY2Y1ODYwNTc5NzVjNmNlYTY0MSIKIAogUyA9ICIke1dPUktESVJ9L21hcmlhZGItJHtQVn0iCiAKQEAgLTgyLDYgKzgyLDkgQEAKICAgICAgICAgICAgICAgICAgLURDQVRfRVhFQ1VUQUJMRT1gd2hpY2ggY2F0YCBcCiAgICAgICAgICAgICAgICAgIC1EQ01BS0VfQVI6RklMRVBBVEg9JHtBUn0iCiAKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKIGRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CiAgICAgIyBoYW5kbGUgZGlzdHJvcyB3aXRoIGRpZmZlcmVudCB2YWx1ZXMgb2YgJHtsaWJleGVjZGlyfQogICAgIGxpYmV4ZWNkaXIyPWBlY2hvICR7bGliZXhlY2Rpcn0gfCBzZWQgLWUgJ3MrL3Vzci8rK2cnYApAQCAtMjU1LDYgKzI1OCw3IEBACiAgICAgJHtiaW5kaXJ9L215c3FsYmlubG9nIFwKICAgICAke2JpbmRpcn0vbXlzcWxkX211bHRpIFwKICAgICAke2JpbmRpcn0vbXlzcWxkX3NhZmUgXAorICAgICR7YmluZGlyfS9teXNxbGRfc2FmZV9oZWxwZXIgXAogICAgICR7YmluZGlyfS9teXNxbGhvdGNvcHkgXAogICAgICR7YmluZGlyfS9teXNxbHRlc3QgXAogICAgICR7YmluZGlyfS9uZGJfZGVsZXRlX2FsbCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvZ2NjNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9nY2M3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTc1YjI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9nY2M3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotSW5kZXg6IG1hcmlhZGItNS41LjU1L2NsaWVudC9teXNxbC5jYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hcmlhZGItNS41LjU1Lm9yaWcvY2xpZW50L215c3FsLmNjCi0rKysgbWFyaWFkYi01LjUuNTUvY2xpZW50L215c3FsLmNjCi1AQCAtMjg1MCw3ICsyODUwLDcgQEAgWW91IGNhbiB0dXJuIG9mZiB0aGlzIGZlYXR1cmUgdG8gZ2V0IGEgcQotICAgICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoZmllbGRzKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgIH0KLS0gICAgICBmaWVsZF9uYW1lc1tpXVtudW1fZmllbGRzKjJdPSAnXDAnOwotKyAgICAgIGZpZWxkX25hbWVzW2ldW251bV9maWVsZHMqMl1bMF09ICdcMCc7Ci0gICAgICAgaj0wOwotICAgICAgIHdoaWxlICgoc3FsX2ZpZWxkPW15c3FsX2ZldGNoX2ZpZWxkKGZpZWxkcykpKQotICAgICAgIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYl81LjUuNTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGJfNS41LjU3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGJfNS41LjU1LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGJfNS41LjU3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25naHR0cDIvbmdodHRwMl8xLjI2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25naHR0cDIvbmdodHRwMl8xLjI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U2YjEwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmdodHRwMi9uZ2h0dHAyXzEuMjYuMC5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIkhUVFAvMiBDIExpYnJhcnkgYW5kIHRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9uZ2h0dHAyLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAicGtnY29uZmlnIGN1bml0IHpsaWIgb3BlbnNzbCBsaWJ4bWwyIGphbnNzb24gYy1hcmVzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uZ2h0dHAyL25naHR0cDIvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L25naHR0cDItJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MjZmMDdhZDNiNTBmMzhmN2Q4OTM1Y2VkMDQ3MTZjZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZGY0MjI5ZjQxMjNiNWFhOTZlODM0ZWJjZmRmZmU5NTRlOTNkOTg2ZjAyNTJmZDEwMTIzZDUwYzZmMDEwOTgzIgorCitpbmhlcml0IGNtYWtlIHB5dGhvbm5hdGl2ZSBweXRob24tZGlyCisKK0VYVFJBX09FQ01BS0UgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ubW9uL25tb24vMDAwMS1sbW9uMTZnLmMtQWRqdXN0LXN5c3RlbS1oZWFkZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ubW9uL25tb24vMDAwMS1sbW9uMTZnLmMtQWRqdXN0LXN5c3RlbS1oZWFkZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZGViZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25tb24vbm1vbi8wMDAxLWxtb24xNmcuYy1BZGp1c3Qtc3lzdGVtLWhlYWRlcnMucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBkOTc3YjUxNzAwMjc5MjZlYjk3YWI5NzQyZGRjNTFkMmE1NTU1YTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMTA6MDY6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG1vbjE2Zy5jOiBBZGp1c3Qgc3lzdGVtIGhlYWRlcnMKKworZnN0YWIuaCBpcyB1bnVzZWQKK2Vycm5vLmggaXMgaW4gL3Vzci9pbmNsdWRlCitkZWZpbmVzIGZyb20gc3lzL2NkZWZzLmggaXMgdXNlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG1vbjE2Zy5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xtb24xNmcuYyBiL2xtb24xNmcuYworaW5kZXggY2IyN2UwOS4uZDJhMTFjNSAxMDA2NDQKKy0tLSBhL2xtb24xNmcuYworKysrIGIvbG1vbjE2Zy5jCitAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgY2hhciAqU2Njc0lkID0gIm5tb24gIiBWRVJTSU9OOworICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPHRpbWUuaD4KKy0jaW5jbHVkZSA8c3lzL2Vycm5vLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KK0BAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBjaGFyICpTY2NzSWQgPSAibm1vbiAiIFZFUlNJT047CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKysjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgCisgLyogV2luZG93cyBtb3ZlZCBoZXJlIHNvIHRoZXkgY2FuIGJlIGNsZWFyZWQgd2hlbiB0aGUgc2NyZWVuIG1vZGUgY2hhbmdlcyAqLworIFdJTkRPVyAqcGFkd2VsY29tZSA9IE5VTEw7CitAQCAtNTc2LDcgKzU3Nyw2IEBAIHN0cnVjdCBwcm9jc2luZm8geworIGludCBpc3Jvb3QgPSAwOworIAorICNpbmNsdWRlIDxtbnRlbnQuaD4KKy0jaW5jbHVkZSA8ZnN0YWIuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbm1vbi9ubW9uXzEzZy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbm1vbi9ubW9uXzEzZy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY3NTE4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25tb24vbm1vbl8xM2cuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIm5tb24gcGVyZm9ybWFuY2UgbW9uaXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly9ubW9uLnNmLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L0RvY3VtZW50YXRpb24udHh0O21kNT1kYmIxMzY1OGNmNTVkNjg3YzRmMmZmNzcxYTY5NmQ0YSIKLURFUEVORFMgPSAibmN1cnNlcyIKLVBSID0gInIyIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ubW9uL2xtb24xM2cuYztuYW1lPWxtb24gXAotICAgICAgICAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vbm1vbi9Eb2N1bWVudGF0aW9uLnR4dDtuYW1lPWRvYyBcCi0iCi0KLVNSQ19VUklbbG1vbi5tZDVzdW1dID0gImIxYjhlNmMwMTIzYWQyMzIzOTQ5OTFmMmQ0ZjQwNDk0IgotU1JDX1VSSVtsbW9uLnNoYTI1NnN1bV0gPSAiNDU2YWIyYTM0MmIzMWQxYTM1MmQwZDk0MGFmNTk2MmZhNjVhMTJhZTg3NTdmZjczZTZlNzMyMTA4MzJhZThiNSIKLVNSQ19VUklbZG9jLm1kNXN1bV0gPSAiZGJiMTM2NThjZjU1ZDY4N2M0ZjJmZjc3MWE2OTZkNGEiCi1TUkNfVVJJW2RvYy5zaGEyNTZzdW1dID0gIjFmN2Y4M2FmZTYyYTcyMTBiZTVlODNjZDI0MTU3YWRiODU0YzE0NTk5ZWZlMGIzNzdhN2VjY2E5MzM4NjkyNzgiCi0KLUNGTEFHUyArPSAiLUQgSkZTIC1EIEdFVFVTRVIgLVdhbGwgLUQgTEFSR0VNRU0iCi1MREZMQUdTICs9ICItbHRpbmZvIC1sbmN1cnNlc3ciCi1BU05FRURFRF9wbi1ubW9uID0gIiIKLQotZG9fY29tcGlsZSgpIHsKLSAgICAke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAke1dPUktESVJ9L2xtb24xM2cuYyAtbyBubW9uCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IG5tb24gJHtEfSR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ubW9uL25tb25fMTZnLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ubW9uL25tb25fMTZnLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3N2ZhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25tb24vbm1vbl8xNmcuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJubW9uIHBlcmZvcm1hbmNlIG1vbml0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vbm1vbi5zZi5uZXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9Eb2N1bWVudGF0aW9uLnR4dDttZDU9ZGJiMTM2NThjZjU1ZDY4N2M0ZjJmZjc3MWE2OTZkNGEiCitERVBFTkRTID0gIm5jdXJzZXMiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGJzZC1oZWFkZXJzIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ubW9uL2xtb24ke1BWfS5jO25hbWU9bG1vbiBcCisgICAgICAgICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9ubW9uL0RvY3VtZW50YXRpb24udHh0O25hbWU9ZG9jIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbG1vbjE2Zy5jLUFkanVzdC1zeXN0ZW0taGVhZGVycy5wYXRjaCBcCisiCitTUkNfVVJJW2xtb24ubWQ1c3VtXSA9ICIyNDZjY2ZjNzRkNWFmNTVkOTkyNjAxZmM0ZDNkNGE3MiIKK1NSQ19VUklbbG1vbi5zaGEyNTZzdW1dID0gImRhODJkZDY5M2I1MDNiMDYyODU0ZGZlN2RiYjVkMzZiMzQ3ODcyYWI0NGE0YWEwNWI5N2U5ZDU3Nzc0N2Y2ODgiCitTUkNfVVJJW2RvYy5tZDVzdW1dID0gImRiYjEzNjU4Y2Y1NWQ2ODdjNGYyZmY3NzFhNjk2ZDRhIgorU1JDX1VSSVtkb2Muc2hhMjU2c3VtXSA9ICIxZjdmODNhZmU2MmE3MjEwYmU1ZTgzY2QyNDE1N2FkYjg1NGMxNDU5OWVmZTBiMzc3YTdlY2NhOTMzODY5Mjc4IgorCitDRkxBR1MgKz0gIi1EIEpGUyAtRCBHRVRVU0VSIC1XYWxsIC1EIExBUkdFTUVNIgorTERGTEFHUyArPSAiLWx0aW5mbyAtbG5jdXJzZXN3IC1sbSIKK0FTTkVFREVEX3BuLW5tb24gPSAiIgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2NvbXBpbGUoKSB7CisgICAgJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gbG1vbiR7UFZ9LmMgLW8gbm1vbgorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBubW9uICR7RH0ke2JpbmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnVtYWN0bC9udW1hY3RsXzIuMC4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnVtYWN0bC9udW1hY3RsXzIuMC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQxNTlhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L251bWFjdGwvbnVtYWN0bF8yLjAuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIkRldmVsb3BtZW50IHBhY2thZ2UgZm9yIGJ1aWxkaW5nIEFwcGxpY2F0aW9ucyB0aGF0IHVzZSBudW1hIgotREVTQ1JJUFRJT04gPSAiU2ltcGxlIE5VTUEgcG9saWN5IHN1cHBvcnQuIEl0IGNvbnNpc3RzIG9mIGEgbnVtYWN0bCBwcm9ncmFtIFwKLXRvIHJ1biBvdGhlciBwcm9ncmFtcyB3aXRoIGEgc3BlY2lmaWMgTlVNQSBwb2xpY3kgYW5kIGEgbGlibnVtYSB0byBkbyBcCi1hbGxvY2F0aW9ucyB3aXRoIE5VTUEgcG9saWN5IGluIGFwcGxpY2F0aW9ucy4iCi1MSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMSIKLVNFQ1RJT04gPSAiYXBwcyIKLVJERVBFTkRTXyR7UE59ID0gInBlcmwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE5O2VuZGxpbmU9MzI7bWQ1PTU2NDRjYzM4NTFjYjI0OTlmNmM0OGU1MmZlMTk4YmQ5IgotCi1TUkNfVVJJID0gImZ0cDovL29zcy5zZ2kuY29tL3d3dy9wcm9qZWN0cy9saWJudW1hL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9maXgtbnVsbC1wb2ludGVyLnBhdGNoIFwKLSAgICBmaWxlOi8vRml4LXRoZS10ZXN0LW91dHB1dC1mb3JtYXQucGF0Y2ggXAotICAgIGZpbGU6Ly9NYWtlZmlsZSBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgZmlsZTovLzAwMDEtZGVmaW5lLXJ1bi10ZXN0LXRhcmdldC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZDNiYzg4YjdkZGI5ZjA2ZDYwODk4ZjQ4MTZhZTkxMjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDUwYzA5MTIzNWY4OTFlZTg3NGE4NjUxYjE3OWMzMGY1N2ExMzkxY2E1YzQ2NzMzNTQ3NDBiYTY1ZTUyNzg2MSIKLQotIyBBUk0gZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgTlVNQQotQ09NUEFUSUJMRV9IT1NUID0gIl4oKD8hYXJtKS4qKSQiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gcHJlZml4PSR7RH0vdXNyIGluc3RhbGwKLSAgICAjcmVtb3ZlIHRoZSBlbXB0eSBtYW4yIGRpcmVjdG9yeQotICAgIHJtIC1yICR7RH0ke21hbmRpcn0vbWFuMgotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgIG9lX3J1bm1ha2UgdGVzdAotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgICNpbnN0YWxsIHRlc3RzIGJpbmFyaWVzCi0gICAgbG9jYWwgdGVzdF9iaW5hcmllcz0iZGlzdGFuY2UgZnRvayBtYmluZF9taWdfcGFnZXMgbWlncmF0ZV9wYWdlcyBtb3ZlX3BhZ2VzIFwKLSAgICBteW5vZGUgICAgbm9kZW1hcCBub2RlLXBhcnNlIHBhZ2VzaXplIHByZWZlcmVkIHJhbmRtYXAgcmVhbGxvY190ZXN0IFwKLSAgICB0Yml0bWFwIHRzaGFyZWQiCi0KLSAgICBbICEgLWQgJHtEfS8ke1BURVNUX1BBVEh9L3Rlc3QgXSAmJiBta2RpciAtcCAke0R9LyR7UFRFU1RfUEFUSH0vdGVzdAotICAgIGZvciBpIGluICR0ZXN0X2JpbmFyaWVzOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0Ly5saWJzLyRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLSAgICBkb25lCi0KLSAgICBsb2NhbCB0ZXN0X3NjcmlwdHM9ImNoZWNrdG9wb2xvZ3kgY2hlY2thZmZpbml0eSBwcmludGNwdSByZWdyZXNzIHJlZ3Jlc3MyIFwKLSAgICAgICAgc2htdGVzdCAgcnVubHRwIGJpbmRfcmFuZ2UiCi0gICAgZm9yIGkgaW4gJHRlc3Rfc2NyaXB0czsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vdGVzdC8kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vLmxpYnMvbnVtYWN0bCAke0R9JHtQVEVTVF9QQVRIfS8KLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnVtYWN0bC9udW1hY3RsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnVtYWN0bC9udW1hY3RsX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWNiY2YwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGxfZ2l0LmJiCkBAIC0wLDAgKzEsNjEgQEAKK1NVTU1BUlkgPSAiRGV2ZWxvcG1lbnQgcGFja2FnZSBmb3IgYnVpbGRpbmcgQXBwbGljYXRpb25zIHRoYXQgdXNlIG51bWEiCitIT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMvbGlibnVtYS8iIAorREVTQ1JJUFRJT04gPSAiU2ltcGxlIE5VTUEgcG9saWN5IHN1cHBvcnQuIEl0IGNvbnNpc3RzIG9mIGEgbnVtYWN0bCBwcm9ncmFtIFwKK3RvIHJ1biBvdGhlciBwcm9ncmFtcyB3aXRoIGEgc3BlY2lmaWMgTlVNQSBwb2xpY3kgYW5kIGEgbGlibnVtYSB0byBkbyBcCithbGxvY2F0aW9ucyB3aXRoIE5VTUEgcG9saWN5IGluIGFwcGxpY2F0aW9ucy4iCitMSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMSIKK1NFQ1RJT04gPSAiYXBwcyIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE5O2VuZGxpbmU9MzI7bWQ1PTU2NDRjYzM4NTFjYjI0OTlmNmM0OGU1MmZlMTk4YmQ5IgorCitTUkNSRVYgPSAiZWEzYTcwNjgxYzJmNTIzZmU1OGUxZDQ0NTI3ZjQ3OGNhNzZkYjc0ZSIKK1BWID0gIjIuMC4xMStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL251bWFjdGwvbnVtYWN0bCBcCisgICAgZmlsZTovL2ZpeC1udWxsLXBvaW50ZXIucGF0Y2ggXAorICAgIGZpbGU6Ly9GaXgtdGhlLXRlc3Qtb3V0cHV0LWZvcm1hdC5wYXRjaCBcCisgICAgZmlsZTovL01ha2VmaWxlIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICBmaWxlOi8vMDAwMS1kZWZpbmUtcnVuLXRlc3QtdGFyZ2V0LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworIyBBUk0gZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgTlVNQQorQ09NUEFUSUJMRV9IT1NUID0gIl4oKD8hYXJtKS4qKSQiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gcHJlZml4PSR7RH0vdXNyIGluc3RhbGwKKyAgICAjcmVtb3ZlIHRoZSBlbXB0eSBtYW4yIGRpcmVjdG9yeQorICAgIHJtIC1yICR7RH0ke21hbmRpcn0vbWFuMgorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICNpbnN0YWxsIHRlc3RzIGJpbmFyaWVzCisgICAgbG9jYWwgdGVzdF9iaW5hcmllcz0iZGlzdGFuY2UgZnRvayBtYmluZF9taWdfcGFnZXMgbWlncmF0ZV9wYWdlcyBtb3ZlX3BhZ2VzIFwKKyAgICBteW5vZGUgICAgbm9kZW1hcCBub2RlLXBhcnNlIHBhZ2VzaXplIHByZWZlcmVkIHJhbmRtYXAgcmVhbGxvY190ZXN0IFwKKyAgICB0Yml0bWFwIHRzaGFyZWQiCisKKyAgICBbICEgLWQgJHtEfS8ke1BURVNUX1BBVEh9L3Rlc3QgXSAmJiBta2RpciAtcCAke0R9LyR7UFRFU1RfUEFUSH0vdGVzdAorICAgIGZvciBpIGluICR0ZXN0X2JpbmFyaWVzOyBkbworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0Ly5saWJzLyRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKyAgICBkb25lCisKKyAgICBsb2NhbCB0ZXN0X3NjcmlwdHM9ImNoZWNrdG9wb2xvZ3kgY2hlY2thZmZpbml0eSBwcmludGNwdSByZWdyZXNzIHJlZ3Jlc3MyIFwKKyAgICAgICAgc2htdGVzdCAgcnVubHRwIGJpbmRfcmFuZ2UiCisgICAgZm9yIGkgaW4gJHRlc3Rfc2NyaXB0czsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vdGVzdC8kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vLmxpYnMvbnVtYWN0bCAke0R9JHtQVEVTVF9QQVRIfS8KK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb2RlL29kZS9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29kZS9vZGUvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDZiMmUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb2RlL29kZS9jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogb2RlLTAuMTMvbGliY2NkL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9kZS0wLjEzLm9yaWcvbGliY2NkL2NvbmZpZ3VyZS5hYwkyMDEzLTA4LTE5IDE3OjQ4OjAzLjAwMDAwMDAwMCArMDAwMAotKysrIG9kZS0wLjEzL2xpYmNjZC9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMjowNDoxNi41ODA1OTU2OTAgKzAwMDAKLUBAIC01LDcgKzUsNyBAQAotIEFDX0lOSVQoW2xpYmNjZF0sIFsxLjBdLCBbZGFuZmlzQGRhbmZpcy5jel0pCi0gQUNfQ09ORklHX1NSQ0RJUihbc3JjL2NjZC5jXSkKLSBBQ19DT05GSUdfSEVBREVSUyhbc3JjL2NvbmZpZy5oXSkKLS1BTV9JTklUX0FVVE9NQUtFCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbl0pCi0gCi0gIyBDaGVja3MgZm9yIHByb2dyYW1zLgotIEFDX1BST0dfQ1hYCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29kZS9vZGVfMC4xMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb2RlL29kZV8wLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTBjODE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb2RlL29kZV8wLjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJPREUgaXMgYW4gT3BlbiBTb3VyY2UgUGh5c2ljcyBFbmdpbmUiCi1TRUNUSU9OID0gImxpYnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9kZS5vcmciCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0xZGU5MDZlZTk2ODA4ZDk3NzZkZDcyYTVmOWE3OWEyMiBcCi0gICAgZmlsZTovL0xJQ0VOU0UuVFhUO21kNT03NzE3ODJjYjYyNDVjN2ZiYmU3NGJjMGVjMDU5YmVmZiBcCi0iCi0jIExJQ0VOU0UtQlNELlRYVCBpcyBtaXNzaW5nIGluIDAuMTMgdGFyYmFsbCwgYnV0IENPUFlJTkcgc3RpbGwgc2F5cyBpdCdzIGR1YWwgbGljZW5zZWQKLSMgYW5kIHN2biByZXBvIHN0aWxsIGNvbnRhaW5zIExJQ0VOU0UtQlNELlRYVCBzbyBtYXliZSBpdCB3aWxsIHJldHVybiBpbiBuZXh0IHRhcmJhbGwKLSMgZmlsZTovL0xJQ0VOU0UtQlNELlRYVDttZDU9Yzc0ZTYzMDRhNzcyMTE3ZTA1OTQ1OGZiOTc2M2E5MjgKLQotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9vcGVuZGUvb2RlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjA0YjMyYzk2NDVjMTQ3ZTE4Y2FmZjdhNTk3YTE5Zjg0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0Y2UzZTIzNmUzMTNiZjEwOWEwY2I1NTQ2ZDJmY2E0NjJhZWQ5OWYyOWE0MmU2MmJjMTQ2M2I4MDNjMzFlZjkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlbW9zIC0tZW5hYmxlLXNvbmFtZSIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLSMgaWYgaXQgaXNuJ3QgZXhwbGljaXRseSBzZWxlY3RlZCBhbmQgIiRidWlsZF9vcyIgPT0gIiR0YXJnZXRfb3MiLCB0aGVuIGNvbmZpZ3VyZSB3aWxsIHJ1bgotIyBzZXJpZXMgb2YgQUNfVFJZX1JVTiB3aGljaCB3b24ndCB3b3JrIGZvciBjcm9zcy1jb21waWxhdGlvbiBhbmQgY29uZmlndXJlIGZhaWxzCi1QQUNLQUdFQ09ORklHW2RvdWJsZS1wcmVjaXNpb25dID0gIi0tZW5hYmxlLWRvdWJsZS1wcmVjaXNpb24sLS1kaXNhYmxlLWRvdWJsZS1wcmVjaXNpb24iCi0KLVBOQkxBQ0tMSVNUW29kZV0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA1OTkvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotUE5CTEFDS0xJU1Rbb2RlXSA/PSAiRmFpbHMgdG8gYnVpbGQgd2l0aCBSU1MgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzEzMDYyMC8gLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdmNkaWZmL29wZW4tdmNkaWZmXzAuOC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZjZGlmZi9vcGVuLXZjZGlmZl8wLjguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNmMmU3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdmNkaWZmL29wZW4tdmNkaWZmXzAuOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBlbmNvZGVyL2RlY29kZXIgZm9yIHRoZSBWQ0RJRkYgKFJGQzMyODQpIGZvcm1hdCIKLURFU0NSSVBUSU9OID0gIkEgbGlicmFyeSB3aXRoIGEgc2ltcGxlIEFQSSBpcyBpbmNsdWRlZCwgYXMgd2VsbCBhcyBhIFwKLSAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBleGVjdXRhYmxlIHRoYXQgY2FuIGFwcGx5IHRoZSBlbmNvZGVyIGFuZCBcCi0gICAgICAgICAgICAgICBkZWNvZGVyIHRvIHNvdXJjZSwgdGFyZ2V0LCBhbmQgZGVsdGEgZmlsZXMuIFwKLSAgICAgICAgICAgICAgIEEgc2xpZ2h0IHZhcmlhdGlvbiBmcm9tIHRoZSBkcmFmdCBzdGFuZGFyZCBpcyBkZWZpbmVkIFwKLSAgICAgICAgICAgICAgIHRvIGFsbG93IGNodW5rLWJ5LWNodW5rIGRlY29kaW5nIHdoZW4gb25seSBhIHBhcnRpYWwgXAotICAgICAgICAgICAgICAgZGVsdGEgZmlsZSB3aW5kb3cgaXMgYXZhaWxhYmxlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGVuLXZjZGlmZi8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZmODIwZDRkZGMxYmEwNWI2ZmQzN2I0MWEyMTUwNmY5IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZHJpdmUuZ29vZ2xlLmNvbS91Yz9pZD0wQjVXcElpMmZRVTFhTkdKd1ZFOWhValU1Y2xVJmV4cG9ydD1kb3dubG9hZDtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1YzBkMzc4ZDkwN2JlYmMzOGI1MWMzZDdlNDExNzAxMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYjE0MmIxMDI3ZmIwYTYyYzQxMzQ3NjAwZTAxYTUzZmEyNzRkYWQxNTQ0NWE3ZGE0ODA4M2M4MzBjMzEzOGIzIgotCi1pbmhlcml0IGF1dG90b29scwotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy82ODY2Ny8KLVBOQkxBQ0tMSVNUW29wZW4tdmNkaWZmXSA/PSAiQlJPS0VOOiBmYWlscyB0byBidWlsZCB3aXRoIGdjYy02IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL2ZpbGVzL3Rvb2xzLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdG9vbHMuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmNhZTcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL2ZpbGVzL3Rvb2xzLmNvbmYKQEAgLTAsMCArMSwyIEBACitbZ3Vlc3RpbmZvXQorZGlzYWJsZS1wZXJmLW1vbj0xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdm10b29sc2Quc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy92bXRvb2xzZC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMGUzODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdm10b29sc2Quc2VydmljZQpAQCAtMCwwICsxLDExIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPU9wZW4gVmlydHVhbCBNYWNoaW5lIFRvb2xzIChWTXdhcmUgVG9vbHMpCitDb25kaXRpb25WaXJ0dWFsaXphdGlvbj12bXdhcmUKKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9L3Vzci9iaW4vdm10b29sc2QKK1Jlc3RhcnQ9b24tZmFpbHVyZQorS2lsbFNpZ25hbD1TSUdLSUxMCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDEtUmVtb3ZlLWFzc3VtcHRpb25zLWFib3V0LWdsaWJjLWJlaW5nLW9ubHktbGliYy1pbXBsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDEtUmVtb3ZlLWFzc3VtcHRpb25zLWFib3V0LWdsaWJjLWJlaW5nLW9ubHktbGliYy1pbXBsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzczYjRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1SZW1vdmUtYXNzdW1wdGlvbnMtYWJvdXQtZ2xpYmMtYmVpbmctb25seS1saWJjLWltcGxlLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYTA5ODNkODQxODVmMDRjNGU0MDc3OGZlOTUxZmRlNDQzOTg5NDg4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDA3OjM3OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTFdIFJlbW92ZSBhc3N1bXB0aW9ucyBhYm91dCBnbGliYyBiZWluZyBvbmx5IGxpYmMKKyBpbXBsZW1lbnRhdGlvbiBvbiBsaW51eAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgb3Blbi12bS10b29scy9saWIvZmlsZS9maWxlSU9Qb3NpeC5jICAgICAgfCAyICstCisgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS92bV9iYXNpY19kZWZzLmggfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2ZpbGUvZmlsZUlPUG9zaXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvZmlsZS9maWxlSU9Qb3NpeC5jCisrKysgb3Blbi12bS10b29scy9saWIvZmlsZS9maWxlSU9Qb3NpeC5jCitAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBBbGlnbmVkUG9vbCBhbGlnbmVkUG9vbDsKKyAgKiBhcmUgbm90IGF2YWlsYWJsZSBpbiBhbnkgaGVhZGVyIGZpbGUuCisgICovCisgCistI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX19HTElCQ19fKQorICAgICNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiAoX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCisgICAgICAgLyoKKyAgICAgICAgKiBXZSB3YW50IHByZWFkdi9wd3JpdGV2LiBCdXQgZHVlIHRvIEZPQj02NCwgdGhlIHN5bWJvbHMgYXJlIC02NC4KK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3ZtX2Jhc2ljX2RlZnMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvaW5jbHVkZS92bV9iYXNpY19kZWZzLmgKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3ZtX2Jhc2ljX2RlZnMuaAorQEAgLTU3MSw2ICs1NzEsNyBAQCB0eXBlZGVmIGludCBwaWRfdDsKKyAjaWYgZGVmaW5lZCBfX2xpbnV4X18gJiYgIWRlZmluZWQgX19LRVJORUxfXyAmJiAhZGVmaW5lZCBNT0RVTEUgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAhZGVmaW5lZCBWTU0gJiYgIWRlZmluZWQgRlJPQk9TICYmICFkZWZpbmVkIF9fQU5EUk9JRF9fCisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisrI2lmIF9fR0xJQkNfXworICNpZiBfX0dMSUJDX1BSRVJFUSgyLCAxKSAmJiAhZGVmaW5lZCBHTElCQ19WRVJTSU9OXzIxCisgI2RlZmluZSBHTElCQ19WRVJTSU9OXzIxCisgI2VuZGlmCitAQCAtNTkwLDYgKzU5MSw3IEBAIHR5cGVkZWYgaW50IHBpZF90OworICNkZWZpbmUgR0xJQkNfVkVSU0lPTl8yMTIKKyAjZW5kaWYKKyAjZW5kaWYKKysjZW5kaWYKKyAKKyAvKgorICAqIENvbnZlbmllbmNlIGRlZmluaXRpb25zIG9mIHVuaWNvZGUgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LXVzZS1kbmV0LWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LXVzZS1kbmV0LWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWNiODczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRuZXQtY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gOTI5MTUwNjA4YzE2NjQ0Njk1ZjE5Y2QyZTBjYzhhMDZhNDFjZDQ5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBLZWxseSA8bWtlbGx5QHhldm8uY29tPgorRGF0ZTogRnJpLCA3IEFwciAyMDE3IDE1OjIwOjMwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogZG9uJ3QgdXNlIGRuZXQtY29uZmlnCisKK1RoZSBkbmV0LWNvbmZpZyB0b29sIGRvZXNuJ3Qga25vdyBhYm91dCBjcm9zcy1jb21waWxhdGlvbiwgc28gaXQgaW5qZWN0cworLUkvdXNyL2luY2x1ZGUgaW50byB0aGUgcGF0aCwgY2F1c2luZyBjb21waWxlciBlcnJvcnMuIFNvIGluc3RlYWQgZmluZCBkbmV0IHZpYQorLWxkbmV0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS2VsbHkgPG1rZWxseUB4ZXZvLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDM0MDBiODYuLjdkNjExOWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTk0Miw3ICs5NDIsNyBAQCBpZiB0ZXN0ICIkd2l0aF9kbmV0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgQUNfVk1XX0NIRUNLX0xJQihbZG5ldF0sCisgICAgICAgICAgICAgICAgICAgICAgICBbRE5FVF0sCisgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgICAgIFtkbmV0LWNvbmZpZ10sCisrICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgW2RuZXQuaF0sCisgICAgICAgICAgICAgICAgICAgICAgICBbaW50Zl9vcGVuXSwKK0BAIC05NTIsNyArOTUyLDcgQEAgaWYgdGVzdCAiJHdpdGhfZG5ldCIgPSAieWVzIjsgdGhlbgorIAorICAgIGlmIHRlc3QgJGhhdmVfZG5ldCA9ICJubyI7IHRoZW4KKyAJCUFDX01TR19FUlJPUigKKy0JCSAgIFtkbmV0LWNvbmZpZyB3YXMgbm90IGZvdW5kIG9uIHlvdXIgUEFUSC4gUGxlYXNlIGNvbmZpZ3VyZSB3aXRob3V0IGRuZXQgKHVzaW5nIC0td2l0aG91dC1kbmV0KSBvciBpbnN0YWxsIGRuZXQgLSBodHRwOi8vbGliZG5ldC5zb3VyY2Vmb3JnZS5uZXRdKQorKwkJICAgW2RuZXQgd2FzIG5vdCBmb3VuZC4gUGxlYXNlIGNvbmZpZ3VyZSB3aXRob3V0IGRuZXQgKHVzaW5nIC0td2l0aG91dC1kbmV0KSBvciBpbnN0YWxsIGRuZXQgLSBodHRwOi8vbGliZG5ldC5zb3VyY2Vmb3JnZS5uZXRdKQorIAlmaQorIGZpCisgCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDItYWRkLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMi1hZGQtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwNTYwMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDItYWRkLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNTgxOGFjYzgwMzJlMzI0NzI1NzczMDM3NmU5NDczMzAzNDBhMDdiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBLZWxseSA8bWtlbGx5QHhldm8uY29tPgorRGF0ZTogTW9uLCAyMiBNYXkgMjAxNyAxNzowMDowNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gYWRkICNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisKK0luIG5ld2VyIGdsaWJjIHZlcnNpb25zLCB0aGUgZGVmaW5pdGlvbiBmb3IgbWFqb3IoKSBoYXMgYmVlbiBtb3ZlZCB0bworc3lzL3N5c21hY3Jvcy5oLCBhbmQgdXNpbmcgdGhlIG9sZGVyIHZlcnNpb24gaW4gPHN5cy90eXBlcy5oPiBoYXMgYmVlbgorZGVwcmVjYXRlZC4gU28sIGFkZCBhbiBpbmNsdWRlIGZvciA8c3lzL3N5c21hY3Jvcy5oPi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBLZWxseSA8bWtlbGx5QHhldm8uY29tPgorLS0tCisgbGliL3dpcGVyL3dpcGVyUG9zaXguYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvb3Blbi12bS10b29scy9saWIvd2lwZXIvd2lwZXJQb3NpeC5jIGIvb3Blbi12bS10b29scy9saWIvd2lwZXIvd2lwZXJQb3NpeC5jCitpbmRleCBkMzg5ZWVlLi4xZjIyMWZjIDEwMDY0NAorLS0tIGEvbGliL3dpcGVyL3dpcGVyUG9zaXguYworKysrIGIvbGliL3dpcGVyL3dpcGVyUG9zaXguYworQEAgLTQwLDYgKzQwLDkgQEAKKyAjICBpbmNsdWRlIDxsaWJnZW4uaD4KKyAjIGVuZGlmIC8qIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAwMCAqLworICNlbmRpZgorKyNpZiBkZWZpbmVkKF9fbGludXhfXykKKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorKyNlbmRpZgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKyAjaW5jbHVkZSAidm13YXJlLmgiCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDItaW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1vYnNvbGV0ZS1zeXMtcG9sbC5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMi1pbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLW9ic29sZXRlLXN5cy1wb2xsLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI2YmYyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDItaW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1vYnNvbGV0ZS1zeXMtcG9sbC5oLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gZDQ0YzdjOWRlNzM4MGFkN2IyODQyMzFiZDViNWM5OWI1YzE5NzU4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDA3OjM3OjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIGluY2x1ZGUgcG9sbC5oIGluc3RlYWQgb2Ygb2Jzb2xldGUgc3lzL3BvbGwuaAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgb3Blbi12bS10b29scy9saWIvYXN5bmNzb2NrZXQvYXN5bmNTb2NrZXRJbnQuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2FzeW5jc29ja2V0L2FzeW5jU29ja2V0SW50LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2FzeW5jc29ja2V0L2FzeW5jU29ja2V0SW50LmgKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9hc3luY3NvY2tldC9hc3luY1NvY2tldEludC5oCitAQCAtNzEsOCArNzEsOCBAQAorICNlbHNlCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorKyNpbmNsdWRlIDxwb2xsLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPHN5cy91bi5oPgorICNpbmNsdWRlIDxuZXRkYi5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMy1SZW5hbWUtcG9sbC5oLXRvLXZtX3BvbGwuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDMtUmVuYW1lLXBvbGwuaC10by12bV9wb2xsLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0MTc3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDMtUmVuYW1lLXBvbGwuaC10by12bV9wb2xsLmgucGF0Y2gKQEAgLTAsMCArMSw3NTYgQEAKK0Zyb20gNjg3ZmNhMjBiMzQxN2FjODg1YjY5NjFlNmZlMTEyNmQ0YTNmZTdhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KK0RhdGU6IFR1ZSwgMTcgTm92IDIwMTUgMTA6NTc6MzEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xMV0gUmVuYW1lIHBvbGwuaCB0byB2bV9wb2xsLmgKKworbXVzbCBsaWJjJ3Mgc3lzdGVtIGhlYWRlcnMgcHVsbHMgaW4gb3Blbi12bS10b29scycgcG9sbC5oLiBUbyBhdm9pZCB0aGlzCit3ZSByZW5hbWUgcG9sbC5oIHRvIHZtX3BvbGwuaC4KKworU2lnbmVkLW9mZi1ieTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorLS0tCisgb3Blbi12bS10b29scy9saWIvYXN5bmNzb2NrZXQvYXN5bmNzb2NrZXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgb3Blbi12bS10b29scy9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9hc3luY3NvY2tldC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9wb2xsSW1wbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS97cG9sbC5oID0+IHZtX3BvbGwuaH0gICAgICAgICAgICAgICAgICAgICAgfCAwCisgb3Blbi12bS10b29scy9saWIvcnBjSW4vcnBjaW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2dyYWJiaXRtcVByb3h5L2dyYWJiaXRtcVByb3h5UGx1Z2luLmMgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisgcmVuYW1lIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUve3BvbGwuaCA9PiB2bV9wb2xsLmh9ICgxMDAlKQorCitJbmRleDogb3Blbi12bS10b29scy9saWIvYXN5bmNzb2NrZXQvYXN5bmNzb2NrZXQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvYXN5bmNzb2NrZXQvYXN5bmNzb2NrZXQuYworKysrIG9wZW4tdm0tdG9vbHMvbGliL2FzeW5jc29ja2V0L2FzeW5jc29ja2V0LmMKK0BAIC01Miw3ICs1Miw3IEBACisgI2luY2x1ZGUgInZtd2FyZS5oIgorICNpbmNsdWRlICJhc3luY3NvY2tldC5oIgorICNpbmNsdWRlICJhc3luY1NvY2tldEludC5oIgorLSNpbmNsdWRlICJwb2xsLmgiCisrI2luY2x1ZGUgInZtX3BvbGwuaCIKKyAjaW5jbHVkZSAibG9nLmgiCisgI2luY2x1ZGUgImVyci5oIgorICNpbmNsdWRlICJob3N0aW5mby5oIgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXIuYworKysrIG9wZW4tdm0tdG9vbHMvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlci5jCitAQCAtNDgsNyArNDgsNyBAQAorICNpbmNsdWRlICJoZ2ZzU2VydmVyT3Bsb2NrLmgiCisgI2luY2x1ZGUgImhnZnNEaXJOb3RpZnkuaCIKKyAjaW5jbHVkZSAidXNlcmxvY2suaCIKKy0jaW5jbHVkZSAicG9sbC5oIgorKyNpbmNsdWRlICJ2bV9wb2xsLmgiCisgI2luY2x1ZGUgIm11dGV4UmFua0xpYi5oIgorICNpbmNsdWRlICJ2bV9iYXNpY19hc20uaCIKKyAjaW5jbHVkZSAidW5pY29kZU9wZXJhdGlvbnMuaCIKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL2FzeW5jc29ja2V0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2luY2x1ZGUvYXN5bmNzb2NrZXQuaAorKysrIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvYXN5bmNzb2NrZXQuaAorQEAgLTEyOSw3ICsxMjksNyBAQCB0eXBlZGVmIHN0cnVjdCBBc3luY1NvY2tldCBBc3luY1NvY2tldDsKKyAgKiBPciB0aGUgY2xpZW50IGNhbiBzcGVjaWZ5IGl0cyBmYXZvcml0ZSBwb2xsIGNsYXNzIGFuZCBsb2NraW5nIGJlaGF2aW9yLgorICAqIFVzZSBvZiBJVm1kYlBvbGwgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHJlZ3VsYXIgc29ja2V0cyBhbmQgZm9yIEF0dGFjaC4KKyAgKi8KKy0jaW5jbHVkZSAicG9sbC5oIgorKyNpbmNsdWRlICJ2bV9wb2xsLmgiCisgc3RydWN0IElWbWRiUG9sbDsKKyB0eXBlZGVmIHN0cnVjdCBBc3luY1NvY2tldFBvbGxQYXJhbXMgeworICAgIGludCBmbGFnczsgICAgICAgICAgICAgICAvKiBEZWZhdWx0IDAsIG9ubHkgUE9MTF9GTEFHX05PX0JVTEwgaXMgdmFsaWQgKi8KK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3BvbGwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvaW5jbHVkZS9wb2xsLmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDMyNCArMCwwIEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqIENvcHlyaWdodCAoQykgMTk5OC0yMDE2IFZNd2FyZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLSAqCistICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKy0gKiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHZlcnNpb24gMi4xIGFuZCBubyBsYXRlciB2ZXJzaW9uLgorLSAqCistICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorLSAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCistICogb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIExlc3NlciBHTlUgR2VuZXJhbCBQdWJsaWMKKy0gKiBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorLSAqIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EuCistICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uCistICogRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlICh0aGUgIkxpY2Vuc2UiKSB2ZXJzaW9uIDEuMAorLSAqIGFuZCBubyBsYXRlciB2ZXJzaW9uLiAgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4KKy0gKiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCistICoKKy0gKiBZb3UgY2FuIG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy0gKiAgICAgICAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvY2RkbDEucGhwCistICoKKy0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKKy0gKiBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLQorLSNpZm5kZWYgX1BPTExfSF8KKy0jZGVmaW5lIF9QT0xMX0hfCistCistI2RlZmluZSBJTkNMVURFX0FMTE9XX1VTRVJMRVZFTAorLSNkZWZpbmUgSU5DTFVERV9BTExPV19WTUNPUkUKKy0jaW5jbHVkZSAiaW5jbHVkZUNoZWNrLmgiCistCistI2luY2x1ZGUgInZtX2Jhc2ljX3R5cGVzLmgiCistI2luY2x1ZGUgInZtX2Jhc2ljX2RlZnMuaCIKKy0jaW5jbHVkZSAidm13YXJlLmgiCistI2luY2x1ZGUgInVzZXJsb2NrLmgiCistCistI2lmZGVmIF9XSU4zMgorLSNkZWZpbmUgSFogMTAwCistI2VsaWYgZGVmaW5lZCBsaW51eAorLSNpbmNsdWRlIDxhc20vcGFyYW0uaD4KKy0jZWxpZiBfX0FQUExFX18KKy0jaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CistLyoKKy0gKiBPbGQgU0RLcyBkb24ndCBkZWZpbmUgVEFSR0VUX09TX0lQSE9ORSBhdCBhbGwuCistICogTmV3IG9uZXMgZGVmaW5lIGl0IHRvIDAgb24gTWFjIE9TIFgsIDEgb24gaU9TLgorLSAqLworLSNpZiAhZGVmaW5lZChUQVJHRVRfT1NfSVBIT05FKSB8fCBUQVJHRVRfT1NfSVBIT05FID09IDAKKy0jaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorLSNlbmRpZgorLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorLSNkZWZpbmUgSFogMTAwCistI2VuZGlmCistI2lmZGVmIF9fQU5EUk9JRF9fCistLyoKKy0gKiA8cG9sbC5oPiBvZiBhbmRyb2lkIHNob3VsZCBiZSBpbmNsdWRlZCwgYnV0IGl0cyBuYW1lIGlzIHNhbWUKKy0gKiB3aXRoIHRoaXMgZmlsZS4gU28gaXRzIGNvbnRlbnQgaXMgcHV0IGhlcmUgdG8gYXZvaWQgY29uZmxpY3QuCistICovCistI2luY2x1ZGUgPGFzbS9wb2xsLmg+CistI2RlZmluZSBIWiAxMDAKKy10eXBlZGVmIHVuc2lnbmVkIGludCAgbmZkc190OworLWludCBwb2xsKHN0cnVjdCBwb2xsZmQgKiwgbmZkc190LCBsb25nKTsKKy0jZW5kaWYKKy0KKy0KKy0vKgorLSAqIFBvbGwgZXZlbnQgdHlwZXM6IGVhY2ggdHlwZSBoYXMgYSBkaWZmZXJlbnQgcmVhc29uIGZvciBmaXJpbmcsCistICogb3IgY29uZGl0aW9uIHRoYXQgbXVzdCBiZSBtZXQgYmVmb3JlIGZpcmluZy4KKy0gKi8KKy0KKy10eXBlZGVmIGVudW0geworLSAgIC8qCistICAgICogQWN0dWFsIFBvbGwgcXVldWUgdHlwZXMgYWdhaW5zdCB3aGljaCB5b3UgY2FuIHJlZ2lzdGVyIGNhbGxiYWNrcy4KKy0gICAgKi8KKy0gICBQT0xMX1ZJUlRVQUxSRUFMVElNRSA9IC0xLCAvKiBOZWdhdGl2ZSBiZWNhdXNlIGl0IGRvZXNuJ3QgaGF2ZSBpdHMgb3duIFEgKi8KKy0gICBQT0xMX1ZUSU1FID0gMCwKKy0gICBQT0xMX1JFQUxUSU1FLAorLSAgIFBPTExfREVWSUNFLAorLSAgIFBPTExfTUFJTl9MT09QLAorLSAgIFBPTExfTlVNX1FVRVVFUworLX0gUG9sbEV2ZW50VHlwZTsKKy0KKy0KKy0vKgorLSAqIENsYXNzZXMgb2YgZXZlbnRzCistICoKKy0gKiBUaGVzZSBhcmUgdGhlIHByZWRlZmluZWQgY2xhc3Nlcy4gIE1vcmUgY2FuIGJlIGRlY2xhcmVkCistICogd2l0aCBQb2xsX0FsbG9jQ2xhc3MoKS4KKy0gKi8KKy0KKy10eXBlZGVmIGVudW0gUG9sbENsYXNzIHsKKy0gICBQT0xMX0NMQVNTX01BSU4sCistICAgUE9MTF9DTEFTU19QQVVTRSwKKy0gICBQT0xMX0NMQVNTX0lQQywKKy0gICBQT0xMX0NMQVNTX0NQVCwKKy0gICBQT0xMX0NMQVNTX01LUywKKy0gICBQT0xMX0ZJWEVEX0NMQVNTRVMsCistICAgUE9MTF9NQVhfQ0xBU1NFUyA9IDMyMCAvKiBTaXplIGVudW0gdG8gbWF4aW11bSAqLworLX0gUG9sbENsYXNzOworLQorLQorLS8qCistICogRWFjaCBjYWxsYmFjayBpcyByZWdpc3RlcmVkIGluIGEgc2V0IG9mIGNsYXNzZXMKKy0gKi8KKy0KKy10eXBlZGVmIHN0cnVjdCBQb2xsQ2xhc3NTZXQgeworLSAgIC8qIFR5cGUgaXMgdWludHB0cl90IHRvIGdpdmUgYmVzdCAzMi82NC1iaXQgY29kZS4gKi8KKy0jZGVmaW5lIF9QT0xMX0VMRU1TSVpFIChzaXplb2YgKHVpbnRwdHJfdCkgKiA4KQorLSAgIHVpbnRwdHJfdCBiaXRzW0NFSUxJTkcoUE9MTF9NQVhfQ0xBU1NFUywgX1BPTExfRUxFTVNJWkUpXTsKKy19IFBvbGxDbGFzc1NldDsKKy0KKy0vKiBBbiBlbXB0eSBQb2xsQ2xhc3NTZXQuICovCistc3RhdGljIElOTElORSBQb2xsQ2xhc3NTZXQKKy1Qb2xsQ2xhc3NTZXRfRW1wdHkodm9pZCkKKy17CistICAgUG9sbENsYXNzU2V0IHNldCA9IHsgeyAwIH0gfTsKKy0gICByZXR1cm4gc2V0OworLX0KKy0KKy0vKiBBIFBvbGxDbGFzc1NldCB3aXRoIHRoZSBzaW5nbGUgbWVtYmVyLiAqLworLXN0YXRpYyBJTkxJTkUgUG9sbENsYXNzU2V0CistUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQb2xsQ2xhc3MgYykKKy17CistICAgUG9sbENsYXNzU2V0IHMgPSBQb2xsQ2xhc3NTZXRfRW1wdHkoKTsKKy0KKy0gICBBU1NFUlRfT05fQ09NUElMRShzaXplb2Ygcy5iaXRzWzBdICogOCA9PSBfUE9MTF9FTEVNU0laRSk7IC8qIFNpemUgY29ycmVjdCAqLworLSAgIEFTU0VSVF9PTl9DT01QSUxFKChfUE9MTF9FTEVNU0laRSAmIChfUE9MTF9FTEVNU0laRSAtIDEpKSA9PSAwKTsgLyogcG93ZXIgb2YgMiAqLworLSAgIEFTU0VSVF9PTl9DT01QSUxFKFBPTExfTUFYX0NMQVNTRVMgPD0gQVJSQVlTSVpFKHMuYml0cykgKiBfUE9MTF9FTEVNU0laRSk7CistICAgQVNTRVJUKGMgPCBQT0xMX01BWF9DTEFTU0VTKTsKKy0KKy0gICBzLmJpdHNbYyAvIF9QT0xMX0VMRU1TSVpFXSA9IENPTlNUMzI2NFUoMSkgPDwgKGMgJSBfUE9MTF9FTEVNU0laRSk7CistICAgcmV0dXJuIHM7CistfQorLQorLS8qIENvbWJpbmUgdHdvIFBvbGxDbGFzc1NldHMuICovCistc3RhdGljIElOTElORSBQb2xsQ2xhc3NTZXQKKy1Qb2xsQ2xhc3NTZXRfVW5pb24oUG9sbENsYXNzU2V0IGxocywgUG9sbENsYXNzU2V0IHJocykKKy17CistICAgUG9sbENsYXNzU2V0IHU7CistICAgdW5zaWduZWQgaTsKKy0KKy0gICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlTSVpFKHUuYml0cyk7IGkrKykgeworLSAgICAgIHUuYml0c1tpXSA9IGxocy5iaXRzW2ldIHwgcmhzLmJpdHNbaV07CistICAgfQorLSAgIHJldHVybiB1OworLX0KKy0KKy0vKiBBZGQgc2luZ2xlIGNsYXNzIHRvIFBvbGxDbGFzc1NldC4gKi8KKy1zdGF0aWMgSU5MSU5FIFBvbGxDbGFzc1NldAorLVBvbGxDbGFzc1NldF9JbmNsdWRlKFBvbGxDbGFzc1NldCBzZXQsIFBvbGxDbGFzcyBjKQorLXsKKy0gICByZXR1cm4gUG9sbENsYXNzU2V0X1VuaW9uKHNldCwgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihjKSk7CistfQorLQorLQorLSNkZWZpbmUgUE9MTF9DU19NQUlOICAgIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19NQUlOKQorLSNkZWZpbmUgUE9MTF9DU19QQVVTRSAgIFBvbGxDbGFzc1NldF9VbmlvbihQT0xMX0NTX01BSU4sICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19QQVVTRSkpCistI2RlZmluZSBQT0xMX0NTX0NQVCAgICAgUG9sbENsYXNzU2V0X1VuaW9uKFBPTExfQ1NfUEFVU0UsICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX0NQVCkpCistI2RlZmluZSBQT0xMX0NTX0lQQyAgICAgUG9sbENsYXNzU2V0X1VuaW9uKFBPTExfQ1NfQ1BULCAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX0lQQykpCistI2RlZmluZSBQT0xMX0NTX1ZNREIgICAgUE9MTF9DU19QQVVTRSAvKiBQT0xMX0NMQVNTX1ZNREIgaXMgcmV0aXJlZCAqLworLSNkZWZpbmUgUE9MTF9DU19NS1MJUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX01LUykKKy0vKiAKKy0gKiBEQU5HRVIuICBZb3UgZG9uJ3QgbmVlZCBQT0xMX0NTX0FMV0FZUy4gIFJlYWxseS4gIFNvIGRvbid0IHVzZSBpdC4KKy0gKi8KKy0jZGVmaW5lIFBPTExfQ1NfQUxXQVlTICBQb2xsQ2xhc3NTZXRfVW5pb24oUE9MTF9DU19DUFQsIFBPTExfQ1NfSVBDKQorLQorLS8qCistICogUG9sbCBjbGFzcy1zZXQgdGF4b25vbXk6CistICogUE9MTF9DU19NQUlOCistICogICAgLSBVbmxlc3MgeW91IE5FRUQgYW5vdGhlciBjbGFzcywgdXNlIFBPTExfQ1NfTUFJTi4KKy0gKiBQT0xMX0NTX1BBVVNFCistICogICAgLSBGb3IgY2FsbGJhY2tzIHRoYXQgbXVzdCBvY2N1ciBldmVuIGlmIHRoZSBndWVzdCBpcyBwYXVzZWQuCistICogICAgICBNb3N0IFZNREIgb3IgRm91bmRyeSBjb21tYW5kcyBhcmUgaW4gdGhpcyBjYXRlZ29yeS4KKy0gKiBQT0xMX0NTX0NQVAorLSAqICAgIC0gT25seSBmb3IgY2FsbGJhY2tzIHdoaWNoIGNhbiB0cmlnZ2VyIGludGVybWVkaWF0ZSBDaGVja3BvaW50IAorLSAqICAgICAgdHJhbnNpdGlvbnMuCistICogICAgICBUaGUgT05MWSBzdWNoIGNhbGxiYWNrIGlzIE1pZ3JhdGUuCistICogUE9MTF9DU19JUEMKKy0gKiAgICAtIE9ubHkgZm9yIGNhbGxiYWNrcyB3aGljaCBjYW4gY29udGFpbiBNc2dfKFBvc3R8SGludHxRdWVzdGlvbikgCistICogICAgICByZXNwb25zZXMsIGFuZCBmb3Igc2lnbmFsIGhhbmRsZXJzICh3aHkpPworLSAqICAgICAgVmlnb3IsIFZNREIsIGFuZCBGb3VuZHJ5IGNhbiBjb250YWluIE1zZ18qIHJlc3BvbnNlcy4KKy0gKiBQT0xMX0NTX01LUworLSAqICAgIC0gQ2FsbGJhY2sgcnVucyBpbiBNS1MgdGhyZWFkLgorLSAqIFBPTExfQ1NfQUxXQVlTCistICogICAgLSBPbmx5IGZvciBldmVudHMgdGhhdCBtdXN0IGJlIHByb2Nlc3NlZCBpbW1lZGlhdGVseS4KKy0gKiAgICAgIFRoZSBPTkxZIHN1Y2ggY2FsbGJhY2sgaXMgT3ZoZE1lbVZteFNpemVDaGVjay4KKy0gKi8KKy0KKy0KKy0vKgorLSAqIFBvbGxfQ2FsbGJhY2sgZmxhZ3MKKy0gKi8KKy0KKy0jZGVmaW5lIFBPTExfRkxBR19QRVJJT0RJQwkJMHgwMSAgICAvLyBrZWVwIGFmdGVyIGZpcmluZworLSNkZWZpbmUgUE9MTF9GTEFHX1JFTU9WRV9BVF9QT1dFUk9GRgkweDAyICAJLy8gc2VsZi1leHBsYW5hdG9yeQorLSNkZWZpbmUgUE9MTF9GTEFHX1JFQUQJCQkweDA0CS8vIGRldmljZSBpcyByZWFkeSBmb3IgcmVhZGluZworLSNkZWZpbmUgUE9MTF9GTEFHX1dSSVRFCQkJMHgwOAkvLyBkZXZpY2UgaXMgcmVhZHkgZm9yIHdyaXRpbmcKKy0jZGVmaW5lIFBPTExfRkxBR19TT0NLRVQgICAgICAgICAgICAgICAgMHgxMCAgICAvLyBkZXZpY2UgaXMgYSBXaW5kb3dzIHNvY2tldAorLSNkZWZpbmUgUE9MTF9GTEFHX05PX0JVTEwgICAgICAgICAgICAgICAweDIwICAgIC8vIGNhbGxiYWNrIGRvZXMgaXRzIG93biBsb2NraW5nCistI2RlZmluZSBQT0xMX0ZMQUdfV0lOU09DSyAgICAgICAgICAgICAgIDB4NDAgICAgLy8gV2luc29jayBzdHlsZSB3cml0ZSBldmVudHMKKy0jZGVmaW5lIFBPTExfRkxBR19GRCAgICAgICAgICAgICAgICAgICAgMHg4MCAgICAvLyBkZXZpY2UgaXMgYSBXaW5kb3dzIGZpbGUgZGVzY3JpcHRvci4KKy0jZGVmaW5lIFBPTExfRkxBR19BQ0NFUFRfSU5WQUxJRF9GRFMgICAgMHgxMDAgICAvLyBGb3IgYnJva2VuIDNyZCBwYXJ0eSBsaWJzLCBlLmcuIGN1cmwKKy0jZGVmaW5lIFBPTExfRkxBR19USFVOS19UT19XTkQgICAgICAgICAgMHgyMDAgICAvLyB0aHVuayBjYWxsYmFjayB0byB3aW5kb3cgbWVzc2FnZSBsb29wCistCistCistLyoKKy0gKiBBZHZpc29yeSBtaW5pbXVtIHRpbWUgcGVyaW9kLgorLSAqIFVzZXJzIHRoYXQgd2FudCB0aGUgZmFzdGVzdCBydW5uaW5nIHJlYWwtdGltZSBwb2xsCistICogc2hvdWxkIHVzZSBUSUNLU19UT19VU0VDUygxKS4KKy0gKi8KKy0KKy0jZGVmaW5lIFRJQ0tTX1RPX1VTRUNTKF94KSAoKF94KSAqICgxMDAwMDAwIC8gSFopKQorLSNkZWZpbmUgVVNFQ1NfVE9fVElDS1MoX3gpICgoX3gpIC8gKDEwMDAwMDAgLyBIWikpCistCistCistdHlwZWRlZiB2b2lkICgqUG9sbGVyRnVuY3Rpb24pKHZvaWQgKmNsaWVudERhdGEpOworLXR5cGVkZWYgdm9pZCAoKlBvbGxlckZpcmVXcmFwcGVyKShQb2xsZXJGdW5jdGlvbiBmdW5jLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpmdW5jRGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqd3JhcHBlckRhdGEpOworLXR5cGVkZWYgQm9vbCAoKlBvbGxlckVycm9yRm4pKGNvbnN0IGNoYXIgKmVycm9yU3RyKTsKKy0KKy0vKgorLSAqIEluaXRpYWxpc2VyczoKKy0gKgorLSAqICAgICAgRm9yIHRoZSBzYWtlIG9mIGNvbnZlbmllbmNlLCB3ZSBkZWNsYXJlIHRoZSBpbml0aWFsaXNlcnMKKy0gKiAgICAgIGZvciBjdXN0b20gaW1wbG1lbnRhdGlvbnMgaGVyZSwgZXZlbiB0aG91Z2ggdGhlIGFjdHVhbAorLSAqICAgICAgaW1wbGVtZW50YXRpb25zIGFyZSBkaXN0aW5jdCBmcm9tIHRoZSBjb3JlIHBvbGwgY29kZS4KKy0gKi8KKy0KKy10eXBlZGVmIHN0cnVjdCBQb2xsT3B0aW9ucyB7CistICAgQm9vbCBsb2NrZWQ7ICAgICAgICAgICAvLyBVc2UgaW50ZXJuYWwgTVhVc2VyIGZvciBsb2NraW5nCistICAgQm9vbCBhbGxvd0Z1bGxRdWV1ZTsgICAvLyBEb24ndCBhc3NlcnQgd2hlbiBkZXZpY2UgZXZlbnQgcXVldWUgaXMgZnVsbC4KKy0gICBWVGhyZWFkSUQgd2luZG93c01zZ1RocmVhZDsgICAgICAgLy8gdGhyZWFkIHRoYXQgcHJvY2Vzc2VzIFdpbmRvd3MgbWVzc2FnZXMKKy0gICBQb2xsZXJGaXJlV3JhcHBlciBmaXJlV3JhcHBlckZuOyAgLy8gb3B0aW9uYWw7IG1heSBiZSB1c2VmdWwgZm9yIHN0YXRzCistICAgdm9pZCAqZmlyZVdyYXBwZXJEYXRhOyAvLyBvcHRpb25hbAorLSAgIFBvbGxlckVycm9yRm4gZXJyb3JGbjsgLy8gb3B0aW9uYWw7IGNhbGxlZCB1cG9uIHVucmVjb3ZlcmFibGUgZXJyb3IKKy19IFBvbGxPcHRpb25zOworLQorLQorLXZvaWQgUG9sbF9Jbml0RGVmYXVsdCh2b2lkKTsKKy12b2lkIFBvbGxfSW5pdERlZmF1bHRFeChjb25zdCBQb2xsT3B0aW9ucyAqb3B0cyk7Cistdm9pZCBQb2xsX0luaXRHdGsodm9pZCk7IC8vIE9uIHRvcCBvZiBnbGliIGZvciBMaW51eAorLXZvaWQgUG9sbF9Jbml0Q0Yodm9pZCk7ICAvLyBPbiB0b3Agb2YgQ29yZUZvdW5kYXRpb24gZm9yIE9TWAorLQorLQorLS8qCistICogRnVuY3Rpb25zCistICovCistaW50IFBvbGxfU29ja2V0UGFpcihCb29sIHZtY2ksIEJvb2wgc3RyZWFtLCBpbnQgZmRzWzJdKTsKKy12b2lkIFBvbGxfTG9vcChCb29sIGxvb3AsIEJvb2wgKmV4aXQsIFBvbGxDbGFzcyBjKTsKKy12b2lkIFBvbGxfTG9vcFRpbWVvdXQoQm9vbCBsb29wLCBCb29sICpleGl0LCBQb2xsQ2xhc3MgYywgaW50IHRpbWVvdXQpOworLUJvb2wgUG9sbF9Mb2NraW5nRW5hYmxlZCh2b2lkKTsKKy12b2lkIFBvbGxfRXhpdCh2b2lkKTsKKy0KKy0KKy0vKgorLSAqIFBvbGxfQ2FsbGJhY2sgYWRkcyBhIGNhbGxiYWNrIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhbiBpZGVudGljYWwgb25lIGV4aXN0cy4KKy0gKgorLSAqIExpa2V3aXNlLCBQb2xsX0NhbGxiYWNrUmVtb3ZlIHJlbW92ZXMgZXhhY3RseSBvbmUgY2FsbGJhY2suCistICovCistCistVk13YXJlU3RhdHVzIFBvbGxfQ2FsbGJhY2soUG9sbENsYXNzU2V0IGNsYXNzU2V0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsZXJGdW5jdGlvbiBmLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbEV2ZW50VHlwZSB0eXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxEZXZIYW5kbGUgaW5mbywgLy8gZmQvbWljcm9zZWMgZGVsYXkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBNWFVzZXJSZWNMb2NrICpsY2spOworLUJvb2wgUG9sbF9DYWxsYmFja1JlbW92ZShQb2xsQ2xhc3NTZXQgY2xhc3NTZXQsCistICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgUG9sbGVyRnVuY3Rpb24gZiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgUG9sbEV2ZW50VHlwZSB0eXBlKTsKKy1Cb29sIFBvbGxfQ2FsbGJhY2tSZW1vdmVPbmVCeUNCKFBvbGxDbGFzc1NldCBjbGFzc1NldCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxlckZ1bmN0aW9uIGYsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRXZlbnRUeXBlIHR5cGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqY2xpZW50RGF0YSk7CistCistdm9pZCBQb2xsX05vdGlmeUNoYW5nZShQb2xsQ2xhc3NTZXQgY2xhc3NTZXQpOworLQorLS8qCistICogV3JhcHBlcnMgZm9yIFBvbGxfQ2FsbGJhY2sgYW5kIFBvbGxfQ2FsbGJhY2tSZW1vdmUgdGhhdCBwcmVzZW50CistICogc2ltcGxlciBzdWJzZXRzIG9mIHRob3NlIGludGVyZmFjZXMuCistICovCistCistVk13YXJlU3RhdHVzIFBvbGxfQ0JfRGV2aWNlKFBvbGxlckZ1bmN0aW9uIGYsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxEZXZIYW5kbGUgZGV2aWNlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIHBlcmlvZGljKTsKKy0KKy1Cb29sIFBvbGxfQ0JfRGV2aWNlUmVtb3ZlKFBvbGxlckZ1bmN0aW9uIGYsCistICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBwZXJpb2RpYyk7CistCistCistVk13YXJlU3RhdHVzIFBvbGxfQ0JfUlRpbWUoUG9sbGVyRnVuY3Rpb24gZiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxheSwJLy8gbWljcm9zZWNvbmRzCistICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBwZXJpb2RpYywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBNWFVzZXJSZWNMb2NrICpsb2NrKTsKKy0KKy1Cb29sIFBvbGxfQ0JfUlRpbWVSZW1vdmUoUG9sbGVyRnVuY3Rpb24gZiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBwZXJpb2RpYyk7CistCistCistI2lmZGVmIF9XSU4zMgorLXZvaWQgUG9sbF9TZXRXaW5kb3dNZXNzYWdlUmVjaXBpZW50KEhXTkQgaFduZCwgVUlOVCBtc2csIEJvb2wgYWx3YXlzVGh1bmspOworLUJvb2wgUG9sbF9GaXJlV25kQ2FsbGJhY2sodm9pZCAqbHBhcmFtKTsKKy0jZW5kaWYKKy0KKy0jZW5kaWYgLy8gX1BPTExfSF8KK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3BvbGxJbXBsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2luY2x1ZGUvcG9sbEltcGwuaAorKysrIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvcG9sbEltcGwuaAorQEAgLTQ0LDcgKzQ0LDcgQEAKKyAjZGVmaW5lIElOQ0xVREVfQUxMT1dfVVNFUkxFVkVMCisgI2luY2x1ZGUgImluY2x1ZGVDaGVjay5oIgorIAorLSNpbmNsdWRlICJwb2xsLmgiCisrI2luY2x1ZGUgInZtX3BvbGwuaCIKKyAKKyAvKgorICAqIFBvbGxJbXBsOgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvdm1fcG9sbC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCisrKysgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS92bV9wb2xsLmgKK0BAIC0wLDAgKzEsMzI0IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqIENvcHlyaWdodCAoQykgMTk5OC0yMDE2IFZNd2FyZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKysgKiBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHZlcnNpb24gMi4xIGFuZCBubyBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCisrICogb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIExlc3NlciBHTlUgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorKyAqIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EuCisrICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uCisrICogRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlICh0aGUgIkxpY2Vuc2UiKSB2ZXJzaW9uIDEuMAorKyAqIGFuZCBubyBsYXRlciB2ZXJzaW9uLiAgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4KKysgKiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisrICoKKysgKiBZb3UgY2FuIG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKysgKiAgICAgICAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvY2RkbDEucGhwCisrICoKKysgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKKysgKiBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisrICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKworKyNpZm5kZWYgX1BPTExfSF8KKysjZGVmaW5lIF9QT0xMX0hfCisrCisrI2RlZmluZSBJTkNMVURFX0FMTE9XX1VTRVJMRVZFTAorKyNkZWZpbmUgSU5DTFVERV9BTExPV19WTUNPUkUKKysjaW5jbHVkZSAiaW5jbHVkZUNoZWNrLmgiCisrCisrI2luY2x1ZGUgInZtX2Jhc2ljX3R5cGVzLmgiCisrI2luY2x1ZGUgInZtX2Jhc2ljX2RlZnMuaCIKKysjaW5jbHVkZSAidm13YXJlLmgiCisrI2luY2x1ZGUgInVzZXJsb2NrLmgiCisrCisrI2lmZGVmIF9XSU4zMgorKyNkZWZpbmUgSFogMTAwCisrI2VsaWYgZGVmaW5lZCBsaW51eAorKyNpbmNsdWRlIDxhc20vcGFyYW0uaD4KKysjZWxpZiBfX0FQUExFX18KKysjaW5jbHVkZSA8VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisrLyoKKysgKiBPbGQgU0RLcyBkb24ndCBkZWZpbmUgVEFSR0VUX09TX0lQSE9ORSBhdCBhbGwuCisrICogTmV3IG9uZXMgZGVmaW5lIGl0IHRvIDAgb24gTWFjIE9TIFgsIDEgb24gaU9TLgorKyAqLworKyNpZiAhZGVmaW5lZChUQVJHRVRfT1NfSVBIT05FKSB8fCBUQVJHRVRfT1NfSVBIT05FID09IDAKKysjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorKyNlbmRpZgorKyNpbmNsdWRlIDxzeXMvcG9sbC5oPgorKyNkZWZpbmUgSFogMTAwCisrI2VuZGlmCisrI2lmZGVmIF9fQU5EUk9JRF9fCisrLyoKKysgKiA8cG9sbC5oPiBvZiBhbmRyb2lkIHNob3VsZCBiZSBpbmNsdWRlZCwgYnV0IGl0cyBuYW1lIGlzIHNhbWUKKysgKiB3aXRoIHRoaXMgZmlsZS4gU28gaXRzIGNvbnRlbnQgaXMgcHV0IGhlcmUgdG8gYXZvaWQgY29uZmxpY3QuCisrICovCisrI2luY2x1ZGUgPGFzbS9wb2xsLmg+CisrI2RlZmluZSBIWiAxMDAKKyt0eXBlZGVmIHVuc2lnbmVkIGludCAgbmZkc190OworK2ludCBwb2xsKHN0cnVjdCBwb2xsZmQgKiwgbmZkc190LCBsb25nKTsKKysjZW5kaWYKKysKKysKKysvKgorKyAqIFBvbGwgZXZlbnQgdHlwZXM6IGVhY2ggdHlwZSBoYXMgYSBkaWZmZXJlbnQgcmVhc29uIGZvciBmaXJpbmcsCisrICogb3IgY29uZGl0aW9uIHRoYXQgbXVzdCBiZSBtZXQgYmVmb3JlIGZpcmluZy4KKysgKi8KKysKKyt0eXBlZGVmIGVudW0geworKyAgIC8qCisrICAgICogQWN0dWFsIFBvbGwgcXVldWUgdHlwZXMgYWdhaW5zdCB3aGljaCB5b3UgY2FuIHJlZ2lzdGVyIGNhbGxiYWNrcy4KKysgICAgKi8KKysgICBQT0xMX1ZJUlRVQUxSRUFMVElNRSA9IC0xLCAvKiBOZWdhdGl2ZSBiZWNhdXNlIGl0IGRvZXNuJ3QgaGF2ZSBpdHMgb3duIFEgKi8KKysgICBQT0xMX1ZUSU1FID0gMCwKKysgICBQT0xMX1JFQUxUSU1FLAorKyAgIFBPTExfREVWSUNFLAorKyAgIFBPTExfTUFJTl9MT09QLAorKyAgIFBPTExfTlVNX1FVRVVFUworK30gUG9sbEV2ZW50VHlwZTsKKysKKysKKysvKgorKyAqIENsYXNzZXMgb2YgZXZlbnRzCisrICoKKysgKiBUaGVzZSBhcmUgdGhlIHByZWRlZmluZWQgY2xhc3Nlcy4gIE1vcmUgY2FuIGJlIGRlY2xhcmVkCisrICogd2l0aCBQb2xsX0FsbG9jQ2xhc3MoKS4KKysgKi8KKysKKyt0eXBlZGVmIGVudW0gUG9sbENsYXNzIHsKKysgICBQT0xMX0NMQVNTX01BSU4sCisrICAgUE9MTF9DTEFTU19QQVVTRSwKKysgICBQT0xMX0NMQVNTX0lQQywKKysgICBQT0xMX0NMQVNTX0NQVCwKKysgICBQT0xMX0NMQVNTX01LUywKKysgICBQT0xMX0ZJWEVEX0NMQVNTRVMsCisrICAgUE9MTF9NQVhfQ0xBU1NFUyA9IDMyMCAvKiBTaXplIGVudW0gdG8gbWF4aW11bSAqLworK30gUG9sbENsYXNzOworKworKworKy8qCisrICogRWFjaCBjYWxsYmFjayBpcyByZWdpc3RlcmVkIGluIGEgc2V0IG9mIGNsYXNzZXMKKysgKi8KKysKKyt0eXBlZGVmIHN0cnVjdCBQb2xsQ2xhc3NTZXQgeworKyAgIC8qIFR5cGUgaXMgdWludHB0cl90IHRvIGdpdmUgYmVzdCAzMi82NC1iaXQgY29kZS4gKi8KKysjZGVmaW5lIF9QT0xMX0VMRU1TSVpFIChzaXplb2YgKHVpbnRwdHJfdCkgKiA4KQorKyAgIHVpbnRwdHJfdCBiaXRzW0NFSUxJTkcoUE9MTF9NQVhfQ0xBU1NFUywgX1BPTExfRUxFTVNJWkUpXTsKKyt9IFBvbGxDbGFzc1NldDsKKysKKysvKiBBbiBlbXB0eSBQb2xsQ2xhc3NTZXQuICovCisrc3RhdGljIElOTElORSBQb2xsQ2xhc3NTZXQKKytQb2xsQ2xhc3NTZXRfRW1wdHkodm9pZCkKKyt7CisrICAgUG9sbENsYXNzU2V0IHNldCA9IHsgeyAwIH0gfTsKKysgICByZXR1cm4gc2V0OworK30KKysKKysvKiBBIFBvbGxDbGFzc1NldCB3aXRoIHRoZSBzaW5nbGUgbWVtYmVyLiAqLworK3N0YXRpYyBJTkxJTkUgUG9sbENsYXNzU2V0CisrUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQb2xsQ2xhc3MgYykKKyt7CisrICAgUG9sbENsYXNzU2V0IHMgPSBQb2xsQ2xhc3NTZXRfRW1wdHkoKTsKKysKKysgICBBU1NFUlRfT05fQ09NUElMRShzaXplb2Ygcy5iaXRzWzBdICogOCA9PSBfUE9MTF9FTEVNU0laRSk7IC8qIFNpemUgY29ycmVjdCAqLworKyAgIEFTU0VSVF9PTl9DT01QSUxFKChfUE9MTF9FTEVNU0laRSAmIChfUE9MTF9FTEVNU0laRSAtIDEpKSA9PSAwKTsgLyogcG93ZXIgb2YgMiAqLworKyAgIEFTU0VSVF9PTl9DT01QSUxFKFBPTExfTUFYX0NMQVNTRVMgPD0gQVJSQVlTSVpFKHMuYml0cykgKiBfUE9MTF9FTEVNU0laRSk7CisrICAgQVNTRVJUKGMgPCBQT0xMX01BWF9DTEFTU0VTKTsKKysKKysgICBzLmJpdHNbYyAvIF9QT0xMX0VMRU1TSVpFXSA9IENPTlNUMzI2NFUoMSkgPDwgKGMgJSBfUE9MTF9FTEVNU0laRSk7CisrICAgcmV0dXJuIHM7CisrfQorKworKy8qIENvbWJpbmUgdHdvIFBvbGxDbGFzc1NldHMuICovCisrc3RhdGljIElOTElORSBQb2xsQ2xhc3NTZXQKKytQb2xsQ2xhc3NTZXRfVW5pb24oUG9sbENsYXNzU2V0IGxocywgUG9sbENsYXNzU2V0IHJocykKKyt7CisrICAgUG9sbENsYXNzU2V0IHU7CisrICAgdW5zaWduZWQgaTsKKysKKysgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlTSVpFKHUuYml0cyk7IGkrKykgeworKyAgICAgIHUuYml0c1tpXSA9IGxocy5iaXRzW2ldIHwgcmhzLmJpdHNbaV07CisrICAgfQorKyAgIHJldHVybiB1OworK30KKysKKysvKiBBZGQgc2luZ2xlIGNsYXNzIHRvIFBvbGxDbGFzc1NldC4gKi8KKytzdGF0aWMgSU5MSU5FIFBvbGxDbGFzc1NldAorK1BvbGxDbGFzc1NldF9JbmNsdWRlKFBvbGxDbGFzc1NldCBzZXQsIFBvbGxDbGFzcyBjKQorK3sKKysgICByZXR1cm4gUG9sbENsYXNzU2V0X1VuaW9uKHNldCwgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihjKSk7CisrfQorKworKworKyNkZWZpbmUgUE9MTF9DU19NQUlOICAgIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19NQUlOKQorKyNkZWZpbmUgUE9MTF9DU19QQVVTRSAgIFBvbGxDbGFzc1NldF9VbmlvbihQT0xMX0NTX01BSU4sICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19QQVVTRSkpCisrI2RlZmluZSBQT0xMX0NTX0NQVCAgICAgUG9sbENsYXNzU2V0X1VuaW9uKFBPTExfQ1NfUEFVU0UsICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX0NQVCkpCisrI2RlZmluZSBQT0xMX0NTX0lQQyAgICAgUG9sbENsYXNzU2V0X1VuaW9uKFBPTExfQ1NfQ1BULCAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX0lQQykpCisrI2RlZmluZSBQT0xMX0NTX1ZNREIgICAgUE9MTF9DU19QQVVTRSAvKiBQT0xMX0NMQVNTX1ZNREIgaXMgcmV0aXJlZCAqLworKyNkZWZpbmUgUE9MTF9DU19NS1MJUG9sbENsYXNzU2V0X1NpbmdsZXRvbihQT0xMX0NMQVNTX01LUykKKysvKiAKKysgKiBEQU5HRVIuICBZb3UgZG9uJ3QgbmVlZCBQT0xMX0NTX0FMV0FZUy4gIFJlYWxseS4gIFNvIGRvbid0IHVzZSBpdC4KKysgKi8KKysjZGVmaW5lIFBPTExfQ1NfQUxXQVlTICBQb2xsQ2xhc3NTZXRfVW5pb24oUE9MTF9DU19DUFQsIFBPTExfQ1NfSVBDKQorKworKy8qCisrICogUG9sbCBjbGFzcy1zZXQgdGF4b25vbXk6CisrICogUE9MTF9DU19NQUlOCisrICogICAgLSBVbmxlc3MgeW91IE5FRUQgYW5vdGhlciBjbGFzcywgdXNlIFBPTExfQ1NfTUFJTi4KKysgKiBQT0xMX0NTX1BBVVNFCisrICogICAgLSBGb3IgY2FsbGJhY2tzIHRoYXQgbXVzdCBvY2N1ciBldmVuIGlmIHRoZSBndWVzdCBpcyBwYXVzZWQuCisrICogICAgICBNb3N0IFZNREIgb3IgRm91bmRyeSBjb21tYW5kcyBhcmUgaW4gdGhpcyBjYXRlZ29yeS4KKysgKiBQT0xMX0NTX0NQVAorKyAqICAgIC0gT25seSBmb3IgY2FsbGJhY2tzIHdoaWNoIGNhbiB0cmlnZ2VyIGludGVybWVkaWF0ZSBDaGVja3BvaW50IAorKyAqICAgICAgdHJhbnNpdGlvbnMuCisrICogICAgICBUaGUgT05MWSBzdWNoIGNhbGxiYWNrIGlzIE1pZ3JhdGUuCisrICogUE9MTF9DU19JUEMKKysgKiAgICAtIE9ubHkgZm9yIGNhbGxiYWNrcyB3aGljaCBjYW4gY29udGFpbiBNc2dfKFBvc3R8SGludHxRdWVzdGlvbikgCisrICogICAgICByZXNwb25zZXMsIGFuZCBmb3Igc2lnbmFsIGhhbmRsZXJzICh3aHkpPworKyAqICAgICAgVmlnb3IsIFZNREIsIGFuZCBGb3VuZHJ5IGNhbiBjb250YWluIE1zZ18qIHJlc3BvbnNlcy4KKysgKiBQT0xMX0NTX01LUworKyAqICAgIC0gQ2FsbGJhY2sgcnVucyBpbiBNS1MgdGhyZWFkLgorKyAqIFBPTExfQ1NfQUxXQVlTCisrICogICAgLSBPbmx5IGZvciBldmVudHMgdGhhdCBtdXN0IGJlIHByb2Nlc3NlZCBpbW1lZGlhdGVseS4KKysgKiAgICAgIFRoZSBPTkxZIHN1Y2ggY2FsbGJhY2sgaXMgT3ZoZE1lbVZteFNpemVDaGVjay4KKysgKi8KKysKKysKKysvKgorKyAqIFBvbGxfQ2FsbGJhY2sgZmxhZ3MKKysgKi8KKysKKysjZGVmaW5lIFBPTExfRkxBR19QRVJJT0RJQwkJMHgwMSAgICAvLyBrZWVwIGFmdGVyIGZpcmluZworKyNkZWZpbmUgUE9MTF9GTEFHX1JFTU9WRV9BVF9QT1dFUk9GRgkweDAyICAJLy8gc2VsZi1leHBsYW5hdG9yeQorKyNkZWZpbmUgUE9MTF9GTEFHX1JFQUQJCQkweDA0CS8vIGRldmljZSBpcyByZWFkeSBmb3IgcmVhZGluZworKyNkZWZpbmUgUE9MTF9GTEFHX1dSSVRFCQkJMHgwOAkvLyBkZXZpY2UgaXMgcmVhZHkgZm9yIHdyaXRpbmcKKysjZGVmaW5lIFBPTExfRkxBR19TT0NLRVQgICAgICAgICAgICAgICAgMHgxMCAgICAvLyBkZXZpY2UgaXMgYSBXaW5kb3dzIHNvY2tldAorKyNkZWZpbmUgUE9MTF9GTEFHX05PX0JVTEwgICAgICAgICAgICAgICAweDIwICAgIC8vIGNhbGxiYWNrIGRvZXMgaXRzIG93biBsb2NraW5nCisrI2RlZmluZSBQT0xMX0ZMQUdfV0lOU09DSyAgICAgICAgICAgICAgIDB4NDAgICAgLy8gV2luc29jayBzdHlsZSB3cml0ZSBldmVudHMKKysjZGVmaW5lIFBPTExfRkxBR19GRCAgICAgICAgICAgICAgICAgICAgMHg4MCAgICAvLyBkZXZpY2UgaXMgYSBXaW5kb3dzIGZpbGUgZGVzY3JpcHRvci4KKysjZGVmaW5lIFBPTExfRkxBR19BQ0NFUFRfSU5WQUxJRF9GRFMgICAgMHgxMDAgICAvLyBGb3IgYnJva2VuIDNyZCBwYXJ0eSBsaWJzLCBlLmcuIGN1cmwKKysjZGVmaW5lIFBPTExfRkxBR19USFVOS19UT19XTkQgICAgICAgICAgMHgyMDAgICAvLyB0aHVuayBjYWxsYmFjayB0byB3aW5kb3cgbWVzc2FnZSBsb29wCisrCisrCisrLyoKKysgKiBBZHZpc29yeSBtaW5pbXVtIHRpbWUgcGVyaW9kLgorKyAqIFVzZXJzIHRoYXQgd2FudCB0aGUgZmFzdGVzdCBydW5uaW5nIHJlYWwtdGltZSBwb2xsCisrICogc2hvdWxkIHVzZSBUSUNLU19UT19VU0VDUygxKS4KKysgKi8KKysKKysjZGVmaW5lIFRJQ0tTX1RPX1VTRUNTKF94KSAoKF94KSAqICgxMDAwMDAwIC8gSFopKQorKyNkZWZpbmUgVVNFQ1NfVE9fVElDS1MoX3gpICgoX3gpIC8gKDEwMDAwMDAgLyBIWikpCisrCisrCisrdHlwZWRlZiB2b2lkICgqUG9sbGVyRnVuY3Rpb24pKHZvaWQgKmNsaWVudERhdGEpOworK3R5cGVkZWYgdm9pZCAoKlBvbGxlckZpcmVXcmFwcGVyKShQb2xsZXJGdW5jdGlvbiBmdW5jLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpmdW5jRGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqd3JhcHBlckRhdGEpOworK3R5cGVkZWYgQm9vbCAoKlBvbGxlckVycm9yRm4pKGNvbnN0IGNoYXIgKmVycm9yU3RyKTsKKysKKysvKgorKyAqIEluaXRpYWxpc2VyczoKKysgKgorKyAqICAgICAgRm9yIHRoZSBzYWtlIG9mIGNvbnZlbmllbmNlLCB3ZSBkZWNsYXJlIHRoZSBpbml0aWFsaXNlcnMKKysgKiAgICAgIGZvciBjdXN0b20gaW1wbG1lbnRhdGlvbnMgaGVyZSwgZXZlbiB0aG91Z2ggdGhlIGFjdHVhbAorKyAqICAgICAgaW1wbGVtZW50YXRpb25zIGFyZSBkaXN0aW5jdCBmcm9tIHRoZSBjb3JlIHBvbGwgY29kZS4KKysgKi8KKysKKyt0eXBlZGVmIHN0cnVjdCBQb2xsT3B0aW9ucyB7CisrICAgQm9vbCBsb2NrZWQ7ICAgICAgICAgICAvLyBVc2UgaW50ZXJuYWwgTVhVc2VyIGZvciBsb2NraW5nCisrICAgQm9vbCBhbGxvd0Z1bGxRdWV1ZTsgICAvLyBEb24ndCBhc3NlcnQgd2hlbiBkZXZpY2UgZXZlbnQgcXVldWUgaXMgZnVsbC4KKysgICBWVGhyZWFkSUQgd2luZG93c01zZ1RocmVhZDsgICAgICAgLy8gdGhyZWFkIHRoYXQgcHJvY2Vzc2VzIFdpbmRvd3MgbWVzc2FnZXMKKysgICBQb2xsZXJGaXJlV3JhcHBlciBmaXJlV3JhcHBlckZuOyAgLy8gb3B0aW9uYWw7IG1heSBiZSB1c2VmdWwgZm9yIHN0YXRzCisrICAgdm9pZCAqZmlyZVdyYXBwZXJEYXRhOyAvLyBvcHRpb25hbAorKyAgIFBvbGxlckVycm9yRm4gZXJyb3JGbjsgLy8gb3B0aW9uYWw7IGNhbGxlZCB1cG9uIHVucmVjb3ZlcmFibGUgZXJyb3IKKyt9IFBvbGxPcHRpb25zOworKworKworK3ZvaWQgUG9sbF9Jbml0RGVmYXVsdCh2b2lkKTsKKyt2b2lkIFBvbGxfSW5pdERlZmF1bHRFeChjb25zdCBQb2xsT3B0aW9ucyAqb3B0cyk7Cisrdm9pZCBQb2xsX0luaXRHdGsodm9pZCk7IC8vIE9uIHRvcCBvZiBnbGliIGZvciBMaW51eAorK3ZvaWQgUG9sbF9Jbml0Q0Yodm9pZCk7ICAvLyBPbiB0b3Agb2YgQ29yZUZvdW5kYXRpb24gZm9yIE9TWAorKworKworKy8qCisrICogRnVuY3Rpb25zCisrICovCisraW50IFBvbGxfU29ja2V0UGFpcihCb29sIHZtY2ksIEJvb2wgc3RyZWFtLCBpbnQgZmRzWzJdKTsKKyt2b2lkIFBvbGxfTG9vcChCb29sIGxvb3AsIEJvb2wgKmV4aXQsIFBvbGxDbGFzcyBjKTsKKyt2b2lkIFBvbGxfTG9vcFRpbWVvdXQoQm9vbCBsb29wLCBCb29sICpleGl0LCBQb2xsQ2xhc3MgYywgaW50IHRpbWVvdXQpOworK0Jvb2wgUG9sbF9Mb2NraW5nRW5hYmxlZCh2b2lkKTsKKyt2b2lkIFBvbGxfRXhpdCh2b2lkKTsKKysKKysKKysvKgorKyAqIFBvbGxfQ2FsbGJhY2sgYWRkcyBhIGNhbGxiYWNrIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhbiBpZGVudGljYWwgb25lIGV4aXN0cy4KKysgKgorKyAqIExpa2V3aXNlLCBQb2xsX0NhbGxiYWNrUmVtb3ZlIHJlbW92ZXMgZXhhY3RseSBvbmUgY2FsbGJhY2suCisrICovCisrCisrVk13YXJlU3RhdHVzIFBvbGxfQ2FsbGJhY2soUG9sbENsYXNzU2V0IGNsYXNzU2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsZXJGdW5jdGlvbiBmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbEV2ZW50VHlwZSB0eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxEZXZIYW5kbGUgaW5mbywgLy8gZmQvbWljcm9zZWMgZGVsYXkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBNWFVzZXJSZWNMb2NrICpsY2spOworK0Jvb2wgUG9sbF9DYWxsYmFja1JlbW92ZShQb2xsQ2xhc3NTZXQgY2xhc3NTZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKKysgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbGVyRnVuY3Rpb24gZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbEV2ZW50VHlwZSB0eXBlKTsKKytCb29sIFBvbGxfQ2FsbGJhY2tSZW1vdmVPbmVCeUNCKFBvbGxDbGFzc1NldCBjbGFzc1NldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxlckZ1bmN0aW9uIGYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRXZlbnRUeXBlIHR5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqY2xpZW50RGF0YSk7CisrCisrdm9pZCBQb2xsX05vdGlmeUNoYW5nZShQb2xsQ2xhc3NTZXQgY2xhc3NTZXQpOworKworKy8qCisrICogV3JhcHBlcnMgZm9yIFBvbGxfQ2FsbGJhY2sgYW5kIFBvbGxfQ2FsbGJhY2tSZW1vdmUgdGhhdCBwcmVzZW50CisrICogc2ltcGxlciBzdWJzZXRzIG9mIHRob3NlIGludGVyZmFjZXMuCisrICovCisrCisrVk13YXJlU3RhdHVzIFBvbGxfQ0JfRGV2aWNlKFBvbGxlckZ1bmN0aW9uIGYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxEZXZIYW5kbGUgZGV2aWNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIHBlcmlvZGljKTsKKysKKytCb29sIFBvbGxfQ0JfRGV2aWNlUmVtb3ZlKFBvbGxlckZ1bmN0aW9uIGYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBwZXJpb2RpYyk7CisrCisrCisrVk13YXJlU3RhdHVzIFBvbGxfQ0JfUlRpbWUoUG9sbGVyRnVuY3Rpb24gZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxheSwJLy8gbWljcm9zZWNvbmRzCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBwZXJpb2RpYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBNWFVzZXJSZWNMb2NrICpsb2NrKTsKKysKKytCb29sIFBvbGxfQ0JfUlRpbWVSZW1vdmUoUG9sbGVyRnVuY3Rpb24gZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBwZXJpb2RpYyk7CisrCisrCisrI2lmZGVmIF9XSU4zMgorK3ZvaWQgUG9sbF9TZXRXaW5kb3dNZXNzYWdlUmVjaXBpZW50KEhXTkQgaFduZCwgVUlOVCBtc2csIEJvb2wgYWx3YXlzVGh1bmspOworK0Jvb2wgUG9sbF9GaXJlV25kQ2FsbGJhY2sodm9pZCAqbHBhcmFtKTsKKysjZW5kaWYKKysKKysjZW5kaWYgLy8gX1BPTExfSF8KK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9ycGNJbi9ycGNpbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9ycGNJbi9ycGNpbi5jCisrKysgb3Blbi12bS10b29scy9saWIvcnBjSW4vcnBjaW4uYworQEAgLTU3LDcgKzU3LDcgQEAKKyAKKyAjaWYgZGVmaW5lZChWTVRPT0xTX1VTRV9WU09DS0VUKQorICMgIGluY2x1ZGUgPGdsaWIuaD4KKy0jICBpbmNsdWRlICJwb2xsLmgiCisrIyAgaW5jbHVkZSAidm1fcG9sbC5oIgorICMgIGluY2x1ZGUgImFzeW5jc29ja2V0LmgiCisgIyAgaW5jbHVkZSAidm1jaV9kZWZzLmgiCisgI2luY2x1ZGUgImRhdGFNYXAuaCIKK0luZGV4OiBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZ3JhYmJpdG1xUHJveHkvZ3JhYmJpdG1xUHJveHlQbHVnaW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9zZXJ2aWNlcy9wbHVnaW5zL2dyYWJiaXRtcVByb3h5L2dyYWJiaXRtcVByb3h5UGx1Z2luLmMKKysrKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZ3JhYmJpdG1xUHJveHkvZ3JhYmJpdG1xUHJveHlQbHVnaW4uYworQEAgLTQ4LDcgKzQ4LDcgQEAKKyAjaW5jbHVkZSAicnBjb3V0LmgiCisgI2luY2x1ZGUgInJhYmJpdG1xUHJveHlDb25zdC5oIgorICNpbmNsdWRlICJ2bV9iYXNpY190eXBlcy5oIgorLSNpbmNsdWRlICJwb2xsLmgiCisrI2luY2x1ZGUgInZtX3BvbGwuaCIKKyAjaWZkZWYgT1BFTl9WTV9UT09MUworICNpbmNsdWRlICJ2bWNpX3NvY2tldHMuaCIKKyAjaW5jbHVkZSAic3NsRGlyZWN0LmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA0LUFkZC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMtYW5kLVduby1lcnJvci1hZGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA0LUFkZC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMtYW5kLVduby1lcnJvci1hZGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEwNTE2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDQtQWRkLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy1hbmQtV25vLWVycm9yLWFkZC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGNkYjBiM2M4OThjNmI2YjZjODI1OWQ5ZGRiOGIwMDE2M2FjNWU0MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBKdWwgMjAxNyAwOTo0MzoxOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDA0LzExXSBBZGQgLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcyBhbmQKKyAtV25vLWVycm9yPWFkZHJlc3MKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG9wZW4tdm0tdG9vbHMvbGliL2R5bnhkci9NYWtlZmlsZS5hbSB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL2xpYi9maWxlL01ha2VmaWxlLmFtICAgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogb3Blbi12bS10b29scy9saWIvZHlueGRyL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9keW54ZHIvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9keW54ZHIvTWFrZWZpbGUuYW0KK0BAIC0yMCw0ICsyMCw0IEBAIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYkR5bnhkci5sYQorIGxpYkR5bnhkcl9sYV9TT1VSQ0VTID0gCisgbGliRHlueGRyX2xhX1NPVVJDRVMgKz0gZHlueGRyLmMKKyBsaWJEeW54ZHJfbGFfU09VUkNFUyArPSB4ZHJ1dGlsLmMKKy0KKytsaWJEeW54ZHJfbGFfQ1BQRkxBR1MgPSAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzCitJbmRleDogb3Blbi12bS10b29scy9saWIvZmlsZS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvZmlsZS9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvbGliL2ZpbGUvTWFrZWZpbGUuYW0KK0BAIC0yNywzICsyNyw0IEBAIGxpYkZpbGVfbGFfU09VUkNFUyArPSBmaWxlTG9ja1ByaW1pdGl2ZS4KKyBsaWJGaWxlX2xhX1NPVVJDRVMgKz0gZmlsZUxvY2tQb3NpeC5jCisgbGliRmlsZV9sYV9TT1VSQ0VTICs9IGZpbGVUZW1wUG9zaXguYworIGxpYkZpbGVfbGFfU09VUkNFUyArPSBmaWxlVGVtcC5jCisrbGliRmlsZV9sYV9DUFBGTEFHUyA9IC1Xbm8tZXJyb3I9YWRkcmVzcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNS1Vc2UtY29uZmlndXJlLXRlc3QtZm9yLXN0cnVjdC10aW1lc3BlYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDUtVXNlLWNvbmZpZ3VyZS10ZXN0LWZvci1zdHJ1Y3QtdGltZXNwZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAyZDAwZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDUtVXNlLWNvbmZpZ3VyZS10ZXN0LWZvci1zdHJ1Y3QtdGltZXNwZWMucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSBiZjFlYWZiMDcyOTc3MTFiYWY5MzIwYjFlZGNjYThhMzM3NmYxMTdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogV2VkLCAxOCBOb3YgMjAxNSAwOTowMzowMCArMDAwMAorU3ViamVjdDogW1BBVENIIDA1LzExXSBVc2UgY29uZmlndXJlIHRlc3QgZm9yIHN0cnVjdCB0aW1lc3BlYworCitVc2UgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgdG8gdGVzdCBmb3Igc3RydWN0IHRpbWUgc3BlYyBpbnN0ZWFkIG9mIHRyeWluZwordG8ga2VlcCB0cmFjayBvZiB3aGF0IHBsYXRmb3JtcyBoYXMgaXQuCisKK1NpZ25lZC1vZmYtYnk6IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KKy0tLQorIG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjICAgICAgICAgICB8IDEgKworIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvaGdmc1V0aWwuaCB8IDggKy0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjCitAQCAtMTEyNyw2ICsxMTI3LDcgQEAgQUNfVFlQRV9PRkZfVAorIEFDX1RZUEVfUElEX1QKKyBBQ19UWVBFX1NJWkVfVAorIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X3JkZXZdKQorK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCB0aW1lc3BlYy50dl9zZWNdLFtdLFtdLFtbI2luY2x1ZGUgPHRpbWUuaD5dXSkKKyBBQ19IRUFERVJfVElNRQorIEFDX1NUUlVDVF9UTQorIEFDX0NfVk9MQVRJTEUKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL2hnZnNVdGlsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2luY2x1ZGUvaGdmc1V0aWwuaAorKysrIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvaGdmc1V0aWwuaAorQEAgLTUzLDEzICs1Myw3IEBACisgIyAgICAgIGluY2x1ZGUgPHRpbWUuaD4KKyAjICAgZW5kaWYKKyAjICAgaW5jbHVkZSAidm1fYmFzaWNfdHlwZXMuaCIKKy0jICAgaWYgIWRlZmluZWQgX1NUUlVDVF9USU1FU1BFQyAmJiAgIFwKKy0gICAgICAgIWRlZmluZWQgX1RJTUVTUEVDX0RFQ0xBUkVEICYmIFwKKy0gICAgICAgIWRlZmluZWQgX190aW1lc3BlY19kZWZpbmVkICYmIFwKKy0gICAgICAgIWRlZmluZWQgc3VuICYmIFwKKy0gICAgICAgIWRlZmluZWQgX19GcmVlQlNEX18gJiYgXAorLSAgICAgICAhX19BUFBMRV9fICYmIFwKKy0gICAgICAgIWRlZmluZWQgX1dJTjMyCisrIyAgIGlmICFkZWZpbmVkIEhBVkVfU1RSVUNUX1RJTUVTUEVDX1RWX1NFQworIHN0cnVjdCB0aW1lc3BlYyB7CisgICAgdGltZV90IHR2X3NlYzsKKyAgICBsb25nICAgdHZfbnNlYzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDYtRml4LWRlZmluaXRpb24tb2YtQUxMUEVSTVMtYW5kLUFDQ0VTU1BFUk1TLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNi1GaXgtZGVmaW5pdGlvbi1vZi1BTExQRVJNUy1hbmQtQUNDRVNTUEVSTVMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFmNGVmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDYtRml4LWRlZmluaXRpb24tb2YtQUxMUEVSTVMtYW5kLUFDQ0VTU1BFUk1TLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gMzFhZTZmNDI0NThmOTBkNDk5NGE0YWQ4ZTJiNzY3MzY5MTYxMmMzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KK0RhdGU6IFdlZCwgMTggTm92IDIwMTUgMDk6MTA6MTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xMV0gRml4IGRlZmluaXRpb24gb2YgQUxMUEVSTVMgYW5kIEFDQ0VTU1BFUk1TCisKK1RoZSBBTExQRVJNUyBhbmQgQUNDRVNTUEVSTVMgZGVmaW5lcyBhcmUgbm90IHNwZWNpZmllZCBpbiBQT1NJWCBzbworYXNzdW1lIGl0IGlzIG5vdCB0aGVyZSBpbnN0ZWFkIG9mIHRlc3RpbmcgZm9yIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4KKworVGhpcyBpcyBuZWVkZWQgZm9yIG11c2wgbGliYy4KKworU2lnbmVkLW9mZi1ieTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorLS0tCisgb3Blbi12bS10b29scy9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyTGludXguYyAgICAgIHwgOCArKysrKy0tLQorIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9kbmQvZG5kTGludXguYyB8IDMgKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXJMaW51eC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXJMaW51eC5jCisrKysgb3Blbi12bS10b29scy9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyTGludXguYworQEAgLTEwNywxMSArMTA3LDEzIEBAIHR5cGVkZWYgc3RydWN0IERpcmVjdG9yeUVudHJ5IHsKKyAjZW5kaWYKKyAKKyAvKgorLSAqIEFMTFBFUk1TIChtb2RlIDA3Nzc3KSBhbmQgQUNDRVNTUEVSTVMgKG1vZGUgMDc3NykgYXJlIG5vdCBkZWZpbmVkIGluIHRoZQorLSAqIFNvbGFyaXMgdmVyc2lvbiBvZiA8c3lzL3N0YXQuaD4uCisrICogQUxMUEVSTVMgKG1vZGUgMDc3NzcpIGFuZCBBQ0NFU1NQRVJNUyAobW9kZSAwNzc3KSBhcmUgbm90IHNwZWNpZmllZCBpbgorKyAqIFBPU0lYLgorICAqLworLSNpZmRlZiBzdW4KKysjaWZuZGVmIEFDQ0VTU1BFUk1TCisgIyAgIGRlZmluZSBBQ0NFU1NQRVJNUyAoU19JUldYVXxTX0lSV1hHfFNfSVJXWE8pCisrI2VuZGlmCisrI2lmbmRlZiBBTExQRVJNUworICMgICBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKQorICNlbmRpZgorIAorSW5kZXg6IG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9kbmQvZG5kTGludXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL2RuZC9kbmRMaW51eC5jCisrKysgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL2RuZC9kbmRMaW51eC5jCitAQCAtNTEsNyArNTEsNyBAQAorIAorICNkZWZpbmUgRE5EX1JPT1RESVJfUEVSTVMgICAgIChTX0lSV1hVIHwgU19JUldYRyB8IFNfSVJXWE8pCisgI2RlZmluZSBETkRfU1RBR0lOR0RJUl9QRVJNUyAgKFNfSVJXWFUgfCBTX0lSR1JQIHwgU19JWEdSUCB8IFNfSVJPVEggfCBTX0lYT1RIKQorLSNpZmRlZiBzdW4KKysjaWZuZGVmIEFDQ0VTU1BFUk1TCisgI2RlZmluZSBBQ0NFU1NQRVJNUyAgICAgICAgICAgKFNfSVJXWFUgfCBTX0lSV1hHIHwgU19JUldYTykKKyAjZW5kaWYKKyAjaWZkZWYgX19BTkRST0lEX18KK0BAIC02MCw3ICs2MCw2IEBACisgICovCisgI2RlZmluZSBOT19TRVRNTlRFTlQKKyAjZGVmaW5lIE5PX0VORE1OVEVOVAorLSNkZWZpbmUgQUNDRVNTUEVSTVMgICAgICAgICAgIChTX0lSV1hVIHwgU19JUldYRyB8IFNfSVJXWE8pCisgI2VuZGlmCisgCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA3LVVzZS1jb25maWd1cmUtdG8tdGVzdC1mb3ItZmVhdHVyZS1pbnN0ZWFkLW9mLXBsYXRmb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA3LVVzZS1jb25maWd1cmUtdG8tdGVzdC1mb3ItZmVhdHVyZS1pbnN0ZWFkLW9mLXBsYXRmb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkZjliMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDctVXNlLWNvbmZpZ3VyZS10by10ZXN0LWZvci1mZWF0dXJlLWluc3RlYWQtb2YtcGxhdGZvci5wYXRjaApAQCAtMCwwICsxLDE0NCBAQAorRnJvbSA2Y2MxYzIyY2MzMDMyMGY1NmRhNTUyYTc2YmQ5NTZkYjhmMjU1YjZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogV2VkLCAxOCBOb3YgMjAxNSAxMDowNTowNyArMDAwMAorU3ViamVjdDogW1BBVENIIDA3LzExXSBVc2UgY29uZmlndXJlIHRvIHRlc3QgZm9yIGZlYXR1cmUgaW5zdGVhZCBvZiBwbGF0Zm9ybQorCitUZXN0IGZvciB2YXJpb3VzIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRyeWluZyB0byBrZWVwIHRyYWNrIG9mIHdoYXQKK3BsYXRmb3JtIGFuZCB3aGF0IHZlcnNpb24gb2YgdGhlIGdpdmVuIHBsYXRmb3JtIGhhcyBzdXBwb3J0IGZvciB3aGF0LgorCitUaGlzIHNob3VsZCBtYWtlIGl0IGVhc2llciB0byBwb3J0IHRvIGN1cnJlbnRseSB1bmtub3duIHBsYXRmb3JtcyBhbmQKK3dpbGwgc29sdmUgdGhlIGlzc3VlIGlmIGEgcGxhdGZvcm0gYWRkIHN1cHBvcnQgZm9yIGEgbWlzc2luZyBmZWF0dXJlIGluCit0aGUgZnV0dXJlLgorCitUaGUgZmVhdHVyZXMgd2UgdGVzdCBmb3IgYXJlOgorLSBnZXRpZmFkZHJzCistIGdldGF1eHZhbAorLSBpc3NldHVnaWQKKy0gX19zZWN1cmVfZ2V0ZW52CisKK1RoaXMgaXMgbmVlZGVkIGZvciBtdXNsIGxpYmMuCisKK1NpZ25lZC1vZmYtYnk6IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KKy0tLQorIG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgfCAgNCArKysrCisgb3Blbi12bS10b29scy9saWIvbWlzYy9pZExpbnV4LmMgICAgICAgICB8IDMwICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIG9wZW4tdm0tdG9vbHMvbGliL25pY0luZm8vbmljSW5mb1Bvc2l4LmMgfCAgOCArKysrKystLQorIDMgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9jb25maWd1cmUuYWMKKysrKyBvcGVuLXZtLXRvb2xzL2NvbmZpZ3VyZS5hYworQEAgLTc5OCw2ICs3OTgsNyBAQCBBQ19DSEVDS19GVU5DUygKKyAKKyBBQ19DSEVDS19GVU5DUyhbZWN2dF0pCisgQUNfQ0hFQ0tfRlVOQ1MoW2ZjdnRdKQorK0FDX0NIRUNLX0ZVTkNTKFtnZXRpZmFkZHJzIGdldGF1eHZhbCBpc3NldHVnaWQgX19zZWN1cmVfZ2V0ZW52XSkKKyAKKyBBQ19DSEVDS19GVU5DKFtta2R0ZW1wXSwgW2hhdmVfbWtkdGVtcD15ZXNdKQorIAorQEAgLTEwNjMsMTAgKzEwNjQsMTMgQEAgQUNfUEFUSF9QUk9HKAorICMjIworIAorIEFDX0NIRUNLX0hFQURFUlMoW2NyeXB0LmhdKQorK0FDX0NIRUNLX0hFQURFUlMoW2lmYWRkcnMuaF0pCisgQUNfQ0hFQ0tfSEVBREVSUyhbaW50dHlwZXMuaF0pCisgQUNfQ0hFQ0tfSEVBREVSUyhbc3RkaW50LmhdKQorIEFDX0NIRUNLX0hFQURFUlMoW3N0ZGxpYi5oXSkKKyBBQ19DSEVDS19IRUFERVJTKFt3Y2hhci5oXSkKKytBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0pCisrQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL2F1eHYuaF0pCisgQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL2ludHR5cGVzLmhdKQorIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9pby5oXSkKKyBBQ19DSEVDS19IRUFERVJTKFtzeXMvcGFyYW0uaF0pICMgUmVxdWlyZWQgdG8gbWFrZSB0aGUgc3lzL3VzZXIuaCBjaGVjayB3b3JrIGNvcnJlY3RseSBvbiBGcmVlQlNECitJbmRleDogb3Blbi12bS10b29scy9saWIvbWlzYy9pZExpbnV4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL21pc2MvaWRMaW51eC5jCisrKysgb3Blbi12bS10b29scy9saWIvbWlzYy9pZExpbnV4LmMKK0BAIC0yNywxMiArMjcsOSBAQAorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CistI2lmZGVmIF9fbGludXhfXworLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgXAorLSAgICAgICAgICAgKF9fR0xJQkNfXyA+IDIgfHwgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxNikpCisrI2lmZGVmIEhBVkVfU1lTX0FVWFZfSAorICNpbmNsdWRlIDxzeXMvYXV4di5oPgorICNlbmRpZgorLSNlbmRpZgorICNpZmRlZiBfX0FQUExFX18KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KK0BAIC05OTcsMzEgKzk5NCwzMiBAQCBJZF9FbmRTdXBlclVzZXIodWlkX3QgdWlkKSAgLy8gSU46Cisgc3RhdGljIEJvb2wKKyBJZElzU2V0VUdpZCh2b2lkKQorIHsKKy0jaWYgZGVmaW5lZChfX0FORFJPSURfXykKKy0gICAvKiBBbmRyb2lkIGRvZXMgbm90IGhhdmUgYSBzZWN1cmVfZ2V0ZW52LCBzbyBiZSBjb25zZXJ2YXRpdmUuICovCistICAgcmV0dXJuIFRSVUU7CistI2Vsc2UKKyAgICAvKgorICAgICAqIFdlIHVzZSBfX3NlY3VyZV9nZXRlbnYsIHdoaWNoIHJldHVybnMgTlVMTCBpZiB0aGUgYmluYXJ5IGlzCistICAgICogc2V0dWlkIG9yIHNldGdpZC4gQWx0ZXJuYXRpdmVzIGluY2x1ZGUsCisrICAgICogc2V0dWlkIG9yIHNldGdpZCwgd2hlbiBpc3NldHVnaWQgb3IgZ2V0YXV4dmFsKEFUX1NFQ1VSRSkgaXMgbm90CisrICAgICogYXZhaWxhYmxlLiBBbHRlcm5hdGl2ZXMgaW5jbHVkZSwKKyAgICAgKgorLSAgICAqICAgYSkgZ2V0YXV4dmFsKEFUX1NFQ1VSRSk7IG5vdCBhdmFpbGFibGUgdW50aWwgZ2xpYmMgMi4xNi4KKy0gICAgKiAgIGIpIF9fbGliY19lbmFibGVfc2VjdXJlOyBtYXkgbm90IGJlIGV4cG9ydGVkLgorKyAgICAqICAgYSkgaXNzZXR1Z2lkKCk7IG5vdCAoeWV0PykgYXZhaWxhYmxlIGluIGdsaWJjLgorKyAgICAqICAgYikgZ2V0YXV4dmFsKEFUX1NFQ1VSRSk7IG5vdCBhdmFpbGFibGUgdW50aWwgZ2xpYmMgMi4xNi4KKysgICAgKiAgIGMpIF9fbGliY19lbmFibGVfc2VjdXJlOyBtYXkgbm90IGJlIGV4cG9ydGVkLgorICAgICAqCistICAgICogVXNlIChhKSB3aGVuIHdlIGFyZSBiYXNlZCBvbiBnbGliYyAyLjE2LCBvciBuZXdlci4KKysgICAgKiBVc2UgKGIpIHdoZW4gd2UgYXJlIGJhc2VkIG9uIGdsaWJjIDIuMTYsIG9yIG5ld2VyLgorICAgICAqLworIAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgXAorLSAgICAgICAgICAgKF9fR0xJQkNfXyA+IDIgfHwgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxNikpCisrI2lmIEhBVkVfSVNTRVRVR0lECisrICAgcmV0dXJuIGlzc2V0dWdpZCgpOworKyNlbGlmIEhBVkVfR0VUQVVYVkFMCisgICAgcmV0dXJuIGdldGF1eHZhbChBVF9TRUNVUkUpICE9IDA7CistI2Vsc2UKKysjZWxpZiBIQVZFX19fU0VDVVJFX0dFVEVOVgorICAgIHN0YXRpYyBjb25zdCBjaGFyIGVudk5hbWVbXSA9ICJWTVdfU0VUVUdJRF9URVNUIjsKKyAKKyAgICBpZiAoc2V0ZW52KGVudk5hbWUsICIxIiwgVFJVRSkgPT0gLTEpIHsKKyAgICAgICByZXR1cm4gVFJVRTsgLyogQ29uc2VydmF0aXZlICovCisgICAgfQorICAgIHJldHVybiBfX3NlY3VyZV9nZXRlbnYoZW52TmFtZSkgPT0gTlVMTDsKKy0jZW5kaWYKKysjZWxzZQorKyAgIC8qIEFuZHJvaWQgZG9lcyBub3QgaGF2ZSBhIHNlY3VyZV9nZXRlbnYsIHNvIGJlIGNvbnNlcnZhdGl2ZS4gKi8KKysgICByZXR1cm4gVFJVRTsKKyAjZW5kaWYKKyB9CisgI2VuZGlmCitJbmRleDogb3Blbi12bS10b29scy9saWIvbmljSW5mby9uaWNJbmZvUG9zaXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvbmljSW5mby9uaWNJbmZvUG9zaXguYworKysrIG9wZW4tdm0tdG9vbHMvbGliL25pY0luZm8vbmljSW5mb1Bvc2l4LmMKK0BAIC0zNCw5ICszNCwxMyBAQAorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorKyNpZiBIQVZFX1NZU19TWVNDVExfSAorICMgaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorKyNlbmRpZgorKyNpZiBIQVZFX0lGQUREUlNfSAorICMgaW5jbHVkZSA8aWZhZGRycy5oPgorKyNlbmRpZgorKyNpZiBIQVZFX05FVF9JRl9ICisgIyBpbmNsdWRlIDxuZXQvaWYuaD4KKyAjZW5kaWYKKyAjaWZuZGVmIE5PX0RORVQKK0BAIC0zNDgsNyArMzUyLDcgQEAgR3Vlc3RJbmZvR2V0TmljSW5mbyhOaWNJbmZvVjMgKm5pY0luZm8pCisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCistI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFVTRVJXT1JMRCkKKysjaWYgZGVmaW5lZChOT19ETkVUKSAmJiBkZWZpbmVkKEhBVkVfR0VUSUZBRERSUykKKyAKKyBjaGFyICoKKyBHdWVzdEluZm9HZXRQcmltYXJ5SVAodm9pZCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDgtdXNlLXBvc2l4LXN0cmVycm9yX3ItdW5sZXNzLWdudS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDgtdXNlLXBvc2l4LXN0cmVycm9yX3ItdW5sZXNzLWdudS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDEyOTFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwOC11c2UtcG9zaXgtc3RyZXJyb3Jfci11bmxlc3MtZ251LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gZDRkMWU3MTQ2Y2EyNjk4MDg5ZjZiZDUzMmYyZmI4YjljMTEzNGNhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KK0RhdGU6IE1vbiwgMiBKYW4gMjAxNyAxNDozOToyNyArMDAwMAorU3ViamVjdDogW1BBVENIIDA4LzExXSB1c2UgcG9zaXggc3RyZXJyb3JfciB1bmxlc3MgZ251CisKKy0tLQorIG9wZW4tdm0tdG9vbHMvbGliL2Vyci9lcnJQb3NpeC5jIHwgOCArKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9lcnIvZXJyUG9zaXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvZXJyL2VyclBvc2l4LmMKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9lcnIvZXJyUG9zaXguYworQEAgLTYzLDExICs2MywxMyBAQCBFcnJFcnJubzJTdHJpbmcoRXJyX051bWJlciBlcnJvck51bWJlciwKKyB7CisgICAgY2hhciAqcDsKKyAKKy0jaWYgZGVmaW5lZChsaW51eCkgJiYgIWRlZmluZWQoTl9QTEFUX05MTSkgJiYgIWRlZmluZWQoX19BTkRST0lEX18pCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgIHAgPSBzdHJlcnJvcl9yKGVycm9yTnVtYmVyLCBidWYsIGJ1ZlNpemUpOworICNlbHNlCistICAgcCA9IHN0cmVycm9yKGVycm9yTnVtYmVyKTsKKy0jZW5kaWYKKysgICBpZiAoc3RyZXJyb3JfcihlcnJvck51bWJlciwgYnVmLCBidWZTaXplKSAhPSAwKQorKyAgICAgIHNucHJpbnRmKGJ1ZiwgYnVmU2l6ZSwgInVua25vd24gZXJyb3IgJWkiLCBlcnJvck51bWJlcik7CisrICAgcCA9IGJ1ZjsKKysjZW5kaWYgLyogZGVmaW5lZCBfX0dMSUJDX18gKi8KKyAgICBBU1NFUlQocCAhPSBOVUxMKTsKKyAgICByZXR1cm4gcDsKKyB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA5LUFkZC1zdXBwb3J0LWZvci1idWlsZGluZy13aXRoLXN5c3RlbS1saWJ0aXJwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDktQWRkLXN1cHBvcnQtZm9yLWJ1aWxkaW5nLXdpdGgtc3lzdGVtLWxpYnRpcnBjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZWU1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA5LUFkZC1zdXBwb3J0LWZvci1idWlsZGluZy13aXRoLXN5c3RlbS1saWJ0aXJwYy5wYXRjaApAQCAtMCwwICsxLDM0MiBAQAorRnJvbSA1YWU2YzY2MmZlZmE2MjFmNDYwMDU1OWUyOTlhN2Q5N2MyMjU0ZTY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogU3VuLCAxNiBKdWwgMjAxNyAxMDoyMDoxMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gQWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggc3lzdGVtIGxpYnRpcnBjCisKK1NpZ25lZC1vZmYtYnk6IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKysrKysrKysKKyBvcGVuLXZtLXRvb2xzL2xpYi9keW54ZHIvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCisgb3Blbi12bS10b29scy9saWIvZXJyL2VyclBvc2l4LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgb3Blbi12bS10b29scy9saWIvZ3Vlc3RScGMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKKyBvcGVuLXZtLXRvb2xzL2xpYi9taXNjL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBvcGVuLXZtLXRvb2xzL2xpYi9uZXRVdGlsL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKysKKyBvcGVuLXZtLXRvb2xzL2xpYi9uaWNJbmZvL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICB8ICAyICsrCisgb3Blbi12bS10b29scy9saWIvcnBjQ2hhbm5lbC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgfCAgNCArKysrCisgb3Blbi12bS10b29scy9saWIvc2xhc2hQcm9jL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgfCAgNCArKysrCisgb3Blbi12bS10b29scy9saWIvc3RyaW5nL2JzZF9vdXRwdXRfc2hhcmVkLmMgICAgICAgICAgICAgfCAgMiArLQorIG9wZW4tdm0tdG9vbHMvbGliZ3Vlc3RsaWIvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgIDIgKysKKyBvcGVuLXZtLXRvb2xzL3JwY3Rvb2wvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrKworIG9wZW4tdm0tdG9vbHMvcnBjdG9vbC9ycGN0b29sLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3AvTWFrZWZpbGUuYW0gICAgICAgICB8ICAyICsrCisgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2d1ZXN0SW5mby9NYWtlZmlsZS5hbSAgICAgfCAgMSArCisgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3Jlc29sdXRpb25TZXQvTWFrZWZpbGUuYW0gfCAgMiArKworIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy92aXgvTWFrZWZpbGUuYW0gICAgICAgICAgIHwgIDIgKysKKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdm1iYWNrdXAvTWFrZWZpbGUuYW0gICAgICB8ICAyICsrCisgb3Blbi12bS10b29scy90b29sYm94L01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKworIDE5IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9jb25maWd1cmUuYWMKKysrKyBvcGVuLXZtLXRvb2xzL2NvbmZpZ3VyZS5hYworQEAgLTQwNSw2ICs0MDUsMjAgQEAgQUNfVk1XX0NIRUNLX0xJQihbZnVzZV0sCisgICAgICAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oW0Z1c2UgaXMgbWlzc2luZywgdm1ibG9jay1mdXNlL3ZtaGdmcy1mdXNlIHdpbGwgYmUgZGlzYWJsZWQuXSldKQorIAorICMKKysjIENoZWNrIGZvciBsaWJ0aXJwYworKyMKKytBQ19WTVdfQ0hFQ0tfTElCKFtsaWJ0aXJwY10sCisrICAgICAgICAgICAgICAgICBbTElCVElSUENdLAorKyAgICAgICAgICAgICAgICAgW2xpYnRpcnBjXSwKKysgICAgICAgICAgICAgICAgIFtdLAorKyAgICAgICAgICAgICAgICAgW10sCisrICAgICAgICAgICAgICAgICBbcnBjL3hkci5oXSwKKysgICAgICAgICAgICAgICAgIFt4ZHJfdm9pZF0sCisrICAgICAgICAgICAgICAgICBbaGF2ZV9saWJ0aXJwYz15ZXNdLAorKyAgICAgICAgICAgICAgICAgW2hhdmVfbGlidGl0aXJwYz1ubzsKKysgICAgICAgICAgICAgICAgICBBQ19NU0dfV0FSTihbbGlidGlycGMgaXMgbWlzc2luZy5dKV0pCisrCisrIworICMgQ2hlY2sgZm9yIFBBTS4KKyAjCisgQUNfQVJHX1dJVEgoW3BhbV0sCitJbmRleDogb3Blbi12bS10b29scy9saWIvZHlueGRyL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9keW54ZHIvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9keW54ZHIvTWFrZWZpbGUuYW0KK0BAIC0xNyw3ICsxNywxMSBAQAorIAorIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYkR5bnhkci5sYQorIAorLWxpYkR5bnhkcl9sYV9TT1VSQ0VTID0gCisrbGliRHlueGRyX2xhX1NPVVJDRVMgPQorIGxpYkR5bnhkcl9sYV9TT1VSQ0VTICs9IGR5bnhkci5jCisgbGliRHlueGRyX2xhX1NPVVJDRVMgKz0geGRydXRpbC5jCistbGliRHlueGRyX2xhX0NQUEZMQUdTID0gLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcworK2xpYkR5bnhkcl9sYV9DUFBGTEFHUyA9IEBMSUJUSVJQQ19DUFBGTEFHU0AgLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcworKworK2xpYkR5bnhkcl9sYV9MSUJBREQgPQorK2xpYkR5bnhkcl9sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACisrCitJbmRleDogb3Blbi12bS10b29scy9saWIvZXJyL2VyclBvc2l4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2Vyci9lcnJQb3NpeC5jCisrKysgb3Blbi12bS10b29scy9saWIvZXJyL2VyclBvc2l4LmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKyAKKyAjaW5jbHVkZSAidm13YXJlLmgiCisgI2luY2x1ZGUgImVyckludC5oIgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2d1ZXN0UnBjL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9ndWVzdFJwYy9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvbGliL2d1ZXN0UnBjL01ha2VmaWxlLmFtCitAQCAtMjAsNiArMjAsMTIgQEAgbm9pbnN0X0xUTElCUkFSSUVTID0gbGliR3Vlc3RScGMubGEKKyBsaWJHdWVzdFJwY19sYV9TT1VSQ0VTID0KKyBsaWJHdWVzdFJwY19sYV9TT1VSQ0VTICs9IG5pY2luZm9feGRyLmMKKyAKKytsaWJHdWVzdFJwY19sYV9DUFBGTEFHUyA9CisrbGliR3Vlc3RScGNfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAorKworK2xpYkd1ZXN0UnBjX2xhX0xJQkFERCA9CisrbGliR3Vlc3RScGNfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAorKworICMgWFhYOiBBdXRvcmVjb25mIGNvbXBsYWlucyBhYm91dCB0aGlzIGFuZCByZWNvbW1lbmRzIHVzaW5nIEFNX0NGTEFHUyBpbnN0ZWFkLgorICMgUHJvYmxlbSBpcywgJChDRkxBR1MpIGlzIGFwcGVuZGVkIHRvIHRoZSBjb21waWxlciBjb21tYW5kIGxpbmUgYWZ0ZXIgQU1fQ0ZMQUdTCisgIyBhbmQgYWZ0ZXIgbGliR3Vlc3RScGNfbGFfQ0ZMQUdTLCBzbyAiLVdhbGwgLVdlcnJvciIgd2lsbCBvdmVycmlkZSB0aGlzIGZsYWcuCitJbmRleDogb3Blbi12bS10b29scy9saWIvbWlzYy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvbWlzYy9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvbGliL21pc2MvTWFrZWZpbGUuYW0KK0BAIC01Miw0ICs1Miw1IEBAIGxpYk1pc2NfbGFfU09VUkNFUyArPSB1dGlsTWVtLmMKKyBsaWJNaXNjX2xhX1NPVVJDRVMgKz0gdm1zdGRpby5jCisgbGliTWlzY19sYV9TT1VSQ0VTICs9IHN0cnV0aWwuYworIGxpYk1pc2NfbGFfU09VUkNFUyArPSB2dGhyZWFkQmFzZS5jCisrbGliTWlzY19sYV9DUFBGTEFHUyA9IC1Xbm8tZXJyb3I9aW50LWNvbnZlcnNpb24KKyAKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9uZXRVdGlsL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9uZXRVdGlsL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9saWIvbmV0VXRpbC9NYWtlZmlsZS5hbQorQEAgLTIwLDMgKzIwLDcgQEAgbm9pbnN0X0xUTElCUkFSSUVTID0gbGliTmV0VXRpbC5sYQorIGxpYk5ldFV0aWxfbGFfU09VUkNFUyA9CisgbGliTmV0VXRpbF9sYV9TT1VSQ0VTICs9IG5ldFV0aWxMaW51eC5jCisgCisrbGliTmV0VXRpbF9sYV9DUFBGTEFHUyA9CisrbGliTmV0VXRpbF9sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisrCisrbGliTmV0VXRpbF9sYV9MSUJBREQgPSBATElCVElSUENfTElCU0AKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9uaWNJbmZvL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9uaWNJbmZvL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9saWIvbmljSW5mby9NYWtlZmlsZS5hbQorQEAgLTI1LDEyICsyNSwxNCBAQCBsaWJOaWNJbmZvX2xhX1NPVVJDRVMgKz0gbmljSW5mb1Bvc2l4LmMKKyAKKyBsaWJOaWNJbmZvX2xhX0NQUEZMQUdTID0KKyBsaWJOaWNJbmZvX2xhX0NQUEZMQUdTICs9IEBHTElCMl9DUFBGTEFHU0AKKytsaWJOaWNJbmZvX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKyAKKyBBTV9DRkxBR1MgPSAkKERORVRfQ1BQRkxBR1MpCisgaWYgVVNFX1NMQVNIX1BST0MKKyBBTV9DRkxBR1MgKz0gLURVU0VfU0xBU0hfUFJPQworIGVuZGlmCisgbGliTmljSW5mb19sYV9MSUJBREQgPQorK2xpYk5pY0luZm9fbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAorIGlmIEhBVkVfRE5FVAorICAgIGxpYk5pY0luZm9fbGFfTElCQUREICs9IEBETkVUX0xJQlNACisgZW5kaWYKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9ycGNDaGFubmVsL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9ycGNDaGFubmVsL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9saWIvcnBjQ2hhbm5lbC9NYWtlZmlsZS5hbQorQEAgLTI3LDMgKzI3LDcgQEAgZW5kaWYKKyAKKyBsaWJScGNDaGFubmVsX2xhX0NQUEZMQUdTID0KKyBsaWJScGNDaGFubmVsX2xhX0NQUEZMQUdTICs9IEBWTVRPT0xTX0NQUEZMQUdTQAorK2xpYlJwY0NoYW5uZWxfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAorKworK2xpYlJwY0NoYW5uZWxfbGFfTElCQUREID0KKytsaWJScGNDaGFubmVsX2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9zbGFzaFByb2MvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL3NsYXNoUHJvYy9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvbGliL3NsYXNoUHJvYy9NYWtlZmlsZS5hbQorQEAgLTIyLDYgKzIyLDEwIEBAIGxpYlNsYXNoUHJvY19sYV9TT1VSQ0VTICs9IG5ldC5jCisgCisgbGliU2xhc2hQcm9jX2xhX0NQUEZMQUdTID0KKyBsaWJTbGFzaFByb2NfbGFfQ1BQRkxBR1MgKz0gQEdMSUIyX0NQUEZMQUdTQAorK2xpYlNsYXNoUHJvY19sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisrCisrbGliU2xhc2hQcm9jX2xhX0xJQkFERCA9CisrbGliU2xhc2hQcm9jX2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKKyAKKyBBTV9DRkxBR1MgPSAkKERORVRfQ1BQRkxBR1MpCisgCitJbmRleDogb3Blbi12bS10b29scy9saWIvc3RyaW5nL2JzZF9vdXRwdXRfc2hhcmVkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL3N0cmluZy9ic2Rfb3V0cHV0X3NoYXJlZC5jCisrKysgb3Blbi12bS10b29scy9saWIvc3RyaW5nL2JzZF9vdXRwdXRfc2hhcmVkLmMKK0BAIC0zOCw3ICszOCw3IEBACisgLy8jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgCisgI2lmICFkZWZpbmVkKFNUUl9OT19XSU4zMl9MSUJTKSAmJiAhZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19PcGVuQlNEX18pICYmICFkZWZpbmVkKF9fTmV0QlNEX18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQorLQorKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2lmbmRlZiBfV0lOMzIKK0luZGV4OiBvcGVuLXZtLXRvb2xzL2xpYmd1ZXN0bGliL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2xpYmd1ZXN0bGliL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9saWJndWVzdGxpYi9NYWtlZmlsZS5hbQorQEAgLTIyLDYgKzIyLDcgQEAgQU1fQ0ZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCisgCisgbGliZ3Vlc3RsaWJfbGFfTElCQUREID0KKyBsaWJndWVzdGxpYl9sYV9MSUJBREQgKz0gQFZNVE9PTFNfTElCU0AKKytsaWJndWVzdGxpYl9sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACisgCisgbGliZ3Vlc3RsaWJfbGFfU09VUkNFUyA9CisgbGliZ3Vlc3RsaWJfbGFfU09VUkNFUyArPSBndWVzdGxpYlYzX3hkci5jCitAQCAtNTYsNiArNTcsNyBAQCBDRkxBR1MgKz0gLVduby11bnVzZWQKKyBsaWJndWVzdGxpYl9sYV9DUFBGTEFHUyA9CisgbGliZ3Vlc3RsaWJfbGFfQ1BQRkxBR1MgKz0gLURWTVRPT0xTX1VTRV9HTElCCisgbGliZ3Vlc3RsaWJfbGFfQ1BQRkxBR1MgKz0gQEdMSUIyX0NQUEZMQUdTQAorK2xpYmd1ZXN0bGliX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKyAKKyBFWFRSQV9ESVNUID0gdm1ndWVzdGxpYi5wYy5pbgorIAorSW5kZXg6IG9wZW4tdm0tdG9vbHMvcnBjdG9vbC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9ycGN0b29sL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9ycGN0b29sL01ha2VmaWxlLmFtCitAQCAtMTcsMTAgKzE3LDEzIEBACisgCisgYmluX1BST0dSQU1TID0gdm13YXJlLXJwY3Rvb2wKKyAKKyt2bXdhcmVfcnBjdG9vbF9DRkxBR1M9IEBMSUJUSVJQQ19MSUJTQAorKworIHZtd2FyZV9ycGN0b29sX1NPVVJDRVMgPQorIHZtd2FyZV9ycGN0b29sX1NPVVJDRVMgKz0gcnBjdG9vbC5jCisgCisgdm13YXJlX3JwY3Rvb2xfTERBREQgPQorK3Ztd2FyZV9ycGN0b29sX0xEQUREICs9IEBMSUJUSVJQQ19MSUJTQAorIHZtd2FyZV9ycGN0b29sX0xEQUREICs9IC4uL2xpYi9ycGNPdXQvbGliUnBjT3V0LmxhCisgdm13YXJlX3JwY3Rvb2xfTERBREQgKz0gLi4vbGliL21lc3NhZ2UvbGliTWVzc2FnZS5sYQorIHZtd2FyZV9ycGN0b29sX0xEQUREICs9IC4uL2xpYi9iYWNrZG9vci9saWJCYWNrZG9vci5sYQorSW5kZXg6IG9wZW4tdm0tdG9vbHMvcnBjdG9vbC9ycGN0b29sLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvcnBjdG9vbC9ycGN0b29sLmMKKysrKyBvcGVuLXZtLXRvb2xzL3JwY3Rvb2wvcnBjdG9vbC5jCitAQCAtMjMsNiArMjMsOCBAQAorICAqLworIAorICNpZm5kZWYgX1dJTjMyCisrI2RlZmluZSBfR05VX1NPVVJDRQorKyNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSAic2lnUG9zaXhSZWdzLmgiCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorSW5kZXg6IG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL01ha2VmaWxlLmFtCitAQCAtMjMsNiArMjMsNyBAQCBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJkbmRjcC5sYQorIGxpYmRuZGNwX2xhX0NQUEZMQUdTID0KKyBsaWJkbmRjcF9sYV9DUFBGTEFHUyArPSBAR1RLX0NQUEZMQUdTQAorIGxpYmRuZGNwX2xhX0NQUEZMQUdTICs9IEBQTFVHSU5fQ1BQRkxBR1NACisrbGliZG5kY3BfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAorIGxpYmRuZGNwX2xhX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL2RuZAorIGxpYmRuZGNwX2xhX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL2RuZEd1ZXN0CisgbGliZG5kY3BfbGFfQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3Avc3RyaW5neHgKK0BAIC00NCw2ICs0NSw3IEBAIGxpYmRuZGNwX2xhX0xJQkFERCArPSBAR1RLX0xJQlNACisgbGliZG5kY3BfbGFfTElCQUREICs9IEBHVEtNTV9MSUJTQAorIGxpYmRuZGNwX2xhX0xJQkFERCArPSBAVk1UT09MU19MSUJTQAorIGxpYmRuZGNwX2xhX0xJQkFERCArPSBASEdGU19MSUJTQAorK2xpYmRuZGNwX2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKKyBsaWJkbmRjcF9sYV9MSUJBREQgKz0gJCh0b3BfYnVpbGRkaXIpL2xpYi9oZ2ZzVXJpL2hnZnNVcmlQb3NpeC5sbworIAorIGxpYmRuZGNwX2xhX1NPVVJDRVMgPQorSW5kZXg6IG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9ndWVzdEluZm8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvc2VydmljZXMvcGx1Z2lucy9ndWVzdEluZm8vTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZ3Vlc3RJbmZvL01ha2VmaWxlLmFtCitAQCAtMjIsNiArMjIsNyBAQCBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJndWVzdEluZm8ubGEKKyAKKyBsaWJndWVzdEluZm9fbGFfQ1BQRkxBR1MgPQorIGxpYmd1ZXN0SW5mb19sYV9DUFBGTEFHUyArPSBAUExVR0lOX0NQUEZMQUdTQAorK2xpYmd1ZXN0SW5mb19sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisgCisgbGliZ3Vlc3RJbmZvX2xhX0xERkxBR1MgPQorIGxpYmd1ZXN0SW5mb19sYV9MREZMQUdTICs9IEBQTFVHSU5fTERGTEFHU0AKK0luZGV4OiBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvcmVzb2x1dGlvblNldC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9zZXJ2aWNlcy9wbHVnaW5zL3Jlc29sdXRpb25TZXQvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvcmVzb2x1dGlvblNldC9NYWtlZmlsZS5hbQorQEAgLTIxLDYgKzIxLDcgQEAgcGx1Z2luX0xUTElCUkFSSUVTID0gbGlicmVzb2x1dGlvblNldC5sYQorIGxpYnJlc29sdXRpb25TZXRfbGFfQ1BQRkxBR1MgPQorIGxpYnJlc29sdXRpb25TZXRfbGFfQ1BQRkxBR1MgKz0gQEdUS19DUFBGTEFHU0AKKyBsaWJyZXNvbHV0aW9uU2V0X2xhX0NQUEZMQUdTICs9IEBQTFVHSU5fQ1BQRkxBR1NACisrbGlicmVzb2x1dGlvblNldF9sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisgbGlicmVzb2x1dGlvblNldF9sYV9DUFBGTEFHUyArPSAtRFJFU09MVVRJT05fWDExCisgCisgbGlicmVzb2x1dGlvblNldF9sYV9MREZMQUdTID0KK0BAIC0zMCw2ICszMSw3IEBAIGxpYnJlc29sdXRpb25TZXRfbGFfTElCQUREID0KKyBsaWJyZXNvbHV0aW9uU2V0X2xhX0xJQkFERCArPSBAQ09NTU9OX1hMSUJTQAorIGxpYnJlc29sdXRpb25TZXRfbGFfTElCQUREICs9IEBHVEtfTElCU0AKKyBsaWJyZXNvbHV0aW9uU2V0X2xhX0xJQkFERCArPSBAVk1UT09MU19MSUJTQAorK2xpYnJlc29sdXRpb25TZXRfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAorIAorIGxpYnJlc29sdXRpb25TZXRfbGFfU09VUkNFUyA9CisgbGlicmVzb2x1dGlvblNldF9sYV9TT1VSQ0VTICs9IGxpYnZtd2FyZWN0cmwuYworSW5kZXg6IG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy92aXgvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvc2VydmljZXMvcGx1Z2lucy92aXgvTWFrZWZpbGUuYW0KKysrKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdml4L01ha2VmaWxlLmFtCitAQCAtMjAsNiArMjAsNyBAQCBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJ2aXgubGEKKyAKKyBsaWJ2aXhfbGFfQ1BQRkxBR1MgPQorIGxpYnZpeF9sYV9DUFBGTEFHUyArPSBAUExVR0lOX0NQUEZMQUdTQAorK2xpYnZpeF9sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisgbGlidml4X2xhX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS92Z2F1dGgvcHVibGljCisgCisgbGlidml4X2xhX0xERkxBR1MgPQorQEAgLTI5LDYgKzMwLDcgQEAgbGlidml4X2xhX0xJQkFERCA9CisgbGlidml4X2xhX0xJQkFERCArPSBAVklYX0xJQkFEREAKKyBsaWJ2aXhfbGFfTElCQUREICs9IEBWTVRPT0xTX0xJQlNACisgbGlidml4X2xhX0xJQkFERCArPSBASEdGU19MSUJTQAorK2xpYnZpeF9sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACisgbGlidml4X2xhX0xJQkFERCArPSAkKHRvcF9idWlsZGRpcikvbGliL2F1dGgvbGliQXV0aC5sYQorIGxpYnZpeF9sYV9MSUJBREQgKz0gJCh0b3BfYnVpbGRkaXIpL2xpYi9mb3VuZHJ5TXNnL2xpYkZvdW5kcnlNc2cubGEKKyBsaWJ2aXhfbGFfTElCQUREICs9ICQodG9wX2J1aWxkZGlyKS9saWIvaW1wZXJzb25hdGUvbGliSW1wZXJzb25hdGUubGEKK0luZGV4OiBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdm1iYWNrdXAvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvc2VydmljZXMvcGx1Z2lucy92bWJhY2t1cC9NYWtlZmlsZS5hbQorKysrIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy92bWJhY2t1cC9NYWtlZmlsZS5hbQorQEAgLTIwLDYgKzIwLDcgQEAgcGx1Z2luX0xUTElCUkFSSUVTID0gbGlidm1iYWNrdXAubGEKKyAKKyBsaWJ2bWJhY2t1cF9sYV9DUFBGTEFHUyA9CisgbGlidm1iYWNrdXBfbGFfQ1BQRkxBR1MgKz0gQFBMVUdJTl9DUFBGTEFHU0AKKytsaWJ2bWJhY2t1cF9sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACisgCisgbGlidm1iYWNrdXBfbGFfTERGTEFHUyA9CisgbGlidm1iYWNrdXBfbGFfTERGTEFHUyArPSBAUExVR0lOX0xERkxBR1NACitAQCAtMjcsNiArMjgsNyBAQCBsaWJ2bWJhY2t1cF9sYV9MREZMQUdTICs9IEBQTFVHSU5fTERGTEFHCisgbGlidm1iYWNrdXBfbGFfTElCQUREID0KKyBsaWJ2bWJhY2t1cF9sYV9MSUJBREQgKz0gQEdPQkpFQ1RfTElCU0AKKyBsaWJ2bWJhY2t1cF9sYV9MSUJBREQgKz0gQFZNVE9PTFNfTElCU0AKKytsaWJ2bWJhY2t1cF9sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACisgCisgbGlidm1iYWNrdXBfbGFfU09VUkNFUyA9CisgbGlidm1iYWNrdXBfbGFfU09VUkNFUyArPSBudWxsUHJvdmlkZXIuYworSW5kZXg6IG9wZW4tdm0tdG9vbHMvdG9vbGJveC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW4tdm0tdG9vbHMub3JpZy90b29sYm94L01ha2VmaWxlLmFtCisrKysgb3Blbi12bS10b29scy90b29sYm94L01ha2VmaWxlLmFtCitAQCAtMjAsOSArMjAsMTEgQEAgYmluX1BST0dSQU1TID0gdm13YXJlLXRvb2xib3gtY21kCisgdm13YXJlX3Rvb2xib3hfY21kX0xEQUREID0KKyB2bXdhcmVfdG9vbGJveF9jbWRfTERBREQgKz0gLi4vbGliZ3Vlc3RsaWIvbGliZ3Vlc3RsaWIubGEKKyB2bXdhcmVfdG9vbGJveF9jbWRfTERBREQgKz0gQFZNVE9PTFNfTElCU0AKKyt2bXdhcmVfdG9vbGJveF9jbWRfTERBREQgKz0gQExJQlRJUlBDX0xJQlNACisgCisgdm13YXJlX3Rvb2xib3hfY21kX0NQUEZMQUdTID0KKyB2bXdhcmVfdG9vbGJveF9jbWRfQ1BQRkxBR1MgKz0gQFZNVE9PTFNfQ1BQRkxBR1NACisrdm13YXJlX3Rvb2xib3hfY21kX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKKyAKKyB2bXdhcmVfdG9vbGJveF9jbWRfU09VUkNFUyA9Cisgdm13YXJlX3Rvb2xib3hfY21kX1NPVVJDRVMgKz0gdG9vbGJveC1jbWQuYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAxMC1nbnUtdWNvbnRleHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDEwLWdudS11Y29udGV4dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWJlYWMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAxMC1nbnUtdWNvbnRleHQucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSAyNzQ0MmUyZGQyODdkMzkzZDdiM2Y4YmYxNjRhODg3YWZmZWY4NGRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorRGF0ZTogV2VkLCAxOCBOb3YgMjAxNSAxMDoyNzo1MSArMDAwMAorU3ViamVjdDogW1BBVENIIDEwLzExXSBnbnUtdWNvbnRleHQKKworLS0tCisgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9zaWdQb3NpeFJlZ3MuaCB8IDI0ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvc2lnUG9zaXhSZWdzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2luY2x1ZGUvc2lnUG9zaXhSZWdzLmgKKysrKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3NpZ1Bvc2l4UmVncy5oCitAQCAtMzMsNyArMzMsNyBAQAorICNpbmNsdWRlICJpbmNsdWRlQ2hlY2suaCIKKyAKKyAKKy0jaWYgX19saW51eF9fICAgICAgICAgLy8gV2UgbmVlZCB0aGUgUkVHX2ZvbyBvZmZzZXRzIGluIHRoZSBncmVnc2V0X3Q7CisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAvLyBXZSBuZWVkIHRoZSBSRUdfZm9vIG9mZnNldHMgaW4gdGhlIGdyZWdzZXRfdDsKKyAjICBkZWZpbmUgX0dOVV9TT1VSQ0UgLy8gX0dOVV9TT1VSQ0UgbWFwcyB0byBfX1VTRV9HTlUKKyAKKyAvKiBBbmQsIHRoZSBSRUdfZm9vIGRlZmluaXRpb25zIGNvbmZsaWN0IHdpdGggb3VyIG93biBpbiB4ODYuaCAqLworQEAgLTczLDcgKzczLDcgQEAKKyAjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+CisgI2VuZGlmCisgCistI2lmIF9fbGludXhfXworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjICBpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgIyAgICB1bmRlZiBSRUdfUkFYCisgIyAgICB1bmRlZiBSRUdfUkJYCitAQCAtMTk5LDcgKzE5OSw3IEBACisgI2RlZmluZSBTQ19FU1AodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQubWNfZXNwKQorICNkZWZpbmUgU0NfRUlQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0Lm1jX2VpcCkKKyAjZW5kaWYKKy0jZWxpZiBkZWZpbmVkIChzdW4pCisrI2VsaWYgIWRlZmluZWQgKF9fR0xJQkNfXykKKyAjaWZkZWYgX194ODZfNjRfXworICNkZWZpbmUgU0NfRUFYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19SQVhdKQorICNkZWZpbmUgU0NfRUJYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19SQlhdKQorQEAgLTIxOSwxNSArMjE5LDE1IEBACisgI2RlZmluZSBTQ19SMTQodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX1IxNF0pCisgI2RlZmluZSBTQ19SMTUodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX1IxNV0pCisgI2Vsc2UKKy0jZGVmaW5lIFNDX0VBWCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFQVhdKQorLSNkZWZpbmUgU0NfRUJYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VCWF0pCistI2RlZmluZSBTQ19FQ1godWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRUNYXSkKKy0jZGVmaW5lIFNDX0VEWCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFRFhdKQorLSNkZWZpbmUgU0NfRURJKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VESV0pCistI2RlZmluZSBTQ19FU0kodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRVNJXSkKKy0jZGVmaW5lIFNDX0VCUCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFQlBdKQorLSNkZWZpbmUgU0NfRVNQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VTUF0pCistI2RlZmluZSBTQ19FSVAodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRUlQXSkKKysjZGVmaW5lIFNDX0VBWCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUFYXSkKKysjZGVmaW5lIFNDX0VCWCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUJYXSkKKysjZGVmaW5lIFNDX0VDWCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUNYXSkKKysjZGVmaW5lIFNDX0VEWCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRURYXSkKKysjZGVmaW5lIFNDX0VESSh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRURJXSkKKysjZGVmaW5lIFNDX0VTSSh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRVNJXSkKKysjZGVmaW5lIFNDX0VCUCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUJQXSkKKysjZGVmaW5lIFNDX0VTUCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRVNQXSkKKysjZGVmaW5lIFNDX0VJUCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUlQXSkKKyAjZW5kaWYKKyAjZWxpZiBkZWZpbmVkKEFORFJPSURfWDg2KQorICNkZWZpbmUgU0NfRUFYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmVheCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMTEtVXNlLWNvbmZpZ3VyZS10ZXN0LWZvci1zeXMtc3RhdC5oLWluY2x1ZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDExLVVzZS1jb25maWd1cmUtdGVzdC1mb3Itc3lzLXN0YXQuaC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NzIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDExLVVzZS1jb25maWd1cmUtdGVzdC1mb3Itc3lzLXN0YXQuaC1pbmNsdWRlLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gOTVjNjE4NGQ5ZmY3MGE0N2M0MTc2ODg1MDkyM2E5NmRlOWU1NDRhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KK0RhdGU6IFdlZCwgMTggTm92IDIwMTUgMTA6NDE6MDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xMV0gVXNlIGNvbmZpZ3VyZSB0ZXN0IGZvciBzeXMvc3RhdC5oIGluY2x1ZGUKKworVGhpcyBpcyBuZWVkZWQgZm9yIG11c2wgbGliYy4KKworU2lnbmVkLW9mZi1ieTogTmF0YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPgorLS0tCisgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3ZpeC92aXhUb29scy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3ZpeC92aXhUb29scy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL3NlcnZpY2VzL3BsdWdpbnMvdml4L3ZpeFRvb2xzLmMKKysrKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdml4L3ZpeFRvb2xzLmMKK0BAIC02Niw3ICs2Niw3IEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisrI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNlbmRpZgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHNfMTAuMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHNfMTAuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZThlOTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4xLjUuYmIKQEAgLTAsMCArMSwxMDMgQEAKKyMgVGhpcyByZWNpcGUgaXMgbW9kaWZpZWQgZnJvbSB0aGUgcmVjaXBlIG9yaWdpbmFsbHkgZm91bmQgaW4gdGhlIE9wZW4tU3dpdGNoCisjIHJlcG9zaXRvcnk6CisjCisjIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXN3aXRjaC9vcHMtYnVpbGQKKyMgeW9jdG8vb3BlbnN3aXRjaC9tZXRhLWZvc3Mtb3BlbnN3aXRjaC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHNfMTAuMC41LmJiCisjIENvbW1pdCA5MDA4ZGUyZDhlMTAwZjNmODY4YzY2NzY1NzQyYmNhOWZhOThmM2Y5CisjCisjIFRoZSByZWNpcGUgcGFja2FnaW5nIGhhcyBiZWVuIHJlbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvciBpbmNsdXNpb24KKyMgaW4gbWV0YS1vcGVuZW1iZWRkZWQgYnkgYWdyZWVtZW50IG9mIHRoZSBhdXRob3IgKERpZWdvIERvbXBlKS4KKyMKKworU1VNTUFSWSA9ICJUb29scyB0byBlbmhhbmNlIFZNV2FyZSBndWVzdCBpbnRlZ3JhdGlvbiBhbmQgcGVyZm9ybWFuY2UiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdm13YXJlL29wZW4tdm0tdG9vbHMiCitTRUNUSU9OID0gInZtd2FyZS10b29scyIKKworTElDRU5TRSA9ICJMR1BMLTIuMCAmIEdQTC0yLjAgJiBCU0QgJiBDRERMLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2NmJhNGNiNGZjMDE3NjgyYzk1ZWZjMzAwNDEwZTc5IgorTElDRU5TRV9tb2R1bGVzL2ZyZWVic2Qvdm1ibG9jayA9ICJCU0QiCitMSUNFTlNFX21vZHVsZXMvZnJlZWJzZC92bW1lbWN0bCA9ICJHUEwtMi4wIgorTElDRU5TRV9tb2R1bGVzL2ZyZWVic2Qvdm14bmV0ID0gIkdQTC0yLjAiCitMSUNFTlNFX21vZHVsZXMvbGludXggPSAiR1BMLTIuMCIKK0xJQ0VOU0VfbW9kdWxlcy9zb2xhcmlzID0gIkNEREwtMS4wIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdm13YXJlL29wZW4tdm0tdG9vbHMuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL3Rvb2xzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vdm10b29sc2Quc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC11c2UtZG5ldC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1hZGQtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtYXNzdW1wdGlvbnMtYWJvdXQtZ2xpYmMtYmVpbmctb25seS1saWJjLWltcGxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1vYnNvbGV0ZS1zeXMtcG9sbC5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtUmVuYW1lLXBvbGwuaC10by12bV9wb2xsLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzLWFuZC1Xbm8tZXJyb3ItYWRkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtVXNlLWNvbmZpZ3VyZS10ZXN0LWZvci1zdHJ1Y3QtdGltZXNwZWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtZGVmaW5pdGlvbi1vZi1BTExQRVJNUy1hbmQtQUNDRVNTUEVSTVMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1Vc2UtY29uZmlndXJlLXRvLXRlc3QtZm9yLWZlYXR1cmUtaW5zdGVhZC1vZi1wbGF0Zm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtdXNlLXBvc2l4LXN0cmVycm9yX3ItdW5sZXNzLWdudS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLVVzZS1jb25maWd1cmUtdGVzdC1mb3Itc3lzLXN0YXQuaC1pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDktQWRkLXN1cHBvcnQtZm9yLWJ1aWxkaW5nLXdpdGgtc3lzdGVtLWxpYnRpcnBjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtZ251LXVjb250ZXh0LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjg1NGMwYmIzNzQ2MTJmN2U2MzNiNDQ4Y2EyNzNmOTcwZjE1NDQ1OGIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvb3Blbi12bS10b29scyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgdXRpbC1saW51eCBsaWJkbmV0IHByb2NwcyIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCisKKyMgb3Blbi12bS10b29scyBpcyBzdXBwb3J0ZWQgb25seSBvbiB4ODYuCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKiktbGludXgnCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ2bXRvb2xzZC5zZXJ2aWNlIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWljdSAtLWRpc2FibGUtbXVsdGltb24gLS1kaXNhYmxlLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS10ZXN0cyAtLXdpdGhvdXQtZ3RrbW0gLS13aXRob3V0LXhlcmNlcyAtLXdpdGhvdXQtcGFtIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3JhYmJpdG1xcHJveHkgLS1kaXNhYmxlLXZnYXV0aCAtLWRpc2FibGUtZGVwbG95cGtnIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcm9vdC1wcml2aWxlZ2VzIC0td2l0aG91dC1rZXJuZWwtbW9kdWxlcyIKKworTk9fWDExX0ZMQUdTID0gIi0td2l0aG91dC14IC0td2l0aG91dC1ndGsyIC0td2l0aG91dC1ndGszIgorWDExX0RFUEVORFMgPSAibGlieGV4dCBsaWJ4aSBsaWJ4cmVuZGVyIGxpYnhyYW5kciBsaWJ4dHN0IGd0aysgZ2RrLXBpeGJ1ZiIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICIsJHtOT19YMTFfRkxBR1N9LCR7WDExX0RFUEVORFN9IgorCisjIGZ1c2UgZ2V0cyBpbXBsaWNpdGx5IGRldGVjdGVkOyB0aGVyZSBpcyBubyAtLXdpdGhvdXQtZnVzZSBvcHRpb24uCitQQUNLQUdFQ09ORklHW2Z1c2VdID0gIiwsZnVzZSIKKworQ0ZMQUdTX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIgorRklMRVNfJHtQTn0gKz0gIlwKKyAgICAke2xpYmRpcn0vb3Blbi12bS10b29scy9wbHVnaW5zL3Ztc3ZjL2xpYiouc28gXAorICAgICR7bGliZGlyfS9vcGVuLXZtLXRvb2xzL3BsdWdpbnMvY29tbW9uL2xpYiouc28gXAorICAgICR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzL3Rvb2xzLmNvbmYgXAorICAgICIKK0ZJTEVTXyR7UE59LWxvY2FsZSArPSAiJHtkYXRhZGlyfS9vcGVuLXZtLXRvb2xzL21lc3NhZ2VzIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vb3Blbi12bS10b29scy9wbHVnaW5zL2NvbW1vbi9saWIqLmxhIgorRklMRVNfJHtQTn0tZGJnICs9ICJcCisgICAgJHtsaWJkaXJ9L29wZW4tdm0tdG9vbHMvcGx1Z2lucy9jb21tb24vLmRlYnVnIFwKKyAgICAke2xpYmRpcn0vb3Blbi12bS10b29scy9wbHVnaW5zL3Ztc3ZjLy5kZWJ1ZyBcCisgICAgIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzL3Rvb2xzLmNvbmYiCisKK1JERVBFTkRTXyR7UE59ID0gInV0aWwtbGludXggbGliZG5ldCBmdXNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBsbiAtc2YgJHtzYmluZGlyfS9tb3VudC52bWhnZnMgJHtEfS9zYmluL21vdW50LnZtaGdmcworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gJHtEfSR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90b29scy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Ztd2FyZS10b29scy90b29scy5jb25mCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBDVVNUT01fRE5FVF9OQU1FPWRuZXQKKyAgICBleHBvcnQgQ1VTVE9NX0RORVRfTElCUz0tTCR7U1RBR0lOR19MSUJESVJ9L2xpYmRuZXQuc28KK30KKworcHl0aG9uKCkgeworICAgIGlmICduZXR3b3JraW5nLWxheWVyJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCkgb3IgXAorCSdmaWxlc3lzdGVtcy1sYXllcicgbm90IGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKS5zcGxpdCgpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCdSZXF1aXJlcyBtZXRhLW5ldHdvcmtpbmcgYW5kIG1ldGEtZmlsZXN5c3RlbXMgdG8gYmUgcHJlc2VudC4nKQorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Qvb3BlbmN0XzAuNi4yMC5iYgppbmRleCAwZjU1NjhjLi5jN2Q3MjAzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN0L29wZW5jdF8wLjYuMjAuYmIKQEAgLTEsNCArMSw1IEBACiBTdW1tYW5yeSA9ICJNaWRkbGV3YXJlIGZyYW1ld29yayBmb3Igc21hcnQgY2FyZCB0ZXJtaW5hbHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vT3BlblNDL29wZW5jdC93aWtpIgogREVTQ1JJUFRJT04gPSAiIFwKIE9wZW5DVCBpbXBsZW1lbnRzIGRyaXZlcnMgZm9yIHNldmVyYWwgc21hcnQgY2FyZCByZWFkZXJzLiBcCiBJdCBjb21lcyBhcyBkcml2ZXIgaW4gaWZkaGFuZGxlciBmb3JtYXQgZm9yIFBDL1NDLUxpdGUsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi1zYW1wbGVzXzIuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi1zYW1wbGVzXzIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA3MTg0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3Ytc2FtcGxlc18yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5jdiA6IFRoZSBPcGVuIENvbXB1dGVyIFZpc2lvbiBMaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL29wZW5jdi53aWxsb3dnYXJhZ2UuY29tL3dpa2kvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QiCi0KLURFUEVORFMgPSAib3BlbmN2IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbmNsdWRlL29wZW5jdjIvb3BlbmN2LmhwcDtlbmRsaW5lPTQxO21kNT02ZDY5MGQ4NDg4YTZmY2E3YTJjMTkyOTMyNDY2YmIxNCBcCi0iCi1TUkNSRVYgPSAiNmZhZTA3YmE4ODY3YjhmZDJjNTMzNDRhNzc0YWFiNjY5YWZhN2M1ZSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9JdHNlZXovb3BlbmN2LmdpdDticmFuY2g9Mi40IFwKLSAgICAgICAgICAiCi1QViA9ICIyLjQuMytnaXQke1NSQ1BWfSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBjZCBzYW1wbGVzL2MKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vb3BlbmN2L3NhbXBsZXMKLQotICAgIGNwICogJHtEfS8ke2RhdGFkaXJ9L29wZW5jdi9zYW1wbGVzIHx8IHRydWUKLQotICAgIGZvciBpIGluICouYzsgZG8KLSAgICAgICAgZWNobyAiY29tcGlsaW5nICRpIgotICAgICAgICAke0NYWH0gJHtDRkxBR1N9ICR7TERGTEFHU30gLWdnZGIgYHBrZy1jb25maWcgLS1jZmxhZ3Mgb3BlbmN2YCAtbyBgYmFzZW5hbWUgJGkgLmNgICRpIGBwa2ctY29uZmlnIC0tbGlicyBvcGVuY3ZgIHx8IHRydWUKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IGBiYXNlbmFtZSAkaSAuY2AgJHtEfS8ke2JpbmRpcn0gfHwgdHJ1ZQotICAgICAgICBybSAke0R9LyR7ZGF0YWRpcn0vb3BlbmN2L3NhbXBsZXMvYGJhc2VuYW1lICRpIC5jYCB8fCB0cnVlCi0gICAgZG9uZQotICAgIGZvciBpIGluICouY3BwOyBkbwotICAgICAgICBlY2hvICJjb21waWxpbmcgJGkiCi0gICAgICAgICR7Q1hYfSAke0NGTEFHU30gJHtMREZMQUdTfSAtZ2dkYiBgcGtnLWNvbmZpZyAtLWNmbGFncyBvcGVuY3ZgIC1vIGBiYXNlbmFtZSAkaSAuY3BwYCAkaSBgcGtnLWNvbmZpZyAtLWxpYnMgb3BlbmN2YCB8fCB0cnVlCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSBgYmFzZW5hbWUgJGkgLmNwcGAgJHtEfS8ke2JpbmRpcn0gfHwgdHJ1ZQotICAgICAgICBybSAke0R9LyR7ZGF0YWRpcn0vb3BlbmN2L3NhbXBsZXMvYGJhc2VuYW1lICRpIC5jcHBgIHx8IHRydWUKLSAgICBkb25lCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9vcGVuY3Yvc2FtcGxlcy8qLmMqICR7ZGF0YWRpcn0vb3BlbmN2L3NhbXBsZXMvKi52Y3AqICR7ZGF0YWRpcn0vb3BlbmN2L3NhbXBsZXMvYnVpbGQqIgotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSAke2RhdGFkaXJ9L29wZW5jdiIKLQotUE5CTEFDS0xJU1Rbb3BlbmN2LXNhbXBsZXNdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIG9wZW5jdiAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLTNyZHBhcnR5LWlwcGljdi1Vc2UtcHJlLWRvd25sb2FkZWQtaXBwLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtM3JkcGFydHktaXBwaWN2LVVzZS1wcmUtZG93bmxvYWRlZC1pcHAucGF0Y2gKaW5kZXggMTA3N2QwNS4uNGQ3NmFkNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtM3JkcGFydHktaXBwaWN2LVVzZS1wcmUtZG93bmxvYWRlZC1pcHAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtM3JkcGFydHktaXBwaWN2LVVzZS1wcmUtZG93bmxvYWRlZC1pcHAucGF0Y2gKQEAgLTEsMjggKzEsMzggQEAKLUZyb20gMDQ5ZjkzMTIwNzYzMWFhNTRhZjU1YTI5MTczMThkMDMyYjJlZjNmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDgwMWEwNTc3MzA2MzIyMjUzMzdkN2Y2ZDI2YjkzMzVlNmI5YjA3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgogRGF0ZTogVGh1LCAzMSBNYXIgMjAxNiAwMDoyMDoxNSArMDIwMAogU3ViamVjdDogW1BBVENIXSAzcmRwYXJ0eS9pcHBpY3Y6IFVzZSBwcmUtZG93bmxvYWRlZCBpcHAKIAogU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBJc21vIFB1dXN0aW5lbiA8aXNtby5wdXVzdGluZW5AaW50ZWwuY29tPgogLS0tCi0gM3JkcGFydHkvaXBwaWN2L2Rvd25sb2FkZXIuY21ha2UgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorIDNyZHBhcnR5L2lwcGljdi9pcHBpY3YuY21ha2UgfCAxNSArLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDE0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvaXBwaWN2L2Rvd25sb2FkZXIuY21ha2UgYi8zcmRwYXJ0eS9pcHBpY3YvZG93bmxvYWRlci5jbWFrZQotaW5kZXggYTYwMTZkYmUxMGJjLi5hZjQwNjJjOGU5NWUgMTAwNjQ0Ci0tLS0gYS8zcmRwYXJ0eS9pcHBpY3YvZG93bmxvYWRlci5jbWFrZQotKysrIGIvM3JkcGFydHkvaXBwaWN2L2Rvd25sb2FkZXIuY21ha2UKLUBAIC0zMSw4ICszMSwxMCBAQCBmdW5jdGlvbihfaWN2X2Rvd25sb2FkZXIpCi0gICAgIHJldHVybigpICMgTm90IHN1cHBvcnRlZAorZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2lwcGljdi9pcHBpY3YuY21ha2UgYi8zcmRwYXJ0eS9pcHBpY3YvaXBwaWN2LmNtYWtlCitpbmRleCBkNjAxZGE0YmIuLmY2ZmMxMDk4YyAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2lwcGljdi9pcHBpY3YuY21ha2UKKysrKyBiLzNyZHBhcnR5L2lwcGljdi9pcHBpY3YuY21ha2UKK0BAIC0zOSwxOCArMzksNSBAQCBmdW5jdGlvbihkb3dubG9hZF9pcHBpY3Ygcm9vdF92YXIpCiAgICBlbmRpZigpCiAgCi0rICBpZihOT1QgREVGSU5FRCBPUEVOQ1ZfSUNWX1BBVEgpCi0gICBzZXQoT1BFTkNWX0lDVl9VTlBBQ0tfUEFUSCAiJHtDTUFLRV9CSU5BUllfRElSfS8zcmRwYXJ0eS9pcHBpY3YiKQotICAgc2V0KE9QRU5DVl9JQ1ZfUEFUSCAiJHtPUEVOQ1ZfSUNWX1VOUEFDS19QQVRIfSR7T1BFTkNWX0lDVl9QQUNLQUdFX1NVQkRJUn0iKQotKyAgZW5kaWYoKQotIAotICAgaWYoREVGSU5FRCBPUEVOQ1ZfSUNWX1BBQ0tBR0VfRE9XTkxPQURFRAotICAgICAgICBBTkQgT1BFTkNWX0lDVl9QQUNLQUdFX0RPV05MT0FERUQgU1RSRVFVQUwgT1BFTkNWX0lDVl9QQUNLQUdFX0hBU0gKKyAgIHNldChUSEVfUk9PVCAiJHtPcGVuQ1ZfQklOQVJZX0RJUn0vM3JkcGFydHkvaXBwaWN2IikKKy0gIG9jdl9kb3dubG9hZChGSUxFTkFNRSAke09QRU5DVl9JQ1ZfTkFNRX0KKy0gICAgICAgICAgICAgICBIQVNIICR7T1BFTkNWX0lDVl9IQVNIfQorLSAgICAgICAgICAgICAgIFVSTAorLSAgICAgICAgICAgICAgICAgIiR7T1BFTkNWX0lQUElDVl9VUkx9IgorLSAgICAgICAgICAgICAgICAgIiRFTlZ7T1BFTkNWX0lQUElDVl9VUkx9IgorLSAgICAgICAgICAgICAgICAgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LyR7SVBQSUNWX0NPTU1JVH0vaXBwaWN2LyIKKy0gICAgICAgICAgICAgICBERVNUSU5BVElPTl9ESVIgIiR7VEhFX1JPT1R9IgorLSAgICAgICAgICAgICAgIElEIElQUElDVgorLSAgICAgICAgICAgICAgIFNUQVRVUyByZXMKKy0gICAgICAgICAgICAgICBVTlBBQ0sgUkVMQVRJVkVfVVJMKQorLQorLSAgaWYocmVzKQorLSAgICBzZXQoJHtyb290X3Zhcn0gIiR7VEhFX1JPT1R9LyR7T1BFTkNWX0lDVl9QQUNLQUdFX1NVQkRJUn0iIFBBUkVOVF9TQ09QRSkKKy0gIGVuZGlmKCkKKysgIHNldCgke3Jvb3RfdmFyfSAiJHtUSEVfUk9PVH0vJHtPUEVOQ1ZfSUNWX1BBQ0tBR0VfU1VCRElSfSIgUEFSRU5UX1NDT1BFKQorIGVuZGZ1bmN0aW9uKCkKIC0tIAotMi44LjAucmMzCisyLjEzLjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtRG9udC11c2UtaXN5c3RlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLURvbnQtdXNlLWlzeXN0ZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRkNDhmYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLURvbnQtdXNlLWlzeXN0ZW0ucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSAyYmM2YmI5ODMxZDA3ZjAzNWZlYTc0ZWE3NDVjZWE0M2RkNWY5ZWY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgOSBTZXAgMjAxNyAyMzo0ODozMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEb250IHVzZSBpc3lzdGVtCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgY21ha2UvT3BlbkNWUENIU3VwcG9ydC5jbWFrZSB8IDEwICsrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L2NtYWtlL09wZW5DVlBDSFN1cHBvcnQuY21ha2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jbWFrZS9PcGVuQ1ZQQ0hTdXBwb3J0LmNtYWtlCisrKysgZ2l0L2NtYWtlL09wZW5DVlBDSFN1cHBvcnQuY21ha2UKK0BAIC0xNyw3ICsxNyw4IEBAIElGKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNYWCkKKyAgICAgSUYoTk9UIENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyAiNC4yLjAiKQorICAgICAgICAgU0VUKFBDSFN1cHBvcnRfRk9VTkQgVFJVRSkKKyAgICAgRU5ESUYoKQorLQorKyAgICBTRVQoQ01BS0VfSU5DTFVERV9TWVNURU1fRkxBR19DICItSSIpCisrICAgIFNFVChDTUFLRV9JTkNMVURFX1NZU1RFTV9GTEFHX0NYWCAiLUkiKQorICAgICBTRVQoX1BDSF9pbmNsdWRlX3ByZWZpeCAiLUkiKQorICAgICBTRVQoX1BDSF9pc3lzdGVtX3ByZWZpeCAiLWlzeXN0ZW0iKQorICAgICBTRVQoX1BDSF9kZWZpbmVfcHJlZml4ICItRCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1NYWtlLW9wZW5jdi10cy1jcmVhdGUtc2hhcmUtbGlicmFyeS1pbnRlYWQtb2Ytc3RhdGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtTWFrZS1vcGVuY3YtdHMtY3JlYXRlLXNoYXJlLWxpYnJhcnktaW50ZWFkLW9mLXN0YXRpYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVlYzQxZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1NYWtlLW9wZW5jdi10cy1jcmVhdGUtc2hhcmUtbGlicmFyeS1pbnRlYWQtb2Ytc3RhdGljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSA0OWQxZjdjNDBhNWQwOTdmMjM2NzEzMTgwNDVhYzU0YmMwNzg0NmNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmlhbiBOYWltZW5nIDxiaWFubm1AY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBXZWQsIDE5IEFwciAyMDE3IDAzOjExOjM3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2Ugb3BlbmN2LXRzIGNyZWF0ZSBzaGFyZSBsaWJyYXJ5IGludGVhZCBvZiBzdGF0aWMuCi0KLVNpZ25lZC1vZmYtYnk6IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KLS0tLQotIG1vZHVsZXMvdHMvQ01ha2VMaXN0cy50eHQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RzL0NNYWtlTGlzdHMudHh0IGIvbW9kdWxlcy90cy9DTWFrZUxpc3RzLnR4dAotaW5kZXggYmI1NmRhMi4uN2JiNGNlOSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL21vZHVsZXMvdHMvQ01ha2VMaXN0cy50eHQKLUBAIC00LDcgKzQsNyBAQCBpZihJT1MpCi0gICBvY3ZfbW9kdWxlX2Rpc2FibGUodHMpCi0gZW5kaWYoKQotIAotLXNldChPUEVOQ1ZfTU9EVUxFX1RZUEUgU1RBVElDKQotKyNzZXQoT1BFTkNWX01PRFVMRV9UWVBFIFNUQVRJQykKLSBzZXQoT1BFTkNWX01PRFVMRV9JU19QQVJUX09GX1dPUkxEIEZBTFNFKQotIAotIG9jdl93YXJuaW5nc19kaXNhYmxlKENNQUtFX0NYWF9GTEFHUyAtV3VuZGVmKQotLS0gCi0xLjguNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLVJldmVydC1jdWRhLWZpeC1mcDE2LWNvbXBpbGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtUmV2ZXJ0LWN1ZGEtZml4LWZwMTYtY29tcGlsYXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwN2Q3OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtUmV2ZXJ0LWN1ZGEtZml4LWZwMTYtY29tcGlsYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDY5Zjk3MDc2NzgxOTBmNmEwOTQ4YTU0N2RjZTk0ODI1MWY5NzI2NzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDI2IEFwciAyMDE3IDE0OjU3OjMwIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBSZXZlcnQgImN1ZGE6IGZpeCBmcDE2IGNvbXBpbGF0aW9uIgotCi1UaGlzIHJldmVydHMgY29tbWl0IDEyZTAwODI3YmU0MDU3NmI2ODZlYTQ0MzhhNmU2ZWY4NTIwODc0M2QuCi0tLS0KLSBtb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY3ZkZWYuaCB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2N2ZGVmLmggYi9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY3ZkZWYuaAotaW5kZXggNjk5YjE2Ni4uZWZjMjRjYSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jdmRlZi5oCi0rKysgYi9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY3ZkZWYuaAotQEAgLTMwMyw4ICszMDMsNyBAQCBlbnVtIENwdUZlYXR1cmVzIHsKLSAjZGVmaW5lIENWXzJQSSA2LjI4MzE4NTMwNzE3OTU4NjQ3NjkyNTI4Njc2NjU1OQotICNkZWZpbmUgQ1ZfTE9HMiAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE4Ci0gCi0tI2lmIGRlZmluZWQgX19BUk1fRlAxNl9GT1JNQVRfSUVFRSBcCi0tICAgICYmICFkZWZpbmVkIF9fQ1VEQUNDX18KLSsjaWYgZGVmaW5lZCAoX19BUk1fRlAxNl9GT1JNQVRfSUVFRSkKLSAjICBkZWZpbmUgQ1ZfRlAxNl9UWVBFIDEKLSAjZWxzZQotICMgIGRlZmluZSBDVl9GUDE2X1RZUEUgMAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1Uby1maXgtZXJyb3JzLWFzLWZvbGxvd2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjBhYjgxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBkYjFkOWNjODJiNjhmNjU5MzM2MGQ2NmVmNDBjYjZiMGZjMzc3ZTZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgotRGF0ZTogRnJpLCAxOSBNYXkgMjAxNyAwNDoyNzo1MCArMDkwMAotU3ViamVjdDogW1BBVENIXSBUbyBmaXggZXJyb3JzIGFzIGZvbGxvd2luZzoKLQotInRlc3RfbWFpbi5jcHA6NDU6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHBhcnNlQ3VzdG9tT3B0aW9ucyhpbnQsIGNoYXIqKiknIgotInBlcmZfYWJzLmNwcDoxMzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY3Z0ZXN0OjpwYXJhbV9zZWVkJyIKLSJ0ZXN0X3N1cGVycmVzLmNwcDoyNzA6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNoZWNrSXBwU3RhdHVzKCknIgotCi1TaWduZWQtb2ZmLWJ5OiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+Ci0tLS0KLSBtb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy5ocHAgICAgICAgIHwgNCArKy0tCi0gbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvdHNfZXh0LmhwcCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcCBiL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcAotaW5kZXggYzU3MzkwNS4uN2ZmNmNjMSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcAotKysrIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCi1AQCAtNTM5LDcgKzUzOSw3IEBAIHByb3RlY3RlZDoKLSAgICAgfQotIH07Ci0gCi0tZXh0ZXJuIHVpbnQ2NCBwYXJhbV9zZWVkOwotK0NWX0VYUE9SVFMgZXh0ZXJuIHVpbnQ2NCBwYXJhbV9zZWVkOwotIAotIHN0cnVjdCBDVl9FWFBPUlRTIERlZmF1bHRSbmdBdXRvCi0gewotQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIGR1bXBPcGVuQ0xEZXZpY2UoKTsKLSAjZGVmaW5lIFRFU1RfRFVNUF9PQ0xfSU5GTwotICNlbmRpZgotIAotLXZvaWQgcGFyc2VDdXN0b21PcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndik7Ci0rQ1ZfRVhQT1JUUyB2b2lkIHBhcnNlQ3VzdG9tT3B0aW9ucyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwotIAotICNkZWZpbmUgQ1ZfVEVTVF9NQUlOKHJlc291cmNlc3ViZGlyLCAuLi4pIFwKLSBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIFwKLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvdHNfZXh0LmhwcAotaW5kZXggMDVjY2M2My4uODA3NTA2NSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAKLSsrKyBiL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAKLUBAIC05LDcgKzksNyBAQAotICNkZWZpbmUgT1BFTkNWX1RTX0VYVF9IUFAKLSAKLSBuYW1lc3BhY2UgY3Z0ZXN0IHsKLS12b2lkIGNoZWNrSXBwU3RhdHVzKCk7Ci0rQ1ZfRVhQT1JUUyB2b2lkIGNoZWNrSXBwU3RhdHVzKCk7Ci0gfQotIAotICNkZWZpbmUgQ1ZfVEVTVF9JTklUIFwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtVXNlLV9fdmVjdG9yLWluc3RlYWQtb2YtdmVjdG9yLWFzLXN1Z2dlc3RzLUVpZ2VuLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtVXNlLV9fdmVjdG9yLWluc3RlYWQtb2YtdmVjdG9yLWFzLXN1Z2dlc3RzLUVpZ2VuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjgwOWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLVVzZS1fX3ZlY3Rvci1pbnN0ZWFkLW9mLXZlY3Rvci1hcy1zdWdnZXN0cy1FaWdlbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gNzExZjA3YTM0Y2ViNTA0ZThmNzVlOTc4NjkyMjAxZWZhNTgyNjhjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERpbmFyIFZhbGVldiA8ZHZhbGVldkBzdXNlLmNvbT4KLURhdGU6IFRodSwgMTYgSmFuIDIwMTQgMjE6NTM6NDkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIF9fdmVjdG9yIGluc3RlYWQgb2YgdmVjdG9yIGFzIHN1Z2dlc3RzIEVpZ2VuCi0KLVRoaXMgZml4ZXMgYnVpbGQgb24gUG93ZXJQQyB3aGVyZSBFaWdlbiB1bnNldHMgdmVjdG9yLCBib29sIGFuZCBwaXhlbAotCi1TaWduZWQtb2ZmLWJ5OiBEaW5hciBWYWxlZXYgPGR2YWxlZXZAc3VzZS5jb20+Ci0KLVRoaXMgcGF0Y2ggaXMgYWxyZWFkeSBwYXJ0IG9mIE9wZW5DViB2My4wLiBUaGUgcGF0Y2ggY2FuIGJlIG9idGFpbmVkCi1mcm9tOgotCi0gIGh0dHBzOi8vZ2l0aHViLmNvbS9JdHNlZXovb3BlbmN2L2NvbW1pdC83MTFmMDdhMzRjZWI1MDRlOGY3NWU5Nzg2OTIyMDFlZmE1ODI2OGNhLnBhdGNoCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2NvbW1pdCA3MTFmMDdhMzRjLCBwYXJ0IG9mIHZlcnNpb24gMy4wXQotCi1TaWduZWQtb2ZmLWJ5OiBMdWthcyBCdWx3YWhuIDxsdWthcy5idWx3YWhuQG9zcy5ibXctY2FyaXQuZGU+Ci0tLS0KLSAzcmRwYXJ0eS9pbmNsdWRlL29wZW5jbC8xLjIvQ0wvY2xfcGxhdGZvcm0uaCB8IDE0ICsrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2luY2x1ZGUvb3BlbmNsLzEuMi9DTC9jbF9wbGF0Zm9ybS5oIGIvM3JkcGFydHkvaW5jbHVkZS9vcGVuY2wvMS4yL0NML2NsX3BsYXRmb3JtLmgKLWluZGV4IGU5NDk0OWEuLjQyYzM1ZDUgMTAwNjQ0Ci0tLS0gYS8zcmRwYXJ0eS9pbmNsdWRlL29wZW5jbC8xLjIvQ0wvY2xfcGxhdGZvcm0uaAotKysrIGIvM3JkcGFydHkvaW5jbHVkZS9vcGVuY2wvMS4yL0NML2NsX3BsYXRmb3JtLmgKLUBAIC0zMzIsMTMgKzMzMiwxMyBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBjbF9HTGVudW07Ci0gLyogRGVmaW5lIGJhc2ljIHZlY3RvciB0eXBlcyAqLwotICNpZiBkZWZpbmVkKCBfX1ZFQ19fICkKLSAgICAjaW5jbHVkZSA8YWx0aXZlYy5oPiAgIC8qIG1heSBiZSBvbWl0dGVkIGRlcGVuZGluZyBvbiBjb21waWxlci4gQWx0aVZlYyBzcGVjIHByb3ZpZGVzIG5vIHdheSB0byBkZXRlY3Qgd2hldGhlciB0aGUgaGVhZGVyIGlzIHJlcXVpcmVkLiAqLwotLSAgIHR5cGVkZWYgdmVjdG9yIHVuc2lnbmVkIGNoYXIgICAgIF9fY2xfdWNoYXIxNjsKLS0gICB0eXBlZGVmIHZlY3RvciBzaWduZWQgY2hhciAgICAgICBfX2NsX2NoYXIxNjsKLS0gICB0eXBlZGVmIHZlY3RvciB1bnNpZ25lZCBzaG9ydCAgICBfX2NsX3VzaG9ydDg7Ci0tICAgdHlwZWRlZiB2ZWN0b3Igc2lnbmVkIHNob3J0ICAgICAgX19jbF9zaG9ydDg7Ci0tICAgdHlwZWRlZiB2ZWN0b3IgdW5zaWduZWQgaW50ICAgICAgX19jbF91aW50NDsKLS0gICB0eXBlZGVmIHZlY3RvciBzaWduZWQgaW50ICAgICAgICBfX2NsX2ludDQ7Ci0tICAgdHlwZWRlZiB2ZWN0b3IgZmxvYXQgICAgICAgICAgICAgX19jbF9mbG9hdDQ7Ci0rICAgdHlwZWRlZiBfX3ZlY3RvciB1bnNpZ25lZCBjaGFyICAgICBfX2NsX3VjaGFyMTY7Ci0rICAgdHlwZWRlZiBfX3ZlY3RvciBzaWduZWQgY2hhciAgICAgICBfX2NsX2NoYXIxNjsKLSsgICB0eXBlZGVmIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0ICAgIF9fY2xfdXNob3J0ODsKLSsgICB0eXBlZGVmIF9fdmVjdG9yIHNpZ25lZCBzaG9ydCAgICAgIF9fY2xfc2hvcnQ4OwotKyAgIHR5cGVkZWYgX192ZWN0b3IgdW5zaWduZWQgaW50ICAgICAgX19jbF91aW50NDsKLSsgICB0eXBlZGVmIF9fdmVjdG9yIHNpZ25lZCBpbnQgICAgICAgIF9fY2xfaW50NDsKLSsgICB0eXBlZGVmIF9fdmVjdG9yIGZsb2F0ICAgICAgICAgICAgIF9fY2xfZmxvYXQ0OwotICAgICNkZWZpbmUgIF9fQ0xfVUNIQVIxNl9fICAxCi0gICAgI2RlZmluZSAgX19DTF9DSEFSMTZfXyAgIDEKLSAgICAjZGVmaW5lICBfX0NMX1VTSE9SVDhfXyAgMQotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1idWlsZC13b3JrYXJvdW5kLUdDQy03LjEuMS1jb21waWxhdGlvbi1pc3N1ZS13aXRoLXNhLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtYnVpbGQtd29ya2Fyb3VuZC1HQ0MtNy4xLjEtY29tcGlsYXRpb24taXNzdWUtd2l0aC1zYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTQwNjMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtYnVpbGQtd29ya2Fyb3VuZC1HQ0MtNy4xLjEtY29tcGlsYXRpb24taXNzdWUtd2l0aC1zYS5wYXRjaApAQCAtMCwwICsxLDEyNyBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvcHVsbC85Mzc2L2NvbW1pdHMvMGQ4NTRkYjM2MTEwNmRmY2IwNTUyMzFmZDAxMTJjNWI4NWVmMjI4N10KKworRml4IENWRXMgZm9yIG9wZW5jdiAzLjMuCisKKyogQ1ZFLTIwMTctMTI1OTcKKyogQ1ZFLTIwMTctMTI1OTgKKyogQ1ZFLTIwMTctMTI1OTkKKyogQ1ZFLTIwMTctMTI2MDAKKyogQ1ZFLTIwMTctMTI2MDEKKyogQ1ZFLTIwMTctMTI2MDIKKyogQ1ZFLTIwMTctMTI2MDMKKyogQ1ZFLTIwMTctMTI2MDQKKyogQ1ZFLTIwMTctMTI2MDUKKyogQ1ZFLTIwMTctMTI2MDYKKyogQ1ZFLTIwMTctMTI4NjIKKyogQ1ZFLTIwMTctMTI4NjMKKyogQ1ZFLTIwMTctMTI4NjQKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK0Zyb20gMGQ4NTRkYjM2MTEwNmRmY2IwNTUyMzFmZDAxMTJjNWI4NWVmMjI4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBBbGVraGluIDxhbGV4YW5kZXIuYS5hbGVraGluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMjE6NDU6MDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIGJ1aWxkOiB3b3JrYXJvdW5kIEdDQyA3LjEuMSBjb21waWxhdGlvbiBpc3N1ZSB3aXRoCisgc2FuaXRpemUgZmxhZ3MKKworVmVyc2lvbjogZ2NjIChHQ0MpIDcuMS4xIDIwMTcwNjIyIChSZWQgSGF0IDcuMS4xLTMpCitGbGFnczogLWZzYW5pdGl6ZT1hZGRyZXNzLHVuZGVmaW5lZAorLS0tCisgbW9kdWxlcy90cy9zcmMvY3VkYV90ZXN0LmNwcCB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy90cy9zcmMvY3VkYV90ZXN0LmNwcCBiL21vZHVsZXMvdHMvc3JjL2N1ZGFfdGVzdC5jcHAKK2luZGV4IGE0OGUwYTA4Ny4uZWI0Y2VlMTM2IDEwMDY0NAorLS0tIGEvbW9kdWxlcy90cy9zcmMvY3VkYV90ZXN0LmNwcAorKysrIGIvbW9kdWxlcy90cy9zcmMvY3VkYV90ZXN0LmNwcAorQEAgLTMyMiwxNiArMzIyLDIwIEBAIG5hbWVzcGFjZSBjdnRlc3QKKyAKKyAgICAgICAgIGlmIChtMS5zaXplKCkgIT0gbTIuc2l6ZSgpKQorICAgICAgICAgeworLSAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIk1hdHJpY2VzIFwiIiA8PCBleHByMSA8PCAiXCIgYW5kIFwiIiA8PCBleHByMiA8PCAiXCIgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMgOiBcIiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGV4cHIxIDw8ICJcIiBbIiA8PCBQcmludFRvU3RyaW5nKG0xLnNpemUoKSkgPDwgIl0gdnMgXCIiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBleHByMiA8PCAiXCIgWyIgPDwgUHJpbnRUb1N0cmluZyhtMi5zaXplKCkpIDw8ICJdIjsKKysgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBtc2c7CisrICAgICAgICAgICAgbXNnIDw8ICJNYXRyaWNlcyBcIiIgPDwgZXhwcjEgPDwgIlwiIGFuZCBcIiIgPDwgZXhwcjIgPDwgIlwiIGhhdmUgZGlmZmVyZW50IHNpemVzIDogXCIiCisrICAgICAgICAgICAgICAgIDw8IGV4cHIxIDw8ICJcIiBbIiA8PCBQcmludFRvU3RyaW5nKG0xLnNpemUoKSkgPDwgIl0gdnMgXCIiCisrICAgICAgICAgICAgICAgIDw8IGV4cHIyIDw8ICJcIiBbIiA8PCBQcmludFRvU3RyaW5nKG0yLnNpemUoKSkgPDwgIl0iOworKyAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLnN0cigpOworICAgICAgICAgfQorIAorICAgICAgICAgaWYgKG0xLnR5cGUoKSAhPSBtMi50eXBlKCkpCisgICAgICAgICB7CistICAgICAgICAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiTWF0cmljZXMgXCIiIDw8IGV4cHIxIDw8ICJcIiBhbmQgXCIiIDw8IGV4cHIyIDw8ICJcIiBoYXZlIGRpZmZlcmVudCB0eXBlcyA6IFwiIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjEgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcoTWF0VHlwZShtMS50eXBlKCkpKSA8PCAiXSB2cyBcIiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGV4cHIyIDw8ICJcIiBbIiA8PCBQcmludFRvU3RyaW5nKE1hdFR5cGUobTIudHlwZSgpKSkgPDwgIl0iOworKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1zZzsKKysgICAgICAgICAgICBtc2cgPDwgIk1hdHJpY2VzIFwiIiA8PCBleHByMSA8PCAiXCIgYW5kIFwiIiA8PCBleHByMiA8PCAiXCIgaGF2ZSBkaWZmZXJlbnQgdHlwZXMgOiBcIiIKKysgICAgICAgICAgICAgICAgPDwgZXhwcjEgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcoTWF0VHlwZShtMS50eXBlKCkpKSA8PCAiXSB2cyBcIiIKKysgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcoTWF0VHlwZShtMi50eXBlKCkpKSA8PCAiXSI7CisrICAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLnN0cigpOworICAgICAgICAgfQorIAorICAgICAgICAgTWF0IGRpZmY7CitAQCAtMzQzLDEyICszNDcsMTQgQEAgbmFtZXNwYWNlIGN2dGVzdAorIAorICAgICAgICAgaWYgKG1heFZhbCA+IGVwcykKKyAgICAgICAgIHsKKy0gICAgICAgICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJUaGUgbWF4IGRpZmZlcmVuY2UgYmV0d2VlbiBtYXRyaWNlcyBcIiIgPDwgZXhwcjEgPDwgIlwiIGFuZCBcIiIgPDwgZXhwcjIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcIiBpcyAiIDw8IG1heFZhbCA8PCAiIGF0ICgiIDw8IG1heExvYy55IDw8ICIsICIgPDwgbWF4TG9jLnggLyBtMS5jaGFubmVscygpIDw8ICIpIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgd2hpY2ggZXhjZWVkcyBcIiIgPDwgZXBzX2V4cHIgPDwgIlwiLCB3aGVyZSBcIiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGV4cHIxIDw8ICJcIiBhdCAoIiA8PCBtYXhMb2MueSA8PCAiLCAiIDw8IG1heExvYy54IC8gbTEuY2hhbm5lbHMoKSA8PCAiKSBldmFsdWF0ZXMgdG8gIiA8PCBwcmludE1hdFZhbChtMSwgbWF4TG9jKSA8PCAiLCBcIiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGV4cHIyIDw8ICJcIiBhdCAoIiA8PCBtYXhMb2MueSA8PCAiLCAiIDw8IG1heExvYy54IC8gbTEuY2hhbm5lbHMoKSA8PCAiKSBldmFsdWF0ZXMgdG8gIiA8PCBwcmludE1hdFZhbChtMiwgbWF4TG9jKSA8PCAiLCBcIiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGVwc19leHByIDw8ICJcIiBldmFsdWF0ZXMgdG8gIiA8PCBlcHM7CisrICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbXNnOworKyAgICAgICAgICAgIG1zZyA8PCAiVGhlIG1heCBkaWZmZXJlbmNlIGJldHdlZW4gbWF0cmljZXMgXCIiIDw8IGV4cHIxIDw8ICJcIiBhbmQgXCIiIDw8IGV4cHIyCisrICAgICAgICAgICAgICAgIDw8ICJcIiBpcyAiIDw8IG1heFZhbCA8PCAiIGF0ICgiIDw8IG1heExvYy55IDw8ICIsICIgPDwgbWF4TG9jLnggLyBtMS5jaGFubmVscygpIDw8ICIpIgorKyAgICAgICAgICAgICAgICA8PCAiLCB3aGljaCBleGNlZWRzIFwiIiA8PCBlcHNfZXhwciA8PCAiXCIsIHdoZXJlIFwiIgorKyAgICAgICAgICAgICAgICA8PCBleHByMSA8PCAiXCIgYXQgKCIgPDwgbWF4TG9jLnkgPDwgIiwgIiA8PCBtYXhMb2MueCAvIG0xLmNoYW5uZWxzKCkgPDwgIikgZXZhbHVhdGVzIHRvICIgPDwgcHJpbnRNYXRWYWwobTEsIG1heExvYykgPDwgIiwgXCIiCisrICAgICAgICAgICAgICAgIDw8IGV4cHIyIDw8ICJcIiBhdCAoIiA8PCBtYXhMb2MueSA8PCAiLCAiIDw8IG1heExvYy54IC8gbTEuY2hhbm5lbHMoKSA8PCAiKSBldmFsdWF0ZXMgdG8gIiA8PCBwcmludE1hdFZhbChtMiwgbWF4TG9jKSA8PCAiLCBcIiIKKysgICAgICAgICAgICAgICAgPDwgZXBzX2V4cHIgPDwgIlwiIGV2YWx1YXRlcyB0byAiIDw8IGVwczsKKysgICAgICAgICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZy5zdHIoKTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7CitAQCAtNDY5LDkgKzQ3NSwxMSBAQCBuYW1lc3BhY2UgY3Z0ZXN0CisgICAgIHsKKyAgICAgICAgIGlmIChnb2xkLnNpemUoKSAhPSBhY3R1YWwuc2l6ZSgpKQorICAgICAgICAgeworLSAgICAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgIktleVBvaW50cyBzaXplIG1pc3RtYWNoXG4iCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIiIDw8IGdvbGRfZXhwciA8PCAiXCIgOiAiIDw8IGdvbGQuc2l6ZSgpIDw8ICJcbiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcIiIgPDwgYWN0dWFsX2V4cHIgPDwgIlwiIDogIiA8PCBhY3R1YWwuc2l6ZSgpOworKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1zZzsKKysgICAgICAgICAgICBtc2cgPDwgIktleVBvaW50cyBzaXplIG1pc3RtYWNoXG4iCisrICAgICAgICAgICAgICAgIDw8ICJcIiIgPDwgZ29sZF9leHByIDw8ICJcIiA6ICIgPDwgZ29sZC5zaXplKCkgPDwgIlxuIgorKyAgICAgICAgICAgICAgICA8PCAiXCIiIDw8IGFjdHVhbF9leHByIDw8ICJcIiA6ICIgPDwgYWN0dWFsLnNpemUoKTsKKysgICAgICAgICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZy5zdHIoKTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHN0ZDo6c29ydChhY3R1YWwuYmVnaW4oKSwgYWN0dWFsLmVuZCgpLCBLZXlQb2ludExlc3MoKSk7CitAQCAtNDg0LDE0ICs0OTIsMTYgQEAgbmFtZXNwYWNlIGN2dGVzdAorIAorICAgICAgICAgICAgIGlmICgha2V5UG9pbnRzRXF1YWxzKHAxLCBwMikpCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJLZXlQb2ludHMgZGlmZmVyIGF0ICIgPDwgaSA8PCAiXG4iCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIiA8PCBnb2xkX2V4cHIgPDwgIlwiIHZzIFwiIiA8PCBhY3R1YWxfZXhwciA8PCAiXCIgOiBcbiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAicHQgOiAiIDw8IHRlc3Rpbmc6OlByaW50VG9TdHJpbmcocDEucHQpIDw8ICIgdnMgIiA8PCB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAyLnB0KSA8PCAiXG4iCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgInNpemUgOiAiIDw8IHAxLnNpemUgPDwgIiB2cyAiIDw8IHAyLnNpemUgPDwgIlxuIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJhbmdsZSA6ICIgPDwgcDEuYW5nbGUgPDwgIiB2cyAiIDw8IHAyLmFuZ2xlIDw8ICJcbiIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAicmVzcG9uc2UgOiAiIDw8IHAxLnJlc3BvbnNlIDw8ICIgdnMgIiA8PCBwMi5yZXNwb25zZSA8PCAiXG4iCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIm9jdGF2ZSA6ICIgPDwgcDEub2N0YXZlIDw8ICIgdnMgIiA8PCBwMi5vY3RhdmUgPDwgIlxuIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJjbGFzc19pZCA6ICIgPDwgcDEuY2xhc3NfaWQgPDwgIiB2cyAiIDw8IHAyLmNsYXNzX2lkOworKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBtc2c7CisrICAgICAgICAgICAgICAgIG1zZyA8PCAiS2V5UG9pbnRzIGRpZmZlciBhdCAiIDw8IGkgPDwgIlxuIgorKyAgICAgICAgICAgICAgICAgICAgPDwgIlwiIiA8PCBnb2xkX2V4cHIgPDwgIlwiIHZzIFwiIiA8PCBhY3R1YWxfZXhwciA8PCAiXCIgOiBcbiIKKysgICAgICAgICAgICAgICAgICAgIDw8ICJwdCA6ICIgPDwgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhwMS5wdCkgPDwgIiB2cyAiIDw8IHRlc3Rpbmc6OlByaW50VG9TdHJpbmcocDIucHQpIDw8ICJcbiIKKysgICAgICAgICAgICAgICAgICAgIDw8ICJzaXplIDogIiA8PCBwMS5zaXplIDw8ICIgdnMgIiA8PCBwMi5zaXplIDw8ICJcbiIKKysgICAgICAgICAgICAgICAgICAgIDw8ICJhbmdsZSA6ICIgPDwgcDEuYW5nbGUgPDwgIiB2cyAiIDw8IHAyLmFuZ2xlIDw8ICJcbiIKKysgICAgICAgICAgICAgICAgICAgIDw8ICJyZXNwb25zZSA6ICIgPDwgcDEucmVzcG9uc2UgPDwgIiB2cyAiIDw8IHAyLnJlc3BvbnNlIDw8ICJcbiIKKysgICAgICAgICAgICAgICAgICAgIDw8ICJvY3RhdmUgOiAiIDw8IHAxLm9jdGF2ZSA8PCAiIHZzICIgPDwgcDIub2N0YXZlIDw8ICJcbiIKKysgICAgICAgICAgICAgICAgICAgIDw8ICJjbGFzc19pZCA6ICIgPDwgcDEuY2xhc3NfaWQgPDwgIiB2cyAiIDw8IHAyLmNsYXNzX2lkOworKyAgICAgICAgICAgICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZy5zdHIoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1jYXJvdGVuZS1kb24tdC11c2UtX19hc21fXy13aXRoLWFhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1jYXJvdGVuZS1kb24tdC11c2UtX19hc21fXy13aXRoLWFhcmNoNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFhNTZlMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLWNhcm90ZW5lLWRvbi10LXVzZS1fX2FzbV9fLXdpdGgtYWFyY2g2NC5wYXRjaApAQCAtMCwwICsxLDEyNTAgQEAKK0Zyb20gMzUzZmM5MjYxOGNlMGRjNmJhYjRhM2U4YmZmMWMxM2MzYjYxMzExMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBBbGVraGluIDxhbGV4YW5kZXIuYWxla2hpbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE3OjQxOjIzICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBjYXJvdGVuZTogZG9uJ3QgdXNlIF9fYXNtX18gd2l0aCBhYXJjaDY0CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAgIHwgICA0ICstCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwIHwgICAyICstCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAgICAgIHwgMTA0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwICAgICAgICAgIHwgIDU0ICsrKysrKystLS0tLS0tLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcCAgICB8ICA3MiArKysrKysrKysrLS0tLS0tLS0tLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcCAgICB8ICAgNiArLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcCAgICAgICAgICB8ICAyMCArKystLS0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcCAgICAgICAgICAgfCAgIDQgKy0KKyA4IGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCAxMzMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwCitpbmRleCBmNjYzYmM2MDA1Li44MjM4YTNlY2U4IDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwCitAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgZXh0cmFjdDQoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgICAgICAgICAgc3JjU3RyaWRlID09IGRzdDJTdHJpZGUgJiYgXAorICAgICAgICAgICAgICAgICAgc3JjU3RyaWRlID09IGRzdDNTdHJpZGUgJiYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgCisgI2RlZmluZSBTUExJVF9BU00yKHNnbiwgYml0cykgX19hc21fXyAoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmxkMi4iICNiaXRzICIge2QwLCBkMn0sIFslW2luMF1dICAgICAgICAgICAgXG5cdCIgXAorQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIGV4dHJhY3Q0KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyB9CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIAorICNkZWZpbmUgQUxQSEFfUVVBRChzZ24sIGJpdHMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOyBcCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwCitpbmRleCAxNTdjOGI4MTIxLi5mYzk4ZmI5MTgxIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAKK0BAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBDQVJPVEVORV9OUyB7CisgICAgICAgICAgICAgICAgICBkc3RTdHJpZGUgPT0gc3JjMlN0cmlkZSAmJiBcCisgICAgICAgICAgICAgICAgICBkc3RTdHJpZGUgPT0gc3JjM1N0cmlkZSAmJgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAKKyAjZGVmaW5lIE1FUkdFX0FTTTIoc2duLCBiaXRzKSBfX2FzbV9fICggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2bGQxLiIgI2JpdHMgIiB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAgICAgICBcblx0IiBcCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcAoraW5kZXggMzAzN2ZlNjcyYS4uMjZhZTU0YjE1YyAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcAorQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCByZ2IyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7CisgICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7CitAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgcmdiMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgcmdieDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgIGNvbnN0IHUzMiBHMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEcyWV9CVDYwMSA6IEcyWV9CVDcwOTsKKyAgICAgY29uc3QgdTMyIEIyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gQjJZX0JUNjAxIDogQjJZX0JUNzA5OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfcjJ5IGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNihSMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9nMnkgYXNtICgiZDMwIikgPSB2bW92X25fczE2KEcyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2IyeSBhc20gKCJkMjkiKSA9IHZtb3Zfbl9zMTYoQjJZKTsKK0BAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCByZ2J4MmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgYmdyMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgY29uc3QgdTMyIEcyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gRzJZX0JUNjAxIDogRzJZX0JUNzA5OworICAgICBjb25zdCB1MzIgQjJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBCMllfQlQ2MDEgOiBCMllfQlQ3MDk7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9yMnkgYXNtICgiZDMxIikgPSB2bW92X25fczE2KFIyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2cyeSBhc20gKCJkMzAiKSA9IHZtb3Zfbl9zMTYoRzJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfYjJ5IGFzbSAoImQyOSIpID0gdm1vdl9uX3MxNihCMlkpOworQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIGJncjJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgIGZvciAoOyBkaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGJncngyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7CisgICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7CitAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgYmdyeDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgIGZvciAoOyBkaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIGdyYXkycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBzaiA8IHJvaXcxNjsgc2ogKz0gMTYsIGRqICs9IDQ4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICJ2bGQxLjgge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2bW92LjggcTEsIHEwICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIGdyYXkycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAKKyAgICAgICAgIGlmIChzaiA8IHJvaXc4KQorICAgICAgICAgeworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAidmxkMS44IHtkMH0sIFslW2luXV0gICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidm1vdi44IGQxLCBkMCAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBncmF5MnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICBzaXplX3Qgcm9pdzE2ID0gc2l6ZS53aWR0aCA+PSAxNSA/IHNpemUud2lkdGggLSAxNSA6IDA7CisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgdmMyNTUgICBhc20gKCJxNCIpID0gdm1vdnFfbl91OCgyNTUpOworICNlbHNlCisgICAgIHVpbnQ4eDE2eDRfdCB2UmdiYTsKK0BAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBncmF5MnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IHNqIDwgcm9pdzE2OyBzaiArPSAxNiwgZGogKz0gNjQpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgInZsZDEuOCB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZtb3YuOCBxMSwgcTAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgZ3JheTJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAKKyAgICAgICAgIGlmIChzaiA8IHJvaXc4KQorICAgICAgICAgeworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAidmxkMS44IHtkNX0sIFslW2luXV0gICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidm1vdi44IGQ2LCBkNSAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC02NzIsNyArNjcyLDcgQEAgdm9pZCByZ2IycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7CisgI2lmZGVmIENBUk9URU5FX05FT04KKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgIHJlZ2lzdGVyIHVpbnQ4eDhfdCB2YzI1NV8wICBhc20gKCJkMyIpID0gdm1vdl9uX3U4KDI1NSk7CisgI2Vsc2UKKyAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOworQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIHJnYjJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHUsIGogPSAwdTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDMyLCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKK0BAIC03NDIsNyArNzQyLDcgQEAgdm9pZCByZ2J4MnJnYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7CisgI2lmZGVmIENBUk9URU5FX05FT04KKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworLSNpZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgIWRlZmluZWQoX19hcm1fXykKKysjaWYgISghZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKSkKKyAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOworICAgICB1bmlvbiB7IHVpbnQ4eDE2eDRfdCB2NDsgdWludDh4MTZ4M190IHYzOyB9IHZfZHN0MDsKKyAgICAgdW5pb24geyB1aW50OHg4eDRfdCB2NDsgdWludDh4OHgzX3QgdjM7IH0gdl9kc3Q7CitAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgcmdieDJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTgwNSw3ICs4MDUsNyBAQCB2b2lkIHJnYjJiZ3IoY29uc3QgU2l6ZTJEICZzaXplLAorIHsKKyAgICAgaW50ZXJuYWw6OmFzc2VydFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oKTsKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorLSNpZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgIWRlZmluZWQoX19hcm1fXykKKysjaWYgISghZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKSkKKyAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOworICNlbmRpZgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CitAQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgcmdiMmJncihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OworIAorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIHJnYngyYmdyeChjb25zdCBTaXplMkQgJnNpemUsCisgeworICAgICBpbnRlcm5hbDo6YXNzZXJ0U3VwcG9ydGVkQ29uZmlndXJhdGlvbigpOworICNpZmRlZiBDQVJPVEVORV9ORU9OCistI2lmICFkZWZpbmVkKF9fR05VQ19fKSB8fCAhZGVmaW5lZChfX2FybV9fKQorKyNpZiAhKCFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pKQorICAgICBzaXplX3Qgcm9pdzE2ID0gc2l6ZS53aWR0aCA+PSAxNSA/IHNpemUud2lkdGggLSAxNSA6IDA7CisgI2VuZGlmCisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKK0BAIC04ODUsNyArODg1LDcgQEAgdm9pZCByZ2J4MmJncngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMzIsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIHJnYngyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyB7CisgICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7CisgI2lmZGVmIENBUk9URU5FX05FT04KKy0jaWYgIWRlZmluZWQoX19HTlVDX18pIHx8ICFkZWZpbmVkKF9fYXJtX18pCisrI2lmICEoIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykpCisgICAgIHNpemVfdCByb2l3MTYgPSBzaXplLndpZHRoID49IDE1ID8gc2l6ZS53aWR0aCAtIDE1IDogMDsKKyAjZW5kaWYKKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworQEAgLTk1NCw3ICs5NTQsNyBAQCB2b2lkIHJnYngyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHUsIGogPSAwdTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKK0BAIC0xMDEwLDcgKzEwMTAsNyBAQCB2b2lkIHJnYjJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyB7CisgICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7CisgI2lmZGVmIENBUk9URU5FX05FT04KKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorICAgICByZWdpc3RlciB1aW50OHg4X3QgdmMyNTUgIGFzbSAoImQzIikgPSB2bW92X25fdTgoMjU1KTsKKyAjZWxzZQorICAgICB1bmlvbiB7IHVpbnQ4eDE2eDRfdCB2NDsgdWludDh4MTZ4M190IHYzOyB9IHZhbHMwOworQEAgLTEwMTksNyArMTAxOSw3IEBAIHZvaWQgcmdiMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICB2YWxzOC52NC52YWxbM10gPSB2bW92X25fdTgoMjU1KTsKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19HTlVDX18pIHx8ICFkZWZpbmVkKF9fYXJtX18pCisrI2lmICEoIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykpCisgICAgIHNpemVfdCByb2l3MTYgPSBzaXplLndpZHRoID49IDE1ID8gc2l6ZS53aWR0aCAtIDE1IDogMDsKKyAjZW5kaWYKKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworQEAgLTEwMzAsNyArMTAzMCw3IEBAIHZvaWQgcmdiMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OworIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMzIsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTE0MDksNyArMTQwOSw3IEBAIGlubGluZSB2b2lkIGNvbnZlcnRUb0hTVihjb25zdCBzMzIgciwgY29uc3QgczMyIGcsIGNvbnN0IHMzMiBiLAorICAgICAgICAgICAgICAgImQyNCIsImQyNSIsImQyNiIsImQyNyIsImQyOCIsImQyOSIsImQzMCIsImQzMSIgICAgICAgICBcCisgICAgICAgICAgICAgKTsKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgCisgI2RlZmluZSBZQ1JDQl9DT05TVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZjWVIgIGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNig0ODk5KTsgICAgICAgICAgICAgICAgXAorQEAgLTE1NTUsNyArMTU1NSw3IEBAIGlubGluZSB1aW50OHg4eDNfdCBjb252ZXJ0VG9ZQ3JDYiggY29uc3QgaW50MTZ4OF90JiB2UiwgY29uc3QgaW50MTZ4OF90JiB2RywgY29uCisgI2RlZmluZSBDT0VGRl9HICAgKCAgODY2MykKKyAjZGVmaW5lIENPRUZGX0IgICAoLTE3NzA1KQorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAjZGVmaW5lIFlVVjQyMEFMUEhBM19DT05TVAorICNkZWZpbmUgWVVWNDIwQUxQSEE0X0NPTlNUIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgYzI1NSAgYXNtICgicTEzIikgPSB2bW92cV9uX3U4KDI1NSk7CisgI2RlZmluZSBZVVY0MjBBTFBIQTNfQ09OVkVSVAorQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZvaWQgcmdiMmhzdihjb25zdCBTaXplMkQgJnNpemUsCisgI2lmZGVmIENBUk9URU5FX05FT04KKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7CitAQCAtMTg3MSw3ICsxODcxLDcgQEAgdm9pZCByZ2IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRfVE9fSFNWX0FTTSh2bGQzLjgge2QwLWQyfSwgZDAsIGQyKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHgzX3QgdlJnYiA9IHZsZDNfdTgoc3JjICsgc2opOworQEAgLTE5MDQsNyArMTkwNCw3IEBAIHZvaWQgcmdieDJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICNpZmRlZiBDQVJPVEVORV9ORU9OCisgICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKKyAgICAgY29uc3QgczMyIGhzdl9zaGlmdCA9IDEyOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgcmVnaXN0ZXIgY29uc3QgZjMyIHZzZGl2X3RhYmxlID0gZjMyKDI1NSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBmMzIgdmhkaXZfdGFibGUgPSBmMzIoaHJhbmdlIDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGNvbnN0IHMzMiB2aHJhbmdlID0gaHJhbmdlOworQEAgLTE5MjMsNyArMTkyMyw3IEBAIHZvaWQgcmdieDJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDQuOCB7ZDAtZDN9LCBkMCwgZDIpCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDRfdCB2UmdiID0gdmxkNF91OChzcmMgKyBzaik7CitAQCAtMTk1Niw3ICsxOTU2LDcgQEAgdm9pZCBiZ3IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CisgICAgIGNvbnN0IHMzMiBoc3Zfc2hpZnQgPSAxMjsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgIHJlZ2lzdGVyIGNvbnN0IGYzMiB2c2Rpdl90YWJsZSA9IGYzMigyNTUgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgZjMyIHZoZGl2X3RhYmxlID0gZjMyKGhyYW5nZSA8PCBoc3Zfc2hpZnQpOworICAgICByZWdpc3RlciBjb25zdCBzMzIgdmhyYW5nZSA9IGhyYW5nZTsKK0BAIC0xOTc1LDcgKzE5NzUsNyBAQCB2b2lkIGJncjJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDMuOCB7ZDAtZDJ9LCBkMiwgZDApCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDNfdCB2UmdiID0gdmxkM191OChzcmMgKyBzaik7CitAQCAtMjAwOCw3ICsyMDA4LDcgQEAgdm9pZCBiZ3J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCisgI2lmZGVmIENBUk9URU5FX05FT04KKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7CitAQCAtMjAyNyw3ICsyMDI3LDcgQEAgdm9pZCBiZ3J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUX1RPX0hTVl9BU00odmxkNC44IHtkMC1kM30sIGQyLCBkMCkKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZSZ2IgPSB2bGQ0X3U4KHNyYyArIHNqKTsKK0BAIC0yMDY4LDcgKzIwNjgsNyBAQCB2b2lkIHJnYngyYmdyNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA2NCwgZGogKz0gMzIsIGogKz0gMTYpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QyLCBkNCwgZDYsIGQ4fSwgWyVbaW4wXV0gICAgICAgIEAgIHEwICAgICAgIHExICAgICAgIHEyICAgICAgIHEzICAgICAgIHE0ICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QzLCBkNSwgZDcsIGQ5fSwgWyVbaW4xXV0gICAgICAgIEAgIHh4eHh4eHh4IHJycnJSUlJSIGdnZ2dHR0dHIGJiYmJCQkJCIHh4eHh4eHh4IFxuXHQiCitAQCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9pZCByZ2IyYmdyNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA0OCwgZGogKz0gMzIsIGogKz0gMTYpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICJ2bGQzLjgge2QyLCBkNCwgZDZ9LCBbJVtpbjBdXSAgICAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICBxNCAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAidmxkMy44IHtkMywgZDUsIGQ3fSwgWyVbaW4xXV0gICAgICAgQCAgeHh4eHh4eHggcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgeHh4eHh4eHggXG5cdCIKK0BAIC0yMTc2LDcgKzIxNzYsNyBAQCB2b2lkIHJnYngycmdiNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA2NCwgZGogKz0gMzIsIGogKz0gMTYpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QwLCBkMiwgZDQsIGQ2fSwgWyVbaW4wXV0gICAgQCAgcTAgICAgICAgcTEgICAgICAgcTIgICAgICAgcTMgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAidmxkNC44IHtkMSwgZDMsIGQ1LCBkN30sIFslW2luMV1dICAgIEAgIHJycnJSUlJSIGdnZ2dHR0dHIGJiYmJCQkJCIGFhYWFBQUFBICAgXG5cdCIKK0BAIC0yMjMwLDcgKzIyMzAsNyBAQCB2b2lkIHJnYjJyZ2I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDQ4LCBkaiArPSAzMiwgaiArPSAxNikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDMuOCB7ZDAsIGQyLCBkNH0sIFslW2luMF1dICAgICAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQzLjgge2QxLCBkMywgZDV9LCBbJVtpbjFdXSAgICAgICAgQCAgcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgeHh4eHh4eHggICBcblx0IgorQEAgLTIyODUsNyArMjI4NSw3IEBAIHZvaWQgcmdiMnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDMuOCB7ZDAtZDJ9LCBkMCwgZDEsIGQyKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHgzX3QgdlJnYiA9IHZsZDNfdTgoc3JjICsgc2opOworQEAgLTIzMjksNyArMjMyOSw3IEBAIHZvaWQgcmdieDJ5Y3JjYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUVE9ZQ1JDQih2bGQ0Ljgge2QwLWQzfSwgZDAsIGQxLCBkMikKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZSZ2JhID0gdmxkNF91OChzcmMgKyBzaik7CitAQCAtMjM3Myw3ICsyMzczLDcgQEAgdm9pZCBiZ3IyeWNyY2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFRPWUNSQ0IodmxkMy44IHtkMC1kMn0sIGQyLCBkMSwgZDApCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDNfdCB2QmdyID0gdmxkM191OChzcmMgKyBzaik7CitAQCAtMjQxNyw3ICsyNDE3LDcgQEAgdm9pZCBiZ3J4MnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDQuOCB7ZDAtZDN9LCBkMiwgZDEsIGQwKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHg0X3QgdkJncmEgPSB2bGQ0X3U4KHNyYyArIHNqKTsKK0BAIC0yNDk5LDcgKzI0OTksNyBAQCB2b2lkIHl1djQyMHNwMnJnYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMSwgZDAsIHE1LCBxNikKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgeXV2NDIwc3AycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQig0LCBkMSwgZDAsIHE1LCBxNikKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI1OTEsNyArMjU5MSw3IEBAIHZvaWQgeXV2NDIwaTJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoMywgZDAsIGQxLCBxNSwgcTYpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNjM3LDcgKzI2MzcsNyBAQCB2b2lkIHl1djQyMGkycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQig0LCBkMCwgZDEsIHE1LCBxNikKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI2ODMsNyArMjY4Myw3IEBAIHZvaWQgeXV2NDIwc3AyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDMsIGQxLCBkMCwgcTYsIHE1KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitAQCAtMjcyOSw3ICsyNzI5LDcgQEAgdm9pZCB5dXY0MjBzcDJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQxLCBkMCwgcTYsIHE1KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitAQCAtMjc3NSw3ICsyNzc1LDcgQEAgdm9pZCB5dXY0MjBpMmJncihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMCwgZDEsIHE2LCBxNSkKKyAjZWxzZQorICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOworQEAgLTI4MjEsNyArMjgyMSw3IEBAIHZvaWQgeXV2NDIwaTJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQwLCBkMSwgcTYsIHE1KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwCitpbmRleCA0MDNmMTZkODZhLi42NGI2ZGI3OGFiIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAKK0BAIC0xMDEsNyArMTAxLDcgQEAgQ1ZUX0ZVTkModTgsIHM4LCAxNiwKKyAgICAgIH0KKyB9KQorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRfRlVOQyh1OCwgdTE2LCAxNiwKKyAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTgoMCk7LAorIHsKK0BAIC0xMzUsNyArMTM1LDcgQEAgQ1ZUX0ZVTkModTgsIHUxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUX0ZVTkModTgsIHMzMiwgMTYsCisgICAgICByZWdpc3RlciB1aW50OHgxNl90IHplcm8wIGFzbSAoInExIikgPSB2bW92cV9uX3U4KDApOworICAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB6ZXJvMSBhc20gKCJxMiIpID0gdm1vdnFfbl91OCgwKTsKK0BAIC0xNzMsNyArMTczLDcgQEAgQ1ZUX0ZVTkModTgsIHMzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkModTgsIGYzMiwgMTYsCisgLAorIHsKK0BAIC0yNDgsNyArMjQ4LDcgQEAgQ1ZUX0ZVTkMoczgsIHU4LCAxNiwKKyAgICAgIH0KKyB9KQorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRfRlVOQyhzOCwgdTE2LCAxNiwKKyAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTgoMCk7LAorIHsKK0BAIC0yODQsNyArMjg0LDcgQEAgQ1ZUX0ZVTkMoczgsIHUxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoczgsIHMxNiwgMTYsCisgLAorIHsKK0BAIC0zMjMsNyArMzIzLDcgQEAgQ1ZUX0ZVTkMoczgsIHMxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUX0ZVTkMoczgsIHMzMiwgMTYsCisgLAorIHsKK0BAIC0zNzcsNyArMzc3LDcgQEAgQ1ZUX0ZVTkMoczgsIHMzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoczgsIGYzMiwgMTYsCisgLAorIHsKK0BAIC00NDAsNyArNDQwLDcgQEAgQ1ZUX0ZVTkMoczgsIGYzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkModTE2LCB1OCwgMTYsCisgLAorIHsKK0BAIC00NzksNyArNDc5LDcgQEAgQ1ZUX0ZVTkModTE2LCB1OCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkModTE2LCBzOCwgMTYsCisgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgdjEyNyBhc20gKCJxNCIpID0gdm1vdnFfbl91OCgxMjcpOywKKyB7CitAQCAtNTIyLDcgKzUyMiw3IEBAIENWVF9GVU5DKHUxNiwgczgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVF9GVU5DKHUxNiwgczE2LCA4LAorICAgICAgcmVnaXN0ZXIgdWludDE2eDhfdCB2MzI3NjcgYXNtICgicTQiKSA9IHZtb3ZxX25fdTE2KDB4N0ZGRik7LAorIHsKK0BAIC01NTUsNyArNTU1LDcgQEAgQ1ZUX0ZVTkModTE2LCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUX0ZVTkModTE2LCBzMzIsIDgsCisgICAgICByZWdpc3RlciB1aW50MTZ4OF90IHplcm8wIGFzbSAoInExIikgPSB2bW92cV9uX3UxNigwKTssCisgeworQEAgLTU4OSw3ICs1ODksNyBAQCBDVlRfRlVOQyh1MTYsIHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyh1MTYsIGYzMiwgOCwKKyAsCisgeworQEAgLTYzMyw3ICs2MzMsNyBAQCBDVlRfRlVOQyh1MTYsIGYzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzMTYsIHU4LCAxNiwKKyAsCisgeworQEAgLTY3Miw3ICs2NzIsNyBAQCBDVlRfRlVOQyhzMTYsIHU4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzMTYsIHM4LCAxNiwKKyAsCisgeworQEAgLTcxMSw3ICs3MTEsNyBAQCBDVlRfRlVOQyhzMTYsIHM4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRfRlVOQyhzMTYsIHUxNiwgOCwKKyAgICAgIHJlZ2lzdGVyIGludDE2eDhfdCB2WmVybyBhc20gKCJxNCIpID0gdm1vdnFfbl9zMTYoMCk7LAorIHsKK0BAIC03NDcsNyArNzQ3LDcgQEAgQ1ZUX0ZVTkMoczE2LCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoczE2LCBzMzIsIDgsCisgLAorIHsKK0BAIC03ODYsNyArNzg2LDcgQEAgQ1ZUX0ZVTkMoczE2LCBzMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoczE2LCBmMzIsIDgsCisgLAorIHsKK0BAIC04MjksNyArODI5LDcgQEAgQ1ZUX0ZVTkMoczE2LCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoczMyLCB1OCwgOCwKKyAsCisgeworQEAgLTg3MCw3ICs4NzAsNyBAQCBDVlRfRlVOQyhzMzIsIHU4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKHMzMiwgczgsIDgsCisgLAorIHsKK0BAIC05MTEsNyArOTExLDcgQEAgQ1ZUX0ZVTkMoczMyLCBzOCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzMzIsIHUxNiwgOCwKKyAsCisgeworQEAgLTk1MCw3ICs5NTAsNyBAQCBDVlRfRlVOQyhzMzIsIHUxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzMzIsIHMxNiwgOCwKKyAsCisgeworQEAgLTk4OSw3ICs5ODksNyBAQCBDVlRfRlVOQyhzMzIsIHMxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhzMzIsIGYzMiwgOCwKKyAsCisgeworQEAgLTEwMzQsNyArMTAzNCw3IEBAIENWVF9GVU5DKHMzMiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKGYzMiwgdTgsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZtdWx0IGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZmxvYXQpKDEgPDwgMTYpKTsKKyAgICAgcmVnaXN0ZXIgdWludDMyeDRfdCAgdm1hc2sgYXNtICgicTEiKSA9IHZkdXBxX25fdTMyKDE8PDE2KTssCitAQCAtMTEwMSw3ICsxMTAxLDcgQEAgQ1ZUX0ZVTkMoZjMyLCB1OCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhmMzIsIHM4LCA4LAorICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKKyB7CitAQCAtMTE1Myw3ICsxMTUzLDcgQEAgQ1ZUX0ZVTkMoZjMyLCBzOCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyBDVlRfRlVOQyhmMzIsIHUxNiwgOCwKKyAgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZoYWxmIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigwLjVmKTssCisgeworQEAgLTEyMTIsNyArMTIxMiw3IEBAIENWVF9GVU5DKGYzMiwgdTE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorIENWVF9GVU5DKGYzMiwgczE2LCA4LAorICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKKyB7CitAQCAtMTI3MSw3ICsxMjcxLDcgQEAgQ1ZUX0ZVTkMoZjMyLCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisgQ1ZUX0ZVTkMoZjMyLCBzMzIsIDgsCisgICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2aGFsZiBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoMC41Zik7LAorIHsKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAKK2luZGV4IDBhMTRhODAzNWMuLmFlNDFhOTg1YzggMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcAorQEAgLTEzNSw3ICsxMzUsNyBAQCBuYW1lc3BhY2UgQ0FST1RFTkVfTlMgeworIAorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgQ1ZUU19GVU5DMSh1OCwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTIyMCw3ICsyMjAsNyBAQCBDVlRTX0ZVTkMxKHU4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgQ1ZUU19GVU5DKHU4LCBzOCwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTMwNSw3ICszMDUsNyBAQCBDVlRTX0ZVTkModTgsIHM4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgQ1ZUU19GVU5DKHU4LCB1MTYsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0zODksNyArMzg5LDcgQEAgQ1ZUU19GVU5DKHU4LCB1MTYsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyBDVlRTX0ZVTkModTgsIHMxNiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTQ3Myw3ICs0NzMsNyBAQCBDVlRTX0ZVTkModTgsIHMxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHU4LCBzMzIsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC01NjIsNyArNTYyLDcgQEAgQ1ZUU19GVU5DKHU4LCBzMzIsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyh1OCwgZjMyLCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK0BAIC02NDMsNyArNjQzLDcgQEAgQ1ZUU19GVU5DKHU4LCBmMzIsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyBDVlRTX0ZVTkMoczgsIHU4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtNzI4LDcgKzcyOCw3IEBAIENWVFNfRlVOQyhzOCwgdTgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyBDVlRTX0ZVTkMxKHM4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtODEzLDcgKzgxMyw3IEBAIENWVFNfRlVOQzEoczgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyBDVlRTX0ZVTkMoczgsIHUxNiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTg5OSw3ICs4OTksNyBAQCBDVlRTX0ZVTkMoczgsIHUxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorIENWVFNfRlVOQyhzOCwgczE2LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtOTg1LDcgKzk4NSw3IEBAIENWVFNfRlVOQyhzOCwgczE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczgsIHMzMiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTEwNzQsNyArMTA3NCw3IEBAIENWVFNfRlVOQyhzOCwgczMyLCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczgsIGYzMiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCitAQCAtMTE1NSw3ICsxMTU1LDcgQEAgQ1ZUU19GVU5DKHM4LCBmMzIsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyh1MTYsIHU4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTIxNCw3ICsxMjE0LDcgQEAgQ1ZUU19GVU5DKHUxNiwgdTgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyh1MTYsIHM4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTI3Myw3ICsxMjczLDcgQEAgQ1ZUU19GVU5DKHUxNiwgczgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQzEodTE2LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTMzMCw3ICsxMzMwLDcgQEAgQ1ZUU19GVU5DMSh1MTYsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyh1MTYsIHMxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgQ1ZUU19GVU5DKHUxNiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyh1MTYsIHMzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgQ1ZUU19GVU5DKHUxNiwgczMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyh1MTYsIGYzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK0BAIC0xNDk1LDcgKzE0OTUsNyBAQCBDVlRTX0ZVTkModTE2LCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHMxNiwgdTgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNTU0LDcgKzE1NTQsNyBAQCBDVlRTX0ZVTkMoczE2LCB1OCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHMxNiwgczgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNjEzLDcgKzE2MTMsNyBAQCBDVlRTX0ZVTkMoczE2LCBzOCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHMxNiwgdTE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNjcwLDcgKzE2NzAsNyBAQCBDVlRTX0ZVTkMoczE2LCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DMShzMTYsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNzI3LDcgKzE3MjcsNyBAQCBDVlRTX0ZVTkMxKHMxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHMxNiwgczMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNzgzLDcgKzE3ODMsNyBAQCBDVlRTX0ZVTkMoczE2LCBzMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHMxNiwgZjMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAorQEAgLTE4MzUsNyArMTgzNSw3IEBAIENWVFNfRlVOQyhzMTYsIGYzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczMyLCB1OCwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTg5Myw3ICsxODkzLDcgQEAgQ1ZUU19GVU5DKHMzMiwgdTgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKHMzMiwgczgsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE5NTEsNyArMTk1MSw3IEBAIENWVFNfRlVOQyhzMzIsIHM4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhzMzIsIHUxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjAwNyw3ICsyMDA3LDcgQEAgQ1ZUU19GVU5DKHMzMiwgdTE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhzMzIsIHMxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjA2Myw3ICsyMDYzLDcgQEAgQ1ZUU19GVU5DKHMzMiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQzEoczMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMTE4LDcgKzIxMTgsNyBAQCBDVlRTX0ZVTkMxKHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyBDVlRTX0ZVTkMoczMyLCBmMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCitAQCAtMjE2OSw3ICsyMTY5LDcgQEAgQ1ZUU19GVU5DKHMzMiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhmMzIsIHU4LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpKCgxIDw8IDE2KSphbHBoYSkpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpKCgxIDw8IDE2KSpiZXRhKSk7CitAQCAtMjIzOSw3ICsyMjM5LDcgQEAgQ1ZUU19GVU5DKGYzMiwgdTgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgQ1ZUU19GVU5DKGYzMiwgczgsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTIyOTMsNyArMjI5Myw3IEBAIENWVFNfRlVOQyhmMzIsIHM4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhmMzIsIHUxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgQ1ZUU19GVU5DKGYzMiwgdTE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhmMzIsIHMxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgQ1ZUU19GVU5DKGYzMiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQyhmMzIsIHMzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjQ0OCw3ICsyNDQ4LDcgQEAgQ1ZUU19GVU5DKGYzMiwgczMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworIENWVFNfRlVOQzEoZjMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAorZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcAoraW5kZXggMWI1Mzk5NDM2Zi4uZjdiNWYxOGQ3OSAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwCitAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgZ2F1c3NpYW5CbHVyNXg1KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAorICAgICAgICAgICAgICAgICB1MTYqIGxpZHgxID0gbGFuZSArIHggLSAxKjI7CisgICAgICAgICAgICAgICAgIHUxNiogbGlkeDMgPSBsYW5lICsgeCArIDEqMjsKKyAgICAgICAgICAgICAgICAgdTE2KiBsaWR4NCA9IGxhbmUgKyB4ICsgMioyOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMTYge2QwLCBkMn0sIFslW2luMF1dISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDEsIGQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBnYXVzc2lhbkJsdXI1eDUoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCisgICAgICAgICAgICAgICAgIHUxNiogbGlkeDEgPSBsYW5lICsgeCAtIDEqMzsKKyAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MyA9IGxhbmUgKyB4ICsgMSozOworICAgICAgICAgICAgICAgICB1MTYqIGxpZHg0ID0gbGFuZSArIHggKyAyKjM7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDMuMTYge2QwLCBkMiwgZDR9LCBbJVtpbjBdXSEgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMy4xNiB7ZDEsIGQzLCBkNX0sIFslW2luMF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBnYXVzc2lhbkJsdXI1eDUoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCisgICAgICAgICAgICAgICAgIHUxNiogbGlkeDEgPSBsYW5lICsgeCAtIDEqNDsKKyAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MyA9IGxhbmUgKyB4ICsgMSo0OworICAgICAgICAgICAgICAgICB1MTYqIGxpZHg0ID0gbGFuZSArIHggKyAyKjQ7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDQuMTYge2QwLCBkMiwgZDQsIGQ2fSwgWyVbaW4wXV0hICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkNC4xNiB7ZDEsIGQzLCBkNSwgZDd9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAKK2luZGV4IDhlZjEyNjg5MzMuLjIzMmNjZjNlZmQgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcAorQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAorICAgICAgICAgICAgIGZvciAoOyB4IDwgcm9pdzg7IHggKz0gOCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgMiAqIHgpOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDAtZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMTYge2Q0LWQ3fSwgWyVbaW40XV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBnYXVzc2lhblB5cmFtaWREb3duKGNvbnN0IFNpemUyRCAmc3JjU2l6ZSwKKyAgICAgICAgICAgICBmb3IgKDsgeCA8IHJvaXc0OyB4ICs9IDQpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIDIgKiB4KTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisgICAgICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2QwLWQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2Q0LWQ3fSwgWyVbaW40XV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAorICAgICBzdGQ6OnZlY3RvcjxmMzI+IF9idWYoY24qKHNyY1NpemUud2lkdGggKyA0KSArIDMyL3NpemVvZihmMzIpKTsKKyAgICAgZjMyKiBsYW5lID0gaW50ZXJuYWw6OmFsaWduUHRyKCZfYnVmWzIqY25dLCAzMik7CisgCistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2YzZkNGYzMiAgYXNtICgicTExIikgPSB2bW92cV9uX2YzMigxLjVmKTsgIC8vIDYvNAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2YzFkNGYzMiAgYXNtICgicTEyIikgPSB2bW92cV9uX2YzMigwLjI1Zik7IC8vIDEvNAorIAorQEAgLTczOSw3ICs3MzksNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAorICAgICAgICAgICAgIGZvciAoOyB4IDwgcm9pdzQ7IHggKz0gNCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgMiAqIHgpOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2QwLWQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2Q4LWQxMX0sIFslW2luNF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTkzMiw3ICs5MzIsNyBAQCBweXJVcDh1SG9yaXpvbnRhbENvbnZvbHV0aW9uOgorICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDgpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIHgpOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDEuMTYge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgLypxMCA9IHYwKi8gICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDEuMTYge2QyLWQzfSwgWyVbaW4yXV0gICAgICAgLypxMSA9IHYyKi8gICAgICAgICAgICBcblx0IgorQEAgLTk3Myw3ICs5NzMsNyBAQCBweXJVcDh1SG9yaXpvbnRhbENvbnZvbHV0aW9uOgorICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDI0KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyB4KTsKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQorICAgICAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgICAgICJ2bW92LnUxNiBxOSwgIzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQzLjE2IHtkMCwgZDIsIGQ0fSwgWyVbaW4wXV0gICAgICAgIC8qdjAqLyAgICAgICAgICAgICAgXG5cdCIKK0BAIC0xMDY0LDcgKzEwNjQsNyBAQCBweXJVcDh1SG9yaXpvbnRhbENvbnZvbHV0aW9uOgorICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDgpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIHgpOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDEuMTYge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgLypxMCA9IHYwKi8gICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDEuMTYge2QyLWQzfSwgWyVbaW4yXV0gICAgICAgLypxMSA9IHYyKi8gICAgICAgICAgICBcblx0IgorQEAgLTEyMTAsNyArMTIxMCw3IEBAIHB5clVwMTZzSG9yaXpvbnRhbENvbnZvbHV0aW9uOgorICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDQpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIHgpOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCisgICAgICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDEuMzIge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgLypxMCA9IHYwKi8gICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAgICAgInZsZDEuMzIge2QyLWQzfSwgWyVbaW4yXV0gICAgICAgLypxMSA9IHYyKi8gICAgICAgICAgICBcblx0IgorQEAgLTEyNTEsNyArMTI1MSw3IEBAIHB5clVwMTZzSG9yaXpvbnRhbENvbnZvbHV0aW9uOgorICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDEyKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyB4ICsgMyk7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidm1vdi5zMzIgcTksICM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMy4zMiB7ZDAsIGQyLCBkNH0sIFslW2luMF1dICAgICAgICAvKnYwKi8gICAgICAgICAgICAgIFxuXHQiCitAQCAtMTM0Myw3ICsxMzQzLDcgQEAgcHlyVXAxNnNIb3Jpem9udGFsQ29udm9sdXRpb246CisgICAgICAgICAgICAgZm9yICg7IHggPCBsaW07IHggKz0gNCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgeCk7CistI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMS4zMiB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAvKnEwID0gdjAqLyAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMS4zMiB7ZDItZDN9LCBbJVtpbjJdXSAgICAgICAvKnExID0gdjIqLyAgICAgICAgICAgIFxuXHQiCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3NjaGFyci5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcAoraW5kZXggNTY5NTgwNGZlNC4uOGQzYjYzMjhiMSAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcAorQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNjaGFyckRlcml2KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAorICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MCArIHgpOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MSArIHgpOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MiArIHgpOworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDEuOCB7ZDB9LCBbJVtzcmMwXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQxLjgge2QyfSwgWyVbc3JjMl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFNjaGFyckRlcml2KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAorICAgICAgICAgeCA9IDA7CisgICAgICAgICBmb3IoIDsgeCA8IHJvaXc4OyB4ICs9IDggKQorICAgICAgICAgeworLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDEuMTYge2Q0LWQ1fSwgWyVbczJwdHJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQxLjE2IHtkOC1kOX0sIFslW3M0cHRyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtdHJhY2tpbmctbWFrZS1vcGVuY3ZfZG5uLWRlcGVuZGFuY3ktb3B0aW9uYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS10cmFja2luZy1tYWtlLW9wZW5jdl9kbm4tZGVwZW5kYW5jeS1vcHRpb25hbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJhNDNlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS10cmFja2luZy1tYWtlLW9wZW5jdl9kbm4tZGVwZW5kYW5jeS1vcHRpb25hbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0MyArMCwwIEBACi1Gcm9tIDY5Zjg2MDI1OTc4YjliYmJlZmE1NGE3MjQ4MzE2YTg1OTc3M2FlYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBiZXJhayA8cHgxNzA0QHdlYi5kZT4KLURhdGU6IFNhdCwgNCBNYXIgMjAxNyAxMjozODo1MCArMDEwMAotU3ViamVjdDogW1BBVENIXSB0cmFja2luZzogbWFrZSBvcGVuY3ZfZG5uIGRlcGVuZGFuY3kgb3B0aW9uYWwKLQotVXBzdHJlYW0tc3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfY29udHJpYi9jb21taXQvNDM5MjViNjBkMzkyZmJkMDFkNmIwNDQ5NzEzZjAxMGY5YmFiZTQ0OF0KLVNpZ25lZC1vZmYtYnk6IElzbW8gUHV1c3RpbmVuIDxpc21vLnB1dXN0aW5lbkBpbnRlbC5jb20+Ci0KLS0tLQotIG1vZHVsZXMvdHJhY2tpbmcvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KLSBtb2R1bGVzL3RyYWNraW5nL3NhbXBsZXMvZ290dXJuVHJhY2tlci5jcHAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKy0tLQotIG1vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy9tdWx0aVRyYWNrZXJfZGF0YXNldC5jcHAgfCAgMSArCi0gbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL3RyYWNrZXJfZGF0YXNldC5jcHAgICAgICB8ICAxICsKLSBtb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJUcmFja2VyLmNwcCAgICAgICAgICAgICAgIHwgMTEgKysrKysrKysrKy0KLSBtb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJUcmFja2VyLmhwcCAgICAgICAgICAgICAgIHwgMTIgKysrKysrKystLS0tCi0gbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVXRpbHMuY3BwICAgICAgICAgICAgICAgICB8ICA2ICsrKy0tLQotIG1vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmhwcCAgICAgICAgICAgICAgICAgfCAgNSArKy0tLQotIG1vZHVsZXMvdHJhY2tpbmcvc3JjL3RyYWNrZXIuY3BwICAgICAgICAgICAgICAgICAgfCAgMSArCi0gOSBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHJhY2tpbmcvQ01ha2VMaXN0cy50eHQgYi9tb2R1bGVzL3RyYWNraW5nL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBhOGIzMTgzLi5kMjdmOTk5IDEwMDY0NAotLS0tIGEvbW9kdWxlcy90cmFja2luZy9DTWFrZUxpc3RzLnR4dAotKysrIGIvbW9kdWxlcy90cmFja2luZy9DTWFrZUxpc3RzLnR4dAotQEAgLTEsMiArMSBAQAotLXNldCh0aGVfZGVzY3JpcHRpb24gIlRyYWNraW5nIEFQSSIpCi0tb2N2X2RlZmluZV9tb2R1bGUodHJhY2tpbmcgb3BlbmN2X2ltZ3Byb2Mgb3BlbmN2X2NvcmUgb3BlbmN2X3ZpZGVvIG9wZW5jdl9oaWdoZ3VpIG9wZW5jdl9kbm4gb3BlbmN2X3Bsb3QgT1BUSU9OQUwgb3BlbmN2X2RhdGFzZXRzIFdSQVAgcHl0aG9uKQotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0rb2N2X2RlZmluZV9tb2R1bGUodHJhY2tpbmcgb3BlbmN2X2ltZ3Byb2Mgb3BlbmN2X2NvcmUgb3BlbmN2X3ZpZGVvIG9wZW5jdl9oaWdoZ3VpIG9wZW5jdl9wbG90IE9QVElPTkFMIG9wZW5jdl9kbm4gb3BlbmN2X2RhdGFzZXRzIFdSQVAgcHl0aG9uKQotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy9nb3R1cm5UcmFja2VyLmNwcCBiL21vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy9nb3R1cm5UcmFja2VyLmNwcAotaW5kZXggMzg5NzcxZS4uMWU2NjMyZCAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy9nb3R1cm5UcmFja2VyLmNwcAotKysrIGIvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL2dvdHVyblRyYWNrZXIuY3BwCi1AQCAtNDUsNiArNDUsOSBAQAotIC8vMSAtIFRyYWluIHlvdSBvd24gR09UVVJOIG1vZGVsIHVzaW5nIDxodHRwczovL2dpdGh1Yi5jb20vQXVyb24tWC9HT1RVUk5fVHJhaW5pbmdfVG9vbGtpdD4KLSAvLzIgLSBEb3dubG9hZCBwcmV0cmFpbmVkIGNhZmZlbW9kZWwgZnJvbSA8aHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfZXh0cmE+Ci0gCi0rI2luY2x1ZGUgIm9wZW5jdjIvb3BlbmN2X21vZHVsZXMuaHBwIgotKyNpZiBkZWZpbmVkKEhBVkVfT1BFTkNWX0ROTikgJiYgZGVmaW5lZChIQVZFX09QRU5DVl9EQVRBU0VUUykKLSsKLSAjaW5jbHVkZSAib3BlbmN2Mi9kYXRhc2V0cy90cmFja19hbG92LmhwcCIKLSAjaW5jbHVkZSA8b3BlbmN2Mi9jb3JlL3V0aWxpdHkuaHBwPgotICNpbmNsdWRlIDxvcGVuY3YyL3RyYWNraW5nLmhwcD4KLUBAIC02NSw4ICs2OCw4IEBAIHN0YXRpYyBib29sIHN0YXJ0U2VsZWN0aW9uID0gZmFsc2U7Ci0gUmVjdDJkIGJvdW5kaW5nQm94OwotIAotIHN0YXRpYyBjb25zdCBjaGFyKiBrZXlzID0KLS17ICJ7QGRhdGFzZXRfcGF0aCAgICAgfHRydWV8IERhdGFzZXQgcGF0aCAgICAgfSIKLS0ie0BkYXRhc2V0X2lkICAgICB8MXwgRGF0YXNldCBJRCAgICAgfSIKLSt7ICJ7QGRhdGFzZXRfcGF0aCAgICAgfHwgRGF0YXNldCBwYXRoICAgfSIKLSsgICJ7QGRhdGFzZXRfaWQgICAgICB8MXwgRGF0YXNldCBJRCAgICAgfSIKLSB9OwotIAotIHN0YXRpYyB2b2lkIG9uTW91c2UoaW50IGV2ZW50LCBpbnQgeCwgaW50IHksIGludCwgdm9pZCopCi1AQCAtMTQ0LDkgKzE0NywxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICBQdHI8Y3Y6OmRhdGFzZXRzOjpUUkFDS19hbG92PiBkYXRhc2V0ID0gVFJBQ0tfYWxvdjo6Y3JlYXRlKCk7Ci0gICAgIGRhdGFzZXQtPmxvYWQoZGF0YXNldFJvb3RQYXRoKTsKLSAgICAgZGF0YXNldC0+aW5pdERhdGFzZXQoZGF0YXNldElEKTsKLS0KLSAgICAgLy9SZWFkIGZpcnN0IGZyYW1lCi0gICAgIGRhdGFzZXQtPmdldE5leHRGcmFtZShmcmFtZSk7Ci0rICAgIGlmIChmcmFtZS5lbXB0eSgpKQotKyAgICB7Ci0rICAgICAgICBjb3V0IDw8ICJpbnZhbGlkIGRhdGFzZXQ6ICIgPDwgZGF0YXNldFJvb3RQYXRoIDw8IGVuZGw7Ci0rICAgICAgICByZXR1cm4gLTI7Ci0rICAgIH0KLSsKLSAgICAgZnJhbWUuY29weVRvKGltYWdlKTsKLSAgICAgcmVjdGFuZ2xlKGltYWdlLCBib3VuZGluZ0JveCwgU2NhbGFyKDI1NSwgMCwgMCksIDIsIDEpOwotICAgICBpbXNob3coIkdPVFVSTiBUcmFja2luZyIsIGltYWdlKTsKLUBAIC0yMTUsMyArMjIzLDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCi0gICAgIHJldHVybiAwOwotIH0KLSsKLSsjZWxzZSAvLyAhIEhBVkVfT1BFTkNWX0ROTiAmJiBIQVZFX09QRU5DVl9EQVRBU0VUUwotKyNpbmNsdWRlIDxvcGVuY3YyL2NvcmUuaHBwPgotK2ludCBtYWluKCkgewotKyAgICBDVl9FcnJvcihjdjo6RXJyb3I6OlN0c05vdEltcGxlbWVudGVkICwgInRoaXMgc2FtcGxlIG5lZWRzIHRvIGJlIGJ1aWx0IHdpdGggb3BlbmN2X2RhdGFzZXRzIGFuZCBvcGVuY3ZfZG5uICEiKTsKLSsgICAgcmV0dXJuIC0xOwotK30KLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RyYWNraW5nL3NhbXBsZXMvbXVsdGlUcmFja2VyX2RhdGFzZXQuY3BwIGIvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL211bHRpVHJhY2tlcl9kYXRhc2V0LmNwcAotaW5kZXggMjgyNmIxOS4uYjVjMjdkYSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy9tdWx0aVRyYWNrZXJfZGF0YXNldC5jcHAKLSsrKyBiL21vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy9tdWx0aVRyYWNrZXJfZGF0YXNldC5jcHAKLUBAIC0yMzQsNiArMjM0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB9Ci0gCi0gI2Vsc2UgLy8gISBIQVZFX09QRU5DVl9EQVRBU0VUUwotKyNpbmNsdWRlIDxvcGVuY3YyL2NvcmUuaHBwPgotIGludCBtYWluKCkgewotIAlDVl9FcnJvcihjdjo6RXJyb3I6OlN0c05vdEltcGxlbWVudGVkICwgInRoaXMgc2FtcGxlIG5lZWRzIHRvIGJlIGJ1aWx0IHdpdGggb3BlbmN2X2RhdGFzZXRzICEiKTsKLSAJcmV0dXJuIC0xOwotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHJhY2tpbmcvc2FtcGxlcy90cmFja2VyX2RhdGFzZXQuY3BwIGIvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL3RyYWNrZXJfZGF0YXNldC5jcHAKLWluZGV4IDhiNzgzMmEuLjYxNzgxMDUgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3RyYWNraW5nL3NhbXBsZXMvdHJhY2tlcl9kYXRhc2V0LmNwcAotKysrIGIvbW9kdWxlcy90cmFja2luZy9zYW1wbGVzL3RyYWNrZXJfZGF0YXNldC5jcHAKLUBAIC0yMzQsNiArMjM0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAKLSAKLSAjZWxzZSAvLyAhIEhBVkVfT1BFTkNWX0RBVEFTRVRTCi0rI2luY2x1ZGUgPG9wZW5jdjIvY29yZS5ocHA+Ci0gaW50IG1haW4oKSB7Ci0gCUNWX0Vycm9yKGN2OjpFcnJvcjo6U3RzTm90SW1wbGVtZW50ZWQgLCAidGhpcyBzYW1wbGUgbmVlZHMgdG8gYmUgYnVpbHQgd2l0aCBvcGVuY3ZfZGF0YXNldHMgISIpOwotIAlyZXR1cm4gLTE7Ci1kaWZmIC0tZ2l0IGEvbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVHJhY2tlci5jcHAgYi9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJUcmFja2VyLmNwcAotaW5kZXggNThkZWJmZC4uNDkwNGY0NyAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clRyYWNrZXIuY3BwCi0rKysgYi9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJUcmFja2VyLmNwcAotQEAgLTM4LDcgKzM4LDcgQEAKLSAvLyB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUsIGV2ZW4gaWYgYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2UuCi0gLy8KLSAvL00qLwotLQotKyNpbmNsdWRlICJvcGVuY3YyL29wZW5jdl9tb2R1bGVzLmhwcCIKLSAjaW5jbHVkZSAiZ3RyVHJhY2tlci5ocHAiCi0gCi0gCi1AQCAtNTQsOSArNTQsMTYgQEAgdm9pZCBUcmFja2VyR09UVVJOOjpQYXJhbXM6OndyaXRlKGN2OjpGaWxlU3RvcmFnZSYgLypmcyovKSBjb25zdCB7fQotIAotIFB0cjxUcmFja2VyR09UVVJOPiBUcmFja2VyR09UVVJOOjpjcmVhdGVUcmFja2VyKGNvbnN0IFRyYWNrZXJHT1RVUk46OlBhcmFtcyAmcGFyYW1ldGVycykKLSB7Ci0rI2lmZGVmIEhBVkVfT1BFTkNWX0ROTgotICAgICByZXR1cm4gUHRyPGd0cjo6VHJhY2tlckdPVFVSTkltcGw+KG5ldyBndHI6OlRyYWNrZXJHT1RVUk5JbXBsKHBhcmFtZXRlcnMpKTsKLSsjZWxzZQotKyAgICAodm9pZCkocGFyYW1ldGVycyk7Ci0rICAgIENWX0Vycm9yTm9SZXR1cm4oY3Y6OkVycm9yOjpTdHNOb3RJbXBsZW1lbnRlZCAsICJ0byB1c2UgR09UVVJOLCB0aGUgdHJhY2tpbmcgbW9kdWxlIG5lZWRzIHRvIGJlIGJ1aWx0IHdpdGggb3BlbmN2X2RubiAhIik7Ci0rI2VuZGlmCi0gfQotIAotKwotKyNpZmRlZiBIQVZFX09QRU5DVl9ETk4KLSBuYW1lc3BhY2UgZ3RyCi0gewotIAotQEAgLTE4Myw5ICsxOTAsMTEgQEAgYm9vbCBUcmFja2VyR09UVVJOSW1wbDo6dXBkYXRlSW1wbChjb25zdCBNYXQmIGltYWdlLCBSZWN0MmQmIGJvdW5kaW5nQm94KQotICAgICAvL1NldCBuZXcgbW9kZWwgaW1hZ2UgYW5kIEJCIGZyb20gY3VycmVudCBmcmFtZQotICAgICAoKFRyYWNrZXJHT1RVUk5Nb2RlbCopc3RhdGljX2Nhc3Q8VHJhY2tlck1vZGVsKj4obW9kZWwpKS0+c2V0SW1hZ2UoY3VyRnJhbWUpOwotICAgICAoKFRyYWNrZXJHT1RVUk5Nb2RlbCopc3RhdGljX2Nhc3Q8VHJhY2tlck1vZGVsKj4obW9kZWwpKS0+c2V0Qm91ZGluZ0JveChjdXJCQik7Ci0rCi0gICAgIHJldHVybiB0cnVlOwotIH0KLSAKLSB9Ci0rI2VuZGlmIC8vIE9QRU5DVl9IQVZFX0ROTgotIAotIH0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJUcmFja2VyLmhwcCBiL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clRyYWNrZXIuaHBwCi1pbmRleCAzNGYyYzQ4Li4yMWFlM2Q5IDEwMDY0NAotLS0tIGEvbW9kdWxlcy90cmFja2luZy9zcmMvZ3RyVHJhY2tlci5ocHAKLSsrKyBiL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clRyYWNrZXIuaHBwCi1AQCAtNDUsMTEgKzQ1LDE1IEBACi0gCi0gI2luY2x1ZGUgInByZWNvbXAuaHBwIgotICNpbmNsdWRlICJvcGVuY3YyL3ZpZGVvL3RyYWNraW5nLmhwcCIKLS0jaW5jbHVkZSAib3BlbmN2Mi9kbm4uaHBwIgotICNpbmNsdWRlICJndHJVdGlscy5ocHAiCi0gI2luY2x1ZGUgIm9wZW5jdjIvaW1ncHJvYy5ocHAiCi0tI2luY2x1ZGU8YWxnb3JpdGhtPgotLSNpbmNsdWRlPGxpbWl0cy5oPgotKwotKyNpbmNsdWRlIDxhbGdvcml0aG0+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKwotKyNpbmNsdWRlICJvcGVuY3YyL29wZW5jdl9tb2R1bGVzLmhwcCIKLSsjaWZkZWYgSEFWRV9PUEVOQ1ZfRE5OCi0rI2luY2x1ZGUgIm9wZW5jdjIvZG5uLmhwcCIKLSAKLSBuYW1lc3BhY2UgY3YKLSB7Ci1AQCAtNzIsNSArNzYsNSBAQCBwdWJsaWM6Ci0gCi0gfQotIH0KLS0KLSsjZW5kaWYKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJVdGlscy5jcHAgYi9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJVdGlscy5jcHAKLWluZGV4IDBkZjExOTcuLmU4MGRkYTEgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJVdGlscy5jcHAKLSsrKyBiL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmNwcAotQEAgLTU4LDcgKzU4LDcgQEAgZG91YmxlIGdlbmVyYXRlUmFuZG9tTGFwbGFjaWFuKGRvdWJsZSBiLCBkb3VibGUgbSkKLSAgICAgICAgIHJldHVybiBtIC0gYipsb2cobik7Ci0gfQotIAotLVJlY3QyZiBhbm5vMnJlY3QodmVjdG9yPFBvaW50MmY+IGFubm9CQikKLStSZWN0MmYgYW5ubzJyZWN0KHN0ZDo6dmVjdG9yPFBvaW50MmY+IGFubm9CQikKLSB7Ci0gICAgIFJlY3QyZiByZWN0QkI7Ci0gICAgIHJlY3RCQi54ID0gbWluKGFubm9CQlswXS54LCBhbm5vQkJbMV0ueCk7Ci1AQCAtNjksOSArNjksOSBAQCBSZWN0MmYgYW5ubzJyZWN0KHZlY3RvcjxQb2ludDJmPiBhbm5vQkIpCi0gICAgIHJldHVybiByZWN0QkI7Ci0gfQotIAotLXZlY3RvciA8VHJhaW5pbmdTYW1wbGU+IGdhdGhlckZyYW1lU2FtcGxlcyhNYXQgcHJldkZyYW1lLCBNYXQgY3VyckZyYW1lLCBSZWN0MmYgcHJldkJCLCBSZWN0MmYgY3VyckJCKQotK3N0ZDo6dmVjdG9yIDxUcmFpbmluZ1NhbXBsZT4gZ2F0aGVyRnJhbWVTYW1wbGVzKE1hdCBwcmV2RnJhbWUsIE1hdCBjdXJyRnJhbWUsIFJlY3QyZiBwcmV2QkIsIFJlY3QyZiBjdXJyQkIpCi0gewotLSAgICB2ZWN0b3IgPFRyYWluaW5nU2FtcGxlPiB0cmFpbmluZ1NhbXBsZXM7Ci0rICAgIHN0ZDo6dmVjdG9yIDxUcmFpbmluZ1NhbXBsZT4gdHJhaW5pbmdTYW1wbGVzOwotICAgICBQb2ludDJmIGN1cnJDZW50ZXIsIHByZXZDZW50ZXI7Ci0gICAgIFJlY3QyZiB0YXJnZXRQYXRjaFJlY3QsIHNlYXJjaFBhdGNoUmVjdDsKLSAgICAgTWF0IHRhcmdldFBhdGNoLCBzZWFyY2hQYXRjaDsKLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJVdGlscy5ocHAgYi9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJVdGlscy5ocHAKLWluZGV4IDhmMzg4YmUuLjQxYWFkMjEgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3RyYWNraW5nL3NyYy9ndHJVdGlscy5ocHAKLSsrKyBiL21vZHVsZXMvdHJhY2tpbmcvc3JjL2d0clV0aWxzLmhwcAotQEAgLTQsNyArNCw2IEBACi0gI2luY2x1ZGUgInByZWNvbXAuaHBwIgotICNpbmNsdWRlIDx2ZWN0b3I+Ci0gI2luY2x1ZGUgIm9wZW5jdjIvaGlnaGd1aS5ocHAiCi0tI2luY2x1ZGUgPG9wZW5jdjIvZGF0YXNldHMvdHJhY2tfYWxvdi5ocHA+Ci0gCi0gbmFtZXNwYWNlIGN2Ci0gewotQEAgLTUwLDEwICs0OSwxMCBAQCBzdHJ1Y3QgVHJhaW5pbmdTYW1wbGUKLSBkb3VibGUgZ2VuZXJhdGVSYW5kb21MYXBsYWNpYW4oZG91YmxlIGIsIGRvdWJsZSBtKTsKLSAKLSAvL0NvbnZlcnQgQUxPVjMwMCsrIGFubm8gY29vcmRpbmF0ZXMgdG8gUmVjdGFuZ2xlIEJCCi0tUmVjdDJmIGFubm8ycmVjdCh2ZWN0b3I8UG9pbnQyZj4gYW5ub0JCKTsKLStSZWN0MmYgYW5ubzJyZWN0KHN0ZDo6dmVjdG9yPFBvaW50MmY+IGFubm9CQik7Ci0gCi0gLy9HYXRoZXIgc2FtcGxlcyBmcm9tIHJhbmRvbSB2aWRlbyBmcmFtZQotLXZlY3RvciA8VHJhaW5pbmdTYW1wbGU+IGdhdGhlckZyYW1lU2FtcGxlcyhNYXQgcHJldkZyYW1lLCBNYXQgY3VyckZyYW1lLCBSZWN0MmYgcHJldkJCLCBSZWN0MmYgY3VyckJCKTsKLStzdGQ6OnZlY3RvciA8VHJhaW5pbmdTYW1wbGU+IGdhdGhlckZyYW1lU2FtcGxlcyhNYXQgcHJldkZyYW1lLCBNYXQgY3VyckZyYW1lLCBSZWN0MmYgcHJldkJCLCBSZWN0MmYgY3VyckJCKTsKLSAKLSB9Ci0gfQotZGlmZiAtLWdpdCBhL21vZHVsZXMvdHJhY2tpbmcvc3JjL3RyYWNrZXIuY3BwIGIvbW9kdWxlcy90cmFja2luZy9zcmMvdHJhY2tlci5jcHAKLWluZGV4IDgxMjdmMmEuLmI5NmFjYTggMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3RyYWNraW5nL3NyYy90cmFja2VyLmNwcAotKysrIGIvbW9kdWxlcy90cmFja2luZy9zcmMvdHJhY2tlci5jcHAKLUBAIC0xMTIsNiArMTEyLDcgQEAgUHRyPFRyYWNrZXI+IFRyYWNrZXI6OmNyZWF0ZSggY29uc3QgU3RyaW5nJiB0cmFja2VyVHlwZSApCi0gICBCT0lMRVJQTEFURV9DT0RFKCJUTEQiLFRyYWNrZXJUTEQpOwotICAgQk9JTEVSUExBVEVfQ09ERSgiS0NGIixUcmFja2VyS0NGKTsKLSAgIEJPSUxFUlBMQVRFX0NPREUoIkdPVFVSTiIsIFRyYWNrZXJHT1RVUk4pOwotKwotICAgcmV0dXJuIFB0cjxUcmFja2VyPigpOwotIH0KLSAKLS0tIAotMi45LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItRG8tbm90LWVuYWJsZS1hc20td2l0aC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLURvLW5vdC1lbmFibGUtYXNtLXdpdGgtY2xhbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJlODY4YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLURvLW5vdC1lbmFibGUtYXNtLXdpdGgtY2xhbmcucGF0Y2gKQEAgLTAsMCArMSw5OTMgQEAKK0Zyb20gMzMzZjYwMTY1YjY3Mzc1ODhlYjk3NWE1ZTQzOTNkODQ3MDExYTFjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IFNlcCAyMDE3IDE4OjA3OjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBEbyBub3QgZW5hYmxlIGFzbSB3aXRoIGNsYW5nCisKK2NsYW5nIHByZXRlbmRzIHRvIGJlIGdjYyA0LjIuMCB3aGljaCBtZWFucyB3ZSB3aWxsCit1c2UgaW5saW5lIGFzbSBmb3Igbm8gcmVhc29uLCBpbnN0ZWFkIG9mIGJ1aWx0aW5zCitvbiBjbGFuZyB3aGVuIHBvc3NpYmxlLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwICB8ICA0ICstCisgM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwIHwgIDIgKy0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcCAgICAgfCA3OCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAgICAgICAgICAgfCA1NCArKysrKysrKysrLS0tLS0tLS0tLS0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAgICAgfCA1NiArKysrKysrKysrLS0tLS0tLS0tLS0KKyAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvZ2F1c3NpYW5fYmx1ci5jcHAgICAgfCAgMiArLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcCAgICAgICAgICB8ICA4ICstLQorIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwICAgICAgICAgICB8ICA0ICstCisgOCBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcAoraW5kZXggODIzOGEzZWNlOC4uZmY0ZmIzNzcwYyAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcAorQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIGV4dHJhY3Q0KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgIHNyY1N0cmlkZSA9PSBkc3QyU3RyaWRlICYmIFwKKyAgICAgICAgICAgICAgICAgIHNyY1N0cmlkZSA9PSBkc3QzU3RyaWRlICYmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAKKyAjZGVmaW5lIFNQTElUX0FTTTIoc2duLCBiaXRzKSBfX2FzbV9fICggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2bGQyLiIgI2JpdHMgIiB7ZDAsIGQyfSwgWyVbaW4wXV0gICAgICAgICAgICBcblx0IiBcCitAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgZXh0cmFjdDQoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIH0KKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIAorICNkZWZpbmUgQUxQSEFfUVVBRChzZ24sIGJpdHMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOyBcCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwCitpbmRleCBmYzk4ZmI5MTgxLi41ZDkyNTFkNTFjIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAKK0BAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBDQVJPVEVORV9OUyB7CisgICAgICAgICAgICAgICAgICBkc3RTdHJpZGUgPT0gc3JjMlN0cmlkZSAmJiBcCisgICAgICAgICAgICAgICAgICBkc3RTdHJpZGUgPT0gc3JjM1N0cmlkZSAmJgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgCisgI2RlZmluZSBNRVJHRV9BU00yKHNnbiwgYml0cykgX19hc21fXyAoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmxkMS4iICNiaXRzICIge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgICAgICAgXG5cdCIgXAorZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAKK2luZGV4IDI2YWU1NGIxNWMuLmQzYTQwZmU2NGUgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAKK0BAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgcmdiMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgY29uc3QgdTMyIEcyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gRzJZX0JUNjAxIDogRzJZX0JUNzA5OworICAgICBjb25zdCB1MzIgQjJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBCMllfQlQ2MDEgOiBCMllfQlQ3MDk7CisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfcjJ5IGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNihSMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9nMnkgYXNtICgiZDMwIikgPSB2bW92X25fczE2KEcyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2IyeSBhc20gKCJkMjkiKSA9IHZtb3Zfbl9zMTYoQjJZKTsKK0BAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCByZ2IyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7CisgICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdTsKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CitAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgcmdieDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgIGNvbnN0IHUzMiBHMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEcyWV9CVDYwMSA6IEcyWV9CVDcwOTsKKyAgICAgY29uc3QgdTMyIEIyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gQjJZX0JUNjAxIDogQjJZX0JUNzA5OworIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7CitAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgcmdieDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1OworIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICBmb3IgKDsgZGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKK0BAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBiZ3IyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAorICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7CisgICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9yMnkgYXNtICgiZDMxIikgPSB2bW92X25fczE2KFIyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2cyeSBhc20gKCJkMzAiKSA9IHZtb3Zfbl9zMTYoRzJZKTsKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfYjJ5IGFzbSAoImQyOSIpID0gdm1vdl9uX3MxNihCMlkpOworQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIGJncjJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCisgICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKKyAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1OworIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICBmb3IgKDsgZGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKK0BAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBiZ3J4MmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgY29uc3QgdTMyIEcyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gRzJZX0JUNjAxIDogRzJZX0JUNzA5OworICAgICBjb25zdCB1MzIgQjJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBCMllfQlQ2MDEgOiBCMllfQlQ3MDk7CisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfcjJ5IGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNihSMlkpOworICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9nMnkgYXNtICgiZDMwIikgPSB2bW92X25fczE2KEcyWSk7CisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2IyeSBhc20gKCJkMjkiKSA9IHZtb3Zfbl9zMTYoQjJZKTsKK0BAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBiZ3J4MmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKKyAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOworICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7CisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgIGZvciAoOyBkaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIGdyYXkycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBzaiA8IHJvaXcxNjsgc2ogKz0gMTYsIGRqICs9IDQ4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAidmxkMS44IHtkMC1kMX0sIFslW2luMF1dICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidm1vdi44IHExLCBxMCAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK0BAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBncmF5MnJnYihjb25zdCBTaXplMkQgJnNpemUsCisgCisgICAgICAgICBpZiAoc2ogPCByb2l3OCkKKyAgICAgICAgIHsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICJ2bGQxLjgge2QwfSwgWyVbaW5dXSAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2bW92LjggZDEsIGQwICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTU4NCw3ICs1ODQsNyBAQCB2b2lkIGdyYXkycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgIHNpemVfdCByb2l3MTYgPSBzaXplLndpZHRoID49IDE1ID8gc2l6ZS53aWR0aCAtIDE1IDogMDsKKyAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOworIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgdmMyNTUgICBhc20gKCJxNCIpID0gdm1vdnFfbl91OCgyNTUpOworICNlbHNlCisgICAgIHVpbnQ4eDE2eDRfdCB2UmdiYTsKK0BAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBncmF5MnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IHNqIDwgcm9pdzE2OyBzaiArPSAxNiwgZGogKz0gNjQpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICJ2bGQxLjgge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2bW92LjggcTEsIHEwICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIGdyYXkycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgCisgICAgICAgICBpZiAoc2ogPCByb2l3OCkKKyAgICAgICAgIHsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICJ2bGQxLjgge2Q1fSwgWyVbaW5dXSAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2bW92LjggZDYsIGQ1ICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTE0MDksNyArMTQwOSw3IEBAIGlubGluZSB2b2lkIGNvbnZlcnRUb0hTVihjb25zdCBzMzIgciwgY29uc3QgczMyIGcsIGNvbnN0IHMzMiBiLAorICAgICAgICAgICAgICAgImQyNCIsImQyNSIsImQyNiIsImQyNyIsImQyOCIsImQyOSIsImQzMCIsImQzMSIgICAgICAgICBcCisgICAgICAgICAgICAgKTsKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIAorICNkZWZpbmUgWUNSQ0JfQ09OU1RTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2Y1lSICBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoNDg5OSk7ICAgICAgICAgICAgICAgIFwKK0BAIC0xNTU1LDcgKzE1NTUsNyBAQCBpbmxpbmUgdWludDh4OHgzX3QgY29udmVydFRvWUNyQ2IoIGNvbnN0IGludDE2eDhfdCYgdlIsIGNvbnN0IGludDE2eDhfdCYgdkcsIGNvbgorICNkZWZpbmUgQ09FRkZfRyAgICggIDg2NjMpCisgI2RlZmluZSBDT0VGRl9CICAgKC0xNzcwNSkKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICNkZWZpbmUgWVVWNDIwQUxQSEEzX0NPTlNUCisgI2RlZmluZSBZVVY0MjBBTFBIQTRfQ09OU1QgcmVnaXN0ZXIgdWludDh4MTZfdCBjMjU1ICBhc20gKCJxMTMiKSA9IHZtb3ZxX25fdTgoMjU1KTsKKyAjZGVmaW5lIFlVVjQyMEFMUEhBM19DT05WRVJUCitAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCByZ2IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CisgICAgIGNvbnN0IHMzMiBoc3Zfc2hpZnQgPSAxMjsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7CitAQCAtMTg3MSw3ICsxODcxLDcgQEAgdm9pZCByZ2IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUX1RPX0hTVl9BU00odmxkMy44IHtkMC1kMn0sIGQwLCBkMikKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4M190IHZSZ2IgPSB2bGQzX3U4KHNyYyArIHNqKTsKK0BAIC0xOTA0LDcgKzE5MDQsNyBAQCB2b2lkIHJnYngyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CisgICAgIGNvbnN0IHMzMiBoc3Zfc2hpZnQgPSAxMjsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7CitAQCAtMTkyMyw3ICsxOTIzLDcgQEAgdm9pZCByZ2J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDQuOCB7ZDAtZDN9LCBkMCwgZDIpCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDRfdCB2UmdiID0gdmxkNF91OChzcmMgKyBzaik7CitAQCAtMTk1Niw3ICsxOTU2LDcgQEAgdm9pZCBiZ3IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CisgICAgIGNvbnN0IHMzMiBoc3Zfc2hpZnQgPSAxMjsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7CitAQCAtMTk3NSw3ICsxOTc1LDcgQEAgdm9pZCBiZ3IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUX1RPX0hTVl9BU00odmxkMy44IHtkMC1kMn0sIGQyLCBkMCkKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4M190IHZSZ2IgPSB2bGQzX3U4KHNyYyArIHNqKTsKK0BAIC0yMDA4LDcgKzIwMDgsNyBAQCB2b2lkIGJncngyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAjaWZkZWYgQ0FST1RFTkVfTkVPTgorICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7CisgICAgIGNvbnN0IHMzMiBoc3Zfc2hpZnQgPSAxMjsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7CisgICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKKyAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7CitAQCAtMjAyNyw3ICsyMDI3LDcgQEAgdm9pZCBiZ3J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDQuOCB7ZDAtZDN9LCBkMiwgZDApCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDRfdCB2UmdiID0gdmxkNF91OChzcmMgKyBzaik7CitAQCAtMjA2OCw3ICsyMDY4LDcgQEAgdm9pZCByZ2J4MmJncjU2NShjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXcxNjsgc2ogKz0gNjQsIGRqICs9IDMyLCBqICs9IDE2KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDQuOCB7ZDIsIGQ0LCBkNiwgZDh9LCBbJVtpbjBdXSAgICAgICAgQCAgcTAgICAgICAgcTEgICAgICAgcTIgICAgICAgcTMgICAgICAgcTQgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgInZsZDQuOCB7ZDMsIGQ1LCBkNywgZDl9LCBbJVtpbjFdXSAgICAgICAgQCAgeHh4eHh4eHggcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgeHh4eHh4eHggXG5cdCIKK0BAIC0yMTIyLDcgKzIxMjIsNyBAQCB2b2lkIHJnYjJiZ3I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDQ4LCBkaiArPSAzMiwgaiArPSAxNikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICJ2bGQzLjgge2QyLCBkNCwgZDZ9LCBbJVtpbjBdXSAgICAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICBxNCAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAidmxkMy44IHtkMywgZDUsIGQ3fSwgWyVbaW4xXV0gICAgICAgQCAgeHh4eHh4eHggcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgeHh4eHh4eHggXG5cdCIKK0BAIC0yMTc2LDcgKzIxNzYsNyBAQCB2b2lkIHJnYngycmdiNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA2NCwgZGogKz0gMzIsIGogKz0gMTYpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAidmxkNC44IHtkMCwgZDIsIGQ0LCBkNn0sIFslW2luMF1dICAgIEAgIHEwICAgICAgIHExICAgICAgIHEyICAgICAgIHEzICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgInZsZDQuOCB7ZDEsIGQzLCBkNSwgZDd9LCBbJVtpbjFdXSAgICBAICBycnJyUlJSUiBnZ2dnR0dHRyBiYmJiQkJCQiBhYWFhQUFBQSAgIFxuXHQiCitAQCAtMjIzMCw3ICsyMjMwLDcgQEAgdm9pZCByZ2IycmdiNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA0OCwgZGogKz0gMzIsIGogKz0gMTYpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAidmxkMy44IHtkMCwgZDIsIGQ0fSwgWyVbaW4wXV0gICAgICAgIEAgIHEwICAgICAgIHExICAgICAgIHEyICAgICAgIHEzICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgInZsZDMuOCB7ZDEsIGQzLCBkNX0sIFslW2luMV1dICAgICAgICBAICBycnJyUlJSUiBnZ2dnR0dHRyBiYmJiQkJCQiB4eHh4eHh4eCAgIFxuXHQiCitAQCAtMjI4NSw3ICsyMjg1LDcgQEAgdm9pZCByZ2IyeWNyY2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDMuOCB7ZDAtZDJ9LCBkMCwgZDEsIGQyKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHgzX3QgdlJnYiA9IHZsZDNfdTgoc3JjICsgc2opOworQEAgLTIzMjksNyArMjMyOSw3IEBAIHZvaWQgcmdieDJ5Y3JjYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgQ09OVkVSVFRPWUNSQ0IodmxkNC44IHtkMC1kM30sIGQwLCBkMSwgZDIpCisgI2Vsc2UKKyAgICAgICAgICAgICB1aW50OHg4eDRfdCB2UmdiYSA9IHZsZDRfdTgoc3JjICsgc2opOworQEAgLTIzNzMsNyArMjM3Myw3IEBAIHZvaWQgYmdyMnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKKyAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQorICAgICAgICAgeworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUVE9ZQ1JDQih2bGQzLjgge2QwLWQyfSwgZDIsIGQxLCBkMCkKKyAjZWxzZQorICAgICAgICAgICAgIHVpbnQ4eDh4M190IHZCZ3IgPSB2bGQzX3U4KHNyYyArIHNqKTsKK0BAIC0yNDE3LDcgKzI0MTcsNyBAQCB2b2lkIGJncngyeWNyY2IoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDQuOCB7ZDAtZDN9LCBkMiwgZDEsIGQwKQorICNlbHNlCisgICAgICAgICAgICAgdWludDh4OHg0X3QgdkJncmEgPSB2bGQ0X3U4KHNyYyArIHNqKTsKK0BAIC0yNDk5LDcgKzI0OTksNyBAQCB2b2lkIHl1djQyMHNwMnJnYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoMywgZDEsIGQwLCBxNSwgcTYpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNTQ1LDcgKzI1NDUsNyBAQCB2b2lkIHl1djQyMHNwMnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQxLCBkMCwgcTUsIHE2KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitAQCAtMjU5MSw3ICsyNTkxLDcgQEAgdm9pZCB5dXY0MjBpMnJnYihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoMywgZDAsIGQxLCBxNSwgcTYpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNjM3LDcgKzI2MzcsNyBAQCB2b2lkIHl1djQyMGkycmdieChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoNCwgZDAsIGQxLCBxNSwgcTYpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNjgzLDcgKzI2ODMsNyBAQCB2b2lkIHl1djQyMHNwMmJncihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoMywgZDEsIGQwLCBxNiwgcTUpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yNzI5LDcgKzI3MjksNyBAQCB2b2lkIHl1djQyMHNwMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAorICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOworICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQxLCBkMCwgcTYsIHE1KQorICNlbHNlCisgICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7CitAQCAtMjc3NSw3ICsyNzc1LDcgQEAgdm9pZCB5dXY0MjBpMmJncihjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoMywgZDAsIGQxLCBxNiwgcTUpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK0BAIC0yODIxLDcgKzI4MjEsNyBAQCB2b2lkIHl1djQyMGkyYmdyeChjb25zdCBTaXplMkQgJnNpemUsCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoNCwgZDAsIGQxLCBxNiwgcTUpCisgI2Vsc2UKKyAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAKK2luZGV4IDY0YjZkYjc4YWIuLmYwYzJkMTUzZjIgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0LmNwcAorQEAgLTEwMSw3ICsxMDEsNyBAQCBDVlRfRlVOQyh1OCwgczgsIDE2LAorICAgICAgfQorIH0pCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyh1OCwgdTE2LCAxNiwKKyAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTgoMCk7LAorIHsKK0BAIC0xMzUsNyArMTM1LDcgQEAgQ1ZUX0ZVTkModTgsIHUxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHU4LCBzMzIsIDE2LAorICAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB6ZXJvMCBhc20gKCJxMSIpID0gdm1vdnFfbl91OCgwKTsKKyAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzEgYXNtICgicTIiKSA9IHZtb3ZxX25fdTgoMCk7CitAQCAtMTczLDcgKzE3Myw3IEBAIENWVF9GVU5DKHU4LCBzMzIsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyh1OCwgZjMyLCAxNiwKKyAsCisgeworQEAgLTI0OCw3ICsyNDgsNyBAQCBDVlRfRlVOQyhzOCwgdTgsIDE2LAorICAgICAgfQorIH0pCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzOCwgdTE2LCAxNiwKKyAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTgoMCk7LAorIHsKK0BAIC0yODQsNyArMjg0LDcgQEAgQ1ZUX0ZVTkMoczgsIHUxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHM4LCBzMTYsIDE2LAorICwKKyB7CitAQCAtMzIzLDcgKzMyMyw3IEBAIENWVF9GVU5DKHM4LCBzMTYsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzOCwgczMyLCAxNiwKKyAsCisgeworQEAgLTM3Nyw3ICszNzcsNyBAQCBDVlRfRlVOQyhzOCwgczMyLCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczgsIGYzMiwgMTYsCisgLAorIHsKK0BAIC00NDAsNyArNDQwLDcgQEAgQ1ZUX0ZVTkMoczgsIGYzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHUxNiwgdTgsIDE2LAorICwKKyB7CitAQCAtNDc5LDcgKzQ3OSw3IEBAIENWVF9GVU5DKHUxNiwgdTgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyh1MTYsIHM4LCAxNiwKKyAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB2MTI3IGFzbSAoInE0IikgPSB2bW92cV9uX3U4KDEyNyk7LAorIHsKK0BAIC01MjIsNyArNTIyLDcgQEAgQ1ZUX0ZVTkModTE2LCBzOCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHUxNiwgczE2LCA4LAorICAgICAgcmVnaXN0ZXIgdWludDE2eDhfdCB2MzI3NjcgYXNtICgicTQiKSA9IHZtb3ZxX25fdTE2KDB4N0ZGRik7LAorIHsKK0BAIC01NTUsNyArNTU1LDcgQEAgQ1ZUX0ZVTkModTE2LCBzMTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHUxNiwgczMyLCA4LAorICAgICAgcmVnaXN0ZXIgdWludDE2eDhfdCB6ZXJvMCBhc20gKCJxMSIpID0gdm1vdnFfbl91MTYoMCk7LAorIHsKK0BAIC01ODksNyArNTg5LDcgQEAgQ1ZUX0ZVTkModTE2LCBzMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHUxNiwgZjMyLCA4LAorICwKKyB7CitAQCAtNjMzLDcgKzYzMyw3IEBAIENWVF9GVU5DKHUxNiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzMTYsIHU4LCAxNiwKKyAsCisgeworQEAgLTY3Miw3ICs2NzIsNyBAQCBDVlRfRlVOQyhzMTYsIHU4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczE2LCBzOCwgMTYsCisgLAorIHsKK0BAIC03MTEsNyArNzExLDcgQEAgQ1ZUX0ZVTkMoczE2LCBzOCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHMxNiwgdTE2LCA4LAorICAgICAgcmVnaXN0ZXIgaW50MTZ4OF90IHZaZXJvIGFzbSAoInE0IikgPSB2bW92cV9uX3MxNigwKTssCisgeworQEAgLTc0Nyw3ICs3NDcsNyBAQCBDVlRfRlVOQyhzMTYsIHUxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczE2LCBzMzIsIDgsCisgLAorIHsKK0BAIC03ODYsNyArNzg2LDcgQEAgQ1ZUX0ZVTkMoczE2LCBzMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHMxNiwgZjMyLCA4LAorICwKKyB7CitAQCAtODI5LDcgKzgyOSw3IEBAIENWVF9GVU5DKHMxNiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzMzIsIHU4LCA4LAorICwKKyB7CitAQCAtODcwLDcgKzg3MCw3IEBAIENWVF9GVU5DKHMzMiwgdTgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHMzMiwgczgsIDgsCisgLAorIHsKK0BAIC05MTEsNyArOTExLDcgQEAgQ1ZUX0ZVTkMoczMyLCBzOCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUX0ZVTkMoczMyLCB1MTYsIDgsCisgLAorIHsKK0BAIC05NTAsNyArOTUwLDcgQEAgQ1ZUX0ZVTkMoczMyLCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKHMzMiwgczE2LCA4LAorICwKKyB7CitAQCAtOTg5LDcgKzk4OSw3IEBAIENWVF9GVU5DKHMzMiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhzMzIsIGYzMiwgOCwKKyAsCisgeworQEAgLTEwMzQsNyArMTAzNCw3IEBAIENWVF9GVU5DKHMzMiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhmMzIsIHU4LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2bXVsdCBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGZsb2F0KSgxIDw8IDE2KSk7CisgICAgIHJlZ2lzdGVyIHVpbnQzMng0X3QgIHZtYXNrIGFzbSAoInExIikgPSB2ZHVwcV9uX3UzMigxPDwxNik7LAorQEAgLTExMDEsNyArMTEwMSw3IEBAIENWVF9GVU5DKGYzMiwgdTgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVF9GVU5DKGYzMiwgczgsIDgsCisgICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2aGFsZiBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoMC41Zik7LAorIHsKK0BAIC0xMTUzLDcgKzExNTMsNyBAQCBDVlRfRlVOQyhmMzIsIHM4LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhmMzIsIHUxNiwgOCwKKyAgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZoYWxmIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigwLjVmKTssCisgeworQEAgLTEyMTIsNyArMTIxMiw3IEBAIENWVF9GVU5DKGYzMiwgdTE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhmMzIsIHMxNiwgOCwKKyAgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZoYWxmIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigwLjVmKTssCisgeworQEAgLTEyNzEsNyArMTI3MSw3IEBAIENWVF9GVU5DKGYzMiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRfRlVOQyhmMzIsIHMzMiwgOCwKKyAgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZoYWxmIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigwLjVmKTssCisgeworZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcAoraW5kZXggYWU0MWE5ODVjOC4uZDU5OWQyNGMxZSAxMDA2NDQKKy0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcAorKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnRfc2NhbGUuY3BwCitAQCAtNDczLDcgKzQ3Myw3IEBAIENWVFNfRlVOQyh1OCwgczE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHU4LCBzMzIsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC01NjIsNyArNTYyLDcgQEAgQ1ZUU19GVU5DKHU4LCBzMzIsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkModTgsIGYzMiwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCitAQCAtOTg1LDcgKzk4NSw3IEBAIENWVFNfRlVOQyhzOCwgczE2LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHM4LCBzMzIsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xMDc0LDcgKzEwNzQsNyBAQCBDVlRTX0ZVTkMoczgsIHMzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzOCwgZjMyLCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK0BAIC0xMTU1LDcgKzExNTUsNyBAQCBDVlRTX0ZVTkMoczgsIGYzMiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyh1MTYsIHU4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTIxNCw3ICsxMjE0LDcgQEAgQ1ZUU19GVU5DKHUxNiwgdTgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkModTE2LCBzOCwgMTYsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTEyNzMsNyArMTI3Myw3IEBAIENWVFNfRlVOQyh1MTYsIHM4LCAxNiwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DMSh1MTYsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xMzMwLDcgKzEzMzAsNyBAQCBDVlRTX0ZVTkMxKHUxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyh1MTYsIHMxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgQ1ZUU19GVU5DKHUxNiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkModTE2LCBzMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE0NDMsNyArMTQ0Myw3IEBAIENWVFNfRlVOQyh1MTYsIHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHUxNiwgZjMyLCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAorQEAgLTE0OTUsNyArMTQ5NSw3IEBAIENWVFNfRlVOQyh1MTYsIGYzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHMxNiwgdTgsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNTU0LDcgKzE1NTQsNyBAQCBDVlRTX0ZVTkMoczE2LCB1OCwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzMTYsIHM4LCAxNiwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTYxMyw3ICsxNjEzLDcgQEAgQ1ZUU19GVU5DKHMxNiwgczgsIDE2LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMoczE2LCB1MTYsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTE2NzAsNyArMTY3MCw3IEBAIENWVFNfRlVOQyhzMTYsIHUxNiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DMShzMTYsIDE2LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xNzI3LDcgKzE3MjcsNyBAQCBDVlRTX0ZVTkMxKHMxNiwgMTYsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzMTYsIHMzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTc4Myw3ICsxNzgzLDcgQEAgQ1ZUU19GVU5DKHMxNiwgczMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMoczE2LCBmMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCitAQCAtMTgzNSw3ICsxODM1LDcgQEAgQ1ZUU19GVU5DKHMxNiwgZjMyLCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMoczMyLCB1OCwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMTg5Myw3ICsxODkzLDcgQEAgQ1ZUU19GVU5DKHMzMiwgdTgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzMzIsIHM4LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0xOTUxLDcgKzE5NTEsNyBAQCBDVlRTX0ZVTkMoczMyLCBzOCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKHMzMiwgdTE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMDA3LDcgKzIwMDcsNyBAQCBDVlRTX0ZVTkMoczMyLCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzMzIsIHMxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjA2Myw3ICsyMDYzLDcgQEAgQ1ZUU19GVU5DKHMzMiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMxKHMzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjExOCw3ICsyMTE4LDcgQEAgQ1ZUU19GVU5DMShzMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhzMzIsIGYzMiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKK0BAIC0yMTY5LDcgKzIxNjksNyBAQCBDVlRTX0ZVTkMoczMyLCBmMzIsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhmMzIsIHU4LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpKCgxIDw8IDE2KSphbHBoYSkpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpKCgxIDw8IDE2KSpiZXRhKSk7CitAQCAtMjIzOSw3ICsyMjM5LDcgQEAgQ1ZUU19GVU5DKGYzMiwgdTgsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhmMzIsIHM4LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMjkzLDcgKzIyOTMsNyBAQCBDVlRTX0ZVTkMoZjMyLCBzOCwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DKGYzMiwgdTE2LCA4LAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOworICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKK0BAIC0yMzQ1LDcgKzIzNDUsNyBAQCBDVlRTX0ZVTkMoZjMyLCB1MTYsIDgsCisgfSkKKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIENWVFNfRlVOQyhmMzIsIHMxNiwgOCwKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKKyAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCitAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgQ1ZUU19GVU5DKGYzMiwgczE2LCA4LAorIH0pCisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyBDVlRTX0ZVTkMoZjMyLCBzMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAorQEAgLTI0NDgsNyArMjQ0OCw3IEBAIENWVFNfRlVOQyhmMzIsIHMzMiwgOCwKKyB9KQorICNlbmRpZgorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgQ1ZUU19GVU5DMShmMzIsIDgsCisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7CisgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCitkaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwCitpbmRleCBmN2I1ZjE4ZDc5Li5lNWFhOGZjNzViIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwCisrKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvZ2F1c3NpYW5fYmx1ci5jcHAKK0BAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBnYXVzc2lhbkJsdXI1eDUoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCisgICAgICAgICAgICAgICAgIHUxNiogbGlkeDEgPSBsYW5lICsgeCAtIDEqMjsKKyAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MyA9IGxhbmUgKyB4ICsgMSoyOworICAgICAgICAgICAgICAgICB1MTYqIGxpZHg0ID0gbGFuZSArIHggKyAyKjI7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMTYge2QwLCBkMn0sIFslW2luMF1dISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDEsIGQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAKK2luZGV4IDIzMmNjZjNlZmQuLmQ0ZTMyZWE1MGYgMTAwNjQ0CistLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcAorQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAorICAgICAgICAgICAgIGZvciAoOyB4IDwgcm9pdzg7IHggKz0gOCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgMiAqIHgpOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgICAgIF9fYXNtX18gKAorICAgICAgICAgICAgICAgICAgICAgInZsZDIuMTYge2QwLWQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjE2IHtkNC1kN30sIFslW2luNF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgZ2F1c3NpYW5QeXJhbWlkRG93bihjb25zdCBTaXplMkQgJnNyY1NpemUsCisgICAgICAgICAgICAgZm9yICg7IHggPCByb2l3NDsgeCArPSA0KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyAyICogeCk7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4zMiB7ZDAtZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICAgICAidmxkMi4zMiB7ZDQtZDd9LCBbJVtpbjRdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCitAQCAtNjcyLDcgKzY3Miw3IEBAIHZvaWQgZ2F1c3NpYW5QeXJhbWlkRG93bihjb25zdCBTaXplMkQgJnNyY1NpemUsCisgICAgIHN0ZDo6dmVjdG9yPGYzMj4gX2J1Zihjbiooc3JjU2l6ZS53aWR0aCArIDQpICsgMzIvc2l6ZW9mKGYzMikpOworICAgICBmMzIqIGxhbmUgPSBpbnRlcm5hbDo6YWxpZ25QdHIoJl9idWZbMipjbl0sIDMyKTsKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3CisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2YzZkNGYzMiAgYXNtICgicTExIikgPSB2bW92cV9uX2YzMigxLjVmKTsgIC8vIDYvNAorICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2YzFkNGYzMiAgYXNtICgicTEyIikgPSB2bW92cV9uX2YzMigwLjI1Zik7IC8vIDEvNAorIAorQEAgLTczOSw3ICs3MzksNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAorICAgICAgICAgICAgIGZvciAoOyB4IDwgcm9pdzQ7IHggKz0gNCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgMiAqIHgpOworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjMyIHtkMC1kM30sIFslW2luMF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjMyIHtkOC1kMTF9LCBbJVtpbjRdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKK2RpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwCitpbmRleCA4ZDNiNjMyOGIxLi4zNmY2YjIyNzZlIDEwMDY0NAorLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3NjaGFyci5jcHAKKysrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwCitAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU2NoYXJyRGVyaXYoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyb3cwICsgeCk7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyb3cxICsgeCk7CisgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyb3cyICsgeCk7CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNworKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAgICAgICAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICAgICAgInZsZDEuOCB7ZDB9LCBbJVtzcmMwXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgICAgICJ2bGQxLjgge2QyfSwgWyVbc3JjMl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFNjaGFyckRlcml2KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAorICAgICAgICAgeCA9IDA7CisgICAgICAgICBmb3IoIDsgeCA8IHJvaXc4OyB4ICs9IDggKQorICAgICAgICAgeworLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgICAgICAgICAgX19hc21fXyAoCisgICAgICAgICAgICAgICAgICJ2bGQxLjE2IHtkNC1kNX0sIFslW3MycHRyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICAgICAidmxkMS4xNiB7ZDgtZDl9LCBbJVtzNHB0cl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMi1NYWtlLW9wZW5jdi10cy1jcmVhdGUtc2hhcmUtbGlicmFyeS1pbnRlYWQtb2Ytc3RhdGljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NDU1MDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMi1NYWtlLW9wZW5jdi10cy1jcmVhdGUtc2hhcmUtbGlicmFyeS1pbnRlYWQtb2Ytc3RhdGljLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMzUwNTI1MjkzYWVmNjU0OTBlODAxMDRkZGQ5OWUxYjIxYzVkNTRiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJpYW4gTmFpbWVuZyA8Ymlhbm5tQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogV2VkLCAxOSBBcHIgMjAxNyAwMzoxMTozNyArMDkwMAorU3ViamVjdDogW1BBVENIIDIvM10gTWFrZSBvcGVuY3YtdHMgY3JlYXRlIHNoYXJlIGxpYnJhcnkgaW50ZWFkIG9mIHN0YXRpYy4KKworU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorLS0tCisgbW9kdWxlcy90cy9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvdHMvQ01ha2VMaXN0cy50eHQgYi9tb2R1bGVzL3RzL0NNYWtlTGlzdHMudHh0CitpbmRleCBmOTViZWQwNzkuLmVlNjc4NThkZiAxMDA2NDQKKy0tLSBhL21vZHVsZXMvdHMvQ01ha2VMaXN0cy50eHQKKysrKyBiL21vZHVsZXMvdHMvQ01ha2VMaXN0cy50eHQKK0BAIC00LDcgKzQsNyBAQCBpZihOT1QgQlVJTERfb3BlbmN2X3RzIEFORCBOT1QgQlVJTERfVEVTVFMgQU5EIE5PVCBCVUlMRF9QRVJGX1RFU1RTKQorICAgb2N2X21vZHVsZV9kaXNhYmxlKHRzKQorIGVuZGlmKCkKKyAKKy1zZXQoT1BFTkNWX01PRFVMRV9UWVBFIFNUQVRJQykKKysjc2V0KE9QRU5DVl9NT0RVTEVfVFlQRSBTVEFUSUMpCisgc2V0KE9QRU5DVl9NT0RVTEVfSVNfUEFSVF9PRl9XT1JMRCBGQUxTRSkKKyAKKyBpZihXSU5SVCkKKy0tIAorMi4xMy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLVJldmVydC1jaGVjay1GUDE2LWJ1aWxkLWNvbmRpdGlvbi1jb3JyZWN0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMi1SZXZlcnQtY2hlY2stRlAxNi1idWlsZC1jb25kaXRpb24tY29ycmVjdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTk1MGE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLVJldmVydC1jaGVjay1GUDE2LWJ1aWxkLWNvbmRpdGlvbi1jb3JyZWN0bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotRnJvbSA5MTA4ZTM5ZTU1ODRlZjliNDFmODA3NTE2MzliNGVjNzJiM2U5NTM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyNiBBcHIgMjAxNyAxNTowMDozMiAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gUmV2ZXJ0ICJjaGVjayBGUDE2IGJ1aWxkIGNvbmRpdGlvbiBjb3JyZWN0bHkiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgYzdjYjExNmRjMDg0NDFmZTU2Y2Y4MmQ1YjIxZjkyOWU1YjY3NGMxMy4KLQotRml4IHVwIHJldmVydCBjb25mbGljdHMgdG8gdGFrZSBwcmV2aW91cyBiZWhhdmlvdXIuCi0tLS0KLSBjbWFrZS9PcGVuQ1ZDb21waWxlck9wdGlvbnMuY21ha2UgICAgICAgICB8IDQ1ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2N2ZGVmLmggfCAgMiArLQotIG1vZHVsZXMvY29yZS9zcmMvY29udmVydC5jcHAgICAgICAgICAgICAgIHwgMTEgKysrLS0tCi0gbW9kdWxlcy9jb3JlL3Rlc3QvdGVzdF9pbnRyaW4uY3BwICAgICAgICAgfCA2MCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA3MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NtYWtlL09wZW5DVkNvbXBpbGVyT3B0aW9ucy5jbWFrZSBiL2NtYWtlL09wZW5DVkNvbXBpbGVyT3B0aW9ucy5jbWFrZQotaW5kZXggNWJiMDQ3OS4uNGIxOWZkYiAxMDA2NDQKLS0tLSBhL2NtYWtlL09wZW5DVkNvbXBpbGVyT3B0aW9ucy5jbWFrZQotKysrIGIvY21ha2UvT3BlbkNWQ29tcGlsZXJPcHRpb25zLmNtYWtlCi1AQCAtMTg1LDcgKzE4NSw3IEBAIGlmKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNYWCkKLSAgICAgYWRkX2V4dHJhX2NvbXBpbGVyX29wdGlvbigiLW1mcDE2LWZvcm1hdD1pZWVlIikKLSAgIGVuZGlmKEFSTSkKLSAgIGlmKEVOQUJMRV9ORU9OKQotLSAgICBhZGRfZXh0cmFfY29tcGlsZXJfb3B0aW9uKCItbWZwdT1uZW9uIikKLSsgICAgYWRkX2V4dHJhX2NvbXBpbGVyX29wdGlvbigiLW1mcHU9bmVvbi1mcDE2IikKLSAgIGVuZGlmKCkKLSAgIGlmKEVOQUJMRV9WRlBWMyBBTkQgTk9UIEVOQUJMRV9ORU9OKQotICAgICBhZGRfZXh0cmFfY29tcGlsZXJfb3B0aW9uKCItbWZwdT12ZnB2MyIpCi1AQCAtMzcwLDM0ICszNzAsNiBAQCBpZihDTUFLRV9DT01QSUxFUl9JU19HTlVDWFggQU5EIENNQUtFX09QRU5DVl9HQ0NfVkVSU0lPTl9OVU0gR1JFQVRFUiAzOTkpCi0gICBhZGRfZXh0cmFfY29tcGlsZXJfb3B0aW9uKC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbikKLSBlbmRpZigpCi0gCi0taWYoTk9UIE9QRU5DVl9GUDE2X0RJU0FCTEUgQU5EIE5PVCBJT1MpCi0tICBpZihBUk0gQU5EIEVOQUJMRV9ORU9OKQotLSAgICBzZXQoRlAxNl9PUFRJT04gIi1tZnB1PW5lb24tZnAxNiIpCi0tICBlbHNlaWYoKFg4NiBPUiBYODZfNjQpIEFORCBOT1QgTVNWQyBBTkQgRU5BQkxFX0FWWCkKLS0gICAgc2V0KEZQMTZfT1BUSU9OICItbWYxNmMiKQotLSAgZW5kaWYoKQotLSAgdHJ5X2NvbXBpbGUoX19WQUxJRF9GUDE2Ci0tICAgICIke09wZW5DVl9CSU5BUllfRElSfSIKLS0gICAgIiR7T3BlbkNWX1NPVVJDRV9ESVJ9L2NtYWtlL2NoZWNrcy9mcDE2LmNwcCIKLS0gICAgQ09NUElMRV9ERUZJTklUSU9OUyAiLURDSEVDS19GUDE2IiAiJHtGUDE2X09QVElPTn0iCi0tICAgIE9VVFBVVF9WQVJJQUJMRSBUUllfT1VUCi0tICAgICkKLS0gIGlmKE5PVCBfX1ZBTElEX0ZQMTYpCi0tICAgIGlmKChYODYgT1IgWDg2XzY0KSBBTkQgTk9UIE1TVkMgQU5EIE5PVCBFTkFCTEVfQVZYKQotLSAgICAgICMgR0NDIGVuYWJsZXMgQVZYIHdoZW4gbWYxNmMgaXMgcGFzc2VkCi0tICAgICAgbWVzc2FnZShTVEFUVVMgIkZQMTY6IEZlYXR1cmUgZGlzYWJsZWQiKQotLSAgICBlbHNlKCkKLS0gICAgICBtZXNzYWdlKFNUQVRVUyAiRlAxNjogQ29tcGlsZXIgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlIikKLS0gICAgZW5kaWYoKQotLSAgZWxzZSgpCi0tICAgIG1lc3NhZ2UoU1RBVFVTICJGUDE2OiBDb21waWxlciBzdXBwb3J0IGlzIGF2YWlsYWJsZSIpCi0tICAgIHNldChIQVZFX0ZQMTYgMSkKLS0gICAgaWYoTk9UICR7RlAxNl9PUFRJT059IFNUUkVRVUFMICIiKQotLSAgICAgIGFkZF9leHRyYV9jb21waWxlcl9vcHRpb24oJHtGUDE2X09QVElPTn0pCi0tICAgIGVuZGlmKCkKLS0gIGVuZGlmKCkKLS1lbmRpZigpCi0tCi0gI2NvbWJpbmUgYWxsICJleHRyYSIgb3B0aW9ucwotIHNldChDTUFLRV9DX0ZMQUdTICAgICAgICAgICAiJHtDTUFLRV9DX0ZMQUdTfSAke09QRU5DVl9FWFRSQV9GTEFHU30gJHtPUEVOQ1ZfRVhUUkFfQ19GTEFHU30iKQotIHNldChDTUFLRV9DWFhfRkxBR1MgICAgICAgICAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7T1BFTkNWX0VYVFJBX0ZMQUdTfSAke09QRU5DVl9FWFRSQV9DWFhfRkxBR1N9IikKLUBAIC00NTAsNiArNDIyLDIxIEBAIGlmKE1TVkMpCi0gICBlbmRpZigpCi0gZW5kaWYoKQotIAotK2lmKE5PVCBPUEVOQ1ZfRlAxNl9ESVNBQkxFKQotKyAgdHJ5X2NvbXBpbGUoX19WQUxJRF9GUDE2Ci0rICAgICIke09wZW5DVl9CSU5BUllfRElSfSIKLSsgICAgIiR7T3BlbkNWX1NPVVJDRV9ESVJ9L2NtYWtlL2NoZWNrcy9mcDE2LmNwcCIKLSsgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiLURDSEVDS19GUDE2IgotKyAgICBPVVRQVVRfVkFSSUFCTEUgVFJZX09VVAotKyAgICApCi0rICBpZihOT1QgX19WQUxJRF9GUDE2KQotKyAgICBtZXNzYWdlKFNUQVRVUyAiRlAxNjogQ29tcGlsZXIgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlIikKLSsgIGVsc2UoKQotKyAgICBtZXNzYWdlKFNUQVRVUyAiRlAxNjogQ29tcGlsZXIgc3VwcG9ydCBpcyBhdmFpbGFibGUiKQotKyAgICBzZXQoSEFWRV9GUDE2IDEpCi0rICBlbmRpZigpCi0rZW5kaWYoKQotKwotIGlmKEFQUExFIEFORCBOT1QgQ01BS0VfQ1JPU1NDT01QSUxJTkcgQU5EIE5PVCBERUZJTkVEIEVOVntMREZMQUdTfSBBTkQgRVhJU1RTICIvdXNyL2xvY2FsL2xpYiIpCi0gICBsaW5rX2RpcmVjdG9yaWVzKCIvdXNyL2xvY2FsL2xpYiIpCi0gZW5kaWYoKQotZGlmZiAtLWdpdCBhL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS9jdmRlZi5oIGIvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2N2ZGVmLmgKLWluZGV4IGVmYzI0Y2EuLmExMDkzNmIgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvY3ZkZWYuaAotKysrIGIvbW9kdWxlcy9jb3JlL2luY2x1ZGUvb3BlbmN2Mi9jb3JlL2N2ZGVmLmgKLUBAIC0zMTIsNyArMzEyLDcgQEAgZW51bSBDcHVGZWF0dXJlcyB7Ci0gdHlwZWRlZiB1bmlvbiBDdjE2c3VmCi0gewotICAgICBzaG9ydCBpOwotLSNpZiBDVl9GUDE2X1RZUEUKLSsjaWYgKCBkZWZpbmVkIChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykgKSAmJiAhZGVmaW5lZCAoX19DVURBQ0NfXykgJiYgKCBkZWZpbmVkIChfX0dOVUNfXykgJiYgKCAoICggNCA8PSBfX0dOVUNfXyApICYmICggNyA8PSBfX0dOVUNfXyApICkgfHwgKCA1IDw9IF9fR05VQ19fICkgKSApCi0gICAgIF9fZnAxNiBoOwotICNlbmRpZgotICAgICBzdHJ1Y3QgX2ZwMTZGb3JtYXQKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2NvcmUvc3JjL2NvbnZlcnQuY3BwIGIvbW9kdWxlcy9jb3JlL3NyYy9jb252ZXJ0LmNwcAotaW5kZXggZTA0ZDg5ZS4uNDZkYjI2ZiAxMDA2NDQKLS0tLSBhL21vZHVsZXMvY29yZS9zcmMvY29udmVydC5jcHAKLSsrKyBiL21vZHVsZXMvY29yZS9zcmMvY29udmVydC5jcHAKLUBAIC00NCw3ICs0NCw2IEBACi0gI2luY2x1ZGUgInByZWNvbXAuaHBwIgotIAotICNpbmNsdWRlICJvcGVuY2xfa2VybmVsc19jb3JlLmhwcCIKLS0jaW5jbHVkZSAib3BlbmN2Mi9jb3JlL2hhbC9pbnRyaW4uaHBwIgotIAotICNpbmNsdWRlICJvcGVuY3YyL2NvcmUvb3BlbnZ4L292eF9kZWZzLmhwcCIKLSAKLUBAIC00MzgyLDcgKzQzODEsNyBAQCBzdHJ1Y3QgQ3Z0X1NJTUQ8ZmxvYXQsIGludD4KLSAKLSAjZW5kaWYKLSAKLS0jaWYgIUNWX0ZQMTZfVFlQRQotKyNpZiAhKCAoIGRlZmluZWQgKF9fYXJtX18pIHx8IGRlZmluZWQgKF9fYWFyY2g2NF9fKSApICYmICggZGVmaW5lZCAoX19HTlVDX18pICYmICggKCAoIDQgPD0gX19HTlVDX18gKSAmJiAoIDcgPD0gX19HTlVDX18gKSApIHx8ICggNSA8PSBfX0dOVUNfXyApICkgKSApCi0gLy8gY29uc3QgbnVtYmVycyBmb3IgZmxvYXRpbmcgcG9pbnRzIGZvcm1hdAotIGNvbnN0IHVuc2lnbmVkIGludCBrU2hpZnRTaWduaWZpY2FuZCAgICA9IDEzOwotIGNvbnN0IHVuc2lnbmVkIGludCBrTWFza0ZwMTZTaWduaWZpY2FuZCA9IDB4M2ZmOwotQEAgLTQzOTAsNyArNDM4OSw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBrQmlhc0ZwMTZFeHBvbmVudCAgICA9IDE1OwotIGNvbnN0IHVuc2lnbmVkIGludCBrQmlhc0ZwMzJFeHBvbmVudCAgICA9IDEyNzsKLSAjZW5kaWYKLSAKLS0jaWYgQ1ZfRlAxNl9UWVBFCi0rI2lmICggZGVmaW5lZCAoX19hcm1fXykgfHwgZGVmaW5lZCAoX19hYXJjaDY0X18pICkgJiYgKCBkZWZpbmVkIChfX0dOVUNfXykgJiYgKCAoICggNCA8PSBfX0dOVUNfXyApICYmICggNyA8PSBfX0dOVUNfXyApICkgfHwgKCA1IDw9IF9fR05VQ19fICkgKSApCi0gc3RhdGljIGZsb2F0IGNvbnZlcnRGcDE2U1coc2hvcnQgZnAxNikKLSB7Ci0gICAgIC8vIEZwMTYgLT4gRnAzMgotQEAgLTQ0NTIsNyArNDQ1MSw3IEBAIHN0YXRpYyBmbG9hdCBjb252ZXJ0RnAxNlNXKHNob3J0IGZwMTYpCi0gfQotICNlbmRpZgotIAotLSNpZiBDVl9GUDE2X1RZUEUKLSsjaWYgKCBkZWZpbmVkIChfX2FybV9fKSB8fCBkZWZpbmVkIChfX2FhcmNoNjRfXykgKSAmJiAoIGRlZmluZWQgKF9fR05VQ19fKSAmJiAoICggKCA0IDw9IF9fR05VQ19fICkgJiYgKCA3IDw9IF9fR05VQ19fICkgKSB8fCAoIDUgPD0gX19HTlVDX18gKSApICkKLSBzdGF0aWMgc2hvcnQgY29udmVydEZwMTZTVyhmbG9hdCBmcDMyKQotIHsKLSAgICAgLy8gRnAzMiAtPiBGcDE2Ci1AQCAtNDU2MCw3ICs0NTU5LDcgQEAgY3Z0U2NhbGVIYWxmXzxmbG9hdCwgc2hvcnQ+KCBjb25zdCBmbG9hdCogc3JjLCBzaXplX3Qgc3N0ZXAsIHNob3J0KiBkc3QsIHNpemVfdAotICAgICAgICAgICAgIGlmICggKCAoaW50cHRyX3QpZHN0ICYgMHhmICkgPT0gMCApCi0gI2VuZGlmCi0gICAgICAgICAgICAgewotLSNpZiBDVl9GUDE2ICYmIENWX1NJTUQxMjgKLSsjaWYgQ1ZfRlAxNgotICAgICAgICAgICAgICAgICBmb3IgKCA7IHggPD0gc2l6ZS53aWR0aCAtIDQ7IHggKz0gNCkKLSAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgdl9mbG9hdDMyeDQgdl9zcmMgPSB2X2xvYWQoc3JjICsgeCk7Ci1AQCAtNDYwNiw3ICs0NjA1LDcgQEAgY3Z0U2NhbGVIYWxmXzxzaG9ydCwgZmxvYXQ+KCBjb25zdCBzaG9ydCogc3JjLCBzaXplX3Qgc3N0ZXAsIGZsb2F0KiBkc3QsIHNpemVfdAotICAgICAgICAgICAgIGlmICggKCAoaW50cHRyX3Qpc3JjICYgMHhmICkgPT0gMCApCi0gI2VuZGlmCi0gICAgICAgICAgICAgewotLSNpZiBDVl9GUDE2ICYmIENWX1NJTUQxMjgKLSsjaWYgQ1ZfRlAxNgotICAgICAgICAgICAgICAgICBmb3IgKCA7IHggPD0gc2l6ZS53aWR0aCAtIDQ7IHggKz0gNCkKLSAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgdl9mbG9hdDE2eDQgdl9zcmMgPSB2X2xvYWRfZjE2KHNyYyArIHgpOwotZGlmZiAtLWdpdCBhL21vZHVsZXMvY29yZS90ZXN0L3Rlc3RfaW50cmluLmNwcCBiL21vZHVsZXMvY29yZS90ZXN0L3Rlc3RfaW50cmluLmNwcAotaW5kZXggNjZiMjA4My4uNzM0OWQ0OCAxMDA2NDQKLS0tLSBhL21vZHVsZXMvY29yZS90ZXN0L3Rlc3RfaW50cmluLmNwcAotKysrIGIvbW9kdWxlcy9jb3JlL3Rlc3QvdGVzdF9pbnRyaW4uY3BwCi1AQCAtNzI5LDU2ICs3MjksNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUj4gc3RydWN0IFRoZVRlc3QKLSAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgfQotIAotKyNpZiBDVl9GUDE2Ci0gICAgIFRoZVRlc3QgJiB0ZXN0X2xvYWRzdG9yZV9mcDE2KCkKLSAgICAgewotLSNpZiBDVl9GUDE2Ci0gICAgICAgICBBbGlnbmVkRGF0YTxSPiBkYXRhOwotICAgICAgICAgQWxpZ25lZERhdGE8Uj4gb3V0OwotIAotLSAgICAgICAgaWYoY2hlY2tIYXJkd2FyZVN1cHBvcnQoQ1ZfQ1BVX0ZQMTYpKQotLSAgICAgICAgewotLSAgICAgICAgICAgIC8vIGNoZWNrIGlmIGFkZHJlc3NlcyBhcmUgYWxpZ25lZCBhbmQgdW5hbGlnbmVkIHJlc3BlY3RpdmVseQotLSAgICAgICAgICAgIEVYUEVDVF9FUSgoc2l6ZV90KTAsIChzaXplX3QpJmRhdGEuYS5kICUgMTYpOwotLSAgICAgICAgICAgIEVYUEVDVF9ORSgoc2l6ZV90KTAsIChzaXplX3QpJmRhdGEudS5kICUgMTYpOwotLSAgICAgICAgICAgIEVYUEVDVF9FUSgoc2l6ZV90KTAsIChzaXplX3QpJm91dC5hLmQgJSAxNik7Ci0tICAgICAgICAgICAgRVhQRUNUX05FKChzaXplX3QpMCwgKHNpemVfdCkmb3V0LnUuZCAlIDE2KTsKLS0KLS0gICAgICAgICAgICAvLyBjaGVjayBzb21lIGluaXRpYWxpemF0aW9uIG1ldGhvZHMKLS0gICAgICAgICAgICBSIHIxID0gZGF0YS51OwotLSAgICAgICAgICAgIFIgcjIgPSB2X2xvYWRfZjE2KGRhdGEuYS5kKTsKLS0gICAgICAgICAgICBSIHIzKHIyKTsKLS0gICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS51WzBdLCByMS5nZXQwKCkpOwotLSAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmFbMF0sIHIyLmdldDAoKSk7Ci0tICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuYVswXSwgcjMuZ2V0MCgpKTsKLS0KLS0gICAgICAgICAgICAvLyBjaGVjayBzb21lIHN0b3JlIG1ldGhvZHMKLS0gICAgICAgICAgICBvdXQuYS5jbGVhcigpOwotLSAgICAgICAgICAgIHZfc3RvcmVfZjE2KG91dC5hLmQsIHIxKTsKLS0gICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5hLCBvdXQuYSk7Ci0tICAgICAgICB9Ci0rICAgICAgICAvLyBjaGVjayBpZiBhZGRyZXNzZXMgYXJlIGFsaWduZWQgYW5kIHVuYWxpZ25lZCByZXNwZWN0aXZlbHkKLSsgICAgICAgIEVYUEVDVF9FUSgoc2l6ZV90KTAsIChzaXplX3QpJmRhdGEuYS5kICUgMTYpOwotKyAgICAgICAgRVhQRUNUX05FKChzaXplX3QpMCwgKHNpemVfdCkmZGF0YS51LmQgJSAxNik7Ci0rICAgICAgICBFWFBFQ1RfRVEoKHNpemVfdCkwLCAoc2l6ZV90KSZvdXQuYS5kICUgMTYpOwotKyAgICAgICAgRVhQRUNUX05FKChzaXplX3QpMCwgKHNpemVfdCkmb3V0LnUuZCAlIDE2KTsKLSsKLSsgICAgICAgIC8vIGNoZWNrIHNvbWUgaW5pdGlhbGl6YXRpb24gbWV0aG9kcwotKyAgICAgICAgUiByMSA9IGRhdGEudTsKLSsgICAgICAgIFIgcjIgPSB2X2xvYWRfZjE2KGRhdGEuYS5kKTsKLSsgICAgICAgIFIgcjMocjIpOwotKyAgICAgICAgRVhQRUNUX0VRKGRhdGEudVswXSwgcjEuZ2V0MCgpKTsKLSsgICAgICAgIEVYUEVDVF9FUShkYXRhLmFbMF0sIHIyLmdldDAoKSk7Ci0rICAgICAgICBFWFBFQ1RfRVEoZGF0YS5hWzBdLCByMy5nZXQwKCkpOwotKwotKyAgICAgICAgLy8gY2hlY2sgc29tZSBzdG9yZSBtZXRob2RzCi0rICAgICAgICBvdXQuYS5jbGVhcigpOwotKyAgICAgICAgdl9zdG9yZV9mMTYob3V0LmEuZCwgcjEpOwotKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuYSwgb3V0LmEpOwotIAotICAgICAgICAgcmV0dXJuICp0aGlzOwotLSNlbmRpZgotICAgICB9Ci0gCi0gICAgIFRoZVRlc3QgJiB0ZXN0X2Zsb2F0X2N2dF9mcDE2KCkKLSAgICAgewotLSNpZiBDVl9GUDE2Ci0gICAgICAgICBBbGlnbmVkRGF0YTx2X2Zsb2F0MzJ4ND4gZGF0YTsKLSAKLS0gICAgICAgIGlmKGNoZWNrSGFyZHdhcmVTdXBwb3J0KENWX0NQVV9GUDE2KSkKLS0gICAgICAgIHsKLS0gICAgICAgICAgICAvLyBjaGVjayBjb252ZXJzaW9uCi0tICAgICAgICAgICAgdl9mbG9hdDMyeDQgcjEgPSB2X2xvYWQoZGF0YS5hLmQpOwotLSAgICAgICAgICAgIHZfZmxvYXQxNng0IHIyID0gdl9jdnRfZjE2KHIxKTsKLS0gICAgICAgICAgICB2X2Zsb2F0MzJ4NCByMyA9IHZfY3Z0X2YzMihyMik7Ci0tICAgICAgICAgICAgRVhQRUNUX0VRKDB4M2MwMCwgcjIuZ2V0MCgpKTsKLS0gICAgICAgICAgICBFWFBFQ1RfRVEocjMuZ2V0MCgpLCByMS5nZXQwKCkpOwotLSAgICAgICAgfQotKyAgICAgICAgLy8gY2hlY2sgY29udmVyc2lvbgotKyAgICAgICAgdl9mbG9hdDMyeDQgcjEgPSB2X2xvYWQoZGF0YS5hLmQpOwotKyAgICAgICAgdl9mbG9hdDE2eDQgcjIgPSB2X2N2dF9mMTYocjEpOwotKyAgICAgICAgdl9mbG9hdDMyeDQgcjMgPSB2X2N2dF9mMzIocjIpOwotKyAgICAgICAgRVhQRUNUX0VRKDB4M2MwMCwgcjIuZ2V0MCgpKTsKLSsgICAgICAgIEVYUEVDVF9FUShyMy5nZXQwKCksIHIxLmdldDAoKSk7Ci0gCi0gICAgICAgICByZXR1cm4gKnRoaXM7Ci0tI2VuZGlmCi0gICAgIH0KLSsjZW5kaWYKLSAKLSB9OwotIAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMi1pbWdjb2RlY3MtcmVmYWN0b3JpbmctaW1wcm92ZS1jb2RlLXF1YWxpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMi1pbWdjb2RlY3MtcmVmYWN0b3JpbmctaW1wcm92ZS1jb2RlLXF1YWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmMzNhZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLWltZ2NvZGVjcy1yZWZhY3RvcmluZy1pbXByb3ZlLWNvZGUtcXVhbGl0eS5wYXRjaApAQCAtMCwwICsxLDY1NiBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvcHVsbC85Mzc2L2NvbW1pdHMvOTk5ZjQxZmI0ZjRhYTk0YTBjYjQ3MjU2OTE5YWU4YjVjMjljYTVmM10KKworRml4IENWRXMgZm9yIG9wZW5jdiAzLjM6CisKKyogQ1ZFLTIwMTctMTI1OTcKKyogQ1ZFLTIwMTctMTI1OTgKKyogQ1ZFLTIwMTctMTI1OTkKKyogQ1ZFLTIwMTctMTI2MDAKKyogQ1ZFLTIwMTctMTI2MDEKKyogQ1ZFLTIwMTctMTI2MDIKKyogQ1ZFLTIwMTctMTI2MDMKKyogQ1ZFLTIwMTctMTI2MDQKKyogQ1ZFLTIwMTctMTI2MDUKKyogQ1ZFLTIwMTctMTI2MDYKKyogQ1ZFLTIwMTctMTI4NjIKKyogQ1ZFLTIwMTctMTI4NjMKKyogQ1ZFLTIwMTctMTI4NjQKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK0Zyb20gOTk5ZjQxZmI0ZjRhYTk0YTBjYjQ3MjU2OTE5YWU4YjVjMjljYTVmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBBbGVraGluIDxhbGV4YW5kZXIuYS5hbGVraGluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMjI6MDQ6NTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGltZ2NvZGVjczogcmVmYWN0b3JpbmcsIGltcHJvdmUgY29kZSBxdWFsaXR5CisKKy0tLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmNwcCAgIHwgICAyICsKKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5ocHAgICB8ICAxOSArKystLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwIHwgIDEzICsrLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9weG0uY3BwIHwgMTIyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9sb2Fkc2F2ZS5jcHAgIHwgMTY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIDUgZmlsZXMgY2hhbmdlZCwgMjMxIGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uY3BwCitpbmRleCBhN2UxODdmYTAuLjBhODk0MWFlYyAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uY3BwCitAQCAtMjA5LDYgKzIwOSw4IEBAIGludCAgUkxCeXRlU3RyZWFtOjpnZXRCeXRlKCkKKyAgICAgICAgIGN1cnJlbnQgPSBtX2N1cnJlbnQ7CisgICAgIH0KKyAKKysgICAgQ1ZfQXNzZXJ0KGN1cnJlbnQgPCBtX2VuZCk7CisrCisgICAgIHZhbCA9ICooKHVjaGFyKiljdXJyZW50KTsKKyAgICAgbV9jdXJyZW50ID0gY3VycmVudCArIDE7CisgICAgIHJldHVybiB2YWw7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uaHBwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uaHBwCitpbmRleCA0NjVjMGE4NDcuLjI2OTQ3OTcxZiAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmhwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uaHBwCitAQCAtNDgsMTMgKzQ4LDIwIEBACisgbmFtZXNwYWNlIGN2CisgeworIAorLWVudW0KKy17CistICAgIFJCU19USFJPV19FT1M9LTEyMywgIC8vIDxlbmQgb2Ygc3RyZWFtPiBleGNlcHRpb24gY29kZQorLSAgICBSQlNfVEhST1dfRk9SQj0tMTI0LCAgLy8gPGZvcnJiaWRkZW4gaHVmZm1hbiBjb2RlPiBleGNlcHRpb24gY29kZQorLSAgICBSQlNfSFVGRl9GT1JCPTIwNDcsICAvLyBmb3JyYmlkZGVuIGh1ZmZtYW4gY29kZSAidmFsdWUiCistICAgIFJCU19CQURfSEVBREVSPS0xMjUgLy8gaW52YWxpZCBoZWFkZXIKKysjZGVmaW5lIERFQ0xBUkVfUkJTX0VYQ0VQVElPTihuYW1lKSBcCisrY2xhc3MgUkJTXyAjIyBuYW1lICMjIF9FeGNlcHRpb24gOiBwdWJsaWMgY3Y6OkV4Y2VwdGlvbiBcCisreyBcCisrcHVibGljOiBcCisrICAgIFJCU18gIyMgbmFtZSAjIyBfRXhjZXB0aW9uKGludCBjb2RlXywgY29uc3QgU3RyaW5nJiBlcnJfLCBjb25zdCBTdHJpbmcmIGZ1bmNfLCBjb25zdCBTdHJpbmcmIGZpbGVfLCBpbnQgbGluZV8pIDogXAorKyAgICAgICAgY3Y6OkV4Y2VwdGlvbihjb2RlXywgZXJyXywgZnVuY18sIGZpbGVfLCBsaW5lXykgXAorKyAgICB7fSBcCisgfTsKKytERUNMQVJFX1JCU19FWENFUFRJT04oVEhST1dfRU9TKQorKyNkZWZpbmUgUkJTX1RIUk9XX0VPUyBSQlNfVEhST1dfRU9TX0V4Y2VwdGlvbihjdjo6RXJyb3I6OlN0c0Vycm9yLCAiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgc3RyZWFtIiwgQ1ZfRnVuYywgX19GSUxFX18sIF9fTElORV9fKQorK0RFQ0xBUkVfUkJTX0VYQ0VQVElPTihUSFJPV19GT1JCKQorKyNkZWZpbmUgUkJTX1RIUk9XX0ZPUkIgUkJTX1RIUk9XX0ZPUkJfRXhjZXB0aW9uKGN2OjpFcnJvcjo6U3RzRXJyb3IsICJGb3JyYmlkZGVuIGh1ZmZtYW4gY29kZSIsIENWX0Z1bmMsIF9fRklMRV9fLCBfX0xJTkVfXykKKytERUNMQVJFX1JCU19FWENFUFRJT04oQkFEX0hFQURFUikKKysjZGVmaW5lIFJCU19CQURfSEVBREVSIFJCU19CQURfSEVBREVSX0V4Y2VwdGlvbihjdjo6RXJyb3I6OlN0c0Vycm9yLCAiSW52YWxpZCBoZWFkZXIiLCBDVl9GdW5jLCBfX0ZJTEVfXywgX19MSU5FX18pCisgCisgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOworIAorZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAKK2luZGV4IDg2Y2FjZDMxNi4uMjU3Zjk3YzJkIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwCitAQCAtMTE4LDggKzExOCw5IEBAIGJvb2wgIEJtcERlY29kZXI6OnJlYWRIZWFkZXIoKQorIAorICAgICAgICAgICAgICAgICBpZiggbV9icHAgPD0gOCApCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIG1lbXNldCggbV9wYWxldHRlLCAwLCBzaXplb2YobV9wYWxldHRlKSk7CistICAgICAgICAgICAgICAgICAgICBtX3N0cm0uZ2V0Qnl0ZXMoIG1fcGFsZXR0ZSwgKGNscnVzZWQgPT0gMD8gMTw8bV9icHAgOiBjbHJ1c2VkKSo0ICk7CisrICAgICAgICAgICAgICAgICAgICBDVl9Bc3NlcnQoY2xydXNlZCA8IDI1Nik7CisrICAgICAgICAgICAgICAgICAgICBtZW1zZXQobV9wYWxldHRlLCAwLCBzaXplb2YobV9wYWxldHRlKSk7CisrICAgICAgICAgICAgICAgICAgICBtX3N0cm0uZ2V0Qnl0ZXMobV9wYWxldHRlLCAoY2xydXNlZCA9PSAwPyAxPDxtX2JwcCA6IGNscnVzZWQpKjQgKTsKKyAgICAgICAgICAgICAgICAgICAgIGlzY29sb3IgPSBJc0NvbG9yUGFsZXR0ZSggbV9wYWxldHRlLCBtX2JwcCApOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVsc2UgaWYoIG1fYnBwID09IDE2ICYmIG1fcmxlX2NvZGUgPT0gQk1QX0JJVEZJRUxEUyApCitAQCAtMjkwLDcgKzI5MSw5IEBAIGJvb2wgIEJtcERlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKCBjb2RlID4gMiApIC8vIGFic29sdXRlIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiggZGF0YSArIGNvZGUqbmNoID4gbGluZV9lbmQgKSBnb3RvIGRlY29kZV9ybGU0X2JhZDsKKy0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0cm0uZ2V0Qnl0ZXMoIHNyYywgKCgoY29kZSArIDEpPj4xKSArIDEpICYgLTIgKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3ogPSAoKChjb2RlICsgMSk+PjEpICsgMSkgJiAofjEpOworKyAgICAgICAgICAgICAgICAgICAgICAgIENWX0Fzc2VydCgoc2l6ZV90KXN6IDwgX3NyYy5zaXplKCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RybS5nZXRCeXRlcyhzcmMsIHN6KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiggY29sb3IgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gRmlsbENvbG9yUm93NCggZGF0YSwgc3JjLCBjb2RlLCBtX3BhbGV0dGUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCitAQCAtMzc5LDcgKzM4Miw5IEBAIGRlY29kZV9ybGU0X2JhZDogOworIAorICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBkYXRhICsgY29kZTMgPiBsaW5lX2VuZCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZGVjb2RlX3JsZThfYmFkOworLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RybS5nZXRCeXRlcyggc3JjLCAoY29kZSArIDEpICYgLTIgKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3ogPSAoY29kZSArIDEpICYgKH4xKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBDVl9Bc3NlcnQoKHNpemVfdClzeiA8IF9zcmMuc2l6ZSgpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBtX3N0cm0uZ2V0Qnl0ZXMoc3JjLCBzeik7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGNvbG9yICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEZpbGxDb2xvclJvdzgoIGRhdGEsIHNyYywgY29kZSwgbV9wYWxldHRlICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9weG0uY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3B4bS5jcHAKK2luZGV4IDE3NTBjYjcwNS4uNjhiZDhmZDkzIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3B4bS5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9weG0uY3BwCitAQCAtNDMsNTAgKzQzLDU4IEBACisgI2luY2x1ZGUgInByZWNvbXAuaHBwIgorICNpbmNsdWRlICJ1dGlscy5ocHAiCisgI2luY2x1ZGUgImdyZm10X3B4bS5ocHAiCisrI2luY2x1ZGUgPGlvc3RyZWFtPgorIAorIG5hbWVzcGFjZSBjdgorIHsKKyAKKyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIFA/TSByZWFkZXIgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgCistc3RhdGljIGludCBSZWFkTnVtYmVyKCBSTEJ5dGVTdHJlYW0mIHN0cm0sIGludCBtYXhkaWdpdHMgKQorK3N0YXRpYyBpbnQgUmVhZE51bWJlcihSTEJ5dGVTdHJlYW0mIHN0cm0sIGludCBtYXhkaWdpdHMgPSAwKQorIHsKKyAgICAgaW50IGNvZGU7CistICAgIGludCB2YWwgPSAwOworKyAgICBpbnQ2NCB2YWwgPSAwOworICAgICBpbnQgZGlnaXRzID0gMDsKKyAKKyAgICAgY29kZSA9IHN0cm0uZ2V0Qnl0ZSgpOworIAorLSAgICBpZiggIWlzZGlnaXQoY29kZSkpCisrICAgIHdoaWxlICghaXNkaWdpdChjb2RlKSkKKyAgICAgeworLSAgICAgICAgZG8KKysgICAgICAgIGlmIChjb2RlID09ICcjJyApCisgICAgICAgICB7CistICAgICAgICAgICAgaWYoIGNvZGUgPT0gJyMnICkKKysgICAgICAgICAgICBkbworICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgZG8KKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgY29kZSA9IHN0cm0uZ2V0Qnl0ZSgpOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIHdoaWxlKCBjb2RlICE9ICdcbicgJiYgY29kZSAhPSAnXHInICk7CisrICAgICAgICAgICAgICAgIGNvZGUgPSBzdHJtLmdldEJ5dGUoKTsKKyAgICAgICAgICAgICB9CistCisrICAgICAgICAgICAgd2hpbGUgKGNvZGUgIT0gJ1xuJyAmJiBjb2RlICE9ICdccicpOworICAgICAgICAgICAgIGNvZGUgPSBzdHJtLmdldEJ5dGUoKTsKKy0KKy0gICAgICAgICAgICB3aGlsZSggaXNzcGFjZShjb2RlKSkKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYgKGlzc3BhY2UoY29kZSkpCisrICAgICAgICB7CisrICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoY29kZSkpCisgICAgICAgICAgICAgICAgIGNvZGUgPSBzdHJtLmdldEJ5dGUoKTsKKyAgICAgICAgIH0KKy0gICAgICAgIHdoaWxlKCAhaXNkaWdpdCggY29kZSApKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysjaWYgMQorKyAgICAgICAgICAgIENWX0Vycm9yTm9SZXR1cm5fKEVycm9yOjpTdHNFcnJvciwgKCJQWE06IFVuZXhwZWN0ZWQgY29kZSBpbiBSZWFkTnVtYmVyKCk6IDB4JXggKCVkKSIsIGNvZGUsIGNvZGUpKTsKKysjZWxzZQorKyAgICAgICAgICAgIGNvZGUgPSBzdHJtLmdldEJ5dGUoKTsKKysjZW5kaWYKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBkbworICAgICB7CistICAgICAgICB2YWwgPSB2YWwqMTAgKyBjb2RlIC0gJzAnOworLSAgICAgICAgaWYoICsrZGlnaXRzID49IG1heGRpZ2l0cyApIGJyZWFrOworKyAgICAgICAgdmFsID0gdmFsKjEwICsgKGNvZGUgLSAnMCcpOworKyAgICAgICAgQ1ZfQXNzZXJ0KHZhbCA8PSBJTlRfTUFYICYmICJQWE06IFJlYWROdW1iZXIoKTogcmVzdWx0IGlzIHRvbyBsYXJnZSIpOworKyAgICAgICAgZGlnaXRzKys7CisrICAgICAgICBpZiAobWF4ZGlnaXRzICE9IDAgJiYgZGlnaXRzID49IG1heGRpZ2l0cykgYnJlYWs7CisgICAgICAgICBjb2RlID0gc3RybS5nZXRCeXRlKCk7CisgICAgIH0KKy0gICAgd2hpbGUoIGlzZGlnaXQoY29kZSkpOworKyAgICB3aGlsZSAoaXNkaWdpdChjb2RlKSk7CisgCistICAgIHJldHVybiB2YWw7CisrICAgIHJldHVybiAoaW50KXZhbDsKKyB9CisgCisgCitAQCAtMTIyLDEzICsxMzAsMTMgQEAgSW1hZ2VEZWNvZGVyIFB4TURlY29kZXI6Om5ld0RlY29kZXIoKSBjb25zdAorICAgICByZXR1cm4gbWFrZVB0cjxQeE1EZWNvZGVyPigpOworIH0KKyAKKy12b2lkICBQeE1EZWNvZGVyOjpjbG9zZSgpCisrdm9pZCBQeE1EZWNvZGVyOjpjbG9zZSgpCisgeworICAgICBtX3N0cm0uY2xvc2UoKTsKKyB9CisgCisgCistYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZEhlYWRlcigpCisrYm9vbCBQeE1EZWNvZGVyOjpyZWFkSGVhZGVyKCkKKyB7CisgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgCitAQCAtMTU4LDEwICsxNjYsMTAgQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZEhlYWRlcigpCisgICAgICAgICBtX2JpbmFyeSA9IGNvZGUgPj0gJzQnOworICAgICAgICAgbV90eXBlID0gbV9icHAgPiA4ID8gQ1ZfOFVDMyA6IENWXzhVQzE7CisgCistICAgICAgICBtX3dpZHRoID0gUmVhZE51bWJlciggbV9zdHJtLCBJTlRfTUFYICk7CistICAgICAgICBtX2hlaWdodCA9IFJlYWROdW1iZXIoIG1fc3RybSwgSU5UX01BWCApOworKyAgICAgICAgbV93aWR0aCA9IFJlYWROdW1iZXIobV9zdHJtKTsKKysgICAgICAgIG1faGVpZ2h0ID0gUmVhZE51bWJlcihtX3N0cm0pOworIAorLSAgICAgICAgbV9tYXh2YWwgPSBtX2JwcCA9PSAxID8gMSA6IFJlYWROdW1iZXIoIG1fc3RybSwgSU5UX01BWCApOworKyAgICAgICAgbV9tYXh2YWwgPSBtX2JwcCA9PSAxID8gMSA6IFJlYWROdW1iZXIobV9zdHJtKTsKKyAgICAgICAgIGlmKCBtX21heHZhbCA+IDY1NTM1ICkKKyAgICAgICAgICAgICB0aHJvdyBSQlNfQkFEX0hFQURFUjsKKyAKK0BAIC0xNzUsOCArMTgzLDE0IEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWRIZWFkZXIoKQorICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgY2F0Y2goLi4uKQorKyAgICBjYXRjaCAoY29uc3QgY3Y6OkV4Y2VwdGlvbiYpCisrICAgIHsKKysgICAgICAgIHRocm93OworKyAgICB9CisrICAgIGNhdGNoICguLi4pCisgICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiUFhNOjpyZWFkSGVhZGVyKCk6IHVua25vd24gQysrIGV4Y2VwdGlvbiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgICAgICB0aHJvdzsKKyAgICAgfQorIAorICAgICBpZiggIXJlc3VsdCApCitAQCAtMTg5LDMzICsyMDMsMjggQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZEhlYWRlcigpCisgfQorIAorIAorLWJvb2wgIFB4TURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisrYm9vbCBQeE1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorIHsKKyAgICAgaW50IGNvbG9yID0gaW1nLmNoYW5uZWxzKCkgPiAxOworICAgICB1Y2hhciogZGF0YSA9IGltZy5wdHIoKTsKKyAgICAgUGFsZXR0ZUVudHJ5IHBhbGV0dGVbMjU2XTsKKyAgICAgYm9vbCAgIHJlc3VsdCA9IGZhbHNlOworLSAgICBpbnQgIGJpdF9kZXB0aCA9IENWX0VMRU1fU0laRTEobV90eXBlKSo4OworLSAgICBpbnQgIHNyY19waXRjaCA9IChtX3dpZHRoKm1fYnBwKmJpdF9kZXB0aC84ICsgNykvODsKKysgICAgY29uc3QgaW50IGJpdF9kZXB0aCA9IENWX0VMRU1fU0laRTEobV90eXBlKSo4OworKyAgICBjb25zdCBpbnQgc3JjX3BpdGNoID0gZGl2VXAobV93aWR0aCptX2JwcCooYml0X2RlcHRoLzgpLCA4KTsKKyAgICAgaW50ICBuY2ggPSBDVl9NQVRfQ04obV90eXBlKTsKKyAgICAgaW50ICB3aWR0aDMgPSBtX3dpZHRoKm5jaDsKKy0gICAgaW50ICBpLCB4LCB5OworIAorICAgICBpZiggbV9vZmZzZXQgPCAwIHx8ICFtX3N0cm0uaXNPcGVuZWQoKSkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKy0gICAgQXV0b0J1ZmZlcjx1Y2hhcj4gX3NyYyhzcmNfcGl0Y2ggKyAzMik7CistICAgIHVjaGFyKiBzcmMgPSBfc3JjOworLSAgICBBdXRvQnVmZmVyPHVjaGFyPiBfZ3JheV9wYWxldHRlOworLSAgICB1Y2hhciogZ3JheV9wYWxldHRlID0gX2dyYXlfcGFsZXR0ZTsKKysgICAgdWNoYXIgZ3JheV9wYWxldHRlWzI1Nl0gPSB7MH07CisgCisgICAgIC8vIGNyZWF0ZSBMVVQgZm9yIGNvbnZlcnRpbmcgY29sb3JzCisgICAgIGlmKCBiaXRfZGVwdGggPT0gOCApCisgICAgIHsKKy0gICAgICAgIF9ncmF5X3BhbGV0dGUuYWxsb2NhdGUobV9tYXh2YWwgKyAxKTsKKy0gICAgICAgIGdyYXlfcGFsZXR0ZSA9IF9ncmF5X3BhbGV0dGU7CisrICAgICAgICBDVl9Bc3NlcnQobV9tYXh2YWwgPCAyNTYpOworIAorLSAgICAgICAgZm9yKCBpID0gMDsgaSA8PSBtX21heHZhbDsgaSsrICkKKysgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG1fbWF4dmFsOyBpKyspCisgICAgICAgICAgICAgZ3JheV9wYWxldHRlW2ldID0gKHVjaGFyKSgoaSoyNTUvbV9tYXh2YWwpXihtX2JwcCA9PSAxID8gMjU1IDogMCkpOworIAorICAgICAgICAgRmlsbEdyYXlQYWxldHRlKCBwYWxldHRlLCBtX2JwcD09MSA/IDEgOiA4ICwgbV9icHAgPT0gMSApOworQEAgLTIyOSwxMiArMjM4LDE2IEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgICAgICAgICB7CisgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAxIEJQUCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAgICBjYXNlIDE6CisrICAgICAgICAgICAgQ1ZfQXNzZXJ0KENWX01BVF9ERVBUSChtX3R5cGUpID09IENWXzhVKTsKKyAgICAgICAgICAgICBpZiggIW1fYmluYXJ5ICkKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGZvciggeSA9IDA7IHkgPCBtX2hlaWdodDsgeSsrLCBkYXRhICs9IGltZy5zdGVwICkKKysgICAgICAgICAgICAgICAgQXV0b0J1ZmZlcjx1Y2hhcj4gX3NyYyhtX3dpZHRoKTsKKysgICAgICAgICAgICAgICAgdWNoYXIqIHNyYyA9IF9zcmM7CisrCisrICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbV9oZWlnaHQ7IHkrKywgZGF0YSArPSBpbWcuc3RlcCkKKyAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgZm9yKCB4ID0gMDsgeCA8IG1fd2lkdGg7IHgrKyApCistICAgICAgICAgICAgICAgICAgICAgICAgc3JjW3hdID0gUmVhZE51bWJlciggbV9zdHJtLCAxICkgIT0gMDsKKysgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbV93aWR0aDsgeCsrKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHNyY1t4XSA9IFJlYWROdW1iZXIobV9zdHJtLCAxKSAhPSAwOworIAorICAgICAgICAgICAgICAgICAgICAgaWYoIGNvbG9yICkKKyAgICAgICAgICAgICAgICAgICAgICAgICBGaWxsQ29sb3JSb3c4KCBkYXRhLCBzcmMsIG1fd2lkdGgsIHBhbGV0dGUgKTsKK0BAIC0yNDQsNyArMjU3LDEwIEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGZvciggeSA9IDA7IHkgPCBtX2hlaWdodDsgeSsrLCBkYXRhICs9IGltZy5zdGVwICkKKysgICAgICAgICAgICAgICAgQXV0b0J1ZmZlcjx1Y2hhcj4gX3NyYyhzcmNfcGl0Y2gpOworKyAgICAgICAgICAgICAgICB1Y2hhciogc3JjID0gX3NyYzsKKysKKysgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtX2hlaWdodDsgeSsrLCBkYXRhICs9IGltZy5zdGVwKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBtX3N0cm0uZ2V0Qnl0ZXMoIHNyYywgc3JjX3BpdGNoICk7CisgCitAQCAtMjYwLDEzICsyNzYsMTcgQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIDggQlBQIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgICAgIGNhc2UgODoKKyAgICAgICAgIGNhc2UgMjQ6CistICAgICAgICAgICAgZm9yKCB5ID0gMDsgeSA8IG1faGVpZ2h0OyB5KyssIGRhdGEgKz0gaW1nLnN0ZXAgKQorKyAgICAgICAgeworKyAgICAgICAgICAgIEF1dG9CdWZmZXI8dWNoYXI+IF9zcmMoc3RkOjptYXg8c2l6ZV90Pih3aWR0aDMqMiwgc3JjX3BpdGNoKSk7CisrICAgICAgICAgICAgdWNoYXIqIHNyYyA9IF9zcmM7CisrCisrICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtX2hlaWdodDsgeSsrLCBkYXRhICs9IGltZy5zdGVwKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaWYoICFtX2JpbmFyeSApCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGZvciggeCA9IDA7IHggPCB3aWR0aDM7IHgrKyApCisrICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoMzsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2RlID0gUmVhZE51bWJlciggbV9zdHJtLCBJTlRfTUFYICk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvZGUgPSBSZWFkTnVtYmVyKG1fc3RybSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICh1bnNpZ25lZCljb2RlID4gKHVuc2lnbmVkKW1fbWF4dmFsICkgY29kZSA9IG1fbWF4dmFsOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBiaXRfZGVwdGggPT0gOCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1t4XSA9IGdyYXlfcGFsZXR0ZVtjb2RlXTsKK0BAIC0yNzksNyArMjk5LDcgQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgICAgICAgICAgICAgIG1fc3RybS5nZXRCeXRlcyggc3JjLCBzcmNfcGl0Y2ggKTsKKyAgICAgICAgICAgICAgICAgICAgIGlmKCBiaXRfZGVwdGggPT0gMTYgJiYgIWlzQmlnRW5kaWFuKCkgKQorICAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciggeCA9IDA7IHggPCB3aWR0aDM7IHgrKyApCisrICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDM7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjaGFyIHYgPSBzcmNbeCAqIDJdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNbeCAqIDJdID0gc3JjW3ggKiAyICsgMV07CitAQCAtMjkwLDcgKzMxMCw3IEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgCisgICAgICAgICAgICAgICAgIGlmKCBpbWcuZGVwdGgoKSA9PSBDVl84VSAmJiBiaXRfZGVwdGggPT0gMTYgKQorICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBmb3IoIHggPSAwOyB4IDwgd2lkdGgzOyB4KysgKQorKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDM7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdiA9ICgodXNob3J0ICopc3JjKVt4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBzcmNbeF0gPSAodWNoYXIpKHYgPj4gOCk7CitAQCAtMzMxLDEyICszNTEsMTkgQEAgYm9vbCAgUHhNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKyAgICAgICAgIGRlZmF1bHQ6CistICAgICAgICAgICAgYXNzZXJ0KDApOworKyAgICAgICAgICAgIENWX0Vycm9yTm9SZXR1cm4oRXJyb3I6OlN0c0Vycm9yLCAibV9icHAgaXMgbm90IHN1cHBvcnRlZCIpOworICAgICAgICAgfQorICAgICB9CistICAgIGNhdGNoKC4uLikKKysgICAgY2F0Y2ggKGNvbnN0IGN2OjpFeGNlcHRpb24mKQorKyAgICB7CisrICAgICAgICB0aHJvdzsKKysgICAgfQorKyAgICBjYXRjaCAoLi4uKQorICAgICB7CisrICAgICAgICBzdGQ6OmNlcnIgPDwgIlBYTTo6cmVhZERhdGEoKTogdW5rbm93biBleGNlcHRpb24iIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOworKyAgICAgICAgdGhyb3c7CisgICAgIH0KKyAKKyAgICAgcmV0dXJuIHJlc3VsdDsKK0BAIC00MTIsOCArNDM5LDkgQEAgYm9vbCAgUHhNRW5jb2Rlcjo6d3JpdGUoIGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBwYXJhbXMgKQorICAgICBjaGFyKiBidWZmZXIgPSBfYnVmZmVyOworIAorICAgICAvLyB3cml0ZSBoZWFkZXI7CistICAgIHNwcmludGYoIGJ1ZmZlciwgIlAlY1xuJWQgJWRcbiVkXG4iLAorKyAgICBzcHJpbnRmKCBidWZmZXIsICJQJWNcbiMgR2VuZXJhdGVkIGJ5IE9wZW5DViAlc1xuJWQgJWRcbiVkXG4iLAorICAgICAgICAgICAgICAnMicgKyAoY2hhbm5lbHMgPiAxID8gMSA6IDApICsgKGlzQmluYXJ5ID8gMyA6IDApLAorKyAgICAgICAgICAgICBDVl9WRVJTSU9OLAorICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCAoMSA8PCBkZXB0aCkgLSAxICk7CisgCisgICAgIHN0cm0ucHV0Qnl0ZXMoIGJ1ZmZlciwgKGludClzdHJsZW4oYnVmZmVyKSApOworZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9sb2Fkc2F2ZS5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvbG9hZHNhdmUuY3BwCitpbmRleCAzYjIzNjYyMTcuLjVlZTRjYTM1NCAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9sb2Fkc2F2ZS5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9sb2Fkc2F2ZS5jcHAKK0BAIC01NSw2ICs1NSwyNyBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlIENvZGVjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK25hbWVzcGFjZSBjdiB7CisrCisrLy8gVE9ETyBBZGQgcnVudGltZSBjb25maWd1cmF0aW9uCisrI2RlZmluZSBDVl9JT19NQVhfSU1BR0VfUEFSQU1TICg1MCkKKysjZGVmaW5lIENWX0lPX01BWF9JTUFHRV9XSURUSCAoMTw8MjApCisrI2RlZmluZSBDVl9JT19NQVhfSU1BR0VfSEVJR0hUICgxPDwyMCkKKysjZGVmaW5lIENWX0lPX01BWF9JTUFHRV9QSVhFTFMgKDE8PDMwKSAvLyAxIEdpZ2FwaXhlbAorKworK3N0YXRpYyBTaXplIHZhbGlkYXRlSW5wdXRJbWFnZVNpemUoY29uc3QgU2l6ZSYgc2l6ZSkKKyt7CisrICAgIENWX0Fzc2VydChzaXplLndpZHRoID4gMCk7CisrICAgIENWX0Fzc2VydChzaXplLndpZHRoIDw9IENWX0lPX01BWF9JTUFHRV9XSURUSCk7CisrICAgIENWX0Fzc2VydChzaXplLmhlaWdodCA+IDApOworKyAgICBDVl9Bc3NlcnQoc2l6ZS5oZWlnaHQgPD0gQ1ZfSU9fTUFYX0lNQUdFX0hFSUdIVCk7CisrICAgIHVpbnQ2NCBwaXhlbHMgPSAodWludDY0KXNpemUud2lkdGggKiAodWludDY0KXNpemUuaGVpZ2h0OworKyAgICBDVl9Bc3NlcnQocGl4ZWxzIDw9IENWX0lPX01BWF9JTUFHRV9QSVhFTFMpOworKyAgICByZXR1cm4gc2l6ZTsKKyt9CisrCisrCisgbmFtZXNwYWNlIHsKKyAKKyBjbGFzcyBCeXRlU3RyZWFtQnVmZmVyOiBwdWJsaWMgc3RkOjpzdHJlYW1idWYKK0BAIC05NCw5ICsxMTUsNiBAQCBwcm90ZWN0ZWQ6CisgCisgfQorIAorLW5hbWVzcGFjZSBjdgorLXsKKy0KKyAvKioKKyAgKiBAc3RydWN0IEltYWdlQ29kZWNJbml0aWFsaXplcgorICAqCitAQCAtNDA4LDE0ICs0MjYsMjYgQEAgaW1yZWFkXyggY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50IGZsYWdzLCBpbnQgaGRydHlwZSwgTWF0KiBtYXQ9MCApCisgICAgIC8vLyBzZXQgdGhlIGZpbGVuYW1lIGluIHRoZSBkcml2ZXIKKyAgICAgZGVjb2Rlci0+c2V0U291cmNlKCBmaWxlbmFtZSApOworIAorLSAgIC8vIHJlYWQgdGhlIGhlYWRlciB0byBtYWtlIHN1cmUgaXQgc3VjY2VlZHMKKy0gICBpZiggIWRlY29kZXItPnJlYWRIZWFkZXIoKSApCisrICAgIHRyeQorKyAgICB7CisrICAgICAgICAvLyByZWFkIHRoZSBoZWFkZXIgdG8gbWFrZSBzdXJlIGl0IHN1Y2NlZWRzCisrICAgICAgICBpZiggIWRlY29kZXItPnJlYWRIZWFkZXIoKSApCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgY2F0Y2ggKGNvbnN0IGN2OjpFeGNlcHRpb24mIGUpCisrICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1yZWFkXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgaGVhZGVyOiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOworICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbXJlYWRfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBoZWFkZXI6IHVua25vd24gZXhjZXB0aW9uIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisgCisgICAgIC8vIGVzdGFibGlzaGVkIHRoZSByZXF1aXJlZCBpbnB1dCBpbWFnZSBzaXplCistICAgIEN2U2l6ZSBzaXplOworLSAgICBzaXplLndpZHRoID0gZGVjb2Rlci0+d2lkdGgoKTsKKy0gICAgc2l6ZS5oZWlnaHQgPSBkZWNvZGVyLT5oZWlnaHQoKTsKKysgICAgU2l6ZSBzaXplID0gdmFsaWRhdGVJbnB1dEltYWdlU2l6ZShTaXplKGRlY29kZXItPndpZHRoKCksIGRlY29kZXItPmhlaWdodCgpKSk7CisgCisgICAgIC8vIGdyYWIgdGhlIGRlY29kZWQgdHlwZQorICAgICBpbnQgdHlwZSA9IGRlY29kZXItPnR5cGUoKTsKK0BAIC00NTEsNyArNDgxLDIxIEBAIGltcmVhZF8oIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludCBmbGFncywgaW50IGhkcnR5cGUsIE1hdCogbWF0PTAgKQorICAgICB9CisgCisgICAgIC8vIHJlYWQgdGhlIGltYWdlIGRhdGEKKy0gICAgaWYoICFkZWNvZGVyLT5yZWFkRGF0YSggKmRhdGEgKSkKKysgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisrICAgIHRyeQorKyAgICB7CisrICAgICAgICBpZiAoZGVjb2Rlci0+cmVhZERhdGEoKmRhdGEpKQorKyAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworKyAgICB9CisrICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJiBlKQorKyAgICB7CisrICAgICAgICBzdGQ6OmNlcnIgPDwgImltcmVhZF8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGRhdGE6ICIgPDwgZS53aGF0KCkgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgIH0KKysgICAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbXJlYWRfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBkYXRhOiB1bmtub3duIGV4Y2VwdGlvbiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgIH0KKysgICAgaWYgKCFzdWNjZXNzKQorICAgICB7CisgICAgICAgICBjdlJlbGVhc2VJbWFnZSggJmltYWdlICk7CisgICAgICAgICBjdlJlbGVhc2VNYXQoICZtYXRyaXggKTsKK0BAIC01MDQsOCArNTQ4LDIyIEBAIGltcmVhZG11bHRpXyhjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQgZmxhZ3MsIHN0ZDo6dmVjdG9yPE1hdD4mIG1hdHMpCisgICAgIGRlY29kZXItPnNldFNvdXJjZShmaWxlbmFtZSk7CisgCisgICAgIC8vIHJlYWQgdGhlIGhlYWRlciB0byBtYWtlIHN1cmUgaXQgc3VjY2VlZHMKKy0gICAgaWYgKCFkZWNvZGVyLT5yZWFkSGVhZGVyKCkpCisrICAgIHRyeQorKyAgICB7CisrICAgICAgICAvLyByZWFkIHRoZSBoZWFkZXIgdG8gbWFrZSBzdXJlIGl0IHN1Y2NlZWRzCisrICAgICAgICBpZiggIWRlY29kZXItPnJlYWRIZWFkZXIoKSApCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgY2F0Y2ggKGNvbnN0IGN2OjpFeGNlcHRpb24mIGUpCisrICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1yZWFkbXVsdGlfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBoZWFkZXI6ICIgPDwgZS53aGF0KCkgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisgICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBjYXRjaCAoLi4uKQorKyAgICB7CisrICAgICAgICBzdGQ6OmNlcnIgPDwgImltcmVhZG11bHRpXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgaGVhZGVyOiB1bmtub3duIGV4Y2VwdGlvbiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorIAorICAgICBmb3IgKDs7KQorICAgICB7CitAQCAtNTIzLDE3ICs1ODEsMzIgQEAgaW1yZWFkbXVsdGlfKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludCBmbGFncywgc3RkOjp2ZWN0b3I8TWF0PiYgbWF0cykKKyAgICAgICAgICAgICAgICAgdHlwZSA9IENWX01BS0VUWVBFKENWX01BVF9ERVBUSCh0eXBlKSwgMSk7CisgICAgICAgICB9CisgCisrICAgICAgICAvLyBlc3RhYmxpc2hlZCB0aGUgcmVxdWlyZWQgaW5wdXQgaW1hZ2Ugc2l6ZQorKyAgICAgICAgU2l6ZSBzaXplID0gdmFsaWRhdGVJbnB1dEltYWdlU2l6ZShTaXplKGRlY29kZXItPndpZHRoKCksIGRlY29kZXItPmhlaWdodCgpKSk7CisrCisgICAgICAgICAvLyByZWFkIHRoZSBpbWFnZSBkYXRhCistICAgICAgICBNYXQgbWF0KGRlY29kZXItPmhlaWdodCgpLCBkZWNvZGVyLT53aWR0aCgpLCB0eXBlKTsKKy0gICAgICAgIGlmICghZGVjb2Rlci0+cmVhZERhdGEobWF0KSkKKysgICAgICAgIE1hdCBtYXQoc2l6ZS5oZWlnaHQsIHNpemUud2lkdGgsIHR5cGUpOworKyAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisrICAgICAgICB0cnkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICAvLyBvcHRpb25hbGx5IHJvdGF0ZSB0aGUgZGF0YSBpZiBFWElGJyBvcmllbnRhdGlvbiBmbGFnIHNheXMgc28KKy0gICAgICAgICAgICBpZiggKGZsYWdzICYgSU1SRUFEX0lHTk9SRV9PUklFTlRBVElPTikgPT0gMCAmJiBmbGFncyAhPSBJTVJFQURfVU5DSEFOR0VEICkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIEFwcGx5RXhpZk9yaWVudGF0aW9uKGZpbGVuYW1lLCBtYXQpOworLSAgICAgICAgICAgIH0KKy0KKysgICAgICAgICAgICBpZiAoZGVjb2Rlci0+cmVhZERhdGEobWF0KSkKKysgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBjYXRjaCAoY29uc3QgY3Y6OkV4Y2VwdGlvbiYgZSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBzdGQ6OmNlcnIgPDwgImltcmVhZG11bHRpXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgZGF0YTogIiA8PCBlLndoYXQoKSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgICAgIH0KKysgICAgICAgIGNhdGNoICguLi4pCisrICAgICAgICB7CisrICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJpbXJlYWRtdWx0aV8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGRhdGE6IHVua25vd24gZXhjZXB0aW9uIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKysgICAgICAgIH0KKysgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIC8vIG9wdGlvbmFsbHkgcm90YXRlIHRoZSBkYXRhIGlmIEVYSUYnIG9yaWVudGF0aW9uIGZsYWcgc2F5cyBzbworKyAgICAgICAgaWYoIChmbGFncyAmIElNUkVBRF9JR05PUkVfT1JJRU5UQVRJT04pID09IDAgJiYgZmxhZ3MgIT0gSU1SRUFEX1VOQ0hBTkdFRCApCisrICAgICAgICB7CisrICAgICAgICAgICAgQXBwbHlFeGlmT3JpZW50YXRpb24oZmlsZW5hbWUsIG1hdCk7CisgICAgICAgICB9CisgCisgICAgICAgICBtYXRzLnB1c2hfYmFjayhtYXQpOworQEAgLTYxNiw2ICs2ODksNyBAQCBzdGF0aWMgYm9vbCBpbXdyaXRlXyggY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgTWF0JiBpbWFnZSwKKyAgICAgfQorIAorICAgICBlbmNvZGVyLT5zZXREZXN0aW5hdGlvbiggZmlsZW5hbWUgKTsKKysgICAgQ1ZfQXNzZXJ0KHBhcmFtcy5zaXplKCkgPD0gQ1ZfSU9fTUFYX0lNQUdFX1BBUkFNUyoyKTsKKyAgICAgYm9vbCBjb2RlID0gZW5jb2Rlci0+d3JpdGUoICpwaW1hZ2UsIHBhcmFtcyApOworIAorICAgICAvLyAgICBDVl9Bc3NlcnQoIGNvZGUgKTsKK0BAIC02NjMsMjIgKzczNywzNSBAQCBpbWRlY29kZV8oIGNvbnN0IE1hdCYgYnVmLCBpbnQgZmxhZ3MsIGludCBoZHJ0eXBlLCBNYXQqIG1hdD0wICkKKyAgICAgICAgIGRlY29kZXItPnNldFNvdXJjZShmaWxlbmFtZSk7CisgICAgIH0KKyAKKy0gICAgaWYoICFkZWNvZGVyLT5yZWFkSGVhZGVyKCkgKQorKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKysgICAgdHJ5CisrICAgIHsKKysgICAgICAgIGlmIChkZWNvZGVyLT5yZWFkSGVhZGVyKCkpCisrICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisrICAgIH0KKysgICAgY2F0Y2ggKGNvbnN0IGN2OjpFeGNlcHRpb24mIGUpCisrICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1kZWNvZGVfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBoZWFkZXI6ICIgPDwgZS53aGF0KCkgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgIH0KKysgICAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbWRlY29kZV8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGhlYWRlcjogdW5rbm93biBleGNlcHRpb24iIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOworKyAgICB9CisrICAgIGlmICghc3VjY2VzcykKKyAgICAgeworICAgICAgICAgZGVjb2Rlci5yZWxlYXNlKCk7CistICAgICAgICBpZiAoICFmaWxlbmFtZS5lbXB0eSgpICkKKysgICAgICAgIGlmICghZmlsZW5hbWUuZW1wdHkoKSkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZiAoIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSAhPSAwICkKKysgICAgICAgICAgICBpZiAoMCAhPSByZW1vdmUoZmlsZW5hbWUuY19zdHIoKSkpCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBDVl9FcnJvciggQ1ZfU3RzRXJyb3IsICJ1bmFibGUgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlIiApOworKyAgICAgICAgICAgICAgICBzdGQ6OmNlcnIgPDwgInVuYWJsZSB0byByZW1vdmUgdGVtcG9yYXJ5IGZpbGU6IiA8PCBmaWxlbmFtZSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorIAorLSAgICBDdlNpemUgc2l6ZTsKKy0gICAgc2l6ZS53aWR0aCA9IGRlY29kZXItPndpZHRoKCk7CistICAgIHNpemUuaGVpZ2h0ID0gZGVjb2Rlci0+aGVpZ2h0KCk7CisrICAgIC8vIGVzdGFibGlzaGVkIHRoZSByZXF1aXJlZCBpbnB1dCBpbWFnZSBzaXplCisrICAgIFNpemUgc2l6ZSA9IHZhbGlkYXRlSW5wdXRJbWFnZVNpemUoU2l6ZShkZWNvZGVyLT53aWR0aCgpLCBkZWNvZGVyLT5oZWlnaHQoKSkpOworIAorICAgICBpbnQgdHlwZSA9IGRlY29kZXItPnR5cGUoKTsKKyAgICAgaWYoIChmbGFncyAmIElNUkVBRF9MT0FEX0dEQUwpICE9IElNUkVBRF9MT0FEX0dEQUwgJiYgZmxhZ3MgIT0gSU1SRUFEX1VOQ0hBTkdFRCApCitAQCAtNzEyLDE3ICs3OTksMzAgQEAgaW1kZWNvZGVfKCBjb25zdCBNYXQmIGJ1ZiwgaW50IGZsYWdzLCBpbnQgaGRydHlwZSwgTWF0KiBtYXQ9MCApCisgICAgICAgICB0ZW1wID0gY3ZhcnJUb01hdChpbWFnZSk7CisgICAgIH0KKyAKKy0gICAgYm9vbCBjb2RlID0gZGVjb2Rlci0+cmVhZERhdGEoICpkYXRhICk7CisrICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKysgICAgdHJ5CisrICAgIHsKKysgICAgICAgIGlmIChkZWNvZGVyLT5yZWFkRGF0YSgqZGF0YSkpCisrICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisrICAgIH0KKysgICAgY2F0Y2ggKGNvbnN0IGN2OjpFeGNlcHRpb24mIGUpCisrICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1kZWNvZGVfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBkYXRhOiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOworKyAgICB9CisrICAgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1kZWNvZGVfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBkYXRhOiB1bmtub3duIGV4Y2VwdGlvbiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisrICAgIH0KKyAgICAgZGVjb2Rlci5yZWxlYXNlKCk7CistICAgIGlmICggIWZpbGVuYW1lLmVtcHR5KCkgKQorKyAgICBpZiAoIWZpbGVuYW1lLmVtcHR5KCkpCisgICAgIHsKKy0gICAgICAgIGlmICggcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpICE9IDAgKQorKyAgICAgICAgaWYgKDAgIT0gcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpKQorICAgICAgICAgeworLSAgICAgICAgICAgIENWX0Vycm9yKCBDVl9TdHNFcnJvciwgInVuYWJsZSB0byByZW1vdmUgdGVtcG9yYXJ5IGZpbGUiICk7CisrICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJ1bmFibGUgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlOiIgPDwgZmlsZW5hbWUgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgaWYoICFjb2RlICkKKysgICAgaWYgKCFzdWNjZXNzKQorICAgICB7CisgICAgICAgICBjdlJlbGVhc2VJbWFnZSggJmltYWdlICk7CisgICAgICAgICBjdlJlbGVhc2VNYXQoICZtYXRyaXggKTsKK0BAIC04NTksNyArOTU5LDcgQEAgY3ZTYXZlSW1hZ2UoIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb25zdCBDdkFyciogYXJyLCBjb25zdCBpbnQqIF9wYXJhbXMgKQorICAgICBpZiggX3BhcmFtcyApCisgICAgIHsKKyAgICAgICAgIGZvciggOyBfcGFyYW1zW2ldID4gMDsgaSArPSAyICkKKy0gICAgICAgICAgICA7CisrICAgICAgICAgICAgQ1ZfQXNzZXJ0KGkgPCBDVl9JT19NQVhfSU1BR0VfUEFSQU1TKjIpOyAvLyBMaW1pdCBudW1iZXIgb2YgcGFyYW1zIGZvciBzZWN1cml0eSByZWFzb25zCisgICAgIH0KKyAgICAgcmV0dXJuIGN2OjppbXdyaXRlXyhmaWxlbmFtZSwgY3Y6OmN2YXJyVG9NYXQoYXJyKSwKKyAgICAgICAgIGkgPiAwID8gc3RkOjp2ZWN0b3I8aW50PihfcGFyYW1zLCBfcGFyYW1zK2kpIDogc3RkOjp2ZWN0b3I8aW50PigpLAorQEAgLTg5MCw3ICs5OTAsNyBAQCBjdkVuY29kZUltYWdlKCBjb25zdCBjaGFyKiBleHQsIGNvbnN0IEN2QXJyKiBhcnIsIGNvbnN0IGludCogX3BhcmFtcyApCisgICAgIGlmKCBfcGFyYW1zICkKKyAgICAgeworICAgICAgICAgZm9yKCA7IF9wYXJhbXNbaV0gPiAwOyBpICs9IDIgKQorLSAgICAgICAgICAgIDsKKysgICAgICAgICAgICBDVl9Bc3NlcnQoaSA8IENWX0lPX01BWF9JTUFHRV9QQVJBTVMqMik7IC8vIExpbWl0IG51bWJlciBvZiBwYXJhbXMgZm9yIHNlY3VyaXR5IHJlYXNvbnMKKyAgICAgfQorICAgICBjdjo6TWF0IGltZyA9IGN2OjpjdmFyclRvTWF0KGFycik7CisgICAgIGlmKCBDVl9JU19JTUFHRShhcnIpICYmICgoY29uc3QgSXBsSW1hZ2UqKWFyciktPm9yaWdpbiA9PSBJUExfT1JJR0lOX0JMICkKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAzLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDMtVG8tZml4LWVycm9ycy1hcy1mb2xsb3dpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyYjA0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAzLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoCkBAIC0wLDAgKzEsODAgQEAKK0Zyb20gYWNlNDhhNjI4ZGNhMzRkNzQyNjE1NTk4YWZlZWY0MmVkMzIzYTAyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEh1YW5nIFFpeXUgPGh1YW5ncXkuZm5zdEBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IEZyaSwgMTkgTWF5IDIwMTcgMDQ6Mjc6NTAgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIFRvIGZpeCBlcnJvcnMgYXMgZm9sbG93aW5nOgorCisidGVzdF9tYWluLmNwcDo0NTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcGFyc2VDdXN0b21PcHRpb25zKGludCwgY2hhcioqKSciCisicGVyZl9hYnMuY3BwOjEzOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjdnRlc3Q6OnBhcmFtX3NlZWQnIgorInRlc3Rfc3VwZXJyZXMuY3BwOjI3MDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY2hlY2tJcHBTdGF0dXMoKSciCisKK1NpZ25lZC1vZmYtYnk6IEh1YW5nIFFpeXUgPGh1YW5ncXkuZm5zdEBjbi5mdWppdHN1LmNvbT4KKworQWxzbyBhZGQgdGhlIHZpc2liaWxpdHkgY2hhbmdlcyBmb3IgY2VydGFpbiBPcGVuQ0wtcmVsYXRlZCBmdW5jdGlvbnMgaW4KK3RzIG1vZHVsZS4KKworU2lnbmVkLW9mZi1ieTogSXNtbyBQdXVzdGluZW4gPGlzbW8ucHV1c3RpbmVuQGludGVsLmNvbT4KKy0tLQorIG1vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcCAgICAgICAgICB8IDYgKysrLS0tCisgbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvb2NsX3Rlc3QuaHBwIHwgMiArLQorIG1vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcCBiL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcAoraW5kZXggNDFhNzZiMTNlLi4yMDU2NDYxNDAgMTAwNjQ0CistLS0gYS9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy5ocHAKKysrKyBiL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcAorQEAgLTU1NSw3ICs1NTUsNyBAQCBwcm90ZWN0ZWQ6CisgICAgIH0KKyB9OworIAorLWV4dGVybiB1aW50NjQgcGFyYW1fc2VlZDsKKytDVl9FWFBPUlRTIGV4dGVybiB1aW50NjQgcGFyYW1fc2VlZDsKKyAKKyBzdHJ1Y3QgQ1ZfRVhQT1JUUyBEZWZhdWx0Um5nQXV0bworIHsKK0BAIC02MTEsMTQgKzYxMSwxNCBAQCBDVl9FWFBPUlRTIHN0ZDo6c3RyaW5nIGZpbmREYXRhRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgcmVsYXRpdmVfcGF0aCwgYm9vbCByZXF1aQorIAorICNpZmRlZiBIQVZFX09QRU5DTAorIG5hbWVzcGFjZSBvY2wgeworLXZvaWQgZHVtcE9wZW5DTERldmljZSgpOworK0NWX0VYUE9SVFMgdm9pZCBkdW1wT3BlbkNMRGV2aWNlKCk7CisgfQorICNkZWZpbmUgVEVTVF9EVU1QX09DTF9JTkZPIGN2dGVzdDo6b2NsOjpkdW1wT3BlbkNMRGV2aWNlKCk7CisgI2Vsc2UKKyAjZGVmaW5lIFRFU1RfRFVNUF9PQ0xfSU5GTworICNlbmRpZgorIAorLXZvaWQgcGFyc2VDdXN0b21PcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndik7CisrQ1ZfRVhQT1JUUyB2b2lkIHBhcnNlQ3VzdG9tT3B0aW9ucyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworIAorICNkZWZpbmUgQ1ZfVEVTVF9JTklUMF9OT09QICh2b2lkKTAKKyAKK2RpZmYgLS1naXQgYS9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy9vY2xfdGVzdC5ocHAgYi9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy9vY2xfdGVzdC5ocHAKK2luZGV4IDU0YjMzZWNlOC4uZWY1NmJmOWVmIDEwMDY0NAorLS0tIGEvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvb2NsX3Rlc3QuaHBwCisrKysgYi9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy9vY2xfdGVzdC5ocHAKK0BAIC04Miw3ICs4Miw3IEBAIGlubGluZSBVTWF0IFRvVU1hdChJbnB1dEFycmF5IHNyYykKKyAgICAgcmV0dXJuIGRzdDsKKyB9CisgCistZXh0ZXJuIGludCB0ZXN0X2xvb3BfdGltZXM7CisrQ1ZfRVhQT1JUUyBleHRlcm4gaW50IHRlc3RfbG9vcF90aW1lczsKKyAKKyAjZGVmaW5lIE1BWF9WQUxVRSAzNTcKKyAKK2RpZmYgLS1naXQgYS9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvdHNfZXh0LmhwcAoraW5kZXggMGJkZDM0NmRkLi4yY2QzNGRmY2UgMTAwNjQ0CistLS0gYS9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwCisrKysgYi9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwCitAQCAtOSw3ICs5LDcgQEAKKyAjZGVmaW5lIE9QRU5DVl9UU19FWFRfSFBQCisgCisgbmFtZXNwYWNlIGN2dGVzdCB7Cistdm9pZCBjaGVja0lwcFN0YXR1cygpOworK0NWX0VYUE9SVFMgdm9pZCBjaGVja0lwcFN0YXR1cygpOworIH0KKyAKKyAjZGVmaW5lIENWX1RFU1RfSU5JVCBcCistLSAKKzIuMTMuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMy1pbWdwcm9jLXRlc3QtYWRkLWNoZWNrcy1mb3ItcmVtb3ZlLWNhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMy1pbWdwcm9jLXRlc3QtYWRkLWNoZWNrcy1mb3ItcmVtb3ZlLWNhbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0YTYwYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAzLWltZ3Byb2MtdGVzdC1hZGQtY2hlY2tzLWZvci1yZW1vdmUtY2FsbC5wYXRjaApAQCAtMCwwICsxLDE4NiBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvcHVsbC85Mzc2L2NvbW1pdHMvNzhhMzEwNjMwZmIwYTFmNmQwODk1NzYyMDIzNDNlNjcyZjI3NjA5ZF0KKworRml4IENWRXMgZm9yIG9wZW5jdiAzLjMuCisKKyogQ1ZFLTIwMTctMTI1OTcKKyogQ1ZFLTIwMTctMTI1OTgKKyogQ1ZFLTIwMTctMTI1OTkKKyogQ1ZFLTIwMTctMTI2MDAKKyogQ1ZFLTIwMTctMTI2MDEKKyogQ1ZFLTIwMTctMTI2MDIKKyogQ1ZFLTIwMTctMTI2MDMKKyogQ1ZFLTIwMTctMTI2MDQKKyogQ1ZFLTIwMTctMTI2MDUKKyogQ1ZFLTIwMTctMTI2MDYKKyogQ1ZFLTIwMTctMTI4NjIKKyogQ1ZFLTIwMTctMTI4NjMKKyogQ1ZFLTIwMTctMTI4NjQKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK0Zyb20gNzhhMzEwNjMwZmIwYTFmNmQwODk1NzYyMDIzNDNlNjcyZjI3NjA5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBBbGVraGluIDxhbGV4YW5kZXIuYWxla2hpbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDEzOjUzOjEyICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBpbWdwcm9jKHRlc3QpOiBhZGQgY2hlY2tzIGZvciByZW1vdmUoKSBjYWxsCisKKy0tLQorIG1vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9ncmZtdC5jcHAgICAgICB8ICAyICstCisgbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2pwZWcuY3BwICAgICAgIHwgMTIgKysrKysrLS0tLS0tCisgbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3BuZy5jcHAgICAgICAgIHwgIDIgKy0KKyBtb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcmVhZF93cml0ZS5jcHAgfCAgNCArKy0tCisgbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3RpZmYuY3BwICAgICAgIHwgIDggKysrKy0tLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAgICAgICAgfCAgNiArKystLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2dyZm10LmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9ncmZtdC5jcHAKK2luZGV4IDY0YTBjMWUzYS4uNzRiNzJjM2IzIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2dyZm10LmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2dyZm10LmNwcAorQEAgLTE3NSw3ICsxNzUsNyBAQCBURVNUX1AoSW1nY29kZWNzX0V4dFNpemUsIHdyaXRlX2ltYWdlc2VxKQorICAgICAgICAgICAgIEVYUEVDVF9MVChuLCAxLik7CisgICAgICAgICAgICAgRVhQRUNUX1BSRURfRk9STUFUMihjdnRlc3Q6Ok1hdENvbXBhcmF0b3IoMCwgMCksIGltZywgaW1nX2d0KTsKKyAgICAgICAgIH0KKy0gICAgICAgIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKTsKKysgICAgICAgIEVYUEVDVF9FUSgwLCByZW1vdmUoZmlsZW5hbWUuY19zdHIoKSkpOworICAgICB9CisgfQorIAorZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9qcGVnLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9qcGVnLmNwcAoraW5kZXggNTU0NmYyZDkxLi42ZGRiMDI4NDAgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfanBlZy5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9qcGVnLmNwcAorQEAgLTEyMyw4ICsxMjMsOCBAQCBURVNUKEltZ2NvZGVjc19KcGVnLCBlbmNvZGVfZGVjb2RlX3Byb2dyZXNzaXZlX2pwZWcpCisgCisgICAgIEVYUEVDVF9FUSgwLCBjdnRlc3Q6Om5vcm0oaW1nX2pwZ19wcm9ncmVzc2l2ZSwgaW1nX2pwZ19ub3JtYWwsIE5PUk1fSU5GKSk7CisgCistICAgIHJlbW92ZShvdXRwdXRfcHJvZ3Jlc3NpdmUuY19zdHIoKSk7CistICAgIHJlbW92ZShvdXRwdXRfbm9ybWFsLmNfc3RyKCkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9wcm9ncmVzc2l2ZS5jX3N0cigpKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0X25vcm1hbC5jX3N0cigpKSk7CisgfQorIAorIFRFU1QoSW1nY29kZWNzX0pwZWcsIGVuY29kZV9kZWNvZGVfb3B0aW1pemVfanBlZykKK0BAIC0xNDgsOCArMTQ4LDggQEAgVEVTVChJbWdjb2RlY3NfSnBlZywgZW5jb2RlX2RlY29kZV9vcHRpbWl6ZV9qcGVnKQorIAorICAgICBFWFBFQ1RfRVEoMCwgY3Z0ZXN0Ojpub3JtKGltZ19qcGdfb3B0aW1pemVkLCBpbWdfanBnX25vcm1hbCwgTk9STV9JTkYpKTsKKyAKKy0gICAgcmVtb3ZlKG91dHB1dF9vcHRpbWl6ZWQuY19zdHIoKSk7CistICAgIHJlbW92ZShvdXRwdXRfbm9ybWFsLmNfc3RyKCkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9vcHRpbWl6ZWQuY19zdHIoKSkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9ub3JtYWwuY19zdHIoKSkpOworIH0KKyAKKyBURVNUKEltZ2NvZGVjc19KcGVnLCBlbmNvZGVfZGVjb2RlX3JzdF9qcGVnKQorQEAgLTE3Myw4ICsxNzMsOCBAQCBURVNUKEltZ2NvZGVjc19KcGVnLCBlbmNvZGVfZGVjb2RlX3JzdF9qcGVnKQorIAorICAgICBFWFBFQ1RfRVEoMCwgY3Z0ZXN0Ojpub3JtKGltZ19qcGdfcnN0LCBpbWdfanBnX25vcm1hbCwgTk9STV9JTkYpKTsKKyAKKy0gICAgcmVtb3ZlKG91dHB1dF9yc3QuY19zdHIoKSk7CistICAgIHJlbW92ZShvdXRwdXRfbm9ybWFsLmNfc3RyKCkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9yc3QuY19zdHIoKSkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9ub3JtYWwuY19zdHIoKSkpOworIH0KKyAKKyAjZW5kaWYgLy8gSEFWRV9KUEVHCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3BuZy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcG5nLmNwcAoraW5kZXggYzQ2ZjkwMTE5Li40ZTk3MDQzZTEgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcG5nLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3BuZy5jcHAKK0BAIC0xNyw3ICsxNyw3IEBAIFRFU1QoSW1nY29kZWNzX1BuZywgd3JpdGVfYmlnKQorICAgICBFWFBFQ1RfRVEoMTMwNDMsIGltZy5jb2xzKTsKKyAgICAgRVhQRUNUX0VRKDEzOTE3LCBpbWcucm93cyk7CisgICAgIEFTU0VSVF9OT19USFJPVyhpbXdyaXRlKGRzdF9maWxlLCBpbWcpKTsKKy0gICAgcmVtb3ZlKGRzdF9maWxlLmNfc3RyKCkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKGRzdF9maWxlLmNfc3RyKCkpKTsKKyB9CisgCisgVEVTVChJbWdjb2RlY3NfUG5nLCBlbmNvZGUpCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3JlYWRfd3JpdGUuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3JlYWRfd3JpdGUuY3BwCitpbmRleCAzOGYxMDIyNWYuLjUxMTk4MTNiZiAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9yZWFkX3dyaXRlLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3JlYWRfd3JpdGUuY3BwCitAQCAtNTAsNyArNTAsNyBAQCBURVNUKEltZ2NvZGVjc19JbWFnZSwgcmVhZF93cml0ZV9ibXApCisgICAgICAgICBwc25yID0gY3Z0ZXN0OjpQU05SKGJ1Zl9sb2FkZWQsIGltYWdlKTsKKyAgICAgICAgIEVYUEVDVF9HVChwc25yLCB0aHJlc0RiZWxsKTsKKyAKKy0gICAgICAgIHJlbW92ZShkc3RfbmFtZS5jX3N0cigpKTsKKysgICAgICAgIEVYUEVDVF9FUSgwLCByZW1vdmUoZHN0X25hbWUuY19zdHIoKSkpOworICAgICB9CisgfQorIAorQEAgLTk1LDcgKzk1LDcgQEAgVEVTVF9QKEltZ2NvZGVjc19JbWFnZSwgcmVhZF93cml0ZSkKKyAgICAgcHNuciA9IGN2dGVzdDo6UFNOUihidWZfbG9hZGVkLCBpbWFnZSk7CisgICAgIEVYUEVDVF9HVChwc25yLCB0aHJlc0RiZWxsKTsKKyAKKy0gICAgcmVtb3ZlKGZ1bGxfbmFtZS5jX3N0cigpKTsKKysgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShmdWxsX25hbWUuY19zdHIoKSkpOworIH0KKyAKKyBjb25zdCBzdHJpbmcgZXh0c1tdID0geworZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF90aWZmLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF90aWZmLmNwcAoraW5kZXggMDI2NGRhNGNkLi42ZWYwYzE3NDggMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfdGlmZi5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF90aWZmLmNwcAorQEAgLTQxLDggKzQxLDggQEAgVEVTVChJbWdjb2RlY3NfVGlmZiwgZGVjb2RlX3RpbGUxNjM4NHgxNjM4NCkKKyAgICAgICAgIC8vIG5vdCBlbm91Z2ggbWVtb3J5CisgICAgIH0KKyAKKy0gICAgcmVtb3ZlKGZpbGUzLmNfc3RyKCkpOworLSAgICByZW1vdmUoZmlsZTQuY19zdHIoKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUoZmlsZTMuY19zdHIoKSkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKGZpbGU0LmNfc3RyKCkpKTsKKyB9CisgCisgVEVTVChJbWdjb2RlY3NfVGlmZiwgd3JpdGVfcmVhZF8xNmJpdF9iaWdfbGl0dGxlX2VuZGlhbikKK0BAIC04OCw3ICs4OCw3IEBAIFRFU1QoSW1nY29kZWNzX1RpZmYsIHdyaXRlX3JlYWRfMTZiaXRfYmlnX2xpdHRsZV9lbmRpYW4pCisgICAgICAgICBFWFBFQ1RfRVEoMHhERUFELCBpbWcuYXQ8dXNob3J0PigwLDApKTsKKyAgICAgICAgIEVYUEVDVF9FUSgweEJFRUYsIGltZy5hdDx1c2hvcnQ+KDAsMSkpOworIAorLSAgICAgICAgcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpOworKyAgICAgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSk7CisgICAgIH0KKyB9CisgCitAQCAtMTQzLDcgKzE0Myw3IEBAIFRFU1QoSW1nY29kZWNzX1RpZmYsIGRlY29kZV9pbmZpbml0ZV9yb3dzcGVyc3RyaXApCisgCisgICAgIEVYUEVDVF9OT19USFJPVyhjdjo6aW1yZWFkKGZpbGVuYW1lLCBJTVJFQURfVU5DSEFOR0VEKSk7CisgCistICAgIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKTsKKysgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSk7CisgfQorIAorIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAKK2luZGV4IDZkNDBjZTIxZS4uZDgyZmRkMjg5IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3dlYnAuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAKK0BAIC00NCw3ICs0NCw3IEBAIFRFU1QoSW1nY29kZWNzX1dlYlAsIGVuY29kZV9kZWNvZGVfbG9zc2xlc3Nfd2VicCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICByZW1vdmUob3V0cHV0LmNfc3RyKCkpOworKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dC5jX3N0cigpKSk7CisgCisgICAgIGN2OjpNYXQgZGVjb2RlID0gY3Y6OmltZGVjb2RlKGJ1ZiwgSU1SRUFEX0NPTE9SKTsKKyAgICAgQVNTRVJUX0ZBTFNFKGRlY29kZS5lbXB0eSgpKTsKK0BAIC03MSw3ICs3MSw3IEBAIFRFU1QoSW1nY29kZWNzX1dlYlAsIGVuY29kZV9kZWNvZGVfbG9zc3lfd2VicCkKKyAKKyAgICAgICAgIEVYUEVDVF9OT19USFJPVyhjdjo6aW13cml0ZShvdXRwdXQsIGltZywgcGFyYW1zKSk7CisgICAgICAgICBjdjo6TWF0IGltZ193ZWJwID0gY3Y6OmltcmVhZChvdXRwdXQpOworLSAgICAgICAgcmVtb3ZlKG91dHB1dC5jX3N0cigpKTsKKysgICAgICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0LmNfc3RyKCkpKTsKKyAgICAgICAgIEVYUEVDVF9GQUxTRShpbWdfd2VicC5lbXB0eSgpKTsKKyAgICAgICAgIEVYUEVDVF9FUSgzLCAgIGltZ193ZWJwLmNoYW5uZWxzKCkpOworICAgICAgICAgRVhQRUNUX0VRKDUxMiwgaW1nX3dlYnAuY29scyk7CitAQCAtOTYsNyArOTYsNyBAQCBURVNUKEltZ2NvZGVjc19XZWJQLCBlbmNvZGVfZGVjb2RlX3dpdGhfYWxwaGFfd2VicCkKKyAKKyAgICAgRVhQRUNUX05PX1RIUk9XKGN2OjppbXdyaXRlKG91dHB1dCwgaW1nKSk7CisgICAgIGN2OjpNYXQgaW1nX3dlYnAgPSBjdjo6aW1yZWFkKG91dHB1dCk7CistICAgIHJlbW92ZShvdXRwdXQuY19zdHIoKSk7CisrICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0LmNfc3RyKCkpKTsKKyAgICAgRVhQRUNUX0ZBTFNFKGltZ193ZWJwLmVtcHR5KCkpOworICAgICBFWFBFQ1RfRVEoNCwgICBpbWdfd2VicC5jaGFubmVscygpKTsKKyAgICAgRVhQRUNUX0VRKDUxMiwgaW1nX3dlYnAuY29scyk7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvQ1ZFLTIwMTctMTQxMzYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvQ1ZFLTIwMTctMTQxMzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FkNTBhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9DVkUtMjAxNy0xNDEzNi5wYXRjaApAQCAtMCwwICsxLDI4OCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvcHVsbC85NDQ4L2NvbW1pdHMvYWFjYWUyMF0KKworQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE3LTE0MTM2LgorCitSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L2lzc3Vlcy85NDQzCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitGcm9tIGFhY2FlMjA2NTc0NGFkYjA1ZTg1OGQzMjcxOThjN2JiZTdmNDUyYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgQWxla2hpbiA8YWxleGFuZGVyLmFsZWtoaW5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxNToxNToyNyArMDMwMAorU3ViamVjdDogW1BBVENIXSBpbWdjb2Rlc2M6IGZpeCBjb2RlIHByb2JsZW1zIHdpdGggaW50ZWdlciBvdmVyZmxvdyAvIGFkZHJlc3MKKyBhcml0aG1ldGljIC8gVUIKKworLS0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAgICAgICB8ICA4ICsrLS0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2V4ci5jcHAgICAgICB8IDEwICsrKy0tLS0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZy5jcHAgICAgIHwgIDIgKy0KKyBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZzIwMDAuY3BwIHwgIDYgKystLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wYW0uY3BwICAgICAgfCAgMiArLQorIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9zdW5yYXMuY3BwICAgfCAgNiArKy0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmNwcCAgICAgICAgICB8IDUxICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmhwcCAgICAgICAgICB8ICAyICsrCisgOCBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAKK2luZGV4IDI1N2Y5N2MyZDhiLi42OTc2OGUyNzZhMyAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcAorQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sICBCbXBEZWNvZGVyOjpyZWFkSGVhZGVyKCkKKyBib29sICBCbXBEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorIHsKKyAgICAgdWNoYXIqIGRhdGEgPSBpbWcucHRyKCk7CistICAgIGludCBzdGVwID0gKGludClpbWcuc3RlcDsKKysgICAgaW50IHN0ZXAgPSB2YWxpZGF0ZVRvSW50KGltZy5zdGVwKTsKKyAgICAgYm9vbCBjb2xvciA9IGltZy5jaGFubmVscygpID4gMTsKKyAgICAgdWNoYXIgIGdyYXlfcGFsZXR0ZVsyNTZdID0gezB9OworICAgICBib29sICAgcmVzdWx0ID0gZmFsc2U7CitAQCAtMjA2LDcgKzIwNiw3IEBAIGJvb2wgIEJtcERlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgCisgICAgIGlmKCBtX29yaWdpbiA9PSBJUExfT1JJR0lOX0JMICkKKyAgICAgeworLSAgICAgICAgZGF0YSArPSAobV9oZWlnaHQgLSAxKSpzdGVwOworKyAgICAgICAgZGF0YSArPSAobV9oZWlnaHQgLSAxKSooc2l6ZV90KXN0ZXA7CisgICAgICAgICBzdGVwID0gLXN0ZXA7CisgICAgIH0KKyAKK0BAIC01MzAsNyArNTMwLDcgQEAgYm9vbCAgQm1wRW5jb2Rlcjo6d3JpdGUoIGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiApCisgICAgIGludCAgYml0bWFwSGVhZGVyU2l6ZSA9IDQwOworICAgICBpbnQgIHBhbGV0dGVTaXplID0gY2hhbm5lbHMgPiAxID8gMCA6IDEwMjQ7CisgICAgIGludCAgaGVhZGVyU2l6ZSA9IDE0IC8qIGZpbGVoZWFkZXIgKi8gKyBiaXRtYXBIZWFkZXJTaXplICsgcGFsZXR0ZVNpemU7CistICAgIGludCAgZmlsZVNpemUgPSBmaWxlU3RlcCpoZWlnaHQgKyBoZWFkZXJTaXplOworKyAgICBzaXplX3QgZmlsZVNpemUgPSAoc2l6ZV90KWZpbGVTdGVwKmhlaWdodCArIGhlYWRlclNpemU7CisgICAgIFBhbGV0dGVFbnRyeSBwYWxldHRlWzI1Nl07CisgCisgICAgIGlmKCBtX2J1ZiApCitAQCAtNTQwLDcgKzU0MCw3IEBAIGJvb2wgIEJtcEVuY29kZXI6OndyaXRlKCBjb25zdCBNYXQmIGltZywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgKQorICAgICBzdHJtLnB1dEJ5dGVzKCBmbXRTaWduQm1wLCAoaW50KXN0cmxlbihmbXRTaWduQm1wKSApOworIAorICAgICAvLyB3cml0ZSBmaWxlIGhlYWRlcgorLSAgICBzdHJtLnB1dERXb3JkKCBmaWxlU2l6ZSApOyAvLyBmaWxlIHNpemUKKysgICAgc3RybS5wdXREV29yZCggdmFsaWRhdGVUb0ludChmaWxlU2l6ZSkgKTsgLy8gZmlsZSBzaXplCisgICAgIHN0cm0ucHV0RFdvcmQoIDAgKTsKKyAgICAgc3RybS5wdXREV29yZCggaGVhZGVyU2l6ZSApOworIAorZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9leHIuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2V4ci5jcHAKK2luZGV4IDBkMmFlOWZhN2QyLi43OGZmZTZjNzY2OCAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9leHIuY3BwCisrKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZXhyLmNwcAorQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sICBFeHJEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQorICAgICBib29sIGNvbG9yID0gaW1nLmNoYW5uZWxzKCkgPiAxOworIAorICAgICB1Y2hhciogZGF0YSA9IGltZy5wdHIoKTsKKy0gICAgaW50IHN0ZXAgPSBpbWcuc3RlcDsKKysgICAgc2l6ZV90IHN0ZXAgPSBpbWcuc3RlcDsKKyAgICAgYm9vbCBqdXN0Y29weSA9IG1fbmF0aXZlX2RlcHRoOworICAgICBib29sIGNocm9tYXRvcmdiID0gZmFsc2U7CisgICAgIGJvb2wgcmdidG9ncmF5ID0gZmFsc2U7CitAQCAtMjAzLDggKzIwMyw4IEBAIGJvb2wgIEV4ckRlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgICAgIEZyYW1lQnVmZmVyIGZyYW1lOworICAgICBpbnQgeHNhbXBsZVszXSA9IHsxLCAxLCAxfTsKKyAgICAgY2hhciAqYnVmZmVyOworLSAgICBpbnQgeHN0ZXA7CistICAgIGludCB5c3RlcDsKKysgICAgc2l6ZV90IHhzdGVwID0gMDsKKysgICAgc2l6ZV90IHlzdGVwID0gMDsKKyAKKyAgICAgeHN0ZXAgPSBtX25hdGl2ZV9kZXB0aCA/IDQgOiAxOworIAorQEAgLTU5Myw3ICs1OTMsNyBAQCBib29sICBFeHJFbmNvZGVyOjp3cml0ZSggY29uc3QgTWF0JiBpbWcsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mICkKKyAgICAgYm9vbCBpc3NpZ25lZCA9IGRlcHRoID09IENWXzhTIHx8IGRlcHRoID09IENWXzE2UyB8fCBkZXB0aCA9PSBDVl8zMlM7CisgICAgIGJvb2wgaXNmbG9hdCA9IGRlcHRoID09IENWXzMyRiB8fCBkZXB0aCA9PSBDVl82NEY7CisgICAgIGRlcHRoID0gQ1ZfRUxFTV9TSVpFMShkZXB0aCkqODsKKy0gICAgY29uc3QgaW50IHN0ZXAgPSBpbWcuc3RlcDsKKysgICAgY29uc3Qgc2l6ZV90IHN0ZXAgPSBpbWcuc3RlcDsKKyAKKyAgICAgSGVhZGVyIGhlYWRlciggd2lkdGgsIGhlaWdodCApOworICAgICBJbWY6OlBpeGVsVHlwZSB0eXBlOworQEAgLTYyMyw3ICs2MjMsNyBAQCBib29sICBFeHJFbmNvZGVyOjp3cml0ZSggY29uc3QgTWF0JiBpbWcsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mICkKKyAgICAgRnJhbWVCdWZmZXIgZnJhbWU7CisgCisgICAgIGNoYXIgKmJ1ZmZlcjsKKy0gICAgaW50IGJ1ZmZlcnN0ZXA7CisrICAgIHNpemVfdCBidWZmZXJzdGVwOworICAgICBpbnQgc2l6ZTsKKyAgICAgaWYoIHR5cGUgPT0gRkxPQVQgJiYgZGVwdGggPT0gMzIgKQorICAgICB7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcuY3BwCitpbmRleCBjZTk0MmNhMTk5NS4uY2FmNzY4ZDI1NjkgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZy5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnLmNwcAorQEAgLTM5Niw3ICszOTYsNyBAQCBpbnQgbXlfanBlZ19sb2FkX2RodCAoc3RydWN0IGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QgKmluZm8sIHVuc2lnbmVkIGNoYXIgKmRodCwKKyBib29sICBKcGVnRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyB7CisgICAgIHZvbGF0aWxlIGJvb2wgcmVzdWx0ID0gZmFsc2U7CistICAgIGludCBzdGVwID0gKGludClpbWcuc3RlcDsKKysgICAgc2l6ZV90IHN0ZXAgPSBpbWcuc3RlcDsKKyAgICAgYm9vbCBjb2xvciA9IGltZy5jaGFubmVscygpID4gMTsKKyAKKyAgICAgaWYoIG1fc3RhdGUgJiYgbV93aWR0aCAmJiBtX2hlaWdodCApCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcyMDAwLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnMjAwMC5jcHAKK2luZGV4IDk1MGVjMjEzNzVmLi4yNGRmYjM4YmI5ZCAxMDA2NDQKKy0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnMjAwMC5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnMjAwMC5jcHAKK0BAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCAgSnBlZzJLRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKKyAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICAgaW50IGNvbG9yID0gaW1nLmNoYW5uZWxzKCkgPiAxOworICAgICB1Y2hhciogZGF0YSA9IGltZy5wdHIoKTsKKy0gICAgaW50IHN0ZXAgPSAoaW50KWltZy5zdGVwOworKyAgICBzaXplX3Qgc3RlcCA9IGltZy5zdGVwOworICAgICBqYXNfc3RyZWFtX3QqIHN0cmVhbSA9IChqYXNfc3RyZWFtX3QqKW1fc3RyZWFtOworICAgICBqYXNfaW1hZ2VfdCogaW1hZ2UgPSAoamFzX2ltYWdlX3QqKW1faW1hZ2U7CisgCitAQCAtMjUyLDkgKzI1Miw5IEBAIGJvb2wgIEpwZWcyS0RlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICFqYXNfaW1hZ2VfcmVhZGNtcHQoIGltYWdlLCBjbXB0bHV0W2ldLCAwLCAwLCB4ZW5kIC8geHN0ZXAsIHllbmQgLyB5c3RlcCwgYnVmZmVyICkpCisgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggaW1nLmRlcHRoKCkgPT0gQ1ZfOFUgKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVhZENvbXBvbmVudDh1KCBkYXRhICsgaSwgYnVmZmVyLCBzdGVwLCBjbXB0bHV0W2ldLCBtYXh2YWwsIG9mZnNldCwgbmNtcHRzICk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZWFkQ29tcG9uZW50OHUoIGRhdGEgKyBpLCBidWZmZXIsIHZhbGlkYXRlVG9JbnQoc3RlcCksIGNtcHRsdXRbaV0sIG1heHZhbCwgb2Zmc2V0LCBuY21wdHMgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVhZENvbXBvbmVudDE2dSggKCh1bnNpZ25lZCBzaG9ydCAqKWRhdGEpICsgaSwgYnVmZmVyLCBzdGVwIC8gMiwgY21wdGx1dFtpXSwgbWF4dmFsLCBvZmZzZXQsIG5jbXB0cyApOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVhZENvbXBvbmVudDE2dSggKCh1bnNpZ25lZCBzaG9ydCAqKWRhdGEpICsgaSwgYnVmZmVyLCB2YWxpZGF0ZVRvSW50KHN0ZXAgLyAyKSwgY21wdGx1dFtpXSwgbWF4dmFsLCBvZmZzZXQsIG5jbXB0cyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIXJlc3VsdCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuY21wdHM7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BhbS5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcGFtLmNwcAoraW5kZXggMTExOTVkYzM0MmMuLjhlYjllMDEyMzA5IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BhbS5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wYW0uY3BwCitAQCAtNDc5LDcgKzQ3OSw3IEBAIGJvb2wgIFBBTURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgeworICAgICB1Y2hhciogZGF0YSA9IGltZy5wdHIoKTsKKyAgICAgaW50IHRhcmdldF9jaGFubmVscyA9IGltZy5jaGFubmVscygpOworLSAgICBpbnQgaW1wX3N0cmlkZSA9IChpbnQpaW1nLnN0ZXA7CisrICAgIHNpemVfdCBpbXBfc3RyaWRlID0gaW1nLnN0ZXA7CisgICAgIGludCBzYW1wbGVfZGVwdGggPSBDVl9FTEVNX1NJWkUxKG1fdHlwZSk7CisgICAgIGludCBzcmNfZWxlbXNfcGVyX3JvdyA9IG1fd2lkdGgqbV9jaGFubmVsczsKKyAgICAgaW50IHNyY19zdHJpZGUgPSBzcmNfZWxlbXNfcGVyX3JvdypzYW1wbGVfZGVwdGg7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3N1bnJhcy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfc3VucmFzLmNwcAoraW5kZXggYWNhOWIzNjkzMTguLjZkNDQ4Zjk0ZWQzIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3N1bnJhcy5jcHAKKysrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9zdW5yYXMuY3BwCitAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgIFN1blJhc3RlckRlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgeworICAgICBpbnQgY29sb3IgPSBpbWcuY2hhbm5lbHMoKSA+IDE7CisgICAgIHVjaGFyKiBkYXRhID0gaW1nLnB0cigpOworLSAgICBpbnQgc3RlcCA9IChpbnQpaW1nLnN0ZXA7CisrICAgIHNpemVfdCBzdGVwID0gaW1nLnN0ZXA7CisgICAgIHVjaGFyICBncmF5X3BhbGV0dGVbMjU2XSA9IHswfTsKKyAgICAgYm9vbCAgIHJlc3VsdCA9IGZhbHNlOworICAgICBpbnQgIHNyY19waXRjaCA9ICgobV93aWR0aCptX2JwcCArIDcpLzggKyAxKSAmIC0yOworQEAgLTMwOCwxMSArMzA4LDExIEBAIGJvb2wgIFN1blJhc3RlckRlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCisgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IG1fc3RybS5nZXRCeXRlKCk7CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGNvbG9yICkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEZpbGxVbmlDb2xvciggZGF0YSwgbGluZV9lbmQsIHN0ZXAsIHdpZHRoMywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEZpbGxVbmlDb2xvciggZGF0YSwgbGluZV9lbmQsIHZhbGlkYXRlVG9JbnQoc3RlcCksIHdpZHRoMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbV9oZWlnaHQsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWxldHRlW2NvZGVdICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gRmlsbFVuaUdyYXkoIGRhdGEsIGxpbmVfZW5kLCBzdGVwLCB3aWR0aDMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBGaWxsVW5pR3JheSggZGF0YSwgbGluZV9lbmQsIHZhbGlkYXRlVG9JbnQoc3RlcCksIHdpZHRoMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LCBtX2hlaWdodCwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXlfcGFsZXR0ZVtjb2RlXSApOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCB5ID49IG1faGVpZ2h0ICkKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmNwcAoraW5kZXggMmVlNWJhZmM3MTIuLjQ3NGRhZTAwOGNhIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmNwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmNwcAorQEAgLTQyLDYgKzQyLDEzIEBACisgI2luY2x1ZGUgInByZWNvbXAuaHBwIgorICNpbmNsdWRlICJ1dGlscy5ocHAiCisgCisraW50IHZhbGlkYXRlVG9JbnQoc2l6ZV90IHN6KQorK3sKKysgICAgaW50IHZhbHVlSW50ID0gKGludClzejsKKysgICAgQ1ZfQXNzZXJ0KChzaXplX3QpdmFsdWVJbnQgPT0gc3opOworKyAgICByZXR1cm4gdmFsdWVJbnQ7CisrfQorKworICNkZWZpbmUgIFNDQUxFICAxNAorICNkZWZpbmUgIGNSICAoaW50KSgwLjI5OSooMSA8PCBTQ0FMRSkgKyAwLjUpCisgI2RlZmluZSAgY0cgIChpbnQpKDAuNTg3KigxIDw8IFNDQUxFKSArIDAuNSkKK0BAIC01MzcsMjMgKzU0NCwyNSBAQCB1Y2hhciogRmlsbENvbG9yUm93MSggdWNoYXIqIGRhdGEsIHVjaGFyKiBpbmRpY2VzLCBpbnQgbGVuLCBQYWxldHRlRW50cnkqIHBhbGV0dAorIHsKKyAgICAgdWNoYXIqIGVuZCA9IGRhdGEgKyBsZW4qMzsKKyAKKysgICAgY29uc3QgUGFsZXR0ZUVudHJ5IHAwID0gcGFsZXR0ZVswXSwgcDEgPSBwYWxldHRlWzFdOworKworICAgICB3aGlsZSggKGRhdGEgKz0gMjQpIDwgZW5kICkKKyAgICAgeworICAgICAgICAgaW50IGlkeCA9ICppbmRpY2VzKys7CistICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMjQpKSA9IHBhbGV0dGVbKGlkeCAmIDEyOCkgIT0gMF07CistICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMjEpKSA9IHBhbGV0dGVbKGlkeCAmIDY0KSAhPSAwXTsKKy0gICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAxOCkpID0gcGFsZXR0ZVsoaWR4ICYgMzIpICE9IDBdOworLSAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDE1KSkgPSBwYWxldHRlWyhpZHggJiAxNikgIT0gMF07CistICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMTIpKSA9IHBhbGV0dGVbKGlkeCAmIDgpICE9IDBdOworLSAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDkpKSA9IHBhbGV0dGVbKGlkeCAmIDQpICE9IDBdOworLSAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDYpKSA9IHBhbGV0dGVbKGlkeCAmIDIpICE9IDBdOworLSAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDMpKSA9IHBhbGV0dGVbKGlkeCAmIDEpICE9IDBdOworKyAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDI0KSkgPSAoaWR4ICYgMTI4KSA/IHAxIDogcDA7CisrICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMjEpKSA9IChpZHggJiA2NCkgPyBwMSA6IHAwOworKyAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDE4KSkgPSAoaWR4ICYgMzIpID8gcDEgOiBwMDsKKysgICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAxNSkpID0gKGlkeCAmIDE2KSA/IHAxIDogcDA7CisrICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMTIpKSA9IChpZHggJiA4KSA/IHAxIDogcDA7CisrICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gOSkpID0gKGlkeCAmIDQpID8gcDEgOiBwMDsKKysgICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSA2KSkgPSAoaWR4ICYgMikgPyBwMSA6IHAwOworKyAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDMpKSA9IChpZHggJiAxKSA/IHAxIDogcDA7CisgICAgIH0KKyAKKy0gICAgaW50IGlkeCA9IGluZGljZXNbMF0gPDwgMjQ7CisrICAgIGludCBpZHggPSBpbmRpY2VzWzBdOworICAgICBmb3IoIGRhdGEgLT0gMjQ7IGRhdGEgPCBlbmQ7IGRhdGEgKz0gMywgaWR4ICs9IGlkeCApCisgICAgIHsKKy0gICAgICAgIFBhbGV0dGVFbnRyeSBjbHIgPSBwYWxldHRlW2lkeCA8IDBdOworKyAgICAgICAgY29uc3QgUGFsZXR0ZUVudHJ5IGNsciA9IChpZHggJiAxMjgpID8gcDEgOiBwMDsKKyAgICAgICAgIFdSSVRFX1BJWCggZGF0YSwgY2xyICk7CisgICAgIH0KKyAKK0BAIC01NjUsMjMgKzU3NCwyNSBAQCB1Y2hhciogRmlsbEdyYXlSb3cxKCB1Y2hhciogZGF0YSwgdWNoYXIqIGluZGljZXMsIGludCBsZW4sIHVjaGFyKiBwYWxldHRlICkKKyB7CisgICAgIHVjaGFyKiBlbmQgPSBkYXRhICsgbGVuOworIAorKyAgICBjb25zdCB1Y2hhciBwMCA9IHBhbGV0dGVbMF0sIHAxID0gcGFsZXR0ZVsxXTsKKysKKyAgICAgd2hpbGUoIChkYXRhICs9IDgpIDwgZW5kICkKKyAgICAgeworICAgICAgICAgaW50IGlkeCA9ICppbmRpY2VzKys7CistICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA4KSkgPSBwYWxldHRlWyhpZHggJiAxMjgpICE9IDBdOworLSAgICAgICAgKigodWNoYXIqKShkYXRhIC0gNykpID0gcGFsZXR0ZVsoaWR4ICYgNjQpICE9IDBdOworLSAgICAgICAgKigodWNoYXIqKShkYXRhIC0gNikpID0gcGFsZXR0ZVsoaWR4ICYgMzIpICE9IDBdOworLSAgICAgICAgKigodWNoYXIqKShkYXRhIC0gNSkpID0gcGFsZXR0ZVsoaWR4ICYgMTYpICE9IDBdOworLSAgICAgICAgKigodWNoYXIqKShkYXRhIC0gNCkpID0gcGFsZXR0ZVsoaWR4ICYgOCkgIT0gMF07CistICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSAzKSkgPSBwYWxldHRlWyhpZHggJiA0KSAhPSAwXTsKKy0gICAgICAgICooKHVjaGFyKikoZGF0YSAtIDIpKSA9IHBhbGV0dGVbKGlkeCAmIDIpICE9IDBdOworLSAgICAgICAgKigodWNoYXIqKShkYXRhIC0gMSkpID0gcGFsZXR0ZVsoaWR4ICYgMSkgIT0gMF07CisrICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA4KSkgPSAoaWR4ICYgMTI4KSA/IHAxIDogcDA7CisrICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA3KSkgPSAoaWR4ICYgNjQpID8gcDEgOiBwMDsKKysgICAgICAgICooKHVjaGFyKikoZGF0YSAtIDYpKSA9IChpZHggJiAzMikgPyBwMSA6IHAwOworKyAgICAgICAgKigodWNoYXIqKShkYXRhIC0gNSkpID0gKGlkeCAmIDE2KSA/IHAxIDogcDA7CisrICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA0KSkgPSAoaWR4ICYgOCkgPyBwMSA6IHAwOworKyAgICAgICAgKigodWNoYXIqKShkYXRhIC0gMykpID0gKGlkeCAmIDQpID8gcDEgOiBwMDsKKysgICAgICAgICooKHVjaGFyKikoZGF0YSAtIDIpKSA9IChpZHggJiAyKSA/IHAxIDogcDA7CisrICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSAxKSkgPSAoaWR4ICYgMSkgPyBwMSA6IHAwOworICAgICB9CisgCistICAgIGludCBpZHggPSBpbmRpY2VzWzBdIDw8IDI0OworKyAgICBpbnQgaWR4ID0gaW5kaWNlc1swXTsKKyAgICAgZm9yKCBkYXRhIC09IDg7IGRhdGEgPCBlbmQ7IGRhdGErKywgaWR4ICs9IGlkeCApCisgICAgIHsKKy0gICAgICAgIGRhdGFbMF0gPSBwYWxldHRlW2lkeCA8IDBdOworKyAgICAgICAgZGF0YVswXSA9IChpZHggJiAxMjgpID8gcDEgOiBwMDsKKyAgICAgfQorIAorICAgICByZXR1cm4gZGF0YTsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvdXRpbHMuaHBwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmhwcAoraW5kZXggY2FiMTA2MDlkYjIuLjdhZjRjNjE3NGVlIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmhwcAorKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmhwcAorQEAgLTQyLDYgKzQyLDggQEAKKyAjaWZuZGVmIF9VVElMU19IXworICNkZWZpbmUgX1VUSUxTX0hfCisgCisraW50IHZhbGlkYXRlVG9JbnQoc2l6ZV90IHN0ZXApOworKworIHN0cnVjdCBQYWxldHRlRW50cnkKKyB7CisgICAgIHVuc2lnbmVkIGNoYXIgYiwgZywgciwgYTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi91c2Vsb2NhbHhmZWF0dXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi91c2Vsb2NhbHhmZWF0dXJlcy5wYXRjaAppbmRleCBhMmRiNDhkLi5mYzI3M2E4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvdXNlbG9jYWx4ZmVhdHVyZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3VzZWxvY2FseGZlYXR1cmVzLnBhdGNoCkBAIC0xLDEyICsxLDIwIEBACiBkaWZmIC0tZ2l0IGEvbW9kdWxlcy94ZmVhdHVyZXMyZC9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMveGZlYXR1cmVzMmQvQ01ha2VMaXN0cy50eHQKLWluZGV4IGYyOTViZGRhZWQ2Ni4uNjA4NmU3NWVjMzdiIDEwMDY0NAoraW5kZXggZTE3NTU1OTUuLmM3MDA5YzQ3IDEwMDY0NAogLS0tIGEvbW9kdWxlcy94ZmVhdHVyZXMyZC9DTWFrZUxpc3RzLnR4dAogKysrIGIvbW9kdWxlcy94ZmVhdHVyZXMyZC9DTWFrZUxpc3RzLnR4dAotQEAgLTEsNSArMSw1IEBACi0gc2V0KHRoZV9kZXNjcmlwdGlvbiAiQ29udHJpYnV0ZWQvRXhwZXJpbWVudGFsIEFsZ29yaXRobXMgZm9yIFNhbGllbnQgMkQgRmVhdHVyZXMgRGV0ZWN0aW9uIikKLSBvY3ZfZGVmaW5lX21vZHVsZSh4ZmVhdHVyZXMyZCBvcGVuY3ZfY29yZSBvcGVuY3ZfaW1ncHJvYyBvcGVuY3ZfZmVhdHVyZXMyZCBvcGVuY3ZfY2FsaWIzZCBvcGVuY3Zfc2hhcGUgb3BlbmN2X2hpZ2hndWkgb3BlbmN2X3ZpZGVvaW8gb3BlbmN2X21sCi0gICAgICAgICAgICAgICAgICAgT1BUSU9OQUwgb3BlbmN2X2N1ZGFhcml0aG0gV1JBUCBweXRob24gamF2YSkKLS1pbmNsdWRlKGNtYWtlL2Rvd25sb2FkX3ZnZy5jbWFrZSkKLS1pbmNsdWRlKGNtYWtlL2Rvd25sb2FkX2Jvb3N0ZGVzYy5jbWFrZSkKLSsjaW5jbHVkZShjbWFrZS9kb3dubG9hZF92Z2cuY21ha2UpCi0rI2luY2x1ZGUoY21ha2UvZG93bmxvYWRfYm9vc3RkZXNjLmNtYWtlKQorQEAgLTUsMTAgKzUsMTAgQEAgb2N2X2RlZmluZV9tb2R1bGUoeGZlYXR1cmVzMmQgb3BlbmN2X2NvcmUgb3BlbmN2X2ltZ3Byb2Mgb3BlbmN2X2ZlYXR1cmVzMmQgb3BlbmMKKyBpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jbWFrZS9kb3dubG9hZF92Z2cuY21ha2UpCisgaW5jbHVkZSgke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY21ha2UvZG93bmxvYWRfYm9vc3RkZXNjLmNtYWtlKQorIHNldChET1dOTE9BRF9ESVIgIiR7T3BlbkNWX0JJTkFSWV9ESVJ9L2Rvd25sb2Fkcy94ZmVhdHVyZXMyZCIpCistZG93bmxvYWRfYm9vc3RfZGVzY3JpcHRvcnMoIiR7RE9XTkxPQURfRElSfSIgYm9vc3Rfc3RhdHVzKQorLWRvd25sb2FkX3ZnZ19kZXNjcmlwdG9ycygiJHtET1dOTE9BRF9ESVJ9IiB2Z2dfc3RhdHVzKQorLWlmKE5PVCBib29zdF9zdGF0dXMgT1IgTk9UIHZnZ19zdGF0dXMpCistICBvY3ZfbW9kdWxlX2Rpc2FibGUoeGZlYXR1cmVzMmQpCistZW5kaWYoKQorKyNkb3dubG9hZF9ib29zdF9kZXNjcmlwdG9ycygiJHtET1dOTE9BRF9ESVJ9IiBib29zdF9zdGF0dXMpCisrI2Rvd25sb2FkX3ZnZ19kZXNjcmlwdG9ycygiJHtET1dOTE9BRF9ESVJ9IiB2Z2dfc3RhdHVzKQorKyNpZihOT1QgYm9vc3Rfc3RhdHVzIE9SIE5PVCB2Z2dfc3RhdHVzKQorKyMgIG9jdl9tb2R1bGVfZGlzYWJsZSh4ZmVhdHVyZXMyZCkKKysjZW5kaWYoKQorIAorIG9jdl9tb2R1bGVfaW5jbHVkZV9kaXJlY3RvcmllcygiJHtET1dOTE9BRF9ESVJ9IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi91c2VvZXByb3RvYnVmLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3VzZW9lcHJvdG9idWYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNjhiZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3VzZW9lcHJvdG9idWYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlIGIvbW9kdWxlcy9kbm4vY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlCi1pbmRleCBlYjJhNzI5Y2MyZWIuLjg3MTc3MzY0ODRkZSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvZG5uL2NtYWtlL09wZW5DVkZpbmRMaWJQcm90b2J1Zi5jbWFrZQotKysrIGIvbW9kdWxlcy9kbm4vY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlCi1AQCAtMjQsNyArMjQsNyBAQCBpZihOT1QgQlVJTERfUFJPVE9CVUYgQU5EIE5PVCAoREVGSU5FRCBQUk9UT0JVRl9JTkNMVURFX0RJUiBBTkQgREVGSU5FRCBQUk9UT0JVRgotICAgZmluZF9wYWNrYWdlKFByb3RvYnVmIFFVSUVUKQotIGVuZGlmKCkKLSAKLS1pZihQUk9UT0JVRl9GT1VORCkKLStpZihQUk9UT0JVRl9GT1VORCBPUiAoREVGSU5FRCBQUk9UT0JVRl9JTkNMVURFX0RJUiBBTkQgREVGSU5FRCBQUk9UT0JVRl9MSUJSQVJJRVMpKQotICAgIyBub3RoaW5nCi0gZWxzZSgpCi0gICBpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZG93bmxvYWRfcHJvdG9idWYuY21ha2UpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE3YzY0MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbmN2IDogVGhlIE9wZW4gQ29tcHV0ZXIgVmlzaW9uIExpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbmN2Lm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaW5jbHVkZS9vcGVuY3YyL29wZW5jdi5ocHA7ZW5kbGluZT00MTttZDU9NmQ2OTBkODQ4OGE2ZmNhN2EyYzE5MjkzMjQ2NmJiMTQiCi0KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLURFUEVORFMgPSAicHl0aG9uLW51bXB5IGxpYnRvb2wgc3dpZyBzd2lnLW5hdGl2ZSBweXRob24gYnppcDIgemxpYiBnbGliLTIuMCIKLQotU1JDUkVWID0gIjJjOTU0N2UzMTQ3Nzc5MDAxODExZDAxOTM2YWVkMzhmNTYwOTI5ZmMiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vSXRzZWV6L29wZW5jdi5naXQ7YnJhbmNoPTIuNCBcCi0gIGZpbGU6Ly8wMDAxLVVzZS1fX3ZlY3Rvci1pbnN0ZWFkLW9mLXZlY3Rvci1hcy1zdWdnZXN0cy1FaWdlbi5wYXRjaCIKLQotUFYgPSAiMi40LjExK2dpdCR7U1JDUFZ9IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jIERvIGFuIG91dC1vZi10cmVlIGJ1aWxkCi1PRUNNQUtFX1NPVVJDRVBBVEggPSAiJHtTfSIKLU9FQ01BS0VfQlVJTERQQVRIID0gIiR7V09SS0RJUn0vYnVpbGQtJHtUQVJHRVRfQVJDSH0iCi0KLUVYVFJBX09FQ01BS0UgPSAiLURQWVRIT05fTlVNUFlfSU5DTFVERV9ESVI6UEFUSD0ke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvbnVtcHkvY29yZS9pbmNsdWRlIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9QWVRIT05fU1VQUE9SVD1PTiBcCi0gICAgICAgICAgICAgICAgIC1EV0lUSF9HU1RSRUFNRVI9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURXSVRIXzEzOTQ9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURDTUFLRV9TS0lQX1JQQVRIPU9OIFwKLSAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlMyIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlNC4xIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSAtREVOQUJMRV9TU0U0MT0xIiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfQ0NfQVJDSCIsICItbXNzZTQuMiIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEgLURFTkFCTEVfU1NFNDE9MSAtREVOQUJMRV9TU0U0Mj0xIiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjY0IiwgIi1ETElCX1NVRkZJWD02NCIsICIiLCBkKX0gXAotICAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWIzMiIsICItRExJQl9TVUZGSVg9MzIiLCAiIiwgZCl9IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImVpZ2VuIGpwZWcgcG5nIHRpZmYgdjRsIGxpYnY0bCBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiZ3RrIiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAibGliYXYiLCAiIiwgZCl9IgotCi1QQUNLQUdFQ09ORklHW2VpZ2VuXSA9ICItRFdJVEhfRUlHRU49T04sLURXSVRIX0VJR0VOPU9GRixsaWJlaWdlbiwiCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLURXSVRIX0dUSz1PTiwtRFdJVEhfR1RLPU9GRixndGsrLCIKLVBBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItRFdJVEhfSkFTUEVSPU9OLC1EV0lUSF9KQVNQRVI9T0ZGLGphc3BlciwiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi1EV0lUSF9KUEVHPU9OLC1EV0lUSF9KUEVHPU9GRixqcGVnLCIKLVBBQ0tBR0VDT05GSUdbbGliYXZdID0gIi1EV0lUSF9GRk1QRUc9T04sLURXSVRIX0ZGTVBFRz1PRkYsbGliYXYsIgotUEFDS0FHRUNPTkZJR1tsaWJ2NGxdID0gIi1EV0lUSF9MSUJWNEw9T04sLURXSVRIX0xJQlY0TD1PRkYsdjRsLXV0aWxzLCIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItRFdJVEhfUE5HPU9OLC1EV0lUSF9QTkc9T0ZGLGxpYnBuZywiCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi1EV0lUSF9USUZGPU9OLC1EV0lUSF9USUZGPU9GRix0aWZmLCIKLVBBQ0tBR0VDT05GSUdbdjRsXSA9ICItRFdJVEhfVjRMPU9OLC1EV0lUSF9WNEw9T0ZGLHY0bC11dGlscywiCi0KLWluaGVyaXQgZGlzdHV0aWxzLWJhc2UgcGtnY29uZmlnIGNtYWtlCi0KLWV4cG9ydCBQWVRIT05fQ1NQRUM9Ii1JJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKLWV4cG9ydCBQWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICItSSR7U30vaW5jbHVkZSAiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1hcHBzIHB5dGhvbi1vcGVuY3YiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBjdl9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBjdl9saWJkaXJfZGJnID0gZC5leHBhbmQoJyR7bGliZGlyfS8uZGVidWcnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGliJXMtZGV2JywgJ09wZW5DViAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JywgYWxsb3dfbGlua3M9VHJ1ZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwubGEkJywgJ2xpYiVzLWRldicsICdPcGVuQ1YgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLmEkJywgJ2xpYiVzLWRldicsICdPcGVuQ1YgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09wZW5DViAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLQotICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICBtZXRhcGtnID0gIHBuICsgJy1kZXYnCi0gICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCi0gICAgYmxhY2tsaXN0ID0gWyBtZXRhcGtnIF0KLSAgICBtZXRhcGtnX3JkZXBlbmRzID0gWyBdCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06Ci0gICAgICAgIGlmIG5vdCBwa2cgaW4gYmxhY2tsaXN0IGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIHBrZy5lbmRzd2l0aCgnLWRldicpOgotICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQotICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCi19Ci0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJvcGVuY3YtLioiCi0KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTXyR7UE59LWFwcHMgPSAiJHtiaW5kaXJ9LyogJHtkYXRhZGlyfS9PcGVuQ1YiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vcGtnY29uZmlnIgotRklMRVNfJHtQTn0tZG9jID0gIiR7ZGF0YWRpcn0vT3BlbkNWL2RvYyIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotU1VNTUFSWV9weXRob24tb3BlbmN2ID0gIlB5dGhvbiBiaW5kaW5ncyB0byBvcGVuY3YiCi1GSUxFU19weXRob24tb3BlbmN2ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1SREVQRU5EU19weXRob24tb3BlbmN2ID0gInB5dGhvbi1jb3JlIHB5dGhvbi1udW1weSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgY3AgJHtTfS9pbmNsdWRlL29wZW5jdi8qLmggJHtEfSR7aW5jbHVkZWRpcn0vb3BlbmN2LwotICAgIHNlZCAtaSAnL2Jsb2J0cmFjay9kJyAke0R9JHtpbmNsdWRlZGlyfS9vcGVuY3YvY3ZhdXguaAotCi0gICAgIyBNb3ZlIFB5dGhvbiBmaWxlcyBpbnRvIGNvcnJlY3QgbGlicmFyeSBmb2xkZXIgKGZvciBtdWx0aWxpYiBidWlsZCkKLSAgICBpZiBbICIkbGliZGlyIiAhPSAiL3Vzci9saWIiIF07IHRoZW4KLSAgICAgICAgbXYgJHtEfS91c3IvbGliLyogJHtEfS8ke2xpYmRpcn0vCi0gICAgICAgIHJtIC1yZiAke0R9L3Vzci9saWIKLSAgICBmaQotfQotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy80MDY2MC8KLVBOQkxBQ0tMSVNUW29wZW5jdl0gPz0gIk5vdCBjb21wYXRpYmxlIHdpdGggY3VycmVudGx5IHVzZWQgZmZtcGVnIDMgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1Yzc2MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbmN2IDogVGhlIE9wZW4gQ29tcHV0ZXIgVmlzaW9uIExpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbmN2Lm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmIyZjg3NTJjYzVlZGY1MDRkMjgzMTA3ZDAzM2Y1NDQiCi0KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLURFUEVORFMgPSAibGlidG9vbCBzd2lnLW5hdGl2ZSBiemlwMiB6bGliIGdsaWItMi4wIGxpYndlYnAiCi0KLVNSQ1JFVl9vcGVuY3YgPSAiNzBiYmYxN2IxMzM0OTZiZDdkNTRkMDM0YjBmOTRiZDg2OWUwZTgxMCIKLVNSQ1JFVl9jb250cmliID0gIjg2MzQyNTIyYjBlYjJiMTZmYTg1MWMwMjBjYzRlMGZlZjRlMDEwYjciCi1TUkNSRVZfaXBwID0gIjgxYTY3NjAwMWNhODA3NWFkYTQ5ODU4M2U0MTY2MDc5ZTU3NDQ2NjgiCi1TUkNSRVZfYm9vdGRlc2MgPSAiMzRlNDIwNmFlZjQ0ZDUwZTZiYmNkMGFiMDYzNTRiNTJlNzQ2NmQyNiIKLVNSQ1JFVl92Z2cgPSAiZmNjZjdjZDZhNGIxMjA3OWY3M2JiZmIyMTc0NWY5YmFiY2Q0ZWIxZCIKLUlQUF9NRDUgPSAiODA4Yjc5MWE2ZWFjOWVkNzhkMzJhNzY2NjgwNDMyMGUiCi0KLVNSQ1JFVl9GT1JNQVQgPSAib3BlbmN2IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YuZ2l0O25hbWU9b3BlbmN2IFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfY29udHJpYi5naXQ7ZGVzdHN1ZmZpeD1jb250cmliO25hbWU9Y29udHJpYiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9aXBwaWN2L21hc3Rlcl8yMDE1MTIwMTtkZXN0c3VmZml4PWlwcDtuYW1lPWlwcCBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9Y29udHJpYl94ZmVhdHVyZXMyZF9ib29zdGRlc2NfMjAxNjEwMTI7ZGVzdHN1ZmZpeD1ib290ZGVzYztuYW1lPWJvb3RkZXNjIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1jb250cmliX3hmZWF0dXJlczJkX3ZnZ18yMDE2MDMxNztkZXN0c3VmZml4PXZnZztuYW1lPXZnZyBcCi0gICAgZmlsZTovLzAwMDEtM3JkcGFydHktaXBwaWN2LVVzZS1wcmUtZG93bmxvYWRlZC1pcHAucGF0Y2ggXAotICAgIGZpbGU6Ly9maXhwa2djb25maWcucGF0Y2ggXAotICAgIGZpbGU6Ly91c2Vsb2NhbHhmZWF0dXJlcy5wYXRjaDtwYXRjaGRpcj0uLi9jb250cmliLyBcCi0gICAgZmlsZTovL3VzZW9lcHJvdG9idWYucGF0Y2g7cGF0Y2hkaXI9Li4vY29udHJpYi8gXAotICAgIGZpbGU6Ly8wMDAxLVJldmVydC1jdWRhLWZpeC1mcDE2LWNvbXBpbGF0aW9uLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1SZXZlcnQtY2hlY2stRlAxNi1idWlsZC1jb25kaXRpb24tY29ycmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1NYWtlLW9wZW5jdi10cy1jcmVhdGUtc2hhcmUtbGlicmFyeS1pbnRlYWQtb2Ytc3RhdGljLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1Uby1maXgtZXJyb3JzLWFzLWZvbGxvd2luZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdHJhY2tpbmctbWFrZS1vcGVuY3ZfZG5uLWRlcGVuZGFuY3ktb3B0aW9uYWwucGF0Y2g7cGF0Y2hkaXI9Li4vY29udHJpYi8gXAotIgotCi1QViA9ICIzLjIrZ2l0JHtTUkNQVn0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX3VucGFja19leHRyYSgpIHsKLSAgICB0YXIgeHpmICR7V09SS0RJUn0vaXBwL2lwcGljdi9pcHBpY3ZfbGludXhfMjAxNTEyMDEudGd6IC1DICR7V09SS0RJUn0KLSAgICBjcCAke1dPUktESVJ9L3ZnZy8qLmkgJHtXT1JLRElSfS9jb250cmliL21vZHVsZXMveGZlYXR1cmVzMmQvc3JjCi0gICAgY3AgJHtXT1JLRElSfS9ib290ZGVzYy8qLmkgJHtXT1JLRElSfS9jb250cmliL21vZHVsZXMveGZlYXR1cmVzMmQvc3JjCi19Ci1hZGR0YXNrIHVucGFja19leHRyYSBhZnRlciBkb191bnBhY2sgYmVmb3JlIGRvX3BhdGNoCi0KLUVYVFJBX09FQ01BS0UgPSAiLURPUEVOQ1ZfRVhUUkFfTU9EVUxFU19QQVRIPSR7V09SS0RJUn0vY29udHJpYi9tb2R1bGVzIFwKLSAgICAtRFdJVEhfMTM5ND1PRkYgXAotICAgIC1EQ01BS0VfU0tJUF9SUEFUSD1PTiBcCi0gICAgLURPUEVOQ1ZfSUNWX1BBQ0tBR0VfRE9XTkxPQURFRD0ke0lQUF9NRDV9IFwKLSAgICAtRE9QRU5DVl9JQ1ZfUEFUSD0ke1dPUktESVJ9L2lwcGljdl9sbnggXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfQ0NfQVJDSCIsICItbXNzZTMiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIiwgIiIsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlNC4xIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSAtREVOQUJMRV9TU0U0MT0xIiwgIiIsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlNC4yIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSAtREVOQUJMRV9TU0U0MT0xIC1ERU5BQkxFX1NTRTQyPTEiLCAiIiwgZCl9IFwKLSAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKLSAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWIzMiIsICItRExJQl9TVUZGSVg9MzIiLCAiIiwgZCl9IFwKLSIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4NiA9ICIgLURYODY9T04iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIGVpZ2VuIGpwZWcgcG5nIHRpZmYgdjRsIGxpYnY0bCBnc3RyZWFtZXIgc2FtcGxlcyB0YmIgZ3Bob3RvMiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiZ3RrIiwgIiIsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAibGliYXYiLCAiIiwgZCl9IgotCi1QQUNLQUdFQ09ORklHW2FtZGJsYXNdID0gIi1EV0lUSF9PUEVOQ0xBTURCTEFTPU9OLC1EV0lUSF9PUEVOQ0xBTURCTEFTPU9GRixsaWJjbGFtZGJsYXMsIgotUEFDS0FHRUNPTkZJR1thbWRmZnRdID0gIi1EV0lUSF9PUEVOQ0xBTURGRlQ9T04sLURXSVRIX09QRU5DTEFNREZGVD1PRkYsbGliY2xhbWRmZnQsIgotUEFDS0FHRUNPTkZJR1tkbm5dID0gIi1EQlVJTERfb3BlbmN2X2Rubj1PTiAtRFVQREFURV9QUk9UT19GSUxFUz1PTiAtREJVSUxEX1BST1RPQlVGPU9GRiwtREJVSUxEX29wZW5jdl9kbm49T0ZGLHByb3RvYnVmIHByb3RvYnVmLW5hdGl2ZSwiCi1QQUNLQUdFQ09ORklHW2VpZ2VuXSA9ICItRFdJVEhfRUlHRU49T04sLURXSVRIX0VJR0VOPU9GRixsaWJlaWdlbiBnZmxhZ3MgZ2xvZywiCi1QQUNLQUdFQ09ORklHW2ZyZWV0eXBlXSA9ICItREJVSUxEX29wZW5jdl9mcmVldHlwZT1PTiwtREJVSUxEX29wZW5jdl9mcmVldHlwZT1PRkYsZnJlZXR5cGUsIgotUEFDS0FHRUNPTkZJR1tncGhvdG8yXSA9ICItRFdJVEhfR1BIT1RPMj1PTiwtRFdJVEhfR1BIT1RPMj1PRkYsbGliZ3Bob3RvMiwiCi1QQUNLQUdFQ09ORklHW2dzdHJlYW1lcl0gPSAiLURXSVRIX0dTVFJFQU1FUj1PTiwtRFdJVEhfR1NUUkVBTUVSPU9GRixnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSwiCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLURXSVRIX0dUSz1PTiwtRFdJVEhfR1RLPU9GRixndGsrMywiCi1QQUNLQUdFQ09ORklHW2phc3Blcl0gPSAiLURXSVRIX0pBU1BFUj1PTiwtRFdJVEhfSkFTUEVSPU9GRixqYXNwZXIsIgotUEFDS0FHRUNPTkZJR1tqYXZhXSA9ICItREpBVkFfSU5DTFVERV9QQVRIPSR7SkFWQV9IT01FfS9pbmNsdWRlIC1ESkFWQV9JTkNMVURFX1BBVEgyPSR7SkFWQV9IT01FfS9pbmNsdWRlL2xpbnV4IC1ESkFWQV9BV1RfSU5DTFVERV9QQVRIPSR7SkFWQV9IT01FfS9pbmNsdWRlIC1ESkFWQV9BV1RfTElCUkFSWT0ke0pBVkFfSE9NRX0vbGliL2FtZDY0L2xpYmphd3Quc28gLURKQVZBX0pWTV9MSUJSQVJZPSR7SkFWQV9IT01FfS9saWIvYW1kNjQvc2VydmVyL2xpYmp2bS5zbywsYW50LW5hdGl2ZSBmYXN0amFyLW5hdGl2ZSBvcGVuamRrLTgtbmF0aXZlLCIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLURXSVRIX0pQRUc9T04sLURXSVRIX0pQRUc9T0ZGLGpwZWcsIgotUEFDS0FHRUNPTkZJR1tsaWJhdl0gPSAiLURXSVRIX0ZGTVBFRz1PTiwtRFdJVEhfRkZNUEVHPU9GRixsaWJhdiwiCi1QQUNLQUdFQ09ORklHW2xpYnY0bF0gPSAiLURXSVRIX0xJQlY0TD1PTiwtRFdJVEhfTElCVjRMPU9GRix2NGwtdXRpbHMsIgotUEFDS0FHRUNPTkZJR1tvcGVuY2xdID0gIi1EV0lUSF9PUEVOQ0w9T04sLURXSVRIX09QRU5DTD1PRkYsb3BlbmNsLWhlYWRlcnMgdmlydHVhbC9vcGVuY2wtaWNkLCIKLVBBQ0tBR0VDT05GSUdbb3JhY2xlLWphdmFdID0gIi1ESkFWQV9JTkNMVURFX1BBVEg9JHtPUkFDTEVfSkFWQV9IT01FfS9pbmNsdWRlIC1ESkFWQV9JTkNMVURFX1BBVEgyPSR7T1JBQ0xFX0pBVkFfSE9NRX0vaW5jbHVkZS9saW51eCAtREpBVkFfQVdUX0lOQ0xVREVfUEFUSD0ke09SQUNMRV9KQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0FXVF9MSUJSQVJZPSR7T1JBQ0xFX0pBVkFfSE9NRX0vbGliL2FtZDY0L2xpYmphd3Quc28gLURKQVZBX0pWTV9MSUJSQVJZPSR7T1JBQ0xFX0pBVkFfSE9NRX0vbGliL2FtZDY0L3NlcnZlci9saWJqdm0uc28sLGFudC1uYXRpdmUgb3JhY2xlLWpzZS1qZGsgb3JhY2xlLWpzZS1qZGstbmF0aXZlLCIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItRFdJVEhfUE5HPU9OLC1EV0lUSF9QTkc9T0ZGLGxpYnBuZywiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjJdID0gIi1EUFlUSE9OMl9OVU1QWV9JTkNMVURFX0RJUlM6UEFUSD0ke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvbnVtcHkvY29yZS9pbmNsdWRlLCxweXRob24tbnVtcHksIgotUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItRFBZVEhPTjNfTlVNUFlfSU5DTFVERV9ESVJTOlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL251bXB5L2NvcmUvaW5jbHVkZSwscHl0aG9uMy1udW1weSwiCi1QQUNLQUdFQ09ORklHW3NhbXBsZXNdID0gIi1EQlVJTERfRVhBTVBMRVM9T04gLURJTlNUQUxMX1BZVEhPTl9FWEFNUExFUz1PTiwtREJVSUxEX0VYQU1QTEVTPU9GRiwsIgotUEFDS0FHRUNPTkZJR1t0YmJdID0gIi1EV0lUSF9UQkI9T04sLURXSVRIX1RCQj1PRkYsdGJiLCIKLVBBQ0tBR0VDT05GSUdbdGV4dF0gPSAiLURCVUlMRF9vcGVuY3ZfdGV4dD1PTiwtREJVSUxEX29wZW5jdl90ZXh0PU9GRix0ZXNzZXJhY3QsIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRFdJVEhfVElGRj1PTiwtRFdJVEhfVElGRj1PRkYsdGlmZiwiCi1QQUNLQUdFQ09ORklHW3Y0bF0gPSAiLURXSVRIX1Y0TD1PTiwtRFdJVEhfVjRMPU9GRix2NGwtdXRpbHMsIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBjbWFrZQotCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ2Rpc3R1dGlscy1iYXNlJywgJycsIGQpfQotCi1leHBvcnQgUFlUSE9OX0NTUEVDPSItSSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCi1leHBvcnQgUFlUSE9OPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zJywgJ3B5dGhvbicsIGQpfSIKLWV4cG9ydCBPUkFDTEVfSkFWQV9IT01FPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2Jpbi9qYXZhIgotZXhwb3J0IEpBVkFfSE9NRT0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9saWIvanZtL29wZW5qZGstOC1uYXRpdmUiCi1leHBvcnQgQU5UX0RJUj0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9zaGFyZS9hbnQvIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiLUkke1N9L2luY2x1ZGUgIgotCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2FtcGxlcycsICcke1BOfS1zYW1wbGVzJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnb3JhY2xlLWphdmEnLCAnJHtQTn0tamF2YScsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2phdmEnLCAnJHtQTn0tamF2YScsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9uLSR7QlBOfScsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy0ke0JQTn0nLCAnJywgZCl9IFwKLSAgICAke1BOfS1hcHBzIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgY3ZfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnLCBhbGxvd19saW5rcz1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5sYSQnLCAnbGliJXMtZGV2JywgJ09wZW5DViAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuYSQnLCAnbGliJXMtZGV2JywgJ09wZW5DViAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT3BlbkNWICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotCi0gICAgcG4gPSBkLmdldFZhcignUE4nKQotICAgIG1ldGFwa2cgPSAgcG4gKyAnLWRldicKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKLSAgICBibGFja2xpc3QgPSBbIG1ldGFwa2cgXQotICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbIF0KLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKLSAgICAgICAgaWYgbm90IHBrZyBpbiBibGFja2xpc3QgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgcGtnLmVuZHN3aXRoKCctZGV2Jyk6Ci0gICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCi0gICAgZC5zZXRWYXIoJ1JSRUNPTU1FTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKLQotICAgIG1ldGFwa2cgPSAgcG4KLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKLSAgICBibGFja2xpc3QgPSBbIG1ldGFwa2cgXQotICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbIF0KLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKLSAgICAgICAgaWYgbm90IHBrZyBpbiBibGFja2xpc3QgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRldicpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGJnJykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kb2MnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWxvY2FsZScpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctc3RhdGljZGV2Jyk6Ci0gICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCi0gICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKLQotfQotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3BlbmN2LS4qIgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7ZGF0YWRpcn0vT3BlbkNWL2phdmEvLmRlYnVnLyogJHtkYXRhZGlyfS9PcGVuQ1Yvc2FtcGxlcy9iaW4vLmRlYnVnLyoiCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vcGtnY29uZmlnICR7ZGF0YWRpcn0vT3BlbkNWLyouY21ha2UiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7ZGF0YWRpcn0vT3BlbkNWLzNyZHBhcnR5L2xpYi8qLmEiCi1GSUxFU18ke1BOfS1hcHBzID0gIiR7YmluZGlyfS8qICR7ZGF0YWRpcn0vT3BlbkNWIgotRklMRVNfJHtQTn0tamF2YSA9ICIke2RhdGFkaXJ9L09wZW5DVi9qYXZhIgotRklMRVNfJHtQTn0tc2FtcGxlcyA9ICIke2RhdGFkaXJ9L09wZW5DVi9zYW1wbGVzLyIKLQotSU5TQU5FX1NLSVBfJHtQTn0tamF2YSA9ICJsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZGlyIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1TVU1NQVJZX3B5dGhvbi1vcGVuY3YgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIG9wZW5jdiIKLUZJTEVTX3B5dGhvbi1vcGVuY3YgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLVJERVBFTkRTX3B5dGhvbi1vcGVuY3YgPSAicHl0aG9uLWNvcmUgcHl0aG9uLW51bXB5IgotCi1TVU1NQVJZX3B5dGhvbjMtb3BlbmN2ID0gIlB5dGhvbiBiaW5kaW5ncyB0byBvcGVuY3YiCi1GSUxFU19weXRob24zLW9wZW5jdiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotUkRFUEVORFNfcHl0aG9uMy1vcGVuY3YgPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtbnVtcHkiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGNwICR7U30vaW5jbHVkZS9vcGVuY3YvKi5oICR7RH0ke2luY2x1ZGVkaXJ9L29wZW5jdi8KLSAgICBzZWQgLWkgJy9ibG9idHJhY2svZCcgJHtEfSR7aW5jbHVkZWRpcn0vb3BlbmN2L2N2YXV4LmgKLQotICAgICMgTW92ZSBQeXRob24gZmlsZXMgaW50byBjb3JyZWN0IGxpYnJhcnkgZm9sZGVyIChmb3IgbXVsdGlsaWIgYnVpbGQpCi0gICAgaWYgWyAiJGxpYmRpciIgIT0gIi91c3IvbGliIiAtYSAtZCAke0R9L3Vzci9saWIgXTsgdGhlbgotICAgICAgICBtdiAke0R9L3Vzci9saWIvKiAke0R9LyR7bGliZGlyfS8KLSAgICAgICAgcm0gLXJmICR7RH0vdXNyL2xpYgotICAgIGZpCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygiUEFDS0FHRUNPTkZJRyIsICJzYW1wbGVzIiwgInRydWUiLCAiZmFsc2UiLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9PcGVuQ1Yvc2FtcGxlcy9iaW4vCi0gICAgICAgIGNwIC1mIGJpbi8qLXR1dG9yaWFsLSogYmluLyotZXhhbXBsZS0qICR7RH0ke2RhdGFkaXJ9L09wZW5DVi9zYW1wbGVzL2Jpbi8KLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ5ZTRjYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjMuYmIKQEAgLTAsMCArMSwxOTQgQEAKK1NVTU1BUlkgPSAiT3BlbmN2IDogVGhlIE9wZW4gQ29tcHV0ZXIgVmlzaW9uIExpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vb3BlbmN2Lm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmIyZjg3NTJjYzVlZGY1MDRkMjgzMTA3ZDAzM2Y1NDQiCisKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0RFUEVORFMgPSAibGlidG9vbCBzd2lnLW5hdGl2ZSBiemlwMiB6bGliIGdsaWItMi4wIGxpYndlYnAiCisKK1NSQ1JFVl9vcGVuY3YgPSAiODdjMjdhMDc0ZGI5ZjZkOWQ2MDUxM2YzNTFkYWE5MDM2MDZjYTM3MCIKK1NSQ1JFVl9jb250cmliID0gIjJhOWQxYjIyZWQ3NmViMjJmYWQxYTVlZGY2ZmFmNGQwNWYyMDdiMTMiCitTUkNSRVZfaXBwID0gImE2MmUyMDY3NmE2MGVlMGFkNjU4MWUyMTdmZTdlNGJhZGEzYjk1ZGIiCitTUkNSRVZfYm9vc3RkZXNjID0gIjM0ZTQyMDZhZWY0NGQ1MGU2YmJjZDBhYjA2MzU0YjUyZTc0NjZkMjYiCitTUkNSRVZfdmdnID0gImZjY2Y3Y2Q2YTRiMTIwNzlmNzNiYmZiMjE3NDVmOWJhYmNkNGViMWQiCisKK2RlZiBpcHBfZmlsZW5hbWUoZCk6CisgICAgaW1wb3J0IHJlCisgICAgYXJjaCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpCisgICAgaWYgcmUubWF0Y2goImkuODYkIiwgYXJjaCk6CisgICAgICAgIHJldHVybiAiaXBwaWN2XzIwMTd1Ml9sbnhfaWEzMl8yMDE3MDQxOC50Z3oiCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICJpcHBpY3ZfMjAxN3UyX2xueF9pbnRlbDY0XzIwMTcwNDE4LnRneiIKKworZGVmIGlwcF9tZDVzdW0oZCk6CisgICAgaW1wb3J0IHJlCisgICAgYXJjaCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpCisgICAgaWYgcmUubWF0Y2goImkuODYkIiwgYXJjaCk6CisgICAgICAgIHJldHVybiAiZjJjZWNlMDBkODAyZDRkZWE4NmRmNTJlZDA5NTI1N2UiCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICI4MDhiNzkxYTZlYWM5ZWQ3OGQzMmE3NjY2ODA0MzIwZSIKKworSVBQX0ZJTEVOQU1FID0gIiR7QGlwcF9maWxlbmFtZShkKX0iCitJUFBfTUQ1ID0gIiR7QGlwcF9tZDVzdW0oZCl9IgorCitTUkNSRVZfRk9STUFUID0gIm9wZW5jdl9jb250cmliX2lwcF9ib29zdGRlc2NfdmdnIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YuZ2l0O25hbWU9b3BlbmN2IFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfY29udHJpYi5naXQ7ZGVzdHN1ZmZpeD1jb250cmliO25hbWU9Y29udHJpYiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9aXBwaWN2L21hc3Rlcl8yMDE3MDQxODtkZXN0c3VmZml4PWlwcDtuYW1lPWlwcCBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9Y29udHJpYl94ZmVhdHVyZXMyZF9ib29zdGRlc2NfMjAxNjEwMTI7ZGVzdHN1ZmZpeD1ib29zdGRlc2M7bmFtZT1ib29zdGRlc2MgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl8zcmRwYXJ0eS5naXQ7YnJhbmNoPWNvbnRyaWJfeGZlYXR1cmVzMmRfdmdnXzIwMTYwMzE3O2Rlc3RzdWZmaXg9dmdnO25hbWU9dmdnIFwKKyAgICBmaWxlOi8vMDAwMS0zcmRwYXJ0eS1pcHBpY3YtVXNlLXByZS1kb3dubG9hZGVkLWlwcC5wYXRjaCBcCisgICAgZmlsZTovL2ZpeHBrZ2NvbmZpZy5wYXRjaCBcCisgICAgZmlsZTovL3VzZWxvY2FseGZlYXR1cmVzLnBhdGNoO3BhdGNoZGlyPS4uL2NvbnRyaWIvIFwKKyAgICBmaWxlOi8vMDAwMi1NYWtlLW9wZW5jdi10cy1jcmVhdGUtc2hhcmUtbGlicmFyeS1pbnRlYWQtb2Ytc3RhdGljLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1Uby1maXgtZXJyb3JzLWFzLWZvbGxvd2luZy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtYnVpbGQtd29ya2Fyb3VuZC1HQ0MtNy4xLjEtY29tcGlsYXRpb24taXNzdWUtd2l0aC1zYS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItaW1nY29kZWNzLXJlZmFjdG9yaW5nLWltcHJvdmUtY29kZS1xdWFsaXR5LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1pbWdwcm9jLXRlc3QtYWRkLWNoZWNrcy1mb3ItcmVtb3ZlLWNhbGwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLURvbnQtdXNlLWlzeXN0ZW0ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWNhcm90ZW5lLWRvbi10LXVzZS1fX2FzbV9fLXdpdGgtYWFyY2g2NC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItRG8tbm90LWVuYWJsZS1hc20td2l0aC1jbGFuZy5wYXRjaCBcCisgICAgZmlsZTovL0NWRS0yMDE3LTE0MTM2LnBhdGNoIFwKKyIKK1BWID0gIjMuMytnaXQke1NSQ1BWfSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fdW5wYWNrX2V4dHJhKCkgeworICAgIHRhciB4emYgJHtXT1JLRElSfS9pcHAvaXBwaWN2LyR7SVBQX0ZJTEVOQU1FfSAtQyAke1dPUktESVJ9CisgICAgY3AgJHtXT1JLRElSfS92Z2cvKi5pICR7V09SS0RJUn0vY29udHJpYi9tb2R1bGVzL3hmZWF0dXJlczJkL3NyYworICAgIGNwICR7V09SS0RJUn0vYm9vc3RkZXNjLyouaSAke1dPUktESVJ9L2NvbnRyaWIvbW9kdWxlcy94ZmVhdHVyZXMyZC9zcmMKK30KK2FkZHRhc2sgdW5wYWNrX2V4dHJhIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKKworRVhUUkFfT0VDTUFLRSA9ICItRE9QRU5DVl9FWFRSQV9NT0RVTEVTX1BBVEg9JHtXT1JLRElSfS9jb250cmliL21vZHVsZXMgXAorICAgIC1EV0lUSF8xMzk0PU9GRiBcCisgICAgLURDTUFLRV9TS0lQX1JQQVRIPU9OIFwKKyAgICAtRE9QRU5DVl9JQ1ZfUEFDS0FHRV9ET1dOTE9BREVEPSR7SVBQX01ENX0gXAorICAgIC1ET1BFTkNWX0lDVl9QQVRIPSR7V09SS0RJUn0vaXBwaWN2X2xueCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlMyIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2U0LjEiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIC1ERU5BQkxFX1NTRTQxPTEiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2U0LjIiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIC1ERU5BQkxFX1NTRTQxPTEgLURFTkFCTEVfU1NFNDI9MSIsICIiLCBkKX0gXAorICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjY0IiwgIi1ETElCX1NVRkZJWD02NCIsICIiLCBkKX0gXAorICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAorIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFg4Nj1PTiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMgZWlnZW4ganBlZyBwbmcgdGlmZiB2NGwgbGlidjRsIGdzdHJlYW1lciBzYW1wbGVzIHRiYiBncGhvdG8yIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJndGsiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJsaWJhdiIsICIiLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYW1kYmxhc10gPSAiLURXSVRIX09QRU5DTEFNREJMQVM9T04sLURXSVRIX09QRU5DTEFNREJMQVM9T0ZGLGxpYmNsYW1kYmxhcywiCitQQUNLQUdFQ09ORklHW2FtZGZmdF0gPSAiLURXSVRIX09QRU5DTEFNREZGVD1PTiwtRFdJVEhfT1BFTkNMQU1ERkZUPU9GRixsaWJjbGFtZGZmdCwiCitQQUNLQUdFQ09ORklHW2Rubl0gPSAiLURCVUlMRF9vcGVuY3ZfZG5uPU9OIC1EUFJPVE9CVUZfVVBEQVRFX0ZJTEVTPU9OIC1EQlVJTERfUFJPVE9CVUY9T0ZGLC1EQlVJTERfb3BlbmN2X2Rubj1PRkYscHJvdG9idWYgcHJvdG9idWYtbmF0aXZlLCIKK1BBQ0tBR0VDT05GSUdbZWlnZW5dID0gIi1EV0lUSF9FSUdFTj1PTiwtRFdJVEhfRUlHRU49T0ZGLGxpYmVpZ2VuIGdmbGFncyBnbG9nLCIKK1BBQ0tBR0VDT05GSUdbZnJlZXR5cGVdID0gIi1EQlVJTERfb3BlbmN2X2ZyZWV0eXBlPU9OLC1EQlVJTERfb3BlbmN2X2ZyZWV0eXBlPU9GRixmcmVldHlwZSwiCitQQUNLQUdFQ09ORklHW2dwaG90bzJdID0gIi1EV0lUSF9HUEhPVE8yPU9OLC1EV0lUSF9HUEhPVE8yPU9GRixsaWJncGhvdG8yLCIKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRFdJVEhfR1NUUkVBTUVSPU9OLC1EV0lUSF9HU1RSRUFNRVI9T0ZGLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLCIKK1BBQ0tBR0VDT05GSUdbZ3RrXSA9ICItRFdJVEhfR1RLPU9OLC1EV0lUSF9HVEs9T0ZGLGd0ayszLCIKK1BBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItRFdJVEhfSkFTUEVSPU9OLC1EV0lUSF9KQVNQRVI9T0ZGLGphc3BlciwiCitQQUNLQUdFQ09ORklHW2phdmFdID0gIi1ESkFWQV9JTkNMVURFX1BBVEg9JHtKQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0lOQ0xVREVfUEFUSDI9JHtKQVZBX0hPTUV9L2luY2x1ZGUvbGludXggLURKQVZBX0FXVF9JTkNMVURFX1BBVEg9JHtKQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0FXVF9MSUJSQVJZPSR7SkFWQV9IT01FfS9saWIvYW1kNjQvbGliamF3dC5zbyAtREpBVkFfSlZNX0xJQlJBUlk9JHtKQVZBX0hPTUV9L2xpYi9hbWQ2NC9zZXJ2ZXIvbGlianZtLnNvLCxhbnQtbmF0aXZlIGZhc3RqYXItbmF0aXZlIG9wZW5qZGstOC1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRFdJVEhfSlBFRz1PTiwtRFdJVEhfSlBFRz1PRkYsanBlZywiCitQQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItRFdJVEhfRkZNUEVHPU9OLC1EV0lUSF9GRk1QRUc9T0ZGLGxpYmF2LCIKK1BBQ0tBR0VDT05GSUdbbGlidjRsXSA9ICItRFdJVEhfTElCVjRMPU9OLC1EV0lUSF9MSUJWNEw9T0ZGLHY0bC11dGlscywiCitQQUNLQUdFQ09ORklHW29wZW5jbF0gPSAiLURXSVRIX09QRU5DTD1PTiwtRFdJVEhfT1BFTkNMPU9GRixvcGVuY2wtaGVhZGVycyB2aXJ0dWFsL29wZW5jbC1pY2QsIgorUEFDS0FHRUNPTkZJR1tvcmFjbGUtamF2YV0gPSAiLURKQVZBX0lOQ0xVREVfUEFUSD0ke09SQUNMRV9KQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0lOQ0xVREVfUEFUSDI9JHtPUkFDTEVfSkFWQV9IT01FfS9pbmNsdWRlL2xpbnV4IC1ESkFWQV9BV1RfSU5DTFVERV9QQVRIPSR7T1JBQ0xFX0pBVkFfSE9NRX0vaW5jbHVkZSAtREpBVkFfQVdUX0xJQlJBUlk9JHtPUkFDTEVfSkFWQV9IT01FfS9saWIvYW1kNjQvbGliamF3dC5zbyAtREpBVkFfSlZNX0xJQlJBUlk9JHtPUkFDTEVfSkFWQV9IT01FfS9saWIvYW1kNjQvc2VydmVyL2xpYmp2bS5zbywsYW50LW5hdGl2ZSBvcmFjbGUtanNlLWpkayBvcmFjbGUtanNlLWpkay1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi1EV0lUSF9QTkc9T04sLURXSVRIX1BORz1PRkYsbGlicG5nLCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLURQWVRIT04yX05VTVBZX0lOQ0xVREVfRElSUzpQQVRIPSR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUsLHB5dGhvbi1udW1weSwiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi1EUFlUSE9OM19OVU1QWV9JTkNMVURFX0RJUlM6UEFUSD0ke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvbnVtcHkvY29yZS9pbmNsdWRlLCxweXRob24zLW51bXB5LCIKK1BBQ0tBR0VDT05GSUdbc2FtcGxlc10gPSAiLURCVUlMRF9FWEFNUExFUz1PTiAtRElOU1RBTExfUFlUSE9OX0VYQU1QTEVTPU9OLC1EQlVJTERfRVhBTVBMRVM9T0ZGLCwiCitQQUNLQUdFQ09ORklHW3RiYl0gPSAiLURXSVRIX1RCQj1PTiwtRFdJVEhfVEJCPU9GRix0YmIsIgorUEFDS0FHRUNPTkZJR1t0ZXh0XSA9ICItREJVSUxEX29wZW5jdl90ZXh0PU9OLC1EQlVJTERfb3BlbmN2X3RleHQ9T0ZGLHRlc3NlcmFjdCwiCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi1EV0lUSF9USUZGPU9OLC1EV0lUSF9USUZGPU9GRix0aWZmLCIKK1BBQ0tBR0VDT05GSUdbdjRsXSA9ICItRFdJVEhfVjRMPU9OLC1EV0lUSF9WNEw9T0ZGLHY0bC11dGlscywiCisKK2luaGVyaXQgcGtnY29uZmlnIGNtYWtlCisKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9Citpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnZGlzdHV0aWxzLWJhc2UnLCAnJywgZCl9CisKK2V4cG9ydCBQWVRIT05fQ1NQRUM9Ii1JJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKK2V4cG9ydCBQWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMnLCAncHl0aG9uJywgZCl9IgorZXhwb3J0IE9SQUNMRV9KQVZBX0hPTUU9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IvYmluL2phdmEiCitleHBvcnQgSkFWQV9IT01FPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2xpYi9qdm0vb3Blbmpkay04LW5hdGl2ZSIKK2V4cG9ydCBBTlRfRElSPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL3NoYXJlL2FudC8iCisKK1RBUkdFVF9DQ19BUkNIICs9ICItSSR7U30vaW5jbHVkZSAiCisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzYW1wbGVzJywgJyR7UE59LXNhbXBsZXMnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdvcmFjbGUtamF2YScsICcke1BOfS1qYXZhJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnamF2YScsICcke1BOfS1qYXZhJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24tJHtCUE59JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLSR7QlBOfScsICcnLCBkKX0gXAorICAgICR7UE59LWFwcHMiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBjdl9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYiVzLWRldicsICdPcGVuQ1YgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicsIGFsbG93X2xpbmtzPVRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLmxhJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5hJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPcGVuQ1YgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCisKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgbWV0YXBrZyA9ICBwbiArICctZGV2JworICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQorICAgIGJsYWNrbGlzdCA9IFsgbWV0YXBrZyBdCisgICAgbWV0YXBrZ19yZGVwZW5kcyA9IFsgXQorICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIGZvciBwa2cgaW4gcGFja2FnZXNbMTpdOgorICAgICAgICBpZiBub3QgcGtnIGluIGJsYWNrbGlzdCBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBwa2cuZW5kc3dpdGgoJy1kZXYnKToKKyAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKKyAgICBkLnNldFZhcignUlJFQ09NTUVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQorCisgICAgbWV0YXBrZyA9ICBwbgorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQorICAgIGJsYWNrbGlzdCA9IFsgbWV0YXBrZywgImxpYm9wZW5jdi10cyIgXQorICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbIF0KKyAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKKyAgICAgICAgaWYgbm90IHBrZyBpbiBibGFja2xpc3QgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRldicpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGJnJykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kb2MnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWxvY2FsZScpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctc3RhdGljZGV2Jyk6CisgICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCisgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKK30KKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9wZW5jdi0uKiIKKworRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2RhdGFkaXJ9L09wZW5DVi9qYXZhLy5kZWJ1Zy8qICR7ZGF0YWRpcn0vT3BlbkNWL3NhbXBsZXMvYmluLy5kZWJ1Zy8qIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L3BrZ2NvbmZpZyAke2RhdGFkaXJ9L09wZW5DVi8qLmNtYWtlIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2RhdGFkaXJ9L09wZW5DVi8zcmRwYXJ0eS9saWIvKi5hIgorRklMRVNfJHtQTn0tYXBwcyA9ICIke2JpbmRpcn0vKiAke2RhdGFkaXJ9L09wZW5DViIKK0ZJTEVTXyR7UE59LWphdmEgPSAiJHtkYXRhZGlyfS9PcGVuQ1YvamF2YSIKK0ZJTEVTXyR7UE59LXNhbXBsZXMgPSAiJHtkYXRhZGlyfS9PcGVuQ1Yvc2FtcGxlcy8iCisKK0lOU0FORV9TS0lQXyR7UE59LWphdmEgPSAibGliZGlyIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImxpYmRpciIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworU1VNTUFSWV9weXRob24tb3BlbmN2ID0gIlB5dGhvbiBiaW5kaW5ncyB0byBvcGVuY3YiCitGSUxFU19weXRob24tb3BlbmN2ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitSREVQRU5EU19weXRob24tb3BlbmN2ID0gInB5dGhvbi1jb3JlIHB5dGhvbi1udW1weSIKKworU1VNTUFSWV9weXRob24zLW9wZW5jdiA9ICJQeXRob24gYmluZGluZ3MgdG8gb3BlbmN2IgorRklMRVNfcHl0aG9uMy1vcGVuY3YgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK1JERVBFTkRTX3B5dGhvbjMtb3BlbmN2ID0gInB5dGhvbjMtY29yZSBweXRob24zLW51bXB5IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBjcCAke1N9L2luY2x1ZGUvb3BlbmN2LyouaCAke0R9JHtpbmNsdWRlZGlyfS9vcGVuY3YvCisgICAgc2VkIC1pICcvYmxvYnRyYWNrL2QnICR7RH0ke2luY2x1ZGVkaXJ9L29wZW5jdi9jdmF1eC5oCisKKyAgICAjIE1vdmUgUHl0aG9uIGZpbGVzIGludG8gY29ycmVjdCBsaWJyYXJ5IGZvbGRlciAoZm9yIG11bHRpbGliIGJ1aWxkKQorICAgIGlmIFsgIiRsaWJkaXIiICE9ICIvdXNyL2xpYiIgLWEgLWQgJHtEfS91c3IvbGliIF07IHRoZW4KKyAgICAgICAgbXYgJHtEfS91c3IvbGliLyogJHtEfS8ke2xpYmRpcn0vCisgICAgICAgIHJtIC1yZiAke0R9L3Vzci9saWIKKyAgICBmaQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoIlBBQ0tBR0VDT05GSUciLCAic2FtcGxlcyIsICJ0cnVlIiwgImZhbHNlIiwgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vT3BlbkNWL3NhbXBsZXMvYmluLworICAgICAgICBjcCAtZiBiaW4vKi10dXRvcmlhbC0qIGJpbi8qLWV4YW1wbGUtKiAke0R9JHtkYXRhZGlyfS9PcGVuQ1Yvc2FtcGxlcy9iaW4vCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzFjNTMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1BZGQgTERGTEFHUyB2YXJpYWJsZSB0byBNYWtlZmlsZS5hbSwgbWFrZSBzdXJlIHRoZSBleHRyYSBsaW5rZXIgZmxhZ3MgY2FuIGJlIHBhc3NlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3N3aWcvcGVybC9NYWtlZmlsZS5hbSBiL3N3aWcvcGVybC9NYWtlZmlsZS5hbQotaW5kZXggMmY5ZWU0Yy4uM2ExODg5MiAxMDA2NDQKLS0tLSBhL3N3aWcvcGVybC9NYWtlZmlsZS5hbQotKysrIGIvc3dpZy9wZXJsL01ha2VmaWxlLmFtCi1AQCAtMjAsNyArMjAsNyBAQCBPcGVuSVBNSV9TUkMgPSBPcGVuSVBNSV9wZXJsLmMKLSBPcGVuSVBNSV9PQkogPSBPcGVuSVBNSV93cmFwLmxvIE9wZW5JUE1JX3BlcmwubG8KLSAKLSBPcGVuSVBNSS5zbzogJChPcGVuSVBNSV9PQkopCi0tCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgLXNoYXJlZCAtbW9kdWxlIC1hdm9pZC12ZXJzaW9uIC1vICQoQDouc289LmxhKSAkXiAkKE9QRU5JUE1JX1NXSUdfTElCUykgJChQRVJMX1BPU0lYX0xJQikgLXJwYXRoICQoUEVSTF9JTlNUQUxMX0RJUikvYXV0by9PcGVuSVBNSQotKwkkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpIC1zaGFyZWQgLW1vZHVsZSAtYXZvaWQtdmVyc2lvbiAkKExERkxBR1MpIC1vICQoQDouc289LmxhKSAkXiAkKE9QRU5JUE1JX1NXSUdfTElCUykgJChQRVJMX1BPU0lYX0xJQikgLXJwYXRoICQoUEVSTF9JTlNUQUxMX0RJUikvYXV0by9PcGVuSVBNSQotIAlybSAtZiBPcGVuSVBNSS5zbwotIAltdiAubGlicy9PcGVuSVBNSS5zbyAuCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLWRvbi10LXJtLS5saWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1kb24tdC1ybS0ubGlicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUzYzY2MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pLWRvbi10LXJtLS5saWJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBiYmQ1MWNmMDEwYzgwMzIyMDM0ZjcwOTRlMmM2YTY1NmFhMWYxN2E3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDEzIEZlYiAyMDE1IDA2OjU1OjMzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG9wZW5pcG1pOiBkb24ndCBybSAubGlicwotCi1Eb24ndCByZW1vdmUgLmxpYnMgYWZ0ZXIgT3BlbklQTUkuc28gZ2VuZXJhdGVkLCB0aGlzIG1heSBjYXVzZQotZHVtbXlzdHVmZi5zbyBmYWlscyB0byBsaW5rIGZyb20gdGhlIHNlY29uZCBidWlsZCB3aXRoIGVycm9yOgotCi0qIGVycm9yOiAubGlicy9kdW1teXN0dWZmLm86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3dpZy9wZXJsL01ha2VmaWxlLmFtIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3N3aWcvcGVybC9NYWtlZmlsZS5hbSBiL3N3aWcvcGVybC9NYWtlZmlsZS5hbQotaW5kZXggMTJhMjgyYy4uMmY5ZWU0YyAxMDA2NDQKLS0tLSBhL3N3aWcvcGVybC9NYWtlZmlsZS5hbQotKysrIGIvc3dpZy9wZXJsL01ha2VmaWxlLmFtCi1AQCAtMjMsNyArMjMsNiBAQCBPcGVuSVBNSS5zbzogJChPcGVuSVBNSV9PQkopCi0gCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgLXNoYXJlZCAtbW9kdWxlIC1hdm9pZC12ZXJzaW9uIC1vICQoQDouc289LmxhKSAkXiAkKE9QRU5JUE1JX1NXSUdfTElCUykgJChQRVJMX1BPU0lYX0xJQikgLXJwYXRoICQoUEVSTF9JTlNUQUxMX0RJUikvYXV0by9PcGVuSVBNSQotIAlybSAtZiBPcGVuSVBNSS5zbwotIAltdiAubGlicy9PcGVuSVBNSS5zbyAuCi0tCXJtIC1yZiAubGlicwotIAotIGR1bW15c3R1ZmYubG86IGR1bW15c3R1ZmYuYwotIAkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgLWMgJDwKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1yZW1vdmUtaG9zdC1wYXRoLWZyb20tbGFfTERGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvb3BlbmlwbWktcmVtb3ZlLWhvc3QtcGF0aC1mcm9tLWxhX0xERkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmMTYyMzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaS1yZW1vdmUtaG9zdC1wYXRoLWZyb20tbGFfTERGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gYWEwZGMwNzgzYTZmZjVmYjU2YzkxNGI2NDA4MzYyMjNlM2MxOTJiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDI5IERlYyAyMDE0IDE4OjE2OjA0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBob3N0IHBhdGggZnJvbSBsYV9MREZMQUdTCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIGNyb3NzIGNvbXBpbGUgc3BlY2lmaWMgXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY21kbGFuZy9NYWtlZmlsZS5hbSB8ICAgIDIgKy0KLSBnbGliL01ha2VmaWxlLmFtICAgIHwgICAgNCArKy0tCi0gdGNsL01ha2VmaWxlLmFtICAgICB8ICAgIDIgKy0KLSB1bml4L01ha2VmaWxlLmFtICAgIHwgICAgNCArKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbWRsYW5nL01ha2VmaWxlLmFtIGIvY21kbGFuZy9NYWtlZmlsZS5hbQotaW5kZXggMDBjM2QyYi4uMGZhODVkNyAxMDA2NDQKLS0tLSBhL2NtZGxhbmcvTWFrZWZpbGUuYW0KLSsrKyBiL2NtZGxhbmcvTWFrZWZpbGUuYW0KLUBAIC0xNiw3ICsxNiw3IEBAIGxpYk9wZW5JUE1JY21kbGFuZ19sYV9MSUJBREQgPSAtbG0gXAotIAkkKHRvcF9idWlsZGRpcikvdXRpbHMvbGliT3BlbklQTUl1dGlscy5sYSBcCi0gCSQodG9wX2J1aWxkZGlyKS9saWIvbGliT3BlbklQTUkubGEKLSBsaWJPcGVuSVBNSWNtZGxhbmdfbGFfTERGTEFHUyA9IC1yZHluYW1pYyAtdmVyc2lvbi1pbmZvICQoTERfVkVSU0lPTikgXAotLQktV2wsLU1hcCAtV2wsbGliT3BlbklQTUljbWRsYW5nLm1hcCAtTCQobGliZGlyKQotKwktV2wsLU1hcCAtV2wsbGliT3BlbklQTUljbWRsYW5nLm1hcAotIAotIGJpbl9QUk9HUkFNUyA9IG9wZW5pcG1pc2gKLSAKLWRpZmYgLS1naXQgYS9nbGliL01ha2VmaWxlLmFtIGIvZ2xpYi9NYWtlZmlsZS5hbQotaW5kZXggNjcxY2FlMi4uZWZmNTVmMyAxMDA2NDQKLS0tLSBhL2dsaWIvTWFrZWZpbGUuYW0KLSsrKyBiL2dsaWIvTWFrZWZpbGUuYW0KLUBAIC0xMSwxNCArMTEsMTQgQEAgbGliT3BlbklQTUlnbGliX2xhX1NPVVJDRVMgPSBnbGliX29zX2huZC5jCi0gbGliT3BlbklQTUlnbGliX2xhX0NGTEFHUyA9ICQoR0xJQl9DRkxBR1MpICQoQU1fQ0ZMQUdTKQotIGxpYk9wZW5JUE1JZ2xpYl9sYV9MSUJBREQgPSAkKEdEQk1fTElCKQotIGxpYk9wZW5JUE1JZ2xpYl9sYV9MREZMQUdTID0gLXJkeW5hbWljIC12ZXJzaW9uLWluZm8gJChMRF9WRVJTSU9OKSBcCi0tCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSWdsaWIubWFwICQoR0xJQl9MSUJTKSAtTCQobGliZGlyKSBcCi0rCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSWdsaWIubWFwICQoR0xJQl9MSUJTKSBcCi0gCS1ycGF0aCAkKGxpYmRpcikKLSAKLSBsaWJPcGVuSVBNSWdsaWIxMl9sYV9TT1VSQ0VTID0gZ2xpYl9vc19obmQuYwotIGxpYk9wZW5JUE1JZ2xpYjEyX2xhX0NGTEFHUyA9ICQoR0xJQjEyX0NGTEFHUykgJChBTV9DRkxBR1MpCi0gbGliT3BlbklQTUlnbGliMTJfbGFfTElCQUREID0gJChHREJNX0xJQikKLSBsaWJPcGVuSVBNSWdsaWIxMl9sYV9MREZMQUdTID0gLXJkeW5hbWljIC12ZXJzaW9uLWluZm8gJChMRF9WRVJTSU9OKSBcCi0tCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSWdsaWIxMi5tYXAgJChHTElCMTJfTElCUykgLUwkKGxpYmRpcikgXAotKwktV2wsLU1hcCAtV2wsbGliT3BlbklQTUlnbGliMTIubWFwICQoR0xJQjEyX0xJQlMpIFwKLSAJLXJwYXRoICQobGliZGlyKQotIAotIENMRUFORklMRVMgPSBsaWJPcGVuSVBNSWdsaWIubWFwIGxpYk9wZW5JUE1JZ2xpYjEyLm1hcAotZGlmZiAtLWdpdCBhL3RjbC9NYWtlZmlsZS5hbSBiL3RjbC9NYWtlZmlsZS5hbQotaW5kZXggYjcwMjgxOS4uMjgyNjE5YyAxMDA2NDQKLS0tLSBhL3RjbC9NYWtlZmlsZS5hbQotKysrIGIvdGNsL01ha2VmaWxlLmFtCi1AQCAtMTEsNyArMTEsNyBAQCBsaWJPcGVuSVBNSXRjbF9sYV9TT1VSQ0VTID0gdGNsX29zX2huZC5jCi0gbGliT3BlbklQTUl0Y2xfbGFfQ0ZMQUdTID0gJChUQ0xfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKLSBsaWJPcGVuSVBNSXRjbF9sYV9MSUJBREQgPSAkKEdEQk1fTElCKQotIGxpYk9wZW5JUE1JdGNsX2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pIFwKLS0JLVdsLC1NYXAgLVdsLGxpYk9wZW5JUE1JdGNsLm1hcCAkKFRDTF9MSUJTKSAtTCQobGliZGlyKSBcCi0rCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSXRjbC5tYXAgJChUQ0xfTElCUykgXAotIAktcnBhdGggJChsaWJkaXIpCi0gCi0gbm9pbnN0X1BST0dSQU1TID0gdGVzdF9oYW5kbGVycwotZGlmZiAtLWdpdCBhL3VuaXgvTWFrZWZpbGUuYW0gYi91bml4L01ha2VmaWxlLmFtCi1pbmRleCBhNzkyMTQ3Li5hMTA4YmM2IDEwMDY0NAotLS0tIGEvdW5peC9NYWtlZmlsZS5hbQotKysrIGIvdW5peC9NYWtlZmlsZS5hbQotQEAgLTExLDEzICsxMSwxMyBAQCBsaWJPcGVuSVBNSXB0aHJlYWRfbGFfU09VUkNFUyA9IHBvc2l4X3RocmVhZF9vc19obmQuYyBzZWxlY3Rvci5jCi0gbGliT3BlbklQTUlwdGhyZWFkX2xhX0xJQkFERCA9IC1scHRocmVhZCAkKEdEQk1fTElCKSBcCi0gCSQodG9wX2J1aWxkZGlyKS91dGlscy9saWJPcGVuSVBNSXV0aWxzLmxhCi0gbGliT3BlbklQTUlwdGhyZWFkX2xhX0xERkxBR1MgPSAtcmR5bmFtaWMgLXZlcnNpb24taW5mbyAkKExEX1ZFUlNJT04pIFwKLS0JLVdsLC1NYXAgLVdsLGxpYk9wZW5JUE1JcHRocmVhZC5tYXAgLUwkKGxpYmRpcikKLSsJLVdsLC1NYXAgLVdsLGxpYk9wZW5JUE1JcHRocmVhZC5tYXAKLSAKLSBsaWJPcGVuSVBNSXBvc2l4X2xhX1NPVVJDRVMgPSBwb3NpeF9vc19obmQuYyBzZWxlY3Rvci5jCi0gbGliT3BlbklQTUlwb3NpeF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvdXRpbHMvbGliT3BlbklQTUl1dGlscy5sYSBcCi0gCSQoR0RCTV9MSUIpCi0gbGliT3BlbklQTUlwb3NpeF9sYV9MREZMQUdTID0gLXJkeW5hbWljIC12ZXJzaW9uLWluZm8gJChMRF9WRVJTSU9OKSBcCi0tCS1XbCwtTWFwIC1XbCxsaWJPcGVuSVBNSXBvc2l4Lm1hcCAtTCQobGliZGlyKQotKwktV2wsLU1hcCAtV2wsbGliT3BlbklQTUlwb3NpeC5tYXAKLSAKLSBub2luc3RfSEVBREVSUyA9IGhlYXAuaAotIAotLS0gCi0xLjcuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjRiMGZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLVNVTU1BUlkgPSAiSVBNSSAoSW50ZWxsaWdlbnQgUGxhdGZvcm0gTWFuYWdlbWVudCBJbnRlcmZhY2UpIGxpYnJhcnkgYW5kIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiT3BlbklQTUkgaXMgYW4gZWZmb3J0IHRvIGNyZWF0ZSBhIGZ1bGwtZnVuY3Rpb24gSVBNSSBzeXN0ZW0sIFwKLXRvIGFsbG93IGZ1bGwgYWNjZXNzIHRvIGFsbCBJUE1JIGluZm9ybWF0aW9uIG9uIGEgc2VydmVyIFwKLWFuZCB0byBhYnN0cmFjdCBpdCB0byBhIGxldmVsIHRoYXQgd2lsbCBtYWtlIGl0IGVhc3kgdG8gdXNlIgotCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbmlwbWkuc291cmNlZm9yZ2UubmV0IgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2xpYi0yLjAgXAotICAgIG5jdXJzZXMgXAotICAgIG5ldC1zbm1wIFwKLSAgICBvcGVuc3NsIFwKLSAgICBwb3B0IFwKLSAgICBweXRob24gXAotICAgIHN3aWctbmF0aXZlIFwKLSAgICAiCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSAmIEJTRCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuQlNEO21kNT00YjMxOGQ0MTYwZWI2OWM4ZWU1MzQ1MmZlYjFiNGNkZiBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vb3BlbmlwbWkvT3BlbklQTUktJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zeW1saW5rLWluc3RhbGwtZXJyb3ItaW4tY21kbGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1uby1vcGVuaXBtaWd1aS1tYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktcmVtb3ZlLWhvc3QtcGF0aC1mcm9tLWxhX0xERkxBR1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktZG9uLXQtcm0tLmxpYnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaXBtaS1pbml0LWZpeC10aGUtYXJndW1lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RvLW5vdC1pbnN0YWxsLXB5Yy1hbmQtcHlvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfc3lzX3R5cGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLWhlbHBlciBcCi0gICAgICAgICAgIGZpbGU6Ly9pcG1pLnNlcnZpY2UgXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5YTRlMWY2YmIwNzMzNzljNDk0ODM5MjAxZWExMGFlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OTg4OTAwMDQzYzM1ZmNmYTliMmJmMjc1ZDY1OTM5MDRmNjQyOTIyMWJlZmI3NzBiYTZlY2I1NTAyMTA4ZTU1IgotCi1TID0gIiR7V09SS0RJUn0vT3BlbklQTUktJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXN0YXRpYyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXBlcmw9JyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsJyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXB5dGhvbj0nJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uJyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXB5dGhvbmluc3RhbGw9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWdsaWJ2ZXI9Mi4wIC0td2l0aC1nbGliMTI9bm8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnZGJtIgotUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICJhY19jdl9oZWFkZXJfZ2RibV9oPXllcyxhY19jdl9oZWFkZXJfZ2RibV9oPW5vLGdkYm0sIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tcGVybCAke1BOfS1weXRob24iCi0KLUZJTEVTXyR7UE59LXBlcmwgPSAiIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL09wZW5JUE1JLnBtIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvT3BlbklQTUkuc28gXAotICAgICIKLQotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL09wZW5JUE1JLy5kZWJ1ZyBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnIFwKLSAgICAiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0KLSAgICAjIExldCdzIHBlcmZvcm0gcmVndWxhciBjb25maWd1cmF0aW9uIGZpcnN0IHRoZW4gaGFuZGxlIHBlcmwgaXNzdWVzLgotICAgIGF1dG90b29sc19kb19jb25maWd1cmUKLQotICAgIHBlcmxfdmVyPWBwZXJsIC1WOnZlcnNpb24gfCBjdXQgLWRcJyAtZiAyYAotICAgIAotICAgICMgRm9yY2Ugb3BlbmlwbWkgcGVybCBiaW5kaW5ncyB0byBiZSBjb21waWxlZCB1c2luZyBwZXJsLW5hdGl2ZSBpbnN0ZWFkIG9mCi0gICAgIyB0aGUgaG9zdCdzIHBlcmwuIFNldCB0aGUgcHJvcGVyIGluc3RhbGwgZGlyZWN0b3J5IGZvciB0aGUgcmVzdWx0aW5nCi0gICAgIyBvcGVuaXBtaS5wbSBhbmQgb3BlbmlwbWkuc28KLSAgICBmb3IgaSBpbiAke1N9L3N3aWcvTWFrZWZpbGUgJHtTfS9zd2lnL3BlcmwvTWFrZWZpbGU7IGRvCi0gICAgICAgIGVjaG8gIlNBTDogaSA9ICRpIgotICAgICAgICBlY2hvICJTQUw6IFNUQUdJTkdfSU5DRElSX05BVElWRSA9ICRTVEFHSU5HX0lOQ0RJUl9OQVRJVkUiCi0gICAgICAgIGVjaG8gIlNBTDogbGliZGlyID0gJGxpYmRpciIKLSAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfQ0ZMQUdTL3M6LUkvdXNyL2xvY2FsL2luY2x1ZGU6LUkke1NUQUdJTkdfSU5DRElSX05BVElWRX06ZyIgJGkKLSAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfSU5TVEFMTF9ESVIvczpeUEVSTF9JTlNUQUxMX0RJUiA9IC4qOlBFUkxfSU5TVEFMTF9ESVIgPSAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8kcGVybF92ZXI6ZyIgJGkKLSAgICBkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBlY2hvICJTQUw6IEQgPSAkRCIKLSAgICBlY2hvICJTQUw6IGxpYmRpciA9ICRsaWJkaXIiCi0gICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pcG1pLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2lwbWkKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pcG1pLnN5c2NvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2lwbWkKLSAgICAjIFNBTDogbXY6IGNhbm5vdCBzdGF0IGAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9vcGVuaXBtaS0yLjAuMTktcjQvaW1hZ2UvdXNyL2xpYjY0L3Blcmw1JzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotICAgICMgU0FMOiByZWFsIHBhdGggdG8gcGVybCBpcyAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9wZXJsLTUuMTQuMi1yOC4zL3BhY2thZ2UvdXNyL2xpYjY0L3Blcmw1IGFuZCBpdCBpcyBhIHN5bWxpbmsgdG8gcGVybCBzbyBubyBuZWVkIHRvIG12LgotICAgIGlmIFsgLWQgJHtEfSR7bGliZGlyfS9wZXJsNSBdCi0gICAgdGhlbgotICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3Blcmw1ICR7RH0ke2xpYmRpcn0vcGVybAotICAgIGZpCi0gCi0gICAgIyBmb3Igc3lzdGVtZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NjQgJHtXT1JLRElSfS9pcG1pLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgInMsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZyIgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vaXBtaS5zZXJ2aWNlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L29wZW5pcG1pLWhlbHBlciAke0R9JHtsaWJleGVjZGlyfQotfQotCi1JTklUU0NSSVBUX05BTUUgPSAiaXBtaSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcG1pLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40NC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWMyMzNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjU1ICswLDAgQEAKLSMgT3BlbkxEQVAsIGEgbGljZW5zZSBmcmVlIChzZWUgaHR0cDovL3d3dy5PcGVuTERBUC5vcmcvbGljZW5zZS5odG1sKQotIwotU1VNTUFSWSA9ICJPcGVuTERBUCBEaXJlY3RvcnkgU2VydmljZSIKLURFU0NSSVBUSU9OID0gIk9wZW5MREFQIFNvZnR3YXJlIGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMaWdodHdlaWdodCBEaXJlY3RvcnkgQWNjZXNzIFByb3RvY29sLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuT3BlbkxEQVAub3JnL2xpY2Vuc2UuaHRtbCIKLSMgVGhlIE9wZW5MREFQIFB1YmxpYyBMaWNlbnNlIC0gc2VlIHRoZSBIT01FUEFHRSAtIGRlZmluZXMKLSMgdGhlIGxpY2Vuc2UuICB3d3cub3BlbmxkYXAub3JnIGNsYWltcyB0aGlzIGlzIE9wZW4gU291cmNlCi0jIChzZWUgaHR0cDovL3d3dy5vcGVubGRhcC5vcmcpLCB0aGUgbGljZW5zZSBhcHBlYXJzIHRvIGJlCi0jIGJhc2ljYWxseSBCU0QuICBvcGVuc291cmNlLm9yZyBkb2VzIG5vdCByZWNvcmQgdGhpcyBsaWNlbnNlCi0jIGF0IHByZXNlbnQgKHNvIGl0IGlzIGFwcGFyZW50bHkgbm90IE9TSSBjZXJ0aWZpZWQpLgotTElDRU5TRSA9ICJPcGVuTERBUCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9YzkzM2ZiYTZkODlmZGE4OWY1OGRmMWUwODZlM2YyZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9MTUzZDA3ZWYwNTJjNGEzN2E4ZmFjMjNiYzYwMzE5NzIgXAotIgotU0VDVElPTiA9ICJsaWJzIgotCi1MREFQX1ZFUiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAub3BlbmxkYXAub3JnL3B1Yi9PcGVuTERBUC9vcGVubGRhcC1yZWxlYXNlLyR7QlB9LnRneiBcCi0gICAgZmlsZTovL29wZW5sZGFwLW00LXB0aHJlYWQucGF0Y2ggXAotICAgIGZpbGU6Ly9raWxsLWljdS5wYXRjaCBcCi0gICAgZmlsZTovL29wZW5sZGFwLTIuNC4yOC1nbnV0bHMtZ2NyeXB0LnBhdGNoIFwKLSAgICBmaWxlOi8vdXNlLXVyYW5kb20ucGF0Y2ggXAotICAgIGZpbGU6Ly9pbml0c2NyaXB0IFwKLSAgICBmaWxlOi8vc2xhcGQuc2VydmljZSBcCi0gICAgZmlsZTovL3RocmVhZF9zdHViLnBhdGNoIFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtQ1ZFLTIwMTUtMzI3Ni5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2OTNhYzI2ZGU4NjIzMWY4ZGNhZTJiNGU5ZDc2OGU1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkN2RlNmJmM2M2NzAwOWM5NTUyNWRkZTNhMDIxMmNjMTEwZDBhNzBiOTJhZjJhZjhlM2VlODAwZTgxYjg4NDAwIgotCi1ERVBFTkRTID0gInV0aWwtbGludXggZ3JvZmYtbmF0aXZlIgotCi0jIFRoZSBvcmlnaW5hbCB0b3AubWsgdXNlZCBJTlNUQUxMLCBub3QgSU5TVEFMTF9TVFJJUF9QUk9HUkFNIHdoZW4KLSMgaW5zdGFsbGluZyAuc28gYW5kIGV4ZWN1dGFibGVzLCB0aGlzIGZhaWxzIGluIGNyb3NzIGNvbXBpbGF0aW9uCi0jIGVudmlyb25tZW50cwotU1JDX1VSSSArPSAiZmlsZTovL2luc3RhbGwtc3RyaXAucGF0Y2giCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLSMgQ1YgU0VUVElOR1MKLSMgUmVxdWlyZWQgdG8gd29yayByb3VuZCBBQ19GVU5DX01FTUNNUCB3aGljaCBnZXRzIHRoZSB3cm9uZyBhbnN3ZXIKLSMgd2hlbiBjcm9zcyBjb21waWxpbmcgKHNob3VsZCBiZSBpbiBzaXRlPykKLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz15ZXMiCi0KLSMgQ09ORklHIERFRklOSVRJT05TCi0jIFRoZSBmb2xsb3dpbmcgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgY2Fubm90IGJlIGRldGVybWluZWQgZm9yIGEKLSMgY3Jvc3MgY29tcGlsZSBhdXRvbWFnaWNhbGx5LiAgU2VsZWN0IHNob3VsZCB5aWVsZCBmaW5lIG9uIGFsbCBPRQotIyBzeXN0ZW1zLi4uCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC15aWVsZGluZy1zZWxlY3Q9eWVzIgotIyBTaGFyZWQgbGlicmFyaWVzIGFyZSBuaWNlLi4uCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWR5bmFtaWMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMgbW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgICAgbWRiIGxkYXAgbWV0YSBtb25pdG9yIG51bGwgcGFzc3dkIHNoZWxsIHByb3h5Y2FjaGUgZG5zc3J2IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLSMtLXdpdGgtdGxzICAgICAgICAgICAgICB3aXRoIFRMUy9TU0wgc3VwcG9ydCBhdXRvfG9wZW5zc2x8Z251dGxzIFthdXRvXQotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC10bHM9Z251dGxzLCxnbnV0bHMgbGliZ2NyeXB0IgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtdGxzPW9wZW5zc2wsLG9wZW5zc2wiCi0KLVBBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLWN5cnVzLXNhc2wsLS13aXRob3V0LWN5cnVzLXNhc2wsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbbW9kdWxlc10gPSAibHRfY3ZfZGxvcGVuX3NlbGY9eWVzIC0tZW5hYmxlLW1vZHVsZXMsLS1kaXNhYmxlLW1vZHVsZXMsbGlidG9vbCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKLQotIyBTTEFQRCBvcHRpb25zCi0jCi0jIFVOSVggY3J5cHQoMykgcGFzc3dkIHN1cHBvcnQ6Ci1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWNyeXB0IgotCi0jIFNMQVBEIEJBQ0tFTkQKLSMKLSMgVGhlIGJhY2tlbmQgbXVzdCBiZSBzZXQgYnkgdGhlIGNvbmZpZ3VyYXRpb24uICBUaGlzIGNvbnRyb2xzIHRoZQotIyByZXF1aXJlZCBkYXRhYmFzZS4KLSMKLSMgQmFja2VuZHM9ImJkYiBkbnNzcnYgaGRiIGxkYXAgbWRiIG1ldGEgbW9uaXRvciBuZGIgbnVsbCBwYXNzd2QgcGVybCByZWxheSBzaGVsbCBzb2NrIHNxbCIKLSMKLSMgTm90ZSB0aGF0IG11bHRpcGxlIGJhY2tlbmRzIGNhbiBiZSBidWlsdC4gIFRoZSBsZGJtIGJhY2tlbmQgcmVxdWlyZXMgYQotIyBidWlsZC10aW1lIGNob2ljZSBvZiBkYXRhYmFzZSBBUEkuICBUaGUgYmRiIGJhY2tlbmQgZm9yY2VzIHRoaXMgdG8gYmUKLSMgREI0LiAgVG8gdXNlIHRoZSBnZGJtIChvciBvdGhlcikgQVBJIHRoZSBCZXJrZWx5IGRhdGFiYXNlIG1vZHVsZSBtdXN0Ci0jIGJlIHJlbW92ZWQgZnJvbSB0aGUgYnVpbGQuCi1tZCA9ICIke2xpYmV4ZWNkaXJ9L29wZW5sZGFwIgotIwotIy0tZW5hYmxlLWJkYiAgICAgICAgICBlbmFibGUgQmVya2VsZXkgREIgYmFja2VuZCBub3x5ZXN8bW9kIHllcwotIyBUaGUgQmVya2VseSBEQiBpcyB0aGUgc3RhbmRhcmQgY2hvaWNlLiAgVGhpcyB2ZXJzaW9uIG9mIE9wZW5MREFQIHJlcXVpcmVzCi0jIHRoZSB2ZXJzaW9uIDQgaW1wbGVtZW50YXRpb24gb3IgYmV0dGVyLgotUEFDS0FHRUNPTkZJR1tiZGJdID0gIi0tZW5hYmxlLWJkYj15ZXMsLS1lbmFibGUtYmRiPW5vLGRiIgotCi0jLS1lbmFibGUtZG5zc3J2ICAgICAgIGVuYWJsZSBkbnNzcnYgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW2Ruc3Nydl0gPSAiLS1lbmFibGUtZG5zc3J2PW1vZCwtLWVuYWJsZS1kbnNzcnY9bm8iCi0KLSMtLWVuYWJsZS1oZGIgICAgICAgICAgZW5hYmxlIEhpZXJhcmNoaWNhbCBEQiBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbaGRiXSA9ICItLWVuYWJsZS1oZGI9eWVzLC0tZW5hYmxlLWhkYj1ubyxkYiIKLQotIy0tZW5hYmxlLWxkYXAgICAgICAgICBlbmFibGUgbGRhcCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcD1tb2QsLS1lbmFibGUtbGRhcD1ubywiCi0KLSMtLWVuYWJsZS1tZGIgICAgICAgICAgZW5hYmxlIG1kYiBkYXRhYmFzZSBiYWNrZW5kIG5vfHllc3xtb2QgW3llc10KLVBBQ0tBR0VDT05GSUdbbWRiXSA9ICItLWVuYWJsZS1tZGI9eWVzLC0tZW5hYmxlLW1kYj1ubywiCi0KLSMtLWVuYWJsZS1tZXRhICAgICAgICAgZW5hYmxlIG1ldGFkaXJlY3RvcnkgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW21ldGFdID0gIi0tZW5hYmxlLW1ldGE9bW9kLC0tZW5hYmxlLW1ldGE9bm8sIgotCi0jLS1lbmFibGUtbW9uaXRvciAgICAgIGVuYWJsZSBtb25pdG9yIGJhY2tlbmQgbm98eWVzfG1vZCB5ZXMKLVBBQ0tBR0VDT05GSUdbbW9uaXRvcl0gPSAiLS1lbmFibGUtbW9uaXRvcj1tb2QsLS1lbmFibGUtbW9uaXRvcj1ubywiCi0KLSMtLWVuYWJsZS1uZGIgICAgICAgICAgZW5hYmxlIE15U1FMIE5EQiBDbHVzdGVyIGJhY2tlbmQgbm98eWVzfG1vZCBbbm9dCi1QQUNLQUdFQ09ORklHW25kYl0gPSAiLS1lbmFibGUtbmRiPW1vZCwtLWVuYWJsZS1uZGI9bm8sIgotCi0jLS1lbmFibGUtbnVsbCAgICAgICAgIGVuYWJsZSBudWxsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1tudWxsXSA9ICItLWVuYWJsZS1udWxsPW1vZCwtLWVuYWJsZS1udWxsPW5vLCIKLQotIy0tZW5hYmxlLXBhc3N3ZCAgICAgICBlbmFibGUgcGFzc3dkIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1twYXNzd2RdID0gIi0tZW5hYmxlLXBhc3N3ZD1tb2QsLS1lbmFibGUtcGFzc3dkPW5vLCIKLQotIy0tZW5hYmxlLXBlcmwgICAgICAgICBlbmFibGUgcGVybCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLSMgIFRoaXMgcmVxdWlyZXMgYSBsb2FkYWJsZSBwZXJsIGR5bmFtaWMgbGlicmFyeSwgaWYgZW5hYmxlZCB3aXRob3V0Ci0jICBkb2luZyBzb21ldGhpbmcgYXBwcm9wcmlhdGUgKGJ1aWxkaW5nIHBlcmw/KSB0aGUgYnVpbGQgd2lsbCBwaWNrCi0jICB1cCB0aGUgYnVpbGQgbWFjaGluZSBwZXJsIC0gbm90IGdvb2QgKGluaGVyaXQgcGVybG5hdGl2ZT8pCi1QQUNLQUdFQ09ORklHW3BlcmxdID0gIi0tZW5hYmxlLXBlcmw9bW9kLC0tZW5hYmxlLXBlcmw9bm8scGVybCIKLQotIy0tZW5hYmxlLXJlbGF5ICAgICAgICBlbmFibGUgcmVsYXkgYmFja2VuZCBub3x5ZXN8bW9kIFt5ZXNdCi1QQUNLQUdFQ09ORklHW3JlbGF5XSA9ICItLWVuYWJsZS1yZWxheT1tb2QsLS1lbmFibGUtcmVsYXk9bm8sIgotCi0jLS1lbmFibGUtc2hlbGwgICAgICAgIGVuYWJsZSBzaGVsbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLSMgY29uZmlndXJlOiBXQVJOSU5HOiBVc2Ugb2YgLS13aXRob3V0LXRocmVhZHMgaXMgcmVjb21tZW5kZWQgd2l0aCBiYWNrLXNoZWxsCi1QQUNLQUdFQ09ORklHW3NoZWxsXSA9ICItLWVuYWJsZS1zaGVsbD1tb2QgLS13aXRob3V0LXRocmVhZHMsLS1lbmFibGUtc2hlbGw9bm8sIgotCi0jLS1lbmFibGUtc29jayAgICAgICAgIGVuYWJsZSBzb2NrIGJhY2tlbmQgbm98eWVzfG1vZCBbbm9dCi1QQUNLQUdFQ09ORklHW3NvY2tdID0gIi0tZW5hYmxlLXNvY2s9bW9kLC0tZW5hYmxlLXNvY2s9bm8sIgotCi0jLS1lbmFibGUtc3FsICAgICAgICAgIGVuYWJsZSBzcWwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi0jIHNxbCByZXF1aXJlcyBzb21lIHNxbCBiYWNrZW5kIHdoaWNoIHByb3ZpZGVzIHNxbC5oLCBzcWxpdGUqIHByb3ZpZGVzCi0jIHNxbGl0ZS5oICh3aGljaCBtYXkgYmUgY29tcGF0aWJsZSBidXQgaGFzbid0IGJlZW4gdHJpZWQuKQotUEFDS0FHRUNPTkZJR1tzcWxdID0gIi0tZW5hYmxlLXNxbD1tb2QsLS1lbmFibGUtc3FsPW5vLHNxbGl0ZTMiCi0KLSMtLWVuYWJsZS1keW5ncm91cCAgICAgRHluYW1pYyBHcm91cCBvdmVybGF5IG5vfHllc3xtb2Qgbm8KLSMgIFRoaXMgaXMgYSBkZW1vLCBQcm94eSBDYWNoZSBkZWZpbmVzIGluaXRfbW9kdWxlIHdoaWNoIGNvbmZsaWN0cyB3aXRoIHRoZQotIyAgc2FtZSBzeW1ib2wgaW4gZHluZ3JvdXAKLVBBQ0tBR0VDT05GSUdbZHluZ3JvdXBdID0gIi0tZW5hYmxlLWR5bmdyb3VwPW1vZCwtLWVuYWJsZS1keW5ncm91cD1ubywiCi0KLSMtLWVuYWJsZS1wcm94eWNhY2hlICAgUHJveHkgQ2FjaGUgb3ZlcmxheSBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW3Byb3h5Y2FjaGVdID0gIi0tZW5hYmxlLXByb3h5Y2FjaGU9bW9kLC0tZW5hYmxlLXByb3h5Y2FjaGU9bm8sIgotRklMRVNfJHtQTn0tb3ZlcmxheS1wcm94eWNhY2hlID0gIiR7bWR9L3BjYWNoZS0qLnNvLioiCi1QQUNLQUdFUyArPSAiJHtQTn0tb3ZlcmxheS1wcm94eWNhY2hlIgotCi0jIEFwcGVuZCBVUkFORE9NX0RFVklDRT0nL2Rldi91cmFuZG9tJyB0byBDUFBGTEFHUzoKLSMgVGhpcyBhbGxvd3MgdGxzIHRvIG9idGFpbiByYW5kb20gYml0cyBmcm9tIC9kZXYvdXJhbmRvbSwgYnkgZGVmYXVsdAotIyBpdCB3YXMgZGlzYWJsZWQgZm9yIGNyb3NzLWNvbXBpbGluZy4KLUNQUEZMQUdTX2FwcGVuZCA9ICIgLURfR05VX1NPVVJDRSAtRFVSQU5ET01fREVWSUNFPVwnL2Rldi91cmFuZG9tXCcgLWZQSUMiCi0KLUxERkxBR1NfYXBwZW5kID0gIiAtcHRocmVhZCIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vbGlidG9vbC9idWlsZC1hdXgvbHRtYWluLnNoICR7U30vYnVpbGQKLSAgICBybSAtZiAke1N9L2xpYnRvb2wKLSAgICBhY2xvY2FsCi0gICAgbGlidG9vbGl6ZSAtLWZvcmNlIC0tY29weQotICAgIGdudS1jb25maWdpemUKLSAgICBhdXRvY29uZgotICAgIG9lX3J1bmNvbmYKLX0KLQotTEVBRF9TT05BTUUgPSAibGlibGRhcC0ke0xEQVBfVkVSfS5zby4qIgotCi0jIFRoZSBleGVjdXRhYmxlcyBnbyBpbiBhIHNlcGFyYXRlIHBhY2thZ2UuICBUaGlzIGFsbG93cyB0aGUKLSMgaW5zdGFsbGF0aW9uIG9mIHRoZSBsaWJyYXJpZXMgd2l0aCBubyBkYWVtb24gc3VwcG9ydC4KLSMgRWFjaCBtb2R1bGUgYWxzbyBoYXMgaXRzIG93biBwYWNrYWdlIC0gc2VlIGFib3ZlLgotUEFDS0FHRVMgKz0gIiR7UE59LXNsYXBkICR7UE59LXNsdXJwZCAke1BOfS1iaW4iCi0KLSMgUGFja2FnZSBjb250ZW50cyAtIHNoaWZ0IG1vc3Qgc3RhbmRhcmQgY29udGVudHMgdG8gLWJpbgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL2xkYXAuKiAke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9kYXRhIgotRklMRVNfJHtQTn0tc2xhcGQgPSAiJHtzeXNjb25mZGlyfS9pbml0LmQgJHtsaWJleGVjZGlyfS9zbGFwZCAke3NiaW5kaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7bG9jYWxzdGF0ZWRpcn0vdm9sYXRpbGUvcnVuIFwKLSAgICAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NsYXBkLiogJHtzeXNjb25mZGlyfS9vcGVubGRhcC9zY2hlbWEgXAotICAgICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvREJfQ09ORklHLmV4YW1wbGUgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qIgotRklMRVNfJHtQTn0tc2x1cnBkID0gIiR7bGliZXhlY2Rpcn0vc2x1cnBkICR7bG9jYWxzdGF0ZWRpcn0vb3BlbmxkYXAtc2x1cnAgJHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS9ydW4iCi1GSUxFU18ke1BOfS1iaW4gPSAiJHtiaW5kaXJ9IgotRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYiouc28gJHtsaWJkaXJ9LyoubGEgJHtsaWJkaXJ9LyouYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyouYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyoubGEgJHtsaWJleGVjZGlyfS9vcGVubGRhcC8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLy5kZWJ1ZyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBjYXQgJHtXT1JLRElSfS9pbml0c2NyaXB0ID4gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5sZGFwCi0gICAgY2htb2QgNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVubGRhcAotICAgICMgVGhpcyBpcyBkdXBsaWNhdGVkIGluIC9ldGMvb3BlbmxkYXAgYW5kIGlzIGZvciBzbGFwZAotICAgIHJtIC1mICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L29wZW5sZGFwLWRhdGEvREJfQ09ORklHLmV4YW1wbGUKLQotICAgICMgSW5zdGFsbGluZyBzbGFwZCB1bmRlciAke3NiaW59IGlzIG1vcmUgRkhTIGFuZCBMU0IgY29tcGxpYW5jZQotICAgIG12ICR7RH0ke2xpYmV4ZWNkaXJ9L3NsYXBkICR7RH0vJHtzYmluZGlyfS9zbGFwZAotICAgIFNMQVBUT09MUz0ic2xhcGFkZCBzbGFwY2F0IHNsYXBkbiBzbGFwaW5kZXggc2xhcHBhc3N3ZCBzbGFwdGVzdCBzbGFwYXV0aCBzbGFwYWNsIHNsYXBzY2hlbWEiCi0gICAgY2QgJHtEfS8ke3NiaW5kaXJ9LwotICAgIHJtIC1mICR7U0xBUFRPT0xTfQotICAgIGZvciBpIGluICR7U0xBUFRPT0xTfTsgZG8gbG4gLXNmIHNsYXBkICRpOyBkb25lCi0KLSAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2xhcGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0KLSAgICAjIFVzZXMgbWRtIGFzIHRoZSBkYXRhYmFzZQotICAgICMgIGFuZCBsb2NhbHN0YXRlZGlyIGFzIGRhdGEgZGlyZWN0b3J5IC4uLgotICAgIHNlZCAtZSAncy8jIG1vZHVsZXBhdGgvbW9kdWxlcGF0aC8nIFwKLSAgICAgICAgLWUgJ3MvIyBtb2R1bGVsb2FkXHMqYmFja19iZGIuKi9tb2R1bGVsb2FkICAgIGJhY2tfbWRiLycgXAotICAgICAgICAtZSAncy9kYXRhYmFzZVxzKmJkYi9kYXRhYmFzZSAgICAgICAgbWRiLycgXAotICAgICAgICAtZSAncyVeZGlyZWN0b3J5XHMqLiolZGlyZWN0b3J5ICAgJHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YS8lJyBcCi0gICAgICAgIC1pICR7RH0ke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NsYXBkLmNvbmYKLQotICAgIG1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9kYXRhCi0KLQotfQotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNsYXBkIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNsYXBkID0gIm9wZW5sZGFwIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc2xhcGQgPSAiZGVmYXVsdHMiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tc2xhcGQgPSAiaG9zdGFwZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zbGFwZCA/PSAiZGlzYWJsZSIKLQotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tYmFja2VuZHMuKiBeJHtQTn0tYmFja2VuZC0uKiIKLQotIyBUaGUgbW9kdWxlcyByZXF1aXJlIHRoZWlyIC5zbyB0byBiZSBkeW5hbWljYWx5IGxvYWRlZAotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1kbnNzcnYgICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLWxkYXAgICAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbWV0YSAgICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tZGIgICAgICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1vbml0b3IgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbnVsbCAgICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1wYXNzd2QgICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLXNoZWxsICAgKz0gImRldi1zbyIKLQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgYmFja2VuZF9kaXIgICAgPSBkLmV4cGFuZCgnJHtsaWJleGVjZGlyfS9vcGVubGRhcCcpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYmFja2VuZF9kaXIsICdiYWNrXyhbYS16XSopXC5zbyQnLCAnb3BlbmxkYXAtYmFja2VuZC0lcycsICdPcGVuTERBUCAlcyBiYWNrZW5kJywgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhY2tlbmRfZGlyLCAnYmFja18oW2Etel0qKVwtLipcLnNvXC4uKiQnLCAnb3BlbmxkYXAtYmFja2VuZC0lcycsICdPcGVuTERBUCAlcyBiYWNrZW5kJywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLQotICAgIG1ldGFwa2cgPSAiJHtQTn0tYmFja2VuZHMiCi0gICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCi0gICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBtZXRhcGtnLCAiIikKLSAgICBtZXRhcGtnX3JkZXBlbmRzID0gW10KLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKLSAgICAgICAgaWYgcGtnLmNvdW50KCJvcGVubGRhcC1iYWNrZW5kLSIpIGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIG5vdCBwa2cuY291bnQoIi1kZXYiKSBhbmQgbm90IHBrZy5jb3VudCgiLWRiZyIpIGFuZCBub3QgcGtnLmNvdW50KCJzdGF0aWMiKSBhbmQgbm90IHBrZy5jb3VudCgibG9jYWxlIik6Ci0gICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCi0gICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKLSAgICBkLnNldFZhcignREVTQ1JJUFRJT05fJyArIG1ldGFwa2csICdPcGVuTERBUCBiYWNrZW5kcyBtZXRhIHBhY2thZ2UnKQotICAgIHBhY2thZ2VzLmFwcGVuZChtZXRhcGtnKQotICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40NS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDY2MTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40NS5iYgpAQCAtMCwwICsxLDI1NiBAQAorIyBPcGVuTERBUCwgYSBsaWNlbnNlIGZyZWUgKHNlZSBodHRwOi8vd3d3Lk9wZW5MREFQLm9yZy9saWNlbnNlLmh0bWwpCisjCitTVU1NQVJZID0gIk9wZW5MREFQIERpcmVjdG9yeSBTZXJ2aWNlIgorREVTQ1JJUFRJT04gPSAiT3BlbkxEQVAgU29mdHdhcmUgaXMgYW4gb3BlbiBzb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIExpZ2h0d2VpZ2h0IERpcmVjdG9yeSBBY2Nlc3MgUHJvdG9jb2wuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5PcGVuTERBUC5vcmcvbGljZW5zZS5odG1sIgorIyBUaGUgT3BlbkxEQVAgUHVibGljIExpY2Vuc2UgLSBzZWUgdGhlIEhPTUVQQUdFIC0gZGVmaW5lcworIyB0aGUgbGljZW5zZS4gIHd3dy5vcGVubGRhcC5vcmcgY2xhaW1zIHRoaXMgaXMgT3BlbiBTb3VyY2UKKyMgKHNlZSBodHRwOi8vd3d3Lm9wZW5sZGFwLm9yZyksIHRoZSBsaWNlbnNlIGFwcGVhcnMgdG8gYmUKKyMgYmFzaWNhbGx5IEJTRC4gIG9wZW5zb3VyY2Uub3JnIGRvZXMgbm90IHJlY29yZCB0aGlzIGxpY2Vuc2UKKyMgYXQgcHJlc2VudCAoc28gaXQgaXMgYXBwYXJlbnRseSBub3QgT1NJIGNlcnRpZmllZCkuCitMSUNFTlNFID0gIk9wZW5MREFQIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0yNWZkMzcyMTk2MGYzOTEyOGNkMTVhNzQ5ZmQyMTEzOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0xNTNkMDdlZjA1MmM0YTM3YThmYWMyM2JjNjAzMTk3MiBcCisiCitTRUNUSU9OID0gImxpYnMiCisKK0xEQVBfVkVSID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoyXSl9IgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5vcGVubGRhcC5vcmcvcHViL09wZW5MREFQL29wZW5sZGFwLXJlbGVhc2UvJHtCUH0udGd6IFwKKyAgICBmaWxlOi8vb3BlbmxkYXAtbTQtcHRocmVhZC5wYXRjaCBcCisgICAgZmlsZTovL2tpbGwtaWN1LnBhdGNoIFwKKyAgICBmaWxlOi8vb3BlbmxkYXAtMi40LjI4LWdudXRscy1nY3J5cHQucGF0Y2ggXAorICAgIGZpbGU6Ly91c2UtdXJhbmRvbS5wYXRjaCBcCisgICAgZmlsZTovL2luaXRzY3JpcHQgXAorICAgIGZpbGU6Ly9zbGFwZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vdGhyZWFkX3N0dWIucGF0Y2ggXAorICAgIGZpbGU6Ly9vcGVubGRhcC1DVkUtMjAxNS0zMjc2LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwZmY4MzAxMjc3Y2RmZDBhZjcyOGE2OTI3MDQyYTEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkZDZjZmZkZWJjZDk1MTYxYTczMzA1ZWMxM2ZjN2E3OGU5NzA3YjQ2Y2E5Zjg0ZmI4OTdjZDU2MjZkZjM4MjQiCisKK0RFUEVORFMgPSAidXRpbC1saW51eCBncm9mZi1uYXRpdmUiCisKKyMgVGhlIG9yaWdpbmFsIHRvcC5tayB1c2VkIElOU1RBTEwsIG5vdCBJTlNUQUxMX1NUUklQX1BST0dSQU0gd2hlbgorIyBpbnN0YWxsaW5nIC5zbyBhbmQgZXhlY3V0YWJsZXMsIHRoaXMgZmFpbHMgaW4gY3Jvc3MgY29tcGlsYXRpb24KKyMgZW52aXJvbm1lbnRzCitTUkNfVVJJICs9ICJmaWxlOi8vaW5zdGFsbC1zdHJpcC5wYXRjaCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworIyBDViBTRVRUSU5HUworIyBSZXF1aXJlZCB0byB3b3JrIHJvdW5kIEFDX0ZVTkNfTUVNQ01QIHdoaWNoIGdldHMgdGhlIHdyb25nIGFuc3dlcgorIyB3aGVuIGNyb3NzIGNvbXBpbGluZyAoc2hvdWxkIGJlIGluIHNpdGU/KQorRVhUUkFfT0VDT05GICs9ICJhY19jdl9mdW5jX21lbWNtcF93b3JraW5nPXllcyIKKworIyBDT05GSUcgREVGSU5JVElPTlMKKyMgVGhlIGZvbGxvd2luZyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBmb3IgYQorIyBjcm9zcyBjb21waWxlIGF1dG9tYWdpY2FsbHkuICBTZWxlY3Qgc2hvdWxkIHlpZWxkIGZpbmUgb24gYWxsIE9FCisjIHN5c3RlbXMuLi4KK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXlpZWxkaW5nLXNlbGVjdD15ZXMiCisjIFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5pY2UuLi4KK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZHluYW1pYyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyBtb2R1bGVzIFwKKyAgICAgICAgICAgICAgICAgICBtZGIgbGRhcCBtZXRhIG1vbml0b3IgbnVsbCBwYXNzd2Qgc2hlbGwgcHJveHljYWNoZSBkbnNzcnYgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorIy0td2l0aC10bHMgICAgICAgICAgICAgIHdpdGggVExTL1NTTCBzdXBwb3J0IGF1dG98b3BlbnNzbHxnbnV0bHMgW2F1dG9dCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLXRscz1nbnV0bHMsLGdudXRscyBsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC10bHM9b3BlbnNzbCwsb3BlbnNzbCIKKworUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtY3lydXMtc2FzbCwtLXdpdGhvdXQtY3lydXMtc2FzbCxjeXJ1cy1zYXNsIgorUEFDS0FHRUNPTkZJR1ttb2R1bGVzXSA9ICJsdF9jdl9kbG9wZW5fc2VsZj15ZXMgLS1lbmFibGUtbW9kdWxlcywtLWRpc2FibGUtbW9kdWxlcyxsaWJ0b29sIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2IgorCisjIFNMQVBEIG9wdGlvbnMKKyMKKyMgVU5JWCBjcnlwdCgzKSBwYXNzd2Qgc3VwcG9ydDoKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtY3J5cHQiCisKKyMgU0xBUEQgQkFDS0VORAorIworIyBUaGUgYmFja2VuZCBtdXN0IGJlIHNldCBieSB0aGUgY29uZmlndXJhdGlvbi4gIFRoaXMgY29udHJvbHMgdGhlCisjIHJlcXVpcmVkIGRhdGFiYXNlLgorIworIyBCYWNrZW5kcz0iYmRiIGRuc3NydiBoZGIgbGRhcCBtZGIgbWV0YSBtb25pdG9yIG5kYiBudWxsIHBhc3N3ZCBwZXJsIHJlbGF5IHNoZWxsIHNvY2sgc3FsIgorIworIyBOb3RlIHRoYXQgbXVsdGlwbGUgYmFja2VuZHMgY2FuIGJlIGJ1aWx0LiAgVGhlIGxkYm0gYmFja2VuZCByZXF1aXJlcyBhCisjIGJ1aWxkLXRpbWUgY2hvaWNlIG9mIGRhdGFiYXNlIEFQSS4gIFRoZSBiZGIgYmFja2VuZCBmb3JjZXMgdGhpcyB0byBiZQorIyBEQjQuICBUbyB1c2UgdGhlIGdkYm0gKG9yIG90aGVyKSBBUEkgdGhlIEJlcmtlbHkgZGF0YWJhc2UgbW9kdWxlIG11c3QKKyMgYmUgcmVtb3ZlZCBmcm9tIHRoZSBidWlsZC4KK21kID0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAiCisjCisjLS1lbmFibGUtYmRiICAgICAgICAgIGVuYWJsZSBCZXJrZWxleSBEQiBiYWNrZW5kIG5vfHllc3xtb2QgeWVzCisjIFRoZSBCZXJrZWx5IERCIGlzIHRoZSBzdGFuZGFyZCBjaG9pY2UuICBUaGlzIHZlcnNpb24gb2YgT3BlbkxEQVAgcmVxdWlyZXMKKyMgdGhlIHZlcnNpb24gNCBpbXBsZW1lbnRhdGlvbiBvciBiZXR0ZXIuCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLS1lbmFibGUtYmRiPXllcywtLWVuYWJsZS1iZGI9bm8sZGIiCisKKyMtLWVuYWJsZS1kbnNzcnYgICAgICAgZW5hYmxlIGRuc3NydiBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbZG5zc3J2XSA9ICItLWVuYWJsZS1kbnNzcnY9bW9kLC0tZW5hYmxlLWRuc3Nydj1ubyIKKworIy0tZW5hYmxlLWhkYiAgICAgICAgICBlbmFibGUgSGllcmFyY2hpY2FsIERCIGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1toZGJdID0gIi0tZW5hYmxlLWhkYj15ZXMsLS1lbmFibGUtaGRiPW5vLGRiIgorCisjLS1lbmFibGUtbGRhcCAgICAgICAgIGVuYWJsZSBsZGFwIGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwPW1vZCwtLWVuYWJsZS1sZGFwPW5vLCIKKworIy0tZW5hYmxlLW1kYiAgICAgICAgICBlbmFibGUgbWRiIGRhdGFiYXNlIGJhY2tlbmQgbm98eWVzfG1vZCBbeWVzXQorUEFDS0FHRUNPTkZJR1ttZGJdID0gIi0tZW5hYmxlLW1kYj15ZXMsLS1lbmFibGUtbWRiPW5vLCIKKworIy0tZW5hYmxlLW1ldGEgICAgICAgICBlbmFibGUgbWV0YWRpcmVjdG9yeSBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbbWV0YV0gPSAiLS1lbmFibGUtbWV0YT1tb2QsLS1lbmFibGUtbWV0YT1ubywiCisKKyMtLWVuYWJsZS1tb25pdG9yICAgICAgZW5hYmxlIG1vbml0b3IgYmFja2VuZCBub3x5ZXN8bW9kIHllcworUEFDS0FHRUNPTkZJR1ttb25pdG9yXSA9ICItLWVuYWJsZS1tb25pdG9yPW1vZCwtLWVuYWJsZS1tb25pdG9yPW5vLCIKKworIy0tZW5hYmxlLW5kYiAgICAgICAgICBlbmFibGUgTXlTUUwgTkRCIENsdXN0ZXIgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KK1BBQ0tBR0VDT05GSUdbbmRiXSA9ICItLWVuYWJsZS1uZGI9bW9kLC0tZW5hYmxlLW5kYj1ubywiCisKKyMtLWVuYWJsZS1udWxsICAgICAgICAgZW5hYmxlIG51bGwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW251bGxdID0gIi0tZW5hYmxlLW51bGw9bW9kLC0tZW5hYmxlLW51bGw9bm8sIgorCisjLS1lbmFibGUtcGFzc3dkICAgICAgIGVuYWJsZSBwYXNzd2QgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW3Bhc3N3ZF0gPSAiLS1lbmFibGUtcGFzc3dkPW1vZCwtLWVuYWJsZS1wYXNzd2Q9bm8sIgorCisjLS1lbmFibGUtcGVybCAgICAgICAgIGVuYWJsZSBwZXJsIGJhY2tlbmQgbm98eWVzfG1vZCBubworIyAgVGhpcyByZXF1aXJlcyBhIGxvYWRhYmxlIHBlcmwgZHluYW1pYyBsaWJyYXJ5LCBpZiBlbmFibGVkIHdpdGhvdXQKKyMgIGRvaW5nIHNvbWV0aGluZyBhcHByb3ByaWF0ZSAoYnVpbGRpbmcgcGVybD8pIHRoZSBidWlsZCB3aWxsIHBpY2sKKyMgIHVwIHRoZSBidWlsZCBtYWNoaW5lIHBlcmwgLSBub3QgZ29vZCAoaW5oZXJpdCBwZXJsbmF0aXZlPykKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS1lbmFibGUtcGVybD1tb2QsLS1lbmFibGUtcGVybD1ubyxwZXJsIgorCisjLS1lbmFibGUtcmVsYXkgICAgICAgIGVuYWJsZSByZWxheSBiYWNrZW5kIG5vfHllc3xtb2QgW3llc10KK1BBQ0tBR0VDT05GSUdbcmVsYXldID0gIi0tZW5hYmxlLXJlbGF5PW1vZCwtLWVuYWJsZS1yZWxheT1ubywiCisKKyMtLWVuYWJsZS1zaGVsbCAgICAgICAgZW5hYmxlIHNoZWxsIGJhY2tlbmQgbm98eWVzfG1vZCBubworIyBjb25maWd1cmU6IFdBUk5JTkc6IFVzZSBvZiAtLXdpdGhvdXQtdGhyZWFkcyBpcyByZWNvbW1lbmRlZCB3aXRoIGJhY2stc2hlbGwKK1BBQ0tBR0VDT05GSUdbc2hlbGxdID0gIi0tZW5hYmxlLXNoZWxsPW1vZCAtLXdpdGhvdXQtdGhyZWFkcywtLWVuYWJsZS1zaGVsbD1ubywiCisKKyMtLWVuYWJsZS1zb2NrICAgICAgICAgZW5hYmxlIHNvY2sgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KK1BBQ0tBR0VDT05GSUdbc29ja10gPSAiLS1lbmFibGUtc29jaz1tb2QsLS1lbmFibGUtc29jaz1ubywiCisKKyMtLWVuYWJsZS1zcWwgICAgICAgICAgZW5hYmxlIHNxbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KKyMgc3FsIHJlcXVpcmVzIHNvbWUgc3FsIGJhY2tlbmQgd2hpY2ggcHJvdmlkZXMgc3FsLmgsIHNxbGl0ZSogcHJvdmlkZXMKKyMgc3FsaXRlLmggKHdoaWNoIG1heSBiZSBjb21wYXRpYmxlIGJ1dCBoYXNuJ3QgYmVlbiB0cmllZC4pCitQQUNLQUdFQ09ORklHW3NxbF0gPSAiLS1lbmFibGUtc3FsPW1vZCwtLWVuYWJsZS1zcWw9bm8sc3FsaXRlMyIKKworIy0tZW5hYmxlLWR5bmdyb3VwICAgICBEeW5hbWljIEdyb3VwIG92ZXJsYXkgbm98eWVzfG1vZCBubworIyAgVGhpcyBpcyBhIGRlbW8sIFByb3h5IENhY2hlIGRlZmluZXMgaW5pdF9tb2R1bGUgd2hpY2ggY29uZmxpY3RzIHdpdGggdGhlCisjICBzYW1lIHN5bWJvbCBpbiBkeW5ncm91cAorUEFDS0FHRUNPTkZJR1tkeW5ncm91cF0gPSAiLS1lbmFibGUtZHluZ3JvdXA9bW9kLC0tZW5hYmxlLWR5bmdyb3VwPW5vLCIKKworIy0tZW5hYmxlLXByb3h5Y2FjaGUgICBQcm94eSBDYWNoZSBvdmVybGF5IG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbcHJveHljYWNoZV0gPSAiLS1lbmFibGUtcHJveHljYWNoZT1tb2QsLS1lbmFibGUtcHJveHljYWNoZT1ubywiCitGSUxFU18ke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUgPSAiJHttZH0vcGNhY2hlLSouc28uKiIKK1BBQ0tBR0VTICs9ICIke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUiCisKKyMgQXBwZW5kIFVSQU5ET01fREVWSUNFPScvZGV2L3VyYW5kb20nIHRvIENQUEZMQUdTOgorIyBUaGlzIGFsbG93cyB0bHMgdG8gb2J0YWluIHJhbmRvbSBiaXRzIGZyb20gL2Rldi91cmFuZG9tLCBieSBkZWZhdWx0CisjIGl0IHdhcyBkaXNhYmxlZCBmb3IgY3Jvc3MtY29tcGlsaW5nLgorQ1BQRkxBR1NfYXBwZW5kID0gIiAtRF9HTlVfU09VUkNFIC1EVVJBTkRPTV9ERVZJQ0U9XCcvZGV2L3VyYW5kb21cJyAtZlBJQyIKKworTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgorCitkb19jb25maWd1cmUoKSB7CisgICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9saWJ0b29sL2J1aWxkLWF1eC9sdG1haW4uc2ggJHtTfS9idWlsZAorICAgIHJtIC1mICR7U30vbGlidG9vbAorICAgIGFjbG9jYWwKKyAgICBsaWJ0b29saXplIC0tZm9yY2UgLS1jb3B5CisgICAgZ251LWNvbmZpZ2l6ZQorICAgIGF1dG9jb25mCisgICAgb2VfcnVuY29uZgorfQorCitMRUFEX1NPTkFNRSA9ICJsaWJsZGFwLSR7TERBUF9WRVJ9LnNvLioiCisKKyMgVGhlIGV4ZWN1dGFibGVzIGdvIGluIGEgc2VwYXJhdGUgcGFja2FnZS4gIFRoaXMgYWxsb3dzIHRoZQorIyBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcmllcyB3aXRoIG5vIGRhZW1vbiBzdXBwb3J0LgorIyBFYWNoIG1vZHVsZSBhbHNvIGhhcyBpdHMgb3duIHBhY2thZ2UgLSBzZWUgYWJvdmUuCitQQUNLQUdFUyArPSAiJHtQTn0tc2xhcGQgJHtQTn0tc2x1cnBkICR7UE59LWJpbiIKKworIyBQYWNrYWdlIGNvbnRlbnRzIC0gc2hpZnQgbW9zdCBzdGFuZGFyZCBjb250ZW50cyB0byAtYmluCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvbGRhcC4qICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEiCitGSUxFU18ke1BOfS1zbGFwZCA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZCAke2xpYmV4ZWNkaXJ9L3NsYXBkICR7c2JpbmRpcn0gJHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS9ydW4gXAorICAgICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2xhcGQuKiAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NjaGVtYSBcCisgICAgJHtzeXNjb25mZGlyfS9vcGVubGRhcC9EQl9DT05GSUcuZXhhbXBsZSAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoiCitGSUxFU18ke1BOfS1zbHVycGQgPSAiJHtsaWJleGVjZGlyfS9zbHVycGQgJHtsb2NhbHN0YXRlZGlyfS9vcGVubGRhcC1zbHVycCAke2xvY2Fsc3RhdGVkaXJ9L3J1biAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3J1biIKK0ZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5sYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyouc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvLmRlYnVnIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGNhdCAke1dPUktESVJ9L2luaXRzY3JpcHQgPiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmxkYXAKKyAgICBjaG1vZCA3NTUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5sZGFwCisgICAgIyBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gL2V0Yy9vcGVubGRhcCBhbmQgaXMgZm9yIHNsYXBkCisgICAgcm0gLWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3BlbmxkYXAtZGF0YS9EQl9DT05GSUcuZXhhbXBsZQorCisgICAgIyBJbnN0YWxsaW5nIHNsYXBkIHVuZGVyICR7c2Jpbn0gaXMgbW9yZSBGSFMgYW5kIExTQiBjb21wbGlhbmNlCisgICAgbXYgJHtEfSR7bGliZXhlY2Rpcn0vc2xhcGQgJHtEfS8ke3NiaW5kaXJ9L3NsYXBkCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KKyAgICBTTEFQVE9PTFM9InNsYXBhZGQgc2xhcGNhdCBzbGFwZG4gc2xhcGluZGV4IHNsYXBwYXNzd2Qgc2xhcHRlc3Qgc2xhcGF1dGggc2xhcGFjbCBzbGFwc2NoZW1hIgorICAgIGNkICR7RH0vJHtzYmluZGlyfS8KKyAgICBybSAtZiAke1NMQVBUT09MU30KKyAgICBmb3IgaSBpbiAke1NMQVBUT09MU307IGRvIGxuIC1zZiBzbGFwZCAkaTsgZG9uZQorCisgICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NsYXBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQorCisgICAgIyBVc2VzIG1kbSBhcyB0aGUgZGF0YWJhc2UKKyAgICAjICBhbmQgbG9jYWxzdGF0ZWRpciBhcyBkYXRhIGRpcmVjdG9yeSAuLi4KKyAgICBzZWQgLWUgJ3MvIyBtb2R1bGVwYXRoL21vZHVsZXBhdGgvJyBcCisgICAgICAgIC1lICdzLyMgbW9kdWxlbG9hZFxzKmJhY2tfYmRiLiovbW9kdWxlbG9hZCAgICBiYWNrX21kYi8nIFwKKyAgICAgICAgLWUgJ3MvZGF0YWJhc2VccypiZGIvZGF0YWJhc2UgICAgICAgIG1kYi8nIFwKKyAgICAgICAgLWUgJ3MlXmRpcmVjdG9yeVxzKi4qJWRpcmVjdG9yeSAgICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEvJScgXAorICAgICAgICAtaSAke0R9JHtzeXNjb25mZGlyfS9vcGVubGRhcC9zbGFwZC5jb25mCisKKyAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YQorCisKK30KKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zbGFwZCIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zbGFwZCA9ICJvcGVubGRhcCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNsYXBkID0gImRlZmF1bHRzIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNsYXBkID0gImhvc3RhcGQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tc2xhcGQgPz0gImRpc2FibGUiCisKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LWJhY2tlbmRzLiogXiR7UE59LWJhY2tlbmQtLioiCisKKyMgVGhlIG1vZHVsZXMgcmVxdWlyZSB0aGVpciAuc28gdG8gYmUgZHluYW1pY2FseSBsb2FkZWQKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtZG5zc3J2ICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1sZGFwICAgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1ldGEgICAgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbWRiICAgICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tb25pdG9yICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW51bGwgICAgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtcGFzc3dkICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1zaGVsbCAgICs9ICJkZXYtc28iCisKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGJhY2tlbmRfZGlyICAgID0gZC5leHBhbmQoJyR7bGliZXhlY2Rpcn0vb3BlbmxkYXAnKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhY2tlbmRfZGlyLCAnYmFja18oW2Etel0qKVwuc28kJywgJ29wZW5sZGFwLWJhY2tlbmQtJXMnLCAnT3BlbkxEQVAgJXMgYmFja2VuZCcsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYWNrZW5kX2RpciwgJ2JhY2tfKFthLXpdKilcLS4qXC5zb1wuLiokJywgJ29wZW5sZGFwLWJhY2tlbmQtJXMnLCAnT3BlbkxEQVAgJXMgYmFja2VuZCcsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCisKKyAgICBtZXRhcGtnID0gIiR7UE59LWJhY2tlbmRzIgorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQorICAgIGQuc2V0VmFyKCdGSUxFU18nICsgbWV0YXBrZywgIiIpCisgICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCisgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCisgICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06CisgICAgICAgIGlmIHBrZy5jb3VudCgib3BlbmxkYXAtYmFja2VuZC0iKSBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBub3QgcGtnLmNvdW50KCItZGV2IikgYW5kIG5vdCBwa2cuY291bnQoIi1kYmciKSBhbmQgbm90IHBrZy5jb3VudCgic3RhdGljIikgYW5kIG5vdCBwa2cuY291bnQoImxvY2FsZSIpOgorICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQorICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCisgICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCAnT3BlbkxEQVAgYmFja2VuZHMgbWV0YSBwYWNrYWdlJykKKyAgICBwYWNrYWdlcy5hcHBlbmQobWV0YXBrZykKKyAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubW90aWYvb3Blbm1vdGlmL2NvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbm1vdGlmL29wZW5tb3RpZi9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NjhlODAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubW90aWYvb3Blbm1vdGlmL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS0tLSBhL2NvbmZpZ3VyZS5hY34JMjAwOS0xMC0yNyAxNDoxMDoyMy4wMDAwMDAwMDAgLTAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDExLTA1LTMxIDEwOjUxOjAwLjIwNzIzMjAzNiAtMDMwMAotQEAgLTMsMTIgKzMsNiBAQAotIEFDX0NPTkZJR19TUkNESVIoW2xpYi9YbS9Gb3JtLmNdKQotIEFDX1BSRVJFUSgyLjUyKQotIEFDX0NPTkZJR19BVVhfRElSKC4pCi0tQUNfQ0hFQ0tfRklMRSgvdXNyL1gvaW5jbHVkZS9YMTEvWC5oLAotLSAgQUNfUFJFRklYX0RFRkFVTFQoL3Vzci9YKSwKLS0gIEFDX1BSRUZJWF9ERUZBVUxUKC91c3IpKQotLUFDX0NIRUNLX0ZJTEUoL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YLmgsCi0tICBBQ19QUkVGSVhfREVGQVVMVCgvdXNyL1gxMVI2KSwKLS0gIEFDX1BSRUZJWF9ERUZBVUxUKC91c3IpKQotIAotIGRubCBBTV9NQUlOVEFJTkVSX01PREUKLSBBQ19DQU5PTklDQUxfVEFSR0VUCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5tb3RpZi9vcGVubW90aWZfMi4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5tb3RpZi9vcGVubW90aWZfMi4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YzM5Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubW90aWYvb3Blbm1vdGlmXzIuMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU0VDVElPTiA9ICJsaWJzIgotU1VNTUFSWSA9ICJPU00vTW90aWYgaW1wbGVtZW50YXRpb24iCi1MSUNFTlNFID0gIk9HUEwiCi1ERVBFTkRTID0gInhiaXRtYXBzIHZpcnR1YWwvbGlieDExIGxpYnh0IGxpYnhmdCB4cHJvdG8iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE0ZjY5MmM4MjQ5MWRiM2Q1MjQxOTkyOWQyZjNiMzQzIgotCi1QUiA9ICJyMyIKLQotUE5CTEFDS0xJU1Rbb3Blbm1vdGlmXSA/PSAiQlJPS0VOOiBkb2Vzbid0IGJ1aWxkIHdpdGggQiE9UyAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKLQotU1JDX1VSSSA9ICJodHRwOi8vbW90aWYuaWNzLmNvbS9zaXRlcy9kZWZhdWx0L2ZpbGVzL29wZW5tb3RpZi0yLjMuMy50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoO3BhdGNoPTEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmZDI3Y2QzMzY5ZDZjN2Q1ZWY3OWVjY2JhNTI0ZjdiZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjODVmNTU0NWUyMThmYTBjNTlhMzc4OTE5MjEzMmQ0NzJmYzVhMzNlOTE0YTIyMWE1NjhlZWU0ZmMxMGNkMTAzIgotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsbGlicG5nIgotCi1FWFRSQV9PRUNPTkYgPSAiWF9DRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfSAtLWRpc2FibGUtcHJpbnRpbmciCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1iaW4iCi0KLUZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgKAotICAgICAgICAjIEhBQ0s6IGJ1aWxkIGEgbmF0aXZlIGJpbmFyaWVzIG5lZWQgZHVyaW5nIHRoZSBidWlsZAotICAgICAgICB1bnNldCBDQyBMRCBDWFggQ0NMRCBDRkxBR1MKLSAgICAgICAgb2VfcnVubWFrZSAtQyBjb25maWcvdXRpbCBDQz0iJHtCVUlMRF9DQ30iIExEPSIke0JVSUxEX0xEfSIgQ1hYPSIke0JVSUxEX0NYWH0iIExJQlM9IiIgbWFrZXN0cnMKLSAgICApCi0gICAgaWYgWyAiJD8iICE9ICIwIiBdOyB0aGVuCi0gICAgICAgIGV4aXQgMQotICAgIGZpCi0gICAgb2VfcnVubWFrZSAtQyBsaWIKLSAgICBvZV9ydW5tYWtlIC1DIGluY2x1ZGUKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSAtQyBsaWIgaW5zdGFsbAotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IC1DIGluY2x1ZGUgaW5zdGFsbAotfQotCi1MRUFEX1NPTkFNRSA9ICJsaWJYbS5zby40IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuc3luYy9saWJzeW5jbWxfMC41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5zeW5jL2xpYnN5bmNtbF8wLjUuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJmNjVjNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5zeW5jL2xpYnN5bmNtbF8wLjUuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlic3luY21sIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTeW5jTUwgcHJvdG9jb2wiCi1IT01FUEFHRSA9ICJodHRwczovL2xpYnN5bmNtbC5vcGVuc3luYy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IgotCi1ERVBFTkRTID0gImxpYnhtbDIgZ2xpYi0yLjAgbGlic291cC0yLjQgb3Blbm9iZXggd2J4bWwyIgotCi0jIERlcGVuZHMgb24gb3Blbm9iZXgKLVBOQkxBQ0tMSVNUW2xpYnN5bmNtbF0gPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXo1JywgJ2JsdWV6NSBjb25mbGljdHMgd2l0aCBibHVlejQgYW5kIGJsdWV6NSBpcyBzZWxlY3RlZCBpbiBESVNUUk9fRkVBVFVSRVMnLCAnJywgZCl9IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJzeW5jbWwvbGlic3luY21sLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4NDg3OWVkN2NiOTQ2MTg1MzBmYmNiODAxYTFhNGY5NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNWQ2NTEzNjM3YWRiMTMwMGEzYTU4YjZlMjlkNTNhYjYzNzNjOGYzNzA4MDdkMGQ5MjViYWU3MmIyOTIwZTUzIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyArPSAiJHtQTn0tdG9vbHMiCi0KLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfSIKLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW53YmVtL29wZW53YmVtXzMuMi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVud2JlbS9vcGVud2JlbV8zLjIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkxNDIzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW53YmVtL29wZW53YmVtXzMuMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViIEJhc2VkIEVudGVycHJpc2UgTWFuYWdlbWVudCAoV0JFTSkgSW1wbGVtZW50YXRpb24iCi1ERVNDUklQVElPTiA9ICJPcGVuV0JFTSBpcyBhIHNldCBvZiBzb2Z0d2FyZSBjb21wb25lbnRzIHRoYXQgaGVscCBmYWNpbGl0YXRlIFwKLWRlcGxveW1lbnQgb2YgdGhlIENvbW1vbiBJbmZvcm1hdGlvbiBNb2RlbCAoQ0lNKSBhbmQgV2ViLUJhc2VkIFwKLUVudGVycHJpc2UgTWFuYWdlbWVudCAoV0JFTSkgdGVjaG5vbG9naWVzIG9mIHRoZSBEaXN0cmlidXRlZCBNYW5hZ2VtZW50IFwKLVRhc2sgRm9yY2UgKERNVEYpLiBcCi0gXAotV2ViLUJhc2VkIEVudGVycHJpc2UgTWFuYWdlbWVudCAoV0JFTSkgaXMgYSBzZXQgb2YgbWFuYWdlbWVudCBhbmQgXAotSW50ZXJuZXQgc3RhbmRhcmQgdGVjaG5vbG9naWVzIGRldmVsb3BlZCB0byB1bmlmeSB0aGUgbWFuYWdlbWVudCBvZiBcCi1kaXN0cmlidXRlZCBjb21wdXRpbmcgZW52aXJvbm1lbnRzLiBXQkVNIHByb3ZpZGVzIHRoZSBhYmlsaXR5IGZvciB0aGUgXAotaW5kdXN0cnkgdG8gZGVsaXZlciBhIHdlbGwtaW50ZWdyYXRlZCBzZXQgb2Ygc3RhbmRhcmRzLWJhc2VkIG1hbmFnZW1lbnQgXAotdG9vbHMsIGZhY2lsaXRhdGluZyB0aGUgZXhjaGFuZ2Ugb2YgZGF0YSBhY3Jvc3Mgb3RoZXJ3aXNlIGRpc3BhcmF0ZSBcCi10ZWNobm9sb2dpZXMgYW5kIHBsYXRmb3Jtcy4gXAotIFwKLUZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IERNVEYgYW5kIGl0cyB0ZWNobm9sb2dpZXMsIHZpc2l0IFwKLWh0dHA6Ly93d3cuZG10Zi5vcmcvc3RhbmRhcmRzLiAiCi1TRUNUSU9OID0gIlN5c3RlbS9NYW5hZ2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL29wZW53YmVtLnNvdXJjZWZvcmdlLm5ldC8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotU09VUkNFMT0ibm92ZWxsLW9wZW53YmVtLXJvb3QtYWNsLm1vZiIKLVNPVVJDRTI9ImxvYWRtb2Yuc2giCi1TT1VSQ0UzPSJybW1vZi5zaCIKLVNPVVJDRTQ9Im9wZW53YmVtLW93Y2ltb21kLmluaXQiCi1TT1VSQ0U1PSJvcGVud2JlbS1ldGNfcGFtLmRfb3BlbndiZW0iCi1TT1VSQ0U2PSJvcGVud2JlbS1ycG1saW50cmMiCi0KLVNSQ19VUkkgPSAiIFwKLSAgIGdpdDovL2dpdGh1Yi5jb20va2thZW1wZi9vcGVud2JlbS5naXQgXAotICAgZmlsZTovLyR7U09VUkNFMX0gXAotICAgZmlsZTovLyR7U09VUkNFMn0gXAotICAgZmlsZTovLyR7U09VUkNFM30gXAotICAgZmlsZTovLyR7U09VUkNFNH0gXAotICAgZmlsZTovLyR7U09VUkNFNX0gXAotICAgZmlsZTovLyR7U09VUkNFNn0gXAotICAgZmlsZTovL2NoZWNrc2VydmVya2V5IFwKLSAgIGZpbGU6Ly9vd2NpbW9tZC5zZXJ2aWNlIFwKLSIKLVNSQ1JFViA9ICI1YzY4OGVlZmMxZjhlMzVhNGIxYzU4NTI5YWFlNWYxMTRjMjVjMmE4IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSArPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA1MDRhMmViODVlMDFhYTkyYzllZmQ0MTI1YTM0NjYwIgotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgotREVQRU5EUyArPSAib3BlbnNzbCBsaWJwYW0gYmFzaCIKLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIgotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1wcmVmaXg9L3VzciBcCi0gICAgLS1zeXNjb25mZGlyPS9ldGMgXAotICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1sb2NhbHN0YXRlZGlyPS92YXIvbGliIFwKLSAgICAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9L29wZW53YmVtL2JpbiBcCi0gICAgLS1tYW5kaXI9L3Vzci9zaGFyZS9tYW4gXAotICAgIC0tZW5hYmxlLXRocmVhZHMtcnVuLWFzLXVzZXIgXAotIgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgYXV0b3JlY29uZiAtLWZvcmNlIC0taW5zdGFsbAotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKLSAgICBpbnN0YWxsIC1kICR7RH0vZXRjL29wZW53YmVtL29wZW53YmVtLmNvbmYuZAotICAgIGluc3RhbGwgLWQgJHtEfS92YXIvYWRtL2ZpbGx1cC10ZW1wbGF0ZXMKLSAgICBpbnN0YWxsIC1tIDY0NCBldGMvc3lzY29uZmlnL2RhZW1vbnMvb3djaW1vbWQgJHtEfS92YXIvYWRtL2ZpbGx1cC10ZW1wbGF0ZXMvc3lzY29uZmlnLm93Y2ltb21kCi0KLSAgICAjIGZpeCB1cCBoYXJkY29kZWQgcGF0aHMKLSAgICBzZWQgLWkgLWUgJ3MsL3Vzci9zYmluLywke3NiaW5kaXJ9LywnICR7V09SS0RJUn0vb3djaW1vbWQuc2VydmljZQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vd2NpbW9tZC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2NoZWNrc2VydmVya2V5ICR7RH0ke3N5c2NvbmZkaXJ9L29wZW53YmVtLwotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vZXRjL2luaXQuZAotICAgIGxuIC1zZiAuLi8uLi9ldGMvaW5pdC5kL293Y2ltb21kICR7RH0vdXNyL3NiaW4vcmNvd2NpbW9tZAotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vJHtTT1VSQ0U0fSAke0R9L2V0Yy9pbml0LmQvb3djaW1vbWQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9L3Vzci9iaW4KLSAgICBpbnN0YWxsIC1kICR7RH0vZXRjL3BhbS5kCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9vcGVud2JlbS9jbXBpcHJvdmlkZXJzCi0gICAgaW5zdGFsbCAtbSA2NDQgZXRjL3BhbS5kL29wZW53YmVtICR7RH0vZXRjL3BhbS5kCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9vcGVud2JlbS9jKytwcm92aWRlcnMKLSAgICBpbnN0YWxsIC1kICR7RH0vdmFyL2xpYi9vcGVud2JlbQotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vJHtTT1VSQ0UyfSAke0R9L3Vzci9iaW4vb3ctbG9hZG1vZi5zaAotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vJHtTT1VSQ0UzfSAke0R9L3Vzci9iaW4vb3ctcm1tb2Yuc2gKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9LyR7U09VUkNFNX0gJHtEfS9ldGMvcGFtLmQvb3BlbndiZW0KLQotICAgIE1PRlBBVEg9JHtEfS91c3Ivc2hhcmUvbW9mL29wZW53YmVtCi0gICAgaW5zdGFsbCAtZCAkTU9GUEFUSAotICAgIG12ICR7RH0vdXNyL3NoYXJlL29wZW53YmVtLyogJE1PRlBBVEgvCi0gICAgcm1kaXIgJHtEfS91c3Ivc2hhcmUvb3BlbndiZW0KLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9LyR7U09VUkNFMX0gJE1PRlBBVEgvCi0KLSAgICB0b3VjaCAke0R9L3Zhci9saWIvb3BlbndiZW0ve2NsYXNzYXNzb2NpYXRpb24saW5zdGFuY2VzLGluc3Rhc3NvY2lhdGlvbixuYW1lc3BhY2VzLHNjaGVtYX0ue2RhdCxuZHgsbG9ja30KLX0KLQotaW5oZXJpdCAke0BiYi51dGlscy5maWx0ZXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInLCAnc3lzdGVtZCcsIGQpfQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm93Y2ltb21kLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0gXAotICAgICR7ZGF0YWRpcn0vbW9mIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0gXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIgXAotICAgICR7bGliZGlyfS9vcGVud2JlbS9jKytwcm92aWRlcnMvLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vb3BlbndiZW0vcHJvdmlmY3MvLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vb3BlbndiZW0vYmluL29wZW53YmVtLy5kZWJ1ZyBcCi0iCi1GSUxFU18ke1BOfS1kZXYgPSAiIFwKLSAgICAke2luY2x1ZGVkaXJ9IFwKLSAgICAke2RhdGFkaXJ9L2FjbG9jYWwvb3BlbndiZW0ubTQgXAotIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy82ODYzMC8KLVBOQkxBQ0tMSVNUW29wZW53YmVtXSA/PSAiQlJPS0VOOiBmYWlscyB0byBidWlsZCB3aXRoIGdjYy02IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYW0tcGFzc3dkcWMvZmlsZXMvMTAwMHBhdGNoLTIxOTIwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFtLXBhc3N3ZHFjL2ZpbGVzLzEwMDBwYXRjaC0yMTkyMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NmQ0NjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYW0tcGFzc3dkcWMvZmlsZXMvMTAwMHBhdGNoLTIxOTIwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi1kaWZmIC11ck5wIHBhbV9wYXNzd2RxYy0xLjAuNS1vcmlnL3BhbV9wYXNzd2RxYy5jIHBhbV9wYXNzd2RxYy0xLjAuNS9wYW1fcGFzc3dkcWMuYwotLS0tIHBhbV9wYXNzd2RxYy0xLjAuNS1vcmlnL3BhbV9wYXNzd2RxYy5jCTIwMDgtMDItMTIgMTU6MTE6MTMuMDAwMDAwMDAwIC0wNTAwCi0rKysgcGFtX3Bhc3N3ZHFjLTEuMC41L3BhbV9wYXNzd2RxYy5jCTIwMDktMDktMjggMTI6MTA6MzIuMTcxNjk2Njk0IC0wNDAwCi1AQCAtNzAsNiArNzAsOCBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gCXBhc3N3ZHFjX3BhcmFtc190IHFjOwotIAlpbnQgZmxhZ3M7Ci0gCWludCByZXRyeTsKLSsJY2hhciBvbGRwYXNzX3Byb21wdF9maWxlW0ZJTEVfTEVOKzFdOwotKwljaGFyIG5ld3Bhc3NfcHJvbXB0X2ZpbGVbRklMRV9MRU4rMV07Ci0gfSBwYXJhbXNfdDsKLSAKLSBzdGF0aWMgcGFyYW1zX3QgZGVmYXVsdHMgPSB7Ci1AQCAtNzksMTAgKzgxLDEzIEBAIHN0YXRpYyBwYXJhbXNfdCBkZWZhdWx0cyA9IHsKLSAJCTMsCQkJCS8qIHBhc3NwaHJhc2Vfd29yZHMgKi8KLSAJCTQsCQkJCS8qIG1hdGNoX2xlbmd0aCAqLwotIAkJMSwJCQkJLyogc2ltaWxhcl9kZW55ICovCi0tCQk0MgkJCQkvKiByYW5kb21fYml0cyAqLwotKwkJNDIsCQkJCS8qIHJhbmRvbV9iaXRzICovCi0rCQkxCQkJCS8qIGZpcnN0dXBwZXJfbGFzdGRpZ2l0X2NoZWNrICovCi0gCX0sCi0gCUZfRU5GT1JDRV9FVkVSWU9ORSwJCQkvKiBmbGFncyAqLwotLQkzCQkJCQkvKiByZXRyeSAqLwotKwkzLAkJCQkJLyogcmV0cnkgKi8KLSsJIiIsCQkJCQkvKiBvbGRwYXNzX3Byb21wdF9maWxlICovCi0rCSIiCQkJCQkvKiBuZXdwYXNzX3Byb21wdF9maWxlICovCi0gfTsKLSAKLSAjZGVmaW5lIFBST01QVF9PTERQQVNTIFwKLUBAIC0zNjEsNiArMzY2LDM3IEBAIHN0YXRpYyBpbnQgcGFyc2UocGFyYW1zX3QgKnBhcmFtcywgcGFtX2gKLSAJCWlmICghc3RyY21wKCphcmd2LCAidXNlX2F1dGh0b2siKSkgewotIAkJCXBhcmFtcy0+ZmxhZ3MgfD0gRl9VU0VfQVVUSFRPSzsKLSAJCX0gZWxzZQotKwkJaWYgKCFzdHJjbXAoKmFyZ3YsICJkaXNhYmxlX2ZpcnN0dXBwZXJfbGFzdGRpZ2l0X2NoZWNrIikpIHsKLSsJCQlwYXJhbXMtPnFjLmZpcnN0dXBwZXJfbGFzdGRpZ2l0X2NoZWNrID0gMDsKLSsJCX0gZWxzZQotKwkJaWYgKCFzdHJuY21wKCphcmd2LCAib2xkcGFzc19wcm9tcHRfZmlsZT0iLCAyMCkpIHsKLSsJCQlpbnQgbjsKLSsJCQlGSUxFICpmcCA9IGZvcGVuKCphcmd2ICsgMjAsICJyIik7Ci0rCQkJaWYgKGZwKSB7Ci0rCQkJCW49ZnJlYWQocGFyYW1zLT5vbGRwYXNzX3Byb21wdF9maWxlLCBzaXplb2YoY2hhciksIEZJTEVfTEVOLCBmcCk7Ci0rCQkJCWlmICgwPT1uIHx8IGZlcnJvcihmcCkhPTAgKSB7Ci0rCQkJCQltZW1zZXQocGFyYW1zLT5vbGRwYXNzX3Byb21wdF9maWxlLCAnXDAnLCBGSUxFX0xFTisxKTsKLSsJCQkJfQotKwkJCQllbHNlIHsKLSsJCQkJCWZlb2YoZnApPyAocGFyYW1zLT5vbGRwYXNzX3Byb21wdF9maWxlW24tMV09J1wwJyk6IChwYXJhbXMtPm9sZHBhc3NfcHJvbXB0X2ZpbGVbbl09J1wwJyk7Ci0rCQkJCX0KLSsJCQkJZmNsb3NlKGZwKTsKLSsJCQl9Ci0rCQl9IGVsc2UKLSsJCWlmICghc3RybmNtcCgqYXJndiwgIm5ld3Bhc3NfcHJvbXB0X2ZpbGU9IiwgMjApKSB7Ci0rCQkJaW50IG47Ci0rCQkJRklMRSAqZnAgPSBmb3BlbigqYXJndiArIDIwLCAiciIpOwotKwkJCWlmIChmcCkgewotKwkJCQluPWZyZWFkKHBhcmFtcy0+bmV3cGFzc19wcm9tcHRfZmlsZSwgc2l6ZW9mKGNoYXIpLCBGSUxFX0xFTiwgZnApOwotKwkJCQlpZiAoMD09biB8fCBmZXJyb3IoZnApIT0wICkgewotKwkJCQkJbWVtc2V0KHBhcmFtcy0+bmV3cGFzc19wcm9tcHRfZmlsZSwgJ1wwJywgRklMRV9MRU4rMSk7Ci0rCQkJCX0KLSsJCQkJZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlb2YoZnApPyAocGFyYW1zLT5uZXdwYXNzX3Byb21wdF9maWxlW24tMV09J1wwJyk6IChwYXJhbXMtPm5ld3Bhc3NfcHJvbXB0X2ZpbGVbbl09J1wwJyk7Ci0rCQkJCX0KLSsJCQkJZmNsb3NlKGZwKTsKLSsJCQl9Ci0rCQl9IGVsc2UKLSAJCQlicmVhazsKLSAJCWFyZ2MtLTsgYXJndisrOwotIAl9Ci1AQCAtNDA2LDcgKzQ0Miw3IEBAIFBBTV9FWFRFUk4gaW50IHBhbV9zbV9jaGF1dGh0b2socGFtX2hhbmQKLSAKLSAJaWYgKGFza19vbGRhdXRodG9rICYmICFhbV9yb290KHBhbWgpKSB7Ci0gCQlzdGF0dXMgPSBjb252ZXJzZShwYW1oLCBQQU1fUFJPTVBUX0VDSE9fT0ZGLAotLQkJICAgIFBST01QVF9PTERQQVNTLCAmcmVzcCk7Ci0rCQkgICAgc3RybGVuKHBhcmFtcy5vbGRwYXNzX3Byb21wdF9maWxlKSA/IHBhcmFtcy5vbGRwYXNzX3Byb21wdF9maWxlIDogUFJPTVBUX09MRFBBU1MsICZyZXNwKTsKLSAKLSAJCWlmIChzdGF0dXMgPT0gUEFNX1NVQ0NFU1MpIHsKLSAJCQlpZiAocmVzcCAmJiByZXNwLT5yZXNwKSB7Ci1AQCAtNTQwLDggKzU3Niw3IEBAIHJldHJ5OgotIAkJICAgIE1FU1NBR0VfUkFORE9NRkFJTEVEIDogTUVTU0FHRV9NSVNDT05GSUdVUkVEKTsKLSAJCXJldHVybiBQQU1fQVVUSFRPS19FUlI7Ci0gCX0KLS0KLS0Jc3RhdHVzID0gY29udmVyc2UocGFtaCwgUEFNX1BST01QVF9FQ0hPX09GRiwgUFJPTVBUX05FV1BBU1MxLCAmcmVzcCk7Ci0rCXN0YXR1cyA9IGNvbnZlcnNlKHBhbWgsIFBBTV9QUk9NUFRfRUNIT19PRkYsIHN0cmxlbihwYXJhbXMubmV3cGFzc19wcm9tcHRfZmlsZSkgPyBwYXJhbXMubmV3cGFzc19wcm9tcHRfZmlsZSA6IFBST01QVF9ORVdQQVNTMSwgJnJlc3ApOwotIAlpZiAoc3RhdHVzID09IFBBTV9TVUNDRVNTICYmICghcmVzcCB8fCAhcmVzcC0+cmVzcCkpCi0gCQlzdGF0dXMgPSBQQU1fQVVUSFRPS19FUlI7Ci0gCi1kaWZmIC11ck5wIHBhbV9wYXNzd2RxYy0xLjAuNS1vcmlnL3Bhc3N3ZHFjX2NoZWNrLmMgcGFtX3Bhc3N3ZHFjLTEuMC41L3Bhc3N3ZHFjX2NoZWNrLmMKLS0tLSBwYW1fcGFzc3dkcWMtMS4wLjUtb3JpZy9wYXNzd2RxY19jaGVjay5jCTIwMDgtMDItMTIgMTQ6MzE6NTIuMDAwMDAwMDAwIC0wNTAwCi0rKysgcGFtX3Bhc3N3ZHFjLTEuMC41L3Bhc3N3ZHFjX2NoZWNrLmMJMjAwOS0wOS0yNSAyMjo0NToxNi4wODA4NDI0MjUgLTA0MDAKLUBAIC05MCwxMCArOTAsMTIgQEAgc3RhdGljIGludCBpc19zaW1wbGUocGFzc3dkcWNfcGFyYW1zX3QgKgotIAotIC8qIFVwcGVyIGNhc2UgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHVzZWQgaW4gY29tbW9uIHdheXMgZG9uJ3QgaW5jcmVhc2UgdGhlCi0gICogc3RyZW5ndGggb2YgYSBwYXNzd29yZCAqLwotLQljID0gKHVuc2lnbmVkIGNoYXIpbmV3cGFzc1swXTsKLS0JaWYgKHVwcGVycyAmJiBpc2FzY2lpKGMpICYmIGlzdXBwZXIoYykpIHVwcGVycy0tOwotLQljID0gKHVuc2lnbmVkIGNoYXIpbmV3cGFzc1tsZW5ndGggLSAxXTsKLS0JaWYgKGRpZ2l0cyAmJiBpc2FzY2lpKGMpICYmIGlzZGlnaXQoYykpIGRpZ2l0cy0tOwotKwlpZiAocGFyYW1zLT5maXJzdHVwcGVyX2xhc3RkaWdpdF9jaGVjaykgewotKwkJYyA9ICh1bnNpZ25lZCBjaGFyKW5ld3Bhc3NbMF07Ci0rCQlpZiAodXBwZXJzICYmIGlzYXNjaWkoYykgJiYgaXN1cHBlcihjKSkgdXBwZXJzLS07Ci0rCQljID0gKHVuc2lnbmVkIGNoYXIpbmV3cGFzc1tsZW5ndGggLSAxXTsKLSsJCWlmIChkaWdpdHMgJiYgaXNhc2NpaShjKSAmJiBpc2RpZ2l0KGMpKSBkaWdpdHMtLTsKLSsJfQotIAotIC8qIENvdW50IHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IGNoYXJhY3RlciBjbGFzc2VzIHdlJ3ZlIHNlZW4uICBXZSBhc3N1bWUKLSAgKiB0aGF0IHRoZXJlIGFyZSBubyBub24tQVNDSUkgY2hhcmFjdGVycyBmb3IgZGlnaXRzLiAqLwotZGlmZiAtdXJOcCBwYW1fcGFzc3dkcWMtMS4wLjUtb3JpZy9wYXNzd2RxYy5oIHBhbV9wYXNzd2RxYy0xLjAuNS9wYXNzd2RxYy5oCi0tLS0gcGFtX3Bhc3N3ZHFjLTEuMC41LW9yaWcvcGFzc3dkcWMuaAkyMDA4LTAyLTEyIDE0OjMwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIHBhbV9wYXNzd2RxYy0xLjAuNS9wYXNzd2RxYy5oCTIwMDktMDktMjUgMTQ6MDg6NTYuMjE0Njk1ODU4IC0wNDAwCi1AQCAtNywxMiArNywxNSBAQAotIAotICNpbmNsdWRlIDxwd2QuaD4KLSAKLSsjZGVmaW5lIEZJTEVfTEVOCQk0MDk2CS8qIE1heCBmaWxlIGxlbiA9IDQwOTYgKi8KLSsKLSB0eXBlZGVmIHN0cnVjdCB7Ci0gCWludCBtaW5bNV0sIG1heDsKLSAJaW50IHBhc3NwaHJhc2Vfd29yZHM7Ci0gCWludCBtYXRjaF9sZW5ndGg7Ci0gCWludCBzaW1pbGFyX2Rlbnk7Ci0gCWludCByYW5kb21fYml0czsKLSsJaW50IGZpcnN0dXBwZXJfbGFzdGRpZ2l0X2NoZWNrOwotIH0gcGFzc3dkcWNfcGFyYW1zX3Q7Ci0gCi0gZXh0ZXJuIGNoYXIgX3Bhc3N3ZHFjX3dvcmRzZXRfNGtbMHgxMDAwXVs2XTsKLWRpZmYgLXVyTnAgcGFtX3Bhc3N3ZHFjLTEuMC41LW9yaWcvUkVBRE1FIHBhbV9wYXNzd2RxYy0xLjAuNS9SRUFETUUKLS0tLSBwYW1fcGFzc3dkcWMtMS4wLjUtb3JpZy9SRUFETUUJMjAwOC0wMi0xMiAxNDo0MzozMy4wMDAwMDAwMDAgLTA1MDAKLSsrKyBwYW1fcGFzc3dkcWMtMS4wLjUvUkVBRE1FCTIwMDktMDktMjggMTI6MTI6NDAuMjUxMDE2NDIzIC0wNDAwCi1AQCAtNDEsOSArNDEsMTIgQEAgd29yZHMgKHNlZSB0aGUgInBhc3NwaHJhc2UiIG9wdGlvbiBiZWxvdwotIE4zIGFuZCBONCBhcmUgdXNlZCBmb3IgcGFzc3dvcmRzIGNvbnNpc3Rpbmcgb2YgY2hhcmFjdGVycyBmcm9tIHRocmVlCi0gYW5kIGZvdXIgY2hhcmFjdGVyIGNsYXNzZXMsIHJlc3BlY3RpdmVseS4KLSAKLSsJZGlzYWJsZV9maXJzdHVwcGVyX2xhc3RkaWdpdF9jaGVjawlbXQotKwotIFdoZW4gY2FsY3VsYXRpbmcgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXIgY2xhc3NlcywgdXBwZXItY2FzZSBsZXR0ZXJzCi0gdXNlZCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBkaWdpdHMgdXNlZCBhcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYQotLXBhc3N3b3JkIGFyZSBub3QgY291bnRlZC4KLStwYXNzd29yZCBhcmUgbm90IGNvdW50ZWQuIFRvIGRpc2FibGUgdGhpcywgeW91IGNhbiBzcGVjaWZ5IAotKyJkaXNhYmxlX2ZpcnN0dXBwZXJfbGFzdGRpZ2l0X2NoZWNrIi4KLSAKLSBJbiBhZGRpdGlvbiB0byBiZWluZyBzdWZmaWNpZW50bHkgbG9uZywgcGFzc3dvcmRzIGFyZSByZXF1aXJlZCB0bwotIGNvbnRhaW4gZW5vdWdoIGRpZmZlcmVudCBjaGFyYWN0ZXJzIGZvciB0aGUgY2hhcmFjdGVyIGNsYXNzZXMgYW5kCi1AQCAtMTQyLDYgKzE0NSwxNCBAQCBUaGlzIGRpc2FibGVzIHVzZXIgaW50ZXJhY3Rpb24gd2l0aGluIHBhCi0gdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuICJ1c2VfZmlyc3RfcGFzcyIgYW5kICJ1c2VfYXV0aHRvayIgaXMgdGhhdAotIHRoZSBmb3JtZXIgaXMgaW5jb21wYXRpYmxlIHdpdGggImFza19vbGRhdXRodG9rIi4KLSAKLSsJb2xkcGFzc19wcm9tcHRfZmlsZT1hYnNvbHV0ZS1maWxlLXBhdGgJW10KLSsJbmV3cGFzc19wcm9tcHRfZmlsZT1hYm9zdWx0ZS1maWxlLXBhdGgJW10KLSsKLStUaGUgb3B0aW9ucyAib2xkcGFzc19wcm9tcHRfZmlsZSIgYW5kICJuZXdwYXNzX3Byb21wdF9maWxlIiBjYW4gYmUgdXNlZAotK3RvIG92ZXJyaWRlIHByb21wdHMgd2hpbGUgcmVxdWVzdGluZyBvbGQgcGFzc3dvcmQgYW5kIG5ldyBwYXNzd29yZCwgCi0rcmVzcGVjdGl2ZWx5LiBUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBwcm9tcHQgZmlsZXMgY2FuIGJlIDQwOTYgCi0rY2hhcmFjdGVycyBhdCBwcmVzZW50LiBJZiB0aGUgZmlsZSBzaXplIGlzIG1vcmUgdGhhbiA0MDk2IGNoYXJhY3RlcnMsIHRoZQotK291dHB1dCB3aWxsIGJlIHRydW5jYXRlZCB0byA0MDk2IGNoYXJhY3RlcnMuCi0gLS0gCi0gU29sYXIgRGVzaWduZXIgPHNvbGFyIGF0IG9wZW53YWxsLmNvbT4KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFtLXBhc3N3ZHFjL2ZpbGVzLzcwMDBNYWtlZmlsZS1maXgtQ0MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BhbS1wYXNzd2RxYy9maWxlcy83MDAwTWFrZWZpbGUtZml4LUNDLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzZmYmExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFtLXBhc3N3ZHFjL2ZpbGVzLzcwMDBNYWtlZmlsZS1maXgtQ0MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gcGFtX3Bhc3N3ZHFjLTEuMC41L01ha2VmaWxlLm9yaWcJMjAxMi0xMC0wMiAyMDo1Mzo1NS40NDM1OTI4ODYgKzA5MDAKLSsrKyBwYW1fcGFzc3dkcWMtMS4wLjUvTWFrZWZpbGUJMjAxMi0xMC0wMiAyMDo1NDoxOS4wNzYxMDgwMDEgKzA5MDAKLUBAIC0yLDcgKzIsNyBAQAotICMgQ29weXJpZ2h0IChjKSAyMDAwLTIwMDMsMjAwNSBieSBTb2xhciBEZXNpZ25lci4gIFNlZSBMSUNFTlNFLgotICMKLSAKLS1DQyA9IGdjYwotKyNDQyA9IGdjYwotIExEID0gJChDQykKLSBSTSA9IHJtIC1mCi0gTUtESVIgPSBta2RpciAtcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYW0tcGFzc3dkcWMvcGFtLXBhc3N3ZHFjXzEuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYW0tcGFzc3dkcWMvcGFtLXBhc3N3ZHFjXzEuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjlhYTIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFtLXBhc3N3ZHFjL3BhbS1wYXNzd2RxY18xLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiUGx1Z2dhYmxlIHBhc3N3b3JkIHF1YWxpdHktY29udHJvbCBtb2R1bGUuIgotREVTQ1JJUFRJT04gPSAicGFtX3Bhc3N3ZHFjIGlzIGEgc2ltcGxlIHBhc3N3b3JkIHN0cmVuZ3RoIGNoZWNraW5nIG1vZHVsZSBmb3IgXAotUEFNLWF3YXJlIHBhc3N3b3JkIGNoYW5naW5nIHByb2dyYW1zLCBzdWNoIGFzIHBhc3N3ZCgxKS4gSW4gYWRkaXRpb24gXAotdG8gY2hlY2tpbmcgcmVndWxhciBwYXNzd29yZHMsIGl0IG9mZmVycyBzdXBwb3J0IGZvciBwYXNzcGhyYXNlcyBhbmQgXAotY2FuIHByb3ZpZGUgcmFuZG9tbHkgZ2VuZXJhdGVkIHBhc3N3b3Jkcy4gQWxsIGZlYXR1cmVzIGFyZSBvcHRpb25hbCBcCi1hbmQgY2FuIGJlIChyZS0pY29uZmlndXJlZCB3aXRob3V0IHJlYnVpbGRpbmcuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9wYXNzd2RxYy8iCi1TRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9CYXNlIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUyODRkMDEzZWYwOGU2NmQ0NzM3ZjQ0NmM1ODkwNTUwIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbndhbGwuY29tL3BhbS9tb2R1bGVzL3BhbV9wYXNzd2RxYy9wYW1fcGFzc3dkcWMtMS4wLjUudGFyLmd6IFwKLSAgICBmaWxlOi8vMTAwMHBhdGNoLTIxOTIwMS5wYXRjaCBcCi0gICAgZmlsZTovLzcwMDBNYWtlZmlsZS1maXgtQ0MucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImNkOWMwMTRmNzM2MTU4YjFhNjAzODRhOGUyYmRjMjhhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyNTI4ZGRmN2Q4MjE5Yzc4OGI2ZTc3MDIzNjE2MTFmZjE2YzYzNDBiNmRjMGY0MThmZjE2NGFhZGM0YTRhODgiCi0KLQotUyA9ICIke1dPUktESVJ9L3BhbV9wYXNzd2RxYy0ke1BWfSIKLQotREVQRU5EUyA9ICJsaWJwYW0iCi0KLUVYVFJBX09FTUFLRSA9ICJDRkxBR1M9IiR7Q0ZMQUdTfSAtV2FsbCAtZlBJQyAtREhBVkVfU0hBRE9XIiBcCi0gICAgU0VDVVJFRElSPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5IFwKLSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvcGFtX3Bhc3N3ZHFjLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8uZGVidWciCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bhc3N3ZHFjL3Bhc3N3ZHFjL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MDIzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bhc3N3ZHFjL3Bhc3N3ZHFjL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0FkZCBMREZMQUdTIHZhcmlhYmxlIHRvIE1ha2VmaWxlIHNvIHRoYXQgZXh0cmEgbGlua2VyIGZsYWdzIGNhbiBiZSBzZW50IHZpYSB0aGlzIHZhcmlhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNDlkNjIyZC4uY2QxNzMzNCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTQ4LDE4ICs0OCwxNyBAQCBDRkxBR1MgPSAtV2FsbCAtVyAtTzIKKyBDRkxBR1NfbGliID0gJChDRkxBR1MpIC1mUElDCisgQ0ZMQUdTX2JpbiA9ICQoQ0ZMQUdTKSAtZm9taXQtZnJhbWUtcG9pbnRlcgorIAorLUxERkxBR1MgPQorIExERkxBR1Nfc2hhcmVkID0gLS1zaGFyZWQKKyBMREZMQUdTX3NoYXJlZF9MSU5VWCA9IC0tc2hhcmVkCisgTERGTEFHU19zaGFyZWRfU1VOID0gLUcKKyBMREZMQUdTX3NoYXJlZF9IUCA9IC1iCisgTERGTEFHU19saWIgPSAkKExERkxBR1Nfc2hhcmVkKQorLUxERkxBR1NfbGliX0xJTlVYID0gJChMREZMQUdTX3NoYXJlZF9MSU5VWCkgXAorK0xERkxBR1NfbGliX0xJTlVYID0gJChMREZMQUdTKSAkKExERkxBR1Nfc2hhcmVkX0xJTlVYKSBcCisgCS1XbCwtLXNvbmFtZSwkKFNIQVJFRF9MSUIpLC0tdmVyc2lvbi1zY3JpcHQsJChNQVBfTElCKQorIExERkxBR1NfbGliX1NVTiA9ICQoTERGTEFHU19zaGFyZWRfU1VOKQorIExERkxBR1NfbGliX0hQID0gJChMREZMQUdTX3NoYXJlZF9IUCkKKyBMREZMQUdTX3BhbSA9ICQoTERGTEFHU19zaGFyZWQpCistTERGTEFHU19wYW1fTElOVVggPSAkKExERkxBR1Nfc2hhcmVkX0xJTlVYKSBcCisrTERGTEFHU19wYW1fTElOVVggPSAkKExERkxBR1MpICQoTERGTEFHU19zaGFyZWRfTElOVVgpIFwKKyAJLVdsLC0tdmVyc2lvbi1zY3JpcHQsJChNQVBfUEFNKQorIExERkxBR1NfcGFtX1NVTiA9ICQoTERGTEFHU19zaGFyZWRfU1VOKQorIExERkxBR1NfcGFtX0hQID0gJChMREZMQUdTX3NoYXJlZF9IUCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWNfMS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bhc3N3ZHFjL3Bhc3N3ZHFjXzEuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OGRiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bhc3N3ZHFjL3Bhc3N3ZHFjXzEuMy4xLmJiCkBAIC0wLDAgKzEsNjMgQEAKK1NVTU1BUlkgPSAiQSBwYXNzd29yZC9wYXNzcGhyYXNlIHN0cmVuZ3RoIGNoZWNraW5nIGFuZCBlbmZvcmNlbWVudCB0b29sc2V0IgorREVTQ1JJUFRJT04gPSAiXAorcGFzc3dkcWMgaXMgYSBwYXNzd29yZC9wYXNzcGhyYXNlIHN0cmVuZ3RoIGNoZWNraW5nIGFuZCBwb2xpY3kgZW5mb3JjZW1lbnQgXAordG9vbHNldCwgaW5jbHVkaW5nIGFuIG9wdGlvbmFsIFBBTSBtb2R1bGUgKHBhbV9wYXNzd2RxYyksIGNvbW1hbmQtbGluZSBcCitwcm9ncmFtcyAocHdxY2hlY2sgYW5kIHB3cWdlbiksIGFuZCBhIGxpYnJhcnkgKGxpYnBhc3N3ZHFjKS4gXAorcGFtX3Bhc3N3ZHFjIGlzIG5vcm1hbGx5IGludm9rZWQgb24gcGFzc3dvcmQgY2hhbmdlcyBieSBwcm9ncmFtcyBzdWNoIGFzIFwKK3Bhc3N3ZCgxKS4gIEl0IGlzIGNhcGFibGUgb2YgY2hlY2tpbmcgcGFzc3dvcmQgb3IgcGFzc3BocmFzZSBzdHJlbmd0aCwgXAorZW5mb3JjaW5nIGEgcG9saWN5LCBhbmQgb2ZmZXJpbmcgcmFuZG9tbHktZ2VuZXJhdGVkIHBhc3NwaHJhc2VzLCB3aXRoIFwKK2FsbCBvZiB0aGVzZSBmZWF0dXJlcyBiZWluZyBvcHRpb25hbCBhbmQgZWFzaWx5IChyZS0pY29uZmlndXJhYmxlLiBcCitcCitwd3FjaGVjayBhbmQgcHdxZ2VuIGFyZSBzdGFuZGFsb25lIHBhc3N3b3JkL3Bhc3NwaHJhc2Ugc3RyZW5ndGggY2hlY2tpbmcgXAorYW5kIHJhbmRvbSBwYXNzcGhyYXNlIGdlbmVyYXRvciBwcm9ncmFtcywgcmVzcGVjdGl2ZWx5LCB3aGljaCBhcmUgdXNhYmxlIFwKK2Zyb20gc2NyaXB0cy4gXAorXAorbGlicGFzc3dkcWMgaXMgdGhlIHVuZGVybHlpbmcgbGlicmFyeSwgd2hpY2ggbWF5IGFsc28gYmUgdXNlZCBmcm9tIFwKK3RoaXJkLXBhcnR5IHByb2dyYW1zLiBcCisiCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbndhbGwuY29tL3Bhc3N3ZHFjIgorU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvQmFzZSIKKworREVQRU5EUyArPSAibGlicGFtIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFiNGFmNmYzZDRlZTA3OWEzODEwNzM2NmU5M2IzMzRkIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbndhbGwuY29tLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODc4YjU3YmNkM2ZkYmNmM2Q0YjM2MmRiYzYyMjhiOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMWZlZGVhZjc1OWU4YTBmMzJkMjhiNTgxMWVmMTFiNWE1MzY1MTU0ODQ5MTkwZjRiN2ZhYjY3MGE3MGZmYjE0IgorCisjIGV4cGxpY2l0bHkgZGVmaW5lIExJTlVYX1BBTSBpbiBjYXNlIERJU1RST19GRUFUVVJFUyBubyBwYW0KKyMgdGhpcyBwYWNrYWdlJ3MgcGFtX3Bhc3N3ZHFjLnNvIG5lZWRzIHBhbQorQ0ZMQUdTX2FwcGVuZCArPSAiLVdhbGwgLWZQSUMgLURIQVZFX1NIQURPVyAtRExJTlVYX1BBTSIKKworIyAtZSBpcyBubyBsb25nZXIgZGVmYXVsdCBzZXR0aW5nIGluIGJpdGJha2UuY29uZgorRVhUUkFfT0VNQUtFID0gIi1lIgorCitkb19jb21waWxlKCkgeworICAgICMgbWFrZSBzdXJlIHN1YiBtYWtlIHVzZSBlbnZpcm9ubWVudCB0byBvdmVycmlkZSB2YXJpYWJsZXMgaW4gTWFrZWZpbGUKKyAgICAjIExpbnV4KSAgICAkKE1BS0UpLCB0aGVyZSBpcyBhIHRhYiBiZXR3ZWVuCisgICAgc2VkIC1pIC1lICdzL0xpbnV4KQkkKE1BS0UpIENGTEFHU19saWIvTGludXgpCSQoTUFLRSkgLWUgQ0ZMQUdTX2xpYi8nICR7U30vTWFrZWZpbGUKKworICAgICMgTERfbGliIGFuZCBMRCBtdXN0IGJlIENDIGJlY2F1c2Ugb2YgTWFrZWZpbGUKKyAgICBvZV9ydW5tYWtlIExEPSIke0NDfSIKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFNIQVJFRF9MSUJESVI9JHtiYXNlX2xpYmRpcn0gXAorICAgICAgICAgICBERVZFTF9MSUJESVI9JHtsaWJkaXJ9IFNFQ1VSRURJUj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCisgICAgICAgICAgIElOU1RBTEw9Imluc3RhbGwgLXAiCit9CisKK1BST1ZJREVTICs9ICJwYW0tJHtCUE59IgorUEFDS0FHRVMgPSsgImxpYiR7QlBOfSBwYW0tJHtCUE59IgorCitGSUxFU19saWIke0JQTn0gPSAiJHtiYXNlX2xpYmRpcn0vbGlicGFzc3dkcWMuc28uMCIKK0ZJTEVTX3BhbS0ke0JQTn0gPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvcGFtX3Bhc3N3ZHFjLnNvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8uZGVidWciCisKK1JERVBFTkRTXyR7UE59ID0gImxpYiR7QlBOfSBwYW0tJHtCUE59IgorUkRFUEVORFNfcGFtLSR7QlBOfSA9ICJsaWIke0JQTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wY3NjLWxpdGUvcGNzYy1saXRlXzEuOC4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQyY2IzMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJQQy9TQyBMaXRlIHNtYXJ0IGNhcmQgZnJhbWV3b3JrIGFuZCBhcHBsaWNhdGlvbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vcGNzY2xpdGUuYWxpb3RoLmRlYmlhbi5vcmcvIgotTElDRU5TRSA9ICJCU0QgJiBHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkJTRCIKLUxJQ0VOU0VfJHtQTn0tbGliID0gIkJTRCIKLUxJQ0VOU0VfJHtQTn0tZG9jID0gIkJTRCIKLUxJQ0VOU0VfJHtQTn0tZGV2ID0gIkJTRCIKLUxJQ0VOU0VfJHtQTn0tZGJnID0gIkJTRCAmIEdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0tc3B5ID0gIkdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0tc3B5LWRldiA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iY2ZiZDg1MjMwYWMzYzU4NmZiMjk0YzhiNjI3Y2YzMiIKLURFUEVORFMgPSAidWRldiIKLQotU1JDX1VSSSA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL2Zycy9kb3dubG9hZC5waHAvZmlsZS80MTI2L3Bjc2MtbGl0ZS0ke1BWfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjRkY2QyMmQyMGE2ZGY4ODEwZmFjNTQ4MGNjMzIwYjZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzMTUwNDdlODA4ZDYzYTMyNjJjNGEwNDBmNzc1NDhhZjJlMDRkMWZkNzA3ZTBjMjc1OTM2OWI5MjZmYmJjM2IiCi0KLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLWxpYnVzYiBcCi0gICAgLS1lbmFibGUtbGlidWRldiBcCi0gICAgLS1lbmFibGUtdXNiZHJvcGRpcj0ke2xpYmRpcn0vcGNzYy9kcml2ZXJzIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L3Bjc2MtbGl0ZS0ke1BWfSIKLQotUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZGJnICR7UE59LWRldiAke1BOfS1saWIgJHtQTn0tZG9jICR7UE59LXNweSAke1BOfS1zcHktZGV2IgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJjY2lkIgotCi1GSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L3Bjc2NkIgotRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWJwY3NjbGl0ZSoke1NPTElCU30iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnBjc2NsaXRlLmxhIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicGNzY2xpdGUuc28iCi0gICAgICAgICAgICAgICAgICAgCi1GSUxFU18ke1BOfS1zcHkgPSAiJHtiaW5kaXJ9L3Bjc2Mtc3B5IFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicGNzY3NweSoke1NPTElCU30iCi1GSUxFU18ke1BOfS1zcHktZGV2ID0gIiR7bGliZGlyfS9saWJwY3Njc3B5LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnBjc2NzcHkuc28gIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInBjc2NkLnNvY2tldCIKLVJERVBFTkRTXyR7UE59LXNweSArPSJweXRob24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wY3NjLWxpdGUvcGNzYy1saXRlXzEuOC4yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGQ1OGIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wY3NjLWxpdGUvcGNzYy1saXRlXzEuOC4yMi5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIlBDL1NDIExpdGUgc21hcnQgY2FyZCBmcmFtZXdvcmsgYW5kIGFwcGxpY2F0aW9ucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9wY3NjbGl0ZS5hbGlvdGguZGViaWFuLm9yZy8iCitMSUNFTlNFID0gIkJTRCAmIEdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiQlNEIgorTElDRU5TRV8ke1BOfS1saWIgPSAiQlNEIgorTElDRU5TRV8ke1BOfS1kb2MgPSAiQlNEIgorTElDRU5TRV8ke1BOfS1kZXYgPSAiQlNEIgorTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEICYgR1BMdjMrIgorTElDRU5TRV8ke1BOfS1zcHkgPSAiR1BMdjMrIgorTElDRU5TRV8ke1BOfS1zcHktZGV2ID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYzOGIzZDFjN2VmN2ZjMmM4YjZkMjBjZDM4ZWZkYzI5IgorREVQRU5EUyA9ICJ1ZGV2IgorCitTUkNfVVJJID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvZnJzL2Rvd25sb2FkLnBocC9maWxlLzQyMjUvcGNzYy1saXRlLSR7UFZ9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMGVjMTAzYjFlZjI5OGQwYzU4ZDZlZjZiMDBiOWNmMTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmEzNThmNjFlZDNiNjZhN2Y2ZTFmNGU3OTRhOTRjN2JlNGM4MWI3YTU4ZWMzNjBjMzM3OTFlOGQ3ZDliZDQwNSIKKworCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtbGlidXNiIFwKKyAgICAtLWVuYWJsZS1saWJ1ZGV2IFwKKyAgICAtLWVuYWJsZS11c2Jkcm9wZGlyPSR7bGliZGlyfS9wY3NjL2RyaXZlcnMgXAorIgorCitTID0gIiR7V09SS0RJUn0vcGNzYy1saXRlLSR7UFZ9IgorCitQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kYmcgJHtQTn0tZGV2ICR7UE59LWxpYiAke1BOfS1kb2MgJHtQTn0tc3B5ICR7UE59LXNweS1kZXYiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImNjaWQiCisKK0ZJTEVTXyR7UE59ID0gIiR7c2JpbmRpcn0vcGNzY2QiCitGSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYnBjc2NsaXRlKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicGNzY2xpdGUubGEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwY3NjbGl0ZS5zbyIKKyAgICAgICAgICAgICAgICAgICAKK0ZJTEVTXyR7UE59LXNweSA9ICIke2JpbmRpcn0vcGNzYy1zcHkgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwY3Njc3B5KiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LXNweS1kZXYgPSAiJHtsaWJkaXJ9L2xpYnBjc2NzcHkubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicGNzY3NweS5zbyAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicGNzY2Quc29ja2V0IgorUkRFUEVORFNfJHtQTn0tc3B5ICs9InB5dGhvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90ci9maXhfcWEtaXNzdWVfaW5jbHVkZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90ci9maXhfcWEtaXNzdWVfaW5jbHVkZS5wYXRjaAppbmRleCBiNzg2NjMzLi5lY2RiZmZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHIvZml4X3FhLWlzc3VlX2luY2x1ZGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyL2ZpeF9xYS1pc3N1ZV9pbmNsdWRlLnBhdGNoCkBAIC0xMSw4ICsxMSw4IEBACiAtLS0gYS90b29sa2l0L01ha2VmaWxlLmFtCTIwMTItMDUtMDMgMTU6NTI6MjIuMDAwMDAwMDAwICswMjAwCiArKysgYi90b29sa2l0L01ha2VmaWxlLmFtCTIwMTQtMDEtMTMgMTI6MTI6MjYuMDMwMzY5MzU3ICswMTAwCiBAQCAtMSw0ICsxLDQgQEAKLS1JTkNMVURFUyA9IC1JJChpbmNsdWRlZGlyKSAtSS4uL3NyYyBATElCR0NSWVBUX0NGTEFHU0AKLStJTkNMVURFUyA9IC1JLi4vc3JjIEBMSUJHQ1JZUFRfQ0ZMQUdTQAorLUFNX0NQUEZMQUdTID0gLUkkKGluY2x1ZGVkaXIpIC1JLi4vc3JjIEBMSUJHQ1JZUFRfQ0ZMQUdTQAorK0FNX0NQUEZMQUdTID0gLUkuLi9zcmMgQExJQkdDUllQVF9DRkxBR1NACiAgCiAgbm9pbnN0X0hFQURFUlMgPSBhZXMuaCBjdHJtb2RlLmggcGFyc2UuaCBzZXNza2V5cy5oIHJlYWRvdHIuaCBzaGExaG1hYy5oCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHIvc2VwYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHIvc2VwYnVpbGQucGF0Y2gKaW5kZXggZjY2ZTUyOC4uZGRhMTdhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyL3NlcGJ1aWxkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90ci9zZXBidWlsZC5wYXRjaApAQCAtOSw4ICs5LDggQEAKIC0tLSBsaWJvdHItNC4wLjAub3JpZy90b29sa2l0L01ha2VmaWxlLmFtCTIwMTQtMDctMTYgMTg6MDk6NTkuNzc3ODU4MDIyICswMDAwCiArKysgbGlib3RyLTQuMC4wL3Rvb2xraXQvTWFrZWZpbGUuYW0JMjAxNC0wNy0xNyAwNjoyODo1MS4zNTkwNjYxNTUgKzAwMDAKIEBAIC0xLDQgKzEsNCBAQAotLUlOQ0xVREVTID0gLUkuLi9zcmMgQExJQkdDUllQVF9DRkxBR1NACi0rSU5DTFVERVMgPSAtSSQodG9wX3NyY2Rpcikvc3JjIEBMSUJHQ1JZUFRfQ0ZMQUdTQAorLUFNX0NQUEZMQUdTID0gLUkuLi9zcmMgQExJQkdDUllQVF9DRkxBR1NACisrQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2Rpcikvc3JjIEBMSUJHQ1JZUFRfQ0ZMQUdTQAogIAogIG5vaW5zdF9IRUFERVJTID0gYWVzLmggY3RybW9kZS5oIHBhcnNlLmggc2Vzc2tleXMuaCByZWFkb3RyLmggc2hhMWhtYWMuaAogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyXzQuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vbGlib3RyXzQuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDllZWFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90cl80LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiKE9UUikgTWVzc2FnaW5nIGFsbG93cyB5b3UgdG8gaGF2ZSBwcml2YXRlIGNvbnZlcnNhdGlvbnMgb3ZlciBpbnN0YW50IG1lc3NhZ2luZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuY3lwaGVycHVua3MuY2Evb3RyLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MmZlMTc0YmFkNmRhMzc2M2Y2ZTllOWVhZmY2ZGYyNCIKLURFUEVORFMgPSAibGliZ2NyeXB0IGxpYmdwZy1lcnJvciIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmN5cGhlcnB1bmtzLmNhL290ci8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4X3FhLWlzc3VlX2luY2x1ZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VwYnVpbGQucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDA5NzlkY2E4MmQ3MDM4M2ZjZDFiMDFmMzk3NDM2M2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y5MTE5OTQ0MDk4OThlNzQ1Mjc3MzA3NDVlZjM1ZWQ3NWMzNTJjNjk1YTE4MjJhNjc3YTM0YjJjZjAyOTNiNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHJfNC4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9saWJvdHJfNC4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcwMTI0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL2xpYm90cl80LjEuMS5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIihPVFIpIE1lc3NhZ2luZyBhbGxvd3MgeW91IHRvIGhhdmUgcHJpdmF0ZSBjb252ZXJzYXRpb25zIG92ZXIgaW5zdGFudCBtZXNzYWdpbmciCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmN5cGhlcnB1bmtzLmNhL290ci8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTJmZTE3NGJhZDZkYTM3NjNmNmU5ZTllYWZmNmRmMjQiCitERVBFTkRTID0gImxpYmdjcnlwdCBsaWJncGctZXJyb3IiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jeXBoZXJwdW5rcy5jYS9vdHIvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9xYS1pc3N1ZV9pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NlcGJ1aWxkLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImRhYzVhODc3OGEzNWY2NzRjMDQ2ZGRmNWQ5N2U0ZDgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiM2IxODI0MjQyNTEwNjdhOTUyZmI0ZTZjN2I5NWEyMWU2NDRmYmIyN2ZiZDVmOGFmMmIyZWQ4N2NhNDE5ZjUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luLW90ci9pZ25vcmVfZXh0cmEtcG9ydGFiaWxpdHlfd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4tb3RyL2lnbm9yZV9leHRyYS1wb3J0YWJpbGl0eV93YXJuaW5ncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIwYWQ4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4tb3RyL2lnbm9yZV9leHRyYS1wb3J0YWJpbGl0eV93YXJuaW5ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXBpZGdpbi1vdHI6IFNpbGVuY2Ugbm8tZXh0cmEtcG9ydGFiaWxpdHkgd2FybmluZ3MKLQotTWFrZSBpdCBidWlsZCB3aXRoIE9FLCB3YXMgbm90IGJ1aWxkaW5nIHdpdGggd2FybmluZyB0dXJuZWQgb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEpha29iIERyZXhlbCA8amFrZTQyQHJvbW1lbC5zdHcudW5pLWVybGFuZ2VuLmRlPgotCi0tLS0gYS9jb25maWd1cmUuYWMJMjAxMi0wOS0wMSAxNzowMzoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDE0LTAxLTEyIDIxOjU5OjI0LjkyMDMwMDIxNSArMDEwMAotQEAgLTQsNyArNCw3IEBACi0gCi0gQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKLSAKLS1BTV9JTklUX0FVVE9NQUtFKFstV2FsbCAtV2Vycm9yXSkKLStBTV9JTklUX0FVVE9NQUtFKFstV2FsbCAtV2Vycm9yIC1Xbm8tZXh0cmEtcG9ydGFiaWxpdHldKQotIAotIEFDX1BST0dfQ0MKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi1vdHJfNC4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4tb3RyXzQuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2NkYzcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi1vdHJfNC4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIihPVFIpIE1lc3NhZ2luZyBhbGxvd3MgeW91IHRvIGhhdmUgcHJpdmF0ZSBjb252ZXJzYXRpb25zIG92ZXIgaW5zdGFudCBtZXNzYWdpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmN5cGhlcnB1bmtzLmNhL290ci8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTJmZTE3NGJhZDZkYTM3NjNmNmU5ZTllYWZmNmRmMjQiCi1ERVBFTkRTID0gImxpYmdjcnlwdCBsaWJvdHIgcGlkZ2luIGludGx0b29sLW5hdGl2ZSIKLQotUE5CTEFDS0xJU1RbcGlkZ2luLW90cl0gPz0gImRlcGVuZHMgb24gYmxhY2tsaXN0ZWQgcGlkZ2luIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3lwaGVycHVua3MuY2Evb3RyLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9pZ25vcmVfZXh0cmEtcG9ydGFiaWxpdHlfd2FybmluZ3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWFkYjk1MzM3NmFjYzQ3NGU1NjA0MWQ0YzEyYWEyYzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDU2YjNmMDkyZGJlOWVlNjU5NzY0MWM3ZDJkZDI5NDg4NGRjMDRiYTQ3YWFmNGVjNTcxY2Q1NDk3N2RmNDY5MSIKLQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vcGlkZ2luLyoiCi1GSUxFU18ke1BOfS1kYmcgPSAiJHtsaWJkaXJ9L3BpZGdpbi8uZGVidWciCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9waWRnaW4vLmRlYnVnL3BpZGdpbi1vdHIuc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIi91c3Ivc3JjL2RlYnVnL3BpZGdpbi1vdHIvJHtQVn0tJHtQUn0vJHtQfS8qIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4tb3RyXzQuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luLW90cl80LjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTIxY2QzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luLW90cl80LjAuMi5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIihPVFIpIE1lc3NhZ2luZyBhbGxvd3MgeW91IHRvIGhhdmUgcHJpdmF0ZSBjb252ZXJzYXRpb25zIG92ZXIgaW5zdGFudCBtZXNzYWdpbmciCitIT01FUEFHRSA9ICJodHRwczovL290ci5jeXBoZXJwdW5rcy5jYS8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTJmZTE3NGJhZDZkYTM3NjNmNmU5ZTllYWZmNmRmMjQiCitERVBFTkRTID0gImxpYmdjcnlwdCBsaWJvdHIgcGlkZ2luIGd0aysgaW50bHRvb2wtbmF0aXZlIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9vdHIuY3lwaGVycHVua3MuY2EvJHtCUH0udGFyLmd6IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZWYxNGUxMzM0YTRiYzgwZTVkNTMwZjlhM2NmYzYyNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNGI1OWVlZjRhOTRiMWQyOWRiZTBjMTA2ZGQwMGNkYzYzMGU0N2YxODYxOWZjNzU0ZTVhZmJmNTcyNGViYWM0IgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vcGlkZ2luLyoiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbl8yLjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW5fMi4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjJlMjFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbl8yLjExLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJtdWx0aS1wcm90b2NvbCBpbnN0YW50IG1lc3NhZ2luZyBjbGllbnQiCi1TRUNUSU9OID0gIngxMS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJweXRob24gdmlydHVhbC9saWJpbnRsIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyIGdjb25mIGdsaWItMi4wLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZ2NvbmYgcGVybG5hdGl2ZQotCi1TUkNfVVJJID0gIlwKLSAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vcGlkZ2luL3BpZGdpbi0ke1BWfS50YXIuYnoyIFwKLSAgICBmaWxlOi8vc2FuaXRpemUtY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICBmaWxlOi8vcHVycGxlLU9FLWJyYW5kaW5nLTI1LnBhdGNoIFwKLSAgICBmaWxlOi8vcGlkZ2luLWNyb3NzLXB5dGhvbi0yNjUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2IxNjc0NzRkYjY2OWFhYjJmNzFmYTQ2ODM1ZmI4M2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjcyNjEzNDQwNTg2ZGEzYmRiYTZkNThlNzE4ZGNlMWIyYzMxMGFkZjg5NDZkZTY2ZDgwNzc4MjNlNTdiMzMzMyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyBjb25zb2xldWkgYXZhaGkgZGJ1cyBpZG4gbnNzIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEgZ3RrIHN0YXJ0dXAtbm90aWZpY2F0aW9uJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2ZhcnNpZ2h0Ml0gPSAiLS1lbmFibGUtZmFyc3RyZWFtLC0tZGlzYWJsZS1mYXJzdHJlYW0sZmFyc2lnaHQyIgotIyAgLS1kaXNhYmxlLWdzdHJlYW1lciAgICAgY29tcGlsZSB3aXRob3V0IEdTdHJlYW1lciBhdWRpbyBzdXBwb3J0Ci0jICAtLWRpc2FibGUtZ3N0cmVhbWVyLXZpZGVvCi0jICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIHdpdGhvdXQgR1N0cmVhbWVyIDEuMCBWaWRlbyBPdmVybGF5IHN1cHBvcnQKLSMgIC0tZGlzYWJsZS1nc3RyZWFtZXItaW50ZXJmYWNlcwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSB3aXRob3V0IEdTdHJlYW1lciAwLjEwIGludGVyZmFjZSBzdXBwb3J0Ci0jICAtLXdpdGgtZ3N0cmVhbWVyPTx2ZXJzaW9uPgotIyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSB3aXRoIEdTdHJlYW1lciAwLjEwIG9yIDEuMCBpbnRlcmZhY2UKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItLWVuYWJsZS1nc3RyZWFtZXIsLS1kaXNhYmxlLWdzdHJlYW1lcixnc3RyZWFtZXIiCi1QQUNLQUdFQ09ORklHW3Z2XSA9ICItLWVuYWJsZS12diwtLWRpc2FibGUtdnYsZ3N0cmVhbWVyIgotUEFDS0FHRUNPTkZJR1tpZG5dID0gIi0tZW5hYmxlLWlkbiwtLWRpc2FibGUtaWRuLGxpYmlkbiIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGt1aSwtLWRpc2FibGUtZ3RrdWksZ3RrKyIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteD15ZXMgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sLS13aXRoLXg9bm8sdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sc3RhcnR1cC1ub3RpZmljYXRpb24iCi1QQUNLQUdFQ09ORklHW2NvbnNvbGV1aV0gPSAiLS1lbmFibGUtY29uc29sZXVpIC0td2l0aC1uY3Vyc2VzLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0sLS1kaXNhYmxlLWNvbnNvbGV1aSxuY3Vyc2VzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscyAtLXdpdGgtZ251dGxzLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1nbnV0bHMtbGlicz0ke1NUQUdJTkdfTElCRElSfSwtLWRpc2FibGUtZ251dGxzLGdudXRscyxsaWJwdXJwbGUtcGx1Z2luLXNzbC1nbnV0bHMiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyBkYnVzLWdsaWIiCi1QQUNLQUdFQ09ORklHW2F2YWhpXSA9ICItLWVuYWJsZS1hdmFoaSwtLWRpc2FibGUtYXZhaGksYXZhaGkiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS1lbmFibGUtbnNzLC0tZGlzYWJsZS1uc3MsbnNzIG5zcHIsbGlicHVycGxlLXBsdWdpbi1zc2wtbnNzIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtcGVybCBcCi0gICAgLS1kaXNhYmxlLXRjbCBcCi0gICAgLS1kaXNhYmxlLWdldm9sdXRpb24gXAotICAgIC0tZGlzYWJsZS1zY2hlbWFzLWluc3RhbGwgXAotICAgIC0tZGlzYWJsZS1ndGtzcGVsbCBcCi0gICAgLS1kaXNhYmxlLW1lYW53aGlsZSBcCi0gICAgLS1kaXNhYmxlLW5tIFwKLSAgICAtLWRpc2FibGUtc2NyZWVuc2F2ZXIgXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICB0b3VjaCAke1N9L3BvL01ha2VmaWxlCi0gICAgc2VkIC1pICJzI1BZX1ZFUlNJT049YCRQWVRIT04gLWMgJ2ltcG9ydCBzeXMgOyBwcmludCBzeXMudmVyc2lvblswOjNdJ2AjUFlfVkVSU0lPTj0ke1BZVEhPTl9CQVNFVkVSU0lPTn0jZyIgJHtTfS9jb25maWd1cmUuYWMKLX0KLQotT0VfTFRfUlBBVEhfQUxMT1c9Ijoke2xpYmRpcn0vcHVycGxlLTI6IgotT0VfTFRfUlBBVEhfQUxMT1dbZXhwb3J0XT0iMSIKLQotUEFDS0FHRVMgPSsgImxpYnB1cnBsZS1kYmcgbGlicHVycGxlLWRldiBsaWJwdXJwbGUgbGliZ250LWRiZyBsaWJnbnQgbGliZ250LWRldiBmaW5jaC1kYmcgZmluY2ggZmluY2gtZGV2ICR7UE59LWRhdGEiCi0KLUxFQURfU09OQU1FID0gImxpYnB1cnBsZS5zby4wIgotRklMRVNfbGlicHVycGxlICAgICA9ICIke2xpYmRpcn0vbGlicHVycGxlKi5zby4qICR7bGliZGlyfS9wdXJwbGUtMiAke2JpbmRpcn0vcHVycGxlLSogJHtzeXNjb25mZGlyfS9nY29uZi9zY2hlbWFzL3B1cnBsZSogJHtkYXRhZGlyfS9wdXJwbGUvY2EtY2VydHMiCi1GSUxFU19saWJwdXJwbGUtZGV2ID0gIiR7bGliZGlyfS9saWJwdXJwbGUqLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB1cnBsZSouc28gXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi9saWJqYWJiZXIuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvbGlib3NjYXIuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvbGlieW1zZy5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYWNsb2NhbCIKLUZJTEVTX2xpYnB1cnBsZS1kYmcgKz0gIiR7bGliZGlyfS8uZGVidWcvbGlicHVycGxlKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvLmRlYnVnIgotRklMRVNfbGliZ250ICAgICAgICAgPSAiJHtsaWJkaXJ9L2xpYmdudC5zby4qICR7bGliZGlyfS9nbnQvKi5zbyIKLUZJTEVTX2xpYmdudC1kZXYgICAgID0gIiR7bGliZGlyfS9nbnQvKi5sYSIKLUZJTEVTX2xpYmdudC1kYmcgICAgID0gIiR7bGliZGlyfS9nbnQvLmRlYnVnIgotRklMRVNfZmluY2ggICAgICAgICAgPSAiJHtiaW5kaXJ9L2ZpbmNoIgotRklMRVNfZmluY2gtZGV2ICAgICAgPSAiJHtsaWJkaXJ9L2ZpbmNoLyoubGEiCi1GSUxFU19maW5jaC1kYmcgICAgICA9ICIke2JpbmRpcn0vLmRlYnVnL2ZpbmNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9maW5jaC8uZGVidWciCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2RhdGFkaXJ9LyR7UE59ICR7bGliZGlyfS8ke1BOfS8qLnNvIFwKLSAgICAgICAgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMiCi1SUkVDT01NRU5EU18ke1BOfSA9ICIke1BOfS1kYXRhIGxpYnB1cnBsZS1wcm90b2NvbC1pcmMgbGlicHVycGxlLXByb3RvY29sLXhtcHAiCi0KLUZJTEVTXyR7UE59LWRhdGEgPSAiJHtkYXRhZGlyfS9waXhtYXBzICR7ZGF0YWRpcn0vc291bmRzICR7ZGF0YWRpcn0vaWNvbnMgJHtkYXRhZGlyfS9hcHBkYXRhIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtQTn0vKi5sYSIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYnB1cnBsZS1wcm90b2NvbC0uKiBebGlicHVycGxlLXBsdWdpbi0uKiBecGlkZ2luLXBsdWdpbi0uKiBeZmluY2gtcGx1Z2luLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgcGlkZ3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3BpZGdpbicpCi0gICAgcHVycGxlICAgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3B1cnBsZS0yJykKLSAgICBmaW5jaCAgICA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZmluY2gnKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGlkZ3Jvb3QsICdeKFtebF1bXmldW15iXS4qKVwuc28kJywKLSAgICAgICAgb3V0cHV0X3BhdHRlcm49J3BpZGdpbi1wbHVnaW4tJXMnLAotICAgICAgICBkZXNjcmlwdGlvbj0nUGlkZ2luIHBsdWdpbiAlcycsCi0gICAgICAgIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKLQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHB1cnBsZSwgJ15saWIoLiopXC5zbyQnLAotICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGlicHVycGxlLXByb3RvY29sLSVzJywKLSAgICAgICAgZGVzY3JpcHRpb249J0xpYnB1cnBsZSBwcm90b2NvbCBwbHVnaW4gZm9yICVzJywKLSAgICAgICAgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHVycGxlLCAnXihzc2wtLiopXC5zbyQnLAotICAgICAgICBvdXRwdXRfcGF0dGVybj0nbGlicHVycGxlLXBsdWdpbi0lcycsCi0gICAgICAgIGRlc2NyaXB0aW9uPSdsaWJwdXJwbGUgcGx1Z2luICVzJywKLSAgICAgICAgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPSdsaWJwdXJwbGUtcGx1Z2luLXNzbCcpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwdXJwbGUsICdeKFtebF1bXmldW15iXS4qKVwuc28kJywKLSAgICAgICAgb3V0cHV0X3BhdHRlcm49J2xpYnB1cnBsZS1wbHVnaW4tJXMnLAotICAgICAgICBkZXNjcmlwdGlvbj0nbGlicHVycGxlIHBsdWdpbiAlcycsCi0gICAgICAgIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKLQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGZpbmNoLCAnXihbXmxdW15pXVteYl0uKilcLnNvJCcsCi0gICAgICAgIG91dHB1dF9wYXR0ZXJuPSdmaW5jaC1wbHVnaW4tJXMnLAotICAgICAgICBkZXNjcmlwdGlvbj0nRmluY2ggcGx1Z2luICVzJywKLSAgICAgICAgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luXzIuMTIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbl8yLjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg4ZjA4YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbl8yLjEyLjAuYmIKQEAgLTAsMCArMSwxMjAgQEAKK1NVTU1BUlkgPSAibXVsdGktcHJvdG9jb2wgaW5zdGFudCBtZXNzYWdpbmcgY2xpZW50IgorU0VDVElPTiA9ICJ4MTEvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAicHl0aG9uIHZpcnR1YWwvbGliaW50bCBpbnRsdG9vbC1uYXRpdmUgbGlieG1sMiBnY29uZiBnbGliLTIuMC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGdjb25mIHBlcmxuYXRpdmUKKworU1JDX1VSSSA9ICJcCisgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BpZGdpbi9waWRnaW4tJHtQVn0udGFyLmJ6MiBcCisgICAgZmlsZTovL3Nhbml0aXplLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgZmlsZTovL3B1cnBsZS1PRS1icmFuZGluZy0yNS5wYXRjaCBcCisgICAgZmlsZTovL3BpZGdpbi1jcm9zcy1weXRob24tMjY1LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjgyODc0MDBjNGU1NjYzZTBlNzg0NGU4NjhkNTE1MmFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhjM2QzNTM2ZDZkM2M5NzFiZDQzM2ZmOTk0NjY3OGFmNzBhMGY2YWE0ZTY5NjljYzJhODNiYjM1NzAxNWI3ZjgiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMgY29uc29sZXVpIGF2YWhpIGRidXMgaWRuIG5zcyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExIGd0ayBzdGFydHVwLW5vdGlmaWNhdGlvbicsICcnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tmYXJzaWdodDJdID0gIi0tZW5hYmxlLWZhcnN0cmVhbSwtLWRpc2FibGUtZmFyc3RyZWFtLGZhcnNpZ2h0MiIKKyMgIC0tZGlzYWJsZS1nc3RyZWFtZXIgICAgIGNvbXBpbGUgd2l0aG91dCBHU3RyZWFtZXIgYXVkaW8gc3VwcG9ydAorIyAgLS1kaXNhYmxlLWdzdHJlYW1lci12aWRlbworIyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSB3aXRob3V0IEdTdHJlYW1lciAxLjAgVmlkZW8gT3ZlcmxheSBzdXBwb3J0CisjICAtLWRpc2FibGUtZ3N0cmVhbWVyLWludGVyZmFjZXMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgd2l0aG91dCBHU3RyZWFtZXIgMC4xMCBpbnRlcmZhY2Ugc3VwcG9ydAorIyAgLS13aXRoLWdzdHJlYW1lcj08dmVyc2lvbj4KKyMgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgd2l0aCBHU3RyZWFtZXIgMC4xMCBvciAxLjAgaW50ZXJmYWNlCitQQUNLQUdFQ09ORklHW2dzdHJlYW1lcl0gPSAiLS1lbmFibGUtZ3N0cmVhbWVyLC0tZGlzYWJsZS1nc3RyZWFtZXIsZ3N0cmVhbWVyIgorUEFDS0FHRUNPTkZJR1t2dl0gPSAiLS1lbmFibGUtdnYsLS1kaXNhYmxlLXZ2LGdzdHJlYW1lciIKK1BBQ0tBR0VDT05GSUdbaWRuXSA9ICItLWVuYWJsZS1pZG4sLS1kaXNhYmxlLWlkbixsaWJpZG4iCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrdWksLS1kaXNhYmxlLWd0a3VpLGd0aysiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXg9eWVzIC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LC0td2l0aC14PW5vLHZpcnR1YWwvbGlieDExIgorUEFDS0FHRUNPTkZJR1tzdGFydHVwLW5vdGlmaWNhdGlvbl0gPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sLS1kaXNhYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLHN0YXJ0dXAtbm90aWZpY2F0aW9uIgorUEFDS0FHRUNPTkZJR1tjb25zb2xldWldID0gIi0tZW5hYmxlLWNvbnNvbGV1aSAtLXdpdGgtbmN1cnNlcy1oZWFkZXJzPSR7U1RBR0lOR19JTkNESVJ9LC0tZGlzYWJsZS1jb25zb2xldWksbmN1cnNlcyIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMgLS13aXRoLWdudXRscy1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtZ251dGxzLWxpYnM9JHtTVEFHSU5HX0xJQkRJUn0sLS1kaXNhYmxlLWdudXRscyxnbnV0bHMsbGlicHVycGxlLXBsdWdpbi1zc2wtZ251dGxzIgorUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMgZGJ1cy1nbGliIgorUEFDS0FHRUNPTkZJR1thdmFoaV0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0tZW5hYmxlLW5zcywtLWRpc2FibGUtbnNzLG5zcyBuc3ByLGxpYnB1cnBsZS1wbHVnaW4tc3NsLW5zcyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXBlcmwgXAorICAgIC0tZGlzYWJsZS10Y2wgXAorICAgIC0tZGlzYWJsZS1nZXZvbHV0aW9uIFwKKyAgICAtLWRpc2FibGUtc2NoZW1hcy1pbnN0YWxsIFwKKyAgICAtLWRpc2FibGUtZ3Rrc3BlbGwgXAorICAgIC0tZGlzYWJsZS1tZWFud2hpbGUgXAorICAgIC0tZGlzYWJsZS1ubSBcCisgICAgLS1kaXNhYmxlLXNjcmVlbnNhdmVyIFwKKyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgdG91Y2ggJHtTfS9wby9NYWtlZmlsZQorICAgIHNlZCAtaSAicyNQWV9WRVJTSU9OPWAkUFlUSE9OIC1jICdpbXBvcnQgc3lzIDsgcHJpbnQgc3lzLnZlcnNpb25bMDozXSdgI1BZX1ZFUlNJT049JHtQWVRIT05fQkFTRVZFUlNJT059I2ciICR7U30vY29uZmlndXJlLmFjCit9CisKK09FX0xUX1JQQVRIX0FMTE9XPSI6JHtsaWJkaXJ9L3B1cnBsZS0yOiIKK09FX0xUX1JQQVRIX0FMTE9XW2V4cG9ydF09IjEiCisKK1BBQ0tBR0VTID0rICJsaWJwdXJwbGUtZGJnIGxpYnB1cnBsZS1kZXYgbGlicHVycGxlIGxpYmdudC1kYmcgbGliZ250IGxpYmdudC1kZXYgZmluY2gtZGJnIGZpbmNoIGZpbmNoLWRldiAke1BOfS1kYXRhIgorCitMRUFEX1NPTkFNRSA9ICJsaWJwdXJwbGUuc28uMCIKK0ZJTEVTX2xpYnB1cnBsZSAgICAgPSAiJHtsaWJkaXJ9L2xpYnB1cnBsZSouc28uKiAke2xpYmRpcn0vcHVycGxlLTIgJHtiaW5kaXJ9L3B1cnBsZS0qICR7c3lzY29uZmRpcn0vZ2NvbmYvc2NoZW1hcy9wdXJwbGUqICR7ZGF0YWRpcn0vcHVycGxlL2NhLWNlcnRzIgorRklMRVNfbGlicHVycGxlLWRldiA9ICIke2xpYmRpcn0vbGlicHVycGxlKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwdXJwbGUqLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3B1cnBsZS0yLyoubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcHVycGxlLTIvbGliamFiYmVyLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3B1cnBsZS0yL2xpYm9zY2FyLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3B1cnBsZS0yL2xpYnltc2cuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2FjbG9jYWwiCitGSUxFU19saWJwdXJwbGUtZGJnICs9ICIke2xpYmRpcn0vLmRlYnVnL2xpYnB1cnBsZSogXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3B1cnBsZS0yLy5kZWJ1ZyIKK0ZJTEVTX2xpYmdudCAgICAgICAgID0gIiR7bGliZGlyfS9saWJnbnQuc28uKiAke2xpYmRpcn0vZ250Lyouc28iCitGSUxFU19saWJnbnQtZGV2ICAgICA9ICIke2xpYmRpcn0vZ250LyoubGEiCitGSUxFU19saWJnbnQtZGJnICAgICA9ICIke2xpYmRpcn0vZ250Ly5kZWJ1ZyIKK0ZJTEVTX2ZpbmNoICAgICAgICAgID0gIiR7YmluZGlyfS9maW5jaCIKK0ZJTEVTX2ZpbmNoLWRldiAgICAgID0gIiR7bGliZGlyfS9maW5jaC8qLmxhIgorRklMRVNfZmluY2gtZGJnICAgICAgPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy9maW5jaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZmluY2gvLmRlYnVnIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS8ke1BOfSAke2xpYmRpcn0vJHtQTn0vKi5zbyBcCisgICAgICAgICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tZGF0YSBsaWJwdXJwbGUtcHJvdG9jb2wtaXJjIGxpYnB1cnBsZS1wcm90b2NvbC14bXBwIgorCitGSUxFU18ke1BOfS1kYXRhID0gIiR7ZGF0YWRpcn0vcGl4bWFwcyAke2RhdGFkaXJ9L3NvdW5kcyAke2RhdGFkaXJ9L2ljb25zICR7ZGF0YWRpcn0vYXBwZGF0YSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7UE59LyoubGEiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJwdXJwbGUtcHJvdG9jb2wtLiogXmxpYnB1cnBsZS1wbHVnaW4tLiogXnBpZGdpbi1wbHVnaW4tLiogXmZpbmNoLXBsdWdpbi0uKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHBpZGdyb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9waWRnaW4nKQorICAgIHB1cnBsZSAgID0gZC5leHBhbmQoJyR7bGliZGlyfS9wdXJwbGUtMicpCisgICAgZmluY2ggICAgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2ZpbmNoJykKKworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBpZGdyb290LCAnXihbXmxdW15pXVteYl0uKilcLnNvJCcsCisgICAgICAgIG91dHB1dF9wYXR0ZXJuPSdwaWRnaW4tcGx1Z2luLSVzJywKKyAgICAgICAgZGVzY3JpcHRpb249J1BpZGdpbiBwbHVnaW4gJXMnLAorICAgICAgICBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JycpCisKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwdXJwbGUsICdebGliKC4qKVwuc28kJywKKyAgICAgICAgb3V0cHV0X3BhdHRlcm49J2xpYnB1cnBsZS1wcm90b2NvbC0lcycsCisgICAgICAgIGRlc2NyaXB0aW9uPSdMaWJwdXJwbGUgcHJvdG9jb2wgcGx1Z2luIGZvciAlcycsCisgICAgICAgIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKKworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHB1cnBsZSwgJ14oc3NsLS4qKVwuc28kJywKKyAgICAgICAgb3V0cHV0X3BhdHRlcm49J2xpYnB1cnBsZS1wbHVnaW4tJXMnLAorICAgICAgICBkZXNjcmlwdGlvbj0nbGlicHVycGxlIHBsdWdpbiAlcycsCisgICAgICAgIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nbGlicHVycGxlLXBsdWdpbi1zc2wnKQorCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHVycGxlLCAnXihbXmxdW15pXVteYl0uKilcLnNvJCcsCisgICAgICAgIG91dHB1dF9wYXR0ZXJuPSdsaWJwdXJwbGUtcGx1Z2luLSVzJywKKyAgICAgICAgZGVzY3JpcHRpb249J2xpYnB1cnBsZSBwbHVnaW4gJXMnLAorICAgICAgICBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JycpCisKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBmaW5jaCwgJ14oW15sXVteaV1bXmJdLiopXC5zbyQnLAorICAgICAgICBvdXRwdXRfcGF0dGVybj0nZmluY2gtcGx1Z2luLSVzJywKKyAgICAgICAgZGVzY3JpcHRpb249J0ZpbmNoIHBsdWdpbiAlcycsCisgICAgICAgIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuNy44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS43LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiODM3MzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS43LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotU1VNTUFSWSA9ICJNb2Rlcm4sIHBvd2VyZnVsIG9wZW4gc291cmNlIGNyb3NzLXBsYXRmb3JtIEMrKyBjbGFzcyBsaWJyYXJpZXMiCi1ERVNDUklQVElPTiA9ICJNb2Rlcm4sIHBvd2VyZnVsIG9wZW4gc291cmNlIEMrKyBjbGFzcyBsaWJyYXJpZXMgYW5kIGZyYW1ld29ya3MgZm9yIGJ1aWxkaW5nIG5ldHdvcmstIGFuZCBpbnRlcm5ldC1iYXNlZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gZGVza3RvcCwgc2VydmVyLCBtb2JpbGUgYW5kIGVtYmVkZGVkIHN5c3RlbXMuIgotU0VDVElPTiA9ICJsaWJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3BvY29wcm9qZWN0Lm9yZy8iCi1MSUNFTlNFID0gIkJTTC0xLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MjY3ZjQ4ZmM3MzhmNTAzODBjYmVlYjc2Zjk1Y2ViYyIKLQotIyBUaGVzZSBkZXBlbmRlbmNpZXMgYXJlIHJlcXVpcmVkIGJ5IEZvdW5kYXRpb24KLURFUEVORFMgPSAibGlicGNyZSB6bGliIgotCi1pbmhlcml0IGNtYWtlIHB0ZXN0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TUkNSRVYgPSAiYWFlOWMyZTBmNjRjYWYwMTlkMzFiYThmOTc2MzVkNTY1NmIyNWJhNSIKLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL3BvY29wcm9qZWN0L3BvY28uZ2l0O2JyYW5jaD1wb2NvLSR7UFZ9IFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDTUFLRSA9ICItRENNQUtFX0JVSUxEX1RZUEU9UmVsV2l0aERlYkluZm8gLURQT0NPX1VOQlVORExFRD1PTiBcCi0gICAgICAgICAgICAgICAgICAtRFpMSUJfTElCUkFSWV9SRUxFQVNFOlNUUklORz16IC1EUENSRV9MSUJSQVJZOlNUUklORz1wY3JlIFwKLSAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICctREVOQUJMRV9URVNUUz1PTiAnLCAnJywgZCl9IgotCi0jIEZvciB0aGUgbmF0aXZlIGJ1aWxkIHdlIHdhbnQgdG8gdXNlIHRoZSBidW5kbGVkIHZlcnNpb24KLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURQT0NPX1VOQlVORExFRD1PRkYiCi0KLSMgZG8gbm90IHVzZSBycGF0aAotRVhUUkFfT0VDTUFLRV9hcHBlbmQgPSAiIC1EQ01BS0VfU0tJUF9SUEFUSD1PTiIKLQotIyBCeSBkZWZhdWx0IHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgcG9jbyBjb21wb25lbnRzIGFyZSBidWlsdAotIyBGb3VuZGF0aW9uIGlzIGJ1aWx0IGFueXdheSBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGxpc3RlZCBleHBsaWNpdGx5Ci0jIHRoZXNlIGRvbid0IGhhdmUgZGVwZW5kZW5jaWVzIG91dHNpZGUgb2UtY29yZQotUEFDS0FHRUNPTkZJRyA/Pz0gIlhNTCBKU09OIE1vbmdvREIgUERGIFV0aWwgTmV0IE5ldFNTTCBDcnlwdG8gRGF0YSBEYXRhU1FMaXRlIFppcCIKLQotUEFDS0FHRUNPTkZJR1tYTUxdID0gIi1ERU5BQkxFX1hNTD1PTiAtREVYUEFUX0xJQlJBUlk6U1RSSU5HPWV4cGF0LC1ERU5BQkxFX1hNTD1PRkYsZXhwYXQiCi1QQUNLQUdFQ09ORklHW0pTT05dID0gIi1ERU5BQkxFX0pTT049T04sLURFTkFCTEVfSlNPTj1PRkYiCi1QQUNLQUdFQ09ORklHW01vbmdvREJdID0gIi1ERU5BQkxFX01PTkdPREI9T04sLURFTkFCTEVfTU9OR09EQj1PRkYiCi1QQUNLQUdFQ09ORklHW1BERl0gPSAiLURFTkFCTEVfUERGPU9OLC1ERU5BQkxFX1BERj1PRkYsemxpYiIKLVBBQ0tBR0VDT05GSUdbVXRpbF0gPSAiLURFTkFCTEVfVVRJTD1PTiwtREVOQUJMRV9VVElMPU9GRiIKLVBBQ0tBR0VDT05GSUdbTmV0XSA9ICItREVOQUJMRV9ORVQ9T04sLURFTkFCTEVfTkVUPU9GRiIKLVBBQ0tBR0VDT05GSUdbTmV0U1NMXSA9ICItREVOQUJMRV9ORVRTU0w9T04gLURPUEVOU1NMX1NTTF9MSUJSQVJZOlNUUklORz1zc2wgLURPUEVOU1NMX0NSWVBUT19MSUJSQVJZOlNUUklORz1jcnlwdG8sLURFTkFCTEVfTkVUU1NMPU9GRixvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tDcnlwdG9dID0gIi1ERU5BQkxFX0NSWVBUTz1PTiAtRE9QRU5TU0xfU1NMX0xJQlJBUlk6U1RSSU5HPXNzbCAtRE9QRU5TU0xfQ1JZUFRPX0xJQlJBUlk6U1RSSU5HPWNyeXB0bywtREVOQUJMRV9DUllQVE89T0ZGLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW0RhdGFdID0gIi1ERU5BQkxFX0RBVEE9T04sLURFTkFCTEVfREFUQT1PRkYiCi1QQUNLQUdFQ09ORklHW0RhdGFTUUxpdGVdID0gIi1ERU5BQkxFX0RBVEFfU1FMSVRFPU9OIC1EU1FMSVRFM19MSUJSQVJZOlNUUklORz1zcWxpdGUzLC1ERU5BQkxFX0RBVEFfU1FMSVRFPU9GRixzcWxpdGUzIgotUEFDS0FHRUNPTkZJR1taaXBdID0gIi1ERU5BQkxFX1pJUD1PTiwtREVOQUJMRV9aSVA9T0ZGIgotCi0jIEFkZGl0aW9uYWwgY29tcG9uZW50cyBub3QgYnVpbGQgYnkgZGVmYXVsdCwKLSMgdGhleSBtaWdodCBoYXZlIGRlcGVuZGVuY2llcyBub3QgaW5jbHVkZWQgaW4gb2UtY29yZQotIyBvciB0aGV5IGRvbid0IHdvcmsgb24gYWxsIGFyY2hpdGVjdHVyZXMKLVBBQ0tBR0VDT05GSUdbbW9kX3BvY29dID0gIi1ERU5BQkxFX0FQQUNIRUNPTk5FQ1RPUj1PTiwtREVOQUJMRV9BUEFDSEVDT05ORUNUT1I9T0ZGLGFwciBhcGFjaGUyIgotUEFDS0FHRUNPTkZJR1tDcHBQYXJzZXJdID0gIi1ERU5BQkxFX0NQUFBBUlNFUj1PTiwtREVOQUJMRV9DUFBQQVJTRVI9T0ZGIgotUEFDS0FHRUNPTkZJR1tEYXRhTXlTUUxdID0gIi1ERU5BQkxFX0RBVEFfTVlTUUw9T04gLURNWVNRTF9MSUI6U1RSSU5HPW15c3FsY2xpZW50X3IsLURFTkFCTEVfREFUQV9NWVNRTD1PRkYsbWFyaWFkYiIKLVBBQ0tBR0VDT05GSUdbRGF0YU9EQkNdID0gIi1ERU5BQkxFX0RBVEFfT0RCQz1PTiwtREVOQUJMRV9EQVRBX09EQkM9T0ZGLGxpYmlvZGJjIgotUEFDS0FHRUNPTkZJR1tQYWdlQ29tcGlsZXJdID0gIi1ERU5BQkxFX1BBR0VDT01QSUxFUj1PTiwtREVOQUJMRV9QQUdFQ09NUElMRVI9T0ZGIgotUEFDS0FHRUNPTkZJR1tQYWdlQ29tcGlsZXJGaWxlMlBhZ2VdID0gIi1ERU5BQkxFX1BBR0VDT01QSUxFUl9GSUxFMlBBR0U9T04sLURFTkFCTEVfUEFHRUNPTVBJTEVSX0ZJTEUyUEFHRT1PRkYiCi1QQUNLQUdFQ09ORklHW1NldmVuWmlwXSA9ICItREVOQUJMRV9TRVZFTlpJUD1PTiwtREVOQUJMRV9TRVZFTlpJUD1PRkYiCi0KLSMgTWFrZSBhIHBhY2thZ2UgZm9yIGVhY2ggbGlicmFyeQotUEFDS0FHRVMgPSAiJHtQTn0tZGJnICR7UE9DT19QQUNLQUdFU30iCi1weXRob24gX19hbm9ueW1vdXMgKCkgewotICAgIHBhY2thZ2VzID0gW10KLSAgICB0ZXN0cnVubmVycyA9IFtdCi0gICAgY29tcG9uZW50cyA9IGQuZ2V0VmFyKCJQQUNLQUdFQ09ORklHIikuc3BsaXQoKQotICAgIGNvbXBvbmVudHMuYXBwZW5kKCJGb3VuZGF0aW9uIikKLSAgICBmb3IgbGliIGluIGNvbXBvbmVudHM6Ci0gICAgICAgIHBrZyA9ICgicG9jby0lcyIgJSBsaWIubG93ZXIoKSkucmVwbGFjZSgiXyIsIiIpCi0gICAgICAgIHBhY2thZ2VzLmFwcGVuZChwa2cpCi0gICAgICAgIGlmIG5vdCBkLmdldFZhcigiRklMRVNfJXMiICUgcGtnKToKLSAgICAgICAgICAgIGQuc2V0VmFyKCJGSUxFU18lcyIgJSBwa2csICIke2xpYmRpcn0vbGliUG9jbyVzLnNvLioiICUgbGliKQotICAgICAgICB0ZXN0cnVubmVycy5hcHBlbmQoIiVzIiAlIGxpYikKLQotICAgIGQuc2V0VmFyKCJQT0NPX1BBQ0tBR0VTIiwgIiAiLmpvaW4ocGFja2FnZXMpKQotICAgIGQuc2V0VmFyKCJQT0NPX1RFU1RSVU5ORVJTIiwgIlxuIi5qb2luKHRlc3RydW5uZXJzKSkKLX0KLQotIyAicG9jbyIgaXMgYSBtZXRhcGFja2FnZSB3aGljaCBwdWxscyBpbiBhbGwgUG9jbyBjb21wb25lbnRzCi1QQUNLQUdFUyArPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtQT0NPX1BBQ0tBR0VTfSIKLVJSRUNPTU1FTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi0jIC1kZXYgbGFzdCB0byBwaWNrIHVwIHRoZSByZW1haW5pbmcgc3R1ZmYKLVBBQ0tBR0VTICs9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgotRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYlBvY28qLnNvICR7bGliZGlyfS9jbWFrZSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGliUG9jbyouYSIKLQotIyBwdGVzdCBzdXBwb3J0Ci1GSUxFU18ke1BOfS1kYmcgKz0gIiR7UFRFU1RfUEFUSH0vYmluLy5kZWJ1ZyIKLQotIyBjcHB1bml0IGlzIG9ubHkgYnVpbHQgaWYgdGVzdHMgYXJlIGVuYWJsZWQKLVBBQ0tBR0VTICs9ICIke1BOfS1jcHB1bml0IgotRklMRVNfJHtQTn0tY3BwdW5pdCArPSAiJHtsaWJkaXJ9L2xpYkNwcFVuaXQuc28qIgotQUxMT1dfRU1QVFlfJHtQTn0tY3BwdW5pdCA9ICIxIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tY3BwdW5pdCIKLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgICAgY3AgLXJmICR7Qn0vYmluLyAke0R9JHtQVEVTVF9QQVRIfQotICAgICAgIGNwIC1mICR7Qn0vbGliL2xpYkNwcFVuaXQuc28qICR7RH0ke2xpYmRpcn0KLSAgICAgICBjcCAtcmYgJHtCfS8qL3Rlc3RzdWl0ZS9kYXRhICR7RH0ke1BURVNUX1BBVEh9L2Jpbi8KLSAgICAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLWV4ZWN1dGFibGUgLWV4ZWMgY2hycGF0aCAtZCB7fSBcOwotICAgICAgIGVjaG8gIiR7UE9DT19URVNUUlVOTkVSU30iID4gIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RydW5uZXJzIgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS43LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjcuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzY1NzM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS43LjkuYmIKQEAgLTAsMCArMSwxMDYgQEAKK1NVTU1BUlkgPSAiTW9kZXJuLCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBjcm9zcy1wbGF0Zm9ybSBDKysgY2xhc3MgbGlicmFyaWVzIgorREVTQ1JJUFRJT04gPSAiTW9kZXJuLCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBDKysgY2xhc3MgbGlicmFyaWVzIGFuZCBmcmFtZXdvcmtzIGZvciBidWlsZGluZyBuZXR3b3JrLSBhbmQgaW50ZXJuZXQtYmFzZWQgYXBwbGljYXRpb25zIHRoYXQgcnVuIG9uIGRlc2t0b3AsIHNlcnZlciwgbW9iaWxlIGFuZCBlbWJlZGRlZCBzeXN0ZW1zLiIKK1NFQ1RJT04gPSAibGlicyIKK0hPTUVQQUdFID0gImh0dHA6Ly9wb2NvcHJvamVjdC5vcmcvIgorTElDRU5TRSA9ICJCU0wtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDI2N2Y0OGZjNzM4ZjUwMzgwY2JlZWI3NmY5NWNlYmMiCisKKyMgVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSByZXF1aXJlZCBieSBGb3VuZGF0aW9uCitERVBFTkRTID0gImxpYnBjcmUgemxpYiIKKworaW5oZXJpdCBjbWFrZSBwdGVzdAorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDUkVWID0gImJmYmU2YTMyODc0NGVhYTg0Y2I0NDNiOTNlZTIwOTQ3YWEwYmU5MWYiCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9wb2NvcHJvamVjdC9wb2NvLmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VDTUFLRSA9ICItRENNQUtFX0JVSUxEX1RZUEU9UmVsV2l0aERlYkluZm8gLURQT0NPX1VOQlVORExFRD1PTiBcCisgICAgICAgICAgICAgICAgICAtRFpMSUJfTElCUkFSWV9SRUxFQVNFOlNUUklORz16IC1EUENSRV9MSUJSQVJZOlNUUklORz1wY3JlIFwKKyAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICctREVOQUJMRV9URVNUUz1PTiAnLCAnJywgZCl9IgorCisjIEZvciB0aGUgbmF0aXZlIGJ1aWxkIHdlIHdhbnQgdG8gdXNlIHRoZSBidW5kbGVkIHZlcnNpb24KK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURQT0NPX1VOQlVORExFRD1PRkYiCisKKyMgZG8gbm90IHVzZSBycGF0aAorRVhUUkFfT0VDTUFLRV9hcHBlbmQgPSAiIC1EQ01BS0VfU0tJUF9SUEFUSD1PTiIKKworIyBCeSBkZWZhdWx0IHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgcG9jbyBjb21wb25lbnRzIGFyZSBidWlsdAorIyBGb3VuZGF0aW9uIGlzIGJ1aWx0IGFueXdheSBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGxpc3RlZCBleHBsaWNpdGx5CisjIHRoZXNlIGRvbid0IGhhdmUgZGVwZW5kZW5jaWVzIG91dHNpZGUgb2UtY29yZQorUEFDS0FHRUNPTkZJRyA/Pz0gIlhNTCBKU09OIE1vbmdvREIgUERGIFV0aWwgTmV0IE5ldFNTTCBDcnlwdG8gRGF0YSBEYXRhU1FMaXRlIFppcCIKKworUEFDS0FHRUNPTkZJR1tYTUxdID0gIi1ERU5BQkxFX1hNTD1PTiAtREVYUEFUX0xJQlJBUlk6U1RSSU5HPWV4cGF0LC1ERU5BQkxFX1hNTD1PRkYsZXhwYXQiCitQQUNLQUdFQ09ORklHW0pTT05dID0gIi1ERU5BQkxFX0pTT049T04sLURFTkFCTEVfSlNPTj1PRkYiCitQQUNLQUdFQ09ORklHW01vbmdvREJdID0gIi1ERU5BQkxFX01PTkdPREI9T04sLURFTkFCTEVfTU9OR09EQj1PRkYiCitQQUNLQUdFQ09ORklHW1BERl0gPSAiLURFTkFCTEVfUERGPU9OLC1ERU5BQkxFX1BERj1PRkYsemxpYiIKK1BBQ0tBR0VDT05GSUdbVXRpbF0gPSAiLURFTkFCTEVfVVRJTD1PTiwtREVOQUJMRV9VVElMPU9GRiIKK1BBQ0tBR0VDT05GSUdbTmV0XSA9ICItREVOQUJMRV9ORVQ9T04sLURFTkFCTEVfTkVUPU9GRiIKK1BBQ0tBR0VDT05GSUdbTmV0U1NMXSA9ICItREVOQUJMRV9ORVRTU0w9T04gLURPUEVOU1NMX1NTTF9MSUJSQVJZOlNUUklORz1zc2wgLURPUEVOU1NMX0NSWVBUT19MSUJSQVJZOlNUUklORz1jcnlwdG8sLURFTkFCTEVfTkVUU1NMPU9GRixvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tDcnlwdG9dID0gIi1ERU5BQkxFX0NSWVBUTz1PTiAtRE9QRU5TU0xfU1NMX0xJQlJBUlk6U1RSSU5HPXNzbCAtRE9QRU5TU0xfQ1JZUFRPX0xJQlJBUlk6U1RSSU5HPWNyeXB0bywtREVOQUJMRV9DUllQVE89T0ZGLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW0RhdGFdID0gIi1ERU5BQkxFX0RBVEE9T04sLURFTkFCTEVfREFUQT1PRkYiCitQQUNLQUdFQ09ORklHW0RhdGFTUUxpdGVdID0gIi1ERU5BQkxFX0RBVEFfU1FMSVRFPU9OIC1EU1FMSVRFM19MSUJSQVJZOlNUUklORz1zcWxpdGUzLC1ERU5BQkxFX0RBVEFfU1FMSVRFPU9GRixzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1taaXBdID0gIi1ERU5BQkxFX1pJUD1PTiwtREVOQUJMRV9aSVA9T0ZGIgorCisjIEFkZGl0aW9uYWwgY29tcG9uZW50cyBub3QgYnVpbGQgYnkgZGVmYXVsdCwKKyMgdGhleSBtaWdodCBoYXZlIGRlcGVuZGVuY2llcyBub3QgaW5jbHVkZWQgaW4gb2UtY29yZQorIyBvciB0aGV5IGRvbid0IHdvcmsgb24gYWxsIGFyY2hpdGVjdHVyZXMKK1BBQ0tBR0VDT05GSUdbbW9kX3BvY29dID0gIi1ERU5BQkxFX0FQQUNIRUNPTk5FQ1RPUj1PTiwtREVOQUJMRV9BUEFDSEVDT05ORUNUT1I9T0ZGLGFwciBhcGFjaGUyIgorUEFDS0FHRUNPTkZJR1tDcHBQYXJzZXJdID0gIi1ERU5BQkxFX0NQUFBBUlNFUj1PTiwtREVOQUJMRV9DUFBQQVJTRVI9T0ZGIgorUEFDS0FHRUNPTkZJR1tEYXRhTXlTUUxdID0gIi1ERU5BQkxFX0RBVEFfTVlTUUw9T04gLURNWVNRTF9MSUI6U1RSSU5HPW15c3FsY2xpZW50X3IsLURFTkFCTEVfREFUQV9NWVNRTD1PRkYsbWFyaWFkYiIKK1BBQ0tBR0VDT05GSUdbRGF0YU9EQkNdID0gIi1ERU5BQkxFX0RBVEFfT0RCQz1PTiwtREVOQUJMRV9EQVRBX09EQkM9T0ZGLGxpYmlvZGJjIgorUEFDS0FHRUNPTkZJR1tQYWdlQ29tcGlsZXJdID0gIi1ERU5BQkxFX1BBR0VDT01QSUxFUj1PTiwtREVOQUJMRV9QQUdFQ09NUElMRVI9T0ZGIgorUEFDS0FHRUNPTkZJR1tQYWdlQ29tcGlsZXJGaWxlMlBhZ2VdID0gIi1ERU5BQkxFX1BBR0VDT01QSUxFUl9GSUxFMlBBR0U9T04sLURFTkFCTEVfUEFHRUNPTVBJTEVSX0ZJTEUyUEFHRT1PRkYiCitQQUNLQUdFQ09ORklHW1NldmVuWmlwXSA9ICItREVOQUJMRV9TRVZFTlpJUD1PTiwtREVOQUJMRV9TRVZFTlpJUD1PRkYiCisKKyMgTWFrZSBhIHBhY2thZ2UgZm9yIGVhY2ggbGlicmFyeQorUEFDS0FHRVMgPSAiJHtQTn0tZGJnICR7UE9DT19QQUNLQUdFU30iCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIHBhY2thZ2VzID0gW10KKyAgICB0ZXN0cnVubmVycyA9IFtdCisgICAgY29tcG9uZW50cyA9IGQuZ2V0VmFyKCJQQUNLQUdFQ09ORklHIikuc3BsaXQoKQorICAgIGNvbXBvbmVudHMuYXBwZW5kKCJGb3VuZGF0aW9uIikKKyAgICBmb3IgbGliIGluIGNvbXBvbmVudHM6CisgICAgICAgIHBrZyA9ICgicG9jby0lcyIgJSBsaWIubG93ZXIoKSkucmVwbGFjZSgiXyIsIiIpCisgICAgICAgIHBhY2thZ2VzLmFwcGVuZChwa2cpCisgICAgICAgIGlmIG5vdCBkLmdldFZhcigiRklMRVNfJXMiICUgcGtnKToKKyAgICAgICAgICAgIGQuc2V0VmFyKCJGSUxFU18lcyIgJSBwa2csICIke2xpYmRpcn0vbGliUG9jbyVzLnNvLioiICUgbGliKQorICAgICAgICB0ZXN0cnVubmVycy5hcHBlbmQoIiVzIiAlIGxpYikKKworICAgIGQuc2V0VmFyKCJQT0NPX1BBQ0tBR0VTIiwgIiAiLmpvaW4ocGFja2FnZXMpKQorICAgIGQuc2V0VmFyKCJQT0NPX1RFU1RSVU5ORVJTIiwgIlxuIi5qb2luKHRlc3RydW5uZXJzKSkKK30KKworIyAicG9jbyIgaXMgYSBtZXRhcGFja2FnZSB3aGljaCBwdWxscyBpbiBhbGwgUG9jbyBjb21wb25lbnRzCitQQUNLQUdFUyArPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfSArPSAiJHtQT0NPX1BBQ0tBR0VTfSIKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCisjIC1kZXYgbGFzdCB0byBwaWNrIHVwIHRoZSByZW1haW5pbmcgc3R1ZmYKK1BBQ0tBR0VTICs9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgorRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYlBvY28qLnNvICR7bGliZGlyfS9jbWFrZSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGliUG9jbyouYSIKKworIyBwdGVzdCBzdXBwb3J0CitGSUxFU18ke1BOfS1kYmcgKz0gIiR7UFRFU1RfUEFUSH0vYmluLy5kZWJ1ZyIKKworIyBjcHB1bml0IGlzIG9ubHkgYnVpbHQgaWYgdGVzdHMgYXJlIGVuYWJsZWQKK1BBQ0tBR0VTICs9ICIke1BOfS1jcHB1bml0IgorRklMRVNfJHtQTn0tY3BwdW5pdCArPSAiJHtsaWJkaXJ9L2xpYkNwcFVuaXQuc28qIgorQUxMT1dfRU1QVFlfJHtQTn0tY3BwdW5pdCA9ICIxIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tY3BwdW5pdCIKKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgICAgY3AgLXJmICR7Qn0vYmluLyAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgIGNwIC1mICR7Qn0vbGliL2xpYkNwcFVuaXQuc28qICR7RH0ke2xpYmRpcn0KKyAgICAgICBjcCAtcmYgJHtCfS8qL3Rlc3RzdWl0ZS9kYXRhICR7RH0ke1BURVNUX1BBVEh9L2Jpbi8KKyAgICAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLWV4ZWN1dGFibGUgLWV4ZWMgY2hycGF0aCAtZCB7fSBcOworICAgICAgIGVjaG8gIiR7UE9DT19URVNUUlVOTkVSU30iID4gIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RydW5uZXJzIgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC41My4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC41My4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWJmYjMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiUG9wcGxlciBpcyBhIFBERiByZW5kZXJpbmcgbGlicmFyeSBiYXNlZCBvbiB0aGUgeHBkZi0zLjAgY29kZSBiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL3BvcHBsZXIuZnJlZWRlc2t0b3Aub3JnLyR7QlB9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtYWRkLW1hbmFkYXRvcnktb3B0aW9ucy10by1maW5kLXF0NC1xdDUtbW9jLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1maXgtZ2NjLTYtbWF0aC1hbWJpZ3VvdXMtZXJyb3JzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NDM2NzlmMTAzMGI5YmMxOWE5ODlmMjQxMjFhMjgyYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTJiZjcyOTYwYzZiNTk0OGI2NzY1NzU5NGIwNWU3MmQ5YTI3OGRhZjc2MTNjOWYzY2RmZjlhNWI3MzA5NmE4IgotCi1ERVBFTkRTID0gImZvbnRjb25maWcgemxpYiBjYWlybyBsY21zIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImpwZWcgb3BlbmpwZWcgcG5nIHRpZmYgbnNzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAncXQ1LWxheWVyJywgJ3F0NScsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWxpYmpwZWcsLS1kaXNhYmxlLWxpYmpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1saWJwbmcsLS1kaXNhYmxlLWxpYnBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLWxpYnRpZmYsLS1kaXNhYmxlLWxpYnRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtbGliY3VybCwtLWRpc2FibGUtbGliY3VybCxjdXJsIgotUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLS1lbmFibGUtbGlib3BlbmpwZWc9b3BlbmpwZWcyLC0tZGlzYWJsZS1saWJvcGVuanBlZyxvcGVuanBlZyIKLVBBQ0tBR0VDT05GSUdbcXQ1XSA9ICItLWVuYWJsZS1wb3BwbGVyLXF0NSAtLXdpdGgtbW9jLXF0NT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcXQ1L21vYywtLWRpc2FibGUtcG9wcGxlci1xdDUscXRiYXNlIHF0dG9vbHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1txdDRlXSA9ICItLWVuYWJsZS1wb3BwbGVyLXF0NCAtLXdpdGgtbW9jLXF0ND0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbW9jNCwtLWRpc2FibGUtcG9wcGxlci1xdDQscXQ0LWVtYmVkZGVkIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0tZW5hYmxlLWxpYm5zcywtLWRpc2FibGUtbGlibnNzLG5zcyIKLQotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUteHBkZi1oZWFkZXJzIFwKLSAgICAtLWRpc2FibGUtZ3RrLXRlc3QgXAotICAgIC0tZW5hYmxlLXpsaWIgXAotIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vcG9wcGxlci8ubGlicyIKLX0KLQotIyBBZGp1c3QgbGlicmFyeSBuYW1lcyB3aGVuIGJ1aWxkaW5nIGZvciBRVDRlCi1RVDRFX1BBVENIRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ0ZScsICdmaWxlOi8vZml4LXF0NGUtbGlicmFyeS1kZXBlbmRlbmNpZXMucGF0Y2gnLCAnJywgZCl9IgotU1JDX1VSSV9hcHBlbmQgPSAiJHtRVDRFX1BBVENIRVN9IgotCi0jIGNoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cwotZGVmIGdldF9wb3BwbGVyX2ZwdV9zZXR0aW5nKGJiLCBkKToKLSAgICBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpIGluIFsgJ3NvZnQnIF06Ci0gICAgICAgIHJldHVybiAiLS1lbmFibGUtZml4ZWRwb2ludCIKLSAgICByZXR1cm4gIiIKLQotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfcG9wcGxlcl9mcHVfc2V0dGluZyhiYiwgZCl9IgotCi1QQUNLQUdFUyA9KyAibGlicG9wcGxlciBsaWJwb3BwbGVyLWdsaWIiCi1GSUxFU19saWJwb3BwbGVyID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLnNvLioiCi1GSUxFU19saWJwb3BwbGVyLWdsaWIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXItZ2xpYi5zby4qIgotCi1SREVQRU5EU19saWJwb3BwbGVyID0gInBvcHBsZXItZGF0YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNTcuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNTcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2I3N2FhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC41Ny4wLmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiUG9wcGxlciBpcyBhIFBERiByZW5kZXJpbmcgbGlicmFyeSBiYXNlZCBvbiB0aGUgeHBkZi0zLjAgY29kZSBiYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL3BvcHBsZXIuZnJlZWRlc2t0b3Aub3JnLyR7QlB9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtYWRkLW1hbmFkYXRvcnktb3B0aW9ucy10by1maW5kLXF0NC1xdDUtbW9jLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1maXgtZ2NjLTYtbWF0aC1hbWJpZ3VvdXMtZXJyb3JzLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYzVhMTkxNzQxNjA0NTUyYzkwZDQ4NDEwMzIyOTM3NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZWEzN2RlNzFiN2RiNzgyMTJlYmM3OWRmNTlmOTliNjY0MDlhMjljMmVhYzRkODgyZGFlOWYyMzk3ZmU0NGQ4IgorCitERVBFTkRTID0gImZvbnRjb25maWcgemxpYiBjYWlybyBsY21zIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUEFDS0FHRUNPTkZJRyA/Pz0gImpwZWcgb3BlbmpwZWcgcG5nIHRpZmYgbnNzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAncXQ1LWxheWVyJywgJ3F0NScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWRjdGRlY29kZXI9bGlianBlZywtLWVuYWJsZS1kY3RkZWNvZGVyPW5vbmUsanBlZyIKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1saWJwbmcsLS1kaXNhYmxlLWxpYnBuZyxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLWxpYnRpZmYsLS1kaXNhYmxlLWxpYnRpZmYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtbGliY3VybCwtLWRpc2FibGUtbGliY3VybCxjdXJsIgorUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLS1lbmFibGUtbGlib3BlbmpwZWc9b3BlbmpwZWcyLC0tZGlzYWJsZS1saWJvcGVuanBlZyxvcGVuanBlZyIKK1BBQ0tBR0VDT05GSUdbcXQ1XSA9ICItLWVuYWJsZS1wb3BwbGVyLXF0NSAtLXdpdGgtbW9jLXF0NT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcXQ1L21vYywtLWRpc2FibGUtcG9wcGxlci1xdDUscXRiYXNlIHF0dG9vbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1txdDRlXSA9ICItLWVuYWJsZS1wb3BwbGVyLXF0NCAtLXdpdGgtbW9jLXF0ND0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbW9jNCwtLWRpc2FibGUtcG9wcGxlci1xdDQscXQ0LWVtYmVkZGVkIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0tZW5hYmxlLWxpYm5zcywtLWRpc2FibGUtbGlibnNzLG5zcyIKKworU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUteHBkZi1oZWFkZXJzIFwKKyAgICAtLWRpc2FibGUtZ3RrLXRlc3QgXAorICAgIC0tZW5hYmxlLXpsaWIgXAorIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vcG9wcGxlci8ubGlicyIKK30KKworIyBBZGp1c3QgbGlicmFyeSBuYW1lcyB3aGVuIGJ1aWxkaW5nIGZvciBRVDRlCitRVDRFX1BBVENIRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ0ZScsICdmaWxlOi8vZml4LXF0NGUtbGlicmFyeS1kZXBlbmRlbmNpZXMucGF0Y2gnLCAnJywgZCl9IgorU1JDX1VSSV9hcHBlbmQgPSAiJHtRVDRFX1BBVENIRVN9IgorCisjIGNoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cworZGVmIGdldF9wb3BwbGVyX2ZwdV9zZXR0aW5nKGJiLCBkKToKKyAgICBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpIGluIFsgJ3NvZnQnIF06CisgICAgICAgIHJldHVybiAiLS1lbmFibGUtZml4ZWRwb2ludCIKKyAgICByZXR1cm4gIiIKKworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfcG9wcGxlcl9mcHVfc2V0dGluZyhiYiwgZCl9IgorCitQQUNLQUdFUyA9KyAibGlicG9wcGxlciBsaWJwb3BwbGVyLWdsaWIiCitGSUxFU19saWJwb3BwbGVyID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLnNvLioiCitGSUxFU19saWJwb3BwbGVyLWdsaWIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXItZ2xpYi5zby4qIgorCitSREVQRU5EU19saWJwb3BwbGVyID0gInBvcHBsZXItZGF0YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRkMmVkYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHBvc3RncmVzcWwuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9ODFiNjlkZGIzMWE4YmU2NmJhYWZkMTRhOTAxNDZlZTIiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vcmVtb3ZlLmF1dG9jb25mLnZlcnNpb24uY2hlY2sucGF0Y2ggXAotICAgIGZpbGU6Ly9ub3QtY2hlY2stbGlicGVybC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZmVlMDNmMjAzNDAzNGRiZmNiMzMyMWEwYmIwZjgyOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlM2ViNTFkMDQ1YzE4MGIwM2QyZGUxZjBjM2FmOTM1NmUxMGJlNDk0NDhlOTY2Y2EwMWRmYzJjNmQxY2M5ZDIzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfOS40LjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfOS40LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYzA5OWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTUuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBwb3N0Z3Jlc3FsLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTgxYjY5ZGRiMzFhOGJlNjZiYWFmZDE0YTkwMTQ2ZWUyIgorCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovL3JlbW92ZS5hdXRvY29uZi52ZXJzaW9uLmNoZWNrLnBhdGNoIFwKKyAgICBmaWxlOi8vbm90LWNoZWNrLWxpYnBlcmwucGF0Y2ggXAorIgorCitkb19jb21waWxlX3ByZXBlbmRfbGliYy1tdXNsKCkgeworICAgIHNlZCAtaSAtZSAncy9cLWxuc2wvL2cnICR7Qn0vc3JjL01ha2VmaWxlLmdsb2JhbAorfQorCitTUkNfVVJJW21kNXN1bV0gPSAiMGFhZGEwODMzYTkyMDhhZTVmYWI5NjZjNzNjMzkzNzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTJiZmIzYzdlOGU0NTUxNWVmOTIxYWQzNjVlMTIyNjgyYTVjNDkzNWRjYzAwMzI2NDQ0MzNhZjJkZTMxYWNjNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHBzLXRvb2xzL3Bwcy10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bwcy10b29scy9wcHMtdG9vbHNfZ2l0LmJiCmluZGV4IDczYzQ2ZWUuLjhiZjkwMzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHBzLXRvb2xzL3Bwcy10b29sc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wcHMtdG9vbHMvcHBzLXRvb2xzX2dpdC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiVXNlci1zcGFjZSB0b29scyBmb3IgTGludXhQUFMiCitIT01FUEFHRSA9ICJodHRwOi8vbGludXhwcHMub3JnIgogCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL3BzcWxvZGJjXzA5LjA1LjAzMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL3BzcWxvZGJjXzA5LjA1LjAzMDAuYmIKaW5kZXggOTczMjZhMi4uNmUxYzhhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9wc3Fsb2RiY18wOS4wNS4wMzAwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvcHNxbG9kYmNfMDkuMDUuMDMwMC5iYgpAQCAtMTIsNSArMTIsMyBAQAogCiBTUkNfVVJJW21kNXN1bV0gPSAiNGM2ZTBiMjIxODdkN2JiMWM5OThmZmFjODllNTBmNmIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTUyMWYzMjhiZjI4YWFhZjVjODQ4OGRjODk3OTJiNjE0ZjlkNjI3MTc0MmMwYmFmOWJiNDFjOTc1Mzc3NjRhOCIKLQotUE5CTEFDS0xJU1RbcHNxbG9kYmNdID89ICJEZXBlbmRzIG9uIGJsYWNrbGlzdGVkIHBvc3RncmVzcWwgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyYy9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyYy9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYTA5NjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmMvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotTW9kZXJuaXNlIGNvbmZpZ3VyZSB0byB3b3JrIHdpdGggbW9kZXJuIGF1dG9tYWtlLgotCi1SUCAyMDE0LzcvMTQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiByZTJjLTAuMTMuNS9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSByZTJjLTAuMTMuNS5vcmlnL2NvbmZpZ3VyZS5pbgkyMDA4LTA1LTI1IDE0OjQyOjM0LjAwMDAwMDAwMCArMDAwMAotKysrIHJlMmMtMC4xMy41L2NvbmZpZ3VyZS5pbgkyMDE0LTA3LTE3IDE0OjEwOjQwLjU5NTgyMTI5MiArMDAwMAotQEAgLTEsNiArMSw2IEBACi0gQUNfUFJFUkVRKFsyLjU3XSkKLSBBQ19JTklUKHJlMmMsIDAuMTMuNSwgcmUyYy1nZW5lcmFsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCkKLS1BTV9JTklUX0FVVE9NQUtFKHJlMmMsICRQQUNLQUdFX1ZFUlNJT04pCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbl0pCi0gQUNfQ09ORklHX1NSQ0RJUihhY3Rpb25zLmNjKQotIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyY18wLjEzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyY18wLjEzLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYWM5NDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMC4xMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIGZvciB3cml0aW5nIHZlcnkgZmFzdCBhbmQgdmVyeSBmbGV4aWJsZSBzY2FubmVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9yZTJjLnNvdXJjZWZvcmdlLm5ldC8iCi1BVVRIT1IgPSAiTWFyY3VzIELDtnJnZXIgPGhlbGx5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTgwO21kNT04MjI4MzBhMjIwNGFlZjM1M2YyYzQ4OWY2MmUwMjA4OSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjRhOTdkOGY3N2VkNmQyYzc2YzhiZDg0MGE0M2Y1NjMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzYTk5NTEzOWFmNDc1ZTgwYTMwMjA3ZDAyNzI4YjFlMDA2NWIwY2FhZGU3Mzc1ZTk3NGNiMWIxNDg2MTY2OGMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAxLWRvLW5vdC1zdXBwb3J0LXB5dGhvbjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhdHlyL2ZpbGVzLzAwMDEtZG8tbm90LXN1cHBvcnQtcHl0aG9uMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTk1YTNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAxLWRvLW5vdC1zdXBwb3J0LXB5dGhvbjIucGF0Y2gKQEAgLTAsMCArMSw4NCBAQAorRnJvbSAyMDZmMzM0ZDYyZGExNzA5M2U3ODQwOTRjOWQ5ZTgwYzg1M2Y3MDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxMiBNYXkgMjAxNyAwMzowMzo0NiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBkbyBub3Qgc3VwcG9ydCBweXRob24yCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICB8IDE2IC0tLS0tLS0tLS0tLS0tLS0KKyBweXRob24vTWFrZWZpbGUuYW0gfCAyNCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAyMDBhN2NjLi44NDMxYzUxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMiwyMiArMjIsNiBAQCBBTV9NSVNTSU5HX1BST0coW0FVVE9NNFRFXSwgW2F1dG9tNHRlXSkKKyAjIE5lZWRlZCBieSB0ZXN0cy9hdGxvY2FsLmluLgorIEFDX1NVQlNUKFtPMENGTEFHU10sIFtgZWNobyAkQ0ZMQUdTIHwgc2VkICdzLy1PW1swLTldXSAqLy8nYF0pCisgCistQU1fUEFUSF9QWVRIT04KKy1BTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05dLCB0ZXN0IC1uICIkUFlUSE9OIikKKy1baWYgdGVzdCAteiAiJFBZVEhPTiI7IHRoZW5dCistICAgIFtlY2hvICJUaGUgcHl0aG9uIGludGVycHJldGVyIHdhcyBub3QgZm91bmQgaW4gdGhlIHNlYXJjaCBwYXRoLiBUaGUgUHl0aG9uIGxhbmd1YWdlIGJpbmRpbmdzIl0KKy0gICAgW2VjaG8gIndpbGwgbm90IGJlIGJ1aWx0LiAgSWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIFB5dGhvbiBsYW5ndWFnZSBiaW5kaW5ncywgcGxlYXNlIGVuc3VyZSJdCistICAgIFtlY2hvICJ0aGF0IHB5dGhvbiBpcyBpbnN0YWxsZWQgYW5kIGl0cyBkaXJlY3RvcnkgaXMgaW5jbHVkZWQgaW4gdGhlIHNlYXJjaCBwYXRoLiJdCistICAgIFtlY2hvICJUaGVuIHJ1biBjb25maWd1cmUgYWdhaW4gYmVmb3JlIGF0dGVtcHRpbmcgdG8gYnVpbGQgU2F0eXIuIl0KKy1bZmldCistCistIyBKdXN0IFBLR19DSEVDS19NT0RVTEVTKFtQWVRIT05dLCBbcHl0aG9uXSkgd29ya3Mgb25seSB3aXRoIHB5dGhvbjIuNysKKy0jIEJlbG93LCBpZiBweXRob24gaXMgbm90IGZvdW5kLCB3ZSBzZXQgdXAgZm9yIHB5dGhvbjIuNiB3L28gY2hlY2tpbmc6CistUEtHX0NIRUNLX01PRFVMRVMoW1BZVEhPTl0sIFtweXRob24yXSwsWworLSAgICBQWVRIT05fTElCUz0nLUwvdXNyL2xpYjY0IC1scHl0aG9uMi42JworLSAgICBQWVRIT05fQ0ZMQUdTPSctSS91c3IvaW5jbHVkZS9weXRob24yLjYnCistXSkKKy0KKyBBQ19BUkdfRU5BQkxFKFtweXRob24tbWFucGFnZV0sCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1weXRob24tbWFucGFnZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rpc2FibGUgcHl0aG9uIGJpbmRpbmdzIG1hbnBhZ2UgYnVpbGRdKV0sCitkaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCAzNmZjMmU5Li4wYjczZjY2IDEwMDY0NAorLS0tIGEvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9weXRob24vTWFrZWZpbGUuYW0KK0BAIC0xLDEyICsxLDUgQEAKKyBTVUJESVJTID0gLiBkb2MKKyAKKy1weTJzYXR5cmRpciA9ICQocHlleGVjZGlyKS9zYXR5cgorLQorLXB5MnNhdHlyX1BZVEhPTiA9IFwKKy0gICAgX19pbml0X18ucHkKKy0KKy1weTJzYXR5cl9MVExJQlJBUklFUyA9IF9zYXR5ci5sYQorLQorIFBZRVhURklMRVMgPSBcCisgICAgIHB5X2NsdXN0ZXIuaCBcCisgICAgIHB5X2NsdXN0ZXIuYyBcCitAQCAtNzUsMjMgKzY4LDYgQEAgUFlFWFRMREZMQUdTID0gXAorICAgICAtbW9kdWxlIFwKKyAgICAgLWF2b2lkLXZlcnNpb24KKyAKKy1fc2F0eXJfbGFfU09VUkNFUyA9ICQoUFlFWFRGSUxFUykKKy1fc2F0eXJfbGFfQ1BQRkxBR1MgPSBcCistICAgICQoUFlFWFRDUFBGTEFHUykgXAorLSAgICAkKFBZVEhPTl9DRkxBR1MpCistX3NhdHlyX2xhX0xERkxBR1MgPSBcCistICAgICQoUFlFWFRMREZMQUdTKSBcCistICAgIC1leHBvcnQtc3ltYm9scy1yZWdleCBpbml0X3NhdHlyCistCistIyBEZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyZSBvcHRpb24sIHdlIGVpdGhlciBsaW5rIGxpYnNhdHlyLnNvIGR5bmFtaWNhbGx5IChhcworLSMgaXMgdXN1YWwpLCBvciBkaXJlY3RseSBpbmNsdWRlIGl0cyBvYmplY3QgZmlsZXMgKGJ5IGluY2x1ZGluZyB0aGUKKy0jIGNvbnZlbmllbmNlIGxpYnJhcnkpLgorLWlmIEVOQUJMRV9TVEFUSUNfUFlUSE9OX01PRFVMRQorLV9zYXR5cl9sYV9MSUJBREQgPSAuLi9saWIvbGlic2F0eXJfY29udi5sYQorLWVsc2UKKy1fc2F0eXJfbGFfTElCQUREID0gLi4vbGliL2xpYnNhdHlyLmxhCistZW5kaWYKKy0KKyBpZiBXSVRIX1BZVEhPTjMKKyBweTNzYXR5cmRpciA9ICQocHkzZXhlY2Rpcikvc2F0eXIKKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAyLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvZmlsZXMvMDAwMi1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyN2ViNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvZmlsZXMvMDAwMi1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAyM2Y4MjdlYTk0Mjg0NjU2OTcyNjUyZjYxZjJjNmFhZDk2MDkyY2M4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMCBKdWwgMjAxNyAyMzowMDoyOSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBmaXggY29tcGlsZSBmYWlsdXJlIGFnYWluc3QgbXVzbCBDIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9ycG0uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9ycG0uYyBiL2xpYi9ycG0uYworaW5kZXggOTIwZTE0NS4uNTgxNDBiZiAxMDA2NDQKKy0tLSBhL2xpYi9ycG0uYworKysrIGIvbGliL3JwbS5jCitAQCAtMTg4LDcgKzE4OCw3IEBAIHNyX3JwbV9wYWNrYWdlX3NvcnQoc3RydWN0IHNyX3JwbV9wYWNrYWdlICpwYWNrYWdlcykKKyAgICAgfQorIAorICAgICAvKiBTb3J0IHRoZSBhcnJheS4gKi8KKy0gICAgcXNvcnQoYXJyYXksIGNvdW50LCBzaXplb2Yoc3RydWN0IHNyX3JwbV9wYWNrYWdlKiksIChjb21wYXJpc29uX2ZuX3QpY21wX25ldnJhX3Fzb3J0X3dyYXBwZXIpOworKyAgICBxc29ydChhcnJheSwgY291bnQsIHNpemVvZihzdHJ1Y3Qgc3JfcnBtX3BhY2thZ2UqKSwgY21wX25ldnJhX3Fzb3J0X3dyYXBwZXIpOworIAorICAgICAvKiBDcmVhdGUgYSBsaW5rZWQgbGlzdCBmcm9tIHRoZSBzb3J0ZWQgYXJyYXkuICovCisgICAgIGZvciAoc2l6ZV90IGxvb3AgPSAwOyBsb29wIDwgY291bnQ7ICsrbG9vcCkKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9zYXR5cl8wLjIzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9zYXR5cl8wLjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3OTVjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhdHlyL3NhdHlyXzAuMjMuYmIKQEAgLTAsMCArMSwzMyBAQAorREVTQ1JJUFRJT04gPSAiU2F0eXIgaXMgYSBjb2xsZWN0aW9uIG9mIGxvdy1sZXZlbCBhbGdvcml0aG1zIGZvciBwcm9ncmFtIFwKK2ZhaWx1cmUgcHJvY2Vzc2luZywgYW5hbHlzaXMsIGFuZCByZXBvcnRpbmcgc3VwcG9ydGluZyBrZXJuZWwgc3BhY2UsIHVzZXIgXAorc3BhY2UsIFB5dGhvbiwgYW5kIEphdmEgcHJvZ3JhbXMiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hYnJ0L3NhdHlyIgorTElDRU5TRSA9ICJHUEx2MiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hYnJ0L3NhdHlyLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvLW5vdC1zdXBwb3J0LXB5dGhvbjIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggXAorIgorU1JDUkVWID0gIjQ3NDJmZDQ4NTdjNDQ2Yjk2ZjcxMmQ1MmUyZTRjZDBiNmNmZTczOTgiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworREVQRU5EUyArPSAiIFwKKyAgICBnZGIgXAorIgorCitQQUNLQUdFUyArPSAicHl0aG9uMy0ke1BOfSIKK0ZJTEVTX3B5dGhvbjMtJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vJHtCUE59IgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyBycG0iCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob24zLCAtLXdpdGhvdXQtcHl0aG9uMywscHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9ubWFucGFnZV0gPSAiLS1lbmFibGUtcHl0aG9uLW1hbnBhZ2UsIC0tZGlzYWJsZS1weXRob24tbWFucGFnZSIKK1BBQ0tBR0VDT05GSUdbcnBtXSA9ICItLXdpdGgtcnBtLCAtLXdpdGhvdXQtcnBtLCBycG0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICR7U30vZ2VuLXZlcnNpb24KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL3NkcGFybV8xLjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTAuYmIKaW5kZXggOGFiMjgxOS4uMzI5OWE3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTAuYmIKQEAgLTEwLDYgKzEwLDcgQEAKIFNSQ19VUkkgPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3AvJHtCUE59LSR7UFZ9LnRneiBcCiAgICAgICAgICAgIGZpbGU6Ly9tYWtlLXN5c3Jvb3Qtd29yay5wYXRjaCBcCiAgICAgICAgICAgICIKK01JUlJPUlMgKz0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wIGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYyIKIAogUEFDS0FHRVMgPSsgIiR7UE59LXNjcmlwdHMiCiBSREVQRU5EU18ke1BOfS1zY3JpcHRzICs9ICJiYXNoICR7UE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZXJpYWwtdXRpbHMvc2VyaWFsLWZvcndhcmQvMDAwMS1zZXJpYWxfZm9yd2FyZC1EaXNhYmxlLWRlZmF1bHQtc3RhdGljLWxpbmtpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NlcmlhbC11dGlscy9zZXJpYWwtZm9yd2FyZC8wMDAxLXNlcmlhbF9mb3J3YXJkLURpc2FibGUtZGVmYXVsdC1zdGF0aWMtbGlua2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGNjNjdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZXJpYWwtdXRpbHMvc2VyaWFsLWZvcndhcmQvMDAwMS1zZXJpYWxfZm9yd2FyZC1EaXNhYmxlLWRlZmF1bHQtc3RhdGljLWxpbmtpbmcucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBhMGQ4MTVhZDk5MThhYmE5NzdhZWQ5Mjc1YjNiZjNkNzUwYTE3MDliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMzAgQXVnIDIwMTcgMTk6MjQ6NDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2VyaWFsX2ZvcndhcmQ6IERpc2FibGUgZGVmYXVsdCBzdGF0aWMgbGlua2luZworCitUaGlzIGRvZXMgbm90IHdvcmsgd2l0aCBzc3AgdHVybmVkIG9uIHdpdGggaGFyZGVuaW5nIGZsYWdzIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHRvb2xzL3NlcmlhbF9mb3J3YXJkL3NyYy9NYWtlZmlsZS5hbSB8IDMgLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9zZXJpYWxfZm9yd2FyZC9zcmMvTWFrZWZpbGUuYW0gYi90b29scy9zZXJpYWxfZm9yd2FyZC9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDNmNTk4Mjg2Li5iY2FjOWJjOSAxMDA2NDQKKy0tLSBhL3Rvb2xzL3NlcmlhbF9mb3J3YXJkL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvdG9vbHMvc2VyaWFsX2ZvcndhcmQvc3JjL01ha2VmaWxlLmFtCitAQCAtMjAsOSArMjAsNiBAQCBzZXJpYWxfZm9yd2FyZF9TT1VSQ0VTID0gXAorIAljeThtcmxuLmggXAorIAkkKE5VTEwpCisgCistc2VyaWFsX2ZvcndhcmRfTERGTEFHUyA9IFwKKy0JLWFsbC1zdGF0aWMKKy0KKyBwdHlfZm9yd2FyZF9TT1VSQ0VTID0gXAorIAlwdHlfZm9yd2FyZC5jIFwKKyAJJChOVUxMKQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZXJpYWwtdXRpbHMvc2VyaWFsLWZvcndhcmRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZXJpYWwtdXRpbHMvc2VyaWFsLWZvcndhcmRfZ2l0LmJiCmluZGV4IDY0OTRkZTkuLjBlZjgyOTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2VyaWFsLXV0aWxzL3NlcmlhbC1mb3J3YXJkX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NlcmlhbC11dGlscy9zZXJpYWwtZm9yd2FyZF9naXQuYmIKQEAgLTMsMTAgKzMsMTIgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmI1YzUwYWI3Y2FiNGJhZWZmYmExNDk3NzAzMGMwNyIKIFNFQ1RJT04gPSAiY29uc29sZS9kZXZlbCIKLVNSQ1JFViA9ICIwMGRiZWMyNjM2YWUwMzg1YWQwMjg1ODdlMjBlNDQ2MjcyZmY5N2VjIgorU1JDUkVWID0gIjA3YzZmZGVkZTA4NzBlZGMzN2E4ZDUxZDAzM2I2ZTdlMjlhYTdjOTEiCiBQViA9ICIxLjErZ2l0ciR7U1JDUFZ9IgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZnJlZXNtYXJ0cGhvbmUvY29ybnVjb3BpYS5naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZnJlZXNtYXJ0cGhvbmUvY29ybnVjb3BpYS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zZXJpYWxfZm9yd2FyZC1EaXNhYmxlLWRlZmF1bHQtc3RhdGljLWxpbmtpbmcucGF0Y2g7c3RyaXBsZXZlbD0zIFwKKyAgICAgICAgICAiCiBTID0gIiR7V09SS0RJUn0vZ2l0L3Rvb2xzL3NlcmlhbF9mb3J3YXJkIgogCiBpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHNfMS40Mi5iYgppbmRleCBhMTFiZDc3Li5jN2RlMDU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHNfMS40Mi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHNfMS40Mi5iYgpAQCAtOSw2ICs5LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY5MGRhN2ZjNTIxNzI1OTlkYmYwODJkNzYyMGYxOGNhIgogCiBTUkNfVVJJID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wL3NnM191dGlscy0ke1BWfS50Z3oiCitNSVJST1JTICs9ICJodHRwOi8vc2cuZGFubnkuY3ovc2cvcCBodHRwczovL2Zvc3NpZXMub3JnL2xpbnV4L21pc2MiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIyODA4MGRlNWJmMjIyMmY4YjU1YTI5MDkzYmVjOGFlYSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZGNiN2EwMzA5YmQwYmEzZDRhODNhY2I1MjY5NzNiODAxMDZlZTI2Y2Q5ZjczOTgxODZjZDNmMDYzM2M5ZWYzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDEtVXNlLXByYWdtYS1vbmNlLXVuY29uZGl0aW9uYWxseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAxLVVzZS1wcmFnbWEtb25jZS11bmNvbmRpdGlvbmFsbHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY2YWUwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAxLVVzZS1wcmFnbWEtb25jZS11bmNvbmRpdGlvbmFsbHkucGF0Y2gKQEAgLTAsMCArMSw4NzIgQEAKK0Zyb20gMzEwMGUyM2M1MGUzOGJmZjBjMmVjNzdiYzMwMDQ5YzExM2MyOTQxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE2IEp1biAyMDE3IDIwOjQ0OjMxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS82XSBVc2UgcHJhZ21hIG9uY2UgdW5jb25kaXRpb25hbGx5CisKK2luIE9FIHdlIGRvIG5vdCB3b3JyeSBhYm91dCBzdXBwb3J0aW5nCitnY2MgMy40IGFueXdheQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbQnVtcHMgcmVxdWlyZWQgZ2NjIHRvIGJlID4gMy40XQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliL2VmaS9lZmkuaCAgICAgICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvYWhjaS5oICAgICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2FoY2lfY2Ryb20uaCAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9haGNpX2Rpc2suaCAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvYWhjaV9tdWx0aXBsaWVyLmggICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2FoY2lfbXVsdGlwbGllcl9waHkuaCAgfCAyIC0tCisgbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXJfcG9ydC5oIHwgMiAtLQorIGxpYi9lbmdpbmUvYWhjaV9waHkuaCAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2FoY2lfcG9ydC5oICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9haGNpX3JhaWRfaW5mby5oICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvYWhjaV90YXBlLmggICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2FycmF5LmggICAgICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9ibG9ja19kZXZpY2UuaCAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvY2FjaGUuaCAgICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2NvbnRhaW5lci5oICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9jb250ZXh0X21hbmFnZXIuaCAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvY29udHJvbGxlci5oICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2VuY2xvc3VyZS5oICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9lbmRfZGV2aWNlLmggICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvZXZlbnQuaCAgICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2V2ZW50X21hbmFnZXIuaCAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9leGNlcHRpb24uaCAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvZmlsZXN5c3RlbS5oICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2lzY2kuaCAgICAgICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9pc2NpX2Nkcm9tLmggICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvaXNjaV9kaXNrLmggICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2lzY2lfZXhwYW5kZXIuaCAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyX3BoeS5oICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvaXNjaV9leHBhbmRlcl9wb3J0LmggICB8IDIgLS0KKyBsaWIvZW5naW5lL2lzY2lfcGh5LmggICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9pc2NpX3BvcnQuaCAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvaXNjaV9yYWlkX2luZm8uaCAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL2lzY2lfdGFwZS5oICAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9saXN0LmggICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvbWRhZG1fY29uZmlnLmggICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL211bHRpbWVkaWFfZGV2aWNlLmggICAgfCAyIC0tCisgbGliL2VuZ2luZS9ub25kaXNrX2RldmljZS5oICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvb2JqZWN0LmggICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3BjaV9oZWFkZXIuaCAgICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9waHkuaCAgICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvcG9ydC5oICAgICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3JhaWRfZGV2aWNlLmggICAgICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9yYWlkX2luZm8uaCAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvcmVtb3RlX3BvcnQuaCAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3JvdXRpbmdfZGV2aWNlLmggICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9zZXNzaW9uLmggICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvc2Vzc2lvbl9tYW5hZ2VyLmggICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3N0b3JhZ2VfZGV2aWNlLmggICAgICAgfCAyIC0tCisgbGliL2VuZ2luZS9zdHJlYW1fZGV2aWNlLmggICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvc3RyaW5nLmggICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmggICAgfCAyIC0tCisgbGliL2VuZ2luZS91dGlscy5oICAgICAgICAgICAgICAgIHwgMiAtLQorIGxpYi9lbmdpbmUvdm9sdW1lLmggICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvbG9nL2xvZy5oICAgICAgICAgICAgICAgICAgICAgfCAyIC0tCisgbGliL21wYi9tYWNoaW5lX2J5dGVzLmggICAgICAgICAgIHwgMiAtLQorIGxpYi9tcGIvbXBiLmggICAgICAgICAgICAgICAgICAgICB8IDIgLS0KKyBsaWIvb3JvbS9vcm9tLmggICAgICAgICAgICAgICAgICAgfCAyIC0tCisgNTcgZmlsZXMgY2hhbmdlZCwgMTE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2VmaS9lZmkuaCBiL2xpYi9lZmkvZWZpLmgKK2luZGV4IDllN2U0MWIuLjgwNGU1NjcgMTAwNjQ0CistLS0gYS9saWIvZWZpL2VmaS5oCisrKysgYi9saWIvZWZpL2VmaS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19FRklfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19FRklfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvYWhjaS5oIGIvbGliL2VuZ2luZS9haGNpLmgKK2luZGV4IGU4ODNkMWEuLjgwYTk2OTkgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FoY2kuaAorKysrIGIvbGliL2VuZ2luZS9haGNpLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0FIQ0lfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BSENJX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2FoY2lfY2Ryb20uaCBiL2xpYi9lbmdpbmUvYWhjaV9jZHJvbS5oCitpbmRleCA0NDJmMzAxLi5kOGNhMDQyIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9haGNpX2Nkcm9tLmgKKysrKyBiL2xpYi9lbmdpbmUvYWhjaV9jZHJvbS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19BSENJX0NEUk9NX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQUhDSV9DRFJPTV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9haGNpX2Rpc2suaCBiL2xpYi9lbmdpbmUvYWhjaV9kaXNrLmgKK2luZGV4IDc4OTJhNTMuLjFiYWQ5YWQgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FoY2lfZGlzay5oCisrKysgYi9saWIvZW5naW5lL2FoY2lfZGlzay5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19BSENJX0RJU0tfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BSENJX0RJU0tfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvYWhjaV9tdWx0aXBsaWVyLmggYi9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllci5oCitpbmRleCBkNjNlOWJjLi4xMDI5YWYyIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXIuaAorKysrIGIvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXIuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQUhDSV9NVUxUSVBMSUVSX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQUhDSV9NVUxUSVBMSUVSX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllcl9waHkuaCBiL2xpYi9lbmdpbmUvYWhjaV9tdWx0aXBsaWVyX3BoeS5oCitpbmRleCA1OGVjZWJjLi4yMTMyYzIzIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXJfcGh5LmgKKysrKyBiL2xpYi9lbmdpbmUvYWhjaV9tdWx0aXBsaWVyX3BoeS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19BSENJX01VTFRJUExJRVJfUEhZX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQUhDSV9NVUxUSVBMSUVSX1BIWV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXJfcG9ydC5oIGIvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXJfcG9ydC5oCitpbmRleCA1ZmY0Y2Y3Li4yNDAyNDczIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9haGNpX211bHRpcGxpZXJfcG9ydC5oCisrKysgYi9saWIvZW5naW5lL2FoY2lfbXVsdGlwbGllcl9wb3J0LmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0FIQ0lfTVVMVElQTElFUl9QT1JUX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQUhDSV9NVUxUSVBMSUVSX1BPUlRfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvYWhjaV9waHkuaCBiL2xpYi9lbmdpbmUvYWhjaV9waHkuaAoraW5kZXggZTIyNTRlNy4uYTQ0ZGFlMCAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvYWhjaV9waHkuaAorKysrIGIvbGliL2VuZ2luZS9haGNpX3BoeS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19BSENJX1BIWV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0FIQ0lfUEhZX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2FoY2lfcG9ydC5oIGIvbGliL2VuZ2luZS9haGNpX3BvcnQuaAoraW5kZXggZjllMzMwOC4uMDNjMTA5YiAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvYWhjaV9wb3J0LmgKKysrKyBiL2xpYi9lbmdpbmUvYWhjaV9wb3J0LmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0FIQ0lfUE9SVF9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0FIQ0lfUE9SVF9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9haGNpX3JhaWRfaW5mby5oIGIvbGliL2VuZ2luZS9haGNpX3JhaWRfaW5mby5oCitpbmRleCBlMWM4MWFlLi5jNzBlNjNlIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9haGNpX3JhaWRfaW5mby5oCisrKysgYi9saWIvZW5naW5lL2FoY2lfcmFpZF9pbmZvLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0FIQ0lfUkFJRF9JTkZPX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQUhDSV9SQUlEX0lORk9fSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvYWhjaV90YXBlLmggYi9saWIvZW5naW5lL2FoY2lfdGFwZS5oCitpbmRleCBjZGQ5ZjEzLi5hOTFmZDJjIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9haGNpX3RhcGUuaAorKysrIGIvbGliL2VuZ2luZS9haGNpX3RhcGUuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQUhDSV9UQVBFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQUhDSV9UQVBFX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2FycmF5LmggYi9saWIvZW5naW5lL2FycmF5LmgKK2luZGV4IDM2ZmI0YTQuLjA5ODZjZTMgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2FycmF5LmgKKysrKyBiL2xpYi9lbmdpbmUvYXJyYXkuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQVJSQVlfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19BUlJBWV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9ibG9ja19kZXZpY2UuaCBiL2xpYi9lbmdpbmUvYmxvY2tfZGV2aWNlLmgKK2luZGV4IDQ1MDM5MTQuLjQ1ZGQzZGIgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2Jsb2NrX2RldmljZS5oCisrKysgYi9saWIvZW5naW5lL2Jsb2NrX2RldmljZS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19CTE9DS19ERVZJQ0VfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19CTE9DS19ERVZJQ0VfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvY2FjaGUuaCBiL2xpYi9lbmdpbmUvY2FjaGUuaAoraW5kZXggNzJjZjUyMS4uNzJkYTIwYiAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvY2FjaGUuaAorKysrIGIvbGliL2VuZ2luZS9jYWNoZS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMyw0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0NBQ0hFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQ0FDSEVfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvY29udGFpbmVyLmggYi9saWIvZW5naW5lL2NvbnRhaW5lci5oCitpbmRleCA1Mzg2N2IwLi5jNzExODBjIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9jb250YWluZXIuaAorKysrIGIvbGliL2VuZ2luZS9jb250YWluZXIuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19DT05UQUlORVJfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19DT05UQUlORVJfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvY29udGV4dF9tYW5hZ2VyLmggYi9saWIvZW5naW5lL2NvbnRleHRfbWFuYWdlci5oCitpbmRleCBmZTljMjU2Li42YjRhMmU3IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9jb250ZXh0X21hbmFnZXIuaAorKysrIGIvbGliL2VuZ2luZS9jb250ZXh0X21hbmFnZXIuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19DT05URVhUX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQ09OVEVYVF9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9jb250cm9sbGVyLmggYi9saWIvZW5naW5lL2NvbnRyb2xsZXIuaAoraW5kZXggYTJmMTg4YS4uNmJkMDc4ZiAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvY29udHJvbGxlci5oCisrKysgYi9saWIvZW5naW5lL2NvbnRyb2xsZXIuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fQ09OVFJPTExFUl9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0NPTlRST0xMRVJfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvZW5jbG9zdXJlLmggYi9saWIvZW5naW5lL2VuY2xvc3VyZS5oCitpbmRleCAzZmFlZjBjLi5mNGIxM2NjIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9lbmNsb3N1cmUuaAorKysrIGIvbGliL2VuZ2luZS9lbmNsb3N1cmUuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fRU5DTE9TVVJFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fRU5DTE9TVVJFX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2VuZF9kZXZpY2UuaCBiL2xpYi9lbmdpbmUvZW5kX2RldmljZS5oCitpbmRleCBmMTQ3ZTQxLi4yNjliMjM2IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9lbmRfZGV2aWNlLmgKKysrKyBiL2xpYi9lbmdpbmUvZW5kX2RldmljZS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19FTkRfREVWSUNFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fRU5EX0RFVklDRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9ldmVudC5oIGIvbGliL2VuZ2luZS9ldmVudC5oCitpbmRleCBjZjliYjRmLi4xMWE0OTI2IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9ldmVudC5oCisrKysgYi9saWIvZW5naW5lL2V2ZW50LmgKK0BAIC0xMiw5ICsxMiw3IEBAIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19FVkVOVF9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0VWRU5UX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2V2ZW50X21hbmFnZXIuaCBiL2xpYi9lbmdpbmUvZXZlbnRfbWFuYWdlci5oCitpbmRleCA2NTAwN2I5Li5hN2E4ZmMzIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9ldmVudF9tYW5hZ2VyLmgKKysrKyBiL2xpYi9lbmdpbmUvZXZlbnRfbWFuYWdlci5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19FVkVOVF9NQU5BR0VSX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fRVZFTlRfTUFOQUdFUl9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9leGNlcHRpb24uaCBiL2xpYi9lbmdpbmUvZXhjZXB0aW9uLmgKK2luZGV4IDE3MWU0NWQuLjE4M2ViYjUgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2V4Y2VwdGlvbi5oCisrKysgYi9saWIvZW5naW5lL2V4Y2VwdGlvbi5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19FWENFUFRJT05fSF9fSU5DTFVERURfXworICNkZWZpbmUgX19FWENFUFRJT05fSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvZmlsZXN5c3RlbS5oIGIvbGliL2VuZ2luZS9maWxlc3lzdGVtLmgKK2luZGV4IDljMmNlMzkuLmI0OWRmMDcgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2ZpbGVzeXN0ZW0uaAorKysrIGIvbGliL2VuZ2luZS9maWxlc3lzdGVtLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0ZJTEVTWVNURU1fSF9fSU5DTFVERURfXworICNkZWZpbmUgX19GSUxFU1lTVEVNX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2lzY2kuaCBiL2xpYi9lbmdpbmUvaXNjaS5oCitpbmRleCBlYTM1Y2Q0Li4wZmE2MDJhIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9pc2NpLmgKKysrKyBiL2xpYi9lbmdpbmUvaXNjaS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19JU0NJX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fSVNDSV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9pc2NpX2Nkcm9tLmggYi9saWIvZW5naW5lL2lzY2lfY2Ryb20uaAoraW5kZXggODdiN2U3Yi4uMjU2MzdmOSAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvaXNjaV9jZHJvbS5oCisrKysgYi9saWIvZW5naW5lL2lzY2lfY2Ryb20uaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fSVNDSV9DRFJPTV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0lTQ0lfQ0RST01fSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvaXNjaV9kaXNrLmggYi9saWIvZW5naW5lL2lzY2lfZGlzay5oCitpbmRleCA1OTZjM2NmLi44ZGQwZGFlIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9pc2NpX2Rpc2suaAorKysrIGIvbGliL2VuZ2luZS9pc2NpX2Rpc2suaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fSVNDSV9ESVNLX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fSVNDSV9ESVNLX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXIuaCBiL2xpYi9lbmdpbmUvaXNjaV9leHBhbmRlci5oCitpbmRleCBjYTdjMmYxLi43ZGMxOTIwIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyLmgKKysrKyBiL2xpYi9lbmdpbmUvaXNjaV9leHBhbmRlci5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19JU0NJX0VYUEFOREVSX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fSVNDSV9FWFBBTkRFUl9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyX3BoeS5oIGIvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyX3BoeS5oCitpbmRleCBjOWNkNzcwLi5kM2QyODMyIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyX3BoeS5oCisrKysgYi9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXJfcGh5LmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0lTQ0lfRVhQQU5ERVJfUEhZX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fSVNDSV9FWFBBTkRFUl9QSFlfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvaXNjaV9leHBhbmRlcl9wb3J0LmggYi9saWIvZW5naW5lL2lzY2lfZXhwYW5kZXJfcG9ydC5oCitpbmRleCBlNjVhMTI0Li40ZmM5MzEwIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyX3BvcnQuaAorKysrIGIvbGliL2VuZ2luZS9pc2NpX2V4cGFuZGVyX3BvcnQuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fSVNDSV9FWFBBTkRFUl9QT1JUX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fSVNDSV9FWFBBTkRFUl9QT1JUX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2lzY2lfcGh5LmggYi9saWIvZW5naW5lL2lzY2lfcGh5LmgKK2luZGV4IDc2N2E1YjIuLjEwNWM2OTcgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2lzY2lfcGh5LmgKKysrKyBiL2xpYi9lbmdpbmUvaXNjaV9waHkuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fSVNDSV9QSFlfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19JU0NJX1BIWV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9pc2NpX3BvcnQuaCBiL2xpYi9lbmdpbmUvaXNjaV9wb3J0LmgKK2luZGV4IGI4MGJlN2YuLjVjY2MxNTEgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2lzY2lfcG9ydC5oCisrKysgYi9saWIvZW5naW5lL2lzY2lfcG9ydC5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19JU0NJX1BPUlRfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19JU0NJX1BPUlRfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvaXNjaV9yYWlkX2luZm8uaCBiL2xpYi9lbmdpbmUvaXNjaV9yYWlkX2luZm8uaAoraW5kZXggMWRmNjQ3Ny4uYjBiMDQ2YSAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvaXNjaV9yYWlkX2luZm8uaAorKysrIGIvbGliL2VuZ2luZS9pc2NpX3JhaWRfaW5mby5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19JU0NJX1JBSURfSU5GT19IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0lTQ0lfUkFJRF9JTkZPX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL2lzY2lfdGFwZS5oIGIvbGliL2VuZ2luZS9pc2NpX3RhcGUuaAoraW5kZXggOTg1Zjc2Ny4uYTJjZWYyZCAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvaXNjaV90YXBlLmgKKysrKyBiL2xpYi9lbmdpbmUvaXNjaV90YXBlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0lTQ0lfVEFQRV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0lTQ0lfVEFQRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9saXN0LmggYi9saWIvZW5naW5lL2xpc3QuaAoraW5kZXggOWE3YzNjMy4uNjM5NTgzMCAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvbGlzdC5oCisrKysgYi9saWIvZW5naW5lL2xpc3QuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fTElTVF9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0xJU1RfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvbWRhZG1fY29uZmlnLmggYi9saWIvZW5naW5lL21kYWRtX2NvbmZpZy5oCitpbmRleCBjOTQwMjBmLi5lNDE1YjRmIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9tZGFkbV9jb25maWcuaAorKysrIGIvbGliL2VuZ2luZS9tZGFkbV9jb25maWcuaAorQEAgLTExLDkgKzExLDcgQEAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX01EQURNX0NPTkZJR19IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX01EQURNX0NPTkZJR19IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9tdWx0aW1lZGlhX2RldmljZS5oIGIvbGliL2VuZ2luZS9tdWx0aW1lZGlhX2RldmljZS5oCitpbmRleCA1MzMzNzBlLi42OTRlMmE1IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9tdWx0aW1lZGlhX2RldmljZS5oCisrKysgYi9saWIvZW5naW5lL211bHRpbWVkaWFfZGV2aWNlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX01VTFRJTUVESUFfREVWSUNFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fTVVMVElNRURJQV9ERVZJQ0VfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvbm9uZGlza19kZXZpY2UuaCBiL2xpYi9lbmdpbmUvbm9uZGlza19kZXZpY2UuaAoraW5kZXggNzBlYmIzMi4uMGYwMGU1MiAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvbm9uZGlza19kZXZpY2UuaAorKysrIGIvbGliL2VuZ2luZS9ub25kaXNrX2RldmljZS5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19DSEFSQUNURVJfREVWSUNFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fQ0hBUkFDVEVSX0RFVklDRV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9vYmplY3QuaCBiL2xpYi9lbmdpbmUvb2JqZWN0LmgKK2luZGV4IGI1MmQzZDMuLjM0NWQ1OGMgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL29iamVjdC5oCisrKysgYi9saWIvZW5naW5lL29iamVjdC5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19PQkpFQ1RfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19PQkpFQ1RfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvcGNpX2hlYWRlci5oIGIvbGliL2VuZ2luZS9wY2lfaGVhZGVyLmgKK2luZGV4IDM3NmYyOTYuLmM1MTI5YTAgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3BjaV9oZWFkZXIuaAorKysrIGIvbGliL2VuZ2luZS9wY2lfaGVhZGVyLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1BDSV9IRUFERVJfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19QQ0lfSEVBREVSX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3BoeS5oIGIvbGliL2VuZ2luZS9waHkuaAoraW5kZXggZjU3MzBhMC4uYzU5ZjdjOCAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvcGh5LmgKKysrKyBiL2xpYi9lbmdpbmUvcGh5LmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1BIWV9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX1BIWV9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9wb3J0LmggYi9saWIvZW5naW5lL3BvcnQuaAoraW5kZXggMmYzMzg3Ni4uY2M0OGM3YyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvcG9ydC5oCisrKysgYi9saWIvZW5naW5lL3BvcnQuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19QT1JUX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fUE9SVF9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9yYWlkX2RldmljZS5oIGIvbGliL2VuZ2luZS9yYWlkX2RldmljZS5oCitpbmRleCA5OThlODBjLi4yMTc0MTYyIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9yYWlkX2RldmljZS5oCisrKysgYi9saWIvZW5naW5lL3JhaWRfZGV2aWNlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1JBSURfREVWSUNFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fUkFJRF9ERVZJQ0VfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvcmFpZF9pbmZvLmggYi9saWIvZW5naW5lL3JhaWRfaW5mby5oCitpbmRleCAxNzQ2OThhLi4zMDJiZTliIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9yYWlkX2luZm8uaAorKysrIGIvbGliL2VuZ2luZS9yYWlkX2luZm8uaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fUkFJRF9JTkZPX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fUkFJRF9JTkZPX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3JlbW90ZV9wb3J0LmggYi9saWIvZW5naW5lL3JlbW90ZV9wb3J0LmgKK2luZGV4IGMwODY2NTYuLjRkZGZlZTMgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3JlbW90ZV9wb3J0LmgKKysrKyBiL2xpYi9lbmdpbmUvcmVtb3RlX3BvcnQuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fUkVNT1RFX1BPUlRfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19SRU1PVEVfUE9SVF9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9yb3V0aW5nX2RldmljZS5oIGIvbGliL2VuZ2luZS9yb3V0aW5nX2RldmljZS5oCitpbmRleCA1Zjg1N2E2Li4yODQ2MjFlIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9yb3V0aW5nX2RldmljZS5oCisrKysgYi9saWIvZW5naW5lL3JvdXRpbmdfZGV2aWNlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1JPVVRJTkdfREVWSUNFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fUk9VVElOR19ERVZJQ0VfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvc2Vzc2lvbi5oIGIvbGliL2VuZ2luZS9zZXNzaW9uLmgKK2luZGV4IGE5MDFkMWMuLjMyMDBkYTEgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3Nlc3Npb24uaAorKysrIGIvbGliL2VuZ2luZS9zZXNzaW9uLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1NFU1NJT05fSF9fSU5DTFVERURfXworICNkZWZpbmUgX19TRVNTSU9OX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3Nlc3Npb25fbWFuYWdlci5oIGIvbGliL2VuZ2luZS9zZXNzaW9uX21hbmFnZXIuaAoraW5kZXggNzE3NzA2NC4uODdlMTZjMyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvc2Vzc2lvbl9tYW5hZ2VyLmgKKysrKyBiL2xpYi9lbmdpbmUvc2Vzc2lvbl9tYW5hZ2VyLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1NFU1NJT05fTUFOQUdFUl9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX1NFU1NJT05fTUFOQUdFUl9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9zdG9yYWdlX2RldmljZS5oIGIvbGliL2VuZ2luZS9zdG9yYWdlX2RldmljZS5oCitpbmRleCBkZGViNjZmLi4yMGJkYWIyIDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS9zdG9yYWdlX2RldmljZS5oCisrKysgYi9saWIvZW5naW5lL3N0b3JhZ2VfZGV2aWNlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1NUT1JBR0VfREVWSUNFX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fU1RPUkFHRV9ERVZJQ0VfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvc3RyZWFtX2RldmljZS5oIGIvbGliL2VuZ2luZS9zdHJlYW1fZGV2aWNlLmgKK2luZGV4IDliYzExMWEuLmIyOWJkNjggMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL3N0cmVhbV9kZXZpY2UuaAorKysrIGIvbGliL2VuZ2luZS9zdHJlYW1fZGV2aWNlLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1NUUkVBTV9ERVZJQ0VfSF9fSU5DTFVERURfXworICNkZWZpbmUgX19TVFJFQU1fREVWSUNFX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3N0cmluZy5oIGIvbGliL2VuZ2luZS9zdHJpbmcuaAoraW5kZXggMzAwN2RjNy4uNmYzNDhjOSAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvc3RyaW5nLmgKKysrKyBiL2xpYi9lbmdpbmUvc3RyaW5nLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1NUUklOR19IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX1NUUklOR19IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS91bmlxdWVfaWRfbWFuYWdlci5oIGIvbGliL2VuZ2luZS91bmlxdWVfaWRfbWFuYWdlci5oCitpbmRleCBmZTc5ZWFjLi40YTEzNjI3IDEwMDY0NAorLS0tIGEvbGliL2VuZ2luZS91bmlxdWVfaWRfbWFuYWdlci5oCisrKysgYi9saWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX1VOSVFVRV9JRF9NQU5BR0VSX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fVU5JUVVFX0lEX01BTkFHRVJfSF9fSU5DTFVERURfXworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvdXRpbHMuaCBiL2xpYi9lbmdpbmUvdXRpbHMuaAoraW5kZXggODZjMjBjZi4uNTUyNTMwMyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvdXRpbHMuaAorKysrIGIvbGliL2VuZ2luZS91dGlscy5oCitAQCAtMTUsOSArMTUsNyBAQCBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgCisgCisgCistI2lmIF9fR05VQ19QUkVSRVEoMywgNCkKKyAjcHJhZ21hIG9uY2UKKy0jZW5kaWYgLyogX19HTlVDX1BSRVJFUSAqLworIAorICNpZm5kZWYgX19VVElMU19IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX1VUSUxTX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvZW5naW5lL3ZvbHVtZS5oIGIvbGliL2VuZ2luZS92b2x1bWUuaAoraW5kZXggOWE2M2NiZi4uMzM0N2IzMSAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvdm9sdW1lLmgKKysrKyBiL2xpYi9lbmdpbmUvdm9sdW1lLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMKKyBjbGFzcyBBcnJheTsKK2RpZmYgLS1naXQgYS9saWIvbG9nL2xvZy5oIGIvbGliL2xvZy9sb2cuaAoraW5kZXggYzBiZDYzZS4uOGI1ZjE3MSAxMDA2NDQKKy0tLSBhL2xpYi9sb2cvbG9nLmgKKysrKyBiL2xpYi9sb2cvbG9nLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX0xPR19IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX0xPR19IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL21wYi9tYWNoaW5lX2J5dGVzLmggYi9saWIvbXBiL21hY2hpbmVfYnl0ZXMuaAoraW5kZXggN2ZiYjBlOS4uODAwYjEyMCAxMDA2NDQKKy0tLSBhL2xpYi9tcGIvbWFjaGluZV9ieXRlcy5oCisrKysgYi9saWIvbXBiL21hY2hpbmVfYnl0ZXMuaAorQEAgLTE1LDkgKzE1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIAorIAorIAorLSNpZiBfX0dOVUNfUFJFUkVRKDMsIDQpCisgI3ByYWdtYSBvbmNlCistI2VuZGlmIC8qIF9fR05VQ19QUkVSRVEgKi8KKyAKKyAjaWZuZGVmIF9fRU5ESUFOX0hfX0lOQ0xVREVEX18KKyAjZGVmaW5lIF9fRU5ESUFOX0hfX0lOQ0xVREVEX18KK2RpZmYgLS1naXQgYS9saWIvbXBiL21wYi5oIGIvbGliL21wYi9tcGIuaAoraW5kZXggMDE3ODJhZi4uYzQyY2RmYiAxMDA2NDQKKy0tLSBhL2xpYi9tcGIvbXBiLmgKKysrKyBiL2xpYi9tcGIvbXBiLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX01QQl9IX19JTkNMVURFRF9fCisgI2RlZmluZSBfX01QQl9IX19JTkNMVURFRF9fCitkaWZmIC0tZ2l0IGEvbGliL29yb20vb3JvbS5oIGIvbGliL29yb20vb3JvbS5oCitpbmRleCBmNzZlM2VlLi5lMTAzMTFkIDEwMDY0NAorLS0tIGEvbGliL29yb20vb3JvbS5oCisrKysgYi9saWIvb3JvbS9vcm9tLmgKK0BAIC0xNSw5ICsxNSw3IEBAIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAKKyAKKyAKKy0jaWYgX19HTlVDX1BSRVJFUSgzLCA0KQorICNwcmFnbWEgb25jZQorLSNlbmRpZiAvKiBfX0dOVUNfUFJFUkVRICovCisgCisgI2lmbmRlZiBfX09ST01fSF9fSU5DTFVERURfXworICNkZWZpbmUgX19PUk9NX0hfX0lOQ0xVREVEX18KKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAxLXNzaWV2ZW50bW9uaXRvci1vcmRlcmVkLWNvbXBhcmlzb24tYmV0d2Vlbi1wb2ludGVycy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwMS1zc2lldmVudG1vbml0b3Itb3JkZXJlZC1jb21wYXJpc29uLWJldHdlZW4tcG9pbnRlcnMtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZGY5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwMS1zc2lldmVudG1vbml0b3Itb3JkZXJlZC1jb21wYXJpc29uLWJldHdlZW4tcG9pbnRlcnMtLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gZWE5ZWNmNGJmMzA1Zjk1MDlkNTgyMmIzODIzNjU4YTQwMTYyZjQzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI1IEp1bCAyMDE3IDE5OjA4OjIxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNzaWV2ZW50bW9uaXRvcjogb3JkZXJlZCBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlcnMgYW5kCisgemVybywgYWN0dWFsbHkgd2l0aCBOVUxMCisKK0NvbXBhcmluZyB3aGljaCBpcyBsYXJnZSBvciBzbWFsbCBiZXR3ZWVuIGEgcG9pbnRlciBhbmQgTlVMTAoraG93ZXZlciwgbG9va3MgY29tcGxldGVseSBpbGxvZ2ljYWwuIE9yZGVyZWQgY29tcGFyaXNvbiBvZgordHdvIHZhbGlkIHBvaW50ZXJzIGlzIGxlZ2l0LCBidXQgbm8gcG9pbnRlciB3aWxsIGJlIHNtYWxsZXIKK3RoYW4gTlVMTCAsIHNvIGNvbXBhcmluZyBpZiBhIHBvaW50ZXIgaXMgbGFyZ2VyIHRoYW4gTlVMTAorc2ltcGx5IG1lYW5zIGlmIHRoZSBwb2ludGVyIGlzIG5vdCBOVUxMLgorCitGaXhlcyBlcnJvcnMgZm91bmQgd2l0aCBjbGFuZyBlLmcuCisKK3wgc3NpZXZlbnRtb25pdG9yLmNwcDozMzk6NTM6IGVycm9yOiBvcmRlcmVkIGNvbXBhcmlzb24gYmV0d2VlbiBwb2ludGVyIGFuZCB6ZXJvICgnY2hhciAqJyBhbmQgJ2ludCcpCit8ICAgICAgICAgICAgICAgICBpZiAoZmdldHMobmV4dGxpbmUsIHNpemVvZihuZXh0bGluZSkgLSAxLCBtZHN0YXQpIDwgMCkgeworfCAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fiBeIH4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHRvb2xzL3NzaWV2ZW50bW9uaXRvci5jcHAgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9zc2lldmVudG1vbml0b3IuY3BwIGIvdG9vbHMvc3NpZXZlbnRtb25pdG9yLmNwcAoraW5kZXggZjA0YjhmMC4uN2EwMDEyMiAxMDA2NDQKKy0tLSBhL3Rvb2xzL3NzaWV2ZW50bW9uaXRvci5jcHAKKysrKyBiL3Rvb2xzL3NzaWV2ZW50bW9uaXRvci5jcHAKK0BAIC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIGludCBfcmVhZF9tZHN0YXQoaW50IGZkKQorIAlpZiAoIXN0cm5jbXAobGluZSwgIm1kIiwgMikpIHsKKyAJICAgIGlmIChzdHJzdHIobGluZSwgSU5BQ1RJVkVfU1RSKSkgeyAvKiBwb3NzaWJseSBjb250YWluZXIgKi8KKyAJCWNoYXIgbmV4dGxpbmVbMTAyNF07CistCQlpZiAoZmdldHMobmV4dGxpbmUsIHNpemVvZihuZXh0bGluZSkgLSAxLCBtZHN0YXQpIDwgMCkgeworKwkJaWYgKGZnZXRzKG5leHRsaW5lLCBzaXplb2YobmV4dGxpbmUpIC0gMSwgbWRzdGF0KSAhPSAoY2hhciAqKSBOVUxMKSB7CisgCQkgICAgZmNsb3NlKG1kc3RhdCk7CisgCQkgICAgcmV0dXJuIDE7CisgCQl9CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwMi1Db252ZXJ0LW1hY3Jvcy1pbnRvLWZ1bmN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAyLUNvbnZlcnQtbWFjcm9zLWludG8tZnVuY3Rpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MTMwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwMi1Db252ZXJ0LW1hY3Jvcy1pbnRvLWZ1bmN0aW9ucy5wYXRjaApAQCAtMCwwICsxLDEyMyBAQAorRnJvbSAxMzM4ZWU0ZTY5YzQ2NWY4ZjM4MWVjM2JmZTUwNTgwODAyMzZlZGJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjI6MDg6MzUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzZdIENvbnZlcnQgbWFjcm9zIGludG8gZnVuY3Rpb25zCisKK1RoaXMgaGVscHMgaW4gZml4aW5nIHRoZSBzZWN1cml0eSBmb3JtYXQgd2FybmluZ3MKK2FkZCAtZm5vLWJ1aWx0aW4tbG9nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliL2VuZ2luZS9NYWtlZmlsZS5hbSB8ICAzICsrLQorIGxpYi9sb2cvTWFrZWZpbGUuYW0gICAgfCAgMiArKworIGxpYi9sb2cvbG9nLmggICAgICAgICAgfCAzNCArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgc3JjL01ha2VmaWxlLmFtICAgICAgICB8ICAzICsrLQorIDQgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisKK0luZGV4OiBzc2lhcGkuMS4wLjEvbGliL2VuZ2luZS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNzaWFwaS4xLjAuMS5vcmlnL2xpYi9lbmdpbmUvTWFrZWZpbGUuYW0KKysrKyBzc2lhcGkuMS4wLjEvbGliL2VuZ2luZS9NYWtlZmlsZS5hbQorQEAgLTExMyw0ICsxMTMsNSBAQCBsaWJlbmdpbmVfbGFfU09VUkNFUyA9ICAgICAgICAgIFwKKyBsaWJlbmdpbmVfbGFfQ1BQRkxBR1MgPSAgICAgICAgIFwKKyAgICAgICAgIC1JJCh0b3Bfc3JjZGlyKSAgICAgICAgIFwKKyAgICAgICAgIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIFwKKy0gICAgICAgIC1JJCh0b3Bfc3JjZGlyKS9saWIKKysgICAgICAgIC1JJCh0b3Bfc3JjZGlyKS9saWIgICAgIFwKKysgICAgICAgIC1mbm8tYnVpbHRpbi1sb2cKK0luZGV4OiBzc2lhcGkuMS4wLjEvbGliL2xvZy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNzaWFwaS4xLjAuMS5vcmlnL2xpYi9sb2cvTWFrZWZpbGUuYW0KKysrKyBzc2lhcGkuMS4wLjEvbGliL2xvZy9NYWtlZmlsZS5hbQorQEAgLTUsMyArNSw1IEBAIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYmxvZy5sYQorIGxpYmxvZ19sYV9TT1VSQ0VTID0gICAgIFwKKyAgICAgICAgIGxvZy5jICAgICAgICAgICBcCisgICAgICAgICBsb2cuaAorKworK2xpYmxvZ19sYV9DUFBGTEFHUyA9IC1mbm8tYnVpbHRpbi1sb2cKK0luZGV4OiBzc2lhcGkuMS4wLjEvbGliL2xvZy9sb2cuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNzaWFwaS4xLjAuMS5vcmlnL2xpYi9sb2cvbG9nLmgKKysrKyBzc2lhcGkuMS4wLjEvbGliL2xvZy9sb2cuaAorQEAgLTIzLDcgKzIzLDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJRworICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorIGV4dGVybiAiQyIgeworICNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworLQorKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyAvKiAqLworIGVudW0gbG9nX2xldmVsIHsKKyAgICAgTE9HX0ZJUlNUID0gMCwKK0BAIC0zNywyNiArMzcsMzQgQEAgZW51bSBsb2dfbGV2ZWwgeworIH07CisgCisgLyogKi8KKy0jZGVmaW5lIGxvZyhfX2xldmVsLCBfX2Zvcm1hdCwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBkbyB7IGlmIChsb2dfZ2V0X2xldmVsKCkgPj0gKGVudW0gbG9nX2xldmVsKShfX2xldmVsKSkgICAgICBcCistICAgICAgICBfX2xvZyhfX2xldmVsLCBfX2Zvcm1hdCwgIyMgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwKKy0gICAgfSB3aGlsZSAoMCkKKy0KKy0jZGVmaW5lIGRsb2coX19mb3JtYXQsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0JbG9nKExPR19ERUJVRywgX19mb3JtYXQsICMjIF9fVkFfQVJHU19fKTsKKyt2b2lkIF9fbG9nKGVudW0gbG9nX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKysgICAgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMiwgMykpKTsKKyAKKyAvKiAqLworLXZvaWQgbG9nX2luaXQoZW51bSBsb2dfbGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKnBhdGgpOworK2VudW0gbG9nX2xldmVsIGxvZ19nZXRfbGV2ZWwodm9pZCk7CisgCisgLyogKi8KKy12b2lkIGxvZ19maW5pKHZvaWQpOworLQorK3N0YXRpYyBpbmxpbmUgdm9pZCBsb2coZW51bSBsb2dfbGV2ZWwgX19sZXZlbCwgY29uc3QgY2hhciogX19mb3JtYXQsIC4uLikgeworKyAgICB2YV9saXN0IGFwOworKyAgICB2YV9zdGFydChhcCwgX19mb3JtYXQpOworKyAgICBkbyB7CisrICAgICAgICAgaWYgKGxvZ19nZXRfbGV2ZWwoKSA+PSAoZW51bSBsb2dfbGV2ZWwpKF9fbGV2ZWwpKQorKyAgICAgICAgICAgIF9fbG9nKF9fbGV2ZWwsIF9fZm9ybWF0LCBhcCk7CisrICAgIH0gd2hpbGUgKDApOworKyAgICB2YV9lbmQoYXApOworK30KKysKKytzdGF0aWMgaW5saW5lIHZvaWQgZGxvZyhjb25zdCBjaGFyKiBfX2Zvcm1hdCwgLi4uKSB7CisrICAgIHZhX2xpc3QgYXA7CisrICAgIHZhX3N0YXJ0KGFwLCBfX2Zvcm1hdCk7CisrCWxvZyhMT0dfREVCVUcsIF9fZm9ybWF0LCBhcCk7CisrICAgIHZhX2VuZChhcCk7CisrfQorIC8qICovCistdm9pZCBfX2xvZyhlbnVtIGxvZ19sZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCistICAgIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsIDIsIDMpKSk7Cisrdm9pZCBsb2dfaW5pdChlbnVtIGxvZ19sZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqcGF0aCk7CisgCisgLyogKi8KKy1lbnVtIGxvZ19sZXZlbCBsb2dfZ2V0X2xldmVsKHZvaWQpOworK3ZvaWQgbG9nX2Zpbmkodm9pZCk7CisgCisgLyogKi8KKyB2b2lkIGxvZ19zZXRfbGV2ZWwoZW51bSBsb2dfbGV2ZWwgbGV2ZWwpOworSW5kZXg6IHNzaWFwaS4xLjAuMS9zcmMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzc2lhcGkuMS4wLjEub3JpZy9zcmMvTWFrZWZpbGUuYW0KKysrKyBzc2lhcGkuMS4wLjEvc3JjL01ha2VmaWxlLmFtCitAQCAtNyw3ICs3LDggQEAgbGliX0xUTElCUkFSSUVTID0gbGlic3NpLmxhCisgbGlic3NpX2xhX0NQUEZMQUdTID0gICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIC1JJCh0b3Bfc3JjZGlyKSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgICAgICAgICBcCistICAgICAgICAtSSQodG9wX3NyY2RpcikvbGliCisrICAgICAgICAtSSQodG9wX3NyY2RpcikvbGliICAgICAgICAgICAgIFwKKysgICAgICAgIC1mbm8tYnVpbHRpbi1sb2cKKyAKKyBsaWJzc2lfbGFfTERGTEFHUyA9ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgJChTR1VUSUxTX0xERkxBR1MpICAgICAgICAgICAgICBcCitJbmRleDogc3NpYXBpLjEuMC4xL2xpYi9lZmkvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzc2lhcGkuMS4wLjEub3JpZy9saWIvZWZpL01ha2VmaWxlLmFtCisrKysgc3NpYXBpLjEuMC4xL2xpYi9lZmkvTWFrZWZpbGUuYW0KK0BAIC01LDMgKzUsNCBAQCBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJlZmkubGEKKyBsaWJlZmlfbGFfU09VUkNFUyA9ICAgICAgICAgICAgIFwKKyAgICAgZWZpLmNwcCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBlZmkuaAorK2xpYmVmaV9sYV9DUFBGTEFHUyA9IC1mbm8tYnVpbHRpbi1sb2cKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAzLVJlcGxhY2UtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS13aXRoLXJlYWxwYXRoLUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDAzLVJlcGxhY2UtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS13aXRoLXJlYWxwYXRoLUFQSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGNkNDBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDMtUmVwbGFjZS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLXdpdGgtcmVhbHBhdGgtQVBJLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNzgxMjg4ZDYzMDcwMDJjY2U3MGRkYWZiNmVmYjIwMGI3ZjYwMjk0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE2IEp1biAyMDE3IDIyOjEyOjQzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBSZXBsYWNlIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUgd2l0aCByZWFscGF0aCgpIEFQSQorCitGaXhlZCBidWlsZCBvbiBtdXNsIHdoZXJlIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUgaXMgbm90IGltcGxlbWVudGVkCisKK2ZpbGVzeXN0ZW0uY3BwOjQ2OjE1OiBlcnJvcjogJ2Nhbm9uaWNhbGl6ZV9maWxlX25hbWUnIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQorICAgICBjaGFyICpwID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZShwYXRoKTsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZW5naW5lL2ZpbGVzeXN0ZW0uY3BwIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS9maWxlc3lzdGVtLmNwcCBiL2xpYi9lbmdpbmUvZmlsZXN5c3RlbS5jcHAKK2luZGV4IGI5OTI1N2UuLjYwNjQ4MzcgMTAwNjQ0CistLS0gYS9saWIvZW5naW5lL2ZpbGVzeXN0ZW0uY3BwCisrKysgYi9saWIvZW5naW5lL2ZpbGVzeXN0ZW0uY3BwCitAQCAtNDMsNyArNDMsNyBAQCB2b2lkIENhbm9uaWNhbFBhdGg6Ol9fY2Fub25pY2FsaXplX3BhdGhfbmFtZShjb25zdCBjaGFyICpwYXRoKQorICAgICBpZiAocGF0aCA9PSAwKSB7CisgICAgICAgICB0aHJvdyBFX05VTExfUE9JTlRFUjsKKyAgICAgfQorLSAgICBjaGFyICpwID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZShwYXRoKTsKKysgICAgY2hhciAqcCA9IHJlYWxwYXRoKHBhdGgsIE5VTEwpOworICAgICBhc3NpZ24ocCk7CisgICAgIGlmIChwKSB7CisgICAgICAgICBmcmVlKHApOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDQtZW5naW5lLUZpeC1pbmRlbnRhdGlvbi1hbmQtbWlzc2luZy1zZW1pLWNvbG9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpLzAwMDQtZW5naW5lLUZpeC1pbmRlbnRhdGlvbi1hbmQtbWlzc2luZy1zZW1pLWNvbG9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkY2UwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwNC1lbmdpbmUtRml4LWluZGVudGF0aW9uLWFuZC1taXNzaW5nLXNlbWktY29sb24ucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSAwNGU4Yjk5ZDgxOTVhMGUzOTk4MmVjZDI3ODAyNDIxNjEwNjMzNzI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjI6MTg6MzEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzZdIGVuZ2luZTogRml4IGluZGVudGF0aW9uIGFuZCBtaXNzaW5nIHNlbWktY29sb24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWIvZW5naW5lL21kYWRtX2NvbmZpZy5jcHAgICAgICB8IDUgKysrLS0KKyBsaWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmNwcCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9lbmdpbmUvbWRhZG1fY29uZmlnLmNwcCBiL2xpYi9lbmdpbmUvbWRhZG1fY29uZmlnLmNwcAoraW5kZXggMTkxNGRkYy4uZTQwYzJjNyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvbWRhZG1fY29uZmlnLmNwcAorKysrIGIvbGliL2VuZ2luZS9tZGFkbV9jb25maWcuY3BwCitAQCAtMTE4LDkgKzExOCwxMCBAQCB2b2lkIGNoZWNrX2NvbmZpZ3VyYXRpb24oKQorICAgICAgICAgYXR0ciA+PiBjb25maWc7CisgICAgICAgICBjb25maWdPayA9IGNvcnJlY3RfY29uZmlnKGNvbmZpZyk7CisgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworLSAgICAgICAgaWYgKGV4ICE9IEVfTk9UX0ZPVU5EKQorKyAgICAgICAgaWYgKGV4ICE9IEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICAgZGxvZygiV2FybmluZzogbWRhZG0gY29uZmlnIGZpbGUgY2Fubm90IGJlIHJlYWQsIG5ldyBvbmUgd2lsbCBiZSB3cml0dGVuIik7CisgICAgICAgICAgICAgYmFja3VwID0gZmFsc2U7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYgKGNvbmZpZ09rICYmIG1vbml0b3JfcnVubmluZygpKSB7CitAQCAtMTM0LDcgKzEzNSw3IEBAIHZvaWQgY2hlY2tfY29uZmlndXJhdGlvbigpCisgICAgICAgICAgICAgZGxvZygiV2FybmluZzogZmFpbGVkIHRvIHVwZGF0ZSBtZGFkbS5jb25mIik7CisgICAgIH0KKyAgICAgaWYgKHJlc3RhcnRfbW9uaXRvcigpID09IDApCistICAgICAgICBkbG9nKCJNb25pdG9yIHJlc3RhcnRlZCBzdWNjZXNzZnVsbHkiKQorKyAgICAgICAgZGxvZygiTW9uaXRvciByZXN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5Iik7CisgICAgIGVsc2UKKyAgICAgICAgIGRsb2coIkVycm9yIHN0YXJ0aW5nIE1vbml0b3IiKTsKKyB9CitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS91bmlxdWVfaWRfbWFuYWdlci5jcHAgYi9saWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmNwcAoraW5kZXggOTljMTUzYy4uODdkNmRkYyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvdW5pcXVlX2lkX21hbmFnZXIuY3BwCisrKysgYi9saWIvZW5naW5lL3VuaXF1ZV9pZF9tYW5hZ2VyLmNwcAorQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFVuaXF1ZUlkTWFuYWdlcjo6cmVmcmVzaCgpCisgICAgICAgICBrZXlGaWxlID4+IGtleUxpc3Q7CisgICAgICAgICBrZXlMaXN0ICs9ICJcbiI7CisgICAgIH0gY2F0Y2ggKC4uLikgeworLSAgICAgICAgZGxvZygic3NpLmtleXMgZmlsZSBtaXNzaW5nIikKKysgICAgICAgIGRsb2coInNzaS5rZXlzIGZpbGUgbWlzc2luZyIpOworICAgICAgICAgLyogbm8gZmlsZT8gdGhhdCdzIG9rICovCisgICAgIH0KKyAgICAgLyogcHJvY2VzcyB0aGUgbGlzdCB0byB1cGRhdGUgSWRDYWNoZXMgKi8KKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDA1LWVuZ2luZS1EZWZpbmUtU0VOVElORUwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwNS1lbmdpbmUtRGVmaW5lLVNFTlRJTkVMLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNGRiZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwNS1lbmdpbmUtRGVmaW5lLVNFTlRJTkVMLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gYTJlM2EyZTMzMmM0MDZlYTNjNTZhOGQ3NGI2MTk3ODEwN2RmNjhlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE2IEp1biAyMDE3IDIyOjIzOjA4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNS82XSBlbmdpbmU6IERlZmluZSBTRU5USU5FTAorCitGaXggd2FybmluZ3Mgd2l0aCBnY2M3Cit0ZXN0LmNwcDoxMjogd2FybmluZzogbWlzc2luZyBzZW50aW5lbCBpbiBmdW5jdGlvbiBjYWxsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliL2VuZ2luZS91dGlscy5jcHAgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2VuZ2luZS91dGlscy5jcHAgYi9saWIvZW5naW5lL3V0aWxzLmNwcAoraW5kZXggNDQ1NzlhMS4uODgxMmE4YyAxMDA2NDQKKy0tLSBhL2xpYi9lbmdpbmUvdXRpbHMuY3BwCisrKysgYi9saWIvZW5naW5lL3V0aWxzLmNwcAorQEAgLTM1LDcgKzM1LDcgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICNpbmNsdWRlICJmaWxlc3lzdGVtLmgiCisgI2luY2x1ZGUgInV0aWxzLmgiCisgI2luY2x1ZGUgImxvZy9sb2cuaCIKKy0KKysjZGVmaW5lIFNFTlRJTkVMIChjb25zdCBjaGFyICopMAorIC8qKgorICAqIEBicmllZiBjYXB0dXJlIHNoZWxsIG91dHB1dCBhcyBiaW5hcnkgZGF0YQorICAqCitAQCAtMTM5LDcgKzEzOSw3IEBAIGludCBzaGVsbChjb25zdCBTdHJpbmcgJnMpCisgICAgICAgICAgKiBCZWZvcmUgc3dpdGNoaW5nIGludG8gbmV3IGV4ZWN1dGFibGUgY2xvc2UgYWxsIG5vbiBzdGFuZGFyZAorICAgICAgICAgICogZmlsZSBoYW5kbGVycy4qLworICAgICAgICAgY2xvc2VfcGFyZW50X2ZkcygpOworLSAgICAgICAgZXhlY2woIi9iaW4vc2giLCAic2giLCAiLWMiLCBjbWQuZ2V0KCksIE5VTEwpOworKyAgICAgICAgZXhlY2woIi9iaW4vc2giLCAic2giLCAiLWMiLCBjbWQuZ2V0KCksIFNFTlRJTkVMKTsKKyAgICAgICAgIC8qIElmIHdlJ3JlIGhlcmUgdGhlbiBleGVjbCBmYWlsZWQqLworICAgICAgICAgZXhpdCgtMSk7CisgICAgICAgICBicmVhazsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaS8wMDA2LXRvb2xzLUFkZC1taXNzaW5nLWluY2x1ZGVzLWFuZC11c2UtcmVhbHBhdGgtaW5zdGVhZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwNi10b29scy1BZGQtbWlzc2luZy1pbmNsdWRlcy1hbmQtdXNlLXJlYWxwYXRoLWluc3RlYWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YjcwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvMDAwNi10b29scy1BZGQtbWlzc2luZy1pbmNsdWRlcy1hbmQtdXNlLXJlYWxwYXRoLWluc3RlYWQtLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gZGYxZDU2ZDZiNmE2YjE1ZDAxMzc2MTllYjhhNGI2MjNkZTZjOTYzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE2IEp1biAyMDE3IDIyOjI4OjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNi82XSB0b29sczogQWRkIG1pc3NpbmcgaW5jbHVkZXMgYW5kIHVzZSByZWFscGF0aCgpIGluc3RlYWQgb2YKKyBjYW5vbmljYWxpemVfZmlsZV9uYW1lCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdG9vbHMvc3NpZXZlbnRtb25pdG9yLmNwcCB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3NzaWV2ZW50bW9uaXRvci5jcHAgYi90b29scy9zc2lldmVudG1vbml0b3IuY3BwCitpbmRleCAwNTUzMzg2Li5mMDRiOGYwIDEwMDY0NAorLS0tIGEvdG9vbHMvc3NpZXZlbnRtb25pdG9yLmNwcAorKysrIGIvdG9vbHMvc3NpZXZlbnRtb25pdG9yLmNwcAorQEAgLTE4LDcgKzE4LDkgQEAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPHN5cy9mY250bC5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8bGliZ2VuLmg+CisgI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8c3lzL2lub3RpZnkuaD4KK0BAIC05OSw3ICsxMDEsNyBAQCBzdGF0aWMgaW50IF9leGVjX3NzaW1zZyh2b2lkKQorICAgICBpbnQgc3RhdHVzOworICAgICBzd2l0Y2ggKHBpZCkgeworIAljYXNlIDA6IHsKKy0JICAgIGNwID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSgiL3Byb2Mvc2VsZi9leGUiKTsKKysJICAgIGNwID0gcmVhbHBhdGgoIi9wcm9jL3NlbGYvZXhlIiwgTlVMTCk7CisgCSAgICBpZiAoY3ApIHsKKyAJCXN0cmNweShidWZmZXIsIGNwKTsKKyAJCWZyZWUoY3ApOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpL2NvbmZpZ3VyZS1jZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NzaWFwaS9zc2lhcGkvY29uZmlndXJlLWNmbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDViZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpL2NvbmZpZ3VyZS1jZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorRG8gbm90IG92ZXJyaWRlIGZsYWdzIHRoZXJlYnkgcmVzcGVjdCB0aGUgZmxhZ3MgY29taW5nIGZyb20gZW52aXJvbm1lbnQsCitlLmcuIHdlIG5lZWQgc29tZSBvcHRpbWl6YXRpb24gbGV2ZWwgdHVybmVkIG9uIHdoZW4gc2VjdXJpdHkgZmxhZ3MgYXJlIGVuYWJsZWQKK3dpdGhvdXQgdGhpcyBjaGFuZ2UsIHRoZSBidWlsZCB3b3VsZCBmYWlsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitJbmRleDogc3NpYXBpLjEuMC4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNzaWFwaS4xLjAuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHNzaWFwaS4xLjAuMS9jb25maWd1cmUuYWMKK0BAIC0xNSwxMSArMTUsNiBAQCBBQ19TVUJTVChWRVJTSU9OKQorIEFNX0lOSVRfQVVUT01BS0Uoc3NpLCAke1ZFUlNJT059KQorIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCisgCistZG5sIFNldCB0aGUgbGFuZ3VhZ2Ugd2UgdXNlCistQ1BQRkxBR1M9Ii1nMyAtZ2R3YXJmLTIgLVdhbGwgLVdlcnJvciAtRF9HTlVfU09VUkNFIgorLUNGTEFHUz0iLXN0ZD1nbnU5OSIKKy1DWFhGTEFHUz0iLXN0ZD1nbnUrKzk4IgorLQorIGRubCBBdXRvbWFrZSAxLjExIC0gc2lsZW50IGJ1aWxkIHJ1bGVzCisgbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaV8xLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3NpYXBpL3NzaWFwaV8xLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWI0Njk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zc2lhcGkvc3NpYXBpXzEuMC4xLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiSW50ZWwgUlNUZSB3aXRoIExpbnV4IE9TIFNTSSBBUEkgTGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiSW50ZWwgUmFwaWQgU3RvcmFnZSBUZWNobm9sb2d5IGVudGVycHJpc2Ugd2l0aCBMaW51eCBPUyogU3RhbmRhcmQgU3RvcmFnZSBJbnRlcmZhY2UgQVBJIExpYnJhcnkuIFwKK1RoZSBsaWJyYXJ5IGFsbG93cyB1c2VyIHRvIG1hbmFnZSBzdG9yYWdlIGRldmljZXMgaW5jbHVkaW5nIGNyZWF0aW5nIGFuZCBtYW5hZ2luZyBSYWlkIGFycmF5cyBvbiBzeXN0ZW1zIHdpdGggSW50ZWwgY2hpcHNldC4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9pcnN0ZXNzaS5zb3VyY2Vmb3JnZS5uZXQvIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA0MTNmZjM2NWUwYmQ3MzNjNDg2OWE2Nzk3NTUxYzZmIgorCitERVBFTkRTICs9ICJzZzMtdXRpbHMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9pcnN0ZXNzaS9maWxlcy8ke0JQTn0uJHtQVn0udGd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXByYWdtYS1vbmNlLXVuY29uZGl0aW9uYWxseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUNvbnZlcnQtbWFjcm9zLWludG8tZnVuY3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtUmVwbGFjZS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLXdpdGgtcmVhbHBhdGgtQVBJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtZW5naW5lLUZpeC1pbmRlbnRhdGlvbi1hbmQtbWlzc2luZy1zZW1pLWNvbG9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZW5naW5lLURlZmluZS1TRU5USU5FTC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXRvb2xzLUFkZC1taXNzaW5nLWluY2x1ZGVzLWFuZC11c2UtcmVhbHBhdGgtaW5zdGVhZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWNmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNzaWV2ZW50bW9uaXRvci1vcmRlcmVkLWNvbXBhcmlzb24tYmV0d2Vlbi1wb2ludGVycy0ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDJmMTZkN2NiZDMwZDI4MDM0MDkzMjEyOTA2NTkxZjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTEwZDI4M2IwZjIxMWFmYjhlYmQwYmRlODdjMDk3NzY5NjEzZDMwYTA1MmNkZjE2NDc1M2UzNWU4MDMyNjRjNyIKKworUyA9IiR7V09SS0RJUn0vJHtCUE59LiR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKK0NYWEZMQUdTPSItc3RkPWdudSsrOTggLURfR05VX1NPVVJDRSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKXsKKyAgICAuL2F1dG9nZW4uc2gKK30KKworUkRFUEVORFNfJHtQTn0gKz0gIm1kYWRtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zdGFydC1zdG9wLWRhZW1vbi9zdGFydC1zdG9wLWRhZW1vbl8xLjE3LjI1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zdGFydC1zdG9wLWRhZW1vbi9zdGFydC1zdG9wLWRhZW1vbl8xLjE3LjI1LmJiCmluZGV4IDVlZTQ0NzIuLmNjMjcyN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3RhcnQtc3RvcC1kYWVtb24vc3RhcnQtc3RvcC1kYWVtb25fMS4xNy4yNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N0YXJ0LXN0b3AtZGFlbW9uL3N0YXJ0LXN0b3AtZGFlbW9uXzEuMTcuMjUuYmIKQEAgLTMxLDYgKzMxLDggQEAKIAogICAgICMgc3VwcG9ydCBmb3IgYnVnZ3kgaW5pdC5kIHNjcmlwdHMgdGhhdCByZWZlciB0byBhbiBhbHRlcm5hdGl2ZQogICAgICMgZXhwbGljaXQgcGF0aCB0byBzdGFydC1zdG9wLWRhZW1vbgotICAgIG1rZGlyIC1wICR7RH0vc2Jpbi8KLSAgICBsbiAtc2YgL3Vzci9zYmluL3N0YXJ0LXN0b3AtZGFlbW9uICR7RH0vc2Jpbi9zdGFydC1zdG9wLWRhZW1vbgorICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KKyAgICAgICAgbWtkaXIgLXAgJHtEfSR7YmFzZV9zYmluZGlyfQorICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9zdGFydC1zdG9wLWRhZW1vbiAke0R9JHtiYXNlX3NiaW5kaXJ9L3N0YXJ0LXN0b3AtZGFlbW9uCisgICAgZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3luZXJneS9zeW5lcmd5X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3luZXJneS9zeW5lcmd5X2dpdC5iYgppbmRleCBmMjA2M2U0Li42OGYwMzg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5bmVyZ3kvc3luZXJneV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeW5lcmd5L3N5bmVyZ3lfZ2l0LmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJTeW5lcmd5IC0gY29udHJvbCBtdWx0aXBsZSBjb21wdXRlcnMgd2l0aCBvbmUga2V5Ym9hcmQgYW5kIG1vdXNlIgogSE9NRVBBR0UgPSAiaHR0cDovL3N5bmVyZ3ktcHJvamVjdC5vcmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wZjM2Njk0NWIyMDljNTUyM2UzOTg4OWY2MzZhZjAwYSIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQyYmE1MWNhNjhlMDU1NTY2YWFkZTI0NjYyZjllYjQxIgorTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCiBTRUNUSU9OID0gIngxMS91dGlscyIKIAogREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4dHN0IGxpYnhpbmVyYW1hIGN1cmwgb3BlbnNzbCIKQEAgLTEwLDExICsxMCwxMSBAQAogIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3ltbGVzcy9zeW5lcmd5LWNvcmUuZ2l0O3Byb3RvY29sPWh0dHBzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5bWxlc3Mvc3luZXJneS5naXQ7cHJvdG9jb2w9aHR0cCIKIAotIyBWZXJzaW9uIDEuNy40LXJjOAotU1JDUkVWID89ICI1ODhmYjRiODA1ZGQ0NTI1NTZkMDVkYmMwM2ZlMjllYTViNGU0M2MwIgotUFYgPSAiMS43LjMrMS43LjQtcmM4KyR7U1JDUFZ9IgorIyBWZXJzaW9uIDEuOC44LXN0YWJsZQorU1JDUkVWID89ICJjMzAzMDFlMjM0MjRkYjExMjU2NjRkYTE3ZGViOGMzYWE2YWVjNTJkIgorUFYgPSAiMS44LjgrJHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCmluZGV4IDA5NzdmN2UuLmYxYmY5YjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nLmluYwpAQCAtMzYsNiArMzYsNyBAQAogICAgIC0td2l0aC1saWJyYWJiaXRtcS1jbGllbnQ9bm8gXAogICAgIC0tZGlzYWJsZS1weXRob24gXAogICAgIC0tZGlzYWJsZS1qYXZhIC0tZGlzYWJsZS1qYXZhLW1vZHVsZXMgXAorICAgIC0td2l0aC1waWRmaWxlLWRpcj0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi8ke0JQTn0gXAogICAgICR7Q09ORklHX1RMU30gXAogIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c3RlbS1zZXR1cC1rZXlib2FyZC9zeXN0ZW0tc2V0dXAta2V5Ym9hcmRfMC44LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c3RlbS1zZXR1cC1rZXlib2FyZC9zeXN0ZW0tc2V0dXAta2V5Ym9hcmRfMC44LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZDdhZjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXN0ZW0tc2V0dXAta2V5Ym9hcmQvc3lzdGVtLXNldHVwLWtleWJvYXJkXzAuOC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJ4b3JnLmNvbmYga2V5Ym9hcmQgbGF5b3V0IGNhbGxvdXQiCi1ERVNDUklQVElPTiA9ICJzeXN0ZW0tc2V0dXAta2V5Ym9hcmQgaXMgYSBkYWVtb24gdG8gbW9uaXRvciB0aGUga2V5Ym9hcmQgbGF5b3V0IGNvbmZpZ3VyZWQgaW4gXAotL2V0Yy9zeXNjb25maWcva2V5Ym9hcmQgYW5kIHRyYW5zZmVyIHRoaXMgaW50byB0aGUgbWF0Y2hpbmcgeG9yZy5jb25mLmQgc25pcHBldC4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0LmZlZG9yYWhvc3RlZC5vcmcvZ2l0L3N5c3RlbS1zZXR1cC1rZXlib2FyZC5naXQiCi1TRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXQuZmVkb3JhaG9zdGVkLm9yZy9jZ2l0LyR7UE59LmdpdC9zbmFwc2hvdC8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzk5MDAzOTY4Y2NjNzM5Y2RkZDljYzM3MGFmMzc3YTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWVmNmVmNzljMzU4OGU4NWQ3ZjQyZTk5ZWI4MGEyZTQ1OWY5NjYyODRjZjAyOWMyZDZmYzFiNjQ1YWJjYjg2MCIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iZjU3OTY5YTU5NjEyYzVhY2EwMDdiMzQwYzQ5ZDNhMiIKLQotaW5oZXJpdCBweXRob25uYXRpdmUKLQotREVQRU5EUyA9ICJnbGliLTIuMCBzeXN0ZW0tY29uZmlnLWtleWJvYXJkLW5hdGl2ZSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAke1BZVEhPTn0gLXYgZ2V0X2xheW91dHMucHkgPiBrZXlib2FyZHMuaAotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLSAgICBpbnN0YWxsIC1kICR7RH0vZXRjL1gxMS94b3JnLmNvbmYuZAotICAgIHRvdWNoICR7RH0vZXRjL1gxMS94b3JnLmNvbmYuZC8wMC1zeXN0ZW0tc2V0dXAta2V5Ym9hcmQuY29uZgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc2VydmljZSIKLQotUE5CTEFDS0xJU1Rbc3lzdGVtLXNldHVwLWtleWJvYXJkXSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBzeXN0ZW0tY29uZmlnLWtleWJvYXJkLW5hdGl2ZSAtIHRoZSByZWNpcGUgd2lsbCBiZSByZW1vdmVkIG9uIDIwMTctMDktMDEgdW5sZXNzIHRoZSBpc3N1ZSBpcyBmaXhlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi5iYgppbmRleCAzNTg0MGZkLi5iYWQ5NDgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLmJiCkBAIC02LDE4ICs2LDIxIEBACiBIT01FUEFHRSA9ICJodHRwOi8vdGhyZWFkaW5nYnVpbGRpbmdibG9ja3Mub3JnLyIKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTg2ZDNmM2E5NWMzMjRjOTQ3OWJkODk4Njk2OGY0MzI3IgotUFJEQVRFID0gIjIwMTcwMTE4IgotUFYgPSAiJHtQUkRBVEV9IgotU1JDX1VSSSA9ICJodHRwczovL3d3dy50aHJlYWRpbmdidWlsZGluZ2Jsb2Nrcy5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9zb2Z0d2FyZV9yZWxlYXNlcy9zb3VyY2UvdGJiMjAxN18ke1BSREFURX1vc3Nfc3JjLnRneiBcCitQUkRBVEUgPSAiMjAxNzA0MTIiCitCUkFOQ0ggPSAidGJiXzIwMTciCitTUkNSRVYgPSAiYTJjZmRmZTk0NjkzM2NiZTM4YmZmZTFkODA4NmFlMzZmMDY2OTFhMyIKK1BWID0gIiR7UFJEQVRFfSske1NSQ1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy90YmI7YnJhbmNoPSR7QlJBTkNIfSBcCiAgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RiYi5wYyIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNmJhYTZmYmNjOGYwM2VlNDVjMDY0MWI5MWQ5NTg4YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OGJiNTI2Mjg3ZmE4YjRlN2QxZTFiMmJhOWU1ZmI5YzNlMzcyYjQ5Nzc3MmMwNmVmOWNjZDdmOTNmMzQ0ZTc0IgorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWxsaW5mby1pcy1nbGliYy1zcGVjaWZpYy1BUEktbWFyay1pdC1zby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90YmIucGMgXAorIgogCi1TID0gIiR7V09SS0RJUn0vdGJiMjAxN18ke1BSREFURX1vc3MvIgorUyA9ICIke1dPUktESVJ9L2dpdCIKIAogQ09NUElMRVIgPz0gImdjYyIKIENPTVBJTEVSX3Rvb2xjaGFpbi1jbGFuZyA9ICJjbGFuZyIKKwogZG9fY29tcGlsZSgpIHsKICAgICBvZV9ydW5tYWtlIGNvbXBpbGVyPSR7Q09NUElMRVJ9IGFyY2g9JHtIT1NUX0FSQ0h9IHJ1bnRpbWU9Y2M0CiB9CkBAIC0zOCwzICs0MSw0IEBACiAjIHwgbWFrZVsxXTogKioqIFtjb25jdXJyZW50X3F1ZXVlLm9dIEVycm9yIDEKIEFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgogU0VDVVJJVFlfQ0ZMQUdTX2FwcGVuZCA9ICIgLWZQSUMiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi8wMDAxLW1hbGxpbmZvLWlzLWdsaWJjLXNwZWNpZmljLUFQSS1tYXJrLWl0LXNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLzAwMDEtbWFsbGluZm8taXMtZ2xpYmMtc3BlY2lmaWMtQVBJLW1hcmstaXQtc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U2Njk0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi8wMDAxLW1hbGxpbmZvLWlzLWdsaWJjLXNwZWNpZmljLUFQSS1tYXJrLWl0LXNvLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNmIyYjEzNmNhYTY4OTEyZDc3ZmZlMjYxNDNjZDNkYTc2OGI5ZWY4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMgSnVuIDIwMTcgMDg6Mzk6MzcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFsbGluZm8oKSBpcyBnbGliYyBzcGVjaWZpYyBBUEkgbWFyayBpdCBzbworCitIZWxwcyBjb21waWxpbmcgd2l0aCBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3RiYm1hbGxvYy9wcm94eS5jcHAgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RiYm1hbGxvYy9wcm94eS5jcHAgYi9zcmMvdGJibWFsbG9jL3Byb3h5LmNwcAoraW5kZXggNWVmMjc5ZC4uMDZjNDg3MiAxMDA2NDQKKy0tLSBhL3NyYy90YmJtYWxsb2MvcHJveHkuY3BwCisrKysgYi9zcmMvdGJibWFsbG9jL3Byb3h5LmNwcAorQEAgLTE4NSw2ICsxODUsNyBAQCBpbnQgbWFsbG9wdChpbnQgLypwYXJhbSovLCBpbnQgLyp2YWx1ZSovKSBfX1RIUk9XCisgICAgIHJldHVybiAxOworIH0KKyAKKysjaWZkZWYgX19HTElCQ19fCisgc3RydWN0IG1hbGxpbmZvIG1hbGxpbmZvKCkgX19USFJPVworIHsKKyAgICAgc3RydWN0IG1hbGxpbmZvIG07CitAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBtYWxsaW5mbyBtYWxsaW5mbygpIF9fVEhST1cKKyAKKyAgICAgcmV0dXJuIG07CisgfQorKyNlbmRpZgorIAorICNpZiBfX0FORFJPSURfXworIC8vIEFuZHJvaWQgZG9lc24ndCBoYXZlIG1hbGxvY191c2FibGVfc2l6ZSwgcHJvdmlkZSBpdCB0byBiZSBjb21wYXRpYmxlCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuMS43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc4NGZkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJ1ZGlza3MgcHJvdmlkZXMgZGJ1cyBpbnRlcmZhY2VzIGZvciBkaXNrcyBhbmQgc3RvcmFnZSBkZXZpY2VzIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQ3OWY2ZGJiZmZkYmM4ZTg2YjA4NmE4ZjBjMGVmNDMiCi0KLURFUEVORFMgPSAiYWNsIGxpYmF0YXNtYXJ0IHBvbGtpdCBsaWJndWRldiBkYnVzLWdsaWIgZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgotCi1SREVQRU5EU18ke1BOfSA9ICJhY2wiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3VkaXNrcy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvdWRpc2tzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbm9uLWdudS1saWJjLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4YmNjZDM2NTczYjc1Mjg2NTM4YmQ1YmQyYzQyNGY0NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYmFlMmJiM2JkYzY5MWNhMTNjMWU0YzI0NDYzMGI4Yzg4MWM0ZjNiMzVjMjA3Mjk5ZjFiMzliN2JlYzgzNzg1IgotCi1DVkVfUFJPRFVDVCA9ICJ1ZGlza3MiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUyA9ICIke1dPUktESVJ9L3VkaXNrcy0ke1BWfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1tYW4gLS1kaXNhYmxlLWd0ay1kb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcG9sa2l0LTEvZXh0ZW5zaW9ucy8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRpc2tzMi8qIFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbiIKLUZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtleGVjX3ByZWZpeH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkaXNrczIvLmRlYnVnIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuMS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjEuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2VmYzUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjEuOC5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gInVkaXNrcyBwcm92aWRlcyBkYnVzIGludGVyZmFjZXMgZm9yIGRpc2tzIGFuZCBzdG9yYWdlIGRldmljZXMiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDc5ZjZkYmJmZmRiYzhlODZiMDg2YThmMGMwZWY0MyIKKworREVQRU5EUyA9ICJhY2wgbGliYXRhc21hcnQgcG9sa2l0IGxpYmd1ZGV2IGRidXMtZ2xpYiBnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59ID0gImFjbCIKKworU1JDX1VSSSA9ICJodHRwOi8vdWRpc2tzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy91ZGlza3MtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9ub24tZ251LWxpYmMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjUwMWQxMWMyNDNiZDhjNmMwMDY1MDQ3NGNkMmFmYWFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhNDE2OTE0ODEyYTc3ZTVmNGQ4MmI4MWRlYjhjMjU3OTlmZDMyMjhkMjdkNTJmN2JmODlhNTAxYjE4NTdkZGEiCisKK0NWRV9QUk9EVUNUID0gInVkaXNrcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTID0gIiR7V09SS0RJUn0vdWRpc2tzLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW1hbiAtLWRpc2FibGUtZ3RrLWRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9wb2xraXQtMS9leHRlbnNpb25zLyouc28gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xLyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2LyogXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGlza3MyLyogXAorIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tbGlicyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uIgorRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2V4ZWNfcHJlZml4fSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRpc2tzMi8uZGVidWciCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrc18xLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrc18xLjAuNS5iYgppbmRleCBmZmUyYzI2Li5lMzMyNjYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3NfMS4wLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzXzEuMC41LmJiCkBAIC0yLDcgKzIsNyBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2Q4M2FlYmU3ZTRiNjIzNDZhZmRlODBlMGU5NDI3MyIKIAotREVQRU5EUyA9ICJsaWJhdGFzbWFydCBzZzMtdXRpbHMgcG9sa2l0IGxpYmd1ZGV2IGRidXMtZ2xpYiBnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUgbHZtMiBcCitERVBFTkRTID0gImxpYmF0YXNtYXJ0IHNnMy11dGlscyBwb2xraXQgbGliZ3VkZXYgZGJ1cy1nbGliIGdsaWItMi4wIGludGx0b29sLW5hdGl2ZSBcCiAgICAgZGJ1cy1nbGliLW5hdGl2ZSBcCiAiCiAjIG9wdGlvbmFsIGRlcGVuZGVuY2llczogZGV2aWNlLW1hcHBlciBwYXJ0ZWQKQEAgLTI0LDcgKzI0LDggQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHN5c3RlbWQgZ3RrLWRvYwogCi1QQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmRldm1hcHBlciIKK1BBQ0tBR0VDT05GSUdbbGliZGV2bWFwcGVyXSA9ICItLWVuYWJsZS1kZXZtYXBwZXIsLS1kaXNhYmxlLWRldm1hcHBlcixsaWJkZXZtYXBwZXIiCiBQQUNLQUdFQ09ORklHW3BhcnRlZF0gPSAiLS1lbmFibGUtcGFydGVkLC0tZGlzYWJsZS1wYXJ0ZWQscGFydGVkIgogCiBFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW1hbi1wYWdlcyAtLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltXzEuOC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltXzEuOC42LmJiCmluZGV4IDkwOTc1NmEuLjI3MTcxOGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbV8xLjguNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjYuYmIKQEAgLTE0LDE0ICsxNCwxNSBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiMWVhODAzYzczZjM0Nzg5MTcxNjZmMDRmNjdjY2U2ZTQ1YWQ3ZWE1YWI2ZGY5OWI5NDhjMTdlYjFjYjIzNWYiCiAKIERFUEVORFMgPSAiYW50aHkgZm9udGNvbmZpZyBsaWJ4ZnQgbGlieHQgZ2xpYi0yLjAgbmN1cnNlcyBpbnRsdG9vbCIKLURFUEVORFNfY2xhc3MtdGFyZ2V0ICs9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKyBndGsrMyB1aW0tbmF0aXZlIHRha2FvLWZvbnRzIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBpbnRsdG9vbC1uYXRpdmUgZ3RrKyBndGsrMyB1aW0tbmF0aXZlIHRha2FvLWZvbnRzIgogCiBSREVQRU5EU191aW0gPSAibGlidWltMCBsaWJlZGl0IgotUkRFUEVORFNfdWltLWFudGh5ID0gInRha2FvLWZvbnRzIGFudGh5IGxpYmFudGh5MCIKK1JERVBFTkRTX3VpbS1hbnRoeSA9ICJ0YWthby1mb250cyBhbnRoeSBsaWJhbnRoeTAgZ2xpYmMtdXRpbHMgZ2xpYmMtZ2NvbnYtZXVjLWpwIgogCiBMRUFEX1NPTkFNRSA9ICJsaWJ1aW0uc28uMSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHFlbXUgZ3RrLWltbW9kdWxlcy1jYWNoZQorR1RLSU1NT0RVTEVTX1BBQ0tBR0VTID0gInVpbS1ndGsyLjAgdWltLWd0azMiCiAKIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWVtYWNzIFwKICAgICAtLXdpdGhvdXQtc2NpbSBcCkBAIC0xMDMsNTIgKzEwNCwzNiBAQAogICAgICR7ZGF0YWRpcn0vdWltL3Nrayouc2NtIFwKICIKIAorUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKIHBrZ19wb3N0aW5zdF91aW0tYW50aHkoKSB7Ci0gICAgaWYgWyAtZiAvdXNyL2Jpbi91aW0tbW9kdWxlLW1hbmFnZXIgXTsgdGhlbgotICAgICAgICAvdXNyL2Jpbi91aW0tbW9kdWxlLW1hbmFnZXIgLS1yZWdpc3RlciBhbnRoeSAtLXBhdGggL2V0Yy91aW0KLSAgICBmaQotfQotCi1wa2dfcG9zdHJtX3VpbS1hbnRoeSgpIHsKLSAgICBpZiBbIC1mIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciBdOyB0aGVuCi0gICAgICAgIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciAtLXBhdGggL2V0Yy91aW0gLS11bnJlZ2lzdGVyIGFudGh5CisgICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L3VpbS1tb2R1bGUtbWFuYWdlcicpfSAtLXJlZ2lzdGVyIGFudGh5IC0tcGF0aCAkRCR7ZGF0YWRpcn0vdWltCisgICAgZWxzZQorCQl1aW0tbW9kdWxlLW1hbmFnZXIgLS1yZWdpc3RlciBhbnRoeSAtLXBhdGggJHtkYXRhZGlyfS91aW0KICAgICBmaQogfQogCiBwa2dfcHJlcm1fdWltLWFudGh5KCkgewotICAgIGlmIFsgLWYgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIF07IHRoZW4KLSAgICAgICAgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIC0tcmVnaXN0ZXIgYW50aHkgLS1wYXRoIC9ldGMvdWltCisgICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L3VpbS1tb2R1bGUtbWFuYWdlcicpfSAtLXBhdGggJEQke2RhdGFkaXJ9L3VpbSAtLXVucmVnaXN0ZXIgYW50aHkKKyAgICBlbHNlCisJCXVpbS1tb2R1bGUtbWFuYWdlciAtLXBhdGggJHtkYXRhZGlyfS91aW0gLS11bnJlZ2lzdGVyIGFudGh5CiAgICAgZmkKIH0KIAotcGtnX3Bvc3RpbnN0X3VpbS1ndGsyLjAoKSB7Ci0gICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgPiAvZXRjL2d0ay0yLjAvZ3RrLmltbW9kdWxlcwotfQotCiBwa2dfcG9zdGluc3RfdWltLXNraygpIHsKLSAgICBpZiBbIC1mIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciBdOyB0aGVuCi0gICAgICAgIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciAtLXJlZ2lzdGVyIHNrayAtLXBhdGggL2V0Yy91aW0KKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWltLW1vZHVsZS1tYW5hZ2VyJyl9IC0tcmVnaXN0ZXIgc2trIC0tcGF0aCAkRCR7ZGF0YWRpcn0vdWltCisgICAgZWxzZQorCQl1aW0tbW9kdWxlLW1hbmFnZXIgLS1yZWdpc3RlciBza2sgLS1wYXRoICR7ZGF0YWRpcn0vdWltCiAgICAgZmkKIH0KIAogcGtnX3Bvc3RybV91aW0tc2trKCkgewotICAgIGlmIFsgLWYgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIF07IHRoZW4KLSAgICAgICAgL3Vzci9iaW4vdWltLW1vZHVsZS1tYW5hZ2VyIC0tcGF0aCAvZXRjL3VpbSAtLXVucmVnaXN0ZXIgc2trCi0gICAgZmkKLX0KLQotcGtnX3Bvc3RpbnN0X3VpbS1jb21tb24oKSB7Ci0gICAgaWYgWyAtZiAvdXNyL2Jpbi91aW0tbW9kdWxlLW1hbmFnZXIgXTsgdGhlbgotICAgICAgICAvdXNyL2Jpbi91aW0tbW9kdWxlLW1hbmFnZXIgLS1wYXRoIC9ldGMvdWltIC0tcmVnaXN0ZXIgXAotICAgICAgICAgICAgdHV0Y29kZSB0Y29kZSBoYW5ndWwgdmlxciBcCi0gICAgICAgICAgICBpcGEteC1zYW1wYSBsYXRpbiBieWVvcnUKLSAgICBmaQotfQotCi1wa2dfcHJlcm1fdWltLWNvbW1vbigpIHsKLSAgICBpZiBbIC1mIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciBdOyB0aGVuCi0gICAgICAgIC91c3IvYmluL3VpbS1tb2R1bGUtbWFuYWdlciAtLXBhdGggL2V0Yy91aW0gLS1yZWdpc3RlciBcCi0gICAgICAgIHR1dGNvZGUgdGNvZGUgaGFuZ3VsIHZpcXIgaXBhLXgtc2FtcGEgbGF0aW4gYnllb3J1CisgICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L3VpbS1tb2R1bGUtbWFuYWdlcicpfSAtLXBhdGggJEQke2RhdGFkaXJ9L3VpbSAtLXVucmVnaXN0ZXIgc2trCisgICAgZWxzZQorCQl1aW0tbW9kdWxlLW1hbmFnZXIgLS1wYXRoICR7ZGF0YWRpcn0vdWltIC0tdW5yZWdpc3RlciBza2sKICAgICBmaQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cG93ZXIvdXBvd2VyXzAuOTkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1MWUxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVVBvd2VyIGlzIGFuIGFic3RyYWN0aW9uIGZvciBlbnVtZXJhdGluZyBwb3dlciBkZXZpY2VzLCBsaXN0ZW5pbmcgdG8gZGV2aWNlIGV2ZW50cyBhbmQgcXVlcnlpbmcgaGlzdG9yeSBhbmQgc3RhdGlzdGljcy4gIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZGU4ZmJmMWQ5N2ExNDBkMWQ5M2I5ZjE0ZGNmYmYwOCIKLQotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGlidXNiMSBsaWJndWRldiBnbGliLTIuMCBkYnVzLWdsaWIgcG9sa2l0IgotCi1TUkNfVVJJID0gImh0dHA6Ly91cG93ZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzg4MDBlMWFjN2Y5MmIyNGFhYmRmNDMzZTM4Zjc1ZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWNhMzI1YTZjY2VmNTA1NTI5YjI2OGViYmJkOWJlY2QwY2U2NWE2NWY2YWM3ZWUzMWUyZTViMTc2NDgwMzdiMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHN5c3RlbWQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lkZXZpY2VdID0gIi0td2l0aC1pZGV2aWNlLC0td2l0aG91dC1pZGV2aWNlLGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kdXRpbGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0gLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXN5c3RlbWR1dGlsZGlyIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1iYWNrZW5kPWxpbnV4IgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidXBvd2VyLnNlcnZpY2UiCi0jIGRvbid0IHN0YXJ0IG9uIGJvb3QgYnkgZGVmYXVsdCAtIGRidXMgZG9lcyB0aGF0IG9uIGRlbWFuZAotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgczotbm9uZXQ6XDpnICR7U30vZG9jL21hbi9NYWtlZmlsZS5hbQotICAgIHNlZCAtaSAtZSAnczogZG9jIDogOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gImRidXMiCi1SUkVDT01NRU5EU18ke1BOfSArPSAicG0tdXRpbHMiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xLyBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vdWRldi8qIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2Jhc2VfbGliZGlyfS91ZGV2Ly5kZWJ1ZyIKLQotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTQ1MzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS41LmJiCkBAIC0wLDAgKzEsMzkgQEAKK0RFU0NSSVBUSU9OID0gIlVQb3dlciBpcyBhbiBhYnN0cmFjdGlvbiBmb3IgZW51bWVyYXRpbmcgcG93ZXIgZGV2aWNlcywgbGlzdGVuaW5nIHRvIGRldmljZSBldmVudHMgYW5kIHF1ZXJ5aW5nIGhpc3RvcnkgYW5kIHN0YXRpc3RpY3MuICIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGRlOGZiZjFkOTdhMTQwZDFkOTNiOWYxNGRjZmJmMDgiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYnVzYjEgbGliZ3VkZXYgZ2xpYi0yLjAgZGJ1cy1nbGliIHBvbGtpdCIKKworU1JDX1VSSSA9ICJodHRwOi8vdXBvd2VyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImVjNTdiNGI3YmYwYWY1NjhmOWE3YTU2MDNjOTIxZDk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4NjA1NjY0ZDAyN2M3ODhmNmFiNjNjNTA5NTBiZTZlODZjNmJhNWQwMzBjNGNmMzVhNjY2NDMzN2Q4N2YzYjIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbiBzeXN0ZW1kCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorUEFDS0FHRUNPTkZJR1tpZGV2aWNlXSA9ICItLXdpdGgtaWRldmljZSwtLXdpdGhvdXQtaWRldmljZSxsaWJpbW9iaWxlZGV2aWNlIGxpYnBsaXN0IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHV0aWxkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9IC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1zeXN0ZW1kdXRpbGRpciAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtYmFja2VuZD1saW51eCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInVwb3dlci5zZXJ2aWNlIgorIyBkb24ndCBzdGFydCBvbiBib290IGJ5IGRlZmF1bHQgLSBkYnVzIGRvZXMgdGhhdCBvbiBkZW1hbmQKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lIHM6LW5vbmV0Olw6ZyAke1N9L2RvYy9tYW4vTWFrZWZpbGUuYW0KKyAgICBzZWQgLWkgLWUgJ3M6IGRvYyA6IDpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJkYnVzIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gInBtLXV0aWxzIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xLyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS8gXAorICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3VkZXYvKiBcCisiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtiYXNlX2xpYmRpcn0vdWRldi8uZGVidWciCisKKworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZhbGEtdGVybWluYWwvdmFsYS10ZXJtaW5hbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZhbGEtdGVybWluYWwvdmFsYS10ZXJtaW5hbF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMTljYjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92YWxhLXRlcm1pbmFsL3ZhbGEtdGVybWluYWxfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpZ2h0d2VpZ2h0IFRlcm1pbmFsIEVtdWxhdG9yIGJhc2VkIG9uIGxpYnZ0ZSwgd3JpdHRlbiBpbiBWYWxhIgotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb25zIgotREVQRU5EUyA9ICJ2dGU5IGludGx0b29sLW5hdGl2ZSIKLVNSQ1JFViA9ICIwZmVmYTM4MDg3NTgxZjg1ZmEwNjMxYjQwNTAwYjk0MjgzNjljMTQ2IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotUFYgPSAiMS4zK2dpdHIke1NSQ1BWfSIKLVBFID0gIjEiCi1QUiA9ICJyMSIKLQotUE5CTEFDS0xJU1RbdmFsYS10ZXJtaW5hbF0gPz0gIkJST0tFTjogRG9lc24ndCB3b3JrIHdpdGggQiE9UywgdG91Y2g6IGNhbm5vdCB0b3VjaCBgc3JjLy5zdGFtcCc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgLSB0aGUgcmVjaXBlIHdpbGwgYmUgcmVtb3ZlZCBvbiAyMDE3LTA5LTAxIHVubGVzcyB0aGUgaXNzdWUgaXMgZml4ZWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBlcmxuYXRpdmUgdmFsYQotCi1TUkNfVVJJID0gIiR7RlJFRVNNQVJUUEhPTkVfR0lUfS92YWxhLXRlcm1pbmFsLmdpdDticmFuY2g9bWFzdGVyIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUkRFUEVORFNfJHtQTn0gPSAidHRmLWxpYmVyYXRpb24tbW9ubyIKLVJSRVBMQUNFU18ke1BOfSA9ICJvcGVubW9rby10ZXJtaW5hbDIiCi1SUFJPVklERVNfJHtQTn0gPSAib3Blbm1va28tdGVybWluYWwyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNC4zLjM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNC4zLjM2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2JhZTFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzQuMy4zNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLVNVTU1BUlkgPSAiVmlydHVhbEJveCBMaW51eCBHdWVzdCBEcml2ZXJzIgotU0VDVElPTiA9ICJjb3JlIgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vQ09QWUlORzttZDU9ZTE5N2Q1NjQxYmIzNWIyOWQ0NmNhOGM0YmY3ZjI2NjAiCi0KLURFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCi0KLWluaGVyaXQgbW9kdWxlIGtlcm5lbC1tb2R1bGUtc3BsaXQKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjQpIgotCi1WQk9YX05BTUUgPSAiVmlydHVhbEJveC0ke1BWfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQudmlydHVhbGJveC5vcmcvdmlydHVhbGJveC8ke1BWfS8ke1ZCT1hfTkFNRX0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS51dGlscyBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiODYzNTM4N2RlYzZjYmZkNTc2YmE0NTMzNTVkNGRjMGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWYwNzc2ZGY2ZDAzYjI3MDljYjc2YTY5ZjA1NTQ4N2JmMTJiZGIzYjQxNjNlMmE4Mjk1OTg2MDMwMDI4MzA0NiIKLQotUyA9ICIke1dPUktESVJ9L3Zib3hfbW9kdWxlIgotCi1leHBvcnQgQlVJTERfVEFSR0VUX0FSQ0g9IiR7QVJDSH0iCi1leHBvcnQgQlVJTERfVEFSR0VUX0FSQ0hfeDg2LTY0PSJhbWQ2NCIKLWV4cG9ydCBLRVJOX0RJUj0iJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IgotCi1hZGR0YXNrIGV4cG9ydF9zb3VyY2VzIGJlZm9yZSBkb19wYXRjaCBhZnRlciBkb191bnBhY2sKLQotZG9fZXhwb3J0X3NvdXJjZXMoKSB7Ci0gICAgbWtkaXIgLXAgIiR7U30iCi0gICAgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L2V4cG9ydF9tb2R1bGVzICR7VH0vdmJveF9tb2R1bGVzLnRhci5negotICAgIHRhciAtQyAiJHtTfSIgLXh6ZiAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKLQotICAgICMgYWRkIGEgbW91bnQgdXRpbGl0eSB0byB1c2Ugc2hhcmVkIGZvbGRlciBmcm9tIFZCb3ggQWRkaXRpb24gU291cmNlIENvZGUKLSAgICBta2RpciAtcCAiJHtTfS91dGlscyIKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9zaGFyZWRmb2xkZXJzL21vdW50LnZib3hzZi5jICR7U30vdXRpbHMKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9zaGFyZWRmb2xkZXJzL3Zic2Ztb3VudC5jICR7U30vdXRpbHMKLSAgICBpbnN0YWxsICR7U30vLi4vTWFrZWZpbGUudXRpbHMgJHtTfS91dGlscy9NYWtlZmlsZQotCi19Ci0KLSMgY29tcGlsZSBhbmQgaW5zdGFsbCBtb3VudCB1dGlsaXR5Ci1kb19jb21waWxlX2FwcGVuZCgpIHsKLSAgICBvZV9ydW5tYWtlICdMRD0ke0NDfScgJ0xERkxBR1M9JHtMREZMQUdTfScgLUMgJHtTfS91dGlscwotICAgIGlmICEgWyAtZSB2Ym94Z3Vlc3Qua28gLWEgLWUgdmJveHNmLmtvIC1hIC1lIHZib3h2aWRlby5rbyBdIDsgdGhlbgotICAgICAgICBlY2hvICJFUlJPUjogT25lIG9mIHZib3gqLmtvIG1vZHVsZXMgd2Fzbid0IGJ1aWx0IgotICAgICAgICBleGl0IDEKLSAgICBmaQotfQotCi1tb2R1bGVfZG9faW5zdGFsbCgpIHsKLSAgICBNT0RVTEVfRElSPSR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsL21pc2MKLSAgICBpbnN0YWxsIC1kICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveGd1ZXN0LmtvICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveHNmLmtvICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveHZpZGVvLmtvICRNT0RVTEVfRElSCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vdXRpbHMvbW91bnQudmJveHNmICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLX0KLQotUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgotCi1GSUxFU18ke1BOfSA9ICIke2Jhc2Vfc2JpbmRpcn0iCi0KLSMgYXV0b2xvYWQgaWYgaW5zdGFsbGVkCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ2Ym94Z3Vlc3QgdmJveHNmIHZib3h2aWRlbyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvODMzMzMvCi1QTkJMQUNLTElTVFt2Ym94Z3Vlc3Rkcml2ZXJzXSA/PSAiQlJPS0VOOiBub3QgY29tcGF0aWJsZSB3aXRoIGRlZmF1bHQga2VybmVsIHZlcnNpb24gNC44IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4xLjE4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4xLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDg1YjlmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMS4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVNVTU1BUlkgPSAiVmlydHVhbEJveCBMaW51eCBHdWVzdCBEcml2ZXJzIgotU0VDVElPTiA9ICJjb3JlIgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vQ09QWUlORzttZDU9ZTE5N2Q1NjQxYmIzNWIyOWQ0NmNhOGM0YmY3ZjI2NjAiCi0KLURFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCi0KLWluaGVyaXQgbW9kdWxlIGtlcm5lbC1tb2R1bGUtc3BsaXQKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjQpIgotCi1WQk9YX05BTUUgPSAiVmlydHVhbEJveC0ke1BWfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQudmlydHVhbGJveC5vcmcvdmlydHVhbGJveC8ke1BWfS8ke1ZCT1hfTkFNRX0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS51dGlscyBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMWE3ZGI2NGNkNjliYTZkMzk1NzRmYjMzM2UwMzEyNTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2VkMDk1OWJiYmQwMjgyNmI4NmIzZDVkYzgzNDg5MzFkZGZhYjI2N2MzMWY4ZWQzNmVlNTNjMTJmNTUyMmNkOSIKLQotUyA9ICIke1dPUktESVJ9L3Zib3hfbW9kdWxlIgotCi1leHBvcnQgQlVJTERfVEFSR0VUX0FSQ0g9IiR7QVJDSH0iCi1leHBvcnQgQlVJTERfVEFSR0VUX0FSQ0hfeDg2LTY0PSJhbWQ2NCIKLWV4cG9ydCBLRVJOX0RJUj0iJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IgotCi1hZGR0YXNrIGV4cG9ydF9zb3VyY2VzIGJlZm9yZSBkb19wYXRjaCBhZnRlciBkb191bnBhY2sKLQotZG9fZXhwb3J0X3NvdXJjZXMoKSB7Ci0gICAgbWtkaXIgLXAgIiR7U30iCi0gICAgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L2V4cG9ydF9tb2R1bGVzICR7VH0vdmJveF9tb2R1bGVzLnRhci5negotICAgIHRhciAtQyAiJHtTfSIgLXh6ZiAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKLQotICAgICMgYWRkIGEgbW91bnQgdXRpbGl0eSB0byB1c2Ugc2hhcmVkIGZvbGRlciBmcm9tIFZCb3ggQWRkaXRpb24gU291cmNlIENvZGUKLSAgICBta2RpciAtcCAiJHtTfS91dGlscyIKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9zaGFyZWRmb2xkZXJzL21vdW50LnZib3hzZi5jICR7U30vdXRpbHMKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9zaGFyZWRmb2xkZXJzL3Zic2Ztb3VudC5jICR7U30vdXRpbHMKLSAgICBpbnN0YWxsICR7U30vLi4vTWFrZWZpbGUudXRpbHMgJHtTfS91dGlscy9NYWtlZmlsZQotCi19Ci0KLSMgY29tcGlsZSBhbmQgaW5zdGFsbCBtb3VudCB1dGlsaXR5Ci1kb19jb21waWxlX2FwcGVuZCgpIHsKLSAgICBvZV9ydW5tYWtlICdMRD0ke0NDfScgJ0xERkxBR1M9JHtMREZMQUdTfScgLUMgJHtTfS91dGlscwotICAgIGlmICEgWyAtZSB2Ym94Z3Vlc3Qua28gLWEgLWUgdmJveHNmLmtvIC1hIC1lIHZib3h2aWRlby5rbyBdIDsgdGhlbgotICAgICAgICBlY2hvICJFUlJPUjogT25lIG9mIHZib3gqLmtvIG1vZHVsZXMgd2Fzbid0IGJ1aWx0IgotICAgICAgICBleGl0IDEKLSAgICBmaQotfQotCi1tb2R1bGVfZG9faW5zdGFsbCgpIHsKLSAgICBNT0RVTEVfRElSPSR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsL21pc2MKLSAgICBpbnN0YWxsIC1kICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveGd1ZXN0LmtvICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveHNmLmtvICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveHZpZGVvLmtvICRNT0RVTEVfRElSCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vdXRpbHMvbW91bnQudmJveHNmICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLX0KLQotUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgotCi1GSUxFU18ke1BOfSA9ICIke2Jhc2Vfc2JpbmRpcn0iCi0KLSMgYXV0b2xvYWQgaWYgaW5zdGFsbGVkCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ2Ym94Z3Vlc3QgdmJveHNmIHZib3h2aWRlbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMS4yNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMS4yNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGVmZTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4xLjI2LmJiCkBAIC0wLDAgKzEsNjkgQEAKK1NVTU1BUlkgPSAiVmlydHVhbEJveCBMaW51eCBHdWVzdCBEcml2ZXJzIgorU0VDVElPTiA9ICJjb3JlIgorTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vQ09QWUlORzttZDU9ZTE5N2Q1NjQxYmIzNWIyOWQ0NmNhOGM0YmY3ZjI2NjAiCisKK0RFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCisKK2luaGVyaXQgbW9kdWxlIGtlcm5lbC1tb2R1bGUtc3BsaXQKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjQpIgorCitWQk9YX05BTUUgPSAiVmlydHVhbEJveC0ke1BWfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQudmlydHVhbGJveC5vcmcvdmlydHVhbGJveC8ke1BWfS8ke1ZCT1hfTkFNRX0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS51dGlscyBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZDNhZWM4MTkwYzY0OWQ3ZTBkOTJiYTM3NDc3OWRmZTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjU3MTUwMzVlNjgxYTExZWYxNDc1ZjgzZjk1MDNkMzRhMDBmMDI3NmI4OWM1NzJlZWJlYzM2M2RkYTgwYzhhOSIKKworUyA9ICIke1dPUktESVJ9L3Zib3hfbW9kdWxlIgorCitleHBvcnQgQlVJTERfVEFSR0VUX0FSQ0g9IiR7QVJDSH0iCitleHBvcnQgQlVJTERfVEFSR0VUX0FSQ0hfeDg2LTY0PSJhbWQ2NCIKK2V4cG9ydCBLRVJOX0RJUj0iJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IgorCithZGR0YXNrIGV4cG9ydF9zb3VyY2VzIGJlZm9yZSBkb19wYXRjaCBhZnRlciBkb191bnBhY2sKKworZG9fZXhwb3J0X3NvdXJjZXMoKSB7CisgICAgbWtkaXIgLXAgIiR7U30iCisgICAgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L2V4cG9ydF9tb2R1bGVzICR7VH0vdmJveF9tb2R1bGVzLnRhci5negorICAgIHRhciAtQyAiJHtTfSIgLXh6ZiAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKKworICAgICMgYWRkIGEgbW91bnQgdXRpbGl0eSB0byB1c2Ugc2hhcmVkIGZvbGRlciBmcm9tIFZCb3ggQWRkaXRpb24gU291cmNlIENvZGUKKyAgICBta2RpciAtcCAiJHtTfS91dGlscyIKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9zaGFyZWRmb2xkZXJzL21vdW50LnZib3hzZi5jICR7U30vdXRpbHMKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9zaGFyZWRmb2xkZXJzL3Zic2Ztb3VudC5jICR7U30vdXRpbHMKKyAgICBpbnN0YWxsICR7U30vLi4vTWFrZWZpbGUudXRpbHMgJHtTfS91dGlscy9NYWtlZmlsZQorCit9CisKKyMgY29tcGlsZSBhbmQgaW5zdGFsbCBtb3VudCB1dGlsaXR5Citkb19jb21waWxlX2FwcGVuZCgpIHsKKyAgICBvZV9ydW5tYWtlICdMRD0ke0NDfScgJ0xERkxBR1M9JHtMREZMQUdTfScgLUMgJHtTfS91dGlscworICAgIGlmICEgWyAtZSB2Ym94Z3Vlc3Qua28gLWEgLWUgdmJveHNmLmtvIC1hIC1lIHZib3h2aWRlby5rbyBdIDsgdGhlbgorICAgICAgICBlY2hvICJFUlJPUjogT25lIG9mIHZib3gqLmtvIG1vZHVsZXMgd2Fzbid0IGJ1aWx0IgorICAgICAgICBleGl0IDEKKyAgICBmaQorfQorCittb2R1bGVfZG9faW5zdGFsbCgpIHsKKyAgICBNT0RVTEVfRElSPSR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsL21pc2MKKyAgICBpbnN0YWxsIC1kICRNT0RVTEVfRElSCisgICAgaW5zdGFsbCAtbSA2NDQgdmJveGd1ZXN0LmtvICRNT0RVTEVfRElSCisgICAgaW5zdGFsbCAtbSA2NDQgdmJveHNmLmtvICRNT0RVTEVfRElSCisgICAgaW5zdGFsbCAtbSA2NDQgdmJveHZpZGVvLmtvICRNT0RVTEVfRElSCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vdXRpbHMvbW91bnQudmJveHNmICR7RH0ke2Jhc2Vfc2JpbmRpcn0KK30KKworUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgorCitGSUxFU18ke1BOfSA9ICIke2Jhc2Vfc2JpbmRpcn0iCisKKyMgYXV0b2xvYWQgaWYgaW5zdGFsbGVkCitLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ2Ym94Z3Vlc3QgdmJveHNmIHZib3h2aWRlbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMC4wNDI3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4wLjA5ODMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMC4wNDI3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjAuMDk4My5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMC4wNDI3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMC4wNDI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjg2ZmNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjAuMDQyNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1TVU1NQVJZID0gIlZpIElNcHJvdmVkIC0gZW5oYW5jZWQgdmkgZWRpdG9yIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotREVQRU5EUyA9ICJuY3Vyc2VzIGdldHRleHQtbmF0aXZlIgotIyB2aW1kaWZmIGRvZXNuJ3QgbGlrZSBidXN5Ym94IGRpZmYKLVJTVUdHRVNUU18ke1BOfSA9ICJkaWZmdXRpbHMiCi1MSUNFTlNFID0gInZpbSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL3J1bnRpbWUvZG9jL3VnYW5kYS50eHQ7bWQ1PWVlYTMyYWMxNDI0YmJhMTQwOTY3MzZhNDk0YWU5MDQ1IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdmltL3ZpbS5naXQgXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9hY2xfaGVhZGVyX2NoZWNrLnBhdGNoO3BhdGNoZGlyPS4uIFwKLSAgICAgICAgICAgZmlsZTovL3ZpbS1hZGQta25vYi13aGV0aGVyLWVsZi5oLWFyZS1jaGVja2VkLnBhdGNoO3BhdGNoZGlyPS4uIFwKLSIKLVNSQ1JFViA9ICJhZDQxODdlNmZjOWM4ZTEwODNhMTcyODUyZDk1OGE3MGE2ODlhNzVjIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L3NyYyIKLQotVklNRElSID0gInZpbSR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19JHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi0jIHZpbSBjb25maWd1cmUuaW4gY29udGFpbnMgZnVuY3Rpb25zIHdoaWNoIGdvdCAnZHJvcHBlZCcgYnkgYXV0b3Rvb2xzLmJiY2xhc3MKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgcm0gLWYgYXV0by8qCi0gICAgdG91Y2ggYXV0by9jb25maWcubWsKLSAgICBhY2xvY2FsCi0gICAgYXV0b2NvbmYKLSAgICBvZV9ydW5jb25mCi0gICAgdG91Y2ggYXV0by9jb25maWd1cmUKLSAgICB0b3VjaCBhdXRvL2NvbmZpZy5tayBhdXRvL2NvbmZpZy5oCi19Ci0KLSNBdmFpbGFibGUgUEFDS0FHRUNPTkZJRyBvcHRpb25zIGFyZSBndGtndWksIGFjbCwgeDExLCB0aW55Ci1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbZ3RrZ3VpXSA9ICItLWVuYWJsZS1ndGsyLXRlc3QgLS1lbmFibGUtZ3VpPWd0azIsLS1lbmFibGUtZ3VpPW5vLGd0ayssIgotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgseHQsIgotUEFDS0FHRUNPTkZJR1t0aW55XSA9ICItLXdpdGgtZmVhdHVyZXM9dGlueSwtLXdpdGgtZmVhdHVyZXM9YmlnLCwiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCwiCi1QQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItLWVuYWJsZS1lbGYtY2hlY2ssLGVsZnV0aWxzLCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLWdwbSBcCi0gICAgLS1kaXNhYmxlLWd0a3Rlc3QgXAotICAgIC0tZGlzYWJsZS14aW0gXAotICAgIC0tZGlzYWJsZS1uZXRiZWFucyBcCi0gICAgLS13aXRoLXRsaWI9bmN1cnNlcyBcCi0gICAgYWNfY3Zfc21hbGxfd2NoYXJfdD1ubyBcCi0gICAgdmltX2N2X2dldGN3ZF9icm9rZW49bm8gXAotICAgIHZpbV9jdl9tZW1tb3ZlX2hhbmRsZXNfb3ZlcmxhcD15ZXMgXAotICAgIHZpbV9jdl9zdGF0X2lnbm9yZXNfc2xhc2g9bm8gXAotICAgIHZpbV9jdl90ZXJtaW5mbz15ZXMgXAotICAgIHZpbV9jdl90Z2VudD1ub24temVybyBcCi0gICAgdmltX2N2X3RvdXBwZXJfYnJva2VuPW5vIFwKLSAgICB2aW1fY3ZfdHR5X2dyb3VwPXdvcmxkIFwKLSAgICBTVFJJUD0vYmluL3RydWUgXAotIgotCi1kb19pbnN0YWxsKCkgewotICAgIGF1dG90b29sc19kb19pbnN0YWxsCi0KLSAgICAjIFdvcmsgYXJvdW5kIGZpbGUtcmRlcHMgcGlja2luZyB1cCBjc2gsIGF3aywgcGVybCBvciBweXRob24gYXMgYSBkZXAKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzL3ZpbTEzMgotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvbXZlLmF3awotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvKi5wbAotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvKi5weQotCi0gICAgIyBJbnN0YWxsIGV4YW1wbGUgdmltcmMgZnJvbSBydW50aW1lIGZpbGVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0IC4uL3J1bnRpbWUvdmltcmNfZXhhbXBsZS52aW0gJHtEfS8ke2RhdGFkaXJ9LyR7QlBOfS92aW1yYwotCi0gICAgIyB3ZSB1c2UgLS13aXRoLWZlYXR1cmVzPWJpZyBhcyBkZWZhdWx0Ci0gICAgbXYgJHtEfSR7YmluZGlyfS8ke0JQTn0gJHtEfSR7YmluZGlyfS8ke0JQTn0uJHtCUE59Ci19Ci0KLVBBUkFMTEVMX01BS0VJTlNUID0gIiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNvbW1vbiAke1BOfS1zeW50YXggJHtQTn0taGVscCAke1BOfS10dXRvciAke1BOfS12aW1yYyAke1BOfS10b29scyIKLUZJTEVTXyR7UE59LXN5bnRheCA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vc3ludGF4IgotRklMRVNfJHtQTn0taGVscCA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vZG9jIgotRklMRVNfJHtQTn0tdHV0b3IgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3R1dG9yICR7YmluZGlyfS8ke0JQTn10dXRvciIKLUZJTEVTXyR7UE59LXZpbXJjID0gIiR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjIgotRklMRVNfJHtQTn0tZGF0YSA9ICIke2RhdGFkaXJ9LyR7QlBOfSIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scyIKLUZJTEVTXyR7UE59LWNvbW1vbiA9ICIgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS8qLnZpbSBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2F1dG9sb2FkIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vY29sb3JzIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vY29tcGlsZXIgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9mdHBsdWdpbiBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2luZGVudCBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2tleW1hcCBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2xhbmcgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9tYWNyb3MgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9wbHVnaW4gXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9wcmludCBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3NwZWxsIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSIKLQotUkRFUEVORFNfJHtCUE59ID0gIm5jdXJzZXMtdGVybWluZm8tYmFzZSIKLSMgUmVjb21tZW5kIHRoYXQgcnVudGltZSBkYXRhIGlzIGluc3RhbGxlZCBhbG9uZyB3aXRoIHZpbQotUlJFQ09NTUVORFNfJHtCUE59ID0gIiR7UE59LXN5bnRheCAke1BOfS1oZWxwICR7UE59LXR1dG9yICR7UE59LXZpbXJjICR7UE59LWNvbW1vbiIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAidmkgdmltIgotQUxURVJOQVRJVkVfVEFSR0VUID0gIiR7YmluZGlyfS8ke0JQTn0uJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3ZpXSA9ICIke2Jhc2VfYmluZGlyfS92aSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt2aW1dID0gIiR7YmluZGlyfS92aW0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMC4wOTgzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMC4wOTgzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwN2NlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA5ODMuYmIKQEAgLTAsMCArMSwxMTIgQEAKK1NVTU1BUlkgPSAiVmkgSU1wcm92ZWQgLSBlbmhhbmNlZCB2aSBlZGl0b3IiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitERVBFTkRTID0gIm5jdXJzZXMgZ2V0dGV4dC1uYXRpdmUiCisjIHZpbWRpZmYgZG9lc24ndCBsaWtlIGJ1c3lib3ggZGlmZgorUlNVR0dFU1RTXyR7UE59ID0gImRpZmZ1dGlscyIKK0xJQ0VOU0UgPSAidmltIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vcnVudGltZS9kb2MvdWdhbmRhLnR4dDttZDU9ZWVhMzJhYzE0MjRiYmExNDA5NjczNmE0OTRhZTkwNDUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92aW0vdmltLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX2FjbF9oZWFkZXJfY2hlY2sucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vdmltLWFkZC1rbm9iLXdoZXRoZXItZWxmLmgtYXJlLWNoZWNrZWQucGF0Y2g7cGF0Y2hkaXI9Li4gXAorIgorU1JDUkVWID0gIjNmOWExZmYxNDE0MTJlOWU4NWY3ZGZmNDdkMDI5NDZjYjliZTkyMjgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvc3JjIgorCitWSU1ESVIgPSAidmltJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKKyMgdmltIGNvbmZpZ3VyZS5pbiBjb250YWlucyBmdW5jdGlvbnMgd2hpY2ggZ290ICdkcm9wcGVkJyBieSBhdXRvdG9vbHMuYmJjbGFzcworZG9fY29uZmlndXJlICgpIHsKKyAgICBybSAtZiBhdXRvLyoKKyAgICB0b3VjaCBhdXRvL2NvbmZpZy5taworICAgIGFjbG9jYWwKKyAgICBhdXRvY29uZgorICAgIG9lX3J1bmNvbmYKKyAgICB0b3VjaCBhdXRvL2NvbmZpZ3VyZQorICAgIHRvdWNoIGF1dG8vY29uZmlnLm1rIGF1dG8vY29uZmlnLmgKK30KKworI0F2YWlsYWJsZSBQQUNLQUdFQ09ORklHIG9wdGlvbnMgYXJlIGd0a2d1aSwgYWNsLCB4MTEsIHRpbnkKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tndGtndWldID0gIi0tZW5hYmxlLWd0azItdGVzdCAtLWVuYWJsZS1ndWk9Z3RrMiwtLWVuYWJsZS1ndWk9bm8sZ3RrKywiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx4dCwiCitQQUNLQUdFQ09ORklHW3RpbnldID0gIi0td2l0aC1mZWF0dXJlcz10aW55LC0td2l0aC1mZWF0dXJlcz1iaWcsLCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LCIKK1BBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi0tZW5hYmxlLWVsZi1jaGVjaywsZWxmdXRpbHMsIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtZ3BtIFwKKyAgICAtLWRpc2FibGUtZ3RrdGVzdCBcCisgICAgLS1kaXNhYmxlLXhpbSBcCisgICAgLS1kaXNhYmxlLW5ldGJlYW5zIFwKKyAgICAtLXdpdGgtdGxpYj1uY3Vyc2VzIFwKKyAgICBhY19jdl9zbWFsbF93Y2hhcl90PW5vIFwKKyAgICB2aW1fY3ZfZ2V0Y3dkX2Jyb2tlbj1ubyBcCisgICAgdmltX2N2X21lbW1vdmVfaGFuZGxlc19vdmVybGFwPXllcyBcCisgICAgdmltX2N2X3N0YXRfaWdub3Jlc19zbGFzaD1ubyBcCisgICAgdmltX2N2X3Rlcm1pbmZvPXllcyBcCisgICAgdmltX2N2X3RnZW50PW5vbi16ZXJvIFwKKyAgICB2aW1fY3ZfdG91cHBlcl9icm9rZW49bm8gXAorICAgIHZpbV9jdl90dHlfZ3JvdXA9d29ybGQgXAorICAgIFNUUklQPS9iaW4vdHJ1ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworICAgICMgV29yayBhcm91bmQgZmlsZS1yZGVwcyBwaWNraW5nIHVwIGNzaCwgYXdrLCBwZXJsIG9yIHB5dGhvbiBhcyBhIGRlcAorICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvdmltMTMyCisgICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy9tdmUuYXdrCisgICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy8qLnBsCisgICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy8qLnB5CisKKyAgICAjIEluc3RhbGwgZXhhbXBsZSB2aW1yYyBmcm9tIHJ1bnRpbWUgZmlsZXMKKyAgICBpbnN0YWxsIC1tIDA2NDQgLi4vcnVudGltZS92aW1yY19leGFtcGxlLnZpbSAke0R9LyR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjCisKKyAgICAjIHdlIHVzZSAtLXdpdGgtZmVhdHVyZXM9YmlnIGFzIGRlZmF1bHQKKyAgICBtdiAke0R9JHtiaW5kaXJ9LyR7QlBOfSAke0R9JHtiaW5kaXJ9LyR7QlBOfS4ke0JQTn0KK30KKworUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29tbW9uICR7UE59LXN5bnRheCAke1BOfS1oZWxwICR7UE59LXR1dG9yICR7UE59LXZpbXJjICR7UE59LXRvb2xzIgorRklMRVNfJHtQTn0tc3ludGF4ID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9zeW50YXgiCitGSUxFU18ke1BOfS1oZWxwID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9kb2MiCitGSUxFU18ke1BOfS10dXRvciA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdHV0b3IgJHtiaW5kaXJ9LyR7QlBOfXR1dG9yIgorRklMRVNfJHtQTn0tdmltcmMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vdmltcmMiCitGSUxFU18ke1BOfS1kYXRhID0gIiR7ZGF0YWRpcn0vJHtCUE59IgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzIgorRklMRVNfJHtQTn0tY29tbW9uID0gIiBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9LyoudmltIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vYXV0b2xvYWQgXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9jb2xvcnMgXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9jb21waWxlciBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2Z0cGx1Z2luIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vaW5kZW50IFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0va2V5bWFwIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vbGFuZyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L21hY3JvcyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3BsdWdpbiBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3ByaW50IFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vc3BlbGwgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorIgorCitSREVQRU5EU18ke0JQTn0gPSAibmN1cnNlcy10ZXJtaW5mby1iYXNlIgorIyBSZWNvbW1lbmQgdGhhdCBydW50aW1lIGRhdGEgaXMgaW5zdGFsbGVkIGFsb25nIHdpdGggdmltCitSUkVDT01NRU5EU18ke0JQTn0gPSAiJHtQTn0tc3ludGF4ICR7UE59LWhlbHAgJHtQTn0tdHV0b3IgJHtQTn0tdmltcmMgJHtQTn0tY29tbW9uIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ2aSB2aW0iCitBTFRFUk5BVElWRV9UQVJHRVQgPSAiJHtiaW5kaXJ9LyR7QlBOfS4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdmldID0gIiR7YmFzZV9iaW5kaXJ9L3ZpIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ZpbV0gPSAiJHtiaW5kaXJ9L3ZpbSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0LTIuOC44L2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0LTIuOC44L2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmYTJmNmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94Y2hhdC94Y2hhdC0yLjguOC9hdXRvbWFrZS1mb3JlaWduLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGEvY29uZmlndXJlLmluCTIwMTQtMDgtMTggMDE6MjU6NDMuOTExNTk3MDIzIC0wNzAwCi0rKysgYi9jb25maWd1cmUuaW4JMjAxNC0wOC0xOCAwMToyNjoyNy43NjM3ODY2MjkgLTA3MDAKLUBAIC04LDcgKzgsNyBAQAotIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0gQUNfQ09ORklHX1NSQ0RJUihbY29uZmlndXJlLmluXSkKLSAKLS1BTV9JTklUX0FVVE9NQUtFKFsxLjkgZGlzdC1iemlwMiBzdWJkaXItb2JqZWN0cyBuby1kZWZpbmVdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuOSBmb3JlaWduIGRpc3QtYnppcDIgc3ViZGlyLW9iamVjdHMgbm8tZGVmaW5lXSkKLSAKLSBBTV9NQUlOVEFJTkVSX01PREUKLSBBQ19QUk9HX0NDCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0LTIuOC44L2ZpeC1pbmNsdWRlcy1mb3Itc2VwYXJhdGUtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0LTIuOC44L2ZpeC1pbmNsdWRlcy1mb3Itc2VwYXJhdGUtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOTRlNTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94Y2hhdC94Y2hhdC0yLjguOC9maXgtaW5jbHVkZXMtZm9yLXNlcGFyYXRlLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotZGlmZiAtdXIgeGNoYXQtMi44Ljgtb3JpZy9wbHVnaW5zL3BlcmwvcGVybC5jIHhjaGF0LTIuOC44L3BsdWdpbnMvcGVybC9wZXJsLmMKLS0tLSB4Y2hhdC0yLjguOC1vcmlnL3BsdWdpbnMvcGVybC9wZXJsLmMJMjAxNC0wOC0zMCAxNDowOTowNS4xMjUxMTYyODYgLTA3MDAKLSsrKyB4Y2hhdC0yLjguOC9wbHVnaW5zL3BlcmwvcGVybC5jCTIwMTQtMDgtMzAgMTQ6MDk6NDUuMjgxMTA2NTMyIC0wNzAwCi1AQCAtMzEsNyArMzEsNyBAQAotICNlbmRpZgotIAotICN1bmRlZiBQQUNLQUdFCi0tI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgkJICAvKiBmb3IgI2RlZmluZSBPTERfUEVSTCAqLwotKyNpbmNsdWRlIDxjb25maWcuaD4JCSAgLyogZm9yICNkZWZpbmUgT0xEX1BFUkwgKi8KLSAjaW5jbHVkZSAieGNoYXQtcGx1Z2luLmgiCi0gCi0gc3RhdGljIHhjaGF0X3BsdWdpbiAqcGg7CQkgIC8qIHBsdWdpbiBoYW5kbGUgKi8KLWRpZmYgLXVyIHhjaGF0LTIuOC44LW9yaWcvc3JjL2NvbW1vbi9uZXR3b3JrLmMgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi9uZXR3b3JrLmMKLS0tLSB4Y2hhdC0yLjguOC1vcmlnL3NyYy9jb21tb24vbmV0d29yay5jCTIwMTQtMDgtMzAgMTQ6MDk6MDUuMTM3MTE2MjIyIC0wNzAwCi0rKysgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi9uZXR3b3JrLmMJMjAxNC0wOC0zMCAxNDoxMzo1Mi43MjkxMTYzMjMgLTA3MDAKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxnbGliLmg+Ci0gCi0tI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgkJCQkgIC8qIGdyYWIgVVNFX0lQVjYgYW5kIExPT0tVUEQgZGVmaW5lcyAqLwotKyNpbmNsdWRlIDxjb25maWcuaD4JCQkJICAvKiBncmFiIFVTRV9JUFY2IGFuZCBMT09LVVBEIGRlZmluZXMgKi8KLSAKLSAjZGVmaW5lIFdBTlRTT0NLRVQKLSAjZGVmaW5lIFdBTlRBUlBBCi1kaWZmIC11ciB4Y2hhdC0yLjguOC1vcmlnL3NyYy9jb21tb24vc3NsLmMgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi9zc2wuYwotLS0tIHhjaGF0LTIuOC44LW9yaWcvc3JjL2NvbW1vbi9zc2wuYwkyMDE0LTA4LTMwIDE0OjA5OjA1LjEzNzExNjIyMiAtMDcwMAotKysrIHhjaGF0LTIuOC44L3NyYy9jb21tb24vc3NsLmMJMjAxNC0wOC0zMCAxNDoxNDowOC40NDkxMzM4OTkgLTA3MDAKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgkJCQkgIC8qIHN0cm5jcHkoKSAqLwotICNpbmNsdWRlICJzc2wuaCIJCQkJCSAgLyogc3RydWN0IGNlcnRfaW5mbyAqLwotICNpbmNsdWRlICJpbmV0LmgiCi0tI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgkJICAvKiBIQVZFX1NOUFJJTlRGICovCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgkJICAvKiBIQVZFX1NOUFJJTlRGICovCi0gCi0gI2lmbmRlZiBIQVZFX1NOUFJJTlRGCi0gI2RlZmluZSBzbnByaW50ZiBnX3NucHJpbnRmCi1kaWZmIC11ciB4Y2hhdC0yLjguOC1vcmlnL3NyYy9jb21tb24vdXRpbC5jIHhjaGF0LTIuOC44L3NyYy9jb21tb24vdXRpbC5jCi0tLS0geGNoYXQtMi44Ljgtb3JpZy9zcmMvY29tbW9uL3V0aWwuYwkyMDE0LTA4LTMwIDE0OjA5OjA1LjEzMzExNjI0MyAtMDcwMAotKysrIHhjaGF0LTIuOC44L3NyYy9jb21tb24vdXRpbC5jCTIwMTQtMDgtMzAgMTQ6MTA6MjMuNjMzMTE2MDcwIC0wNzAwCi1AQCAtNDEsNyArNDEsNyBAQAotICNpbmNsdWRlICJ4Y2hhdGMuaCIKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSAidXRpbC5oIgotLSNpbmNsdWRlICIuLi8uLi9jb25maWcuaCIKLSsjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0gI2RlZmluZSBXQU5UU09DS0VUCi0gI2luY2x1ZGUgImluZXQuaCIKLWRpZmYgLXVyIHhjaGF0LTIuOC44LW9yaWcvc3JjL2NvbW1vbi94Y2hhdC5oIHhjaGF0LTIuOC44L3NyYy9jb21tb24veGNoYXQuaAotLS0tIHhjaGF0LTIuOC44LW9yaWcvc3JjL2NvbW1vbi94Y2hhdC5oCTIwMTQtMDgtMzAgMTQ6MDk6MDUuMTMzMTE2MjQzIC0wNzAwCi0rKysgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi94Y2hhdC5oCTIwMTQtMDgtMzAgMTQ6MTM6NDIuNzk3MTE2NDcyIC0wNzAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jaW5jbHVkZSAiLi4vLi4vY29uZmlnLmgiCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotIAotICNpbmNsdWRlIDxnbGliLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4JCQkvKiBuZWVkIHRpbWVfdCAqLwotZGlmZiAtdXIgeGNoYXQtMi44Ljgtb3JpZy9zcmMvZmUtZ3RrL2ZlLWd0ay5oIHhjaGF0LTIuOC44L3NyYy9mZS1ndGsvZmUtZ3RrLmgKLS0tLSB4Y2hhdC0yLjguOC1vcmlnL3NyYy9mZS1ndGsvZmUtZ3RrLmgJMjAxNC0wOC0zMCAxNDowOTowNS4xMjkxMTYyNzIgLTA3MDAKLSsrKyB4Y2hhdC0yLjguOC9zcmMvZmUtZ3RrL2ZlLWd0ay5oCTIwMTQtMDgtMzAgMTQ6MTA6MTMuMzA5MTE1OTUxIC0wNzAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jaW5jbHVkZSAiLi4vLi4vY29uZmlnLmgiCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotIAotICNpZmRlZiBXSU4zMgotIC8qIElmIHlvdSdyZSBjb21waWxpbmcgdGhpcyBmb3IgV2luZG93cywgeW91ciByZWxlYXNlIGlzIHVuLW9mZmljaWFsCi1kaWZmIC11ciB4Y2hhdC0yLjguOC1vcmlnL3NyYy9mZS1ndGsveHRleHQuYyB4Y2hhdC0yLjguOC9zcmMvZmUtZ3RrL3h0ZXh0LmMKLS0tLSB4Y2hhdC0yLjguOC1vcmlnL3NyYy9mZS1ndGsveHRleHQuYwkyMDE0LTA4LTMwIDE0OjA5OjA1LjEyOTExNjI3MiAtMDcwMAotKysrIHhjaGF0LTIuOC44L3NyYy9mZS1ndGsveHRleHQuYwkyMDE0LTA4LTMwIDE0OjEwOjAwLjMxMzEzODI1NCAtMDcwMAotQEAgLTUxLDcgKzUxLDcgQEAKLSAjaW5jbHVkZSA8Z3RrL2d0a3dpbmRvdy5oPgotIAotICNpZmRlZiBYQ0hBVAotLSNpbmNsdWRlICIuLi8uLi9jb25maWcuaCIJCQkvKiBjYW4gZGVmaW5lIFVTRV9YTElCIGhlcmUgKi8KLSsjaW5jbHVkZSA8Y29uZmlnLmg+CQkJLyogY2FuIGRlZmluZSBVU0VfWExJQiBoZXJlICovCi0gI2Vsc2UKLSAjZGVmaW5lIFVTRV9YTElCCi0gI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hjaGF0L3hjaGF0LTIuOC44L2dsaWItMi4zMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGNoYXQveGNoYXQtMi44LjgvZ2xpYi0yLjMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWJjZTZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGNoYXQveGNoYXQtMi44LjgvZ2xpYi0yLjMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLS0tIHhjaGF0LTIuOC44Lm9yaWcvc3JjL2NvbW1vbi94Y2hhdC5oCTIwMDktMDgtMTYgMTE6NDA6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi94Y2hhdC5oCTIwMTItMDUtMDYgMDg6MzA6MTYuMTI1NzU1NDk3ICswMjAwCi1AQCAtMSwxMCArMSw2IEBACi0gI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgotIAotLSNpbmNsdWRlIDxnbGliL2dzbGlzdC5oPgotLSNpbmNsdWRlIDxnbGliL2dsaXN0Lmg+Ci0tI2luY2x1ZGUgPGdsaWIvZ3V0aWxzLmg+Ci0tI2luY2x1ZGUgPGdsaWIvZ2lvY2hhbm5lbC5oPgotLSNpbmNsdWRlIDxnbGliL2dzdHJmdW5jcy5oPgotKyNpbmNsdWRlIDxnbGliLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4JCQkvKiBuZWVkIHRpbWVfdCAqLwotIAotICNpZm5kZWYgWENIQVRfSAotLS0tIHhjaGF0LTIuOC44Lm9yaWcvc3JjL2NvbW1vbi9zZXJ2bGlzdC5jCTIwMTAtMDUtMTYgMDk6MjQ6MjYuMDAwMDAwMDAwICswMjAwCi0rKysgeGNoYXQtMi44Ljgvc3JjL2NvbW1vbi9zZXJ2bGlzdC5jCTIwMTItMDUtMDYgMDg6MzA6NDUuNjgxNzU4MDE5ICswMjAwCi1AQCAtMjQsNyArMjQsNiBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjaW5jbHVkZSAieGNoYXQuaCIKLS0jaW5jbHVkZSA8Z2xpYi9naGFzaC5oPgotIAotICNpbmNsdWRlICJjZmdmaWxlcy5oIgotICNpbmNsdWRlICJmZS5oIgotLS0tIHhjaGF0LTIuOC44Lm9yaWcvc3JjL2NvbW1vbi91dGlsLmMJMjAwOS0wOC0xNiAxMTo0MDoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyB4Y2hhdC0yLjguOC9zcmMvY29tbW9uL3V0aWwuYwkyMDEyLTA1LTA2IDA4OjMxOjEwLjM4OTc2MDEyMiArMDIwMAotQEAgLTM5LDcgKzM5LDYgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSAieGNoYXQuaCIKLSAjaW5jbHVkZSAieGNoYXRjLmgiCi0tI2luY2x1ZGUgPGdsaWIvZ21hcmt1cC5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlICJ1dGlsLmgiCi0gI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgotLS0tIHhjaGF0LTIuOC44Lm9yaWcvc3JjL2NvbW1vbi90ZXh0LmMJMjAxMC0wNS0zMCAwNDoxNDo0MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyB4Y2hhdC0yLjguOC9zcmMvY29tbW9uL3RleHQuYwkyMDEyLTA1LTA2IDA4OjMxOjIyLjMwMDc2MTEzNyArMDIwMAotQEAgLTI4LDcgKzI4LDYgQEAKLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAKLSAjaW5jbHVkZSAieGNoYXQuaCIKLS0jaW5jbHVkZSA8Z2xpYi9naGFzaC5oPgotICNpbmNsdWRlICJjZmdmaWxlcy5oIgotICNpbmNsdWRlICJjaGFub3B0LmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94Y2hhdC94Y2hhdF8yLjguOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGNoYXQveGNoYXRfMi44LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwOGM3MDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94Y2hhdC94Y2hhdF8yLjguOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiRnVsbC1mZWF0dXJlZCBJUkMgY2hhdCBjbGllbnQgd2l0aCBzY3JpcHRpbmcgc3VwcG9ydCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54Y2hhdC5vcmciCi1TRUNUSU9OID0gIngxMS9uZXR3b3JrIgotCi1ERVBFTkRTID0gImxpYmdjcnlwdCB6bGliIGd0aysgbGlic2V4eSIKLURFUEVORFMgKz0gImdkay1waXhidWYtbmF0aXZlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKLQotUFIgPSAicjIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hjaGF0Lm9yZy9maWxlcy9zb3VyY2UvMi44L3hjaGF0LSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly9nbGliLTIuMzIucGF0Y2ggXAotICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LWluY2x1ZGVzLWZvci1zZXBhcmF0ZS1idWlsZC5wYXRjaCBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJkYnVzIgotUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMtZ2xpYiIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbiwtLWRpc2FibGUtcHl0aG9uLHB5dGhvbiIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgXAotICAgIC0tZGlzYWJsZS1wZXJsIFwKLSAgICAtLWRpc2FibGUtdGNsIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImRidXMiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS94Y2hhdC9wbHVnaW5zLy5kZWJ1ZyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY3NzVjNDRmMzhlODRkMDZjMDZjMzM2YjMyYzRhNDUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkNmQ2OTQzN2I1ZTFlNDVmM2U2NjI3MGZlMzY5MzQ0OTQzZGU4YTExOTBlNDk4ZmFmYTUyOTYzMTVhMjdkYjAiCi0KLVBOQkxBQ0tMSVNUW3hjaGF0XSA/PSAiRGVwZW5kcyBvbiBibGFja2xpc3RlZCBsaWJzZXh5IC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzdGFybGV0L3htbHN0YXJsZXRfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHN0YXJsZXQveG1sc3RhcmxldF8xLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY5OWFmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHN0YXJsZXQveG1sc3RhcmxldF8xLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIFhNTCB0b29sa2l0IgotREVTQ1JJUFRJT04gPSAiWE1MU3RhcmxldCBpcyBhIGNvbW1hbmQgbGluZSBYTUwgdG9vbGtpdCB3aGljaCBjYW4gYmUgdXNlZCB0byBcCi0gICAgICAgICAgICAgICB0cmFuc2Zvcm0sIHF1ZXJ5LCB2YWxpZGF0ZSwgYW5kIGVkaXQgWE1MIGRvY3VtZW50cyBhbmQgZmlsZXMgXAotICAgICAgICAgICAgICAgdXNpbmcgIHNpbXBsZSBzZXQgb2Ygc2hlbGwgY29tbWFuZHMgaW4gc2ltaWxhciB3YXkgaXQgaXMgZG9uZSBcCi0gICAgICAgICAgICAgICBmb3IgcGxhaW4gdGV4dCBmaWxlcyB1c2luZyBncmVwL3NlZC9hd2svdHIvZGlmZi9wYXRjaC4iCi1IT01FUEFHRSA9ICJodHRwOi8veG1sc3Rhci5zb3VyY2Vmb3JnZS5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8veG1sc3Rhci5zb3VyY2Vmb3JnZS5uZXQvYnVncy8iCi0KLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzA0NzYwZDA5ZThiMGZlNzMyODNkMGNjOWU4YmVhNTMiCi0KLURFUEVORFMgPSAibGlieG1sMiBsaWJ4c2x0IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS94bWxzdGFyLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11c2FnZTJjLmF3ay1maXgtd3JvbmctYmFzZW5hbWUtcmVnZXhwLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjBjNmRiMjk1ZDBjZjlmZjBkNDM5ZWRiNzU1YjdlOGY2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3YjRlZDA0MmVhMjkwOTI1N2YyYTM4NjAwMWFmNDlmY2ViMzAzZjg0ZGE3MjE0Nzc5Y2NmOTlmZmZjNmJiYmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLSMgZG9jIGJ1aWxkOiByZXF1aXJlcyAobmF0aXZlKSB4c3RscHJvYywgZm9wLCBwZGYycHMKLUVYVFJBX09FQ09ORj0iLS1kaXNhYmxlLWJ1aWxkLWRvY3MgXAotICAtLXdpdGgtbGlieG1sLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gIC0td2l0aC1saWJ4c2x0LXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiIKLQotI01ha2VmaWxlOjIxMTY6IHJlY2lwZSBmb3IgdGFyZ2V0ICdzcmMvZWxlbS11c2FnZS5jJyBmYWlsZWQKLSNtYWtlWzFdOiAqKiogW3NyYy9lbGVtLXVzYWdlLmNdIEVycm9yIDEKLSMvYmluL2Jhc2g6IHNyYy9lc2NhcGUtdXNhZ2UuYzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotI01ha2VmaWxlOjIxMTY6IHJlY2lwZSBmb3IgdGFyZ2V0ICdzcmMvZXNjYXBlLXVzYWdlLmMnIGZhaWxlZAotI21ha2VbMV06ICoqKiBbc3JjL2VzY2FwZS11c2FnZS5jXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc3RhcmxldC94bWxzdGFybGV0XzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzdGFybGV0L3htbHN0YXJsZXRfMS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNkNTJlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc3RhcmxldC94bWxzdGFybGV0XzEuNi4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIFhNTCB0b29sa2l0IgorREVTQ1JJUFRJT04gPSAiWE1MU3RhcmxldCBpcyBhIGNvbW1hbmQgbGluZSBYTUwgdG9vbGtpdCB3aGljaCBjYW4gYmUgdXNlZCB0byBcCisgICAgICAgICAgICAgICB0cmFuc2Zvcm0sIHF1ZXJ5LCB2YWxpZGF0ZSwgYW5kIGVkaXQgWE1MIGRvY3VtZW50cyBhbmQgZmlsZXMgXAorICAgICAgICAgICAgICAgdXNpbmcgIHNpbXBsZSBzZXQgb2Ygc2hlbGwgY29tbWFuZHMgaW4gc2ltaWxhciB3YXkgaXQgaXMgZG9uZSBcCisgICAgICAgICAgICAgICBmb3IgcGxhaW4gdGV4dCBmaWxlcyB1c2luZyBncmVwL3NlZC9hd2svdHIvZGlmZi9wYXRjaC4iCitIT01FUEFHRSA9ICJodHRwOi8veG1sc3Rhci5zb3VyY2Vmb3JnZS5uZXQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8veG1sc3Rhci5zb3VyY2Vmb3JnZS5uZXQvYnVncy8iCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzA0NzYwZDA5ZThiMGZlNzMyODNkMGNjOWU4YmVhNTMiCisKK0RFUEVORFMgPSAibGlieG1sMiBsaWJ4c2x0IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS94bWxzdGFyLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11c2FnZTJjLmF3ay1maXgtd3JvbmctYmFzZW5hbWUtcmVnZXhwLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImYzYzVkZmEzYjFhMmVlMDZjZDU3YzI1NWNjOGI3MGEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1ZDgzOGM0ZjMzNzUzMzJmZDk1NTU0NjE5MTc5YjY5ZTRlYzkxNDE4YTNhNTI5NmU3YzYzMWI3ZWQxOWU3Y2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKKyMgZG9jIGJ1aWxkOiByZXF1aXJlcyAobmF0aXZlKSB4c3RscHJvYywgZm9wLCBwZGYycHMKK0VYVFJBX09FQ09ORj0iLS1kaXNhYmxlLWJ1aWxkLWRvY3MgXAorICAtLXdpdGgtbGlieG1sLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgIC0td2l0aC1saWJ4c2x0LXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtQWRkLWNvcnJlY3QtcHJpbnRmLXF1YWxpZmllci1mb3Itb2ZmX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAxLUFkZC1jb3JyZWN0LXByaW50Zi1xdWFsaWZpZXItZm9yLW9mZl90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MmUwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAxLUFkZC1jb3JyZWN0LXByaW50Zi1xdWFsaWZpZXItZm9yLW9mZl90LnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMjMyZGFmNWZjYTZmYjUyY2NlZDVlODEwZjI2MDFmZTFhNzFiOTZkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDggSnVuIDIwMTcgMTY6NDk6NTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIEFkZCBjb3JyZWN0IHByaW50ZiBxdWFsaWZpZXIgZm9yIG9mZl90CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYmlvcy9lYmRhX3JlZ2lvbi9lYmRhX3JlZ2lvbi5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9zcmMvYmlvcy9lYmRhX3JlZ2lvbi9lYmRhX3JlZ2lvbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2Jpb3MvZWJkYV9yZWdpb24vZWJkYV9yZWdpb24uYworKysrIGdpdC9zcmMvYmlvcy9lYmRhX3JlZ2lvbi9lYmRhX3JlZ2lvbi5jCitAQCAtODMsOSArODMsOSBAQCBzdGF0aWMgaW50IGViZGFfdGVzdDEoZnd0c19mcmFtZXdvcmsgKmZ3CisgCWlmICgoZW50cnkgIT0gTlVMTCkgJiYKKyAJICAgIChlbnRyeS0+dHlwZSA9PSBGV1RTX01FTU9SWV9NQVBfUkVTRVJWRUQgfHwKKyAJICAgICBlbnRyeS0+dHlwZSA9PSBGV1RTX01FTU9SWV9NQVBfQUNQSSkpIHsKKy0JCWZ3dHNfcGFzc2VkKGZ3LCAiRUJEQSByZWdpb24gbWFwcGVkIGF0IDB4JWx4IGFuZCByZXNlcnZlZCBhcyBhICUiIFBSSWQ2NAorKwkJZnd0c19wYXNzZWQoZncsICJFQkRBIHJlZ2lvbiBtYXBwZWQgYXQgMHglamR4IGFuZCByZXNlcnZlZCBhcyBhICUiIFBSSWQ2NAorIAkJCSJLIHJlZ2lvbiBpbiB0aGUgJXMgdGFibGUgYXQgMHglIiBQUkl4NjQgIi4uMHglIiBQUkl4NjQgIi4iLAorLQkJCWViZGFfYWRkciwKKysJCQkoaW50bWF4X3QpZWJkYV9hZGRyLAorIAkJCShlbnRyeS0+ZW5kX2FkZHJlc3MgLSBlbnRyeS0+c3RhcnRfYWRkcmVzcykgLyAxMDI0LAorIAkJCW1lbW9yeV9tYXBfbmFtZSwKKyAJCQllbnRyeS0+c3RhcnRfYWRkcmVzcywKK0BAIC05Myw4ICs5Myw4IEBAIHN0YXRpYyBpbnQgZWJkYV90ZXN0MShmd3RzX2ZyYW1ld29yayAqZncKKyAJfSBlbHNlCisgCQlmd3RzX2ZhaWxlZChmdywgTE9HX0xFVkVMX01FRElVTSwKKyAJCQkiRUJEQU1hcHBlZE5vdFJlc2VydmVkIiwKKy0JCQkiRUJEQSByZWdpb24gbWFwcGVkIGF0IDB4JWx4IGJ1dCBub3QgcmVzZXJ2ZWQgaW4gdGhlICVzIHRhYmxlLiIsCistCQkJZWJkYV9hZGRyLCBtZW1vcnlfbWFwX25hbWUpOworKwkJCSJFQkRBIHJlZ2lvbiBtYXBwZWQgYXQgMHglamR4IGJ1dCBub3QgcmVzZXJ2ZWQgaW4gdGhlICVzIHRhYmxlLiIsCisrCQkJKGludG1heF90KWViZGFfYWRkciwgbWVtb3J5X21hcF9uYW1lKTsKKyAJCQorIAlyZXR1cm4gRldUU19PSzsKKyB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAxLUluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2YtZGVwcmVjYXRlZC1zeXMtcG9sbC5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMS1JbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLWRlcHJlY2F0ZWQtc3lzLXBvbGwuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWQwNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMS1JbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLWRlcHJlY2F0ZWQtc3lzLXBvbGwuaC5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDEwMGExMDdhNTNkNWRjOWIwNTU0MjUyYWM1ZGJmMmM5MzMwNjE1ZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCA2IEp1biAyMDE3IDA3OjI1OjA5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBJbmNsdWRlIHBvbGwuaCBpbnN0ZWFkIG9mIGRlcHJlY2F0ZWQgc3lzL3BvbGwuaAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWIvc3JjL2Z3dHNfaXBtaS5jICAgfCAzICsrLQorIHNyYy9saWIvc3JjL2Z3dHNfcGlwZWlvLmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL3NyYy9md3RzX2lwbWkuYyBiL3NyYy9saWIvc3JjL2Z3dHNfaXBtaS5jCitpbmRleCBjYmIyNzYxMS4uNzBkMTFjZmEgMTAwNjQ0CistLS0gYS9zcmMvbGliL3NyYy9md3RzX2lwbWkuYworKysrIGIvc3JjL2xpYi9zcmMvZnd0c19pcG1pLmMKK0BAIC0xOCwxMCArMTgsMTEgQEAKKyAgKgorICAqLworIAorKyNpbmNsdWRlIDxwb2xsLmg+CisrCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8bGludXgvaXBtaS5oPgorIAorZGlmZiAtLWdpdCBhL3NyYy9saWIvc3JjL2Z3dHNfcGlwZWlvLmMgYi9zcmMvbGliL3NyYy9md3RzX3BpcGVpby5jCitpbmRleCBmZDcxOTY0MC4uYmRjNWIyZWEgMTAwNjQ0CistLS0gYS9zcmMvbGliL3NyYy9md3RzX3BpcGVpby5jCisrKysgYi9zcmMvbGliL3NyYy9md3RzX3BpcGVpby5jCitAQCAtMzAsOSArMzAsOSBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHBhdGhzLmg+CisrI2luY2x1ZGUgPHBvbGwuaD4KKyAKKyAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CistI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMi1BZGQtQzk5LWRlZmluZWQtZm9ybWF0LWZvci1wcmludGluZy11aW50NjRfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDItQWRkLUM5OS1kZWZpbmVkLWZvcm1hdC1mb3ItcHJpbnRpbmctdWludDY0X3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjZTg4MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDItQWRkLUM5OS1kZWZpbmVkLWZvcm1hdC1mb3ItcHJpbnRpbmctdWludDY0X3QucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAyNWYxOGI5YWMzNzk2MGRjMTJhM2I2NDhhNWM4NjZiZDU2ZWYyY2JlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjo1MDoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvM10gQWRkIEM5OSBkZWZpbmVkIGZvcm1hdCBmb3IgcHJpbnRpbmcgdWludDY0X3QKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9vcGFsL3Jlc2Vydl9tZW0uYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL29wYWwvcmVzZXJ2X21lbS5jIGIvc3JjL29wYWwvcmVzZXJ2X21lbS5jCitpbmRleCBlZWVjMjk0Ny4uZjA2NzJlMDUgMTAwNjQ0CistLS0gYS9zcmMvb3BhbC9yZXNlcnZfbWVtLmMKKysrKyBiL3NyYy9vcGFsL3Jlc2Vydl9tZW0uYworQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgaW50IHJlc2Vydl9tZW1fbGltaXRzX3Rlc3QoZnd0c19mcmFtZXdvcmsgKmZ3KQorIAkJcmVnaW9uc1tqXS5zdGFydCA9ICh1aW50NjRfdCliZTY0dG9oKHJhbmdlc1syICogal0pOworIAkJcmVnaW9uc1tqXS5sZW4gPSAodWludDY0X3QpYmU2NHRvaChyYW5nZXNbMiAqIGogKyAxXSk7CisgCQlmd3RzX2xvZ19pbmZvKGZ3LCAiUmVnaW9uIG5hbWUgJTgwcyIKKy0JCQkiIHN0YXJ0OiAweCUwOGx4LCBsZW46IDB4JTA4bHhcbiIsCisrCQkJIiBzdGFydDogMHglMDgiIFBSSXg2NCAiLCBsZW46IDB4JTA4IiBQUkl4NjQgIlxuIiwKKyAJCQlyZWdpb25zW2pdLm5hbWUsIHJlZ2lvbnNbal0uc3RhcnQsIHJlZ2lvbnNbal0ubGVuKTsKKyAJfQorIAorQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0aWMgaW50IHJlc2Vydl9tZW1fbGltaXRzX3Rlc3QoZnd0c19mcmFtZXdvcmsgKmZ3KQorIAkJCQlmd3RzX2ZhaWxlZChmdywgTE9HX0xFVkVMX01FRElVTSwKKyAJCQkJCSJJbWFnZVNpemVNaXNtYXRjaCIsCisgCQkJCQkiTWlzbWF0Y2ggaW4gaG9tZXItaW1hZ2Ugc2l6ZSwgIgorLQkJCQkJImV4cGVjdGVkOiAweCVseCwgYWN0dWFsOiAweCVseCIsCisrCQkJCQkiZXhwZWN0ZWQ6IDB4JSIgUFJJeDY0ICIsIGFjdHVhbDogMHglIiBQUkl4NjQgIiIsCisgCQkJCQljb25maWdzdHJ1Y3QuaG9tZXIsIHJlZ2lvbnNbal0ubGVuKTsKKyAJCQkJb2sgPSBmYWxzZTsKKyAJCQl9IGVsc2UKK0BAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIGludCByZXNlcnZfbWVtX2xpbWl0c190ZXN0KGZ3dHNfZnJhbWV3b3JrICpmdykKKyAJCQkJZnd0c19mYWlsZWQoZncsIExPR19MRVZFTF9NRURJVU0sCisgCQkJCQkiSW1hZ2VTaXplTWlzbWF0Y2giLAorIAkJCQkJIk1pc21hdGNoIGluIHNsdy1pbWFnZSBzaXplLCAiCistCQkJCQkiZXhwZWN0ZWQ6IDB4JWx4LCBhY3R1YWw6IDB4JWx4IiwKKysJCQkJCSJleHBlY3RlZDogMHglIiBQUkl4NjQgIiwgYWN0dWFsOiAweCUiIFBSSXg2NCAiIiwKKyAJCQkJCWNvbmZpZ3N0cnVjdC5zbHcsIHJlZ2lvbnNbal0ubGVuKTsKKyAJCQkJb2sgPSBmYWxzZTsKKyAJCQl9IGVsc2UKK0BAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIGludCByZXNlcnZfbWVtX2xpbWl0c190ZXN0KGZ3dHNfZnJhbWV3b3JrICpmdykKKyAJCQkJZnd0c19mYWlsZWQoZncsIExPR19MRVZFTF9NRURJVU0sCisgCQkJCQkiSW1hZ2VTaXplTWlzbWF0Y2giLAorIAkJCQkJIk1pc21hdGNoIGluIG9jYy1jb21tb24tYXJlYSBzaXplLCAiCistCQkJCQkiZXhwZWN0ZWQ6IDB4JWx4LCBhY3R1YWw6IDB4JWx4IiwKKysJCQkJCSJleHBlY3RlZDogMHglIiBQUkl4NjQiLCBhY3R1YWw6IDB4JSIgUFJJeDY0IiIsCisgCQkJCQljb25maWdzdHJ1Y3Qub2NjX2NvbW1vbiwKKyAJCQkJCXJlZ2lvbnNbal0ubGVuKTsKKyAJCQkJb2sgPSBmYWxzZTsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDItRGVmaW5lLV9fU1dPUkRfVFlQRS1pZi1ub3QtZGVmaW5lZC1ieS1saWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMi1EZWZpbmUtX19TV09SRF9UWVBFLWlmLW5vdC1kZWZpbmVkLWJ5LWxpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I4M2NhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDItRGVmaW5lLV9fU1dPUkRfVFlQRS1pZi1ub3QtZGVmaW5lZC1ieS1saWJjLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMGU4OTEyN2NkMDJlY2Q1ZWE0NTA2YjkzNWNiMmI1OWViOTQxMDdkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDYgSnVuIDIwMTcgMDc6Mzc6MjAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIERlZmluZSBfX1NXT1JEX1RZUEUgaWYgbm90IGRlZmluZWQgYnkgbGliYworCitfX1NXT1JEX1RZUEUgaXMgaW50ZXJuYWwgdG8gZ2xpYmMsIHRoZXJlZm9yZQorY2hlY2sgYW5kIGRlZmluZSBpdCBpZiBuZWVkZWQgZS5nLiBvbiBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYi9zcmMvZnd0c191ZWZpLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL3NyYy9md3RzX3VlZmkuYyBiL3NyYy9saWIvc3JjL2Z3dHNfdWVmaS5jCitpbmRleCAxZjlkMzFmYS4uMmQ5MjVmOGQgMTAwNjQ0CistLS0gYS9zcmMvbGliL3NyYy9md3RzX3VlZmkuYworKysrIGIvc3JjL2xpYi9zcmMvZnd0c191ZWZpLmMKK0BAIC01OSw2ICs1OSwxMCBAQCB0eXBlZGVmIHN0cnVjdCB7CisgI2RlZmluZSBVRUZJX0lGQUNFX1NZU0ZTCQkoMikJLyogc3lzZnMgKi8KKyAjZGVmaW5lIFVFRklfSUZBQ0VfRUZJVkFSUwkJKDMpCS8qIGVmaXZhciBmcyAqLworIAorKyNpZm5kZWYgX19TV09SRF9UWVBFCisrdHlwZWRlZiBfX3R5cGVvZl9fKCAoKHN0cnVjdCBzdGF0ZnMgKikwKS0+Zl90eXBlICkJX19TV09SRF9UWVBFOworKyNlbmRpZgorKworIC8qIEZpbGUgc3lzdGVtIG1hZ2ljIG51bWJlcnMgKi8KKyAjZGVmaW5lIFBTVE9SRUZTX01BR0lDICAgICAgICAgICgoX19TV09SRF9UWVBFKTB4NjE2NTY3NkMpCisgI2RlZmluZSBFRklWQVJGU19NQUdJQyAgICAgICAgICAoKF9fU1dPUkRfVFlQRSkweGRlNWU4MWU0KQorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMy1VbmRlZmluZS1QQUdFX1NJWkUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAzLVVuZGVmaW5lLVBBR0VfU0laRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODRmYmZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMy1VbmRlZmluZS1QQUdFX1NJWkUucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAwODU3MjY5ZDVhMDUzYjViNGMzMWNmYTAxYjY1MDE1MjZiMjQwMzVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNiBKdW4gMjAxNyAwNzozOToyOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvM10gVW5kZWZpbmUgUEFHRV9TSVpFCisKK211c2wgZGVmaW5lcyBQQUdFX1NJWkUgYW5kIGJ1aWxkIGNvbXBsYWlucworb2YgbXVsdGlwbGUgZGVmaW5pdGlvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbGliL3NyYy9md3RzX2FjcGlfdGFibGVzLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYyBiL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYworaW5kZXggMWQ0ZmM3MDUuLjcxMDIzYWQyIDEwMDY0NAorLS0tIGEvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jCisrKysgYi9zcmMvbGliL3NyYy9md3RzX2FjcGlfdGFibGVzLmMKK0BAIC00Miw2ICs0Miw3IEBACisgI2RlZmluZSBCSU9TX1NUQVJUCSgweDAwMGUwMDAwKQkJLyogU3RhcnQgb2YgQklPUyBtZW1vcnkgKi8KKyAjZGVmaW5lIEJJT1NfRU5EICAJKDB4MDAwZmZmZmYpCQkvKiBFbmQgb2YgQklPUyBtZW1vcnkgKi8KKyAjZGVmaW5lIEJJT1NfTEVOR1RICShCSU9TX0VORCAtIEJJT1NfU1RBUlQpCS8qIExlbmd0aCBvZiBCSU9TIG1lbW9yeSAqLworKyN1bmRlZiBQQUdFX1NJWkUKKyAjZGVmaW5lIFBBR0VfU0laRQkoNDA5NikKKyAKKyBzdGF0aWMgZnd0c19hY3BpX3RhYmxlX2luZm8JdGFibGVzW0FDUElfTUFYX1RBQkxFU107CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAzLXVzZS1pbnRwdHJfdC10by1maXgtcG9pbnRlci10by1pbnQtY2FzdC1pc3N1ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAzLXVzZS1pbnRwdHJfdC10by1maXgtcG9pbnRlci10by1pbnQtY2FzdC1pc3N1ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NkM2ZiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDMtdXNlLWludHB0cl90LXRvLWZpeC1wb2ludGVyLXRvLWludC1jYXN0LWlzc3Vlcy5wYXRjaApAQCAtMCwwICsxLDc2IEBACitGcm9tIGQwZDc2ODIwZWZlNTFkZDQwNGQzODFmYzRjNDY1NDQwMDhlNzU3ZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE2OjUwOjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSB1c2UgaW50cHRyX3QgdG8gZml4IHBvaW50ZXItdG8taW50LWNhc3QgaXNzdWVzCisKK3VpbnRwdHJfdCBpcyBndWFyYW50ZWVkIHRvIGJlIHdpZGUgZW5vdWdoIHRoYXQKK2NvbnZlcnRpbmcgYSB2b2lkKiB0byB1aW50cHRyX3QgYW5kIGJhY2sgYWdhaW4KK3dpbGwgeWllbGQgdGhlIG9yaWdpbmFsIHBvaW50ZXIgdmFsdWUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYyB8IDQgKystLQorIHNyYy9saWIvc3JjL2Z3dHNfbW1hcC5jICAgICAgICB8IDIgKy0KKyBzcmMvbGliL3NyYy9md3RzX3NtYmlvcy5jICAgICAgfCA0ICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYyBiL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYworaW5kZXggODMyZjhkNjYuLmQwMDA2NTI5IDEwMDY0NAorLS0tIGEvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jCisrKysgYi9zcmMvbGliL3NyYy9md3RzX2FjcGlfdGFibGVzLmMKK0BAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIGZ3dHNfYWNwaV90YWJsZV9yc2RwICpmd3RzX2FjcGlfZ2V0X3JzZHAoZnd0c19mcmFtZXdvcmsgKmZ3LCB2b2lkICphZGRyLAorIAlmd3RzX2FjcGlfdGFibGVfcnNkcCAqcnNkcCA9IE5VTEw7CisgCSpyc2RwX2xlbiA9IDA7CisgCistCWlmICgobWVtID0gZnd0c19tbWFwKChvZmZfdClhZGRyLCBzaXplb2YoZnd0c19hY3BpX3RhYmxlX3JzZHApKSkgPT0gRldUU19NQVBfRkFJTEVEKQorKwlpZiAoKG1lbSA9IGZ3dHNfbW1hcCgodWludHB0cl90KWFkZHIsIHNpemVvZihmd3RzX2FjcGlfdGFibGVfcnNkcCkpKSA9PSBGV1RTX01BUF9GQUlMRUQpCisgCQlyZXR1cm4gTlVMTDsKKyAKKyAJaWYgKGZ3dHNfc2FmZV9tZW1yZWFkKG1lbSwgc2l6ZW9mKGZ3dHNfYWNwaV90YWJsZV9yc2RwKSkgIT0gRldUU19PSykgeworQEAgLTQ1Niw3ICs0NTYsNyBAQCBzdGF0aWMgaW50IGZ3dHNfYWNwaV9sb2FkX3RhYmxlc19mcm9tX2Zpcm13YXJlKGZ3dHNfZnJhbWV3b3JrICpmdykKKyAJaWYgKChyc2RwID0gZnd0c19hY3BpX2dldF9yc2RwKGZ3LCByc2RwX2FkZHIsICZyc2RwX2xlbikpID09IE5VTEwpCisgCQlyZXR1cm4gRldUU19FUlJPUjsKKyAKKy0JZnd0c19hY3BpX2FkZF90YWJsZSgiUlNEUCIsIHJzZHAsICh1aW50NjRfdCkob2ZmX3QpcnNkcF9hZGRyLCByc2RwX2xlbiwgRldUU19BQ1BJX1RBQkxFX0ZST01fRklSTVdBUkUpOworKwlmd3RzX2FjcGlfYWRkX3RhYmxlKCJSU0RQIiwgcnNkcCwgKHVpbnQ2NF90KSh1aW50cHRyX3QpcnNkcF9hZGRyLCByc2RwX2xlbiwgRldUU19BQ1BJX1RBQkxFX0ZST01fRklSTVdBUkUpOworIAorIAkvKiBMb2FkIGFueSB0YWJsZXMgZnJvbSBYU0RUIGlmIGl0J3MgdmFsaWQgKi8KKyAJaWYgKHJzZHAtPnhzZHRfYWRkcmVzcykgeworZGlmZiAtLWdpdCBhL3NyYy9saWIvc3JjL2Z3dHNfbW1hcC5jIGIvc3JjL2xpYi9zcmMvZnd0c19tbWFwLmMKK2luZGV4IGEwOWY2ODhlLi45ZmU2MzI5YSAxMDA2NDQKKy0tLSBhL3NyYy9saWIvc3JjL2Z3dHNfbW1hcC5jCisrKysgYi9zcmMvbGliL3NyYy9md3RzX21tYXAuYworQEAgLTgxLDcgKzgxLDcgQEAgaW50IGZ3dHNfbXVubWFwKHZvaWQgKm1lbSwgY29uc3Qgc2l6ZV90IHNpemUpCisgCW9mZl90IG9mZnNldDsKKyAKKyAJcGFnZV9zaXplID0gZnd0c19wYWdlX3NpemUoKTsKKy0Jb2Zmc2V0ID0gKChvZmZfdCkobWVtKSkgJiAocGFnZV9zaXplIC0gMSk7CisrCW9mZnNldCA9ICgodWludHB0cl90KShtZW0pKSAmIChwYWdlX3NpemUgLSAxKTsKKyAKKyAJaWYgKG11bm1hcCgodm9pZCAqKSgodWludDhfdCAqKW1lbSAtIG9mZnNldCksIHNpemUgKyBvZmZzZXQpIDwgMCkKKyAJCXJldHVybiBGV1RTX0VSUk9SOworZGlmZiAtLWdpdCBhL3NyYy9saWIvc3JjL2Z3dHNfc21iaW9zLmMgYi9zcmMvbGliL3NyYy9md3RzX3NtYmlvcy5jCitpbmRleCA4ZDBlYTM5Yi4uNjNiNGJmMjUgMTAwNjQ0CistLS0gYS9zcmMvbGliL3NyYy9md3RzX3NtYmlvcy5jCisrKysgYi9zcmMvbGliL3NyYy9md3RzX3NtYmlvcy5jCitAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCAqZnd0c19zbWJpb3NfZmluZF9lbnRyeV91ZWZpKGZ3dHNfZnJhbWV3b3JrICpmdywgZnd0c19zbWJpb3NfZW50cnkgKgorIAlpZiAoKGFkZHIgPSBmd3RzX3NjYW5fZWZpX3N5c3RhYigiU01CSU9TIikpICE9IE5VTEwpIHsKKyAJCWZ3dHNfc21iaW9zX2VudHJ5ICptYXBwZWRfZW50cnk7CisgCistCQlpZiAoKG1hcHBlZF9lbnRyeSA9IGZ3dHNfbW1hcCgob2ZmX3QpYWRkciwgc2l6ZW9mKGZ3dHNfc21iaW9zX2VudHJ5KSkpICE9IEZXVFNfTUFQX0ZBSUxFRCkgeworKwkJaWYgKChtYXBwZWRfZW50cnkgPSBmd3RzX21tYXAoKHVpbnRwdHJfdClhZGRyLCBzaXplb2YoZnd0c19zbWJpb3NfZW50cnkpKSkgIT0gRldUU19NQVBfRkFJTEVEKSB7CisgCQkJKmVudHJ5ID0gKm1hcHBlZF9lbnRyeTsKKyAJCQkodm9pZClmd3RzX211bm1hcChtYXBwZWRfZW50cnksIHNpemVvZihmd3RzX3NtYmlvc19lbnRyeSkpOworIAkJCSp0eXBlICA9IEZXVFNfU01CSU9TOworQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIHZvaWQgKmZ3dHNfc21iaW9zMzBfZmluZF9lbnRyeV91ZWZpKGZ3dHNfZnJhbWV3b3JrICpmdywgZnd0c19zbWJpb3MzMF9lbnQKKyAJaWYgKChhZGRyID0gZnd0c19zY2FuX2VmaV9zeXN0YWIoIlNNQklPUzMiKSkgIT0gTlVMTCkgeworIAkJZnd0c19zbWJpb3MzMF9lbnRyeSAqbWFwcGVkX2VudHJ5OworIAorLQkJaWYgKChtYXBwZWRfZW50cnkgPSBmd3RzX21tYXAoKG9mZl90KWFkZHIsIHNpemVvZihmd3RzX3NtYmlvczMwX2VudHJ5KSkpICE9IEZXVFNfTUFQX0ZBSUxFRCkgeworKwkJaWYgKChtYXBwZWRfZW50cnkgPSBmd3RzX21tYXAoKHVpbnRwdHJfdClhZGRyLCBzaXplb2YoZnd0c19zbWJpb3MzMF9lbnRyeSkpKSAhPSBGV1RTX01BUF9GQUlMRUQpIHsKKyAJCQkqZW50cnkgPSAqbWFwcGVkX2VudHJ5OworIAkJCSh2b2lkKWZ3dHNfbXVubWFwKG1hcHBlZF9lbnRyeSwgc2l6ZW9mKGZ3dHNfc21iaW9zMzBfZW50cnkpKTsKKyAJCQlyZXR1cm4gYWRkcjsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzX2dpdC5iYgppbmRleCA0YzRhZTY2Li44N2EyM2FmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0c19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHNfZ2l0LmJiCkBAIC01LDExICs1LDE3IEBACiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9tYWluLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNjttZDU9MzFkYTU5MGYzZTlmM2JkMzRkY2RiOWU0ZGI1Njg1MTkiCiAKLVBWID0gIjE3LjAzLjAwIgorUFYgPSAiMTcuMDMuMDArZ2l0JHtTUkNQVn0iCiAKLVNSQ1JFViA9ICJlM2U5ZDE0NDJiNGNjNzBmNWIzMDE5OWY1ODRjZWM4ZTI1YWVhYWQ0IgorU1JDUkVWID0gIjAxNTNlYTUxY2I2NDhiMzA2N2ExYjMyN2VlZTZhMDc1YjZjZmEzMzAiCiBTUkNfVVJJID0gImdpdDovL2tlcm5lbC51YnVudHUuY29tL2h3ZS9md3RzLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWlnbm9yZS1jb25zdGFudC1sb2dpY2FsLW9wZXJhbmQtd2FybmluZy13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1kZXByZWNhdGVkLXN5cy1wb2xsLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1EZWZpbmUtX19TV09SRF9UWVBFLWlmLW5vdC1kZWZpbmVkLWJ5LWxpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1VbmRlZmluZS1QQUdFX1NJWkUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtY29ycmVjdC1wcmludGYtcXVhbGlmaWVyLWZvci1vZmZfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1DOTktZGVmaW5lZC1mb3JtYXQtZm9yLXByaW50aW5nLXVpbnQ2NF90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtdXNlLWludHB0cl90LXRvLWZpeC1wb2ludGVyLXRvLWludC1jYXN0LWlzc3Vlcy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTE3LDEwICsyMywxMiBAQAogQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhYXJjaDY0fHBvd2VycGM2NCkuKi1saW51eCIKIAogREVQRU5EUyA9ICJsaWJwY3JlIGpzb24tYyBnbGliLTIuMCBkdGMiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYmV4ZWNpbmZvIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogQ0ZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L2pzb24tYyAtV25vLWVycm9yPXVua25vd24tcHJhZ21hcyIKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxleGVjaW5mbyIKIAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9md3RzL2xpYioke1NPTElCU30iCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9md3RzL2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2Z3dHMvbGliKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL1JFQURNRQppbmRleCAyYTliOWFjLi5jYzk2NWFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvUkVBRE1FCkBAIC01Miw3ICs1Miw3IEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKICAgVVJJOiBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZQotICBicmFuY2g6IHB5cm8gCisgIGJyYW5jaDogcm9ja28gCiAgIHJldmlzaW9uOiBIRUFECiAgIHByaW86IGRlZmF1bHQKIApAQCAtNzUsMTIgKzc1LDEyIEBACiAtLS0tLS0tLS0tLQogCiBTZW5kIHBhdGNoZXMgLyBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGgKLSdbbWV0YS1wZXJsXVtweXJvXScgaW4gdGhlIHN1YmplY3QuCisnW21ldGEtcGVybF1bcm9ja29dJyBpbiB0aGUgc3ViamVjdC4KIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtcGVybF1bcHlyb11bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtcGVybF1bcm9ja29dW1BBVENIJwogCi1weXJvIEJyYW5jaCBNYWludGFpbmVyOgorcm9ja28gQnJhbmNoIE1haW50YWluZXI6CiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgogCiBMaWNlbnNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9jb25mL2xheWVyLmNvbmYKaW5kZXggMDQ4NWFjOC4uYTg2MWMzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTMsNCArMTMsNCBAQAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwogTEFZRVJWRVJTSU9OX3BlcmwtbGF5ZXIgPSAiMSIKIAotTEFZRVJERVBFTkRTX3BlcmwtbGF5ZXIgPSAiY29yZSIKK0xBWUVSREVQRU5EU19wZXJsLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1leHRlbmRlZC9sb2djaGVjay9maWxlcy85OV9sb2djaGVjayBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtZXh0ZW5kZWQvbG9nY2hlY2svZmlsZXMvOTlfbG9nY2hlY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRlMzNhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtZXh0ZW5kZWQvbG9nY2hlY2svZmlsZXMvOTlfbG9nY2hlY2sKQEAgLTAsMCArMSwyIEBACisjIDx0eXBlPiA8b3duZXI+IDxncm91cD4gPG1vZGU+IDxwYXRoPiA8bGlua3NvdXJjZT4KK2QgbG9nY2hlY2sgbG9nY2hlY2sgMDc1NSAvdmFyL2xvY2svbG9nY2hlY2sgbm9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1leHRlbmRlZC9sb2djaGVjay9sb2djaGVja18xLjMuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODc2NmE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1leHRlbmRlZC9sb2djaGVjay9sb2djaGVja18xLjMuMTguYmIKQEAgLTAsMCArMSw3OSBAQAorU1VNTUFSWSA9ICJBbmFseXplcyBsb2cgZmlsZXMgYW5kIHNlbmRzIG5vdGljZWFibGUgZXZlbnRzIGFzIGVtYWlsIgorREVTQ1JJUFRJT04gPSAiXAorTG9nY2hlY2sgaXMgYSBzaW1wbGUgdXRpbGl0eSB3aGljaCBpcyBkZXNpZ25lZCB0byBhbGxvdyBhIHN5c3RlbSBhZG1pbmlzdHJhdG9yIFwKK3RvIHZpZXcgdGhlIGxvZy1maWxlcyB3aGljaCBhcmUgcHJvZHVjZWQgdXBvbiBob3N0cyB1bmRlciB0aGVpciBjb250cm9sLiBcCitJdCBkb2VzIHRoaXMgYnkgbWFpbGluZyBzdW1tYXJpZXMgb2YgdGhlIGxvZy1maWxlcyB0byB0aGVtLCBhZnRlciBmaXJzdCBcCitmaWx0ZXJpbmcgb3V0ICJub3JtYWwiIGVudHJpZXMuIFwKK05vcm1hbCBlbnRyaWVzIGFyZSBlbnRyaWVzIHdoaWNoIG1hdGNoIG9uZSBvZiB0aGUgbWFueSBpbmNsdWRlZCByZWd1bGFyIFwKK2V4cHJlc3Npb24gZmlsZXMgY29udGFpbiBpbiB0aGUgZGF0YWJhc2UuIgorU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvU3lzdGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL2xvZ2NoZWNrLm9yZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlYmlhbi5vcmcvZ2l0L2xvZ2NoZWNrL2xvZ2NoZWNrLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly85OV9sb2djaGVjayBcCisiCitTUkNSRVYgPSAiMGE1ODY1ZDgwZmEzNGM1NTM4N2ExOTE3YTNlNmY4ODViY2ZmN2YxZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCB1c2VyYWRkCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi1tIC1nICR7QlBOfSAtRyBhZG0gLXIgLWQgJHtsb2NhbHN0YXRlZGlyfS9saWIvJHtCUE59IFwKKyAgICAgICAgICAgICAgICAgICAgICAgLXMgL2Jpbi9mYWxzZSAtYyAnbG9nY2hlY2sgYWNjb3VudCcgJHtCUE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgJHtCUE59IgorCitkb19pbnN0YWxsKCkgeworICAgICMgRml4IFFBIElzc3VlCisgICAgc2VkIC1pICcvaW5zdGFsbCAtZCAkKERFU1RESVIpXC92YXJcL2xvY2tcL2xvZ2NoZWNrL3MvXi8jLycgTWFrZWZpbGUKKworICAgICMgIm1ha2UgaW5zdGFsbCIgZG8gbm90IGluc3RhbGwgdGhlIG1hbnBhZ2VzLiBJbnN0YWxsIHRoZW0gbWFudWFsbHkuCisgICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7bWFuZGlyfS9tYW4xCisgICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtbSA2NDQgZG9jcy9sb2djaGVjay10ZXN0LjEgJHtEfSR7bWFuZGlyfS9tYW4xLworICAgIGluc3RhbGwgLW0gNjQ0IGRvY3MvbG9ndGFpbC44ICR7RH0ke21hbmRpcn0vbWFuOC8KKyAgICBpbnN0YWxsIC1tIDY0NCBkb2NzL2xvZ3RhaWwyLjggJHtEfSR7bWFuZGlyfS9tYW44LworCisgICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kCisgICAgaW5zdGFsbCAtbSA2NDQgZGViaWFuL2xvZ2NoZWNrLmNyb24uZCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmQvbG9nY2hlY2sKKyAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9L3Zhci9saWIvbG9nY2hlY2sKKworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KKworICAgICMgaW5zdGFsbCBoZWFkZXIudHh0IGZvciBnZW5lcmF0ZWQgbWFpbHMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWJpYW4vaGVhZGVyLnR4dCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KKworICAgIGNob3duIC1SICR7QlBOfToke0JQTn0gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliLyR7QlBOfQorICAgIGNob3duIC1SIHJvb3Q6JHtCUE59ICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfQorCisgICAgIyBEb24ndCBpbnN0YWxsIC92YXIvbG9jayB3aGVuIHBvcHVsYXRpbmcgcm9vdGZzLiBEbyBpdCB0aHJvdWdoIHZvbGF0aWxlCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfbG9nY2hlY2sgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICBmaQorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkIC92YXIvbG9jay9sb2djaGVjayAwNzU1IGxvZ2NoZWNrIGxvZ2NoZWNrIC0iIFwKKyAgICAgICAgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9sb2djaGVjay5jb25mCisgICAgZmkKK30KKworVklSVFVBTC1SVU5USU1FX3N5c2xvZyA/Pz0gInJzeXNsb2ciCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICBiYXNoIFwKKyAgICBjcm9uaWUgXAorICAgIGRlYmlhbnV0aWxzLXJ1bi1wYXJ0cyBcCisgICAgZ3JlcCBcCisgICAgbG9ja2ZpbGUtcHJvZ3MgXAorICAgIG1pbWUtY29uc3RydWN0IFwKKyAgICBwZXJsIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKKyAgICBwZXJsLW1vZHVsZS1nZXRvcHQtc3RkIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAorICAgICR7VklSVFVBTC1SVU5USU1FX3N5c2xvZ30gXAorIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sb2d0YWlsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2FkZHVzZXIvYWRkdXNlcl8zLjExNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9hZGR1c2VyL2FkZHVzZXJfMy4xMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMTE4NjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2FkZHVzZXIvYWRkdXNlcl8zLjExNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiYSB1dGlsaXR5IHRvIGFkZCB1c2Vycy9ncm91cHMgdG8gdGhlIHN5c3RlbSIKLURFU0NSSVBUSU9OID0gImFkZHVzZXIsIGFkZGdyb3VwIC0gYWRkIGEgdXNlciBvciBncm91cCB0byB0aGUgc3lzdGVtIgotSE9NRVBBR0UgPSAiaHR0cDovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2FkZHVzZXIvIgotU0VDVElPTiA9ICJiYXNlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9Y2FlZDQ5YWIxNjZmMjJlZjMxYmYxMTI3ZjU1OGQwZWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vYS8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGR1c2VyLWFkZC1NLW9wdGlvbi1mb3ItdXNlcmFkZC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YmI2ZDkzOTIyZDI4MWYxYjU2MzkzYTUzZjhjZTVmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzI4ODI4MWQ0ZDFlZWMyOTQ4YmEzNjg3NDUyY2EzM2E4MjI0ZDQwYzk4ZDMyMWJjM2ZiYWVmY2Y2ZDRjMGRiIgotCi1pbmhlcml0IGNwYW4tYmFzZSB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2FkZHVzZXIgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9kZWx1c2VyICR7RH0ke3NiaW5kaXJ9Ci0KLSAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9BZGR1c2VyQ29tbW9uLnBtICR7RH0ke2xpYmRpcn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9EZWJpYW4vQWRkdXNlckNvbW1vbi5wbQotICAgIHNlZCAtaSAtZSAicy9WRVJTSU9OLyR7UFZ9LyIgJHtEfSR7c2JpbmRpcn0vKgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS8qLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9Ci0KLSAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuNQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy8qLmNvbmYuNSAke0R9JHttYW5kaXJ9L21hbjUKLSAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy8qLjggJHtEfSR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkb2NkaXJ9LyR7QlBOfQotICAgIGNwIC1yZiAke1N9L2V4YW1wbGVzICR7RH0ke2RvY2Rpcn0vJHtCUE59Ci19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgc2hhZG93IFwKLSAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCi0gICAgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKLSIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkdXNlciBkZWx1c2VyIGFkZGdyb3VwIGRlbGdyb3VwIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkdXNlcl0gPSAiJHtzYmluZGlyfS9hZGR1c2VyIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2RlbHVzZXJdID0gIiR7c2JpbmRpcn0vZGVsdXNlciIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGRncm91cF0gPSAiJHtzYmluZGlyfS9hZGRncm91cCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtkZWxncm91cF0gPSAiJHtzYmluZGlyfS9kZWxncm91cCIKLUFMVEVSTkFUSVZFX1RBUkdFVFthZGRncm91cF0gPSAiJHtzYmluZGlyfS9hZGR1c2VyLiR7QlBOfSIKLUFMVEVSTkFUSVZFX1RBUkdFVFtkZWxncm91cF0gPSAiJHtzYmluZGlyfS9kZWx1c2VyLiR7QlBOfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9hZGR1c2VyL2FkZHVzZXJfMy4xMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvYWRkdXNlci9hZGR1c2VyXzMuMTE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMmE1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvYWRkdXNlci9hZGR1c2VyXzMuMTE2LmJiCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAiYSB1dGlsaXR5IHRvIGFkZCB1c2Vycy9ncm91cHMgdG8gdGhlIHN5c3RlbSIKK0RFU0NSSVBUSU9OID0gImFkZHVzZXIsIGFkZGdyb3VwIC0gYWRkIGEgdXNlciBvciBncm91cCB0byB0aGUgc3lzdGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2FkZHVzZXIvIgorU0VDVElPTiA9ICJiYXNlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9Y2FlZDQ5YWIxNjZmMjJlZjMxYmYxMTI3ZjU1OGQwZWYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vYS8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9hZGR1c2VyLWFkZC1NLW9wdGlvbi1mb3ItdXNlcmFkZC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMDQyYTU4NDJiOGYyNDMxMmQ2ZjVhOTlhMWFmOGYyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MmQ4MTFhZDNiYTE3ZDI3OTRiMTRkMTlhY2QxZDZiNTdmOWRkMzFkOTI1MGQ1MWU3ODY4OTVkZWUyZGFlYWMwIgorCitpbmhlcml0IGNwYW4tYmFzZSB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2FkZHVzZXIgJHtEfSR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9kZWx1c2VyICR7RH0ke3NiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9BZGR1c2VyQ29tbW9uLnBtICR7RH0ke2xpYmRpcn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9EZWJpYW4vQWRkdXNlckNvbW1vbi5wbQorICAgIHNlZCAtaSAtZSAicy9WRVJTSU9OLyR7UFZ9LyIgJHtEfSR7c2JpbmRpcn0vKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS8qLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuNQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy8qLmNvbmYuNSAke0R9JHttYW5kaXJ9L21hbjUKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy8qLjggJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtZCAke0R9JHtkb2NkaXJ9LyR7QlBOfQorICAgIGNwIC1yZiAke1N9L2V4YW1wbGVzICR7RH0ke2RvY2Rpcn0vJHtCUE59Cit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgc2hhZG93IFwKKyAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCisgICAgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCisgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkdXNlciBkZWx1c2VyIGFkZGdyb3VwIGRlbGdyb3VwIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkdXNlcl0gPSAiJHtzYmluZGlyfS9hZGR1c2VyIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2RlbHVzZXJdID0gIiR7c2JpbmRpcn0vZGVsdXNlciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthZGRncm91cF0gPSAiJHtzYmluZGlyfS9hZGRncm91cCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkZWxncm91cF0gPSAiJHtzYmluZGlyfS9kZWxncm91cCIKK0FMVEVSTkFUSVZFX1RBUkdFVFthZGRncm91cF0gPSAiJHtzYmluZGlyfS9hZGR1c2VyLiR7QlBOfSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtkZWxncm91cF0gPSAiJHtzYmluZGlyfS9kZWx1c2VyLiR7QlBOfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjYXB0dXJlL2xpYmNhcHR1cmUtdGlueS1wZXJsXzAuMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2FwdHVyZS9saWJjYXB0dXJlLXRpbnktcGVybF8wLjM2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzdkZDc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjYXB0dXJlL2xpYmNhcHR1cmUtdGlueS1wZXJsXzAuMzYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkNhcHR1cmU6OlRpbnkgLSBDYXB0dXJlIFNURE9VVCBhbmQgU1RERVJSIGZyb20gUGVybCwgWFMgb3IgZXh0ZXJuYWwgcHJvZ3JhbXMuIgotREVTQ1JJUFRJT04gPSAiQ2FwdHVyZTo6VGlueSBwcm92aWVzIGEgc2ltcGxlLCBwb3J0YWJsZSB3YXkgdG8gY2FwdHVyZSBcCi1hbG1vc3QgYW55dGhpbmcgc2VudCB0byBTVERPVVQgb3IgU1RERVJSLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgY29tZXMgXAotZnJvbSBQZXJsLCBmcm9tIFhTIGNvZGUgb3IgZnJvbSBhbiBleHRlcm5hbCBwcm9ncmFtLiBPcHRpb25hbGx5LCBvdXRwdXQgY2FuIFwKLWJlIHRlZWQgc28gdGhhdCBpdCBpcyBjYXB0dXJlZCB3aGlsZSBiZWluZyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgb3JpZ2luYWwgXAotZmlsZWhhbmRsZXMuIFllcywgaXQgZXZlbiB3b3JrcyBvbiBXaW5kb3dzICh1c3VhbGx5KS4gU3RvcCBndWVzc2luZyB3aGljaCBvZiBcCi1hIGRvemVuIGNhcHR1cmluZyBtb2R1bGVzIHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBzaXR1YXRpb24gYW5kIGp1c3QgdXNlIFwKLXRoaXMgb25lLiIKLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+ZGFnb2xkZW4vQ2FwdHVyZS1UaW55LyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM3YTQ5MThhMzBhY2UyNDM5NTAyMGU1YjhjMDNiODNmIgotCi1TUkNOQU1FID0gIkNhcHR1cmUtVGlueSIKLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9EL0RBL0RBR09MREVOLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImRiNjQ0NDExMWMzMGFjMDFhNzZhNGMxMTgyNDFjN2I2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiODc0MmU1M2FkMjA0YTQyMWJjODJkNTgxM2YzYzRjODVjNzY1ODFlYTEwZDkxMGQwYWVmYzE2MWY4Y2IwM2QiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1pby1maWxlIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1saWIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkaW5nIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2FwdHVyZS9saWJjYXB0dXJlLXRpbnktcGVybF8wLjQ2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNhcHR1cmUvbGliY2FwdHVyZS10aW55LXBlcmxfMC40Ni5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE5ODExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNhcHR1cmUvbGliY2FwdHVyZS10aW55LXBlcmxfMC40Ni5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkNhcHR1cmU6OlRpbnkgLSBDYXB0dXJlIFNURE9VVCBhbmQgU1RERVJSIGZyb20gUGVybCwgWFMgb3IgZXh0ZXJuYWwgcHJvZ3JhbXMuIgorREVTQ1JJUFRJT04gPSAiQ2FwdHVyZTo6VGlueSBwcm92aWVzIGEgc2ltcGxlLCBwb3J0YWJsZSB3YXkgdG8gY2FwdHVyZSBcCithbG1vc3QgYW55dGhpbmcgc2VudCB0byBTVERPVVQgb3IgU1RERVJSLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgY29tZXMgXAorZnJvbSBQZXJsLCBmcm9tIFhTIGNvZGUgb3IgZnJvbSBhbiBleHRlcm5hbCBwcm9ncmFtLiBPcHRpb25hbGx5LCBvdXRwdXQgY2FuIFwKK2JlIHRlZWQgc28gdGhhdCBpdCBpcyBjYXB0dXJlZCB3aGlsZSBiZWluZyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgb3JpZ2luYWwgXAorZmlsZWhhbmRsZXMuIFllcywgaXQgZXZlbiB3b3JrcyBvbiBXaW5kb3dzICh1c3VhbGx5KS4gU3RvcCBndWVzc2luZyB3aGljaCBvZiBcCithIGRvemVuIGNhcHR1cmluZyBtb2R1bGVzIHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBzaXR1YXRpb24gYW5kIGp1c3QgdXNlIFwKK3RoaXMgb25lLiIKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+ZGFnb2xkZW4vQ2FwdHVyZS1UaW55LyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM3YTQ5MThhMzBhY2UyNDM5NTAyMGU1YjhjMDNiODNmIgorCitTUkNOQU1FID0gIkNhcHR1cmUtVGlueSIKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9EL0RBL0RBR09MREVOLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImQ3MThhZjA3NzI5ZDI2YTc5Mzk0OWNhNmJhMjU4MGE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkN2E2YTgzMGNmN2YyYjI5NjBiZjhiOGFmYWFjMTZhNTM3ZWRlNjRmMzAyMzgyN2FjZWE1YmQyNGNhNzcwMTUiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1pby1maWxlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1saWIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkaW5nIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuMzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYTM0MjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjM1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQ0dJLnBtIGlzIGEgc3RhYmxlLCBjb21wbGV0ZSBhbmQgbWF0dXJlIHNvbHV0aW9uIGZvciBwcm9jZXNzaW5nIGFuZCBwcmVwYXJpbmcgXAotSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLiBNYWpvciBmZWF0dXJlcyBpbmNsdWRpbmcgcHJvY2Vzc2luZyBmb3JtIFwKLXN1Ym1pc3Npb25zLCBmaWxlIHVwbG9hZHMsIHJlYWRpbmcgYW5kIHdyaXRpbmcgY29va2llcywgcXVlcnkgc3RyaW5nIGdlbmVyYXRpb24gXAotYW5kIG1hbmlwdWxhdGlvbiwgYW5kIHByb2Nlc3NpbmcgYW5kIHByZXBhcmluZyBIVFRQIGhlYWRlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bGVlam8vQ0dJLTQuMjgvbGliL0NHSS5wb2QiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTIuMCB8IEdQTC0yLjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJlOTc2OWYwYTI2MTNhOThiYzdmY2UxNWRlZTBjNTMzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0wvTEUvTEVFSk8vQ0dJLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1ZTYzOTQyYzAyMzU0NDI2YjI1ZjA1NmYyYTQ0NjdjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiMzRjZGM1OWY1OTY2MzJiMDYyMDkzOTI4NmY2ZTE4ZTdlODFkMDQzYjZiNTdiOTc0YThlMDdkMThiNWZjMWQiCi0KLVMgPSAiJHtXT1JLRElSfS9DR0ktJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWNnaSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC4zNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC4zNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI2YWIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjM2LmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gIkNHSS5wbSBpcyBhIHN0YWJsZSwgY29tcGxldGUgYW5kIG1hdHVyZSBzb2x1dGlvbiBmb3IgcHJvY2Vzc2luZyBhbmQgcHJlcGFyaW5nIFwKK0hUVFAgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4gTWFqb3IgZmVhdHVyZXMgaW5jbHVkaW5nIHByb2Nlc3NpbmcgZm9ybSBcCitzdWJtaXNzaW9ucywgZmlsZSB1cGxvYWRzLCByZWFkaW5nIGFuZCB3cml0aW5nIGNvb2tpZXMsIHF1ZXJ5IHN0cmluZyBnZW5lcmF0aW9uIFwKK2FuZCBtYW5pcHVsYXRpb24sIGFuZCBwcm9jZXNzaW5nIGFuZCBwcmVwYXJpbmcgSFRUUCBoZWFkZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmxlZWpvL0NHSS00LjI4L2xpYi9DR0kucG9kIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0yLjAgfCBHUEwtMi4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZTk3NjlmMGEyNjEzYTk4YmM3ZmNlMTVkZWUwYzUzMyIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9ML0xFL0xFRUpPL0NHSS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ODU2NmQ4MWY0MzBhN2Y3NTViYjRkOGY0MjZjZTM1ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZWZlODRkNGYyNDYxZTg2N2Y5YmU4MGYzZjk4OGUxN2JjYmJjYjRlMzA2OTUyY2YyZmQxZGVhN2U0NTE1NDkwIgorCitTID0gIiR7V09SS0RJUn0vQ0dJLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1jZ2kiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3Vyc2VzL2xpYmN1cnNlcy1wZXJsXzEuMzQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3Vyc2VzL2xpYmN1cnNlcy1wZXJsXzEuMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZTlkOTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmN1cnNlcy9saWJjdXJzZXMtcGVybF8xLjM0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAibGliLWN1cnNlcyBwcm92aWRlcyBhbiBpbnRlcmZhY2UgYmV0d2VlbiBQZXJsIHByb2dyYW1zIGFuZCBcCi10aGUgY3Vyc2VzIGxpYnJhcnkuIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI2O2VuZGxpbmU9MzA7bWQ1PTBiMzczNTZjNWU5ZTI4MDgwYTM0MjJkODJhZjhhZjA5IgotCi1ERVBFTkRTICs9ICJwZXJsIG5jdXJzZXMgIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvYXV0aG9ycy9pZC9HL0dJL0dJUkFGRkVEL0N1cnNlcy0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NzRjMjEwM2NjNTM1NTJhMGZhYTM3MWM0ZDkxMTlmNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MDhlNDRkNTk0NmJlMjY1YWY1ZmYwYjkwZjNkMDgwMjEwOGU3ZDFiMzliMGZlNjhhNGE0NDZmZTI4NGQzMjJiIgotCi1TID0gIiR7V09SS0RJUn0vQ3Vyc2VzLSR7UFZ9IgotCi1FWFRSQV9DUEFORkxBR1MgPSAiSU5DPS1JJHtTVEFHSU5HX0lOQ0RJUn0gTElCUz0tTCR7U1RBR0lOR19MSUJESVJ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotICAgIGNwYW5fZG9fY29tcGlsZQotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3Vyc2VzL2xpYmN1cnNlcy1wZXJsXzEuMzYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3Vyc2VzL2xpYmN1cnNlcy1wZXJsXzEuMzYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgyYjk3MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjdXJzZXMvbGliY3Vyc2VzLXBlcmxfMS4zNi5iYgpAQCAtMCwwICsxLDI2IEBACitERVNDUklQVElPTiA9ICJsaWItY3Vyc2VzIHByb3ZpZGVzIGFuIGludGVyZmFjZSBiZXR3ZWVuIFBlcmwgcHJvZ3JhbXMgYW5kIFwKK3RoZSBjdXJzZXMgbGlicmFyeS4iCisKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjY7ZW5kbGluZT0zMDttZDU9MGIzNzM1NmM1ZTllMjgwODBhMzQyMmQ4MmFmOGFmMDkiCisKK0RFUEVORFMgKz0gInBlcmwgbmN1cnNlcyAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9hdXRob3JzL2lkL0cvR0kvR0lSQUZGRUQvQ3Vyc2VzLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjM4OWM3MGVlNTUzMGI4ODdmOGU1ZGMxMzAzY2I1Mjk0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0MTQ3OTViYTAzMWM1OTE4YzcwMjc5ZmU1MzRmZWU1OTRhOTZlYzRiMGM3OGY0NGNlNDUzMDkwNzk2YWRkNjQiCisKK1MgPSAiJHtXT1JLRElSfS9DdXJzZXMtJHtQVn0iCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJJTkM9LUkke1NUQUdJTkdfSU5DRElSfSBMSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0iCisKK2luaGVyaXQgY3BhbgorCitkb19jb21waWxlKCkgeworICAgIGV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisgICAgY3Bhbl9kb19jb21waWxlCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkYi9saWJkYmQtc3FsaXRlLXBlcmxfMS41MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkYi9saWJkYmQtc3FsaXRlLXBlcmxfMS41MC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhiZmQ2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGIvbGliZGJkLXNxbGl0ZS1wZXJsXzEuNTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkEgUGVybCBEQkkgZHJpdmVyIGZvciBTUUxpdGUiCi1ERVNDUklQVElPTiA9ICJEQkQ6OlNRTGl0ZSBpcyBhIFBlcmwgREJJIGRyaXZlciBmb3IgU1FMaXRlLCB0aGF0IGluY2x1ZGVzIHRoZSBlbnRpcmUgXAotdGhpbmcgaW4gdGhlIGRpc3RyaWJ1dGlvbi4gU28gaW4gb3JkZXIgdG8gZ2V0IGEgZmFzdCB0cmFuc2FjdGlvbiBjYXBhYmxlIFwKLVJEQk1TIHdvcmtpbmcgZm9yIHlvdXIgcGVybCBwcm9qZWN0IHlvdSBzaW1wbHkgaGF2ZSB0byBpbnN0YWxsIHRoaXMgXAotbW9kdWxlLCBhbmQgbm90aGluZyBlbHNlLiBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35pc2hpZ2FraS9EQkQtU1FMaXRlLyIKLQotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLURFUEVORFMgKz0gImxpYmRiaS1wZXJsLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJsaWJkYmktcGVybCBcCi0gICAgICAgICAgICAgICAgICAgc3FsaXRlMyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxvY2FsZSBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGllLWhhc2ggXAotIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNzI2ZTIxMTc0OTRiYTNlMTNlMWMzZDkzZjc5NTM2MCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9JL0lTL0lTSElHQUtJL0RCRC1TUUxpdGUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3NxbGl0ZS1wZXJsLXRlc3QucGwgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDU2ZWViZmI1ZjJhMTRiZTk0MTNiMDI1ZTdkY2E5ZmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2FjNTEzYWI3Mzk0NGZkN2Q0YjY3MmUxZmU4ODVkYzUyMmI2MzY5ZDM4ZjQ2YTY4ZTY3ZTAwNDViZjE1OWNlMSIKLQotUyA9ICIke1dPUktESVJ9L0RCRC1TUUxpdGUtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAke1BFUkxfREJNX1RFU1R9ID0gIjEiIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgLUQgJHtXT1JLRElSfS9zcWxpdGUtcGVybC10ZXN0LnBsICR7RH0vJHtiaW5kaXJ9L3NxbGl0ZS1wZXJsLXRlc3QucGwKLSAgICBmaQotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGIvbGliZGJkLXNxbGl0ZS1wZXJsXzEuNTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGIvbGliZGJkLXNxbGl0ZS1wZXJsXzEuNTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyN2I1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkYi9saWJkYmQtc3FsaXRlLXBlcmxfMS41NC5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIkEgUGVybCBEQkkgZHJpdmVyIGZvciBTUUxpdGUiCitERVNDUklQVElPTiA9ICJEQkQ6OlNRTGl0ZSBpcyBhIFBlcmwgREJJIGRyaXZlciBmb3IgU1FMaXRlLCB0aGF0IGluY2x1ZGVzIHRoZSBlbnRpcmUgXAordGhpbmcgaW4gdGhlIGRpc3RyaWJ1dGlvbi4gU28gaW4gb3JkZXIgdG8gZ2V0IGEgZmFzdCB0cmFuc2FjdGlvbiBjYXBhYmxlIFwKK1JEQk1TIHdvcmtpbmcgZm9yIHlvdXIgcGVybCBwcm9qZWN0IHlvdSBzaW1wbHkgaGF2ZSB0byBpbnN0YWxsIHRoaXMgXAorbW9kdWxlLCBhbmQgbm90aGluZyBlbHNlLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35pc2hpZ2FraS9EQkQtU1FMaXRlLyIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0RFUEVORFMgKz0gImxpYmRiaS1wZXJsLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJkYmktcGVybCBcCisgICAgICAgICAgICAgICAgICAgc3FsaXRlMyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxvY2FsZSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGllLWhhc2ggXAorIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNzI2ZTIxMTc0OTRiYTNlMTNlMWMzZDkzZjc5NTM2MCIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9JL0lTL0lTSElHQUtJL0RCRC1TUUxpdGUtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3NxbGl0ZS1wZXJsLXRlc3QucGwgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGY4MzVkZGFjYjlhNGE5MmE1MmJiZTJkMjRkMThhOGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzkyOWE2ZGJkOGQ3MTYzMGYwY2I1N2Y4NWRjZWY5NTg4Y2Q3YWM0YzlmYTEyZGI3OWRmNzdiOWQzYTRkNzI2OSIKKworUyA9ICIke1dPUktESVJ9L0RCRC1TUUxpdGUtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAke1BFUkxfREJNX1RFU1R9ID0gIjEiIF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgLUQgJHtXT1JLRElSfS9zcWxpdGUtcGVybC10ZXN0LnBsICR7RH0vJHtiaW5kaXJ9L3NxbGl0ZS1wZXJsLXRlc3QucGwKKyAgICBmaQorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGV2ZWwvbGliZGV2ZWwtZ2xvYmFsZGVzdHJ1Y3Rpb24tcGVybF8wLjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmRldmVsL2xpYmRldmVsLWdsb2JhbGRlc3RydWN0aW9uLXBlcmxfMC4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE1OTNjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZGV2ZWwvbGliZGV2ZWwtZ2xvYmFsZGVzdHJ1Y3Rpb24tcGVybF8wLjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJGdW5jdGlvbiByZXR1cm5pbmcgXCIke15HTE9CQUxfUEhBU0V9IGVxIFwnREVTVFJVQ1RcJ1wiIgotREVTQ1JJUFRJT04gPSAiUGVybCdzIGdsb2JhbCBkZXN0cnVjdGlvbiBpcyBhIGxpdHRsZSB0cmljayB0byBkZWFsIHdpdGggXAotV1JUIGZpbmFsaXplcnMgYmVjYXVzZSBpdCdzIG5vdCBvcmRlcmVkIGFuZCBvYmplY3RzIGNhbiBzb21ldGltZXMgZGlzYXBwZWFyLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9wb2QvRGV2ZWwtR2xvYmFsRGVzdHJ1Y3Rpb24vIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT01MztlbmRsaW5lPTU1O21kNT05MzVkYWRiOTQyMzc3NGY1MzU0OGU1Y2Q1MDU1ZDQxYSIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvRGV2ZWwtR2xvYmFsRGVzdHJ1Y3Rpb24tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImU3YmUwMDA0MDgyN2UyMDRiMmI2Y2JhMmYzMTY2MDc0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyOTgyNGRjMGQzMjJlNTZkYTMyNWYwNTE4NTM2N2ViNDQzNjk0NzE2MDEwYjM2NjkzZGQ1MmZmYmU4ZWM0NjIiCi0KLVMgPSAiJHtXT1JLRElSfS9EZXZlbC1HbG9iYWxEZXN0cnVjdGlvbi0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJERVBFTkRTXyR7UE59ID0gIiBsaWJzdWItZXhwb3J0ZXItcHJvZ3Jlc3NpdmUtcGVybCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmRldmVsL2xpYmRldmVsLWdsb2JhbGRlc3RydWN0aW9uLXBlcmxfMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkZXZlbC9saWJkZXZlbC1nbG9iYWxkZXN0cnVjdGlvbi1wZXJsXzAuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNlMjQyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJkZXZlbC9saWJkZXZlbC1nbG9iYWxkZXN0cnVjdGlvbi1wZXJsXzAuMTQuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJGdW5jdGlvbiByZXR1cm5pbmcgXCIke15HTE9CQUxfUEhBU0V9IGVxIFwnREVTVFJVQ1RcJ1wiIgorREVTQ1JJUFRJT04gPSAiUGVybCdzIGdsb2JhbCBkZXN0cnVjdGlvbiBpcyBhIGxpdHRsZSB0cmljayB0byBkZWFsIHdpdGggXAorV1JUIGZpbmFsaXplcnMgYmVjYXVzZSBpdCdzIG5vdCBvcmRlcmVkIGFuZCBvYmplY3RzIGNhbiBzb21ldGltZXMgZGlzYXBwZWFyLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9wb2QvRGV2ZWwtR2xvYmFsRGVzdHJ1Y3Rpb24vIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT01MztlbmRsaW5lPTU1O21kNT05MzVkYWRiOTQyMzc3NGY1MzU0OGU1Y2Q1MDU1ZDQxYSIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvRGV2ZWwtR2xvYmFsRGVzdHJ1Y3Rpb24tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjI0MjIxYmEzMjJjZjJkYzQ2YTFmYzk5YjUzZTIzODBiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0YjhhNWYyOTk5MTMxMTQ2OGZlNjkxM2NhZGFiYTc1ZmQ1ZDJiMGIzZWUzYmI0MWZlNWI1M2VmYWI5MTU0YWIiCisKK1MgPSAiJHtXT1JLRElSfS9EZXZlbC1HbG9iYWxEZXN0cnVjdGlvbi0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK1JERVBFTkRTXyR7UE59ID0gIiBsaWJzdWItZXhwb3J0ZXItcHJvZ3Jlc3NpdmUtcGVybCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWhlbHBlcnMtcGVybF8wLjAyMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1oZWxwZXJzLXBlcmxfMC4wMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDIzNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWhlbHBlcnMtcGVybF8wLjAyMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0VXRpbHM6OkhlbHBlcnMgLSBWYXJpb3VzIHBvcnRhYmlsaXR5IHV0aWxpdGllcyBmb3IgbW9kdWxlIGJ1aWxkZXJzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdmFyaW91cyBwb3J0YWJsZSBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vZHVsZSBidWlsZGluZyBtb2R1bGVzLiIKLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bGVvbnQvRXh0VXRpbHMtSGVscGVycy8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMDcwNTdjZTIzMjg5OWY1Y2FhODg1ODU2MGM3Mjc0YiIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0wvTEUvTEVPTlQvRXh0VXRpbHMtSGVscGVycy0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2Y0ZmQ2ZjhjYWE2ZGFhYzMzYjExMTFjOWU5MzE2MmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDNmOGNmNzAwZmIzNDE0Y2ExMjYwMDg5NzU1Y2JmNjQwNDE0NTVlNGI3NDQxMTA2NzdiMWJhNWJiOWEzYWE5NSIKLQotUyA9ICIke1dPUktESVJ9L0V4dFV0aWxzLUhlbHBlcnMtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbG9hZCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMtZnVuY3Rpb25zIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtaGVscGVycy1wZXJsXzAuMDI2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWhlbHBlcnMtcGVybF8wLjAyNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDI3MjUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWhlbHBlcnMtcGVybF8wLjAyNi5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkV4dFV0aWxzOjpIZWxwZXJzIC0gVmFyaW91cyBwb3J0YWJpbGl0eSB1dGlsaXRpZXMgZm9yIG1vZHVsZSBidWlsZGVycyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIHZhcmlvdXMgcG9ydGFibGUgaGVscGVyIGZ1bmN0aW9uIGZvciBtb2R1bGUgYnVpbGRpbmcgbW9kdWxlcy4iCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmxlb250L0V4dFV0aWxzLUhlbHBlcnMvIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjIzYzA0MDQ1NjY0ZjcyYzNhNjU1NjQ2MjYxMmJkZGQiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9ML0xFL0xFT05UL0V4dFV0aWxzLUhlbHBlcnMtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjgzYjAwYzFlNDAxMzIxYzQyNWFlNWRiNmIyYjJmZDEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlOTAxYjY3OTBhNDU1N2NmNGVjOTA4MTQ5ZTAzNTc4M2IxMjViZjExNWViOTY0MGZlYjFiYzFjMjRjMzM0MTYiCisKK1MgPSAiJHtXT1JLRElSfS9FeHRVdGlscy1IZWxwZXJzLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY2FycCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXh0LXBhcnNld29yZHMgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxvYWQgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLXBhcnNleHMtcGVybF8zLjI0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLXBhcnNleHMtcGVybF8zLjI0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzM2OGVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1wYXJzZXhzLXBlcmxfMy4yNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0VXRpbHM6OlBhcnNlWFMgLSBjb252ZXJ0cyBQZXJsIFhTIGNvZGUgaW50byBDIGNvZGUiCi1ERVNDUklQVElPTiA9ICJcIkV4dFV0aWxzOjpQYXJzZVhTXCIgd2lsbCBjb21waWxlIFhTIGNvZGUgaW50byBDIGNvZGUgYnkgXAotZW1iZWRkaW5nIHRoZSBjb25zdHJ1Y3RzIG5lY2Vzc2FyeSB0byBsZXQgQyBmdW5jdGlvbnMgbWFuaXB1bGF0ZSBQZXJsIFwKLXZhbHVlcyBhbmQgY3JlYXRlcyB0aGUgZ2x1ZSBuZWNlc3NhcnkgdG8gbGV0IFBlcmwgYWNjZXNzIHRob3NlIGZ1bmN0aW9ucy4gXAotVGhlIGNvbXBpbGVyIHVzZXMgdHlwZXNtYXBlcyB0byBkZXRlcm1pbmUgaG93IHRvIG1hcCBDIGZ1bmN0aW9uIHBhcmFtZXRlcnMgXAotYW5kIHZhcmlhYmxlcyB0byBQZXJsIHZhbHVlcy4iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL21ldGFwYW4ub3JnL3JlbGVhc2UvRXh0VXRpbHMtUGFyc2VYUy8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTEyMTtlbmRsaW5lPTEzMDttZDU9MTBkZGIzYTY3M2I0YzczMjAyMmFjODk5OTY4ZWE5Y2MiCi0KLVNSQ05BTUUgPSAiRXh0VXRpbHMtUGFyc2VYUyIKLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9TL1NNL1NNVUVMTEVSLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImU2YmUzZjFkNDkzZTA0ZWQ4MDU1NzYxMDRjZjQzMjhiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwYjYwYjgyMDhmYzliNzc0NmVkOTM0YjY3OGJiOTYxOGE4ZjI4OTk0ZGFlODc3NDU0ODM1M2E3YjU1MDM3MWUiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgIHBlcmwtbW9kdWxlLWN3ZCBcCi0gICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY2J1aWxkZXIgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKLSAgICBwZXJsLW1vZHVsZS1saWIgXAotICAgIHBlcmwtbW9kdWxlLXN5bWJvbCBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIgbGliZXh0dXRpbHMtcGFyc2V4cy1jb25zdGFudHMtcGVybCBcCi0gICAgbGliZXh0dXRpbHMtcGFyc2V4cy1jb3VudGxpbmVzLXBlcmwgXAotICAgIGxpYmV4dHV0aWxzLXBhcnNleHMtZXZhbC1wZXJsIFwKLSAgICBsaWJleHR1dGlscy1wYXJzZXhzLXV0aWxpdGllcy1wZXJsIFwKLSAgICBsaWJleHR1dGlscy10eXBlbWFwcy1wZXJsIFwKLSAgICBsaWJleHR1dGlscy10eXBlbWFwcy1jbWQtcGVybCBcCi0gICAgbGliZXh0dXRpbHMtdHlwZW1hcHMtaW5wdXRtYXAtcGVybCBcCi0gICAgbGliZXh0dXRpbHMtdHlwZW1hcHMtb3V0cHV0bWFwLXBlcmwgXAotICAgIGxpYmV4dHV0aWxzLXR5cGVtYXBzLXR5cGUtcGVybCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLXBhcnNleHMtcGVybF8zLjM1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLXBhcnNleHMtcGVybF8zLjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzA3YTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtcGFyc2V4cy1wZXJsXzMuMzUuYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJFeHRVdGlsczo6UGFyc2VYUyAtIGNvbnZlcnRzIFBlcmwgWFMgY29kZSBpbnRvIEMgY29kZSIKK0RFU0NSSVBUSU9OID0gIlwiRXh0VXRpbHM6OlBhcnNlWFNcIiB3aWxsIGNvbXBpbGUgWFMgY29kZSBpbnRvIEMgY29kZSBieSBcCitlbWJlZGRpbmcgdGhlIGNvbnN0cnVjdHMgbmVjZXNzYXJ5IHRvIGxldCBDIGZ1bmN0aW9ucyBtYW5pcHVsYXRlIFBlcmwgXAordmFsdWVzIGFuZCBjcmVhdGVzIHRoZSBnbHVlIG5lY2Vzc2FyeSB0byBsZXQgUGVybCBhY2Nlc3MgdGhvc2UgZnVuY3Rpb25zLiBcCitUaGUgY29tcGlsZXIgdXNlcyB0eXBlc21hcGVzIHRvIGRldGVybWluZSBob3cgdG8gbWFwIEMgZnVuY3Rpb24gcGFyYW1ldGVycyBcCithbmQgdmFyaWFibGVzIHRvIFBlcmwgdmFsdWVzLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vbWV0YXBhbi5vcmcvcmVsZWFzZS9FeHRVdGlscy1QYXJzZVhTLyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTIwO2VuZGxpbmU9MTI5O21kNT1lYjg1OGYwZTNiMWIwYmVlMGMwNWI4NmE0NzRhZTJiNiIKKworU1JDTkFNRSA9ICJFeHRVdGlscy1QYXJzZVhTIgorU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL1MvU00vU01VRUxMRVIvJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMmFlNDEwMzZkODVlOThlMTM2OTY0NTcyNDk2MmRkMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFkZWYwNTExMjc4YTJhOGJhOWFmYTI1Y2NhYjQ1YjA0NTNmNzVlN2ZkNzc0ZTg2NDRiNWY5YTU3Y2M0ZWUxYyIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtY2FycCBcCisgICAgcGVybC1tb2R1bGUtY3dkIFwKKyAgICBwZXJsLW1vZHVsZS1keW5hbG9hZGVyIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jYnVpbGRlciBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAorICAgIHBlcmwtbW9kdWxlLWxpYiBcCisgICAgcGVybC1tb2R1bGUtc3ltYm9sIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiBsaWJleHR1dGlscy1wYXJzZXhzLWNvbnN0YW50cy1wZXJsIFwKKyAgICBsaWJleHR1dGlscy1wYXJzZXhzLWNvdW50bGluZXMtcGVybCBcCisgICAgbGliZXh0dXRpbHMtcGFyc2V4cy1ldmFsLXBlcmwgXAorICAgIGxpYmV4dHV0aWxzLXBhcnNleHMtdXRpbGl0aWVzLXBlcmwgXAorICAgIGxpYmV4dHV0aWxzLXR5cGVtYXBzLXBlcmwgXAorICAgIGxpYmV4dHV0aWxzLXR5cGVtYXBzLWNtZC1wZXJsIFwKKyAgICBsaWJleHR1dGlscy10eXBlbWFwcy1pbnB1dG1hcC1wZXJsIFwKKyAgICBsaWJleHR1dGlscy10eXBlbWFwcy1vdXRwdXRtYXAtcGVybCBcCisgICAgbGliZXh0dXRpbHMtdHlwZW1hcHMtdHlwZS1wZXJsIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZmlsZS9saWJmaWxlLXNsdXJwLXBlcmxfOTk5OS4xOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJmaWxlL2xpYmZpbGUtc2x1cnAtcGVybF85OTk5LjE5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NWI0YzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZmlsZS9saWJmaWxlLXNsdXJwLXBlcmxfOTk5OS4xOS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIlNsdXJwIGVudGlyZSBmaWxlcyBpbnRvIHZhcmlhYmxlcy4iCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBwcm92aWRlcyBzdWJyb3V0aW5lcyB0byByZWFkIG9yIHdyaXRlIFwKKyAgZW50aXJlIGZpbGVzIHdpdGggYSBzaW1wbGUgY2FsbC4gIEl0IGFsc28gaGFzIGEgc3Vicm91dGluZSBmb3IgXAorICByZWFkaW5nIHRoZSBsaXN0IG9mIGZpbGVuYW1lcyBpbiBhIGRpcmVjdG9yeS4gXAorIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0zNztlbmRsaW5lPTQxO21kNT0yNTVmYmQ1Zjk4YTkwZDUxZDk5MDhkMzEyNzFhZTRkNCIKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvVS9VUi9VUkkvRmlsZS1TbHVycC0ke1BWfS50YXIuZ3oiCisKK1MgPSAiJHtXT1JLRElSfS9GaWxlLVNsdXJwLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworU1JDX1VSSVttZDVzdW1dID0gIjdkNTg0Y2QxNWM0ZjhiOTU0Nzc2NWVmZjhjNGVmMDc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlMjllYmU5OTUwOTdlYmQ2ZTliYzAzMjg0NzE0Y2RmYTBjNDZkYzk0ZjZiMTRhNTY5ODA3NDdlYTMyNTM2NDMiCisKK0JCQ0xBU1NFWFRFTkQ9Im5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJodG1sL2xpYmh0bWwtcGFyc2VyLXBlcmxfMy43Mi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJodG1sL2xpYmh0bWwtcGFyc2VyLXBlcmxfMy43Mi5iYgppbmRleCAxOWI2MWQxLi5lMjAyZGUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliaHRtbC9saWJodG1sLXBhcnNlci1wZXJsXzMuNzIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmh0bWwvbGliaHRtbC1wYXJzZXItcGVybF8zLjcyLmJiCkBAIC0xLDUgKzEsNSBAQAogREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBQYXJzZXIucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4iCi0KK0hPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3JlbGVhc2UvSFRNTC1QYXJzZXIiCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibG9jYWxlL2xpYmxvY2FsZS1nZXR0ZXh0LXBlcmxfMS4wNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJsb2NhbGUvbGlibG9jYWxlLWdldHRleHQtcGVybF8xLjA3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYzcyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibG9jYWxlL2xpYmxvY2FsZS1nZXR0ZXh0LXBlcmxfMS4wNy5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkxvY2FsZTo6Z2V0dGV4dCAtIG1lc3NhZ2UgaGFuZGxpbmcgZnVuY3Rpb25zLiIKK0RFU0NSSVBUSU9OID0gIlRoZSBnZXR0ZXh0IG1vZHVsZSBwZXJtaXRzIGFjY2VzcyBmcm9tIHBlcmwgdG8gdGhlIGdldHRleHQoKSBmYW1pbHkgb2YgXAorZnVuY3Rpb25zIGZvciByZXRyaWV2aW5nIG1lc3NhZ2Ugc3RyaW5ncyBmcm9tIGRhdGFiYXNlcyBjb25zdHJ1Y3RlZCB0byBcCitpbnRlcm5hdGlvbmFsaXplIHNvZnR3YXJlLiIKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+cHZhbmRyeS9Mb2NhbGUtZ2V0dGV4dC0ke1BWfS8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMdjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT1kMDI4MjQ5YzJkMDhkY2E2Y2E2YzViYjQzYjU2ZDkyNiIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL1AvUFYvUFZBTkRSWS9Mb2NhbGUtZ2V0dGV4dC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYzY1Mjc1OGFmNjVjMjQ1MDBmMWQwNmE3NzQxNTAxOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDlkNDc5NTQ2OTdlN2MwNDIxOGY5NzI5MTViNzg3YmQxMjQ0ZDc1ZTNiZDAxNjIwYmMxNjdkNWJiYzQ5YzE1IgorCitTID0gIiR7V09SS0RJUn0vTG9jYWxlLWdldHRleHQtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtaW1lL2xpYm1pbWUtY2hhcnNldC1wZXJsXzEuMDEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibWltZS9saWJtaW1lLWNoYXJzZXQtcGVybF8xLjAxMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YjQ2ODEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibWltZS9saWJtaW1lLWNoYXJzZXQtcGVybF8xLjAxMi4yLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiTUlNRTo6Q2hhcnNldCAtIENoYXJzZXQgSW5mb3JtYXRpb24gZm9yIE1JTUUuIgorREVTQ1JJUFRJT04gPSAiTUlNRTo6Q2hhcnNldCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBjaGFyYWN0ZXIgc2V0cyB1c2VkIGZvciBNSU1FIFwKK21lc3NhZ2VzIG9uIEludGVybmV0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfm5lenVtaS9NSU1FLUNoYXJzZXQtJHtQVn0vIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTHYxKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvTi9ORS9ORVpVTUkvTUlNRS1DaGFyc2V0LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjcxNDQwNDE2Mzc2MjQ4YzMxYWEzYmVmNzUzZmFlMjhkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg3OGM3NzljMDI1NmM1OTE2NjZiZDA2YzBjZGU0YzBkNzgyMGVlZWI5OGZkMTE4MzA4MmFlZTlhMWU3YjFkMTMiCisKK1MgPSAiJHtXT1JLRElSfS9NSU1FLUNoYXJzZXQtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC4zMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBmYTA2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9kdWxlL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuMzEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIk1vZHVsZTo6QnVpbGQ6OlRpbnkgLSBBIHRpbnkgcmVwbGFjZW1lbnQgZm9yIE1vZHVsZTo6QnVpbGQiCi1ERVNDUklQVElPTiA9ICJNYW55IFBlcmwgZGlzdHJpYnV0aW9ucyB1c2UgYSBCdWlsZC5QTCBmaWxlIGluc3RlYWQgb2YgYSBcCi1NYWtlZmlsZS5QTCBmaWxlIHRvIGRyaXZlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLCBidWlsZCwgdGVzdCBhbmQgXAotaW5zdGFsbGF0aW9uLiBUcmFkaXRpb25hbGx5LCBCdWlsZC5QTCB1c2VzIE1vZHVsZTo6QnVpbGQgYXMgdGhlIHVuZGVybHlpbmcgXAotYnVpbGQgc3lzdGVtLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSwgbGlnaHR3ZWlnaHQsIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFwKLVdoZXJlYXMgTW9kdWxlOjpCdWlsZCBoYXMgb3ZlciA2LDcwMCBsaW5lcyBvZiBjb2RlOyB0aGlzIG1vZHVsZSBoYXMgbGVzcyB0aGFuIFwKLTEyMCwgeWV0IHN1cHBvcnRzIHRoZSBmZWF0dXJlcyBuZWVkZWQgYnkgbW9zdCBkaXN0cmlidXRpb25zLiIKLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+a3dpbGxpYW1zL01vZHVsZS1CdWlsZC0wLjMxLyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQzMzM5ZDhmOWQzYTk1NmVlOWVjZWIwNzcxN2VlOTVlIgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSy9LVy9LV0lMTElBTVMvTW9kdWxlLUJ1aWxkLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzZDRmZGZmZTU4ZjYyMzYyNTM3NjdlNWE3MWVkZjI5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMmY3MjNiZThkNmM3MGI0ZGRiY2EzYjVlMzJlNTJlNmU5OGVhZThmNDNlMzRkN2VkZTg3ZWZjYjE3OTZiYmI1IgotCi1TID0gIiR7V09SS0RJUn0vTW9kdWxlLUJ1aWxkLSR7UFZ9IgotCi1pbmhlcml0IGNwYW5fYnVpbGQKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgICAgIGNwYW5fYnVpbGRfZG9faW5zdGFsbAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjI0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUyM2E3YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjI0LmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiTW9kdWxlOjpCdWlsZCAtIEJ1aWxkIGFuZCBpbnN0YWxsIFBlcmwgbW9kdWxlcyIKK0RFU0NSSVBUSU9OID0gIk1hbnkgUGVybCBkaXN0cmlidXRpb25zIHVzZSBhIEJ1aWxkLlBMIGZpbGUgaW5zdGVhZCBvZiBhIFwKK01ha2VmaWxlLlBMIGZpbGUgdG8gZHJpdmUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24sIGJ1aWxkLCB0ZXN0IGFuZCBcCitpbnN0YWxsYXRpb24uIFRyYWRpdGlvbmFsbHksIEJ1aWxkLlBMIHVzZXMgTW9kdWxlOjpCdWlsZCBhcyB0aGUgdW5kZXJseWluZyBcCitidWlsZCBzeXN0ZW0uIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlLCBsaWdodHdlaWdodCwgZHJvcC1pbiByZXBsYWNlbWVudC4gXAorV2hlcmVhcyBNb2R1bGU6OkJ1aWxkIGhhcyBvdmVyIDYsNzAwIGxpbmVzIG9mIGNvZGU7IHRoaXMgbW9kdWxlIGhhcyBsZXNzIHRoYW4gXAorMTIwLCB5ZXQgc3VwcG9ydHMgdGhlIGZlYXR1cmVzIG5lZWRlZCBieSBtb3N0IGRpc3RyaWJ1dGlvbnMuIgorCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3JlbGVhc2UvTW9kdWxlLUJ1aWxkIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT05NjA7ZW5kbGluZT05NjU7bWQ1PTYyNGMwNmRiNTZhMmFmNGQ3MGNmOWVkYzI5ZmNhZTFiIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvTC9MRS9MRU9OVC9Nb2R1bGUtQnVpbGQtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImI3NGMyZjZlODRiNjBhYWQzYTNkZWZkMzBiNmYwZjRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2Y2ExNWQ3ODI0NGE3YjUwZmRiZjI3Zjg1Yzg1ZjQwMzVhYTc5OWNlN2RkMDE4YTBkOThiMzU4ZWY3YmM3ODIiCisKK1MgPSAiJHtXT1JLRElSfS9Nb2R1bGUtQnVpbGQtJHtQVn0iCisKK2luaGVyaXQgY3Bhbl9idWlsZAorCisjIEZyb206CisjIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWhzYWNrL21ldGEtY3Bhbi9ibG9iL21hc3Rlci9yZWNpcGVzLWRldmVsL21vZHVsZS1idWlsZC1wZXJsL21vZHVsZS1idWlsZC1wZXJsXzAuNDIxNi5iYgorIworZG9fcGF0Y2hfbW9kdWxlX2J1aWxkICgpIHsKKyAgICBjZCAke1N9CisgICAgc2VkIC1pIC1lICdzLG15ICRpbnRlcnByZXRlciA9ICRzZWxmLT57cHJvcGVydGllc317cGVybH07LG15ICRpbnRlcnByZXRlciA9ICIke2JpbmRpcn0vcGVybCI7LGcnIGxpYi9Nb2R1bGUvQnVpbGQvQmFzZS5wbQorfQorCitkb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJkb19wYXRjaF9tb2R1bGVfYnVpbGQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtdGlueS1wZXJsXzAuMDM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vZHVsZS9saWJtb2R1bGUtYnVpbGQtdGlueS1wZXJsXzAuMDM2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjFmMTdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXRpbnktcGVybF8wLjAzNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiTW9kdWxlOjpCdWlsZDo6VGlueSAtIEEgdGlueSByZXBsYWNlbWVudCBmb3IgTW9kdWxlOjpCdWlsZCIKLURFU0NSSVBUSU9OID0gIk1hbnkgUGVybCBkaXN0cmlidXRpb25zIHVzZSBhIEJ1aWxkLlBMIGZpbGUgaW5zdGVhZCBvZiBhIFwKLU1ha2VmaWxlLlBMIGZpbGUgdG8gZHJpdmUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24sIGJ1aWxkLCB0ZXN0IGFuZCBcCi1pbnN0YWxsYXRpb24uIFRyYWRpdGlvbmFsbHksIEJ1aWxkLlBMIHVzZXMgTW9kdWxlOjpCdWlsZCBhcyB0aGUgdW5kZXJseWluZyBcCi1idWlsZCBzeXN0ZW0uIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlLCBsaWdodHdlaWdodCwgZHJvcC1pbiByZXBsYWNlbWVudC4gXAotV2hlcmVhcyBNb2R1bGU6OkJ1aWxkIGhhcyBvdmVyIDYsNzAwIGxpbmVzIG9mIGNvZGU7IHRoaXMgbW9kdWxlIGhhcyBsZXNzIHRoYW4gXAotMTIwLCB5ZXQgc3VwcG9ydHMgdGhlIGZlYXR1cmVzIG5lZWRlZCBieSBtb3N0IGRpc3RyaWJ1dGlvbnMuIgotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35sZW9udC9Nb2R1bGUtQnVpbGQtVGlueS8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hYWNhNjE0MTI5NjJjZjk3MmFlYzBjZGFkOTlkMGE4NCIKLQotREVQRU5EUyA9ICJsaWJleHR1dGlscy1jb25maWctcGVybC1uYXRpdmUgbGliZXh0dXRpbHMtaGVscGVycy1wZXJsLW5hdGl2ZSBsaWJleHR1dGlscy1pbnN0YWxscGF0aHMtcGVybC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9ML0xFL0xFT05UL01vZHVsZS1CdWlsZC1UaW55LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZmM5MmM2NTUxNThjZTYyM2YwY2VkOTRmNGVmMDJlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjcwNmJmMzVlMDgwZTVhZjIwY2NjZjRmZDU2NWNjOGFmOWMyYTFlMmUyMDc1Y2VlMGE3ZGU0MmNmMGQ2ZGY5IgotCi1TID0gIiR7V09SS0RJUn0vTW9kdWxlLUJ1aWxkLVRpbnktJHtQVn0iCi0KLWluaGVyaXQgY3Bhbl9idWlsZAotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgY3Bhbl9idWlsZF9kb19pbnN0YWxsCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIiBsaWJleHR1dGlscy1jb25maWctcGVybCBcCi0gICAgICAgICAgICAgICAgICAgbGliZXh0dXRpbHMtaGVscGVycy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBsaWJleHR1dGlscy1pbnN0YWxscGF0aHMtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUteHNsb2FkZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtaW8taGFuZGxlIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10YXAtaGFybmVzcy1lbnYgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jcGFuIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jYnVpbGRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGV4dC1wYXJzZXdvcmRzIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1sb2FkIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1wYXJzZXhzIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wb2QtbWFuIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1qc29uLXBwIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9kdWxlL2xpYm1vZHVsZS1idWlsZC10aW55LXBlcmxfMC4wMzkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9kdWxlL2xpYm1vZHVsZS1idWlsZC10aW55LXBlcmxfMC4wMzkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhNTZlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb2R1bGUvbGlibW9kdWxlLWJ1aWxkLXRpbnktcGVybF8wLjAzOS5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIk1vZHVsZTo6QnVpbGQ6OlRpbnkgLSBBIHRpbnkgcmVwbGFjZW1lbnQgZm9yIE1vZHVsZTo6QnVpbGQiCitERVNDUklQVElPTiA9ICJNYW55IFBlcmwgZGlzdHJpYnV0aW9ucyB1c2UgYSBCdWlsZC5QTCBmaWxlIGluc3RlYWQgb2YgYSBcCitNYWtlZmlsZS5QTCBmaWxlIHRvIGRyaXZlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLCBidWlsZCwgdGVzdCBhbmQgXAoraW5zdGFsbGF0aW9uLiBUcmFkaXRpb25hbGx5LCBCdWlsZC5QTCB1c2VzIE1vZHVsZTo6QnVpbGQgYXMgdGhlIHVuZGVybHlpbmcgXAorYnVpbGQgc3lzdGVtLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSwgbGlnaHR3ZWlnaHQsIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFwKK1doZXJlYXMgTW9kdWxlOjpCdWlsZCBoYXMgb3ZlciA2LDcwMCBsaW5lcyBvZiBjb2RlOyB0aGlzIG1vZHVsZSBoYXMgbGVzcyB0aGFuIFwKKzEyMCwgeWV0IHN1cHBvcnRzIHRoZSBmZWF0dXJlcyBuZWVkZWQgYnkgbW9zdCBkaXN0cmlidXRpb25zLiIKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bGVvbnQvTW9kdWxlLUJ1aWxkLVRpbnkvIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTdiODEwMGYwYjY0OGNkMzdmYmMzNzI1ZmUzYzExMWEiCisKK0RFUEVORFMgPSAibGliZXh0dXRpbHMtY29uZmlnLXBlcmwtbmF0aXZlIGxpYmV4dHV0aWxzLWhlbHBlcnMtcGVybC1uYXRpdmUgbGliZXh0dXRpbHMtaW5zdGFsbHBhdGhzLXBlcmwtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvTC9MRS9MRU9OVC9Nb2R1bGUtQnVpbGQtVGlueS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMjMzMmM5MGMxNzQ1NDEwN2ZlYTNmMjYxNGUxMWEzYTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Q1ODBmZjZhY2UwY2JlNTU1YmYzNmI4NmRjOGVhMjMyNTgxNTMwY2JlYWFlYTA5YmNjYjU3YjU1Nzk3ZjExYyIKKworUyA9ICIke1dPUktESVJ9L01vZHVsZS1CdWlsZC1UaW55LSR7UFZ9IgorCitpbmhlcml0IGNwYW5fYnVpbGQKKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGNwYW5fYnVpbGRfZG9faW5zdGFsbAorfQorCitSREVQRU5EU18ke1BOfSA9ICIgbGliZXh0dXRpbHMtY29uZmlnLXBlcmwgXAorICAgICAgICAgICAgICAgICAgIGxpYmV4dHV0aWxzLWhlbHBlcnMtcGVybCBcCisgICAgICAgICAgICAgICAgICAgbGliZXh0dXRpbHMtaW5zdGFsbHBhdGhzLXBlcmwgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXhzbG9hZGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWlvLWhhbmRsZSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGFwLWhhcm5lc3MtZW52IFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1pcGMtb3BlbjMgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY3BhbiBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY2J1aWxkZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbG9hZCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtcGFyc2V4cyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtcG9kLW1hbiBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtanNvbi1wcCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwMDAwMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDAwMDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMTE5ZmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwMDAwMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiTW9vIC0gTWluaW1hbGlzdCBPYmplY3QgT3JpZW50YXRpb24gKHdpdGggTW9vc2UgY29tcGF0aWJpbGl0eSkiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSB1cyBhbiBleHRyZW1lbHkgbGlnaHQtd2VpZ2h0IHN1YnNldCBvZiBcIk1vb3NlXCIgXAotb3B0aW1pc2VkIGZvciByYXBpZCBzdGFydHVwIGFuZCBcInBheSBvbmx5IGZvciB3aGF0IHlvdSB1c2VcIi4iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL21ldGFwYW4ub3JnL3JlbGVhc2UvTW9vLyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9Njg4O2VuZGxpbmU9NzMzO21kNT0yN2VmZWRkMTc1ZWVhZGRiZDE4ZjRlMzU3MmJkNzJhOCIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvTW9vLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4Yjg0YTcyODlmYzYyNDdkZTVlYzVkMTUxMTA1ZmQ2YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYjRiZmE3NTFmMGRkMDZiZDcwZjJlMDZlODExZjg1YTY0MDUwMWYyNjNjMjI4YThlZmFmYmY2YjI2NjkxZmQ0IgotCi1TID0gIiR7V09SS0RJUn0vTW9vLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotUkRFUEVORFNfJHtQTn0gPSAiIGxpYmNsYXNzLW1ldGhvZC1tb2RpZmllcnMtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgbGliZGV2ZWwtZ2xvYmFsZGVzdHJ1Y3Rpb24tcGVybCBcCi0gICAgICAgICAgICAgICAgICAgbGlibW9kdWxlLXJ1bnRpbWUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgbGlicm9sZS10aW55LXBlcmwgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbXJvIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCi0iCi0KLVJQUk9WSURFU18ke1BOfSA9ICIgbGlibWV0aG9kLWlubGluZXItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1hY2Nlc3Nvci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWJ1aWxkYWxsLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtY29uc3RydWN0b3ItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1kZW1vbGlzaGFsbC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtb28taGFuZGxlbW9vc2UtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1oYW5kbGVtb29zZS1mYWtlbWV0YWNsYXNzLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtb28tb2JqZWN0LXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtb28tcm9sZS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlic3ViLWRlZmVyLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJzdWItcXVvdGUtcGVybCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwMzAwMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDMwMDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBmZTQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDMwMDIuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJNb28gLSBNaW5pbWFsaXN0IE9iamVjdCBPcmllbnRhdGlvbiAod2l0aCBNb29zZSBjb21wYXRpYmlsaXR5KSIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHVzIGFuIGV4dHJlbWVseSBsaWdodC13ZWlnaHQgc3Vic2V0IG9mIFwiTW9vc2VcIiBcCitvcHRpbWlzZWQgZm9yIHJhcGlkIHN0YXJ0dXAgYW5kIFwicGF5IG9ubHkgZm9yIHdoYXQgeW91IHVzZVwiLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vbWV0YXBhbi5vcmcvcmVsZWFzZS9Nb28vIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT03MzE7ZW5kbGluZT03NzY7bWQ1PTI3ZWZlZGQxNzVlZWFkZGJkMThmNGUzNTcyYmQ3MmE4IgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSC9IQS9IQUFSRy9Nb28tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImU5ZjFmMzE1OTU1NWVjZWJjZDA2MmU5OThmMjk3YTk0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzZTk3NDFlNzliYWE2M2U4OWY1YTA4NzA2Y2Q4MGQxOGMwYTVhMzdlM2Q4OTg4NDdlMDAyMzEwZTA2NTgyZjEiCisKK1MgPSAiJHtXT1JLRElSfS9Nb28tJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSA9ICIgbGliY2xhc3MtbWV0aG9kLW1vZGlmaWVycy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICBsaWJkZXZlbC1nbG9iYWxkZXN0cnVjdGlvbi1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICBsaWJtb2R1bGUtcnVudGltZS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICBsaWJyb2xlLXRpbnktcGVybCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1tcm8gXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKKyIKKworUlBST1ZJREVTXyR7UE59ID0gIiBsaWJtZXRob2QtaW5saW5lci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWFjY2Vzc29yLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtYnVpbGRhbGwtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1jb25zdHJ1Y3Rvci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWRlbW9saXNoYWxsLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28tcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1vby1oYW5kbGVtb29zZS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLWhhbmRsZW1vb3NlLWZha2VtZXRhY2xhc3MtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1vby1vYmplY3QtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1vby1yb2xlLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJzdWItZGVmZXItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnN1Yi1xdW90ZS1wZXJsIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjA2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4wNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzcwMmU0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjA2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBETlMucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4iCi0KLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9MTBiMWZhZTBjNDBhMTYyN2JkZjBiMmE3YWM0MzE2MzIiCi0KLURFUEVORFMgKz0gInBlcmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTi9OTC9OTE5FVExBQlMvTmV0LUROUy0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZDE3YWJkNmU3ZTNiYTBhOGRiNDI2NDllMzRhNTNhZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzU4N2I3ODBjYTM2YTgyNTUxODBhYzcyM2Q0ZjZlMTE0MDc1MDRiNWI5YTE4ZTBlYzA5OGExMWMyMThhNTFlIgotCi1TID0gIiR7V09SS0RJUn0vTmV0LUROUy0ke1BWfSIKLQotRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLWluaGVyaXQgY3BhbgotCi1kb19jb21waWxlKCkgewotICAgIGV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCi0gICAgY3Bhbl9kb19jb21waWxlCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkODk4NDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjEwLmJiCkBAIC0wLDAgKzEsMjUgQEAKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgRE5TLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXQtZG5zLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTkyZDkzZDhjNWJmMjJkZTc3NTc4NTMxZTI4M2RkMjE5IgorCitERVBFTkRTICs9ICJwZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL04vTkwvTkxORVRMQUJTL05ldC1ETlMtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGZhNDViMGRmZTc5NjY3NDUzYzE1NTNlMTZlNTJjMmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWJlNTNlN2Y0MzMxMzhmYjlhNzg0NWI0ZWRhZTZiOGY0ZGMyMjdkYTk3ZWFmNmIzNDc1ODQ4MTZlYzYzYTUyNSIKKworUyA9ICIke1dPUktESVJ9L05ldC1ETlMtJHtQVn0iCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgorCitpbmhlcml0IGNwYW4KKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgorICAgIGNwYW5fZG9fY29tcGlsZQorfQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybF8xLjgwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44MC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y2MjFhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybF8xLjgwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXQ6OlNTTGVheSAtIFBlcmwgZXh0ZW5zaW9uIGZvciB1c2luZyBPcGVuU1NMIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgb2ZmZXJzIHNvbWUgaGlnaCBsZXZlbCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyBcCi13ZWIgcGFnZXMgb24gU1NMIHNlcnZlcnMgKGZvciBzeW1tZXRyeSwgc2FtZSBBUEkgaXMgb2ZmZXJlZCBmb3IgXAotYWNjZXNzaW5nIGh0dHAgc2VydmVycywgdG9vKSwgYSBzc2xjYXQoKSBmdW5jdGlvbiBmb3Igd3JpdGluZyB5b3VyIG93biBcCi1jbGllbnRzLCBhbmQgZmluYWxseSBhY2Nlc3MgdG8gdGhlIFNTTCBhcGkgb2YgU1NMZWF5L09wZW5TU0wgcGFja2FnZSBcCi1zbyB5b3UgY2FuIHdyaXRlIHNlcnZlcnMgb3IgY2xpZW50cyBmb3IgbW9yZSBjb21wbGljYXRlZCBhcHBsaWNhdGlvbnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L05ldC1TU0xlYXkvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNzQ7ZW5kbGluZT0yOTQ7bWQ1PTY3ZDY3MDk1ZDgzZTMzOWRhNTM4YTA4MmZhZDVmMzhlIgotCi1ERVBFTkRTID0gIm9wZW5zc2wgemxpYiBvcGVuc3NsLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1lcnJubyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1taW1lLWJhc2U2NCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9NL01JL01JS0VNL05ldC1TU0xlYXktJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImIxZTBmZDk2ZDdmM2JlNTc1ODAzNzcyMjZjYTVmMDg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE1NDFhNjZkNTlmYzVmOWJiN2FmMDlkM2EwYjY4MzA1ZTRjNDNiYTk0ODhiMTI5MTU3MjhmZDI4MmVhMDFiOTMiCi0KLVMgPSAiJHtXT1JLRElSfS9OZXQtU1NMZWF5LSR7UFZ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QKLQotRVhUUkFfQ1BBTkZMQUdTID0gIkxJQlM9Jy1MPSR7U1RBR0lOR19MSUJESVJ9IC1MPSR7U1RBR0lOR19CQVNFTElCRElSfScgXAotICAgICAgICAgICAgICAgICAgIElOQz0tST0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgICAgJy1sc3NsIC1sY3J5cHRvIC1seicgXAotICAgICAgICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGNwIC1yICR7Qn0vdCAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotRklMRVNfJHtQTn0tZGJnID0rICIke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vTmV0L1NTTGVheS8uZGVidWcvIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICIgcGVybCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LXNzbGVheS1wZXJsXzEuODEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybF8xLjgxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NjFiNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybF8xLjgxLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiTmV0OjpTU0xlYXkgLSBQZXJsIGV4dGVuc2lvbiBmb3IgdXNpbmcgT3BlblNTTCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIG9mZmVycyBzb21lIGhpZ2ggbGV2ZWwgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgXAord2ViIHBhZ2VzIG9uIFNTTCBzZXJ2ZXJzIChmb3Igc3ltbWV0cnksIHNhbWUgQVBJIGlzIG9mZmVyZWQgZm9yIFwKK2FjY2Vzc2luZyBodHRwIHNlcnZlcnMsIHRvbyksIGEgc3NsY2F0KCkgZnVuY3Rpb24gZm9yIHdyaXRpbmcgeW91ciBvd24gXAorY2xpZW50cywgYW5kIGZpbmFsbHkgYWNjZXNzIHRvIHRoZSBTU0wgYXBpIG9mIFNTTGVheS9PcGVuU1NMIHBhY2thZ2UgXAorc28geW91IGNhbiB3cml0ZSBzZXJ2ZXJzIG9yIGNsaWVudHMgZm9yIG1vcmUgY29tcGxpY2F0ZWQgYXBwbGljYXRpb25zLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9OZXQtU1NMZWF5LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9Mjc0O2VuZGxpbmU9Mjk0O21kNT02N2Q2NzA5NWQ4M2UzMzlkYTUzOGEwODJmYWQ1ZjM4ZSIKKworREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgb3BlbnNzbC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAicGVybC1tb2R1bGUtY2FycCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXJybm8gXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXNvY2tldCBcCisgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTS9NSS9NSUtFTS9OZXQtU1NMZWF5LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MTkzMmNlMzRkNGRiNDRkZThkMDAzOTljMzQwNTc5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMGNiYjYxNzRlNjI4YjQyMTc4ZTE0NDVjOWZkNWEzYzVhZTJjZmQ2YTVhNDNlMDM2MTBiYTE0Nzg2ZjIxYjdkIgorCitTID0gIiR7V09SS0RJUn0vTmV0LVNTTGVheS0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0CisKK0VYVFJBX0NQQU5GTEFHUyA9ICJMSUJTPSctTD0ke1NUQUdJTkdfTElCRElSfSAtTD0ke1NUQUdJTkdfQkFTRUxJQkRJUn0nIFwKKyAgICAgICAgICAgICAgICAgICBJTkM9LUk9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgICAgICctbHNzbCAtbGNyeXB0byAtbHonIFwKKyAgICAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBjcCAtciAke0J9L3QgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0ZJTEVTXyR7UE59LWRiZyA9KyAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL05ldC9TU0xlYXkvLmRlYnVnLyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiIHBlcmwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlicm9sZS9saWJyb2xlLXRpbnktcGVybF8yLjAwMDAwMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJyb2xlL2xpYnJvbGUtdGlueS1wZXJsXzIuMDAwMDAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODM2MGM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJyb2xlL2xpYnJvbGUtdGlueS1wZXJsXzIuMDAwMDAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJSb2xlOjpUaW55IC0gUm9sZXMuIExpa2UgYSBub3V2ZWxsZSBjb3VzaW5lIHBvcnRpb24gc2l6ZSBvZiBNb29zZS4iCi1ERVNDUklQVElPTiA9ICJcIlJvbGU6OlRpbnlcIiBpcyBhIG1pbmltYWxpc3Qgcm9sZSBjb21wb3NpdGlvbiB0b29sLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9wb2QvUm9sZTo6VGlueSIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTcyO2VuZGxpbmU9MjA5O21kNT0yNmRmN2U3YzIwNTUxZmIxOTA2ZTIyODY2MjRmMGI3MSIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvUm9sZS1UaW55LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMzUwZjFmOGMxMzY1MmJmODVkYTE3MjM4MGIzOWVjOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMTg4MzQxMGE3Yzg1ZDZkYzc1MDFjNzE4YjFmODNlZGJhMDEzYTdiOWJiY2NmMDMzOGExMDMzYzM5MWYyOTZkIgotCi1TID0gIiR7V09SS0RJUn0vUm9sZS1UaW55LSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtd2FybmluZ3MgXAotIgotCi1SUFJPVklERVNfJHtQTn0gPSAiIGxpYnJvbGUtdGlueS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlicm9sZS10aW55LXdpdGgtcGVybCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnJvbGUvbGlicm9sZS10aW55LXBlcmxfMi4wMDAwMDUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlicm9sZS9saWJyb2xlLXRpbnktcGVybF8yLjAwMDAwNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjg0ZjY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnJvbGUvbGlicm9sZS10aW55LXBlcmxfMi4wMDAwMDUuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJSb2xlOjpUaW55IC0gUm9sZXMuIExpa2UgYSBub3V2ZWxsZSBjb3VzaW5lIHBvcnRpb24gc2l6ZSBvZiBNb29zZS4iCitERVNDUklQVElPTiA9ICJcIlJvbGU6OlRpbnlcIiBpcyBhIG1pbmltYWxpc3Qgcm9sZSBjb21wb3NpdGlvbiB0b29sLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9wb2QvUm9sZTo6VGlueSIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTc3O2VuZGxpbmU9MjE0O21kNT0yNmRmN2U3YzIwNTUxZmIxOTA2ZTIyODY2MjRmMGI3MSIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvUm9sZS1UaW55LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjOGM1Y2YxZTAyZDJlMGExZWQyMjUzMGI1NWI2N2Q2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTNhMjliNjIxZTAyOWJmMDIxOGQwMTU0ZDVkZmRmNmVjNTAyYWZjNDlhZGVlYWRhZTZhZmQwYzcwMDYzMTE1IgorCitTID0gIiR7V09SS0RJUn0vUm9sZS1UaW55LSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtd2FybmluZ3MgXAorIgorCitSUFJPVklERVNfJHtQTn0gPSAiIGxpYnJvbGUtdGlueS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlicm9sZS10aW55LXdpdGgtcGVybCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN0cmljdHVyZXMvbGlic3RyaWN0dXJlcy1wZXJsXzIuMDAwMDAyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN0cmljdHVyZXMvbGlic3RyaWN0dXJlcy1wZXJsXzIuMDAwMDAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWE2ZTUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJzdHJpY3R1cmVzL2xpYnN0cmljdHVyZXMtcGVybF8yLjAwMDAwMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAic3RyaWN0dXJlcyAtIHR1cm4gb24gc3RyaWN0IGFuZCBtYWtlIGFsbCB3YXJuaW5ncyBmYXRhbCIKLURFU0NSSVBUSU9OID0gIkkndmUgYmVlbiB3cml0aW5nIHRoZSBlcXVpdmFsZW50IG9mIHRoaXMgbW9kdWxlIGF0IHRoZSB0b3AgXAotb2YgbXkgY29kZSBmb3IgYWJvdXQgYSB5ZWFyIG5vdy4gSSBmaWd1cmVkIGl0IHdhcyB0aW1lIHRvIG1ha2UgaXQgc2hvcnRlci4gXAotXAotVGhpbmdzIGxpa2UgdGhlIGltcG9ydGVyIGluIFwidXNlIE1vb3NlXCIgZG9uJ3QgaGVscCBtZSBiZWNhdXNlIHRoZXkgdHVybiBcCi13YXJuaW5ncyBvbiBidXQgZG9uJ3QgbWFrZSB0aGVtIGZhdGFsIC0tIHdoaWNoIGZyb20gbXkgcG9pbnQgb2YgdmlldyBpcyBcCi11c2VsZXNzIGJlY2F1c2UgSSB3YW50IGFuIGV4Y2VwdGlvbiB0byB0ZWxsIG1lIG15IGNvZGUgaXNuJ3Qgd2FybmluZ3MtY2xlYW4uIFwKLVwKLUFueSB0aW1lIEkgc2VlIGEgd2FybmluZyBmcm9tIG15IGNvZGUsIHRoYXQgaW5kaWNhdGVzIGEgbWlzdGFrZS4gXAotXAotQW55IHRpbWUgbXkgY29kZSBlbmNvdW50ZXJzIGEgbWlzdGFrZSwgSSB3YW50IGEgY3Jhc2ggLS0gbm90IHNwZXcgdG8gU1RERVJSIFwKLWFuZCB0aGVuIHVua25vd24gKGFuZCBwcm9iYWJseSB1bmRlc2lyZWQpIHN1YnNlcXVlbnQgYmVoYXZpb3VyLiBcCi1cCi1JIGFsc28gd2FudCB0byBlbnN1cmUgdGhhdCBvYnZpb3VzIGNvZGluZyBtaXN0YWtlcywgbGlrZSBpbmRpcmVjdCBvYmplY3QgXAotc3ludGF4IChhbmQgbm90IHNvIG9idmlvdXMgbWlzdGFrZXMgdGhhdCBjYXVzZSB0aGluZ3MgdG8gYWNjaWRlbnRhbGx5IGNvbXBpbGUgXAotYXMgc3VjaCkgZ2V0IGNhdWdodCwgYnV0IG5vdCBhdCB0aGUgY29zdCBvZiBhbiBYUyBkZXBlbmRlbmN5IGFuZCBub3QgYXQgdGhlIFwKLWNvc3Qgb2YgYmxvd2luZyB0aGluZ3MgdXAgb24gYW5vdGhlciBtYWNoaW5lLiBcCi1cCi1UaGVyZWZvcmUsIFwic3RyaWN0dXJlc1wiIHR1cm5zIG9uIGFkZGl0aW9uYWwgY2hlY2tpbmcsIGJ1dCBvbmx5IHdoZW4gaXQgXAotdGhpbmtzIGl0J3MgcnVubmluZyBpbiBhIHRlc3QgZmlsZSBpbiBhIFZDUyBjaGVja291dCAtLSBhbHRob3VnaCBpZiB0aGlzIFwKLWNhdXNlcyB1bmRlc2lyZWQgYmVoYXZpb3VyIHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZyB0aGUgXAotUEVSTF9TVFJJQ1RVUkVTX0VYVFJBIGVudmlyb25tZW50IHZhcmlhYmxlLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9wb2Qvc3RyaWN0dXJlcyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjQ2O2VuZGxpbmU9MjYyO21kNT00M2JlNTU4Y2Y0ZjE5ODIzY2RkNmFmMjIxMzVjZjVmOCIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvc3RyaWN0dXJlcy0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZmIxZmFkYTgyNjA5OTJiYzg1ZTEyNmMyMWZmY2M2ZDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTMwMzU1ZGNiM2FmZDhjM2M4MjEzYzI0YjkyNGU3MWRlYjdlMWUxMTk3ZGE4ZjkwYzVhZTE5MTc2NmFhNDEwMCIKLQotUyA9ICIke1dPUktESVJ9L3N0cmljdHVyZXMtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlic3RyaWN0dXJlcy9saWJzdHJpY3R1cmVzLXBlcmxfMi4wMDAwMDMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlic3RyaWN0dXJlcy9saWJzdHJpY3R1cmVzLXBlcmxfMi4wMDAwMDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY4MDhkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJzdHJpY3R1cmVzL2xpYnN0cmljdHVyZXMtcGVybF8yLjAwMDAwMy5iYgpAQCAtMCwwICsxLDQ1IEBACitTVU1NQVJZID0gInN0cmljdHVyZXMgLSB0dXJuIG9uIHN0cmljdCBhbmQgbWFrZSBhbGwgd2FybmluZ3MgZmF0YWwiCitERVNDUklQVElPTiA9ICJJJ3ZlIGJlZW4gd3JpdGluZyB0aGUgZXF1aXZhbGVudCBvZiB0aGlzIG1vZHVsZSBhdCB0aGUgdG9wIFwKK29mIG15IGNvZGUgZm9yIGFib3V0IGEgeWVhciBub3cuIEkgZmlndXJlZCBpdCB3YXMgdGltZSB0byBtYWtlIGl0IHNob3J0ZXIuIFwKK1wKK1RoaW5ncyBsaWtlIHRoZSBpbXBvcnRlciBpbiBcInVzZSBNb29zZVwiIGRvbid0IGhlbHAgbWUgYmVjYXVzZSB0aGV5IHR1cm4gXAord2FybmluZ3Mgb24gYnV0IGRvbid0IG1ha2UgdGhlbSBmYXRhbCAtLSB3aGljaCBmcm9tIG15IHBvaW50IG9mIHZpZXcgaXMgXAordXNlbGVzcyBiZWNhdXNlIEkgd2FudCBhbiBleGNlcHRpb24gdG8gdGVsbCBtZSBteSBjb2RlIGlzbid0IHdhcm5pbmdzLWNsZWFuLiBcCitcCitBbnkgdGltZSBJIHNlZSBhIHdhcm5pbmcgZnJvbSBteSBjb2RlLCB0aGF0IGluZGljYXRlcyBhIG1pc3Rha2UuIFwKK1wKK0FueSB0aW1lIG15IGNvZGUgZW5jb3VudGVycyBhIG1pc3Rha2UsIEkgd2FudCBhIGNyYXNoIC0tIG5vdCBzcGV3IHRvIFNUREVSUiBcCithbmQgdGhlbiB1bmtub3duIChhbmQgcHJvYmFibHkgdW5kZXNpcmVkKSBzdWJzZXF1ZW50IGJlaGF2aW91ci4gXAorXAorSSBhbHNvIHdhbnQgdG8gZW5zdXJlIHRoYXQgb2J2aW91cyBjb2RpbmcgbWlzdGFrZXMsIGxpa2UgaW5kaXJlY3Qgb2JqZWN0IFwKK3N5bnRheCAoYW5kIG5vdCBzbyBvYnZpb3VzIG1pc3Rha2VzIHRoYXQgY2F1c2UgdGhpbmdzIHRvIGFjY2lkZW50YWxseSBjb21waWxlIFwKK2FzIHN1Y2gpIGdldCBjYXVnaHQsIGJ1dCBub3QgYXQgdGhlIGNvc3Qgb2YgYW4gWFMgZGVwZW5kZW5jeSBhbmQgbm90IGF0IHRoZSBcCitjb3N0IG9mIGJsb3dpbmcgdGhpbmdzIHVwIG9uIGFub3RoZXIgbWFjaGluZS4gXAorXAorVGhlcmVmb3JlLCBcInN0cmljdHVyZXNcIiB0dXJucyBvbiBhZGRpdGlvbmFsIGNoZWNraW5nLCBidXQgb25seSB3aGVuIGl0IFwKK3RoaW5rcyBpdCdzIHJ1bm5pbmcgaW4gYSB0ZXN0IGZpbGUgaW4gYSBWQ1MgY2hlY2tvdXQgLS0gYWx0aG91Z2ggaWYgdGhpcyBcCitjYXVzZXMgdW5kZXNpcmVkIGJlaGF2aW91ciB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlIFwKK1BFUkxfU1RSSUNUVVJFU19FWFRSQSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iCisKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL3N0cmljdHVyZXMiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI0NjtlbmRsaW5lPTI2MjttZDU9NDNiZTU1OGNmNGYxOTgyM2NkZDZhZjIyMTM1Y2Y1ZjgiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9IL0hBL0hBQVJHL3N0cmljdHVyZXMtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjc4MjQ0Y2ZhYjYxNjhkY2YxOTYzNzBkMWUyMzA5NTM2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI3ZjhlYTA5NmE1MjFlOTc1NGQzNmVhMzI4ODljMmNkYTI4MzQ2ZDA0ZTNlMzk5ZTdlYTExOGQxODJkYmFmMjIiCisKK1MgPSAiJHtXT1JLRElSfS9zdHJpY3R1cmVzLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN1Yi9saWJzdWItZXhwb3J0ZXItcHJvZ3Jlc3NpdmUtcGVybF8wLjAwMTAxMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJzdWIvbGlic3ViLWV4cG9ydGVyLXByb2dyZXNzaXZlLXBlcmxfMC4wMDEwMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYTEzMDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN1Yi9saWJzdWItZXhwb3J0ZXItcHJvZ3Jlc3NpdmUtcGVybF8wLjAwMTAxMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiU3ViOjpFeHBvcnRlcjo6UHJvZ3Jlc3NpdmUgLSBPbmx5IHVzZSBTdWI6OkV4cG9ydGVyIGlmIHlvdSBuZWVkIGl0LiIKLURFU0NSSVBUSU9OID0gIlwiU3ViOjpFeHBvcnRlclwiIGlzIGFuIGluY3JlZGlibHkgcG93ZXJmdWwgbW9kdWxlLCBidXQgd2l0aCBcCi10aGF0IHBvd2VyIGNvbWVzIGdyZWF0IHJlc3BvbnNpYmlsaXR5LCBlci0gYXMgd2VsbCBhcyBzb21lIHJ1bnRpbWUgcGVuYWx0aWVzLiBcCi1UaGlzIG1vZHVsZSBpcyBhIFwiU3ViOjpFeHBvcnRlclwiIHdyYXBwZXIgdGhhdCB3aWxsIGxldCB5b3VyIHVzZXJzIGp1c3QgdXNlIFwKLVwiRXhwb3J0ZXJcIiBpZiBhbGwgdGhleSBhcmUgZG9pbmcgaXMgcGlja2luZyBleHBvcnRzLCBidXQgdXNlIFwKLVwiU3ViOjpFeHBvcnRlclwiIGlmIHlvdXIgdXNlcnMgdHJ5IHRvIHVzZSBcIlN1Yjo6RXhwb3J0ZXInc1wiIG1vcmUgYWR2YW5jZWQgXAotZmVhdHVyZXMsIGxpa2UgcmVuYW1pbmcgZXhwb3J0cywgaWYgdGhleSB0cnkgdG8gdXNlIHRoZW0uIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9TdWItRXhwb3J0ZXItUHJvZ3Jlc3NpdmUvIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT01MTtlbmRsaW5lPTUzO21kNT1hMTcxZDJlOWY4Njg4YTQ0ZTVmMWI2ZGNjNjIwMjllNiIKLQotREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtdGVzdC1tb3JlIgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvRi9GUi9GUkVXL1N1Yi1FeHBvcnRlci1Qcm9ncmVzc2l2ZS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYmI1MGIzYmExNTM4OTAyYjE5N2MwNDgxOGE4NDIzMGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDYxOGM2ZTY5YzZjMDU0MGM0MWU3NTYwZDUxOTgxNDA3YTZhMDc2OGYxMzMwYmVmNmQ2YWMzYzZmMWZhN2MwNiIKLQotUyA9ICIke1dPUktESVJ9L1N1Yi1FeHBvcnRlci1Qcm9ncmVzc2l2ZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxpc3QtdXRpbCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnN1Yi9saWJzdWItZXhwb3J0ZXItcHJvZ3Jlc3NpdmUtcGVybF8wLjAwMTAxMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJzdWIvbGlic3ViLWV4cG9ydGVyLXByb2dyZXNzaXZlLXBlcmxfMC4wMDEwMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRkMTljMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJzdWIvbGlic3ViLWV4cG9ydGVyLXByb2dyZXNzaXZlLXBlcmxfMC4wMDEwMTMuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJTdWI6OkV4cG9ydGVyOjpQcm9ncmVzc2l2ZSAtIE9ubHkgdXNlIFN1Yjo6RXhwb3J0ZXIgaWYgeW91IG5lZWQgaXQuIgorREVTQ1JJUFRJT04gPSAiXCJTdWI6OkV4cG9ydGVyXCIgaXMgYW4gaW5jcmVkaWJseSBwb3dlcmZ1bCBtb2R1bGUsIGJ1dCB3aXRoIFwKK3RoYXQgcG93ZXIgY29tZXMgZ3JlYXQgcmVzcG9uc2liaWxpdHksIGVyLSBhcyB3ZWxsIGFzIHNvbWUgcnVudGltZSBwZW5hbHRpZXMuIFwKK1RoaXMgbW9kdWxlIGlzIGEgXCJTdWI6OkV4cG9ydGVyXCIgd3JhcHBlciB0aGF0IHdpbGwgbGV0IHlvdXIgdXNlcnMganVzdCB1c2UgXAorXCJFeHBvcnRlclwiIGlmIGFsbCB0aGV5IGFyZSBkb2luZyBpcyBwaWNraW5nIGV4cG9ydHMsIGJ1dCB1c2UgXAorXCJTdWI6OkV4cG9ydGVyXCIgaWYgeW91ciB1c2VycyB0cnkgdG8gdXNlIFwiU3ViOjpFeHBvcnRlcidzXCIgbW9yZSBhZHZhbmNlZCBcCitmZWF0dXJlcywgbGlrZSByZW5hbWluZyBleHBvcnRzLCBpZiB0aGV5IHRyeSB0byB1c2UgdGhlbS4iCisKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL1N1Yi1FeHBvcnRlci1Qcm9ncmVzc2l2ZS8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMDNmYTk3MDY2MjM1OWE0M2FjMmMyOTYxMTA4YjBmMSIKKworREVQRU5EU18ke1BOfSA9ICIgcGVybC1tb2R1bGUtdGVzdC1tb3JlIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvRi9GUi9GUkVXL1N1Yi1FeHBvcnRlci1Qcm9ncmVzc2l2ZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiNzJjZjZhY2RkMmEwYThiMTA1ODIxYTRkYjk4ZTRlYmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDUzNWI3OTU0ZDY0ZGExYWMxMzA1YjFmYWRmOTgyMDI3NjllMzU5OTM3Njg1NGIyY2VkOTBjMzgyYmVhYzA1NiIKKworUyA9ICIke1dPUktESVJ9L1N1Yi1FeHBvcnRlci1Qcm9ncmVzc2l2ZS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK1JERVBFTkRTXyR7UE59ICs9ICIgcGVybC1tb2R1bGUtY2FycCBcCisgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxpc3QtdXRpbCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlcm0vbGlidGVybS1yZWFka2V5LXBlcmxfMi4zNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXJtL2xpYnRlcm0tcmVhZGtleS1wZXJsXzIuMzcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI3NjY4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXJtL2xpYnRlcm0tcmVhZGtleS1wZXJsXzIuMzcuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJUZXJtOjpSZWFkS2V5IC0gQSBwZXJsIG1vZHVsZSBmb3Igc2ltcGxlIHRlcm1pbmFsIGNvbnRyb2wuIgorREVTQ1JJUFRJT04gPSAiVGVybTo6UmVhZEtleSBpcyBhIGNvbXBpbGVkIHBlcmwgbW9kdWxlIGRlZGljYXRlZCB0byBwcm92aWRpbmcgc2ltcGxlIFwKK2NvbnRyb2wgb3ZlciB0ZXJtaW5hbCBkcml2ZXIgbW9kZXMgKGNicmVhaywgcmF3LCBjb29rZWQsIGV0Yy4sKSBzdXBwb3J0IFwKK2ZvciBub24tYmxvY2tpbmcgcmVhZHMsIGlmIHRoZSBhcmNoaXRlY3R1cmUgYWxsb3dzLCBhbmQgc29tZSBnZW5lcmFsaXplZCBcCitoYW5keSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0ZXJtaW5hbHMuIE9uZSBvZiB0aGUgbWFpbiBnb2FscyBpcyB0byBcCitoYXZlIHRoZSBmdW5jdGlvbnMgYXMgcG9ydGFibGUgYXMgcG9zc2libGUsIHNvIHlvdSBjYW4ganVzdCBwbHVnIGluICJ1c2UgXAorVGVybTo6UmVhZEtleSIgb24gYW55IGFyY2hpdGVjdHVyZSBhbmQgaGF2ZSBhIGdvb2QgbGlrZWxpaG9vZCBvZiBpdCBcCit3b3JraW5nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmpzdG93ZS9UZXJtUmVhZEtleS0ke1BWfSIKK1NFQ1RJT04gPSAibGlicmFyaWVzIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTHYxKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9YzI3NWRiNjYzYzg0ODlhNTcwOWViYjIyYjE4NWFkZDUiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9KL0pTL0pTVE9XRS9UZXJtUmVhZEtleS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOGVhMTVjMTYzMzNhYzRmOGQxNDZkNzAyZTgzY2MwYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YTkzODNjZjJlMGUwMTk0NjY4ZmUyYmQ1NDZlODk0ZmZhZDQxZDU1NmI0MWQyZjJmNTc3YzhkYjY4MmRiMjQxIgorCitTID0gIiR7V09SS0RJUn0vVGVybVJlYWRLZXktJHtQVn0iCisKKyMgSXQgbmVlZHMgZGVwZW5kIG9uIG5hdGl2ZSB0byBsZXQgZHluYW1pYyBsb2FkZXIgdXNlIG5hdGl2ZSBtb2R1bGVzCisjIHJhdGhlciB0aGFuIHRhcmdldCBvbmVzLgorREVQRU5EUyA9ICJsaWJ0ZXJtLXJlYWRrZXktcGVybC1uYXRpdmUiCisKK2luaGVyaXQgY3BhbgorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICAjIEhhY2sgdGhlIGR5bmFtaWMgbW9kdWxlIGxvYWRlciBzbyB0aGF0IGl0IHVzZSBuYXRpdmUgbW9kdWxlcyBzaW5jZSBpdCBjYW4ndCBsb2FkCisgICAgIyB0aGUgdGFyZ2V0IG9uZXMuCisgICAgaWYgWyAiJHtCVUlMRF9TWVN9IiAhPSAiJHtIT1NUX1NZU30iIF07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICJzIy1JXCQoSU5TVF9BUkNITElCKSMtSSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsL3ZlbmRvcl9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9I2ciIE1ha2VmaWxlCisgICAgZmkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGV4dC9saWJ0ZXh0LWNoYXJ3aWR0aC1wZXJsXzAuMDQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGV4dC9saWJ0ZXh0LWNoYXJ3aWR0aC1wZXJsXzAuMDQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA1N2FlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXh0L2xpYnRleHQtY2hhcndpZHRoLXBlcmxfMC4wNC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIlRleHQ6OkNoYXJXaWR0aCAtIEdldCBudW1iZXIgb2Ygb2NjdXBpZWQgY29sdW1ucyBvZiBhIHN0cmluZyBvbiB0ZXJtaW5hbC4iCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBzdXBwbGllcyBmZWF0dXJlcyBzaW1pbGFyIGFzIHdjd2lkdGgoMykgYW5kIHdjc3dpZHRoKDMpIFwKK2luIEMgbGFuZ3VhZ2UuIFwKK0NoYXJhY3RlcnMgaGF2ZSBpdHMgb3duIHdpZHRoIG9uIHRlcm1pbmFsIGRlcGVuZGluZyBvbiBsb2NhbGUuIEZvciBcCitleGFtcGxlLCBBU0NJSSBjaGFyYWN0ZXJzIG9jY3VweSBvbmUgY29sdW1uIHBlciBjaGFyYWN0ZXIsIGVhc3QgQXNpYW4gXAorZnVsbHdpZHRoIGNoYXJhY3RlcnMgKGxpa2UgSGlyYWdhbmEgb3IgSGFuIElkZW9ncmFwaCkgb2NjdXB5IHR3byBjb2x1bW5zIFwKK3BlciBjaGFyYWN0ZXIsIGFuZCBjb21iaW5pbmcgY2hhcmFjdGVycyAoYXBwZXJhcmluZyBpbiBJU08tODg1OS0xMSBUaGFpLCBcCitVbmljb2RlLCBhbmQgc28gb24pIG9jY3VweSB6ZXJvIGNvbHVtbnMgcGVyIGNoYXJhY3Rlci4gbWJ3aWR0aCgpIGdpdmVzIHRoZSBcCit3aWR0aCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBnaXZlbiBzdHJpbmcgYW5kIG1ic3dpZHRoKCkgZ2l2ZXMgdGhlIFwKK3dpZHRoIG9mIHRoZSB3aG9sZSBnaXZlbiBzdHJpbmcuIgorU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35rdWJvdGEvVGV4dC1DaGFyV2lkdGgtJHtQVn0vIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTHYxKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9ZDhkNTRjOGM1MDBjYmRkNTdhNGMxNTkxMWQ5ZDk2ZGIiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9LL0tVL0tVQk9UQS9UZXh0LUNoYXJXaWR0aC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzN2E3MjNkZjA1ODBjMDc1OGMwZWU2N2IzNzMzNmMxNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYmRlZDVmNGZkZDkzMzhlODlmZDJmMWQ4MjcxYzQ0OTg5ZGFlNWJmNTBhZWNlNDFiNjE3OWQ4ZTIzMDcwNGY4IgorCitTID0gIiR7V09SS0RJUn0vVGV4dC1DaGFyV2lkdGgtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXh0L2xpYnRleHQtd3JhcGkxOG4tcGVybF8wLjA2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRleHQvbGlidGV4dC13cmFwaTE4bi1wZXJsXzAuMDYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJjMjM5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXh0L2xpYnRleHQtd3JhcGkxOG4tcGVybF8wLjA2LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiVGV4dDo6V3JhcEkxOE4gLSBMaW5lIHdyYXBwaW5nIG1vZHVsZSB3aXRoIHN1cHBvcnQgZm9yIG11bHRpYnl0ZSwgXAorZnVsbHdpZHRoLCBhbmQgY29tYmluaW5nIGNoYXJhY3RlcnMgYW5kIGxhbmd1YWdlcyB3aXRob3V0IHdoaXRlc3BhY2VzIFwKK2JldHdlZW4gd29yZHMuIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgaW50ZW5kcyB0byBiZSBhIGJldHRlciBUZXh0OjpXcmFwIG1vZHVsZS4gVGhpcyBtb2R1bGUgaXMgXAorbmVlZGVkIHRvIHN1cHBvcnQgbXVsdGlieXRlIGNoYXJhY3RlciBlbmNvZGluZ3Mgc3VjaCBhcyBVVEYtOCwgRVVDLUpQLCBcCitFVUMtS1IsIEdCMjMxMiwgYW5kIEJpZzUuIFRoaXMgbW9kdWxlIGFsc28gc3VwcG9ydHMgY2hhcmFjdGVycyB3aXRoIFwKK2lycmVndWxhciB3aWR0aHMsIHN1Y2ggYXMgY29tYmluaW5nIGNoYXJhY3RlcnMgKHdoaWNoIG9jY3VweSB6ZXJvIGNvbHVtbnMgXAorb24gdGVybWluYWwsIGxpa2UgZGlhY3JpdGljYWwgbWFya3MgaW4gVVRGLTgpIGFuZCBmdWxsd2lkdGggY2hhcmFjdGVycyBcCisod2hpY2ggb2NjdXB5IHR3byBjb2x1bW5zIG9uIHRlcm1pbmFsLCBsaWtlIG1vc3Qgb2YgZWFzdCBBc2lhbiBcCitjaGFyYWN0ZXJzKS4gQWxzbywgbWluaW1hbCBoYW5kbGluZyBvZiBsYW5ndWFnZXMgd2hpY2ggZG9lc24ndCB1c2UgXAord2hpdGVzcGFjZXMgYmV0d2VlbiB3b3JkcyAobGlrZSBDaGluZXNlIGFuZCBKYXBhbmVzZSkgaXMgc3VwcG9ydGVkLiIKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+a3Vib3RhL1RleHQtV3JhcEkxOE4tJHtQVn0vIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTHYxKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9MDgwODYyZTFlNDBjZGNkZGVmNDM5M2UxMzcyODU4NTgiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9LL0tVL0tVQk9UQS9UZXh0LVdyYXBJMThOLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjA3OTljMTZhMDA5MjZlNmMxOGQ0MDBjMmUyODYxZDVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiZDI5YTE3ZjBjMmM3OTJkMTJjMTAwNWIzYzI3NmYyYWIwZmFlMzljMDA4NTlhZTE3NDFkNzk0MTg0NmE0ODgiCisKK1MgPSAiJHtXT1JLRElSfS9UZXh0LVdyYXBJMThOLSR7UFZ9IgorCitERVBFTkRTID0gImxpYnRleHQtY2hhcndpZHRoLXBlcmwiCisKK1JERVBFTkRTXyR7UE59ID0gImxpYnRleHQtY2hhcndpZHRoLXBlcmwiCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ1bmljb2RlL2xpYnVuaWNvZGUtbGluZWJyZWFrLXBlcmxfMjAxNy4wMDQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidW5pY29kZS9saWJ1bmljb2RlLWxpbmVicmVhay1wZXJsXzIwMTcuMDA0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjY2I0MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidW5pY29kZS9saWJ1bmljb2RlLWxpbmVicmVhay1wZXJsXzIwMTcuMDA0LmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiVW5pY29kZTo6TGluZUJyZWFrIC0gVUFYICMxNCBVbmljb2RlIExpbmUgQnJlYWtpbmcgQWxnb3JpdGhtLiIKK0RFU0NSSVBUSU9OID0gIlVuaWNvZGU6OkxpbmVCcmVhayBwZXJmb3JtcyBMaW5lIEJyZWFraW5nIEFsZ29yaXRobSBkZXNjcmliZWQgaW4gVW5pY29kZSBcCitTdGFuZGFyZCBBbm5leCAjMTQgW1VBWCAjMTRdLiBFYXN0X0FzaWFuX1dpZHRoIGluZm9ybWF0aXZlIHByb3BlcnR5IFwKK2RlZmluZWQgYnkgQW5uZXggIzExIFtVQVggIzExXSB3aWxsIGJlIGNvbmNlcm5lZCB0byBkZXRlcm1pbmUgYnJlYWtpbmcgXAorcG9zaXRpb25zLiIKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bmV6dW1pL1VuaWNvZGUtTGluZUJyZWFrLSR7UFZ9LyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEx2MSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTc3MjQxYWJkNzRmZWM1NjFiM2YzZGUxYjQ0YzAyNDFiIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvTi9ORS9ORVpVTUkvVW5pY29kZS1MaW5lQnJlYWstJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGU3NjcyMjI3OTIyMjYwYWM5MmQyMGJiYWQyOTY2MGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjU1YmMzYzRjYjYwYWQwNzcwZDk3ODE2NzE2Y2ZlMzIyZjI0ZTYwMmM3MGU1OTVmNTk0MWRmYTAyYzQwY2I3NiIKKworUyA9ICIke1dPUktESVJ9L1VuaWNvZGUtTGluZUJyZWFrLSR7UFZ9IgorCitERVBFTkRTID0gImxpYnNvbWJvazMgbGlibWltZS1jaGFyc2V0LXBlcmwiCisKK1JERVBFTkRTXyR7UE59ID0gImxpYnNvbWJvazMgbGlibWltZS1jaGFyc2V0LXBlcmwiCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLWxpYnhtbC1wZXJsXzIuMDEyMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLWxpYnhtbC1wZXJsXzIuMDEyMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJjMDBjNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1saWJ4bWwtcGVybF8yLjAxMjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgaW50ZXJmYWNlIHRvIHRoZSBsaWJ4bWwyIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBpcyBhbiBpbnRlcmZhY2UgdG8gbGlieG1sMiwgcHJvdmlkaW5nIFhNTCBhbmQgSFRNTCBwYXJzZXJzIFwKLXdpdGggRE9NLCBTQVggYW5kIFhNTFJlYWRlciBpbnRlcmZhY2VzLCBhIGxhcmdlIHN1YnNldCBvZiBET00gTGF5ZXIgMyBcCi1pbnRlcmZhY2UgYW5kIGEgWE1MOjpYUGF0aC1saWtlIGludGVyZmFjZSB0byBYUGF0aCBBUEkgb2YgbGlieG1sMi4gXAotVGhlIG1vZHVsZSBpcyBzcGxpdCBpbnRvIHNldmVyYWwgcGFja2FnZXMgd2hpY2ggYXJlIG5vdCBkZXNjcmliZWQgaW4gdGhpcyBcCi1zZWN0aW9uOyB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgeW91IG9ubHkgbmVlZCB0byB1c2UgWE1MOjpMaWJYTUw7IGluIFwKLXlvdXIgcHJvZ3JhbXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvWE1MLUxpYlhNTC0xLjk5LyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wfEdQTHYxKyIKLURFUEVORFMgKz0gImxpYnhtbDIgXAotICAgICAgICBsaWJ4bWwtc2F4LXBlcmwtbmF0aXZlIFwKLSAgICAgICAgemxpYiBcCi0iCi1SREVQRU5EU18ke1BOfSArPSAibGlieG1sMiBcCi0gICAgICAgIGxpYnhtbC1zYXgtcGVybCBcCi0gICAgICAgIGxpYnhtbC1zYXgtYmFzZS1wZXJsIFwKLSAgICAgICAgemxpYiBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUy9TSC9TSExPTUlGL1hNTC1MaWJYTUwtJHtQVn0udGFyLmd6O25hbWU9bGlieG1sIFwKLSAgICBmaWxlOi8vZGlzYWJsZS1saWJ4bWwyLWNoZWNrLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LUNBVEFMT0ctY29uZGl0aW9uYWwtY29tcGlsZS5wYXRjaCBcCi0gICAgZmlsZTovL3VzaW5nLURPQ0ItY29uZGl0aW9uYWwucGF0Y2ggXAotIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9NzVlMDIxZTM1YTkwNjM0N2Y0NmM5ZmYxNjM2NTNlMmEgXAotICAgIGZpbGU6Ly9MSUNFTlNFO21kNT05Nzg3MWJkZTE1MGRhZWI1ZTYxYWQ5NTEzN2ZmMjQ0NiBcCi0iCi1TUkNfVVJJW2xpYnhtbC5tZDVzdW1dID0gIjE1NDRhYjlhYzExMGY1ZGEyOTYwMTUzNDY1NjFjZTAyIgotU1JDX1VSSVtsaWJ4bWwuc2hhMjU2c3VtXSA9ICJlYzQzMTAxMWNiMzdhMDQ2NDBmZDIzMTZmNjRkMDQwNWEyNzRlZWNlMmM2ZjM4NDdmN2ZiZDMzNmViMWMwZGM5IgotCi1TID0gIiR7V09SS0RJUn0vWE1MLUxpYlhNTC0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUVYVFJBX0NQQU5GTEFHUyA9ICJJTkM9LUkke1NUQUdJTkdfSU5DRElSfS9saWJ4bWwyIExJQlM9LUwke1NUQUdJTkdfTElCRElSfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUNGTEFHUyArPSAiIC1EX0dOVV9TT1VSQ0UgIgotQlVJTERfQ0ZMQUdTICs9ICIgLURfR05VX1NPVVJDRSAiCi0KLUZJTEVTXyR7UE59LWRiZyA9KyAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL1hNTC9MaWJYTUwvLmRlYnVnLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLWxpYnhtbC1wZXJsXzIuMDEyOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLWxpYnhtbC1wZXJsXzIuMDEyOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGNjMjY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnhtbC9saWJ4bWwtbGlieG1sLXBlcmxfMi4wMTI5LmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiUGVybCBpbnRlcmZhY2UgdG8gdGhlIGxpYnhtbDIgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGlzIGFuIGludGVyZmFjZSB0byBsaWJ4bWwyLCBwcm92aWRpbmcgWE1MIGFuZCBIVE1MIHBhcnNlcnMgXAord2l0aCBET00sIFNBWCBhbmQgWE1MUmVhZGVyIGludGVyZmFjZXMsIGEgbGFyZ2Ugc3Vic2V0IG9mIERPTSBMYXllciAzIFwKK2ludGVyZmFjZSBhbmQgYSBYTUw6OlhQYXRoLWxpa2UgaW50ZXJmYWNlIHRvIFhQYXRoIEFQSSBvZiBsaWJ4bWwyLiBcCitUaGUgbW9kdWxlIGlzIHNwbGl0IGludG8gc2V2ZXJhbCBwYWNrYWdlcyB3aGljaCBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGlzIFwKK3NlY3Rpb247IHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLCB5b3Ugb25seSBuZWVkIHRvIHVzZSBYTUw6OkxpYlhNTDsgaW4gXAoreW91ciBwcm9ncmFtcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9YTUwtTGliWE1MLTEuOTkvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjB8R1BMdjErIgorREVQRU5EUyArPSAibGlieG1sMiBcCisgICAgICAgIGxpYnhtbC1zYXgtcGVybC1uYXRpdmUgXAorICAgICAgICB6bGliIFwKKyIKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJ4bWwyIFwKKyAgICAgICAgbGlieG1sLXNheC1wZXJsIFwKKyAgICAgICAgbGlieG1sLXNheC1iYXNlLXBlcmwgXAorICAgICAgICB6bGliIFwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvWE1MLUxpYlhNTC0ke1BWfS50YXIuZ3o7bmFtZT1saWJ4bWwgXAorICAgIGZpbGU6Ly9kaXNhYmxlLWxpYnhtbDItY2hlY2sucGF0Y2ggXAorICAgIGZpbGU6Ly9maXgtQ0FUQUxPRy1jb25kaXRpb25hbC1jb21waWxlLnBhdGNoIFwKKyAgICBmaWxlOi8vdXNpbmctRE9DQi1jb25kaXRpb25hbC5wYXRjaCBcCisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT02NGVkYTFiYzEzNWYwZWNlMWQxMTg3ZjJhOGFjODJjMSBcCisgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTk3ODcxYmRlMTUwZGFlYjVlNjFhZDk1MTM3ZmYyNDQ2IFwKKyIKK1NSQ19VUklbbGlieG1sLm1kNXN1bV0gPSAiNTgwNmI2OWQ1NGEyZDc4ODRiOGQyMmIzOTU4ODg0MzYiCitTUkNfVVJJW2xpYnhtbC5zaGEyNTZzdW1dID0gIjVjYTAyNjliYTA2ODAwYzg0MDYxYTdmMzMzM2M4NWZhYjU1ODRkNjljZDdiNGUwNjQxOTYzZGE3ZmQzNmIzNjYiCisKK1MgPSAiJHtXT1JLRElSfS9YTUwtTGliWE1MLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworRVhUUkFfQ1BBTkZMQUdTID0gIklOQz0tSSR7U1RBR0lOR19JTkNESVJ9L2xpYnhtbDIgTElCUz0tTCR7U1RBR0lOR19MSUJESVJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworQ0ZMQUdTICs9ICIgLURfR05VX1NPVVJDRSAiCitCVUlMRF9DRkxBR1MgKz0gIiAtRF9HTlVfU09VUkNFICIKKworRklMRVNfJHtQTn0tZGJnID0rICIke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vWE1ML0xpYlhNTC8uZGVidWcvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnhtbC9saWJ4bWwtc2F4LXdyaXRlci1wZXJsXzAuNTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1zYXgtd3JpdGVyLXBlcmxfMC41Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYxY2VkYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1zYXgtd3JpdGVyLXBlcmxfMC41Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiWE1MOjpTQVg6OldyaXRlciAtIFNBWDIgV3JpdGVyIgotREVTQ1JJUFRJT04gPSAiXAotWE1MOjpTQVg6OldyaXRlciBoZWxwcyB0byBzZXJpYWxpemUgU0FYMiByZXByZXNlbnRhdGlvbnMgb2YgWE1MIGRvY3VtZW50cyB0byBcCi1zdHJpbmdzLCBmaWxlcywgYW5kIG90aGVyIGZsYXQgcmVwcmVzZW50YXRpb25zLiBJdCBoYW5kbGVzIGNoYXJzZXQgZW5jb2RpbmdzLCBcCi1YTUwgZXNjYXBpbmcgY29udmVudGlvbnMsIGFuZCBzbyBmb3J0aC4gSXQgaXMgc3RpbGwgY29uc2lkZXJlZCBhbHBoYSwgXAotYWx0aG91Z2ggaXQgaGFzIGJlZW4gcHV0IHRvIGxpbWl0ZWQgdXNlIGluIHNldHRpbmdzIHN1Y2ggYXMgWE1MOjpMaWJYTUwgYW5kIFwKLXRoZSBBeEtpdCBYTUwgQXBwbGljYXRpb24gU2VydmVyLiBcCi0iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTHYxKyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9YTUwtU0FYLVdyaXRlci8iCi1ERVBFTkRTICs9ICJsaWJ4bWwtZmlsdGVyLWJ1ZmZlcnRleHQtcGVybC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAibGlieG1sLWZpbHRlci1idWZmZXJ0ZXh0LXBlcmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUC9QRS9QRVJJR1JJTi9YTUwtU0FYLVdyaXRlci0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTVmYTVlMmIyZjY4NjdiMWFjYTliNWI0M2UxY2UzNjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA3M2Y3YTI1MDcyYzgxNTAzMTdiODZiOTlkMDcwMzEzMTZhMTViZmZhYjk5ZTYzZTVhZmU1OTFjODIxN2QwMyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT00NTtlbmRsaW5lPTQ2O21kNT1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIKLQotUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtV3JpdGVyLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1zYXgtd3JpdGVyLXBlcmxfMC41Ny5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ4bWwvbGlieG1sLXNheC13cml0ZXItcGVybF8wLjU3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYjBkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlieG1sL2xpYnhtbC1zYXgtd3JpdGVyLXBlcmxfMC41Ny5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlhNTDo6U0FYOjpXcml0ZXIgLSBTQVgyIFdyaXRlciIKK0RFU0NSSVBUSU9OID0gIlwKK1hNTDo6U0FYOjpXcml0ZXIgaGVscHMgdG8gc2VyaWFsaXplIFNBWDIgcmVwcmVzZW50YXRpb25zIG9mIFhNTCBkb2N1bWVudHMgdG8gXAorc3RyaW5ncywgZmlsZXMsIGFuZCBvdGhlciBmbGF0IHJlcHJlc2VudGF0aW9ucy4gSXQgaGFuZGxlcyBjaGFyc2V0IGVuY29kaW5ncywgXAorWE1MIGVzY2FwaW5nIGNvbnZlbnRpb25zLCBhbmQgc28gZm9ydGguIEl0IGlzIHN0aWxsIGNvbnNpZGVyZWQgYWxwaGEsIFwKK2FsdGhvdWdoIGl0IGhhcyBiZWVuIHB1dCB0byBsaW1pdGVkIHVzZSBpbiBzZXR0aW5ncyBzdWNoIGFzIFhNTDo6TGliWE1MIGFuZCBcCit0aGUgQXhLaXQgWE1MIEFwcGxpY2F0aW9uIFNlcnZlci4gXAorIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEx2MSsiCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvWE1MLVNBWC1Xcml0ZXIvIgorREVQRU5EUyArPSAibGlieG1sLWZpbHRlci1idWZmZXJ0ZXh0LXBlcmwtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbC1maWx0ZXItYnVmZmVydGV4dC1wZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1AvUEUvUEVSSUdSSU4vWE1MLVNBWC1Xcml0ZXItJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjNlMzAyM2M2NDhlMzAwM2MwNGRlMmZiMDQ0MzVmOGJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkNjFkMDdlZjQzYjAxMjZmNWI0ZGU0ZjQxNWEyNTZmYTg1OWZhODhkYzRmZGFiYWFkNzBiN2JlN2M2ODJjZjAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT00NjttZDU9ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiCisKK1MgPSAiJHtXT1JLRElSfS9YTUwtU0FYLVdyaXRlci0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL3BvNGEvcG80YV8wLjQ5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL3BvNGEvcG80YV8wLjQ5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYjViOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvcG80YS9wbzRhXzAuNDkuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJQTyBmb3IgYW55dGhpbmciCitERVNDUklQVElPTiA9ICJUaGUgcG80YSAoUE8gZm9yIGFueXRoaW5nKSBwcm9qZWN0IGdvYWwgaXMgdG8gZWFzZSB0cmFuc2xhdGlvbnMgXAorKGFuZCBtb3JlIGludGVyZXN0aW5nbHksIHRoZSBtYWludGVuYW5jZSBvZiB0cmFuc2xhdGlvbnMpIHVzaW5nIGdldHRleHQgdG9vbHMgXAorb24gYXJlYXMgd2hlcmUgdGhleSB3ZXJlIG5vdCBleHBlY3RlZCBsaWtlIGRvY3VtZW50YXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9wbzRhLmFsaW90aC5kZWJpYW4ub3JnIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5NmZjOWI0Y2MzNmQ4MDY1OWU2OTRlYTEwOWYwMzI1IgorCitTUkNfVVJJID0gImdpdDovL2FsaW90aC5kZWJpYW4ub3JnL2Fub25zY20vZ2l0L3BvNGEvcG80YS5naXQ7cHJvdG9jb2w9aHR0cHMiCisKKyMgdjAuNDkKK1NSQ1JFViA9ICI3OWVkODdhNTc3YTU0MzUzOGZlMzljN2I2MDA3OTk4MWY1OTk3MDcyIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gIiBcCisgICAgbGlibW9kdWxlLWJ1aWxkLXBlcmwtbmF0aXZlIFwKKyAgICBsaWJ0ZXh0LXdyYXBpMThuLXBlcmwgXAorICAgIGxpYnRlcm0tcmVhZGtleS1wZXJsIFwKKyAgICBsaWJsb2NhbGUtZ2V0dGV4dC1wZXJsIFwKKyAgICBsaWJ1bmljb2RlLWxpbmVicmVhay1wZXJsIFwKKyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiIFwKKyAgICBsaWJ0ZXh0LXdyYXBpMThuLXBlcmwgXAorICAgIGxpYnRlcm0tcmVhZGtleS1wZXJsIFwKKyAgICBsaWJsb2NhbGUtZ2V0dGV4dC1wZXJsIFwKKyAgICBsaWJ1bmljb2RlLWxpbmVicmVhay1wZXJsIFwKKyIKKworaW5oZXJpdCBjcGFuX2J1aWxkCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL1JFQURNRQppbmRleCAwMWIwNTZjLi40Mzc0MGY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL1JFQURNRQpAQCAtMTcsMTIgKzE3LDEyIEBACiAKIAlVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlCiAJbGF5ZXJzOiBtZXRhCi0JYnJhbmNoOiBweXJvIAorCWJyYW5jaDogcm9ja28gCiAJcmV2aXNpb246IEhFQUQKIAogCVVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvbWV0YS1vcGVuZW1iZWRkZWQKIAlsYXllcnM6IG1ldGEtb2UKLQlicmFuY2g6ICBweXJvCisJYnJhbmNoOiAgcm9ja28KIAlyZXZpc2lvbjogSEVBRAogCiBQbGVhc2UgZm9sbG93IHRoZSByZWNvbW1lbmRlZCBzZXR1cCBwcm9jZWR1cmVzIG9mIHlvdXIgT0UgZGlzdHJpYnV0aW9uLgpAQCAtMzksMTIgKzM5LDE2IEBACiBiZWZvcmUgcG9zdGluZy4KIAogU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGgKLSdbbWV0YS1weXRob25dW3B5cm9dJyBpbiB0aGUgc3ViamVjdC4KKydbbWV0YS1weXRob25dJyBpbiB0aGUgc3ViamVjdC4KIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNlIHNvbWV0aGluZyBsaWtlOiAKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvPW9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1weXRob25dW3B5cm9dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG89b3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXB5dGhvbl1bUEFUQ0gnCiAKIE1haW50ZW5hbmNlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1weXJvIEJyYW5jaCBNYWludGFpbmVyOgotQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKworTWFpbnRhaW5lcnM6CisgICAgICAgIFRpbSAibW90by10aW1vIiBPcmxpbmcgPFRpY29UaW1vQGdtYWlsLmNvbT4KKyAgICAgICAgUGF1bCAiYmx1ZWxpZ2h0bmluZyIgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorICAgICAgICBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9maWxlcy8wMDAxLWZpeF9zZXR1cF9weS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL2ZpbGVzLzAwMDEtZml4X3NldHVwX3B5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTEzNWEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL2ZpbGVzLzAwMDEtZml4X3NldHVwX3B5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAyZDQ3YTVkZjU4ODAyMTczYmY5MGQ3NjBiMWQ2ZjUyMGFlZWE3NmZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVqIFJvZGUgPGFuZHJlai5yb2RlQGV0dHVzLmNvbT4KLURhdGU6IE1vbiwgMTAgQXByIDIwMTcgMTY6NDc6NDEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gc2V0dXA6IHJlbW92ZSBmaW5kX3BhY2thZ2VzIHNpbmNlIHRoYXQgd291bGQgaW5zdGFsbCB0ZXN0cyBhcwotIGEgcGFja2FnZSBhcyB3ZWxsCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBSb2RlIDxhbmRyZWoucm9kZUBldHR1cy5jb20+Ci0tLS0KLSBzZXR1cC5weSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA2YjM3MDE2Li5hMWYxMWE3IDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtMSw2ICsxLDYgQEAKLSAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotIAotLWZyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAsIGZpbmRfcGFja2FnZXMKLStmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCi0gCi0gc2V0dXAoCi0gICAgIG5hbWU9J2dzb2NrZXRwb29sJywKLUBAIC05LDcgKzksNyBAQCBzZXR1cCgKLSAgICAgYXV0aG9yPSdTdHVkaW8gT3VzaWEnLAotICAgICBhdXRob3JfZW1haWw9J2lrdXlhQG91c2lhLmpwJywKLSAgICAgdXJsPSdodHRwOi8vZ2l0aHViLmNvbS9zdHVkaW8tb3VzaWEvZ3NvY2tldHBvb2wnLAotLSAgICBwYWNrYWdlcz1maW5kX3BhY2thZ2VzKCksCi0rICAgIHBhY2thZ2VzPVsnZ3NvY2tldHBvb2wnXSwKLSAgICAgbGljZW5zZT1vcGVuKCdMSUNFTlNFJykucmVhZCgpLAotICAgICBpbmNsdWRlX3BhY2thZ2VfZGF0YT1UcnVlLAotICAgICBjbGFzc2lmaWVycz0oCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2wuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTk3MWRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sLmluYwpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIkEgc2ltcGxlIGNvbm5lY3Rpb24gcG9vbCBmb3IgZ2V2ZW50IgorREVTQ1JJUFRJT04gPSAiY3JlYXRlcyBhIHBvb2wgb2YgY29ubmVjdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIGdldmVudCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdHVkaW8tb3VzaWEvZ3NvY2tldHBvb2wiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00YmE4MjUzOTRhZWMwMjZiNWY5NGVkY2E0NDQyNjg1OSIKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1nZXZlbnQiCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWdldmVudCIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ5ZjVmMjkyZWYxYjYwOTQ0YWU5MmNhNDI2YTVlNTUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyZTI3NDlhY2VhZGNlNmIyN2NhNTJlMmIwYTY0YWY5OTc5Nzc0NmE4NjgxZTFhMjk2M2Y3MjAwN2MxNGNiMTQiCisKK2luaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sXzAuMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sXzAuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODYxNTJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL3B5dGhvbi1nc29ja2V0cG9vbF8wLjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzaW1wbGUgY29ubmVjdGlvbiBwb29sIGZvciBnZXZlbnQiCi1ERVNDUklQVElPTiA9ICJjcmVhdGVzIGEgcG9vbCBvZiBjb25uZWN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggZ2V2ZW50IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWRpby1vdXNpYS9nc29ja2V0cG9vbCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRiYTgyNTM5NGFlYzAyNmI1Zjk0ZWRjYTQ0NDI2ODU5IgotREVQRU5EUyArPSAicHl0aG9uLWdldmVudCIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tZ2V2ZW50IgotCi1TUkNfVVJJX2FwcGVuZCA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLWZpeF9zZXR1cF9weS5wYXRjaDtwYXRjaD0xO3BudW09MSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNGY2MTg4NjRiMThkNmIwNmY3NzQ5OTRmMTcyZWY0OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmI3M2RlYWI5YmNiYzQyOGQ0ODEzNjk3ZWViZTVjM2I5YzQwYTk3MWY2MmUxMzYwN2I4ODFhYTc0OWFmOWQwIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sXzAuMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sXzAuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NmFkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2xfMC4xLjYuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1nc29ja2V0cG9vbC5pbmMKK2luaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uMy1nc29ja2V0cG9vbF8wLjEuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL3B5dGhvbjMtZ3NvY2tldHBvb2xfMC4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzNjIxZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL3B5dGhvbjMtZ3NvY2tldHBvb2xfMC4xLjYuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1nc29ja2V0cG9vbC5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL2ZpbGVzLzAwMDEtZml4X3NldHVwX3B5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvZmlsZXMvMDAwMS1maXhfc2V0dXBfcHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ZGY5YjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvZmlsZXMvMDAwMS1maXhfc2V0dXBfcHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGJkYTk5ZWFiOTAzNmQ0NmU3YmIwNmI0NDZkMTFjYWIwYjFkZDgwOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWogUm9kZSA8YW5kcmVqLnJvZGVAZXR0dXMuY29tPgotRGF0ZTogTW9uLCAxMCBBcHIgMjAxNyAxNjo0OTo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBzZXR1cDogcmVtb3ZlIGZpbmRfcGFja2FnZXMgYW5kIG9ubHkgaW5zdGFsbCBtcHJwYwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogUm9kZSA8YW5kcmVqLnJvZGVAZXR0dXMuY29tPgotLS0tCi0gc2V0dXAucHkgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNTAwMWQwYy4uNGMwYmE3NSAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTEsNiArMSw2IEBACi0gIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSAKLS1mcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24sIGZpbmRfcGFja2FnZXMKLStmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24KLSAKLSBzZXR1cCgKLSAgICAgbmFtZT0nbXBycGMnLAotQEAgLTEwLDcgKzEwLDcgQEAgc2V0dXAoCi0gICAgIGF1dGhvcj0nU3R1ZGlvIE91c2lhJywKLSAgICAgYXV0aG9yX2VtYWlsPSdpa3V5YUBvdXNpYS5qcCcsCi0gICAgIHVybD0naHR0cDovL2dpdGh1Yi5jb20vc3R1ZGlvLW91c2lhL21wcnBjJywKLS0gICAgcGFja2FnZXM9ZmluZF9wYWNrYWdlcygpLAotKyAgICBwYWNrYWdlcz1bJ21wcnBjJ10sCi0gICAgIGV4dF9tb2R1bGVzPVsKLSAgICAgICAgIEV4dGVuc2lvbignbXBycGMuY2xpZW50JywgWydtcHJwYy9jbGllbnQuYyddKSwKLSAgICAgICAgIEV4dGVuc2lvbignbXBycGMuc2VydmVyJywgWydtcHJwYy9zZXJ2ZXIuYyddKQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwYy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1MzVmYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwYy5pbmMKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJBIGdldmVudCBiYXNlZCBtZXNzYWdwYWNrIHJwYyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibXBycGMgaXMgYSBmYXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBtZXNzYWdlcGFjayBycGMgcHJvdG9jb2wgZm9yIHB5dGhvbi4gXAorSXQgaXMgYmFzZWQgb24gZ2V2ZW50IGZvciBoYW5kbGluZyBjb25uZWN0aW9ucyBhbmQgZW5hYmxpbmcgY29uY3VycmVudCBjb25uZWN0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3R1ZGlvLW91c2lhL21wcnBjIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGJhODI1Mzk0YWVjMDI2YjVmOTRlZGNhNDQ0MjY4NTkiCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tZ2V2ZW50IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1nZXZlbnQgJHtQWVRIT05fUE59LW1zZ3BhY2sgJHtQWVRIT05fUE59LWdzb2NrZXRwb29sIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjZlNmNmMzY3ZWE3MWNmZWQ4OTM4YTI3ZTljMTgzYzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWNjYWRhNjUyNmQ0OGFjNGQ5NWE3YmJkYzA5MzU4NjY2Mzg0MTU2MDMzNzAzMmE1MDNmNTdjY2ZhZTY5ZDdiZiIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24tbXBycGNfMC4xLjEzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjXzAuMS4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhkZjAwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24tbXBycGNfMC4xLjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGdldmVudCBiYXNlZCBtZXNzYWdwYWNrIHJwYyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibXBycGMgaXMgYSBmYXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBtZXNzYWdlcGFjayBycGMgcHJvdG9jb2wgZm9yIHB5dGhvbi4gXAotSXQgaXMgYmFzZWQgb24gZ2V2ZW50IGZvciBoYW5kbGluZyBjb25uZWN0aW9ucyBhbmQgZW5hYmxpbmcgY29uY3VycmVudCBjb25uZWN0aW9ucy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3R1ZGlvLW91c2lhL21wcnBjIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGJhODI1Mzk0YWVjMDI2YjVmOTRlZGNhNDQ0MjY4NTkiCi1ERVBFTkRTICs9ICJweXRob24tZ2V2ZW50IgotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1nZXZlbnQgcHl0aG9uLW1zZ3BhY2sgcHl0aG9uLWdzb2NrZXRwb29sIgotCi1TUkNfVVJJX2FwcGVuZCA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLWZpeF9zZXR1cF9weS5wYXRjaDtwYXRjaD0xO3BudW09MSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NDllNjIzOWViNWZmMDdiOWNjZWI4NmUxYWIwYzJlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODgxY2M3ZmJiOGRlODE0ZTJiNGFhNTk1OGJmZTE0N2M1YzMwMWU0Njc0OTE5MGYwZTZhYmYzNzNjZjU2ZDgyIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjXzAuMS4xNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwY18wLjEuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIyZWEyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwY18wLjEuMTQuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1tcHJwYy5pbmMKK2luaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uMy1tcHJwY18wLjEuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24zLW1wcnBjXzAuMS4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzdkNjA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uMy1tcHJwY18wLjEuMTQuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1tcHJwYy5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbi1weXJvNF80LjU1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMjhhODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBSZW1vdGUgT2JqZWN0cyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Mzc4YWNlZjM3NWUxN2EzYmZmMDNiZDBmNzhjNTMyMjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNDAwYTRkMjYwZGJlYWE0ZTdlNzI1YzRiYTMxMGVhZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OWE3YTE0MjU0MmQ4N2RkZTFjZWNjOGQzZWUwNDhlYzk0ODFiYTg2MWQ2MTIzNGQyMTlmYWRkMDZlNmNlZDk2IgotCi1QWVBJX1BBQ0tBR0UgPSAiUHlybzQiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tc2VsZWN0b3JzMzQgXAotICAgICR7UFlUSE9OX1BOfS1zZXJwZW50IFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0temxpYiBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42Mi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDFjNGZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNjIuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJQeXRob24gUmVtb3RlIE9iamVjdHMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM3OGFjZWYzNzVlMTdhM2JmZjAzYmQwZjc4YzUzMjIwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmUyZmVmM2RjOGIyOTc3M2E4N2FiYmFhOGU5YWJlMTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTMwMWVkZmIyYmM0Nzc2OGI3MjIyYTY4Y2FlOGRlOGJlNzk2ZDFkOWY2MWNkYmQxYWY5MDM5OTg1ZWQ1MDA5YyIKKworUFlQSV9QQUNLQUdFID0gIlB5cm80IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LXNlbGVjdG9yczM0IFwKKyAgICAke1BZVEhPTl9QTn0tc2VycGVudCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LXpsaWIgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbi1weXR1bi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24tcHl0dW4uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YThiZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24tcHl0dW4uaW5jCkBAIC0wLDAgKzEsMTAgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIFRVTi9UQVAgdHVubmVsIG1vZHVsZSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTNmNzYyOWU4ZTQ5ODliNjZiNGE5MTNhYjA1YTkxZGUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YjM1YjFjZjgwYTAyY2NhN2VjNzJlYjk1ZDZiMDE5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzU5NWRhZGY4NWY1MTc2ZWIwOGM4ZDRkOWJhNWI4NjJhMTgwZTk2NjMzZjY3MGY5MTQzN2M0N2ExYmVhZDBkIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLXB5dHVuIgorCitpbmhlcml0IHB5cGkgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24tcHl0dW5fMi4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24tcHl0dW5fMi4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZjNTg3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbi1weXR1bl8yLjIuMS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXB5dHVuLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24zLXB5dHVuXzIuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHl0dW4vcHl0aG9uMy1weXR1bl8yLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzhkOWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHl0dW4vcHl0aG9uMy1weXR1bl8yLjIuMS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXB5dHVuLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcGFyYWxsZWxfbWFrZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9wYXJhbGxlbF9tYWtlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9wYXJhbGxlbF9tYWtlLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcGFyYWxsZWxfbWFrZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcmVtb3ZlX2R1cGxpY2F0ZV9pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbi0wLjE1LjE5L3JlbW92ZV9kdXBsaWNhdGVfaW5zdGFsbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcmVtb3ZlX2R1cGxpY2F0ZV9pbnN0YWxsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcmVtb3ZlX2R1cGxpY2F0ZV9pbnN0YWxsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvdGVsZXBhdGh5LXB5dGhvbl9maXhfZm9yX2F1dG9tYWtlXzEuMTIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uXzAuMTUuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uXzAuMTUuMTkuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbl8wLjE1LjE5LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uXzAuMTUuMTkuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFwcGRpcnMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlycy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ4MjY3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFwcGRpcnMuaW5jCkBAIC0wLDAgKzEsOCBAQAorU1VNTUFSWSA9ICJBIHNtYWxsIFB5dGhvbiBtb2R1bGUgZm9yIGRldGVybWluaW5nIGFwcHJvcHJpYXRlICsgcGxhdGZvcm0tc3BlY2lmaWMgZGlycywgZS5nLiBhIHVzZXIgZGF0YSBkaXIuIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MzE2MjUzNjNjNDVlYjBjNjdjNjMwYTJmNzNlNDM4ZTQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NGM2Nzk5MDQwODJhMjEzM2Y1NTY2YzhhMGQzYWI0MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZTU4OTZkMTM3Mjg1OGY4ZGQzMzQ0ZmFmNGU1MDE0ZDIxODQ5Yzc1NmM4ZDU3MDFmNzhmOGExMDNiMzcyZDkyIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFwcGRpcnNfMS40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hcHBkaXJzXzEuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZmY5YjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hcHBkaXJzXzEuNC4zLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1hcHBkaXJzLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0by5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWI3MzQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0by5pbmMKQEAgLTAsMCArMSwxMyBAQAorREVTQ1JJUFRJT04gPSAiUHl0aG9uIGJpbmRpbmcgdG8gdGhlIE5ldHdvcmtpbmcgYW5kIENyeXB0b2dyYXBoeSAoTmFDbCkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWNhL3B5bmFjbCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTIwMTBjZDNjN2Q3YmQ5NjViNTU3MjFlZjRkOTNlYzIiCisKK1BZUElfUEFDS0FHRSA9ICJhc24xY3J5cHRvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTdkNTQ2NjVjMzk3YjcyYjE2NTc2ODM5OGRmZGQ4NzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDg3NDk4MTMyOWNmZWJiMzY2ZDY1ODRjM2QxNmU5MTNmMmEwZWIwMjZjOTQ2M2VmY2M0YWFmNDJhOWQ5NGQ3MCIKKworaW5oZXJpdCBweXBpCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG9fMC4yMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0b18wLjIzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFmNjBjMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG9fMC4yMy4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1hc24xY3J5cHRvLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2IxYTNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZC5pbmMKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJBbiBhYnN0cmFjdCBzeW50YXggdHJlZSBmb3IgUHl0aG9uIHdpdGggaW5mZXJlbmNlIHN1cHBvcnQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9hc3Ryb2lkIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZjY1ZTRlYTgyOTBlYzAzMjMyMDQ2MDkwNWFmYjgyOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OTJjMmEyMDQ0YWRiZjZhODRhNjcxYjc1MjJlOTI5NWFkMmY2YTdjNzgxYjg5OTAxNDMwOGRiMjUzMTJkZDM1IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCisgICAgJHtQWVRIT05fUE59LWxhenktb2JqZWN0LXByb3h5IFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisgICAgJHtQWVRIT05fUE59LXdyYXB0IFwKKyAgICAke1BZVEhPTl9QTn0tcmUgXAorICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS40LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkXzEuNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWUxMjkxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS40LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFic3RyYWN0IHN5bnRheCB0cmVlIGZvciBQeXRob24gd2l0aCBpbmZlcmVuY2Ugc3VwcG9ydC4iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2FzdHJvaWQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTU3NDM4OTcxZGUwNWViODAxYjgyZWFlNTljMDUyMTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQ4M2U3ODkxY2UzYTA2ZGFkZmM2Y2I5MDk1YjA5MzhhY2E1ODk0MGQ0MzU3NmQ3MmU0NTAyYjQ4MGMwODVkNyIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCi0gICAgJHtQWVRIT05fUE59LWxhenktb2JqZWN0LXByb3h5IFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAke1BZVEhPTl9QTn0td3JhcHQgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8xLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdhMGE1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS41LjMuYmIKQEAgLTAsMCArMSw3IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWFzdHJvaWQuaW5jCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiJHtQWVRIT05fUE59LWVudW0zNCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pbXBvcnRsaWIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2luZ2xlZGlzcGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFlYjAyMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jCkBAIC0wLDAgKzEsMTggQEAKK0RFU0NSSVBUSU9OID0gIlNESyBmb3IgY29ubmVjdGluZyB0byBBV1MgSW9UIHVzaW5nIFB5dGhvbi4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1pb3QtZGV2aWNlLXNkay1weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OWFjNDk5MDFiODMzZTc2OWM3ZDZmMjFlOGRiZDdiMzAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNjc4MWY2YzQyYmJjNTQ3ZDUwOGQ2ZmE2NzIwYWM4ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YjI4NjVkNGY1MTg3OTRiOTZhODM0ZmM4MWI1Njg0MjhkYWEwZWY5MjAzN2RhMmU5Mjg4YjRhZjVkOGRkNzM2IgorCitpbmhlcml0IHB5cGkKKworUFlQSV9QQUNLQUdFID0gIkFXU0lvVFB5dGhvblNESyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5b3BlbnNzbCBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmFlOTc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjIuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYwppbmRleCA4NjZjZTc4Li41ZTZjYTNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWwuaW5jCkBAIC0zLDggKzMsOCBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNmVlYWFiYzkyY2ZjMmQwM2Y1M2U3ODkzMjRkNzI5MiIKIAotU1JDX1VSSVttZDVzdW1dID0gImFmYTIwYmM1NWIwZTk5MTgzMzAzMDEyOWFkNDk4ZjM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1MzVjNDQwMzgwMmY2ZWIzODE3M2NkNDg2M2U0MTllMjI3NDkyMWEwMWE4YWFkOGE1YjQ5N2MxMzFjNjI4NzUiCitTUkNfVVJJW21kNXN1bV0gPSAiNjAyMjhiM2NlOTNhMjAzMzU3MTU4YjkwOWFmZThhZTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjAwN2RhZjcxNGQwY2Q1NTI0YmJlNDM2ZTJkNDJiM2MyMGU2OGRhNjYyODk1NTkzNDFlNDhkMmNkNmQyNTgxMSIKIAogUFlQSV9QQUNLQUdFID0gIkJhYmVsIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbF8yLjMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsXzIuNS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbF8yLjMuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWxfMi41LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjExY2ZkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkJhY2twb3J0IG9mIGZ1bmN0b29scy5scnVfY2FjaGUgZnJvbSBQeXRob24gMy4zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2phcmFjby9iYWNrcG9ydHMuZnVuY3Rvb2xzX2xydV9jYWNoZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9NDI7ZW5kbGluZT00MjttZDU9OThmYzM2NThlNTk3MGQyNmY2YjIxMDk4MDhjNzY2YmUiCi0KLVBZUElfUEFDS0FHRSA9ICJiYWNrcG9ydHMuZnVuY3Rvb2xzX2xydV9jYWNoZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyNmEyMjMyNTBiZDI0ZWEyZTBhZDZjZTQ3YjE5MDg0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ0NGEyMWJjZWM0YWUxNzdkYTU1NDMyMWY4MWE3OGRjODc5ZWFhOGY2ZWE5OTIwY2I5MDQ4MzA1ODVkMzFlOTUiCi0KLURFUEVORFMgPSAicHl0aG9uLXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjE0MzZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS40LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQmFja3BvcnQgb2YgZnVuY3Rvb2xzLmxydV9jYWNoZSBmcm9tIFB5dGhvbiAzLjMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vamFyYWNvL2JhY2twb3J0cy5mdW5jdG9vbHNfbHJ1X2NhY2hlIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT00NztlbmRsaW5lPTQ3O21kNT05OGZjMzY1OGU1OTcwZDI2ZjZiMjEwOTgwOGM3NjZiZSIKKworUFlQSV9QQUNLQUdFID0gImJhY2twb3J0cy5mdW5jdG9vbHNfbHJ1X2NhY2hlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjk1NGU3ZDVlMmNhMGYwZjY2YWQyZWQxMmJhODAwZTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzFmMjM1ODUyZjg4ZWRjMTU1OGQ0MjhkODkwNjYzYzQ5ZWI0NTE0ZmZlYzlmMzY1MGU3ZjNjOWU0YTEyZTM2ZiIKKworREVQRU5EUyArPSAicHl0aG9uLXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKKworaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjdhM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0LmluYwpAQCAtMCwwICsxLDE1IEBACitERVNDUklQVElPTiA9ICJNb2Rlcm4gcGFzc3dvcmQgaGFzaGluZyBmb3IgeW91ciBzb2Z0d2FyZSBhbmQgeW91ciBzZXJ2ZXJzLiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmN2JiMDk0YzcyMzJiMDU4YzdlOWYyZTQzMWYzODljIgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tY2ZmaS1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMGRhOGI0MDc5MGNhYWQ5OWM0MDg2ZGJhNTMzMTU0YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjQ1YzhkMGFkODQ1MzA4ZGUzZWI5YmU5OGI2ZmQyMmE0NmVjNTQxMmJmYzY2NGE0MjNlNDExY2RkOGY1NDg4IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWNmZmkgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0XzMuMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0XzMuMS4zLmJiCmluZGV4IGM2OTBmMGQuLjI0MzMzNTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdF8zLjEuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHRfMy4xLjMuYmIKQEAgLTEsMTUgKzEsMiBAQAotREVTQ1JJUFRJT04gPSAiTW9kZXJuIHBhc3N3b3JkIGhhc2hpbmcgZm9yIHlvdXIgc29mdHdhcmUgYW5kIHlvdXIgc2VydmVycy4iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjdiYjA5NGM3MjMyYjA1OGM3ZTlmMmU0MzFmMzg5YyIKLQotREVQRU5EUyA9ICJweXRob24tY2ZmaS1uYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMGRhOGI0MDc5MGNhYWQ5OWM0MDg2ZGJhNTMzMTU0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjQ1YzhkMGFkODQ1MzA4ZGUzZWI5YmU5OGI2ZmQyMmE0NmVjNTQxMmJmYzY2NGE0MjNlNDExY2RkOGY1NDg4IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY2ZmaSBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0iCitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWJjcnlwdC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjBkOTg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVhdXRpZnVsc291cDQuaW5jCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiU2NyZWVuLXNjcmFwaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICIgaHR0cHM6Ly93d3cuY3J1bW15LmNvbS9zb2Z0d2FyZS9CZWF1dGlmdWxTb3VwL2JzNCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PWYyZDM4ZDhhNDBiZjczZmQ0YjNkMTZjYTJlNTg4MmQxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzE3NzE0ZDBmOTFhMjNiNzA4YTU5MmNiM2M2OTc3MjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODA4YjZhYzkzMmRjY2IwYTQxMjY1NThmN2RmZGNmNDE3MTBkZDQ0YTRlZjQ5N2EwYmI1OWE3N2Y5ZjA3OGU4OSIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCisgICAgJHtQWVRIT05fUE59LWNvcmUgXAorICAgICR7UFlUSE9OX1BOfS1odG1sNWxpYiBcCisgICAgJHtQWVRIT05fUE59LWx4bWwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNF80LjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0XzQuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNzI4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNF80LjYuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tYmVhdXRpZnVsc291cDQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I2ZTBkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5LmluYwpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIkEgaGlnaC1sZXZlbCBQeXRob24gZWZmaWNpZW50IGFycmF5cyBvZiBib29sZWFucyAtLSBDIGV4dGVuc2lvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbGFuc2NobmVsbC9iaXRhcnJheSIKK0xJQ0VOU0UgPSAiUFNGIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2JhNDY5MzUzZjlmMmEyNDRiMjA3NTkwMjM1MWUzN2QiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODI1MTg0ZjU0ZjRkOTM1MDhhMjgwMzFiNGM2NWQzYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZGE1MDEzNTZlNDhhODNjNjFmNDc5MzkzNjgxYzFiYzRiOTRlNWEzNGFjZTdlMDhjYjI5ZTdkZDkyOTBhYjE4IgorCitpbmhlcml0IHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheV8wLjguMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5XzAuOC4xLmJiCmluZGV4IDE0NWYxZmIuLmY3OGM3YWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5XzAuOC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5XzAuOC4xLmJiCkBAIC0xLDExICsxLDIgQEAKLVNVTU1BUlkgPSAiQSBoaWdoLWxldmVsIFB5dGhvbiBlZmZpY2llbnQgYXJyYXlzIG9mIGJvb2xlYW5zIC0tIEMgZXh0ZW5zaW9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lsYW5zY2huZWxsL2JpdGFycmF5IgotTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYmE0NjkzNTNmOWYyYTI0NGIyMDc1OTAyMzUxZTM3ZCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM4MjUxODRmNTRmNGQ5MzUwOGEyODAzMWI0YzY1ZDNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkYTUwMTM1NmU0OGE4M2M2MWY0NzkzOTM2ODFjMWJjNGI5NGU1YTM0YWNlN2UwOGNiMjllN2RkOTI5MGFiMTgiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1iaXRhcnJheS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW4uaW5jCmluZGV4IDE4NzhmMzEuLjFkYmM4MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuLmluYwpAQCAtMyw3ICszLDcgQEAKIExJQ0VOU0UgPSAiTEdQTHYzIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTM4MTM4YmFhMTAwZDcyNTk5MzQ1OTA4NTBiYzA0MDZlIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZjY1M2FlY2Y4YjkwMzRiYmJhMzJjYzA0Y2E2YTdiNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWRhYmI0MjZlNmNkMTFjMmRjN2E5ODk4MDM0MDEzNWFhMGViMDIxNDNiMGQ1MWJmMTRlM2U2MTc4YzEzMWNjMyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMmExNjQ4ODdjMWM2YTJhMjQ5MGI1YWZiMzZlMzZkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiOTYxYjZjZTc1YTdmMDhiNTg2ZjRkMmNhZThjZGM0MDk4ODE3MzFiODUxZmM0MDVmYTIxY2IxNmJhZDAwZDg3IgogCiBQWVBJX1BBQ0tBR0U9InB5dGhvbi1jYW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW5fMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW5fMi4wLjBiMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuXzEuNS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW5fMi4wLjBiMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2Fzc2FuZHJhLWRyaXZlci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYwppbmRleCAzMTQ2YmM3Li5hNTIyZTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYwpAQCAtOCw4ICs4LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJlZTQxMTEyYTQ0ZmU3MDE0ZGNlMzNlMjY0NjhiYTkzIgogU1JDTkFNRSA9ICJjYXNzYW5kcmEtZHJpdmVyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNzU2MWE4OWNkOGE0MzJhMjJjZjMzYWJlZjc2YjY0ZWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTBiMGM4ODg1NGYzYmRkY2ZkOTk0Y2IyMDhkNzgwNTA3ZGU2MjUyNGVmOGRjYjRmMDY4YzA4NGQzMzViNzA1NCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNjU5YjA3NGUxMGM2MTNlNWJhMWNkZjkyOTc0YTU3YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NDNiZWQwZmFjMDhlZTkxNjMwZjBmMzU1NTZiYjYyYzNiNGIwMDdjMjBkNGU2ZThkMzQ5Zjc2OWVhNjQ4MTUwIgogCiBESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiIFwKICAgICAtLW5vLWxpYmV2IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaS5pbmMKaW5kZXggMWRmMjNjZi4uZTU1MGY3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaS5pbmMKQEAgLTcsNyArNyw3IEBACiBMSUNFTlNFID0gIklTQyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY3N2Y2MWQxNGVlNmZlYWM0MjI4ZDNlYmQyNmNjMWYxIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYjcyNTIxYThiYWRmZjVlODlhOGVhYmVhNTg2ZDc5YWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODE4NzdmYjdhYzEyNmU5MjE1ZGZiMTViZmVmNzExNWZkYzMwZTc5OGUwMDEzMDY1MTU4ZWVkMDcwN2ZkOTljZSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OGU4MzcwZGE4YjM3MGExNmUyMjNlZTljN2I2YjA2MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDUyM2QyZWZiNjA1MjNlMTEzYjQ0NjAyMjk4ZjA5NjBlOTAwMzg4Y2YzYmI2MDQzZjY0NWNmNTdlYTllM2Y1IgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpXzIwMTcuMS4yMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmlfMjAxNy43LjI3LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmlfMjAxNy4xLjIzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpXzIwMTcuNy4yNy4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmkuaW5jCmluZGV4IDIxZTQxYzEuLjhkY2RiNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmkuaW5jCkBAIC0xLDEwICsxLDExIEBACiBTVU1NQVJZID0gIkZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIGZvciBQeXRob24gY2FsbGluZyBDIGNvZGUiCitIT01FUEFHRSA9ICJodHRwOi8vY2ZmaS5yZWFkdGhlZG9jcy5vcmcvIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01Njc3ZTJmZGJmN2NkZGE2MWQ2ZGQyYjU3ZGY1NDdiZiIKIERFUEVORFMgKz0gImxpYmZmaSAke1BZVEhPTl9QTn0tcHljcGFyc2VyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYjhmYTdjY2I4Nzc5MDUzMWRiMzMxNmFiMTdhYTgyNDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTYzZTBiZDUzZmRhMDNjMTUxNTczMjE3YjNhNDliM2FiYWQ4ODEzZGU5ZGQwNjMyZTEwMDkwZjYxOTBmZGFmOCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNzMxNDg3MzI0YjUwMWM4Mjk1MjIxYjYyOWQzZjVmMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjg3ZGQ5MWMwYzQwNzM3NThkMDczMzRjMWU1ZjcxMmNlOGZlNDhmMDA3Yjg2ZjgyMzg3NzM5NjNlZTcwMGE2IgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiIFwKICAgICAke1BZVEhPTl9QTn0taW8gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaV8xLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS4xMS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpXzEuOS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpXzEuMTEuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0LmluYwppbmRleCA0MmI2NGEyLi42MDM1NDg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0LmluYwpAQCAtNCw1ICs0LDEwIEBACiAKIGluaGVyaXQgcHlwaQogCi1TUkNfVVJJW21kNXN1bV0gPSAiOTZlMzY0YWJkYmRlMjBiNWY2ZGJiZTJhZDlkNTRkMDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGY3ODMyZTdjNTgzMzQ4YTllZGRkOTI3ZWU4NTE0YjNiZjcxN2MwNjFmNTdiMjFkYmU3Njk3MjExNDU0ZDliYiIKKyMgc2V0dXAucHkgb2YgY2hhcmRldCBuZWVkcyB0aGlzLgorREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2RkMWJhN2Y5Yzc3ZTMyMzUxYjBhMGNmYWNmNDA1NWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRhYjkyZWQxYzRkNGYxNjkxNmUwNTkwNmI2Yjc1YTZjMGZiNWRiODIxY2M2NWU3MGNiZDY0YTNlMmE1ZWFhZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldF8zLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXRfMy4wLjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXRfMy4wLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXRfMy4wLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC43LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzA5MmE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkV4dHJhIGZlYXR1cmVzIGZvciBzdGFuZGFyZCBsaWJyYXJ5J3MgY21kIG1vZHVsZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5weXRob24ub3JnL2NtZDIvIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9NDM7ZW5kbGluZT00MzttZDU9MGYxM2M5Y2ZjNzUyODgyMjNjZjdlZGQyZjNiOTg1YTIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZTkyZmYxYjczNzY1ZDY0YmYyMzBlOTQ1MTJkMGI3YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YWI3NmExZjA3ZGQ1ZmQxY2MzYzE1YmE0MDgwMjY1ZjMzYjgwYzdmZDc0OGQ3MWJkNjlhNTFkNjBiMzBmNTFhIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKLSAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwKLSAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuNy43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjcuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTFlZjVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjcuNy5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkV4dHJhIGZlYXR1cmVzIGZvciBzdGFuZGFyZCBsaWJyYXJ5J3MgY21kIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5weXRob24ub3JnL2NtZDIvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9NDk7ZW5kbGluZT00OTttZDU9MGYxM2M5Y2ZjNzUyODgyMjNjZjdlZGQyZjNiOTg1YTIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NzZiNzhhZGQ2ZDY1MmI0OGRjZjkzNjJjZWNlODhlZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNGUyZmI5ZmM2NTZhZGNjYzRkMDFkZmQ1NWFiNWE5YjA1ODkwZTk2MTk1MDU0M2Y2OTJlNzg4NTcyNWMyZDcyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMKaW5kZXggMTIyNTI4Yi4uZTllNDAxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzLmluYwpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiVGVzdCB2ZWN0b3JzIGZvciB0aGUgY3J5cHRvZ3JhcGh5IHBhY2thZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIkFwYWNoZS0yLjAgfCBCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YzM2MTdkYjRmYjZmYWUwMWYxZDI1M2FiOTE1MTFlNCIKQEAgLTcsOCArOCw4IEBACiAgICAgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSBcCiAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjM2YyYTY2ZDcxYTA0MTM4NzlkNGRkMDAxYzU2ZGU5NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YmU0ZWVlOGExMWRlZWU1YzJmMDBlMzg5YjQ5ZGU4Y2UyNjQyMTMwMjgyZDFjZDBhZGZmYjJmN2RiZTBhY2RjIgorU1JDX1VSSVttZDVzdW1dID0gIjFkYjRjMDkwNjJhM2E4ZTFlMmQxZjVlM2U0ZDc1MmQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlYjgzMWFhNzM2NjNhMjI0ZjRkNzUyMDQ4M2VkMDJkYTU0NDUzM2JiMDNiMjZlYzA3YTVmOWEwZGQwOTQxZTEiCiAKIFBZUElfUEFDS0FHRSA9ICJjcnlwdG9ncmFwaHlfdmVjdG9ycyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjAuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMS43LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LmluYwppbmRleCA2MDFiMTJiLi44N2ZmMTZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlByb3ZpZGVzIGNyeXB0b2dyYXBoaWMgcmVjaXBlcyBhbmQgcHJpbWl0aXZlcyB0byBweXRob24gZGV2ZWxvcGVycyIKK0hPTUVQQUdFID0gImh0dHBzOi8vY3J5cHRvZ3JhcGh5LmlvLyIKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCB8IEJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ1ZWRlMTI1ZWQwOGQ0ZmQxNGVjNDRkMzM0YmRiMzg4IgogCkBAIC05LDggKzEwLDggQEAKICAgICAke1BZVEhPTl9QTn0tc2l4IFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gImZhZGU2NmRlNDM3MzkyZWQxYmE2OTgwNzY4NjI2MjA0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg3OGNiNjhiM2RhM2Q0OTNmZmQ2OGYzNmRiMTFjMjlkZWVlNjIzNjcxZDMyODdjM2Y4ZDY4NTExN2ZmZGE5YTkiCitTUkNfVVJJW21kNXN1bV0gPSAiMjRjYmRhYjNmZGEyMmJlMzFkZDNhZWYyODA4ZjVkMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA0YmIyNDI1MDg2YzNmZTg2ZjdiYzQ4OTE1MjkwYjEzZTc5ODQ5NzgzOWZiYjE4YWI3ZjZkZmZjZjk4Y2MzYSIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWNmZmkgXApAQCAtNTQsNCArNTUsNiBAQAogICAgICR7bGliZGlyfS8ke1BZVEhPTl9QTn0yLjcvc2l0ZS1wYWNrYWdlcy8ke1NSQ05BTUV9L2hhem1hdC9iaW5kaW5ncy8uZGVidWcgXAogIgogCitMREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjAuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5XzEuNy4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHlfMi4wLjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jCmluZGV4IDFlY2RjYzkuLjU3MmNiOTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYwpAQCAtNyw4ICs3LDggQEAKIFBZUElfUEFDS0FHRSA9ICJDeXRob24iCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjY0MmM4MTI4NWUxYmI4MzNiMTRhYjNmNDM5OTY0MDg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxNDFkMWY5YzI3YTA3YjVhOTNmN2RjNTMzOTQ3MjA2N2UyZDcxNDBkMWM1YTllMjAxMTJhNTY2NWNhNjAzMDYiCitTUkNfVVJJW21kNXN1bV0gPSAiYjkzNzUwYjM0MzgyYjAyNWQ2NzhiZWE4MTliNzQ5MWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTY4NDBhMmJhMjcwNGY0ZmZiNDBlNDU0YzM2ZjczYWViNDQwYTQwMDU0NTNlZThkN2ZmNmEwMGQ4MTJiYTE3NiIKIAogaW5oZXJpdCBweXBpCiAKQEAgLTE3LDMgKzE3LDEwIEBACiAgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAogICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCiAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCisJZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAnXiMhLipweXRob24nICR7RH1gOyBkbworCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52ICR7UFlUSE9OX1BOfXwnICRQWVRIU0NSSVBUCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uXzAuMjUuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI3LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI1LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI3LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbi8wMDAxLVdvcmthcm91bmQtZm9yLWlzc3VlLTItMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbi8wMDAxLVdvcmthcm91bmQtZm9yLWlzc3VlLTItMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmI4NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGFlbW9uLzAwMDEtV29ya2Fyb3VuZC1mb3ItaXNzdWUtMi0xLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMDk4MWVlZTlmMDE5OGMyMDQ1ZGMwZWFhNzhhMDA1ZDA2ZmM3YmZlNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBFZHVhcmRvIE1vcmVpcmEgZG9zIFNhbnRvcyA8Y2Vtc0BjZW1zaG9zdC5jb20uYnI+CitEYXRlOiBUdWUsIDI4IE1hciAyMDE3IDE4OjIzOjQ0IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFdvcmthcm91bmQgZm9yIGlzc3VlIDIgWzFdCisKK1sxXSBodHRwczovL3BhZ3VyZS5pby9weXRob24tZGFlbW9uL2lzc3VlLzIKKy0tLQorIHZlcnNpb24ucHkgfCA3ICsrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdmVyc2lvbi5weSBiL3ZlcnNpb24ucHkKK2luZGV4IGQ1ODQyMmEzNzdlZS4uMjkzZTJkNjRjMmI3IDEwMDY0NAorLS0tIGEvdmVyc2lvbi5weQorKysrIGIvdmVyc2lvbi5weQorQEAgLTY0OCw5ICs2NDgsMTAgQEAgY2xhc3MgQ2hhbmdlbG9nQXdhcmVEaXN0cmlidXRpb24oZGlzdHV0aWxzLmRpc3QuRGlzdHJpYnV0aW9uLCBvYmplY3QpOgorIAorICAgICBAbHJ1X2NhY2hlKG1heHNpemU9MTI4KQorICAgICBkZWYgZ2V0X3ZlcnNpb25faW5mbyhzZWxmKToKKy0gICAgICAgIGNoYW5nZWxvZ19wYXRoID0gZ2V0X2NoYW5nZWxvZ19wYXRoKHNlbGYpCistICAgICAgICB2ZXJzaW9uX2luZm8gPSBnZW5lcmF0ZV92ZXJzaW9uX2luZm9fZnJvbV9jaGFuZ2Vsb2coY2hhbmdlbG9nX3BhdGgpCistICAgICAgICByZXR1cm4gdmVyc2lvbl9pbmZvCisrICAgICAgICByZXR1cm4geworKyAgICAgICAgICAgICd2ZXJzaW9uJzogJzIuMS4yJywKKysgICAgICAgICAgICAnbWFpbnRhaW5lcic6ICdCZW4gRmlubmV5JworKyAgICAgICAgfQorIAorICAgICBkZWYgZ2V0X3ZlcnNpb24oc2VsZik6CisgICAgICAgICB2ZXJzaW9uX2luZm8gPSBzZWxmLmdldF92ZXJzaW9uX2luZm8oKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25fMi4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25fMi4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMxOGUyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbl8yLjEuMi5iYgpAQCAtMCwwICsxLDI3IEBACitERVNDUklQVElPTiA9ICJMaWJyYXJ5IHRvIGltcGxlbWVudCBhIHdlbGwtYmVoYXZlZCBVbml4IGRhZW1vbiBwcm9jZXNzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9wYWd1cmUuaW8vcHl0aG9uLWRhZW1vbi8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworREVQRU5EUyA9ICJweXRob24tZG9jdXRpbHMiCitSREVQRU5EU18ke1BOfSA9ICJweXRob24tZG9jdXRpbHMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLWxvY2tmaWxlICg+PSAwLjEwKSBcCisgICAgICAgICAgICAgICAgICBweXRob24tcmVzb3VyY2UgXAorIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQXBhY2hlLTIuMDttZDU9ODlhZWE0ZTE3ZDk5YTdjYWNkYmVlZDQ2YTAwOTZiMTAiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YzU3MzQzZDgxZjJhOTZjNTFjZmZlYWI5ODJiMDRkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjFjODU5YmU1YzEyYWU3ZDQyODZkYzY5NTFlODdlOWUxYTcwYTg4MmE4YjQxZmQ5MjZlZmMxZWM0MjE0ZjczIgorCisjIEZpeCBmb3IgYnVpbGQgZXJyb3IgaW4gWW9jdG86CisjICAgICBpID0gcC5yZmluZCgnLycpICsgMQorIyBBdHRyaWJ1dGVFcnJvcjogJ05vbmVUeXBlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAncmZpbmQnCisjUyA9ICIke1dPUktESVJ9L3B5dGhvbi1kYWVtb24iCitTUkNfVVJJX2FwcGVuZCA9ICIgXAorICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtV29ya2Fyb3VuZC1mb3ItaXNzdWUtMi0xLnBhdGNoIFwKKyIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1kYWVtb24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMKaW5kZXggZDBlYmM3MC4uY2E1MTA1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWwuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsLmluYwpAQCAtMiwxMCArMiwxMCBAQAogREVTQ1JJUFRJT04gPSAiVGhlIGRhdGV1dGlsIG1vZHVsZSBwcm92aWRlcyBwb3dlcmZ1bCBleHRlbnNpb25zIHRvIHRoZSBkYXRldGltZSBtb2R1bGUgYXZhaWxhYmxlIGluIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeS4iCiBIT01FUEFHRSA9ICJodHRwczovL2RhdGV1dGlsLnJlYWR0aGVkb2NzLm9yZyIKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTE0MzBiMzNjOTAwZjQ1Zjk5OWM0NTllZTI5Y2E0OTMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMWY3MmQ0Y2FkMzY3NWZiMDkxNTM3YjliMmYzMmRlMCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjZlMzhmOTFlOGM5NGMxNWE3OWNlMjI3NjhkZmVjYTg3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyYTJmOGRmM2Q2NmY4NzgzNzNmZDAwNzJlYWNmNGVlNTIxOTRiYTMwMmUwMDA4MjgyOGUwZDI2M2IwNDE4ZDIiCitTUkNfVVJJW21kNXN1bV0gPSAiZGIzOGY2YjQ1MTFjZWZkNzYwMTQ3NDViYjBjYzQ1YTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODkxYzM4YjJhMDJmNWJiMWJlM2U0NzkzODY2YzhkZjQ5YzdkMTliYWFiZjljMWJhZDYyNTQ3ZTBiNDg2NmFjYSIKIAogUFlQSV9QQUNLQUdFID0gInB5dGhvbi1kYXRldXRpbCIKIGluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWxfMi42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbF8yLjYuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWxfMi42LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsXzIuNi4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3IuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yLmluYwppbmRleCBhZWFlMjMxLi44NTlmOTcyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3IuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvci5pbmMKQEAgLTksOCArOSw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT04OTNmODk2NDEzODI2MDk2Y2U1MjcwYzcwMGE0OThmZCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjczNjQ0YzhmMGJkNDk4M2QxYjZhMzRiNDlhZGVjMGFlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1M2Q2YmYwODJiMTAwZjQzMjI5Y2Y1NDdmNGY5N2Y5N2U5NzBmNWFkNjQ1ZWU3NjAxZDU1ZmY4N2FmZGZlNzYiCitTUkNfVVJJW21kNXN1bV0gPSAiYTBmN2Y0ZmUwMGFlMmRkZTkzNDk0ZDkwYzE5MmNmOGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NiNjRkMzhjYjgwMDI5NzE3MTBjODg5OWZiZGZiODU5YTIzYTM2NGI3Yzk5ZGFiMTlkMWY3MTljMmJhMTZiNSIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvcl80LjAuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3JfNC4xLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvcl80LjAuMTEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvcl80LjEuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U5MDRiNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aC5pbmMKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJNaWdyYXRpb25zIGZvciBEamFuZ28iCitERVNDUklQVElPTiA9ICJTb3V0aCBpcyBhbiBpbnRlbGxpZ2VudCBkYXRhYmFzZSBtaWdyYXRpb25zIGxpYnJhcnkgZm9yIHRoZSBEamFuZ28gd2ViIGZyYW1ld29yay4gSXQgaXMgZGF0YWJhc2UtaW5kZXBlbmRlbnQgYW5kIERWQ1MtZnJpZW5kbHksIGFzIHdlbGwgYXMgYSB3aG9sZSBob3N0IG9mIG90aGVyIGZlYXR1cmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3V0aC5hZXJhY29kZS5vcmcvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTE3O2VuZGxpbmU9MTg7bWQ1PTIxNTVkOGFlMjFlN2MyMzEwMWQ1ZmViYWM2OTZiMjdlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzc2YTk3NThiMjAxMWJjM2I2YzM5Zjg4MWJiYTJmNjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM2MGJkMzE4OThmOWRmNTlmNmZhYTc4NjU1MTA2NWJiYTQ1YjM1ZTdlZTNjMzliMzgxYjRmYmZlZjczOTJmNCIKKworUFlQSV9QQUNLQUdFID0gIlNvdXRoIgoraW5oZXJpdCBweXBpCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kamFuZ28gXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aF8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aF8xLjAuMi5iYgppbmRleCAzYTI3NzU4Li4zNTdiNzY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28tc291dGhfMS4wLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoXzEuMC4yLmJiCkBAIC0xLDE3ICsxLDIgQEAKLVNVTU1BUlkgPSAiTWlncmF0aW9ucyBmb3IgRGphbmdvIgotREVTQ1JJUFRJT04gPSAiU291dGggaXMgYW4gaW50ZWxsaWdlbnQgZGF0YWJhc2UgbWlncmF0aW9ucyBsaWJyYXJ5IGZvciB0aGUgRGphbmdvIHdlYiBmcmFtZXdvcmsuIEl0IGlzIGRhdGFiYXNlLWluZGVwZW5kZW50IGFuZCBEVkNTLWZyaWVuZGx5LCBhcyB3ZWxsIGFzIGEgd2hvbGUgaG9zdCBvZiBvdGhlciBmZWF0dXJlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vc291dGguYWVyYWNvZGUub3JnLyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT0xNztlbmRsaW5lPTE4O21kNT0yMTU1ZDhhZTIxZTdjMjMxMDFkNWZlYmFjNjk2YjI3ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImM3NmE5NzU4YjIwMTFiYzNiNmMzOWY4ODFiYmEyZjY2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzNjBiZDMxODk4ZjlkZjU5ZjZmYWE3ODY1NTEwNjViYmE0NWIzNWU3ZWUzYzM5YjM4MWI0ZmJmZWY3MzkyZjQiCi0KLVBZUElfUEFDS0FHRSA9ICJTb3V0aCIKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kamFuZ28gXAotICAgICIKK3JlcXVpcmUgcHl0aG9uLWRqYW5nby1zb3V0aC5pbmMKK2luaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmZDcwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJBIGhpZ2gtbGV2ZWwgUHl0aG9uIFdlYiBmcmFtZXdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRqYW5nb3Byb2plY3QuY29tLyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjA5ZWI0NzIwNjYxNGE0OTU0YzUxZGI4YTk0ODQwZmEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4Y2VmMGQ0MmFhYmFjYmM0MTRlYzRmYmJiNjA1NmYzYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxODM2ODc4MTYyZGZkZjg2NTQ5MmJhY2ZkZmYwMzIxZTRlZThmMWU3ZDUxZDkzMTkyNTQ2MDAwYjU0OTgyYjI5IgorCitQWVBJX1BBQ0tBR0UgPSAiRGphbmdvIgoraW5oZXJpdCBweXBpCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RqYW5nbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0taW1wb3J0bGliIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXBpcCBcCisgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEyNDJkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGhpZ2gtbGV2ZWwgUHl0aG9uIFdlYiBmcmFtZXdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRqYW5nb3Byb2plY3QuY29tLyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjA5ZWI0NzIwNjYxNGE0OTU0YzUxZGI4YTk0ODQwZmEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZmNlMDJmMWU2NDYxZmVjMjFmMWYxNWVhNzQ4OTkyNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZGI4OTM3NGI2OTFiOWM4YjA1NzYzMmE2Y2Q2NGIxOGQwOGRiMmY0ZDYzYjRkNGFmNjAyNDI2N2FiOTY1ZjhiIgotCi1QWVBJX1BBQ0tBR0UgPSAiRGphbmdvIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGphbmdvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1pbXBvcnRsaWIgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAke1BZVEhPTl9QTn0tcGlwIFwKLSAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb18xLjExLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZDc3MTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMS41LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tZGphbmdvLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb2N1dGlsc18wLjE0cmMyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jdXRpbHNfMC4xNHJjMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODQzNmExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jdXRpbHNfMC4xNHJjMi5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlRleHQgcHJvY2Vzc2luZyBzeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTM1YTIzZDQyYjYxNTQ3MDU4MzU2MzEzMjg3MmM5N2Q2IgorCitERVBFTkRTID0gInB5dGhvbiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZG9jdXRpbHMvZG9jdXRpbHMtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjJmNGJlZTY0NTE5NTgyNTJmN2JlYzcxZjE4YjA1YmUzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjYWVlMGJjYjJhNDlmZGYyNGZjZmE3MDg0OWE2MGFiYjdhMTgxYWE2OGIwMzBmN2NiNzQ5NDA5NjE4MTgzMGMiCisKK1MgPSAiJHtXT1JLRElSfS9kb2N1dGlscy0ke1BWfSIKKworaW5oZXJpdCBkaXN0dXRpbHMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVudW0zNF8xLjEuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVudW0zNF8xLjEuNi5iYgppbmRleCAzMWQyMTQ3Li5kNTBiNWM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbnVtMzRfMS4xLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW51bTM0XzEuMS42LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJiYWNrcG9ydCBvZiBQeXRob24gMy40J3MgZW51bSBwYWNrYWdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3N0b25lbGVhZi9lbnVtMzQiCiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2VudW0vTElDRU5TRTttZDU9MGE5N2E1M2E1MTQ1NjRjMjBlZmQ3YjJlODk3NmM4N2UiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2XzAuNi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXZfMC42LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NDgyNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXZfMC42LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBldmRldiBsaWIiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ3ZhbGtvdi9weXRob24tZXZkZXYiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE4ZGViZGRiYjNmNTJjNjYxYTEyOTcyNGE4ODNhOGUyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDBjOGMwMWIzMzc4NzRjNjQ2Mzg5NDhhNGQ3Y2I0MDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTI2ODc0NGQ4NDkzYzI3MzYxNDAzNmNmNjQyM2ZhMTc1OTUyYzY0ZmMxZDhkMjY1MjEwZTQ4YTQ0MzdhNmFmMiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0tZmNudGwgXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8wLjcuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2XzAuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NzVkYTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8wLjcuMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlB5dGhvbiBldmRldiBsaWIiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ3ZhbGtvdi9weXRob24tZXZkZXYiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE4ZGViZGRiYjNmNTJjNjYxYTEyOTcyNGE4ODNhOGUyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzdlODU1YWU5Zjk3Zjg2OWE1OWU3NWIyOWYwNWNlNzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdlZGFmYzQ2OWE0MTRmNThiNTFhZjFiZmI5ZWUyYmFiYjlmNjI2ZGQyZGY1MzBkNzFjMTE3Njg3MTg1MGFhMSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAke1BZVEhPTl9QTn0tZmNudGwgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1weW1vbmdvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ28uaW5jCmluZGV4IDZkNTQ4MzcuLmUxMTI4M2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ28uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ28uaW5jCkBAIC0zLDEwICszLDEwIEBACiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWl0c3VoaWtvL2ZsYXNrLyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9mbGFza19weW1vbmdvL3dyYXBwZXJzLnB5O3N0YXJ0bGluZT0xO2VuZGxpbmU9MjQ7bWQ1PWRmZjk5OGQ1YTg0Njk1MDM2MTJlZTc3NTdmM2EyMDUyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZmxhc2tfcHltb25nby93cmFwcGVycy5weTtzdGFydGxpbmU9MTtlbmRsaW5lPTI0O21kNT00MjRjNGUxMDQ3ZDI4ZTAxYjRlNDYzNGEwNjljMDE5ZCIKIAotU1JDX1VSSVttZDVzdW1dID0gImNiZjVmYmNkMjI3MTlkODM5M2U0ODFiY2FjMzZiZTA1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1ODYyZGFlY2UxYzk3OWE5ZWFiNWY5ZDFlMzJlYjc4MTc3NTg0MjI3M2I2MjlhZTVkMWNiMjhlNjk1M2RmNzgiCitTUkNfVVJJW21kNXN1bV0gPSAiZDdhMWI3MTdmMjcxNTRlMWYzYTM1NWY4ZWMyNDY3ZDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmJhYWEyYmE1MTA3ZDcyYjNhOGJkNGI1YzBjODg4MTMxNmUzNTM0MGFkMWFlOTc5Y2MxM2YxZjNjODg0M2IzZCIKIAogUFlQSV9QQUNLQUdFID0gIkZsYXNrLVB5TW9uZ28iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ29fMC40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1weW1vbmdvXzAuNS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1weW1vbmdvXzAuNC4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1weW1vbmdvXzAuNS4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zcWxhbGNoZW15XzIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTkwZjM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQWRkcyBTUUxBbGNoZW15IHN1cHBvcnQgdG8geW91ciBGbGFzayBhcHBsaWNhdGlvbi4iCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVlZDFiOGNjNzQxNTE1YTgzNWE3ZjZiZjJmNjJlZjRhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTkzZTZhZjM4OWFmYWM2NjY2NzMzZTM2OWMwNmM3OTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjBkODI0MWVmYmE3MjNkN2I4NzhmNzM1NTBmNWQzYzBmYmIwNDI0MTYxMjNiNTJiMzY2NDBiNzQ5MWZhMjA4YiIKLQotUFlQSV9QQUNLQUdFID0gIkZsYXNrLVNRTEFsY2hlbXkiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1zcWxhbGNoZW15ICR7UFlUSE9OX1BOfS1mbGFzayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zcWxhbGNoZW15XzIuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OTk3NjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zcWxhbGNoZW15XzIuMy4wLmJiCkBAIC0wLDAgKzEsMTIgQEAKK0RFU0NSSVBUSU9OID0gIkFkZHMgU1FMQWxjaGVteSBzdXBwb3J0IHRvIHlvdXIgRmxhc2sgYXBwbGljYXRpb24uIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZWQxYjhjYzc0MTUxNWE4MzVhN2Y2YmYyZjYyZWY0YSIKKworU1JDX1VSSVttZDVzdW1dID0gImM4NjQ0OWY0NGU5MGU5OTYxNDI4NzJhYzRiOTdmN2VlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhMTlmZjYyZTMxZjgyODI1YjU0Njc4MTFjNzZlMmExYzYwYmJhOTI3ZTE3NWZlMDkxYTZmNzM5MDYzZGQ4MjkiCisKK1BZUElfUEFDS0FHRSA9ICJGbGFzay1TUUxBbGNoZW15IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tc3FsYWxjaGVteSAke1BZVEhPTl9QTn0tZmxhc2siCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay5pbmMKaW5kZXggMDQ5MzVhNi4uNzZiNWZiYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2suaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLmluYwpAQCAtNiw4ICs2LDggQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTk4NjZiNzZiMDU0YWIzMGMyNzBjMGViOWQ3ZTQzZDciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjMWQzMGY1MWNmZjRhMzhmOTQ1NGIyMzMyOGExNWM1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5M2U4MDNjZGJlMzI2YTYxZWJkNWM1ZDM1Mzk1OTM5N2M4NWY4MjliZWM2MTBkNTljYjYzNWM5Zjk3ZDdjYThiIgorU1JDX1VSSVttZDVzdW1dID0gIjk3Mjc4ZGZkYWZkYTk4YmE3OTAyZTg5MGIwMjg5MTc3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5ZjQ0NDYxMjM3YjY5ZWNkOTAxY2M3Y2U2NmZlZWEwMzE5YjkxNTg3NDNkZDI3YTI4OTk5NjJhYjIxNGRhYzEiCiAKIENMRUFOQlJPS0VOID0gIjEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrXzAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFza18wLjEyLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrXzAuMTIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrXzAuMTIuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg4OWNmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudC5pbmMKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJBIGNvcm91dGluZS1iYXNlZCBQeXRob24gbmV0d29ya2luZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiZ2V2ZW50IGlzIGEgY29yb3V0aW5lLWJhc2VkIFB5dGhvbiBuZXR3b3JraW5nIGxpYnJhcnkgdGhhdCB1c2VzIGdyZWVubGV0IHRvIHByb3ZpZGUgXAorYSBoaWdoLWxldmVsIHN5bmNocm9ub3VzIEFQSSBvbiB0b3Agb2YgdGhlIGxpYmV2ZW50IGV2ZW50IGxvb3AuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nZXZlbnQub3JnIgorTElDRU5TRSA9ICJNSVQgJiBQeXRob24tMi4wICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGRlOTlhYWMyN2I0NzBjMjljNmMzMDllMGMyNzliNjUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTk9USUNFO21kNT01OTY2Y2QyYzY1ODI2NTZkMjhhYjNjMzNkYTM4NjBmOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kZXBzL2xpYmV2L0xJQ0VOU0U7bWQ1PWQ2YWQ0MTZhZmQwNDBjOTA2OThlZGNkZjFjYmVlMzQ3IgorREVQRU5EUyArPSAibGliZXZlbnQiCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tZ3JlZW5sZXQiCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tZ3JlZW5sZXQgXAorCQkgICR7UFlUSE9OX1BOfS1taW1lIFwKKwkJICAke1BZVEhPTl9QTn0tcHByaW50IFwKKwkJICAke1BZVEhPTl9QTn0tcmUgXAorCQkgIgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tZ2V2ZW50OiIKKworU1JDX1VSSV9hcHBlbmQgPSAiIFwKKyAgICBmaWxlOi8vbGliZXYtY29uZi5wYXRjaDtwYXRjaD0xO3BudW09MSBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZjBiYWYzNTUzODRmZTVmZjJlY2Y2Njg1MzQyMjU1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NzkxYzhhZTljNTdkNmYxNTMzNTQ3MzZlMWNjYWIxZTJiYWY2YzhkOWFlNWE3N2E5YWM5MGY0MWUyOTY2YjJkIgorCisjIFRoZSBweXRob24tZ2V2ZW50IGhhcyBubyBhdXRvcmVjb25mIGFiaWxpdHkKKyMgYW5kIHRoZSBsb2dpYyBmb3IgZGV0ZWN0aW5nIGEgY3Jvc3MgY29tcGlsZSBpcyBmbGF3ZWQKKyMgc28gYWx3YXlzIGZvcmNlIGEgY3Jvc3MgY29tcGlsZQorZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlzZWQgLWkgLWUgJ3MvXmNyb3NzX2NvbXBpbGluZz1uby9jcm9zc19jb21waWxpbmc9eWVzLycgJHtTfS9kZXBzL2xpYmV2L2NvbmZpZ3VyZQorCXNlZCAtaSAtZSAncy9eY3Jvc3NfY29tcGlsaW5nPW5vL2Nyb3NzX2NvbXBpbGluZz15ZXMvJyAke1N9L2RlcHMvYy1hcmVzL2NvbmZpZ3VyZQorfQorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUzZjQ4Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnRfMS4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkEgY29yb3V0aW5lLWJhc2VkIFB5dGhvbiBuZXR3b3JraW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJnZXZlbnQgaXMgYSBjb3JvdXRpbmUtYmFzZWQgUHl0aG9uIG5ldHdvcmtpbmcgbGlicmFyeSB0aGF0IHVzZXMgZ3JlZW5sZXQgdG8gcHJvdmlkZSBcCi1hIGhpZ2gtbGV2ZWwgc3luY2hyb25vdXMgQVBJIG9uIHRvcCBvZiB0aGUgbGliZXZlbnQgZXZlbnQgbG9vcC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdldmVudC5vcmciCi1MSUNFTlNFID0gIk1JVCAmIFB5dGhvbi0yLjAgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZGJiMzNkMDBlMWZkMzFjNzA0MTQ2MGE4MWFjMGJkMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9OT1RJQ0U7bWQ1PTU5NjZjZDJjNjU4MjY1NmQyOGFiM2MzM2RhMzg2MGY4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlcHMvbGliZXYvTElDRU5TRTttZDU9ZDZhZDQxNmFmZDA0MGM5MDY5OGVkY2RmMWNiZWUzNDciCi1ERVBFTkRTICs9ICJweXRob24tZ3JlZW5sZXQgbGliZXZlbnQiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWdyZWVubGV0IHB5dGhvbi1taW1lIHB5dGhvbi1wcHJpbnQgcHl0aG9uLXJlIgotCi1TUkNfVVJJX2FwcGVuZCA9ICIgXAotICAgIGZpbGU6Ly9saWJldi1jb25mLnBhdGNoO3BhdGNoPTE7cG51bT0xIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY3MDBhMjQzM2M4ZTA2MzU0MjVlNjc5ODc2MGVmYzgxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkZTMwMGQwZTMyYzMxMzExZTQyNmU0ZDVkNzNiMzY3NzdlZDk5YzJiYWMzZjhmYmFkOTM5ZWViMmMyOWZhN2MiCi0KLSMgVGhlIHB5dGhvbi1nZXZlbnQgaGFzIG5vIGF1dG9yZWNvbmYgYWJpbGl0eQotIyBhbmQgdGhlIGxvZ2ljIGZvciBkZXRlY3RpbmcgYSBjcm9zcyBjb21waWxlIGlzIGZsYXdlZAotIyBzbyBhbHdheXMgZm9yY2UgYSBjcm9zcyBjb21waWxlCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAtaSAtZSAncy9eY3Jvc3NfY29tcGlsaW5nPW5vL2Nyb3NzX2NvbXBpbGluZz15ZXMvJyAke1N9L2RlcHMvbGliZXYvY29uZmlndXJlCi0Jc2VkIC1pIC1lICdzL15jcm9zc19jb21waWxpbmc9bm8vY3Jvc3NfY29tcGlsaW5nPXllcy8nICR7U30vZGVwcy9jLWFyZXMvY29uZmlndXJlCi19Ci0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzU3Yzk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuMi4yLmJiCkBAIC0wLDAgKzEsMyBAQAorcmVxdWlyZSBweXRob24tZ2V2ZW50LmluYworaW5oZXJpdCBzZXR1cHRvb2xzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTgyMGRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXQuaW5jCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJQeXRob24gbGlnaHR3ZWlnaHQgaW4tcHJvY2VzcyBjb25jdXJyZW50IHByb2dyYW1taW5nIgorTElDRU5TRSA9ICJNSVQgJiBQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMzE0M2Q3YTFhOWY1ZDhhMGZlZTgyNWYyNGNhOWMzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlBTRjttZDU9YzEwNjkzMWQ5NDI5ZWRhMDQ5MjYxN2YwMzdiOGY2OWEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlODYzNzY0N2Q1OGEyNmM0YTFmNTFjYTM5M2U1M2MwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNGM5OWM2MDEwYTVkMTUzZDQ4MWZkYWY2M2I4YTA3ODI4MjVjMDcyMTUwNmQ4ODA0MDNhM2I5YjgyYWUzNDdlIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0XzAuNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0XzAuNC4xMi5iYgppbmRleCA0ZmMyYzFkLi5jMTQ5NzZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldF8wLjQuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjEyLmJiCkBAIC0xLDEwICsxLDIgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGxpZ2h0d2VpZ2h0IGluLXByb2Nlc3MgY29uY3VycmVudCBwcm9ncmFtbWluZyIKLUxJQ0VOU0UgPSAiTUlUICYgUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDMxNDNkN2ExYTlmNWQ4YTBmZWU4MjVmMjRjYTljMzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5QU0Y7bWQ1PWMxMDY5MzFkOTQyOWVkYTA0OTI2MTdmMDM3YjhmNjlhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTg2Mzc2NDdkNThhMjZjNGExZjUxY2EzOTNlNTNjMDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTRjOTljNjAxMGE1ZDE1M2Q0ODFmZGFmNjNiOGEwNzgyODI1YzA3MjE1MDZkODgwNDAzYTNiOWI4MmFlMzQ3ZSIKLQotaW5oZXJpdCBweXBpIGRpc3R1dGlscwotCitpbmhlcml0IGRpc3R1dGlscworcmVxdWlyZSBweXRob24tZ3JlZW5sZXQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHNfMS42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHNfMS42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZiMTM2YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby10b29sc18xLjYuMy5iYgpAQCAtMCwwICsxLDE3IEBACitERVNDUklQVElPTiA9ICJHb29nbGUgZ1JQQyB0b29scyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JwYy5pby8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworREVQRU5EUyA9ICJweXRob24tZ3JwY2lvIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWdycGNpbyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQlNELTMtQ2xhdXNlO21kNT01NTA3OTQ0NjViYTBlYzUzMTJkNjkxOWUyMDNhNTVmOSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworU1JDX1VSSVttZDVzdW1dID0gIjgzNWYxOTE0MmUyNmNiN2FkNjhjZWMzYTA4M2VjZGEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YjMxMTBjZWQ1MGExOGYxYjJiZjdkYTU4ZWQwMTFmNTcyNzhiNDgwODRlZDgwMTNjNjdhMzRkNDJhNWNhMzciCisKKyMgRm9yIHVzYWdlIGluIG90aGVyIHJlY2lwaWVzIHdoZW4gY29tcGlsaW5nIHByb3RvYnVmIGZpbGVzIChlLmcuIGJ5IGdycGNpby10b29scykKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWJiYzZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBiMDJiZTc0YTJlZmY4YWJjNjEyZWY4NGYzMGUwZmJjZTZhN2Y2NWY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBBdWcgMjAxNyAwOTowNDowNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogRG8gbm90IG1peCBDIGFuZCBDKysgY29tcGlsZXIgb3B0aW9ucworCitFWFRSQV9FTlZfQ09NUElMRV9BUkdTIGlzIHVzZWQgYm90aCB3aXRoIENDIGFuZCBDWFgKK3NvIHVzaW5nIC1zdGQ9YysrMTEgb3IgLXN0ZD1nbnU5OSB0b2dldGhlciB3aWxsIGNhdXNlCitidWlsZCB0aW1lIGVycm9ycyBlc3BjaWFsbHkgd2l0aCBjbGFuZworCitlcnJvcjogaW52YWxpZCBhcmd1bWVudCAnLXN0ZD1nbnU5OScgbm90IGFsbG93ZWQgd2l0aCAnQysrJworCitnY2M3ICggZGVmYXVsdHMgYXJlIC1zdGQ9Z251MTEgYW5kIC1zdGQ9Z251KysxNCApCisgYXMgd2VsbCBjbGFuZyBkZWZhdWx0IHRvIHRoZXNlIHN0YW5kYXJkcyBtb2RlIG9yIG5ld2VyCithbnl3YXkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggY2I4NTI3My4uZjc5ODc4ZCAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTExNiw3ICsxMTYsNyBAQCBpZiBFWFRSQV9FTlZfQ09NUElMRV9BUkdTIGlzIE5vbmU6CisgICBlbGlmICd3aW4zMicgaW4gc3lzLnBsYXRmb3JtOgorICAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLURfUFlUSE9OX01TVkMnCisgICBlbGlmICJsaW51eCIgaW4gc3lzLnBsYXRmb3JtOgorLSAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLXN0ZD1jKysxMSAtc3RkPWdudTk5IC1mdmlzaWJpbGl0eT1oaWRkZW4gLWZuby13cmFwdiAtZm5vLWV4Y2VwdGlvbnMnCisrICAgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgKz0gJyAtZnZpc2liaWxpdHk9aGlkZGVuIC1mbm8td3JhcHYgLWZuby1leGNlcHRpb25zJworICAgZWxpZiAiZGFyd2luIiBpbiBzeXMucGxhdGZvcm06CisgICAgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgKz0gJyAtZnZpc2liaWxpdHk9aGlkZGVuIC1mbm8td3JhcHYnCisgCistLSAKKzIuMTMuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE1NWY0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpb18xLjYuMC5iYgpAQCAtMCwwICsxLDI1IEBACitERVNDUklQVElPTiA9ICJHb29nbGUgZ1JQQyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JwYy5pby8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworREVQRU5EUyA9ICJweXRob24tcHJvdG9idWYiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWVudW0zNCBcCisgICAgICAgICAgICAgICAgICBweXRob24tZnV0dXJlcyBcCisgICAgICAgICAgICAgICAgICBweXRob24tcHJvdG9idWYgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXNldHVwdG9vbHMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXNpeCBcCisiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0JTRC0zLUNsYXVzZTttZDU9NTUwNzk0NDY1YmEwZWM1MzEyZDY5MTllMjAzYTU1ZjkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjOTFiOGMxMDVmZjQxNjNiNDE3OTBmM2I2M2RiOTJlMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2Y2Q3OTNkNTE1ZWM1MzU4N2E4OTY4ZjJhNTM2NDdmMTQ0OTc2M2FkMDZiZTBkMjg3ZTNjMWU0NzQxOGUxZTUwIgorCisjIEZvciB1c2FnZSBpbiBvdGhlciByZWNpcGVzIHdoZW4gY29tcGlsaW5nIHByb3RvYnVmIGZpbGVzIChlLmcuIGJ5IGdycGNpby10b29scykKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNTllMGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYi5pbmMKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJIVE1MIHBhcnNlciBiYXNlZCBvbiB0aGUgV0hBVFdHIEhUTUwgc3BlY2lmY2F0aW9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xYmE1YWRhOWU2ZmVhZDFmZGMzMmY0M2M5ZjEwYmE3YyIKKworU1JDX1VSSVttZDVzdW1dID0gIjg1NzhlNGUzYTM0MTQzNmNiOTc0M2E5ZTRhMjk5MjM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlNzQ3YzBmZmQzMDI4ZDI3MjIwNjE5MzZiNWM2NWVlNGZlMTNjOGU0NjEzNTE5YjQ0NDcxMjNmYzQ1NDYyOTgiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS13ZWJlbmNvZGluZ3MgXAorICAgICR7UFlUSE9OX1BOfS14bWwgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh0bWw1bGliXzAuOTk5OTk5OTk5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWJfMC45OTk5OTk5OTkuYmIKaW5kZXggZDBmN2I1Ni4uZjU5NDFhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWJfMC45OTk5OTk5OTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWJfMC45OTk5OTk5OTkuYmIKQEAgLTEsMTQgKzEsMiBAQAotU1VNTUFSWSA9ICJIVE1MIHBhcnNlciBiYXNlZCBvbiB0aGUgV0hBVFdHIEhUTUwgc3BlY2lmY2F0aW9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xYmE1YWRhOWU2ZmVhZDFmZGMzMmY0M2M5ZjEwYmE3YyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg1NzhlNGUzYTM0MTQzNmNiOTc0M2E5ZTRhMjk5MjM5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlNzQ3YzBmZmQzMDI4ZDI3MjIwNjE5MzZiNWM2NWVlNGZlMTNjOGU0NjEzNTE5YjQ0NDcxMjNmYzQ1NDYyOTgiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXdlYmVuY29kaW5ncyBcCi0gICAgJHtQWVRIT05fUE59LXhtbCBcCi0gICAgIgoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1odG1sNWxpYi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlkbmEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYS5pbmMKaW5kZXggZDA5OWMwZi4uYjFkMGQxOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYS5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSAmIFB5dGhvbi0yLjAgJiBVbmljb2RlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PWM5YmE1YWNkODI5NTc5NDkyZmQ1ZWIzMDZjN2EwNTY1IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZmMxZDk5MmJlZjczZTg4MjRkYjQxMWJiNWQyMWYwMTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2NiNWNlMDgwNDZjNGUzYTU2MGZjMDJmMTM4ZDBhYzYzZTAwZjhjZTU5MDFhNTZiMzJlYzhiNzk5NDA4MmFhYiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNzA2ZTI3OTBiMDE2YmQwZWQ0ZWRkMmQ0YmE0ZDE0NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzZhNWRlMzA4OTAwOWUzZGE3YzVkZGU2NGExNDFkYmM4NTUxZDViN2Y2Y2Y0ZWQ3YzI1NjhkMGNjNTIwYThmIgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAogICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYV8yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hXzIuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYV8yLjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlkbmFfMi42LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc284NjAxLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDEuaW5jCmluZGV4IGRkNGI4M2MuLjQ1ZGE3NWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDEuaW5jCkBAIC0xLDggKzEsOSBAQAogU1VNTUFSWSA9ICJTaW1wbGUgbW9kdWxlIHRvIHBhcnNlIElTTyA4NjAxIGRhdGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5aXNvODYwMS5yZWFkdGhlZG9jcy5vcmcvIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMDU2MjVmMjMzNmZhMDI0ZThkNTdlNjVjNjU5NTg0NCIKIAotU1JDX1VSSVttZDVzdW1dID0gImIwNmQxMWNkMTRhNjQwOTZmOTA3MDg2MDQ0ZjBmZTM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4ZmI1MmY3ODg4MGFlMDYzMzM2Yzk0ZWI1Yjg3YjE4MWU2YTBjYzMzYTZjMDA4NTExYmFjOWE2ZTk4MGVmMzAiCitTUkNfVVJJW21kNXN1bV0gPSAiNGRlOTQwZjY5MWM1ZWE3NTlmYjI1NDM4NGM4ZGRjZjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDljNGIyMGUxZjM4YWE1Y2YxMDlkZGNkMzk2NDdhYzQxOWY5Mjg1MTJjODY5ZGMwMWQ1YzcwOThlZGRlZGU4MiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMV8wLjEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc284NjAxXzAuMS4xMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMV8wLjEuMTEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDFfMC4xLjEyLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg4NGM0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0LmluYwpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkEgUHl0aG9uIHV0aWxpdHkgLyBsaWJyYXJ5IHRvIHNvcnQgUHl0aG9uIGltcG9ydHMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9pc29ydCIKK0xJQ0VOU0UgPSAiTUlUIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTgyMjcxODAxMjY3OTdhMDE0OGY5NGY0ODNmM2UxNDg5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzQ5MTVhMmNlNjBlNmZlM2RiY2JmNTk4MmRlZWY5YjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzlmNDYxNzJkM2E0ZTJlNTNlNzAxNmU2NjNjYzdhOGI1MzhiZWM1MjVjMzY2NzVmY2ZkMjc2N2RmMzBiMzk4MyIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydF80LjIuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydF80LjIuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE0NmQ4OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMi4xNS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24taXNvcnQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydF80LjIuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzY1ZGM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB5dGhvbiB1dGlsaXR5IC8gbGlicmFyeSB0byBzb3J0IFB5dGhvbiBpbXBvcnRzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvaXNvcnQiCi1MSUNFTlNFID0gIk1JVCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT04MjI3MTgwMTI2Nzk3YTAxNDhmOTRmNDgzZjNlMTQ4OSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcxNDg5ZWJkOTM2NDI5ZDViZGEyYWY3YWU2NjJlZDc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU2YjIwMDQ0ZjQzY2Y2ZTY3ODNmZTk1ZDA1NGU3NTRhY2NhNTJkZDQzZmJlOTI3N2MxYmRmZjgzNTUzN2VhNWMiCi0KLWluaGVyaXQgc2V0dXB0b29scyBweXBpCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTIuaW5jCmluZGV4IGNmODAxMGUuLjM1Y2JiMGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyLmluYwpAQCAtNCw4ICs0LDggQEAKIAogUFlQSV9QQUNLQUdFID0gIkppbmphMiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjllNTVmMGRiNjYyMGRkOTlhMWIzNjYxODNhOTQyNzBkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwMmEyNGQ5OTJmODU2ZmE4ZDVhN2EzNmRiNjEyODE5OGQwYzIxZTFkYTM0NDQ4Y2EyMzZjNDJlOTIzODQ4MjUiCitTUkNfVVJJW21kNXN1bV0gPSAiNjQxMTUzNzMyNGI0ZGJhMDk1NmFhYTgxMDlmM2M3N2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRhYTAxYTIxMmNkNmQ2NDE0MDFjYjAxYjYwNWY0YTRkOWYzN2JmYzkzMDQzZDdmNzYwZWM3MGZiOTlmZjlmZiIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcGlja2xlICR7UFlUSE9OX1BOfS1jcnlwdCBcCiAgICAgJHtQWVRIT05fUE59LW1hdGggJHtQWVRIT05fUE59LW5ldGNsaWVudCAke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTJfMi45LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTJfMi45LjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMl8yLjkuNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyXzIuOS42LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2hfMS4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wYXRjaF8xLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjE0YmYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wYXRjaF8xLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSAgPSAiQXBwbGluZyBKU09OIHBhdGNoZXMgaW4gUHl0aG9uIDIuNisgYW5kIDMueCIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdGVmYW5rb2VnbC9weXRob24tanNvbi1wYXRjaCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzJiMTVjODQzYjdhMzI5MTMwZjRlMjY2YTI4MWViYjMiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MThkMzZlMDVkNjhiYTkwY2EyYjI2NTk3YmQ4Mjk3NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTIzY2QwOGIyZjcyNDZmOGYyNDc1MzYzNTAxZTc0MGM0ZWY5M2YwOGYyYTNiN2I5YmNmYWMwY2MzN2ZjZWIxIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWpzb24gJHtQWVRIT05fUE59LWpzb25wb2ludGVyICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgJHtQWVRIT05fUE59LXJlICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wYXRjaF8xLjE2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJjNjFhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wYXRjaF8xLjE2LmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgID0gIkFwcGxpbmcgSlNPTiBwYXRjaGVzIGluIFB5dGhvbiAyLjYrIGFuZCAzLngiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3RlZmFua29lZ2wvcHl0aG9uLWpzb24tcGF0Y2giCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyYjE1Yzg0M2I3YTMyOTEzMGY0ZTI2NmEyODFlYmIzIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitTUkNfVVJJW21kNXN1bV0gPSAiOGVmMWNlYjAwZGNmOTkyYzllNDM2MTFmNjk4ZjkyNzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjAyNWMyOGEwOGNlNzQ3NDI5ZWU3NDZiYjIxNzk2YzNiNjQxN2VjODIyODhmOGZlNjUxNGRiNzM5OGYyYWY4YSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1qc29uICR7UFlUSE9OX1BOfS1qc29ucG9pbnRlciAke1BZVEhPTl9QTn0tbmV0Y2xpZW50ICR7UFlUSE9OX1BOfS1yZSAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8xLjEwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXJfMS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVjODc3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8xLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJSZXNvbHZlIEpTT04gUG9pbnRlcnMgaW4gUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmtvZWdsL3B5dGhvbi1qc29uLXBvaW50ZXIiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyYjE1Yzg0M2I3YTMyOTEzMGY0ZTI2NmEyODFlYmIzIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDY4YzBjNmFkNjg4OWU5Yzk0ZWMwZmViYTcxOWU0NWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWZhNWRjYWMzNWVlZmQ1M2UyNWQ2Y2Q0YzMxMGQ5NjNjOWYwYjg5NzY0MTc3MmNkNmU1ZTdiODlkZjdlZTBiMSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1yZSBweXRob24tanNvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzEuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8xLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YzFhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8xLjEyLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiUmVzb2x2ZSBKU09OIFBvaW50ZXJzIGluIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdGVmYW5rb2VnbC9weXRob24tanNvbi1wb2ludGVyIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMmIxNWM4NDNiN2EzMjkxMzBmNGUyNjZhMjgxZWJiMyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworU1JDX1VSSVttZDVzdW1dID0gImVhYWFkNzllOTgzZDU4ZWNiZWU1YjRhMzI2NzIzNzc3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgxOWI2ZGQ0ZmQwYTE4YWMyMTllMDJhMDExN2YyNGIyZDMxMjk2YjBjNDc1YzMzODYyY2ZhOWExNjE2ZDYyYzMiCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tcmUgcHl0aG9uLWpzb24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29uc2NoZW1hLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWEuaW5jCmluZGV4IDc0OTMzZjUuLmRiNTdjNjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWEuaW5jCkBAIC01LDYgKzUsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjUwYzZiNjlhMzczYThiNTVmZjFlMGVjNmU3OGYxM2Y0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZmZjVmMzE4MDg3MDgzNmNhZTQwZjA2ZmExMDQxOWY1NTcyMDgxNzVmMTNhZDdiYzI2Y2FhNzdiZWIxZjZlMDIiCiAKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS12Y3ZlcnNpb25lci1uYXRpdmUiCisKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKICAgICAke1BZVEhPTl9QTn0taW8gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGF6eS1vYmplY3QtcHJveHkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGF6eS1vYmplY3QtcHJveHkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZDJlYTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eS5pbmMKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJBIGZhc3QgYW5kIHRob3JvdWdoIGxhenkgb2JqZWN0IHByb3h5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXRob24tbGF6eS1vYmplY3QtcHJveHkucmVhZHRoZWRvY3MuaW8vIgorTElDRU5TRSA9ICJCU0QiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWVjNjgwZGY0MmQ4YWQ1NjQyN2E4MzMwODgxNzY1OGNjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTEyODE1MmI3NmViNWI5YmE3NTk1MDQ5MzYxMzlmZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWI5MWJlMzY5Zjk0NWYxMGQzYTQ5ZjVmOWJlOGIzZDBiOTNhNGMyYmU4ZjhhNWI4M2IwNTcxYjgxMjNlMGE3YSIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eV8xLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxhenktb2JqZWN0LXByb3h5XzEuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWQ5Y2ZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxhenktb2JqZWN0LXByb3h5XzEuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZhc3QgYW5kIHRob3JvdWdoIGxhenkgb2JqZWN0IHByb3h5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXRob24tbGF6eS1vYmplY3QtcHJveHkucmVhZHRoZWRvY3MuaW8vIgotTElDRU5TRSA9ICJCU0QiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk2YjE2NzNkMTAxNjdjYjMxYjc4ZTY0ZjU2MWMzMjg2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODQxYjU1OTJiYzEyYzZlZjdlNDhlZDFkN2E1ZjkwNjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRkNGNmMWM3NDI3OWMzNDljYjdiOWM1NGEyZWZhNTEwNTg1NGY1N2RlNWYyZDM1ODI5ZWU5MzYzMTU2NDI2OCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxhenktb2JqZWN0LXByb3h5XzEuMy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGF6eS1vYmplY3QtcHJveHlfMS4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY0ZDYwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxhenktb2JqZWN0LXByb3h5XzEuMy4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1sYXp5LW9iamVjdC1wcm94eS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMi40LjMyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGRhcF8yLjQuMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNWFkMWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGRhcF8yLjQuMzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoQykgMjAxMiBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KLSMKLVNVTU1BUlkgPSAiUHJvdmlkZXMgYSB3cmFwcGVyIGluIFB5dGhvbiB0byBMREFQIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBMREFQIFwKLShMaWdodHdlaWdodCBEaXJlY3RvcnkgQWNjZXNzIFByb3RvY29sKSB0aHJvdWdoIFB5dGhvbiBvcGVyYXRpb25zIFwKLWluc3RlYWQgb2YgQyBBUEkuIFRoZSBtb2R1bGUgbWFpbmx5IGFjdHMgYXMgYSB3cmFwcGVyIGZvciB0aGUgXAotT3BlbkxEQVAgMi54IGxpYnJhcmllcy4gRXJyb3JzIHdpbGwgYXBwZWFyIGFzIGV4Y2VwdGlvbnMuIgotCi1MSUNFTlNFID0gIlBTRiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLWxkYXAub3JnLyIKLURFUEVORFMgPSAicHl0aG9uIG9wZW5sZGFwIGN5cnVzLXNhc2wiCi0KLVBZUElfUEFDS0FHRSA9ICJweXRob24tbGRhcCIKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWE0MWM4MmVkZmZhMDQ5MTIwMDdjYWUxZDIwY2FjNTU1IgotU1JDX1VSSVttZDVzdW1dID0gIjdjNDZjOGEwNGFjYzIyN2E3NzhjNzkwMGM4N2NkZmM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4MTBmMWI1YTlhZTkyNTVkZjk5ZmI5YzJkY2FiNzM1MmZlZDMyNTY4N2VmZGE1NmMwZmFhZTFhODJjNWUzY2IiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczpebGlicmFyeV9kaXJzID0uKjo6JyBzZXR1cC5jZmcKLSAgICBzZWQgLWkgLWUgJ3M6XmluY2x1ZGVfZGlycyA9Lio6aW5jbHVkZV9kaXJzID0gPS91c3IvaW5jbHVkZS9zYXNsLzonIHNldHVwLmNmZwotfQotCi1SREVQRU5EU18ke1BOfSA9ICIgXAotICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbG9ja2ZpbGVfMC4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbG9ja2ZpbGVfMC4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMTU3NjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sb2NrZmlsZV8wLjEyLjIuYmIKQEAgLTAsMCArMSwxMyBAQAorREVTQ1JJUFRJT04gPSAiUGxhdGZvcm0taW5kZXBlbmRlbnQgZmlsZSBsb2NraW5nIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sYXVuY2hwYWQubmV0L3B5bG9ja2ZpbGUiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXRocmVhZGluZyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworU1JDX1VSSVttZDVzdW1dID0gImE2YTFhODI5NTdhMjNhZmRmNDRjZmRkMDM5YjY1ZmY5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhZWQwMmRlMDNjYmEyNGVmYWJjZDYwMGIzMDU0MDE0MDYzNGZjMDZjZmE2MDM4MjJkNTA4ZDUzNjFlOWY3OTkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCmluZGV4IGQ1ZTZhZTQuLjdjMGE3ZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCkBAIC03LDcgKzcsNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL2NvZGVzcGVhay5uZXQvbHhtbCIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJCU0QgJiBHUEx2MiAmIE1JVCAmIFBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTLnR4dDttZDU9ZjlmMWRjMjRmNzIwYzE0M2MyMjQwZGY0MWZlNTA3M2IgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVMudHh0O21kNT1lNGMwNDVlYmFkOTU4ZWFkNGI0ODAwOGY3MDgzODQwMyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvbGljZW5zZXMvZWxlbWVudHRyZWUudHh0O21kNT1lYjM0ZDAzNmE2ZTNkNTYzMTRlZTQ5YTY4NTJhYzg5MSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvbGljZW5zZXMvQlNELnR4dDttZDU9NzAwYTFmYzE3ZjQ3OTdkNGYyZDM0OTcwYzhlZTY5NGIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpY2Vuc2VzL0dQTC50eHQ7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKQEAgLTE4LDggKzE4LDggQEAKIAogREVQRU5EUyArPSAibGlieG1sMiBsaWJ4c2x0IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMDc1NjkyY2U0NDJlNjliYmQ2MDRkNDRlMjFjMDI3NTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE1MDJkNzhhNTFlZTdkMTI3YjQ4MjRmZjk2NTAwZjAxODFkM2M3ODI2ZTZlZTdiODAwZDA2OGJlNzkzNjFjNyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNDc1ODBiZDVkOTQyODcyYmQ5NzJhZDAwODZlNWNiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZTNhYWViNWY0NjhhNDlmNTIzZjE2NzM2Y2NmZjdkODJhZjJiNGIzMDMyOTJiYTNkMDUyYjViMjhmM2ZiZTQ3IgogCiBESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiIFwKICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC14c2x0LWNvbmZpZz0ncGtnLWNvbmZpZyBsaWJ4c2x0JyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLzAwMDEtbHhtbC5ldHJlZS1BZGQtZW1wdHktdmFyaWFkaWMtYXJndW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLzAwMDEtbHhtbC5ldHJlZS1BZGQtZW1wdHktdmFyaWFkaWMtYXJndW1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYWVjZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbC8wMDAxLWx4bWwuZXRyZWUtQWRkLWVtcHR5LXZhcmlhZGljLWFyZ3VtZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBmOGQyYzMzOTQ3NjcwMjViM2IyN2I3MTI0OGIzZWNiNTA0ODBjZGU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTMgQXByIDIwMTcgMTc6MTA6NDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbHhtbC5ldHJlZTogQWRkIGVtcHR5IHZhcmlhZGljIGFyZ3VtZW50Ci0KLWZvcm1hdCBjaGVja2VyIHNheXMgdGhhdCBhcmd1bWVudCA0IGlzIGEgcHJpbnRmIGZvcm1hdHRlZCBhcmd1bWVudAotYnV0IHRoZXJlIGlzIG5vIG1vcmUgYXJndW1lbnRzIHRvIGZvbGxvdwotCi1GaXhlcyBsaWJ4c2x0IGZvcm1hdCB3YXJuaW5ncwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2x4bWwvbHhtbC5ldHJlZS5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9seG1sL2x4bWwuZXRyZWUuYyBiL3NyYy9seG1sL2x4bWwuZXRyZWUuYwotaW5kZXggZDQ4MjA5MS4uZmFhYjA2YyAxMDA2NDQKLS0tLSBhL3NyYy9seG1sL2x4bWwuZXRyZWUuYwotKysrIGIvc3JjL2x4bWwvbHhtbC5ldHJlZS5jCi1AQCAtMTg2MDg2LDcgKzE4NjA4Niw3IEBAIHN0YXRpYyB2b2lkIF9fcHl4X2ZfNGx4bWxfNWV0cmVlX19jYWxsRXh0ZW5zaW9uRWxlbWVudCh4c2x0VHJhbnNmb3JtQ29udGV4dCAqX19wCi0gICogICAgICAgICBleGNlcHQ6Ci0gICovCi0gICAgICAgICAgICAgX19weXhfdF8yNiA9IF9fUHl4X1B5T2JqZWN0X0FzU3RyaW5nKF9fcHl4X3ZfbWVzc2FnZSk7IGlmICh1bmxpa2VseSgoIV9fcHl4X3RfMjYpICYmIFB5RXJyX09jY3VycmVkKCkpKSBfX1BZWF9FUlIoMTksIDIyOCwgX19weXhfTDE4X2V4Y2VwdF9lcnJvcikKLS0gICAgICAgICAgICB4c2x0VHJhbnNmb3JtRXJyb3IoX19weXhfdl9jX2N0eHQsIE5VTEwsIF9fcHl4X3ZfY19pbnN0X25vZGUsIF9fcHl4X3RfMjYpOwotKyAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihfX3B5eF92X2NfY3R4dCwgTlVMTCwgX19weXhfdl9jX2luc3Rfbm9kZSwgX19weXhfdF8yNiwgIiIpOwotIAotICAgICAgICAgICAgIC8qICJzcmMvbHhtbC94c2x0ZXh0LnB4aSI6MjI5Ci0gICogICAgICAgICAgICAgICAgIGNfaW5zdF9ub2RlLm5hbWUsIF9jc3RyKGUpKQotQEAgLTE4NjEzNiw3ICsxODYxMzYsNyBAQCBzdGF0aWMgdm9pZCBfX3B5eF9mXzRseG1sXzVldHJlZV9fY2FsbEV4dGVuc2lvbkVsZW1lbnQoeHNsdFRyYW5zZm9ybUNvbnRleHQgKl9fcAotICAqICAgICBleGNlcHQ6Ci0gICovCi0gICAgICAgICAgICAgX19weXhfdF8yNiA9IF9fUHl4X1B5T2JqZWN0X0FzU3RyaW5nKF9fcHl4X3ZfbWVzc2FnZSk7IGlmICh1bmxpa2VseSgoIV9fcHl4X3RfMjYpICYmIFB5RXJyX09jY3VycmVkKCkpKSBfX1BZWF9FUlIoMTksIDIzNCwgX19weXhfTDE4X2V4Y2VwdF9lcnJvcikKLS0gICAgICAgICAgICB4c2x0VHJhbnNmb3JtRXJyb3IoX19weXhfdl9jX2N0eHQsIE5VTEwsIF9fcHl4X3ZfY19pbnN0X25vZGUsIF9fcHl4X3RfMjYpOwotKyAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihfX3B5eF92X2NfY3R4dCwgTlVMTCwgX19weXhfdl9jX2luc3Rfbm9kZSwgX19weXhfdF8yNiwgIiIpOwotIAotICAgICAgICAgICAgIC8qICJzcmMvbHhtbC94c2x0ZXh0LnB4aSI6MjM1Ci0gICogICAgICAgICAgICAgICAgICJFcnJvciBleGVjdXRpbmcgZXh0ZW5zaW9uIGVsZW1lbnQgJyVzJyIsIGNfaW5zdF9ub2RlLm5hbWUpCi0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzMuNy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbF8zLjcuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM5M2EzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzMuNy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWx4bWwuaW5jCi0KLVNSQ19VUkkgPSAiJHtQWVBJX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbHhtbC5ldHJlZS1BZGQtZW1wdHktdmFyaWFkaWMtYXJndW1lbnQucGF0Y2ggXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbF80LjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWNjYjEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbF80LjEuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tbHhtbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvL2Nyb3NzLWNvbXBpbGUtcGxhdGZvcm0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by9jcm9zcy1jb21waWxlLXBsYXRmb3JtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NjU0ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by9jcm9zcy1jb21waWxlLXBsYXRmb3JtLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0RvIG5vdCBjb21wdXRlIHBsYXRmb3JtLCB0aGlzIGRvZXMgbm90IHdvcmsgaW4gY3Jvc3MgY29tcGlsZSBlbnZpcm9ubWVudAorc2luY2UgaXQgcG9rZXMgYXQgdGhlIHN5c3RlbSBmb3IgZ2V0dGluZyBhcmNoaXRlY3R1cmUgdmFsdWVzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworSW5kZXg6IE0yQ3J5cHRvLTAuMjYuMC9zZXR1cC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIE0yQ3J5cHRvLTAuMjYuMC5vcmlnL3NldHVwLnB5CisrKysgTTJDcnlwdG8tMC4yNi4wL3NldHVwLnB5CitAQCAtMTQxLDE5ICsxNDEsNiBAQCBjbGFzcyBfTTJDcnlwdG9CdWlsZEV4dChidWlsZF9leHQuYnVpbGRfCisgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9kaXJzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLm9wZW5zc2wsICdpbmNsdWRlJywgJ29wZW5zc2wnKSkKKyAKKy0gICAgICAgICAgICAjIEZvciBSZWRIYXQtYmFzZWQgZGlzdHJvcywgdGhlICctRF9fe2FyY2h9X18nIG9wdGlvbiBmb3IKKy0gICAgICAgICAgICAjIFN3aWcgbmVlZHMgdG8gYmUgbm9ybWFsaXplZCwgcGFydGljdWxhcmx5IG9uIGkzODYuCistICAgICAgICAgICAgbWFjaCA9IHBsYXRmb3JtLm1hY2hpbmUoKS5sb3dlcigpCistICAgICAgICAgICAgaWYgbWFjaCBpbiAoJ2kzODYnLCAnaTQ4NicsICdpNTg2JywgJ2k2ODYnKToKKy0gICAgICAgICAgICAgICAgYXJjaCA9ICdfX2kzODZfXycKKy0gICAgICAgICAgICBlbGlmIG1hY2ggaW4gKCdwcGM2NCcsICdwb3dlcnBjNjQnKToKKy0gICAgICAgICAgICAgICAgYXJjaCA9ICdfX3Bvd2VycGM2NF9fJworLSAgICAgICAgICAgIGVsaWYgbWFjaCBpbiAoJ3BwYycsICdwb3dlcnBjJyk6CistICAgICAgICAgICAgICAgIGFyY2ggPSAnX19wb3dlcnBjX18nCistICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgYXJjaCA9ICdfXyVzX18nICUgbWFjaAorLSAgICAgICAgICAgIHNlbGYuc3dpZ19vcHRzLmFwcGVuZCgnLUQlcycgJSBhcmNoKQorLQorICAgICAgICAgc2VsZi5zd2lnX29wdHMuZXh0ZW5kKFsnLUklcycgJSBpIGZvciBpIGluIHNlbGYuaW5jbHVkZV9kaXJzXSkKKyAgICAgICAgIHNlbGYuc3dpZ19vcHRzLmFwcGVuZCgnLWluY2x1ZGVhbGwnKQorICAgICAgICAgc2VsZi5zd2lnX29wdHMuYXBwZW5kKCctbW9kZXJuJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvL20yY3J5cHRvLTAuMjYuNC1nY2NfbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vbTJjcnlwdG8tMC4yNi40LWdjY19tYWNyb3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ3MzhjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvL20yY3J5cHRvLTAuMjYuNC1nY2NfbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0ltcG9ydGVkIGZyb20gRmVkb3JhCisKKy0tLSBNMkNyeXB0by9TV0lHL19tMmNyeXB0by5pCTIwMTctMDktMjYgMTE6MjY6MzMuMDAwMDAwMDAwICswMjAwCisrKysgTTJDcnlwdG8tMC4yNi40L1NXSUcvX20yY3J5cHRvLmkJMjAxNy0wOS0yNiAyMTowNDoxNC4wODAzMzA3NDEgKzAyMDAKK0BAIC03LDYgKzcsNyBAQAorICAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwIEhlaWtraSBUb2l2b25lbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgKgorICAqLworKyVpbXBvcnQgImdjY19tYWNyb3MuaCIKKyAKKyAlbW9kdWxlKHRocmVhZHM9MSkgbTJjcnlwdG8KKyAvKiBXZSByZWFsbHkgZG9uJ3QgbmVlZCB0aHJlYWRibG9jayAoUHlHSUxTdGF0ZV9FbnN1cmUoKSBldGMuKSBhbnl3aGVyZS4KK0BAIC0xNSwxMSArMTYsNiBAQAorICVub3RocmVhZGJsb2NrOworICVub3RocmVhZGFsbG93OworIAorLSNpZiBTV0lHX1ZFUlNJT04gPj0gMHgwMzAwMDAKKy0jZGVmaW5lIF9fV0NIQVJfTUFYX18gX19XQ0hBUl9NQVgKKy0jZGVmaW5lIF9fV0NIQVJfTUlOX18gX19XQ0hBUl9NSU4KKy0jZW5kaWYKKy0KKyAleworICNpZiBfX0dOVUNfXyA8IDUKKyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWxhYmVsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjUyM2JkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvXzAuMjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gY3J5cHRvIGFuZCBTU0wgdG9vbGtpdCIKLUhPTUVQQUdFID0gImh0dHA6Ly9jaGFuZGxlcnByb2plY3Qub3JnL2Jpbi92aWV3L1Byb2plY3RzL01lVG9vQ3J5cHRvIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT05NTI5NTY5M2YwNDdiYjhmNzY5MjgyNTFhNjE1NGE2MCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA0MDIzNDI4OWZiZWY1YmVkNDAyOWYwZjdkMWRhZTM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjMzAzYTE4ODEzMDdhNTFjODVlZThiMWQ4Nzg0NGQ5ODY2ZWU4MjNiNGZkYmM1MmY3ZTc5MTg3YzJkOWFjZWYiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXNldHVwLnB5LWxpbmstaW4tc3lzcm9vdC1ub3QtaW4taG9zdC1kaXJlY3Rvcmllcy5wYXRjaCAiCi0KLVBZUElfUEFDS0FHRSA9ICJNMkNyeXB0byIKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzIHNpdGVpbmZvCi0KLURFUEVORFMgKz0gIm9wZW5zc2wgc3dpZy1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXR5cGluZyIKLQotRElTVFVUSUxTX0JVSUxEX0FSR1MgKz0gImJ1aWxkX2V4dCAtLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSAtSSR7U1RBR0lOR19JTkNESVJ9IgotRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiYnVpbGRfZXh0IC0tb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotU1dJR19GRUFUVVJFU194ODYtNjQgPSAiLURfX3g4Nl82NF9fIgotU1dJR19GRUFUVVJFUyA/PSAiIgotZXhwb3J0IFNXSUdfRkVBVFVSRVMKLQotIyBHZXQgYXJvdW5kIGEgcHJvYmxlbSB3aXRoIHN3aWcsIGJ1dCBvbmx5IGlmIHRoZQotIyBtdWx0aWxpYiBoZWFkZXIgZmlsZSBleGlzdHMuCi0jCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07dGhlbgotICAgICAgICBiaXQ9IjY0IgotICAgIGVsc2UKLSAgICAgICAgYml0PSIzMiIKLSAgICBmaQotCi0gICAgaWYgWyAtZSAke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsL29wZW5zc2xjb25mLSR7Yml0fS5oIF0gO3RoZW4KLSAgICAgICAgZm9yIGkgaW4gU1dJRy9fZWMuaSBTV0lHL19ldnAuaTsgZG8KLSAgICAgICAgICAgIHNlZCAtaSAtZSAicy9vcGVuc3NsY29uZi4qXC4vb3BlbnNzbGNvbmYtJHtiaXR9XC4vIiAiJGkiCi0gICAgICAgIGRvbmUKLSAgICBlbGlmIFsgLWUgJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbC9vcGVuc3NsY29uZi1uJHtiaXR9LmggXSA7dGhlbgotICAgICAgICBmb3IgaSBpbiBTV0lHL19lYy5pIFNXSUcvX2V2cC5pOyBkbwotICAgICAgICAgICAgc2VkIC1pIC1lICJzL29wZW5zc2xjb25mLipcLi9vcGVuc3NsY29uZi1uJHtiaXR9XC4vIiAiJGkiCi0gICAgICAgIGRvbmUKLSAgICBmaQotfQotCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yNi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MmM3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjI2LjQuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJBIFB5dGhvbiBjcnlwdG8gYW5kIFNTTCB0b29sa2l0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL20yY3J5cHRvL20yY3J5cHRvIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWIwZTFmMGI3ZDBjZThhNjJjMThiMTI4N2I5OTE4MDBlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1zZXR1cC5weS1saW5rLWluLXN5c3Jvb3Qtbm90LWluLWhvc3QtZGlyZWN0b3JpZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUtcGxhdGZvcm0ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL20yY3J5cHRvLTAuMjYuNC1nY2NfbWFjcm9zLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjVjNzRjMjViYThiNDUxMjIzMThhMTY1YTNhMjA1OWFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjYWU3YWNjMGIzNDgyMWY4YzBkZGY2NjY1ZTQ4Mjg5M2ZlMWYxOThhZDYzNzllNjFmZmE5ZDhlNjVmNWMxOTkiCisKK1BZUElfUEFDS0FHRSA9ICJNMkNyeXB0byIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzIHNpdGVpbmZvCisKK0RFUEVORFMgKz0gIm9wZW5zc2wgc3dpZy1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXR5cGluZyIKKworRElTVFVUSUxTX0JVSUxEX0FSR1MgKz0gImJ1aWxkX2V4dCAtLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSAtSSR7U1RBR0lOR19JTkNESVJ9IgorRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiYnVpbGRfZXh0IC0tb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9IgorCitTV0lHX0ZFQVRVUkVTX3g4NiA9ICItRF9faTM4Nl9fIgorU1dJR19GRUFUVVJFUyA/PSAiLURfXyR7SE9TVF9BUkNIfV9fIgorZXhwb3J0IFNXSUdfRkVBVFVSRVMKKworIyBHZXQgYXJvdW5kIGEgcHJvYmxlbSB3aXRoIHN3aWcsIGJ1dCBvbmx5IGlmIHRoZQorIyBtdWx0aWxpYiBoZWFkZXIgZmlsZSBleGlzdHMuCisjCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgJHtDUFB9IC1kTSAtIDwgL2Rldi9udWxsIHwgZ3JlcCAtdiBfX1NURENfXyB8IGdyZXAgLXYgX19SRUdJU1RFUl9QUkVGSVhfXyB8IGdyZXAgLXYgX19HTlVDX18gXAorCXwgc2VkICdzL15cKCNkZWZpbmUgXChbXiBdKlwpIC4qXCkkLyN1bmRlZiBcMlxuXDEvJyA+IFNXSUcvZ2NjX21hY3Jvcy5oCisgICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07dGhlbgorICAgICAgICBiaXQ9IjY0IgorICAgIGVsc2UKKyAgICAgICAgYml0PSIzMiIKKyAgICBmaQorCisgICAgaWYgWyAtZSAke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsL29wZW5zc2xjb25mLSR7Yml0fS5oIF0gO3RoZW4KKyAgICAgICAgZm9yIGkgaW4gU1dJRy9fZWMuaSBTV0lHL19ldnAuaTsgZG8KKyAgICAgICAgICAgIHNlZCAtaSAtZSAicy9vcGVuc3NsY29uZi4qXC4vb3BlbnNzbGNvbmYtJHtiaXR9XC4vIiAiJGkiCisgICAgICAgIGRvbmUKKyAgICBlbGlmIFsgLWUgJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbC9vcGVuc3NsY29uZi1uJHtiaXR9LmggXSA7dGhlbgorICAgICAgICBmb3IgaSBpbiBTV0lHL19lYy5pIFNXSUcvX2V2cC5pOyBkbworICAgICAgICAgICAgc2VkIC1pIC1lICJzL29wZW5zc2xjb25mLipcLi9vcGVuc3NsY29uZi1uJHtiaXR9XC4vIiAiJGkiCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmUuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZS5pbmMKaW5kZXggZGU2MTk0NC4uZTUwZjhjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZS5pbmMKQEAgLTMsMTAgKzMsMTAgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzZkMWFkY2Y0NWQ2OTM1OWYyNTZjMWNlYTMyNTQxMjciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNWFiM2RlZWU0YzM3Y2Q2YTkyMmZiODFlNzMwZGE2ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNGVjMWFmZjU5Yjk1YTE0YjQ1ZWIyZTIzNzYxYTAxNzllOTgzMTlkYTVhN2ViNzZiNTZlYThjZGM3Yjg3MWMzIgorU1JDX1VSSVttZDVzdW1dID0gIjJmY2VkYzkyODRkNTBlNTc3YjUxOTJlOGUzNTc4MzU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2YmU2OTA5MWRhYzIzNmVhOWM2YmM3ZDAxMmJlYWI0MjAxMGZhOTE0YzQ1OTc5MWQ2MjdkYWQ0OTEwZWI2NjUiCiAKIFBZUElfUEFDS0FHRSA9ICJNYXJrdXBTYWZlIgogaW5oZXJpdCBweXBpCiAKLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcmUiCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXJlICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzAuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzAuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NmVmZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZV8wLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLW1hcmt1cHNhZmUuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmVfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjOTg4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzEuMC5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tbWFya3Vwc2FmZS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXRwbG90bGliL2ZpeF9zZXR1cC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWIvZml4X3NldHVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzgxNTgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWIvZml4X3NldHVwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotVGhpcyBmaXhlcyB0aGUgZGVwZW5kZW5jeSBjaGVja3MgaW5zaWRlIG9mIHNldHVwLnB5IHNpbmNlIHRoaW5ncyBsaWtlCi0naW1wb3J0IG51bXB5JyB3b24ndCB3b3JrIHdpdGggYml0YmFrZS4KLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IDJmMTM4MjEuLmU2ZDZlZDAgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0xMTMsMTIgKzExMyw2IEBAIGlmIDE6Ci0gICAgIGJhc2VsaW5lX2ltYWdlcyA9IFtjaG9wX3BhY2thZ2UoZikgZm9yIGYgaW4gYmFzZWxpbmVfaW1hZ2VzXQotICAgICBwYWNrYWdlX2RhdGFbJ21hdHBsb3RsaWInXS5leHRlbmQoYmFzZWxpbmVfaW1hZ2VzKQotIAotLWlmIG5vdCBjaGVja19mb3JfbnVtcHkoKToKLS0gICAgc3lzLmV4aXQoMSkKLS0KLS1pZiBub3QgY2hlY2tfZm9yX2ZyZWV0eXBlKCk6Ci0tICAgIHN5cy5leGl0KDEpCi0tCi0gYnVpbGRfZnQyZm9udChleHRfbW9kdWxlcywgcGFja2FnZXMpCi0gYnVpbGRfdHRjb252KGV4dF9tb2R1bGVzLCBwYWNrYWdlcykKLSBidWlsZF9jb250b3VyKGV4dF9tb2R1bGVzLCBwYWNrYWdlcykKLUBAIC0xMjksNyArMTIzLDcgQEAgYnVpbGRfdHJpKGV4dF9tb2R1bGVzLCBwYWNrYWdlcykKLSAKLSBwcmludF9yYXcoIiIpCi0gcHJpbnRfcmF3KCJPUFRJT05BTCBCQUNLRU5EIERFUEVOREVOQ0lFUyIpCi0taGFzX2xpYnBuZyA9IGNoZWNrX2Zvcl9saWJwbmcoKQotK2hhc19saWJwbmcgPSBUcnVlCi0gCi0gaWYgaGFzX2xpYnBuZyBhbmQgb3B0aW9uc1snYnVpbGRfYWdnJ106Ci0gICAgIGJ1aWxkX2FnZyhleHRfbW9kdWxlcywgcGFja2FnZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXRwbG90bGliL2ZpeF9zZXR1cGV4dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWIvZml4X3NldHVwZXh0LnBhdGNoCmluZGV4IDlhMTNhMTguLjIxYjkwOTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWIvZml4X3NldHVwZXh0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWIvZml4X3NldHVwZXh0LnBhdGNoCkBAIC0xLDQwICsxLDExMCBAQAogVGhpcyBmaXhlcyB0aGUgbnVtcHkgaW1wb3J0IHByb2JsZW0gaW4gc2V0dXBleHQucHkgdXNpbmcgYSBoYXJkLWNvZGVkIHBhdGguCiAKLUluZGV4OiBtYXRwbG90bGliLTEuMS4wL3NldHVwZXh0LnB5CitJbmRleDogbWF0cGxvdGxpYi0yLjAuMi9zZXR1cGV4dC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hdHBsb3RsaWItMS4xLjAub3JpZy9zZXR1cGV4dC5weQotKysrIG1hdHBsb3RsaWItMS4xLjAvc2V0dXBleHQucHkKLUBAIC0xMjIsOCArMTIyLDggQEAgbnVtcHlfaW5jX2RpcnMgPSBbXQotICMgbWF0cGxvdGxpYiBidWlsZCBvcHRpb25zLCB3aGljaCBjYW4gYmUgYWx0ZXJlZCB1c2luZyBzZXR1cC5jZmcKLSBvcHRpb25zID0geydkaXNwbGF5X3N0YXR1cyc6IFRydWUsCi0gICAgICAgICAgICAndmVyYm9zZSc6IEZhbHNlLAotLSAgICAgICAgICAgJ3Byb3ZpZGVfcHl0eic6ICdhdXRvJywKLS0gICAgICAgICAgICdwcm92aWRlX2RhdGV1dGlsJzogJ2F1dG8nLAotKyAgICAgICAgICAgJ3Byb3ZpZGVfcHl0eic6IEZhbHNlLAotKyAgICAgICAgICAgJ3Byb3ZpZGVfZGF0ZXV0aWwnOiBGYWxzZSwKLSAgICAgICAgICAgICdidWlsZF9hZ2cnOiBUcnVlLAotICAgICAgICAgICAgJ2J1aWxkX2d0ayc6ICdhdXRvJywKLSAgICAgICAgICAgICdidWlsZF9ndGthZ2cnOiAnYXV0bycsCi1AQCAtMTc2LDEwICsxNzYsNyBAQCBpZiBvcy5wYXRoLmV4aXN0cyhzZXR1cF9jZmcpOgotICAgICBleGNlcHQ6IHBhc3MKKy0tLSBtYXRwbG90bGliLTIuMC4yLm9yaWcvc2V0dXBleHQucHkKKysrKyBtYXRwbG90bGliLTIuMC4yL3NldHVwZXh0LnB5CitAQCAtMTQ4LDYgKzE0OCw3IEBAIGRlZiBoYXNfaW5jbHVkZV9maWxlKGluY2x1ZGVfZGlycywgZmlsZW4KKyAgICAgUmV0dXJucyBgVHJ1ZWAgaWYgYGZpbGVuYW1lYCBjYW4gYmUgZm91bmQgaW4gb25lIG9mIHRoZQorICAgICBkaXJlY3RvcmllcyBpbiBgaW5jbHVkZV9kaXJzYC4KKyAgICAgIiIiCisrICAgIHJldHVybiBUcnVlCisgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgaW5jbHVkZV9kaXJzICs9IG9zLmVudmlyb24uZ2V0KCdJTkNMVURFJywgJy4nKS5zcGxpdCgnOycpCisgICAgIGZvciBkaXIgaW4gaW5jbHVkZV9kaXJzOgorQEAgLTE3Miw3ICsxNzMsNyBAQCBkZWYgZ2V0X2Jhc2VfZGlycygpOgorICAgICBSZXR1cm5zIGEgbGlzdCBvZiBzdGFuZGFyZCBiYXNlIGRpcmVjdG9yaWVzIG9uIHRoaXMgcGxhdGZvcm0uCisgICAgICIiIgorICAgICBpZiBvcHRpb25zWydiYXNlZGlybGlzdCddOgorLSAgICAgICAgcmV0dXJuIG9wdGlvbnNbJ2Jhc2VkaXJsaXN0J10KKysgICAgICAgIHJldHVybiBbb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXV0KICAKLSAjIEZvciBnZXRfYmFzZV9mbGFnczoKLS1pZiBvcHRpb25zWydiYXNlZGlybGlzdCddOgotLSAgICBiYXNlZGlybGlzdCA9IG9wdGlvbnNbJ2Jhc2VkaXJsaXN0J10uc3BsaXQoKQotLWVsc2U6Ci0tICAgIGJhc2VkaXJsaXN0ID0gYmFzZWRpcltzeXMucGxhdGZvcm1dCi0rYmFzZWRpcmxpc3QgPSBbb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXV0KLSBwcmludCgiYmFzZWRpcmxpc3QgaXM6ICVzIiAlIGJhc2VkaXJsaXN0KQorICAgICBiYXNlZGlyX21hcCA9IHsKKyAgICAgICAgICd3aW4zMic6IFsnd2luMzJfc3RhdGljJywgXSwKK0BAIC0yNjAsMTQgKzI2MSw2IEBAIGRlZiBtYWtlX2V4dGVuc2lvbihuYW1lLCBmaWxlcywgKmFyZ3MsICoKKyAgICAgYGRpc3R1dGlscy5jb3JlLkV4dGVuc2lvbmAgY29uc3RydWN0b3IuCisgICAgICIiIgorICAgICBleHQgPSBEZWxheWVkRXh0ZW5zaW9uKG5hbWUsIGZpbGVzLCAqYXJncywgKiprd2FyZ3MpCistICAgIGZvciBkaXIgaW4gZ2V0X2Jhc2VfZGlycygpOgorLSAgICAgICAgaW5jbHVkZV9kaXIgPSBvcy5wYXRoLmpvaW4oZGlyLCAnaW5jbHVkZScpCistICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhpbmNsdWRlX2Rpcik6CistICAgICAgICAgICAgZXh0LmluY2x1ZGVfZGlycy5hcHBlbmQoaW5jbHVkZV9kaXIpCistICAgICAgICBmb3IgbGliIGluICgnbGliJywgJ2xpYjY0Jyk6CistICAgICAgICAgICAgbGliX2RpciA9IG9zLnBhdGguam9pbihkaXIsIGxpYikKKy0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsaWJfZGlyKToKKy0gICAgICAgICAgICAgICAgZXh0LmxpYnJhcnlfZGlycy5hcHBlbmQobGliX2RpcikKKyAgICAgZXh0LmluY2x1ZGVfZGlycy5hcHBlbmQoJy4nKQogIAotIGlmIG9wdGlvbnNbJ2Rpc3BsYXlfc3RhdHVzJ106Ci1AQCAtNTU1LDggKzU1Miw4IEBAIGRlZiBjaGVja19mb3JfbnVtcHkoKToKKyAgICAgcmV0dXJuIGV4dAorQEAgLTMxNCw2ICszMDcsNyBAQCBjbGFzcyBQa2dDb25maWcob2JqZWN0KToKKyAgICAgICAgICAgICAgICAgICAgICIgICAgbWF0cGxvdGxpYiBtYXkgbm90IGJlIGFibGUgdG8gZmluZCBzb21lIG9mIGl0cyBkZXBlbmRlbmNpZXMiKQogIAotIGRlZiBhZGRfbnVtcHlfZmxhZ3MobW9kdWxlKToKLSAgICAgIkFkZCB0aGUgbW9kdWxlcyBmbGFncyB0byBidWlsZCBleHRlbnNpb25zIHdoaWNoIHVzZSBudW1weSIKLS0gICAgaW1wb3J0IG51bXB5Ci0tICAgIG1vZHVsZS5pbmNsdWRlX2RpcnMuYXBwZW5kKG51bXB5LmdldF9pbmNsdWRlKCkpCi0rICAgICMgSGFyZC1jb2RlZCBwYXRoIGZvciBPRSBzaW5jZSBJIGtub3cgdGhpcyBpcyB3aGVyZSBudW1weSdzIGluY2x1ZGUgZGlyIHdpbGwgYmUKLSsgICAgbW9kdWxlLmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10sICdweXRob24yLjcvc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUvJykpCisgICAgIGRlZiBzZXRfcGtnY29uZmlnX3BhdGgoc2VsZik6CisrICAgICAgICByZXR1cm4KKyAgICAgICAgIHBrZ2NvbmZpZ19wYXRoID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMSUJESVInKQorICAgICAgICAgaWYgcGtnY29uZmlnX3BhdGggaXMgTm9uZToKKyAgICAgICAgICAgICByZXR1cm4KK0BAIC04NzUsMTQgKzg2OSwxNCBAQCBjbGFzcyBOdW1weShTZXR1cFBhY2thZ2UpOgorICAgICAgICAgICAgIHJlbG9hZChudW1weSkKICAKLSBkZWYgYWRkX3BuZ19mbGFncyhtb2R1bGUpOgotICAgICB0cnlfcGtnY29uZmlnKG1vZHVsZSwgJ2xpYnBuZycsICdwbmcnKQorICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd0ZXN0JywgW10pCistICAgICAgICBleHQuaW5jbHVkZV9kaXJzLmFwcGVuZChudW1weS5nZXRfaW5jbHVkZSgpKQorKyAgICAgICAgZXh0LmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10sICdweXRob24yLjcvc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUvJykpCisgICAgICAgICBpZiBub3QgaGFzX2luY2x1ZGVfZmlsZSgKKyAgICAgICAgICAgICAgICAgZXh0LmluY2x1ZGVfZGlycywgb3MucGF0aC5qb2luKCJudW1weSIsICJhcnJheW9iamVjdC5oIikpOgorICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgICJUaGUgQyBoZWFkZXJzIGZvciBudW1weSBjb3VsZCBub3QgYmUgZm91bmQuICIKKyAgICAgICAgICAgICAgICAgIllvdSBtYXkgbmVlZCB0byBpbnN0YWxsIHRoZSBkZXZlbG9wbWVudCBwYWNrYWdlIikKKyAKKy0gICAgICAgIHJldHVybiBbbnVtcHkuZ2V0X2luY2x1ZGUoKV0KKysgICAgICAgIHJldHVybiBbb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10sICdweXRob24yLjcvc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUvJyldCisgCisgICAgIGRlZiBjaGVjayhzZWxmKToKKyAgICAgICAgIG1pbl92ZXJzaW9uID0gZXh0cmFjdF92ZXJzaW9ucygpWydfX3ZlcnNpb25fX251bXB5X18nXQorSW5kZXg6IG1hdHBsb3RsaWItMi4wLjIvc2V0dXAucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtYXRwbG90bGliLTIuMC4yLm9yaWcvc2V0dXAucHkKKysrKyBtYXRwbG90bGliLTIuMC4yL3NldHVwLnB5CitAQCAtNjYsMjggKzY2LDYgQEAgbXBsX3BhY2thZ2VzID0gWworICAgICBzZXR1cGV4dC5QeXRob24oKSwKKyAgICAgc2V0dXBleHQuUGxhdGZvcm0oKSwKKyAgICAgJ1JlcXVpcmVkIGRlcGVuZGVuY2llcyBhbmQgZXh0ZW5zaW9ucycsCistICAgIHNldHVwZXh0Lk51bXB5KCksCistICAgIHNldHVwZXh0LlNpeCgpLAorLSAgICBzZXR1cGV4dC5EYXRldXRpbCgpLAorLSAgICBzZXR1cGV4dC5GdW5jVG9vbHMzMigpLAorLSAgICBzZXR1cGV4dC5TdWJwcm9jZXNzMzIoKSwKKy0gICAgc2V0dXBleHQuUHl0eigpLAorLSAgICBzZXR1cGV4dC5DeWNsZXIoKSwKKy0gICAgc2V0dXBleHQuVG9ybmFkbygpLAorLSAgICBzZXR1cGV4dC5QeXBhcnNpbmcoKSwKKy0gICAgc2V0dXBleHQuTGliQWdnKCksCistICAgIHNldHVwZXh0LkZyZWVUeXBlKCksCistICAgIHNldHVwZXh0LkZUMkZvbnQoKSwKKy0gICAgc2V0dXBleHQuUG5nKCksCistICAgIHNldHVwZXh0LlFodWxsKCksCistICAgIHNldHVwZXh0LkltYWdlKCksCistICAgIHNldHVwZXh0LlRUQ29udigpLAorLSAgICBzZXR1cGV4dC5QYXRoKCksCistICAgIHNldHVwZXh0LkNvbnRvdXJMZWdhY3koKSwKKy0gICAgc2V0dXBleHQuQ29udG91cigpLAorLSAgICBzZXR1cGV4dC5EZWxhdW5heSgpLAorLSAgICBzZXR1cGV4dC5RaHVsbFdyYXAoKSwKKy0gICAgc2V0dXBleHQuVHJpKCksCisgICAgICdPcHRpb25hbCBzdWJwYWNrYWdlcycsCisgICAgIHNldHVwZXh0LlNhbXBsZURhdGEoKSwKKyAgICAgc2V0dXBleHQuVG9vbGtpdHMoKSwKK0BAIC0xMDAsMTMgKzc4LDggQEAgbXBsX3BhY2thZ2VzID0gWworICAgICBzZXR1cGV4dC5CYWNrZW5kTWFjT1NYKCksCisgICAgIHNldHVwZXh0LkJhY2tlbmRRdDUoKSwKKyAgICAgc2V0dXBleHQuQmFja2VuZFF0NCgpLAorLSAgICBzZXR1cGV4dC5CYWNrZW5kR3RrM0FnZygpLAorICAgICBzZXR1cGV4dC5CYWNrZW5kR3RrM0NhaXJvKCksCistICAgIHNldHVwZXh0LkJhY2tlbmRHdGtBZ2coKSwKKy0gICAgc2V0dXBleHQuQmFja2VuZFRrQWdnKCksCistICAgIHNldHVwZXh0LkJhY2tlbmRXeEFnZygpLAorICAgICBzZXR1cGV4dC5CYWNrZW5kR3RrKCksCistICAgIHNldHVwZXh0LkJhY2tlbmRBZ2coKSwKKyAgICAgc2V0dXBleHQuQmFja2VuZENhaXJvKCksCisgICAgIHNldHVwZXh0LldpbmRvd2luZygpLAorICAgICAnT3B0aW9uYWwgTGFUZVggZGVwZW5kZW5jaWVzJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWJfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXRwbG90bGliXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzNlNjZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWJfMS4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJtYXRwbG90bGliIGlzIGEgcHl0aG9uIDJEIHBsb3R0aW5nIGxpYnJhcnkgd2hpY2ggcHJvZHVjZXMgcHVibGljYXRpb24gcXVhbGl0eSBmaWd1cmVzIGluIGEgdmFyaWV0eSBvZiBoYXJkY29weSBmb3JtYXRzIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS50eHQ7bWQ1PTgzYzViZjhiMTZhNWY5OTUwN2YyZjQ3YTIxYWUzYjgxIgotUFIgPSAicjEiCi0KLURFUEVORFMgKz0gInB5dGhvbi1udW1weSBmcmVldHlwZSBsaWJwbmcgcHl0aG9uLWRhdGV1dGlsIHB5dGhvbi1weXR6IgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWNvcmUgcHl0aG9uLWRpc3R1dGlscyBweXRob24tbnVtcHkgZnJlZXR5cGUgbGlicG5nIHB5dGhvbi1kYXRldXRpbCBweXRob24tcHl0eiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbWF0cGxvdGxpYi9tYXRwbG90bGliLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfc2V0dXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X3NldHVwZXh0LnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L21hdHBsb3RsaWItJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyAtLXdpdGgtcHl0aG9uLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9Ly4uLyIKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgIHRydWUKLX0KLQotIyBuZWVkIHRvIGV4cG9ydCB0aGVzZSB2YXJpYWJsZXMgZm9yIHB5dGhvbi1jb25maWcgdG8gd29yawotZXhwb3J0IFBZVEhPTlBBVEgKLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotZXhwb3J0IFNUQUdJTkdfTElCRElSCi0KLQotU1JDX1VSSVttZDVzdW1dID0gIjU3YTYyN2YzMGIzYjI3ODIxZjgwODY1OTg4OTUxNGMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlMzdlMWQ4NmM2NWVjYWNhZTY2ODNmODgwNWUwNTFlOTkwNGU1ZjJlMDJiZjJiN2EzNDI2MmM0NmE2ZDA2YTciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXRwbG90bGliXzIuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYl8yLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjFjM2YwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYl8yLjAuMi5iYgpAQCAtMCwwICsxLDE4IEBACitERVNDUklQVElPTiA9ICJtYXRwbG90bGliIGlzIGEgcHl0aG9uIDJEIHBsb3R0aW5nIGxpYnJhcnkgd2hpY2ggcHJvZHVjZXMgcHVibGljYXRpb24gcXVhbGl0eSBmaWd1cmVzIGluIGEgdmFyaWV0eSBvZiBoYXJkY29weSBmb3JtYXRzIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UvTElDRU5TRTttZDU9YWZlYzYxNDk4YWE1ZjBjNDU5MzY2ODdkYTlhNTNkNzQiCisKK0RFUEVORFMgKz0gInB5dGhvbi1udW1weSBmcmVldHlwZSBsaWJwbmcgcHl0aG9uLWRhdGV1dGlsIHB5dGhvbi1weXR6IgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWNvcmUgcHl0aG9uLWRpc3R1dGlscyBweXRob24tbnVtcHkgZnJlZXR5cGUgbGlicG5nIHB5dGhvbi1kYXRldXRpbCBweXRob24tcHl0eiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWF0cGxvdGxpYi9tYXRwbG90bGliL2FyY2hpdmUvdiR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfc2V0dXBleHQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjg5NzE3YzFlZjNjNmZkY2Q2ZmIxZjNiNTk3YTQ4NThjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFlYmVkMjM5MjE1NjI3OTJiNjhiOGNhMzU1ZGU1YWJjMTc2YWY0NDI0ZjE5ODdlMmZhOTVmNjVlNWM1ZTdlODkiCitTID0gIiR7V09SS0RJUn0vbWF0cGxvdGxpYi0ke1BWfSIKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKKworaW5oZXJpdCBzZXR1cHRvb2xzIHBrZ2NvbmZpZworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVjODhiMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lLm1vbm90b25pYygpIGZvciBQeXRob24gMi4wIHRocm91Z2ggMy4yIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDI3OTRjMGRmNWI5MDdmZGFjZTIzNWE2MTlkODAzMTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMTRjOTNhYWJjM2Q2YWYyNWVmMDg2YjAzMmIxMjNjZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMGUxY2VjYTU2M2NhNmJiMzBiMGZiMDQ3ZWUxMDAyNTAzYWU2YWQzNTg1ZmM5YzZhZjM3YThmNzdlYzI3NGJhIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWN0eXBlcyAke1BZVEhPTl9QTn0taW8gJHtQWVRIT05fUE59LXJlICR7UFlUSE9OX1BOfS10aHJlYWRpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTkxZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuMy5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRpbWUubW9ub3RvbmljKCkgZm9yIFB5dGhvbiAyLjAgdGhyb3VnaCAzLjIiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMjc5NGMwZGY1YjkwN2ZkYWNlMjM1YTYxOWQ4MDMxNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM0MzUxMjUxZDFhNjc2NjdhMjVjZDc2NzNkMmU0NGJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiNDY5ZTJkN2RkNDAzZjdmN2Y3OTIyN2ZlNWFkNTUxZWUxZTc2ZjhiYjMwMGFlOTM1MjA5ODg0YjkzYzdjMWIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY3R5cGVzICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXRocmVhZGluZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2suaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFjay5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI4Y2U1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2suaW5jCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJNZXNzYWdlUGFjayAoZGUpc2VyaWFsaXplciIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNkOTUyMzE4MWQ5ZDRmYmY3ZmZjYTUyZWFhMmE1NzUxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGNkODU0ZmI0MWVlNzU4NGViYmYzNWUwNDllNmJlOTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWEyYjE5ZGYwZjAzNTE5ZWM3ZjE5ZjgyNmFmYjkzNWIyMDJkODk3OWIwODU2YzZmYjNkYzI4OTU1Nzk5Zjg4NiIKKworUFlQSV9QQUNLQUdFID0gIm1zZ3BhY2stcHl0aG9uIgoraW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrXzAuNC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFja18wLjQuOC5iYgppbmRleCA4YTBhZDhmLi4yYzJjOGYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrXzAuNC44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2tfMC40LjguYmIKQEAgLTEsOSArMSwyIEBACi1TVU1NQVJZID0gIk1lc3NhZ2VQYWNrIChkZSlzZXJpYWxpemVyIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2Q5NTIzMTgxZDlkNGZiZjdmZmNhNTJlYWEyYTU3NTEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkY2Q4NTRmYjQxZWU3NTg0ZWJiZjM1ZTA0OWU2YmU5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYTJiMTlkZjBmMDM1MTllYzdmMTlmODI2YWZiOTM1YjIwMmQ4OTc5YjA4NTZjNmZiM2RjMjg5NTU3OTlmODg2IgotCi1QWVBJX1BBQ0tBR0UgPSAibXNncGFjay1weXRob24iCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tbXNncGFjay5pbmMKK2luaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudC5pbmMKaW5kZXggM2M2MjUzZi4uMTMzY2FiMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnQuaW5jCkBAIC0zLDggKzMsOCBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NQU5JRkVTVC5pbjttZDU9Y2UyMmMwY2Q5ODZkMmRlM2Y3MDczY2Q2YjU1MjNhZTAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiM2E5NThjMGU5YWFmNGQzZjhkZDkzM2Y0NmY4YzFhOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODA5ODdlZjE5NDMzNGM1MDM4OWUwZDdkZTg4NWZjY2YxNTYwNWMxM2M2ZWVjYWFiZDhkNmM0Mzc2OGViOGFjIgorU1JDX1VSSVttZDVzdW1dID0gIjU5YTJmMGE1YjNiNjBlNmM1MjBhOWNjN2JlOWFmZjg3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiZmQ4YzVjZmNiYzI0MWE5M2NhNmE0ZTQ1Zjk1MjY1MGY1YzdlY2Y3YzQ5YjFkYmNmNWY0ZDM5MDI0MGJlMGIiCiAKIFBZUElfUEFDS0FHRSA9ICJuZGdfaHR0cHNjbGllbnQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjQuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50XzAuNC4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnRfMC40LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGFkZHIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkci5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZiMGYxZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGFkZHIuaW5jCkBAIC0wLDAgKzEsOCBAQAorU1VNTUFSWSA9ICJBIG5ldHdvcmsgYWRkcmVzcyBtYW5pcHVsYXRpb24gbGlicmFyeSBmb3IgUHl0aG9uLiIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTYzNDVkNjk1ZmZlMzc3NmY2OGE1NmZlNzk2MmRiNDQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MTAxOWVmNTljOTNmMzk3OWJjYjM3ZDNiODUyN2UwNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzOGFlZWM3Y2RkMDM1MDgxZDNhNGMzMDYzOTRiMTlkNjc3NjIzYmY3NmZhMDkxM2Y2Njk1MTI3Yzc3NTNhZWZkIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGFkZHJfMC43LjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIKaW5kZXggNWIwMzczNS4uNWUwODlhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIKQEAgLTEsOCArMSwyIEBACi1TVU1NQVJZID0gIkEgbmV0d29yayBhZGRyZXNzIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IGZvciBQeXRob24uIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNjM0NWQ2OTVmZmUzNzc2ZjY4YTU2ZmU3OTYyZGI0NCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUxMDE5ZWY1OWM5M2YzOTc5YmNiMzdkM2I4NTI3ZTA3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM4YWVlYzdjZGQwMzUwODFkM2E0YzMwNjM5NGIxOWQ2Nzc2MjNiZjc2ZmEwOTEzZjY2OTUxMjdjNzc1M2FlZmQiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1uZXRhZGRyLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXR3b3JreF8xLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3hfMS4xMS5iYgppbmRleCAyOGE3YmFhLi5iZGE4YWUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXR3b3JreF8xLjExLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4XzEuMTEuYmIKQEAgLTYsMyArNiw1IEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGQwZTcwZTEwZGZiNDc2MDFjYmIzNDI1YTAwZTAzZTJhMmU5NzQ3N2JlNmY4MDYzOGZlZjkxZDU0ZGQxZTRiOCIKIAogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi0ydG8zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dC5pbmMKaW5kZXggN2ZmM2ZiMi4uYWQxY2U2YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHQuaW5jCkBAIC0xLDExICsxLDE2IEBACiBTVU1NQVJZID0gIk1RVFQgdmVyc2lvbiAzLjEvMy4xLjEgY2xpZW50IGxpYnJhcnkiCi1MSUNFTlNFID0gIkVQTC0xLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZWI0OGM2ZWUyY2I5ZjViOGI5ZmU3NWU2ZjgxN2JkZmMiCitMSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWViNDhjNmVlMmNiOWY1YjhiOWZlNzVlNmY4MTdiZGZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VwbC12MTA7bWQ1PThkMzgzYzM3OWU5MWQyMGJhMThhNTJjM2U3ZDNhOTc5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VkbC12MTA7bWQ1PWMwOWYxMjE5MzlmMDYzYWViNTIzNTk3MmJlOGM3MjJjIFwKKyIKIFNSQ05BTUUgPSAicGFoby1tcXR0IgogCiBpbmhlcml0IHB5cGkKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNDExNTBiM2ZjYjkyMGRkY2E0ZDMzMTgxZjMyMzhiMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MTAwYTZhYTcwNmFiNjk5ZDQxNGVjMDI3MDVhMjFlYjY2ZjQzNjE4NDY5MWQwYmYxZjJhODVhNjIxM2M2YzFmIgorU1JDX1VSSVttZDVzdW1dID0gImI5MzM4MjM2ZTI4MzZlODU3OWVmMTQwOTU2MTg5Y2M0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjOWVmNTQ5NGNmYzFlNDFhOWZmZjY1NDRjNWEyY2Q1OWVhNWQ0MDFkOTExOWEwNmVjZjdmYWQ2YTJmZmViOTMiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1weXRlc3QtcnVubmVyLW5hdGl2ZSIKIAogUkRFUEVORFNfJHtQTn0gPSAiXAogICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1hdGggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dF8xLjMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuMy4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWYzNzA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYwpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZICA9ICJwYW5kYXMgbGlicmFyeSBmb3IgaGlnaC1wZXJmb3JtYW5jZSBkYXRhIGFuYWx5c2lzIHRvb2xzIgorREVTQ1JJUFRJT04gPSAicGFuZGFzIGlzIGFuIG9wZW4gc291cmNlLCBCU0QtbGljZW5zZWQgbGlicmFyeSBwcm92aWRpbmcgXAoraGlnaC1wZXJmb3JtYW5jZSwgZWFzeS10by11c2UgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBkYXRhIGFuYWx5c2lzIHRvb2xzIGZvciBcCit0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYW5kYXMucHlkYXRhLm9yZy8iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY2MDE3ZDMxMzQzNDkwMTc0MDkzODZiZTg1MTc2MTQ1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGRmODU4ZjI4YjRiZjRmYTA3ZDlmYmI3ZjI1NjgxNzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTc3N2UwNzYzM2Q4M2Q1NDZjNTU3MDY0MjAxNzk1NTFjOGUwMTA3NWI1M2M0OTdkY2Y4YWU0MDM2NzY2YmM2NiIKKworUFlQSV9QQUNLQUdFID0gInBhbmRhcyIKK2luaGVyaXQgcHlwaQorCitERVBFTkRTICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1udW1weS1uYXRpdmUgXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtcHkgXAorICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCisgICAgJHtQWVRIT05fUE59LXB5dHogXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzXzAuMjAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbmRhc18wLjIwLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA5NzNjOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbmRhc18wLjIwLjMuYmIKQEAgLTAsMCArMSw3IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXBhbmRhcy5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1pbXBvcnRsaWIgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGVfMC4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYzM3Y2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxpZmllcyBidWlsZGluZyBwYXJzZSB0eXBlcyBiYXNlZCBvbiB0aGUgcGFyc2UgbW9kdWxlIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iZTM4NDAyZWI0YjZjMjI0ZTQ5MTRmZDgyZTBlMTQzNiIKLVBZUElfUEFDS0FHRSA9ICJwYXJzZV90eXBlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDBiYTcwYmM1Y2E2NzYyNDIwN2IwZGZjZWQwMWRjOGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RkMGIzMjNiYWZjYjhjMjVlMDAwY2U1NTg5MDQyYTFjOTljYmE5YzNiZWM3N2I5ZjU5MWU0NmJjOTYwNjE0NyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1wYXJzZSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGVfMC40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlXzAuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MTZjNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlXzAuNC4yLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiU2ltcGxpZmllcyBidWlsZGluZyBwYXJzZSB0eXBlcyBiYXNlZCBvbiB0aGUgcGFyc2UgbW9kdWxlIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMDczMjM4MjBjY2EwZjFkMTkyY2JiZjhhMDUxNmY5NSIKK1BZUElfUEFDS0FHRSA9ICJwYXJzZV90eXBlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjVmYTU5ZTQ1OTY1ZDFiMjg5NjAyMzc0MmRmMmU3MDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjU5NmJkYzc1ZDNkZDkzMDM2ZmJmZTNkMDQxMjdkYTlmNmRmMGMyNmMzNmUwMWU3NmRhODVhZGVmNDMzNmIzYyIKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1wYXJzZSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlXzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZDkwNWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlBhcnNlIHN0cmluZ3MgdXNpbmcgYSBzcGVjaWZpY2F0aW9uIGJhc2VkIG9uIHRoZSBQeXRob24gZm9ybWF0KCkgc3ludGF4IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wYXJzZS5weTttZDU9MDgzZDhlZjhmOThhMzAzNWRiZjg5MGE4MDg0OThmZGU7c3RhcnRsaW5lPTExODk7ZW5kbGluZT0xMjA4IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmVhN2UzMmNiMzU4MTAxMTMxMzdmNjA3M2ZiMzA2MzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGI0ZjI4YmJlN2MwZjI0OTgxNjY5ZWE5MmIyYmE3MDRlZTYzYjUzNDYwMjdlODJiZTMwMTE4YmI1Nzg4ZmYxMCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZV8xLjguMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlXzEuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNzIyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZV8xLjguMi5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIlBhcnNlIHN0cmluZ3MgdXNpbmcgYSBzcGVjaWZpY2F0aW9uIGJhc2VkIG9uIHRoZSBQeXRob24gZm9ybWF0KCkgc3ludGF4IgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wYXJzZS5weTttZDU9YTg0YjQ5NDU2M2JiYTQ2NmEyZjAyYjA1ZjJlNmFkNGE7c3RhcnRsaW5lPTExOTE7ZW5kbGluZT0xMjEwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDIwMDIzMzg1NTFiZGZhMGYwMWJiZTRlNjc5YTE3ZGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODA0OGRkZTNmNWNhMDdhZDdhYzczNTA0NjA5NTJkODNiNjNlYWFjZWNkYWMxYjM3ZjQ1ZmQ3NDg3MGQ4NDlkMiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnJfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnJfMi4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNDRhOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzIuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUHl0aG9uIEJ1aWxkIFJlYXNvbmFibGVuZXNzOiBQQlIgaXMgYSBsaWJyYXJ5IHRoYXQgaW5qZWN0cyBzb21lIHVzZWZ1bCBhbmQgc2Vuc2libGUgZGVmYXVsdCBiZWhhdmlvcnMgaW50byB5b3VyIHNldHVwdG9vbHMgcnVuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wYnIiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkZWNlNzgyMWJmM2ZkNzBmZTEzMDllYWEzN2Q1MmEyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGZjMWMzNzg4ZWZmMDZhY2ZhYWRlNmYxNjU1ZmE0OTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGNjZDJkYjUyOWFmZDA3MGRmODE1YjE1MjFmMDE0MDFkNDNkZTAzOTQxMTcwZjhhODAwZTc1MzFmYWJhMjY1ZCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICAgICBweXRob24tcGlwIFwKLSAgICAgICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBicl8zLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBicl8zLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGZmODY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzMuMS4xLmJiCkBAIC0wLDAgKzEsMTYgQEAKK0RFU0NSSVBUSU9OID0gIlB5dGhvbiBCdWlsZCBSZWFzb25hYmxlbmVzczogUEJSIGlzIGEgbGlicmFyeSB0aGF0IGluamVjdHMgc29tZSB1c2VmdWwgYW5kIHNlbnNpYmxlIGRlZmF1bHQgYmVoYXZpb3JzIGludG8geW91ciBzZXR1cHRvb2xzIHJ1biIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGJyIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xZGVjZTc4MjFiZjNmZDcwZmUxMzA5ZWFhMzdkNTJhMiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRlODJjMmUwN2FmNTQ0YzU2YTViNzFjODAxNTI1YjAwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1ZjYxYzcxYWFlZmMwMmQ4ZTM3YzBhM2VlYjk4MTVmZjUyNmVhMjhiM2I3NjMyNDc2OWU2MTU4ZDdmOTViZTEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICAgICAgcHl0aG9uLXBpcCBcCisgICAgICAgICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZDA5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0LmluYwpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkEgUHVyZSBQeXRob24gRXhwZWN0IGxpa2UgTW9kdWxlIGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vcGV4cGVjdC5yZWFkdGhlZG9jcy5vcmcvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIklTQyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFjN2E3MjUyNTE4ODBhZjhjNmExNDgxODE2NjUzODViIgorCitTUkNOQU1FID0gInBleHBlY3QiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNjk0NDEwMDAxYTk5ZGZmODNmMGI1MDBhMWNhMWM5NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDEzMjQ2NWE3NWI1N2FhODE4MzQxYzY1MjEzOTJhMDZjYzY2MGZlYjM5ODhkN2YxMDc0ZjM5YmQyM2M5YTkyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wZXhwZWN0IgorCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS10ZXJtaW5hbCBcCisgICAgJHtQWVRIT05fUE59LXJlc291cmNlIFwKKyAgICAke1BZVEhPTl9QTn0tZmNudGwgXAorICAgICR7UFlUSE9OX1BOfS1wdHlwcm9jZXNzIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM0NmI0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC4yLjEuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1wZXhwZWN0LmluYworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpcF85LjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpcF85LjAuMS5iYgppbmRleCAyODUxNzYxLi41ZGRkOGQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waXBfOS4wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzkuMC4xLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJQSVAgaXMgYSB0b29sIGZvciBpbnN0YWxsaW5nIGFuZCBtYW5hZ2luZyBQeXRob24gcGFja2FnZXMiCitIT01FUEFHRSA9ICJodHRwczovL3BpcC5weXBhLmlvLyIKIExJQ0VOU0UgPSAiTUlUICYgTEdQTC0yLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MjVmYmE0NTEwOTU2NWY4N2RlMjBiYWU4NWJjMzk0NTIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXRlbmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZC5pbmMKaW5kZXggMmQyMWNjNC4uNzhiNjcxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZC5pbmMKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkEgbGlicmFyeSBmb3Igc3R1YmJpbmcgaW4gUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FsZXgvcHJldGVuZCIKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PTQxMTc4MGMwYjdmYTc1Njc1M2U5NGFmZmVlZTViYzk5IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzcy5pbmMKaW5kZXggODBkMGE1OC4uMjk3YzBkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvZ3Jlc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzLmluYwpAQCAtMyw3ICszLDEyIEBACiBMSUNFTlNFID0gIklTQyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFlZjU1NjZhYzRmZWRlOTgxNWVjY2YxMjRjMjgxMzE3IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYzFkYmY0OWE0MWU4MDQwOGQzODc0ZDk3NmJhODk0Y2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI2YTUwZjlhYzc2ODIwZjYxOWQ3Nzg5YjUzNTQ4ODFjOGMxMDA2MGE2NDA0N2U0MTU4NjhkOGY1MDNjYzJlYiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNjVjY2ZjYzIzMzlkNTIyYjJkZDU4MDFhYWE0MGRjNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjODhkODllZTNiZDA2NzE2YTBiOGI1NTA0ZDljM2JjYjNjMWMwYWI5OGY5NmRjN2YxZGM1ZjU2ODEyYTRmNjBhIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0tbWF0aCBcCisiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzXzEuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvZ3Jlc3NfMS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzc18xLjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0LmluYwppbmRleCAzMGMyYzgxLi5mNWVkMzQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXQuaW5jCkBAIC0yLDggKzIsOCBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMmNkZTdkYTg5ZjBjMWYzZTQ5YmY5NjhkMDBkNTU0ZiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjQyN2I0OTZkMmMxNDdiZDM4MTliYzNhN2Y2ZTBkNDkzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMzZDY4Y2EwOWY3NmNkNzMyODdmZGU3ZGY1NzQ4ZmZhY2YyNmE4MjM4ZGQ2MWVlODFhYzUwODYwZWE3YzY3NzYiCitTUkNfVVJJW21kNXN1bV0gPSAiOGZlNzAyOTUwMDZkYmM4YWZlZGQ0M2U1ZWJhOTkwMzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODU4NTg4ZjE5ODNjYTQ5N2YxY2Y0ZmZkZTAxZDk3OGEzZWEwMmIwMWM4YTI2YThiYmM1Y2QyZTY2ZDgxNjkxNyIKIAogUFlQSV9QQUNLQUdFID0gInByb21wdF90b29sa2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdF8xLjAuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdF8xLjAuMTUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzEuMC4xMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXRfMS4wLjE1LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY1OWVmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYwpAQCAtMCwwICsxLDE2IEBACitERVNDUklQVElPTiA9ICJQcm90b2NvbCBCdWZmZXJzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXNpeCIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQlNELTMtQ2xhdXNlO21kNT01NTA3OTQ0NjViYTBlYzUzMTJkNjkxOWUyMDNhNTVmOSIKKworaW5oZXJpdCBweXBpCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZmMwYzYxYzE1NmE5OTVlOTA5NTIxNjk3ZTc1NTc4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZjAyNjA5ZWY0NDU5ODc5NzZhM2EyNmJmZjc3MTE5YzUxOGUwOTE1Yzk2NjYxYzNhM2IxNzg1NmQwZWY2Mzc0IgorCisjIEZvciB1c2FnZSBpbiBvdGhlciByZWNpcGllcyB3aGVuIGNvbXBpbGluZyBwcm90b2J1ZiBmaWxlcyAoZS5nLiBieSBncnBjaW8tdG9vbHMpCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmXzMuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWZfMy40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0ZmM0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmXzMuNC4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1wcm90b2J1Zi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWwuaW5jCmluZGV4IDZkM2ViZjguLmM5YTdmNmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsLmluYwpAQCAtMiw4ICsyLDggQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGYwMmU5OWY3ZjNjOWE3ZmU4ZWNmYzVkNDRjMmJlNjIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjOWFhMjU5OWRjZDllNWI1OWQ3MWI2NjYwZDM5NjA2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZmM5MWQwNjhmYWE1NjEzYzA5MzMzNWYwZTc1ODY3M2VmOGM3MjJhZDRiZmE0YWRlZDY0YzEzYWU2OTA4OWViIgorU1JDX1VSSVttZDVzdW1dID0gIjUyOTI0NGFlYTVkMzJmYjBjMmVhNDZkODBjZTU0YWJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyZGQ5YzhhYmJhZDE1ZjA1NWU5NTc5MTMwMDM1YjM4NjE3MDIwY2UxNzZmNGE0OThiNzg3MGU2MzIxZmZhNjciCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS4zLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbF81LjIuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuMy4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3MuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZjJkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzLmluYwpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIlJ1biBhIHN1YnByb2Nlc3MgaW4gYSBwc2V1ZG8gdGVybWluYWwiCitIT01FUEFHRSA9ICJodHRwOi8vcHR5cHJvY2Vzcy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIklTQyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNmZGNkNTFmYTdkNTgwOGRhNGU3NDM0NmVlMzk0NDkwIgorCitTUkNOQU1FID0gInB0eXByb2Nlc3MiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkM2I4ZmViYWUxYjhjNTNiMDU0YmQ4MThkMGJiODY2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNjQxOTNmMDA0N2FkNjAzYjcxZjIwMjMzMmFiNTUyN2M1ZTUyYWE3YzhiNjA5NzA0ZmMyOGMwZGMyMGM0MzY1IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wdHlwcm9jZXNzIgorCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3NfMC41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhNDU4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3NfMC41LjIuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1wdHlwcm9jZXNzLmluYworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5LmluYwppbmRleCA0YWM1MDJlLi4xYWVmMGU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHkuaW5jCkBAIC0xLDggKzEsOSBAQAogU1VNTUFSWSA9ICJMaWJyYXJ5IHdpdGggY3Jvc3MtcHl0aG9uIHBhdGgsIGluaS1wYXJzaW5nLCBpbywgY29kZSwgbG9nIGZhY2lsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vcHkucmVhZHRoZWRvY3MuaW8vIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNmJiMDMyMGIwNGEwYTUwM2YxMmY2OWZlYTQ3OWRlOSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI1MDZmM2RmMjg3NzA4YjJmOTk1ODhiNWNjMzUxMDkxIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNjhlZTBiNTg2NzI4MjU5NWQwYjQxMGE3ZjNjMDNhYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzRiODlmZDFmZjExNjIzNzUxMTU2MDhkMDFmNzdjMzhjY2ExZDBmMjhmMzdmZDcxODAwNWUxOWIyOGJlNDFhNyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOWMzZDhmNzM0YjA4MTlmZjQ4ZTM1NWQ3N2JmMTczMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjJkNTg1ZDIyMDUwZTkwYzdkMjkzYjY0NTFjODNkYjA5N2RmNzc4NzE5NzRkOTBlZmQ1YTMwZGMxMmZjZGUzIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weV8xLjQuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weV8xLjQuMzQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5XzEuNC4zMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlfMS40LjM0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLmluYwppbmRleCA0ZWIyZDliLi5kZWRiMTkxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT0yODA2MDZkOWMxOGYyMDBlMDNlMGMyNDdhYzYxNDc1YSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjc5Zjk4MTM1MDcxYzhkZDVjMzdiNmM5MjNjNTFiZTQ1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczOGM0ZWJkODhhNzE4ZTcwMGVlMzVjOGQxMjlhY2NlMjI4NjU0MmRhYTgwYTgyODIzYTcwNzM2NDRmNzA2YWQiCitTUkNfVVJJW21kNXN1bV0gPSAiYTJkMDFjNTYxZDQ5OTYwNTU2NDFiYmJiNzRlZGE1OGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjAzODBlYTk3ZGIwZWRlMDk1YTBkZDg3Y2UzMDAzZDQ2YzE5NzE5MWY5MjQyMDZlNDNmNzc2ZmM3N2U1MWYwOSIKIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xXzAuMi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xXzAuMy42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC4yLjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMV8wLjMuNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTEuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTEuaW5jCmluZGV4IDZkMzZkODcuLmUyNzNhOGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMS5pbmMKQEAgLTEsOCArMSw3IEBACiBTVU1NQVJZID0gIlNlYW1sZXNzIG9wZXJhYmlsaXR5IGJldHdlZW4gQysrMTEgYW5kIFB5dGhvbiIKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS93amFrb2IvcHliaW5kMTEiCiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT00ODVkOWY4YWExYWI1MTNiZWMwZGUyZjU1Y2Q2OTY3MiIKLVBSID0gInIwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWIyN2ZhYzdlOTM3MzIzZTNkZTljYTNhN2RiMzhlMzciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjOTYxMDMxNjhlOWFiY2VhYTZkNDZmNjA3NGRjYWYzOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjFhNDgyNGFhZDg4YjEwNzNmZThkYmQyMTY4M2UxZTUyMjhmM2VkM2IyOWMyNzg1ZmJmNWRlYTZiZjEwNjNjIgorU1JDX1VSSVttZDVzdW1dID0gImY0NTRkODk5MWY0N2JlZmU1NmQ0MTI2ZGY4NjFmYzk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5NmE5MjRmYWU2ZTI3MjFlZmJmMjRmNDc1NjEyODRmZDFlYTBiNjU1NjE5YTg2MjFjNDQyMzAzNjE4M2I4MjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExXzIuMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjAuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTFfMi4yLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXpfMC4yMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXpfMC4yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWI5YzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlel8wLjIyLmJiCkBAIC0wLDAgKzEsMTcgQEAKK0RFU0NSSVBUSU9OID0gIkJsdWV0b290aCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9rYXJ1bGlzLmdpdGh1Yi5pby9weWJsdWV6LyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitSREVQRU5EU18ke1BOfSA9ICJibHVlejUiCitERVBFTkRTID0gImJsdWV6NSIKKworTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGE3MWQwNDc1ZDA4ZWVlNzZkOGI2ZDBjNmRiZWM1NDMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvYzEvOTgvMzE0OTQ4MWQ1MDhiZWUxNzQzMzViZTY3MjU4ODBmMDBkMjk3YWZlYmU3NWMxNWU5MTdhZjhmNmZlMTY5L1B5Qmx1ZXotMC4yMi56aXAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDlkYWI5ZDVhOGYwYjc5OGM4MTI1YzdmNjQ5YmUzY2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGNlMDA2NzE2YTU0ZDlkMThlODE4NmEzZjFjOGIxMmE4ZTZiZWZlY2ZmZThmZDU4MjhhMjkxZmI2OTRjZTQ5ZCIKKworUyA9ICIke1dPUktESVJ9L1B5Qmx1ZXotJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyLmluYwppbmRleCA0OTEzZjQyLi42YjA1NDgyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlci5pbmMKQEAgLTEsOSArMSwxMCBAQAogU1VNTUFSWSA9ICJQYXJzZXIgb2YgdGhlIEMgbGFuZ3VhZ2UsIHdyaXR0ZW4gaW4gcHVyZSBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZWxpYmVuL3B5Y3BhcnNlciIKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDBjZmNhN2JiYzA2MTBmODQ5NzA3ZDllNGZkODJlYWMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04NmYxY2VkYjRlNjQxMGE4OGNlOGUzMGI5MTA3OTE2OSIKIAotU1JDX1VSSVttZDVzdW1dID0gImNhOThkY2I1MGJjMTI3NmYyMzAxMThmNmFmNWE0MGM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBhYWMzMWU5MTdjMjRjYjMzNTdmNWE0ZDU1NjZmMmNjOTFhMTljYTQxODYyZjZjM2MyMmRjNjBhNjI5NjczYjYiCitTUkNfVVJJW21kNXN1bV0gPSAiNzIzNzBkYTU0MzU4MjAyYTYwMTMwZTIyM2Q0ODgxMzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTlhOGNhMDNlMjk4NTFkOTY2MTZhZDA0MDRiNGFhZDdkOWVlMTZmMjVjOWY5NzA4YTExZmFmMjgxMGY3YjIyNiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXJfMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlcl8yLjE4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXJfMi4xNy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyXzIuMTguYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNjUzNzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGEuaW5jCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiQSBQeXRob24gaW50ZXJmYWNlIGZvciB0aGUgRmlybWF0YSBwcm90b2NvbCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODRkZGNlZjQzMGI3YzQ0Y2FhMjJiMmZmNGIzN2EzZGYiCitQWVBJX1BBQ0tBR0UgPSAicHlGaXJtYXRhIgorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LXB5c2VyaWFsIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImVlNGMyM2NhNWMzNWQzMDkxZDU1MGE2MzU0MDgxMWEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1NGQ0OWQ2NmE5ZDkzYzFlZjljNzJjYTAxMjY0NDE0Y2IyZGUxNzdiYWFjMTE2YzEyZDVjY2UwYzM4MDE2MGMiCisKK2luaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmaXJtYXRhXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmaXJtYXRhXzEuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3N2UwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGFfMS4wLjMuYmIKQEAgLTAsMCArMSwzIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXB5ZmlybWF0YS5pbmMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU1YmNlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludC5pbmMKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWT0iUHlsaW50IGlzIGEgUHl0aG9uIHNvdXJjZSBjb2RlIGFuYWx5emVyIgorSE9NRVBBR0U9ICJodHRwOi8vd3d3LnB5bGludC5vcmcvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOThhMWVlOTg1YTNlYmM4NzZhMjBlYjc1NzdkYmFiNjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWY2NWIzODE1YzNiZjc1MjRiODQ1NzExZDU0YzQyNDJlNDA1N2RkOTM4MjY1ODY2MjAyMzllY2RmZTU5MWZiMSIKKworaW5oZXJpdCBweXBpCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1weXRlc3QtcnVubmVyLW5hdGl2ZSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1hc3Ryb2lkIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taXNvcnQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRpZmZsaWIgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCgpeworICAgIHJtICR7RH0ke2JpbmRpcn0vcHlsaW50CisgICAgY2F0ID4+ICR7RH0ke2JpbmRpcn0vcHlsaW50IDw8RU9GCisjIS91c3IvYmluL2VudiAke1BZVEhPTl9QTn0KK2Zyb20gcHlsaW50IGltcG9ydCBydW5fcHlsaW50CitydW5fcHlsaW50KCkKK0VPRgorICAgIGNobW9kIDc1NSAke0R9JHtiaW5kaXJ9L3B5bGludAorICAgIHNlZCAtaSAtZSAnczpeIyEvdXNyL2Jpbi9weXRob246IyEvdXNyL2Jpbi9lbnZcICR7UFlUSE9OX1BOfTpnJyAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5bGludC90ZXN0L2RhdGEvYXNjcmlwdAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuNi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuNi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWI0YWQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludF8xLjYuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlk9IlB5bGludCBpcyBhIFB5dGhvbiBzb3VyY2UgY29kZSBhbmFseXplciIKLUhPTUVQQUdFPSAiaHR0cDovL3d3dy5weWxpbnQub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMxZGEyMTg1YmY1OTE0MjQ3OWU0ZmExNmQ4YTllMzQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2NzM5ODRhOGRkNzhlNGE4YjhjZmRlZTUzNTlhMTMwOWQ4MzNjZjM4NDA1MDA4ZjRhMjQ5OTk0YTg0NTY3MTkiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tY29kZWNzIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tY29udGV4dGxpYiBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLWNvcmUgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1kaXN0dXRpbHMgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1pbyBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLWxhbmcgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmcgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRzZXJ2ZXIgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1udW1iZXJzIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tcGlja2xlIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tcmUgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1zaGVsbCBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXNpeCBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXN0cmluZ29sZCBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXN1YnByb2Nlc3MgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi10ZXh0dXRpbHMgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tc2V0dXB0b29scyBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLWFzdHJvaWQgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi13cmFwdCBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLWlzb3J0IFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tbGF6eS1vYmplY3QtcHJveHkgXAotICAgICAgICAgICAgICAgICAgICIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotZG9faW5zdGFsbF9hcHBlbmQoKXsKLSAgICBybSAke0R9JHtiaW5kaXJ9L3B5bGludAotICAgIGNhdCA+PiAke0R9JHtiaW5kaXJ9L3B5bGludCA8PEVPRgotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi1mcm9tIHB5bGludCBpbXBvcnQgcnVuX3B5bGludAotcnVuX3B5bGludCgpCi1FT0YKLSAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9weWxpbnQKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludF8xLjcuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludF8xLjcuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjUxZDNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuNy40LmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzIHB5dGhvbi1kaXIKK3JlcXVpcmUgcHl0aG9uLXB5bGludC5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3AuaW5jCmluZGV4IGZlMjViNTAuLjIxYmE3YmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYwpAQCAtMSw5ICsxLDkgQEAKIERFU0NSSVBUSU9OID0gIlB5dGhvbiBBUEkgZm9yIE1JU1AiCiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vTUlTUC9QeU1JU1AiCiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT0yZTFlZmRjNDMzNDk4Y2ViZDMzZWMyNzdhZDg3NDFlNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEzNjM5Y2Y1NzgwZjcxYjEyNWQzZTlkMWRjMTI3YzIwIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNTMyMGY0MWJmOTZjZjIyZDEzYWY3ZWIzMWUxZDMyMWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM3YmQ5N2YwZWE5YzdlYjE5MzU5MDJmMWJjNmZjMWVjMjdlYmE4NjA1NmM1YjkzODIzNGE3MjI5ODkxZDVhMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMDI0YmFiZDk3YWI1N2NhMDM2MDM5NGVkYzM3ZjJiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NDgwYWNhZGE4Y2JhOTQ3MmE4NTA3MGM1N2JhYWQ4OWFlOWRlZWQ4MjZhNzUxNWE0YzE0OWFjNDg5MjBjMjczIgogCiBSREVQRU5EU18ke1BOfSArPSAiICR7UFlUSE9OX1BOfS1yZXF1ZXN0cyAke1BZVEhPTl9QTn0tanNvbiAke1BZVEhPTl9QTn0tanNvbnNjaGVtYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcF8yLjQuNjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40LjgwLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40LjY3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40LjgwLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCmluZGV4IGU3MDlhMzYuLjdmMTk5YjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCkBAIC04LDEyICs4LDIwIEBACiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yYTk0NDk0MmUxNDk2YWYxODg2OTAzZDI3NGRlZGIxMyIKIAotU1JDX1VSSVttZDVzdW1dID0gImFhNzdmODhlNTFlMjgxYzlmMzI4Y2VhNzAxYmI2ZjNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzNTkzNDljNmM5ZmY5ZjQ4MjgwNWY4OWU2NmU0NzY4NDYzMTdkYzdiMWVlYTk3OWQ3ZGE5YzA4NTdlZTI3MjEiCitTUkNfVVJJW21kNXN1bV0gPSAiMzVhZTUzMDczYTI1NjAzNTkxZTA4NWIxOGJjNWEwZWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTgyMGQ5MzQxNGYzYmVjMWZhNDU2Yzg0YWZiZDRhZjFiNDNmZjQxMzY2MzIxNjE5ZGI3NGU2YmMwNjVkNjkyNCIKKworUEFDS0FHRVMgPSsgIiR7UFlUSE9OX1BOfS1ic29uIgorCitGSUxFU18ke1BZVEhPTl9QTn0tYnNvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ic29uLyoiCisKK1JERVBFTkRTXyR7UFlUSE9OX1BOfS1ic29uICs9ICIgXAorICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LWJzb24gXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ29fMy41LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ29fMy40LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ29fMy41LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jCmluZGV4IDU3OWNhNjAuLjFiZjgzMjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsLmluYwpAQCAtMSwxMSArMSwxMiBAQAogU1VNTUFSWSA9ICJTaW1wbGUgUHl0aG9uIHdyYXBwZXIgYXJvdW5kIHRoZSBPcGVuU1NMIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3B5b3BlbnNzbC5vcmcvIgogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCiAKIERFUEVORFMgKz0gIm9wZW5zc2wgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjY2MzU1MDM3NThjNjVlYTZmNzBkMThkMWIxOGU0NmQ1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3NzlhM2JiYjc0ZTc5ZGIyMzRhZjZhMDg3NzU1NjhjNjc2OWI1ODIxZmFlY2Y2ZTJmNDE0M2VkYjIyNzUxNmUiCitTUkNfVVJJW21kNXN1bV0gPSAiMDlkY2QzMDdiOGQyMDY4ZjlkZDVhYWEzYTNhODg5OTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk2MzBiOTA2NGE4MmUwNGQ4MjQyZWEwMWQ3YzkzZDcwZWMzMjBmNWUzZWQ0OGU5NWZjYWJjNmIxZDBmNmM3NiIKIAogUFlQSV9QQUNLQUdFID0gInB5T3BlblNTTCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE2LjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbF8xNy4zLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbF8xNi4yLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbF8xNy4zLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmcuaW5jCmluZGV4IDAzM2UwZGIuLjE5ZjZkNTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYwpAQCAtMTcsMyArMTcsNSBAQAogICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAogICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAogIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTFkNGNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIuaW5jCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBwdXJlIFB5dGhvbiBuZXRsaW5rIGFuZCBMaW51eCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gbGlicmFyeSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwudjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuQXBhY2hlLnYyO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSVttZDVzdW1dID0gIjczM2FkYjM2MmI2NjAzYzcyNjljMGIzZGYzMDQ1YTU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjZGY0NDY1NmNmNjIzMzY5ZjBjYmYxODNkOWQxNGExYTUwZWJkZmZiZDUwZDRlMzBmZmRhNjJjMGEwNWQ3YjMiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9pbXBvcnQtc2ltcGxlanNvbi1hcy1qc29uLnBhdGNoIgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHlyb3V0ZTI6IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCisgICR7UFlUSE9OX1BOfS1zaW1wbGVqc29uIFwKKyAgJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyBcCisgICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAorICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTJfMC4zLjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTJfMC4zLjIyLmJiCmluZGV4IDc5ZDNiZGQuLjdiOWM4ZTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuMy4yMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMl8wLjMuMjIuYmIKQEAgLTEsMjQgKzEsMiBAQAotU1VNTUFSWSA9ICJBIHB1cmUgUHl0aG9uIG5ldGxpbmsgYW5kIExpbnV4IG5ldHdvcmsgY29uZmlndXJhdGlvbiBsaWJyYXJ5IgotTElDRU5TRSA9ICJHUEx2MiAmIEFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkdQTC52MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5BcGFjaGUudjI7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzMzYWRiMzYyYjY2MDNjNzI2OWMwYjNkZjMwNDVhNTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWNkZjQ0NjU2Y2Y2MjMzNjlmMGNiZjE4M2Q5ZDE0YTFhNTBlYmRmZmJkNTBkNGUzMGZmZGE2MmMwYTA1ZDdiMyIKLQotU1JDX1VSSSArPSAiZmlsZTovL2ltcG9ydC1zaW1wbGVqc29uLWFzLWpzb24ucGF0Y2giCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gIHB5dGhvbi1kaXN0dXRpbHMgXAotICBweXRob24tc2ltcGxlanNvbiBcCi0gIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmcgXAotICBweXRob24taW8gcHl0aG9uLXBwcmludCBcCi0gIHB5dGhvbi1waWNrbGUgXAotICBweXRob24tbG9nZ2luZyBcCi0gIHB5dGhvbi10aHJlYWRpbmcgXAotICBweXRob24tdGV4dHV0aWxzIFwKLSAgcHl0aG9uLXN1YnByb2Nlc3MgXAotICBweXRob24tbmV0Y2xpZW50IFwKLSIKK3JlcXVpcmUgcHl0aG9uLXB5cm91dGUyLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbC5pbmMKaW5kZXggMjUwOGU3Ni4uOTljNmZjNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWwuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsLmluYwpAQCAtMTMsOCArMTMsOCBAQAogICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAogIgogCi1SU1JDX1VSSVttZDVzdW1dID0gIjZhZmU0YzJlNDdiY2VjNmViNzA1MWI4YzFjZTE5ZDUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5NDljZGRmZmMyYjA1NjgzMDY1YTNjZDIzNDUxMTRiMWE0OWIwOGRmOGNiODQzZDY5YmE5OWRjM2UxOWVkYzIiCitTUkNfVVJJW21kNXN1bV0gPSAiZWQ2MTgzYjE1NTE5YTBhZTk2Njc1ZTljMzMzMGM2OWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmUyZDQwMWZkZWUwZWFiOTk2Y2Y3MzRlNjc3NzNhMDE0M2I5MzI3NzJjYThiNDI0NTE0NDBjZmVkOTQyYzYyNyIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsXzMuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWxfMy4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbF8zLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3MuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrcy5pbmMKaW5kZXggNWFlYzZmYy4uY2Y5NTA5YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrcy5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkNDU3YmNmZmI5NjYxYjQ1Zjc5OWQ0ZWZlZTcyZjE2IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNTcxZjRjMjM5ODJmYTg2YmYwZTdhNDQxZjFiNmM4ODEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDI0MTlhMjI1ZmY1ZGNmYzNjOTY5NWVmOGZjOWI0ZDhjYzk5NjU4ZTY1MGM2ZDQ3MThkNGM4ZjQ1MWU2M2Y0MSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNzAwN2VjN2VkNDYyOTJkYWIwNjAxM2YyZTNhZjM2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMDAzMjlmMjdlZmExNTdkYjdlZmUzY2EyNmZjZDY5MDMzY2Q2MWY4MzgyMjQ2MWVlM2Y4YTM1M2I0OGUzM2NmIgogCiBQWVBJX1BBQ0tBR0UgPSAiUHlTb2NrcyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrc18xLjYuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3NfMS42LjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3NfMS42LjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3NfMS42LjcuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXIuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lci5pbmMKaW5kZXggODVhOGRlMS4uYzE3M2ExOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lci5pbmMKQEAgLTIsOSArMiw4IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzOGI5NzFjMmI0YzMzYjk3OGQxYjljOWVjZTlhZTYzIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYmRiNzNlYjE4ZWNhMjcyNzk0NGEyZGNmOTYzYzVhODEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTgzYTMxZWFiNDVlMzc1MjQwZTI1MDE2MWE1NTYxNjNiYzhkMjUwZWRhYmE5Nzk2MDkwOTMzOGMyNzNhODliMyIKLQorU1JDX1VSSVttZDVzdW1dID0gImE4ZGQ1N2M4MGNkZTM3YTU4N2RkOGMzNzc0MGMxYWIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjOTA5M2U3YTE4NzgwNDA5ZDlhMzg5ZjIwMzY2ZjJmZDM5YWNmYjFkYjYxNTQ1ZmRiMmU5MGNkYmQwYmNhZTQiCiAKIGluaGVyaXQgcHlwaQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyXzIuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXJfMi4xMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyXzIuMTEuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lcl8yLjEyLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QuaW5jCmluZGV4IGM5YzliYmYuLjYxNDAyNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LmluYwpAQCAtMSw5ICsxLDEzIEBACiBTVU1NQVJZID0gIlNpbXBsZSBwb3dlcmZ1bCB0ZXRpbmcgd2l0aCBweXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vcHl0ZXN0Lm9yZyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDhhNTYwOTYwOGQ5YTVhMTgwNzA1YjBmYTI5OGFlMDEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMzliMjQ5NjVmNGFlZjY0MjIyY2IzNWRlOWQ0N2NjNCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjY2Mzk1OTJmYTQzMDU2N2QwMjQxODlmMDk3ZmNkYmQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0MzQzNGE5ZjFhMTg4MjcxZGEzNWUyMDA2NGNiOGI2YzU0NDA5NzZjNWJiNTQxZGM3YjViMGUzY2Y3NWQ5NDAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDAxYzAwNWJkNTdmNzFlNjNiYTAxNWFiMDg2ZmU2N2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjQ2ZTQ5ZTAzNDBhNTMyNzY0OTkxYzQ5ODI0NGE2MGUzYTM3ZDc0MjRhNTMyYjNmZjFhNmE3NjUzZjFhNDAzYSIKKworU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtc2V0dXBfcmVxdWlyZXMtZm9yLXNldHVwdG9vbHMtc2NtLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICBmaWxlOi8vcHl0ZXN0X3ZlcnNpb25fZml4LnBhdGNoICIKIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1hcmdwYXJzZSBcCkBAIC0xMyw0ICsxNyw2IEBACiAgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAogIgogCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHl0ZXN0OiIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLXNldHVwX3JlcXVpcmVzLWZvci1zZXR1cHRvb2xzLXNjbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjgzYjE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBlMmQ4MTAwOWM3OTBiNGViZWNlZDg0MDhiNmJhZTc4MDYwY2FiY2FmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAwOTozNTo1MSAtMDQwMAorU3ViamVjdDogW1BBVENIIDEvMV0gc2V0dXAucHk6IHJlbW92ZSB0aGUgc2V0dXBfcmVxdWlyZXMgZm9yIHNldHVwdG9vbHMtc2NtCisKK1RoZSBzZXR1cF9yZXF1aXJlcyBhcmd1bWVudCBmb3JjZXMgdGhlIGRvd25sb2FkIG9mIHRoZSBlZ2cgZmlsZSBmb3Igc2V0dXB0b29scy1zY20KK2R1cmluZyB0aGUgZG9fY29tcGlsZSBwaGFzZS4gIFRoaXMgZG93bmxvYWQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHR5cGljYWwgZmV0Y2gKK2FuZCBtaXJyb3Igc3RydWN0dXJlLiAgVGhlIG9ubHkgdXNhZ2Ugb2Ygc2NtIGlzIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBfdmVyc2lvbi5weQorZmlsZSBhbmQgaW4gdGhlIHJlbGVhc2UgdGFyYmFsbCBpdCBpcyBhbHJlYWR5IGNvcnJlY3RseSBjcmVhdGVkCisKK1NpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CistLS0KKyBzZXR1cC5weSB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCA3NTE4NjhjLi5lZjZlYmYxIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtNzEsNyArNzEsNiBAQCBkZWYgbWFpbigpOgorICAgICAgICAga2V5d29yZHM9InRlc3QgdW5pdHRlc3QiLAorICAgICAgICAgY21kY2xhc3M9eyd0ZXN0JzogUHlUZXN0fSwKKyAgICAgICAgICMgdGhlIGZvbGxvd2luZyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgcmVsZWFzZQorLSAgICAgICAgc2V0dXBfcmVxdWlyZXM9WydzZXR1cHRvb2xzLXNjbSddLAorICAgICAgICAgaW5zdGFsbF9yZXF1aXJlcz1pbnN0YWxsX3JlcXVpcmVzLAorICAgICAgICAgZXh0cmFzX3JlcXVpcmU9ZXh0cmFzX3JlcXVpcmUsCisgICAgICAgICBwYWNrYWdlcz1bJ19weXRlc3QnLCAnX3B5dGVzdC5hc3NlcnRpb24nLCAnX3B5dGVzdC5fY29kZScsICdfcHl0ZXN0LnZlbmRvcmVkX3BhY2thZ2VzJ10sCistLSAKKzIuNy40CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvcHl0ZXN0X3ZlcnNpb25fZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0L3B5dGVzdF92ZXJzaW9uX2ZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDhmODYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0L3B5dGVzdF92ZXJzaW9uX2ZpeC5wYXRjaApAQCAtMCwwICsxLDUxIEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FIHNwZWNpZmljKSAKKworcHl0aG9uLXB5dGVzdDogcmVtb3ZlIGZldGNoIGR1cmluZyBkb19jb21waWxlIHBoYXNlCitjb21taXQ6IGM5NzRmYmY5ZWJmMTg1NTUyYWI2NTMwMWUwN2FmNDRmMzY1MTdhYmYgCisKK2ludHJvZHVjZWQgYW4gaXNzdWUgYnkgbWFraW5nIHRoZSB2ZXJzaW9uIDAuMC4wCit0aGlzIGZpeGVzIHRoYXQKKworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBweXRlc3QtMy4yLjIvc2V0dXAucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBweXRlc3QtMy4yLjIub3JpZy9zZXR1cC5weQorKysrIHB5dGVzdC0zLjIuMi9zZXR1cC5weQorQEAgLTEsNSArMSw2IEBACisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworK2ltcG9ydCByZQorIGltcG9ydCBzZXR1cHRvb2xzCisgaW1wb3J0IHBrZ19yZXNvdXJjZXMKKyBmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwLCBDb21tYW5kCitAQCAtMjIsNiArMjMsMTggQEAgY2xhc3NpZmllcnMgPSBbCisgd2l0aCBvcGVuKCdSRUFETUUucnN0JykgYXMgZmQ6CisgICAgIGxvbmdfZGVzY3JpcHRpb24gPSBmZC5yZWFkKCkKKyAKKytkZWYgcmVhZCgqbmFtZXMsICoqa3dhcmdzKToKKysgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbiggKm5hbWVzKSwgJ3InKSBhcyBmcDoKKysgICAgICAgIHJldHVybiBmcC5yZWFkKCkKKysKKytkZWYgZmluZF92ZXJzaW9uKCpmaWxlX3BhdGhzKToKKysgICAgdmVyc2lvbl9maWxlID0gcmVhZCgqZmlsZV9wYXRocykKKysgICAgdmVyc2lvbl9tYXRjaCA9IHJlLnNlYXJjaChyIl52ZXJzaW9uID0gWydcJ10oW14nXCJdKilbJ1wnXSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9maWxlLCByZS5NKQorKworKyAgICBpZiB2ZXJzaW9uX21hdGNoOgorKyAgICAgICAgcmV0dXJuIHZlcnNpb25fbWF0Y2guZ3JvdXAoMSkKKysgICAgcmFpc2UgUnVudGltZUVycm9yKCJVbmFibGUgdG8gZmluZCB2ZXJzaW9uIHN0cmluZy4iKQorIAorIGRlZiBoYXNfZW52aXJvbm1lbnRfbWFya2VyX3N1cHBvcnQoKToKKyAgICAgIiIiCitAQCAtNTksOSArNzIsNyBAQCBkZWYgbWFpbigpOgorICAgICAgICAgbmFtZT0ncHl0ZXN0JywKKyAgICAgICAgIGRlc2NyaXB0aW9uPSdweXRlc3Q6IHNpbXBsZSBwb3dlcmZ1bCB0ZXN0aW5nIHdpdGggUHl0aG9uJywKKyAgICAgICAgIGxvbmdfZGVzY3JpcHRpb249bG9uZ19kZXNjcmlwdGlvbiwKKy0gICAgICAgIHVzZV9zY21fdmVyc2lvbj17CistICAgICAgICAgICAgJ3dyaXRlX3RvJzogJ19weXRlc3QvX3ZlcnNpb24ucHknLAorLSAgICAgICAgfSwKKysJdmVyc2lvbj1maW5kX3ZlcnNpb24oIl9weXRlc3QiLCAiX3ZlcnNpb24ucHkiKSwKKyAgICAgICAgIHVybD0naHR0cDovL3B5dGVzdC5vcmcnLAorICAgICAgICAgbGljZW5zZT0nTUlUIGxpY2Vuc2UnLAorICAgICAgICAgcGxhdGZvcm1zPVsndW5peCcsICdsaW51eCcsICdvc3gnLCAnY3lnd2luJywgJ3dpbjMyJ10sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3RfMy4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3RfMy4yLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdF8zLjAuNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0XzMuMi4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXYuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjRjNWZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYwpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkEgbGlidWRldiBiaW5kaW5nIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSVttZDVzdW1dID0gImNmNGQ5ZGI3ZDc3MjYyMjE0NGNhMWJlNmI1ZDkzNTNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5NGI3YTEwMDE1MDExNDc0OGFhYTNiNzA2NjM0ODVkZDM2MDQ1N2E3MDliZmFhYWZlNWE5NzczNzEwMzNmMmIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAiL2ltcG9ydCBweXVkZXYvZCIgJHtTfS9zZXR1cC5weQorICAgIHNlZCAtaSAicy9zdHIocHl1ZGV2Ll9fdmVyc2lvbl9fKS8nJHtQVn0nL2ciICR7U30vc2V0dXAucHkKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorICAgICR7UFlUSE9OX1BOfS1taXNjIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXZfMC4yMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2XzAuMjEuMC5iYgppbmRleCBiMGExYWNiLi4zMjU3M2I3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXZfMC4yMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldl8wLjIxLjAuYmIKQEAgLTEsMjIgKzEsOCBAQAotU1VNTUFSWSA9ICJBIGxpYnVkZXYgYmluZGluZyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZjRkOWRiN2Q3NzI2MjIxNDRjYTFiZTZiNWQ5MzUzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOTRiN2ExMDAxNTAxMTQ3NDhhYWEzYjcwNjYzNDg1ZGQzNjA0NTdhNzA5YmZhYWFmZTVhOTc3MzcxMDMzZjJiIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgIi9pbXBvcnQgcHl1ZGV2L2QiICR7U30vc2V0dXAucHkKLSAgICBzZWQgLWkgInMvc3RyKHB5dWRldi5fX3ZlcnNpb25fXykvJyR7UFZ9Jy9nIiAke1N9L3NldHVwLnB5Ci19CityZXF1aXJlIHB5dGhvbi1weXVkZXYuaW5jCiAKIFJERVBFTkRTXyR7UE59ID0gIlwKICAgICAke1BZVEhPTl9QTn0tY29udGV4dGxpYiBcCi0gICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKICIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2IuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2IuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMjAxMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYi5pbmMKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJQeVVTQiBwcm92aWRlcyBVU0IgYWNjZXNzIG9uIHRoZSBQeXRob24gbGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vcHl1c2Iuc291cmNlZm9yZ2UubmV0LyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTBkNDZiZGE2MjQ4YTBiNGE0NmE2ZDU5YTY2ZWUwOGUiCitERVBFTkRTICs9ICJsaWJ1c2IxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmMxMmU4M2ZmM2VmMTA0NWQ0MzA2ZDEzYTk5NTVmYzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTRlYzY2MDc3YmRjZDZmMWFhOWU4OTJhMGEzNWE1NGJiM2MxZWM1NmFhNzQwZWFkNjQzNDljMThmMDE4NmQxOSIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYl8xLjAuMGIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjBiMi5iYgppbmRleCBkMjc5YWJjLi5iYjczZDlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYl8xLjAuMGIyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiXzEuMC4wYjIuYmIKQEAgLTEsMTAgKzEsMiBAQAotU1VNTUFSWSA9ICJQeVVTQiBwcm92aWRlcyBVU0IgYWNjZXNzIG9uIHRoZSBQeXRob24gbGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vcHl1c2Iuc291cmNlZm9yZ2UubmV0LyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTBkNDZiZGE2MjQ4YTBiNGE0NmE2ZDU5YTY2ZWUwOGUiCi1ERVBFTkRTID0gImxpYnVzYjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiYzEyZTgzZmYzZWYxMDQ1ZDQzMDZkMTNhOTk1NWZjMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNGVjNjYwNzdiZGNkNmYxYWE5ZTg5MmEwYTM1YTU0YmIzYzFlYzU2YWE3NDBlYWQ2NDM0OWMxOGYwMTg2ZDE5IgotCi1pbmhlcml0IHB5cGkgZGlzdHV0aWxzCitpbmhlcml0IGRpc3R1dGlscworcmVxdWlyZSBweXRob24tcHl1c2IuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpcy5pbmMKaW5kZXggMTdmZjIzMS4uNTcxYmIwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzLmluYwpAQCAtNCw1ICs0LDUgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTFkOWFkNTYyOTlhYjYwYmE3YmU2NWE2MjEwMDRmMjciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIzYjI2YzJiOTcwM2I0YjU2YjMwYTFhZDUwOGUzMTA4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZGZiYWU2YWNmYzU0ZWRmMGE3YTQxNWI5OWUwYjIxYzBhM2MyN2E3Zjc4N2IyOTJlZWE3MjdiMWZhY2M1NTMzIgorU1JDX1VSSVttZDVzdW1dID0gIjA0ODM0OGQ4Y2ZlMGI1ZDBiYmEyZjRkODM1MDA1YzNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyMmNhOTkzY2VhMjk2MmRiYjU4OGY5ZjMwZDAwMTVhYzRhZmNjNDViZWUyN2QzOTc4YzBkYmU5ZTk3YzZjMGYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpc18yLjEwLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpc18yLjEwLjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzXzIuMTAuNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXNfMi4xMC42LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy5pbmMKaW5kZXggYjY2ZjY2ZS4uNWQ2ZGNhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLmluYwpAQCAtMSwxMCArMSwxMiBAQAogREVTQ1JJUFRJT04gPSAiUHl0aG9uIEhUVFAgZm9yIEh1bWFucy4iCiBIT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uLXJlcXVlc3RzLm9yZyIKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ5YmIzNTE1ODY5YzBmNDI2Y2I4NDQxYzg5OWFlN2Y1IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTc5ZDZhMjNiMTQzZTEzZWEwZTVlM2FhODEyNDg4MjAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5MjFlYzZiNDhmMmRkYWZjOGJiNjE2MDk1N2JhZjQ0NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NzIyY2QwOTc2MmZhYTAxMjc2MjMwMjcwZmYxNmFmN2FjZjdjNWM0NWQ2MjM4NjhkOWJhMTE2ZjE1NzkxY2U4IgorU1JDX1VSSVttZDVzdW1dID0gIjA4MTQxMmIyZWY3OWJkYzQ4MjI5ODkxYWYxM2Y0ZDgyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljNDQzZTczMjRiYTViODUwNzBjNGE4MThhZGUyOGJmYWJlZGYxNmVhMTAyMDZkYTExMzJlZGFhNmRkYTIzN2UiCisKK2luaGVyaXQgcHlwaQogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tZW1haWwgXApAQCAtMTUsNiArMTcsOCBAQAogICAgICR7UFlUSE9OX1BOfS1weW9wZW5zc2wgXAogICAgICR7UFlUSE9OX1BOfS1weXNvY2tzIFwKICAgICAke1BZVEhPTl9QTn0tdXJsbGliMyBcCisgICAgJHtQWVRIT05fUE59LWNoYXJkZXQgXAorICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi4xMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi4xMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjdiYzk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXJlcXVlc3RzLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXpsaWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjE4LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjE4LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3YTI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuMTguNC5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcmVxdWVzdHMuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0temxpYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNkbm90aWZ5LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNkbm90aWZ5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTBlNTc1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnkuaW5jCkBAIC0wLDAgKzEsMTYgQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iYjQyNDIvc2Rub3RpZnkiCitTVU1NQVJZID0gIkEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygc3lzdGVtZCdzIHNlcnZpY2Ugbm90aWZpY2F0aW9uIHByb3RvY29sIChzZF9ub3RpZnkpIgorCitERVNDUklQVElPTiA9ICJcCisgIHNkbm90aWZ5IGlzIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN5c3RlbWQgc2Rfbm90aWZ5IHByb3RvY29sLiBcCisgIFRoaXMgcHJvdG9jb2wgY2FuIGJlIHVzZWQgdG8gaW5mb3JtIHN5c3RlbWQgYWJvdXQgc2VydmljZSBzdGFydC11cCBjb21wbGV0aW9uLCBcCisgIHdhdGNoZG9nIGV2ZW50cywgYW5kIG90aGVyIHNlcnZpY2Ugc3RhdHVzIGNoYW5nZXMuIFwKKyAgVGh1cywgdGhpcyBwYWNrYWdlIGNhbiBiZSB1c2VkIHRvIHdyaXRlIHN5c3RlbSBzZXJ2aWNlcyBpbiBQeXRob24gdGhhdCBwbGF5IG5pY2VseSB3aXRoIHN5c3RlbWQuIFwKKyAgIgorCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWNjNTcyY2NjNGIxOGE0YjdkMTNiZTVkMDFiYzgyMTNlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzQ5ZGRjYTFjNzBiZTE2OTdmZWNjNDQzZmIxZmRiMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM5NzdmYzc0NmIzNmNjNDExODRkZDQzYzNmZTgxMzIzZTdiOGIwNmMyYmIwODI2YzRmNTlhMjBjNTZiYjlmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNkbm90aWZ5XzAuMy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnlfMC4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlhZTNmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNkbm90aWZ5XzAuMy4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKK3JlcXVpcmUgcHl0aG9uLXNkbm90aWZ5LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VsZWN0b3JzMzRfMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VsZWN0b3JzMzRfMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTgyNDE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbGVjdG9yczM0XzEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAiQmFja3BvcnQgb2YgdGhlIHNlbGVjdG9ycyBtb2R1bGUgZnJvbSBQeXRob24gMy40IgotTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9MWNmYmJmNTkwZDhkNWI3ZmU5Mzc1MTYyMTdiNzc4YjMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MDMxOTRiMTBmMzVhNTI1OGUwNjQyNzEyZmRkMzc1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NGIzNzQzYjkwNDY0NjFhZWJiY2QxM2MxNWU3OWFiOTFlNzlhY2ZiNmUwMzBiNTRhMGVjNjM2MGFlMGJiYzUyIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICIgICAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZWxlY3RvcnMzNF8xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZWxlY3RvcnMzNF8xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk1NDVlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbGVjdG9yczM0XzEuMi5iYgpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIkJhY2twb3J0IG9mIHRoZSBzZWxlY3RvcnMgbW9kdWxlIGZyb20gUHl0aG9uIDMuNCIKK0xJQ0VOU0UgPSAiUFNGIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTJmYWUwMjIyYzMxZDZjMTA0ODhkNGFiOTNhODYzYWY3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmM4NTVhMWM4ODM5YTgxMTQ3NmMwMTlkYzA3ZDkyZGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDlmNTA2NjMzN2Y4YTc2ZmI1MjMzZjI2Nzg3M2Y4OWEyN2ExN2MxMGJmNzk1NzU5NTQ4OTRiYjcxNjg2NDUxYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAiICAgIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYwppbmRleCAwYjFhYTkxLi42NDU0ZWUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYwpAQCAtMSw5ICsxLDkgQEAKIFNVTU1BUlkgPSAiU2VyaWFsaXphdGlvbiBiYXNlZCBvbiBhc3QubGl0ZXJhbF9ldmFsIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9Mzc3M2UzOWM0OTFiYjFmOWNjYzk4Mzg5ZDU3MTY5ZDciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OWY2MTFkNGM5ZTI4MTZkMzg3YmFiNjRjNDBkOTMyOTQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjZGVmNTk2ZjcyN2NiNmI0MTc2Yzg5NzY5ZDJkNDFlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDZiMmM4MzdmODg5OTcxZGYzNTc1YWY5ZGFkZDhmMDliZmU0ODU0OWViYzFiOWY2NDM0MjYzYjY1MzcwN2NlIgorU1JDX1VSSVttZDVzdW1dID0gImQ5ZDZhZmE1MWYyNTYwY2Y1OTMzZGNkZmQ5NDcwMTFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0ODBjZTNkODg2NGI4OTc0ZDlmZTM5Njk5OGM2YTdkYWU5NmVkYjY4ZWRmOTA1YmZkMzJlYTlhMTE4NTNiYTUiCiAKIGluaGVyaXQgcHlwaQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50XzEuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50XzEuMjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnRfMS4xOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudF8xLjIzLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbS5pbmMKaW5kZXggMzI0OTg3MC4uODFiYmYzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY20uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYwpAQCAtMiw4ICsyLDggQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODM4YzM2NmY2OWI3MmM1ZGYwNWM5NmRmZjc5YjM1ZjIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiNjkxNmM3OGVkNjI1M2Q2NjAyNDQ0ZmFkNDI3OWM1YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYWYxMmQwNWFhMjE1NWE0NmFhMzU3NDUzNzU3ZmZkYzQ3ZDg3ZjgzOWU2MjExNGYwNDJiY2VhYzZhNjE5ZTJmIgorU1JDX1VSSVttZDVzdW1dID0gImYxNzQ5M2Q1M2YwZDg0MmJiMDE1MmYyMTQ3NzU2NDBiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5YWI0Njg1NTg5OTg2YTQyZGE4NTcwNmIzMzExYTJmNzRmMWFmNTY3ZDM5ZmVlNmNiMWUwODhkN2E3NWZiNWYiCiAKIFBZUElfUEFDS0FHRSA9ICJzZXR1cHRvb2xzX3NjbSIKIGluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY21fMS4xNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY21fMS4xNS42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbV8xLjE1LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtXzEuMTUuNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYwppbmRleCAyZWVkMTk5Li4xM2MwNDU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYwpAQCAtNCw4ICs0LDggQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWM2MzM4ZDdhYmQzMjFjMGI1MGEyYTU0N2U0NDFjNTJlIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNDI2YTk2MzFkMjI4NTFhN2E5NzBiMWE2NzczNjhiMTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTUzYmU2MjJlODgzMjNjNmY0M2ZhZDYxZmZkMDViZWJlNzNiOWZkOTg2M2E0NmQ2OGIwNTJkMmFhN2Q3MWNlMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTJmMWJkNWZiMGE5MjZmYWNmNWQ4OWQyMTdhNzE4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWEyMmQ0OWRkZDlhMTY4YjEzNmYyNmNhYzg3ZDlhMzM1NjYwY2UwN2FhNWM2MzBiOGUzNjA3ZDZmNDMyNWU3IgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbl8zLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTEuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbl8zLjEwLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy4xMS4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTkxNWMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYwpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIlB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNWNlYzViZjA0ZGQwODIwZDBhMTg1MzNlYTdjNzc0YSIKKworU1JDX1VSSVttZDVzdW1dID0gImQxMjc4OWY5YmFmN2U5ZmIyNTI0YzBjNjRmMTc3M2Y4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwZThhNzdiZWVkNDU2MmU3ZjE0ZmUyM2E3ODZiNTRmNjI5NmUzNDM0NGMyM2JjNDJmMDdiMTUwMThmZjk4ZTkiCisKK2RvX2NvbXBpbGVfYXBwZW5kKCkgeworICAgICR7UFlUSE9OfSBzZXR1cC5weSAtcSBiZGlzdF9lZ2cgLS1kaXN0LWRpciAuLworfQorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vKi5lZ2cgJHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8KK30KKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1pbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXhfMS4xMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDc1NzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTEuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1zaXguaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXkuaW5jCmluZGV4IDA3ZTcwZDcuLmNjOGU4MmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXkuaW5jCkBAIC03LDggKzcsOCBAQAogUFlQSV9QQUNLQUdFID0gIlNRTEFsY2hlbXkiCiBpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gIjkzOGIxZTVjYTIzNzJjM2VjOWE1ODY5OTZhM2I1NjUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2NWNkYzczY2QzNDg0NDhlZjAxNjRmNmM3N2Q0NWE5ZjI3Y2E1NzVkM2M1ZDcxY2NjMzNhZGY2ODRiYzZlZjAiCitTUkNfVVJJW21kNXN1bV0gPSAiYjMyNjY5ZDUzZTkwM2IzNTEyMDY1MDI2NTUyZjNiZmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjExOTFlMjllMzViNmZlMWFlZjcxNzVhMDliMTcwN2ViYjdiZDA4ZDBiMTdjYjBmZWFkYTc2YzQ5ZTVhMmQxZSIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWpzb24gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteV8xLjEuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXlfMS4xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMS45LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMS4xNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VicHJvY2VzczMyXzMuMi43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VicHJvY2VzczMyXzMuMi43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MzcwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdWJwcm9jZXNzMzJfMy4yLjcuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJBIGJhY2twb3J0IG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBmcm9tIFB5dGhvbiAzLjIgZm9yIHVzZSBvbiAyLngiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgYmFja3BvcnQgb2YgdGhlIHN1YnByb2Nlc3Mgc3RhbmRhcmQgbGlicmFyeSBtb2R1bGUgXAorZnJvbSBQeXRob24gMy4yIC0gMy41IGZvciB1c2Ugb24gUHl0aG9uIDIuIEl0IGluY2x1ZGVzIGJ1Z2ZpeGVzIGFuZCBzb21lIG5ldyBcCitmZWF0dXJlcy4gIE9uIFBPU0lYIHN5c3RlbXMgaXQgaXMgZ3VhcmFudGVlZCB0byBiZSByZWxpYWJsZSB3aGVuIHVzZWQgaW4gXAordGhyZWFkZWQgYXBwbGljYXRpb25zLiBJdCBpbmNsdWRlcyB0aW1lb3V0IHN1cHBvcnQgZnJvbSBQeXRob24gMy4zIGFuZCB0aGUgXAorcnVuKCkgQVBJIGZyb20gMy41IGJ1dCBvdGhlcndpc2UgbWF0Y2hlcyAzLjIncyBBUEkuIgorTElDRU5TRSA9ICJQeXRob24tMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDNlNjJiYWE4ZmI5NmIxMWE1OWQzZjJjZDMzNWQ1YzAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MjRjODAxZTQ3OWQzZTkxNjg3OWFhZTNlOWMxNWUxNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTQ1MGE0YTRjNTNiZjE5N2FkNjQwMmM1NjRiOWY3YTUzNTM5Mzg1OTE4ZWY4ZjEyYmRmNDMwYTYxMDM2NTkwIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8uaW5jCmluZGV4IDliMWNmNDEuLjJjNTg2NTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8uaW5jCkBAIC02LDggKzYsOCBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7c3RhcnRsaW5lPTI7ZW5kbGluZT0xNTttZDU9NWFiNzU3MWE3OWFkNjJkMGNhN2FlYTMwOGJhYzc1NjAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiNDgxNmVhMjA5MTE4NjY3ZmZjNTJjZTlmZjA2YWM4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyODk4Zjk5MmY4OThjZDQxZWViOGQ1M2I2ZGY3NTQ5NWYyZjQyM2I2NjcyODkwYWFkYWYxOTZlYTE0NDhlZGNjIgorU1JDX1VSSVttZDVzdW1dID0gImFiNDFmNjc2NWQ1ODA4OWYzMGJhNTFlOGVjMDg0YTdiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmYjhlNDk0Y2Q0NmM2NzRkODZmYWM1ODg1YTNmZjg3YjBlMjgzOTM3YTQ3ZDc0ZWIzYzAyYTQ4YzllODlhZDAiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gJHtQWVRIT05fUE59LW51bWJlcnMgJHtQWVRIT05fUE59LWVtYWlsICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcGtndXRpbCAke1BZVEhPTl9QTn0taHRtbCAke1BZVEhPTl9QTn0tanNvbiAke1BZVEhPTl9QTn0tY2VydGlmaSAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb180LjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG9fNC41LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG9fNC40LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG9fNC41LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRkNTg0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jCkBAIC0wLDAgKzEsMjQzIEBACitERVNDUklQVElPTiA9ICJUd2lzdGVkIGlzIGFuIGV2ZW50LWRyaXZlbiBuZXR3b3JraW5nIGZyYW1ld29yayB3cml0dGVuIGluIFB5dGhvbiBhbmQgbGljZW5zZWQgdW5kZXIgdGhlIExHUEwuIFwKK1R3aXN0ZWQgc3VwcG9ydHMgVENQLCBVRFAsIFNTTC9UTFMsIG11bHRpY2FzdCwgVW5peCBzb2NrZXRzLCBhIGxhcmdlIG51bWJlciBvZiBwcm90b2NvbHMgICAgICAgICAgICAgICAgICAgXAorKGluY2x1ZGluZyBIVFRQLCBOTlRQLCBJTUFQLCBTU0gsIElSQywgRlRQLCBhbmQgb3RoZXJzKSwgYW5kIG11Y2ggbW9yZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnR3aXN0ZWRtYXRyaXguY29tIgorCisjdHdpc3RlZC90b3BmaWxlcy9ORVdTOjY1NTogLSBSZWxpY2Vuc2VkOiBOb3cgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLCByYXRoZXIgdGhhbiBMR1BMLgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YTljMmZiZmNiYTdkNzA1MDRlM2JhNTQ1ZTE4MjBlZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjZkYmVkYjkxOGYwYzcyODhhNGM2NzBmNTkzOTNlY2Y4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkYTFhN2UzNWQ1ZmNhZTM3YmM5Yzc5Nzg5NzBiNWZlYjNiYzgyODIyMTU1Yjg2NTRlYzYzOTI1YzA1YWY3NWMiCisKK1BZUElfUEFDS0FHRSA9ICJUd2lzdGVkIgorUFlQSV9QQUNLQUdFX0VYVCA9ICJ0YXIuYnoyIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIHJlbW92ZSBzb21lIHVzZWxlc3MgZmlsZXMgYmVmb3JlIHBhY2thZ2luZworICAgIGZpbmQgJHtEfSBcKCAtbmFtZSAiKi5iYXQiIC1vIC1uYW1lICIqLmMiIC1vIC1uYW1lICIqLmgiIFwpIC1leGVjIHJtIC1mIHt9IFw7Cit9CisKK1BBQ0tBR0VTICs9ICJcCisgICAgJHtQTn0tenNoIFwKKyAgICAke1BOfS10ZXN0IFwKKyAgICAke1BOfS1wcm90b2NvbHMgXAorICAgICR7UE59LWNvbmNoIFwKKyAgICAke1BOfS1tYWlsIFwKKyAgICAke1BOfS1uYW1lcyBcCisgICAgJHtQTn0tbmV3cyBcCisgICAgJHtQTn0tcnVubmVyIFwKKyAgICAke1BOfS13ZWIgXAorICAgICR7UE59LXdvcmRzIFwKKyAgICAke1BOfS1mbG93IFwKKyAgICAke1BOfS1wYWlyIFwKKyAgICAke1BOfS1jb3JlIFwKKyIKKworUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1zcmMgXAorICAgICR7UE59LWJpbiBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BOfS1iaW4gXAorICAgICR7UE59LWNvcmUgXAorICAgICR7UE59LWNvbmNoIFwKKyAgICAke1BOfS1tYWlsIFwKKyAgICAke1BOfS1uYW1lcyBcCisgICAgJHtQTn0tcnVubmVyIFwKKyAgICAke1BOfS13ZWIgXAorICAgICR7UE59LXdvcmRzIFwKKyIKKworUkRFUEVORFNfJHtQTn0tY29yZSA9ICIke1BZVEhPTl9QTn0tY29yZSAke1BZVEhPTl9QTn0tem9wZWludGVyZmFjZSAke1BZVEhPTl9QTn0taW5jcmVtZW50YWwgJHtQWVRIT05fUE59LWNvbnN0YW50bHkgJHtQWVRIT05fUE59LWh5cGVybGluayAke1BZVEhPTl9QTn0tYXV0b21hdCIKK1JERVBFTkRTXyR7UE59LXRlc3QgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1jb25jaCA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LW1haWwgPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCitSREVQRU5EU18ke1BOfS1uYW1lcyA9ICIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tbmV3cyA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LXJ1bm5lciA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LXdlYiArPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCitSREVQRU5EU18ke1BOfS13b3JkcyArPSAiJHtQTn0tY29yZSIKK1JERVBFTkRTXyR7UE59LWZsb3cgKz0gIiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS1wYWlyICs9ICIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tZGJnID0gIiR7UE59IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorRklMRVNfJHtQTn0gPSAiIgorCitGSUxFU18ke1BOfS10ZXN0ID0gIiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Rlc3QgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qL3Rlc3QgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvaGFwcm94eS90ZXN0LyBcCisiCisKK0ZJTEVTXyR7UE59LXByb3RvY29scyA9ICIgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvKi5weSogXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvZ3BzLyBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9taWNlLyBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9oYXByb3h5IFwKKyIKKworRklMRVNfJHtQTn0tenNoID0gIiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96c2ggXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24venNoY29tcC4qIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3R3aXN0ZWQtY29tcGxldGlvbi56c2ggXAorIgorCitGSUxFU18ke1BOfS1jb25jaCA9ICIgXAorICAgICR7YmluZGlyfS9ja2V5Z2VuIFwKKyAgICAke2JpbmRpcn0vdGtjb25jaCBcCisgICAgJHtiaW5kaXJ9L2NvbmNoIFwKKyAgICAke2JpbmRpcn0vY29uY2hmdHAgXAorICAgICR7YmluZGlyfS9jZnRwIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2NvbmNoLnB5KiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2NvbmNoICBcCisiCisKK0ZJTEVTXyR7UE59LWNvcmUgPSAiIFwKKyR7YmluZGlyfS9tYW5ob2xlIFwKKyR7YmluZGlyfS9ta3RhcCBcCiske2JpbmRpcn0vdHdpc3RkIFwKKyR7YmluZGlyfS90YXAyZGViIFwKKyR7YmluZGlyfS90YXAycnBtIFwKKyR7YmluZGlyfS90YXBjb252ZXJ0IFwKKyR7YmluZGlyfS90a21rdGFwIFwKKyR7YmluZGlyfS90cmlhbCBcCiske2JpbmRpcn0vZWFzeV9pbnN0YWxsKiBcCiske2JpbmRpcn0vcHlodG1saXplciBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uLyouc28gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyoucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19faW5pdF9fLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9ub3Rlc3RwbHVnaW4ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3Rlc3RwbHVnaW4ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfZnRwLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2luZXQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbWFuaG9sZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9wb3J0Zm9yd2FyZC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9zb2Nrcy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF90ZWxuZXQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfdHJpYWwucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL2Ryb3Bpbi5jYWNoZSBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2NyZWQgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2VudGVycHJpc2UgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0IFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9tYW5ob2xlIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9tYW5ob2xlIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wZXJzaXN0ZWQgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29sc1wKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob25cCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RpbWVvdXRxdWV1ZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9maWxlcGF0aC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9keHByb2ZpbGUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcGx1Z2luLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2h0bWxpemVyLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL19faW5pdF9fLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Rpc3BhdGNoLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2hvb2sucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGhyZWFkcG9vbC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9vdHAucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdXNhZ2UucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcm9vdHMucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdmVyc2lvbnMucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdXJscGF0aC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi91dGlsLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBvbmVudHMucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vbG9nZmlsZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9ydW50aW1lLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3JlZmxlY3QucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29udGV4dC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90aHJlYWRhYmxlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3JlYnVpbGQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZmFpbHVyZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9sb2NrZmlsZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9mb3JtbWV0aG9kLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2ZpbmFsaXplLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3dpbjMyLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Rpc3QucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vc2hvcnRjdXQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vemlwc3RyZWFtLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3JlbGVhc2UucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vc3lzbG9nLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2xvZy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24venNoY29tcC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9wcm9jdXRpbHMucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGV4dC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9fdHdpc3RlZF96c2hfc3R1YiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvc2NyaXB0cy8gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3NwcmVhZC8gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3RhcC8gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3RyaWFsLyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvX19pbml0X18ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9fdmVyc2lvbi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2NvcHlyaWdodC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ltLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi8qLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy8qLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdG9wZmlsZXMgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9Ud2lzdGVkKmVnZy1pbmZvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9sb2dnZXIvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9fdGhyZWFkcy8gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Bvc2l0aW9uaW5nLyBcCisiCisKK0ZJTEVTXyR7UE59LW1haWwgPSAiIFwKKyR7YmluZGlyfS9tYWlsbWFpbCBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX21haWwucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9tYWlsIFwKKyIKKworRklMRVNfJHtQTn0tbmFtZXMgPSAiIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbmFtZXMucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9uYW1lcyBcCisiCisKK0ZJTEVTXyR7UE59LW5ld3MgPSAiIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbmV3cy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL25ld3MgXAorIgorCitGSUxFU18ke1BOfS1ydW5uZXIgPSAiIFwKKyR7bGliZGlyfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcnVubmVyL3BvcnRtYXAuc28gXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3J1bm5lclwKKyIKKworRklMRVNfJHtQTn0td2ViID0gIiBcCiske2JpbmRpcn0vd2Vic2V0cm9vdCBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3dlYi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3dlYlwKKyIKKworRklMRVNfJHtQTn0td29yZHMgPSAiIFwKKyR7YmluZGlyfS9pbSBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3dvcmRzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvd29yZHNcCisiCisKK0ZJTEVTXyR7UE59LWZsb3cgPSAiIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfZmxvdy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Zsb3cgXCIKKworRklMRVNfJHtQTn0tcGFpciA9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9wYWlyLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGFpciBcCisiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLy5kZWJ1ZyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8qLy5kZWJ1ZyBcCisiCisKK0ZJTEVTXyR7UE59LWRvYyArPSAiIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL19weWRvY3RvcnRlbXBsYXRlcy8gXAorIgorCitSREVQRU5EU197UE59LXNyYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXNyYyA9ICIgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLnB5IFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8qLnB5IFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8qLyoucHkgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZF8xMy4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzEzLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcxMTA2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzEzLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUd2lzdGVkIGlzIGFuIGV2ZW50LWRyaXZlbiBuZXR3b3JraW5nIGZyYW1ld29yayB3cml0dGVuIGluIFB5dGhvbiBhbmQgbGljZW5zZWQgdW5kZXIgdGhlIExHUEwuIFwKLVR3aXN0ZWQgc3VwcG9ydHMgVENQLCBVRFAsIFNTTC9UTFMsIG11bHRpY2FzdCwgVW5peCBzb2NrZXRzLCBhIGxhcmdlIG51bWJlciBvZiBwcm90b2NvbHMgICAgICAgICAgICAgICAgICAgXAotKGluY2x1ZGluZyBIVFRQLCBOTlRQLCBJTUFQLCBTU0gsIElSQywgRlRQLCBhbmQgb3RoZXJzKSwgYW5kIG11Y2ggbW9yZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnR3aXN0ZWRtYXRyaXguY29tIgotCi0jdHdpc3RlZC90b3BmaWxlcy9ORVdTOjY1NTogLSBSZWxpY2Vuc2VkOiBOb3cgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLCByYXRoZXIgdGhhbiBMR1BMLgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01NjAyZDcyMjhkYWY1OWExNmYwZjFiMjY0MGM0NmJjYSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgzZmU2YzBjOTExY2MxNjAyZGJmZmIwMzZiZTBiYTc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5NTE3NTYzOGMwMTlhYzdjMDYwNGY0YzI5MTcyNGExNmZmMWFjZDA2MmUxODFiMDEyOTNiZjRkY2JjNjJjZjMiCi0KLVBZUElfUEFDS0FHRSA9ICJUd2lzdGVkIgotUFlQSV9QQUNLQUdFX0VYVCA9ICJ0YXIuYnoyIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyByZW1vdmUgc29tZSB1c2VsZXNzIGZpbGVzIGJlZm9yZSBwYWNrYWdpbmcKLSAgICBmaW5kICR7RH0gXCggLW5hbWUgIiouYmF0IiAtbyAtbmFtZSAiKi5jIiAtbyAtbmFtZSAiKi5oIiBcKSAtZXhlYyBybSAtZiB7fSBcOwotfQotCi1QQUNLQUdFUyArPSAiXAotICAgICR7UE59LXpzaCBcCi0gICAgJHtQTn0tdGVzdCBcCi0gICAgJHtQTn0tcHJvdG9jb2xzIFwKLSAgICAke1BOfS1jb25jaCBcCi0gICAgJHtQTn0tbG9yZSBcCi0gICAgJHtQTn0tbWFpbCBcCi0gICAgJHtQTn0tbmFtZXMgXAotICAgICR7UE59LW5ld3MgXAotICAgICR7UE59LXJ1bm5lciBcCi0gICAgJHtQTn0td2ViIFwKLSAgICAke1BOfS13b3JkcyBcCi0gICAgJHtQTn0tZmxvdyBcCi0gICAgJHtQTn0tcGFpciBcCi0gICAgJHtQTn0tY29yZSBcCi0iCi0KLVBBQ0tBR0VTID0rICJcCi0gICAgJHtQTn0tc3JjIFwKLSAgICAke1BOfS1iaW4gXAotIgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQTn0tYmluIFwKLSAgICAke1BOfS1jb25jaCBcCi0gICAgJHtQTn0tbG9yZSBcCi0gICAgJHtQTn0tbWFpbCBcCi0gICAgJHtQTn0tbmFtZXMgXAotICAgICR7UE59LW5ld3MgXAotICAgICR7UE59LXJ1bm5lciBcCi0gICAgJHtQTn0td2ViIFwKLSAgICAke1BOfS13b3JkcyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LWNvcmUgPSAicHl0aG9uLWNvcmUgcHl0aG9uLXpvcGVpbnRlcmZhY2UgcHl0aG9uLWNvbnRleHRsaWIiCi1SREVQRU5EU18ke1BOfS10ZXN0ID0gIiR7UE59IgotUkRFUEVORFNfJHtQTn0tY29uY2ggPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCi1SREVQRU5EU18ke1BOfS1sb3JlID0gIiR7UE59LWNvcmUiCi1SREVQRU5EU18ke1BOfS1tYWlsID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgotUkRFUEVORFNfJHtQTn0tbmFtZXMgPSAiJHtQTn0tY29yZSIKLVJERVBFTkRTXyR7UE59LW5ld3MgPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCi1SREVQRU5EU18ke1BOfS1ydW5uZXIgPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCi1SREVQRU5EU18ke1BOfS13ZWIgKz0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgotUkRFUEVORFNfJHtQTn0td29yZHMgKz0gIiR7UE59LWNvcmUiCi1SREVQRU5EU18ke1BOfS1mbG93ICs9ICIke1BOfS1jb3JlIgotUkRFUEVORFNfJHtQTn0tcGFpciArPSAiJHtQTn0tY29yZSIKLVJERVBFTkRTXyR7UE59LWRiZyA9ICIke1BOfSIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLUZJTEVTXyR7UE59ID0gIiIKLQotRklMRVNfJHtQTn0tdGVzdCA9ICIgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90ZXN0IFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi90ZXN0IFwKLSIKLQotRklMRVNfJHtQTn0tcHJvdG9jb2xzID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy8qLnB5KiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9ncHMvIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzL21pY2UvIFwKLSIKLQotRklMRVNfJHtQTn0tenNoID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96c2ggXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24venNoY29tcC4qIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3R3aXN0ZWQtY29tcGxldGlvbi56c2ggXAotIgotCi1GSUxFU18ke1BOfS1jb25jaCA9ICIgXAotICAgICR7YmluZGlyfS9ja2V5Z2VuIFwKLSAgICAke2JpbmRpcn0vdGtjb25jaCBcCi0gICAgJHtiaW5kaXJ9L2NvbmNoIFwKLSAgICAke2JpbmRpcn0vY29uY2hmdHAgXAotICAgICR7YmluZGlyfS9jZnRwIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2NvbmNoLnB5KiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2NvbmNoICBcCi0iCi0KLUZJTEVTXyR7UE59LWNvcmUgPSAiIFwKLSR7YmluZGlyfS9tYW5ob2xlIFwKLSR7YmluZGlyfS9ta3RhcCBcCi0ke2JpbmRpcn0vdHdpc3RkIFwKLSR7YmluZGlyfS90YXAyZGViIFwKLSR7YmluZGlyfS90YXAycnBtIFwKLSR7YmluZGlyfS90YXBjb252ZXJ0IFwKLSR7YmluZGlyfS90a21rdGFwIFwKLSR7YmluZGlyfS90cmlhbCBcCi0ke2JpbmRpcn0vZWFzeV9pbnN0YWxsKiBcCi0ke2JpbmRpcn0vcHlodG1saXplciBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uLyouc28gXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyoucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19faW5pdF9fLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9ub3Rlc3RwbHVnaW4ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3Rlc3RwbHVnaW4ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfZnRwLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2luZXQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbWFuaG9sZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9wb3J0Zm9yd2FyZC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9zb2Nrcy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF90ZWxuZXQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfdHJpYWwucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL2Ryb3Bpbi5jYWNoZSBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24gXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2NyZWQgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2VudGVycHJpc2UgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0IFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9tYW5ob2xlIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9tYW5ob2xlIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wZXJzaXN0ZWQgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29sc1wKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob25cCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RpbWVvdXRxdWV1ZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9maWxlcGF0aC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9keHByb2ZpbGUucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcGx1Z2luLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2h0bWxpemVyLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL19faW5pdF9fLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Rpc3BhdGNoLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2hvb2sucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGhyZWFkcG9vbC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9vdHAucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdXNhZ2UucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcm9vdHMucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdmVyc2lvbnMucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdXJscGF0aC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi91dGlsLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBvbmVudHMucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vbG9nZmlsZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9ydW50aW1lLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3JlZmxlY3QucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29udGV4dC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90aHJlYWRhYmxlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3JlYnVpbGQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZmFpbHVyZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9sb2NrZmlsZS5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9mb3JtbWV0aG9kLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2ZpbmFsaXplLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3dpbjMyLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Rpc3QucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vc2hvcnRjdXQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vemlwc3RyZWFtLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3JlbGVhc2UucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vc3lzbG9nLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2xvZy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24venNoY29tcC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9wcm9jdXRpbHMucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGV4dC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9fdHdpc3RlZF96c2hfc3R1YiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvc2NyaXB0cy8gXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3NwcmVhZC8gXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3RhcC8gXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3RyaWFsLyBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvX19pbml0X18ucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9fdmVyc2lvbi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2NvcHlyaWdodC5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ltLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi8qLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy8qLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdG9wZmlsZXMgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9Ud2lzdGVkKmVnZy1pbmZvIFwKLSIKLQotRklMRVNfJHtQTn0tbG9yZSA9ICIgXAotJHtiaW5kaXJ9L2Jvb2tpZnkgXAotJHtiaW5kaXJ9L2xvcmUgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9sb3JlLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbG9yZSBcCi0iCi0KLUZJTEVTXyR7UE59LW1haWwgPSAiIFwKLSR7YmluZGlyfS9tYWlsbWFpbCBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX21haWwucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9tYWlsIFwKLSIKLQotRklMRVNfJHtQTn0tbmFtZXMgPSAiIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbmFtZXMucHkqIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9uYW1lcyBcCi0iCi0KLUZJTEVTXyR7UE59LW5ld3MgPSAiIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbmV3cy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL25ld3MgXAotIgotCi1GSUxFU18ke1BOfS1ydW5uZXIgPSAiIFwKLSR7bGliZGlyfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcnVubmVyL3BvcnRtYXAuc28gXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3J1bm5lclwKLSIKLQotRklMRVNfJHtQTn0td2ViID0gIiBcCi0ke2JpbmRpcn0vd2Vic2V0cm9vdCBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3dlYi5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3dlYlwKLSIKLQotRklMRVNfJHtQTn0td29yZHMgPSAiIFwKLSR7YmluZGlyfS9pbSBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3dvcmRzLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvd29yZHNcCi0iCi0KLUZJTEVTXyR7UE59LWZsb3cgPSAiIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfZmxvdy5weSogXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Zsb3cgXCIKLQotRklMRVNfJHtQTn0tcGFpciA9ICIgXAotJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9wYWlyLnB5KiBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGFpciBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiIFwKLSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLy5kZWJ1ZyBcCi0ke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi8qLy5kZWJ1ZyBcCi0iCi0KLVJERVBFTkRTX3tQTn0tc3JjID0gIiR7UE59IgotRklMRVNfJHtQTn0tc3JjID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyoucHkgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLyoucHkgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLyovKi5weSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzE3LjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTcuOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYzhjNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzE3LjkuMC5iYgpAQCAtMCwwICsxLDEwIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tdHdpc3RlZC5pbmMKKworUkRFUEVORFNfJHtQTn0tY29yZSArPSAiJHtQWVRIT05fUE59LWNvbnRleHRsaWIiCisKKyMgTm90IHlldCBwb3J0ZWQgdG8gcHkzIHlldCBhdmFpbGFibGUgaW4gcHkyCisjIFNlZSBzcmMvdHdpc3RlZC9weXRob24vX3NldHVwLnB5IC0tIG5vdFBvcnRlZE1vZHVsZXMKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQTn0tbmV3cyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZy5pbmMKaW5kZXggNDlkYTRmZS4uNDZiZTQ3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmcuaW5jCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJQU0YiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NGZjMmIzMGI2N2QwYTg0MjNjMjUwZTAzODZlZDcyZiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjM5OTZhNzQ3MTU4ZTU1OTFhYmY2ODljMWM1ZjhmOWRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhMmRhYWM3ZTM5M2U4ZWU4NmU5MTQwY2QwY2YwMTcyZmY2YmI1MGViZGYwYjA2MjgxNzcwZjk4ZjMxYmZmMjEiCitTUkNfVVJJW21kNXN1bV0gPSAiMTQzYWYwYmYzYWZkMTg4NzYyMjc3MWYyZjFmZmU4ZTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDUxNGJkODRiMjg0ZGQzZTg0NGYwMzA1YWMwNzUxMWYwOTdlMzI1MTcxZjZjYzRhMjA4NzhkMTFhZDc3MTg0OSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nXzMuNS4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmdfMy42LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZ18zLjUuMy4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmdfMy42LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjU0ZDVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb24uaW5jCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgID0gIlVsdHJhIGZhc3QgSlNPTiBlbmNvZGVyIGFuZCBkZWNvZGVyIGZvciBQeXRob24iCitERVNDUklQVElPTiA9ICJVbHRyYUpTT04gaXMgYW4gdWx0cmEgZmFzdCBKU09OIGVuY29kZXIgYW5kIGRlY29kZXIgd3JpdHRlbiBpbiBwdXJlIEMgd2l0aCBiaW5kaW5ncyBmb3IgUHl0aG9uIDIuNSsgYW5kIDMuIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO3N0YXJ0bGluZT04O2VuZGxpbmU9OTttZDU9NGYzNjliM2MzYzI5MGI0YWVkZTg3OTZhNDA2NWU1YWIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MmY3N2IwY2NlNjg2ZGZhNGRhMmU2ODQ4MGIxZGQyNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjYwNzNlNTUwNmU5MWQyMDRhYjBjNjE0YTE0OGQ1YWE5MzhiZGJmMTA0NzUxYmU2NmY4YWQ3YTIyMmY1Zjg2IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11anNvbl8xLjM1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb25fMS4zNS5iYgppbmRleCAyMzhkYzkyLi5iM2M2YWU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11anNvbl8xLjM1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uXzEuMzUuYmIKQEAgLTEsMTUgKzEsMiBAQAotU1VNTUFSWSAgPSAiVWx0cmEgZmFzdCBKU09OIGVuY29kZXIgYW5kIGRlY29kZXIgZm9yIFB5dGhvbiIKLURFU0NSSVBUSU9OID0gIlVsdHJhSlNPTiBpcyBhbiB1bHRyYSBmYXN0IEpTT04gZW5jb2RlciBhbmQgZGVjb2RlciB3cml0dGVuIGluIHB1cmUgQyB3aXRoIGJpbmRpbmdzIGZvciBQeXRob24gMi41KyBhbmQgMy4iCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87c3RhcnRsaW5lPTg7ZW5kbGluZT05O21kNT00ZjM2OWIzYzNjMjkwYjRhZWRlODc5NmE0MDY1ZTVhYiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQyZjc3YjBjY2U2ODZkZmE0ZGEyZTY4NDgwYjFkZDI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2NjA3M2U1NTA2ZTkxZDIwNGFiMGM2MTRhMTQ4ZDVhYTkzOGJkYmYxMDQ3NTFiZTY2ZjhhZDdhMjIyZjVmODYiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgIgoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi11anNvbi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVuaWRpZmYuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQwMjU1MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVuaWRpZmYuaW5jCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJVbmlmaWVkIGRpZmYgcGFyc2luZy9tZXRhZGF0YSBleHRyYWN0aW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9tYXRpYXNiL3B5dGhvbi11bmlkaWZmIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00YzQzNGIwOGVmNDJmZWEyMzViYjAxOWI1ZTVhOTdiMyIKKworU1JDX1VSSVttZDVzdW1dID0gImM4MDk5ZWRmODlkMmUzYmFjMTYxMjM3NjY2MjVhMzhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3YmFmNzE4NDZhNjhjNTMwNWE3ZDYwMDVkZmI1ZWNhODc5OGYxMzg2MTE3NjM1NWEyODVjYmRhMzIwNjgyNGQiCisKK2luaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVuaWRpZmZfMC41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNDBjY2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVW5pZmllZCBkaWZmIHBhcnNpbmcvbWV0YWRhdGEgZXh0cmFjdGlvbiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vbWF0aWFzYi9weXRob24tdW5pZGlmZiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGM0MzRiMDhlZjQyZmVhMjM1YmIwMTliNWU1YTk3YjMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMWE2MTcyOWU2NGVlNDA5MTM1YTJjY2VjODBjNzEwNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OWI0YmUzZTU0NzlkZmM2ZDc3NzQ3ZDIzZWM5ODIwMDU1OWNhNmE4NDJmYWQxZjkyYzJhN2ViNTZiOTkxOTViIgotCi1pbmhlcml0ICBweXBpIHNldHVwdG9vbHMKLQotVSA9ICIke0R9JHtMSUJESVJ9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpewotICAgIG12ICR7VX0vdGVzdHMgJHtVfS91bmlkaWZmLwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVuaWRpZmZfMC41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRiM2QyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVuaWRpZmZfMC41LjQuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi11bmlkaWZmLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjMuaW5jCmluZGV4IDQ4NWY1N2YuLmNmNzk5MjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjMuaW5jCkBAIC0xLDEwICsxLDEwIEBACiBTVU1NQVJZID0gIlB5dGhvbiBIVFRQIGxpYnJhcnkgd2l0aCB0aHJlYWQtc2FmZSBjb25uZWN0aW9uIHBvb2xpbmcsIGZpbGUgcG9zdCBzdXBwb3J0LCBzYW5pdHkgZnJpZW5kbHksIGFuZCBtb3JlIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NoYXpvdy91cmxsaWIzIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MDZkZmNiYjg4ZmIwNzg3YTIwMzllMjZhZjExMjc2ZjUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZWExMTQ4NTFhZDlhOGMzMTFhYWM4NzI4YTY4MWEwNjciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJlNjJkNDIwMDY4MDczMDhmZWE5NTU2YzE3YWY4ZTI1MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYzQ5YjY2YWRjYjQ1ZTE5YzY5NDRjZmYzNWVlZGI2MGVlMjIyOGYwYWZiYTUxZjRkYTI5YzQ3ZTdhMzk4ZjE1IgorU1JDX1VSSVttZDVzdW1dID0gIjBkYTdiZWQzZmU5NGJmN2RjNTlhZTM3ODg1Y2M3MmY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjNDRkYThlMTE0NTYzNzMzNDMxN2ZlZWJkNzI4YmQ4NjlhMzUyODViOTNjYmI0Y2NhMjU3N2RhN2U2MmRiNGYiCiAKIFJERVBFTkRTXyR7UE59ICs9ICJcCiAgICAgJHtQWVRIT05fUE59LWNlcnRpZmkgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliM18xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzXzEuMjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjNfMS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzXzEuMjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjQuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM5NTE5My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12b2JqZWN0XzAuOS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBwYWNrYWdlIGZvciBwYXJzaW5nIGFuZCBnZW5lcmF0aW5nIHZDYXJkIGFuZCB2Q2FsZW5kYXIgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vdm9iamVjdC5za3lob3VzZWNvbnN1bHRpbmcuY29tLyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS0yLjAudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjczNDMyYTNlNmU5YTQ3ODhmNzNhOWFjYzRkN2IxZmE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZhZWE3ZDRmYjNlMmJjOGVmNjM2N2U3ZjliNGFkMDg0MWFhMTk4MGZkNWRkOTZkMDVjN2E5MGUzOTg4MDgxMWMiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRhdGV1dGlsIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdm9iamVjdF8wLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJmMzQzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjUuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJQeXRob24gcGFja2FnZSBmb3IgcGFyc2luZyBhbmQgZ2VuZXJhdGluZyB2Q2FyZCBhbmQgdkNhbGVuZGFyIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3ZvYmplY3Quc2t5aG91c2Vjb25zdWx0aW5nLmNvbS8iCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtMi4wLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYTYyOWQ2YWU5NWRiNWVkZmQ1YjI0MDJlYjEwNzNjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjU2Y2FlMTk2MzAzZDg3NTY4MmI5NjQ4YjRiYjQzZmZjNzY5ZDJmMGY4MDA5NThlMGE1MDZhZjg2N2IxMjQzIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5ncy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3MuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNTdjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3MuaW5jCkBAIC0wLDAgKzEsMTAgQEAKK1NVTU1BUlkgPSAiQ2hhcmFjdGVyIGVuY29kaW5nIGFsaWFzZXMgZm9yIGxlZ2FjeSB3ZWIgY29udGVudCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87c3RhcnRsaW5lPTg7ZW5kbGluZT05O21kNT1hZjVjODFiZmU5ODg1NWE1NmQzNmI2YmE1ZGUyOTA2ZiIKKworU1JDX1VSSVttZDVzdW1dID0gIjMyZjZlMjYxZDUyZTU3YmY3ZTFjNGQ0MTU0NmQxNWI4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzNmExYzI0NWYyZDMwNDk2NWViNGUwYTgyODQ4Mzc5MjQxZGMwNGI4NjVhZmNjNGFhYjE2NzQ4NTg3ZTE5MjMiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvZGVjcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5nc18wLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5nc18wLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGUyZWQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzXzAuNS4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi13ZWJlbmNvZGluZ3MuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3NfMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzXzAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJlNjI4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3NfMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJDaGFyYWN0ZXIgZW5jb2RpbmcgYWxpYXNlcyBmb3IgbGVnYWN5IHdlYiBjb250ZW50IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztzdGFydGxpbmU9ODtlbmRsaW5lPTk7bWQ1PTJmYzZjOTlhMTllNmRiZGU5ZjdhMjIzOTE0M2M5ZDEzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODc4NzE0ZDQ1MjQxZjc5NzBkZmZkODk5MWQ2MWZmZjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTVjNTVlZTkzYjI0ZTc0MGZlOTUxYzM3YjVjMjI4ZGNjYzFmMTcxNDUwZTE4ODU1NWE3NzUyNjFjY2UxYjkwNCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb2RlY3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Zy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Zy5pbmMKaW5kZXggZTU1ZjU2ZC4uYjI5NDlhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWcuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnLmluYwpAQCAtMTAsOCArMTAsOCBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNjhmNTM2MWEyYjJjYTlmZGYyNmIzOGFhZWNiNmZhYSIKIAotU1JDX1VSSVttZDVzdW1dID0gImNiNDAxMDQ3OGRkMzM5MDVmOTU5MjBlNDg4MDIwNGEyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1NWQ3Nzk4YWMyNjMyNjZkYmQzOGQ0ODQxZjc1MzRkZDM1Y2E5YzNkYTRhOGRmMzAzZjg0ODhmMzhmM2JjYzAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTM4NWIyYzVhNzE5M2NmZjI0YzY4OWIzMWUxMTI0ZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTAzYTdiODdiNzQ2MzUyNDQ1NDhiMzBkMzBkYjRjODk0N2ZlNjRjNTE5OGY1ODg5OWRkY2QzYTEzYzIzYmIyNiIKIAogUFlQSV9QQUNLQUdFID0gIldlcmt6ZXVnIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjExLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWdfMC4xMi4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjExLjE1LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjEyLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODU1NDhmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHQuaW5jCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiQSBQeXRob24gbW9kdWxlIGZvciBkZWNvcmF0b3JzLCB3cmFwcGVycyBhbmQgbW9ua2V5IHBhdGNoaW5nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93cmFwdC5yZWFkdGhlZG9jcy5vcmcvIgorTElDRU5TRSA9ICJCU0QiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTYxYzI3OTMwMDEyZTg2YjNkYzdlMzZmOTJlODNjNGQ4IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTEzNDZmMzE3ODJkNTA0MDFmODFjMjM0NWIwMzcwNzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDRkNTYwZDQ3OWYyYzIxZTFiNTQ0M2JiZDE1ZmU3ZWM0YjM3ZmU3ZTUzZDMzNWQzYjliMGE3YjEyMjZmZTNjNiIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHRfMS4xMC4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0XzEuMTAuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0MjQ3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0XzEuMTAuMTEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXdyYXB0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHRfMS4xMC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHRfMS4xMC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGFhMWJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0XzEuMTAuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gbW9kdWxlIGZvciBkZWNvcmF0b3JzLCB3cmFwcGVycyBhbmQgbW9ua2V5IHBhdGNoaW5nLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93cmFwdC5yZWFkdGhlZG9jcy5vcmcvIgotTElDRU5TRSA9ICJCU0QiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgyNzA0NzI1NTkyOTkxZWE4OGIwNDJkMTUwYTY2MzAzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2MyYTdlNjI2MmFjYzM5NmVmNjUyOGIzZDY2YmQwNDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGVhMTdlODE0ZTM5ODgzYzZjZjFiYjliMDgzNWQzMTZiMmY2OWYwZjA4ODJmZmU3ZGFkMWVkZTY2YmE4MmM3MyIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmQuaW5jCmluZGV4IGE4ZmU4YzcuLmQxYWIwNWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmQuaW5jCkBAIC00LDkgKzQsOSBAQAogU3Ryb25nIHN1cHBvcnQgZm9yIEV4Y2VsIGRhdGVzLiBVbmljb2RlLWF3YXJlLiIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLWV4Y2VsLm9yZy8iCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hscmQvbGljZW5jZXMucHk7bWQ1PWI1OWRhY2U1Y2MxZGI2MDRjNDIxOTEwMGIwNDIyODExIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTA4YmQ4MTQ5MzYyMzdiNmUxMzU1ZTYzNzBiMjRiMmMxIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiOWE5MWI2ODhjZDQ5NDU0NzdhYzI4MTg3YTU0ZjlhM2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZmODdkZDVkNTA0MjUwODRmNzIxOWNiNmY4NmJiM2ViNWFhMjkwNjNmNTNkNTBiZjI3MGVkMDA3ZTk0MTA2OSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiODVjOTkxNmFjNzU1Y2FkNDg5YTkwMDVmNWEwZDM5MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YTIxODg1NTEzZTZkOTE1ZmUzM2E4ZWU1ZmRmYTY3NTQzM2I2MTQwNWJhMTNlMmE2OWU2MmVlMzY4MjhkN2UyIgogCiBSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvbXByZXNzaW9uICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcHByaW50ICR7UFlUSE9OX1BOfS1zaGVsbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmRfMS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkXzEuMS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkXzEuMC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkXzEuMS4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMzhhZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlLmluYwpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkludGVyZmFjZSBkZWZpbml0aW9ucyBmb3IgWm9wZSBwcm9kdWN0cyIKK0xJQ0VOU0UgPSAiWlBMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTU0ZmQ3NzYyNzRjMWI3NDIzZWMxMjg5NzRiZDlkNDYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NzAwYTRmNTI3YzEyMDNiMzRiMTBjMmI0ZTdhNjkxMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNmQyNmQ1ZGZiZmQ2MGM2NTE1MjkzOGZjYjgyZjk0OWU4ZGFkYTM3YzA0MWY3MjkxNmZlZjY2MjFiYTVjNWNlIgorCitQWVBJX1BBQ0tBR0UgPSAiem9wZS5pbnRlcmZhY2UiCisKK1BBQ0tBR0VTID0uICIke1BOfS10ZXN0ICIKKworUlBST1ZJREVTXyR7UE59ICs9ICJ6b3BlLWludGVyZmFjZXMiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5lZ2cvKi8qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvKi5jIgorRklMRVNfJHtQTn0tZG9jICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS8qLnR4dCIKK0ZJTEVTXyR7UE59LXRlc3QgKz0gIiBcCisgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlL3Rlc3RzIFwKKyAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvY29tbW9uL3Rlc3RzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2VfNC4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlXzQuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTk2Mzk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2VfNC4zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIkludGVyZmFjZSBkZWZpbml0aW9ucyBmb3IgWm9wZSBwcm9kdWN0cyIKLUxJQ0VOU0UgPSAiWlBMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTU0ZmQ3NzYyNzRjMWI3NDIzZWMxMjg5NzRiZDlkNDYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiYTNmMzJlYWNhZWE2NjA5NGI3ZTJhZTI3ODhjZWM4OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzgwZWY2OGNhOGMzZmUxYWJiMzBjMDU4YTU5MDE1MTI5ZDZlMDRhNmIwMmMyZTU2YjljN2RlNjA3OGRmYTg4IgotCi1QWVBJX1BBQ0tBR0UgPSAiem9wZS5pbnRlcmZhY2UiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SUFJPVklERVNfJHtQTn0gKz0gInpvcGUtaW50ZXJmYWNlcyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5lZ2cvKi8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvKi5jIgotRklMRVNfJHtQTn0tZG9jICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS8qLnR4dCIKLUZJTEVTXyR7UE59LXRlc3RzID0gIiBcCi0gICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlL3Rlc3RzIFwKLSAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvY29tbW9uL3Rlc3RzIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2VfNC40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlXzQuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZGZkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlXzQuNC4zLmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCisKK1JERVBFTkRTXyR7UE59LXRlc3QgKz0gInB5dGhvbi11bml0dGVzdCBweXRob24tZG9jdGVzdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hcHBkaXJzXzEuNC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnNfMS40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI0ZTFkOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hcHBkaXJzXzEuNC4zLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tYXBwZGlycy5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3Ryb2lkXzEuNS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMS41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUzMmMyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3Ryb2lkXzEuNS4zLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tYXN0cm9pZC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQzNjQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMi4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjMuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjUuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhYmVsXzIuMy40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi41LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iY3J5cHRfMy4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmNyeXB0XzMuMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZWM5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmNyeXB0XzMuMS4zLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tYmNyeXB0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJlYXV0aWZ1bHNvdXA0XzQuNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJlYXV0aWZ1bHNvdXA0XzQuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OGRmMTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVhdXRpZnVsc291cDRfNC42LjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1iZWF1dGlmdWxzb3VwNC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iaXRhcnJheV8wLjguMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iaXRhcnJheV8wLjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWU0NDRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzAuOC4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tYml0YXJyYXkuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhbl8yLjAuMGIxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzEuNS4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzIuMC4wYjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYXNzYW5kcmEtZHJpdmVyXzMuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xMS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2Fzc2FuZHJhLWRyaXZlcl8zLjguMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xMS4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2VydGlmaV8yMDE3LjEuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2VydGlmaV8yMDE3LjcuMjcuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNlcnRpZmlfMjAxNy4xLjIzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2VydGlmaV8yMDE3LjcuMjcuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNmZmlfMS45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjExLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZmZpXzEuOS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjExLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jaGFyZGV0XzMuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNoYXJkZXRfMy4wLjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jaGFyZGV0XzMuMC4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2hhcmRldF8zLjAuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvdmVyYWdlXzQuNC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvdmVyYWdlXzQuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYTVjNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY292ZXJhZ2VfNC40LjEuYmIKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJDb2RlIGNvdmVyYWdlIG1lYXN1cmVtZW50IGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2NvdmVyYWdlLnJlYWR0aGVkb2NzLmlvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJlZTQxMTEyYTQ0ZmU3MDE0ZGNlMzNlMjY0NjhiYTkzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGM0ZDk5N2NiMzJiZTQ3MDNmMWZkZTU0ZTZjZDFiMWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2E5YzQ0NDAwZWUwZjNiNDU0NjA2NmUwNzEwZTEyNTBmZDc1ODMxYWRjMDJhYjk5ZGRhMTc2YWQ4NzI2ZjQyNCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHktdmVjdG9yc18xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjAuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzEuNy4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi4wLjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5XzIuMC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5XzEuNy4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5XzIuMC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjUuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yNy4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjUuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5dGhvbl8wLjI3LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYXRldXRpbF8yLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYXRldXRpbF8yLjYuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRhdGV1dGlsXzIuNi4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGF0ZXV0aWxfMi42LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kZWNvcmF0b3JfNC4wLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRlY29yYXRvcl80LjEuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRlY29yYXRvcl80LjAuMTEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kZWNvcmF0b3JfNC4xLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kamFuZ28tc291dGhfMS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvLXNvdXRoXzEuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNTE5MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvLXNvdXRoXzEuMC4yLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tZGphbmdvLXNvdXRoLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nb18xLjExLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvXzEuMTEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWUzOGMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nb18xLjExLjUuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1kamFuZ28uaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stcHltb25nb18wLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1weW1vbmdvXzAuNS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stcHltb25nb18wLjQuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLXB5bW9uZ29fMC41LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFza18wLjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrXzAuMTIuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrXzAuMTIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFza18wLjEyLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nZXZlbnRfMS4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2V2ZW50XzEuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMTcyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2V2ZW50XzEuMi4yLmJiCkBAIC0wLDAgKzEsMyBAQAorcmVxdWlyZSBweXRob24tZ2V2ZW50LmluYworaW5oZXJpdCBzZXR1cHRvb2xzMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JlZW5sZXRfMC40LjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdyZWVubGV0XzAuNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWVkZjdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdyZWVubGV0XzAuNC4xMi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgZGlzdHV0aWxzMworcmVxdWlyZSBweXRob24tZ3JlZW5sZXQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHRtbDVsaWJfMC45OTk5OTk5OTkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHRtbDVsaWJfMC45OTk5OTk5OTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJkOGI0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1odG1sNWxpYl8wLjk5OTk5OTk5OS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWh0bWw1bGliLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlkbmFfMi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlkbmFfMi42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaWRuYV8yLjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pZG5hXzIuNi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzbzg2MDFfMC4xLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzbzg2MDFfMC4xLjEyLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvODYwMV8wLjEuMTEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pc284NjAxXzAuMS4xMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzb3J0XzQuMi4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pc29ydF80LjIuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU1YjNlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pc29ydF80LjIuMTUuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1pc29ydC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTJfMi45LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyXzIuOS42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyXzIuOS41LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyXzIuOS42LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnNjaGVtYV8yLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qc29uc2NoZW1hXzIuNi4wLmJiCmluZGV4IDUzYjg4MzkuLjVhYWVlNjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qc29uc2NoZW1hXzIuNi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qc29uc2NoZW1hXzIuNi4wLmJiCkBAIC0xLDggKzEsNiBAQAogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiByZXF1aXJlIHB5dGhvbi1qc29uc2NoZW1hLmluYwogCi1ERVBFTkRTICs9ICJweXRob24zLXZjdmVyc2lvbmVyIgotCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tbWlzYyBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGFuZ3RhYmxlXzAuMC4zNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sYW5ndGFibGVfMC4wLjM3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MmNhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGFuZ3RhYmxlXzAuMC4zNy5iYgpAQCAtMCwwICsxLDIyIEBACitERVNDUklQVElPTiA9ICJsYW5ndGFibGUgaXMgdXNlZCB0byBndWVzcyByZWFzb25hYmxlIGRlZmF1bHRzIGZvciBsb2NhbGUsXAora2V5Ym9hcmQsIHRlcnJpdG9yeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9taWtlLWZhYmlhbi9sYW5ndGFibGUvIgorTElDRU5TRSA9ICJHUEx2MysiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7U30iCisKK1NSQ1JFViA9ICIzZjAwMWVlZjAyN2JhNjllZjJmZGIzNWM2NzBiN2RhMjZiNzliNWUyIgorUFYgPSAiMC4wLjM3K2dpdCR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21pa2UtZmFiaWFuL2xhbmd0YWJsZS5naXQ7YnJhbmNoPW1hc3RlciBcCisiCisKK2luaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZQorCitESVNUVVRJTFNfSU5TVEFMTF9BUkdTID0gIi0tcHJlZml4PSR7RH0vJHtwcmVmaXh9IFwKKyAgICAtLWluc3RhbGwtZGF0YT0ke0R9LyR7ZGF0YWRpcn0vbGFuZ3RhYmxlIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxhenktb2JqZWN0LXByb3h5XzEuMy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxhenktb2JqZWN0LXByb3h5XzEuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MGUxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGF6eS1vYmplY3QtcHJveHlfMS4zLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1sYXp5LW9iamVjdC1wcm94eS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sLzAwMDEtbHhtbC5ldHJlZS1BZGQtZW1wdHktdmFyaWFkaWMtYXJndW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbC8wMDAxLWx4bWwuZXRyZWUtQWRkLWVtcHR5LXZhcmlhZGljLWFyZ3VtZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjAxMmRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sLzAwMDEtbHhtbC5ldHJlZS1BZGQtZW1wdHktdmFyaWFkaWMtYXJndW1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDM2ZTY0Y2YyZjA2NzZlZTQyMmMxZmQ0MTQ1Njk2N2YzMDE1YjJmYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNzoxMDo0NSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBseG1sLmV0cmVlOiBBZGQgZW1wdHkgdmFyaWFkaWMgYXJndW1lbnQKLQotZm9ybWF0IGNoZWNrZXIgc2F5cyB0aGF0IGFyZ3VtZW50IDQgaXMgYSBwcmludGYgZm9ybWF0dGVkIGFyZ3VtZW50Ci1idXQgdGhlcmUgaXMgbm8gbW9yZSBhcmd1bWVudHMgdG8gZm9sbG93Ci0KLUZpeGVzIGxpYnhzbHQgZm9ybWF0IHdhcm5pbmdzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvbHhtbC9seG1sLmV0cmVlLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2x4bWwvbHhtbC5ldHJlZS5jIGIvc3JjL2x4bWwvbHhtbC5ldHJlZS5jCi1pbmRleCBkNDgyMDkxLi5mYWFiMDZjIDEwMDY0NAotLS0tIGEvc3JjL2x4bWwvbHhtbC5ldHJlZS5jCi0rKysgYi9zcmMvbHhtbC9seG1sLmV0cmVlLmMKLUBAIC0xODYwODYsNyArMTg2MDg2LDcgQEAgc3RhdGljIHZvaWQgX19weXhfZl80bHhtbF81ZXRyZWVfX2NhbGxFeHRlbnNpb25FbGVtZW50KHhzbHRUcmFuc2Zvcm1Db250ZXh0ICpfX3AKLSAgKiAgICAgICAgIGV4Y2VwdDoKLSAgKi8KLSAgICAgICAgICAgICBfX3B5eF90XzI2ID0gX19QeXhfUHlPYmplY3RfQXNTdHJpbmcoX19weXhfdl9tZXNzYWdlKTsgaWYgKHVubGlrZWx5KCghX19weXhfdF8yNikgJiYgUHlFcnJfT2NjdXJyZWQoKSkpIF9fUFlYX0VSUigxOSwgMjI4LCBfX3B5eF9MMThfZXhjZXB0X2Vycm9yKQotLSAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihfX3B5eF92X2NfY3R4dCwgTlVMTCwgX19weXhfdl9jX2luc3Rfbm9kZSwgX19weXhfdF8yNik7Ci0rICAgICAgICAgICAgeHNsdFRyYW5zZm9ybUVycm9yKF9fcHl4X3ZfY19jdHh0LCBOVUxMLCBfX3B5eF92X2NfaW5zdF9ub2RlLCBfX3B5eF90XzI2LCAiIik7Ci0gCi0gICAgICAgICAgICAgLyogInNyYy9seG1sL3hzbHRleHQucHhpIjoyMjkKLSAgKiAgICAgICAgICAgICAgICAgY19pbnN0X25vZGUubmFtZSwgX2NzdHIoZSkpCi1AQCAtMTg2MTM2LDcgKzE4NjEzNiw3IEBAIHN0YXRpYyB2b2lkIF9fcHl4X2ZfNGx4bWxfNWV0cmVlX19jYWxsRXh0ZW5zaW9uRWxlbWVudCh4c2x0VHJhbnNmb3JtQ29udGV4dCAqX19wCi0gICogICAgIGV4Y2VwdDoKLSAgKi8KLSAgICAgICAgICAgICBfX3B5eF90XzI2ID0gX19QeXhfUHlPYmplY3RfQXNTdHJpbmcoX19weXhfdl9tZXNzYWdlKTsgaWYgKHVubGlrZWx5KCghX19weXhfdF8yNikgJiYgUHlFcnJfT2NjdXJyZWQoKSkpIF9fUFlYX0VSUigxOSwgMjM0LCBfX3B5eF9MMThfZXhjZXB0X2Vycm9yKQotLSAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihfX3B5eF92X2NfY3R4dCwgTlVMTCwgX19weXhfdl9jX2luc3Rfbm9kZSwgX19weXhfdF8yNik7Ci0rICAgICAgICAgICAgeHNsdFRyYW5zZm9ybUVycm9yKF9fcHl4X3ZfY19jdHh0LCBOVUxMLCBfX3B5eF92X2NfaW5zdF9ub2RlLCBfX3B5eF90XzI2LCAiIik7Ci0gCi0gICAgICAgICAgICAgLyogInNyYy9seG1sL3hzbHRleHQucHhpIjoyMzUKLSAgKiAgICAgICAgICAgICAgICAgIkVycm9yIGV4ZWN1dGluZyBleHRlbnNpb24gZWxlbWVudCAnJXMnIiwgY19pbnN0X25vZGUubmFtZSkKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzMuNy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWxfMy43LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMTNkMmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWxfMy43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWx4bWwuaW5jCi0KLVNSQ19VUkkgPSAiJHtQWVBJX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbHhtbC5ldHJlZS1BZGQtZW1wdHktdmFyaWFkaWMtYXJndW1lbnQucGF0Y2ggXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNGJjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjEuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWx4bWwuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFya3Vwc2FmZV8wLjIzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hcmt1cHNhZmVfMS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFya3Vwc2FmZV8wLjIzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFya3Vwc2FmZV8xLjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrXzAuNC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2tfMC40LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk2ZDdkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrXzAuNC44LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tbXNncGFjay5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3QvMDAwMS1BbGxvdy1jYWxsaW5nLW1ha2UtY2xlYW4td2l0aG91dC1zcGhpbngtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0LzAwMDEtQWxsb3ctY2FsbGluZy1tYWtlLWNsZWFuLXdpdGhvdXQtc3BoaW54LWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWQ3ZWY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3QvMDAwMS1BbGxvdy1jYWxsaW5nLW1ha2UtY2xlYW4td2l0aG91dC1zcGhpbngtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDM5ZTEzYjRlM2Y3YTFkMWRkNzQ4ZTgwY2VlMjQxZDUxMTg2NWQ0ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAbmV4dHJlbS5jaD4KLURhdGU6IE1vbiwgMTYgSmFuIDIwMTcgMjE6Mjk6MTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgY2FsbGluZyBtYWtlIGNsZWFuIHdpdGhvdXQgc3BoaW54LWJ1aWxkCi0KLUN1cnJlbnRseSBtYWtlIGNsZWFuIGZhaWxzIHdpdGhvdXQgc3BoaW54LWJ1aWxkIGluc3RhbGxlZAotSG93ZXZlciBzcGhpbngtYnVpbGQgaXMgbm90IHJlYWxseSBuZWNlc3NhcnkgdG8gZG8gYSBjbGVhbi4KLVRoaXMgdHJpY2sgbWFrZXMgdGhlIGRvY3MvTWFrZWZpbGUgdXNlIHRoZSBmYWxzZSBiaW5hcnkgaW5zdGVhZCBvZgotc3BoaW54LWJ1aWxkIGZvciB0aGUgY2hlY2sgd2hlbiBhIGNsZWFuIGlzIGRvbmUuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIGh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9tdWx0aWRpY3QvcHVsbC80MQotCi0tLS0KLSBNYWtlZmlsZSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA4ZjUyNWYzLi42ZDYwMWU1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNTEsOCArNTEsOCBAQCBjbGVhbjoKLSAJcm0gLXJmIGNvdmVyYWdlCi0gCXJtIC1yZiBidWlsZAotIAlybSAtcmYgY292ZXIKLS0JbWFrZSAtQyBkb2NzIGNsZWFuCi0tCXB5dGhvbiBzZXR1cC5weSBjbGVhbgotKwltYWtlIC1DIGRvY3MgY2xlYW4gU1BISU5YQlVJTEQ9ZmFsc2UKLSsJcHl0aG9uMyBzZXR1cC5weSBjbGVhbgotIAlybSAtZiBtdWx0aWRpY3QvX211bHRpZGljdC5odG1sCi0gCXJtIC1mIG11bHRpZGljdC9fbXVsdGlkaWN0LmMKLSAJcm0gLWYgbXVsdGlkaWN0L19tdWx0aWRpY3QuKi5zbwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzIuMS40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdF8yLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI4OTVkMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzIuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJNdWx0aWRpY3RzIGFyZSB1c2VmdWwgZm9yIHdvcmtpbmcgd2l0aCBIVFRQIGhlYWRlcnMsIFVSTCBxdWVyeSBhcmdzIGV0Yy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvbXVsdGlkaWN0LyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzZmM1MGE4OGQwYTM2NDMxM2RmNGIyMWVmMjBjMjllIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQWxsb3ctY2FsbGluZy1tYWtlLWNsZWFuLXdpdGhvdXQtc3BoaW54LWJ1aWxkLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDUxZDkyZWRlYzg3ZmQ5OGU0M2VhODNmM2NlNjA3MmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTc3YWE4YzlmNjg4NDZjM2I1ZGI0M2ZmOGVkMmE3YTg4NGRiZTg0NWQwMWY1NTExM2EzZmJhNzg1MThjNGNkNyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfMy4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzMuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NTU2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzMuMi4wLmJiCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJNdWx0aWRpY3RzIGFyZSB1c2VmdWwgZm9yIHdvcmtpbmcgd2l0aCBIVFRQIGhlYWRlcnMsIFVSTCBxdWVyeSBhcmdzIGV0Yy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvbXVsdGlkaWN0LyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU3NGM5OGFiZTBkZThmNzk4Y2E2MDkxMzdmOWNlZjRhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImEwMWRhMzFjYTE4NTU1NTdhMWIyZTA1M2M5MzNhZjJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyN2E3YTk1MzE3MzcxYzE1ZWNkYTcyMDZmNmU4YzE0NGYxMGEzMzdiYjJjM2U2MWI1MTc2ZGVhZmJiODhjYjIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmRnLWh0dHBzY2xpZW50XzAuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5kZy1odHRwc2NsaWVudF8wLjQuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5kZy1odHRwc2NsaWVudF8wLjQuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5kZy1odHRwc2NsaWVudF8wLjQuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5ldGFkZHJfMC43LjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5ldGFkZHJfMC43LjE5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNDE2YTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmV0YWRkcl8wLjcuMTkuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1uZXRhZGRyLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW50cGxpYl8wLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1udHBsaWJfMC4zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU0NDBiYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1udHBsaWJfMC4zLjMuYmIKQEAgLTAsMCArMSwxMiBAQAorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgb2ZmZXJzIGEgc2ltcGxlIGludGVyZmFjZSB0byBxdWVyeSBOVFAgc2VydmVycyBmcm9tIFB5dGhvbi4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbnRwbGliLnB5O2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWFmYTA3MzM4YTk1OTUyNTdlOTRjMjA1YzNlNzIyMjRkIgorCitTUkNOQU1FID0gIm50cGxpYiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjN2NjOGU5YjA5ZjQwYzg0ODE5ODU5ZDcwYjc3ODRjYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDYyMWI2NGQ1MGJlOTQ2MWQ5YmQ5YTcxYmEwYjRhZjA2ZmJiZjgxOGJiZDQ4Mzc1MmQ5NWMxYTRlMjczZWRlIgorCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworaW5oZXJpdCBzZXR1cHRvb2xzMyBweXRob24zbmF0aXZlIHB5cGkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vcmRlcmVkLXNldF8yLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vcmRlcmVkLXNldF8yLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTZkNGUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzIuMC4yLmJiCkBAIC0wLDAgKzEsMTAgQEAKK1NVTU1BUlkgPSAiQSBNdXRhYmxlU2V0IHRoYXQgcmVtZW1iZXJzIGl0cyBvcmRlciwgc28gdGhhdCBldmVyeSBlbnRyeSBoYXMgYW4gaW5kZXguIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vTHVtaW5vc29JbnNpZ2h0L29yZGVyZWQtc2V0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NSVQtTElDRU5TRTttZDU9MGZlYjBjODViNzIyZjQ4OGI4Nzg0NGZiNWY4MWQyZGMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3YjhkNzNkYzY0ZmQzYzc4M2VjYjQ4ZTA1MGJmY2MwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDJjYWQ1ZDdkNWIwNzYwZDVjYmU5M2RmYjM4NWFjMmVkNDAyY2ExZDQ4YzlmNGUxMDJkN2Q1Y2NlM2E5MGViIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhaG8tbXF0dF8xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFoby1tcXR0XzEuMy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFoby1tcXR0XzEuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhaG8tbXF0dF8xLjMuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhbmRhc18wLjIwLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFuZGFzXzAuMjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWRkNWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhbmRhc18wLjIwLjMuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1wYW5kYXMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGV4cGVjdF80LjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0XzQuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMzkyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGV4cGVjdF80LjIuMS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXBleHBlY3QuaW5jCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waWQvMDAwMS1yZW1vdmUtcmVxdWlyZW1lbnQtb2Ytbm9zZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waWQvMDAwMS1yZW1vdmUtcmVxdWlyZW1lbnQtb2Ytbm9zZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmVlZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpZC8wMDAxLXJlbW92ZS1yZXF1aXJlbWVudC1vZi1ub3NlLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gMDRkMDRhOGZhMWVmM2Q4ZGJkYWViYmFhYzlhZTkzNmUxYzgyMzRjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggSnVuIDIwMTcgMjE6MTc6NDMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIHJlcXVpcmVtZW50IG9mIG5vc2UKKworVGhlIG5vc2UgZXh0ZW5kcyB1bml0dGVzdCB0byBtYWtlIHRlc3RpbmcgZWFzaWVyLgorRG8gbm90IG5lZWQgdGhlIHRlc3Qgc3VpdGUsIHNvIHJlbW92ZSByZXF1aXJlbWVudCBvZiBub3NlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzZXR1cC5weSB8IDIgLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDNmN2M3Y2IuLmM0MmE1NDYgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC01Myw2ICs1Myw0IEBAIHNldHVwKAorICAgICBrZXl3b3Jkcz0ncGlkIHBpZGZpbGUgY29udGV4dCBtYW5hZ2VyIGRlY29yYXRvcicsCisgICAgIHBhY2thZ2VzPVsicGlkIl0sCisgICAgIGluc3RhbGxfcmVxdWlyZXM9W10sCistICAgIHRlc3Rfc3VpdGU9J25vc2UuY29sbGVjdG9yJywKKy0gICAgc2V0dXBfcmVxdWlyZXM9Wydub3NlPj0xLjAnXSwKKyApCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waWRfMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlkXzIuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4OGQ5YTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlkXzIuMS4xLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiUGlkZmlsZSBmZWF0dXJpbmcgc3RhbGUgZGV0ZWN0aW9uIGFuZCBmaWxlLWxvY2tpbmcsIGNhbiBhbHNvIFwKK2JlIHVzZWQgYXMgY29udGV4dC1tYW5hZ2VyIG9yIGRlY29yYXRvciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90cmJzL3BpZC8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04M2Q1M2NiZDMxMDUwNjNmMjAzMDViYzMxMzQ2NGUyOSIKKworU1JDX1VSSVttZDVzdW1dID0gIjk2MzRiMWUzZDU0NTU0NGE5ZDQ5NmUyNWU0NTMwZDE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0NDMxNjlkM2RjMjEzOTc2OTViNGE4MjAxNmZhZGI0Y2ZkYjBlZDhiMmRkYjRhYWE0MjhlMTcwMWJiMzRlMWYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly8wMDAxLXJlbW92ZS1yZXF1aXJlbWVudC1vZi1ub3NlLnBhdGNoIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmN0bC8wMDAxLXN1cHBvcnQtY3Jvc3MtY29tcGxpY2F0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByY3RsLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21wbGljYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc1YWUxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmN0bC8wMDAxLXN1cHBvcnQtY3Jvc3MtY29tcGxpY2F0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK0Zyb20gOWExNjgwMDczODU0N2QxMTcyODQzNTRiYmNhZDdkZDc3ZDlkMDM0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjEgQXByIDIwMTYgMDM6MDU6NTcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3VwcG9ydCBjcm9zcy1jb21wbGljYXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2V0dXAucHkgfCAzNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDY1OGQxYTUuLmU4YmU3ZWIgMTAwNzU1CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xMyw0MSArMTMsNiBAQCBpbXBvcnQgc3lzCisgIyAtIE5lZWQgZ2NjCisgIyAtIE5lZWQgQyBoZWFkZXJzCisgIyAtIE5lZWQgbGliY2FwIGhlYWRlcnMKKy1pZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CistICAgIHN5cy5zdGRlcnIud3JpdGUoIlRoaXMgbW9kdWxlIG9ubHkgd29ya3Mgb24gbGludXhcbiIpCistICAgIHN5cy5leGl0KDEpCistCista3ZlcnMgPSBvcy51bmFtZSgpWzJdCistaWYga3ZlcnMgPCAnMi42LjE4JyBhbmQgbm90IG9zLmVudmlyb24uZ2V0KCJQUkNUTF9TS0lQX0tFUk5FTF9DSEVDSyIsRmFsc2UpOgorLSAgICBzeXMuc3RkZXJyLndyaXRlKCJUaGlzIG1vZHVsZSByZXF1aXJlcyBsaW51eCAyLjYuMTggb3IgbmV3ZXJcbiIpCistICAgIHN5cy5leGl0KDEpCistCistaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMiw0KToKKy0gICAgc3lzLnN0ZGVyci53cml0ZSgiVGhpcyBtb2R1bGUgcmVxdWlyZXMgcHl0aG9uIDIuNCBvciBuZXdlclxuIikKKy0gICAgc3lzLmV4aXQoMSkKKy0KKy1leGl0ID0gRmFsc2UKKy10cnk6CistICAgIHN1YnByb2Nlc3MuY2FsbChbJ2djYycsJy12J10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCistZXhjZXB0OgorLSAgICBzeXMuc3RkZXJyLndyaXRlKCJZb3UgbmVlZCB0byBpbnN0YWxsIGdjYyB0byBidWlsZCB0aGlzIG1vZHVsZVxuIikKKy0gICAgc3lzLmV4aXQoMSkKKy0KKy1zcCA9IHN1YnByb2Nlc3MuUG9wZW4oWydjcHAnXSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorLXNwLmNvbW11bmljYXRlKCcjaW5jbHVkZSA8c3lzL3ByY3RsLmg+XG4nLmVuY29kZSgpKQorLWlmIHNwLnJldHVybmNvZGU6CistICAgIHN5cy5zdGRlcnIud3JpdGUoIllvdSBuZWVkIHRvIGluc3RhbGwgbGliYyBkZXZlbG9wbWVudCBoZWFkZXJzIHRvIGJ1aWxkIHRoaXMgbW9kdWxlXG4iKQorLSAgICBleGl0ID0gVHJ1ZQorLQorLXNwID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2NwcCddLCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCistc3AuY29tbXVuaWNhdGUoJyNpbmNsdWRlIDxzeXMvY2FwYWJpbGl0eS5oPlxuJy5lbmNvZGUoKSkKKy1pZiBzcC5yZXR1cm5jb2RlOgorLSAgICBzeXMuc3RkZXJyLndyaXRlKCJZb3UgbmVlZCB0byBpbnN0YWxsIGxpYmNhcCBkZXZlbG9wbWVudCBoZWFkZXJzIHRvIGJ1aWxkIHRoaXMgbW9kdWxlXG4iKQorLSAgICBleGl0ID0gVHJ1ZQorLQorLWlmIGV4aXQ6CistICAgIHN5cy5leGl0KDEpCistCisgX3ByY3RsID0gRXh0ZW5zaW9uKCJfcHJjdGwiLAorICAgICAgICAgICAgICAgICAgICBzb3VyY2VzID0gWydfcHJjdGxtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICBkZXBlbmRzID0gWydzZWN1cmViaXRzLmgnXSwKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByY3RsXzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByY3RsXzEuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZTgzY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJjdGxfMS42LjEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSAgPSAiQ29udHJvbCBwcm9jZXNzIGF0dHJpYnV0ZXMgdGhyb3VnaCBwcmN0bCIKK0RFU0NSSVBUSU9OID0gIlRoZSBsaW51eCBwcmN0bCBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIGNvbnRyb2wgc3BlY2lmaWMgY2hhcmFjdGVyaXN0aWNzIG9mIGEgXAorcHJvY2VzcycgYmVoYXZpb3VyLiBVc2FnZSBvZiB0aGUgZnVuY3Rpb24gaXMgZmFpcmx5IG1lc3N5IHRob3VnaCwgZHVlIHRvIFwKK2xpbWl0YXRpb25zIGluIEMgYW5kIGxpbnV4LiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIG5pY2Ugbm9uLW1lc3N5IHB5dGhvbihpYykgXAoraW50ZXJmYWNlLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlYjJmNGJjZDYwMzI2ZjgzZTVkZWI1NDIzNzJkNTJmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiMTEwN2QwYmU3YmVjNGIyOGM4NWM2MmM0NTQ4ODJkMTY4NDRjOTMwYSIKK1BWID0gIjEuNi4xK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc2V2ZWFzL3B5dGhvbi1wcmN0bDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21wbGljYXRpb24ucGF0Y2ggXAorIgoraW5oZXJpdCBzZXR1cHRvb2xzMyBweXRob24zbmF0aXZlCisKK0RFUEVORFMgKz0gImxpYmNhcCIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb2dyZXNzXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9ncmVzc18xLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9ncmVzc18xLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9ncmVzc18xLjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9tcHQtdG9vbGtpdF8xLjAuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvbXB0LXRvb2xraXRfMS4wLjE1LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvbXB0LXRvb2xraXRfMS4wLjEzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvbXB0LXRvb2xraXRfMS4wLjE1LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxZDFkYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm90b2J1Zl8zLjQuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXByb3RvYnVmLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS4zLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS4yLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS4zLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdHlwcm9jZXNzXzAuNS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB0eXByb2Nlc3NfMC41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRjZDBlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdHlwcm9jZXNzXzAuNS4yLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tcHR5cHJvY2Vzcy5pbmMKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5XzEuNC4zMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjQuMzQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjQuMzIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjQuMzQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjFfMC4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xXzAuMy42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xXzAuMi4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xXzAuMy42LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHliaW5kMTFfMi4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHliaW5kMTFfMi4yLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWJpbmQxMV8yLjAuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YmluZDExXzIuMi4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcGFyc2VyXzIuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcGFyc2VyXzIuMTguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNwYXJzZXJfMi4xNy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3BhcnNlcl8yLjE4LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmaXJtYXRhXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZmlybWF0YV8xLjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWFmMWI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZmlybWF0YV8xLjAuMy5iYgpAQCAtMCwwICsxLDMgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXB5ZmlybWF0YS5pbmMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bGludF8xLjcuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWxpbnRfMS43LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYzZTgzMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWxpbnRfMS43LjQuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzIHB5dGhvbjMtZGlyCityZXF1aXJlIHB5dGhvbi1weWxpbnQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC42Ny5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjgwLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC42Ny5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bWlzcF8yLjQuODAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMjUwYTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5bW9uZ28uaW5jCi0KLSMgUmVxdWlyZXMgX3B5ZGVjaW1hbCB3aGljaCBpcyBpbiBtaXNjCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW51bSBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotICAgICR7UFlUSE9OX1BOfS1zZWxlY3RvcnMgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuNS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYwMmNhYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuNS4xLmJiCkBAIC0wLDAgKzEsMTAgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcHltb25nby5pbmMKKworIyBSZXF1aXJlcyBfcHlkZWNpbWFsIHdoaWNoIGlzIGluIG1pc2MKK1JERVBFTkRTXyR7UFlUSE9OX1BOfS1ic29uICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1lbnVtIFwKKyAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgJHtQWVRIT05fUE59LXNlbGVjdG9ycyBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5b3BlbnNzbF8xNi4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlvcGVuc3NsXzE3LjMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5b3BlbnNzbF8xNi4yLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW9wZW5zc2xfMTcuMy4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC4zLjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyXzAuMy4yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjNlNzJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyXzAuMy4yMi5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXB5cm91dGUyLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNlcmlhbF8zLjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNlcmlhbF8zLjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNlcmlhbF8zLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c29ja3NfMS42LjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNi42LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzb2Nrc18xLjYuNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1ydW5uZXJfMi4xMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1ydW5uZXJfMi4xMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl8yLjExLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtcnVubmVyXzIuMTIuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdF8zLjAuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3RfMy4yLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3RfMy4wLjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3RfMy4yLjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVkZXZfMC4yMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dWRldl8wLjIxLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI5MjU1NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVkZXZfMC4yMS4wLmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSBweXRob24tcHl1ZGV2LmluYworCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWxhbmcgXAorIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dXNiXzEuMC4wYjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1c2JfMS4wLjBiMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTNlNmYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dXNiXzEuMC4wYjIuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IGRpc3R1dGlsczMKK3JlcXVpcmUgcHl0aG9uLXB5dXNiLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZGlzXzIuMTAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWRpc18yLjEwLjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWRpc18yLjEwLjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWRpc18yLjEwLjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0cy1maWxlXzEuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLWZpbGVfMS40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY1Mjg3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0cy1maWxlXzEuNC4yLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiRmlsZSB0cmFuc3BvcnQgYWRhcHRlciBmb3IgUmVxdWVzdHMiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9kYXNoZWEvcmVxdWVzdHMtZmlsZSIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTljYzcyOGQ2MDg3ZTQzNzk2MjI3YjBhMzE0MjJkZTZiIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTkwN2VmYjc1ZmFmMGNjYmIxODU3NDMyYmY5ZDhjMGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjUxOGU3Y2ZlMDQ4ZTA1M2ZkMTAxOWRmYjg5MWI0YzU1Yjg3MWM1NmM1YTMxNjkzZDczMzI0MGM4MGI4ZjE5MSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIHB5dGhvbjMtcmVxdWVzdHMgXAorIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHMtZnRwXzAuMy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLWZ0cF8wLjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjk5ZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLWZ0cF8wLjMuMS5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIkZUUCBUcmFuc3BvcnQgQWRhcHRlciBmb3IgUmVxdWVzdHMiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9MdWthc2EvcmVxdWVzdHMtZnRwIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjY4M2EyM2M5OTY4Yjk3NzA5NDQxZGM4ODRkNDZkZjYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYTUyYWQxMjE5ZTY5NmI1YWJkNTQ0OWQxY2NjMDI5NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTA0Y2ViNWNiYThhNWMwMTM1ZWQ3Mzg1OTY4MjBhNzhjNWYyYmU5MmQ3OWIyOWY5NmJhOTliMTgzZDgwNTdhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcHl0aG9uMy1yZXF1ZXN0cyBcCisiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4xMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTg2OWI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcmVxdWVzdHMuaW5jCi0KLSMgQWRkIHRoZSBydW50aW1lIGRlcGVuZHMgZm9yIHNlbGVjdG9ycy5weQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1taXNjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMTguNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjE4LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkxZDk5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjE4LjQuYmIKQEAgLTAsMCArMSw1IEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1yZXF1ZXN0cy5pbmMKKworIyBBZGQgdGhlIHJ1bnRpbWUgZGVwZW5kcyBmb3Igc2VsZWN0b3JzLnB5CitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW1pc2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2Rub3RpZnlfMC4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2Rub3RpZnlfMC4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc3YWYxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZG5vdGlmeV8wLjMuMi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMgcHlwaQorcmVxdWlyZSBweXRob24tc2Rub3RpZnkuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudF8xLjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4yMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4xOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4yMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMtc2NtXzEuMTUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8xLjE1LjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8xLjE1LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8xLjE1LjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTEuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWpzb25fMy4xMC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjExLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxhbGNoZW15XzEuMS45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FsYWxjaGVteV8xLjEuOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4xLjE0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdG9ybmFkb180LjQuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b3JuYWRvXzQuNS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdG9ybmFkb180LjQuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRvcm5hZG9fNC41LjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzE3LjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzE3LjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzUzM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTcuOS4wLmJiCkBAIC0wLDAgKzEsNjcgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tdHdpc3RlZC5pbmMKKworUkRFUEVORFNfJHtQTn0tY29yZSArPSAicHl0aG9uMy1sYW5nIgorCitGSUxFU18ke1BOfS1jb3JlX2FwcGVuZCArPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL19fcHljYWNoZV9fIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9fX3B5Y2FjaGVfXy8qcHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vX19pbml0X18qLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL25vdGVzdHBsdWdpbioucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdGVzdHBsdWdpbioucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9mdHAqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfaW5ldCoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9tYW5ob2xlKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3BvcnRmb3J3YXJkKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3NvY2tzKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3RlbG5ldCoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF90cmlhbCoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9jb3JlKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3F0c3R1YioucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9yZWFjdG9ycyoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vY3JlZCoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vZHJvcGluKi5jYWNoZSBcCisiCisKK0ZJTEVTXyR7UE59LW5hbWVzX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX25hbWVzKi5weWMgXAorIgorCitGSUxFU18ke1BOfS1uZXdzX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX25ld3MqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LXByb3RvY29sc19hcHBlbmQgKz0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvX19weWNhY2hlX18vKnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LWNvbmNoX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2NvbmNoKi5weWMgXAorIgorCitGSUxFU18ke1BOfS1sb3JlX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2xvcmUqLnB5YyBcCisiCitGSUxFU18ke1BOfS1tYWlsX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX21haWwqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LXdlYl9hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF93ZWIqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LXdvcmRzX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3dvcmRzKi5weWMgXAorIgorCitGSUxFU18ke1BOfS1mbG93X2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2Zsb3cqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LXBhaXJfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcGFpcioucHljIFwKKyIKKworRklMRVNfJHtQTn0tcnVubmVyX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3J1bm5lcioucHljIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11anNvbl8xLjM1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVqc29uXzEuMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU0Y2MwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11anNvbl8xLjM1LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tdWpzb24uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdW5pZGlmZl8wLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11bmlkaWZmXzAuNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZGM3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdW5pZGlmZl8wLjUuNC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXVuaWRpZmYuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdXJsbGliM18xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdXJsbGliM18xLjIyLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdXJsbGliM18xLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMjIuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJlbmNvZGluZ3NfMC41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViZW5jb2RpbmdzXzAuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZmU3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViZW5jb2RpbmdzXzAuNS4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24td2ViZW5jb2RpbmdzLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzAuMTEuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMC4xMi4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMC4xMS4xNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzAuMTIuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdyYXB0XzEuMTAuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd3JhcHRfMS4xMC4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWY0NDZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdyYXB0XzEuMTAuMTEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi13cmFwdC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bHJkXzEuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhscmRfMS4xLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bHJkXzEuMC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteGxyZF8xLjEuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXpvcGVpbnRlcmZhY2VfNC40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtem9wZWludGVyZmFjZV80LjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTExODU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXpvcGVpbnRlcmZhY2VfNC40LjMuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCisKK1JERVBFTkRTXyR7UE59LXRlc3QgKz0gInB5dGhvbjMtdW5pdHRlc3QgcHl0aG9uMy1kb2N0ZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwMS1jb21tZW50LW91dC1zZWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwMS1jb21tZW50LW91dC1zZWxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZTMyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAxLWNvbW1lbnQtb3V0LXNlbGludXgucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA3ZDQ4M2MyN2FjMGEyM2NhM2JiYTdmMzIwOTE4YWZjNDAwMTNiZDhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE0OjI1OjUyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTNdIGNvbW1lbnQgb3V0IHNlbGludXgKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L2ZsYWdzLnB5IHwgNSArKystLQorIGJsaXZldC91dGlsLnB5ICB8IDYgKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvZmxhZ3MucHkgYi9ibGl2ZXQvZmxhZ3MucHkKK2luZGV4IDA2ODIyZGIuLmI1NWE5M2YgMTAwNjQ0CistLS0gYS9ibGl2ZXQvZmxhZ3MucHkKKysrKyBiL2JsaXZldC9mbGFncy5weQorQEAgLTIwLDcgKzIwLDcgQEAKKyAjCisgCisgaW1wb3J0IHNobGV4CistaW1wb3J0IHNlbGludXgKKysjaW1wb3J0IHNlbGludXgKKyAKKyAKKyBjbGFzcyBGbGFncyhvYmplY3QpOgorQEAgLTQ5LDcgKzQ5LDggQEAgY2xhc3MgRmxhZ3Mob2JqZWN0KToKKyAgICAgICAgICMKKyAgICAgICAgICMgZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25hbGl0eQorICAgICAgICAgIworLSAgICAgICAgc2VsZi5zZWxpbnV4ID0gc2VsaW51eC5pc19zZWxpbnV4X2VuYWJsZWQoKQorKyAgICAgICAgI3NlbGYuc2VsaW51eCA9IHNlbGludXguaXNfc2VsaW51eF9lbmFibGVkKCkKKysgICAgICAgIHNlbGYuc2VsaW51eCA9IEZhbHNlCisgICAgICAgICBzZWxmLm11bHRpcGF0aCA9IFRydWUKKyAgICAgICAgIHNlbGYuZG1yYWlkID0gVHJ1ZQorICAgICAgICAgc2VsZi5pYmZ0ID0gVHJ1ZQorZGlmZiAtLWdpdCBhL2JsaXZldC91dGlsLnB5IGIvYmxpdmV0L3V0aWwucHkKK2luZGV4IGUzZTcxY2UuLjBjZjUxODggMTAwNjQ0CistLS0gYS9ibGl2ZXQvdXRpbC5weQorKysrIGIvYmxpdmV0L3V0aWwucHkKK0BAIC00LDcgKzQsNyBAQCBpbXBvcnQgZ2xvYgorIGltcG9ydCBpdGVydG9vbHMKKyBpbXBvcnQgb3MKKyBpbXBvcnQgc2h1dGlsCistaW1wb3J0IHNlbGludXgKKysjaW1wb3J0IHNlbGludXgKKyBpbXBvcnQgc3VicHJvY2VzcworIGltcG9ydCByZQorIGltcG9ydCBzeXMKK0BAIC00MzEsNiArNDMxLDggQEAgZGVmIGdldF9jb3dfc3lzZnNfcGF0aChkZXZfcGF0aCwgZGV2X3N5c2ZzUGF0aCk6CisgZGVmIG1hdGNoX3BhdGhfY29udGV4dChwYXRoKToKKyAgICAgIiIiIFJldHVybiB0aGUgZGVmYXVsdCBTRUxpbnV4IGNvbnRleHQgZm9yIHRoZSBnaXZlbiBwYXRoLiAiIiIKKyAgICAgY29udGV4dCA9IE5vbmUKKysgICAgcmV0dXJuIGNvbnRleHQKKysKKyAgICAgdHJ5OgorICAgICAgICAgY29udGV4dCA9IHNlbGludXgubWF0Y2hwYXRoY29uKG9zLnBhdGgubm9ybXBhdGgocGF0aCksIDApWzFdCisgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CitAQCAtNDU1LDYgKzQ1Nyw4IEBAIGRlZiBzZXRfZmlsZV9jb250ZXh0KHBhdGgsIGNvbnRleHQsIHJvb3Q9Tm9uZSk6CisgCisgICAgICAgICAgICAgVHJ1ZSBpZiBzdWNjZXNzZnVsLCBGYWxzZSBpZiBub3QuCisgICAgICIiIgorKyAgICByZXR1cm4gRmFsc2UKKysKKyAgICAgaWYgcm9vdCBpcyBOb25lOgorICAgICAgICAgcm9vdCA9ICcvJworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAyLXJ1bl9wcm9ncmFtLXN1cHBvcnQtdGltZW91dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDItcnVuX3Byb2dyYW0tc3VwcG9ydC10aW1lb3V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZTcxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAyLXJ1bl9wcm9ncmFtLXN1cHBvcnQtdGltZW91dC5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorRnJvbSA4Njc0NGQ0MDhiOTFhY2RjYjA4NmEwM2Q3Nzc5ZmNkYTE1MmYyYWMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE0OjM5OjU2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMTNdIHJ1bl9wcm9ncmFtIHN1cHBvcnQgdGltZW91dAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L3V0aWwucHkgfCA2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L3V0aWwucHkgYi9ibGl2ZXQvdXRpbC5weQoraW5kZXggMGNmNTE4OC4uZDRiZDliYiAxMDA2NDQKKy0tLSBhL2JsaXZldC91dGlsLnB5CisrKysgYi9ibGl2ZXQvdXRpbC5weQorQEAgLTE1OCw2ICsxNTgsMzAgQEAgY2xhc3MgUGF0aChzdHIpOgorICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICByZXR1cm4gc2VsZi5fcGF0aC5fX2hhc2hfXygpCisgCisrZGVmIHRpbWVvdXRfY29tbWFuZChhcmd2LCB0aW1lb3V0LCAqYXJncywgKiprd2FyZ3MpOgorKyAgICAiIiJjYWxsIHNoZWxsLWNvbW1hbmQgYW5kIGVpdGhlciByZXR1cm4gaXRzIG91dHB1dCBvciBraWxsIGl0CisrICAgIGlmIGl0IGRvZXNuJ3Qgbm9ybWFsbHkgZXhpdCB3aXRoaW4gdGltZW91dCBzZWNvbmRzIGFuZCByZXR1cm4gTm9uZSIiIgorKyAgICBpbXBvcnQgc3VicHJvY2VzcywgZGF0ZXRpbWUsIG9zLCB0aW1lLCBzaWduYWwKKysgICAgc3RhcnQgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorKworKyAgICB0cnk6CisrICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihhcmd2LCAqYXJncywgKiprd2FyZ3MpCisrICAgICAgICB3aGlsZSBwcm9jLnBvbGwoKSBpcyBOb25lOgorKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQorKyAgICAgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisrICAgICAgICAgICAgaWYgKG5vdyAtIHN0YXJ0KS5zZWNvbmRzPiB0aW1lb3V0OgorKyAgICAgICAgICAgICAgICBvcy5raWxsKHByb2MucGlkLCBzaWduYWwuU0lHS0lMTCkKKysgICAgICAgICAgICAgICAgb3Mud2FpdHBpZCgtMSwgb3MuV05PSEFORykKKysgICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuZGVidWcoIiVkIHNlY29uZHMgdGltZW91dCIgJSB0aW1lb3V0KQorKyAgICAgICAgICAgICAgICByZXR1cm4gKC0xLCBOb25lKQorKworKworKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorKyAgICAgICAgcHJvZ3JhbV9sb2cuZXJyb3IoIkVycm9yIHJ1bm5pbmcgJXM6ICVzIiwgYXJndlswXSwgZS5zdHJlcnJvcikKKysgICAgICAgIHJhaXNlCisrCisrICAgIHByb2dyYW1fbG9nLmRlYnVnKCJSZXR1cm4gY29kZTogJWQiLCBwcm9jLnJldHVybmNvZGUpCisrICAgIHJldHVybiAocHJvYy5yZXR1cm5jb2RlLCBwcm9jLnN0ZG91dC5yZWFkKCkpCisgCisgZGVmIF9ydW5fcHJvZ3JhbShhcmd2LCByb290PScvJywgc3RkaW49Tm9uZSwgZW52X3BydW5lPU5vbmUsIHN0ZGVycl90b19zdGRvdXQ9RmFsc2UsIGJpbmFyeV9vdXRwdXQ9RmFsc2UpOgorICAgICBpZiBlbnZfcHJ1bmUgaXMgTm9uZToKK0BAIC0xODAsMzYgKzIwNCwyMiBAQCBkZWYgX3J1bl9wcm9ncmFtKGFyZ3YsIHJvb3Q9Jy8nLCBzdGRpbj1Ob25lLCBlbnZfcHJ1bmU9Tm9uZSwgc3RkZXJyX3RvX3N0ZG91dD1GYQorICAgICAgICAgICAgIHN0ZGVycl9kaXIgPSBzdWJwcm9jZXNzLlNURE9VVAorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBzdGRlcnJfZGlyID0gc3VicHJvY2Vzcy5QSVBFCistICAgICAgICB0cnk6CistICAgICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJndiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdGRpbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdGRlcnJfZGlyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz1UcnVlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWV4ZWNfZm49Y2hyb290LCBjd2Q9cm9vdCwgZW52PWVudikKKy0KKy0gICAgICAgICAgICBvdXQsIGVyciA9IHByb2MuY29tbXVuaWNhdGUoKQorLSAgICAgICAgICAgIGlmIG5vdCBiaW5hcnlfb3V0cHV0IGFuZCBzaXguUFkzOgorLSAgICAgICAgICAgICAgICBvdXQgPSBvdXQuZGVjb2RlKCJ1dGYtOCIpCistICAgICAgICAgICAgaWYgb3V0OgorLSAgICAgICAgICAgICAgICBpZiBub3Qgc3RkZXJyX3RvX3N0ZG91dDoKKy0gICAgICAgICAgICAgICAgICAgIHByb2dyYW1fbG9nLmluZm8oInN0ZG91dDoiKQorLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXQuc3BsaXRsaW5lcygpOgorLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuaW5mbygiJXMiLCBsaW5lKQorLQorLSAgICAgICAgICAgIGlmIG5vdCBzdGRlcnJfdG9fc3Rkb3V0IGFuZCBlcnI6CistICAgICAgICAgICAgICAgIHByb2dyYW1fbG9nLmluZm8oInN0ZGVycjoiKQorLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBlcnIuc3BsaXRsaW5lcygpOgorLSAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuaW5mbygiJXMiLCBsaW5lKQorLQorLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKy0gICAgICAgICAgICBwcm9ncmFtX2xvZy5lcnJvcigiRXJyb3IgcnVubmluZyAlczogJXMiLCBhcmd2WzBdLCBlLnN0cmVycm9yKQorLSAgICAgICAgICAgIHJhaXNlCistCistICAgICAgICBwcm9ncmFtX2xvZy5kZWJ1ZygiUmV0dXJuIGNvZGU6ICVkIiwgcHJvYy5yZXR1cm5jb2RlKQorLQorLSAgICByZXR1cm4gKHByb2MucmV0dXJuY29kZSwgb3V0KQorIAorKyAgICAgICAgcmVzLCBvdXQgPSB0aW1lb3V0X2NvbW1hbmQoYXJndiwgMTAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdGRpbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3RkZXJyX2RpciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz1UcnVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1jaHJvb3QsIGN3ZD1yb290LCBlbnY9ZW52KQorKyAgICAgICAgaWYgbm90IGJpbmFyeV9vdXRwdXQgYW5kIHNpeC5QWTM6CisrICAgICAgICAgICAgb3V0ID0gb3V0LmRlY29kZSgidXRmLTgiKQorKyAgICAgICAgaWYgb3V0OgorKyAgICAgICAgICAgIGlmIG5vdCBzdGRlcnJfdG9fc3Rkb3V0OgorKyAgICAgICAgICAgICAgICBwcm9ncmFtX2xvZy5pbmZvKCJzdGRvdXQ6IikKKysgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXQuc3BsaXRsaW5lcygpOgorKyAgICAgICAgICAgICAgICBwcm9ncmFtX2xvZy5pbmZvKCIlcyIsIGxpbmUpCisrCisrICAgIHJldHVybiAocmVzLCBvdXQpCisgCisgZGVmIHJ1bl9wcm9ncmFtKCphcmdzLCAqKmt3YXJncyk6CisgICAgIHJldHVybiBfcnVuX3Byb2dyYW0oKmFyZ3MsICoqa3dhcmdzKVswXQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAzLXN1cHBvcnQtaW5maW5pdC10aW1lb3V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwMy1zdXBwb3J0LWluZmluaXQtdGltZW91dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODlmYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwMy1zdXBwb3J0LWluZmluaXQtdGltZW91dC5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIDkyMzI2NWUwNGRmNTkyMGZjOTkzOTNhYTA1ZjU4NDAzMmFhMWIzODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMTY6MTg6MDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xM10gc3VwcG9ydCBpbmZpbml0IHRpbWVvdXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJsaXZldC91dGlsLnB5IHwgMTIgKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC91dGlsLnB5IGIvYmxpdmV0L3V0aWwucHkKK2luZGV4IGQ0YmQ5YmIuLjQ0YTJkYTUgMTAwNjQ0CistLS0gYS9ibGl2ZXQvdXRpbC5weQorKysrIGIvYmxpdmV0L3V0aWwucHkKK0BAIC0xNTgsNiArMTU4LDcgQEAgY2xhc3MgUGF0aChzdHIpOgorICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICByZXR1cm4gc2VsZi5fcGF0aC5fX2hhc2hfXygpCisgCisrIyB0aW1lb3V0ID0gLTEgbWVhbnMgaW5maW5pdGUgdGltZW91dCwgYWx3YXlzIHdhaXQuCisgZGVmIHRpbWVvdXRfY29tbWFuZChhcmd2LCB0aW1lb3V0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAiIiJjYWxsIHNoZWxsLWNvbW1hbmQgYW5kIGVpdGhlciByZXR1cm4gaXRzIG91dHB1dCBvciBraWxsIGl0CisgICAgIGlmIGl0IGRvZXNuJ3Qgbm9ybWFsbHkgZXhpdCB3aXRoaW4gdGltZW91dCBzZWNvbmRzIGFuZCByZXR1cm4gTm9uZSIiIgorQEAgLTE2OSw3ICsxNzAsNyBAQCBkZWYgdGltZW91dF9jb21tYW5kKGFyZ3YsIHRpbWVvdXQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICB3aGlsZSBwcm9jLnBvbGwoKSBpcyBOb25lOgorICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQorICAgICAgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCistICAgICAgICAgICAgaWYgKG5vdyAtIHN0YXJ0KS5zZWNvbmRzPiB0aW1lb3V0OgorKyAgICAgICAgICAgIGlmIHRpbWVvdXQgIT0gLTEgYW5kIChub3cgLSBzdGFydCkuc2Vjb25kcz4gdGltZW91dDoKKyAgICAgICAgICAgICAgICAgb3Mua2lsbChwcm9jLnBpZCwgc2lnbmFsLlNJR0tJTEwpCisgICAgICAgICAgICAgICAgIG9zLndhaXRwaWQoLTEsIG9zLldOT0hBTkcpCisgICAgICAgICAgICAgICAgIHByb2dyYW1fbG9nLmRlYnVnKCIlZCBzZWNvbmRzIHRpbWVvdXQiICUgdGltZW91dCkKK0BAIC0xODMsNyArMTg0LDcgQEAgZGVmIHRpbWVvdXRfY29tbWFuZChhcmd2LCB0aW1lb3V0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICBwcm9ncmFtX2xvZy5kZWJ1ZygiUmV0dXJuIGNvZGU6ICVkIiwgcHJvYy5yZXR1cm5jb2RlKQorICAgICByZXR1cm4gKHByb2MucmV0dXJuY29kZSwgcHJvYy5zdGRvdXQucmVhZCgpKQorIAorLWRlZiBfcnVuX3Byb2dyYW0oYXJndiwgcm9vdD0nLycsIHN0ZGluPU5vbmUsIGVudl9wcnVuZT1Ob25lLCBzdGRlcnJfdG9fc3Rkb3V0PUZhbHNlLCBiaW5hcnlfb3V0cHV0PUZhbHNlKToKKytkZWYgX3J1bl9wcm9ncmFtKGFyZ3YsIHJvb3Q9Jy8nLCBzdGRpbj1Ob25lLCBlbnZfcHJ1bmU9Tm9uZSwgc3RkZXJyX3RvX3N0ZG91dD1GYWxzZSwgYmluYXJ5X291dHB1dD1GYWxzZSwgdGltZW91dD0xMCk6CisgICAgIGlmIGVudl9wcnVuZSBpcyBOb25lOgorICAgICAgICAgZW52X3BydW5lID0gW10KKyAKK0BAIC0xOTIsNyArMTkzLDEwIEBAIGRlZiBfcnVuX3Byb2dyYW0oYXJndiwgcm9vdD0nLycsIHN0ZGluPU5vbmUsIGVudl9wcnVuZT1Ob25lLCBzdGRlcnJfdG9fc3Rkb3V0PUZhCisgICAgICAgICAgICAgb3MuY2hyb290KHJvb3QpCisgCisgICAgIHdpdGggcHJvZ3JhbV9sb2dfbG9jazogICMgcHlsaW50OiBkaXNhYmxlPW5vdC1jb250ZXh0LW1hbmFnZXIKKy0gICAgICAgIHByb2dyYW1fbG9nLmluZm8oIlJ1bm5pbmcuLi4gJXMiLCAiICIuam9pbihhcmd2KSkKKysgICAgICAgIGlmIHRpbWVvdXQgIT0gLTE6CisrICAgICAgICAgICAgcHJvZ3JhbV9sb2cuaW5mbygiUnVubmluZy4uLiAlcyIsICIgIi5qb2luKGFyZ3YpKQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBwcm9ncmFtX2xvZy5pbmZvKCJSdW5uaW5nLi4uICVzIC4uLmluZmluaXRlIHRpbWVvdXQiLCAiICIuam9pbihhcmd2KSkKKyAKKyAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICBlbnYudXBkYXRlKHsiTENfQUxMIjogIkMiLAorQEAgLTIwNSw3ICsyMDksNyBAQCBkZWYgX3J1bl9wcm9ncmFtKGFyZ3YsIHJvb3Q9Jy8nLCBzdGRpbj1Ob25lLCBlbnZfcHJ1bmU9Tm9uZSwgc3RkZXJyX3RvX3N0ZG91dD1GYQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBzdGRlcnJfZGlyID0gc3VicHJvY2Vzcy5QSVBFCisgCistICAgICAgICByZXMsIG91dCA9IHRpbWVvdXRfY29tbWFuZChhcmd2LCAxMCwKKysgICAgICAgIHJlcywgb3V0ID0gdGltZW91dF9jb21tYW5kKGFyZ3YsIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdGRpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3RkZXJyX2RpciwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNC1Nb3VudC12YXItdm9sYXRpbGUtZHVyaW5nLWluc3RhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA0LU1vdW50LXZhci12b2xhdGlsZS1kdXJpbmctaW5zdGFsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjgzN2UyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNC1Nb3VudC12YXItdm9sYXRpbGUtZHVyaW5nLWluc3RhbGwucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSBjMzk1OWJkMDA2NjVlMjRhOTU1YmJkYmVhMWVmNTU1ZTc2MzcyZjEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE2OjI1OjE2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTNdIE1vdW50IC92YXIvdm9sYXRpbGUgZHVyaW5nIGluc3RhbGwKKworVGhlIGluc3RhbGxlZCBzeXN0ZW0gbmVlZHMgL3Zhci92b2xhdGlsZSBjbGVhbiwgb3RoZXJ3aXNlIGl0CitjYXVzZWQgc3lzdGVtZCdzIGpvdXJuYWxjdGwgZmFpbGVkIHRvIHJlY29yZCBib290IGxvZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L29zaW5zdGFsbC5weSB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L29zaW5zdGFsbC5weSBiL2JsaXZldC9vc2luc3RhbGwucHkKK2luZGV4IGE0Zjk1MzUuLjYxODE5YzIgMTAwNjQ0CistLS0gYS9ibGl2ZXQvb3NpbnN0YWxsLnB5CisrKysgYi9ibGl2ZXQvb3NpbnN0YWxsLnB5CitAQCAtMjk0LDYgKzI5NCw3IEBAIGNsYXNzIEZTU2V0KG9iamVjdCk6CisgICAgICAgICBzZWxmLl9zeXNmcyA9IE5vbmUKKyAgICAgICAgIHNlbGYuX3Byb2MgPSBOb25lCisgICAgICAgICBzZWxmLl9kZXZzaG0gPSBOb25lCisrICAgICAgICBzZWxmLl92b2xhdGlsZSA9IE5vbmUKKyAgICAgICAgIHNlbGYuX3VzYiA9IE5vbmUKKyAgICAgICAgIHNlbGYuX3NlbGludXggPSBOb25lCisgICAgICAgICBzZWxmLl9ydW4gPSBOb25lCitAQCAtMzM1LDYgKzMzNiwxMiBAQCBjbGFzcyBGU1NldChvYmplY3QpOgorICAgICAgICAgcmV0dXJuIHNlbGYuX2RldnNobQorIAorICAgICBAcHJvcGVydHkKKysgICAgZGVmIHZvbGF0aWxlKHNlbGYpOgorKyAgICAgICAgaWYgbm90IHNlbGYuX3ZvbGF0aWxlOgorKyAgICAgICAgICAgIHNlbGYuX3ZvbGF0aWxlID0gTm9EZXZpY2UoZm10PWdldF9mb3JtYXQoInRtcGZzIiwgZGV2aWNlPSJ0bXBmcyIsIG1vdW50cG9pbnQ9Ii92YXIvdm9sYXRpbGUiKSkKKysgICAgICAgIHJldHVybiBzZWxmLl92b2xhdGlsZQorKworKyAgICBAcHJvcGVydHkKKyAgICAgZGVmIHVzYihzZWxmKToKKyAgICAgICAgIGlmIG5vdCBzZWxmLl91c2I6CisgICAgICAgICAgICAgc2VsZi5fdXNiID0gTm9EZXZpY2UoZm10PWdldF9mb3JtYXQoInVzYmZzIiwgZGV2aWNlPSJ1c2JmcyIsIG1vdW50cG9pbnQ9Ii9wcm9jL2J1cy91c2IiKSkKK0BAIC01OTEsNiArNTk4LDcgQEAgY2xhc3MgRlNTZXQob2JqZWN0KToKKyAKKyAgICAgICAgIGRldmljZXMgPSBsaXN0KHNlbGYubW91bnRwb2ludHMudmFsdWVzKCkpICsgc2VsZi5zd2FwX2RldmljZXMKKyAgICAgICAgIGRldmljZXMuZXh0ZW5kKFtzZWxmLmRldiwgc2VsZi5kZXZzaG0sIHNlbGYuZGV2cHRzLCBzZWxmLnN5c2ZzLAorKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudm9sYXRpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9jLCBzZWxmLnNlbGludXgsIHNlbGYudXNiLCBzZWxmLnJ1bl0pCisgICAgICAgICBpZiBpc2luc3RhbmNlKF9wbGF0Zm9ybSwgRUZJKToKKyAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChzZWxmLmVmaXZhcnMpCitAQCAtNjUwLDYgKzY1OCw3IEBAIGNsYXNzIEZTU2V0KG9iamVjdCk6CisgICAgICAgICAiIiIgdW5tb3VudCBmaWxlc3lzdGVtcywgZXhjZXB0IHN3YXAgaWYgc3dhcG9mZiA9PSBGYWxzZSAiIiIKKyAgICAgICAgIGRldmljZXMgPSBsaXN0KHNlbGYubW91bnRwb2ludHMudmFsdWVzKCkpICsgc2VsZi5zd2FwX2RldmljZXMKKyAgICAgICAgIGRldmljZXMuZXh0ZW5kKFtzZWxmLmRldiwgc2VsZi5kZXZzaG0sIHNlbGYuZGV2cHRzLCBzZWxmLnN5c2ZzLAorKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudm9sYXRpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9jLCBzZWxmLnVzYiwgc2VsZi5zZWxpbnV4LCBzZWxmLnJ1bl0pCisgICAgICAgICBpZiBpc2luc3RhbmNlKF9wbGF0Zm9ybSwgRUZJKToKKyAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChzZWxmLmVmaXZhcnMpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDUtdXBkYXRlLWZzdGFiLWJ5LWFwcGVuZGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDUtdXBkYXRlLWZzdGFiLWJ5LWFwcGVuZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjM0M2I3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNS11cGRhdGUtZnN0YWItYnktYXBwZW5kaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMzg2ZmY4OTk3NjNmODQ3M2ViOTNhN2ExNTc4ZmI3Y2M0Zjg2ZjY2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjoyODoxMiArMDgwMAorU3ViamVjdDogW1BBVENIIDA1LzEzXSB1cGRhdGUgZnN0YWIgYnkgYXBwZW5kaW5nCisKK1RoZSAnc3RvcmFnZS53cml0ZSgpJyBoYXMgdXBkYXRlZCBmc3RhYiBieSBvdmVyd3JpdGluZwordGhlIG9yaWdpbmFsIG9uZSwgd2Ugc2hvdWxkIHVwZGF0ZSBmc3RhYiBieSBhcHBlbmRpbmcKK3RvIGtlZXAgb3JpZ2luYWwgdG1wZnMgcGFydGl0aW9ucy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L29zaW5zdGFsbC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC9vc2luc3RhbGwucHkgYi9ibGl2ZXQvb3NpbnN0YWxsLnB5CitpbmRleCA2MTgxOWMyLi5hZmE4MmRiIDEwMDY0NAorLS0tIGEvYmxpdmV0L29zaW5zdGFsbC5weQorKysrIGIvYmxpdmV0L29zaW5zdGFsbC5weQorQEAgLTcyOCw3ICs3MjgsNyBAQCBjbGFzcyBGU1NldChvYmplY3QpOgorICAgICAgICAgIyAvZXRjL2ZzdGFiCisgICAgICAgICBmc3RhYl9wYXRoID0gb3MucGF0aC5ub3JtcGF0aCgiJXMvZXRjL2ZzdGFiIiAlIGdldF9zeXNyb290KCkpCisgICAgICAgICBmc3RhYiA9IHNlbGYuZnN0YWIoKQorLSAgICAgICAgb3Blbihmc3RhYl9wYXRoLCAidyIpLndyaXRlKGZzdGFiKQorKyAgICAgICAgb3Blbihmc3RhYl9wYXRoLCAiYSIpLndyaXRlKGZzdGFiKQorIAorICAgICAgICAgIyAvZXRjL2NyeXB0dGFiCisgICAgICAgICBjcnlwdHRhYl9wYXRoID0gb3MucGF0aC5ub3JtcGF0aCgiJXMvZXRjL2NyeXB0dGFiIiAlIGdldF9zeXNyb290KCkpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDYtZml4LW5ldy5yb290cy1vYmplY3QtaXMtbm90LWl0ZXJhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNi1maXgtbmV3LnJvb3RzLW9iamVjdC1pcy1ub3QtaXRlcmFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVmZjc1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDYtZml4LW5ldy5yb290cy1vYmplY3QtaXMtbm90LWl0ZXJhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gY2Q5MmVlYThmYWIzN2JhNmIwYzdmMDNkYWE1MjU1MzQzZGM3NTcxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjozMDoyMCArMDgwMAorU3ViamVjdDogW1BBVENIIDA2LzEzXSBmaXggbmV3LnJvb3RzIG9iamVjdCBpcyBub3QgaXRlcmFibGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJsaXZldC9ibGl2ZXQucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvYmxpdmV0LnB5IGIvYmxpdmV0L2JsaXZldC5weQoraW5kZXggNmEzM2U5Yy4uNzlhZTkxYSAxMDA2NDQKKy0tLSBhL2JsaXZldC9ibGl2ZXQucHkKKysrKyBiL2JsaXZldC9ibGl2ZXQucHkKK0BAIC0xNzYxLDcgKzE3NjEsNyBAQCBjbGFzcyBCbGl2ZXQob2JqZWN0KToKKyAgICAgICAgICAgICBwID0gcGFydGl0aW9uLmRpc2suZm9ybWF0LnBhcnRlZF9kaXNrLmdldFBhcnRpdGlvbkJ5UGF0aChwYXJ0aXRpb24ucGF0aCkKKyAgICAgICAgICAgICBwYXJ0aXRpb24ucGFydGVkX3BhcnRpdGlvbiA9IHAKKyAKKy0gICAgICAgIGZvciByb290IGluIG5ldy5yb290czoKKysgICAgICAgIGZvciByb290IGluIG5ldy5yb290cyBvciBbXToKKyAgICAgICAgICAgICByb290LnN3YXBzID0gW25ldy5kZXZpY2V0cmVlLmdldF9kZXZpY2VfYnlfaWQoZC5pZCwgaGlkZGVuPVRydWUpIGZvciBkIGluIHJvb3Quc3dhcHNdCisgICAgICAgICAgICAgcm9vdC5zd2FwcyA9IFtzIGZvciBzIGluIHJvb3Quc3dhcHMgaWYgc10KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNy1maXgtaW5jb3JyZWN0LXRpbWVvdXQtd2hpbGUtc3lzdGVtLXRpbWUtY2hhbmdlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDctZml4LWluY29ycmVjdC10aW1lb3V0LXdoaWxlLXN5c3RlbS10aW1lLWNoYW5nZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUxMmQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDctZml4LWluY29ycmVjdC10aW1lb3V0LXdoaWxlLXN5c3RlbS10aW1lLWNoYW5nZWQucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSA3OGVlMmI5MDkwZjk0MDBjY2M0ZjczMGU2NzRmNWFlOTcyNzQwY2NiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyNiBBdWcgMjAxNiAwMjowMjo0OSAtMDQwMAorU3ViamVjdDogW1BBVENIIDA3LzEzXSBmaXggaW5jb3JyZWN0IHRpbWVvdXQgd2hpbGUgc3lzdGVtIHRpbWUgY2hhbmdlZAorCitXaGlsZSBzeXN0ZW0gdGltZSBjaGFuZ2VkIGJ5IE5UUCwgaW52b2tpbmcgdGltZW91dF9jb21tYW5kCiticmVha3Mgd2l0aCBpbmNvcnJlY3QgdGltZW91dC4KKy0tLS0tLS0tCit8MDU6NDA6NTUsODcyIElORk8gcHJvZ3JhbTogUnVubmluZy4uLiBtb3VudCAtdCBleHQyIC1vCisgIGRlZmF1bHRzLHJvIC9kZXYvc2RhMiAvbW50L3N5c2ltYWdlCit8MDE6NDA6NTUsMDg2IERFQlVHIHByb2dyYW06IDEwIHNlY29uZHMgdGltZW91dAorLS0tLS0tLS0KKworVXNlIG51bWJlcnQgY291bnQgdG8gcmVwbGFjZSBjdXJyZW50IHRpbWUgY291bnQgY291bGQgd29ya2Fyb3VuZAordGhlIGlzc3VlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L3V0aWwucHkgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvdXRpbC5weSBiL2JsaXZldC91dGlsLnB5CitpbmRleCA0NGEyZGE1Li5iM2M0NWFjIDEwMDY0NAorLS0tIGEvYmxpdmV0L3V0aWwucHkKKysrKyBiL2JsaXZldC91dGlsLnB5CitAQCAtMTYzLDE0ICsxNjMsMTQgQEAgZGVmIHRpbWVvdXRfY29tbWFuZChhcmd2LCB0aW1lb3V0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAiIiJjYWxsIHNoZWxsLWNvbW1hbmQgYW5kIGVpdGhlciByZXR1cm4gaXRzIG91dHB1dCBvciBraWxsIGl0CisgICAgIGlmIGl0IGRvZXNuJ3Qgbm9ybWFsbHkgZXhpdCB3aXRoaW4gdGltZW91dCBzZWNvbmRzIGFuZCByZXR1cm4gTm9uZSIiIgorICAgICBpbXBvcnQgc3VicHJvY2VzcywgZGF0ZXRpbWUsIG9zLCB0aW1lLCBzaWduYWwKKy0gICAgc3RhcnQgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorKyAgICBjb3VudCA9IDAKKyAKKyAgICAgdHJ5OgorICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJndiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgd2hpbGUgcHJvYy5wb2xsKCkgaXMgTm9uZToKKyAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKy0gICAgICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorLSAgICAgICAgICAgIGlmIHRpbWVvdXQgIT0gLTEgYW5kIChub3cgLSBzdGFydCkuc2Vjb25kcz4gdGltZW91dDoKKysgICAgICAgICAgICBjb3VudCArPSAxCisrICAgICAgICAgICAgaWYgdGltZW91dCAhPSAtMSBhbmQgY291bnQgPiB0aW1lb3V0KjEwOgorICAgICAgICAgICAgICAgICBvcy5raWxsKHByb2MucGlkLCBzaWduYWwuU0lHS0lMTCkKKyAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZCgtMSwgb3MuV05PSEFORykKKyAgICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuZGVidWcoIiVkIHNlY29uZHMgdGltZW91dCIgJSB0aW1lb3V0KQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA4LXR3ZWFrLWJ0cmZzLXBhY2thZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwOC10d2Vhay1idHJmcy1wYWNrYWdlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjEzMzZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwOC10d2Vhay1idHJmcy1wYWNrYWdlcy5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDZmNjYxYTUxMWVlYTA5NmMwNzM4ODhjN2FkYjgzNmE5YTg4MGI0NzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMTY6MzM6MTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xM10gdHdlYWsgYnRyZnMgcGFja2FnZXMKKworSW4gb2UtY3JlL3lvY3RvLCB3ZSBuYW1lIGJ0cmZzIHBhY2thZ2Ugd2l0aCBidHJmcy10b29scywKK3JhdGhlciB0aGFuIGJ0cmZzLXByb2dzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvZGV2aWNlcy9idHJmcy5weSB8IDIgKy0KKyBibGl2ZXQvZm9ybWF0cy9mcy5weSAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC9kZXZpY2VzL2J0cmZzLnB5IGIvYmxpdmV0L2RldmljZXMvYnRyZnMucHkKK2luZGV4IGM1Y2IyMWYuLjlkNDE3YjIgMTAwNjQ0CistLS0gYS9ibGl2ZXQvZGV2aWNlcy9idHJmcy5weQorKysrIGIvYmxpdmV0L2RldmljZXMvYnRyZnMucHkKK0BAIC01NSw3ICs1NSw3IEBAIGNsYXNzIEJUUkZTRGV2aWNlKFN0b3JhZ2VEZXZpY2UpOgorIAorICAgICAiIiIgQmFzZSBjbGFzcyBmb3IgQlRSRlMgdm9sdW1lIGFuZCBzdWItdm9sdW1lIGRldmljZXMuICIiIgorICAgICBfdHlwZSA9ICJidHJmcyIKKy0gICAgX3BhY2thZ2VzID0gWyJidHJmcy1wcm9ncyJdCisrICAgIF9wYWNrYWdlcyA9IFsiYnRyZnMtdG9vbHMiXQorICAgICBfZXh0ZXJuYWxfZGVwZW5kZW5jaWVzID0gW2F2YWlsYWJpbGl0eS5CTE9DS0RFVl9CVFJGU19QTFVHSU5dCisgCisgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorZGlmZiAtLWdpdCBhL2JsaXZldC9mb3JtYXRzL2ZzLnB5IGIvYmxpdmV0L2Zvcm1hdHMvZnMucHkKK2luZGV4IGE0OTgyNmYuLmU4ZjIxNmQgMTAwNjQ0CistLS0gYS9ibGl2ZXQvZm9ybWF0cy9mcy5weQorKysrIGIvYmxpdmV0L2Zvcm1hdHMvZnMucHkKK0BAIC05MTgsNyArOTE4LDcgQEAgY2xhc3MgQlRSRlMoRlMpOgorICAgICBfZm9ybWF0dGFibGUgPSBUcnVlCisgICAgIF9saW51eF9uYXRpdmUgPSBUcnVlCisgICAgIF9zdXBwb3J0ZWQgPSBUcnVlCistICAgIF9wYWNrYWdlcyA9IFsiYnRyZnMtcHJvZ3MiXQorKyAgICBfcGFja2FnZXMgPSBbImJ0cmZzLXRvb2xzIl0KKyAgICAgX21pbl9zaXplID0gU2l6ZSgiMjU2IE1pQiIpCisgICAgIF9tYXhfc2l6ZSA9IFNpemUoIjE2IEVpQiIpCisgICAgIF9ta2ZzX2NsYXNzID0gZnNta2ZzLkJUUkZTTWtmcworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA5LWludm9raW5nLW1vdW50LXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDktaW52b2tpbmctbW91bnQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDg0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA5LWludm9raW5nLW1vdW50LXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGE2YWMyMTU3ZWU2NzkzMzAyZTIzZGRiYzVlM2IyNDlmYTdkYTViN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIEF1ZyAyMDE2IDIxOjMwOjMyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTNdIGludm9raW5nIG1vdW50IHdpdGggaW5maW5pdGUgdGltZW91dAorCitUaGlzIGxhcmdlIHRpbWVvdXQgaXMgbmVlZGVkIHdoZW4gcnVubmluZyBvbiBtYWNoaW5lcyB3aXRoCitsb3RzIG9mIGRpc2tzLCBvciB3aXRoIHNsb3cgZGlza3MuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvdXRpbC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC91dGlsLnB5IGIvYmxpdmV0L3V0aWwucHkKK2luZGV4IGIzYzQ1YWMuLjlmMDJiMTggMTAwNjQ0CistLS0gYS9ibGl2ZXQvdXRpbC5weQorKysrIGIvYmxpdmV0L3V0aWwucHkKK0BAIC0yNTcsNyArMjU3LDcgQEAgZGVmIG1vdW50KGRldmljZSwgbW91bnRwb2ludCwgZnN0eXBlLCBvcHRpb25zPU5vbmUpOgorIAorICAgICBhcmd2ID0gWyJtb3VudCIsICItdCIsIGZzdHlwZSwgIi1vIiwgb3B0aW9ucywgZGV2aWNlLCBtb3VudHBvaW50XQorICAgICB0cnk6CistICAgICAgICByYyA9IHJ1bl9wcm9ncmFtKGFyZ3YpCisrICAgICAgICByYyA9IHJ1bl9wcm9ncmFtKGFyZ3YsIHRpbWVvdXQ9LTEpCisgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgcmFpc2UKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMC11c2Utb2UtdmFyaWFibGUtdG8tcmVwbGFjZS1oYXJkY29kZWQtZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMC11c2Utb2UtdmFyaWFibGUtdG8tcmVwbGFjZS1oYXJkY29kZWQtZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZDhmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEwLXVzZS1vZS12YXJpYWJsZS10by1yZXBsYWNlLWhhcmRjb2RlZC1kaXIucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBlMDcxMzNkYmNmM2M1MmUxZGRkMmYxMjc5N2RjZDE2MTQ1MjY5MjczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDAzOjU0OjEyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTNdIHVzZSBvZSB2YXJpYWJsZSB0byByZXBsYWNlIGhhcmRjb2RlZCBkaXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCA0ZDA2YTMzLi5hOTk0ZDA2IDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtNjEsMTAgKzYxLDEwIEBAIGNsYXNzIGJsaXZldF9zZGlzdChzZGlzdCk6CisgCisgCisgZGF0YV9maWxlcyA9IFsKKy0gICAgKCcvZXRjL2RidXMtMS9zeXN0ZW0uZCcsIFsnZGJ1cy9ibGl2ZXQuY29uZiddKSwKKy0gICAgKCcvdXNyL3NoYXJlL2RidXMtMS9zeXN0ZW0tc2VydmljZXMnLCBbJ2RidXMvY29tLnJlZGhhdC5CbGl2ZXQxLnNlcnZpY2UnXSksCistICAgICgnL3Vzci9saWJleGVjJywgWydkYnVzL2JsaXZldGQnXSksCistICAgICgnL3Vzci9saWIvc3lzdGVtZC9zeXN0ZW0nLCBbJ2RidXMvYmxpdmV0LnNlcnZpY2UnXSkKKysgICAgKG9zLmVudmlyb24uZ2V0KCdzeXNjb25mZGlyJykrJy9kYnVzLTEvc3lzdGVtLmQnLCBbJ2RidXMvYmxpdmV0LmNvbmYnXSksCisrICAgIChvcy5lbnZpcm9uLmdldCgnZGF0YWRpcicpKycvZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcycsIFsnZGJ1cy9jb20ucmVkaGF0LkJsaXZldDEuc2VydmljZSddKSwKKysgICAgKG9zLmVudmlyb24uZ2V0KCdsaWJleGVjZGlyJyksIFsnZGJ1cy9ibGl2ZXRkJ10pLAorKyAgICAob3MuZW52aXJvbi5nZXQoJ3N5c3RlbWRfc3lzdGVtX3VuaXRkaXInKSwgWydkYnVzL2JsaXZldC5zZXJ2aWNlJ10pCisgXQorIAorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDExLWludm9raW5nLWZzY2std2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMS1pbnZva2luZy1mc2NrLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjFmZTAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMS1pbnZva2luZy1mc2NrLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGU5YWI0Mzc2YTE4Y2MxYmQ0MTNjMDAwYjAzNjMyMDgzM2VlYzgwZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDEgSnVuIDIwMTcgMTY6MDU6MjcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xM10gaW52b2tpbmcgZnNjayB3aXRoIGluZmluaXRlIHRpbWVvdXQKKworVGhpcyBsYXJnZSB0aW1lb3V0IGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgb24gbWFjaGluZXMgd2l0aAorbG90cyBvZiBkaXNrcywgb3Igd2l0aCBzbG93IGRpc2tzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L3Rhc2tzL2ZzY2sucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvdGFza3MvZnNjay5weSBiL2JsaXZldC90YXNrcy9mc2NrLnB5CitpbmRleCBjNDIxNGRjLi5lMTNhYzZiIDEwMDY0NAorLS0tIGEvYmxpdmV0L3Rhc2tzL2ZzY2sucHkKKysrKyBiL2JsaXZldC90YXNrcy9mc2NrLnB5CitAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBGU0NLKHRhc2suQmFzaWNBcHBsaWNhdGlvbiwgZnN0YXNrLkZTVGFzayk6CisgICAgICAgICAgICAgcmFpc2UgRlNFcnJvcigiXG4iLmpvaW4oZXJyb3JfbXNncykpCisgCisgICAgICAgICB0cnk6CistICAgICAgICAgICAgcmMgPSB1dGlsLnJ1bl9wcm9ncmFtKHNlbGYuX2ZzY2tfY29tbWFuZCkKKysgICAgICAgICAgICByYyA9IHV0aWwucnVuX3Byb2dyYW0oc2VsZi5fZnNja19jb21tYW5kLCB0aW1lb3V0PS0xKQorICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICByYWlzZSBGU0Vycm9yKCJmaWxlc3lzdGVtIGNoZWNrIGZhaWxlZDogJXMiICUgZSkKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMi1pbnZva2luZy1ta2ZzLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTItaW52b2tpbmctbWtmcy13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNiZGJlOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTItaW52b2tpbmctbWtmcy13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA5ZjVhMDQ4MTgxY2YyOWQyNDFkOTY4MTRlNzM2YjgyMzViM2Q0MmIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxNiBKdW4gMjAxNyAxNTo0MzowMCArMDgwMAorU3ViamVjdDogW1BBVENIIDEyLzEzXSBpbnZva2luZyBta2ZzIHdpdGggaW5maW5pdGUgdGltZW91dAorCitUaGlzIGxhcmdlIHRpbWVvdXQgaXMgbmVlZGVkIHdoZW4gcnVubmluZyBvbiBtYWNoaW5lcyB3aXRoCitsb3RzIG9mIGRpc2tzLCBvciB3aXRoIHNsb3cgZGlza3MuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvdGFza3MvZnNta2ZzLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L3Rhc2tzL2ZzbWtmcy5weSBiL2JsaXZldC90YXNrcy9mc21rZnMucHkKK2luZGV4IGFkMTY2YWEuLjdiZjUwNzUgMTAwNjQ0CistLS0gYS9ibGl2ZXQvdGFza3MvZnNta2ZzLnB5CisrKysgYi9ibGl2ZXQvdGFza3MvZnNta2ZzLnB5CitAQCAtMTcwLDcgKzE3MCw3IEBAIGNsYXNzIEZTTWtmcyh0YXNrLkJhc2ljQXBwbGljYXRpb24sIEZTTWtmc1Rhc2spOgorICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgb3IgW10KKyAgICAgICAgIGNtZCA9IHNlbGYuX21rZnNfY29tbWFuZChvcHRpb25zLCBsYWJlbCwgc2V0X3V1aWQpCisgICAgICAgICB0cnk6CistICAgICAgICAgICAgcmV0ID0gdXRpbC5ydW5fcHJvZ3JhbShjbWQpCisrICAgICAgICAgICAgcmV0ID0gdXRpbC5ydW5fcHJvZ3JhbShjbWQsIHRpbWVvdXQ9LTEpCisgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIHJhaXNlIEZTRXJyb3IoZSkKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMy1SZXZlcnQtQWRhcHQtdG8tbG9nZ2luZy1tb2R1bGUtbmFtZS1jaGFuZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEzLVJldmVydC1BZGFwdC10by1sb2dnaW5nLW1vZHVsZS1uYW1lLWNoYW5nZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmRmNGNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMy1SZXZlcnQtQWRhcHQtdG8tbG9nZ2luZy1tb2R1bGUtbmFtZS1jaGFuZ2UucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBiZmRhZjc5YTIxMDlhYzZhZWQ0MDhmMGM5NGY2OTc2Njk5MWU2MGUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNyBKdWwgMjAxNyAxNDozNDozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDEzLzEzXSBSZXZlcnQgIkFkYXB0IHRvIGxvZ2dpbmcgbW9kdWxlIG5hbWUgY2hhbmdlIgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljLCBzeW5jIHdpdGggYW5hY29uZGEgZjI2LXJlbGVhc2VdCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgYzM2N2Q2MmE1MTZlNTQxYWQyODYzNmM4MjU5MzIxZjFjNTM0MTdjZS4KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L19faW5pdF9fLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L19faW5pdF9fLnB5IGIvYmxpdmV0L19faW5pdF9fLnB5CitpbmRleCA0OTI3N2NiLi5hMDFlNDg3IDEwMDY0NAorLS0tIGEvYmxpdmV0L19faW5pdF9fLnB5CisrKysgYi9ibGl2ZXQvX19pbml0X18ucHkKK0BAIC0xMjQsNyArMTI0LDcgQEAgZGVmIGVuYWJsZV9pbnN0YWxsZXJfbW9kZSgpOgorICAgICAgICAgZnJvbSBweWFuYWNvbmRhLmNvbnN0YW50cyBpbXBvcnQgUk9PVF9QQVRIICAjIHB5bGludDogZGlzYWJsZT1yZWRlZmluZWQtb3V0ZXItbmFtZSxuby1uYW1lLWluLW1vZHVsZQorICAgICAgICAgX3N0b3JhZ2Vfcm9vdCA9IF9zeXNyb290ID0gUk9PVF9QQVRICisgCistICAgIGZyb20gcHlhbmFjb25kYS5hbmFjb25kYV9sb2dnaW5nIGltcG9ydCBwcm9ncmFtX2xvZ19sb2NrCisrICAgIGZyb20gcHlhbmFjb25kYS5hbmFjb25kYV9sb2cgaW1wb3J0IHByb2dyYW1fbG9nX2xvY2sKKyAgICAgdXRpbC5wcm9ncmFtX2xvZ19sb2NrID0gcHJvZ3JhbV9sb2dfbG9jaworIAorICAgICBmbGFncy5pbnN0YWxsZXJfbW9kZSA9IFRydWUKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXRfMi4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldF8yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWNjYTY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXRfMi4yLjAuYmIKQEAgLTAsMCArMSw0NiBAQAorREVTQ1JJUFRJT04gPSAiQSBweXRob24gbW9kdWxlIGZvciBzeXN0ZW0gc3RvcmFnZSBjb25maWd1cmF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvYmxpdmV0IgorTElDRU5TRSA9ICJMR1BMdjIrIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiMzlkYjgyZjIwZDhkNDkwNGMwYzRkYzg5MTJlNTk1MTc3YzU5ZTA5MSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9ibGl2ZXQ7YnJhbmNoPTIuMi1kZXZlbCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbW1lbnQtb3V0LXNlbGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1ydW5fcHJvZ3JhbS1zdXBwb3J0LXRpbWVvdXQucGF0Y2hcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXN1cHBvcnQtaW5maW5pdC10aW1lb3V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtTW91bnQtdmFyLXZvbGF0aWxlLWR1cmluZy1pbnN0YWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtdXBkYXRlLWZzdGFiLWJ5LWFwcGVuZGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LWZpeC1uZXcucm9vdHMtb2JqZWN0LWlzLW5vdC1pdGVyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1pbmNvcnJlY3QtdGltZW91dC13aGlsZS1zeXN0ZW0tdGltZS1jaGFuZ2VkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtdHdlYWstYnRyZnMtcGFja2FnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1pbnZva2luZy1tb3VudC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC11c2Utb2UtdmFyaWFibGUtdG8tcmVwbGFjZS1oYXJkY29kZWQtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtaW52b2tpbmctZnNjay13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1pbnZva2luZy1ta2ZzLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLVJldmVydC1BZGFwdC10by1sb2dnaW5nLW1vZHVsZS1uYW1lLWNoYW5nZS5wYXRjaCBcCisiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKKworaW5oZXJpdCBzZXR1cHRvb2xzMyBweXRob24zbmF0aXZlCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtcHlraWNrc3RhcnQgcHl0aG9uMy1weXVkZXYgXAorICAgICAgICAgICAgICAgICAgcGFydGVkIHB5dGhvbjMtcHlwYXJ0ZWQgbXVsdGlwYXRoLXRvb2xzIFwKKyAgICAgICAgICAgICAgICAgIGxzb2YgY3J5cHRzZXR1cCBsaWJibG9ja2RldiBcCisgICAgICAgICAgICAgICAgICBsaWJieXRlc2l6ZSBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCisiCisKK2luaGVyaXQgc3lzdGVtZAorCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYmxpdmV0LnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldGd1aV8yLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0Z3VpXzIuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNTA3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldGd1aV8yLjEuNS5iYgpAQCAtMCwwICsxLDI3IEBACitERVNDUklQVElPTiA9ICJHVUkgdG9vbCBmb3Igc3RvcmFnZSBjb25maWd1cmF0aW9uIHVzaW5nIGJsaXZldCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2JsaXZldC1ndWkiCitMSUNFTlNFID0gIkdQTHYyKyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtTfSIKKworU1JDUkVWID0gIjUyYWU4YzAwMDg0M2MwNWFiZDFkODc0OWY0NGJiZTJlNWQ4OTFkM2QiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvYmxpdmV0LWd1aTticmFuY2g9bWFzdGVyIFwKKyIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5dGhvbjNuYXRpdmUKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1weWdvYmplY3QgcHl0aG9uMyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWJsaXZldCBndGsrMyAgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1waWQgbGlicmVwb3J0IFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS8qIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLW1laC9weXRob24zLW1laF8wLjQ1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1tZWgvcHl0aG9uMy1tZWhfMC40NS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWNlNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1tZWgvcHl0aG9uMy1tZWhfMC40NS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkEgcHl0aG9uIGxpYnJhcnkgZm9yIGhhbmRsaW5nIGV4Y2VwdGlvbnMiCitERVNDUklQVElPTiA9ICJUaGUgcHl0aG9uLW1laCBwYWNrYWdlIGlzIGEgcHl0aG9uIGxpYnJhcnkgZm9yIGhhbmRsaW5nLCBzYXZpbmcsIGFuZCByZXBvcnRpbmcgXAorZXhjZXB0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0LmZlZG9yYWhvc3RlZC5vcmcvZ2l0Lz9wPXB5dGhvbi1tZWguZ2l0IgorTElDRU5TRSA9ICJHUEx2MisiCisKK2luaGVyaXQgc2V0dXB0b29sczMKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL3B5dGhvbi1tZWguZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIgXAorIgorU1JDUkVWID0gIjJiZmM3NTFmZDY4MDUxNWQ0NGY3MDk2OTQ1YTFlMjgyYTFmN2Q2YWEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAxLXN1cHBvcnQtYXV0aGVudGljYXRpb24tZm9yLWtpY2tzdGFydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMS1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWZvci1raWNrc3RhcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE3Njk5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMS1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWZvci1raWNrc3RhcnQucGF0Y2gKQEAgLTAsMCArMSwxNTEgQEAKK0Zyb20gZDBkODg5MGI1ZWY3NGMzMTUzODFjOWUxY2ZmNGIxZDMyODkyMTE2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBKdW4gMjAxNyAxNTowNzozNiArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gc3VwcG9ydCBhdXRoZW50aWNhdGlvbiBmb3Iga2lja3N0YXJ0CisKK1doaWxlIGRvd25sb2FkIGtpY2tzdGFydCBmaWxlIGZyb20gd2ViIHNlcnZlciwKK3dlIHN1cHBvcnQgYmFzaWMvZGlnZXN0IGF1dGhlbnRpY2F0aW9uLgorCitBZGQgS2lja3N0YXJ0QXV0aEVycm9yIHRvIHJlcG9ydCBhdXRoZW50aWNhdGlvbiBmYWlsdXJlLAord2hpY2ggdGhlIGludm9rZXIgY291bGQgcGFyc2UgdGhpcyBzcGVjaWZpYyBlcnJvci4KKworVXBzdHJlYW0tU3RhdHVzOiBpbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgcHlraWNrc3RhcnQvZXJyb3JzLnB5IHwgMTkgKysrKysrKysrKysrKysrKysrKworIHB5a2lja3N0YXJ0L2xvYWQucHkgICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgcHlraWNrc3RhcnQvcGFyc2VyLnB5IHwgIDQgKystLQorIDMgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3B5a2lja3N0YXJ0L2Vycm9ycy5weSBiL3B5a2lja3N0YXJ0L2Vycm9ycy5weQoraW5kZXggYjc2ZTg0Yy4uZmQ4MWJjOCAxMDA2NDQKKy0tLSBhL3B5a2lja3N0YXJ0L2Vycm9ycy5weQorKysrIGIvcHlraWNrc3RhcnQvZXJyb3JzLnB5CitAQCAtMzUsNiArMzUsMTAgQEAgSXQgYWxzbyBleHBvcnRzIHNldmVyYWwgZXhjZXB0aW9uIGNsYXNzZXM6CisgCisgICAgIEtpY2tzdGFydFZlcnNpb25FcnJvciAtIEFuIGV4Y2VwdGlvbiBmb3IgZXJyb3JzIHJlbGF0aW5nIHRvIHVuc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCB2ZXJzaW9ucy4KKysKKysgICAgS2lja3N0YXJ0QXV0aEVycm9yIC0gQW4gZXhjZXB0aW9uIGZvciBlcnJvcnMgcmVsYXRpbmcgdG8gYXV0aGVudGljYXRpb24KKysgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkIHdoaWxlIGRvd25sb2FkaW5nIGtpY2tzdGFydCBmcm9tIHdlYiBzZXJ2ZXIKKysKKyAiIiIKKyBpbXBvcnQgd2FybmluZ3MKKyAKK0BAIC0xMDMsMyArMTA3LDE4IEBAIGNsYXNzIEtpY2tzdGFydFZlcnNpb25FcnJvcihLaWNrc3RhcnRFcnJvcik6CisgCisgICAgIGRlZiBfX3N0cl9fIChzZWxmKToKKyAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisrCisrY2xhc3MgS2lja3N0YXJ0QXV0aEVycm9yKEtpY2tzdGFydEVycm9yKToKKysgICAgIiIiQW4gZXhjZXB0aW9uIGZvciBlcnJvcnMgcmVsYXRpbmcgdG8gYXV0aGVudGljYXRpb24gZmFpbGVkIHdoaWxlCisrICAgICAgIGRvd25sb2FkaW5nIGtpY2tzdGFydCBmcm9tIHdlYiBzZXJ2ZXIKKysgICAgIiIiCisrICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2cpOgorKyAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IEtpY2tzdGFydEF1dGhFcnJvciBleGNlcHRpb24gaW5zdGFuY2Ugd2l0aCB0aGUKKysgICAgICAgICAgIGRlc2NyaXB0aXZlIG1lc3NhZ2UgdmFsLiAgdmFsIHNob3VsZCBiZSB0aGUgcmV0dXJuIHZhbHVlIG9mCisrICAgICAgICAgICBmb3JtYXRFcnJvck1zZy4KKysgICAgICAgICIiIgorKyAgICAgICAgS2lja3N0YXJ0RXJyb3IuX19pbml0X18oc2VsZiwgbXNnKQorKworKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKysgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisrCitkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvbG9hZC5weSBiL3B5a2lja3N0YXJ0L2xvYWQucHkKK2luZGV4IDFmNjliOWMuLjBmNTc0MWIgMTAwNjQ0CistLS0gYS9weWtpY2tzdGFydC9sb2FkLnB5CisrKysgYi9weWtpY2tzdGFydC9sb2FkLnB5CitAQCAtMTgsMTAgKzE4LDEzIEBACisgIyB3aXRoIHRoZSBleHByZXNzIHBlcm1pc3Npb24gb2YgUmVkIEhhdCwgSW5jLgorICMKKyBpbXBvcnQgcmVxdWVzdHMKKytmcm9tIHJlcXVlc3RzLmF1dGggaW1wb3J0IEhUVFBEaWdlc3RBdXRoCisrZnJvbSByZXF1ZXN0cy5hdXRoIGltcG9ydCBIVFRQQmFzaWNBdXRoCisrCisgaW1wb3J0IHNodXRpbAorIGltcG9ydCBzaXgKKyAKKy1mcm9tIHB5a2lja3N0YXJ0LmVycm9ycyBpbXBvcnQgS2lja3N0YXJ0RXJyb3IKKytmcm9tIHB5a2lja3N0YXJ0LmVycm9ycyBpbXBvcnQgS2lja3N0YXJ0RXJyb3IsIEtpY2tzdGFydEF1dGhFcnJvcgorIGZyb20gcHlraWNrc3RhcnQuaTE4biBpbXBvcnQgXworIGZyb20gcmVxdWVzdHMuZXhjZXB0aW9ucyBpbXBvcnQgU1NMRXJyb3IsIFJlcXVlc3RFeGNlcHRpb24KKyAKK0BAIC0yOSw3ICszMiw3IEBAIF9pc191cmwgPSBsYW1iZGEgbG9jYXRpb246ICc6Ly8nIGluIGxvY2F0aW9uICMgUkZDIDM5ODYKKyAKKyBTU0xfVkVSSUZZID0gVHJ1ZQorIAorLWRlZiBsb2FkX3RvX3N0cihsb2NhdGlvbik6CisrZGVmIGxvYWRfdG9fc3RyKGxvY2F0aW9uLCB1c2VyPU5vbmUsIHBhc3N3ZD1Ob25lKToKKyAgICAgJycnTG9hZCBhIGRlc3RpbmF0aW9uIFVSTCBvciBmaWxlIGludG8gYSBzdHJpbmcuCisgICAgIFR5cGUgb2YgaW5wdXQgaXMgaW5mZXJyZWQgYXV0b21hdGljYWxseS4KKyAKK0BAIC00MCw3ICs0Myw3IEBAIGRlZiBsb2FkX3RvX3N0cihsb2NhdGlvbik6CisgICAgIFJhaXNlczogS2lja3N0YXJ0RXJyb3Igb24gZXJyb3IgcmVhZGluZycnJworIAorICAgICBpZiBfaXNfdXJsKGxvY2F0aW9uKToKKy0gICAgICAgIHJldHVybiBfbG9hZF91cmwobG9jYXRpb24pCisrICAgICAgICByZXR1cm4gX2xvYWRfdXJsKGxvY2F0aW9uLCB1c2VyPXVzZXIsIHBhc3N3ZD1wYXNzd2QpCisgICAgIGVsc2U6CisgICAgICAgICByZXR1cm4gX2xvYWRfZmlsZShsb2NhdGlvbikKKyAKK0BAIC03MSwxMyArNzQsMzIgQEAgZGVmIGxvYWRfdG9fZmlsZShsb2NhdGlvbiwgZGVzdGluYXRpb24pOgorICAgICAgICAgX2NvcHlfZmlsZShsb2NhdGlvbiwgZGVzdGluYXRpb24pCisgICAgICAgICByZXR1cm4gZGVzdGluYXRpb24KKyAKKytkZWYgX2dldF9hdXRoKGxvY2F0aW9uLCB1c2VyPU5vbmUsIHBhc3N3ZD1Ob25lKToKKysKKysgICAgYXV0aCA9IE5vbmUKKysgICAgcmVxdWVzdCA9IHJlcXVlc3RzLmdldChsb2NhdGlvbiwgdmVyaWZ5PVNTTF9WRVJJRlkpCisrICAgIGlmIHJlcXVlc3Quc3RhdHVzX2NvZGUgPT0gcmVxdWVzdHMuY29kZXMudW5hdXRob3JpemVkOgorKyAgICAgICAgaWYgdXNlciBpcyBOb25lIG9yIHBhc3N3ZCBpcyBOb25lOgorKyAgICAgICAgICAgIGxvZy5pbmZvKCJSZXF1aXJlIEF1dGhlbnRpY2F0aW9uIikKKysgICAgICAgICAgICByYWlzZSBLaWNrc3RhcnRBdXRoRXJyb3IoIlJlcXVpcmUgQXV0aGVudGljYXRpb24uXG5BcHBlbmQgJ2tzdXNlcj08dXNlcm5hbWU+IGtzcGFzc3dkPTxwYXNzd29yZD4nIHRvIGJvb3QgY29tbWFuZCIpCisgCisrICAgICAgICByZWFzb25zID0gcmVxdWVzdC5oZWFkZXJzLmdldCgiV1dXLUF1dGhlbnRpY2F0ZSIsICIiKS5zcGxpdCgpCisrICAgICAgICBpZiByZWFzb25zOgorKyAgICAgICAgICAgIGF1dGhfdHlwZSA9IHJlYXNvbnNbMF0KKysgICAgICAgIGlmIGF1dGhfdHlwZSA9PSAiQmFzaWMiOgorKyAgICAgICAgICAgIGF1dGggPSBIVFRQQmFzaWNBdXRoKHVzZXIsIHBhc3N3ZCkKKysgICAgICAgIGVsaWYgYXV0aF90eXBlID09ICJEaWdlc3QiOgorKyAgICAgICAgICAgIGF1dGg9SFRUUERpZ2VzdEF1dGgodXNlciwgcGFzc3dkKQorIAorLWRlZiBfbG9hZF91cmwobG9jYXRpb24pOgorKyAgICByZXR1cm4gYXV0aAorKworK2RlZiBfbG9hZF91cmwobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgorICAgICAnJydMb2FkIGEgbG9jYXRpb24gKFVSTCBvciBmaWxlbmFtZSkgYW5kIHJldHVybiBjb250ZW50cyBhcyBzdHJpbmcnJycKKyAKKysgICAgYXV0aCA9IF9nZXRfYXV0aChsb2NhdGlvbiwgdXNlcj11c2VyLCBwYXNzd2Q9cGFzc3dkKQorKworICAgICB0cnk6CistICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdHMuZ2V0KGxvY2F0aW9uLCB2ZXJpZnk9U1NMX1ZFUklGWSkKKysgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0cy5nZXQobG9jYXRpb24sIHZlcmlmeT1TU0xfVkVSSUZZLCBhdXRoPWF1dGgpCisgICAgIGV4Y2VwdCBTU0xFcnJvciBhcyBlOgorICAgICAgICAgcmFpc2UgS2lja3N0YXJ0RXJyb3IoXygnRXJyb3Igc2VjdXJlbHkgYWNjZXNzaW5nIFVSTCAiJXMiJykgJSBsb2NhdGlvbiArICc6IHtlfScuZm9ybWF0KGU9c3RyKGUpKSkKKyAgICAgZXhjZXB0IFJlcXVlc3RFeGNlcHRpb24gYXMgZToKK2RpZmYgLS1naXQgYS9weWtpY2tzdGFydC9wYXJzZXIucHkgYi9weWtpY2tzdGFydC9wYXJzZXIucHkKK2luZGV4IGQyYjBmYmUuLjI2YjVkZTkgMTAwNjQ0CistLS0gYS9weWtpY2tzdGFydC9wYXJzZXIucHkKKysrKyBiL3B5a2lja3N0YXJ0L3BhcnNlci5weQorQEAgLTc3Myw3ICs3NzMsNyBAQCBjbGFzcyBLaWNrc3RhcnRQYXJzZXIob2JqZWN0KToKKyAgICAgICAgIGkgPSBQdXRCYWNrSXRlcmF0b3Iocy5zcGxpdGxpbmVzKFRydWUpICsgWyIiXSkKKyAgICAgICAgIHNlbGYuX3N0YXRlTWFjaGluZSAoaSkKKyAKKy0gICAgZGVmIHJlYWRLaWNrc3RhcnQoc2VsZiwgZiwgcmVzZXQ9VHJ1ZSk6CisrICAgIGRlZiByZWFkS2lja3N0YXJ0KHNlbGYsIGYsIHJlc2V0PVRydWUsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUpOgorICAgICAgICAgIiIiUHJvY2VzcyBhIGtpY2tzdGFydCBmaWxlLCBnaXZlbiBieSB0aGUgZmlsZW5hbWUgZi4iIiIKKyAgICAgICAgIGlmIHJlc2V0OgorICAgICAgICAgICAgIHNlbGYuX3Jlc2V0KCkKK0BAIC03OTQsNyArNzk0LDcgQEAgY2xhc3MgS2lja3N0YXJ0UGFyc2VyKG9iamVjdCk6CisgICAgICAgICBzZWxmLmN1cnJlbnRkaXJbc2VsZi5faW5jbHVkZURlcHRoXSA9IGNkCisgCisgICAgICAgICB0cnk6CistICAgICAgICAgICAgcyA9IGxvYWRfdG9fc3RyKGYpCisrICAgICAgICAgICAgcyA9IGxvYWRfdG9fc3RyKGYsIHVzZXI9dXNlcm5hbWUsIHBhc3N3ZD1wYXNzd29yZCkKKyAgICAgICAgIGV4Y2VwdCBLaWNrc3RhcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgIHJhaXNlIEtpY2tzdGFydEVycm9yKGZvcm1hdEVycm9yTXNnKDAsIG1zZz1fKCJVbmFibGUgdG8gb3BlbiBpbnB1dCBraWNrc3RhcnQgZmlsZTogJXMiKSAlIHN0cihlKSkpCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMi1weWtpY2tzdGFydC1wYXJzZXIucHktYWRkLWxvY2stZm9yLXJlYWRLaWNrc3RhcnQtYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAyLXB5a2lja3N0YXJ0LXBhcnNlci5weS1hZGQtbG9jay1mb3ItcmVhZEtpY2tzdGFydC1hbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IyMTIzNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMi1weWtpY2tzdGFydC1wYXJzZXIucHktYWRkLWxvY2stZm9yLXJlYWRLaWNrc3RhcnQtYW5kLnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK0Zyb20gZTZlNzQ3Yjg4MzExNGJmYWQ1MWFkOTNmODIzZTY1ZjVhNGQ2NDM4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBKdW4gMjAxNyAxNToxMjoyOSArMDgwMAorU3ViamVjdDogW1BBVENIIDIvNF0gcHlraWNrc3RhcnQvcGFyc2VyLnB5OiBhZGQgbG9jayBmb3IgcmVhZEtpY2tzdGFydCBhbmQKKyBzdXBwb3J0IGh0dHBzIHdpdGhvdXQgY2VydGlmaWNhdGlvbgorCistIEFkZCBsb2NrIGZvciByZWFkS2lja3N0YXJ0IHRvIGZpeCByYWNlIGlzc3VlCisKKy0gU3VwcG9ydCB0byBkb3dubG9hZCBraWNrc3RhcnQgZmlsZSB0aHJvdWdoIGh0dHBzIHdpdGhvdXQgY2VydGlmaWNhdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHB5a2lja3N0YXJ0L2xvYWQucHkgICB8ICAyICstCisgcHlraWNrc3RhcnQvcGFyc2VyLnB5IHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9weWtpY2tzdGFydC9sb2FkLnB5IGIvcHlraWNrc3RhcnQvbG9hZC5weQoraW5kZXggMGY1NzQxYi4uNDhjODI3NiAxMDA2NDQKKy0tLSBhL3B5a2lja3N0YXJ0L2xvYWQucHkKKysrKyBiL3B5a2lja3N0YXJ0L2xvYWQucHkKK0BAIC0zMCw3ICszMCw3IEBAIGZyb20gcmVxdWVzdHMuZXhjZXB0aW9ucyBpbXBvcnQgU1NMRXJyb3IsIFJlcXVlc3RFeGNlcHRpb24KKyAKKyBfaXNfdXJsID0gbGFtYmRhIGxvY2F0aW9uOiAnOi8vJyBpbiBsb2NhdGlvbiAjIFJGQyAzOTg2CisgCistU1NMX1ZFUklGWSA9IFRydWUKKytTU0xfVkVSSUZZID0gRmFsc2UKKyAKKyBkZWYgbG9hZF90b19zdHIobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgorICAgICAnJydMb2FkIGEgZGVzdGluYXRpb24gVVJMIG9yIGZpbGUgaW50byBhIHN0cmluZy4KK2RpZmYgLS1naXQgYS9weWtpY2tzdGFydC9wYXJzZXIucHkgYi9weWtpY2tzdGFydC9wYXJzZXIucHkKK2luZGV4IDI2YjVkZTkuLjI2NGJhMDUgMTAwNjQ0CistLS0gYS9weWtpY2tzdGFydC9wYXJzZXIucHkKKysrKyBiL3B5a2lja3N0YXJ0L3BhcnNlci5weQorQEAgLTU3LDYgKzU3LDI2IEBAIFNUQVRFX0NPTU1BTkRTID0gImNvbW1hbmRzIgorIAorIHZlciA9IHZlcnNpb24uREVWRUwKKyAKKytpbXBvcnQgbG9nZ2luZworK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJhbmFjb25kYSIpCisrCisraW1wb3J0IGluc3BlY3QKKytpbXBvcnQgdGhyZWFkaW5nCisrX3ByaXZhdGVfa3NfbG9jayA9IHRocmVhZGluZy5STG9jaygpCisrCisrY2xhc3MgS3NMb2NrKG9iamVjdCk6CisrICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisrICAgICAgICBsb2cuaW5mbygiJXMgJXMiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpbnNwZWN0LnN0YWNrKClbMF1bM10pKQorKyAgICAgICAgX3ByaXZhdGVfa3NfbG9jay5hY3F1aXJlKCkKKysgICAgICAgIHJldHVybiBfcHJpdmF0ZV9rc19sb2NrCisrCisrICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKKysgICAgICAgIGxvZy5pbmZvKCIlcyAlcyIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGluc3BlY3Quc3RhY2soKVswXVszXSkpCisrICAgICAgICBfcHJpdmF0ZV9rc19sb2NrLnJlbGVhc2UoKQorKworKworK19rc19sb2NrID0gS3NMb2NrKCkKKysKKyBkZWYgX3ByZXByb2Nlc3NTdGF0ZU1hY2hpbmUgKGxpbmVJdGVyKToKKyAgICAgbCA9IE5vbmUKKyAgICAgbGluZW5vID0gMAorQEAgLTc3NCw2ICs3OTQsMTAgQEAgY2xhc3MgS2lja3N0YXJ0UGFyc2VyKG9iamVjdCk6CisgICAgICAgICBzZWxmLl9zdGF0ZU1hY2hpbmUgKGkpCisgCisgICAgIGRlZiByZWFkS2lja3N0YXJ0KHNlbGYsIGYsIHJlc2V0PVRydWUsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUpOgorKyAgICAgICAgd2l0aCBfa3NfbG9jazoKKysgICAgICAgICAgICBzZWxmLl9yZWFkS2lja3N0YXJ0KGYsIHJlc2V0PXJlc2V0LCB1c2VybmFtZT11c2VybmFtZSwgcGFzc3dvcmQ9cGFzc3dvcmQpCisrCisrICAgIGRlZiBfcmVhZEtpY2tzdGFydChzZWxmLCBmLCByZXNldD1UcnVlLCB1c2VybmFtZT1Ob25lLCBwYXNzd29yZD1Ob25lKToKKyAgICAgICAgICIiIlByb2Nlc3MgYSBraWNrc3RhcnQgZmlsZSwgZ2l2ZW4gYnkgdGhlIGZpbGVuYW1lIGYuIiIiCisgICAgICAgICBpZiByZXNldDoKKyAgICAgICAgICAgICBzZWxmLl9yZXNldCgpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMy1jb21tZW50LW91dC1zZWN0aW9ucy1zaHV0ZG93bi1hbmQtZW52aXJvbm1lbnQtaW4tZ2VuLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAzLWNvbW1lbnQtb3V0LXNlY3Rpb25zLXNodXRkb3duLWFuZC1lbnZpcm9ubWVudC1pbi1nZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiMjVmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMy1jb21tZW50LW91dC1zZWN0aW9ucy1zaHV0ZG93bi1hbmQtZW52aXJvbm1lbnQtaW4tZ2VuLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gYmU2MDEyYTVkZDQ5YWU1ZThhYzAzNTY1NGFiMWM2ZjM3ZjBkYzhmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBKdW4gMjAxNyAxNToxNToxNSArMDgwMAorU3ViamVjdDogW1BBVENIIDMvNF0gY29tbWVudCBvdXQgc2VjdGlvbnMgc2h1dGRvd24gYW5kIGVudmlyb25tZW50IGluCisgZ2VuZXJhdGVkIGtpY2tzdGFydCBmaWxlCisKK0JvdGggb2YgdGhlbSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworZml4dXAhIGFkZCBjb21tZW50cyBvZiBzaHV0ZG93biBmb3IgdXNlcgorLS0tCisgcHlraWNrc3RhcnQvY29tbWFuZHMvcmVib290LnB5IHwgMyArKysKKyBweWtpY2tzdGFydC9wYXJzZXIucHkgICAgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3B5a2lja3N0YXJ0L2NvbW1hbmRzL3JlYm9vdC5weSBiL3B5a2lja3N0YXJ0L2NvbW1hbmRzL3JlYm9vdC5weQoraW5kZXggODg3OTliYS4uMmQwY2VhOSAxMDA2NDQKKy0tLSBhL3B5a2lja3N0YXJ0L2NvbW1hbmRzL3JlYm9vdC5weQorKysrIGIvcHlraWNrc3RhcnQvY29tbWFuZHMvcmVib290LnB5CitAQCAtNDEsNiArNDEsOSBAQCBjbGFzcyBGQzNfUmVib290KEtpY2tzdGFydENvbW1hbmQpOgorICAgICAgICAgZWxpZiBzZWxmLmFjdGlvbiA9PSBLU19TSFVURE9XTjoKKyAgICAgICAgICAgICByZXR2YWwgKz0gIiMgU2h1dGRvd24gYWZ0ZXIgaW5zdGFsbGF0aW9uXG5zaHV0ZG93biIKKyAgICAgICAgICAgICByZXR2YWwgKz0gc2VsZi5fZ2V0QXJnc0FzU3RyKCkgKyAiXG4iCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHJldHZhbCArPSAiIyBTaHV0ZG93biBhZnRlciBpbnN0YWxsYXRpb25cbiNzaHV0ZG93biIKKysgICAgICAgICAgICByZXR2YWwgKz0gc2VsZi5fZ2V0QXJnc0FzU3RyKCkgKyAiXG4iCisgCisgICAgICAgICByZXR1cm4gcmV0dmFsCisgCitkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvcGFyc2VyLnB5IGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5CitpbmRleCAyNjRiYTA1Li5iM2YzM2Q3IDEwMDY0NAorLS0tIGEvcHlraWNrc3RhcnQvcGFyc2VyLnB5CisrKysgYi9weWtpY2tzdGFydC9wYXJzZXIucHkKK0BAIC0zODMsNyArMzgzLDcgQEAgY2xhc3MgUGFja2FnZXMoS2lja3N0YXJ0T2JqZWN0KToKKyAKKyAgICAgICAgIGlmIG5vdCBzZWxmLmRlZmF1bHQ6CisgICAgICAgICAgICAgaWYgc2VsZi5lbnZpcm9ubWVudDoKKy0gICAgICAgICAgICAgICAgcGtncyArPSAiQF4lc1xuIiAlIHNlbGYuZW52aXJvbm1lbnQKKysgICAgICAgICAgICAgICAgcGtncyArPSAiI0BeJXNcbiIgJSBzZWxmLmVudmlyb25tZW50CisgCisgICAgICAgICAgICAgZ3JwcyA9IHNlbGYuZ3JvdXBMaXN0CisgICAgICAgICAgICAgZ3Jwcy5zb3J0KCkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDA0LWxvYWQucHktcmV0cnktdG8taW52b2tlLXJlcXVlc3Qtd2l0aC10aW1lb3V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDA0LWxvYWQucHktcmV0cnktdG8taW52b2tlLXJlcXVlc3Qtd2l0aC10aW1lb3V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMjU0ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDQtbG9hZC5weS1yZXRyeS10by1pbnZva2UtcmVxdWVzdC13aXRoLXRpbWVvdXQucGF0Y2gKQEAgLTAsMCArMSw4MiBAQAorRnJvbSBjMGU2M2YwZDNjMDliZGFiYjBhZDJjODhiN2NjNzNlNzYxOGRkODZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAxNzozNTozMyArMDgwMAorU3ViamVjdDogW1BBVENIIDQvNF0gbG9hZC5weTogcmV0cnkgdG8gaW52b2tlIHJlcXVlc3Qgd2l0aCB0aW1lb3V0CisKK1doaWxlIG5ldHdvcmtsZXNzLCB1c2UgcmVxdWVzdCB0byBmZXRjaCBraWNrc3RhcnQgZmlsZSBmcm9tCituZXR3b3JrLCBpdCBmYWlsZWQgYW5kIHdhaXQgMzAwcyB0byBicmVhaywgd2Ugc2hvdWxkIHJldHJ5Cit0byBpbnZva2UgcmVxdWVzdCB3aXRoIHRpbWVvdXQgZXhwbGljaXRseS4gU28gaWYgaXQgdGhlCituZXR3b3JrIGlzIHVwLCB0aGUgZmV0Y2ggd29ya3MuCisKK1Vwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHB5a2lja3N0YXJ0L2xvYWQucHkgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvbG9hZC5weSBiL3B5a2lja3N0YXJ0L2xvYWQucHkKK2luZGV4IDQ4YzgyNzYuLjc0YjI2NmIgMTAwNjQ0CistLS0gYS9weWtpY2tzdGFydC9sb2FkLnB5CisrKysgYi9weWtpY2tzdGFydC9sb2FkLnB5CitAQCAtMjEsNiArMjEsNyBAQCBpbXBvcnQgcmVxdWVzdHMKKyBmcm9tIHJlcXVlc3RzLmF1dGggaW1wb3J0IEhUVFBEaWdlc3RBdXRoCisgZnJvbSByZXF1ZXN0cy5hdXRoIGltcG9ydCBIVFRQQmFzaWNBdXRoCisgCisraW1wb3J0IHRpbWUKKyBpbXBvcnQgc2h1dGlsCisgaW1wb3J0IHNpeAorIAorQEAgLTI4LDYgKzI5LDkgQEAgZnJvbSBweWtpY2tzdGFydC5lcnJvcnMgaW1wb3J0IEtpY2tzdGFydEVycm9yLCBLaWNrc3RhcnRBdXRoRXJyb3IKKyBmcm9tIHB5a2lja3N0YXJ0LmkxOG4gaW1wb3J0IF8KKyBmcm9tIHJlcXVlc3RzLmV4Y2VwdGlvbnMgaW1wb3J0IFNTTEVycm9yLCBSZXF1ZXN0RXhjZXB0aW9uCisgCisraW1wb3J0IGxvZ2dpbmcKKytsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigiYW5hY29uZGEiKQorKworIF9pc191cmwgPSBsYW1iZGEgbG9jYXRpb246ICc6Ly8nIGluIGxvY2F0aW9uICMgUkZDIDM5ODYKKyAKKyBTU0xfVkVSSUZZID0gRmFsc2UKK0BAIC03NCw2ICs3OCwyOSBAQCBkZWYgbG9hZF90b19maWxlKGxvY2F0aW9uLCBkZXN0aW5hdGlvbik6CisgICAgICAgICBfY29weV9maWxlKGxvY2F0aW9uLCBkZXN0aW5hdGlvbikKKyAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbgorIAorK2RlZiBfYWNjZXNzX3VybChsb2NhdGlvbik6CisrICAgIHN0YXR1cyA9IEZhbHNlCisrCisrICAgICMgUmV0cnkgNDUgdGltZXMsIHdhaXQgNDVzfjEzNXMKKysgICAgaSA9IDAKKysgICAgd2hpbGUgaSA8IDQ1OgorKworKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0cy5nZXQobG9jYXRpb24sIHZlcmlmeT1TU0xfVkVSSUZZLCB0aW1lb3V0PTIpCisrICAgICAgICBleGNlcHQgUmVxdWVzdEV4Y2VwdGlvbiBhcyBlOgorKyAgICAgICAgICAgIGxvZy5pbmZvKCJUcnkgJyVzJyAlZCB0aW1lcywgJXMiICUgKGxvY2F0aW9uLCBpLCBzdHIoZSkpKQorKyAgICAgICAgICAgIHN0YXR1cyA9IEZhbHNlCisrICAgICAgICAgICAgaSArPSAxCisrICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorKyAgICAgICAgICAgIGNvbnRpbnVlCisrCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHN0YXR1cyA9IFRydWUKKysgICAgICAgICAgICByZXR1cm4gc3RhdHVzCisrCisrICAgIHJldHVybiBzdGF0dXMKKysKKysKKyBkZWYgX2dldF9hdXRoKGxvY2F0aW9uLCB1c2VyPU5vbmUsIHBhc3N3ZD1Ob25lKToKKyAKKyAgICAgYXV0aCA9IE5vbmUKK0BAIC05Niw2ICsxMjMsOSBAQCBkZWYgX2dldF9hdXRoKGxvY2F0aW9uLCB1c2VyPU5vbmUsIHBhc3N3ZD1Ob25lKToKKyBkZWYgX2xvYWRfdXJsKGxvY2F0aW9uLCB1c2VyPU5vbmUsIHBhc3N3ZD1Ob25lKToKKyAgICAgJycnTG9hZCBhIGxvY2F0aW9uIChVUkwgb3IgZmlsZW5hbWUpIGFuZCByZXR1cm4gY29udGVudHMgYXMgc3RyaW5nJycnCisgCisrICAgIGlmIG5vdCBfYWNjZXNzX3VybChsb2NhdGlvbik6CisrICAgICAgICByYWlzZSBLaWNrc3RhcnRFcnJvcihfKCJDb25uZWN0aW9uICVzIGZhaWxlZCIgJSBsb2NhdGlvbikpCisrCisgICAgIGF1dGggPSBfZ2V0X2F1dGgobG9jYXRpb24sIHVzZXI9dXNlciwgcGFzc3dkPXBhc3N3ZCkKKyAKKyAgICAgdHJ5OgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDUtdHdlYWstc2hlYmFuZy10by1weXRob24zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDA1LXR3ZWFrLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDYxNDk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDA1LXR3ZWFrLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDhhMWY1OTgyMjNiZDRjYmNjODc3ZWIyYWJhM2Y1NTg2Yzc1YzlkMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDIxIEF1ZyAyMDE3IDEwOjA1OjA2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHR3ZWFrIHNoZWJhbmcgdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdG9vbHMva3N2YWxpZGF0b3IucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9rc3ZhbGlkYXRvci5weSBiL3Rvb2xzL2tzdmFsaWRhdG9yLnB5CitpbmRleCBkNjA1MWQ1Li5jMzY4MmU4IDEwMDc1NQorLS0tIGEvdG9vbHMva3N2YWxpZGF0b3IucHkKKysrKyBiL3Rvb2xzL2tzdmFsaWRhdG9yLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbgorKyMhL3Vzci9iaW4vcHl0aG9uMworICMKKyAjIENocmlzIEx1bWVucyA8Y2x1bWVuc0ByZWRoYXQuY29tPgorICMKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L3B5dGhvbjMtcHlraWNrc3RhcnRfMi4zNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvcHl0aG9uMy1weWtpY2tzdGFydF8yLjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZTYwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L3B5dGhvbjMtcHlraWNrc3RhcnRfMi4zNS5iYgpAQCAtMCwwICsxLDI0IEBACitERVNDUklQVElPTiA9ICJBIHB5dGhvbiBsaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcga2lja3N0YXJ0IGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvcHlraWNrc3RhcnQiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCisKK0RFUEVORFMgPSAicHl0aG9uMyIKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1yZXF1ZXN0cyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXNpeCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvcHlraWNrc3RhcnQuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1weWtpY2tzdGFydC0yIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1hdXRoZW50aWNhdGlvbi1mb3Ita2lja3N0YXJ0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItcHlraWNrc3RhcnQtcGFyc2VyLnB5LWFkZC1sb2NrLWZvci1yZWFkS2lja3N0YXJ0LWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvbW1lbnQtb3V0LXNlY3Rpb25zLXNodXRkb3duLWFuZC1lbnZpcm9ubWVudC1pbi1nZW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1sb2FkLnB5LXJldHJ5LXRvLWludm9rZS1yZXF1ZXN0LXdpdGgtdGltZW91dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXR3ZWFrLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICJiMjc4N2E4MTg1NDBlNjc4YzJmOWM1ZGNhMGM2YmJkNjViOGI1NWU1IgorCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVmOGNhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkLmluYwpAQCAtMCwwICsxLDIxIEBACitERVNDUklQVElPTiA9ICJweXBhcnRlZCBpcyBhIHNldCBvZiBQeXRob24gbW9kdWxlcyB0aGF0IHByb3ZpZGUgUHl0aG9uIHByb2dyYW1tZXJzIFwKK2FuIGludGVyZmFjZSB0byBsaWJwYXJ0ZWQsIHRoZSBHTlUgcGFydGVkIGxpYnJhcnkgZm9yIGRpc2sgcGFydGl0aW9uaW5nIGFuZCBcCitmaWxlc3lzdGVtIG1hbmlwdWxhdGlvbi4iCitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgbGlicGFydGVkIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL3B5cGFydGVkIgorTElDRU5TRSA9ICJHUEwtMi4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCisgICAgZmlsZTovL3NyYy9fcGVkbW9kdWxlLmM7c3RhcnRsaW5lPTEwO2VuZGxpbmU9MjI7bWQ1PWViY2IyNWRkZTFhYzljNDZlOTg2ZGVjNzliNDA0ZTdlIFwKKyIKK0RFUEVORFMgKz0gInBhcnRlZCIKKworIyB1cHN0cmVhbSBvbmx5IHB1Ymxpc2hlcyByZWxlYXNlcyBpbiBnaXRodWIgYXJjaGl2ZXMgd2hpY2ggYXJlIGRpc2NvdXJhZ2VkCitTUkNSRVYgPSAiNjljNGE0NzhlNDNkM2VmZjZhZTNhMDExNmZhMzhkYTA2Nzc2ZDVmNSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9weXBhcnRlZC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtdmVyc2lvbi1mbG9hdC1jaGVjay5wYXRjaCBcCisiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSREVQRU5EU18ke1BOfSArPSAicGFydGVkICg+PSAyLjMpIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkXzMuMTAuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkXzMuMTAuNy5iYgppbmRleCA4MzM1ZDA4Li44YTE1YTg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZF8zLjEwLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWRfMy4xMC43LmJiCkBAIC0xLDI3ICsxLDEyIEBACi1ERVNDUklQVElPTiA9ICJweXBhcnRlZCBpcyBhIHNldCBvZiBQeXRob24gbW9kdWxlcyB0aGF0IHByb3ZpZGUgUHl0aG9uIHByb2dyYW1tZXJzIFwKLWFuIGludGVyZmFjZSB0byBsaWJwYXJ0ZWQsIHRoZSBHTlUgcGFydGVkIGxpYnJhcnkgZm9yIGRpc2sgcGFydGl0aW9uaW5nIGFuZCBcCi1maWxlc3lzdGVtIG1hbmlwdWxhdGlvbi4iCi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgbGlicGFydGVkIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL3B5cGFydGVkIgotTElDRU5TRSA9ICJHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCi0gICAgZmlsZTovL3NyYy9fcGVkbW9kdWxlLmM7c3RhcnRsaW5lPTEwO2VuZGxpbmU9MjI7bWQ1PWViY2IyNWRkZTFhYzljNDZlOTg2ZGVjNzliNDA0ZTdlIFwKLSIKLURFUEVORFMgKz0gInBhcnRlZCBweXRob24tcmUiCityZXF1aXJlIHB5dGhvbi1weXBhcnRlZC5pbmMKKworREVQRU5EUyArPSAicHl0aG9uLXJlIgogCiBQViA9ICIzLjEwLjcrZ2l0JHtTUkNQVn0iCiAKLSMgdXBzdHJlYW0gb25seSBwdWJsaXNoZXMgcmVsZWFzZXMgaW4gZ2l0aHViIGFyY2hpdmVzIHdoaWNoIGFyZSBkaXNjb3VyYWdlZAotU1JDUkVWID0gIjY5YzRhNDc4ZTQzZDNlZmY2YWUzYTAxMTZmYTM4ZGEwNjc3NmQ1ZjUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvcHlwYXJ0ZWQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXZlcnNpb24tZmxvYXQtY2hlY2sucGF0Y2ggXAotIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQogaW5oZXJpdCBkaXN0dXRpbHMKIAotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1zdHJpbmdvbGQgcHl0aG9uLWNvZGVjcyBweXRob24tbWF0aCBwYXJ0ZWQgKD49IDIuMykiCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXN0cmluZ29sZCBweXRob24tY29kZWNzIHB5dGhvbi1tYXRoIgogUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbjMtcHlwYXJ0ZWQvMDAwMS1maXgtdmVyc2lvbi1mbG9hdC1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZC8wMDAxLWZpeC12ZXJzaW9uLWZsb2F0LWNoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZmIwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbjMtcHlwYXJ0ZWQvMDAwMS1maXgtdmVyc2lvbi1mbG9hdC1jaGVjay5wYXRjaApAQCAtMCwwICsxLDI2IEBACitjaGVja19tb2RfdmVyc2lvbiBicmVha3MgaWYgbW9kdWxlIHZlcnNpb24gaXMgb2YgeC55LnogZm9ybQordXNlIGEgcmVnZXggdG8gaGVscCBjYXN0IHgueS56IHZlcnNpb24gdG8gYSBmbG9hdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW5kZXg6IGdpdC9zZXR1cC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NldHVwLnB5CisrKysgZ2l0L3NldHVwLnB5CitAQCAtMjUsNiArMjUsNyBAQCBpbXBvcnQgZ2xvYgorIGltcG9ydCBvcworIGltcG9ydCBwbGF0Zm9ybQorIGltcG9ydCBzeXMKKytpbXBvcnQgcmUKKyBmcm9tIGRpc3R1dGlscy5jY29tcGlsZXIgaW1wb3J0IG5ld19jb21waWxlcgorIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgQ29tcGlsZUVycm9yCisgZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBMaW5rRXJyb3IKK0BAIC01MSw2ICs1Miw4IEBAIGRlZiBwa2djb25maWcoKnBhY2thZ2VzLCAqKmt3YXJncyk6CisgCisgZGVmIGNoZWNrX21vZF92ZXJzaW9uKG1vZHVsZSwgdmVyc2lvbik6CisgICAgIG1vZHZlcnNpb24gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInBrZy1jb25maWciLCAiLS1tb2R2ZXJzaW9uIiwgbW9kdWxlXSkKKysgICAgbWF0Y2ggPSByZS5zZWFyY2goYicoWzAtOV0rXC5bMC05XSspJywgbW9kdmVyc2lvbikKKysgICAgbW9kdmVyc2lvbiA9IG1hdGNoLmdyb3VwKDApCisgICAgIGlmIG5vdCBmbG9hdChtb2R2ZXJzaW9uKSA+PSBmbG9hdCh2ZXJzaW9uKToKKyAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIioqKiBNaW5pbXVtIHJlcXVpcmVkICVzIHZlcnNpb246ICVzLCBmb3VuZDogJXNcbiIgJSAobW9kdWxlLCB2ZXJzaW9uLCBtb2R2ZXJzaW9uLCkpCisgICAgICAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24zLXB5cGFydGVkXzMuMTAuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZF8zLjEwLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY3MmMyYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uMy1weXBhcnRlZF8zLjEwLjcuYmIKQEAgLTAsMCArMSwxMiBAQAorcmVxdWlyZSBweXRob24tcHlwYXJ0ZWQuaW5jCisKK0RFUEVORFMgKz0gInB5dGhvbjMtcmUiCisKK1BWID0gIjMuMTAuNytnaXQke1NSQ1BWfSIKKworaW5oZXJpdCBkaXN0dXRpbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXN0cmluZ29sZCBweXRob24zLWNvZGVjcyBweXRob24zLW1hdGgiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3B5d2JlbS9weXdiZW1fMC44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5d2JlbV8wLjguMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5d2JlbV8wLjguMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5d2JlbS9weXdiZW1fMC44LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L0NPUFlJTkcuTUlUIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvQ09QWUlORy5NSVQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOTUwZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvQ09QWUlORy5NSVQKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IAotb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIAotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAKLWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyAKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIAotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIAotSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIAotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiAKLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiAKLVRIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L1JFQURNRSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM3YmQxMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcnVieS9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGlzIGxheWVyIGRlcGVuZHMgb246Ci0KLVVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogcHlybwotcmV2aXNpb246IEhFQUQKLQotVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLmdpdAotYnJhbmNoOiBweXJvCi1yZXZpc2lvbjogSEVBRAotCi1TZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtcnVieV1bcHlyb10nIGluIHRoZSBzdWJqZWN0JwotCi1XaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1ydWJ5XVtweXJvXVtQQVRDSCcKLQotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcnVieS9jbGFzc2VzL3J1YnkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L2NsYXNzZXMvcnVieS5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWNmMmUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L2NsYXNzZXMvcnVieS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLUJQViA/PSAiJHtQVn0iCi0KLURFUEVORFMgKz0gIiBcCi0gICAgcnVieS1uYXRpdmUgXAotIgotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcnVieSBcCi0iCi0KLWRlZiBnZXRfcnVieXZlcnNpb24ocCk6Ci0gICAgaW1wb3J0IHJlCi0gICAgZnJvbSBvcy5wYXRoIGltcG9ydCBpc2ZpbGUKLSAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgIGZvdW5kX3ZlcnNpb24gPSAiU09NRVRISU5HIEZBSUxFRCEiCi0KLSAgICBjbWQgPSAiJXMvcnVieSIgJSBwCi0KLSAgICBpZiBub3QgaXNmaWxlKGNtZCk6Ci0gICAgICAgcmV0dXJuIGZvdW5kX3ZlcnNpb24KLQotICAgIHZlcnNpb24gPSBzdWJwcm9jZXNzLlBvcGVuKFtjbWQsICItLXZlcnNpb24iXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVswXS5kZWNvZGUoInV0Zi04IikKLSAgICAKLSAgICByID0gcmUuY29tcGlsZSgicnVieSAoWzAtOV0rXC5bMC05XStcLlswLTldKykqIikKLSAgICBtID0gci5tYXRjaCh2ZXJzaW9uKQotICAgIGlmIG06Ci0gICAgICAgIGZvdW5kX3ZlcnNpb24gPSBtLmdyb3VwKDEpCi0KLSAgICByZXR1cm4gZm91bmRfdmVyc2lvbgotCi1kZWYgZ2V0X3J1YnlnZW1zbG9jYXRpb24ocCk6Ci0gICAgaW1wb3J0IHJlCi0gICAgZnJvbSBvcy5wYXRoIGltcG9ydCBpc2ZpbGUKLSAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgIGZvdW5kX2xvYyA9ICJTT01FVEhJTkcgRkFJTEVEISIKLQotICAgIGNtZCA9ICIlcy9nZW0iICUgcAotCi0gICAgaWYgbm90IGlzZmlsZShjbWQpOgotICAgICAgIHJldHVybiBmb3VuZF9sb2MKLQotICAgIGxvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW2NtZCwgImVudiJdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdLmRlY29kZSgidXRmLTgiKQotCi0gICAgciA9IHJlLmNvbXBpbGUoIi4qXC0gKC91c3IuKi9ydWJ5L2dlbXMvLiopIikKLSAgICBmb3IgbGluZSBpbiBsb2Muc3BsaXQoJ1xuJyk6Ci0gICAgICAgIG0gPSByLm1hdGNoKGxpbmUpCi0gICAgICAgIGlmIG06Ci0gICAgICAgICAgICBmb3VuZF9sb2MgPSBtLmdyb3VwKDEpCi0gICAgICAgICAgICBicmVhawotCi0gICAgcmV0dXJuIGZvdW5kX2xvYwotCi1kZWYgZ2V0X3J1YnlnZW1zdmVyc2lvbihwKToKLSAgICBpbXBvcnQgcmUKLSAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGlzZmlsZQotICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgZm91bmRfdmVyc2lvbiA9ICJTT01FVEhJTkcgRkFJTEVEISIKLQotICAgIGNtZCA9ICIlcy9nZW0iICUgcAotCi0gICAgaWYgbm90IGlzZmlsZShjbWQpOgotICAgICAgIHJldHVybiBmb3VuZF92ZXJzaW9uCi0KLSAgICB2ZXJzaW9uID0gc3VicHJvY2Vzcy5Qb3BlbihbY21kLCAiZW52IiwgImdlbWRpciJdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdLmRlY29kZSgidXRmLTgiKQotICAgIAotICAgIHIgPSByZS5jb21waWxlKCIuKihbMC05XStcLlswLTldK1wuWzAtOV0rKSQiKQotICAgIG0gPSByLm1hdGNoKHZlcnNpb24pCi0gICAgaWYgbToKLSAgICAgICAgZm91bmRfdmVyc2lvbiA9IG0uZ3JvdXAoMSkKLQotICAgIHJldHVybiBmb3VuZF92ZXJzaW9uCi0KLVJVQllfVkVSU0lPTiA/PSAiJHtAZ2V0X3J1Ynl2ZXJzaW9uKCIke1NUQUdJTkdfQklORElSX05BVElWRX0iKX0iCi1SVUJZX0dFTV9ESVJFQ1RPUlkgPz0gIiR7QGdldF9ydWJ5Z2Vtc2xvY2F0aW9uKCIke1NUQUdJTkdfQklORElSX05BVElWRX0iKX0iCi1SVUJZX0dFTV9WRVJTSU9OID89ICIke0BnZXRfcnVieWdlbXN2ZXJzaW9uKCIke1NUQUdJTkdfQklORElSX05BVElWRX0iKX0iCi0KLWV4cG9ydCBHRU1fSE9NRSA9ICIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2xpYi9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfSIKLQotUlVCWV9CVUlMRF9HRU1TID89ICIke0JQTn0uZ2Vtc3BlYyIKLVJVQllfSU5TVEFMTF9HRU1TID89ICIke0JQTn0tJHtCUFZ9LmdlbSIKLQotUlVCWV9DT01QSUxFX0ZMQUdTID89ICdMQU5HPSJlbl9VUy5VVEYtOCIgTENfQUxMPSJlbl9VUy5VVEYtOCInCi0KLXJ1YnlfZG9fY29tcGlsZSgpIHsKLQlmb3IgZ2VtIGluICR7UlVCWV9CVUlMRF9HRU1TfTsgZG8KLQkJJHtSVUJZX0NPTVBJTEVfRkxBR1N9IGdlbSBidWlsZCAkZ2VtCi0JZG9uZQotfQotCi0KLXJ1YnlfZG9faW5zdGFsbCgpIHsKLQlmb3IgZ2VtIGluICR7UlVCWV9JTlNUQUxMX0dFTVN9OyBkbwotCQlnZW0gaW5zdGFsbCAtLWlnbm9yZS1kZXBlbmRlbmNpZXMgLS1sb2NhbCAtLWVudi1zaGViYW5nIC0taW5zdGFsbC1kaXIgJHtEfS8ke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vICRnZW0KLQlkb25lCi0KLQkjIGNyZWF0ZSBzeW1saW5rIGZyb20gdGhlIGdlbXMgYmluIGRpcmVjdG9yeSB0byAvdXNyL2JpbgotCWZvciBpIGluICR7RH0vJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2Jpbi8qOyBkbwotCQlpZiBbIC1lICIkaSIgXTsgdGhlbgotCQkJaWYgWyAhIC1kICR7RH0vJHtiaW5kaXJ9IF07IHRoZW4gbWtkaXIgLXAgJHtEfS8ke2JpbmRpcn07IGZpCi0JCQliPWBiYXNlbmFtZSAkaWAKLQkJCWxuIC1zZiAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vYmluLyRiICR7RH0vJHtiaW5kaXJ9LyRiCi0JCWZpCi0JZG9uZQotfQotCi1FWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbAotCi1QQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQTn0gJHtQTn0tZG9jICR7UE59LWRldiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vZ2Vtcy8qLyovLmRlYnVnIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2dlbXMvKi8qLyovLmRlYnVnIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2dlbXMvKi8qLyovKi8uZGVidWcgXAotICAgICAgICAke2xpYmRpcn0vcnVieS9nZW1zLyR7UlVCWV9HRU1fVkVSU0lPTn0vZ2Vtcy8qLyovKi8qLyovLmRlYnVnIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2V4dGVuc2lvbnMvKi8qLy5kZWJ1ZyBcCi0gICAgICAgICR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS9leHRlbnNpb25zLyovKi8qLy5kZWJ1ZyBcCi0gICAgICAgICR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS9leHRlbnNpb25zLyovKi8qLyovLmRlYnVnIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2V4dGVuc2lvbnMvKi8qLyovKi8qLy5kZWJ1ZyBcCi0gICAgICAgICIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgICAgICR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS9nZW1zIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2NhY2hlIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2JpbiBcCi0gICAgICAgICR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS9zcGVjaWZpY2F0aW9ucyBcCi0gICAgICAgICR7bGliZGlyfS9ydWJ5L2dlbXMvJHtSVUJZX0dFTV9WRVJTSU9OfS9idWlsZF9pbmZvIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2V4dGVuc2lvbnMgXAotICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWRvYyArPSAiIFwKLSAgICAgICAgJHtsaWJkaXJ9L3J1YnkvZ2Vtcy8ke1JVQllfR0VNX1ZFUlNJT059L2RvYyBcCi0gICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1ydWJ5L2NvbmYvbGF5ZXIuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUyNmE1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcnVieS9jb25mL2xheWVyLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0jIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYXBwZW5kIHRvIEJCUEFUSCAKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgYSByZWNpcGVzIGRpcmVjdG9yeSwgYWRkIHRvIEJCRklMRVMKLUJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKLQotQkJGSUxFX0NPTExFQ1RJT05TICs9ICJydWJ5LWxheWVyIgotQkJGSUxFX1BBVFRFUk5fcnVieS1sYXllciA6PSAiXiR7TEFZRVJESVJ9LyIKLUJCRklMRV9QUklPUklUWV9ydWJ5LWxheWVyID0gIjciCi0KLSMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAotIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwotTEFZRVJWRVJTSU9OX3J1YnktbGF5ZXIgPSAiMSIKLQotTEFZRVJERVBFTkRTX3J1YnktbGF5ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcnVieS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvYnVuZGxlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcnVieS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvYnVuZGxlcl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmODk1MjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXJ1YnkvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L2J1bmRsZXJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJNYWtlcyBzdXJlIFJ1YnkgYXBwbGljYXRpb25zIHJ1biB0aGUgc2FtZSBjb2RlIG9uIGV2ZXJ5IG1hY2hpbmUuIgotREVTQ1JJUFRJT04gPSAiQnVuZGxlciBtYWtlcyBzdXJlIFJ1YnkgYXBwbGljYXRpb25zIHJ1biB0aGUgc2FtZSBjb2RlIFwKLW9uIGV2ZXJ5IG1hY2hpbmUuIEl0IGRvZXMgdGhpcyBieSBtYW5hZ2luZyB0aGUgZ2VtcyB0aGF0IHRoZSBcCi1hcHBsaWNhdGlvbiBkZXBlbmRzIG9uLiBHaXZlbiBhIGxpc3Qgb2YgZ2VtcywgaXQgY2FuIGF1dG9tYXRpY2FsbHkgXAotZG93bmxvYWQgYW5kIGluc3RhbGwgdGhvc2UgZ2VtcywgYXMgd2VsbCBhcyBhbnkgb3RoZXIgZ2VtcyBuZWVkZWQgYnkgXAotdGhlIGdlbXMgdGhhdCBhcmUgbGlzdGVkLiBCZWZvcmUgaW5zdGFsbGluZyBnZW1zLCBpdCBjaGVja3MgdGhlIFwKLXZlcnNpb25zIG9mIGV2ZXJ5IGdlbSB0byBtYWtlIHN1cmUgdGhhdCB0aGV5IGFyZSBjb21wYXRpYmxlLCBhbmQgY2FuIFwKLWFsbCBiZSBsb2FkZWQgYXQgdGhlIHNhbWUgdGltZS4gQWZ0ZXIgdGhlIGdlbXMgaGF2ZSBiZWVuIGluc3RhbGxlZCwgXAotQnVuZGxlciBjYW4gaGVscCB5b3UgdXBkYXRlIHNvbWUgb3IgYWxsIG9mIHRoZW0gd2hlbiBuZXcgdmVyc2lvbnMgXAotYmVjb21lIGF2YWlsYWJsZS4gRmluYWxseSwgaXQgcmVjb3JkcyB0aGUgZXhhY3QgdmVyc2lvbnMgdGhhdCBoYXZlIFwKLWJlZW4gaW5zdGFsbGVkLCBzbyB0aGF0IG90aGVycyBjYW4gaW5zdGFsbCB0aGUgZXhhY3Qgc2FtZSBnZW1zLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT0xOTZiYjk2M2U2MDE2MDk4MTdkN2U5YWM5YTY0YTg2NyIKLQotU1JDUkVWID0gIjA2ZGM4NDcyYjkxNDJmZDZhYWVmZmY3ODBkNmQyNTJjMjBkYzJhMDQiCi0KLUJSQU5DSCA9ICIxLTktc3RhYmxlIgotUFYgPSAiMS45LjQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL2J1bmRsZXIvYnVuZGxlci5naXQ7YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgIgotCi1pbmhlcml0IHJ1YnkKLQotUkRFUEVORFNfJHtQTn0gPSAiZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotUE5CTEFDS0xJU1RbYnVuZGxlcl0gPz0gIkZhaWxzIHRvIGJ1aWxkIHdpdGggUlNTIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xMzA2NDAvIC0gdGhlIHJlY2lwZSB3aWxsIGJlIHJlbW92ZWQgb24gMjAxNy0wOS0wMSB1bmxlc3MgdGhlIGlzc3VlIGlzIGZpeGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDRmYzNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKLQotVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBweXJvCi1yZXZpc2lvbjogSEVBRAotCi1BbmQgd2UncmUgd29ya2luZyB0byBicmVhayB0aGUgZGVwZW5kZW5jeSBvbiB0aGlzIG9uZToKLQotVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLmdpdAotYnJhbmNoOiBweXJvCi1yZXZpc2lvbjogSEVBRAotCi1UbyBtYWtlIEJCTUFTSydpbmcgcGVyIGxheWVyIHBvc3NpYmxlIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZSBpcwotdXNlZDoKLQotJFtMQVlFUkRJUn0vPGxheWVyIG5hbWU+L3JlY2lwZXMtPGdyb3VwLW5hbWU+LzxyZWNpcGUtbmFtZT4vPHJlY2lwZS1uYW1lPi5iYmFwcGVuZAotCi1TZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtb2VdW21ldGEtc3lzdGVtZF1bcHlyb10nIGluIHRoZSBzdWJqZWN0JwotCi1XaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2Ugc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtb2VdW21ldGEtc3lzdGVtZF1bcHlyb11bUEFUQ0gnCi0KLVlvdSBhcmUgZW5jb3VyYWdlZCB0byBmb3JrIHRoZSBtaXJyb3Igb24gZ2l0aHViIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS8gdG8gc2hhcmUgeW91ciBwYXRjaGVzLCB0aGlzIGlzIHByZWZlcnJlZCBmb3IgcGF0Y2ggc2V0cyBjb25zaXN0aW5nIG9mIG1vcmUgdGhhbiBvbmUgcGF0Y2guIE90aGVyIHNlcnZpY2VzIGxpa2UgZ2l0b3Jpb3VzLCByZXBvLm9yLmN6IG9yIHNlbGYgaG9zdGVkIHNldHVwcyBhcmUgb2YgY291cnNlIGFjY2VwdGVkIGFzIHdlbGwsICdnaXQgZmV0Y2ggPHJlbW90ZT4nIHdvcmtzIHRoZSBzYW1lIG9uIGFsbCBvZiB0aGVtLiBXZSByZWNvbW1lbmQgZ2l0aHViIGJlY2F1c2UgaXQgaXMgZnJlZSwgZWFzeSB0byB1c2UsIGhhcyBiZWVuIHByb3ZlbiB0byBiZSByZWxpYWJsZSBhbmQgaGFzIGEgcmVhbGx5IGdvb2Qgd2ViIEdVSS4KLQotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9jb25mL2xheWVyLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NjNmNDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvY29uZi9sYXllci5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotIyBJdCByZWFsbHkgZGVwZW5kcyBvbiBvcmRlciBvZiB0aGUgbGF5ZXJzIGFwcGVhcmluZyBpbiBCQkxBWUVSUwotIyB2YXJpYWJsZSBpbiB0b3BsZXZlbCBiYmxheWVycy5jb25mIGZpbGUsIHdoZXJlIGJpdGJha2Ugd2lsbCBzZWFyY2gKLSMgZm9yIC5pbmMgZmlsZXMgYW5kIG90aGVycyB3aGVyZSBiaXRiYWtlIHVzZXMgQkJQQVRIIHNpbmNlIGl0IHdpbGwKLSMgc2VhcmNoIHRoZSBkaXJlY3RvcmllcyBmcm9tIGZpcnN0IHRvIGxhc3QgYXMgc3BlY2lmaWVkIGluIEJCUEFUSAotIyBUaGVyZWZvcmUgaWYgeW91IHdhbnQgYSBnaXZlbiBsYXllciB0byBiZSBjb25zaWRlcmVkIGhpZ2ggcHJpb3JpdHkKLSMgZm9yIHRoZSAuaW5jIGFuZCAuY29uZiBldGMuIHRoZW4gY29uc2lkZXIgaXQgYWRkaW5nIGF0IHRoZSBiZWdpbm5pbmcKLSMgb2YgQkJQQVRILiBGb3IgYmJsYXllcnMgYml0YmFrZSB3aWxsIHVzZSBCQkZJTEVTX1BSSU9SSVRZIHRvIHJlc29sdmUKLSMgdGhlIHJlY2lwZSBjb250ZW50aW9uIHNvIHRoZSBvcmRlciBvZiBkaXJlY3RvcmllcyBpbiBCQkZJTEVTIGRvZXMgCi0jIG5vdCBtYXR0ZXIuCi0KLSMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhcHBlbmQgdG8gQkJQQVRICi1CQlBBVEggLj0gIjoke0xBWUVSRElSfSIKLQotIyBXZSBoYXZlIGEgcmVjaXBlcyBkaXJlY3RvcnksIGFkZCB0byBCQkZJTEVTCi1CQkZJTEVTICs9ICJcCi0gICR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAotICAke0xBWUVSRElSfS9vZS1jb3JlL3JlY2lwZXMtKi8qLyouYmJhcHBlbmQgXAotIgotCi1CQkZJTEVfQ09MTEVDVElPTlMgKz0gInN5c3RlbWQtbGF5ZXIiCi1CQkZJTEVfUEFUVEVSTl9zeXN0ZW1kLWxheWVyIDo9ICJeJHtMQVlFUkRJUn0vIgotCi0jIERlZmluZSB0aGUgcHJpb3JpdHkgZm9yIHJlY2lwZXMgKC5iYiBmaWxlcykgZnJvbSB0aGlzIGxheWVyLAotIyBjaG9vc2luZyBjYXJlZnVsbHkgaG93IHRoaXMgbGF5ZXIgaW50ZXJhY3RzIHdpdGggYWxsIG9mIHRoZQotIyBvdGhlciBsYXllcnMuCi0KLUJCRklMRV9QUklPUklUWV9zeXN0ZW1kLWxheWVyID0gIjciCi0KLVNJR0dFTl9FWENMVURFUkVDSVBFU19BQklTQUZFICs9ICIgXAotICBzeXN0ZW1kLXNlcmlhbGdldHR5IFwKLSIKLUxBWUVSREVQRU5EU19zeXN0ZW1kLWxheWVyID0gImNvcmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtYnNwL2tleW1hcHMva2V5bWFwc18xLjAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtYnNwL2tleW1hcHMva2V5bWFwc18xLjAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MWI4NzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWJzcC9rZXltYXBzL2tleW1hcHNfMS4wLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MWI4NzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAwNmIzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjbGllbnQuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY2xpZW50LnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NjIwY2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjbGllbnQuc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249RHluYW1pYyBIb3N0IENvbmZpZ3VyYXRpb24gUHJvdG9jb2wgKERIQ1ApCi1BZnRlcj1zeXNsb2cudGFyZ2V0IG5ldHdvcmsudGFyZ2V0Ci0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1QSURGaWxlPS92YXIvcnVuL2RoY2xpZW50LnBpZAotRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQvZGhjcC1jbGllbnQKLUV4ZWNTdGFydD0vc2Jpbi9kaGNsaWVudCAtY2YgL2V0Yy9kaGNwL2RoY2xpZW50LmNvbmYgLXEgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQubGVhc2VzICRJTlRFUkZBQ0VTCi0KLVtJbnN0YWxsXQotV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljN2Q5M2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSMgbG9vayBmb3IgZmlsZXMgaW4gdGhlIGxheWVyIGZpcnN0Ci1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCi0KLVNZU1RFTURfUEFDS0FHRVMgKz0gImRoY3AtY2xpZW50IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWNsaWVudCA9ICJkaGNsaWVudC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1jbGllbnQgPSAiZGlzYWJsZSIKLQotRklMRVNfJHtQTn0tY2xpZW50ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY2xpZW50LnNlcnZpY2UiCi1SUFJPVklERVNfZGhjcC1zZXJ2ZXIgKz0gImRoY3Atc2VydmVyLXN5c3RlbWQiCi1SUkVQTEFDRVNfZGhjcC1zZXJ2ZXIgKz0gImRoY3Atc2VydmVyLXN5c3RlbWQiCi1SQ09ORkxJQ1RTX2RoY3Atc2VydmVyICs9ICJkaGNwLXNlcnZlci1zeXN0ZW1kIgotUlBST1ZJREVTX2RoY3AtcmVsYXkgKz0gImRoY3AtcmVsYXktc3lzdGVtZCIKLVJSRVBMQUNFU19kaGNwLXJlbGF5ICs9ICJkaGNwLXJlbGF5LXN5c3RlbWQiCi1SQ09ORkxJQ1RTX2RoY3AtcmVsYXkgKz0gImRoY3AtcmVsYXktc3lzdGVtZCIKLVJQUk9WSURFU18ke1BOfS1jbGllbnQgKz0gImRoY3AtY2xpZW50LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0tY2xpZW50ICs9ICJkaGNwLWNsaWVudC1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfS1jbGllbnQgKz0gImRoY3AtY2xpZW50LXN5c3RlbWQiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kaGNsaWVudC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kaGNsaWVudC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdhMzEyNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi0KLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWRiYzE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVJQUk9WSURFU18ke1BOfS1zc2hkICs9ICIke1BOfS1zc2hkLXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0tc3NoZCArPSAiJHtQTn0tc3NoZC1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfS1zc2hkICs9ICIke1BOfS1zc2hkLXN5c3RlbWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcF82LjAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcF82LjAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZTZlNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXBfNi4wLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50XyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dwYS1zdXBwbGljYW50L3dwYS1zdXBwbGljYW50XyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMDZiM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudF8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQyZDQ1MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotUlBST1ZJREVTXyR7UE59LXN5c2xvZyArPSAiJHtQTn0tc3lzbG9nLXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0tc3lzbG9nICs9ICIke1BOfS1zeXNsb2ctc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0tc3lzbG9nICs9ICIke1BOfS1zeXNsb2ctc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMDZiM2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxYjg3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWFhNTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1SUFJPVklERVNfdWRldiArPSAidWRldi1zeXN0ZW1kIgotUlJFUExBQ0VTX3VkZXYgKz0gInVkZXYtc3lzdGVtZCIKLVJDT05GTElDVFNfdWRldiArPSAidWRldi1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAwNmIzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XyUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MWI4NzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDA2YjNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXyUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9vZS1jb3JlL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDA2YjNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXN5c3RlbWQvb2UtY29yZS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDA2YjNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL29lLWNvcmUvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZS11bml0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtc3lzdGVtZC9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLW1hY2hpbmUtdW5pdHNfMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTY2YWMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1zeXN0ZW1kL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZS11bml0c18xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIk1hY2hpbmUgc3BlY2lmaWMgc3lzdGVtZCB1bml0cyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotUFIgPSAicjE4IgotCi1pbmhlcml0IHN5c3RlbWQKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIiCi1OQVRJVkVfU1lTVEVNRF9TVVBQT1JUID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL1JFQURNRQppbmRleCBmYWI3MjE3Li5mMjkyOGFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL1JFQURNRQpAQCAtMTMsMTQgKzEzLDE0IEBACiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKIHN1YmRpcmVjdG9yeTogbWV0YQotYnJhbmNoOiBweXJvIAorYnJhbmNoOiByb2NrbyAKIHJldmlzaW9uOiBIRUFECiAKIEZvciBzb21lIHJlY2lwZXMsIHRoZSBtZXRhLW9lIGxheWVyIGlzIHJlcXVpcmVkOgogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL21ldGEtb2UuZ2l0CiBzdWJkaXJlY3Rvcnk6IG1ldGEtb2UKLWJyYW5jaDogcHlybyAKK2JyYW5jaDogcm9ja28gCiByZXZpc2lvbjogSEVBRAogCiAKQEAgLTUyLDEzICs1Miw5IEBACiAtLS0tLS0tLS0tLQogCiBTZW5kIHBhdGNoZXMgLyBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnCi13aXRoICdbbWV0YS13ZWJzZXJ2ZXJdW3B5cm9dJyBpbiB0aGUgc3ViamVjdC4KK3dpdGggJ1ttZXRhLXdlYnNlcnZlcl0nIGluIHRoZSBzdWJqZWN0LgogCi1XaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2Ugc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10bz1vcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtd2Vic2VydmVyXVtweXJvXVtQQVRDSCcKLQotcHlybyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CitMYXllciBtYWludGFpbmVyOiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgogCiAKIExpY2Vuc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKaW5kZXggYmI1MDhhOC4uODRmZGQ4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKQEAgLTE1LDcgKzE1LDcgQEAKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKIExBWUVSVkVSU0lPTl93ZWJzZXJ2ZXIgPSAiMSIKIAotTEFZRVJERVBFTkRTX3dlYnNlcnZlciA9ICJjb3JlIgorTEFZRVJERVBFTkRTX3dlYnNlcnZlciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciIKIAogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9saWNlbnNlcyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTcxN2QyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTItbmF0aXZlXzIuNC4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAotZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKLVNVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgotREVQRU5EUyA9ICJleHBhdC1uYXRpdmUgcGNyZS1uYXRpdmUgYXByLW5hdGl2ZSBhcHItdXRpbC1uYXRpdmUiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG5hdGl2ZQotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2h0dHBkLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYmZmNWEyYjU0MmZhNTg4NTQ0NTViZjFhMGI5NGI4MyIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyODI2ZjQ5NjE5MTEyYWQ1ODEzYzBiZTVhZmNjN2RkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmODdlYzJkZjFjOWZlZTNlNmJmZGUzYzhiODU1YTNkZGI3Y2ExYWIyMGNhODc3YmQwZTJiNmJmM2YwNWM4MGIyIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXAotICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWcgXAotICAgICAgICAgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSAtLWRhdGFkaXI9JHtkYXRhZGlyfS9hcGFjaGUyIFwKLSAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0KLSAgICBjcCBzZXJ2ZXIvZ2VuX3Rlc3RfY2hhciAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgc3VwcG9ydC9hcHhzICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSA3NTUgaHR0cGQgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQKLSAgICBjcCAke1N9L2J1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAotICAgIGNwIGJ1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAotICAgIGNwICR7U30vYnVpbGQvaW5zdGRzby5zaCAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKLSAgICBjcCAke1N9L2luY2x1ZGUvKiAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCi0gICAgY3AgaW5jbHVkZS8qICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKLSAgICBjcCAke1N9L29zL3VuaXgvb3MuaCAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCi0gICAgY3AgJHtTfS9vcy91bml4L3VuaXhkLmggJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgotCi0gICAgY3Agc3VwcG9ydC9lbnZ2YXJzLXN0ZCAke0R9JHtiaW5kaXJ9L2VudnZhcnMKLSAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9lbnZ2YXJzCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTItbmF0aXZlXzIuNC4yNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTItbmF0aXZlXzIuNC4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTg5M2RiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjI3LmJiCkBAIC0wLDAgKzEsNDUgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAorZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKK1NVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgorREVQRU5EUyA9ICJleHBhdC1uYXRpdmUgcGNyZS1uYXRpdmUgYXByLW5hdGl2ZSBhcHItdXRpbC1uYXRpdmUiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG5hdGl2ZQorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2h0dHBkLSR7UFZ9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYmZmNWEyYjU0MmZhNTg4NTQ0NTViZjFhMGI5NGI4MyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5N2I2YmJmYTgzYzg2NmRiZTIwZWYzMTdlM2FmZDEwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWZjYzEyODIzOGE2OTA1MTViZDgxNzRkNTMzMGE1MzA5MTYxZWYzMTRhMzI2YWU0NWM3YzE1ZWQxMzljMTNhIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXAorICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWcgXAorICAgICAgICAgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSAtLWRhdGFkaXI9JHtkYXRhZGlyfS9hcGFjaGUyIFwKKyAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0KKyAgICBjcCBzZXJ2ZXIvZ2VuX3Rlc3RfY2hhciAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgc3VwcG9ydC9hcHhzICR7RH0ke2JpbmRpcn0vCisgICAgaW5zdGFsbCAtbSA3NTUgaHR0cGQgJHtEfSR7YmluZGlyfS8KKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQKKyAgICBjcCAke1N9L2J1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAorICAgIGNwIGJ1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAorICAgIGNwICR7U30vYnVpbGQvaW5zdGRzby5zaCAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKKyAgICBjcCAke1N9L2luY2x1ZGUvKiAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCisgICAgY3AgaW5jbHVkZS8qICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKKyAgICBjcCAke1N9L29zL3VuaXgvb3MuaCAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCisgICAgY3AgJHtTfS9vcy91bml4L3VuaXhkLmggJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgorCisgICAgY3Agc3VwcG9ydC9lbnZ2YXJzLXN0ZCAke0R9JHtiaW5kaXJ9L2VudnZhcnMKKyAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9lbnZ2YXJzCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjI1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYTdkM2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIEFwYWNoZSBIVFRQIFNlcnZlciBpcyBhIHBvd2VyZnVsLCBlZmZpY2llbnQsIGFuZCBcCi1leHRlbnNpYmxlIHdlYiBzZXJ2ZXIuIgotU1VNTUFSWSA9ICJBcGFjaGUgSFRUUCBTZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iCi1ERVBFTkRTID0gImxpYnRvb2wtbmF0aXZlIGFwYWNoZTItbmF0aXZlIG9wZW5zc2wgZXhwYXQgcGNyZSBhcHIgYXByLXV0aWwiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9L2h0dHBkL2h0dHBkLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vc2VydmVyLW1ha2VmaWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC4xLWNvcmVsaW1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuNC1leHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjEtc2VsaW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUtY29uZmlndXJlX3BlcmxiaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUtc3NsLWx0bWFpbi1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuMy1maXgtcmFjZS1pc3N1ZS1vZi1kaXItaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vYXBhY2hlMi12b2xhdGlsZS5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZTIuc2VydmljZSBcCi0gICAgICAgICAgIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYmZmNWEyYjU0MmZhNTg4NTQ0NTViZjFhMGI5NGI4MyIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyODI2ZjQ5NjE5MTEyYWQ1ODEzYzBiZTVhZmNjN2RkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmODdlYzJkZjFjOWZlZTNlNmJmZGUzYzhiODU1YTNkZGI3Y2ExYWIyMGNhODc3YmQwZTJiNmJmM2YwNWM4MGIyIgotCi1TID0gIiR7V09SS0RJUn0vaHR0cGQtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJhcGFjaGUyLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImRpc2FibGUiCi0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHhzIGNvbmZpZ192YXJzLm1rIGNvbmZpZy5uaWNlIgotCi1DRkxBR1NfYXBwZW5kID0gIiAtRFBBVEhfTUFYPTQwOTYiCi1DRkxBR1NfcHJlcGVuZCA9ICItSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2wgIgotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNzbCBcCi0gICAgLS13aXRoLXNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgLS13aXRoLWV4cGF0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyBcCi0gICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyBcCi0gICAgLS1lbmFibGUtaW5mbyBcCi0gICAgLS1lbmFibGUtcmV3cml0ZSBcCi0gICAgLS13aXRoLWRibT1zZGJtIFwKLSAgICAtLXdpdGgtYmVya2VsZXktZGI9bm8gXAotICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyLyR7QlBOfSBcCi0gICAgLS13aXRoLWdkYm09bm8gXAotICAgIC0td2l0aC1uZGJtPW5vIFwKLSAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS8ke0JQTn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKLSAgICAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzIFwKLSAgICBhcF9jdl92b2lkX3B0cl9sdF9sb25nPW5vIFwKLSAgICAtLWVuYWJsZS1tcG1zLXNoYXJlZCBcCi0gICAgYWNfY3ZfaGF2ZV90aHJlYWRzYWZlX3BvbGxzZXQ9bm8iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxsaWJzZWxpbnV4IgotUEFDS0FHRUNPTkZJR1tvcGVubGRhcF0gPSAiLS1lbmFibGUtbGRhcCAtLWVuYWJsZS1hdXRobnotbGRhcCwtLWRpc2FibGUtbGRhcCAtLWRpc2FibGUtYXV0aG56LWxkYXAsb3BlbmxkYXAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGNhdCAke1dPUktESVJ9L2luaXQgfCBcCi0gICAgICAgIHNlZCAtZSAncywvdXNyL3NiaW4vLCR7c2JpbmRpcn0vLGcnIFwKLSAgICAgICAgICAgIC1lICdzLC91c3IvYmluLywke2JpbmRpcn0vLGcnIFwKLSAgICAgICAgICAgIC1lICdzLC91c3IvbGliLCR7bGliZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci8sJHtwcmVmaXh9LyxnJyA+ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0gICAgY2htb2QgNzU1ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0gICAgIyByZW1vdmUgdGhlIGdvb2Z5IG9yaWdpbmFsIGZpbGVzLi4uCi0gICAgcm0gLXJmICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vb3JpZ2luYWwKLSAgICAjIEV4cGF0IHNob3VsZCBiZSBmb3VuZCBpbiB0aGUgc3RhZ2luZyBhcmVhIHZpYSBERVBFTkRTLi4uCi0gICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGliZXhwYXQuKgotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vY29uZi5kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kCi0KLSAgICAjIEVuc3VyZSBjb25maWd1cmF0aW9uIGZpbGUgcHVsbHMgaW4gY29uZi5kIGFuZCBtb2R1bGVzLmQKLSAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L2NvbmYuZC8qLmNvbmYiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgotICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kLyoubG9hZCIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQvKi5jb25mXG5cbiIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgIyBtYXRjaCB3aXRoIHRoYXQgaXMgaW4gaW5pdCBzY3JpcHQKLSAgICBwcmludGYgIlxuUGlkRmlsZSAvcnVuL2h0dHBkLnBpZCIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgIyBTZXQgJ1NlcnZlck5hbWUnIHRvIGZpeCBlcnJvciBtZXNzYWdlcyB3aGVuIHJlc3RhcnQgYXBhY2hlIHNlcnZpY2UKLSAgICBzZWQgLWkgJ3MvXiNTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbS9TZXJ2ZXJOYW1lIGxvY2FsaG9zdC8nICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLSAgICBmaQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZTIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hcGFjaGUyLnNlcnZpY2UKLSAgICBzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hcGFjaGUyLnNlcnZpY2UKLQotICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotICAgICAgICAgICAtZSAncyxBUFVfSU5DTFVERURJUiA9IC4qLEFQVV9JTkNMVURFRElSID0gLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsQVBVX0NPTkZJRyA9IC4qLEFQVV9DT05GSUcgPSAsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWdfdmFycy5tawotCi0gICAgc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsIi4qL2NvbmZpZ3VyZSIsImNvbmZpZ3VyZSIsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWcubmljZQotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImFwYWNoZV9zeXNyb290X3ByZXByb2Nlc3MiCi0KLWFwYWNoZV9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L2FweHMgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7c2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtEfSR7c2JpbmRpcn0vYXBhY2hlY3RsICR7U1lTUk9PVF9ERVNURElSfSR7c2JpbmRpcn0vCi0gICAgc2VkIC1pICdzIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAuKiFteSAkaW5zdGFsbGJ1aWxkZGlyID0gIiR7U1RBR0lOR19ESVJfSE9TVH0vJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cwotICAgIHNlZCAtaSAncyFteSAkbGlidG9vbCA9IC4qIW15ICRsaWJ0b29sID0gIiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cwotCi0gICAgc2VkIC1pICdzIV5BUFJfQ09ORklHID0gLiohQVBSX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5BUFVfQ09ORklHID0gLiohQVBVX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5pbmNsdWRlZGlyID0gLiohaW5jbHVkZWRpciA9ICR7U1RBR0lOR19JTkNESVJ9L2FwYWNoZTIhJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeQ0ZMQUdTID0gLUlbXiBdKiFDRkxBR1MgPSAtSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2whJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeRVhUUkFfTERGTEFHUyA9IC4qIUVYVFJBX0xERkxBR1MgPSAtTCR7U1RBR0lOR19MSUJESVJ9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXkVYVFJBX0lOQ0xVREVTID0gLiohRVhUUkFfSU5DTFVERVMgPSAtSSQoaW5jbHVkZWRpcikgLUkuIC1JJHtTVEFHSU5HX0lOQ0RJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyEtLXN5c3Jvb3Q9W14gXSohLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotfQotCi0jCi0jIGltcGxpY2F0aW9ucyAtIHVzZWQgYnkgdXBkYXRlLXJjLmQgc2NyaXB0cwotIwotSU5JVFNDUklQVF9OQU1FID0gImFwYWNoZTIiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA5MSAyMCIKLUxFQURfU09OQU1FID0gImxpYmFwci0xLnNvLjAiCi0KLVBBQ0tBR0VTID0gIiR7UE59LXNjcmlwdHMgJHtQTn0tZG9jICR7UE59LWRldiAke1BOfS1kYmcgJHtQTn0iCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tYWdpYyBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWltZS50eXBlcyBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59ICIKLQotIyB3ZSBvdmVycmlkZSBoZXJlIHJhdGhlciB0aGFuIGFwcGVuZCBzbyB0aGF0IC5zbyBsaW5rcyBhcmUKLSMgaW5jbHVkZWQgaW4gdGhlIHJ1bnRpbWUgcGFja2FnZSByYXRoZXIgdGhhbiBoZXJlICgtZGV2KQotIyBhbmQgdG8gZ2V0IGJ1aWxkLCBpY29ucywgZXJyb3IgaW50byB0aGUgLWRldiBwYWNrYWdlCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59L2ljb25zIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9lcnJvciBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Fwci1jb25maWcgJHtiaW5kaXJ9L2FwdS1jb25maWcgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9hcHIqLmV4cCBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5hIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXB4cyBcCi0gICAgICAgICAgICAgICAgIgotCi0KLSMgbWFudWFsIHRvIG1hbnVhbAotRklMRVNfJHtQTn0tZG9jICs9ICIgJHtkYXRhZGlyfS8ke0JQTn0vbWFudWFsIgotCi1GSUxFU18ke1BOfS1zY3JpcHRzICs9ICIke2JpbmRpcn0vZGJtbWFuYWdlIgotCi0jCi0jIG92ZXJyaWRlIHRoaXMgdG9vIC0gaGVyZSBpcyB0aGUgZGVmYXVsdCwgbGVzcyBkYXRhZGlyCi0jCi1GSUxFU18ke1BOfSA9ICAiJHtiaW5kaXJ9ICR7c2JpbmRpcn0gJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vbGliKi5zby4qICR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgICR7c2hhcmVkc3RhdGVkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0gL2JpbiAvc2JpbiAvbGliLyouc28qIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtCUE59IgotCi0jIHdlIHdhbnQgaHRkb2NzIGFuZCBjZ2ktYmluIHRvIGdvIHdpdGggdGhlIGJpbmFyeQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59L2h0ZG9jcyAke2RhdGFkaXJ9LyR7QlBOfS9jZ2ktYmluIgotCi0jbWFrZSBzdXJlIHRoZSBsb25lIC5zbyBsaW5rcyBhbHNvIGdldCB3cmFwcGVkIGluIHRoZSBiYXNlIHBhY2thZ2UKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vcGtnY29uZmlnLyoiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzLy5kZWJ1ZyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wgbGliZ2NjIgotUkRFUEVORFNfJHtQTn0tc2NyaXB0cyArPSAicGVybCAke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODgwODY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMjcuYmIKQEAgLTAsMCArMSwxOTQgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAorZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKK1NVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgorREVQRU5EUyA9ICJsaWJ0b29sLW5hdGl2ZSBhcGFjaGUyLW5hdGl2ZSBvcGVuc3NsIGV4cGF0IHBjcmUgYXByIGFwci11dGlsIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9odHRwZC9odHRwZC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3NlcnZlci1tYWtlZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuMS1jb3JlbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjQtZXhwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC4xLXNlbGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlLWNvbmZpZ3VyZV9wZXJsYmluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlcGxhY2UtbHlueC10by1jdXJsLWluLWFwYWNoZWN0bC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlLXNzbC1sdG1haW4tcnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjMtZml4LXJhY2UtaXNzdWUtb2YtZGlyLWluc3RhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLVBDUkUtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLXNlbGludXgtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZTItdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X2FwYWNoZTIgXAorICAgICAgICAgICIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGJmZjVhMmI1NDJmYTU4ODU0NDU1YmYxYTBiOTRiODMiCitTUkNfVVJJW21kNXN1bV0gPSAiOTdiNmJiZmE4M2M4NjZkYmUyMGVmMzE3ZTNhZmQxMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzFmY2MxMjgyMzhhNjkwNTE1YmQ4MTc0ZDUzMzBhNTMwOTE2MWVmMzE0YTMyNmFlNDVjN2MxNWVkMTM5YzEzYSIKKworUyA9ICIke1dPUktESVJ9L2h0dHBkLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBwa2djb25maWcgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYXBhY2hlMi5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiYXB4cyBjb25maWdfdmFycy5tayBjb25maWcubmljZSIKKworQ0ZMQUdTX2FwcGVuZCA9ICIgLURQQVRIX01BWD00MDk2IgorQ0ZMQUdTX3ByZXBlbmQgPSAiLUkke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsICIKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zc2wgXAorICAgIC0td2l0aC1zc2w9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgIC0td2l0aC1leHBhdD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXAorICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWcgXAorICAgIC0tZW5hYmxlLWluZm8gXAorICAgIC0tZW5hYmxlLXJld3JpdGUgXAorICAgIC0td2l0aC1kYm09c2RibSBcCisgICAgLS13aXRoLWJlcmtlbGV5LWRiPW5vIFwKKyAgICAtLWxvY2Fsc3RhdGVkaXI9L3Zhci8ke0JQTn0gXAorICAgIC0td2l0aC1nZGJtPW5vIFwKKyAgICAtLXdpdGgtbmRibT1ubyBcCisgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vJHtCUE59IFwKKyAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS8ke0JQTn0gXAorICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9LyR7QlBOfSBcCisgICAgLS1saWJleGVjZGlyPSR7bGliZGlyfS8ke0JQTn0vbW9kdWxlcyBcCisgICAgYXBfY3Zfdm9pZF9wdHJfbHRfbG9uZz1ubyBcCisgICAgLS1lbmFibGUtbXBtcy1zaGFyZWQgXAorICAgIGFjX2N2X2hhdmVfdGhyZWFkc2FmZV9wb2xsc2V0PW5vIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgZCl9IgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4IC0tZW5hYmxlLWxheW91dD1EZWJpYW4gLS1wcmVmaXg9JHtiYXNlX3ByZWZpeH0vLC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgsbGlic2VsaW51eCIKK1BBQ0tBR0VDT05GSUdbb3BlbmxkYXBdID0gIi0tZW5hYmxlLWxkYXAgLS1lbmFibGUtYXV0aG56LWxkYXAsLS1kaXNhYmxlLWxkYXAgLS1kaXNhYmxlLWF1dGhuei1sZGFwLG9wZW5sZGFwIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgc2VkIC1pIC1lICdzOiQnJ3twcmVmaXh9L3Vzci9saWIvY2dpLWJpbjokJyd7bGliZGlyfS9jZ2ktYmluOmcnICR7U30vY29uZmlnLmxheW91dAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBjYXQgJHtXT1JLRElSfS9pbml0IHwgXAorICAgICAgICBzZWQgLWUgJ3MsL3Vzci9zYmluLywke3NiaW5kaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyL2Jpbi8sJHtiaW5kaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyL2xpYiwke2xpYmRpcn0vLGcnIFwKKyAgICAgICAgICAgIC1lICdzLC9ldGMvLCR7c3lzY29uZmRpcn0vLGcnIFwKKyAgICAgICAgICAgIC1lICdzLC91c3IvLCR7cHJlZml4fS8sZycgPiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQorICAgIGNobW9kIDc1NSAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQorICAgICMgcmVtb3ZlIHRoZSBnb29meSBvcmlnaW5hbCBmaWxlcy4uLgorICAgIHJtIC1yZiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L29yaWdpbmFsCisgICAgIyBFeHBhdCBzaG91bGQgYmUgZm91bmQgaW4gdGhlIHN0YWdpbmcgYXJlYSB2aWEgREVQRU5EUy4uLgorICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYmV4cGF0LioKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L2NvbmYuZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZAorCisgICAgIyBFbnN1cmUgY29uZmlndXJhdGlvbiBmaWxlIHB1bGxzIGluIGNvbmYuZCBhbmQgbW9kdWxlcy5kCisgICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQvKi5jb25mIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKyAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmxvYWQiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kLyouY29uZlxuXG4iID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorICAgICMgbWF0Y2ggd2l0aCB0aGF0IGlzIGluIGluaXQgc2NyaXB0CisgICAgcHJpbnRmICJcblBpZEZpbGUgL3J1bi9odHRwZC5waWQiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorICAgICMgU2V0ICdTZXJ2ZXJOYW1lJyB0byBmaXggZXJyb3IgbWVzc2FnZXMgd2hlbiByZXN0YXJ0IGFwYWNoZSBzZXJ2aWNlCisgICAgc2VkIC1pICdzL14jU2VydmVyTmFtZSB3d3cuZXhhbXBsZS5jb20vU2VydmVyTmFtZSBsb2NhbGhvc3QvJyAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlMi12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisgICAgZWxpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDRfYXBhY2hlMiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNF9hcGFjaGUyCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYXBhY2hlMi5zZXJ2aWNlCisgICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYXBhY2hlMi5zZXJ2aWNlCisKKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQVBVX0lOQ0xVREVESVIgPSAuKixBUFVfSU5DTFVERURJUiA9ICxnJyBcCisgICAgICAgICAgIC1lICdzLEFQVV9DT05GSUcgPSAuKixBUFVfQ09ORklHID0gLGcnICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQvY29uZmlnX3ZhcnMubWsKKworICAgIHNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCisgICAgICAgICAgIC1lICdzLCIuKi9jb25maWd1cmUiLCJjb25maWd1cmUiLGcnICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQvY29uZmlnLm5pY2UKKyAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcyIKKworYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisgICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vYXB4cyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtzYmluZGlyfS8KKyAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtzYmluZGlyfS9hcGFjaGVjdGwgJHtTWVNST09UX0RFU1RESVJ9JHtzYmluZGlyfS8KKyAgICBzZWQgLWkgJ3MhbXkgJGluc3RhbGxidWlsZGRpciA9IC4qIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAiJHtTVEFHSU5HX0RJUl9IT1NUfS8ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCisgICAgc2VkIC1pICdzIW15ICRsaWJ0b29sID0gLiohbXkgJGxpYnRvb2wgPSAiJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCisKKyAgICBzZWQgLWkgJ3MhXkFQUl9DT05GSUcgPSAuKiFBUFJfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXkFQVV9DT05GSUcgPSAuKiFBUFVfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXB1LTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXmluY2x1ZGVkaXIgPSAuKiFpbmNsdWRlZGlyID0gJHtTVEFHSU5HX0lOQ0RJUn0vYXBhY2hlMiEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5DRkxBR1MgPSAtSVteIF0qIUNGTEFHUyA9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5FWFRSQV9MREZMQUdTID0gLiohRVhUUkFfTERGTEFHUyA9IC1MJHtTVEFHSU5HX0xJQkRJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeRVhUUkFfSU5DTFVERVMgPSAuKiFFWFRSQV9JTkNMVURFUyA9IC1JJChpbmNsdWRlZGlyKSAtSS4gLUkke1NUQUdJTkdfSU5DRElSfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIS0tc3lzcm9vdD1bXiBdKiEtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCit9CisKKyMKKyMgaW1wbGljYXRpb25zIC0gdXNlZCBieSB1cGRhdGUtcmMuZCBzY3JpcHRzCisjCitJTklUU0NSSVBUX05BTUUgPSAiYXBhY2hlMiIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDkxIDIwIgorTEVBRF9TT05BTUUgPSAibGliYXByLTEuc28uMCIKKworUEFDS0FHRVMgPSAiJHtQTn0tc2NyaXB0cyAke1BOfS1kb2MgJHtQTn0tZGV2ICR7UE59LWRiZyAke1BOfSIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L21hZ2ljIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9LyR7QlBOfS9taW1lLnR5cGVzIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0gIgorCisjIHdlIG92ZXJyaWRlIGhlcmUgcmF0aGVyIHRoYW4gYXBwZW5kIHNvIHRoYXQgLnNvIGxpbmtzIGFyZQorIyBpbmNsdWRlZCBpbiB0aGUgcnVudGltZSBwYWNrYWdlIHJhdGhlciB0aGFuIGhlcmUgKC1kZXYpCisjIGFuZCB0byBnZXQgYnVpbGQsIGljb25zLCBlcnJvciBpbnRvIHRoZSAtZGV2IHBhY2thZ2UKK0ZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9LyR7QlBOfS9idWlsZCBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0vaWNvbnMgXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59L2Vycm9yIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXByLWNvbmZpZyAke2JpbmRpcn0vYXB1LWNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2FwciouZXhwIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyoubGEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLmEgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hcHhzIFwKKyAgICAgICAgICAgICAgICAiCisKKworIyBtYW51YWwgdG8gbWFudWFsCitGSUxFU18ke1BOfS1kb2MgKz0gIiAke2RhdGFkaXJ9LyR7QlBOfS9tYW51YWwiCisKK0ZJTEVTXyR7UE59LXNjcmlwdHMgKz0gIiR7YmluZGlyfS9kYm1tYW5hZ2UiCisKKyMKKyMgb3ZlcnJpZGUgdGhpcyB0b28gLSBoZXJlIGlzIHRoZSBkZWZhdWx0LCBsZXNzIGRhdGFkaXIKKyMKK0ZJTEVTXyR7UE59ID0gICIke2JpbmRpcn0gJHtzYmluZGlyfSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS9saWIqLnNvLiogJHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAgJHtzaGFyZWRzdGF0ZWRpcn0gJHtsb2NhbHN0YXRlZGlyfSAvYmluIC9zYmluIC9saWIvKi5zbyogXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke0JQTn0iCisKKyMgd2Ugd2FudCBodGRvY3MgYW5kIGNnaS1iaW4gdG8gZ28gd2l0aCB0aGUgYmluYXJ5CitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8ke0JQTn0vaHRkb2NzICR7ZGF0YWRpcn0vJHtCUE59L2NnaS1iaW4iCisKKyNtYWtlIHN1cmUgdGhlIGxvbmUgLnNvIGxpbmtzIGFsc28gZ2V0IHdyYXBwZWQgaW4gdGhlIGJhc2UgcGFja2FnZQorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWIqLnNvICR7bGliZGlyfS9wa2djb25maWcvKiIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L21vZHVsZXMvLmRlYnVnIgorCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCBsaWJnY2MiCitSREVQRU5EU18ke1BOfS1zY3JpcHRzICs9ICJwZXJsICR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vY2dpLWJpbiIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9maWxlcy92b2xhdGlsZXMuMDRfYXBhY2hlMiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2ZpbGVzL3ZvbGF0aWxlcy4wNF9hcGFjaGUyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMjA3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9maWxlcy92b2xhdGlsZXMuMDRfYXBhY2hlMgpAQCAtMCwwICsxLDMgQEAKKyMgPHR5cGU+IDxvd25lcj4gPGdyb3VwPiA8bW9kZT4gPHBhdGg+IDxsaW5rc291cmNlPgorZCByb290IHJvb3QgMDc1NSAvdmFyL3J1bi9hcGFjaGUyIG5vbmUKK2Qgcm9vdCByb290IDA3NTUgL3Zhci9sb2cvYXBhY2hlMiBub25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWUvMDAwMS1jb25maWd1cmUuYWMtQWRkLWZvcmVpZ24tdG8tQU1fSU5JVF9BVVRPTUFLRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZS8wMDAxLWNvbmZpZ3VyZS5hYy1BZGQtZm9yZWlnbi10by1BTV9JTklUX0FVVE9NQUtFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYmU3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWUvMDAwMS1jb25maWd1cmUuYWMtQWRkLWZvcmVpZ24tdG8tQU1fSU5JVF9BVVRPTUFLRS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDQ1OTFiNWI0MGQ2NmMxOWVkYzczYjk1MWFkMDkxZGFjNjM5NDU0YzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNSBKdWwgMjAxNyAxNjowMDozNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IEFkZCBmb3JlaWduIHRvIEFNX0lOSVRfQVVUT01BS0UKKworRml4ZXMgZXJyb3JzIGxpa2UKK3wgTWFrZWZpbGUuYW06IGVycm9yOiByZXF1aXJlZCBmaWxlICcuL1JFQURNRScgbm90IGZvdW5kCit8IE1ha2VmaWxlLmFtOiBlcnJvcjogcmVxdWlyZWQgZmlsZSAnLi9DaGFuZ2VMb2cnIG5vdCBmb3VuZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkNjI5OGYyNy4uOThjYWI3OTEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMyLDcgKzMyLDcgQEAgZG5sIEluaXQgYXV0b2NvbmYgYW5kIGF1dG9tYWtlCisgQUNfSU5JVChbY2hlcm9rZWVdLCBbY2hlcm9rZWVfdmVyc2lvbl0sIFtodHRwOi8vYnVncy5jaGVyb2tlZS1wcm9qZWN0LmNvbS9dLCBbY2hlcm9rZWVdKQorIEFDX0NPTkZJR19TUkNESVIoW2NoZXJva2VlL3NlcnZlci5jXSkKKyBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCistQU1fSU5JVF9BVVRPTUFLRShbbm8tZGVmaW5lXSkKKytBTV9JTklUX0FVVE9NQUtFKFtuby1kZWZpbmUgZm9yZWlnbl0pCisgCisgZG5sIERlZmluZSB2ZXJzaW9uCisgQUNfREVGSU5FKFBBQ0tBR0VfTUFKT1JfVkVSU0lPTiwgImNoZXJva2VlX21ham9yX3ZlcnNpb24iLCBbVmVyc2lvbiBzdHJpbmddKQorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlLzAwMDEtbWFrZS1Eby1ub3QtYnVpbGQtcG8tZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWUvMDAwMS1tYWtlLURvLW5vdC1idWlsZC1wby1maWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGMwYjZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlLzAwMDEtbWFrZS1Eby1ub3QtYnVpbGQtcG8tZmlsZXMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBlOWFlMzIzMWVjMTg4ZGY4MDFmZTUxYWE5NWQ2YWZlYzJlNTJkYjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjUgSnVsIDIwMTcgMTY6MTQ6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZTogRG8gbm90IGJ1aWxkIHBvIGZpbGVzCisKK1RhcmdldCBmYWlscyB0byBidWlsZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBmMDEyNzhjMy4uZWI4NjRjMzYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0xLDYgKzEsNiBAQAorICMjIENoZXJva2VlOiBNYWtlZmlsZS5hbSAgLSotIG1ha2VmaWxlIC0qLQorIAorLVNVQkRJUlMgPSBwbyBtNCB3d3cgaWNvbnMgdGhlbWVzIHFhIGRvYyAuIGFkbWluIGNvbnRyaWIgY2hlcm9rZWUgY2dldCBwYWNrYWdlcyBkYnNsYXllcgorK1NVQkRJUlMgPSBtNCB3d3cgaWNvbnMgdGhlbWVzIHFhIGRvYyAuIGFkbWluIGNvbnRyaWIgY2hlcm9rZWUgY2dldCBwYWNrYWdlcyBkYnNsYXllcgorIFNVRkZJWEVTID0gLnNhbXBsZS5wcmUgLnNhbXBsZSAuaC5wcmUgLmggLnhtbC5wcmUgLnhtbAorIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00CisgCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWVfMS4yLjk4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlXzEuMi45OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEzOWY5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWVfMS4yLjk4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotU1VNTUFSWSA9ICJDaGVyb2tlZSBXZWIgU2VydmVyIGZhc3QgYW5kIHNlY3VyZSIKLVNVTU1BUllfY2dldCA9ICJTbWFsbCBkb3dubG9hZGVyIGJhc2VkIGluIHRoZSBDaGVyb2tlZSBjbGllbnQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuY2hlcm9rZWUtcHJvamVjdC5jb20vIgotU0VDVElPTiA9ICJuZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1QUiA9ICJyOSIKLQotREVQRU5EUyA9ICJsaWJwY3JlIG9wZW5zc2wgbXlzcWw1ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL21pcnJvci5hYXJuZXQuZWR1LmF1L3B1Yi8ke0JQTn0vMS4yLyR7UFZ9LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jaGVyb2tlZS5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2NoZXJva2VlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vY2hlcm9rZWUtaW5zdGFsbC1jb25maWd1cmVkLnB5LW9uY2UucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjIxYjAxZTdkNDVjMGU4MmVjYzBjNDI1N2E5YzI3ZmViIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA0MmI1Njg3YjFhM2RiM2NhODE4MTY3NTQ4Y2U1ZDMyYzM1ZTIyN2M2NjQwNzMyZGNiNjIyYTZmNGEwNzhiN2QiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZmZtcGVnXSA9ICItLXdpdGgtZmZtcGVnLC0td2l0aG91dC1mZm1wZWcsbGliYXYiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tnZW9pcF0gPSAiLS13aXRoLWdlb2lwLC0td2l0aG91dC1nZW9pcCxnZW9pcCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc3RhdGljIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmxzIFwKLSAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbScsICctLWRpc2FibGUtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAgIC0td2l0aC13d3dyb290PSR7bG9jYWxzdGF0ZWRpcn0vd3d3L2NoZXJva2VlIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2NoZXJva2VlLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NoZXJva2VlCi0KLSAgICAjIGNsZWFuIHVwIC5sYSBmaWxlcyBmb3IgcGx1Z2lucwotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hlcm9rZWUvKi5sYQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2NoZXJva2VlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLX0KLQotIyBQdXQgLWRldiBuZWFyIHRoZSBmcm9udCBzbyB3ZSBjYW4gbW92ZSB0aGUgLmxhIGZpbGVzIGludG8gaXQgd2l0aCBhIHdpbGRjYXJkCi1QQUNLQUdFUyA9KyAibGliY2hlcm9rZWUtc2VydmVyIGxpYmNoZXJva2VlLWNsaWVudCBsaWJjaGVyb2tlZS1iYXNlIGNnZXQiCi0KLUZJTEVTX2NnZXQgPSAiJHtiaW5kaXJ9L2NnZXQiCi1GSUxFU19saWJjaGVyb2tlZS1zZXJ2ZXIgPSAiJHtsaWJkaXJ9L2xpYmNoZXJva2VlLXNlcnZlciR7U09MSUJTfSIKLUZJTEVTX2xpYmNoZXJva2VlLWNsaWVudCA9ICIke2xpYmRpcn0vbGliY2hlcm9rZWUtY2xpZW50JHtTT0xJQlN9IgotRklMRVNfbGliY2hlcm9rZWUtYmFzZSA9ICIke2xpYmRpcn0vbGliY2hlcm9rZWUtYmFzZSR7U09MSUJTfSIKLQotIyBQYWNrIHRoZSBodGRvY3MKLUZJTEVTXyR7UE59ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L3d3dy9jaGVyb2tlZSIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9jaGVyb2tlZS9jaGVyb2tlZS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9jaGVyb2tlZSBcCi0iCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjaGVyb2tlZSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDkxIDkxIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNoZXJva2VlLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjdlYWU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlX2dpdC5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gIkNoZXJva2VlIFdlYiBTZXJ2ZXIgZmFzdCBhbmQgc2VjdXJlIgorU1VNTUFSWV9jZ2V0ID0gIlNtYWxsIGRvd25sb2FkZXIgYmFzZWQgaW4gdGhlIENoZXJva2VlIGNsaWVudCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaGVyb2tlZS1wcm9qZWN0LmNvbS8iCitTRUNUSU9OID0gIm5ldHdvcmsiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK0RFUEVORFMgPSAidW56aXAtbmF0aXZlIGxpYnBjcmUgb3BlbnNzbCBteXNxbDUgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKKworU1JDUkVWID0gIjc1ZjA0MWUyMjU1ZTZkZDA2OTJkYjJmMTQ2MTFjMjY0N2RiZTg0MjUiCitQViA9ICIxLjIuMTA0K2dpdCR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NoZXJva2VlL3dlYnNlcnZlciBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVyb2tlZS5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2NoZXJva2VlLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vY2hlcm9rZWUtaW5zdGFsbC1jb25maWd1cmVkLnB5LW9uY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWRkLWZvcmVpZ24tdG8tQU1fSU5JVF9BVVRPTUFLRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2UtRG8tbm90LWJ1aWxkLXBvLWZpbGVzLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBiaW5jb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZCBweXRob25uYXRpdmUKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2ZmbXBlZ10gPSAiLS13aXRoLWZmbXBlZywtLXdpdGhvdXQtZmZtcGVnLGxpYmF2IgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbZ2VvaXBdID0gIi0td2l0aC1nZW9pcCwtLXdpdGhvdXQtZ2VvaXAsZ2VvaXAiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXN0YXRpYyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5scyBcCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSBcCisgICAgICAgICAgICAgICAtLXdpdGgtd3d3cm9vdD0ke2xvY2Fsc3RhdGVkaXJ9L3d3dy9jaGVyb2tlZSBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9jaGVyb2tlZS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jaGVyb2tlZQorCisgICAgIyBjbGVhbiB1cCAubGEgZmlsZXMgZm9yIHBsdWdpbnMKKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2NoZXJva2VlLyoubGEKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jaGVyb2tlZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCit9CisKKyMgUHV0IC1kZXYgbmVhciB0aGUgZnJvbnQgc28gd2UgY2FuIG1vdmUgdGhlIC5sYSBmaWxlcyBpbnRvIGl0IHdpdGggYSB3aWxkY2FyZAorUEFDS0FHRVMgPSsgImxpYmNoZXJva2VlLXNlcnZlciBsaWJjaGVyb2tlZS1jbGllbnQgbGliY2hlcm9rZWUtYmFzZSBjZ2V0IgorCitGSUxFU19jZ2V0ID0gIiR7YmluZGlyfS9jZ2V0IgorRklMRVNfbGliY2hlcm9rZWUtc2VydmVyID0gIiR7bGliZGlyfS9saWJjaGVyb2tlZS1zZXJ2ZXIke1NPTElCU30iCitGSUxFU19saWJjaGVyb2tlZS1jbGllbnQgPSAiJHtsaWJkaXJ9L2xpYmNoZXJva2VlLWNsaWVudCR7U09MSUJTfSIKK0ZJTEVTX2xpYmNoZXJva2VlLWJhc2UgPSAiJHtsaWJkaXJ9L2xpYmNoZXJva2VlLWJhc2Uke1NPTElCU30iCisKKyMgUGFjayB0aGUgaHRkb2NzCitGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS93d3cvY2hlcm9rZWUiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vY2hlcm9rZWUvY2hlcm9rZWUuY29uZiBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvY2hlcm9rZWUgXAorIgorCitJTklUU0NSSVBUX05BTUUgPSAiY2hlcm9rZWUiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA5MSA5MSIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjaGVyb2tlZS5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKaW5kZXggZjk4ZjI5OS4uNGE5N2UyNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jCkBAIC05LDcgKzksNyBAQAogCiBTRUNUSU9OID0gIm5ldCIKIAotREVQRU5EUyA9ICJsaWJwY3JlIGd6aXAgb3BlbnNzbCIKK0RFUEVORFMgPSAibGlicGNyZSB6bGliIG9wZW5zc2wiCiAKIFNSQ19VUkkgPSAiIFwKICAgICBodHRwOi8vbmdpbngub3JnL2Rvd25sb2FkL25naW54LSR7UFZ9LnRhci5neiBcCkBAIC03Miw3ICs3Miw3IEBACiAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKICAgICAtLXdpdGgtaHR0cF9zc2xfbW9kdWxlIFwKICAgICAtLXdpdGgtaHR0cF9nemlwX3N0YXRpY19tb2R1bGUgXAotICAgICR7RVhUUkFfT0VDT05GfQorICAgICR7RVhUUkFfT0VDT05GfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9CiB9CiAKIGRvX2luc3RhbGwgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTAuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MmZkNGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBuZ2lueC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGJiNThlZDBkZmQ0ZjVkYmVjZTNiNTJhYmE3OWYwMjMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMDRhMjBjYjRmMGIwYzlkYjc0NmM2MzBkODlmZjRlYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTAyMGYxMzY0Y2FjNDU5Y2I3MzNjNGUxY2FlZDJkMDAzNzZlNDBlYTA1NTg4ZmI4NzkzMDc2YTRjNjlkZDkwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc1NjVmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgbmdpbnguaW5jCi0KLSMgMS4xMC54IGJyYW5jaCBpcyB0aGUgY3VycmVudCBzdGFibGUgYnJhbmNoLCB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdAotIyAxLjExLnggaXMgdGhlIGN1cnJlbnQgbWFpbmxpbmUgYnJhbmNoZXMgY29udGFpbmluZyBhbGwgbmV3IGZlYXR1cmVzCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkwMzc1M2RlNWY4NmExZWUwMzQxZmQyZjk0OTFiMjgyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmZiMTBmNTc5MDU1ZDI3YTIyNDBkNTFjN2Q4NWMxOTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzc4YjNjYWJiMDc2MzNmNzU0Y2Q5ZGVlMzJmYzhlMjI1ODJiY2UyMmJmYTQwN2JlNzZhODA2YWJkOTM1NTMzZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMGUzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xMi4xLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBuZ2lueC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTAzNzUzZGU1Zjg2YTFlZTAzNDFmZDJmOTQ5MWIyODIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMzA3ZTc0YWNhOTU0MDNlNWVlMDBmMTUzODA3Y2U1OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzkzYmY0MjY0ODVhMzBmOTEwMjFiNmI5NDVhOWZkOGE4NGQ4N2QxN2I1NjY1NjJjMzc5N2FiYThmYWM3NmZiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTMuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEzLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYyYzExNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEzLjUuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBuZ2lueC5pbmMKKworIyAxLjEyLnggYnJhbmNoIGlzIHRoZSBjdXJyZW50IHN0YWJsZSBicmFuY2gsIHRoZSByZWNvbW1lbmRlZCBkZWZhdWx0CisjIDEuMTMueCBpcyB0aGUgY3VycmVudCBtYWlubGluZSBicmFuY2hlcyBjb250YWluaW5nIGFsbCBuZXcgZmVhdHVyZXMKK0RFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTAzNzUzZGU1Zjg2YTFlZTAzNDFmZDJmOTQ5MWIyODIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMTkzNzIyMTU5YWRmYjFlYjgxMTdjMDQ5MWZkMTdlYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZTc1Yjk0NDI5YjNmNzQ1Mzc3YWViYTNhZmY5N2RhNzdiZjJiMDNmY2I5ZmYxNWIzYmFkOWIwMzhkYjI5ZjJlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL3N0aHR0cGQvc3RodHRwZF8yLjI3LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvc3RodHRwZC9zdGh0dHBkXzIuMjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEyNWIyNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvc3RodHRwZC9zdGh0dHBkXzIuMjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzaW1wbGUsIHNtYWxsLCBwb3J0YWJsZSwgZmFzdCwgYW5kIHNlY3VyZSBIVFRQIHNlcnZlciIKLURFU0NSSVBUSU9OID0gIkEgc2ltcGxlLCBzbWFsbCwgcG9ydGFibGUsIGZhc3QsIGFuZCBzZWN1cmUgSFRUUCBzZXJ2ZXIgKHN1cHBvcnRlZCBmb3JrIG9mIHRodHRwZCkuIgotSE9NRVBBR0UgPSAiaHR0cDovL29wZW5zb3VyY2UuZHljLmVkdS9zdGh0dHBkIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvdGh0dHBkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MGM1NzYyYzJjMzRkY2JlOWViMTg4MTU1MTY1MDI4NzIiCi0KLURFUEVORFMgKz0gImJhc2UtcGFzc3dkIgotCi1TUkNfVVJJID0gImh0dHA6Ly9vcGVuc291cmNlLmR5Yy5lZHUvcHViL3N0aHR0cGQvc3RodHRwZC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdGh0dHBkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdGh0dHBkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCIKLQotU1JDX1VSSVttZDVzdW1dID0gImY3ZGQyZDUwNmRjNWZhZDJhZDg3OTRiMTgwMGQyNjM0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3ZDY2MGE4ODEzMzFlOTM4MThlODcyY2UxMTUzNmY0NjExMDVkNzBhMThkZmM1ZGU1ODk1ODUxYzRiMmFmZGIiCi0KLVMgPSAiJHtXT1JLRElSfS9zdGh0dHBkLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLVNSVl9ESVIgPz0gIiR7c2VydmljZWRpcn0vd3d3IgotCi0jIE5vdGUgdGhhdCBgJHtzYmluZGlyfS9tYWtld2ViJyBpcyBpbnN0YWxsZWQgc2V0Z2lkIHRvIHRoaXMgZ3JvdXAsCi0jIGJ1dCAke1NSVl9ESVJ9IGlzIG5vdCBpbnN0YWxsZWQgY2hncnAnZCB0byB0aGUgZ3JvdXAgYnkgZGVmYXVsdC4KLVdFQkdST1VQID89ICJ3d3ctZGF0YSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIGV4cG9ydCBXRUJESVI9JHtTUlZfRElSfQotICAgIGV4cG9ydCBXRUJHUk9VUD0ke1dFQkdST1VQfQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1jIC1tIDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3RodHRwZAotICAgIGluc3RhbGwgLWMgLW0gNzU1ICR7V09SS0RJUn0vdGh0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBzZWQgLWkgLWUgJ3MsQEBDT05GRklMRSwke3N5c2NvbmZkaXJ9L3RodHRwZC5jb25mLGcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC90aHR0cGQKLSAgICBzZWQgLWkgLWUgJ3MsQEBTUlZESVIsJHtTUlZfRElSfSxnJyAke0R9JHtzeXNjb25mZGlyfS90aHR0cGQuY29uZgotICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC90aHR0cGQKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90aHR0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3RodHRwZC5zZXJ2aWNlCi0gICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3RodHRwZC5zZXJ2aWNlCi0gICAgc2VkIC1pIC1lICdzLEBAQ09ORkZJTEUsJHtzeXNjb25mZGlyfS90aHR0cGQuY29uZixnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS90aHR0cGQuc2VydmljZQotfQotCi1JTklUU0NSSVBUX05BTUUgPSAidGh0dHBkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ0aHR0cGQuc2VydmljZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7U1JWX0RJUn0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7U1JWX0RJUn0vY2dpLWJpbi8uZGVidWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvc3RodHRwZC9zdGh0dHBkXzIuMjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9zdGh0dHBkL3N0aHR0cGRfMi4yNy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZmU1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvc3RodHRwZC9zdGh0dHBkXzIuMjcuMS5iYgpAQCAtMCwwICsxLDUzIEBACitTVU1NQVJZID0gIkEgc2ltcGxlLCBzbWFsbCwgcG9ydGFibGUsIGZhc3QsIGFuZCBzZWN1cmUgSFRUUCBzZXJ2ZXIiCitERVNDUklQVElPTiA9ICJBIHNpbXBsZSwgc21hbGwsIHBvcnRhYmxlLCBmYXN0LCBhbmQgc2VjdXJlIEhUVFAgc2VydmVyIChzdXBwb3J0ZWQgZm9yayBvZiB0aHR0cGQpLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9vcGVuc291cmNlLmR5Yy5lZHUvc3RodHRwZCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3RodHRwZC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTBjNTc2MmMyYzM0ZGNiZTllYjE4ODE1NTE2NTAyODcyIgorCitERVBFTkRTICs9ICJiYXNlLXBhc3N3ZCIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmx1ZW5lc3MvJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly90aHR0cGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly90aHR0cGQuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2NkYTFiNmM4Yzg1NDJiMTUxMGVhZGI4ZTU0MGQ4YjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTFlZTI4MDY0MzJlYWY1YjVkZDI2N2EwNTIzNzAxZjlmMWZhMDBmZWZkNDk5ZDViZWM0MjE2NWE0MWUwNTg0NiIKKworUyA9ICIke1dPUktESVJ9L3N0aHR0cGQtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworU1JWX0RJUiA/PSAiJHtzZXJ2aWNlZGlyfS93d3ciCisKKyMgTm90ZSB0aGF0IGAke3NiaW5kaXJ9L21ha2V3ZWInIGlzIGluc3RhbGxlZCBzZXRnaWQgdG8gdGhpcyBncm91cCwKKyMgYnV0ICR7U1JWX0RJUn0gaXMgbm90IGluc3RhbGxlZCBjaGdycCdkIHRvIHRoZSBncm91cCBieSBkZWZhdWx0LgorV0VCR1JPVVAgPz0gInd3dy1kYXRhIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgZXhwb3J0IFdFQkRJUj0ke1NSVl9ESVJ9CisgICAgZXhwb3J0IFdFQkdST1VQPSR7V0VCR1JPVVB9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLWMgLW0gNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdGh0dHBkCisgICAgaW5zdGFsbCAtYyAtbSA3NTUgJHtXT1JLRElSfS90aHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfQorICAgIHNlZCAtaSAtZSAncyxAQENPTkZGSUxFLCR7c3lzY29uZmRpcn0vdGh0dHBkLmNvbmYsZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3RodHRwZAorICAgIHNlZCAtaSAtZSAncyxAQFNSVkRJUiwke1NSVl9ESVJ9LGcnICR7RH0ke3N5c2NvbmZkaXJ9L3RodHRwZC5jb25mCisgICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3RodHRwZAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdGh0dHBkLnNlcnZpY2UKKyAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vdGh0dHBkLnNlcnZpY2UKKyAgICBzZWQgLWkgLWUgJ3MsQEBDT05GRklMRSwke3N5c2NvbmZkaXJ9L3RodHRwZC5jb25mLGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3RodHRwZC5zZXJ2aWNlCit9CisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJ0aHR0cGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInRodHRwZC5zZXJ2aWNlIgorCitGSUxFU18ke1BOfSArPSAiJHtTUlZfRElSfSIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtTUlZfRElSfS9jZ2ktYmluLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuNi4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxODcyYWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC42LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIldlYi1iYXNlZCBNeVNRTCBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBocG15YWRtaW4ubmV0IgotIyBNYWluIGNvZGUgaXMgR1BMdjIsIGxpYnJhcmllcy90Y3BkZiBpcyB1bmRlciBMR1BMdjMsIGpzL2pxdWVyeSBpcyB1bmRlciBNSVQKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJyYXJpZXMvdGNwZGYvTElDRU5TRS5UWFQ7bWQ1PTVjODdiNjZhNTM1OGViY2M0OTViMDNlMGFmY2QzNDJjIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucGhwbXlhZG1pbi5uZXQvcGhwTXlBZG1pbi8ke1BWfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMudGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS5jb25mIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUzYzdhNmE1NzdkMTBkZTA0YTVkZDIxYTA1MDE4NTQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0M2JhZDM4YTk1ZjIxYmIwMTViZGI3OGM5YzA2N2UwZWE3NTEwYzFiMzVkNGI4ZTc1N2NiODljNDEzZTNiYWMiCi0KLVMgPSAiJHtXT1JLRElSfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0KLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgIyBEb24ndCBpbnN0YWxsIHBhdGNoZXMgdG8gdGFyZ2V0Ci0gICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9wYXRjaGVzCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwbXlhZG1pbi5jb25mCi0KLSAgICAjIFJlbW92ZSBhIGZldyBzY3JpcHRzIHRoYXQgZXhwbGljaXRseSByZXF1aXJlIGJhc2ggKCEpCi0gICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vcGhwbXlhZG1pbi9saWJyYXJpZXMvdHJhbnNmb3JtYXRpb25zLyouc2gKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjcuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuNy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MmRiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjcuNi5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIldlYi1iYXNlZCBNeVNRTCBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBocG15YWRtaW4ubmV0IgorIyBNYWluIGNvZGUgaXMgR1BMdjIsIHZlbmRvci90ZWNuaWNrY29tL3RjcGRmIGlzIHVuZGVyIExHUEx2MywganMvanF1ZXJ5IGlzIHVuZGVyIE1JVAorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3ZlbmRvci90ZWNuaWNrY29tL3RjcGRmL0xJQ0VOU0UuVFhUO21kNT01Yzg3YjY2YTUzNThlYmNjNDk1YjAzZTBhZmNkMzQyYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcy9qcXVlcnkvTUlULUxJQ0VOU0UudHh0O21kNT1lNDNhYTQzN2E2YTFiYTQyMTY1M2JkNTAzNDMzM2JmOSBcCisiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5waHBteWFkbWluLm5ldC9waHBNeUFkbWluLyR7UFZ9L3BocE15QWRtaW4tJHtQVn0tYWxsLWxhbmd1YWdlcy50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlLmNvbmYgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTlhZWMwNWQ0NGM2OGI0YWM1ZTQ5ODcxMThkNzBjZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZhYjZiOTIzMzYzODY2NDZiYmIxODlkNTU4MTc3OTk0ODdiNWMyN2IwNmNhYjBjZGZkY2FiM2M4OGY1OTg4ZiIKKworUyA9ICIke1dPUktESVJ9L3BocE15QWRtaW4tJHtQVn0tYWxsLWxhbmd1YWdlcyIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KKyAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAqICR7RH0ke2RhdGFkaXJ9LyR7QlBOfQorICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KKyAgICAjIERvbid0IGluc3RhbGwgcGF0Y2hlcyB0byB0YXJnZXQKKyAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L3BhdGNoZXMKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZC9waHBteWFkbWluLmNvbmYKKworICAgICMgUmVtb3ZlIGEgZmV3IHNjcmlwdHMgdGhhdCBleHBsaWNpdGx5IHJlcXVpcmUgYmFzaCAoISkKKyAgICBybSAtZiAke0R9JHtkYXRhZGlyfS9waHBteWFkbWluL2xpYnJhcmllcy90cmFuc2Zvcm1hdGlvbnMvKi5zaAorfQorCitGSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGEvMDAwMS1Db3JyZWN0LVRpbWVvdXQtaXNzdWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhLzAwMDEtQ29ycmVjdC1UaW1lb3V0LWlzc3VlLnBhdGNoCmluZGV4IGQ1NTI5YTIuLmFiZWEwZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGEvMDAwMS1Db3JyZWN0LVRpbWVvdXQtaXNzdWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YS8wMDAxLUNvcnJlY3QtVGltZW91dC1pc3N1ZS5wYXRjaApAQCAtMSwxOSArMSwyMSBAQAotZGlmZiAtLWdpdCBhL3BsdWdpbnMuZC9jaGFydHMuZC5wbHVnaW4gYi9wbHVnaW5zLmQvY2hhcnRzLmQucGx1Z2luCi1pbmRleCA0MGMwMzU2Li5iY2E1N2IzIDEwMDc1NQotLS0tIGEvcGx1Z2lucy5kL2NoYXJ0cy5kLnBsdWdpbgotKysrIGIvcGx1Z2lucy5kL2NoYXJ0cy5kLnBsdWdpbgotQEAgLTE4NCwxMCArMTg0LDEwIEBAIGZpCi0gIyB0aW1lb3V0IGNvbW1hbmQgd2UgdXNlLCBwcm92aWRpbmcgYSBmdW5jdGlvbiB0aGF0Ci0gIyBjYW4gZW11bGF0ZSB0aGUgdGltZW91dCBjb21tYW5kIHdlIG5lZWQ6Ci0gIyA+IHRpbWVvdXQgU0VDT05EUyBjb21tYW5kIC4uLgorSW5kZXg6IGdpdC9wbHVnaW5zLmQvY2hhcnRzLmQucGx1Z2luCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvcGx1Z2lucy5kL2NoYXJ0cy5kLnBsdWdpbgorKysrIGdpdC9wbHVnaW5zLmQvY2hhcnRzLmQucGx1Z2luCitAQCAtMjQ2LDE2ICsyNDYsNiBAQCBlbHNlCisgICAgIGluZm8gImNvbmZpZ3VyYXRpb24gZmlsZSAnJG15Y29uZmlnJyBub3QgZm91bmQuIFVzaW5nIGRlZmF1bHRzLiIKKyBmaQorIAorLSMgd2UgY2hlY2sgZm9yIHRoZSB0aW1lb3V0IGNvbW1hbmQsIGFmdGVyIHdlIGxvYWQgb3VyCistIyBjb25maWd1cmF0aW9uLCBzbyB0aGF0IHRoZSB1c2VyIG1heSBvdmVyd3JpdGUgdGhlCistIyB0aW1lb3V0IGNvbW1hbmQgd2UgdXNlLCBwcm92aWRpbmcgYSBmdW5jdGlvbiB0aGF0CistIyBjYW4gZW11bGF0ZSB0aGUgdGltZW91dCBjb21tYW5kIHdlIG5lZWQ6CistIyA+IHRpbWVvdXQgU0VDT05EUyBjb21tYW5kIC4uLgogLWlmIFsgJGNoZWNrX2Zvcl90aW1lb3V0IC1lcSAxIF0KLS0JdGhlbgotLQlyZXF1aXJlX2NtZCB0aW1lb3V0IHx8IGV4aXQgMQorLSAgICB0aGVuCistICAgIHJlcXVpcmVfY21kIHRpbWVvdXQgfHwgZXhpdCAxCiAtZmkKLSsjaWYgWyAkY2hlY2tfZm9yX3RpbWVvdXQgLWVxIDEgXQotKyMJdGhlbgotKyMJcmVxdWlyZV9jbWQgdGltZW91dCB8fCBleGl0IDEKLSsjZmkKLQorLQogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAjIGludGVybmFsIGNoZWNrcworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YS8wMDAxLW1ha2VmaWxlLURvLW5vdC1idWlsZC1jb250cmliLWRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGEvMDAwMS1tYWtlZmlsZS1Eby1ub3QtYnVpbGQtY29udHJpYi1kaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWEzYTRhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGEvMDAwMS1tYWtlZmlsZS1Eby1ub3QtYnVpbGQtY29udHJpYi1kaXIucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA4N2Y4Njg5MThhOWFlMWRjZjkzZTAxZjNlMTc3ZDE4NWMxOWExNDlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMTQ6MzI6MDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZWZpbGU6IERvIG5vdCBidWlsZCBjb250cmliIGRpcgorCitJdCBjb250YWlucyBkZWJpYW4gYnVpbGQgaXRlYW1zIGFueXdheQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggM2NjZjgyZjguLmE4NTJlNTI5IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNTIsNyArNTIsNiBAQCBTVUJESVJTID0gXAorIAlzcmMgXAorIAlzeXN0ZW0gXAorIAl3ZWIgXAorLQljb250cmliIFwKKyAJJChOVUxMKQorIAorIGRpc3Rfbm9pbnN0X0RBVEE9IFwKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGFfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YV9naXQuYmIKaW5kZXggZGUxNDA2NC4uMTAwMzY2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YV9naXQuYmIKQEAgLTEsMTEgKzEsMTUgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9maXJlaG9sL25ldGRhdGEvIgogU1VNTUFSWSA9ICJSZWFsLXRpbWUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyIKIExJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT03NDdhZmUwNzBlYTlkNmMyYmUwYTMxMzUzNjA5YTM1YiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWE0YTNiNjUwZWEzZjc0MjY5Y2RmZDQ1YTM1NTBlMjE5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maXJlaG9sL25ldGRhdGEuZ2l0O3Byb3RvY29sPWh0dHBzIgotU1JDUkVWID0gIjM2YzEzMDRlMzcwOTQxNzRlYTUxMDAxOTAzMDU4ZTY1MDUzMTA3Y2EiCi1QViA9ICIxLjAuMStnaXQke1NSQ1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maXJlaG9sL25ldGRhdGEuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWZpbGUtRG8tbm90LWJ1aWxkLWNvbnRyaWItZGlyLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICJmNWZhMzQ2YTE4OGU5MDZhOGYyY2NlM2MyY2YzMmE4OGNlODFjNjY2IgorUFYgPSAiMS42LjArZ2l0JHtTUkNQVn0iCiAKICMgcGF0Y2ggdG8gZGlzYWJsZSB0aW1lb3V0IGJlY2F1c2UgdGltZW91dCBhcmUgbm90IGF2YWlsYWJsZSB3aXRoIGFjdHVhbCB2ZXJzaW9uCiAjIG9mIGNvcmUtdXRpbHMKQEAgLTE5LDcgKzIzLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotREVQRU5EUyArPSAiemxpYiIKK0RFUEVORFMgKz0gInpsaWIgdXRpbC1saW51eCIKIAogaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIHVzZXJhZGQgc3lzdGVtZAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL2ZpbGVzL3dlYm1pbi5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy93ZWJtaW4uc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2NmNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi9maWxlcy93ZWJtaW4uc2VydmljZQpAQCAtMCwwICsxLDE1IEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVdlYm1pbiBBZG1pbiBUb29sCitSZXF1aXJlcz1sb2NhbC1mcy50YXJnZXQKK0FmdGVyPWJhc2ljLnRhcmdldAorQ29uZmxpY3RzPXNodXRkb3duLnRhcmdldAorCitbU2VydmljZV0KK1R5cGU9b25lc2hvdAorUmVtYWluQWZ0ZXJFeGl0PXllcworRXhlY1N0YXJ0PUBTWVNDT05GRElSQC93ZWJtaW4vc3RhcnQKK0V4ZWNTdG9wPUBTWVNDT05GRElSQC93ZWJtaW4vc3RvcAorRXhlY1JlbG9hZD1AU1lTQ09ORkRJUkAvd2VibWluL3JlbG9hZAorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL3dlYm1pbl8xLjgwMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vd2VibWluXzEuODAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTZjMGYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi93ZWJtaW4vd2VibWluXzEuODAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViLWJhc2VkIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2VibWluLmNvbSIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9MDM3M2FjOWY2MTFlNTQyZGRlYmUxZWM2Mzk0YWZjM2MiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3dlYmFkbWluL3dlYm1pbi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc2V0dXAuc2ggXAotICAgICAgICAgICBmaWxlOi8vaW5pdC1leGNsdWRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25ldC1nZW5lcmljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zdGFydHVwLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLXZlcnNpb24tY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmZzLWV4cG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9leHBvcnRzLWxpYi5wbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3VudC1leGNsdWRlZnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2FtYmEtY29uZmlnLWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wcm9mdHBkLWNvbmZpZy1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmV0LWxpYi5wbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tZWRpYS10b21iLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1weXRob24yLjMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXlzcWwtY29uZmlnLWZpeC5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MWQwNWI0ZTMxYWQxYmQxNGJhYjE0ZTBmMTU1YzA4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZDQ3N2VkYjQxZGMxYTkwMDQ0OGFmYzhiNTUyOGUxMzZiMzc3OGQyZDMwM2YyM2JjNTY0YWZiOTc1ZWI1YmVkIgotCi1pbmhlcml0IHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQKLQotZG9fY29uZmlndXJlKCkgewotICAgICMgUmVtb3ZlIGJpbmFyaWVzIGFuZCBwbHVnaW5zIGZvciBvdGhlciBwbGF0Zm9ybXMKLSAgICBybSAtcmYgYWNsL0F1dGhlbi1Tb2xhcmlzUkJBQy0wLjEqCi0gICAgcm0gLXJmIGZvcm1hdCBic2RleHBvcnRzIGhwdXhleHBvcnRzIHNnaWV4cG9ydHMKLSAgICBybSAtcmYgem9uZXMgcmJhYyBzbWYgaXBmdyBpcGZpbHRlciBkZnNhZG1pbgotICAgIHJtIC1mIG1vdW50L2ZyZWVic2QtbW91bnRzKiBtb3VudC9uZXRic2QtbW91bnRzKgotICAgIHJtIC1mIG1vdW50L29wZW5ic2QtbW91bnRzKiBtb3VudC9tYWNvcy1tb3VudHMqCi0KLSAgICAjIFJlbW92ZSBzb21lIHBsdWdpbnMgZm9yIHRoZSBtb21lbnQKLSAgICBybSAtcmYgbGlsbyBmcm94IHd1ZnRwZCB0ZWxuZXQgcHNlcnZlciBjcGFuIHNob3Jld2FsbCB3ZWJhbGl6ZXIgY2ZlbmdpbmUgZnNkdW1wIHBhcAotICAgIHJtIC1yZiBtYWpvcmRvbW8gZmV0Y2htYWlsIHNlbmRtYWlsIG1haWxib3hlcyBwcm9jbWFpbCBmaWx0ZXIgbWFpbGNhcCBkb3ZlY290IGV4aW0gc3BhbSBxbWFpbGFkbWluIHBvc3RmaXgKLSAgICBybSAtcmYgc3R1bm5lbCBzcXVpZCBzYXJnIHBwdHAtY2xpZW50IHBwdHAtc2VydmVyIGphYmJlciBvcGVuc2xwIHNlbnRyeSBjbHVzdGVyLSogdmdldHR5IGJ1cm5lciBoZWFydGJlYXQKLQotICAgICMgQWRqdXN0IGNvbmZpZ3MKLSAgICBbIC1mIGluaXQvY29uZmlnLWRlYmlhbi1saW51eCBdICYmIG12IGluaXQvY29uZmlnLWRlYmlhbi1saW51eCBpbml0L2NvbmZpZy1nZW5lcmljLWxpbnV4Ci0gICAgc2VkIC1pICJzL3NodXRkb3duX2NvbW1hbmQ9Liovc2h1dGRvd25fY29tbWFuZD1wb3dlcm9mZi8iIGluaXQvY29uZmlnLWdlbmVyaWMtbGludXgKLSAgICBlY2hvICJleGNsdWRlPWJvb3RtaXNjLnNoLHNpbmdsZSxoYWx0LHJlYm9vdCxob3N0bmFtZS5zaCxtb2R1dGlscy5zaCxtb3VudGFsbC5zaCxtb3VudG5mcy5zaCxuZXR3b3JraW5nLHBvcHVsYXRlLXZvbGF0aWxlLnNoLHJtbm9sb2dpbi5zaCxzYXZlLXJ0Yy5zaCx1bW91bnRmcyx1bW91bnRuZnMuc2gsaHdjbG9jay5zaCxjaGVja3Jvb3Quc2gsYmFubmVyLnNoLHVkZXYsdWRldi1jYWNoZSxkZXZwdHMuc2gscHNwbGFzaC5zaCxzZW5kc2lncyxmYnNldHVwLGJvb3Rsb2dkLHN0b3AtYm9vdGxvZ2Qsc3lzZnMuc2gsc3lzbG9nLHN5c2xvZy5idXN5Ym94LHVyYW5kb20sd2VibWluLGZ1bmN0aW9ucy5pbml0c2NyaXB0cyxyZWFkLW9ubHktcm9vdGZzLWhvb2suc2giID4+IGluaXQvY29uZmlnLWdlbmVyaWMtbGludXgKLSAgICBlY2hvICJleGNsdWRlZnM9ZGV2cHRzLGRldnRtcGZzLHVzYmRldmZzLHByb2MsdG1wZnMsc3lzZnMsZGVidWdmcyIgPj4gbW91bnQvY29uZmlnLWdlbmVyaWMtbGludXgKLQotICAgIFsgLWYgZXhwb3J0cy9jb25maWctZGViaWFuLWxpbnV4IF0gJiYgbXYgZXhwb3J0cy9jb25maWctZGViaWFuLWxpbnV4IGV4cG9ydHMvY29uZmlnLWdlbmVyaWMtbGludXgKLSAgICBzZWQgLWkgInMva2lsbGFsbCAtSFVQIHJwYy5uZnNkICYmIC8vIiBleHBvcnRzL2NvbmZpZy1nZW5lcmljLWxpbnV4Ci0gICAgc2VkIC1pICJzL25ldHN0ZF9uZnMvbmZzc2VydmVyL2ciIGV4cG9ydHMvY29uZmlnLWdlbmVyaWMtbGludXgKLQotICAgICMgRml4IGluc2FuZSBuYW1pbmcgdGhhdCBjYXVzZXMgcHJvYmxlbXMgYXQgcGFja2FnaW5nIHRpbWUgKG11c3QgYmUgZG9uZSBiZWZvcmUgZGVsZXRpbmcgYmVsb3cpCi0gICAgZmluZCAuIC1uYW1lICIqXCoqIiB8IHdoaWxlIHJlYWQgZnJvbQotICAgIGRvCi0gICAgICAgIHRvPWBlY2hvICIkZnJvbSIgfCBzZWQgInMvKi9BTEwvImAKLSAgICAgICAgbXYgIiRmcm9tIiAiJHRvIgotICAgIGRvbmUKLQotICAgICMgUmVtb3ZlIHNvbWUgb3RoZXIgZmlsZXMgd2UgZG9uJ3QgbmVlZAotICAgIGZpbmQgLiAtbmFtZSAiY29uZmlnLSoiIC1hIFwhIC1uYW1lICJjb25maWctZ2VuZXJpYy1saW51eCIgLWEgXCEgLW5hbWUgImNvbmZpZy1BTEwtbGludXgiIC1hIFwhIC1uYW1lICIqLnBsIiAtZGVsZXRlCi0gICAgZmluZCAuIC1yZWdleHR5cGUgcG9zaXgtZXh0ZW5kZWQgLXJlZ2V4ICIuKi8ob3BlbnNlcnZlcnxhaXh8b3NmMXxvc2Z8b3BlbmJzZHxuZXRic2R8ZnJlZWJzZHx1bml4d2FyZXxzb2xhcmlzfG1hY29zfGlyaXh8aHB1eHxjeWd3aW58d2luZG93cyktbGliXC5wbCIgLWRlbGV0ZQotICAgIHJtIC1mIHdlYm1pbi1nZW50b28taW5pdCB3ZWJtaW4tY2FsZGVyYS1pbml0IHdlYm1pbi1kZWJpYW4tcGFtIHdlYm1pbi1wYW0KLQotICAgICMgRG9uJ3QgbmVlZCB0aGVzZSBhdCBydW50aW1lIChhbmQgd2UgaGF2ZSBvdXIgb3duIHNldHVwIHNjcmlwdCkKLSAgICBybSAtZiBzZXR1cC5zaAotICAgIHJtIC1mIHNldHVwLnBsCi0KLSAgICAjIFVzZSBwaWRvZiBmb3IgZmluZGluZyBQSURzCi0gICAgc2VkIC1pICJzL2ZpbmRfcGlkX2NvbW1hbmQ9LiovZmluZF9waWRfY29tbWFuZD1waWRvZiBOQU1FLyIgY29uZmlnLWdlbmVyaWMtbGludXgKLX0KLQotV0VCTUlOX0xPR0lOID89ICJhZG1pbiIKLVdFQk1JTl9QQVNTV09SRCA/PSAicGFzc3dvcmQiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vd2VibWluCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgd2VibWluLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3dlYm1pbgotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vd2VibWluCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9L3dlYm1pbgotICAgIGNkICR7U30gfHwgZXhpdCAxCi0gICAgdGFyIC0tbm8tc2FtZS1vd25lciAtLWV4Y2x1ZGU9Jy4vcGF0Y2hlcycgLS1leGNsdWRlPScuLy5wYycgLWNwZiAtIC4gXAotICAgICAgICB8IHRhciAtLW5vLXNhbWUtb3duZXIgLXhwZiAtIC1DICR7RH0ke2xpYmV4ZWNkaXJ9L3dlYm1pbgotCi0gICAgcm0gLWYgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluL3dlYm1pbi1pbml0Ci0gICAgcm0gLWYgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluL2FqYXh0ZXJtL2FqYXh0ZXJtL2NvbmZpZ3VyZS5pbml0ZC5nZW50b28KLSAgICBybSAtcmYgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluL3BhdGNoZXMKLQotICAgICMgUnVuIHNldHVwIHNjcmlwdAotICAgIGV4cG9ydCBwZXJsPXBlcmwKLSAgICBleHBvcnQgcGVybF9ydW50aW1lPSR7YmluZGlyfS9wZXJsCi0gICAgZXhwb3J0IHByZWZpeD0ke0R9Ci0gICAgZXhwb3J0IHRlbXBkaXI9JHtTfS9pbnN0YWxsX3RtcAotICAgIGV4cG9ydCB3YWRpcj0ke2xpYmV4ZWNkaXJ9L3dlYm1pbgotICAgIGV4cG9ydCBjb25maWdfZGlyPSR7c3lzY29uZmRpcn0vd2VibWluCi0gICAgZXhwb3J0IHZhcl9kaXI9JHtsb2NhbHN0YXRlZGlyfS93ZWJtaW4KLSAgICBleHBvcnQgb3NfdHlwZT1nZW5lcmljLWxpbnV4Ci0gICAgZXhwb3J0IG9zX3ZlcnNpb249MAotICAgIGV4cG9ydCByZWFsX29zX3R5cGU9IiR7RElTVFJPX05BTUV9IgotICAgIGV4cG9ydCByZWFsX29zX3ZlcnNpb249IiR7RElTVFJPX1ZFUlNJT059IgotICAgIGV4cG9ydCBwb3J0PTEwMDAwCi0gICAgZXhwb3J0IGxvZ2luPSR7V0VCTUlOX0xPR0lOfQotICAgIGV4cG9ydCBwYXNzd29yZD0ke1dFQk1JTl9QQVNTV09SRH0KLSAgICBleHBvcnQgc3NsPTAKLSAgICBleHBvcnQgYXRib290PTEKLSAgICBleHBvcnQgbm9fcGFtPTEKLSAgICBta2RpciAtcCAkdGVtcGRpcgotICAgICR7U30vLi4vc2V0dXAuc2gKLQotICAgICMgRW5zdXJlIGNvcnJlY3QgUEVSTExJQiBwYXRoCi0gICAgc2VkIC1pIC1lICdzIyR7RH0jI2cnICR7RH0ke3N5c2NvbmZkaXJ9L3dlYm1pbi9zdGFydAotfQotCi1JTklUU0NSSVBUX05BTUUgPSAid2VibWluIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTkgNSAzIDIgLiBzdG9wIDEwIDAgMSA2IC4iCi0KLSMgRklYTUU6IHNvbWUgb2YgdGhpcyBzaG91bGQgYmUgZmlndXJlZCBvdXQgYXV0b21hdGljYWxseQotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwgcGVybC1tb2R1bGUtc29ja2V0IHBlcmwtbW9kdWxlLWV4cG9ydGVyIHBlcmwtbW9kdWxlLWV4cG9ydGVyLWhlYXZ5IHBlcmwtbW9kdWxlLWNhcnAgcGVybC1tb2R1bGUtc3RyaWN0IgotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLXdhcm5pbmdzIHBlcmwtbW9kdWxlLXhzbG9hZGVyIHBlcmwtbW9kdWxlLXBvc2l4IHBlcmwtbW9kdWxlLWF1dG9sb2FkZXIiCi1SREVQRU5EU18ke1BOfSArPSAicGVybC1tb2R1bGUtZmNudGwgcGVybC1tb2R1bGUtdGllLWhhc2ggcGVybC1tb2R1bGUtdmFycyBwZXJsLW1vZHVsZS10aW1lLWxvY2FsIHBlcmwtbW9kdWxlLWNvbmZpZyBwZXJsLW1vZHVsZS1jb25zdGFudCIKLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1maWxlLWdsb2IgcGVybC1tb2R1bGUtZmlsZS1jb3B5IHBlcmwtbW9kdWxlLXNkYm0tZmlsZSBwZXJsLW1vZHVsZS1mZWF0dXJlIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJ3ZWJtaW4tbW9kdWxlLSogd2VibWluLXRoZW1lLSoiCi1SUkVDT01NRU5EU18ke1BOfSArPSAid2VibWluLW1vZHVsZS1zeXN0ZW0tc3RhdHVzIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlLXByb2MgJHtQTn0tbW9kdWxlLXJhaWQgJHtQTn0tbW9kdWxlLWV4cG9ydHMgJHtQTn0tbW9kdWxlLWZkaXNrICR7UE59LW1vZHVsZS1sdm0iCi1SREVQRU5EU18ke1BOfS1tb2R1bGUtcHJvYyA9ICJwcm9jcHMiCi1SREVQRU5EU18ke1BOfS1tb2R1bGUtcmFpZCA9ICJtZGFkbSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZS1leHBvcnRzID0gInBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgcGVybC1tb2R1bGUtZmlsZS1wYXRoIHBlcmwtbW9kdWxlLWN3ZCBwZXJsLW1vZHVsZS1maWxlLXNwZWMgcGVybC1tb2R1bGUtZmlsZS1zcGVjLXVuaXgiCi1SUkVDT01NRU5EU18ke1BOfS1tb2R1bGUtZmRpc2sgPSAicGFydGVkIgotUlJFQ09NTUVORFNfJHtQTn0tbW9kdWxlLWx2bSA9ICJsdm0yIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBpbXBvcnQgb3MsIG9zLnBhdGgKLQotICAgIHdhZGlyID0gYmIuZGF0YS5leHBhbmQoJyR7bGliZXhlY2Rpcn0vd2VibWluJywgZCkKLSAgICB3YWRpcl9pbWFnZSA9IGJiLmRhdGEuZXhwYW5kKCcke0R9JywgZCkgKyB3YWRpcgotICAgIG1vZHVsZXMgPSBbXQotICAgIHRoZW1lcyA9IFtdCi0gICAgZm9yIG1vZCBpbiBvcy5saXN0ZGlyKHdhZGlyX2ltYWdlKToKLSAgICAgICAgbW9kaW5mbyA9IG9zLnBhdGguam9pbih3YWRpcl9pbWFnZSwgbW9kLCAibW9kdWxlLmluZm8iKQotICAgICAgICB0aGVtZWluZm8gPSBvcy5wYXRoLmpvaW4od2FkaXJfaW1hZ2UsIG1vZCwgInRoZW1lLmluZm8iKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtb2RpbmZvKToKLSAgICAgICAgICAgIG1vZHVsZXMuYXBwZW5kKG1vZCkKLSAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cyh0aGVtZWluZm8pOgotICAgICAgICAgICAgdGhlbWVzLmFwcGVuZChtb2QpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCB3YWRpciwgJ14oJXMpJCcgJSAifCIuam9pbihtb2R1bGVzKSwgJ3dlYm1pbi1tb2R1bGUtJXMnLCAnV2VibWluIG1vZHVsZSBmb3IgJXMnLCBhbGxvd19kaXJzPVRydWUsIHByZXBlbmQ9VHJ1ZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCB3YWRpciwgJ14oJXMpJCcgJSAifCIuam9pbih0aGVtZXMpLCAnd2VibWluLXRoZW1lLSVzJywgJ1dlYm1pbiB0aGVtZSBmb3IgJXMnLCBhbGxvd19kaXJzPVRydWUsIHByZXBlbmQ9VHJ1ZSkKLX0KLQotIyBUaW1lLXNhdmVycwotcGFja2FnZV9kb19wa2djb25maWcoKSB7Ci0gICAgOgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi93ZWJtaW5fMS44NTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vd2VibWluL3dlYm1pbl8xLjg1MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTg4ZWI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL3dlYm1pbi93ZWJtaW5fMS44NTAuYmIKQEAgLTAsMCArMSwxNjcgQEAKK1NVTU1BUlkgPSAiV2ViLWJhc2VkIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cud2VibWluLmNvbSIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9MDM3M2FjOWY2MTFlNTQyZGRlYmUxZWM2Mzk0YWZjM2MiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3dlYmFkbWluL3dlYm1pbi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vc2V0dXAuc2ggXAorICAgICAgICAgICBmaWxlOi8vaW5pdC1leGNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25ldC1nZW5lcmljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zdGFydHVwLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLXZlcnNpb24tY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmZzLWV4cG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHBvcnRzLWxpYi5wbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3VudC1leGNsdWRlZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2FtYmEtY29uZmlnLWZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wcm9mdHBkLWNvbmZpZy1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmV0LWxpYi5wbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tZWRpYS10b21iLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1weXRob24yLjMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbXlzcWwtY29uZmlnLWZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly93ZWJtaW4uc2VydmljZSBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZDZlZTk4ZjczZjk0MTg1NjIxOTc2NzViOTUyZDgxYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjZjYWE5ZTRjYjUwZDU0NDdiYzhhY2ViNzk4OWQyMjg0ZGRlMDYwMjc4ZjQwNGIxM2UxNzFjN2NlMTY5MGUxIgorCitpbmhlcml0IHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitkb19jb25maWd1cmUoKSB7CisgICAgIyBSZW1vdmUgYmluYXJpZXMgYW5kIHBsdWdpbnMgZm9yIG90aGVyIHBsYXRmb3JtcworICAgIHJtIC1yZiBhY2wvQXV0aGVuLVNvbGFyaXNSQkFDLTAuMSoKKyAgICBybSAtcmYgZm9ybWF0IGJzZGV4cG9ydHMgaHB1eGV4cG9ydHMgc2dpZXhwb3J0cworICAgIHJtIC1yZiB6b25lcyByYmFjIHNtZiBpcGZ3IGlwZmlsdGVyIGRmc2FkbWluCisgICAgcm0gLWYgbW91bnQvZnJlZWJzZC1tb3VudHMqIG1vdW50L25ldGJzZC1tb3VudHMqCisgICAgcm0gLWYgbW91bnQvb3BlbmJzZC1tb3VudHMqIG1vdW50L21hY29zLW1vdW50cyoKKworICAgICMgUmVtb3ZlIHNvbWUgcGx1Z2lucyBmb3IgdGhlIG1vbWVudAorICAgIHJtIC1yZiBsaWxvIGZyb3ggd3VmdHBkIHRlbG5ldCBwc2VydmVyIGNwYW4gc2hvcmV3YWxsIHdlYmFsaXplciBjZmVuZ2luZSBmc2R1bXAgcGFwCisgICAgcm0gLXJmIG1ham9yZG9tbyBmZXRjaG1haWwgc2VuZG1haWwgbWFpbGJveGVzIHByb2NtYWlsIGZpbHRlciBtYWlsY2FwIGRvdmVjb3QgZXhpbSBzcGFtIHFtYWlsYWRtaW4gcG9zdGZpeAorICAgIHJtIC1yZiBzdHVubmVsIHNxdWlkIHNhcmcgcHB0cC1jbGllbnQgcHB0cC1zZXJ2ZXIgamFiYmVyIG9wZW5zbHAgc2VudHJ5IGNsdXN0ZXItKiB2Z2V0dHkgYnVybmVyIGhlYXJ0YmVhdAorCisgICAgIyBBZGp1c3QgY29uZmlncworICAgIFsgLWYgaW5pdC9jb25maWctZGViaWFuLWxpbnV4IF0gJiYgbXYgaW5pdC9jb25maWctZGViaWFuLWxpbnV4IGluaXQvY29uZmlnLWdlbmVyaWMtbGludXgKKyAgICBzZWQgLWkgInMvc2h1dGRvd25fY29tbWFuZD0uKi9zaHV0ZG93bl9jb21tYW5kPXBvd2Vyb2ZmLyIgaW5pdC9jb25maWctZ2VuZXJpYy1saW51eAorICAgIGVjaG8gImV4Y2x1ZGU9Ym9vdG1pc2Muc2gsc2luZ2xlLGhhbHQscmVib290LGhvc3RuYW1lLnNoLG1vZHV0aWxzLnNoLG1vdW50YWxsLnNoLG1vdW50bmZzLnNoLG5ldHdvcmtpbmcscG9wdWxhdGUtdm9sYXRpbGUuc2gscm1ub2xvZ2luLnNoLHNhdmUtcnRjLnNoLHVtb3VudGZzLHVtb3VudG5mcy5zaCxod2Nsb2NrLnNoLGNoZWNrcm9vdC5zaCxiYW5uZXIuc2gsdWRldix1ZGV2LWNhY2hlLGRldnB0cy5zaCxwc3BsYXNoLnNoLHNlbmRzaWdzLGZic2V0dXAsYm9vdGxvZ2Qsc3RvcC1ib290bG9nZCxzeXNmcy5zaCxzeXNsb2csc3lzbG9nLmJ1c3lib3gsdXJhbmRvbSx3ZWJtaW4sZnVuY3Rpb25zLmluaXRzY3JpcHRzLHJlYWQtb25seS1yb290ZnMtaG9vay5zaCIgPj4gaW5pdC9jb25maWctZ2VuZXJpYy1saW51eAorICAgIGVjaG8gImV4Y2x1ZGVmcz1kZXZwdHMsZGV2dG1wZnMsdXNiZGV2ZnMscHJvYyx0bXBmcyxzeXNmcyxkZWJ1Z2ZzIiA+PiBtb3VudC9jb25maWctZ2VuZXJpYy1saW51eAorCisgICAgWyAtZiBleHBvcnRzL2NvbmZpZy1kZWJpYW4tbGludXggXSAmJiBtdiBleHBvcnRzL2NvbmZpZy1kZWJpYW4tbGludXggZXhwb3J0cy9jb25maWctZ2VuZXJpYy1saW51eAorICAgIHNlZCAtaSAicy9raWxsYWxsIC1IVVAgcnBjLm5mc2QgJiYgLy8iIGV4cG9ydHMvY29uZmlnLWdlbmVyaWMtbGludXgKKyAgICBzZWQgLWkgInMvbmV0c3RkX25mcy9uZnNzZXJ2ZXIvZyIgZXhwb3J0cy9jb25maWctZ2VuZXJpYy1saW51eAorCisgICAgIyBGaXggaW5zYW5lIG5hbWluZyB0aGF0IGNhdXNlcyBwcm9ibGVtcyBhdCBwYWNrYWdpbmcgdGltZSAobXVzdCBiZSBkb25lIGJlZm9yZSBkZWxldGluZyBiZWxvdykKKyAgICBmaW5kIC4gLW5hbWUgIipcKioiIHwgd2hpbGUgcmVhZCBmcm9tCisgICAgZG8KKyAgICAgICAgdG89YGVjaG8gIiRmcm9tIiB8IHNlZCAicy8qL0FMTC8iYAorICAgICAgICBtdiAiJGZyb20iICIkdG8iCisgICAgZG9uZQorCisgICAgIyBSZW1vdmUgc29tZSBvdGhlciBmaWxlcyB3ZSBkb24ndCBuZWVkCisgICAgZmluZCAuIC1uYW1lICJjb25maWctKiIgLWEgXCEgLW5hbWUgImNvbmZpZy1nZW5lcmljLWxpbnV4IiAtYSBcISAtbmFtZSAiY29uZmlnLUFMTC1saW51eCIgLWEgXCEgLW5hbWUgIioucGwiIC1kZWxldGUKKyAgICBmaW5kIC4gLXJlZ2V4dHlwZSBwb3NpeC1leHRlbmRlZCAtcmVnZXggIi4qLyhvcGVuc2VydmVyfGFpeHxvc2YxfG9zZnxvcGVuYnNkfG5ldGJzZHxmcmVlYnNkfHVuaXh3YXJlfHNvbGFyaXN8bWFjb3N8aXJpeHxocHV4fGN5Z3dpbnx3aW5kb3dzKS1saWJcLnBsIiAtZGVsZXRlCisgICAgcm0gLWYgd2VibWluLWdlbnRvby1pbml0IHdlYm1pbi1jYWxkZXJhLWluaXQgd2VibWluLWRlYmlhbi1wYW0gd2VibWluLXBhbQorCisgICAgIyBEb24ndCBuZWVkIHRoZXNlIGF0IHJ1bnRpbWUgKGFuZCB3ZSBoYXZlIG91ciBvd24gc2V0dXAgc2NyaXB0KQorICAgIHJtIC1mIHNldHVwLnNoCisgICAgcm0gLWYgc2V0dXAucGwKKworICAgICMgVXNlIHBpZG9mIGZvciBmaW5kaW5nIFBJRHMKKyAgICBzZWQgLWkgInMvZmluZF9waWRfY29tbWFuZD0uKi9maW5kX3BpZF9jb21tYW5kPXBpZG9mIE5BTUUvIiBjb25maWctZ2VuZXJpYy1saW51eAorfQorCitXRUJNSU5fTE9HSU4gPz0gImFkbWluIgorV0VCTUlOX1BBU1NXT1JEID89ICJwYXNzd29yZCIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS93ZWJtaW4KKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSB3ZWJtaW4taW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvd2VibWluCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vd2VibWluLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS93ZWJtaW4uc2VydmljZQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vd2VibWluCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9L3dlYm1pbgorICAgIGNkICR7U30gfHwgZXhpdCAxCisgICAgdGFyIC0tbm8tc2FtZS1vd25lciAtLWV4Y2x1ZGU9Jy4vcGF0Y2hlcycgLS1leGNsdWRlPScuLy5wYycgLWNwZiAtIC4gXAorICAgICAgICB8IHRhciAtLW5vLXNhbWUtb3duZXIgLXhwZiAtIC1DICR7RH0ke2xpYmV4ZWNkaXJ9L3dlYm1pbgorCisgICAgcm0gLWYgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluL3dlYm1pbi1pbml0CisgICAgcm0gLWYgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluL2FqYXh0ZXJtL2FqYXh0ZXJtL2NvbmZpZ3VyZS5pbml0ZC5nZW50b28KKyAgICBybSAtcmYgJHtEfSR7bGliZXhlY2Rpcn0vd2VibWluL3BhdGNoZXMKKworICAgICMgUnVuIHNldHVwIHNjcmlwdAorICAgIGV4cG9ydCBwZXJsPXBlcmwKKyAgICBleHBvcnQgcGVybF9ydW50aW1lPSR7YmluZGlyfS9wZXJsCisgICAgZXhwb3J0IHByZWZpeD0ke0R9CisgICAgZXhwb3J0IHRlbXBkaXI9JHtTfS9pbnN0YWxsX3RtcAorICAgIGV4cG9ydCB3YWRpcj0ke2xpYmV4ZWNkaXJ9L3dlYm1pbgorICAgIGV4cG9ydCBjb25maWdfZGlyPSR7c3lzY29uZmRpcn0vd2VibWluCisgICAgZXhwb3J0IHZhcl9kaXI9JHtsb2NhbHN0YXRlZGlyfS93ZWJtaW4KKyAgICBleHBvcnQgb3NfdHlwZT1nZW5lcmljLWxpbnV4CisgICAgZXhwb3J0IG9zX3ZlcnNpb249MAorICAgIGV4cG9ydCByZWFsX29zX3R5cGU9IiR7RElTVFJPX05BTUV9IgorICAgIGV4cG9ydCByZWFsX29zX3ZlcnNpb249IiR7RElTVFJPX1ZFUlNJT059IgorICAgIGV4cG9ydCBwb3J0PTEwMDAwCisgICAgZXhwb3J0IGxvZ2luPSR7V0VCTUlOX0xPR0lOfQorICAgIGV4cG9ydCBwYXNzd29yZD0ke1dFQk1JTl9QQVNTV09SRH0KKyAgICBleHBvcnQgc3NsPTAKKyAgICBleHBvcnQgYXRib290PTEKKyAgICBleHBvcnQgbm9fcGFtPTEKKyAgICBta2RpciAtcCAkdGVtcGRpcgorICAgICR7U30vLi4vc2V0dXAuc2gKKworICAgICMgRW5zdXJlIGNvcnJlY3QgUEVSTExJQiBwYXRoCisgICAgc2VkIC1pIC1lICdzIyR7RH0jI2cnICR7RH0ke3N5c2NvbmZkaXJ9L3dlYm1pbi9zdGFydAorfQorCitJTklUU0NSSVBUX05BTUUgPSAid2VibWluIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTkgNSAzIDIgLiBzdG9wIDEwIDAgMSA2IC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ3ZWJtaW4uc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZGlzYWJsZSIKKworIyBGSVhNRTogc29tZSBvZiB0aGlzIHNob3VsZCBiZSBmaWd1cmVkIG91dCBhdXRvbWF0aWNhbGx5CitSREVQRU5EU18ke1BOfSArPSAicGVybCBwZXJsLW1vZHVsZS1zb2NrZXQgcGVybC1tb2R1bGUtZXhwb3J0ZXIgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkgcGVybC1tb2R1bGUtY2FycCBwZXJsLW1vZHVsZS1zdHJpY3QiCitSREVQRU5EU18ke1BOfSArPSAicGVybC1tb2R1bGUtd2FybmluZ3MgcGVybC1tb2R1bGUteHNsb2FkZXIgcGVybC1tb2R1bGUtcG9zaXggcGVybC1tb2R1bGUtYXV0b2xvYWRlciIKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1mY250bCBwZXJsLW1vZHVsZS10aWUtaGFzaCBwZXJsLW1vZHVsZS12YXJzIHBlcmwtbW9kdWxlLXRpbWUtbG9jYWwgcGVybC1tb2R1bGUtY29uZmlnIHBlcmwtbW9kdWxlLWNvbnN0YW50IgorUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBwZXJsLW1vZHVsZS1maWxlLWNvcHkgcGVybC1tb2R1bGUtc2RibS1maWxlIHBlcmwtbW9kdWxlLWZlYXR1cmUiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIndlYm1pbi1tb2R1bGUtKiB3ZWJtaW4tdGhlbWUtKiIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJ3ZWJtaW4tbW9kdWxlLXN5c3RlbS1zdGF0dXMiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGUtcHJvYyAke1BOfS1tb2R1bGUtcmFpZCAke1BOfS1tb2R1bGUtZXhwb3J0cyAke1BOfS1tb2R1bGUtZmRpc2sgJHtQTn0tbW9kdWxlLWx2bSIKK1JERVBFTkRTXyR7UE59LW1vZHVsZS1wcm9jID0gInByb2NwcyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZS1yYWlkID0gIm1kYWRtIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlLWV4cG9ydHMgPSAicGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBwZXJsLW1vZHVsZS1maWxlLXBhdGggcGVybC1tb2R1bGUtY3dkIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBwZXJsLW1vZHVsZS1maWxlLXNwZWMtdW5peCIKK1JSRUNPTU1FTkRTXyR7UE59LW1vZHVsZS1mZGlzayA9ICJwYXJ0ZWQiCitSUkVDT01NRU5EU18ke1BOfS1tb2R1bGUtbHZtID0gImx2bTIiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIGltcG9ydCBvcywgb3MucGF0aAorCisgICAgd2FkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJleGVjZGlyfS93ZWJtaW4nLCBkKQorICAgIHdhZGlyX2ltYWdlID0gYmIuZGF0YS5leHBhbmQoJyR7RH0nLCBkKSArIHdhZGlyCisgICAgbW9kdWxlcyA9IFtdCisgICAgdGhlbWVzID0gW10KKyAgICBmb3IgbW9kIGluIG9zLmxpc3RkaXIod2FkaXJfaW1hZ2UpOgorICAgICAgICBtb2RpbmZvID0gb3MucGF0aC5qb2luKHdhZGlyX2ltYWdlLCBtb2QsICJtb2R1bGUuaW5mbyIpCisgICAgICAgIHRoZW1laW5mbyA9IG9zLnBhdGguam9pbih3YWRpcl9pbWFnZSwgbW9kLCAidGhlbWUuaW5mbyIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1vZGluZm8pOgorICAgICAgICAgICAgbW9kdWxlcy5hcHBlbmQobW9kKQorICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKHRoZW1laW5mbyk6CisgICAgICAgICAgICB0aGVtZXMuYXBwZW5kKG1vZCkKKworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHdhZGlyLCAnXiglcykkJyAlICJ8Ii5qb2luKG1vZHVsZXMpLCAnd2VibWluLW1vZHVsZS0lcycsICdXZWJtaW4gbW9kdWxlIGZvciAlcycsIGFsbG93X2RpcnM9VHJ1ZSwgcHJlcGVuZD1UcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHdhZGlyLCAnXiglcykkJyAlICJ8Ii5qb2luKHRoZW1lcyksICd3ZWJtaW4tdGhlbWUtJXMnLCAnV2VibWluIHRoZW1lIGZvciAlcycsIGFsbG93X2RpcnM9VHJ1ZSwgcHJlcGVuZD1UcnVlKQorfQorCisjIFRpbWUtc2F2ZXJzCitwYWNrYWdlX2RvX3BrZ2NvbmZpZygpIHsKKyAgICA6Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9SRUFETUUKaW5kZXggYThlMjFhOS4uMzM2Nzc5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL1JFQURNRQpAQCAtMSwxMSArMSwxMSBAQAogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29lLWNvcmUuZ2l0Ci1icmFuY2g6IHB5cm8KK2JyYW5jaDogcm9ja28KIHJldmlzaW9uOiBIRUFECiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKLWJyYW5jaDogcHlybworYnJhbmNoOiByb2NrbwogcmV2aXNpb246IEhFQUQKIG1ldGEteGZjZSBkZXBlbmRzIG9uIG1ldGEtb2UsIG1ldGEtZ25vbWUgYW5kIG1ldGEtbXVsdGltZWRpYSBpbiB0aGlzIHJlcG9zaXRvcnkuCiAKQEAgLTE0LDEwICsxNCwxMCBAQAogCiBCQk1BU0sgPSAibWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYSIKIAotU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLXhmY2VdW3B5cm9dJyBpbiB0aGUgc3ViamVjdCcKK1NlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS14ZmNlXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0JwogCiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS14ZmNlXVtweXJvXVtQQVRDSCcKKydnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS14ZmNlXVtyb2Nrb11bUEFUQ0gnCiAKLXB5cm8gQnJhbmNoIE1haW50YWluZXI6Cityb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKIEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYKaW5kZXggNjRiMTA3Ny4uYWQyNWRjYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTUsNyArMTUsNyBAQAogTEFZRVJERVBFTkRTX3hmY2UtbGF5ZXIgPSAiY29yZSIKIExBWUVSREVQRU5EU194ZmNlLWxheWVyICs9ICJvcGVuZW1iZWRkZWQtbGF5ZXIiCiBMQVlFUkRFUEVORFNfeGZjZS1sYXllciArPSAiZ25vbWUtbGF5ZXIiCi1MQVlFUkRFUEVORFNfeGZjZS1sYXllciArPSAib3BlbmVtYmVkZGVkLWxheWVyIgorTEFZRVJERVBFTkRTX3hmY2UtbGF5ZXIgKz0gIm11bHRpbWVkaWEtbGF5ZXIiCiBMQVlFUkRFUEVORFNfeGZjZS1sYXllciArPSAibWV0YS1weXRob24iCiAKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci9maWxlcy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1vdXB1dC1kaXJlY3RvcnktZm9yLWRlc2t0b3AtZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zaG9vdGVyL2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLW91cHV0LWRpcmVjdG9yeS1mb3ItZGVza3RvcC1maWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmJmZmVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zaG9vdGVyL2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLW91cHV0LWRpcmVjdG9yeS1mb3ItZGVza3RvcC1maWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBjODViZjdjYzVjMWUxNzgwZDIxNWY2ZmUyMzNlM2VkNDU5N2M3MmVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMjEgU2VwIDIwMTUgMDY6NTQ6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGNyZWF0ZSBvdXB1dCBkaXJlY3RvcnkgZm9yIGRlc2t0b3AgZmlsZQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KLQotWzFdOiBodHRwOi8vYnVnLWF0dGFjaG1lbnQueGZjZS5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9NjQ2MAotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGEyMmZjMjAuLjJlZjBlNTQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xMjIsNiArMTIyLDcgQEAgYXBwX2Rlc2t0b3BfREFUQSA9ICQoYXBwX2Rlc2t0b3BfaW5fZmlsZXM6LmRlc2t0b3AuaW49LmRlc2t0b3ApCi0gCi0gc3JjL3hmY2U0LXNjcmVlbnNob290ZXIuZGVza3RvcC5pbjogc3JjL3hmY2U0LXNjcmVlbnNob290ZXIuZGVza3RvcC5pbi5pbgotIAkkKEFNX1ZfR0VOKSAoIFwKLSsJCSQoTUtESVJfUCkgJChkaXIgJEApOyBcCi0gCQlzZWQgLWUgInNeQFBMVUdJTl9QQVRIQF4kKGxpYmV4ZWNkaXIpL2FwcGxpY2F0aW9uc14iIFwKLSAJCQkkPCA+ICRAIFwKLSAJKQotLS0gCi0yLjAuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci94ZmNlNC1zY3JlZW5zaG9vdGVyXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNob290ZXIveGZjZTQtc2NyZWVuc2hvb3Rlcl8xLjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFjYjY4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci94ZmNlNC1zY3JlZW5zaG9vdGVyXzEuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJBcHBsaWNhdGlvbiB0byB0YWtlIHNjcmVlbnNob3RzIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LXNjcmVlbnNob290ZXIiCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzkxNzI4YTA3M2JjMDA5YjRmZmFmMDBiNzU5OTg1NSIKLURFUEVORFMgPSAieGZjZTQtcGFuZWwgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgZ2RrLXBpeGJ1ZiBndGsrIGdsaWItMi4wIGxpYnNvdXAtMi40IGV4byBsaWJ4Zml4ZXMgeGV4dCB2aXJ0dWFsL2xpYngxMSIKLQotaW5oZXJpdCB4ZmNlLWFwcAotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtb3VwdXQtZGlyZWN0b3J5LWZvci1kZXNrdG9wLWZpbGUucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYTMyZWNjNTU2NjQ1M2E1OGY2YTRkZGQ3MDY0OTQ0NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZGNlMmRkZmFhODdmNzAzZTg3MGUyOWJhZTEzZjNmYzgyYTFiM2YwNmI0NGY4Mzg2NjQwZTQ1YTEzNWY1ZjY5IgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgbWtkaXIgLXAgbGliCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCi0gICAgJHtkYXRhZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zIFwKLSAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci94ZmNlNC1zY3JlZW5zaG9vdGVyXzEuOS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNob290ZXIveGZjZTQtc2NyZWVuc2hvb3Rlcl8xLjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDQ5ZGNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNob290ZXIveGZjZTQtc2NyZWVuc2hvb3Rlcl8xLjkuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkFwcGxpY2F0aW9uIHRvIHRha2Ugc2NyZWVuc2hvdHMiCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9hcHBsaWNhdGlvbnMveGZjZTQtc2NyZWVuc2hvb3RlciIKK1NFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OTE3MjhhMDczYmMwMDliNGZmYWYwMGI3NTk5ODU1IgorREVQRU5EUyA9ICJ4ZmNlNC1wYW5lbCBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBnZGstcGl4YnVmIGd0aysgZ2xpYi0yLjAgbGlic291cC0yLjQgZXhvIGxpYnhmaXhlcyB4ZXh0IHZpcnR1YWwvbGlieDExIgorCitpbmhlcml0IHhmY2UtYXBwCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NWUxNTAxNDE4ZjkwNDc2OWU0ZmQyNWVmZjZhMzk0NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNjJiMzFkOWNmMDZhNzQxNGEyNjQwMGMyZWJlN2EyYWU3YzJiMjJhYTYwZjk5N2YyNTE0NWVhOWViZTZlMGRiIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgbWtkaXIgLXAgbGliCisgICAgbWtkaXIgLXAgc3JjCit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCisgICAgJHtkYXRhZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zIFwKKyAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucyBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMWQyMTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgdnRlIGxpYnhmY2U0dWkiCi0KLWluaGVyaXQgeGZjZS1hcHAKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZDllYTU3MzAxZDZhNzcwZTVkYjhlN2VjZDZlNGNkYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNWMxMTYzYjMwZTdhNDNkNTZmZjkyYTI1MTkzYmY5ZjI5Y2U2MGU2Y2Y0M2U1OTg4NTMwZGY3OWM4NGNmZGM4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MmVkYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjYuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJUZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgdnRlIGxpYnhmY2U0dWkiCisKK2luaGVyaXQgeGZjZS1hcHAKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MmY1YTMzNjZlMzBmNWY4MjM4ZDgyNTBmNzMwYjZhZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYzJhNTYwNDA5YTBmMGI2NjZkMWM1NTdlOTkxNzQ4Yjk4NmVjMjc1NzJhNDVhZTg4YjBlZTVhNDgwZDg4MWQ3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1iaW5kaW5ncy92YWxhL3hmY2U0LXZhbGFfNC4xMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1iaW5kaW5ncy92YWxhL3hmY2U0LXZhbGFfNC4xMC4zLmJiCmluZGV4IGM5ZWFjZTguLmQwYTA1OTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYmluZGluZ3MvdmFsYS94ZmNlNC12YWxhXzQuMTAuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWJpbmRpbmdzL3ZhbGEveGZjZTQtdmFsYV80LjEwLjMuYmIKQEAgLTksNyArOSw3IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMGJiYjFkNmU0NzNlMGZlOWIzMzViN2IxYjQ5ZDhhNzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDdhOGYyYjdjMDlmY2RkM2Q4NmUwYzUyYWRlYTNjNThjYTAxMWQwMTQyYTkzOTk3YTAxYjRhZjc3MjYwYWU3YiIKIAotRVhUUkFfT0VDT05GID0gIi13aXRoLXZhbGEtYXBpPTAuMzQiCitFWFRSQV9PRUNPTkYgPSAiLXdpdGgtdmFsYS1hcGk9MC4zNiIKIAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdmFsYS0qL3ZhcGkiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLXhmY2UuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC14ZmNlLmJiCmluZGV4IGY1YzVjMjYuLjIxOTMwYmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLXhmY2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwteGZjZS5iYgpAQCAtNiw2ICs2LDcgQEAKICAgICBrZXJuZWwtbW9kdWxlcyBcCiAiCiAKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBJTUFHRV9MSU5HVUFTID89ICIgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3NfMS43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2ltc2V0dGluZ3MvaW1zZXR0aW5nc18xLjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNlMTVkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2ltc2V0dGluZ3MvaW1zZXR0aW5nc18xLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiRGVsaXZlcnkgZnJhbWV3b3JrIGZvciBnZW5lcmFsIElucHV0IE1ldGhvZCBjb25maWd1cmF0aW9uIgotREVTQ1JJUFRJT04gPSAiSU1TZXR0aW5ncyBpcyBhIGZyYW1ld29yayB0aGF0IGRlbGl2ZXJzIElucHV0IE1ldGhvZCBcCi1zZXR0aW5ncyBhbmQgYXBwbGllcyB0aGUgY2hhbmdlcyBzbyB0aGV5IHRha2UgZWZmZWN0IFwKLWltbWVkaWF0ZWx5IHdpdGhvdXQgYW55IG5lZWQgdG8gcmVzdGFydCBhcHBsaWNhdGlvbnMgXAotb3IgdGhlIGRlc2t0b3AuIFwKLVRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgY29yZSBEQnVzIHNlcnZpY2VzIGFuZCBzb21lIHV0aWxpdGllcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaW1zZXR0aW5ncy8iCi1TRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3RhZ29oL2ltc2V0dGluZ3MvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2d0ay1pcy1yZXF1aXJlZC1ieS1ub3RpZnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXVsdGktbGluZS1BQ0xPQ0FMX0FNRkxBR1MtaXNub3Qtc3VwcG9ydGVkLWJ5LWF1dG9yZWNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW5hbWUtdXNlLW9mLXN0ZG91dC1hbmQtc3RkZXJyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWI0MzllMjFhN2Q4NmZhOTlmYmMwNDU4NmM3NTUzNDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTJjMzUzNTIzODYwNTdiYTY4ZDY5YTBiN2Q5YTFkMGQwMWViYmQ4OTNhYWZlMGEwOTRjMzE1OGM4MDc5YWM5YSIKLQotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgteGlucHV0c2g9NTAteGlucHV0LnNoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhdGljIFwKLSAgICAgICAgICAgICAgICIKLQotREVQRU5EUyA9ICJndGsrIGdjb25mIGxpYm5vdGlmeSBkYnVzLWdsaWIgbGliZ3hpbSB4ZmNvbmYgaW50bHRvb2wtbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xLyogJHtkYXRhZGlyfS9naXItMS4wLyogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzXzEuNy4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9pbXNldHRpbmdzL2ltc2V0dGluZ3NfMS43LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E0Y2UwNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvaW1zZXR0aW5ncy9pbXNldHRpbmdzXzEuNy4yLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiRGVsaXZlcnkgZnJhbWV3b3JrIGZvciBnZW5lcmFsIElucHV0IE1ldGhvZCBjb25maWd1cmF0aW9uIgorREVTQ1JJUFRJT04gPSAiSU1TZXR0aW5ncyBpcyBhIGZyYW1ld29yayB0aGF0IGRlbGl2ZXJzIElucHV0IE1ldGhvZCBcCitzZXR0aW5ncyBhbmQgYXBwbGllcyB0aGUgY2hhbmdlcyBzbyB0aGV5IHRha2UgZWZmZWN0IFwKK2ltbWVkaWF0ZWx5IHdpdGhvdXQgYW55IG5lZWQgdG8gcmVzdGFydCBhcHBsaWNhdGlvbnMgXAorb3IgdGhlIGRlc2t0b3AuIFwKK1RoaXMgcGFja2FnZSBjb250YWlucyB0aGUgY29yZSBEQnVzIHNlcnZpY2VzIGFuZCBzb21lIHV0aWxpdGllcy4iCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaW1zZXR0aW5ncy8iCitTRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9TeXN0ZW0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3RhZ29oL2ltc2V0dGluZ3MvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2d0ay1pcy1yZXF1aXJlZC1ieS1ub3RpZnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbXVsdGktbGluZS1BQ0xPQ0FMX0FNRkxBR1MtaXNub3Qtc3VwcG9ydGVkLWJ5LWF1dG9yZWNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW5hbWUtdXNlLW9mLXN0ZG91dC1hbmQtc3RkZXJyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODE1M2IwNTgzYTlmNDdkOGE2MmFmMWY5MmZiOWQzYmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFhZGRmMDQ1OGY3NjAyMTJiNmI2MTAwODM1MDY2ZTE2ZGViM2E4YTUwZWIwMDVhMGZjMTdmYmFjMGEyYWU2NiIKKworTElDRU5TRSA9ICJMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGlucHV0c2g9NTAteGlucHV0LnNoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhdGljIFwKKyAgICAgICAgICAgICAgICIKKworREVQRU5EUyA9ICJndGsrIGdjb25mIGxpYm5vdGlmeSBkYnVzLWdsaWIgbGliZ3hpbSB4ZmNvbmYgaW50bHRvb2wtbmF0aXZlIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xLyogJHtkYXRhZGlyfS9naXItMS4wLyogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLW11bHRpbWVkaWEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1tdWx0aW1lZGlhLmJiCmluZGV4IDcyYTk2ZjMuLjE5YTZlMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLW11bHRpbWVkaWEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtbXVsdGltZWRpYS5iYgpAQCAtMSw5ICsxLDEzIEBACiBTVU1NQVJZID0gIkFsbCBwYWNrYWdlcyBtdWx0aW1lZGlhIHBhY2thZ2VzIGF2YWlsYWJsZSBmb3IgWEZDRSIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAorIyBXaGlsZSB0aGlzIGl0ZW0gZG9lcyBub3QgcmVxdWlyZSBpdCwgaXQgZGVwZW5kcyBvbiB4Zm1wYyBhbmQgeGZjNC1tcGMtcGx1Z2luCisjIHRoYXQgd2FudHMgbXBkIHdoaWNoIGRvZXMKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKwogUkRFUEVORFNfJHtQTn0gPSAiIFwKICAgICBwYXJvbGUgXAogICAgIHhmbXBjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS94ZmNlNC1tcGMtcGx1Z2luL3hmY2U0LW1wYy1wbHVnaW5fMC41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEveGZjZTQtbXBjLXBsdWdpbi94ZmNlNC1tcGMtcGx1Z2luXzAuNS4wLmJiCmluZGV4IGY3MDllNGQuLjlmNTAxZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS94ZmNlNC1tcGMtcGx1Z2luL3hmY2U0LW1wYy1wbHVnaW5fMC41LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3hmY2U0LW1wYy1wbHVnaW4veGZjZTQtbXBjLXBsdWdpbl8wLjUuMC5iYgpAQCAtOCw2ICs4LDkgQEAKIAogREVQRU5EUyArPSAibGlibXBkIgogCisjIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIG1wZCB3aGljaCBkb2VzCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKICMgZm9yIG5vdyB3ZSByZWNvbW1lbmQgb3VyIG93biBtcGQtc2VydmVyCiBSUkVDT01NRU5EU18ke1BOfSA9ICJtcGQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS94Zm1wYy94Zm1wY18wLjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS94Zm1wYy94Zm1wY18wLjIuMy5iYgppbmRleCAzZDkwMmExLi44Njk0MzVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEveGZtcGMveGZtcGNfMC4yLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3hmbXBjL3hmbXBjXzAuMi4zLmJiCkBAIC00LDYgKzQsOSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiBERVBFTkRTID0gImd0aysgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgbGlibXBkIHZhbGEtbmF0aXZlIgogCisjIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIG1wZCB3aGljaCBkb2VzCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKICMgZm9yIG5vdyB3ZSByZWNvbW1lbmQgb3VyIG93biBtcGQtc2VydmVyCiBSUkVDT01NRU5EU18ke1BOfSA9ICJtcGQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbGlwbWFuL3hmY2U0LWNsaXBtYW4tcGx1Z2luXzEuNC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNmE1YmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkNsaXBtYW4gaXMgYSBjbGlwYm9hcmQgbWFuYWdlciBmb3IgWGZjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtY2xpcG1hbi1wbHVnaW4iCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgotCi1ERVBFTkRTICs9ICJ4ZmNvbmYgeHByb3RvIGxpYnh0c3QiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YTVjMDFjMzQ3ZjQ1MDNjNTg5MDI5NzdlNjcxZWEwOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNDFjY2U5NjY1YTg5ZTU5MzBlNzU0ZWYzZTI3ZmY5NzU5NGRhMjJiODJiMTQwMzA5OWViY2Y1YzE4YTUzNTFmIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLS1lbmFibGUtbGlicXJlbmNvZGUsLS1kaXNhYmxlLWxpYnFyZW5jb2RlLHFyZW5jb2RlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hcHBkYXRhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmJkZjBlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjIuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJDbGlwbWFuIGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgZm9yIFhmY2UiCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LWNsaXBtYW4tcGx1Z2luIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworREVQRU5EUyArPSAieGZjb25mIHhwcm90byBsaWJ4dHN0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTE2OTE0MGFmN2M5ZDNmZGRkOGE1YzllMGVmYjVhNjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2YyYjQ1ZTMyN2U2N2NjMTg3ZGNiOTlhNmVmNmQ5NTU3MDQ2MzA0NWFjY2QyNDU0MGUxNzE3MmYwMDUxODliMyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLWxpYnFyZW5jb2RlLC0tZGlzYWJsZS1saWJxcmVuY29kZSxxcmVuY29kZSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmI1MDhhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFsdGVybmF0ZSBtZW51IGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL2dvdHRjb2RlLm9yZy94ZmNlNC13aGlza2VybWVudS1wbHVnaW4vIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIGNtYWtlCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYjA3YzIxMDdjOWQxMjc2ZTliMWJlYzAxZjczNDdhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZmQ5NWMzMzAwNTVmZDc5MDFhNTlhNDg1NjlkMTQ4ODVjMTY4MDE3YzVmZGIyZTIzMzk3NmE3OGJjY2I4OTIzIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAibWVudWxpYnJlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2N2EyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4xLjMuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJBbiBhbHRlcm5hdGUgbWVudSBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb3R0Y29kZS5vcmcveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbiBjbWFrZQorCitTUkNfVVJJW21kNXN1bV0gPSAiMDMyYTJiYjBhMGQ0YTJlM2M4YzEzNjkxMGM4YjU1MWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTg5MThjMTI1NWY3YWI4NmI5NTBlYmQxMzU1NWZlODcwNDZjMDFhMWE0Y2IwYjVkNDYwMDI0YjZlZmMwMTc2OSIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gIm1lbnVsaWJyZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy94a2IveGZjZTQteGtiLXBsdWdpbl8wLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy94a2IveGZjZTQteGtiLXBsdWdpbl8wLjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZhMTYzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMveGtiL3hmY2U0LXhrYi1wbHVnaW5fMC43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIlhLQiBsYXlvdXQgc3dpdGNoaW5nIHBhbmVsIHBsdWctaW4gZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LXhrYi1wbHVnaW4iCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00OTZmMDlmMDg0YjBmN2U2ZjAyZjc2OWE4NDQ5MGM2YiIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmY2OGUwZDUzYmFmNjhlY2MxYTcxNjVhZDMzYzI2YTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjFmZTJlMzNmZTk5OTM5ZDVkMDZhNjgyZTk0ZTQwZTA1ZWY4NDRjOTMwYWQ2MTIxNTQwOTBkMTU4YjJjZTY4MSIKLQotREVQRU5EUyArPSAibGlieGtsYXZpZXIgbGlid25jayBsaWJyc3ZnIGdhcmNvbiIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQveGtiIgotCi1SREVQRU5EU18ke1BOfSA9ICJ4ZmNlNC1zZXR0aW5ncyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy94a2IveGZjZTQteGtiLXBsdWdpbl8wLjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy94a2IveGZjZTQteGtiLXBsdWdpbl8wLjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTYyYzAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3hrYi94ZmNlNC14a2ItcGx1Z2luXzAuOC4wLmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiWEtCIGxheW91dCBzd2l0Y2hpbmcgcGFuZWwgcGx1Zy1pbiBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQteGtiLXBsdWdpbiIKK1NFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ5NmYwOWYwODRiMGY3ZTZmMDJmNzY5YTg0NDkwYzZiIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNGU4OTc3NDFlYmUyODI3MTkyOTcxYzJhYWFkODM1ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYjBkM2I5ZjRiN2MzZTNlN2JlNjY4ZTJmN2M4NDViODliMTZlMGVkM2RiMmJhY2I1NDRhMTcyNzI2ODJjZWQwIgorCitERVBFTkRTICs9ICJsaWJ4a2xhdmllciBsaWJ3bmNrMyBsaWJyc3ZnIGdhcmNvbiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQveGtiIgorCitSREVQRU5EU18ke1BOfSA9ICJ4ZmNlNC1zZXR0aW5ncyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvL3JlZHVjZS1idWlsZC10by1leG8tY3NvdXJjZS1vbmx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG8vcmVkdWNlLWJ1aWxkLXRvLWV4by1jc291cmNlLW9ubHkucGF0Y2gKaW5kZXggODA3M2ZjYS4uOTkzMThkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG8vcmVkdWNlLWJ1aWxkLXRvLWV4by1jc291cmNlLW9ubHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG8vcmVkdWNlLWJ1aWxkLXRvLWV4by1jc291cmNlLW9ubHkucGF0Y2gKQEAgLTE1LDExICsxNSwxMSBAQAogU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgogLS0tCiAgTWFrZWZpbGUuYW0gIHwgMTAgKy0tLS0tLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDI2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMzUgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmFjIHwgMjIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMxIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggOTk3OWIzNi4uMDVkNTk0ZSAxMDA2NDQKK2luZGV4IDYyYWQxOGQuLmJkYzVmYWUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0xLDE1ICsxLDcgQEAKQEAgLTQwLDcgKzQwLDcgQEAKICBkaXN0Y2xlYW4tbG9jYWw6CiAgCXJtIC1yZiAqLmNhY2hlICp+CiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiNjZjOTJiLi41MjQzMTMyIDEwMDY0NAoraW5kZXggYmE1Mzk1ZC4uMjYwNTA2NyAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMTE2LDE1ICsxMTYsNiBAQCBBQ19QUk9HX0NDKCkKQEAgLTU5LDM2ICs1OSwyNiBAQAogIAogIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBkbmwgKioqIENoZWNrIGZvciBzdGFuZGFyZCBoZWFkZXIgZmlsZXMgKioqCi1AQCAtMTcxLDI5ICsxNjIsMTIgQEAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitAQCAtMTcxLDE5ICsxNjIsNiBAQCBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBkbmwgKioqIENoZWNrIGZvciByZXF1aXJlZCBwYWNrYWdlcyAqKioKICBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBYRFRfQ0hFQ0tfUEFDS0FHRShbR0xJQl0sIFtnbGliLTIuMF0sIFsyLjMwLjBdKQotLVhEVF9DSEVDS19QQUNLQUdFKFtHSU9dLCBbZ2lvLTIuMF0sIFsyLjMwLjBdKQorIFhEVF9DSEVDS19QQUNLQUdFKFtHTElCXSwgW2dsaWItMi4wXSwgWzIuNDIuMF0pCistWERUX0NIRUNLX1BBQ0tBR0UoW0dJT10sIFtnaW8tMi4wXSwgWzIuNDIuMF0pCiAtWERUX0NIRUNLX1BBQ0tBR0UoW0dUS10sIFtndGsrLTIuMF0sIFsyLjI0LjBdKQotLVhEVF9DSEVDS19QQUNLQUdFKFtHVEhSRUFEXSwgW2d0aHJlYWQtMi4wXSwgWzIuMzAuMF0pCistWERUX0NIRUNLX1BBQ0tBR0UoW0dUSzNdLCBbZ3RrKy0zLjBdLCBbMy4yMC4wXSkKKy1YRFRfQ0hFQ0tfUEFDS0FHRShbR1RIUkVBRF0sIFtndGhyZWFkLTIuMF0sIFsyLjQyLjBdKQogLVhEVF9DSEVDS19QQUNLQUdFKFtMSUJYRkNFNFVUSUxdLCBbbGlieGZjZTR1dGlsLTEuMF0sIFs0LjEwLjBdKQotLVhEVF9DSEVDS19QQUNLQUdFKFtMSUJYRkNFNFVJXSwgW2xpYnhmY2U0dWktMV0sIFs0LjEwLjBdKQotLVhEVF9DSEVDS19PUFRJT05BTF9QQUNLQUdFKFtHSU9fVU5JWF0sIFtnaW8tdW5peC0yLjBdLCBbMi4zMC4wXSwgW2dpby11bml4XSwgW0dJTy1Vbml4IGZlYXR1cmVzXSkKLSAKLSBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBkbmwgKioqIE9wdGlvbmFsIHN1cHBvcnQgZm9yIGEgR1RLKzMgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSAqKioKLSBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS1YRFRfQ0hFQ0tfT1BUSU9OQUxfUEFDS0FHRShbR1RLM10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgW2d0aystMy4wXSwgWzMuNi4wXSwgW2d0azNdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtHVEsrIDMgc3VwcG9ydF0pCi0tWERUX0NIRUNLX09QVElPTkFMX1BBQ0tBR0UoW0xJQlhGQ0U0VUkyXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlieGZjZTR1aS0yXSwgWzQuMTIuMF0sIFtsaWJ4ZmNlNHVpMl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgW0dUSysgMyBzdXBwb3J0OiBsaWJ4ZmNlNHVpLTJdKQotIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfR1RLM19MSUJSQVJZXSwgW3Rlc3QgIngkR1RLM19GT1VORCIgPSAieHllcyIgJiYgdGVzdCAieCRMSUJYRkNFNFVJMl9GT1VORCIgPSAieHllcyIgXSkKLSAKKy1YRFRfQ0hFQ0tfUEFDS0FHRShbTElCWEZDRTRVSV0sIFtsaWJ4ZmNlNHVpLTFdLCBbNC4xMi4wXSkKKy1YRFRfQ0hFQ0tfUEFDS0FHRShbTElCWEZDRTRVSTJdLCBbbGlieGZjZTR1aS0yXSwgWzQuMTIuMF0pCistWERUX0NIRUNLX09QVElPTkFMX1BBQ0tBR0UoW0dJT19VTklYXSwgW2dpby11bml4LTIuMF0sIFsyLjQyLjBdLCBbZ2lvLXVuaXhdLCBbR0lPLVVuaXggZmVhdHVyZXNdKQorLQogLWRubCAqKioqKioqKioqKioqKioqKioqKioKIC1kbmwgKioqIENoZWNrIGZvciBYMTEgKioqCiAtZG5sICoqKioqKioqKioqKioqKioqKioqKgogLVhEVF9DSEVDS19MSUJYMTFfUkVRVUlSRSgpCi0tCisgCiAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioKICBkbmwgKioqIENoZWNrIGZvciBndGstZG9jICoqKgotIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqCiAtLSAKLTIuNS41CisyLjkuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjExLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjExLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMjljMzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotREVTQ1JJUFRJT049IkFwcGxpY2F0aW9uIGxpYnJhcnkgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLURFUEVORFMgPSAiZ3RrKyBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSB2aXJ0dWFsL2xpYngxMSBsaWJ1cmktcGVybC1uYXRpdmUgY2Fpcm8iCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJnbGliLTIuMC1uYXRpdmUgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgeGZjZSBweXRob25uYXRpdmUgcGVybG5hdGl2ZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLSMgU1JDX1VSSSBtdXN0IGZvbGxvdyBpbmhlcml0ZWQgb25lCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9leG8tbm8tdGVzdHMtMC44LnBhdGNoIFwKLSAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCi0gICAgZmlsZTovL3JlZHVjZS1idWlsZC10by1leG8tY3NvdXJjZS1vbmx5LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjBiMDM2YzgwNDJhMmVkNWQzNzY3ZDExNzdhNDIxM2EyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2YmQxYzQyMjk1MDNmZjNjMzAxNDg1ZGUzYTQxYzU1ZGVjOTNlOThkZTFhOWVlZjFiZTc3ZmU1MDJjYTRmNzciCi0KLVBBQ0tBR0VTID0rICJleG8tY3NvdXJjZSIKLQotIyBOb3RlOiBweXRob24gYmluZGluZ3MgZGlkIG5vdCB3b3JrIGluIG9lLWRldiBhbmQgYXJlIGFib3V0IHRvIGJlIG1vdmVkIHRvCi0jIHB5eGZjZSBzZWUgaHR0cDovL2NvbW1lbnRzLmdtYW5lLm9yZy9nbWFuZS5jb21wLmRlc2t0b3AueGZjZS5kZXZlbC52ZXJzaW9uNC8xOTU2MAotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQvIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvZXhvLTEgXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy8uZGVidWcgXAotIgotCi1GSUxFU19leG8tY3NvdXJjZSArPSAiJHtiaW5kaXJ9L2V4by1jc291cmNlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvXzAuMTEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvXzAuMTEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTUwOGMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMS41LmJiCkBAIC0wLDAgKzEsMzkgQEAKK0RFU0NSSVBUSU9OPSJBcHBsaWNhdGlvbiBsaWJyYXJ5IGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgorU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCitERVBFTkRTID0gImd0aysgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgdmlydHVhbC9saWJ4MTEgbGlidXJpLXBlcmwtbmF0aXZlIGNhaXJvIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2xpYi0yLjAtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgorCitpbmhlcml0IHhmY2UgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgorCisjIFNSQ19VUkkgbXVzdCBmb2xsb3cgaW5oZXJpdGVkIG9uZQorU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vZXhvLW5vLXRlc3RzLTAuOC5wYXRjaCBcCisgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgIGZpbGU6Ly9yZWR1Y2UtYnVpbGQtdG8tZXhvLWNzb3VyY2Utb25seS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZTU2MGVkZmE4ZGRmNzdlMjFjNDc4N2E2ZjYwMDE3MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZTg2MjlmMzM3ODNlYmExY2U2ZDA5MmE0MmMyODIxNzQ1OGEwY2MzZDFhZDc0NzQwOTdiOTE4NzA1NDk1NWMxIgorCitQQUNLQUdFUyA9KyAiZXhvLWNzb3VyY2UiCisKKyMgTm90ZTogcHl0aG9uIGJpbmRpbmdzIGRpZCBub3Qgd29yayBpbiBvZS1kZXYgYW5kIGFyZSBhYm91dCB0byBiZSBtb3ZlZCB0bworIyBweXhmY2Ugc2VlIGh0dHA6Ly9jb21tZW50cy5nbWFuZS5vcmcvZ21hbmUuY29tcC5kZXNrdG9wLnhmY2UuZGV2ZWwudmVyc2lvbjQvMTk1NjAKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0LyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L2V4by0xIFwKKyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvLmRlYnVnIFwKKyIKKworRklMRVNfZXhvLWNzb3VyY2UgKz0gIiR7YmluZGlyfS9leG8tY3NvdXJjZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZ2FyY29uL2dhcmNvbl8wLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9nYXJjb24vZ2FyY29uXzAuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTMyNjBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9nYXJjb24vZ2FyY29uXzAuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotREVTQ1JJUFRJT049IlhmY2UgTWVudSBMaWJyYXJ5IgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDRhMDFhYmNiZGFiZmZhZTFjYTI2MzM1YTI5MzI3NmIiCi1ERVBFTkRTID0gInhmY2U0LWRldi10b29scy1uYXRpdmUgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IHhmY2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEteGZjZS1hcHBsaWNhdGlvbnMubWVudS1kb24tdC1ibG9hdC1zZXR0aW5ncy1tZW51LWJ5LS5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhYmE2MmI4MDc4N2FhYzI5NTA4M2JmN2FmZDQxOWZmYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ODdkYzg1OTcxM2I2NTE4OTkyZDc2MGQ0Yjg1OGZiMDJlOGEzMDcwNWU2ZjZlODcxZDdhMTRjYzk3YmNhOTcyIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWd0ay1kb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2Rlc2t0b3AtZGlyZWN0b3JpZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZ2FyY29uL2dhcmNvbl8wLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9nYXJjb24vZ2FyY29uXzAuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZTIzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZ2FyY29uL2dhcmNvbl8wLjYuMS5iYgpAQCAtMCwwICsxLDE3IEBACitERVNDUklQVElPTj0iWGZjZSBNZW51IExpYnJhcnkiCitTRUNUSU9OID0gIngxMS9saWJzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNGEwMWFiY2JkYWJmZmFlMWNhMjYzMzVhMjkzMjc2YiIKK0RFUEVORFMgPSAieGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgeGZjZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS14ZmNlLWFwcGxpY2F0aW9ucy5tZW51LWRvbi10LWJsb2F0LXNldHRpbmdzLW1lbnUtYnktLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjE3NDY5MGFkMTkyNDNmN2VmOTUyOWNiMGMyNGI5MDgwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxYzMxYmEwNDk4YzJjYzM5ZGU0YThlMGMyMzY3NTEwYWRiZjRiYzIxMDRjMTdmZWVlMzU4ZTUxZTZhY2Y2MDMiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3RrLWRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGVza3RvcC1kaXJlY3RvcmllcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLWJhc2UuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1iYXNlLmJiCmluZGV4IGUyZjIzOGMuLjE0MGRlNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLWJhc2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtYmFzZS5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiQWxsIHBhY2thZ2VzIHJlcXVpcmVkIGZvciBhIGJhc2UgaW5zdGFsbGF0aW9uIG9mIFhGQ0UiCiBTRUNUSU9OID0gIngxMS93bSIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIFBSID0gInI1IgogCiBpbmhlcml0IHBhY2thZ2Vncm91cCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLWV4dGVuZGVkLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtZXh0ZW5kZWQuYmIKaW5kZXggYzA3MTg4Zi4uY2MyMzFiNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtZXh0ZW5kZWQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtZXh0ZW5kZWQuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIkFsbCBwYWNrYWdlcyBmb3IgZnVsbCBYRkNFIGluc3RhbGxhdGlvbiIKIFNFQ1RJT04gPSAieDExL3dtIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgogCiBQUiA9ICJyMTAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuNi4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuNi4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc1MGU4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjYuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgbWFuYWdlciBmb3IgdGhlIFhmY2UgRGVza3RvcCBFbnZpcm9ubWVudCIKLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICJleG8gZ2xpYi0yLjAgZ3RrKyBnZGstcGl4YnVmIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIHhmY29uZiBsaWJzbSBkYnVzLWdsaWIgc3RhcnR1cC1ub3RpZmljYXRpb24gbGlibm90aWZ5IHhmY2U0LXBhbmVsIHVkZXYiCi0KLWluaGVyaXQgeGZjZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vYXJjaGl2ZS54ZmNlLm9yZy9zcmMveGZjZS8ke0JQTn0vJHtAJyR7UFZ9J1swOjNdfS9UaHVuYXItJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NzQ5YmU4MjQ3Y2IxOWVkMGZkMzZlNDExOGM2MjM2YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWM3YzMxMjE4MjdmNTk2MTA5MDBlZjFjYzE5YWExMGE1MGFiMmNjM2FlMzhlZWUxNTE4MWI2NDI1NmU4YjQyIgotCi1TID0gIiR7V09SS0RJUn0vVGh1bmFyLSR7UFZ9LyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGNyZSwtLWRpc2FibGUtcGNyZSxsaWJwY3JlIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vdGh1bmFyeC0yLyogXAotICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyogXAotICAgICR7bGliZGlyfS9UaHVuYXIvW1R0XWh1bmFyKiBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9UaHVuYXIgXAotICAgICR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vdGh1bmFyeC0yLy5kZWJ1Zy8gXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8uZGVidWcvIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L1RodW5hci8uZGVidWcvIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJndmZzIGd2ZnNkLXRyYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS42LjEyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS42LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMWIyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjYuMTIuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJGaWxlIG1hbmFnZXIgZm9yIHRoZSBYZmNlIERlc2t0b3AgRW52aXJvbm1lbnQiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKK0RFUEVORFMgPSAiZXhvIGdsaWItMi4wIGd0aysgZ2RrLXBpeGJ1ZiBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSB4ZmNvbmYgbGlic20gZGJ1cy1nbGliIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGxpYm5vdGlmeSB4ZmNlNC1wYW5lbCB1ZGV2IgorCitpbmhlcml0IHhmY2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUueGZjZS5vcmcvc3JjL3hmY2UvJHtCUE59LyR7QCcke1BWfSdbMDozXX0vVGh1bmFyLSR7UFZ9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMWJkZjNjNGE1N2ZmODg2YzUxMjM0MWYyNGI1ZTBlODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmIyMjA5MWYwN2VjNmRlMmM5ZDlkODljNjEyODlkMmJjMzQzNmIzNmM4YzUzY2NiYzljMzJjYThhOTlmMjA4NiIKKworUyA9ICIke1dPUktESVJ9L1RodW5hci0ke1BWfS8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBjcmUsLS1kaXNhYmxlLXBjcmUsbGlicGNyZSIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3RodW5hcngtMi8qIFwKKyAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKKyAgICAke2xpYmRpcn0vVGh1bmFyL1tUdF1odW5hciogXAorICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICR7ZGF0YWRpcn0vVGh1bmFyIFwKKyAgICAke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKiBcCisiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3RodW5hcngtMi8uZGVidWcvIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvLmRlYnVnLyBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9UaHVuYXIvLmRlYnVnLyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3ZmcyBndmZzZC10cmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL21hY2hpbmUtaG9zdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL21hY2hpbmUtaG9zdC5iYgppbmRleCAwM2JkMjA1Li5jNzkxOTc0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2Vzc2lvbi9tYWNoaW5lLWhvc3QuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24vbWFjaGluZS1ob3N0LmJiCkBAIC0xLDYgKzEsNiBAQAogU1VNTUFSWSA9ICJNZXRhIHBhY2thZ2UgYWRkaW5nIG1hY2hpbmUgbmFtZSB0byBrbm93biBob3N0cyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vTElDRU5TRTttZDU9NGQ5MmNkMzczYWJkYTM5MzdjMmJjNDdmYmM0OWQ2OTAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL1JFQURNRS5tZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9SRUFETUUubWQKaW5kZXggYzJlYTA0OC4uZmUxYzJmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL1JFQURNRS5tZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FLm1kCkBAIC0zMywxMiArMzMsMTIgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogKiBVUkk6IGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgKiBicmFuY2g6IHB5cm8KKyAgKiBicmFuY2g6IHJvY2tvCiAgICogcmV2aXNpb246IEhFQUQKIAogKiBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL21ldGEtb3BlbmVtYmVkZGVkCiAgICogbGF5ZXJzOiBtZXRhLW9lLCBtZXRhLW11bHRpbWVkaWEsIG1ldGEtbmV0d29ya2luZywgbWV0YS1weXRob24KLSAgKiBicmFuY2g6IHB5cm8KKyAgKiBicmFuY2g6IHJvY2tvCiAgICogcmV2aXNpb246IEhFQUQKIAogIyMgUXVpY2sgU3RhcnQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jbGFzc2VzL2xpbnV4LXJhc3BiZXJyeXBpLWJhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jbGFzc2VzL2xpbnV4LXJhc3BiZXJyeXBpLWJhc2UuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyNWQ0ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9saW51eC1yYXNwYmVycnlwaS1iYXNlLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1pbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlCi0KLWRlZiBnZXRfZHRzKGQsIHZlcj1Ob25lKToKLSAgICBpbXBvcnQgcmUKLQotICAgIHN0YWdpbmdfZGlyID0gZC5nZXRWYXIoIlNUQUdJTkdfS0VSTkVMX0JVSUxERElSIikKLSAgICBkdHMgPSBkLmdldFZhcigiS0VSTkVMX0RFVklDRVRSRUUiKQotCi0gICAgIyBkLmdldFZhcigpIG1pZ2h0IHJldHVybiAnTm9uZScgYXMgYSBub3JtYWwgc3RyaW5nCi0gICAgIyBsZWFkaW5nIHRvICdpcyBOb25lJyBjaGVjayBpc24ndCBlbm91Z2guCi0gICAgIyBUT0RPOiBJbnZlc3RpZ2F0ZSBpZiB0aGlzIGlzIGEgYnVnIGluIGJpdGJha2UKLSAgICBpZiB2ZXIgaXMgTm9uZSBvciB2ZXIgPT0gIk5vbmUiOgotICAgICAgICAnJycgaWYgJ3ZlcicgaXNuJ3Qgc2V0IHRyeSB0byBncmFiIHRoZSBrZXJuZWwgdmVyc2lvbgotICAgICAgICBmcm9tIHRoZSBrZXJuZWwgc3RhZ2luZyAnJycKLSAgICAgICAgdmVyID0gZ2V0X2tlcm5lbHZlcnNpb25fZmlsZShzdGFnaW5nX2RpcikKLQotICAgIHJldHVybiBkdHMKLQotCi1kZWYgc3BsaXRfb3ZlcmxheXMoZCwgb3V0LCB2ZXI9Tm9uZSk6Ci0gICAgZHRzID0gZ2V0X2R0cyhkLCB2ZXIpCi0gICAgaWYgb3V0OgotICAgICAgICBvdmVybGF5cyA9IG9lLnV0aWxzLnN0cl9maWx0ZXJfb3V0KCdcUytcLW92ZXJsYXlcLmR0YiQnLCBkdHMsIGQpCi0gICAgICAgIG92ZXJsYXlzID0gb2UudXRpbHMuc3RyX2ZpbHRlcl9vdXQoJ1xTK1wuZHRibyQnLCBvdmVybGF5cywgZCkKLSAgICBlbHNlOgotICAgICAgICBvdmVybGF5cyA9IG9lLnV0aWxzLnN0cl9maWx0ZXIoJ1xTK1wtb3ZlcmxheVwuZHRiJCcsIGR0cywgZCkgKyBcCi0gICAgICAgICAgICAgICAgICAgIiAiICsgb2UudXRpbHMuc3RyX2ZpbHRlcignXFMrXC5kdGJvJCcsIGR0cywgZCkKLQotICAgIHJldHVybiBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvc2RjYXJkX2ltYWdlLXJwaS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvc2RjYXJkX2ltYWdlLXJwaS5iYmNsYXNzCmluZGV4IDU2YTg1NGUuLjJkZDkzMjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jbGFzc2VzL3NkY2FyZF9pbWFnZS1ycGkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MKQEAgLTEsNSArMSw0IEBACiBpbmhlcml0IGltYWdlX3R5cGVzCi1pbmhlcml0IGxpbnV4LXJhc3BiZXJyeXBpLWJhc2UKIAogIwogIyBDcmVhdGUgYW4gaW1hZ2UgdGhhdCBjYW4gYnkgd3JpdHRlbiBvbnRvIGEgU0QgY2FyZCB1c2luZyBkZC4KQEAgLTQ4LDE1ICs0NywxNSBAQAogCiAjIFVzZSBhbiB1bmNvbXByZXNzZWQgZXh0MyBieSBkZWZhdWx0IGFzIHJvb3RmcwogU0RJTUdfUk9PVEZTX1RZUEUgPz0gImV4dDMiCi1TRElNR19ST09URlMgPSAiJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ucm9vdGZzLiR7U0RJTUdfUk9PVEZTX1RZUEV9IgorU0RJTUdfUk9PVEZTID0gIiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uJHtTRElNR19ST09URlNfVFlQRX0iCiAKLUlNQUdFX0RFUEVORFNfcnBpLXNkaW1nID0gIiBcCi0JCQlwYXJ0ZWQtbmF0aXZlIFwKLQkJCW10b29scy1uYXRpdmUgXAotCQkJZG9zZnN0b29scy1uYXRpdmUgXAorZG9faW1hZ2VfcnBpX3NkaW1nW2RlcGVuZHNdID0gIiBcCisJCQlwYXJ0ZWQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAorCQkJbXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKKwkJCWRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAogCQkJdmlydHVhbC9rZXJuZWw6ZG9fZGVwbG95IFwKLQkJCSR7SU1BR0VfQk9PVExPQURFUn0gXAotCQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0tFUk5FTF9JTUFHRVRZUEUnLCAndUltYWdlJywgJ3UtYm9vdCcsICcnLGQpfSBcCisJCQkke0lNQUdFX0JPT1RMT0FERVJ9OmRvX2RlcGxveSBcCisJCQkke0BiYi51dGlscy5jb250YWlucygnUlBJX1VTRV9VX0JPT1QnLCAnMScsICd1LWJvb3Q6ZG9fZGVwbG95JywgJycsZCl9IFwKIAkJCSIKIAogIyBTRCBjYXJkIGltYWdlIG5hbWUKQEAgLTc2LDYgKzc1LDE3IEBACiBTRElNR19WRkFUID0gIiR7SU1BR0VfTkFNRX0udmZhdCIKIFNESU1HX0xJTktfVkZBVCA9ICIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LnZmYXQiCiAKK2RlZiBzcGxpdF9vdmVybGF5cyhkLCBvdXQsIHZlcj1Ob25lKToKKyAgICBkdHMgPSBkLmdldFZhcigiS0VSTkVMX0RFVklDRVRSRUUiKQorICAgIGlmIG91dDoKKyAgICAgICAgb3ZlcmxheXMgPSBvZS51dGlscy5zdHJfZmlsdGVyX291dCgnXFMrXC1vdmVybGF5XC5kdGIkJywgZHRzLCBkKQorICAgICAgICBvdmVybGF5cyA9IG9lLnV0aWxzLnN0cl9maWx0ZXJfb3V0KCdcUytcLmR0Ym8kJywgb3ZlcmxheXMsIGQpCisgICAgZWxzZToKKyAgICAgICAgb3ZlcmxheXMgPSBvZS51dGlscy5zdHJfZmlsdGVyKCdcUytcLW92ZXJsYXlcLmR0YiQnLCBkdHMsIGQpICsgXAorICAgICAgICAgICAgICAgICAgICIgIiArIG9lLnV0aWxzLnN0cl9maWx0ZXIoJ1xTK1wuZHRibyQnLCBkdHMsIGQpCisKKyAgICByZXR1cm4gb3ZlcmxheXMKKwogSU1BR0VfQ01EX3JwaS1zZGltZyAoKSB7CiAKIAkjIEFsaWduIHBhcnRpdGlvbnMKQEAgLTg2LDcgKzk2LDcgQEAKIAllY2hvICJDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggQm9vdCBwYXJ0aXRpb24gJHtCT09UX1NQQUNFX0FMSUdORUR9IEtpQiBhbmQgUm9vdEZTICRST09URlNfU0laRSBLaUIiCiAKIAkjIENoZWNrIGlmIHdlIGFyZSBidWlsZGluZyB3aXRoIGRldmljZSB0cmVlIHN1cHBvcnQKLQlEVFM9IiR7QGdldF9kdHMoZCl9IgorCURUUz0iJHtLRVJORUxfREVWSUNFVFJFRX0iCiAKIAkjIEluaXRpYWxpemUgc2RjYXJkIGltYWdlIGZpbGUKIAlkZCBpZj0vZGV2L3plcm8gb2Y9JHtTRElNR30gYnM9MTAyNCBjb3VudD0wIHNlZWs9JHtTRElNR19TSVpFfQpAQCAtMTI2LDE2ICsxMzYsMTMgQEAKIAkJCW1jb3B5IC1pICR7V09SS0RJUn0vYm9vdC5pbWcgLXMgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9LSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSA6Om92ZXJsYXlzLyR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfQogCQlkb25lCiAJZmkKLQljYXNlICIke0tFUk5FTF9JTUFHRVRZUEV9IiBpbgotCSJ1SW1hZ2UiKQorICAgICAgICBpZiBbICIke1JQSV9VU0VfVV9CT09UfSIgPSAiMSIgXTsgdGhlbgogCQltY29weSAtaSAke1dPUktESVJ9L2Jvb3QuaW1nIC1zICR7REVQTE9ZX0RJUl9JTUFHRX0vdS1ib290LmJpbiA6OiR7U0RJTUdfS0VSTkVMSU1BR0V9Ci0JCW1jb3B5IC1pICR7V09SS0RJUn0vYm9vdC5pbWcgLXMgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9JHtLRVJORUxfSU5JVFJBTUZTfS0ke01BQ0hJTkV9LmJpbiA6OnVJbWFnZQorCQltY29weSAtaSAke1dPUktESVJ9L2Jvb3QuaW1nIC1zICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtLRVJORUxfSU1BR0VUWVBFfSR7S0VSTkVMX0lOSVRSQU1GU30tJHtNQUNISU5FfS5iaW4gOjoke0tFUk5FTF9JTUFHRVRZUEV9CiAJCW1jb3B5IC1pICR7V09SS0RJUn0vYm9vdC5pbWcgLXMgJHtERVBMT1lfRElSX0lNQUdFfS9ib290LnNjciA6OmJvb3Quc2NyCi0JCTs7Ci0JKikKKwllbHNlCiAJCW1jb3B5IC1pICR7V09SS0RJUn0vYm9vdC5pbWcgLXMgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9JHtLRVJORUxfSU5JVFJBTUZTfS0ke01BQ0hJTkV9LmJpbiA6OiR7U0RJTUdfS0VSTkVMSU1BR0V9Ci0JCTs7Ci0JZXNhYworCWZpCiAKIAlpZiBbIC1uICR7RkFUUEFZTE9BRH0gXSA7IHRoZW4KIAkJZWNobyAiQ29weWluZyBwYXlsb2FkIGludG8gVkZBVCIKQEAgLTE1MCwyMyArMTU3LDE5IEBACiAJbWNvcHkgLWkgJHtXT1JLRElSfS9ib290LmltZyAtdiAke1dPUktESVJ9L2ltYWdlLXZlcnNpb24taW5mbyA6OgogCiAgICAgICAgICMgRGVwbG95IHZmYXQgcGFydGl0aW9uIChmb3IgdS1ib290IGNhc2Ugb25seSkKLSAgICAgICAgY2FzZSAiJHtLRVJORUxfSU1BR0VUWVBFfSIgaW4KLSAgICAgICAgInVJbWFnZSIpCisgICAgICAgIGlmIFsgIiR7UlBJX1VTRV9VX0JPT1R9IiA9ICIxIiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgY3AgJHtXT1JLRElSfS9ib290LmltZyAke0lNR0RFUExPWURJUn0vJHtTRElNR19WRkFUfQogICAgICAgICAgICAgICAgIGxuIC1zZiAke1NESU1HX1ZGQVR9ICR7U0RJTUdfTElOS19WRkFUfQotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYworICAgICAgICBmaQogCiAJIyBCdXJuIFBhcnRpdGlvbnMKLQlkZCBpZj0ke1dPUktESVJ9L2Jvb3QuaW1nIG9mPSR7U0RJTUd9IGNvbnY9bm90cnVuYyBzZWVrPTEgYnM9JChleHByICR7SU1BR0VfUk9PVEZTX0FMSUdOTUVOVH0gXCogMTAyNCkgJiYgc3luYyAmJiBzeW5jCisJZGQgaWY9JHtXT1JLRElSfS9ib290LmltZyBvZj0ke1NESU1HfSBjb252PW5vdHJ1bmMgc2Vlaz0xIGJzPSQoZXhwciAke0lNQUdFX1JPT1RGU19BTElHTk1FTlR9IFwqIDEwMjQpCiAJIyBJZiBTRElNR19ST09URlNfVFlQRSBpcyBhIC54eiBmaWxlIHVzZSB4emNhdAogCWlmIGVjaG8gIiR7U0RJTUdfUk9PVEZTX1RZUEV9IiB8IGVncmVwIC1xICIqXC54eiIKIAl0aGVuCi0JCXh6Y2F0ICR7U0RJTUdfUk9PVEZTfSB8IGRkIG9mPSR7U0RJTUd9IGNvbnY9bm90cnVuYyBzZWVrPTEgYnM9JChleHByIDEwMjQgXCogJHtCT09UX1NQQUNFX0FMSUdORUR9ICsgJHtJTUFHRV9ST09URlNfQUxJR05NRU5UfSBcKiAxMDI0KSAmJiBzeW5jICYmIHN5bmMKKwkJeHpjYXQgJHtTRElNR19ST09URlN9IHwgZGQgb2Y9JHtTRElNR30gY29udj1ub3RydW5jIHNlZWs9MSBicz0kKGV4cHIgMTAyNCBcKiAke0JPT1RfU1BBQ0VfQUxJR05FRH0gKyAke0lNQUdFX1JPT1RGU19BTElHTk1FTlR9IFwqIDEwMjQpCiAJZWxzZQotCQlkZCBpZj0ke1NESU1HX1JPT1RGU30gb2Y9JHtTRElNR30gY29udj1ub3RydW5jIHNlZWs9MSBicz0kKGV4cHIgMTAyNCBcKiAke0JPT1RfU1BBQ0VfQUxJR05FRH0gKyAke0lNQUdFX1JPT1RGU19BTElHTk1FTlR9IFwqIDEwMjQpICYmIHN5bmMgJiYgc3luYworCQlkZCBpZj0ke1NESU1HX1JPT1RGU30gb2Y9JHtTRElNR30gY29udj1ub3RydW5jIHNlZWs9MSBicz0kKGV4cHIgMTAyNCBcKiAke0JPT1RfU1BBQ0VfQUxJR05FRH0gKyAke0lNQUdFX1JPT1RGU19BTElHTk1FTlR9IFwqIDEwMjQpCiAJZmkKIAogCSMgT3B0aW9uYWxseSBhcHBseSBjb21wcmVzc2lvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL2xheWVyLmNvbmYKaW5kZXggYmVhNWE2NS4uYmJkY2UxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9sYXllci5jb25mCkBAIC0xMiwzICsxMiwxMiBAQAogIyBBZGRpdGlvbmFsIGxpY2Vuc2UgZGlyZWN0b3JpZXMuCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2ZpbGVzL2N1c3RvbS1saWNlbnNlcyIKIAorIyBUaGUgZHluYW1pYy1sYXllcnMgZGlyZWN0b3J5IGhvc3RzIHRoZSBleHRlbnNpb25zIGFuZCBsYXllciBzcGVjaWZpYworIyBtb2RpZmljYXRpb25zLgorIworIyBUaGUgLmJiYXBwZW5kIGFuZCAuYmIgZmlsZXMgYXJlIGluY2x1ZGVkIGlmIHRoZSByZXNwZWN0aXZlIGxheWVyCisjIGNvbGxlY3Rpb24gaXMgYXZhaWxhYmxlLgorQkJGSUxFUyArPSAiJHtAJyAnLmpvaW4oJyR7TEFZRVJESVJ9L2R5bmFtaWMtbGF5ZXJzLyVzL3JlY2lwZXMqLyovKi5iYmFwcGVuZCcgJSBsYXllciBcCisgICAgICAgICAgICAgICBmb3IgbGF5ZXIgaW4gQkJGSUxFX0NPTExFQ1RJT05TLnNwbGl0KCkpfSIKK0JCRklMRVMgKz0gIiR7QCcgJy5qb2luKCcke0xBWUVSRElSfS9keW5hbWljLWxheWVycy8lcy9yZWNpcGVzKi8qLyouYmInICUgbGF5ZXIgXAorICAgICAgICAgICAgICAgZm9yIGxheWVyIGluIEJCRklMRV9DT0xMRUNUSU9OUy5zcGxpdCgpKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL2luY2x1ZGUvcnBpLWJhc2UuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYwppbmRleCA3ZWQxMDg4Li42ODgyMjdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL2luY2x1ZGUvcnBpLWJhc2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKQEAgLTQxLDcgKzQxLDE3IEBACiAgICAgb3ZlcmxheXMvcGkzLW1pbml1YXJ0LWJ0LmR0Ym8gXAogICAgIG92ZXJsYXlzL3ZjNC1rbXMtdjNkLmR0Ym8gXAogICAgICIKLUtFUk5FTF9JTUFHRVRZUEUgPz0gIkltYWdlIgorCisjIEJ5IGRlZmF1bHQ6CisjCisjICogV2hlbiB1LWJvb3QgaXMgZGlzYWJsZWQgdXNlIHRoZSAiSW1hZ2UiIGZvcm1hdCB3aGljaCBjYW4gYmUgZGlyZWN0bHkgbG9hZGVkCisjICAgYnkgdGhlIHJwaSBmaXJtd2FyZS4KKyMKKyMgKiBXaGVuIHUtYm9vdCBpcyBlbmFibGVkIHVzZSB0aGUgInVJbWFnZSIgZm9ybWF0IGFuZCB0aGUgImJvb3RtIiBjb21tYW5kCisjICAgd2l0aGluIHUtYm9vdCB0byBsb2FkIHRoZSBrZXJuZWwuCitLRVJORUxfQk9PVENNRCA/Pz0gImJvb3RtIgorS0VSTkVMX0lNQUdFVFlQRV9VQk9PVCA/Pz0gInVJbWFnZSIKK0tFUk5FTF9JTUFHRVRZUEUgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdSUElfVVNFX1VfQk9PVCcsICcxJywgJyR7S0VSTkVMX0lNQUdFVFlQRV9VQk9PVH0nLCAnSW1hZ2UnLCBkKX0iCiAKIE1BQ0hJTkVfRkVBVFVSRVMgKz0gImFwbSB1c2Job3N0IGtleWJvYXJkIHZmYXQgZXh0MiBzY3JlZW4gdG91Y2hzY3JlZW4gYWxzYSBibHVldG9vdGggd2lmaSBzZGlvIgogCkBAIC04Myw3ICs5Myw3IEBACiAKIElNQUdFX0JPT1RfRklMRVMgPz0gImJjbTI4MzUtYm9vdGZpbGVzLyogXAogICAgICAgICAgICAgICAgICAke0BtYWtlX2R0Yl9ib290X2ZpbGVzKGQpfSBcCi0gICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdLRVJORUxfSU1BR0VUWVBFJywgJ3VJbWFnZScsIFwKKyAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1JQSV9VU0VfVV9CT09UJywgJzEnLCBcCiAgICAgICAgICAgICAgICAgICAgICcke0tFUk5FTF9JTUFHRVRZUEV9IHUtYm9vdC5iaW47JHtTRElNR19LRVJORUxJTUFHRX0gYm9vdC5zY3InLCBcCiAgICAgICAgICAgICAgICAgICAgICcke0tFUk5FTF9JTUFHRVRZUEV9OyR7U0RJTUdfS0VSTkVMSU1BR0V9JywgZCl9IFwKICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTMtNjQuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLTY0LmNvbmYKaW5kZXggZTNkMTFmMi4uZWJjOWYzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTMtNjQuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy02NC5jb25mCkBAIC0zMSw2ICszMSw3IEBACiAgICAgb3ZlcmxheXMvcGkzLWRpc2FibGUtYnQuZHRibyBcCiAgICAgb3ZlcmxheXMvcGkzLW1pbml1YXJ0LWJ0LmR0Ym8gXAogICAgIG92ZXJsYXlzL3ZjNC1rbXMtdjNkLmR0Ym8gXAorICAgIG92ZXJsYXlzL3ZjNC1ma21zLXYzZC5kdGJvIFwKICAgICAiCiAKIFNFUklBTF9DT05TT0xFID89ICIxMTUyMDAgdHR5UzAiCkBAIC0zOCwzICszOSw4IEBACiAKIFVCT09UX01BQ0hJTkUgPSAicnBpXzNfY29uZmlnIgogTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIHZjNGdyYXBoaWNzIgorCisjIFdoZW4gdS1ib290IGlzIGVuYWJsZWQgd2UgbmVlZCB0byB1c2UgdGhlICJJbWFnZSIgZm9ybWF0IGFuZCB0aGUgImJvb3RpIgorIyBjb21tYW5kIHRvIGxvYWQgdGhlIGtlcm5lbAorS0VSTkVMX0lNQUdFVFlQRV9VQk9PVCA/PSAiSW1hZ2UiCitLRVJORUxfQk9PVENNRCA/PSAiYm9vdGkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9jb25mLnB5IGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvY29uZi5weQppbmRleCBjZTBiYjBhLi5lYjk4YzQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9jb25mLnB5CisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2NvbmYucHkKQEAgLTU4LDkgKzU4LDkgQEAKICMgYnVpbHQgZG9jdW1lbnRzLgogIwogIyBUaGUgc2hvcnQgWC5ZIHZlcnNpb24uCi12ZXJzaW9uID0gJ3B5cm8nCit2ZXJzaW9uID0gJ3JvY2tvJwogIyBUaGUgZnVsbCB2ZXJzaW9uLCBpbmNsdWRpbmcgYWxwaGEvYmV0YS9yYyB0YWdzLgotcmVsZWFzZSA9ICdweXJvJworcmVsZWFzZSA9ICdyb2NrbycKIAogIyBUaGUgbGFuZ3VhZ2UgZm9yIGNvbnRlbnQgYXV0b2dlbmVyYXRlZCBieSBTcGhpbnguIFJlZmVyIHRvIGRvY3VtZW50YXRpb24KICMgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYnVpbGQtY29uZmlnLm1kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYnVpbGQtY29uZmlnLm1kCmluZGV4IDM2NWM0OTAuLjM4MGQ5NjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2V4dHJhLWJ1aWxkLWNvbmZpZy5tZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1idWlsZC1jb25maWcubWQKQEAgLTk1LDE0ICs5NSwyMiBAQAogCiAgICAgRU5BQkxFX0tHREIgPSAiMSIKIAorIyMgRGlzYWJsZSBycGkgYm9vdCBsb2dvCisKK1RvIGRpc2FibGUgcnBpIGJvb3QgbG9nbywgc2V0IHRoaXMgdmFyaWFibGUgaW4gbG9jYWwuY29uZjoKKworICAgIERJU0FCTEVfUlBJX0JPT1RfTE9HTyA9ICIxIgorCiAjIyBCb290IHRvIFUtQm9vdAogCiBUbyBoYXZlIHUtYm9vdCBsb2FkIGtlcm5lbCBpbWFnZSwgc2V0IGluIHlvdXIgbG9jYWwuY29uZjoKIAotICAgIEtFUk5FTF9JTUFHRVRZUEUgPSAidUltYWdlIgorICAgIFJQSV9VU0VfVV9CT09UID0gIjEiCiAKLVRoaXMgd2lsbCBtYWtlIGtlcm5lbC5pbWcgYmUgdS1ib290IGltYWdlIHdoaWNoIHdpbGwgbG9hZCB1SW1hZ2UuIEJ5IGRlZmF1bHQsCi1rZXJuZWwuaW1nIGlzIHRoZSBhY3R1YWwga2VybmVsIGltYWdlIChleC4gSW1hZ2UpLgorVGhpcyB3aWxsIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgaW1hZ2UgZm9ybWF0IGZvciB1c2Ugd2l0aCB1LWJvb3QgYXV0b21hdGljYWxseS4KK0ZvciBmdXJ0aGVyIGN1c3RvbWlzYXRpb24gdGhlIEtFUk5FTF9JTUFHRVRZUEUgYW5kIEtFUk5FTF9CT09UQ01EIHZhcmlhYmxlcyBjYW4KK2JlIG92ZXJyaWRkZW4gdG8gc2VsZWN0IHRoZSBleGFjdCBrZXJuZWwgaW1hZ2UgdHlwZSAoZWcuIHpJbWFnZSkgYW5kIHUtYm9vdAorY29tbWFuZCAoZWcuIGJvb3R6KSB0byBiZSB1c2VkLgogCiAjIyBJbWFnZSB3aXRoIEluaXRyYW1mcwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL2JjbTI4MzUtYm9vdGZpbGVzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9iY20yODM1LWJvb3RmaWxlcy5iYgppbmRleCBiMjc5ZTE1Li5hMTE1MDM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL2JjbTI4MzUtYm9vdGZpbGVzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvYmNtMjgzNS1ib290ZmlsZXMuYmIKQEAgLTksNyArOSw3IEBACiAKIFJERVBFTkRTXyR7UE59ID0gInJwaS1jb25maWciCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICJyYXNwYmVycnlwaSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKIAogUyA9ICIke1JQSUZXX1N9L2Jvb3QiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvcnBpLWNvbmZpZ19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL3JwaS1jb25maWdfZ2l0LmJiCmluZGV4IGIzYzUwODQuLmNhNDE2MGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvcnBpLWNvbmZpZ19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9ycGktY29uZmlnX2dpdC5iYgpAQCAtNSw3ICs1LDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICJyYXNwYmVycnlwaSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKIAogU1JDUkVWID0gIjY0OGZmYzQ3MDgyNGM0M2ViMGQxNmM0ODVmNGMyNDgxNmIzMmNkNmYiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRXZpbHBhdWwvUlBpLWNvbmZpZy5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD1tYXN0ZXIgXApAQCAtMjEsNyArMjEsOCBAQAogUElURlQzNXI9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInBpdGZ0MzVyIiwgIjEiLCAiMCIsIGQpfSIKIAogVkM0R1JBUEhJQ1M9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInZjNGdyYXBoaWNzIiwgIjEiLCAiMCIsIGQpfSIKLQorVkM0RFRCT19yYXNwYmVycnlwaTMtNjQgPSAidmM0LWZrbXMtdjNkIgorVkM0RFRCTyA/PSAidmM0LWttcy12M2QiCiBpbmhlcml0IGRlcGxveQogCiBkb19kZXBsb3koKSB7CkBAIC0xMTQsNyArMTE1LDcgQEAKICAgICAjIFZDNCBHcmFwaGljcyBzdXBwb3J0CiAgICAgaWYgWyAiJHtWQzRHUkFQSElDU30iID0gIjEiIF07IHRoZW4KICAgICAgICAgZWNobyAiIyBFbmFibGUgVkM0IEdyYXBoaWNzIiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAotICAgICAgICBlY2hvICJkdG92ZXJsYXk9dmM0LWttcy12M2QsJHtWQzRfQ01BX1NJWkV9IiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorICAgICAgICBlY2hvICJkdG92ZXJsYXk9JHtWQzREVEJPfSwke1ZDNF9DTUFfU0laRX0iID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CiAgICAgZmkKIAogICAgICMgV2F2ZXNoYXJlICJDIiAxMDI0eDYwMCA3IiBSZXYyLjEgSVBTIGNhcGFjaXRpdmUgdG91Y2ggKGh0dHA6Ly93d3cud2F2ZXNoYXJlLmNvbS83aW5jaC1IRE1JLUxDRC1DLmh0bSkKQEAgLTEyOSw2ICsxMzAsMTIgQEAKIH0KIAogZG9fZGVwbG95X2FwcGVuZF9yYXNwYmVycnlwaTMtNjQoKSB7CisgICAgZWNobyAiIyBoYXZlIGEgcHJvcGVybHkgc2l6ZWQgaW1hZ2UiID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgZWNobyAiZGlzYWJsZV9vdmVyc2Nhbj0xIiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorCisgICAgZWNobyAiIyBFbmFibGUgYXVkaW8gKGxvYWRzIHNuZF9iY20yODM1KSIgPj4gJHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKKyAgICBlY2hvICJkdHBhcmFtPWF1ZGlvPW9uIiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAorCiAgICAgIyBEZXZpY2UgVHJlZSBzdXBwb3J0CiAgICAgZWNobyAiIyBMb2FkIGNvcnJlY3QgRGV2aWNlIFRyZWUgZm9yIEFhcmNoNjQiID4+JHtERVBMT1lESVJ9L2JjbTI4MzUtYm9vdGZpbGVzL2NvbmZpZy50eHQKICAgICBlY2hvICJkZXZpY2VfdHJlZT1iY20yNzEwLXJwaS0zLWIuZHRiIiA+PiR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvZmlsZXMvYm9vdC5jbWQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvZmlsZXMvYm9vdC5jbWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlODQ1MmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc2NyL2ZpbGVzL2Jvb3QuY21kCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1mZHQgYWRkciAke2ZkdF9hZGRyfSAmJiBmZHQgZ2V0IHZhbHVlIGJvb3RhcmdzIC9jaG9zZW4gYm9vdGFyZ3MKLWZhdGxvYWQgbW1jIDA6MSAke2tlcm5lbF9hZGRyX3J9IHVJbWFnZQotYm9vdG0gJHtrZXJuZWxfYWRkcl9yfSAtICR7ZmR0X2FkZHJ9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvZmlsZXMvYm9vdC5jbWQuaW4gYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvZmlsZXMvYm9vdC5jbWQuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ1NGNkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9maWxlcy9ib290LmNtZC5pbgpAQCAtMCwwICsxLDMgQEAKK2ZkdCBhZGRyICR7ZmR0X2FkZHJ9ICYmIGZkdCBnZXQgdmFsdWUgYm9vdGFyZ3MgL2Nob3NlbiBib290YXJncworZmF0bG9hZCBtbWMgMDoxICR7a2VybmVsX2FkZHJfcn0gQEBLRVJORUxfSU1BR0VUWVBFQEAKK0BAS0VSTkVMX0JPT1RDTURAQCAke2tlcm5lbF9hZGRyX3J9IC0gJHtmZHRfYWRkcn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9ycGktdS1ib290LXNjci5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNjci9ycGktdS1ib290LXNjci5iYgppbmRleCA0OTM2ZGNmLi4zNDU3MzAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zY3IvcnBpLXUtYm9vdC1zY3IuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc2NyL3JwaS11LWJvb3Qtc2NyLmJiCkBAIC0xLDEzICsxLDE2IEBACiBTVU1NQVJZID0gIlUtYm9vdCBib290IHNjcmlwdHMgZm9yIFJhc3BiZXJyeSBQaSIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicnBpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBERVBFTkRTID0gInUtYm9vdC1ta2ltYWdlLW5hdGl2ZSIKIAotU1JDX1VSSSA9ICJmaWxlOi8vYm9vdC5jbWQiCitTUkNfVVJJID0gImZpbGU6Ly9ib290LmNtZC5pbiIKIAogZG9fY29tcGlsZSgpIHsKKyAgICBzZWQgLWUgJ3MvQEBLRVJORUxfSU1BR0VUWVBFQEAvJHtLRVJORUxfSU1BR0VUWVBFfS8nIFwKKyAgICAgICAgLWUgJ3MvQEBLRVJORUxfQk9PVENNREBALyR7S0VSTkVMX0JPT1RDTUR9LycgXAorICAgICAgICAiJHtXT1JLRElSfS9ib290LmNtZC5pbiIgPiAiJHtXT1JLRElSfS9ib290LmNtZCIKICAgICBta2ltYWdlIC1BIGFybSAtVCBzY3JpcHQgLUMgbm9uZSAtbiAiQm9vdCBzY3JpcHQiIC1kICIke1dPUktESVJ9L2Jvb3QuY21kIiBib290LnNjcgogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV8lLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfJS5iYmFwcGVuZAppbmRleCA5NTZkNzc2Li4wM2VmZDVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV8lLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XyUuYmJhcHBlbmQKQEAgLTEsNiArMSw2IEBACiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCiAKLVNSQ19VUklfYXBwZW5kX3Jhc3BiZXJyeXBpMyA9ICIgXAorQkNNX0JUX1NPVVJDRVMgPSAgIiBcCiAgICAgZmlsZTovL0JDTTQzNDMwQTEuaGNkIFwKICAgICBmaWxlOi8vMDAwMS1iY200M3h4LUFkZC1iY200M3h4LTN3aXJlLXZhcmlhbnQucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAyLWJjbTQzeHgtVGhlLVVBUlQtc3BlZWQtbXVzdC1iZS1yZXNldC1hZnRlci10aGUtZmlybXcucGF0Y2ggXApAQCAtOSw3ICs5LDcgQEAKICAgICBmaWxlOi8vYnJjbTQzNDM4LnNlcnZpY2UgXAogICAgICIKIAotZG9faW5zdGFsbF9hcHBlbmRfcmFzcGJlcnJ5cGkzKCkgeworZW5hYmxlX2JjbV9ibHVldG9vdGgoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9L2xpYi9maXJtd2FyZS9icmNtLwogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L0JDTTQzNDMwQTEuaGNkICR7RH0vbGliL2Zpcm13YXJlL2JyY20vQkNNNDM0MzBBMS5oY2QKIApAQCAtMTksOCArMTksMzAgQEAKICAgICBmaQogfQogCi1GSUxFU18ke1BOfV9hcHBlbmRfcmFzcGJlcnJ5cGkzID0gIiBcCitCQ01fQlRfRklSTVdBUkUgPSAgIiBcCiAgICAgL2xpYi9maXJtd2FyZS9icmNtL0JDTTQzNDMwQTEuaGNkIFwKICAgICAiCiAKLVNZU1RFTURfU0VSVklDRV8ke1BOfV9hcHBlbmRfcmFzcGJlcnJ5cGkzID0gIiBicmNtNDM0Mzguc2VydmljZSIKK0JDTV9CVF9TRVJWSUNFID0gICIgYnJjbTQzNDM4LnNlcnZpY2UiCisKKyMgZm9yIHJhc3BiZXJyeXBpMworU1JDX1VSSV9hcHBlbmRfcmFzcGJlcnJ5cGkzID0gIiAke0JDTV9CVF9TT1VSQ0VTfSIKKworZG9faW5zdGFsbF9hcHBlbmRfcmFzcGJlcnJ5cGkzKCkgeworICAgIGVuYWJsZV9iY21fYmx1ZXRvb3RoCit9CisKK0ZJTEVTXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTMgPSAiICR7QkNNX0JUX0ZJUk1XQVJFfSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTMgPSAiICR7QkNNX0JUX1NFUlZJQ0V9IgorCisjIGZvciByYXNwYmVycnlwaTAtd2lmaQorU1JDX1VSSV9hcHBlbmRfcmFzcGJlcnJ5cGkwLXdpZmkgPSAiICR7QkNNX0JUX1NPVVJDRVN9IgorCitkb19pbnN0YWxsX2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSgpIHsKKyAgICBlbmFibGVfYmNtX2JsdWV0b290aAorfQorCitGSUxFU18ke1BOfV9hcHBlbmRfcmFzcGJlcnJ5cGkwLXdpZmkgPSAiICR7QkNNX0JUX0ZJUk1XQVJFfSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgJHtCQ01fQlRfU0VSVklDRX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcy9ycGktdGVzdC1pbWFnZS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvaW1hZ2VzL3JwaS10ZXN0LWltYWdlLmJiCmluZGV4IGI1NjAyYTYuLmM4ZGM0MzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvaW1hZ2VzL3JwaS10ZXN0LWltYWdlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvaW1hZ2VzL3JwaS10ZXN0LWltYWdlLmJiCkBAIC0xLDQgKzEsNiBAQAogIyBCYXNlIHRoaXMgaW1hZ2Ugb24gcnBpLWJhc2ljLWltYWdlCiBpbmNsdWRlIHJwaS1iYXNpYy1pbWFnZS5iYgogCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCisKIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBwYWNrYWdlZ3JvdXAtcnBpLXRlc3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXJwaS10ZXN0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ycGktdGVzdC5iYgppbmRleCAyOWU5OTVlLi4wMjljMThjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXJwaS10ZXN0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtcnBpLXRlc3QuYmIKQEAgLTQsOCArNCwxMyBAQAogCiBpbmhlcml0IHBhY2thZ2Vncm91cAogCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCisKK09NWFBMQVlFUl9ycGkgPSAib214cGxheWVyIgorT01YUExBWUVSX3JwaV9hYXJjaDY0ID0gIiIKKwogUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIG9teHBsYXllciBcCisgICAgJHtPTVhQTEFZRVJ9IFwKICAgICBiY20yODM1LXRlc3RzIFwKICAgICB3aXJpbmdwaSBcCiAgICAgcnBpbyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9iY20yODM1L2JjbTI4MzVfMS41Mi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUvYmNtMjgzNV8xLjUyLmJiCmluZGV4IDhlNDFjNjEuLmVlZjZhZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUvYmNtMjgzNV8xLjUyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUvYmNtMjgzNV8xLjUyLmJiCkBAIC04LDcgKzgsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicmFzcGJlcnJ5cGkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5haXJzcGF5Y2UuY29tL21pa2VtL2JjbTI4MzUvYmNtMjgzNS0ke1BWfS50YXIuZ3oiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlci5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXIuaW5jCmluZGV4IGE1NDg5NTcuLjNjYjc5Y2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9waS1ibGFzdGVyLmluYwpAQCAtMiw3ICsyLDcgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYXJmYXRhL3BpLWJsYXN0ZXIvIgogU0VDVElPTiA9ICJkZXZlbC9saWJzIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7YmVnaW5saW5lPTIxMjtlbmRsaW5lPTIzOTttZDU9YTAxMjg2OGVmNWY4M2I5ZjI1N2FmMjUzZDdjYjA3YTMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7YmVnaW5saW5lPTIyNTtlbmRsaW5lPTI1MjttZDU9YTAxMjg2OGVmNWY4M2I5ZjI1N2FmMjUzZDdjYjA3YTMiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zYXJmYXRhL3BpLWJsYXN0ZXIgXAogICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWluaXRzY3JpcHQtbHNiLWRlcGVuZGVuY3kucGF0Y2ggXApAQCAtMTYsNiArMTYsNiBAQAogSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gIiR7UE59LmJvb3Quc2giCiBJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJkZWZhdWx0cyAxNSA4NSIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gInJhc3BiZXJyeXBpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9waS1ibGFzdGVyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKaW5kZXggYWM4MTJhYi4uNzMwZjlkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9waS1ibGFzdGVyX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXJfZ2l0LmJiCkBAIC0xLDMgKzEsMyBAQAogcmVxdWlyZSBwaS1ibGFzdGVyLmluYwogCi1TUkNSRVYgPSAiOWY0NWViMjNhOGEzYjJkMWMwOGQwOGE2ZDY4ZjIwNmZlOTFlY2Y0YyIKK1NSQ1JFViA9ICIxMDM1YWQ3ZGZmYjI3MGM0MGVlYzFiYjNhNjU0MTcxYTc1NWZiYTk4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW5zZS1oYXRfMi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbnNlLWhhdF8yLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk5MGEyOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbnNlLWhhdF8yLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIG1vZHVsZSB0byBjb250cm9sIHRoZSBSYXNwYmVycnkgUGkgU2Vuc2UgSEFUIHVzZWQgaW4gdGhlIEFzdHJvIFBpIG1pc3Npb24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9weXRob24tc2Vuc2UtaGF0IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UudHh0O21kNT1kODBmZTMxMmUxZmY1ZmJkOTczNjliMDkzYmYyMWNkYSIKLQotU1JDTkFNRSA9ICJzZW5zZS1oYXQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL3MvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcxMjE3ZjE1ZWE5NjMwNDBmMDZlMmY1MDcyMjE4NmNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2Yzc2NzA3YzBlYTUxNGU0YjBmMWY5NmYxYjViNzk3NTU4NzU4OTFhYWUwMzdkZjc0MzRiNmFhZDdiOWRiY2EiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotREVQRU5EUyArPSAiIFwKLSAgICBqcGVnIFwKLSAgICB6bGliIFwKLSAgICBmcmVldHlwZSBcCi0gICAgIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBweXRob24tbnVtcHkgXAotICAgIHB5dGhvbi1ydGltdSBcCi0gICAgcHl0aG9uLWltYWdpbmcgXAotICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Vuc2UtaGF0XzIuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW5zZS1oYXRfMi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdjNGUzNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Vuc2UtaGF0XzIuMi4wLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIG1vZHVsZSB0byBjb250cm9sIHRoZSBSYXNwYmVycnkgUGkgU2Vuc2UgSEFUIHVzZWQgaW4gdGhlIEFzdHJvIFBpIG1pc3Npb24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9weXRob24tc2Vuc2UtaGF0IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UudHh0O21kNT1kODBmZTMxMmUxZmY1ZmJkOTczNjliMDkzYmYyMWNkYSIKKworaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKKworUFlQSV9QQUNLQUdFID0gInNlbnNlLWhhdCIKKworU1JDX1VSSVttZDVzdW1dID0gIjY5OTI5MjUwY2I3MjM0OWE4YTgyZWRmMjU4NGIxZDgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYwMDA5OThkMDQyZDk2ZWQ3MjJkNDU5MzEyZTFiZWJkMDEwN2Y5ZjMwMTVjZDM0YjNlNGZhYmNhYjljODAwYWYiCisKK0RFUEVORFMgKz0gIiBcCisgICAganBlZyBcCisgICAgemxpYiBcCisgICAgZnJlZXR5cGUgXAorICAgICIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcHl0aG9uLW51bXB5IFwKKyAgICBweXRob24tcnRpbXUgXAorICAgIHB5dGhvbi1pbWFnaW5nIFwKKyAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW9fMC42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW9fMC42LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOGVhOTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaS1ncGlvXzAuNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBtb2R1bGUgdG8gY29udHJvbCBSYXNwYmVycnkgUGkgR1BJTyBjaGFubmVscyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9yYXNwYmVycnktZ3Bpby1weXRob24vIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UudHh0O21kNT05Yjk1NjMwYTY0ODk2NmIxNDJmMWEwZGNlYTAwMWNiNyIKLQotU1JDTkFNRSA9ICJSUGkuR1BJTyIKLQotU1JDX1VSSSA9ICJcCi0gICAgICAgICAgaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvUi9SUGkuR1BJTy8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW5lc3RlZC1mdW5jdGlvbnMucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZGI4NmZkNWYzYmFlODcyZGU5ZGJiMDY4ZWUwYjA5NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmFjZmYwZWY2YmJlM2NkZjZmNGRiZGQ3M2Q5NmFkZDUyOTRiYjk0YmFmN2Y1MWMxZDkwMTg2MWFmM2MyMzkyIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInJhc3BiZXJyeXBpIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW9fMC42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW9fMC42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBmZjAwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpb18wLjYuMy5iYgpAQCAtMCwwICsxLDE0IEBACitERVNDUklQVElPTiA9ICJBIG1vZHVsZSB0byBjb250cm9sIFJhc3BiZXJyeSBQaSBHUElPIGNoYW5uZWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3Jhc3BiZXJyeS1ncGlvLXB5dGhvbi8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS50eHQ7bWQ1PTliOTU2MzBhNjQ4OTY2YjE0MmYxYTBkY2VhMDAxY2I3IgorCitQWVBJX1BBQ0tBR0UgPSAiUlBpLkdQSU8iCitpbmhlcml0IHB5cGkgZGlzdHV0aWxzCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVJlbW92ZS1uZXN0ZWQtZnVuY3Rpb25zLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImU0YWJlMWNmYjVlYWNlYmU1MzA3ODAzMjI1NmViODM3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE1ZmMwZWI1ZTQwMTk2M2I2YzBhMDM2NTBkYTZiNDJjNDAwNWYwMmQ5NjJiODEyNDFkOTZjOThkMGE1Nzg1MTYiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvXzAuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvXzAuMTAuMC5iYgppbmRleCAxYTZjZWU3Li45OThmZGIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpb18wLjEwLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaW9fMC4xMC4wLmJiCkBAIC0xNCw3ICsxNCw3IEBACiAKIGluaGVyaXQgc2V0dXB0b29scwogCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicmFzcGJlcnJ5cGkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiXnJwaSQiCiAKIFJERVBFTkRTXyR7UE59ID0gIlwKICAgICBweXRob24tbG9nZ2luZyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS93aXJpbmdwaV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS93aXJpbmdwaV9naXQuYmIKaW5kZXggNzk1M2E1NS4uZjFiMDFkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkvd2lyaW5ncGlfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3dpcmluZ1BpL3dpcmluZ3BpX2dpdC5iYgpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtaW5pdGlhbC1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICAiCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICJyYXNwYmVycnlwaSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKIAogQ0ZMQUdTX3ByZXBlbmQgPSAiLUkke1N9L3dpcmluZ1BpIC1JJHtTfS9kZXZMaWIgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZF9naXQuYmIKaW5kZXggNTc5YWFjZS4uZDM4YjAyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kX2dpdC5iYgpAQCAtMTIsNyArMTIsNyBAQAogCiBSUFJPVklERVNfJHtQTn0gKz0gImxpYmdsZXMyIGVnbCBsaWJlZ2wiCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICJyYXNwYmVycnlwaSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKIAogU1JDQlJBTkNIID0gIm1hc3RlciIKIFNSQ0ZPUksgPSAicmFzcGJlcnJ5cGkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy92Yy1ncmFwaGljcy92Yy1ncmFwaGljcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy92Yy1ncmFwaGljcy92Yy1ncmFwaGljcy5pbmMKaW5kZXggYTFjOGQyOS4uNjY4YzVjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MvdmMtZ3JhcGhpY3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL3ZjLWdyYXBoaWNzLmluYwpAQCAtNCw3ICs0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTg2ZTUzZjVmNTkwOWVlNjY5MDA0MTgwMjhkZTExNzgwIgogCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIgotQ09NUEFUSUJMRV9NQUNISU5FID0gInJhc3BiZXJyeXBpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBpbmNsdWRlIHJlY2lwZXMtYnNwL2NvbW1vbi9maXJtd2FyZS5pbmMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXyUuYmJhcHBlbmQKaW5kZXggZjJjYjdhYS4uNTVjZjcwMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fJS5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8lLmJiYXBwZW5kCkBAIC0xLDEyICsxLDEwIEBACi1FWFRSQV9PRUNPTkZfYXBwZW5kX3JwaSA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnIC0tZW5hYmxlLXJwaS1jb21wb3NpdG9yIFdFU1RPTl9OQVRJVkVfQkFDS0VORD1ycGktYmFja2VuZC5zbycsIGQpfSIKLQogUEFDS0FHRUNPTkZJR19yZW1vdmVfcnBpID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJ2ZiZGV2JywgJycsIGQpfSIKIAotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUteHdheWxhbmQtdGVzdCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMgXAorRVhUUkFfT0VDT05GX2FwcGVuZF9ycGkgPSAiIFwKKyAgICAtLWRpc2FibGUteHdheWxhbmQtdGVzdCBcCisgICAgLS1kaXNhYmxlLXNpbXBsZS1lZ2wtY2xpZW50cyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAndmM0Z3JhcGhpY3MnLCAnJywgJyBcCisgICAgICAgIC0tZGlzYWJsZS1yZXNpemUtb3B0aW1pemF0aW9uIFwKKyAgICAgICAgLS1kaXNhYmxlLXNldHVpZC1pbnN0YWxsIFwKKyAgICAnLCBkKX0gXAogIgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICctLWVuYWJsZS1ycGktY29tcG9zaXRvcicsIGQpfSIKLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAndmM0Z3JhcGhpY3MnLCAnJywgJy0tZGlzYWJsZS1yZXNpemUtb3B0aW1pemF0aW9uJywgZCl9IgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnLS1kaXNhYmxlLXNldHVpZC1pbnN0YWxsJywgZCl9IgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnV0VTVE9OX05BVElWRV9CQUNLRU5EPXJwaS1iYWNrZW5kLnNvJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZi5kLzEwLW5vZ2xhbW9yLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvMTAtbm9nbGFtb3IuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTU2MmVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZi5kLzEwLW5vZ2xhbW9yLmNvbmYKQEAgLTAsMCArMSw2IEBACisjIAorU2VjdGlvbiAiRGV2aWNlIgorCUlkZW50aWZpZXIgIm1vZGVzZXQiCisJRHJpdmVyICJtb2Rlc2V0dGluZyIKKwlPcHRpb24gIkFjY2VsTWV0aG9kIiAiTm9uZSIKK0VuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZAppbmRleCBiMzYxZWVmLi43OTAyZjIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCkBAIC00LDcgKzQsOSBAQAogICAgIGZpbGU6Ly94b3JnLmNvbmYuZC85OC1waXRmdC5jb25mIFwKICAgICBmaWxlOi8veG9yZy5jb25mLmQvOTktY2FsaWJyYXRpb24uY29uZiBcCiAiCi0KK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbF9yYXNwYmVycnlwaTMtNjQgPSAiIFwKKyAgICBmaWxlOi8veG9yZy5jb25mLmQvMTAtbm9nbGFtb3IuY29uZiBcCisiCiBkb19pbnN0YWxsX2FwcGVuZF9ycGkgKCkgewogICAgIFBJVEZUPSIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJwaXRmdCIsICIxIiwgIjAiLCBkKX0iCiAgICAgaWYgWyAiJHtQSVRGVH0iID0gIjEiIF07IHRoZW4KQEAgLTEzLDUgKzE1LDggQEAKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0veG9yZy5jb25mLmQvOTktY2FsaWJyYXRpb24uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLwogICAgIGZpCiB9Ci0KK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbF9yYXNwYmVycnlwaTMtNjQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L1gxMS94b3JnLmNvbmYuZC8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mLmQvCit9CiBGSUxFU18ke1BOfV9ycGkgKz0gIiR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZiAke3N5c2NvbmZkaXJ9L1gxMS94b3JnLmNvbmYuZC8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS1kZXYuYmIKaW5kZXggMDg3OWJjYi4uYjk0NzY1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGktZGV2LmJiCkBAIC03LDggKzcsOCBAQAogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9saW51eC1yYXNwYmVycnlwaToiCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTEiCi1MSU5VWF9SUElfREVWX0JSQU5DSCA/PSAicnBpLTQuMTEueSIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTMiCitMSU5VWF9SUElfREVWX0JSQU5DSCA/PSAicnBpLTQuMTMueSIKIAogU1JDUkVWID0gIiR7QVVUT1JFVn0iCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmFzcGJlcnJ5cGkvbGludXguZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9JHtMSU5VWF9SUElfREVWX0JSQU5DSH0gXApAQCAtMTYsMTEgKzE2LDYgQEAKICIKIHJlcXVpcmUgbGludXgtcmFzcGJlcnJ5cGkuaW5jCiAKLSMgQSBMT0FEQUREUiBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBhIHVJbWFnZSBmb3JtYXQga2VybmVsLiBUaGlzIHZhbHVlIGlzIG5vdAotIyBzZXQgYnkgZGVmYXVsdCBpbiBycGktNC44LnkgYW5kIGxhdGVyIGJyYW5jaGVzIHNvIHdlIG5lZWQgdG8gcHJvdmlkZSBpdAotIyBtYW51YWxseS4gVGhpcyB2YWx1ZSB1bnVzZWQgaWYgS0VSTkVMX0lNQUdFVFlQRSBpcyBub3QgdUltYWdlLgotS0VSTkVMX0VYVFJBX0FSR1MgKz0gIkxPQURBRERSPTB4MDAwMDgwMDAiCi0KICMgRGlzYWJsZSB2ZXJzaW9uIGNoZWNrIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBlZGl0IHRoaXMgcmVjaXBlIGV2ZXJ5IHRpbWUKICMgdXBzdHJlYW0gYnVtcHMgdGhlIHZlcnNpb24KIEtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLmluYwppbmRleCA5MjY1ZDU1Li5kYTM2Y2E3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS5pbmMKQEAgLTEsMjQgKzEsMjIgQEAKLXJlcXVpcmUgbGludXgtcnBpLmluYwotaW5oZXJpdCBsaW51eC1yYXNwYmVycnlwaS1iYXNlCi0KIERFU0NSSVBUSU9OID0gIkxpbnV4IEtlcm5lbCBmb3IgUmFzcGJlcnJ5IFBpIgogU0VDVElPTiA9ICJrZXJuZWwiCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc4MTBmYWI3NDg3ZmIwYWFkMzI3Yjc2ZjFiZTdjZDciCiAKLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgIGZpbGU6Ly9kZWZjb25maWcgXAotICAgICAgICAiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJyYXNwYmVycnlwaSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKIAogUEUgPSAiMSIKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKLSMgTk9URTogRm9yIG5vdyB3ZSBwdWxsIGluIHRoZSBkZWZhdWx0IGNvbmZpZyBmcm9tIHRoZSBSUGkga2VybmVsIEdJVCB0cmVlLgotS0VSTkVMX0RFRkNPTkZJR19yYXNwYmVycnlwaSA/PSAiYmNtcnBpX2RlZmNvbmZpZyIKLUtFUk5FTF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkyID89ICJiY20yNzA5X2RlZmNvbmZpZyIKLUtFUk5FTF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkzLTY0ID89ICJiY21ycGkzX2RlZmNvbmZpZyIKK2luaGVyaXQga2VybmVsIHNpdGVpbmZvCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCitLQ09ORklHX01PREUgPSAiLS1hbGxkZWZjb25maWciCitLQlVJTERfREVGQ09ORklHX3Jhc3BiZXJyeXBpMC13aWZpID89ICJiY21ycGlfZGVmY29uZmlnIgorS0JVSUxEX0RFRkNPTkZJR19yYXNwYmVycnlwaSA/PSAiYmNtcnBpX2RlZmNvbmZpZyIKK0tCVUlMRF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkyID89ICJiY20yNzA5X2RlZmNvbmZpZyIKK0tCVUlMRF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkzID89ICJiY20yNzA5X2RlZmNvbmZpZyIKK0tCVUlMRF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkzLTY0ID89ICJiY21ycGkzX2RlZmNvbmZpZyIKIAogIyBDTURMSU5FIGZvciByYXNwYmVycnlwaQogQ01ETElORSA/PSAiZHdjX290Zy5scG1fZW5hYmxlPTAgY29uc29sZT1zZXJpYWwwLDExNTIwMCByb290PS9kZXYvbW1jYmxrMHAyIHJvb3Rmc3R5cGU9ZXh0NCByb290d2FpdCIKQEAgLTI2LDIwICsyNCwxNDEgQEAKICMgQWRkIHRoZSBrZXJuZWwgZGVidWdnZXIgb3ZlciBjb25zb2xlIGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9uIGlmIGVuYWJsZWQKIENNRExJTkVfYXBwZW5kID0gJyAke0BiYXNlX2NvbmRpdGlvbmFsKCJFTkFCTEVfS0dEQiIsICIxIiwgImtnZGJvYz1zZXJpYWwwLDExNTIwMCIsICIiLCBkKX0nCiAKKyMgRGlzYWJsZSBycGkgbG9nbyBvbiBib290CitDTURMSU5FX2FwcGVuZCArPSAnICR7QGJhc2VfY29uZGl0aW9uYWwoIkRJU0FCTEVfUlBJX0JPT1RfTE9HTyIsICIxIiwgImxvZ28ubm9sb2dvIiwgIiIsIGQpfScKKworIyBZb3UgY2FuIGRlZmluZSBDTURMSU5FX0RFQlVHIGFzICJkZWJ1ZyIgaW4geW91ciBsb2NhbC5jb25mIG9yIGRpc3Ryby5jb25mCisjIHRvIGVuYWJsZSBrZXJuZWwgZGVidWdnaW5nLgorQ01ETElORV9ERUJVRyA/PSAiIgorQ01ETElORV9hcHBlbmQgPSAiICR7Q01ETElORV9ERUJVR30iCisKKyMgUXVpcmsgZm9yIHVkZXYgZ3JlYXRlciBvciBlcXVhbCAxNDEKIFVERVZfR0VfMTQxID89ICIxIgogCisjIEVuYWJsZSBPQUJJIGNvbXBhdCBmb3IgcGVvcGxlIHN0dWNrIHdpdGggb2Jzb2xldGUgdXNlcnNwYWNlCitBUk1fS0VFUF9PQUJJID89ICIxIgorCitLRVJORUxfSU5JVFJBTUZTID89ICcke0BiYXNlX2NvbmRpdGlvbmFsKCJJTklUUkFNRlNfSU1BR0VfQlVORExFIiwgIjEiLCAiMSIsICIiLCBkKX0nCisKIEtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInBpdGZ0MjhyIiwgInN0bXBlLXRzIiwgIiIsIGQpfSIKIAotIyBTZXQgcHJvZ3JhbW1hdGljYWxseSBzb21lIHZhcmlhYmxlcyBkdXJpbmcgcmVjaXBlIHBhcnNpbmcKLSMgU2VlIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzL2N1cnJlbnQvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwjYW5vbnltb3VzLXB5dGhvbi1mdW5jdGlvbnMKLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAga2VybmVsdHlwZSA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFJykKLSAgICBrZXJuZWxkdCA9IGdldF9kdHMoZCwgZC5nZXRWYXIoJ0xJTlVYX1ZFUlNJT04nKSkKLSAgICBkLnNldFZhcigiS0VSTkVMX0RFVklDRVRSRUUiLCBrZXJuZWxkdCkKKyMgQSBMT0FEQUREUiBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBhIHVJbWFnZSBmb3JtYXQga2VybmVsLiBUaGlzIHZhbHVlIGlzIG5vdAorIyBzZXQgYnkgZGVmYXVsdCBpbiBycGktNC44LnkgYW5kIGxhdGVyIGJyYW5jaGVzIHNvIHdlIG5lZWQgdG8gcHJvdmlkZSBpdAorIyBtYW51YWxseS4gVGhpcyB2YWx1ZSB1bnVzZWQgaWYgS0VSTkVMX0lNQUdFVFlQRSBpcyBub3QgdUltYWdlLgorS0VSTkVMX0VYVFJBX0FSR1MgKz0gIkxPQURBRERSPTB4MDAwMDgwMDAiCisKKyMgU2V0IGEgdmFyaWFibGUgaW4gLmNvbmZpZ3VyZQorIyAkMSAtIENvbmZpZ3VyZSB2YXJpYWJsZSB0byBiZSBzZXQKKyMgJDIgLSB2YWx1ZSBbbi95L3ZhbHVlXQora2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSgpIHsKKyAgICAjIFJlbW92ZSB0aGUgY29uZmlnCisgICAgQ09ORl9TRURfU0NSSVBUPSIkQ09ORl9TRURfU0NSSVBUIC9DT05GSUdfJDFbID1dL2Q7IgorICAgIGlmIHRlc3QgIiQyIiA9ICJuIgorICAgIHRoZW4KKyAgICAgICAgZWNobyAiIyBDT05GSUdfJDEgaXMgbm90IHNldCIgPj4gJHtCfS8uY29uZmlnCisgICAgZWxzZQorICAgICAgICBlY2hvICJDT05GSUdfJDE9JDIiID4+ICR7Qn0vLmNvbmZpZworICAgIGZpCiB9CiAKLWRvX2tlcm5lbF9jb25maWdtZV9wcmVwZW5kKCkgewotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2FyY2gvJHtBUkNIfS9jb25maWdzLyR7S0VSTkVMX0RFRkNPTkZJR30gJHtXT1JLRElSfS9kZWZjb25maWcgfHwgZGllICJObyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yICR7TUFDSElORX0gLyAke0tFUk5FTF9ERUZDT05GSUd9IGF2YWlsYWJsZS4iCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBtdiAtZiAke0J9Ly5jb25maWcgJHtCfS8uY29uZmlnLnBhdGNoZWQKKyAgICBDT05GX1NFRF9TQ1JJUFQ9IiIKKworICAgICMgb2FiaSAvIGVhYmkgc3VwcG9ydAorICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQUVBQkkgeQorICAgIGlmIFsgIiR7QVJNX0tFRVBfT0FCSX0iID0gIjEiIF0gOyB0aGVuCisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgT0FCSV9DT01QQVQgeQorICAgIGVsc2UKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBPQUJJX0NPTVBBVCBuCisgICAgZmkKKworICAgICMgU2V0IGNtZGxpbmUKKyAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENNRExJTkUgIlwiJHtDTURMSU5FfVwiIgorCisgICAgIyBMb2NhbHZlcnNpb24KKyAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIExPQ0FMVkVSU0lPTiAiXCJcIiIKKyAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIExPQ0FMVkVSU0lPTl9BVVRPIG4KKworICAgICMgVWRldiBxdWlya3MKKyAgICAjIE5ld2VyIHZlcnNpb25zIG9mIHVkZXYgbWFuZGF0ZSB0aGF0IHN5c2ZzIGRvZXNuJ3QgaGF2ZSBkZXByZWNhdGVkIGVudHJpZXMKKyAgICBpZiBbICIke1VERVZfR0VfMTQxfSIgPSAiMSIgXSA7IHRoZW4KKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBTWVNGU19ERVBSRUNBVEVEIG4KKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBTWVNGU19ERVBSRUNBVEVEX1YyIG4KKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBIT1RQTFVHIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVRVZFTlRfSEVMUEVSX1BBVEggIlwiXCIiCisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVU5JWCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU1lTRlMgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFBST0NfRlMgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFRNUEZTIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBJTk9USUZZX1VTRVIgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNJR05BTEZEIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBUTVBGU19QT1NJWF9BQ0wgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEJMS19ERVZfQlNHIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBERVZUTVBGUyB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgREVWVE1QRlNfTU9VTlQgeQorICAgIGZpCisKKyAgICAjIE5ld2VyIGluaXRzIGxpa2Ugc3lzdGVtZCBuZWVkIGNncm91cCBzdXBwb3J0CisgICAgaWYgWyAiJHtLRVJORUxfRU5BQkxFX0NHUk9VUFN9IiA9ICIxIiBdIDsgdGhlbgorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9TQ0hFRCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQUyB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQX05TIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBfRlJFRVpFUiB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQX0RFVklDRSB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ1BVU0VUUyB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUFJPQ19QSURfQ1BVU0VUIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBfQ1BVQUNDVCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUkVTT1VSQ0VfQ09VTlRFUlMgeQorICAgIGZpCisKKyAgICAjIHJvb3Qtb3Zlci1uZnMtb3Zlci11c2ItZXRoIHN1cHBvcnQuIExpbWl0ZWQsIGJ1dCBzaG91bGQgY292ZXIgc29tZSBjYXNlcworICAgICMgRW5hYmxlIHRoaXMgYnkgc2V0dGluZyBhIHByb3BlciBDTURMSU5FX05GU1JPT1RfVVNCLgorICAgIGlmIFsgISAteiAiJHtDTURMSU5FX05GU1JPT1RfVVNCfSIgXTsgdGhlbgorICAgICAgICBvZW5vdGUgIkNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwgZm9yIHJvb3Qtb3Zlci1uZnMtb3Zlci11c2ItZXRoIHdpdGggQ01ETElORSAke0NNRExJTkVfTkZTUk9PVF9VU0J9IgorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIElORVQgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIElQX1BOUCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVVNCX0dBREdFVCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVVNCX0dBREdFVF9TRUxFQ1RFRCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVVNCX0VUSCB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgTkZTX0ZTIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBST09UX05GUyB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUk9PVF9ORlMgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENNRExJTkUgIlwiJHtDTURMSU5FX05GU1JPT1RfVVNCfVwiIgorICAgIGZpCisgICAgaWYgWyAhIC16ICIke0tFUk5FTF9JTklUUkFNRlN9IiBdOyB0aGVuCisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQkxLX0RFVl9JTklUUkQgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIElOSVRSQU1GU19TT1VSQ0UgIiIKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBSRF9HWklQIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBPVkVSTEFZX0ZTIHkKKyAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBTUVVBU0hGUyB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVUJJRlNfRlMgeQorICAgIGZpCisgICAgIyBBY3RpdmF0ZSBDT05GSUdfTEVHQUNZX1BUWVMKKyAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIExFR0FDWV9QVFlTIHkKKyAgICAjIHRoaXMgbW9kdWxlIGlzIGJ1aWx0IGV4dGVybmFsbHkgdmlhIGRyYmQtdXRpbHMKKyAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEJMS19ERVZfRFJCRCBuCisKKyAgICAjIEFjdGl2YXRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFZDNAorICAgIFZDNEdSQVBISUNTPSIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJ2YzRncmFwaGljcyIsICIxIiwgIjAiLCBkKX0iCisgICAgaWYgWyAke1ZDNEdSQVBISUNTfSA9ICIxIiBdOyB0aGVuCisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSTJDX0JDTTI4MzUgeQorICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERSTSB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgRFJNX0ZCREVWX0VNVUxBVElPTiB5CisgICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgRFJNX1ZDNCB5CisgICAgZmkKKworICAgICMgS2VlcCB0aGlzIHRoZSBsYXN0IGxpbmUKKyAgICAjIFJlbW92ZSBhbGwgbW9kaWZpZWQgY29uZmlncyBhbmQgYWRkIHRoZSByZXN0IHRvIC5jb25maWcKKyAgICBzZWQgLWUgIiR7Q09ORl9TRURfU0NSSVBUfSIgPCAnJHtCfS8uY29uZmlnLnBhdGNoZWQnID4+ICcke0J9Ly5jb25maWcnCisgICAgcm0gLWYgJHtCfS8uY29uZmlnLnBhdGNoZWQKKworICAgIHllcyAnJyB8IG9lX3J1bm1ha2Ugb2xkY29uZmlnCit9CisKK2RvX2NvbXBpbGVfYXBwZW5kX3Jhc3BiZXJyeXBpMy02NCgpIHsKKyAgICBjY19leHRyYT0kKGdldF9jY19vcHRpb24pCisgICAgb2VfcnVubWFrZSBkdGJzIENDPSIke0tFUk5FTF9DQ30gJGNjX2V4dHJhICIgTEQ9IiR7S0VSTkVMX0xEfSIgJHtLRVJORUxfRVhUUkFfQVJHU30KIH0KIAogZG9faW5zdGFsbF9wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpL2RlZmNvbmZpZyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS9kZWZjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYmYzMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpL2RlZmNvbmZpZworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgRHVtbXkgZmlsZSB0byBnZXQgdGhyb3VnaCBkb19rZXJuZWxfY29uZmlnbWUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpXzQuOS5iYgppbmRleCBkZjI4ZmRhLi4wNjFlODkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjkuYmIKQEAgLTYsOCArNiwzIEBACiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmFzcGJlcnJ5cGkvbGludXguZ2l0O2JyYW5jaD1ycGktNC45LnkiCiAKIHJlcXVpcmUgbGludXgtcmFzcGJlcnJ5cGkuaW5jCi0KLSMgQSBMT0FEQUREUiBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBhIHVJbWFnZSBmb3JtYXQga2VybmVsLiBUaGlzIHZhbHVlIGlzIG5vdAotIyBzZXQgYnkgZGVmYXVsdCBpbiBycGktNC44LnkgYW5kIGxhdGVyIGJyYW5jaGVzIHNvIHdlIG5lZWQgdG8gcHJvdmlkZSBpdAotIyBtYW51YWxseS4gVGhpcyB2YWx1ZSB1bnVzZWQgaWYgS0VSTkVMX0lNQUdFVFlQRSBpcyBub3QgdUltYWdlLgotS0VSTkVMX0VYVFJBX0FSR1MgKz0gIkxPQURBRERSPTB4MDAwMDgwMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcnBpLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1ycGkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzM4M2IwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1ycGkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkxpbnV4IEtlcm5lbCIKLVNFQ1RJT04gPSAia2VybmVsIgotTElDRU5TRSA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc4MTBmYWI3NDg3ZmIwYWFkMzI3Yjc2ZjFiZTdjZDciCi0KLWluaGVyaXQga2VybmVsIHNpdGVpbmZvCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIEVuYWJsZSBPQUJJIGNvbXBhdCBmb3IgcGVvcGxlIHN0dWNrIHdpdGggb2Jzb2xldGUgdXNlcnNwYWNlCi1BUk1fS0VFUF9PQUJJID89ICIxIgotCi0jIFF1aXJrIGZvciB1ZGV2IGdyZWF0ZXIgb3IgZXF1YWwgMTQxCi1VREVWX0dFXzE0MSA/PSAiMSIKLQotIyBZb3UgY2FuIGRlZmluZSBDTURMSU5FX0RFQlVHIGFzICJkZWJ1ZyIgaW4geW91ciBsb2NhbC5jb25mIG9yIGRpc3Ryby5jb25mCi0jIHRvIGVuYWJsZSBrZXJuZWwgZGVidWdnaW5nLgotQ01ETElORV9ERUJVRyA/PSAiIgotQ01ETElORV9hcHBlbmQgPSAiICR7Q01ETElORV9ERUJVR30iCi0KLUtFUk5FTF9JTklUUkFNRlMgPz0gJyR7QGJhc2VfY29uZGl0aW9uYWwoIklOSVRSQU1GU19JTUFHRV9CVU5ETEUiLCAiMSIsICIxIiwgIiIsIGQpfScKLQotIyBTZXQgYSB2YXJpYWJsZSBpbiAuY29uZmlndXJlCi0jICQxIC0gQ29uZmlndXJlIHZhcmlhYmxlIHRvIGJlIHNldAotIyAkMiAtIHZhbHVlIFtuL3kvdmFsdWVdCi1rZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlKCkgewotICAgICMgUmVtb3ZlIHRoZSBjb25maWcKLSAgICBDT05GX1NFRF9TQ1JJUFQ9IiRDT05GX1NFRF9TQ1JJUFQgL0NPTkZJR18kMVsgPV0vZDsiCi0gICAgaWYgdGVzdCAiJDIiID0gIm4iCi0gICAgdGhlbgotICAgICAgICBlY2hvICIjIENPTkZJR18kMSBpcyBub3Qgc2V0IiA+PiAke0J9Ly5jb25maWcKLSAgICBlbHNlCi0gICAgICAgIGVjaG8gIkNPTkZJR18kMT0kMiIgPj4gJHtCfS8uY29uZmlnCi0gICAgZmkKLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBDbGVhbiAuY29uZmlnCi0gICAgZWNobyAiIiA+ICR7Qn0vLmNvbmZpZwotICAgIENPTkZfU0VEX1NDUklQVD0iIgotCi0gICAgIyBvYWJpIC8gZWFiaSBzdXBwb3J0Ci0gICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBBRUFCSSB5Ci0gICAgaWYgWyAiJHtBUk1fS0VFUF9PQUJJfSIgPSAiMSIgXSA7IHRoZW4KLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBPQUJJX0NPTVBBVCB5Ci0gICAgZWxzZQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE9BQklfQ09NUEFUIG4KLSAgICBmaQotCi0gICAgIyBTZXQgY21kbGluZQotICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ01ETElORSAiXCIke0NNRExJTkV9XCIiCi0KLSAgICAjIExvY2FsdmVyc2lvbgotICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgTE9DQUxWRVJTSU9OICJcIlwiIgotICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgTE9DQUxWRVJTSU9OX0FVVE8gbgotCi0gICAgIyBVZGV2IHF1aXJrcwotICAgICMgTmV3ZXIgdmVyc2lvbnMgb2YgdWRldiBtYW5kYXRlIHRoYXQgc3lzZnMgZG9lc24ndCBoYXZlIGRlcHJlY2F0ZWQgZW50cmllcwotICAgIGlmIFsgIiR7VURFVl9HRV8xNDF9IiA9ICIxIiBdIDsgdGhlbgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNZU0ZTX0RFUFJFQ0FURUQgbgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNZU0ZTX0RFUFJFQ0FURURfVjIgbgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEhPVFBMVUcgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFVFVkVOVF9IRUxQRVJfUEFUSCAiXCJcIiIKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVTklYIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBTWVNGUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgUFJPQ19GUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgVE1QRlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIElOT1RJRllfVVNFUiB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgU0lHTkFMRkQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFRNUEZTX1BPU0lYX0FDTCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQkxLX0RFVl9CU0cgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERFVlRNUEZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBERVZUTVBGU19NT1VOVCB5Ci0gICAgZmkKLQotICAgICMgTmV3ZXIgaW5pdHMgbGlrZSBzeXN0ZW1kIG5lZWQgY2dyb3VwIHN1cHBvcnQKLSAgICBpZiBbICIke0tFUk5FTF9FTkFCTEVfQ0dST1VQU30iID0gIjEiIF0gOyB0aGVuCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ0dST1VQX1NDSEVEIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBfTlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9GUkVFWkVSIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDR1JPVVBfREVWSUNFIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBDUFVTRVRTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBQUk9DX1BJRF9DUFVTRVQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIENHUk9VUF9DUFVBQ0NUIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBSRVNPVVJDRV9DT1VOVEVSUyB5Ci0gICAgZmkKLQotICAgICMgcm9vdC1vdmVyLW5mcy1vdmVyLXVzYi1ldGggc3VwcG9ydC4gTGltaXRlZCwgYnV0IHNob3VsZCBjb3ZlciBzb21lIGNhc2VzCi0gICAgIyBFbmFibGUgdGhpcyBieSBzZXR0aW5nIGEgcHJvcGVyIENNRExJTkVfTkZTUk9PVF9VU0IuCi0gICAgaWYgWyAhIC16ICIke0NNRExJTkVfTkZTUk9PVF9VU0J9IiBdOyB0aGVuCi0gICAgICAgIG9lbm90ZSAiQ29uZmlndXJpbmcgdGhlIGtlcm5lbCBmb3Igcm9vdC1vdmVyLW5mcy1vdmVyLXVzYi1ldGggd2l0aCBDTURMSU5FICR7Q01ETElORV9ORlNST09UX1VTQn0iCi0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSU5FVCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSVBfUE5QIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVU0JfR0FER0VUIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVU0JfR0FER0VUX1NFTEVDVEVEIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVU0JfRVRIIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBORlNfRlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJPT1RfTkZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBST09UX05GUyB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgQ01ETElORSAiXCIke0NNRExJTkVfTkZTUk9PVF9VU0J9XCIiCi0gICAgZmkKLSAgICBpZiBbICEgLXogIiR7S0VSTkVMX0lOSVRSQU1GU30iIF07IHRoZW4KLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBCTEtfREVWX0lOSVRSRCB5Ci0gICAgICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgSU5JVFJBTUZTX1NPVVJDRSAiIgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJEX0daSVAgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE9WRVJMQVlfRlMgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNRVUFTSEZTIHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVQklGU19GUyB5Ci0gICAgZmkKLSAgICAjIEFjdGl2YXRlIENPTkZJR19MRUdBQ1lfUFRZUwotICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgTEVHQUNZX1BUWVMgeQotCi0gICAgIyBBY3RpdmF0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBWQzQKLSAgICBWQzRHUkFQSElDUz0iJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAidmM0Z3JhcGhpY3MiLCAiMSIsICIwIiwgZCl9IgotICAgIGlmIFsgJHtWQzRHUkFQSElDU30gPSAiMSIgXTsgdGhlbgotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEkyQ19CQ00yODM1IHkKLSAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBEUk0geQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERSTV9GQkRFVl9FTVVMQVRJT04geQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERSTV9WQzQgeQotICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEZCX0JDTTI3MDggbgotICAgIGZpCi0KLSAgICAjIEtlZXAgdGhpcyB0aGUgbGFzdCBsaW5lCi0gICAgIyBSZW1vdmUgYWxsIG1vZGlmaWVkIGNvbmZpZ3MgYW5kIGFkZCB0aGUgcmVzdCB0byAuY29uZmlnCi0gICAgc2VkIC1lICIke0NPTkZfU0VEX1NDUklQVH0iIDwgJyR7V09SS0RJUn0vZGVmY29uZmlnJyA+PiAnJHtCfS8uY29uZmlnJwotCi0gICAgeWVzICcnIHwgb2VfcnVubWFrZSBvbGRjb25maWcKLX0KLQotIyBBdXRvbWF0aWNhbGx5IGRlcGVuZCBvbiBsem9wLW5hdGl2ZSBpZiBDT05GSUdfS0VSTkVMX0xaTyBpcyBlbmFibGVkCi1weXRob24gKCkgewotICAgIHRyeToKLSAgICAgICAgZGVmY29uZmlnID0gYmIuZmV0Y2gyLmxvY2FscGF0aCgnZmlsZTovL2RlZmNvbmZpZycsIGQpCi0gICAgZXhjZXB0IGJiLmZldGNoMi5GZXRjaEVycm9yOgotICAgICAgICByZXR1cm4KLQotICAgIHRyeToKLSAgICAgICAgY29uZmlnZmlsZSA9IG9wZW4oZGVmY29uZmlnKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICByZXR1cm4KLQotICAgIGlmICdDT05GSUdfS0VSTkVMX0xaTz15XG4nIGluIGNvbmZpZ2ZpbGUucmVhZGxpbmVzKCk6Ci0gICAgICAgIGRlcGVuZHMgPSBkLmdldFZhcignREVQRU5EUycsIEZhbHNlKQotICAgICAgICBkLnNldFZhcignREVQRU5EUycsIGRlcGVuZHMgKyAnIGx6b3AtbmF0aXZlJykKLQotICAgIGNvbmZpZ2ZpbGUuY2xvc2UoKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAxLURvbi10LXRyeS10by1hY3F1aXJlLWJ1ZmZlci13aGVuLXNyYy1wYWQtaXNuLXQtYWN0aXYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMC8wMDAxLURvbi10LXRyeS10by1hY3F1aXJlLWJ1ZmZlci13aGVuLXNyYy1wYWQtaXNuLXQtYWN0aXYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAxLURvbi10LXRyeS10by1hY3F1aXJlLWJ1ZmZlci13aGVuLXNyYy1wYWQtaXNuLXQtYWN0aXYucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMC8wMDAxLWNvbmZpZy1maWxlcy1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDEtY29uZmlnLWZpbGVzLXBhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMC8wMDAxLWNvbmZpZy1maWxlcy1wYXRoLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMi1maXgtZGVjb2Rlci1mbHVzaGluZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAyLWZpeC1kZWNvZGVyLWZsdXNoaW5nLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTAvMDAwMy1uby10aW1lb3V0LW9uLWdldC1zdGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTAvMDAwMy1uby10aW1lb3V0LW9uLWdldC1zdGF0ZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMC8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEwLzAwMDQtUHJvcGVybHktaGFuZGxlLWRyYWluLXJlcXVlc3RzLXdoaWxlLWZsdXNoaW5nLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMC8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwNS1Eb24tdC1hYm9ydC1nc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0LWlmLXRoZXJlLXMtLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTAvMDAwNS1Eb24tdC1hYm9ydC1nc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0LWlmLXRoZXJlLXMtLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwNS1Eb24tdC1hYm9ydC1nc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0LWlmLXRoZXJlLXMtLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTAlLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEwJS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQxOTg2Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTAlLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotIwotIyBOZWVkIHRvIG1ha2UgdGhpcyBjb25kaXRpb25hbCB0byBnc3RyZWFtZXIxCi0jCi1TUkNfVVJJX2FwcGVuZF9ycGkgPSAiIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2ggXAotIgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9nc3RyZWFtZXIxLjAtb214LTEuMTA6IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyJS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMiUuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMzODFhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMiUuYmJhcHBlbmQKQEAgLTAsMCArMSwxMyBAQAorIworIyBOZWVkIHRvIG1ha2UgdGhpcyBjb25kaXRpb25hbCB0byBnc3RyZWFtZXIxCisjCitTUkNfVVJJX2FwcGVuZF9ycGkgPSAiIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2ggXAorIgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9nc3RyZWFtZXIxLjAtb214LTEuMTI6IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDUtRG9uLXQtcmVxdWlyZS1pbnRlcm5ldC1jb25uZWN0aW9uLWR1cmluZy1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA1LURvbi10LXJlcXVpcmUtaW50ZXJuZXQtY29ubmVjdGlvbi1kdXJpbmctYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY1NmFkMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA1LURvbi10LXJlcXVpcmUtaW50ZXJuZXQtY29ubmVjdGlvbi1kdXJpbmctYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSA5N2NiOTQwNWYyODFmNTRkNDA4M2YzMTI2ZDQ0MWM4YjQ0ZWFmYjg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK0RhdGU6IFRodSwgNyBTZXAgMjAxNyAxOToxNDoyMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCByZXF1aXJlIGludGVybmV0IGNvbm5lY3Rpb24gZHVyaW5nIGJ1aWxkCisKK1RoZSBmb2xsb3dpbmcgaXNzdWVzIGJyZWFrIG9mZmxpbmUgYnVpbGRzOgorCisqIEJ1aWxkaW5nIHRoZSBtYW4gcGFnZSB1c2VzIGEgd2ViIHNlcnZpY2UgaG9zdGVkIG9uIGhlcm9rdS4KKworKiBNYWtlZmlsZS5mZm1wZWcgZXhwbGljaXRseSBkb2VzIGEgImdpdCBjbG9uZSIgZnJvbSB0aGUgaW50ZXJuZXQuCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+CitVcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIE1ha2VmaWxlICAgICAgICB8IDYgKystLS0tCisgTWFrZWZpbGUuZmZtcGVnIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNjA1MDFiMS4uNjQ3MWYwZiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTc5LDE0ICs3OSwxMiBAQCBmZm1wZWc6CisgCW1ha2UgLWYgTWFrZWZpbGUuZmZtcGVnCisgCW1ha2UgLWYgTWFrZWZpbGUuZmZtcGVnIGluc3RhbGwKKyAKKy1kaXN0OiBvbXhwbGF5ZXIuYmluIG9teHBsYXllci4xCisrZGlzdDogb214cGxheWVyLmJpbgorIAlta2RpciAtcCAkKERJU1QpL3Vzci9saWIvb214cGxheWVyCisgCW1rZGlyIC1wICQoRElTVCkvdXNyL2JpbgorIAlta2RpciAtcCAkKERJU1QpL3Vzci9zaGFyZS9kb2Mvb214cGxheWVyCistCW1rZGlyIC1wICQoRElTVCkvdXNyL3NoYXJlL21hbi9tYW4xCisgCWNwIG9teHBsYXllciBvbXhwbGF5ZXIuYmluICQoRElTVCkvdXNyL2JpbgorIAljcCBDT1BZSU5HICQoRElTVCkvdXNyL3NoYXJlL2RvYy9vbXhwbGF5ZXIKKyAJY3AgUkVBRE1FLm1kICQoRElTVCkvdXNyL3NoYXJlL2RvYy9vbXhwbGF5ZXIvUkVBRE1FCistCWNwIG9teHBsYXllci4xICQoRElTVCkvdXNyL3NoYXJlL21hbi9tYW4xCisgCWNwIC1QIGZmbXBlZ19jb21waWxlZC91c3IvbGliLyouc28qICQoRElTVCkvdXNyL2xpYi9vbXhwbGF5ZXIvCistCXRhciAtY3pmIG9teHBsYXllci1kaXN0LnRhci5neiAkKERJU1QpCitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKysJdGFyIC1jemYgb214cGxheWVyLWRpc3QudGFyLmd6ICQoRElTVCkKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5mZm1wZWcgYi9NYWtlZmlsZS5mZm1wZWcKK2luZGV4IDIyZDQ5NWMuLjg2NTE3MjQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5mZm1wZWcKKysrKyBiL01ha2VmaWxlLmZmbXBlZworQEAgLTYsNyArNiw3IEBAIEZGTVBFR19FWFRSQV9DRkxBR1M/PS1tZnB1PXZmcCAtbWZsb2F0LWFiaT0kKEZMT0FUKSAtbW5vLWFwY3Mtc3RhY2stY2hlY2sgLW1zdHJ1CisgV09SSz0kKFBXRCkKKyAKKyAuUEhPTlkgOiBhbGwKKy1hbGw6IGNoZWNrb3V0IGNvbmZpZ3VyZSBjb21waWxlCisrYWxsOiBjb25maWd1cmUgY29tcGlsZQorIAorIC5QSE9OWSA6IGNvcHkKKyBjb3B5OgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwNi1QcmV2ZW50LWZmbXBlZy1jb25maWd1cmUtY29tcGlsZS1yYWNlLWNvbmRpdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA2LVByZXZlbnQtZmZtcGVnLWNvbmZpZ3VyZS1jb21waWxlLXJhY2UtY29uZGl0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYWMyZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwNi1QcmV2ZW50LWZmbXBlZy1jb25maWd1cmUtY29tcGlsZS1yYWNlLWNvbmRpdGlvbi5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDRhMTM0MTllMzgwNWI1NDFmYzU4ZTU3ZjFmMjdjNGEzODg2MDllZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorRGF0ZTogVGh1LCA3IFNlcCAyMDE3IDIwOjAyOjE1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgZmZtcGVnIGNvbmZpZ3VyZS9jb21waWxlIHJhY2UgY29uZGl0aW9uCisKK0FkZGl0aW9uYWwgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBpcyBuZWVkZWQgaW4gTWFrZWZpbGUuZmZtcGVnIHRvIGVuc3VyZSB0aGF0Cit0aGUgY29uZmlndXJlIHN0YWdlIGlzIGZpbmlzaGVkIGJlZm9yZSB0aGUgY29tcGlsZSBzdGFnZSBzdGFydHMuCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+CitVcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKKy0tLQorIE1ha2VmaWxlLmZmbXBlZyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5mZm1wZWcgYi9NYWtlZmlsZS5mZm1wZWcKK2luZGV4IDg2NTE3MjQuLjYxOWM0OWEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5mZm1wZWcKKysrKyBiL01ha2VmaWxlLmZmbXBlZworQEAgLTYsNyArNiw3IEBAIEZGTVBFR19FWFRSQV9DRkxBR1M/PS1tZnB1PXZmcCAtbWZsb2F0LWFiaT0kKEZMT0FUKSAtbW5vLWFwY3Mtc3RhY2stY2hlY2sgLW1zdHJ1CisgV09SSz0kKFBXRCkKKyAKKyAuUEhPTlkgOiBhbGwKKy1hbGw6IGNvbmZpZ3VyZSBjb21waWxlCisrYWxsOiBjb21waWxlCisgCisgLlBIT05ZIDogY29weQorIGNvcHk6CitAQCAtMTQsNyArMTQsNyBAQCBjb3B5OgorIAkkKEhPU1QpLXN0cmlwICouc28qCisgCisgLlBIT05ZIDogY29tcGlsZQorLWNvbXBpbGU6IAorK2NvbXBpbGU6IGNvbmZpZ3VyZQorIAkrJChNQUtFKSAtQyBmZm1wZWcKKyAKKyAuUEhPTlkgOiBjb25maWd1cmUKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllcl9naXQuYmIKaW5kZXggMGUwZjliYS4uZGIwMWQ3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXJfZ2l0LmJiCkBAIC0xMCwxNCArMTAsMjcgQEAKIERFUEVORFMgPSAibGlicGNyZSBsaWJhdiB2aXJ0dWFsL2VnbCBib29zdCBmcmVldHlwZSBkYnVzIG9wZW5zc2wgc2FtYmEgbGlic3NoIGxpYm9teGlsIGNvcmV1dGlscy1uYXRpdmUgY3VybC1uYXRpdmUiCiBQUiA9ICJyNCIKIAotU1JDUkVWID0gIjA2MTQyNWE1ZWFiZjZlOWVlNDMyMjk5MTFjMDczYTg2M2QxNDQwMzgiCitTUkNSRVZfZGVmYXVsdCA9ICJiOGZmNTlkY2NkOTMwN2YxMGRhZDcxYmVjMjUyNWE5NWJkNmM2MDNiIgorCisjIG9teHBsYXllciBidWlsZHMgaXRzIG93biBjb3B5IG9mIGZmbXBlZyBmcm9tIHNvdXJjZSBpbnN0ZWFkIG9mIHVzaW5nIHRoZQorIyBzeXN0ZW0ncyBmZm1wZWcgbGlicmFyeS4gVGhpcyBpc24ndCBpZGVhbCBidXQgaXQncyBvayBmb3Igbm93LiBXZSBkbyBob3dldmVyCisjIHdhbnQgdG8ga2VlcCBjb250cm9sIG9mIHRoZSBleGFjdCB2ZXJzaW9uIG9mIGZmbXBlZyB1c2VkIGluc3RlYWQgb2YganVzdAorIyBmZXRjaGluZyB0aGUgbGF0ZXN0IGNvbW1pdCBvbiBhIHJlbGVhc2UgYnJhbmNoICh3aGljaCBpcyB3aGF0IHRoZSBjaGVja291dCBqb2IKKyMgaW4gTWFrZWZpbGUuZmZtcGVnIGluIHRoZSBvbXhwbGF5ZXIgc291cmNlIHRyZWUgZG9lcykuCisjCisjIFRoaXMgU1JDUkVWIGNvcnJlc3BvbmRzIHRvIHRoZSB2My4xLjEwIHJlbGVhc2Ugb2YgZmZtcGVnLgorU1JDUkVWX2ZmbXBlZyA9ICJhZmEzNGNiMzZlZGNhMGZmODA5YjdlNTg0NzRiYmNlMTIyNzFlY2JhIgorCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcG9wY29ybm1peC9vbXhwbGF5ZXIuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZ2l0Oi8vc291cmNlLmZmbXBlZy5vcmcvZmZtcGVnO2JyYW5jaD1yZWxlYXNlLzMuMTtwcm90b2NvbD1naXQ7ZGVwdGg9MTtuYW1lPWZmbXBlZztkZXN0c3VmZml4PWdpdC9mZm1wZWcgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtTWFrZWZpbGUuaW5jbHVkZS13aGljaC1pbmNsdWRlcy1oYXJkY29kZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1MaWJyYXJpZXMtYW5kLWhlYWRlcnMtZnJvbS1mZm1wZWctYXJlLWluc3RhbGxlZC1pbi11LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtUmVtb3ZlLXN0cmlwLXN0ZXAtaW4tTWFrZWZpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtRkZNUEVHX0VYVFJBX0NGTEFHUy1hbmQtRkZNUEVHX0VYVFJBX0xERkxBR1MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LXRhci1jb21tYW5kLXdpdGgtRElTVC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91c2UtbmF0aXZlLXBrZy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1Eb24tdC1yZXF1aXJlLWludGVybmV0LWNvbm5lY3Rpb24tZHVyaW5nLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtUHJldmVudC1mZm1wZWctY29uZmlndXJlLWNvbXBpbGUtcmFjZS1jb25kaXRpb24ucGF0Y2ggXAogICAgICAgICAgICAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC01Myw3ICs2Niw4IEBACiAgICAgIyBOZWVkZWQgZm9yIGNvbXBpbGVyIHRlc3QgaW4gZmZtcGVnJ3MgY29uZmlndXJlCiAgICAgbWtkaXIgLXAgdG1wCiAKLSAgICBvZV9ydW5tYWtlIGZmbXBlZworICAgIG9lX3J1bm1ha2UgLWYgTWFrZWZpbGUuZmZtcGVnCisgICAgb2VfcnVubWFrZSAtZiBNYWtlZmlsZS5mZm1wZWcgaW5zdGFsbAogICAgIG9lX3J1bm1ha2UKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiYXBwZW5kCmluZGV4IGMxY2IzYmMuLjUwNTcxOWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmJhcHBlbmQKQEAgLTEgKzEsMiBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9yYXNwYmVycnlwaSA9ICIgLS1kaXNhYmxlLWFzbSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfcmFzcGJlcnJ5cGkwLXdpZmkgPSAiIC0tZGlzYWJsZS1hc20iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL1JFQURNRQppbmRleCAyNTc4ZjkwLi43ZDg0MjMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9SRUFETUUKQEAgLTQsNiArNCwyOCBAQAogVGhpcyBsYXllciBwcm92aWRlcyBzdXBwb3J0IGZvciBidWlsZGluZyBYZW4sIEtWTSwgTGlidmlydCwgYW5kIGFzc29jaWF0ZWQKIHBhY2thZ2VzIG5lY2Vzc2FyeSBmb3IgY29uc3RydWN0aW5nIE9FLWJhc2VkIHZpcnR1YWxpemVkIHNvbHV0aW9ucy4KIAorVGhlIGJiYXBwZW5kIGZpbGVzIGZvciBzb21lIHJlY2lwZSAoZS5nLiBsaW51eC15b2N0bykgaW4gdGhpcyBsYXllciBuZWVkcyB0bworaGF2ZSAndmlydHVhbGl6YXRpb24nIGluIERJU1RST19GRUFUVVJFUyB0byBoYXZlIGVmZmVjdC4gVG8gZW5hYmxlIHRoZW0sIGFkZAoraW4gY29uZmlndXJhdGlvbiBmaWxlIHRoZSBmb2xsb3dpbmcgbGluZS4KKworICBESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiB2aXJ0dWFsaXphdGlvbiIKKworSWYgbWV0YS12aXJ0dWFsaXphdGlvbiBpcyBpbmNsdWRlZCwgYnV0IHZpcnR1YWxpemF0aW9uIGlzIG5vdCBlbmFibGVkIGFzIGEKK2Rpc3RybyBmZWF0dXJlIGEgd2FybmluZyBpcyBwcmludGVkIGF0IHBhcnNlIHRpbWU6CisKKyAgICBZb3UgaGF2ZSBpbmNsdWRlZCB0aGUgbWV0YS12aXJ0dWFsaXphdGlvbiBsYXllciwgYnV0CisgICAgJ3ZpcnR1YWxpemF0aW9uJyBoYXMgbm90IGJlZW4gZW5hYmxlZCBpbiB5b3VyIERJU1RST19GRUFUVVJFUy4gU29tZSBiYmFwcGVuZCBmaWxlcworICAgIG1heSBub3QgdGFrZSBlZmZlY3QuIFNlZSB0aGUgbWV0YS12aXJ0dWFsaXphdGlvbiBSRUFETUUgZm9yIGRldGFpbHMgb24gZW5hYmxpbmcKKyAgICB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LgorCitJZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcsIHRoaXMgd2FybmluZyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZm9sbG93aW5nCit2YXJpYWJsZSBpbiB5b3VyIGNvbmZpZ3VyYXRpb246CisKKyAgU0tJUF9NRVRBX1ZJUlRfU0FOSVRZX0NIRUNLID0gMQorCitBbHNvIG5vdGUgdGhhdCB0aGVyZSBhcmUga3ZtIGFuZCB4ZW4gc3BlY2lmaWMgZGlzdHJvIGZsYWdzL2ZlYXR1cmVzIHRoYXQgZGVwZW5kaW5nCitvbiB5b3VyIHVzZSBjYXNlLgorCiBEZXBlbmRlbmNpZXMKIC0tLS0tLS0tLS0tLQogVGhpcyBsYXllciBkZXBlbmRzIG9uOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL2NsYXNzZXMvc2FuaXR5LW1ldGEtdmlydC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL2NsYXNzZXMvc2FuaXR5LW1ldGEtdmlydC5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZWQwODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY2xhc3Nlcy9zYW5pdHktbWV0YS12aXJ0LmJiY2xhc3MKQEAgLTAsMCArMSwxMCBAQAorYWRkaGFuZGxlciB2aXJ0X2JiYXBwZW5kX2Rpc3Ryb2NoZWNrCit2aXJ0X2JiYXBwZW5kX2Rpc3Ryb2NoZWNrW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuU2FuaXR5Q2hlY2siCitweXRob24gdmlydF9iYmFwcGVuZF9kaXN0cm9jaGVjaygpIHsKKyAgICBza2lwX2NoZWNrID0gZS5kYXRhLmdldFZhcignU0tJUF9NRVRBX1ZJUlRfU0FOSVRZX0NIRUNLJykgPT0gIjEiCisgICAgaWYgJ3ZpcnR1YWxpemF0aW9uJyBub3QgaW4gZS5kYXRhLmdldFZhcignRElTVFJPX0ZFQVRVUkVTJykuc3BsaXQoKSBhbmQgbm90IHNraXBfY2hlY2s6CisgICAgICAgIGJiLndhcm4oIllvdSBoYXZlIGluY2x1ZGVkIHRoZSBtZXRhLXZpcnR1YWxpemF0aW9uIGxheWVyLCBidXQgXAorJ3ZpcnR1YWxpemF0aW9uJyBoYXMgbm90IGJlZW4gZW5hYmxlZCBpbiB5b3VyIERJU1RST19GRUFUVVJFUy4gU29tZSBiYmFwcGVuZCBmaWxlcyBcCittYXkgbm90IHRha2UgZWZmZWN0LiBTZWUgdGhlIG1ldGEtdmlydHVhbGl6YXRpb24gUkVBRE1FIGZvciBkZXRhaWxzIG9uIGVuYWJsaW5nIFwKK3ZpcnR1YWxpemF0aW9uIHN1cHBvcnQuIikKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vY29uZi9sYXllci5jb25mCmluZGV4IGJlMDhhOTguLmY3MWMxMTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL2NvbmYvbGF5ZXIuY29uZgpAQCAtMjIsMyArMjIsNyBAQAogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9ydW5jID89ICJydW5jLWRvY2tlciIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2NvbnRhaW5lcmQgPz0gImNvbnRhaW5lcmQtZG9ja2VyIgorCisjIFNhbml0eSBjaGVjayBmb3IgbWV0YS12aXJ0dWFsaXphdGlvbiBsYXllci4KKyMgU2V0dGluZyBTS0lQX01FVEFfVklSVF9TQU5JVFlfQ0hFQ0sgdG8gIjEiIHdvdWxkIHNraXAgdGhlIGJiYXBwZW5kIGZpbGVzIGNoZWNrLgorSU5IRVJJVCArPSAic2FuaXR5LW1ldGEtdmlydCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9jb250YWluZXJkLWRvY2tlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvY29udGFpbmVyZC1kb2NrZXJfZ2l0LmJiCmluZGV4IGY2ZGNhZWMuLmIxOGE5YmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9jb250YWluZXJkLWRvY2tlcl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQtZG9ja2VyX2dpdC5iYgpAQCAtMSwxMCArMSwxNCBAQAorU1JDUkVWID0gIjNhZGRkODQwNjUzMTQ2YzkwYTI1NDMwMWQ2YzNhNjYzYzdmZDY0MjkiCitTUkNfVVJJID0gIlwKKwlnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9jb250YWluZXJkLmdpdDticmFuY2g9djAuMi54O2Rlc3RzdWZmaXg9Z2l0L3NyYy9naXRodWIuY29tL2NvbnRhaW5lcmQvY29udGFpbmVyZCBcCisJIgorCiBpbmNsdWRlIGNvbnRhaW5lcmQuaW5jCiAKLVNSQ1JFViA9ICIwM2U1ODYyZWMwZDhkM2IzZjc1MGUxOWZjYTNlZTM2N2UxM2MwOTBlIgotU1JDX1VSSSA9ICJcCi0JZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvY29udGFpbmVyZC5naXQ7YnJhbmNoPWRvY2tlci0xLjEzLnggXAotCSIKLUNPTlRBSU5FUkRfVkVSU0lPTiA9ICIwLjIuMyIKK0NPTlRBSU5FUkRfVkVSU0lPTiA9ICJ2MC4yLngiCitTID0gIiR7V09SS0RJUn0vZ2l0L3NyYy9naXRodWIuY29tL2NvbnRhaW5lcmQvY29udGFpbmVyZCIKIAogUFJPVklERVMgKz0gInZpcnR1YWwvY29udGFpbmVyZCIKIFJQUk9WSURFU18ke1BOfSA9ICJ2aXJ0dWFsL2NvbnRhaW5lcmQiCisKK0RFUEVORFMgKz0gImJ0cmZzLXRvb2xzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2NvbnRhaW5lcmQuaW5jCmluZGV4IGIxNDM5NzkuLmU3YTM3MTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY29udGFpbmVyZC9jb250YWluZXJkLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvY29udGFpbmVyZC5pbmMKQEAgLTgsMzAgKzgsMjMgQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuY29kZTttZDU9YWFkYzMwZjljMTRkODc2ZGVkN2JlZGMwYWZkMmQzZDciCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly9jb250YWluZXJkLnNlcnZpY2UiCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIFBWID0gIiR7Q09OVEFJTkVSRF9WRVJTSU9OfStnaXQke1NSQ1JFVn0iCiAKIGluaGVyaXQgZ28KK2luaGVyaXQgZ29hcmNoCiAKIFJSRUNPTU1FTkRTXyR7UE59ID0gImx4YyBkb2NrZXIiCi1DT05UQUlORVJEX1BLRz0iZ2l0aHViLmNvbS9kb2NrZXIvY29udGFpbmVyZCIKK0NPTlRBSU5FUkRfUEtHPSJnaXRodWIuY29tL2NvbnRhaW5lcmQvY29udGFpbmVyZCIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImxkZmxhZ3MiCiAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfQVJDSH0iCi0JIyBzdXBwb3J0ZWQgYW1kNjQsIDM4NiwgYXJtIGFybTY0Ci0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotCQlleHBvcnQgR09BUkNIPSJhbWQ2NCIKLQlmaQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJhYXJjaDY0IiBdOyB0aGVuCi0JCWV4cG9ydCBHT0FSQ0g9ImFybTY0IgotCWZpCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF07IHRoZW4KLQkJZXhwb3J0IEdPQVJDSD0iMzg2IgotCWZpCi0KIAkjIFNldCBHT1BBVEguIFNlZSAnUEFDS0FHRVJTLm1kJy4gRG9uJ3QgcmVseSBvbgogCSMgZG9ja2VyIHRvIGRvd25sb2FkIGl0cyBkZXBlbmRlbmNpZXMgYnV0IHJhdGhlcgogCSMgdXNlIGRlcGVuZGVuY2llcyBwYWNrYWdlZCBpbmRlcGVuZGVudGx5LgpAQCAtMzksMTcgKzMyLDE5IEBACiAJcm0gLXJmIC5nb3BhdGgKIAlta2RpciAtcCAuZ29wYXRoL3NyYy8iJChkaXJuYW1lICIke0NPTlRBSU5FUkRfUEtHfSIpIgogCWxuIC1zZiAuLi8uLi8uLi8uLiAuZ29wYXRoL3NyYy8iJHtDT05UQUlORVJEX1BLR30iCi0JZXhwb3J0IEdPUEFUSD0iJHtTfS8uZ29wYXRoOiR7U30vdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCi0JZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9LyR7bm9uYXJjaF9saWJkaXJ9LyR7SE9TVF9TWVN9L2dvIgotCWNkIC0KKworICAgICAgICBleHBvcnQgR09QQVRIPSIke1dPUktESVJ9L2dpdC8iCisgICAgICAgIGV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke1RBUkdFVF9TWVN9L2dvIgogCiAJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KIAkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCisJZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKIAlleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCiAJZXhwb3J0IENGTEFHUz0iIgogCWV4cG9ydCBMREZMQUdTPSIiCiAJZXhwb3J0IENHT19DRkxBR1M9IiR7QlVJTERTREtfQ0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogCWV4cG9ydCBDR09fTERGTEFHUz0iJHtCVUlMRFNES19MREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorICAgICAgICBleHBvcnQgR09fR0NGTEFHUz0iIgogCWV4cG9ydCBDQ19GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJZXhwb3J0IENYWF9GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAKQEAgLTc0LDkgKzY5LDkgQEAKIAogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KIAkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCQlpbnN0YWxsIC1tIDY0NCAke1N9L2hhY2svY29udGFpbmVyZC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2NvbnRhaW5lcmQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KIAkgICAgICAgICMgYWRqdXN0IGZyb20gL3Vzci9sb2NhbC9iaW4gdG8gL3Vzci9iaW4vCi0JCXNlZCAtZSAiczovdXNyL2xvY2FsL2Jpbi9jb250YWluZXJkOiR7YmluZGlyfS9kb2NrZXItY29udGFpbmVyZCAtbCBcInVuaXhcOi8vL3Zhci9ydW4vZG9ja2VyL2xpYmNvbnRhaW5lcmQvZG9ja2VyLWNvbnRhaW5lcmQuc29ja1wiOmciIC1pICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jb250YWluZXJkLnNlcnZpY2UKKwkJc2VkIC1lICJzOi91c3IvbG9jYWwvYmluL2NvbnRhaW5lcmQ6JHtiaW5kaXJ9L2RvY2tlci1jb250YWluZXJkOmciIC1pICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jb250YWluZXJkLnNlcnZpY2UKIAlmaQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NvbnRhaW5lcmQvZmlsZXMvY29udGFpbmVyZC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2ZpbGVzL2NvbnRhaW5lcmQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzYzM2IwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jb250YWluZXJkL2ZpbGVzL2NvbnRhaW5lcmQuc2VydmljZQpAQCAtMCwwICsxLDExIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPWNvbnRhaW5lcmQKK0RvY3VtZW50YXRpb249aHR0cHM6Ly9jb250YWluZXJkLnRvb2xzCitBZnRlcj1uZXR3b3JrLnRhcmdldAorCitbU2VydmljZV0KK0V4ZWNTdGFydD0vdXNyL2xvY2FsL2Jpbi9jb250YWluZXJkCitEZWxlZ2F0ZT15ZXMKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcmktby9jcmktb19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaS1vL2NyaS1vX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTRkNTRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcmktby9jcmktb19naXQuYmIKQEAgLTAsMCArMSwxMzAgQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzLWluY3ViYXRvci9jcmktbyIKK1NVTU1BUlkgPSAiT3BlbiBDb250YWluZXIgSW5pdGlhdGl2ZS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBLdWJlcm5ldGVzIENvbnRhaW5lciBSdW50aW1lIEludGVyZmFjZSIKK0RFU0NSSVBUSU9OID0gImNyaS1vIGlzIG1lYW50IHRvIHByb3ZpZGUgYW4gaW50ZWdyYXRpb24gcGF0aCBiZXR3ZWVuIE9DSSBjb25mb3JtYW50IFwKK3J1bnRpbWVzIGFuZCB0aGUga3ViZWxldC4gU3BlY2lmaWNhbGx5LCBpdCBpbXBsZW1lbnRzIHRoZSBLdWJlbGV0IENvbnRhaW5lciBSdW50aW1lIFwKK0ludGVyZmFjZSAoQ1JJKSB1c2luZyBPQ0kgY29uZm9ybWFudCBydW50aW1lcy4gVGhlIHNjb3BlIG9mIGNyaS1vIGlzIHRpZWQgdG8gdGhlIHNjb3BlIG9mIHRoZSBDUkkuIFwKKy4gXAorQXQgYSBoaWdoIGxldmVsLCB3ZSBleHBlY3QgdGhlIHNjb3BlIG9mIGNyaS1vIHRvIGJlIHJlc3RyaWN0ZWQgdG8gdGhlIGZvbGxvd2luZyBmdW5jdGlvbmFsaXRpZXM6IFwKKy4gXAorIC0gU3VwcG9ydCBtdWx0aXBsZSBpbWFnZSBmb3JtYXRzIGluY2x1ZGluZyB0aGUgZXhpc3RpbmcgRG9ja2VyIGltYWdlIGZvcm1hdCBcCisgLSBTdXBwb3J0IGZvciBtdWx0aXBsZSBtZWFucyB0byBkb3dubG9hZCBpbWFnZXMgaW5jbHVkaW5nIHRydXN0ICYgaW1hZ2UgdmVyaWZpY2F0aW9uIFwKKyAtIENvbnRhaW5lciBpbWFnZSBtYW5hZ2VtZW50IChtYW5hZ2luZyBpbWFnZSBsYXllcnMsIG92ZXJsYXkgZmlsZXN5c3RlbXMsIGV0YykgXAorIC0gQ29udGFpbmVyIHByb2Nlc3MgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgXAorIC0gTW9uaXRvcmluZyBhbmQgbG9nZ2luZyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBDUkkgXAorIC0gUmVzb3VyY2UgaXNvbGF0aW9uIGFzIHJlcXVpcmVkIGJ5IHRoZSBDUkkgXAorICIKKworU1JDUkVWX2NyaS1vID0gIjY1ZmFhZTY3ODI4ZmIzZWIzZWFjMDViNTgyYWFlOWY5ZDFkZWE1MWMiCitTUkNfVVJJID0gIlwKKwlnaXQ6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMtaW5jdWJhdG9yL2NyaS1vLmdpdDtub2JyYW5jaD0xO25hbWU9Y3JpLW8gXAorCWZpbGU6Ly8wMDAxLU1ha2VmaWxlLWZvcmNlLXN5bWxpbmtzLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2NyaW8uY29uZiBcCisJIgorCisjIEFwYWNoZS0yLjAgZm9yIGRvY2tlcgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ltcG9ydC9MSUNFTlNFO21kNT1lM2ZjNTBhODhkMGEzNjQzMTNkZjRiMjFlZjIwYzI5ZSIKKworR09fSU1QT1JUID0gImltcG9ydCIKKworUFYgPSAiMS4wLjAtcmMzLWRlditnaXQke1NSQ1JFVl9jcmktb30iCisKK0RFUEVORFMgPSAiIFwKKyAgICBnbGliLTIuMCBcCisgICAgYnRyZnMtdG9vbHMgXAorICAgIGdwZ21lIFwKKyAgICBvc3RyZWUgXAorICAgIGxpYmRldm1hcHBlciBcCisgICAgIgorUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICBjbmkgXAorICAgICIKKworUEFDS0FHRVMgPSsgIiR7UE59LWNvbmZpZyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiB2aXJ0dWFsL2NvbnRhaW5lcmQgdmlydHVhbC9ydW5jIgorUkRFUEVORFNfJHtQTn0gKz0gIiBlMmZzcHJvZ3MtbWtlMmZzIgorCitpbmhlcml0IHN5c3RlbWQKK2luaGVyaXQgZ28KK2luaGVyaXQgZ29hcmNoCitpbmhlcml0IHBrZ2NvbmZpZworCitFWFRSQV9PRU1BS0U9IkJVSUxEVEFHUz0nJyIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IgorCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke1RBUkdFVF9TWVN9L2dvIgorCWV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yIgorCisJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KKwkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCisJZXhwb3J0IENHT19FTkFCTEVEPSIxIgorCWV4cG9ydCBDRkxBR1M9IiIKKwlleHBvcnQgTERGTEFHUz0iIgorCWV4cG9ydCBDR09fQ0ZMQUdTPSIke0JVSUxEU0RLX0NGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwlleHBvcnQgQ0dPX0xERkxBR1M9IiR7QlVJTERTREtfTERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworCSMgbGluayBmaXh1cHMgZm9yIGNvbXBpbGF0aW9uCisJcm0gLWYgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMKKwlsbiAtc2YgLi8gJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMKKworCW1rZGlyIC1wICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9rdWJlcm5ldGVzLWluY3ViYXRvci9jcmktbworCWxuIC1zZiAuLi8uLi8uLi8uLi9jbWQgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2t1YmVybmV0ZXMtaW5jdWJhdG9yL2NyaS1vL2NtZAorCWxuIC1zZiAuLi8uLi8uLi8uLi90ZXN0ICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9rdWJlcm5ldGVzLWluY3ViYXRvci9jcmktby90ZXN0CisJbG4gLXNmIC4uLy4uLy4uLy4uL29jaSAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1pbmN1YmF0b3IvY3JpLW8vb2NpCisJbG4gLXNmIC4uLy4uLy4uLy4uL3NlcnZlciAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1pbmN1YmF0b3IvY3JpLW8vc2VydmVyCisJbG4gLXNmIC4uLy4uLy4uLy4uL3BrZyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1pbmN1YmF0b3IvY3JpLW8vcGtnCisJbG4gLXNmIC4uLy4uLy4uLy4uL2xpYnBvZCAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20va3ViZXJuZXRlcy1pbmN1YmF0b3IvY3JpLW8vbGlicG9kCisJbG4gLXNmIC4uLy4uLy4uLy4uL2xpYmtwb2QgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2t1YmVybmV0ZXMtaW5jdWJhdG9yL2NyaS1vL2xpYmtwb2QKKwlsbiAtc2YgLi4vLi4vLi4vLi4vdXRpbHMgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2t1YmVybmV0ZXMtaW5jdWJhdG9yL2NyaS1vL3V0aWxzCisKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQvLmdvcGF0aDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCisJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9LyR7bm9uYXJjaF9saWJkaXJ9LyR7SE9TVF9TWVN9L2dvIgorCisJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KKwkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCisJZXhwb3J0IENHT19FTkFCTEVEPSIxIgorCWV4cG9ydCBDR09fQ0ZMQUdTPSIke0NGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwlleHBvcnQgQ0dPX0xERkxBR1M9IiR7TERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworCWNkICR7U30vc3JjL2ltcG9ydAorCisJb2VfcnVubWFrZSBiaW5hcmllcworfQorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtQTn0nLCcnLGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ2NyaW8uc2VydmljZScsJycsZCl9IgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJlbmFibGUiCisKK2RvX2luc3RhbGwoKSB7CisgICAgbG9jYWxiaW5kaXI9Ii91c3IvbG9jYWwvYmluIgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbGJpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJleGVjZGlyfS9jcmlvCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY3JpbworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vY3Jpby5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9jcmlvL2NyaW8uY29uZgorCisgICAgIyBzYW1wbGUgY29uZmlnIGZpbGVzLCB0aGV5J2xsIGdvIGluIHRoZSAke1BOfS1jb25maWcgYmVsb3cKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9jcmlvL2NvbmZpZy8KKyAgICBpbnN0YWxsIC1tIDc1NSAtRCAke1N9L3NyYy9pbXBvcnQvdGVzdC90ZXN0ZGF0YS8qICR7RH0vJHtzeXNjb25mZGlyfS9jcmlvL2NvbmZpZy8KKworICAgIGluc3RhbGwgJHtTfS9zcmMvaW1wb3J0L2NyaW8gJHtEfS8ke2xvY2FsYmluZGlyfQorICAgIGluc3RhbGwgJHtTfS9zcmMvaW1wb3J0L2NyaW9jdGwgJHtEfS8ke2xvY2FsYmluZGlyfQorICAgIGluc3RhbGwgJHtTfS9zcmMvaW1wb3J0L2twb2QgJHtEfS8ke2xvY2FsYmluZGlyfQorCisgICAgaW5zdGFsbCAke1N9L3NyYy9pbXBvcnQvY29ubW9uL2Nvbm1vbiAke0R9LyR7bGliZXhlY2Rpcn0vY3JpbworICAgIGluc3RhbGwgJHtTfS9zcmMvaW1wb3J0L3BhdXNlL3BhdXNlICR7RH0vJHtsaWJleGVjZGlyfS9jcmlvCisKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvaW1wb3J0L2NvbnRyaWIvc3lzdGVtZC9jcmlvLnNlcnZpY2UgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9pbXBvcnQvY29udHJpYi9zeXN0ZW1kL2NyaW8tc2h1dGRvd24uc2VydmljZSAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCit9CisKK0ZJTEVTXyR7UE59LWNvbmZpZyA9ICIke3N5c2NvbmZkaXJ9L2NyaW8vY29uZmlnLyoiCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qIgorRklMRVNfJHtQTn0gKz0gIi91c3IvbG9jYWwvYmluLyoiCisKK0lOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImxkZmxhZ3MgYWxyZWFkeS1zdHJpcHBlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpLW8vZmlsZXMvMDAwMS1NYWtlZmlsZS1mb3JjZS1zeW1saW5rcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpLW8vZmlsZXMvMDAwMS1NYWtlZmlsZS1mb3JjZS1zeW1saW5rcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjBlYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcmktby9maWxlcy8wMDAxLU1ha2VmaWxlLWZvcmNlLXN5bWxpbmtzLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gYTQ0MzM5NzhiZjMyNDUyNWI0YzI2MGIwZTk2MTVhZTI3MjcxZmU1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyMCBTZXAgMjAxNyAxMjowNTo0MCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogZm9yY2Ugc3ltbGlua3MKKworU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pbXBvcnQvTWFrZWZpbGUgYi9zcmMvaW1wb3J0L01ha2VmaWxlCitpbmRleCBlM2U1MDUwYmI3ZjYuLjRhZDNmYjdmZjBhOSAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvTWFrZWZpbGUKKysrKyBiL3NyYy9pbXBvcnQvTWFrZWZpbGUKK0BAIC01Myw3ICs1Myw3IEBAIGhlbHA6CisgLmdvcGF0aG9rOgorIGlmZXEgKCIkKHdpbGRjYXJkICQoR09QS0dESVIpKSIsIiIpCisgCW1rZGlyIC1wICIkKEdPUEtHQkFTRURJUikiCistCWxuIC1zICIkKENVUkRJUikiICIkKEdPUEtHQkFTRURJUikiCisrCWxuIC1zZiAiJChDVVJESVIpIiAiJChHT1BLR0JBU0VESVIpIgorIGVuZGlmCisgCXRvdWNoICIkKEdPUEFUSCkvLmdvcGF0aG9rIgorIAorLS0gCisyLjQuMC41My5nODQ0MGY3NAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaS1vL2ZpbGVzL2NyaW8uY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpLW8vZmlsZXMvY3Jpby5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZDdmNDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaS1vL2ZpbGVzL2NyaW8uY29uZgpAQCAtMCwwICsxLDE0NyBAQAorIyBnZW5lcmF0ZWQgdmlhOiBjcmlvIC0tY29uZmlnPSIiIGNvbmZpZyAtLWRlZmF1bHQKKworIyBUaGUgImNyaW8iIHRhYmxlIGNvbnRhaW5zIGFsbCBvZiB0aGUgc2VydmVyIG9wdGlvbnMuCitbY3Jpb10KKworIyByb290IGlzIGEgcGF0aCB0byB0aGUgInJvb3QgZGlyZWN0b3J5Ii4gQ1JJTyBzdG9yZXMgYWxsIG9mIGl0cyBkYXRhLAorIyBpbmNsdWRpbmcgY29udGFpbmVyIGltYWdlcywgaW4gdGhpcyBkaXJlY3RvcnkuCityb290ID0gIi92YXIvbGliL2NvbnRhaW5lcnMvc3RvcmFnZSIKKworIyBydW4gaXMgYSBwYXRoIHRvIHRoZSAicnVuIGRpcmVjdG9yeSIuIENSSU8gc3RvcmVzIGFsbCBvZiBpdHMgc3RhdGUKKyMgaW4gdGhpcyBkaXJlY3RvcnkuCitydW5yb290ID0gIi92YXIvcnVuL2NvbnRhaW5lcnMvc3RvcmFnZSIKKworIyBzdG9yYWdlX2RyaXZlciBzZWxlY3Qgd2hpY2ggc3RvcmFnZSBkcml2ZXIgaXMgdXNlZCB0byBtYW5hZ2Ugc3RvcmFnZQorIyBvZiBpbWFnZXMgYW5kIGNvbnRhaW5lcnMuCitzdG9yYWdlX2RyaXZlciA9ICIiCisKKyMgc3RvcmFnZV9vcHRpb24gaXMgdXNlZCB0byBwYXNzIGFuIG9wdGlvbiB0byB0aGUgc3RvcmFnZSBkcml2ZXIuCitzdG9yYWdlX29wdGlvbiA9IFsKK10KKworIyBUaGUgImNyaW8uYXBpIiB0YWJsZSBjb250YWlucyBzZXR0aW5ncyBmb3IgdGhlIGt1YmVsZXQvZ1JQQworIyBpbnRlcmZhY2UgKHdoaWNoIGlzIGFsc28gdXNlZCBieSBjcmlvY3RsKS4KK1tjcmlvLmFwaV0KKworIyBsaXN0ZW4gaXMgdGhlIHBhdGggdG8gdGhlIEFGX0xPQ0FMIHNvY2tldCBvbiB3aGljaCBjcmlvIHdpbGwgbGlzdGVuLgorbGlzdGVuID0gIi92YXIvcnVuL2NyaW8uc29jayIKKworIyBzdHJlYW1fYWRkcmVzcyBpcyB0aGUgSVAgYWRkcmVzcyBvbiB3aGljaCB0aGUgc3RyZWFtIHNlcnZlciB3aWxsIGxpc3Rlbgorc3RyZWFtX2FkZHJlc3MgPSAiIgorCisjIHN0cmVhbV9wb3J0IGlzIHRoZSBwb3J0IG9uIHdoaWNoIHRoZSBzdHJlYW0gc2VydmVyIHdpbGwgbGlzdGVuCitzdHJlYW1fcG9ydCA9ICIxMDAxMCIKKworIyBmaWxlX2xvY2tpbmcgaXMgd2hldGhlciBmaWxlLWJhc2VkIGxvY2tpbmcgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YKKyMgaW4tbWVtb3J5IGxvY2tpbmcKK2ZpbGVfbG9ja2luZyA9IHRydWUKKworIyBUaGUgImNyaW8ucnVudGltZSIgdGFibGUgY29udGFpbnMgc2V0dGluZ3MgcGVydGFpbmluZyB0byB0aGUgT0NJCisjIHJ1bnRpbWUgdXNlZCBhbmQgb3B0aW9ucyBmb3IgaG93IHRvIHNldCB1cCBhbmQgbWFuYWdlIHRoZSBPQ0kgcnVudGltZS4KK1tjcmlvLnJ1bnRpbWVdCisKKyMgcnVudGltZSBpcyB0aGUgT0NJIGNvbXBhdGlibGUgcnVudGltZSB1c2VkIGZvciB0cnVzdGVkIGNvbnRhaW5lciB3b3JrbG9hZHMuCisjIFRoaXMgaXMgYSBtYW5kYXRvcnkgc2V0dGluZyBhcyB0aGlzIHJ1bnRpbWUgd2lsbCBiZSB0aGUgZGVmYXVsdCBvbmUKKyMgYW5kIHdpbGwgYWxzbyBiZSB1c2VkIGZvciB1bnRydXN0ZWQgY29udGFpbmVyIHdvcmtsb2FkcyBpZgorIyBydW50aW1lX3VudHJ1c3RlZF93b3JrbG9hZCBpcyBub3Qgc2V0LgorcnVudGltZSA9ICIvdXNyL2Jpbi9ydW5jIgorCisjIHJ1bnRpbWVfdW50cnVzdGVkX3dvcmtsb2FkIGlzIHRoZSBPQ0kgY29tcGF0aWJsZSBydW50aW1lIHVzZWQgZm9yIHVudHJ1c3RlZAorIyBjb250YWluZXIgd29ya2xvYWRzLiBUaGlzIGlzIGFuIG9wdGlvbmFsIHNldHRpbmcsIGV4Y2VwdCBpZgorIyBkZWZhdWx0X2NvbnRhaW5lcl90cnVzdCBpcyBzZXQgdG8gInVudHJ1c3RlZCIuCitydW50aW1lX3VudHJ1c3RlZF93b3JrbG9hZCA9ICIiCisKKyMgZGVmYXVsdF93b3JrbG9hZF90cnVzdCBpcyB0aGUgZGVmYXVsdCBsZXZlbCBvZiB0cnVzdCBjcmlvIHB1dHMgaW4gY29udGFpbmVyCisjIHdvcmtsb2Fkcy4gSXQgY2FuIGVpdGhlciBiZSAidHJ1c3RlZCIgb3IgInVudHJ1c3RlZCIsIGFuZCB0aGUgZGVmYXVsdAorIyBpcyAidHJ1c3RlZCIuCisjIENvbnRhaW5lcnMgY2FuIGJlIHJ1biB0aHJvdWdoIGRpZmZlcmVudCBjb250YWluZXIgcnVudGltZXMsIGRlcGVuZGluZyBvbgorIyB0aGUgdHJ1c3QgaGludHMgd2UgcmVjZWl2ZSBmcm9tIGt1YmVsZXQ6CisjIC0gSWYga3ViZWxldCB0YWdzIGEgY29udGFpbmVyIHdvcmtsb2FkIGFzIHVudHJ1c3RlZCwgY3JpbyB3aWxsIHRyeSBmaXJzdCB0bworIyBydW4gaXQgdGhyb3VnaCB0aGUgdW50cnVzdGVkIGNvbnRhaW5lciB3b3JrbG9hZCBydW50aW1lLiBJZiBpdCBpcyBub3Qgc2V0LAorIyBjcmlvIHdpbGwgdXNlIHRoZSB0cnVzdGVkIHJ1bnRpbWUuCisjIC0gSWYga3ViZWxldCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGFpbmVyIHdvcmtsb2FkIHRydXN0CisjIGxldmVsLCB0aGUgc2VsZWN0ZWQgcnVudGltZSB3aWxsIGRlcGVuZCBvbiB0aGUgZGVmYXVsdF9jb250YWluZXJfdHJ1c3Qgc2V0dGluZy4KKyMgSWYgaXQgaXMgc2V0IHRvICJ1bnRydXN0ZWQiLCB0aGVuIGFsbCBjb250YWluZXJzIGV4Y2VwdCBmb3IgdGhlIGhvc3QgcHJpdmlsZWdlZAorIyBvbmVzLCB3aWxsIGJlIHJ1biBieSB0aGUgcnVudGltZV91bnRydXN0ZWRfd29ya2xvYWQgcnVudGltZS4gSG9zdCBwcml2aWxlZ2VkCisjIGNvbnRhaW5lcnMgYXJlIGJ5IGRlZmluaXRpb24gdHJ1c3RlZCBhbmQgd2lsbCBhbHdheXMgdXNlIHRoZSB0cnVzdGVkIGNvbnRhaW5lcgorIyBydW50aW1lLiBJZiBkZWZhdWx0X2NvbnRhaW5lcl90cnVzdCBpcyBzZXQgdG8gInRydXN0ZWQiLCBjcmlvIHdpbGwgdXNlIHRoZSB0cnVzdGVkCisjIGNvbnRhaW5lciBydW50aW1lIGZvciBhbGwgY29udGFpbmVycy4KK2RlZmF1bHRfd29ya2xvYWRfdHJ1c3QgPSAidHJ1c3RlZCIKKworIyBjb25tb24gaXMgdGhlIHBhdGggdG8gY29ubW9uIGJpbmFyeSwgdXNlZCBmb3IgbWFuYWdpbmcgdGhlIHJ1bnRpbWUuCitjb25tb24gPSAiL3Vzci9saWJleGVjL2NyaW8vY29ubW9uIgorCisjIGNvbm1vbl9lbnYgaXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGxpc3QgZm9yIGNvbm1vbiBwcm9jZXNzLAorIyB1c2VkIGZvciBwYXNzaW5nIG5lY2Vzc2FyeSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBjb25tb24gb3IgcnVudGltZS4KK2Nvbm1vbl9lbnYgPSBbCisJIlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwKK10KKworIyBzZWxpbnV4IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBTRUxpbnV4IHdpbGwgYmUgdXNlZCBmb3IgcG9kCisjIHNlcGFyYXRpb24gb24gdGhlIGhvc3QuIElmIHlvdSBlbmFibGUgdGhpcyBmbGFnLCBTRUxpbnV4IG11c3QgYmUgcnVubmluZworIyBvbiB0aGUgaG9zdC4KK3NlbGludXggPSBmYWxzZQorCisjIHNlY2NvbXBfcHJvZmlsZSBpcyB0aGUgc2VjY29tcCBqc29uIHByb2ZpbGUgcGF0aCB3aGljaCBpcyB1c2VkIGFzIHRoZQorIyBkZWZhdWx0IGZvciB0aGUgcnVudGltZS4KK3NlY2NvbXBfcHJvZmlsZSA9ICIvZXRjL2NyaW8vc2VjY29tcC5qc29uIgorCisjIGFwcGFybW9yX3Byb2ZpbGUgaXMgdGhlIGFwcGFybW9yIHByb2ZpbGUgbmFtZSB3aGljaCBpcyB1c2VkIGFzIHRoZQorIyBkZWZhdWx0IGZvciB0aGUgcnVudGltZS4KK2FwcGFybW9yX3Byb2ZpbGUgPSAiY3Jpby1kZWZhdWx0IgorCisjIGNncm91cF9tYW5hZ2VyIGlzIHRoZSBjZ3JvdXAgbWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbiB0byBiZSB1c2VkCisjIGZvciB0aGUgcnVudGltZS4KK2Nncm91cF9tYW5hZ2VyID0gImNncm91cGZzIgorCisjIGhvb2tzX2Rpcl9wYXRoIGlzIHRoZSBvY2kgaG9va3MgZGlyZWN0b3J5IGZvciBhdXRvbWF0aWNhbGx5IGV4ZWN1dGVkIGhvb2tzCitob29rc19kaXJfcGF0aCA9ICIvdXNyL3NoYXJlL2NvbnRhaW5lcnMvb2NpL2hvb2tzLmQiCisKKyMgcGlkc19saW1pdCBpcyB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBhbGxvd2VkIGluIGEgY29udGFpbmVyCitwaWRzX2xpbWl0ID0gMTAyNAorCisjIFRoZSAiY3Jpby5pbWFnZSIgdGFibGUgY29udGFpbnMgc2V0dGluZ3MgcGVydGFpbmluZyB0byB0aGUKKyMgbWFuYWdlbWVudCBvZiBPQ0kgaW1hZ2VzLgorW2NyaW8uaW1hZ2VdCisKKyMgZGVmYXVsdF90cmFuc3BvcnQgaXMgdGhlIHByZWZpeCB3ZSB0cnkgcHJlcGVuZGluZyB0byBhbiBpbWFnZSBuYW1lIGlmIHRoZQorIyBpbWFnZSBuYW1lIGFzIHdlIHJlY2VpdmUgaXQgY2FuJ3QgYmUgcGFyc2VkIGFzIGEgdmFsaWQgc291cmNlIHJlZmVyZW5jZQorZGVmYXVsdF90cmFuc3BvcnQgPSAiZG9ja2VyOi8vIgorCisjIHBhdXNlX2ltYWdlIGlzIHRoZSBpbWFnZSB3aGljaCB3ZSB1c2UgdG8gaW5zdGFudGlhdGUgaW5mcmEgY29udGFpbmVycy4KK3BhdXNlX2ltYWdlID0gImt1YmVybmV0ZXMvcGF1c2UiCisKKyMgcGF1c2VfY29tbWFuZCBpcyB0aGUgY29tbWFuZCB0byBydW4gaW4gYSBwYXVzZV9pbWFnZSB0byBoYXZlIGEgY29udGFpbmVyIGp1c3QKKyMgc2l0IHRoZXJlLiAgSWYgdGhlIGltYWdlIGNvbnRhaW5zIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24sIHRoaXMgdmFsdWUgbmVlZAorIyBub3QgYmUgc3BlY2lmaWVkLgorcGF1c2VfY29tbWFuZCA9ICIvcGF1c2UiCisKKyMgc2lnbmF0dXJlX3BvbGljeSBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB3aGljaCBkZWNpZGVzIHdoYXQgc29ydCBvZiBwb2xpY3kgd2UKKyMgdXNlIHdoZW4gZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8gdHJ1c3QgYW4gaW1hZ2UgdGhhdCB3ZSd2ZSBwdWxsZWQuCisjIE91dHNpZGUgb2YgdGVzdGluZyBzaXR1YXRpb25zLCBpdCBpcyBzdHJvbmdseSBhZHZpc2VkIHRoYXQgdGhpcyBiZSBsZWZ0CisjIHVuc3BlY2lmaWVkIHNvIHRoYXQgdGhlIGRlZmF1bHQgc3lzdGVtLXdpZGUgcG9saWN5IHdpbGwgYmUgdXNlZC4KK3NpZ25hdHVyZV9wb2xpY3kgPSAiIgorCisjIGltYWdlX3ZvbHVtZXMgY29udHJvbHMgaG93IGltYWdlIHZvbHVtZXMgYXJlIGhhbmRsZWQuCisjIFRoZSB2YWxpZCB2YWx1ZXMgYXJlIG1rZGlyIGFuZCBpZ25vcmUuCitpbWFnZV92b2x1bWVzID0gIm1rZGlyIgorCisjIGluc2VjdXJlX3JlZ2lzdHJpZXMgaXMgdXNlZCB0byBza2lwIFRMUyB2ZXJpZmljYXRpb24gd2hlbiBwdWxsaW5nIGltYWdlcy4KK2luc2VjdXJlX3JlZ2lzdHJpZXMgPSBbCitdCisKKyMgcmVnaXN0cmllcyBpcyB1c2VkIHRvIHNwZWNpZnkgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWdpc3RyaWVzIHRvIGJlIHVzZWQKKyMgd2hlbiBwdWxsaW5nIGFuIHVucXVhbGlmaWVkIGltYWdlIChlLmcuIGZlZG9yYTpyYXdoaWRlKS4KK3JlZ2lzdHJpZXMgPSBbCitdCisKKyMgVGhlICJjcmlvLm5ldHdvcmsiIHRhYmxlIGNvbnRhaW5zIHNldHRpbmdzIHBlcnRhaW5pbmcgdG8gdGhlCisjIG1hbmFnZW1lbnQgb2YgQ05JIHBsdWdpbnMuCitbY3Jpby5uZXR3b3JrXQorCisjIG5ldHdvcmtfZGlyIGlzIGlzIHdoZXJlIENOSSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24KKyMgZmlsZXMgYXJlIHN0b3JlZC4KK25ldHdvcmtfZGlyID0gIi9ldGMvY25pL25ldC5kLyIKKworIyBwbHVnaW5fZGlyIGlzIGlzIHdoZXJlIENOSSBwbHVnaW4gYmluYXJpZXMgYXJlIHN0b3JlZC4KK3BsdWdpbl9kaXIgPSAiL29wdC9jbmkvYmluLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9jcml1X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9jcml1X2dpdC5iYgppbmRleCAyMWRlZTJiLi4zYTAyMTAzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvY3JpdV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2NyaXVfZ2l0LmJiCkBAIC0xMywyMSArMTMsMjAgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDEyZGU0NTg1NDRjMWNiNmEyYjUxMmNkMzk5Mjg2ZTIiCiAKLVNSQ1JFViA9ICJjMDMxNDE3MjU1ZjZhNWM0NDA5ZDE1ZmYwYjM2YWY1ZjZlOTBjNTU5IgotUFIgPSAicjAiCi1QViA9ICIyLjUrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiYTMxYzE4NTRlMTA1ODBhMDk2MjFlNTM5YzNlYzA1MmI4NzVhOGUwNiIKK1BWID0gIjMuNCtnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3hlbXVsL2NyaXUuZ2l0O3Byb3RvY29sPWdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNyaXUtRml4LXRvb2xjaGFpbi1oYXJkY29kZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNyaXUtU2tpcC1kb2N1bWVudGF0aW9uLWluc3RhbGwucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jcml1LUNoYW5nZS1saWJyYXJpZXMtaW5zdGFsbC1kaXJlY3RvcnkucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWxpbnV4JywgJycsICdmaWxlOi8vZGlzYWJsZS1zZWxpbnV4LnBhdGNoJywgZCl9IFwKICAgICAgICAgICAgZmlsZTovL2xpYi1NYWtlZmlsZS1vdmVyd3JpdGUtaW5zdGFsbC1saWItdG8tYWxsb3ctbXVsdGlhcmMucGF0Y2ggXAogICAgICAgICAgICIKIAogQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCiAKLURFUEVORFMgKz0gImxpYm5sIGxpYmNhcCBwcm90b2J1Zi1jLW5hdGl2ZSBwcm90b2J1Zi1jIHV0aWwtbGludXgtbmF0aXZlIgorREVQRU5EUyArPSAibGlibmwgbGliY2FwIHByb3RvYnVmLWMtbmF0aXZlIHByb3RvYnVmLWMgdXRpbC1saW51eC1uYXRpdmUgbGliYnNkIGxpYm5ldCIKK1JERVBFTkRTXyR7UE59ID0gImJhc2giCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTc3LDMgKzc2LDggQEAKICAgICAgICAgICAgICR7bGliZGlyfS9weWNyaXUvIFwKICAgICAgICAgICAgICR7bGliZGlyfS9jcml0LTAuMC4xLXB5Mi43LmVnZy1pbmZvIFwKICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgXAorICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9jb21wZWwvc3RkLmxpYi5hIFwKKyAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vY29tcGVsL2Zkcy5saWIuYSBcCisgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMS1jcml1LUNoYW5nZS1saWJyYXJpZXMtaW5zdGFsbC1kaXJlY3RvcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMS1jcml1LUNoYW5nZS1saWJyYXJpZXMtaW5zdGFsbC1kaXJlY3RvcnkucGF0Y2gKaW5kZXggYTcyMTQwNS4uNDkwOGU0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzLzAwMDEtY3JpdS1DaGFuZ2UtbGlicmFyaWVzLWluc3RhbGwtZGlyZWN0b3J5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtQ2hhbmdlLWxpYnJhcmllcy1pbnN0YWxsLWRpcmVjdG9yeS5wYXRjaApAQCAtMSwyNiArMSwyNiBAQAotRnJvbSA3ZWJkZTA2ZTAwYjU5MWE4ODM5N2RhZDc0YTFhYTQ3ZmQ1NjJlYjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmlhbmNodWFuIFdhbmcgPGppYW5jaHVhbi53YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDE2IEF1ZyAyMDE2IDA5OjQ4OjA4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBjcml1OiBDaGFuZ2UgbGlicmFyaWVzIGluc3RhbGwgZGlyZWN0b3J5CitGcm9tIDc4MzkwMzA1ODI5MzE2NjMzYWNlZTJjYTU2MDczMzFiMGUzN2ExMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCA4IFNlcCAyMDE3IDE1OjExOjMxIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNyaXU6IENoYW5nZSBsaWJyYXJpZXMgaW5zdGFsbCBkaXJlY3RvcnkKIAogSW5zdGFsbCB0aGUgbGlicmFyaWVzIGludG8gL3Vzci9saWIob3IgL3Vzci9saWI2NCkKIAogU2lnbmVkLW9mZi1ieTogSmlhbmNodWFuIFdhbmcgPGppYW5jaHVhbi53YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgogLS0tCiAgTWFrZWZpbGUuaW5zdGFsbCB8IDEzIC0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbnN0YWxsIGIvTWFrZWZpbGUuaW5zdGFsbAotaW5kZXggZGJjMjJlMS4uYTMwZGM5NiAxMDA2NDQKK2luZGV4IDM5ODdiY2MuLjczZDk4YTQgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5pbnN0YWxsCiArKysgYi9NYWtlZmlsZS5pbnN0YWxsCi1AQCAtMTEsMTkgKzExLDYgQEAgTElCRElSCQk/PSAkKFBSRUZJWCkvbGliCi0gSU5DTFVERURJUgk/PSAkKFBSRUZJWCkvaW5jbHVkZS9jcml1Ci0gTElCRVhFQ0RJUgk/PSAkKFBSRUZJWCkvbGliZXhlYworQEAgLTksMTkgKzksNiBAQCBMSUJFWEVDRElSCT89ICQoUFJFRklYKS9saWJleGVjCisgUlVORElSCQk/PSAvcnVuCiAgCi0tIworICMKIC0jIEZvciByZWNlbnQgRGViaWFuL1VidW50dSB3aXRoIG11bHRpYXJjaCBzdXBwb3J0LgotLURFQl9IT1NUX01VTFRJQVJDSCA/PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfTVVMVElBUkNIIDI+L2Rldi9udWxsKQorLURFQl9IT1NUX01VTFRJQVJDSCA6PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfTVVMVElBUkNIIDI+L2Rldi9udWxsKQogLWlmbmVxICIkKERFQl9IT1NUX01VTFRJQVJDSCkiICIiCiAtICAgICAgICBMSUJESVIJCQk/PSAkKFBSRUZJWCkvbGliLyQoREVCX0hPU1RfTVVMVElBUkNIKQogLWVsc2UKQEAgLTMxLDggKzMxLDkgQEAKIC0gICAgICAgIGVuZGlmCiAtZW5kaWYKIC0KLSBleHBvcnQgQklORElSIFNCSU5ESVIgTUFORElSIFNZU1RFTURVTklURElSIExPR1JPVEFURURJUgotIGV4cG9ydCBJTkNMVURFRElSIExJQkRJUiBERVNURElSIFBSRUZJWCBMSUJFWEVDRElSCistIworICMgTElCRElSIGZhbGxzIGJhY2sgdG8gdGhlIHN0YW5kYXJkIHBhdGguCisgTElCRElSID89ICQoUFJFRklYKS9saWIKICAKIC0tIAogMi43LjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtRml4LXRvb2xjaGFpbi1oYXJkY29kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy8wMDAxLWNyaXUtRml4LXRvb2xjaGFpbi1oYXJkY29kZS5wYXRjaAppbmRleCBkMzBmMmFjLi5kYzViODk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvMDAwMS1jcml1LUZpeC10b29sY2hhaW4taGFyZGNvZGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzLzAwMDEtY3JpdS1GaXgtdG9vbGNoYWluLWhhcmRjb2RlLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSAwNTdkMzBmMTVlODFkY2M0MTYyZDZmYmVlMDZmMTI2NTY0NTk2Mzk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmlhbmNodWFuIFdhbmcgPGppYW5jaHVhbi53YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDcgU2VwIDIwMTYgMjM6NTU6MTUgLTA0MDAKK0Zyb20gYWY2Nzk4NTNhNDVmZTYzZjY4MGM5OWU3MDQxNmM4YWM2MjBkMjNiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDggU2VwIDIwMTcgMTU6MDI6MTQgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gY3JpdTogRml4IHRvb2xjaGFpbiBoYXJkY29kZQogCiBSZXBsYWNlICI6PSIgdG8gIj89IiBzbyB0aGF0IHRoZSB0b29sY2hhaW4gdXNlZCBieSBiaXRiYWtlIGJ1aWxkIHN5c3RlbSB3aWxsCkBAIC04LDQ1ICs4LDMyIEBACiAKIFNpZ25lZC1vZmYtYnk6IFlhbmcgU2hpIDx5YW5nLnNoaUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogSmlhbmNodWFuIFdhbmcgPGppYW5jaHVhbi53YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgogLS0tCiAgTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBjcml1L3BpZS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgMiArLQogIHNjcmlwdHMvbm1rL3NjcmlwdHMvaW5jbHVkZS5tayB8ICAyICstCiAgc2NyaXB0cy9ubWsvc2NyaXB0cy90b29scy5tayAgIHwgNDAgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisgMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDUyY2JkNmEuLmY2NjI3OWIgMTAwNjQ0CitpbmRleCBmMjU4M2EyLi5kN2Y1MWU1IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtNjAsNyArNjAsNyBAQCBMREFSQ0gJCQk/PSAkKFNSQ0FSQ0gpCi0gCi0gZXhwb3J0IFNSQ0FSQ0ggTERBUkNIIFZEU08KK0BAIC0xNyw3ICsxNyw3IEBAIGlmZXEgKCQob3JpZ2luIEhPU1RDRkxBR1MpLCB1bmRlZmluZWQpCisgICAgICAgICBIT1NUQ0ZMQUdTIDo9ICQoQ0ZMQUdTKSAkKFVTRVJDRkxBR1MpCisgZW5kaWYKICAKIC1VTkFNRS1NIDo9ICQoc2hlbGwgdW5hbWUgLW0pCiArVU5BTUUtTSA/PSAkKHNoZWxsIHVuYW1lIC1tKQotIGV4cG9ydCBVTkFNRS1NCiAgCi0gaWZlcSAoJChBUkNIKSxhcm0pCi1kaWZmIC0tZ2l0IGEvY3JpdS9waWUvTWFrZWZpbGUgYi9jcml1L3BpZS9NYWtlZmlsZQotaW5kZXggMTI1YjAyZi4uOTk3NTg3MSAxMDA2NDQKLS0tLSBhL2NyaXUvcGllL01ha2VmaWxlCi0rKysgYi9jcml1L3BpZS9NYWtlZmlsZQotQEAgLTE3LDcgKzE3LDcgQEAgcmVzdG9yZXItb2JqLWUJCSs9IC4vJChBUkNIX0RJUikvc3lzY2FsbHMuYnVpbHQtaW4ubwogICMKLSBDRkxBR1MJCQk6PSAkKGZpbHRlci1vdXQgLXBnICQoQ0ZMQUdTLUdDT1YpLCQoQ0ZMQUdTKSkKLSBDRkxBR1MJCQkrPSAtaXF1b3RlICQoU1JDX0RJUikvY3JpdS9waWUvcGllZ2VuCi0tQ0ZMQUdTCQkJKz0gLWlxdW90ZSAkKFNSQ19ESVIpL2NyaXUvYXJjaC8kKEFSQ0gpL2luY2x1ZGUKLStDRkxBR1MJCQkrPSAtaXF1b3RlICQoU1JDX0RJUikvY3JpdS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZQotIENGTEFHUwkJCSs9IC1pcXVvdGUgJChTUkNfRElSKS9jcml1L2luY2x1ZGUKLSBDRkxBR1MJCQkrPSAtaXF1b3RlICQoU1JDX0RJUikKLSAKKyAjIFN1cHBvcnRlZCBBcmNoaXRlY3R1cmVzCiBkaWZmIC0tZ2l0IGEvc2NyaXB0cy9ubWsvc2NyaXB0cy9pbmNsdWRlLm1rIGIvc2NyaXB0cy9ubWsvc2NyaXB0cy9pbmNsdWRlLm1rCi1pbmRleCA0YzQ5NmY3Li5hNzI1MGNkIDEwMDY0NAoraW5kZXggMDRjY2IzYS4uMGQ2M2JjNyAxMDA2NDQKIC0tLSBhL3NjcmlwdHMvbm1rL3NjcmlwdHMvaW5jbHVkZS5tawogKysrIGIvc2NyaXB0cy9ubWsvc2NyaXB0cy9pbmNsdWRlLm1rCiBAQCAtMjAsNyArMjAsNyBAQCBTVUJBUkNIIDo9ICQoc2hlbGwgdW5hbWUgLW0gfCBzZWQgICAgICAgXAotICAgICAgICAgICAgICAgICAtZSBzL2FhcmNoNjQuKi9hcm02NC8pCisgICAgICAgICAgICAgICAgIC1lIHMvYWFyY2g2NC4qL2FhcmNoNjQvKQogIAogIEFSQ0gJCT89ICQoU1VCQVJDSCkKIC1TUkNBUkNIIAk6PSAkKEFSQ0gpCkBAIC01NSwxNiArNDIsMjAgQEAKICBleHBvcnQgU1VCQVJDSCBBUkNIIFNSQ0FSQ0gKICAKIGRpZmYgLS1naXQgYS9zY3JpcHRzL25tay9zY3JpcHRzL3Rvb2xzLm1rIGIvc2NyaXB0cy9ubWsvc2NyaXB0cy90b29scy5tawotaW5kZXggMDUzOGRkZS4uZTRhZjA2OCAxMDA2NDQKK2luZGV4IDU2ZGJhODQuLjE2OTg4MjEgMTAwNjQ0CiAtLS0gYS9zY3JpcHRzL25tay9zY3JpcHRzL3Rvb2xzLm1rCiArKysgYi9zY3JpcHRzL25tay9zY3JpcHRzL3Rvb2xzLm1rCi1AQCAtMiwyOCArMiwyOCBAQCBpZm5kZWYgX19fX25ta19kZWZpbmVkX190b29scworQEAgLTIsMzAgKzIsMzAgQEAgaWZuZGVmIF9fX19ubWtfZGVmaW5lZF9fdG9vbHMKICAKICAjCiAgIyBTeXN0ZW0gdG9vbHMgc2hvcnRoYW5kcwogLVJNCQk6PSBybSAtZgotLUxECQk6PSAkKENST1NTX0NPTVBJTEUpbGQKLS1DQwkJOj0gJChDUk9TU19DT01QSUxFKWdjYworK1JNCQk/PSBybSAtZgorIEhPU1RMRAkJPz0gbGQKKy1MRAkJOj0gJChDUk9TU19DT01QSUxFKSQoSE9TVExEKQorK0xECQk/PSAkKENST1NTX0NPTVBJTEUpJChIT1NUTEQpCisgSE9TVENDCQk/PSBnY2MKKy1DQwkJOj0gJChDUk9TU19DT01QSUxFKSQoSE9TVENDKQogLUNQUAkJOj0gJChDQykgLUUKIC1BUwkJOj0gJChDUk9TU19DT01QSUxFKWFzCiAtQVIJCTo9ICQoQ1JPU1NfQ09NUElMRSlhcgpAQCAtNzksOSArNzAsNyBAQAogLVBZVEhPTgkJOj0gcHl0aG9uCiAtRklORAkJOj0gZmluZAogLVNICQk6PSAkKHNoZWxsIGlmIFsgLXggIiQkQkFTSCIgXTsgdGhlbiBlY2hvICQkQkFTSDsgICAgICAgIFwKLStSTQkJPz0gcm0gLWYKLStMRAkJPz0gJChDUk9TU19DT01QSUxFKWxkCi0rQ0MJCT89ICQoQ1JPU1NfQ09NUElMRSlnY2MKKytDQwkJPz0gJChDUk9TU19DT01QSUxFKSQoSE9TVENDKQogK0NQUAkJPz0gJChDQykgLUUKICtBUwkJPz0gJChDUk9TU19DT01QSUxFKWFzCiArQVIJCT89ICQoQ1JPU1NfQ09NUElMRSlhcgpAQCAtMTA1LDggKzk0LDggQEAKICtFVEFHUwkJPz0gZXRhZ3MKICtDVEFHUwkJPz0gY3RhZ3MKICAKLSBleHBvcnQgUk0gTEQgQ0MgQ1BQIEFTIEFSIFNUUklQIE9CSkNPUFkgT0JKRFVNUAorIGV4cG9ydCBSTSBIT1NUTEQgTEQgSE9TVENDIENDIENQUCBBUyBBUiBTVFJJUCBPQkpDT1BZIE9CSkRVTVAKICBleHBvcnQgTk0gU0ggTUFLRSBNS0RJUiBBV0sgUEVSTCBQWVRIT04gU0ggQ1NDT1BFCiAtLSAKLTIuOC4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvZGlzYWJsZS1zZWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9jcml1L2ZpbGVzL2Rpc2FibGUtc2VsaW51eC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ1ZDAzNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvZGlzYWJsZS1zZWxpbnV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSBiZDJlZWFkZGZjMWYxMmY4NzE4NGQ4NzBjYzlhMWFkZGUxY2YwYjEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMjQgQXByIDIwMTcgMTM6MDg6NDggLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gY3JpdS9NYWtlZmlsZS5jb25maWc6IGV4cGxpY2l0bHkgcmVtb3ZlIHNlbGludXggc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KLQotSXQgc2hvd3Mgd2FybmluZyB3aGVuIGJ1aWxkIGNyaXVzIGlmIGxpYnNlbGludXggaGFzIGJlZW4gYnVpbHQgYWxyZWFkeToKLQotICBXQVJOSU5HOiBRQSBJc3N1ZTogY3JpdSByZGVwZW5kcyBvbiBsaWJzZWxpbnV4LCBidXQgaXQgaXNuJ3QgYSBidWlsZCBkZXBlbmRlbmN5PyBbYnVpbGQtZGVwc10KLQotQXBwbHkgdGhpcyBwYXRjaCB0byBkaXNhYmxlIHNlbGludXggc3VwcG9ydCB3aGVuICdzZWxpbnV4JyBpcyBub3QgaW4gUEFDS0FHRUNPTkYuCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotW01BOiBDb250ZXh0IHVwZGF0ZWQgdG8gYXBwbHkgYWdhaW5zdCBjcml1IHYyLjVdCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY3JpdS9NYWtlZmlsZS5jb25maWcgfCA1IC0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jcml1L01ha2VmaWxlLmNvbmZpZyBiL2NyaXUvTWFrZWZpbGUuY29uZmlnCi1pbmRleCBmNTMxYjNiLi4zNzIxNmY4IDEwMDY0NAotLS0tIGEvY3JpdS9NYWtlZmlsZS5jb25maWcKLSsrKyBiL2NyaXUvTWFrZWZpbGUuY29uZmlnCi1AQCAtNywxMSArNyw2IEBAIGlmZXEgKCQoY2FsbCB0cnktY2MsJChGRUFUVVJFX1RFU1RfTElCQlNEX0RFViksLWxic2QpLHRydWUpCi0gICAgICAgICBGRUFUVVJFX0RFRklORVMJKz0gLURDT05GSUdfSEFTX0xJQkJTRAotIGVuZGlmCi0gCi0taWZlcSAoJChjYWxsIHBrZy1jb25maWctY2hlY2ssbGlic2VsaW51eCkseSkKLS0gICAgICAgIExJQlMJCSs9IC1sc2VsaW51eAotLSAgICAgICAgRkVBVFVSRV9ERUZJTkVTCSs9IC1EQ09ORklHX0hBU19TRUxJTlVYCi0tZW5kaWYKLS0KLSBleHBvcnQgREVGSU5FUyArPSAkKEZFQVRVUkVfREVGSU5FUykKLSBleHBvcnQgQ0ZMQUdTICs9ICQoRkVBVFVSRV9ERUZJTkVTKQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2NyaXUvZmlsZXMvbGliLU1ha2VmaWxlLW92ZXJ3cml0ZS1pbnN0YWxsLWxpYi10by1hbGxvdy1tdWx0aWFyYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy9saWItTWFrZWZpbGUtb3ZlcndyaXRlLWluc3RhbGwtbGliLXRvLWFsbG93LW11bHRpYXJjLnBhdGNoCmluZGV4IDhiZGE4YzQuLmMyNTEyYTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy9saWItTWFrZWZpbGUtb3ZlcndyaXRlLWluc3RhbGwtbGliLXRvLWFsbG93LW11bHRpYXJjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvY3JpdS9maWxlcy9saWItTWFrZWZpbGUtb3ZlcndyaXRlLWluc3RhbGwtbGliLXRvLWFsbG93LW11bHRpYXJjLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSAyZTBjNWM2Njc4NjAxNmY2NDQzZGEyYzFmZjE1YWQ3N2YwMThlYzliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4OWY5Yjg3OTA0YmQzMTJiODE3ZmZhYTdkODNhYmZkNWU4NGQ3MjNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMjQgQXByIDIwMTcgMTY6MTI6MDUgLTA0MDAKK0RhdGU6IEZyaSwgOCBTZXAgMjAxNyAxNTo0MDo0OSAtMDQwMAogU3ViamVjdDogW1BBVENIXSBsaWIvTWFrZWZpbGU6IG92ZXJ3cml0ZSBpbnN0YWxsLWxpYiwgdG8gYWxsb3cgbXVsdGlhcmNoCiAKIEkgYW0gbm90IHN1cmUgd2h5IFlvY3RvIGluc3RhbGxzIHB5dGhvbiBtb2R1bGVzIGluIGFyY2ggc3BlY2lmaWMKQEAgLTEzLDE1ICsxMywxNSBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCi1pbmRleCBmMWMwODIxLi5jNzE0ZDEyIDEwMDY0NAoraW5kZXggYjFiYjA1Ny4uMDZmNWM1ZCAxMDA2NDQKIC0tLSBhL2xpYi9NYWtlZmlsZQogKysrIGIvbGliL01ha2VmaWxlCi1AQCAtNTYsNyArNTYsNyBAQCBpbnN0YWxsOiBsaWItYyBsaWItcHkgLi4vY3JpdC9jcml0IGMvY3JpdS5wYy5pbgotIAkkKFEpIHNlZCAtZSAncyxAdmVyc2lvbkAsJChDUklVX1ZFUlNJT04pLCcgLWUgJ3MsQGxpYmRpckAsJChMSUJESVIpLCcgLWUgJ3MsQGluY2x1ZGVkaXJALCQoZGlyICQoSU5DTFVERURJUikpLCcgYy9jcml1LnBjLmluID4gYy9jcml1LnBjCi0gCSQoUSkgaW5zdGFsbCAtbSA2NDQgYy9jcml1LnBjICQoREVTVERJUikkKExJQkRJUikvcGtnY29uZmlnCitAQCAtNTYsNyArNTYsNyBAQCBpbnN0YWxsOiBsaWItYyBsaWItcHkgY3JpdC9jcml0IGxpYi9jL2NyaXUucGMuaW4KKyAJJChRKSBzZWQgLWUgJ3MsQHZlcnNpb25ALCQoQ1JJVV9WRVJTSU9OKSwnIC1lICdzLEBsaWJkaXJALCQoTElCRElSKSwnIC1lICdzLEBpbmNsdWRlZGlyQCwkKGRpciAkKElOQ0xVREVESVIpL2NyaXUvKSwnIGxpYi9jL2NyaXUucGMuaW4gPiBsaWIvYy9jcml1LnBjCisgCSQoUSkgaW5zdGFsbCAtbSA2NDQgbGliL2MvY3JpdS5wYyAkKERFU1RESVIpJChMSUJESVIpL3BrZ2NvbmZpZwogIAkkKEUpICIgIElOU1RBTEwgIiBjcml0Ci0tCSQoUSkgcHl0aG9uIC4uL3NjcmlwdHMvY3JpdC1zZXR1cC5weSBpbnN0YWxsIC0tcm9vdD0kKERFU1RESVIpIC0tcHJlZml4PSQoUFJFRklYKSAtLXJlY29yZCAkKENSSVRfU0VUVVBfRklMRVMpCi0rCSQoUSkgcHl0aG9uIC4uL3NjcmlwdHMvY3JpdC1zZXR1cC5weSBpbnN0YWxsIC0tcm9vdD0kKERFU1RESVIpIC0tcHJlZml4PSQoUFJFRklYKSAtLXJlY29yZCAkKENSSVRfU0VUVVBfRklMRVMpIC0taW5zdGFsbC1saWI9JChJTlNUQUxMX0xJQikKKy0JJChRKSAkKFBZVEhPTl9CSU4pIHNjcmlwdHMvY3JpdC1zZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PSQoREVTVERJUikkKFBSRUZJWCkgLS1yZWNvcmQgJChDUklUX1NFVFVQX0ZJTEVTKQorKwkkKFEpICQoUFlUSE9OX0JJTikgc2NyaXB0cy9jcml0LXNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JChERVNURElSKSQoUFJFRklYKSAtLXJlY29yZCAkKENSSVRfU0VUVVBfRklMRVMpIC0taW5zdGFsbC1saWI9JChERVNURElSKSQoSU5TVEFMTF9MSUIpCiAgLlBIT05ZOiBpbnN0YWxsCiAgCiAgdW5pbnN0YWxsOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXItY29tcG9zZS9maWxlcy8wMDAxLUFsbG93LW5ld2VyLXZlcnNpb25zLW9mLXJlcXVlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXItY29tcG9zZS9maWxlcy8wMDAxLUFsbG93LW5ld2VyLXZlcnNpb25zLW9mLXJlcXVlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYzdiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1jb21wb3NlL2ZpbGVzLzAwMDEtQWxsb3ctbmV3ZXItdmVyc2lvbnMtb2YtcmVxdWVzdHMucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAxNWNmMWEzMWY1YWY4ZjA5NTMxYmI4MzdiOTJiZDZlYTQ5YmQxNzQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODo0MToyMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBBbGxvdyBuZXdlciB2ZXJzaW9ucyBvZiByZXF1ZXN0cworCitkb2NrZXIgY29tcG9zZSBoYXMgc3RyaWN0IHJlcXVpcmVtZW50cyB0byB1c2UgcmVxdWVzdHMgPCAyLjEyCisKK0hvd2V2ZXIgaXQgd29ya3Mgd2l0aG91dCBpc3N1ZXMgd2l0aCBuZXdlciB2ZXJzaW9ucywgc28gdGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjaGVjay4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggMTkyYTBmNi4uZjQ0NDc1NyAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTMzLDcgKzMzLDcgQEAgaW5zdGFsbF9yZXF1aXJlcyA9IFsKKyAgICAgJ2NhY2hlZC1wcm9wZXJ0eSA+PSAxLjIuMCwgPCAyJywKKyAgICAgJ2RvY29wdCA+PSAwLjYuMSwgPCAwLjcnLAorICAgICAnUHlZQU1MID49IDMuMTAsIDwgNCcsCistICAgICdyZXF1ZXN0cyA+PSAyLjYuMSwgIT0gMi4xMS4wLCA8IDIuMTInLAorKyAgICAncmVxdWVzdHMgPj0gMi42LjEsICE9IDIuMTEuMCcsCisgICAgICd0ZXh0dGFibGUgPj0gMC45LjAsIDwgMC4xMCcsCisgICAgICd3ZWJzb2NrZXQtY2xpZW50ID49IDAuMzIuMCwgPCAxLjAnLAorICAgICAnZG9ja2VyID49IDIuNS4xLCA8IDMuMCcsCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyLWNvbXBvc2UvcHl0aG9uMy1kb2NrZXItY29tcG9zZV8xLjE2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1jb21wb3NlL3B5dGhvbjMtZG9ja2VyLWNvbXBvc2VfMS4xNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNzYxZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1jb21wb3NlL3B5dGhvbjMtZG9ja2VyLWNvbXBvc2VfMS4xNi4xLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiTXVsdGktY29udGFpbmVyIG9yY2hlc3RyYXRpb24gZm9yIERvY2tlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmRvY2tlci5jb20vIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDM1YjI2NmIzODk5YWE4YTk1OWYxN2Q0MWM1NmRlZjgiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUFsbG93LW5ld2VyLXZlcnNpb25zLW9mLXJlcXVlc3RzLnBhdGNoIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjhkY2FkZjA5MTQzNjAwZmNiNTczYjQzZjQ0NmM4ZjlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiNDZhNmEyYzRkMTkzYTNmZjFlNGQ3MjA4ZWVhOTIwYjYyOWM4MWRjOTIyNTdjODdmM2Y5MzA5NWNmYjBiZGYiCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgJHtQWVRIT05fUE59LWNhY2hlZC1wcm9wZXJ0eSBcCisgICR7UFlUSE9OX1BOfS1jZXJ0aWZpIFwKKyAgJHtQWVRIT05fUE59LWNoYXJkZXQgXAorICAke1BZVEhPTl9QTn0tY29sb3JhbWEgXAorICAke1BZVEhPTl9QTn0tZG9ja2VyIFwKKyAgJHtQWVRIT05fUE59LWRvY2tlci1weWNyZWRzIFwKKyAgJHtQWVRIT05fUE59LWRvY2tlcnB0eSBcCisgICR7UFlUSE9OX1BOfS1kb2NvcHQgXAorICAke1BZVEhPTl9QTn0tZW51bSBcCisgICR7UFlUSE9OX1BOfS1pZG5hIFwKKyAgJHtQWVRIT05fUE59LWpzb25zY2hlbWEgXAorICAke1BZVEhPTl9QTn0tcHl5YW1sIFwKKyAgJHtQWVRIT05fUE59LXJlcXVlc3RzIFwKKyAgJHtQWVRIT05fUE59LXNpeCBcCisgICR7UFlUSE9OX1BOfS10ZXJtaW5hbCBcCisgICR7UFlUSE9OX1BOfS10ZXh0dGFibGUgXAorICAke1BZVEhPTl9QTn0tdXJsbGliMyBcCisgICR7UFlUSE9OX1BOfS13ZWJzb2NrZXQtY2xpZW50IFwKKyAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXItZGlzdHJpYnV0aW9uL2RvY2tlci1kaXN0cmlidXRpb25fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXItZGlzdHJpYnV0aW9uL2RvY2tlci1kaXN0cmlidXRpb25fZ2l0LmJiCmluZGV4IDA4YjZkNzAuLmFkZDVjZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyLWRpc3RyaWJ1dGlvbi9kb2NrZXItZGlzdHJpYnV0aW9uX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci1kaXN0cmlidXRpb24vZG9ja2VyLWRpc3RyaWJ1dGlvbl9naXQuYmIKQEAgLTMsMTYgKzMsMTggQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQyNzk0YzBkZjViOTA3ZmRhY2UyMzVhNjE5ZDgwMzE0IgogCi1TUkNSRVZfZGlzdHJpYnV0aW9uPSIwODEwZWJhMmFkZjA0OGI3NzYyMTQ3Mjk5MTIxMTkyNGQ5ZWMzMWM1IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9kaXN0cmlidXRpb24uZ2l0O2JyYW5jaD1tYXN0ZXI7bmFtZT1kaXN0cmlidXRpb247ZGVzdHN1ZmZpeD1naXQvc3JjL2dpdGh1Yi5jb20vZG9ja2VyL2Rpc3RyaWJ1dGlvbiBcCitTUkNSRVZfZGlzdHJpYnV0aW9uPSI0ODI5NGQ5MjhjZWQ1ZGQ5YjM3OGY3ZmQ3YzZmNWRhM2ZmM2YyYzg5IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9kaXN0cmlidXRpb24uZ2l0O2JyYW5jaD1yZWxlYXNlLzIuNjtuYW1lPWRpc3RyaWJ1dGlvbjtkZXN0c3VmZml4PWdpdC9zcmMvZ2l0aHViLmNvbS9kb2NrZXIvZGlzdHJpYnV0aW9uIFwKICAgICAgICAgICAgZmlsZTovL2RvY2tlci1yZWdpc3RyeS5zZXJ2aWNlIFwKICAgICAgICAgICAiCiAKIFBBQ0tBR0VTID0rICJkb2NrZXItcmVnaXN0cnkiCiAKLVBWID0gInYyLjYuMC1yYytnaXQke1NSQ1BWfSIKK1BWID0gInYyLjYuMiIKIFMgPSAiJHtXT1JLRElSfS9naXQvc3JjL2dpdGh1Yi5jb20vZG9ja2VyL2Rpc3RyaWJ1dGlvbiIKIAorR09fSU1QT1JUID0gImltcG9ydCIKKwogaW5oZXJpdCBnb2FyY2gKIGluaGVyaXQgZ28KIApAQCAtMzMsNiArMzUsOCBAQAogCWV4cG9ydCBHT19HQ0ZMQUdTPSIiCiAJZXhwb3J0IENHT19MREZMQUdTPSIke0JVSUxEU0RLX0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAKKwljZCAke1N9CisKIAlvZV9ydW5tYWtlIGJpbmFyaWVzCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2RvY2tlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9kb2NrZXJfZ2l0LmJiCmluZGV4IDc0MTcwY2IuLjRiYTVlODEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2RvY2tlcl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZG9ja2VyX2dpdC5iYgpAQCAtMTgsMTEgKzE4LDEzIEBACiAgc3VidGxlIGFuZC9vciBnbGFyaW5nIGlzc3Vlcy4gXAogICIKIAotU1JDUkVWX2RvY2tlciA9ICI0OWJmNDc0ZjllZDdjZTcxNDNhNTlkMTk2NGZmN2I3ZmQ5YjUyMTc4IgotU1JDUkVWX2xpYm5ldHdvcms9IjBmNTM0MzU0YjgxMzAwM2E3NTQ2MDY2ODk3MjJmZTI1MzEwMWJjNGUiCitTUkNSRVZfZG9ja2VyID0gImU2MzlhNzBmYmU5OTlkOTYzNTRhNWJjZjU2MDIzMWI3YjhhYTkzNWMiCitTUkNSRVZfbGlibmV0d29yayA9ICIyNmFkZGY0M2E1ZDkyNWZmNzlkMjYyZGJiZGI1MzQ0YmMyYjZlMTk4IgorU1JDUkVWX2NsaSA9ICJhNzY1MjE4ZjE5ODhlODViNjhhYTM5NzdmMzQ4OTNlYzdiMDU5YTYwIgogU1JDX1VSSSA9ICJcCi0JZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyLmdpdDtub2JyYW5jaD0xO25hbWU9ZG9ja2VyIFwKKwlnaXQ6Ly9naXRodWIuY29tL21vYnkvbW9ieS5naXQ7bm9icmFuY2g9MTtuYW1lPWRvY2tlciBcCiAJZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvbGlibmV0d29yay5naXQ7YnJhbmNoPW1hc3RlcjtuYW1lPWxpYm5ldHdvcms7ZGVzdHN1ZmZpeD1saWJuZXR3b3JrIFwKKwlnaXQ6Ly9naXRodWIuY29tL2RvY2tlci9jbGk7YnJhbmNoPW1hc3RlcjtuYW1lPWNsaTtkZXN0c3VmZml4PWNsaSBcCiAJZmlsZTovL2RvY2tlci5pbml0IFwKIAlmaWxlOi8vaGkuRG9ja2VyZmlsZSBcCiAJZmlsZTovL2NvbnRleHQtdXNlLWdvbGFuZy5vcmcteC1uZXQtcGtnLXVudGlsLXdlLW1vdmUtdG8tZ28ucGF0Y2ggXApAQCAtMzAsMTEgKzMyLDEzIEBACiAKICMgQXBhY2hlLTIuMCBmb3IgZG9ja2VyCiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hYWRjMzBmOWMxNGQ4NzZkZWQ3YmVkYzBhZmQyZDNkNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9pbXBvcnQvTElDRU5TRTttZDU9OTc0MGQwOTNhMDgwNTMwYjVjNWM2NTczZGY5YWY0NWEiCisKK0dPX0lNUE9SVCA9ICJpbXBvcnQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLURPQ0tFUl9WRVJTSU9OID0gIjEuMTMuMCIKK0RPQ0tFUl9WRVJTSU9OID0gIjE3LjA2LjAiCiBQViA9ICIke0RPQ0tFUl9WRVJTSU9OfStnaXQke1NSQ1JFVl9kb2NrZXJ9IgogCiBERVBFTkRTID0gIiBcCkBAIC00Myw3ICs0Nyw2IEBACiAgICAgZ28tY29udGV4dCBcCiAgICAgZ28tbXV4IFwKICAgICBnby1wYXRyaWNpYSBcCi0gICAgZ28tbGlidHJ1c3QgXAogICAgIGdvLWxvZ3J1cyBcCiAgICAgZ28tZnNub3RpZnkgXAogICAgIGdvLWRidXMgXApAQCAtODAsMjAgKzgzLDIxIEBACiAJIyBTZXQgR09QQVRILiBTZWUgJ1BBQ0tBR0VSUy5tZCcuIERvbid0IHJlbHkgb24KIAkjIGRvY2tlciB0byBkb3dubG9hZCBpdHMgZGVwZW5kZW5jaWVzIGJ1dCByYXRoZXIKIAkjIHVzZSBkZXBlbmRlbmNpZXMgcGFja2FnZWQgaW5kZXBlbmRlbnRseS4KLQljZCAke1N9CisJY2QgJHtTfS9zcmMvaW1wb3J0CiAJcm0gLXJmIC5nb3BhdGgKIAlta2RpciAtcCAuZ29wYXRoL3NyYy8iJChkaXJuYW1lICIke0RPQ0tFUl9QS0d9IikiCiAJbG4gLXNmIC4uLy4uLy4uLy4uIC5nb3BhdGgvc3JjLyIke0RPQ0tFUl9QS0d9IgogCiAJbWtkaXIgLXAgLmdvcGF0aC9zcmMvZ2l0aHViLmNvbS9kb2NrZXIKLQlsbiAtc2YgLi4vLi4vLi4vLi4vLi4vbGlibmV0d29yayAuZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrCisJbG4gLXNmICR7V09SS0RJUn0vbGlibmV0d29yayAuZ29wYXRoL3NyYy9naXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrCisJbG4gLXNmICR7V09SS0RJUn0vY2xpIC5nb3BhdGgvc3JjL2dpdGh1Yi5jb20vZG9ja2VyL2NsaQogCi0JZXhwb3J0IEdPUEFUSD0iJHtTfS8uZ29wYXRoOiR7U30vdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0Ly5nb3BhdGg6JHtTfS9zcmMvaW1wb3J0L3ZlbmRvcjoke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtwcmVmaXh9L2xvY2FsL2dvIgogCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS8ke25vbmFyY2hfbGliZGlyfS8ke0hPU1RfU1lTfS9nbyIKLQljZCAtCiAKIAkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbwogCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKwlleHBvcnQgR09BUkNIPSR7VEFSR0VUX0dPQVJDSH0KIAlleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCiAJZXhwb3J0IENHT19DRkxBR1M9IiR7Q0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogCWV4cG9ydCBDR09fTERGTEFHUz0iJHtMREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgpAQCAtMTA3LDcgKzExMSwxMCBAQAogCSAgLi9oYWNrL21ha2Uuc2ggZHluYmluYXJ5CiAKIAkjIGJ1aWxkIHRoZSBwcm94eQotCWdvIGJ1aWxkIC1vICR7U30vZG9ja2VyLXByb3h5IGdpdGh1Yi5jb20vZG9ja2VyL2xpYm5ldHdvcmsvY21kL3Byb3h5CisJZ28gYnVpbGQgLW8gJHtTfS9zcmMvaW1wb3J0L2RvY2tlci1wcm94eSBnaXRodWIuY29tL2RvY2tlci9saWJuZXR3b3JrL2NtZC9wcm94eQorCisgICAgICAgICMgYnVpbGQgdGhlIGNsaQorCWdvIGJ1aWxkIC1vICR7U30vc3JjL2ltcG9ydC9idW5kbGVzL2xhdGVzdC9keW5iaW5hcnktY2xpZW50L2RvY2tlciBnaXRodWIuY29tL2RvY2tlci9jbGkvY21kL2RvY2tlcgogfQogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtQTn0nLCcnLGQpfSIKQEAgLTExNywxOSArMTI0LDE5IEBACiAKIElOSVRTQ1JJUFRfUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJyR7UE59JywnJyxkKX0iCiBJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywnZG9ja2VyLmluaXQnLCcnLGQpfSIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gIiR7T1NfREVGQVVMVF9JTklUU0NSSVBUX1BBUkFNU30iCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJkZWZhdWx0cyIKIAogZG9faW5zdGFsbCgpIHsKIAlta2RpciAtcCAke0R9LyR7YmluZGlyfQotCWNwICR7U30vYnVuZGxlcy9sYXRlc3QvZHluYmluYXJ5LWNsaWVudC9kb2NrZXIgJHtEfS8ke2JpbmRpcn0vZG9ja2VyCi0JY3AgJHtTfS9idW5kbGVzL2xhdGVzdC9keW5iaW5hcnktZGFlbW9uL2RvY2tlcmQgJHtEfS8ke2JpbmRpcn0vZG9ja2VyZAotCWNwICR7U30vZG9ja2VyLXByb3h5ICR7RH0vJHtiaW5kaXJ9L2RvY2tlci1wcm94eQorCWNwICR7U30vc3JjL2ltcG9ydC9idW5kbGVzL2xhdGVzdC9keW5iaW5hcnktY2xpZW50L2RvY2tlciAke0R9LyR7YmluZGlyfS9kb2NrZXIKKwljcCAke1N9L3NyYy9pbXBvcnQvYnVuZGxlcy9sYXRlc3QvZHluYmluYXJ5LWRhZW1vbi9kb2NrZXJkICR7RH0vJHtiaW5kaXJ9L2RvY2tlcmQKKwljcCAke1N9L3NyYy9pbXBvcnQvZG9ja2VyLXByb3h5ICR7RH0vJHtiaW5kaXJ9L2RvY2tlci1wcm94eQogCiAJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgogCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JCWluc3RhbGwgLW0gNjQ0ICR7U30vY29udHJpYi9pbml0L3N5c3RlbWQvZG9ja2VyLiogJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gNjQ0ICR7U30vc3JjL2ltcG9ydC9jb250cmliL2luaXQvc3lzdGVtZC9kb2NrZXIuKiAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KIAkJIyByZXBsYWNlcyBvbmUgY29waWVkIGZyb20gYWJvdmUgd2l0aCBvbmUgdGhhdCB1c2VzIHRoZSBsb2NhbCByZWdpc3RyeSBmb3IgYSBtaXJyb3IKLQkJaW5zdGFsbCAtbSA2NDQgJHtTfS9jb250cmliL2luaXQvc3lzdGVtZC9kb2NrZXIuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwkJaW5zdGFsbCAtbSA2NDQgJHtTfS9zcmMvaW1wb3J0L2NvbnRyaWIvaW5pdC9zeXN0ZW1kL2RvY2tlci5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQogCWVsc2UKIAkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKIAkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZG9ja2VyLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RvY2tlci5pbml0CkBAIC0xMzcsNyArMTQ0LDcgQEAKIAogCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2RvY2tlci8KIAljcCAke1dPUktESVJ9L2hpLkRvY2tlcmZpbGUgJHtEfSR7ZGF0YWRpcn0vZG9ja2VyLwotCWluc3RhbGwgLW0gMDc1NSAke1N9L2NvbnRyaWIvY2hlY2stY29uZmlnLnNoICR7RH0ke2RhdGFkaXJ9L2RvY2tlci8KKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9zcmMvaW1wb3J0L2NvbnRyaWIvY2hlY2stY29uZmlnLnNoICR7RH0ke2RhdGFkaXJ9L2RvY2tlci8KIH0KIAogaW5oZXJpdCB1c2VyYWRkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9maWxlcy9jb250ZXh0LXVzZS1nb2xhbmcub3JnLXgtbmV0LXBrZy11bnRpbC13ZS1tb3ZlLXRvLWdvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9kb2NrZXIvZmlsZXMvY29udGV4dC11c2UtZ29sYW5nLm9yZy14LW5ldC1wa2ctdW50aWwtd2UtbW92ZS10by1nby5wYXRjaAppbmRleCAyNDBiNzQ0Li43ZWQ2MDZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9maWxlcy9jb250ZXh0LXVzZS1nb2xhbmcub3JnLXgtbmV0LXBrZy11bnRpbC13ZS1tb3ZlLXRvLWdvLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2NvbnRleHQtdXNlLWdvbGFuZy5vcmcteC1uZXQtcGtnLXVudGlsLXdlLW1vdmUtdG8tZ28ucGF0Y2gKQEAgLTExLDIwICsxMSwxNiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgogLS0tCi0gY2xpZW50L1JFQURNRS5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gY2xpZW50L2NsaWVudC5nbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZGFlbW9uL2luZm9fdW5peC5nbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9jbGlfc2F2ZV9sb2FkX3VuaXhfdGVzdC5nbyAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gdmVuZG9yL2dpdGh1Yi5jb20vZG9ja2VyL3N3YXJta2l0L21hbmFnZXIvbG9nYnJva2VyL3N1YnNjcmlwdGlvbi5nbyAgICAgfCAyICstCi0gdmVuZG9yL2dpdGh1Yi5jb20vZG9ja2VyL3N3YXJta2l0L21hbmFnZXIvc3RhdGUvcmFmdC9zdG9yYWdlL3dhbHdyYXAuZ28gfCAyICstCi0gNyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisgY2xpZW50L1JFQURNRS5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KKyBjbGllbnQvY2xpZW50LmdvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQorIGRhZW1vbi9pbmZvX3VuaXguZ28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCisgaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28gICAgICAgICB8ICAgIDIgKy0KKyBpbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2NsaV9zYXZlX2xvYWRfdW5peF90ZXN0LmdvIHwgICAgMiArLQorIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY2xpZW50L1JFQURNRS5tZCBiL2NsaWVudC9SRUFETUUubWQKLWluZGV4IDA1OWRmYjMuLjlkZTU0YWEgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvUkVBRE1FLm1kCi0rKysgYi9jbGllbnQvUkVBRE1FLm1kCi1AQCAtOCw3ICs4LDcgQEAgRm9yIGV4YW1wbGUsIHRvIGxpc3QgcnVubmluZyBjb250YWluZXJzICh0aGUgZXF1aXZhbGVudCBvZiBgZG9ja2VyIHBzYCk6CistLS0gYS9zcmMvaW1wb3J0L2NsaWVudC9SRUFETUUubWQKKysrKyBiL3NyYy9pbXBvcnQvY2xpZW50L1JFQURNRS5tZAorQEAgLTgsNyArOCw3IEBAIEZvciBleGFtcGxlLCB0byBsaXN0IHJ1bm5pbmcgY29udGFpbmVycwogIHBhY2thZ2UgbWFpbgogIAogIGltcG9ydCAoCkBAIC0zMywxMSArMjksOSBAQAogIAkiZm10IgogIAogIAkiZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyL2FwaS90eXBlcyIKLWRpZmYgLS1naXQgYS9jbGllbnQvY2xpZW50LmdvIGIvY2xpZW50L2NsaWVudC5nbwotaW5kZXggYTliZGFiNi4uOTU5MzNhZiAxMDA2NDQKLS0tLSBhL2NsaWVudC9jbGllbnQuZ28KLSsrKyBiL2NsaWVudC9jbGllbnQuZ28KLUBAIC0xOSw3ICsxOSw3IEBAIEZvciBleGFtcGxlLCB0byBsaXN0IHJ1bm5pbmcgY29udGFpbmVycyAodGhlIGVxdWl2YWxlbnQgb2YgImRvY2tlciBwcyIpOgorLS0tIGEvc3JjL2ltcG9ydC9jbGllbnQvY2xpZW50LmdvCisrKysgYi9zcmMvaW1wb3J0L2NsaWVudC9jbGllbnQuZ28KK0BAIC0xOSw3ICsxOSw3IEBAIEZvciBleGFtcGxlLCB0byBsaXN0IHJ1bm5pbmcgY29udGFpbmVycwogIAlwYWNrYWdlIG1haW4KICAKICAJaW1wb3J0ICgKQEAgLTQ2LDEwICs0MCw4IEBACiAgCQkiZm10IgogIAogIAkJImdpdGh1Yi5jb20vZG9ja2VyL2RvY2tlci9hcGkvdHlwZXMiCi1kaWZmIC0tZ2l0IGEvZGFlbW9uL2luZm9fdW5peC5nbyBiL2RhZW1vbi9pbmZvX3VuaXguZ28KLWluZGV4IDljNDFjMGUuLjU3ZjhhN2IgMTAwNjQ0Ci0tLS0gYS9kYWVtb24vaW5mb191bml4LmdvCi0rKysgYi9kYWVtb24vaW5mb191bml4LmdvCistLS0gYS9zcmMvaW1wb3J0L2RhZW1vbi9pbmZvX3VuaXguZ28KKysrKyBiL3NyYy9pbXBvcnQvZGFlbW9uL2luZm9fdW5peC5nbwogQEAgLTMsNyArMyw3IEBACiAgcGFja2FnZSBkYWVtb24KICAKQEAgLTU5LDEwICs1MSw4IEBACiAgCSJvcy9leGVjIgogIAkic3RyaW5ncyIKICAKLWRpZmYgLS1naXQgYS9pbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2FwaV9hdHRhY2hfdGVzdC5nbyBiL2ludGVncmF0aW9uLWNsaS9kb2NrZXJfYXBpX2F0dGFjaF90ZXN0LmdvCi1pbmRleCBkNDNiZjNhLi5lNTgwMmE3IDEwMDY0NAotLS0tIGEvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9hcGlfYXR0YWNoX3Rlc3QuZ28KLSsrKyBiL2ludGVncmF0aW9uLWNsaS9kb2NrZXJfYXBpX2F0dGFjaF90ZXN0LmdvCistLS0gYS9zcmMvaW1wb3J0L2ludGVncmF0aW9uLWNsaS9kb2NrZXJfYXBpX2F0dGFjaF90ZXN0LmdvCisrKysgYi9zcmMvaW1wb3J0L2ludGVncmF0aW9uLWNsaS9kb2NrZXJfYXBpX2F0dGFjaF90ZXN0LmdvCiBAQCAtMyw3ICszLDcgQEAgcGFja2FnZSBtYWluCiAgaW1wb3J0ICgKICAJImJ1ZmlvIgpAQCAtNzIsMTAgKzYyLDggQEAKICAJImlvIgogIAkibmV0IgogIAkibmV0L2h0dHAiCi1kaWZmIC0tZ2l0IGEvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9jbGlfc2F2ZV9sb2FkX3VuaXhfdGVzdC5nbyBiL2ludGVncmF0aW9uLWNsaS9kb2NrZXJfY2xpX3NhdmVfbG9hZF91bml4X3Rlc3QuZ28KLWluZGV4IDIyNDQ1ZTUuLmQwYWZjOGMgMTAwNjQ0Ci0tLS0gYS9pbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2NsaV9zYXZlX2xvYWRfdW5peF90ZXN0LmdvCi0rKysgYi9pbnRlZ3JhdGlvbi1jbGkvZG9ja2VyX2NsaV9zYXZlX2xvYWRfdW5peF90ZXN0LmdvCistLS0gYS9zcmMvaW1wb3J0L2ludGVncmF0aW9uLWNsaS9kb2NrZXJfY2xpX3NhdmVfbG9hZF91bml4X3Rlc3QuZ28KKysrKyBiL3NyYy9pbXBvcnQvaW50ZWdyYXRpb24tY2xpL2RvY2tlcl9jbGlfc2F2ZV9sb2FkX3VuaXhfdGVzdC5nbwogQEAgLTMsNyArMyw3IEBACiAgcGFja2FnZSBtYWluCiAgCkBAIC04NSwzMiArNzMsMyBAQAogIAkiZm10IgogIAkiaW8vaW91dGlsIgogIAkib3MiCi1kaWZmIC0tZ2l0IGEvdmVuZG9yL2dpdGh1Yi5jb20vZG9ja2VyL3N3YXJta2l0L21hbmFnZXIvbG9nYnJva2VyL3N1YnNjcmlwdGlvbi5nbyBiL3ZlbmRvci9naXRodWIuY29tL2RvY2tlci9zd2FybWtpdC9tYW5hZ2VyL2xvZ2Jyb2tlci9zdWJzY3JpcHRpb24uZ28KLWluZGV4IDZiMzI5NWEuLmNiZmNmN2UgMTAwNjQ0Ci0tLS0gYS92ZW5kb3IvZ2l0aHViLmNvbS9kb2NrZXIvc3dhcm1raXQvbWFuYWdlci9sb2dicm9rZXIvc3Vic2NyaXB0aW9uLmdvCi0rKysgYi92ZW5kb3IvZ2l0aHViLmNvbS9kb2NrZXIvc3dhcm1raXQvbWFuYWdlci9sb2dicm9rZXIvc3Vic2NyaXB0aW9uLmdvCi1AQCAtMSw3ICsxLDcgQEAKLSBwYWNrYWdlIGxvZ2Jyb2tlcgotIAotIGltcG9ydCAoCi0tCSJjb250ZXh0IgotKwkiZ29sYW5nLm9yZy94L25ldC9jb250ZXh0IgotIAkiZm10IgotIAkic3RyaW5ncyIKLSAJInN5bmMiCi1kaWZmIC0tZ2l0IGEvdmVuZG9yL2dpdGh1Yi5jb20vZG9ja2VyL3N3YXJta2l0L21hbmFnZXIvc3RhdGUvcmFmdC9zdG9yYWdlL3dhbHdyYXAuZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9kb2NrZXIvc3dhcm1raXQvbWFuYWdlci9zdGF0ZS9yYWZ0L3N0b3JhZ2Uvd2Fsd3JhcC5nbwotaW5kZXggNWE2YzcxYS4uZWZlNTkyMSAxMDA2NDQKLS0tLSBhL3ZlbmRvci9naXRodWIuY29tL2RvY2tlci9zd2FybWtpdC9tYW5hZ2VyL3N0YXRlL3JhZnQvc3RvcmFnZS93YWx3cmFwLmdvCi0rKysgYi92ZW5kb3IvZ2l0aHViLmNvbS9kb2NrZXIvc3dhcm1raXQvbWFuYWdlci9zdGF0ZS9yYWZ0L3N0b3JhZ2Uvd2Fsd3JhcC5nbwotQEAgLTEsNyArMSw3IEBACi0gcGFja2FnZSBzdG9yYWdlCi0gCi0gaW1wb3J0ICgKLS0JImNvbnRleHQiCi0rCSJnb2xhbmcub3JnL3gvbmV0L2NvbnRleHQiCi0gCSJpbyIKLSAJImlvL2lvdXRpbCIKLSAJIm9zIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2RvY2tlci9maWxlcy9kb2NrZXIuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2RvY2tlci5pbml0CmluZGV4IDljMDFjNzUuLjJlOGViOWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2RvY2tlci5pbml0CisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvZG9ja2VyL2ZpbGVzL2RvY2tlci5pbml0CkBAIC0yOCw2ICsyOCw3IEBACiBwaWRmaWxlPSIvdmFyL3J1bi8kcHJvZy5waWQiCiBsb2NrZmlsZT0iL3Zhci9sb2NrL3N1YnN5cy8kcHJvZyIKIGxvZ2ZpbGU9Ii92YXIvbG9nLyRwcm9nIgorb3RoZXJfYXJncz0iLS1yZWdpc3RyeS1taXJyb3I9aHR0cDovL2xvY2FsaG9zdDo1MDAwIC0taW5zZWN1cmUtcmVnaXN0cnk9aHR0cDovL2xvY2FsaG9zdDo1MDAwIC0tcmF3LWxvZ3MiCiAKIFsgLWUgL2V0Yy9zeXNjb25maWcvJHByb2cgXSAmJiAuIC9ldGMvc3lzY29uZmlnLyRwcm9nCiAKQEAgLTM4LDggKzM5LDggQEAKIAogICAgIGlmICEgWyAtZiAkcGlkZmlsZSBdOyB0aGVuCiAgICAgICAgIHByaW50ZiAiU3RhcnRpbmcgJHByb2c6XHQiCi0gICAgICAgIGVjaG8gIlxuJChkYXRlKVxuIiA+PiAkbG9nZmlsZQotICAgICAgICAiJHVuc2hhcmUiIC1tIC0tICRleGVjIC1kICRvdGhlcl9hcmdzICY+PiAkbG9nZmlsZSAmCisgICAgICAgIGVjaG8gLWUgIlxuJChkYXRlKVxuIiA+PiAkbG9nZmlsZQorICAgICAgICAiJHVuc2hhcmUiIC1tIC0tICRleGVjIGRhZW1vbiAkb3RoZXJfYXJncyAmPj4gJGxvZ2ZpbGUgJgogICAgICAgICBwaWQ9JCEKICAgICAgICAgdG91Y2ggJGxvY2tmaWxlCiAgICAgICAgICMgd2FpdCB1cCB0byAxMCBzZWNvbmRzIGZvciB0aGUgcGlkZmlsZSB0byBleGlzdC4gIHNlZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9rdWJlcm5ldGVzL2t1YmVybmV0ZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9rdWJlcm5ldGVzL2t1YmVybmV0ZXNfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNzE2MWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2t1YmVybmV0ZXMva3ViZXJuZXRlc19naXQuYmIKQEAgLTAsMCArMSw5OCBAQAorSE9NRVBBR0UgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9rdWJlcm5ldGVzL2t1YmVybmV0ZXMiCitTVU1NQVJZID0gIlByb2R1Y3Rpb24tR3JhZGUgQ29udGFpbmVyIFNjaGVkdWxpbmcgYW5kIE1hbmFnZW1lbnQiCitERVNDUklQVElPTiA9ICJLdWJlcm5ldGVzIGlzIGFuIG9wZW4gc291cmNlIHN5c3RlbSBmb3IgbWFuYWdpbmcgY29udGFpbmVyaXplZCBcCithcHBsaWNhdGlvbnMgYWNyb3NzIG11bHRpcGxlIGhvc3RzLCBwcm92aWRpbmcgYmFzaWMgbWVjaGFuaXNtcyBmb3IgZGVwbG95bWVudCwgXAorbWFpbnRlbmFuY2UsIGFuZCBzY2FsaW5nIG9mIGFwcGxpY2F0aW9ucy4gXAorIgorCitTUkNSRVZfa3ViZXJuZXRlcyA9ICI0YjgzOTQ2NWY4NGU3ZmFmODc2YzUxNzAzYWFmNDliMzdmZDEwZDljIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMva3ViZXJuZXRlcy5naXQ7bm9icmFuY2g9MTtuYW1lPWt1YmVybmV0ZXMgXAorICAgICAgICAgICIKKworREVQRU5EUyArPSAicnN5bmMtbmF0aXZlIFwKKyAgICAgICAgICAgIGNvcmV1dGlscy1uYXRpdmUgXAorICAgICAgICAgICAiCisKK1BBQ0tBR0VTID0rICJrdWJlYWRtIgorUEFDS0FHRVMgPSsgImt1YmVjdGwiCitQQUNLQUdFUyA9KyAia3ViZWxldCIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworIyBOb3RlOiB3ZSBhcmUgZXhwbGljaXRseSAqbm90KiBhZGRpbmcgZG9ja2VyIHRvIHRoZSByZGVwZW5kcywgc2luY2Ugd2UgYWxsb3cKKyMgICAgICAgYmFja2VuZHMgbGlrZSBjcmktbyB0byBiZSB1c2VkLgorUkRFUEVORFNfJHtQTn0gKz0gImt1YmVhZG0gXAorICAgICAgICAgICAgICAgICAgIGt1YmVjdGwgXAorICAgICAgICAgICAgICAgICAgIGt1YmVsZXQgXAorICAgICAgICAgICAgICAgICAgIGNuaSIKKworUkRFUEVORFNfa3ViZWFkbSA9ICJrdWJlbGV0IGt1YmVjdGwiCitSREVQRU5EU19rdWJlbGV0ID0gImlwdGFibGVzIHNvY2F0IHV0aWwtbGludXggZXRodG9vbCBpcHJvdXRlMiBlYnRhYmxlcyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ltcG9ydC9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworR09fSU1QT1JUID0gImltcG9ydCIKKworUFYgPSAiMS45LjAtYWxwaGEuMStnaXQke1NSQ1JFVl9rdWJlcm5ldGVzfSIKKworaW5oZXJpdCBzeXN0ZW1kCitpbmhlcml0IGdvCitpbmhlcml0IGdvYXJjaAorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCisJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7VEFSR0VUX1NZU30vZ28iCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0OiR7U30vc3JjL2ltcG9ydC92ZW5kb3IiCisKKwkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbworCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKKwlleHBvcnQgQ0dPX0VOQUJMRUQ9IjEiCisJZXhwb3J0IENGTEFHUz0iIgorCWV4cG9ydCBMREZMQUdTPSIiCisJZXhwb3J0IENHT19DRkxBR1M9IiR7QlVJTERTREtfQ0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDR09fTERGTEFHUz0iJHtCVUlMRFNES19MREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCisJIyBsaW5rIGZpeHVwcyBmb3IgY29tcGlsYXRpb24KKwlybSAtZiAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCWxuIC1zZiAuLyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0Ly5nb3BhdGg6JHtTfS9zcmMvaW1wb3J0L3ZlbmRvcjoke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtwcmVmaXh9L2xvY2FsL2dvIgorCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS8ke25vbmFyY2hfbGliZGlyfS8ke0hPU1RfU1lTfS9nbyIKKworCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCisJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcworCWV4cG9ydCBDR09fRU5BQkxFRD0iMSIKKwlleHBvcnQgQ0dPX0NGTEFHUz0iJHtDRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENHT19MREZMQUdTPSIke0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisKKwljZCAke1N9L3NyYy9pbXBvcnQKKwkjIHRvIGxpbWl0IHdoYXQgaXMgYnVpbHQsIHVzZSAnV0hBVCcsIGkuZS4gbWFrZSBXSEFUPWNtZC9rdWJlbGV0CisJbWFrZSBhbGwKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va3ViZWxldC5zZXJ2aWNlLmQvCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2t1YmVybmV0ZXMvbWFuaWZlc3RzLworCisgICAgaW5zdGFsbCAtbSA3NTUgLUQgJHtTfS9zcmMvaW1wb3J0L19vdXRwdXQvYmluL2t1YmUqICR7RH0vJHtiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvaW1wb3J0L2J1aWxkL2RlYnMva3ViZWxldC5zZXJ2aWNlICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvaW1wb3J0L2J1aWxkL2RlYnMvMTAta3ViZWFkbS5jb25mICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rdWJlbGV0LnNlcnZpY2UuZC8KK30KKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ2t1YmVsZXQnLCcnLGQpfSIKK1NZU1RFTURfU0VSVklDRV9rdWJlbGV0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywna3ViZWxldC5zZXJ2aWNlJywnJyxkKX0iCitTWVNURU1EX0FVVE9fRU5BQkxFX2t1YmVsZXQgPSAiZW5hYmxlIgorCitGSUxFU19rdWJlYWRtID0gIiR7YmluZGlyfS9rdWJlYWRtICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va3ViZWxldC5zZXJ2aWNlLmQvKiIKK0ZJTEVTX2t1YmVjdGwgPSAiJHtiaW5kaXJ9L2t1YmVjdGwiCitGSUxFU19rdWJlbGV0ID0gIiR7YmluZGlyfS9rdWJlbGV0ICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va3ViZWxldC5zZXJ2aWNlICR7c3lzY29uZmRpcn0va3ViZXJuZXRlcy9tYW5pZmVzdHMvIgorCitJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJsZGZsYWdzIGFscmVhZHktc3RyaXBwZWQiCisKK2RlbHRhc2sgY29tcGlsZV9wdGVzdF9iYXNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9HZW5lcmF0ZS1seGMtcmVzdG9yZS1uZXQtcHJvcGVybHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9HZW5lcmF0ZS1seGMtcmVzdG9yZS1uZXQtcHJvcGVybHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhZGI3MzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvR2VuZXJhdGUtbHhjLXJlc3RvcmUtbmV0LXByb3Blcmx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLUZyb20gZTA4ZjM1NzNiMzU2MWYxZjA0OTA2MjRmN2NhOTViN2NjZDgxNTdjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLU1lc3NhZ2UtSWQ6IDxlMDhmMzU3M2IzNTYxZjFmMDQ5MDYyNGY3Y2E5NWI3Y2NkODE1N2NiLjE0MzUxNzc0MTguZ2l0LkppbS5Tb21lcnZpbGxlQHdpbmRyaXZlci5jb20+Ci1Gcm9tOiBKaW0gU29tZXJ2aWxsZSA8SmltLlNvbWVydmlsbGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjQgSnVuIDIwMTUgMTY6MTY6MzggLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzFdIEdlbmVyYXRlIGx4Yy1yZXN0b3JlLW5ldCBwcm9wZXJseQotCi1JdCdzIGEgc2NyaXB0IHRoYXQgc2hvdWxkIGJlIHJ1biB0aHJvdWdoIHRoZSBjb25maWd1cmUKLW1lY2hhbmlzbSB0aGUgc2FtZSBhcyB0aGUgb3RoZXJzLiAgV2Ugc2ltcGx5IHJlbmFtZSBpdAotdG8gaGF2ZSBhIC5pbiBleHRlbnNpb24gYW5kIGFkZCBpdCB0byBjb25maWd1cmUuYWMgLgotCi1BbHNvLCBieSBnZW5lcmF0aW5nIHRoZSBzY3JpcHQgZnJvbSBhIC5pbiBmaWxlLCBpdCBnZXRzCi1wbGFjZWQgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5LiAgVGhpcyBwbGF5cyBuaWNlIHdpdGgKLWJ1aWxkIHN5c3RlbXMgdGhhdCBrZWVwIHRoZSBzcmMgc2VwYXJhdGUgZnJvbSB0aGUgYnVpbGQKLWRpcmVjdG9yeS4gIFdpdGhvdXQgdGhpcyBjaGFuZ2UsIHRoZSBpbnN0YWxsIHN0ZXAgd29uJ3QKLWZpbmQgdGhlIGx4Yy1yZXN0b3JlLW5ldCBzY3JpcHQgYXMgaXQgc3RpbGwganVzdCByZXNpZGVzCi1pbiB0aGUgc3JjIGRpcmVjdG9yeSBhbmQgbm90IGluIHRoZSBidWlsZCBkaXJlY3RvcnkuCi0KLVVwc3RyZWFtLVN0YXR1czogTm90IGFwcGxpY2FibGUuICBUaGlzIHNjcmlwdCBoYXMgYWxyZWFkeQotYmVlbiByZWFyY2hpdGVjdGVkIG91dCBvZiBleGlzdGVuY2UgYnkKLWNiYTk4ZDEyN2JmNDkwYjAxOGEwMTZiNzkyYWUwNWZkMmQyOWM1ZWU6Ci0iYy9yOiB1c2UgY3JpdSBvcHRpb24gaW5zdGVhZCBvZiBseGMtcmVzdG9yZS1uZXQKLQotQXMgb2YgY3JpdSAxLjUsIHRoZSAtLXZldGgtcGFpciBhcmd1bWVudCBzdXBwb3J0cyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciB0aGF0Ci1pcyB0aGUgYnJpZGdlIG5hbWUgdG8gYXR0YWNoIHRvLiBUaGlzIGVuYWJsZXMgdXMgdG8gZ2V0IHJpZCBvZiB0aGUgZ29vZnkKLWFjdGlvbi1zY3JpcHQgaGFjayB0aGF0IHBhc3NlZCBicmlkZ2UgbmFtZXMgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotCi1UaGlzIHBhdGNoIGlzIG9uIHRvcCBvZiB0aGUgc3lzdGVtZC9seGNmcyBtb3VudCByZXdvcmsgcGF0Y2gsIGFzIHdlIHByb2JhYmx5Ci13YW50IHRvIHdhaXQgdG8gdXNlIDEuNSBvcHRpb25zIHVudGlsIGl0IGhhcyBiZWVuIG91dCBmb3IgYSB3aGlsZSBhbmQgaXMgaW4KLWRpc3Ryb3MuCi0KLVNpZ25lZC1vZmYtYnk6IFR5Y2hvIEFuZGVyc2VuIDx0eWNoby5hbmRlcnNlbkBjYW5vbmljYWwuY29tPgotQWNrZWQtYnk6IFNlcmdlIEUuIEhhbGx5biA8c2VyZ2UuaGFsbHluQHVidW50dS5jb20+IgotCi1TaWduZWQtb2ZmLWJ5OiBKaW0gU29tZXJ2aWxsZSA8SmltLlNvbWVydmlsbGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgIDEgKwotIHNyYy9seGMvbHhjLXJlc3RvcmUtbmV0ICAgIHwgMjYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvbHhjL2x4Yy1yZXN0b3JlLW5ldC5pbiB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA3NTUgc3JjL2x4Yy9seGMtcmVzdG9yZS1uZXQKLSBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL2x4Yy9seGMtcmVzdG9yZS1uZXQuaW4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNTc0YjJjZC4uNDk3MjgwMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzY4LDYgKzc2OCw3IEBAIEFDX0NPTkZJR19GSUxFUyhbCi0gCXNyYy9seGMvbGVnYWN5L2x4Yy1scwotIAlzcmMvbHhjL2x4Yy5mdW5jdGlvbnMKLSAJc3JjL2x4Yy92ZXJzaW9uLmgKLSsJc3JjL2x4Yy9seGMtcmVzdG9yZS1uZXQKLSAJc3JjL3B5dGhvbi1seGMvTWFrZWZpbGUKLSAJc3JjL3B5dGhvbi1seGMvc2V0dXAucHkKLSAKLWRpZmYgLS1naXQgYS9zcmMvbHhjL2x4Yy1yZXN0b3JlLW5ldCBiL3NyYy9seGMvbHhjLXJlc3RvcmUtbmV0Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IDZhZTNjMTkuLjAwMDAwMDAKLS0tLSBhL3NyYy9seGMvbHhjLXJlc3RvcmUtbmV0Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwyNiArMCwwIEBACi0tIyEvYmluL3NoCi0tCi0tc2V0IC1lCi0tCi0taT0wCi0td2hpbGUgdHJ1ZTsgZG8KLS0JZXZhbCAiYnJpZGdlPVwkTFhDX0NSSVVfQlJJREdFJGkiCi0tCWV2YWwgInZldGg9XCRMWENfQ1JJVV9WRVRIJGkiCi0tCi0tCWlmIFsgLXogIiRicmlkZ2UiIF0gfHwgWyAteiAiJHZldGgiIF07IHRoZW4KLS0JCWV4aXQgMAotLQlmaQotLQotLQlpZiBbICIkQ1JUT09MU19TQ1JJUFRfQUNUSU9OIiA9ICJuZXR3b3JrLWxvY2siIF07IHRoZW4KLS0JCWJyY3RsIGRlbGlmICRicmlkZ2UgJHZldGgKLS0JZmkKLS0KLS0JaWYgWyAiJENSVE9PTFNfU0NSSVBUX0FDVElPTiIgPSAibmV0d29yay11bmxvY2siIF07IHRoZW4KLS0JCWJyY3RsIGFkZGlmICRicmlkZ2UgJHZldGgKLS0JCWlwIGxpbmsgc2V0IGRldiAkdmV0aCB1cAotLQlmaQotLQotLQlpPSQoKGkrMSkpCi0tZG9uZQotLQotLWV4aXQgMQotZGlmZiAtLWdpdCBhL3NyYy9seGMvbHhjLXJlc3RvcmUtbmV0LmluIGIvc3JjL2x4Yy9seGMtcmVzdG9yZS1uZXQuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCAwMDAwMDAwLi42YWUzYzE5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvbHhjL2x4Yy1yZXN0b3JlLW5ldC5pbgotQEAgLTAsMCArMSwyNiBAQAotKyMhL2Jpbi9zaAotKwotK3NldCAtZQotKwotK2k9MAotK3doaWxlIHRydWU7IGRvCi0rCWV2YWwgImJyaWRnZT1cJExYQ19DUklVX0JSSURHRSRpIgotKwlldmFsICJ2ZXRoPVwkTFhDX0NSSVVfVkVUSCRpIgotKwotKwlpZiBbIC16ICIkYnJpZGdlIiBdIHx8IFsgLXogIiR2ZXRoIiBdOyB0aGVuCi0rCQlleGl0IDAKLSsJZmkKLSsKLSsJaWYgWyAiJENSVE9PTFNfU0NSSVBUX0FDVElPTiIgPSAibmV0d29yay1sb2NrIiBdOyB0aGVuCi0rCQlicmN0bCBkZWxpZiAkYnJpZGdlICR2ZXRoCi0rCWZpCi0rCi0rCWlmIFsgIiRDUlRPT0xTX1NDUklQVF9BQ1RJT04iID0gIm5ldHdvcmstdW5sb2NrIiBdOyB0aGVuCi0rCQlicmN0bCBhZGRpZiAkYnJpZGdlICR2ZXRoCi0rCQlpcCBsaW5rIHNldCBkZXYgJHZldGggdXAKLSsJZmkKLSsKLSsJaT0kKChpKzEpKQotK2RvbmUKLSsKLStleGl0IDEKLS0tIAotMS44LjMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9Vc2UtQUNfSEVBREVSX01BSk9SLXRvLWRldGVjdC1tYWpvci1taW5vci1tYWtlZGV2LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvVXNlLUFDX0hFQURFUl9NQUpPUi10by1kZXRlY3QtbWFqb3ItbWlub3ItbWFrZWRldi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjljZWNjMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9Vc2UtQUNfSEVBREVSX01BSk9SLXRvLWRldGVjdC1tYWpvci1taW5vci1tYWtlZGV2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUZyb20gNWM5NTc2NzFhNTExNDQxYjExMmIxMzdiODhiZjBiMWYzMWFkYWMyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlcmdlaSBUcm9maW1vdmljaCA8c2lhcmhlaXRAZ29vZ2xlLmNvbT4KLURhdGU6IFNhdCwgMjEgSmFuIDIwMTcgMTE6NTc6MTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIEFDX0hFQURFUl9NQUpPUiB0byBkZXRlY3QgbWFqb3IoKS9taW5vcigpL21ha2VkZXYoKQotCi1jb21taXQgYWY2ODI0ZmNlOWM5NTM2ZmJjYWJlZjhkNTU0N2Y2YzQ4NmY1NWZkZiBmcm9tCi1naXQ6Ly9naXRodWIuY29tL2x4Yy9seGMuZ2l0Ci0KLUJlZm9yZSB0aGUgY2hhbmdlIGJ1aWxkIGZhaWxlZCBvbiBHZW50b28gYXM6Ci0KLSAgYmRldi9seGNsdm0uYzogSW4gZnVuY3Rpb24gJ2x2bV9kZXRlY3QnOgotICBiZGV2L2x4Y2x2bS5jOjE0MDo0OiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ21ham9yJyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KLSAgICBtYWpvcihzdGF0YnVmLnN0X3JkZXYpLCBtaW5vcihzdGF0YnVmLnN0X3JkZXYpKTsKLSAgICBefn5+fgotICBiZGV2L2x4Y2x2bS5jOjE0MDoyODogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdtaW5vcicgWy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCi0gICAgbWFqb3Ioc3RhdGJ1Zi5zdF9yZGV2KSwgbWlub3Ioc3RhdGJ1Zi5zdF9yZGV2KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn4KLQotZ2xpYmMgcGxhbnMgdG8gcmVtb3ZlIDxzeXMvc3lzbWFjcm9zLmg+IGZyb20gZ2xpYmMncyA8c3lzL3R5cGVzLmg+OgotICAgIGh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE1LTExL21zZzAwMjUzLmh0bWwKLQotR2VudG9vIGFscmVhZHkgYXBwbGllZCBnbGliYyBwYXRjaCB0byBleHBlcmltZW50YWwgZ2xpYmMtMi4yNAotdG8gc3RhcnQgcHJlcGFyaW5nZm9yIHRoZSBjaGFuZ2UuCi0KLUF1dG9jb25mIGhhcyBBQ19IRUFERVJfTUFKT1IgdG8gZmluZCBvdXQgd2hpY2ggaGVhZGVyIGRlZmluZXMKLXJlcWl1cmVkIG1hY3JvczoKLSAgICBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mL21hbnVhbC9hdXRvY29uZi0yLjY5L2h0bWxfbm9kZS9QYXJ0aWN1bGFyLUhlYWRlcnMuaHRtbAotCi1UaGlzIGNoYW5nZSBzaG91bGQgYWxzbyBpbmNyZWFzZSBwb3J0YWJpbGl0eSBhY3Jvc3Mgb3RoZXIgbGliY3MuCi0KLUJ1ZzogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvNjA0MzYwCi1TaWduZWQtb2ZmLWJ5OiBTZXJnZWkgVHJvZmltb3ZpY2ggPHNpYXJoZWl0QGdvb2dsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICB8IDMgKysrCi0gc3JjL2x4Yy9iZGV2L2x4Y2x2bS5jICB8IDkgKysrKysrKysrCi0gc3JjL2x4Yy9jb25mLmMgICAgICAgICB8IDggKysrKysrKysKLSBzcmMvbHhjL2x4Y2NvbnRhaW5lci5jIHwgOCArKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4ZjMxYzI5Li45MjRiYWExIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MDEsNiArNjAxLDkgQEAgQUNfQ0hFQ0tfREVDTFMoW1BSX0NBUEJTRVRfRFJPUF0sIFtdLCBbXSwgWyNpbmNsdWRlIDxzeXMvcHJjdGwuaD5dKQotICMgQ2hlY2sgZm9yIHNvbWUgaGVhZGVycwotIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9zaWduYWxmZC5oIHB0eS5oIGlmYWRkcnMuaCBzeXMvY2FwYWJpbGl0eS5oIHN5cy9wZXJzb25hbGl0eS5oIHV0bXB4Lmggc3lzL3RpbWVyZmQuaF0pCi0gCi0rIyBsb29rdXAgbWFqb3IoKS9taW5vcigpL21ha2VkZXYoKQotK0FDX0hFQURFUl9NQUpPUgotKwotICMgQ2hlY2sgZm9yIHNvbWUgc3lzY2FsbHMgZnVuY3Rpb25zCi0gQUNfQ0hFQ0tfRlVOQ1MoW3NldG5zIHBpdm90X3Jvb3Qgc2V0aG9zdG5hbWUgdW5zaGFyZSByYW5kX3IgY29uZnN0ciBmYWNjZXNzYXRdKQotIAotZGlmZiAtLWdpdCBhL3NyYy9seGMvYmRldi9seGNsdm0uYyBiL3NyYy9seGMvYmRldi9seGNsdm0uYwotaW5kZXggM2Q0MWIxMC4uNDE5ZDFjMiAxMDA2NDQKLS0tLSBhL3NyYy9seGMvYmRldi9seGNsdm0uYwotKysrIGIvc3JjL2x4Yy9iZGV2L2x4Y2x2bS5jCi1AQCAtMzIsMTAgKzMyLDE5IEBACi0gI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0gCi0gI2luY2x1ZGUgImJkZXYuaCIKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gI2luY2x1ZGUgImxvZy5oIgotICNpbmNsdWRlICJseGNsdm0uaCIKLSAjaW5jbHVkZSAidXRpbHMuaCIKLSAKLSsvKiBtYWpvcigpL21pbm9yKCkgKi8KLSsjaWZkZWYgTUFKT1JfSU5fTUtERVYKLSsjICAgIGluY2x1ZGUgPHN5cy9ta2Rldi5oPgotKyNlbmRpZgotKyNpZmRlZiBNQUpPUl9JTl9TWVNNQUNST1MKLSsjICAgIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSBseGNfbG9nX2RlZmluZShseGNsdm0sIGx4Yyk7Ci0gCi0gZXh0ZXJuIGNoYXIgKmRpcl9uZXdfcGF0aChjaGFyICpzcmMsIGNvbnN0IGNoYXIgKm9sZG5hbWUsIGNvbnN0IGNoYXIgKm5hbWUsCi1kaWZmIC0tZ2l0IGEvc3JjL2x4Yy9jb25mLmMgYi9zcmMvbHhjL2NvbmYuYwotaW5kZXggM2IwMjNlZi4uNTM0MDZjYSAxMDA2NDQKLS0tLSBhL3NyYy9seGMvY29uZi5jCi0rKysgYi9zcmMvbHhjL2NvbmYuYwotQEAgLTM5LDYgKzM5LDE0IEBACi0gI2luY2x1ZGUgPGdycC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gCi0rLyogbWFrZWRldigpICovCi0rI2lmZGVmIE1BSk9SX0lOX01LREVWCi0rIyAgICBpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSsjZW5kaWYKLSsjaWZkZWYgTUFKT1JfSU5fU1lTTUFDUk9TCi0rIyAgICBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIEhBVkVfU1RBVFZGUwotICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9seGMvbHhjY29udGFpbmVyLmMgYi9zcmMvbHhjL2x4Y2NvbnRhaW5lci5jCi1pbmRleCA5ZjEyY2EyLi5hYTAyODMzIDEwMDY0NAotLS0tIGEvc3JjL2x4Yy9seGNjb250YWluZXIuYwotKysrIGIvc3JjL2x4Yy9seGNjb250YWluZXIuYwotQEAgLTYxLDYgKzYxLDE0IEBACi0gI2luY2x1ZGUgInV0aWxzLmgiCi0gI2luY2x1ZGUgInZlcnNpb24uaCIKLSAKLSsvKiBtYWpvcigpL21pbm9yKCkgKi8KLSsjaWZkZWYgTUFKT1JfSU5fTUtERVYKLSsjICAgIGluY2x1ZGUgPHN5cy9ta2Rldi5oPgotKyNlbmRpZgotKyNpZmRlZiBNQUpPUl9JTl9TWVNNQUNST1MKLSsjICAgIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSAjaWYgSEFWRV9JRkFERFJTX0gKLSAjaW5jbHVkZSA8aWZhZGRycy5oPgotICNlbHNlCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL2F1dG9tYWtlLWVuc3VyZS1WUEFUSC1idWlsZHMtY29ycmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvYXV0b21ha2UtZW5zdXJlLVZQQVRILWJ1aWxkcy1jb3JyZWN0bHkucGF0Y2gKaW5kZXggMmI1Yzg1My4uNjFjMGUyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvYXV0b21ha2UtZW5zdXJlLVZQQVRILWJ1aWxkcy1jb3JyZWN0bHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvYXV0b21ha2UtZW5zdXJlLVZQQVRILWJ1aWxkcy1jb3JyZWN0bHkucGF0Y2gKQEAgLTE1LDcgKzE1LDcgQEAKIEBAIC02Niw3ICs2Niw3IEBAIGJ1aWxkdGVzdC1URVNUUzogJChURVNUUykKICBpbnN0YWxsLXB0ZXN0OgogIAlpbnN0YWxsIC1kICQoVEVTVF9ESVIpCi0gCWluc3RhbGwgLUQgLi4vbHhjL2xpYmx4Yy5zbyAkKFRFU1RfRElSKS8uLi9seGMvbGlibHhjLnNvCisgCWluc3RhbGwgLUQgLi4vbHhjLy5saWJzL2xpYmx4Yy5zbyAkKFRFU1RfRElSKS8uLi9seGMvbGlibHhjLnNvCiAtCWluc3RhbGwgLUQgLi4vLi4vY29uZmlnL3Rlc3QtZHJpdmVyICQoVEVTVF9ESVIpLy4uLy4uL2NvbmZpZy90ZXN0LWRyaXZlcgogKwlpbnN0YWxsIC1EICQodG9wX3NyY2RpcikvY29uZmlnL3Rlc3QtZHJpdmVyICQoVEVTVF9ESVIpLy4uLy4uL2NvbmZpZy90ZXN0LWRyaXZlcgogIAljcCBNYWtlZmlsZSAkKFRFU1RfRElSKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvY2dyb3Vwcy13b3JrLWFyb3VuZC1pc3N1ZS1pbi1nY2MtNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL2Nncm91cHMtd29yay1hcm91bmQtaXNzdWUtaW4tZ2NjLTcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA3NDBmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL2Nncm91cHMtd29yay1hcm91bmQtaXNzdWUtaW4tZ2NjLTcucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA1OGEyZDgxN2E4MjEwMGQyODdjNjBjNjMzMTVkODE0NDVjZGJhM2Y5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTU6MTI6MDggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gY2dyb3Vwczogd29yayBhcm91bmQgaXNzdWUgaW4gZ2NjIDcKKworVGhpcyB3b3JrcyBhcm91bmQKK2h0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NzIKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTc4OTY5CisKK0J5IHJlbW92aW5nIGEgc2luZ2xlIGNncm91cCBlbnRyeS4gRm9yIHRoZSBtYWpvcml0eSBvZiB1c2VjYXNlcyB0aGlzCitsb3NzIG9mIGEgc2luZ2xlIGVudHJ5IHNob3VsZCBub3QgYmUgYW4gaXNzdWUgYW5kIG9uY2UgZ2NjIDcgaXMgZml4ZWQKK3dlIGNhbiByZXZlcnQgdGhpcy4KKworU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9seGMvY2dyb3Vwcy9jZ2ZzbmcuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9seGMvY2dyb3Vwcy9jZ2ZzbmcuYyBiL3NyYy9seGMvY2dyb3Vwcy9jZ2ZzbmcuYworaW5kZXggZWJkNTQ4Yi4uYzUyMGFiZCAxMDA2NDQKKy0tLSBhL3NyYy9seGMvY2dyb3Vwcy9jZ2ZzbmcuYworKysrIGIvc3JjL2x4Yy9jZ3JvdXBzL2NnZnNuZy5jCitAQCAtMTM3Myw3ICsxMzczLDcgQEAgc3RhdGljIGlubGluZSBib29sIGNnZnNuZ19jcmVhdGUodm9pZCAqaGRhdGEpCisgCW9mZnNldCA9IGNnbmFtZSArIGxlbiAtIDU7CisgCisgYWdhaW46CistCWlmIChpZHggPT0gMTAwMCkgeworKwlpZiAoaWR4ID09IDk5OSkgeworIAkJRVJST1IoIlRvbyBtYW55IGNvbmZsaWN0aW5nIGNncm91cCBuYW1lcyIpOworIAkJZ290byBvdXRfZnJlZTsKKyAJfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9ydW50ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvZmlsZXMvcnVudGVzdC5wYXRjaAppbmRleCBlNGUwMzRiLi42NTcyMjY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9maWxlcy9ydW50ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2ZpbGVzL3J1bnRlc3QucGF0Y2gKQEAgLTE5LDcgKzE5LDcgQEAKICsKICtpbnN0YWxsLXB0ZXN0OgogKwlpbnN0YWxsIC1kICQoVEVTVF9ESVIpCi0rCWluc3RhbGwgLUQgLi4vbHhjL2xpYmx4Yy5zbyAkKFRFU1RfRElSKS8uLi9seGMvbGlibHhjLnNvCisrCWluc3RhbGwgLUQgLi4vbHhjLy5saWJzL2xpYmx4Yy5zbyAkKFRFU1RfRElSKS8uLi9seGMvbGlibHhjLnNvCiArCWluc3RhbGwgLUQgLi4vLi4vY29uZmlnL3Rlc3QtZHJpdmVyICQoVEVTVF9ESVIpLy4uLy4uL2NvbmZpZy90ZXN0LWRyaXZlcgogKwljcCBNYWtlZmlsZSAkKFRFU1RfRElSKQogKwlAKGZvciBmaWxlIGluICQoVEVTVFMpOyBkbyBpbnN0YWxsICQkZmlsZSAkKFRFU1RfRElSKTsgIGRvbmU7KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvbHhjXzIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvbHhjXzIuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOThkMWE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvbHhjL2x4Y18yLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJseGMgYWltcyB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ubmFsaXRpZXMgdG8gcHJvdmlkZSBhbiB1c2Vyc3BhY2UgY29udGFpbmVyIG9iamVjdCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLVBSSU9SSVRZID0gIm9wdGlvbmFsIgotREVQRU5EUyA9ICJsaWJ4bWwyIGxpYmNhcCIKLVJERVBFTkRTXyR7UE59ID0gIiBcCi0JCXJzeW5jIFwKLQkJZ3ppcCBcCi0JCWxpYmNhcC1iaW4gXAotCQlicmlkZ2UtdXRpbHMgXAotCQlkbnNtYXNxIFwKLQkJaW5pdHNjcmlwdHMgXAotCQlwZXJsLW1vZHVsZS1zdHJpY3QgXAotCQlwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCi0JCXBlcmwtbW9kdWxlLXZhcnMgXAotCQlwZXJsLW1vZHVsZS13YXJuaW5ncy1yZWdpc3RlciBcCi0JCXBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLQkJcGVybC1tb2R1bGUtY29uc3RhbnQgXAotCQlwZXJsLW1vZHVsZS1vdmVybG9hZCBcCi0JCXBlcmwtbW9kdWxlLWV4cG9ydGVyLWhlYXZ5IFwKLSIKLVJERVBFTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIlwKLQkJZ2xpYmMtdXRpbHMgXAotIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZmlsZSBtYWtlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9saW51eGNvbnRhaW5lcnMub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLQlmaWxlOi8vbHhjLTEuMC4wLWRpc2FibGUtdWRoY3AtZnJvbS1idXN5Ym94LXRlbXBsYXRlLnBhdGNoIFwKLQlmaWxlOi8vcnVudGVzdC5wYXRjaCBcCi0JZmlsZTovL3J1bi1wdGVzdCBcCi0JZmlsZTovL2F1dG9tYWtlLWVuc3VyZS1WUEFUSC1idWlsZHMtY29ycmVjdGx5LnBhdGNoIFwKLQlmaWxlOi8vbHhjLWZpeC1CLVMucGF0Y2ggXAotCWZpbGU6Ly9seGMtZG9jLXVwZ3JhZGUtdG8tdXNlLWRvY2Jvb2stMy4xLURURC5wYXRjaCBcCi0JZmlsZTovL2xvZ3Mtb3B0aW9uYWxseS11c2UtYmFzZS1maWxlbmFtZXMtdG8tcmVwb3J0LXNyYy1maWwucGF0Y2ggXAotCWZpbGU6Ly9Vc2UtQUNfSEVBREVSX01BSk9SLXRvLWRldGVjdC1tYWpvci1taW5vci1tYWtlZGV2LnBhdGNoIFwKLQkiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNGE3MjQ1YTYxNGNkMzI5NmIwYWU5Y2VlZWI4M2ZiYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjczN2UxMTRkOGVmMWZlYjE5M2ZiYTkzNmQ3N2E1Njk3YTdjOGExMDE5OWEwNjhjZGQ5MGQxYmQyN2MxMGU0IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9IgotCi0jIExldCdzIG5vdCBjb25maWd1cmUgZm9yIHRoZSBob3N0IGRpc3Ryby4KLSMKLVBURVNUX0NPTkYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICctLWVuYWJsZS10ZXN0cycsICcnLCBkKX0iCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1kaXN0cm89JHtESVNUUk99ICR7UFRFU1RfQ09ORn0iCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWluaXQtc2NyaXB0PVwKLSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnc3lzdmluaXQsJywgJycsIGQpfVwKLSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sb2ctc3JjLWJhc2VuYW1lIgotCi1DRkxBR1NfYXBwZW5kID0gIiAtV25vLWVycm9yPWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotCi1QQUNLQUdFQ09ORklHID8/PSAidGVtcGxhdGVzIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCAnc2VsaW51eCcsICcnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tkb2NdID0gIi0tZW5hYmxlLWRvYyAtLWVuYWJsZS1hcGktZG9jcywtLWRpc2FibGUtZG9jIC0tZGlzYWJsZS1hcGktZG9jcywsIgotUEFDS0FHRUNPTkZJR1tycGF0aF0gPSAiLS1lbmFibGUtcnBhdGgsLS1kaXNhYmxlLXJwYXRoLCwiCi1QQUNLQUdFQ09ORklHW2FwcGFybW91cl0gPSAiLS1lbmFibGUtYXBwYXJtb3IsLS1kaXNhYmxlLWFwcGFybW9yLGFwcGFybW9yLGFwcGFybW9yIgotUEFDS0FHRUNPTkZJR1t0ZW1wbGF0ZXNdID0gIiwsLCAke1BOfS10ZW1wbGF0ZXMiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxsaWJzZWxpbnV4IgotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9Ii0tZW5hYmxlLXNlY2NvbXAsLS1kaXNhYmxlLXNlY2NvbXAsbGlic2VjY29tcCxsaWJzZWNjb21wIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbiwtLWRpc2FibGUtcHl0aG9uLHB5dGhvbjMscHl0aG9uMy1jb3JlIgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0tZW5hYmxlLWx1YSwtLWRpc2FibGUtbHVhLGx1YSxsdWEiCi0KLSMgcmVxdWlyZWQgYnkgcHl0aG9uMyB0byBydW4gc2V0dXAucHkKLWV4cG9ydCBCVUlMRF9TWVMKLWV4cG9ydCBIT1NUX1NZUwotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi1leHBvcnQgU1RBR0lOR19MSUJESVIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgcHl0aG9uM25hdGl2ZQotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNldHVwIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNldHVwID0gImx4Yy5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zZXR1cCA9ICJkaXNhYmxlIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNldHVwIgotSU5JVFNDUklQVF9OQU1FX3tQTn0tc2V0dXAgPSAibHhjIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc2V0dXAgPSAiJHtPU19ERUZBVUxUX0lOSVRTQ1JJUFRfUEFSQU1TfSIKLQotRklMRVNfJHtQTn0tZG9jID0gIiR7bWFuZGlyfSAke2luZm9kaXJ9IgotIyBGb3IgTFhDIHRoZSBkb2NkaXIgb25seSBjb250YWlucyBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbHhjIHBhY2thZ2UKLUZJTEVTXyR7UE59ICs9ICIke2RvY2Rpcn0iCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3B5dGhvbjMqIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbHVhLyoiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2x1YS9seGMvKiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2x1YS9seGMvLmRlYnVnIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L2x4Yy8uZGVidWcgJHtsaWJleGVjZGlyfS9seGMvaG9va3MvLmRlYnVnIgotUEFDS0FHRVMgPSsgIiR7UE59LXRlbXBsYXRlcyAke1BOfS1zZXR1cCAke1BOfS1uZXR3b3JraW5nIgotRklMRVNfJHtQTn0tdGVtcGxhdGVzICs9ICIke2RhdGFkaXJ9L2x4Yy90ZW1wbGF0ZXMiCi1SREVQRU5EU18ke1BOfS10ZW1wbGF0ZXMgKz0gImJhc2giCi0KLUFMTE9XX0VNUFRZXyR7UE59LW5ldHdvcmtpbmcgPSAiMSIKLQotRklMRVNfJHtQTn0tc2V0dXAgKz0gIiR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZCIKLUZJTEVTXyR7UE59LXNldHVwICs9ICIke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IgotRklMRVNfJHtQTn0tc2V0dXAgKz0gIiR7c3lzY29uZmRpcn0vaW5pdC5kIgotCi1QUklWQVRFX0xJQlNfJHtQTn0tcHRlc3QgPSAibGlibHhjLnNvLjEiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICIgXAotICAgIGFjX2N2X3BhdGhfUFlUSE9OPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMycgXAotICAgIGFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9LyR7bGliZGlyfS9weXRob24zLjUvc2l0ZS1wYWNrYWdlcycgXAotICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7cHJlZml4fS8ke2xpYmRpcn0vcHl0aG9uMy41L3NpdGUtcGFja2FnZXMnIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBUaGUgL3Zhci9jYWNoZS9seGMgZGlyZWN0b3J5IGNyZWF0ZWQgYnkgdGhlIE1ha2VmaWxlCi0JIyBpcyB3aXBlZCBvdXQgaW4gdm9sYXRpbGUsIHdlIG5lZWQgdG8gY3JlYXRlIHRoaXMgYXQgYm9vdC4KLQlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JZWNobyAiZCByb290IHJvb3QgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2x4YyBub25lIiBcCi0JICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2x4YwotCi0JZm9yIGkgaW4gYGdyZXAgLWwgIiMhICovYmluL2Jhc2giICR7RH0ke2RhdGFkaXJ9L2x4Yy9ob29rcy8qYDsgZG8gXAotCSAgICBzZWQgLWUgJ3N8IyEgKi9iaW4vYmFzaHwjIS9iaW4vc2h8JyAtaSAkaTsgZG9uZQotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JICAgIGluc3RhbGwgLW0gNzU1IGNvbmZpZy9pbml0L3N5c3Zpbml0L2x4YyogJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JZmkKLQotCSMgc2luY2UgcHl0aG9uMy1uYXRpdmUgaXMgdXNlZCBmb3IgaW5zdGFsbCBsb2NhdGlvbiB0aGlzIHdpbGwgbm90IGJlCi0JIyBzdWl0YWJsZSBmb3IgdGhlIHRhcmdldCBhbmQgd2Ugd2lsbCBoYXZlIHRvIGNvcnJlY3QgdGhlIHBhY2thZ2UgaW5zdGFsbAotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JICAgIGlmIFsgLWQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9weXRob24qIF07IHRoZW4gbXYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9weXRob24qICR7RH0ke2xpYmRpcn0vOyBmaQotCSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtleGVjX3ByZWZpeH0vbGliCi0JZmkKLX0KLQotRVhUUkFfT0VNQUtFICs9ICJURVNUX0RJUj0ke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMiCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyBzcmMvdGVzdHMgaW5zdGFsbC1wdGVzdAotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0oKSB7Ci0JaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgotCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLQlmaQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0tbmV0d29ya2luZygpIHsKLQlpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCi0JCWV4aXQgMQotCWZpCi0KLQkjIHNldHVwIGZvciBvdXIgYnJpZGdlCi0gICAgICAgIGVjaG8gImx4Yy5uZXR3b3JrLmxpbms9bHhjYnIwIiA+PiAke3N5c2NvbmZkaXJ9L2x4Yy9kZWZhdWx0LmNvbmYKLQotY2F0ID4+IC9ldGMvbmV0d29yay9pbnRlcmZhY2VzIDw8IEVPRgotCi1hdXRvIGx4Y2JyMAotaWZhY2UgbHhjYnIwIGluZXQgZGhjcAotCWJyaWRnZV9wb3J0cyBldGgwCi0JYnJpZGdlX2ZkIDAKLQlicmlkZ2VfbWF4d2FpdCAwCi1FT0YKLQotY2F0PDxFT0Y+L2V0Yy9uZXR3b3JrL2lmLXByZS11cC5kL2x4Y2JyMAotIyEgL2Jpbi9zaAotCi1pZiB0ZXN0ICJ4XCRJRkFDRSIgPSB4bHhjYnIwIDsgdGhlbgotICAgICAgICBicmN0bCBzaG93IHxncmVwIGx4Y2JyMCA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbAotICAgICAgICBpZiBbIFwkPyAhPSAwIF0gOyB0aGVuCi0gICAgICAgICAgICAgICAgYnJjdGwgYWRkYnIgbHhjYnIwCi0gICAgICAgICAgICAgICAgYnJjdGwgYWRkaWYgbHhjYnIwIGV0aDAKLSAgICAgICAgICAgICAgICBpcCBhZGRyIGZsdXNoIGV0aDAKLSAgICAgICAgICAgICAgICBpZmNvbmZpZyBldGgwIHVwCi0gICAgICAgIGZpCi1maQotRU9GCi1jaG1vZCA3NTUgL2V0Yy9uZXR3b3JrL2lmLXByZS11cC5kL2x4Y2JyMAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvbHhjXzIuMC44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9seGMvbHhjXzIuMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZDVhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL2x4Yy9seGNfMi4wLjguYmIKQEAgLTAsMCArMSwxNzkgQEAKK0RFU0NSSVBUSU9OID0gImx4YyBhaW1zIHRvIHVzZSB0aGVzZSBuZXcgZnVuY3Rpb25uYWxpdGllcyB0byBwcm92aWRlIGFuIHVzZXJzcGFjZSBjb250YWluZXIgb2JqZWN0IgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorREVQRU5EUyA9ICJsaWJ4bWwyIGxpYmNhcCIKK1JERVBFTkRTXyR7UE59ID0gIiBcCisJCXJzeW5jIFwKKwkJZ3ppcCBcCisJCWxpYmNhcC1iaW4gXAorCQlicmlkZ2UtdXRpbHMgXAorCQlkbnNtYXNxIFwKKwkJcGVybC1tb2R1bGUtc3RyaWN0IFwKKwkJcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAorCQlwZXJsLW1vZHVsZS12YXJzIFwKKwkJcGVybC1tb2R1bGUtd2FybmluZ3MtcmVnaXN0ZXIgXAorCQlwZXJsLW1vZHVsZS1leHBvcnRlciBcCisJCXBlcmwtbW9kdWxlLWNvbnN0YW50IFwKKwkJcGVybC1tb2R1bGUtb3ZlcmxvYWQgXAorCQlwZXJsLW1vZHVsZS1leHBvcnRlci1oZWF2eSBcCisJCWdtcCBcCisJCWxpYmlkbiBcCisJCWdudXRscyBcCisJCW5ldHRsZSBcCisiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZmlsZSBtYWtlIGdtcCBuZXR0bGUgZ251dGxzIGJhc2giCisKK1NSQ19VUkkgPSAiaHR0cDovL2xpbnV4Y29udGFpbmVycy5vcmcvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorCWZpbGU6Ly9seGMtMS4wLjAtZGlzYWJsZS11ZGhjcC1mcm9tLWJ1c3lib3gtdGVtcGxhdGUucGF0Y2ggXAorCWZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKwlmaWxlOi8vYXV0b21ha2UtZW5zdXJlLVZQQVRILWJ1aWxkcy1jb3JyZWN0bHkucGF0Y2ggXAorCWZpbGU6Ly9seGMtZml4LUItUy5wYXRjaCBcCisJZmlsZTovL2x4Yy1kb2MtdXBncmFkZS10by11c2UtZG9jYm9vay0zLjEtRFRELnBhdGNoIFwKKwlmaWxlOi8vbG9ncy1vcHRpb25hbGx5LXVzZS1iYXNlLWZpbGVuYW1lcy10by1yZXBvcnQtc3JjLWZpbC5wYXRjaCBcCisJZmlsZTovL2Nncm91cHMtd29yay1hcm91bmQtaXNzdWUtaW4tZ2NjLTcucGF0Y2ggXAorCSIKKworU1JDX1VSSVttZDVzdW1dID0gIjdiZmQ5NTI4MDUyMmQ3OTM2YzA5NzlkZmVhOTJjZGI1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkOGUzNGIzMDJjZmU0YzQwYzZjOWFlNTA5NzA5NmFhNWNjMmMxZGZjZWVhM2YwZjIyZTNlMTZjNGE0ZTg0OTQiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCisKKyMgTGV0J3Mgbm90IGNvbmZpZ3VyZSBmb3IgdGhlIGhvc3QgZGlzdHJvLgorIworUFRFU1RfQ09ORiA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJy0tZW5hYmxlLXRlc3RzJywgJycsIGQpfSIKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLWRpc3Rybz0ke0RJU1RST30gJHtQVEVTVF9DT05GfSIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtaW5pdC1zY3JpcHQ9XAorJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdzeXN2aW5pdCwnLCAnJywgZCl9XAorJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxvZy1zcmMtYmFzZW5hbWUiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZXJyb3I9ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0ZW1wbGF0ZXMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdzZWxpbnV4JywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2RvY10gPSAiLS1lbmFibGUtZG9jIC0tZW5hYmxlLWFwaS1kb2NzLC0tZGlzYWJsZS1kb2MgLS1kaXNhYmxlLWFwaS1kb2NzLCwiCitQQUNLQUdFQ09ORklHW3JwYXRoXSA9ICItLWVuYWJsZS1ycGF0aCwtLWRpc2FibGUtcnBhdGgsLCIKK1BBQ0tBR0VDT05GSUdbYXBwYXJtb3VyXSA9ICItLWVuYWJsZS1hcHBhcm1vciwtLWRpc2FibGUtYXBwYXJtb3IsYXBwYXJtb3IsYXBwYXJtb3IiCitQQUNLQUdFQ09ORklHW3RlbXBsYXRlc10gPSAiLCwsICR7UE59LXRlbXBsYXRlcyIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGxpYnNlbGludXgiCitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0iLS1lbmFibGUtc2VjY29tcCwtLWRpc2FibGUtc2VjY29tcCxsaWJzZWNjb21wLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLC0tZGlzYWJsZS1weXRob24scHl0aG9uMyxweXRob24zLWNvcmUiCitQQUNLQUdFQ09ORklHW2x1YV0gPSAiLS1lbmFibGUtbHVhLC0tZGlzYWJsZS1sdWEsbHVhLGx1YSIKKworIyByZXF1aXJlZCBieSBweXRob24zIHRvIHJ1biBzZXR1cC5weQorZXhwb3J0IEJVSUxEX1NZUworZXhwb3J0IEhPU1RfU1lTCitleHBvcnQgU1RBR0lOR19JTkNESVIKK2V4cG9ydCBTVEFHSU5HX0xJQkRJUgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QgdXBkYXRlLXJjLmQgc3lzdGVtZCBweXRob24zbmF0aXZlCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc2V0dXAiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc2V0dXAgPSAibHhjLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LXNldHVwID0gImRpc2FibGUiCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc2V0dXAiCitJTklUU0NSSVBUX05BTUVfe1BOfS1zZXR1cCA9ICJseGMiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zZXR1cCA9ICJkZWZhdWx0cyIKKworRklMRVNfJHtQTn0tZG9jID0gIiR7bWFuZGlyfSAke2luZm9kaXJ9IgorIyBGb3IgTFhDIHRoZSBkb2NkaXIgb25seSBjb250YWlucyBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbHhjIHBhY2thZ2UKK0ZJTEVTXyR7UE59ICs9ICIke2RvY2Rpcn0iCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3B5dGhvbjMqIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L2x4Yy8uZGVidWciCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vbHhjL2hvb2tzLy5kZWJ1ZyIKK1BBQ0tBR0VTID0rICIke1BOfS10ZW1wbGF0ZXMgJHtQTn0tc2V0dXAgJHtQTn0tbmV0d29ya2luZyAke1BOfS1sdWEiCitGSUxFU19sdWEtJHtQTn0gPSAiJHtkYXRhZGlyfS9sdWEgJHtsaWJkaXJ9L2x1YSIKK0ZJTEVTX2x1YS0ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9sdWEvbHhjLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LXRlbXBsYXRlcyArPSAiJHtkYXRhZGlyfS9seGMvdGVtcGxhdGVzIgorUkRFUEVORFNfJHtQTn0tdGVtcGxhdGVzICs9ICJiYXNoIgorCitBTExPV19FTVBUWV8ke1BOfS1uZXR3b3JraW5nID0gIjEiCisKK0ZJTEVTXyR7UE59LXNldHVwICs9ICIvZXRjL3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1zZXR1cCArPSAiL2xpYi9zeXN0ZW1kL3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNldHVwICs9ICIvdXNyL2xpYi9zeXN0ZW1kL3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNldHVwICs9ICIvZXRjL2luaXQuZCIKKworUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmx4Yy5zby4xIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiIFwKKyAgICBhY19jdl9wYXRoX1BZVEhPTj0nJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMnIFwKKyAgICBhbV9jdl9weXRob25fcHlleGVjZGlyPScke2V4ZWNfcHJlZml4fS8ke2xpYmRpcn0vcHl0aG9uMy41L3NpdGUtcGFja2FnZXMnIFwKKyAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPScke3ByZWZpeH0vJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaXRlLXBhY2thZ2VzJyBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgVGhlIC92YXIvY2FjaGUvbHhjIGRpcmVjdG9yeSBjcmVhdGVkIGJ5IHRoZSBNYWtlZmlsZQorCSMgaXMgd2lwZWQgb3V0IGluIHZvbGF0aWxlLCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGlzIGF0IGJvb3QuCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWVjaG8gImQgcm9vdCByb290IDA3NTUgJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9seGMgbm9uZSIgXAorCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9seGMKKworCWZvciBpIGluIGBncmVwIC1sICIjISAqL2Jpbi9iYXNoIiAke0R9JHtkYXRhZGlyfS9seGMvaG9va3MvKmA7IGRvIFwKKwkgICAgc2VkIC1lICdzfCMhICovYmluL2Jhc2h8IyEvYmluL3NofCcgLWkgJGk7IGRvbmUKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCSAgICBpbnN0YWxsIC1tIDc1NSBjb25maWcvaW5pdC9zeXN2aW5pdC9seGMqICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWZpCisKKwkjIHNpbmNlIHB5dGhvbjMtbmF0aXZlIGlzIHVzZWQgZm9yIGluc3RhbGwgbG9jYXRpb24gdGhpcyB3aWxsIG5vdCBiZQorCSMgc3VpdGFibGUgZm9yIHRoZSB0YXJnZXQgYW5kIHdlIHdpbGwgaGF2ZSB0byBjb3JyZWN0IHRoZSBwYWNrYWdlIGluc3RhbGwKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCSAgICBpZiBbIC1kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvcHl0aG9uKiBdOyB0aGVuIG12ICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvcHl0aG9uKiAke0R9JHtsaWJkaXJ9LzsgZmkKKwkgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYgorCWZpCit9CisKK0VYVFJBX09FTUFLRSArPSAiVEVTVF9ESVI9JHtEfSR7UFRFU1RfUEFUSH0vc3JjL3Rlc3RzIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgc3JjL3Rlc3RzIGluc3RhbGwtcHRlc3QKK30KKworcGtnX3Bvc3RpbnN0XyR7UE59KCkgeworCWlmIFsgLXogIiREIiBdICYmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXSA7IHRoZW4KKwkJL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisJZmkKK30KKworcGtnX3Bvc3RpbnN0XyR7UE59LW5ldHdvcmtpbmcoKSB7CisJaWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgorCQlleGl0IDEKKwlmaQorCisJIyBzZXR1cCBmb3Igb3VyIGJyaWRnZQorICAgICAgICBlY2hvICJseGMubmV0d29yay5saW5rPWx4Y2JyMCIgPj4gJHtzeXNjb25mZGlyfS9seGMvZGVmYXVsdC5jb25mCisKK2NhdCA+PiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcyA8PCBFT0YKKworYXV0byBseGNicjAKK2lmYWNlIGx4Y2JyMCBpbmV0IGRoY3AKKwlicmlkZ2VfcG9ydHMgZXRoMAorCWJyaWRnZV9mZCAwCisJYnJpZGdlX21heHdhaXQgMAorRU9GCisKK2NhdDw8RU9GPi9ldGMvbmV0d29yay9pZi1wcmUtdXAuZC9seGNicjAKKyMhIC9iaW4vc2gKKworaWYgdGVzdCAieFwkSUZBQ0UiID0geGx4Y2JyMCA7IHRoZW4KKyAgICAgICAgYnJjdGwgc2hvdyB8Z3JlcCBseGNicjAgPiAvZGV2L251bGwgMj4vZGV2L251bGwKKyAgICAgICAgaWYgWyBcJD8gIT0gMCBdIDsgdGhlbgorICAgICAgICAgICAgICAgIGJyY3RsIGFkZGJyIGx4Y2JyMAorICAgICAgICAgICAgICAgIGJyY3RsIGFkZGlmIGx4Y2JyMCBldGgwCisgICAgICAgICAgICAgICAgaXAgYWRkciBmbHVzaCBldGgwCisgICAgICAgICAgICAgICAgaWZjb25maWcgZXRoMCB1cAorICAgICAgICBmaQorZmkKK0VPRgorY2htb2QgNzU1IC9ldGMvbmV0d29yay9pZi1wcmUtdXAuZC9seGNicjAKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL2ZpbGVzLzAwMDEtaW1hZ2UtbWFuaWZlc3QtUmVjdXJzaXZlbHktcmVtb3ZlLXByZS1leGlzdGluZy1lbnRyaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL2ZpbGVzLzAwMDEtaW1hZ2UtbWFuaWZlc3QtUmVjdXJzaXZlbHktcmVtb3ZlLXByZS1leGlzdGluZy1lbnRyaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTk0Zjk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktaW1hZ2UtdG9vbHMvZmlsZXMvMDAwMS1pbWFnZS1tYW5pZmVzdC1SZWN1cnNpdmVseS1yZW1vdmUtcHJlLWV4aXN0aW5nLWVudHJpLnBhdGNoCkBAIC0wLDAgKzEsNzggQEAKK0Zyb20gMWYyMDVjMGFlYzVlYTllOTgzZDYxYTY0ZTdjZTg3MWFlNDE2YmViZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJXLiBUcmV2b3IgS2luZyIgPHdraW5nQHRyZW1pbHkudXM+CitEYXRlOiBUdWUsIDE4IE9jdCAyMDE2IDAyOjE2OjQ2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBpbWFnZS9tYW5pZmVzdDogUmVjdXJzaXZlbHkgcmVtb3ZlIHByZS1leGlzdGluZyBlbnRyaWVzCisgd2hlbiB1bnBhY2tpbmcKKworSW1wbGVtZW50aW5nIHRoZSBsb2dpYyB0aGF0IGlzIGluLWZsaWdodCB3aXRoIFsxXSwgYnV0IHVzaW5nIHJlY3Vyc2l2ZQorcmVtb3ZhbCBbMl0uICBHTlUgdGFyIGhhcyBhIC0tcmVjdXJzaXZlLXVubGluayBvcHRpb24gdGhhdCdzIG5vdAorZW5hYmxlZCBieSBkZWZhdWx0LCB3aXRoIHRoZSBtb3RpdmF0aW9uIGJlaW5nIHNvbWV0aGluZyBsaWtlICJmb2xrcword291bGQgYmUgbWFkIGlmIHdlIGJsZXcgYXdheSBhIGZ1bGwgdHJlZSBhbmQgcmVwbGFjZWQgaXQgd2l0aCBhIGJyb2tlbgorc3ltbGluayIgWzNdLiAgVGhhdCBtYWtlcyBzZW5zZSBmb3Igd29ya2luZyBmaWxlc3lzdGVtcywgYnV0IHdlJ3JlCitidWlsZGluZyB0aGUgcm9vdGZzIGZyb20gc2NyYXRjaCBoZXJlIHNvIGxvc2luZyBpbmZvcm1hdGlvbiBpcyBub3QgYQorY29uY2Vybi4gIFRoaXMgY29tbWl0IGFsd2F5cyB1c2VzIHJlY3Vyc2l2ZSByZW1vdmFsIHRvIGdldCB0aGF0IG9sZAordGhpbmcgb2ZmIHRoZSBmaWxlc3lzdGVtICh3aGF0ZXZlciBpdCB0YWtlcyA7KS4KKworVGhlIGV4Y2VwdGlvbiB0byB0aGUgcmVtb3ZhbCBpcyBpZiBib3RoIHRoZSB0YXIgZW50cnkgYW5kIGV4aXN0aW5nCitwYXRoIG9jY3VwYW50IGFyZSBkaXJlY3Rvcmllcy4gIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHVzZSBHTlUgdGFyJ3MKK2RlZmF1bHQgLS1vdmVyd3JpdGUtZGlyIGJlaGF2aW9yLCBidXQgdW5wYWNrTGF5ZXIncyBtZXRhZGF0YSBoYW5kbGluZworaXMgY3VycmVudGx5IHZlcnkgd2VhayBzbyBJJ3ZlIGxlZnQgaXQgYXQgImRvbid0IGRlbGV0ZSB0aGUgb2xkCitkaXJlY3RvcnkiLgorCitUaGUgcmV3b3JrZWQgZGlyZWN0b3J5IGNhc2UgYWxzbyBmaXhlcyBhIG1pbm9yIGJ1ZyBmcm9tIDQ0MjEwZDA1CisoY21kL29jaS1pbWFnZS10b29sOiBmaXggdW5wYWNraW5nLi4uLCAyMDE2LTA3LTIyLCAjMTc3KSB3aGVyZSB0aGU6CisKKyAgaWYgZmksIGVyciA6PSBvcy5Mc3RhdChwYXRoKTsgIShlcnIgPT0gbmlsICYmIGZpLklzRGlyKCkpIHsKKworYmxvY2sgd291bGQgbm90IGVycm9yIG91dCBpZiB0aGUgTHN0YXQgZmFpbGVkIGZvciBhIHJlYXNvbiBiZXNpZGVzIHRoZQorYWNjZXB0YWJsZSBJc05vdEV4aXN0LiAgSW5zdGVhZCwgaXQgd291bGQgYXR0ZW1wdCB0byBjYWxsIE1rZGlyQWxsLAord2hpY2ggd291bGQgcHJvYmFibHkgZmFpbCBmb3IgdGhlIHNhbWUgcmVhc29uIHRoYXQgTHN0YXQgZmFpbGVkCisoZS5nLiBFTk9URElSKS4gIEJ1dCBpdCdzIGJldHRlciB0byBoYW5kbGUgdGhlIExzdGF0IGVycm9ycyBkaXJlY3RseS4KKworWzFdOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2Utc3BlYy9wdWxsLzMxNworWzJdOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2Utc3BlYy9wdWxsLzMxNy9maWxlcyNyNzkyMTQ3MTgKK1szXTogaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90YXIvbWFudWFsL2h0bWxfbm9kZS9EZWFsaW5nLXdpdGgtT2xkLUZpbGVzLmh0bWwKKworU2lnbmVkLW9mZi1ieTogVy4gVHJldm9yIEtpbmcgPHdraW5nQHRyZW1pbHkudXM+CistLS0KKyBpbWFnZS9tYW5pZmVzdC5nbyB8IDIyICsrKysrKysrKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ltYWdlL21hbmlmZXN0LmdvIGIvaW1hZ2UvbWFuaWZlc3QuZ28KK2luZGV4IDg4MzRjMWU1ZjJmMC4uMTQ0YmQ0ZjYyMjE5IDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9pbWFnZS9tYW5pZmVzdC5nbworKysrIGIvc3JjL2ltcG9ydC9pbWFnZS9tYW5pZmVzdC5nbworQEAgLTI1MywxMSArMjUzLDI3IEBAIGxvb3A6CisgCQkJY29udGludWUgbG9vcAorIAkJfQorIAorKwkJaWYgaGRyLlR5cGVmbGFnICE9IHRhci5UeXBlRGlyIHsKKysJCQllcnIgPSBvcy5SZW1vdmVBbGwocGF0aCkKKysJCQlpZiBlcnIgIT0gbmlsICYmICFvcy5Jc05vdEV4aXN0KGVycikgeworKwkJCQlyZXR1cm4gZXJyCisrCQkJfQorKwkJfQorKworIAkJc3dpdGNoIGhkci5UeXBlZmxhZyB7CisgCQljYXNlIHRhci5UeXBlRGlyOgorLQkJCWlmIGZpLCBlcnIgOj0gb3MuTHN0YXQocGF0aCk7ICEoZXJyID09IG5pbCAmJiBmaS5Jc0RpcigpKSB7CistCQkJCWlmIGVycjIgOj0gb3MuTWtkaXJBbGwocGF0aCwgaW5mby5Nb2RlKCkpOyBlcnIyICE9IG5pbCB7CistCQkJCQlyZXR1cm4gZXJyb3JzLldyYXAoZXJyMiwgImVycm9yIGNyZWF0aW5nIGRpcmVjdG9yeSIpCisrCQkJZmksIGVyciA6PSBvcy5Mc3RhdChwYXRoKQorKwkJCWlmIGVyciAhPSBuaWwgJiYgIW9zLklzTm90RXhpc3QoZXJyKSB7CisrCQkJCXJldHVybiBlcnIKKysJCQl9CisrCQkJaWYgb3MuSXNOb3RFeGlzdChlcnIpIHx8ICFmaS5Jc0RpcigpIHsKKysJCQkJZXJyID0gb3MuUmVtb3ZlQWxsKHBhdGgpCisrCQkJCWlmIGVyciAhPSBuaWwgJiYgIW9zLklzTm90RXhpc3QoZXJyKSB7CisrCQkJCQlyZXR1cm4gZXJyCisrCQkJCX0KKysJCQkJZXJyID0gb3MuTWtkaXJBbGwocGF0aCwgaW5mby5Nb2RlKCkpCisrCQkJCWlmIGVyciAhPSBuaWwgeworKwkJCQkJcmV0dXJuIGVycgorIAkJCQl9CisgCQkJfQorIAorLS0gCisyLjQuMC41My5nODQ0MGY3NAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1pbWFnZS10b29scy9maWxlcy8wMDAyLWltYWdlLW1hbmlmZXN0LVNwbGl0LXVucGFja0xheWVyRW50cnktaW50by1pdHMtb3duLWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1pbWFnZS10b29scy9maWxlcy8wMDAyLWltYWdlLW1hbmlmZXN0LVNwbGl0LXVucGFja0xheWVyRW50cnktaW50by1pdHMtb3duLWYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjliZGNkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL2ZpbGVzLzAwMDItaW1hZ2UtbWFuaWZlc3QtU3BsaXQtdW5wYWNrTGF5ZXJFbnRyeS1pbnRvLWl0cy1vd24tZi5wYXRjaApAQCAtMCwwICsxLDI0MiBAQAorRnJvbSAxZTU1ZjJhODNiMWY2NDQ4MDNiNjQwYjcyMTcxYjRhZTBkOTUyMTdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlcuIFRyZXZvciBLaW5nIiA8d2tpbmdAdHJlbWlseS51cz4KK0RhdGU6IFRodSwgMjAgT2N0IDIwMTYgMjM6MzA6MjIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGltYWdlL21hbmlmZXN0OiBTcGxpdCB1bnBhY2tMYXllckVudHJ5IGludG8gaXRzIG93bgorIGZ1bmN0aW9uCisKK1RvIGhlbHAgYWRkcmVzczoKKworICAkIG1ha2UgbGludAorICBjaGVja2luZyBsaW50CisgIGltYWdlL21hbmlmZXN0LmdvOjE0MDo6d2FybmluZzogY3ljbG9tYXRpYyBjb21wbGV4aXR5IDM5IG9mIGZ1bmN0aW9uIHVucGFja0xheWVyKCkgaXMgaGlnaCAoPiAzNSkgKGdvY3ljbG8pCisgIC4uLgorCitTaWduZWQtb2ZmLWJ5OiBXLiBUcmV2b3IgS2luZyA8d2tpbmdAdHJlbWlseS51cz4KKy0tLQorIGltYWdlL21hbmlmZXN0LmdvIHwgMTg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbWFnZS9tYW5pZmVzdC5nbyBiL2ltYWdlL21hbmlmZXN0LmdvCitpbmRleCAxNDRiZDRmNjIyMTkuLmRmZDVhODNmNzBlNCAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvaW1hZ2UvbWFuaWZlc3QuZ28KKysrKyBiL3NyYy9pbXBvcnQvaW1hZ2UvbWFuaWZlc3QuZ28KK0BAIC0yMTgsMTE2ICsyMTgsMTMxIEBAIGxvb3A6CisgCQkJcmV0dXJuIGVycm9ycy5XcmFwZihlcnIsICJlcnJvciBhZHZhbmNpbmcgdGFyIHN0cmVhbSIpCisgCQl9CisgCistCQloZHIuTmFtZSA9IGZpbGVwYXRoLkNsZWFuKGhkci5OYW1lKQorLQkJaWYgIXN0cmluZ3MuSGFzU3VmZml4KGhkci5OYW1lLCBzdHJpbmcob3MuUGF0aFNlcGFyYXRvcikpIHsKKy0JCQkvLyBOb3QgdGhlIHJvb3QgZGlyZWN0b3J5LCBlbnN1cmUgdGhhdCB0aGUgcGFyZW50IGRpcmVjdG9yeSBleGlzdHMKKy0JCQlwYXJlbnQgOj0gZmlsZXBhdGguRGlyKGhkci5OYW1lKQorLQkJCXBhcmVudFBhdGggOj0gZmlsZXBhdGguSm9pbihkZXN0LCBwYXJlbnQpCistCQkJaWYgXywgZXJyMiA6PSBvcy5Mc3RhdChwYXJlbnRQYXRoKTsgZXJyMiAhPSBuaWwgJiYgb3MuSXNOb3RFeGlzdChlcnIyKSB7CistCQkJCWlmIGVycjMgOj0gb3MuTWtkaXJBbGwocGFyZW50UGF0aCwgMDc1NSk7IGVycjMgIT0gbmlsIHsKKy0JCQkJCXJldHVybiBlcnIzCistCQkJCX0KKy0JCQl9CistCQl9CistCQlwYXRoIDo9IGZpbGVwYXRoLkpvaW4oZGVzdCwgaGRyLk5hbWUpCistCQlpZiBlbnRyaWVzW3BhdGhdIHsKKy0JCQlyZXR1cm4gZm10LkVycm9yZigiZHVwbGljYXRlIGVudHJ5IGZvciAlcyIsIHBhdGgpCistCQl9CistCQllbnRyaWVzW3BhdGhdID0gdHJ1ZQorLQkJcmVsLCBlcnIgOj0gZmlsZXBhdGguUmVsKGRlc3QsIHBhdGgpCisrCQl2YXIgd2hpdGVvdXQgYm9vbAorKwkJd2hpdGVvdXQsIGVyciA9IHVucGFja0xheWVyRW50cnkoZGVzdCwgaGRyLCB0ciwgJmVudHJpZXMpCisgCQlpZiBlcnIgIT0gbmlsIHsKKyAJCQlyZXR1cm4gZXJyCisgCQl9CistCQlpbmZvIDo9IGhkci5GaWxlSW5mbygpCistCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChyZWwsICIuLiIrc3RyaW5nKG9zLlBhdGhTZXBhcmF0b3IpKSB7CistCQkJcmV0dXJuIGZtdC5FcnJvcmYoIiVxIGlzIG91dHNpZGUgb2YgJXEiLCBoZHIuTmFtZSwgZGVzdCkKKysJCWlmIHdoaXRlb3V0IHsKKysJCQljb250aW51ZSBsb29wCisgCQl9CisgCistCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChpbmZvLk5hbWUoKSwgIi53aC4iKSB7CistCQkJcGF0aCA9IHN0cmluZ3MuUmVwbGFjZShwYXRoLCAiLndoLiIsICIiLCAxKQorKwkJLy8gRGlyZWN0b3J5IG10aW1lcyBtdXN0IGJlIGhhbmRsZWQgYXQgdGhlIGVuZCB0byBhdm9pZCBmdXJ0aGVyCisrCQkvLyBmaWxlIGNyZWF0aW9uIGluIHRoZW0gdG8gbW9kaWZ5IHRoZSBkaXJlY3RvcnkgbXRpbWUKKysJCWlmIGhkci5UeXBlZmxhZyA9PSB0YXIuVHlwZURpciB7CisrCQkJZGlycyA9IGFwcGVuZChkaXJzLCBoZHIpCisrCQl9CisrCX0KKysJZm9yIF8sIGhkciA6PSByYW5nZSBkaXJzIHsKKysJCXBhdGggOj0gZmlsZXBhdGguSm9pbihkZXN0LCBoZHIuTmFtZSkKKyAKKy0JCQlpZiBlcnIgOj0gb3MuUmVtb3ZlQWxsKHBhdGgpOyBlcnIgIT0gbmlsIHsKKy0JCQkJcmV0dXJuIGVycm9ycy5XcmFwKGVyciwgInVuYWJsZSB0byBkZWxldGUgd2hpdGVvdXQgcGF0aCIpCisrCQlmaW5mbyA6PSBoZHIuRmlsZUluZm8oKQorKwkJLy8gSSBiZWxpZXZlIHRoZSBvbGQgdmVyc2lvbiB3YXMgdXNpbmcgdGltZS5Ob3coKS5VVEMoKSB0byBvdmVyY29tZSBhbgorKwkJLy8gaW52YWxpZCBlcnJvciBmcm9tIGNodGltZXMuLi4uLmJ1dCBoZXJlIHdlIGxvc2UgaGRyLkFjY2Vzc1RpbWUgbGlrZSB0aGlzLi4uCisrCQlpZiBlcnIgOj0gb3MuQ2h0aW1lcyhwYXRoLCB0aW1lLk5vdygpLlVUQygpLCBmaW5mby5Nb2RUaW1lKCkpOyBlcnIgIT0gbmlsIHsKKysJCQlyZXR1cm4gZXJyb3JzLldyYXAoZXJyLCAiZXJyb3IgY2hhbmdpbmcgdGltZSIpCisrCQl9CisrCX0KKysJcmV0dXJuIG5pbAorK30KKysKKysvLyB1bnBhY2tMYXllckVudHJ5IHVucGFja3MgYSBzaW5nbGUgZW50cnkgZnJvbSBhIGxheWVyLgorK2Z1bmMgdW5wYWNrTGF5ZXJFbnRyeShkZXN0IHN0cmluZywgaGVhZGVyICp0YXIuSGVhZGVyLCByZWFkZXIgaW8uUmVhZGVyLCBlbnRyaWVzICptYXBbc3RyaW5nXWJvb2wpICh3aGl0ZW91dCBib29sLCBlcnIgZXJyb3IpIHsKKysJaGVhZGVyLk5hbWUgPSBmaWxlcGF0aC5DbGVhbihoZWFkZXIuTmFtZSkKKysJaWYgIXN0cmluZ3MuSGFzU3VmZml4KGhlYWRlci5OYW1lLCBzdHJpbmcob3MuUGF0aFNlcGFyYXRvcikpIHsKKysJCS8vIE5vdCB0aGUgcm9vdCBkaXJlY3RvcnksIGVuc3VyZSB0aGF0IHRoZSBwYXJlbnQgZGlyZWN0b3J5IGV4aXN0cworKwkJcGFyZW50IDo9IGZpbGVwYXRoLkRpcihoZWFkZXIuTmFtZSkKKysJCXBhcmVudFBhdGggOj0gZmlsZXBhdGguSm9pbihkZXN0LCBwYXJlbnQpCisrCQlpZiBfLCBlcnIyIDo9IG9zLkxzdGF0KHBhcmVudFBhdGgpOyBlcnIyICE9IG5pbCAmJiBvcy5Jc05vdEV4aXN0KGVycjIpIHsKKysJCQlpZiBlcnIzIDo9IG9zLk1rZGlyQWxsKHBhcmVudFBhdGgsIDA3NTUpOyBlcnIzICE9IG5pbCB7CisrCQkJCXJldHVybiBmYWxzZSwgZXJyMworIAkJCX0KKysJCX0KKysJfQorKwlwYXRoIDo9IGZpbGVwYXRoLkpvaW4oZGVzdCwgaGVhZGVyLk5hbWUpCisrCWlmICgqZW50cmllcylbcGF0aF0geworKwkJcmV0dXJuIGZhbHNlLCBmbXQuRXJyb3JmKCJkdXBsaWNhdGUgZW50cnkgZm9yICVzIiwgcGF0aCkKKysJfQorKwkoKmVudHJpZXMpW3BhdGhdID0gdHJ1ZQorKwlyZWwsIGVyciA6PSBmaWxlcGF0aC5SZWwoZGVzdCwgcGF0aCkKKysJaWYgZXJyICE9IG5pbCB7CisrCQlyZXR1cm4gZmFsc2UsIGVycgorKwl9CisrCWluZm8gOj0gaGVhZGVyLkZpbGVJbmZvKCkKKysJaWYgc3RyaW5ncy5IYXNQcmVmaXgocmVsLCAiLi4iK3N0cmluZyhvcy5QYXRoU2VwYXJhdG9yKSkgeworKwkJcmV0dXJuIGZhbHNlLCBmbXQuRXJyb3JmKCIlcSBpcyBvdXRzaWRlIG9mICVxIiwgaGVhZGVyLk5hbWUsIGRlc3QpCisrCX0KKyAKKy0JCQljb250aW51ZSBsb29wCisrCWlmIHN0cmluZ3MuSGFzUHJlZml4KGluZm8uTmFtZSgpLCAiLndoLiIpIHsKKysJCXBhdGggPSBzdHJpbmdzLlJlcGxhY2UocGF0aCwgIi53aC4iLCAiIiwgMSkKKysKKysJCWlmIGVyciA9IG9zLlJlbW92ZUFsbChwYXRoKTsgZXJyICE9IG5pbCB7CisrCQkJcmV0dXJuIHRydWUsIGVycm9ycy5XcmFwKGVyciwgInVuYWJsZSB0byBkZWxldGUgd2hpdGVvdXQgcGF0aCIpCisgCQl9CisgCistCQlpZiBoZHIuVHlwZWZsYWcgIT0gdGFyLlR5cGVEaXIgeworLQkJCWVyciA9IG9zLlJlbW92ZUFsbChwYXRoKQorLQkJCWlmIGVyciAhPSBuaWwgJiYgIW9zLklzTm90RXhpc3QoZXJyKSB7CistCQkJCXJldHVybiBlcnIKKy0JCQl9CisrCQlyZXR1cm4gdHJ1ZSwgbmlsCisrCX0KKysKKysJaWYgaGVhZGVyLlR5cGVmbGFnICE9IHRhci5UeXBlRGlyIHsKKysJCWVyciA9IG9zLlJlbW92ZUFsbChwYXRoKQorKwkJaWYgZXJyICE9IG5pbCAmJiAhb3MuSXNOb3RFeGlzdChlcnIpIHsKKysJCQlyZXR1cm4gZmFsc2UsIGVycgorIAkJfQorKwl9CisgCistCQlzd2l0Y2ggaGRyLlR5cGVmbGFnIHsKKy0JCWNhc2UgdGFyLlR5cGVEaXI6CistCQkJZmksIGVyciA6PSBvcy5Mc3RhdChwYXRoKQorKwlzd2l0Y2ggaGVhZGVyLlR5cGVmbGFnIHsKKysJY2FzZSB0YXIuVHlwZURpcjoKKysJCWZpLCBlcnIgOj0gb3MuTHN0YXQocGF0aCkKKysJCWlmIGVyciAhPSBuaWwgJiYgIW9zLklzTm90RXhpc3QoZXJyKSB7CisrCQkJcmV0dXJuIGZhbHNlLCBlcnIKKysJCX0KKysJCWlmIG9zLklzTm90RXhpc3QoZXJyKSB8fCAhZmkuSXNEaXIoKSB7CisrCQkJZXJyID0gb3MuUmVtb3ZlQWxsKHBhdGgpCisgCQkJaWYgZXJyICE9IG5pbCAmJiAhb3MuSXNOb3RFeGlzdChlcnIpIHsKKy0JCQkJcmV0dXJuIGVycgorLQkJCX0KKy0JCQlpZiBvcy5Jc05vdEV4aXN0KGVycikgfHwgIWZpLklzRGlyKCkgeworLQkJCQllcnIgPSBvcy5SZW1vdmVBbGwocGF0aCkKKy0JCQkJaWYgZXJyICE9IG5pbCAmJiAhb3MuSXNOb3RFeGlzdChlcnIpIHsKKy0JCQkJCXJldHVybiBlcnIKKy0JCQkJfQorLQkJCQllcnIgPSBvcy5Na2RpckFsbChwYXRoLCBpbmZvLk1vZGUoKSkKKy0JCQkJaWYgZXJyICE9IG5pbCB7CistCQkJCQlyZXR1cm4gZXJyCistCQkJCX0KKysJCQkJcmV0dXJuIGZhbHNlLCBlcnIKKyAJCQl9CistCistCQljYXNlIHRhci5UeXBlUmVnLCB0YXIuVHlwZVJlZ0E6CistCQkJZiwgZXJyIDo9IG9zLk9wZW5GaWxlKHBhdGgsIG9zLk9fQ1JFQVRFfG9zLk9fV1JPTkxZLCBpbmZvLk1vZGUoKSkKKysJCQllcnIgPSBvcy5Na2RpckFsbChwYXRoLCBpbmZvLk1vZGUoKSkKKyAJCQlpZiBlcnIgIT0gbmlsIHsKKy0JCQkJcmV0dXJuIGVycm9ycy5XcmFwKGVyciwgInVuYWJsZSB0byBvcGVuIGZpbGUiKQorKwkJCQlyZXR1cm4gZmFsc2UsIGVycgorIAkJCX0KKysJCX0KKyAKKy0JCQlpZiBfLCBlcnIgOj0gaW8uQ29weShmLCB0cik7IGVyciAhPSBuaWwgeworLQkJCQlmLkNsb3NlKCkKKy0JCQkJcmV0dXJuIGVycm9ycy5XcmFwKGVyciwgInVuYWJsZSB0byBjb3B5IikKKy0JCQl9CistCQkJZi5DbG9zZSgpCisrCWNhc2UgdGFyLlR5cGVSZWcsIHRhci5UeXBlUmVnQToKKysJCWYsIGVyciA6PSBvcy5PcGVuRmlsZShwYXRoLCBvcy5PX0NSRUFURXxvcy5PX1dST05MWSwgaW5mby5Nb2RlKCkpCisrCQlpZiBlcnIgIT0gbmlsIHsKKysJCQlyZXR1cm4gZmFsc2UsIGVycm9ycy5XcmFwKGVyciwgInVuYWJsZSB0byBvcGVuIGZpbGUiKQorKwkJfQorIAorLQkJY2FzZSB0YXIuVHlwZUxpbms6CistCQkJdGFyZ2V0IDo9IGZpbGVwYXRoLkpvaW4oZGVzdCwgaGRyLkxpbmtuYW1lKQorKwkJaWYgXywgZXJyIDo9IGlvLkNvcHkoZiwgcmVhZGVyKTsgZXJyICE9IG5pbCB7CisrCQkJZi5DbG9zZSgpCisrCQkJcmV0dXJuIGZhbHNlLCBlcnJvcnMuV3JhcChlcnIsICJ1bmFibGUgdG8gY29weSIpCisrCQl9CisrCQlmLkNsb3NlKCkKKyAKKy0JCQlpZiAhc3RyaW5ncy5IYXNQcmVmaXgodGFyZ2V0LCBkZXN0KSB7CistCQkJCXJldHVybiBmbXQuRXJyb3JmKCJpbnZhbGlkIGhhcmRsaW5rICVxIC0+ICVxIiwgdGFyZ2V0LCBoZHIuTGlua25hbWUpCistCQkJfQorKwljYXNlIHRhci5UeXBlTGluazoKKysJCXRhcmdldCA6PSBmaWxlcGF0aC5Kb2luKGRlc3QsIGhlYWRlci5MaW5rbmFtZSkKKyAKKy0JCQlpZiBlcnIgOj0gb3MuTGluayh0YXJnZXQsIHBhdGgpOyBlcnIgIT0gbmlsIHsKKy0JCQkJcmV0dXJuIGVycgorLQkJCX0KKysJCWlmICFzdHJpbmdzLkhhc1ByZWZpeCh0YXJnZXQsIGRlc3QpIHsKKysJCQlyZXR1cm4gZmFsc2UsIGZtdC5FcnJvcmYoImludmFsaWQgaGFyZGxpbmsgJXEgLT4gJXEiLCB0YXJnZXQsIGhlYWRlci5MaW5rbmFtZSkKKysJCX0KKyAKKy0JCWNhc2UgdGFyLlR5cGVTeW1saW5rOgorLQkJCXRhcmdldCA6PSBmaWxlcGF0aC5Kb2luKGZpbGVwYXRoLkRpcihwYXRoKSwgaGRyLkxpbmtuYW1lKQorKwkJaWYgZXJyIDo9IG9zLkxpbmsodGFyZ2V0LCBwYXRoKTsgZXJyICE9IG5pbCB7CisrCQkJcmV0dXJuIGZhbHNlLCBlcnIKKysJCX0KKyAKKy0JCQlpZiAhc3RyaW5ncy5IYXNQcmVmaXgodGFyZ2V0LCBkZXN0KSB7CistCQkJCXJldHVybiBmbXQuRXJyb3JmKCJpbnZhbGlkIHN5bWxpbmsgJXEgLT4gJXEiLCBwYXRoLCBoZHIuTGlua25hbWUpCistCQkJfQorKwljYXNlIHRhci5UeXBlU3ltbGluazoKKysJCXRhcmdldCA6PSBmaWxlcGF0aC5Kb2luKGZpbGVwYXRoLkRpcihwYXRoKSwgaGVhZGVyLkxpbmtuYW1lKQorIAorLQkJCWlmIGVyciA6PSBvcy5TeW1saW5rKGhkci5MaW5rbmFtZSwgcGF0aCk7IGVyciAhPSBuaWwgeworLQkJCQlyZXR1cm4gZXJyCistCQkJfQorLQkJY2FzZSB0YXIuVHlwZVhHbG9iYWxIZWFkZXI6CistCQkJcmV0dXJuIG5pbAorKwkJaWYgIXN0cmluZ3MuSGFzUHJlZml4KHRhcmdldCwgZGVzdCkgeworKwkJCXJldHVybiBmYWxzZSwgZm10LkVycm9yZigiaW52YWxpZCBzeW1saW5rICVxIC0+ICVxIiwgcGF0aCwgaGVhZGVyLkxpbmtuYW1lKQorIAkJfQorLQkJLy8gRGlyZWN0b3J5IG10aW1lcyBtdXN0IGJlIGhhbmRsZWQgYXQgdGhlIGVuZCB0byBhdm9pZCBmdXJ0aGVyCistCQkvLyBmaWxlIGNyZWF0aW9uIGluIHRoZW0gdG8gbW9kaWZ5IHRoZSBkaXJlY3RvcnkgbXRpbWUKKy0JCWlmIGhkci5UeXBlZmxhZyA9PSB0YXIuVHlwZURpciB7CistCQkJZGlycyA9IGFwcGVuZChkaXJzLCBoZHIpCistCQl9CistCX0KKy0JZm9yIF8sIGhkciA6PSByYW5nZSBkaXJzIHsKKy0JCXBhdGggOj0gZmlsZXBhdGguSm9pbihkZXN0LCBoZHIuTmFtZSkKKyAKKy0JCWZpbmZvIDo9IGhkci5GaWxlSW5mbygpCistCQkvLyBJIGJlbGlldmUgdGhlIG9sZCB2ZXJzaW9uIHdhcyB1c2luZyB0aW1lLk5vdygpLlVUQygpIHRvIG92ZXJjb21lIGFuCistCQkvLyBpbnZhbGlkIGVycm9yIGZyb20gY2h0aW1lcy4uLi4uYnV0IGhlcmUgd2UgbG9zZSBoZHIuQWNjZXNzVGltZSBsaWtlIHRoaXMuLi4KKy0JCWlmIGVyciA6PSBvcy5DaHRpbWVzKHBhdGgsIHRpbWUuTm93KCkuVVRDKCksIGZpbmZvLk1vZFRpbWUoKSk7IGVyciAhPSBuaWwgeworLQkJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJlcnJvciBjaGFuZ2luZyB0aW1lIikKKysJCWlmIGVyciA6PSBvcy5TeW1saW5rKGhlYWRlci5MaW5rbmFtZSwgcGF0aCk7IGVyciAhPSBuaWwgeworKwkJCXJldHVybiBmYWxzZSwgZXJyCisgCQl9CisrCWNhc2UgdGFyLlR5cGVYR2xvYmFsSGVhZGVyOgorKwkJcmV0dXJuIGZhbHNlLCBuaWwKKyAJfQorLQlyZXR1cm4gbmlsCisrCisrCXJldHVybiBmYWxzZSwgbmlsCisgfQorLS0gCisyLjQuMC41My5nODQ0MGY3NAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1pbWFnZS10b29scy9vY2ktaW1hZ2UtdG9vbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktaW1hZ2UtdG9vbHMvb2NpLWltYWdlLXRvb2xzX2dpdC5iYgppbmRleCAyOWE4OTI2Li42OGQ3M2MzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1pbWFnZS10b29scy9vY2ktaW1hZ2UtdG9vbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLWltYWdlLXRvb2xzL29jaS1pbWFnZS10b29sc19naXQuYmIKQEAgLTEsNyArMSw3IEBACiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2UtdG9vbHMiCiBTVU1NQVJZID0gIkEgY29sbGVjdGlvbiBvZiB0b29scyBmb3Igd29ya2luZyB3aXRoIHRoZSBPQ0kgaW1hZ2UgZm9ybWF0IHNwZWNpZmljYXRpb24iCiBMSUNFTlNFID0gIkFwYWNoZS0yIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTNmYzUwYTg4ZDBhMzY0MzEzZGY0YjIxZWYyMGMyOWUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PWUzZmM1MGE4OGQwYTM2NDMxM2RmNGIyMWVmMjBjMjllIgogCiBERVBFTkRTID0gIlwKICAgICAgICAgICAgb2NpLWltYWdlLXNwZWMgXApAQCAtMTIsMTEgKzEyLDEzIEBACiAgICAgICAgICAgIHNwZjEzLXBmbGFnIFwKICAgICAgICAgICAiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9pbWFnZS10b29scy5naXQiCi1TUkNSRVYgPSAiYTM1OGUwM2ZkZTRlMzYyOGJmOWZiNzY1NmJmNjQzYjYzZjk3NTYzNiIKLVBWID0gIjAuMS4wK2dpdCR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5jb250YWluZXJzL2ltYWdlLXRvb2xzLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWltYWdlLW1hbmlmZXN0LVJlY3Vyc2l2ZWx5LXJlbW92ZS1wcmUtZXhpc3RpbmctZW50cmkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1pbWFnZS1tYW5pZmVzdC1TcGxpdC11bnBhY2tMYXllckVudHJ5LWludG8taXRzLW93bi1mLnBhdGNoIgogCi1TID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gIjRhYmUxYTE2NmY5YmU5N2U4ZTcxYjFiYjRkNzU5OWNjMjkzMjMwMTEiCitQViA9ICIwLjIuMC1kZXYrZ2l0JHtTUkNQVn0iCitHT19JTVBPUlQgPSAiaW1wb3J0IgogCiBpbmhlcml0IGdvYXJjaAogaW5oZXJpdCBnbwpAQCAtMzUsMTAgKzM3LDExIEBACiAJIwogCSMgV2UgYWxzbyBuZWVkIHRvIGxpbmsgaW4gdGhlIGlwYWxsb2NhdG9yIGRpcmVjdG9yeSBhcyB0aGF0IGlzIG5vdCB1bmRlcgogCSMgYSBzcmMgZGlyZWN0b3J5LgotCWxuIC1zZm4gLiAiJHtTfS92ZW5kb3Ivc3JjIgotCW1rZGlyIC1wICIke1N9L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9pbWFnZS10b29scy8iCi0JbG4gLXNmbiAiJHtTfS9pbWFnZSIgIiR7U30vdmVuZG9yL3NyYy9naXRodWIuY29tL29wZW5jb250YWluZXJzL2ltYWdlLXRvb2xzL2ltYWdlIgotCWV4cG9ydCBHT1BBVEg9IiR7U30vdmVuZG9yIgorCWxuIC1zZm4gLiAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMiCisJbWtkaXIgLXAgIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2UtdG9vbHMvIgorCWxuIC1zZm4gIiR7U30vc3JjL2ltcG9ydC9pbWFnZSIgIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvaW1hZ2UtdG9vbHMvaW1hZ2UiCisJbG4gLXNmbiAiJHtTfS9zcmMvaW1wb3J0L3ZlcnNpb24iICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL29wZW5jb250YWluZXJzL2ltYWdlLXRvb2xzL3ZlcnNpb24iCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0L3ZlbmRvciIKIAogCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCiAJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcwpAQCAtNDcsMTUgKzUwLDE0IEBACiAJZXhwb3J0IExERkxBR1M9IiIKIAlleHBvcnQgQ0dPX0NGTEFHUz0iJHtCVUlMRFNES19DRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJZXhwb3J0IENHT19MREZMQUdTPSIke0JVSUxEU0RLX0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJY2QgJHtTfS9zcmMvaW1wb3J0CiAKLQlvZV9ydW5tYWtlIHRvb2xzCisJb2VfcnVubWFrZSB0b29sCiB9CiAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9LyR7c2JpbmRpcn0KLQlpbnN0YWxsICR7U30vb2NpLWNyZWF0ZS1ydW50aW1lLWJ1bmRsZSAke0R9LyR7c2JpbmRpcn0vCi0JaW5zdGFsbCAke1N9L29jaS1pbWFnZS12YWxpZGF0ZSAke0R9LyR7c2JpbmRpcn0vCi0JaW5zdGFsbCAke1N9L29jaS11bnBhY2sgJHtEfS8ke3NiaW5kaXJ9LworCWluc3RhbGwgJHtTfS9zcmMvaW1wb3J0L29jaS1pbWFnZS10b29sICR7RH0vJHtzYmluZGlyfS8KIH0KIAogSU5TQU5FX1NLSVBfJHtQTn0gKz0gImxkZmxhZ3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1ydW50aW1lLXNwZWMvb2NpLXJ1bnRpbWUtc3BlY19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1ydW50aW1lLXNwZWMvb2NpLXJ1bnRpbWUtc3BlY19naXQuYmIKaW5kZXggODJmODUyZi4uZGViYTdiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS1zcGVjL29jaS1ydW50aW1lLXNwZWNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXJ1bnRpbWUtc3BlYy9vY2ktcnVudGltZS1zcGVjX2dpdC5iYgpAQCAtOSw4ICs5LDggQEAKIFBLR19OQU1FID0gImdpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvJHtTUkNOQU1FfSIKIFNSQ19VUkkgPSAiZ2l0Oi8vJHtQS0dfTkFNRX0uZ2l0O2Rlc3RzdWZmaXg9Z2l0L3NyYy8ke1BLR19OQU1FfSIKIAotU1JDUkVWID0gIjRhZjBjNzJmOTJhYWNmMWI0MzYxOGQ3OTg2MTk3ZDgyMDlmYWRmMGIiCi1QViA9ICJ2MS4wLjAtcmM0K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImEzOWIxY2Q0ZmRmNzc0M2FiNzIxY2M5ZGE1OGFiYmVlMmY4NjI0ZDEiCitQViA9ICJ2MS4wLjAtcmM2K2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0zOCw0ICszOCw0IEBACiAKIEZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbG9jYWwvZ28vc3JjLyR7UEtHX05BTUV9LyoiCiAKLUNMRUFOQlJPS0VOID0gIjEiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXJ1bnRpbWUtdG9vbHMvZmlsZXMvMDAwMS1SZXZlcnQtaW1wbGVtZW50LWFkZC1zZXQtZnVuY3Rpb24tZm9yLWhvb2tzLWl0ZW1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS10b29scy9maWxlcy8wMDAxLVJldmVydC1pbXBsZW1lbnQtYWRkLXNldC1mdW5jdGlvbi1mb3ItaG9va3MtaXRlbXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlhOTMxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXJ1bnRpbWUtdG9vbHMvZmlsZXMvMDAwMS1SZXZlcnQtaW1wbGVtZW50LWFkZC1zZXQtZnVuY3Rpb24tZm9yLWhvb2tzLWl0ZW1zLnBhdGNoCkBAIC0wLDAgKzEsMjAyIEBACitGcm9tIDI5MTFlYWFiYWI5MmVjMmNkZWEyYjE3M2MzNDI5ZGI0YTUyYmVlMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjAgU2VwIDIwMTcgMjM6Mjg6NTIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJpbXBsZW1lbnQgYWRkL3NldCBmdW5jdGlvbiBmb3IgaG9va3MgaXRlbXMiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgZGYzYTQ2ZmViOTcxMzg2ZjkyMmM3YzJjMjgyMmI4ODMwMWY4N2NiMC4KKy0tLQorIGNtZC9vY2ktcnVudGltZS10b29sL2dlbmVyYXRlLmdvIHwgMTIgKysrKysrLS0tLS0tCisgZ2VuZXJhdGUvZ2VuZXJhdGUuZ28gICAgICAgICAgICAgfCA0MiArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pbXBvcnQvY21kL29jaS1ydW50aW1lLXRvb2wvZ2VuZXJhdGUuZ28gYi9zcmMvaW1wb3J0L2NtZC9vY2ktcnVudGltZS10b29sL2dlbmVyYXRlLmdvCitpbmRleCBlZDExZmU4ZjM3MjkuLjcxMjFjZTVmZTA3ZSAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvY21kL29jaS1ydW50aW1lLXRvb2wvZ2VuZXJhdGUuZ28KKysrKyBiL3NyYy9pbXBvcnQvY21kL29jaS1ydW50aW1lLXRvb2wvZ2VuZXJhdGUuZ28KK0BAIC0zNTQsNyArMzU0LDcgQEAgZnVuYyBzZXR1cFNwZWMoZyAqZ2VuZXJhdGUuR2VuZXJhdG9yLCBjb250ZXh0ICpjbGkuQ29udGV4dCkgZXJyb3IgeworIAkJZm9yIF8sIHBvc3RTdGFydEVudiA6PSByYW5nZSBwb3N0U3RhcnRFbnZzIHsKKyAJCQlwYXRoLCBlbnYsIGVyciA6PSBwYXJzZUhvb2tFbnYocG9zdFN0YXJ0RW52KQorIAkJCWlmIGVyciAhPSBuaWwgeworLQkJCQlyZXR1cm4gZXJyCisrCQkJCXJldHVybiBuaWwKKyAJCQl9CisgCQkJZy5BZGRQb3N0U3RhcnRIb29rRW52KHBhdGgsIGVudikKKyAJCX0KK0BAIC0zODcsNyArMzg3LDcgQEAgZnVuYyBzZXR1cFNwZWMoZyAqZ2VuZXJhdGUuR2VuZXJhdG9yLCBjb250ZXh0ICpjbGkuQ29udGV4dCkgZXJyb3IgeworIAkJZm9yIF8sIHBvc3RTdG9wRW52IDo9IHJhbmdlIHBvc3RTdG9wRW52cyB7CisgCQkJcGF0aCwgZW52LCBlcnIgOj0gcGFyc2VIb29rRW52KHBvc3RTdG9wRW52KQorIAkJCWlmIGVyciAhPSBuaWwgeworLQkJCQlyZXR1cm4gZXJyCisrCQkJCXJldHVybiBuaWwKKyAJCQl9CisgCQkJZy5BZGRQb3N0U3RvcEhvb2tFbnYocGF0aCwgZW52KQorIAkJfQorQEAgLTM5OCw3ICszOTgsNyBAQCBmdW5jIHNldHVwU3BlYyhnICpnZW5lcmF0ZS5HZW5lcmF0b3IsIGNvbnRleHQgKmNsaS5Db250ZXh0KSBlcnJvciB7CisgCQlmb3IgXywgcG9zdFN0b3BUaW1lb3V0IDo9IHJhbmdlIHBvc3RTdG9wVGltZW91dHMgeworIAkJCXBhdGgsIHRpbWVvdXQsIGVyciA6PSBwYXJzZUhvb2tUaW1lb3V0KHBvc3RTdG9wVGltZW91dCkKKyAJCQlpZiBlcnIgIT0gbmlsIHsKKy0JCQkJcmV0dXJuIGVycgorKwkJCQlyZXR1cm4gbmlsCisgCQkJfQorIAkJCWcuQWRkUG9zdFN0b3BIb29rVGltZW91dChwYXRoLCB0aW1lb3V0KQorIAkJfQorQEAgLTQwOSw3ICs0MDksNyBAQCBmdW5jIHNldHVwU3BlYyhnICpnZW5lcmF0ZS5HZW5lcmF0b3IsIGNvbnRleHQgKmNsaS5Db250ZXh0KSBlcnJvciB7CisgCQlmb3IgXywgaG9vayA6PSByYW5nZSBwcmVTdGFydEhvb2tzIHsKKyAJCQlwYXRoLCBhcmdzLCBlcnIgOj0gcGFyc2VIb29rKGhvb2spCisgCQkJaWYgZXJyICE9IG5pbCB7CistCQkJCXJldHVybiBlcnIKKysJCQkJcmV0dXJuIG5pbAorIAkJCX0KKyAJCQlnLkFkZFByZVN0YXJ0SG9vayhwYXRoLCBhcmdzKQorIAkJfQorQEAgLTQyMCw3ICs0MjAsNyBAQCBmdW5jIHNldHVwU3BlYyhnICpnZW5lcmF0ZS5HZW5lcmF0b3IsIGNvbnRleHQgKmNsaS5Db250ZXh0KSBlcnJvciB7CisgCQlmb3IgXywgcHJlU3RhcnRFbnYgOj0gcmFuZ2UgcHJlU3RhcnRFbnZzIHsKKyAJCQlwYXRoLCBlbnYsIGVyciA6PSBwYXJzZUhvb2tFbnYocHJlU3RhcnRFbnYpCisgCQkJaWYgZXJyICE9IG5pbCB7CistCQkJCXJldHVybiBlcnIKKysJCQkJcmV0dXJuIG5pbAorIAkJCX0KKyAJCQlnLkFkZFByZVN0YXJ0SG9va0VudihwYXRoLCBlbnYpCisgCQl9CitAQCAtNDMxLDcgKzQzMSw3IEBAIGZ1bmMgc2V0dXBTcGVjKGcgKmdlbmVyYXRlLkdlbmVyYXRvciwgY29udGV4dCAqY2xpLkNvbnRleHQpIGVycm9yIHsKKyAJCWZvciBfLCBwcmVTdGFydFRpbWVvdXQgOj0gcmFuZ2UgcHJlU3RhcnRUaW1lb3V0cyB7CisgCQkJcGF0aCwgdGltZW91dCwgZXJyIDo9IHBhcnNlSG9va1RpbWVvdXQocHJlU3RhcnRUaW1lb3V0KQorIAkJCWlmIGVyciAhPSBuaWwgeworLQkJCQlyZXR1cm4gZXJyCisrCQkJCXJldHVybiBuaWwKKyAJCQl9CisgCQkJZy5BZGRQcmVTdGFydEhvb2tUaW1lb3V0KHBhdGgsIHRpbWVvdXQpCisgCQl9CitkaWZmIC0tZ2l0IGEvc3JjL2ltcG9ydC9nZW5lcmF0ZS9nZW5lcmF0ZS5nbyBiL3NyYy9pbXBvcnQvZ2VuZXJhdGUvZ2VuZXJhdGUuZ28KK2luZGV4IDg0NzYyYzNjYmQwNS4uZWY1ZDJjYzk1YjNjIDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9nZW5lcmF0ZS9nZW5lcmF0ZS5nbworKysrIGIvc3JjL2ltcG9ydC9nZW5lcmF0ZS9nZW5lcmF0ZS5nbworQEAgLTc0NCwzOSArNzQ0LDI5IEBAIGZ1bmMgKGcgKkdlbmVyYXRvcikgQ2xlYXJQcmVTdGFydEhvb2tzKCkgeworIGZ1bmMgKGcgKkdlbmVyYXRvcikgQWRkUHJlU3RhcnRIb29rKHBhdGggc3RyaW5nLCBhcmdzIFtdc3RyaW5nKSB7CisgCWcuaW5pdFNwZWNIb29rcygpCisgCWhvb2sgOj0gcnNwZWMuSG9va3tQYXRoOiBwYXRoLCBBcmdzOiBhcmdzfQorLQlmb3IgaSwgaG9vayA6PSByYW5nZSBnLnNwZWMuSG9va3MuUHJlc3RhcnQgeworLQkJaWYgaG9vay5QYXRoID09IHBhdGggeworLQkJCWcuc3BlYy5Ib29rcy5QcmVzdGFydFtpXSA9IGhvb2sKKy0JCQlyZXR1cm4KKy0JCX0KKy0JfQorIAlnLnNwZWMuSG9va3MuUHJlc3RhcnQgPSBhcHBlbmQoZy5zcGVjLkhvb2tzLlByZXN0YXJ0LCBob29rKQorIH0KKyAKKyAvLyBBZGRQcmVTdGFydEhvb2tFbnYgYWRkcyBlbnZzIG9mIGEgcHJlc3RhcnQgaG9vayBpbnRvIGcuc3BlYy5Ib29rcy5QcmVzdGFydC4KKyBmdW5jIChnICpHZW5lcmF0b3IpIEFkZFByZVN0YXJ0SG9va0VudihwYXRoIHN0cmluZywgZW52cyBbXXN0cmluZykgeworLQlnLmluaXRTcGVjSG9va3MoKQorKwlnLmluaXRTcGVjKCkKKyAJZm9yIGksIGhvb2sgOj0gcmFuZ2UgZy5zcGVjLkhvb2tzLlByZXN0YXJ0IHsKKyAJCWlmIGhvb2suUGF0aCA9PSBwYXRoIHsKKyAJCQlnLnNwZWMuSG9va3MuUHJlc3RhcnRbaV0uRW52ID0gZW52cworIAkJCXJldHVybgorIAkJfQorIAl9CistCWhvb2sgOj0gcnNwZWMuSG9va3tQYXRoOiBwYXRoLCBFbnY6IGVudnN9CistCWcuc3BlYy5Ib29rcy5QcmVzdGFydCA9IGFwcGVuZChnLnNwZWMuSG9va3MuUHJlc3RhcnQsIGhvb2spCisgfQorIAorIC8vIEFkZFByZVN0YXJ0SG9va1RpbWVvdXQgYWRkcyB0aW1lb3V0IG9mIGEgcHJlc3RhcnQgaG9vayBpbnRvIGcuc3BlYy5Ib29rcy5QcmVzdGFydC4KKyBmdW5jIChnICpHZW5lcmF0b3IpIEFkZFByZVN0YXJ0SG9va1RpbWVvdXQocGF0aCBzdHJpbmcsIHRpbWVvdXQgaW50KSB7CistCWcuaW5pdFNwZWNIb29rcygpCisrCWcuaW5pdFNwZWMoKQorIAlmb3IgaSwgaG9vayA6PSByYW5nZSBnLnNwZWMuSG9va3MuUHJlc3RhcnQgeworIAkJaWYgaG9vay5QYXRoID09IHBhdGggeworIAkJCWcuc3BlYy5Ib29rcy5QcmVzdGFydFtpXS5UaW1lb3V0ID0gJnRpbWVvdXQKKyAJCQlyZXR1cm4KKyAJCX0KKyAJfQorLQlob29rIDo9IHJzcGVjLkhvb2t7UGF0aDogcGF0aCwgVGltZW91dDogJnRpbWVvdXR9CistCWcuc3BlYy5Ib29rcy5QcmVzdGFydCA9IGFwcGVuZChnLnNwZWMuSG9va3MuUHJlc3RhcnQsIGhvb2spCisgfQorIAorIC8vIENsZWFyUG9zdFN0b3BIb29rcyBjbGVhciBnLnNwZWMuSG9va3MuUG9zdHN0b3AuCitAQCAtNzk0LDM5ICs3ODQsMjkgQEAgZnVuYyAoZyAqR2VuZXJhdG9yKSBDbGVhclBvc3RTdG9wSG9va3MoKSB7CisgZnVuYyAoZyAqR2VuZXJhdG9yKSBBZGRQb3N0U3RvcEhvb2socGF0aCBzdHJpbmcsIGFyZ3MgW11zdHJpbmcpIHsKKyAJZy5pbml0U3BlY0hvb2tzKCkKKyAJaG9vayA6PSByc3BlYy5Ib29re1BhdGg6IHBhdGgsIEFyZ3M6IGFyZ3N9CistCWZvciBpLCBob29rIDo9IHJhbmdlIGcuc3BlYy5Ib29rcy5Qb3N0c3RvcCB7CistCQlpZiBob29rLlBhdGggPT0gcGF0aCB7CistCQkJZy5zcGVjLkhvb2tzLlBvc3RzdG9wW2ldID0gaG9vaworLQkJCXJldHVybgorLQkJfQorLQl9CisgCWcuc3BlYy5Ib29rcy5Qb3N0c3RvcCA9IGFwcGVuZChnLnNwZWMuSG9va3MuUG9zdHN0b3AsIGhvb2spCisgfQorIAorIC8vIEFkZFBvc3RTdG9wSG9va0VudiBhZGRzIGVudnMgb2YgYSBwb3N0c3RvcCBob29rIGludG8gZy5zcGVjLkhvb2tzLlBvc3RzdG9wLgorIGZ1bmMgKGcgKkdlbmVyYXRvcikgQWRkUG9zdFN0b3BIb29rRW52KHBhdGggc3RyaW5nLCBlbnZzIFtdc3RyaW5nKSB7CistCWcuaW5pdFNwZWNIb29rcygpCisrCWcuaW5pdFNwZWMoKQorIAlmb3IgaSwgaG9vayA6PSByYW5nZSBnLnNwZWMuSG9va3MuUG9zdHN0b3AgeworIAkJaWYgaG9vay5QYXRoID09IHBhdGggeworIAkJCWcuc3BlYy5Ib29rcy5Qb3N0c3RvcFtpXS5FbnYgPSBlbnZzCisgCQkJcmV0dXJuCisgCQl9CisgCX0KKy0JaG9vayA6PSByc3BlYy5Ib29re1BhdGg6IHBhdGgsIEVudjogZW52c30KKy0JZy5zcGVjLkhvb2tzLlBvc3RzdG9wID0gYXBwZW5kKGcuc3BlYy5Ib29rcy5Qb3N0c3RvcCwgaG9vaykKKyB9CisgCisgLy8gQWRkUG9zdFN0b3BIb29rVGltZW91dCBhZGRzIHRpbWVvdXQgb2YgYSBwb3N0c3RvcCBob29rIGludG8gZy5zcGVjLkhvb2tzLlBvc3RzdG9wLgorIGZ1bmMgKGcgKkdlbmVyYXRvcikgQWRkUG9zdFN0b3BIb29rVGltZW91dChwYXRoIHN0cmluZywgdGltZW91dCBpbnQpIHsKKy0JZy5pbml0U3BlY0hvb2tzKCkKKysJZy5pbml0U3BlYygpCisgCWZvciBpLCBob29rIDo9IHJhbmdlIGcuc3BlYy5Ib29rcy5Qb3N0c3RvcCB7CisgCQlpZiBob29rLlBhdGggPT0gcGF0aCB7CisgCQkJZy5zcGVjLkhvb2tzLlBvc3RzdG9wW2ldLlRpbWVvdXQgPSAmdGltZW91dAorIAkJCXJldHVybgorIAkJfQorIAl9CistCWhvb2sgOj0gcnNwZWMuSG9va3tQYXRoOiBwYXRoLCBUaW1lb3V0OiAmdGltZW91dH0KKy0JZy5zcGVjLkhvb2tzLlBvc3RzdG9wID0gYXBwZW5kKGcuc3BlYy5Ib29rcy5Qb3N0c3RvcCwgaG9vaykKKyB9CisgCisgLy8gQ2xlYXJQb3N0U3RhcnRIb29rcyBjbGVhciBnLnNwZWMuSG9va3MuUG9zdHN0YXJ0LgorQEAgLTg0NCwzOSArODI0LDI5IEBAIGZ1bmMgKGcgKkdlbmVyYXRvcikgQ2xlYXJQb3N0U3RhcnRIb29rcygpIHsKKyBmdW5jIChnICpHZW5lcmF0b3IpIEFkZFBvc3RTdGFydEhvb2socGF0aCBzdHJpbmcsIGFyZ3MgW11zdHJpbmcpIHsKKyAJZy5pbml0U3BlY0hvb2tzKCkKKyAJaG9vayA6PSByc3BlYy5Ib29re1BhdGg6IHBhdGgsIEFyZ3M6IGFyZ3N9CistCWZvciBpLCBob29rIDo9IHJhbmdlIGcuc3BlYy5Ib29rcy5Qb3N0c3RhcnQgeworLQkJaWYgaG9vay5QYXRoID09IHBhdGggeworLQkJCWcuc3BlYy5Ib29rcy5Qb3N0c3RhcnRbaV0gPSBob29rCistCQkJcmV0dXJuCistCQl9CistCX0KKyAJZy5zcGVjLkhvb2tzLlBvc3RzdGFydCA9IGFwcGVuZChnLnNwZWMuSG9va3MuUG9zdHN0YXJ0LCBob29rKQorIH0KKyAKKyAvLyBBZGRQb3N0U3RhcnRIb29rRW52IGFkZHMgZW52cyBvZiBhIHBvc3RzdGFydCBob29rIGludG8gZy5zcGVjLkhvb2tzLlBvc3RzdGFydC4KKyBmdW5jIChnICpHZW5lcmF0b3IpIEFkZFBvc3RTdGFydEhvb2tFbnYocGF0aCBzdHJpbmcsIGVudnMgW11zdHJpbmcpIHsKKy0JZy5pbml0U3BlY0hvb2tzKCkKKysJZy5pbml0U3BlYygpCisgCWZvciBpLCBob29rIDo9IHJhbmdlIGcuc3BlYy5Ib29rcy5Qb3N0c3RhcnQgeworIAkJaWYgaG9vay5QYXRoID09IHBhdGggeworIAkJCWcuc3BlYy5Ib29rcy5Qb3N0c3RhcnRbaV0uRW52ID0gZW52cworIAkJCXJldHVybgorIAkJfQorIAl9CistCWhvb2sgOj0gcnNwZWMuSG9va3tQYXRoOiBwYXRoLCBFbnY6IGVudnN9CistCWcuc3BlYy5Ib29rcy5Qb3N0c3RhcnQgPSBhcHBlbmQoZy5zcGVjLkhvb2tzLlBvc3RzdGFydCwgaG9vaykKKyB9CisgCisgLy8gQWRkUG9zdFN0YXJ0SG9va1RpbWVvdXQgYWRkcyB0aW1lb3V0IG9mIGEgcG9zdHN0YXJ0IGhvb2sgaW50byBnLnNwZWMuSG9va3MuUG9zdHN0YXJ0LgorIGZ1bmMgKGcgKkdlbmVyYXRvcikgQWRkUG9zdFN0YXJ0SG9va1RpbWVvdXQocGF0aCBzdHJpbmcsIHRpbWVvdXQgaW50KSB7CistCWcuaW5pdFNwZWNIb29rcygpCisrCWcuaW5pdFNwZWMoKQorIAlmb3IgaSwgaG9vayA6PSByYW5nZSBnLnNwZWMuSG9va3MuUG9zdHN0YXJ0IHsKKyAJCWlmIGhvb2suUGF0aCA9PSBwYXRoIHsKKyAJCQlnLnNwZWMuSG9va3MuUG9zdHN0YXJ0W2ldLlRpbWVvdXQgPSAmdGltZW91dAorIAkJCXJldHVybgorIAkJfQorIAl9CistCWhvb2sgOj0gcnNwZWMuSG9va3tQYXRoOiBwYXRoLCBUaW1lb3V0OiAmdGltZW91dH0KKy0JZy5zcGVjLkhvb2tzLlBvc3RzdGFydCA9IGFwcGVuZChnLnNwZWMuSG9va3MuUG9zdHN0YXJ0LCBob29rKQorIH0KKyAKKyAvLyBBZGRUbXBmc01vdW50IGFkZHMgYSB0bXBmcyBtb3VudCBpbnRvIGcuc3BlYy5Nb3VudHMuCistLSAKKzIuNC4wLjUzLmc4NDQwZjc0CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXJ1bnRpbWUtdG9vbHMvb2NpLXJ1bnRpbWUtdG9vbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS10b29scy9vY2ktcnVudGltZS10b29sc19naXQuYmIKaW5kZXggNGY3N2RjZS4uNjFiNjhiNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS10b29scy9vY2ktcnVudGltZS10b29sc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktcnVudGltZS10b29scy9vY2ktcnVudGltZS10b29sc19naXQuYmIKQEAgLTEsMTQgKzEsMTcgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXRvb2xzIgogU1VNTUFSWSA9ICJvY2ktcnVudGltZS10b29sIGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3Igd29ya2luZyB3aXRoIHRoZSBPQ0kgcnVudGltZSBzcGVjaWZpY2F0aW9uIgogTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIzNTVhNjFhMzk0YTUwNGRhY2RlOTAxYzk1OGY2NjJjIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ltcG9ydC9MSUNFTlNFO21kNT1iMzU1YTYxYTM5NGE1MDRkYWNkZTkwMWM5NThmNjYyYyIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtdG9vbHMuZ2l0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtdG9vbHMuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWltcGxlbWVudC1hZGQtc2V0LWZ1bmN0aW9uLWZvci1ob29rcy1pdGVtcy5wYXRjaCBcCisgICAgICAgICAgICIKIAotU1JDUkVWID0gIjAzOGIwYzk5YjgyZjNjMDhkZTMxZjZiMDllNjkzZWIyNDY0NGFmZmQiCi1QViA9ICIwLjAuMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI2ZTdkYTgxNDhmNGRlMmM5ZTljOWQzYjM0NTU3Njg5OGQ0ZjQxMmNiIgorUFYgPSAiMC4xLjArZ2l0JHtTUkNQVn0iCitHT19JTVBPUlQgPSAiaW1wb3J0IgogCi1TID0gIiR7V09SS0RJUn0vZ2l0IgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImxkZmxhZ3MiCiAKIGluaGVyaXQgZ29hcmNoCiBpbmhlcml0IGdvCkBAIC0xNiw3ICsxOSw3IEBACiBkb19jb21waWxlKCkgewogCWV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCiAJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7VEFSR0VUX1NZU30vZ28iCi0JZXhwb3J0IEdPUEFUSD0iJHtTfSIKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQ6JHtTfS9zcmMvaW1wb3J0L3ZlbmRvciIKIAogCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCiAJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcwpAQCAtMjYsMTAgKzI5LDI0IEBACiAJZXhwb3J0IENHT19DRkxBR1M9IiR7QlVJTERTREtfQ0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogCWV4cG9ydCBDR09fTERGTEFHUz0iJHtCVUlMRFNES19MREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogCisJIyBsaW5rIGZpeHVwcyBmb3IgY29tcGlsYXRpb24KKwlybSAtZiAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCWxuIC1zZiAuLyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCW1rZGlyIC1wICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXRvb2xzCisJbG4gLXNmIC4uLy4uLy4uLy4uL2dlbmVyYXRlICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXRvb2xzL2dlbmVyYXRlCisJbG4gLXNmIC4uLy4uLy4uLy4uL3ZhbGlkYXRlICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXRvb2xzL3ZhbGlkYXRlCisJbG4gLXNmIC4uLy4uLy4uLy4uL2NtZCAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS10b29scy9jbWQKKwlsbiAtc2YgLi4vLi4vLi4vLi4vZXJyb3IgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtdG9vbHMvZXJyb3IKKwlsbiAtc2YgLi4vLi4vLi4vLi4vc3BlY2Vycm9yICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXRvb2xzL3NwZWNlcnJvcgorCWNkICR7U30vc3JjL2ltcG9ydAorCiAJb2VfcnVubWFrZQogfQogCiBkb19pbnN0YWxsKCkgewogCWluc3RhbGwgLWQgJHtEfS8ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAke1N9L29jaS1ydW50aW1lLXRvb2wgJHtEfS8ke3NiaW5kaXJ9L29jaS1ydW50aW1lLXRvb2wKKwlpbnN0YWxsICR7U30vc3JjL2ltcG9ydC9vY2ktcnVudGltZS10b29sICR7RH0vJHtzYmluZGlyfS9vY2ktcnVudGltZS10b29sCiB9CisKK2RlbHRhc2sgY29tcGlsZV9wdGVzdF9iYXNlCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rLzAwMDEtc2VsaW51eC1kcm9wLXNlbGludXgtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rLzAwMDEtc2VsaW51eC1kcm9wLXNlbGludXgtc3VwcG9ydC5wYXRjaAppbmRleCA1MDdjZDA4Li41MDE2ZjZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1zeXN0ZW1kLWhvb2svb2NpLXN5c3RlbWQtaG9vay8wMDAxLXNlbGludXgtZHJvcC1zZWxpbnV4LXN1cHBvcnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktc3lzdGVtZC1ob29rL29jaS1zeXN0ZW1kLWhvb2svMDAwMS1zZWxpbnV4LWRyb3Atc2VsaW51eC1zdXBwb3J0LnBhdGNoCkBAIC01LDI1ICs1LDM0IEBACiAKIFNpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgogLS0tCi0gc3JjL3N5c3RlbWRob29rLmMgfCA5IC0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGRlbGV0aW9ucygtKQorIHNyYy9zeXN0ZW1kaG9vay5jIHwgICAxMiAtLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9zcmMvc3lzdGVtZGhvb2suYyBiL3NyYy9zeXN0ZW1kaG9vay5jCi1pbmRleCAyNzRlNWI5MTA2OTkuLmI5ZThmMWJlMzc2YSAxMDA2NDQKIC0tLSBhL3NyYy9zeXN0ZW1kaG9vay5jCiArKysgYi9zcmMvc3lzdGVtZGhvb2suYwotQEAgLTE0LDcgKzE0LDYgQEAKK0BAIC0xNiw3ICsxNiw2IEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2xpbWl0cy5oPgogLSNpbmNsdWRlIDxzZWxpbnV4L3NlbGludXguaD4KICAjaW5jbHVkZSA8eWFqbC95YWpsX3RyZWUuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgogIAotICNpbmNsdWRlICJjb25maWcuaCIKLUBAIC01MzgsMTQgKzUzNyw2IEBAIHN0YXRpYyBpbnQgcHJlc3RhcnQoY29uc3QgY2hhciAqcm9vdGZzLAorQEAgLTEyOSw5ICsxMjgsNiBAQCBzdGF0aWMgaW50IGNocGVybShjb25zdCBjaGFyICpwYXRoLCBjb25zCisgCQkJCWNsb3NlZGlyKGRpcik7CisgCQkJCXJldHVybiAtMTsKKyAJCQl9CistCQkJaWYgKHNldGZpbGVjb24gKGZ1bGxfcGF0aCwgbGFiZWwpIDwgMCkgeworLQkJCQlwcl9wZXJyb3IoIkZhaWxlZCB0byBzZXQgY29udGV4dCAlcyBvbiAlcyIsIGxhYmVsLCBmdWxsX3BhdGgpOworLQkJCX0KKyAKKyAJCQlpZiAoZG9DaG93bikgeworIAkJCQkvKiBDaGFuZ2UgdWlkIGFuZCBnaWQgdG8gc29tZXRoaW5nIHRoZSBjb250YWluZXIgY2FuIGhhbmRsZSAqLworQEAgLTQ5NiwxNCArNDkyLDYgQEAgc3RhdGljIGludCBwcmVzdGFydChjb25zdCBjaGFyICpyb290ZnMsCisgCQkJCXJldHVybiAtMTsKICAJCQl9CiAgCQl9Ci0gCistCiAtCQlpZiAoc3RyY21wKCIiLCBtb3VudF9sYWJlbCkpIHsKIC0JCQlyYyA9IHNldGZpbGVjb24oam91cm5hbF9kaXIsIChzZWN1cml0eV9jb250ZXh0X3QpbW91bnRfbGFiZWwpOwogLQkJCWlmIChyYyA8IDApIHsKQEAgLTMxLDEwICs0MCw2IEBACiAtCQkJCXJldHVybiAtMTsKIC0JCQl9CiAtCQl9Ci0tCi0gCQlpZiAobWFrZXBhdGgoY29udF9qb3VybmFsX2RpciwgMDc1NSkgPT0gLTEpIHsKLSAJCQlpZiAoZXJybm8gIT0gRUVYSVNUKSB7Ci0gCQkJCXByX3BlcnJvcigiRmFpbGVkIHRvIG1rZGlyIGNvbnRhaW5lciBqb3VybmFsIGRpcjogJXMiLCBjb250X2pvdXJuYWxfZGlyKTsKLS0tIAotMi40LjAuNTMuZzg0NDBmNzQKLQorIAorIAkJLyogQXR0ZW1wdCB0byBjcmVhcmUgL3Zhci9sb2cvam91cm5hbCBpbnNpZGUgb2Ygcm9vdGZzLAorIAkJICAgaWYgc3VjY2Vzc2Z1bCwgb3IgZGlyZWN0b3J5IGV4aXN0cywgbW91bnQgdG1wZnMgb24gdG9wIG9mCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1zeXN0ZW1kLWhvb2svb2NpLXN5c3RlbWQtaG9va19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL29jaS1zeXN0ZW1kLWhvb2svb2NpLXN5c3RlbWQtaG9va19naXQuYmIKaW5kZXggODcyODcyYS4uZmM4ODkwNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9vY2ktc3lzdGVtZC1ob29rL29jaS1zeXN0ZW1kLWhvb2tfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvb2NpLXN5c3RlbWQtaG9vay9vY2ktc3lzdGVtZC1ob29rX2dpdC5iYgpAQCAtNiw3ICs2LDcgQEAKIAogREVQRU5EUyA9ICJ5YWpsIHV0aWwtbGludXgiCiAKLVNSQ1JFViA9ICJjYTUxNWMxZjM5OWJkMGIxNmU5NGI3YzM0YWExZWYyMDQ5OGJlY2E2IgorU1JDUkVWID0gIjFhYzk1OGE0MTk3YTllYTUyMTc0ODEyZmM3ZDdkMDM2YWY4MTQwZDMiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvamVjdGF0b21pYy9vY2ktc3lzdGVtZC1ob29rIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtc2VsaW51eC1kcm9wLXNlbGludXgtc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1kcm9wLXNlbGludXgtc3VwcG9ydC5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3JpZGRsZXIvcmlkZGxlcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3JpZGRsZXIvcmlkZGxlcl9naXQuYmIKaW5kZXggYWU2YzVlYy4uOWY3ZmU2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9yaWRkbGVyL3JpZGRsZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcmlkZGxlci9yaWRkbGVyX2dpdC5iYgpAQCAtMSwxMSArMSwxMiBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2pmcmF6ZWxsZS9yaWRkbGVyIgogU1VNTUFSWSA9ICJDb252ZXJ0IGBkb2NrZXIgaW5zcGVjdGAgdG8gb3BlbmNvbnRhaW5lcnMgKE9DSSBjb21wYXRpYmxlKSBydW5jIHNwZWMuIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMGNlNGM2YTRmMzJkNmVlNGE2OGUzYTc1MDZkYjNmMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9pbXBvcnQvTElDRU5TRTttZDU9MjBjZTRjNmE0ZjMyZDZlZTRhNjhlM2E3NTA2ZGIzZjEiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qZnJhemVsbGUvcmlkZGxlcjticmFuY2g9bWFzdGVyIgogU1JDUkVWID0gIjIzYmVmYTBiMjMyODc3YjViNTAyYjgyOGUyNDE2MWQ4MDFiZDY3ZjYiCiBQViA9ICIwLjEuMCtnaXQke1NSQ1BWfSIKK0dPX0lNUE9SVCA9ICJpbXBvcnQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTI2LDEwICsyNywxMCBAQAogCSMKIAkjIFdlIGFsc28gbmVlZCB0byBsaW5rIGluIHRoZSBpcGFsbG9jYXRvciBkaXJlY3RvcnkgYXMgdGhhdCBpcyBub3QgdW5kZXIKIAkjIGEgc3JjIGRpcmVjdG9yeS4KLQlsbiAtc2ZuIC4gIiR7U30vdmVuZG9yL3NyYyIKLQlta2RpciAtcCAiJHtTfS92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vamVzc2ZyYXovcmlkZGxlciIKLQlsbiAtc2ZuICIke1N9L3BhcnNlIiAiJHtTfS92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vamVzc2ZyYXovcmlkZGxlci9wYXJzZSIKLQlleHBvcnQgR09QQVRIPSIke1N9L3ZlbmRvciIKKwlsbiAtc2ZuIC4gIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjIgorCW1rZGlyIC1wICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL2plc3NmcmF6L3JpZGRsZXIiCisJbG4gLXNmbiAiJHtTfS9zcmMvaW1wb3J0L3BhcnNlIiAiJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9qZXNzZnJhei9yaWRkbGVyL3BhcnNlIgorCWV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydC92ZW5kb3IiCiAKIAkjIFBhc3MgdGhlIG5lZWRlZCBjZmxhZ3MvbGRmbGFncyBzbyB0aGF0IGNnbwogCSMgY2FuIGZpbmQgdGhlIG5lZWRlZCBoZWFkZXJzIGZpbGVzIGFuZCBsaWJyYXJpZXMKQEAgLTM4LDExICszOSwxMiBAQAogCWV4cG9ydCBMREZMQUdTPSIiCiAJZXhwb3J0IENHT19DRkxBR1M9IiR7QlVJTERTREtfQ0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogCWV4cG9ydCBDR09fTERGTEFHUz0iJHtCVUlMRFNES19MREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWNkICR7U30vc3JjL2ltcG9ydAogCiAJb2VfcnVubWFrZSBzdGF0aWMKIH0KIAogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1kICR7RH0vJHtzYmluZGlyfQotCWluc3RhbGwgJHtTfS9yaWRkbGVyICR7RH0vJHtzYmluZGlyfS9yaWRkbGVyCisJaW5zdGFsbCAke1N9L3NyYy9pbXBvcnQvcmlkZGxlciAke0R9LyR7c2JpbmRpcn0vcmlkZGxlcgogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtRGlzYWJsZS1idWlsZGluZy1yZWN2dHR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtRGlzYWJsZS1idWlsZGluZy1yZWN2dHR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMWY2OTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1EaXNhYmxlLWJ1aWxkaW5nLXJlY3Z0dHkucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBhYTJmYzdiMGVhY2JhNjExNzVmMDgzY2M4ZDhhZGMyMzNiY2QwNTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK0RhdGU6IFRodSwgMTIgT2N0IDIwMTcgMTE6MzQ6MjQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBidWlsZGluZyByZWN2dHR5CisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+CitVcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIE1ha2VmaWxlIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDBmY2Y1MDguLjI0ZjQ3ZGMgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L01ha2VmaWxlCisrKysgYi9zcmMvaW1wb3J0L01ha2VmaWxlCitAQCAtMzgsNyArMzgsNiBAQCBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHk6ICQoU09VUkNFUykKKyAKKyBzdGF0aWM6ICQoU09VUkNFUykKKyAJQ0dPX0VOQUJMRUQ9MSAkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyBzdGF0aWNfYnVpbGQiIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtbyBydW5jIC4KKy0JQ0dPX0VOQUJMRUQ9MSAkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyBzdGF0aWNfYnVpbGQiIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5CisgCisgcmVsZWFzZToKKyAJQGZsYWdfbGlzdD0oc2VjY29tcCBzZWxpbnV4IGFwcGFybW9yIHN0YXRpYyk7IFwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtVXBkYXRlLXRvLXJ1bnRpbWUtc3BlYy0xOThmMjNmODI3ZWVhMzk3ZDQzMzFkN2ViMDQ4ZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLVVwZGF0ZS10by1ydW50aW1lLXNwZWMtMTk4ZjIzZjgyN2VlYTM5N2Q0MzMxZDdlYjA0OGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNjNzZmYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLVVwZGF0ZS10by1ydW50aW1lLXNwZWMtMTk4ZjIzZjgyN2VlYTM5N2Q0MzMxZDdlYjA0OGQucGF0Y2gKQEAgLTAsMCArMSw4OSBAQAorRnJvbSBlOGVmNjAyNWE0ZjQ4NjIwYmFmOTE3MzdjZDM3ZWI1ZTZhNDBmNDhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzdGluIENvcm1hY2sgPGp1c3Rpbi5jb3JtYWNrQGRvY2tlci5jb20+CitEYXRlOiBGcmksIDIzIEp1biAyMDE3IDE3OjE0OjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBVcGRhdGUgdG8gcnVudGltZSBzcGVjCisgMTk4ZjIzZjgyN2VlYTM5N2Q0MzMxZDdlYjA0OGQ5ZDRjN2ZmN2JlZQorCitVcGRhdGVzIG1lbW9yeSBsaW1pdHMgdG8gYmUgaW50NjQsIGFuZCByZW1vdmVzIFBsYXRmb3JtIGZyb20gc3BlYy4KKworU2lnbmVkLW9mZi1ieTogSnVzdGluIENvcm1hY2sgPGp1c3Rpbi5jb3JtYWNrQGRvY2tlci5jb20+CistLS0KKyB2ZW5kb3IuY29uZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgLi4uL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYy9zcGVjcy1nby9jb25maWcuZ28gfCAyMyArKysrKystLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdmVuZG9yLmNvbmYgYi92ZW5kb3IuY29uZgoraW5kZXggZTIzZTdlYTcuLjA5YThhOTI0IDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC92ZW5kb3IuY29uZgorKysrIGIvc3JjL2ltcG9ydC92ZW5kb3IuY29uZgorQEAgLTEsNyArMSw3IEBACisgIyBPQ0kgcnVudGltZS1zcGVjLiBXaGVuIHVwZGF0aW5nIHRoaXMsIG1ha2Ugc3VyZSB5b3UgdXNlIGEgdmVyc2lvbiB0YWcgcmF0aGVyCisgIyB0aGFuIGEgY29tbWl0IElEIHNvIGl0J3MgbXVjaCBtb3JlIG9idmlvdXMgd2hhdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIHdlIGFyZQorICMgdXNpbmcuCistZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXNwZWMgMjM5YzRlNDRmMmE2MTJlZDg1ZjZkYjljNjYyNDdhYTMzZjQzN2U5MQorK2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjIDE5OGYyM2Y4MjdlZWEzOTdkNDMzMWQ3ZWIwNDhkOWQ0YzdmZjdiZWUKKyAjIENvcmUgbGliY29udGFpbmVyIGZ1bmN0aW9uYWxpdHkuCisgZ2l0aHViLmNvbS9tcnVuYWxwL2ZpbGV1dGlscyBlZDg2OWIwMjk2NzRjMGU5Y2U0YzBkZmE3ODE0MDVjMmQ5OTQ2ZDA4CisgZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9zZWxpbnV4IHYxLjAuMC1yYzEKK2RpZmYgLS1naXQgYS92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXNwZWMvc3BlY3MtZ28vY29uZmlnLmdvIGIvdmVuZG9yL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3NwZWNzLWdvL2NvbmZpZy5nbworaW5kZXggOGJmOGQ5MjQuLjY4YWIxMTJlIDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW50aW1lLXNwZWMvc3BlY3MtZ28vY29uZmlnLmdvCisrKysgYi9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYy9zcGVjcy1nby9jb25maWcuZ28KK0BAIC02LDggKzYsNiBAQCBpbXBvcnQgIm9zIgorIHR5cGUgU3BlYyBzdHJ1Y3QgeworIAkvLyBWZXJzaW9uIG9mIHRoZSBPcGVuIENvbnRhaW5lciBSdW50aW1lIFNwZWNpZmljYXRpb24gd2l0aCB3aGljaCB0aGUgYnVuZGxlIGNvbXBsaWVzLgorIAlWZXJzaW9uIHN0cmluZyBganNvbjoib2NpVmVyc2lvbiJgCistCS8vIFBsYXRmb3JtIHNwZWNpZmllcyB0aGUgY29uZmlndXJhdGlvbidzIHRhcmdldCBwbGF0Zm9ybS4KKy0JUGxhdGZvcm0gUGxhdGZvcm0gYGpzb246InBsYXRmb3JtImAKKyAJLy8gUHJvY2VzcyBjb25maWd1cmVzIHRoZSBjb250YWluZXIgcHJvY2Vzcy4KKyAJUHJvY2VzcyAqUHJvY2VzcyBganNvbjoicHJvY2VzcyxvbWl0ZW1wdHkiYAorIAkvLyBSb290IGNvbmZpZ3VyZXMgdGhlIGNvbnRhaW5lcidzIHJvb3QgZmlsZXN5c3RlbS4KK0BAIC0xMDEsMTUgKzk5LDYgQEAgdHlwZSBSb290IHN0cnVjdCB7CisgCVJlYWRvbmx5IGJvb2wgYGpzb246InJlYWRvbmx5LG9taXRlbXB0eSJgCisgfQorIAorLS8vIFBsYXRmb3JtIHNwZWNpZmllcyBPUyBhbmQgYXJjaCBpbmZvcm1hdGlvbiBmb3IgdGhlIGhvc3Qgc3lzdGVtIHRoYXQgdGhlIGNvbnRhaW5lcgorLS8vIGlzIGNyZWF0ZWQgZm9yLgorLXR5cGUgUGxhdGZvcm0gc3RydWN0IHsKKy0JLy8gT1MgaXMgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCistCU9TIHN0cmluZyBganNvbjoib3MiYAorLQkvLyBBcmNoIGlzIHRoZSBhcmNoaXRlY3R1cmUKKy0JQXJjaCBzdHJpbmcgYGpzb246ImFyY2giYAorLX0KKy0KKyAvLyBNb3VudCBzcGVjaWZpZXMgYSBtb3VudCBmb3IgYSBjb250YWluZXIuCisgdHlwZSBNb3VudCBzdHJ1Y3QgeworIAkvLyBEZXN0aW5hdGlvbiBpcyB0aGUgYWJzb2x1dGUgcGF0aCB3aGVyZSB0aGUgbW91bnQgd2lsbCBiZSBwbGFjZWQgaW4gdGhlIGNvbnRhaW5lci4KK0BAIC0yODQsMTUgKzI3MywxNSBAQCB0eXBlIExpbnV4QmxvY2tJTyBzdHJ1Y3QgeworIC8vIExpbnV4TWVtb3J5IGZvciBMaW51eCBjZ3JvdXAgJ21lbW9yeScgcmVzb3VyY2UgbWFuYWdlbWVudAorIHR5cGUgTGludXhNZW1vcnkgc3RydWN0IHsKKyAJLy8gTWVtb3J5IGxpbWl0IChpbiBieXRlcykuCistCUxpbWl0ICp1aW50NjQgYGpzb246ImxpbWl0LG9taXRlbXB0eSJgCisrCUxpbWl0ICppbnQ2NCBganNvbjoibGltaXQsb21pdGVtcHR5ImAKKyAJLy8gTWVtb3J5IHJlc2VydmF0aW9uIG9yIHNvZnRfbGltaXQgKGluIGJ5dGVzKS4KKy0JUmVzZXJ2YXRpb24gKnVpbnQ2NCBganNvbjoicmVzZXJ2YXRpb24sb21pdGVtcHR5ImAKKysJUmVzZXJ2YXRpb24gKmludDY0IGBqc29uOiJyZXNlcnZhdGlvbixvbWl0ZW1wdHkiYAorIAkvLyBUb3RhbCBtZW1vcnkgbGltaXQgKG1lbW9yeSArIHN3YXApLgorLQlTd2FwICp1aW50NjQgYGpzb246InN3YXAsb21pdGVtcHR5ImAKKysJU3dhcCAqaW50NjQgYGpzb246InN3YXAsb21pdGVtcHR5ImAKKyAJLy8gS2VybmVsIG1lbW9yeSBsaW1pdCAoaW4gYnl0ZXMpLgorLQlLZXJuZWwgKnVpbnQ2NCBganNvbjoia2VybmVsLG9taXRlbXB0eSJgCisrCUtlcm5lbCAqaW50NjQgYGpzb246Imtlcm5lbCxvbWl0ZW1wdHkiYAorIAkvLyBLZXJuZWwgbWVtb3J5IGxpbWl0IGZvciB0Y3AgKGluIGJ5dGVzKQorLQlLZXJuZWxUQ1AgKnVpbnQ2NCBganNvbjoia2VybmVsVENQLG9taXRlbXB0eSJgCisrCUtlcm5lbFRDUCAqaW50NjQgYGpzb246Imtlcm5lbFRDUCxvbWl0ZW1wdHkiYAorIAkvLyBIb3cgYWdncmVzc2l2ZSB0aGUga2VybmVsIHdpbGwgc3dhcCBtZW1vcnkgcGFnZXMuCisgCVN3YXBwaW5lc3MgKnVpbnQ2NCBganNvbjoic3dhcHBpbmVzcyxvbWl0ZW1wdHkiYAorIH0KK0BAIC00ODYsNyArNDc1LDcgQEAgdHlwZSBXaW5kb3dzTmV0d29yayBzdHJ1Y3QgeworIAlFbmRwb2ludExpc3QgW11zdHJpbmcgYGpzb246ImVuZHBvaW50TGlzdCxvbWl0ZW1wdHkiYAorIAkvLyBTcGVjaWZpZXMgaWYgdW5xdWFsaWZpZWQgRE5TIG5hbWUgcmVzb2x1dGlvbiBpcyBhbGxvd2VkLgorIAlBbGxvd1VucXVhbGlmaWVkRE5TUXVlcnkgYm9vbCBganNvbjoiYWxsb3dVbnF1YWxpZmllZEROU1F1ZXJ5LG9taXRlbXB0eSJgCistCS8vIENvbW1hIHNlcGVyYXRlZCBsaXN0IG9mIEROUyBzdWZmaXhlcyB0byB1c2UgZm9yIG5hbWUgcmVzb2x1dGlvbi4KKysJLy8gQ29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgRE5TIHN1ZmZpeGVzIHRvIHVzZSBmb3IgbmFtZSByZXNvbHV0aW9uLgorIAlETlNTZWFyY2hMaXN0IFtdc3RyaW5nIGBqc29uOiJETlNTZWFyY2hMaXN0LG9taXRlbXB0eSJgCisgCS8vIE5hbWUgKElEKSBvZiB0aGUgY29udGFpbmVyIHRoYXQgd2Ugd2lsbCBzaGFyZSB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrLgorIAlOZXR3b3JrU2hhcmVkQ29udGFpbmVyTmFtZSBzdHJpbmcgYGpzb246Im5ldHdvcmtTaGFyZWRDb250YWluZXJOYW1lLG9taXRlbXB0eSJgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNTE3MWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaApAQCAtMCwwICsxLDg1IEBACitGcm9tIDAzN2MyMGIzYjNlZjVlOWVhZDAyODJhYTY0ZjliODhjMGMxODkzNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorRGF0ZTogVGh1LCA1IE9jdCAyMDE3IDEzOjE0OjQwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBjb3JyZWN0IGdvIGNyb3NzLWNvbXBpbGVyCisKK1dlIG5lZWQgdG8gdXNlICcke0dPfScgYXMgc2V0IGJ5IE9wZW5FbWJlZGRlZCBpbnN0ZWFkIG9mIGp1c3QgJ2dvJy4gSnVzdCB1c2luZworJ2dvJyB3aWxsIGludm9rZSBnby1uYXRpdmUuCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+CitVcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIE1ha2VmaWxlIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA4MTE3ODkyLi4wZmNmNTA4IDEwMDY0NAorLS0tIGEvc3JjL2ltcG9ydC9NYWtlZmlsZQorKysrIGIvc3JjL2ltcG9ydC9NYWtlZmlsZQorQEAgLTI3LDE4ICsyNywxOCBAQCBTSEVMTCA6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYmFzaCAyPi9kZXYvbnVsbCkKKyAuREVGQVVMVDogcnVuYworIAorIHJ1bmM6ICQoU09VUkNFUykKKy0JZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBydW5jIC4KKysJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBydW5jIC4KKyAKKyBhbGw6IHJ1bmMgcmVjdnR0eQorIAorIHJlY3Z0dHk6IGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eQorIAorIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eTogJChTT1VSQ0VTKQorLQlnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkKEJVSUxEVEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKKysJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5CisgCisgc3RhdGljOiAkKFNPVVJDRVMpCistCUNHT19FTkFCTEVEPTEgZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gcnVuYyAuCistCUNHT19FTkFCTEVEPTEgZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28gc3RhdGljX2J1aWxkIiAtbGRmbGFncyAiLXcgLWV4dGxkZmxhZ3MgLXN0YXRpYyAtWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQorKwlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIHJ1bmMgLgorKwlDR09fRU5BQkxFRD0xICQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKKyAKKyByZWxlYXNlOgorIAlAZmxhZ19saXN0PShzZWNjb21wIHNlbGludXggYXBwYXJtb3Igc3RhdGljKTsgXAorQEAgLTYyLDE1ICs2MiwxNSBAQCByZWxlYXNlOgorIAkJCUNHT19FTkFCTEVEPTE7IFwKKyAJCX07IFwKKyAJCWVjaG8gIkJ1aWxkaW5nIHRhcmdldDogJCRvdXRwdXQiOyBcCistCQlnbyBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtbGRmbGFncyAiJCRsZGZsYWdzICQoRVhUUkFfTERGTEFHUykiIC10YWdzICIkJHRhZ3MiIC1vICIkJG91dHB1dCIgLjsgXAorKwkJJChHTykgYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIiQkbGRmbGFncyAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJCR0YWdzIiAtbyAiJCRvdXRwdXQiIC47IFwKKyAJZG9uZQorIAorIGRidWlsZDogcnVuY2ltYWdlCisgCWRvY2tlciBydW4gLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpIC0tcHJpdmlsZWdlZCAkKFJVTkNfSU1BR0UpIG1ha2UgY2xlYW4gYWxsCisgCisgbGludDoKKy0JZ28gdmV0ICQoYWxscGFja2FnZXMpCistCWdvIGZtdCAkKGFsbHBhY2thZ2VzKQorKwkkKEdPKSB2ZXQgJChhbGxwYWNrYWdlcykKKysJJChHTykgZm10ICQoYWxscGFja2FnZXMpCisgCisgbWFuOgorIAltYW4vbWQybWFuLWFsbC5zaAorQEAgLTg4LDcgKzg4LDcgQEAgdW5pdHRlc3Q6IHJ1bmNpbWFnZQorIAlkb2NrZXIgcnVuIC1lIFRFU1RGTEFHUyAtdCAtLXByaXZpbGVnZWQgLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpICQoUlVOQ19JTUFHRSkgbWFrZSBsb2NhbHVuaXR0ZXN0CisgCisgbG9jYWx1bml0dGVzdDogYWxsCistCWdvIHRlc3QgLXRpbWVvdXQgM20gLXRhZ3MgIiQoQlVJTERUQUdTKSIgJHtURVNURkxBR1N9IC12ICQoYWxscGFja2FnZXMpCisrCSQoR08pIHRlc3QgLXRpbWVvdXQgM20gLXRhZ3MgIiQoQlVJTERUQUdTKSIgJHtURVNURkxBR1N9IC12ICQoYWxscGFja2FnZXMpCisgCisgaW50ZWdyYXRpb246IHJ1bmNpbWFnZQorIAlkb2NrZXIgcnVuIC1lIFRFU1RGTEFHUyAtdCAtLXByaXZpbGVnZWQgLS1ybSAtdiAkKENVUkRJUik6L2dvL3NyYy8kKFBST0pFQ1QpICQoUlVOQ19JTUFHRSkgbWFrZSBsb2NhbGludGVncmF0aW9uCitAQCAtMTM0LDEwICsxMzQsMTAgQEAgY2xlYW46CisgdmFsaWRhdGU6CisgCXNjcmlwdC92YWxpZGF0ZS1nb2ZtdAorIAlzY3JpcHQvdmFsaWRhdGUtc2hmbXQKKy0JZ28gdmV0ICQoYWxscGFja2FnZXMpCisrCSQoR08pIHZldCAkKGFsbHBhY2thZ2VzKQorIAorIGNpOiB2YWxpZGF0ZSBsb2NhbHRlc3QKKyAKKyAjIG1lbW9pemUgYWxscGFja2FnZXMsIHNvIHRoYXQgaXQncyBleGVjdXRlZCBvbmx5IG9uY2UgYW5kIG9ubHkgaWYgdXNlZAorLV9hbGxwYWNrYWdlcyA9ICQoc2hlbGwgZ28gbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQorK19hbGxwYWNrYWdlcyA9ICQoc2hlbGwgJChHTykgbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQorIGFsbHBhY2thZ2VzID0gJChpZiAkKF9fYWxscGFja2FnZXMpLCwkKGV2YWwgX19hbGxwYWNrYWdlcyA6PSAkJChfYWxscGFja2FnZXMpKSkkKF9fYWxscGFja2FnZXMpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLXJ1bmMtQWRkLWNvbnNvbGUtc29ja2V0LWRldi1udWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDEtcnVuYy1BZGQtY29uc29sZS1zb2NrZXQtZGV2LW51bGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhjMTI1MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAxLXJ1bmMtQWRkLWNvbnNvbGUtc29ja2V0LWRldi1udWxsLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gM2ZmZjJhMzUwNWZiYTFkMWZmMDA3NGVkZmYxNTcwOGE3N2Y2Y2ZhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDEzOjM1OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHJ1bmM6IEFkZCAtLWNvbnNvbGUtc29ja2V0PS9kZXYvbnVsbAorCitUaGlzIGFsbG93cyBmb3Igc2V0dGluZyB1cCBhIGRldGFjaGVkIHNlc3Npb24gd2hlcmUgeW91IGRvIG5vdCB3YW50IHRvCitzZXQgdGhlIHRlcm1pbmFsIHRvIGZhbHNlIGluIHRoZSBjb25maWcuanNvbi4gIE1vcmUgb3IgbGVzcyB0aGlzIGlzIGEKK3J1bnRpbWUgb3ZlcnJpZGUuCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CistLS0KKyB1dGlsc19saW51eC5nbyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS91dGlsc19saW51eC5nbyBiL3V0aWxzX2xpbnV4LmdvCitpbmRleCA4MDg1ZjdmZS4uZTZkMzFiMzUgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L3V0aWxzX2xpbnV4LmdvCisrKysgYi9zcmMvaW1wb3J0L3V0aWxzX2xpbnV4LmdvCitAQCAtMjI3LDYgKzIyNywxMSBAQCB0eXBlIHJ1bm5lciBzdHJ1Y3QgeworIH0KKyAKKyBmdW5jIChyICpydW5uZXIpIHJ1bihjb25maWcgKnNwZWNzLlByb2Nlc3MpIChpbnQsIGVycm9yKSB7CisrCWlmIChyLmNvbnNvbGVTb2NrZXQgPT0gIi9kZXYvbnVsbCIpIHsKKysJCXIuZGV0YWNoID0gZmFsc2UKKysJCXIuY29uc29sZVNvY2tldCA9ICIiCisrCQljb25maWcuVGVybWluYWwgPSBmYWxzZQorKwl9CisgCWlmIGVyciA6PSByLmNoZWNrVGVybWluYWwoY29uZmlnKTsgZXJyICE9IG5pbCB7CisgCQlyLmRlc3Ryb3koKQorIAkJcmV0dXJuIC0xLCBlcnIKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAyLVJlbW92ZS1QbGF0Zm9ybS1hcy1uby1sb25nZXItaW4tT0NJLXNwZWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMi1SZW1vdmUtUGxhdGZvcm0tYXMtbm8tbG9uZ2VyLWluLU9DSS1zcGVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NzBkZWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXIvMDAwMi1SZW1vdmUtUGxhdGZvcm0tYXMtbm8tbG9uZ2VyLWluLU9DSS1zcGVjLnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK0Zyb20gZTExNDYxODJhOGNlYmI1YTYxMzNhOWUyOThhNWU0YWNmOTk2NTJlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3RpbiBDb3JtYWNrIDxqdXN0aW4uY29ybWFja0Bkb2NrZXIuY29tPgorRGF0ZTogRnJpLCAyMyBKdW4gMjAxNyAxNzoxNjowOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvM10gUmVtb3ZlIFBsYXRmb3JtIGFzIG5vIGxvbmdlciBpbiBPQ0kgc3BlYworCitUaGlzIHdhcyBuZXZlciB1c2VkLCBqdXN0IHZhbGlkYXRlZCwgc28gd2FzIHJlbW92ZWQgZnJvbSBzcGVjLgorCitTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gQ29ybWFjayA8anVzdGluLmNvcm1hY2tAZG9ja2VyLmNvbT4KKy0tLQorIGxpYmNvbnRhaW5lci9zcGVjY29udi9leGFtcGxlLmdvIHwgIDUgLS0tLS0KKyBzcGVjLmdvICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0IC0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNvbnRhaW5lci9zcGVjY29udi9leGFtcGxlLmdvIGIvbGliY29udGFpbmVyL3NwZWNjb252L2V4YW1wbGUuZ28KK2luZGV4IDMzMTM0MTE2Li5kNjYyMTE5NCAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvbGliY29udGFpbmVyL3NwZWNjb252L2V4YW1wbGUuZ28KKysrKyBiL3NyYy9pbXBvcnQvbGliY29udGFpbmVyL3NwZWNjb252L2V4YW1wbGUuZ28KK0BAIC0yLDcgKzIsNiBAQCBwYWNrYWdlIHNwZWNjb252CisgCisgaW1wb3J0ICgKKyAJIm9zIgorLQkicnVudGltZSIKKyAJInN0cmluZ3MiCisgCisgCSJnaXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYy9zcGVjcy1nbyIKK0BAIC0xNSwxMCArMTQsNiBAQCBmdW5jIHNQdHIocyBzdHJpbmcpICpzdHJpbmcgeyByZXR1cm4gJnMgfQorIGZ1bmMgRXhhbXBsZSgpICpzcGVjcy5TcGVjIHsKKyAJcmV0dXJuICZzcGVjcy5TcGVjeworIAkJVmVyc2lvbjogc3BlY3MuVmVyc2lvbiwKKy0JCVBsYXRmb3JtOiBzcGVjcy5QbGF0Zm9ybXsKKy0JCQlPUzogICBydW50aW1lLkdPT1MsCistCQkJQXJjaDogcnVudGltZS5HT0FSQ0gsCistCQl9LAorIAkJUm9vdDogc3BlY3MuUm9vdHsKKyAJCQlQYXRoOiAgICAgInJvb3RmcyIsCisgCQkJUmVhZG9ubHk6IHRydWUsCitkaWZmIC0tZ2l0IGEvc3BlYy5nbyBiL3NwZWMuZ28KK2luZGV4IDkyZDM4ZjU3Li44NzY5MzdkMiAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvc3BlYy5nbworKysrIGIvc3JjL2ltcG9ydC9zcGVjLmdvCitAQCAtNyw3ICs3LDYgQEAgaW1wb3J0ICgKKyAJImZtdCIKKyAJImlvL2lvdXRpbCIKKyAJIm9zIgorLQkicnVudGltZSIKKyAKKyAJImdpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYy9saWJjb250YWluZXIvY29uZmlncyIKKyAJImdpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYy9saWJjb250YWluZXIvc3BlY2NvbnYiCitAQCAtMTMxLDkgKzEzMCw2IEBAIGZ1bmMgbG9hZFNwZWMoY1BhdGggc3RyaW5nKSAoc3BlYyAqc3BlY3MuU3BlYywgZXJyIGVycm9yKSB7CisgCWlmIGVyciA9IGpzb24uTmV3RGVjb2RlcihjZikuRGVjb2RlKCZzcGVjKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gbmlsLCBlcnIKKyAJfQorLQlpZiBlcnIgPSB2YWxpZGF0ZVBsYXRmb3JtKCZzcGVjLlBsYXRmb3JtKTsgZXJyICE9IG5pbCB7CistCQlyZXR1cm4gbmlsLCBlcnIKKy0JfQorIAlyZXR1cm4gc3BlYywgdmFsaWRhdGVQcm9jZXNzU3BlYyhzcGVjLlByb2Nlc3MpCisgfQorIAorQEAgLTE0OCwxMyArMTQ0LDMgQEAgZnVuYyBjcmVhdGVMaWJDb250YWluZXJSbGltaXQocmxpbWl0IHNwZWNzLkxpbnV4UmxpbWl0KSAoY29uZmlncy5SbGltaXQsIGVycm9yKQorIAkJU29mdDogcmxpbWl0LlNvZnQsCisgCX0sIG5pbAorIH0KKy0KKy1mdW5jIHZhbGlkYXRlUGxhdGZvcm0ocGxhdGZvcm0gKnNwZWNzLlBsYXRmb3JtKSBlcnJvciB7CistCWlmIHBsYXRmb3JtLk9TICE9IHJ1bnRpbWUuR09PUyB7CistCQlyZXR1cm4gZm10LkVycm9yZigidGFyZ2V0IG9zICVzIG1pc21hdGNoIHdpdGggY3VycmVudCBvcyAlcyIsIHBsYXRmb3JtLk9TLCBydW50aW1lLkdPT1MpCistCX0KKy0JaWYgcGxhdGZvcm0uQXJjaCAhPSBydW50aW1lLkdPQVJDSCB7CistCQlyZXR1cm4gZm10LkVycm9yZigidGFyZ2V0IGFyY2ggJXMgbWlzbWF0Y2ggd2l0aCBjdXJyZW50IGFyY2ggJXMiLCBwbGF0Zm9ybS5BcmNoLCBydW50aW1lLkdPQVJDSCkKKy0JfQorLQlyZXR1cm4gbmlsCistfQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyLzAwMDMtVXBkYXRlLW1lbW9yeS1zcGVjcy10by11c2UtaW50NjQtbm90LXVpbnQ2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAzLVVwZGF0ZS1tZW1vcnktc3BlY3MtdG8tdXNlLWludDY0LW5vdC11aW50NjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBhOWI3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlci8wMDAzLVVwZGF0ZS1tZW1vcnktc3BlY3MtdG8tdXNlLWludDY0LW5vdC11aW50NjQucGF0Y2gKQEAgLTAsMCArMSwxOTQgQEAKK0Zyb20gM2Q5MDc0ZWFkMzNhNWMyN2RjMjBiYjQ5NDU3YzY5YzZkMmFlNmI1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3RpbiBDb3JtYWNrIDxqdXN0aW4uY29ybWFja0Bkb2NrZXIuY29tPgorRGF0ZTogRnJpLCAyMyBKdW4gMjAxNyAxNzoxNzowMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvM10gVXBkYXRlIG1lbW9yeSBzcGVjcyB0byB1c2UgaW50NjQgbm90IHVpbnQ2NAorCityZXBsYWNlICMxNDkyICMxNDk0CitmaXggIzE0MjIKKworU2luY2UgaHR0cHM6Ly9naXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bnRpbWUtc3BlYy9wdWxsLzg3NiB0aGUgbWVtb3J5CitzcGVjaWZpY2F0aW9ucyBhcmUgbm93IGBpbnQ2NGAsIGFzIHRoYXQgYmV0dGVyIG1hdGNoZXMgdGhlIHZpc2libGUgaW50ZXJmYWNlIHdoZXJlCitgLTFgIGlzIGEgdmFsaWQgdmFsdWUuIE90aGVyd2lzZSBmaW5kaW5nIHRoZSBjb3JyZWN0IHZhbHVlIHdhcyBkaWZmaWN1bHQgYXMgaXQKK3dhcyBrZXJuZWwgZGVwZW5kZW50LgorCitTaWduZWQtb2ZmLWJ5OiBKdXN0aW4gQ29ybWFjayA8anVzdGluLmNvcm1hY2tAZG9ja2VyLmNvbT4KKy0tLQorIGxpYmNvbnRhaW5lci9jZ3JvdXBzL2ZzL21lbW9yeS5nbyAgICB8IDM2ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQorIGxpYmNvbnRhaW5lci9jb25maWdzL2Nncm91cF9saW51eC5nbyB8IDEwICsrKysrLS0tLS0KKyB1cGRhdGUuZ28gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJjb250YWluZXIvY2dyb3Vwcy9mcy9tZW1vcnkuZ28gYi9saWJjb250YWluZXIvY2dyb3Vwcy9mcy9tZW1vcnkuZ28KK2luZGV4IGRhMmNjOWY4Li5iNzM5YzYzMSAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvbGliY29udGFpbmVyL2Nncm91cHMvZnMvbWVtb3J5LmdvCisrKysgYi9zcmMvaW1wb3J0L2xpYmNvbnRhaW5lci9jZ3JvdXBzL2ZzL21lbW9yeS5nbworQEAgLTczLDE0ICs3MywxNCBAQCBmdW5jIEVuYWJsZUtlcm5lbE1lbW9yeUFjY291bnRpbmcocGF0aCBzdHJpbmcpIGVycm9yIHsKKyAJLy8gdW50aWwgYSBsaW1pdCBpcyBzZXQgb24gdGhlIGNncm91cCBhbmQgbGltaXQgY2Fubm90IGJlIHNldCBvbmNlIHRoZQorIAkvLyBjZ3JvdXAgaGFzIGNoaWxkcmVuLCBvciBpZiB0aGVyZSBhcmUgYWxyZWFkeSB0YXNrcyBpbiB0aGUgY2dyb3VwLgorIAlmb3IgXywgaSA6PSByYW5nZSBbXWludDY0ezEsIC0xfSB7CistCQlpZiBlcnIgOj0gc2V0S2VybmVsTWVtb3J5KHBhdGgsIHVpbnQ2NChpKSk7IGVyciAhPSBuaWwgeworKwkJaWYgZXJyIDo9IHNldEtlcm5lbE1lbW9yeShwYXRoLCBpKTsgZXJyICE9IG5pbCB7CisgCQkJcmV0dXJuIGVycgorIAkJfQorIAl9CisgCXJldHVybiBuaWwKKyB9CisgCistZnVuYyBzZXRLZXJuZWxNZW1vcnkocGF0aCBzdHJpbmcsIGtlcm5lbE1lbW9yeUxpbWl0IHVpbnQ2NCkgZXJyb3IgeworK2Z1bmMgc2V0S2VybmVsTWVtb3J5KHBhdGggc3RyaW5nLCBrZXJuZWxNZW1vcnlMaW1pdCBpbnQ2NCkgZXJyb3IgeworIAlpZiBwYXRoID09ICIiIHsKKyAJCXJldHVybiBmbXQuRXJyb3JmKCJubyBzdWNoIGRpcmVjdG9yeSBmb3IgJXMiLCBjZ3JvdXBLZXJuZWxNZW1vcnlMaW1pdCkKKyAJfQorQEAgLTg4LDcgKzg4LDcgQEAgZnVuYyBzZXRLZXJuZWxNZW1vcnkocGF0aCBzdHJpbmcsIGtlcm5lbE1lbW9yeUxpbWl0IHVpbnQ2NCkgZXJyb3IgeworIAkJLy8ga2VybmVsIG1lbW9yeSBpcyBub3QgZW5hYmxlZCBvbiB0aGUgc3lzdGVtIHNvIHdlIHNob3VsZCBkbyBub3RoaW5nCisgCQlyZXR1cm4gbmlsCisgCX0KKy0JaWYgZXJyIDo9IGlvdXRpbC5Xcml0ZUZpbGUoZmlsZXBhdGguSm9pbihwYXRoLCBjZ3JvdXBLZXJuZWxNZW1vcnlMaW1pdCksIFtdYnl0ZShzdHJjb252LkZvcm1hdFVpbnQoa2VybmVsTWVtb3J5TGltaXQsIDEwKSksIDA3MDApOyBlcnIgIT0gbmlsIHsKKysJaWYgZXJyIDo9IGlvdXRpbC5Xcml0ZUZpbGUoZmlsZXBhdGguSm9pbihwYXRoLCBjZ3JvdXBLZXJuZWxNZW1vcnlMaW1pdCksIFtdYnl0ZShzdHJjb252LkZvcm1hdEludChrZXJuZWxNZW1vcnlMaW1pdCwgMTApKSwgMDcwMCk7IGVyciAhPSBuaWwgeworIAkJLy8gQ2hlY2sgaWYgdGhlIGVycm9yIG51bWJlciByZXR1cm5lZCBieSB0aGUgc3lzY2FsbCBpcyAiRUJVU1kiCisgCQkvLyBUaGUgRUJVU1kgc2lnbmFsIGlzIHJldHVybmVkIG9uIGF0dGVtcHRzIHRvIHdyaXRlIHRvIHRoZQorIAkJLy8gbWVtb3J5LmttZW0ubGltaXRfaW5fYnl0ZXMgZmlsZSBpZiB0aGUgY2dyb3VwIGhhcyBjaGlsZHJlbiBvcgorQEAgLTEwNiwxNCArMTA2LDEyIEBAIGZ1bmMgc2V0S2VybmVsTWVtb3J5KHBhdGggc3RyaW5nLCBrZXJuZWxNZW1vcnlMaW1pdCB1aW50NjQpIGVycm9yIHsKKyB9CisgCisgZnVuYyBzZXRNZW1vcnlBbmRTd2FwKHBhdGggc3RyaW5nLCBjZ3JvdXAgKmNvbmZpZ3MuQ2dyb3VwKSBlcnJvciB7CistCXVsaW1pdGVkIDo9IC0xCistCistCS8vIElmIHRoZSBtZW1vcnkgdXBkYXRlIGlzIHNldCB0byB1aW50NjQoLTEpIHdlIHNob3VsZCBhbHNvCistCS8vIHNldCBzd2FwIHRvIHVpbnQ2NCgtMSksIGl0IG1lYW5zIHVubGltaXRlZCBtZW1vcnkuCistCWlmIGNncm91cC5SZXNvdXJjZXMuTWVtb3J5ID09IHVpbnQ2NCh1bGltaXRlZCkgeworLQkJLy8gT25seSBzZXQgc3dhcCBpZiBpdCdzIGVuYmxlZCBpbiBrZXJuZWwKKysJLy8gSWYgdGhlIG1lbW9yeSB1cGRhdGUgaXMgc2V0IHRvIC0xIHdlIHNob3VsZCBhbHNvCisrCS8vIHNldCBzd2FwIHRvIC0xLCBpdCBtZWFucyB1bmxpbWl0ZWQgbWVtb3J5LgorKwlpZiBjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeSA9PSAtMSB7CisrCQkvLyBPbmx5IHNldCBzd2FwIGlmIGl0J3MgZW5hYmxlZCBpbiBrZXJuZWwKKyAJCWlmIGNncm91cHMuUGF0aEV4aXN0cyhmaWxlcGF0aC5Kb2luKHBhdGgsIGNncm91cE1lbW9yeVN3YXBMaW1pdCkpIHsKKy0JCQljZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAgPSB1aW50NjQodWxpbWl0ZWQpCisrCQkJY2dyb3VwLlJlc291cmNlcy5NZW1vcnlTd2FwID0gLTEKKyAJCX0KKyAJfQorIAorQEAgLTEyOCwyOSArMTI2LDI5IEBAIGZ1bmMgc2V0TWVtb3J5QW5kU3dhcChwYXRoIHN0cmluZywgY2dyb3VwICpjb25maWdzLkNncm91cCkgZXJyb3IgeworIAkJLy8gV2hlbiB1cGRhdGUgbWVtb3J5IGxpbWl0LCB3ZSBzaG91bGQgYWRhcHQgdGhlIHdyaXRlIHNlcXVlbmNlCisgCQkvLyBmb3IgbWVtb3J5IGFuZCBzd2FwIG1lbW9yeSwgc28gaXQgd29uJ3QgZmFpbCBiZWNhdXNlIHRoZSBuZXcKKyAJCS8vIHZhbHVlIGFuZCB0aGUgb2xkIHZhbHVlIGRvbid0IGZpdCBrZXJuZWwncyB2YWxpZGF0aW9uLgorLQkJaWYgY2dyb3VwLlJlc291cmNlcy5NZW1vcnlTd2FwID09IHVpbnQ2NCh1bGltaXRlZCkgfHwgbWVtb3J5VXNhZ2UuTGltaXQgPCBjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAgeworLQkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5U3dhcExpbWl0LCBzdHJjb252LkZvcm1hdFVpbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnlTd2FwLCAxMCkpOyBlcnIgIT0gbmlsIHsKKysJCWlmIGNncm91cC5SZXNvdXJjZXMuTWVtb3J5U3dhcCA9PSAtMSB8fCBtZW1vcnlVc2FnZS5MaW1pdCA8IHVpbnQ2NChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXApIHsKKysJCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeVN3YXBMaW1pdCwgc3RyY29udi5Gb3JtYXRJbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnlTd2FwLCAxMCkpOyBlcnIgIT0gbmlsIHsKKyAJCQkJcmV0dXJuIGVycgorIAkJCX0KKy0JCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeUxpbWl0LCBzdHJjb252LkZvcm1hdFVpbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnksIDEwKSk7IGVyciAhPSBuaWwgeworKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5TGltaXQsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5LCAxMCkpOyBlcnIgIT0gbmlsIHsKKyAJCQkJcmV0dXJuIGVycgorIAkJCX0KKyAJCX0gZWxzZSB7CistCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlMaW1pdCwgc3RyY29udi5Gb3JtYXRVaW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5LCAxMCkpOyBlcnIgIT0gbmlsIHsKKysJCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeUxpbWl0LCBzdHJjb252LkZvcm1hdEludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeSwgMTApKTsgZXJyICE9IG5pbCB7CisgCQkJCXJldHVybiBlcnIKKyAJCQl9CistCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlTd2FwTGltaXQsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAsIDEwKSk7IGVyciAhPSBuaWwgeworKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5U3dhcExpbWl0LCBzdHJjb252LkZvcm1hdEludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAsIDEwKSk7IGVyciAhPSBuaWwgeworIAkJCQlyZXR1cm4gZXJyCisgCQkJfQorIAkJfQorIAl9IGVsc2UgeworIAkJaWYgY2dyb3VwLlJlc291cmNlcy5NZW1vcnkgIT0gMCB7CistCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlMaW1pdCwgc3RyY29udi5Gb3JtYXRVaW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5LCAxMCkpOyBlcnIgIT0gbmlsIHsKKysJCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsIGNncm91cE1lbW9yeUxpbWl0LCBzdHJjb252LkZvcm1hdEludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeSwgMTApKTsgZXJyICE9IG5pbCB7CisgCQkJCXJldHVybiBlcnIKKyAJCQl9CisgCQl9CisgCQlpZiBjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAgIT0gMCB7CistCQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCBjZ3JvdXBNZW1vcnlTd2FwTGltaXQsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAsIDEwKSk7IGVyciAhPSBuaWwgeworKwkJCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgY2dyb3VwTWVtb3J5U3dhcExpbWl0LCBzdHJjb252LkZvcm1hdEludChjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVN3YXAsIDEwKSk7IGVyciAhPSBuaWwgeworIAkJCQlyZXR1cm4gZXJyCisgCQkJfQorIAkJfQorQEAgLTE3MSwxMyArMTY5LDEzIEBAIGZ1bmMgKHMgKk1lbW9yeUdyb3VwKSBTZXQocGF0aCBzdHJpbmcsIGNncm91cCAqY29uZmlncy5DZ3JvdXApIGVycm9yIHsKKyAJfQorIAorIAlpZiBjZ3JvdXAuUmVzb3VyY2VzLk1lbW9yeVJlc2VydmF0aW9uICE9IDAgeworLQkJaWYgZXJyIDo9IHdyaXRlRmlsZShwYXRoLCAibWVtb3J5LnNvZnRfbGltaXRfaW5fYnl0ZXMiLCBzdHJjb252LkZvcm1hdFVpbnQoY2dyb3VwLlJlc291cmNlcy5NZW1vcnlSZXNlcnZhdGlvbiwgMTApKTsgZXJyICE9IG5pbCB7CisrCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsICJtZW1vcnkuc29mdF9saW1pdF9pbl9ieXRlcyIsIHN0cmNvbnYuRm9ybWF0SW50KGNncm91cC5SZXNvdXJjZXMuTWVtb3J5UmVzZXJ2YXRpb24sIDEwKSk7IGVyciAhPSBuaWwgeworIAkJCXJldHVybiBlcnIKKyAJCX0KKyAJfQorIAorIAlpZiBjZ3JvdXAuUmVzb3VyY2VzLktlcm5lbE1lbW9yeVRDUCAhPSAwIHsKKy0JCWlmIGVyciA6PSB3cml0ZUZpbGUocGF0aCwgIm1lbW9yeS5rbWVtLnRjcC5saW1pdF9pbl9ieXRlcyIsIHN0cmNvbnYuRm9ybWF0VWludChjZ3JvdXAuUmVzb3VyY2VzLktlcm5lbE1lbW9yeVRDUCwgMTApKTsgZXJyICE9IG5pbCB7CisrCQlpZiBlcnIgOj0gd3JpdGVGaWxlKHBhdGgsICJtZW1vcnkua21lbS50Y3AubGltaXRfaW5fYnl0ZXMiLCBzdHJjb252LkZvcm1hdEludChjZ3JvdXAuUmVzb3VyY2VzLktlcm5lbE1lbW9yeVRDUCwgMTApKTsgZXJyICE9IG5pbCB7CisgCQkJcmV0dXJuIGVycgorIAkJfQorIAl9CitkaWZmIC0tZ2l0IGEvbGliY29udGFpbmVyL2NvbmZpZ3MvY2dyb3VwX2xpbnV4LmdvIGIvbGliY29udGFpbmVyL2NvbmZpZ3MvY2dyb3VwX2xpbnV4LmdvCitpbmRleCAzZTA1MDlkZS4uZTE1YTY2MmYgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L2xpYmNvbnRhaW5lci9jb25maWdzL2Nncm91cF9saW51eC5nbworKysrIGIvc3JjL2ltcG9ydC9saWJjb250YWluZXIvY29uZmlncy9jZ3JvdXBfbGludXguZ28KK0BAIC00MywxOSArNDMsMTkgQEAgdHlwZSBSZXNvdXJjZXMgc3RydWN0IHsKKyAJRGV2aWNlcyBbXSpEZXZpY2UgYGpzb246ImRldmljZXMiYAorIAorIAkvLyBNZW1vcnkgbGltaXQgKGluIGJ5dGVzKQorLQlNZW1vcnkgdWludDY0IGBqc29uOiJtZW1vcnkiYAorKwlNZW1vcnkgaW50NjQgYGpzb246Im1lbW9yeSJgCisgCisgCS8vIE1lbW9yeSByZXNlcnZhdGlvbiBvciBzb2Z0X2xpbWl0IChpbiBieXRlcykKKy0JTWVtb3J5UmVzZXJ2YXRpb24gdWludDY0IGBqc29uOiJtZW1vcnlfcmVzZXJ2YXRpb24iYAorKwlNZW1vcnlSZXNlcnZhdGlvbiBpbnQ2NCBganNvbjoibWVtb3J5X3Jlc2VydmF0aW9uImAKKyAKKyAJLy8gVG90YWwgbWVtb3J5IHVzYWdlIChtZW1vcnkgKyBzd2FwKTsgc2V0IGAtMWAgdG8gZW5hYmxlIHVubGltaXRlZCBzd2FwCistCU1lbW9yeVN3YXAgdWludDY0IGBqc29uOiJtZW1vcnlfc3dhcCJgCisrCU1lbW9yeVN3YXAgaW50NjQgYGpzb246Im1lbW9yeV9zd2FwImAKKyAKKyAJLy8gS2VybmVsIG1lbW9yeSBsaW1pdCAoaW4gYnl0ZXMpCistCUtlcm5lbE1lbW9yeSB1aW50NjQgYGpzb246Imtlcm5lbF9tZW1vcnkiYAorKwlLZXJuZWxNZW1vcnkgaW50NjQgYGpzb246Imtlcm5lbF9tZW1vcnkiYAorIAorIAkvLyBLZXJuZWwgbWVtb3J5IGxpbWl0IGZvciBUQ1AgdXNlIChpbiBieXRlcykKKy0JS2VybmVsTWVtb3J5VENQIHVpbnQ2NCBganNvbjoia2VybmVsX21lbW9yeV90Y3AiYAorKwlLZXJuZWxNZW1vcnlUQ1AgaW50NjQgYGpzb246Imtlcm5lbF9tZW1vcnlfdGNwImAKKyAKKyAJLy8gQ1BVIHNoYXJlcyAocmVsYXRpdmUgd2VpZ2h0IHZzLiBvdGhlciBjb250YWluZXJzKQorIAlDcHVTaGFyZXMgdWludDY0IGBqc29uOiJjcHVfc2hhcmVzImAKK2RpZmYgLS1naXQgYS91cGRhdGUuZ28gYi91cGRhdGUuZ28KK2luZGV4IDBlYTkwZDYwLi4xMzNiZTk5OSAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvdXBkYXRlLmdvCisrKysgYi9zcmMvaW1wb3J0L3VwZGF0ZS5nbworQEAgLTEyNCwxMSArMTI0LDExIEBAIG90aGVyIG9wdGlvbnMgYXJlIGlnbm9yZWQuCisgCisgCQlyIDo9IHNwZWNzLkxpbnV4UmVzb3VyY2VzeworIAkJCU1lbW9yeTogJnNwZWNzLkxpbnV4TWVtb3J5eworLQkJCQlMaW1pdDogICAgICAgdTY0UHRyKDApLAorLQkJCQlSZXNlcnZhdGlvbjogdTY0UHRyKDApLAorLQkJCQlTd2FwOiAgICAgICAgdTY0UHRyKDApLAorLQkJCQlLZXJuZWw6ICAgICAgdTY0UHRyKDApLAorLQkJCQlLZXJuZWxUQ1A6ICAgdTY0UHRyKDApLAorKwkJCQlMaW1pdDogICAgICAgaTY0UHRyKDApLAorKwkJCQlSZXNlcnZhdGlvbjogaTY0UHRyKDApLAorKwkJCQlTd2FwOiAgICAgICAgaTY0UHRyKDApLAorKwkJCQlLZXJuZWw6ICAgICAgaTY0UHRyKDApLAorKwkJCQlLZXJuZWxUQ1A6ICAgaTY0UHRyKDApLAorIAkJCX0sCisgCQkJQ1BVOiAmc3BlY3MuTGludXhDUFV7CisgCQkJCVNoYXJlczogICAgICAgICAgdTY0UHRyKDApLAorQEAgLTIxMyw3ICsyMTMsNyBAQCBvdGhlciBvcHRpb25zIGFyZSBpZ25vcmVkLgorIAkJCX0KKyAJCQlmb3IgXywgcGFpciA6PSByYW5nZSBbXXN0cnVjdCB7CisgCQkJCW9wdCAgc3RyaW5nCistCQkJCWRlc3QgKnVpbnQ2NAorKwkJCQlkZXN0ICppbnQ2NAorIAkJCX17CisgCQkJCXsibWVtb3J5Iiwgci5NZW1vcnkuTGltaXR9LAorIAkJCQl7Im1lbW9yeS1zd2FwIiwgci5NZW1vcnkuU3dhcH0sCitAQCAtMjMyLDcgKzIzMiw3IEBAIG90aGVyIG9wdGlvbnMgYXJlIGlnbm9yZWQuCisgCQkJCQl9IGVsc2UgeworIAkJCQkJCXYgPSAtMQorIAkJCQkJfQorLQkJCQkJKnBhaXIuZGVzdCA9IHVpbnQ2NCh2KQorKwkJCQkJKnBhaXIuZGVzdCA9IHYKKyAJCQkJfQorIAkJCX0KKyAJCQlyLlBpZHMuTGltaXQgPSBpbnQ2NChjb250ZXh0LkludCgicGlkcy1saW1pdCIpKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLWRvY2tlcl9naXQuYmIKaW5kZXggOTZkNDhjYS4uOWRiNDhlZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtZG9ja2VyX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1kb2NrZXJfZ2l0LmJiCkBAIC0yLDEwICsyLDE0IEBACiAKICMgTm90ZTogdGhpcyByZXYgaXMgYmVmb3JlIHRoZSByZXF1aXJlZCBwcm90b2NvbCBmaWVsZCwgdXBkYXRlIHdoZW4gYWxsIGNvbXBvbmVudHMKICMgICAgICAgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gbWF0Y2guCi1TUkNSRVYgPSAiMmY3MzkzYTQ3MzA3YTE2ZjhjZWU0NGEzN2IyNjJlOGI4MTAyMWUzZSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvcnVuYy5naXQ7bm9icmFuY2g9MSBcCitTUkNSRVZfcnVuYy1kb2NrZXIgPSAiOWQ2ODIxZDFiNTM5MDhlMjQ5NDg3NzQxZWNjZDU2NzI0OWNhMWQ5OSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9kb2NrZXIvcnVuYy5naXQ7bm9icmFuY2g9MTtuYW1lPXJ1bmMtZG9ja2VyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXBkYXRlLXRvLXJ1bnRpbWUtc3BlYy0xOThmMjNmODI3ZWVhMzk3ZDQzMzFkN2ViMDQ4ZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1QbGF0Zm9ybS1hcy1uby1sb25nZXItaW4tT0NJLXNwZWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1VcGRhdGUtbWVtb3J5LXNwZWNzLXRvLXVzZS1pbnQ2NC1ub3QtdWludDY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcnVuYy1BZGQtY29uc29sZS1zb2NrZXQtZGV2LW51bGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtYnVpbGRpbmctcmVjdnR0eS5wYXRjaCBcCiAgICAgICAgICAgIgogCi1SVU5DX1ZFUlNJT04gPSAiMS4wLjAtcmMyIgotUFJPVklERVMgKz0gInZpcnR1YWwvcnVuYyIKLVJQUk9WSURFU18ke1BOfSA9ICJ2aXJ0dWFsL3J1bmMiCitSVU5DX1ZFUlNJT04gPSAiMS4wLjAtcmMzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtb3BlbmNvbnRhaW5lcnMvMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLW9wZW5jb250YWluZXJzLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdkNzAxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLW9wZW5jb250YWluZXJzLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSA2MjFlNWU5YTE5NmRhYWFmNWViNDMwYTQxM2ZlNTEyMThjZjQyYzg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK0RhdGU6IFdlZCwgNCBPY3QgMjAxNyAxNTo0NToyNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBVc2UgY29ycmVjdCBnbyBjcm9zcy1jb21waWxlcgorCitXZSBuZWVkIHRvIHVzZSAnJHtHT30nIGFzIHNldCBieSBPcGVuRW1iZWRkZWQgaW5zdGVhZCBvZiBqdXN0ICdnbycuIEp1c3QgdXNpbmcKKydnbycgd2lsbCBpbnZva2UgZ28tbmF0aXZlLgorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlCistLS0KKyBNYWtlZmlsZSB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNjc4MWFjNy4uNzRlNTUxZCAxMDA2NDQKKy0tLSBhL3NyYy9pbXBvcnQvTWFrZWZpbGUKKysrKyBiL3NyYy9pbXBvcnQvTWFrZWZpbGUKK0BAIC0yNywxOCArMjcsMTggQEAgU0hFTEwgOj0gJChzaGVsbCBjb21tYW5kIC12IGJhc2ggMj4vZGV2L251bGwpCisgLkRFRkFVTFQ6IHJ1bmMKKyAKKyBydW5jOiAkKFNPVVJDRVMpCistCWdvIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICItWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQoQlVJTERUQUdTKSIgLW8gcnVuYyAuCisrCSQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICItWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQoQlVJTERUQUdTKSIgLW8gcnVuYyAuCisgCisgYWxsOiBydW5jIHJlY3Z0dHkKKyAKKyByZWN2dHR5OiBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkKKyAKKyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHk6ICQoU09VUkNFUykKKy0JZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIi1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJChCVUlMRFRBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5CisrCSQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICItWCBtYWluLmdpdENvbW1pdD0ke0NPTU1JVH0gLVggbWFpbi52ZXJzaW9uPSR7VkVSU0lPTn0gJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQoQlVJTERUQUdTKSIgLW8gY29udHJpYi9jbWQvcmVjdnR0eS9yZWN2dHR5IC4vY29udHJpYi9jbWQvcmVjdnR0eQorIAorIHN0YXRpYzogJChTT1VSQ0VTKQorLQlDR09fRU5BQkxFRD0xIGdvIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIHJ1bmMgLgorLQlDR09fRU5BQkxFRD0xIGdvIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC10YWdzICIkKEJVSUxEVEFHUykgY2dvIHN0YXRpY19idWlsZCIgLWxkZmxhZ3MgIi13IC1leHRsZGZsYWdzIC1zdGF0aWMgLVggbWFpbi5naXRDb21taXQ9JHtDT01NSVR9IC1YIG1haW4udmVyc2lvbj0ke1ZFUlNJT059ICQoRVhUUkFfTERGTEFHUykiIC1vIGNvbnRyaWIvY21kL3JlY3Z0dHkvcmVjdnR0eSAuL2NvbnRyaWIvY21kL3JlY3Z0dHkKKysJQ0dPX0VOQUJMRUQ9MSAkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyBzdGF0aWNfYnVpbGQiIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtbyBydW5jIC4KKysJQ0dPX0VOQUJMRUQ9MSAkKEdPKSBidWlsZCAtaSAkKEVYVFJBX0ZMQUdTKSAtdGFncyAiJChCVUlMRFRBR1MpIGNnbyBzdGF0aWNfYnVpbGQiIC1sZGZsYWdzICItdyAtZXh0bGRmbGFncyAtc3RhdGljIC1YIG1haW4uZ2l0Q29tbWl0PSR7Q09NTUlUfSAtWCBtYWluLnZlcnNpb249JHtWRVJTSU9OfSAkKEVYVFJBX0xERkxBR1MpIiAtbyBjb250cmliL2NtZC9yZWN2dHR5L3JlY3Z0dHkgLi9jb250cmliL2NtZC9yZWN2dHR5CisgCisgcmVsZWFzZToKKyAJQGZsYWdfbGlzdD0oc2VjY29tcCBzZWxpbnV4IGFwcGFybW9yIHN0YXRpYyk7IFwKK0BAIC02MiwxNSArNjIsMTUgQEAgcmVsZWFzZToKKyAJCQlDR09fRU5BQkxFRD0xOyBcCisgCQl9OyBcCisgCQllY2hvICJCdWlsZGluZyB0YXJnZXQ6ICQkb3V0cHV0IjsgXAorLQkJZ28gYnVpbGQgLWkgJChFWFRSQV9GTEFHUykgLWxkZmxhZ3MgIiQkbGRmbGFncyAkKEVYVFJBX0xERkxBR1MpIiAtdGFncyAiJCR0YWdzIiAtbyAiJCRvdXRwdXQiIC47IFwKKysJCSQoR08pIGJ1aWxkIC1pICQoRVhUUkFfRkxBR1MpIC1sZGZsYWdzICIkJGxkZmxhZ3MgJChFWFRSQV9MREZMQUdTKSIgLXRhZ3MgIiQkdGFncyIgLW8gIiQkb3V0cHV0IiAuOyBcCisgCWRvbmUKKyAKKyBkYnVpbGQ6IHJ1bmNpbWFnZQorIAlkb2NrZXIgcnVuIC0tcm0gLXYgJChDVVJESVIpOi9nby9zcmMvJChQUk9KRUNUKSAtLXByaXZpbGVnZWQgJChSVU5DX0lNQUdFKSBtYWtlIGNsZWFuIGFsbAorIAorIGxpbnQ6CistCWdvIHZldCAkKGFsbHBhY2thZ2VzKQorLQlnbyBmbXQgJChhbGxwYWNrYWdlcykKKysJJChHTykgdmV0ICQoYWxscGFja2FnZXMpCisrCSQoR08pIGZtdCAkKGFsbHBhY2thZ2VzKQorIAorIG1hbjoKKyAJbWFuL21kMm1hbi1hbGwuc2gKK0BAIC04OCw3ICs4OCw3IEBAIHVuaXR0ZXN0OiBydW5jaW1hZ2UKKyAJZG9ja2VyIHJ1biAtZSBURVNURkxBR1MgLXQgLS1wcml2aWxlZ2VkIC0tcm0gLXYgJChDVVJESVIpOi9nby9zcmMvJChQUk9KRUNUKSAkKFJVTkNfSU1BR0UpIG1ha2UgbG9jYWx1bml0dGVzdAorIAorIGxvY2FsdW5pdHRlc3Q6IGFsbAorLQlnbyB0ZXN0IC10aW1lb3V0IDNtIC10YWdzICIkKEJVSUxEVEFHUykiICR7VEVTVEZMQUdTfSAtdiAkKGFsbHBhY2thZ2VzKQorKwkkKEdPKSB0ZXN0IC10aW1lb3V0IDNtIC10YWdzICIkKEJVSUxEVEFHUykiICR7VEVTVEZMQUdTfSAtdiAkKGFsbHBhY2thZ2VzKQorIAorIGludGVncmF0aW9uOiBydW5jaW1hZ2UKKyAJZG9ja2VyIHJ1biAtZSBURVNURkxBR1MgLXQgLS1wcml2aWxlZ2VkIC0tcm0gLXYgJChDVVJESVIpOi9nby9zcmMvJChQUk9KRUNUKSAkKFJVTkNfSU1BR0UpIG1ha2UgbG9jYWxpbnRlZ3JhdGlvbgorQEAgLTEzMywxMCArMTMzLDEwIEBAIGNsZWFuOgorIAorIHZhbGlkYXRlOgorIAlzY3JpcHQvdmFsaWRhdGUtZ29mbXQKKy0JZ28gdmV0ICQoYWxscGFja2FnZXMpCisrCSQoR08pIHZldCAkKGFsbHBhY2thZ2VzKQorIAorIGNpOiB2YWxpZGF0ZSBsb2NhbHRlc3QKKyAKKyAjIG1lbW9pemUgYWxscGFja2FnZXMsIHNvIHRoYXQgaXQncyBleGVjdXRlZCBvbmx5IG9uY2UgYW5kIG9ubHkgaWYgdXNlZAorLV9hbGxwYWNrYWdlcyA9ICQoc2hlbGwgZ28gbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQorK19hbGxwYWNrYWdlcyA9ICQoc2hlbGwgJChHTykgbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQorIGFsbHBhY2thZ2VzID0gJChpZiAkKF9fYWxscGFja2FnZXMpLCwkKGV2YWwgX19hbGxwYWNrYWdlcyA6PSAkJChfYWxscGFja2FnZXMpKSkkKF9fYWxscGFja2FnZXMpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLW9wZW5jb250YWluZXJzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLW9wZW5jb250YWluZXJzX2dpdC5iYgppbmRleCA0YTZlOGNkLi5hOTc2NzZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy1vcGVuY29udGFpbmVyc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMtb3BlbmNvbnRhaW5lcnNfZ2l0LmJiCkBAIC0xLDE1ICsxLDggQEAKIGluY2x1ZGUgcnVuYy5pbmMKIAotU1JDUkVWID0gIjc1ZjhkYTdjODg5YWNjNDUwOWEwY2Y2ZjBkM2E4Zjk1ODQ3NzgzNzUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYzticmFuY2g9bWFzdGVyIFwKLSAgICAgICAgICAiCi1SVU5DX1ZFUlNJT04gPSAiMS4wLjAtcmMzIgotUFJPVklERVMgKz0gInZpcnR1YWwvcnVuYyIKLVJQUk9WSURFU18ke1BOfSA9ICJ2aXJ0dWFsL3J1bmMiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQkjIEdvIGxvb2tzIGluIGEgc3JjIGRpcmVjdG9yeSB1bmRlciBhbnkgZGlyZWN0b3J5IGluIEdPUEFUSCBidXQKLQkjIHJ1bmMtb3BlbmNvbnRhaW5lcnMgdXNlcyAndmVuZG9yJyBpbnN0ZWFkIG9mICd2ZW5kb3Ivc3JjJy4gV2UgY2FuIGZpeAotCSMgdGhpcyB3aXRoIGEgc3ltbGluay4KLQlsbiAtc2ZuIC4gIiR7U30vdmVuZG9yL3NyYyIKLX0KK1NSQ1JFViA9ICIyZTdjZmUwMzZlMmM2ZGM1MWNjY2E2ZWI3ZmEzZWU2YjYzOTc2ZGNkIgorU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYzticmFuY2g9bWFzdGVyIFwKKyAgICBmaWxlOi8vMDAwMS1Vc2UtY29ycmVjdC1nby1jcm9zcy1jb21waWxlci5wYXRjaCBcCisgICAgIgorUlVOQ19WRVJTSU9OID0gIjEuMC4wLXJjNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvcnVuYy9ydW5jLmluYwppbmRleCA0ODA4NTQ3Li4wMTc5MTAzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMuaW5jCkBAIC00LDM4ICs0LDQwIEBACiAKICMgQXBhY2hlLTIuMCBmb3IgY29udGFpbmVyZAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDM1YjI2NmIzODk5YWE4YTk1OWYxN2Q0MWM1NmRlZjgiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PTQzNWIyNjZiMzg5OWFhOGE5NTlmMTdkNDFjNTZkZWY4IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1QViA9ICIke1JVTkNfVkVSU0lPTn0rZ2l0JHtTUkNSRVZ9IgorUFYgPSAiJHtSVU5DX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCiBpbmhlcml0IGdvCiBSUkVDT01NRU5EU18ke1BOfSA9ICJseGMgZG9ja2VyIgorUFJPVklERVMgKz0gInZpcnR1YWwvcnVuYyIKK1JQUk9WSURFU18ke1BOfSA9ICJ2aXJ0dWFsL3J1bmMiCisKK0dPX0lNUE9SVCA9ICJpbXBvcnQiCiAKIExJQkNPTlRBSU5FUl9QQUNLQUdFPSJnaXRodWIuY29tL29wZW5jb250YWluZXJzL3J1bmMvbGliY29udGFpbmVyIgogCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogRVhUUkFfT0VNQUtFPSJCVUlMRFRBR1M9JyciCiAKLWluaGVyaXQgZ29hcmNoCi0KIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKLQlleHBvcnQgR09ST09UPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vJHtUQVJHRVRfU1lTfS9nbyIKIAkjIFNldCBHT1BBVEguIFNlZSAnUEFDS0FHRVJTLm1kJy4gRG9uJ3QgcmVseSBvbgogCSMgZG9ja2VyIHRvIGRvd25sb2FkIGl0cyBkZXBlbmRlbmNpZXMgYnV0IHJhdGhlcgogCSMgdXNlIGRlcGVuZGVuY2llcyBwYWNrYWdlZCBpbmRlcGVuZGVudGx5LgotCWNkICR7U30KKwljZCAke1N9L3NyYy9pbXBvcnQKIAlybSAtcmYgLmdvcGF0aAogCWRuYW1lPWBkaXJuYW1lICIke0xJQkNPTlRBSU5FUl9QQUNLQUdFfSJgCiAJYm5hbWU9YGJhc2VuYW1lICIke0xJQkNPTlRBSU5FUl9QQUNLQUdFfSJgCiAJbWtkaXIgLXAgLmdvcGF0aC9zcmMvJHtkbmFtZX0KIAogCShjZCAuZ29wYXRoL3NyYy8ke2RuYW1lfTsgbG4gLXNmIC4uLy4uLy4uLy4uLy4uLyR7Ym5hbWV9ICR7Ym5hbWV9KQotCWV4cG9ydCBHT1BBVEg9IiR7U30vLmdvcGF0aDoke1N9L3ZlbmRvcjoke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtwcmVmaXh9L2xvY2FsL2dvIgotCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS8ke25vbmFyY2hfbGliZGlyfS8ke0hPU1RfU1lTfS9nbyIKLQljZCAtCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0Ly5nb3BhdGg6JHtTfS9zcmMvaW1wb3J0L3ZlbmRvcjoke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtwcmVmaXh9L2xvY2FsL2dvIgorCisJIyBGaXggdXAgc3ltbGluayBmb3IgZ28tY3Jvc3MgY29tcGlsZXIKKwlybSAtZiAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYworCWxuIC1zZiAuLyAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYwogCiAJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KIAkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCkBAIC01MSw3ICs1Myw3IEBACiBkb19pbnN0YWxsKCkgewogCW1rZGlyIC1wICR7RH0vJHtiaW5kaXJ9CiAKLQljcCAke1N9L3J1bmMgJHtEfS8ke2JpbmRpcn0vcnVuYworCWNwICR7U30vc3JjL2ltcG9ydC9ydW5jICR7RH0vJHtiaW5kaXJ9L3J1bmMKIAlsbiAtc2YgcnVuYyAke0R9LyR7YmluZGlyfS9kb2NrZXItcnVuYwogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy8wMDAxLW5zZXhlYy1maXgtYnVpbGQtYWdhaW5zdC1tdXNsLWxpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3J1bmMvcnVuYy8wMDAxLW5zZXhlYy1maXgtYnVpbGQtYWdhaW5zdC1tdXNsLWxpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNTc2MzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9ydW5jL3J1bmMvMDAwMS1uc2V4ZWMtZml4LWJ1aWxkLWFnYWluc3QtbXVzbC1saWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSBhYzZiZDk1MzE5MmZhNjc1MmEwN2JlNzUwMWY2OWY3Y2ZmZTMzZThlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmF0YW5hZWwgQ29wYSA8bmF0YW5hZWwuY29wYUBkb2NrZXIuY29tPgotRGF0ZTogVHVlLCAxOSBBcHIgMjAxNiAxMDo0MzowMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBuc2V4ZWM6IGZpeCBidWlsZCBhZ2FpbnN0IG11c2wgbGliYwotCi1SZW1vdmUgYSB3cm9uZ2x5IGFkZGVkIGluY2x1ZGUgd2hpY2ggd2FzIGFkZGVkIGluIGNvbW1pdCAzYzJlNzdlZSAoQWRkIGEKLWNvbXBhdGliaWxpdHkgaGVhZGVyIGZvciBDZW50T1MvUkhFTCA2LCAyMDE2LTAxLTI5KSBhcHBhcmVudGx5IHRvCi1maXggdGhpcyBjb21waWxlIGVycm9yIG9uIGNlbnRvcyA2OgotCi0+IEluIGZpbGUgaW5jbHVkZWQgZnJvbQotPiBHb2RlcHMvX3dvcmtzcGFjZS9zcmMvZ2l0aHViLmNvbS9vcGVuY29udGFpbmVycy9ydW5jL2xpYmNvbnRhaW5lci9uc2VudGVyL25zZXhlYy5jOjIwOgotPiAvdXNyL2luY2x1ZGUvbGludXgvbmV0bGluay5oOjM1OiBlcnJvcjogZXhwZWN0ZWQgc3BlY2lmaWVyLXF1YWxpZmllci1saXN0IGJlZm9yZSAnc2FfZmFtaWx5X3QnCi0KLVRoZSBnbGliYyBiaXRzL3NvY2thZGRyLmggc2F5cyB0aGF0IHRoaXMgaGVhZGVyIHNob3VsZCBuZXZlciBiZSBpbmNsdWRlZAotZGlyZWN0bHlbMV0uIEluc3RlYWQsIHN5cy9zb2NrZXQuaCBzaG91bGQgYmUgdXNlZC4KLQotVGhlIHByb2JsZW0gd2FzIGNvcnJlY3RseSBmaXhlZCBsYXRlciwgaW4gY29tbWl0IDM5NGZiNTUgKEZpeCBidWlsZAotZXJyb3Igb24gY2VudG9zNiwgMjAxNi0wMy0wMikgc28gdGhlIGluY29ycmVjdCBiaXRzL3NvY2thZGRyLmggY2FuCi1zYWZlbHkgYmUgcmVtb3ZlZC4KLQotVGhpcyBpcyBuZWVkZWQgdG8gYnVpbGQgbXVzbCBsaWJjLgotCi1GaXhlcyAjNzYxCi0KLVsxXTogaHR0cHM6Ly9naXRodWIubW9sZ2VuLm1wZy5kZS9naXQtbWlycm9yL2dsaWJjL2Jsb2IvMjAwMDNjNDk4ODQ0MjJkYTdmZmJjNDU5Y2RlZWU3NjhhNmZlZTA3Yi9iaXRzL3NvY2thZGRyLmgjTDIwCi0KLVNpZ25lZC1vZmYtYnk6IE5hdGFuYWVsIENvcGEgPG5hdGFuYWVsLmNvcGFAZG9ja2VyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYXVsQHBhdWxiYXJrZXIubWUudWs+Ci1VcHN0cmVhbS1zdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBsaWJjb250YWluZXIvbnNlbnRlci9uc2V4ZWMuYyB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJjb250YWluZXIvbnNlbnRlci9uc2V4ZWMuYyBiL2xpYmNvbnRhaW5lci9uc2VudGVyL25zZXhlYy5jCi1pbmRleCA4ZjM3ZDZjLi40MGE4Zjg5IDEwMDY0NAotLS0tIGEvbGliY29udGFpbmVyL25zZW50ZXIvbnNleGVjLmMKLSsrKyBiL2xpYmNvbnRhaW5lci9uc2VudGVyL25zZXhlYy5jCi1AQCAtMTgsNyArMTgsNiBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8Z3JwLmg+Ci0gCi0tI2luY2x1ZGUgPGJpdHMvc29ja2FkZHIuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAKLSAvLyBBbGwgYXJndW1lbnRzIHNob3VsZCBiZSBhYm92ZSB0aGUgc3RhY2sgYmVjYXVzZSBpdCBncm93cyBkb3duCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvc2luZ3VsYXJpdHkvUkVBRE1FIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9zaW5ndWxhcml0eS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyNDgwZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvbnRhaW5lcnMvc2luZ3VsYXJpdHkvUkVBRE1FCkBAIC0wLDAgKzEsNDYgQEAKK1Npbmd1bGFyaXR5IGlzIGEgY29udGFpbmVyIHBsYXRmb3JtIGJhc2VkIG9uIHRoZSBwcmluY2lwbGUgb2YgbW9iaWxpdHkgb2YgCitjb21wdXRlLCBhbmQgaXQgaXMgZGVzaWduZWQgZm9yIHVzZSB3aXRoaW4gSFBDIGNsdXN0ZXJzLiBGb3IgbW9yZSBpbmZvIHNlZQorc2luZ3VsYXJpdHkubGJsLmdvdi4gIAorCitUbyB0ZXN0IHdoZXRoZXIgdGhlIHNvZnR3YXJlIGZ1bmN0aW9ucyBjb3JyZWN0bHksIHlvdSBjYW4gdXNlIGBzaW5ndWxhcml0eQorc2VsZnRlc3RgLiBUaGlzIGlzIHdoYXQgeW91IHdvdWxkIGV4cGVjdCB0byBzZWU6CisKK34jIHNpbmd1bGFyaXR5IHNlbGZ0ZXN0CisgKyBzaCAtYyB0ZXN0IC1mIC9ldGMvc2luZ3VsYXJpdHkvc2luZ3VsYXJpdHkuY29uZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV0dmFsPTApIE9LCisgKyB0ZXN0IC11IC91c3IvbGliZXhlYy9zaW5ndWxhcml0eS9iaW4vYWN0aW9uLXN1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV0dmFsPTApIE9LCisgKyB0ZXN0IC11IC91c3IvbGliZXhlYy9zaW5ndWxhcml0eS9iaW4vY3JlYXRlLXN1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV0dmFsPTApIE9LCisgKyB0ZXN0IC11IC91c3IvbGliZXhlYy9zaW5ndWxhcml0eS9iaW4vZXhwYW5kLXN1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV0dmFsPTApIE9LCisgKyB0ZXN0IC11IC91c3IvbGliZXhlYy9zaW5ndWxhcml0eS9iaW4vZXhwb3J0LXN1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV0dmFsPTApIE9LCisgKyB0ZXN0IC11IC91c3IvbGliZXhlYy9zaW5ndWxhcml0eS9iaW4vaW1wb3J0LXN1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV0dmFsPTApIE9LCisgKyB0ZXN0IC11IC91c3IvbGliZXhlYy9zaW5ndWxhcml0eS9iaW4vbW91bnQtc3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV0dmFsPTApIE9LCisKK1lvdSBjYW4gYWxzbyBwdWxsIGEgY29udGFpbmVyIGZyb20gRG9ja2VyIEh1YiB0byBwcm92ZSBmdWxsIGZ1bmN0aW9uYWxpdHkKKyhUZXN0IHdhcyBwZXJmb3JtZWQgb24gYSBSYXNwYmVycnkgUGkgMywgaGVuY2UgdGhlIGFybTMydjcgcGFydCBvZiB0aGUgRG9ja2VyCitsaW5rLiBNYWtlIHN1cmUgeW91IHB1bGwgYW4gaW1hZ2Ugd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIHlvdXIgaGFyZHdhcmUuKSAKK0ZvciBpbnN0YW5jZToKKworfiMgc2luZ3VsYXJpdHkgcHVsbCBkb2NrZXI6Ly9hcm0zMnY3L2RlYmlhbjpsYXRlc3QKK0luaXRpYWxpemluZyBTaW5ndWxhcml0eSBpbWFnZSBzdWJzeXN0ZW0KK09wZW5pbmcgaW1hZ2UgZmlsZTogZGViaWFuLWxhdGVzdC5pbWcKK0NyZWF0aW5nIDIwME1pQiBpbWFnZQorQmluZGluZyBpbWFnZSB0byBsb29wCitDcmVhdGluZyBmaWxlIHN5c3RlbSB3aXRoaW4gaW1hZ2UKK0ltYWdlIGlzIGRvbmU6IGRlYmlhbi1sYXRlc3QuaW1nCitEb2NrZXIgaW1hZ2UgcGF0aDogaW5kZXguZG9ja2VyLmlvL2FybTMydjcvZGViaWFuOmxhdGVzdAorQ2FjaGUgZm9sZGVyIHNldCB0byAvaG9tZS9yb290Ly5zaW5ndWxhcml0eS9kb2NrZXIKK1sxLzFdIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXwgMTAwLjAlIAorSW1wb3J0aW5nOiBiYXNlIFNpbmd1bGFyaXR5IGVudmlyb25tZW50CitJbXBvcnRpbmc6IC9ob21lL3Jvb3QvLnNpbmd1bGFyaXR5L2RvY2tlci9zaGEyNTY6ZWQ0ZjFmMGQwYTA0NTdlN2Y3NmZmYjI1YThkNmExOTMwMDc3MDlkZDMxMmI3NjQ3Y2I0NGZjNjk3OWVjNGE1My50YXIuZ3oKK0ltcG9ydGluZzogL2hvbWUvcm9vdC8uc2luZ3VsYXJpdHkvbWV0YWRhdGEvc2hhMjU2Ojg5OTk3YjJjMTZiMjljNWEzYTMxNmUzMTQxNzJlZjIxYjM2ZjY3Y2MzMjAwYjFjNGQ5NTkyN2Y3MTZkYmVlODMudGFyLmd6CitEb25lLiBDb250YWluZXIgaXMgYXQ6IGRlYmlhbi1sYXRlc3QuaW1nCit+IyBzaW5ndWxhcml0eSBzaGVsbCBkZWJpYW4tbGF0ZXN0LmltZyAKK1Npbmd1bGFyaXR5OiBJbnZva2luZyBhbiBpbnRlcmFjdGl2ZSBzaGVsbCB3aXRoaW4gY29udGFpbmVyLi4uCisKK1Npbmd1bGFyaXR5IGRlYmlhbi1sYXRlc3QuaW1nOn4+IGVjaG8gIkhlbGxvIGZyb20gd2l0aGluIHRoZSBjb250YWluZXIhIgorSGVsbG8gZnJvbSB3aXRoaW4gdGhlIGNvbnRhaW5lciEKK1Npbmd1bGFyaXR5IGRlYmlhbi1sYXRlc3QuaW1nOn4+IGxzIC8KK2JpbiAgIGRldiAgaG9tZSAgbG9zdCtmb3VuZCAgbW50ICBwcm9jCXJ1biAgIHNpbmd1bGFyaXR5ICBzeXMJdXNyCitib290ICBldGMgIGxpYgkgbWVkaWEJICAgICBvcHQgIHJvb3QJc2JpbiAgc3J2CSAgIHRtcAl2YXIKK1Npbmd1bGFyaXR5IGRlYmlhbi1sYXRlc3QuaW1nOn4+IGV4aXQKK2V4aXQKK34jIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9zaW5ndWxhcml0eS9zaW5ndWxhcml0eV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1jb250YWluZXJzL3Npbmd1bGFyaXR5L3Npbmd1bGFyaXR5X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmVlOGYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29udGFpbmVycy9zaW5ndWxhcml0eS9zaW5ndWxhcml0eV9naXQuYmIKQEAgLTAsMCArMSwzNSBAQAorIyBTa2lwIFFBIGNoZWNrIGZvciBsaWJyYXJ5IHN5bWJvbGljIGxpbmtzIChjb3JlIGlzc3VlIGlzIGEgcGFja2FnaW5nIHByb2JsZW0gd2l0aGluIAorIyBTaW5ndWxhcml0eSBidWlsZCAvIGNvbmZpZzogcmVhZCB1cCBvbiB0aGUgZGV2LXNvIHRlc3QgZm9yIG1vcmUgaW5mbykKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCisKK1JERVBFTkRTXyR7UE59ICs9ICJnbGliYyBweXRob24zIGNhLWNlcnRpZmljYXRlcyBvcGVuc3NsIGJhc2ggZTJmc3Byb2dzLW1rZTJmcyIKKyMgU2luZ3VsYXJpdHkgZXhwZWN0cyB0byBmaW5kIHB5dGhvbjMgdW5kZXIgdGhlIG5hbWUgcHl0aG9uLCB0aGVyZWZvcmUgYm90aAorIyBjYW5ub3QgYmUgaW5zdGFsbGVkIGF0IHRoZSBzYW1lIHRpbWUuCitSQ09ORkxJQ1RTXyR7UE59ID0gInB5dGhvbiIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQubWQ7bWQ1PWJlNzhjMzRlNDgzZGQ3ZDg0MzkzNThiMWUwMjRiMjk0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UtTEJOTC5tZDttZDU9NDVhMDA3YjUyN2UxYTk1MDdhYTdmYTg2OWY4ZDdlZGUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5tZDttZDU9ZGY0MzI2YjQ3M2RiNjQyNDAzM2YxZDk4YTU2NDVlMzAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZWQyNjdjZjM4NmQ5Yjc1YWIxZjI3ZjQwN2U5MzViMTAiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zaW5ndWxhcml0eXdhcmUvc2luZ3VsYXJpdHkuZ2l0O3Byb3RvY29sPWh0dHBzIgorUFYgPSAiMi4zLjErZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiZTIxNGQ0ZWJmMGExMjc0YjFjNjNiMDk1ZmQ1NWFlNjFjN2U5Mjk0NyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBweXRob25uYXRpdmUgYXV0b3Rvb2xzLWJyb2tlbnNlcAorRVhUUkFfT0VDT05GID0gIi0tcHJlZml4PS91c3IvbG9jYWwiCisKK3BrZ19wb3N0aW5zdF8ke1BOfSgpIHsKKyAgICAjIFNpbmd1bGFyaXR5IHJlcXVpcmVzICJweXRob24iIHRvIHJlc29sdmUgdG8gInB5dGhvbjMiIHdpdGhpbiB0aGUgY29tbWFuZGxpbmUuCisgICAgIyBUaGlzIGNyZWF0ZXMgYSBzeW1ib2xpYyBsaW5rIGZyb20gcHl0aG9uMyB0byBweXRob24uIEEgc2lkZS1lZmZlY3Qgb2YgdGhpcyBpcworICAgICMgdGhhdCBzY3JpcHRzIHdoaWNoIGV4cGVjdCBQeXRob24gMiBtYXkgZmFpbCB0byBydW4gY29ycmVjdGx5LgorICAgIGxuIC1zciAkRCR7YmluZGlyfS9weXRob24zICREJHtiaW5kaXJ9L3B5dGhvbiAKKworICAgICMgcHl0aG9uMyBleHBlY3RzIENBIGNlcnRpZmljYXRlcyB0byBiZSBpbnN0YWxsZWQgaW4gYSBkaWZmZXJlbnQgcGxhY2UgdG8gd2hlcmUKKyAgICAjIHRoZXkgYXJlIGFjdHVhbGx5IGluc3RhbGxlZC4gVGhlc2UgbGluZXMgbGluayB0aGUgdHdvIGxvY2F0aW9ucy4KKyAgICBybSAtciAkRCR7bGliZGlyfS9zc2wtMS4xL2NlcnRzCisgICAgbG4gLXNyICREJHtzeXNjb25mZGlyfS9zc2wvY2VydHMgJEQke2xpYmRpcn0vc3NsLTEuMSAKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvcmUvcnVudi9ydW52X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWNvcmUvcnVudi9ydW52X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTI1ZDkwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtY29yZS9ydW52L3J1bnZfZ2l0LmJiCkBAIC0wLDAgKzEsODIgQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYiCitTVU1NQVJZID0gIkh5cGVydmlzb3ItYmFzZWQgUnVudGltZSBmb3IgT0NJIgorREVTQ1JJUFRJT04gPSAiSHlwZXJ2aXNvci1iYXNlZCBSdW50aW1lIGZvciBPQ0kiCisKK1NSQ1JFVl9ydW52ID0gImIzNjBhNjg2YWJjNmM2ZTg5NjM4Mjk5MGVmMWI5M2VmMDdjN2E2NzciCitTUkNfVVJJID0gIlwKKwlnaXQ6Ly9naXRodWIuY29tL2h5cGVyaHEvcnVudi5naXQ7bm9icmFuY2g9MTtuYW1lPXJ1bnYgXAorCSIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ltcG9ydC9MSUNFTlNFO21kNT00MTA2YTUwNTQwYmRlYzNiOTczNGY5YzcwODgyZDM4MiIKKworR09fSU1QT1JUID0gImltcG9ydCIKKworUFYgPSAiMC40LjArZ2l0JHtTUkNSRVZfcnVudn0iCisKK2luaGVyaXQgZ28KK2luaGVyaXQgZ29hcmNoCitpbmhlcml0IHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK1BBQ0tBR0VDT05GSUdbeGVuXSA9ICItLXdpdGgteGVuLC0td2l0aG91dC14ZW4sIgorQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vc3JjL2ltcG9ydC8iCisKK1JERVBFTkRTXyR7UE59ICs9ICIgcWVtdSIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IgorCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke1RBUkdFVF9TWVN9L2dvIgorCWV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yIgorCisJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KKwkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCisJZXhwb3J0IENHT19FTkFCTEVEPSIxIgorCWV4cG9ydCBDRkxBR1M9IiIKKwlleHBvcnQgTERGTEFHUz0iIgorCWV4cG9ydCBDR09fQ0ZMQUdTPSIke0JVSUxEU0RLX0NGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwlleHBvcnQgQ0dPX0xERkxBR1M9IiR7QlVJTERTREtfTERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworCSMgbGluayBmaXh1cHMgZm9yIGNvbXBpbGF0aW9uCisJcm0gLWYgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMKKwlsbiAtc2YgLi8gJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMKKworCW1rZGlyIC1wICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYKKworCWVjaG8gZmZmCisJcHdkCisJbG4gLXNmIHNyYy9pbXBvcnQvY2xpCisJbG4gLXNmIC4uLy4uLy4uLy4uL2FwaSAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vaHlwZXJocS9ydW52L2FwaQorCWxuIC1zZiAuLi8uLi8uLi8uLi9jbGkgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2h5cGVyaHEvcnVudi9jbGkKKwlsbiAtc2YgLi4vLi4vLi4vLi4vbGliICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYvbGliCisJbG4gLXNmIC4uLy4uLy4uLy4uL2RyaXZlcmxvYWRlciAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vaHlwZXJocS9ydW52L2RyaXZlcmxvYWRlcgorCWxuIC1zZiAuLi8uLi8uLi8uLi9mYWN0b3J5ICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYvZmFjdG9yeQorCWxuIC1zZiAuLi8uLi8uLi8uLi9oeXBlcnN0YXJ0ICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYvaHlwZXJzdGFydAorCWxuIC1zZiAuLi8uLi8uLi8uLi9oeXBlcnZpc29yICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9oeXBlcmhxL3J1bnYvaHlwZXJ2aXNvcgorCWxuIC1zZiAuLi8uLi8uLi8uLi90ZW1wbGF0ZSAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vaHlwZXJocS9ydW52L3RlbXBsYXRlCisKKwlleHBvcnQgR09QQVRIPSIke1N9L3NyYy9pbXBvcnQvLmdvcGF0aDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yOiR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke3ByZWZpeH0vbG9jYWwvZ28iCisJZXhwb3J0IEdPUk9PVD0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9LyR7bm9uYXJjaF9saWJkaXJ9LyR7SE9TVF9TWVN9L2dvIgorCisJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KKwkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCisJZXhwb3J0IENHT19FTkFCTEVEPSIxIgorCWV4cG9ydCBDR09fQ0ZMQUdTPSIke0NGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwlleHBvcnQgQ0dPX0xERkxBR1M9IiR7TERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworCW9lX3J1bm1ha2UgYnVpbGQtcnVudgorfQorCitkb19pbnN0YWxsKCkgeworICAgIGxvY2FsYmluZGlyPSIvdXNyL2xvY2FsL2JpbiIKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9ydW52ICR7RH0vJHtsb2NhbGJpbmRpcn0KK30KKworZGVsdGFzayBjb21waWxlX3B0ZXN0X2Jhc2UKKworRklMRVNfJHtQTn0gKz0gIi91c3IvbG9jYWwvYmluLyoiCisKK0lOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImxkZmxhZ3MgYWxyZWFkeS1zdHJpcHBlZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXN5c3RlbWRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tc3lzdGVtZF9naXQuYmIKaW5kZXggNWNiYWI5Mi4uYjYxYzk3YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tc3lzdGVtZF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tc3lzdGVtZF9naXQuYmIKQEAgLTEyLDkgKzEyLDcgQEAKIFNSQ1JFViA9ICJiNGE1OGQ5NTE4OGRkMDkyYWUyMDA3MmJhYzE0Y2VjZTBlNjdjMzg4IgogUFYgPSAiNCtnaXQke1NSQ1JFVn0iCiAKLURFUEVORFMgKz0gIiBcCi0gICAgYmFzaCBcCi0iCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvZmlsZXMvZGlzYWJsZV90ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL2ZpbGVzL2Rpc2FibGVfdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ZTcxY2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvZmlsZXMvZGlzYWJsZV90ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWRpZmYgLU5hdXIgcHJvdG9idWYtYy0wLjE1Lm9sZC9zcmMvTWFrZWZpbGUuYW0gcHJvdG9idWYtYy0wLjE1L3NyYy9NYWtlZmlsZS5hbQotLS0tIHByb3RvYnVmLWMtMC4xNS5vbGQvc3JjL01ha2VmaWxlLmFtCTIwMTItMTEtMjggMTQ6NTk6NTcuODQ1MjUxOTQzICswMTAwCi0rKysgcHJvdG9idWYtYy0wLjE1L3NyYy9NYWtlZmlsZS5hbQkyMDEyLTExLTI4IDE1OjAwOjIzLjU0OTI1MjYzMiArMDEwMAotQEAgLTEsNSArMSw1IEBACi0gaWYgQlVJTERfUFJPVE9DX0MKLS1TVUJESVJTID0gLiB0ZXN0Ci0rCi0gYmluX1BST0dSQU1TID0gcHJvdG9jLWMKLSBwcm90b2NfY19TT1VSQ0VTID0gXAotIGdvb2dsZS9wcm90b2J1Zi9jb21waWxlci9jL2Nfc2VydmljZS5jYyBcCi1AQCAtMjMsNyArMjMsNyBAQAotIGxpYl9MVExJQlJBUklFUyA9IGxpYnByb3RvYnVmLWMubGEKLSBwcm90b2J1ZmNpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9nb29nbGUvcHJvdG9idWYtYwotCi0tRVhUUkFfRElTVCA9IENNYWtlTGlzdHMudHh0IHRlc3QvQ01ha2VMaXN0cy50eHQKLStFWFRSQV9ESVNUID0gQ01ha2VMaXN0cy50eHQKLQotIGxpYnByb3RvYnVmX2NfbGFfU09VUkNFUyA9IFwKLSBnb29nbGUvcHJvdG9idWYtYy9wcm90b2J1Zi1jLWRpc3BhdGNoLmMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvZmlsZXMvcHJvdG9idWYtYWxsb3ctcnVubmluZy1weXRob24tc2NyaXB0cy1mcm9tLWFueXdoZXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvZmlsZXMvcHJvdG9idWYtYWxsb3ctcnVubmluZy1weXRob24tc2NyaXB0cy1mcm9tLWFueXdoZXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjI5MzQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL2ZpbGVzL3Byb3RvYnVmLWFsbG93LXJ1bm5pbmctcHl0aG9uLXNjcmlwdHMtZnJvbS1hbnl3aGVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gNDZlMzMxMjYzZWI5MmU0NzUxMGU4ODQ3OGIyNTVmMjI2ZDMwMjQ1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlaXRoIEhvbG1hbiA8S2VpdGguSG9sbWFuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE4IEF1ZyAyMDE0IDE1OjE5OjM1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHByb3RvYnVmOiBhbGxvdyBydW5uaW5nIHB5dGhvbiBzY3JpcHRzIGZyb20gYW55d2hlcmUKLQotVGhlIE1ha2VmaWxlIHRvIGdlbmVyYXRlIHRoZSBleGFtcGxlcyB3aXRoIEdvb2dsZSBQcm90b2NvbCBCdWZmZXJzCi1nZW5lcmF0ZXMgc29tZSBzY3JpcHRzIGZvciBweXRob24uICBIb3dldmVyLCB0aGVzZSBnZW5lcmF0ZWQgc2NyaXB0cwotb25seSB3b3JrIGlmIHRoZXkgYXJlIHJhbiBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHNvdXJjZSBmaWxlcy4KLVRoaXMgZml4IGdlbmVyYXRlcyBzY3JpcHRzIHRvIGV4ZWN1dGUgZnJvbSBhbnl3aGVyZSBvbiB0aGUgc3lzdGVtLgotCi1TaWduZWQtb2ZmLWJ5OiBLZWl0aCBIb2xtYW4gPEtlaXRoLkhvbG1hbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gZXhhbXBsZXMvTWFrZWZpbGUgfCA2ICsrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9leGFtcGxlcy9NYWtlZmlsZSBiL2V4YW1wbGVzL01ha2VmaWxlCi1pbmRleCA4ZGM5MDgzLi5hOTkzZDYzIDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvTWFrZWZpbGUKLSsrKyBiL2V4YW1wbGVzL01ha2VmaWxlCi1AQCAtNDgsMTEgKzQ4LDEzIEBAIGxpc3RfcGVvcGxlX2phdmE6IGphdmFjX21pZGRsZW1hbgotIGFkZF9wZXJzb25fcHl0aG9uOiBhZGRfcGVyc29uLnB5IHByb3RvY19taWRkbGVtYW4KLSAJQGVjaG8gIldyaXRpbmcgc2hvcnRjdXQgc2NyaXB0IGFkZF9wZXJzb25fcHl0aG9uLi4uIgotIAlAZWNobyAnIyEgL2Jpbi9zaCcgPiBhZGRfcGVyc29uX3B5dGhvbgotLQlAZWNobyAnLi9hZGRfcGVyc29uLnB5ICIkJEAiJyA+PiBhZGRfcGVyc29uX3B5dGhvbgotKwlAZWNobyAnU0NSSVBUX0RJUj0kJChkaXJuYW1lICQkMCknID4+IGFkZF9wZXJzb25fcHl0aG9uCi0rCUBlY2hvICckJFNDUklQVF9ESVIvYWRkX3BlcnNvbi5weSAiJCRAIicgPj4gYWRkX3BlcnNvbl9weXRob24KLSAJQGNobW9kICt4IGFkZF9wZXJzb25fcHl0aG9uCi0KLSBsaXN0X3Blb3BsZV9weXRob246IGxpc3RfcGVvcGxlLnB5IHByb3RvY19taWRkbGVtYW4KLSAJQGVjaG8gIldyaXRpbmcgc2hvcnRjdXQgc2NyaXB0IGxpc3RfcGVvcGxlX3B5dGhvbi4uLiIKLSAJQGVjaG8gJyMhIC9iaW4vc2gnID4gbGlzdF9wZW9wbGVfcHl0aG9uCi0tCUBlY2hvICcuL2xpc3RfcGVvcGxlLnB5ICIkJEAiJyA+PiBsaXN0X3Blb3BsZV9weXRob24KLSsJQGVjaG8gJ1NDUklQVF9ESVI9JCQoZGlybmFtZSAkJDApJyA+PiBsaXN0X3Blb3BsZV9weXRob24KLSsJQGVjaG8gJyQkU0NSSVBUX0RJUi9saXN0X3Blb3BsZS5weSAiJCRAIicgPj4gbGlzdF9wZW9wbGVfcHl0aG9uCi0gCUBjaG1vZCAreCBsaXN0X3Blb3BsZV9weXRob24KLS0tCi0xLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9maWxlcy9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9maWxlcy9ydW4tcHRlc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGE1YTdiMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvZmlsZXMvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotIyEvYmluL2Jhc2gKLURJUj0iJCggY2QgIiQoIGRpcm5hbWUgIiR7QkFTSF9TT1VSQ0VbMF19IiApIiAmJiBwd2QgKSIKLVRFU1RfRklMRT0iL3RtcC90ZXN0LmRhdGEiCi0KLVJFVFZBTD0wCi0jIFRlc3QgZXZlcnkgd3JpdGluZyB0ZXN0IGFwcGxpY2F0aW9uCi1mb3Igd3JpdGVfZXhlX2Z1bGxfcGF0aCBpbiAke0RJUn0vYWRkX3BlcnNvbl8qOyBkbwotCWlmIFsgLXggIiR7d3JpdGVfZXhlX2Z1bGxfcGF0aH0iIF07IHRoZW4KLQkJd3JpdGVfZXhlPWBiYXNlbmFtZSAke3dyaXRlX2V4ZV9mdWxsX3BhdGh9YAotCQllY2hvICJHZW5lcmF0aW5nIG5ldyB0ZXN0IGZpbGUgdXNpbmcgJHt3cml0ZV9leGV9Li4uIgotCQkke3dyaXRlX2V4ZV9mdWxsX3BhdGh9ICIke1RFU1RfRklMRX0iCi0JCVJFVFZBTD0kPwotCi0JCSMgVGVzdCBldmVyeSByZWFkaW5nIHRlc3QgYXBwbGljYXRpb24KLQkJZm9yIHJlYWRfZXhlX2Z1bGxfcGF0aCBpbiAke0RJUn0vbGlzdF9wZW9wbGVfKjsgZG8KLQkJCXJlYWRfZXhlPWBiYXNlbmFtZSAke3JlYWRfZXhlX2Z1bGxfcGF0aH1gCi0JCQllY2hvICJUZXN0OiBXcml0ZSB3aXRoICR7d3JpdGVfZXhlfTsgUmVhZCB3aXRoICR7cmVhZF9leGV9Li4uIgotCQkJaWYgWyAteCAiJHtyZWFkX2V4ZV9mdWxsX3BhdGh9IiBdOyB0aGVuCi0JCQkJJHtyZWFkX2V4ZV9mdWxsX3BhdGh9ICIke1RFU1RfRklMRX0iCi0JCQkJUkVUVkFMPSQ/Ci0JCQlmaQotCQlkb25lCi0KLQkJIyBDbGVhbnVwLi4uCi0JCWlmIFsgLWUgIiR7VEVTVF9GSUxFfSIgXTsgdGhlbgotCQkJcm0gIiR7VEVTVF9GSUxFfSIKLQkJZmkKLQlmaQotZG9uZQotCi1leGl0ICRSRVRWQUwKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMjQ5OWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAicHJvdG9idWYtYyIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyBhIGNvZGUgZ2VuZXJhdG9yIGFuZCBydW50aW1lIGxpYnJhcmllcyB0byB1c2UgUHJvdG9jb2wgQnVmZmVycyBmcm9tIHB1cmUgQyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9wcm90b2J1Zi1jLyIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjM1YzMxOTVhMzk2ODUyNGRjMTUyNGI0ZWJlYTBjMGUiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1ERVBFTkRTID0gInByb3RvYnVmIHByb3RvYnVmLWMtbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTU0NDI0OWMzMjkzOTFmZmY1MTJjMzg3NDg5NWNmYmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODQ2ZWI0ODQ2ZjE5NTk4YWZmZGMzNDlkODE3YThjNGMwYzY4ZmQ5NDAzMDNlNjkzNDcyNWM4ODlmMTZmMDBiZCIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Byb3RvYnVmLWMvcHJvdG9idWYtYy9yZWxlYXNlcy9kb3dubG9hZC92MS4yLjEvcHJvdG9idWYtYy0xLjIuMS50YXIuZ3ogIgotI1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ImZpbGU6Ly8wMDAxLXByb3RvYnVmLWMtUmVtb3ZlLXRoZS1ydWxlcy13aGljaC1kZXBlbmQtb24tdGhlLW5hdGkucGF0Y2giCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcGtnY29uZmlnOiR7UEtHX0NPTkZJR19QQVRIfSIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGluc3RhbGwgLW0gNzU1ICR7Qn0vdC9nZW5lcmF0ZWQtY29kZTIvY3h4LWdlbmVyYXRlLXBhY2tlZC1kYXRhICR7RH0vJHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1uYXRpdmVfMy4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1uYXRpdmVfMy4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMmY2MjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtbmF0aXZlXzMuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJwcm90b2J1ZiIKLURFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMgYXJlIGEgd2F5IG9mIGVuY29kaW5nIHN0cnVjdHVyZWQgZGF0YSBpbiBcCi1hbiBlZmZpY2llbnQgeWV0IGV4dGVuc2libGUgZm9ybWF0LiBHb29nbGUgdXNlcyBQcm90b2NvbCBCdWZmZXJzIGZvciBcCi1hbG1vc3QgYWxsIG9mIGl0cyBpbnRlcm5hbCBSUEMgcHJvdG9jb2xzIGFuZCBmaWxlIGZvcm1hdHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3Byb3RvYnVmLyIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNTk1M2M3NTJlZmM5Mjk5YjE4NGY5MWJlZjU0MDA5NSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE0YTUzMmE3NTM4NTUxZDVkZWYzMTdiZmNhNDFkYWNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBhMGFlNjNjYmZmYzI3NGVmYjU3M2JkZGU5YTI1M2UzZjMyZTQ1OGM0MTI2MWRmNTFjNWRiYzVhZDU0MWU4ZjciCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYvYXJjaGl2ZS92My4xLjAudGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9cHJvdG9idWYtMy4xLjAudGFyLmd6IFwKLQkiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aC1wcm90b2M9ZWNobyIKLQotaW5oZXJpdCBuYXRpdmUgYXV0b3Rvb2xzCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NDhlNjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1TVU1NQVJZID0gInByb3RvYnVmIgotREVTQ1JJUFRJT04gPSAiUHJvdG9jb2wgQnVmZmVycyBhcmUgYSB3YXkgb2YgZW5jb2Rpbmcgc3RydWN0dXJlZCBkYXRhIGluIFwKLWFuIGVmZmljaWVudCB5ZXQgZXh0ZW5zaWJsZSBmb3JtYXQuIEdvb2dsZSB1c2VzIFByb3RvY29sIEJ1ZmZlcnMgZm9yIFwKLWFsbW9zdCBhbGwgb2YgaXRzIGludGVybmFsIFJQQyBwcm90b2NvbHMgYW5kIGZpbGUgZm9ybWF0cy4iCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcHJvdG9idWYvIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1OTUzYzc1MmVmYzkyOTliMTg0ZjkxYmVmNTQwMDk1IgotCi1QUiA9ICJyMCIKLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTRhNTMyYTc1Mzg1NTFkNWRlZjMxN2JmY2E0MWRhY2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGEwYWU2M2NiZmZjMjc0ZWZiNTczYmRkZTlhMjUzZTNmMzJlNDU4YzQxMjYxZGY1MWM1ZGJjNWFkNTQxZThmNyIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi9hcmNoaXZlL3YzLjEuMC50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT1wcm90b2J1Zi0zLjEuMC50YXIuZ3pcCi0JICAgICAgICBmaWxlOi8vcHJvdG9idWYtYWxsb3ctcnVubmluZy1weXRob24tc2NyaXB0cy1mcm9tLWFueXdoZXJlLnBhdGNoIFwKLQkgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgIgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKLQotRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLXByb3RvYz0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHJvdG9jIgotaW5oZXJpdCBhdXRvdG9vbHMgc2V0dXB0b29scyBwdGVzdAotCi1ERVBFTkRTICs9ICJwcm90b2J1Zi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIgotCi1QWVRIT05fU1JDX0RJUj0icHl0aG9uIgotVEVTVF9TUkNfRElSPSJleGFtcGxlcyIKLUxBTkdfU1VQUE9SVD0iY3BwIHB5dGhvbiIKLQotZG9fY29tcGlsZSgpIHsKLQkjIENvbXBpbGUgcHJvdG9jIGNvbXBpbGVyCi0JYmFzZV9kb19jb21waWxlCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JIyBNb2RpZnkgbWFrZWZpbGUgdG8gdXNlIHRoZSBjcm9zcy1jb21waWxlcgotCXNlZCAtZSAic3xjKyt8JHtDWFh9IFwkKExERkxBR1MpfGciIC1pICIke1N9LyR7VEVTVF9TUkNfRElSfS9NYWtlZmlsZSIKLQotCW1rZGlyIC1wICIke0J9LyR7VEVTVF9TUkNfRElSfSIKLQotCSMgQWRkIHRoZSBsb2NhdGlvbiBvZiB0aGUgY3Jvc3MtY29tcGlsZWQgaGVhZGVyIGFuZCBsaWJyYXJ5IGZpbGVzCi0JIyB3aGljaCBoYXZlbid0IGJlZW4gaW5zdGFsbGVkIHlldC4KLQljcCAiJHtCfS9wcm90b2J1Zi5wYyIgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgotCXNlZCAtZSAnc3xsaWJkaXI9fGxpYmRpcj0ke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9fCcgLWkgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgotCXNlZCAtZSAnc3xDZmxhZ3M6fENmbGFnczogLUkke1N9L3NyY3wnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKLQlzZWQgLWUgJ3N8TGliczp8TGliczogLUwke0J9L3NyYy8ubGlic3wnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKLQlleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIke0J9LyR7VEVTVF9TUkNfRElSfSIKLQotCSMgU2F2ZSB0aGUgcGtnY2ZnIHN5c3Jvb3QgdmFyaWFibGUsIGFuZCB1cGRhdGUgaXQgdG8gbm90aGluZyBzbwotCSMgdGhhdCBpdCBkb2Vzbid0IGFwcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgYmVnaW5uaW5nIG9mIHBhdGhzLgotCSMgVGhlIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcyBhcmVuJ3QgaW5zdGFsbGVkIHRvIHRoZSB0YXJnZXQKLQkjIHN5c3RlbSB5ZXQuICBTbyB0aGUgYWJzb2x1dGUgcGF0aHMgd2VyZSBzcGVjaWZpZWQgYWJvdmUuCi0Jc2F2ZV9wa2dfY29uZmlnX3N5c3Jvb3RfZGlyPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSCi0JZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9Ci0KLQkjIENvbXBpbGUgdGhlIHRlc3RzCi0JZm9yIGxhbmcgaW4gJHtMQU5HX1NVUFBPUlR9OyBkbwotCQlvZV9ydW5tYWtlIC1DICIke1N9LyR7VEVTVF9TUkNfRElSfSIgJHtsYW5nfQotCWRvbmUKLQotCSMgUmVzdG9yZSB0aGUgcGtnY29uZmlnIHN5c3Jvb3QgdmFyaWFibGUKLQlleHBvcnQgUEtHX0NPTkZJR19TWVNST09UX0RJUj0kc2F2ZV9wa2dfY29uZmlnX3N5c3Jvb3RfZGlyCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JbG9jYWwgb2xkZGlyPWBwd2RgCi0KLQkjIEluc3RhbGwgcHJvdG9jIGNvbXBpbGVyCi0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgSW5zdGFsbCBoZWFkZXIgZmlsZXMKLQlleHBvcnQgUFJPVE9DPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcHJvdG9jIgotCWNkICIke1N9LyR7UFlUSE9OX1NSQ19ESVJ9IgotCWRpc3R1dGlsc19kb19pbnN0YWxsCi0KLQljZCAiJG9sZGRpciIKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlsb2NhbCBvbGRkaXI9YHB3ZGAKLQotCWNkICIke1N9LyR7VEVTVF9TUkNfRElSfSIKLQlpbnN0YWxsIC1kICIke0R9LyR7UFRFU1RfUEFUSH0iCi0JZm9yIGkgaW4gYWRkX3BlcnNvbiogbGlzdF9wZW9wbGUqOyBkbwotCQlpZiBbIC14ICIkaSIgXTsgdGhlbgotCQkJaW5zdGFsbCAiJGkiICIke0R9LyR7UFRFU1RfUEFUSH0iCi0JCWZpCi0JZG9uZQotCWNwICIke1N9LyR7VEVTVF9TUkNfRElSfS9hZGRyZXNzYm9va19wYjIucHkiICIke0R9LyR7UFRFU1RfUEFUSH0iCi0JCi0JY2QgIiRvbGRkaXIiCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvY29wdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvY29wdC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY0NjRjMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jb3B0LmluYwpAQCAtMCwwICsxLDkgQEAKK1NVTU1BUlkgPSAiUHl0aG9uaWMgYXJndW1lbnQgcGFyc2VyLCB0aGF0IHdpbGwgbWFrZSB5b3Ugc21pbGUiCitIT01FUEFHRSA9ICJodHRwOi8vZG9jb3B0Lm9yZy8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtTUlUO21kNT0wOWI3N2ZiNzQ5ODY3OTFhM2Q0YTBlNzQ2YTM3ZDg4ZiIKKworaW5oZXJpdCBweXBpCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YmM3NDU2MWIzN2ZhZDVkM2U3ZDAzN2Y4MmE0YzNiMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OWIzYTgyNTI4MGJkNjZiM2FhODM1ODVlZjU5YzRhOGM4MmYyYzhhNTIyZGJlNzU0YThiYzhkMDhjODVjNDkxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnRfMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjAuMS5iYgppbmRleCA4YWMxMjk1Li40N2YxMjY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjAuMS5iYgpAQCAtMTMsNyArMTMsNyBAQAogCiBTUkNOQU1FID0gImdldmVudCIKIAotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvZy9nZXZlbnQvJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL2cvZ2V2ZW50LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgogU1JDX1VSSVttZDVzdW1dID0gIjdiOTUyNTkxZDFhMDE3NGQ2ZWI2YWM0N2JkOTc1YWI2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2MjdlMjE1ZDA1OGY3MWQ5NWU2YjI2ZDllN2JlNGMyNjM3ODhhNDc1NmJkMjg1OGE5Mzc3NWY2YzA3MmRmNDMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXRzZGFuZ2Vyb3VzXzAuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWl0c2Rhbmdlcm91c18wLjI0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTIyOWY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXRzZGFuZ2Vyb3VzXzAuMjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJWYXJpb3VzIGhlbHBlcnMgdG8gcGFzcyB0cnVzdGVkIGRhdGEgdG8gdW50cnVzdGVkIGVudmlyb25tZW50cyBhbmQgYmFjayIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvaXRzZGFuZ2Vyb3VzLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNjE4NDFlMmJmNWYwNzg4NDE0OGUyYTZmMWJjYWIwYyIKLQotUFIgPSAicjAiCi1TUkNOQU1FID0gIml0c2Rhbmdlcm91cyIKLQotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvaS8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTNkNTVhYTc5MzY5YWVmNTM0NWMwMzZhOGEyNjMwN2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2JiM2ZjZjhkM2UzM2RmODYxNzA5ZWNhZjg5ZDllNjYyOWNmZjBhMjE3YmMyODQ4ZjFiNDFjZDMwZDM2MDUxOSIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWpzb24gcHl0aG9uLW5ldGNsaWVudCBweXRob24temxpYiBweXRob24tZGF0ZXRpbWUgcHl0aG9uLWxhbmcgcHl0aG9uLWNyeXB0IgotCi1DTEVBTkJST0tFTiA9ICIxIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvXzAuMjIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yMi4zLmJiCmluZGV4IDk4MTRkM2QuLjk1ZDZlZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yMi4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yMi4zLmJiCkBAIC0xNCw3ICsxNCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9MGNjY2E3MDk3YzFkMjlmYTQyZTc1ZTljMTVjNmZmMmUiCiAKIFNSQ05BTUUgPSAiTTJDcnlwdG8iCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9NL00yQ3J5cHRvLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvTS9NMkNyeXB0by8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9tMmNyeXB0by1GaXgtYnVpbGQtd2l0aC1TV0lHLTMuMC41LnBhdGNoIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWxfMy4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sXzMuMTEuYmIKaW5kZXggOWE2ZjJmNi4uY2IxZGI4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWxfMy4xMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbF8zLjExLmJiCkBAIC0xOCw3ICsxOCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02MDE1ZjA4ODc1OWIxMGUwYmMyYmY2NDg5OGQ0YWUxNyIKIAogU1JDTkFNRSA9ICJQeVlBTUwiCi1TUkNfVVJJID0gImh0dHBzOi8vcHl5YW1sLm9yZy9kb3dubG9hZC9weXlhbWwvJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHA6Ly9weXlhbWwub3JnL2Rvd25sb2FkL3B5eWFtbC8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKIAogU1JDX1VSSVttZDVzdW1dID0gImY1MGUwOGVmMGZlNTUxNzg0NzlkM2E2MThlZmUyMWRiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImMzNmM5MzhhODcyZTVmZjQ5NDkzOGIzM2IxNGFhYTE1NmNiNDM5ZWM2NzU0OGZjYWIzNTM1YmI3OGIwODQ2ZTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuOC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI2Njc4MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL3B5dGhvbi1yZXF1ZXN0cy5vcmciCi1TVU1NQVJZID0gIlB5dGhvbiBIVFRQIGZvciBIdW1hbnMuIgotREVTQ1JJUFRJT04gPSAiXAotICBSZXF1ZXN0cyBpcyBhbiBBcGFjaGUyIExpY2Vuc2VkIEhUVFAgbGlicmFyeSwgd3JpdHRlbiBpbiBQeXRob24sIFwKLSAgZm9yIGh1bWFuIGJlaW5ncy4gXAotICAuICAgICAgXAotICBNb3N0IGV4aXN0aW5nIFB5dGhvbiBtb2R1bGVzIGZvciBzZW5kaW5nIEhUVFAgcmVxdWVzdHMgYXJlIGV4dHJlbWVseSBcCi0gIHZlcmJvc2UgYW5kIGN1bWJlcnNvbWUuIFB5dGhvbidzIGJ1aWx0aW4gdXJsbGliMiBtb2R1bGUgcHJvdmlkZXMgbW9zdCBcCi0gIG9mIHRoZSBIVFRQIGNhcGFiaWxpdGllcyB5b3Ugc2hvdWxkIG5lZWQsIGJ1dCB0aGUgYXBpIGlzIHRob3JvdWdobHkgXAotICBicm9rZW4uICBJdCByZXF1aXJlcyBhbiBlbm9ybW91cyBhbW91bnQgb2Ygd29yayAoZXZlbiBtZXRob2Qgb3ZlcnJpZGVzKSBcCi0gIHRvIHBlcmZvcm0gdGhlIHNpbXBsZXN0IG9mIHRhc2tzLiBcCi0gIC4gICAgICBcCi0gIFRoaW5ncyBzaG91bGRuJ3QgYmUgdGhpcyB3YXkuIE5vdCBpbiBQeXRob24gXAotICAiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU4YzdlMTYzYzlmOGVlMDM3MjQ2ZGExMDFjNmFmZDFlIgotCi1TUkNOQU1FID0gInJlcXVlc3RzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9yL3JlcXVlc3RzLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTI3ZWEzZDcyZDc4MjI5MDZkZGNlNWUyNTJkNmFkZDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRmZThkNWJmNGRjZGNjNDkwMDI0NDZjNDdhMTQ2ZDE3YWMxMGZhY2YwMGQ5MDg2NjU5MDY0YWM0M2I2YzI1YiIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuNy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWRmY2U2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbl8zLjcuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUhPTUVQQUdFID0gImh0dHA6Ly9jaGVlc2VzaG9wLnB5dGhvbi5vcmcvcHlwaS9zaW1wbGVqc29uIgotU1VNTUFSWSA9ICJTaW1wbGUsIGZhc3QsIGV4dGVuc2libGUgSlNPTiBlbmNvZGVyL2RlY29kZXIgZm9yIFB5dGhvbiIKLURFU0NSSVBUSU9OID0gIlwKLSAgSlNPTiA8aHR0cDovL2pzb24ub3JnPiBlbmNvZGVyIGFuZCBkZWNvZGVyIGZvciBQeXRob24gMi41KyBcCi0gIGFuZCBQeXRob24gMy4zKy4gIEl0IGlzIHB1cmUgUHl0aG9uIGNvZGUgd2l0aCBubyBkZXBlbmRlbmNpZXMsIFwKLSAgYnV0IGluY2x1ZGVzIGFuIG9wdGlvbmFsIEMgZXh0ZW5zaW9uIGZvciBhIHNlcmlvdXMgc3BlZWQgYm9vc3QgXAotICAiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWM2MzM4ZDdhYmQzMjFjMGI1MGEyYTU0N2U0NDFjNTJlIgotUFIgPSAicjAiCi0KLVNSQ05BTUUgPSAic2ltcGxlanNvbiIKLQotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy9zaW1wbGVqc29uLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjExNzM0NmU1ZWU0ZWQ0NDM0ZmZlNDg1ZjhlNThmNWVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzZDdmN2IxNGEyMGYyOWY3NDMyNWE2OWU2ZGI0NTkyNWVhZjZlM2EwMDNlYWI0NmMwMjM0ZmQwNTBhOGM5M2YiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHB5dGhvbi1jb3JlIFwKLSAgICBweXRob24tcmUgXAotICAgIHB5dGhvbi1pbyBcCi0gICAgcHl0aG9uLW5ldHNlcnZlciBcCi0gICAgcHl0aG9uLW51bWJlcnMgXAotIgotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI3OWY5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQeXRob24gMiBhbmQgMyBjb21wYXRpYmlsaXR5IHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZmMDBkNGE1MDcxM2ZhODU5ODU4ZGQ5YWJhYTM1YjIxIgotCi1TUkNOQU1FID0gInNpeCIKLQotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM0ZWVkNTA3NTQ4MTE3YjJhYjUyM2FiMTRiMmY4YjU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwNWY4ZDY4NjE2ZjgyNDhlMjRiZjBlOTM3MmVmMDRkM2NjMTAxMDRmMTk4MGY1NGQ1N2IyY2U3M2E1YWQ1NmEiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGhpbnhfMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwaGlueF8xLjQuMS5iYgppbmRleCBiNGFlODZiLi44MzViMzY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwaGlueF8xLjQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwaGlueF8xLjQuMS5iYgpAQCAtNyw3ICs3LDcgQEAKIFBSID0gInIwIgogU1JDTkFNRSA9ICJTcGhpbngiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL1MvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvUy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNGM0OTg4ZTAzMDZhMDRjZWY4ZGNjYzM4NDI4MWU1ODUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzY4NzFhNzg0ZDI0YWJhOTI3MGI2YjI4NTQxNTM3YTU3ZTJmY2Y0ZDdjNzk5NDEwZWJhMTgyMzZiYzc2ZDZiYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MzRlMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jCkBAIC0wLDAgKzEsMjQ0IEBACitERVNDUklQVElPTiA9ICJUd2lzdGVkIGlzIGFuIGV2ZW50LWRyaXZlbiBuZXR3b3JraW5nIGZyYW1ld29yayB3cml0dGVuIGluIFB5dGhvbiBhbmQgbGljZW5zZWQgdW5kZXIgdGhlIExHUEwuIFwKK1R3aXN0ZWQgc3VwcG9ydHMgVENQLCBVRFAsIFNTTC9UTFMsIG11bHRpY2FzdCwgVW5peCBzb2NrZXRzLCBhIGxhcmdlIG51bWJlciBvZiBwcm90b2NvbHMgICAgICAgICAgICAgICAgICAgXAorKGluY2x1ZGluZyBIVFRQLCBOTlRQLCBJTUFQLCBTU0gsIElSQywgRlRQLCBhbmQgb3RoZXJzKSwgYW5kIG11Y2ggbW9yZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnR3aXN0ZWRtYXRyaXguY29tIgorCisjdHdpc3RlZC90b3BmaWxlcy9ORVdTOjY1NTogLSBSZWxpY2Vuc2VkOiBOb3cgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLCByYXRoZXIgdGhhbiBMR1BMLgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01NjAyZDcyMjhkYWY1OWExNmYwZjFiMjY0MGM0NmJjYSIKKworU1JDX1VSSVttZDVzdW1dID0gIjgzZmU2YzBjOTExY2MxNjAyZGJmZmIwMzZiZTBiYTc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5NTE3NTYzOGMwMTlhYzdjMDYwNGY0YzI5MTcyNGExNmZmMWFjZDA2MmUxODFiMDEyOTNiZjRkY2JjNjJjZjMiCisKK1BZUElfUEFDS0FHRSA9ICJUd2lzdGVkIgorUFlQSV9QQUNLQUdFX0VYVCA9ICJ0YXIuYnoyIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIHJlbW92ZSBzb21lIHVzZWxlc3MgZmlsZXMgYmVmb3JlIHBhY2thZ2luZworICAgIGZpbmQgJHtEfSBcKCAtbmFtZSAiKi5iYXQiIC1vIC1uYW1lICIqLmMiIC1vIC1uYW1lICIqLmgiIFwpIC1leGVjIHJtIC1mIHt9IFw7Cit9CisKK1BBQ0tBR0VTICs9ICJcCisgICAgJHtQTn0tenNoIFwKKyAgICAke1BOfS10ZXN0IFwKKyAgICAke1BOfS1wcm90b2NvbHMgXAorICAgICR7UE59LWNvbmNoIFwKKyAgICAke1BOfS1sb3JlIFwKKyAgICAke1BOfS1tYWlsIFwKKyAgICAke1BOfS1uYW1lcyBcCisgICAgJHtQTn0tbmV3cyBcCisgICAgJHtQTn0tcnVubmVyIFwKKyAgICAke1BOfS13ZWIgXAorICAgICR7UE59LXdvcmRzIFwKKyAgICAke1BOfS1mbG93IFwKKyAgICAke1BOfS1wYWlyIFwKKyAgICAke1BOfS1jb3JlIFwKKyIKKworUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1zcmMgXAorICAgICR7UE59LWJpbiBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BOfS1iaW4gXAorICAgICR7UE59LWNvbmNoIFwKKyAgICAke1BOfS1sb3JlIFwKKyAgICAke1BOfS1tYWlsIFwKKyAgICAke1BOfS1uYW1lcyBcCisgICAgJHtQTn0tbmV3cyBcCisgICAgJHtQTn0tcnVubmVyIFwKKyAgICAke1BOfS13ZWIgXAorICAgICR7UE59LXdvcmRzIFwKKyIKKworUkRFUEVORFNfJHtQTn0tY29yZSA9ICJweXRob24tY29yZSBweXRob24tem9wZWludGVyZmFjZSBweXRob24tY29udGV4dGxpYiIKK1JERVBFTkRTXyR7UE59LXRlc3QgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1jb25jaCA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LWxvcmUgPSAiJHtQTn0tY29yZSIKK1JERVBFTkRTXyR7UE59LW1haWwgPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCitSREVQRU5EU18ke1BOfS1uYW1lcyA9ICIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tbmV3cyA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LXJ1bm5lciA9ICIke1BOfS1jb3JlICR7UE59LXByb3RvY29scyIKK1JERVBFTkRTXyR7UE59LXdlYiArPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCitSREVQRU5EU18ke1BOfS13b3JkcyArPSAiJHtQTn0tY29yZSIKK1JERVBFTkRTXyR7UE59LWZsb3cgKz0gIiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS1wYWlyICs9ICIke1BOfS1jb3JlIgorUkRFUEVORFNfJHtQTn0tZGJnID0gIiR7UE59IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorRklMRVNfJHtQTn0gPSAiIgorCitGSUxFU18ke1BOfS10ZXN0ID0gIiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Rlc3QgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qL3Rlc3QgXAorIgorCitGSUxFU18ke1BOfS1wcm90b2NvbHMgPSAiIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzLyoucHkqIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzL2dwcy8gXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wcm90b2NvbHMvbWljZS8gXAorIgorCitGSUxFU18ke1BOfS16c2ggPSAiIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3pzaCBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96c2hjb21wLiogXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdHdpc3RlZC1jb21wbGV0aW9uLnpzaCBcCisiCisKK0ZJTEVTXyR7UE59LWNvbmNoID0gIiBcCisgICAgJHtiaW5kaXJ9L2NrZXlnZW4gXAorICAgICR7YmluZGlyfS90a2NvbmNoIFwKKyAgICAke2JpbmRpcn0vY29uY2ggXAorICAgICR7YmluZGlyfS9jb25jaGZ0cCBcCisgICAgJHtiaW5kaXJ9L2NmdHAgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfY29uY2gucHkqIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY29uY2ggIFwKKyIKKworRklMRVNfJHtQTn0tY29yZSA9ICIgXAorJHtiaW5kaXJ9L21hbmhvbGUgXAorJHtiaW5kaXJ9L21rdGFwIFwKKyR7YmluZGlyfS90d2lzdGQgXAorJHtiaW5kaXJ9L3RhcDJkZWIgXAorJHtiaW5kaXJ9L3RhcDJycG0gXAorJHtiaW5kaXJ9L3RhcGNvbnZlcnQgXAorJHtiaW5kaXJ9L3RrbWt0YXAgXAorJHtiaW5kaXJ9L3RyaWFsIFwKKyR7YmluZGlyfS9lYXN5X2luc3RhbGwqIFwKKyR7YmluZGlyfS9weWh0bWxpemVyIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vKi5zbyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19pbml0X18ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL25vdGVzdHBsdWdpbi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdGVzdHBsdWdpbi5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9mdHAucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfaW5ldC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9tYW5ob2xlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3BvcnRmb3J3YXJkLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3NvY2tzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3RlbG5ldC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF90cmlhbC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvZHJvcGluLmNhY2hlIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY3JlZCBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvZW50ZXJwcmlzZSBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21hbmhvbGUgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21hbmhvbGUgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BlcnNpc3RlZCBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHJvdG9jb2xzXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvblwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vdGltZW91dHF1ZXVlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2ZpbGVwYXRoLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2R4cHJvZmlsZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9wbHVnaW4ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vaHRtbGl6ZXIucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vX19pbml0X18ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZGlzcGF0Y2gucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vaG9vay5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90aHJlYWRwb29sLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL290cC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi91c2FnZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9yb290cy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi92ZXJzaW9ucy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi91cmxwYXRoLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3V0aWwucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcG9uZW50cy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9sb2dmaWxlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3J1bnRpbWUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVmbGVjdC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb250ZXh0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3RocmVhZGFibGUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVidWlsZC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9mYWlsdXJlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2xvY2tmaWxlLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Zvcm1tZXRob2QucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZmluYWxpemUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vd2luMzIucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vZGlzdC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9zaG9ydGN1dC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96aXBzdHJlYW0ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vcmVsZWFzZS5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9zeXNsb2cucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vbG9nLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi96c2hjb21wLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL3Byb2N1dGlscy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi90ZXh0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL190d2lzdGVkX3pzaF9zdHViIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9zY3JpcHRzLyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvc3ByZWFkLyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdGFwLyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9fX2luaXRfXy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL192ZXJzaW9uLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvY29weXJpZ2h0LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW0ucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uLyoucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zLyoucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90b3BmaWxlcyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL1R3aXN0ZWQqZWdnLWluZm8gXAorIgorCitGSUxFU18ke1BOfS1sb3JlID0gIiBcCiske2JpbmRpcn0vYm9va2lmeSBcCiske2JpbmRpcn0vbG9yZSBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX2xvcmUucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9sb3JlIFwKKyIKKworRklMRVNfJHtQTn0tbWFpbCA9ICIgXAorJHtiaW5kaXJ9L21haWxtYWlsIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfbWFpbC5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL21haWwgXAorIgorCitGSUxFU18ke1BOfS1uYW1lcyA9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9uYW1lcy5weSogXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL25hbWVzIFwKKyIKKworRklMRVNfJHtQTn0tbmV3cyA9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9uZXdzLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvbmV3cyBcCisiCisKK0ZJTEVTXyR7UE59LXJ1bm5lciA9ICIgXAorJHtsaWJkaXJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9ydW5uZXIvcG9ydG1hcC5zbyBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcnVubmVyXAorIgorCitGSUxFU18ke1BOfS13ZWIgPSAiIFwKKyR7YmluZGlyfS93ZWJzZXRyb290IFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfd2ViLnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvd2ViXAorIgorCitGSUxFU18ke1BOfS13b3JkcyA9ICIgXAorJHtiaW5kaXJ9L2ltIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL3R3aXN0ZWRfd29yZHMucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC93b3Jkc1wKKyIKKworRklMRVNfJHtQTn0tZmxvdyA9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvdHdpc3RlZF9mbG93LnB5KiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvZmxvdyBcIgorCitGSUxFU18ke1BOfS1wYWlyID0gIiBcCiske2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy90d2lzdGVkX3BhaXIucHkqIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wYWlyIFwKKyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIgXAorJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovLmRlYnVnIFwKKyR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC8qLyovLmRlYnVnIFwKKyIKKworUkRFUEVORFNfe1BOfS1zcmMgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1zcmMgPSAiIFwKKyAgICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvKi5weSBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovKi5weSBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkLyovKi8qLnB5IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vib2JfMS42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYm9iXzEuNi4wLmJiCmluZGV4IDkzZjJhY2YuLjcxYzc0ZmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vib2JfMS42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJvYl8xLjYuMC5iYgpAQCAtNyw3ICs3LDcgQEAKIFBSID0gInIwIgogU1JDTkFNRSA9ICJXZWJPYiIKIAotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvVy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9XLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwODlkN2ZjNjc0NWYxNzU3Mzc4MDAyMzdjNzI4NzgwMiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2M2QyNjJkOGY2MWI1MTYzMjFmNzg2ODc5YzkyNzdmYTIyMDlmN2Y1N2ViNDdiNTM3ZWVlY2ZlYTM4M2Q1NWI3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGVkLXByb3BlcnR5XzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGVkLXByb3BlcnR5XzEuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMWFhYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYWNoZWQtcHJvcGVydHlfMS4zLjAuYmIKQEAgLTAsMCArMSw5IEBACitTVU1NQVJZID0gIkEgZGVjb3JhdG9yIGZvciBjYWNoaW5nIHByb3BlcnRpZXMgaW4gY2xhc3Nlcy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlkYW5ueS9jYWNoZWQtcHJvcGVydHkiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRiN2ZmNjBjNGUxNGY1ODUzNDIwMTI0MjgwM2Q4YWJjIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjRhNjAzOWY3NDE4MDA3Mjc1NTA1ZTM1NTM1OTM5NmE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1OGU3OGIxYzcyODZlY2U4ODdkOTJjOWJlZTgyOWRhODU3MTc5OTRjNWUzZGRkMjUzYTQwNDY3ZjQ4OGJjODEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb2xvcmFtYV8wLjMuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbG9yYW1hXzAuMy45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1OGIwZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb2xvcmFtYV8wLjMuOS5iYgpAQCAtMCwwICsxLDkgQEAKK1NVTU1BUlkgPSAiQ3Jvc3MtcGxhdGZvcm0gY29sb3JlZCB0ZXJtaW5hbCB0ZXh0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90YXJ0bGV5L2NvbG9yYW1hIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MTRkMGI2NDA0N2VkOGY1MTBiNTFjZTA0OTU5OTUzNTgiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiM2EwZTQxNTI1OTY5MGY0ZGQ3NDU1YzI2ODNlZTU4NTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDhlYjIyZjRmODQ2MWIxZGY1NzM0YTA3NGI1NzA0MjQzMGZiMDZlMWQ2MWJkMWUxMWIwNzhjMGZlNmQ3YTFmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY2tlci1weWNyZWRzXzAuMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9ja2VyLXB5Y3JlZHNfMC4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAzODQxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY2tlci1weWNyZWRzXzAuMi4xLmJiCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBkb2NrZXIgY3JlZGVudGlhbHMgc3RvcmUgQVBJIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NoaW4tL2RvY2tlcnB5LWNyZWRzIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiMGQ4MGQ1YWViYWI3NzFmYWY3ZTQyMmI3NTljMzA1NWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTM4MzNhMmNmMjgwYjdkOGFiYmUxYjgxMjE1MzA0MTMyNTBjNmNkNGZmZWQyYzFjZjA4NWYzMzUyNjJmNzM0OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY2tlcl8yLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY2tlcl8yLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDFkOTVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9ja2VyXzIuNS4xLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiQSBQeXRob24gbGlicmFyeSBmb3IgdGhlIERvY2tlciBFbmdpbmUgQVBJLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyLXB5IgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzRmMzg0NmY5NDA0NTMxMjczMDliOTIwZWViODk2NjAiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiN2Q5MTcxNTI5NzZkZjA3NWU2ZTkwZWU4NTNkZjY0MWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjg3NmU2OTA5ZDhkMjM2MGUwNTQwMzY0YzNhOTUyYTYyODQ3MTM3ZjQ2NzRmMjQzOTMyMGVkZTE2ZDZkYjg4MCIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXBpcC1uYXRpdmUiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorCXB5dGhvbjMtZG9ja2VyLXB5Y3JlZHMgXAorCXB5dGhvbjMtcmVxdWVzdHMgXAorCXB5dGhvbjMtd2Vic29ja2V0LWNsaWVudCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2NrZXJwdHlfMC40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2NrZXJwdHlfMC40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQwZjJhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY2tlcnB0eV8wLjQuMS5iYgpAQCAtMCwwICsxLDkgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGxpYnJhcnkgdG8gdXNlIHRoZSBwc2V1ZG8tdHR5IG9mIGEgZG9ja2VyIGNvbnRhaW5lciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kMTF3dHEvZG9ja2VycHR5IgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWZhZjc2N2JhYTIwYWM1MjRkYzEyZjEwNzFjYTQ5M2EiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiMDI4YmFjYjM0NTM2ZjNlZTZhMmNjZDY2OGMyN2U4ZTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjlhOWQ2OWQ1NzNhMGRhYTMxYmNkMWMwNzc0ZWVlZDVjMTVjMjk1ZmU3MTljNjFhY2E1NTBlZDEzOTMxNTZjZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY29wdF8wLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY29wdF8wLjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjM3NDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jb3B0XzAuNi4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZG9jb3B0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGV4dHRhYmxlXzAuOS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGV4dHRhYmxlXzAuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZTQwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXh0dGFibGVfMC45LjEuYmIKQEAgLTAsMCArMSw5IEBACitTVU1NQVJZID0gIm1vZHVsZSBmb3IgY3JlYXRpbmcgc2ltcGxlIEFTQ0lJIHRhYmxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9mb3V0YWlzZS90ZXh0dGFibGUvIgorTElDRU5TRSA9ICJMR1BMLTMuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImE3MTJiNWE1NDY0ZDUxYzVmYzQzYzY0ZDlkMmNkMGRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExOTA0MTc3M2ZmMDM1OTZiNTYzOTI1MzJmOTMxNWNiM2EzMTE2ZTQwNGZkNmYzNmU3NmE3ZGMwODhkOTVjNzkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzEzLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTMuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MDE2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzEzLjIuMC5iYgpAQCAtMCwwICsxLDY3IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXR3aXN0ZWQuaW5jCisKK1JERVBFTkRTXyR7UE59LWNvcmUgPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtem9wZWludGVyZmFjZSBweXRob24zLWxhbmciCisKK0ZJTEVTXyR7UE59LWNvcmVfYXBwZW5kICs9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvX19weWNhY2hlX18gXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL19fcHljYWNoZV9fLypweWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy9fX2luaXRfXyoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vbm90ZXN0cGx1Z2luKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90ZXN0cGx1Z2luKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2Z0cCoucHljIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9pbmV0Ki5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX21hbmhvbGUqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcG9ydGZvcndhcmQqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfc29ja3MqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfdGVsbmV0Ki5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3RyaWFsKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX2NvcmUqLnB5YyBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcXRzdHViKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3JlYWN0b3JzKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy9jcmVkKi5weWMgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy9kcm9waW4qLmNhY2hlIFwKKyIKKworRklMRVNfJHtQTn0tbmFtZXNfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbmFtZXMqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LW5ld3NfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbmV3cyoucHljIFwKKyIKKworRklMRVNfJHtQTn0tcHJvdG9jb2xzX2FwcGVuZCArPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3Byb3RvY29scy9fX3B5Y2FjaGVfXy8qcHljIFwKKyIKKworRklMRVNfJHtQTn0tY29uY2hfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfY29uY2gqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LWxvcmVfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbG9yZSoucHljIFwKKyIKK0ZJTEVTXyR7UE59LW1haWxfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfbWFpbCoucHljIFwKKyIKKworRklMRVNfJHtQTn0td2ViX2FwcGVuZCA9ICIgXAorICAke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcGx1Z2lucy9fX3B5Y2FjaGVfXy90d2lzdGVkX3dlYioucHljIFwKKyIKKworRklMRVNfJHtQTn0td29yZHNfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfd29yZHMqLnB5YyBcCisiCisKK0ZJTEVTXyR7UE59LWZsb3dfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfZmxvdyoucHljIFwKKyIKKworRklMRVNfJHtQTn0tcGFpcl9hcHBlbmQgPSAiIFwKKyAgJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3BsdWdpbnMvX19weWNhY2hlX18vdHdpc3RlZF9wYWlyKi5weWMgXAorIgorCitGSUxFU18ke1BOfS1ydW5uZXJfYXBwZW5kID0gIiBcCisgICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9wbHVnaW5zL19fcHljYWNoZV9fL3R3aXN0ZWRfcnVubmVyKi5weWMgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0LWNsaWVudF8wLjQ0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJzb2NrZXQtY2xpZW50XzAuNDQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGZjOTVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0LWNsaWVudF8wLjQ0LjAuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJXZWJTb2NrZXQgY2xpZW50IGZvciBweXRob24uIGh5YmkxMyBpcyBzdXBwb3J0ZWQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldC1jbGllbnQvd2Vic29ja2V0LWNsaWVudC5naXQiCitMSUNFTlNFID0gIkxHUEwtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MThiMDlhMjBkZDE4NmFmNGZkNjBmMWEwODMxMTYyOGMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitQWVBJX1BBQ0tBR0UgPSAid2Vic29ja2V0X2NsaWVudCIKKworU1JDX1VSSVttZDVzdW1dID0gIjczZDg3YWExNmEyMjEyZGE0NDhiMzBhY2E5YzViZjNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1ZjU4NTU2NmUyZWE3NDU5MTM2YTYzMmI5Nzg1YWEwODEwOTMwNjQzOTE4NzhhNDQ4YzM4MjQxNWU5NDhkNzIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2Rpb2RfMS4wLjI0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9kaW9kXzEuMC4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGQxNTlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9kaW9kXzEuMC4yNC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkRpb2QgaXMgYSB1c2VyIHNwYWNlIHNlcnZlciBmb3IgdGhlIGtlcm5lbCB2OWZzIGNsaWVudC4iCitERVNDUklQVElPTiA9ICJcCitEaW9kIGlzIGEgdXNlciBzcGFjZSBzZXJ2ZXIgZm9yIHRoZSBrZXJuZWwgdjlmcyBjbGllbnQgKDlwLmtvLCA5cG5ldC5rbykuIFwKK0FsdGhvdWdoIHRoZSBrZXJuZWwgY2xpZW50IHN1cHBvcnRzIHNldmVyYWwgOVAgdmFyaWFudHMsIGRpb2Qgb25seSBzdXBwb3J0cyBcCis5UDIwMDAuTCwgYW5kIG9ubHkgaW4gaXRzIGZlYXR1cmUtY29tcGxldGUgZm9ybSwgYXMgaXQgYXBwZWFyZWQgaW4gMi42LjM4LiIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK1BWID0gIjEuMC4yNCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICIwZWEzZmUzZDgyOWI1MDg1MzA3Y2QyN2E1MTI3MDhkOTllZjQ4MTk5IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NoYW9zL2Rpb2QuZ2l0O3Byb3RvY29sPWdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9kaW9kIFwKKyAgICAgICAgICAgZmlsZTovL2Rpb2QuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWFsbG93LWJ1aWxkcy10by13b3JrLXdpdGgtc2VwYXJhdGUtYnVpbGQtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItYXV0by5kaW9kLmluLXJlbW92ZS1iYXNoaXNtcy5wYXRjaCBcCisgICAgICAgICAgIgorREVQRU5EUyA9ICJsaWJjYXAgbmN1cnNlcyB0Y3Atd3JhcHBlcnMgbHVhIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAgICAgIyBpbnN0YWxsIG91ciBpbml0IGJhc2VkIG9uIHN0YXJ0LXN0b3AtZGFlbW9uCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2Rpb2QgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Rpb2QKKyAgICAgICAgIyBpbnN0YWxsIGEgcmVhbChub3QgY29tbWVudGVkKSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIGRpb2QKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGlvZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2Rpb2QuY29uZgorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy8wMDAxLWJ1aWxkLWFsbG93LWJ1aWxkcy10by13b3JrLXdpdGgtc2VwYXJhdGUtYnVpbGQtZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy8wMDAxLWJ1aWxkLWFsbG93LWJ1aWxkcy10by13b3JrLXdpdGgtc2VwYXJhdGUtYnVpbGQtZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MGUwZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2ZpbGVzLzAwMDEtYnVpbGQtYWxsb3ctYnVpbGRzLXRvLXdvcmstd2l0aC1zZXBhcmF0ZS1idWlsZC1kaXIucGF0Y2gKQEAgLTAsMCArMSwxMjYgQEAKK0Zyb20gNDM0MDM0NjgyOThlZjQxNjdiYWE1ZDg0ZGUyZWUyZWFmN2Y0MDA3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDkgSmFuIDIwMTUgMTg6MzQ6MDQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGJ1aWxkOiBhbGxvdyBidWlsZHMgdG8gd29yayB3aXRoIHNlcGFyYXRlIGJ1aWxkIGRpcgorCitSZW1vdmUgYXNzdW1wdGlvbnMgaW4gaW5jbHVkZSBwYXRocyB0aGF0IGFzc3VtZSB0aGUgYnVpbGQKK2lzIGhhcHBlbmluZyBpbiB0aGUgc291cmNlIGRpcmVjdG9yaWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorLS0tCisgZGlvZC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgfCAyICstCisgbGliZGlvZC9NYWtlZmlsZS5hbSAgICAgICAgICAgfCAyICstCisgbGlibHNkL01ha2VmaWxlLmFtICAgICAgICAgICAgfCAyICstCisgbGlibnBjbGllbnQvTWFrZWZpbGUuYW0gICAgICAgfCAyICstCisgc2NyaXB0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgfCA2ICsrKy0tLQorIHRlc3RzL2tlcm4vZGJlbmNoL01ha2VmaWxlLmFtIHwgNCArKy0tCisgdXRpbHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Rpb2QvTWFrZWZpbGUuYW0gYi9kaW9kL01ha2VmaWxlLmFtCitpbmRleCA3NjQ0YmU3Li5mZGFmMTMwIDEwMDY0NAorLS0tIGEvZGlvZC9NYWtlZmlsZS5hbQorKysrIGIvZGlvZC9NYWtlZmlsZS5hbQorQEAgLTEsNyArMSw3IEBACisgQU1fQ0ZMQUdTID0gQEdDQ1dBUk5ACisgCisgQU1fQ1BQRkxBR1MgPSBcCistCS1JLi4vbGlibnBmcyAtSS4uL2xpYmxzZCAtSS4uL2xpYmRpb2QKKysJLUkkKHNyY2RpcikvLi4vbGlibnBmcyAtSSQoc3JjZGlyKS8uLi9saWJsc2QgLUkkKHNyY2RpcikvLi4vbGliZGlvZAorIAorIHNiaW5fUFJPR1JBTVMgPSBkaW9kCisgCitkaWZmIC0tZ2l0IGEvbGliZGlvZC9NYWtlZmlsZS5hbSBiL2xpYmRpb2QvTWFrZWZpbGUuYW0KK2luZGV4IDQ4MTBlMTQuLjY5MDVjZGQgMTAwNjQ0CistLS0gYS9saWJkaW9kL01ha2VmaWxlLmFtCisrKysgYi9saWJkaW9kL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyBBTV9DRkxBR1MgPSBAR0NDV0FSTkAKKyAKKyBBTV9DUFBGTEFHUyA9IFwKKy0JLUkuLi9saWJucGZzIC1JLi4vbGlibnBjbGllbnQgLUkuLi9saWJsc2QKKysJLUkkKHNyY2RpcikvLi4vbGlibnBmcyAtSSQoc3JjZGlyKS8uLi9saWJucGNsaWVudCAtSSQoc3JjZGlyKS8uLi9saWJsc2QKKyAKKyBub2luc3RfTElCUkFSSUVTID0gbGliZGlvZC5hCisgCitkaWZmIC0tZ2l0IGEvbGlibHNkL01ha2VmaWxlLmFtIGIvbGlibHNkL01ha2VmaWxlLmFtCitpbmRleCBjM2U1NjU4Li43ZTE4YmY4IDEwMDY0NAorLS0tIGEvbGlibHNkL01ha2VmaWxlLmFtCisrKysgYi9saWJsc2QvTWFrZWZpbGUuYW0KK0BAIC0xLDYgKzEsNiBAQAorIEFNX0NGTEFHUyA9IEBHQ0NXQVJOQAorIAorLUFNX0NQUEZMQUdTID0gLUkuLi9saWJkaW9kCisrQU1fQ1BQRkxBR1MgPSAtSSQoc3JjZGlyKS8uLi9saWJkaW9kCisgCisgbm9pbnN0X0xJQlJBUklFUyA9IGxpYmxzZC5hCisgCitkaWZmIC0tZ2l0IGEvbGlibnBjbGllbnQvTWFrZWZpbGUuYW0gYi9saWJucGNsaWVudC9NYWtlZmlsZS5hbQoraW5kZXggNTMwNWRmOS4uY2JhZjI2NiAxMDA2NDQKKy0tLSBhL2xpYm5wY2xpZW50L01ha2VmaWxlLmFtCisrKysgYi9saWJucGNsaWVudC9NYWtlZmlsZS5hbQorQEAgLTEsNyArMSw3IEBACisgQU1fQ0ZMQUdTID0gQEdDQ1dBUk5ACisgCisgQU1fQ1BQRkxBR1MgPSBcCistCS1JLi4vbGlibnBmcworKwktSSQoc3JjZGlyKS8uLi9saWJucGZzCisgCisgbm9pbnN0X0xJQlJBUklFUyA9IGxpYm5wY2xpZW50LmEKKyAKK2RpZmYgLS1naXQgYS9zY3JpcHRzL01ha2VmaWxlLmFtIGIvc2NyaXB0cy9NYWtlZmlsZS5hbQoraW5kZXggNTFjMjRhMy4uMmFiYTcyOCAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvTWFrZWZpbGUuYW0KKysrKyBiL3NjcmlwdHMvTWFrZWZpbGUuYW0KK0BAIC0xLDkgKzEsOSBAQAorLXN5c3RlbWRkaXI9JChzeXNjb25mZGlyKS9zeXN0ZW1kL3N5c3RlbQorK3N5c3RlbWRkaXI9L2xpYi9zeXN0ZW1kL3N5c3RlbQorIAorIGluc3RhbGwtZGF0YS1sb2NhbDoKKy0JJCh0b3Bfc3JjZGlyKS9jb25maWcvaW5zdGFsbC1zaCAtbSA3NTUgJChzcmNkaXIpL2F1dG8uZGlvZCBcCisrCSQodG9wX3NyY2RpcikvY29uZmlnL2luc3RhbGwtc2ggLW0gNzU1IC4vYXV0by5kaW9kIFwKKyAJCSQoREVTVERJUikkKHN5c2NvbmZkaXIpL2F1dG8uZGlvZAorLQkkKHRvcF9zcmNkaXIpL2NvbmZpZy9pbnN0YWxsLXNoIC1tIDc1NSAkKHNyY2RpcikvZGlvZC5zZXJ2aWNlIFwKKysJJCh0b3Bfc3JjZGlyKS9jb25maWcvaW5zdGFsbC1zaCAtbSA2NDQgLi9kaW9kLnNlcnZpY2UgXAorIAkJJChERVNURElSKSQoc3lzdGVtZGRpcikvZGlvZC5zZXJ2aWNlCisgCisgdW5pbnN0YWxsLWxvY2FsOgorZGlmZiAtLWdpdCBhL3Rlc3RzL2tlcm4vZGJlbmNoL01ha2VmaWxlLmFtIGIvdGVzdHMva2Vybi9kYmVuY2gvTWFrZWZpbGUuYW0KK2luZGV4IGUwY2RlZmEuLjE3MDRmOWYgMTAwNjQ0CistLS0gYS90ZXN0cy9rZXJuL2RiZW5jaC9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMva2Vybi9kYmVuY2gvTWFrZWZpbGUuYW0KK0BAIC0yLDcgKzIsNyBAQCBBTV9DRkxBR1MgPSAtdworIAorICMgVkVSU0lPTj00LjAwCisgCistQU1fQ1BQRkxBR1MgPSAtRERBVEFESVI9XCIkKFhfREFUQURJUilcIgorK0FNX0NQUEZMQUdTID0gLUkuIC1EREFUQURJUj1cIiQoWF9EQVRBRElSKVwiCisgCisgTERBREQgPSAkKExJQlBPUFQpCisgCitAQCAtMjUsNiArMjUsNiBAQCBCVUlMVF9TT1VSQ0VTID0gcHJvdG8uaAorIENMRUFORklMRVMgPSBwcm90by5oCisgCisgcHJvdG8uaDogJChkYmVuY2hfU09VUkNFUykgbWtwcm90by5wbAorLQlwZXJsIG1rcHJvdG8ucGwgJChkYmVuY2hfU09VUkNFUykgPiBwcm90by5oCisrCSQoc3JjZGlyKS9ta3Byb3RvLnBsICQocGF0c3Vic3QgJSwkKHNyY2RpciksJChkYmVuY2hfU09VUkNFUykpID4gcHJvdG8uaAorIAorIEVYVFJBX0RJU1QgPSBta3Byb3RvLnBsCitkaWZmIC0tZ2l0IGEvdXRpbHMvTWFrZWZpbGUuYW0gYi91dGlscy9NYWtlZmlsZS5hbQoraW5kZXggMTY5YjZjNC4uOTFkNTcxZCAxMDA2NDQKKy0tLSBhL3V0aWxzL01ha2VmaWxlLmFtCisrKysgYi91dGlscy9NYWtlZmlsZS5hbQorQEAgLTEsNyArMSw3IEBACisgQU1fQ0ZMQUdTID0gQEdDQ1dBUk5ACisgCisgQU1fQ1BQRkxBR1MgPSBcCistCS1JLi4vbGlibnBmcyAtSS4uL2xpYmxzZCAtSS4uL2xpYmRpb2QgLUkuLi9saWJucGNsaWVudAorKwktSSQoc3JjZGlyKS8uLi9saWJucGZzIC1JJChzcmNkaXIpLy4uL2xpYmxzZCAtSSQoc3JjZGlyKS8uLi9saWJkaW9kIC1JJChzcmNkaXIpLy4uL2xpYm5wY2xpZW50CisgCisgc2Jpbl9QUk9HUkFNUyA9IGRpb2Rtb3VudCBkaW9kY2F0IGR0b3AgZGlvZGxvYWQgZGlvZGxzIGRpb2RzaG93bW91bnQgZGlvZGRhdGUKKyAKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2Rpb2QvZmlsZXMvMDAwMi1hdXRvLmRpb2QuaW4tcmVtb3ZlLWJhc2hpc21zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy8wMDAyLWF1dG8uZGlvZC5pbi1yZW1vdmUtYmFzaGlzbXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVkNmZmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2Rpb2QvZmlsZXMvMDAwMi1hdXRvLmRpb2QuaW4tcmVtb3ZlLWJhc2hpc21zLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNWE5ZTA5ZGM1ZGU4MzNkYjExNjA3NTMwMzUxY2Q4N2NlY2JmZDE3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjIgSnVuIDIwMTcgMDY6MzI6MzAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGF1dG8uZGlvZC5pbjogcmVtb3ZlIGJhc2hpc21zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzY3JpcHRzL2F1dG8uZGlvZC5pbiB8IDE0ICsrKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvYXV0by5kaW9kLmluIGIvc2NyaXB0cy9hdXRvLmRpb2QuaW4KK2luZGV4IGY2M2UwMDQuLjRkNWZjM2EgMTAwNzU1CistLS0gYS9zY3JpcHRzL2F1dG8uZGlvZC5pbgorKysrIGIvc2NyaXB0cy9hdXRvLmRpb2QuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgIworICMgYXV0by5kaW9kIC0gZXhlY3V0YWJsZSBhdXRvbW91bnRlciBtYXAgZm9yIGRpb2QgZmlsZSBzeXN0ZW1zCisgIworQEAgLTQxLDE1ICs0MSwxNSBAQCBkY2F0b3B0cz0iJHtESU9EX1RJTUVPVVQ6Ky10ICRESU9EX1RJTUVPVVR9IgorIGZvciBzZXJ2ZXIgaW4gJERJT0RfU0VSVkVSUzsgZG8KKyAgICAgJERJT0RfRElPRENBVCAtcyAkc2VydmVyICRkY2F0b3B0cyBleHBvcnRzIHwgYXdrICd7cHJpbnQgJDF9JyB8XAorICAgICB3aGlsZSByZWFkIHBhdGg7IGRvCistICAgICAgICBpZiBbICIkcGF0aCIgPT0gIi8iIF07IHRoZW4KKy0gICAgICAgICAgICBpZiBbICIka2V5IiA9PSAiUk9PVCIgXTsgdGhlbgorKyAgICAgICAgaWYgWyAiJHBhdGgiID0gIi8iIF07IHRoZW4KKysgICAgICAgICAgICBpZiBbICIka2V5IiA9ICJST09UIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgIGVjaG8gIiRwcmVmaXggJHNlcnZlcjokcGF0aCIKKyAgICAgICAgICAgICAgICAgZXhpdCAwCisgICAgICAgICAgICAgZmkKKy0gICAgICAgIGVsaWYgWyAiJGtleSIgPT0gIiQoZWNobyAkcGF0aHxzZWQgLWUncy9eXC8vLycgLWUncy9cLy8uL2cnKSIgXSBcCistICAgICAgICAgIHx8IFsgIiRrZXkiID09ICIkKGVjaG8gJHBhdGh8c2VkIC1lJ3MvXlwvLy8nIC1lJ3MvXC8vXy9nJykiIF0gXAorLSAgICAgICAgICB8fCBbICIka2V5IiA9PSAiJChlY2hvICRwYXRofHNlZCAtZSdzL15cLy8vJyAtZSdzL1wvLy0vZycpIiBdIFwKKy0gICAgICAgICAgfHwgWyAiJGtleSIgPT0gIiQoYmFzZW5hbWUgJHBhdGgpIiBdOyB0aGVuCisrICAgICAgICBlbGlmIFsgIiRrZXkiID0gIiQoZWNobyAkcGF0aHxzZWQgLWUncy9eXC8vLycgLWUncy9cLy8uL2cnKSIgXSBcCisrICAgICAgICAgIHx8IFsgIiRrZXkiID0gIiQoZWNobyAkcGF0aHxzZWQgLWUncy9eXC8vLycgLWUncy9cLy9fL2cnKSIgXSBcCisrICAgICAgICAgIHx8IFsgIiRrZXkiID0gIiQoZWNobyAkcGF0aHxzZWQgLWUncy9eXC8vLycgLWUncy9cLy8tL2cnKSIgXSBcCisrICAgICAgICAgIHx8IFsgIiRrZXkiID0gIiQoYmFzZW5hbWUgJHBhdGgpIiBdOyB0aGVuCisgICAgICAgICAgICAgZWNobyAiJHByZWZpeCAkc2VydmVyOiRwYXRoIgorICAgICAgICAgICAgIGV4aXQgMAorICAgICAgICAgZmkKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2Rpb2QvZmlsZXMvZGlvZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2Rpb2QvZmlsZXMvZGlvZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDBiZjk4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy9kaW9kCkBAIC0wLDAgKzEsNzUgQEAKKyMhL2Jpbi9zaAorIworIyBjaGtjb25maWc6IDM1IDIwIDgwCisjIGRlc2NyaXB0aW9uOiBEaXN0cmlidXRlZCBJbnB1dCBPdXRwdXQgRGFlbW9uIAorIworCisjIEdldCBmdW5jdGlvbiBmcm9tIGZ1bmN0aW9ucyBsaWJyYXJ5CisuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworCitCQVNFPWRpb2QKK1BJREZJTEU9L3Zhci9ydW4vJEJBU0UucGlkCitQSUQ9YHRlc3QgLWYgJFBJREZJTEUgJiYgY2F0ICRQSURGSUxFYAorRElPRF9CSU49L3Vzci9zYmluLyRCQVNFCitESU9EX0NPTkY9L2V0Yy8kQkFTRS5jb25mCitESU9EX09QVFM9Ii1jICRESU9EX0NPTkYiCitESU9EPSIkRElPRF9CSU4gJERJT0RfT1BUUyIKK1JFVFZBTD0wCisKKyMgU3RhcnQgdGhlIHNlcnZpY2UgJEJBU0UKK3N0YXJ0KCkKK3sKKyAgICAgICAjIEZvcmNlIGNyZWF0aW9uIG9mIHRoZSBsb2cgZGlyZWN0b3J5IGV2ZW4gb24gYSB0bXBmcyAvdmFyL2xvZy4KKyAgICAgICBta2RpciAtcCAvdmFyL2xvZy9kaW9kCisKKyAgICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS10ZXN0IC0tcXVpZXQgLS1waWRmaWxlICRQSURGSUxFCisgICAgICAgc3RhdHVzPSQ/CisgICAgICAgaWYgWyAkc3RhdHVzIC1lcSAwIF07IHRoZW4KKyAgICAgICAgICAgZWNobyAiZGlvZCBzZXJ2aWNlIGlzIGFscmVhZHkgcnVubmluZyB3aXRoIHBpZCAkUElEIgorICAgICAgICAgICBleGl0IDEKKyAgICAgICBlbHNlCisgICAgICAgICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRCQVNFOiIKKyAgICAgICAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXBpZGZpbGUgJFBJREZJTEUgXAorCSAgICAgLS1leGVjICRESU9EX0JJTiAtLSAkRElPRF9PUFRTCisgICAgICAgICAgIFJFVFZBTD0kPworICAgICAgICAgICBlY2hvCisgICAgICAgICAgIFsgJFJFVFZBTCAtbmUgMCBdICYmIGV4aXQgJFJFVFZBTAorICAgICAgIGZpCit9CisKKyMgU3RvcCB0aGUgc2VydmljZSAkQkFTRQorc3RvcCgpCit7CisgICAgZWNobyAtbiAiU3RvcHBpbmcgJEJBU0U6IgorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXRlc3QgLS1xdWlldCAtLXBpZGZpbGUgJFBJREZJTEUKKyAgICBzdGF0dXM9JD8KKyAgICBpZiBbICRzdGF0dXMgLWVxIDAgXTsgdGhlbgorICAgICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXBpZGZpbGUgJFBJREZJTEUKKyAgICAgICAgWyAtdyAkUElERklMRSBdICYmIHJtIC1mICRQSURGSUxFCisgICAgZWxzZQorCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tbmFtZSAkQkFTRQorICAgIGZpCit9CisKKworIyMjIHNlcnZpY2UgYXJndW1lbnRzICMjIworY2FzZSAkMSBpbgorICAgIHN0YXJ0KQorICAgICAgICBzdGFydAorICAgICAgICA7OworICAgIHN0b3ApCisgICAgICAgIHN0b3AKKyAgICAgICAgOzsKKyAgICBzdGF0dXMpCisgICAgICAgIHN0YXR1cyAkQkFTRQorICAgICAgICA7OworICAgIHJlc3RhcnQgfCBmb3JjZS1yZWxvYWQpCisgICAgICAgICQwIHN0b3AKKyAgICAgICAgJDAgc3RhcnQKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBlY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR9LiIKKyAgICAgICAgZXhpdCAxCitlc2FjCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy9kaW9kLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9kaW9kL2ZpbGVzL2Rpb2QuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTc3NDNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvZGlvZC9maWxlcy9kaW9kLmNvbmYKQEAgLTAsMCArMSwxNSBAQAorLS0KKy0tIC9ldGMvZGlvZC5jb25mIC0gY29uZmlnIGZpbGUgZm9yIGRpb2QgZGlzdHJpYnV0ZWQgSS9PIGRhZW1vbgorLS0KKy0tIE5PVEU6IFRoaXMgY29uZmlnIGZpbGUgaXMgYSBsdWEgc2NyaXB0IHRoYXQgZGlvZCBydW5zLCB0aGVuIGV4dHJhY3RzCistLSB0aGUgdmFsdWUgb2YgY2VydGFpbiBnbG9iYWxseSBkZWZpbmVkIHZhcmlhYmxlcy4gIFNlZSBkaW9kLmNvbmYoNSkuCisKK2xpc3RlbiA9IHsgIjAuMC4wLjA6NTY0IiB9Citud3RocmVhZHMgPSAxNgorYXV0aF9yZXF1aXJlZCA9IDEKK2xvZ2Rlc3QgPSAic3lzbG9nOmRhZW1vbjplcnIiCisKK2V4cG9ydHMgPSB7ICIvZy9nMCIsICIvZy9nMTAiIH0KKworYWxsc3F1YXNoID0gMAorc3F1YXNodXNlciA9ICJub2JvZHkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY2xvdWQtaW1hZ2UtY29udHJvbGxlci5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jbG91ZC1pbWFnZS1jb250cm9sbGVyLmJiCmluZGV4IDBiMmE2N2IuLmM4MTY1NDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jbG91ZC1pbWFnZS1jb250cm9sbGVyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jbG91ZC1pbWFnZS1jb250cm9sbGVyLmJiCkBAIC0zLDcgKzMsNiBAQAogCiBJTUFHRV9JTlNUQUxMID0gIlwKICAgICAke0NPUkVfSU1BR0VfQkFTRV9JTlNUQUxMfSBcCi0gICAgJHtST09URlNfUEtHTUFOQUdFX0JPT1RTVFJBUH0gXAogICAgIHBhY2thZ2Vncm91cC1jb3JlLWJhc2ljIFwKICAgICBvcGVudnN3aXRjaCBcCiAgICAgb3BlbnZzd2l0Y2gtY29udHJvbGxlciBcCkBAIC0yNiw5ICsyNSw4IEBACiAgICAgIgogCiBpbmhlcml0IGNvcmUtaW1hZ2UKLWluaGVyaXQgaW1hZ2Utdm0KIAotSU1BR0VfRlNUWVBFUyA9ICJ2bWRrIHRhci5neiIKK0lNQUdFX0ZTVFlQRVMgPSAid2ljLnZtZGsgdGFyLmd6IgogCiAjIEVuc3VyZSBleHRyYSBzcGFjZSBmb3IgZ3Vlc3QgaW1hZ2VzCiAjSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjQxOTQzMDQwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2Nsb3VkLWltYWdlLWd1ZXN0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2Nsb3VkLWltYWdlLWd1ZXN0LmJiCmluZGV4IGUyNGJmMGQuLjI5NTc1MDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jbG91ZC1pbWFnZS1ndWVzdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY2xvdWQtaW1hZ2UtZ3Vlc3QuYmIKQEAgLTMsNyArMyw2IEBACiAKIElNQUdFX0lOU1RBTEwgPSAiXAogICAgICR7Q09SRV9JTUFHRV9CQVNFX0lOU1RBTEx9IFwKLSAgICAke1JPT1RGU19QS0dNQU5BR0VfQk9PVFNUUkFQfSBcCiAgICAgcGFja2FnZWdyb3VwLWNvcmUtYmFzaWMgXAogICAgIG9wZW5mbG93IFwKICAgICBxZW11IFwgICAKQEAgLTEzLDYgKzEyLDUgQEAKICAgICAiCiAKIGluaGVyaXQgY29yZS1pbWFnZQotaW5oZXJpdCBpbWFnZS12bQogCi1JTUFHRV9GU1RZUEVTICs9ICJ2bWRrIgorSU1BR0VfRlNUWVBFUyArPSAid2ljLnZtZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWJvb3RpbWcuaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL3hlbi1ib290aW1nLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkzYWE2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWJvb3RpbWcuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1lTTElOVVhfVElNRU9VVCA9ICIxMCIKLVNZU0xJTlVYX0xBQkVMID0gImJvb3QiCi1TWVNMSU5VWF9YRU5fQVBQRU5EID0gImRvbTBfbWVtPTEwNDg1NzYiCi1TWVNMSU5VWF9LRVJORUxfQVBQRU5EID0gInJhbWRpc2tfc2l6ZT0zMjc2OCByb290PS9kZXYvcmFtMCBydyBjb25zb2xlPXR0eTAgY29uc29sZT10dHlTMCwxMTUyMDBuOCIKLSNMQUJFTFNfYXBwZW5kID0gIiAke1NZU0xJTlVYX0xBQkVMfSAiCi0KLUlOSVRSRCA9ICIke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfQkFTRU5BTUV9LSR7TUFDSElORX0uY3Bpby5sem1hIgotCi1kb19ib290aW1nW2RlcGVuZHNdICs9ICIke0lNQUdFX0JBU0VOQU1FfTpkb19yb290ZnMiCi0KLWluaGVyaXQgYm9vdGltZwotCi1zeXNsaW51eF9wb3B1bGF0ZV9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtbSAwNDQ0ICR7U1RBR0lOR19MSUJESVJ9L3N5c2xpbnV4L21ib290LmMzMiAke0hERERJUn0ke1NZU0xJTlVYRElSfS9tYm9vdC5jMzIKLX0KLQotZ3J1YmVmaV9wb3B1bGF0ZV9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0veGVuLSR7TUFDSElORX0uZ3ogJHtERVNUfSR7RUZJRElSfS94ZW4uZ3oKLX0KLQotcG9wdWxhdGVfYXBwZW5kKCkgewotCWluc3RhbGwgLW0gMDY0NCAke0RFUExPWV9ESVJfSU1BR0V9L3hlbi0ke01BQ0hJTkV9Lmd6ICR7REVTVH0veGVuLmd6Ci19Ci0KLWJ1aWxkX3N5c2xpbnV4X2NmZygpIHsKLQllY2hvIEFMTE9XT1BUSU9OUyAxID4gJHtTWVNMSU5VWENGR30KLQllY2hvIFNFUklBTCAwIDExNTIwMCA+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyBERUZBVUxUICR7U1lTTElOVVhfTEFCRUx9ID4+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyBUSU1FT1VUICR7U1lTTElOVVhfVElNRU9VVH0gPj4gJHtTWVNMSU5VWENGR30KLQllY2hvIFBST01QVCAxID4+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyBMQUJFTCAke1NZU0xJTlVYX0xBQkVMfSA+PiAke1NZU0xJTlVYQ0ZHfQotCWVjaG8gS0VSTkVMIG1ib290LmMzMiA+PiAke1NZU0xJTlVYQ0ZHfQotCWVjaG8gQVBQRU5EIHhlbi5neiAke1NZU0xJTlVYX1hFTl9BUFBFTkR9IC0tLSB2bWxpbnV6ICR7U1lTTElOVVhfS0VSTkVMX0FQUEVORH0gLS0tIGluaXRyZCA+PiAke1NZU0xJTlVYQ0ZHfQotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWd1ZXN0LWltYWdlLW1pbmltYWwuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWd1ZXN0LWltYWdlLW1pbmltYWwuYmIKaW5kZXggYWI3ZTkyYy4uZDMxMWVhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL3hlbi1ndWVzdC1pbWFnZS1taW5pbWFsLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy94ZW4tZ3Vlc3QtaW1hZ2UtbWluaW1hbC5iYgpAQCAtMSwxNCArMSwxOSBAQAogREVTQ1JJUFRJT04gPSAiQSBYZW4gZ3Vlc3QgaW1hZ2UuIgogCi1pbmhlcml0IGNvcmUtaW1hZ2UKK2luaGVyaXQgY29yZS1pbWFnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIAogSU1BR0VfSU5TVEFMTCArPSAiIFwKICAgICBwYWNrYWdlZ3JvdXAtY29yZS1ib290IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdhY3BpJywgJ2tlcm5lbC1tb2R1bGUteGVuLWFjcGktcHJvY2Vzc29yJywgJycsIGQpfSBcCiAgICAgIgogCi1JTUFHRV9JTlNUQUxMICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcgeGY4Ni12aWRlby1mYmRldicsICcnLCBkKX0iCi1JTUFHRV9JTlNUQUxMICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcgeGY4Ni12aWRlby12ZXNhJywgJycsIGQpfSIKK0lNQUdFX0lOU1RBTEwgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9GRUFUVVJFUycsICd4MTEnLCAnIHhmODYtdmlkZW8tZmJkZXYnLCAnJywgZCl9IgorCisjIEluc3RhbGwgeGY4Ni12aWRlby12ZXNhIG9uIHg4NiBwbGF0Zm9ybXMuCitJTUFHRV9JTlNUQUxMX2FwcGVuZF94ODYtNjQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX0ZFQVRVUkVTJywgJ3gxMScsICcgeGY4Ni12aWRlby12ZXNhJywgJycsIGQpfSIKK0lNQUdFX0lOU1RBTExfYXBwZW5kX3g4NiAgICA9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfRkVBVFVSRVMnLCAneDExJywgJyB4Zjg2LXZpZGVvLXZlc2EnLCAnJywgZCl9IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9GRUFUVVJFUycsICd4MTEnLCAnIHgxMScsICcnLCBkKX0geGVuIgogCiBMSUNFTlNFID0gIk1JVCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL3hlbi1pbWFnZS1taW5pbWFsLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL3hlbi1pbWFnZS1taW5pbWFsLmJiCmluZGV4IGI4YzIwMDIuLmMzOWQzNzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy94ZW4taW1hZ2UtbWluaW1hbC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMveGVuLWltYWdlLW1pbmltYWwuYmIKQEAgLTEwLDEyICsxMCwxNyBAQAogICAgIGtlcm5lbC1tb2R1bGUteGVuLWdudGFsbG9jIFwKICAgICBrZXJuZWwtbW9kdWxlLXhlbi1nbnRkZXYgXAogICAgIGtlcm5lbC1tb2R1bGUteGVuLW5ldGJhY2sgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3BjaScsICdrZXJuZWwtbW9kdWxlLXhlbi1wY2liYWNrJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncGNpJywgIiR7WEVOX1BDSUJBQ0tfTU9EVUxFfSIsICcnLCBkKX0gXAogICAgIGtlcm5lbC1tb2R1bGUteGVuLXdkdCBcCiAgICAgeGVuLWJhc2UgXAogICAgIHFlbXUgXAogICAgICIKIAorIyBMaW51eCBrZXJuZWwgb3B0aW9uIENPTkZJR19YRU5fUENJREVWX0JBQ0tFTkQgZGVwZW5kcyBvbiBYODYKK1hFTl9QQ0lCQUNLX01PRFVMRSA9ICIiCitYRU5fUENJQkFDS19NT0RVTEVfeDg2ICAgID0gImtlcm5lbC1tb2R1bGUteGVuLXBjaWJhY2siCitYRU5fUENJQkFDS19NT0RVTEVfeDg2LTY0ID0gImtlcm5lbC1tb2R1bGUteGVuLXBjaWJhY2siCisKIExJQ0VOU0UgPSAiTUlUIgogCiBpbmhlcml0IGNvcmUtaW1hZ2UKQEAgLTQyLDcgKzQ3LDcgQEAKIAlpbnN0YWxsIC1tIDA2NDQgJHtERVBMT1lfRElSX0lNQUdFfS94ZW4tJHtNQUNISU5FfS5neiAke0RFU1R9JHtFRklESVJ9L3hlbi5negogfQogCi1wb3B1bGF0ZV9hcHBlbmQoKSB7CitzeXNsaW51eF9wb3B1bGF0ZV9hcHBlbmQoKSB7CiAJaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0veGVuLSR7TUFDSElORX0uZ3ogJHtERVNUfS94ZW4uZ3oKIH0KIApAQCAtNTAsMTIgKzU1LDEyIEBACiBTWVNMSU5VWF9LRVJORUxfQVJHUyA/PSAicmFtZGlza19zaXplPTMyNzY4IHJvb3Q9L2Rldi9yYW0wIHJ3IGNvbnNvbGU9aHZjMCBlYXJseXByaW50az14ZW4gY29uc29sZT10dHkwIHBhbmljPTEwIExBQkVMPWJvb3QgZGVidWdzaGVsbD01IgogCiBidWlsZF9zeXNsaW51eF9jZmcgKCkgewotCWVjaG8gIkFMTE9XT1BUSU9OUyAxIiA+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyAiREVGQVVMVCBib290IiA+PiAke1NZU0xJTlVYQ0ZHfQotCWVjaG8gIlRJTUVPVVQgMTAiID4+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyAiUFJPTVBUIDEiID4+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyAiTEFCRUwgYm9vdCIgPj4gJHtTWVNMSU5VWENGR30KLQllY2hvICIgIEtFUk5FTCBtYm9vdC5jMzIiID4+ICR7U1lTTElOVVhDRkd9Ci0JZWNobyAiICBBUFBFTkQgL3hlbi5neiAke1NZU0xJTlVYX1hFTl9BUkdTfSAtLS0gL3ZtbGludXogJHtTWVNMSU5VWF9LRVJORUxfQVJHU30gLS0tIC9pbml0cmQiID4+ICR7U1lTTElOVVhDRkd9CisJZWNobyAiQUxMT1dPUFRJT05TIDEiID4gJHtTWVNMSU5VWF9DRkd9CisJZWNobyAiREVGQVVMVCBib290IiA+PiAke1NZU0xJTlVYX0NGR30KKwllY2hvICJUSU1FT1VUIDEwIiA+PiAke1NZU0xJTlVYX0NGR30KKwllY2hvICJQUk9NUFQgMSIgPj4gJHtTWVNMSU5VWF9DRkd9CisJZWNobyAiTEFCRUwgYm9vdCIgPj4gJHtTWVNMSU5VWF9DRkd9CisJZWNobyAiICBLRVJORUwgbWJvb3QuYzMyIiA+PiAke1NZU0xJTlVYX0NGR30KKwllY2hvICIgIEFQUEVORCAveGVuLmd6ICR7U1lTTElOVVhfWEVOX0FSR1N9IC0tLSAvdm1saW51eiAke1NZU0xJTlVYX0tFUk5FTF9BUkdTfSAtLS0gL2luaXRyZCIgPj4gJHtTWVNMSU5VWF9DRkd9CiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lweGUvaXB4ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9pcHhlL2lweGVfZ2l0LmJiCmluZGV4IGQ1MmM1NjcuLmMwYzhhN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2lweGUvaXB4ZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvaXB4ZS9pcHhlX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIFBWID0gImdpdHIke1NSQ1BWfSIKIFBSID0gInIwIgogCi1TUkNfVVJJID0gImdpdDovL2dpdC5pcHhlLm9yZy9pcHhlLmdpdDtwcm90b2NvbD1naXQiCitTUkNfVVJJID0gImdpdDovL2dpdC5pcHhlLm9yZy9pcHhlLmdpdDtwcm90b2NvbD1odHRwcyIKIAogRklMRVNfJHtQTn0gPSAiL3Vzci9zaGFyZS9maXJtd2FyZS8qLnJvbSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQva3ZtdG9vbC9maWxlcy8wMDAxLWt2bXRvb2wtOXAtZml4ZWQtY29tcGlsYXRpb24tZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2ZpbGVzLzAwMDEta3ZtdG9vbC05cC1maXhlZC1jb21waWxhdGlvbi1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzkxMWZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQva3ZtdG9vbC9maWxlcy8wMDAxLWt2bXRvb2wtOXAtZml4ZWQtY29tcGlsYXRpb24tZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBiY2Q5NTRmZmRiOTM4MzAzMGUwMmQzNTZiNTFlMDllNGUyYTcxMDVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFyaXVzeiBQZWxvd3NraSA8ZGFyaXVzei5wZWxvd3NraUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDUgTm92IDIwMTcgMTI6Mzk6NTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGt2bXRvb2w6IDlwOiBmaXhlZCBjb21waWxhdGlvbiBlcnJvcgorCittYWtlZGV2IGlzIGRlZmluZWQgaW4gc3lzL3N5c21hY3Jvcy5oCisKK1NpZ25lZC1vZmYtYnk6IERhcml1c3ogUGVsb3dza2kgPGRhcml1c3oucGVsb3dza2lAZ21haWwuY29tPgorLS0tCisgdmlydGlvLzlwLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3ZpcnRpby85cC5jIGIvdmlydGlvLzlwLmMKK2luZGV4IDZhY2JmZGQuLjFkZWUyYzIgMTAwNjQ0CistLS0gYS92aXJ0aW8vOXAuYworKysrIGIvdmlydGlvLzlwLmMKK0BAIC0xNSw2ICsxNSw3IEBACisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzeXMvdmZzLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAKKyAjaW5jbHVkZSA8bGludXgvdmlydGlvX3JpbmcuaD4KKyAjaW5jbHVkZSA8bGludXgvdmlydGlvXzlwLmg+CistLSAKKzIuMTUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2ZpbGVzLzAwMDIta3ZtdG9vbC1hZGQtRVhUUkFfQ0ZMQUdTLXZhcmlhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQva3ZtdG9vbC9maWxlcy8wMDAyLWt2bXRvb2wtYWRkLUVYVFJBX0NGTEFHUy12YXJpYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjI1MzFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQva3ZtdG9vbC9maWxlcy8wMDAyLWt2bXRvb2wtYWRkLUVYVFJBX0NGTEFHUy12YXJpYWJsZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDk3N2E0ZDQxMDEyZDE4MTRmNWE1MzMwY2FjYzJlNDk0NGRlMzg3Y2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXJpdXN6IFBlbG93c2tpIDxkYXJpdXN6LnBlbG93c2tpQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgNSBOb3YgMjAxNyAxMjozOToyMSArMDEwMAorU3ViamVjdDogW1BBVENIIDIvMl0ga3ZtdG9vbDogYWRkIEVYVFJBX0NGTEFHUyB2YXJpYWJsZQorCit0byBhdm9pZCBDRkxBR1Mgb3ZlcnJpZGluZyBpbnRyb2R1Y2UgbmV3IEVYVFJBX0NGTEFHUyB2YXJpYWJsZQorZm9yIHNldHRpbmcgdmlhIGNvbW1hbmQgYXJndW1lbnQKKworU2lnbmVkLW9mZi1ieTogRGFyaXVzeiBQZWxvd3NraSA8ZGFyaXVzei5wZWxvd3NraUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA2NGEwYTE2Li5iY2ExYjI2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMiw2ICsyLDggQEAKKyAjIERlZmluZSBXRVJST1I9MCB0byBkaXNhYmxlIC1XZXJyb3IuCisgIworIAorK0NGTEFHUyArPSAkKEVYVFJBX0NGTEFHUykKKysKKyBpZmVxICgkKHN0cmlwICQoVikpLCkKKyAJRSA9IEBlY2hvCisgCVEgPSBACistLSAKKzIuMTUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2t2bXRvb2wuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9rdm10b29sL2t2bXRvb2wuYmIKaW5kZXggYjNiZjIwMi4uMzNmZWMzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQva3ZtdG9vbC9rdm10b29sLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2t2bXRvb2wva3ZtdG9vbC5iYgpAQCAtNSwxMCArNSwxNSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCiAKIERFUEVORFMgPSAiZHRjIGxpYmFpbyB6bGliIgorZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKKworaW5oZXJpdCBrZXJuZWwtYXJjaAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC93aWxsL2t2bXRvb2wuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2V4dGVybmFsLWNyb3NzY29tcGlsZXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Bdm9pZC1wb2ludGVycy1mb3ItYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWt2bXRvb2wtOXAtZml4ZWQtY29tcGlsYXRpb24tZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1rdm10b29sLWFkZC1FWFRSQV9DRkxBR1MtdmFyaWFibGUucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ1JFViA9ICIzZmVhODlhOTI0NTExZjlmOGZlMDVhODkyMDk4ZmFkNzdjMWVjYTBkIgpAQCAtMTYsNyArMjEsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1FWFRSQV9PRU1BS0U9J0FSQ0g9IiR7VEFSR0VUX0FSQ0h9IiBWPTEnCitFWFRSQV9PRU1BS0U9J1Y9MSBFWFRSQV9DRkxBR1M9Ii1JJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2FyY2gvJHtBUkNIfS9pbmNsdWRlIC1JJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0vYXJjaC8ke0FSQ0h9L2luY2x1ZGUvZ2VuZXJhdGVkLyInCiAKIGRvX2luc3RhbGwoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9saWJ2aXJ0L2xpYnZpcnRfMS4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9saWJ2aXJ0L2xpYnZpcnRfMS4zLjUuYmIKaW5kZXggMTliNzU2Ny4uOGVkMjUwNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvbGlidmlydC9saWJ2aXJ0XzEuMy41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL2xpYnZpcnQvbGlidmlydF8xLjMuNS5iYgpAQCAtMTQsNyArMTQsNyBAQAogIwogUkRFUEVORFNfJHtQTn0gPSAiZ2V0dGV4dC1ydW50aW1lIgogCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBnYXdrIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgZ2F3ayBwZXJsIgogCiBSREVQRU5EU19saWJ2aXJ0LWxpYnZpcnRkICs9ICJicmlkZ2UtdXRpbHMgaXB0YWJsZXMgcG0tdXRpbHMgZG5zbWFzcSBuZXRjYXQtb3BlbmJzZCIKIFJERVBFTkRTX2xpYnZpcnQtbGlidmlydGRfYXBwZW5kX3g4Ni02NCA9ICIgZG1pZGVjb2RlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvc2VhYmlvcy9zZWFiaW9zXzEuOS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvc2VhYmlvcy9zZWFiaW9zXzEuOS4xLmJiCmluZGV4IDVjMDk1YWMuLjE0NGIxM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3NlYWJpb3Mvc2VhYmlvc18xLjkuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC9zZWFiaW9zL3NlYWJpb3NfMS45LjEuYmIKQEAgLTQsNyArNCw3IEBACiBTRUNUSU9OID0gImZpcm13YXJlIgogCiBTUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2NvZGUuY29yZWJvb3Qub3JnL3Avc2VhYmlvcy9kb3dubG9hZHMvZ2V0LyR7UE59LSR7UFZ9LnRhci5neiBcCisgICAgaHR0cHM6Ly9jb2RlLmNvcmVib290Lm9yZy9wL3NlYWJpb3MvZG93bmxvYWRzL2dldC8ke1BOfS0ke1BWfS50YXIuZ3ogXAogICAgIGZpbGU6Ly9ob3N0Y2MucGF0Y2ggXAogICAgICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvdmdhYmlvcy9iaW9zc3Vtc18wLjdhLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvdmdhYmlvcy9iaW9zc3Vtc18wLjdhLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NmJhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC92Z2FiaW9zL2Jpb3NzdW1zXzAuN2EuYmIKQEAgLTAsMCArMSwzNyBAQAorREVTQ1JJUFRJT04gPSAiYmlvc3N1bXMgdG9vbCBmb3IgYnVpbGRpbmcgUGxleDg2L0JvY2hzIExHUEwgVkdBQmlvcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubm9uZ251Lm9yZy92Z2FiaW9zLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitTRUNUSU9OID0gImZpcm13YXJlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kY2YzYzgyNTY1OWU4MjUzOTY0NWRhNDFhNzkwODU4OSIKKworU1JDX1VSSSA9ICAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvZG93bmxvYWQvdmdhYmlvcy92Z2FiaW9zLSR7UFZ9LnRneiIKKworU1JDX1VSSVttZDVzdW1dID0gIjJjMGZlNWMwY2EwODA4MmE5MjkzZTNhN2IyM2RjOTAwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkMjRjMzNkNGJmYjc4MzFlMjA2OWNmMzY0NDkzNmE1M2VmM2RlMjFkNDY3ODcyYjU0Y2UyZWEzMDg4MWI4NjUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vYmlvc3N1bXMiCisKK1MgPSAiJHtXT1JLRElSfS92Z2FiaW9zLSR7UFZ9IgorCitkb19jb25maWd1cmUoKSB7CisgICAgIyBEb24ndCBvdmVycmlkZSB0aGUgY29tcGlsZXIgb3IgaXRzIGZsYWdzOgorICAgIHNlZCAncyxeQ0MsRElTQUJMRURfQ0MsJyAtaSBNYWtlZmlsZQorICAgIHNlZCAncyxeQ0ZMQUdTLERJU0FCTEVEX0NGTEFHUywnIC1pIE1ha2VmaWxlCisgICAgc2VkICdzLF5MREZMQUdTLERJU0FCTEVEX0xERkxBR1MsJyAtaSBNYWtlZmlsZQorICAgICMgU3VwcGx5IHRoZSBDIGZsYWdzIHRvIHRoZSBjb21waWxlcjoKKyAgICBzZWQgJ3MsLW8gYmlvc3N1bXMsJChDRkxBR1MpIC1vIGJpb3NzdW1zLCcgLWkgTWFrZWZpbGUKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICAjIGNsZWFuIHJlbW92ZXMgYmluYXJpZXMgZGlzdHJpYnV0ZWQgd2l0aCBzb3VyY2UKKyAgICBvZV9ydW5tYWtlIGNsZWFuCisgICAgb2VfcnVubWFrZSBiaW9zc3VtcworfQorCitkb19pbnN0YWxsKCkgeworICAgIG1rZGlyIC1wICIke0R9JHtiaW5kaXJ9IgorICAgIGluc3RhbGwgLW0gMDc1NSBiaW9zc3VtcyAiJHtEfSR7YmluZGlyfSIKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3ZnYWJpb3MvdmdhYmlvc18wLjdhLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvdmdhYmlvcy92Z2FiaW9zXzAuN2EuYmIKaW5kZXggMGVkOGJiNC4uOGM4OTA0MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvdmdhYmlvcy92Z2FiaW9zXzAuN2EuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQvdmdhYmlvcy92Z2FiaW9zXzAuN2EuYmIKQEAgLTMsNyArMyw3IEBACiBMSUNFTlNFID0gIkxHUEx2Mi4xIgogU0VDVElPTiA9ICJmaXJtd2FyZSIKIAotREVQRU5EUyA9ICJkZXY4Ni1uYXRpdmUiCitERVBFTkRTID0gImRldjg2LW5hdGl2ZSBiaW9zc3Vtcy1uYXRpdmUiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjZjNjODI1NjU5ZTgyNTM5NjQ1ZGE0MWE3OTA4NTg5IgogCkBAIC0yMCw3ICsyMCw5IEBACiBTID0gIiR7V09SS0RJUn0vJHtQTn0tJHtQVn0iCiAKIGRvX2NvbmZpZ3VyZSgpIHsKLSAgICBlY2hvICJTa2lwIGRvX2NvbmZpZ3VyZSIKKyAgICAjIE92ZXJyaWRlIHRvIHVzZSB0aGUgbmF0aXZlLWJ1aWx0IGJpb3NzdW1zIHRvb2w6CisgICAgc2VkICdzLC4vYmlvc3N1bXMsYmlvc3N1bXMsJyAtaSBNYWtlZmlsZQorICAgIHNlZCAncywkKENDKSAtbyBiaW9zc3VtcyBiaW9zc3Vtcy5jLHRvdWNoIGJpb3NzdW1zLCcgLWkgTWFrZWZpbGUKIH0KIAogZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy9maXgtbGlieGMteGNfZG9tX2FybS1taXNzaW5nLWluaXRpYWxpemF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL2ZpbGVzL2ZpeC1saWJ4Yy14Y19kb21fYXJtLW1pc3NpbmctaW5pdGlhbGl6YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwMTZhNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi9maWxlcy9maXgtbGlieGMteGNfZG9tX2FybS1taXNzaW5nLWluaXRpYWxpemF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK2NvbW1pdCA4OGJmYmY5MGUzNWYxMjEzZjk5NjdhOTdkZWUwYjIwMzlmOTk5OGE0CitBdXRob3I6IEJlcm5kIEt1aGxzIDxiZXJuZC5rdWhsc0B0LW9ubGluZS5kZT4KK0RhdGU6ICAgU2F0IEF1ZyAxOSAxNjoyMTo0MiAyMDE3ICswMjAwCisKKyAgICB0b29scy9saWJ4Yy94Y19kb21fYXJtOiBhZGQgbWlzc2luZyB2YXJpYWJsZSBpbml0aWFsaXphdGlvbgorICAgIAorICAgIFRoZSB2YXJpYWJsZSBkb21jdGwudS5hZGRyZXNzX3NpemUuc2l6ZSBtYXkgcmVtYWluIHVuaW5pdGlhbGl6ZWQgaWYKKyAgICBndWVzdF90eXBlIGlzIG5vdCBvbmUgb2YgeGVuLTMuMC1hYXJjaDY0IG9yIHhlbi0zLjAtYXJtdjdsLiBBbmQgdGhlCisgICAgY29kZSBwcmVjaXNlbHkgY2hlY2tzIGlmIHRoaXMgdmFyaWFibGUgaXMgc3RpbGwgMCB0byBkZWNpZGUgaWYgdGhlCisgICAgZ3Vlc3QgdHlwZSBpcyBzdXBwb3J0ZWQgb3Igbm90LgorICAgIAorICAgIFRoaXMgZml4ZXMgdGhlIGZvbGxvd2luZyBidWlsZCBmYWlsdXJlIHdpdGggZ2NjIDcueDoKKyAgICAKKyAgICB4Y19kb21fYXJtLmM6MjI5OjMxOiBlcnJvcjogJ2RvbWN0bC51LmFkZHJlc3Nfc2l6ZS5zaXplJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KKyAgICAgICAgIGlmICggZG9tY3RsLnUuYWRkcmVzc19zaXplLnNpemUgPT0gMCApCisgICAgCisgICAgUGF0Y2ggb3JpZ2luYWxseSB0YWtlbiBmcm9tCisgICAgaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS94ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZy9tc2cxMDkzMTMuaHRtbC4KKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBCZXJuZCBLdWhscyA8YmVybmQua3VobHNAdC1vbmxpbmUuZGU+CisgICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+CisgICAgQWNrZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CisKK2RpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19kb21fYXJtLmMgYi90b29scy9saWJ4Yy94Y19kb21fYXJtLmMKK2luZGV4IGU3ZDRiZDAuLmU2NjlmYjAgMTAwNjQ0CistLS0gYS90b29scy9saWJ4Yy94Y19kb21fYXJtLmMKKysrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9hcm0uYworQEAgLTIyMyw2ICsyMjMsOCBAQCBzdGF0aWMgaW50IHNldF9tb2RlKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLCBjaGFyICpndWVzdF90eXBlKQorIAorICAgICBkb21jdGwuZG9tYWluID0gZG9taWQ7CisgICAgIGRvbWN0bC5jbWQgICAgPSBYRU5fRE9NQ1RMX3NldF9hZGRyZXNzX3NpemU7CisrICAgIGRvbWN0bC51LmFkZHJlc3Nfc2l6ZS5zaXplID0gMDsKKysKKyAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHR5cGVzKTsgaSsrICkKKyAgICAgICAgIGlmICggIXN0cmNtcCh0eXBlc1tpXS5ndWVzdCwgZ3Vlc3RfdHlwZSkgKQorICAgICAgICAgICAgIGRvbWN0bC51LmFkZHJlc3Nfc2l6ZS5zaXplID0gdHlwZXNbaV0uc2l6ZTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW4uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi5pbmMKaW5kZXggMzdmYjRjZS4uY2IzMTRmOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbi5pbmMKQEAgLTkxNCw2ICs5MTQsOSBAQAogCiAgICAgIyBkbyBjb25maWd1cmUKICAgICBvZV9ydW5jb25mCisgICAgaWYgWyAhIC1lICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtMzIuaCBdOyB0aGVuCisgICAgICAgIGNwICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtNjQuaCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTMyLmgKKyAgICBmaQogfQogCiBkb19jb21waWxlKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW5fNC44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YzkxMzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtZXh0ZW5kZWQveGVuL3hlbl80LjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgeGVuLmluYwotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cHM6Ly9kb3dubG9hZHMueGVucHJvamVjdC5vcmcvcmVsZWFzZS94ZW4vJHtQVn0veGVuLSR7UFZ9LnRhci5neiBcCi0gICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDczOGY3Yzc0MTExMDM0MjYyMWNiOGE0ZDEwYjAxOTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWUxNWM3MTNhYjdiYTNiZmRhOGI0YTI4NWVkOTczNTI5MzY0ZmQxMTAwZTZkZDVhNjFmMjk1ODNkYzY2N2IwNCIKLQotUyA9ICIke1dPUktESVJ9L3hlbi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWV4dGVuZGVkL3hlbi94ZW5fNC45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuXzQuOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlOWM4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1leHRlbmRlZC94ZW4veGVuXzQuOS4wLmJiCkBAIC0wLDAgKzEsMTIgQEAKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKK3JlcXVpcmUgeGVuLmluYworCitTUkNfVVJJID0gIiBcCisgICAgaHR0cHM6Ly9kb3dubG9hZHMueGVucHJvamVjdC5vcmcvcmVsZWFzZS94ZW4vJHtQVn0veGVuLSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovL2ZpeC1saWJ4Yy14Y19kb21fYXJtLW1pc3NpbmctaW5pdGlhbGl6YXRpb24ucGF0Y2ggXAorICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImYwYTc1MzYzNzYzMGY5ODJkZmJkYjY0MTIxZmQ3MWUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhZGU2NDNmZTMzMTBkNGQ2Zjk3ZDBjMjE1YzZmYTMyM2JjMTEzMGQ3ZTY0ZDdlMjA0M2ZmYWE3M2E5NmYzM2IiCisKK1MgPSAiJHtXT1JLRElSfS94ZW4tJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXyUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXyUuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUwMzQwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfJS5iYmFwcGVuZApAQCAtMCwwICsxLDEzIEBACisjIENoYW5nZSB0aGUgZGVmYXVsdCBYc2VydmVyIE9wZW5HTCBjb25maWd1cmF0aW9uIGZvciBub24teDg2IGRpc3Ryb3Mgd2l0aCBYZW46IGRlc2VsZWN0ICdnbGFtb3InLgorIyBUaGlzIHJlbW92ZXMgdGhlIGRlcGVuZGVuY3kgb24gbGliZWdsIHRvIHNpbXBsaWZ5IHRoZSBkb21VIGJ1aWxkLgorIworIyBUbyBvdmVycmlkZSB0aGlzIChlZy4gaWYgd2FudGVkIGZvciBkb20wIGltYWdlcykgZGVmaW5lOgorIyAgIFJFTU9WRURfT1BFTkdMX1BLR0NPTkZJR1MgPSAiIgorCitYRU5fUkVNT1ZFRF9PUEVOR0xfUEtHQ09ORklHUyA/PSAiZ2xhbW9yIgorWEVOX1JFTU9WRURfT1BFTkdMX1BLR0NPTkZJR1NfeDg2ID0gIiIKK1hFTl9SRU1PVkVEX09QRU5HTF9QS0dDT05GSUdTX3g4Ni02NCA9ICIiCisKK1JFTU9WRURfT1BFTkdMX1BLR0NPTkZJR1MgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGVuJywgIiR7WEVOX1JFTU9WRURfT1BFTkdMX1BLR0NPTkZJR1N9IiwgJycsIGQpfSIKKworT1BFTkdMX1BLR0NPTkZJR1NfcmVtb3ZlID0gIiR7UkVNT1ZFRF9PUEVOR0xfUEtHQ09ORklHU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8vZG9ja2VyLmNmZyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9kb2NrZXIuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZThlMzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8vZG9ja2VyLmNmZwpAQCAtMCwwICsxLDEyIEBACitDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0FERFJUWVBFPW0KK0NPTkZJR19JUF9ORl9GSUxURVI9bQorQ09ORklHX05GX05BVD1tCitDT05GSUdfTkZfQ09OTlRSQUNLX0lQVjQ9eQorCitDT05GSUdfRE1fVEhJTl9QUk9WSVNJT05JTkc9bQorCisKK0NPTkZJR19JUF9ORl9OQVQ9bQorQ09ORklHX0lQX05GX1RBUkdFVF9NQVNRVUVSQURFPW0KKworQ09ORklHX09WRVJMQVlfRlM9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL2RvY2tlci5zY2MgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8vZG9ja2VyLnNjYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzE3NDU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL2RvY2tlci5zY2MKQEAgLTAsMCArMSw0IEBACitkZWZpbmUgS0ZFQVRVUkVfREVTQ1JJUFRJT04gIkVuYWJsZSBGZWF0dXJlcyBuZWVkZWQgYnkgZG9ja2VyIGluIGFkZGl0aW9uIHRvIExYQyBmZWF0dXJlcyIKK2RlZmluZSBLRkVBVFVSRV9DT01QQVRJQklMSVRZIGJvYXJkCisKK2tjb25mIG5vbi1oYXJkd2FyZSBkb2NrZXIuY2ZnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8vbHhjLmNmZyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9seGMuY2ZnCmluZGV4IGZhMjM0NGEuLmMyNWQ2MGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9seGMuY2ZnCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by9seGMuY2ZnCkBAIC0xNSw3ICsxNSw3IEBACiBDT05GSUdfTkVUX05TPXkKIAogQ09ORklHX0NMU19DR1JPVVA9bQotQ09ORklHX0JMS19DR1JPVVA9bQorQ09ORklHX0JMS19DR1JPVVA9eQogQ09ORklHX05FVFBSSU9fQ0dST1VQPW0KIAogQ09ORklHX0RFVlBUU19NVUxUSVBMRV9JTlNUQU5DRVM9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYmU4OWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQotU1JDX1VSSSArPSAiZmlsZTovL3h0LWNoZWNrc3VtLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8vZWJ0YWJsZXMuc2NjIFwKLQkgICAgZmlsZTovL3Zzd2l0Y2guc2NjIFwKLQkgICAgZmlsZTovL2x4Yy5zY2MgXAotCSAgICAiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiBmZWF0dXJlcy9rdm0vcWVtdS1rdm0tZW5hYmxlLnNjYyIKLQotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAib3BlbnZzd2l0Y2giCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJrdm0iCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJrdm0tYW1kIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtLWludGVsIgotCi0jIGF1ZnMga2VybmVsIHN1cHBvcnQgcmVxdWlyZWQgZm9yIHhlbi1pbWFnZS1taW5pbWFsCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2F1ZnMnLCAnIGZlYXR1cmVzL2F1ZnMvYXVmcy1lbmFibGUuc2NjJywgJycsIGQpfSIKLQotIyB4ZW4ga2VybmVsIHN1cHBvcnQKLVNSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGVuJywgJyBmaWxlOi8veGVuLnNjYycsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmluZGV4IGYzYmU4OWUuLjYxN2NhY2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCkBAIC0xLDE5ICsxIEBACi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly94dC1jaGVja3N1bS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL2VidGFibGVzLnNjYyBcCi0JICAgIGZpbGU6Ly92c3dpdGNoLnNjYyBcCi0JICAgIGZpbGU6Ly9seGMuc2NjIFwKLQkgICAgIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZmVhdHVyZXMva3ZtL3FlbXUta3ZtLWVuYWJsZS5zY2MiCi0KLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gIm9wZW52c3dpdGNoIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtLWFtZCIKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gImt2bS1pbnRlbCIKLQotIyBhdWZzIGtlcm5lbCBzdXBwb3J0IHJlcXVpcmVkIGZvciB4ZW4taW1hZ2UtbWluaW1hbAotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhdWZzJywgJyBmZWF0dXJlcy9hdWZzL2F1ZnMtZW5hYmxlLnNjYycsICcnLCBkKX0iCi0KLSMgeGVuIGtlcm5lbCBzdXBwb3J0Ci1TUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hlbicsICcgZmlsZTovL3hlbi5zY2MnLCAnJywgZCl9IgorcmVxdWlyZSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3ZpcnR1YWxpemF0aW9uJywgJyR7QlBOfV92aXJ0dWFsaXphdGlvbi5pbmMnLCAnJywgZCl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxN2NhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtMCwwICsxIEBACityZXF1aXJlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndmlydHVhbGl6YXRpb24nLCAnJHtCUE59X3ZpcnR1YWxpemF0aW9uLmluYycsICcnLCBkKX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IGYzYmU4OWUuLjYxN2NhY2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApAQCAtMSwxOSArMSBAQAotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgotCi1TUkNfVVJJICs9ICJmaWxlOi8veHQtY2hlY2tzdW0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly9lYnRhYmxlcy5zY2MgXAotCSAgICBmaWxlOi8vdnN3aXRjaC5zY2MgXAotCSAgICBmaWxlOi8vbHhjLnNjYyBcCi0JICAgICIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiIGZlYXR1cmVzL2t2bS9xZW11LWt2bS1lbmFibGUuc2NjIgotCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJvcGVudnN3aXRjaCIKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gImt2bSIKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gImt2bS1hbWQiCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJrdm0taW50ZWwiCi0KLSMgYXVmcyBrZXJuZWwgc3VwcG9ydCByZXF1aXJlZCBmb3IgeGVuLWltYWdlLW1pbmltYWwKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXVmcycsICcgZmVhdHVyZXMvYXVmcy9hdWZzLWVuYWJsZS5zY2MnLCAnJywgZCl9IgotCi0jIHhlbiBrZXJuZWwgc3VwcG9ydAotU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4ZW4nLCAnIGZpbGU6Ly94ZW4uc2NjJywgJycsIGQpfSIKK3JlcXVpcmUgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd2aXJ0dWFsaXphdGlvbicsICcke0JQTn1fdmlydHVhbGl6YXRpb24uaW5jJywgJycsIGQpfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmJhcHBlbmQKaW5kZXggZjNiZTg5ZS4uNjE3Y2FjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiYXBwZW5kCkBAIC0xLDE5ICsxIEBACi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly94dC1jaGVja3N1bS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL2VidGFibGVzLnNjYyBcCi0JICAgIGZpbGU6Ly92c3dpdGNoLnNjYyBcCi0JICAgIGZpbGU6Ly9seGMuc2NjIFwKLQkgICAgIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZmVhdHVyZXMva3ZtL3FlbXUta3ZtLWVuYWJsZS5zY2MiCi0KLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gIm9wZW52c3dpdGNoIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtIgotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAia3ZtLWFtZCIKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gImt2bS1pbnRlbCIKLQotIyBhdWZzIGtlcm5lbCBzdXBwb3J0IHJlcXVpcmVkIGZvciB4ZW4taW1hZ2UtbWluaW1hbAotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhdWZzJywgJyBmZWF0dXJlcy9hdWZzL2F1ZnMtZW5hYmxlLnNjYycsICcnLCBkKX0iCi0KLSMgeGVuIGtlcm5lbCBzdXBwb3J0Ci1TUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hlbicsICcgZmlsZTovL3hlbi5zY2MnLCAnJywgZCl9IgorcmVxdWlyZSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3ZpcnR1YWxpemF0aW9uJywgJyR7QlBOfV92aXJ0dWFsaXphdGlvbi5pbmMnLCAnJywgZCl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fdmlydHVhbGl6YXRpb24uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvX3ZpcnR1YWxpemF0aW9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTA1ZWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvX3ZpcnR1YWxpemF0aW9uLmluYwpAQCAtMCwwICsxLDIwIEBACitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9saW51eC15b2N0bzoiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly94dC1jaGVja3N1bS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL2VidGFibGVzLnNjYyBcCisJICAgIGZpbGU6Ly92c3dpdGNoLnNjYyBcCisJICAgIGZpbGU6Ly9seGMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kb2NrZXIuc2NjIFwKKwkgICAgIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdrdm0nLCAnZmVhdHVyZXMva3ZtL3FlbXUta3ZtLWVuYWJsZS5zY2MnLCAnJywgZCl9IgorCitLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJvcGVudnN3aXRjaCIKK0tFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAna3ZtJywgJ2t2bScsICcnLCBkKX0iCitLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2t2bScsICdrdm0tYW1kJywgJycsIGQpfSIKK0tFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAna3ZtJywgJ2t2bS1pbnRlbCcsICcnLCBkKX0iCisKKyMgYXVmcyBrZXJuZWwgc3VwcG9ydCByZXF1aXJlZCBmb3IgeGVuLWltYWdlLW1pbmltYWwKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXVmcycsICcgZmVhdHVyZXMvYXVmcy9hdWZzLWVuYWJsZS5zY2MnLCAnJywgZCl9IgorCisjIHhlbiBrZXJuZWwgc3VwcG9ydAorU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4ZW4nLCAnIGZpbGU6Ly94ZW4uc2NjJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvY25pL2NuaV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL2NuaS9jbmlfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyN2E4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL2NuaS9jbmlfZ2l0LmJiCkBAIC0wLDAgKzEsOTUgQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL2NuaSIKK1NVTU1BUlkgPSAiQ29udGFpbmVyIE5ldHdvcmsgSW50ZXJmYWNlIC0gbmV0d29ya2luZyBmb3IgTGludXggY29udGFpbmVycyIKK0RFU0NSSVBUSU9OID0gIkNOSSAoQ29udGFpbmVyIE5ldHdvcmsgSW50ZXJmYWNlKSwgYSBDbG91ZCBOYXRpdmUgQ29tcHV0aW5nIFwKK0ZvdW5kYXRpb24gcHJvamVjdCwgY29uc2lzdHMgb2YgYSBzcGVjaWZpY2F0aW9uIGFuZCBsaWJyYXJpZXMgZm9yIHdyaXRpbmcgXAorcGx1Z2lucyB0byBjb25maWd1cmUgbmV0d29yayBpbnRlcmZhY2VzIGluIExpbnV4IGNvbnRhaW5lcnMsIGFsb25nIHdpdGggYSBcCitudW1iZXIgb2Ygc3VwcG9ydGVkIHBsdWdpbnMuIENOSSBjb25jZXJucyBpdHNlbGYgb25seSB3aXRoIG5ldHdvcmsgY29ubmVjdGl2aXR5IFwKK29mIGNvbnRhaW5lcnMgYW5kIHJlbW92aW5nIGFsbG9jYXRlZCByZXNvdXJjZXMgd2hlbiB0aGUgY29udGFpbmVyIGlzIGRlbGV0ZWQuIFwKK0JlY2F1c2Ugb2YgdGhpcyBmb2N1cywgQ05JIGhhcyBhIHdpZGUgcmFuZ2Ugb2Ygc3VwcG9ydCBhbmQgdGhlIHNwZWNpZmljYXRpb24gXAoraXMgc2ltcGxlIHRvIGltcGxlbWVudC4gXAorIgorCitTUkNSRVZfY25pID0gIjRiOWUxMWE1MjY2ZmU1MDIyMmVkMDBjNTk3M2M2ZWE0YTM4NGE0YmIiCitTUkNSRVZfcGx1Z2lucyA9ICJjMjM4YzkzYjVlN2M2ODFmMTkzNWZmODEzYjMwZTgyZjk2ZjZjMzY3IgorU1JDX1VSSSA9ICJcCisJZ2l0Oi8vZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL2NuaS5naXQ7bm9icmFuY2g9MTtuYW1lPWNuaSBcCisgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vY29udGFpbmVybmV0d29ya2luZy9wbHVnaW5zLmdpdDtub2JyYW5jaD0xO2Rlc3RzdWZmaXg9cGx1Z2lucztuYW1lPXBsdWdpbnMgXAorCSIKKworUlBST1ZJREVTXyR7UE59ICs9ICJrdWJlcm5ldGVzLWNuaSIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ltcG9ydC9MSUNFTlNFO21kNT1mYTgxOGEyNTljYmVkN2NlOGJjMmEyMmQzNWE0NjRmYyIKKworR09fSU1QT1JUID0gImltcG9ydCIKKworUFYgPSAiMC42LjArZ2l0JHtTUkNSRVZfY25pfSIKKworaW5oZXJpdCBnbworaW5oZXJpdCBnb2FyY2gKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IgorCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke1RBUkdFVF9TWVN9L2dvIgorCWV4cG9ydCBHT1BBVEg9IiR7U30vc3JjL2ltcG9ydDoke1N9L3NyYy9pbXBvcnQvdmVuZG9yIgorCisJIyBQYXNzIHRoZSBuZWVkZWQgY2ZsYWdzL2xkZmxhZ3Mgc28gdGhhdCBjZ28KKwkjIGNhbiBmaW5kIHRoZSBuZWVkZWQgaGVhZGVycyBmaWxlcyBhbmQgbGlicmFyaWVzCisJZXhwb3J0IENHT19FTkFCTEVEPSIxIgorCWV4cG9ydCBDRkxBR1M9IiIKKwlleHBvcnQgTERGTEFHUz0iIgorCWV4cG9ydCBDR09fQ0ZMQUdTPSIke0JVSUxEU0RLX0NGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwlleHBvcnQgQ0dPX0xERkxBR1M9IiR7QlVJTERTREtfTERGTEFHU30gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworCSMgbGluayBmaXh1cHMgZm9yIGNvbXBpbGF0aW9uCisJcm0gLWYgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMKKwlsbiAtc2YgLi8gJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9zcmMKKwlybSAtcmYgJHtTfS9zcmMvaW1wb3J0L3BsdWdpbnMKKwlybSAtcmYgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvcGx1Z2lucworCisJbWtkaXIgLXAgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvY25pCisKKwlsbiAtc2YgLi4vLi4vLi4vLi4vbGliY25pICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL2NuaS9saWJjbmkKKwlsbiAtc2YgLi4vLi4vLi4vLi4vcGtnICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL2NuaS9wa2cKKwlsbiAtc2YgLi4vLi4vLi4vLi4vY25pdG9vbCAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vY29udGFpbmVybmV0d29ya2luZy9jbmkvY25pdG9vbAorCWxuIC1zZiAke1dPUktESVJ9L3BsdWdpbnMgJHtTfS9zcmMvaW1wb3J0L3ZlbmRvci9naXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvcGx1Z2lucworCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0Ly5nb3BhdGg6JHtTfS9zcmMvaW1wb3J0L3ZlbmRvcjoke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtwcmVmaXh9L2xvY2FsL2dvIgorCWV4cG9ydCBHT1JPT1Q9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS8ke25vbmFyY2hfbGliZGlyfS8ke0hPU1RfU1lTfS9nbyIKKworCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCisJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcworCWV4cG9ydCBDR09fRU5BQkxFRD0iMSIKKwlleHBvcnQgQ0dPX0NGTEFHUz0iJHtDRkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENHT19MREZMQUdTPSIke0xERkxBR1N9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisKKwljZCAke1N9L3NyYy9pbXBvcnQvdmVuZG9yL2dpdGh1Yi5jb20vY29udGFpbmVybmV0d29ya2luZy9jbmkvbGliY25pCisJZ28gYnVpbGQKKworCWNkICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL2NuaS9jbml0b29sCisJZ28gYnVpbGQKKworCWNkICR7U30vc3JjL2ltcG9ydC92ZW5kb3IvZ2l0aHViLmNvbS9jb250YWluZXJuZXR3b3JraW5nL3BsdWdpbnMvCisJUExVR0lOUz0icGx1Z2lucy9tZXRhLyogcGx1Z2lucy9tYWluLyoiCisJbWtkaXIgLXAgJHtXT1JLRElSfS9wbHVnaW5zL2Jpbi8KKwlmb3IgcCBpbiAkUExVR0lOUzsgZG8KKwkgICAgcGx1Z2luPSIkKGJhc2VuYW1lICIkcCIpIgorCSAgICBlY2hvICJidWlsZGluZzogJHAiCisJICAgIGdvIGJ1aWxkIC1vICR7V09SS0RJUn0vcGx1Z2lucy9iaW4vJHBsdWdpbiBnaXRodWIuY29tL2NvbnRhaW5lcm5ldHdvcmtpbmcvcGx1Z2lucy8kcAorCWRvbmUKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBsb2NhbGJpbmRpcj0iL29wdC9jbmkvYmluIgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbGJpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9jbmkvbmV0LmQKKworICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc3JjL2ltcG9ydC9jbml0b29sL2NuaXRvb2wgJHtEfS8ke2xvY2FsYmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1IC1EICR7V09SS0RJUn0vcGx1Z2lucy9iaW4vKiAke0R9LyR7bG9jYWxiaW5kaXJ9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIvb3B0L2NuaS9iaW4vKiIKKworSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyBhbHJlYWR5LXN0cmlwcGVkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9uZXRucy9maWxlcy8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9uZXRucy9maWxlcy8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNjZlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL25ldG5zL2ZpbGVzLzAwMDEtVXNlLWNvcnJlY3QtZ28tY3Jvc3MtY29tcGlsZXIucGF0Y2gKQEAgLTAsMCArMSw3NyBAQAorRnJvbSBkNWMzMTliYjYxMTU1ZDk0YmVmMjU3MWEwOTVkODI5ODNkNzg2Yjk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK0RhdGU6IEZyaSwgMTMgT2N0IDIwMTcgMTc6NTg6MTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIGNvcnJlY3QgZ28gY3Jvc3MtY29tcGlsZXIKKworU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK1Vwc3RyZWFtLXN0YXR1czogUGVuZGluZworLS0tCisgTWFrZWZpbGUgfCAxNiArKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGNiOWE0NmQuLjYzM2Y4ODQgMTAwNjQ0CistLS0gYS9zcmMvaW1wb3J0L01ha2VmaWxlCisrKysgYi9zcmMvaW1wb3J0L01ha2VmaWxlCitAQCAtMzMsMTIgKzMzLDEyIEBAIGJ1aWxkOiAkKE5BTUUpICMjIEJ1aWxkcyBhIGR5bmFtaWMgZXhlY3V0YWJsZSBvciBwYWNrYWdlCisgCisgJChOQU1FKTogKi5nbyBWRVJTSU9OCisgCUBlY2hvICIrICRAIgorLQlnbyBidWlsZCAtdGFncyAiJChCVUlMRFRBR1MpIiAke0dPX0xERkxBR1N9IC1vICQoTkFNRSkgLgorKwkkKEdPKSBidWlsZCAtdGFncyAiJChCVUlMRFRBR1MpIiAke0dPX0xERkxBR1N9IC1vICQoTkFNRSkgLgorIAorIC5QSE9OWTogc3RhdGljCisgc3RhdGljOiAjIyBCdWlsZHMgYSBzdGF0aWMgZXhlY3V0YWJsZQorIAlAZWNobyAiKyAkQCIKKy0JQ0dPX0VOQUJMRUQ9MCBnbyBidWlsZCBcCisrCUNHT19FTkFCTEVEPTAgJChHTykgYnVpbGQgXAorIAkJCQktdGFncyAiJChCVUlMRFRBR1MpIHN0YXRpY19idWlsZCIgXAorIAkJCQkke0dPX0xERkxBR1NfU1RBVElDfSAtbyAkKE5BTUUpIC4KKyAKK0BAIC01NSwyMSArNTUsMjEgQEAgbGludDogIyMgVmVyaWZpZXMgYGdvbGludGAgcGFzc2VzCisgLlBIT05ZOiB0ZXN0CisgdGVzdDogIyMgUnVucyB0aGUgZ28gdGVzdHMKKyAJQGVjaG8gIisgJEAiCistCUBnbyB0ZXN0IC12IC10YWdzICIkKEJVSUxEVEFHUykgY2dvIiAkKHNoZWxsIGdvIGxpc3QgLi8uLi4gfCBncmVwIC12IHZlbmRvcikKKysJQCQoR08pIHRlc3QgLXYgLXRhZ3MgIiQoQlVJTERUQUdTKSBjZ28iICQoc2hlbGwgJChHTykgbGlzdCAuLy4uLiB8IGdyZXAgLXYgdmVuZG9yKQorIAorIC5QSE9OWTogdmV0CisgdmV0OiAjIyBWZXJpZmllcyBgZ28gdmV0YCBwYXNzZXMKKyAJQGVjaG8gIisgJEAiCistCUBnbyB2ZXQgJChzaGVsbCBnbyBsaXN0IC4vLi4uIHwgZ3JlcCAtdiB2ZW5kb3IpIHwgZ3JlcCAtdiAnLnBiLmdvOicgfCB0ZWUgL2Rldi9zdGRlcnIKKysJQCQoR08pIHZldCAkKHNoZWxsICQoR08pIGxpc3QgLi8uLi4gfCBncmVwIC12IHZlbmRvcikgfCBncmVwIC12ICcucGIuZ286JyB8IHRlZSAvZGV2L3N0ZGVycgorIAorIC5QSE9OWTogaW5zdGFsbAorIGluc3RhbGw6ICMjIEluc3RhbGxzIHRoZSBleGVjdXRhYmxlIG9yIHBhY2thZ2UKKyAJQGVjaG8gIisgJEAiCistCUBnbyBpbnN0YWxsIC4KKysJQCQoR08pIGluc3RhbGwgLgorIAorIGRlZmluZSBidWlsZHByZXR0eQorIG1rZGlyIC1wICQoQlVJTERESVIpLyQoMSkvJCgyKTsKKy1HT09TPSQoMSkgR09BUkNIPSQoMikgQ0dPX0VOQUJMRUQ9MCBnbyBidWlsZCBcCisrR09PUz0kKDEpIEdPQVJDSD0kKDIpIENHT19FTkFCTEVEPTAgJChHTykgYnVpbGQgXAorIAkgLW8gJChCVUlMRERJUikvJCgxKS8kKDIpLyQoTkFNRSkgXAorIAkgLWEgLXRhZ3MgIiQoQlVJTERUQUdTKSBzdGF0aWNfYnVpbGQgbmV0Z28iIFwKKyAJIC1pbnN0YWxsc3VmZml4IG5ldGdvICR7R09fTERGTEFHU19TVEFUSUN9IC47CitAQCAtODMsNyArODMsNyBAQCBjcm9zczogKi5nbyBWRVJTSU9OICMjIEJ1aWxkcyB0aGUgY3Jvc3MtY29tcGlsZWQgYmluYXJpZXMsIGNyZWF0aW5nIGEgY2xlYW4gZGlyZQorIAkkKGZvcmVhY2ggR09PU0FSQ0gsJChHT09TQVJDSEVTKSwgJChjYWxsIGJ1aWxkcHJldHR5LCQoc3Vic3QgLywsJChkaXIgJChHT09TQVJDSCkpKSwkKG5vdGRpciAkKEdPT1NBUkNIKSkpKQorIAorIGRlZmluZSBidWlsZHJlbGVhc2UKKy1HT09TPSQoMSkgR09BUkNIPSQoMikgQ0dPX0VOQUJMRUQ9MCBnbyBidWlsZCBcCisrR09PUz0kKDEpIEdPQVJDSD0kKDIpIENHT19FTkFCTEVEPTAgJChHTykgYnVpbGQgXAorIAkgLW8gJChCVUlMRERJUikvJChOQU1FKS0kKDEpLSQoMikgXAorIAkgLWEgLXRhZ3MgIiQoQlVJTERUQUdTKSBzdGF0aWNfYnVpbGQgbmV0Z28iIFwKKyAJIC1pbnN0YWxsc3VmZml4IG5ldGdvICR7R09fTERGTEFHU19TVEFUSUN9IC47CitAQCAtOTksNyArOTksNyBAQCByZWxlYXNlOiAqLmdvIFZFUlNJT04gIyMgQnVpbGRzIHRoZSBjcm9zcy1jb21waWxlZCBiaW5hcmllcywgbmFtaW5nIHRoZW0gaW4gc3VjaAorIC5QSE9OWTogYnVtcC12ZXJzaW9uCisgQlVNUCA6PSBwYXRjaAorIGJ1bXAtdmVyc2lvbjogIyMgQnVtcCB0aGUgdmVyc2lvbiBpbiB0aGUgdmVyc2lvbiBmaWxlLiBTZXQgS0lORCB0byBbIHBhdGNoIHwgbWFqb3IgfCBtaW5vciBdCistCUBnbyBnZXQgLXUgZ2l0aHViLmNvbS9qZXNzZnJhei9qdW5rL3NlbWJ1bXAgIyB1cGRhdGUgc2VtYnVtcCB0b29sCisrCUAkKEdPKSBnZXQgLXUgZ2l0aHViLmNvbS9qZXNzZnJhei9qdW5rL3NlbWJ1bXAgIyB1cGRhdGUgc2VtYnVtcCB0b29sCisgCSQoZXZhbCBORVdfVkVSU0lPTiA9ICQoc2hlbGwgc2VtYnVtcCAtLWtpbmQgJChCVU1QKSAkKFZFUlNJT04pKSkKKyAJQGVjaG8gIkJ1bXBpbmcgVkVSU0lPTiBmcm9tICQoVkVSU0lPTikgdG8gJChORVdfVkVSU0lPTikiCisgCWVjaG8gJChORVdfVkVSU0lPTikgPiBWRVJTSU9OCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvbmV0bnMvbmV0bnNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9uZXRucy9uZXRuc19naXQuYmIKaW5kZXggNjQxZDU1Zi4uZDM1ODM2ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9uZXRucy9uZXRuc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9uZXRucy9uZXRuc19naXQuYmIKQEAgLTEsMTEgKzEsMTQgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qZnJhemVsbGUvbmV0bnMiCiBTVU1NQVJZID0gIlJ1bmMgaG9vayBmb3Igc2V0dGluZyB1cCBkZWZhdWx0IGJyaWRnZSBuZXR3b3JraW5nLiIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjBjZTRjNmE0ZjMyZDZlZTRhNjhlM2E3NTA2ZGIzZjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvaW1wb3J0L0xJQ0VOU0U7bWQ1PTIwY2U0YzZhNGYzMmQ2ZWU0YTY4ZTNhNzUwNmRiM2YxIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamVzc2ZyYXovbmV0bnM7YnJhbmNoPW1hc3RlciIKLVNSQ1JFViA9ICI4NWIxYWI5ZmNjY2JhYTQwNGEyNjM2YjUyYTQ4YmJkZTAyNDM3Y2Y3IgotUFYgPSAiMC4xLjArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamVzc2ZyYXovbmV0bnM7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1jb3JyZWN0LWdvLWNyb3NzLWNvbXBpbGVyLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNSRVYgPSAiNzRlMjNhMGU1YzRlN2FjMDExYWFmY2M0NjIzNTg2YzE5NmYxYjNlZiIKK1BWID0gIjAuMi4xIgorR09fSU1QT1JUID0gImltcG9ydCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtMjAsMTIgKzIzLDEzIEBACiAJIyBHbyBsb29rcyBpbiBhIHNyYyBkaXJlY3RvcnkgdW5kZXIgYW55IGRpcmVjdG9yeSBpbiBHT1BBVEggYnV0IG5ldG5zCiAJIyB1c2VzICd2ZW5kb3InIGluc3RlYWQgb2YgJ3ZlbmRvci9zcmMnLiBXZSBjYW4gZml4IHRoaXMgd2l0aCBhIHN5bWxpbmsuCiAJIwotCSMgV2UgYWxzbyBuZWVkIHRvIGxpbmsgaW4gdGhlIGlwYWxsb2NhdG9yIGRpcmVjdG9yeSBhcyB0aGF0IGlzIG5vdCB1bmRlcgotCSMgYSBzcmMgZGlyZWN0b3J5LgotCWxuIC1zZm4gLiAiJHtTfS92ZW5kb3Ivc3JjIgotCW1rZGlyIC1wICIke1N9L3ZlbmRvci9zcmMvZ2l0aHViLmNvbS9qZXNzZnJhei9uZXRucyIKLQlsbiAtc2ZuICIke1N9L2lwYWxsb2NhdG9yIiAiJHtTfS92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vamVzc2ZyYXovbmV0bnMvaXBhbGxvY2F0b3IiCi0JZXhwb3J0IEdPUEFUSD0iJHtTfS92ZW5kb3IiCisJIyBXZSBhbHNvIG5lZWQgdG8gbGluayBpbiB0aGUgaXBhbGxvY2F0b3IgYW5kIHZlcnNpb24gZGlyZWN0b3JpZXMgYXMKKwkjIHRoZXkgYXJlIG5vdCB1bmRlciB0aGUgc3JjIGRpcmVjdG9yeS4KKwlsbiAtc2ZuIC4gIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjIgorCW1rZGlyIC1wICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL2plc3NmcmF6L25ldG5zIgorCWxuIC1zZm4gIiR7U30vc3JjL2ltcG9ydC9pcGFsbG9jYXRvciIgIiR7U30vc3JjL2ltcG9ydC92ZW5kb3Ivc3JjL2dpdGh1Yi5jb20vamVzc2ZyYXovbmV0bnMvaXBhbGxvY2F0b3IiCisJbG4gLXNmbiAiJHtTfS9zcmMvaW1wb3J0L3ZlcnNpb24iICIke1N9L3NyYy9pbXBvcnQvdmVuZG9yL3NyYy9naXRodWIuY29tL2plc3NmcmF6L25ldG5zL3ZlcnNpb24iCisJZXhwb3J0IEdPUEFUSD0iJHtTfS9zcmMvaW1wb3J0L3ZlbmRvciIKIAogCSMgUGFzcyB0aGUgbmVlZGVkIGNmbGFncy9sZGZsYWdzIHNvIHRoYXQgY2dvCiAJIyBjYW4gZmluZCB0aGUgbmVlZGVkIGhlYWRlcnMgZmlsZXMgYW5kIGxpYnJhcmllcwpAQCAtMzUsMTAgKzM5LDExIEBACiAJZXhwb3J0IENHT19DRkxBR1M9IiR7QlVJTERTREtfQ0ZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogCWV4cG9ydCBDR09fTERGTEFHUz0iJHtCVUlMRFNES19MREZMQUdTfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogCisJY2QgJHtTfS9zcmMvaW1wb3J0CiAJb2VfcnVubWFrZSBzdGF0aWMKIH0KIAogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1kICR7RH0vJHtzYmluZGlyfQotCWluc3RhbGwgJHtTfS9uZXRucyAke0R9LyR7c2JpbmRpcn0vbmV0bnMKKwlpbnN0YWxsICR7U30vc3JjL2ltcG9ydC9uZXRucyAke0R9LyR7c2JpbmRpcn0vbmV0bnMKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvY29uZmlndXJlLU9ubHktbGluay1hZ2FpbnN0LWxpYnBjYXAtb24tRnJlZUJTRC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvY29uZmlndXJlLU9ubHktbGluay1hZ2FpbnN0LWxpYnBjYXAtb24tRnJlZUJTRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE0NGI4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL2ZpbGVzL2NvbmZpZ3VyZS1Pbmx5LWxpbmstYWdhaW5zdC1saWJwY2FwLW9uLUZyZWVCU0QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGQzMGU3MTRjY2I5ZDEzY2FmMzlkMTRkNWIyZmM5NTIzYjY3OGVkNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZW4gUGZhZmYgPGJscEBuaWNpcmEuY29tPgotRGF0ZTogVGh1LCAxNCBNYXIgMjAxMyAxNToyMDo1NSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IE9ubHkgbGluayBhZ2FpbnN0IGxpYnBjYXAgb24gRnJlZUJTRC4KLQotY29tbWl0IGQzMGU3MTRjY2I5ZDEzY2FmMzlkMTRkNWIyZmM5NTIzYjY3OGVkNTEgdXBzdHJlYW0KLWh0dHA6Ly9naXQub3BlbnZzd2l0Y2gub3JnL2dpdC9vcGVudnN3aXRjaAotCi1PbiBvdGhlciBwbGF0Zm9ybXMgdGhlcmUgaXMgbm8gYmVuZWZpdCB0byBsaW5raW5nIGFnYWluc3QgbGlicGNhcCwgYmVjYXVzZQotaXQgaXMgbm90IHVzZWQuCi0KLVNpZ25lZC1vZmYtYnk6IEJlbiBQZmFmZiA8YmxwQG5pY2lyYS5jb20+Ci1DQzogRWQgTWFzdGUgPGVtYXN0ZUBmcmVlYnNkLm9yZz4KLS0tLQotIGFjaW5jbHVkZS5tNCB8IDcgKysrKysrLQotIGNvbmZpZ3VyZS5hYyB8IDMgKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKLWluZGV4IGYwNjEwYzkuLjE5YTQ3ZGQgMTAwNjQ0Ci0tLS0gYS9hY2luY2x1ZGUubTQKLSsrKyBiL2FjaW5jbHVkZS5tNAotQEAgLTEsNiArMSw2IEBACi0gIyAtKi0gYXV0b2NvbmYgLSotCi0gCi0tIyBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgTmljaXJhLCBJbmMuCi0rIyBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgTmljaXJhLCBJbmMuCi0gIwotICMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi1AQCAtMjk1LDYgKzI5NSw4IEBAIEFDX0RFRlVOKFtPVlNfQ0hFQ0tfSUZfUEFDS0VUXSwKLSAgICBmaV0pCi0gCi0gZG5sIENoZWNrcyBmb3IgbmV0L2lmX2RsLmguCi0rZG5sCi0rZG5sIChXZSB1c2UgdGhpcyBhcyBhIHByb3h5IGZvciBjaGVja2luZyB3aGV0aGVyIHdlJ3JlIGJ1aWxkaW5nIG9uIEZyZWVCU0QuKQotIEFDX0RFRlVOKFtPVlNfQ0hFQ0tfSUZfRExdLAotICAgW0FDX0NIRUNLX0hFQURFUihbbmV0L2lmX2RsLmhdLAotICAgICAgICAgICAgICAgICAgICBbSEFWRV9JRl9ETD15ZXNdLAotQEAgLTMwMyw2ICszMDUsOSBAQCBBQ19ERUZVTihbT1ZTX0NIRUNLX0lGX0RMXSwKLSAgICBpZiB0ZXN0ICIkSEFWRV9JRl9ETCIgPSB5ZXM7IHRoZW4KLSAgICAgICBBQ19ERUZJTkUoW0hBVkVfSUZfRExdLCBbMV0sCi0gICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiBuZXQvaWZfZGwuaCBpcyBhdmFpbGFibGUuXSkKLSsKLSsgICAgICAjIE9uIEZyZWVCU0Qgd2UgdXNlIGxpYnBjYXAgdG8gYWNjZXNzIG5ldHdvcmsgZGV2aWNlcy4KLSsgICAgICBBQ19TRUFSQ0hfTElCUyhbcGNhcF9vcGVuX2xpdmVdLCBbcGNhcF0pCi0gICAgZmldKQotIAotIGRubCBDaGVja3MgZm9yIGJ1Z2d5IHN0cnRva19yLgotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMWNhY2QyOS4uYmQ0OTE3OSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMSw0ICsxLDQgQEAKLS0jIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBOaWNpcmEsIEluYy4KLSsjIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBOaWNpcmEsIEluYy4KLSAjCi0gIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLUBAIC00NCw3ICs0NCw2IEBAIEFDX1NZU19MQVJHRUZJTEUKLSBBQ19TRUFSQ0hfTElCUyhbcG93XSwgW21dKQotIEFDX1NFQVJDSF9MSUJTKFtjbG9ja19nZXR0aW1lXSwgW3J0XSkKLSBBQ19TRUFSQ0hfTElCUyhbdGltZXJfY3JlYXRlXSwgW3J0XSkKLS1BQ19TRUFSQ0hfTElCUyhbcGNhcF9vcGVuX2xpdmVdLCBbcGNhcF0pCi0gCi0gT1ZTX0NIRUNLX0VTWAotIE9WU19DSEVDS19DT1ZFUkFHRQotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvcHl0aG9uLW1ha2UtcmVtYWluaW5nLXNjcmlwdHMtdXNlLXVzci1iaW4tZW52LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tbWFrZS1yZW1haW5pbmctc2NyaXB0cy11c2UtdXNyLWJpbi1lbnYucGF0Y2gKaW5kZXggNjhmNDZmZi4uNDQ0MWMxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tbWFrZS1yZW1haW5pbmctc2NyaXB0cy11c2UtdXNyLWJpbi1lbnYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tbWFrZS1yZW1haW5pbmctc2NyaXB0cy11c2UtdXNyLWJpbi1lbnYucGF0Y2gKQEAgLTMzLDcgKzMzLDcgQEAKICsrKyBiL2J1aWxkLWF1eC9jaGVjay1zdHJ1Y3RzCiBAQCAtMSw0ICsxLDQgQEAKIC0jISAvdXNyL2Jpbi9weXRob24KLSsjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKICAKICBpbXBvcnQgb3MucGF0aAogIGltcG9ydCBzeXMKQEAgLTQzLDcgKzQzLDcgQEAKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCiBAQCAtMSw0ICsxLDQgQEAKIC0jISAvdXNyL2Jpbi9weXRob24KLSsjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKICAKICBpbXBvcnQgc3lzCiAgaW1wb3J0IG9zLnBhdGgKQEAgLTUzLDcgKzUzLDcgQEAKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMKIEBAIC0xLDQgKzEsNCBAQAogLSMhIC91c3IvYmluL3B5dGhvbgotKyMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAogIGltcG9ydCBzeXMKICBpbXBvcnQgb3MucGF0aApAQCAtNjMsNyArNjMsNyBAQAogKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcwogQEAgLTEsNCArMSw0IEBACiAtIyEgL3Vzci9iaW4vcHl0aG9uCi0rIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCiAgCiAgaW1wb3J0IGdldG9wdAogIGltcG9ydCBzeXMKQEAgLTczLDcgKzczLDcgQEAKICsrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1tc2dzCiBAQCAtMSw0ICsxLDQgQEAKIC0jISAvdXNyL2Jpbi9weXRob24KLSsjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKICAKICBpbXBvcnQgc3lzCiAgaW1wb3J0IG9zLnBhdGgKQEAgLTgzLDcgKzgzLDcgQEAKICsrKyBiL2J1aWxkLWF1eC94bWwybnJvZmYKIEBAIC0xLDQgKzEsNCBAQAogLSMhIC91c3IvYmluL3B5dGhvbgotKyMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAogICMgQ29weXJpZ2h0IChjKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2IE5pY2lyYSwgSW5jLgogICMKQEAgLTkzLDcgKzkzLDcgQEAKICsrKyBiL292bi91dGlsaXRpZXMvb3ZuLWRvY2tlci1vdmVybGF5LWRyaXZlcgogQEAgLTEsNCArMSw0IEBACiAtIyEgL3Vzci9iaW4vcHl0aG9uCi0rIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCiAgIyBDb3B5cmlnaHQgKEMpIDIwMTUgTmljaXJhLCBJbmMuCiAgIwogICMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CkBAIC0xMDMsNyArMTAzLDcgQEAKICsrKyBiL292bi91dGlsaXRpZXMvb3ZuLWRvY2tlci11bmRlcmxheS1kcml2ZXIKIEBAIC0xLDQgKzEsNCBAQAogLSMhIC91c3IvYmluL3B5dGhvbgotKyMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogICMgQ29weXJpZ2h0IChDKSAyMDE1IE5pY2lyYSwgSW5jLgogICMKICAjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwpAQCAtMTEzLDcgKzExMyw3IEBACiArKysgYi9vdnNkYi9vdnNkYi1kb2MKIEBAIC0xLDQgKzEsNCBAQAogLSMhIC91c3IvYmluL3B5dGhvbgotKyMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAogICMgQ29weXJpZ2h0IChjKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1IE5pY2lyYSwgSW5jLgogICMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvcHl0aG9uLXN3aXRjaC1yZW1haW5pbmctc2NyaXB0cy10by11c2UtcHl0aG9uMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvZmlsZXMvcHl0aG9uLXN3aXRjaC1yZW1haW5pbmctc2NyaXB0cy10by11c2UtcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDJiMmE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9maWxlcy9weXRob24tc3dpdGNoLXJlbWFpbmluZy1zY3JpcHRzLXRvLXVzZS1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMTEzIEBACitGcm9tIDE3NjUyOGNhM2E4Yjc2YzlkMGJiNzFiMWU1NmVlZWJjY2M2NTVjNzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAzIE1heSAyMDE3IDEwOjM5OjEyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjogc3dpdGNoIHJlbWFpbmluZyBzY3JpcHRzIHRvIHVzZSBweXRob24zCisKK1dvcmsgdG8gcmVtb3ZlIHRoZSBtYWluIG9wZW52c3dpdGNoIHBhY2thZ2UncyBkZXBlbmRlbmN5IG9uIHB5dGhvbiAyLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorLS0tCisgb2Zwcm90by9pcGZpeC1nZW4tZW50aXRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdGVzdHMvdGVzdC1sNy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdXRpbGl0aWVzL2NoZWNrcGF0Y2gucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdXRpbGl0aWVzL292cy1kZXYucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdXRpbGl0aWVzL292cy1waXBlZ2VuLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdnRlcC9vdnMtdnRlcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgeGVuc2VydmVyL2V0Y194YXBpLmRfcGx1Z2luc19vcGVudnN3aXRjaC1jZmctdXBkYXRlICAgfCAyICstCisgeGVuc2VydmVyL29wdF94ZW5zb3VyY2VfbGliZXhlY19pbnRlcmZhY2UtcmVjb25maWd1cmUgfCAyICstCisgeGVuc2VydmVyL3Vzcl9zaGFyZV9vcGVudnN3aXRjaF9zY3JpcHRzX292cy14YXBpLXN5bmMgfCAyICstCisgOSBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9vZnByb3RvL2lwZml4LWdlbi1lbnRpdGllcyBiL29mcHJvdG8vaXBmaXgtZ2VuLWVudGl0aWVzCitpbmRleCAwYmU3MTk5Li5kMmNjZTQyIDEwMDc1NQorLS0tIGEvb2Zwcm90by9pcGZpeC1nZW4tZW50aXRpZXMKKysrKyBiL29mcHJvdG8vaXBmaXgtZ2VuLWVudGl0aWVzCitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyBDb3B5cmlnaHQgKEMpIDIwMTIgTmljaXJhLCBJbmMuCisgIworZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3QtbDcucHkgYi90ZXN0cy90ZXN0LWw3LnB5CitpbmRleCBkNzg1NGExLi5mMDlkZWZiIDEwMDc1NQorLS0tIGEvdGVzdHMvdGVzdC1sNy5weQorKysrIGIvdGVzdHMvdGVzdC1sNy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgQ29weXJpZ2h0IChjKSAyMDE1LCAyMDE2IE5pY2lyYSwgSW5jLgorICMKKyAjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworZGlmZiAtLWdpdCBhL3V0aWxpdGllcy9jaGVja3BhdGNoLnB5IGIvdXRpbGl0aWVzL2NoZWNrcGF0Y2gucHkKK2luZGV4IDI2ZWI1YzMuLjJlMTkzMmIgMTAwNzU1CistLS0gYS91dGlsaXRpZXMvY2hlY2twYXRjaC5weQorKysrIGIvdXRpbGl0aWVzL2NoZWNrcGF0Y2gucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIENvcHlyaWdodCAoYykgMjAxNiBSZWQgSGF0LCBJbmMuCisgIworICMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CitkaWZmIC0tZ2l0IGEvdXRpbGl0aWVzL292cy1kZXYucHkgYi91dGlsaXRpZXMvb3ZzLWRldi5weQoraW5kZXggOWNlMGYwNC4uODM5ZTEzZSAxMDA3NTUKKy0tLSBhL3V0aWxpdGllcy9vdnMtZGV2LnB5CisrKysgYi91dGlsaXRpZXMvb3ZzLWRldi5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2IE5pY2lyYSwgSW5jLgorICMKKyAjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworZGlmZiAtLWdpdCBhL3V0aWxpdGllcy9vdnMtcGlwZWdlbi5weSBiL3V0aWxpdGllcy9vdnMtcGlwZWdlbi5weQoraW5kZXggNGJmMjQwZi4uMmE4ZjEzZSAxMDA3NTUKKy0tLSBhL3V0aWxpdGllcy9vdnMtcGlwZWdlbi5weQorKysrIGIvdXRpbGl0aWVzL292cy1waXBlZ2VuLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIENvcHlyaWdodCAoYykgMjAxMywgMjAxNCwgMjAxNSBOaWNpcmEsIEluYy4KKyAjCisgIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK2RpZmYgLS1naXQgYS92dGVwL292cy12dGVwIGIvdnRlcC9vdnMtdnRlcAoraW5kZXggZmQ2NTJkNC4uMTlkNjNmOSAxMDA3NTUKKy0tLSBhL3Z0ZXAvb3ZzLXZ0ZXAKKysrKyBiL3Z0ZXAvb3ZzLXZ0ZXAKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgQ29weXJpZ2h0IChDKSAyMDEzIE5pY2lyYSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICMKKyAjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworZGlmZiAtLWdpdCBhL3hlbnNlcnZlci9ldGNfeGFwaS5kX3BsdWdpbnNfb3BlbnZzd2l0Y2gtY2ZnLXVwZGF0ZSBiL3hlbnNlcnZlci9ldGNfeGFwaS5kX3BsdWdpbnNfb3BlbnZzd2l0Y2gtY2ZnLXVwZGF0ZQoraW5kZXggZTc0MDRlMy4uNWVkYWQ3NiAxMDA3NTUKKy0tLSBhL3hlbnNlcnZlci9ldGNfeGFwaS5kX3BsdWdpbnNfb3BlbnZzd2l0Y2gtY2ZnLXVwZGF0ZQorKysrIGIveGVuc2VydmVyL2V0Y194YXBpLmRfcGx1Z2luc19vcGVudnN3aXRjaC1jZmctdXBkYXRlCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIworICMgeGFwaSBwbHVnaW4gc2NyaXB0IHRvIHVwZGF0ZSB0aGUgY2FjaGUgb2YgY29uZmlndXJhdGlvbiBpdGVtcyBpbiB0aGUKKyAjIG92cy12c3dpdGNoZCBjb25maWd1cmF0aW9uIHRoYXQgYXJlIG1hbmFnZWQgaW4gdGhlIHhhcGkgZGF0YWJhc2Ugd2hlbgorZGlmZiAtLWdpdCBhL3hlbnNlcnZlci9vcHRfeGVuc291cmNlX2xpYmV4ZWNfaW50ZXJmYWNlLXJlY29uZmlndXJlIGIveGVuc2VydmVyL29wdF94ZW5zb3VyY2VfbGliZXhlY19pbnRlcmZhY2UtcmVjb25maWd1cmUKK2luZGV4IGVhNGE3NDIuLmM2NzQ1ZWUgMTAwNzU1CistLS0gYS94ZW5zZXJ2ZXIvb3B0X3hlbnNvdXJjZV9saWJleGVjX2ludGVyZmFjZS1yZWNvbmZpZ3VyZQorKysrIGIveGVuc2VydmVyL29wdF94ZW5zb3VyY2VfbGliZXhlY19pbnRlcmZhY2UtcmVjb25maWd1cmUKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyBDb3B5cmlnaHQgKGMpIDIwMDgsMjAwOSBDaXRyaXggU3lzdGVtcywgSW5jLgorICMKK2RpZmYgLS1naXQgYS94ZW5zZXJ2ZXIvdXNyX3NoYXJlX29wZW52c3dpdGNoX3NjcmlwdHNfb3ZzLXhhcGktc3luYyBiL3hlbnNlcnZlci91c3Jfc2hhcmVfb3BlbnZzd2l0Y2hfc2NyaXB0c19vdnMteGFwaS1zeW5jCitpbmRleCBhNzc2YzAwLi5kNWZmOGFmIDEwMDc1NQorLS0tIGEveGVuc2VydmVyL3Vzcl9zaGFyZV9vcGVudnN3aXRjaF9zY3JpcHRzX292cy14YXBpLXN5bmMKKysrKyBiL3hlbnNlcnZlci91c3Jfc2hhcmVfb3BlbnZzd2l0Y2hfc2NyaXB0c19vdnMteGFwaS1zeW5jCitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIENvcHlyaWdodCAoYykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBOaWNpcmEsIEluYy4KKyAjCisgIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMS1QeXRob24zLWNvbXBhdGliaWxpdHktQ29udmVydC1wcmludC1zdGF0ZW1lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMS1QeXRob24zLWNvbXBhdGliaWxpdHktQ29udmVydC1wcmludC1zdGF0ZW1lbnRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MTk3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAxLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1Db252ZXJ0LXByaW50LXN0YXRlbWVudHMucGF0Y2gKQEAgLTAsMCArMSwxMjY0IEBACitGcm9tIGM1YzE4ZjljNWYxYjcyMTdkNDNhZjQzYmU5NzM2YzE3NjJjN2ViYmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAyMDozMzoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvOF0gUHl0aG9uMyBjb21wYXRpYmlsaXR5OiBDb252ZXJ0IHByaW50IHN0YXRlbWVudHMKKworQ29tbWl0IGQzNGExY2MwMjUzNmY5YTgxMjUxN2E3MWFjY2VjM2ZiZDNjNmM5OGIgZnJvbQoraHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy5naXQKKworVGhpcyBwYXRjaCBmaXhlcyB1cCBhbGwgdGhlIHByaW50IHN0YXRlbWVudHMgdG8gd29yayB3aXRoIHB5dGhvbjMgb3IKK3B5dGhvbjIuCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorLS0tCisgYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMgICAgICAgfCAgIDQgKy0KKyBidWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucyB8ICA2OCArKystLS0KKyBidWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzICB8ICAgMiArLQorIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMgIHwgICAyICstCisgYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MgICAgfCAgIDYgKy0KKyBvdnNkYi9vdnNkYi1kb2MgICAgICAgICAgICAgICB8ICAgNiArLQorIG92c2RiL292c2RiLWlkbGMuaW4gICAgICAgICAgIHwgNTIzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDcgZmlsZXMgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMoKyksIDMwNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9jaGVjay1zdHJ1Y3RzIGIvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMKK2luZGV4IGY3OWYyMzUuLmJhZTUxMWYgMTAwNzU1CistLS0gYS9idWlsZC1hdXgvY2hlY2stc3RydWN0cworKysrIGIvYnVpbGQtYXV4L2NoZWNrLXN0cnVjdHMKK0BAIC0yMTEsNyArMjExLDcgQEAgZGVmIGNoZWNrU3RydWN0cygpOgorIAorICAgICBpZiAnLS1oZWxwJyBpbiBzeXMuYXJndjoKKyAgICAgICAgIGFyZ3YwID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkKKy0gICAgICAgIHByaW50ICcnJ1wKKysgICAgICAgIHByaW50KCcnJ1wKKyAlKGFyZ3YwKXMsIGZvciBjaGVja2luZyBzdHJ1Y3QgYW5kIHN0cnVjdCBtZW1iZXIgYWxpZ25tZW50CisgdXNhZ2U6ICUoYXJndjApcyAtSXBhdGggSEVBREVSIFtIRUFERVJdLi4uCisgCitAQCAtMjI2LDcgKzIyNiw3IEBAIGFzc2VydGlvbnMgdXNpbmcgT0ZQX0FTU0VSVC4KKyAKKyBUaGlzIHByb2dyYW0gaXMgc3BlY2lhbGl6ZWQgZm9yIHJlYWRpbmcgT3BlbiB2U3dpdGNoJ3MgT3BlbkZsb3cgaGVhZGVyCisgZmlsZXMuICBJdCB3aWxsIG5vdCB3b3JrIG9uIGFyYml0cmFyeSBoZWFkZXIgZmlsZXMgd2l0aG91dCBleHRlbnNpb25zLlwKKy0nJycgJSB7ImFyZ3YwIjogYXJndjB9CisrJycnICUgeyJhcmd2MCI6IGFyZ3YwfSkKKyAgICAgICAgIHN5cy5leGl0KDApCisgCisgICAgIGdsb2JhbCBmaWxlTmFtZQorZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKK2luZGV4IDAwNjJhYjguLjg3NGU2YjQgMTAwNzU1CistLS0gYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucworKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKK0BAIC02Nyw3ICs2Nyw3IEBAIGRlZiBmYXRhbChtc2cpOgorIAorIGRlZiB1c2FnZSgpOgorICAgICBhcmd2MCA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCistICAgIHByaW50ICgnJydcCisrICAgIHByaW50KCcnJ1wKKyAlKGFyZ3YwKXMsIGZvciBleHRyYWN0aW5nIE9wZW5GbG93IGFjdGlvbiBkYXRhCisgdXNhZ2U6ICUoYXJndjApcyBPRlBfQUNUSU9OUy5DIFstLXByb3RvdHlwZXMgfCAtLWRlZmluaXRpb25zXQorIAorQEAgLTIzOCwzNiArMjM4LDM2IEBAIGRlZiBleHRyYWN0X29mcF9hY3Rpb25zKGZuLCBkZWZpbml0aW9ucyk6CisgICAgIGlmIG5fZXJyb3JzOgorICAgICAgICAgc3lzLmV4aXQoMSkKKyAKKy0gICAgcHJpbnQgIiIiXAorKyAgICBwcmludCgiIiJcCisgLyogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHk7IGRvIG5vdCBtb2RpZnkhICAgICAtKi0gYnVmZmVyLXJlYWQtb25seTogdCAtKi0gKi8KKy0iIiIKKysiIiIpCisgCisgICAgIGlmIGRlZmluaXRpb25zOgorLSAgICAgICAgcHJpbnQgIi8qIFZlcmlmeSB0aGF0IHN0cnVjdHMgdXNlZCBhcyBhY3Rpb25zIGFyZSByZWFzb25hYmxlIHNpemVzLiAqLyIKKysgICAgICAgIHByaW50KCIvKiBWZXJpZnkgdGhhdCBzdHJ1Y3RzIHVzZWQgYXMgYWN0aW9ucyBhcmUgcmVhc29uYWJsZSBzaXplcy4gKi8iKQorICAgICAgICAgZm9yIHMgaW4gc29ydGVkKGFyZ19zdHJ1Y3RzKToKKy0gICAgICAgICAgICBwcmludCAiQlVJTERfQVNTRVJUX0RFQ0woc2l6ZW9mKCVzKSAlJSBPRlBfQUNUSU9OX0FMSUdOID09IDApOyIgJSBzCisrICAgICAgICAgICAgcHJpbnQoIkJVSUxEX0FTU0VSVF9ERUNMKHNpemVvZiglcykgJSUgT0ZQX0FDVElPTl9BTElHTiA9PSAwKTsiICUgcykKKyAKKy0gICAgICAgIHByaW50ICJcbnN0YXRpYyBzdHJ1Y3Qgb2ZwYWN0X3Jhd19pbnN0YW5jZSBhbGxfcmF3X2luc3RhbmNlc1tdID0geyIKKysgICAgICAgIHByaW50KCJcbnN0YXRpYyBzdHJ1Y3Qgb2ZwYWN0X3Jhd19pbnN0YW5jZSBhbGxfcmF3X2luc3RhbmNlc1tdID0geyIpCisgICAgICAgICBmb3IgdmVuZG9yIGluIGRvbWFpbjoKKyAgICAgICAgICAgICBmb3IgdHlwZV8gaW4gZG9tYWluW3ZlbmRvcl06CisgICAgICAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIGRvbWFpblt2ZW5kb3JdW3R5cGVfXToKKyAgICAgICAgICAgICAgICAgICAgIGQgPSBkb21haW5bdmVuZG9yXVt0eXBlX11bdmVyc2lvbl0KKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgeyB7IDB4JTA4eCwgJTJkLCAweCUwMnggfSwgIiAlICgKKy0gICAgICAgICAgICAgICAgICAgICAgICB2ZW5kb3IsIHR5cGVfLCB2ZXJzaW9uKQorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICVzLCIgJSBkWyJlbnVtIl0KKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICBITUFQX05PREVfTlVMTF9JTklUSUFMSVpFUiwiCistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgSE1BUF9OT0RFX05VTExfSU5JVElBTElaRVIsIgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICVzLCIgJSBkWyJtaW5fbGVuZ3RoIl0KKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAlcywiICUgZFsibWF4X2xlbmd0aCJdCistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgJXMsIiAlIGRbImFyZ19vZnMiXQorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICVzLCIgJSBkWyJhcmdfbGVuIl0KKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICBcIiVzXCIsIiAlIHJlLnN1YignX1JBV1swLTldKicsICcnLCBkWyJlbnVtIl0sIDEpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIHsgeyAweCUwOHgsICUyZCwgMHglMDJ4IH0sICIgJSAoCisrICAgICAgICAgICAgICAgICAgICAgICAgdmVuZG9yLCB0eXBlXywgdmVyc2lvbikpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgJXMsIiAlIGRbImVudW0iXSkKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICBITUFQX05PREVfTlVMTF9JTklUSUFMSVpFUiwiKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgIEhNQVBfTk9ERV9OVUxMX0lOSVRJQUxJWkVSLCIpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgJXMsIiAlIGRbIm1pbl9sZW5ndGgiXSkKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAlcywiICUgZFsibWF4X2xlbmd0aCJdKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICVzLCIgJSBkWyJhcmdfb2ZzIl0pCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgJXMsIiAlIGRbImFyZ19sZW4iXSkKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICBcIiVzXCIsIiAlIHJlLnN1YignX1JBV1swLTldKicsICcnLCBkWyJlbnVtIl0sIDEpKQorICAgICAgICAgICAgICAgICAgICAgaWYgZFsiZGVwcmVjYXRpb24iXToKKy0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgXCIlc1wiLCIgJSByZS5zdWIocicoWyJcXF0pJywgcidcXFwxJywgZFsiZGVwcmVjYXRpb24iXSkKKysgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgXCIlc1wiLCIgJSByZS5zdWIocicoWyJcXF0pJywgcidcXFwxJywgZFsiZGVwcmVjYXRpb24iXSkpCisgICAgICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICBOVUxMLCIKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSwiCistICAgICAgICBwcmludCAifTsiOworKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICBOVUxMLCIpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIH0sIikKKysgICAgICAgIHByaW50KCJ9OyIpCisgCisgICAgIGZvciB2ZXJzaW9ucyBpbiBlbnVtcy52YWx1ZXMoKToKKyAgICAgICAgIG5lZWRfb2ZwX3ZlcnNpb24gPSBGYWxzZQorQEAgLTMxNCwxMSArMzE0LDExIEBAIGRlZiBleHRyYWN0X29mcF9hY3Rpb25zKGZuLCBkZWZpbml0aW9ucyk6CisgICAgICAgICAgICAgZGVjbCArPSAifSIKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgZGVjbCArPSAiOyIKKy0gICAgICAgIHByaW50IGRlY2wKKy0gICAgICAgIHByaW50CisrICAgICAgICBwcmludChkZWNsKQorKyAgICAgICAgcHJpbnQoIiIpCisgCisgICAgIGlmIGRlZmluaXRpb25zOgorLSAgICAgICAgcHJpbnQgIiIiXAorKyAgICAgICAgcHJpbnQoIiIiXAorIHN0YXRpYyBlbnVtIG9mcGVycgorIG9mcGFjdF9kZWNvZGUoY29uc3Qgc3RydWN0IG9mcF9hY3Rpb25faGVhZGVyICphLCBlbnVtIG9mcF9yYXdfYWN0aW9uX3R5cGUgcmF3LAorICAgICAgICAgICAgICAgZW51bSBvZnBfdmVyc2lvbiB2ZXJzaW9uLCB1aW50NjRfdCBhcmcsCitAQCAtMzI2LDE0ICszMjYsMTQgQEAgb2ZwYWN0X2RlY29kZShjb25zdCBzdHJ1Y3Qgb2ZwX2FjdGlvbl9oZWFkZXIgKmEsIGVudW0gb2ZwX3Jhd19hY3Rpb25fdHlwZSByYXcsCisgICAgICAgICAgICAgICB1aW50NjRfdCAqdGx2X2JpdG1hcCwgc3RydWN0IG9mcGJ1ZiAqb3V0KQorIHsKKyAgICAgc3dpdGNoIChyYXcpIHtcCistIiIiCisrIiIiKQorICAgICAgICAgZm9yIHZlcnNpb25zIGluIGVudW1zLnZhbHVlcygpOgorICAgICAgICAgICAgIGVudW0gPSB2ZXJzaW9uc1swXVsiZW51bSJdCistICAgICAgICAgICAgcHJpbnQgIiAgICBjYXNlICVzOiIgJSBlbnVtCisrICAgICAgICAgICAgcHJpbnQoIiAgICBjYXNlICVzOiIgJSBlbnVtKQorICAgICAgICAgICAgIGJhc2VfYXJndHlwZSA9IHZlcnNpb25zWzBdWyJiYXNlX2FyZ3R5cGUiXQorICAgICAgICAgICAgIGFyZ192bF9tZmZfbWFwID0gdmVyc2lvbnNbMF1bImFyZ192bF9tZmZfbWFwIl0KKyAgICAgICAgICAgICBpZiBiYXNlX2FyZ3R5cGUgPT0gJ3ZvaWQnOgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICByZXR1cm4gZGVjb2RlXyVzKG91dCk7IiAlIGVudW0KKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgcmV0dXJuIGRlY29kZV8lcyhvdXQpOyIgJSBlbnVtKQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIGlmIGJhc2VfYXJndHlwZS5zdGFydHN3aXRoKCdzdHJ1Y3QnKToKKyAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICJBTElHTkVEX0NBU1QoY29uc3QgJXMgKiwgYSkiICUgYmFzZV9hcmd0eXBlCitAQCAtMzQ0LDE2ICszNDQsMTYgQEAgb2ZwYWN0X2RlY29kZShjb25zdCBzdHJ1Y3Qgb2ZwX2FjdGlvbl9oZWFkZXIgKmEsIGVudW0gb2ZwX3Jhd19hY3Rpb25fdHlwZSByYXcsCisgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICJhcmciCisgICAgICAgICAgICAgICAgIGlmIGFyZ192bF9tZmZfbWFwOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgcmV0dXJuIGRlY29kZV8lcyglcywgdmVyc2lvbiwgdmxfbWZmX21hcCwgdGx2X2JpdG1hcCwgb3V0KTsiICUgKGVudW0sIGFyZykKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIHJldHVybiBkZWNvZGVfJXMoJXMsIHZlcnNpb24sIHZsX21mZl9tYXAsIHRsdl9iaXRtYXAsIG91dCk7IiAlIChlbnVtLCBhcmcpKQorICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgcmV0dXJuIGRlY29kZV8lcyglcywgdmVyc2lvbiwgb3V0KTsiICUgKGVudW0sIGFyZykKKy0gICAgICAgICAgICBwcmludAorLSAgICAgICAgcHJpbnQgIiIiXAorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgcmV0dXJuIGRlY29kZV8lcyglcywgdmVyc2lvbiwgb3V0KTsiICUgKGVudW0sIGFyZykpCisrICAgICAgICAgICAgcHJpbnQoIiIpCisrICAgICAgICBwcmludCgiIiJcCisgICAgIGRlZmF1bHQ6CisgICAgICAgICBPVlNfTk9UX1JFQUNIRUQoKTsKKyAgICAgfQorIH1cCistIiIiCisrIiIiKQorICAgICBlbHNlOgorICAgICAgICAgZm9yIHZlcnNpb25zIGluIGVudW1zLnZhbHVlcygpOgorICAgICAgICAgICAgIGVudW0gPSB2ZXJzaW9uc1swXVsiZW51bSJdCitAQCAtMzY4LDE1ICszNjgsMTUgQEAgb2ZwYWN0X2RlY29kZShjb25zdCBzdHJ1Y3Qgb2ZwX2FjdGlvbl9oZWFkZXIgKmEsIGVudW0gb2ZwX3Jhd19hY3Rpb25fdHlwZSByYXcsCisgICAgICAgICAgICAgICAgIGlmIGFyZ192bF9tZmZfbWFwOgorICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlICs9ICdjb25zdCBzdHJ1Y3QgdmxfbWZmX21hcCAqLCB1aW50NjRfdCAqLCAnCisgICAgICAgICAgICAgcHJvdG90eXBlICs9ICJzdHJ1Y3Qgb2ZwYnVmICopOyIKKy0gICAgICAgICAgICBwcmludCBwcm90b3R5cGUKKysgICAgICAgICAgICBwcmludChwcm90b3R5cGUpCisgCistICAgICAgICBwcmludCAiIiIKKysgICAgICAgIHByaW50KCIiIgorIHN0YXRpYyBlbnVtIG9mcGVyciBvZnBhY3RfZGVjb2RlKGNvbnN0IHN0cnVjdCBvZnBfYWN0aW9uX2hlYWRlciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gb2ZwX3Jhd19hY3Rpb25fdHlwZSByYXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBvZnBfdmVyc2lvbiB2ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFyZywgY29uc3Qgc3RydWN0IHZsX21mZl9tYXAgKnZsX21mZl9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKnRsdl9iaXRtYXAsIHN0cnVjdCBvZnBidWYgKm91dCk7CistIiIiCisrIiIiKQorIAorIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIGlmICctLWhlbHAnIGluIHN5cy5hcmd2OgorZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCitpbmRleCAyMzEyYjc2Li4zMzZhMjQwIDEwMDc1NQorLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycworKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycworQEAgLTQyNiw3ICs0MjYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mcGVycl9kb21haW4gJXMgPSB7CisgICAgICAgICAgICAgICAgIHZlbmRvciwgdHlwZV8sIGNvZGUgPSBtYXBbZW51bV0KKyAgICAgICAgICAgICAgICAgaWYgY29kZSA9PSBOb25lOgorICAgICAgICAgICAgICAgICAgICAgY29kZSA9IC0xCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIHsgJSM4eCwgJTJkLCAlM2QgfSwgLyogJXMgKi8iICUgKHZlbmRvciwgdHlwZV8sIGNvZGUsIGVudW0pCisrICAgICAgICAgICAgICAgIHByaW50ICgiICAgICAgICB7ICUjOHgsICUyZCwgJTNkIH0sIC8qICVzICovIiAlICh2ZW5kb3IsIHR5cGVfLCBjb2RlLCBlbnVtKSkKKyAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICBwcmludCAoIiAgICAgICAgeyAgICAgICAtMSwgLTEsICAtMSB9LCAvKiAlcyAqLyIgJSBlbnVtKQorICAgICAgICAgcHJpbnQgKCIiIlwKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworaW5kZXggNDk4Yjg4Ny4uNDI1YTg1ZiAxMDA3NTUKKy0tLSBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKKysrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKK0BAIC03MjgsNyArNzI4LDcgQEAgZGVmIG1ha2Vfb3ZzX2ZpZWxkcyhtZXRhX2Zsb3dfaCwgbWV0YV9mbG93X3htbCk6Cisgb3ZzXC1maWVsZHMgXC0gcHJvdG9jb2wgaGVhZGVyIGZpZWxkcyBpbiBPcGVuRmxvdyBhbmQgT3BlbiB2U3dpdGNoCisgLgorIC5QUAorLScnJykgJSB2ZXJzaW9uCisrJycnICUgdmVyc2lvbikKKyAKKyAgICAgcmVjdXJzaXZlbHlfcmVwbGFjZShkb2MsICdveG1fY2xhc3NlcycsIG1ha2Vfb3htX2NsYXNzZXNfeG1sKGRvY3VtZW50KSkKKyAKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtbXNncyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1tc2dzCitpbmRleCAxODEzNjM4Li5hNjdlODcwIDEwMDc1NQorLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLW1zZ3MKKysrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1tc2dzCitAQCAtNTYsMTQgKzU2LDE0IEBAIGRlZiBmYXRhbChtc2cpOgorIAorIGRlZiB1c2FnZSgpOgorICAgICBhcmd2MCA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCistICAgIHByaW50ICcnJ1wKKysgICAgcHJpbnQoJycnXAorICUoYXJndjApcywgZm9yIGV4dHJhY3RpbmcgT3BlbkZsb3cgbWVzc2FnZSB0eXBlcyBmcm9tIGhlYWRlciBmaWxlcworIHVzYWdlOiAlKGFyZ3YwKXMgSU5QVVQgT1VUUFVUCisgICB3aGVyZSBJTlBVVCBpcyB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgaGVhZGVyIGZpbGUKKyAgICAgYW5kIE9VVFBVVCBpcyB0aGUgb3V0cHV0IGZpbGUgbmFtZS4KKyBEZXNwaXRlIE9VVFBVVCwgdGhlIG91dHB1dCBpcyB3cml0dGVuIHRvIHN0ZG91dCwgYW5kIHRoZSBPVVRQVVQgYXJndW1lbnQKKyBvbmx5IGNvbnRyb2xzICNsaW5lIGRpcmVjdGl2ZXMgaW4gdGhlIG91dHB1dC5cCistJycnICUgeyJhcmd2MCI6IGFyZ3YwfQorKycnJyAlIHsiYXJndjAiOiBhcmd2MH0pCisgICAgIHN5cy5leGl0KDApCisgCisgZGVmIG1ha2Vfc2l6ZW9mKHMpOgorQEAgLTM3OCw1ICszNzgsNSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICAgICAgbGluZV9udW1iZXIgPSAwCisgCisgICAgICAgICBmb3IgbGluZSBpbiBleHRyYWN0X29mcF9tc2dzKHN5cy5hcmd2WzJdKToKKy0gICAgICAgICAgICBwcmludCBsaW5lCisrICAgICAgICAgICAgcHJpbnQobGluZSkKKyAgICAgICAgIAorZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWRvYyBiL292c2RiL292c2RiLWRvYworaW5kZXggNWNmMjZlZS4uYjM0ZmIxMSAxMDA3NTUKKy0tLSBhL292c2RiL292c2RiLWRvYworKysrIGIvb3ZzZGIvb3ZzZGItZG9jCitAQCAtMjU4LDcgKzI1OCw3IEBAIHJlcHJlc2VudCBzdHJvbmcgcmVmZXJlbmNlczsgdGhpbiBsaW5lcyByZXByZXNlbnQgd2VhayByZWZlcmVuY2VzLgorICAgICByZXR1cm4gcworIAorIGRlZiB1c2FnZSgpOgorLSAgICBwcmludCAiIiJcCisrICAgIHByaW50KCIiIlwKKyAlKGFyZ3YwKXM6IG92c2RiIHNjaGVtYSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvcgorIFByaW50cyBkb2N1bWVudGF0aW9uIGZvciBhbiBPVlNEQiBzY2hlbWEgYXMgYW4gbnJvZmYtZm9ybWF0dGVkIG1hbnBhZ2UuCisgdXNhZ2U6ICUoYXJndjApcyBbT1BUSU9OU10gU0NIRU1BIFhNTAorQEAgLTI2OSw3ICsyNjksNyBAQCBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGFsc28gYXZhaWxhYmxlOgorICAgLS1lci1kaWFncmFtPURJQUdSQU0uUElDICAgIGluY2x1ZGUgRS1SIGRpYWdyYW0gZnJvbSBESUFHUkFNLlBJQworICAgLS12ZXJzaW9uPVZFUlNJT04gICAgICAgICAgIHVzZSBWRVJTSU9OIHRvIGRpc3BsYXkgb24gZG9jdW1lbnQgZm9vdGVyCisgICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZVwKKy0iIiIgJSB7J2FyZ3YwJzogYXJndjB9CisrIiIiICUgeydhcmd2MCc6IGFyZ3YwfSkKKyAgICAgc3lzLmV4aXQoMCkKKyAKKyBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorQEAgLTMwNCw3ICszMDQsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgICAgICAgZm9yIGxpbmUgaW4gcy5zcGxpdCgiXG4iKToKKyAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgaWYgbGVuKGxpbmUpOgorLSAgICAgICAgICAgICAgICBwcmludCBsaW5lCisrICAgICAgICAgICAgICAgIHByaW50KGxpbmUpCisgCisgICAgIGV4Y2VwdCBlcnJvci5FcnJvciwgZToKKyAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzOiAlc1xuIiAlIChhcmd2MCwgZS5tc2cpKQorZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWlkbGMuaW4gYi9vdnNkYi9vdnNkYi1pZGxjLmluCitpbmRleCA3MjFhYjUwLi4xMDY0NDQ4IDEwMDc1NQorLS0tIGEvb3ZzZGIvb3ZzZGItaWRsYy5pbgorKysrIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgorQEAgLTEsNSArMSw2IEBACisgIyEgQFBZVEhPTkAKKyAKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisgaW1wb3J0IGdldG9wdAorIGltcG9ydCBvcworIGltcG9ydCByZQorQEAgLTEyMyw3ICsxMjQsNyBAQCBkZWYgc29ydGVkX2NvbHVtbnModGFibGUpOgorIGRlZiBwcmludENJRExIZWFkZXIoc2NoZW1hRmlsZSk6CisgICAgIHNjaGVtYSA9IHBhcnNlU2NoZW1hKHNjaGVtYUZpbGUpCisgICAgIHByZWZpeCA9IHNjaGVtYS5pZGxQcmVmaXgKKy0gICAgcHJpbnQgJycnXAorKyAgICBwcmludCgnJydcCisgLyogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgLS0gZG8gbm90IG1vZGlmeSEgICAgLSotIGJ1ZmZlci1yZWFkLW9ubHk6IHQgLSotICovCisgCisgI2lmbmRlZiAlKHByZWZpeClzSURMX0hFQURFUgorQEAgLTEzNSwzOSArMTM2LDM5IEBAIGRlZiBwcmludENJRExIZWFkZXIoc2NoZW1hRmlsZSk6CisgI2luY2x1ZGUgIm92c2RiLWRhdGEuaCIKKyAjaW5jbHVkZSAib3ZzZGItaWRsLXByb3ZpZGVyLmgiCisgI2luY2x1ZGUgInNtYXAuaCIKKy0jaW5jbHVkZSAidXVpZC5oIicnJyAlIHsncHJlZml4JzogcHJlZml4LnVwcGVyKCl9CisrI2luY2x1ZGUgInV1aWQuaCInJycgJSB7J3ByZWZpeCc6IHByZWZpeC51cHBlcigpfSkKKyAKKyAgICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlcml0ZW1zKCkpOgorICAgICAgICAgc3RydWN0TmFtZSA9ICIlcyVzIiAlIChwcmVmaXgsIHRhYmxlTmFtZS5sb3dlcigpKQorIAorLSAgICAgICAgcHJpbnQgIgwiCistICAgICAgICBwcmludCAiLyogJXMgdGFibGUuICovIiAlIHRhYmxlTmFtZQorLSAgICAgICAgcHJpbnQgInN0cnVjdCAlcyB7IiAlIHN0cnVjdE5hbWUKKy0gICAgICAgIHByaW50ICJcdHN0cnVjdCBvdnNkYl9pZGxfcm93IGhlYWRlcl87IgorKyAgICAgICAgcHJpbnQoIgwiKQorKyAgICAgICAgcHJpbnQoIi8qICVzIHRhYmxlLiAqLyIgJSB0YWJsZU5hbWUpCisrICAgICAgICBwcmludCgic3RydWN0ICVzIHsiICUgc3RydWN0TmFtZSkKKysgICAgICAgIHByaW50KCJcdHN0cnVjdCBvdnNkYl9pZGxfcm93IGhlYWRlcl87IikKKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorLSAgICAgICAgICAgIHByaW50ICJcblx0LyogJXMgY29sdW1uLiAqLyIgJSBjb2x1bW5OYW1lCisrICAgICAgICAgICAgcHJpbnQoIlxuXHQvKiAlcyBjb2x1bW4uICovIiAlIGNvbHVtbk5hbWUpCisgICAgICAgICAgICAgY29tbWVudCwgbWVtYmVycyA9IGNNZW1iZXJzKHByZWZpeCwgdGFibGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lLCBjb2x1bW4sIEZhbHNlKQorICAgICAgICAgICAgIGZvciBtZW1iZXIgaW4gbWVtYmVyczoKKy0gICAgICAgICAgICAgICAgcHJpbnQgIlx0JSh0eXBlKXMlKG5hbWUpczslKGNvbW1lbnQpcyIgJSBtZW1iZXIKKy0gICAgICAgIHByaW50ICJ9OyIKKysgICAgICAgICAgICAgICAgcHJpbnQoIlx0JSh0eXBlKXMlKG5hbWUpczslKGNvbW1lbnQpcyIgJSBtZW1iZXIpCisrICAgICAgICBwcmludCgifTsiKQorIAorICAgICAgICAgIyBDb2x1bW4gaW5kZXhlcy4KKyAgICAgICAgIHByaW50RW51bSgiJXNfY29sdW1uX2lkIiAlIHN0cnVjdE5hbWUubG93ZXIoKSwgWyIlc19DT0xfJXMiICUgKHN0cnVjdE5hbWUudXBwZXIoKSwgY29sdW1uTmFtZS51cHBlcigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbHVtbk5hbWUsIGNvbHVtbiBpbiBzb3J0ZWRfY29sdW1ucyh0YWJsZSldCisgICAgICAgICAgICAgICAgICAgKyBbIiVzX05fQ09MVU1OUyIgJSBzdHJ1Y3ROYW1lLnVwcGVyKCldKQorIAorLSAgICAgICAgcHJpbnQKKysgICAgICAgIHByaW50KCIiKQorICAgICAgICAgZm9yIGNvbHVtbk5hbWUgaW4gdGFibGUuY29sdW1uczoKKy0gICAgICAgICAgICBwcmludCAiI2RlZmluZSAlKHMpc19jb2xfJShjKXMgKCUocylzX2NvbHVtbnNbJShTKXNfQ09MXyUoQylzXSkiICUgeworKyAgICAgICAgICAgIHByaW50KCIjZGVmaW5lICUocylzX2NvbF8lKGMpcyAoJShzKXNfY29sdW1uc1slKFMpc19DT0xfJShDKXNdKSIgJSB7CisgICAgICAgICAgICAgICAgICdzJzogc3RydWN0TmFtZSwKKyAgICAgICAgICAgICAgICAgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCksCisgICAgICAgICAgICAgICAgICdjJzogY29sdW1uTmFtZSwKKy0gICAgICAgICAgICAgICAgJ0MnOiBjb2x1bW5OYW1lLnVwcGVyKCl9CisrICAgICAgICAgICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpfSkKKyAKKy0gICAgICAgIHByaW50ICJcbmV4dGVybiBzdHJ1Y3Qgb3ZzZGJfaWRsX2NvbHVtbiAlc19jb2x1bW5zWyVzX05fQ09MVU1OU107IiAlIChzdHJ1Y3ROYW1lLCBzdHJ1Y3ROYW1lLnVwcGVyKCkpCisrICAgICAgICBwcmludCgiXG5leHRlcm4gc3RydWN0IG92c2RiX2lkbF9jb2x1bW4gJXNfY29sdW1uc1slc19OX0NPTFVNTlNdOyIgJSAoc3RydWN0TmFtZSwgc3RydWN0TmFtZS51cHBlcigpKSkKKyAKKy0gICAgICAgIHByaW50ICcnJworKyAgICAgICAgcHJpbnQoJycnCisgY29uc3Qgc3RydWN0ICUocylzIColKHMpc19nZXRfZm9yX3V1aWQoY29uc3Qgc3RydWN0IG92c2RiX2lkbCAqLCBjb25zdCBzdHJ1Y3QgdXVpZCAqKTsKKyBjb25zdCBzdHJ1Y3QgJShzKXMgKiUocylzX2ZpcnN0KGNvbnN0IHN0cnVjdCBvdnNkYl9pZGwgKik7CisgY29uc3Qgc3RydWN0ICUocylzIColKHMpc19uZXh0KGNvbnN0IHN0cnVjdCAlKHMpcyAqKTsKK0BAIC0yMDUsODcgKzIwNiw4NyBAQCB2b2lkICUocylzX2luaXQoc3RydWN0ICUocylzICopOworIHZvaWQgJShzKXNfZGVsZXRlKGNvbnN0IHN0cnVjdCAlKHMpcyAqKTsKKyBzdHJ1Y3QgJShzKXMgKiUocylzX2luc2VydChzdHJ1Y3Qgb3ZzZGJfaWRsX3R4biAqKTsKKyBib29sICUocylzX2lzX3VwZGF0ZWQoY29uc3Qgc3RydWN0ICUocylzICosIGVudW0gJShzKXNfY29sdW1uX2lkKTsKKy0nJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKX0KKysnJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKX0pCisgCisgICAgICAgICBmb3IgY29sdW1uTmFtZSwgY29sdW1uIGluIHNvcnRlZF9jb2x1bW5zKHRhYmxlKToKKy0gICAgICAgICAgICBwcmludCAndm9pZCAlKHMpc192ZXJpZnlfJShjKXMoY29uc3Qgc3RydWN0ICUocylzICopOycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9CisrICAgICAgICAgICAgcHJpbnQoJ3ZvaWQgJShzKXNfdmVyaWZ5XyUoYylzKGNvbnN0IHN0cnVjdCAlKHMpcyAqKTsnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfSkKKyAKKy0gICAgICAgIHByaW50CisrICAgICAgICBwcmludCgiIikKKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorICAgICAgICAgICAgIGlmIGNvbHVtbi50eXBlLnZhbHVlOgorICAgICAgICAgICAgICAgICB2YWx1ZVBhcmFtID0gJywgZW51bSBvdnNkYl9hdG9taWNfdHlwZSB2YWx1ZV90eXBlJworICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIHZhbHVlUGFyYW0gPSAnJworLSAgICAgICAgICAgIHByaW50ICdjb25zdCBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gKiUocylzX2dldF8lKGMpcyhjb25zdCBzdHJ1Y3QgJShzKXMgKiwgZW51bSBvdnNkYl9hdG9taWNfdHlwZSBrZXlfdHlwZSUodilzKTsnICUgeworLSAgICAgICAgICAgICAgICAncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwgJ3YnOiB2YWx1ZVBhcmFtfQorKyAgICAgICAgICAgIHByaW50KCdjb25zdCBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gKiUocylzX2dldF8lKGMpcyhjb25zdCBzdHJ1Y3QgJShzKXMgKiwgZW51bSBvdnNkYl9hdG9taWNfdHlwZSBrZXlfdHlwZSUodilzKTsnICUgeworKyAgICAgICAgICAgICAgICAncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwgJ3YnOiB2YWx1ZVBhcmFtfSkKKyAKKy0gICAgICAgIHByaW50CisrICAgICAgICBwcmludCgiIikKKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorLSAgICAgICAgICAgIHByaW50ICd2b2lkICUocylzX3NldF8lKGMpcyhjb25zdCBzdHJ1Y3QgJShzKXMgKiwnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfSwKKysgICAgICAgICAgICBwcmludCgndm9pZCAlKHMpc19zZXRfJShjKXMoY29uc3Qgc3RydWN0ICUocylzICosJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0sIGVuZD0nICcpCisgICAgICAgICAgICAgaWYgY29sdW1uLnR5cGUuaXNfc21hcCgpOgorICAgICAgICAgICAgICAgICBhcmdzID0gWydjb25zdCBzdHJ1Y3Qgc21hcCAqJ10KKyAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICBjb21tZW50LCBtZW1iZXJzID0gY01lbWJlcnMocHJlZml4LCB0YWJsZU5hbWUsIGNvbHVtbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sIFRydWUpCisgICAgICAgICAgICAgICAgIGFyZ3MgPSBbJyUodHlwZSlzJShuYW1lKXMnICUgbWVtYmVyIGZvciBtZW1iZXIgaW4gbWVtYmVyc10KKy0gICAgICAgICAgICBwcmludCAnJXMpOycgJSAnLCAnLmpvaW4oYXJncykKKysgICAgICAgICAgICBwcmludCgnJXMpOycgJSAnLCAnLmpvaW4oYXJncykpCisgCistICAgICAgICBwcmludAorKyAgICAgICAgcHJpbnQoIiIpCisgICAgICAgICBmb3IgY29sdW1uTmFtZSwgY29sdW1uIGluIHNvcnRlZF9jb2x1bW5zKHRhYmxlKToKKyAgICAgICAgICAgICBpZiBjb2x1bW4udHlwZS5pc19tYXAoKToKKy0gICAgICAgICAgICAgICAgcHJpbnQgJ3ZvaWQgJShzKXNfdXBkYXRlXyUoYylzX3NldGtleShjb25zdCBzdHJ1Y3QgJShzKXMgKiwgJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0sCistICAgICAgICAgICAgICAgIHByaW50ICclKGNvbHR5cGUpcywgJSh2YWx0eXBlKXMpOycgJSB7J2NvbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLnZhbHVlLnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpfQorLSAgICAgICAgICAgICAgICBwcmludCAndm9pZCAlKHMpc191cGRhdGVfJShjKXNfZGVsa2V5KGNvbnN0IHN0cnVjdCAlKHMpcyAqLCAnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfSwKKy0gICAgICAgICAgICAgICAgcHJpbnQgJyUoY29sdHlwZSlzKTsnICUgeydjb2x0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCl9CisrICAgICAgICAgICAgICAgIHByaW50KCd2b2lkICUocylzX3VwZGF0ZV8lKGMpc19zZXRrZXkoY29uc3Qgc3RydWN0ICUocylzICosICcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LCBlbmQ9JyAnKQorKyAgICAgICAgICAgICAgICBwcmludCgnJShjb2x0eXBlKXMsICUodmFsdHlwZSlzKTsnICUgeydjb2x0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCksICd2YWx0eXBlJzpjb2x1bW4udHlwZS52YWx1ZS50b19jb25zdF9jX3R5cGUocHJlZml4KX0pCisrICAgICAgICAgICAgICAgIHByaW50KCd2b2lkICUocylzX3VwZGF0ZV8lKGMpc19kZWxrZXkoY29uc3Qgc3RydWN0ICUocylzICosICcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LCBlbmQ9JyAnKQorKyAgICAgICAgICAgICAgICBwcmludCgnJShjb2x0eXBlKXMpOycgJSB7J2NvbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KX0pCisgICAgICAgICAgICAgaWYgY29sdW1uLnR5cGUuaXNfc2V0KCk6CistICAgICAgICAgICAgICAgIHByaW50ICd2b2lkICUocylzX3VwZGF0ZV8lKGMpc19hZGR2YWx1ZShjb25zdCBzdHJ1Y3QgJShzKXMgKiwgJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZX0sCistICAgICAgICAgICAgICAgIHByaW50ICclKHZhbHR5cGUpcyk7JyAlIHsndmFsdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpfQorLSAgICAgICAgICAgICAgICBwcmludCAndm9pZCAlKHMpc191cGRhdGVfJShjKXNfZGVsdmFsdWUoY29uc3Qgc3RydWN0ICUocylzICosICcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LAorLSAgICAgICAgICAgICAgICBwcmludCAnJSh2YWx0eXBlKXMpOycgJSB7J3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KX0KKysgICAgICAgICAgICAgICAgcHJpbnQoJ3ZvaWQgJShzKXNfdXBkYXRlXyUoYylzX2FkZHZhbHVlKGNvbnN0IHN0cnVjdCAlKHMpcyAqLCAnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfSwgZW5kPScgJykKKysgICAgICAgICAgICAgICAgcHJpbnQoJyUodmFsdHlwZSlzKTsnICUgeyd2YWx0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCl9KQorKyAgICAgICAgICAgICAgICBwcmludCgndm9pZCAlKHMpc191cGRhdGVfJShjKXNfZGVsdmFsdWUoY29uc3Qgc3RydWN0ICUocylzICosICcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LCBlbmQ9JyAnKQorKyAgICAgICAgICAgICAgICBwcmludCgnJSh2YWx0eXBlKXMpOycgJSB7J3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KX0pCisgCistICAgICAgICAgICAgcHJpbnQgJ3ZvaWQgJShzKXNfYWRkX2NsYXVzZV8lKGMpcyhzdHJ1Y3Qgb3ZzZGJfaWRsX2NvbmRpdGlvbiAqLCBlbnVtIG92c2RiX2Z1bmN0aW9uIGZ1bmN0aW9uLCcgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9LAorKyAgICAgICAgICAgIHByaW50KCd2b2lkICUocylzX2FkZF9jbGF1c2VfJShjKXMoc3RydWN0IG92c2RiX2lkbF9jb25kaXRpb24gKiwgZW51bSBvdnNkYl9mdW5jdGlvbiBmdW5jdGlvbiwnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfSwgZW5kPScgJykKKyAgICAgICAgICAgICBpZiBjb2x1bW4udHlwZS5pc19zbWFwKCk6CisgICAgICAgICAgICAgICAgIGFyZ3MgPSBbJ2NvbnN0IHN0cnVjdCBzbWFwIConXQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIGNvbW1lbnQsIG1lbWJlcnMgPSBjTWVtYmVycyhwcmVmaXgsIHRhYmxlTmFtZSwgY29sdW1uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiwgVHJ1ZSwgcmVmVGFibGU9RmFsc2UpCisgICAgICAgICAgICAgICAgIGFyZ3MgPSBbJyUodHlwZSlzJShuYW1lKXMnICUgbWVtYmVyIGZvciBtZW1iZXIgaW4gbWVtYmVyc10KKy0gICAgICAgICAgICBwcmludCAnJXMpOycgJSAnLCAnLmpvaW4oYXJncykKKysgICAgICAgICAgICBwcmludCgnJXMpOycgJSAnLCAnLmpvaW4oYXJncykpCisgCistICAgICAgICAgICAgcHJpbnQgJ3ZvaWQgJShzKXNfc2V0X2NvbmRpdGlvbihzdHJ1Y3Qgb3ZzZGJfaWRsICosIHN0cnVjdCBvdnNkYl9pZGxfY29uZGl0aW9uICopOycgJSB7J3MnOiBzdHJ1Y3ROYW1lfSwKKysgICAgICAgICAgICBwcmludCgndm9pZCAlKHMpc19zZXRfY29uZGl0aW9uKHN0cnVjdCBvdnNkYl9pZGwgKiwgc3RydWN0IG92c2RiX2lkbF9jb25kaXRpb24gKik7JyAlIHsncyc6IHN0cnVjdE5hbWV9KQorIAorLSAgICAgICAgcHJpbnQKKysgICAgICAgIHByaW50KCIiKQorIAorICAgICAjIFRhYmxlIGluZGV4ZXMuCisgICAgIHByaW50RW51bSgiJXN0YWJsZV9pZCIgJSBwcmVmaXgubG93ZXIoKSwgWyIlc1RBQkxFXyVzIiAlIChwcmVmaXgudXBwZXIoKSwgdGFibGVOYW1lLnVwcGVyKCkpIGZvciB0YWJsZU5hbWUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMpXSArIFsiJXNOX1RBQkxFUyIgJSBwcmVmaXgudXBwZXIoKV0pCistICAgIHByaW50CisrICAgIHByaW50KCIiKQorICAgICBmb3IgdGFibGVOYW1lIGluIHNjaGVtYS50YWJsZXM6CistICAgICAgICBwcmludCAiI2RlZmluZSAlKHApc3RhYmxlXyUodClzICglKHApc3RhYmxlX2NsYXNzZXNbJShQKXNUQUJMRV8lKFQpc10pIiAlIHsKKysgICAgICAgIHByaW50KCIjZGVmaW5lICUocClzdGFibGVfJSh0KXMgKCUocClzdGFibGVfY2xhc3Nlc1slKFApc1RBQkxFXyUoVClzXSkiICUgeworICAgICAgICAgICAgICdwJzogcHJlZml4LAorICAgICAgICAgICAgICdQJzogcHJlZml4LnVwcGVyKCksCisgICAgICAgICAgICAgJ3QnOiB0YWJsZU5hbWUubG93ZXIoKSwKKy0gICAgICAgICAgICAnVCc6IHRhYmxlTmFtZS51cHBlcigpfQorLSAgICBwcmludCAiXG5leHRlcm4gc3RydWN0IG92c2RiX2lkbF90YWJsZV9jbGFzcyAlc3RhYmxlX2NsYXNzZXNbJXNOX1RBQkxFU107IiAlIChwcmVmaXgsIHByZWZpeC51cHBlcigpKQorKyAgICAgICAgICAgICdUJzogdGFibGVOYW1lLnVwcGVyKCl9KQorKyAgICBwcmludCgiXG5leHRlcm4gc3RydWN0IG92c2RiX2lkbF90YWJsZV9jbGFzcyAlc3RhYmxlX2NsYXNzZXNbJXNOX1RBQkxFU107IiAlIChwcmVmaXgsIHByZWZpeC51cHBlcigpKSkKKyAKKy0gICAgcHJpbnQgIlxuZXh0ZXJuIHN0cnVjdCBvdnNkYl9pZGxfY2xhc3MgJXNpZGxfY2xhc3M7IiAlIHByZWZpeAorKyAgICBwcmludCgiXG5leHRlcm4gc3RydWN0IG92c2RiX2lkbF9jbGFzcyAlc2lkbF9jbGFzczsiICUgcHJlZml4KQorIAorLSAgICBwcmludCAiXG5jb25zdCBjaGFyICogJXNnZXRfZGJfdmVyc2lvbih2b2lkKTsiICUgcHJlZml4CistICAgIHByaW50ICJcbiNlbmRpZiAvKiAlKHByZWZpeClzSURMX0hFQURFUiAqLyIgJSB7J3ByZWZpeCc6IHByZWZpeC51cHBlcigpfQorKyAgICBwcmludCgiXG5jb25zdCBjaGFyICogJXNnZXRfZGJfdmVyc2lvbih2b2lkKTsiICUgcHJlZml4KQorKyAgICBwcmludCgiXG4jZW5kaWYgLyogJShwcmVmaXgpc0lETF9IRUFERVIgKi8iICUgeydwcmVmaXgnOiBwcmVmaXgudXBwZXIoKX0pCisgCisgZGVmIHByaW50RW51bSh0eXBlLCBtZW1iZXJzKToKKyAgICAgaWYgbGVuKG1lbWJlcnMpID09IDA6CisgICAgICAgICByZXR1cm4KKyAKKy0gICAgcHJpbnQgIlxuZW51bSAlcyB7IiAlIHR5cGUKKysgICAgcHJpbnQoIlxuZW51bSAlcyB7IiAlIHR5cGUpCisgICAgIGZvciBtZW1iZXIgaW4gbWVtYmVyc1s6LTFdOgorLSAgICAgICAgcHJpbnQgIiAgICAlcywiICUgbWVtYmVyCistICAgIHByaW50ICIgICAgJXMiICUgbWVtYmVyc1stMV0KKy0gICAgcHJpbnQgIn07IgorKyAgICAgICAgcHJpbnQoIiAgICAlcywiICUgbWVtYmVyKQorKyAgICBwcmludCgiICAgICVzIiAlIG1lbWJlcnNbLTFdKQorKyAgICBwcmludCgifTsiKQorIAorIGRlZiBwcmludENJRExTb3VyY2Uoc2NoZW1hRmlsZSk6CisgICAgIHNjaGVtYSA9IHBhcnNlU2NoZW1hKHNjaGVtYUZpbGUpCisgICAgIHByZWZpeCA9IHNjaGVtYS5pZGxQcmVmaXgKKy0gICAgcHJpbnQgJycnXAorKyAgICBwcmludCgnJydcCisgLyogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgLS0gZG8gbm90IG1vZGlmeSEgICAgLSotIGJ1ZmZlci1yZWFkLW9ubHk6IHQgLSotICovCisgCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorQEAgLTI5NiwzMyArMjk3LDMzIEBAIGRlZiBwcmludENJRExTb3VyY2Uoc2NoZW1hRmlsZSk6CisgI2luY2x1ZGUgIm92c2RiLWVycm9yLmgiCisgI2luY2x1ZGUgInV0aWwuaCIKKyAKKy0nJycgJSBzY2hlbWEuaWRsSGVhZGVyCisrJycnICUgc2NoZW1hLmlkbEhlYWRlcikKKyAKKyAgICAgIyBDYXN0IGZ1bmN0aW9ucy4KKyAgICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlcml0ZW1zKCkpOgorICAgICAgICAgc3RydWN0TmFtZSA9ICIlcyVzIiAlIChwcmVmaXgsIHRhYmxlTmFtZS5sb3dlcigpKQorLSAgICAgICAgcHJpbnQgJycnCisrICAgICAgICBwcmludCgnJycKKyBzdGF0aWMgc3RydWN0ICUocylzICoKKyAlKHMpc19jYXN0KGNvbnN0IHN0cnVjdCBvdnNkYl9pZGxfcm93ICpyb3cpCisgeworICAgICByZXR1cm4gcm93ID8gQ09OVEFJTkVSX09GKHJvdywgc3RydWN0ICUocylzLCBoZWFkZXJfKSA6IE5VTEw7CisgfVwKKy0nJycgJSB7J3MnOiBzdHJ1Y3ROYW1lfQorKycnJyAlIHsncyc6IHN0cnVjdE5hbWV9KQorIAorIAorICAgICBmb3IgdGFibGVOYW1lLCB0YWJsZSBpbiBzb3J0ZWQoc2NoZW1hLnRhYmxlcy5pdGVyaXRlbXMoKSk6CisgICAgICAgICBzdHJ1Y3ROYW1lID0gIiVzJXMiICUgKHByZWZpeCwgdGFibGVOYW1lLmxvd2VyKCkpCistICAgICAgICBwcmludCAiDCIKKy0gICAgICAgIHByaW50ICIvKiAlcyB0YWJsZS4gKi8iICUgKHRhYmxlTmFtZSkKKysgICAgICAgIHByaW50KCIMIikKKysgICAgICAgIHByaW50KCIvKiAlcyB0YWJsZS4gKi8iICUgKHRhYmxlTmFtZSkpCisgCisgICAgICAgICAjIFBhcnNlIGZ1bmN0aW9ucy4KKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorLSAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgIHByaW50KCcnJworIHN0YXRpYyB2b2lkCisgJShzKXNfcGFyc2VfJShjKXMoc3RydWN0IG92c2RiX2lkbF9yb3cgKnJvd18sIGNvbnN0IHN0cnVjdCBvdnNkYl9kYXR1bSAqZGF0dW0pCisgeworICAgICBzdHJ1Y3QgJShzKXMgKnJvdyA9ICUocylzX2Nhc3Qocm93Xyk7JycnICUgeydzJzogc3RydWN0TmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYyc6IGNvbHVtbk5hbWV9CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2MnOiBjb2x1bW5OYW1lfSkKKyAgICAgICAgICAgICB0eXBlID0gY29sdW1uLnR5cGUKKyAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorICAgICAgICAgICAgICAgICBrZXlWYXIgPSAicm93LT5rZXlfJXMiICUgY29sdW1uTmFtZQorQEAgLTMzMiw4OSArMzMzLDg5IEBAIHN0YXRpYyB2b2lkCisgICAgICAgICAgICAgICAgIHZhbHVlVmFyID0gTm9uZQorIAorICAgICAgICAgICAgIGlmIHR5cGUuaXNfc21hcCgpOgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIHNtYXBfaW5pdCgmcm93LT4lcyk7IiAlIGNvbHVtbk5hbWUKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdHVtLT5uOyBpKyspIHsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIHNtYXBfYWRkKCZyb3ctPiVzLCIgJSBjb2x1bW5OYW1lCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICAgICAgICAgIGRhdHVtLT5rZXlzW2ldLnN0cmluZywiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICAgICAgICAgIGRhdHVtLT52YWx1ZXNbaV0uc3RyaW5nKTsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSIKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBzbWFwX2luaXQoJnJvdy0+JXMpOyIgJSBjb2x1bW5OYW1lKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0dW0tPm47IGkrKykgeyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIHNtYXBfYWRkKCZyb3ctPiVzLCIgJSBjb2x1bW5OYW1lKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAgICAgICAgICBkYXR1bS0+a2V5c1tpXS5zdHJpbmcsIikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgICAgICAgICAgZGF0dW0tPnZhbHVlc1tpXS5zdHJpbmcpOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisgICAgICAgICAgICAgZWxpZiAodHlwZS5uX21pbiA9PSAxIGFuZCB0eXBlLm5fbWF4ID09IDEpIG9yIHR5cGUuaXNfb3B0aW9uYWxfcG9pbnRlcigpOgorLSAgICAgICAgICAgICAgICBwcmludAorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGlmIChkYXR1bS0+biA+PSAxKSB7IgorKyAgICAgICAgICAgICAgICBwcmludCgiIikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBpZiAoZGF0dW0tPm4gPj0gMSkgeyIpCisgICAgICAgICAgICAgICAgIGlmIG5vdCB0eXBlLmtleS5yZWZfdGFibGU6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAlcyA9IGRhdHVtLT5rZXlzWzBdLiVzOyIgJSAoa2V5VmFyLCB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgJXMgPSBkYXR1bS0+a2V5c1swXS4lczsiICUgKGtleVZhciwgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSkpCisgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAlcyA9ICVzJXNfY2FzdChvdnNkYl9pZGxfZ2V0X3Jvd19hcmMocm93XywgJiVzdGFibGVfJXMsICZkYXR1bS0+a2V5c1swXS51dWlkKSk7IiAlIChrZXlWYXIsIHByZWZpeCwgdHlwZS5rZXkucmVmX3RhYmxlLm5hbWUubG93ZXIoKSwgcHJlZml4LCB0eXBlLmtleS5yZWZfdGFibGUubmFtZS5sb3dlcigpKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgJXMgPSAlcyVzX2Nhc3Qob3ZzZGJfaWRsX2dldF9yb3dfYXJjKHJvd18sICYlc3RhYmxlXyVzLCAmZGF0dW0tPmtleXNbMF0udXVpZCkpOyIgJSAoa2V5VmFyLCBwcmVmaXgsIHR5cGUua2V5LnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS5rZXkucmVmX3RhYmxlLm5hbWUubG93ZXIoKSkpCisgCisgICAgICAgICAgICAgICAgIGlmIHZhbHVlVmFyOgorICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHR5cGUudmFsdWUucmVmX3RhYmxlOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICVzID0gZGF0dW0tPnZhbHVlc1swXS4lczsiICUgKHZhbHVlVmFyLCB0eXBlLnZhbHVlLnR5cGUudG9fc3RyaW5nKCkpCisrICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgJXMgPSBkYXR1bS0+dmFsdWVzWzBdLiVzOyIgJSAodmFsdWVWYXIsIHR5cGUudmFsdWUudHlwZS50b19zdHJpbmcoKSkpCisgICAgICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICVzID0gJXMlc19jYXN0KG92c2RiX2lkbF9nZXRfcm93X2FyYyhyb3dfLCAmJXN0YWJsZV8lcywgJmRhdHVtLT52YWx1ZXNbMF0udXVpZCkpOyIgJSAodmFsdWVWYXIsIHByZWZpeCwgdHlwZS52YWx1ZS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUudmFsdWUucmVmX3RhYmxlLm5hbWUubG93ZXIoKSkKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IGVsc2UgeyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgJXMiICUgdHlwZS5rZXkuaW5pdENEZWZhdWx0KGtleVZhciwgdHlwZS5uX21pbiA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICVzID0gJXMlc19jYXN0KG92c2RiX2lkbF9nZXRfcm93X2FyYyhyb3dfLCAmJXN0YWJsZV8lcywgJmRhdHVtLT52YWx1ZXNbMF0udXVpZCkpOyIgJSAodmFsdWVWYXIsIHByZWZpeCwgdHlwZS52YWx1ZS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUudmFsdWUucmVmX3RhYmxlLm5hbWUubG93ZXIoKSkpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSBlbHNlIHsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAlcyIgJSB0eXBlLmtleS5pbml0Q0RlZmF1bHQoa2V5VmFyLCB0eXBlLm5fbWluID09IDApKQorICAgICAgICAgICAgICAgICBpZiB2YWx1ZVZhcjoKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICVzIiAlIHR5cGUudmFsdWUuaW5pdENEZWZhdWx0KHZhbHVlVmFyLCB0eXBlLm5fbWluID09IDApCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSIKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICVzIiAlIHR5cGUudmFsdWUuaW5pdENEZWZhdWx0KHZhbHVlVmFyLCB0eXBlLm5fbWluID09IDApKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIH0iKQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIGlmIHR5cGUubl9tYXggIT0gc3lzLm1heGludDoKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgc2l6ZV90IG4gPSBNSU4oJWQsIGRhdHVtLT5uKTsiICUgdHlwZS5uX21heAorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBzaXplX3QgbiA9IE1JTiglZCwgZGF0dW0tPm4pOyIgJSB0eXBlLm5fbWF4KQorICAgICAgICAgICAgICAgICAgICAgbk1heCA9ICJuIgorICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgbk1heCA9ICJkYXR1bS0+biIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAlcyA9IE5VTEw7IiAlIGtleVZhcgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICVzID0gTlVMTDsiICUga2V5VmFyKQorICAgICAgICAgICAgICAgICBpZiB2YWx1ZVZhcjoKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgJXMgPSBOVUxMOyIgJSB2YWx1ZVZhcgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIHJvdy0+bl8lcyA9IDA7IiAlIGNvbHVtbk5hbWUKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICVzOyBpKyspIHsiICUgbk1heAorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAlcyA9IE5VTEw7IiAlIHZhbHVlVmFyKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHJvdy0+bl8lcyA9IDA7IiAlIGNvbHVtbk5hbWUpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAlczsgaSsrKSB7IiAlIG5NYXgpCisgICAgICAgICAgICAgICAgIGlmIHR5cGUua2V5LnJlZl90YWJsZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIiIlwKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIiIlwKKyAgICAgICAgIHN0cnVjdCAlcyVzICprZXlSb3cgPSAlcyVzX2Nhc3Qob3ZzZGJfaWRsX2dldF9yb3dfYXJjKHJvd18sICYlc3RhYmxlXyVzLCAmZGF0dW0tPmtleXNbaV0udXVpZCkpOworICAgICAgICAgaWYgKCFrZXlSb3cpIHsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH1cCistIiIiICUgKHByZWZpeCwgdHlwZS5rZXkucmVmX3RhYmxlLm5hbWUubG93ZXIoKSwgcHJlZml4LCB0eXBlLmtleS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUua2V5LnJlZl90YWJsZS5uYW1lLmxvd2VyKCkpCisrIiIiICUgKHByZWZpeCwgdHlwZS5rZXkucmVmX3RhYmxlLm5hbWUubG93ZXIoKSwgcHJlZml4LCB0eXBlLmtleS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUua2V5LnJlZl90YWJsZS5uYW1lLmxvd2VyKCkpKQorICAgICAgICAgICAgICAgICAgICAga2V5U3JjID0gImtleVJvdyIKKyAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIGtleVNyYyA9ICJkYXR1bS0+a2V5c1tpXS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpCisgICAgICAgICAgICAgICAgIGlmIHR5cGUudmFsdWUgYW5kIHR5cGUudmFsdWUucmVmX3RhYmxlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiIiXAorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiIiXAorICAgICAgICAgc3RydWN0ICVzJXMgKnZhbHVlUm93ID0gJXMlc19jYXN0KG92c2RiX2lkbF9nZXRfcm93X2FyYyhyb3dfLCAmJXN0YWJsZV8lcywgJmRhdHVtLT52YWx1ZXNbaV0udXVpZCkpOworICAgICAgICAgaWYgKCF2YWx1ZVJvdykgeworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgfVwKKy0iIiIgJSAocHJlZml4LCB0eXBlLnZhbHVlLnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS52YWx1ZS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUudmFsdWUucmVmX3RhYmxlLm5hbWUubG93ZXIoKSkKKysiIiIgJSAocHJlZml4LCB0eXBlLnZhbHVlLnJlZl90YWJsZS5uYW1lLmxvd2VyKCksIHByZWZpeCwgdHlwZS52YWx1ZS5yZWZfdGFibGUubmFtZS5sb3dlcigpLCBwcmVmaXgsIHR5cGUudmFsdWUucmVmX3RhYmxlLm5hbWUubG93ZXIoKSkpCisgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNyYyA9ICJ2YWx1ZVJvdyIKKyAgICAgICAgICAgICAgICAgZWxpZiB2YWx1ZVZhcjoKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlU3JjID0gImRhdHVtLT52YWx1ZXNbaV0uJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGlmICghcm93LT5uXyVzKSB7IiAlIChjb2x1bW5OYW1lKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBpZiAoIXJvdy0+bl8lcykgeyIgJSAoY29sdW1uTmFtZSkpCisgCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICAgICAlcyA9IHhtYWxsb2MoJXMgKiBzaXplb2YgKiVzKTsiICUgKAorLSAgICAgICAgICAgICAgICAgICAga2V5VmFyLCBuTWF4LCBrZXlWYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICAgICAlcyA9IHhtYWxsb2MoJXMgKiBzaXplb2YgKiVzKTsiICUgKAorKyAgICAgICAgICAgICAgICAgICAga2V5VmFyLCBuTWF4LCBrZXlWYXIpKQorICAgICAgICAgICAgICAgICBpZiB2YWx1ZVZhcjoKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICAgICAlcyA9IHhtYWxsb2MoJXMgKiBzaXplb2YgKiVzKTsiICUgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVmFyLCBuTWF4LCB2YWx1ZVZhcikKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgfSIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgJXNbcm93LT5uXyVzXSA9ICVzOyIgJSAoa2V5VmFyLCBjb2x1bW5OYW1lLCBrZXlTcmMpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAgICAgJXMgPSB4bWFsbG9jKCVzICogc2l6ZW9mIColcyk7IiAlICgKKysgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVZhciwgbk1heCwgdmFsdWVWYXIpKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICB9IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgJXNbcm93LT5uXyVzXSA9ICVzOyIgJSAoa2V5VmFyLCBjb2x1bW5OYW1lLCBrZXlTcmMpKQorICAgICAgICAgICAgICAgICBpZiB2YWx1ZVZhcjoKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICVzW3Jvdy0+bl8lc10gPSAlczsiICUgKHZhbHVlVmFyLCBjb2x1bW5OYW1lLCB2YWx1ZVNyYykKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgcm93LT5uXyVzKys7IiAlIGNvbHVtbk5hbWUKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IgorLSAgICAgICAgICAgIHByaW50ICJ9IgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgJXNbcm93LT5uXyVzXSA9ICVzOyIgJSAodmFsdWVWYXIsIGNvbHVtbk5hbWUsIHZhbHVlU3JjKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgcm93LT5uXyVzKys7IiAlIGNvbHVtbk5hbWUpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisrICAgICAgICAgICAgcHJpbnQoIn0iKQorIAorICAgICAgICAgIyBVbnBhcnNlIGZ1bmN0aW9ucy4KKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorICAgICAgICAgICAgIHR5cGUgPSBjb2x1bW4udHlwZQorICAgICAgICAgICAgIGlmIHR5cGUuaXNfc21hcCgpIG9yICh0eXBlLm5fbWluICE9IDEgb3IgdHlwZS5uX21heCAhPSAxKSBhbmQgbm90IHR5cGUuaXNfb3B0aW9uYWxfcG9pbnRlcigpOgorLSAgICAgICAgICAgICAgICBwcmludCAnJycKKysgICAgICAgICAgICAgICAgcHJpbnQoJycnCisgc3RhdGljIHZvaWQKKyAlKHMpc191bnBhcnNlXyUoYylzKHN0cnVjdCBvdnNkYl9pZGxfcm93ICpyb3dfKQorIHsKKyAgICAgc3RydWN0ICUocylzICpyb3cgPSAlKHMpc19jYXN0KHJvd18pOycnJyAlIHsncyc6IHN0cnVjdE5hbWUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2MnOiBjb2x1bW5OYW1lfQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjJzogY29sdW1uTmFtZX0pCisgCisgICAgICAgICAgICAgICAgIGlmIHR5cGUuaXNfc21hcCgpOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBzbWFwX2Rlc3Ryb3koJnJvdy0+JXMpOyIgJSBjb2x1bW5OYW1lCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIHNtYXBfZGVzdHJveSgmcm93LT4lcyk7IiAlIGNvbHVtbk5hbWUpCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorICAgICAgICAgICAgICAgICAgICAgICAgIGtleVZhciA9ICJyb3ctPmtleV8lcyIgJSBjb2x1bW5OYW1lCitAQCAtNDIyLDQ1ICs0MjMsNDUgQEAgc3RhdGljIHZvaWQKKyAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAga2V5VmFyID0gInJvdy0+JXMiICUgY29sdW1uTmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVmFyID0gTm9uZQorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBmcmVlKCVzKTsiICUga2V5VmFyCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGZyZWUoJXMpOyIgJSBrZXlWYXIpCisgICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZVZhcjoKKy0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgIGZyZWUoJXMpOyIgJSB2YWx1ZVZhcgorLSAgICAgICAgICAgICAgICBwcmludCAnfScKKysgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGZyZWUoJXMpOyIgJSB2YWx1ZVZhcikKKysgICAgICAgICAgICAgICAgcHJpbnQoJ30nKQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgICAgICBwcmludCgnJycKKyBzdGF0aWMgdm9pZAorICUocylzX3VucGFyc2VfJShjKXMoc3RydWN0IG92c2RiX2lkbF9yb3cgKnJvdyBPVlNfVU5VU0VEKQorIHsKKyAgICAgLyogTm90aGluZyB0byBkby4gKi8KKy19JycnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lfQorK30nJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWV9KQorIAorICAgICAgICAgIyBHZW5lcmljIFJvdyBJbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KKy0gICAgICAgIHByaW50ICIiIgorKyAgICAgICAgcHJpbnQoIiIiCisgc3RhdGljIHZvaWQKKyAlKHMpc19pbml0X18oc3RydWN0IG92c2RiX2lkbF9yb3cgKnJvdykKKyB7CisgICAgICUocylzX2luaXQoJShzKXNfY2FzdChyb3cpKTsKKy19IiIiICUgeydzJzogc3RydWN0TmFtZX0KKyt9IiIiICUgeydzJzogc3RydWN0TmFtZX0pCisgCisgICAgICAgICAjIFJvdyBJbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KKy0gICAgICAgIHByaW50ICIiIgorKyAgICAgICAgcHJpbnQoIiIiCisgLyogQ2xlYXJzIHRoZSBjb250ZW50cyBvZiAncm93JyBpbiB0YWJsZSAiJSh0KXMiLiAqLworIHZvaWQKKyAlKHMpc19pbml0KHN0cnVjdCAlKHMpcyAqcm93KQorIHsKKy0gICAgbWVtc2V0KHJvdywgMCwgc2l6ZW9mICpyb3cpOyAiIiIgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAndCc6IHRhYmxlTmFtZX0KKysgICAgbWVtc2V0KHJvdywgMCwgc2l6ZW9mICpyb3cpOyAiIiIgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAndCc6IHRhYmxlTmFtZX0pCisgICAgICAgICBmb3IgY29sdW1uTmFtZSwgY29sdW1uIGluIHNvcnRlZF9jb2x1bW5zKHRhYmxlKToKKyAgICAgICAgICAgICBpZiBjb2x1bW4udHlwZS5pc19zbWFwKCk6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgc21hcF9pbml0KCZyb3ctPiVzKTsiICUgY29sdW1uTmFtZQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHNtYXBfaW5pdCgmcm93LT4lcyk7IiAlIGNvbHVtbk5hbWUpCisgICAgICAgICAgICAgZWxpZiAoY29sdW1uLnR5cGUubl9taW4gPT0gMSBhbmQKKyAgICAgICAgICAgICAgICAgICBjb2x1bW4udHlwZS5uX21heCA9PSAxIGFuZAorICAgICAgICAgICAgICAgICAgIGNvbHVtbi50eXBlLmtleS50eXBlID09IG92cy5kYi50eXBlcy5TdHJpbmdUeXBlIGFuZAorICAgICAgICAgICAgICAgICAgIG5vdCBjb2x1bW4udHlwZS52YWx1ZSk6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgcm93LT4lcyA9IFwiXCI7IiAlIGNvbHVtbk5hbWUKKy0gICAgICAgIHByaW50ICJ9IgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHJvdy0+JXMgPSBcIlwiOyIgJSBjb2x1bW5OYW1lKQorKyAgICAgICAgcHJpbnQoIn0iKQorIAorICAgICAgICAgIyBGaXJzdCwgbmV4dCBmdW5jdGlvbnMuCistICAgICAgICBwcmludCAnJycKKysgICAgICAgIHByaW50KCcnJworIC8qIFNlYXJjaGVzIHRhYmxlICIlKHQpcyIgaW4gJ2lkbCcgZm9yIGEgcm93IHdpdGggVVVJRCAndXVpZCcuICBSZXR1cm5zCisgICogYSBwb2ludGVyIHRvIHRoZSByb3cgaWYgdGhlcmUgaXMgb25lLCBvdGhlcndpc2UgYSBudWxsIHBvaW50ZXIuICAqLworIGNvbnN0IHN0cnVjdCAlKHMpcyAqCitAQCAtNTE0LDkgKzUxNSw5IEBAIGNvbnN0IHN0cnVjdCAlKHMpcworICAgICAgICAgJ1AnOiBwcmVmaXgudXBwZXIoKSwKKyAgICAgICAgICd0JzogdGFibGVOYW1lLAorICAgICAgICAgJ3RsJzogdGFibGVOYW1lLmxvd2VyKCksCistICAgICAgICAnVCc6IHRhYmxlTmFtZS51cHBlcigpfQorKyAgICAgICAgJ1QnOiB0YWJsZU5hbWUudXBwZXIoKX0pCisgCistICAgICAgICBwcmludCAnJycKKysgICAgICAgIHByaW50KCcnJworIAorIC8qIERlbGV0ZXMgJ3JvdycgZnJvbSB0YWJsZSAiJSh0KXMiLiAgJ3JvdycgbWF5IGJlIGZyZWVkLCBzbyBpdCBtdXN0IG5vdCBiZQorICAqIGFjY2Vzc2VkIGFmdGVyd2FyZC4KK0BAIC01NTAsMTEgKzU1MSwxMSBAQCBib29sCisgICAgICAgICAnUCc6IHByZWZpeC51cHBlcigpLAorICAgICAgICAgJ3QnOiB0YWJsZU5hbWUsCisgICAgICAgICAndGwnOiB0YWJsZU5hbWUubG93ZXIoKSwKKy0gICAgICAgICdUJzogdGFibGVOYW1lLnVwcGVyKCl9CisrICAgICAgICAnVCc6IHRhYmxlTmFtZS51cHBlcigpfSkKKyAKKyAgICAgICAgICMgVmVyaWZ5IGZ1bmN0aW9ucy4KKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorLSAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgIHByaW50KCcnJworIC8qIENhdXNlcyB0aGUgb3JpZ2luYWwgY29udGVudHMgb2YgY29sdW1uICIlKGMpcyIgaW4gJ3JvdycgdG8gYmUKKyAgKiB2ZXJpZmllZCBhcyBhIHByZXJlcXVpc2l0ZSB0byBjb21wbGV0aW5nIHRoZSB0cmFuc2FjdGlvbi4gIFRoYXQgaXMsIGlmCisgICogIiUoYylzIiBpbiAncm93JyBjaGFuZ2VkIChvciBpZiAncm93JyB3YXMgZGVsZXRlZCkgYmV0d2VlbiB0aGUKK0BAIC01ODUsNyArNTg2LDcgQEAgdm9pZAorIH0nJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLAorICAgICAgICAgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCksCisgICAgICAgICAnYyc6IGNvbHVtbk5hbWUsCistICAgICAgICAnQyc6IGNvbHVtbk5hbWUudXBwZXIoKX0KKysgICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpfSkKKyAKKyAgICAgICAgICMgR2V0IGZ1bmN0aW9ucy4KKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorQEAgLTU5Nyw3ICs1OTgsNyBAQCB2b2lkCisgICAgICAgICAgICAgICAgIHZhbHVlUGFyYW0gPSAnJworICAgICAgICAgICAgICAgICB2YWx1ZVR5cGUgPSAnJworICAgICAgICAgICAgICAgICB2YWx1ZUNvbW1lbnQgPSAnJworLSAgICAgICAgICAgIHByaW50ICIiIgorKyAgICAgICAgICAgIHByaW50KCIiIgorIC8qIFJldHVybnMgdGhlICIlKGMpcyIgY29sdW1uJ3MgdmFsdWUgZnJvbSB0aGUgIiUodClzIiB0YWJsZSBpbiAncm93JworICAqIGFzIGEgc3RydWN0IG92c2RiX2RhdHVtLiAgVGhpcyBpcyB1c2VmdWwgb2NjYXNpb25hbGx5OiBmb3IgZXhhbXBsZSwKKyAgKiBvdnNkYl9kYXR1bV9maW5kX2tleSgpIGlzIGFuIGVhc2llciBhbmQgbW9yZSBlZmZpY2llbnQgd2F5IHRvIHNlYXJjaAorQEAgLTYyNSw3ICs2MjYsNyBAQCBjb25zdCBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gKgorICAgICByZXR1cm4gb3ZzZGJfaWRsX3JlYWQoJnJvdy0+aGVhZGVyXywgJiUocylzX2NvbF8lKGMpcyk7CisgfSIiIiAlIHsndCc6IHRhYmxlTmFtZSwgJ3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWUsCisgICAgICAgICdrdCc6IGNvbHVtbi50eXBlLmtleS50b0F0b21pY1R5cGUoKSwKKy0gICAgICAgJ3YnOiB2YWx1ZVBhcmFtLCAndnQnOiB2YWx1ZVR5cGUsICd2Yyc6IHZhbHVlQ29tbWVudH0KKysgICAgICAgJ3YnOiB2YWx1ZVBhcmFtLCAndnQnOiB2YWx1ZVR5cGUsICd2Yyc6IHZhbHVlQ29tbWVudH0pCisgCisgICAgICAgICAjIFNldCBmdW5jdGlvbnMuCisgICAgICAgICBmb3IgY29sdW1uTmFtZSwgY29sdW1uIGluIHNvcnRlZF9jb2x1bW5zKHRhYmxlKToKK0BAIC02MzUsOCArNjM2LDggQEAgY29uc3Qgc3RydWN0IG92c2RiX2RhdHVtICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLCBUcnVlKQorIAorICAgICAgICAgICAgIGlmIHR5cGUuaXNfc21hcCgpOgorLSAgICAgICAgICAgICAgICBwcmludCBjb21tZW50CistICAgICAgICAgICAgICAgIHByaW50ICIiInZvaWQKKysgICAgICAgICAgICAgICAgcHJpbnQoY29tbWVudCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiIidm9pZAorICUocylzX3NldF8lKGMpcyhjb25zdCBzdHJ1Y3QgJShzKXMgKnJvdywgY29uc3Qgc3RydWN0IHNtYXAgKiUoYylzKQorIHsKKyAgICAgc3RydWN0IG92c2RiX2RhdHVtIGRhdHVtOworQEAgLTY1NCw3ICs2NTUsNyBAQCBjb25zdCBzdHJ1Y3Qgb3ZzZGJfZGF0dW0gKgorICAgICAgICAncyc6IHN0cnVjdE5hbWUsCisgICAgICAgICdTJzogc3RydWN0TmFtZS51cHBlcigpLAorICAgICAgICAnYyc6IGNvbHVtbk5hbWUsCistICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpfQorKyAgICAgICAnQyc6IGNvbHVtbk5hbWUudXBwZXIoKX0pCisgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgCisgICAgICAgICAgICAga2V5VmFyID0gbWVtYmVyc1swXVsnbmFtZSddCitAQCAtNjY4LDg0ICs2NjksODQgQEAgY29uc3Qgc3RydWN0IG92c2RiX2RhdHVtICoKKyAgICAgICAgICAgICAgICAgaWYgbGVuKG1lbWJlcnMpID4gMToKKyAgICAgICAgICAgICAgICAgICAgIG5WYXIgPSBtZW1iZXJzWzFdWyduYW1lJ10KKyAKKy0gICAgICAgICAgICBwcmludCBjb21tZW50CistICAgICAgICAgICAgcHJpbnQgIiIiXAorKyAgICAgICAgICAgIHByaW50KGNvbW1lbnQpCisrICAgICAgICAgICAgcHJpbnQoIiIiXAorIHZvaWQKKyAlKHMpc19zZXRfJShjKXMoY29uc3Qgc3RydWN0ICUocylzICpyb3csICUoYXJncylzKQorIHsKKyAgICAgc3RydWN0IG92c2RiX2RhdHVtIGRhdHVtOyIiIiAlIHsncyc6IHN0cnVjdE5hbWUsCisgICAgICAgICAnYyc6IGNvbHVtbk5hbWUsCisgICAgICAgICAnYXJncyc6ICcsICcuam9pbihbJyUodHlwZSlzJShuYW1lKXMnCistICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtIGZvciBtIGluIG1lbWJlcnNdKX0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAlIG0gZm9yIG0gaW4gbWVtYmVyc10pfSkKKyAgICAgICAgICAgICBpZiB0eXBlLm5fbWluID09IDEgYW5kIHR5cGUubl9tYXggPT0gMToKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB1bmlvbiBvdnNkYl9hdG9tIGtleTsiCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgdW5pb24gb3ZzZGJfYXRvbSBrZXk7IikKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS52YWx1ZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgdW5pb24gb3ZzZGJfYXRvbSB2YWx1ZTsiCistICAgICAgICAgICAgICAgIHByaW50CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0ubiA9IDE7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLmtleXMgPSAma2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwga2V5VmFyKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB1bmlvbiBvdnNkYl9hdG9tIHZhbHVlOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLm4gPSAxOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0ua2V5cyA9ICZrZXk7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwga2V5VmFyKSkKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS52YWx1ZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0udmFsdWVzID0gJnZhbHVlOyIKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgIisgdHlwZS52YWx1ZS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoInZhbHVlLiVzIiAlIHR5cGUudmFsdWUudHlwZS50b19zdHJpbmcoKSwgdmFsdWVWYXIpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9ICZ2YWx1ZTsiKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAiKyB0eXBlLnZhbHVlLmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgidmFsdWUuJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCB2YWx1ZVZhcikpCisgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIpCisgICAgICAgICAgICAgICAgIHR4bl93cml0ZV9mdW5jID0gIm92c2RiX2lkbF90eG5fd3JpdGVfY2xvbmUiCisgICAgICAgICAgICAgZWxpZiB0eXBlLmlzX29wdGlvbmFsX3BvaW50ZXIoKToKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB1bmlvbiBvdnNkYl9hdG9tIGtleTsiCistICAgICAgICAgICAgICAgIHByaW50CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgaWYgKCVzKSB7IiAlIGtleVZhcgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5uID0gMTsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLmtleXMgPSAma2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgIiArIHR5cGUua2V5LmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgia2V5LiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksIGtleVZhcikKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IGVsc2UgeyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ubiA9IDA7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5rZXlzID0gTlVMTDsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB1bmlvbiBvdnNkYl9hdG9tIGtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiIikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBpZiAoJXMpIHsiICUga2V5VmFyKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5uID0gMTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5rZXlzID0gJmtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwga2V5VmFyKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB9IGVsc2UgeyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLm4gPSAwOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgIGRhdHVtLmtleXMgPSBOVUxMOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0udmFsdWVzID0gTlVMTDsiKQorICAgICAgICAgICAgICAgICB0eG5fd3JpdGVfZnVuYyA9ICJvdnNkYl9pZGxfdHhuX3dyaXRlX2Nsb25lIgorICAgICAgICAgICAgIGVsaWYgdHlwZS5uX21heCA9PSAxOgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBpZiAoJXMpIHsiICUgblZhcgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5uID0gMTsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLmtleXMgPSAma2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgIiArIHR5cGUua2V5LmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgia2V5LiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICIqIiArIGtleVZhcikKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IGVsc2UgeyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ubiA9IDA7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5rZXlzID0gTlVMTDsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB1bmlvbiBvdnNkYl9hdG9tIGtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiIikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBpZiAoJXMpIHsiICUgblZhcikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgZGF0dW0ubiA9IDE7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgZGF0dW0ua2V5cyA9ICZrZXk7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgIiArIHR5cGUua2V5LmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgia2V5LiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICIqIiArIGtleVZhcikpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSBlbHNlIHsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5uID0gMDsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5rZXlzID0gTlVMTDsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIH0iKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IikKKyAgICAgICAgICAgICAgICAgdHhuX3dyaXRlX2Z1bmMgPSAib3ZzZGJfaWRsX3R4bl93cml0ZV9jbG9uZSIKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBwcmludAorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLm4gPSAlczsiICUgblZhcgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLmtleXMgPSAlcyA/IHhtYWxsb2MoJXMgKiBzaXplb2YgKmRhdHVtLmtleXMpIDogTlVMTDsiICUgKG5WYXIsIG5WYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLm4gPSAlczsiICUgblZhcikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS5rZXlzID0gJXMgPyB4bWFsbG9jKCVzICogc2l6ZW9mICpkYXR1bS5rZXlzKSA6IE5VTEw7IiAlIChuVmFyLCBuVmFyKSkKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS52YWx1ZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0udmFsdWVzID0geG1hbGxvYyglcyAqIHNpemVvZiAqZGF0dW0udmFsdWVzKTsiICUgblZhcgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS52YWx1ZXMgPSB4bWFsbG9jKCVzICogc2l6ZW9mICpkYXR1bS52YWx1ZXMpOyIgJSBuVmFyKQorICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICVzOyBpKyspIHsiICUgblZhcgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAiICsgdHlwZS5rZXkuY29weUNWYWx1ZSgiZGF0dW0ua2V5c1tpXS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCAiJXNbaV0iICUga2V5VmFyKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAlczsgaSsrKSB7IiAlIG5WYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICIgKyB0eXBlLmtleS5jb3B5Q1ZhbHVlKCJkYXR1bS5rZXlzW2ldLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICIlc1tpXSIgJSBrZXlWYXIpKQorICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgIiArIHR5cGUudmFsdWUuY29weUNWYWx1ZSgiZGF0dW0udmFsdWVzW2ldLiVzIiAlIHR5cGUudmFsdWUudHlwZS50b19zdHJpbmcoKSwgIiVzW2ldIiAlIHZhbHVlVmFyKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0iCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAiICsgdHlwZS52YWx1ZS5jb3B5Q1ZhbHVlKCJkYXR1bS52YWx1ZXNbaV0uJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCAiJXNbaV0iICUgdmFsdWVWYXIpKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIH0iKQorICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorICAgICAgICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gdHlwZS52YWx1ZS50b0F0b21pY1R5cGUoKQorICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gIk9WU0RCX1RZUEVfVk9JRCIKKyAgICAgICAgICAgICAgICAgdHhuX3dyaXRlX2Z1bmMgPSAib3ZzZGJfaWRsX3R4bl93cml0ZSIKKy0gICAgICAgICAgICBwcmludCAiICAgICUoZilzKCZyb3ctPmhlYWRlcl8sICYlKHMpc19jb2xfJShjKXMsICZkYXR1bSk7IiBcCisrICAgICAgICAgICAgcHJpbnQoIiAgICAlKGYpcygmcm93LT5oZWFkZXJfLCAmJShzKXNfY29sXyUoYylzLCAmZGF0dW0pOyIgXAorICAgICAgICAgICAgICAgICAlIHsnZic6IHR4bl93cml0ZV9mdW5jLAorICAgICAgICAgICAgICAgICAgICAncyc6IHN0cnVjdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICdTJzogc3RydWN0TmFtZS51cHBlcigpLAorLSAgICAgICAgICAgICAgICAgICAnYyc6IGNvbHVtbk5hbWV9CistICAgICAgICAgICAgcHJpbnQgIn0iCisrICAgICAgICAgICAgICAgICAgICdjJzogY29sdW1uTmFtZX0pCisrICAgICAgICAgICAgcHJpbnQoIn0iKQorICAgICAgICAgIyBVcGRhdGUvRGVsZXRlIG9mIHBhcnRpYWwgbWFwIGNvbHVtbiBmdW5jdGlvbnMKKyAgICAgICAgIGZvciBjb2x1bW5OYW1lLCBjb2x1bW4gaW4gc29ydGVkX2NvbHVtbnModGFibGUpOgorICAgICAgICAgICAgIHR5cGUgPSBjb2x1bW4udHlwZQorICAgICAgICAgICAgIGlmIHR5cGUuaXNfbWFwKCk6CistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgICAgICBwcmludCgnJycKKyAvKiBTZXRzIGFuIGVsZW1lbnQgb2YgdGhlICIlKGMpcyIgbWFwIGNvbHVtbiBmcm9tIHRoZSAiJSh0KXMiIHRhYmxlIGluICdyb3cnCisgICogdG8gJ25ld192YWx1ZScgZ2l2ZW4gdGhlIGtleSB2YWx1ZSAnbmV3X2tleScuCisgICoKK0BAIC03NjEsMTcgKzc2MiwxNyBAQCB2b2lkCisgICAgIGRhdHVtLT52YWx1ZXMgPSB4bWFsbG9jKGRhdHVtLT5uICogc2l6ZW9mICpkYXR1bS0+dmFsdWVzKTsKKyAnJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWUsJ2NvbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwKKyAgICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS52YWx1ZS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCksCistICAgICAgICAnQyc6IGNvbHVtbk5hbWUudXBwZXIoKSwgJ3QnOiB0YWJsZU5hbWV9CisrICAgICAgICAnQyc6IGNvbHVtbk5hbWUudXBwZXIoKSwgJ3QnOiB0YWJsZU5hbWV9KQorIAorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICIrIHR5cGUua2V5LmNvcHlDVmFsdWUoImRhdHVtLT5rZXlzWzBdLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICJuZXdfa2V5IikKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAiKyB0eXBlLnZhbHVlLmNvcHlDVmFsdWUoImRhdHVtLT52YWx1ZXNbMF0uJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCAibmV3X3ZhbHVlIikKKy0gICAgICAgICAgICAgICAgcHJpbnQgJycnCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgIisgdHlwZS5rZXkuY29weUNWYWx1ZSgiZGF0dW0tPmtleXNbMF0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIm5ld19rZXkiKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAiKyB0eXBlLnZhbHVlLmNvcHlDVmFsdWUoImRhdHVtLT52YWx1ZXNbMF0uJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCAibmV3X3ZhbHVlIikpCisrICAgICAgICAgICAgICAgIHByaW50KCcnJworICAgICBvdnNkYl9pZGxfdHhuX3dyaXRlX3BhcnRpYWxfbWFwKCZyb3ctPmhlYWRlcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiUocylzX2NvbF8lKGMpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXR1bSk7CisgfScnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwnY29sdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvQ1R5cGUocHJlZml4KSwKKy0gICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS52YWx1ZS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCl9CistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLnZhbHVlLnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLCAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKX0pCisrICAgICAgICAgICAgICAgIHByaW50KCcnJworIC8qIERlbGV0ZXMgYW4gZWxlbWVudCBvZiB0aGUgIiUoYylzIiBtYXAgY29sdW1uIGZyb20gdGhlICIlKHQpcyIgdGFibGUgaW4gJ3JvdycKKyAgKiBnaXZlbiB0aGUga2V5IHZhbHVlICdkZWxldGVfa2V5Jy4KKyAgKgorQEAgLTc4NywxOSArNzg4LDE5IEBAIHZvaWQKKyAgICAgZGF0dW0tPnZhbHVlcyA9IE5VTEw7CisgJycnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLCdjb2x0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCksCisgICAgICAgICAndmFsdHlwZSc6Y29sdW1uLnR5cGUudmFsdWUudG9fY29uc3RfY190eXBlKHByZWZpeCksICdTJzogc3RydWN0TmFtZS51cHBlcigpLAorLSAgICAgICAgJ0MnOiBjb2x1bW5OYW1lLnVwcGVyKCksICd0JzogdGFibGVOYW1lfQorKyAgICAgICAgJ0MnOiBjb2x1bW5OYW1lLnVwcGVyKCksICd0JzogdGFibGVOYW1lfSkKKyAKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAiKyB0eXBlLmtleS5jb3B5Q1ZhbHVlKCJkYXR1bS0+a2V5c1swXS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCAiZGVsZXRlX2tleSIpCistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgICAgICBwcmludCgiICAgICIrIHR5cGUua2V5LmNvcHlDVmFsdWUoImRhdHVtLT5rZXlzWzBdLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICJkZWxldGVfa2V5IikpCisrICAgICAgICAgICAgICAgIHByaW50KCcnJworICAgICBvdnNkYl9pZGxfdHhuX2RlbGV0ZV9wYXJ0aWFsX21hcCgmcm93LT5oZWFkZXJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYlKHMpc19jb2xfJShjKXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0dW0pOworIH0nJycgJSB7J3MnOiBzdHJ1Y3ROYW1lLCAnYyc6IGNvbHVtbk5hbWUsJ2NvbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b0NUeXBlKHByZWZpeCksCistICAgICAgICAndmFsdHlwZSc6Y29sdW1uLnR5cGUudmFsdWUudG9fY29uc3RfY190eXBlKHByZWZpeCksICdTJzogc3RydWN0TmFtZS51cHBlcigpfQorKyAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLnZhbHVlLnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLCAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKX0pCisgICAgICAgICAjIEVuZCBVcGRhdGUvRGVsZXRlIG9mIHBhcnRpYWwgbWFwcworICAgICAgICAgIyBVcGRhdGUvRGVsZXRlIG9mIHBhcnRpYWwgc2V0IGNvbHVtbiBmdW5jdGlvbnMKKyAgICAgICAgICAgICBpZiB0eXBlLmlzX3NldCgpOgorLSAgICAgICAgICAgICAgICBwcmludCAnJycKKysgICAgICAgICAgICAgICAgcHJpbnQoJycnCisgLyogQWRkcyB0aGUgdmFsdWUgJ25ld192YWx1ZScgdG8gdGhlICIlKGMpcyIgc2V0IGNvbHVtbiBmcm9tIHRoZSAiJSh0KXMiIHRhYmxlCisgICogaW4gJ3JvdycuCisgICoKK0BAIC04MTQsMTYgKzgxNSwxNiBAQCB2b2lkCisgICAgIGRhdHVtLT5rZXlzID0geG1hbGxvYyhkYXR1bS0+biAqIHNpemVvZiAqZGF0dW0tPnZhbHVlcyk7CisgICAgIGRhdHVtLT52YWx1ZXMgPSBOVUxMOworICcnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwKKy0gICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCksICd0JzogdGFibGVOYW1lfQorKyAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ3QnOiB0YWJsZU5hbWV9KQorIAorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICIrIHR5cGUua2V5LmNvcHlDVmFsdWUoImRhdHVtLT5rZXlzWzBdLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICJuZXdfdmFsdWUiKQorLSAgICAgICAgICAgICAgICBwcmludCAnJycKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAiKyB0eXBlLmtleS5jb3B5Q1ZhbHVlKCJkYXR1bS0+a2V5c1swXS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCAibmV3X3ZhbHVlIikpCisrICAgICAgICAgICAgICAgIHByaW50KCcnJworICAgICBvdnNkYl9pZGxfdHhuX3dyaXRlX3BhcnRpYWxfc2V0KCZyb3ctPmhlYWRlcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiUocylzX2NvbF8lKGMpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXR1bSk7CisgfScnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwnY29sdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvQ1R5cGUocHJlZml4KSwKKy0gICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCksICdTJzogc3RydWN0TmFtZS51cHBlcigpfQorLSAgICAgICAgICAgICAgICBwcmludCAnJycKKysgICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCksICdTJzogc3RydWN0TmFtZS51cHBlcigpfSkKKysgICAgICAgICAgICAgICAgcHJpbnQoJycnCisgLyogRGVsZXRlcyB0aGUgdmFsdWUgJ2RlbGV0ZV92YWx1ZScgZnJvbSB0aGUgIiUoYylzIiBzZXQgY29sdW1uIGZyb20gdGhlCisgICogIiUodClzIiB0YWJsZSBpbiAncm93Jy4KKyAgKgorQEAgLTgzOSwxNSArODQwLDE1IEBAIHZvaWQKKyAgICAgZGF0dW0tPnZhbHVlcyA9IE5VTEw7CisgJycnICUgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLCdjb2x0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCksCisgICAgICAgICAndmFsdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvX2NvbnN0X2NfdHlwZShwcmVmaXgpLCAnUyc6IHN0cnVjdE5hbWUudXBwZXIoKSwKKy0gICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpLCAndCc6IHRhYmxlTmFtZX0KKysgICAgICAgICdDJzogY29sdW1uTmFtZS51cHBlcigpLCAndCc6IHRhYmxlTmFtZX0pCisgCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgIisgdHlwZS5rZXkuY29weUNWYWx1ZSgiZGF0dW0tPmtleXNbMF0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgImRlbGV0ZV92YWx1ZSIpCistICAgICAgICAgICAgICAgIHByaW50ICcnJworKyAgICAgICAgICAgICAgICBwcmludCgiICAgICIrIHR5cGUua2V5LmNvcHlDVmFsdWUoImRhdHVtLT5rZXlzWzBdLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICJkZWxldGVfdmFsdWUiKSkKKysgICAgICAgICAgICAgICAgcHJpbnQoJycnCisgICAgIG92c2RiX2lkbF90eG5fZGVsZXRlX3BhcnRpYWxfc2V0KCZyb3ctPmhlYWRlcl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiUocylzX2NvbF8lKGMpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXR1bSk7CisgfScnJyAlIHsncyc6IHN0cnVjdE5hbWUsICdjJzogY29sdW1uTmFtZSwnY29sdHlwZSc6Y29sdW1uLnR5cGUua2V5LnRvQ1R5cGUocHJlZml4KSwKKy0gICAgICAgICd2YWx0eXBlJzpjb2x1bW4udHlwZS5rZXkudG9fY29uc3RfY190eXBlKHByZWZpeCksICdTJzogc3RydWN0TmFtZS51cHBlcigpfQorKyAgICAgICAgJ3ZhbHR5cGUnOmNvbHVtbi50eXBlLmtleS50b19jb25zdF9jX3R5cGUocHJlZml4KSwgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCl9KQorICAgICAgICAgIyBFbmQgVXBkYXRlL0RlbGV0ZSBvZiBwYXJ0aWFsIHNldAorIAorICAgICAgICAgIyBBZGQgY2xhdXNlIGZ1bmN0aW9ucy4KK0BAIC04NTgsOCArODU5LDggQEAgdm9pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sIFRydWUsIHJlZlRhYmxlPUZhbHNlKQorIAorICAgICAgICAgICAgIGlmIHR5cGUuaXNfc21hcCgpOgorLSAgICAgICAgICAgICAgICBwcmludCBjb21tZW50CistICAgICAgICAgICAgICAgIHByaW50ICIiInZvaWQKKysgICAgICAgICAgICAgICAgcHJpbnQoY29tbWVudCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiIidm9pZAorICUocylzX2FkZF9jbGF1c2VfJShjKXMoc3RydWN0IG92c2RiX2lkbF9jb25kaXRpb24gKmNvbmQsIGVudW0gb3ZzZGJfZnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IHN0cnVjdCBzbWFwIColKGMpcykKKyB7CisgICAgIHN0cnVjdCBvdnNkYl9kYXR1bSBkYXR1bTsKK0BAIC04ODQsNyArODg1LDcgQEAgdm9pZAorICAgICAgICAnUCc6IHByZWZpeC51cHBlcigpLAorICAgICAgICAncyc6IHN0cnVjdE5hbWUsCisgICAgICAgICdTJzogc3RydWN0TmFtZS51cHBlcigpLAorLSAgICAgICAnYyc6IGNvbHVtbk5hbWV9CisrICAgICAgICdjJzogY29sdW1uTmFtZX0pCisgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgCisgICAgICAgICAgICAga2V5VmFyID0gbWVtYmVyc1swXVsnbmFtZSddCitAQCAtODk4LDczICs4OTksNzMgQEAgdm9pZAorICAgICAgICAgICAgICAgICBpZiBsZW4obWVtYmVycykgPiAxOgorICAgICAgICAgICAgICAgICAgICAgblZhciA9IG1lbWJlcnNbMV1bJ25hbWUnXQorIAorLSAgICAgICAgICAgIHByaW50IGNvbW1lbnQKKy0gICAgICAgICAgICBwcmludCAndm9pZCcKKy0gICAgICAgICAgICBwcmludCAnJShzKXNfYWRkX2NsYXVzZV8lKGMpcyhzdHJ1Y3Qgb3ZzZGJfaWRsX2NvbmRpdGlvbiAqY29uZCwgZW51bSBvdnNkYl9mdW5jdGlvbiBmdW5jdGlvbiwgJShhcmdzKXMpJyAlIFwKKysgICAgICAgICAgICBwcmludChjb21tZW50KQorKyAgICAgICAgICAgIHByaW50KCd2b2lkJykKKysgICAgICAgICAgICBwcmludCgnJShzKXNfYWRkX2NsYXVzZV8lKGMpcyhzdHJ1Y3Qgb3ZzZGJfaWRsX2NvbmRpdGlvbiAqY29uZCwgZW51bSBvdnNkYl9mdW5jdGlvbiBmdW5jdGlvbiwgJShhcmdzKXMpJyAlIFwKKyAgICAgICAgICAgICAgICAgeydzJzogc3RydWN0TmFtZSwgJ2MnOiBjb2x1bW5OYW1lLAorLSAgICAgICAgICAgICAgICAgJ2FyZ3MnOiAnLCAnLmpvaW4oWyclKHR5cGUpcyUobmFtZSlzJyAlIG0gZm9yIG0gaW4gbWVtYmVyc10pfQorLSAgICAgICAgICAgIHByaW50ICJ7IgorLSAgICAgICAgICAgIHByaW50ICIgICAgc3RydWN0IG92c2RiX2RhdHVtIGRhdHVtOyIKKysgICAgICAgICAgICAgICAgICdhcmdzJzogJywgJy5qb2luKFsnJSh0eXBlKXMlKG5hbWUpcycgJSBtIGZvciBtIGluIG1lbWJlcnNdKX0pCisrICAgICAgICAgICAgcHJpbnQoInsiKQorKyAgICAgICAgICAgIHByaW50KCIgICAgc3RydWN0IG92c2RiX2RhdHVtIGRhdHVtOyIpCisgICAgICAgICAgICAgZnJlZSA9IFtdCisgICAgICAgICAgICAgaWYgdHlwZS5uX21pbiA9PSAxIGFuZCB0eXBlLm5fbWF4ID09IDE6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgdW5pb24gb3ZzZGJfYXRvbSBrZXk7IgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIpCisgICAgICAgICAgICAgICAgIGlmIHR5cGUudmFsdWU6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgIHVuaW9uIG92c2RiX2F0b20gdmFsdWU7IgorLSAgICAgICAgICAgICAgICBwcmludAorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLm4gPSAxOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS5rZXlzID0gJmtleTsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgIiArIHR5cGUua2V5LmFzc2lnbl9jX3ZhbHVlX2Nhc3RpbmdfYXdheV9jb25zdCgia2V5LiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksIGtleVZhciwgcmVmVGFibGU9RmFsc2UpCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIHVuaW9uIG92c2RiX2F0b20gdmFsdWU7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0ubiA9IDE7IikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS5rZXlzID0gJmtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImtleS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCBrZXlWYXIsIHJlZlRhYmxlPUZhbHNlKSkKKyAgICAgICAgICAgICAgICAgaWYgdHlwZS52YWx1ZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0udmFsdWVzID0gJnZhbHVlOyIKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgIisgdHlwZS52YWx1ZS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoInZhbHVlLiVzIiAlIHR5cGUudmFsdWUudHlwZS50b19zdHJpbmcoKSwgdmFsdWVWYXIsIHJlZlRhYmxlPUZhbHNlKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS52YWx1ZXMgPSAmdmFsdWU7IikKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgIisgdHlwZS52YWx1ZS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoInZhbHVlLiVzIiAlIHR5cGUudmFsdWUudHlwZS50b19zdHJpbmcoKSwgdmFsdWVWYXIsIHJlZlRhYmxlPUZhbHNlKSkKKyAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgZGF0dW0udmFsdWVzID0gTlVMTDsiCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IikKKyAgICAgICAgICAgICBlbGlmIHR5cGUuaXNfb3B0aW9uYWxfcG9pbnRlcigpOgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIKKy0gICAgICAgICAgICAgICAgcHJpbnQKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBpZiAoJXMpIHsiICUga2V5VmFyCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLm4gPSAxOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ua2V5cyA9ICZrZXk7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwga2V5VmFyLCByZWZUYWJsZT1GYWxzZSkKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IGVsc2UgeyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ubiA9IDA7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5rZXlzID0gTlVMTDsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgfSIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICB1bmlvbiBvdnNkYl9hdG9tIGtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiIikKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBpZiAoJXMpIHsiICUga2V5VmFyKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5uID0gMTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5rZXlzID0gJmtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwga2V5VmFyLCByZWZUYWJsZT1GYWxzZSkpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSBlbHNlIHsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5uID0gMDsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5rZXlzID0gTlVMTDsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIH0iKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IikKKyAgICAgICAgICAgICBlbGlmIHR5cGUubl9tYXggPT0gMToKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB1bmlvbiBvdnNkYl9hdG9tIGtleTsiCistICAgICAgICAgICAgICAgIHByaW50CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgaWYgKCVzKSB7IiAlIG5WYXIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgZGF0dW0ubiA9IDE7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5rZXlzID0gJmtleTsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImtleS4lcyIgJSB0eXBlLmtleS50eXBlLnRvX3N0cmluZygpLCAiKiIgKyBrZXlWYXIsIHJlZlRhYmxlPUZhbHNlKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0gZWxzZSB7IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICBkYXR1bS5uID0gMDsiCistICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgIGRhdHVtLmtleXMgPSBOVUxMOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICB9IgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIHVuaW9uIG92c2RiX2F0b20ga2V5OyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGlmICglcykgeyIgJSBuVmFyKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5uID0gMTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5rZXlzID0gJmtleTsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJrZXkuJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIioiICsga2V5VmFyLCByZWZUYWJsZT1GYWxzZSkpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSBlbHNlIHsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5uID0gMDsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICBkYXR1bS5rZXlzID0gTlVMTDsiKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIH0iKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLnZhbHVlcyA9IE5VTEw7IikKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLm4gPSAlczsiICUgblZhcgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLmtleXMgPSAlcyA/IHhtYWxsb2MoJXMgKiBzaXplb2YgKmRhdHVtLmtleXMpIDogTlVMTDsiICUgKG5WYXIsIG5WYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0ubiA9ICVzOyIgJSBuVmFyKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGRhdHVtLmtleXMgPSAlcyA/IHhtYWxsb2MoJXMgKiBzaXplb2YgKmRhdHVtLmtleXMpIDogTlVMTDsiICUgKG5WYXIsIG5WYXIpKQorICAgICAgICAgICAgICAgICBmcmVlICs9IFsnZGF0dW0ua2V5cyddCisgICAgICAgICAgICAgICAgIGlmIHR5cGUudmFsdWU6CistICAgICAgICAgICAgICAgICAgICBwcmludCAiICAgIGRhdHVtLnZhbHVlcyA9IHhtYWxsb2MoJXMgKiBzaXplb2YgKmRhdHVtLnZhbHVlcyk7IiAlIG5WYXIKKysgICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgZGF0dW0udmFsdWVzID0geG1hbGxvYyglcyAqIHNpemVvZiAqZGF0dW0udmFsdWVzKTsiICUgblZhcikKKyAgICAgICAgICAgICAgICAgICAgIGZyZWUgKz0gWydkYXR1bS52YWx1ZXMnXQorICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICVzOyBpKyspIHsiICUgblZhcgorLSAgICAgICAgICAgICAgICBwcmludCAiICAgICAgICAiICsgdHlwZS5rZXkuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJkYXR1bS5rZXlzW2ldLiVzIiAlIHR5cGUua2V5LnR5cGUudG9fc3RyaW5nKCksICIlc1tpXSIgJSBrZXlWYXIsIHJlZlRhYmxlPUZhbHNlKQorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBkYXR1bS52YWx1ZXMgPSBOVUxMOyIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAlczsgaSsrKSB7IiAlIG5WYXIpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgICAgICIgKyB0eXBlLmtleS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImRhdHVtLmtleXNbaV0uJXMiICUgdHlwZS5rZXkudHlwZS50b19zdHJpbmcoKSwgIiVzW2ldIiAlIGtleVZhciwgcmVmVGFibGU9RmFsc2UpKQorICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgIiArIHR5cGUudmFsdWUuYXNzaWduX2NfdmFsdWVfY2FzdGluZ19hd2F5X2NvbnN0KCJkYXR1bS52YWx1ZXNbaV0uJXMiICUgdHlwZS52YWx1ZS50eXBlLnRvX3N0cmluZygpLCAiJXNbaV0iICUgdmFsdWVWYXIsIHJlZlRhYmxlPUZhbHNlKQorLSAgICAgICAgICAgICAgICBwcmludCAiICAgIH0iCisrICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgICAgICAiICsgdHlwZS52YWx1ZS5hc3NpZ25fY192YWx1ZV9jYXN0aW5nX2F3YXlfY29uc3QoImRhdHVtLnZhbHVlc1tpXS4lcyIgJSB0eXBlLnZhbHVlLnR5cGUudG9fc3RyaW5nKCksICIlc1tpXSIgJSB2YWx1ZVZhciwgcmVmVGFibGU9RmFsc2UpKQorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIH0iKQorICAgICAgICAgICAgICAgICBpZiB0eXBlLnZhbHVlOgorICAgICAgICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gdHlwZS52YWx1ZS50b0F0b21pY1R5cGUoKQorICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgdmFsdWVUeXBlID0gIk9WU0RCX1RZUEVfVk9JRCIKKy0gICAgICAgICAgICAgICAgcHJpbnQgIiAgICBvdnNkYl9kYXR1bV9zb3J0X3VuaXF1ZSgmZGF0dW0sICVzLCAlcyk7IiAlICgKKy0gICAgICAgICAgICAgICAgICAgIHR5cGUua2V5LnRvQXRvbWljVHlwZSgpLCB2YWx1ZVR5cGUpCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAgb3ZzZGJfZGF0dW1fc29ydF91bmlxdWUoJmRhdHVtLCAlcywgJXMpOyIgJSAoCisrICAgICAgICAgICAgICAgICAgICB0eXBlLmtleS50b0F0b21pY1R5cGUoKSwgdmFsdWVUeXBlKSkKKyAKKy0gICAgICAgICAgICBwcmludCIiIiAgICBvdnNkYl9pZGxfY29uZGl0aW9uX2FkZF9jbGF1c2UoY29uZCwKKysgICAgICAgICAgICBwcmludCgiIiIgICAgb3ZzZGJfaWRsX2NvbmRpdGlvbl9hZGRfY2xhdXNlKGNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYlKHMpc19jb2xfJShjKXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0dW0pO1wKK0BAIC05NzQsMjggKzk3NSwyOCBAQCB2b2lkCisgICAgICAgICdQJzogcHJlZml4LnVwcGVyKCksCisgICAgICAgICdzJzogc3RydWN0TmFtZSwKKyAgICAgICAgJ1MnOiBzdHJ1Y3ROYW1lLnVwcGVyKCksCistICAgICAgICdjJzogY29sdW1uTmFtZX0KKysgICAgICAgJ2MnOiBjb2x1bW5OYW1lfSkKKyAgICAgICAgICAgICBmb3IgdmFyIGluIGZyZWU6CistICAgICAgICAgICAgICAgIHByaW50ICIgICAgZnJlZSglcyk7IiAlIHZhcgorLSAgICAgICAgICAgIHByaW50ICJ9IgorKyAgICAgICAgICAgICAgICBwcmludCgiICAgIGZyZWUoJXMpOyIgJSB2YXIpCisrICAgICAgICAgICAgcHJpbnQoIn0iKQorIAorLSAgICAgICAgcHJpbnQgIiIiCisrICAgICAgICBwcmludCgiIiIKKyB2b2lkCisgJShzKXNfc2V0X2NvbmRpdGlvbihzdHJ1Y3Qgb3ZzZGJfaWRsICppZGwsIHN0cnVjdCBvdnNkYl9pZGxfY29uZGl0aW9uICpjb25kaXRpb24pCisgeworICAgICBvdnNkYl9pZGxfc2V0X2NvbmRpdGlvbihpZGwsICYlKHApc3RhYmxlXyUodGwpcywgY29uZGl0aW9uKTsKKyB9IiIiICUgeydwJzogcHJlZml4LAorICAgICAgICAgJ3MnOiBzdHJ1Y3ROYW1lLAorLSAgICAgICAgJ3RsJzogdGFibGVOYW1lLmxvd2VyKCl9CisrICAgICAgICAndGwnOiB0YWJsZU5hbWUubG93ZXIoKX0pCisgCisgICAgICAgICAjIFRhYmxlIGNvbHVtbnMuCisgICAgICAgICBmb3IgY29sdW1uTmFtZSwgY29sdW1uIGluIHNvcnRlZF9jb2x1bW5zKHRhYmxlKToKKyAgICAgICAgICAgICBwcmVyZXFzID0gW10KKyAgICAgICAgICAgICB4ID0gY29sdW1uLnR5cGUuY0luaXRUeXBlKCIlc19jb2xfJXMiICUgKHRhYmxlTmFtZSwgY29sdW1uTmFtZSksIHByZXJlcXMpCisgICAgICAgICAgICAgaWYgcHJlcmVxczoKKy0gICAgICAgICAgICAgICAgcHJpbnQgJ1xuJy5qb2luKHByZXJlcXMpCistICAgICAgICBwcmludCAiXG5zdHJ1Y3Qgb3ZzZGJfaWRsX2NvbHVtbiAlc19jb2x1bW5zWyVzX05fQ09MVU1OU10gPSB7IiAlICgKKy0gICAgICAgICAgICBzdHJ1Y3ROYW1lLCBzdHJ1Y3ROYW1lLnVwcGVyKCkpCisrICAgICAgICAgICAgICAgIHByaW50KCdcbicuam9pbihwcmVyZXFzKSkKKysgICAgICAgIHByaW50KCJcbnN0cnVjdCBvdnNkYl9pZGxfY29sdW1uICVzX2NvbHVtbnNbJXNfTl9DT0xVTU5TXSA9IHsiICUgKAorKyAgICAgICAgICAgIHN0cnVjdE5hbWUsIHN0cnVjdE5hbWUudXBwZXIoKSkpCisgICAgICAgICBmb3IgY29sdW1uTmFtZSwgY29sdW1uIGluIHNvcnRlZF9jb2x1bW5zKHRhYmxlKToKKyAgICAgICAgICAgICBpZiBjb2x1bW4ubXV0YWJsZToKKyAgICAgICAgICAgICAgICAgbXV0YWJsZSA9ICJ0cnVlIgorQEAgLTEwMDMsNyArMTAwNCw3IEBAIHZvaWQKKyAgICAgICAgICAgICAgICAgbXV0YWJsZSA9ICJmYWxzZSIKKyAgICAgICAgICAgICB0eXBlX2luaXQgPSAnXG4nLmpvaW4oIiAgICAgICAgICAgICIgKyB4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGNvbHVtbi50eXBlLmNJbml0VHlwZSgiJXNfY29sXyVzIiAlICh0YWJsZU5hbWUsIGNvbHVtbk5hbWUpLCBwcmVyZXFzKSkKKy0gICAgICAgICAgICBwcmludCAiIiJcCisrICAgICAgICAgICAgcHJpbnQoIiIiXAorICAgICBbJShQKXMlKFQpc19DT0xfJShDKXNdID0geworICAgICAgICAgIC5uYW1lID0gIiUoYylzIiwKKyAgICAgICAgICAudHlwZSA9IHsKK0BAIC0xMDE4LDM4ICsxMDE5LDM4IEBAIHZvaWQKKyAgICAgICAgICAgICAgICAnQyc6IGNvbHVtbk5hbWUudXBwZXIoKSwKKyAgICAgICAgICAgICAgICAncyc6IHN0cnVjdE5hbWUsCisgICAgICAgICAgICAgICAgJ211dGFibGUnOiBtdXRhYmxlLAorLSAgICAgICAgICAgICAgICd0eXBlJzogdHlwZV9pbml0fQorLSAgICAgICAgcHJpbnQgIn07IgorKyAgICAgICAgICAgICAgICd0eXBlJzogdHlwZV9pbml0fSkKKysgICAgICAgIHByaW50KCJ9OyIpCisgCisgICAgICMgVGFibGUgY2xhc3Nlcy4KKy0gICAgcHJpbnQgIgwiCistICAgIHByaW50ICJzdHJ1Y3Qgb3ZzZGJfaWRsX3RhYmxlX2NsYXNzICVzdGFibGVfY2xhc3Nlc1slc05fVEFCTEVTXSA9IHsiICUgKHByZWZpeCwgcHJlZml4LnVwcGVyKCkpCisrICAgIHByaW50KCIMIikKKysgICAgcHJpbnQoInN0cnVjdCBvdnNkYl9pZGxfdGFibGVfY2xhc3MgJXN0YWJsZV9jbGFzc2VzWyVzTl9UQUJMRVNdID0geyIgJSAocHJlZml4LCBwcmVmaXgudXBwZXIoKSkpCisgICAgIGZvciB0YWJsZU5hbWUsIHRhYmxlIGluIHNvcnRlZChzY2hlbWEudGFibGVzLml0ZXJpdGVtcygpKToKKyAgICAgICAgIHN0cnVjdE5hbWUgPSAiJXMlcyIgJSAocHJlZml4LCB0YWJsZU5hbWUubG93ZXIoKSkKKyAgICAgICAgIGlmIHRhYmxlLmlzX3Jvb3Q6CisgICAgICAgICAgICAgaXNfcm9vdCA9ICJ0cnVlIgorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBpc19yb290ID0gImZhbHNlIgorLSAgICAgICAgcHJpbnQgIiAgICB7XCIlc1wiLCAlcywiICUgKHRhYmxlTmFtZSwgaXNfcm9vdCkKKy0gICAgICAgIHByaW50ICIgICAgICVzX2NvbHVtbnMsIEFSUkFZX1NJWkUoJXNfY29sdW1ucyksIiAlICgKKy0gICAgICAgICAgICBzdHJ1Y3ROYW1lLCBzdHJ1Y3ROYW1lKQorLSAgICAgICAgcHJpbnQgIiAgICAgc2l6ZW9mKHN0cnVjdCAlcyksICVzX2luaXRfX30sIiAlIChzdHJ1Y3ROYW1lLCBzdHJ1Y3ROYW1lKQorLSAgICBwcmludCAifTsiCisrICAgICAgICBwcmludCgiICAgIHtcIiVzXCIsICVzLCIgJSAodGFibGVOYW1lLCBpc19yb290KSkKKysgICAgICAgIHByaW50KCIgICAgICVzX2NvbHVtbnMsIEFSUkFZX1NJWkUoJXNfY29sdW1ucyksIiAlICgKKysgICAgICAgICAgICBzdHJ1Y3ROYW1lLCBzdHJ1Y3ROYW1lKSkKKysgICAgICAgIHByaW50KCIgICAgIHNpemVvZihzdHJ1Y3QgJXMpLCAlc19pbml0X199LCIgJSAoc3RydWN0TmFtZSwgc3RydWN0TmFtZSkpCisrICAgIHByaW50KCJ9OyIpCisgCisgICAgICMgSURMIGNsYXNzLgorLSAgICBwcmludCAiXG5zdHJ1Y3Qgb3ZzZGJfaWRsX2NsYXNzICVzaWRsX2NsYXNzID0geyIgJSBwcmVmaXgKKy0gICAgcHJpbnQgIiAgICBcIiVzXCIsICVzdGFibGVfY2xhc3NlcywgQVJSQVlfU0laRSglc3RhYmxlX2NsYXNzZXMpIiAlICgKKy0gICAgICAgIHNjaGVtYS5uYW1lLCBwcmVmaXgsIHByZWZpeCkKKy0gICAgcHJpbnQgIn07IgorKyAgICBwcmludCgiXG5zdHJ1Y3Qgb3ZzZGJfaWRsX2NsYXNzICVzaWRsX2NsYXNzID0geyIgJSBwcmVmaXgpCisrICAgIHByaW50KCIgICAgXCIlc1wiLCAlc3RhYmxlX2NsYXNzZXMsIEFSUkFZX1NJWkUoJXN0YWJsZV9jbGFzc2VzKSIgJSAoCisrICAgICAgICBzY2hlbWEubmFtZSwgcHJlZml4LCBwcmVmaXgpKQorKyAgICBwcmludCgifTsiKQorIAorLSAgICBwcmludCAiIiIKKysgICAgcHJpbnQoIiIiCisgLyogUmV0dXJuIHRoZSBzY2hlbWEgdmVyc2lvbi4gIFRoZSBjYWxsZXIgbXVzdCBub3QgZnJlZSB0aGUgcmV0dXJuZWQgdmFsdWUuICovCisgY29uc3QgY2hhciAqCisgJXNnZXRfZGJfdmVyc2lvbih2b2lkKQorIHsKKyAgICAgcmV0dXJuICIlcyI7CisgfQorLSIiIiAlIChwcmVmaXgsIHNjaGVtYS52ZXJzaW9uKQorKyIiIiAlIChwcmVmaXgsIHNjaGVtYS52ZXJzaW9uKSkKKyAKKyAKKyAKK0BAIC0xMDc1LDcgKzEwNzYsNyBAQCBkZWYgb3ZzZGJfZXNjYXBlKHN0cmluZyk6CisgICAgIHJldHVybiByZS5zdWIocidbIlxcXDAwMC1cMDM3XScsIGVzY2FwZSwgc3RyaW5nKQorIAorIGRlZiB1c2FnZSgpOgorLSAgICBwcmludCAiIiJcCisrICAgIHByaW50KCIiIlwKKyAlKGFyZ3YwKXM6IG92c2RiIHNjaGVtYSBjb21waWxlcgorIHVzYWdlOiAlKGFyZ3YwKXMgW09QVElPTlNdIENPTU1BTkQgQVJHLi4uCisgCitAQCAtMTA4Nyw3ICsxMDg4LDcgQEAgVGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgc3VwcG9ydGVkOgorIFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWxzbyBhdmFpbGFibGU6CisgICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZQorICAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvblwKKy0iIiIgJSB7J2FyZ3YwJzogYXJndjB9CisrIiIiICUgeydhcmd2MCc6IGFyZ3YwfSkKKyAgICAgc3lzLmV4aXQoMCkKKyAKKyBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorQEAgLTExMDUsNyArMTEwNiw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgICAgICAgICAgaWYga2V5IGluIFsnLWgnLCAnLS1oZWxwJ106CisgICAgICAgICAgICAgICAgIHVzYWdlKCkKKyAgICAgICAgICAgICBlbGlmIGtleSBpbiBbJy1WJywgJy0tdmVyc2lvbiddOgorLSAgICAgICAgICAgICAgICBwcmludCAib3ZzZGItaWRsYyAoT3BlbiB2U3dpdGNoKSBAVkVSU0lPTkAiCisrICAgICAgICAgICAgICAgIHByaW50KCJvdnNkYi1pZGxjIChPcGVuIHZTd2l0Y2gpIEBWRVJTSU9OQCIpCisgICAgICAgICAgICAgZWxpZiBrZXkgaW4gWyctQycsICctLWRpcmVjdG9yeSddOgorICAgICAgICAgICAgICAgICBvcy5jaGRpcih2YWx1ZSkKKyAgICAgICAgICAgICBlbHNlOgorLS0gCisyLjUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAyLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGNlcHRpb24tY2xlYW51cC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDItUHl0aG9uMy1jb21wYXRpYmlsaXR5LWV4Y2VwdGlvbi1jbGVhbnVwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YzBmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC8wMDAyLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGNlcHRpb24tY2xlYW51cC5wYXRjaApAQCAtMCwwICsxLDc5IEBACitGcm9tIGM5OGZlZTQxZDEzMGNiOTQ2YWE0ZTYwZmVmYWE2Y2JmMjAzZjY3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAyMDozMzoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvOF0gUHl0aG9uMyBjb21wYXRpYmlsaXR5OiBleGNlcHRpb24gY2xlYW51cAorCitDb21taXQgNTJlNGE0NzdmMGIzYzBhMGVjZTdhZGVlZGU2ZTA2ZTA3ODE0ZjhiOSBmcm9tCitodHRwczovL2dpdGh1Yi5jb20vb3BlbnZzd2l0Y2gvb3ZzLmdpdAorCitUaGUgZXhjZXB0aW9uIHN5bnRheCB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggcHl0aG9uMiBhbmQgcHl0aG9uMyBpcwordG8gdXNlIHRoZSAiYXMiIGZvcm0gZm9yICJleGNlcHQ6Ii4KKworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJlbiBQZmFmZiA8YmxwQG92bi5vcmc+CistLS0KKyBidWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzIHwgMiArLQorIG92c2RiL292c2RiLWRvYyAgICAgICAgICAgICAgfCA0ICsrLS0KKyBvdnNkYi9vdnNkYi1pZGxjLmluICAgICAgICAgIHwgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworaW5kZXggNDI1YTg1Zi4uNjFlNzUyYiAxMDA3NTUKKy0tLSBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKKysrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKK0BAIC03ODQsNyArNzg0LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICAgdHJ5OgorICAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldG9wdC5nbnVfZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaGVscCcsICdvdnMtdmVyc2lvbj0nXSkKKy0gICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvciwgZ2VvOgorKyAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yIGFzIGdlbzoKKyAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzOiAlc1xuIiAlIChhcmd2MCwgZ2VvLm1zZykpCisgICAgICAgICBzeXMuZXhpdCgxKQorIAorZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWRvYyBiL292c2RiL292c2RiLWRvYworaW5kZXggYjM0ZmIxMS4uOTE4ZTg4YSAxMDA3NTUKKy0tLSBhL292c2RiL292c2RiLWRvYworKysrIGIvb3ZzZGIvb3ZzZGItZG9jCitAQCAtMjc4LDcgKzI3OCw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgICAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldG9wdC5nbnVfZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2hWJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydlci1kaWFncmFtPScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbj0nLCAnaGVscCddKQorLSAgICAgICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvciwgZ2VvOgorKyAgICAgICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvciBhcyBnZW86CisgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKGFyZ3YwLCBnZW8ubXNnKSkKKyAgICAgICAgICAgICBzeXMuZXhpdCgxKQorIAorQEAgLTMwNiw3ICszMDYsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgICAgICAgICAgIGlmIGxlbihsaW5lKToKKyAgICAgICAgICAgICAgICAgcHJpbnQobGluZSkKKyAKKy0gICAgZXhjZXB0IGVycm9yLkVycm9yLCBlOgorKyAgICBleGNlcHQgZXJyb3IuRXJyb3IgYXMgZToKKyAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzOiAlc1xuIiAlIChhcmd2MCwgZS5tc2cpKQorICAgICAgICAgc3lzLmV4aXQoMSkKKyAKK2RpZmYgLS1naXQgYS9vdnNkYi9vdnNkYi1pZGxjLmluIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgoraW5kZXggMTA2NDQ0OC4uOGI4NWYwZCAxMDA3NTUKKy0tLSBhL292c2RiL292c2RiLWlkbGMuaW4KKysrKyBiL292c2RiL292c2RiLWlkbGMuaW4KK0BAIC0xMDk4LDcgKzEwOTgsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2RpcmVjdG9yeScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVscCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbiddKQorLSAgICAgICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvciwgZ2VvOgorKyAgICAgICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvciBhcyBnZW86CisgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKGFyZ3YwLCBnZW8ubXNnKSkKKyAgICAgICAgICAgICBzeXMuZXhpdCgxKQorIAorQEAgLTExMzYsNyArMTEzNiw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAKKyAgICAgICAgIGZ1bmMoKmFyZ3NbMTpdKQorLSAgICBleGNlcHQgb3ZzLmRiLmVycm9yLkVycm9yLCBlOgorKyAgICBleGNlcHQgb3ZzLmRiLmVycm9yLkVycm9yIGFzIGU6CisgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoYXJndjAsIGUpKQorICAgICAgICAgc3lzLmV4aXQoMSkKKyAKKy0tIAorMi41LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwMy1QeXRob24zLWNvbXBhdGliaWxpdHktZXhlY2ZpbGUtdG8tZXhlYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDMtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWV4ZWNmaWxlLXRvLWV4ZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg1OTgwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDMtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWV4ZWNmaWxlLXRvLWV4ZWMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA5Y2JhZTg2YmUwMzc1NmRmNzY1NjBjMTU3MjA3NTZmOWFjMDg4MTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgSnVuIDIwMTcgMjA6MzM6MjMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzhdIFB5dGhvbjMgY29tcGF0aWJpbGl0eTogZXhlY2ZpbGUgdG8gZXhlYworCitDb21taXQgYTRkMTBhN2NhOTM3ZDczODczZjZmOTg2MTlkODg2ODJlNjlmNWRiZSBmcm9tCitodHRwczovL2dpdGh1Yi5jb20vb3BlbnZzd2l0Y2gvb3ZzLmdpdAorCitBbGxvdyBjb21wYWJpbGl0eSB3aXRoIHB5dGhvbjMgYW5kIHB5dGhvbjIgYnkgY2hhbmdpbmcgZXhlY2ZpbGUoKSB0bworZXhlYygpLgorCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KKy0tLQorIG92c2RiL292c2RiLWlkbGMuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9vdnNkYi9vdnNkYi1pZGxjLmluIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgoraW5kZXggOGI4NWYwZC4uM2ZhMWEwZiAxMDA3NTUKKy0tLSBhL292c2RiL292c2RiLWlkbGMuaW4KKysrKyBiL292c2RiL292c2RiLWlkbGMuaW4KK0BAIC0xNyw3ICsxNyw3IEBAIGRlZiBwYXJzZVNjaGVtYShmaWxlbmFtZSk6CisgCisgZGVmIGFubm90YXRlU2NoZW1hKHNjaGVtYUZpbGUsIGFubm90YXRpb25GaWxlKToKKyAgICAgc2NoZW1hSnNvbiA9IG92cy5qc29uLmZyb21fZmlsZShzY2hlbWFGaWxlKQorLSAgICBleGVjZmlsZShhbm5vdGF0aW9uRmlsZSwgZ2xvYmFscygpLCB7InMiOiBzY2hlbWFKc29ufSkKKysgICAgZXhlYyhjb21waWxlKG9wZW4oYW5ub3RhdGlvbkZpbGUsICJyYiIpLnJlYWQoKSwgYW5ub3RhdGlvbkZpbGUsICdleGVjJyksIGdsb2JhbHMoKSwgeyJzIjogc2NoZW1hSnNvbn0pCisgICAgIG92cy5qc29uLnRvX3N0cmVhbShzY2hlbWFKc29uLCBzeXMuc3Rkb3V0KQorICAgICBzeXMuc3Rkb3V0LndyaXRlKCdcbicpCisgCistLSAKKzIuNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDQtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWl0ZXJpdGVtcy10by1pdGVtcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDQtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWl0ZXJpdGVtcy10by1pdGVtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGM4NmRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNC1QeXRob24zLWNvbXBhdGliaWxpdHktaXRlcml0ZW1zLXRvLWl0ZW1zLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIDBmMzE4ZTQ3MmQ5ODk3ZDk5Mzk1YWRjZmIxN2NiZWFmZjA1Njc3YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAyMDozMzoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvOF0gUHl0aG9uMyBjb21wYXRpYmlsaXR5OiBpdGVyaXRlbXMgdG8gaXRlbXMKKworQ29tbWl0IDRhYjY2NTYyM2NiYjRjNjUwNmU0OGI4MmUwYzlmZTg1ODVmNDJlMTMgZnJvbQoraHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy5naXQKKworQWxsb3cgY29tcGFiaWxpdHkgd2l0aCBweXRob24zIGFuZCBweXRob24yIGJ5IGNoYW5naW5nIGl0ZXJpdGVtcygpIHRvCitpdGVtcygpLgorCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KKy0tLQorIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zIHwgMiArLQorIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMgIHwgMiArLQorIGJ1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMgIHwgMiArLQorIG92c2RiL292c2RiLWlkbGMuaW4gICAgICAgICAgIHwgOCArKysrLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucworaW5kZXggODc0ZTZiNC4uYzExMjk3YyAxMDA3NTUKKy0tLSBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCisrKysgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucworQEAgLTEzLDcgKzEzLDcgQEAgdmVyc2lvbl9tYXAgPSB7IjEuMCI6IDB4MDEsCisgICAgICAgICAgICAgICAgIjEuMyI6IDB4MDQsCisgICAgICAgICAgICAgICAgIjEuNCI6IDB4MDUsCisgICAgICAgICAgICAgICAgIjEuNSI6IDB4MDZ9CistdmVyc2lvbl9yZXZlcnNlX21hcCA9IGRpY3QoKHYsIGspIGZvciAoaywgdikgaW4gdmVyc2lvbl9tYXAuaXRlcml0ZW1zKCkpCisrdmVyc2lvbl9yZXZlcnNlX21hcCA9IGRpY3QoKHYsIGspIGZvciAoaywgdikgaW4gdmVyc2lvbl9tYXAuaXRlbXMoKSkKKyAKKyAjIE1hcCBmcm9tIHZlbmRvciBuYW1lIHRvIHRoZSBsZW5ndGggb2YgdGhlIGFjdGlvbiBoZWFkZXIuCisgdmVuZG9yX21hcCA9IHsiT0YiOiAoMHgwMDAwMDAwMCwgIDQpLAorZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1lcnJvcnMgYi9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZXJyb3JzCitpbmRleCAzMzZhMjQwLi43MWFlMGJkIDEwMDc1NQorLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycworKysrIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWVycm9ycworQEAgLTE0LDcgKzE0LDcgQEAgdmVyc2lvbl9tYXAgPSB7IjEuMCI6IDB4MDEsCisgICAgICAgICAgICAgICAgIjEuNCI6IDB4MDUsCisgICAgICAgICAgICAgICAgIjEuNSI6IDB4MDYsCisgICAgICAgICAgICAgICAgIjEuNiI6IDB4MDd9CistdmVyc2lvbl9yZXZlcnNlX21hcCA9IGRpY3QoKHYsIGspIGZvciAoaywgdikgaW4gdmVyc2lvbl9tYXAuaXRlcml0ZW1zKCkpCisrdmVyc2lvbl9yZXZlcnNlX21hcCA9IGRpY3QoKHYsIGspIGZvciAoaywgdikgaW4gdmVyc2lvbl9tYXAuaXRlbXMoKSkKKyAKKyB0b2tlbiA9IE5vbmUKKyBsaW5lID0gIiIKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtZmllbGRzIGIvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWZpZWxkcworaW5kZXggNjFlNzUyYi4uZWY5OTdkZCAxMDA3NTUKKy0tLSBhL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKKysrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1maWVsZHMKK0BAIC0xNiw3ICsxNiw3IEBAIFZFUlNJT04gPSB7IjEuMCI6IDB4MDEsCisgICAgICAgICAgICAiMS4zIjogMHgwNCwKKyAgICAgICAgICAgICIxLjQiOiAweDA1LAorICAgICAgICAgICAgIjEuNSI6IDB4MDZ9CistVkVSU0lPTl9SRVZFUlNFID0gZGljdCgodixrKSBmb3IgaywgdiBpbiBWRVJTSU9OLml0ZXJpdGVtcygpKQorK1ZFUlNJT05fUkVWRVJTRSA9IGRpY3QoKHYsaykgZm9yIGssIHYgaW4gVkVSU0lPTi5pdGVtcygpKQorIAorIFRZUEVTID0geyJ1OCI6ICAgICAgICgxLCAgIEZhbHNlKSwKKyAgICAgICAgICAiYmUxNiI6ICAgICAoMiwgICBGYWxzZSksCitkaWZmIC0tZ2l0IGEvb3ZzZGIvb3ZzZGItaWRsYy5pbiBiL292c2RiL292c2RiLWlkbGMuaW4KK2luZGV4IDNmYTFhMGYuLjYxNTU0OGYgMTAwNzU1CistLS0gYS9vdnNkYi9vdnNkYi1pZGxjLmluCisrKysgYi9vdnNkYi9vdnNkYi1pZGxjLmluCitAQCAtMTM4LDcgKzEzOCw3IEBAIGRlZiBwcmludENJRExIZWFkZXIoc2NoZW1hRmlsZSk6CisgI2luY2x1ZGUgInNtYXAuaCIKKyAjaW5jbHVkZSAidXVpZC5oIicnJyAlIHsncHJlZml4JzogcHJlZml4LnVwcGVyKCl9KQorIAorLSAgICBmb3IgdGFibGVOYW1lLCB0YWJsZSBpbiBzb3J0ZWQoc2NoZW1hLnRhYmxlcy5pdGVyaXRlbXMoKSk6CisrICAgIGZvciB0YWJsZU5hbWUsIHRhYmxlIGluIHNvcnRlZChzY2hlbWEudGFibGVzLml0ZW1zKCkpOgorICAgICAgICAgc3RydWN0TmFtZSA9ICIlcyVzIiAlIChwcmVmaXgsIHRhYmxlTmFtZS5sb3dlcigpKQorIAorICAgICAgICAgcHJpbnQoIgwiKQorQEAgLTMwMCw3ICszMDAsNyBAQCBkZWYgcHJpbnRDSURMU291cmNlKHNjaGVtYUZpbGUpOgorICcnJyAlIHNjaGVtYS5pZGxIZWFkZXIpCisgCisgICAgICMgQ2FzdCBmdW5jdGlvbnMuCistICAgIGZvciB0YWJsZU5hbWUsIHRhYmxlIGluIHNvcnRlZChzY2hlbWEudGFibGVzLml0ZXJpdGVtcygpKToKKysgICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlbXMoKSk6CisgICAgICAgICBzdHJ1Y3ROYW1lID0gIiVzJXMiICUgKHByZWZpeCwgdGFibGVOYW1lLmxvd2VyKCkpCisgICAgICAgICBwcmludCgnJycKKyBzdGF0aWMgc3RydWN0ICUocylzICoKK0BAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIHN0cnVjdCAlKHMpcyAqCisgJycnICUgeydzJzogc3RydWN0TmFtZX0pCisgCisgCistICAgIGZvciB0YWJsZU5hbWUsIHRhYmxlIGluIHNvcnRlZChzY2hlbWEudGFibGVzLml0ZXJpdGVtcygpKToKKysgICAgZm9yIHRhYmxlTmFtZSwgdGFibGUgaW4gc29ydGVkKHNjaGVtYS50YWJsZXMuaXRlbXMoKSk6CisgICAgICAgICBzdHJ1Y3ROYW1lID0gIiVzJXMiICUgKHByZWZpeCwgdGFibGVOYW1lLmxvd2VyKCkpCisgICAgICAgICBwcmludCgiDCIpCisgICAgICAgICBwcmludCgiLyogJXMgdGFibGUuICovIiAlICh0YWJsZU5hbWUpKQorQEAgLTEwMjUsNyArMTAyNSw3IEBAIHZvaWQKKyAgICAgIyBUYWJsZSBjbGFzc2VzLgorICAgICBwcmludCgiDCIpCisgICAgIHByaW50KCJzdHJ1Y3Qgb3ZzZGJfaWRsX3RhYmxlX2NsYXNzICVzdGFibGVfY2xhc3Nlc1slc05fVEFCTEVTXSA9IHsiICUgKHByZWZpeCwgcHJlZml4LnVwcGVyKCkpKQorLSAgICBmb3IgdGFibGVOYW1lLCB0YWJsZSBpbiBzb3J0ZWQoc2NoZW1hLnRhYmxlcy5pdGVyaXRlbXMoKSk6CisrICAgIGZvciB0YWJsZU5hbWUsIHRhYmxlIGluIHNvcnRlZChzY2hlbWEudGFibGVzLml0ZW1zKCkpOgorICAgICAgICAgc3RydWN0TmFtZSA9ICIlcyVzIiAlIChwcmVmaXgsIHRhYmxlTmFtZS5sb3dlcigpKQorICAgICAgICAgaWYgdGFibGUuaXNfcm9vdDoKKyAgICAgICAgICAgICBpc19yb290ID0gInRydWUiCistLSAKKzIuNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDUtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWZpeC1pbnRlZ2VyLXByb2JsZW1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNS1QeXRob24zLWNvbXBhdGliaWxpdHktZml4LWludGVnZXItcHJvYmxlbXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3YTk3ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDUtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWZpeC1pbnRlZ2VyLXByb2JsZW1zLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gYmMyOWY5OGYwMTM3ZmExMDgzYTRjYWNmODMyZDUyZjc0MGQxNTBhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNS84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IGZpeCBpbnRlZ2VyIHByb2JsZW1zCisKK0NvbW1pdCBmYTE0NWYxYTUzOTQzMjQzZjk0YTMyY2U5ODUyNWRiODQ5NGIwMDUyIGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVudnN3aXRjaC9vdnMuZ2l0CisKK0luIHB5dGhvbjMgbWF4aW50IGlzIG5vdCBkZWZpbmVkLCBidXQgbWF4c2l6ZSBpcyBkZWZpbmVkIGluIGJvdGgKK3B5dGhvbjIgYW5kIHB5dGhvbjMuCisKK1RoZSBwdXRfdGV4dCgpIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgdXNlIGEgdmFsdWUgd2hpY2ggY2FtZSBpbiBhcworZmxvYXQgZHVlIHRvIGEgcGlvciBtYXRoIGZ1bmN0aW9uIGFuZCBweXRob24zIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLgorVGhlIHNpbXBsZSBhbnN3ZXIgaXMgdG8gY29udmVydCBpdCB3aXRoIGludCgpIGFuZCBtb3ZlIG9uLgorCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KKy0tLQorIG92c2RiL292c2RiLWlkbGMuaW4gICB8IDIgKy0KKyBweXRob24vYnVpbGQvbnJvZmYucHkgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL292c2RiL292c2RiLWlkbGMuaW4gYi9vdnNkYi9vdnNkYi1pZGxjLmluCitpbmRleCA2MTU1NDhmLi43Y2JjYmY1IDEwMDc1NQorLS0tIGEvb3ZzZGIvb3ZzZGItaWRsYy5pbgorKysrIGIvb3ZzZGIvb3ZzZGItaWRsYy5pbgorQEAgLTM1OCw3ICszNTgsNyBAQCBzdGF0aWMgdm9pZAorICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgJXMiICUgdHlwZS52YWx1ZS5pbml0Q0RlZmF1bHQodmFsdWVWYXIsIHR5cGUubl9taW4gPT0gMCkpCisgICAgICAgICAgICAgICAgIHByaW50KCIgICAgfSIpCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgaWYgdHlwZS5uX21heCAhPSBzeXMubWF4aW50OgorKyAgICAgICAgICAgICAgICBpZiB0eXBlLm5fbWF4ICE9IHN5cy5tYXhzaXplOgorICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgICBzaXplX3QgbiA9IE1JTiglZCwgZGF0dW0tPm4pOyIgJSB0eXBlLm5fbWF4KQorICAgICAgICAgICAgICAgICAgICAgbk1heCA9ICJuIgorICAgICAgICAgICAgICAgICBlbHNlOgorZGlmZiAtLWdpdCBhL3B5dGhvbi9idWlsZC9ucm9mZi5weSBiL3B5dGhvbi9idWlsZC9ucm9mZi5weQoraW5kZXggYzIzODM3Zi4uNDAxZjY5OSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9idWlsZC9ucm9mZi5weQorKysrIGIvcHl0aG9uL2J1aWxkL25yb2ZmLnB5CitAQCAtMTQ4LDYgKzE0OCw4IEBAIGRlZiBmYXRhbChtc2cpOgorIAorIAorIGRlZiBwdXRfdGV4dCh0ZXh0LCB4LCB5LCBzKToKKysgICAgeCA9IGludCh4KQorKyAgICB5ID0gaW50KHkpCisgICAgIGV4dGVuZCA9IHggKyBsZW4ocykgLSBsZW4odGV4dFt5XSkKKyAgICAgaWYgZXh0ZW5kID4gMDoKKyAgICAgICAgIHRleHRbeV0gKz0gJyAnICogZXh0ZW5kCistLSAKKzIuNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDYtUHl0aG9uMy1jb21wYXRpYmlsaXR5LW1hdGgtZXJyb3ItY29tcGF0aWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDYtUHl0aG9uMy1jb21wYXRpYmlsaXR5LW1hdGgtZXJyb3ItY29tcGF0aWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDkwNWNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNi1QeXRob24zLWNvbXBhdGliaWxpdHktbWF0aC1lcnJvci1jb21wYXRpYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gM2E5ZmNmMWM4ZjYwYzE2MGMyODJjOTc1NWVlMWM3ZjlmN2UxMTNjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNi84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IG1hdGggZXJyb3IgY29tcGF0aWJpbGl0eQorCitDb21taXQgM2ZhNWFhNDI5NDM3N2UwZjM1MjY3OTM2ZDBjNWNhZWEzZTYxZGI0OCBmcm9tCitodHRwczovL2dpdGh1Yi5jb20vb3BlbnZzd2l0Y2gvb3ZzLmdpdAorCitUaGUgd2F5IG1hdGggaXMgaGFuZGxlZCB3aXRoIHR5cGluZyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVudCBpbiBweXRob24zLgorCislIHB5dGhvbjI8PEVPRgoreD0xMAoreT04CitwcmludCgoeCArICh5IC0gMSkpIC8geSAqIHkpCitFT0YKKzE2CisKK3B5dGhvbjM8PEVPRgoreD0xMAoreT04CitwcmludCgoeCArICh5IC0gMSkpIC8geSAqIHkpCitFT0YKKzE3LjAKKworU28gd2UgbmVlZCB0byBmb3JjZSBhbiBpbnRlZ2VyIGZvciB0aGUgcm91bmQgZnVuY3Rpb24gYXMgZm9sbG93cyBhbmQKK21haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBweXRob24yLgorCitweXRob24zPDxFT0YKK3g9MTAKK3k9OAorcHJpbnQoaW50KCh4ICsgKHkgLSAxKSkgLyB5KSAqIHkpCitFT0YKKzE2CisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW4gUGZhZmYgPGJscEBvdm4ub3JnPgorLS0tCisgYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZXh0cmFjdC1vZnAtYWN0aW9ucyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCitpbmRleCBjMTEyOTdjLi5iZDcxMzFmIDEwMDc1NQorLS0tIGEvYnVpbGQtYXV4L2V4dHJhY3Qtb2ZwLWFjdGlvbnMKKysrKyBiL2J1aWxkLWF1eC9leHRyYWN0LW9mcC1hY3Rpb25zCitAQCAtMzUsNyArMzUsNyBAQCBsaW5lID0gIiIKKyBhcmdfc3RydWN0cyA9IHNldCgpCisgCisgZGVmIHJvdW5kX3VwKHgsIHkpOgorLSAgICByZXR1cm4gKHggKyAoeSAtIDEpKSAvIHkgKiB5CisrICAgIHJldHVybiBpbnQoKHggKyAoeSAtIDEpKSAvIHkpICogeQorIAorIGRlZiBvcGVuX2ZpbGUoZm4pOgorICAgICBnbG9iYWwgZmlsZV9uYW1lCistLSAKKzIuNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDctUHl0aG9uMy1jb21wYXRpYmlsaXR5LXVuaWNvZGUtdG8tc3RyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwNy1QeXRob24zLWNvbXBhdGliaWxpdHktdW5pY29kZS10by1zdHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFhMzJiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDctUHl0aG9uMy1jb21wYXRpYmlsaXR5LXVuaWNvZGUtdG8tc3RyLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMmZlNThmODdiMDBkMGVjMjRkNjk5NzkzMGQwYmNkYjEzMGM4NDM5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IEp1biAyMDE3IDIwOjMzOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNy84XSBQeXRob24zIGNvbXBhdGliaWxpdHk6IHVuaWNvZGUgdG8gc3RyCisKK0NvbW1pdCA3NDMwOTU5ZDRhZDE3ZGI4OWI4Mzg3YzNhZWY1OGM4YjIzMGNhZDEwIGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVudnN3aXRjaC9vdnMuZ2l0CisKK1doZW4gdHJhbnNpdGlvbmluZyBmcm9tIHB5dGhvbjIgdG8gcHl0aG9uMyB0aGUgZm9sbG93aW5nIHR5cGUgY2xhc3MKK2NoYW5nZXMgb2NjdXJlZDoKKworcHl0aG9uMiAtPiBweXRob24zCit1bmljb2RlIC0+IHN0cgorc3RyIC0+IGJ5dGVzCisKK1RoYXQgbWVhbnMgd2UgaGF2ZSB0byBjaGVjayB0aGUgcHl0aG9uIHZlcnNpb24gYW5kIGRvIHRoZSByaWdodCB0eXBlCitjaGVjayBweXRob24zIHdpbGwgdGhyb3cgYW4gZXJyb3Igd2hlbiBpdCB0cmllcyB0byB1c2UgdGhlIHVuaWNvZGUKK3R5cGUgYmVjYXVzZSBpdCBkb2Vzbid0IGV4aXN0LgorCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuIFBmYWZmIDxibHBAb3ZuLm9yZz4KKy0tLQorIG92c2RiL292c2RiLWRvYyB8IDEyICsrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9vdnNkYi9vdnNkYi1kb2MgYi9vdnNkYi9vdnNkYi1kb2MKK2luZGV4IDkxOGU4OGEuLjQwNmMyOTMgMTAwNzU1CistLS0gYS9vdnNkYi9vdnNkYi1kb2MKKysrKyBiL292c2RiL292c2RiLWRvYworQEAgLTY1LDkgKzY1LDE1IEBAIGRlZiBjb2x1bW5Hcm91cFRvTnJvZmYodGFibGUsIGdyb3VwWG1sLCBkb2N1bWVudGVkX2NvbHVtbnMpOgorICAgICAgICAgICAgICAgICBpZiBub2RlLmhhc0F0dHJpYnV0ZSgndHlwZScpOgorICAgICAgICAgICAgICAgICAgICAgdHlwZV9zdHJpbmcgPSBub2RlLmF0dHJpYnV0ZXNbJ3R5cGUnXS5ub2RlVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfanNvbiA9IG92cy5qc29uLmZyb21fc3RyaW5nKHN0cih0eXBlX3N0cmluZykpCistICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKHR5cGVfanNvbikgaW4gKHN0ciwgdW5pY29kZSk6CistICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IuRXJyb3IoIiVzICVzOiVzIGhhcyBpbnZhbGlkICd0eXBlJzogJXMiIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHRhYmxlLm5hbWUsIG5hbWUsIGtleSwgdHlwZV9qc29uKSkKKysgICAgICAgICAgICAgICAgICAgICMgcHkyIC0+IHB5MyBtZWFucyBzdHIgLT4gYnl0ZXMgYW5kIHVuaWNvZGUgLT4gc3RyCisrICAgICAgICAgICAgICAgICAgICB0cnk6CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZSh0eXBlX2pzb24pIGluIChzdHIsIHVuaWNvZGUpOgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5FcnJvcigiJXMgJXM6JXMgaGFzIGludmFsaWQgJ3R5cGUnOiAlcyIgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHRhYmxlLm5hbWUsIG5hbWUsIGtleSwgdHlwZV9qc29uKSkKKysgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKHR5cGVfanNvbikgaW4gKGJ5dGVzLCBzdHIpOgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvci5FcnJvcigiJXMgJXM6JXMgaGFzIGludmFsaWQgJ3R5cGUnOiAlcyIgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHRhYmxlLm5hbWUsIG5hbWUsIGtleSwgdHlwZV9qc29uKSkKKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfID0gb3ZzLmRiLnR5cGVzLkJhc2VUeXBlLmZyb21fanNvbih0eXBlX2pzb24pCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICB0eXBlXyA9IGNvbHVtbi50eXBlLnZhbHVlCistLSAKKzIuNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDgtQVVUSE9SUy1BZGQtSmFzb24tV2Vzc2VsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvMDAwOC1BVVRIT1JTLUFkZC1KYXNvbi1XZXNzZWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJjMmJlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0LzAwMDgtQVVUSE9SUy1BZGQtSmFzb24tV2Vzc2VsLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gYTMyODlhZGQ4MzY4ZTBjOTcwYWUxYzFjODRmNWRmMWY4MTdlZDQzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbiBQZmFmZiA8YmxwQG92bi5vcmc+CitEYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTQ6MDE6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA4LzhdIEFVVEhPUlM6IEFkZCBKYXNvbiBXZXNzZWwuCisKK0NvbW1pdCBhOTFjNGNmYWY4NjM3MThiYzk0ZmI5Yzg4OTM5YmQwYjAzODVhNmZlIGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVudnN3aXRjaC9vdnMuZ2l0CisKK1NpZ25lZC1vZmYtYnk6IEJlbiBQZmFmZiA8YmxwQG92bi5vcmc+CistLS0KKyBBVVRIT1JTLnJzdCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvQVVUSE9SUy5yc3QgYi9BVVRIT1JTLnJzdAoraW5kZXggNjNlNmE4ZC4uZDBkYzcwZCAxMDA2NDQKKy0tLSBhL0FVVEhPUlMucnN0CisrKysgYi9BVVRIT1JTLnJzdAorQEAgLTE1Niw2ICsxNTYsNyBAQCBKYW4gU2NoZXVyaWNoICAgICAgICAgICAgICAgICAgIGphbi5zY2hldXJpY2hAZXJpY3Nzb24uY29tCisgSmFuIFZhbnN0ZWVua2lzdGUgICAgICAgICAgICAgICBqYW5AdnN0b25lLmV1CisgSmFybm8gUmFqYWhhbG1lICAgICAgICAgICAgICAgICBqYXJub0Bvdm4ub3JnCisgSmFzb24gS8O2bGtlciAgICAgICAgICAgICAgICAgICAgamFzb25Aa29lbGtlci5uZXQKKytKYXNvbiBXZXNzZWwgICAgICAgICAgICAgICAgICAgIGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tCisgSmFzcGVyIENhcGVsICAgICAgICAgICAgICAgICAgICBqYXNwZXJAY2FwZWwudHYKKyBKZWFuIFRvdXJyaWxoZXMgICAgICAgICAgICAgICAgIGp0QGhwbC5ocC5jb20KKyBKZXJlbXkgU3RyaWJsaW5nICAgICAgICAgICAgICAgIHN0cmliQG5pY2lyYS5jb20KKy0tIAorMi41LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvQ1ZFLTIwMTctOTI2My5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L0NWRS0yMDE3LTkyNjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZjM2FhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L0NWRS0yMDE3LTkyNjMucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorQSBidWdneSBvciBtYWxpY2lvdXMgc3dpdGNoIGNvdWxkIHNlbmQgYSByb2xlIHN0YXR1cyBtZXNzYWdlIHdpdGggYSBiYWQKK3JlYXNvbiBjb2RlLCB3aGljaCBpZiBwcmludGVkIGJ5IE9WUyB3b3VsZCBjYXVzZSBpdCB0byBhYm9ydC4gIFRoaXMgZml4ZXMKK3RoZSBwcm9ibGVtLgorCitDVkU6IENWRS0yMDE3LTkyNjMKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1JlcG9ydGVkLWJ5OiBCaGFyZ2F2YSBTaGFzdHJ5IDxic2hhc3RyeSBhdCBzZWMudC1sYWJzLnR1LWJlcmxpbi5kZT4KK1NpZ25lZC1vZmYtYnk6IEJlbiBQZmFmZiA8YmxwIGF0IG92bi5vcmc+CistLS0KKyBsaWIvb2ZwLXByaW50LmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9vZnAtcHJpbnQuYyBiL2xpYi9vZnAtcHJpbnQuYworaW5kZXggN2NhOTUzMTAwNTM5Li4xOTMyYmFmNDg3MWYgMTAwNjQ0CistLS0gYS9saWIvb2ZwLXByaW50LmMKKysrKyBiL2xpYi9vZnAtcHJpbnQuYworQEAgLTIxNDcsNyArMjE0Nyw4IEBAIG9mcF9wcmludF9yb2xlX3N0YXR1c19tZXNzYWdlKHN0cnVjdCBkcyAqc3RyaW5nLCBjb25zdCBzdHJ1Y3Qgb2ZwX2hlYWRlciAqb2gpCisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBPRlBDUlJfTl9SRUFTT05TOgorICAgICBkZWZhdWx0OgorLSAgICAgICAgT1ZTX05PVF9SRUFDSEVEKCk7CisrICAgICAgICBkc19wdXRfY3N0cihzdHJpbmcsICIodW5rbm93bikiKTsKKysgICAgICAgIGJyZWFrOworICAgICB9CisgfQorIAorLS0gCisyLjEwLjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L29wZW52c3dpdGNoLWFkZC1wdGVzdC1jMjk4ZWY3ODFjMmQzNWQ5MzlmZTE2M2NiYzJmNDFlYTdiMWNiOGQxLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC1naXQvb3BlbnZzd2l0Y2gtYWRkLXB0ZXN0LWIyOWNiODllOWU5ZmUzMTE5YjJlNWRkNWQ0ZmI3OTE0MTYzNWI3Y2MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2gtZ2l0L29wZW52c3dpdGNoLWFkZC1wdGVzdC1jMjk4ZWY3ODFjMmQzNWQ5MzlmZTE2M2NiYzJmNDFlYTdiMWNiOGQxLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLWdpdC9vcGVudnN3aXRjaC1hZGQtcHRlc3QtYjI5Y2I4OWU5ZTlmZTMxMTliMmU1ZGQ1ZDRmYjc5MTQxNjM1YjdjYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLXZpcnR1YWxpemF0aW9uL3JlY2lwZXMtbmV0d29ya2luZy9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLmluYwppbmRleCAxZjBiNTJiLi41OGUwZmNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoLmluYwpAQCAtMTEsMTEgKzExLDExIEBACiBTRUNUSU9OID0gIm5ldHdvcmtpbmciCiBMSUNFTlNFID0gIkFwYWNoZS0yIgogCi1ERVBFTkRTICs9ICJicmlkZ2UtdXRpbHMgb3BlbnNzbCBweXRob24gcGVybCBweXRob24tc2l4LW5hdGl2ZSBjb3JldXRpbHMtbmF0aXZlIgorREVQRU5EUyArPSAiYnJpZGdlLXV0aWxzIG9wZW5zc2wgcHl0aG9uMyBwZXJsIHB5dGhvbjMtc2l4LW5hdGl2ZSBjb3JldXRpbHMtbmF0aXZlIgogCiBSREVQRU5EU18ke1BOfSArPSAidXRpbC1saW51eC11dWlkZ2VuIHV0aWwtbGludXgtbGlidXVpZCBjb3JldXRpbHMgXAotCXB5dGhvbiBwZXJsIHBlcmwtbW9kdWxlLXN0cmljdCAke1BOfS1zd2l0Y2ggXAotICAgICAgICBiYXNoIHB5dGhvbi10d2lzdGVkIHB5dGhvbi1zaXgiCisgICAgICAgIHB5dGhvbjMgcGVybCBwZXJsLW1vZHVsZS1zdHJpY3QgJHtQTn0tc3dpdGNoIFwKKyAgICAgICAgYmFzaCBweXRob24zLXR3aXN0ZWQgcHl0aG9uMy1zaXgiCiBSREVQRU5EU18ke1BOfS10ZXN0Y29udHJvbGxlciA9ICIke1BOfSBsc2IgJHtQTn0tcGtpIgogUkRFUEVORFNfJHtQTn0tc3dpdGNoID0gIiR7UE59IG9wZW5zc2wgcHJvY3BzIHV0aWwtbGludXgtdXVpZGdlbiIKIFJERVBFTkRTXyR7UE59LXBraSA9ICIke1BOfSIKQEAgLTM0LDcgKzM0LDcgQEAKIAkiCiAKIEVYVFJBX09FQ09ORiArPSAiXAotCVBZVEhPTj1weXRob24gXAorCVBZVEhPTj1weXRob24zIFwKIAlQWVRIT04zPXB5dGhvbjMgXAogCVBFUkw9JHtiaW5kaXJ9L3BlcmwgXAogCSIKQEAgLTcwLDcgKzcwLDcgQEAKIEZJTEVTXyR7UE59ICs9ICIvcnVuIgogCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS8iCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCBweXRob24zbmF0aXZlCiAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3dpdGNoIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXN3aXRjaCA9ICIgXApAQCAtODYsNiArODYsMTIgQEAKIElOSVRTQ1JJUFRfTkFNRV8ke1BOfS10ZXN0Y29udHJvbGxlciA9ICJvcGVudnN3aXRjaC10ZXN0Y29udHJvbGxlciIKIElOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXRlc3Rjb250cm9sbGVyID0gImRlZmF1bHRzIDcyIgogCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFdvcmsgYXJvdW5kIHRoZSBmb3IgTWFrZWZpbGUgQ0M9JChpZiAuLi4uKSBieSBzd2FwcGluZyBvdXQgYW55CisJIyAiLVdhLCIgYXNzZW1ibHkgZGlyZWN0aXZlcyB3aXRoICItWGFzc2VtYmxlcgorCUNDPWBlY2hvICcke0NDfScgfCBzZWQgJ3MvLVdhLC8tWGFzc2VtYmxlciAvZydgCit9CisKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvCiAJaW5zdGFsbCAtbSA2NjAgJHtXT1JLRElSfS9vcGVudnN3aXRjaC1zd2l0Y2gtc2V0dXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvb3BlbnZzd2l0Y2gtc3dpdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtdmlydHVhbGl6YXRpb24vcmVjaXBlcy1uZXR3b3JraW5nL29wZW52c3dpdGNoL29wZW52c3dpdGNoX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2hfZ2l0LmJiCmluZGV4IDFmYjgyYWUuLmI0YWFiMzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2hfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS12aXJ0dWFsaXphdGlvbi9yZWNpcGVzLW5ldHdvcmtpbmcvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2hfZ2l0LmJiCkBAIC0zLDIwICszLDIwIEBACiBERVBFTkRTICs9ICJ2aXJ0dWFsL2tlcm5lbCIKIAogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIlwKLQlweXRob24tbG9nZ2luZyBweXRob24tc3lzbG9nIHB5dGhvbi1hcmdwYXJzZSBweXRob24taW8gXAotCXB5dGhvbi1mY250bCBweXRob24tc2hlbGwgcHl0aG9uLWxhbmcgcHl0aG9uLXhtbCBweXRob24tbWF0aCBcCi0JcHl0aG9uLWRhdGV0aW1lIHB5dGhvbi1uZXRjbGllbnQgcHl0aG9uIHNlZCBcCisJcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc3lzbG9nIHB5dGhvbjMtYXJncGFyc2UgcHl0aG9uMy1pbyBcCisJcHl0aG9uMy1mY250bCBweXRob24zLXNoZWxsIHB5dGhvbjMtbGFuZyBweXRob24zLXhtbCBweXRob24zLW1hdGggXAorCXB5dGhvbjMtZGF0ZXRpbWUgcHl0aG9uMy1uZXRjbGllbnQgcHl0aG9uMyBzZWQgXAogCWxkZCBwZXJsLW1vZHVsZS1zb2NrZXQgcGVybC1tb2R1bGUtY2FycCBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0JcGVybC1tb2R1bGUteHNsb2FkZXIgcHl0aG9uLW5ldHNlcnZlciBweXRob24tdGhyZWFkaW5nIFwKLQlweXRob24tcmVzb3VyY2UgcHl0aG9uLXN1YnByb2Nlc3MgXAorCXBlcmwtbW9kdWxlLXhzbG9hZGVyIHB5dGhvbjMtbmV0c2VydmVyIHB5dGhvbjMtdGhyZWFkaW5nIFwKKwlweXRob24zLXJlc291cmNlIHB5dGhvbjMtc3VicHJvY2VzcyBmaW5kdXRpbHMgd2hpY2ggXAogCSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKLVBWID0gIjIuNy4wKyR7U1JDUkVWfSIKK1BWID0gIjIuNy4xKyR7U1JDUkVWfSIKIAogRklMRVNFWFRSQVBBVEhTX2FwcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfS1naXQ6IgogCi1TUkNSRVYgPSAiYzI5OGVmNzgxYzJkMzVkOTM5ZmUxNjNjYmMyZjQxZWE3YjFjYjhkMSIKK1NSQ1JFViA9ICJiMjljYjg5ZTllOWZlMzExOWIyZTVkZDVkNGZiNzkxNDE2MzViN2NjIgogU1JDX1VSSSA9ICJmaWxlOi8vb3BlbnZzd2l0Y2gtc3dpdGNoIFwKICAgICAgICAgICAgZmlsZTovL29wZW52c3dpdGNoLXN3aXRjaC1zZXR1cCBcCiAgICAgICAgICAgIGZpbGU6Ly9vcGVudnN3aXRjaC10ZXN0Y29udHJvbGxlciBcCkBAIC0yOSwxMiArMjksMzAgQEAKICAgICAgICAgICAgZmlsZTovL3B5dGhvbi1tYWtlLXJlbWFpbmluZy1zY3JpcHRzLXVzZS11c3ItYmluLWVudi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS10aGUtbGludXgtaWZfcGFja2V0LmgtSW50ZXJmYWNlLWRpcmVjdGx5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItRGVmaW5lLVdBSVRfQU5ZLWlmLW5vdC1wcm92aWRlZC1ieS1zeXN0ZW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTI2My5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tc3dpdGNoLXJlbWFpbmluZy1zY3JpcHRzLXRvLXVzZS1weXRob24zLnBhdGNoIFwKICAgICAgICAgICAgIgogCisjIFRlbXBvcmFyaWx5IGJhY2twb3J0IHBhdGNoZXMgdG8gYmV0dGVyIHN1cHBvcnQgcHkzLiBUaGVzZSBoYXZlIGJlZW4KKyMgbWVyZ2VkIHVwc3RyZWFtIGJ1dCBhcmUgbm90IHBhcnQgb2YgdjIuNy4xLgorU1JDX1VSSSArPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUHl0aG9uMy1jb21wYXRpYmlsaXR5LUNvbnZlcnQtcHJpbnQtc3RhdGVtZW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGNlcHRpb24tY2xlYW51cC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVB5dGhvbjMtY29tcGF0aWJpbGl0eS1leGVjZmlsZS10by1leGVjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtUHl0aG9uMy1jb21wYXRpYmlsaXR5LWl0ZXJpdGVtcy10by1pdGVtcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1maXgtaW50ZWdlci1wcm9ibGVtcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LVB5dGhvbjMtY29tcGF0aWJpbGl0eS1tYXRoLWVycm9yLWNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1QeXRob24zLWNvbXBhdGliaWxpdHktdW5pY29kZS10by1zdHIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1BVVRIT1JTLUFkZC1KYXNvbi1XZXNzZWwucGF0Y2ggXAorIgorCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xN2IyYzlkNGM3MDg1M2EwOWMwZTE0MzEzNzc1NGIzNSIKIAotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tkcGRrXSA9ICItLXdpdGgtZHBkaz0ke1NUQUdJTkdfRElSX1RBUkdFVH0vb3B0L2RwZGsvJHtUQVJHRVRfQVJDSH0tbmF0aXZlLWxpbnV4YXBwLWdjYywsZHBkaywiCitEUERLX0lOU1RBTExfRElSID89ICIvb3B0L2RwZGsiCisKK1BBQ0tBR0VDT05GSUcgPz0gImxpYmNhcC1uZyIKK1BBQ0tBR0VDT05GSUdbZHBka10gPSAiLS13aXRoLWRwZGs9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtEUERLX0lOU1RBTExfRElSfS9zaGFyZS8ke1RBUkdFVF9BUkNIfS1uYXRpdmUtbGludXhhcHAtZ2NjLCxkcGRrLGRwZGsiCitQQUNLQUdFQ09ORklHW2xpYmNhcC1uZ10gPSAiLS1lbmFibGUtbGliY2FwbmcsLS1kaXNhYmxlLWxpYmNhcG5nLGxpYmNhcC1uZywiCiAKICMgRG9uJ3QgY29tcGlsZSBrZXJuZWwgbW9kdWxlcyBieSBkZWZhdWx0IHNpbmNlIGl0IGhlYXZpbHkgZGVwZW5kcyBvbgogIyBrZXJuZWwgdmVyc2lvbi4gVXNlIHRoZSBpbi1rZXJuZWwgbW9kdWxlIGZvciBub3cuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1MjY3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotUG9reQotPT09PQotCi1Qb2t5IGlzIGFuIGludGVncmF0aW9uIG9mIHZhcmlvdXMgY29tcG9uZW50cyB0byBmb3JtIGEgY29tcGxldGUgcHJlcGFja2FnZWQKLWJ1aWxkIHN5c3RlbSBhbmQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuIEl0IGZlYXR1cmVzIHN1cHBvcnQgZm9yIGJ1aWxkaW5nCi1jdXN0b21pc2VkIGVtYmVkZGVkIGRldmljZSBzdHlsZSBpbWFnZXMuIFRoZXJlIGFyZSByZWZlcmVuY2UgZGVtbyBpbWFnZXMKLWZlYXR1cmluZyBhIFgxMS9NYXRjaGJveC9HVEsgdGhlbWVkIFVJIGNhbGxlZCBTYXRvLiBUaGUgc3lzdGVtIHN1cHBvcnRzCi1jcm9zcy1hcmNoaXRlY3R1cmUgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgdXNpbmcgUUVNVSBlbXVsYXRpb24gYW5kIGEKLXN0YW5kYWxvbmUgdG9vbGNoYWluIGFuZCBTREsgd2l0aCBJREUgaW50ZWdyYXRpb24uCi0KLUFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlIHNwZWNpZmljcyBvZiBoYXJkd2FyZSB0aGF0IFBva3kgc3VwcG9ydHMKLWlzIGF2YWlsYWJsZSBpbiBSRUFETUUuaGFyZHdhcmUuIEZ1cnRoZXIgaGFyZHdhcmUgc3VwcG9ydCBjYW4gZWFzaWx5IGJlIGFkZGVkCi1pbiB0aGUgZm9ybSBvZiBsYXllcnMgd2hpY2ggZXh0ZW5kIHRoZSBzeXN0ZW1zIGNhcGFiaWxpdGllcyBpbiBhIG1vZHVsYXIgd2F5LgotCi1BcyBhbiBpbnRlZ3JhdGlvbiBsYXllciBQb2t5IGNvbnNpc3RzIG9mIHNldmVyYWwgdXBzdHJlYW0gcHJvamVjdHMgc3VjaCBhcyAKLUJpdEJha2UsIE9wZW5FbWJlZGRlZC1Db3JlLCBZb2N0byBkb2N1bWVudGF0aW9uIGFuZCB2YXJpb3VzIHNvdXJjZXMgb2YgaW5mb3JtYXRpb24gCi1lLmcuIGZvciB0aGUgaGFyZHdhcmUgc3VwcG9ydC4gUG9reSBpcyBpbiB0dXJuIGEgY29tcG9uZW50IG9mIHRoZSBZb2N0byBQcm9qZWN0LgotCi1UaGUgWW9jdG8gUHJvamVjdCBoYXMgZXh0ZW5zaXZlIGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIHN5c3RlbSBpbmNsdWRpbmcgYSAKLXJlZmVyZW5jZSBtYW51YWwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0OgotICAgIGh0dHA6Ly95b2N0b3Byb2plY3Qub3JnL2RvY3VtZW50YXRpb24KLQotT3BlbkVtYmVkZGVkLUNvcmUgaXMgYSBsYXllciBjb250YWluaW5nIHRoZSBjb3JlIG1ldGFkYXRhIGZvciBjdXJyZW50IHZlcnNpb25zCi1vZiBPcGVuRW1iZWRkZWQuIEl0IGlzIGRpc3Ryby1sZXNzIChjYW4gYnVpbGQgYSBmdW5jdGlvbmFsIGltYWdlIHdpdGgKLURJU1RSTyA9ICJub2Rpc3RybyIpIGFuZCBjb250YWlucyBvbmx5IGVtdWxhdGVkIG1hY2hpbmUgc3VwcG9ydC4KLQotRm9yIGluZm9ybWF0aW9uIGFib3V0IE9wZW5FbWJlZGRlZCwgc2VlIHRoZSBPcGVuRW1iZWRkZWQgd2Vic2l0ZToKLSAgICBodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmcvCi0KLVdoZXJlIHRvIFNlbmQgUGF0Y2hlcwotPT09PT09PT09PT09PT09PT09PT09Ci0KLUFzIFBva3kgaXMgYW4gaW50ZWdyYXRpb24gcmVwb3NpdG9yeSAoYnVpbHQgdXNpbmcgYSB0b29sIGNhbGxlZCBjb21iby1sYXllciksCi1wYXRjaGVzIGFnYWluc3QgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBzaG91bGQgYmUgc2VudCB0byB0aGVpciByZXNwZWN0aXZlCi11cHN0cmVhbXM6Ci0KLWJpdGJha2U6Ci0gICAgR2l0IHJlcG9zaXRvcnk6IGh0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlLwotICAgIE1haWxpbmcgbGlzdDogYml0YmFrZS1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnCi0KLWRvY3VtZW50YXRpb246Ci0gICAgR2l0IHJlcG9zaXRvcnk6IGh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3lvY3RvLWRvY3MvCi0gICAgTWFpbGluZyBsaXN0OiB5b2N0b0B5b2N0b3Byb2plY3Qub3JnCi0KLW1ldGEtcG9reSwgbWV0YS15b2N0by1ic3A6Ci0gICAgR2l0IHJlcG9zaXRvcnk6IGh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEteW9jdG8oLWJzcCkKLSAgICBNYWlsaW5nIGxpc3Q6IHBva3lAeW9jdG9wcm9qZWN0Lm9yZwotCi1FdmVyeXRoaW5nIGVsc2Ugc2hvdWxkIGJlIHNlbnQgdG8gdGhlIE9wZW5FbWJlZGRlZCBDb3JlIG1haWxpbmcgbGlzdC4gIElmIGluCi1kb3VidCwgY2hlY2sgdGhlIG9lLWNvcmUgZ2l0IHJlcG9zaXRvcnkgZm9yIHRoZSBjb250ZW50IHlvdSBpbnRlbmQgdG8gbW9kaWZ5LgotQmVmb3JlIHNlbmRpbmcsIGJlIHN1cmUgdGhlIHBhdGNoZXMgYXBwbHkgY2xlYW5seSB0byB0aGUgY3VycmVudCBvZS1jb3JlIGdpdAotcmVwb3NpdG9yeS4KLQotICAgIEdpdCByZXBvc2l0b3J5OiBodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvCi0gICAgTWFpbGluZyBsaXN0OiBvcGVuZW1iZWRkZWQtY29yZUBsaXN0cy5vcGVuZW1iZWRkZWQub3JnCi0KLU5vdGU6IFRoZSBzY3JpcHRzIGRpcmVjdG9yeSBzaG91bGQgYmUgdHJlYXRlZCB3aXRoIGV4dHJhIGNhcmUgYXMgaXQgaXMgYSBtaXggb2YKLW9lLWNvcmUgYW5kIHBva3ktc3BlY2lmaWMgZmlsZXMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLkxTQiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUuTFNCCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZGNhM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLkxTQgpAQCAtMCwwICsxLDI1IEBACitPRS1Db3JlIGFpbXMgdG8gYmUgYWJsZSB0byBwcm92aWRlIGJhc2ljIExTQiBjb21wYXRpYmxlIGltYWdlcy4gVGhlcmUKK2FyZSBzb21lIGNoYWxsZW5nZXMgZm9yIE9FIGFzIExTQiBpc24ndCBhbHdheXMgMTAwJSByZWxldmFudCB0byBpdHMKK3RhcmdldCBlbWJlZGRlZCBhbmQgSW9UIGF1ZGllbmNlcy4gCisKK09uZSBjaGFsbGVuZ2UgaXMgdGhhdCB0aGUgTFNCIHNwZWMgaXMgbm8gbG9uZ2VyIGJlaW5nIGFjdGl2ZWx5CitkZXZlbG9wZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9MaW51eFN0YW5kYXJkQmFzZS9sc2JdIGFuZCBoYXMgCitjb21wb25lbnRzIHdoaWNoIGFyZSBlbmQgb2YgbGlmZSBvciBzaWduaWZpY2FudGx5IGRhdGVkLiBPRSAKK3RoZXJlZm9yZSBwcm92aWRlcyBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGZvbGxvd2luZyBjYXZlYXRzOgorCisqIFF0NCBpcyBwcm92aWRlZCBieSB0aGUgc2VwYXJhdGUgbWV0YS1xdDQgbGF5ZXIuIEl0cyBub3RlZCB0aGF0IFF0NCAKKyAgaXMgZW5kIG9mIGxpZmUgYW5kIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoZSBjb3JlIHByb2plY3QgcmVndWxhcmx5IAorICB0ZXN0cyBhbnkgbG9uZ2VyLiBVc2VycyBhcmUgcmVjb21tZW5kZWQgdG8gZ3JvdXAgdG9nZXRoZXIgdG8gc3VwcG9ydAorICBtYWludGVuYW5jZSBvZiB0aGF0IGxheWVyLiBbaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbWV0YS1xdDQvXQorCisqIG1haWx4IGhhcyBiZWVuIGRyb3BwZWQgc2luY2UgaXRzIG5vIGxvbmdlciBiZWluZyBkZXZlbG9wZWQgdXBzdHJlYW0gCisgIGFuZCB0aGVyZSBhcmUgYmV0dGVyLCBtb3JlIG1vZGVybiByZXBsYWNlbWVudHMgc3VjaCBhcyBzLW5haWwgCisgIChodHRwOi8vc2Rhb2Rlbi5ldS9jb2RlLmh0bWwpIG9yIG1haWx1dGlscyAoaHR0cDovL21haWx1dGlscy5vcmcvKS4KKworKiBBIGZldyBwZXJsIG1vZHVsZXMgdGhhdCB3ZXJlIHJlcXVpcmVkIGJ5IExTQiA0LnggYXJlbid0IHByb3ZpZGVkOgorICBsaWJjbGFzcy1pc2EsIGxpYmVudiwgbGliZHVtcHZhbHVlLCBsaWJmaWxlLWNoZWNrdHJlZSwKKyAgbGliaTE4bi1jb2xsYXRlLCBsaWJwb2QtcGxhaW5lci4KKworKiBsaWJwbmcgMS4yIGlzbid0IHByb3ZpZGVkOyBvZS1jb3JlIGluY2x1ZGVzIHRoZSBsYXRlc3QgcmVsZWFzZSBvZiBsaWJwbmcKKyAgaW5zdGVhZC4KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5oYXJkd2FyZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUuaGFyZHdhcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2Y2NmNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5oYXJkd2FyZQorKysgL2Rldi9udWxsCkBAIC0xLDQyOSArMCwwIEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgIFBva3kgSGFyZHdhcmUgUkVBRE1FCi0gICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09Ci0KLVRoaXMgZmlsZSBnaXZlcyBkZXRhaWxzIGFib3V0IHVzaW5nIFBva3kgd2l0aCB0aGUgcmVmZXJlbmNlIG1hY2hpbmVzCi1zdXBwb3J0ZWQgb3V0IG9mIHRoZSBib3guIEEgZnVsbCBsaXN0IG9mIHN1cHBvcnRlZCByZWZlcmVuY2UgdGFyZ2V0IG1hY2hpbmVzCi1jYW4gYmUgZm91bmQgYnkgbG9va2luZyBpbiB0aGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzOgotCi0gICBtZXRhL2NvbmYvbWFjaGluZS8KLSAgIG1ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS8KLQotSWYgeW91IGFyZSBpbiBkb3VidCBhYm91dCB1c2luZyBQb2t5L09wZW5FbWJlZGRlZCB3aXRoIHlvdXIgaGFyZHdhcmUsIGNvbnN1bHQKLXRoZSBkb2N1bWVudGF0aW9uIGZvciB5b3VyIGJvYXJkL2RldmljZS4KLQotU3VwcG9ydCBmb3IgYWRkaXRpb25hbCBkZXZpY2VzIGlzIG5vcm1hbGx5IGFkZGVkIGJ5IGNyZWF0aW5nIEJTUCBsYXllcnMgLSBmb3IKLW1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSB0aGUgWW9jdG8gQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzCi1HdWlkZSAtIGRvY3VtZW50YXRpb24gc291cmNlIGlzIGluIGRvY3VtZW50YXRpb24vYnNwZ3VpZGUgb3IgZG93bmxvYWQgdGhlIFBERgotZnJvbToKLQotICAgaHR0cDovL3lvY3RvcHJvamVjdC5vcmcvZG9jdW1lbnRhdGlvbgotCi1TdXBwb3J0IGZvciBwaHlzaWNhbCByZWZlcmVuY2UgaGFyZHdhcmUgaGFzIG5vdyBiZWVuIHNwbGl0IG91dCBpbnRvIGEKLW1ldGEteW9jdG8tYnNwIGxheWVyIHdoaWNoIGNhbiBiZSByZW1vdmVkIHNlcGFyYXRlbHkgZnJvbSBvdGhlciBsYXllcnMgaWYgbm90Ci1uZWVkZWQuCi0KLQotUUVNVSBFbXVsYXRpb24gVGFyZ2V0cwotPT09PT09PT09PT09PT09PT09PT09PQotCi1UbyBzaW1wbGlmeSBkZXZlbG9wbWVudCwgdGhlIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyBidWlsZGluZyBpbWFnZXMgdG8KLXdvcmsgd2l0aCB0aGUgUUVNVSBlbXVsYXRvciBpbiBzeXN0ZW0gZW11bGF0aW9uIG1vZGUuIFNldmVyYWwgYXJjaGl0ZWN0dXJlcwotYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6Ci0KLSAgKiBBUk0gKHFlbXVhcm0pCi0gICogeDg2IChxZW11eDg2KQotICAqIHg4Ni02NCAocWVtdXg4Ni02NCkKLSAgKiBQb3dlclBDIChxZW11cHBjKQotICAqIE1JUFMgKHFlbXVtaXBzKQotCi1Vc2Ugb2YgdGhlIFFFTVUgaW1hZ2VzIGlzIGNvdmVyZWQgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLVRoZSBhcHByb3ByaWF0ZSBNQUNISU5FIHZhcmlhYmxlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRhcmdldCBpcyBnaXZlbgotaW4gYnJhY2tldHMuCi0KLQotSGFyZHdhcmUgUmVmZXJlbmNlIEJvYXJkcwotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgZm9sbG93aW5nIGJvYXJkcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBtZXRhLXlvY3RvLWJzcCBsYXllcjoKLQotICAqIFRleGFzIEluc3RydW1lbnRzIEJlYWdsZWJvbmUgKGJlYWdsZWJvbmUpCi0gICogRnJlZXNjYWxlIE1QQzgzMTVFLVJEQiAobXBjODMxNWUtcmRiKQotCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGJvYXJkJ3Mgc2VjdGlvbiBiZWxvdy4gVGhlIGFwcHJvcHJpYXRlIE1BQ0hJTkUKLXZhcmlhYmxlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJvYXJkIGlzIGdpdmVuIGluIGJyYWNrZXRzLgotCi1SZWZlcmVuY2UgQm9hcmQgTWFpbnRlbmFuY2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1TZW5kIHB1bGwgcmVxdWVzdHMsIHBhdGNoZXMsIGNvbW1lbnRzIG9yIHF1ZXN0aW9ucyBhYm91dCBtZXRhLXlvY3RvLWJzcHMgdG8gcG9reUB5b2N0b3Byb2plY3Qub3JnCi0KLU1haW50YWluZXJzOiBLZXZpbiBIYW8gPGtleGluLmhhb0B3aW5kcml2ZXIuY29tPgotICAgICAgICAgICAgIEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotCi1Db25zdW1lciBEZXZpY2VzCi09PT09PT09PT09PT09PT09Ci0KLVRoZSBmb2xsb3dpbmcgY29uc3VtZXIgZGV2aWNlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBtZXRhLXlvY3RvLWJzcCBsYXllcjoKLQotICAqIEludGVsIHg4NiBiYXNlZCBQQ3MgYW5kIGRldmljZXMgKGdlbmVyaWN4ODYpCi0gICogVWJpcXVpdGkgTmV0d29ya3MgRWRnZVJvdXRlciBMaXRlIChlZGdlcm91dGVyKQotCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGRldmljZSdzIHNlY3Rpb24gYmVsb3cuIFRoZSBhcHByb3ByaWF0ZSBNQUNISU5FCi12YXJpYWJsZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBkZXZpY2UgaXMgZ2l2ZW4gaW4gYnJhY2tldHMuCi0KLQotCi0gICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWMgSGFyZHdhcmUgRG9jdW1lbnRhdGlvbgotICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi1JbnRlbCB4ODYgYmFzZWQgUENzIGFuZCBkZXZpY2VzIChnZW5lcmljeDg2KikKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgZ2VuZXJpY3g4NiBhbmQgZ2VuZXJpY3g4Ni02NCBNQUNISU5FIGFyZSB0ZXN0ZWQgb24gdGhlIGZvbGxvd2luZyBwbGF0Zm9ybXM6Ci0KLUludGVsIFhlb24vQ29yZSBpLVNlcmllczoKLSAgKyBJbnRlbCBOVUM1IFNlcmllcyAtIGl4LTUyeHggU2VyaWVzIFNPQyAoQnJvYWR3ZWxsKQotICArIEludGVsIE5VQzYgU2VyaWVzIC0gaXgtNjJ4eCBTZXJpZXMgU09DIChTa3lsYWtlKQotICArIEludGVsIFNodW13YXkgWGVvbiBTZXJ2ZXIKLQotSW50ZWwgQXRvbSBwbGF0Zm9ybXM6Ci0gICsgTWlubm93Qm9hcmQgTUFYIC0gRTM4MjUgU09DIChCYXkgVHJhaWwpCi0gICsgTWlubm93Qm9hcmQgTUFYIC0gVHVyYm90IChBREkgRW5naW5lZXJpbmcpIC0gRTM4MjYgU09DIChCYXkgVHJhaWwpCi0gICAgLSBUaGVzZSBib2FyZHMgY2FuIGJlIGVpdGhlciAzMmJvdCBvciA2NGJpdCBtb2RlcyBkZXBlbmRpbmcgb24gZmlybXdhcmUKLSAgICAtIFNlZSBtaW5ub3dib2FyZC5vcmcgZm9yIGRldGFpbHMgCi0gICsgSW50ZWwgQnJhc3dlbGwgU09DCi0KLWFuZCBpcyBsaWtlbHkgdG8gd29yayBvbiBtYW55IHVubGlzdGVkIEF0b20vQ29yZS9YZW9uIGJhc2VkIGRldmljZXMuIFRoZSBNQUNISU5FCi10eXBlIHN1cHBvcnRzIGV0aGVybmV0LCB3aWZpLCBzb3VuZCwgYW5kIEludGVsL3Zlc2EgZ3JhcGhpY3MgYnkgZGVmYXVsdCBpbgotYWRkaXRpb24gdG8gY29tbW9uIFBDIGlucHV0IGRldmljZXMsIGJ1c3NlcywgYW5kIHNvIG9uLgotCi1EZXBlbmRpbmcgb24gdGhlIGRldmljZSwgaXQgY2FuIGJvb3QgZnJvbSBhIHRyYWRpdGlvbmFsIGhhcmQtZGlzaywgYSBVU0IgZGV2aWNlLAotb3Igb3ZlciB0aGUgbmV0d29yay4gV3JpdGluZyBnZW5lcmF0ZWQgaW1hZ2VzIHRvIHBoeXNpY2FsIG1lZGlhIGlzCi1zdHJhaWdodGZvcndhcmQgd2l0aCBhIGNhdmVhdCBmb3IgVVNCIGRldmljZXMuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgYXNzdW1lIHRoZQotdGFyZ2V0IGJvb3QgZGV2aWNlIGlzIC9kZXYvc2RiLCBiZSBzdXJlIHRvIHZlcmlmeSB0aGlzIGFuZCB1c2UgdGhlIGNvcnJlY3QKLWRldmljZSBhcyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBydW4gYXMgcm9vdCBhbmQgYXJlIG5vdCByZXZlcnNhYmxlLgotCi1VU0IgRGV2aWNlOgotICAxLiBCdWlsZCBhIGxpdmUgaW1hZ2UuIFRoaXMgaW1hZ2UgdHlwZSBjb25zaXN0cyBvZiBhIHNpbXBsZSBmaWxlc3lzdGVtCi0gICAgIHdpdGhvdXQgYSBwYXJ0aXRpb24gdGFibGUsIHdoaWNoIGlzIHN1aXRhYmxlIGZvciBVU0Iga2V5cywgYW5kIHdpdGggdGhlCi0gICAgIGRlZmF1bHQgc2V0dXAgZm9yIHRoZSBnZW5lcmljeDg2IG1hY2hpbmUsIHRoaXMgaW1hZ2UgdHlwZSBpcyBidWlsdAotICAgICBhdXRvbWF0aWNhbGx5IGZvciBhbnkgaW1hZ2UgeW91IGJ1aWxkLiBGb3IgZXhhbXBsZToKLQotICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCi0KLSAgMi4gVXNlIHRoZSAiZGQiIHV0aWxpdHkgdG8gd3JpdGUgdGhlIGltYWdlIHRvIHRoZSByYXcgYmxvY2sgZGV2aWNlLiBGb3IKLSAgICAgZXhhbXBsZToKLQotICAgICAjIGRkIGlmPWNvcmUtaW1hZ2UtbWluaW1hbC1nZW5lcmljeDg2LmhkZGltZyBvZj0vZGV2L3NkYgotCi0gIElmIHRoZSBkZXZpY2UgZmFpbHMgdG8gYm9vdCB3aXRoICJCb290IGVycm9yIiBkaXNwbGF5ZWQsIG9yIGFwcGFyZW50bHkKLSAgc3RvcHMganVzdCBhZnRlciB0aGUgU1lTTElOVVggdmVyc2lvbiBiYW5uZXIsIGl0IGlzIGxpa2VseSB0aGUgQklPUyBjYW5ub3QKLSAgdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwgbGF5b3V0IG9mIHRoZSBkaXNrIChvciByYXRoZXIgaXQgZXhwZWN0cyBhCi0gIHBhcnRpY3VsYXIgbGF5b3V0IGFuZCBjYW5ub3QgaGFuZGxlIGFueXRoaW5nIGVsc2UpLiBUaGVyZSBhcmUgdHdvIHBvc3NpYmxlCi0gIHNvbHV0aW9ucyB0byB0aGlzIHByb2JsZW06Ci0KLSAgMS4gQ2hhbmdlIHRoZSBCSU9TIFVTQiBEZXZpY2Ugc2V0dGluZyB0byBIREQgbW9kZS4gVGhlIGxhYmVsIHdpbGwgdmFyeSBieQotICAgICBkZXZpY2UsIGJ1dCB0aGUgaWRlYSBpcyB0byBmb3JjZSBCSU9TIHRvIHJlYWQgdGhlIEN5bGluZGVyL0hlYWQvU2VjdG9yCi0gICAgIGdlb21ldHJ5IGZyb20gdGhlIGRldmljZS4KLQotICAyLiBVc2UgYSAiLndpYyIgaW1hZ2Ugd2l0aCBhbiBFRkkgcGFydGl0aW9uCi0KLSAgICAgYSkgV2l0aCBhIGRlZmF1bHQgZ3J1Yi1lZmkgYm9vdGxvYWRlcjoKLSAgICAgIyBkZCBpZj1jb3JlLWltYWdlLW1pbmltYWwtZ2VuZXJpY3g4Ni02NC53aWMgb2Y9L2Rldi9zZGIKLQotICAgICBiKSBVc2Ugc3lzdGVtZC1ib290IGluc3RlYWQKLSAgICAgLSBCdWlsZCBhbiBpbWFnZSB3aXRoIEVGSV9QUk9WSURFUj0ic3lzdGVtZC1ib290IiB0aGVuIHVzZSB0aGUgYWJvdmUKLSAgICAgICBkZCBjb21tYW5kIHRvIHdyaXRlIHRoZSBpbWFnZSB0byBhIFVTQiBzdGljay4KLQotCi1UZXhhcyBJbnN0cnVtZW50cyBCZWFnbGVib25lIChiZWFnbGVib25lKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIEJlYWdsZWJvbmUgaXMgYW4gQVJNIENvcnRleC1BOCBkZXZlbG9wbWVudCBib2FyZCB3aXRoIFVTQiwgRXRoZXJuZXQsIDJELzNECi1hY2NlbGVyYXRlZCBncmFwaGljcywgYXVkaW8sIHNlcmlhbCwgSlRBRywgYW5kIFNEL01NQy4gVGhlIEJsYWNrIGFkZHMgYSBmYXN0ZXIKLUNQVSwgbW9yZSBSQU0sIGVNTUMgZmxhc2ggYW5kIGEgbWljcm8gSERNSSBwb3J0LiBUaGUgYmVhZ2xlYm9uZSBNQUNISU5FIGlzCi10ZXN0ZWQgb24gdGhlIGZvbGxvd2luZyBwbGF0Zm9ybXM6Ci0KLSAgbyBCZWFnbGVib25lIEJsYWNrIEE2Ci0gIG8gQmVhZ2xlYm9uZSBBNiAodGhlIG9yaWdpbmFsICJXaGl0ZSIgbW9kZWwpCi0KLVRoZSBCZWFnbGVib25lIEJsYWNrIGhhcyBlTU1DLCB3aGlsZSB0aGUgV2hpdGUgZG9lcyBub3QuIFByZXNzaW5nIHRoZSBVU0VSL0JPT1QKLWJ1dHRvbiB3aGVuIHBvd2VyaW5nIG9uIHdpbGwgdGVtcG9yYXJpbHkgY2hhbmdlIHRoZSBib290IG9yZGVyLiBCdXQgZm9yIHRoZSBzYWtlCi1vZiBzaW1wbGljaXR5LCB0aGVzZSBpbnN0cnVjdGlvbnMgYXNzdW1lIHlvdSBoYXZlIGVyYXNlZCB0aGUgZU1NQyBvbiB0aGUgQmxhY2ssCi1zbyBpdHMgYm9vdCBiZWhhdmlvciBtYXRjaGVzIHRoYXQgb2YgdGhlIFdoaXRlIGFuZCBib290cyBvZmYgb2YgU0QgY2FyZC4gVG8gZG8KLXRoaXMsIGlzc3VlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgZnJvbSB0aGUgdS1ib290IHByb21wdDoKLQotICAgICMgbW1jIGRldiAxCi0gICAgIyBtbWMgZXJhc2UgMCA1MTIKLQotVG8gZnVydGhlciB0YWlsb3IgdGhlc2UgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIGJvYXJkLCBwbGVhc2UgcmVmZXIgdG8gdGhlCi1kb2N1bWVudGF0aW9uIGF0IGh0dHA6Ly93d3cuYmVhZ2xlYm9hcmQub3JnL2JvbmUgYW5kIGh0dHA6Ly93d3cuYmVhZ2xlYm9hcmQub3JnL2JsYWNrCi0KLUZyb20gYSBMaW51eCBzeXN0ZW0gd2l0aCBhY2Nlc3MgdG8gdGhlIGltYWdlIGZpbGVzIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKLQotICAxLiBCdWlsZCBhbiBpbWFnZS4gRm9yIGV4YW1wbGU6Ci0KLSAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAotCi0gIDIuIFVzZSB0aGUgImRkIiB1dGlsaXR5IHRvIHdyaXRlIHRoZSBpbWFnZSB0byB0aGUgU0QgY2FyZC4gRm9yIGV4YW1wbGU6Ci0KLSAgICAgIyBkZCBjb3JlLWltYWdlLW1pbmltYWwtYmVhZ2xlYm9uZS53aWMgb2Y9L2Rldi9zZGIKLQotICAzLiBJbnNlcnQgdGhlIFNEIGNhcmQgaW50byB0aGUgQmVhZ2xlYm9uZSBhbmQgYm9vdCB0aGUgYm9hcmQuCi0KLUZyZWVzY2FsZSBNUEM4MzE1RS1SREIgKG1wYzgzMTVlLXJkYikKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIE1QQzgzMTUgUG93ZXJQQyByZWZlcmVuY2UgcGxhdGZvcm0gKE1QQzgzMTVFLVJEQikgaXMgYWltZWQgYXQgaGFyZHdhcmUgYW5kCi1zb2Z0d2FyZSBkZXZlbG9wbWVudCBvZiBuZXR3b3JrIGF0dGFjaGVkIHN0b3JhZ2UgKE5BUykgYW5kIGRpZ2l0YWwgbWVkaWEgc2VydmVyCi1hcHBsaWNhdGlvbnMuIFRoZSBNUEM4MzE1RS1SREIgZmVhdHVyZXMgdGhlIFBvd2VyUVVJQ0MgSUkgUHJvIHByb2Nlc3Nvciwgd2hpY2gKLWluY2x1ZGVzIGEgYnVpbHQtaW4gc2VjdXJpdHkgYWNjZWxlcmF0b3IuCi0KLShOb3RlOiB5b3UgbWF5IGZpbmQgaXQgZWFzaWVyIHRvIG9yZGVyIE1QQzgzMTVFLVJEQkE7IHRoaXMgYXBwZWFycyB0byBiZSB0aGUKLXNhbWUgYm9hcmQgaW4gYW4gZW5jbG9zdXJlIHdpdGggYWNjZXNzb3JpZXMuIEluIGFueSBjYXNlIGl0IGlzIGZ1bGx5Ci1jb21wYXRpYmxlIHdpdGggdGhlIGluc3RydWN0aW9ucyBnaXZlbiBoZXJlLikKLQotU2V0dXAgaW5zdHJ1Y3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0KLQotWW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nOgotKiBORlMgcm9vdCBzZXR1cCBvbiB5b3VyIHdvcmtzdGF0aW9uCi0qIFRGVFAgc2VydmVyIGluc3RhbGxlZCBvbiB5b3VyIHdvcmtzdGF0aW9uCi0qIFN0cmFpZ2h0LXRocnUgOS1jb25kdWN0b3Igc2VyaWFsIGNhYmxlIChEQjksIE0vRikgY29ubmVjdGVkIGZyb20geW91ciAKLSAgUEMgdG8gVUFSVDEKLSogRXRoZXJuZXQgY29ubmVjdGVkIHRvIHRoZSBmaXJzdCBldGhlcm5ldCBwb3J0IG9uIHRoZSBib2FyZAotCi0tLS0gUHJlcGFyYXRpb24gLS0tCi0KLU5vdGU6IGlmIHlvdSBoYXZlIGFsdGVyZWQgeW91ciBib2FyZCdzIGV0aGVybmV0IE1BQyBhZGRyZXNzKGVzKSBmcm9tIHRoZQotZGVmYXVsdHMsIG9yIHlvdSBuZWVkIHRvIGRvIHNvIGJlY2F1c2UgeW91IHdhbnQgbXVsdGlwbGUgYm9hcmRzIG9uIHRoZSBzYW1lCi1uZXR3b3JrLCB0aGVuIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZXMgaW4gdGhlIGR0cyBmaWxlIChwYXRjaAotbGludXgvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzMTVlcmRiLmR0cyB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UpLiBJZgoteW91IGhhdmUgbGVmdCB0aGVtIGF0IHRoZSBmYWN0b3J5IGRlZmF1bHQgdGhlbiB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gZG8KLWFueXRoaW5nIGhlcmUuCi0KLU5vdGU6IFRvIGJvb3QgZnJvbSBVU0IgZGlzayB5b3UgbmVlZCB1LWJvb3QgdGhhdCBzdXBwb3J0cyAnZXh0MmxvYWQgdXNiJwotY29tbWFuZC4gWW91IG5lZWQgdG8gc2V0dXAgVEZUUCBzZXJ2ZXIsIGxvYWQgdS1ib290IGZyb20gdGhlcmUgYW5kCi1mbGFzaCBpdCB0byBOT1IgZmxhc2guCi0KLUJld2FyZSEgRmxhc2hpbmcgYm9vdGxvYWRlciBpcyBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3BlcmF0aW9uIHRoYXQgY2FuCi1icmljayB5b3VyIGRldmljZSBpZiBkb25lIGluY29ycmVjdGx5LiBQbGVhc2UsIG1ha2Ugc3VyZSB5b3UgdW5kZXJzdGFuZAotd2hhdCBiZWxvdyBjb21tYW5kcyBtZWFuIGJlZm9yZSBleGVjdXRpbmcgdGhlbS4KLQotTG9hZCB0aGUgbmV3IHUtYm9vdC5iaW4gZnJvbSBURlRQIHNlcnZlciB0byBtZW1vcnkgYWRkcmVzcyAyMDAwMDAKLT0+IHRmdHAgMjAwMDAwIHUtYm9vdC5iaW4KLQotRGlzYWJsZSBmbGFzaCBwcm90ZWN0aW9uCi09PiBwcm90ZWN0IG9mZiBhbGwKLQotRXJhc2UgdGhlIG9sZCB1LWJvb3QgZnJvbSBmZTAwMDAwMCB0byBmZTA2ZmZmZiBpbiBOT1IgZmxhc2guCi1UaGUgc2l6ZSBpcyAweDcwMDAwICg0NTg3NTIgYnl0ZXMpCi09PiBlcmFzZSBmZTAwMDAwMCBmZTA2ZmZmZgotCi1Db3B5IHRoZSBuZXcgdS1ib290IGZyb20gYWRkcmVzcyAyMDAwMDAgdG8gZmUwMDAwMDAKLXRoZSBzaXplIGlzIDB4NzAwMDAuIEl0IGhhcyB0byBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHUtYm9vdC5iaW4gc2l6ZQotPT4gY3AuYiAyMDAwMDAgZmUwMDAwMDAgNzAwMDAKLQotRW5hYmxlIGZsYXNoIHByb3RlY3Rpb24gYWdhaW4KLT0+IHByb3RlY3Qgb24gYWxsCi0KLVJlc2V0IHRoZSBib2FyZAotPT4gcmVzZXQKLQotLS0tIEJvb3RpbmcgZnJvbSBVU0IgZGlzayAtLS0KLQotIDEuIEZsYXNoIHBhcnRpdGlvbmVkIGltYWdlIHRvIHRoZSBVU0IgZGlzawotCi0gICAgIyBkZCBpZj1jb3JlLWltYWdlLW1pbmltYWwtbXBjODMxNWUtcmRiLndpYyBvZj0vZGV2L3NkYgotCi0gMi4gUGx1ZyBVU0IgZGlzayBpbnRvIHRoZSBNUEM4MzE1IGJvYXJkCi0KLSAzLiBDb25uZWN0IHRoZSBib2FyZCdzIGZpcnN0IHNlcmlhbCBwb3J0IHRvIHlvdXIgd29ya3N0YXRpb24gYW5kIHRoZW4gc3RhcnQgdXAKLSAgICB5b3VyIGZhdm91cml0ZSBzZXJpYWwgdGVybWluYWwgc28gdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGgKLSAgICB0aGUgc2VyaWFsIGNvbnNvbGUuIElmIHlvdSBkb24ndCBoYXZlIGEgZmF2b3VyaXRlLCBwaWNvY29tIGlzIHN1Z2dlc3RlZDoKLQotICAkIHBpY29jb20gL2Rldi90dHlVU0IwIC1iIDExNTIwMAotCi0gNC4gUG93ZXIgdXAgb3IgcmVzZXQgdGhlIGJvYXJkIGFuZCBwcmVzcyBhIGtleSBvbiB0aGUgdGVybWluYWwgd2hlbiBwcm9tcHRlZAotICAgIHRvIGdldCB0byB0aGUgVS1Cb290IGNvbW1hbmQgbGluZQotCi0gNS4gT3B0aW9uYWwuIExvYWQgdGhlIHUtYm9vdC5iaW4gZnJvbSB0aGUgVVNCIGRpc2s6Ci0KLSA9PiB1c2Igc3RhcnQKLSA9PiBleHQybG9hZCB1c2IgMDoxIDIwMDAwMCB1LWJvb3QuYmluCi0KLSAgICBhbmQgZmxhc2ggaXQgdG8gTk9SIGZsYXNoIGFzIGRlc2NyaWJlZCBhYm92ZS4KLQotIDYuIFNldCBmZHRhZGRyIGFuZCBsb2FkYWRkci4gVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGlmIHlvdSBzZXQgdGhlbSBiZWZvcmUuCi0KLSA9PiBzZXRlbnYgZmR0YWRkciBhMDAwMDAKLSA9PiBzZXRlbnYgbG9hZGFkZHIgMTAwMDAwMAotCi0gNy4gTG9hZCB0aGUga2VybmVsIGFuZCBkdGIgZnJvbSBmaXJzdCBwYXJ0aXRpb24gb2YgdGhlIFVTQiBkaXNrOgotCi0gPT4gdXNiIHN0YXJ0Ci0gPT4gZXh0MmxvYWQgdXNiIDA6MSAkbG9hZGFkZHIgdUltYWdlCi0gPT4gZXh0MmxvYWQgdXNiIDA6MSAkZmR0YWRkciBkdGIKLQotIDguIFNldCBib290YXJncyBhbmQgYm9vdCB1cCB0aGUgZGV2aWNlCi0KLSA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3NkYjIgcncgcm9vdHdhaXQgY29uc29sZT10dHlTMCwxMTUyMDAKLSA9PiBib290bSAkbG9hZGFkZHIgLSAkZmR0YWRkcgotCi0KLS0tLSBCb290aW5nIGZyb20gTkZTIHJvb3QgLS0tCi0KLUxvYWQgdGhlIGtlcm5lbCBhbmQgZHRiIChkZXZpY2UgdHJlZSBibG9iKSwgYW5kIGJvb3QgdGhlIHN5c3RlbSBhcyBmb2xsb3dzOgotCi0gMS4gR2V0IHRoZSBrZXJuZWwgKHVJbWFnZS1tcGM4MzE1ZS1yZGIuYmluKSBhbmQgZHRiICh1SW1hZ2UtbXBjODMxNWUtcmRiLmR0YikKLSAgICBmaWxlcyBmcm9tIHRoZSB0bXAvZGVwbG95IGRpcmVjdG9yeSwgYW5kIG1ha2UgdGhlbSBhdmFpbGFibGUgb24geW91ciBURlRQCi0gICAgc2VydmVyLgotCi0gMi4gQ29ubmVjdCB0aGUgYm9hcmQncyBmaXJzdCBzZXJpYWwgcG9ydCB0byB5b3VyIHdvcmtzdGF0aW9uIGFuZCB0aGVuIHN0YXJ0IHVwCi0gICAgeW91ciBmYXZvdXJpdGUgc2VyaWFsIHRlcm1pbmFsIHNvIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoCi0gICAgdGhlIHNlcmlhbCBjb25zb2xlLiBJZiB5b3UgZG9uJ3QgaGF2ZSBhIGZhdm91cml0ZSwgcGljb2NvbSBpcyBzdWdnZXN0ZWQ6Ci0KLSAgJCBwaWNvY29tIC9kZXYvdHR5VVNCMCAtYiAxMTUyMDAKLQotIDMuIFBvd2VyIHVwIG9yIHJlc2V0IHRoZSBib2FyZCBhbmQgcHJlc3MgYSBrZXkgb24gdGhlIHRlcm1pbmFsIHdoZW4gcHJvbXB0ZWQKLSAgICB0byBnZXQgdG8gdGhlIFUtQm9vdCBjb21tYW5kIGxpbmUKLQotIDQuIFNldCB1cCB0aGUgZW52aXJvbm1lbnQgaW4gVS1Cb290OgotCi0gPT4gc2V0ZW52IGlwYWRkciA8Ym9hcmQgaXA+Ci0gPT4gc2V0ZW52IHNlcnZlcmlwIDx0ZnRwIHNlcnZlciBpcD4KLSA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyBuZnNyb290PTxuZnNyb290IGlwPjo8cm9vdGZzIHBhdGg+IGlwPTxib2FyZCBpcD46PHNlcnZlciBpcD46PGdhdGV3YXkgaXA+OjI1NS4yNTUuMjU1LjA6bXBjODMxNWU6ZXRoMDpvZmYgY29uc29sZT10dHlTMCwxMTUyMDAKLQotIDUuIERvd25sb2FkIHRoZSBrZXJuZWwgYW5kIGR0YiwgYW5kIGJvb3Q6Ci0KLSA9PiB0ZnRwIDEwMDAwMDAgdUltYWdlLW1wYzgzMTVlLXJkYi5iaW4KLSA9PiB0ZnRwIDIwMDAwMDAgdUltYWdlLW1wYzgzMTVlLXJkYi5kdGIKLSA9PiBib290bSAxMDAwMDAwIC0gMjAwMDAwMAotCi0tLS0gQm9vdGluZyBmcm9tIEpGRlMyIHJvb3QgLS0tCi0KLSAxLiBGaXJzdCBib290IHRoZSBib2FyZCB3aXRoIE5GUyByb290LgotCi0gMi4gRXJhc2UgdGhlIE1URCBwYXJ0aXRpb24gd2hpY2ggd2lsbCBiZSB1c2VkIGFzIHJvb3Q6Ci0KLSAgICAkIGZsYXNoX2VyYXNlYWxsICAvZGV2L210ZDMKLQotIDMuIENvcHkgdGhlIEpGRlMyIGltYWdlIHRvIHRoZSBNVEQgcGFydGl0aW9uOgotCi0gICAgJCBmbGFzaGNwIGNvcmUtaW1hZ2UtbWluaW1hbC1tcGM4MzE1ZS1yZGIuamZmczIgL2Rldi9tdGQzCi0KLSA0LiBUaGVuIHJlYm9vdCB0aGUgYm9hcmQgYW5kIHNldCB1cCB0aGUgZW52aXJvbm1lbnQgaW4gVS1Cb290OgotCi0gICAgPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9tdGRibG9jazMgcm9vdGZzdHlwZT1qZmZzMiBjb25zb2xlPXR0eVMwLDExNTIwMAotCi0KLVViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZSAoZWRnZXJvdXRlcikKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIEVkZ2VSb3V0ZXIgTGl0ZSBpcyBwYXJ0IG9mIHRoZSBFZGdlTWF4IHNlcmllcy4gSXQgaXMgYSBNSVBTNjQgcm91dGVyCi0oYmFzZWQgb24gdGhlIENhdml1bSBPY3Rlb24gcHJvY2Vzc29yKSB3aXRoIDUxMk1CIG9mIFJBTSwgd2hpY2ggdXNlcyBhbgotaW50ZXJuYWwgVVNCIHBlbmRyaXZlIGZvciBzdG9yYWdlLgotCi1TZXR1cCBpbnN0cnVjdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Zb3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6Ci0qIFJKNDUgLT4gc2VyaWFsICgicm9sbG92ZXIiKSBjYWJsZSBjb25uZWN0ZWQgZnJvbSB5b3VyIFBDIHRvIHRoZSBDT05TT0xFCi0gIHBvcnQgb24gdGhlIGRldmljZQotKiBFdGhlcm5ldCBjb25uZWN0ZWQgdG8gdGhlIGZpcnN0IGV0aGVybmV0IHBvcnQgb24gdGhlIGJvYXJkCi0KLUlmIHVzaW5nIE5GUyBhcyBwYXJ0IG9mIHRoZSBzZXR1cCBwcm9jZXNzLCB5b3Ugd2lsbCBhbHNvIG5lZWQ6Ci0qIE5GUyByb290IHNldHVwIG9uIHlvdXIgd29ya3N0YXRpb24KLSogVEZUUCBzZXJ2ZXIgaW5zdGFsbGVkIG9uIHlvdXIgd29ya3N0YXRpb24gKGlmIGZldGNoaW5nIHRoZSBrZXJuZWwgZnJvbQotICBURlRQLCBzZWUgYmVsb3cpLgotCi0tLS0gUHJlcGFyYXRpb24gLS0tCi0KLUJ1aWxkIGFuIGltYWdlIChlLmcuIGNvcmUtaW1hZ2UtbWluaW1hbCkgdXNpbmcgImVkZ2Vyb3V0ZXIiIGFzIHRoZSBNQUNISU5FLgotSW4gdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpdCBpcyBiYXNlZCBvbiBjb3JlLWltYWdlLW1pbmltYWwuIEFub3RoZXIgdGFyZ2V0Ci1tYXkgYmUgc2ltaWxpYXIgd2l0aCBpdC4KLQotLS0tIEJvb3RpbmcgZnJvbSBORlMgcm9vdCAvIGtlcm5lbCB2aWEgVEZUUCAtLS0KLQotTG9hZCB0aGUga2VybmVsLCBhbmQgYm9vdCB0aGUgc3lzdGVtIGFzIGZvbGxvd3M6Ci0KLSAxLiBHZXQgdGhlIGtlcm5lbCAodm1saW51eCkgZmlsZSBmcm9tIHRoZSB0bXAvZGVwbG95L2ltYWdlcy9lZGdlcm91dGVyCi0gICAgZGlyZWN0b3J5LCBhbmQgbWFrZSB0aGVtIGF2YWlsYWJsZSBvbiB5b3VyIFRGVFAgc2VydmVyLgotCi0gMi4gQ29ubmVjdCB0aGUgYm9hcmQncyBmaXJzdCBzZXJpYWwgcG9ydCB0byB5b3VyIHdvcmtzdGF0aW9uIGFuZCB0aGVuIHN0YXJ0IHVwCi0gICAgeW91ciBmYXZvdXJpdGUgc2VyaWFsIHRlcm1pbmFsIHNvIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoCi0gICAgdGhlIHNlcmlhbCBjb25zb2xlLiBJZiB5b3UgZG9uJ3QgaGF2ZSBhIGZhdm91cml0ZSwgcGljb2NvbSBpcyBzdWdnZXN0ZWQ6Ci0KLSAgJCBwaWNvY29tIC9kZXYvdHR5UzAgLWIgMTE1MjAwCi0KLSAzLiBQb3dlciB1cCBvciByZXNldCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkCi0gICAgdG8gZ2V0IHRvIHRoZSBVLUJvb3QgY29tbWFuZCBsaW5lCi0KLSA0LiBTZXQgdXAgdGhlIGVudmlyb25tZW50IGluIFUtQm9vdDoKLQotID0+IHNldGVudiBpcGFkZHIgPGJvYXJkIGlwPgotID0+IHNldGVudiBzZXJ2ZXJpcCA8dGZ0cCBzZXJ2ZXIgaXA+Ci0KLSA1LiBEb3dubG9hZCB0aGUga2VybmVsIGFuZCBib290OgotCi0gPT4gdGZ0cCB0ZnRwICRsb2FkYWRkciB2bWxpbnV4Ci0gPT4gYm9vdG9jdGxpbnV4ICRsb2FkYWRkciBjb3JlbWFzaz0weDMgcm9vdD0vZGV2L25mcyBydyBuZnNyb290PTxuZnNyb290IGlwPjo8cm9vdGZzIHBhdGg+IGlwPTxib2FyZCBpcD46PHNlcnZlciBpcD46PGdhdGV3YXkgaXA+OjxuZXRtYXNrPjplZGdlcm91dGVyOmV0aDA6b2ZmIG10ZHBhcnRzPXBoeXNfbWFwcGVkX2ZsYXNoOjUxMmsoYm9vdDApLDUxMmsoYm9vdDEpLDY0a0AzMDcyayhlZXByb20pCi0KLS0tLSBCb290aW5nIGZyb20gVVNCIGRpc2sgLS0tCi0KLVRvIGJvb3QgZnJvbSB0aGUgVVNCIGRpc2ssIHlvdSBlaXRoZXIgbmVlZCB0byByZW1vdmUgaXQgZnJvbSB0aGUgZWRnZXJvdXRlcgotYm94IGFuZCBwb3B1bGF0ZSBpdCBmcm9tIGFub3RoZXIgY29tcHV0ZXIsIG9yIHVzZSBhIHByZXZpb3VzbHkgYm9vdGVkIE5GUwotaW1hZ2UgYW5kIHBvcHVsYXRlIGZyb20gdGhlIGVkZ2Vyb3V0ZXIgaXRzZWxmLgotCi1UeXBlIDE6IFVzZSBwYXJ0aXRpb25lZCBpbWFnZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotU3RlcHM6Ci0KLSAxLiBSZW1vdmUgdGhlIFVTQiBkaXNrIGZyb20gdGhlIGVkZ2Vyb3V0ZXIgYW5kIGluc2VydCBpdCBpbnRvIGEgY29tcHV0ZXIKLSAgICB0aGF0IGhhcyBhY2Nlc3MgdG8geW91ciBidWlsZCBhcnRpZmFjdHMuCi0KLSAyLiBGbGFzaCB0aGUgaW1hZ2UuCi0KLSAgICAjIGRkIGlmPWNvcmUtaW1hZ2UtbWluaW1hbC1lZGdlcm91dGVyLndpYyBvZj0vZGV2L3NkYgotCi0gMy4gSW5zZXJ0IFVTQiBkaXNrIGludG8gdGhlIGVkZ2Vyb3V0ZXIgYW5kIGJvb3QgaXQuCi0KLVR5cGUgMjogTkZTCi0tLS0tLS0tLS0tLQotCi1Ob3RlOiBJZiB5b3UgcGxhY2UgdGhlIGtlcm5lbCBvbiB0aGUgZXh0MyBwYXJ0aXRpb24sIHlvdSBtdXN0IHJlLWNyZWF0ZSB0aGUKLSAgICAgIGV4dDMgZmlsZXN5c3RlbSwgc2luY2UgdGhlIGZhY3RvcnkgdS1ib290IGNhbiBvbmx5IGhhbmRsZSAxMjggYnl0ZSBpbm9kZXMgYW5kCi0gICAgICBjYW5ub3QgcmVhZCB0aGUgcGFydGl0aW9uIG90aGVyd2lzZS4KLQotICAgICAgVGhlc2UgYm9vdCBpbnN0cnVjdGlvbnMgYXNzdW1lIHRoYXQgeW91IGhhdmUgcmVjcmVhdGVkIHRoZSBleHQzIGZpbGVzeXN0ZW0gd2l0aAotICAgICAgMTI4IGJ5dGUgaW5vZGVzLCB5b3UgaGF2ZSBhbiB1cGRhdGVkIHVib290IG9yIHlvdSBhcmUgcnVubmluZyBhbmQgaW1hZ2UgY2FwYWJsZQotICAgICAgb2YgbWFraW5nIHRoZSBmaWxlc3lzdGVtIG9uIHRoZSBib2FyZCBpdHNlbGYuCi0KLQotIDEuIEJvb3QgZnJvbSBORlMgcm9vdAotCi0gMi4gTW91bnQgdGhlIFVTQiBkaXNrIHBhcnRpdGlvbiAyIGFuZCB0aGVuIGV4dHJhY3QgdGhlIGNvbnRlbnRzIG9mCi0gICAgdG1wL2RlcGxveS9jb3JlLWltYWdlLVhYWFgudGFyLmJ6MiBpbnRvIGl0LgotCi0gICAgQmVmb3JlIHN0YXJ0aW5nLCBjb3B5IGNvcmUtaW1hZ2UtbWluaW1hbC14eHgudGFyLmJ6MiBhbmQgdm1saW51eCBpbnRvCi0gICAgcm9vdGZzIHBhdGggb24geW91ciB3b3Jrc3RhdGlvbi4KLQotICAgIGFuZCB0aGVuLAotICAKLSAgICAgICMgbW91bnQgL2Rldi9zZGEyIC9tZWRpYS9zZGEyCi0gICAgICAjIHRhciAteHZqcGYgY29yZS1pbWFnZS1taW5pbWFsLVhYWC50YXIuYnoyIC1DIC9tZWRpYS9zZGEyCi0gICAgICAjIGNwIHZtbGludXggL21lZGlhL3NkYTIvYm9vdC92bWxpbnV4Ci0gICAgICAjIHVtb3VudCAvbWVkaWEvc2RhMgotICAgICAgIyByZWJvb3QKLQotIDMuIFJlYm9vdCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkIHRvIGdldCB0byB0aGUgVS1Cb290Ci0gICAgY29tbWFuZCBsaW5lOgotCi0gICAgIyByZWJvb3QKLQotIDQuIExvYWQgdGhlIGtlcm5lbCBhbmQgYm9vdDoKLQotICAgICAgPT4gZXh0MmxvYWQgdXNiIDA6MiAkbG9hZGFkZHIgYm9vdC92bWxpbnV4Ci0gICAgICA9PiBib290b2N0bGludXggJGxvYWRhZGRyIGNvcmVtYXNrPTB4MyByb290PS9kZXYvc2RhMiBydyByb290d2FpdCBtdGRwYXJ0cz1waHlzX21hcHBlZF9mbGFzaDo1MTJrKGJvb3QwKSw1MTJrKGJvb3QxKSw2NGtAMzA3MmsoZWVwcm9tKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5oYXJkd2FyZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUuaGFyZHdhcmUKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMC4uOGI2MjU4ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9SRUFETUUuaGFyZHdhcmUKQEAgLTAsMCArMSBAQAorbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5wb2t5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5wb2t5Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAuLjE4NzdkY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLnBva3kKQEAgLTAsMCArMSBAQAorbWV0YS1wb2t5L1JFQURNRS5wb2t5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5xZW11IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5xZW11Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNTZiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLnFlbXUKQEAgLTAsMCArMSwxNSBAQAorUUVNVSBFbXVsYXRpb24gVGFyZ2V0cworPT09PT09PT09PT09PT09PT09PT09PQorCitUbyBzaW1wbGlmeSBkZXZlbG9wbWVudCwgdGhlIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyBidWlsZGluZyBpbWFnZXMgdG8KK3dvcmsgd2l0aCB0aGUgUUVNVSBlbXVsYXRvciBpbiBzeXN0ZW0gZW11bGF0aW9uIG1vZGUuIFNldmVyYWwgYXJjaGl0ZWN0dXJlcworYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gMzIgYW5kIDY0IGJpdCB2YXJpYW50czoKKworICAqIEFSTSAocWVtdWFybSArIHFlbXVhcm02NCkKKyAgKiB4ODYgKHFlbXV4ODYgKyBxZW11eDg2LTY0KQorICAqIFBvd2VyUEMgKHFlbXVwcGMgb25seSkKKyAgKiBNSVBTIChxZW11bWlwcyArIHFlbXVtaXBzNjQpCisKK1VzZSBvZiB0aGUgUUVNVSBpbWFnZXMgaXMgY292ZXJlZCBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorVGhlIGFwcHJvcHJpYXRlIE1BQ0hJTkUgdmFyaWFibGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgdGFyZ2V0IGlzIGdpdmVuCitpbiBicmFja2V0cy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL1JFQURNRSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzljMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvUkVBRE1FCkBAIC0wLDAgKzEsMzUgQEAKK0JpdGJha2UKKz09PT09PT0KKworQml0QmFrZSBpcyBhIGdlbmVyaWMgdGFzayBleGVjdXRpb24gZW5naW5lIHRoYXQgYWxsb3dzIHNoZWxsIGFuZCBQeXRob24gdGFza3MgdG8gYmUgcnVuCitlZmZpY2llbnRseSBhbmQgaW4gcGFyYWxsZWwgd2hpbGUgd29ya2luZyB3aXRoaW4gY29tcGxleCBpbnRlci10YXNrIGRlcGVuZGVuY3kgY29uc3RyYWludHMuCitPbmUgb2YgQml0QmFrZSdzIG1haW4gdXNlcnMsIE9wZW5FbWJlZGRlZCwgdGFrZXMgdGhpcyBjb3JlIGFuZCBidWlsZHMgZW1iZWRkZWQgTGludXggc29mdHdhcmUKK3N0YWNrcyB1c2luZyBhIHRhc2stb3JpZW50ZWQgYXBwcm9hY2guCisKK0ZvciBpbmZvcm1hdGlvbiBhYm91dCBCaXRiYWtlLCBzZWUgdGhlIE9wZW5FbWJlZGRlZCB3ZWJzaXRlOgorICAgIGh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy8KKworQml0YmFrZSBwbGFpbiBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCB1bmRlciB0aGUgZG9jIGRpcmVjdG9yeSBvciBpdHMgaW50ZWdyYXRlZAoraHRtbCB2ZXJzaW9uIGF0IHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGU6CisgICAgaHR0cDovL3lvY3RvcHJvamVjdC5vcmcvZG9jdW1lbnRhdGlvbgorCitDb250cmlidXRpbmcKKy0tLS0tLS0tLS0tLQorCitQbGVhc2UgcmVmZXIgdG8KK2h0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy93aWtpL0hvd190b19zdWJtaXRfYV9wYXRjaF90b19PcGVuRW1iZWRkZWQKK2ZvciBndWlkZWxpbmVzIG9uIGhvdyB0byBzdWJtaXQgcGF0Y2hlcywganVzdCBub3RlIHRoYXQgdGhlIGxhdHRlciBkb2N1bWVudGF0aW9uIGlzIGludGVuZGVkCitmb3IgT3BlbkVtYmVkZGVkIChhbmQgaXRzIGNvcmUpIG5vdCBiaXRiYWtlIHBhdGNoZXMgKGJpdGJha2UtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZykKK2J1dCBpbiBnZW5lcmFsIG1haW4gZ3VpZGVsaW5lcyBhcHBseS4gT25jZSB0aGUgY29tbWl0KHMpIGhhdmUgYmVlbiBjcmVhdGVkLCB0aGUgd2F5IHRvIHNlbmQKK3RoZSBwYXRjaCBpcyB0aHJvdWdoIGdpdC1zZW5kLWVtYWlsLiBGb3IgZXhhbXBsZSwgdG8gc2VuZCB0aGUgbGFzdCBjb21taXQgKEhFQUQpIG9uIGN1cnJlbnQKK2JyYW5jaCwgdHlwZToKKworICAgIGdpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gYml0YmFrZS1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnCisKK01haWxpbmcgbGlzdDoKKworICAgIGh0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4vbGlzdGluZm8vYml0YmFrZS1kZXZlbAorCitTb3VyY2UgY29kZToKKworICAgIGh0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQppbmRleCA5ZjVjMmQ0Li4zYWNjMjNhIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQpAQCAtMzYsOSArMzYsOSBAQAogZnJvbSBiYi5tYWluIGltcG9ydCBiaXRiYWtlX21haW4sIEJpdEJha2VDb25maWdQYXJhbWV0ZXJzLCBCQk1haW5FeGNlcHRpb24KIAogaWYgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICE9ICJ1dGYtOCI6Ci0gICAgc3lzLmV4aXQoIlBsZWFzZSB1c2UgYSBsb2NhbGUgc2V0dGluZyB3aGljaCBzdXBwb3J0cyB1dGYtOC5cblB5dGhvbiBjYW4ndCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gbG9jYWxlIGFmdGVyIGxvYWRpbmcgc28gd2UgbmVlZCBhIHV0Zi04IHdoZW4gcHl0aG9uIHN0YXJ0cyBvciB0aGluZ3Mgd29uJ3Qgd29yay4iKQorICAgIHN5cy5leGl0KCJQbGVhc2UgdXNlIGEgbG9jYWxlIHNldHRpbmcgd2hpY2ggc3VwcG9ydHMgVVRGLTggKHN1Y2ggYXMgTEFORz1lbl9VUy5VVEYtOCkuXG5QeXRob24gY2FuJ3QgY2hhbmdlIHRoZSBmaWxlc3lzdGVtIGxvY2FsZSBhZnRlciBsb2FkaW5nIHNvIHdlIG5lZWQgYSBVVEYtOCB3aGVuIFB5dGhvbiBzdGFydHMgb3IgdGhpbmdzIHdvbid0IHdvcmsuIikKIAotX192ZXJzaW9uX18gPSAiMS4zNC4wIgorX192ZXJzaW9uX18gPSAiMS4zNi4wIgogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGlmIF9fdmVyc2lvbl9fICE9IGJiLl9fdmVyc2lvbl9fOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtZGlmZnNpZ3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS1kaWZmc2lncwppbmRleCBlYjJmODU5Li40ZTZiYmRkIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS1kaWZmc2lncworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS1kaWZmc2lncwpAQCAtMzQsMTggKzM0LDM5IEBACiAKIGxvZ2dlciA9IGJiLm1zZy5sb2dnZXJfY3JlYXRlKCdiaXRiYWtlLWRpZmZzaWdzJykKIAorZGVmIGZpbmRfc2lnaW5mbyh0aW5mb2lsLCBwbiwgdGFza25hbWUsIHNpZ3M9Tm9uZSk6CisgICAgcmVzdWx0ID0gTm9uZQorICAgIHRpbmZvaWwuc2V0X2V2ZW50X21hc2soWydiYi5ldmVudC5GaW5kU2lnSW5mb1Jlc3VsdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuTG9nUmVjb3JkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkJ10pCisgICAgcmV0ID0gdGluZm9pbC5ydW5fY29tbWFuZCgnZmluZFNpZ0luZm8nLCBwbiwgdGFza25hbWUsIHNpZ3MpCisgICAgaWYgcmV0OgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZXZlbnQgPSB0aW5mb2lsLndhaXRfZXZlbnQoMSkKKyAgICAgICAgICAgIGlmIGV2ZW50OgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMikKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LkZpbmRTaWdJbmZvUmVzdWx0KToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZXZlbnQucmVzdWx0CisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBsb2dnaW5nLkxvZ1JlY29yZCk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGUoZXZlbnQpCisgICAgZWxzZToKKyAgICAgICAgbG9nZ2VyLmVycm9yKCdObyByZXN1bHQgcmV0dXJuZWQgZnJvbSBmaW5kU2lnSW5mbyBjb21tYW5kJykKKyAgICAgICAgc3lzLmV4aXQoMikKKyAgICByZXR1cm4gcmVzdWx0CisKIGRlZiBmaW5kX2NvbXBhcmVfdGFzayhiYmhhbmRsZXIsIHBuLCB0YXNrbmFtZSwgc2lnMT1Ob25lLCBzaWcyPU5vbmUsIGNvbG9yPUZhbHNlKToKICAgICAiIiIgRmluZCB0aGUgbW9zdCByZWNlbnQgc2lnbmF0dXJlIGZpbGVzIGZvciB0aGUgc3BlY2lmaWVkIFBOL3Rhc2sgYW5kIGNvbXBhcmUgdGhlbSAiIiIKIAotICAgIGlmIG5vdCBoYXNhdHRyKGJiLnNpZ2dlbiwgJ2ZpbmRfc2lnaW5mbycpOgotICAgICAgICBsb2dnZXIuZXJyb3IoJ01ldGFkYXRhIGRvZXMgbm90IHN1cHBvcnQgZmluZGluZyBzaWduYXR1cmUgZGF0YSBmaWxlcycpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KICAgICBpZiBub3QgdGFza25hbWUuc3RhcnRzd2l0aCgnZG9fJyk6CiAgICAgICAgIHRhc2tuYW1lID0gJ2RvXyVzJyAlIHRhc2tuYW1lCiAKICAgICBpZiBzaWcxIGFuZCBzaWcyOgotICAgICAgICBzaWdmaWxlcyA9IGJiLnNpZ2dlbi5maW5kX3NpZ2luZm8ocG4sIHRhc2tuYW1lLCBbc2lnMSwgc2lnMl0sIGJiaGFuZGxlci5jb25maWdfZGF0YSkKKyAgICAgICAgc2lnZmlsZXMgPSBmaW5kX3NpZ2luZm8oYmJoYW5kbGVyLCBwbiwgdGFza25hbWUsIFtzaWcxLCBzaWcyXSkKICAgICAgICAgaWYgbGVuKHNpZ2ZpbGVzKSA9PSAwOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdObyBzaWdkYXRhIGZpbGVzIGZvdW5kIG1hdGNoaW5nICVzICVzIG1hdGNoaW5nIGVpdGhlciAlcyBvciAlcycgJSAocG4sIHRhc2tuYW1lLCBzaWcxLCBzaWcyKSkKICAgICAgICAgICAgIHN5cy5leGl0KDEpCkBAIC01Nyw3ICs3OCw3IEBACiAgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICBsYXRlc3RmaWxlcyA9IFtzaWdmaWxlc1tzaWcxXSwgc2lnZmlsZXNbc2lnMl1dCiAgICAgZWxzZToKLSAgICAgICAgZmlsZWRhdGVzID0gYmIuc2lnZ2VuLmZpbmRfc2lnaW5mbyhwbiwgdGFza25hbWUsIE5vbmUsIGJiaGFuZGxlci5jb25maWdfZGF0YSkKKyAgICAgICAgZmlsZWRhdGVzID0gZmluZF9zaWdpbmZvKGJiaGFuZGxlciwgcG4sIHRhc2tuYW1lKQogICAgICAgICBsYXRlc3RmaWxlcyA9IHNvcnRlZChmaWxlZGF0ZXMua2V5cygpLCBrZXk9bGFtYmRhIGY6IGZpbGVkYXRlc1tmXSlbLTM6XQogICAgICAgICBpZiBub3QgbGF0ZXN0ZmlsZXM6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIHNpZ2RhdGEgZmlsZXMgZm91bmQgbWF0Y2hpbmcgJXMgJXMnICUgKHBuLCB0YXNrbmFtZSkpCkBAIC02OSw3ICs5MCw3IEBACiAgICAgIyBEZWZpbmUgcmVjdXJzaW9uIGNhbGxiYWNrCiAgICAgZGVmIHJlY3Vyc2VjYihrZXksIGhhc2gxLCBoYXNoMik6CiAgICAgICAgIGhhc2hlcyA9IFtoYXNoMSwgaGFzaDJdCi0gICAgICAgIGhhc2hmaWxlcyA9IGJiLnNpZ2dlbi5maW5kX3NpZ2luZm8oa2V5LCBOb25lLCBoYXNoZXMsIGJiaGFuZGxlci5jb25maWdfZGF0YSkKKyAgICAgICAgaGFzaGZpbGVzID0gZmluZF9zaWdpbmZvKGJiaGFuZGxlciwga2V5LCBOb25lLCBoYXNoZXMpCiAKICAgICAgICAgcmVjb3V0ID0gW10KICAgICAgICAgaWYgbGVuKGhhc2hmaWxlcykgPT0gMDoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWxheWVycyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWxheWVycwppbmRleCAyYjA1ZDI4Li5kMTg0MDExIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS1sYXllcnMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzCkBAIC00Myw2ICs0Myw3IEBACiAgICAgICAgIGFkZF9oZWxwPUZhbHNlKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGVidWcnLCBoZWxwPSdFbmFibGUgZGVidWcgb3V0cHV0JywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgaGVscD0nUHJpbnQgb25seSBlcnJvcnMnLCBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1GJywgJy0tZm9yY2UnLCBoZWxwPSdGb3JjZSBhZGQgd2l0aG91dCByZWNpcGUgcGFyc2UgdmVyaWZpY2F0aW9uJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvbG9yJywgY2hvaWNlcz1bJ2F1dG8nLCAnYWx3YXlzJywgJ25ldmVyJ10sIGRlZmF1bHQ9J2F1dG8nLCBoZWxwPSdDb2xvcml6ZSBvdXRwdXQgKHdoZXJlICUobWV0YXZhcilzIGlzICUoY2hvaWNlcylzKScsIG1ldGF2YXI9J0NPTE9SJykKIAogICAgIGdsb2JhbF9hcmdzLCB1bnBhcnNlZF9hcmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoKQpAQCAtODksNyArOTAsNyBAQAogCiAgICAgICAgIGlmIGdldGF0dHIoYXJncywgJ3BhcnNlcmVjaXBlcycsIEZhbHNlKToKICAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuZGlzYWJsZVRyYWNraW5nKCkKLSAgICAgICAgICAgIHRpbmZvaWwucGFyc2VSZWNpcGVzKCkKKyAgICAgICAgICAgIHRpbmZvaWwucGFyc2VfcmVjaXBlcygpCiAgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLmVuYWJsZVRyYWNraW5nKCkKIAogICAgICAgICByZXR1cm4gYXJncy5mdW5jKGFyZ3MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS1zZWxmdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXNlbGZ0ZXN0CmluZGV4IDM4MGUwMDMuLmFmZTE2MDMgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXNlbGZ0ZXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXNlbGZ0ZXN0CkBAIC0yOCw2ICsyOCw3IEBACiB0ZXN0cyA9IFsiYmIudGVzdHMuY29kZXBhcnNlciIsCiAgICAgICAgICAiYmIudGVzdHMuY293IiwKICAgICAgICAgICJiYi50ZXN0cy5kYXRhIiwKKyAgICAgICAgICJiYi50ZXN0cy5ldmVudCIsCiAgICAgICAgICAiYmIudGVzdHMuZmV0Y2giLAogICAgICAgICAgImJiLnRlc3RzLnBhcnNlIiwKICAgICAgICAgICJiYi50ZXN0cy51dGlscyJdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS13b3JrZXIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZS13b3JrZXIKaW5kZXggZWUyZDYyMi4uZTkyNTA1NCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utd29ya2VyCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlcgpAQCAtMTcsNyArMTcsNyBAQAogZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAogCiBpZiBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgIT0gInV0Zi04IjoKLSAgICBzeXMuZXhpdCgiUGxlYXNlIHVzZSBhIGxvY2FsZSBzZXR0aW5nIHdoaWNoIHN1cHBvcnRzIHV0Zi04LlxuUHl0aG9uIGNhbid0IGNoYW5nZSB0aGUgZmlsZXN5c3RlbSBsb2NhbGUgYWZ0ZXIgbG9hZGluZyBzbyB3ZSBuZWVkIGEgdXRmLTggd2hlbiBweXRob24gc3RhcnRzIG9yIHRoaW5ncyB3b24ndCB3b3JrLiIpCisgICAgc3lzLmV4aXQoIlBsZWFzZSB1c2UgYSBsb2NhbGUgc2V0dGluZyB3aGljaCBzdXBwb3J0cyBVVEYtOCAoc3VjaCBhcyBMQU5HPWVuX1VTLlVURi04KS5cblB5dGhvbiBjYW4ndCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gbG9jYWxlIGFmdGVyIGxvYWRpbmcgc28gd2UgbmVlZCBhIFVURi04IHdoZW4gUHl0aG9uIHN0YXJ0cyBvciB0aGluZ3Mgd29uJ3Qgd29yay4iKQogCiAjIFVzZXJzIHNob3VsZG4ndCBiZSBydW5uaW5nIHRoaXMgY29kZSBkaXJlY3RseQogaWYgbGVuKHN5cy5hcmd2KSAhPSAyIG9yIG5vdCBzeXMuYXJndlsxXS5zdGFydHN3aXRoKCJkZWNhZmJhZCIpOgpAQCAtNDk5LDQgKzQ5OSwzIEBACiAKIHdvcmtlcmxvZ193cml0ZSgiZXhpdHRpbmciKQogc3lzLmV4aXQoMCkKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2dpdC1tYWtlLXNoYWxsb3cgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vZ2l0LW1ha2Utc2hhbGxvdwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yOTZkM2EzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2dpdC1tYWtlLXNoYWxsb3cKQEAgLTAsMCArMSwxNjUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyIiImdpdC1tYWtlLXNoYWxsb3c6IG1ha2UgdGhlIGN1cnJlbnQgZ2l0IHJlcG9zaXRvcnkgc2hhbGxvdworCitSZW1vdmUgdGhlIGhpc3Rvcnkgb2YgdGhlIHNwZWNpZmllZCByZXZpc2lvbnMsIHRoZW4gb3B0aW9uYWxseSBmaWx0ZXIgdGhlCithdmFpbGFibGUgcmVmcyB0byB0aG9zZSBzcGVjaWZpZWQuCisiIiIKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBlcnJubworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCit2ZXJzaW9uID0gMS4wCisKKworZGVmIG1haW4oKToKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDQsIDApOgorICAgICAgICBzeXMuZXhpdCgnUHl0aG9uIDMuNCBvciBncmVhdGVyIGlzIHJlcXVpcmVkJykKKworICAgIGdpdF9kaXIgPSBjaGVja19vdXRwdXQoWydnaXQnLCAncmV2LXBhcnNlJywgJy0tZ2l0LWRpciddKS5yc3RyaXAoKQorICAgIHNoYWxsb3dfZmlsZSA9IG9zLnBhdGguam9pbihnaXRfZGlyLCAnc2hhbGxvdycpCisgICAgaWYgb3MucGF0aC5leGlzdHMoc2hhbGxvd19maWxlKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY2hlY2tfb3V0cHV0KFsnZ2l0JywgJ2ZldGNoJywgJy0tdW5zaGFsbG93J10pCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsoc2hhbGxvd19maWxlKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBhcmdzID0gcHJvY2Vzc19hcmdzKCkKKyAgICByZXZzID0gY2hlY2tfb3V0cHV0KFsnZ2l0JywgJ3Jldi1saXN0J10gKyBhcmdzLnJldmlzaW9ucykuc3BsaXRsaW5lcygpCisKKyAgICBtYWtlX3NoYWxsb3coc2hhbGxvd19maWxlLCBhcmdzLnJldmlzaW9ucywgYXJncy5yZWZzKQorCisgICAgcmVmX3JldnMgPSBjaGVja19vdXRwdXQoWydnaXQnLCAncmV2LWxpc3QnXSArIGFyZ3MucmVmcykuc3BsaXRsaW5lcygpCisgICAgcmVtYWluaW5nX2hpc3RvcnkgPSBzZXQocmV2cykgJiBzZXQocmVmX3JldnMpCisgICAgZm9yIHJldiBpbiByZW1haW5pbmdfaGlzdG9yeToKKyAgICAgICAgaWYgY2hlY2tfb3V0cHV0KFsnZ2l0JywgJ3Jldi1wYXJzZScsICd7fV5AJy5mb3JtYXQocmV2KV0pOgorICAgICAgICAgICAgc3lzLmV4aXQoJ0Vycm9yOiAlcyB3YXMgbm90IG1hZGUgc2hhbGxvdycgJSByZXYpCisKKyAgICBmaWx0ZXJfcmVmcyhhcmdzLnJlZnMpCisKKyAgICBpZiBhcmdzLnNocmluazoKKyAgICAgICAgc2hyaW5rX3JlcG8oZ2l0X2RpcikKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsnZ2l0JywgJ2ZzY2snLCAnLS11bnJlYWNoYWJsZSddKQorCisKK2RlZiBwcm9jZXNzX2FyZ3MoKToKKyAgICAjIFRPRE86IGFkZCBhcmd1bWVudCB0byBhdXRvbWF0aWNhbGx5IGtlZXAgbG9jYWwtb25seSByZWZzLCBzaW5jZSB0aGV5CisgICAgIyBjYW4ndCBiZSBlYXNpbHkgcmVzdG9yZWQgd2l0aCBhIGdpdCBmZXRjaC4KKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nUmVtb3ZlIHRoZSBoaXN0b3J5IG9mIHRoZSBzcGVjaWZpZWQgcmV2aXNpb25zLCB0aGVuIG9wdGlvbmFsbHkgZmlsdGVyIHRoZSBhdmFpbGFibGUgcmVmcyB0byB0aG9zZSBzcGVjaWZpZWQuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlZicsICctcicsIG1ldGF2YXI9J1JFRicsIGFjdGlvbj0nYXBwZW5kJywgZGVzdD0ncmVmcycsIGhlbHA9J3JlbW92ZSBhbGwgYnV0IHRoZSBzcGVjaWZpZWQgcmVmcyAoY3VtdWxhdGl2ZSknKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc2hyaW5rJywgJy1zJywgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nc2hyaW5rIHRoZSBnaXQgcmVwb3NpdG9yeSBieSByZXBhY2tpbmcgYW5kIHBydW5pbmcnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3JldmlzaW9ucycsIG1ldGF2YXI9J1JFVklTSU9OJywgbmFyZ3M9JysnLCBoZWxwPSdhIGdpdCByZXZpc2lvbi9jb21taXQnKQorICAgIGlmIGxlbihzeXMuYXJndikgPCAyOgorICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCisgICAgICAgIHN5cy5leGl0KDIpCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgYXJncy5yZWZzOgorICAgICAgICBhcmdzLnJlZnMgPSBjaGVja19vdXRwdXQoWydnaXQnLCAncmV2LXBhcnNlJywgJy0tc3ltYm9saWMtZnVsbC1uYW1lJ10gKyBhcmdzLnJlZnMpLnNwbGl0bGluZXMoKQorICAgIGVsc2U6CisgICAgICAgIGFyZ3MucmVmcyA9IGdldF9hbGxfcmVmcyhsYW1iZGEgciwgdCwgdHQ6IHQgPT0gJ2NvbW1pdCcgb3IgdHQgPT0gJ2NvbW1pdCcpCisKKyAgICBhcmdzLnJlZnMgPSBsaXN0KGZpbHRlcihsYW1iZGEgcjogbm90IHIuZW5kc3dpdGgoJy9IRUFEJyksIGFyZ3MucmVmcykpCisgICAgYXJncy5yZXZpc2lvbnMgPSBjaGVja19vdXRwdXQoWydnaXQnLCAncmV2LXBhcnNlJ10gKyBbJyVzXnt9JyAlIGkgZm9yIGkgaW4gYXJncy5yZXZpc2lvbnNdKS5zcGxpdGxpbmVzKCkKKyAgICByZXR1cm4gYXJncworCisKK2RlZiBjaGVja19vdXRwdXQoY21kLCBpbnB1dD1Ob25lKToKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgaW5wdXQ9aW5wdXQpCisKKworZGVmIG1ha2Vfc2hhbGxvdyhzaGFsbG93X2ZpbGUsIHJldmlzaW9ucywgcmVmcyk6CisgICAgIiIiUmVtb3ZlIHRoZSBoaXN0b3J5IG9mIHRoZSBzcGVjaWZpZWQgcmV2aXNpb25zLiIiIgorICAgIGZvciByZXYgaW4gZm9sbG93X2hpc3RvcnlfaW50ZXJzZWN0aW9ucyhyZXZpc2lvbnMsIHJlZnMpOgorICAgICAgICBwcmludCgiUHJvY2Vzc2luZyAlcyIgJSByZXYpCisgICAgICAgIHdpdGggb3BlbihzaGFsbG93X2ZpbGUsICdhJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUocmV2ICsgJ1xuJykKKworCitkZWYgZ2V0X2FsbF9yZWZzKHJlZl9maWx0ZXI9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGFsbCB0aGUgZXhpc3RpbmcgcmVmcyBpbiB0aGlzIHJlcG9zaXRvcnksIG9wdGlvbmFsbHkgZmlsdGVyaW5nIHRoZSByZWZzLiIiIgorICAgIHJlZl9vdXRwdXQgPSBjaGVja19vdXRwdXQoWydnaXQnLCAnZm9yLWVhY2gtcmVmJywgJy0tZm9ybWF0PSUocmVmbmFtZSlcdCUob2JqZWN0dHlwZSlcdCUoKm9iamVjdHR5cGUpJ10pCisgICAgcmVmX3NwbGl0ID0gW3R1cGxlKGl0ZXJfZXh0ZW5kKGwucnNwbGl0KCdcdCcpLCAzKSkgZm9yIGwgaW4gcmVmX291dHB1dC5zcGxpdGxpbmVzKCldCisgICAgaWYgcmVmX2ZpbHRlcjoKKyAgICAgICAgcmVmX3NwbGl0ID0gKGUgZm9yIGUgaW4gcmVmX3NwbGl0IGlmIHJlZl9maWx0ZXIoKmUpKQorICAgIHJlZnMgPSBbclswXSBmb3IgciBpbiByZWZfc3BsaXRdCisgICAgcmV0dXJuIHJlZnMKKworCitkZWYgaXRlcl9leHRlbmQoaXRlcmFibGUsIGxlbmd0aCwgb2JqPU5vbmUpOgorICAgICIiIkVuc3VyZSB0aGF0IGl0ZXJhYmxlIGlzIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIGJ5IGV4dGVuZGluZyB3aXRoIG9iai4iIiIKKyAgICByZXR1cm4gaXRlcnRvb2xzLmlzbGljZShpdGVydG9vbHMuY2hhaW4oaXRlcmFibGUsIGl0ZXJ0b29scy5yZXBlYXQob2JqKSksIGxlbmd0aCkKKworCitkZWYgZmlsdGVyX3JlZnMocmVmcyk6CisgICAgIiIiUmVtb3ZlIGFsbCBidXQgdGhlIHNwZWNpZmllZCByZWZzIGZyb20gdGhlIGdpdCByZXBvc2l0b3J5LiIiIgorICAgIGFsbF9yZWZzID0gZ2V0X2FsbF9yZWZzKCkKKyAgICB0b19yZW1vdmUgPSBzZXQoYWxsX3JlZnMpIC0gc2V0KHJlZnMpCisgICAgaWYgdG9fcmVtb3ZlOgorICAgICAgICBjaGVja19vdXRwdXQoWyd4YXJncycsICctMCcsICctbicsICcxJywgJ2dpdCcsICd1cGRhdGUtcmVmJywgJy1kJywgJy0tbm8tZGVyZWYnXSwKKyAgICAgICAgICAgICAgICAgICAgIGlucHV0PScnLmpvaW4obCArICdcMCcgZm9yIGwgaW4gdG9fcmVtb3ZlKSkKKworCitkZWYgZm9sbG93X2hpc3RvcnlfaW50ZXJzZWN0aW9ucyhyZXZpc2lvbnMsIHJlZnMpOgorICAgICIiIkRldGVybWluZSBhbGwgdGhlIHBvaW50cyB3aGVyZSB0aGUgaGlzdG9yeSBvZiB0aGUgc3BlY2lmaWVkIHJldmlzaW9ucyBpbnRlcnNlY3RzIHRoZSBzcGVjaWZpZWQgcmVmcy4iIiIKKyAgICBxdWV1ZSA9IGNvbGxlY3Rpb25zLmRlcXVlKHJldmlzaW9ucykKKyAgICBzZWVuID0gc2V0KCkKKworICAgIGZvciByZXYgaW4gaXRlcl9leGNlcHQocXVldWUucG9wbGVmdCwgSW5kZXhFcnJvcik6CisgICAgICAgIGlmIHJldiBpbiBzZWVuOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBwYXJlbnRzID0gY2hlY2tfb3V0cHV0KFsnZ2l0JywgJ3Jldi1wYXJzZScsICclc15AJyAlIHJldl0pLnNwbGl0bGluZXMoKQorCisgICAgICAgIHlpZWxkIHJldgorICAgICAgICBzZWVuLmFkZChyZXYpCisKKyAgICAgICAgaWYgbm90IHBhcmVudHM6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNoZWNrX3JlZnMgPSBjaGVja19vdXRwdXQoWydnaXQnLCAnbWVyZ2UtYmFzZScsICctLWluZGVwZW5kZW50J10gKyBzb3J0ZWQocmVmcykpLnNwbGl0bGluZXMoKQorICAgICAgICBmb3IgcGFyZW50IGluIHBhcmVudHM6CisgICAgICAgICAgICBmb3IgcmVmIGluIGNoZWNrX3JlZnM6CisgICAgICAgICAgICAgICAgcHJpbnQoIkNoZWNraW5nICVzIHZzICVzIiAlIChwYXJlbnQsIHJlZikpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBtZXJnZV9iYXNlID0gY2hlY2tfb3V0cHV0KFsnZ2l0JywgJ21lcmdlLWJhc2UnLCBwYXJlbnQsIHJlZl0pLnJzdHJpcCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChtZXJnZV9iYXNlKQorCisKK2RlZiBpdGVyX2V4Y2VwdChmdW5jLCBleGNlcHRpb24sIHN0YXJ0PU5vbmUpOgorICAgICIiIllpZWxkIGEgZnVuY3Rpb24gcmVwZWF0ZWRseSB1bnRpbCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIiIgorICAgIHRyeToKKyAgICAgICAgaWYgc3RhcnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB5aWVsZCBzdGFydCgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB5aWVsZCBmdW5jKCkKKyAgICBleGNlcHQgZXhjZXB0aW9uOgorICAgICAgICBwYXNzCisKKworZGVmIHNocmlua19yZXBvKGdpdF9kaXIpOgorICAgICIiIlNocmluayB0aGUgbmV3bHkgc2hhbGxvdyByZXBvc2l0b3J5LCByZW1vdmluZyB0aGUgdW5yZWFjaGFibGUgb2JqZWN0cy4iIiIKKyAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWydnaXQnLCAncmVmbG9nJywgJ2V4cGlyZScsICctLWV4cGlyZS11bnJlYWNoYWJsZT1ub3cnLCAnLS1hbGwnXSkKKyAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWydnaXQnLCAncmVwYWNrJywgJy1hZCddKQorICAgIHRyeToKKyAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihnaXRfZGlyLCAnb2JqZWN0cycsICdpbmZvJywgJ2FsdGVybmF0ZXMnKSkKKyAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICByYWlzZQorICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJ2dpdCcsICdwcnVuZScsICctLWV4cGlyZScsICdub3cnXSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL3RvYXN0ZXIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vdG9hc3RlcgppbmRleCA2MWE0YTBmLi40MDM2ZjBhIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vdG9hc3RlcgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vdG9hc3RlcgpAQCAtMTgsMTIgKzE4LDIxIEBACiAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLgogCiBIRUxQPSIKLVVzYWdlOiBzb3VyY2UgdG9hc3RlciBzdGFydHxzdG9wIFt3ZWJwb3J0PTxhZGRyZXNzOnBvcnQ+XSBbbm93ZWJdCitVc2FnZTogc291cmNlIHRvYXN0ZXIgc3RhcnR8c3RvcCBbd2VicG9ydD08YWRkcmVzczpwb3J0Pl0gW25vd2ViXSBbbm9idWlsZF0KICAgICBPcHRpb25hbCBhcmd1bWVudHM6Ci0gICAgICAgIFtub3dlYl0gU2V0dXAgdGhlIGVudmlyb25tZW50IGZvciBidWlsZGluZyB3aXRoIHRvYXN0ZXIgYnV0IGRvbid0IHN0YXJ0IHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIKKyAgICAgICAgW25vYnVpbGRdIFNldHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgY2FwdHVyaW5nIGJ1aWxkcyB3aXRoIHRvYXN0ZXIgYnV0IGRpc2FibGUgbWFuYWdlZCBidWlsZHMKKyAgICAgICAgW25vd2ViXSBTZXR1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGNhcHR1cmluZyBidWlsZHMgd2l0aCB0b2FzdGVyIGJ1dCBkb24ndCBzdGFydCB0aGUgd2ViIHNlcnZlcgogICAgICAgICBbd2VicG9ydF0gU2V0IHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgKGRlZmF1bHQ6IGxvY2FsaG9zdDo4MDAwKQogIgogCitjdXN0b21fZXh0ZW50aW9uKCkKK3sKKyAgICBjdXN0b21fZXh0ZW5zaW9uPSRCQkJBU0VESVIvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL2N1c3RvbV90b2FzdGVyX2FwcGVuZC5zaAorICAgIGlmIFsgLWYgJGN1c3RvbV9leHRlbnNpb24gXSA7IHRoZW4KKyAgICAgICAgJGN1c3RvbV9leHRlbnNpb24gJCoKKyAgICBmaQorfQorCiBkYXRhYmFzZUNoZWNrKCkKIHsKICAgICByZXR2YWw9MApAQCAtNTAsNiArNTksMTEgQEAKIHdlYnNlcnZlcktpbGxBbGwoKQogewogICAgIGxvY2FsIHBpZGZpbGUKKyAgICBpZiBbIC1mICR7QlVJTERESVJ9Ly50b2FzdGVybWFpbi5waWQgXSA7IHRoZW4KKyAgICAgICAgY3VzdG9tX2V4dGVudGlvbiB3ZWJfc3RvcF9wb3N0cGVuZAorICAgIGVsc2UKKyAgICAgICAgY3VzdG9tX2V4dGVudGlvbiBub3dlYl9zdG9wX3Bvc3RwZW5kCisgICAgZmkKICAgICBmb3IgcGlkZmlsZSBpbiAke0JVSUxERElSfS8udG9hc3Rlcm1haW4ucGlkICR7QlVJTERESVJ9Ly5ydW5idWlsZHMucGlkOyBkbwogICAgICAgICBpZiBbIC1mICR7cGlkZmlsZX0gXTsgdGhlbgogICAgICAgICAgICAgcGlkPWBjYXQgJHtwaWRmaWxlfWAKQEAgLTg5LDYgKzEwMyw3IEBACiAgICAgZWxzZQogICAgICAgICBlY2hvICJUb2FzdGVyIGRldmVsb3BtZW50IHdlYnNlcnZlciBzdGFydGVkIGF0IGh0dHA6Ly8kQUREUl9QT1JUIgogICAgICAgICBlY2hvIC1lICJcbllvdSBjYW4gbm93IHJ1biAnYml0YmFrZSA8dGFyZ2V0Picgb24gdGhlIGNvbW1hbmQgbGluZSBhbmQgbW9uaXRvciB5b3VyIGJ1aWxkIGluIFRvYXN0ZXIuXG5Zb3UgY2FuIGFsc28gdXNlIGEgVG9hc3RlciBwcm9qZWN0IHRvIGNvbmZpZ3VyZSBhbmQgcnVuIGEgYnVpbGQuXG4iCisgICAgICAgIGN1c3RvbV9leHRlbnRpb24gd2ViX3N0YXJ0X3Bvc3RwZW5kICRBRERSX1BPUlQKICAgICBmaQogCiAgICAgcmV0dXJuICRyZXR2YWwKQEAgLTExNiw4ICsxMzEsMTQgQEAKICAgICAjIFZlcmlmeSBEamFuZ28gdmVyc2lvbgogICAgIHJlcWZpbGU9JChweXRob24zIC1jICJpbXBvcnQgb3M7IHByaW50KG9zLnBhdGgucmVhbHBhdGgoJyRCQkJBU0VESVIvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0JykpIikKICAgICBleHA9J3MvRGphbmdvXChbPjw9XVwrXClcKFteLF1cK1wpLFwoWz48PV1cK1wpXCguXCtcKS8nCi0gICAgZXhwPSRleHAnaW1wb3J0IHN5cyxkamFuZ287dmVyc2lvbj1kamFuZ28uZ2V0X3ZlcnNpb24oKS5zcGxpdCgiLiIpOycKLSAgICBleHA9JGV4cCdzeXMuZXhpdChub3QgKHZlcnNpb24gXDEgIlwyIi5zcGxpdCgiLiIpIGFuZCB2ZXJzaW9uIFwzICJcNCIuc3BsaXQoIi4iKSkpL3AnCisgICAgIyBleHBhbmQgdmVyc2lvbiBwYXJ0cyB0byAyIGRpZ2l0cyB0byBzdXBwb3J0IDEuMTAueCA+IDEuOAorICAgICMgKG5vdGU6aGVscGVyIGZ1bmN0aW9ucyBoYXJkIHRvIGluc2VydCBpbi1saW5lKQorICAgIGV4cD0kZXhwJ2ltcG9ydCBzeXMsZGphbmdvOycKKyAgICBleHA9JGV4cCd2ZXJzaW9uPVsiJTAyZCIgJSBpbnQobikgZm9yIG4gaW4gZGphbmdvLmdldF92ZXJzaW9uKCkuc3BsaXQoIi4iKV07JworICAgIGV4cD0kZXhwJ3ZtaW49WyIlMDJkIiAlIGludChuKSBmb3IgbiBpbiAiXDIiLnNwbGl0KCIuIildOycKKyAgICBleHA9JGV4cCd2bWF4PVsiJTAyZCIgJSBpbnQobikgZm9yIG4gaW4gIlw0Ii5zcGxpdCgiLiIpXTsnCisgICAgZXhwPSRleHAnc3lzLmV4aXQobm90ICh2ZXJzaW9uIFwxIHZtaW4gYW5kIHZlcnNpb24gXDMgdm1heCkpJworICAgIGV4cD0kZXhwJy9wJwogICAgIGlmICEgc2VkIC1uICIkZXhwIiAkcmVxZmlsZSB8IHB5dGhvbjMgLSA7IHRoZW4KICAgICAgICAgcmVxPWBncmVwIF5EamFuZ28gJHJlcWZpbGVgCiAgICAgICAgIGVjaG8gIlRoaXMgcHJvZ3JhbSBuZWVkcyAkcmVxIgpAQCAtMTYyLDggKzE4Myw4IEBACiB1bnNldCBPRV9ST09UCiAKIAotCiBXRUJTRVJWRVI9MQorZXhwb3J0IFRPQVNURVJfQlVJTERTRVJWRVI9MQogQUREUl9QT1JUPSJsb2NhbGhvc3Q6ODAwMCIKIHVuc2V0IENNRAogZm9yIHBhcmFtIGluICQqOyBkbwpAQCAtMTcxLDYgKzE5Miw5IEBACiAgICAgbm93ZWIgKQogICAgICAgICAgICAgV0VCU0VSVkVSPTAKICAgICA7OworICAgIG5vYnVpbGQgKQorICAgICAgICAgICAgVE9BU1RFUl9CVUlMRFNFUlZFUj0wCisgICAgOzsKICAgICBzdGFydCApCiAgICAgICAgICAgICBDTUQ9JHBhcmFtCiAgICAgOzsKQEAgLTIzNSw2ICsyNTksNyBAQAogZWNobyAiVGhlIHN5c3RlbSB3aWxsICRDTUQuIgogCiAjIEV4ZWN1dGUgdGhlIGNvbW1hbmRzCitjdXN0b21fZXh0ZW50aW9uIHRvYXN0ZXJfcHJlcGVuZCAkQ01EICRBRERSX1BPUlQKIAogY2FzZSAkQ01EIGluCiAgICAgc3RhcnQgKQpAQCAtMjU2LDIyICsyODEsMjggQEAKICAgICAgICAgICAgIGlmIFsgISAtZiAiJFRPQVNURVJfRElSL3RvYXN0ZXIuc3FsaXRlIiBdIDsgdGhlbgogICAgICAgICAgICAgICAgIGlmICEgZGF0YWJhc2VDaGVjazsgdGhlbgogICAgICAgICAgICAgICAgICAgICBlY2hvICJGYWlsZWQgJHtDTUR9LiIKLSAgICAgICAgICAgICAgICAgIHJldHVybiA0CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA0CiAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBjdXN0b21fZXh0ZW50aW9uIG5vd2ViX3N0YXJ0X3Bvc3RwZW5kICRBRERSX1BPUlQKICAgICAgICAgZmkKICAgICAgICAgaWYgWyAkV0VCU0VSVkVSIC1ndCAwIF0gJiYgISB3ZWJzZXJ2ZXJTdGFydEFsbDsgdGhlbgogICAgICAgICAgICAgZWNobyAiRmFpbGVkICR7Q01EfS4iCiAgICAgICAgICAgICByZXR1cm4gNAogICAgICAgICBmaQogICAgICAgICBleHBvcnQgQklUQkFLRV9VST0ndG9hc3RlcnVpJwotICAgICAgICAkTUFOQUdFIHJ1bmJ1aWxkcyBcCi0gICAgICAgICAgIDwvZGV2L251bGwgPj4ke0JVSUxERElSfS90b2FzdGVyX3J1bmJ1aWxkcy5sb2cgMj4mMSBcCi0gICAgICAgICAgICYgZWNobyAkISA+JHtCVUlMRERJUn0vLnJ1bmJ1aWxkcy5waWQKKyAgICAgICAgaWYgWyAkVE9BU1RFUl9CVUlMRFNFUlZFUiAtZXEgMSBdIDsgdGhlbgorICAgICAgICAgICAgJE1BTkFHRSBydW5idWlsZHMgXAorICAgICAgICAgICAgICAgPC9kZXYvbnVsbCA+PiR7QlVJTERESVJ9L3RvYXN0ZXJfcnVuYnVpbGRzLmxvZyAyPiYxIFwKKyAgICAgICAgICAgICAgICYgZWNobyAkISA+JHtCVUlMRERJUn0vLnJ1bmJ1aWxkcy5waWQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWNobyAiVG9hc3RlciBidWlsZCBzZXJ2ZXIgbm90IHN0YXJ0ZWQuIgorICAgICAgICBmaQogCiAgICAgICAgICMgc2V0IGZhaWwgc2FmZSBzdG9wIHN5c3RlbSBvbiB0ZXJtaW5hbCBleGl0CiAgICAgICAgIHRyYXAgc3RvcF9zeXN0ZW0gU0lHSFVQCiAgICAgICAgIGVjaG8gIlN1Y2Nlc3NmdWwgJHtDTUR9LiIKKyAgICAgICAgY3VzdG9tX2V4dGVudGlvbiB0b2FzdGVyX3Bvc3RwZW5kICRDTUQgJEFERFJfUE9SVAogICAgICAgICByZXR1cm4gMAogICAgIDs7CiAgICAgc3RvcCApCkBAIC0yNzksMyArMzEwLDUgQEAKICAgICAgICAgZWNobyAiU3VjY2Vzc2Z1bCAke0NNRH0uIgogICAgIDs7CiBlc2FjCitjdXN0b21fZXh0ZW50aW9uIHRvYXN0ZXJfcG9zdHBlbmQgJENNRCAkQUREUl9QT1JUCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKaW5kZXggZDFjZTQzZS4uYzcyMWU4NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKQEAgLTYyMCw3ICs2MjAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEdpdCBTdWJtb2R1bGVzIGZldGNoZXIgaXMgbm90IGEgY29tcGxldGUgZmV0Y2hlcgogICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmV0Y2hlciBoYXMga25vd24gaXNzdWVzIHdoZXJlIGl0IGRvZXMgbm90IHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbCBzb3VyY2UgbWlycm9yaW5nIGluZnJhc3RydWN0dXJlIHByb3Blcmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsIHNvdXJjZSBtaXJyb3JpbmcgaW5mcmFzdHJ1Y3R1cmUgcHJvcGVybHkuIEZ1cnRoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3VibW9kdWxlIHNvdXJjZXMgaXQgZmV0Y2hlcyBhcmUgbm90IHZpc2libGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNpbmcgYW5kIHNvdXJjZSBhcmNoaXZpbmcgaW5mcmFzdHJ1Y3R1cmVzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbAppbmRleCAyNjg1YzBlLi45MjUzZWFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbApAQCAtMTI4LDE1ICsxMjgsOCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBUaGlzIGV4YW1wbGUgd2FzIGluc3BpcmVkIGJ5IGFuZCBkcmV3IGhlYXZpbHkgZnJvbSB0aGVzZSBzb3VyY2VzOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS95b2N0b0B5b2N0b3Byb2plY3Qub3JnL21zZzA5Mzc5Lmh0bWwiPk1haWxpbmcgTGlzdCBwb3N0IC0gVGhlIEJpdEJha2UgZXF1aXZhbGVudCBvZiAiSGVsbG8sIFdvcmxkISI8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE1MDMyNTE2NTkxMS9odHRwOi8vaGFtYmVkZGVkLm9yZy9ibG9nLzIwMTIvMTEvMjQvZnJvbS1iaXRiYWtlLWhlbGxvLXdvcmxkLXRvLWFuLWltYWdlLyI+SGFtYmVkZGVkIExpbnV4IGJsb2cgcG9zdCAtIEZyb20gQml0YmFrZSBIZWxsbyBXb3JsZCB0byBhbiBJbWFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBUaGlzIGV4YW1wbGUgd2FzIGluc3BpcmVkIGJ5IGFuZCBkcmV3IGhlYXZpbHkgZnJvbQorICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3lvY3RvQHlvY3RvcHJvamVjdC5vcmcvbXNnMDkzNzkuaHRtbCI+TWFpbGluZyBMaXN0IHBvc3QgLSBUaGUgQml0QmFrZSBlcXVpdmFsZW50IG9mICJIZWxsbywgV29ybGQhIjwvdWxpbms+LgogICAgICAgICA8L25vdGU+CiAKICAgICAgICAgPHBhcmE+CkBAIC0yNjksNyArMjYyLDcgQEAKICAgICAgICAgICAgICAgICBhbmQgZGVmaW5lIHNvbWUga2V5IEJpdEJha2UgdmFyaWFibGVzLgogICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgc2VlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTUwMzI1MTY1OTExL2h0dHA6Ly9oYW1iZWRkZWQub3JnL2Jsb2cvMjAxMi8xMS8yNC9mcm9tLWJpdGJha2UtaGVsbG8td29ybGQtdG8tYW4taW1hZ2UvI2FuLW92ZXJ2aWV3LW9mLWJpdGJha2Vjb25mJz48L3VsaW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlL3RyZWUvY29uZi9iaXRiYWtlLmNvbmYnPjwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8cGFyYT5Vc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBjcmVhdGUgdGhlIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHByb2plY3QgZGlyZWN0b3J5OgpAQCAtMzUyLDkgKzM0NSw2IEBACiAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB0aGUgPGZpbGVuYW1lPmJhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGNhbiBoYXZlIG11Y2gKICAgICAgICAgICAgICAgICBtb3JlIGRlcGVuZGluZyBvbiB3aGljaCBidWlsZCBlbnZpcm9ubWVudHMgQml0QmFrZSBpcwogICAgICAgICAgICAgICAgIHN1cHBvcnRpbmcuCi0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT5iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gbG9vayBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE1MDMyNTE2NTkxMS9odHRwOi8vaGFtYmVkZGVkLm9yZy9ibG9nLzIwMTIvMTEvMjQvZnJvbS1iaXRiYWtlLWhlbGxvLXdvcmxkLXRvLWFuLWltYWdlLyN0YXNrcyc+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRiYWtlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgQWZ0ZXIgbWFraW5nIHN1cmUgdGhhdCB0aGUgPGZpbGVuYW1lPmNsYXNzZXMvYmFzZS5iYmNsYXNzPC9maWxlbmFtZT4KQEAgLTM3NSw4ICszNjUsOCBAQAogICAgICAgICAgICAgICAgIGNvZGUgc2VwYXJhdGUgZnJvbSB0aGUgZ2VuZXJhbCBtZXRhZGF0YSB1c2VkIGJ5IEJpdEJha2UuCiAgICAgICAgICAgICAgICAgVGh1cywgdGhpcyBleGFtcGxlIGNyZWF0ZXMgYW5kIHVzZXMgYSBsYXllciBjYWxsZWQgIm15bGF5ZXIiLgogICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBhZGRpbmcgYSBsYXllciBhdAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNTAzMjUxNjU5MTEvaHR0cDovL2hhbWJlZGRlZC5vcmcvYmxvZy8yMDEyLzExLzI0L2Zyb20tYml0YmFrZS1oZWxsby13b3JsZC10by1hbi1pbWFnZS8jYWRkaW5nLWFuLWV4YW1wbGUtbGF5ZXInPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBsYXllcnMgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC5odG1sI2xheWVycyc+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8cGFyYT5NaW5pbWFsbHksIHlvdSBuZWVkIGEgcmVjaXBlIGZpbGUgYW5kIGEgbGF5ZXIgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbAppbmRleCBjYTdmNzI0Li4wOGQ5YWZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbApAQCAtNDQwLDcgKzQ0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIENoZWNrb3V0OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIEEgZmluYWwgcG9zc2liaWxpdHkgZm9yIGdldHRpbmcgYSBjb3B5IG9mIEJpdEJha2UgaXMgdGhhdCBpdAogICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGNvbWVzIHdpdGggeW91ciBjaGVja291dCBvZiBhIGxhcmdlciBCaXRiYWtlLWJhc2VkIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgc3VjaCBhcyBQb2t5IG9yIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgc3VjaCBhcyBQb2t5LgogICAgICAgICAgICAgICAgICAgICBSYXRoZXIgdGhhbiBtYW51YWxseSBjaGVja2luZyBvdXQgaW5kaXZpZHVhbCBsYXllcnMgYW5kCiAgICAgICAgICAgICAgICAgICAgIGdsdWluZyB0aGVtIHRvZ2V0aGVyIHlvdXJzZWxmLCB5b3UgY2FuIGNoZWNrCiAgICAgICAgICAgICAgICAgICAgIG91dCBhbiBlbnRpcmUgYnVpbGQgc3lzdGVtLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbAppbmRleCAxZDFlNWIzLi4wY2ZhNTNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApAQCAtNjY5LDcgKzY2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIERFUEVORFMgPSAiZ2xpYmMgbmN1cnNlcyIKICAgICAgT1ZFUlJJREVTID0gIm1hY2hpbmU6bG9jYWwiCi0gICAgIERFUEVORFNfYXBwZW5kX21hY2hpbmUgPSAibGlibWFkIgorICAgICBERVBFTkRTX2FwcGVuZF9tYWNoaW5lID0gIiBsaWJtYWQiCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4gYmVjb21lcwogICAgICAgICAgICAgICAgICAgICAgICAgImdsaWJjIG5jdXJzZXMgbGlibWFkIi4KQEAgLTg5OSwxMSArODk5LDEyIEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+IGRpcmVjdGl2ZSBpcyBhIHJ1ZGltZW50YXJ5Ci0gICAgICAgICAgICAgICAgbWVhbnMgb2Ygc3BlY2lmeWluZyB3aGF0IGNsYXNzZXMgb2YgZnVuY3Rpb25hbGl0eSB5b3VyCi0gICAgICAgICAgICAgICAgcmVjaXBlcyByZXF1aXJlLgorICAgICAgICAgICAgICAgIG1lYW5zIG9mIHNwZWNpZnlpbmcgZnVuY3Rpb25hbGl0eSBjb250YWluZWQgaW4gY2xhc3MgZmlsZXMKKyAgICAgICAgICAgICAgICB0aGF0IHlvdXIgcmVjaXBlcyByZXF1aXJlLgogICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGVhc2lseSBhYnN0cmFjdCBvdXQgdGhlIHRhc2tzIGludm9sdmVkIGluCiAgICAgICAgICAgICAgICAgYnVpbGRpbmcgYSBwYWNrYWdlIHRoYXQgdXNlcyBBdXRvY29uZiBhbmQgQXV0b21ha2UgYW5kIHB1dAotICAgICAgICAgICAgICAgIHRob3NlIHRhc2tzIGludG8gYSBjbGFzcyBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgYnkgeW91ciByZWNpcGUuCisgICAgICAgICAgICAgICAgdGhvc2UgdGFza3MgaW50byBhIGNsYXNzIGZpbGUgYW5kIHRoZW4gaGF2ZSB5b3VyIHJlY2lwZQorICAgICAgICAgICAgICAgIGluaGVyaXQgdGhhdCBjbGFzcyBmaWxlLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTkyMiwxMyArOTIzLDI0IEBACiAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRlZCBjbGFzcyB3aXRoaW4geW91ciByZWNpcGUgYnkgZG9pbmcgc28KICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlICJpbmhlcml0IiBzdGF0ZW1lbnQuCiAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgZGlyZWN0aXZlIHRvIGluaGVyaXQKKyAgICAgICAgICAgICAgICBtdWx0aXBsZSBjbGFzc2VzLCBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gaW5oZXJpdCBib3RoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNsYXNzZXM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBpbmhlcml0IGJ1aWxkaGlzdG9yeSBybV93b3JrCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJZiBuZWNlc3NhcnksIGl0IGlzIHBvc3NpYmxlIHRvIGluaGVyaXQgYSBjbGFzcwotICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsbHkgYnkgdXNpbmcKLSAgICAgICAgICAgICAgICBhIHZhcmlhYmxlIGV4cHJlc3Npb24gYWZ0ZXIgdGhlIDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgQW4gYWR2YW50YWdlIHdpdGggdGhlIGluaGVyaXQgZGlyZWN0aXZlIGFzIGNvbXBhcmVkIHRvIGJvdGgKKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpbmNsdWRlLWRpcmVjdGl2ZSc+aW5jbHVkZTwvbGluaz4gYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVxdWlyZS1pbmNsdXNpb24nPnJlcXVpcmU8L2xpbms+IGRpcmVjdGl2ZXMKKyAgICAgICAgICAgICAgICBpcyB0aGF0IHlvdSBjYW4gaW5oZXJpdCBjbGFzcyBmaWxlcyBjb25kaXRpb25hbGx5LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IHVzaW5nIGEgdmFyaWFibGUgZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgIGFmdGVyIHRoZSA8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+IHN0YXRlbWVudC4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBpbmhlcml0ICR7VkFSTkFNRX0KQEAgLTk4NSw2ICs5OTcsMTcgQEAKICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGluY2x1ZGUgZGlyZWN0aXZlIGlzIGEgbW9yZSBnZW5lcmljIG1ldGhvZCBvZiBpbmNsdWRpbmcKKyAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGFzIGNvbXBhcmVkIHRvIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2luaGVyaXQtZGlyZWN0aXZlJz5pbmhlcml0PC9saW5rPiBkaXJlY3RpdmUsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgcmVzdHJpY3RlZCB0byBjbGFzcyAoaS5lLiA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGUgaW5jbHVkZSBkaXJlY3RpdmUgaXMgYXBwbGljYWJsZSBmb3IgYW55IG90aGVyIGtpbmQgb2YKKyAgICAgICAgICAgICAgICBzaGFyZWQgb3IgZW5jYXBzdWxhdGVkIGZ1bmN0aW9uYWxpdHkgb3IgY29uZmlndXJhdGlvbiB0aGF0CisgICAgICAgICAgICAgICAgZG9lcyBub3Qgc3VpdCBhIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IG5lZWRlZCBhIHJlY2lwZSB0byBpbmNsdWRlIHNvbWUKICAgICAgICAgICAgICAgICBzZWxmLXRlc3QgZGVmaW5pdGlvbnM6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMTAxOCw2ICsxMDQxLDE4IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSByZXF1aXJlIGRpcmVjdGl2ZSwgbGlrZSB0aGUgaW5jbHVkZSBkaXJlY3RpdmUgcHJldmlvdXNseQorICAgICAgICAgICAgICAgIGRlc2NyaWJlZCwgaXMgYSBtb3JlIGdlbmVyaWMgbWV0aG9kIG9mIGluY2x1ZGluZworICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgYXMgY29tcGFyZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naW5oZXJpdC1kaXJlY3RpdmUnPmluaGVyaXQ8L2xpbms+IGRpcmVjdGl2ZSwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyByZXN0cmljdGVkIHRvIGNsYXNzIChpLmUuIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgIFRoZSByZXF1aXJlIGRpcmVjdGl2ZSBpcyBhcHBsaWNhYmxlIGZvciBhbnkgb3RoZXIga2luZCBvZgorICAgICAgICAgICAgICAgIHNoYXJlZCBvciBlbmNhcHN1bGF0ZWQgZnVuY3Rpb25hbGl0eSBvciBjb25maWd1cmF0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICBkb2VzIG5vdCBzdWl0IGEgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgU2ltaWxhciB0byBob3cgQml0QmFrZSBoYW5kbGVzCiAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naW5jbHVkZS1kaXJlY3RpdmUnPjxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT48L2xpbms+LAogICAgICAgICAgICAgICAgIGlmIHRoZSBwYXRoIHNwZWNpZmllZApAQCAtMTA0OSw4ICsxMDg0LDkgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgV2hlbiBjcmVhdGluZyBhIGNvbmZpZ3VyYXRpb24gZmlsZSAoPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4pLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+IGRpcmVjdGl2ZSB0bwotICAgICAgICAgICAgICAgIGluaGVyaXQgYSBjbGFzcy4KKyAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5IRVJJVCc+PGZpbGVuYW1lPklOSEVSSVQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSB0byBpbmhlcml0IGEgY2xhc3MuCiAgICAgICAgICAgICAgICAgQml0QmFrZSBvbmx5IHN1cHBvcnRzIHRoaXMgZGlyZWN0aXZlIHdoZW4gdXNlZCB3aXRoaW4KICAgICAgICAgICAgICAgICBhIGNvbmZpZ3VyYXRpb24gZmlsZS4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTEwODMsNyArMTExOSw3IEBACiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cGtnY29uZmlnPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBjbGFzc2VzOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisgICAgIElOSEVSSVQgKz0gImF1dG90b29scyBwa2djb25maWciCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CkBAIC0yMDI5LDcgKzIwNjUsNyBAQAogICAgICAgICAgICAgYmVmb3JlIGFueSB0YXNrcyBhcmUgZXhlY3V0ZWQgc28gd291bGQgYmUgaW4gdGhlIGdsb2JhbAogICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkYXRhc3RvcmUgbmFtZXNwYWNlLgogICAgICAgICAgICAgTm8gcmVjaXBlLXNwZWNpZmljIG1ldGFkYXRhIGV4aXN0cyBpbiB0aGF0IG5hbWVzcGFjZS4KLSAgICAgICAgICAgIFRoZSAiQnVpbGRTdGFydGVkIiBhbmQgImJ1aWxkQ29tcGxldGVkIiBldmVudHMgYWxzbyBydW4gaW4KKyAgICAgICAgICAgIFRoZSAiQnVpbGRTdGFydGVkIiBhbmQgIkJ1aWxkQ29tcGxldGVkIiBldmVudHMgYWxzbyBydW4gaW4KICAgICAgICAgICAgIHRoZSBtYWluIGNvb2tlci9zZXJ2ZXIgcHJvY2VzcyByYXRoZXIgdGhhbiBhbnkgd29ya2VyIGNvbnRleHQuCiAgICAgICAgICAgICBUaHVzLCBhbnkgY2hhbmdlcyBtYWRlIHRvIHRoZSBkYXRhc3RvcmUgd291bGQgYmUgc2VlbiBieSBvdGhlcgogICAgICAgICAgICAgY29va2VyL3NlcnZlciBldmVudHMgd2l0aGluIHRoZSBjdXJyZW50IGJ1aWxkIGJ1dCBub3Qgc2VlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggMGU4OWJmMi4uZDg5ZTEyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sCkBAIC0xMTQzLDggKzExNDMsNiBAQAogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBTZXRzIHRoZSBiYXNlIGxvY2F0aW9uIHdoZXJlIGxheWVycyBhcmUgc3RvcmVkLgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGxvY2F0aW9uIGlzIHNldCB0bwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtDT1JFQkFTRX08L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBzZXR0aW5nIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgbGF5ZXJpbmRleC1mZXRjaDwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICAgICAgICAgICB0ZWxscyA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiB3aGVyZSB0byBwbGFjZQpAQCAtMTU5Niw5ICsxNTk0LDE5IEBACiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItSU5IRVJJVCc+PGdsb3NzdGVybT5JTkhFUklUPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIENhdXNlcyB0aGUgbmFtZWQgY2xhc3MgdG8gYmUgaW5oZXJpdGVkIGF0Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMgcG9pbnQgZHVyaW5nIHBhcnNpbmcuCi0gICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBpcyBvbmx5IHZhbGlkIGluIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIENhdXNlcyB0aGUgbmFtZWQgY2xhc3Mgb3IgY2xhc3NlcyB0byBiZSBpbmhlcml0ZWQgZ2xvYmFsbHkuCisgICAgICAgICAgICAgICAgICAgIEFub255bW91cyBmdW5jdGlvbnMgaW4gdGhlIGNsYXNzIG9yIGNsYXNzZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCBleGVjdXRlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGJhc2UgY29uZmlndXJhdGlvbiBhbmQgaW4gZWFjaCBpbmRpdmlkdWFsIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaWdub3JlcyBjaGFuZ2VzIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gaW4gaW5kaXZpZHVhbCByZWNpcGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+LCBzZWUKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSJpbmhlcml0LWNvbmZpZ3VyYXRpb24tZGlyZWN0aXZlIj48ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+IENvbmZpZ3VyYXRpb24gRGlyZWN0aXZlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xODkzLDcgKzE5MDEsNyBAQAogICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSB0d28gZXhhbXBsZXM6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uID0gIjIuNy4zIgotICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA9ICIzLjEwJSIKKyAgICAgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPSAiNC4xMiUiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL0NPVy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKaW5kZXggMzZlYmJkOS4uYmVjNjIwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL0NPVy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5CkBAIC0zLDcgKzMsNyBAQAogIwogIyBUaGlzIGlzIGEgY29weSBvbiB3cml0ZSBkaWN0aW9uYXJ5IGFuZCBzZXQgd2hpY2ggYWJ1c2VzIGNsYXNzZXMgdG8gdHJ5IGFuZCBiZSBuaWNlIGFuZCBmYXN0LgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDYgVGltIEFtc2VsbAorIyBDb3B5cmlnaHQgKEMpIDIwMDYgVGltIEFuc2VsbAogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CmluZGV4IGJmZTBjYTUuLjUyNjg4MzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKQEAgLTIxLDcgKzIxLDcgQEAKICMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KIAotX192ZXJzaW9uX18gPSAiMS4zNC4wIgorX192ZXJzaW9uX18gPSAiMS4zNi4wIgogCiBpbXBvcnQgc3lzCiBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDQsIDApOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CmluZGV4IGU3ZWViNGYuLjg2Y2UwZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKQEAgLTg2LDkgKzg2LDkgQEAKIGNsYXNzIENvcmVSZWNpcGVJbmZvKFJlY2lwZUluZm9Db21tb24pOgogICAgIF9fc2xvdHNfXyA9ICgpCiAKLSAgICBjYWNoZWZpbGUgPSAiYmJfY2FjaGUuZGF0IiAgIAorICAgIGNhY2hlZmlsZSA9ICJiYl9jYWNoZS5kYXQiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1ldGFkYXRhKTogICAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1ldGFkYXRhKToKICAgICAgICAgc2VsZi5maWxlX2RlcGVuZHMgPSBtZXRhZGF0YS5nZXRWYXIoJ19fZGVwZW5kcycsIEZhbHNlKQogICAgICAgICBzZWxmLnRpbWVzdGFtcCA9IGJiLnBhcnNlLmNhY2hlZF9tdGltZShmaWxlbmFtZSkKICAgICAgICAgc2VsZi52YXJpYW50cyA9IHNlbGYubGlzdHZhcignX19WQVJJQU5UUycsIG1ldGFkYXRhKSArIFsnJ10KQEAgLTEwNyw3ICsxMDcsNyBAQAogCiAgICAgICAgIHNlbGYucG4gPSBzZWxmLmdldHZhcignUE4nLCBtZXRhZGF0YSkKICAgICAgICAgc2VsZi5wYWNrYWdlcyA9IHNlbGYubGlzdHZhcignUEFDS0FHRVMnLCBtZXRhZGF0YSkKLSAgICAgICAgaWYgbm90IHNlbGYucG4gaW4gc2VsZi5wYWNrYWdlczoKKyAgICAgICAgaWYgbm90IHNlbGYucGFja2FnZXM6CiAgICAgICAgICAgICBzZWxmLnBhY2thZ2VzLmFwcGVuZChzZWxmLnBuKQogCiAgICAgICAgIHNlbGYuYmFzZXRhc2toYXNoZXMgPSBzZWxmLnRhc2t2YXIoJ0JCX0JBU0VIQVNIJywgc2VsZi50YXNrcywgbWV0YWRhdGEpCkBAIC0xMjIsNyArMTIyLDcgQEAKICAgICAgICAgc2VsZi5kZWZhdWx0cHJlZiA9IHNlbGYuaW50dmFyKCdERUZBVUxUX1BSRUZFUkVOQ0UnLCBtZXRhZGF0YSkKICAgICAgICAgc2VsZi5ub3Rfd29ybGQgPSBzZWxmLmdldHZhcignRVhDTFVERV9GUk9NX1dPUkxEJywgbWV0YWRhdGEpCiAgICAgICAgIHNlbGYuc3RhbXAgPSBzZWxmLmdldHZhcignU1RBTVAnLCBtZXRhZGF0YSkKLSAgICAgICAgc2VsZi5zdGFtcGNsZWFuID0gc2VsZi5nZXR2YXIoJ1NUQU1QQ0xFQU4nLCBtZXRhZGF0YSkgICAgICAgIAorICAgICAgICBzZWxmLnN0YW1wY2xlYW4gPSBzZWxmLmdldHZhcignU1RBTVBDTEVBTicsIG1ldGFkYXRhKQogICAgICAgICBzZWxmLnN0YW1wX2V4dHJhaW5mbyA9IHNlbGYuZmxhZ2xpc3QoJ3N0YW1wLWV4dHJhLWluZm8nLCBzZWxmLnRhc2tzLCBtZXRhZGF0YSkKICAgICAgICAgc2VsZi5maWxlX2NoZWNrc3VtcyA9IHNlbGYuZmxhZ2xpc3QoJ2ZpbGUtY2hlY2tzdW1zJywgc2VsZi50YXNrcywgbWV0YWRhdGEsIFRydWUpCiAgICAgICAgIHNlbGYucGFja2FnZXNfZHluYW1pYyA9IHNlbGYubGlzdHZhcignUEFDS0FHRVNfRFlOQU1JQycsIG1ldGFkYXRhKQpAQCAtMjE3LDcgKzIxNyw3IEBACiAgICAgICAgICAgICBjYWNoZWRhdGEucGFja2FnZXNfZHluYW1pY1twYWNrYWdlXS5hcHBlbmQoZm4pCiAKICAgICAgICAgIyBCdWlsZCBoYXNoIG9mIHJ1bnRpbWUgZGVwZW5kcyBhbmQgcmVjb21tZW5kcwotICAgICAgICBmb3IgcGFja2FnZSBpbiBzZWxmLnBhY2thZ2VzICsgW3NlbGYucG5dOgorICAgICAgICBmb3IgcGFja2FnZSBpbiBzZWxmLnBhY2thZ2VzOgogICAgICAgICAgICAgY2FjaGVkYXRhLnJ1bmRlcHNbZm5dW3BhY2thZ2VdID0gbGlzdChzZWxmLnJkZXBlbmRzKSArIHNlbGYucmRlcGVuZHNfcGtnW3BhY2thZ2VdCiAgICAgICAgICAgICBjYWNoZWRhdGEucnVucmVjc1tmbl1bcGFja2FnZV0gPSBsaXN0KHNlbGYucnJlY29tbWVuZHMpICsgc2VsZi5ycmVjb21tZW5kc19wa2dbcGFja2FnZV0KIApAQCAtMzc1LDggKzM3NSw4IEBACiAgICAgICAgIGRhdGEgPSBkYXRhYnVpbGRlci5kYXRhCiAKICAgICAgICAgIyBQYXNzIGNhY2hlc19hcnJheSBpbmZvcm1hdGlvbiBpbnRvIENhY2hlIENvbnN0cnVjdG9yCi0gICAgICAgICMgSXQgd2lsbCBiZSB1c2VkIGxhdGVyIGZvciBkZWNpZGluZyB3aGV0aGVyIHdlIAotICAgICAgICAjIG5lZWQgZXh0cmEgY2FjaGUgZmlsZSBkdW1wL2xvYWQgc3VwcG9ydCAKKyAgICAgICAgIyBJdCB3aWxsIGJlIHVzZWQgbGF0ZXIgZm9yIGRlY2lkaW5nIHdoZXRoZXIgd2UKKyAgICAgICAgIyBuZWVkIGV4dHJhIGNhY2hlIGZpbGUgZHVtcC9sb2FkIHN1cHBvcnQKICAgICAgICAgc2VsZi5jYWNoZXNfYXJyYXkgPSBjYWNoZXNfYXJyYXkKICAgICAgICAgc2VsZi5jYWNoZWRpciA9IGRhdGEuZ2V0VmFyKCJDQUNIRSIpCiAgICAgICAgIHNlbGYuY2xlYW4gPSBzZXQoKQpAQCAtNDIxLDcgKzQyMSw3IEBACiAgICAgICAgICAgICAgICAgY2FjaGVzaXplICs9IG9zLmZzdGF0KGNhY2hlZmlsZS5maWxlbm8oKSkuc3Rfc2l6ZQogCiAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQ2FjaGVMb2FkU3RhcnRlZChjYWNoZXNpemUpLCBzZWxmLmRhdGEpCi0gICAgICAgIAorCiAgICAgICAgIGZvciBjYWNoZV9jbGFzcyBpbiBzZWxmLmNhY2hlc19hcnJheToKICAgICAgICAgICAgIGNhY2hlZmlsZSA9IGdldENhY2hlRmlsZShzZWxmLmNhY2hlZGlyLCBjYWNoZV9jbGFzcy5jYWNoZWZpbGUsIHNlbGYuZGF0YV9oYXNoKQogICAgICAgICAgICAgd2l0aCBvcGVuKGNhY2hlZmlsZSwgInJiIikgYXMgY2FjaGVmaWxlOgpAQCAtNDM4LDggKzQzOCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDYWNoZSB2ZXJzaW9uIG1pc21hdGNoLCByZWJ1aWxkaW5nLi4uJykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgZWxpZiBiaXRiYWtlX3ZlciAhPSBiYi5fX3ZlcnNpb25fXzoKLSAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdCaXRiYWtlIHZlcnNpb24gbWlzbWF0Y2gsIHJlYnVpbGRpbmcuLi4nKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdCaXRiYWtlIHZlcnNpb24gbWlzbWF0Y2gsIHJlYnVpbGRpbmcuLi4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAgICAgICAgICMgTG9hZCB0aGUgcmVzdCBvZiB0aGUgY2FjaGUgZmlsZQogICAgICAgICAgICAgICAgIGN1cnJlbnRfcHJvZ3Jlc3MgPSAwCkBAIC02MTYsMTMgKzYxNiwxMyBAQAogICAgICAgICAgICAgICAgICAgICBhID0gZmwuZmluZCgiOlRydWUiKQogICAgICAgICAgICAgICAgICAgICBiID0gZmwuZmluZCgiOkZhbHNlIikKICAgICAgICAgICAgICAgICAgICAgaWYgKChhIDwgMCkgYW5kIGIpIG9yICgoYiA+IDApIGFuZCAoYiA8IGEpKToKLSAgICAgICAgICAgICAgICAgICAgICAgZiA9IGZsWzpiKzZdCi0gICAgICAgICAgICAgICAgICAgICAgIGZsID0gZmxbYis3Ol0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmbFs6Yis2XQorICAgICAgICAgICAgICAgICAgICAgICAgZmwgPSBmbFtiKzc6XQogICAgICAgICAgICAgICAgICAgICBlbGlmICgoYiA8IDApIGFuZCBhKSBvciAoKGEgPiAwKSBhbmQgKGEgPCBiKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgIGYgPSBmbFs6YSs1XQotICAgICAgICAgICAgICAgICAgICAgICBmbCA9IGZsW2ErNjpdCisgICAgICAgICAgICAgICAgICAgICAgICBmID0gZmxbOmErNV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZsID0gZmxbYSs2Ol0KICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGZsID0gZmwuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICBpZiAiKiIgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC04ODYsNCArODg2LDMgQEAKICAgICAgICAgICAgIHAuZHVtcChbZGF0YSwgc2VsZi5fX2NsYXNzX18uQ0FDSEVfVkVSU0lPTl0pCiAKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShnbGYpCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb21tYW5kLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkKaW5kZXggYTkxOWY1OC4uNmM5NjZlMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkKQEAgLTUwLDYgKzUwLDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHNlbGYuZXJyb3IgPSBtZXNzYWdlCiAgICAgICAgIENvbW1hbmRFeGl0Ll9faW5pdF9fKHNlbGYsIDEpCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAiQ29tbWFuZCBleGVjdXRpb24gZmFpbGVkOiAlcyIgJSBzZWxmLmVycm9yCiAKIGNsYXNzIENvbW1hbmRFcnJvcihFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTc2LDcgKzc4LDggQEAKICAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihjb21tYW5kX21ldGhvZCwgJ3JlYWRvbmx5Jykgb3IgRmFsc2UgPT0gZ2V0YXR0cihjb21tYW5kX21ldGhvZCwgJ3JlYWRvbmx5Jyk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCAiTm90IGFibGUgdG8gZXhlY3V0ZSBub3QgcmVhZG9ubHkgY29tbWFuZHMgaW4gcmVhZG9ubHkgbW9kZSIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGNvbW1hbmRfbWV0aG9kLCAnbmVlZGNvbmZpZycsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvb2tlci5wcm9jZXNzX2lub3RpZnlfdXBkYXRlcygpCisgICAgICAgICAgICAgICAgaWYgZ2V0YXR0cihjb21tYW5kX21ldGhvZCwgJ25lZWRjb25maWcnLCBUcnVlKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb29rZXIudXBkYXRlQ2FjaGVTeW5jKCkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21tYW5kX21ldGhvZChzZWxmLCBjb21tYW5kbGluZSkKICAgICAgICAgICAgIGV4Y2VwdCBDb21tYW5kRXJyb3IgYXMgZXhjOgpAQCAtOTYsNiArOTksNyBAQAogCiAgICAgZGVmIHJ1bkFzeW5jQ29tbWFuZChzZWxmKToKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jb29rZXIucHJvY2Vzc19pbm90aWZ5X3VwZGF0ZXMoKQogICAgICAgICAgICAgaWYgc2VsZi5jb29rZXIuc3RhdGUgaW4gKGJiLmNvb2tlci5zdGF0ZS5lcnJvciwgYmIuY29va2VyLnN0YXRlLnNodXRkb3duLCBiYi5jb29rZXIuc3RhdGUuZm9yY2VzaHV0ZG93bik6CiAgICAgICAgICAgICAgICAgIyB1cGRhdGVDYWNoZSB3aWxsIHRyaWdnZXIgYSBzaHV0ZG93biBvZiB0aGUgcGFyc2VyCiAgICAgICAgICAgICAgICAgIyBhbmQgdGhlbiByYWlzZSBCQkhhbmRsZWRFeGNlcHRpb24gdHJpZ2dlcmluZyBhbiBleGl0CkBAIC0xNDEsNiArMTQ1LDkgQEAKICAgICAgICAgc2VsZi5jdXJyZW50QXN5bmNDb21tYW5kID0gTm9uZQogICAgICAgICBzZWxmLmNvb2tlci5maW5pc2hjb21tYW5kKCkKIAorICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgc2VsZi5yZW1vdGVkYXRhc3RvcmVzID0gYmIucmVtb3RlZGF0YS5SZW1vdGVEYXRhc3RvcmVzKHNlbGYuY29va2VyKQorCiBkZWYgc3BsaXRfbWNfcG4ocG4pOgogICAgIGlmIHBuLnN0YXJ0c3dpdGgoIm11bHRpY29uZmlnOiIpOgogICAgICAgICBfLCBtYywgcG4gPSBwbi5zcGxpdCgiOiIsIDIpCkBAIC0yMzMsNTkgKzI0MCwxNSBAQAogICAgICAgICBjb21tYW5kLmNvb2tlci5jb25maWd1cmF0aW9uLnBvc3RmaWxlID0gcG9zdGZpbGVzCiAgICAgc2V0UHJlUG9zdENvbmZGaWxlcy5uZWVkY29uZmlnID0gRmFsc2UKIAotICAgIGRlZiBnZXRDcHVDb3VudChzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICAiIiIKLSAgICAgICAgR2V0IHRoZSBDUFUgY291bnQgb24gdGhlIGJpdGJha2Ugc2VydmVyCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gYmIudXRpbHMuY3B1X2NvdW50KCkKLSAgICBnZXRDcHVDb3VudC5yZWFkb25seSA9IFRydWUKLSAgICBnZXRDcHVDb3VudC5uZWVkY29uZmlnID0gRmFsc2UKLQogICAgIGRlZiBtYXRjaEZpbGUoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKICAgICAgICAgZk1hdGNoID0gcGFyYW1zWzBdCiAgICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5tYXRjaEZpbGUoZk1hdGNoKQogICAgIG1hdGNoRmlsZS5uZWVkY29uZmlnID0gRmFsc2UKIAotICAgIGRlZiBnZW5lcmF0ZU5ld0ltYWdlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIGltYWdlID0gcGFyYW1zWzBdCi0gICAgICAgIGJhc2VfaW1hZ2UgPSBwYXJhbXNbMV0KLSAgICAgICAgcGFja2FnZV9xdWV1ZSA9IHBhcmFtc1syXQotICAgICAgICB0aW1lc3RhbXAgPSBwYXJhbXNbM10KLSAgICAgICAgZGVzY3JpcHRpb24gPSBwYXJhbXNbNF0KLSAgICAgICAgcmV0dXJuIGNvbW1hbmQuY29va2VyLmdlbmVyYXRlTmV3SW1hZ2UoaW1hZ2UsIGJhc2VfaW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlX3F1ZXVlLCB0aW1lc3RhbXAsIGRlc2NyaXB0aW9uKQotCi0gICAgZGVmIGVuc3VyZURpcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICBkaXJlY3RvcnkgPSBwYXJhbXNbMF0KLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRpcmVjdG9yeSkKLSAgICBlbnN1cmVEaXIubmVlZGNvbmZpZyA9IEZhbHNlCi0KLSAgICBkZWYgc2V0VmFyRmlsZShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICAiIiIKLSAgICAgICAgU2F2ZSBhIHZhcmlhYmxlIGluIGEgZmlsZTsgdXNlZCBmb3Igc2F2aW5nIGluIGEgY29uZmlndXJhdGlvbiBmaWxlCi0gICAgICAgICIiIgotICAgICAgICB2YXIgPSBwYXJhbXNbMF0KLSAgICAgICAgdmFsID0gcGFyYW1zWzFdCi0gICAgICAgIGRlZmF1bHRfZmlsZSA9IHBhcmFtc1syXQotICAgICAgICBvcCA9IHBhcmFtc1szXQotICAgICAgICBjb21tYW5kLmNvb2tlci5tb2RpZnlDb25maWd1cmF0aW9uVmFyKHZhciwgdmFsLCBkZWZhdWx0X2ZpbGUsIG9wKQotICAgIHNldFZhckZpbGUubmVlZGNvbmZpZyA9IEZhbHNlCi0KLSAgICBkZWYgcmVtb3ZlVmFyRmlsZShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICAiIiIKLSAgICAgICAgUmVtb3ZlIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gZnJvbSBhIGZpbGUKLSAgICAgICAgIiIiCi0gICAgICAgIHZhciA9IHBhcmFtc1swXQotICAgICAgICBjb21tYW5kLmNvb2tlci5yZW1vdmVDb25maWd1cmF0aW9uVmFyKHZhcikKLSAgICByZW1vdmVWYXJGaWxlLm5lZWRjb25maWcgPSBGYWxzZQotCi0gICAgZGVmIGNyZWF0ZUNvbmZpZ0ZpbGUoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZSBhbiBleHRyYSBjb25maWd1cmF0aW9uIGZpbGUKLSAgICAgICAgIiIiCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMF0KLSAgICAgICAgY29tbWFuZC5jb29rZXIuY3JlYXRlQ29uZmlnRmlsZShuYW1lKQotICAgIGNyZWF0ZUNvbmZpZ0ZpbGUubmVlZGNvbmZpZyA9IEZhbHNlCisgICAgZGVmIGdldFVJSGFuZGxlck51bShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgICAgICByZXR1cm4gYmIuZXZlbnQuZ2V0X3VpaGFuZGxlcigpCisgICAgZ2V0VUlIYW5kbGVyTnVtLm5lZWRjb25maWcgPSBGYWxzZQorICAgIGdldFVJSGFuZGxlck51bS5yZWFkb25seSA9IFRydWUKIAogICAgIGRlZiBzZXRFdmVudE1hc2soc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKICAgICAgICAgaGFuZGxlck51bSA9IHBhcmFtc1swXQpAQCAtMzIzLDYgKzI4Niw3IEBACiAgICAgcGFyc2VDb25maWd1cmF0aW9uLm5lZWRjb25maWcgPSBGYWxzZQogCiAgICAgZGVmIGdldExheWVyUHJpb3JpdGllcyhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgICAgICBjb21tYW5kLmNvb2tlci5wYXJzZUNvbmZpZ3VyYXRpb24oKQogICAgICAgICByZXQgPSBbXQogICAgICAgICAjIHJlZ2V4IG9iamVjdHMgY2Fubm90IGJlIG1hcnNoYWxsZWQgYnkgeG1scnBjCiAgICAgICAgIGZvciBjb2xsZWN0aW9uLCBwYXR0ZXJuLCByZWdleCwgcHJpIGluIGNvbW1hbmQuY29va2VyLmJiZmlsZV9jb25maWdfcHJpb3JpdGllczoKQEAgLTM1NCw2ICszMTgsMzggQEAKICAgICAgICAgcmV0dXJuIGNvbW1hbmQuY29va2VyLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BlcHZwcgogICAgIGdldFJlY2lwZVZlcnNpb25zLnJlYWRvbmx5ID0gVHJ1ZQogCisgICAgZGVmIGdldFJlY2lwZVByb3ZpZGVzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1jID0gcGFyYW1zWzBdCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgbWMgPSAnJworICAgICAgICByZXR1cm4gY29tbWFuZC5jb29rZXIucmVjaXBlY2FjaGVzW21jXS5mbl9wcm92aWRlcworICAgIGdldFJlY2lwZVByb3ZpZGVzLnJlYWRvbmx5ID0gVHJ1ZQorCisgICAgZGVmIGdldFJlY2lwZVBhY2thZ2VzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1jID0gcGFyYW1zWzBdCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgbWMgPSAnJworICAgICAgICByZXR1cm4gY29tbWFuZC5jb29rZXIucmVjaXBlY2FjaGVzW21jXS5wYWNrYWdlcworICAgIGdldFJlY2lwZVBhY2thZ2VzLnJlYWRvbmx5ID0gVHJ1ZQorCisgICAgZGVmIGdldFJlY2lwZVBhY2thZ2VzRHluYW1pYyhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtYyA9IHBhcmFtc1swXQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIG1jID0gJycKKyAgICAgICAgcmV0dXJuIGNvbW1hbmQuY29va2VyLnJlY2lwZWNhY2hlc1ttY10ucGFja2FnZXNfZHluYW1pYworICAgIGdldFJlY2lwZVBhY2thZ2VzRHluYW1pYy5yZWFkb25seSA9IFRydWUKKworICAgIGRlZiBnZXRSUHJvdmlkZXJzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1jID0gcGFyYW1zWzBdCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgbWMgPSAnJworICAgICAgICByZXR1cm4gY29tbWFuZC5jb29rZXIucmVjaXBlY2FjaGVzW21jXS5ycHJvdmlkZXJzCisgICAgZ2V0UlByb3ZpZGVycy5yZWFkb25seSA9IFRydWUKKwogICAgIGRlZiBnZXRSdW50aW1lRGVwZW5kcyhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICByZXQgPSBbXQogICAgICAgICB0cnk6CkBAIC01OTIsMTEgKzU4OCwxNCBAQAogICAgICAgICBiZmlsZSA9IHBhcmFtc1swXQogICAgICAgICB0YXNrID0gcGFyYW1zWzFdCiAgICAgICAgIGlmIGxlbihwYXJhbXMpID4gMjoKLSAgICAgICAgICAgIGhpZGV3YXJuaW5nID0gcGFyYW1zWzJdCisgICAgICAgICAgICBpbnRlcm5hbCA9IHBhcmFtc1syXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaGlkZXdhcm5pbmcgPSBGYWxzZQorICAgICAgICAgICAgaW50ZXJuYWwgPSBGYWxzZQogCi0gICAgICAgIGNvbW1hbmQuY29va2VyLmJ1aWxkRmlsZShiZmlsZSwgdGFzaywgaGlkZXdhcm5pbmcpCisgICAgICAgIGlmIGludGVybmFsOgorICAgICAgICAgICAgY29tbWFuZC5jb29rZXIuYnVpbGRGaWxlSW50ZXJuYWwoYmZpbGUsIHRhc2ssIGZpcmVldmVudHM9RmFsc2UsIHF1aWV0bG9nPVRydWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21tYW5kLmNvb2tlci5idWlsZEZpbGUoYmZpbGUsIHRhc2spCiAgICAgYnVpbGRGaWxlLm5lZWRjYWNoZSA9IEZhbHNlCiAKICAgICBkZWYgYnVpbGRUYXJnZXRzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CkBAIC02NDYsMTcgKzY0NSw2IEBACiAgICAgICAgIGNvbW1hbmQuZmluaXNoQXN5bmNDb21tYW5kKCkKICAgICBnZW5lcmF0ZVRhcmdldHNUcmVlLm5lZWRjYWNoZSA9IFRydWUKIAotICAgIGRlZiBmaW5kQ29yZUJhc2VGaWxlcyhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICAiIiIKLSAgICAgICAgRmluZCBjZXJ0YWluIGZpbGVzIGluIENPUkVCQVNFIGRpcmVjdG9yeS4gaS5lLiBMYXllcnMKLSAgICAgICAgIiIiCi0gICAgICAgIHN1YmRpciA9IHBhcmFtc1swXQotICAgICAgICBmaWxlbmFtZSA9IHBhcmFtc1sxXQotCi0gICAgICAgIGNvbW1hbmQuY29va2VyLmZpbmRDb3JlQmFzZUZpbGVzKHN1YmRpciwgZmlsZW5hbWUpCi0gICAgICAgIGNvbW1hbmQuZmluaXNoQXN5bmNDb21tYW5kKCkKLSAgICBmaW5kQ29yZUJhc2VGaWxlcy5uZWVkY2FjaGUgPSBGYWxzZQotCiAgICAgZGVmIGZpbmRDb25maWdGaWxlcyhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICAiIiIKICAgICAgICAgRmluZCBjb25maWcgZmlsZXMgd2hpY2ggcHJvdmlkZSBhcHByb3ByaWF0ZSB2YWx1ZXMKQEAgLTc2NCwzICs3NTIsMTQgQEAKICAgICAgICAgY29tbWFuZC5maW5pc2hBc3luY0NvbW1hbmQoKQogICAgIGNsaWVudENvbXBsZXRlLm5lZWRjYWNoZSA9IEZhbHNlCiAKKyAgICBkZWYgZmluZFNpZ0luZm8oc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKKyAgICAgICAgIiIiCisgICAgICAgIEZpbmQgc2lnbmF0dXJlIGluZm8gZmlsZXMgdmlhIHRoZSBzaWduYXR1cmUgZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICBwbiA9IHBhcmFtc1swXQorICAgICAgICB0YXNrbmFtZSA9IHBhcmFtc1sxXQorICAgICAgICBzaWdzID0gcGFyYW1zWzJdCisgICAgICAgIHJlcyA9IGJiLnNpZ2dlbi5maW5kX3NpZ2luZm8ocG4sIHRhc2tuYW1lLCBzaWdzLCBjb21tYW5kLmNvb2tlci5kYXRhKQorICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkZpbmRTaWdJbmZvUmVzdWx0KHJlcyksIGNvbW1hbmQuY29va2VyLmRhdGEpCisgICAgICAgIGNvbW1hbmQuZmluaXNoQXN5bmNDb21tYW5kKCkKKyAgICBmaW5kU2lnSW5mby5uZWVkY2FjaGUgPSBGYWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKaW5kZXggM2M5ZTg4Yy4uYzdmZGQ3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CkBAIC0xODEsMTUgKzE4MSwxNSBAQAogICAgICAgICBzZWxmLmNvbmZpZ25vdGlmaWVyID0gcHlpbm90aWZ5Lk5vdGlmaWVyKHNlbGYuY29uZmlnd2F0Y2hlciwgc2VsZi5jb25maWdfbm90aWZpY2F0aW9ucykKICAgICAgICAgc2VsZi53YXRjaG1hc2sgPSBweWlub3RpZnkuSU5fQ0xPU0VfV1JJVEUgfCBweWlub3RpZnkuSU5fQ1JFQVRFIHwgcHlpbm90aWZ5LklOX0RFTEVURSB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICBweWlub3RpZnkuSU5fREVMRVRFX1NFTEYgfCBweWlub3RpZnkuSU5fTU9ESUZZIHwgcHlpbm90aWZ5LklOX01PVkVfU0VMRiB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBweWlub3RpZnkuSU5fTU9WRURfRlJPTSB8IHB5aW5vdGlmeS5JTl9NT1ZFRF9UTyAKKyAgICAgICAgICAgICAgICAgICAgICAgICBweWlub3RpZnkuSU5fTU9WRURfRlJPTSB8IHB5aW5vdGlmeS5JTl9NT1ZFRF9UTwogICAgICAgICBzZWxmLndhdGNoZXIgPSBweWlub3RpZnkuV2F0Y2hNYW5hZ2VyKCkKICAgICAgICAgc2VsZi53YXRjaGVyLmJic2VlbiA9IFtdCiAgICAgICAgIHNlbGYud2F0Y2hlci5iYndhdGNoZWRmaWxlcyA9IFtdCiAgICAgICAgIHNlbGYubm90aWZpZXIgPSBweWlub3RpZnkuTm90aWZpZXIoc2VsZi53YXRjaGVyLCBzZWxmLm5vdGlmaWNhdGlvbnMpCiAKLSAgICAgICAgIyBJZiBiZWluZyBjYWxsZWQgYnkgc29tZXRoaW5nIGxpa2UgdGluZm9pbCwgd2UgbmVlZCB0byBjbGVhbiBjYWNoZWQgZGF0YSAKKyAgICAgICAgIyBJZiBiZWluZyBjYWxsZWQgYnkgc29tZXRoaW5nIGxpa2UgdGluZm9pbCwgd2UgbmVlZCB0byBjbGVhbiBjYWNoZWQgZGF0YQogICAgICAgICAjIHdoaWNoIG1heSBub3cgYmUgaW52YWxpZAotICAgICAgICBiYi5wYXJzZS5fX210aW1lX2NhY2hlID0ge30KKyAgICAgICAgYmIucGFyc2UuY2xlYXJfY2FjaGUoKQogICAgICAgICBiYi5wYXJzZS5CQkhhbmRsZXIuY2FjaGVkX3N0YXRlbWVudHMgPSB7fQogCiAgICAgICAgIHNlbGYudWlfY21kbGluZSA9IE5vbmUKQEAgLTIwNSwzMSArMjA1LDExIEBACiAKICAgICAgICAgc2VsZi5pbm90aWZ5X21vZGlmaWVkX2ZpbGVzID0gW10KIAotICAgICAgICBkZWYgX3Byb2Nlc3NfaW5vdGlmeV91cGRhdGVzKHNlcnZlciwgbm90aWZpZXJfbGlzdCwgYWJvcnQpOgotICAgICAgICAgICAgZm9yIG4gaW4gbm90aWZpZXJfbGlzdDoKLSAgICAgICAgICAgICAgICBpZiBuLmNoZWNrX2V2ZW50cyh0aW1lb3V0PTApOgotICAgICAgICAgICAgICAgICAgICAjIHJlYWQgbm90aWZpZWQgZXZlbnRzIGFuZCBlbnFldWUgdGhlbQotICAgICAgICAgICAgICAgICAgICBuLnJlYWRfZXZlbnRzKCkKLSAgICAgICAgICAgICAgICAgICAgbi5wcm9jZXNzX2V2ZW50cygpCisgICAgICAgIGRlZiBfcHJvY2Vzc19pbm90aWZ5X3VwZGF0ZXMoc2VydmVyLCBjb29rZXIsIGFib3J0KToKKyAgICAgICAgICAgIGNvb2tlci5wcm9jZXNzX2lub3RpZnlfdXBkYXRlcygpCiAgICAgICAgICAgICByZXR1cm4gMS4wCiAKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uLnNlcnZlcl9yZWdpc3Rlcl9pZGxlY2FsbGJhY2soX3Byb2Nlc3NfaW5vdGlmeV91cGRhdGVzLCBbc2VsZi5jb25maWdub3RpZmllciwgc2VsZi5ub3RpZmllcl0pCi0KLSAgICAgICAgc2VsZi5iYXNlY29uZmlnX3ZhbGlkID0gVHJ1ZQotICAgICAgICBzZWxmLnBhcnNlY2FjaGVfdmFsaWQgPSBGYWxzZQotCi0gICAgICAgICMgVGFrZSBhIGxvY2sgc28gb25seSBvbmUgY29weSBvZiBiaXRiYWtlIGNhbiBydW4gYWdhaW5zdCBhIGdpdmVuIGJ1aWxkCi0gICAgICAgICMgZGlyZWN0b3J5IGF0IGEgdGltZQotICAgICAgICBpZiBub3Qgc2VsZi5sb2NrQml0YmFrZSgpOgotICAgICAgICAgICAgYmIuZmF0YWwoIk9ubHkgb25lIGNvcHkgb2YgYml0YmFrZSBzaG91bGQgYmUgcnVuIGFnYWluc3QgYSBidWlsZCBkaXJlY3RvcnkiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmxvY2suc2VlaygwKQotICAgICAgICAgICAgc2VsZi5sb2NrLnRydW5jYXRlKCkKLSAgICAgICAgICAgIGlmIGxlbihjb25maWd1cmF0aW9uLmludGVyZmFjZSkgPj0gMjoKLSAgICAgICAgICAgICAgICBzZWxmLmxvY2sud3JpdGUoIiVzOiVzXG4iICUgKGNvbmZpZ3VyYXRpb24uaW50ZXJmYWNlWzBdLCBjb25maWd1cmF0aW9uLmludGVyZmFjZVsxXSkpOwotICAgICAgICAgICAgc2VsZi5sb2NrLmZsdXNoKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24uc2VydmVyX3JlZ2lzdGVyX2lkbGVjYWxsYmFjayhfcHJvY2Vzc19pbm90aWZ5X3VwZGF0ZXMsIHNlbGYpCiAKICAgICAgICAgIyBUT1NUT1AgbXVzdCBub3QgYmUgc2V0IG9yIG91ciBjaGlsZHJlbiB3aWxsIGhhbmcgd2hlbiB0aGV5IG91dHB1dAogICAgICAgICB0cnk6CkBAIC0yNTMsMTAgKzIzMywxOSBAQAogICAgICAgICAjIExldCBTSUdIVVAgZXhpdCBhcyBTSUdURVJNCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgc2VsZi5zaWd0ZXJtX2V4Y2VwdGlvbikKIAorICAgIGRlZiBwcm9jZXNzX2lub3RpZnlfdXBkYXRlcyhzZWxmKToKKyAgICAgICAgZm9yIG4gaW4gW3NlbGYuY29uZmlnbm90aWZpZXIsIHNlbGYubm90aWZpZXJdOgorICAgICAgICAgICAgaWYgbi5jaGVja19ldmVudHModGltZW91dD0wKToKKyAgICAgICAgICAgICAgICAjIHJlYWQgbm90aWZpZWQgZXZlbnRzIGFuZCBlbnFldWUgdGhlbQorICAgICAgICAgICAgICAgIG4ucmVhZF9ldmVudHMoKQorICAgICAgICAgICAgICAgIG4ucHJvY2Vzc19ldmVudHMoKQorCiAgICAgZGVmIGNvbmZpZ19ub3RpZmljYXRpb25zKHNlbGYsIGV2ZW50KToKICAgICAgICAgaWYgZXZlbnQubWFza25hbWUgPT0gIklOX1FfT1ZFUkZMT1ciOgogICAgICAgICAgICAgYmIud2FybigiaW5vdGlmeSBldmVudCBxdWV1ZSBvdmVyZmxvd2VkLCBpbnZhbGlkYXRpbmcgY2FjaGVzLiIpCisgICAgICAgICAgICBzZWxmLnBhcnNlY2FjaGVfdmFsaWQgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5iYXNlY29uZmlnX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgICAgIGJiLnBhcnNlLmNsZWFyX2NhY2hlKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3QgZXZlbnQucGF0aG5hbWUgaW4gc2VsZi5jb25maWd3YXRjaGVyLmJid2F0Y2hlZGZpbGVzOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0yNjgsNiArMjU3LDEwIEBACiAgICAgICAgIGlmIGV2ZW50Lm1hc2tuYW1lID09ICJJTl9RX09WRVJGTE9XIjoKICAgICAgICAgICAgIGJiLndhcm4oImlub3RpZnkgZXZlbnQgcXVldWUgb3ZlcmZsb3dlZCwgaW52YWxpZGF0aW5nIGNhY2hlcy4iKQogICAgICAgICAgICAgc2VsZi5wYXJzZWNhY2hlX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgICAgIGJiLnBhcnNlLmNsZWFyX2NhY2hlKCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBldmVudC5wYXRobmFtZS5lbmRzd2l0aCgiYml0YmFrZS1jb29rZXJkYWVtb24ubG9nIikgXAorICAgICAgICAgICAgICAgIG9yIGV2ZW50LnBhdGhuYW1lLmVuZHN3aXRoKCJiaXRiYWtlLmxvY2siKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3QgZXZlbnQucGF0aG5hbWUgaW4gc2VsZi5pbm90aWZ5X21vZGlmaWVkX2ZpbGVzOgogICAgICAgICAgICAgc2VsZi5pbm90aWZ5X21vZGlmaWVkX2ZpbGVzLmFwcGVuZChldmVudC5wYXRobmFtZSkKQEAgLTI4OCw3ICsyODEsNyBAQAogICAgICAgICAgICAgd2F0Y2h0YXJnZXQgPSBOb25lCiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICMgV2UgdHJ5IGFuZCBhZGQgd2F0Y2hlcyBmb3IgZmlsZXMgdGhhdCBkb24ndCBleGlzdCBidXQgaWYgdGhleSBkaWQsIHdvdWxkIGluZmx1ZW5jZQotICAgICAgICAgICAgICAgICMgdGhlIHBhcnNlci4gVGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlc2UgZmlsZXMgbWF5IG5vdCBleGlzdCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIAorICAgICAgICAgICAgICAgICMgdGhlIHBhcnNlci4gVGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlc2UgZmlsZXMgbWF5IG5vdCBleGlzdCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkCiAgICAgICAgICAgICAgICAgIyB0byB3YXRjaCBhbnkgcGFyZW50IHRoYXQgZG9lcyBleGlzdCBmb3IgY2hhbmdlcy4KICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYWRkX3dhdGNoKGYsIHNlbGYud2F0Y2htYXNrLCBxdWlldD1GYWxzZSkKQEAgLTM4Miw2ICszNzUsMTUgQEAKICAgICAgICAgc2VsZi5kYXRhLnJlbmFtZVZhcigiX19kZXBlbmRzIiwgIl9fYmFzZV9kZXBlbmRzIikKICAgICAgICAgc2VsZi5hZGRfZmlsZXdhdGNoKHNlbGYuZGF0YS5nZXRWYXIoIl9fYmFzZV9kZXBlbmRzIiwgRmFsc2UpLCBzZWxmLmNvbmZpZ3dhdGNoZXIpCiAKKyAgICAgICAgc2VsZi5iYXNlY29uZmlnX3ZhbGlkID0gVHJ1ZQorICAgICAgICBzZWxmLnBhcnNlY2FjaGVfdmFsaWQgPSBGYWxzZQorCisgICAgZGVmIGhhbmRsZVBSU2VydihzZWxmKToKKyAgICAgICAgIyBTZXR1cCBhIFBSIFNlcnZlciBiYXNlZCBvbiB0aGUgbmV3IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5wcmhvc3QgPSBwcnNlcnYuc2Vydi5hdXRvX3N0YXJ0KHNlbGYuZGF0YSkKKyAgICAgICAgZXhjZXB0IHByc2Vydi5zZXJ2LlBSU2VydmljZUNvbmZpZ0Vycm9yIGFzIGU6CisgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIHN0YXJ0IFBSIFNlcnZlciwgZXhpdHRpbmciKQogCiAgICAgZGVmIGVuYWJsZURhdGFUcmFja2luZyhzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uLnRyYWNraW5nID0gVHJ1ZQpAQCAtMzkzLDEzOCArMzk1LDYgQEAKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiZGF0YSIpOgogICAgICAgICAgICAgc2VsZi5kYXRhLmRpc2FibGVUcmFja2luZygpCiAKLSAgICBkZWYgbW9kaWZ5Q29uZmlndXJhdGlvblZhcihzZWxmLCB2YXIsIHZhbCwgZGVmYXVsdF9maWxlLCBvcCk6Ci0gICAgICAgIGlmIG9wID09ICJhcHBlbmQiOgotICAgICAgICAgICAgc2VsZi5hcHBlbmRDb25maWd1cmF0aW9uVmFyKHZhciwgdmFsLCBkZWZhdWx0X2ZpbGUpCi0gICAgICAgIGVsaWYgb3AgPT0gInNldCI6Ci0gICAgICAgICAgICBzZWxmLnNhdmVDb25maWd1cmF0aW9uVmFyKHZhciwgdmFsLCBkZWZhdWx0X2ZpbGUsICI9IikKLSAgICAgICAgZWxpZiBvcCA9PSAiZWFybHlBc3NpZ24iOgotICAgICAgICAgICAgc2VsZi5zYXZlQ29uZmlndXJhdGlvblZhcih2YXIsIHZhbCwgZGVmYXVsdF9maWxlLCAiPz0iKQotCi0KLSAgICBkZWYgYXBwZW5kQ29uZmlndXJhdGlvblZhcihzZWxmLCB2YXIsIHZhbCwgZGVmYXVsdF9maWxlKToKLSAgICAgICAgI2FkZCBhcHBlbmQgdmFyIG9wZXJhdGlvbiB0byB0aGUgZW5kIG9mIGRlZmF1bHRfZmlsZQotICAgICAgICBkZWZhdWx0X2ZpbGUgPSBiYi5jb29rZXJkYXRhLmZpbmRDb25maWdGaWxlKGRlZmF1bHRfZmlsZSwgc2VsZi5kYXRhKQotCi0gICAgICAgIHRvdGFsID0gIiNhZGRlZCBieSBob2IiCi0gICAgICAgIHRvdGFsICs9ICJcbiVzICs9IFwiJXNcIlxuIiAlICh2YXIsIHZhbCkKLQotICAgICAgICB3aXRoIG9wZW4oZGVmYXVsdF9maWxlLCAnYScpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKHRvdGFsKQotCi0gICAgICAgICNhZGQgdG8gaGlzdG9yeQotICAgICAgICBsb2dpbmZvID0geyJvcCI6ImFwcGVuZCIsICJmaWxlIjpkZWZhdWx0X2ZpbGUsICJsaW5lIjp0b3RhbC5jb3VudCgiXG4iKX0KLSAgICAgICAgc2VsZi5kYXRhLmFwcGVuZFZhcih2YXIsIHZhbCwgKipsb2dpbmZvKQotCi0gICAgZGVmIHNhdmVDb25maWd1cmF0aW9uVmFyKHNlbGYsIHZhciwgdmFsLCBkZWZhdWx0X2ZpbGUsIG9wKToKLQotICAgICAgICByZXBsYWNlZCA9IEZhbHNlCi0gICAgICAgICNkbyBub3Qgc2F2ZSBpZiBub3RoaW5nIGNoYW5nZWQKLSAgICAgICAgaWYgc3RyKHZhbCkgPT0gc2VsZi5kYXRhLmdldFZhcih2YXIsIEZhbHNlKToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGNvbmZfZmlsZXMgPSBzZWxmLmRhdGEudmFyaGlzdG9yeS5nZXRfdmFyaWFibGVfZmlsZXModmFyKQotCi0gICAgICAgICNmb3JtYXQgdGhlIHZhbHVlIHdoZW4gaXQgaXMgYSBsaXN0Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBsaXN0KToKLSAgICAgICAgICAgIGxpc3R2YWwgPSAiIgotICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbDoKLSAgICAgICAgICAgICAgICBsaXN0dmFsICs9ICIlcyAgICIgJSB2YWx1ZQotICAgICAgICAgICAgdmFsID0gbGlzdHZhbAotCi0gICAgICAgIHRvcGRpciA9IHNlbGYuZGF0YS5nZXRWYXIoIlRPUERJUiIsIEZhbHNlKQotCi0gICAgICAgICNjb21tZW50IG9yIHJlcGxhY2Ugb3BlcmF0aW9ucyBtYWRlIG9uIHZhcgotICAgICAgICBmb3IgY29uZl9maWxlIGluIGNvbmZfZmlsZXM6Ci0gICAgICAgICAgICBpZiB0b3BkaXIgaW4gY29uZl9maWxlOgotICAgICAgICAgICAgICAgIHdpdGggb3Blbihjb25mX2ZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgY29udGVudHMgPSBmLnJlYWRsaW5lcygpCi0KLSAgICAgICAgICAgICAgICBsaW5lcyA9IHNlbGYuZGF0YS52YXJoaXN0b3J5LmdldF92YXJpYWJsZV9saW5lcyh2YXIsIGNvbmZfZmlsZSkKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgdG90YWwgPSAiIgotICAgICAgICAgICAgICAgICAgICBpID0gMAotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb250ZW50czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsICs9IGMKLSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaT09aW50KGxpbmUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9pbmRleCA9IGxlbih0b3RhbCkKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB0b3RhbC5yZmluZCh2YXIsIDAsIGVuZF9pbmRleCkKLQotICAgICAgICAgICAgICAgICAgICBiZWdpbl9saW5lID0gdG90YWwuY291bnQoIlxuIiwwLGluZGV4KQotICAgICAgICAgICAgICAgICAgICBlbmRfbGluZSA9IGludChsaW5lKQotCi0gICAgICAgICAgICAgICAgICAgICNjaGVjayBpZiB0aGUgdmFyaWFibGUgd2FzIHNhdmVkIGJlZm9yZSBpbiB0aGUgc2FtZSB3YXkKLSAgICAgICAgICAgICAgICAgICAgI2lmIHRydWUgaXQgcmVwbGFjZSB0aGUgcGxhY2Ugd2hlcmUgdGhlIHZhcmlhYmxlIHdhcyBkZWNsYXJlZAotICAgICAgICAgICAgICAgICAgICAjZWxzZSBpdCBjb21tZW50cyBpdAotICAgICAgICAgICAgICAgICAgICBpZiBjb250ZW50c1tiZWdpbl9saW5lLTFdPT0gIiNhZGRlZCBieSBob2JcbiI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tiZWdpbl9saW5lXSA9ICIlcyAlcyBcIiVzXCJcbiIgJSAodmFyLCBvcCwgdmFsKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaWkgaW4gcmFuZ2UoYmVnaW5fbGluZSwgZW5kX2xpbmUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW2lpXSA9ICIjIiArIGNvbnRlbnRzW2lpXQotCi0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGNvbmZfZmlsZSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBmLndyaXRlbGluZXMoY29udGVudHMpCi0KLSAgICAgICAgaWYgcmVwbGFjZWQgPT0gRmFsc2U6Ci0gICAgICAgICAgICAjcmVtb3ZlIHZhciBmcm9tIGhpc3RvcnkKLSAgICAgICAgICAgIHNlbGYuZGF0YS52YXJoaXN0b3J5LmRlbF92YXJfaGlzdG9yeSh2YXIpCi0KLSAgICAgICAgICAgICNhZGQgdmFyIHRvIHRoZSBlbmQgb2YgZGVmYXVsdF9maWxlCi0gICAgICAgICAgICBkZWZhdWx0X2ZpbGUgPSBiYi5jb29rZXJkYXRhLmZpbmRDb25maWdGaWxlKGRlZmF1bHRfZmlsZSwgc2VsZi5kYXRhKQotCi0gICAgICAgICAgICAjYWRkIHRoZSB2YXJpYWJsZSBvbiBhIHNpbmdsZSBsaW5lLCB0byBiZSBlYXN5IHRvIHJlcGxhY2UgdGhlIHNlY29uZCB0aW1lCi0gICAgICAgICAgICB0b3RhbCA9ICJcbiNhZGRlZCBieSBob2IiCi0gICAgICAgICAgICB0b3RhbCArPSAiXG4lcyAlcyBcIiVzXCJcbiIgJSAodmFyLCBvcCwgdmFsKQotCi0gICAgICAgICAgICB3aXRoIG9wZW4oZGVmYXVsdF9maWxlLCAnYScpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSh0b3RhbCkKLQotICAgICAgICAgICAgI2FkZCB0byBoaXN0b3J5Ci0gICAgICAgICAgICBsb2dpbmZvID0geyJvcCI6InNldCIsICJmaWxlIjpkZWZhdWx0X2ZpbGUsICJsaW5lIjp0b3RhbC5jb3VudCgiXG4iKX0KLSAgICAgICAgICAgIHNlbGYuZGF0YS5zZXRWYXIodmFyLCB2YWwsICoqbG9naW5mbykKLQotICAgIGRlZiByZW1vdmVDb25maWd1cmF0aW9uVmFyKHNlbGYsIHZhcik6Ci0gICAgICAgIGNvbmZfZmlsZXMgPSBzZWxmLmRhdGEudmFyaGlzdG9yeS5nZXRfdmFyaWFibGVfZmlsZXModmFyKQotICAgICAgICB0b3BkaXIgPSBzZWxmLmRhdGEuZ2V0VmFyKCJUT1BESVIiLCBGYWxzZSkKLQotICAgICAgICBmb3IgY29uZl9maWxlIGluIGNvbmZfZmlsZXM6Ci0gICAgICAgICAgICBpZiB0b3BkaXIgaW4gY29uZl9maWxlOgotICAgICAgICAgICAgICAgIHdpdGggb3Blbihjb25mX2ZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgY29udGVudHMgPSBmLnJlYWRsaW5lcygpCi0KLSAgICAgICAgICAgICAgICBsaW5lcyA9IHNlbGYuZGF0YS52YXJoaXN0b3J5LmdldF92YXJpYWJsZV9saW5lcyh2YXIsIGNvbmZfZmlsZSkKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgdG90YWwgPSAiIgotICAgICAgICAgICAgICAgICAgICBpID0gMAotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb250ZW50czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsICs9IGMKLSAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaT09aW50KGxpbmUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9pbmRleCA9IGxlbih0b3RhbCkKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB0b3RhbC5yZmluZCh2YXIsIDAsIGVuZF9pbmRleCkKLQotICAgICAgICAgICAgICAgICAgICBiZWdpbl9saW5lID0gdG90YWwuY291bnQoIlxuIiwwLGluZGV4KQotCi0gICAgICAgICAgICAgICAgICAgICNjaGVjayBpZiB0aGUgdmFyaWFibGUgd2FzIHNhdmVkIGJlZm9yZSBpbiB0aGUgc2FtZSB3YXkKLSAgICAgICAgICAgICAgICAgICAgaWYgY29udGVudHNbYmVnaW5fbGluZS0xXT09ICIjYWRkZWQgYnkgaG9iXG4iOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbYmVnaW5fbGluZS0xXSA9IGNvbnRlbnRzW2JlZ2luX2xpbmVdID0gIlxuIgotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbYmVnaW5fbGluZV0gPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICNyZW1vdmUgdmFyIGZyb20gaGlzdG9yeQotICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGEudmFyaGlzdG9yeS5kZWxfdmFyX2hpc3RvcnkodmFyLCBjb25mX2ZpbGUsIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgICNyZW1vdmUgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhLmRlbFZhcih2YXIpCi0KLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4oY29uZl9maWxlLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGVsaW5lcyhjb250ZW50cykKLQotICAgIGRlZiBjcmVhdGVDb25maWdGaWxlKHNlbGYsIG5hbWUpOgotICAgICAgICBwYXRoID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgY29uZnBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgImNvbmYiLCBuYW1lKQotICAgICAgICBvcGVuKGNvbmZwYXRoLCAndycpLmNsb3NlKCkKLQogICAgIGRlZiBwYXJzZUNvbmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgICMgU2V0IGxvZyBmaWxlIHZlcmJvc2l0eQogICAgICAgICB2ZXJib3NlbG9ncyA9IGJiLnV0aWxzLnRvX2Jvb2xlYW4oc2VsZi5kYXRhLmdldFZhcigiQkJfVkVSQk9TRV9MT0dTIiwgRmFsc2UpKQpAQCAtNTQ3LDIxICs0MTcsMjcgQEAKIAogICAgICAgICBzZWxmLmhhbmRsZUNvbGxlY3Rpb25zKHNlbGYuZGF0YS5nZXRWYXIoIkJCRklMRV9DT0xMRUNUSU9OUyIpKQogCisgICAgICAgIHNlbGYucGFyc2VjYWNoZV92YWxpZCA9IEZhbHNlCisKICAgICBkZWYgdXBkYXRlQ29uZmlnT3B0cyhzZWxmLCBvcHRpb25zLCBlbnZpcm9ubWVudCwgY21kbGluZSk6CiAgICAgICAgIHNlbGYudWlfY21kbGluZSA9IGNtZGxpbmUKICAgICAgICAgY2xlYW4gPSBUcnVlCiAgICAgICAgIGZvciBvIGluIG9wdGlvbnM6CiAgICAgICAgICAgICBpZiBvIGluIFsncHJlZmlsZScsICdwb3N0ZmlsZSddOgorICAgICAgICAgICAgICAgICMgT25seSB0aGVzZSBvcHRpb25zIG1heSByZXF1aXJlIGEgcmVwYXJzZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLmNvbmZpZ3VyYXRpb24sIG8pID09IG9wdGlvbnNbb106CisgICAgICAgICAgICAgICAgICAgICAgICAjIFZhbHVlIGlzIHRoZSBzYW1lLCBubyBuZWVkIHRvIG1hcmsgZGlydHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJNYXJraW5nIGFzIGRpcnR5IGR1ZSB0byAnJXMnIG9wdGlvbiBjaGFuZ2UgdG8gJyVzJyIgJSAobywgb3B0aW9uc1tvXSkpCisgICAgICAgICAgICAgICAgcHJpbnQoIk1hcmtpbmcgYXMgZGlydHkgZHVlIHRvICclcycgb3B0aW9uIGNoYW5nZSB0byAnJXMnIiAlIChvLCBvcHRpb25zW29dKSkKICAgICAgICAgICAgICAgICBjbGVhbiA9IEZhbHNlCi0gICAgICAgICAgICAgICAgc2VydmVyX3ZhbCA9IGdldGF0dHIoc2VsZi5jb25maWd1cmF0aW9uLCAiJXNfc2VydmVyIiAlIG8pCi0gICAgICAgICAgICAgICAgaWYgbm90IG9wdGlvbnNbb10gYW5kIHNlcnZlcl92YWw6Ci0gICAgICAgICAgICAgICAgICAgICMgcmVzdG9yZSB2YWx1ZSBwcm92aWRlZCBvbiBzZXJ2ZXIgc3RhcnQKLSAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLmNvbmZpZ3VyYXRpb24sIG8sIHNlcnZlcl92YWwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYuY29uZmlndXJhdGlvbiwgbywgb3B0aW9uc1tvXSkKICAgICAgICAgZm9yIGsgaW4gYmIudXRpbHMuYXBwcm92ZWRfdmFyaWFibGVzKCk6CiAgICAgICAgICAgICBpZiBrIGluIGVudmlyb25tZW50IGFuZCBrIG5vdCBpbiBzZWxmLmNvbmZpZ3VyYXRpb24uZW52OgotICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVXBkYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgJXMgdG8gJXMiICUgKGssIGVudmlyb25tZW50W2tdKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlVwZGF0aW5nIG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyB0byAlcyIgJSAoaywgZW52aXJvbm1lbnRba10pKQogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbi5lbnZba10gPSBlbnZpcm9ubWVudFtrXQogICAgICAgICAgICAgICAgIGNsZWFuID0gRmFsc2UKICAgICAgICAgICAgIGlmIGsgaW4gc2VsZi5jb25maWd1cmF0aW9uLmVudiBhbmQgayBub3QgaW4gZW52aXJvbm1lbnQ6CkBAIC01NjksMTQgKzQ0NSwxMyBAQAogICAgICAgICAgICAgICAgIGRlbCBzZWxmLmNvbmZpZ3VyYXRpb24uZW52W2tdCiAgICAgICAgICAgICAgICAgY2xlYW4gPSBGYWxzZQogICAgICAgICAgICAgaWYgayBub3QgaW4gc2VsZi5jb25maWd1cmF0aW9uLmVudiBhbmQgayBub3QgaW4gZW52aXJvbm1lbnQ6Ci0gICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGVudmlyb25tZW50W2tdICE9IHNlbGYuY29uZmlndXJhdGlvbi5lbnZba106Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJVcGRhdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyB0byAlcyIgJSAoaywgZW52aXJvbm1lbnRba10pKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVXBkYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgJXMgZnJvbSAlcyB0byAlcyIgJSAoaywgc2VsZi5jb25maWd1cmF0aW9uLmVudltrXSwgZW52aXJvbm1lbnRba10pKQogICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbi5lbnZba10gPSBlbnZpcm9ubWVudFtrXQogICAgICAgICAgICAgICAgIGNsZWFuID0gRmFsc2UKICAgICAgICAgaWYgbm90IGNsZWFuOgogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJCYXNlIGVudmlyb25tZW50IGNoYW5nZSwgdHJpZ2dlcmluZyByZXBhcnNlIikKLSAgICAgICAgICAgIHNlbGYuYmFzZWNvbmZpZ192YWxpZCA9IEZhbHNlICAgICAgICAKICAgICAgICAgICAgIHNlbGYucmVzZXQoKQogCiAgICAgZGVmIHJ1bkNvbW1hbmRzKHNlbGYsIHNlcnZlciwgZGF0YSwgYWJvcnQpOgpAQCAtNjE2LDYgKzQ5MSwxMiBAQAogICAgICAgICBpZiBub3QgcGtnc190b19idWlsZDoKICAgICAgICAgICAgIHBrZ3NfdG9fYnVpbGQgPSBbXQogCisgICAgICAgIG9yaWdfdHJhY2tpbmcgPSBzZWxmLmNvbmZpZ3VyYXRpb24udHJhY2tpbmcKKyAgICAgICAgaWYgbm90IG9yaWdfdHJhY2tpbmc6CisgICAgICAgICAgICBzZWxmLmVuYWJsZURhdGFUcmFja2luZygpCisgICAgICAgICAgICBzZWxmLnJlc2V0KCkKKworCiAgICAgICAgIGlmIGJ1aWxkZmlsZToKICAgICAgICAgICAgICMgUGFyc2UgdGhlIGNvbmZpZ3VyYXRpb24gaGVyZS4gV2UgbmVlZCB0byBkbyBpdCBleHBsaWNpdGx5IGhlcmUgc2luY2UKICAgICAgICAgICAgICMgdGhpcyBzaG93RW52aXJvbm1lbnQoKSBjb2RlIHBhdGggZG9lc24ndCB1c2UgdGhlIGNhY2hlCkBAIC02NjAsNiArNTQxLDkgQEAKICAgICAgICAgICAgIGlmIGVudmRhdGEuZ2V0VmFyRmxhZyhlLCAnZnVuYycsIEZhbHNlKSBhbmQgZW52ZGF0YS5nZXRWYXJGbGFnKGUsICdweXRob24nLCBGYWxzZSk6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCJcbnB5dGhvbiAlcyAoKSB7XG4lc31cbiIsIGUsIGVudmRhdGEuZ2V0VmFyKGUsIEZhbHNlKSkKIAorICAgICAgICBpZiBub3Qgb3JpZ190cmFja2luZzoKKyAgICAgICAgICAgIHNlbGYuZGlzYWJsZURhdGFUcmFja2luZygpCisgICAgICAgICAgICBzZWxmLnJlc2V0KCkKIAogICAgIGRlZiBidWlsZFRhc2tEYXRhKHNlbGYsIHBrZ3NfdG9fYnVpbGQsIHRhc2ssIGFib3J0LCBhbGxvd2luY29tcGxldGU9RmFsc2UpOgogICAgICAgICAiIiIKQEAgLTgxNywxMiArNzAxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGRlcGVuZF90cmVlWyJwbiJdW3BuXVtlaV0gPSB2YXJzKHNlbGYucmVjaXBlY2FjaGVzW21jXSlbZWldW3Rhc2tmbl0KIAogCisgICAgICAgICAgICBkb3RuYW1lID0gIiVzLiVzIiAlIChwbiwgYmIucnVucXVldWUudGFza25hbWVfZnJvbV90aWQodGlkKSkKKyAgICAgICAgICAgIGlmIG5vdCBkb3RuYW1lIGluIGRlcGVuZF90cmVlWyJ0ZGVwZW5kcyJdOgorICAgICAgICAgICAgICAgIGRlcGVuZF90cmVlWyJ0ZGVwZW5kcyJdW2RvdG5hbWVdID0gW10KICAgICAgICAgICAgIGZvciBkZXAgaW4gcnEucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKICAgICAgICAgICAgICAgICAoZGVwbWMsIGRlcGZuLCBkZXB0YXNrbmFtZSwgZGVwdGFza2ZuKSA9IGJiLnJ1bnF1ZXVlLnNwbGl0X3RpZF9tY2ZuKGRlcCkKICAgICAgICAgICAgICAgICBkZXBwbiA9IHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfZm5bZGVwdGFza2ZuXQotICAgICAgICAgICAgICAgIGRvdG5hbWUgPSAiJXMuJXMiICUgKHBuLCBiYi5ydW5xdWV1ZS50YXNrbmFtZV9mcm9tX3RpZCh0aWQpKQotICAgICAgICAgICAgICAgIGlmIG5vdCBkb3RuYW1lIGluIGRlcGVuZF90cmVlWyJ0ZGVwZW5kcyJdOgotICAgICAgICAgICAgICAgICAgICBkZXBlbmRfdHJlZVsidGRlcGVuZHMiXVtkb3RuYW1lXSA9IFtdCiAgICAgICAgICAgICAgICAgZGVwZW5kX3RyZWVbInRkZXBlbmRzIl1bZG90bmFtZV0uYXBwZW5kKCIlcy4lcyIgJSAoZGVwcG4sIGJiLnJ1bnF1ZXVlLnRhc2tuYW1lX2Zyb21fdGlkKGRlcCkpKQogICAgICAgICAgICAgaWYgdGFza2ZuIG5vdCBpbiBzZWVuX2ZuczoKICAgICAgICAgICAgICAgICBzZWVuX2Zucy5hcHBlbmQodGFza2ZuKQpAQCAtOTEzLDEzICs3OTcsMTMgQEAKICAgICAgICAgICAgICAgICBzZWVuX2Zucy5hcHBlbmQodGFza2ZuKQogCiAgICAgICAgICAgICAgICAgZGVwZW5kX3RyZWVbImRlcGVuZHMiXVtwbl0gPSBbXQotICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHRhc2tkYXRhW21jXS5kZXBpZHNbdGFza2ZuXToKKyAgICAgICAgICAgICAgICBmb3IgZGVwIGluIHRhc2tkYXRhW21jXS5kZXBpZHNbdGFza2ZuXToKICAgICAgICAgICAgICAgICAgICAgcG5fcHJvdmlkZXIgPSAiIgogICAgICAgICAgICAgICAgICAgICBpZiBkZXAgaW4gdGFza2RhdGFbbWNdLmJ1aWxkX3RhcmdldHMgYW5kIHRhc2tkYXRhW21jXS5idWlsZF90YXJnZXRzW2RlcF06CiAgICAgICAgICAgICAgICAgICAgICAgICBmbl9wcm92aWRlciA9IHRhc2tkYXRhW21jXS5idWlsZF90YXJnZXRzW2RlcF1bMF0KICAgICAgICAgICAgICAgICAgICAgICAgIHBuX3Byb3ZpZGVyID0gc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19mbltmbl9wcm92aWRlcl0KICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBuX3Byb3ZpZGVyID0gaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgcG5fcHJvdmlkZXIgPSBkZXAKICAgICAgICAgICAgICAgICAgICAgcG5fcHJvdmlkZXIgPSBzZWxmLmFkZF9tY19wcmVmaXgobWMsIHBuX3Byb3ZpZGVyKQogICAgICAgICAgICAgICAgICAgICBkZXBlbmRfdHJlZVsiZGVwZW5kcyJdW3BuXS5hcHBlbmQocG5fcHJvdmlkZXIpCiAKQEAgLTEwNDYsMTggKzkzMCw2IEBACiAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVybG9nLmVycm9yKCJjb25mbGljdGluZyBwcmVmZXJlbmNlcyBmb3IgJXM6IGJvdGggJXMgYW5kICVzIHNwZWNpZmllZCIsIHByb3ZpZGVlLCBwcm92aWRlciwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnByZWZlcnJlZFtwcm92aWRlZV0pCiAgICAgICAgICAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnByZWZlcnJlZFtwcm92aWRlZV0gPSBwcm92aWRlcgogCi0gICAgZGVmIGZpbmRDb3JlQmFzZUZpbGVzKHNlbGYsIHN1YmRpciwgY29uZmlnZmlsZSk6Ci0gICAgICAgIGNvcmViYXNlID0gc2VsZi5kYXRhLmdldFZhcignQ09SRUJBU0UnKSBvciAiIgotICAgICAgICBwYXRocyA9IFtdCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGNvcmViYXNlICsgJy8nICsgc3ViZGlyKToKLSAgICAgICAgICAgIGZvciBkIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgY29uZmlnZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgZCwgY29uZmlnZmlsZSkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdmaWxlcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgZCkpCi0KLSAgICAgICAgaWYgcGF0aHM6Ci0gICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkNvcmVCYXNlRmlsZXNGb3VuZChwYXRocyksIHNlbGYuZGF0YSkKLQogICAgIGRlZiBmaW5kQ29uZmlnRmlsZVBhdGgoc2VsZiwgY29uZmlnZmlsZSk6CiAgICAgICAgICIiIgogICAgICAgICBGaW5kIHRoZSBsb2NhdGlvbiBvbiBkaXNrIG9mIGNvbmZpZ2ZpbGUgYW5kIGlmIGl0IGV4aXN0cyBhbmQgd2FzIHBhcnNlZCBieSBCaXRCYWtlCkBAIC0xMzE0LDEyICsxMTg2LDI2IEBACiAgICAgICAgICIiIgogICAgICAgICBTZXR1cCBhbnkgdmFyaWFibGVzIG5lZWRlZCBiZWZvcmUgc3RhcnRpbmcgYSBidWlsZAogICAgICAgICAiIiIKLSAgICAgICAgdCA9IHRpbWUuZ210aW1lKCkgCi0gICAgICAgIGlmIG5vdCBzZWxmLmRhdGEuZ2V0VmFyKCJCVUlMRE5BTUUiLCBGYWxzZSk6Ci0gICAgICAgICAgICBzZWxmLmRhdGEuc2V0VmFyKCJCVUlMRE5BTUUiLCAiJHtEQVRFfSR7VElNRX0iKQotICAgICAgICBzZWxmLmRhdGEuc2V0VmFyKCJCVUlMRFNUQVJUIiwgdGltZS5zdHJmdGltZSgnJW0vJWQvJVkgJUg6JU06JVMnLCB0KSkKLSAgICAgICAgc2VsZi5kYXRhLnNldFZhcigiREFURSIsIHRpbWUuc3RyZnRpbWUoJyVZJW0lZCcsIHQpKQotICAgICAgICBzZWxmLmRhdGEuc2V0VmFyKCJUSU1FIiwgdGltZS5zdHJmdGltZSgnJUglTSVTJywgdCkpCisgICAgICAgIHQgPSB0aW1lLmdtdGltZSgpCisgICAgICAgIGZvciBtYyBpbiBzZWxmLmRhdGFidWlsZGVyLm1jZGF0YToKKyAgICAgICAgICAgIGRzID0gc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdCisgICAgICAgICAgICBpZiBub3QgZHMuZ2V0VmFyKCJCVUlMRE5BTUUiLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgZHMuc2V0VmFyKCJCVUlMRE5BTUUiLCAiJHtEQVRFfSR7VElNRX0iKQorICAgICAgICAgICAgZHMuc2V0VmFyKCJCVUlMRFNUQVJUIiwgdGltZS5zdHJmdGltZSgnJW0vJWQvJVkgJUg6JU06JVMnLCB0KSkKKyAgICAgICAgICAgIGRzLnNldFZhcigiREFURSIsIHRpbWUuc3RyZnRpbWUoJyVZJW0lZCcsIHQpKQorICAgICAgICAgICAgZHMuc2V0VmFyKCJUSU1FIiwgdGltZS5zdHJmdGltZSgnJUglTSVTJywgdCkpCisKKyAgICBkZWYgcmVzZXRfbXRpbWVfY2FjaGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVzZXQgbXRpbWUgY2FjaGVzIC0gdGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdoZW4gbWVtb3J5IHJlc2lkZW50IGFzIHNvbWV0aGluZworICAgICAgICB3aGljaCBpcyBjYWNoZWQgaXMgbm90IHVubGlrZWx5IHRvIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBpbnZvY2F0aW9uIChlLmcuIGEKKyAgICAgICAgZmlsZSBhc3NvY2lhdGVkIHdpdGggYSByZWNpcGUgbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkIGJ5IHRoZSB1c2VyKS4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkLnJlc2V0X2NhY2hlKCkKKyAgICAgICAgYmIuZmV0Y2guX2NoZWNrc3VtX2NhY2hlLm10aW1lX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgc2lnZ2VuX2NhY2hlID0gZ2V0YXR0cihiYi5wYXJzZS5zaWdnZW4sICdjaGVja3N1bV9jYWNoZScsIE5vbmUpCisgICAgICAgIGlmIHNpZ2dlbl9jYWNoZToKKyAgICAgICAgICAgIGJiLnBhcnNlLnNpZ2dlbi5jaGVja3N1bV9jYWNoZS5tdGltZV9jYWNoZS5jbGVhcigpCiAKICAgICBkZWYgbWF0Y2hGaWxlcyhzZWxmLCBiZik6CiAgICAgICAgICIiIgpAQCAtMTM2MCwxNiArMTI0NiwyMiBAQAogICAgICAgICAgICAgcmFpc2UgTm9TcGVjaWZpY01hdGNoCiAgICAgICAgIHJldHVybiBtYXRjaGVzWzBdCiAKLSAgICBkZWYgYnVpbGRGaWxlKHNlbGYsIGJ1aWxkZmlsZSwgdGFzaywgaGlkZXdhcm5pbmc9RmFsc2UpOgorICAgIGRlZiBidWlsZEZpbGUoc2VsZiwgYnVpbGRmaWxlLCB0YXNrKToKICAgICAgICAgIiIiCiAgICAgICAgIEJ1aWxkIHRoZSBmaWxlIG1hdGNoaW5nIHJlZ2V4cCBidWlsZGZpbGUKICAgICAgICAgIiIiCiAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQnVpbGRJbml0KCksIHNlbGYuZGF0YSkKIAotICAgICAgICBpZiBub3QgaGlkZXdhcm5pbmc6Ci0gICAgICAgICAgICAjIFRvbyBtYW55IHBlb3BsZSB1c2UgLWIgYmVjYXVzZSB0aGV5IHRoaW5rIGl0J3MgaG93IHlvdSBub3JtYWxseQotICAgICAgICAgICAgIyBzcGVjaWZ5IGEgdGFyZ2V0IHRvIGJlIGJ1aWx0LCBzbyBzaG93IGEgd2FybmluZwotICAgICAgICAgICAgYmIud2FybigiQnVpbGRmaWxlIHNwZWNpZmllZCwgZGVwZW5kZW5jaWVzIHdpbGwgbm90IGJlIGhhbmRsZWQuIElmIHRoaXMgaXMgbm90IHdoYXQgeW91IHdhbnQsIGRvIG5vdCB1c2UgLWIgLyAtLWJ1aWxkZmlsZS4iKQorICAgICAgICAjIFRvbyBtYW55IHBlb3BsZSB1c2UgLWIgYmVjYXVzZSB0aGV5IHRoaW5rIGl0J3MgaG93IHlvdSBub3JtYWxseQorICAgICAgICAjIHNwZWNpZnkgYSB0YXJnZXQgdG8gYmUgYnVpbHQsIHNvIHNob3cgYSB3YXJuaW5nCisgICAgICAgIGJiLndhcm4oIkJ1aWxkZmlsZSBzcGVjaWZpZWQsIGRlcGVuZGVuY2llcyB3aWxsIG5vdCBiZSBoYW5kbGVkLiBJZiB0aGlzIGlzIG5vdCB3aGF0IHlvdSB3YW50LCBkbyBub3QgdXNlIC1iIC8gLS1idWlsZGZpbGUuIikKKworICAgICAgICBzZWxmLmJ1aWxkRmlsZUludGVybmFsKGJ1aWxkZmlsZSwgdGFzaykKKworICAgIGRlZiBidWlsZEZpbGVJbnRlcm5hbChzZWxmLCBidWlsZGZpbGUsIHRhc2ssIGZpcmVldmVudHM9VHJ1ZSwgcXVpZXRsb2c9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgQnVpbGQgdGhlIGZpbGUgbWF0Y2hpbmcgcmVnZXhwIGJ1aWxkZmlsZQorICAgICAgICAiIiIKIAogICAgICAgICAjIFBhcnNlIHRoZSBjb25maWd1cmF0aW9uIGhlcmUuIFdlIG5lZWQgdG8gZG8gaXQgZXhwbGljaXRseSBoZXJlIHNpbmNlCiAgICAgICAgICMgYnVpbGRGaWxlKCkgZG9lc24ndCB1c2UgdGhlIGNhY2hlCkBAIC0xMzg1LDYgKzEyNzcsNyBAQAogICAgICAgICBmbiA9IHNlbGYubWF0Y2hGaWxlKGZuKQogCiAgICAgICAgIHNlbGYuYnVpbGRTZXRWYXJzKCkKKyAgICAgICAgc2VsZi5yZXNldF9tdGltZV9jYWNoZXMoKQogCiAgICAgICAgIGJiX2NhY2hlID0gYmIuY2FjaGUuQ2FjaGUoc2VsZi5kYXRhYnVpbGRlciwgc2VsZi5kYXRhX2hhc2gsIHNlbGYuY2FjaGVzX2FycmF5KQogCkBAIC0xNDExLDggKzEzMDQsOCBAQAogICAgICAgICAjIFJlbW92ZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMKICAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnRhc2tfZGVwc1tmbl1bJ2RlcGVuZHMnXSA9IHt9CiAgICAgICAgIHNlbGYucmVjaXBlY2FjaGVzW21jXS5kZXBzW2ZuXSA9IFtdCi0gICAgICAgIHNlbGYucmVjaXBlY2FjaGVzW21jXS5ydW5kZXBzW2ZuXSA9IFtdCi0gICAgICAgIHNlbGYucmVjaXBlY2FjaGVzW21jXS5ydW5yZWNzW2ZuXSA9IFtdCisgICAgICAgIHNlbGYucmVjaXBlY2FjaGVzW21jXS5ydW5kZXBzW2ZuXSA9IGRlZmF1bHRkaWN0KGxpc3QpCisgICAgICAgIHNlbGYucmVjaXBlY2FjaGVzW21jXS5ydW5yZWNzW2ZuXSA9IGRlZmF1bHRkaWN0KGxpc3QpCiAKICAgICAgICAgIyBJbnZhbGlkYXRlIHRhc2sgZm9yIHRhcmdldCBpZiBmb3JjZSBtb2RlIGFjdGl2ZQogICAgICAgICBpZiBzZWxmLmNvbmZpZ3VyYXRpb24uZm9yY2U6CkBAIC0xNDIyLDEwICsxMzE1LDE1IEBACiAgICAgICAgICMgU2V0dXAgdGFza2RhdGEgc3RydWN0dXJlCiAgICAgICAgIHRhc2tkYXRhID0ge30KICAgICAgICAgdGFza2RhdGFbbWNdID0gYmIudGFza2RhdGEuVGFza0RhdGEoc2VsZi5jb25maWd1cmF0aW9uLmFib3J0KQotICAgICAgICB0YXNrZGF0YVttY10uYWRkX3Byb3ZpZGVyKHNlbGYuZGF0YSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLCBpdGVtKQorICAgICAgICB0YXNrZGF0YVttY10uYWRkX3Byb3ZpZGVyKHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLCBpdGVtKQogCi0gICAgICAgIGJ1aWxkbmFtZSA9IHNlbGYuZGF0YS5nZXRWYXIoIkJVSUxETkFNRSIpCi0gICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQnVpbGRTdGFydGVkKGJ1aWxkbmFtZSwgW2l0ZW1dKSwgc2VsZi5kYXRhKQorICAgICAgICBpZiBxdWlldGxvZzoKKyAgICAgICAgICAgIHJxbG9nbGV2ZWwgPSBiYi5ydW5xdWV1ZS5sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQorICAgICAgICAgICAgYmIucnVucXVldWUubG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuV0FSTklORykKKworICAgICAgICBidWlsZG5hbWUgPSBzZWxmLmRhdGFidWlsZGVyLm1jZGF0YVttY10uZ2V0VmFyKCJCVUlMRE5BTUUiKQorICAgICAgICBpZiBmaXJlZXZlbnRzOgorICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5CdWlsZFN0YXJ0ZWQoYnVpbGRuYW1lLCBbaXRlbV0pLCBzZWxmLmRhdGFidWlsZGVyLm1jZGF0YVttY10pCiAKICAgICAgICAgIyBFeGVjdXRlIHRoZSBydW5xdWV1ZQogICAgICAgICBydW5saXN0ID0gW1ttYywgaXRlbSwgdGFzaywgZm5dXQpAQCAtMTQ1MiwxMSArMTM1MCwyMCBAQAogICAgICAgICAgICAgICAgIHJldHZhbCA9IEZhbHNlCiAgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXhpdCBhcyBleGM6CiAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kLmZpbmlzaEFzeW5jQ29tbWFuZChzdHIoZXhjKSkKKyAgICAgICAgICAgICAgICBpZiBxdWlldGxvZzoKKyAgICAgICAgICAgICAgICAgICAgYmIucnVucXVldWUubG9nZ2VyLnNldExldmVsKHJxbG9nbGV2ZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgICAgIGlmIG5vdCByZXR2YWw6Ci0gICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5CdWlsZENvbXBsZXRlZChsZW4ocnEucnFkYXRhLnJ1bnRhc2tlbnRyaWVzKSwgYnVpbGRuYW1lLCBpdGVtLCBmYWlsdXJlcywgaW50ZXJydXB0ZWQpLCBzZWxmLmRhdGEpCisgICAgICAgICAgICAgICAgaWYgZmlyZWV2ZW50czoKKyAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5CdWlsZENvbXBsZXRlZChsZW4ocnEucnFkYXRhLnJ1bnRhc2tlbnRyaWVzKSwgYnVpbGRuYW1lLCBpdGVtLCBmYWlsdXJlcywgaW50ZXJydXB0ZWQpLCBzZWxmLmRhdGFidWlsZGVyLm1jZGF0YVttY10pCiAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kLmZpbmlzaEFzeW5jQ29tbWFuZChtc2cpCisgICAgICAgICAgICAgICAgIyBXZSB0cmFzaGVkIHNlbGYucmVjaXBlY2FjaGVzIGFib3ZlCisgICAgICAgICAgICAgICAgc2VsZi5wYXJzZWNhY2hlX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24ubGltaXRlZF9kZXBzID0gRmFsc2UKKyAgICAgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4ucmVzZXQoc2VsZi5kYXRhKQorICAgICAgICAgICAgICAgIGlmIHF1aWV0bG9nOgorICAgICAgICAgICAgICAgICAgICBiYi5ydW5xdWV1ZS5sb2dnZXIuc2V0TGV2ZWwocnFsb2dsZXZlbCkKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGlmIHJldHZhbCBpcyBUcnVlOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC0xNDkxLDE0ICsxMzk4LDE3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgICAgIGlmIG5vdCByZXR2YWw6Ci0gICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5CdWlsZENvbXBsZXRlZChsZW4ocnEucnFkYXRhLnJ1bnRhc2tlbnRyaWVzKSwgYnVpbGRuYW1lLCB0YXJnZXRzLCBmYWlsdXJlcywgaW50ZXJydXB0ZWQpLCBzZWxmLmRhdGEpCi0gICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kLmZpbmlzaEFzeW5jQ29tbWFuZChtc2cpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmb3IgbWMgaW4gc2VsZi5tdWx0aWNvbmZpZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkJ1aWxkQ29tcGxldGVkKGxlbihycS5ycWRhdGEucnVudGFza2VudHJpZXMpLCBidWlsZG5hbWUsIHRhcmdldHMsIGZhaWx1cmVzLCBpbnRlcnJ1cHRlZCksIHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhW21jXSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZmluaXNoQXN5bmNDb21tYW5kKG1zZykKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGlmIHJldHZhbCBpcyBUcnVlOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICByZXR1cm4gcmV0dmFsCiAKLSAgICAgICAgYnVpbGQucmVzZXRfY2FjaGUoKQorICAgICAgICBzZWxmLnJlc2V0X210aW1lX2NhY2hlcygpCiAgICAgICAgIHNlbGYuYnVpbGRTZXRWYXJzKCkKIAogICAgICAgICAjIElmIHdlIGFyZSB0b2xkIHRvIGRvIHRoZSBOb25lIHRhc2sgdGhlbiBxdWVyeSB0aGUgZGVmYXVsdCB0YXNrCkBAIC0xNTIzLDcgKzE0MzMsOCBAQAogICAgICAgICAgICAgICAgIG50YXJnZXRzLmFwcGVuZCgibXVsdGljb25maWc6JXM6JXM6JXMiICUgKHRhcmdldFswXSwgdGFyZ2V0WzFdLCB0YXJnZXRbMl0pKQogICAgICAgICAgICAgbnRhcmdldHMuYXBwZW5kKCIlczolcyIgJSAodGFyZ2V0WzFdLCB0YXJnZXRbMl0pKQogCi0gICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQnVpbGRTdGFydGVkKGJ1aWxkbmFtZSwgbnRhcmdldHMpLCBzZWxmLmRhdGEpCisgICAgICAgIGZvciBtYyBpbiBzZWxmLm11bHRpY29uZmlnczoKKyAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuQnVpbGRTdGFydGVkKGJ1aWxkbmFtZSwgbnRhcmdldHMpLCBzZWxmLmRhdGFidWlsZGVyLm1jZGF0YVttY10pCiAKICAgICAgICAgcnEgPSBiYi5ydW5xdWV1ZS5SdW5RdWV1ZShzZWxmLCBzZWxmLmRhdGEsIHNlbGYucmVjaXBlY2FjaGVzLCB0YXNrZGF0YSwgcnVubGlzdCkKICAgICAgICAgaWYgJ3VuaXZlcnNlJyBpbiB0YXJnZXRzOgpAQCAtMTU1Niw1NSArMTQ2Nyw2IEBACiAgICAgICAgIHJldHVybiBkdW1wCiAKIAotICAgIGRlZiBnZW5lcmF0ZU5ld0ltYWdlKHNlbGYsIGltYWdlLCBiYXNlX2ltYWdlLCBwYWNrYWdlX3F1ZXVlLCB0aW1lc3RhbXAsIGRlc2NyaXB0aW9uKToKLSAgICAgICAgJycnCi0gICAgICAgIENyZWF0ZSBhIG5ldyBpbWFnZSB3aXRoIGEgInJlcXVpcmUiLyJpbmhlcml0IiBiYXNlX2ltYWdlIHN0YXRlbWVudAotICAgICAgICAnJycKLSAgICAgICAgaWYgdGltZXN0YW1wOgotICAgICAgICAgICAgaW1hZ2VfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoaW1hZ2UpWzBdCi0gICAgICAgICAgICB0aW1lc3RyID0gdGltZS5zdHJmdGltZSgiLSVZJW0lZC0lSCVNJVMiKQotICAgICAgICAgICAgZGVzdCA9IGltYWdlX25hbWUgKyBzdHIodGltZXN0cikgKyAiLmJiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbm90IGltYWdlLmVuZHN3aXRoKCIuYmIiKToKLSAgICAgICAgICAgICAgICBkZXN0ID0gaW1hZ2UgKyAiLmJiIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZXN0ID0gaW1hZ2UKLQotICAgICAgICBiYXNlbmFtZSA9IEZhbHNlCi0gICAgICAgIGlmIGJhc2VfaW1hZ2U6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oYmFzZV9pbWFnZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgIHJlcXVpcmVfbGluZSA9IGYucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgIHAgPSByZS5jb21waWxlKCJJTUFHRV9CQVNFTkFNRSAqPSIpCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICAgICAgaWYgcC5zZWFyY2gobGluZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSA9IFRydWUKLQotICAgICAgICB3aXRoIG9wZW4oZGVzdCwgInciKSBhcyBpbWFnZWZpbGU6Ci0gICAgICAgICAgICBpZiBiYXNlX2ltYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaW1hZ2VmaWxlLndyaXRlKCJpbmhlcml0IGNvcmUtaW1hZ2VcbiIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRvcGRpciA9IHNlbGYuZGF0YS5nZXRWYXIoIlRPUERJUiIsIEZhbHNlKQotICAgICAgICAgICAgICAgIGlmIHRvcGRpciBpbiBiYXNlX2ltYWdlOgotICAgICAgICAgICAgICAgICAgICBiYXNlX2ltYWdlID0gcmVxdWlyZV9saW5lLnNwbGl0KClbMV0KLSAgICAgICAgICAgICAgICBpbWFnZWZpbGUud3JpdGUoInJlcXVpcmUgIiArIGJhc2VfaW1hZ2UgKyAiXG4iKQotICAgICAgICAgICAgaW1hZ2VfaW5zdGFsbCA9ICJJTUFHRV9JTlNUQUxMID0gXCIiCi0gICAgICAgICAgICBmb3IgcGFja2FnZSBpbiBwYWNrYWdlX3F1ZXVlOgotICAgICAgICAgICAgICAgIGltYWdlX2luc3RhbGwgKz0gc3RyKHBhY2thZ2UpICsgIiAiCi0gICAgICAgICAgICBpbWFnZV9pbnN0YWxsICs9ICJcIlxuIgotICAgICAgICAgICAgaW1hZ2VmaWxlLndyaXRlKGltYWdlX2luc3RhbGwpCi0KLSAgICAgICAgICAgIGRlc2NyaXB0aW9uX3ZhciA9ICJERVNDUklQVElPTiA9IFwiIiArIGRlc2NyaXB0aW9uICsgIlwiXG4iCi0gICAgICAgICAgICBpbWFnZWZpbGUud3JpdGUoZGVzY3JpcHRpb25fdmFyKQotCi0gICAgICAgICAgICBpZiBiYXNlbmFtZToKLSAgICAgICAgICAgICAgICAjIElmIHRoaXMgaXMgb3ZlcndyaXR0ZW4gaW4gYSBpbmhlcml0ZWQgaW1hZ2UsIHJlc2V0IGl0IHRvIGRlZmF1bHQKLSAgICAgICAgICAgICAgICBpbWFnZV9iYXNlbmFtZSA9ICJJTUFHRV9CQVNFTkFNRSA9IFwiJHtQTn1cIlxuIgotICAgICAgICAgICAgICAgIGltYWdlZmlsZS53cml0ZShpbWFnZV9iYXNlbmFtZSkKLQotICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUuaW5pdGlhbAotICAgICAgICBpZiB0aW1lc3RhbXA6Ci0gICAgICAgICAgICByZXR1cm4gdGltZXN0cgotCiAgICAgZGVmIHVwZGF0ZUNhY2hlU3luYyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSBzdGF0ZS5ydW5uaW5nOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0xNjE5LDggKzE0ODEsNyBAQAogICAgICAgICBpZiBub3Qgc2VsZi5iYXNlY29uZmlnX3ZhbGlkOgogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSZWxvYWRpbmcgYmFzZSBjb25maWd1cmF0aW9uIGRhdGEiKQogICAgICAgICAgICAgc2VsZi5pbml0Q29uZmlndXJhdGlvbkRhdGEoKQotICAgICAgICAgICAgc2VsZi5iYXNlY29uZmlnX3ZhbGlkID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5wYXJzZWNhY2hlX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlUFJTZXJ2KCkKIAogICAgICMgVGhpcyBpcyBjYWxsZWQgZm9yIGFsbCBhc3luYyBjb21tYW5kcyB3aGVuIHNlbGYuc3RhdGUgIT0gcnVubmluZwogICAgIGRlZiB1cGRhdGVDYWNoZShzZWxmKToKQEAgLTE2MzYsNiArMTQ5Nyw3IEBACiAgICAgICAgICAgICBzZWxmLnVwZGF0ZUNhY2hlU3luYygpCiAKICAgICAgICAgaWYgc2VsZi5zdGF0ZSAhPSBzdGF0ZS5wYXJzaW5nIGFuZCBub3Qgc2VsZi5wYXJzZWNhY2hlX3ZhbGlkOgorICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnJlc2V0KHNlbGYuZGF0YSkKICAgICAgICAgICAgIHNlbGYucGFyc2VDb25maWd1cmF0aW9uICgpCiAgICAgICAgICAgICBpZiBDb29rZXJGZWF0dXJlcy5TRU5EX1NBTklUWUVWRU5UUyBpbiBzZWxmLmZlYXR1cmVzZXQ6CiAgICAgICAgICAgICAgICAgZm9yIG1jIGluIHNlbGYubXVsdGljb25maWdzOgpAQCAtMTcyMyw0NiArMTU4NSwxNCBAQAogICAgICAgICByZXR1cm4gcGtnc190b19idWlsZAogCiAgICAgZGVmIHByZV9zZXJ2ZShzZWxmKToKLSAgICAgICAgIyBFbXB0eSB0aGUgZW52aXJvbm1lbnQuIFRoZSBlbnZpcm9ubWVudCB3aWxsIGJlIHBvcHVsYXRlZCBhcwotICAgICAgICAjIG5lY2Vzc2FyeSBmcm9tIHRoZSBkYXRhIHN0b3JlLgotICAgICAgICAjYmIudXRpbHMuZW1wdHlfZW52aXJvbm1lbnQoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnByaG9zdCA9IHByc2Vydi5zZXJ2LmF1dG9fc3RhcnQoc2VsZi5kYXRhKQotICAgICAgICBleGNlcHQgcHJzZXJ2LnNlcnYuUFJTZXJ2aWNlQ29uZmlnRXJyb3I6Ci0gICAgICAgICAgICBiYi5ldmVudC5maXJlKENvb2tlckV4aXQoKSwgc2VsZi5kYXRhKQotICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IHN0YXRlLmVycm9yCisgICAgICAgICMgV2Ugbm93IGFyZSBpbiBvdXIgb3duIHByb2Nlc3Mgc28gd2UgY2FuIGNhbGwgdGhpcyBoZXJlLgorICAgICAgICAjIFBSU2VydiBleGl0cyBpZiBpdHMgcGFyZW50IHByb2Nlc3MgZXhpdHMKKyAgICAgICAgc2VsZi5oYW5kbGVQUlNlcnYoKQogICAgICAgICByZXR1cm4KIAogICAgIGRlZiBwb3N0X3NlcnZlKHNlbGYpOgotICAgICAgICBwcnNlcnYuc2Vydi5hdXRvX3NodXRkb3duKHNlbGYuZGF0YSkKKyAgICAgICAgcHJzZXJ2LnNlcnYuYXV0b19zaHV0ZG93bigpCiAgICAgICAgIGJiLmV2ZW50LmZpcmUoQ29va2VyRXhpdCgpLCBzZWxmLmRhdGEpCi0gICAgICAgIGxvY2tmaWxlID0gc2VsZi5sb2NrLm5hbWUKLSAgICAgICAgc2VsZi5sb2NrLmNsb3NlKCkKLSAgICAgICAgc2VsZi5sb2NrID0gTm9uZQotCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLmxvY2s6Ci0gICAgICAgICAgICB3aXRoIGJiLnV0aWxzLnRpbWVvdXQoMyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2NrID0gYmIudXRpbHMubG9ja2ZpbGUobG9ja2ZpbGUsIHNoYXJlZD1GYWxzZSwgcmV0cnk9RmFsc2UsIGJsb2NrPVRydWUpCi0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYubG9jazoKLSAgICAgICAgICAgICAgICAgICAgIyBTb21lIHN5c3RlbXMgbWF5IG5vdCBoYXZlIGxzb2YgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgICAgIHByb2NzID0gTm9uZQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9jcyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsibHNvZiIsICctdycsIGxvY2tmaWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgaWYgcHJvY3MgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRmFsbCBiYWNrIHRvIGZ1c2VyIGlmIGxzb2YgaXMgdW5hdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jcyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsiZnVzZXIiLCAnLXYnLCBsb2NrZmlsZV0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICAgICAgICAgICAgICAgICAgbXNnID0gIkRlbGF5aW5nIHNodXRkb3duIGR1ZSB0byBhY3RpdmUgcHJvY2Vzc2VzIHdoaWNoIGFwcGVhciB0byBiZSBob2xkaW5nIGJpdGJha2UubG9jayIKLSAgICAgICAgICAgICAgICAgICAgaWYgcHJvY3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtc2cgKz0gIjpcbiVzIiAlIHN0cihwcm9jcykKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQobXNnKQogCiAKICAgICBkZWYgc2h1dGRvd24oc2VsZiwgZm9yY2UgPSBGYWxzZSk6CkBAIC0xNzg0LDQ2ICsxNjE0LDEyIEBACiAKICAgICBkZWYgY2xpZW50Q29tcGxldGUoc2VsZik6CiAgICAgICAgICIiIkNhbGxlZCB3aGVuIHRoZSBjbGllbnQgaXMgZG9uZSB1c2luZyB0aGUgc2VydmVyIiIiCi0gICAgICAgIGlmIHNlbGYuY29uZmlndXJhdGlvbi5zZXJ2ZXJfb25seToKLSAgICAgICAgICAgIHNlbGYuZmluaXNoY29tbWFuZCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNodXRkb3duKFRydWUpCisgICAgICAgIHNlbGYuZmluaXNoY29tbWFuZCgpCisgICAgICAgIHNlbGYuZXh0cmFjb25maWdkYXRhID0ge30KKyAgICAgICAgc2VsZi5jb21tYW5kLnJlc2V0KCkKKyAgICAgICAgc2VsZi5kYXRhYnVpbGRlci5yZXNldCgpCisgICAgICAgIHNlbGYuZGF0YSA9IHNlbGYuZGF0YWJ1aWxkZXIuZGF0YQogCi0gICAgZGVmIGxvY2tCaXRiYWtlKHNlbGYpOgotICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnbG9jaycpOgotICAgICAgICAgICAgc2VsZi5sb2NrID0gTm9uZQotICAgICAgICAgICAgaWYgc2VsZi5kYXRhOgotICAgICAgICAgICAgICAgIGxvY2tmaWxlID0gc2VsZi5kYXRhLmV4cGFuZCgiJHtUT1BESVJ9L2JpdGJha2UubG9jayIpCi0gICAgICAgICAgICAgICAgaWYgbG9ja2ZpbGU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9jayA9IGJiLnV0aWxzLmxvY2tmaWxlKGxvY2tmaWxlLCBGYWxzZSwgRmFsc2UpCi0gICAgICAgIHJldHVybiBzZWxmLmxvY2sKLQotICAgIGRlZiB1bmxvY2tCaXRiYWtlKHNlbGYpOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdsb2NrJykgYW5kIHNlbGYubG9jazoKLSAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUoc2VsZi5sb2NrKQotCi1kZWYgc2VydmVyX21haW4oY29va2VyLCBmdW5jLCAqYXJncyk6Ci0gICAgY29va2VyLnByZV9zZXJ2ZSgpCi0KLSAgICBpZiBjb29rZXIuY29uZmlndXJhdGlvbi5wcm9maWxlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgY1Byb2ZpbGUgYXMgcHJvZmlsZQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpbXBvcnQgcHJvZmlsZQotICAgICAgICBwcm9mID0gcHJvZmlsZS5Qcm9maWxlKCkKLQotICAgICAgICByZXQgPSBwcm9maWxlLlByb2ZpbGUucnVuY2FsbChwcm9mLCBmdW5jLCAqYXJncykKLQotICAgICAgICBwcm9mLmR1bXBfc3RhdHMoInByb2ZpbGUubG9nIikKLSAgICAgICAgYmIudXRpbHMucHJvY2Vzc19wcm9maWxlbG9nKCJwcm9maWxlLmxvZyIpCi0gICAgICAgIHByaW50KCJSYXcgcHJvZmlsaW5nIGluZm9ybWF0aW9uIHNhdmVkIHRvIHByb2ZpbGUubG9nIGFuZCBwcm9jZXNzZWQgc3RhdGlzdGljcyB0byBwcm9maWxlLmxvZy5wcm9jZXNzZWQiKQotCi0gICAgZWxzZToKLSAgICAgICAgcmV0ID0gZnVuYygqYXJncykKLQotICAgIGNvb2tlci5wb3N0X3NlcnZlKCkKLQotICAgIHJldHVybiByZXQKIAogY2xhc3MgQ29va2VyRXhpdChiYi5ldmVudC5FdmVudCk6CiAgICAgIiIiCkBAIC0xODkwLDE1ICsxNjg2LDIzIEBACiAKICAgICAgICAgIyBXZSBuZWVkIHRvIHRyYWNrIHdoZXJlIHdlIGxvb2sgc28gdGhhdCB3ZSBjYW4gYWRkIGlub3RpZnkgd2F0Y2hlcy4gVGhlcmUKICAgICAgICAgIyBpcyBubyBuaWNlIHdheSB0byBkbyB0aGlzLCB0aGlzIGlzIGhvcnJpZC4gV2UgaW50ZXJjZXB0IHRoZSBvcy5saXN0ZGlyKCkKLSAgICAgICAgIyBjYWxscyB3aGlsZSB3ZSBydW4gZ2xvYigpLgorICAgICAgICAjIChvciBvcy5zY2FuZGlyKCkgZm9yIHB5dGhvbiAzLjYrKSBjYWxscyB3aGlsZSB3ZSBydW4gZ2xvYigpLgogICAgICAgICBvcmlnbGlzdGRpciA9IG9zLmxpc3RkaXIKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ3NjYW5kaXInKToKKyAgICAgICAgICAgIG9yaWdzY2FuZGlyID0gb3Muc2NhbmRpcgogICAgICAgICBzZWFyY2hkaXJzID0gW10KIAogICAgICAgICBkZWYgb3VybGlzdGRpcihkKToKICAgICAgICAgICAgIHNlYXJjaGRpcnMuYXBwZW5kKGQpCiAgICAgICAgICAgICByZXR1cm4gb3JpZ2xpc3RkaXIoZCkKIAorICAgICAgICBkZWYgb3Vyc2NhbmRpcihkKToKKyAgICAgICAgICAgIHNlYXJjaGRpcnMuYXBwZW5kKGQpCisgICAgICAgICAgICByZXR1cm4gb3JpZ3NjYW5kaXIoZCkKKwogICAgICAgICBvcy5saXN0ZGlyID0gb3VybGlzdGRpcgorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnc2NhbmRpcicpOgorICAgICAgICAgICAgb3Muc2NhbmRpciA9IG91cnNjYW5kaXIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBDYW4ndCB1c2Ugc2V0IGhlcmUgYXMgb3JkZXIgaXMgaW1wb3J0YW50CiAgICAgICAgICAgICBuZXdmaWxlcyA9IFtdCkBAIC0xOTE4LDYgKzE3MjIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGVzLmFwcGVuZChnKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MubGlzdGRpciA9IG9yaWdsaXN0ZGlyCisgICAgICAgICAgICBpZiBoYXNhdHRyKG9zLCAnc2NhbmRpcicpOgorICAgICAgICAgICAgICAgIG9zLnNjYW5kaXIgPSBvcmlnc2NhbmRpcgogCiAgICAgICAgIGJibWFzayA9IGNvbmZpZy5nZXRWYXIoJ0JCTUFTSycpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkKaW5kZXggZTQwOGEzNS4uZmFiNDdjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkKQEAgLTQxLDEwICs0MSw2IEBACiAKICAgICAgICAgc2VsZi5vcHRpb25zLnBrZ3NfdG9fYnVpbGQgPSB0YXJnZXRzIG9yIFtdCiAKLSAgICAgICAgc2VsZi5vcHRpb25zLnRyYWNraW5nID0gRmFsc2UKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLm9wdGlvbnMsICJzaG93X2Vudmlyb25tZW50IikgYW5kIHNlbGYub3B0aW9ucy5zaG93X2Vudmlyb25tZW50OgotICAgICAgICAgICAgc2VsZi5vcHRpb25zLnRyYWNraW5nID0gVHJ1ZQotCiAgICAgICAgIGZvciBrZXksIHZhbCBpbiBzZWxmLm9wdGlvbnMuX19kaWN0X18uaXRlbXMoKToKICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWwpCiAKQEAgLTczLDE1ICs2OSwxNSBAQAogCiAgICAgZGVmIHVwZGF0ZVRvU2VydmVyKHNlbGYsIHNlcnZlciwgZW52aXJvbm1lbnQpOgogICAgICAgICBvcHRpb25zID0ge30KLSAgICAgICAgZm9yIG8gaW4gWyJhYm9ydCIsICJ0cnlhbHRjb25maWdzIiwgImZvcmNlIiwgImludmFsaWRhdGVfc3RhbXAiLCAKLSAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgImRlYnVnIiwgImRyeV9ydW4iLCAiZHVtcF9zaWduYXR1cmVzIiwgCisgICAgICAgIGZvciBvIGluIFsiYWJvcnQiLCAiZm9yY2UiLCAiaW52YWxpZGF0ZV9zdGFtcCIsCisgICAgICAgICAgICAgICAgICAidmVyYm9zZSIsICJkZWJ1ZyIsICJkcnlfcnVuIiwgImR1bXBfc2lnbmF0dXJlcyIsCiAgICAgICAgICAgICAgICAgICAiZGVidWdfZG9tYWlucyIsICJleHRyYV9hc3N1bWVfcHJvdmlkZWQiLCAicHJvZmlsZSIsCi0gICAgICAgICAgICAgICAgICAicHJlZmlsZSIsICJwb3N0ZmlsZSJdOgorICAgICAgICAgICAgICAgICAgInByZWZpbGUiLCAicG9zdGZpbGUiLCAic2VydmVyX3RpbWVvdXQiXToKICAgICAgICAgICAgIG9wdGlvbnNbb10gPSBnZXRhdHRyKHNlbGYub3B0aW9ucywgbykKIAogICAgICAgICByZXQsIGVycm9yID0gc2VydmVyLnJ1bkNvbW1hbmQoWyJ1cGRhdGVDb25maWciLCBvcHRpb25zLCBlbnZpcm9ubWVudCwgc3lzLmFyZ3ZdKQogICAgICAgICBpZiBlcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlVuYWJsZSB0byB1cGRhdGUgdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIHdpdGggbG9jYWwgcGFyYW1ldGVyczogJXMiICUgZXJyb3IpCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlVuYWJsZSB0byB1cGRhdGUgdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIHdpdGggbG9jYWwgcGFyYW1ldGVyczogJXMiICUgZXJyb3IpCiAKICAgICBkZWYgcGFyc2VBY3Rpb25zKHNlbGYpOgogICAgICAgICAjIFBhcnNlIGFueSBjb21tYW5kbGluZSBpbnRvIGFjdGlvbnMKQEAgLTEzMSw4ICsxMjcsNiBAQAogICAgICAgICBzZWxmLmV4dHJhX2Fzc3VtZV9wcm92aWRlZCA9IFtdCiAgICAgICAgIHNlbGYucHJlZmlsZSA9IFtdCiAgICAgICAgIHNlbGYucG9zdGZpbGUgPSBbXQotICAgICAgICBzZWxmLnByZWZpbGVfc2VydmVyID0gW10KLSAgICAgICAgc2VsZi5wb3N0ZmlsZV9zZXJ2ZXIgPSBbXQogICAgICAgICBzZWxmLmRlYnVnID0gMAogICAgICAgICBzZWxmLmNtZCA9IE5vbmUKICAgICAgICAgc2VsZi5hYm9ydCA9IFRydWUKQEAgLTE0NCw3ICsxMzgsOCBAQAogICAgICAgICBzZWxmLmR1bXBfc2lnbmF0dXJlcyA9IFtdCiAgICAgICAgIHNlbGYuZHJ5X3J1biA9IEZhbHNlCiAgICAgICAgIHNlbGYudHJhY2tpbmcgPSBGYWxzZQotICAgICAgICBzZWxmLmludGVyZmFjZSA9IFtdCisgICAgICAgIHNlbGYueG1scnBjaW50ZXJmYWNlID0gW10KKyAgICAgICAgc2VsZi5zZXJ2ZXJfdGltZW91dCA9IE5vbmUKICAgICAgICAgc2VsZi53cml0ZWV2ZW50bG9nID0gRmFsc2UKICAgICAgICAgc2VsZi5zZXJ2ZXJfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYubGltaXRlZF9kZXBzID0gRmFsc2UKQEAgLTE1Nyw3ICsxNTIsNiBAQAogICAgICAgICAgICAgaWYga2V5IGluIHBhcmFtZXRlcnMub3B0aW9ucy5fX2RpY3RfXzoKICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGtleSwgcGFyYW1ldGVycy5vcHRpb25zLl9fZGljdF9fW2tleV0pCiAgICAgICAgIHNlbGYuZW52ID0gcGFyYW1ldGVycy5lbnZpcm9ubWVudC5jb3B5KCkKLSAgICAgICAgc2VsZi50cmFja2luZyA9IHBhcmFtZXRlcnMudHJhY2tpbmcKIAogICAgIGRlZiBzZXRTZXJ2ZXJSZWdJZGxlQ2FsbGJhY2soc2VsZiwgc3JjYik6CiAgICAgICAgIHNlbGYuc2VydmVyX3JlZ2lzdGVyX2lkbGVjYWxsYmFjayA9IHNyY2IKQEAgLTE3Myw3ICsxNjcsNyBAQAogCiAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLHN0YXRlKToKICAgICAgICAgZm9yIGsgaW4gc3RhdGU6Ci0gICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGssIHN0YXRlW2tdKSAKKyAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgaywgc3RhdGVba10pCiAKIAogZGVmIGNhdGNoX3BhcnNlX2Vycm9yKGZ1bmMpOgpAQCAtMjMwLDYgKzIyNCwyNyBAQAogCiAgICAgcmV0dXJuIE5vbmUKIAorIworIyBXZSBzZWFyY2ggZm9yIGEgY29uZi9iYmxheWVycy5jb25mIHVuZGVyIGFuIGVudHJ5IGluIEJCUEFUSCBvciBpbiBjd2Qgd29ya2luZyAKKyMgdXAgdG8gLy4gSWYgdGhhdCBmYWlscywgd2Ugc2VhcmNoIGZvciBhIGNvbmYvYml0YmFrZS5jb25mIGluIEJCUEFUSC4KKyMKKworZGVmIGZpbmRUb3BkaXIoKToKKyAgICBkID0gYmIuZGF0YS5pbml0KCkKKyAgICBiYnBhdGggPSBOb25lCisgICAgaWYgJ0JCUEFUSCcgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYmJwYXRoID0gb3MuZW52aXJvblsnQkJQQVRIJ10KKyAgICAgICAgZC5zZXRWYXIoJ0JCUEFUSCcsIGJicGF0aCkKKworICAgIGxheWVyY29uZiA9IGZpbmRDb25maWdGaWxlKCJiYmxheWVycy5jb25mIiwgZCkKKyAgICBpZiBsYXllcmNvbmY6CisgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKGxheWVyY29uZikpCisgICAgaWYgYmJwYXRoOgorICAgICAgICBiaXRiYWtlY29uZiA9IGJiLnV0aWxzLndoaWNoKGJicGF0aCwgImNvbmYvYml0YmFrZS5jb25mIikKKyAgICAgICAgaWYgYml0YmFrZWNvbmY6CisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShiaXRiYWtlY29uZikpCisgICAgcmV0dXJuIE5vbmUKKwogY2xhc3MgQ29va2VyRGF0YUJ1aWxkZXIob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb29rZXJjZmcsIHdvcmtlciA9IEZhbHNlKToKQEAgLTI1NSw3ICsyNzAsNyBAQAogICAgICAgICBmaWx0ZXJlZF9rZXlzID0gYmIudXRpbHMuYXBwcm92ZWRfdmFyaWFibGVzKCkKICAgICAgICAgYmIuZGF0YS5pbmhlcml0RnJvbU9TKHNlbGYuYmFzZWRhdGEsIHNlbGYuc2F2ZWRlbnYsIGZpbHRlcmVkX2tleXMpCiAgICAgICAgIHNlbGYuYmFzZWRhdGEuc2V0VmFyKCJCQl9PUklHRU5WIiwgc2VsZi5zYXZlZGVudikKLSAgICAgICAgCisKICAgICAgICAgaWYgd29ya2VyOgogICAgICAgICAgICAgc2VsZi5iYXNlZGF0YS5zZXRWYXIoIkJCX1dPUktFUkNPTlRFWFQiLCAiMSIpCiAKQEAgLTI5NCw2ICszMDksOCBAQAogICAgICAgICAgICAgICAgIG1jZGF0YSA9IHNlbGYucGFyc2VDb25maWd1cmF0aW9uRmlsZXMoc2VsZi5wcmVmaWxlcywgc2VsZi5wb3N0ZmlsZXMsIGNvbmZpZykKICAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkNvbmZpZ1BhcnNlZCgpLCBtY2RhdGEpCiAgICAgICAgICAgICAgICAgc2VsZi5tY2RhdGFbY29uZmlnXSA9IG1jZGF0YQorICAgICAgICAgICAgaWYgbXVsdGljb25maWc6CisgICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5NdWx0aUNvbmZpZ1BhcnNlZChzZWxmLm1jZGF0YSksIHNlbGYuZGF0YSkKIAogICAgICAgICBleGNlcHQgKFN5bnRheEVycm9yLCBiYi5CQkhhbmRsZWRFeGNlcHRpb24pOgogICAgICAgICAgICAgcmFpc2UgYmIuQkJIYW5kbGVkRXhjZXB0aW9uCkBAIC0zMDQsNiArMzIxLDE4IEBACiAgICAgICAgICAgICBsb2dnZXIuZXhjZXB0aW9uKCJFcnJvciBwYXJzaW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMiKQogICAgICAgICAgICAgcmFpc2UgYmIuQkJIYW5kbGVkRXhjZXB0aW9uCiAKKyAgICAgICAgIyBDcmVhdGUgYSBjb3B5IHNvIHdlIGNhbiByZXNldCBhdCBhIGxhdGVyIGRhdGUgd2hlbiBVSXMgZGlzY29ubmVjdAorICAgICAgICBzZWxmLm9yaWdkYXRhID0gc2VsZi5kYXRhCisgICAgICAgIHNlbGYuZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShzZWxmLm9yaWdkYXRhKQorICAgICAgICBzZWxmLm1jZGF0YVsnJ10gPSBzZWxmLmRhdGEKKworICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgIyBXZSBtYXkgbm90IGhhdmUgcnVuIHBhcnNlQmFzZUNvbmZpZ3VyYXRpb24oKSB5ZXQKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ29yaWdkYXRhJyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5kYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KHNlbGYub3JpZ2RhdGEpCisgICAgICAgIHNlbGYubWNkYXRhWycnXSA9IHNlbGYuZGF0YQorCiAgICAgZGVmIF9maW5kTGF5ZXJDb25mKHNlbGYsIGRhdGEpOgogICAgICAgICByZXR1cm4gZmluZENvbmZpZ0ZpbGUoImJibGF5ZXJzLmNvbmYiLCBkYXRhKQogCkBAIC0zNDYsNiArMzc1LDI3IEBACiAgICAgICAgICAgICBkYXRhLmRlbFZhcignTEFZRVJESVJfUkUnKQogICAgICAgICAgICAgZGF0YS5kZWxWYXIoJ0xBWUVSRElSJykKIAorICAgICAgICAgICAgYmJmaWxlc19keW5hbWljID0gKGRhdGEuZ2V0VmFyKCdCQkZJTEVTX0RZTkFNSUMnKSBvciAiIikuc3BsaXQoKQorICAgICAgICAgICAgY29sbGVjdGlvbnMgPSAoZGF0YS5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpIG9yICIiKS5zcGxpdCgpCisgICAgICAgICAgICBpbnZhbGlkID0gW10KKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBiYmZpbGVzX2R5bmFtaWM6CisgICAgICAgICAgICAgICAgcGFydHMgPSBlbnRyeS5zcGxpdCgiOiIsIDEpCisgICAgICAgICAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSAyOgorICAgICAgICAgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZChlbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBsLCBmID0gcGFydHMKKyAgICAgICAgICAgICAgICBpZiBsIGluIGNvbGxlY3Rpb25zOgorICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZFZhcigiQkJGSUxFUyIsICIgIiArIGYpCisgICAgICAgICAgICBpZiBpbnZhbGlkOgorICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJCQkZJTEVTX0RZTkFNSUMgZW50cmllcyBtdXN0IGJlIG9mIHRoZSBmb3JtIDxjb2xsZWN0aW9uIG5hbWU+OjxmaWxlbmFtZSBwYXR0ZXJuPiwgbm90OlxuICAgICVzIiAlICJcbiAgICAiLmpvaW4oaW52YWxpZCkpCisKKyAgICAgICAgICAgIGxheWVyc2VyaWVzID0gc2V0KChkYXRhLmdldFZhcigiTEFZRVJTRVJJRVNfQ09SRU5BTUVTIikgb3IgIiIpLnNwbGl0KCkpCisgICAgICAgICAgICBmb3IgYyBpbiBjb2xsZWN0aW9uczoKKyAgICAgICAgICAgICAgICBjb21wYXQgPSBzZXQoKGRhdGEuZ2V0VmFyKCJMQVlFUlNFUklFU19DT01QQVRfJXMiICUgYykgb3IgIiIpLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgaWYgY29tcGF0IGFuZCBub3QgKGNvbXBhdCAmIGxheWVyc2VyaWVzKToKKyAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIkxheWVyICVzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIGNvcmUgbGF5ZXIgd2hpY2ggb25seSBzdXBwb3J0cyB0aGVzZSBzZXJpZXM6ICVzIChsYXllciBpcyBjb21wYXRpYmxlIHdpdGggJXMpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYywgIiAiLmpvaW4obGF5ZXJzZXJpZXMpLCAiICIuam9pbihjb21wYXQpKSkKKwogICAgICAgICBpZiBub3QgZGF0YS5nZXRWYXIoIkJCUEFUSCIpOgogICAgICAgICAgICAgbXNnID0gIlRoZSBCQlBBVEggdmFyaWFibGUgaXMgbm90IHNldCIKICAgICAgICAgICAgIGlmIG5vdCBsYXllcmNvbmY6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGFlbW9uaXplLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2RhZW1vbml6ZS5weQppbmRleCBhYjRhOTU0Li44MzAwZDFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGFlbW9uaXplLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9kYWVtb25pemUucHkKQEAgLTEsNDggKzEsMTQgQEAKICIiIgogUHl0aG9uIERhZW1vbml6aW5nIGhlbHBlcgogCi1Db25maWd1cmFibGUgZGFlbW9uIGJlaGF2aW9yczoKLQotICAgIDEuKSBUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzZXQgdG8gdGhlICIvIiBkaXJlY3RvcnkuCi0gICAgMi4pIFRoZSBjdXJyZW50IGZpbGUgY3JlYXRpb24gbW9kZSBtYXNrIHNldCB0byAwLgotICAgIDMuKSBDbG9zZSBhbGwgb3BlbiBmaWxlcyAoMTAyNCkuIAotICAgIDQuKSBSZWRpcmVjdCBzdGFuZGFyZCBJL08gc3RyZWFtcyB0byAiL2Rldi9udWxsIi4KLQotQSBmYWlsZWQgY2FsbCB0byBmb3JrKCkgbm93IHJhaXNlcyBhbiBleGNlcHRpb24uCi0KLVJlZmVyZW5jZXM6Ci0gICAgMSkgQWR2YW5jZWQgUHJvZ3JhbW1pbmcgaW4gdGhlIFVuaXggRW52aXJvbm1lbnQ6IFcuIFJpY2hhcmQgU3RldmVucwotCWh0dHA6Ly93d3cuYXB1ZWJvb2suY29tL2FwdWUzZS5odG1sCi0gICAgMikgVGhlIExpbnV4IFByb2dyYW1taW5nIEludGVyZmFjZTogTWljaGFlbCBLZXJyaXNrCi0JaHR0cDovL21hbjcub3JnL3RscGkvaW5kZXguaHRtbAotICAgIDMpIFVuaXggUHJvZ3JhbW1pbmcgRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnM6Ci0JaHR0cDovL3d3dy5mYXFzLm9yZy9mYXFzL3VuaXgtZmFxL3Byb2dyYW1tZXIvZmFxLwotCi1Nb2RpZmllZCB0byBhbGxvdyBhIGZ1bmN0aW9uIHRvIGJlIGRhZW1vbml6ZWQgYW5kIHJldHVybiBmb3IgCi1iaXRiYWtlIHVzZSBieSBSaWNoYXJkIFB1cmRpZQorT3JpZ2luYWxseSBiYXNlZCBvbiBjb2RlIENvcHlyaWdodCAoQykgMjAwNSBDaGFkIEouIFNjaHJvZWRlciBidXQgbm93IGhlYXZpbHkgbW9kaWZpZWQKK3RvIGFsbG93IGEgZnVuY3Rpb24gdG8gYmUgZGFlbW9uaXplZCBhbmQgcmV0dXJuIGZvciBiaXRiYWtlIHVzZSBieSBSaWNoYXJkIFB1cmRpZQogIiIiCiAKLV9fYXV0aG9yX18gPSAiQ2hhZCBKLiBTY2hyb2VkZXIiCi1fX2NvcHlyaWdodF9fID0gIkNvcHlyaWdodCAoQykgMjAwNSBDaGFkIEouIFNjaHJvZWRlciIKLV9fdmVyc2lvbl9fID0gIjAuMiIKLQotIyBTdGFuZGFyZCBQeXRob24gbW9kdWxlcy4KLWltcG9ydCBvcyAgICAgICAgICAgICAgICAgICAgIyBNaXNjZWxsYW5lb3VzIE9TIGludGVyZmFjZXMuCi1pbXBvcnQgc3lzICAgICAgICAgICAgICAgICAgICMgU3lzdGVtLXNwZWNpZmljIHBhcmFtZXRlcnMgYW5kIGZ1bmN0aW9ucy4KLQotIyBEZWZhdWx0IGRhZW1vbiBwYXJhbWV0ZXJzLgotIyBGaWxlIG1vZGUgY3JlYXRpb24gbWFzayBvZiB0aGUgZGFlbW9uLgotIyBGb3IgQml0QmFrZSdzIGNoaWxkcmVuLCB3ZSBkbyB3YW50IHRvIGluaGVyaXQgdGhlIHBhcmVudCB1bWFzay4KLVVNQVNLID0gTm9uZQotCi0jIERlZmF1bHQgbWF4aW11bSBmb3IgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgZmlsZSBkZXNjcmlwdG9ycy4KLU1BWEZEID0gMTAyNAotCi0jIFRoZSBzdGFuZGFyZCBJL08gZmlsZSBkZXNjcmlwdG9ycyBhcmUgcmVkaXJlY3RlZCB0byAvZGV2L251bGwgYnkgZGVmYXVsdC4KLWlmIChoYXNhdHRyKG9zLCAiZGV2bnVsbCIpKToKLSAgICBSRURJUkVDVF9UTyA9IG9zLmRldm51bGwKLWVsc2U6Ci0gICAgUkVESVJFQ1RfVE8gPSAiL2Rldi9udWxsIgoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgaW8KK2ltcG9ydCB0cmFjZWJhY2sKIAogZGVmIGNyZWF0ZURhZW1vbihmdW5jdGlvbiwgbG9nZmlsZSk6CiAgICAgIiIiCkBAIC02NSwzNiArMzEsNiBAQAogICAgICAgICAjIGxlYWRlciBvZiB0aGUgbmV3IHByb2Nlc3MgZ3JvdXAsIHdlIGNhbGwgb3Muc2V0c2lkKCkuICBUaGUgcHJvY2VzcyBpcwogICAgICAgICAjIGFsc28gZ3VhcmFudGVlZCBub3QgdG8gaGF2ZSBhIGNvbnRyb2xsaW5nIHRlcm1pbmFsLgogICAgICAgICBvcy5zZXRzaWQoKQotCi0gICAgICAgICMgSXMgaWdub3JpbmcgU0lHSFVQIG5lY2Vzc2FyeT8KLSAgICAgICAgIwotICAgICAgICAjIEl0J3Mgb2Z0ZW4gc3VnZ2VzdGVkIHRoYXQgdGhlIFNJR0hVUCBzaWduYWwgc2hvdWxkIGJlIGlnbm9yZWQgYmVmb3JlCi0gICAgICAgICMgdGhlIHNlY29uZCBmb3JrIHRvIGF2b2lkIHByZW1hdHVyZSB0ZXJtaW5hdGlvbiBvZiB0aGUgcHJvY2Vzcy4gIFRoZQotICAgICAgICAjIHJlYXNvbiBpcyB0aGF0IHdoZW4gdGhlIGZpcnN0IGNoaWxkIHRlcm1pbmF0ZXMsIGFsbCBwcm9jZXNzZXMsIGUuZy4KLSAgICAgICAgIyB0aGUgc2Vjb25kIGNoaWxkLCBpbiB0aGUgb3JwaGFuZWQgZ3JvdXAgd2lsbCBiZSBzZW50IGEgU0lHSFVQLgotICAgICAgICAjCi0gICAgICAgICMgIkhvd2V2ZXIsIGFzIHBhcnQgb2YgdGhlIHNlc3Npb24gbWFuYWdlbWVudCBzeXN0ZW0sIHRoZXJlIGFyZSBleGFjdGx5Ci0gICAgICAgICMgdHdvIGNhc2VzIHdoZXJlIFNJR0hVUCBpcyBzZW50IG9uIHRoZSBkZWF0aCBvZiBhIHByb2Nlc3M6Ci0gICAgICAgICMKLSAgICAgICAgIyAgICAxKSBXaGVuIHRoZSBwcm9jZXNzIHRoYXQgZGllcyBpcyB0aGUgc2Vzc2lvbiBsZWFkZXIgb2YgYSBzZXNzaW9uIHRoYXQKLSAgICAgICAgIyAgICAgICAgaXMgYXR0YWNoZWQgdG8gYSB0ZXJtaW5hbCBkZXZpY2UsIFNJR0hVUCBpcyBzZW50IHRvIGFsbCBwcm9jZXNzZXMKLSAgICAgICAgIyAgICAgICAgaW4gdGhlIGZvcmVncm91bmQgcHJvY2VzcyBncm91cCBvZiB0aGF0IHRlcm1pbmFsIGRldmljZS4KLSAgICAgICAgIyAgICAyKSBXaGVuIHRoZSBkZWF0aCBvZiBhIHByb2Nlc3MgY2F1c2VzIGEgcHJvY2VzcyBncm91cCB0byBiZWNvbWUKLSAgICAgICAgIyAgICAgICAgb3JwaGFuZWQsIGFuZCBvbmUgb3IgbW9yZSBwcm9jZXNzZXMgaW4gdGhlIG9ycGhhbmVkIGdyb3VwIGFyZQotICAgICAgICAjICAgICAgICBzdG9wcGVkLCB0aGVuIFNJR0hVUCBhbmQgU0lHQ09OVCBhcmUgc2VudCB0byBhbGwgbWVtYmVycyBvZiB0aGUKLSAgICAgICAgIyAgICAgICAgb3JwaGFuZWQgZ3JvdXAuIiBbMl0KLSAgICAgICAgIwotICAgICAgICAjIFRoZSBmaXJzdCBjYXNlIGNhbiBiZSBpZ25vcmVkIHNpbmNlIHRoZSBjaGlsZCBpcyBndWFyYW50ZWVkIG5vdCB0byBoYXZlCi0gICAgICAgICMgYSBjb250cm9sbGluZyB0ZXJtaW5hbC4gIFRoZSBzZWNvbmQgY2FzZSBpc24ndCBzbyBlYXN5IHRvIGRpc21pc3MuCi0gICAgICAgICMgVGhlIHByb2Nlc3MgZ3JvdXAgaXMgb3JwaGFuZWQgd2hlbiB0aGUgZmlyc3QgY2hpbGQgdGVybWluYXRlcyBhbmQKLSAgICAgICAgIyBQT1NJWC4xIHJlcXVpcmVzIHRoYXQgZXZlcnkgU1RPUFBFRCBwcm9jZXNzIGluIGFuIG9ycGhhbmVkIHByb2Nlc3MKLSAgICAgICAgIyBncm91cCBiZSBzZW50IGEgU0lHSFVQIHNpZ25hbCBmb2xsb3dlZCBieSBhIFNJR0NPTlQgc2lnbmFsLiAgU2luY2UgdGhlCi0gICAgICAgICMgc2Vjb25kIGNoaWxkIGlzIG5vdCBTVE9QUEVEIHRob3VnaCwgd2UgY2FuIHNhZmVseSBmb3JlZ28gaWdub3JpbmcgdGhlCi0gICAgICAgICMgU0lHSFVQIHNpZ25hbC4gIEluIGFueSBjYXNlLCB0aGVyZSBhcmUgbm8gaWxsLWVmZmVjdHMgaWYgaXQgaXMgaWdub3JlZC4KLSAgICAgICAgIwotICAgICAgICAjIGltcG9ydCBzaWduYWwgICAgICAgICAgICAgICMgU2V0IGhhbmRsZXJzIGZvciBhc3luY2hyb25vdXMgZXZlbnRzLgotICAgICAgICAjIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgc2lnbmFsLlNJR19JR04pCi0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBGb3JrIGEgc2Vjb25kIGNoaWxkIGFuZCBleGl0IGltbWVkaWF0ZWx5IHRvIHByZXZlbnQgem9tYmllcy4gIFRoaXMKICAgICAgICAgICAgICMgY2F1c2VzIHRoZSBzZWNvbmQgY2hpbGQgcHJvY2VzcyB0byBiZSBvcnBoYW5lZCwgbWFraW5nIHRoZSBpbml0CkBAIC0xMDgsODYgKzQ0LDM5IEBACiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIFslZF0iICUgKGUuc3RyZXJyb3IsIGUuZXJybm8pKQogCi0gICAgICAgIGlmIChwaWQgPT0gMCk6ICAjIFRoZSBzZWNvbmQgY2hpbGQuCi0gICAgICAgICAgICAjIFdlIHByb2JhYmx5IGRvbid0IHdhbnQgdGhlIGZpbGUgbW9kZSBjcmVhdGlvbiBtYXNrIGluaGVyaXRlZCBmcm9tCi0gICAgICAgICAgICAjIHRoZSBwYXJlbnQsIHNvIHdlIGdpdmUgdGhlIGNoaWxkIGNvbXBsZXRlIGNvbnRyb2wgb3ZlciBwZXJtaXNzaW9ucy4KLSAgICAgICAgICAgIGlmIFVNQVNLIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG9zLnVtYXNrKFVNQVNLKQotICAgICAgICBlbHNlOgorICAgICAgICBpZiAocGlkICE9IDApOgogICAgICAgICAgICAgIyBQYXJlbnQgKHRoZSBmaXJzdCBjaGlsZCkgb2YgdGhlIHNlY29uZCBjaGlsZC4KKyAgICAgICAgICAgICMgZXhpdCgpIG9yIF9leGl0KCk/CisgICAgICAgICAgICAjIF9leGl0IGlzIGxpa2UgZXhpdCgpLCBidXQgaXQgZG9lc24ndCBjYWxsIGFueSBmdW5jdGlvbnMgcmVnaXN0ZXJlZAorICAgICAgICAgICAgIyB3aXRoIGF0ZXhpdCAoYW5kIG9uX2V4aXQpIG9yIGFueSByZWdpc3RlcmVkIHNpZ25hbCBoYW5kbGVycy4gIEl0IGFsc28KKyAgICAgICAgICAgICMgY2xvc2VzIGFueSBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuICBVc2luZyBleGl0KCkgbWF5IGNhdXNlIGFsbCBzdGRpbworICAgICAgICAgICAgIyBzdHJlYW1zIHRvIGJlIGZsdXNoZWQgdHdpY2UgYW5kIGFueSB0ZW1wb3JhcnkgZmlsZXMgbWF5IGJlIHVuZXhwZWN0ZWRseQorICAgICAgICAgICAgIyByZW1vdmVkLiAgSXQncyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdGhhdCBjaGlsZCBicmFuY2hlcyBvZiBhIGZvcmsoKQorICAgICAgICAgICAgIyBhbmQgdGhlIHBhcmVudCBicmFuY2goZXMpIG9mIGEgZGFlbW9uIHVzZSBfZXhpdCgpLgogICAgICAgICAgICAgb3MuX2V4aXQoMCkKICAgICBlbHNlOgotICAgICAgICAjIGV4aXQoKSBvciBfZXhpdCgpPwotICAgICAgICAjIF9leGl0IGlzIGxpa2UgZXhpdCgpLCBidXQgaXQgZG9lc24ndCBjYWxsIGFueSBmdW5jdGlvbnMgcmVnaXN0ZXJlZAotICAgICAgICAjIHdpdGggYXRleGl0IChhbmQgb25fZXhpdCkgb3IgYW55IHJlZ2lzdGVyZWQgc2lnbmFsIGhhbmRsZXJzLiAgSXQgYWxzbwotICAgICAgICAjIGNsb3NlcyBhbnkgb3BlbiBmaWxlIGRlc2NyaXB0b3JzLiAgVXNpbmcgZXhpdCgpIG1heSBjYXVzZSBhbGwgc3RkaW8KLSAgICAgICAgIyBzdHJlYW1zIHRvIGJlIGZsdXNoZWQgdHdpY2UgYW5kIGFueSB0ZW1wb3JhcnkgZmlsZXMgbWF5IGJlIHVuZXhwZWN0ZWRseQotICAgICAgICAjIHJlbW92ZWQuICBJdCdzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0aGF0IGNoaWxkIGJyYW5jaGVzIG9mIGEgZm9yaygpCi0gICAgICAgICMgYW5kIHRoZSBwYXJlbnQgYnJhbmNoKGVzKSBvZiBhIGRhZW1vbiB1c2UgX2V4aXQoKS4KKyAgICAgICAgb3Mud2FpdHBpZChwaWQsIDApCiAgICAgICAgIHJldHVybgogCi0gICAgIyBDbG9zZSBhbGwgb3BlbiBmaWxlIGRlc2NyaXB0b3JzLiAgVGhpcyBwcmV2ZW50cyB0aGUgY2hpbGQgZnJvbSBrZWVwaW5nCi0gICAgIyBvcGVuIGFueSBmaWxlIGRlc2NyaXB0b3JzIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBUaGVyZSBpcyBhIHZhcmlldHkKLSAgICAjIG9mIG1ldGhvZHMgdG8gYWNjb21wbGlzaCB0aGlzIHRhc2suICBUaHJlZSBhcmUgbGlzdGVkIGJlbG93LgotICAgICMKLSAgICAjIFRyeSB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUsIFNDX09QRU5fTUFYLCB0byBvYnRhaW4gdGhlIG1heGltdW0KLSAgICAjIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgdG8gY2xvc2UuICBJZiBpdCBkb2Vzbid0IGV4aXN0LCB1c2UKLSAgICAjIHRoZSBkZWZhdWx0IHZhbHVlIChjb25maWd1cmFibGUpLgotICAgICMKLSAgICAjIHRyeToKLSAgICAjICAgICBtYXhmZCA9IG9zLnN5c2NvbmYoIlNDX09QRU5fTUFYIikKLSAgICAjIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICMgICAgIG1heGZkID0gTUFYRkQKLSAgICAjCi0gICAgIyBPUgotICAgICMKLSAgICAjIGlmIChvcy5zeXNjb25mX25hbWVzLmhhc19rZXkoIlNDX09QRU5fTUFYIikpOgotICAgICMgICAgIG1heGZkID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQotICAgICMgZWxzZToKLSAgICAjICAgICBtYXhmZCA9IE1BWEZECi0gICAgIwotICAgICMgT1IKLSAgICAjCi0gICAgIyBVc2UgdGhlIGdldHJsaW1pdCBtZXRob2QgdG8gcmV0cmlldmUgdGhlIG1heGltdW0gZmlsZSBkZXNjcmlwdG9yIG51bWJlcgotICAgICMgdGhhdCBjYW4gYmUgb3BlbmVkIGJ5IHRoaXMgcHJvY2Vzcy4gIElmIHRoZXJlIGlzIG5vIGxpbWl0IG9uIHRoZQotICAgICMgcmVzb3VyY2UsIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZS4KLSAgICAjCi0gICAgaW1wb3J0IHJlc291cmNlICAgICAgICAgICAgICMgUmVzb3VyY2UgdXNhZ2UgaW5mb3JtYXRpb24uCi0gICAgbWF4ZmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX05PRklMRSlbMV0KLSAgICBpZiAobWF4ZmQgPT0gcmVzb3VyY2UuUkxJTV9JTkZJTklUWSk6Ci0gICAgICAgIG1heGZkID0gTUFYRkQKLSAgCi0gICAgIyBJdGVyYXRlIHRocm91Z2ggYW5kIGNsb3NlIGFsbCBmaWxlIGRlc2NyaXB0b3JzLgotIyAgICBmb3IgZmQgaW4gcmFuZ2UoMCwgbWF4ZmQpOgotIyAgICAgICAgdHJ5OgotIyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotIyAgICAgICAgZXhjZXB0IE9TRXJyb3I6ICAgICAgICAjIEVSUk9SLCBmZCB3YXNuJ3Qgb3BlbiB0byBiZWdpbiB3aXRoIChpZ25vcmVkKQotIyAgICAgICAgICAgIHBhc3MKKyAgICAjIFRoZSBzZWNvbmQgY2hpbGQuCiAKLSAgICAjIFJlZGlyZWN0IHRoZSBzdGFuZGFyZCBJL08gZmlsZSBkZXNjcmlwdG9ycyB0byB0aGUgc3BlY2lmaWVkIGZpbGUuICBTaW5jZQotICAgICMgdGhlIGRhZW1vbiBoYXMgbm8gY29udHJvbGxpbmcgdGVybWluYWwsIG1vc3QgZGFlbW9ucyByZWRpcmVjdCBzdGRpbiwKLSAgICAjIHN0ZG91dCwgYW5kIHN0ZGVyciB0byAvZGV2L251bGwuICBUaGlzIGlzIGRvbmUgdG8gcHJldmVudCBzaWRlLWVmZmVjdHMKLSAgICAjIGZyb20gcmVhZHMgYW5kIHdyaXRlcyB0byB0aGUgc3RhbmRhcmQgSS9PIGZpbGUgZGVzY3JpcHRvcnMuCi0KLSAgICAjIFRoaXMgY2FsbCB0byBvcGVuIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIHRoZSBsb3dlc3QgZmlsZSBkZXNjcmlwdG9yLAotICAgICMgd2hpY2ggd2lsbCBiZSAwIChzdGRpbiksIHNpbmNlIGl0IHdhcyBjbG9zZWQgYWJvdmUuCi0jICAgIG9zLm9wZW4oUkVESVJFQ1RfVE8sIG9zLk9fUkRXUikgICAgIyBzdGFuZGFyZCBpbnB1dCAoMCkKLQotICAgICMgRHVwbGljYXRlIHN0YW5kYXJkIGlucHV0IHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3IuCi0jICAgIG9zLmR1cDIoMCwgMSkgICAgICAgICAgICAgICAgICAgICAgIyBzdGFuZGFyZCBvdXRwdXQgKDEpCi0jICAgIG9zLmR1cDIoMCwgMikgICAgICAgICAgICAgICAgICAgICAgIyBzdGFuZGFyZCBlcnJvciAoMikKLQotCisgICAgIyBSZXBsYWNlIHN0YW5kYXJkIGZkcyB3aXRoIG91ciBvd24KICAgICBzaSA9IG9wZW4oJy9kZXYvbnVsbCcsICdyJykKLSAgICBzbyA9IG9wZW4obG9nZmlsZSwgJ3cnKQotICAgIHNlID0gc28KLQotCi0gICAgIyBSZXBsYWNlIHRob3NlIGZkcyB3aXRoIG91ciBvd24KICAgICBvcy5kdXAyKHNpLmZpbGVubygpLCBzeXMuc3RkaW4uZmlsZW5vKCkpCi0gICAgb3MuZHVwMihzby5maWxlbm8oKSwgc3lzLnN0ZG91dC5maWxlbm8oKSkKLSAgICBvcy5kdXAyKHNlLmZpbGVubygpLCBzeXMuc3RkZXJyLmZpbGVubygpKQogCi0gICAgZnVuY3Rpb24oKQorICAgIHRyeToKKyAgICAgICAgc28gPSBvcGVuKGxvZ2ZpbGUsICdhKycpCisgICAgICAgIHNlID0gc28KKyAgICAgICAgb3MuZHVwMihzby5maWxlbm8oKSwgc3lzLnN0ZG91dC5maWxlbm8oKSkKKyAgICAgICAgb3MuZHVwMihzZS5maWxlbm8oKSwgc3lzLnN0ZGVyci5maWxlbm8oKSkKKyAgICBleGNlcHQgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb246CisgICAgICAgIHN5cy5zdGRvdXQgPSBvcGVuKGxvZ2ZpbGUsICdhKycpCisgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuc3Rkb3V0CiAKLSAgICBvcy5fZXhpdCgwKQorICAgIHRyeToKKyAgICAgICAgZnVuY3Rpb24oKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgZmluYWxseToKKyAgICAgICAgYmIuZXZlbnQucHJpbnRfdWlfcXVldWUoKQorICAgICAgICBvcy5fZXhpdCgwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weQppbmRleCAxMzRhZmFhLi44MGE3ODc5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weQpAQCAtMjkwLDcgKzI5MCw3IEBACiAgICAgICAgICAgICByZXR1cm4gZGVwcywgdmFsdWUKICAgICAgICAgdmFyZmxhZ3MgPSBkLmdldFZhckZsYWdzKGtleSwgWyJ2YXJkZXBzIiwgInZhcmRlcHZhbHVlIiwgInZhcmRlcHNleGNsdWRlIiwgImV4cG9ydHMiLCAicG9zdGZ1bmNzIiwgInByZWZ1bmNzIiwgImxpbmVubyIsICJmaWxlbmFtZSJdKSBvciB7fQogICAgICAgICB2YXJkZXBzID0gdmFyZmxhZ3MuZ2V0KCJ2YXJkZXBzIikKLSAgICAgICAgdmFsdWUgPSBkLmdldFZhcihrZXksIEZhbHNlKQorICAgICAgICB2YWx1ZSA9IGQuZ2V0VmFyRmxhZyhrZXksICJfY29udGVudCIsIEZhbHNlKQogCiAgICAgICAgIGRlZiBoYW5kbGVfY29udGFpbnModmFsdWUsIGNvbnRhaW5zLCBkKToKICAgICAgICAgICAgIG5ld3ZhbHVlID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhX3NtYXJ0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkKaW5kZXggN2RjMWM2OC4uN2IwOWFmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkKQEAgLTM5LDcgKzM5LDcgQEAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLkRhdGEiKQogCiBfX3NldHZhcl9rZXl3b3JkX18gPSBbIl9hcHBlbmQiLCAiX3ByZXBlbmQiLCAiX3JlbW92ZSJdCi1fX3NldHZhcl9yZWdleHBfXyA9IHJlLmNvbXBpbGUoJyg/UDxiYXNlPi4qPykoP1A8a2V5d29yZD5fYXBwZW5kfF9wcmVwZW5kfF9yZW1vdmUpKF8oP1A8YWRkPi4qKSk/JCcpCitfX3NldHZhcl9yZWdleHBfXyA9IHJlLmNvbXBpbGUoJyg/UDxiYXNlPi4qPykoP1A8a2V5d29yZD5fYXBwZW5kfF9wcmVwZW5kfF9yZW1vdmUpKF8oP1A8YWRkPlteQS1aXSopKT8kJykKIF9fZXhwYW5kX3Zhcl9yZWdleHBfXyA9IHJlLmNvbXBpbGUociJcJHtbXnt9QFxuXHQgOl0rfSIpCiBfX2V4cGFuZF9weXRob25fcmVnZXhwX18gPSByZS5jb21waWxlKHIiXCR7QC4rP30iKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKaW5kZXggNmQ4NDkzYi4uNTIwNzJiNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQpAQCAtMTQ5LDIzICsxNDksMzQgQEAKIAogICAgICAgICAjIEZpcnN0IGNoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGFueSBwcm9wZXIgbWVzc2FnZXMKICAgICAgICAgbXNncHJpbnQgPSBGYWxzZQorICAgICAgICBtc2dlcnJzID0gRmFsc2UKKworICAgICAgICAjIFNob3VsZCB3ZSBwcmludCB0byBzdGRlcnI/CisgICAgICAgIGZvciBldmVudCBpbiB1aV9xdWV1ZVs6XToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKSBhbmQgZXZlbnQubGV2ZWxubyA+PSBsb2dnaW5nLldBUk5JTkc6CisgICAgICAgICAgICAgICAgbXNnZXJycyA9IFRydWUKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIG1zZ2VycnM6CisgICAgICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihzdGRlcnIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihzdGRvdXQpCisKICAgICAgICAgZm9yIGV2ZW50IGluIHVpX3F1ZXVlWzpdOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgogICAgICAgICAgICAgICAgIGlmIGV2ZW50LmxldmVsbm8gPiBsb2dnaW5nLkRFQlVHOgotICAgICAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vID49IGxvZ2dpbmcuV0FSTklORzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKHN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKHN0ZG91dCkKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKICAgICAgICAgICAgICAgICAgICAgbXNncHJpbnQgPSBUcnVlCi0gICAgICAgIGlmIG1zZ3ByaW50OgotICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBOb3BlLCBzbyBqdXN0IHByaW50IGFsbCBvZiB0aGUgbWVzc2FnZXMgd2UgaGF2ZSAoaW5jbHVkaW5nIGRlYnVnIG1lc3NhZ2VzKQotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihzdGRvdXQpCi0gICAgICAgIGZvciBldmVudCBpbiB1aV9xdWV1ZVs6XToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaGFuZGxlKGV2ZW50KQorICAgICAgICBpZiBub3QgbXNncHJpbnQ6CisgICAgICAgICAgICBmb3IgZXZlbnQgaW4gdWlfcXVldWVbOl06CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaGFuZGxlKGV2ZW50KQorICAgICAgICBpZiBtc2dlcnJzOgorICAgICAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc3RkZXJyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc3Rkb3V0KQogCiBkZWYgZmlyZV91aV9oYW5kbGVycyhldmVudCwgZCk6CiAgICAgZ2xvYmFsIF90aHJlYWRfbG9jawpAQCAtMjEyLDYgKzIyMywxMiBAQAogICAgIGlmIHdvcmtlcl9maXJlOgogICAgICAgICB3b3JrZXJfZmlyZShldmVudCwgZCkKICAgICBlbHNlOgorICAgICAgICAjIElmIG1lc3NhZ2VzIGhhdmUgYmVlbiBxdWV1ZWQgdXAsIGNsZWFyIHRoZSBxdWV1ZQorICAgICAgICBnbG9iYWwgX3VpcmVhZHksIHVpX3F1ZXVlCisgICAgICAgIGlmIF91aXJlYWR5IGFuZCB1aV9xdWV1ZToKKyAgICAgICAgICAgIGZvciBxdWV1ZV9ldmVudCBpbiB1aV9xdWV1ZToKKyAgICAgICAgICAgICAgICBmaXJlX3VpX2hhbmRsZXJzKHF1ZXVlX2V2ZW50LCBkKQorICAgICAgICAgICAgdWlfcXVldWUgPSBbXQogICAgICAgICBmaXJlX3VpX2hhbmRsZXJzKGV2ZW50LCBkKQogCiBkZWYgZmlyZV9mcm9tX3dvcmtlcihldmVudCwgZCk6CkBAIC0yNjQsNiArMjgxLDExIEBACiBkZWYgcmVtb3ZlKG5hbWUsIGhhbmRsZXIpOgogICAgICIiIlJlbW92ZSBhbiBFdmVudCBoYW5kbGVyIiIiCiAgICAgX2hhbmRsZXJzLnBvcChuYW1lKQorICAgIGlmIG5hbWUgaW4gX2NhdGNoYWxsX2hhbmRsZXJzOgorICAgICAgICBfY2F0Y2hhbGxfaGFuZGxlcnMucG9wKG5hbWUpCisgICAgZm9yIGV2ZW50IGluIF9ldmVudF9oYW5kbGVyX21hcC5rZXlzKCk6CisgICAgICAgIGlmIG5hbWUgaW4gX2V2ZW50X2hhbmRsZXJfbWFwW2V2ZW50XToKKyAgICAgICAgICAgIF9ldmVudF9oYW5kbGVyX21hcFtldmVudF0ucG9wKG5hbWUpCiAKIGRlZiBnZXRfaGFuZGxlcnMoKToKICAgICByZXR1cm4gX2hhbmRsZXJzCkBAIC0yNzcsMjAgKzI5OSwyOCBAQAogICAgIF9ldmVudGZpbHRlciA9IGZ1bmMKIAogZGVmIHJlZ2lzdGVyX1VJSGhhbmRsZXIoaGFuZGxlciwgbWFpbnVpPUZhbHNlKToKLSAgICBpZiBtYWludWk6Ci0gICAgICAgIGdsb2JhbCBfdWlyZWFkeQotICAgICAgICBfdWlyZWFkeSA9IFRydWUKICAgICBiYi5ldmVudC5fdWlfaGFuZGxlcl9zZXEgPSBiYi5ldmVudC5fdWlfaGFuZGxlcl9zZXEgKyAxCiAgICAgX3VpX2hhbmRsZXJzW191aV9oYW5kbGVyX3NlcV0gPSBoYW5kbGVyCiAgICAgbGV2ZWwsIGRlYnVnX2RvbWFpbnMgPSBiYi5tc2cuY29uc3RydWN0TG9nT3B0aW9ucygpCiAgICAgX3VpX2xvZ2ZpbHRlcnNbX3VpX2hhbmRsZXJfc2VxXSA9IFVJRXZlbnRGaWx0ZXIobGV2ZWwsIGRlYnVnX2RvbWFpbnMpCisgICAgaWYgbWFpbnVpOgorICAgICAgICBnbG9iYWwgX3VpcmVhZHkKKyAgICAgICAgX3VpcmVhZHkgPSBfdWlfaGFuZGxlcl9zZXEKICAgICByZXR1cm4gX3VpX2hhbmRsZXJfc2VxCiAKLWRlZiB1bnJlZ2lzdGVyX1VJSGhhbmRsZXIoaGFuZGxlck51bSk6CitkZWYgdW5yZWdpc3Rlcl9VSUhoYW5kbGVyKGhhbmRsZXJOdW0sIG1haW51aT1GYWxzZSk6CisgICAgaWYgbWFpbnVpOgorICAgICAgICBnbG9iYWwgX3VpcmVhZHkKKyAgICAgICAgX3VpcmVhZHkgPSBGYWxzZQogICAgIGlmIGhhbmRsZXJOdW0gaW4gX3VpX2hhbmRsZXJzOgogICAgICAgICBkZWwgX3VpX2hhbmRsZXJzW2hhbmRsZXJOdW1dCiAgICAgcmV0dXJuCiAKK2RlZiBnZXRfdWloYW5kbGVyKCk6CisgICAgaWYgX3VpcmVhZHkgaXMgRmFsc2U6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIF91aXJlYWR5CisKICMgQ2xhc3MgdG8gYWxsb3cgZmlsdGVyaW5nIG9mIGV2ZW50cyBhbmQgc3BlY2lmaWMgZmlsdGVyaW5nIG9mIExvZ1JlY29yZHMgKmJlZm9yZSogd2UgcHV0IHRoZW0gb3ZlciB0aGUgSVBDCiBjbGFzcyBVSUV2ZW50RmlsdGVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxldmVsLCBkZWJ1Z19kb21haW5zKToKQEAgLTM1Myw2ICszODMsMTIgQEAKIGNsYXNzIENvbmZpZ1BhcnNlZChFdmVudCk6CiAgICAgIiIiQ29uZmlndXJhdGlvbiBQYXJzaW5nIENvbXBsZXRlIiIiCiAKK2NsYXNzIE11bHRpQ29uZmlnUGFyc2VkKEV2ZW50KToKKyAgICAiIiJNdWx0aS1Db25maWcgUGFyc2luZyBDb21wbGV0ZSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtY2RhdGEpOgorICAgICAgICBzZWxmLm1jZGF0YSA9IG1jZGF0YQorICAgICAgICBFdmVudC5fX2luaXRfXyhzZWxmKQorCiBjbGFzcyBSZWNpcGVFdmVudChFdmVudCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZuKToKICAgICAgICAgc2VsZi5mbiA9IGZuCkBAIC00OTYsNiArNTMyLDI4IEBACiAgICAgZGVmIGlzUnVudGltZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bnRpbWUKIAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBtc2cgPSAnJworICAgICAgICBpZiBzZWxmLl9ydW50aW1lOgorICAgICAgICAgICAgciA9ICJSIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgciA9ICIiCisKKyAgICAgICAgZXh0cmEgPSAnJworICAgICAgICBpZiBub3Qgc2VsZi5fcmVhc29uczoKKyAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX21hdGNoZXM6CisgICAgICAgICAgICAgICAgZXh0cmEgPSAiLiBDbG9zZSBtYXRjaGVzOlxuICAlcyIgJSAnXG4gICcuam9pbihzZWxmLl9jbG9zZV9tYXRjaGVzKQorCisgICAgICAgIGlmIHNlbGYuX2RlcGVuZGVlczoKKyAgICAgICAgICAgIG1zZyA9ICJOb3RoaW5nICVzUFJPVklERVMgJyVzJyAoYnV0ICVzICVzREVQRU5EUyBvbiBvciBvdGhlcndpc2UgcmVxdWlyZXMgaXQpJXMiICUgKHIsIHNlbGYuX2l0ZW0sICIsICIuam9pbihzZWxmLl9kZXBlbmRlZXMpLCByLCBleHRyYSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICJOb3RoaW5nICVzUFJPVklERVMgJyVzJyVzIiAlIChyLCBzZWxmLl9pdGVtLCBleHRyYSkKKyAgICAgICAgaWYgc2VsZi5fcmVhc29uczoKKyAgICAgICAgICAgIGZvciByZWFzb24gaW4gc2VsZi5fcmVhc29uczoKKyAgICAgICAgICAgICAgICBtc2cgKz0gJ1xuJyArIHJlYXNvbgorICAgICAgICByZXR1cm4gbXNnCisKKwogY2xhc3MgTXVsdGlwbGVQcm92aWRlcnMoRXZlbnQpOgogICAgICIiIk11bHRpcGxlIFByb3ZpZGVycyIiIgogCkBAIC01MjMsNiArNTgxLDE2IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5fY2FuZGlkYXRlcwogCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG1zZyA9ICJNdWx0aXBsZSBwcm92aWRlcnMgYXJlIGF2YWlsYWJsZSBmb3IgJXMlcyAoJXMpIiAlIChzZWxmLl9pc19ydW50aW1lIGFuZCAicnVudGltZSAiIG9yICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2l0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgIi5qb2luKHNlbGYuX2NhbmRpZGF0ZXMpKQorICAgICAgICBydGltZSA9ICIiCisgICAgICAgIGlmIHNlbGYuX2lzX3J1bnRpbWU6CisgICAgICAgICAgICBydGltZSA9ICJSIgorICAgICAgICBtc2cgKz0gIlxuQ29uc2lkZXIgZGVmaW5pbmcgYSBQUkVGRVJSRURfJXNQUk9WSURFUiBlbnRyeSB0byBtYXRjaCAlcyIgJSAocnRpbWUsIHNlbGYuX2l0ZW0pCisgICAgICAgIHJldHVybiBtc2cKKwogY2xhc3MgUGFyc2VTdGFydGVkKE9wZXJhdGlvblN0YXJ0ZWQpOgogICAgICIiIlJlY2lwZSBwYXJzaW5nIGZvciB0aGUgcnVucXVldWUgaGFzIGJlZ3VuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvdGFsKToKQEAgLTYxNiwxNCArNjg0LDYgQEAKICAgICAgICAgc2VsZi5fcGF0dGVybiA9IHBhdHRlcm4KICAgICAgICAgc2VsZi5fbWF0Y2hlcyA9IG1hdGNoZXMKIAotY2xhc3MgQ29yZUJhc2VGaWxlc0ZvdW5kKEV2ZW50KToKLSAgICAiIiIKLSAgICBFdmVudCB3aGVuIGEgbGlzdCBvZiBhcHByb3ByaWF0ZSBjb25maWcgZmlsZXMgaGFzIGJlZW4gZ2VuZXJhdGVkCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGhzKToKLSAgICAgICAgRXZlbnQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcGF0aHMgPSBwYXRocwotCiBjbGFzcyBDb25maWdGaWxlc0ZvdW5kKEV2ZW50KToKICAgICAiIiIKICAgICBFdmVudCB3aGVuIGEgbGlzdCBvZiBhcHByb3ByaWF0ZSBjb25maWcgZmlsZXMgaGFzIGJlZW4gZ2VuZXJhdGVkCkBAIC02OTQsMTkgKzc1NCw2IEBACiAgICAgICAgIHJlY29yZC50YXNrcGlkID0gd29ya2VyX3BpZAogICAgICAgICByZXR1cm4gVHJ1ZQogCi1jbGFzcyBSZXF1ZXN0UGFja2FnZUluZm8oRXZlbnQpOgotICAgICIiIgotICAgIEV2ZW50IHRvIHJlcXVlc3QgcGFja2FnZSBpbmZvcm1hdGlvbgotICAgICIiIgotCi1jbGFzcyBQYWNrYWdlSW5mbyhFdmVudCk6Ci0gICAgIiIiCi0gICAgUGFja2FnZSBpbmZvcm1hdGlvbiBmb3IgR1VJCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBrZ2luZm9saXN0KToKLSAgICAgICAgRXZlbnQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcGtnaW5mb2xpc3QgPSBwa2dpbmZvbGlzdAotCiBjbGFzcyBNZXRhZGF0YUV2ZW50KEV2ZW50KToKICAgICAiIiIKICAgICBHZW5lcmljIGV2ZW50IHRoYXQgdGFyZ2V0IGZvciBPRS1Db3JlIGNsYXNzZXMKQEAgLTc4NCwzICs4MzEsMTAgQEAKICAgICBFdmVudCB0byBpbmRpY2F0ZSBuZXR3b3JrIHRlc3QgaGFzIGZhaWxlZAogICAgICIiIgogCitjbGFzcyBGaW5kU2lnSW5mb1Jlc3VsdChFdmVudCk6CisgICAgIiIiCisgICAgRXZlbnQgdG8gcmV0dXJuIHJlc3VsdHMgZnJvbSBmaW5kU2lnSW5mbyBjb21tYW5kCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlc3VsdCk6CisgICAgICAgIEV2ZW50Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weQppbmRleCBiODUzZGEzLi5mNzBmMWI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvX19pbml0X18ucHkKQEAgLTM5LDYgKzM5LDcgQEAKIGltcG9ydCBiYi5wZXJzaXN0X2RhdGEsIGJiLnV0aWxzCiBpbXBvcnQgYmIuY2hlY2tzdW0KIGltcG9ydCBiYi5wcm9jZXNzCitpbXBvcnQgYmIuZXZlbnQKIAogX192ZXJzaW9uX18gPSAiMiIKIF9jaGVja3N1bV9jYWNoZSA9IGJiLmNoZWNrc3VtLkZpbGVDaGVja3N1bUNhY2hlKCkKQEAgLTQ4LDExICs0OSwxMSBAQAogY2xhc3MgQkJGZXRjaEV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgICIiIkNsYXNzIGFsbCBmZXRjaCBleGNlcHRpb25zIGluaGVyaXQgZnJvbSIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIHNlbGYubXNnID0gbWVzc2FnZQotICAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpCisgICAgICAgIHNlbGYubXNnID0gbWVzc2FnZQorICAgICAgICBFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbWVzc2FnZSkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICAgcmV0dXJuIHNlbGYubXNnCisgICAgICAgIHJldHVybiBzZWxmLm1zZwogCiBjbGFzcyBVbnRydXN0ZWRVcmwoQkJGZXRjaEV4Y2VwdGlvbik6CiAgICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGVuY291bnRlcmluZyBhIGhvc3Qgbm90IGxpc3RlZCBpbiBCQl9BTExPV0VEX05FVFdPUktTIiIiCkBAIC02OCwyNCArNjksMjQgQEAKIGNsYXNzIE1hbGZvcm1lZFVybChCQkZldGNoRXhjZXB0aW9uKToKICAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgdXJsIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgbWVzc2FnZT0nJyk6Ci0gICAgICAgICBpZiBtZXNzYWdlOgotICAgICAgICAgICAgIG1zZyA9IG1lc3NhZ2UKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgbXNnID0gIlRoZSBVUkw6ICclcycgaXMgaW52YWxpZCBhbmQgY2Fubm90IGJlIGludGVycHJldGVkIiAlIHVybAotICAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQotICAgICAgICAgc2VsZi5hcmdzID0gKHVybCwpCisgICAgICAgIGlmIG1lc3NhZ2U6CisgICAgICAgICAgICBtc2cgPSBtZXNzYWdlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAiVGhlIFVSTDogJyVzJyBpcyBpbnZhbGlkIGFuZCBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQiICUgdXJsCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQorICAgICAgICBzZWxmLmFyZ3MgPSAodXJsLCkKIAogY2xhc3MgRmV0Y2hFcnJvcihCQkZldGNoRXhjZXB0aW9uKToKICAgICAiIiJHZW5lcmFsIGZldGNoZXIgZXhjZXB0aW9uIHdoZW4gc29tZXRoaW5nIGhhcHBlbnMgaW5jb3JyZWN0bHkiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSwgdXJsID0gTm9uZSk6Ci0gICAgICAgICBpZiB1cmw6CisgICAgICAgIGlmIHVybDoKICAgICAgICAgICAgIG1zZyA9ICJGZXRjaGVyIGZhaWx1cmUgZm9yIFVSTDogJyVzJy4gJXMiICUgKHVybCwgbWVzc2FnZSkKLSAgICAgICAgIGVsc2U6CisgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtc2cgPSAiRmV0Y2hlciBmYWlsdXJlOiAlcyIgJSBtZXNzYWdlCi0gICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCi0gICAgICAgICBzZWxmLmFyZ3MgPSAobWVzc2FnZSwgdXJsKQorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKKyAgICAgICAgc2VsZi5hcmdzID0gKG1lc3NhZ2UsIHVybCkKIAogY2xhc3MgQ2hlY2tzdW1FcnJvcihGZXRjaEVycm9yKToKICAgICAiIiJFeGNlcHRpb24gd2hlbiBtaXNtYXRjaGVkIGNoZWNrc3VtIGVuY291bnRlcmVkIiIiCkBAIC05OSw0OSArMTAwLDU2IEBACiBjbGFzcyBVbnBhY2tFcnJvcihCQkZldGNoRXhjZXB0aW9uKToKICAgICAiIiJHZW5lcmFsIGZldGNoZXIgZXhjZXB0aW9uIHdoZW4gc29tZXRoaW5nIGhhcHBlbnMgaW5jb3JyZWN0bHkgd2hlbiB1bnBhY2tpbmciIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSwgdXJsKToKLSAgICAgICAgIG1zZyA9ICJVbnBhY2sgZmFpbHVyZSBmb3IgVVJMOiAnJXMnLiAlcyIgJSAodXJsLCBtZXNzYWdlKQotICAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQotICAgICAgICAgc2VsZi5hcmdzID0gKG1lc3NhZ2UsIHVybCkKKyAgICAgICAgbXNnID0gIlVucGFjayBmYWlsdXJlIGZvciBVUkw6ICclcycuICVzIiAlICh1cmwsIG1lc3NhZ2UpCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQorICAgICAgICBzZWxmLmFyZ3MgPSAobWVzc2FnZSwgdXJsKQogCiBjbGFzcyBOb01ldGhvZEVycm9yKEJCRmV0Y2hFeGNlcHRpb24pOgogICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiB0aGVyZSBpcyBubyBtZXRob2QgdG8gb2J0YWluIGEgc3VwcGxpZWQgdXJsIG9yIHNldCBvZiB1cmxzIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCk6Ci0gICAgICAgICBtc2cgPSAiQ291bGQgbm90IGZpbmQgYSBmZXRjaGVyIHdoaWNoIHN1cHBvcnRzIHRoZSBVUkw6ICclcyciICUgdXJsCi0gICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCi0gICAgICAgICBzZWxmLmFyZ3MgPSAodXJsLCkKKyAgICAgICAgbXNnID0gIkNvdWxkIG5vdCBmaW5kIGEgZmV0Y2hlciB3aGljaCBzdXBwb3J0cyB0aGUgVVJMOiAnJXMnIiAlIHVybAorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKKyAgICAgICAgc2VsZi5hcmdzID0gKHVybCwpCiAKIGNsYXNzIE1pc3NpbmdQYXJhbWV0ZXJFcnJvcihCQkZldGNoRXhjZXB0aW9uKToKICAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmZXRjaCBtZXRob2QgaXMgbWlzc2luZyBhIGNyaXRpY2FsIHBhcmFtZXRlciBpbiB0aGUgdXJsIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1pc3NpbmcsIHVybCk6Ci0gICAgICAgICBtc2cgPSAiVVJMOiAnJXMnIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAnJXMnIiAlICh1cmwsIG1pc3NpbmcpCi0gICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICAgc2VsZi5taXNzaW5nID0gbWlzc2luZwotICAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCi0gICAgICAgICBzZWxmLmFyZ3MgPSAobWlzc2luZywgdXJsKQorICAgICAgICBtc2cgPSAiVVJMOiAnJXMnIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAnJXMnIiAlICh1cmwsIG1pc3NpbmcpCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIHNlbGYubWlzc2luZyA9IG1pc3NpbmcKKyAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCisgICAgICAgIHNlbGYuYXJncyA9IChtaXNzaW5nLCB1cmwpCiAKIGNsYXNzIFBhcmFtZXRlckVycm9yKEJCRmV0Y2hFeGNlcHRpb24pOgogICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIHVybCBjYW5ub3QgYmUgcHJvY2Nlc3NlZCBkdWUgdG8gaW52YWxpZCBwYXJhbWV0ZXJzLiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCB1cmwpOgotICAgICAgICAgbXNnID0gIlVSTDogJyVzJyBoYXMgaW52YWxpZCBwYXJhbWV0ZXJzLiAlcyIgJSAodXJsLCBtZXNzYWdlKQotICAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgIEJCRmV0Y2hFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQotICAgICAgICAgc2VsZi5hcmdzID0gKG1lc3NhZ2UsIHVybCkKKyAgICAgICAgbXNnID0gIlVSTDogJyVzJyBoYXMgaW52YWxpZCBwYXJhbWV0ZXJzLiAlcyIgJSAodXJsLCBtZXNzYWdlKQorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKKyAgICAgICAgc2VsZi5hcmdzID0gKG1lc3NhZ2UsIHVybCkKIAogY2xhc3MgTmV0d29ya0FjY2VzcyhCQkZldGNoRXhjZXB0aW9uKToKICAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gbmV0d29yayBhY2Nlc3MgaXMgZGlzYWJsZWQgYnV0IGl0IGlzIHJlcXVpcmVkLiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGNtZCk6Ci0gICAgICAgICBtc2cgPSAiTmV0d29yayBhY2Nlc3MgZGlzYWJsZWQgdGhyb3VnaCBCQl9OT19ORVRXT1JLIChvciBzZXQgaW5kaXJlY3RseSBkdWUgdG8gdXNlIG9mIEJCX0ZFVENIX1BSRU1JUlJPUk9OTFkpIGJ1dCBhY2Nlc3MgcmVxdWVzdGVkIHdpdGggY29tbWFuZCAlcyAoZm9yIHVybCAlcykiICUgKGNtZCwgdXJsKQotICAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgIHNlbGYuY21kID0gY21kCi0gICAgICAgICBCQkZldGNoRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKLSAgICAgICAgIHNlbGYuYXJncyA9ICh1cmwsIGNtZCkKKyAgICAgICAgbXNnID0gIk5ldHdvcmsgYWNjZXNzIGRpc2FibGVkIHRocm91Z2ggQkJfTk9fTkVUV09SSyAob3Igc2V0IGluZGlyZWN0bHkgZHVlIHRvIHVzZSBvZiBCQl9GRVRDSF9QUkVNSVJST1JPTkxZKSBidXQgYWNjZXNzIHJlcXVlc3RlZCB3aXRoIGNvbW1hbmQgJXMgKGZvciB1cmwgJXMpIiAlIChjbWQsIHVybCkKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKyAgICAgICAgc2VsZi5jbWQgPSBjbWQKKyAgICAgICAgQkJGZXRjaEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCisgICAgICAgIHNlbGYuYXJncyA9ICh1cmwsIGNtZCkKIAogY2xhc3MgTm9uTG9jYWxNZXRob2QoRXhjZXB0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmKQogCitjbGFzcyBNaXNzaW5nQ2hlY2tzdW1FdmVudChiYi5ldmVudC5FdmVudCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgbWQ1c3VtLCBzaGEyNTZzdW0pOgorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgICAgICBzZWxmLmNoZWNrc3VtcyA9IHsnbWQ1c3VtJzogbWQ1c3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMjU2c3VtJzogc2hhMjU2c3VtfQorICAgICAgICBiYi5ldmVudC5FdmVudC5fX2luaXRfXyhzZWxmKQorCiAKIGNsYXNzIFVSSShvYmplY3QpOgogICAgICIiIgpAQCAtNDAzLDggKzQxMSw2IEBACiAKICAgICB0eXBlLCBob3N0LCBwYXRoLCB1c2VyLCBwc3dkLCBwID0gZGVjb2RlZAogCi0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHJhaXNlIE1pc3NpbmdQYXJhbWV0ZXJFcnJvcigncGF0aCcsICJlbmNvZGVkIGZyb20gdGhlIGRhdGEgJXMiICUgc3RyKGRlY29kZWQpKQogICAgIGlmIG5vdCB0eXBlOgogICAgICAgICByYWlzZSBNaXNzaW5nUGFyYW1ldGVyRXJyb3IoJ3R5cGUnLCAiZW5jb2RlZCBmcm9tIHRoZSBkYXRhICVzIiAlIHN0cihkZWNvZGVkKSkKICAgICB1cmwgPSAnJXM6Ly8nICUgdHlwZQpAQCAtNDE1LDE3ICs0MjEsMTggQEAKICAgICAgICAgdXJsICs9ICJAIgogICAgIGlmIGhvc3QgYW5kIHR5cGUgIT0gImZpbGUiOgogICAgICAgICB1cmwgKz0gIiVzIiAlIGhvc3QKLSAgICAjIFN0YW5kYXJkaXNlIHBhdGggdG8gZW5zdXJlIGNvbXBhcmlzb25zIHdvcmsKLSAgICB3aGlsZSAnLy8nIGluIHBhdGg6Ci0gICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoIi8vIiwgIi8iKQotICAgIHVybCArPSAiJXMiICUgdXJsbGliLnBhcnNlLnF1b3RlKHBhdGgpCisgICAgaWYgcGF0aDoKKyAgICAgICAgIyBTdGFuZGFyZGlzZSBwYXRoIHRvIGVuc3VyZSBjb21wYXJpc29ucyB3b3JrCisgICAgICAgIHdoaWxlICcvLycgaW4gcGF0aDoKKyAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoIi8vIiwgIi8iKQorICAgICAgICB1cmwgKz0gIiVzIiAlIHVybGxpYi5wYXJzZS5xdW90ZShwYXRoKQogICAgIGlmIHA6CiAgICAgICAgIGZvciBwYXJtIGluIHA6CiAgICAgICAgICAgICB1cmwgKz0gIjslcz0lcyIgJSAocGFybSwgcFtwYXJtXSkKIAogICAgIHJldHVybiB1cmwKIAotZGVmIHVyaV9yZXBsYWNlKHVkLCB1cmlfZmluZCwgdXJpX3JlcGxhY2UsIHJlcGxhY2VtZW50cywgZCk6CitkZWYgdXJpX3JlcGxhY2UodWQsIHVyaV9maW5kLCB1cmlfcmVwbGFjZSwgcmVwbGFjZW1lbnRzLCBkLCBtaXJyb3J0YXJiYWxsPU5vbmUpOgogICAgIGlmIG5vdCB1ZC51cmwgb3Igbm90IHVyaV9maW5kIG9yIG5vdCB1cmlfcmVwbGFjZToKICAgICAgICAgbG9nZ2VyLmVycm9yKCJ1cmlfcmVwbGFjZTogcGFzc2VkIGFuIHVuZGVmaW5lZCB2YWx1ZSwgbm90IHJlcGxhY2luZyIpCiAgICAgICAgIHJldHVybiBOb25lCkBAIC00NTUsNyArNDYyLDcgQEAKICAgICAgICAgICAgICAgICByZXN1bHRfZGVjb2RlZFtsb2NdW2tdID0gdXJpX3JlcGxhY2VfZGVjb2RlZFtsb2NdW2tdCiAgICAgICAgIGVsaWYgKHJlLm1hdGNoKHJlZ2V4cCwgdXJpX2RlY29kZWRbbG9jXSkpOgogICAgICAgICAgICAgaWYgbm90IHVyaV9yZXBsYWNlX2RlY29kZWRbbG9jXToKLSAgICAgICAgICAgICAgICByZXN1bHRfZGVjb2RlZFtsb2NdID0gIiIgICAgCisgICAgICAgICAgICAgICAgcmVzdWx0X2RlY29kZWRbbG9jXSA9ICIiCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZvciBrIGluIHJlcGxhY2VtZW50czoKICAgICAgICAgICAgICAgICAgICAgdXJpX3JlcGxhY2VfZGVjb2RlZFtsb2NdID0gdXJpX3JlcGxhY2VfZGVjb2RlZFtsb2NdLnJlcGxhY2UoaywgcmVwbGFjZW1lbnRzW2tdKQpAQCAtNDY0LDkgKzQ3MSw5IEBACiAgICAgICAgICAgICBpZiBsb2MgPT0gMjoKICAgICAgICAgICAgICAgICAjIEhhbmRsZSBwYXRoIG1hbmlwdWxhdGlvbnMKICAgICAgICAgICAgICAgICBiYXNlbmFtZSA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiB1cmlfZGVjb2RlZFswXSAhPSB1cmlfcmVwbGFjZV9kZWNvZGVkWzBdIGFuZCB1ZC5taXJyb3J0YXJiYWxsOgorICAgICAgICAgICAgICAgIGlmIHVyaV9kZWNvZGVkWzBdICE9IHVyaV9yZXBsYWNlX2RlY29kZWRbMF0gYW5kIG1pcnJvcnRhcmJhbGw6CiAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdXJsIHR5cGVzIGRpZmZlciwgbXVzdCBiZSBhIG1pcnJvcnRhcmJhbGwgbWFwcGluZwotICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodWQubWlycm9ydGFyYmFsbCkKKyAgICAgICAgICAgICAgICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG1pcnJvcnRhcmJhbGwpCiAgICAgICAgICAgICAgICAgICAgICMgS2lsbCBwYXJhbWV0ZXJzLCB0aGV5IG1ha2Ugbm8gc2Vuc2UgZm9yIG1pcnJvciB0YXJiYWxscwogICAgICAgICAgICAgICAgICAgICB1cmlfZGVjb2RlZFs1XSA9IHt9CiAgICAgICAgICAgICAgICAgZWxpZiB1ZC5sb2NhbHBhdGggYW5kIHVkLm1ldGhvZC5zdXBwb3J0c19jaGVja3N1bSh1ZCk6CkBAIC01ODQsNiArNTkxLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZC5zaGEyNTZfbmFtZSwgc2hhMjU2ZGF0YSkpCiAgICAgICAgICAgICByYWlzZSBOb0NoZWNrc3VtRXJyb3IoJ01pc3NpbmcgU1JDX1VSSSBjaGVja3N1bScsIHVkLnVybCkKIAorICAgICAgICBiYi5ldmVudC5maXJlKE1pc3NpbmdDaGVja3N1bUV2ZW50KHVkLnVybCwgbWQ1ZGF0YSwgc2hhMjU2ZGF0YSksIGQpCisKKyAgICAgICAgaWYgc3RyaWN0ID09ICJpZ25vcmUiOgorICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBfTUQ1X0tFWTogbWQ1ZGF0YSwKKyAgICAgICAgICAgICAgICBfU0hBMjU2X0tFWTogc2hhMjU2ZGF0YQorICAgICAgICAgICAgfQorCiAgICAgICAgICMgTG9nIG1pc3Npbmcgc3VtcyBzbyB1c2VyIGNhbiBtb3JlIGVhc2lseSBhZGQgdGhlbQogICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBtZDUgU1JDX1VSSSBjaGVja3N1bSBmb3IgJXMsIGNvbnNpZGVyIGFkZGluZyB0byB0aGUgcmVjaXBlOlxuJwogICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSVslc10gPSAiJXMiJywKQEAgLTczMyw3ICs3NDgsNyBAQAogICAgIEluIHRoZSBtdWx0aSBTQ00gY2FzZSwgd2UgYnVpbGQgYSB2YWx1ZSBiYXNlZCBvbiBTUkNSRVZfRk9STUFUIHdoaWNoIG11c3QKICAgICBoYXZlIGJlZW4gc2V0LgogCi0gICAgVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHdlIHB1dCB0aGUgc3RyaW5nICJBVVRPSU5DKyIgaW50byByZXR1cm4gdmFsdWUgaWYgdGhlIHJldmlzaW9ucyBhcmUgbm90IAorICAgIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCB3ZSBwdXQgdGhlIHN0cmluZyAiQVVUT0lOQysiIGludG8gcmV0dXJuIHZhbHVlIGlmIHRoZSByZXZpc2lvbnMgYXJlIG5vdAogICAgIGluY3JlbWVudGFsLCBvdGhlciBjb2RlIGlzIHRoZW4gcmVzcG9uc2libGUgZm9yIHR1cm5pbmcgdGhhdCBpbnRvIGFuIGluY3JlYXNpbmcgdmFsdWUgKGlmIG5lZWRlZCkKIAogICAgIEEgbWV0aG9kX25hbWUgY2FuIGJlIHN1cHBsaWVkIHRvIHJldHJpZXZlIGFuIGFsdGVybmF0aXZlbHkgZm9ybWF0dGVkIHJldmlzaW9uIGZyb20gYSBmZXRjaGVyLCBpZgpAQCAtNzg1LDcgKzgwMCw3IEBACiAgICAgZm9ybWF0ID0gcmUuc3ViKG5hbWVfdG9fcmV2X3JlLCBsYW1iZGEgbWF0Y2g6IG5hbWVfdG9fcmV2W21hdGNoLmdyb3VwKDApXSwgZm9ybWF0KQogCiAgICAgaWYgc2VlbmF1dG9pbmM6Ci0gICAgICAgZm9ybWF0ID0gIkFVVE9JTkMrIiArIGZvcm1hdAorICAgICAgICBmb3JtYXQgPSAiQVVUT0lOQysiICsgZm9ybWF0CiAKICAgICByZXR1cm4gZm9ybWF0CiAKQEAgLTg5Miw0NSArOTA3LDQ3IEBACiAgICAgcmVwbGFjZW1lbnRzWyJCQVNFTkFNRSJdID0gb3JpZ3VkLnBhdGguc3BsaXQoIi8iKVstMV0KICAgICByZXBsYWNlbWVudHNbIk1JUlJPUk5BTUUiXSA9IG9yaWd1ZC5ob3N0LnJlcGxhY2UoJzonLCcuJykgKyBvcmlndWQucGF0aC5yZXBsYWNlKCcvJywgJy4nKS5yZXBsYWNlKCcqJywgJy4nKQogCi0gICAgZGVmIGFkZHVyaSh1ZCwgdXJpcywgdWRzLCBtaXJyb3JzKToKKyAgICBkZWYgYWRkdXJpKHVkLCB1cmlzLCB1ZHMsIG1pcnJvcnMsIHRhcmJhbGxzKToKICAgICAgICAgZm9yIGxpbmUgaW4gbWlycm9yczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAoZmluZCwgcmVwbGFjZSkgPSBsaW5lCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbmV3dXJpID0gdXJpX3JlcGxhY2UodWQsIGZpbmQsIHJlcGxhY2UsIHJlcGxhY2VtZW50cywgbGQpCi0gICAgICAgICAgICBpZiBub3QgbmV3dXJpIG9yIG5ld3VyaSBpbiB1cmlzIG9yIG5ld3VyaSA9PSBvcmlndWQudXJsOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIGlmIG5vdCB0cnVzdGVkX25ldHdvcmsobGQsIG5ld3VyaSk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJNaXJyb3IgJXMgbm90IGluIHRoZSBsaXN0IG9mIHRydXN0ZWQgbmV0d29ya3MsIHNraXBwaW5nIiAlICAobmV3dXJpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9yIHRhcmJhbGwgaW4gdGFyYmFsbHM6CisgICAgICAgICAgICAgICAgbmV3dXJpID0gdXJpX3JlcGxhY2UodWQsIGZpbmQsIHJlcGxhY2UsIHJlcGxhY2VtZW50cywgbGQsIHRhcmJhbGwpCisgICAgICAgICAgICAgICAgaWYgbm90IG5ld3VyaSBvciBuZXd1cmkgaW4gdXJpcyBvciBuZXd1cmkgPT0gb3JpZ3VkLnVybDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgIyBDcmVhdGUgYSBsb2NhbCBjb3B5IG9mIHRoZSBtaXJyb3JzIG1pbnVzIHRoZSBjdXJyZW50IGxpbmUKLSAgICAgICAgICAgICMgdGhpcyB3aWxsIHByZXZlbnQgdXMgZnJvbSByZWN1cnNpdmVseSBwcm9jZXNzaW5nIHRoZSBzYW1lIGxpbmUKLSAgICAgICAgICAgICMgYXMgd2VsbCBhcyBpbmRpcmVjdCByZWN1cnNpb24gQSAtPiBCIC0+IEMgLT4gQQotICAgICAgICAgICAgbG9jYWxtaXJyb3JzID0gbGlzdChtaXJyb3JzKQotICAgICAgICAgICAgbG9jYWxtaXJyb3JzLnJlbW92ZShsaW5lKQorICAgICAgICAgICAgICAgIGlmIG5vdCB0cnVzdGVkX25ldHdvcmsobGQsIG5ld3VyaSk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiTWlycm9yICVzIG5vdCBpbiB0aGUgbGlzdCBvZiB0cnVzdGVkIG5ldHdvcmtzLCBza2lwcGluZyIgJSAgKG5ld3VyaSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuZXd1ZCA9IEZldGNoRGF0YShuZXd1cmksIGxkKQotICAgICAgICAgICAgICAgIG5ld3VkLnNldHVwX2xvY2FscGF0aChsZCkKLSAgICAgICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiTWlycm9yIGZldGNoIGZhaWx1cmUgZm9yIHVybCAlcyAob3JpZ2luYWwgdXJsOiAlcykiICUgKG5ld3VyaSwgb3JpZ3VkLnVybCkpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsIHN0cihlKSkKKyAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIG1pcnJvcnMgbWludXMgdGhlIGN1cnJlbnQgbGluZQorICAgICAgICAgICAgICAgICMgdGhpcyB3aWxsIHByZXZlbnQgdXMgZnJvbSByZWN1cnNpdmVseSBwcm9jZXNzaW5nIHRoZSBzYW1lIGxpbmUKKyAgICAgICAgICAgICAgICAjIGFzIHdlbGwgYXMgaW5kaXJlY3QgcmVjdXJzaW9uIEEgLT4gQiAtPiBDIC0+IEEKKyAgICAgICAgICAgICAgICBsb2NhbG1pcnJvcnMgPSBsaXN0KG1pcnJvcnMpCisgICAgICAgICAgICAgICAgbG9jYWxtaXJyb3JzLnJlbW92ZShsaW5lKQorCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIHNldHVwX2xvY2FscGF0aCBvZiBmaWxlOi8vIHVybHMgbWF5IGZhaWwsIHdlIHNob3VsZCBzdGlsbCBzZWUgCi0gICAgICAgICAgICAgICAgICAgICMgaWYgbWlycm9ycyBvZiB0aGUgdXJsIGV4aXN0Ci0gICAgICAgICAgICAgICAgICAgIGFkZHVyaShuZXd1ZCwgdXJpcywgdWRzLCBsb2NhbG1pcnJvcnMpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFVuYm91bmRMb2NhbEVycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgY29udGludWUgICAKLSAgICAgICAgICAgIHVyaXMuYXBwZW5kKG5ld3VyaSkKLSAgICAgICAgICAgIHVkcy5hcHBlbmQobmV3dWQpCisgICAgICAgICAgICAgICAgICAgIG5ld3VkID0gRmV0Y2hEYXRhKG5ld3VyaSwgbGQpCisgICAgICAgICAgICAgICAgICAgIG5ld3VkLnNldHVwX2xvY2FscGF0aChsZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJNaXJyb3IgZmV0Y2ggZmFpbHVyZSBmb3IgdXJsICVzIChvcmlnaW5hbCB1cmw6ICVzKSIgJSAobmV3dXJpLCBvcmlndWQudXJsKSkKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsIHN0cihlKSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXR1cF9sb2NhbHBhdGggb2YgZmlsZTovLyB1cmxzIG1heSBmYWlsLCB3ZSBzaG91bGQgc3RpbGwgc2VlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIG1pcnJvcnMgb2YgdGhlIHVybCBleGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkdXJpKG5ld3VkLCB1cmlzLCB1ZHMsIGxvY2FsbWlycm9ycywgdGFyYmFsbHMpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmJvdW5kTG9jYWxFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB1cmlzLmFwcGVuZChuZXd1cmkpCisgICAgICAgICAgICAgICAgdWRzLmFwcGVuZChuZXd1ZCkKIAotICAgICAgICAgICAgYWRkdXJpKG5ld3VkLCB1cmlzLCB1ZHMsIGxvY2FsbWlycm9ycykKKyAgICAgICAgICAgICAgICBhZGR1cmkobmV3dWQsIHVyaXMsIHVkcywgbG9jYWxtaXJyb3JzLCB0YXJiYWxscykKIAotICAgIGFkZHVyaShvcmlndWQsIHVyaXMsIHVkcywgbWlycm9ycykKKyAgICBhZGR1cmkob3JpZ3VkLCB1cmlzLCB1ZHMsIG1pcnJvcnMsIG9yaWd1ZC5taXJyb3J0YXJiYWxscyBvciBbTm9uZV0pCiAKICAgICByZXR1cm4gdXJpcywgdWRzCiAKQEAgLTk3NSw4ICs5OTIsOCBAQAogICAgICAgICAjIFdlIG1heSBiZSBvYnRhaW5pbmcgYSBtaXJyb3IgdGFyYmFsbCB3aGljaCBuZWVkcyBmdXJ0aGVyIHByb2Nlc3NpbmcgYnkgdGhlIHJlYWwgZmV0Y2hlcgogICAgICAgICAjIElmIHRoYXQgdGFyYmFsbCBpcyBhIGxvY2FsIGZpbGU6Ly8gd2UgbmVlZCB0byBwcm92aWRlIGEgc3ltbGluayB0byBpdAogICAgICAgICBkbGRpciA9IGxkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgaWYgb3JpZ3VkLm1pcnJvcnRhcmJhbGwgYW5kIG9zLnBhdGguYmFzZW5hbWUodWQubG9jYWxwYXRoKSA9PSBvcy5wYXRoLmJhc2VuYW1lKG9yaWd1ZC5taXJyb3J0YXJiYWxsKSBcCi0gICAgICAgICAgICAgICAgYW5kIG9zLnBhdGguYmFzZW5hbWUodWQubG9jYWxwYXRoKSAhPSBvcy5wYXRoLmJhc2VuYW1lKG9yaWd1ZC5sb2NhbHBhdGgpOgorCisgICAgICAgIGlmIG9yaWd1ZC5taXJyb3J0YXJiYWxscyBhbmQgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpIGluIG9yaWd1ZC5taXJyb3J0YXJiYWxscyBhbmQgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpICE9IG9zLnBhdGguYmFzZW5hbWUob3JpZ3VkLmxvY2FscGF0aCk6CiAgICAgICAgICAgICAjIENyZWF0ZSBkb25lc3RhbXAgaW4gb2xkIGZvcm1hdCB0byBhdm9pZCB0cmlnZ2VyaW5nIGEgcmUtZG93bmxvYWQKICAgICAgICAgICAgIGlmIHVkLmRvbmVzdGFtcDoKICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHVkLmRvbmVzdGFtcCkpCkBAIC05OTMsNyArMTAxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGlmIG5vdCB2ZXJpZnlfZG9uZXN0YW1wKG9yaWd1ZCwgbGQpIG9yIG9yaWd1ZC5tZXRob2QubmVlZF91cGRhdGUob3JpZ3VkLCBsZCk6CiAgICAgICAgICAgICAgICAgb3JpZ3VkLm1ldGhvZC5kb3dubG9hZChvcmlndWQsIGxkKQotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIob3JpZ3VkLm1ldGhvZCwiYnVpbGRfbWlycm9yX2RhdGEiKToKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9yaWd1ZC5tZXRob2QsICJidWlsZF9taXJyb3JfZGF0YSIpOgogICAgICAgICAgICAgICAgICAgICBvcmlndWQubWV0aG9kLmJ1aWxkX21pcnJvcl9kYXRhKG9yaWd1ZCwgbGQpCiAgICAgICAgICAgICByZXR1cm4gb3JpZ3VkLmxvY2FscGF0aAogICAgICAgICAjIE90aGVyd2lzZSB0aGUgcmVzdWx0IGlzIGEgbG9jYWwgZmlsZTovLyBhbmQgd2Ugc3ltbGluayB0byBpdApAQCAtMTAxNSw3ICsxMDMyLDcgQEAKIAogICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CiAgICAgICAgIGlmIGUuZXJybm8gaW4gW29zLmVycm5vLkVTVEFMRV06Ci0gICAgICAgICAgICBsb2dnZXIud2FybigiU3RhbGUgRXJyb3IgT2JzZXJ2ZWQgJXMuIiAlIHVkLnVybCkKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJTdGFsZSBFcnJvciBPYnNlcnZlZCAlcy4iICUgdWQudXJsKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJhaXNlCiAKQEAgLTExMTUsNyArMTEzMiw3IEBACiAgICAgYXR0ZW1wdHMuYXBwZW5kKCJTUkNSRVYiKQogCiAgICAgZm9yIGEgaW4gYXR0ZW1wdHM6Ci0gICAgICAgIHNyY3JldiA9IGQuZ2V0VmFyKGEpICAgICAgICAgICAgICAKKyAgICAgICAgc3JjcmV2ID0gZC5nZXRWYXIoYSkKICAgICAgICAgaWYgc3JjcmV2IGFuZCBzcmNyZXYgIT0gIklOVkFMSUQiOgogICAgICAgICAgICAgYnJlYWsKIApAQCAtMTEzMCw3ICsxMTQ3LDcgQEAKICAgICAgICAgaWYgc3JjcmV2ID09ICJJTlZBTElEIiBvciBub3Qgc3JjcmV2OgogICAgICAgICAgICAgcmV0dXJuIHBhcm1yZXYKICAgICAgICAgaWYgc3JjcmV2ICE9IHBhcm1yZXY6Ci0gICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJDb25mbGljdGluZyByZXZpc2lvbnMgKCVzIGZyb20gU1JDUkVWIGFuZCAlcyBmcm9tIHRoZSB1cmwpIGZvdW5kLCBwbGVhc2Ugc3BjaWZ5IG9uZSB2YWxpZCB2YWx1ZSIgJSAoc3JjcmV2LCBwYXJtcmV2KSkKKyAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoIkNvbmZsaWN0aW5nIHJldmlzaW9ucyAoJXMgZnJvbSBTUkNSRVYgYW5kICVzIGZyb20gdGhlIHVybCkgZm91bmQsIHBsZWFzZSBzcGVjaWZ5IG9uZSB2YWxpZCB2YWx1ZSIgJSAoc3JjcmV2LCBwYXJtcmV2KSkKICAgICAgICAgcmV0dXJuIHBhcm1yZXYKIAogICAgIGlmIHNyY3JldiA9PSAiSU5WQUxJRCIgb3Igbm90IHNyY3JldjoKQEAgLTExOTAsNyArMTIwNyw3IEBACiAgICAgICAgIHNlbGYubG9jYWxmaWxlID0gIiIKICAgICAgICAgc2VsZi5sb2NhbHBhdGggPSBOb25lCiAgICAgICAgIHNlbGYubG9ja2ZpbGUgPSBOb25lCi0gICAgICAgIHNlbGYubWlycm9ydGFyYmFsbCA9IE5vbmUKKyAgICAgICAgc2VsZi5taXJyb3J0YXJiYWxscyA9IFtdCiAgICAgICAgIHNlbGYuYmFzZW5hbWUgPSBOb25lCiAgICAgICAgIHNlbGYuYmFzZXBhdGggPSBOb25lCiAgICAgICAgIChzZWxmLnR5cGUsIHNlbGYuaG9zdCwgc2VsZi5wYXRoLCBzZWxmLnVzZXIsIHNlbGYucHN3ZCwgc2VsZi5wYXJtKSA9IGRlY29kZXVybChkLmV4cGFuZCh1cmwpKQpAQCAtMTIyOCw3ICsxMjQ1LDcgQEAKICAgICAgICAgZm9yIG0gaW4gbWV0aG9kczoKICAgICAgICAgICAgIGlmIG0uc3VwcG9ydHMoc2VsZiwgZCk6CiAgICAgICAgICAgICAgICAgc2VsZi5tZXRob2QgPSBtCi0gICAgICAgICAgICAgICAgYnJlYWsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBpZiBub3Qgc2VsZi5tZXRob2Q6CiAgICAgICAgICAgICByYWlzZSBOb01ldGhvZEVycm9yKHVybCkKQEAgLTEyNjMsNyArMTI4MCw3IEBACiAgICAgICAgIGVsaWYgc2VsZi5iYXNlcGF0aCBvciBzZWxmLmJhc2VuYW1lOgogICAgICAgICAgICAgYmFzZXBhdGggPSBkbGRpciArIG9zLnNlcCArIChzZWxmLmJhc2VwYXRoIG9yIHNlbGYuYmFzZW5hbWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgYmIuZmF0YWwoIkNhbid0IGRldGVybWluZSBsb2NrIHBhdGggZm9yIHVybCAlcyIgJSB1cmwpCisgICAgICAgICAgICBiYi5mYXRhbCgiQ2FuJ3QgZGV0ZXJtaW5lIGxvY2sgcGF0aCBmb3IgdXJsICVzIiAlIHVybCkKIAogICAgICAgICBzZWxmLmRvbmVzdGFtcCA9IGJhc2VwYXRoICsgJy5kb25lJwogICAgICAgICBzZWxmLmxvY2tmaWxlID0gYmFzZXBhdGggKyAnLmxvY2snCkBAIC0xMzI2LDEzICsxMzQzLDEzIEBACiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIodXJsZGF0YS5sb2NhbHBhdGgpID09IFRydWU6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgdXJsZGF0YS5sb2NhbHBhdGguZmluZCgiKiIpICE9IC0xOgotICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiByZWNvbW1lbmRzX2NoZWNrc3VtKHNlbGYsIHVybGRhdGEpOgogICAgICAgICAiIiIKLSAgICAgICAgSXMgdGhlIGJhY2tlbmQgb24gd2hlcmUgY2hlY2tzdW1taW5nIGlzIHJlY29tbWVuZGVkIChzaG91bGQgd2FybmluZ3MgCisgICAgICAgIElzIHRoZSBiYWNrZW5kIG9uIHdoZXJlIGNoZWNrc3VtbWluZyBpcyByZWNvbW1lbmRlZCAoc2hvdWxkIHdhcm5pbmdzCiAgICAgICAgIGJlIGRpc3BsYXllZCBpZiB0aGVyZSBpcyBubyBjaGVja3N1bSk/CiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTE1NDIsNiArMTU1OSwxNCBAQAogICAgICAgICBrZXkgPSBzZWxmLl9yZXZpc2lvbl9rZXkodWQsIGQsIG5hbWUpCiAgICAgICAgIHJldHVybiAiJXMtJXMiICUgKGtleSwgZC5nZXRWYXIoIlBOIikgb3IgIiIpCiAKKyAgICBkZWYgbGF0ZXN0X3ZlcnNpb25zdHJpbmcoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29tcHV0ZSB0aGUgbGF0ZXN0IHJlbGVhc2UgbmFtZSBsaWtlICJ4LnkueCIgaW4gIngueS54K2dpdEhBU0giCisgICAgICAgIGJ5IHNlYXJjaGluZyB0aHJvdWdoIHRoZSB0YWdzIG91dHB1dCBvZiBscy1yZW1vdGUsIGNvbXBhcmluZworICAgICAgICB2ZXJzaW9ucyBhbmQgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IG1hdGNoIGFzIGEgKHZlcnNpb24sIHJldmlzaW9uKSBwYWlyLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICgnJywgJycpCisKIGNsYXNzIEZldGNoKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybHMsIGQsIGNhY2hlID0gVHJ1ZSwgbG9jYWxvbmx5ID0gRmFsc2UsIGNvbm5lY3Rpb25fY2FjaGUgPSBOb25lKToKICAgICAgICAgaWYgbG9jYWxvbmx5IGFuZCBjYWNoZToKQEAgLTE2MTIsNyArMTYzNyw3IEBACiAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9OT19ORVRXT1JLIiwgbmV0d29yaykKLSAKKwogICAgICAgICAgICAgICAgIGlmIHZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkgYW5kIG5vdCBtLm5lZWRfdXBkYXRlKHVkLCBzZWxmLmQpOgogICAgICAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSB1ZC5sb2NhbHBhdGgKICAgICAgICAgICAgICAgICBlbGlmIG0udHJ5X3ByZW1pcnJvcih1ZCwgc2VsZi5kKToKQEAgLTE3MDgsOSArMTczMyw4IEBACiAgICAgICAgICAgICByZXQgPSB0cnlfbWlycm9ycyhzZWxmLCBzZWxmLmQsIHVkLCBtaXJyb3JzLCBUcnVlKQogICAgICAgICAgICAgaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICAjIE5leHQgdHJ5IGNoZWNraW5nIGZyb20gdGhlIG9yaWdpbmFsIHVyaSwgdQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0ID0gbS5jaGVja3N0YXR1cyhzZWxmLCB1ZCwgc2VsZi5kKQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByZXQgPSBtLmNoZWNrc3RhdHVzKHNlbGYsIHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICAgICAgIyBGaW5hbGx5LCB0cnkgY2hlY2tpbmcgdXJpLCB1LCBmcm9tIE1JUlJPUlMKICAgICAgICAgICAgICAgICAgICAgbWlycm9ycyA9IG1pcnJvcl9mcm9tX3N0cmluZyhzZWxmLmQuZ2V0VmFyKCdNSVJST1JTJykpCiAgICAgICAgICAgICAgICAgICAgIHJldCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIFRydWUpCkBAIC0xNzIwLDcgKzE3NDQsNyBAQAogCiAgICAgZGVmIHVucGFjayhzZWxmLCByb290LCB1cmxzPU5vbmUpOgogICAgICAgICAiIiIKLSAgICAgICAgQ2hlY2sgYWxsIHVybHMgZXhpc3QgdXBzdHJlYW0KKyAgICAgICAgVW5wYWNrIHVybHMgdG8gcm9vdAogICAgICAgICAiIiIKIAogICAgICAgICBpZiBub3QgdXJsczoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkKaW5kZXggNzQ0MmY4NC4uNWVmOGNkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkKQEAgLTcwLDExICs3MCwxNCBAQAogIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBlcnJubworaW1wb3J0IGZubWF0Y2gKIGltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgYmIKLWltcG9ydCBlcnJubwogaW1wb3J0IGJiLnByb2dyZXNzCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZAogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKQEAgLTE3MiwxOCArMTc1LDY2IEBACiAgICAgICAgIGJyYW5jaGVzID0gdWQucGFybS5nZXQoImJyYW5jaCIsICJtYXN0ZXIiKS5zcGxpdCgnLCcpCiAgICAgICAgIGlmIGxlbihicmFuY2hlcykgIT0gbGVuKHVkLm5hbWVzKToKICAgICAgICAgICAgIHJhaXNlIGJiLmZldGNoMi5QYXJhbWV0ZXJFcnJvcigiVGhlIG51bWJlciBvZiBuYW1lIGFuZCBicmFuY2ggcGFyYW1ldGVycyBpcyBub3QgYmFsYW5jZWQiLCB1ZC51cmwpCisKKyAgICAgICAgdWQuY2xvbmVmbGFncyA9ICItcyAtbiIKKyAgICAgICAgaWYgdWQuYmFyZWNsb25lOgorICAgICAgICAgICAgdWQuY2xvbmVmbGFncyArPSAiIC0tbWlycm9yIgorCisgICAgICAgIHVkLnNoYWxsb3cgPSBkLmdldFZhcigiQkJfR0lUX1NIQUxMT1ciKSA9PSAiMSIKKyAgICAgICAgdWQuc2hhbGxvd19leHRyYV9yZWZzID0gKGQuZ2V0VmFyKCJCQl9HSVRfU0hBTExPV19FWFRSQV9SRUZTIikgb3IgIiIpLnNwbGl0KCkKKworICAgICAgICBkZXB0aF9kZWZhdWx0ID0gZC5nZXRWYXIoIkJCX0dJVF9TSEFMTE9XX0RFUFRIIikKKyAgICAgICAgaWYgZGVwdGhfZGVmYXVsdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZXB0aF9kZWZhdWx0ID0gaW50KGRlcHRoX2RlZmF1bHQgb3IgMCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIGJiLmZldGNoMi5GZXRjaEVycm9yKCJJbnZhbGlkIGRlcHRoIGZvciBCQl9HSVRfU0hBTExPV19ERVBUSDogJXMiICUgZGVwdGhfZGVmYXVsdCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgZGVwdGhfZGVmYXVsdCA8IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLmZldGNoMi5GZXRjaEVycm9yKCJJbnZhbGlkIGRlcHRoIGZvciBCQl9HSVRfU0hBTExPV19ERVBUSDogJXMiICUgZGVwdGhfZGVmYXVsdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlcHRoX2RlZmF1bHQgPSAxCisgICAgICAgIHVkLnNoYWxsb3dfZGVwdGhzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhOiBkZXB0aF9kZWZhdWx0KQorCisgICAgICAgIHJldnNfZGVmYXVsdCA9IGQuZ2V0VmFyKCJCQl9HSVRfU0hBTExPV19SRVZTIiwgVHJ1ZSkKKyAgICAgICAgdWQuc2hhbGxvd19yZXZzID0gW10KICAgICAgICAgdWQuYnJhbmNoZXMgPSB7fQogICAgICAgICBmb3IgcG9zLCBuYW1lIGluIGVudW1lcmF0ZSh1ZC5uYW1lcyk6CiAgICAgICAgICAgICBicmFuY2ggPSBicmFuY2hlc1twb3NdCiAgICAgICAgICAgICB1ZC5icmFuY2hlc1tuYW1lXSA9IGJyYW5jaAogICAgICAgICAgICAgdWQudW5yZXNvbHZlZHJldltuYW1lXSA9IGJyYW5jaAogCisgICAgICAgICAgICBzaGFsbG93X2RlcHRoID0gZC5nZXRWYXIoIkJCX0dJVF9TSEFMTE9XX0RFUFRIXyVzIiAlIG5hbWUpCisgICAgICAgICAgICBpZiBzaGFsbG93X2RlcHRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2hhbGxvd19kZXB0aCA9IGludChzaGFsbG93X2RlcHRoIG9yIDApCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLmZldGNoMi5GZXRjaEVycm9yKCJJbnZhbGlkIGRlcHRoIGZvciBCQl9HSVRfU0hBTExPV19ERVBUSF8lczogJXMiICUgKG5hbWUsIHNoYWxsb3dfZGVwdGgpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHNoYWxsb3dfZGVwdGggPCAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIuZmV0Y2gyLkZldGNoRXJyb3IoIkludmFsaWQgZGVwdGggZm9yIEJCX0dJVF9TSEFMTE9XX0RFUFRIXyVzOiAlcyIgJSAobmFtZSwgc2hhbGxvd19kZXB0aCkpCisgICAgICAgICAgICAgICAgICAgIHVkLnNoYWxsb3dfZGVwdGhzW25hbWVdID0gc2hhbGxvd19kZXB0aAorCisgICAgICAgICAgICByZXZzID0gZC5nZXRWYXIoIkJCX0dJVF9TSEFMTE9XX1JFVlNfJXMiICUgbmFtZSkKKyAgICAgICAgICAgIGlmIHJldnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdWQuc2hhbGxvd19yZXZzLmV4dGVuZChyZXZzLnNwbGl0KCkpCisgICAgICAgICAgICBlbGlmIHJldnNfZGVmYXVsdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB1ZC5zaGFsbG93X3JldnMuZXh0ZW5kKHJldnNfZGVmYXVsdC5zcGxpdCgpKQorCisgICAgICAgIGlmICh1ZC5zaGFsbG93IGFuZAorICAgICAgICAgICAgICAgIG5vdCB1ZC5zaGFsbG93X3JldnMgYW5kCisgICAgICAgICAgICAgICAgYWxsKHVkLnNoYWxsb3dfZGVwdGhzW25dID09IDAgZm9yIG4gaW4gdWQubmFtZXMpKToKKyAgICAgICAgICAgICMgU2hhbGxvdyBkaXNhYmxlZCBmb3IgdGhpcyBVUkwKKyAgICAgICAgICAgIHVkLnNoYWxsb3cgPSBGYWxzZQorCiAgICAgICAgIGlmIHVkLnVzZWhlYWQ6CiAgICAgICAgICAgICB1ZC51bnJlc29sdmVkcmV2WydkZWZhdWx0J10gPSAnSEVBRCcKIAogICAgICAgICB1ZC5iYXNlY21kID0gZC5nZXRWYXIoIkZFVENIQ01EX2dpdCIpIG9yICJnaXQgLWMgY29yZS5mc3luY29iamVjdGZpbGVzPTAiCiAKLSAgICAgICAgdWQud3JpdGVfdGFyYmFsbHMgPSAoKGQuZ2V0VmFyKCJCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMiKSBvciAiMCIpICE9ICIwIikgb3IgdWQucmViYXNlYWJsZQorICAgICAgICB3cml0ZV90YXJiYWxscyA9IGQuZ2V0VmFyKCJCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMiKSBvciAiMCIKKyAgICAgICAgdWQud3JpdGVfdGFyYmFsbHMgPSB3cml0ZV90YXJiYWxscyAhPSAiMCIgb3IgdWQucmViYXNlYWJsZQorICAgICAgICB1ZC53cml0ZV9zaGFsbG93X3RhcmJhbGxzID0gKGQuZ2V0VmFyKCJCQl9HRU5FUkFURV9TSEFMTE9XX1RBUkJBTExTIikgb3Igd3JpdGVfdGFyYmFsbHMpICE9ICIwIgogCiAgICAgICAgIHVkLnNldHVwX3JldmlzaW9ucyhkKQogCkBAIC0yMDUsMTMgKzI1Niw0MiBAQAogICAgICAgICBpZiB1ZC5yZWJhc2VhYmxlOgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gdWQubmFtZXM6CiAgICAgICAgICAgICAgICAgZ2l0c3JjbmFtZSA9IGdpdHNyY25hbWUgKyAnXycgKyB1ZC5yZXZpc2lvbnNbbmFtZV0KLSAgICAgICAgdWQubWlycm9ydGFyYmFsbCA9ICdnaXQyXyVzLnRhci5neicgJSBnaXRzcmNuYW1lCi0gICAgICAgIHVkLmZ1bGxtaXJyb3IgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRMX0RJUiIpLCB1ZC5taXJyb3J0YXJiYWxsKQotICAgICAgICBnaXRkaXIgPSBkLmdldFZhcigiR0lURElSIikgb3IgKGQuZ2V0VmFyKCJETF9ESVIiKSArICIvZ2l0Mi8iKQotICAgICAgICB1ZC5jbG9uZWRpciA9IG9zLnBhdGguam9pbihnaXRkaXIsIGdpdHNyY25hbWUpCiAKKyAgICAgICAgZGxfZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCisgICAgICAgIGdpdGRpciA9IGQuZ2V0VmFyKCJHSVRESVIiKSBvciAoZGxfZGlyICsgIi9naXQyLyIpCisgICAgICAgIHVkLmNsb25lZGlyID0gb3MucGF0aC5qb2luKGdpdGRpciwgZ2l0c3JjbmFtZSkKICAgICAgICAgdWQubG9jYWxmaWxlID0gdWQuY2xvbmVkaXIKIAorICAgICAgICBtaXJyb3J0YXJiYWxsID0gJ2dpdDJfJXMudGFyLmd6JyAlIGdpdHNyY25hbWUKKyAgICAgICAgdWQuZnVsbG1pcnJvciA9IG9zLnBhdGguam9pbihkbF9kaXIsIG1pcnJvcnRhcmJhbGwpCisgICAgICAgIHVkLm1pcnJvcnRhcmJhbGxzID0gW21pcnJvcnRhcmJhbGxdCisgICAgICAgIGlmIHVkLnNoYWxsb3c6CisgICAgICAgICAgICB0YXJiYWxsbmFtZSA9IGdpdHNyY25hbWUKKyAgICAgICAgICAgIGlmIHVkLmJhcmVjbG9uZToKKyAgICAgICAgICAgICAgICB0YXJiYWxsbmFtZSA9ICIlc19iYXJlIiAlIHRhcmJhbGxuYW1lCisKKyAgICAgICAgICAgIGlmIHVkLnNoYWxsb3dfcmV2czoKKyAgICAgICAgICAgICAgICB0YXJiYWxsbmFtZSA9ICIlc18lcyIgJSAodGFyYmFsbG5hbWUsICJfIi5qb2luKHNvcnRlZCh1ZC5zaGFsbG93X3JldnMpKSkKKworICAgICAgICAgICAgZm9yIG5hbWUsIHJldmlzaW9uIGluIHNvcnRlZCh1ZC5yZXZpc2lvbnMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgdGFyYmFsbG5hbWUgPSAiJXNfJXMiICUgKHRhcmJhbGxuYW1lLCB1ZC5yZXZpc2lvbnNbbmFtZV1bOjddKQorICAgICAgICAgICAgICAgIGRlcHRoID0gdWQuc2hhbGxvd19kZXB0aHNbbmFtZV0KKyAgICAgICAgICAgICAgICBpZiBkZXB0aDoKKyAgICAgICAgICAgICAgICAgICAgdGFyYmFsbG5hbWUgPSAiJXMtJXMiICUgKHRhcmJhbGxuYW1lLCBkZXB0aCkKKworICAgICAgICAgICAgc2hhbGxvd19yZWZzID0gW10KKyAgICAgICAgICAgIGlmIG5vdCB1ZC5ub2JyYW5jaDoKKyAgICAgICAgICAgICAgICBzaGFsbG93X3JlZnMuZXh0ZW5kKHVkLmJyYW5jaGVzLnZhbHVlcygpKQorICAgICAgICAgICAgaWYgdWQuc2hhbGxvd19leHRyYV9yZWZzOgorICAgICAgICAgICAgICAgIHNoYWxsb3dfcmVmcy5leHRlbmQoci5yZXBsYWNlKCdyZWZzL2hlYWRzLycsICcnKS5yZXBsYWNlKCcqJywgJ0FMTCcpIGZvciByIGluIHVkLnNoYWxsb3dfZXh0cmFfcmVmcykKKyAgICAgICAgICAgIGlmIHNoYWxsb3dfcmVmczoKKyAgICAgICAgICAgICAgICB0YXJiYWxsbmFtZSA9ICIlc18lcyIgJSAodGFyYmFsbG5hbWUsICJfIi5qb2luKHNvcnRlZChzaGFsbG93X3JlZnMpKS5yZXBsYWNlKCcvJywgJy4nKSkKKworICAgICAgICAgICAgZmV0Y2hlciA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLmxvd2VyKCkKKyAgICAgICAgICAgIHVkLnNoYWxsb3d0YXJiYWxsID0gJyVzc2hhbGxvd18lcy50YXIuZ3onICUgKGZldGNoZXIsIHRhcmJhbGxuYW1lKQorICAgICAgICAgICAgdWQuZnVsbHNoYWxsb3cgPSBvcy5wYXRoLmpvaW4oZGxfZGlyLCB1ZC5zaGFsbG93dGFyYmFsbCkKKyAgICAgICAgICAgIHVkLm1pcnJvcnRhcmJhbGxzLmluc2VydCgwLCB1ZC5zaGFsbG93dGFyYmFsbCkKKwogICAgIGRlZiBsb2NhbHBhdGgoc2VsZiwgdWQsIGQpOgogICAgICAgICByZXR1cm4gdWQuY2xvbmVkaXIKIApAQCAtMjIxLDYgKzMwMSw4IEBACiAgICAgICAgIGZvciBuYW1lIGluIHVkLm5hbWVzOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbnRhaW5zX3JlZih1ZCwgZCwgbmFtZSwgdWQuY2xvbmVkaXIpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHVkLnNoYWxsb3cgYW5kIHVkLndyaXRlX3NoYWxsb3dfdGFyYmFsbHMgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsc2hhbGxvdyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBpZiB1ZC53cml0ZV90YXJiYWxscyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxtaXJyb3IpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yMzcsOCArMzE5LDE2IEBACiAgICAgZGVmIGRvd25sb2FkKHNlbGYsIHVkLCBkKToKICAgICAgICAgIiIiRmV0Y2ggdXJsIiIiCiAKLSAgICAgICAgIyBJZiB0aGUgY2hlY2tvdXQgZG9lc24ndCBleGlzdCBhbmQgdGhlIG1pcnJvciB0YXJiYWxsIGRvZXMsIGV4dHJhY3QgaXQKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHVkLmNsb25lZGlyKSBhbmQgb3MucGF0aC5leGlzdHModWQuZnVsbG1pcnJvcik6CisgICAgICAgIG5vX2Nsb25lID0gbm90IG9zLnBhdGguZXhpc3RzKHVkLmNsb25lZGlyKQorICAgICAgICBuZWVkX3VwZGF0ZSA9IG5vX2Nsb25lIG9yIHNlbGYubmVlZF91cGRhdGUodWQsIGQpCisKKyAgICAgICAgIyBBIGN1cnJlbnQgY2xvbmUgaXMgcHJlZmVycmVkIHRvIGVpdGhlciB0YXJiYWxsLCBhIHNoYWxsb3cgdGFyYmFsbCBpcworICAgICAgICAjIHByZWZlcnJlZCB0byBhbiBvdXQgb2YgZGF0ZSBjbG9uZSwgYW5kIGEgbWlzc2luZyBjbG9uZSB3aWxsIHVzZQorICAgICAgICAjIGVpdGhlciB0YXJiYWxsLgorICAgICAgICBpZiB1ZC5zaGFsbG93IGFuZCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsc2hhbGxvdykgYW5kIG5lZWRfdXBkYXRlOgorICAgICAgICAgICAgdWQubG9jYWxwYXRoID0gdWQuZnVsbHNoYWxsb3cKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxtaXJyb3IpIGFuZCBub19jbG9uZToKICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5jbG9uZWRpcikKICAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0YXIgLXh6ZiAlcyIgJSB1ZC5mdWxsbWlycm9yLCBkLCB3b3JrZGlyPXVkLmNsb25lZGlyKQogCkBAIC0yODQsOSArMzc0LDIxIEBACiAgICAgICAgICAgICAgICAgcmFpc2UgYmIuZmV0Y2gyLkZldGNoRXJyb3IoIlVuYWJsZSB0byBmaW5kIHJldmlzaW9uICVzIGluIGJyYW5jaCAlcyBldmVuIGZyb20gdXBzdHJlYW0iICUgKHVkLnJldmlzaW9uc1tuYW1lXSwgdWQuYnJhbmNoZXNbbmFtZV0pKQogCiAgICAgZGVmIGJ1aWxkX21pcnJvcl9kYXRhKHNlbGYsIHVkLCBkKToKLSAgICAgICAgIyBHZW5lcmF0ZSBhIG1pcnJvciB0YXJiYWxsIGlmIG5lZWRlZAotICAgICAgICBpZiB1ZC53cml0ZV90YXJiYWxscyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxtaXJyb3IpOgotICAgICAgICAgICAgIyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBzeW1saW5rIHBvaW50cyB0byByZWFkLW9ubHkgZmlsZXN5c3RlbSB3aXRoIFBSRU1JUlJPUgorICAgICAgICBpZiB1ZC5zaGFsbG93IGFuZCB1ZC53cml0ZV9zaGFsbG93X3RhcmJhbGxzOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxzaGFsbG93KToKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayh1ZC5mdWxsc2hhbGxvdyk6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayh1ZC5mdWxsc2hhbGxvdykKKyAgICAgICAgICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9ZC5nZXRWYXIoJ0RMX0RJUicpKQorICAgICAgICAgICAgICAgIHNoYWxsb3djbG9uZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnZ2l0JykKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvbmVfc2hhbGxvd19sb2NhbCh1ZCwgc2hhbGxvd2Nsb25lLCBkKQorCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDcmVhdGluZyB0YXJiYWxsIG9mIGdpdCByZXBvc2l0b3J5IikKKyAgICAgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAtY3pmICVzIC4iICUgdWQuZnVsbHNoYWxsb3csIGQsIHdvcmtkaXI9c2hhbGxvd2Nsb25lKQorICAgICAgICAgICAgICAgICAgICBydW5mZXRjaGNtZCgidG91Y2ggJXMuZG9uZSIgJSB1ZC5mdWxsc2hhbGxvdywgZCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodGVtcGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBlbGlmIHVkLndyaXRlX3RhcmJhbGxzIGFuZCBub3Qgb3MucGF0aC5leGlzdHModWQuZnVsbG1pcnJvcik6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayh1ZC5mdWxsbWlycm9yKToKICAgICAgICAgICAgICAgICBvcy51bmxpbmsodWQuZnVsbG1pcnJvcikKIApAQCAtMjk0LDYgKzM5Niw2MiBAQAogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAtY3pmICVzIC4iICUgdWQuZnVsbG1pcnJvciwgZCwgd29ya2Rpcj11ZC5jbG9uZWRpcikKICAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0b3VjaCAlcy5kb25lIiAlIHVkLmZ1bGxtaXJyb3IsIGQpCiAKKyAgICBkZWYgY2xvbmVfc2hhbGxvd19sb2NhbChzZWxmLCB1ZCwgZGVzdCwgZCk6CisgICAgICAgICIiIkNsb25lIHRoZSByZXBvIGFuZCBtYWtlIGl0IHNoYWxsb3cuCisKKyAgICAgICAgVGhlIHVwc3RyZWFtIHVybCBvZiB0aGUgbmV3IGNsb25lIGlzbid0IHNldCBhdCB0aGlzIHRpbWUsIGFzIGl0J2xsIGJlCisgICAgICAgIHNldCBjb3JyZWN0bHkgd2hlbiB1bnBhY2tlZC4iIiIKKyAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIGNsb25lICVzICVzICVzIiAlICh1ZC5iYXNlY21kLCB1ZC5jbG9uZWZsYWdzLCB1ZC5jbG9uZWRpciwgZGVzdCksIGQpCisKKyAgICAgICAgdG9fcGFyc2UsIHNoYWxsb3dfYnJhbmNoZXMgPSBbXSwgW10KKyAgICAgICAgZm9yIG5hbWUgaW4gdWQubmFtZXM6CisgICAgICAgICAgICByZXZpc2lvbiA9IHVkLnJldmlzaW9uc1tuYW1lXQorICAgICAgICAgICAgZGVwdGggPSB1ZC5zaGFsbG93X2RlcHRoc1tuYW1lXQorICAgICAgICAgICAgaWYgZGVwdGg6CisgICAgICAgICAgICAgICAgdG9fcGFyc2UuYXBwZW5kKCclc34lZF57fScgJSAocmV2aXNpb24sIGRlcHRoIC0gMSkpCisKKyAgICAgICAgICAgICMgRm9yIG5vYnJhbmNoLCB3ZSBuZWVkIGEgcmVmLCBvdGhlcndpc2UgdGhlIGNvbW1pdHMgd2lsbCBiZQorICAgICAgICAgICAgIyByZW1vdmVkLCBhbmQgZm9yIG5vbi1ub2JyYW5jaCwgd2UgdHJ1bmNhdGUgdGhlIGJyYW5jaCB0byBvdXIKKyAgICAgICAgICAgICMgc3JjcmV2LCB0byBhdm9pZCBrZWVwaW5nIHVubmVjZXNzYXJ5IGhpc3RvcnkgYmV5b25kIHRoYXQuCisgICAgICAgICAgICBicmFuY2ggPSB1ZC5icmFuY2hlc1tuYW1lXQorICAgICAgICAgICAgaWYgdWQubm9icmFuY2g6CisgICAgICAgICAgICAgICAgcmVmID0gInJlZnMvc2hhbGxvdy8lcyIgJSBuYW1lCisgICAgICAgICAgICBlbGlmIHVkLmJhcmVjbG9uZToKKyAgICAgICAgICAgICAgICByZWYgPSAicmVmcy9oZWFkcy8lcyIgJSBicmFuY2gKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVmID0gInJlZnMvcmVtb3Rlcy9vcmlnaW4vJXMiICUgYnJhbmNoCisKKyAgICAgICAgICAgIHNoYWxsb3dfYnJhbmNoZXMuYXBwZW5kKHJlZikKKyAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlcyB1cGRhdGUtcmVmICVzICVzIiAlICh1ZC5iYXNlY21kLCByZWYsIHJldmlzaW9uKSwgZCwgd29ya2Rpcj1kZXN0KQorCisgICAgICAgICMgTWFwIHNyY3JlditkZXB0aHMgdG8gcmV2aXNpb25zCisgICAgICAgIHBhcnNlZF9kZXB0aHMgPSBydW5mZXRjaGNtZCgiJXMgcmV2LXBhcnNlICVzIiAlICh1ZC5iYXNlY21kLCAiICIuam9pbih0b19wYXJzZSkpLCBkLCB3b3JrZGlyPWRlc3QpCisKKyAgICAgICAgIyBSZXNvbHZlIHNwZWNpZmllZCByZXZpc2lvbnMKKyAgICAgICAgcGFyc2VkX3JldnMgPSBydW5mZXRjaGNtZCgiJXMgcmV2LXBhcnNlICVzIiAlICh1ZC5iYXNlY21kLCAiICIuam9pbignIiVzXnt9IicgJSByIGZvciByIGluIHVkLnNoYWxsb3dfcmV2cykpLCBkLCB3b3JrZGlyPWRlc3QpCisgICAgICAgIHNoYWxsb3dfcmV2aXNpb25zID0gcGFyc2VkX2RlcHRocy5zcGxpdGxpbmVzKCkgKyBwYXJzZWRfcmV2cy5zcGxpdGxpbmVzKCkKKworICAgICAgICAjIEFwcGx5IGV4dHJhIHJlZiB3aWxkY2FyZHMKKyAgICAgICAgYWxsX3JlZnMgPSBydW5mZXRjaGNtZCgnJXMgZm9yLWVhY2gtcmVmICItLWZvcm1hdD0lJShyZWZuYW1lKSInICUgdWQuYmFzZWNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCB3b3JrZGlyPWRlc3QpLnNwbGl0bGluZXMoKQorICAgICAgICBmb3IgciBpbiB1ZC5zaGFsbG93X2V4dHJhX3JlZnM6CisgICAgICAgICAgICBpZiBub3QgdWQuYmFyZWNsb25lOgorICAgICAgICAgICAgICAgIHIgPSByLnJlcGxhY2UoJ3JlZnMvaGVhZHMvJywgJ3JlZnMvcmVtb3Rlcy9vcmlnaW4vJykKKworICAgICAgICAgICAgaWYgJyonIGluIHI6CisgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IGZpbHRlcihsYW1iZGEgYTogZm5tYXRjaC5mbm1hdGNoY2FzZShhLCByKSwgYWxsX3JlZnMpCisgICAgICAgICAgICAgICAgc2hhbGxvd19icmFuY2hlcy5leHRlbmQobWF0Y2hlcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2hhbGxvd19icmFuY2hlcy5hcHBlbmQocikKKworICAgICAgICAjIE1ha2UgdGhlIHJlcG9zaXRvcnkgc2hhbGxvdworICAgICAgICBzaGFsbG93X2NtZCA9IFsnZ2l0JywgJ21ha2Utc2hhbGxvdycsICctcyddCisgICAgICAgIGZvciBiIGluIHNoYWxsb3dfYnJhbmNoZXM6CisgICAgICAgICAgICBzaGFsbG93X2NtZC5hcHBlbmQoJy1yJykKKyAgICAgICAgICAgIHNoYWxsb3dfY21kLmFwcGVuZChiKQorICAgICAgICBzaGFsbG93X2NtZC5leHRlbmQoc2hhbGxvd19yZXZpc2lvbnMpCisgICAgICAgIHJ1bmZldGNoY21kKHN1YnByb2Nlc3MubGlzdDJjbWRsaW5lKHNoYWxsb3dfY21kKSwgZCwgd29ya2Rpcj1kZXN0KQorCiAgICAgZGVmIHVucGFjayhzZWxmLCB1ZCwgZGVzdGRpciwgZCk6CiAgICAgICAgICIiIiB1bnBhY2sgdGhlIGRvd25sb2FkZWQgc3JjIHRvIGRlc3RkaXIiIiIKIApAQCAtMzEwLDExICs0NjgsMTIgQEAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGVzdGRpcik6CiAgICAgICAgICAgICBiYi51dGlscy5wcnVuZWRpcihkZXN0ZGlyKQogCi0gICAgICAgIGNsb25lZmxhZ3MgPSAiLXMgLW4iCi0gICAgICAgIGlmIHVkLmJhcmVjbG9uZToKLSAgICAgICAgICAgIGNsb25lZmxhZ3MgKz0gIiAtLW1pcnJvciIKKyAgICAgICAgaWYgdWQuc2hhbGxvdyBhbmQgKG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5jbG9uZWRpcikgb3Igc2VsZi5uZWVkX3VwZGF0ZSh1ZCwgZCkpOgorICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC14emYgJXMiICUgdWQuZnVsbHNoYWxsb3csIGQsIHdvcmtkaXI9ZGVzdGRpcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlcyBjbG9uZSAlcyAlcy8gJXMiICUgKHVkLmJhc2VjbWQsIHVkLmNsb25lZmxhZ3MsIHVkLmNsb25lZGlyLCBkZXN0ZGlyKSwgZCkKIAotICAgICAgICBydW5mZXRjaGNtZCgiJXMgY2xvbmUgJXMgJXMvICVzIiAlICh1ZC5iYXNlY21kLCBjbG9uZWZsYWdzLCB1ZC5jbG9uZWRpciwgZGVzdGRpciksIGQpCiAgICAgICAgIHJlcG91cmwgPSBzZWxmLl9nZXRfcmVwb191cmwodWQpCiAgICAgICAgIHJ1bmZldGNoY21kKCIlcyByZW1vdGUgc2V0LXVybCBvcmlnaW4gJXMiICUgKHVkLmJhc2VjbWQsIHJlcG91cmwpLCBkLCB3b3JrZGlyPWRlc3RkaXIpCiAgICAgICAgIGlmIG5vdCB1ZC5ub2NoZWNrb3V0OgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0YW5uZXgucHkKaW5kZXggYzY2YzIxMS4uYTliNjljYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdGFubmV4LnB5CkBAIC0zMyw2ICszMywxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHVkLnR5cGUgaW4gWydnaXRhbm5leCddCiAKKyAgICBkZWYgdXJsZGF0YV9pbml0KHNlbGYsIHVkLCBkKToKKyAgICAgICAgc3VwZXIoR2l0QU5ORVgsIHNlbGYpLnVybGRhdGFfaW5pdCh1ZCwgZCkKKyAgICAgICAgaWYgdWQuc2hhbGxvdzoKKyAgICAgICAgICAgIHVkLnNoYWxsb3dfZXh0cmFfcmVmcyArPSBbJ3JlZnMvaGVhZHMvZ2l0LWFubmV4JywgJ3JlZnMvaGVhZHMvc3luY2VkLyonXQorCiAgICAgZGVmIHVzZXNfYW5uZXgoc2VsZiwgdWQsIGQsIHdkKToKICAgICAgICAgZm9yIG5hbWUgaW4gdWQubmFtZXM6CiAgICAgICAgICAgICB0cnk6CkBAIC01NSw5ICs2MCwyMSBAQAogICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6CiAgICAgICAgIEdpdC5kb3dubG9hZChzZWxmLCB1ZCwgZCkKIAotICAgICAgICBhbm5leCA9IHNlbGYudXNlc19hbm5leCh1ZCwgZCwgdWQuY2xvbmVkaXIpCi0gICAgICAgIGlmIGFubmV4OgotICAgICAgICAgICAgc2VsZi51cGRhdGVfYW5uZXgodWQsIGQsIHVkLmNsb25lZGlyKQorICAgICAgICBpZiBub3QgdWQuc2hhbGxvdyBvciB1ZC5sb2NhbHBhdGggIT0gdWQuZnVsbHNoYWxsb3c6CisgICAgICAgICAgICBpZiBzZWxmLnVzZXNfYW5uZXgodWQsIGQsIHVkLmNsb25lZGlyKToKKyAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9hbm5leCh1ZCwgZCwgdWQuY2xvbmVkaXIpCisKKyAgICBkZWYgY2xvbmVfc2hhbGxvd19sb2NhbChzZWxmLCB1ZCwgZGVzdCwgZCk6CisgICAgICAgIHN1cGVyKEdpdEFOTkVYLCBzZWxmKS5jbG9uZV9zaGFsbG93X2xvY2FsKHVkLCBkZXN0LCBkKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlcyBhbm5leCBpbml0IiAlIHVkLmJhc2VjbWQsIGQsIHdvcmtkaXI9ZGVzdCkKKyAgICAgICAgZXhjZXB0IGJiLmZldGNoLkZldGNoRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgc2VsZi51c2VzX2FubmV4KHVkLCBkLCBkZXN0KToKKyAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlcyBhbm5leCBnZXQiICUgdWQuYmFzZWNtZCwgZCwgd29ya2Rpcj1kZXN0KQorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoImNobW9kIHUrdyAtUiAlcy8uZ2l0L2FubmV4IiAlIChkZXN0KSwgZCwgcXVpZXQ9VHJ1ZSwgd29ya2Rpcj1kZXN0KQogCiAgICAgZGVmIHVucGFjayhzZWxmLCB1ZCwgZGVzdGRpciwgZCk6CiAgICAgICAgIEdpdC51bnBhY2soc2VsZiwgdWQsIGRlc3RkaXIsIGQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdHNtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQppbmRleCBhOTU1ODRjLi4wYWZmMTAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdHNtLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkKQEAgLTExNywxNCArMTE3LDE5IEBACiAgICAgZGVmIGRvd25sb2FkKHNlbGYsIHVkLCBkKToKICAgICAgICAgR2l0LmRvd25sb2FkKHNlbGYsIHVkLCBkKQogCi0gICAgICAgIHN1Ym1vZHVsZXMgPSBzZWxmLnVzZXNfc3VibW9kdWxlcyh1ZCwgZCwgdWQuY2xvbmVkaXIpCi0gICAgICAgIGlmIHN1Ym1vZHVsZXM6Ci0gICAgICAgICAgICBzZWxmLnVwZGF0ZV9zdWJtb2R1bGVzKHVkLCBkKQorICAgICAgICBpZiBub3QgdWQuc2hhbGxvdyBvciB1ZC5sb2NhbHBhdGggIT0gdWQuZnVsbHNoYWxsb3c6CisgICAgICAgICAgICBzdWJtb2R1bGVzID0gc2VsZi51c2VzX3N1Ym1vZHVsZXModWQsIGQsIHVkLmNsb25lZGlyKQorICAgICAgICAgICAgaWYgc3VibW9kdWxlczoKKyAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9zdWJtb2R1bGVzKHVkLCBkKQorCisgICAgZGVmIGNsb25lX3NoYWxsb3dfbG9jYWwoc2VsZiwgdWQsIGRlc3QsIGQpOgorICAgICAgICBzdXBlcihHaXRTTSwgc2VsZikuY2xvbmVfc2hhbGxvd19sb2NhbCh1ZCwgZGVzdCwgZCkKKworICAgICAgICBydW5mZXRjaGNtZCgnY3AgLWZwUFJIICIlcy9tb2R1bGVzIiAiJXMvIicgJSAodWQuY2xvbmVkaXIsIG9zLnBhdGguam9pbihkZXN0LCAnLmdpdCcpKSwgZCkKIAogICAgIGRlZiB1bnBhY2soc2VsZiwgdWQsIGRlc3RkaXIsIGQpOgogICAgICAgICBHaXQudW5wYWNrKHNlbGYsIHVkLCBkZXN0ZGlyLCBkKQotICAgICAgICAKLSAgICAgICAgc3VibW9kdWxlcyA9IHNlbGYudXNlc19zdWJtb2R1bGVzKHVkLCBkLCB1ZC5kZXN0ZGlyKQotICAgICAgICBpZiBzdWJtb2R1bGVzOgorCisgICAgICAgIGlmIHNlbGYudXNlc19zdWJtb2R1bGVzKHVkLCBkLCB1ZC5kZXN0ZGlyKToKICAgICAgICAgICAgIHJ1bmZldGNoY21kKHVkLmJhc2VjbWQgKyAiIGNoZWNrb3V0ICIgKyB1ZC5yZXZpc2lvbnNbdWQubmFtZXNbMF1dLCBkLCB3b3JrZGlyPXVkLmRlc3RkaXIpCiAgICAgICAgICAgICBydW5mZXRjaGNtZCh1ZC5iYXNlY21kICsgIiBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZSIsIGQsIHdvcmtkaXI9dWQuZGVzdGRpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvaGcucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CmluZGV4IGI1ZjI2ODYuLmQwODU3ZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvaGcucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weQpAQCAtNzYsOCArNzYsOSBAQAogICAgICAgICAjIENyZWF0ZSBwYXRocyB0byBtZXJjdXJpYWwgY2hlY2tvdXRzCiAgICAgICAgIGhnc3JjbmFtZSA9ICclc18lc18lcycgJSAodWQubW9kdWxlLnJlcGxhY2UoJy8nLCAnLicpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWQuaG9zdCwgdWQucGF0aC5yZXBsYWNlKCcvJywgJy4nKSkKLSAgICAgICAgdWQubWlycm9ydGFyYmFsbCA9ICdoZ18lcy50YXIuZ3onICUgaGdzcmNuYW1lCi0gICAgICAgIHVkLmZ1bGxtaXJyb3IgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRMX0RJUiIpLCB1ZC5taXJyb3J0YXJiYWxsKQorICAgICAgICBtaXJyb3J0YXJiYWxsID0gJ2hnXyVzLnRhci5neicgJSBoZ3NyY25hbWUKKyAgICAgICAgdWQuZnVsbG1pcnJvciA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIG1pcnJvcnRhcmJhbGwpCisgICAgICAgIHVkLm1pcnJvcnRhcmJhbGxzID0gW21pcnJvcnRhcmJhbGxdCiAKICAgICAgICAgaGdkaXIgPSBkLmdldFZhcigiSEdESVIiKSBvciAoZC5nZXRWYXIoIkRMX0RJUiIpICsgIi9oZy8iKQogICAgICAgICB1ZC5wa2dkaXIgPSBvcy5wYXRoLmpvaW4oaGdkaXIsIGhnc3JjbmFtZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkKaW5kZXggNzNhNzVmZS4uYjVmMTQ4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkKQEAgLTkxLDkgKzkxLDEwIEBACiAgICAgICAgIHVkLnByZWZpeGRpciA9IHByZWZpeGRpcgogCiAgICAgICAgIHVkLndyaXRlX3RhcmJhbGxzID0gKChkLmdldFZhcigiQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTIikgb3IgIjAiKSAhPSAiMCIpCi0gICAgICAgIHVkLm1pcnJvcnRhcmJhbGwgPSAnbnBtXyVzLSVzLnRhci54eicgJSAodWQucGtnbmFtZSwgdWQudmVyc2lvbikKLSAgICAgICAgdWQubWlycm9ydGFyYmFsbCA9IHVkLm1pcnJvcnRhcmJhbGwucmVwbGFjZSgnLycsICctJykKLSAgICAgICAgdWQuZnVsbG1pcnJvciA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIHVkLm1pcnJvcnRhcmJhbGwpCisgICAgICAgIG1pcnJvcnRhcmJhbGwgPSAnbnBtXyVzLSVzLnRhci54eicgJSAodWQucGtnbmFtZSwgdWQudmVyc2lvbikKKyAgICAgICAgbWlycm9ydGFyYmFsbCA9IG1pcnJvcnRhcmJhbGwucmVwbGFjZSgnLycsICctJykKKyAgICAgICAgdWQuZnVsbG1pcnJvciA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIG1pcnJvcnRhcmJhbGwpCisgICAgICAgIHVkLm1pcnJvcnRhcmJhbGxzID0gW21pcnJvcnRhcmJhbGxdCiAKICAgICBkZWYgbmVlZF91cGRhdGUoc2VsZiwgdWQsIGQpOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpOgpAQCAtMjYyLDI2ICsyNjMsMjcgQEAKICAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0YXIgLXhKZiAlcyIgJSAodWQuZnVsbG1pcnJvciksIGQsIHdvcmtkaXI9ZGVzdCkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIHNod3JmID0gZC5nZXRWYXIoJ05QTV9TSFJJTktXUkFQJykKLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJOUE0gc2hyaW5rd3JhcCBmaWxlIGlzICVzIiAlIHNod3JmKQotICAgICAgICBpZiBzaHdyZjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2h3cmYpIGFzIGRhdGFmaWxlOgotICAgICAgICAgICAgICAgICAgICBzaHJpbmtvYmogPSBqc29uLmxvYWQoZGF0YWZpbGUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcignRXJyb3IgbG9hZGluZyBOUE1fU0hSSU5LV1JBUCBmaWxlICIlcyIgZm9yICVzOiAlcycgJSAoc2h3cmYsIHVkLnBrZ25hbWUsIHN0cihlKSkpCi0gICAgICAgIGVsaWYgbm90IHVkLmlnbm9yZV9jaGVja3N1bXM6Ci0gICAgICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBzaHJpbmt3cmFwIGZpbGUgaW4gTlBNX1NIUklOS1dSQVAgZm9yICVzLCB0aGlzIHdpbGwgbGVhZCB0byB1bnJlbGlhYmxlIGJ1aWxkcyEnICUgdWQucGtnbmFtZSkKLSAgICAgICAgbGNrZGYgPSBkLmdldFZhcignTlBNX0xPQ0tET1dOJykKLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJOUE0gbG9ja2Rvd24gZmlsZSBpcyAlcyIgJSBsY2tkZikKLSAgICAgICAgaWYgbGNrZGY6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxja2RmKSBhcyBkYXRhZmlsZToKLSAgICAgICAgICAgICAgICAgICAgbG9ja2Rvd24gPSBqc29uLmxvYWQoZGF0YWZpbGUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcignRXJyb3IgbG9hZGluZyBOUE1fTE9DS0RPV04gZmlsZSAiJXMiIGZvciAlczogJXMnICUgKGxja2RmLCB1ZC5wa2duYW1lLCBzdHIoZSkpKQotICAgICAgICBlbGlmIG5vdCB1ZC5pZ25vcmVfY2hlY2tzdW1zOgotICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ01pc3NpbmcgbG9ja2Rvd24gZmlsZSBpbiBOUE1fTE9DS0RPV04gZm9yICVzLCB0aGlzIHdpbGwgbGVhZCB0byB1bnJlcHJvZHVjaWJsZSBidWlsZHMhJyAlIHVkLnBrZ25hbWUpCisgICAgICAgIGlmIHVkLnBhcm0uZ2V0KCJub3ZlcmlmeSIsIE5vbmUpICE9ICcxJzoKKyAgICAgICAgICAgIHNod3JmID0gZC5nZXRWYXIoJ05QTV9TSFJJTktXUkFQJykKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiTlBNIHNocmlua3dyYXAgZmlsZSBpcyAlcyIgJSBzaHdyZikKKyAgICAgICAgICAgIGlmIHNod3JmOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNod3JmKSBhcyBkYXRhZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNocmlua29iaiA9IGpzb24ubG9hZChkYXRhZmlsZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoJ0Vycm9yIGxvYWRpbmcgTlBNX1NIUklOS1dSQVAgZmlsZSAiJXMiIGZvciAlczogJXMnICUgKHNod3JmLCB1ZC5wa2duYW1lLCBzdHIoZSkpKQorICAgICAgICAgICAgZWxpZiBub3QgdWQuaWdub3JlX2NoZWNrc3VtczoKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBzaHJpbmt3cmFwIGZpbGUgaW4gTlBNX1NIUklOS1dSQVAgZm9yICVzLCB0aGlzIHdpbGwgbGVhZCB0byB1bnJlbGlhYmxlIGJ1aWxkcyEnICUgdWQucGtnbmFtZSkKKyAgICAgICAgICAgIGxja2RmID0gZC5nZXRWYXIoJ05QTV9MT0NLRE9XTicpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBsb2NrZG93biBmaWxlIGlzICVzIiAlIGxja2RmKQorICAgICAgICAgICAgaWYgbGNrZGY6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGNrZGYpIGFzIGRhdGFmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2Rvd24gPSBqc29uLmxvYWQoZGF0YWZpbGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdFcnJvciBsb2FkaW5nIE5QTV9MT0NLRE9XTiBmaWxlICIlcyIgZm9yICVzOiAlcycgJSAobGNrZGYsIHVkLnBrZ25hbWUsIHN0cihlKSkpCisgICAgICAgICAgICBlbGlmIG5vdCB1ZC5pZ25vcmVfY2hlY2tzdW1zOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIGxvY2tkb3duIGZpbGUgaW4gTlBNX0xPQ0tET1dOIGZvciAlcywgdGhpcyB3aWxsIGxlYWQgdG8gdW5yZXByb2R1Y2libGUgYnVpbGRzIScgJSB1ZC5wa2duYW1lKQogCiAgICAgICAgIGlmICgnbmFtZScgbm90IGluIHNocmlua29iaik6CiAgICAgICAgICAgICBzZWxmLl9nZXRkZXBlbmRlbmNpZXModWQucGtnbmFtZSwganNvbmRlcG9iaiwgdWQudmVyc2lvbiwgZCwgdWQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3JlcG8ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3JlcG8ucHkKaW5kZXggMWJlOTFjYy4uYzIyZDliNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9yZXBvLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcmVwby5weQpAQCAtMjcsNiArMjcsNyBAQAogaW1wb3J0IGJiCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZAogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKK2Zyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogCiBjbGFzcyBSZXBvKEZldGNoTWV0aG9kKToKICAgICAiIiJDbGFzcyB0byBmZXRjaCBhIG1vZHVsZSBvciBtb2R1bGVzIGZyb20gcmVwbyAoZ2l0KSByZXBvc2l0b3JpZXMiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weQppbmRleCBhZTBmZmE4Li43YzQ5YzJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5CkBAIC0zMCw2ICszMCw3IEBACiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IG9zCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IGVycm5vCiBpbXBvcnQgYmIKIGltcG9ydCBiYi5wcm9ncmVzcwogaW1wb3J0IHVybGxpYi5yZXF1ZXN0LCB1cmxsaWIucGFyc2UsIHVybGxpYi5lcnJvcgpAQCAtODksMTMgKzkwLDEzIEBACiAKICAgICAgICAgc2VsZi5iYXNlY21kID0gZC5nZXRWYXIoIkZFVENIQ01EX3dnZXQiKSBvciAiL3Vzci9iaW4vZW52IHdnZXQgLXQgMiAtVCAzMCAtLXBhc3NpdmUtZnRwIC0tbm8tY2hlY2stY2VydGlmaWNhdGUiCiAKLSAgICBkZWYgX3J1bndnZXQoc2VsZiwgdWQsIGQsIGNvbW1hbmQsIHF1aWV0KToKKyAgICBkZWYgX3J1bndnZXQoc2VsZiwgdWQsIGQsIGNvbW1hbmQsIHF1aWV0LCB3b3JrZGlyPU5vbmUpOgogCiAgICAgICAgIHByb2dyZXNzaGFuZGxlciA9IFdnZXRQcm9ncmVzc0hhbmRsZXIoZCkKIAogICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkZldGNoaW5nICVzIHVzaW5nIGNvbW1hbmQgJyVzJyIgJSAodWQudXJsLCBjb21tYW5kKSkKICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIGNvbW1hbmQsIHVkLnVybCkKLSAgICAgICAgcnVuZmV0Y2hjbWQoY29tbWFuZCArICcgLS1wcm9ncmVzcz1kb3QgLXYnLCBkLCBxdWlldCwgbG9nPXByb2dyZXNzaGFuZGxlcikKKyAgICAgICAgcnVuZmV0Y2hjbWQoY29tbWFuZCArICcgLS1wcm9ncmVzcz1kb3QgLXYnLCBkLCBxdWlldCwgbG9nPXByb2dyZXNzaGFuZGxlciwgd29ya2Rpcj13b3JrZGlyKQogCiAgICAgZGVmIGRvd25sb2FkKHNlbGYsIHVkLCBkKToKICAgICAgICAgIiIiRmV0Y2ggdXJscyIiIgpAQCAtMjA2LDggKzIwNywyMSBAQAogICAgICAgICAgICAgICAgICAgICBoLnJlcXVlc3QocmVxLmdldF9tZXRob2QoKSwgcmVxLnNlbGVjdG9yLCByZXEuZGF0YSwgaGVhZGVycykKICAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjogIyBYWFggd2hhdCBlcnJvcj8KICAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBjbG9zZSBjb25uZWN0aW9uIHdoZW4gY2FjaGUgaXMgZW5hYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgIyBJbnN0ZWFkLCB0cnkgdG8gZGV0ZWN0IGNvbm5lY3Rpb25zIHRoYXQgYXJlIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICAjIHVzYWJsZSAoZm9yIGV4YW1wbGUsIGNsb3NlZCB1bmV4cGVjdGVkbHkpIGFuZCByZW1vdmUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGVtIGZyb20gdGhlIGNhY2hlLgogICAgICAgICAgICAgICAgICAgICBpZiBmZXRjaC5jb25uZWN0aW9uX2NhY2hlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGVyciwgT1NFcnJvcikgYW5kIGVyci5lcnJubyA9PSBlcnJuby5FQkFERjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIHdoZW4gdGhlIHNlcnZlciBjbG9zZXMgdGhlIGNvbm5lY3Rpb24gZGVzcGl0ZSB0aGUgS2VlcC1BbGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwYXJlbnRseSB1cmxsaWIgdGhlbiB1c2VzIHRoZSBmaWxlIGRlc2NyaXB0b3IsIGV4cGVjdGluZyBpdCB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBjb25uZWN0ZWQsIHdoZW4gaW4gcmVhbGl0eSB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IGdvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGxldCB0aGUgcmVxdWVzdCBmYWlsIGFuZCBleHBlY3QgaXQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdHJpZWQgb25jZSBtb3JlICgidHJ5X2FnYWluIiBpbiBjaGVja19zdGF0dXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggdGhlIGRlYWQgY29ubmVjdGlvbiByZW1vdmVkIGZyb20gdGhlIGNhY2hlLgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBpdCBzdGlsbCBmYWlscywgd2UgZ2l2ZSB1cCwgd2hpY2ggY2FuIGhhcHBlbmQgZm9yIGJhZAorICAgICAgICAgICAgICAgICAgICAgICAgIyBIVFRQIHByb3h5IHNldHRpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2guY29ubmVjdGlvbl9jYWNoZS5yZW1vdmVfY29ubmVjdGlvbihoLmhvc3QsIGgucG9ydCkKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgdXJsbGliLmVycm9yLlVSTEVycm9yKGVycikKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB0cnk6CkBAIC0yNjksMTEgKzI4Myw2IEBACiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGh0dHBfZXJyb3JfNDAzID0gaHR0cF9lcnJvcl80MDUKIAotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBTb21lIHNlcnZlcnMgKGUuZy4gRnVzaW9uRm9yZ2UpIHJldHVybnMgNDA2IE5vdCBBY2NlcHRhYmxlIHdoZW4gdGhleQotICAgICAgICAgICAgYWN0dWFsbHkgbWVhbiA0MDUgTWV0aG9kIE5vdCBBbGxvd2VkLgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBodHRwX2Vycm9yXzQwNiA9IGh0dHBfZXJyb3JfNDA1CiAKICAgICAgICAgY2xhc3MgRml4ZWRIVFRQUmVkaXJlY3RIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBSZWRpcmVjdEhhbmRsZXIpOgogICAgICAgICAgICAgIiIiCkBAIC0zMDIsNyArMzExLDkgQEAKICAgICAgICAgICAgIHVyaSA9IHVkLnVybC5zcGxpdCgiOyIpWzBdCiAgICAgICAgICAgICByID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCh1cmkpCiAgICAgICAgICAgICByLmdldF9tZXRob2QgPSBsYW1iZGE6ICJIRUFEIgotCisgICAgICAgICAgICAjIFNvbWUgc2VydmVycyAoRnVzaW9uRm9yZ2UsIGFzIHVzZWQgb24gQWxpb3RoKSByZXF1aXJlIHRoYXQgdGhlCisgICAgICAgICAgICAjIG9wdGlvbmFsIEFjY2VwdCBoZWFkZXIgaXMgc2V0LgorICAgICAgICAgICAgci5hZGRfaGVhZGVyKCJBY2NlcHQiLCAiKi8qIikKICAgICAgICAgICAgIGRlZiBhZGRfYmFzaWNfYXV0aChsb2dpbl9zdHIsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgICcnJ0FkZHMgQmFzaWMgYXV0aCB0byBodHRwIHJlcXVlc3QsIHBhc3MgaW4gbG9naW46cGFzc3dvcmQgYXMgc3RyaW5nJycnCiAgICAgICAgICAgICAgICAgaW1wb3J0IGJhc2U2NApAQCAtNDA4LDE3ICs0MTksMTYgQEAKICAgICAgICAgUnVuIGZldGNoIGNoZWNrc3RhdHVzIHRvIGdldCBkaXJlY3RvcnkgaW5mb3JtYXRpb24KICAgICAgICAgIiIiCiAgICAgICAgIGYgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXg9IndnZXQtaW5kZXgtIikgYXMgd29ya2RpciwgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRpcj13b3JrZGlyLCBwcmVmaXg9IndnZXQtbGlzdGluZy0iKSBhcyBmOgorICAgICAgICAgICAgYWdlbnQgPSAiTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjEyKSBHZWNrby8yMDEwMTAyNyBVYnVudHUvOS4xMCAoa2FybWljKSBGaXJlZm94LzMuNi4xMiIKKyAgICAgICAgICAgIGZldGNoY21kID0gc2VsZi5iYXNlY21kCisgICAgICAgICAgICBmZXRjaGNtZCArPSAiIC1PICIgKyBmLm5hbWUgKyAiIC0tdXNlci1hZ2VudD0nIiArIGFnZW50ICsgIicgJyIgKyB1cmkgKyAiJyIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9ydW53Z2V0KHVkLCBkLCBmZXRjaGNtZCwgVHJ1ZSwgd29ya2Rpcj13b3JrZGlyKQorICAgICAgICAgICAgICAgIGZldGNocmVzdWx0ID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBmZXRjaHJlc3VsdCA9ICIiCiAKLSAgICAgICAgYWdlbnQgPSAiTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjEyKSBHZWNrby8yMDEwMTAyNyBVYnVudHUvOS4xMCAoa2FybWljKSBGaXJlZm94LzMuNi4xMiIKLSAgICAgICAgZmV0Y2hjbWQgPSBzZWxmLmJhc2VjbWQKLSAgICAgICAgZmV0Y2hjbWQgKz0gIiAtTyAiICsgZi5uYW1lICsgIiAtLXVzZXItYWdlbnQ9JyIgKyBhZ2VudCArICInICciICsgdXJpICsgIiciCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3J1bndnZXQodWQsIGQsIGZldGNoY21kLCBUcnVlKQotICAgICAgICAgICAgZmV0Y2hyZXN1bHQgPSBmLnJlYWQoKQotICAgICAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb246Ci0gICAgICAgICAgICBmZXRjaHJlc3VsdCA9ICIiCi0KLSAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiBmZXRjaHJlc3VsdAogCiAgICAgZGVmIF9jaGVja19sYXRlc3RfdmVyc2lvbihzZWxmLCB1cmwsIHBhY2thZ2UsIHBhY2thZ2VfcmVnZXgsIGN1cnJlbnRfdmVyc2lvbiwgdWQsIGQpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21haW4ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvbWFpbi5weQppbmRleCA4Yzk0OGMyLi43NzExYjI5IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvbWFpbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvbWFpbi5weQpAQCAtMjgsNiArMjgsOCBAQAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBmY250bAoraW1wb3J0IHRpbWUKK2ltcG9ydCB0cmFjZWJhY2sKIAogaW1wb3J0IGJiCiBmcm9tIGJiIGltcG9ydCBldmVudApAQCAtMzcsMTEgKzM5LDE3IEBACiBmcm9tIGJiIGltcG9ydCBzZXJ2ZXIKIGZyb20gYmIgaW1wb3J0IGNvb2tlcmRhdGEKIAoraW1wb3J0IGJiLnNlcnZlci5wcm9jZXNzCitpbXBvcnQgYmIuc2VydmVyLnhtbHJwY2NsaWVudAorCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZSIpCiAKIGNsYXNzIEJCTWFpbkV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgIHBhc3MKIAorY2xhc3MgQkJNYWluRmF0YWwoYmIuQkJIYW5kbGVkRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGRlZiBwcmVzZW50X29wdGlvbnMob3B0aW9ubGlzdCk6CiAgICAgaWYgbGVuKG9wdGlvbmxpc3QpID4gMToKICAgICAgICAgcmV0dXJuICcgb3IgJy5qb2luKFsnLCAnLmpvaW4ob3B0aW9ubGlzdFs6LTFdKSwgb3B0aW9ubGlzdFstMV1dKQpAQCAtNTgsOSArNjYsNiBAQAogICAgICAgICBpZiBvcHRpb24uZGVzdCA9PSAndWknOgogICAgICAgICAgICAgdmFsaWRfdWlzID0gbGlzdF9leHRlbnNpb25fbW9kdWxlcyhiYi51aSwgJ21haW4nKQogICAgICAgICAgICAgb3B0aW9uLmhlbHAgPSBvcHRpb24uaGVscC5yZXBsYWNlKCdAQ0hPSUNFU0AnLCBwcmVzZW50X29wdGlvbnModmFsaWRfdWlzKSkKLSAgICAgICAgZWxpZiBvcHRpb24uZGVzdCA9PSAnc2VydmVydHlwZSc6Ci0gICAgICAgICAgICB2YWxpZF9zZXJ2ZXJfdHlwZXMgPSBsaXN0X2V4dGVuc2lvbl9tb2R1bGVzKGJiLnNlcnZlciwgJ0JpdEJha2VTZXJ2ZXInKQotICAgICAgICAgICAgb3B0aW9uLmhlbHAgPSBvcHRpb24uaGVscC5yZXBsYWNlKCdAQ0hPSUNFU0AnLCBwcmVzZW50X29wdGlvbnModmFsaWRfc2VydmVyX3R5cGVzKSkKIAogICAgICAgICByZXR1cm4gb3B0cGFyc2UuSW5kZW50ZWRIZWxwRm9ybWF0dGVyLmZvcm1hdF9vcHRpb24oc2VsZiwgb3B0aW9uKQogCkBAIC0xNDgsMTEgKzE1Myw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCBhbmQgYW55dGhpbmcgZGVwZW5kaW5nIG9uIGl0IGNhbm5vdCBiZSBidWlsdCwgYXMgbXVjaCBhcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc3NpYmxlIHdpbGwgYmUgYnVpbHQgYmVmb3JlIHN0b3BwaW5nLiIpCiAKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1hIiwgIi0tdHJ5YWx0Y29uZmlncyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9InRyeWFsdGNvbmZpZ3MiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJDb250aW51ZSB3aXRoIGJ1aWxkcyBieSB0cnlpbmcgdG8gdXNlIGFsdGVybmF0aXZlIHByb3ZpZGVycyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndoZXJlIHBvc3NpYmxlLiIpCi0KICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1mIiwgIi0tZm9yY2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3JjZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkZvcmNlIHRoZSBzcGVjaWZpZWQgdGFyZ2V0cy90YXNrIHRvIHJ1biAoaW52YWxpZGF0aW5nIGFueSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4aXN0aW5nIHN0YW1wIGZpbGUpLiIpCkBAIC0yMzgsMTEgKzIzOCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9b3MuZW52aXJvbi5nZXQoJ0JJVEJBS0VfVUknLCAna25vdHR5JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlRoZSB1c2VyIGludGVyZmFjZSB0byB1c2UgKEBDSE9JQ0VTQCAtIGRlZmF1bHQgJWRlZmF1bHQpLiIpCiAKLSAgICAgICAgIyBAQ0hPSUNFU0AgaXMgc3Vic3RpdHV0ZWQgb3V0IGJ5IEJpdGJha2VIZWxwRm9ybWF0dGVyIGFib3ZlCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItdCIsICItLXNlcnZlcnR5cGUiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0ic2VydmVydHlwZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9WyJwcm9jZXNzIiwgInhtbHJwYyJdWyJCQlNFUlZFUiIgaW4gb3MuZW52aXJvbl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkNob29zZSB3aGljaCBzZXJ2ZXIgdHlwZSB0byB1c2UgKEBDSE9JQ0VTQCAtIGRlZmF1bHQgJWRlZmF1bHQpLiIpCi0KICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXRva2VuIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InhtbHJwY3Rva2VuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1vcy5lbnZpcm9uLmdldCgiQkJUT0tFTiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTcGVjaWZ5IHRoZSBjb25uZWN0aW9uIHRva2VuIHRvIGJlIHVzZWQgd2hlbiBjb25uZWN0aW5nICIKQEAgLTI1OCwxNSArMjUzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJ1biBiaXRiYWtlIHdpdGhvdXQgYSBVSSwgb25seSBzdGFydGluZyBhIHNlcnZlciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihjb29rZXIpIHByb2Nlc3MuIikKIAotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tZm9yZWdyb3VuZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJ1biBiaXRiYWtlIHNlcnZlciBpbiBmb3JlZ3JvdW5kLiIpCi0KICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1CIiwgIi0tYmluZCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJiaW5kIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iVGhlIG5hbWUvYWRkcmVzcyBmb3IgdGhlIGJpdGJha2Ugc2VydmVyIHRvIGJpbmQgdG8uIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iVGhlIG5hbWUvYWRkcmVzcyBmb3IgdGhlIGJpdGJha2UgeG1scnBjIHNlcnZlciB0byBiaW5kIHRvLiIpCiAKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1UIiwgIi0taWRsZS10aW1lb3V0IiwgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9aW50KG9zLmVudmlyb24uZ2V0KCJCQlRJTUVPVVQiLCAiMCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iU2V0IHRpbWVvdXQgdG8gdW5sb2FkIGJpdGJha2Ugc2VydmVyIGR1ZSB0byBpbmFjdGl2aXR5IikKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1UIiwgIi0taWRsZS10aW1lb3V0IiwgdHlwZT1mbG9hdCwgZGVzdD0ic2VydmVyX3RpbWVvdXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PW9zLmdldGVudigiQkJfU0VSVkVSX1RJTUVPVVQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iU2V0IHRpbWVvdXQgdG8gdW5sb2FkIGJpdGJha2Ugc2VydmVyIGR1ZSB0byBpbmFjdGl2aXR5LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXQgdG8gLTEgbWVhbnMgbm8gdW5sb2FkLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0OiBFbnZpcm9ubWVudCB2YXJpYWJsZSBCQl9TRVJWRVJfVElNRU9VVC4iKQogCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1uby1zZXRzY2VuZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9Im5vc2V0c2NlbmUiLCBkZWZhdWx0PUZhbHNlLApAQCAtMjgzLDcgKzI3Nyw3IEBACiAKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgIi0ta2lsbC1zZXJ2ZXIiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJraWxsX3NlcnZlciIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlRlcm1pbmF0ZSB0aGUgcmVtb3RlIHNlcnZlci4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJUZXJtaW5hdGUgYW55IHJ1bm5pbmcgYml0YmFrZSBzZXJ2ZXIuIikKIAogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tb2JzZXJ2ZS1vbmx5IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ib2JzZXJ2ZV9vbmx5IiwgZGVmYXVsdD1GYWxzZSwKQEAgLTMyMiw3MCArMzE2LDIwIEBACiAgICAgICAgICAgICBldmVudGxvZyA9ICJiaXRiYWtlX2V2ZW50bG9nXyVzLmpzb24iICUgZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoIiVZJW0lZCVIJU0lUyIpCiAgICAgICAgICAgICBvcHRpb25zLndyaXRlZXZlbnRsb2cgPSBldmVudGxvZwogCi0gICAgICAgICMgaWYgQkJTRVJWRVIgc2F5cyB0byBhdXRvZGV0ZWN0LCBsZXQncyBkbyB0aGF0Ci0gICAgICAgIGlmIG9wdGlvbnMucmVtb3RlX3NlcnZlcjoKLSAgICAgICAgICAgIHBvcnQgPSAtMQotICAgICAgICAgICAgaWYgb3B0aW9ucy5yZW1vdGVfc2VydmVyICE9ICdhdXRvc3RhcnQnOgotICAgICAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBvcHRpb25zLnJlbW90ZV9zZXJ2ZXIuc3BsaXQoIjoiLCAyKQorICAgICAgICBpZiBvcHRpb25zLmJpbmQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgI0NoZWNraW5nIHRoYXQgdGhlIHBvcnQgaXMgYSBudW1iZXIgYW5kIGlzIGEgJzonIGRlbGltaXRlZCB2YWx1ZQorICAgICAgICAgICAgICAgIChob3N0LCBwb3J0KSA9IG9wdGlvbnMuYmluZC5zcGxpdCgnOicpCiAgICAgICAgICAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgICAgICAgICAgIyB1c2UgYXV0b21hdGljIHBvcnQgaWYgcG9ydCBzZXQgdG8gLTEsIG1lYW5zIHJlYWQgaXQgZnJvbQotICAgICAgICAgICAgIyB0aGUgYml0YmFrZS5sb2NrIGZpbGU7IHRoaXMgaXMgYSBiaXQgdHJpY2t5LCBidXQgd2UgYWx3YXlzIGV4cGVjdAotICAgICAgICAgICAgIyB0byBiZSBpbiB0aGUgYmFzZSBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5IGlmIHdlIG5lZWQgdG8gaGF2ZSBhCi0gICAgICAgICAgICAjIGNoYW5jZSB0byBzdGFydCB0aGUgc2VydmVyIGxhdGVyLCBhbnl3YXkKLSAgICAgICAgICAgIGlmIHBvcnQgPT0gLTE6Ci0gICAgICAgICAgICAgICAgbG9ja19sb2NhdGlvbiA9ICIuL2JpdGJha2UubG9jayIKLSAgICAgICAgICAgICAgICAjIHdlIHRyeSB0byByZWFkIHRoZSBhZGRyZXNzIGF0IGFsbCB0aW1lczsgaWYgdGhlIHNlcnZlciBpcyBub3Qgc3RhcnRlZCwKLSAgICAgICAgICAgICAgICAjIHdlJ2xsIHRyeSB0byBzdGFydCBpdCBhZnRlciB0aGUgZmlyc3QgY29ubmVjdCBmYWlscywgYmVsb3cKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGxmID0gb3Blbihsb2NrX2xvY2F0aW9uLCAncicpCi0gICAgICAgICAgICAgICAgICAgIHJlbW90ZWRlZiA9IGxmLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgW2hvc3QsIHBvcnRdID0gcmVtb3RlZGVmLnNwbGl0KCI6IikKLSAgICAgICAgICAgICAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgICAgICAgICAgICAgICAgICBsZi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucmVtb3RlX3NlcnZlciA9IHJlbW90ZWRlZgotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgb3B0aW9ucy5yZW1vdGVfc2VydmVyICE9ICdhdXRvc3RhcnQnOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQkJNYWluRXhjZXB0aW9uKCJGYWlsZWQgdG8gcmVhZCBiaXRiYWtlLmxvY2sgKCVzKSwgaW52YWxpZCBwb3J0IiAlIHN0cihlKSkKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvcixJbmRleEVycm9yKToKKyAgICAgICAgICAgICAgICByYWlzZSBCQk1haW5FeGNlcHRpb24oIkZBVEFMOiBNYWxmb3JtZWQgaG9zdDpwb3J0IGJpbmQgcGFyYW1ldGVyIikKKyAgICAgICAgICAgIG9wdGlvbnMueG1scnBjaW50ZXJmYWNlID0gKGhvc3QsIHBvcnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcHRpb25zLnhtbHJwY2ludGVyZmFjZSA9IChOb25lLCAwKQogCiAgICAgICAgIHJldHVybiBvcHRpb25zLCB0YXJnZXRzWzE6XQogCiAKLWRlZiBzdGFydF9zZXJ2ZXIoc2VydmVybW9kdWxlLCBjb25maWdQYXJhbXMsIGNvbmZpZ3VyYXRpb24sIGZlYXR1cmVzKToKLSAgICBzZXJ2ZXIgPSBzZXJ2ZXJtb2R1bGUuQml0QmFrZVNlcnZlcigpCi0gICAgc2luZ2xlX3VzZSA9IG5vdCBjb25maWdQYXJhbXMuc2VydmVyX29ubHkgYW5kIG9zLmdldGVudignQkJTRVJWRVInKSAhPSAnYXV0b3N0YXJ0JwotICAgIGlmIGNvbmZpZ1BhcmFtcy5iaW5kOgotICAgICAgICAoaG9zdCwgcG9ydCkgPSBjb25maWdQYXJhbXMuYmluZC5zcGxpdCgnOicpCi0gICAgICAgIHNlcnZlci5pbml0U2VydmVyKChob3N0LCBpbnQocG9ydCkpLCBzaW5nbGVfdXNlPXNpbmdsZV91c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlkbGVfdGltZW91dD1jb25maWdQYXJhbXMuaWRsZV90aW1lb3V0KQotICAgICAgICBjb25maWd1cmF0aW9uLmludGVyZmFjZSA9IFtzZXJ2ZXIuc2VydmVySW1wbC5ob3N0LCBzZXJ2ZXIuc2VydmVySW1wbC5wb3J0XQotICAgIGVsc2U6Ci0gICAgICAgIHNlcnZlci5pbml0U2VydmVyKHNpbmdsZV91c2U9c2luZ2xlX3VzZSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5pbnRlcmZhY2UgPSBbXQotCi0gICAgdHJ5OgotICAgICAgICBjb25maWd1cmF0aW9uLnNldFNlcnZlclJlZ0lkbGVDYWxsYmFjayhzZXJ2ZXIuZ2V0U2VydmVySWRsZUNCKCkpCi0KLSAgICAgICAgY29va2VyID0gYmIuY29va2VyLkJCQ29va2VyKGNvbmZpZ3VyYXRpb24sIGZlYXR1cmVzKQotCi0gICAgICAgIHNlcnZlci5hZGRjb29rZXIoY29va2VyKQotICAgICAgICBzZXJ2ZXIuc2F2ZUNvbm5lY3Rpb25EZXRhaWxzKCkKLSAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgIHdoaWxlIGhhc2F0dHIoc2VydmVyLCAiZXZlbnRfcXVldWUiKToKLSAgICAgICAgICAgIGltcG9ydCBxdWV1ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLmV2ZW50X3F1ZXVlLmdldChibG9jaz1GYWxzZSkKLSAgICAgICAgICAgIGV4Y2VwdCAocXVldWUuRW1wdHksIElPRXJyb3IpOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBsb2dnaW5nLkxvZ1JlY29yZCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKLSAgICAgICAgcmFpc2UKLSAgICBpZiBub3QgY29uZmlnUGFyYW1zLmZvcmVncm91bmQ6Ci0gICAgICAgIHNlcnZlci5kZXRhY2goKQotICAgICAgICBjb29rZXIuc2h1dGRvd24oKQotICAgIGNvb2tlci5sb2NrLmNsb3NlKCkKLSAgICByZXR1cm4gc2VydmVyCi0KLQogZGVmIGJpdGJha2VfbWFpbihjb25maWdQYXJhbXMsIGNvbmZpZ3VyYXRpb24pOgogCiAgICAgIyBQeXRob24gbXVsdGlwcm9jZXNzaW5nIHJlcXVpcmVzIC9kZXYvc2htIG9uIExpbnV4CkBAIC00MDYsNDUgKzM1MCwxNSBAQAogCiAgICAgY29uZmlndXJhdGlvbi5zZXRDb25maWdQYXJhbWV0ZXJzKGNvbmZpZ1BhcmFtcykKIAotICAgIGlmIGNvbmZpZ1BhcmFtcy5zZXJ2ZXJfb25seToKLSAgICAgICAgaWYgY29uZmlnUGFyYW1zLnNlcnZlcnR5cGUgIT0gInhtbHJwYyI6Ci0gICAgICAgICAgICByYWlzZSBCQk1haW5FeGNlcHRpb24oIkZBVEFMOiBJZiAnLS1zZXJ2ZXItb25seScgaXMgZGVmaW5lZCwgd2UgbXVzdCBzZXQgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VydmVydHlwZSBhcyAneG1scnBjJy5cbiIpCi0gICAgICAgIGlmIG5vdCBjb25maWdQYXJhbXMuYmluZDoKLSAgICAgICAgICAgIHJhaXNlIEJCTWFpbkV4Y2VwdGlvbigiRkFUQUw6IFRoZSAnLS1zZXJ2ZXItb25seScgb3B0aW9uIHJlcXVpcmVzIGEgbmFtZS9hZGRyZXNzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG8gYmluZCB0byB3aXRoIHRoZSAtQiBvcHRpb24uXG4iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICNDaGVja2luZyB0aGF0IHRoZSBwb3J0IGlzIGEgbnVtYmVyCi0gICAgICAgICAgICAgICAgaW50KGNvbmZpZ1BhcmFtcy5iaW5kLnNwbGl0KCI6IilbMV0pCi0gICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsSW5kZXhFcnJvcik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQkJNYWluRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgIkZBVEFMOiBNYWxmb3JtZWQgaG9zdDpwb3J0IGJpbmQgcGFyYW1ldGVyIikKLSAgICAgICAgaWYgY29uZmlnUGFyYW1zLnJlbW90ZV9zZXJ2ZXI6CisgICAgaWYgY29uZmlnUGFyYW1zLnNlcnZlcl9vbmx5IGFuZCBjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlcjoKICAgICAgICAgICAgIHJhaXNlIEJCTWFpbkV4Y2VwdGlvbigiRkFUQUw6IFRoZSAnLS1zZXJ2ZXItb25seScgb3B0aW9uIGNvbmZsaWN0cyB3aXRoICVzLlxuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0aGUgQkJTRVJWRVIgZW52aXJvbm1lbnQgdmFyaWFibGUiIGlmICJCQlNFUlZFUiIgaW4gb3MuZW52aXJvbiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgInRoZSAnLS1yZW1vdGUtc2VydmVyJyBvcHRpb24iKSkKIAotICAgIGVsaWYgY29uZmlnUGFyYW1zLmZvcmVncm91bmQ6Ci0gICAgICAgIHJhaXNlIEJCTWFpbkV4Y2VwdGlvbigiRkFUQUw6IFRoZSAnLS1mb3JlZ3JvdW5kJyBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCAtLXNlcnZlci1vbmx5LlxuIikKLQotICAgIGlmIGNvbmZpZ1BhcmFtcy5iaW5kIGFuZCBjb25maWdQYXJhbXMuc2VydmVydHlwZSAhPSAieG1scnBjIjoKLSAgICAgICAgcmFpc2UgQkJNYWluRXhjZXB0aW9uKCJGQVRBTDogSWYgJy1CJyBvciAnLS1iaW5kJyBpcyBkZWZpbmVkLCB3ZSBtdXN0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXQgdGhlIHNlcnZlcnR5cGUgYXMgJ3htbHJwYycuXG4iKQotCi0gICAgaWYgY29uZmlnUGFyYW1zLnJlbW90ZV9zZXJ2ZXIgYW5kIGNvbmZpZ1BhcmFtcy5zZXJ2ZXJ0eXBlICE9ICJ4bWxycGMiOgotICAgICAgICByYWlzZSBCQk1haW5FeGNlcHRpb24oIkZBVEFMOiBJZiAnLS1yZW1vdGUtc2VydmVyJyBpcyBkZWZpbmVkLCB3ZSBtdXN0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXQgdGhlIHNlcnZlcnR5cGUgYXMgJ3htbHJwYycuXG4iKQotCi0gICAgaWYgY29uZmlnUGFyYW1zLm9ic2VydmVfb25seSBhbmQgKG5vdCBjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlciBvciBjb25maWdQYXJhbXMuYmluZCk6CisgICAgaWYgY29uZmlnUGFyYW1zLm9ic2VydmVfb25seSBhbmQgbm90IChjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlciBvciBjb25maWdQYXJhbXMuYmluZCk6CiAgICAgICAgIHJhaXNlIEJCTWFpbkV4Y2VwdGlvbigiRkFUQUw6ICctLW9ic2VydmUtb25seScgY2FuIG9ubHkgYmUgdXNlZCBieSBVSSBjbGllbnRzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25uZWN0aW5nIHRvIGEgc2VydmVyLlxuIikKIAotICAgIGlmIGNvbmZpZ1BhcmFtcy5raWxsX3NlcnZlciBhbmQgbm90IGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyOgotICAgICAgICByYWlzZSBCQk1haW5FeGNlcHRpb24oIkZBVEFMOiAnLS1raWxsLXNlcnZlcicgY2FuIG9ubHkgYmUgdXNlZCB0byAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVybWluYXRlIGEgcmVtb3RlIHNlcnZlciIpCi0KICAgICBpZiAiQkJERUJVRyIgaW4gb3MuZW52aXJvbjoKICAgICAgICAgbGV2ZWwgPSBpbnQob3MuZW52aXJvblsiQkJERUJVRyJdKQogICAgICAgICBpZiBsZXZlbCA+IGNvbmZpZ3VyYXRpb24uZGVidWc6CkBAIC00NTMsOSArMzY3LDEzIEBACiAgICAgYmIubXNnLmluaXRfbXNnY29uZmlnKGNvbmZpZ1BhcmFtcy52ZXJib3NlLCBjb25maWd1cmF0aW9uLmRlYnVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLmRlYnVnX2RvbWFpbnMpCiAKLSAgICBzZXJ2ZXIsIHNlcnZlcl9jb25uZWN0aW9uLCB1aV9tb2R1bGUgPSBzZXR1cF9iaXRiYWtlKGNvbmZpZ1BhcmFtcywgY29uZmlndXJhdGlvbikKLSAgICBpZiBzZXJ2ZXJfY29ubmVjdGlvbiBpcyBOb25lIGFuZCBjb25maWdQYXJhbXMua2lsbF9zZXJ2ZXI6Ci0gICAgICAgIHJldHVybiAwCisgICAgc2VydmVyX2Nvbm5lY3Rpb24sIHVpX21vZHVsZSA9IHNldHVwX2JpdGJha2UoY29uZmlnUGFyYW1zLCBjb25maWd1cmF0aW9uKQorICAgICMgTm8gc2VydmVyIGNvbm5lY3Rpb24KKyAgICBpZiBzZXJ2ZXJfY29ubmVjdGlvbiBpcyBOb25lOgorICAgICAgICBpZiBjb25maWdQYXJhbXMuc3RhdHVzX29ubHk6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBpZiBjb25maWdQYXJhbXMua2lsbF9zZXJ2ZXI6CisgICAgICAgICAgICByZXR1cm4gMAogCiAgICAgaWYgbm90IGNvbmZpZ1BhcmFtcy5zZXJ2ZXJfb25seToKICAgICAgICAgaWYgY29uZmlnUGFyYW1zLnN0YXR1c19vbmx5OgpAQCAtNDYzLDE2ICszODEsMTUgQEAKICAgICAgICAgICAgIHJldHVybiAwCiAKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGV2ZW50IGluIGJiLmV2ZW50LnVpX3F1ZXVlOgorICAgICAgICAgICAgICAgIHNlcnZlcl9jb25uZWN0aW9uLmV2ZW50cy5xdWV1ZV9ldmVudChldmVudCkKKyAgICAgICAgICAgIGJiLmV2ZW50LnVpX3F1ZXVlID0gW10KKwogICAgICAgICAgICAgcmV0dXJuIHVpX21vZHVsZS5tYWluKHNlcnZlcl9jb25uZWN0aW9uLmNvbm5lY3Rpb24sIHNlcnZlcl9jb25uZWN0aW9uLmV2ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdQYXJhbXMpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBiYi5ldmVudC51aV9xdWV1ZSA9IFtdCiAgICAgICAgICAgICBzZXJ2ZXJfY29ubmVjdGlvbi50ZXJtaW5hdGUoKQogICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCJCaXRiYWtlIHNlcnZlciBhZGRyZXNzOiAlcywgc2VydmVyIHBvcnQ6ICVzIiAlIChzZXJ2ZXIuc2VydmVySW1wbC5ob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLnNlcnZlckltcGwucG9ydCkpCi0gICAgICAgIGlmIGNvbmZpZ1BhcmFtcy5mb3JlZ3JvdW5kOgotICAgICAgICAgICAgc2VydmVyLnNlcnZlckltcGwuc2VydmVfZm9yZXZlcigpCiAgICAgICAgIHJldHVybiAwCiAKICAgICByZXR1cm4gMQpAQCAtNDk1LDU4ICs0MTIsOTMgQEAKICAgICAgICAgIyBDb2xsZWN0IHRoZSBmZWF0dXJlIHNldCBmb3IgdGhlIFVJCiAgICAgICAgIGZlYXR1cmVzZXQgPSBnZXRhdHRyKHVpX21vZHVsZSwgImZlYXR1cmVTZXQiLCBbXSkKIAotICAgIGlmIGNvbmZpZ1BhcmFtcy5zZXJ2ZXJfb25seToKLSAgICAgICAgZm9yIHBhcmFtIGluICgncHJlZmlsZScsICdwb3N0ZmlsZScpOgotICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKGNvbmZpZ1BhcmFtcywgcGFyYW0pCi0gICAgICAgICAgICBpZiB2YWx1ZToKLSAgICAgICAgICAgICAgICBzZXRhdHRyKGNvbmZpZ3VyYXRpb24sICIlc19zZXJ2ZXIiICUgcGFyYW0sIHZhbHVlKQotICAgICAgICAgICAgICAgIHBhcmFtID0gIiVzX3NlcnZlciIgJSBwYXJhbQotCiAgICAgaWYgZXh0cmFmZWF0dXJlczoKICAgICAgICAgZm9yIGZlYXR1cmUgaW4gZXh0cmFmZWF0dXJlczoKICAgICAgICAgICAgIGlmIG5vdCBmZWF0dXJlIGluIGZlYXR1cmVzZXQ6CiAgICAgICAgICAgICAgICAgZmVhdHVyZXNldC5hcHBlbmQoZmVhdHVyZSkKIAotICAgIHNlcnZlcm1vZHVsZSA9IGltcG9ydF9leHRlbnNpb25fbW9kdWxlKGJiLnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnUGFyYW1zLnNlcnZlcnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCaXRCYWtlU2VydmVyJykKKyAgICBzZXJ2ZXJfY29ubmVjdGlvbiA9IE5vbmUKKwogICAgIGlmIGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyOgotICAgICAgICBpZiBvcy5nZXRlbnYoJ0JCU0VSVkVSJykgPT0gJ2F1dG9zdGFydCc6Ci0gICAgICAgICAgICBpZiBjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlciA9PSAnYXV0b3N0YXJ0JyBvciBcCi0gICAgICAgICAgICAgICBub3Qgc2VydmVybW9kdWxlLmNoZWNrX2Nvbm5lY3Rpb24oY29uZmlnUGFyYW1zLnJlbW90ZV9zZXJ2ZXIsIHRpbWVvdXQ9Mik6Ci0gICAgICAgICAgICAgICAgY29uZmlnUGFyYW1zLmJpbmQgPSAnbG9jYWxob3N0OjAnCi0gICAgICAgICAgICAgICAgc3J2ID0gc3RhcnRfc2VydmVyKHNlcnZlcm1vZHVsZSwgY29uZmlnUGFyYW1zLCBjb25maWd1cmF0aW9uLCBmZWF0dXJlc2V0KQotICAgICAgICAgICAgICAgIGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyID0gJyVzOiVkJyAlIHR1cGxlKGNvbmZpZ3VyYXRpb24uaW50ZXJmYWNlKQotICAgICAgICAgICAgICAgIGJiLmV2ZW50LnVpX3F1ZXVlID0gW10KLSAgICAgICAgIyB3ZSBzdGFydCBhIHN0dWIgc2VydmVyIHRoYXQgaXMgYWN0dWFsbHkgYSBYTUxSUENsaWVudCB0aGF0IGNvbm5lY3RzIHRvIGEgcmVhbCBzZXJ2ZXIKLSAgICAgICAgZnJvbSBiYi5zZXJ2ZXIueG1scnBjIGltcG9ydCBCaXRCYWtlWE1MUlBDQ2xpZW50Ci0gICAgICAgIHNlcnZlciA9IHNlcnZlcm1vZHVsZS5CaXRCYWtlWE1MUlBDQ2xpZW50KGNvbmZpZ1BhcmFtcy5vYnNlcnZlX29ubHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1BhcmFtcy54bWxycGN0b2tlbikKLSAgICAgICAgc2VydmVyLnNhdmVDb25uZWN0aW9uRGV0YWlscyhjb25maWdQYXJhbXMucmVtb3RlX3NlcnZlcikKKyAgICAgICAgIyBDb25uZWN0IHRvIGEgcmVtb3RlIFhNTFJQQyBzZXJ2ZXIKKyAgICAgICAgc2VydmVyX2Nvbm5lY3Rpb24gPSBiYi5zZXJ2ZXIueG1scnBjY2xpZW50LmNvbm5lY3RYTUxSUEMoY29uZmlnUGFyYW1zLnJlbW90ZV9zZXJ2ZXIsIGZlYXR1cmVzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1BhcmFtcy5vYnNlcnZlX29ubHksIGNvbmZpZ1BhcmFtcy54bWxycGN0b2tlbikKICAgICBlbHNlOgotICAgICAgICAjIHdlIHN0YXJ0IGEgc2VydmVyIHdpdGggYSBnaXZlbiBjb25maWd1cmF0aW9uCi0gICAgICAgIHNlcnZlciA9IHN0YXJ0X3NlcnZlcihzZXJ2ZXJtb2R1bGUsIGNvbmZpZ1BhcmFtcywgY29uZmlndXJhdGlvbiwgZmVhdHVyZXNldCkKKyAgICAgICAgcmV0cmllcyA9IDgKKyAgICAgICAgd2hpbGUgcmV0cmllczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b3BkaXIsIGxvY2sgPSBsb2NrQml0YmFrZSgpCisgICAgICAgICAgICAgICAgc29ja25hbWUgPSB0b3BkaXIgKyAiL2JpdGJha2Uuc29jayIKKyAgICAgICAgICAgICAgICBpZiBsb2NrOgorICAgICAgICAgICAgICAgICAgICBpZiBjb25maWdQYXJhbXMuc3RhdHVzX29ubHkgb3IgY29uZmlnUGFyYW1zLmtpbGxfc2VydmVyOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImJpdGJha2Ugc2VydmVyIGlzIG5vdCBydW5uaW5nLiIpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCisgICAgICAgICAgICAgICAgICAgICMgd2Ugc3RhcnQgYSBzZXJ2ZXIgd2l0aCBhIGdpdmVuIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uIikKKyAgICAgICAgICAgICAgICAgICAgIyBDbGVhciB0aGUgZXZlbnQgcXVldWUgc2luY2Ugd2UgYWxyZWFkeSBkaXNwbGF5ZWQgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQudWlfcXVldWUgPSBbXQorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgPSBiYi5zZXJ2ZXIucHJvY2Vzcy5CaXRCYWtlU2VydmVyKGxvY2ssIHNvY2tuYW1lLCBjb25maWd1cmF0aW9uLCBmZWF0dXJlc2V0KQorCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlJlY29ubmVjdGluZyB0byBiaXRiYWtlIHNlcnZlci4uLiIpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzb2NrbmFtZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiUHJldmlvdXMgYml0YmFrZSBpbnN0YW5jZSBzaHV0dGluZyBkb3duPywgd2FpdGluZyB0byByZXRyeS4uLiIpCisgICAgICAgICAgICAgICAgICAgICAgICBpID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgbG9jayA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgNXMgb3IgdW50aWwgd2UgY2FuIGdldCB0aGUgbG9jaworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgbm90IGxvY2sgYW5kIGkgPCA1MDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLCBsb2NrID0gbG9ja0JpdGJha2UoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9jazoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxvY2spCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBiYi5zZXJ2ZXIucHJvY2Vzcy5Qcm9jZXNzVGltZW91dCgiQml0YmFrZSBzdGlsbCBzaHV0dGluZyBkb3duIGFzIHNvY2tldCBleGlzdHMgYnV0IG5vIGxvY2s/IikKKyAgICAgICAgICAgICAgICBpZiBub3QgY29uZmlnUGFyYW1zLnNlcnZlcl9vbmx5OgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29ubmVjdGlvbiA9IGJiLnNlcnZlci5wcm9jZXNzLmNvbm5lY3RQcm9jZXNzU2VydmVyKHNvY2tuYW1lLCBmZWF0dXJlc2V0KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBzZXJ2ZXIgbWF5IGhhdmUgYmVlbiBzaHV0dGluZyBkb3duIGJ1dCBub3QgY2xvc2VkIHRoZSBzb2NrZXQgeWV0LiBJZiB0aGF0IGhhcHBlbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfY29ubmVjdGlvbiBvciBjb25maWdQYXJhbXMuc2VydmVyX29ubHk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgQkJNYWluRmF0YWw6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGV4Y2VwdCAoRXhjZXB0aW9uLCBiYi5zZXJ2ZXIucHJvY2Vzcy5Qcm9jZXNzVGltZW91dCkgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBub3QgcmV0cmllczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICByZXRyaWVzIC09IDEKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGUsIChiYi5zZXJ2ZXIucHJvY2Vzcy5Qcm9jZXNzVGltZW91dCwgQnJva2VuUGlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSZXRyeWluZyBzZXJ2ZXIgY29ubmVjdGlvbi4uLiIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlJldHJ5aW5nIHNlcnZlciBjb25uZWN0aW9uLi4uICglcykiICUgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAgICAgIGlmIG5vdCByZXRyaWVzOgorICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gY29ubmVjdCB0byBiaXRiYWtlIHNlcnZlciwgb3Igc3RhcnQgb25lIikKKyAgICAgICAgICAgIGlmIHJldHJpZXMgPCA1OgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoNSkKKworICAgIGlmIGNvbmZpZ1BhcmFtcy5raWxsX3NlcnZlcjoKKyAgICAgICAgc2VydmVyX2Nvbm5lY3Rpb24uY29ubmVjdGlvbi50ZXJtaW5hdGVTZXJ2ZXIoKQorICAgICAgICBzZXJ2ZXJfY29ubmVjdGlvbi50ZXJtaW5hdGUoKQogICAgICAgICBiYi5ldmVudC51aV9xdWV1ZSA9IFtdCisgICAgICAgIGxvZ2dlci5pbmZvKCJUZXJtaW5hdGVkIGJpdGJha2Ugc2VydmVyLiIpCisgICAgICAgIHJldHVybiBOb25lLCBOb25lCiAKLSAgICBpZiBjb25maWdQYXJhbXMuc2VydmVyX29ubHk6Ci0gICAgICAgIHNlcnZlcl9jb25uZWN0aW9uID0gTm9uZQotICAgIGVsc2U6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlcnZlcl9jb25uZWN0aW9uID0gc2VydmVyLmVzdGFibGlzaENvbm5lY3Rpb24oZmVhdHVyZXNldCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgYmIuZmF0YWwoIkNvdWxkIG5vdCBjb25uZWN0IHRvIHNlcnZlciAlczogJXMiICUgKGNvbmZpZ1BhcmFtcy5yZW1vdGVfc2VydmVyLCBzdHIoZSkpKQorICAgICMgUmVzdG9yZSB0aGUgZW52aXJvbm1lbnQgaW4gY2FzZSB0aGUgVUkgbmVlZHMgaXQKKyAgICBmb3IgayBpbiBjbGVhbmVkdmFyczoKKyAgICAgICAgb3MuZW52aXJvbltrXSA9IGNsZWFuZWR2YXJzW2tdCiAKLSAgICAgICAgaWYgY29uZmlnUGFyYW1zLmtpbGxfc2VydmVyOgotICAgICAgICAgICAgc2VydmVyX2Nvbm5lY3Rpb24uY29ubmVjdGlvbi50ZXJtaW5hdGVTZXJ2ZXIoKQotICAgICAgICAgICAgYmIuZXZlbnQudWlfcXVldWUgPSBbXQotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKKyAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQogCi0gICAgICAgIHNlcnZlcl9jb25uZWN0aW9uLnNldHVwRXZlbnRRdWV1ZSgpCisgICAgcmV0dXJuIHNlcnZlcl9jb25uZWN0aW9uLCB1aV9tb2R1bGUKIAotICAgICAgICAjIFJlc3RvcmUgdGhlIGVudmlyb25tZW50IGluIGNhc2UgdGhlIFVJIG5lZWRzIGl0Ci0gICAgICAgIGZvciBrIGluIGNsZWFuZWR2YXJzOgotICAgICAgICAgICAgb3MuZW52aXJvbltrXSA9IGNsZWFuZWR2YXJzW2tdCitkZWYgbG9ja0JpdGJha2UoKToKKyAgICB0b3BkaXIgPSBiYi5jb29rZXJkYXRhLmZpbmRUb3BkaXIoKQorICAgIGlmIG5vdCB0b3BkaXI6CisgICAgICAgIGJiLmVycm9yKCJVbmFibGUgdG8gZmluZCBjb25mL2JibGF5ZXJzLmNvbmYgb3IgY29uZi9iaXRiYWtlLmNvbmYuIEJCQVBUSCBpcyB1bnNldCBhbmQvb3Igbm90IGluIGEgYnVpbGQgZGlyZWN0b3J5PyIpCisgICAgICAgIHJhaXNlIEJCTWFpbkZhdGFsCisgICAgbG9ja2ZpbGUgPSB0b3BkaXIgKyAiL2JpdGJha2UubG9jayIKKyAgICByZXR1cm4gdG9wZGlyLCBiYi51dGlscy5sb2NrZmlsZShsb2NrZmlsZSwgRmFsc2UsIEZhbHNlKQogCi0gICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpCi0KLSAgICByZXR1cm4gc2VydmVyLCBzZXJ2ZXJfY29ubmVjdGlvbiwgdWlfbW9kdWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvbXNnLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQppbmRleCA5MGIxNTgyLi5mMTcyM2JlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvbXNnLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkKQEAgLTIxNiwzICsyMTYsMTAgQEAKICAgICAgICAgbG9nZ2VyLmhhbmRsZXJzID0gW2NvbnNvbGVdCiAgICAgbG9nZ2VyLnNldExldmVsKGxldmVsKQogICAgIHJldHVybiBsb2dnZXIKKworZGVmIGhhc19jb25zb2xlX2hhbmRsZXIobG9nZ2VyKToKKyAgICBmb3IgaGFuZGxlciBpbiBsb2dnZXIuaGFuZGxlcnM6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoaGFuZGxlciwgbG9nZ2luZy5TdHJlYW1IYW5kbGVyKToKKyAgICAgICAgICAgIGlmIGhhbmRsZXIuc3RyZWFtIGluIFtzeXMuc3RkZXJyLCBzeXMuc3Rkb3V0XToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL19faW5pdF9fLnB5CmluZGV4IGEyOTUyZWMuLjJmYzQwMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9fX2luaXRfXy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvX19pbml0X18ucHkKQEAgLTg0LDYgKzg0LDEwIEBACiAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVXBkYXRpbmcgbXRpbWUgY2FjaGUgZm9yICVzIiAlIGYpCiAgICAgICAgIHVwZGF0ZV9tdGltZShmKQogCitkZWYgY2xlYXJfY2FjaGUoKToKKyAgICBnbG9iYWwgX19tdGltZV9jYWNoZQorICAgIF9fbXRpbWVfY2FjaGUgPSB7fQorCiBkZWYgbWFya19kZXBlbmRlbmN5KGQsIGYpOgogICAgIGlmIGYuc3RhcnRzd2l0aCgnLi8nKToKICAgICAgICAgZiA9ICIlcy8lcyIgJSAob3MuZ2V0Y3dkKCksIGZbMjpdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkKaW5kZXggZmU5MThhNC4uZjg5YWQyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5CkBAIC0xNDQsNyArMTQ0LDcgQEAKICAgICB0cnk6CiAgICAgICAgIHN0YXRlbWVudHMuZXZhbChkKQogICAgIGV4Y2VwdCBiYi5wYXJzZS5Ta2lwUmVjaXBlOgotICAgICAgICBiYi5kYXRhLnNldFZhcigiX19TS0lQUEVEIiwgVHJ1ZSwgZCkKKyAgICAgICAgZC5zZXRWYXIoIl9fU0tJUFBFRCIsIFRydWUpCiAgICAgICAgIGlmIGluY2x1ZGUgPT0gMDoKICAgICAgICAgICAgIHJldHVybiB7ICIiIDogZCB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weQppbmRleCBmN2QwY2Y3Li45N2FhMTMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQ29uZkhhbmRsZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5CkBAIC0zMiw3ICszMiw3IEBACiAKIF9fY29uZmlnX3JlZ2V4cF9fICA9IHJlLmNvbXBpbGUoIHIiIiIKICAgICBeCi0gICAgKD9QPGV4cD5leHBvcnRccyopPworICAgICg/UDxleHA+ZXhwb3J0XHMrKT8KICAgICAoP1A8dmFyPlthLXpBLVowLTlcLV8rLiR7fS9+XSs/KQogICAgIChcWyg/UDxmbGFnPlthLXpBLVowLTlcLV8rLl0rKVxdKT8KIApAQCAtNjksMTggKzY5LDI2IEBACiBkZWYgc3VwcG9ydHMoZm4sIGQpOgogICAgIHJldHVybiBmblstNTpdID09ICIuY29uZiIKIAotZGVmIGluY2x1ZGUocGFyZW50Zm4sIGZuLCBsaW5lbm8sIGRhdGEsIGVycm9yX291dCk6CitkZWYgaW5jbHVkZShwYXJlbnRmbiwgZm5zLCBsaW5lbm8sIGRhdGEsIGVycm9yX291dCk6CiAgICAgIiIiCiAgICAgZXJyb3Jfb3V0OiBBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSB2ZXJiIChlLmcuICJpbmNsdWRlIiwgImluaGVyaXQiKSB0byBiZQogICAgIHVzZWQgaW4gYSBQYXJzZUVycm9yIHRoYXQgd2lsbCBiZSByYWlzZWQgaWYgdGhlIGZpbGUgdG8gYmUgaW5jbHVkZWQgY291bGQKICAgICBub3QgYmUgaW5jbHVkZWQuIFNwZWNpZnkgRmFsc2UgdG8gYXZvaWQgcmFpc2luZyBhbiBlcnJvciBpbiB0aGlzIGNhc2UuCiAgICAgIiIiCisgICAgZm5zID0gZGF0YS5leHBhbmQoZm5zKQorICAgIHBhcmVudGZuID0gZGF0YS5leHBhbmQocGFyZW50Zm4pCisKKyAgICAjICJpbmNsdWRlIiBvciAicmVxdWlyZSIgYWNjZXB0IHplcm8gdG8gbiBzcGFjZS1zZXBhcmF0ZWQgZmlsZSBuYW1lcyB0byBpbmNsdWRlLgorICAgIGZvciBmbiBpbiBmbnMuc3BsaXQoKToKKyAgICAgICAgaW5jbHVkZV9zaW5nbGVfZmlsZShwYXJlbnRmbiwgZm4sIGxpbmVubywgZGF0YSwgZXJyb3Jfb3V0KQorCitkZWYgaW5jbHVkZV9zaW5nbGVfZmlsZShwYXJlbnRmbiwgZm4sIGxpbmVubywgZGF0YSwgZXJyb3Jfb3V0KToKKyAgICAiIiIKKyAgICBIZWxwZXIgZnVuY3Rpb24gZm9yIGluY2x1ZGUoKSB3aGljaCBkb2VzIG5vdCBleHBhbmQgb3Igc3BsaXQgaXRzIHBhcmFtZXRlcnMuCisgICAgIiIiCiAgICAgaWYgcGFyZW50Zm4gPT0gZm46ICMgcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24KICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGZuID0gZGF0YS5leHBhbmQoZm4pCi0gICAgcGFyZW50Zm4gPSBkYXRhLmV4cGFuZChwYXJlbnRmbikKLQogICAgIGlmIG5vdCBvcy5wYXRoLmlzYWJzKGZuKToKICAgICAgICAgZG5hbWUgPSBvcy5wYXRoLmRpcm5hbWUocGFyZW50Zm4pCiAgICAgICAgIGJicGF0aCA9ICIlczolcyIgJSAoZG5hbWUsIGRhdGEuZ2V0VmFyKCJCQlBBVEgiKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wcm9jZXNzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Byb2Nlc3MucHkKaW5kZXggYTRhNTU5OS4uZTY5Njk3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Byb2Nlc3MucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Byb2Nlc3MucHkKQEAgLTk0LDQ2ICs5NCw1MyBAQAogICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGZ1bmMoZGF0YSkKIAorICAgIGRlZiByZWFkX2FsbF9waXBlcyhsb2csIHJpbiwgb3V0ZGF0YSwgZXJyZGF0YSk6CisgICAgICAgIHJsaXN0ID0gcmluCisgICAgICAgIHN0ZG91dGJ1ZiA9IGIiIgorICAgICAgICBzdGRlcnJidWYgPSBiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByLHcsZSA9IHNlbGVjdC5zZWxlY3QgKHJsaXN0LCBbXSwgW10sIDEpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRSOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgcmVhZGV4dHJhcyhyKQorCisgICAgICAgIGlmIHBpcGUuc3Rkb3V0IGluIHI6CisgICAgICAgICAgICBkYXRhID0gc3Rkb3V0YnVmICsgcGlwZS5zdGRvdXQucmVhZCgpCisgICAgICAgICAgICBpZiBkYXRhIGlzIG5vdCBOb25lIGFuZCBsZW4oZGF0YSkgPiAwOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgICAgICAgICAgICAgIG91dGRhdGEuYXBwZW5kKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGxvZy53cml0ZShkYXRhKQorICAgICAgICAgICAgICAgICAgICBsb2cuZmx1c2goKQorICAgICAgICAgICAgICAgICAgICBzdGRvdXRidWYgPSBiIiIKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBzdGRvdXRidWYgPSBkYXRhCisKKyAgICAgICAgaWYgcGlwZS5zdGRlcnIgaW4gcjoKKyAgICAgICAgICAgIGRhdGEgPSBzdGRlcnJidWYgKyBwaXBlLnN0ZGVyci5yZWFkKCkKKyAgICAgICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmUgYW5kIGxlbihkYXRhKSA+IDA6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgICAgICAgICAgZXJyZGF0YS5hcHBlbmQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbG9nLndyaXRlKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGxvZy5mbHVzaCgpCisgICAgICAgICAgICAgICAgICAgIHN0ZGVycmJ1ZiA9IGIiIgorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHN0ZGVycmJ1ZiA9IGRhdGEKKwogICAgIHRyeToKKyAgICAgICAgIyBSZWFkIGFsbCBwaXBlcyB3aGlsZSB0aGUgcHJvY2VzcyBpcyBvcGVuCiAgICAgICAgIHdoaWxlIHBpcGUucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBybGlzdCA9IHJpbgotICAgICAgICAgICAgc3Rkb3V0YnVmID0gYiIiCi0gICAgICAgICAgICBzdGRlcnJidWYgPSBiIiIKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByLHcsZSA9IHNlbGVjdC5zZWxlY3QgKHJsaXN0LCBbXSwgW10sIDEpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByZWFkX2FsbF9waXBlcyhsb2csIHJpbiwgb3V0ZGF0YSwgZXJyZGF0YSkKIAotICAgICAgICAgICAgaWYgcGlwZS5zdGRvdXQgaW4gcjoKLSAgICAgICAgICAgICAgICBkYXRhID0gc3Rkb3V0YnVmICsgcGlwZS5zdGRvdXQucmVhZCgpCi0gICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZSBhbmQgbGVuKGRhdGEpID4gMDoKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGYtOCIpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRkYXRhLmFwcGVuZChkYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nLndyaXRlKGRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXRidWYgPSBiIiIKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dGJ1ZiA9IGRhdGEKLQotICAgICAgICAgICAgaWYgcGlwZS5zdGRlcnIgaW4gcjoKLSAgICAgICAgICAgICAgICBkYXRhID0gc3RkZXJyYnVmICsgcGlwZS5zdGRlcnIucmVhZCgpCi0gICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZSBhbmQgbGVuKGRhdGEpID4gMDoKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGYtOCIpCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJkYXRhLmFwcGVuZChkYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nLndyaXRlKGRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnJidWYgPSBiIiIKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycmJ1ZiA9IGRhdGEKLQotICAgICAgICAgICAgcmVhZGV4dHJhcyhyKQotCi0gICAgZmluYWxseTogICAgCisgICAgICAgICMgUG9jZXNzIGNsb3NlZCwgZHJhaW4gYWxsIHBpcGVzLi4uCisgICAgICAgIHJlYWRfYWxsX3BpcGVzKGxvZywgcmluLCBvdXRkYXRhLCBlcnJkYXRhKQorICAgIGZpbmFsbHk6CiAgICAgICAgIGxvZy5mbHVzaCgpCiAKLSAgICByZWFkZXh0cmFzKFtmb2JqIGZvciBmb2JqLCBfIGluIGV4dHJhZmlsZXNdKQotCiAgICAgaWYgcGlwZS5zdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHBpcGUuc3Rkb3V0LmNsb3NlKCkKICAgICBpZiBwaXBlLnN0ZGVyciBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQppbmRleCA3ZDJmZjgxLi5hZTEyYzI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CkBAIC0xMzU1LDEyICsxMzU1LDcgQEAKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVGFza3MgU3VtbWFyeTogQXR0ZW1wdGVkICVkIHRhc2tzIG9mIHdoaWNoICVkIGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLiIsIHNlbGYucnFleGUuc3RhdHMuY29tcGxldGVkLCBzZWxmLnJxZXhlLnN0YXRzLnNraXBwZWQpCiAKICAgICAgICAgaWYgc2VsZi5zdGF0ZSBpcyBydW5RdWV1ZUZhaWxlZDoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJxZGF0YS50YXNrRGF0YVsnJ10udHJ5YWx0Y29uZmlnczoKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5ydW5xdWV1ZS5UYXNrRmFpbHVyZShzZWxmLnJxZXhlLmZhaWxlZF90aWRzKQotICAgICAgICAgICAgZm9yIHRpZCBpbiBzZWxmLnJxZXhlLmZhaWxlZF90aWRzOgotICAgICAgICAgICAgICAgIChtYywgZm4sIHRuLCBfKSA9IHNwbGl0X3RpZF9tY2ZuKHRpZCkKLSAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS50YXNrRGF0YVttY10uZmFpbF9mbihmbikKLSAgICAgICAgICAgIHNlbGYucnFkYXRhLnJlc2V0KCkKKyAgICAgICAgICAgIHJhaXNlIGJiLnJ1bnF1ZXVlLlRhc2tGYWlsdXJlKHNlbGYucnFleGUuZmFpbGVkX3RpZHMpCiAKICAgICAgICAgaWYgc2VsZi5zdGF0ZSBpcyBydW5RdWV1ZUNvbXBsZXRlOgogICAgICAgICAgICAgIyBBbGwgZG9uZQpAQCAtMTgzOSw3ICsxODM0LDcgQEAKICAgICAgICAgUnVuIHRoZSB0YXNrcyBpbiBhIHF1ZXVlIHByZXBhcmVkIGJ5IHJxZGF0YS5wcmVwYXJlKCkKICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgc2VsZi5ycWRhdGEuc2V0c2NlbmV3aGl0ZWxpc3QgYW5kIG5vdCBzZWxmLnJxZGF0YS5zZXRzY2VuZXdoaXRlbGlzdF9jaGVja2VkOgorICAgICAgICBpZiBzZWxmLnJxZGF0YS5zZXRzY2VuZXdoaXRlbGlzdCBpcyBub3QgTm9uZSBhbmQgbm90IHNlbGYucnFkYXRhLnNldHNjZW5ld2hpdGVsaXN0X2NoZWNrZWQ6CiAgICAgICAgICAgICBzZWxmLnJxZGF0YS5zZXRzY2VuZXdoaXRlbGlzdF9jaGVja2VkID0gVHJ1ZQogCiAgICAgICAgICAgICAjIENoZWNrIHRhc2tzIHRoYXQgYXJlIGdvaW5nIHRvIHJ1biBhZ2FpbnN0IHRoZSB3aGl0ZWxpc3QKQEAgLTE5MzIsNyArMTkyNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJxLnN0YXRlID0gcnVuUXVldWVGYWlsZWQKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdHMudGFza0ZhaWxlZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgICAgIHNlbGYucnEuZmFrZXdvcmtlclttY10ucHJvY2Vzcy5zdGRpbi53cml0ZShiIjxydW50YXNrPiIgKyBwaWNrbGUuZHVtcHMoKHRhc2tmbiwgdGFzaywgdGFza25hbWUsIEZhbHNlLCBzZWxmLmNvb2tlci5jb2xsZWN0aW9uLmdldF9maWxlX2FwcGVuZHMoZm4pLCB0YXNrZGVwZGF0YSwgc2VsZi5ycWRhdGEuc2V0c2NlbmVfZW5mb3JjZSkpICsgYiI8L3J1bnRhc2s+IikKKyAgICAgICAgICAgICAgICBzZWxmLnJxLmZha2V3b3JrZXJbbWNdLnByb2Nlc3Muc3RkaW4ud3JpdGUoYiI8cnVudGFzaz4iICsgcGlja2xlLmR1bXBzKCh0YXNrZm4sIHRhc2ssIHRhc2tuYW1lLCBGYWxzZSwgc2VsZi5jb29rZXIuY29sbGVjdGlvbi5nZXRfZmlsZV9hcHBlbmRzKHRhc2tmbiksIHRhc2tkZXBkYXRhLCBzZWxmLnJxZGF0YS5zZXRzY2VuZV9lbmZvcmNlKSkgKyBiIjwvcnVudGFzaz4iKQogICAgICAgICAgICAgICAgIHNlbGYucnEuZmFrZXdvcmtlclttY10ucHJvY2Vzcy5zdGRpbi5mbHVzaCgpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucnEud29ya2VyW21jXS5wcm9jZXNzLnN0ZGluLndyaXRlKGIiPHJ1bnRhc2s+IiArIHBpY2tsZS5kdW1wcygodGFza2ZuLCB0YXNrLCB0YXNrbmFtZSwgRmFsc2UsIHNlbGYuY29va2VyLmNvbGxlY3Rpb24uZ2V0X2ZpbGVfYXBwZW5kcyh0YXNrZm4pLCB0YXNrZGVwZGF0YSwgc2VsZi5ycWRhdGEuc2V0c2NlbmVfZW5mb3JjZSkpICsgYiI8L3J1bnRhc2s+IikKQEAgLTIyNTQsNyArMjI0OSw3IEBACiAgICAgICAgIHNlbGYuc2NlbmVxdWV1ZV91cGRhdGVjb3VudGVycyh0YXNrKQogCiAgICAgZGVmIGNoZWNrX3Rhc2tmYWlsKHNlbGYsIHRhc2spOgotICAgICAgICBpZiBzZWxmLnJxZGF0YS5zZXRzY2VuZXdoaXRlbGlzdDoKKyAgICAgICAgaWYgc2VsZi5ycWRhdGEuc2V0c2NlbmV3aGl0ZWxpc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZWFsdGFzayA9IHRhc2suc3BsaXQoJ19zZXRzY2VuZScpWzBdCiAgICAgICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgdGFza2ZuKSA9IHNwbGl0X3RpZF9tY2ZuKHJlYWx0YXNrKQogICAgICAgICAgICAgcG4gPSBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS5wa2dfZm5bdGFza2ZuXQpAQCAtMjM3Miw3ICsyMzY3LDcgQEAKICAgICAgICAgc2VsZi5ycS5zY2VuZXF1ZXVlX2NvdmVyZWQgPSBzZWxmLnNjZW5lcXVldWVfY292ZXJlZAogICAgICAgICBzZWxmLnJxLnNjZW5lcXVldWVfbm90Y292ZXJlZCA9IHNlbGYuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkCiAKLSAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdXZSBjYW4gc2tpcCB0YXNrcyAlcycsIHNvcnRlZChzZWxmLnJxLnNjZW5lcXVldWVfY292ZXJlZCkpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnV2UgY2FuIHNraXAgdGFza3MgJXMnLCAiXG4iLmpvaW4oc29ydGVkKHNlbGYucnEuc2NlbmVxdWV1ZV9jb3ZlcmVkKSkpCiAKICAgICAgICAgc2VsZi5ycS5zdGF0ZSA9IHJ1blF1ZXVlUnVuSW5pdAogCkBAIC0yNDg4LDYgKzI0ODMsOSBAQAogICAgICAgICBydW5RdWV1ZUV2ZW50Ll9faW5pdF9fKHNlbGYsIHRhc2ssIHN0YXRzLCBycSkKICAgICAgICAgc2VsZi5leGl0Y29kZSA9IGV4aXRjb2RlCiAKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJUYXNrICglcykgZmFpbGVkIHdpdGggZXhpdCBjb2RlICclcyciICUgKHNlbGYudGFza3N0cmluZywgc2VsZi5leGl0Y29kZSkKKwogY2xhc3Mgc2NlbmVRdWV1ZVRhc2tGYWlsZWQoc2NlbmVRdWV1ZUV2ZW50KToKICAgICAiIiIKICAgICBFdmVudCBub3RpZnlpbmcgYSBzZXRzY2VuZSB0YXNrIGZhaWxlZApAQCAtMjQ5Niw2ICsyNDk0LDkgQEAKICAgICAgICAgc2NlbmVRdWV1ZUV2ZW50Ll9faW5pdF9fKHNlbGYsIHRhc2ssIHN0YXRzLCBycSkKICAgICAgICAgc2VsZi5leGl0Y29kZSA9IGV4aXRjb2RlCiAKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJTZXRzY2VuZSB0YXNrICglcykgZmFpbGVkIHdpdGggZXhpdCBjb2RlICclcycgLSByZWFsIHRhc2sgd2lsbCBiZSBydW4gaW5zdGVhZCIgJSAoc2VsZi50YXNrc3RyaW5nLCBzZWxmLmV4aXRjb2RlKQorCiBjbGFzcyBzY2VuZVF1ZXVlQ29tcGxldGUoc2NlbmVRdWV1ZUV2ZW50KToKICAgICAiIiIKICAgICBFdmVudCB3aGVuIGFsbCB0aGUgc2NlbmVRdWV1ZSB0YXNrcyBhcmUgY29tcGxldGUKQEAgLTI2MDIsNyArMjYwMyw3IEBACiAKIGRlZiBjaGVja19zZXRzY2VuZV9lbmZvcmNlX3doaXRlbGlzdChwbiwgdGFza25hbWUsIHdoaXRlbGlzdCk6CiAgICAgaW1wb3J0IGZubWF0Y2gKLSAgICBpZiB3aGl0ZWxpc3Q6CisgICAgaWYgd2hpdGVsaXN0IGlzIG5vdCBOb25lOgogICAgICAgICBpdGVtID0gJyVzOiVzJyAlIChwbiwgdGFza25hbWUpCiAgICAgICAgIGZvciB3aGl0ZWxpc3RfaXRlbSBpbiB3aGl0ZWxpc3Q6CiAgICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2goaXRlbSwgd2hpdGVsaXN0X2l0ZW0pOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvX19pbml0X18ucHkKaW5kZXggNTM4YTYzMy4uNWEzZmJhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9fX2luaXRfXy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL19faW5pdF9fLnB5CkBAIC0xOCw4MiArMTgsNCBAQAogIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCi0iIiIgQmFzZSBjb2RlIGZvciBCaXRiYWtlIHNlcnZlciBwcm9jZXNzCiAKLUhhdmUgYSBjb21tb24gYmFzZSBmb3IgdGhhdCBhbGwgQml0YmFrZSBzZXJ2ZXIgY2xhc3NlcyBlbnN1cmVzIGEgY29uc2lzdGVudAotYXBwcm9hY2ggdG8gdGhlIGludGVyZmFjZSwgYW5kIG1pbmltaXplIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBjb2RlIGR1cGxpY2F0aW9uLgotCi0iIiIKLQotIiIiICBCYXNlSW1wbFNlcnZlcigpIHRoZSBiYXNlIGNsYXNzIGZvciBhbGwgWFhTZXJ2ZXIoKSBpbXBsZW1lbnRhdGlvbnMuCi0KLSAgICBUaGVzZSBjbGFzc2VzIGNvbnRhaW4gdGhlIGFjdHVhbCBjb2RlIHRoYXQgcnVucyB0aGUgc2VydmVyIHNpZGUsIGkuZS4KLSAgICBsaXN0ZW5zIGZvciB0aGUgY29tbWFuZHMgYW5kIGV4ZWN1dGVzIHRoZW0uIEFsdGhvdWdoIHRoZXNlIGltcGxlbWVudGF0aW9ucwotICAgIGNvbnRhaW4gYWxsIHRoZSBkYXRhIG9mIHRoZSBvcmlnaW5hbCBiaXRiYWtlIGNvbW1hbmQsIGkuZSB0aGUgY29va2VyIGluc3RhbmNlLAotICAgIHRoZXkgbWF5IHdlbGwgcnVuIG9uIGEgZGlmZmVyZW50IHByb2Nlc3Mgb3IgZXZlbiBtYWNoaW5lLgotCi0iIiIKLQotY2xhc3MgQmFzZUltcGxTZXJ2ZXIoKToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2lkbGVmdW5zID0ge30KLQotICAgIGRlZiBhZGRjb29rZXIoc2VsZiwgY29va2VyKToKLSAgICAgICAgc2VsZi5jb29rZXIgPSBjb29rZXIKLQotICAgIGRlZiByZWdpc3Rlcl9pZGxlX2Z1bmN0aW9uKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKLSAgICAgICAgIiIiUmVnaXN0ZXIgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hpbGUgdGhlIHNlcnZlciBpcyBpZGxlIiIiCi0gICAgICAgIGFzc2VydCBoYXNhdHRyKGZ1bmN0aW9uLCAnX19jYWxsX18nKQotICAgICAgICBzZWxmLl9pZGxlZnVuc1tmdW5jdGlvbl0gPSBkYXRhCi0KLQotCi0iIiIgQml0QmFrZUJhc2VTZXJ2ZXJDb25uZWN0aW9uIGNsYXNzIGlzIHRoZSBjb21tb24gYW5jZXN0b3IgdG8gYWxsCi0gICAgQml0QmFrZVNlcnZlckNvbm5lY3Rpb24gY2xhc3Nlcy4KLQotICAgIFRoZXNlIGNsYXNzZXMgY29udHJvbCB0aGUgcmVtb3RlIHNlcnZlci4gVGhlIG9ubHkgY29tbWFuZCBjdXJyZW50bHkKLSAgICBpbXBsZW1lbnRlZCBpcyB0aGUgdGVybWluYXRlKCkgY29tbWFuZC4KLQotIiIiCi0KLWNsYXNzIEJpdEJha2VCYXNlU2VydmVyQ29ubmVjdGlvbigpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXJJbXBsKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldHVwRXZlbnRRdWV1ZShzZWxmKToKLSAgICAgICAgcGFzcwotCi0KLSIiIiBCaXRCYWtlQmFzZVNlcnZlciBjbGFzcyBpcyB0aGUgY29tbW9uIGFuY2VzdG9yIHRvIGFsbCBCaXRiYWtlIHNlcnZlcnMKLQotICAgIERlcml2ZSB0aGlzIGNsYXNzIGluIG9yZGVyIHRvIGltcGxlbWVudCBhIEJpdEJha2VTZXJ2ZXIgd2hpY2ggaXMgdGhlCi0gICAgY29udHJvbGxpbmcgc3R1YiBmb3IgdGhlIGFjdHVhbCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24KLQotIiIiCi1jbGFzcyBCaXRCYWtlQmFzZVNlcnZlcihvYmplY3QpOgotICAgIGRlZiBpbml0U2VydmVyKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlckltcGwgPSBOb25lICAjIHdlIGVuc3VyZSBhIHJ1bnRpbWUgY3Jhc2ggaWYgbm90IG92ZXJsb2FkZWQKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gTm9uZQotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBhZGRjb29rZXIoc2VsZiwgY29va2VyKToKLSAgICAgICAgc2VsZi5jb29rZXIgPSBjb29rZXIKLSAgICAgICAgc2VsZi5zZXJ2ZXJJbXBsLmFkZGNvb2tlcihjb29rZXIpCi0KLSAgICBkZWYgZ2V0U2VydmVySWRsZUNCKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXJJbXBsLnJlZ2lzdGVyX2lkbGVfZnVuY3Rpb24KLQotICAgIGRlZiBzYXZlQ29ubmVjdGlvbkRldGFpbHMoc2VsZik6Ci0gICAgICAgIHJldHVybgotCi0gICAgZGVmIGRldGFjaChzZWxmKToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBkZWYgZXN0YWJsaXNoQ29ubmVjdGlvbihzZWxmLCBmZWF0dXJlc2V0KToKLSAgICAgICAgcmFpc2UgICAiTXVzdCByZWRlZmluZSB0aGUgJXMuZXN0YWJsaXNoQ29ubmVjdGlvbigpIiAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCi0KLSAgICBkZWYgZW5kU2Vzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uLnRlcm1pbmF0ZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkKaW5kZXggYzNjMTQ1MC4uM2QzMTM1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9wcm9jZXNzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvcHJvY2Vzcy5weQpAQCAtMjIsMTI1ICsyMiwyNDUgQEAKIAogaW1wb3J0IGJiCiBpbXBvcnQgYmIuZXZlbnQKLWltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgYXJyYXkKIGltcG9ydCBvcwotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBzZWxlY3QKLWZyb20gcXVldWUgaW1wb3J0IEVtcHR5Ci1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgRXZlbnQsIFByb2Nlc3MsIHV0aWwsIFF1ZXVlLCBQaXBlLCBxdWV1ZXMsIE1hbmFnZXIKLQotZnJvbSAuIGltcG9ydCBCaXRCYWtlQmFzZVNlcnZlciwgQml0QmFrZUJhc2VTZXJ2ZXJDb25uZWN0aW9uLCBCYXNlSW1wbFNlcnZlcgoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBlcnJubworaW1wb3J0IHJlCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBiYi5zZXJ2ZXIueG1scnBjc2VydmVyCitmcm9tIGJiIGltcG9ydCBkYWVtb25pemUKK2Zyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBxdWV1ZXMKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UnKQogCi1jbGFzcyBTZXJ2ZXJDb21tdW5pY2F0b3IoKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubmVjdGlvbiwgZXZlbnRfaGFuZGxlLCBzZXJ2ZXIpOgotICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCi0gICAgICAgIHNlbGYuZXZlbnRfaGFuZGxlID0gZXZlbnRfaGFuZGxlCi0gICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyCitjbGFzcyBQcm9jZXNzVGltZW91dChTeXN0ZW1FeGl0KToKKyAgICBwYXNzCiAKLSAgICBkZWYgcnVuQ29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgIyBAdG9kbyB0cnkvZXhjZXB0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kKGNvbW1hbmQpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0Ci0KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICMgZG9uJ3QgbGV0IHRoZSB1c2VyIGN0cmwtYyB3aGlsZSB3ZSdyZSB3YWl0aW5nIGZvciBhIHJlc3BvbnNlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm9yIGlkeCBpbiByYW5nZSgwLDQpOiAjIDAsIDEsIDIsIDMKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb25uZWN0aW9uLnBvbGwoNSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb25uZWN0aW9uLnJlY3YoKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGltZW91dCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNvbW11bmljYXRlIHdpdGggYml0YmFrZSBzZXJ2ZXIiKQotICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJHYXZlIHVwOyBUb28gbWFueSB0cmllczogdGltZW91dCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNvbW11bmljYXRlIHdpdGggYml0YmFrZSBzZXJ2ZXIiKQotICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBnZXRFdmVudEhhbmRsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZXZlbnRfaGFuZGxlLnZhbHVlCi0KLWNsYXNzIEV2ZW50QWRhcHRlcigpOgotICAgICIiIgotICAgIEFkYXB0ZXIgdG8gd3JhcCBvdXIgZXZlbnQgcXVldWUgc2luY2UgdGhlIGNhbGxlciAoYmIuZXZlbnQpIGV4cGVjdHMgdG8KLSAgICBjYWxsIGEgc2VuZCgpIG1ldGhvZCwgYnV0IG91ciBhY3R1YWwgcXVldWUgb25seSBoYXMgcHV0KCkKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcXVldWUpOgotICAgICAgICBzZWxmLnF1ZXVlID0gcXVldWUKLQotICAgIGRlZiBzZW5kKHNlbGYsIGV2ZW50KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXQoZXZlbnQpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgotICAgICAgICAgICAgcHJpbnQoIkV2ZW50QWRhcHRlciBwdWtlZDogJXMiICUgc3RyKGVycikpCi0KLQotY2xhc3MgUHJvY2Vzc1NlcnZlcihQcm9jZXNzLCBCYXNlSW1wbFNlcnZlcik6CitjbGFzcyBQcm9jZXNzU2VydmVyKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKICAgICBwcm9maWxlX2ZpbGVuYW1lID0gInByb2ZpbGUubG9nIgogICAgIHByb2ZpbGVfcHJvY2Vzc2VkX2ZpbGVuYW1lID0gInByb2ZpbGUubG9nLnByb2Nlc3NlZCIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21tYW5kX2NoYW5uZWwsIGV2ZW50X3F1ZXVlLCBmZWF0dXJlbGlzdCk6Ci0gICAgICAgIEJhc2VJbXBsU2VydmVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIFByb2Nlc3MuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWwgPSBjb21tYW5kX2NoYW5uZWwKLSAgICAgICAgc2VsZi5ldmVudF9xdWV1ZSA9IGV2ZW50X3F1ZXVlCi0gICAgICAgIHNlbGYuZXZlbnQgPSBFdmVudEFkYXB0ZXIoZXZlbnRfcXVldWUpCi0gICAgICAgIHNlbGYuZmVhdHVyZWxpc3QgPSBmZWF0dXJlbGlzdAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NrLCBzb2NrLCBzb2NrbmFtZSk6CisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuY29tbWFuZF9jaGFubmVsID0gRmFsc2UKKyAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWxfcmVwbHkgPSBGYWxzZQogICAgICAgICBzZWxmLnF1aXQgPSBGYWxzZQogICAgICAgICBzZWxmLmhlYXJ0YmVhdF9zZWNvbmRzID0gMSAjIGRlZmF1bHQsIEJCX0hFQVJUQkVBVF9FVkVOVCB3aWxsIGJlIGNoZWNrZWQgb25jZSB3ZSBoYXZlIGEgZGF0YXN0b3JlLgogICAgICAgICBzZWxmLm5leHRfaGVhcnRiZWF0ID0gdGltZS50aW1lKCkKIAotICAgICAgICBzZWxmLnF1aXRpbiwgc2VsZi5xdWl0b3V0ID0gUGlwZSgpCi0gICAgICAgIHNlbGYuZXZlbnRfaGFuZGxlID0gbXVsdGlwcm9jZXNzaW5nLlZhbHVlKCJpIikKKyAgICAgICAgc2VsZi5ldmVudF9oYW5kbGUgPSBOb25lCisgICAgICAgIHNlbGYuaGF2ZXVpID0gRmFsc2UKKyAgICAgICAgc2VsZi5sYXN0dWkgPSBGYWxzZQorICAgICAgICBzZWxmLnhtbHJwYyA9IEZhbHNlCisKKyAgICAgICAgc2VsZi5faWRsZWZ1bnMgPSB7fQorCisgICAgICAgIHNlbGYuYml0YmFrZV9sb2NrID0gbG9jaworICAgICAgICBzZWxmLnNvY2sgPSBzb2NrCisgICAgICAgIHNlbGYuc29ja25hbWUgPSBzb2NrbmFtZQorCisgICAgZGVmIHJlZ2lzdGVyX2lkbGVfZnVuY3Rpb24oc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICAiIiJSZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGlsZSB0aGUgc2VydmVyIGlzIGlkbGUiIiIKKyAgICAgICAgYXNzZXJ0IGhhc2F0dHIoZnVuY3Rpb24sICdfX2NhbGxfXycpCisgICAgICAgIHNlbGYuX2lkbGVmdW5zW2Z1bmN0aW9uXSA9IGRhdGEKIAogICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIGZvciBldmVudCBpbiBiYi5ldmVudC51aV9xdWV1ZToKLSAgICAgICAgICAgIHNlbGYuZXZlbnRfcXVldWUucHV0KGV2ZW50KQotICAgICAgICBzZWxmLmV2ZW50X2hhbmRsZS52YWx1ZSA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZiwgVHJ1ZSkKKworICAgICAgICBpZiBzZWxmLnhtbHJwY2ludGVyZmFjZVswXToKKyAgICAgICAgICAgIHNlbGYueG1scnBjID0gYmIuc2VydmVyLnhtbHJwY3NlcnZlci5CaXRCYWtlWE1MUlBDU2VydmVyKHNlbGYueG1scnBjaW50ZXJmYWNlLCBzZWxmLmNvb2tlciwgc2VsZikKKworICAgICAgICAgICAgcHJpbnQoIkJpdGJha2UgWE1MUlBDIHNlcnZlciBhZGRyZXNzOiAlcywgc2VydmVyIHBvcnQ6ICVzIiAlIChzZWxmLnhtbHJwYy5ob3N0LCBzZWxmLnhtbHJwYy5wb3J0KSkKIAogICAgICAgICBoZWFydGJlYXRfZXZlbnQgPSBzZWxmLmNvb2tlci5kYXRhLmdldFZhcignQkJfSEVBUlRCRUFUX0VWRU5UJykKICAgICAgICAgaWYgaGVhcnRiZWF0X2V2ZW50OgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuaGVhcnRiZWF0X3NlY29uZHMgPSBmbG9hdChoZWFydGJlYXRfZXZlbnQpCiAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgIyBUaHJvd2luZyBhbiBleGNlcHRpb24gaGVyZSBjYXVzZXMgYml0YmFrZSB0byBoYW5nLgotICAgICAgICAgICAgICAgICMgSnVzdCB3YXJuIGFib3V0IHRoZSBpbnZhbGlkIHNldHRpbmcgYW5kIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgYmIud2FybignSWdub3JpbmcgaW52YWxpZCBCQl9IRUFSVEJFQVRfRVZFTlQ9JXMsIG11c3QgYmUgYSBmbG9hdCBzcGVjaWZ5aW5nIHNlY29uZHMuJyAlIGhlYXJ0YmVhdF9ldmVudCkKLSAgICAgICAgYmIuY29va2VyLnNlcnZlcl9tYWluKHNlbGYuY29va2VyLCBzZWxmLm1haW4pCisKKyAgICAgICAgc2VsZi50aW1lb3V0ID0gc2VsZi5zZXJ2ZXJfdGltZW91dCBvciBzZWxmLmNvb2tlci5kYXRhLmdldFZhcignQkJfU0VSVkVSX1RJTUVPVVQnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXQ6CisgICAgICAgICAgICAgICAgc2VsZi50aW1lb3V0ID0gZmxvYXQoc2VsZi50aW1lb3V0KQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBiYi53YXJuKCdJZ25vcmluZyBpbnZhbGlkIEJCX1NFUlZFUl9USU1FT1VUPSVzLCBtdXN0IGJlIGEgZmxvYXQgc3BlY2lmeWluZyBzZWNvbmRzLicgJSBzZWxmLnRpbWVvdXQpCisKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmJpdGJha2VfbG9jay5zZWVrKDApCisgICAgICAgICAgICBzZWxmLmJpdGJha2VfbG9jay50cnVuY2F0ZSgpCisgICAgICAgICAgICBpZiBzZWxmLnhtbHJwYzoKKyAgICAgICAgICAgICAgICBzZWxmLmJpdGJha2VfbG9jay53cml0ZSgiJXMgJXM6JXNcbiIgJSAob3MuZ2V0cGlkKCksIHNlbGYueG1scnBjLmhvc3QsIHNlbGYueG1scnBjLnBvcnQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmJpdGJha2VfbG9jay53cml0ZSgiJXNcbiIgJSAob3MuZ2V0cGlkKCkpKQorICAgICAgICAgICAgc2VsZi5iaXRiYWtlX2xvY2suZmx1c2goKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBwcmludCgiRXJyb3Igd3JpdGluZyB0byBsb2NrIGZpbGU6ICVzIiAlIHN0cihlKSkKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnByb2ZpbGU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGNQcm9maWxlIGFzIHByb2ZpbGUKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBpbXBvcnQgcHJvZmlsZQorICAgICAgICAgICAgcHJvZiA9IHByb2ZpbGUuUHJvZmlsZSgpCisKKyAgICAgICAgICAgIHJldCA9IHByb2ZpbGUuUHJvZmlsZS5ydW5jYWxsKHByb2YsIHNlbGYubWFpbikKKworICAgICAgICAgICAgcHJvZi5kdW1wX3N0YXRzKCJwcm9maWxlLmxvZyIpCisgICAgICAgICAgICBiYi51dGlscy5wcm9jZXNzX3Byb2ZpbGVsb2coInByb2ZpbGUubG9nIikKKyAgICAgICAgICAgIHByaW50KCJSYXcgcHJvZmlsaW5nIGluZm9ybWF0aW9uIHNhdmVkIHRvIHByb2ZpbGUubG9nIGFuZCBwcm9jZXNzZWQgc3RhdGlzdGljcyB0byBwcm9maWxlLmxvZy5wcm9jZXNzZWQiKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXQgPSBzZWxmLm1haW4oKQorCisgICAgICAgIHJldHVybiByZXQKIAogICAgIGRlZiBtYWluKHNlbGYpOgotICAgICAgICAjIElnbm9yZSBTSUdJTlQgd2l0aGluIHRoZSBzZXJ2ZXIsIGFzIGFsbCBTSUdJTlQgaGFuZGxpbmcgaXMgZG9uZSBieQotICAgICAgICAjIHRoZSBVSSBhbmQgY29tbXVuaWNhdGVkIHRvIHVzCi0gICAgICAgIHNlbGYucXVpdGluLmNsb3NlKCkKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSU5ULCBzaWduYWwuU0lHX0lHTikKKyAgICAgICAgc2VsZi5jb29rZXIucHJlX3NlcnZlKCkKKwogICAgICAgICBiYi51dGlscy5zZXRfcHJvY2Vzc19uYW1lKCJDb29rZXIiKQorCisgICAgICAgIHJlYWR5ID0gW10KKworICAgICAgICBzZWxmLmNvbnRyb2xsZXJzb2NrID0gRmFsc2UKKyAgICAgICAgZmRzID0gW3NlbGYuc29ja10KKyAgICAgICAgaWYgc2VsZi54bWxycGM6CisgICAgICAgICAgICBmZHMuYXBwZW5kKHNlbGYueG1scnBjKQorICAgICAgICBwcmludCgiRW50ZXJpbmcgc2VydmVyIGNvbm5lY3Rpb24gbG9vcCIpCisKKyAgICAgICAgZGVmIGRpc2Nvbm5lY3RfY2xpZW50KHNlbGYsIGZkcyk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5oYXZldWk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBwcmludCgiRGlzY29ubmVjdGluZyBDbGllbnQiKQorICAgICAgICAgICAgZmRzLnJlbW92ZShzZWxmLmNvbnRyb2xsZXJzb2NrKQorICAgICAgICAgICAgZmRzLnJlbW92ZShzZWxmLmNvbW1hbmRfY2hhbm5lbCkKKyAgICAgICAgICAgIGJiLmV2ZW50LnVucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLmV2ZW50X2hhbmRsZSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuY29tbWFuZF9jaGFubmVsX3JlcGx5LndyaXRlci5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmV2ZW50X3dyaXRlci53cml0ZXIuY2xvc2UoKQorICAgICAgICAgICAgZGVsIHNlbGYuZXZlbnRfd3JpdGVyCisgICAgICAgICAgICBzZWxmLmNvbnRyb2xsZXJzb2NrLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuY29udHJvbGxlcnNvY2sgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5oYXZldWkgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5sYXN0dWkgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgc2VsZi5jb29rZXIuY2xpZW50Q29tcGxldGUoKQorICAgICAgICAgICAgaWYgc2VsZi50aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcHJpbnQoIk5vIHRpbWVvdXQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgICAgICBzZWxmLnF1aXQgPSBUcnVlCisKICAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbW1hbmRfY2hhbm5lbC5wb2xsKCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLmNvbW1hbmRfY2hhbm5lbC5yZWN2KCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5Db21tYW5kKGNvbW1hbmQpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5xdWl0b3V0LnBvbGwoKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5xdWl0b3V0LnJlY3YoKQorICAgICAgICAgICAgaWYgc2VsZi5zb2NrIGluIHJlYWR5OgorICAgICAgICAgICAgICAgIHNlbGYuY29udHJvbGxlcnNvY2ssIGFkZHJlc3MgPSBzZWxmLnNvY2suYWNjZXB0KCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmhhdmV1aToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkRyb3BwaW5nIGNvbm5lY3Rpb24gYXR0ZW1wdCBhcyB3ZSBoYXZlIGEgVUkgJXMiICUgKHN0cihyZWFkeSkpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRyb2xsZXJzb2NrLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiQWNjZXB0aW5nICVzIiAlIChzdHIocmVhZHkpKSkKKyAgICAgICAgICAgICAgICAgICAgZmRzLmFwcGVuZChzZWxmLmNvbnRyb2xsZXJzb2NrKQorICAgICAgICAgICAgaWYgc2VsZi5jb250cm9sbGVyc29jayBpbiByZWFkeToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJDb25uZWN0aW5nIENsaWVudCIpCisgICAgICAgICAgICAgICAgICAgIHVpX2ZkcyA9IHJlY3ZmZHMoc2VsZi5jb250cm9sbGVyc29jaywgMykKKworICAgICAgICAgICAgICAgICAgICAjIFdoZXJlIHRvIHdyaXRlIGV2ZW50cyB0bworICAgICAgICAgICAgICAgICAgICB3cml0ZXIgPSBDb25uZWN0aW9uV3JpdGVyKHVpX2Zkc1swXSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ldmVudF9oYW5kbGUgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHdyaXRlciwgVHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ldmVudF93cml0ZXIgPSB3cml0ZXIKKworICAgICAgICAgICAgICAgICAgICAjIFdoZXJlIHRvIHJlYWQgY29tbWFuZHMgZnJvbQorICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSBDb25uZWN0aW9uUmVhZGVyKHVpX2Zkc1sxXSkKKyAgICAgICAgICAgICAgICAgICAgZmRzLmFwcGVuZChyZWFkZXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZF9jaGFubmVsID0gcmVhZGVyCisKKyAgICAgICAgICAgICAgICAgICAgIyBXaGVyZSB0byBzZW5kIGNvbW1hbmQgcmV0dXJuIHZhbHVlcyB0bworICAgICAgICAgICAgICAgICAgICB3cml0ZXIgPSBDb25uZWN0aW9uV3JpdGVyKHVpX2Zkc1syXSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWxfcmVwbHkgPSB3cml0ZXIKKworICAgICAgICAgICAgICAgICAgICBzZWxmLmhhdmV1aSA9IFRydWUKKworICAgICAgICAgICAgICAgIGV4Y2VwdCAoRU9GRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBkaXNjb25uZWN0X2NsaWVudChzZWxmLCBmZHMpCisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnRpbWVvdXQgPT0gLTEuMCBhbmQgbm90IHNlbGYuaGF2ZXVpIGFuZCBzZWxmLmxhc3R1aSBhbmQgc2VsZi50aW1lb3V0IGFuZCBcCisgICAgICAgICAgICAgICAgICAgIChzZWxmLmxhc3R1aSArIHNlbGYudGltZW91dCkgPCB0aW1lLnRpbWUoKToKKyAgICAgICAgICAgICAgICBwcmludCgiU2VydmVyIHRpbWVvdXQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgICAgICBzZWxmLnF1aXQgPSBUcnVlCisKKyAgICAgICAgICAgIGlmIHNlbGYuY29tbWFuZF9jaGFubmVsIGluIHJlYWR5OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuY29tbWFuZF9jaGFubmVsLmdldCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgorICAgICAgICAgICAgICAgICAgICAjIENsaWVudCBjb25uZWN0aW9uIHNodXR0aW5nIGRvd24KKyAgICAgICAgICAgICAgICAgICAgcmVhZHkgPSBbXQorICAgICAgICAgICAgICAgICAgICBkaXNjb25uZWN0X2NsaWVudChzZWxmLCBmZHMpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgY29tbWFuZFswXSA9PSAidGVybWluYXRlU2VydmVyIjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5xdWl0ID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIlJ1bm5pbmcgY29tbWFuZCAlcyIgJSBjb21tYW5kKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRfY2hhbm5lbF9yZXBseS5zZW5kKHNlbGYuY29va2VyLmNvbW1hbmQucnVuQ29tbWFuZChjb21tYW5kKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmV4Y2VwdGlvbignRXhjZXB0aW9uIGluIHNlcnZlciBtYWluIGV2ZW50IGxvb3AgcnVubmluZyBjb21tYW5kICVzICglcyknICUgKGNvbW1hbmQsIHN0cihlKSkpCisKKyAgICAgICAgICAgIGlmIHNlbGYueG1scnBjIGluIHJlYWR5OgorICAgICAgICAgICAgICAgIHNlbGYueG1scnBjLmhhbmRsZV9yZXF1ZXN0cygpCisKKyAgICAgICAgICAgIHJlYWR5ID0gc2VsZi5pZGxlX2NvbW1hbmRzKC4xLCBmZHMpCisKKyAgICAgICAgcHJpbnQoIkV4aXRpbmciKQorICAgICAgICAjIFJlbW92ZSB0aGUgc29ja2V0IGZpbGUgc28gd2UgZG9uJ3QgZ2V0IGFueSBtb3JlIGNvbm5lY3Rpb25zIHRvIGF2b2lkIHJhY2VzCisgICAgICAgIG9zLnVubGluayhzZWxmLnNvY2tuYW1lKQorICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQorCisgICAgICAgIHRyeTogCisgICAgICAgICAgICBzZWxmLmNvb2tlci5zaHV0ZG93bihUcnVlKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5jb29rZXIucG9zdF9zZXJ2ZSgpCisKKyAgICAgICAgIyBGaW5hbGx5IHJlbGVhc2UgdGhlIGxvY2tmaWxlIGJ1dCB3YXJuIGFib3V0IG90aGVyIHByb2Nlc3NlcyBob2xkaW5nIGl0IG9wZW4KKyAgICAgICAgbG9jayA9IHNlbGYuYml0YmFrZV9sb2NrCisgICAgICAgIGxvY2tmaWxlID0gbG9jay5uYW1lCisgICAgICAgIGxvY2suY2xvc2UoKQorICAgICAgICBsb2NrID0gTm9uZQorCisgICAgICAgIHdoaWxlIG5vdCBsb2NrOgorICAgICAgICAgICAgd2l0aCBiYi51dGlscy50aW1lb3V0KDMpOgorICAgICAgICAgICAgICAgIGxvY2sgPSBiYi51dGlscy5sb2NrZmlsZShsb2NrZmlsZSwgc2hhcmVkPUZhbHNlLCByZXRyeT1GYWxzZSwgYmxvY2s9VHJ1ZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbG9jazoKKyAgICAgICAgICAgICAgICAgICAgIyBTb21lIHN5c3RlbXMgbWF5IG5vdCBoYXZlIGxzb2YgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgIHByb2NzID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bkNvbW1hbmQoWyJzdGF0ZUZvcmNlU2h1dGRvd24iXSkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY3MgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbImxzb2YiLCAnLXcnLCBsb2NrZmlsZV0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgIGlmIHByb2NzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIEZhbGwgYmFjayB0byBmdXNlciBpZiBsc29mIGlzIHVuYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY3MgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbImZ1c2VyIiwgJy12JywgbG9ja2ZpbGVdLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogCi0gICAgICAgICAgICAgICAgc2VsZi5pZGxlX2NvbW1hbmRzKC4xLCBbc2VsZi5jb21tYW5kX2NoYW5uZWwsIHNlbGYucXVpdG91dF0pCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIGxvZ2dlci5leGNlcHRpb24oJ1J1bm5pbmcgY29tbWFuZCAlcycsIGNvbW1hbmQpCi0KLSAgICAgICAgc2VsZi5ldmVudF9xdWV1ZS5jbG9zZSgpCi0gICAgICAgIGJiLmV2ZW50LnVucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLmV2ZW50X2hhbmRsZS52YWx1ZSkKLSAgICAgICAgc2VsZi5jb21tYW5kX2NoYW5uZWwuY2xvc2UoKQotICAgICAgICBzZWxmLmNvb2tlci5zaHV0ZG93bihUcnVlKQotICAgICAgICBzZWxmLnF1aXRvdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBtc2cgPSAiRGVsYXlpbmcgc2h1dGRvd24gZHVlIHRvIGFjdGl2ZSBwcm9jZXNzZXMgd2hpY2ggYXBwZWFyIHRvIGJlIGhvbGRpbmcgYml0YmFrZS5sb2NrIgorICAgICAgICAgICAgICAgICAgICBpZiBwcm9jczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAiOlxuJXMiICUgc3RyKHByb2NzKQorICAgICAgICAgICAgICAgICAgICBwcmludChtc2cpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIFdlIGhvbGQgdGhlIGxvY2sgc28gd2UgY2FuIHJlbW92ZSB0aGUgZmlsZSAoaGlkZSBzdGFsZSBwaWQgZGF0YSkKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvY2tmaWxlKQorICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxvY2spCiAKICAgICBkZWYgaWRsZV9jb21tYW5kcyhzZWxmLCBkZWxheSwgZmRzPU5vbmUpOgogICAgICAgICBuZXh0c2xlZXAgPSBkZWxheQpAQCAtMTg2LDEwOSArMzA2LDMxNyBAQAogICAgICAgICAgICAgbmV4dHNsZWVwID0gc2VsZi5uZXh0X2hlYXJ0YmVhdCAtIG5vdwogCiAgICAgICAgIGlmIG5leHRzbGVlcCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoZmRzLFtdLFtdLG5leHRzbGVlcCkKKyAgICAgICAgICAgIGlmIHNlbGYueG1scnBjOgorICAgICAgICAgICAgICAgIG5leHRzbGVlcCA9IHNlbGYueG1scnBjLmdldF90aW1lb3V0KG5leHRzbGVlcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0LnNlbGVjdChmZHMsW10sW10sbmV4dHNsZWVwKVswXQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgRUlOVFIKKyAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxlY3Quc2VsZWN0KGZkcyxbXSxbXSwwKVswXQorCisKK2NsYXNzIFNlcnZlckNvbW11bmljYXRvcigpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uZWN0aW9uLCByZWN2KToKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgorICAgICAgICBzZWxmLnJlY3YgPSByZWN2CiAKICAgICBkZWYgcnVuQ29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJ1biBhIGNvb2tlciBjb21tYW5kIG9uIHRoZSBzZXJ2ZXIKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuY29tbWFuZF9jaGFubmVsLnNlbmQoc2VsZi5jb29rZXIuY29tbWFuZC5ydW5Db21tYW5kKGNvbW1hbmQpKQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZChjb21tYW5kKQorICAgICAgICBpZiBub3Qgc2VsZi5yZWN2LnBvbGwoMzApOgorICAgICAgICAgICAgcmFpc2UgUHJvY2Vzc1RpbWVvdXQoIlRpbWVvdXQgd2hpbGUgd2FpdGluZyBmb3IgYSByZXBseSBmcm9tIHRoZSBiaXRiYWtlIHNlcnZlciIpCisgICAgICAgIHJldHVybiBzZWxmLnJlY3YuZ2V0KCkKIAotICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICBzZWxmLnF1aXRpbi5zZW5kKCJxdWl0IikKLSAgICAgICAgc2VsZi5xdWl0aW4uY2xvc2UoKQotCi1jbGFzcyBCaXRCYWtlUHJvY2Vzc1NlcnZlckNvbm5lY3Rpb24oQml0QmFrZUJhc2VTZXJ2ZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVySW1wbCwgdWlfY2hhbm5lbCwgZXZlbnRfcXVldWUpOgotICAgICAgICBzZWxmLnByb2NzZXJ2ZXIgPSBzZXJ2ZXJJbXBsCi0gICAgICAgIHNlbGYudWlfY2hhbm5lbCA9IHVpX2NoYW5uZWwKLSAgICAgICAgc2VsZi5ldmVudF9xdWV1ZSA9IGV2ZW50X3F1ZXVlCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IFNlcnZlckNvbW11bmljYXRvcihzZWxmLnVpX2NoYW5uZWwsIHNlbGYucHJvY3NlcnZlci5ldmVudF9oYW5kbGUsIHNlbGYucHJvY3NlcnZlcikKLSAgICAgICAgc2VsZi5ldmVudHMgPSBzZWxmLmV2ZW50X3F1ZXVlCi0gICAgICAgIHNlbGYudGVybWluYXRlZCA9IEZhbHNlCi0KLSAgICBkZWYgc2lndGVybV90ZXJtaW5hdGUoc2VsZik6Ci0gICAgICAgIGJiLmVycm9yKCJVSSByZWNlaXZlZCBTSUdURVJNIikKLSAgICAgICAgc2VsZi50ZXJtaW5hdGUoKQotCi0gICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi50ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYudGVybWluYXRlZCA9IFRydWUKLSAgICAgICAgZGVmIGZsdXNoZXZlbnRzKCk6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBzZWxmLmV2ZW50X3F1ZXVlLmdldChibG9jaz1GYWxzZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKEVtcHR5LCBJT0Vycm9yKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBsb2dnaW5nLkxvZ1JlY29yZCk6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGUoZXZlbnQpCi0KLSAgICAgICAgc2VsZi5wcm9jc2VydmVyLnN0b3AoKQotCi0gICAgICAgIHdoaWxlIHNlbGYucHJvY3NlcnZlci5pc19hbGl2ZSgpOgotICAgICAgICAgICAgZmx1c2hldmVudHMoKQotICAgICAgICAgICAgc2VsZi5wcm9jc2VydmVyLmpvaW4oMC4xKQotCi0gICAgICAgIHNlbGYudWlfY2hhbm5lbC5jbG9zZSgpCi0gICAgICAgIHNlbGYuZXZlbnRfcXVldWUuY2xvc2UoKQotICAgICAgICBzZWxmLmV2ZW50X3F1ZXVlLnNldGV4aXQoKQotICAgICAgICAjIFhYWDogQ2FsbCBleHBsaWNpdHkgY2xvc2UgaW4gX3dyaXRlciB0byBhdm9pZAotICAgICAgICAjIGZkIGxlYWthZ2UgYmVjYXVzZSBpc24ndCBjYWxsZWQgb24gUXVldWUuY2xvc2UoKQotICAgICAgICBzZWxmLmV2ZW50X3F1ZXVlLl93cml0ZXIuY2xvc2UoKQotCi0jIFdyYXAgUXVldWUgdG8gcHJvdmlkZSBBUEkgd2hpY2ggaXNuJ3Qgc2VydmVyIGltcGxlbWVudGF0aW9uIHNwZWNpZmljCi1jbGFzcyBQcm9jZXNzRXZlbnRRdWV1ZShtdWx0aXByb2Nlc3NpbmcucXVldWVzLlF1ZXVlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4c2l6ZSk6Ci0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMuUXVldWUuX19pbml0X18oc2VsZiwgbWF4c2l6ZSwgY3R4PW11bHRpcHJvY2Vzc2luZy5nZXRfY29udGV4dCgpKQotICAgICAgICBzZWxmLmV4aXQgPSBGYWxzZQotICAgICAgICBiYi51dGlscy5zZXRfcHJvY2Vzc19uYW1lKCJQcm9jZXNzRVF1ZXVlIikKLQotICAgIGRlZiBzZXRleGl0KHNlbGYpOgotICAgICAgICBzZWxmLmV4aXQgPSBUcnVlCi0KLSAgICBkZWYgd2FpdEV2ZW50KHNlbGYsIHRpbWVvdXQpOgotICAgICAgICBpZiBzZWxmLmV4aXQ6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRFdmVudCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlci5pc19hbGl2ZSgpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldEV2ZW50KCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmdldChUcnVlLCB0aW1lb3V0KQotICAgICAgICBleGNlcHQgRW1wdHk6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldEV2ZW50KHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKToKLSAgICAgICAgICAgICAgICBzZWxmLnNldGV4aXQoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0KEZhbHNlKQotICAgICAgICBleGNlcHQgRW1wdHk6Ci0gICAgICAgICAgICBpZiBzZWxmLmV4aXQ6Ci0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLWNsYXNzIEJpdEJha2VTZXJ2ZXIoQml0QmFrZUJhc2VTZXJ2ZXIpOgotICAgIGRlZiBpbml0U2VydmVyKHNlbGYsIHNpbmdsZV91c2U9VHJ1ZSk6Ci0gICAgICAgICMgZXN0YWJsaXNoIGNvbW11bmljYXRpb24gY2hhbm5lbHMuICBXZSB1c2UgYmlkaXJlY3Rpb25hbCBwaXBlcyBmb3IKLSAgICAgICAgIyB1aSA8LS0+IHNlcnZlciBjb21tYW5kL3Jlc3BvbnNlIHBhaXJzCi0gICAgICAgICMgYW5kIGEgcXVldWUgZm9yIHNlcnZlciAtPiB1aSBldmVudCBub3RpZmljYXRpb25zCi0gICAgICAgICMKLSAgICAgICAgc2VsZi51aV9jaGFubmVsLCBzZWxmLnNlcnZlcl9jaGFubmVsID0gUGlwZSgpCi0gICAgICAgIHNlbGYuZXZlbnRfcXVldWUgPSBQcm9jZXNzRXZlbnRRdWV1ZSgwKQotICAgICAgICBzZWxmLnNlcnZlckltcGwgPSBQcm9jZXNzU2VydmVyKHNlbGYuc2VydmVyX2NoYW5uZWwsIHNlbGYuZXZlbnRfcXVldWUsIE5vbmUpCi0gICAgICAgIHNlbGYuZXZlbnRfcXVldWUuc2VydmVyID0gc2VsZi5zZXJ2ZXJJbXBsCi0KLSAgICBkZWYgZGV0YWNoKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlckltcGwuc3RhcnQoKQotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBlc3RhYmxpc2hDb25uZWN0aW9uKHNlbGYsIGZlYXR1cmVzZXQpOgotCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IEJpdEJha2VQcm9jZXNzU2VydmVyQ29ubmVjdGlvbihzZWxmLnNlcnZlckltcGwsIHNlbGYudWlfY2hhbm5lbCwgc2VsZi5ldmVudF9xdWV1ZSkKLQotICAgICAgICBfLCBlcnJvciA9IHNlbGYuY29ubmVjdGlvbi5jb25uZWN0aW9uLnJ1bkNvbW1hbmQoWyJzZXRGZWF0dXJlcyIsIGZlYXR1cmVzZXRdKQorICAgIGRlZiB1cGRhdGVGZWF0dXJlU2V0KHNlbGYsIGZlYXR1cmVzZXQpOgorICAgICAgICBfLCBlcnJvciA9IHNlbGYucnVuQ29tbWFuZChbInNldEZlYXR1cmVzIiwgZmVhdHVyZXNldF0pCiAgICAgICAgIGlmIGVycm9yOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gc2V0IHRoZSBjb29rZXIgdG8gdGhlIGNvcnJlY3QgZmVhdHVyZXNldDogJXMiICUgZXJyb3IpCiAgICAgICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBsYW1iZGEgaSwgczogc2VsZi5jb25uZWN0aW9uLnNpZ3Rlcm1fdGVybWluYXRlKCkpCi0gICAgICAgIHJldHVybiBzZWxmLmNvbm5lY3Rpb24KKworICAgIGRlZiBnZXRFdmVudEhhbmRsZShzZWxmKToKKyAgICAgICAgaGFuZGxlLCBlcnJvciA9IHNlbGYucnVuQ29tbWFuZChbImdldFVJSGFuZGxlck51bSJdKQorICAgICAgICBpZiBlcnJvcjoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGdldCBVSSBIYW5kbGVyIE51bWJlcjogJXMiICUgZXJyb3IpCisgICAgICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorCisgICAgICAgIHJldHVybiBoYW5kbGUKKworICAgIGRlZiB0ZXJtaW5hdGVTZXJ2ZXIoc2VsZik6CisgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZW5kKFsndGVybWluYXRlU2VydmVyJ10pCisgICAgICAgIHJldHVybgorCitjbGFzcyBCaXRCYWtlUHJvY2Vzc1NlcnZlckNvbm5lY3Rpb24ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdWlfY2hhbm5lbCwgcmVjdiwgZXEsIHNvY2spOgorICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBTZXJ2ZXJDb21tdW5pY2F0b3IodWlfY2hhbm5lbCwgcmVjdikKKyAgICAgICAgc2VsZi5ldmVudHMgPSBlcQorICAgICAgICAjIFNhdmUgc29jayBzbyBpdCBkb2Vzbid0IGdldCBnYydkIGZvciB0aGUgbGlmZSBvZiBvdXIgY29ubmVjdGlvbgorICAgICAgICBzZWxmLnNvY2tldF9jb25uZWN0aW9uID0gc29jaworCisgICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKKyAgICAgICAgc2VsZi5zb2NrZXRfY29ubmVjdGlvbi5jbG9zZSgpCisgICAgICAgIHNlbGYuY29ubmVjdGlvbi5jb25uZWN0aW9uLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlY3YuY2xvc2UoKQorICAgICAgICByZXR1cm4KKworY2xhc3MgQml0QmFrZVNlcnZlcihvYmplY3QpOgorICAgIHN0YXJ0X2xvZ19mb3JtYXQgPSAnLS0tIFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyIHBpZCAlcyBhdCAlcyAtLS0nCisgICAgc3RhcnRfbG9nX2RhdGV0aW1lX2Zvcm1hdCA9ICclWS0lbS0lZCAlSDolTTolUy4lZicKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NrLCBzb2NrbmFtZSwgY29uZmlndXJhdGlvbiwgZmVhdHVyZXNldCk6CisKKyAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbgorICAgICAgICBzZWxmLmZlYXR1cmVzZXQgPSBmZWF0dXJlc2V0CisgICAgICAgIHNlbGYuc29ja25hbWUgPSBzb2NrbmFtZQorICAgICAgICBzZWxmLmJpdGJha2VfbG9jayA9IGxvY2sKKyAgICAgICAgc2VsZi5yZWFkeXBpcGUsIHNlbGYucmVhZHlwaXBlaW4gPSBvcy5waXBlKCkKKworICAgICAgICAjIENyZWF0ZSBzZXJ2ZXIgY29udHJvbCBzb2NrZXQKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc29ja25hbWUpOgorICAgICAgICAgICAgb3MudW5saW5rKHNvY2tuYW1lKQorCisgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgIyBBRl9VTklYIGhhcyBwYXRoIGxlbmd0aCBpc3N1ZXMgc28gY2hkaXIgaGVyZSB0byB3b3JrYXJvdW5kCisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIGxvZ2ZpbGUgPSBvcy5wYXRoLmpvaW4oY3dkLCAiYml0YmFrZS1jb29rZXJkYWVtb24ubG9nIikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUoc29ja25hbWUpKQorICAgICAgICAgICAgc2VsZi5zb2NrLmJpbmQob3MucGF0aC5iYXNlbmFtZShzb2NrbmFtZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihjd2QpCisgICAgICAgIHNlbGYuc29jay5saXN0ZW4oMSkKKworICAgICAgICBvcy5zZXRfaW5oZXJpdGFibGUoc2VsZi5zb2NrLmZpbGVubygpLCBUcnVlKQorICAgICAgICBzdGFydGRhdGV0aW1lID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgYmIuZGFlbW9uaXplLmNyZWF0ZURhZW1vbihzZWxmLl9zdGFydFNlcnZlciwgbG9nZmlsZSkKKyAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5iaXRiYWtlX2xvY2suY2xvc2UoKQorCisgICAgICAgIHJlYWR5ID0gQ29ubmVjdGlvblJlYWRlcihzZWxmLnJlYWR5cGlwZSkKKyAgICAgICAgciA9IHJlYWR5LnBvbGwoMzApCisgICAgICAgIGlmIHI6CisgICAgICAgICAgICByID0gcmVhZHkuZ2V0KCkKKyAgICAgICAgaWYgbm90IHIgb3IgciAhPSAicmVhZHkiOgorICAgICAgICAgICAgcmVhZHkuY2xvc2UoKQorICAgICAgICAgICAgYmIuZXJyb3IoIlVuYWJsZSB0byBzdGFydCBiaXRiYWtlIHNlcnZlciIpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsb2dmaWxlKToKKyAgICAgICAgICAgICAgICBsb2dzdGFydF9yZSA9IHJlLmNvbXBpbGUoc2VsZi5zdGFydF9sb2dfZm9ybWF0ICUgKCcoWzAtOV0rKScsICcoWzAtOS1dKyBbMC05Oi5dKyknKSkKKyAgICAgICAgICAgICAgICBzdGFydGVkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxvZ2ZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IGxvZ3N0YXJ0X3JlLm1hdGNoKGxpbmUucnN0cmlwKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZGF0ZXRpbWUgPSBkYXRldGltZS5kYXRldGltZS5zdHJwdGltZShyZXMuZ3JvdXAoMiksIHNlbGYuc3RhcnRfbG9nX2RhdGV0aW1lX2Zvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGRhdGV0aW1lID49IHN0YXJ0ZGF0ZXRpbWU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbGluZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lcykgPiAxMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCJMYXN0IDEwIGxpbmVzIG9mIHNlcnZlciBsb2cgZm9yIHRoaXMgc2Vzc2lvbiAoJXMpOlxuJXMiICUgKGxvZ2ZpbGUsICIiLmpvaW4obGluZXNbLTEwOl0pKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCJTZXJ2ZXIgbG9nIGZvciB0aGlzIHNlc3Npb24gKCVzKTpcbiVzIiAlIChsb2dmaWxlLCAiIi5qb2luKGxpbmVzKSkpCisgICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KDEpCisgICAgICAgIHJlYWR5LmNsb3NlKCkKKyAgICAgICAgb3MuY2xvc2Uoc2VsZi5yZWFkeXBpcGVpbikKKworICAgIGRlZiBfc3RhcnRTZXJ2ZXIoc2VsZik6CisgICAgICAgIHByaW50KHNlbGYuc3RhcnRfbG9nX2Zvcm1hdCAlIChvcy5nZXRwaWQoKSwgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoc2VsZi5zdGFydF9sb2dfZGF0ZXRpbWVfZm9ybWF0KSkpCisgICAgICAgIHNlcnZlciA9IFByb2Nlc3NTZXJ2ZXIoc2VsZi5iaXRiYWtlX2xvY2ssIHNlbGYuc29jaywgc2VsZi5zb2NrbmFtZSkKKyAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uLnNldFNlcnZlclJlZ0lkbGVDYWxsYmFjayhzZXJ2ZXIucmVnaXN0ZXJfaWRsZV9mdW5jdGlvbikKKyAgICAgICAgd3JpdGVyID0gQ29ubmVjdGlvbldyaXRlcihzZWxmLnJlYWR5cGlwZWluKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNvb2tlciA9IGJiLmNvb2tlci5CQkNvb2tlcihzZWxmLmNvbmZpZ3VyYXRpb24sIHNlbGYuZmVhdHVyZXNldCkKKyAgICAgICAgICAgIHdyaXRlci5zZW5kKCJyZWFkeSIpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHdyaXRlci5zZW5kKCJmYWlsIikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShzZWxmLnJlYWR5cGlwZWluKQorICAgICAgICBzZXJ2ZXIuY29va2VyID0gc2VsZi5jb29rZXIKKyAgICAgICAgc2VydmVyLnNlcnZlcl90aW1lb3V0ID0gc2VsZi5jb25maWd1cmF0aW9uLnNlcnZlcl90aW1lb3V0CisgICAgICAgIHNlcnZlci54bWxycGNpbnRlcmZhY2UgPSBzZWxmLmNvbmZpZ3VyYXRpb24ueG1scnBjaW50ZXJmYWNlCisgICAgICAgIHByaW50KCJTdGFydGVkIGJpdGJha2Ugc2VydmVyIHBpZCAlZCIgJSBvcy5nZXRwaWQoKSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKworZGVmIGNvbm5lY3RQcm9jZXNzU2VydmVyKHNvY2tuYW1lLCBmZWF0dXJlc2V0KToKKyAgICAjIENvbm5lY3QgdG8gc29ja2V0CisgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAjIEFGX1VOSVggaGFzIHBhdGggbGVuZ3RoIGlzc3VlcyBzbyBjaGRpciBoZXJlIHRvIHdvcmthcm91bmQKKyAgICBjd2QgPSBvcy5nZXRjd2QoKQorCisgICAgdHJ5OgorICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUoc29ja25hbWUpKQorICAgICAgICBzb2NrLmNvbm5lY3Qob3MucGF0aC5iYXNlbmFtZShzb2NrbmFtZSkpCisgICAgZmluYWxseToKKyAgICAgICAgb3MuY2hkaXIoY3dkKQorCisgICAgcmVhZGZkID0gd3JpdGVmZCA9IHJlYWRmZDEgPSB3cml0ZWZkMSA9IHJlYWRmZDIgPSB3cml0ZWZkMiA9IE5vbmUKKyAgICBlcSA9IGNvbW1hbmRfY2hhbl9yZWN2ID0gY29tbWFuZF9jaGFuID0gTm9uZQorCisgICAgdHJ5OgorCisgICAgICAgICMgU2VuZCBhbiBmZCBmb3IgdGhlIHJlbW90ZSB0byB3cml0ZSBldmVudHMgdG8KKyAgICAgICAgcmVhZGZkLCB3cml0ZWZkID0gb3MucGlwZSgpCisgICAgICAgIGVxID0gQkJVSUV2ZW50UXVldWUocmVhZGZkKQorICAgICAgICAjIFNlbmQgYW4gZmQgZm9yIHRoZSByZW1vdGUgdG8gcmVjaWV2ZSBjb21tYW5kcyBmcm9tCisgICAgICAgIHJlYWRmZDEsIHdyaXRlZmQxID0gb3MucGlwZSgpCisgICAgICAgIGNvbW1hbmRfY2hhbiA9IENvbm5lY3Rpb25Xcml0ZXIod3JpdGVmZDEpCisgICAgICAgICMgU2VuZCBhbiBmZCBmb3IgdGhlIHJlbW90ZSB0byB3cml0ZSBjb21tYW5kcyByZXN1bHRzIHRvCisgICAgICAgIHJlYWRmZDIsIHdyaXRlZmQyID0gb3MucGlwZSgpCisgICAgICAgIGNvbW1hbmRfY2hhbl9yZWN2ID0gQ29ubmVjdGlvblJlYWRlcihyZWFkZmQyKQorCisgICAgICAgIHNlbmRmZHMoc29jaywgW3dyaXRlZmQsIHJlYWRmZDEsIHdyaXRlZmQyXSkKKworICAgICAgICBzZXJ2ZXJfY29ubmVjdGlvbiA9IEJpdEJha2VQcm9jZXNzU2VydmVyQ29ubmVjdGlvbihjb21tYW5kX2NoYW4sIGNvbW1hbmRfY2hhbl9yZWN2LCBlcSwgc29jaykKKworICAgICAgICAjIENsb3NlIHRoZSBlbmRzIG9mIHRoZSBwaXBlcyB3ZSB3b24ndCB1c2UKKyAgICAgICAgZm9yIGkgaW4gW3dyaXRlZmQsIHJlYWRmZDEsIHdyaXRlZmQyXToKKyAgICAgICAgICAgIG9zLmNsb3NlKGkpCisKKyAgICAgICAgc2VydmVyX2Nvbm5lY3Rpb24uY29ubmVjdGlvbi51cGRhdGVGZWF0dXJlU2V0KGZlYXR1cmVzZXQpCisKKyAgICBleGNlcHQgKEV4Y2VwdGlvbiwgU3lzdGVtRXhpdCkgYXMgZToKKyAgICAgICAgaWYgY29tbWFuZF9jaGFuX3JlY3Y6CisgICAgICAgICAgICBjb21tYW5kX2NoYW5fcmVjdi5jbG9zZSgpCisgICAgICAgIGlmIGNvbW1hbmRfY2hhbjoKKyAgICAgICAgICAgIGNvbW1hbmRfY2hhbi5jbG9zZSgpCisgICAgICAgIGZvciBpIGluIFt3cml0ZWZkLCByZWFkZmQxLCB3cml0ZWZkMl06CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UoaSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIHJhaXNlCisKKyAgICByZXR1cm4gc2VydmVyX2Nvbm5lY3Rpb24KKworZGVmIHNlbmRmZHMoc29jaywgZmRzKToKKyAgICAgICAgJycnU2VuZCBhbiBhcnJheSBvZiBmZHMgb3ZlciBhbiBBRl9VTklYIHNvY2tldC4nJycKKyAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoJ2knLCBmZHMpCisgICAgICAgIG1zZyA9IGJ5dGVzKFtsZW4oZmRzKSAlIDI1Nl0pCisgICAgICAgIHNvY2suc2VuZG1zZyhbbXNnXSwgWyhzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNDTV9SSUdIVFMsIGZkcyldKQorCitkZWYgcmVjdmZkcyhzb2NrLCBzaXplKToKKyAgICAgICAgJycnUmVjZWl2ZSBhbiBhcnJheSBvZiBmZHMgb3ZlciBhbiBBRl9VTklYIHNvY2tldC4nJycKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdpJykKKyAgICAgICAgYnl0ZXNfc2l6ZSA9IGEuaXRlbXNpemUgKiBzaXplCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzb2NrLnJlY3Ztc2coMSwgc29ja2V0LkNNU0dfTEVOKGJ5dGVzX3NpemUpKQorICAgICAgICBpZiBub3QgbXNnIGFuZCBub3QgYW5jZGF0YToKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGxlbihhbmNkYXRhKSAhPSAxOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigncmVjZWl2ZWQgJWQgaXRlbXMgb2YgYW5jZGF0YScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oYW5jZGF0YSkpCisgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgICAgIGlmIChjbXNnX2xldmVsID09IHNvY2tldC5TT0xfU09DS0VUIGFuZAorICAgICAgICAgICAgICAgIGNtc2dfdHlwZSA9PSBzb2NrZXQuU0NNX1JJR0hUUyk6CisgICAgICAgICAgICAgICAgaWYgbGVuKGNtc2dfZGF0YSkgJSBhLml0ZW1zaXplICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICBhLmZyb21ieXRlcyhjbXNnX2RhdGEpCisgICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihhKSAlIDI1NiA9PSBtc2dbMF0KKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdChhKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IpOgorICAgICAgICAgICAgcGFzcworICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ludmFsaWQgZGF0YSByZWNlaXZlZCcpCisKK2NsYXNzIEJCVUlFdmVudFF1ZXVlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFkZmQpOgorCisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZSA9IFtdCisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZUxvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZU5vdGlmeSA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgc2VsZi5yZWFkZXIgPSBDb25uZWN0aW9uUmVhZGVyKHJlYWRmZCkKKworICAgICAgICBzZWxmLnQgPSB0aHJlYWRpbmcuVGhyZWFkKCkKKyAgICAgICAgc2VsZi50LnNldERhZW1vbihUcnVlKQorICAgICAgICBzZWxmLnQucnVuID0gc2VsZi5zdGFydENhbGxiYWNrSGFuZGxlcgorICAgICAgICBzZWxmLnQuc3RhcnQoKQorCisgICAgZGVmIGdldEV2ZW50KHNlbGYpOgorICAgICAgICBzZWxmLmV2ZW50UXVldWVMb2NrLmFjcXVpcmUoKQorCisgICAgICAgIGlmIGxlbihzZWxmLmV2ZW50UXVldWUpID09IDA6CisgICAgICAgICAgICBzZWxmLmV2ZW50UXVldWVMb2NrLnJlbGVhc2UoKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBpdGVtID0gc2VsZi5ldmVudFF1ZXVlLnBvcCgwKQorCisgICAgICAgIGlmIGxlbihzZWxmLmV2ZW50UXVldWUpID09IDA6CisgICAgICAgICAgICBzZWxmLmV2ZW50UXVldWVOb3RpZnkuY2xlYXIoKQorCisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZUxvY2sucmVsZWFzZSgpCisgICAgICAgIHJldHVybiBpdGVtCisKKyAgICBkZWYgd2FpdEV2ZW50KHNlbGYsIGRlbGF5KToKKyAgICAgICAgc2VsZi5ldmVudFF1ZXVlTm90aWZ5LndhaXQoZGVsYXkpCisgICAgICAgIHJldHVybiBzZWxmLmdldEV2ZW50KCkKKworICAgIGRlZiBxdWV1ZV9ldmVudChzZWxmLCBldmVudCk6CisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZUxvY2suYWNxdWlyZSgpCisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZS5hcHBlbmQoZXZlbnQpCisgICAgICAgIHNlbGYuZXZlbnRRdWV1ZU5vdGlmeS5zZXQoKQorICAgICAgICBzZWxmLmV2ZW50UXVldWVMb2NrLnJlbGVhc2UoKQorCisgICAgZGVmIHNlbmRfZXZlbnQoc2VsZiwgZXZlbnQpOgorICAgICAgICBzZWxmLnF1ZXVlX2V2ZW50KHBpY2tsZS5sb2FkcyhldmVudCkpCisKKyAgICBkZWYgc3RhcnRDYWxsYmFja0hhbmRsZXIoc2VsZik6CisgICAgICAgIGJiLnV0aWxzLnNldF9wcm9jZXNzX25hbWUoIlVJRXZlbnRRdWV1ZSIpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5yZWFkZXIud2FpdCgpCisgICAgICAgICAgICAgICAgZXZlbnQgPSBzZWxmLnJlYWRlci5nZXQoKQorICAgICAgICAgICAgICAgIHNlbGYucXVldWVfZXZlbnQoZXZlbnQpCisgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgIyBFYXNpZXN0IHdheSB0byBleGl0IGlzIHRvIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gY2F1c2UgYW4gZXhpdAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHNlbGYucmVhZGVyLmNsb3NlKCkKKworY2xhc3MgQ29ubmVjdGlvblJlYWRlcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkKToKKyAgICAgICAgc2VsZi5yZWFkZXIgPSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi5Db25uZWN0aW9uKGZkLCB3cml0YWJsZT1GYWxzZSkKKyAgICAgICAgc2VsZi5ybG9jayA9IG11bHRpcHJvY2Vzc2luZy5Mb2NrKCkKKworICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0KFtzZWxmLnJlYWRlcl0sIHRpbWVvdXQpCisKKyAgICBkZWYgcG9sbChzZWxmLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucG9sbCh0aW1lb3V0KQorCisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnJsb2NrOgorICAgICAgICAgICAgcmVzID0gc2VsZi5yZWFkZXIucmVjdl9ieXRlcygpCisgICAgICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcucmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5maWxlbm8oKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIuY2xvc2UoKQorCisKK2NsYXNzIENvbm5lY3Rpb25Xcml0ZXIob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZCk6CisgICAgICAgIHNlbGYud3JpdGVyID0gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uQ29ubmVjdGlvbihmZCwgcmVhZGFibGU9RmFsc2UpCisgICAgICAgIHNlbGYud2xvY2sgPSBtdWx0aXByb2Nlc3NpbmcuTG9jaygpCisgICAgICAgICMgV2h5IGJiLmV2ZW50IG5lZWRzIHRoaXMgSSBoYXZlIG5vIGlkZWEKKyAgICAgICAgc2VsZi5ldmVudCA9IHNlbGYKKworICAgIGRlZiBzZW5kKHNlbGYsIG9iaik6CisgICAgICAgIG9iaiA9IG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQorICAgICAgICB3aXRoIHNlbGYud2xvY2s6CisgICAgICAgICAgICBzZWxmLndyaXRlci5zZW5kX2J5dGVzKG9iaikKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLndyaXRlci5maWxlbm8oKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi53cml0ZXIuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwYy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA2MDA3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwYy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMiArMCwwIEBACi0jCi0jIEJpdEJha2UgWE1MUlBDIFNlcnZlcgotIwotIyBDb3B5cmlnaHQgKEMpIDIwMDYgLSAyMDA3ICBNaWNoYWVsICdNaWNrZXknIExhdWVyCi0jIENvcHlyaWdodCAoQykgMjAwNiAtIDIwMDggIFJpY2hhcmQgUHVyZGllCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotCi0iIiIKLSAgICBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGFuIHhtbHJwYyBzZXJ2ZXIgZm9yIEJpdEJha2UuCi0KLSAgICBVc2UgdGhpcyBieSBkZXJpdmluZyBhIGNsYXNzIGZyb20gQml0QmFrZVhNTFJQQ1NlcnZlciBhbmQgdGhlbiBhZGRpbmcKLSAgICBtZXRob2RzIHdoaWNoIHlvdSB3YW50IHRvICJleHBvcnQiIHZpYSBYTUxSUEMuIElmIHRoZSBtZXRob2RzIGhhdmUgdGhlCi0gICAgcHJlZml4IHhtbHJwY18sIHRoZW4gcmVnaXN0ZXJpbmcgdGhvc2UgZnVuY3Rpb24gd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSwKLSAgICBpZiBub3QsIHlvdSBuZWVkIHRvIGNhbGwgcmVnaXN0ZXJfZnVuY3Rpb24uCi0KLSAgICBVc2UgcmVnaXN0ZXJfaWRsZV9mdW5jdGlvbigpIHRvIGFkZCBhIGZ1bmN0aW9uIHdoaWNoIHRoZSB4bWxycGMgc2VydmVyCi0gICAgY2FsbHMgZnJvbSB3aXRoaW4gc2VydmVyX2ZvcmV2ZXIgd2hlbiBubyByZXF1ZXN0cyBhcmUgcGVuZGluZy4gTWFrZSBzdXJlCi0gICAgdGhhdCB0aG9zZSBmdW5jdGlvbnMgYXJlIG5vbi1ibG9ja2luZyBvciBlbHNlIHlvdSB3aWxsIGludHJvZHVjZSBsYXRlbmN5Ci0gICAgaW4gdGhlIHNlcnZlcidzIG1haW4gbG9vcC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotaW1wb3J0IGhhc2hsaWIKLWltcG9ydCB0aW1lCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgcGlja2xlCi1pbXBvcnQgaW5zcGVjdAotaW1wb3J0IHNlbGVjdAotaW1wb3J0IGh0dHAuY2xpZW50Ci1pbXBvcnQgeG1scnBjLmNsaWVudAotZnJvbSB4bWxycGMuc2VydmVyIGltcG9ydCBTaW1wbGVYTUxSUENTZXJ2ZXIsIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyCi0KLWltcG9ydCBiYgotZnJvbSBiYiBpbXBvcnQgZGFlbW9uaXplCi1mcm9tIGJiLnVpIGltcG9ydCB1aWV2ZW50Ci1mcm9tIC4gaW1wb3J0IEJpdEJha2VCYXNlU2VydmVyLCBCaXRCYWtlQmFzZVNlcnZlckNvbm5lY3Rpb24sIEJhc2VJbXBsU2VydmVyCi0KLURFQlVHID0gRmFsc2UKLQotY2xhc3MgQkJUcmFuc3BvcnQoeG1scnBjLmNsaWVudC5UcmFuc3BvcnQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW1lb3V0KToKLSAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAotICAgICAgICBzZWxmLmNvbm5lY3Rpb25fdG9rZW4gPSBOb25lCi0gICAgICAgIHhtbHJwYy5jbGllbnQuVHJhbnNwb3J0Ll9faW5pdF9fKHNlbGYpCi0KLSAgICAjIE1vZGlmaWVkIGZyb20gZGVmYXVsdCB0byBwYXNzIHRpbWVvdXQgdG8gSFRUUENvbm5lY3Rpb24KLSAgICBkZWYgbWFrZV9jb25uZWN0aW9uKHNlbGYsIGhvc3QpOgotICAgICAgICAjcmV0dXJuIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gaWYgcG9zc2libGUuICBUaGlzIGFsbG93cwotICAgICAgICAjSFRUUC8xLjEga2VlcC1hbGl2ZS4KLSAgICAgICAgaWYgc2VsZi5fY29ubmVjdGlvbiBhbmQgaG9zdCA9PSBzZWxmLl9jb25uZWN0aW9uWzBdOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm5lY3Rpb25bMV0KLQotICAgICAgICAjIGNyZWF0ZSBhIEhUVFAgY29ubmVjdGlvbiBvYmplY3QgZnJvbSBhIGhvc3QgZGVzY3JpcHRvcgotICAgICAgICBjaG9zdCwgc2VsZi5fZXh0cmFfaGVhZGVycywgeDUwOSA9IHNlbGYuZ2V0X2hvc3RfaW5mbyhob3N0KQotICAgICAgICAjc3RvcmUgdGhlIGhvc3QgYXJndW1lbnQgYWxvbmcgd2l0aCB0aGUgY29ubmVjdGlvbiBvYmplY3QKLSAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IGhvc3QsIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKGNob3N0LCB0aW1lb3V0PXNlbGYudGltZW91dCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm5lY3Rpb25bMV0KLQotICAgIGRlZiBzZXRfY29ubmVjdGlvbl90b2tlbihzZWxmLCB0b2tlbik6Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbl90b2tlbiA9IHRva2VuCi0KLSAgICBkZWYgc2VuZF9jb250ZW50KHNlbGYsIGgsIGJvZHkpOgotICAgICAgICBpZiBzZWxmLmNvbm5lY3Rpb25fdG9rZW46Ci0gICAgICAgICAgICBoLnB1dGhlYWRlcigiQml0YmFrZS10b2tlbiIsIHNlbGYuY29ubmVjdGlvbl90b2tlbikKLSAgICAgICAgeG1scnBjLmNsaWVudC5UcmFuc3BvcnQuc2VuZF9jb250ZW50KHNlbGYsIGgsIGJvZHkpCi0KLWRlZiBfY3JlYXRlX3NlcnZlcihob3N0LCBwb3J0LCB0aW1lb3V0ID0gNjApOgotICAgIHQgPSBCQlRyYW5zcG9ydCh0aW1lb3V0KQotICAgIHMgPSB4bWxycGMuY2xpZW50LlNlcnZlclByb3h5KCJodHRwOi8vJXM6JWQvIiAlIChob3N0LCBwb3J0KSwgdHJhbnNwb3J0PXQsIGFsbG93X25vbmU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKLSAgICByZXR1cm4gcywgdAotCi1kZWYgY2hlY2tfY29ubmVjdGlvbihyZW1vdGUsIHRpbWVvdXQpOgotICAgIHRyeToKLSAgICAgICAgaG9zdCwgcG9ydCA9IHJlbW90ZS5zcGxpdCgiOiIpCi0gICAgICAgIHBvcnQgPSBpbnQocG9ydCkKLSAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgIGJiLndhcm4oIkZhaWxlZCB0byByZWFkIHJlbW90ZSBkZWZpbml0aW9uICglcykiICUgc3RyKGUpKQotICAgICAgICByYWlzZSBlCi0KLSAgICBzZXJ2ZXIsIF90cmFuc3BvcnQgPSBfY3JlYXRlX3NlcnZlcihob3N0LCBwb3J0LCB0aW1lb3V0KQotICAgIHRyeToKLSAgICAgICAgcmV0LCBlcnIgPSAgc2VydmVyLnJ1bkNvbW1hbmQoWydnZXRWYXJpYWJsZScsICdUT1BESVInXSkKLSAgICAgICAgaWYgZXJyIG9yIG5vdCByZXQ6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBleGNlcHQgQ29ubmVjdGlvbkVycm9yOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCi1jbGFzcyBCaXRCYWtlU2VydmVyQ29tbWFuZHMoKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXIpOgotICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlcgotICAgICAgICBzZWxmLmhhc19jbGllbnQgPSBGYWxzZQotCi0gICAgZGVmIHJlZ2lzdGVyRXZlbnRIYW5kbGVyKHNlbGYsIGhvc3QsIHBvcnQpOgotICAgICAgICAiIiIKLSAgICAgICAgUmVnaXN0ZXIgYSByZW1vdGUgVUkgRXZlbnQgSGFuZGxlcgotICAgICAgICAiIiIKLSAgICAgICAgcywgdCA9IF9jcmVhdGVfc2VydmVyKGhvc3QsIHBvcnQpCi0KLSAgICAgICAgIyB3ZSBkb24ndCBhbGxvdyBjb25uZWN0aW9ucyBpZiB0aGUgY29va2VyIGlzIHJ1bm5pbmcKLSAgICAgICAgaWYgKHNlbGYuY29va2VyLnN0YXRlIGluIFtiYi5jb29rZXIuc3RhdGUucGFyc2luZywgYmIuY29va2VyLnN0YXRlLnJ1bm5pbmddKToKLSAgICAgICAgICAgIHJldHVybiBOb25lLCAiQ29va2VyIGlzIGJ1c3k6ICVzIiAlIGJiLmNvb2tlci5zdGF0ZS5nZXRfbmFtZShzZWxmLmNvb2tlci5zdGF0ZSkKLQotICAgICAgICBzZWxmLmV2ZW50X2hhbmRsZSA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIocywgVHJ1ZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuZXZlbnRfaGFuZGxlLCAnT0snCi0KLSAgICBkZWYgdW5yZWdpc3RlckV2ZW50SGFuZGxlcihzZWxmLCBoYW5kbGVyTnVtKToKLSAgICAgICAgIiIiCi0gICAgICAgIFVucmVnaXN0ZXIgYSByZW1vdGUgVUkgRXZlbnQgSGFuZGxlcgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGJiLmV2ZW50LnVucmVnaXN0ZXJfVUlIaGFuZGxlcihoYW5kbGVyTnVtKQotCi0gICAgZGVmIHJ1bkNvbW1hbmQoc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgICIiIgotICAgICAgICBSdW4gYSBjb29rZXIgY29tbWFuZCBvbiB0aGUgc2VydmVyCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5jb29rZXIuY29tbWFuZC5ydW5Db21tYW5kKGNvbW1hbmQsIHNlbGYuc2VydmVyLnJlYWRvbmx5KQotCi0gICAgZGVmIGdldEV2ZW50SGFuZGxlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5ldmVudF9oYW5kbGUKLQotICAgIGRlZiB0ZXJtaW5hdGVTZXJ2ZXIoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUcmlnZ2VyIHRoZSBzZXJ2ZXIgdG8gcXVpdAotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5zZXJ2ZXIucXVpdCA9IFRydWUKLSAgICAgICAgcHJpbnQoIlNlcnZlciAoY29va2VyKSBleGl0aW5nIikKLSAgICAgICAgcmV0dXJuCi0KLSAgICBkZWYgYWRkQ2xpZW50KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmhhc19jbGllbnQ6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB0b2tlbiA9IGhhc2hsaWIubWQ1KHN0cih0aW1lLnRpbWUoKSkuZW5jb2RlKCJ1dGYtOCIpKS5oZXhkaWdlc3QoKQotICAgICAgICBzZWxmLnNlcnZlci5zZXRfY29ubmVjdGlvbl90b2tlbih0b2tlbikKLSAgICAgICAgc2VsZi5oYXNfY2xpZW50ID0gVHJ1ZQotICAgICAgICByZXR1cm4gdG9rZW4KLQotICAgIGRlZiByZW1vdmVDbGllbnQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuaGFzX2NsaWVudDoKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLnNldF9jb25uZWN0aW9uX3Rva2VuKE5vbmUpCi0gICAgICAgICAgICBzZWxmLmhhc19jbGllbnQgPSBGYWxzZQotICAgICAgICAgICAgaWYgc2VsZi5zZXJ2ZXIuc2luZ2xlX3VzZToKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5xdWl0ID0gVHJ1ZQotCi0jIFRoaXMgcmVxdWVzdCBoYW5kbGVyIGNoZWNrcyBpZiB0aGUgcmVxdWVzdCBoYXMgYSAiQml0YmFrZS10b2tlbiIgaGVhZGVyCi0jIGZpZWxkICh0aGlzIGNvbWVzIGZyb20gdGhlIGNsaWVudCBzaWRlKSBhbmQgY29tcGFyZXMgaXQgd2l0aCBpdHMgaW50ZXJuYWwKLSMgIkJpdGJha2UtdG9rZW4iIGZpZWxkICh0aGlzIGNvbWVzIGZyb20gdGhlIHNlcnZlcikuIElmIHRoZSB0d28gYXJlIG5vdAotIyBlcXVhbCwgaXQgaXMgYXNzdW1lZCB0aGF0IGEgY2xpZW50IGlzIHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIKLSMgd2hpbGUgYW5vdGhlciBjbGllbnQgaXMgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIuIEluIHRoaXMgY2FzZSwgYSA1MDMgZXJyb3IKLSMgKCJzZXJ2aWNlIHVuYXZhaWxhYmxlIikgaXMgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4KLWNsYXNzIEJpdEJha2VYTUxSUENSZXF1ZXN0SGFuZGxlcihTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpOgotICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlcgotICAgICAgICBTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywgc2VydmVyKQotCi0gICAgZGVmIGRvX1BPU1Qoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlbW90ZV90b2tlbiA9IHNlbGYuaGVhZGVyc1siQml0YmFrZS10b2tlbiJdCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJlbW90ZV90b2tlbiA9IE5vbmUKLSAgICAgICAgaWYgcmVtb3RlX3Rva2VuICE9IHNlbGYuc2VydmVyLmNvbm5lY3Rpb25fdG9rZW4gYW5kIHJlbW90ZV90b2tlbiAhPSAib2JzZXJ2ZXIiOgotICAgICAgICAgICAgc2VsZi5yZXBvcnRfNTAzKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHJlbW90ZV90b2tlbiA9PSAib2JzZXJ2ZXIiOgotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlYWRvbmx5ID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZWFkb25seSA9IEZhbHNlCi0gICAgICAgICAgICBTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlci5kb19QT1NUKHNlbGYpCi0KLSAgICBkZWYgcmVwb3J0XzUwMyhzZWxmKToKLSAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDUwMykKLSAgICAgICAgcmVzcG9uc2UgPSAnTm8gbW9yZSBjbGllbnQgYWxsb3dlZCcKLSAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC10eXBlIiwgInRleHQvcGxhaW4iKQotICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LWxlbmd0aCIsIHN0cihsZW4ocmVzcG9uc2UpKSkKLSAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCi0gICAgICAgIHNlbGYud2ZpbGUud3JpdGUoYnl0ZXMocmVzcG9uc2UsICd1dGYtOCcpKQotCi0KLWNsYXNzIFhNTFJQQ1Byb3h5U2VydmVyKEJhc2VJbXBsU2VydmVyKToKLSAgICAiIiIgbm90IGEgcmVhbCB3b3JraW5nIHNlcnZlciwgYnV0IGEgc3R1YiBmb3IgYSBwcm94eSBzZXJ2ZXIgY29ubmVjdGlvbgotCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpOgotICAgICAgICBzZWxmLmhvc3QgPSBob3N0Ci0gICAgICAgIHNlbGYucG9ydCA9IHBvcnQKLQotY2xhc3MgWE1MUlBDU2VydmVyKFNpbXBsZVhNTFJQQ1NlcnZlciwgQmFzZUltcGxTZXJ2ZXIpOgotICAgICMgcmVtb3ZlIHRoaXMgd2hlbiB5b3UncmUgZG9uZSB3aXRoIGRlYnVnZ2luZwotICAgICMgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnRlcmZhY2UsIHNpbmdsZV91c2U9RmFsc2UsIGlkbGVfdGltZW91dD0wKToKLSAgICAgICAgIiIiCi0gICAgICAgIENvbnN0cnVjdG9yCi0gICAgICAgICIiIgotICAgICAgICBCYXNlSW1wbFNlcnZlci5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLnNpbmdsZV91c2UgPSBzaW5nbGVfdXNlCi0gICAgICAgICMgVXNlIGF1dG8gcG9ydCBjb25maWd1cmF0aW9uCi0gICAgICAgIGlmIChpbnRlcmZhY2VbMV0gPT0gLTEpOgotICAgICAgICAgICAgaW50ZXJmYWNlID0gKGludGVyZmFjZVswXSwgMCkKLSAgICAgICAgU2ltcGxlWE1MUlBDU2VydmVyLl9faW5pdF9fKHNlbGYsIGludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyPUJpdEJha2VYTUxSUENSZXF1ZXN0SGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPUZhbHNlLCBhbGxvd19ub25lPVRydWUpCi0gICAgICAgIHNlbGYuaG9zdCwgc2VsZi5wb3J0ID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQotICAgICAgICBzZWxmLmNvbm5lY3Rpb25fdG9rZW4gPSBOb25lCi0gICAgICAgICNzZWxmLnJlZ2lzdGVyX2ludHJvc3BlY3Rpb25fZnVuY3Rpb25zKCkKLSAgICAgICAgc2VsZi5jb21tYW5kcyA9IEJpdEJha2VTZXJ2ZXJDb21tYW5kcyhzZWxmKQotICAgICAgICBzZWxmLmF1dG9yZWdpc3Rlcl9hbGxfZnVuY3Rpb25zKHNlbGYuY29tbWFuZHMsICIiKQotICAgICAgICBzZWxmLmludGVyZmFjZSA9IGludGVyZmFjZQotICAgICAgICBzZWxmLnRpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICBzZWxmLmlkbGVfdGltZW91dCA9IGlkbGVfdGltZW91dAotICAgICAgICBpZiBpZGxlX3RpbWVvdXQ6Ci0gICAgICAgICAgICBzZWxmLnJlZ2lzdGVyX2lkbGVfZnVuY3Rpb24oc2VsZi5oYW5kbGVfaWRsZV90aW1lb3V0LCBzZWxmKQotCi0gICAgZGVmIGFkZGNvb2tlcihzZWxmLCBjb29rZXIpOgotICAgICAgICBCYXNlSW1wbFNlcnZlci5hZGRjb29rZXIoc2VsZiwgY29va2VyKQotICAgICAgICBzZWxmLmNvbW1hbmRzLmNvb2tlciA9IGNvb2tlcgotCi0gICAgZGVmIGF1dG9yZWdpc3Rlcl9hbGxfZnVuY3Rpb25zKHNlbGYsIGNvbnRleHQsIHByZWZpeCk6Ci0gICAgICAgICIiIgotICAgICAgICBDb252ZW5pZW5jZSBtZXRob2QgZm9yIHJlZ2lzdGVyaW5nIGFsbCBmdW5jdGlvbnMgaW4gdGhlIHNjb3BlCi0gICAgICAgIG9mIHRoaXMgY2xhc3MgdGhhdCBzdGFydCB3aXRoIGEgY29tbW9uIHByZWZpeAotICAgICAgICAiIiIKLSAgICAgICAgbWV0aG9kbGlzdCA9IGluc3BlY3QuZ2V0bWVtYmVycyhjb250ZXh0LCBpbnNwZWN0LmlzbWV0aG9kKQotICAgICAgICBmb3IgbmFtZSwgbWV0aG9kIGluIG1ldGhvZGxpc3Q6Ci0gICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgICAgICBzZWxmLnJlZ2lzdGVyX2Z1bmN0aW9uKG1ldGhvZCwgbmFtZVtsZW4ocHJlZml4KTpdKQotCi0gICAgZGVmIGhhbmRsZV9pZGxlX3RpbWVvdXQoc2VsZiwgc2VydmVyLCBkYXRhLCBhYm9ydCk6Ci0gICAgICAgIGlmIG5vdCBhYm9ydDoKLSAgICAgICAgICAgIGlmIHRpbWUudGltZSgpIC0gc2VydmVyLnRpbWUgPiBzZXJ2ZXIuaWRsZV90aW1lb3V0OgotICAgICAgICAgICAgICAgIHNlcnZlci5xdWl0ID0gVHJ1ZQotICAgICAgICAgICAgICAgIHByaW50KCJTZXJ2ZXIgaWRsZSB0aW1lb3V0IGV4cGlyZWQiKQotICAgICAgICByZXR1cm4gW10KLQotICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYpOgotICAgICAgICAjIFN0YXJ0IHRoZSBhY3R1YWwgWE1MUlBDIHNlcnZlcgotICAgICAgICBiYi5jb29rZXIuc2VydmVyX21haW4oc2VsZi5jb29rZXIsIHNlbGYuX3NlcnZlX2ZvcmV2ZXIpCi0KLSAgICBkZWYgX3NlcnZlX2ZvcmV2ZXIoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTZXJ2ZSBSZXF1ZXN0cy4gT3ZlcmxvYWRlZCB0byBob25vciBhIHF1aXQgY29tbWFuZAotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5xdWl0ID0gRmFsc2UKLSAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdDoKLSAgICAgICAgICAgIGZkcyA9IFtzZWxmXQotICAgICAgICAgICAgbmV4dHNsZWVwID0gMC4xCi0gICAgICAgICAgICBmb3IgZnVuY3Rpb24sIGRhdGEgaW4gbGlzdChzZWxmLl9pZGxlZnVucy5pdGVtcygpKToKLSAgICAgICAgICAgICAgICByZXR2YWwgPSBOb25lCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBmdW5jdGlvbihzZWxmLCBkYXRhLCBGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgcmV0dmFsIGlzIEZhbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2lkbGVmdW5zW2Z1bmN0aW9uXQotICAgICAgICAgICAgICAgICAgICBlbGlmIHJldHZhbCBpcyBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dHNsZWVwID0gMAotICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmV0dmFsLCBmbG9hdCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0dmFsIDwgbmV4dHNsZWVwKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0c2xlZXAgPSByZXR2YWwKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZkcyA9IGZkcyArIHJldHZhbAotICAgICAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgcmV0dmFsID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBmdW5jdGlvbiBleGVjdXRlIGZhaWxlZDsgZGVsZXRlIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi5faWRsZWZ1bnNbZnVuY3Rpb25dCi0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAgICAgc29ja3RpbWVvdXQgPSBzZWxmLnNvY2tldC5nZXR0aW1lb3V0KCkgb3IgbmV4dHNsZWVwCi0gICAgICAgICAgICBzb2NrdGltZW91dCA9IG1pbihzb2NrdGltZW91dCwgbmV4dHNsZWVwKQotICAgICAgICAgICAgIyBNaXJyb3Igd2hhdCBCYXNlU2VydmVyIGhhbmRsZV9yZXF1ZXN0IHdvdWxkIGRvCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmRfc2V0cyA9IHNlbGVjdC5zZWxlY3QoZmRzLCBbXSwgW10sIHNvY2t0aW1lb3V0KQotICAgICAgICAgICAgICAgIGlmIGZkX3NldHNbMF0gYW5kIHNlbGYgaW4gZmRfc2V0c1swXToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5pZGxlX3RpbWVvdXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgICMgd2UgaWdub3JlIGludGVycnVwdGVkIGNhbGxzCi0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICMgVGVsbCBpZGxlIGZ1bmN0aW9ucyB3ZSdyZSBleGl0aW5nCi0gICAgICAgIGZvciBmdW5jdGlvbiwgZGF0YSBpbiBsaXN0KHNlbGYuX2lkbGVmdW5zLml0ZW1zKCkpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHZhbCA9IGZ1bmN0aW9uKHNlbGYsIGRhdGEsIFRydWUpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCi0gICAgICAgIHJldHVybgotCi0gICAgZGVmIHNldF9jb25uZWN0aW9uX3Rva2VuKHNlbGYsIHRva2VuKToKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uX3Rva2VuID0gdG9rZW4KLQotY2xhc3MgQml0QmFrZVhNTFJQQ1NlcnZlckNvbm5lY3Rpb24oQml0QmFrZUJhc2VTZXJ2ZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVySW1wbCwgY2xpZW50aW5mbz0oImxvY2FsaG9zdCIsIDApLCBvYnNlcnZlcl9vbmx5ID0gRmFsc2UsIGZlYXR1cmVzZXQgPSBOb25lKToKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uLCBzZWxmLnRyYW5zcG9ydCA9IF9jcmVhdGVfc2VydmVyKHNlcnZlckltcGwuaG9zdCwgc2VydmVySW1wbC5wb3J0KQotICAgICAgICBzZWxmLmNsaWVudGluZm8gPSBjbGllbnRpbmZvCi0gICAgICAgIHNlbGYuc2VydmVySW1wbCA9IHNlcnZlckltcGwKLSAgICAgICAgc2VsZi5vYnNlcnZlcl9vbmx5ID0gb2JzZXJ2ZXJfb25seQotICAgICAgICBpZiBmZWF0dXJlc2V0OgotICAgICAgICAgICAgc2VsZi5mZWF0dXJlc2V0ID0gZmVhdHVyZXNldAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mZWF0dXJlc2V0ID0gW10KLQotICAgIGRlZiBjb25uZWN0KHNlbGYsIHRva2VuID0gTm9uZSk6Ci0gICAgICAgIGlmIHRva2VuIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLm9ic2VydmVyX29ubHk6Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSAib2JzZXJ2ZXIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5jb25uZWN0aW9uLmFkZENsaWVudCgpCi0KLSAgICAgICAgaWYgdG9rZW4gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VsZi50cmFuc3BvcnQuc2V0X2Nvbm5lY3Rpb25fdG9rZW4odG9rZW4pCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgc2V0dXBFdmVudFF1ZXVlKHNlbGYpOgotICAgICAgICBzZWxmLmV2ZW50cyA9IHVpZXZlbnQuQkJVSUV2ZW50UXVldWUoc2VsZi5jb25uZWN0aW9uLCBzZWxmLmNsaWVudGluZm8pCi0gICAgICAgIGZvciBldmVudCBpbiBiYi5ldmVudC51aV9xdWV1ZToKLSAgICAgICAgICAgIHNlbGYuZXZlbnRzLnF1ZXVlX2V2ZW50KGV2ZW50KQotCi0gICAgICAgIF8sIGVycm9yID0gc2VsZi5jb25uZWN0aW9uLnJ1bkNvbW1hbmQoWyJzZXRGZWF0dXJlcyIsIHNlbGYuZmVhdHVyZXNldF0pCi0gICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgIyBkaXNjb25uZWN0IHRoZSBjbGllbnQsIHdlIGNhbid0IG1ha2UgdGhlIHNldEZlYXR1cmUgd29yawotICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlbW92ZUNsaWVudCgpCi0gICAgICAgICAgICAjIG5vIG5lZWQgdG8gbG9nIGl0IGhlcmUsIHRoZSBlcnJvciBzaGFsbCBiZSBzZW50IHRvIHRoZSBjbGllbnQKLSAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oZXJyb3IpCi0KLSAgICBkZWYgcmVtb3ZlQ2xpZW50KHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5vYnNlcnZlcl9vbmx5OgotICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlbW92ZUNsaWVudCgpCi0KLSAgICBkZWYgdGVybWluYXRlKHNlbGYpOgotICAgICAgICAjIERvbid0IHdhaXQgZm9yIHNlcnZlciBpbmRlZmluaXRlbHkKLSAgICAgICAgaW1wb3J0IHNvY2tldAotICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoMikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5ldmVudHMuc3lzdGVtX3F1aXQoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5yZW1vdmVDbGllbnQoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLWNsYXNzIEJpdEJha2VTZXJ2ZXIoQml0QmFrZUJhc2VTZXJ2ZXIpOgotICAgIGRlZiBpbml0U2VydmVyKHNlbGYsIGludGVyZmFjZSA9ICgibG9jYWxob3N0IiwgMCksCi0gICAgICAgICAgICAgICAgICAgc2luZ2xlX3VzZSA9IEZhbHNlLCBpZGxlX3RpbWVvdXQ9MCk6Ci0gICAgICAgIHNlbGYuaW50ZXJmYWNlID0gaW50ZXJmYWNlCi0gICAgICAgIHNlbGYuc2VydmVySW1wbCA9IFhNTFJQQ1NlcnZlcihpbnRlcmZhY2UsIHNpbmdsZV91c2UsIGlkbGVfdGltZW91dCkKLQotICAgIGRlZiBkZXRhY2goc2VsZik6Ci0gICAgICAgIGRhZW1vbml6ZS5jcmVhdGVEYWVtb24oc2VsZi5zZXJ2ZXJJbXBsLnNlcnZlX2ZvcmV2ZXIsICJiaXRiYWtlLWNvb2tlcmRhZW1vbi5sb2ciKQotICAgICAgICBkZWwgc2VsZi5jb29rZXIKLQotICAgIGRlZiBlc3RhYmxpc2hDb25uZWN0aW9uKHNlbGYsIGZlYXR1cmVzZXQpOgotICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBCaXRCYWtlWE1MUlBDU2VydmVyQ29ubmVjdGlvbihzZWxmLnNlcnZlckltcGwsIHNlbGYuaW50ZXJmYWNlLCBGYWxzZSwgZmVhdHVyZXNldCkKLSAgICAgICAgcmV0dXJuIHNlbGYuY29ubmVjdGlvbi5jb25uZWN0KCkKLQotICAgIGRlZiBzZXRfY29ubmVjdGlvbl90b2tlbihzZWxmLCB0b2tlbik6Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbi50cmFuc3BvcnQuc2V0X2Nvbm5lY3Rpb25fdG9rZW4odG9rZW4pCi0KLWNsYXNzIEJpdEJha2VYTUxSUENDbGllbnQoQml0QmFrZUJhc2VTZXJ2ZXIpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9ic2VydmVyX29ubHkgPSBGYWxzZSwgdG9rZW4gPSBOb25lKToKLSAgICAgICAgc2VsZi50b2tlbiA9IHRva2VuCi0KLSAgICAgICAgc2VsZi5vYnNlcnZlcl9vbmx5ID0gb2JzZXJ2ZXJfb25seQotICAgICAgICAjIGlmIHdlIG5lZWQgZXh0cmEgY2FjaGVzLCBqdXN0IHRlbGwgdGhlIHNlcnZlciB0byBsb2FkIHRoZW0gYWxsCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBzYXZlQ29ubmVjdGlvbkRldGFpbHMoc2VsZiwgcmVtb3RlKToKLSAgICAgICAgc2VsZi5yZW1vdGUgPSByZW1vdGUKLQotICAgIGRlZiBlc3RhYmxpc2hDb25uZWN0aW9uKHNlbGYsIGZlYXR1cmVzZXQpOgotICAgICAgICAjIFRoZSBmb3JtYXQgb2YgInJlbW90ZSIgbXVzdCBiZSAic2VydmVyOnBvcnQiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIFtob3N0LCBwb3J0XSA9IHNlbGYucmVtb3RlLnNwbGl0KCI6IikKLSAgICAgICAgICAgIHBvcnQgPSBpbnQocG9ydCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgYmIud2FybigiRmFpbGVkIHRvIHJlYWQgcmVtb3RlIGRlZmluaXRpb24gKCVzKSIgJSBzdHIoZSkpCi0gICAgICAgICAgICByYWlzZSBlCi0KLSAgICAgICAgIyBXZSBuZWVkIG91ciBJUCBmb3IgdGhlIHNlcnZlciBjb25uZWN0aW9uLiBXZSBnZXQgdGhlIElQCi0gICAgICAgICMgYnkgdHJ5aW5nIHRvIGNvbm5lY3Qgd2l0aCB0aGUgc2VydmVyCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCi0gICAgICAgICAgICBpcCA9IHMuZ2V0c29ja25hbWUoKVswXQotICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGJiLndhcm4oIkNvdWxkIG5vdCBjcmVhdGUgc29ja2V0IGZvciAlczolcyAoJXMpIiAlIChob3N0LCBwb3J0LCBzdHIoZSkpKQotICAgICAgICAgICAgcmFpc2UgZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlckltcGwgPSBYTUxSUENQcm94eVNlcnZlcihob3N0LCBwb3J0LCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQotICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gQml0QmFrZVhNTFJQQ1NlcnZlckNvbm5lY3Rpb24oc2VsZi5zZXJ2ZXJJbXBsLCAoaXAsIDApLCBzZWxmLm9ic2VydmVyX29ubHksIGZlYXR1cmVzZXQpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5jb25uZWN0aW9uLmNvbm5lY3Qoc2VsZi50b2tlbikKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgYmIud2FybigiQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyIGF0ICVzOiVzICglcykiICUgKGhvc3QsIHBvcnQsIHN0cihlKSkpCi0gICAgICAgICAgICByYWlzZSBlCi0KLSAgICBkZWYgZW5kU2Vzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlbW92ZUNsaWVudCgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NjFhOWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weQpAQCAtMCwwICsxLDE1NCBAQAorIworIyBCaXRCYWtlIFhNTFJQQyBDbGllbnQgSW50ZXJmYWNlCisjCisjIENvcHlyaWdodCAoQykgMjAwNiAtIDIwMDcgIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIKKyMgQ29weXJpZ2h0IChDKSAyMDA2IC0gMjAwOCAgUmljaGFyZCBQdXJkaWUKKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitpbXBvcnQgc29ja2V0CitpbXBvcnQgaHR0cC5jbGllbnQKK2ltcG9ydCB4bWxycGMuY2xpZW50CisKK2ltcG9ydCBiYgorZnJvbSBiYi51aSBpbXBvcnQgdWlldmVudAorCitjbGFzcyBCQlRyYW5zcG9ydCh4bWxycGMuY2xpZW50LlRyYW5zcG9ydCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CisgICAgICAgIHNlbGYuY29ubmVjdGlvbl90b2tlbiA9IE5vbmUKKyAgICAgICAgeG1scnBjLmNsaWVudC5UcmFuc3BvcnQuX19pbml0X18oc2VsZikKKworICAgICMgTW9kaWZpZWQgZnJvbSBkZWZhdWx0IHRvIHBhc3MgdGltZW91dCB0byBIVFRQQ29ubmVjdGlvbgorICAgIGRlZiBtYWtlX2Nvbm5lY3Rpb24oc2VsZiwgaG9zdCk6CisgICAgICAgICNyZXR1cm4gYW4gZXhpc3RpbmcgY29ubmVjdGlvbiBpZiBwb3NzaWJsZS4gIFRoaXMgYWxsb3dzCisgICAgICAgICNIVFRQLzEuMSBrZWVwLWFsaXZlLgorICAgICAgICBpZiBzZWxmLl9jb25uZWN0aW9uIGFuZCBob3N0ID09IHNlbGYuX2Nvbm5lY3Rpb25bMF06CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvblsxXQorCisgICAgICAgICMgY3JlYXRlIGEgSFRUUCBjb25uZWN0aW9uIG9iamVjdCBmcm9tIGEgaG9zdCBkZXNjcmlwdG9yCisgICAgICAgIGNob3N0LCBzZWxmLl9leHRyYV9oZWFkZXJzLCB4NTA5ID0gc2VsZi5nZXRfaG9zdF9pbmZvKGhvc3QpCisgICAgICAgICNzdG9yZSB0aGUgaG9zdCBhcmd1bWVudCBhbG9uZyB3aXRoIHRoZSBjb25uZWN0aW9uIG9iamVjdAorICAgICAgICBzZWxmLl9jb25uZWN0aW9uID0gaG9zdCwgaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24oY2hvc3QsIHRpbWVvdXQ9c2VsZi50aW1lb3V0KQorICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvblsxXQorCisgICAgZGVmIHNldF9jb25uZWN0aW9uX3Rva2VuKHNlbGYsIHRva2VuKToKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uX3Rva2VuID0gdG9rZW4KKworICAgIGRlZiBzZW5kX2NvbnRlbnQoc2VsZiwgaCwgYm9keSk6CisgICAgICAgIGlmIHNlbGYuY29ubmVjdGlvbl90b2tlbjoKKyAgICAgICAgICAgIGgucHV0aGVhZGVyKCJCaXRiYWtlLXRva2VuIiwgc2VsZi5jb25uZWN0aW9uX3Rva2VuKQorICAgICAgICB4bWxycGMuY2xpZW50LlRyYW5zcG9ydC5zZW5kX2NvbnRlbnQoc2VsZiwgaCwgYm9keSkKKworZGVmIF9jcmVhdGVfc2VydmVyKGhvc3QsIHBvcnQsIHRpbWVvdXQgPSA2MCk6CisgICAgdCA9IEJCVHJhbnNwb3J0KHRpbWVvdXQpCisgICAgcyA9IHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHkoImh0dHA6Ly8lczolZC8iICUgKGhvc3QsIHBvcnQpLCB0cmFuc3BvcnQ9dCwgYWxsb3dfbm9uZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgIHJldHVybiBzLCB0CisKK2RlZiBjaGVja19jb25uZWN0aW9uKHJlbW90ZSwgdGltZW91dCk6CisgICAgdHJ5OgorICAgICAgICBob3N0LCBwb3J0ID0gcmVtb3RlLnNwbGl0KCI6IikKKyAgICAgICAgcG9ydCA9IGludChwb3J0KQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgYmIud2FybigiRmFpbGVkIHRvIHJlYWQgcmVtb3RlIGRlZmluaXRpb24gKCVzKSIgJSBzdHIoZSkpCisgICAgICAgIHJhaXNlIGUKKworICAgIHNlcnZlciwgX3RyYW5zcG9ydCA9IF9jcmVhdGVfc2VydmVyKGhvc3QsIHBvcnQsIHRpbWVvdXQpCisgICAgdHJ5OgorICAgICAgICByZXQsIGVyciA9ICBzZXJ2ZXIucnVuQ29tbWFuZChbJ2dldFZhcmlhYmxlJywgJ1RPUERJUiddKQorICAgICAgICBpZiBlcnIgb3Igbm90IHJldDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIGV4Y2VwdCBDb25uZWN0aW9uRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKK2NsYXNzIEJpdEJha2VYTUxSUENTZXJ2ZXJDb25uZWN0aW9uKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGNsaWVudGluZm89KCJsb2NhbGhvc3QiLCAwKSwgb2JzZXJ2ZXJfb25seSA9IEZhbHNlLCBmZWF0dXJlc2V0ID0gTm9uZSk6CisgICAgICAgIHNlbGYuY29ubmVjdGlvbiwgc2VsZi50cmFuc3BvcnQgPSBfY3JlYXRlX3NlcnZlcihob3N0LCBwb3J0KQorICAgICAgICBzZWxmLmNsaWVudGluZm8gPSBjbGllbnRpbmZvCisgICAgICAgIHNlbGYub2JzZXJ2ZXJfb25seSA9IG9ic2VydmVyX29ubHkKKyAgICAgICAgaWYgZmVhdHVyZXNldDoKKyAgICAgICAgICAgIHNlbGYuZmVhdHVyZXNldCA9IGZlYXR1cmVzZXQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmVhdHVyZXNldCA9IFtdCisKKyAgICAgICAgc2VsZi5ldmVudHMgPSB1aWV2ZW50LkJCVUlFdmVudFF1ZXVlKHNlbGYuY29ubmVjdGlvbiwgc2VsZi5jbGllbnRpbmZvKQorCisgICAgICAgIF8sIGVycm9yID0gc2VsZi5jb25uZWN0aW9uLnJ1bkNvbW1hbmQoWyJzZXRGZWF0dXJlcyIsIHNlbGYuZmVhdHVyZXNldF0pCisgICAgICAgIGlmIGVycm9yOgorICAgICAgICAgICAgIyBkaXNjb25uZWN0IHRoZSBjbGllbnQsIHdlIGNhbid0IG1ha2UgdGhlIHNldEZlYXR1cmUgd29yaworICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlbW92ZUNsaWVudCgpCisgICAgICAgICAgICAjIG5vIG5lZWQgdG8gbG9nIGl0IGhlcmUsIHRoZSBlcnJvciBzaGFsbCBiZSBzZW50IHRvIHRoZSBjbGllbnQKKyAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oZXJyb3IpCisKKyAgICBkZWYgY29ubmVjdChzZWxmLCB0b2tlbiA9IE5vbmUpOgorICAgICAgICBpZiB0b2tlbiBpcyBOb25lOgorICAgICAgICAgICAgaWYgc2VsZi5vYnNlcnZlcl9vbmx5OgorICAgICAgICAgICAgICAgIHRva2VuID0gIm9ic2VydmVyIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuY29ubmVjdGlvbi5hZGRDbGllbnQoKQorCisgICAgICAgIGlmIHRva2VuIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHNlbGYudHJhbnNwb3J0LnNldF9jb25uZWN0aW9uX3Rva2VuKHRva2VuKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIHJlbW92ZUNsaWVudChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYub2JzZXJ2ZXJfb25seToKKyAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5yZW1vdmVDbGllbnQoKQorCisgICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKKyAgICAgICAgIyBEb24ndCB3YWl0IGZvciBzZXJ2ZXIgaW5kZWZpbml0ZWx5CisgICAgICAgIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dCgyKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmV2ZW50cy5zeXN0ZW1fcXVpdCgpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnJlbW92ZUNsaWVudCgpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKworZGVmIGNvbm5lY3RYTUxSUEMocmVtb3RlLCBmZWF0dXJlc2V0LCBvYnNlcnZlcl9vbmx5ID0gRmFsc2UsIHRva2VuID0gTm9uZSk6CisgICAgIyBUaGUgZm9ybWF0IG9mICJyZW1vdGUiIG11c3QgYmUgInNlcnZlcjpwb3J0IgorICAgIHRyeToKKyAgICAgICAgW2hvc3QsIHBvcnRdID0gcmVtb3RlLnNwbGl0KCI6IikKKyAgICAgICAgcG9ydCA9IGludChwb3J0KQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgYmIud2FybigiRmFpbGVkIHRvIHBhcnNlIHJlbW90ZSBkZWZpbml0aW9uICVzICglcykiICUgKHJlbW90ZSwgc3RyKGUpKSkKKyAgICAgICAgcmFpc2UgZQorCisgICAgIyBXZSBuZWVkIG91ciBJUCBmb3IgdGhlIHNlcnZlciBjb25uZWN0aW9uLiBXZSBnZXQgdGhlIElQCisgICAgIyBieSB0cnlpbmcgdG8gY29ubmVjdCB3aXRoIHRoZSBzZXJ2ZXIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKKyAgICAgICAgcy5jb25uZWN0KChob3N0LCBwb3J0KSkKKyAgICAgICAgaXAgPSBzLmdldHNvY2tuYW1lKClbMF0KKyAgICAgICAgcy5jbG9zZSgpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBiYi53YXJuKCJDb3VsZCBub3QgY3JlYXRlIHNvY2tldCBmb3IgJXM6JXMgKCVzKSIgJSAoaG9zdCwgcG9ydCwgc3RyKGUpKSkKKyAgICAgICAgcmFpc2UgZQorICAgIHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IEJpdEJha2VYTUxSUENTZXJ2ZXJDb25uZWN0aW9uKGhvc3QsIHBvcnQsIChpcCwgMCksIG9ic2VydmVyX29ubHksIGZlYXR1cmVzZXQpCisgICAgICAgIHJldHVybiBjb25uZWN0aW9uLmNvbm5lY3QodG9rZW4pCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBiYi53YXJuKCJDb3VsZCBub3QgY29ubmVjdCB0byBzZXJ2ZXIgYXQgJXM6JXMgKCVzKSIgJSAoaG9zdCwgcG9ydCwgc3RyKGUpKSkKKyAgICAgICAgcmFpc2UgZQorCisKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY3NlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzViMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkKQEAgLTAsMCArMSwxNTggQEAKKyMKKyMgQml0QmFrZSBYTUxSUEMgU2VydmVyIEludGVyZmFjZQorIworIyBDb3B5cmlnaHQgKEMpIDIwMDYgLSAyMDA3ICBNaWNoYWVsICdNaWNrZXknIExhdWVyCisjIENvcHlyaWdodCAoQykgMjAwNiAtIDIwMDggIFJpY2hhcmQgUHVyZGllCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IGhhc2hsaWIKK2ltcG9ydCB0aW1lCitpbXBvcnQgaW5zcGVjdAorZnJvbSB4bWxycGMuc2VydmVyIGltcG9ydCBTaW1wbGVYTUxSUENTZXJ2ZXIsIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyCisKK2ltcG9ydCBiYgorCisjIFRoaXMgcmVxdWVzdCBoYW5kbGVyIGNoZWNrcyBpZiB0aGUgcmVxdWVzdCBoYXMgYSAiQml0YmFrZS10b2tlbiIgaGVhZGVyCisjIGZpZWxkICh0aGlzIGNvbWVzIGZyb20gdGhlIGNsaWVudCBzaWRlKSBhbmQgY29tcGFyZXMgaXQgd2l0aCBpdHMgaW50ZXJuYWwKKyMgIkJpdGJha2UtdG9rZW4iIGZpZWxkICh0aGlzIGNvbWVzIGZyb20gdGhlIHNlcnZlcikuIElmIHRoZSB0d28gYXJlIG5vdAorIyBlcXVhbCwgaXQgaXMgYXNzdW1lZCB0aGF0IGEgY2xpZW50IGlzIHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIKKyMgd2hpbGUgYW5vdGhlciBjbGllbnQgaXMgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIuIEluIHRoaXMgY2FzZSwgYSA1MDMgZXJyb3IKKyMgKCJzZXJ2aWNlIHVuYXZhaWxhYmxlIikgaXMgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4KK2NsYXNzIEJpdEJha2VYTUxSUENSZXF1ZXN0SGFuZGxlcihTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpOgorICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlcgorICAgICAgICBTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywgc2VydmVyKQorCisgICAgZGVmIGRvX1BPU1Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlbW90ZV90b2tlbiA9IHNlbGYuaGVhZGVyc1siQml0YmFrZS10b2tlbiJdCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHJlbW90ZV90b2tlbiA9IE5vbmUKKyAgICAgICAgaWYgMCBhbmQgcmVtb3RlX3Rva2VuICE9IHNlbGYuc2VydmVyLmNvbm5lY3Rpb25fdG9rZW4gYW5kIHJlbW90ZV90b2tlbiAhPSAib2JzZXJ2ZXIiOgorICAgICAgICAgICAgc2VsZi5yZXBvcnRfNTAzKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHJlbW90ZV90b2tlbiA9PSAib2JzZXJ2ZXIiOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlYWRvbmx5ID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZWFkb25seSA9IEZhbHNlCisgICAgICAgICAgICBTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlci5kb19QT1NUKHNlbGYpCisKKyAgICBkZWYgcmVwb3J0XzUwMyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDUwMykKKyAgICAgICAgcmVzcG9uc2UgPSAnTm8gbW9yZSBjbGllbnQgYWxsb3dlZCcKKyAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC10eXBlIiwgInRleHQvcGxhaW4iKQorICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LWxlbmd0aCIsIHN0cihsZW4ocmVzcG9uc2UpKSkKKyAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCisgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoYnl0ZXMocmVzcG9uc2UsICd1dGYtOCcpKQorCitjbGFzcyBCaXRCYWtlWE1MUlBDU2VydmVyKFNpbXBsZVhNTFJQQ1NlcnZlcik6CisgICAgIyByZW1vdmUgdGhpcyB3aGVuIHlvdSdyZSBkb25lIHdpdGggZGVidWdnaW5nCisgICAgIyBhbGxvd19yZXVzZV9hZGRyZXNzID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGludGVyZmFjZSwgY29va2VyLCBwYXJlbnQpOgorICAgICAgICAjIFVzZSBhdXRvIHBvcnQgY29uZmlndXJhdGlvbgorICAgICAgICBpZiAoaW50ZXJmYWNlWzFdID09IC0xKToKKyAgICAgICAgICAgIGludGVyZmFjZSA9IChpbnRlcmZhY2VbMF0sIDApCisgICAgICAgIFNpbXBsZVhNTFJQQ1NlcnZlci5fX2luaXRfXyhzZWxmLCBpbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcj1CaXRCYWtlWE1MUlBDUmVxdWVzdEhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1GYWxzZSwgYWxsb3dfbm9uZT1UcnVlKQorICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKCkKKyAgICAgICAgc2VsZi5pbnRlcmZhY2UgPSBpbnRlcmZhY2UKKworICAgICAgICBzZWxmLmNvbm5lY3Rpb25fdG9rZW4gPSBOb25lCisgICAgICAgIHNlbGYuY29tbWFuZHMgPSBCaXRCYWtlWE1MUlBDU2VydmVyQ29tbWFuZHMoc2VsZikKKyAgICAgICAgc2VsZi5yZWdpc3Rlcl9mdW5jdGlvbnMoc2VsZi5jb21tYW5kcywgIiIpCisKKyAgICAgICAgc2VsZi5jb29rZXIgPSBjb29rZXIKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKworCisgICAgZGVmIHJlZ2lzdGVyX2Z1bmN0aW9ucyhzZWxmLCBjb250ZXh0LCBwcmVmaXgpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29udmVuaWVuY2UgbWV0aG9kIGZvciByZWdpc3RlcmluZyBhbGwgZnVuY3Rpb25zIGluIHRoZSBzY29wZQorICAgICAgICBvZiB0aGlzIGNsYXNzIHRoYXQgc3RhcnQgd2l0aCBhIGNvbW1vbiBwcmVmaXgKKyAgICAgICAgIiIiCisgICAgICAgIG1ldGhvZGxpc3QgPSBpbnNwZWN0LmdldG1lbWJlcnMoY29udGV4dCwgaW5zcGVjdC5pc21ldGhvZCkKKyAgICAgICAgZm9yIG5hbWUsIG1ldGhvZCBpbiBtZXRob2RsaXN0OgorICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKHByZWZpeCk6CisgICAgICAgICAgICAgICAgc2VsZi5yZWdpc3Rlcl9mdW5jdGlvbihtZXRob2QsIG5hbWVbbGVuKHByZWZpeCk6XSkKKworICAgIGRlZiBnZXRfdGltZW91dChzZWxmLCBkZWxheSk6CisgICAgICAgIHNvY2t0aW1lb3V0ID0gc2VsZi5zb2NrZXQuZ2V0dGltZW91dCgpIG9yIGRlbGF5CisgICAgICAgIHJldHVybiBtaW4oc29ja3RpbWVvdXQsIGRlbGF5KQorCisgICAgZGVmIGhhbmRsZV9yZXF1ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCisKK2NsYXNzIEJpdEJha2VYTUxSUENTZXJ2ZXJDb21tYW5kcygpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcik6CisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyCisgICAgICAgIHNlbGYuaGFzX2NsaWVudCA9IEZhbHNlCisKKyAgICBkZWYgcmVnaXN0ZXJFdmVudEhhbmRsZXIoc2VsZiwgaG9zdCwgcG9ydCk6CisgICAgICAgICIiIgorICAgICAgICBSZWdpc3RlciBhIHJlbW90ZSBVSSBFdmVudCBIYW5kbGVyCisgICAgICAgICIiIgorICAgICAgICBzLCB0ID0gYmIuc2VydmVyLnhtbHJwY2NsaWVudC5fY3JlYXRlX3NlcnZlcihob3N0LCBwb3J0KQorCisgICAgICAgICMgd2UgZG9uJ3QgYWxsb3cgY29ubmVjdGlvbnMgaWYgdGhlIGNvb2tlciBpcyBydW5uaW5nCisgICAgICAgIGlmIChzZWxmLnNlcnZlci5jb29rZXIuc3RhdGUgaW4gW2JiLmNvb2tlci5zdGF0ZS5wYXJzaW5nLCBiYi5jb29rZXIuc3RhdGUucnVubmluZ10pOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsICJDb29rZXIgaXMgYnVzeTogJXMiICUgYmIuY29va2VyLnN0YXRlLmdldF9uYW1lKHNlbGYuc2VydmVyLmNvb2tlci5zdGF0ZSkKKworICAgICAgICBzZWxmLmV2ZW50X2hhbmRsZSA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIocywgVHJ1ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZXZlbnRfaGFuZGxlLCAnT0snCisKKyAgICBkZWYgdW5yZWdpc3RlckV2ZW50SGFuZGxlcihzZWxmLCBoYW5kbGVyTnVtKToKKyAgICAgICAgIiIiCisgICAgICAgIFVucmVnaXN0ZXIgYSByZW1vdGUgVUkgRXZlbnQgSGFuZGxlcgorICAgICAgICAiIiIKKyAgICAgICAgcmV0ID0gYmIuZXZlbnQudW5yZWdpc3Rlcl9VSUhoYW5kbGVyKGhhbmRsZXJOdW0sIFRydWUpCisgICAgICAgIHNlbGYuZXZlbnRfaGFuZGxlID0gTm9uZQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgcnVuQ29tbWFuZChzZWxmLCBjb21tYW5kKToKKyAgICAgICAgIiIiCisgICAgICAgIFJ1biBhIGNvb2tlciBjb21tYW5kIG9uIHRoZSBzZXJ2ZXIKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5jb29rZXIuY29tbWFuZC5ydW5Db21tYW5kKGNvbW1hbmQsIHNlbGYuc2VydmVyLnJlYWRvbmx5KQorCisgICAgZGVmIGdldEV2ZW50SGFuZGxlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5ldmVudF9oYW5kbGUKKworICAgIGRlZiB0ZXJtaW5hdGVTZXJ2ZXIoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUcmlnZ2VyIHRoZSBzZXJ2ZXIgdG8gcXVpdAorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5zZXJ2ZXIucGFyZW50LnF1aXQgPSBUcnVlCisgICAgICAgIHByaW50KCJYTUxSUEMgU2VydmVyIHRyaWdnZXJpbmcgZXhpdCIpCisgICAgICAgIHJldHVybgorCisgICAgZGVmIGFkZENsaWVudChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXIucGFyZW50LmhhdmV1aToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRva2VuID0gaGFzaGxpYi5tZDUoc3RyKHRpbWUudGltZSgpKS5lbmNvZGUoInV0Zi04IikpLmhleGRpZ2VzdCgpCisgICAgICAgIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25fdG9rZW4gPSB0b2tlbgorICAgICAgICBzZWxmLnNlcnZlci5wYXJlbnQuaGF2ZXVpID0gVHJ1ZQorICAgICAgICByZXR1cm4gdG9rZW4KKworICAgIGRlZiByZW1vdmVDbGllbnQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyLnBhcmVudC5oYXZldWk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5jb25uZWN0aW9uX3Rva2VuID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucGFyZW50LmhhdmV1aSA9IEZhbHNlCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2lnZ2VuLnB5CmluZGV4IGY3MTE5MGEuLjVlZjgyZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQpAQCAtNjksNiArNjksMTAgQEAKICAgICBkZWYgc2V0X3Rhc2tkYXRhKHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLnJ1bnRhc2tkZXBzLCBzZWxmLnRhc2toYXNoLCBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzLCBzZWxmLnRhaW50cywgc2VsZi5iYXNlaGFzaCA9IGRhdGEKIAorICAgIGRlZiByZXNldChzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5fX2luaXRfXyhkYXRhKQorCisKIGNsYXNzIFNpZ25hdHVyZUdlbmVyYXRvckJhc2ljKFNpZ25hdHVyZUdlbmVyYXRvcik6CiAgICAgIiIiCiAgICAgIiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGFza2RhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGFza2RhdGEucHkKaW5kZXggOGM5NmE1Ni4uMGVhNmMwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weQpAQCAtNDcsNyArNDcsNyBAQAogICAgICIiIgogICAgIEJpdEJha2UgVGFzayBEYXRhIGltcGxlbWVudGF0aW9uCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFib3J0ID0gVHJ1ZSwgdHJ5YWx0Y29uZmlncyA9IEZhbHNlLCBza2lwbGlzdCA9IE5vbmUsIGFsbG93aW5jb21wbGV0ZSA9IEZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWJvcnQgPSBUcnVlLCBza2lwbGlzdCA9IE5vbmUsIGFsbG93aW5jb21wbGV0ZSA9IEZhbHNlKToKICAgICAgICAgc2VsZi5idWlsZF90YXJnZXRzID0ge30KICAgICAgICAgc2VsZi5ydW5fdGFyZ2V0cyA9IHt9CiAKQEAgLTY2LDcgKzY2LDYgQEAKICAgICAgICAgc2VsZi5mYWlsZWRfZm5zID0gW10KIAogICAgICAgICBzZWxmLmFib3J0ID0gYWJvcnQKLSAgICAgICAgc2VsZi50cnlhbHRjb25maWdzID0gdHJ5YWx0Y29uZmlncwogICAgICAgICBzZWxmLmFsbG93aW5jb21wbGV0ZSA9IGFsbG93aW5jb21wbGV0ZQogCiAgICAgICAgIHNlbGYuc2tpcGxpc3QgPSBza2lwbGlzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2V2ZW50LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2V2ZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZWIxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZXZlbnQucHkKQEAgLTAsMCArMSwzNzcgQEAKKyMgZXg6dHM9NDpzdz00OnN0cz00OmV0CisjIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCisjCisjIEJpdEJha2UgVGVzdHMgZm9yIHRoZSBFdmVudCBpbXBsZW1lbnRhdGlvbiAoZXZlbnQucHkpCisjCisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyMKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgYmIKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgYmIuY29tcGF0CitpbXBvcnQgYmIuZXZlbnQKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCitpbXBvcnQgcGlja2xlCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgY2FsbAorCisKK2NsYXNzIEV2ZW50UXVldWVTdHViKCk6CisgICAgIiIiIENsYXNzIHVzZWQgYXMgc3BlY2lmaWNhdGlvbiBmb3IgVUkgZXZlbnQgaGFuZGxlciBxdWV1ZSBzdHViIG9iamVjdHMgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICByZXR1cm4KKworICAgIGRlZiBzZW5kKHNlbGYsIGV2ZW50KToKKyAgICAgICAgcmV0dXJuCisKKworY2xhc3MgUGlja2xlRXZlbnRRdWV1ZVN0dWIoKToKKyAgICAiIiIgQ2xhc3MgdXNlZCBhcyBzcGVjaWZpY2F0aW9uIGZvciBVSSBldmVudCBoYW5kbGVyIHF1ZXVlIHN0dWIgb2JqZWN0cworICAgICAgICB3aXRoIHNlbmRwaWNrbGUgbWV0aG9kICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgc2VuZHBpY2tsZShzZWxmLCBwaWNrbGVkX2V2ZW50KToKKyAgICAgICAgcmV0dXJuCisKKworY2xhc3MgVUlDbGllbnRTdHViKCk6CisgICAgIiIiIENsYXNzIHVzZWQgYXMgc3BlY2lmaWNhdGlvbiBmb3IgVUkgZXZlbnQgaGFuZGxlciBzdHViIG9iamVjdHMgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmV2ZW50ID0gTm9uZQorCisKK2NsYXNzIEV2ZW50SGFuZGxpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIgRXZlbnQgaGFuZGxpbmcgdGVzdCBjbGFzcyAiIiIKKyAgICBfdGhyZWFkbG9ja190ZXN0X2NhbGxzID0gW10KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzID0gTW9jaygpCisgICAgICAgIHVpX2NsaWVudDEgPSBVSUNsaWVudFN0dWIoKQorICAgICAgICB1aV9jbGllbnQyID0gVUlDbGllbnRTdHViKCkKKyAgICAgICAgc2VsZi5fdGVzdF91aTEgPSBNb2NrKHdyYXBzPXVpX2NsaWVudDEpCisgICAgICAgIHNlbGYuX3Rlc3RfdWkyID0gTW9jayh3cmFwcz11aV9jbGllbnQyKQorICAgICAgICBpbXBvcnRsaWIucmVsb2FkKGJiLmV2ZW50KQorCisgICAgZGVmIF9jcmVhdGVfdGVzdF9oYW5kbGVycyhzZWxmKToKKyAgICAgICAgIiIiIE1ldGhvZCB1c2VkIHRvIGNyZWF0ZSBhIHRlc3QgaGFuZGxlciBvcmRlcmVkIGRpY3Rpb25hcnkgIiIiCisgICAgICAgIHRlc3RfaGFuZGxlcnMgPSBiYi5jb21wYXQuT3JkZXJlZERpY3QoKQorICAgICAgICB0ZXN0X2hhbmRsZXJzWyJoYW5kbGVyMSJdID0gc2VsZi5fdGVzdF9wcm9jZXNzLmhhbmRsZXIxCisgICAgICAgIHRlc3RfaGFuZGxlcnNbImhhbmRsZXIyIl0gPSBzZWxmLl90ZXN0X3Byb2Nlc3MuaGFuZGxlcjIKKyAgICAgICAgcmV0dXJuIHRlc3RfaGFuZGxlcnMKKworICAgIGRlZiB0ZXN0X2NsYXNzX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBzZXRfY2xhc3NfaGFuZGxlcnMgYW5kIGdldF9jbGFzc19oYW5kbGVycyBtZXRob2RzICIiIgorICAgICAgICB0ZXN0X2hhbmRsZXJzID0gc2VsZi5fY3JlYXRlX3Rlc3RfaGFuZGxlcnMoKQorICAgICAgICBiYi5ldmVudC5zZXRfY2xhc3NfaGFuZGxlcnModGVzdF9oYW5kbGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2hhbmRsZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50LmdldF9jbGFzc19oYW5kbGVycygpKQorCisgICAgZGVmIHRlc3RfaGFuZGxlcnMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHNldF9oYW5kbGVycyBhbmQgZ2V0X2hhbmRsZXJzICIiIgorICAgICAgICB0ZXN0X2hhbmRsZXJzID0gc2VsZi5fY3JlYXRlX3Rlc3RfaGFuZGxlcnMoKQorICAgICAgICBiYi5ldmVudC5zZXRfaGFuZGxlcnModGVzdF9oYW5kbGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2hhbmRsZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50LmdldF9oYW5kbGVycygpKQorCisgICAgZGVmIHRlc3RfY2xlYW5fY2xhc3NfaGFuZGxlcnMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IGNsZWFuX2NsYXNzX2hhbmRsZXJzIG1ldGhvZCAiIiIKKyAgICAgICAgY2xlYW5EaWN0ID0gYmIuY29tcGF0Lk9yZGVyZWREaWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGVhbkRpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuY2xlYW5fY2xhc3NfaGFuZGxlcnMoKSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCByZWdpc3RlciBtZXRob2QgZm9yIGNsYXNzIGhhbmRsZXJzICIiIgorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiaGFuZGxlciIsIHNlbGYuX3Rlc3RfcHJvY2Vzcy5oYW5kbGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYmIuZXZlbnQuUmVnaXN0ZXJlZCkKKyAgICAgICAgaGFuZGxlcnNfZGljdCA9IGJiLmV2ZW50LmdldF9jbGFzc19oYW5kbGVycygpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImhhbmRsZXIiLCBoYW5kbGVyc19kaWN0KQorCisgICAgZGVmIHRlc3RfYWxyZWFkeV9yZWdpc3RlcmVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBkZXRlY3Rpb24gb2YgYW4gYWxyZWFkeSByZWdpc3RlZCBjbGFzcyBoYW5kbGVyICIiIgorICAgICAgICBiYi5ldmVudC5yZWdpc3RlcigiaGFuZGxlciIsIHNlbGYuX3Rlc3RfcHJvY2Vzcy5oYW5kbGVyKQorICAgICAgICBoYW5kbGVyc19kaWN0ID0gYmIuZXZlbnQuZ2V0X2NsYXNzX2hhbmRsZXJzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiaGFuZGxlciIsIGhhbmRsZXJzX2RpY3QpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJoYW5kbGVyIiwgc2VsZi5fdGVzdF9wcm9jZXNzLmhhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiYi5ldmVudC5BbHJlYWR5UmVnaXN0ZXJlZCkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2Zyb21fc3RyaW5nKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCByZWdpc3RlciBtZXRob2QgcmVjZWl2aW5nIGNvZGUgaW4gc3RyaW5nICIiIgorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcigic3RyaW5nX2hhbmRsZXIiLCAiICAgIHJldHVybiBUcnVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LlJlZ2lzdGVyZWQpCisgICAgICAgIGhhbmRsZXJzX2RpY3QgPSBiYi5ldmVudC5nZXRfY2xhc3NfaGFuZGxlcnMoKQorICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJpbmdfaGFuZGxlciIsIGhhbmRsZXJzX2RpY3QpCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl93aXRoX21hc2soc2VsZik6CisgICAgICAgICIiIiBUZXN0IHJlZ2lzdGVyIG1ldGhvZCB3aXRoIGV2ZW50IG1hc2tpbmcgIiIiCisgICAgICAgIG1hc2sgPSBbImJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQiLAorICAgICAgICAgICAgICAgICJiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQiXQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYmIuZXZlbnQuUmVnaXN0ZXJlZCkKKyAgICAgICAgaGFuZGxlcnNfZGljdCA9IGJiLmV2ZW50LmdldF9jbGFzc19oYW5kbGVycygpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImV2ZW50X2hhbmRsZXIiLCBoYW5kbGVyc19kaWN0KQorCisgICAgZGVmIHRlc3RfcmVtb3ZlKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCByZW1vdmUgbWV0aG9kIGZvciBjbGFzcyBoYW5kbGVycyAiIiIKKyAgICAgICAgdGVzdF9oYW5kbGVycyA9IHNlbGYuX2NyZWF0ZV90ZXN0X2hhbmRsZXJzKCkKKyAgICAgICAgYmIuZXZlbnQuc2V0X2NsYXNzX2hhbmRsZXJzKHRlc3RfaGFuZGxlcnMpCisgICAgICAgIGNvdW50ID0gbGVuKHRlc3RfaGFuZGxlcnMpCisgICAgICAgIGJiLmV2ZW50LnJlbW92ZSgiaGFuZGxlcjEiLCBOb25lKQorICAgICAgICB0ZXN0X2hhbmRsZXJzID0gYmIuZXZlbnQuZ2V0X2NsYXNzX2hhbmRsZXJzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGVzdF9oYW5kbGVycyksIGNvdW50IC0gMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBiYi5ldmVudC5yZW1vdmUoImhhbmRsZXIxIiwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2V4ZWN1dGVfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgZXhlY3V0ZV9oYW5kbGVyIG1ldGhvZCBmb3IgY2xhc3MgaGFuZGxlcnMgIiIiCisgICAgICAgIG1hc2sgPSBbImJiLmV2ZW50Lk9wZXJhdGlvblByb2dyZXNzIl0KKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXIoImV2ZW50X2hhbmRsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LlJlZ2lzdGVyZWQpCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuT3BlcmF0aW9uUHJvZ3Jlc3MoY3VycmVudD0xMCwgdG90YWw9MTAwKQorICAgICAgICBiYi5ldmVudC5leGVjdXRlX2hhbmRsZXIoImV2ZW50X2hhbmRsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpCisgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGV2ZW50KQorCisgICAgZGVmIHRlc3RfZmlyZV9jbGFzc19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgZmlyZV9jbGFzc19oYW5kbGVycyBtZXRob2QgIiIiCisgICAgICAgIG1hc2sgPSBbImJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQiXQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiYi5ldmVudC5SZWdpc3RlcmVkKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LlJlZ2lzdGVyZWQpCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQorICAgICAgICBldmVudDIgPSBiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQodG90YWw9MTIzKQorICAgICAgICBiYi5ldmVudC5maXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50MSwgTm9uZSkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9jbGFzc19oYW5kbGVycyhldmVudDIsIE5vbmUpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfY2xhc3NfaGFuZGxlcnMoZXZlbnQyLCBOb25lKQorICAgICAgICBleHBlY3RlZF9ldmVudF9oYW5kbGVyMSA9IFtjYWxsKGV2ZW50MSldCisgICAgICAgIGV4cGVjdGVkX2V2ZW50X2hhbmRsZXIyID0gW2NhbGwoZXZlbnQxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbChldmVudDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKGV2ZW50MildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50X2hhbmRsZXIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMi5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9ldmVudF9oYW5kbGVyMikKKworICAgIGRlZiB0ZXN0X2NoYW5nZV9oYW5kbGVyX2V2ZW50X21hcHBpbmcoc2VsZik6CisgICAgICAgICIiIiBUZXN0IGNoYW5naW5nIHRoZSBldmVudCBtYXBwaW5nIGZvciBjbGFzcyBoYW5kbGVycyAiIiIKKyAgICAgICAgZXZlbnQxID0gYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZCgpCisgICAgICAgIGV2ZW50MiA9IGJiLmV2ZW50Lk9wZXJhdGlvbkNvbXBsZXRlZCh0b3RhbD0xMjMpCisKKyAgICAgICAgIyByZWdpc3RlciBoYW5kbGVyIGZvciBhbGwgZXZlbnRzCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJldmVudF9oYW5kbGVyMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIioiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYmIuZXZlbnQuUmVnaXN0ZXJlZCkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9jbGFzc19oYW5kbGVycyhldmVudDEsIE5vbmUpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfY2xhc3NfaGFuZGxlcnMoZXZlbnQyLCBOb25lKQorICAgICAgICBleHBlY3RlZCA9IFtjYWxsKGV2ZW50MSksIGNhbGwoZXZlbnQyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICAgICAgIyB1bnJlZ2lzdGVyIGhhbmRsZXIgYW5kIHJlZ2lzdGVyIGl0IG9ubHkgZm9yIE9wZXJhdGlvblN0YXJ0ZWQKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVtb3ZlKCJldmVudF9oYW5kbGVyMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEpCisgICAgICAgIG1hc2sgPSBbImJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQiXQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiYi5ldmVudC5SZWdpc3RlcmVkKQorICAgICAgICBiYi5ldmVudC5maXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50MSwgTm9uZSkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9jbGFzc19oYW5kbGVycyhldmVudDIsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwoZXZlbnQxKSwgY2FsbChldmVudDIpLCBjYWxsKGV2ZW50MSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgICAgICMgdW5yZWdpc3RlciBoYW5kbGVyIGFuZCByZWdpc3RlciBpdCBvbmx5IGZvciBPcGVyYXRpb25Db21wbGV0ZWQKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVtb3ZlKCJldmVudF9oYW5kbGVyMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEpCisgICAgICAgIG1hc2sgPSBbImJiLmV2ZW50Lk9wZXJhdGlvbkNvbXBsZXRlZCJdCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJldmVudF9oYW5kbGVyMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LlJlZ2lzdGVyZWQpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfY2xhc3NfaGFuZGxlcnMoZXZlbnQxLCBOb25lKQorICAgICAgICBiYi5ldmVudC5maXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50MiwgTm9uZSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbY2FsbChldmVudDEpLCBjYWxsKGV2ZW50MiksIGNhbGwoZXZlbnQxKSwgY2FsbChldmVudDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMS5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHJlZ2lzdGVyX1VJSGhhbmRsZXIgbWV0aG9kICIiIgorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkxLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDEpCisKKyAgICBkZWYgdGVzdF9VSUhoYW5kbGVyX2FscmVhZHlfcmVnaXN0ZXJlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgcmVnaXN0ZXJpbmcgYW4gVUlIaGFuZGxlciBhbHJlYWR5IGV4aXN0aW5nICIiIgorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkxLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDEpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTEsIG1haW51aT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMikKKworICAgIGRlZiB0ZXN0X3VucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgdW5yZWdpc3Rlcl9VSUhoYW5kbGVyIG1ldGhvZCAiIiIKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLl90ZXN0X3VpMSwgbWFpbnVpPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAxKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC51bnJlZ2lzdGVyX1VJSGhhbmRsZXIoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9maXJlX3VpX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBmaXJlX3VpX2hhbmRsZXJzIG1ldGhvZCAiIiIKKyAgICAgICAgc2VsZi5fdGVzdF91aTEuZXZlbnQgPSBNb2NrKHNwZWNfc2V0PUV2ZW50UXVldWVTdHViKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkxLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDEpCisgICAgICAgIHNlbGYuX3Rlc3RfdWkyLmV2ZW50ID0gTW9jayhzcGVjX3NldD1QaWNrbGVFdmVudFF1ZXVlU3R1YikKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLl90ZXN0X3VpMiwgbWFpbnVpPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAyKQorICAgICAgICBldmVudDEgPSBiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkKCkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV91aV9oYW5kbGVycyhldmVudDEsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwoZXZlbnQxKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3VpMS5ldmVudC5zZW5kLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorICAgICAgICBleHBlY3RlZCA9IFtjYWxsKHBpY2tsZS5kdW1wcyhldmVudDEpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3VpMi5ldmVudC5zZW5kcGlja2xlLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZmlyZShzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgZmlyZSBtZXRob2QgdXNlZCB0byB0cmlnZ2VyIGNsYXNzIGFuZCB1aSBldmVudCBoYW5kbGVycyAiIiIKKyAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuQ29uZmlnUGFyc2VkIl0KKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXIoImV2ZW50X2hhbmRsZXIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrKQorCisgICAgICAgIHNlbGYuX3Rlc3RfdWkxLmV2ZW50ID0gTW9jayhzcGVjX3NldD1FdmVudFF1ZXVlU3R1YikKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLl90ZXN0X3VpMSwgbWFpbnVpPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAxKQorCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50LkNvbmZpZ1BhcnNlZCgpCisgICAgICAgIGJiLmV2ZW50LmZpcmUoZXZlbnQxLCBOb25lKQorICAgICAgICBleHBlY3RlZCA9IFtjYWxsKGV2ZW50MSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Rlc3RfdWkxLmV2ZW50LnNlbmQuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9maXJlX2Zyb21fd29ya2VyKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBmaXJlX2Zyb21fd29ya2VyIG1ldGhvZCAiIiIKKyAgICAgICAgc2VsZi5fdGVzdF91aTEuZXZlbnQgPSBNb2NrKHNwZWNfc2V0PUV2ZW50UXVldWVTdHViKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkxLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDEpCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50LkNvbmZpZ1BhcnNlZCgpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfZnJvbV93b3JrZXIoZXZlbnQxLCBOb25lKQorICAgICAgICBleHBlY3RlZCA9IFtjYWxsKGV2ZW50MSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTEuZXZlbnQuc2VuZC5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3ByaW50X3VpX3F1ZXVlKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBwcmludF91aV9xdWV1ZSBtZXRob2QgIiIiCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQorICAgICAgICBldmVudDIgPSBiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQodG90YWw9MTIzKQorICAgICAgICBiYi5ldmVudC5maXJlKGV2ZW50MSwgTm9uZSkKKyAgICAgICAgYmIuZXZlbnQuZmlyZShldmVudDIsIE5vbmUpCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoYmIuZXZlbnQuTG9nSGFuZGxlcigpKQorICAgICAgICBsb2dnZXIuaW5mbygiVGVzdCBpbmZvIExvZ1JlY29yZCIpCisgICAgICAgIGxvZ2dlci53YXJuaW5nKCJUZXN0IHdhcm5pbmcgTG9nUmVjb3JkIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydExvZ3MoIkJpdEJha2UiLCBsZXZlbD0iSU5GTyIpIGFzIGNtOgorICAgICAgICAgICAgYmIuZXZlbnQucHJpbnRfdWlfcXVldWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIklORk86Qml0QmFrZTpUZXN0IGluZm8gTG9nUmVjb3JkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIldBUk5JTkc6Qml0QmFrZTpUZXN0IHdhcm5pbmcgTG9nUmVjb3JkIl0pCisKKyAgICBkZWYgX3NldF90aHJlYWRsb2NrX3Rlc3RfbW9ja3VwcyhzZWxmKToKKyAgICAgICAgIiIiIENyZWF0ZSBVSSBldmVudCBoYW5kbGVyIG1vY2t1cHMgdXNlZCBpbiBlbmFibGUgYW5kIGRpc2FibGUKKyAgICAgICAgICAgIHRocmVhZGxvY2sgdGVzdHMgIiIiCisgICAgICAgIGRlZiB1aTFfZXZlbnRfc2VuZChldmVudCk6CisgICAgICAgICAgICBpZiB0eXBlKGV2ZW50KSBpcyBiYi5ldmVudC5Db25maWdQYXJzZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkbG9ja190ZXN0X2NhbGxzLmFwcGVuZCgidzFfdWkxIikKKyAgICAgICAgICAgIGlmIHR5cGUoZXZlbnQpIGlzIGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkbG9ja190ZXN0X2NhbGxzLmFwcGVuZCgidzJfdWkxIikKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMikKKworICAgICAgICBkZWYgdWkyX2V2ZW50X3NlbmQoZXZlbnQpOgorICAgICAgICAgICAgaWYgdHlwZShldmVudCkgaXMgYmIuZXZlbnQuQ29uZmlnUGFyc2VkOgorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZGxvY2tfdGVzdF9jYWxscy5hcHBlbmQoIncxX3VpMiIpCisgICAgICAgICAgICBpZiB0eXBlKGV2ZW50KSBpcyBiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkOgorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZGxvY2tfdGVzdF9jYWxscy5hcHBlbmQoIncyX3VpMiIpCisgICAgICAgICAgICB0aW1lLnNsZWVwKDIpCisKKyAgICAgICAgc2VsZi5fdGhyZWFkbG9ja190ZXN0X2NhbGxzID0gW10KKyAgICAgICAgc2VsZi5fdGVzdF91aTEuZXZlbnQgPSBFdmVudFF1ZXVlU3R1YigpCisgICAgICAgIHNlbGYuX3Rlc3RfdWkxLmV2ZW50LnNlbmQgPSB1aTFfZXZlbnRfc2VuZAorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkxLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDEpCisgICAgICAgIHNlbGYuX3Rlc3RfdWkyLmV2ZW50ID0gRXZlbnRRdWV1ZVN0dWIoKQorICAgICAgICBzZWxmLl90ZXN0X3VpMi5ldmVudC5zZW5kID0gdWkyX2V2ZW50X3NlbmQKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLl90ZXN0X3VpMiwgbWFpbnVpPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAyKQorCisgICAgZGVmIF9zZXRfYW5kX3J1bl90aHJlYWRsb2NrX3Rlc3Rfd29ya2VycyhzZWxmKToKKyAgICAgICAgIiIiIENyZWF0ZSBhbmQgcnVuIHRoZSB3b3JrZXJzIHVzZWQgdG8gdHJpZ2dlciBldmVudHMgaW4gZW5hYmxlIGFuZAorICAgICAgICAgICAgZGlzYWJsZSB0aHJlYWRsb2NrIHRlc3RzICIiIgorICAgICAgICB3b3JrZXIxID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fdGhyZWFkX2xvY2tfdGVzdF93b3JrZXIxKQorICAgICAgICB3b3JrZXIyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fdGhyZWFkX2xvY2tfdGVzdF93b3JrZXIyKQorICAgICAgICB3b3JrZXIxLnN0YXJ0KCkKKyAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICB3b3JrZXIyLnN0YXJ0KCkKKyAgICAgICAgd29ya2VyMS5qb2luKCkKKyAgICAgICAgd29ya2VyMi5qb2luKCkKKworICAgIGRlZiBfdGhyZWFkX2xvY2tfdGVzdF93b3JrZXIxKHNlbGYpOgorICAgICAgICAiIiIgRmlyc3Qgd29ya2VyIHVzZWQgdG8gZmlyZSB0aGUgQ29uZmlnUGFyc2VkIGV2ZW50IGZvciBlbmFibGUgYW5kCisgICAgICAgICAgICBkaXNhYmxlIHRocmVhZGxvY2tzIHRlc3RzICIiIgorICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkNvbmZpZ1BhcnNlZCgpLCBOb25lKQorCisgICAgZGVmIF90aHJlYWRfbG9ja190ZXN0X3dvcmtlcjIoc2VsZik6CisgICAgICAgICIiIiBTZWNvbmQgd29ya2VyIHVzZWQgdG8gZmlyZSB0aGUgT3BlcmF0aW9uU3RhcnRlZCBldmVudCBmb3IgZW5hYmxlCisgICAgICAgICAgICBhbmQgZGlzYWJsZSB0aHJlYWRsb2NrcyB0ZXN0cyAiIiIKKyAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkKCksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9lbmFibGVfdGhyZWFkbG9jayhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgZW5hYmxlX3RocmVhZGxvY2sgbWV0aG9kICIiIgorICAgICAgICBzZWxmLl9zZXRfdGhyZWFkbG9ja190ZXN0X21vY2t1cHMoKQorICAgICAgICBiYi5ldmVudC5lbmFibGVfdGhyZWFkbG9jaygpCisgICAgICAgIHNlbGYuX3NldF9hbmRfcnVuX3RocmVhZGxvY2tfdGVzdF93b3JrZXJzKCkKKyAgICAgICAgIyBDYWxscyB0byBVSSBoYW5kbGVycyBzaG91bGQgYmUgaW4gb3JkZXIgYXMgYWxsIHRoZSByZWdpc3RlcmVkCisgICAgICAgICMgaGFuZGxlcnMgZm9yIHRoZSBldmVudCBjb21pbmcgZnJvbSB0aGUgZmlyc3Qgd29ya2VyIHNob3VsZCBiZQorICAgICAgICAjIGNhbGxlZCBiZWZvcmUgcHJvY2Vzc2luZyB0aGUgZXZlbnQgZnJvbSB0aGUgc2Vjb25kIHdvcmtlci4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90aHJlYWRsb2NrX3Rlc3RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWyJ3MV91aTEiLCAidzFfdWkyIiwgIncyX3VpMSIsICJ3Ml91aTIiXSkKKworICAgIGRlZiB0ZXN0X2Rpc2FibGVfdGhyZWFkbG9jayhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgZGlzYWJsZV90aHJlYWRsb2NrIG1ldGhvZCAiIiIKKyAgICAgICAgc2VsZi5fc2V0X3RocmVhZGxvY2tfdGVzdF9tb2NrdXBzKCkKKyAgICAgICAgYmIuZXZlbnQuZGlzYWJsZV90aHJlYWRsb2NrKCkKKyAgICAgICAgc2VsZi5fc2V0X2FuZF9ydW5fdGhyZWFkbG9ja190ZXN0X3dvcmtlcnMoKQorICAgICAgICAjIENhbGxzIHRvIFVJIGhhbmRsZXJzIHNob3VsZCBiZSBpbnRlcnR3aW5lZCB0b2dldGhlci4gVGhhbmtzIHRvIHRoZQorICAgICAgICAjIGRlbGF5IGluIHRoZSByZWdpc3RlcmVkIGhhbmRsZXJzIGZvciB0aGUgZXZlbnQgY29taW5nIGZyb20gdGhlIGZpcnN0CisgICAgICAgICMgd29ya2VyLCB0aGUgZXZlbnQgY29taW5nIGZyb20gdGhlIHNlY29uZCB3b3JrZXIgc3RhcnRzIGJlaW5nCisgICAgICAgICMgcHJvY2Vzc2VkIGJlZm9yZSBmaW5pc2hpbmcgaGFuZGxpbmcgdGhlIGZpcnN0IHdvcmtlciBldmVudC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90aHJlYWRsb2NrX3Rlc3RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWyJ3MV91aTEiLCAidzJfdWkxIiwgIncxX3VpMiIsICJ3Ml91aTIiXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQppbmRleCA1YThkODkyLi43ZDdjNWQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CkBAIC0yOCw2ICsyOCwxMSBAQAogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBpbXBvcnQgYmIKIAorZGVmIHNraXBJZk5vTmV0d29yaygpOgorICAgIGlmIG9zLmVudmlyb24uZ2V0KCJCQl9TS0lQX05FVFRFU1RTIikgPT0gInllcyI6CisgICAgICAgIHJldHVybiB1bml0dGVzdC5za2lwKCJOZXR3b3JrIHRlc3RzIGJlaW5nIHNraXBwZWQiKQorICAgIHJldHVybiBsYW1iZGEgZjogZgorCiBjbGFzcyBVUklUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0ZXN0X3VyaXMgPSB7CiAgICAgICAgICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vaW5kZXguaHRtbCIgOiB7CkBAIC01MTgsMTQxICs1MjMsMTUzIEBACiAgICAgICAgICAgICBzZWxmLmZldGNoVW5wYWNrKFsnZmlsZTovL2E7c3ViZGlyPS9iaW4vc2gnXSkKIAogY2xhc3MgRmV0Y2hlck5ldHdvcmtUZXN0KEZldGNoZXJUZXN0KToKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9mZXRjaChzZWxmKToKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6IiwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4xLnRhci5neiJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZ2V0c2l6ZShzZWxmLmRsZGlyICsgIi9iaXRiYWtlLTEuMC50YXIuZ3oiKSwgNTc3NDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5nZXRzaXplKHNlbGYuZGxkaXIgKyAiL2JpdGJha2UtMS4xLnRhci5neiIpLCA1Nzg5MikKKyAgICAgICAgc2VsZi5kLnNldFZhcigiQkJfTk9fTkVUV09SSyIsICIxIikKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6IiwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4xLnRhci5neiJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3MubGlzdGRpcihzZWxmLnVucGFja2RpciArICIvYml0YmFrZS0xLjAvIikpLCA5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvcy5saXN0ZGlyKHNlbGYudW5wYWNrZGlyICsgIi9iaXRiYWtlLTEuMS8iKSksIDkpCiAKLSAgICBpZiBvcy5lbnZpcm9uLmdldCgiQkJfU0tJUF9ORVRURVNUUyIpID09ICJ5ZXMiOgotICAgICAgICBwcmludCgiVW5zZXQgQkJfU0tJUF9ORVRURVNUUyB0byBydW4gbmV0d29yayB0ZXN0cyIpCi0gICAgZWxzZToKLSAgICAgICAgZGVmIHRlc3RfZmV0Y2goc2VsZik6Ci0gICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMC50YXIuZ3oiLCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjEudGFyLmd6Il0sIHNlbGYuZCkKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjAudGFyLmd6IiksIDU3NzQ5KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjEudGFyLmd6IiksIDU3ODkyKQotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiQkJfTk9fTkVUV09SSyIsICIxIikKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4wLnRhci5neiIsICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMS50YXIuZ3oiXSwgc2VsZi5kKQotICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZmV0Y2hfbWlycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmQuc2V0VmFyKCJNSVJST1JTIiwgImh0dHA6Ly8uKi8uKiBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZSIpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9pbnZhbGlkLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMC50YXIuZ3oiXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjAudGFyLmd6IiksIDU3NzQ5KQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZmV0Y2hfbWlycm9yX29mX21pcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcigiTUlSUk9SUyIsICJodHRwOi8vLiovLiogaHR0cDovL2ludmFsaWQyLnlvY3RvcHJvamVjdC5vcmcvIFxuIGh0dHA6Ly9pbnZhbGlkMi55b2N0b3Byb2plY3Qub3JnLy4qIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlIikKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4wLnRhci5neiJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZ2V0c2l6ZShzZWxmLmRsZGlyICsgIi9iaXRiYWtlLTEuMC50YXIuZ3oiKSwgNTc3NDkpCisKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9mZXRjaF9maWxlX21pcnJvcl9vZl9taXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuZC5zZXRWYXIoIk1JUlJPUlMiLCAiaHR0cDovLy4qLy4qIGZpbGU6Ly8vc29tZTF3aGVyZS8gXG4gZmlsZTovLy9zb21lMXdoZXJlLy4qIGZpbGU6Ly9zb21lMndoZXJlLyBcbiBmaWxlOi8vc29tZTJ3aGVyZS8uKiBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZSIpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9pbnZhbGlkLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZS9iaXRiYWtlLTEuMC50YXIuZ3oiXSwgc2VsZi5kKQorICAgICAgICBvcy5ta2RpcihzZWxmLmRsZGlyICsgIi9zb21lMndoZXJlIikKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5nZXRzaXplKHNlbGYuZGxkaXIgKyAiL2JpdGJha2UtMS4wLnRhci5neiIpLCA1Nzc0OSkKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2ZldGNoX3ByZW1pcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcigiUFJFTUlSUk9SUyIsICJodHRwOi8vLiovLiogaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UiKQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5nZXRzaXplKHNlbGYuZGxkaXIgKyAiL2JpdGJha2UtMS4wLnRhci5neiIpLCA1Nzc0OSkKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiBnaXRmZXRjaGVyKHNlbGYsIHVybDEsIHVybDIpOgorICAgICAgICBkZWYgY2hlY2tyZXZpc2lvbihzZWxmLCBmZXRjaGVyKToKICAgICAgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3MubGlzdGRpcihzZWxmLnVucGFja2RpciArICIvYml0YmFrZS0xLjAvIikpLCA5KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3MubGlzdGRpcihzZWxmLnVucGFja2RpciArICIvYml0YmFrZS0xLjEvIikpLCA5KQorICAgICAgICAgICAgcmV2aXNpb24gPSBiYi5wcm9jZXNzLnJ1bigiZ2l0IHJldi1wYXJzZSBIRUFEIiwgc2hlbGw9VHJ1ZSwgY3dkPXNlbGYudW5wYWNrZGlyICsgIi9naXQiKVswXS5zdHJpcCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmlzaW9uLCAiMjcwYTA1YjBiNGJhMDk1OWZlMDYyNGQyYTQ4ODVkN2I3MDQyNmRhNSIpCiAKLSAgICAgICAgZGVmIHRlc3RfZmV0Y2hfbWlycm9yKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiTUlSUk9SUyIsICJodHRwOi8vLiovLiogaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UiKQotICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4wLnRhci5neiJdLCBzZWxmLmQpCi0gICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5nZXRzaXplKHNlbGYuZGxkaXIgKyAiL2JpdGJha2UtMS4wLnRhci5neiIpLCA1Nzc0OSkKKyAgICAgICAgc2VsZi5kLnNldFZhcigiQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTIiwgIjEiKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCJTUkNSRVYiLCAiMjcwYTA1YjBiNGJhMDk1OWZlMDYyNGQyYTQ4ODVkN2I3MDQyNmRhNSIpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsMV0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGNoZWNrcmV2aXNpb24oc2VsZiwgZmV0Y2hlcikKKyAgICAgICAgIyBXaXBlIG91dCB0aGUgZGxkaXIgY2xvbmUgYW5kIHRoZSB1bnBhY2tlZCBzb3VyY2UsIHR1cm4gb2ZmIHRoZSBuZXR3b3JrIGFuZCBjaGVjayBtaXJyb3IgdGFyYmFsbCB3b3JrcworICAgICAgICBiYi51dGlscy5wcnVuZWRpcihzZWxmLmRsZGlyICsgIi9naXQyLyIpCisgICAgICAgIGJiLnV0aWxzLnBydW5lZGlyKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9OT19ORVRXT1JLIiwgIjEiKQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybDJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBjaGVja3JldmlzaW9uKHNlbGYsIGZldGNoZXIpCiAKLSAgICAgICAgZGVmIHRlc3RfZmV0Y2hfbWlycm9yX29mX21pcnJvcihzZWxmKToKLSAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIk1JUlJPUlMiLCAiaHR0cDovLy4qLy4qIGh0dHA6Ly9pbnZhbGlkMi55b2N0b3Byb2plY3Qub3JnLyBcbiBodHRwOi8vaW52YWxpZDIueW9jdG9wcm9qZWN0Lm9yZy8uKiBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZSIpCi0gICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6Il0sIHNlbGYuZCkKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjAudGFyLmd6IiksIDU3NzQ5KQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdGZldGNoKHNlbGYpOgorICAgICAgICB1cmwxID0gdXJsMiA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIgorICAgICAgICBzZWxmLmdpdGZldGNoZXIodXJsMSwgdXJsMikKIAotICAgICAgICBkZWYgdGVzdF9mZXRjaF9maWxlX21pcnJvcl9vZl9taXJyb3Ioc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJNSVJST1JTIiwgImh0dHA6Ly8uKi8uKiBmaWxlOi8vL3NvbWUxd2hlcmUvIFxuIGZpbGU6Ly8vc29tZTF3aGVyZS8uKiBmaWxlOi8vc29tZTJ3aGVyZS8gXG4gZmlsZTovL3NvbWUyd2hlcmUvLiogaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UiKQotICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9iaXRiYWtlL2JpdGJha2UtMS4wLnRhci5neiJdLCBzZWxmLmQpCi0gICAgICAgICAgICBvcy5ta2RpcihzZWxmLmRsZGlyICsgIi9zb21lMndoZXJlIikKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjAudGFyLmd6IiksIDU3NzQ5KQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdGZldGNoX2dvb2RzcmNyZXYoc2VsZik6CisgICAgICAgICMgU1JDUkVWIGlzIHNldCBidXQgbWF0Y2hlcyByZXY9IHBhcmFtZXRlcgorICAgICAgICB1cmwxID0gdXJsMiA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlO3Jldj0yNzBhMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1IgorICAgICAgICBzZWxmLmdpdGZldGNoZXIodXJsMSwgdXJsMikKIAotICAgICAgICBkZWYgdGVzdF9mZXRjaF9wcmVtaXJyb3Ioc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQUkVNSVJST1JTIiwgImh0dHA6Ly8uKi8uKiBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvYml0YmFrZSIpCi0gICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJodHRwOi8vaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6Il0sIHNlbGYuZCkKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmdldHNpemUoc2VsZi5kbGRpciArICIvYml0YmFrZS0xLjAudGFyLmd6IiksIDU3NzQ5KQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdGZldGNoX2JhZHNyY3JldihzZWxmKToKKyAgICAgICAgIyBTUkNSRVYgaXMgc2V0IGJ1dCBkb2VzIG5vdCBtYXRjaCByZXY9IHBhcmFtZXRlcgorICAgICAgICB1cmwxID0gdXJsMiA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlO3Jldj1kZWFkMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1IgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaC5GZXRjaEVycm9yLCBzZWxmLmdpdGZldGNoZXIsIHVybDEsIHVybDIpCiAKLSAgICAgICAgZGVmIGdpdGZldGNoZXIoc2VsZiwgdXJsMSwgdXJsMik6Ci0gICAgICAgICAgICBkZWYgY2hlY2tyZXZpc2lvbihzZWxmLCBmZXRjaGVyKToKLSAgICAgICAgICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKLSAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGJiLnByb2Nlc3MucnVuKCJnaXQgcmV2LXBhcnNlIEhFQUQiLCBzaGVsbD1UcnVlLCBjd2Q9c2VsZi51bnBhY2tkaXIgKyAiL2dpdCIpWzBdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmlzaW9uLCAiMjcwYTA1YjBiNGJhMDk1OWZlMDYyNGQyYTQ4ODVkN2I3MDQyNmRhNSIpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfdGFnYW5kcmV2KHNlbGYpOgorICAgICAgICAjIFNSQ1JFViBpcyBzZXQgYnV0IGRvZXMgbm90IG1hdGNoIHJldj0gcGFyYW1ldGVyCisgICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U7cmV2PTI3MGEwNWIwYjRiYTA5NTlmZTA2MjRkMmE0ODg1ZDdiNzA0MjZkYTU7dGFnPTI3MGEwNWIwYjRiYTA5NTlmZTA2MjRkMmE0ODg1ZDdiNzA0MjZkYTUiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoLkZldGNoRXJyb3IsIHNlbGYuZ2l0ZmV0Y2hlciwgdXJsMSwgdXJsMikKIAotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTIiwgIjEiKQotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiU1JDUkVWIiwgIjI3MGEwNWIwYjRiYTA5NTlmZTA2MjRkMmE0ODg1ZDdiNzA0MjZkYTUiKQotICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmwxXSwgc2VsZi5kKQotICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCi0gICAgICAgICAgICBjaGVja3JldmlzaW9uKHNlbGYsIGZldGNoZXIpCi0gICAgICAgICAgICAjIFdpcGUgb3V0IHRoZSBkbGRpciBjbG9uZSBhbmQgdGhlIHVucGFja2VkIHNvdXJjZSwgdHVybiBvZmYgdGhlIG5ldHdvcmsgYW5kIGNoZWNrIG1pcnJvciB0YXJiYWxsIHdvcmtzCi0gICAgICAgICAgICBiYi51dGlscy5wcnVuZWRpcihzZWxmLmRsZGlyICsgIi9naXQyLyIpCi0gICAgICAgICAgICBiYi51dGlscy5wcnVuZWRpcihzZWxmLnVucGFja2RpcikKLSAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJCX05PX05FVFdPUksiLCAiMSIpCi0gICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybDJdLCBzZWxmLmQpCi0gICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKLSAgICAgICAgICAgIGNoZWNrcmV2aXNpb24oc2VsZiwgZmV0Y2hlcikKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9naXRmZXRjaF9sb2NhbHVzZWhlYWQoc2VsZik6CisgICAgICAgICMgQ3JlYXRlIGR1bW15IGxvY2FsIEdpdCByZXBvCisgICAgICAgIHNyY19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1zZWxmLnRlbXBkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0nZ2l0ZmV0Y2hfbG9jYWx1c2VoZWFkXycpCisgICAgICAgIHNyY19kaXIgPSBvcy5wYXRoLmFic3BhdGgoc3JjX2RpcikKKyAgICAgICAgYmIucHJvY2Vzcy5ydW4oImdpdCBpbml0IiwgY3dkPXNyY19kaXIpCisgICAgICAgIGJiLnByb2Nlc3MucnVuKCJnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0nRHVtbXkgY29tbWl0JyIsCisgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zcmNfZGlyKQorICAgICAgICAjIFVzZSBvdGhlciBicmFuY2ggdGhhbiBtYXN0ZXIKKyAgICAgICAgYmIucHJvY2Vzcy5ydW4oImdpdCBjaGVja291dCAtYiBteS1kZXZlbCIsIGN3ZD1zcmNfZGlyKQorICAgICAgICBiYi5wcm9jZXNzLnJ1bigiZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tJ0R1bW15IGNvbW1pdCAyJyIsCisgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zcmNfZGlyKQorICAgICAgICBzdGRvdXQgPSBiYi5wcm9jZXNzLnJ1bigiZ2l0IHJldi1wYXJzZSBIRUFEIiwgY3dkPXNyY19kaXIpCisgICAgICAgIG9yaWdfcmV2ID0gc3Rkb3V0WzBdLnN0cmlwKCkKIAotICAgICAgICBkZWYgdGVzdF9naXRmZXRjaChzZWxmKToKLSAgICAgICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UiCi0gICAgICAgICAgICBzZWxmLmdpdGZldGNoZXIodXJsMSwgdXJsMikKKyAgICAgICAgIyBGZXRjaCBhbmQgY2hlY2sgcmV2aXNpb24KKyAgICAgICAgc2VsZi5kLnNldFZhcigiU1JDUkVWIiwgIkFVVE9JTkMiKQorICAgICAgICB1cmwgPSAiZ2l0Oi8vIiArIHNyY19kaXIgKyAiO3Byb3RvY29sPWZpbGU7dXNlaGVhZD0xIgorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzdGRvdXQgPSBiYi5wcm9jZXNzLnJ1bigiZ2l0IHJldi1wYXJzZSBIRUFEIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPW9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ2dpdCcpKQorICAgICAgICB1bnBhY2tfcmV2ID0gc3Rkb3V0WzBdLnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnX3JldiwgdW5wYWNrX3JldikKIAotICAgICAgICBkZWYgdGVzdF9naXRmZXRjaF9nb29kc3JjcmV2KHNlbGYpOgotICAgICAgICAgICAgIyBTUkNSRVYgaXMgc2V0IGJ1dCBtYXRjaGVzIHJldj0gcGFyYW1ldGVyCi0gICAgICAgICAgICB1cmwxID0gdXJsMiA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlO3Jldj0yNzBhMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1IgotICAgICAgICAgICAgc2VsZi5naXRmZXRjaGVyKHVybDEsIHVybDIpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfcmVtb3RldXNlaGVhZChzZWxmKToKKyAgICAgICAgdXJsID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U7dXNlaGVhZD0xIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaC5QYXJhbWV0ZXJFcnJvciwgc2VsZi5naXRmZXRjaGVyLCB1cmwsIHVybCkKIAotICAgICAgICBkZWYgdGVzdF9naXRmZXRjaF9iYWRzcmNyZXYoc2VsZik6Ci0gICAgICAgICAgICAjIFNSQ1JFViBpcyBzZXQgYnV0IGRvZXMgbm90IG1hdGNoIHJldj0gcGFyYW1ldGVyCi0gICAgICAgICAgICB1cmwxID0gdXJsMiA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlO3Jldj1kZWFkMDViMGI0YmEwOTU5ZmUwNjI0ZDJhNDg4NWQ3YjcwNDI2ZGE1IgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2guRmV0Y2hFcnJvciwgc2VsZi5naXRmZXRjaGVyLCB1cmwxLCB1cmwyKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2dpdGZldGNoX3ByZW1pcnJvcihzZWxmKToKKyAgICAgICAgdXJsMSA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIgorICAgICAgICB1cmwyID0gImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UiCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIFxuIikKKyAgICAgICAgc2VsZi5naXRmZXRjaGVyKHVybDEsIHVybDIpCiAKLSAgICAgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfdGFnYW5kcmV2KHNlbGYpOgotICAgICAgICAgICAgIyBTUkNSRVYgaXMgc2V0IGJ1dCBkb2VzIG5vdCBtYXRjaCByZXY9IHBhcmFtZXRlcgotICAgICAgICAgICAgdXJsMSA9IHVybDIgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZTtyZXY9MjcwYTA1YjBiNGJhMDk1OWZlMDYyNGQyYTQ4ODVkN2I3MDQyNmRhNTt0YWc9MjcwYTA1YjBiNGJhMDk1OWZlMDYyNGQyYTQ4ODVkN2I3MDQyNmRhNSIKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoLkZldGNoRXJyb3IsIHNlbGYuZ2l0ZmV0Y2hlciwgdXJsMSwgdXJsMikKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9naXRmZXRjaF9wcmVtaXJyb3IyKHNlbGYpOgorICAgICAgICB1cmwxID0gdXJsMiA9ICJnaXQ6Ly9zb21lc2VydmVyLm9yZy9iaXRiYWtlIgorICAgICAgICBzZWxmLmQuc2V0VmFyKCJQUkVNSVJST1JTIiwgImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UgZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSBcbiIpCisgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcih1cmwxLCB1cmwyKQogCi0gICAgICAgIGRlZiB0ZXN0X2dpdGZldGNoX2xvY2FsdXNlaGVhZChzZWxmKToKLSAgICAgICAgICAgICMgQ3JlYXRlIGR1bW15IGxvY2FsIEdpdCByZXBvCi0gICAgICAgICAgICBzcmNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9c2VsZi50ZW1wZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSdnaXRmZXRjaF9sb2NhbHVzZWhlYWRfJykKLSAgICAgICAgICAgIHNyY19kaXIgPSBvcy5wYXRoLmFic3BhdGgoc3JjX2RpcikKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCJnaXQgaW5pdCIsIGN3ZD1zcmNfZGlyKQotICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oImdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSdEdW1teSBjb21taXQnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zcmNfZGlyKQotICAgICAgICAgICAgIyBVc2Ugb3RoZXIgYnJhbmNoIHRoYW4gbWFzdGVyCi0gICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bigiZ2l0IGNoZWNrb3V0IC1iIG15LWRldmVsIiwgY3dkPXNyY19kaXIpCi0gICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bigiZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tJ0R1bW15IGNvbW1pdCAyJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c3JjX2RpcikKLSAgICAgICAgICAgIHN0ZG91dCA9IGJiLnByb2Nlc3MucnVuKCJnaXQgcmV2LXBhcnNlIEhFQUQiLCBjd2Q9c3JjX2RpcikKLSAgICAgICAgICAgIG9yaWdfcmV2ID0gc3Rkb3V0WzBdLnN0cmlwKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9naXRmZXRjaF9wcmVtaXJyb3IzKHNlbGYpOgorICAgICAgICByZWFsdXJsID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UiCisgICAgICAgIGR1bW15dXJsID0gImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UiCisgICAgICAgIHNlbGYuc291cmNlZGlyID0gc2VsZi51bnBhY2tkaXIucmVwbGFjZSgidW5wYWNrZWQiLCAic291cmNlbWlycm9yLmdpdCIpCisgICAgICAgIG9zLmNoZGlyKHNlbGYudGVtcGRpcikKKyAgICAgICAgYmIucHJvY2Vzcy5ydW4oImdpdCBjbG9uZSAlcyAlcyAyPiAvZGV2L251bGwiICUgKHJlYWx1cmwsIHNlbGYuc291cmNlZGlyKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc2VsZi5kLnNldFZhcigiUFJFTUlSUk9SUyIsICIlcyBnaXQ6Ly8lcztwcm90b2NvbD1maWxlIFxuIiAlIChkdW1teXVybCwgc2VsZi5zb3VyY2VkaXIpKQorICAgICAgICBzZWxmLmdpdGZldGNoZXIoZHVtbXl1cmwsIGR1bW15dXJsKQogCi0gICAgICAgICAgICAjIEZldGNoIGFuZCBjaGVjayByZXZpc2lvbgotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiU1JDUkVWIiwgIkFVVE9JTkMiKQotICAgICAgICAgICAgdXJsID0gImdpdDovLyIgKyBzcmNfZGlyICsgIjtwcm90b2NvbD1maWxlO3VzZWhlYWQ9MSIKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQotICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCi0gICAgICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKLSAgICAgICAgICAgIHN0ZG91dCA9IGJiLnByb2Nlc3MucnVuKCJnaXQgcmV2LXBhcnNlIEhFQUQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPW9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ2dpdCcpKQotICAgICAgICAgICAgdW5wYWNrX3JldiA9IHN0ZG91dFswXS5zdHJpcCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdfcmV2LCB1bnBhY2tfcmV2KQotCi0gICAgICAgIGRlZiB0ZXN0X2dpdGZldGNoX3JlbW90ZXVzZWhlYWQoc2VsZik6Ci0gICAgICAgICAgICB1cmwgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZTt1c2VoZWFkPTEiCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaC5QYXJhbWV0ZXJFcnJvciwgc2VsZi5naXRmZXRjaGVyLCB1cmwsIHVybCkKLQotICAgICAgICBkZWYgdGVzdF9naXRmZXRjaF9wcmVtaXJyb3Ioc2VsZik6Ci0gICAgICAgICAgICB1cmwxID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UiCi0gICAgICAgICAgICB1cmwyID0gImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UiCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQUkVNSVJST1JTIiwgImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UgZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSBcbiIpCi0gICAgICAgICAgICBzZWxmLmdpdGZldGNoZXIodXJsMSwgdXJsMikKLQotICAgICAgICBkZWYgdGVzdF9naXRmZXRjaF9wcmVtaXJyb3IyKHNlbGYpOgotICAgICAgICAgICAgdXJsMSA9IHVybDIgPSAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSIKLSAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIFxuIikKLSAgICAgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcih1cmwxLCB1cmwyKQotCi0gICAgICAgIGRlZiB0ZXN0X2dpdGZldGNoX3ByZW1pcnJvcjMoc2VsZik6Ci0gICAgICAgICAgICByZWFsdXJsID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UiCi0gICAgICAgICAgICBkdW1teXVybCA9ICJnaXQ6Ly9zb21lc2VydmVyLm9yZy9iaXRiYWtlIgotICAgICAgICAgICAgc2VsZi5zb3VyY2VkaXIgPSBzZWxmLnVucGFja2Rpci5yZXBsYWNlKCJ1bnBhY2tlZCIsICJzb3VyY2VtaXJyb3IuZ2l0IikKLSAgICAgICAgICAgIG9zLmNoZGlyKHNlbGYudGVtcGRpcikKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCJnaXQgY2xvbmUgJXMgJXMgMj4gL2Rldi9udWxsIiAlIChyZWFsdXJsLCBzZWxmLnNvdXJjZWRpciksIHNoZWxsPVRydWUpCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQUkVNSVJST1JTIiwgIiVzIGdpdDovLyVzO3Byb3RvY29sPWZpbGUgXG4iICUgKGR1bW15dXJsLCBzZWxmLnNvdXJjZWRpcikpCi0gICAgICAgICAgICBzZWxmLmdpdGZldGNoZXIoZHVtbXl1cmwsIGR1bW15dXJsKQotCi0gICAgICAgIGRlZiB0ZXN0X2dpdF9zdWJtb2R1bGUoc2VsZik6Ci0gICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJnaXRzbTovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC1zdWJtb2R1bGUtdGVzdDtyZXY9ZjEyZTU3ZjJlZGYwYWE1MzRjZjE2MTZmYTk4M2QxNjVhOTJiMDg0MiJdLCBzZWxmLmQpCi0gICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKLSAgICAgICAgICAgICMgUHJldmlvdXMgY3dkIGhhcyBiZWVuIGRlbGV0ZWQKLSAgICAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguZGlybmFtZShzZWxmLnVucGFja2RpcikpCi0gICAgICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9naXRfc3VibW9kdWxlKHNlbGYpOgorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJnaXRzbTovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC1zdWJtb2R1bGUtdGVzdDtyZXY9ZjEyZTU3ZjJlZGYwYWE1MzRjZjE2MTZmYTk4M2QxNjVhOTJiMDg0MiJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIFByZXZpb3VzIGN3ZCBoYXMgYmVlbiBkZWxldGVkCisgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguZGlybmFtZShzZWxmLnVucGFja2RpcikpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQogCiAKIGNsYXNzIFRydXN0ZWROZXR3b3Jrc1Rlc3QoRmV0Y2hlclRlc3QpOgpAQCAtNzgyLDMyICs3OTksMzIgQEAKICAgICAgICAgKCJkYiIsICJodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9iZXJrZWxleS1kYi9kYi01LjMuMjEudGFyLmd6IiwgImh0dHA6Ly93d3cub3JhY2xlLmNvbS90ZWNobmV0d29yay9wcm9kdWN0cy9iZXJrZWxleWRiL2Rvd25sb2Fkcy9pbmRleC0wODI5NDQuaHRtbCIsICJodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9vdG4vYmVya2VsZXktZGIvKD9QPG5hbWU+ZGItKSg/UDxwdmVyPigoXGQrW1wuXC1fXSopKykpXC50YXJcLmd6IikKICAgICAgICAgICAgIDogIjYuMS4xOSIsCiAgICAgfQotICAgIGlmIG9zLmVudmlyb24uZ2V0KCJCQl9TS0lQX05FVFRFU1RTIikgPT0gInllcyI6Ci0gICAgICAgIHByaW50KCJVbnNldCBCQl9TS0lQX05FVFRFU1RTIHRvIHJ1biBuZXR3b3JrIHRlc3RzIikKLSAgICBlbHNlOgotICAgICAgICBkZWYgdGVzdF9naXRfbGF0ZXN0X3ZlcnNpb25zdHJpbmcoc2VsZik6Ci0gICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3RfZ2l0X3VyaXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQTiIsIGtbMF0pCi0gICAgICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiU1JDUkVWIiwga1syXSkKLSAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCIsIGtbM10pCi0gICAgICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKLSAgICAgICAgICAgICAgICBwdXB2ZXI9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQotICAgICAgICAgICAgICAgIHZlcnN0cmluZyA9IHB1cHZlclswXQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzdHJpbmcsIG1zZz0iQ291bGQgbm90IGZpbmQgdXBzdHJlYW0gdmVyc2lvbiIpCi0gICAgICAgICAgICAgICAgciA9IGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcodiwgdmVyc3RyaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyID09IC0xIG9yIHIgPT0gMCwgbXNnPSJQYWNrYWdlICVzLCB2ZXJzaW9uOiAlcyA8PSAlcyIgJSAoa1swXSwgdiwgdmVyc3RyaW5nKSkKIAotICAgICAgICBkZWYgdGVzdF93Z2V0X2xhdGVzdF92ZXJzaW9uc3RyaW5nKHNlbGYpOgotICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi50ZXN0X3dnZXRfdXJpcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBOIiwga1swXSkKLSAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJVUFNUUkVBTV9DSEVDS19VUkkiLCBrWzJdKQotICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1JFR0VYIiwga1szXSkKLSAgICAgICAgICAgICAgICB1ZCA9IGJiLmZldGNoMi5GZXRjaERhdGEoa1sxXSwgc2VsZi5kKQotICAgICAgICAgICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQotICAgICAgICAgICAgICAgIHZlcnN0cmluZyA9IHB1cHZlclswXQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzdHJpbmcsIG1zZz0iQ291bGQgbm90IGZpbmQgdXBzdHJlYW0gdmVyc2lvbiIpCi0gICAgICAgICAgICAgICAgciA9IGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcodiwgdmVyc3RyaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyID09IC0xIG9yIHIgPT0gMCwgbXNnPSJQYWNrYWdlICVzLCB2ZXJzaW9uOiAlcyA8PSAlcyIgJSAoa1swXSwgdiwgdmVyc3RyaW5nKSkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9naXRfbGF0ZXN0X3ZlcnNpb25zdHJpbmcoc2VsZik6CisgICAgICAgIGZvciBrLCB2IGluIHNlbGYudGVzdF9naXRfdXJpcy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiUE4iLCBrWzBdKQorICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiU1JDUkVWIiwga1syXSkKKyAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYIiwga1szXSkKKyAgICAgICAgICAgIHVkID0gYmIuZmV0Y2gyLkZldGNoRGF0YShrWzFdLCBzZWxmLmQpCisgICAgICAgICAgICBwdXB2ZXI9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24iKQorICAgICAgICAgICAgciA9IGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcodiwgdmVyc3RyaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3Rfd2dldF9sYXRlc3RfdmVyc2lvbnN0cmluZyhzZWxmKToKKyAgICAgICAgZm9yIGssIHYgaW4gc2VsZi50ZXN0X3dnZXRfdXJpcy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiUE4iLCBrWzBdKQorICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiVVBTVFJFQU1fQ0hFQ0tfVVJJIiwga1syXSkKKyAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1JFR0VYIiwga1szXSkKKyAgICAgICAgICAgIHVkID0gYmIuZmV0Y2gyLkZldGNoRGF0YShrWzFdLCBzZWxmLmQpCisgICAgICAgICAgICBwdXB2ZXIgPSB1ZC5tZXRob2QubGF0ZXN0X3ZlcnNpb25zdHJpbmcodWQsIHNlbGYuZCkKKyAgICAgICAgICAgIHZlcnN0cmluZyA9IHB1cHZlclswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIikKKyAgICAgICAgICAgIHIgPSBiYi51dGlscy52ZXJjbXBfc3RyaW5nKHYsIHZlcnN0cmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyID09IC0xIG9yIHIgPT0gMCwgbXNnPSJQYWNrYWdlICVzLCB2ZXJzaW9uOiAlcyA8PSAlcyIgJSAoa1swXSwgdiwgdmVyc3RyaW5nKSkKIAogCiBjbGFzcyBGZXRjaENoZWNrU3RhdHVzVGVzdChGZXRjaGVyVGVzdCk6CkBAIC04MjAsMzcgKzgzNyw2MzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly95b2N0b3Byb2plY3Qub3JnL2RvY3VtZW50YXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvb3BrZy9vcGtnLTAuMS43LnRhci5neiIsCiAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9vcGtnL29wa2ctMC4zLjAudGFyLmd6IiwKLSAgICAgICAgICAgICAgICAgICAgICAiZnRwOi8vZnRwLmdudS5vcmcvZ251L2F1dG9jb25mL2F1dG9jb25mLTIuNjAudGFyLmd6IiwKLSAgICAgICAgICAgICAgICAgICAgICAiZnRwOi8vZnRwLmdudS5vcmcvZ251L2NoZXNzL2dudWNoZXNzLTUuMDgudGFyLmd6IiwKLSAgICAgICAgICAgICAgICAgICAgICAiZnRwOi8vZnRwLmdudS5vcmcvZ251L2dtcC9nbXAtNC4wLnRhci5neiIsCisgICAgICAgICAgICAgICAgICAgICAgImZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9saWJmZmkvbGliZmZpLTEuMjAudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9hdXRvY29uZi9hdXRvY29uZi0yLjYwLnRhci5neiIsCisgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2NoZXNzL2dudWNoZXNzLTUuMDgudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvZ21wL2dtcC00LjAudGFyLmd6IiwKICAgICAgICAgICAgICAgICAgICAgICAjIEdpdEh1YiByZWxlYXNlcyBhcmUgaG9zdGVkIG9uIEFtYXpvbiBTMywgd2hpY2ggZG9lc24ndCBzdXBwb3J0IEhFQUQKICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9naXRodWIuY29tL2tlcmdvdGgvdHNsaWIvcmVsZWFzZXMvZG93bmxvYWQvMS4xL3RzbGliLTEuMS50YXIueHoiCiAgICAgICAgICAgICAgICAgICAgICAgXQogCi0gICAgaWYgb3MuZW52aXJvbi5nZXQoIkJCX1NLSVBfTkVUVEVTVFMiKSA9PSAieWVzIjoKLSAgICAgICAgcHJpbnQoIlVuc2V0IEJCX1NLSVBfTkVUVEVTVFMgdG8gcnVuIG5ldHdvcmsgdGVzdHMiKQotICAgIGVsc2U6Ci0KLSAgICAgICAgZGVmIHRlc3Rfd2dldF9jaGVja3N0YXR1cyhzZWxmKToKLSAgICAgICAgICAgIGZldGNoID0gYmIuZmV0Y2gyLkZldGNoKHNlbGYudGVzdF93Z2V0X3VyaXMsIHNlbGYuZCkKLSAgICAgICAgICAgIGZvciB1IGluIHNlbGYudGVzdF93Z2V0X3VyaXM6CisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3Rfd2dldF9jaGVja3N0YXR1cyhzZWxmKToKKyAgICAgICAgZmV0Y2ggPSBiYi5mZXRjaDIuRmV0Y2goc2VsZi50ZXN0X3dnZXRfdXJpcywgc2VsZi5kKQorICAgICAgICBmb3IgdSBpbiBzZWxmLnRlc3Rfd2dldF91cmlzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXUpOgogICAgICAgICAgICAgICAgIHVkID0gZmV0Y2gudWRbdV0KICAgICAgICAgICAgICAgICBtID0gdWQubWV0aG9kCiAgICAgICAgICAgICAgICAgcmV0ID0gbS5jaGVja3N0YXR1cyhmZXRjaCwgdWQsIHNlbGYuZCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmV0LCBtc2c9IlVSSSAlcywgY2FuJ3QgY2hlY2sgc3RhdHVzIiAlICh1KSkKIAorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X3dnZXRfY2hlY2tzdGF0dXNfY29ubmVjdGlvbl9jYWNoZShzZWxmKToKKyAgICAgICAgZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoQ29ubmVjdGlvbkNhY2hlCiAKLSAgICAgICAgZGVmIHRlc3Rfd2dldF9jaGVja3N0YXR1c19jb25uZWN0aW9uX2NhY2hlKHNlbGYpOgotICAgICAgICAgICAgZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoQ29ubmVjdGlvbkNhY2hlCisgICAgICAgIGNvbm5lY3Rpb25fY2FjaGUgPSBGZXRjaENvbm5lY3Rpb25DYWNoZSgpCisgICAgICAgIGZldGNoID0gYmIuZmV0Y2gyLkZldGNoKHNlbGYudGVzdF93Z2V0X3VyaXMsIHNlbGYuZCwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9jYWNoZSA9IGNvbm5lY3Rpb25fY2FjaGUpCiAKLSAgICAgICAgICAgIGNvbm5lY3Rpb25fY2FjaGUgPSBGZXRjaENvbm5lY3Rpb25DYWNoZSgpCi0gICAgICAgICAgICBmZXRjaCA9IGJiLmZldGNoMi5GZXRjaChzZWxmLnRlc3Rfd2dldF91cmlzLCBzZWxmLmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2NhY2hlID0gY29ubmVjdGlvbl9jYWNoZSkKLQotICAgICAgICAgICAgZm9yIHUgaW4gc2VsZi50ZXN0X3dnZXRfdXJpczoKKyAgICAgICAgZm9yIHUgaW4gc2VsZi50ZXN0X3dnZXRfdXJpczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11KToKICAgICAgICAgICAgICAgICB1ZCA9IGZldGNoLnVkW3VdCiAgICAgICAgICAgICAgICAgbSA9IHVkLm1ldGhvZAogICAgICAgICAgICAgICAgIHJldCA9IG0uY2hlY2tzdGF0dXMoZmV0Y2gsIHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJldCwgbXNnPSJVUkkgJXMsIGNhbid0IGNoZWNrIHN0YXR1cyIgJSAodSkpCiAKLSAgICAgICAgICAgIGNvbm5lY3Rpb25fY2FjaGUuY2xvc2VfY29ubmVjdGlvbnMoKQorICAgICAgICBjb25uZWN0aW9uX2NhY2hlLmNsb3NlX2Nvbm5lY3Rpb25zKCkKKworCitjbGFzcyBHaXRNYWtlU2hhbGxvd1Rlc3QoRmV0Y2hlclRlc3QpOgorICAgIGJpdGJha2VfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmpvaW4oX19maWxlX18pKSwgJy4uJywgJy4uJywgJy4uJykKKyAgICBtYWtlX3NoYWxsb3dfcGF0aCA9IG9zLnBhdGguam9pbihiaXRiYWtlX2RpciwgJ2JpbicsICdnaXQtbWFrZS1zaGFsbG93JykKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgRmV0Y2hlclRlc3Quc2V0VXAoc2VsZikKKyAgICAgICAgc2VsZi5naXRkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZ2l0c2hhbGxvdycpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmdpdGRpcikKKyAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBpbml0JywgY3dkPXNlbGYuZ2l0ZGlyKQorCisgICAgZGVmIGFzc2VydFJlZnMoc2VsZiwgZXhwZWN0ZWRfcmVmcyk6CisgICAgICAgIGFjdHVhbF9yZWZzID0gc2VsZi5naXQoWydmb3ItZWFjaC1yZWYnLCAnLS1mb3JtYXQ9JShyZWZuYW1lKSddKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgZnVsbF9leHBlY3RlZCA9IHNlbGYuZ2l0KFsncmV2LXBhcnNlJywgJy0tc3ltYm9saWMtZnVsbC1uYW1lJ10gKyBleHBlY3RlZF9yZWZzKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZnVsbF9leHBlY3RlZCksIHNvcnRlZChhY3R1YWxfcmVmcykpCisKKyAgICBkZWYgYXNzZXJ0UmV2Q291bnQoc2VsZiwgZXhwZWN0ZWRfY291bnQsIGFyZ3M9Tm9uZSk6CisgICAgICAgIGlmIGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBbJ0hFQUQnXQorICAgICAgICByZXZzID0gc2VsZi5naXQoWydyZXYtbGlzdCddICsgYXJncykKKyAgICAgICAgYWN0dWFsX2NvdW50ID0gbGVuKHJldnMuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2NvdW50LCBhY3R1YWxfY291bnQsIG1zZz0nT2JqZWN0IGNvdW50IGAlZGAgaXMgbm90IHRoZSBleHBlY3RlZCBgJWRgJyAlIChhY3R1YWxfY291bnQsIGV4cGVjdGVkX2NvdW50KSkKKworICAgIGRlZiBnaXQoc2VsZiwgY21kKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjbWQsIHN0cik6CisgICAgICAgICAgICBjbWQgPSAnZ2l0ICcgKyBjbWQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNtZCA9IFsnZ2l0J10gKyBjbWQKKyAgICAgICAgcmV0dXJuIGJiLnByb2Nlc3MucnVuKGNtZCwgY3dkPXNlbGYuZ2l0ZGlyKVswXQorCisgICAgZGVmIG1ha2Vfc2hhbGxvdyhzZWxmLCBhcmdzPU5vbmUpOgorICAgICAgICBpZiBhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBhcmdzID0gWydIRUFEJ10KKyAgICAgICAgcmV0dXJuIGJiLnByb2Nlc3MucnVuKFtzZWxmLm1ha2Vfc2hhbGxvd19wYXRoXSArIGFyZ3MsIGN3ZD1zZWxmLmdpdGRpcikKKworICAgIGRlZiBhZGRfZW1wdHlfZmlsZShzZWxmLCBwYXRoLCBtc2c9Tm9uZSk6CisgICAgICAgIGlmIG1zZyBpcyBOb25lOgorICAgICAgICAgICAgbXNnID0gcGF0aAorICAgICAgICBvcGVuKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgcGF0aCksICd3JykuY2xvc2UoKQorICAgICAgICBzZWxmLmdpdChbJ2FkZCcsIHBhdGhdKQorICAgICAgICBzZWxmLmdpdChbJ2NvbW1pdCcsICctbScsIG1zZywgcGF0aF0pCisKKyAgICBkZWYgdGVzdF9tYWtlX3NoYWxsb3dfc2luZ2xlX2JyYW5jaF9ub19tZXJnZShzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIpCisgICAgICAgIHNlbGYubWFrZV9zaGFsbG93KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgZGVmIHRlc3RfbWFrZV9zaGFsbG93X3NpbmdsZV9icmFuY2hfb25lX21lcmdlKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCAtYiBhX2JyYW5jaCcpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2MnKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgbWFzdGVyJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZCcpCisgICAgICAgIHNlbGYuZ2l0KCdtZXJnZSAtLW5vLWZmIC0tbm8tZWRpdCBhX2JyYW5jaCcpCisgICAgICAgIHNlbGYuZ2l0KCdicmFuY2ggLWQgYV9icmFuY2gnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdlJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCg2KQorICAgICAgICBzZWxmLm1ha2Vfc2hhbGxvdyhbJ0hFQUR+MiddKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDUpCisKKyAgICBkZWYgdGVzdF9tYWtlX3NoYWxsb3dfYXRfbWVyZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgLWIgYV9icmFuY2gnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IG1hc3RlcicpCisgICAgICAgIHNlbGYuZ2l0KCdtZXJnZSAtLW5vLWZmIC0tbm8tZWRpdCBhX2JyYW5jaCcpCisgICAgICAgIHNlbGYuZ2l0KCdicmFuY2ggLWQgYV9icmFuY2gnKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDMpCisgICAgICAgIHNlbGYubWFrZV9zaGFsbG93KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgZGVmIHRlc3RfbWFrZV9zaGFsbG93X2Fubm90YXRlZF90YWcoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5naXQoJ3RhZyAtYSAtbSBhX3RhZyBhX3RhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMikKKyAgICAgICAgc2VsZi5tYWtlX3NoYWxsb3coWydhX3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9tYWtlX3NoYWxsb3dfbXVsdGlfcmVmKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCAtYiBhX2JyYW5jaCcpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2MnKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgbWFzdGVyJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZCcpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCAtYiBhX2JyYW5jaF8yJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYV90YWcnKQorICAgICAgICBzZWxmLmdpdCgndGFnIGFfdGFnJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IG1hc3RlcicpCisgICAgICAgIHNlbGYuZ2l0KCdicmFuY2ggLUQgYV9icmFuY2hfMicpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2UnKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDYsIFsnLS1hbGwnXSkKKyAgICAgICAgc2VsZi5tYWtlX3NoYWxsb3coKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDUsIFsnLS1hbGwnXSkKKworICAgIGRlZiB0ZXN0X21ha2Vfc2hhbGxvd19tdWx0aV9yZWZfdHJpbShzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCAtYiBhX2JyYW5jaCcpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2MnKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgbWFzdGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIsIFsnLS1hbGwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ2FfYnJhbmNoJ10pCisgICAgICAgIHNlbGYubWFrZV9zaGFsbG93KFsnLXInLCAnbWFzdGVyJywgJ0hFQUQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxLCBbJy0tYWxsJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVmcyhbJ21hc3RlciddKQorCisgICAgZGVmIHRlc3RfbWFrZV9zaGFsbG93X25vb3Aoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisgICAgICAgIHNlbGYubWFrZV9zaGFsbG93KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbWFrZV9zaGFsbG93X2JpdGJha2Uoc2VsZik6CisgICAgICAgIHNlbGYuZ2l0KCdyZW1vdGUgYWRkIG9yaWdpbiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL2JpdGJha2UnKQorICAgICAgICBzZWxmLmdpdCgnZmV0Y2ggLS10YWdzIG9yaWdpbicpCisgICAgICAgIG9yaWdfcmV2cyA9IGxlbihzZWxmLmdpdCgncmV2LWxpc3QgLS1hbGwnKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYubWFrZV9zaGFsbG93KFsncmVmcy90YWdzLzEuMTAuMCddKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KG9yaWdfcmV2cyAtIDE3NDYsIFsnLS1hbGwnXSkKKworY2xhc3MgR2l0U2hhbGxvd1Rlc3QoRmV0Y2hlclRlc3QpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgRmV0Y2hlclRlc3Quc2V0VXAoc2VsZikKKyAgICAgICAgc2VsZi5naXRkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZ2l0JykKKyAgICAgICAgc2VsZi5zcmNkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZ2l0c291cmNlJykKKworICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdpbml0JywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdXT1JLRElSJywgc2VsZi50ZW1wZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTJywgc2VsZi5naXRkaXIpCisgICAgICAgIHNlbGYuZC5kZWxWYXIoJ1BSRU1JUlJPUlMnKQorICAgICAgICBzZWxmLmQuZGVsVmFyKCdNSVJST1JTJykKKworICAgICAgICB1cmkgPSAnZ2l0Oi8vJXM7cHJvdG9jb2w9ZmlsZTtzdWJkaXI9JHtTfScgJSBzZWxmLnNyY2RpcgorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNfVVJJJywgdXJpKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNSRVYnLCAnJHtBVVRPUkVWfScpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0FVVE9SRVYnLCAnJHtAYmIuZmV0Y2gyLmdldF9hdXRvcmV2KGQpfScpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1cnLCAnMScpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUycsICcwJykKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0VORVJBVEVfU0hBTExPV19UQVJCQUxMUycsICcxJykKKworICAgIGRlZiBhc3NlcnRSZWZzKHNlbGYsIGV4cGVjdGVkX3JlZnMsIGN3ZD1Ob25lKToKKyAgICAgICAgaWYgY3dkIGlzIE5vbmU6CisgICAgICAgICAgICBjd2QgPSBzZWxmLmdpdGRpcgorICAgICAgICBhY3R1YWxfcmVmcyA9IHNlbGYuZ2l0KFsnZm9yLWVhY2gtcmVmJywgJy0tZm9ybWF0PSUocmVmbmFtZSknXSwgY3dkPWN3ZCkuc3BsaXRsaW5lcygpCisgICAgICAgIGZ1bGxfZXhwZWN0ZWQgPSBzZWxmLmdpdChbJ3Jldi1wYXJzZScsICctLXN5bWJvbGljLWZ1bGwtbmFtZSddICsgZXhwZWN0ZWRfcmVmcywgY3dkPWN3ZCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHNldChmdWxsX2V4cGVjdGVkKSksIHNvcnRlZChzZXQoYWN0dWFsX3JlZnMpKSkKKworICAgIGRlZiBhc3NlcnRSZXZDb3VudChzZWxmLCBleHBlY3RlZF9jb3VudCwgYXJncz1Ob25lLCBjd2Q9Tm9uZSk6CisgICAgICAgIGlmIGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGFyZ3MgPSBbJ0hFQUQnXQorICAgICAgICBpZiBjd2QgaXMgTm9uZToKKyAgICAgICAgICAgIGN3ZCA9IHNlbGYuZ2l0ZGlyCisgICAgICAgIHJldnMgPSBzZWxmLmdpdChbJ3Jldi1saXN0J10gKyBhcmdzLCBjd2Q9Y3dkKQorICAgICAgICBhY3R1YWxfY291bnQgPSBsZW4ocmV2cy5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfY291bnQsIGFjdHVhbF9jb3VudCwgbXNnPSdPYmplY3QgY291bnQgYCVkYCBpcyBub3QgdGhlIGV4cGVjdGVkIGAlZGAnICUgKGFjdHVhbF9jb3VudCwgZXhwZWN0ZWRfY291bnQpKQorCisgICAgZGVmIGdpdChzZWxmLCBjbWQsIGN3ZD1Ob25lKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjbWQsIHN0cik6CisgICAgICAgICAgICBjbWQgPSAnZ2l0ICcgKyBjbWQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNtZCA9IFsnZ2l0J10gKyBjbWQKKyAgICAgICAgaWYgY3dkIGlzIE5vbmU6CisgICAgICAgICAgICBjd2QgPSBzZWxmLmdpdGRpcgorICAgICAgICByZXR1cm4gYmIucHJvY2Vzcy5ydW4oY21kLCBjd2Q9Y3dkKVswXQorCisgICAgZGVmIGFkZF9lbXB0eV9maWxlKHNlbGYsIHBhdGgsIGN3ZD1Ob25lLCBtc2c9Tm9uZSk6CisgICAgICAgIGlmIG1zZyBpcyBOb25lOgorICAgICAgICAgICAgbXNnID0gcGF0aAorICAgICAgICBpZiBjd2QgaXMgTm9uZToKKyAgICAgICAgICAgIGN3ZCA9IHNlbGYuc3JjZGlyCisgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKGN3ZCwgcGF0aCksICd3JykuY2xvc2UoKQorICAgICAgICBzZWxmLmdpdChbJ2FkZCcsIHBhdGhdLCBjd2QpCisgICAgICAgIHNlbGYuZ2l0KFsnY29tbWl0JywgJy1tJywgbXNnLCBwYXRoXSwgY3dkKQorCisgICAgZGVmIGZldGNoKHNlbGYsIHVyaT1Ob25lKToKKyAgICAgICAgaWYgdXJpIGlzIE5vbmU6CisgICAgICAgICAgICB1cmlzID0gc2VsZi5kLmdldFZhcignU1JDX1VSSScsIFRydWUpLnNwbGl0KCkKKyAgICAgICAgICAgIHVyaSA9IHVyaXNbMF0KKyAgICAgICAgICAgIGQgPSBzZWxmLmQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGQgPSBzZWxmLmQuY3JlYXRlQ29weSgpCisgICAgICAgICAgICBkLnNldFZhcignU1JDX1VSSScsIHVyaSkKKyAgICAgICAgICAgIHVyaSA9IGQuZXhwYW5kKHVyaSkKKyAgICAgICAgICAgIHVyaXMgPSBbdXJpXQorCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2godXJpcywgZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFt1cmldCisgICAgICAgIHJldHVybiBmZXRjaGVyLCB1ZAorCisgICAgZGVmIGZldGNoX2FuZF91bnBhY2soc2VsZiwgdXJpPU5vbmUpOgorICAgICAgICBmZXRjaGVyLCB1ZCA9IHNlbGYuZmV0Y2godXJpKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJykpCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhzZWxmLmQuZ2V0VmFyKCdTJykpCisgICAgICAgIHJldHVybiBmZXRjaGVyLCB1ZAorCisgICAgZGVmIGZldGNoX3NoYWxsb3coc2VsZiwgdXJpPU5vbmUsIGRpc2FibGVkPUZhbHNlLCBrZWVwY2xvbmU9RmFsc2UpOgorICAgICAgICAiIiJGZXRjaCBhIHVyaSwgZ2VuZXJhdGluZyBhIHNoYWxsb3cgdGFyYmFsbCwgdGhlbiB1bnBhY2sgdXNpbmcgaXQiIiIKKyAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoX2FuZF91bnBhY2sodXJpKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHModWQuY2xvbmVkaXIpLCAnR2l0IGNsb25lIGluIERMRElSICglcykgZG9lcyBub3QgZXhpc3QgZm9yIHVyaSAlcycgJSAodWQuY2xvbmVkaXIsIHVyaSkKKworICAgICAgICAjIENvbmZpcm0gdGhhdCB0aGUgdW5wYWNrZWQgcmVwbyBpcyB1bnNoYWxsb3cKKyAgICAgICAgaWYgbm90IGRpc2FibGVkOgorICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCB1ZC5taXJyb3J0YXJiYWxsc1swXSkpCisKKyAgICAgICAgIyBmZXRjaCBhbmQgdW5wYWNrLCBmcm9tIHRoZSBzaGFsbG93IHRhcmJhbGwKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYuZ2l0ZGlyLCByZWN1cnNlPVRydWUpCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZSh1ZC5jbG9uZWRpciwgcmVjdXJzZT1UcnVlKQorCisgICAgICAgICMgY29uZmlybSB0aGF0IHRoZSB1bnBhY2tlZCByZXBvIGlzIHVzZWQgd2hlbiBubyBnaXQgY2xvbmUgb3IgZ2l0CisgICAgICAgICMgbWlycm9yIHRhcmJhbGwgaXMgYXZhaWxhYmxlCisgICAgICAgIGZldGNoZXIsIHVkID0gc2VsZi5mZXRjaF9hbmRfdW5wYWNrKHVyaSkKKyAgICAgICAgaWYgbm90IGRpc2FibGVkOgorICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJy5naXQnLCAnc2hhbGxvdycpKSwgJ1VucGFja2VkIGdpdCByZXBvc2l0b3J5IGF0ICVzIGlzIG5vdCBzaGFsbG93JyAlIHNlbGYuZ2l0ZGlyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJy5naXQnLCAnc2hhbGxvdycpKSwgJ1VucGFja2VkIGdpdCByZXBvc2l0b3J5IGF0ICVzIGlzIHNoYWxsb3cnICUgc2VsZi5naXRkaXIKKyAgICAgICAgcmV0dXJuIGZldGNoZXIsIHVkCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X2Rpc2FibGVkKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMiwgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XJywgJzAnKQorICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3coZGlzYWJsZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19ub2JyYW5jaChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDIsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICBzcmNyZXYgPSBzZWxmLmdpdCgncmV2LXBhcnNlIEhFQUQnLCBjd2Q9c2VsZi5zcmNkaXIpLnN0cmlwKCkKKyAgICAgICAgc2VsZi5kLnNldFZhcignU1JDUkVWJywgc3JjcmV2KQorICAgICAgICB1cmkgPSBzZWxmLmQuZ2V0VmFyKCdTUkNfVVJJJywgVHJ1ZSkuc3BsaXQoKVswXQorICAgICAgICB1cmkgPSAnJXM7bm9icmFuY2g9MTtiYXJlPTEnICUgdXJpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KHVyaSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgICAgICMgc2hhbGxvdyByZWZzIGFyZSB1c2VkIHRvIGVuc3VyZSB0aGUgc3JjcmV2IHN0aWNrcyBhcm91bmQgd2hlbiB3ZQorICAgICAgICAjIGhhdmUgbm8gb3RoZXIgYnJhbmNoZXMgcmVmZXJlbmNpbmcgaXQKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsncmVmcy9zaGFsbG93L2RlZmF1bHQnXSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfZGVmYXVsdF9kZXB0aF8xKHNlbGYpOgorICAgICAgICAjIENyZWF0ZSBpbml0aWFsIGdpdCByZXBvCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19kZXB0aF8wX2Rpc2FibGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMiwgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIJywgJzAnKQorICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3coZGlzYWJsZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19kZXB0aF9kZWZhdWx0X292ZXJyaWRlKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMiwgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIJywgJzInKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19ERVBUSF9kZWZhdWx0JywgJzEnKQorICAgICAgICBzZWxmLmZldGNoX3NoYWxsb3coKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X2RlcHRoX2RlZmF1bHRfb3ZlcnJpZGVfZGlzYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgzLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEgnLCAnMCcpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIX2RlZmF1bHQnLCAnMicpCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMikKKworICAgIGRlZiB0ZXN0X2N1cnJlbnRfc2hhbGxvd19vdXRfb2ZfZGF0ZV9jbG9uZShzZWxmKToKKyAgICAgICAgIyBDcmVhdGUgaW5pdGlhbCBnaXQgcmVwbworICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2MnKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDMsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICAjIENsb25lIGFuZCBnZW5lcmF0ZSBtaXJyb3IgdGFyYmFsbAorICAgICAgICBmZXRjaGVyLCB1ZCA9IHNlbGYuZmV0Y2goKQorCisgICAgICAgICMgRW5zdXJlIHdlIGhhdmUgYSBjdXJyZW50IG1pcnJvciB0YXJiYWxsLCBidXQgYW4gb3V0IG9mIGRhdGUgY2xvbmUKKyAgICAgICAgc2VsZi5naXQoJ3VwZGF0ZS1yZWYgcmVmcy9oZWFkcy9tYXN0ZXIgcmVmcy9oZWFkcy9tYXN0ZXJ+MScsIGN3ZD11ZC5jbG9uZWRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9dWQuY2xvbmVkaXIpCisKKyAgICAgICAgIyBGZXRjaCBhbmQgdW5wYWNrLCBmcm9tIHRoZSBjdXJyZW50IHRhcmJhbGwsIG5vdCB0aGUgb3V0IG9mIGRhdGUgY2xvbmUKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYuZ2l0ZGlyLCByZWN1cnNlPVRydWUpCisgICAgICAgIGZldGNoZXIsIHVkID0gc2VsZi5mZXRjaCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19zaW5nbGVfYnJhbmNoX25vX21lcmdlKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMiwgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2EnKSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2InKSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfbm9fZGFuZ2xpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorICAgICAgICBhc3NlcnQgbm90IHNlbGYuZ2l0KCdmc2NrIC0tZGFuZ2xpbmcnKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19zcmNyZXZfYnJhbmNoX3RydW5jYXRpb24oc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgYl9jb21taXQgPSBzZWxmLmdpdCgncmV2LXBhcnNlIEhFQUQnLCBjd2Q9c2VsZi5zcmNkaXIpLnJzdHJpcCgpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2MnKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDMsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNSRVYnLCBiX2NvbW1pdCkKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKworICAgICAgICAjIFRoZSAnYycgY29tbWl0IHdhcyByZW1vdmVkIGVudGlyZWx5LCBhbmQgJ2EnIHdhcyByZW1vdmVkIGZyb20gaGlzdG9yeQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEsIFsnLS1hbGwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdpdCgncmV2LXBhcnNlIEhFQUQnKS5zdHJpcCgpLCBiX2NvbW1pdCkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2EnKSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2InKSkKKyAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5naXRkaXIsICdjJykpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X3JlZl9wcnVuaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuZ2l0KCdicmFuY2ggYV9icmFuY2gnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVmcyhbJ21hc3RlcicsICdhX2JyYW5jaCddLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMiwgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ29yaWdpbi9tYXN0ZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19zdWJtb2R1bGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisKKyAgICAgICAgc21kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZ2l0c3VibW9kdWxlJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNtZGlyKQorICAgICAgICBzZWxmLmdpdCgnaW5pdCcsIGN3ZD1zbWRpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYXN1YicsIGN3ZD1zbWRpcikKKworICAgICAgICBzZWxmLmdpdCgnc3VibW9kdWxlIGluaXQnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgYWRkIGZpbGU6Ly8lcycgJSBzbWRpciwgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgnc3VibW9kdWxlIHVwZGF0ZScsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ2NvbW1pdCAtbSBzdWJtb2R1bGUgLWEnLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgdXJpID0gJ2dpdHNtOi8vJXM7cHJvdG9jb2w9ZmlsZTtzdWJkaXI9JHtTfScgJSBzZWxmLnNyY2RpcgorICAgICAgICBmZXRjaGVyLCB1ZCA9IHNlbGYuZmV0Y2hfc2hhbGxvdyh1cmkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorICAgICAgICBhc3NlcnQgJy4vLmdpdC9tb2R1bGVzLycgaW4gYmIucHJvY2Vzcy5ydW4oJ3RhciAtdHpmICVzJyAlIG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCB1ZC5taXJyb3J0YXJiYWxsc1swXSkpWzBdCisgICAgICAgIGFzc2VydCBvcy5saXN0ZGlyKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2dpdHN1Ym1vZHVsZScpKQorCisgICAgaWYgYW55KG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwLCAnZ2l0LWFubmV4JykpIGZvciBwIGluIG9zLmVudmlyb24uZ2V0KCdQQVRIJykuc3BsaXQoJzonKSk6CisgICAgICAgIGRlZiB0ZXN0X3NoYWxsb3dfYW5uZXgoc2VsZik6CisgICAgICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICAgICAgc2VsZi5naXQoJ2FubmV4IGluaXQnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgICAgICBvcGVuKG9zLnBhdGguam9pbihzZWxmLnNyY2RpciwgJ2MnKSwgJ3cnKS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmdpdCgnYW5uZXggYWRkIGMnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgICAgICBzZWxmLmdpdCgnY29tbWl0IC1tIGFubmV4LWMgLWEnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignY2htb2QgdSt3IC1SICVzJyAlIG9zLnBhdGguam9pbihzZWxmLnNyY2RpciwgJy5naXQnLCAnYW5uZXgnKSkKKworICAgICAgICAgICAgdXJpID0gJ2dpdGFubmV4Oi8vJXM7cHJvdG9jb2w9ZmlsZTtzdWJkaXI9JHtTfScgJSBzZWxmLnNyY2RpcgorICAgICAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoX3NoYWxsb3codXJpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisgICAgICAgICAgICBhc3NlcnQgJy4vLmdpdC9hbm5leC8nIGluIGJiLnByb2Nlc3MucnVuKCd0YXIgLXR6ZiAlcycgJSBvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgdWQubWlycm9ydGFyYmFsbHNbMF0pKVswXQorICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfbXVsdGlfb25lX3VyaShzZWxmKToKKyAgICAgICAgIyBDcmVhdGUgaW5pdGlhbCBnaXQgcmVwbworICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCAtYiBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYycpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2QnKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgbWFzdGVyJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgndGFnIHYwLjAgYV9icmFuY2gnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2UnKQorICAgICAgICBzZWxmLmdpdCgnbWVyZ2UgLS1uby1mZiAtLW5vLWVkaXQgYV9icmFuY2gnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2YnKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDcsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICB1cmkgPSBzZWxmLmQuZ2V0VmFyKCdTUkNfVVJJJywgVHJ1ZSkuc3BsaXQoKVswXQorICAgICAgICB1cmkgPSAnJXM7YnJhbmNoPW1hc3RlcixhX2JyYW5jaDtuYW1lPW1hc3RlcixhX2JyYW5jaCcgJSB1cmkKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19ERVBUSCcsICcwJykKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfUkVWUycsICd2MC4wJykKKyAgICAgICAgc2VsZi5kLnNldFZhcignU1JDUkVWX21hc3RlcicsICcke0FVVE9SRVZ9JykKKyAgICAgICAgc2VsZi5kLnNldFZhcignU1JDUkVWX2FfYnJhbmNoJywgJyR7QVVUT1JFVn0nKQorCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdyh1cmkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCg1KQorICAgICAgICBzZWxmLmFzc2VydFJlZnMoWydtYXN0ZXInLCAnb3JpZ2luL21hc3RlcicsICdvcmlnaW4vYV9icmFuY2gnXSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfbXVsdGlfb25lX3VyaV9kZXB0aHMoc2VsZik6CisgICAgICAgICMgQ3JlYXRlIGluaXRpYWwgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmdpdCgnY2hlY2tvdXQgLWIgYV9icmFuY2gnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2MnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdkJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IG1hc3RlcicsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZScpCisgICAgICAgIHNlbGYuZ2l0KCdtZXJnZSAtLW5vLWZmIC0tbm8tZWRpdCBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoNywgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHVyaSA9IHNlbGYuZC5nZXRWYXIoJ1NSQ19VUkknLCBUcnVlKS5zcGxpdCgpWzBdCisgICAgICAgIHVyaSA9ICclczticmFuY2g9bWFzdGVyLGFfYnJhbmNoO25hbWU9bWFzdGVyLGFfYnJhbmNoJyAlIHVyaQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIJywgJzAnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19ERVBUSF9tYXN0ZXInLCAnMycpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIX2FfYnJhbmNoJywgJzEnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNSRVZfbWFzdGVyJywgJyR7QVVUT1JFVn0nKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNSRVZfYV9icmFuY2gnLCAnJHtBVVRPUkVWfScpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KHVyaSkKKworICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDQsIFsnLS1hbGwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ29yaWdpbi9tYXN0ZXInLCAnb3JpZ2luL2FfYnJhbmNoJ10pCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X2Nsb25lX3ByZWZlcnJlZF9vdmVyX3NoYWxsb3coc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKworICAgICAgICAjIEZldGNoIG9uY2UgdG8gZ2VuZXJhdGUgdGhlIHNoYWxsb3cgdGFyYmFsbAorICAgICAgICBmZXRjaGVyLCB1ZCA9IHNlbGYuZmV0Y2goKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsIHVkLm1pcnJvcnRhcmJhbGxzWzBdKSkKKworICAgICAgICAjIEZldGNoIGFuZCB1bnBhY2sgd2l0aCBib3RoIHRoZSBjbG9uZWRpciBhbmQgc2hhbGxvdyB0YXJiYWxsIGF2YWlsYWJsZQorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5naXRkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoX2FuZF91bnBhY2soKQorCisgICAgICAgICMgVGhlIHVucGFja2VkIHRyZWUgc2hvdWxkICpub3QqIGJlIHNoYWxsb3cKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyKQorICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJy5naXQnLCAnc2hhbGxvdycpKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19taXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdlbmVyYXRlIHRoZSBzaGFsbG93IHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoKCkKKyAgICAgICAgbWlycm9ydGFyYmFsbCA9IHVkLm1pcnJvcnRhcmJhbGxzWzBdCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgbWlycm9ydGFyYmFsbCkpCisKKyAgICAgICAgIyBTZXQgdXAgdGhlIG1pcnJvcgorICAgICAgICBtaXJyb3JkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbWlycm9yJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG1pcnJvcmRpcikKKyAgICAgICAgc2VsZi5kLnNldFZhcignUFJFTUlSUk9SUycsICdnaXQ6Ly8uKi8uKiBmaWxlOi8vJXMvXG4nICUgbWlycm9yZGlyKQorCisgICAgICAgIG9zLnJlbmFtZShvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgbWlycm9ydGFyYmFsbCksCisgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4obWlycm9yZGlyLCBtaXJyb3J0YXJiYWxsKSkKKworICAgICAgICAjIEZldGNoIGZyb20gdGhlIG1pcnJvcgorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5kbGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5naXRkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5mZXRjaF9hbmRfdW5wYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19pbnZhbGlkX2RlcHRoKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEgnLCAnLTEyJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuRmV0Y2hFcnJvcik6CisgICAgICAgICAgICBzZWxmLmZldGNoKCkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfaW52YWxpZF9kZXB0aF9kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfREVQVEhfZGVmYXVsdCcsICctMTInKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5GZXRjaEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZmV0Y2goKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19leHRyYV9yZWZzKHNlbGYpOgorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYicpCisgICAgICAgIHNlbGYuZ2l0KCdicmFuY2ggYV9icmFuY2gnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVmcyhbJ21hc3RlcicsICdhX2JyYW5jaCddLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMiwgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0VYVFJBX1JFRlMnLCAncmVmcy9oZWFkcy9hX2JyYW5jaCcpCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ29yaWdpbi9tYXN0ZXInLCAnb3JpZ2luL2FfYnJhbmNoJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfZXh0cmFfcmVmc193aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorICAgICAgICBzZWxmLmdpdCgnYnJhbmNoIGFfYnJhbmNoJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgndGFnIHYxLjAnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVmcyhbJ21hc3RlcicsICdhX2JyYW5jaCcsICd2MS4wJ10sIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgyLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfRVhUUkFfUkVGUycsICdyZWZzL3RhZ3MvKicpCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ29yaWdpbi9tYXN0ZXInLCAndjEuMCddKQorICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X21pc3NpbmdfZXh0cmFfcmVmcyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0VYVFJBX1JFRlMnLCAncmVmcy9oZWFkcy9mb28nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5GZXRjaEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZmV0Y2goKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19taXNzaW5nX2V4dHJhX3JlZnNfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19FWFRSQV9SRUZTJywgJ3JlZnMvdGFncy8qJykKKyAgICAgICAgc2VsZi5mZXRjaCgpCisKKyAgICBkZWYgdGVzdF9zaGFsbG93X3JlbW92ZV9yZXZzKHNlbGYpOgorICAgICAgICAjIENyZWF0ZSBpbml0aWFsIGdpdCByZXBvCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKyAgICAgICAgc2VsZi5naXQoJ2NoZWNrb3V0IC1iIGFfYnJhbmNoJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdjJykKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZCcpCisgICAgICAgIHNlbGYuZ2l0KCdjaGVja291dCBtYXN0ZXInLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCd0YWcgdjAuMCBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZScpCisgICAgICAgIHNlbGYuZ2l0KCdtZXJnZSAtLW5vLWZmIC0tbm8tZWRpdCBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ2JyYW5jaCAtZCBhX2JyYW5jaCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoNywgY3dkPXNlbGYuc3JjZGlyKQorCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dJVF9TSEFMTE9XX0RFUFRIJywgJzAnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19SRVZTJywgJ3YwLjAnKQorCisgICAgICAgIHNlbGYuZmV0Y2hfc2hhbGxvdygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCg1KQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19pbnZhbGlkX3JldnMoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19ERVBUSCcsICcwJykKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1dfUkVWUycsICd2MC4wJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5GZXRjaEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZmV0Y2goKQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfYml0YmFrZShzZWxmKToKKyAgICAgICAgc2VsZi5naXQoJ3JlbW90ZSBhZGQgLS1taXJyb3I9ZmV0Y2ggb3JpZ2luIGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL2JpdGJha2UnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdjb25maWcgY29yZS5iYXJlIHRydWUnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdmZXRjaCcsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19ERVBUSCcsICcwJykKKyAgICAgICAgIyBOb3RlIHRoYXQgdGhlIDEuMTAuMCB0YWcgaXMgYW5ub3RhdGVkLCBzbyB0aGlzIGFsc28gdGVzdHMKKyAgICAgICAgIyByZWZlcmVuY2Ugb2YgYW4gYW5ub3RhdGVkIHZzIHVuYW5ub3RhdGVkIHRhZworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPV19SRVZTJywgJzEuMTAuMCcpCisKKyAgICAgICAgc2VsZi5mZXRjaF9zaGFsbG93KCkKKworICAgICAgICAjIENvbmZpcm0gdGhhdCB0aGUgaGlzdG9yeSBvZiAxLjEwLjAgd2FzIHJlbW92ZWQKKyAgICAgICAgb3JpZ19yZXZzID0gbGVuKHNlbGYuZ2l0KCdyZXYtbGlzdCBtYXN0ZXInLCBjd2Q9c2VsZi5zcmNkaXIpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgcmV2cyA9IGxlbihzZWxmLmdpdCgncmV2LWxpc3QgbWFzdGVyJykuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9yaWdfcmV2cywgcmV2cykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWZzKFsnbWFzdGVyJywgJ29yaWdpbi9tYXN0ZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudChvcmlnX3JldnMgLSAxNzU4KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3BhcnNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3BhcnNlLnB5CmluZGV4IGFiNmNhOTAuLjhmMTZiYTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9wYXJzZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvcGFyc2UucHkKQEAgLTgzLDcgKzgzLDI4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRWYXIoIkEiKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldFZhckZsYWcoIkEiLCJmbGFnIiksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRWYXIoIkIiKSwgIjIiKQotICAgICAgICAKKworICAgIGV4cG9ydHRlc3QgPSAiIiIKK0EgPSAiYSIKK2V4cG9ydCBCID0gImIiCitleHBvcnQgQworZXhwb3J0RCA9ICJkIgorIiIiCisKKyAgICBkZWYgdGVzdF9wYXJzZV9leHBvcnRzKHNlbGYpOgorICAgICAgICBmID0gc2VsZi5wYXJzZWhlbHBlcihzZWxmLmV4cG9ydHRlc3QpCisgICAgICAgIGQgPSBiYi5wYXJzZS5oYW5kbGUoZi5uYW1lLCBzZWxmLmQpWycnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ2V0VmFyKCJBIiksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZC5nZXRWYXJGbGFnKCJBIiwgImV4cG9ydCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ2V0VmFyKCJCIiksICJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdldFZhckZsYWcoIkIiLCAiZXhwb3J0IiksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGQuZ2V0VmFyKCJDIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRWYXJGbGFnKCJDIiwgImV4cG9ydCIpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLmdldFZhcigiRCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLmdldFZhckZsYWcoIkQiLCAiZXhwb3J0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5nZXRWYXIoImV4cG9ydEQiKSwgImQiKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLmdldFZhckZsYWcoImV4cG9ydEQiLCAiZXhwb3J0IikpCisKIAogICAgIG92ZXJyaWRldGVzdCA9ICIiIgogUlJFQ09NTUVORFNfJHtQTn0gPSAiYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKaW5kZXggOTI4MzMzYS4uZmE5NWY2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKQEAgLTIsNiArMiw3IEBACiAjCiAjIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEludGVsIENvcnBvcmF0aW9uCiAjIENvcHlyaWdodCAoQykgMjAxMSBNZW50b3IgR3JhcGhpY3MgQ29ycG9yYXRpb24KKyMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTIgUmljaGFyZCBQdXJkaWUKICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKQEAgLTU0LDYgKzU1LDcgQEAKICAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gcnVuX2NvbW1hbmQgZmFpbHMiIiIKIAogY2xhc3MgVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvcjoKKyAgICAiIiJDb25uZWN0b3Igb2JqZWN0IHVzZWQgdG8gZW5hYmxlIGFjY2VzcyB0byBkYXRhc3RvcmUgb2JqZWN0cyB2aWEgdGluZm9pbCIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbmZvaWwsIGRzaW5kZXgpOgogICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCkBAIC0xNzIsNiArMTc0LDE0IEBACiAgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRCYkZpbGVQcmlvcml0eScpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3BrZ19kcCc6CiAgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXREZWZhdWx0UHJlZmVyZW5jZScpIG9yIHt9CisgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ2ZuX3Byb3ZpZGVzJzoKKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZVByb3ZpZGVzJykgb3Ige30KKyAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGFja2FnZXMnOgorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUGFja2FnZXMnKSBvciB7fQorICAgICAgICAgICAgZWxpZiBuYW1lID09ICdwYWNrYWdlc19keW5hbWljJzoKKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZVBhY2thZ2VzRHluYW1pYycpIG9yIHt9CisgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3Jwcm92aWRlcnMnOgorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UlByb3ZpZGVycycpIG9yIHt9CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlcyBpbnN0YW5jZSBoYXMgbm8gYXR0cmlidXRlICclcyciICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lKSkKIApAQCAtMjA4LDE5ICsyMTgsMTE5IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHBuKQogCiAKK2NsYXNzIFRpbmZvaWxSZWNpcGVJbmZvOgorICAgICIiIgorICAgIFByb3ZpZGVzIGEgY29udmVuaWVudCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGZvciBhIHNpbmdsZSByZWNpcGUuCisgICAgU29tZSBhdHRyaWJ1dGVzIGFyZSBzZXQgb24gY29uc3RydWN0aW9uLCBvdGhlcnMgYXJlIHJlYWQgb24tZGVtYW5kICh3aGljaCBpbnRlcm5hbGx5CisgICAgbWF5IHJlc3VsdCBpbiBhIHJlbW90ZSBwcm9jZWR1cmUgY2FsbCB0byB0aGUgYml0YmFrZSBzZXJ2ZXIgdGhlIGZpcnN0IHRpbWUpLgorICAgIE5vdGUgdGhhdCBvbmx5IGluZm9ybWF0aW9uIHdoaWNoIGlzIGNhY2hlZCBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGlzIG9iamVjdCAtIGlmCisgICAgeW91IG5lZWQgb3RoZXIgdmFyaWFibGUgdmFsdWVzIHlvdSB3aWxsIG5lZWQgdG8gcGFyc2UgdGhlIHJlY2lwZSB1c2luZworICAgIFRpbmZvaWwucGFyc2VfcmVjaXBlKCkuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlY2lwZWNhY2hlLCBkLCBwbiwgZm4sIGZucyk6CisgICAgICAgIHNlbGYuX3JlY2lwZWNhY2hlID0gcmVjaXBlY2FjaGUKKyAgICAgICAgc2VsZi5fZCA9IGQKKyAgICAgICAgc2VsZi5wbiA9IHBuCisgICAgICAgIHNlbGYuZm4gPSBmbgorICAgICAgICBzZWxmLmZucyA9IGZucworICAgICAgICBzZWxmLmluaGVyaXRfZmlsZXMgPSByZWNpcGVjYWNoZS5pbmhlcml0c1tmbl0KKyAgICAgICAgc2VsZi5kZXBlbmRzID0gcmVjaXBlY2FjaGUuZGVwc1tmbl0KKyAgICAgICAgKHNlbGYucGUsIHNlbGYucHYsIHNlbGYucHIpID0gcmVjaXBlY2FjaGUucGtnX3BlcHZwcltmbl0KKyAgICAgICAgc2VsZi5fY2FjaGVkX3BhY2thZ2VzID0gTm9uZQorICAgICAgICBzZWxmLl9jYWNoZWRfcnByb3ZpZGVzID0gTm9uZQorICAgICAgICBzZWxmLl9jYWNoZWRfcGFja2FnZXNfZHluYW1pYyA9IE5vbmUKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSA9PSAnYWx0ZXJuYXRlcyc6CisgICAgICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZi5mbnMgaWYgeCAhPSBzZWxmLmZuXQorICAgICAgICBlbGlmIG5hbWUgPT0gJ3JkZXBlbmRzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNpcGVjYWNoZS5ydW5kZXBzW3NlbGYuZm5dCisgICAgICAgIGVsaWYgbmFtZSA9PSAncnJlY29tbWVuZHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2lwZWNhY2hlLnJ1bnJlY3Nbc2VsZi5mbl0KKyAgICAgICAgZWxpZiBuYW1lID09ICdwcm92aWRlcyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVjaXBlY2FjaGUuZm5fcHJvdmlkZXNbc2VsZi5mbl0KKyAgICAgICAgZWxpZiBuYW1lID09ICdwYWNrYWdlcyc6CisgICAgICAgICAgICBpZiBzZWxmLl9jYWNoZWRfcGFja2FnZXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWRfcGFja2FnZXMgPSBbXQorICAgICAgICAgICAgICAgIGZvciBwa2csIGZucyBpbiBzZWxmLl9yZWNpcGVjYWNoZS5wYWNrYWdlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZuIGluIGZuczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9wYWNrYWdlcy5hcHBlbmQocGtnKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZF9wYWNrYWdlcworICAgICAgICBlbGlmIG5hbWUgPT0gJ3BhY2thZ2VzX2R5bmFtaWMnOgorICAgICAgICAgICAgaWYgc2VsZi5fY2FjaGVkX3BhY2thZ2VzX2R5bmFtaWMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWRfcGFja2FnZXNfZHluYW1pYyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHBrZywgZm5zIGluIHNlbGYuX3JlY2lwZWNhY2hlLnBhY2thZ2VzX2R5bmFtaWMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5mbiBpbiBmbnM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWRfcGFja2FnZXNfZHluYW1pYy5hcHBlbmQocGtnKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZF9wYWNrYWdlc19keW5hbWljCisgICAgICAgIGVsaWYgbmFtZSA9PSAncnByb3ZpZGVzJzoKKyAgICAgICAgICAgIGlmIHNlbGYuX2NhY2hlZF9ycHJvdmlkZXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWRfcnByb3ZpZGVzID0gW10KKyAgICAgICAgICAgICAgICBmb3IgcGtnLCBmbnMgaW4gc2VsZi5fcmVjaXBlY2FjaGUucnByb3ZpZGVycy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZuIGluIGZuczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9ycHJvdmlkZXMuYXBwZW5kKHBrZykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWNoZWRfcnByb3ZpZGVzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXMgaW5zdGFuY2UgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSkpCisgICAgZGVmIGluaGVyaXRzKHNlbGYsIG9ubHlfcmVjaXBlPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCB0aGUgaW5oZXJpdGVkIGNsYXNzZXMgZm9yIGEgcmVjaXBlLiBSZXR1cm5zIHRoZSBjbGFzcyBuYW1lcyBvbmx5LgorICAgICAgICBQYXJhbWV0ZXJzOgorICAgICAgICAgICAgb25seV9yZWNpcGU6IFRydWUgdG8gcmV0dXJuIG9ubHkgdGhlIGNsYXNzZXMgaW5oZXJpdGVkIGJ5IHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICBpdHNlbGYsIEZhbHNlIHRvIHJldHVybiBhbGwgY2xhc3NlcyBpbmhlcml0ZWQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbnRleHQgZm9yIHRoZSByZWNpcGUgKHdoaWNoIGluY2x1ZGVzIGdsb2JhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdGVkIGNsYXNzZXMpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgb25seV9yZWNpcGU6CisgICAgICAgICAgICBnbG9iYWxfaW5oZXJpdCA9IFt4IGZvciB4IGluIChzZWxmLl9kLmdldFZhcignQkJJTkNMVURFRCcpIG9yICcnKS5zcGxpdCgpIGlmIHguZW5kc3dpdGgoJy5iYmNsYXNzJyldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBnbG9iYWxfaW5oZXJpdCA9IFtdCisgICAgICAgIGZvciBjbHNmaWxlIGluIHNlbGYuaW5oZXJpdF9maWxlczoKKyAgICAgICAgICAgIGlmIG9ubHlfcmVjaXBlIGFuZCBjbHNmaWxlIGluIGdsb2JhbF9pbmhlcml0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjbHNuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGNsc2ZpbGUpKVswXQorICAgICAgICAgICAgeWllbGQgY2xzbmFtZQorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzJyAlIHNlbGYucG4KKworCiBjbGFzcyBUaW5mb2lsOgorICAgICIiIgorICAgIFRpbmZvaWwgLSBhbiBBUEkgZm9yIHNjcmlwdHMgYW5kIHV0aWxpdGllcyB0byBxdWVyeQorICAgIEJpdEJha2UgaW50ZXJuYWxzIGFuZCBwZXJmb3JtIGJ1aWxkIG9wZXJhdGlvbnMuCisgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0cHV0PXN5cy5zdGRvdXQsIHRyYWNraW5nPUZhbHNlLCBzZXR1cF9sb2dnaW5nPVRydWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgbmV3IHRpbmZvaWwgb2JqZWN0LgorICAgICAgICBQYXJhbWV0ZXJzOgorICAgICAgICAgICAgb3V0cHV0OiBzcGVjaWZpZXMgd2hlcmUgY29uc29sZSBvdXRwdXQgc2hvdWxkIGJlIHNlbnQuIERlZmF1bHRzCisgICAgICAgICAgICAgICAgICAgIHRvIHN5cy5zdGRvdXQuCisgICAgICAgICAgICB0cmFja2luZzogVHJ1ZSB0byBlbmFibGUgdmFyaWFibGUgaGlzdG9yeSB0cmFja2luZywgRmFsc2UgdG8KKyAgICAgICAgICAgICAgICAgICAgZGlzYWJsZSBpdCAoZGVmYXVsdCkuIEVuYWJsaW5nIHRoaXMgaGFzIGEgbWlub3IKKyAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UgaW1wYWN0IHNvIHR5cGljYWxseSBpdCBpc24ndCBlbmFibGVkCisgICAgICAgICAgICAgICAgICAgIHVubGVzcyB5b3UgbmVlZCB0byBxdWVyeSB2YXJpYWJsZSBoaXN0b3J5LgorICAgICAgICAgICAgc2V0dXBfbG9nZ2luZzogVHJ1ZSB0byBzZXR1cCBhIGxvZ2dlciBzbyB0aGF0IHRoaW5ncyBsaWtlCisgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oKSB3aWxsIHdvcmsgaW1tZWRpYXRlbHkgYW5kIHRpbWVvdXQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgICAgYXJlIHZpc2libGU7IEZhbHNlIHRvIGxldCBCaXRCYWtlIGRvIHRoaXMgaXRzZWxmLgorICAgICAgICAiIiIKICAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignQml0QmFrZScpCiAgICAgICAgIHNlbGYuY29uZmlnX2RhdGEgPSBOb25lCiAgICAgICAgIHNlbGYuY29va2VyID0gTm9uZQogICAgICAgICBzZWxmLnRyYWNraW5nID0gdHJhY2tpbmcKICAgICAgICAgc2VsZi51aV9tb2R1bGUgPSBOb25lCiAgICAgICAgIHNlbGYuc2VydmVyX2Nvbm5lY3Rpb24gPSBOb25lCisgICAgICAgIHNlbGYucmVjaXBlc19wYXJzZWQgPSBGYWxzZQorICAgICAgICBzZWxmLnF1aWV0ID0gMAorICAgICAgICBzZWxmLm9sZGhhbmRsZXJzID0gc2VsZi5sb2dnZXIuaGFuZGxlcnNbOl0KICAgICAgICAgaWYgc2V0dXBfbG9nZ2luZzoKICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgKmNsaWVudC1zaWRlKiBsb2dnZXIsIG5vdGhpbmcgdG8gZG8gd2l0aAogICAgICAgICAgICAgIyBsb2dnaW5nIG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlcgogICAgICAgICAgICAgYmIubXNnLmxvZ2dlcl9jcmVhdGUoJ0JpdEJha2UnLCBvdXRwdXQpCisgICAgICAgICAgICBzZWxmLmxvY2FsaGFuZGxlcnMgPSBbXQorICAgICAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5sb2dnZXIuaGFuZGxlcnM6CisgICAgICAgICAgICAgICAgaWYgaGFuZGxlciBub3QgaW4gc2VsZi5vbGRoYW5kbGVyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbGhhbmRsZXJzLmFwcGVuZChoYW5kbGVyKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYKQEAgLTIyOCwxOSArMzM4LDYxIEBACiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgogICAgICAgICBzZWxmLnNodXRkb3duKCkKIAotICAgIGRlZiBwcmVwYXJlKHNlbGYsIGNvbmZpZ19vbmx5PUZhbHNlLCBjb25maWdfcGFyYW1zPU5vbmUsIHF1aWV0PTApOgorICAgIGRlZiBwcmVwYXJlKHNlbGYsIGNvbmZpZ19vbmx5PUZhbHNlLCBjb25maWdfcGFyYW1zPU5vbmUsIHF1aWV0PTAsIGV4dHJhX2ZlYXR1cmVzPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUHJlcGFyZXMgdGhlIHVuZGVybHlpbmcgQml0QmFrZSBzeXN0ZW0gdG8gYmUgdXNlZCB2aWEgdGluZm9pbC4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBjYWxsaW5nIGFueSBvZiB0aGUgb3RoZXIKKyAgICAgICAgZnVuY3Rpb25zIGluIHRoZSBBUEkuCisgICAgICAgIE5PVEU6IGlmIHlvdSBjYWxsIHByZXBhcmUoKSB5b3UgbXVzdCBhYnNvbHV0ZWx5IGNhbGwgc2h1dGRvd24oKQorICAgICAgICBiZWZvcmUgeW91ciBjb2RlIHRlcm1pbmF0ZXMuIFlvdSBjYW4gdXNlIGEgIndpdGgiIGJsb2NrIHRvIGVuc3VyZQorICAgICAgICB0aGlzIGhhcHBlbnMgZS5nLgorCisgICAgICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKCkKKyAgICAgICAgICAgICAgICAuLi4KKworICAgICAgICBQYXJhbWV0ZXJzOgorICAgICAgICAgICAgY29uZmlnX29ubHk6IFRydWUgdG8gcmVhZCBvbmx5IHRoZSBjb25maWd1cmF0aW9uIGFuZCBub3QgbG9hZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNhY2hlIC8gcGFyc2UgcmVjaXBlcy4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGp1c3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gcXVlcnkgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUgYXQgdGhlIGdsb2JhbAorICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgb3IgeW91IHdhbnQgdG8gZG8gYW55dGhpbmcgZWxzZSB0aGF0IGRvZXNuJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGludm9sdmUga25vd2luZyBhbnl0aGluZyBhYm91dCB0aGUgcmVjaXBlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gRmFsc2UgbG9hZHMgdGhlIGNhY2hlIC8gcGFyc2VzCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgY29uZmlnX3BhcmFtczogb3B0aW9uYWxseSBzcGVjaWZ5IHlvdXIgb3duIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuIElmIG5vdCBzcGVjaWZpZWQgYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIFRpbmZvaWxDb25maWdQYXJhbWV0ZXJzIHdpbGwgYmUgY3JlYXRlZCBpbnRlcm5hbGx5LgorICAgICAgICAgICAgcXVpZXQ6ICAgICAgcXVpZXQgbGV2ZWwgY29udHJvbGxpbmcgY29uc29sZSBvdXRwdXQgLSBlcXVpdmFsZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0byBiaXRiYWtlJ3MgLXEvLS1xdWlldCBvcHRpb24uIERlZmF1bHQgb2YgMCBnaXZlcworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgb3V0cHV0IGxldmVsIGFzIG5vcm1hbCBiaXRiYWtlIGV4ZWN1dGlvbi4KKyAgICAgICAgICAgIGV4dHJhX2ZlYXR1cmVzOiBleHRyYSBmZWF0dXJlcyB0byBiZSBhZGRlZCB0byB0aGUgZmVhdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHJlcXVlc3RlZCBmcm9tIHRoZSBzZXJ2ZXIuIFNlZQorICAgICAgICAgICAgICAgICAgICAgICAgQ29va2VyRmVhdHVyZXMuX2ZlYXR1cmVfbGlzdCBmb3IgcG9zc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5xdWlldCA9IHF1aWV0CisKICAgICAgICAgaWYgc2VsZi50cmFja2luZzoKICAgICAgICAgICAgIGV4dHJhZmVhdHVyZXMgPSBbYmIuY29va2VyLkNvb2tlckZlYXR1cmVzLkJBU0VEQVRBU1RPUkVfVFJBQ0tJTkddCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHRyYWZlYXR1cmVzID0gW10KIAorICAgICAgICBpZiBleHRyYV9mZWF0dXJlczoKKyAgICAgICAgICAgIGV4dHJhZmVhdHVyZXMgKz0gZXh0cmFfZmVhdHVyZXMKKwogICAgICAgICBpZiBub3QgY29uZmlnX3BhcmFtczoKICAgICAgICAgICAgIGNvbmZpZ19wYXJhbXMgPSBUaW5mb2lsQ29uZmlnUGFyYW1ldGVycyhjb25maWdfb25seT1jb25maWdfb25seSwgcXVpZXQ9cXVpZXQpCiAKICAgICAgICAgY29va2VyY29uZmlnID0gQ29va2VyQ29uZmlndXJhdGlvbigpCiAgICAgICAgIGNvb2tlcmNvbmZpZy5zZXRDb25maWdQYXJhbWV0ZXJzKGNvbmZpZ19wYXJhbXMpCiAKLSAgICAgICAgc2VydmVyLCBzZWxmLnNlcnZlcl9jb25uZWN0aW9uLCB1aV9tb2R1bGUgPSBzZXR1cF9iaXRiYWtlKGNvbmZpZ19wYXJhbXMsCisgICAgICAgIGlmIG5vdCBjb25maWdfb25seToKKyAgICAgICAgICAgICMgRGlzYWJsZSBsb2NhbCBsb2dnZXJzIGJlY2F1c2UgdGhlIFVJIG1vZHVsZSBpcyBnb2luZyB0byBzZXQgdXAgaXRzIG93bgorICAgICAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5sb2NhbGhhbmRsZXJzOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmhhbmRsZXJzLnJlbW92ZShoYW5kbGVyKQorICAgICAgICAgICAgc2VsZi5sb2NhbGhhbmRsZXJzID0gW10KKworICAgICAgICBzZWxmLnNlcnZlcl9jb25uZWN0aW9uLCB1aV9tb2R1bGUgPSBzZXR1cF9iaXRiYWtlKGNvbmZpZ19wYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2VyY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhZmVhdHVyZXMpCiAKQEAgLTI2Niw2ICs0MTgsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlQ29uZmlndXJhdGlvbicpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucnVuX2FjdGlvbnMoY29uZmlnX3BhcmFtcykKKyAgICAgICAgICAgICAgICBzZWxmLnJlY2lwZXNfcGFyc2VkID0gVHJ1ZQogCiAgICAgICAgICAgICBzZWxmLmNvbmZpZ19kYXRhID0gYmIuZGF0YS5pbml0KCkKICAgICAgICAgICAgIGNvbm5lY3RvciA9IFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3Ioc2VsZiwgTm9uZSkKQEAgLTI4NSw3ICs0MzgsMTMgQEAKIAogICAgIGRlZiBwYXJzZVJlY2lwZXMoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBGb3JjZSBhIHBhcnNlIG9mIGFsbCByZWNpcGVzLiBOb3JtYWxseSB5b3Ugc2hvdWxkIHNwZWNpZnkKKyAgICAgICAgTGVnYWN5IGZ1bmN0aW9uIC0gdXNlIHBhcnNlX3JlY2lwZXMoKSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5wYXJzZV9yZWNpcGVzKCkKKworICAgIGRlZiBwYXJzZV9yZWNpcGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCBpbmZvcm1hdGlvbiBvbiBhbGwgcmVjaXBlcy4gTm9ybWFsbHkgeW91IHNob3VsZCBzcGVjaWZ5CiAgICAgICAgIGNvbmZpZ19vbmx5PUZhbHNlIHdoZW4gY2FsbGluZyBwcmVwYXJlKCkgaW5zdGVhZCBvZiB1c2luZyB0aGlzCiAgICAgICAgIGZ1bmN0aW9uOyB0aGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIGZvciBzaXR1YXRpb25zIHdoZXJlIHlvdSBuZWVkCiAgICAgICAgIHRvIGluaXRpYWxpc2UgVGluZm9pbCBhbmQgdXNlIGl0IHdpdGggY29uZmlnX29ubHk9VHJ1ZSBmaXJzdCBhbmQKQEAgLTI5Myw2ICs0NTIsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgY29uZmlnX3BhcmFtcyA9IFRpbmZvaWxDb25maWdQYXJhbWV0ZXJzKGNvbmZpZ19vbmx5PUZhbHNlKQogICAgICAgICBzZWxmLnJ1bl9hY3Rpb25zKGNvbmZpZ19wYXJhbXMpCisgICAgICAgIHNlbGYucmVjaXBlc19wYXJzZWQgPSBUcnVlCiAKICAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgY29tbWFuZCwgKnBhcmFtcyk6CiAgICAgICAgICIiIgpAQCAtMzM5LDkgKzQ5OSwxNiBAQAogICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXJfY29ubmVjdGlvbi5ldmVudHMud2FpdEV2ZW50KHRpbWVvdXQpCiAKICAgICBkZWYgZ2V0X292ZXJsYXllZF9yZWNpcGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgRmluZCByZWNpcGVzIHdoaWNoIGFyZSBvdmVybGF5ZWQgKGkuZS4gd2hlcmUgcmVjaXBlcyBleGlzdCBpbiBtdWx0aXBsZSBsYXllcnMpCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi5ydW5fY29tbWFuZCgnZ2V0T3ZlcmxheWVkUmVjaXBlcycpKQogCiAgICAgZGVmIGdldF9za2lwcGVkX3JlY2lwZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBGaW5kIHJlY2lwZXMgd2hpY2ggd2VyZSBza2lwcGVkIChpLmUuIFNraXBSZWNpcGUgd2FzIHJhaXNlZAorICAgICAgICBkdXJpbmcgcGFyc2luZykuCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gT3JkZXJlZERpY3Qoc2VsZi5ydW5fY29tbWFuZCgnZ2V0U2tpcHBlZFJlY2lwZXMnKSkKIAogICAgIGRlZiBnZXRfYWxsX3Byb3ZpZGVycyhzZWxmKToKQEAgLTM3NCw4ICs1NDEsNzcgQEAKICAgICAgICAgcmV0dXJuIGJlc3RbM10KIAogICAgIGRlZiBnZXRfZmlsZV9hcHBlbmRzKHNlbGYsIGZuKToKKyAgICAgICAgIiIiCisgICAgICAgIEZpbmQgdGhlIGJiYXBwZW5kcyBmb3IgYSByZWNpcGUgZmlsZQorICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoJ2dldEZpbGVBcHBlbmRzJywgZm4pCiAKKyAgICBkZWYgYWxsX3JlY2lwZXMoc2VsZiwgbWM9JycsIHNvcnQ9VHJ1ZSk6CisgICAgICAgICIiIgorICAgICAgICBFbmFibGUgaXRlcmF0aW5nIG92ZXIgYWxsIHJlY2lwZXMgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgUmV0dXJucyBhbiBpdGVyYXRvciBvdmVyIFRpbmZvaWxSZWNpcGVJbmZvIG9iamVjdHMgY3JlYXRlZCBvbiBkZW1hbmQuCisgICAgICAgIFBhcmFtZXRlcnM6CisgICAgICAgICAgICBtYzogVGhlIG11bHRpY29uZmlnLCBkZWZhdWx0IG9mICcnIHVzZXMgdGhlIG1haW4gY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIHNvcnQ6IFRydWUgdG8gc29ydCByZWNpcGVzIGFscGhhYmV0aWNhbGx5IChkZWZhdWx0KSwgRmFsc2Ugb3RoZXJ3aXNlCisgICAgICAgICIiIgorICAgICAgICByZWNpcGVjYWNoZSA9IHNlbGYuY29va2VyLnJlY2lwZWNhY2hlc1ttY10KKyAgICAgICAgaWYgc29ydDoKKyAgICAgICAgICAgIHJlY2lwZXMgPSBzb3J0ZWQocmVjaXBlY2FjaGUucGtnX3BuLml0ZW1zKCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWNpcGVzID0gcmVjaXBlY2FjaGUucGtnX3BuLml0ZW1zKCkKKyAgICAgICAgZm9yIHBuLCBmbnMgaW4gcmVjaXBlczoKKyAgICAgICAgICAgIHByb3YgPSBzZWxmLmZpbmRfYmVzdF9wcm92aWRlcihwbikKKyAgICAgICAgICAgIHJlY2lwZSA9IFRpbmZvaWxSZWNpcGVJbmZvKHJlY2lwZWNhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuPXBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm49cHJvdlszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZucz1mbnMpCisgICAgICAgICAgICB5aWVsZCByZWNpcGUKKworICAgIGRlZiBhbGxfcmVjaXBlX2ZpbGVzKHNlbGYsIG1jPScnLCB2YXJpYW50cz1UcnVlLCBwcmVmZXJyZWRfb25seT1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBFbmFibGUgaXRlcmF0aW5nIG92ZXIgYWxsIHJlY2lwZSBmaWxlcyBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorICAgICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgZmlsZSBwYXRocy4KKyAgICAgICAgUGFyYW1ldGVyczoKKyAgICAgICAgICAgIG1jOiBUaGUgbXVsdGljb25maWcsIGRlZmF1bHQgb2YgJycgdXNlcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgdmFyaWFudHM6IFRydWUgdG8gaW5jbHVkZSB2YXJpYW50cyBvZiByZWNpcGVzIGNyZWF0ZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgIEJCQ0xBU1NFWFRFTkQgKGRlZmF1bHQpIG9yIEZhbHNlIHRvIGV4Y2x1ZGUgdGhlbQorICAgICAgICAgICAgcHJlZmVycmVkX29ubHk6IFRydWUgdG8gaW5jbHVkZSBvbmx5IHRoZSBwcmVmZXJyZWQgcmVjaXBlIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgZXhpc3QgcHJvdmlkaW5nIHRoZSBzYW1lIFBOLCBGYWxzZSB0byBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgYWxsIHJlY2lwZXMKKyAgICAgICAgIiIiCisgICAgICAgIHJlY2lwZWNhY2hlID0gc2VsZi5jb29rZXIucmVjaXBlY2FjaGVzW21jXQorICAgICAgICBpZiBwcmVmZXJyZWRfb25seToKKyAgICAgICAgICAgIGZpbGVzID0gW10KKyAgICAgICAgICAgIGZvciBwbiBpbiByZWNpcGVjYWNoZS5wa2dfcG4ua2V5cygpOgorICAgICAgICAgICAgICAgIHByb3YgPSBzZWxmLmZpbmRfYmVzdF9wcm92aWRlcihwbikKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQocHJvdlszXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVzID0gcmVjaXBlY2FjaGUucGtnX2ZuLmtleXMoKQorICAgICAgICBmb3IgZm4gaW4gc29ydGVkKGZpbGVzKToKKyAgICAgICAgICAgIGlmIG5vdCB2YXJpYW50cyBhbmQgZm4uc3RhcnRzd2l0aCgndmlydHVhbDonKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgeWllbGQgZm4KKworCisgICAgZGVmIGdldF9yZWNpcGVfaW5mbyhzZWxmLCBwbiwgbWM9JycpOgorICAgICAgICAiIiIKKyAgICAgICAgR2V0IGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgcmVjaXBlIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYnkgbmFtZSAoUE4pLgorICAgICAgICBSZXR1cm5zIGEgVGluZm9pbFJlY2lwZUluZm8gb2JqZWN0IGNyZWF0ZWQgb24gZGVtYW5kLgorICAgICAgICBQYXJhbWV0ZXJzOgorICAgICAgICAgICAgbWM6IFRoZSBtdWx0aWNvbmZpZywgZGVmYXVsdCBvZiAnJyB1c2VzIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICByZWNpcGVjYWNoZSA9IHNlbGYuY29va2VyLnJlY2lwZWNhY2hlc1ttY10KKyAgICAgICAgcHJvdiA9IHNlbGYuZmluZF9iZXN0X3Byb3ZpZGVyKHBuKQorICAgICAgICBmbiA9IHByb3ZbM10KKyAgICAgICAgYWN0dWFsX3BuID0gcmVjaXBlY2FjaGUucGtnX2ZuW2ZuXQorICAgICAgICByZWNpcGUgPSBUaW5mb2lsUmVjaXBlSW5mbyhyZWNpcGVjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbj1hY3R1YWxfcG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbj1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZucz1yZWNpcGVjYWNoZS5wa2dfcG5bYWN0dWFsX3BuXSkKKyAgICAgICAgcmV0dXJuIHJlY2lwZQorCiAgICAgZGVmIHBhcnNlX3JlY2lwZShzZWxmLCBwbik6CiAgICAgICAgICIiIgogICAgICAgICBQYXJzZSB0aGUgc3BlY2lmaWVkIHJlY2lwZSBhbmQgcmV0dXJuIGEgZGF0YXN0b3JlIG9iamVjdApAQCAtMzk5LDI2ICs2MzUsMTk5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBjb25maWdfZGF0YSB0aGVuIHlvdSBjYW5ub3QgdXNlIGEgdmlydHVhbAogICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb24gZm9yIGZuLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgYXBwZW5kcyBhbmQgYXBwZW5kbGlzdCA9PSBbXToKLSAgICAgICAgICAgIGFwcGVuZHMgPSBGYWxzZQotICAgICAgICBpZiBjb25maWdfZGF0YToKLSAgICAgICAgICAgIGRjdHIgPSBiYi5yZW1vdGVkYXRhLlJlbW90ZURhdGFzdG9yZXMudHJhbnNtaXRfZGF0YXN0b3JlKGNvbmZpZ19kYXRhKQotICAgICAgICAgICAgZHNjb24gPSBzZWxmLnJ1bl9jb21tYW5kKCdwYXJzZVJlY2lwZUZpbGUnLCBmbiwgYXBwZW5kcywgYXBwZW5kbGlzdCwgZGN0cikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRzY29uID0gc2VsZi5ydW5fY29tbWFuZCgncGFyc2VSZWNpcGVGaWxlJywgZm4sIGFwcGVuZHMsIGFwcGVuZGxpc3QpCi0gICAgICAgIGlmIGRzY29uOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY29udmVydF90eXBlKGRzY29uLCAnRGF0YVN0b3JlQ29ubmVjdGlvbkhhbmRsZScpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBzZWxmLnRyYWNraW5nOgorICAgICAgICAgICAgIyBFbmFibGUgaGlzdG9yeSB0cmFja2luZyBqdXN0IGZvciB0aGUgcGFyc2Ugb3BlcmF0aW9uCisgICAgICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCdlbmFibGVEYXRhVHJhY2tpbmcnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBhcHBlbmRzIGFuZCBhcHBlbmRsaXN0ID09IFtdOgorICAgICAgICAgICAgICAgIGFwcGVuZHMgPSBGYWxzZQorICAgICAgICAgICAgaWYgY29uZmlnX2RhdGE6CisgICAgICAgICAgICAgICAgZGN0ciA9IGJiLnJlbW90ZWRhdGEuUmVtb3RlRGF0YXN0b3Jlcy50cmFuc21pdF9kYXRhc3RvcmUoY29uZmlnX2RhdGEpCisgICAgICAgICAgICAgICAgZHNjb24gPSBzZWxmLnJ1bl9jb21tYW5kKCdwYXJzZVJlY2lwZUZpbGUnLCBmbiwgYXBwZW5kcywgYXBwZW5kbGlzdCwgZGN0cikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZHNjb24gPSBzZWxmLnJ1bl9jb21tYW5kKCdwYXJzZVJlY2lwZUZpbGUnLCBmbiwgYXBwZW5kcywgYXBwZW5kbGlzdCkKKyAgICAgICAgICAgIGlmIGRzY29uOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNvbnZlcnRfdHlwZShkc2NvbiwgJ0RhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc2VsZi50cmFja2luZzoKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCdkaXNhYmxlRGF0YVRyYWNraW5nJykKIAotICAgIGRlZiBidWlsZF9maWxlKHNlbGYsIGJ1aWxkZmlsZSwgdGFzayk6CisgICAgZGVmIGJ1aWxkX2ZpbGUoc2VsZiwgYnVpbGRmaWxlLCB0YXNrLCBpbnRlcm5hbD1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIFJ1bnMgdGhlIHNwZWNpZmllZCB0YXNrIGZvciBqdXN0IGEgc2luZ2xlIHJlY2lwZSAoaS5lLiBubyBkZXBlbmRlbmNpZXMpLgotICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYml0YmFrZSAtYiwgZXhjZXB0IG5vIHdhcm5pbmcgd2lsbCBiZSBwcmludGVkLgorICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYml0YmFrZSAtYiwgZXhjZXB0IHdpdGggdGhlIGRlZmF1bHQgaW50ZXJuYWw9VHJ1ZQorICAgICAgICBubyB3YXJuaW5nIGFib3V0IGRlcGVuZGVuY2llcyB3aWxsIGJlIHByb2R1Y2VkLCBub3JtYWwgaW5mbyBtZXNzYWdlcworICAgICAgICBmcm9tIHRoZSBydW5xdWV1ZSB3aWxsIGJlIHNpbGVuY2VkIGFuZCBCdWlsZEluaXQsIEJ1aWxkU3RhcnRlZCBhbmQKKyAgICAgICAgQnVpbGRDb21wbGV0ZWQgZXZlbnRzIHdpbGwgbm90IGJlIGZpcmVkLgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoJ2J1aWxkRmlsZScsIGJ1aWxkZmlsZSwgdGFzaywgVHJ1ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoJ2J1aWxkRmlsZScsIGJ1aWxkZmlsZSwgdGFzaywgaW50ZXJuYWwpCisKKyAgICBkZWYgYnVpbGRfdGFyZ2V0cyhzZWxmLCB0YXJnZXRzLCB0YXNrPU5vbmUsIGhhbmRsZV9ldmVudHM9VHJ1ZSwgZXh0cmFfZXZlbnRzPU5vbmUsIGV2ZW50X2NhbGxiYWNrPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgQnVpbGRzIHRoZSBzcGVjaWZpZWQgdGFyZ2V0cy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgbm9ybWFsIGludm9jYXRpb24KKyAgICAgICAgb2YgYml0YmFrZS4gSGFzIGJ1aWx0LWluIGV2ZW50IGhhbmRsaW5nIHdoaWNoIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQKKyAgICAgICAgY2FuIGJlIGV4dGVuZGVkIGlmIG5lZWRlZC4KKyAgICAgICAgUGFyYW1ldGVyczoKKyAgICAgICAgICAgIHRhcmdldHM6CisgICAgICAgICAgICAgICAgT25lIG9yIG1vcmUgdGFyZ2V0cyB0byBidWlsZC4gQ2FuIGJlIGEgbGlzdCBvciBhCisgICAgICAgICAgICAgICAgc3BhY2Utc2VwYXJhdGVkIHN0cmluZy4KKyAgICAgICAgICAgIHRhc2s6CisgICAgICAgICAgICAgICAgVGhlIHRhc2sgdG8gcnVuOyBpZiBOb25lIHRoZW4gdGhlIHZhbHVlIG9mIEJCX0RFRkFVTFRfVEFTSworICAgICAgICAgICAgICAgIHdpbGwgYmUgdXNlZC4gRGVmYXVsdCBOb25lLgorICAgICAgICAgICAgaGFuZGxlX2V2ZW50czoKKyAgICAgICAgICAgICAgICBUcnVlIHRvIGhhbmRsZSBldmVudHMgaW4gYSBzaW1pbGFyIHdheSB0byBub3JtYWwgYml0YmFrZQorICAgICAgICAgICAgICAgIGludm9jYXRpb24gd2l0aCBrbm90dHk7IEZhbHNlIHRvIHJldHVybiBpbW1lZGlhdGVseSAob24gdGhlCisgICAgICAgICAgICAgICAgYXNzdW1wdGlvbiB0aGF0IHRoZSBjYWxsZXIgd2lsbCBoYW5kbGUgdGhlIGV2ZW50cyBpbnN0ZWFkKS4KKyAgICAgICAgICAgICAgICBEZWZhdWx0IFRydWUuCisgICAgICAgICAgICBleHRyYV9ldmVudHM6CisgICAgICAgICAgICAgICAgQW4gb3B0aW9uYWwgbGlzdCBvZiBldmVudHMgdG8gYWRkIHRvIHRoZSBldmVudCBtYXNrIChpZgorICAgICAgICAgICAgICAgIGhhbmRsZV9ldmVudHM9VHJ1ZSkuIElmIHlvdSBhZGQgZXZlbnRzIGhlcmUgeW91IGFsc28gbmVlZAorICAgICAgICAgICAgICAgIHRvIHNwZWNpZnkgYSBjYWxsYmFjayBmdW5jdGlvbiBpbiBldmVudF9jYWxsYmFjayB0aGF0IHdpbGwKKyAgICAgICAgICAgICAgICBoYW5kbGUgdGhlIGFkZGl0aW9uYWwgZXZlbnRzLiBEZWZhdWx0IE5vbmUuCisgICAgICAgICAgICBldmVudF9jYWxsYmFjazoKKyAgICAgICAgICAgICAgICBBbiBvcHRpb25hbCBmdW5jdGlvbiB0YWtpbmcgYSBzaW5nbGUgcGFyYW1ldGVyIHdoaWNoCisgICAgICAgICAgICAgICAgd2lsbCBiZSBjYWxsZWQgZmlyc3QgdXBvbiByZWNlaXZpbmcgYW55IGV2ZW50IChpZgorICAgICAgICAgICAgICAgIGhhbmRsZV9ldmVudHM9VHJ1ZSkgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiBvdmVycmlkZSBvcgorICAgICAgICAgICAgICAgIGV4dGVuZCB0aGUgZXZlbnQgaGFuZGxpbmcuIERlZmF1bHQgTm9uZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzaW5zdGFuY2UodGFyZ2V0cywgc3RyKToKKyAgICAgICAgICAgIHRhcmdldHMgPSB0YXJnZXRzLnNwbGl0KCkKKyAgICAgICAgaWYgbm90IHRhc2s6CisgICAgICAgICAgICB0YXNrID0gc2VsZi5jb25maWdfZGF0YS5nZXRWYXIoJ0JCX0RFRkFVTFRfVEFTSycpCisKKyAgICAgICAgaWYgaGFuZGxlX2V2ZW50czoKKyAgICAgICAgICAgICMgQSByZWFzb25hYmxlIHNldCBvZiBkZWZhdWx0IGV2ZW50cyBtYXRjaGluZyB1cCB3aXRoIHRob3NlIHdlIGhhbmRsZSBiZWxvdworICAgICAgICAgICAgZXZlbnRtYXNrID0gWworICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmV2ZW50LkJ1aWxkU3RhcnRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuZXZlbnQuQnVpbGRDb21wbGV0ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuTG9nUmVjb3JkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5ldmVudC5Ob1Byb3ZpZGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza1N0YXJ0ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmJ1aWxkLlRhc2tGYWlsZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmJ1aWxkLlRhc2tTdWNjZWVkZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmJ1aWxkLlRhc2tQcm9ncmVzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIucnVucXVldWUucnVuUXVldWVUYXNrU3RhcnRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIucnVucXVldWUuc2NlbmVRdWV1ZVRhc2tTdGFydGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdiYi5ldmVudC5Qcm9jZXNzRmluaXNoZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgaWYgZXh0cmFfZXZlbnRzOgorICAgICAgICAgICAgICAgIGV2ZW50bWFzay5leHRlbmQoZXh0cmFfZXZlbnRzKQorICAgICAgICAgICAgcmV0ID0gc2VsZi5zZXRfZXZlbnRfbWFzayhldmVudG1hc2spCisKKyAgICAgICAgaW5jbHVkZWxvZ3MgPSBzZWxmLmNvbmZpZ19kYXRhLmdldFZhcignQkJJTkNMVURFTE9HUycpCisgICAgICAgIGxvZ2xpbmVzID0gc2VsZi5jb25maWdfZGF0YS5nZXRWYXIoJ0JCSU5DTFVERUxPR1NfTElORVMnKQorCisgICAgICAgIHJldCA9IHNlbGYucnVuX2NvbW1hbmQoJ2J1aWxkVGFyZ2V0cycsIHRhcmdldHMsIHRhc2spCisgICAgICAgIGlmIGhhbmRsZV9ldmVudHM6CisgICAgICAgICAgICByZXN1bHQgPSBGYWxzZQorICAgICAgICAgICAgIyBCb3Jyb3dlZCBmcm9tIGtub3R0eSwgaW5zdGVhZCBzb21ld2hhdCBoYWNraWx5IHdlIHVzZSB0aGUgaGVscGVyCisgICAgICAgICAgICAjIGFzIHRoZSBvYmplY3QgdG8gc3RvcmUgInNodXRkb3duIiBvbgorICAgICAgICAgICAgaGVscGVyID0gYmIudWkudWloZWxwZXIuQkJVSUhlbHBlcigpCisgICAgICAgICAgICAjIFdlIHNldCB1cCBsb2dnaW5nIG9wdGlvbmFsbHkgaW4gdGhlIGNvbnN0cnVjdG9yIHNvIG5vdyB3ZSBuZWVkIHRvCisgICAgICAgICAgICAjIGdyYWIgdGhlIGhhbmRsZXJzIHRvIHBhc3MgdG8gVGVybWluYWxGaWx0ZXIKKyAgICAgICAgICAgIGNvbnNvbGUgPSBOb25lCisgICAgICAgICAgICBlcnJjb25zb2xlID0gTm9uZQorICAgICAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5sb2dnZXIuaGFuZGxlcnM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgorICAgICAgICAgICAgICAgICAgICBpZiBoYW5kbGVyLnN0cmVhbSA9PSBzeXMuc3Rkb3V0OgorICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZSA9IGhhbmRsZXIKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBoYW5kbGVyLnN0cmVhbSA9PSBzeXMuc3RkZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29uc29sZSA9IGhhbmRsZXIKKyAgICAgICAgICAgIGZvcm1hdF9zdHIgPSAiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiCisgICAgICAgICAgICBmb3JtYXQgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIoZm9ybWF0X3N0cikKKyAgICAgICAgICAgIGhlbHBlci5zaHV0ZG93biA9IDAKKyAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MgPSBOb25lCisgICAgICAgICAgICB0ZXJtZmlsdGVyID0gYmIudWkua25vdHR5LlRlcm1pbmFsRmlsdGVyKGhlbHBlciwgaGVscGVyLCBjb25zb2xlLCBlcnJjb25zb2xlLCBmb3JtYXQsIHF1aWV0PXNlbGYucXVpZXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBzZWxmLndhaXRfZXZlbnQoMC4yNSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50X2NhbGxiYWNrIGFuZCBldmVudF9jYWxsYmFjayhldmVudCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGVscGVyLmV2ZW50SGFuZGxlcihldmVudCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkxvZ2ZpbGUgZm9yIGZhaWxlZCBzZXRzY2VuZSB0YXNrIGlzICVzIiAlIGV2ZW50LmxvZ2ZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza0ZhaWxlZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi51aS5rbm90dHkucHJpbnRfZXZlbnRfbG9nKGV2ZW50LCBpbmNsdWRlbG9ncywgbG9nbGluZXMsIHRlcm1maWx0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnF1aWV0ID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MgPSBiYi51aS5rbm90dHkubmV3X3Byb2dyZXNzKGV2ZW50LnByb2Nlc3NuYW1lLCBldmVudC50b3RhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcy5zdGFydChGYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnF1aWV0ID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnNlcHJvZ3Jlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXByb2dyZXNzLnVwZGF0ZShldmVudC5wcm9ncmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIkdvdCBQcm9jZXNzUHJvZ3Jlc3MgZXZlbnQgZm9yIHNvbWV0aW5nIHRoYXQgbmV2ZXIgc3RhcnRlZD8iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucXVpZXQgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyc2Vwcm9ncmVzczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MuZmluaXNoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBsb2dnaW5nLkxvZ1JlY29yZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgPT0gMCBvciBldmVudC5sZXZlbG5vID4gbG9nZ2luZy5JTkZPOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaGFuZGxlKGV2ZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk5vUHJvdmlkZXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGhlbHBlci5zaHV0ZG93biA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIudXBkYXRlRm9vdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgICAgICAgICAgICAgdGVybWZpbHRlci5jbGVhckZvb3RlcigpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBoZWxwZXIuc2h1dGRvd24gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXG5TZWNvbmQgS2V5Ym9hcmQgSW50ZXJydXB0LCBzdG9wcGluZy4uLlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzZWxmLnJ1bl9jb21tYW5kKCJzdGF0ZUZvcmNlU2h1dGRvd24iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJldCBhbmQgcmV0WzJdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGNsZWFubHkgc3RvcDogJXMiICUgcmV0WzJdKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBoZWxwZXIuc2h1dGRvd24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBJbnRlcnJ1cHQsIGNsb3NpbmcgZG93bi4uLlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzZWxmLnJ1bl9jb21tYW5kKCJzdGF0ZVNodXRkb3duIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXQgYW5kIHJldFsyXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBjbGVhbmx5IHNodXRkb3duOiAlcyIgJSByZXRbMl0pCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXIuc2h1dGRvd24gPSBoZWxwZXIuc2h1dGRvd24gKyAxCisgICAgICAgICAgICAgICAgdGVybWZpbHRlci5jbGVhckZvb3RlcigpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIuZmluaXNoKCkKKyAgICAgICAgICAgIGlmIGhlbHBlci5mYWlsZWRfdGFza3M6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByZXQKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFNodXQgZG93biB0aW5mb2lsLiBEaXNjb25uZWN0cyBmcm9tIHRoZSBzZXJ2ZXIgYW5kIGdyYWNlZnVsbHkKKyAgICAgICAgcmVsZWFzZXMgYW55IGFzc29jaWF0ZWQgcmVzb3VyY2VzLiBZb3UgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gaWYKKyAgICAgICAgcHJlcGFyZSgpIGhhcyBiZWVuIGNhbGxlZCwgb3IgdXNlIGEgd2l0aC4uLiBibG9jayB3aGVuIHlvdSBjcmVhdGUKKyAgICAgICAgdGhlIHRpbmZvaWwgb2JqZWN0IHdoaWNoIHdpbGwgZW5zdXJlIHRoYXQgaXQgZ2V0cyBjYWxsZWQuCisgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLnNlcnZlcl9jb25uZWN0aW9uOgogICAgICAgICAgICAgc2VsZi5ydW5fY29tbWFuZCgnY2xpZW50Q29tcGxldGUnKQogICAgICAgICAgICAgX3NlcnZlcl9jb25uZWN0aW9ucy5yZW1vdmUoc2VsZi5zZXJ2ZXJfY29ubmVjdGlvbikKQEAgLTQyNiw2ICs4MzUsMTIgQEAKICAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nvbm5lY3Rpb24udGVybWluYXRlKCkKICAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nvbm5lY3Rpb24gPSBOb25lCiAKKyAgICAgICAgIyBSZXN0b3JlIGxvZ2dpbmcgaGFuZGxlcnMgdG8gaG93IGl0IGxvb2tlZCB3aGVuIHdlIHN0YXJ0ZWQKKyAgICAgICAgaWYgc2VsZi5vbGRoYW5kbGVyczoKKyAgICAgICAgICAgIGZvciBoYW5kbGVyIGluIHNlbGYubG9nZ2VyLmhhbmRsZXJzOgorICAgICAgICAgICAgICAgIGlmIGhhbmRsZXIgbm90IGluIHNlbGYub2xkaGFuZGxlcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmhhbmRsZXJzLnJlbW92ZShoYW5kbGVyKQorCiAgICAgZGVmIF9yZWNvbnZlcnRfdHlwZShzZWxmLCBvYmosIG9yaWd0eXBlbmFtZSk6CiAgICAgICAgICIiIgogICAgICAgICBDb252ZXJ0IGFuIG9iamVjdCBiYWNrIHRvIHRoZSByaWdodCB0eXBlLCBpbiB0aGUgY2FzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkKaW5kZXggZTQ1MWM2My4uNTI0YTViMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvYnVpbGRpbmZvaGVscGVyLnB5CkBAIC03MTksNyArNzE5LDExIEBACiAKICAgICBkZWYgc2F2ZV9idWlsZF9wYWNrYWdlX2luZm9ybWF0aW9uKHNlbGYsIGJ1aWxkX29iaiwgcGFja2FnZV9pbmZvLCByZWNpcGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRfcGFja2FnZSk6Ci0gICAgICAgIyBhc3NlcnQgaXNpbnN0YW5jZShidWlsZF9vYmosIEJ1aWxkKQorICAgICAgICAjIGFzc2VydCBpc2luc3RhbmNlKGJ1aWxkX29iaiwgQnVpbGQpCisKKyAgICAgICAgaWYgbm90ICdQTicgaW4gcGFja2FnZV9pbmZvLmtleXMoKToKKyAgICAgICAgICAgICMgbm8gcGFja2FnZSBkYXRhIHRvIHNhdmUgKGUuZy4gJ09QS0dOJz0ibGliNjQtKiJ8ImxpYjMyLSoiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICAjIGNyZWF0ZSBhbmQgc2F2ZSB0aGUgb2JqZWN0CiAgICAgICAgIHBuYW1lID0gcGFja2FnZV9pbmZvWydQS0cnXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS9rbm90dHkucHkKaW5kZXggODJhYTdjNC4uZmE4OGU2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkva25vdHR5LnB5CkBAIC0yMDcsOCArMjA3LDEwIEBACiAgICAgICAgICAgICBzZWxmLmludGVyYWN0aXZlID0gRmFsc2UKICAgICAgICAgICAgIGJiLm5vdGUoIlVuYWJsZSB0byB1c2UgaW50ZXJhY3RpdmUgbW9kZSBmb3IgdGhpcyB0ZXJtaW5hbCwgdXNpbmcgZmFsbGJhY2siKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGNvbnNvbGUuYWRkRmlsdGVyKEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihzZWxmLCBmb3JtYXQpKQotICAgICAgICBlcnJjb25zb2xlLmFkZEZpbHRlcihJbnRlcmFjdENvbnNvbGVMb2dGaWx0ZXIoc2VsZiwgZm9ybWF0KSkKKyAgICAgICAgaWYgY29uc29sZToKKyAgICAgICAgICAgIGNvbnNvbGUuYWRkRmlsdGVyKEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihzZWxmLCBmb3JtYXQpKQorICAgICAgICBpZiBlcnJjb25zb2xlOgorICAgICAgICAgICAgZXJyY29uc29sZS5hZGRGaWx0ZXIoSW50ZXJhY3RDb25zb2xlTG9nRmlsdGVyKHNlbGYsIGZvcm1hdCkpCiAKICAgICAgICAgc2VsZi5tYWluX3Byb2dyZXNzID0gTm9uZQogCkBAIC0zMTAsNiArMzEyLDMyIEBACiAgICAgICAgICAgICBmZCA9IHN5cy5zdGRpbi5maWxlbm8oKQogICAgICAgICAgICAgc2VsZi50ZXJtaW9zLnRjc2V0YXR0cihmZCwgc2VsZi50ZXJtaW9zLlRDU0FEUkFJTiwgc2VsZi5zdGRpbmJhY2t1cCkKIAorZGVmIHByaW50X2V2ZW50X2xvZyhldmVudCwgaW5jbHVkZWxvZ3MsIGxvZ2xpbmVzLCB0ZXJtZmlsdGVyKToKKyAgICAjIEZJWE1FIHJlZmFjdG9yIHRoaXMgb3V0IGZ1cnRoZXIKKyAgICBsb2dmaWxlID0gZXZlbnQubG9nZmlsZQorICAgIGlmIGxvZ2ZpbGUgYW5kIG9zLnBhdGguZXhpc3RzKGxvZ2ZpbGUpOgorICAgICAgICB0ZXJtZmlsdGVyLmNsZWFyRm9vdGVyKCkKKyAgICAgICAgYmIuZXJyb3IoIkxvZ2ZpbGUgb2YgZmFpbHVyZSBzdG9yZWQgaW46ICVzIiAlIGxvZ2ZpbGUpCisgICAgICAgIGlmIGluY2x1ZGVsb2dzIGFuZCBub3QgZXZlbnQuZXJycHJpbnRlZDoKKyAgICAgICAgICAgIHByaW50KCJMb2cgZGF0YSBmb2xsb3dzOiIpCisgICAgICAgICAgICBmID0gb3Blbihsb2dmaWxlLCAiciIpCisgICAgICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGwgPSBmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBsID09ICcnOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGwgPSBsLnJzdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbG9nbGluZXM6CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnIHwgJXMnICUgbCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IGludChsb2dsaW5lcyk6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5wb3AoMCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgnfCAlcycgJSBsKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBpZiBsaW5lczoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQobGluZSkKKwogZGVmIF9sb2dfc2V0dGluZ3NfZnJvbV9zZXJ2ZXIoc2VydmVyLCBvYnNlcnZlX29ubHkpOgogICAgICMgR2V0IHZhbHVlcyBvZiB2YXJpYWJsZXMgd2hpY2ggY29udHJvbCBvdXIgb3V0cHV0CiAgICAgaW5jbHVkZWxvZ3MsIGVycm9yID0gc2VydmVyLnJ1bkNvbW1hbmQoWyJnZXRWYXJpYWJsZSIsICJCQklOQ0xVREVMT0dTIl0pCkBAIC0zNDIsNiArMzcwLDkgQEAKIAogZGVmIG1haW4oc2VydmVyLCBldmVudEhhbmRsZXIsIHBhcmFtcywgdGYgPSBUZXJtaW5hbEZpbHRlcik6CiAKKyAgICBpZiBub3QgcGFyYW1zLm9ic2VydmVfb25seToKKyAgICAgICAgcGFyYW1zLnVwZGF0ZVRvU2VydmVyKHNlcnZlciwgb3MuZW52aXJvbi5jb3B5KCkpCisKICAgICBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlID0gX2xvZ19zZXR0aW5nc19mcm9tX3NlcnZlcihzZXJ2ZXIsIHBhcmFtcy5vYnNlcnZlX29ubHkpCiAKICAgICBpZiBzeXMuc3RkaW4uaXNhdHR5KCkgYW5kIHN5cy5zdGRvdXQuaXNhdHR5KCk6CkBAIC0zNjUsOCArMzk2LDkgQEAKICAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihlcnJjb25zb2xlLCBiYi5tc2cuQkJMb2dGaWx0ZXJTdGRFcnIpCiAgICAgY29uc29sZS5zZXRGb3JtYXR0ZXIoZm9ybWF0KQogICAgIGVycmNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdCkKLSAgICBsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlKQotICAgIGxvZ2dlci5hZGRIYW5kbGVyKGVycmNvbnNvbGUpCisgICAgaWYgbm90IGJiLm1zZy5oYXNfY29uc29sZV9oYW5kbGVyKGxvZ2dlcik6CisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGUpCisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGVycmNvbnNvbGUpCiAKICAgICBiYi51dGlscy5zZXRfcHJvY2Vzc19uYW1lKCJLbm90dHlVSSIpCiAKQEAgLTM5NSw3ICs0MjcsNiBAQAogICAgIHVuaXZlcnNlID0gRmFsc2UKICAgICBpZiBub3QgcGFyYW1zLm9ic2VydmVfb25seToKICAgICAgICAgcGFyYW1zLnVwZGF0ZUZyb21TZXJ2ZXIoc2VydmVyKQotICAgICAgICBwYXJhbXMudXBkYXRlVG9TZXJ2ZXIoc2VydmVyLCBvcy5lbnZpcm9uLmNvcHkoKSkKICAgICAgICAgY21kbGluZSA9IHBhcmFtcy5wYXJzZUFjdGlvbnMoKQogICAgICAgICBpZiBub3QgY21kbGluZToKICAgICAgICAgICAgIHByaW50KCJOb3RoaW5nIHRvIGRvLiAgVXNlICdiaXRiYWtlIHdvcmxkJyB0byBidWlsZCBldmVyeXRoaW5nLCBvciBydW4gJ2JpdGJha2UgLS1oZWxwJyBmb3IgdXNhZ2UgaW5mb3JtYXRpb24uIikKQEAgLTQ3MSwxMSArNTAyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgICAgICMgUHJlZml4IHRhc2sgbWVzc2FnZXMgd2l0aCByZWNpcGUvdGFzawotICAgICAgICAgICAgICAgICAgICBpZiBldmVudC50YXNrcGlkIGluIGhlbHBlci5ydW5uaW5nX3Rhc2tzOgorICAgICAgICAgICAgICAgICAgICBpZiBldmVudC50YXNrcGlkIGluIGhlbHBlci5ydW5uaW5nX3Rhc2tzIGFuZCBldmVudC5sZXZlbG5vICE9IGZvcm1hdC5QTEFJTjoKICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvID0gaGVscGVyLnJ1bm5pbmdfdGFza3NbZXZlbnQudGFza3BpZF0KICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Lm1zZyA9IHRhc2tpbmZvWyd0aXRsZSddICsgJzogJyArIGV2ZW50Lm1zZwogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICdmbicpOgotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQubXNnID0gZXZlbnQuZm4gKyAnOiAnICsgZXZlbnQubXNnCisgICAgICAgICAgICAgICAgICAgIGV2ZW50Lm1zZyA9IGV2ZW50LmZuICsgJzogJyArIGV2ZW50Lm1zZwogICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGUoZXZlbnQpCiAgICAgICAgICAgICAgICAgY29udGludWUKIApAQCAtNDg0LDI5ICs1MTUsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkKToKICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSAxCi0gICAgICAgICAgICAgICAgbG9nZmlsZSA9IGV2ZW50LmxvZ2ZpbGUKLSAgICAgICAgICAgICAgICBpZiBsb2dmaWxlIGFuZCBvcy5wYXRoLmV4aXN0cyhsb2dmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgdGVybWZpbHRlci5jbGVhckZvb3RlcigpCi0gICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCJMb2dmaWxlIG9mIGZhaWx1cmUgc3RvcmVkIGluOiAlcyIgJSBsb2dmaWxlKQotICAgICAgICAgICAgICAgICAgICBpZiBpbmNsdWRlbG9ncyBhbmQgbm90IGV2ZW50LmVycnByaW50ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiTG9nIGRhdGEgZm9sbG93czoiKQotICAgICAgICAgICAgICAgICAgICAgICAgZiA9IG9wZW4obG9nZmlsZSwgInIiKQotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZi5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbCA9PSAnJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbC5yc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvZ2xpbmVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyB8ICVzJyAlIGwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lcykgPiBpbnQobG9nbGluZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMucG9wKDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ3wgJXMnICUgbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGxpbmUpCisgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfbG9nKGV2ZW50LCBpbmNsdWRlbG9ncywgbG9nbGluZXMsIHRlcm1maWx0ZXIpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrQmFzZSk6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oZXZlbnQuX21lc3NhZ2UpCiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTU1OSw3ICs1NjgsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IGV2ZW50LmV4aXRjb2RlCiAgICAgICAgICAgICAgICAgaWYgZXZlbnQuZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGVycm9ycyArIDEKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb21tYW5kIGV4ZWN1dGlvbiBmYWlsZWQ6ICVzIiwgZXZlbnQuZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQogICAgICAgICAgICAgICAgIG1haW4uc2h1dGRvd24gPSAyCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEV4aXQpOgpAQCAtNTcwLDM5ICs1NzksMTYgQEAKICAgICAgICAgICAgICAgICBtYWluLnNodXRkb3duID0gMgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5NdWx0aXBsZVByb3ZpZGVycyk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIm11bHRpcGxlIHByb3ZpZGVycyBhcmUgYXZhaWxhYmxlIGZvciAlcyVzICglcykiLCBldmVudC5faXNfcnVudGltZSBhbmQgInJ1bnRpbWUgIiBvciAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5faXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4oZXZlbnQuX2NhbmRpZGF0ZXMpKQotICAgICAgICAgICAgICAgIHJ0aW1lID0gIiIKLSAgICAgICAgICAgICAgICBpZiBldmVudC5faXNfcnVudGltZToKLSAgICAgICAgICAgICAgICAgICAgcnRpbWUgPSAiUiIKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiY29uc2lkZXIgZGVmaW5pbmcgYSBQUkVGRVJSRURfJXNQUk9WSURFUiBlbnRyeSB0byBtYXRjaCAlcyIgJSAocnRpbWUsIGV2ZW50Ll9pdGVtKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhzdHIoZXZlbnQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Ob1Byb3ZpZGVyKToKLSAgICAgICAgICAgICAgICBpZiBldmVudC5fcnVudGltZToKLSAgICAgICAgICAgICAgICAgICAgciA9ICJSIgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHIgPSAiIgotCi0gICAgICAgICAgICAgICAgZXh0cmEgPSAnJwotICAgICAgICAgICAgICAgIGlmIG5vdCBldmVudC5fcmVhc29uczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQuX2Nsb3NlX21hdGNoZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYSA9ICIuIENsb3NlIG1hdGNoZXM6XG4gICVzIiAlICdcbiAgJy5qb2luKGV2ZW50Ll9jbG9zZV9tYXRjaGVzKQotCiAgICAgICAgICAgICAgICAgIyBGb3IgdW5pdmVyc2UgYnVpbGRzLCBvbmx5IHNob3cgdGhlc2UgYXMgd2FybmluZ3MsIG5vdCBlcnJvcnMKLSAgICAgICAgICAgICAgICBoID0gbG9nZ2VyLndhcm5pbmcKICAgICAgICAgICAgICAgICBpZiBub3QgdW5pdmVyc2U6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IDEKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICsgMQotICAgICAgICAgICAgICAgICAgICBoID0gbG9nZ2VyLmVycm9yCi0KLSAgICAgICAgICAgICAgICBpZiBldmVudC5fZGVwZW5kZWVzOgotICAgICAgICAgICAgICAgICAgICBoKCJOb3RoaW5nICVzUFJPVklERVMgJyVzJyAoYnV0ICVzICVzREVQRU5EUyBvbiBvciBvdGhlcndpc2UgcmVxdWlyZXMgaXQpJXMiLCByLCBldmVudC5faXRlbSwgIiwgIi5qb2luKGV2ZW50Ll9kZXBlbmRlZXMpLCByLCBleHRyYSkKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaCgiTm90aGluZyAlc1BST1ZJREVTICclcyclcyIsIHIsIGV2ZW50Ll9pdGVtLCBleHRyYSkKLSAgICAgICAgICAgICAgICBpZiBldmVudC5fcmVhc29uczoKLSAgICAgICAgICAgICAgICAgICAgZm9yIHJlYXNvbiBpbiBldmVudC5fcmVhc29uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGgoIiVzIiwgcmVhc29uKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzdHIoZXZlbnQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVUYXNrU3RhcnRlZCk6CkBAIC02MjQsMTMgKzYxMCwxMSBAQAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrRmFpbGVkKToKICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSAxCiAgICAgICAgICAgICAgICAgdGFza2ZhaWx1cmVzLmFwcGVuZChldmVudC50YXNrc3RyaW5nKQotICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVGFzayAoJXMpIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQudGFza3N0cmluZywgZXZlbnQuZXhpdGNvZGUpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUuc2NlbmVRdWV1ZVRhc2tGYWlsZWQpOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJTZXRzY2VuZSB0YXNrICglcykgZmFpbGVkIHdpdGggZXhpdCBjb2RlICclcycgLSByZWFsIHRhc2sgd2lsbCBiZSBydW4gaW5zdGVhZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQudGFza3N0cmluZywgZXZlbnQuZXhpdGNvZGUpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoc3RyKGV2ZW50KSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5EZXBUcmVlR2VuZXJhdGVkKToKQEAgLTY2Myw2ICs2NDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuU3RhbXBVcGRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZXZlbnQuQ29uZmlnUGFyc2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50Lk11bHRpQ29uZmlnUGFyc2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50LlJlY2lwZVBhcnNlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5ydW5xdWV1ZS5ydW5RdWV1ZUV2ZW50LApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL25jdXJzZXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvbmN1cnNlcy5weQppbmRleCBjYTg0NWEzLi44NjkwYzUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvbmN1cnNlcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvbmN1cnNlcy5weQpAQCAtMzE1LDcgKzMxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgYWxzbyBhbGxvdyB0aGVtIHRvIG5vdyBleGl0IHdpdGggYSBzaW5nbGUgXkMKICAgICAgICAgICAgICAgICAgICAgc2h1dGRvd24gPSAyCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkKToKLSAgICAgICAgICAgICAgICAgICAgbXcuYXBwZW5kVGV4dCgiQ29tbWFuZCBleGVjdXRpb24gZmFpbGVkOiAlcyIgJSBldmVudC5lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbXcuYXBwZW5kVGV4dChzdHIoZXZlbnQpKQogICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDIpCiAgICAgICAgICAgICAgICAgICAgIGV4aXRmbGFnID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEV4aXQpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL3Rhc2tleHAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weQppbmRleCA5ZDE0ZWNlLi4wZThlOWQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weQpAQCAtNjMsNyArNjMsOSBAQAogICAgICAgICBzZWxmLmN1cnJlbnQgPSBOb25lCiAgICAgICAgIHNlbGYuZmlsdGVyX21vZGVsID0gbW9kZWwuZmlsdGVyX25ldygpCiAgICAgICAgIHNlbGYuZmlsdGVyX21vZGVsLnNldF92aXNpYmxlX2Z1bmMoc2VsZi5fZmlsdGVyKQotICAgICAgICBzZWxmLnNldF9tb2RlbChzZWxmLmZpbHRlcl9tb2RlbCkKKyAgICAgICAgc2VsZi5zb3J0X21vZGVsID0gc2VsZi5maWx0ZXJfbW9kZWwuc29ydF9uZXdfd2l0aF9tb2RlbCgpCisgICAgICAgIHNlbGYuc29ydF9tb2RlbC5zZXRfc29ydF9jb2x1bW5faWQoQ09MX0RFUF9QQVJFTlQsIEd0ay5Tb3J0VHlwZS5BU0NFTkRJTkcpCisgICAgICAgIHNlbGYuc2V0X21vZGVsKHNlbGYuc29ydF9tb2RlbCkKICAgICAgICAgc2VsZi5hcHBlbmRfY29sdW1uKEd0ay5UcmVlVmlld0NvbHVtbihsYWJlbCwgR3RrLkNlbGxSZW5kZXJlclRleHQoKSwgdGV4dD1DT0xfREVQX1BBUkVOVCkpCiAKICAgICBkZWYgX2ZpbHRlcihzZWxmLCBtb2RlbCwgaXRlciwgZGF0YSk6CkBAIC0yODYsMjMgKzI4OCw3IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTm9Qcm92aWRlcik6Ci0gICAgICAgICAgICAgICAgaWYgZXZlbnQuX3J1bnRpbWU6Ci0gICAgICAgICAgICAgICAgICAgIHIgPSAiUiIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByID0gIiIKLQotICAgICAgICAgICAgICAgIGV4dHJhID0gJycKLSAgICAgICAgICAgICAgICBpZiBub3QgZXZlbnQuX3JlYXNvbnM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9jbG9zZV9tYXRjaGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEgPSAiLiBDbG9zZSBtYXRjaGVzOlxuICAlcyIgJSAnXG4gICcuam9pbihldmVudC5fY2xvc2VfbWF0Y2hlcykKLQotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9kZXBlbmRlZXM6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCJOb3RoaW5nICVzUFJPVklERVMgJyVzJyAoYnV0ICVzICVzREVQRU5EUyBvbiBvciBvdGhlcndpc2UgcmVxdWlyZXMgaXQpJXMiICUgKHIsIGV2ZW50Ll9pdGVtLCAiLCAiLmpvaW4oZXZlbnQuX2RlcGVuZGVlcyksIHIsIGV4dHJhKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiTm90aGluZyAlc1BST1ZJREVTICclcyclcyIgJSAociwgZXZlbnQuX2l0ZW0sIGV4dHJhKSkKLSAgICAgICAgICAgICAgICBpZiBldmVudC5fcmVhc29uczoKLSAgICAgICAgICAgICAgICAgICAgZm9yIHJlYXNvbiBpbiBldmVudC5fcmVhc29uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHJlYXNvbikKKyAgICAgICAgICAgICAgICBwcmludChzdHIoZXZlbnQpKQogCiAgICAgICAgICAgICAgICAgXywgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbInN0YXRlU2h1dGRvd24iXSkKICAgICAgICAgICAgICAgICBpZiBlcnJvcjoKQEAgLTMxMCw3ICsyOTYsNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCk6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIkNvbW1hbmQgZXhlY3V0aW9uIGZhaWxlZDogJXMiICUgZXZlbnQuZXJyb3IpCisgICAgICAgICAgICAgICAgcHJpbnQoc3RyKGV2ZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQuZXhpdGNvZGUKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRXhpdCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL3RvYXN0ZXJ1aS5weQppbmRleCA3MWYwNGZhLi44OGNlYzM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKQEAgLTMyMCwyOSArMzIwLDEzIEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5DYWNoZUxvYWRDb21wbGV0ZWQpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5NdWx0aXBsZVByb3ZpZGVycyk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIm11bHRpcGxlIHByb3ZpZGVycyBhcmUgYXZhaWxhYmxlIGZvciAlcyVzICglcykiLCBldmVudC5faXNfcnVudGltZSBhbmQgInJ1bnRpbWUgIiBvciAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5faXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4oZXZlbnQuX2NhbmRpZGF0ZXMpKQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjb25zaWRlciBkZWZpbmluZyBhIFBSRUZFUlJFRF9QUk9WSURFUiBlbnRyeSB0byBtYXRjaCAlcyIsIGV2ZW50Ll9pdGVtKQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKHN0cihldmVudCkpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTm9Qcm92aWRlcik6CiAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICsgMQotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9ydW50aW1lOgotICAgICAgICAgICAgICAgICAgICByID0gIlIiCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgciA9ICIiCi0KLSAgICAgICAgICAgICAgICBpZiBldmVudC5fZGVwZW5kZWVzOgotICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gIk5vdGhpbmcgJXNQUk9WSURFUyAnJXMnIChidXQgJXMgJXNERVBFTkRTIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdCkiICUgKHIsIGV2ZW50Ll9pdGVtLCAiLCAiLmpvaW4oZXZlbnQuX2RlcGVuZGVlcyksIHIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICJOb3RoaW5nICVzUFJPVklERVMgJyVzJyIgJSAociwgZXZlbnQuX2l0ZW0pCi0KKyAgICAgICAgICAgICAgICB0ZXh0ID0gc3RyKGV2ZW50KQogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcih0ZXh0KQotICAgICAgICAgICAgICAgIGlmIGV2ZW50Ll9yZWFzb25zOgotICAgICAgICAgICAgICAgICAgICBmb3IgcmVhc29uIGluIGV2ZW50Ll9yZWFzb25zOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlcyIsIHJlYXNvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVhc29uCiAgICAgICAgICAgICAgICAgYnVpbGRpbmZvaGVscGVyLnN0b3JlX2xvZ19lcnJvcih0ZXh0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTM2NCw4ICszNDgsNyBAQAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrRmFpbGVkKToKICAgICAgICAgICAgICAgICBidWlsZGluZm9oZWxwZXIudXBkYXRlX2FuZF9zdG9yZV90YXNrKGV2ZW50KQogICAgICAgICAgICAgICAgIHRhc2tmYWlsdXJlcy5hcHBlbmQoZXZlbnQudGFza3N0cmluZykKLSAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlRhc2sgKCVzKSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhc2tzdHJpbmcsIGV2ZW50LmV4aXRjb2RlKQorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIChiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza0NvbXBsZXRlZCwgYmIucnVucXVldWUuc2NlbmVRdWV1ZVRhc2tGYWlsZWQpKToKQEAgLTM4Miw3ICszNjUsNyBAQAogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCk6CiAgICAgICAgICAgICAgICAgICAgIGVycm9ycyArPSAxCiAgICAgICAgICAgICAgICAgICAgIGVycm9yY29kZSA9IDEKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb21tYW5kIGV4ZWN1dGlvbiBmYWlsZWQ6ICVzIiwgZXZlbnQuZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQogICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQnVpbGRDb21wbGV0ZWQpOgogICAgICAgICAgICAgICAgICAgICBidWlsZGluZm9oZWxwZXIuc2Nhbl9pbWFnZV9hcnRpZmFjdHMoKQogICAgICAgICAgICAgICAgICAgICBidWlsZGluZm9oZWxwZXIuY2xvbmVfcmVxdWlyZWRfc2RrX2FydGlmYWN0cygpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdWloZWxwZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdWkvdWloZWxwZXIucHkKaW5kZXggMTEzZmNlZC4uOTYzYzFlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWhlbHBlci5weQpAQCAtNjEsNiArNjEsOSBAQAogICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdWydwcm9ncmVzcyddID0gZXZlbnQucHJvZ3Jlc3MKICAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXVsncmF0ZSddID0gZXZlbnQucmF0ZQogICAgICAgICAgICAgICAgIHNlbGYubmVlZFVwZGF0ZSA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIGdldFRhc2tzKHNlbGYpOgogICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBGYWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CmluZGV4IDZhNDRkYjUuLmM1NDBiNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKQEAgLTc3MSwxMyArNzcxLDE0IEBACiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgcmVuYW1lZmFpbGVkID0gMQorICAgICMgb3MucmVuYW1lIG5lZWRzIHRvIGtub3cgdGhlIGRlc3QgcGF0aCBlbmRpbmcgd2l0aCBmaWxlIG5hbWUKKyAgICAjIHNvIGFwcGVuZCB0aGUgZmlsZSBuYW1lIHRvIGEgcGF0aCBvbmx5IGlmIGl0J3MgYSBkaXIgc3BlY2lmaWVkCisgICAgc3JjZm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNyYykKKyAgICBkZXN0cGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBzcmNmbmFtZSkgaWYgb3MucGF0aC5pc2RpcihkZXN0KSBcCisgICAgICAgICAgICAgICAgZWxzZSBkZXN0CisKICAgICBpZiBzc3RhdFtzdGF0LlNUX0RFVl0gPT0gZHN0YXRbc3RhdC5TVF9ERVZdOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIG9zLnJlbmFtZSBuZWVkcyB0byBrbm93IHRoZSBkZXN0IHBhdGggZW5kaW5nIHdpdGggZmlsZSBuYW1lCi0gICAgICAgICAgICAjIHNvIGFwcGVuZCB0aGUgZmlsZSBuYW1lIHRvIGEgcGF0aCBvbmx5IGlmIGl0J3MgYSBkaXIgc3BlY2lmaWVkCi0gICAgICAgICAgICBzcmNmbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3JjKQotICAgICAgICAgICAgZGVzdHBhdGggPSBvcy5wYXRoLmpvaW4oZGVzdCwgc3JjZm5hbWUpIGlmIG9zLnBhdGguaXNkaXIoZGVzdCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZXN0CiAgICAgICAgICAgICBvcy5yZW5hbWUoc3JjLCBkZXN0cGF0aCkKICAgICAgICAgICAgIHJlbmFtZWZhaWxlZCA9IDAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgpAQCAtNzkxLDggKzc5Miw4IEBACiAgICAgICAgIGRpZGNvcHkgPSAwCiAgICAgICAgIGlmIHN0YXQuU19JU1JFRyhzc3RhdFtzdGF0LlNUX01PREVdKToKICAgICAgICAgICAgIHRyeTogIyBGb3Igc2FmZXR5IGNvcHkgdGhlbiBtb3ZlIGl0IG92ZXIuCi0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyYywgZGVzdCArICIjbmV3IikKLSAgICAgICAgICAgICAgICBvcy5yZW5hbWUoZGVzdCArICIjbmV3IiwgZGVzdCkKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkZXN0cGF0aCArICIjbmV3IikKKyAgICAgICAgICAgICAgICBvcy5yZW5hbWUoZGVzdHBhdGggKyAiI25ldyIsIGRlc3RwYXRoKQogICAgICAgICAgICAgICAgIGRpZGNvcHkgPSAxCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ21vdmVmaWxlOiBjb3B5Jywgc3JjLCAnLT4nLCBkZXN0LCAnZmFpbGVkLicsIGUpCkBAIC04MTMsOSArODE0LDkgQEAKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBpZiBuZXdtdGltZToKLSAgICAgICAgb3MudXRpbWUoZGVzdCwgKG5ld210aW1lLCBuZXdtdGltZSkpCisgICAgICAgIG9zLnV0aW1lKGRlc3RwYXRoLCAobmV3bXRpbWUsIG5ld210aW1lKSkKICAgICBlbHNlOgotICAgICAgICBvcy51dGltZShkZXN0LCAoc3N0YXRbc3RhdC5TVF9BVElNRV0sIHNzdGF0W3N0YXQuU1RfTVRJTUVdKSkKKyAgICAgICAgb3MudXRpbWUoZGVzdHBhdGgsIChzc3RhdFtzdGF0LlNUX0FUSU1FXSwgc3N0YXRbc3RhdC5TVF9NVElNRV0pKQogICAgICAgICBuZXdtdGltZSA9IHNzdGF0W3N0YXQuU1RfTVRJTUVdCiAgICAgcmV0dXJuIG5ld210aW1lCiAKQEAgLTE1MDIsNyArMTUwMyw3IEBACiAKIGRlZiBsb2FkX3BsdWdpbnMobG9nZ2VyLCBwbHVnaW5zLCBwbHVnaW5wYXRoKToKICAgICBkZWYgbG9hZF9wbHVnaW4obmFtZSk6Ci0gICAgICAgIGxvZ2dlci5kZWJ1ZygnTG9hZGluZyBwbHVnaW4gJXMnICUgbmFtZSkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdMb2FkaW5nIHBsdWdpbiAlcycgJSBuYW1lKQogICAgICAgICBmcCwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKG5hbWUsIFtwbHVnaW5wYXRoXSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShuYW1lLCBmcCwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uKQpAQCAtMTUxMCw3ICsxNTExLDcgQEAKICAgICAgICAgICAgIGlmIGZwOgogICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKIAotICAgIGxvZ2dlci5kZWJ1ZygnTG9hZGluZyBwbHVnaW5zIGZyb20gJXMuLi4nICUgcGx1Z2lucGF0aCkKKyAgICBsb2dnZXIuZGVidWcoMSwgJ0xvYWRpbmcgcGx1Z2lucyBmcm9tICVzLi4uJyAlIHBsdWdpbnBhdGgpCiAKICAgICBleHBhbmRlZCA9IChnbG9iLmdsb2Iob3MucGF0aC5qb2luKHBsdWdpbnBhdGgsICcqJyArIGV4dCkpCiAgICAgICAgICAgICAgICAgZm9yIGV4dCBpbiBweXRob25fZXh0ZW5zaW9ucykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9hY3Rpb24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvYWN0aW9uLnB5CmluZGV4IGNmOTQ3MDQuLmIxMzI2ZTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9hY3Rpb24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2FjdGlvbi5weQpAQCAtMSw3ICsxLDkgQEAKIGltcG9ydCBmbm1hdGNoCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKIAogaW1wb3J0IGJiLnV0aWxzCiAKQEAgLTMyLDEwICszNCwyNiBAQAogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiVW5hYmxlIHRvIGZpbmQgYmJsYXllcnMuY29uZlxuIikKICAgICAgICAgICAgIHJldHVybiAxCiAKLSAgICAgICAgbm90YWRkZWQsIF8gPSBiYi51dGlscy5lZGl0X2JibGF5ZXJzX2NvbmYoYmJsYXllcnNfY29uZiwgbGF5ZXJkaXIsIE5vbmUpCi0gICAgICAgIGlmIG5vdGFkZGVkOgotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbm90YWRkZWQ6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiU3BlY2lmaWVkIGxheWVyICVzIGlzIGFscmVhZHkgaW4gQkJMQVlFUlNcbiIgJSBpdGVtKQorICAgICAgICAjIEJhY2sgdXAgYmJsYXllcnMuY29uZiB0byB0ZW1wZGlyIGJlZm9yZSB3ZSBhZGQgbGF5ZXJzCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgYmFja3VwID0gdGVtcGRpciArICIvYmJsYXllcnMuY29uZi5iYWsiCisgICAgICAgIHNodXRpbC5jb3B5MihiYmxheWVyc19jb25mLCBiYWNrdXApCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbm90YWRkZWQsIF8gPSBiYi51dGlscy5lZGl0X2JibGF5ZXJzX2NvbmYoYmJsYXllcnNfY29uZiwgbGF5ZXJkaXIsIE5vbmUpCisgICAgICAgICAgICBpZiBub3QgKGFyZ3MuZm9yY2Ugb3Igbm90YWRkZWQpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50aW5mb2lsLnBhcnNlUmVjaXBlcygpCisgICAgICAgICAgICAgICAgZXhjZXB0IGJiLnRpbmZvaWwuVGluZm9pbFVJRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAjIFJlc3RvcmUgdGhlIGJhY2sgdXAgY29weSBvZiBiYmxheWVycy5jb25mCisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5MihiYWNrdXAsIGJibGF5ZXJzX2NvbmYpCisgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJQYXJzZSBmYWlsdXJlIHdpdGggdGhlIHNwZWNpZmllZCBsYXllciBhZGRlZCIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbm90YWRkZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTcGVjaWZpZWQgbGF5ZXIgJXMgaXMgYWxyZWFkeSBpbiBCQkxBWUVSU1xuIiAlIGl0ZW0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIFJlbW92ZSB0aGUgYmFjayB1cCBjb3B5IG9mIGJibGF5ZXJzLmNvbmYKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcGRpcikKIAogICAgIGRlZiBkb19yZW1vdmVfbGF5ZXIoc2VsZiwgYXJncyk6CiAgICAgICAgICIiIlJlbW92ZSBhIGxheWVyIGZyb20gYmJsYXllcnMuY29uZi4iIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkKaW5kZXggNTA2YzExMC4uOWFmMzg1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkKQEAgLTI0Nyw2ICsyNDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCJBZGRpbmcgbGF5ZXIgXCIlc1wiIHRvIGNvbmYvYmJsYXllcnMuY29uZiIgJSBuYW1lKQogICAgICAgICAgICAgICAgICAgICBsb2NhbGFyZ3MgPSBhcmdwYXJzZS5OYW1lc3BhY2UoKQogICAgICAgICAgICAgICAgICAgICBsb2NhbGFyZ3MubGF5ZXJkaXIgPSBsYXllcmRpcgorICAgICAgICAgICAgICAgICAgICBsb2NhbGFyZ3MuZm9yY2UgPSBhcmdzLmZvcmNlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9fYWRkX2xheWVyKGxvY2FsYXJncykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBicmVhawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5CmluZGV4IGE3ZWZhNTguLjZhOTk3MjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvc2Vydi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvcHJzZXJ2L3NlcnYucHkKQEAgLTYsMTAgKzYsMTEgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBpbwogaW1wb3J0IHNxbGl0ZTMKLWltcG9ydCBiYi5zZXJ2ZXIueG1scnBjCitpbXBvcnQgYmIuc2VydmVyLnhtbHJwY2NsaWVudAogaW1wb3J0IHByc2VydgogaW1wb3J0IHByc2Vydi5kYgogaW1wb3J0IGVycm5vCitpbXBvcnQgc2VsZWN0CiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLlBSc2VydiIpCiAKQEAgLTU5LDYgKzYwLDggQEAKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9mdW5jdGlvbihzZWxmLmltcG9ydG9uZSwgImltcG9ydG9uZSIpCiAgICAgICAgIHNlbGYucmVnaXN0ZXJfaW50cm9zcGVjdGlvbl9mdW5jdGlvbnMoKQogCisgICAgICAgIHNlbGYucXVpdHBpcGVpbiwgc2VsZi5xdWl0cGlwZW91dCA9IG9zLnBpcGUoKQorCiAgICAgICAgIHNlbGYucmVxdWVzdHF1ZXVlID0gcXVldWUuUXVldWUoKQogICAgICAgICBzZWxmLmhhbmRsZXJ0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldCA9IHNlbGYucHJvY2Vzc19yZXF1ZXN0X3RocmVhZCkKICAgICAgICAgc2VsZi5oYW5kbGVydGhyZWFkLmRhZW1vbiA9IEZhbHNlCkBAIC03NSwxMiArNzgsMTQgQEAKIAogICAgICAgICBiYi51dGlscy5zZXRfcHJvY2Vzc19uYW1lKCJQUlNlcnYgSGFuZGxlciIpCiAKLSAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdDoKKyAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdGZsYWc6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKSA9IHNlbGYucmVxdWVzdHF1ZXVlLmdldChUcnVlLCAzMCkKICAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlLnN5bmNfaWZfZGlydHkoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiByZXF1ZXN0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQpAQCAtMTAwLDcgKzEwNSw4IEBACiAgICAgZGVmIHNpZ3Rlcm1faGFuZGxlcihzZWxmLCBzaWdudW0sIHN0YWNrKToKICAgICAgICAgaWYgc2VsZi50YWJsZToKICAgICAgICAgICAgIHNlbGYudGFibGUuc3luYygpCi0gICAgICAgIHNlbGYucXVpdD1UcnVlCisgICAgICAgIHNlbGYucXVpdCgpCisgICAgICAgIHNlbGYucmVxdWVzdHF1ZXVlLnB1dCgoTm9uZSwgTm9uZSkpCiAKICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgc2VsZi5yZXF1ZXN0cXVldWUucHV0KChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykpCkBAIC0xMzYsNyArMTQyLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGFibGUuaW1wb3J0b25lKHZlcnNpb24sIHBrZ2FyY2gsIGNoZWNrc3VtLCB2YWx1ZSkKIAogICAgIGRlZiBwaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYucXVpdAorICAgICAgICByZXR1cm4gbm90IHNlbGYucXVpdGZsYWcKIAogICAgIGRlZiBnZXRpbmZvKHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuaG9zdCwgc2VsZi5wb3J0KQpAQCAtMTUyLDEyICsxNTgsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgcXVpdChzZWxmKToKLSAgICAgICAgc2VsZi5xdWl0PVRydWUKKyAgICAgICAgc2VsZi5xdWl0ZmxhZz1UcnVlCisgICAgICAgIG9zLndyaXRlKHNlbGYucXVpdHBpcGVvdXQsIGIicSIpCisgICAgICAgIG9zLmNsb3NlKHNlbGYucXVpdHBpcGVvdXQpCiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIHdvcmtfZm9yZXZlcihzZWxmLCk6Ci0gICAgICAgIHNlbGYucXVpdCA9IEZhbHNlCi0gICAgICAgIHNlbGYudGltZW91dCA9IDAuNQorICAgICAgICBzZWxmLnF1aXRmbGFnID0gRmFsc2UKKyAgICAgICAgIyBUaGlzIHRpbWVvdXQgYXBwbGllcyB0byB0aGUgcG9sbCBpbiBUQ1BTZXJ2ZXIsIHdlIG5lZWQgdGhlIHNlbGVjdCAKKyAgICAgICAgIyBiZWxvdyB0byB3YWtlIG9uIG91ciBxdWl0IHBpcGUgY2xvc2luZy4gV2Ugb25seSBldmVyIGNhbGwgaW50byBoYW5kbGVfcmVxdWVzdAorICAgICAgICAjIGlmIHRoZXJlIGlzIGRhdGEgdGhlcmUuCisgICAgICAgIHNlbGYudGltZW91dCA9IDAuMDEKIAogICAgICAgICBiYi51dGlscy5zZXRfcHJvY2Vzc19uYW1lKCJQUlNlcnYiKQogCkBAIC0xNjksMTIgKzE4MCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZGJmaWxlLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3RyKG9zLmdldHBpZCgpKSkpCiAKICAgICAgICAgc2VsZi5oYW5kbGVydGhyZWFkLnN0YXJ0KCkKLSAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdDoKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICB3aGlsZSBub3Qgc2VsZi5xdWl0ZmxhZzoKKyAgICAgICAgICAgIHJlYWR5ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5maWxlbm8oKSwgc2VsZi5xdWl0cGlwZWluXSwgW10sIFtdLCAzMCkKKyAgICAgICAgICAgIGlmIHNlbGYucXVpdGZsYWc6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIHNlbGYuZmlsZW5vKCkgaW4gcmVhZHlbMF06CisgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfcmVxdWVzdCgpCiAgICAgICAgIHNlbGYuaGFuZGxlcnRocmVhZC5qb2luKCkKICAgICAgICAgc2VsZi5kYi5kaXNjb25uZWN0KCkKICAgICAgICAgbG9nZ2VyLmluZm8oIlBSU2VydmVyOiBzdG9wcGluZy4uLiIpCiAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgb3MuY2xvc2Uoc2VsZi5xdWl0cGlwZWluKQogICAgICAgICByZXR1cm4KIAogICAgIGRlZiBzdGFydChzZWxmKToKQEAgLTE4Miw2ICsxOTgsNyBAQAogICAgICAgICAgICAgcGlkID0gc2VsZi5kYWVtb25pemUoKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGlkID0gc2VsZi5mb3JrKCkKKyAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCiAKICAgICAgICAgIyBFbnN1cmUgYm90aCB0aGUgcGFyZW50IHNlZXMgdGhpcyBhbmQgdGhlIGNoaWxkIGZyb20gdGhlIHdvcmtfZm9yZXZlciBsb2cgZW50cnkgYWJvdmUKICAgICAgICAgbG9nZ2VyLmluZm8oIlN0YXJ0ZWQgUFJTZXJ2ZXIgd2l0aCBEQmZpbGU6ICVzLCBJUDogJXMsIFBPUlQ6ICVzLCBQSUQ6ICVzIiAlCkBAIC0zMDAsNyArMzE3LDcgQEAKICAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBzaW5nbGV0b24uZ2V0aW5mbygpCiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAotICAgICAgICBzZWxmLmNvbm5lY3Rpb24sIHNlbGYudHJhbnNwb3J0ID0gYmIuc2VydmVyLnhtbHJwYy5fY3JlYXRlX3NlcnZlcihzZWxmLmhvc3QsIHNlbGYucG9ydCkKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uLCBzZWxmLnRyYW5zcG9ydCA9IGJiLnNlcnZlci54bWxycGNjbGllbnQuX2NyZWF0ZV9zZXJ2ZXIoc2VsZi5ob3N0LCBzZWxmLnBvcnQpCiAKICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICB0cnk6CkBAIC00MjgsNiArNDQ1LDkgQEAKIGRlZiBhdXRvX3N0YXJ0KGQpOgogICAgIGdsb2JhbCBzaW5nbGV0b24KIAorICAgICMgU2h1dGRvd24gYW55IGV4aXN0aW5nIFBSIFNlcnZlcgorICAgIGF1dG9fc2h1dGRvd24oKQorCiAgICAgaG9zdF9wYXJhbXMgPSBsaXN0KGZpbHRlcihOb25lLCAoZC5nZXRWYXIoJ1BSU0VSVl9IT1NUJykgb3IgJycpLnNwbGl0KCc6JykpKQogICAgIGlmIG5vdCBob3N0X3BhcmFtczoKICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTQ2NCw3ICs0ODQsNyBAQAogICAgICAgICBsb2dnZXIuY3JpdGljYWwoIlBSc2VydmljZSAlczolZCBub3QgYXZhaWxhYmxlIiAlIChob3N0LCBwb3J0KSkKICAgICAgICAgcmFpc2UgUFJTZXJ2aWNlQ29uZmlnRXJyb3IKIAotZGVmIGF1dG9fc2h1dGRvd24oZD1Ob25lKToKK2RlZiBhdXRvX3NodXRkb3duKCk6CiAgICAgZ2xvYmFsIHNpbmdsZXRvbgogICAgIGlmIHNpbmdsZXRvbjoKICAgICAgICAgaG9zdCwgcG9ydCA9IHNpbmdsZXRvbi5nZXRpbmZvKCkKQEAgLTQ3Miw2ICs0OTIsMTEgQEAKICAgICAgICAgICAgIFBSU2VydmVyQ29ubmVjdGlvbihob3N0LCBwb3J0KS50ZXJtaW5hdGUoKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwoIlN0b3AgUFJTZXJ2aWNlICVzOiVkIGZhaWxlZCIgJSAoaG9zdCxwb3J0KSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53YWl0cGlkKHNpbmdsZXRvbi5wcnNlcnYucGlkLCAwKQorICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNpbmdsZXRvbiA9IE5vbmUKIAogZGVmIHBpbmcoaG9zdCwgcG9ydCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3IvdXJscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5CmluZGV4IDY0NzIyZjIuLjg4ODE3NWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5CkBAIC0xLDcgKzEsNyBAQAogIwogIyBCaXRCYWtlIFRvYXN0ZXIgSW1wbGVtZW50YXRpb24KICMKLSMgQ29weXJpZ2h0IChDKSAyMDE0ICAgICAgICBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyAgIEludGVsIENvcnBvcmF0aW9uCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC0xNyw5ICsxNywxMSBAQAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCiAKLWZyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgcGF0dGVybnMsIGluY2x1ZGUsIHVybAorZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKIAotdXJscGF0dGVybnMgPSBwYXR0ZXJucygnYmxkY29sbGVjdG9yLnZpZXdzJywKK2ltcG9ydCBibGRjb2xsZWN0b3Iudmlld3MKKwordXJscGF0dGVybnMgPSBbCiAgICAgICAgICMgbGFuZGluZyBwb2ludCBmb3IgcHVzaGluZyBhIGJpdGJha2VfZXZlbnRsb2cuanNvbiBmaWxlIHRvIHRoaXMgdG9hc3RlciBpbnN0YWNlCi0gICAgICAgIHVybChyJ15ldmVudGZpbGUkJywgJ2V2ZW50ZmlsZScsIG5hbWU9J2V2ZW50ZmlsZScpLAotICAgICAgICApCisgICAgICAgIHVybChyJ15ldmVudGZpbGUkJywgYmxkY29sbGVjdG9yLnZpZXdzLmV2ZW50ZmlsZSwgbmFtZT0nZXZlbnRmaWxlJyksCitdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2JiY29udHJvbGxlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYmJjb250cm9sbGVyLnB5CmluZGV4IDkxMmY2N2IuLjUxOTU2MDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYmJjb250cm9sbGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYmJjb250cm9sbGVyLnB5CkBAIC0zNyw4ICszNyw4IEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYmUpOgotICAgICAgICBpbXBvcnQgYmIuc2VydmVyLnhtbHJwYwotICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBiYi5zZXJ2ZXIueG1scnBjLl9jcmVhdGVfc2VydmVyKGJlLmJiYWRkcmVzcywKKyAgICAgICAgaW1wb3J0IGJiLnNlcnZlci54bWxycGNjbGllbnQKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gYmIuc2VydmVyLnhtbHJwY2NsaWVudC5fY3JlYXRlX3NlcnZlcihiZS5iYmFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KGJlLmJicG9ydCkpWzBdCiAKICAgICBkZWYgX3J1bkNvbW1hbmQoc2VsZiwgY29tbWFuZCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CmluZGV4IDEyMDcxMDIuLjRjMTc1NjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CkBAIC0yNCw2ICsyNCw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCB0aW1lCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQogZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudCwgQlJMYXllciwgQlJWYXJpYWJsZSwgQlJUYXJnZXQsIEJSQml0YmFrZQpAQCAtNTEsMTIgKzUyLDE0IEBACiAgICAgICAgIHNlbGYucG9reWRpcm5hbWUgPSBOb25lCiAgICAgICAgIHNlbGYuaXNsYXllcnNldCA9IEZhbHNlCiAKLSAgICBkZWYgX3NoZWxsY21kKHNlbGYsIGNvbW1hbmQsIGN3ZD1Ob25lLCBub3dhaXQ9RmFsc2UpOgorICAgIGRlZiBfc2hlbGxjbWQoc2VsZiwgY29tbWFuZCwgY3dkPU5vbmUsIG5vd2FpdD1GYWxzZSxlbnY9Tm9uZSk6CiAgICAgICAgIGlmIGN3ZCBpcyBOb25lOgogICAgICAgICAgICAgY3dkID0gc2VsZi5iZS5zb3VyY2VkaXIKKyAgICAgICAgaWYgZW52IGlzIE5vbmU6CisgICAgICAgICAgICBlbnY9b3MuZW52aXJvbi5jb3B5KCkKIAotICAgICAgICBsb2dnZXIuZGVidWcoImxiY19zaGVsbGNtbWQ6ICglcykgJXMiICUgKGN3ZCwgY29tbWFuZCkpCi0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIGN3ZCA9IGN3ZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJsYmNfc2hlbGxjbWQ6ICglcykgJXMiICUgKGN3ZCwgY29tbWFuZCkpCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIGN3ZCA9IGN3ZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwgZW52PWVudikKICAgICAgICAgaWYgbm93YWl0OgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIChvdXQsZXJyKSA9IHAuY29tbXVuaWNhdGUoKQpAQCAtODUsNiArODgsMTEgQEAKICAgICAgICAgcmV0dXJuIGxvY2FsX2NoZWNrb3V0X3BhdGgKIAogCisgICAgZGVmIHNldENsb25lU3RhdHVzKHNlbGYsYml0YmFrZSxzdGF0dXMsdG90YWwsY3VycmVudCk6CisgICAgICAgIGJpdGJha2UucmVxLmJ1aWxkLnJlcG9zX2Nsb25lZD1jdXJyZW50CisgICAgICAgIGJpdGJha2UucmVxLmJ1aWxkLnJlcG9zX3RvX2Nsb25lPXRvdGFsCisgICAgICAgIGJpdGJha2UucmVxLmJ1aWxkLnNhdmUoKQorCiAgICAgZGVmIHNldExheWVycyhzZWxmLCBiaXRiYWtlLCBsYXllcnMsIHRhcmdldHMpOgogICAgICAgICAiIiIgYSB3b3JkIG9mIGF0dGVudGlvbjogYnkgY29udmVudGlvbiwgdGhlIGZpcnN0IGxheWVyIGZvciBhbnkgYnVpbGQgd2lsbCBiZSBwb2t5ISAiIiIKIApAQCAtOTIsNiArMTAwLDggQEAKIAogICAgICAgICBsYXllcmxpc3QgPSBbXQogICAgICAgICBub25naXRsYXllcmxpc3QgPSBbXQorICAgICAgICBnaXRfZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgIyAobm90ZTogYWRkIGN1c3RvbSBlbnZpcm9ubWVudCBzZXR0aW5ncyBoZXJlKQogCiAgICAgICAgICMgc2V0IGxheWVycyBpbiB0aGUgbGF5ZXJzb3VyY2UKIApAQCAtMTMyLDcgKzE0Miw3IEBACiAgICAgICAgIGNhY2hlZF9sYXllcnMgPSB7fQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciByZW1vdGVzIGluIHNlbGYuX3NoZWxsY21kKCJnaXQgcmVtb3RlIC12Iiwgc2VsZi5iZS5zb3VyY2VkaXIpLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgZm9yIHJlbW90ZXMgaW4gc2VsZi5fc2hlbGxjbWQoImdpdCByZW1vdGUgLXYiLCBzZWxmLmJlLnNvdXJjZWRpcixlbnY9Z2l0X2Vudikuc3BsaXQoIlxuIik6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICByZW1vdGUgPSByZW1vdGVzLnNwbGl0KCJcdCIpWzFdLnNwbGl0KCIgIilbMF0KICAgICAgICAgICAgICAgICAgICAgaWYgcmVtb3RlIG5vdCBpbiBjYWNoZWRfbGF5ZXJzOgpAQCAtMTQ3LDcgKzE1NywxMyBAQAogICAgICAgICBsb2dnZXIuaW5mbygiVXNpbmcgcHJlLWNoZWNrZWQgb3V0IHNvdXJjZSBmb3IgbGF5ZXIgJXMiLCBjYWNoZWRfbGF5ZXJzKQogCiAgICAgICAgICMgMy4gY2hlY2tvdXQgdGhlIHJlcG9zaXRvcmllcworICAgICAgICBjbG9uZV9jb3VudD0wCisgICAgICAgIGNsb25lX3RvdGFsPWxlbihnaXRyZXBvcy5rZXlzKCkpCisgICAgICAgIHNlbGYuc2V0Q2xvbmVTdGF0dXMoYml0YmFrZSwnU3RhcnRlZCcsY2xvbmVfdG90YWwsY2xvbmVfY291bnQpCiAgICAgICAgIGZvciBnaXR1cmwsIGNvbW1pdCBpbiBnaXRyZXBvcy5rZXlzKCk6CisgICAgICAgICAgICBzZWxmLnNldENsb25lU3RhdHVzKGJpdGJha2UsJ3Byb2dyZXNzJyxjbG9uZV90b3RhbCxjbG9uZV9jb3VudCkKKyAgICAgICAgICAgIGNsb25lX2NvdW50ICs9IDEKKwogICAgICAgICAgICAgbG9jYWxkaXJuYW1lID0gb3MucGF0aC5qb2luKHNlbGYuYmUuc291cmNlZGlyLCBzZWxmLmdldEdpdENsb25lRGlyZWN0b3J5KGdpdHVybCwgY29tbWl0KSkKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiBnaXR1cmwgJXM6JXMgY2hlY2tpbmcgb3V0IGluIGN1cnJlbnQgZGlyZWN0b3J5ICVzIiAlIChnaXR1cmwsIGNvbW1pdCwgbG9jYWxkaXJuYW1lKSkKIApAQCAtMTU1LDcgKzE3MSw3IEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsb2NhbGRpcm5hbWUpOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgbG9jYWxyZW1vdGVzID0gc2VsZi5fc2hlbGxjbWQoImdpdCByZW1vdGUgLXYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGRpcm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZGlybmFtZSxlbnY9Z2l0X2VudikKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGdpdHVybCBpbiBsb2NhbHJlbW90ZXMgYW5kIGNvbW1pdCAhPSAnSEVBRCc6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBCdWlsZFNldHVwRXhjZXB0aW9uKCJFeGlzdGluZyBnaXQgcmVwb3NpdG9yeSBhdCAlcywgYnV0IHdpdGggZGlmZmVyZW50IHJlbW90ZXMgKCclcycsIGV4cGVjdGVkICclcycpLiBUb2FzdGVyIHdpbGwgbm90IGNvbnRpbnVlIG91dCBvZiBmZWFyIG9mIGRhbWFnaW5nIHNvbWV0aGluZy4iICUgKGxvY2FsZGlybmFtZSwgIiwgIi5qb2luKGxvY2FscmVtb3Rlcy5zcGxpdCgiXG4iKSksIGdpdHVybCkpCiAgICAgICAgICAgICAgICAgZXhjZXB0IFNoZWxsQ21kRXhjZXB0aW9uOgpAQCAtMTY1LDE4ICsxODEsMTggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaWYgZ2l0dXJsIGluIGNhY2hlZF9sYXllcnM6CiAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyIGdpdC1jb3B5aW5nICVzIHRvICVzIiAlIChjYWNoZWRfbGF5ZXJzW2dpdHVybF0sIGxvY2FsZGlybmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJnaXQgY2xvbmUgXCIlc1wiIFwiJXNcIiIgJSAoY2FjaGVkX2xheWVyc1tnaXR1cmxdLCBsb2NhbGRpcm5hbWUpKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaGVsbGNtZCgiZ2l0IHJlbW90ZSByZW1vdmUgb3JpZ2luIiwgbG9jYWxkaXJuYW1lKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaGVsbGNtZCgiZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIFwiJXNcIiIgJSBnaXR1cmwsIGxvY2FsZGlybmFtZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoImdpdCBjbG9uZSBcIiVzXCIgXCIlc1wiIiAlIChjYWNoZWRfbGF5ZXJzW2dpdHVybF0sIGxvY2FsZGlybmFtZSksZW52PWdpdF9lbnYpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJnaXQgcmVtb3RlIHJlbW92ZSBvcmlnaW4iLCBsb2NhbGRpcm5hbWUsZW52PWdpdF9lbnYpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJnaXQgcmVtb3RlIGFkZCBvcmlnaW4gXCIlc1wiIiAlIGdpdHVybCwgbG9jYWxkaXJuYW1lLGVudj1naXRfZW52KQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiBjbG9uaW5nICVzIGluICVzIiAlIChnaXR1cmwsIGxvY2FsZGlybmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCdnaXQgY2xvbmUgIiVzIiAiJXMiJyAlIChnaXR1cmwsIGxvY2FsZGlybmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCdnaXQgY2xvbmUgIiVzIiAiJXMiJyAlIChnaXR1cmwsIGxvY2FsZGlybmFtZSksZW52PWdpdF9lbnYpCiAKICAgICAgICAgICAgICMgYnJhbmNoIG1hZ2ljIG5hbWUgIkhFQUQiIHdpbGwgaW5oaWJpdCBjaGVja291dAogICAgICAgICAgICAgaWYgY29tbWl0ICE9ICJIRUFEIjoKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImxvY2FsaG9zdGJlY29udHJvbGxlcjogY2hlY2tpbmcgb3V0IGNvbW1pdCAlcyB0byAlcyAiICUgKGNvbW1pdCwgbG9jYWxkaXJuYW1lKSkKICAgICAgICAgICAgICAgICByZWYgPSBjb21taXQgaWYgcmUubWF0Y2goJ15bYS1mQS1GMC05XSskJywgY29tbWl0KSBlbHNlICdvcmlnaW4vJXMnICUgY29tbWl0Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoJ2dpdCBmZXRjaCAtLWFsbCAmJiBnaXQgcmVzZXQgLS1oYXJkICIlcyInICUgcmVmLCBsb2NhbGRpcm5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoJ2dpdCBmZXRjaCAtLWFsbCAmJiBnaXQgcmVzZXQgLS1oYXJkICIlcyInICUgcmVmLCBsb2NhbGRpcm5hbWUsZW52PWdpdF9lbnYpCiAKICAgICAgICAgICAgICMgdGFrZSB0aGUgbG9jYWxkaXJuYW1lIGFzIHBva3kgZGlyIGlmIHdlIGNhbiBmaW5kIHRoZSBvZS1pbml0LWJ1aWxkLWVudgogICAgICAgICAgICAgaWYgc2VsZi5wb2t5ZGlybmFtZSBpcyBOb25lIGFuZCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obG9jYWxkaXJuYW1lLCAib2UtaW5pdC1idWlsZC1lbnYiKSk6CkBAIC0xODYsNyArMjAyLDcgQEAKICAgICAgICAgICAgICAgICAjIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgd29ya2luZyBiaXRiYWtlCiAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnBva3lkaXJuYW1lLCAnYml0YmFrZScpKToKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGNoZWNraW5nIGJpdGJha2UgaW50byB0aGUgcG9reSBkaXJuYW1lICVzICIgJSBzZWxmLnBva3lkaXJuYW1lKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaGVsbGNtZCgiZ2l0IGNsb25lIC1iIFwiJXNcIiBcIiVzXCIgXCIlc1wiICIgJSAoYml0YmFrZS5jb21taXQsIGJpdGJha2UuZ2l0dXJsLCBvcy5wYXRoLmpvaW4oc2VsZi5wb2t5ZGlybmFtZSwgJ2JpdGJha2UnKSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJnaXQgY2xvbmUgLWIgXCIlc1wiIFwiJXNcIiBcIiVzXCIgIiAlIChiaXRiYWtlLmNvbW1pdCwgYml0YmFrZS5naXR1cmwsIG9zLnBhdGguam9pbihzZWxmLnBva3lkaXJuYW1lLCAnYml0YmFrZScpKSxlbnY9Z2l0X2VudikKIAogICAgICAgICAgICAgIyB2ZXJpZnkgb3VyIHJlcG9zaXRvcmllcwogICAgICAgICAgICAgZm9yIG5hbWUsIGRpcnBhdGggaW4gZ2l0cmVwb3NbKGdpdHVybCwgY29tbWl0KV06CkBAIC0xOTgsNiArMjE0LDcgQEAKICAgICAgICAgICAgICAgICBpZiBuYW1lICE9ICJiaXRiYWtlIjoKICAgICAgICAgICAgICAgICAgICAgbGF5ZXJsaXN0LmFwcGVuZChsb2NhbGRpcnBhdGgucnN0cmlwKCIvIikpCiAKKyAgICAgICAgc2VsZi5zZXRDbG9uZVN0YXR1cyhiaXRiYWtlLCdjb21wbGV0ZScsY2xvbmVfdG90YWwsY2xvbmVfY291bnQpCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiBjdXJyZW50IGxheWVyIGxpc3QgJXMgIiAlIHBmb3JtYXQobGF5ZXJsaXN0KSkKIAogICAgICAgICBpZiBzZWxmLnBva3lkaXJuYW1lIGlzIE5vbmUgYW5kIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmJlLnNvdXJjZWRpciwgIm9lLWluaXQtYnVpbGQtZW52IikpOgpAQCAtMzE5LDE2ICszMzYsMzIgQEAKICAgICAgICAgICAgICAgICBjb25mLndyaXRlKCclcz0iJXMiXG4nICUgKHZhci5uYW1lLCB2YXIudmFsdWUpKQogICAgICAgICAgICAgY29uZi53cml0ZSgnSU5IRVJJVCs9InRvYXN0ZXIgYnVpbGRoaXN0b3J5IicpCiAKKyAgICAgICAgIyBjbGVhbiB0aGUgVG9hc3RlciB0byBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICBlbnZfY2xlYW4gPSAndW5zZXQgQkJQQVRIOycgIyBjbGVhbiBCQlBBVEggZm9yIDw9IFlQLTIuNC4wCisKICAgICAgICAgIyBydW4gYml0YmFrZSBzZXJ2ZXIgZnJvbSB0aGUgY2xvbmUKICAgICAgICAgYml0YmFrZSA9IG9zLnBhdGguam9pbihzZWxmLnBva3lkaXJuYW1lLCAnYml0YmFrZScsICdiaW4nLCAnYml0YmFrZScpCiAgICAgICAgIHRvYXN0ZXJsYXllcnMgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsImNvbmYvdG9hc3Rlci1iYmxheWVycy5jb25mIikKLSAgICAgICAgc2VsZi5fc2hlbGxjbWQoJ2Jhc2ggLWMgXCJzb3VyY2UgJXMgJXM7IEJJVEJBS0VfVUk9Imtub3R0eSIgJXMgLS1yZWFkICVzIC0tcmVhZCAlcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlci1vbmx5IC10IHhtbHJwYyAtQiAwLjAuMC4wOjBcIicgJSAob2VfaW5pdCwKKyAgICAgICAgc2VsZi5fc2hlbGxjbWQoJyVzIGJhc2ggLWMgXCJzb3VyY2UgJXMgJXM7IEJJVEJBS0VfVUk9Imtub3R0eSIgJXMgLS1yZWFkICVzIC0tcmVhZCAlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlci1vbmx5IC1CIDAuMC4wLjA6MFwiJyAlIChlbnZfY2xlYW4sIG9lX2luaXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZGlyLCBiaXRiYWtlLCBjb25mcGF0aCwgdG9hc3RlcmxheWVycyksIHNlbGYuYmUuc291cmNlZGlyKQogCiAgICAgICAgICMgcmVhZCBwb3J0IG51bWJlciBmcm9tIGJpdGJha2UubG9jawotICAgICAgICBzZWxmLmJlLmJicG9ydCA9ICIiCisgICAgICAgIHNlbGYuYmUuYmJwb3J0ID0gLTEKICAgICAgICAgYmJsb2NrID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnYml0YmFrZS5sb2NrJykKKyAgICAgICAgIyBhbGxvdyAxMCBzZWNvbmRzIGZvciBiYiBsb2NrIGZpbGUgdG8gYXBwZWFyIGJ1dCBhbHNvIGJlIHBvcHVsYXRlZAorICAgICAgICBmb3IgbG9ja19jaGVjayBpbiByYW5nZSgxMCk6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYmJsb2NrKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImxvY2FsaG9zdGJlY29udHJvbGxlcjogd2FpdGluZyBmb3IgYmJsb2NrIGZpbGUgdG8gYXBwZWFyIikKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIDEwIDwgb3Muc3RhdChiYmxvY2spLnN0X3NpemU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiB3YWl0aW5nIGZvciBiYmxvY2sgY29udGVudCB0byBhcHBlYXIiKQorICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQnVpbGRTZXR1cEV4Y2VwdGlvbigiQ2Fubm90IGZpbmQgYml0YmFrZSBzZXJ2ZXIgbG9jayBmaWxlICclcycuIEFib3J0aW5nLiIgJSBiYmxvY2spCisKICAgICAgICAgd2l0aCBvcGVuKGJibG9jaykgYXMgZnBsb2NrOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnBsb2NrOgogICAgICAgICAgICAgICAgIGlmICI6IiBpbiBsaW5lOgpAQCAtMzM2LDcgKzM2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiBiaXRiYWtlIHBvcnQgJXMiLCBzZWxmLmJlLmJicG9ydCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICBpZiBub3Qgc2VsZi5iZS5iYnBvcnQ6CisgICAgICAgIGlmIC0xID09IHNlbGYuYmUuYmJwb3J0OgogICAgICAgICAgICAgcmFpc2UgQnVpbGRTZXR1cEV4Y2VwdGlvbigibG9jYWxob3N0YmVjb250cm9sbGVyOiBjYW4ndCByZWFkIGJpdGJha2UgcG9ydCBmcm9tICVzIiAlIGJibG9jaykKIAogICAgICAgICBzZWxmLmJlLmJiYWRkcmVzcyA9ICJsb2NhbGhvc3QiCkBAIC0zNTcsMTAgKzM5MCwxMSBAQAogICAgICAgICBsb2cgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICd0b2FzdGVyX3VpLmxvZycpCiAgICAgICAgIGxvY2FsX2JpdGJha2UgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLmdldGVudignQkJCQVNFRElSJykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlJykKLSAgICAgICAgc2VsZi5fc2hlbGxjbWQoWydiYXNoIC1jIFwiKFRPQVNURVJfQlJCRT0iJXMiIEJCU0VSVkVSPSIwLjAuMC4wOi0xIiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnJXMgJXMgLXUgdG9hc3RlcnVpIC0tdG9rZW49IiIgPj4lcyAyPiYxOycKLSAgICAgICAgICAgICAgICAgICAgICAgICdCSVRCQUtFX1VJPSJrbm90dHkiIEJCU0VSVkVSPTAuMC4wLjA6LTEgJXMgLW0pJlwiJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAlIChicmJlLCBsb2NhbF9iaXRiYWtlLCBiYnRhcmdldHMsIGxvZywgYml0YmFrZSldLAorICAgICAgICBzZWxmLl9zaGVsbGNtZChbJyVzIGJhc2ggLWMgXCIoVE9BU1RFUl9CUkJFPSIlcyIgQkJTRVJWRVI9IjAuMC4wLjA6JXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICclcyAlcyAtdSB0b2FzdGVydWkgIC0tcmVhZCAlcyAtLXJlYWQgJXMgLS10b2tlbj0iIiA+PiVzIDI+JjE7JworICAgICAgICAgICAgICAgICAgICAgICAgJ0JJVEJBS0VfVUk9Imtub3R0eSIgQkJTRVJWRVI9MC4wLjAuMDolcyAlcyAtbSkmXCInIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGVudl9jbGVhbiwgYnJiZSwgc2VsZi5iZS5iYnBvcnQsIGxvY2FsX2JpdGJha2UsIGJidGFyZ2V0cywgY29uZnBhdGgsIHRvYXN0ZXJsYXllcnMsIGxvZywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmUuYmJwb3J0LCBiaXRiYWtlLCldLAogICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRkaXIsIG5vd2FpdD1UcnVlKQogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnbG9jYWxob3N0YmVjb250cm9sbGVyOiBCdWlsZCBsYXVuY2hlZCwgZXhpdGluZy4gJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQppbmRleCAyZWQ5OTRmLi41ODIxMTRhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBOb0FyZ3NDb21tYW5kLCBDb21tYW5kRXJyb3IKK2Zyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZCwgQ29tbWFuZEVycm9yCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KIAogZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50IGltcG9ydCBjYWxsX2NvbW1hbmQKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShwYXRoKQogCiAKLWNsYXNzIENvbW1hbmQoTm9BcmdzQ29tbWFuZCk6CitjbGFzcyBDb21tYW5kKEJhc2VDb21tYW5kKToKICAgICBhcmdzID0gIiIKICAgICBoZWxwID0gIlZlcmlmaWVzIHRoYXQgdGhlIGNvbmZpZ3VyZWQgc2V0dGluZ3MgYXJlIHZhbGlkIGFuZCB1c2FibGUsIG9yIHByb21wdHMgdGhlIHVzZXIgdG8gZml4IHRoZSBzZXR0aW5ncy4iCiAKQEAgLTc1LDcgKzc1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsX2NvbW1hbmQoImxvYWRkYXRhIiwgInNldHRpbmdzIikKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlX2NvbmYgPSBvcy5lbnZpcm9uLmdldCgiVEVNUExBVEVDT05GIiwgIiIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICJwb2t5IiBpbiB0ZW1wbGF0ZV9jb25mOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgVG9hc3RlclNldHRpbmcub2JqZWN0cy5maWx0ZXIobmFtZT0nQ1VTVE9NX1hNTF9PTkxZJykuY291bnQoKSA+IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IHVzZSB0aGUgY3VzdG9tIHNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAicG9reSIgaW4gdGVtcGxhdGVfY29uZjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiTG9hZGluZyBwb2t5IGNvbmZpZ3VyYXRpb24iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY29tbWFuZCgibG9hZGRhdGEiLCAicG9reSIpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMTUyLDcgKzE1NSw3IEBACiAKIAogCi0gICAgZGVmIGhhbmRsZV9ub2FyZ3Moc2VsZiwgKipvcHRpb25zKToKKyAgICBkZWYgaGFuZGxlKHNlbGYsICoqb3B0aW9ucyk6CiAgICAgICAgIHJldHZhbCA9IDAKICAgICAgICAgcmV0dmFsICs9IHNlbGYuX3ZlcmlmeV9idWlsZF9lbnZpcm9ubWVudCgpCiAgICAgICAgIHJldHZhbCArPSBzZWxmLl92ZXJpZnlfZGVmYXVsdF9zZXR0aW5ncygpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL3J1bmJ1aWxkcy5weQppbmRleCBkZjExZjlkLi43OTFlNTNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgTm9BcmdzQ29tbWFuZAorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQogCkBAIC0xNiw3ICsxNiw3IEBACiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigidG9hc3RlciIpCiAKIAotY2xhc3MgQ29tbWFuZChOb0FyZ3NDb21tYW5kKToKK2NsYXNzIENvbW1hbmQoQmFzZUNvbW1hbmQpOgogICAgIGFyZ3MgPSAiIgogICAgIGhlbHAgPSAiU2NoZWR1bGVzIGFuZCBleGVjdXRlcyBidWlsZCByZXF1ZXN0cyBhcyBwb3NzaWJsZS4gIlwKICAgICAgICAgICAgIkRvZXMgbm90IHJldHVybiAoaW50ZXJydXB0IHdpdGggQ3RybC1DKSIKQEAgLTc5LDYgKzc5LDE0IEBACiAgICAgICAgICAgICBici5zYXZlKCkKICAgICAgICAgICAgIGJlYy5iZS5sb2NrID0gQnVpbGRFbnZpcm9ubWVudC5MT0NLX0ZSRUUKICAgICAgICAgICAgIGJlYy5iZS5zYXZlKCkKKyAgICAgICAgICAgICMgQ2FuY2VsIHRoZSBwZW5kaW5nIGJ1aWxkIGFuZCByZXBvcnQgdGhlIGV4Y2VwdGlvbiB0byB0aGUgVUkKKyAgICAgICAgICAgIGxvZ19vYmplY3QgPSBMb2dNZXNzYWdlLm9iamVjdHMuY3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkID0gYnIuYnVpbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgPSBMb2dNZXNzYWdlLkVYQ0VQVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJybXNnKQorICAgICAgICAgICAgbG9nX29iamVjdC5zYXZlKCkKKyAgICAgICAgICAgIGJyLmJ1aWxkLm91dGNvbWUgPSBCdWlsZC5GQUlMRUQKKyAgICAgICAgICAgIGJyLmJ1aWxkLnNhdmUoKQogCiAgICAgZGVmIGFyY2hpdmUoc2VsZik6CiAgICAgICAgIGZvciBiciBpbiBCdWlsZFJlcXVlc3Qub2JqZWN0cy5maWx0ZXIoc3RhdGU9QnVpbGRSZXF1ZXN0LlJFUV9BUkNISVZFKToKQEAgLTE2OCw3ICsxNzYsNyBAQAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBsb2dnZXIud2FybigicnVuYnVpbGRzOiBzY2hlZHVsZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQogCi0gICAgZGVmIGhhbmRsZV9ub2FyZ3Moc2VsZiwgKipvcHRpb25zKToKKyAgICBkZWYgaGFuZGxlKHNlbGYsICoqb3B0aW9ucyk6CiAgICAgICAgIHBpZGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgiQlVJTERESVIiLCAiLiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5ydW5idWlsZHMucGlkIikKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL2N1c3RvbV90b2FzdGVyX2FwcGVuZC5zaF9zYW1wbGUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvY3VzdG9tX3RvYXN0ZXJfYXBwZW5kLnNoX3NhbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44YzRlMTYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL2N1c3RvbV90b2FzdGVyX2FwcGVuZC5zaF9zYW1wbGUKQEAgLTAsMCArMSw0OSBAQAorIyEvYmluL2Jhc2gKKworIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisjIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworIyBUaGlzIGlzIHNhbXBsZSBzb2Z0d2FyZS4gUmVuYW1lIGl0IHRvICdjdXN0b21fdG9hc3Rlcl9hcHBlbmQuc2gnIGFuZAorIyBlbmFibGUgdGhlIHJlc3BlY3RpdmUgY3VzdG9tIHNlY3Rpb25zLgorCit2ZXJib3NlPTAKK2lmIFsgJHZlcmJvc2UgLW5lIDAgXSA7IHRoZW4KKyAgICBlY2hvICJjdXN0b21fdG9hc3Rlcl9hcHBlbmQuc2g6JCoiCitmaQorCitpZiBbICJ0b2FzdGVyX3ByZXBlbmQiID0gIiQxIiBdIDsgdGhlbgorICAgIGVjaG8gIkFkZCBjdXN0b20gYWN0aW9ucyBoZXJlIHdoZW4gVG9hc3RlciBzY3JpcHQgaXMgc3RhcnRlZCIKK2ZpCisKK2lmIFsgIndlYl9zdGFydF9wb3N0cGVuZCIgPSAiJDEiIF0gOyB0aGVuCisgICAgZWNobyAiQWRkIGN1c3RvbSBhY3Rpb25zIGhlcmUgYWZ0ZXIgVG9hc3RlciB3ZWIgc2VydmljZSBpcyBzdGFydGVkIgorZmkKKworaWYgWyAid2ViX3N0b3BfcG9zdHBlbmQiID0gIiQxIiBdIDsgdGhlbgorICAgIGVjaG8gIkFkZCBjdXN0b20gYWN0aW9ucyBoZXJlIGFmdGVyIFRvYXN0ZXIgd2ViIHNlcnZpY2UgaXMgc3RvcHBlZCIKK2ZpCisKK2lmIFsgIm5vd2ViX3N0YXJ0X3Bvc3RwZW5kIiA9ICIkMSIgXSA7IHRoZW4KKyAgICBlY2hvICJBZGQgY3VzdG9tIGFjdGlvbnMgaGVyZSBhZnRlciBUb2FzdGVyIChubyB3ZWIpIHNlcnZpY2UgaXMgc3RhcnRlZCIKK2ZpCisKK2lmIFsgIm5vd2ViX3N0b3BfcG9zdHBlbmQiID0gIiQxIiBdIDsgdGhlbgorICAgIGVjaG8gIkFkZCBjdXN0b20gYWN0aW9ucyBoZXJlIGFmdGVyIFRvYXN0ZXIgKG5vIHdlYikgc2VydmljZSBpcyBzdG9wcGVkIgorZmkKKworaWYgWyAidG9hc3Rlcl9wb3N0cGVuZCIgPSAiJDEiIF0gOyB0aGVuCisgICAgZWNobyAiQWRkIGN1c3RvbSBhY3Rpb25zIGhlcmUgYWZ0ZXIgVG9hc3RlciBzY3JpcHQgaXMgZG9uZSIKK2ZpCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbAppbmRleCA2NmMzNTk1Li4wMDcyMGMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCkBAIC04LDkgKzgsOSBAQAogCiAgIDwhLS0gQml0YmFrZSB2ZXJzaW9ucyB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBtZXRhZGF0YSByZWxlYXNlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5weXJvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPjEuMzQ8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS4zNjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIyIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5IRUFEPC9maWVsZD4KQEAgLTI1LDExICsyNSwxMSBAQAogCiAgIDwhLS0gUmVsZWFzZXMgYXZhaWxhYmxlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnB5cm88L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRlc2NyaXB0aW9uIj5PcGVuZW1iZWRkZWQgUHlybzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRlc2NyaXB0aW9uIj5PcGVuZW1iZWRkZWQgUm9ja288L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5iaXRiYWtldmVyc2lvbiIgbmFtZT0iYml0YmFrZV92ZXJzaW9uIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+cHlybzwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj1cImh0dHA6Ly9jZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvbG9nLz9oPXB5cm9cIiZndDtPcGVuRW1iZWRkZWQgUHlybyZsdDsvYSZndDsgYnJhbmNoLjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9cm9ja29cIiZndDtPcGVuRW1iZWRkZWQgUm9ja28mbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIyIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5sb2NhbDwvZmllbGQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKaW5kZXggNzgyN2FhYy4uMmYzOWQ3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbApAQCAtOCw5ICs4LDkgQEAKIAogICA8IS0tIEJpdGJha2UgdmVyc2lvbnMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgbWV0YWRhdGEgcmVsZWFzZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cHlybzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCI+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5weXJvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5iaXRiYWtlPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgpAQCAtMjksMTEgKzI5LDExIEBACiAKICAgPCEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cHlybzwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPllvY3RvIFByb2plY3QgMi4zICJQeXJvIjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRlc2NyaXB0aW9uIj5Zb2N0byBQcm9qZWN0IDIuNCAiUm9ja28iPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnB5cm88L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPXB5cm8iJmd0O1lvY3RvIFByb2plY3QgUHlybyBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1yb2NrbyImZ3Q7WW9jdG8gUHJvamVjdCBSb2NrbyBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPmxvY2FsPC9maWVsZD4KQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiPjE8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSI+MDwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjE8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+cHlybzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YTwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjIiPgpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5weXJvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXBva3k8L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI1Ij4KQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiPjM8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSI+MDwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjE8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+cHlybzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS15b2N0by1ic3A8L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI4Ij4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weQppbmRleCA0ODI5MDhkLi5lZmM2YjNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcy9sc3VwZGF0ZXMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5CkBAIC00LDcgKzQsNyBAQAogIwogIyBCaXRCYWtlIFRvYXN0ZXIgSW1wbGVtZW50YXRpb24KICMKLSMgQ29weXJpZ2h0IChDKSAyMDE2ICAgICAgICBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyAgIEludGVsIENvcnBvcmF0aW9uCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC0xOSwxMCArMTksMTIgQEAKICMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KIAotZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IE5vQXJnc0NvbW1hbmQKK2Zyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZAogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyU291cmNlLCBMYXllciwgUmVsZWFzZSwgTGF5ZXJfVmVyc2lvbgogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllclZlcnNpb25EZXBlbmRlbmN5LCBNYWNoaW5lLCBSZWNpcGUKK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgRGlzdHJvCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFRvYXN0ZXJTZXR0aW5nCiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtNTYsNyArNTgsNyBAQAogICAgICAgICBzZWxmLnNpZ25hbCA9IEZhbHNlCiAKIAotY2xhc3MgQ29tbWFuZChOb0FyZ3NDb21tYW5kKToKK2NsYXNzIENvbW1hbmQoQmFzZUNvbW1hbmQpOgogICAgIGFyZ3MgPSAiIgogICAgIGhlbHAgPSAiVXBkYXRlcyBsb2NhbGx5IGNhY2hlZCBpbmZvcm1hdGlvbiBmcm9tIGEgbGF5ZXJpbmRleCBzZXJ2ZXIiCiAKQEAgLTgwLDYgKzgyLDggQEAKICAgICAgICAgb3Muc3lzdGVtKCdzZXR0ZXJtIC1jdXJzb3Igb2ZmJykKIAogICAgICAgICBzZWxmLmFwaXVybCA9IERFRkFVTFRfTEFZRVJJTkRFWF9TRVJWRVIKKyAgICAgICAgaWYgVG9hc3RlclNldHRpbmcub2JqZWN0cy5maWx0ZXIobmFtZT0nQ1VTVE9NX0xBWUVSSU5ERVhfU0VSVkVSJykuY291bnQoKSA9PSAxOgorICAgICAgICAgICAgc2VsZi5hcGl1cmwgPSBUb2FzdGVyU2V0dGluZy5vYmplY3RzLmdldChuYW1lID0gJ0NVU1RPTV9MQVlFUklOREVYX1NFUlZFUicpLnZhbHVlCiAKICAgICAgICAgYXNzZXJ0IHNlbGYuYXBpdXJsIGlzIG5vdCBOb25lCiAgICAgICAgIHRyeToKQEAgLTkxLDcgKzk1LDkgQEAKIAogICAgICAgICBwcm94eV9zZXR0aW5ncyA9IG9zLmVudmlyb24uZ2V0KCJodHRwX3Byb3h5IiwgTm9uZSkKIAotICAgICAgICBkZWYgX2dldF9qc29uX3Jlc3BvbnNlKGFwaXVybD1ERUZBVUxUX0xBWUVSSU5ERVhfU0VSVkVSKToKKyAgICAgICAgZGVmIF9nZXRfanNvbl9yZXNwb25zZShhcGl1cmw9Tm9uZSk6CisgICAgICAgICAgICBpZiBOb25lID09IGFwaXVybDoKKyAgICAgICAgICAgICAgICBhcGl1cmw9c2VsZi5hcGl1cmwKICAgICAgICAgICAgIGh0dHBfcHJvZ3Jlc3MgPSBTcGlubmVyKCkKICAgICAgICAgICAgIGh0dHBfcHJvZ3Jlc3Muc3RhcnQoKQogCkBAIC0yNTEsNiArMjU3LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kc19vbj1sdmQpCiAgICAgICAgICAgICBzZWxmLm1pbmlfcHJvZ3Jlc3MoIkxheWVyIHZlcnNpb24gZGVwZW5kZW5jaWVzIiwgaSwgdG90YWwpCiAKKyAgICAgICAgIyB1cGRhdGUgRGlzdHJvcworICAgICAgICBsb2dnZXIuaW5mbygiRmV0Y2hpbmcgZGlzdHJvIGluZm9ybWF0aW9uIikKKyAgICAgICAgZGlzdHJvc19pbmZvID0gX2dldF9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgYXBpbGlua3NbJ2Rpc3Ryb3MnXSArICI/ZmlsdGVyPWxheWVyYnJhbmNoX19icmFuY2hfX25hbWU6JXMiICUKKyAgICAgICAgICAgICJPUiIuam9pbih3aGl0ZWxpc3RfYnJhbmNoX25hbWVzKSkKKworICAgICAgICB0b3RhbCA9IGxlbihkaXN0cm9zX2luZm8pCisgICAgICAgIGZvciBpLCBkaSBpbiBlbnVtZXJhdGUoZGlzdHJvc19pbmZvKToKKyAgICAgICAgICAgIGRpc3RybywgY3JlYXRlZCA9IERpc3Ryby5vYmplY3RzLmdldF9vcl9jcmVhdGUoCisgICAgICAgICAgICAgICAgbmFtZT1kaVsnbmFtZSddLAorICAgICAgICAgICAgICAgIGxheWVyX3ZlcnNpb249TGF5ZXJfVmVyc2lvbi5vYmplY3RzLmdldCgKKyAgICAgICAgICAgICAgICAgICAgcGs9bGlfbGF5ZXJfYnJhbmNoX2lkX3RvX3RvYXN0ZXJfbHZfaWRbZGlbJ2xheWVyYnJhbmNoJ11dKSkKKyAgICAgICAgICAgIGRpc3Ryby51cF9kYXRlID0gZGlbJ3VwZGF0ZWQnXQorICAgICAgICAgICAgZGlzdHJvLm5hbWUgPSBkaVsnbmFtZSddCisgICAgICAgICAgICBkaXN0cm8uZGVzY3JpcHRpb24gPSBkaVsnZGVzY3JpcHRpb24nXQorICAgICAgICAgICAgZGlzdHJvLnNhdmUoKQorICAgICAgICAgICAgc2VsZi5taW5pX3Byb2dyZXNzKCJkaXN0cm9zIiwgaSwgdG90YWwpCisKICAgICAgICAgIyB1cGRhdGUgbWFjaGluZXMKICAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoaW5nIG1hY2hpbmUgaW5mb3JtYXRpb24iKQogICAgICAgICBtYWNoaW5lc19pbmZvID0gX2dldF9qc29uX3Jlc3BvbnNlKApAQCAtMzA5LDUgKzMzMyw1IEBACiAKICAgICAgICAgb3Muc3lzdGVtKCdzZXR0ZXJtIC1jdXJzb3Igb24nKQogCi0gICAgZGVmIGhhbmRsZV9ub2FyZ3Moc2VsZiwgKipvcHRpb25zKToKKyAgICBkZWYgaGFuZGxlKHNlbGYsICoqb3B0aW9ucyk6CiAgICAgICAgIHNlbGYudXBkYXRlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTZfY2xvbmVfcHJvZ3Jlc3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE2X2Nsb25lX3Byb2dyZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNDAyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE2X2Nsb25lX3Byb2dyZXNzLnB5CkBAIC0wLDAgKzEsMjQgQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKKworZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMsIG1vZGVscworCitjbGFzcyBNaWdyYXRpb24obWlncmF0aW9ucy5NaWdyYXRpb24pOgorCisgICAgZGVwZW5kZW5jaWVzID0gWworICAgICAgICAoJ29ybScsICcwMDE1X2xheWVyX2xvY2FsX3NvdXJjZV9kaXInKSwKKyAgICBdCisKKyAgICBvcGVyYXRpb25zID0gWworICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAorICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnVpbGQnLAorICAgICAgICAgICAgbmFtZT0ncmVwb3NfY2xvbmVkJywKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0xKSwKKyAgICAgICAgKSwKKyAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKKyAgICAgICAgICAgIG1vZGVsX25hbWU9J2J1aWxkJywKKyAgICAgICAgICAgIG5hbWU9J3JlcG9zX3RvX2Nsb25lJywKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0xKSwgIyAoZGVmYXVsdCBvZmYpCisgICAgICAgICksCisgICAgXQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE3X2Rpc3Ryb19jbG9uZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYzU5MDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE3X2Rpc3Ryb19jbG9uZS5weQpAQCAtMCwwICsxLDI1IEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCisKK2Zyb20gZGphbmdvLmRiIGltcG9ydCBtaWdyYXRpb25zLCBtb2RlbHMKKworY2xhc3MgTWlncmF0aW9uKG1pZ3JhdGlvbnMuTWlncmF0aW9uKToKKworICAgIGRlcGVuZGVuY2llcyA9IFsKKyAgICAgICAgKCdvcm0nLCAnMDAxNl9jbG9uZV9wcm9ncmVzcycpLAorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBbCisgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCisgICAgICAgICAgICBuYW1lPSdEaXN0cm8nLAorICAgICAgICAgICAgZmllbGRzPVsKKyAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAorICAgICAgICAgICAgICAgICgndXBfaWQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSksCisgICAgICAgICAgICAgICAgKCd1cF9kYXRlJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoZGVmYXVsdD1Ob25lLCBudWxsPVRydWUpKSwKKyAgICAgICAgICAgICAgICAoJ25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KSksCisgICAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCisgICAgICAgICAgICBdLAorICAgICAgICApLAorICAgIF0KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkKaW5kZXggYTQ5ZjlhNC4uM2E3ZGZmOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbW9kZWxzLnB5CkBAIC0zMjEsNiArMzIxLDIyIEBACiAKICAgICAgICAgcmV0dXJuIHF1ZXJ5c2V0CiAKKyAgICBkZWYgZ2V0X2F2YWlsYWJsZV9kaXN0cm9zKHNlbGYpOgorICAgICAgICAiIiIgUmV0dXJucyBRdWVyeVNldCBvZiBhbGwgRGlzdHJvcyB3aGljaCBhcmUgcHJvdmlkZWQgYnkgdGhlCisgICAgICAgIExheWVycyBjdXJyZW50bHkgYWRkZWQgdG8gdGhlIFByb2plY3QgIiIiCisgICAgICAgIHF1ZXJ5c2V0ID0gRGlzdHJvLm9iamVjdHMuZmlsdGVyKAorICAgICAgICAgICAgbGF5ZXJfdmVyc2lvbl9faW49c2VsZi5nZXRfcHJvamVjdF9sYXllcl92ZXJzaW9ucygpKQorCisgICAgICAgIHJldHVybiBxdWVyeXNldAorCisgICAgZGVmIGdldF9hbGxfY29tcGF0aWJsZV9kaXN0cm9zKHNlbGYpOgorICAgICAgICAiIiIgUmV0dXJucyBRdWVyeVNldCBvZiBhbGwgdGhlIGNvbXBhdGlibGUgV2luZCBSaXZlciBkaXN0cm9zIGF2YWlsYWJsZSB0byB0aGUKKyAgICAgICAgcHJvamVjdCBpbmNsdWRpbmcgb25lcyBmcm9tIExheWVycyBub3QgY3VycmVudGx5IGFkZGVkICIiIgorICAgICAgICBxdWVyeXNldCA9IERpc3Ryby5vYmplY3RzLmZpbHRlcigKKyAgICAgICAgICAgIGxheWVyX3ZlcnNpb25fX2luPXNlbGYuZ2V0X2FsbF9jb21wYXRpYmxlX2xheWVyX3ZlcnNpb25zKCkpCisKKyAgICAgICAgcmV0dXJuIHF1ZXJ5c2V0CisKICAgICBkZWYgZ2V0X2F2YWlsYWJsZV9yZWNpcGVzKHNlbGYpOgogICAgICAgICAiIiIgUmV0dXJucyBRdWVyeVNldCBvZiBhbGwgdGhlIHJlY2lwZXMgdGhhdCBhcmUgcHJvdmlkZWQgYnkgbGF5ZXJzCiAgICAgICAgIGFkZGVkIHRvIHRoaXMgcHJvamVjdCAiIiIKQEAgLTQzNSw3ICs0NTEsMTMgQEAKICAgICByZWNpcGVzX3RvX3BhcnNlID0gbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTEpCiAKICAgICAjIG51bWJlciBvZiByZWNpcGVzIHBhcnNlZCBzbyBmYXIgZm9yIHRoaXMgYnVpbGQKLSAgICByZWNpcGVzX3BhcnNlZCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wKQorICAgIHJlY2lwZXNfcGFyc2VkID0gbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTEpCisKKyAgICAjIG51bWJlciBvZiByZXBvcyB0byBjbG9uZSBmb3IgdGhpcyBidWlsZAorICAgIHJlcG9zX3RvX2Nsb25lID0gbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTEpCisKKyAgICAjIG51bWJlciBvZiByZXBvcyBjbG9uZWQgc28gZmFyIGZvciB0aGlzIGJ1aWxkIChkZWZhdWx0IG9mZikKKyAgICByZXBvc19jbG9uZWQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MSkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgZ2V0X3JlY2VudChwcm9qZWN0PU5vbmUpOgpAQCAtNDg2LDcgKzUwOCw3IEBACiAgICAgICAgIHRmID0gVGFzay5vYmplY3RzLmZpbHRlcihidWlsZCA9IHNlbGYpCiAgICAgICAgIHRmYyA9IHRmLmNvdW50KCkKICAgICAgICAgaWYgdGZjID4gMDoKLSAgICAgICAgICAgIGNvbXBsZXRlcGVyID0gdGYuZXhjbHVkZShvcmRlcl9faXNudWxsPVRydWUpLmNvdW50KCkqMTAwIC8vIHRmYworICAgICAgICAgICAgY29tcGxldGVwZXIgPSB0Zi5leGNsdWRlKG91dGNvbWU9VGFzay5PVVRDT01FX05BKS5jb3VudCgpKjEwMCAvLyB0ZmMKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvbXBsZXRlcGVyID0gMAogICAgICAgICByZXR1cm4gY29tcGxldGVwZXIKQEAgLTY2Nyw2ICs2ODksMTMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVmIGlzX2Nsb25pbmcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUcnVlIGlmIHRoZSBidWlsZCBpcyBzdGlsbCBjbG9uaW5nIHJlcG9zCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5vdXRjb21lID09IEJ1aWxkLklOX1BST0dSRVNTIGFuZCBcCisgICAgICAgICAgICBzZWxmLnJlcG9zX2Nsb25lZCA8IHNlbGYucmVwb3NfdG9fY2xvbmUKKwogICAgIGRlZiBpc19wYXJzaW5nKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgVHJ1ZSBpZiB0aGUgYnVpbGQgaXMgc3RpbGwgcGFyc2luZyByZWNpcGVzCkBAIC02ODAsMTAgKzcwOSwxMSBAQAogICAgICAgICB0YXNrcy4KIAogICAgICAgICBOb3RlIHRoYXQgdGhlIG1lY2hhbmlzbSBmb3IgdGVzdGluZyB3aGV0aGVyIGEgVGFzayBpcyAiZG9uZSIgaXMgd2hldGhlcgotICAgICAgICBpdHMgb3JkZXIgZmllbGQgaXMgc2V0LCBhcyBwZXIgdGhlIGNvbXBsZXRlcGVyKCkgbWV0aG9kLgorICAgICAgICBpdHMgb3V0Y29tZSBmaWVsZCBpcyBzZXQsIGFzIHBlciB0aGUgY29tcGxldGVwZXIoKSBtZXRob2QuCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5vdXRjb21lID09IEJ1aWxkLklOX1BST0dSRVNTIGFuZCBcCi0gICAgICAgICAgICBzZWxmLnRhc2tfYnVpbGQuZmlsdGVyKG9yZGVyX19pc251bGw9RmFsc2UpLmNvdW50KCkgPT0gMAorICAgICAgICAgICAgc2VsZi50YXNrX2J1aWxkLmV4Y2x1ZGUob3V0Y29tZT1UYXNrLk9VVENPTUVfTkEpLmNvdW50KCkgPT0gMAorCiAKICAgICBkZWYgZ2V0X3N0YXRlKHNlbGYpOgogICAgICAgICAiIiIKQEAgLTY5OCw2ICs3MjgsOCBAQAogICAgICAgICAgICAgcmV0dXJuICdDYW5jZWxsaW5nJzsKICAgICAgICAgZWxpZiBzZWxmLmlzX3F1ZXVlZCgpOgogICAgICAgICAgICAgcmV0dXJuICdRdWV1ZWQnCisgICAgICAgIGVsaWYgc2VsZi5pc19jbG9uaW5nKCk6CisgICAgICAgICAgICByZXR1cm4gJ0Nsb25pbmcnCiAgICAgICAgIGVsaWYgc2VsZi5pc19wYXJzaW5nKCk6CiAgICAgICAgICAgICByZXR1cm4gJ1BhcnNpbmcnCiAgICAgICAgIGVsaWYgc2VsZi5pc19zdGFydGluZygpOgpAQCAtMTQ4NSwxMiArMTUxNywxMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlX3VybF9wYXRoKHNlbGYubGF5ZXIudmNzX3dlYl90cmVlX2Jhc2VfdXJsLCAnJykKIAogICAgIGRlZiBnZXRfdmNzX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jb21taXQgaXMgbm90IE5vbmUgYW5kIGxlbihzZWxmLmNvbW1pdCkgPiAwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWl0CiAgICAgICAgIGlmIHNlbGYuYnJhbmNoIGlzIG5vdCBOb25lIGFuZCBsZW4oc2VsZi5icmFuY2gpID4gMDoKICAgICAgICAgICAgIHJldHVybiBzZWxmLmJyYW5jaAogICAgICAgICBpZiBzZWxmLnJlbGVhc2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWxlYXNlLm5hbWUKLSAgICAgICAgaWYgc2VsZi5jb21taXQgaXMgbm90IE5vbmUgYW5kIGxlbihzZWxmLmNvbW1pdCkgPiAwOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWl0CiAgICAgICAgIHJldHVybiAnTi9BJwogCiAgICAgZGVmIGdldF9kZXRhaWxzcGFnZV91cmwoc2VsZiwgcHJvamVjdF9pZD1Ob25lKToKQEAgLTE2MjYsNyArMTY1OCw3IEBACiAKICAgICBkZWYgZ2V0X2Jhc2VfcmVjaXBlX2ZpbGUoc2VsZik6CiAgICAgICAgICIiIkdldCB0aGUgYmFzZSByZWNpcGUgZmlsZSBwYXRoIGlmIGl0IGV4aXN0cyBvbiB0aGUgZmlsZSBzeXN0ZW0iIiIKLSAgICAgICAgcGF0aF9zY2hlbWFfb25lID0gIiVzLyVzIiAlIChzZWxmLmJhc2VfcmVjaXBlLmxheWVyX3ZlcnNpb24uZGlycGF0aCwKKyAgICAgICAgcGF0aF9zY2hlbWFfb25lID0gIiVzLyVzIiAlIChzZWxmLmJhc2VfcmVjaXBlLmxheWVyX3ZlcnNpb24ubG9jYWxfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJhc2VfcmVjaXBlLmZpbGVfcGF0aCkKIAogICAgICAgICBwYXRoX3NjaGVtYV90d28gPSBzZWxmLmJhc2VfcmVjaXBlLmZpbGVfcGF0aApAQCAtMTc4MCw2ICsxODEyLDIxIEBACiAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICBsb2dnZXIuaW5mbygiU3RvcHBpbmcgZXhpc3RpbmcgcnVuYnVpbGRzOiBubyBjdXJyZW50IHByb2Nlc3MgZm91bmQiKQogCitjbGFzcyBEaXN0cm8obW9kZWxzLk1vZGVsKToKKyAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbIm5hbWUiLCAiZGVzY3JpcHRpb24iLCAibGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWUiXQorICAgIHVwX2RhdGUgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsID0gVHJ1ZSwgZGVmYXVsdCA9IE5vbmUpCisKKyAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nKQorICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KQorICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKKworICAgIGRlZiBnZXRfdmNzX2Rpc3Ryb19maWxlX2xpbmtfdXJsKHNlbGYpOgorICAgICAgICBwYXRoID0gc2VsZi5uYW1lKycuY29uZicKKyAgICAgICAgcmV0dXJuIHNlbGYubGF5ZXJfdmVyc2lvbi5nZXRfdmNzX2ZpbGVfbGlua191cmwocGF0aCkKKworICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJEaXN0cm8gIiArIHNlbGYubmFtZSArICIoIiArIHNlbGYuZGVzY3JpcHRpb24gKyAiKSIKKwogZGphbmdvLmRiLm1vZGVscy5zaWduYWxzLnBvc3Rfc2F2ZS5jb25uZWN0KGludmFsaWRhdGVfY2FjaGUpCiBkamFuZ28uZGIubW9kZWxzLnNpZ25hbHMucG9zdF9kZWxldGUuY29ubmVjdChpbnZhbGlkYXRlX2NhY2hlKQogZGphbmdvLmRiLm1vZGVscy5zaWduYWxzLm0ybV9jaGFuZ2VkLmNvbm5lY3QoaW52YWxpZGF0ZV9jYWNoZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkKaW5kZXggMWE2NTA3Yy4uYWI2YmE2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkKQEAgLTE4LDYgKzE4LDcgQEAKIAogIyBQbGVhc2UgcnVuIGZsYWtlOCBvbiB0aGlzIGZpbGUgYmVmb3JlIHNlbmRpbmcgcGF0Y2hlcwogCitpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBqc29uCkBAIC0yOCw3ICsyOSw3IEBACiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFJlY2lwZSwgQ3VzdG9tSW1hZ2VSZWNpcGUsIEN1c3RvbUltYWdlUGFja2FnZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllciwgVGFyZ2V0LCBQYWNrYWdlLCBQYWNrYWdlX0RlcGVuZGVuY3kKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdFZhcmlhYmxlCi1mcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZFJlcXVlc3QKK2Zyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkUmVxdWVzdCwgQnVpbGRFbnZpcm9ubWVudAogZnJvbSBibGRjb250cm9sIGltcG9ydCBiYmNvbnRyb2xsZXIKIAogZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlLCBKc29uUmVzcG9uc2UKQEAgLTUwOSw2ICs1MTAsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRwYWNrYWdlLnBhY2thZ2UubmFtZSwgZSkpCiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICAjIHByZS1jcmVhdGUgbGF5ZXIgZGlyZWN0b3J5IHN0cnVjdHVyZSwgc28gdGhhdCBvdGhlciBidWlsZHMKKyAgICAgICAgIyBhcmUgbm90IGJsb2NrZWQgYnkgdGhpcyBuZXcgcmVjaXBlIGRlcGVuZGVjeQorICAgICAgICAjIE5PVEU6IHRoaXMgaXMgcGFyYWxsZWwgY29kZSB0byAnbG9jYWxob3N0YmVjb250cm9sbGVyLnB5JworICAgICAgICBiZSA9IEJ1aWxkRW52aXJvbm1lbnQub2JqZWN0cy5hbGwoKVswXQorICAgICAgICBsYXllcnBhdGggPSBvcy5wYXRoLmpvaW4oYmUuYnVpbGRkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21JbWFnZVJlY2lwZS5MQVlFUl9OQU1FKQorICAgICAgICBmb3IgbmFtZSBpbiAoImNvbmYiLCAicmVjaXBlcyIpOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihsYXllcnBhdGgsIG5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhwYXRoKQorICAgICAgICAjIHByZS1jcmVhdGUgbGF5ZXIuY29uZgorICAgICAgICBjb25maWcgPSBvcy5wYXRoLmpvaW4obGF5ZXJwYXRoLCAiY29uZiIsICJsYXllci5jb25mIikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGNvbmZpZyk6CisgICAgICAgICAgICB3aXRoIG9wZW4oY29uZmlnLCAidyIpIGFzIGNvbmY6CisgICAgICAgICAgICAgICAgY29uZi53cml0ZSgnQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iXG5CQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLyouYmIiXG4nKQorICAgICAgICAjIHByZS1jcmVhdGUgbmV3IGltYWdlJ3MgcmVjaXBlIGZpbGUKKyAgICAgICAgcmVjaXBlX3BhdGggPSBvcy5wYXRoLmpvaW4obGF5ZXJwYXRoLCAicmVjaXBlcyIsICIlcy5iYiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUubmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHJlY2lwZV9wYXRoLCAidyIpIGFzIHJlY2lwZWY6CisgICAgICAgICAgICByZWNpcGVmLndyaXRlKHJlY2lwZS5nZW5lcmF0ZV9yZWNpcGVfZmlsZV9jb250ZW50cygpKQorCiAgICAgICAgIHJldHVybiBKc29uUmVzcG9uc2UoCiAgICAgICAgICAgICB7ImVycm9yIjogIm9rIiwKICAgICAgICAgICAgICAicGFja2FnZXMiOiByZWNpcGUuZ2V0X2FsbF9wYWNrYWdlcygpLmNvdW50KCksCkBAIC03NTIsNyArNzc0LDYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfcmVzcG9uc2UoIlBhY2thZ2UgJXMgbm90IGZvdW5kIGluIGV4Y2x1ZGVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJ1dCB3YXMgaW4gaW5jbHVkZWQgbGlzdCIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLm5hbWUpCi0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlY2lwZS5hcHBlbmRzX3NldC5hZGQocGFja2FnZSkKICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgcGFja2FnZSBpcyBub3QgaW4gdGhlIGV4Y2x1ZGVzIHNldApAQCAtNzYwLDI2ICs3ODEsMjcgQEAKICAgICAgICAgICAgICAgICByZWNpcGUuZXhjbHVkZXNfc2V0LnJlbW92ZShwYWNrYWdlKQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICMgQWRkIHRoZSBkZXBlbmRlbmNpZXMgd2UgdGhpbmsgd2lsbCBiZSBhZGRlZCB0byB0aGUgcmVjaXBlCi0gICAgICAgICAgICAjIGFzIGEgcmVzdWx0IG9mIGFwcGVuZGluZyB0aGlzIHBhY2thZ2UuCi0gICAgICAgICAgICAjIFRPRE8gdGhpcyBzaG91bGQgcmVjdXJzZSBkb3duIHRoZSBlbnRpcmUgZGVwcyB0cmVlCi0gICAgICAgICAgICBmb3IgZGVwIGluIHBhY2thZ2UucGFja2FnZV9kZXBlbmRlbmNpZXNfc291cmNlLmFsbF9kZXBlbmRzKCk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjdXN0X3BhY2thZ2UgPSBDdXN0b21JbWFnZVBhY2thZ2Uub2JqZWN0cy5nZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWRlcC5kZXBlbmRzX29uLm5hbWUpCiAKLSAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmluY2x1ZGVzX3NldC5hZGQoY3VzdF9wYWNrYWdlKQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdoZW4gYWRkaW5nIHRoZSBwcmUtcmVxdWlzaXRlIHBhY2thZ2UsIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgc3VyZSBpdCdzIG5vdCBpbiB0aGUgZXhjbHVkZWQgbGlzdCBmcm9tIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcHJpb3IgcmVtb3ZhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5leGNsdWRlc19zZXQucmVtb3ZlKGN1c3RfcGFja2FnZSkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHBhY2thZ2UuRG9lc05vdEV4aXN0OgotICAgICAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBjYXJlIGlmIHRoZSBwYWNrYWdlIGhhZCBuZXZlciBiZWVuIGV4Y2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQ291bGQgbm90IGFkZCBwYWNrYWdlJ3Mgc3VnZ2VzdGVkIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIHRvIHRoZSBsaXN0IikKKyAgICAgICAgIyBBZGQgdGhlIGRlcGVuZGVuY2llcyB3ZSB0aGluayB3aWxsIGJlIGFkZGVkIHRvIHRoZSByZWNpcGUKKyAgICAgICAgIyBhcyBhIHJlc3VsdCBvZiBhcHBlbmRpbmcgdGhpcyBwYWNrYWdlLgorICAgICAgICAjIFRPRE8gdGhpcyBzaG91bGQgcmVjdXJzZSBkb3duIHRoZSBlbnRpcmUgZGVwcyB0cmVlCisgICAgICAgIGZvciBkZXAgaW4gcGFja2FnZS5wYWNrYWdlX2RlcGVuZGVuY2llc19zb3VyY2UuYWxsX2RlcGVuZHMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjdXN0X3BhY2thZ2UgPSBDdXN0b21JbWFnZVBhY2thZ2Uub2JqZWN0cy5nZXQoCisgICAgICAgICAgICAgICAgICAgIG5hbWU9ZGVwLmRlcGVuZHNfb24ubmFtZSkKKworICAgICAgICAgICAgICAgIHJlY2lwZS5pbmNsdWRlc19zZXQuYWRkKGN1c3RfcGFja2FnZSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgV2hlbiBhZGRpbmcgdGhlIHByZS1yZXF1aXNpdGUgcGFja2FnZSwgbWFrZQorICAgICAgICAgICAgICAgICAgICAjIHN1cmUgaXQncyBub3QgaW4gdGhlIGV4Y2x1ZGVkIGxpc3QgZnJvbSBhCisgICAgICAgICAgICAgICAgICAgICMgcHJpb3IgcmVtb3ZhbC4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmV4Y2x1ZGVzX3NldC5yZW1vdmUoY3VzdF9wYWNrYWdlKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBwYWNrYWdlLkRvZXNOb3RFeGlzdDoKKyAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBjYXJlIGlmIHRoZSBwYWNrYWdlIGhhZCBuZXZlciBiZWVuIGV4Y2x1ZGVkCisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQ291bGQgbm90IGFkZCBwYWNrYWdlJ3Mgc3VnZ2VzdGVkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMgdG8gdGhlIGxpc3QiKQogICAgICAgICByZXR1cm4gSnNvblJlc3BvbnNlKHsiZXJyb3IiOiAib2sifSkKIAogICAgIGRlZiBkZWxldGUoc2VsZiwgcmVxdWVzdCwgKmFyZ3MsICoqa3dhcmdzKToKQEAgLTc5NywyMiArODE5LDI0IEBACiAgICAgICAgICAgICAgICAgcmVjaXBlLmV4Y2x1ZGVzX3NldC5hZGQocGFja2FnZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVjaXBlLmFwcGVuZHNfc2V0LnJlbW92ZShwYWNrYWdlKQotICAgICAgICAgICAgICAgIGFsbF9jdXJyZW50X3BhY2thZ2VzID0gcmVjaXBlLmdldF9hbGxfcGFja2FnZXMoKQogCi0gICAgICAgICAgICAgICAgcmV2ZXJzZV9kZXBzX2RpY3RsaXN0ID0gc2VsZi5fZ2V0X2FsbF9kZXBlbmRlbnRzKAotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLnBrLAotICAgICAgICAgICAgICAgICAgICBhbGxfY3VycmVudF9wYWNrYWdlcykKKyAgICAgICAgICAgICMgcmVtb3ZlIGRlcGVuZGVuY2llcyBhcyB3ZWxsCisgICAgICAgICAgICBhbGxfY3VycmVudF9wYWNrYWdlcyA9IHJlY2lwZS5nZXRfYWxsX3BhY2thZ2VzKCkKIAotICAgICAgICAgICAgICAgIGlkcyA9IFtlbnRyeVsncGsnXSBmb3IgZW50cnkgaW4gcmV2ZXJzZV9kZXBzX2RpY3RsaXN0XQotICAgICAgICAgICAgICAgIHJldmVyc2VfZGVwcyA9IEN1c3RvbUltYWdlUGFja2FnZS5vYmplY3RzLmZpbHRlcihpZF9faW49aWRzKQotICAgICAgICAgICAgICAgIGZvciByIGluIHJldmVyc2VfZGVwczoKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgci5pZCBpbiBpbmNsdWRlZF9wYWNrYWdlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuZXhjbHVkZXNfc2V0LmFkZChyKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuYXBwZW5kc19zZXQucmVtb3ZlKHIpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHJldmVyc2VfZGVwc19kaWN0bGlzdCA9IHNlbGYuX2dldF9hbGxfZGVwZW5kZW50cygKKyAgICAgICAgICAgICAgICBwYWNrYWdlLnBrLAorICAgICAgICAgICAgICAgIGFsbF9jdXJyZW50X3BhY2thZ2VzKQorCisgICAgICAgICAgICBpZHMgPSBbZW50cnlbJ3BrJ10gZm9yIGVudHJ5IGluIHJldmVyc2VfZGVwc19kaWN0bGlzdF0KKyAgICAgICAgICAgIHJldmVyc2VfZGVwcyA9IEN1c3RvbUltYWdlUGFja2FnZS5vYmplY3RzLmZpbHRlcihpZF9faW49aWRzKQorICAgICAgICAgICAgZm9yIHIgaW4gcmV2ZXJzZV9kZXBzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgci5pZCBpbiBpbmNsdWRlZF9wYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5leGNsdWRlc19zZXQuYWRkKHIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuYXBwZW5kc19zZXQucmVtb3ZlKHIpCisgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgICAgIHJldHVybiBKc29uUmVzcG9uc2UoeyJlcnJvciI6ICJvayJ9KQogICAgICAgICBleGNlcHQgQ3VzdG9tSW1hZ2VSZWNpcGUuRG9lc05vdEV4aXN0OgpAQCAtODc0LDYgKzg5OCwxMiBAQAogICAgICAgICAgICAgbWFjaGluZXZhci52YWx1ZSA9IHJlcXVlc3QuUE9TVFsnbWFjaGluZU5hbWUnXQogICAgICAgICAgICAgbWFjaGluZXZhci5zYXZlKCkKIAorICAgICAgICAjIERpc3RybyBuYW1lIGNoYW5nZQorICAgICAgICBpZiAnZGlzdHJvTmFtZScgaW4gcmVxdWVzdC5QT1NUOgorICAgICAgICAgICAgZGlzdHJvdmFyID0gcHJqLnByb2plY3R2YXJpYWJsZV9zZXQuZ2V0KG5hbWU9IkRJU1RSTyIpCisgICAgICAgICAgICBkaXN0cm92YXIudmFsdWUgPSByZXF1ZXN0LlBPU1RbJ2Rpc3Ryb05hbWUnXQorICAgICAgICAgICAgZGlzdHJvdmFyLnNhdmUoKQorCiAgICAgICAgIHJldHVybiBKc29uUmVzcG9uc2UoeyJlcnJvciI6ICJvayJ9KQogCiAgICAgZGVmIGdldChzZWxmLCByZXF1ZXN0LCAqYXJncywgKiprd2FyZ3MpOgpAQCAtOTYwLDEwICs5OTAsMTEgQEAKICAgICAgICAgZXhjZXB0IFByb2plY3RWYXJpYWJsZS5Eb2VzTm90RXhpc3Q6CiAgICAgICAgICAgICBkYXRhWyJtYWNoaW5lIl0gPSBOb25lCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGRhdGFbImRpc3RybyJdID0gcHJvamVjdC5wcm9qZWN0dmFyaWFibGVfc2V0LmdldCgKLSAgICAgICAgICAgICAgICBuYW1lPSJESVNUUk8iKS52YWx1ZQorICAgICAgICAgICAgZGF0YVsiZGlzdHJvIl0gPSB7Im5hbWUiOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QucHJvamVjdHZhcmlhYmxlX3NldC5nZXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9IkRJU1RSTyIpLnZhbHVlfQogICAgICAgICBleGNlcHQgUHJvamVjdFZhcmlhYmxlLkRvZXNOb3RFeGlzdDoKLSAgICAgICAgICAgIGRhdGFbImRpc3RybyJdID0gIi0tIG5vdCBzZXQgeWV0IgorICAgICAgICAgICAgZGF0YVsiZGlzdHJvIl0gPSBOb25lCiAKICAgICAgICAgZGF0YVsnZXJyb3InXSA9ICJvayIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbXJic2VjdGlvbi5qcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL21yYnNlY3Rpb24uanMKaW5kZXggNzNkMDkzNS4uYzBjNWZhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbXJic2VjdGlvbi5qcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9tcmJzZWN0aW9uLmpzCkBAIC02MSw2ICs2MSwxMiBAQAogICAgIHJldHVybiAoY2FjaGVkLnJlY2lwZXNfcGFyc2VkX3BlcmNlbnRhZ2UgIT09IGJ1aWxkLnJlY2lwZXNfcGFyc2VkX3BlcmNlbnRhZ2UpOwogICB9CiAKKyAgLy8gcmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgb2YgcmVwb3MgY2xvbmVkL3RvIGNsb25lIGNoYW5nZWQKKyAgZnVuY3Rpb24gY2xvbmVQcm9ncmVzc0NoYW5nZWQoYnVpbGQpIHsKKyAgICB2YXIgY2FjaGVkID0gZ2V0Q2FjaGVkKGJ1aWxkKTsKKyAgICByZXR1cm4gKGNhY2hlZC5yZXBvc19jbG9uZWRfcGVyY2VudGFnZSAhPT0gYnVpbGQucmVwb3NfY2xvbmVkX3BlcmNlbnRhZ2UpOworICB9CisKICAgZnVuY3Rpb24gcmVmcmVzaE1vc3RSZWNlbnRCdWlsZHMoKXsKICAgICBsaWJ0b2FzdGVyLmdldE1vc3RSZWNlbnRCdWlsZHMoCiAgICAgICBsaWJ0b2FzdGVyLmN0eC5tb3N0UmVjZW50QnVpbGRzVXJsLApAQCAtMTAwLDYgKzEwNiwxNSBAQAogCiAgICAgICAgICAgICBjb250YWluZXIuaHRtbChodG1sKTsKICAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoY2xvbmVQcm9ncmVzc0NoYW5nZWQoYnVpbGQpKSB7CisgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGNsb25lIHByb2dyZXNzIHRleHQKKyAgICAgICAgICAgIHNlbGVjdG9yID0gJyNyZXBvcy1jbG9uZWQtcGVyY2VudGFnZS0nICsgYnVpbGQuaWQ7CisgICAgICAgICAgICAkKHNlbGVjdG9yKS5odG1sKGJ1aWxkLnJlcG9zX2Nsb25lZF9wZXJjZW50YWdlKTsKKworICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSByZWNpcGUgcHJvZ3Jlc3MgYmFyCisgICAgICAgICAgICBzZWxlY3RvciA9ICcjcmVwb3MtY2xvbmVkLXBlcmNlbnRhZ2UtYmFyLScgKyBidWlsZC5pZDsKKyAgICAgICAgICAgICQoc2VsZWN0b3IpLndpZHRoKGJ1aWxkLnJlcG9zX2Nsb25lZF9wZXJjZW50YWdlICsgJyUnKTsKKyAgICAgICAgICB9CiAgICAgICAgICAgZWxzZSBpZiAodGFza3NQcm9ncmVzc0NoYW5nZWQoYnVpbGQpKSB7CiAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHRhc2sgcHJvZ3Jlc3MgdGV4dAogICAgICAgICAgICAgc2VsZWN0b3IgPSAnI2J1aWxkLXBjLWRvbmUtJyArIGJ1aWxkLmlkOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvcHJvamVjdHBhZ2UuanMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9wcm9qZWN0cGFnZS5qcwppbmRleCAyMWFkZjgxLi41MDY0NzFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9wcm9qZWN0cGFnZS5qcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9wcm9qZWN0cGFnZS5qcwpAQCAtMTUsNiArMTUsMTMgQEAKICAgdmFyIG1hY2hpbmVJbnB1dEZvcm0gPSAkKCIjbWFjaGluZS1pbnB1dC1mb3JtIik7CiAgIHZhciBpbnZhbGlkTWFjaGluZU5hbWVIZWxwID0gJCgiI2ludmFsaWQtbWFjaGluZS1uYW1lLWhlbHAiKTsKIAorICB2YXIgZGlzdHJvQ2hhbmdlSW5wdXQgPSAkKCIjZGlzdHJvLWNoYW5nZS1pbnB1dCIpOworICB2YXIgZGlzdHJvQ2hhbmdlQnRuID0gJCgiI2Rpc3Ryby1jaGFuZ2UtYnRuIik7CisgIHZhciBkaXN0cm9Gb3JtID0gJCgiI3NlbGVjdC1kaXN0cm8tZm9ybSIpOworICB2YXIgZGlzdHJvQ2hhbmdlRm9ybVRvZ2dsZSA9ICQoIiNjaGFuZ2UtZGlzdHJvLXRvZ2dsZSIpOworICB2YXIgZGlzdHJvTmFtZVRpdGxlID0gJCgiI3Byb2plY3QtZGlzdHJvLW5hbWUiKTsKKyAgdmFyIGRpc3Ryb0NoYW5nZUNhbmNlbCA9ICQoIiNjYW5jZWwtZGlzdHJvLWNoYW5nZSIpOworCiAgIHZhciBmcmVxQnVpbGRCdG4gPSAgJCgiI2ZyZXEtYnVpbGQtYnRuIik7CiAgIHZhciBmcmVxQnVpbGRMaXN0ID0gJCgiI2ZyZXEtYnVpbGQtbGlzdCIpOwogCkBAIC0yNiw2ICszMyw3IEBACiAKICAgdmFyIGN1cnJlbnRMYXllckFkZFNlbGVjdGlvbjsKICAgdmFyIGN1cnJlbnRNYWNoaW5lQWRkU2VsZWN0aW9uID0gIiI7CisgIHZhciBjdXJyZW50RGlzdHJvQWRkU2VsZWN0aW9uID0gIiI7CiAKICAgdmFyIHVybFBhcmFtcyA9IGxpYnRvYXN0ZXIucGFyc2VVcmxQYXJhbXMoKTsKIApAQCAtNDUsNiArNTMsMTcgQEAKICAgICAgIHVwZGF0ZU1hY2hpbmVOYW1lKHByakluZm8ubWFjaGluZS5uYW1lKTsKICAgICB9CiAKKyAgICAvKiBJZiB3ZSdyZSByZWNlaXZpbmcgYSBkaXN0cm8gc2V0IGZyb20gdGhlIHVybCBhbmQgaXQncyBkaWZmZXJlbnQgZnJvbQorICAgICAqIG91ciBjdXJyZW50IGRpc3RybyB0aGVuIGFjdGl2YXRlIHNldCBtYWNoaW5lIHNlcXVlbmNlLgorICAgICAqLworICAgIGlmICh1cmxQYXJhbXMuaGFzT3duUHJvcGVydHkoJ3NldERpc3RybycpICYmCisgICAgICAgIHVybFBhcmFtcy5zZXREaXN0cm8gIT09IHByakluZm8uZGlzdHJvLm5hbWUpeworICAgICAgICBkaXN0cm9DaGFuZ2VJbnB1dC52YWwodXJsUGFyYW1zLnNldERpc3Rybyk7CisgICAgICAgIGRpc3Ryb0NoYW5nZUJ0bi5jbGljaygpOworICAgIH0gZWxzZSB7CisgICAgICB1cGRhdGVEaXN0cm9OYW1lKHByakluZm8uZGlzdHJvLm5hbWUpOworICAgIH0KKwogICAgLyogTm93IHdlJ3JlIHJlYWxseSByZWFkeSBzaG93IHRoZSBwYWdlICovCiAgICAgJCgiI3Byb2plY3QtcGFnZSIpLnNob3coKTsKIApAQCAtMjc4LDYgKzI5Nyw2MCBAQAogICB9KTsKIAogCisgIC8qIENoYW5nZSBkaXN0cm8gZnVuY3Rpb25hbGl0eSAqLworCisgIGRpc3Ryb0NoYW5nZUZvcm1Ub2dnbGUuY2xpY2soZnVuY3Rpb24oKXsKKyAgICBkaXN0cm9Gb3JtLnNsaWRlRG93bigpOworICAgIGRpc3Ryb05hbWVUaXRsZS5oaWRlKCk7CisgICAgJCh0aGlzKS5oaWRlKCk7CisgIH0pOworCisgIGRpc3Ryb0NoYW5nZUNhbmNlbC5jbGljayhmdW5jdGlvbigpeworICAgIGRpc3Ryb0Zvcm0uc2xpZGVVcChmdW5jdGlvbigpeworICAgICAgZGlzdHJvTmFtZVRpdGxlLnNob3coKTsKKyAgICAgIGRpc3Ryb0NoYW5nZUZvcm1Ub2dnbGUuc2hvdygpOworICAgIH0pOworICB9KTsKKworICBmdW5jdGlvbiB1cGRhdGVEaXN0cm9OYW1lKGRpc3Ryb05hbWUpeworICAgIGRpc3Ryb0NoYW5nZUlucHV0LnZhbChkaXN0cm9OYW1lKTsKKyAgICBkaXN0cm9OYW1lVGl0bGUudGV4dChkaXN0cm9OYW1lKTsKKyAgfQorCisgIGxpYnRvYXN0ZXIubWFrZVR5cGVhaGVhZChkaXN0cm9DaGFuZ2VJbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnRvYXN0ZXIuY3R4LmRpc3Ryb3NUeXBlQWhlYWRVcmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB7IH0sIGZ1bmN0aW9uKGl0ZW0peworICAgIGN1cnJlbnREaXN0cm9BZGRTZWxlY3Rpb24gPSBpdGVtLm5hbWU7CisgICAgZGlzdHJvQ2hhbmdlQnRuLnJlbW92ZUF0dHIoImRpc2FibGVkIik7CisgIH0pOworCisgIGRpc3Ryb0NoYW5nZUJ0bi5jbGljayhmdW5jdGlvbihlKXsKKyAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgLyogV2UgYWNjZXB0IGFueSB2YWx1ZSByZWdhcmRsZXNzIG9mIHR5cGVhaGVhZCBzZWxlY3Rpb24gb3Igbm90ICovCisgICAgaWYgKGRpc3Ryb0NoYW5nZUlucHV0LnZhbCgpLmxlbmd0aCA9PT0gMCkKKyAgICAgIHJldHVybjsKKworICAgIGN1cnJlbnREaXN0cm9BZGRTZWxlY3Rpb24gPSBkaXN0cm9DaGFuZ2VJbnB1dC52YWwoKTsKKworICAgIGxpYnRvYXN0ZXIuZWRpdEN1cnJlbnRQcm9qZWN0KAorICAgICAgeyBkaXN0cm9OYW1lIDogY3VycmVudERpc3Ryb0FkZFNlbGVjdGlvbiB9LAorICAgICAgZnVuY3Rpb24oKXsKKyAgICAgICAgLyogU3VjY2VzcyBtYWNoaW5lIGNoYW5nZWQgKi8KKyAgICAgICAgdXBkYXRlRGlzdHJvTmFtZShjdXJyZW50RGlzdHJvQWRkU2VsZWN0aW9uKTsKKyAgICAgICAgZGlzdHJvQ2hhbmdlQ2FuY2VsLmNsaWNrKCk7CisKKyAgICAgICAgLyogU2hvdyB0aGUgYWxlcnQgbWVzc2FnZSAqLworICAgICAgICB2YXIgbWVzc2FnZSA9ICQoJzxzcGFuPllvdSBoYXZlIGNoYW5nZWQgdGhlIGRpc3RybyB0bzogPHN0cm9uZz48c3BhbiBpZD0ibm90aWZ5LW1hY2hpbmUtbmFtZSI+PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj4nKTsKKyAgICAgICAgbWVzc2FnZS5maW5kKCIjbm90aWZ5LW1hY2hpbmUtbmFtZSIpLnRleHQoY3VycmVudERpc3Ryb0FkZFNlbGVjdGlvbik7CisgICAgICAgIGxpYnRvYXN0ZXIuc2hvd0NoYW5nZU5vdGlmaWNhdGlvbihtZXNzYWdlKTsKKyAgICB9LAorICAgICAgZnVuY3Rpb24oKXsKKyAgICAgICAgLyogRmFpbGVkIG1hY2hpbmUgY2hhbmdlZCAqLworICAgICAgICBjb25zb2xlLndhcm4oIkZhaWxlZCB0byBjaGFuZ2UgZGlzdHJvIik7CisgICAgfSk7CisgIH0pOworCisKICAgLyogQ2hhbmdlIHJlbGVhc2UgZnVuY3Rpb25hbGl0eSAqLwogICBmdW5jdGlvbiB1cGRhdGVQcm9qZWN0UmVsZWFzZShyZWxlYXNlKXsKICAgICByZWxlYXNlVGl0bGUudGV4dChyZWxlYXNlLmRlc2NyaXB0aW9uKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3R0b3BiYXIuanMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9wcm9qZWN0dG9wYmFyLmpzCmluZGV4IDkyYWIyZDYuLjY5MjIwYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3R0b3BiYXIuanMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvcHJvamVjdHRvcGJhci5qcwpAQCAtNzMsMTQgKzczLDE0IEBACiAKICAgbmV3QnVpbGRUYXJnZXRCdWlsZEJ0bi5jbGljayhmdW5jdGlvbiAoZSkgewogICAgIGUucHJldmVudERlZmF1bHQoKTsKLSAgICBpZiAoIW5ld0J1aWxkVGFyZ2V0SW5wdXQudmFsKCkpIHsKKyAgICBpZiAoIW5ld0J1aWxkVGFyZ2V0SW5wdXQudmFsKCkudHJpbSgpKSB7CiAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8qIFdlIHVzZSB0aGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkIHNvIGFzIHRvIG1haW50YWluIGFueSBjb21tYW5kIGFsc28KICAgICAgKiBhZGRlZCBlLmcuIGNvcmUtaW1hZ2UtbWluaW1hbDpjbGVhbiBhbmQgYmVjYXVzZSB3ZSBjYW4gYnVpbGQgdGFyZ2V0cwogICAgICAqIHRoYXQgdG9hc3RlciBkb2Vzbid0IHlldCBrbm93IGFib3V0CiAgICAgICovCi0gICAgc2VsZWN0ZWRUYXJnZXQgPSB7IG5hbWU6IG5ld0J1aWxkVGFyZ2V0SW5wdXQudmFsKCkgfTsKKyAgICBzZWxlY3RlZFRhcmdldCA9IHsgbmFtZTogbmV3QnVpbGRUYXJnZXRJbnB1dC52YWwoKS50cmltKCkgfTsKIAogICAgIC8qIEZpcmUgb2ZmIHRoZSBidWlsZCAqLwogICAgIGxpYnRvYXN0ZXIuc3RhcnRBQnVpbGQobnVsbCwgc2VsZWN0ZWRUYXJnZXQubmFtZSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkKaW5kZXggZTJkMjNjMS4uZGNhMmZhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkKQEAgLTIzLDYgKzIzLDcgQEAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUmVjaXBlLCBQcm9qZWN0TGF5ZXIsIExheWVyX1ZlcnNpb24sIE1hY2hpbmUsIFByb2plY3QKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQ3VzdG9tSW1hZ2VSZWNpcGUsIFBhY2thZ2UsIFRhcmdldCwgQnVpbGQsIExvZ01lc3NhZ2UsIFRhc2sKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQ3VzdG9tSW1hZ2VQYWNrYWdlLCBQYWNrYWdlX0RlcGVuZGVuY3lNYW5hZ2VyCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IERpc3RybwogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRLCBNYXgsIFN1bSwgQ291bnQsIFdoZW4sIENhc2UsIFZhbHVlLCBJbnRlZ2VyRmllbGQKIGZyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgdXJsCiBmcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZSwgcmVzb2x2ZQpAQCAtMTUzNiwzICsxNTM3LDkzIEBACiAgICAgICAgICAgICBjb250ZXh0WydidWlsZF9pbl9wcm9ncmVzc19ub25lX2NvbXBsZXRlZCddID0gRmFsc2UKIAogICAgICAgICByZXR1cm4gY29udGV4dAorCisKK2NsYXNzIERpc3Ryb3NUYWJsZShUb2FzdGVyVGFibGUpOgorICAgICIiIlRhYmxlIG9mIERpc3Ryb3MgaW4gVG9hc3RlciIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKERpc3Ryb3NUYWJsZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmVtcHR5X3N0YXRlID0gIlRvYXN0ZXIgaGFzIG5vIGRpc3RybyBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwcm9qZWN0LiBTYWRseSwgCQkJICAgZGlzdHJvIGluZm9ybWF0aW9uIGNhbm5vdCBiZSBvYnRhaW5lZCBmcm9tIGJ1aWxkcywgc28gdGhpcyAJCQkJICBwYWdlIHdpbGwgcmVtYWluIGVtcHR5LiIKKyAgICAgICAgc2VsZi50aXRsZSA9ICJDb21wYXRpYmxlIERpc3Ryb3MiCisgICAgICAgIHNlbGYuZGVmYXVsdF9vcmRlcmJ5ID0gIm5hbWUiCisKKyAgICBkZWYgZ2V0X2NvbnRleHRfZGF0YShzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIGNvbnRleHQgPSBzdXBlcihEaXN0cm9zVGFibGUsIHNlbGYpLmdldF9jb250ZXh0X2RhdGEoKiprd2FyZ3MpCisgICAgICAgIGNvbnRleHRbJ3Byb2plY3QnXSA9IFByb2plY3Qub2JqZWN0cy5nZXQocGs9a3dhcmdzWydwaWQnXSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQKKworICAgIGRlZiBzZXR1cF9maWx0ZXJzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrPWt3YXJnc1sncGlkJ10pCisKKyAgICAgICAgaW5fY3VycmVudF9wcm9qZWN0X2ZpbHRlciA9IFRhYmxlRmlsdGVyKAorICAgICAgICAgICAgImluX2N1cnJlbnRfcHJvamVjdCIsCisgICAgICAgICAgICAiRmlsdGVyIGJ5IHByb2plY3QgRGlzdHJvcyIKKyAgICAgICAgKQorCisgICAgICAgIGluX3Byb2plY3RfYWN0aW9uID0gVGFibGVGaWx0ZXJBY3Rpb25Ub2dnbGUoCisgICAgICAgICAgICAiaW5fcHJvamVjdCIsCisgICAgICAgICAgICAiRGlzdHJvIHByb3ZpZGVkIGJ5IGxheWVycyBhZGRlZCB0byB0aGlzIHByb2plY3QiLAorICAgICAgICAgICAgUHJvamVjdEZpbHRlcnMuaW5fcHJvamVjdChzZWxmLnByb2plY3RfbGF5ZXJzKQorICAgICAgICApCisKKyAgICAgICAgbm90X2luX3Byb2plY3RfYWN0aW9uID0gVGFibGVGaWx0ZXJBY3Rpb25Ub2dnbGUoCisgICAgICAgICAgICAibm90X2luX3Byb2plY3QiLAorICAgICAgICAgICAgIkRpc3Ryb3MgcHJvdmlkZWQgYnkgbGF5ZXJzIG5vdCBhZGRlZCB0byB0aGlzIHByb2plY3QiLAorICAgICAgICAgICAgUHJvamVjdEZpbHRlcnMubm90X2luX3Byb2plY3Qoc2VsZi5wcm9qZWN0X2xheWVycykKKyAgICAgICAgKQorCisgICAgICAgIGluX2N1cnJlbnRfcHJvamVjdF9maWx0ZXIuYWRkX2FjdGlvbihpbl9wcm9qZWN0X2FjdGlvbikKKyAgICAgICAgaW5fY3VycmVudF9wcm9qZWN0X2ZpbHRlci5hZGRfYWN0aW9uKG5vdF9pbl9wcm9qZWN0X2FjdGlvbikKKyAgICAgICAgc2VsZi5hZGRfZmlsdGVyKGluX2N1cnJlbnRfcHJvamVjdF9maWx0ZXIpCisKKyAgICBkZWYgc2V0dXBfcXVlcnlzZXQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcHJqID0gUHJvamVjdC5vYmplY3RzLmdldChwayA9IGt3YXJnc1sncGlkJ10pCisgICAgICAgIHNlbGYucXVlcnlzZXQgPSBwcmouZ2V0X2FsbF9jb21wYXRpYmxlX2Rpc3Ryb3MoKQorICAgICAgICBzZWxmLnF1ZXJ5c2V0ID0gc2VsZi5xdWVyeXNldC5vcmRlcl9ieShzZWxmLmRlZmF1bHRfb3JkZXJieSkKKworICAgICAgICBzZWxmLnN0YXRpY19jb250ZXh0X2V4dHJhWydjdXJyZW50X2xheWVycyddID0gXAorICAgICAgICAgICAgICAgIHNlbGYucHJvamVjdF9sYXllcnMgPSBcCisgICAgICAgICAgICAgICAgcHJqLmdldF9wcm9qZWN0X2xheWVyX3ZlcnNpb25zKHBrPVRydWUpCisKKyAgICBkZWYgc2V0dXBfY29sdW1ucyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorCisgICAgICAgIHNlbGYuYWRkX2NvbHVtbih0aXRsZT0iRGlzdHJvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVhYmxlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJhYmxlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9uYW1lPSJuYW1lIikKKworICAgICAgICBzZWxmLmFkZF9jb2x1bW4odGl0bGU9IkRlc2NyaXB0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkX25hbWU9ImRlc2NyaXB0aW9uIikKKworICAgICAgICBsYXllcl9saW5rX3RlbXBsYXRlID0gJycnCisgICAgICAgIDxhIGhyZWY9InslIHVybCAnbGF5ZXJkZXRhaWxzJyBleHRyYS5waWQgZGF0YS5sYXllcl92ZXJzaW9uLmlkICV9Ij4KKyAgICAgICAge3tkYXRhLmxheWVyX3ZlcnNpb24ubGF5ZXIubmFtZX19PC9hPgorICAgICAgICAnJycKKworICAgICAgICBzZWxmLmFkZF9jb2x1bW4odGl0bGU9IkxheWVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19kYXRhX25hbWU9ImxheWVyX3ZlcnNpb25fX2xheWVyX19uYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19kYXRhX3RlbXBsYXRlPWxheWVyX2xpbmtfdGVtcGxhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmFibGU9VHJ1ZSkKKworICAgICAgICBzZWxmLmFkZF9jb2x1bW4odGl0bGU9IkdpdCByZXZpc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ9IlRoZSBHaXQgYnJhbmNoLCB0YWcgb3IgY29tbWl0LiBGb3IgdGhlIGxheWVycyBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgbGF5ZXIgc291cmNlLCB0aGUgcmV2aXNpb24gaXMgYWx3YXlzIHRoZSBicmFuY2ggY29tcGF0aWJsZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24geW91IHNlbGVjdGVkIGZvciB0aGlzIHByb2plY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9uYW1lPSJsYXllcl92ZXJzaW9uX19nZXRfdmNzX3JlZmVyZW5jZSIpCisKKyAgICAgICAgd3J0ZW1wbGF0ZV9maWxlX3RlbXBsYXRlID0gJycnPGNvZGU+Y29uZi9tYWNoaW5lL3t7ZGF0YS5uYW1lfX0uY29uZjwvY29kZT4KKyAgICAgICAgPGEgaHJlZj0ie3tkYXRhLmdldF92Y3NfbWFjaGluZV9maWxlX2xpbmtfdXJsfX0iIHRhcmdldD0iX2JsYW5rIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1uZXctd2luZG93Ij48L2k+PC9hPicnJworCisgICAgICAgIHNlbGYuYWRkX2NvbHVtbih0aXRsZT0iRGlzdHJvIGZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfZGF0YV9uYW1lPSJ0ZW1wbGF0ZWZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2RhdGFfdGVtcGxhdGU9d3J0ZW1wbGF0ZV9maWxlX3RlbXBsYXRlKQorCisKKyAgICAgICAgc2VsZi5hZGRfY29sdW1uKHRpdGxlPSJTZWxlY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscF90ZXh0PSJTZXRzIHRoZSBzZWxlY3RlZCBkaXN0cm8gdG8gdGhlIHByb2plY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGlkZWFibGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbmFtZT0iaW5fY3VycmVudF9wcm9qZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19kYXRhX25hbWU9ImFkZC1kZWwtbGF5ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19kYXRhX3RlbXBsYXRlPSd7JSBpbmNsdWRlICJkaXN0cm9fYnRuLmh0bWwiICV9JykKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvYmFzZS5odG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvYmFzZS5odG1sCmluZGV4IDMyYjQ5NzkuLjRmNzIwNjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2UuaHRtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9iYXNlLmh0bWwKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICAgICAgcmVjaXBlc1R5cGVBaGVhZFVybDogeyUgdXJsICd4aHJfcmVjaXBlc3R5cGVhaGVhZCcgcHJvamVjdC5pZCBhcyBwYXR1cmwlfXt7cGF0dXJsfGpzb259fSwKICAgICAgICAgbGF5ZXJzVHlwZUFoZWFkVXJsOiB7JSB1cmwgJ3hocl9sYXllcnN0eXBlYWhlYWQnIHByb2plY3QuaWQgYXMgcGF0dXJsJX17e3BhdHVybHxqc29ufX0sCiAgICAgICAgIG1hY2hpbmVzVHlwZUFoZWFkVXJsOiB7JSB1cmwgJ3hocl9tYWNoaW5lc3R5cGVhaGVhZCcgcHJvamVjdC5pZCBhcyBwYXR1cmwlfXt7cGF0dXJsfGpzb259fSwKKyAgICAgICAgZGlzdHJvc1R5cGVBaGVhZFVybDogeyUgdXJsICd4aHJfZGlzdHJvc3R5cGVhaGVhZCcgcHJvamVjdC5pZCBhcyBwYXR1cmwlfXt7cGF0dXJsfGpzb259fSwKICAgICAgICAgcHJvamVjdEJ1aWxkc1VybDogeyUgdXJsICdwcm9qZWN0YnVpbGRzJyBwcm9qZWN0LmlkIGFzIHBidXJsICV9e3twYnVybHxqc29ufX0sCiAgICAgICAgIHhockN1c3RvbVJlY2lwZVVybCA6ICJ7JSB1cmwgJ3hocl9jdXN0b21yZWNpcGUnICV9IiwKICAgICAgICAgcHJvamVjdElkIDoge3twcm9qZWN0LmlkfX0sCkBAIC0xMDksNiArMTEwLDcgQEAKICAgICAgICAgICAgICAgICBBbGwgYnVpbGRzCiAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgeyUgaWYgcHJvamVjdF9lbmFibGUgJX0KICAgICAgICAgICAgICAgPGxpIGlkPSJuYXZiYXItYWxsLXByb2plY3RzIgogICAgICAgICAgICAgICB7JSBpZiByZXF1ZXN0LnJlc29sdmVyX21hdGNoLnVybF9uYW1lID09ICdhbGwtcHJvamVjdHMnICAlfQogICAgICAgICAgICAgICBjbGFzcz0iYWN0aXZlIgpAQCAtMTE4LDYgKzEyMCw3IEBACiAgICAgICAgICAgICAgICAgQWxsIHByb2plY3RzCiAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICAgIDxsaSBpZD0ibmF2YmFyLWRvY3MiPgogICAgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvbGF0ZXN0L3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwiPgpAQCAtMTI2LDcgKzEyOSw5IEBACiAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICB7JSBpZiBwcm9qZWN0X2VuYWJsZSAlfQogICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCBuYXZiYXItYnRuIG5hdmJhci1yaWdodCIgaWQ9Im5ldy1wcm9qZWN0LWJ1dHRvbiIgaHJlZj0ieyUgdXJsICduZXdwcm9qZWN0JyAlfSI+TmV3IHByb2plY3Q8L2E+CisgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICAgPC9uYXY+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9iYXNlcHJvamVjdHBhZ2UuaHRtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2Vwcm9qZWN0cGFnZS5odG1sCmluZGV4IDg0MjdkMjUuLmYyYmIyZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2Vwcm9qZWN0cGFnZS5odG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2Vwcm9qZWN0cGFnZS5odG1sCkBAIC0zMiw2ICszMiw3IEBACiAgICAgICA8bGk+PGEgaHJlZj0ieyUgdXJsICdwcm9qZWN0c29mdHdhcmVyZWNpcGVzJyBwcm9qZWN0LmlkICV9Ij5Tb2Z0d2FyZSByZWNpcGVzPC9hPjwvbGk+CiAgICAgICA8bGk+PGEgaHJlZj0ieyUgdXJsICdwcm9qZWN0bWFjaGluZXMnIHByb2plY3QuaWQgJX0iPk1hY2hpbmVzPC9hPjwvbGk+CiAgICAgICA8bGk+PGEgaHJlZj0ieyUgdXJsICdwcm9qZWN0bGF5ZXJzJyBwcm9qZWN0LmlkICV9Ij5MYXllcnM8L2E+PC9saT4KKyAgICAgIDxsaT48YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3RkaXN0cm9zJyBwcm9qZWN0LmlkICV9Ij5EaXN0cm9zPC9hPjwvbGk+CiAgICAgICA8bGkgY2xhc3M9Im5hdi1oZWFkZXIiPkV4dHJhIGNvbmZpZ3VyYXRpb248L2xpPgogICAgICAgPGxpPjxhIGhyZWY9InslIHVybCAncHJvamVjdGNvbmYnIHByb2plY3QuaWQgJX0iPkJpdEJha2UgdmFyaWFibGVzPC9hPjwvbGk+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Rpc3Ryb19idG4uaHRtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Rpc3Ryb19idG4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWM3OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvZGlzdHJvX2J0bi5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzxhIGhyZWY9InslIHVybCAncHJvamVjdCcgZXh0cmEucGlkICV9P3NldERpc3Rybz17e2RhdGEubmFtZX19IiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi1ibG9jayBsYXllci1leGlzdHMte3tkYXRhLmxheWVyX3ZlcnNpb24uaWR9fSIKKyAgICB7JSBpZiBkYXRhLmxheWVyX3ZlcnNpb24ucGsgbm90IGluIGV4dHJhLmN1cnJlbnRfbGF5ZXJzICV9CisgICAgc3R5bGU9ImRpc3BsYXk6bm9uZTsiCisgICAgeyUgZW5kaWYgJX0+CisgIFNldCBkaXN0cm88L2E+Cis8YSBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi1ibG9jayBsYXllcmJ0biBsYXllci1hZGQte3tkYXRhLmxheWVyX3ZlcnNpb24uaWR9fSIgZGF0YS1sYXllcj0neworICAgICJpZCI6IHt7ZGF0YS5sYXllcl92ZXJzaW9uLmlkfX0sCisgICAgIm5hbWUiOiAgInt7ZGF0YS5sYXllcl92ZXJzaW9uLmxheWVyLm5hbWV9fSIsCisgICAgInhockxheWVyVXJsIjogInslIHVybCAieGhyX2xheWVyIiBleHRyYS5waWQgZGF0YS5wayAlfSIsCisgICAgImxheWVyZGV0YWlsdXJsIjogInsldXJsICdsYXllcmRldGFpbHMnIGV4dHJhLnBpZCBkYXRhLmxheWVyX3ZlcnNpb24uaWQgJX0iCisgICAgfScgZGF0YS1kaXJlY3RpdmU9ImFkZCIKKyAgICB7JSBpZiBkYXRhLmxheWVyX3ZlcnNpb24ucGsgaW4gZXh0cmEuY3VycmVudF9sYXllcnMgJX0KKyAgICBzdHlsZT0iZGlzcGxheTpub25lOyIKKyAgICB7JSBlbmRpZiAlfQorPgorICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1wbHVzIj48L3NwYW4+CisgIEFkZCBsYXllcgorICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIGdldC1oZWxwIiB0aXRsZT0iVG8gc2VsZWN0IHRoaXMgZGlzdHJvLCB5b3UgbXVzdCBmaXJzdCBhZGQgdGhlIHt7ZGF0YS5sYXllcl92ZXJzaW9uLmxheWVyLm5hbWV9fSBsYXllciB0byB5b3VyIHByb2plY3QiPjwvaT4KKzwvYT4KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvaGVhbHRoLmh0bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9oZWFsdGguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTdmZGJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvaGVhbHRoLmh0bWwKQEAgLTAsMCArMSw2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKyAgPGhlYWQ+PHRpdGxlPlRvYXN0ZXIgSGVhbHRoPC90aXRsZT48L2hlYWQ+CisgIDxib2R5Pk9rPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9sYW5kaW5nLmh0bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9sYW5kaW5nLmh0bWwKaW5kZXggNDk4NjYzMi4uNzBjNzM1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbGFuZGluZy5odG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2xhbmRpbmcuaHRtbApAQCAtMTQsMTIgKzE0LDIwIEBACiAKICAgICAgICAgICAgICAgPHA+QSB3ZWIgaW50ZXJmYWNlIHRvIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZyI+T3BlbkVtYmVkZGVkPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL3Rvb2xzLXJlc291cmNlcy9wcm9qZWN0cy9iaXRiYWtlIj5CaXRCYWtlPC9hPiwgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZyI+WW9jdG8gUHJvamVjdDwvYT4gYnVpbGQgc3lzdGVtLjwvcD4KIAorCQkgICAgICAgICAgPHAgY2xhc3M9InRvcC1haXIiPgorCQkgICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1pbmZvIGJ0bi1sZyIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvbGF0ZXN0L3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwjdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZSI+CisJCQkgICAgICAgICAgICBUb2FzdGVyIGlzIHJlYWR5IHRvIGNhcHR1cmUgeW91ciBjb21tYW5kIGxpbmUgYnVpbGRzCisJCSAgICAgICAgICAgIDwvYT4KKwkJICAgICAgICAgIDwvcD4KKwogCQkgICAgICAgICAgeyUgaWYgbHZzX25vcyAlfQorICAgICAgICAgICAgICAgICAgICB7JSBpZiBwcm9qZWN0X2VuYWJsZSAlfQogCQkgICAgICAgICAgICA8cCBjbGFzcz0idG9wLWFpciI+CiAJCSAgICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tbGciIGhyZWY9InslIHVybCAnbmV3cHJvamVjdCcgJX0iPgotCQkJICAgICAgICAgICAgICBUbyBzdGFydCBidWlsZGluZywgY3JlYXRlIHlvdXIgZmlyc3QgVG9hc3RlciBwcm9qZWN0CisJCQkgICAgICAgICAgICAgIENyZWF0ZSB5b3VyIGZpcnN0IFRvYXN0ZXIgcHJvamVjdCB0byBydW4gbWFuYWdlIGJ1aWxkcwogCQkgICAgICAgICAgICAgIDwvYT4KIAkJICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogCQkgICAgICAgICAgeyUgZWxzZSAlfQogICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8gbGVhZCB0b3AtYWlyIj4KICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgaGFzIG5vIGxheWVyIGluZm9ybWF0aW9uLiBXaXRob3V0IGxheWVyIGluZm9ybWF0aW9uLCB5b3UgY2Fubm90IHJ1biBidWlsZHMuIFRvIGdlbmVyYXRlIGxheWVyIGluZm9ybWF0aW9uIHlvdSBjYW46CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9tcmJfc2VjdGlvbi5odG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbXJiX3NlY3Rpb24uaHRtbAppbmRleCBiNzYxZmZlLi5jNWI5ZmU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9tcmJfc2VjdGlvbi5odG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL21yYl9zZWN0aW9uLmh0bWwKQEAgLTY0LDcgKzY0LDkgQEAKICAgPC9kaXY+CiAKICAgPGRpdiBkYXRhLWJ1aWxkLXN0YXRlPSI8JTpzdGF0ZSU+Ij4KLSAgICA8JWlmIHN0YXRlID09ICdQYXJzaW5nJyU+CisgICAgPCVpZiBzdGF0ZSA9PSAnQ2xvbmluZyclPgorICAgICAgPCVpbmNsdWRlIHRtcGw9JyNjbG9uaW5nLXJlcG9zLWJ1aWxkLXRlbXBsYXRlJy8lPgorICAgIDwlZWxzZSBzdGF0ZSA9PSAnUGFyc2luZyclPgogICAgICAgPCVpbmNsdWRlIHRtcGw9JyNwYXJzaW5nLXJlY2lwZXMtYnVpbGQtdGVtcGxhdGUnLyU+CiAgICAgPCVlbHNlIHN0YXRlID09ICdRdWV1ZWQnJT4KICAgICAgIDwlaW5jbHVkZSB0bXBsPScjcXVldWVkLWJ1aWxkLXRlbXBsYXRlJy8lPgpAQCAtOTgsNiArMTAwLDMxIEBACiAgIDwvZGl2PgogPC9zY3JpcHQ+CiAKKzwhLS0gY2xvbmluZyByZXBvcyBidWlsZCAtLT4KKzxzY3JpcHQgaWQ9ImNsb25pbmctcmVwb3MtYnVpbGQtdGVtcGxhdGUiIHR5cGU9InRleHQveC1qc3JlbmRlciI+CisgIDwhLS0gcHJvZ3Jlc3MgYmFyIGFuZCBwYXJzZSBjb21wbGV0aW9uIHBlcmNlbnRhZ2UgLS0+CisgIDxkaXYgZGF0YS1yb2xlPSJidWlsZC1zdGF0dXMiIGNsYXNzPSJjb2wtbWQtNCBjb2wtbWQtb2Zmc2V0LTEgcHJvZ3Jlc3MtaW5mbyI+CisgICAgPCEtLSBwcm9ncmVzcyBiYXIgLS0+CisgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MiPgorICAgICAgPGRpdiBpZD0icmVwb3MtY2xvbmVkLXBlcmNlbnRhZ2UtYmFyLTwlOmlkJT4iCisgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogPCU6cmVwb3NfY2xvbmVkX3BlcmNlbnRhZ2UlPiU7IgorICAgICAgICAgICBjbGFzcz0icHJvZ3Jlc3MtYmFyIj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKworICA8ZGl2IGNsYXNzPSJjb2wtbWQtNCBwcm9ncmVzcy1pbmZvIj4KKyAgICA8IS0tIHBhcnNlIGNvbXBsZXRpb24gcGVyY2VudGFnZSAtLT4KKyAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIGdldC1oZWxwIGdldC1oZWxwLWJsdWUiCisgICAgICAgICAgdGl0bGU9IlRvYXN0ZXIgaXMgY2xvbmluZyB0aGUgcmVwb3MgcmVxdWlyZWQgZm9yIHlvdXIgYnVpbGQiPgorICAgIDwvc3Bhbj4KKworICAgIENsb25pbmcgPHNwYW4gaWQ9InJlcG9zLWNsb25lZC1wZXJjZW50YWdlLTwlOmlkJT4iPjwlOnJlcG9zX2Nsb25lZF9wZXJjZW50YWdlJT48L3NwYW4+JSBjb21wbGV0ZQorCisgICAgPCVpbmNsdWRlIHRtcGw9JyNjYW5jZWwtdGVtcGxhdGUnLyU+CisgIDwvZGl2PgorPC9zY3JpcHQ+CisKIDwhLS0gcGFyc2luZyByZWNpcGVzIGJ1aWxkIC0tPgogPHNjcmlwdCBpZD0icGFyc2luZy1yZWNpcGVzLWJ1aWxkLXRlbXBsYXRlIiB0eXBlPSJ0ZXh0L3gtanNyZW5kZXIiPgogICA8IS0tIHByb2dyZXNzIGJhciBhbmQgcGFyc2UgY29tcGxldGlvbiBwZXJjZW50YWdlIC0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcHJvamVjdC5odG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcHJvamVjdC5odG1sCmluZGV4IGFiN2U2NjUuLjExNjAzZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL3Byb2plY3QuaHRtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0Lmh0bWwKQEAgLTc3LDYgKzc3LDIyIEBACiAgICAgICA8L2Zvcm0+CiAgICAgPC9kaXY+CiAKKyAgICA8ZGl2IGNsYXNzPSJ3ZWxsIHdlbGwtdHJhbnNwYXJlbnQiIGlkPSJkaXN0cm8tc2VjdGlvbiI+CisgICAgICA8aDM+RGlzdHJvPC9oMz4KKworICAgICAgPHAgY2xhc3M9ImxlYWQiPjxzcGFuIGlkPSJwcm9qZWN0LWRpc3Ryby1uYW1lIj48L3NwYW4+IDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWVkaXQiIGlkPSJjaGFuZ2UtZGlzdHJvLXRvZ2dsZSI+PC9zcGFuPjwvcD4KKworICAgICAgPGZvcm0gaWQ9InNlbGVjdC1kaXN0cm8tZm9ybSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGNsYXNzPSJmb3JtLWlubGluZSI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJoZWxwLWJsb2NrIj5EaXN0cm8gc3VnZ2VzdGlvbnMgY29tZSBmcm9tIHRoZSBMYXllciBJbmRleDwvYT48L3NwYW4+CisgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgorICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0iZGlzdHJvLWNoYW5nZS1pbnB1dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHZhbHVlPSIiIGRhdGEtcHJvdmlkZT0idHlwZWFoZWFkIiBkYXRhLW1pbmxlbmd0aD0iMSIgZGF0YS1hdXRvY29tcGxldGU9Im9mZiIgdHlwZT0idGV4dCI+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnV0dG9uIGlkPSJkaXN0cm8tY2hhbmdlLWJ0biIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgdHlwZT0iYnV0dG9uIj5TYXZlPC9idXR0b24+CisgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJjYW5jZWwtZGlzdHJvLWNoYW5nZSIgY2xhc3M9ImJ0biBidG4tbGluayI+Q2FuY2VsPC9hPgorICAgICAgICA8cCBjbGFzcz0iZm9ybS1saW5rIj48YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3RkaXN0cm9zJyBwcm9qZWN0LmlkICV9Ij5WaWV3IGNvbXBhdGlibGUgZGlzdHJvczwvYT48L3A+CisgICAgICA8L2Zvcm0+CisgICAgPC9kaXY+CisKICAgICA8ZGl2IGNsYXNzPSJ3ZWxsIHdlbGwtdHJhbnNwYXJlbnQiPgogICAgICAgPGgzPk1vc3QgYnVpbHQgcmVjaXBlczwvaDM+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weQppbmRleCA1OGM2NTBmLi41YWEwZjhkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3R5cGVhaGVhZHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5CkBAIC0xMDAsNiArMTAwLDM2IEBACiAgICAgICAgIHJldHVybiByZXN1bHRzCiAKIAorY2xhc3MgRGlzdHJvc1R5cGVBaGVhZChUb2FzdGVyVHlwZUFoZWFkKToKKyAgICAiIiIgVHlwZWFoZWFkIGZvciBhbGwgdGhlIGRpc3Ryb3MgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IHByb2plY3QncworICAgIGNvbmZpZ3VyYXRpb24gIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzdXBlcihEaXN0cm9zVHlwZUFoZWFkLCBzZWxmKS5fX2luaXRfXygpCisKKyAgICBkZWYgYXBwbHlfc2VhcmNoKHNlbGYsIHNlYXJjaF90ZXJtLCBwcmosIHJlcXVlc3QpOgorICAgICAgICBkaXN0cm9zID0gcHJqLmdldF9hdmFpbGFibGVfZGlzdHJvcygpCisgICAgICAgIGRpc3Ryb3MgPSBkaXN0cm9zLm9yZGVyX2J5KCJuYW1lIikKKworICAgICAgICBwcmltYXJ5X3Jlc3VsdHMgPSBkaXN0cm9zLmZpbHRlcihuYW1lX19pc3RhcnRzd2l0aD1zZWFyY2hfdGVybSkKKyAgICAgICAgc2Vjb25kYXJ5X3Jlc3VsdHMgPSBkaXN0cm9zLmZpbHRlcihuYW1lX19pY29udGFpbnM9c2VhcmNoX3Rlcm0pLmV4Y2x1ZGUocGtfX2luPXByaW1hcnlfcmVzdWx0cykKKyAgICAgICAgdGVydGlhcnlfcmVzdWx0cyA9IGRpc3Ryb3MuZmlsdGVyKGxheWVyX3ZlcnNpb25fX2xheWVyX19uYW1lX19pY29udGFpbnM9c2VhcmNoX3Rlcm0pLmV4Y2x1ZGUocGtfX2luPXByaW1hcnlfcmVzdWx0cykuZXhjbHVkZShwa19faW49c2Vjb25kYXJ5X3Jlc3VsdHMpCisKKyAgICAgICAgcmVzdWx0cyA9IFtdCisKKyAgICAgICAgZm9yIGRpc3RybyBpbiBsaXN0KHByaW1hcnlfcmVzdWx0cykgKyBsaXN0KHNlY29uZGFyeV9yZXN1bHRzKSArIGxpc3QodGVydGlhcnlfcmVzdWx0cyk6CisKKyAgICAgICAgICAgIGRldGFpbCA9ICJbICVzIF0iICUgKGRpc3Ryby5sYXllcl92ZXJzaW9uLmxheWVyLm5hbWUpCisgICAgICAgICAgICBuZWVkZWRfZmllbGRzID0geworICAgICAgICAgICAgICAgICdpZCcgOiBkaXN0cm8ucGssCisgICAgICAgICAgICAgICAgJ25hbWUnIDogZGlzdHJvLm5hbWUsCisgICAgICAgICAgICAgICAgJ2RldGFpbCcgOiBkZXRhaWwsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG5lZWRlZF9maWVsZHMpCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdHMKKworCiBjbGFzcyBSZWNpcGVzVHlwZUFoZWFkKFRvYXN0ZXJUeXBlQWhlYWQpOgogICAgICIiIiBUeXBlYWhlYWQgZm9yIGFsbCB0aGUgcmVjaXBlcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgcHJvamVjdCdzCiAgICAgY29uZmlndXJhdGlvbiAiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weQppbmRleCBkOTJmMTkwLi5lMDdiMGVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS91cmxzLnB5CkBAIC0xLDcgKzEsNyBAQAogIwogIyBCaXRCYWtlIFRvYXN0ZXIgSW1wbGVtZW50YXRpb24KICMKLSMgQ29weXJpZ2h0IChDKSAyMDEzICAgICAgICBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyAgICBJbnRlbCBDb3Jwb3JhdGlvbgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpAQCAtMTYsNyArMTYsNyBAQAogIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IHBhdHRlcm5zLCBpbmNsdWRlLCB1cmwKK2Zyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgaW5jbHVkZSwgdXJsCiBmcm9tIGRqYW5nby52aWV3cy5nZW5lcmljIGltcG9ydCBSZWRpcmVjdFZpZXcsIFRlbXBsYXRlVmlldwogCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2VCYWRSZXF1ZXN0CkBAIC0yNSw0OSArMjUsNTAgQEAKIGZyb20gdG9hc3Rlcmd1aSBpbXBvcnQgdHlwZWFoZWFkcwogZnJvbSB0b2FzdGVyZ3VpIGltcG9ydCBhcGkKIGZyb20gdG9hc3Rlcmd1aSBpbXBvcnQgd2lkZ2V0cworZnJvbSB0b2FzdGVyZ3VpIGltcG9ydCB2aWV3cwogCi11cmxwYXR0ZXJucyA9IHBhdHRlcm5zKCd0b2FzdGVyZ3VpLnZpZXdzJywKK3VybHBhdHRlcm5zID0gWwogICAgICAgICAjIGxhbmRpbmcgcGFnZQotICAgICAgICB1cmwocidebGFuZGluZy8kJywgJ2xhbmRpbmcnLCBuYW1lPSdsYW5kaW5nJyksCisgICAgICAgIHVybChyJ15sYW5kaW5nLyQnLCB2aWV3cy5sYW5kaW5nLCBuYW1lPSdsYW5kaW5nJyksCiAKICAgICAgICAgdXJsKHInXmJ1aWxkcy8kJywKICAgICAgICAgICAgIHRhYmxlcy5BbGxCdWlsZHNUYWJsZS5hc192aWV3KHRlbXBsYXRlX25hbWU9ImJ1aWxkcy10b2FzdGVydGFibGUuaHRtbCIpLAogICAgICAgICAgICAgbmFtZT0nYWxsLWJ1aWxkcycpLAogCiAgICAgICAgICMgYnVpbGQgaW5mbyBuYXZpZ2F0aW9uCi0gICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKSQnLCAnYnVpbGRkYXNoYm9hcmQnLCBuYW1lPSJidWlsZGRhc2hib2FyZCIpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykkJywgdmlld3MuYnVpbGRkYXNoYm9hcmQsIG5hbWU9ImJ1aWxkZGFzaGJvYXJkIiksCiAgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS90YXNrcy8kJywKICAgICAgICAgICAgIGJ1aWxkdGFibGVzLkJ1aWxkVGFza3NUYWJsZS5hc192aWV3KAogICAgICAgICAgICAgICAgIHRlbXBsYXRlX25hbWU9ImJ1aWxkaW5mby10b2FzdGVydGFibGUuaHRtbCIpLAogICAgICAgICAgICAgbmFtZT0ndGFza3MnKSwKIAotICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFzay8oP1A8dGFza19pZD5cZCspJCcsICd0YXNrJywgbmFtZT0ndGFzaycpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFzay8oP1A8dGFza19pZD5cZCspJCcsIHZpZXdzLnRhc2ssIG5hbWU9J3Rhc2snKSwKIAogICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcmVjaXBlcy8kJywKICAgICAgICAgICAgIGJ1aWxkdGFibGVzLkJ1aWx0UmVjaXBlc1RhYmxlLmFzX3ZpZXcoCiAgICAgICAgICAgICAgICAgdGVtcGxhdGVfbmFtZT0iYnVpbGRpbmZvLXRvYXN0ZXJ0YWJsZS5odG1sIiksCiAgICAgICAgICAgICBuYW1lPSdyZWNpcGVzJyksCiAKLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3JlY2lwZS8oP1A8cmVjaXBlX2lkPlxkKykvYWN0aXZlX3RhYi8oP1A8YWN0aXZlX3RhYj5cZHsxfSkkJywgJ3JlY2lwZScsIG5hbWU9J3JlY2lwZScpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcmVjaXBlLyg/UDxyZWNpcGVfaWQ+XGQrKS9hY3RpdmVfdGFiLyg/UDxhY3RpdmVfdGFiPlxkezF9KSQnLCB2aWV3cy5yZWNpcGUsIG5hbWU9J3JlY2lwZScpLAogCi0gICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9yZWNpcGUvKD9QPHJlY2lwZV9pZD5cZCspJCcsICdyZWNpcGUnLCBuYW1lPSdyZWNpcGUnKSwKLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3JlY2lwZV9wYWNrYWdlcy8oP1A8cmVjaXBlX2lkPlxkKykkJywgJ3JlY2lwZV9wYWNrYWdlcycsIG5hbWU9J3JlY2lwZV9wYWNrYWdlcycpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcmVjaXBlLyg/UDxyZWNpcGVfaWQ+XGQrKSQnLCB2aWV3cy5yZWNpcGUsIG5hbWU9J3JlY2lwZScpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcmVjaXBlX3BhY2thZ2VzLyg/UDxyZWNpcGVfaWQ+XGQrKSQnLCB2aWV3cy5yZWNpcGVfcGFja2FnZXMsIG5hbWU9J3JlY2lwZV9wYWNrYWdlcycpLAogCiAgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9wYWNrYWdlcy8kJywKICAgICAgICAgICAgIGJ1aWxkdGFibGVzLkJ1aWx0UGFja2FnZXNUYWJsZS5hc192aWV3KAogICAgICAgICAgICAgICAgIHRlbXBsYXRlX25hbWU9ImJ1aWxkaW5mby10b2FzdGVydGFibGUuaHRtbCIpLAogICAgICAgICAgICAgbmFtZT0ncGFja2FnZXMnKSwKIAotICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcGFja2FnZS8oP1A8cGFja2FnZV9pZD5cZCspJCcsICdwYWNrYWdlX2J1aWx0X2RldGFpbCcsCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9wYWNrYWdlLyg/UDxwYWNrYWdlX2lkPlxkKykkJywgdmlld3MucGFja2FnZV9idWlsdF9kZXRhaWwsCiAgICAgICAgICAgICAgICAgbmFtZT0ncGFja2FnZV9idWlsdF9kZXRhaWwnKSwKICAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3BhY2thZ2VfYnVpbHRfZGVwZW5kZW5jaWVzLyg/UDxwYWNrYWdlX2lkPlxkKykkJywKLSAgICAgICAgICAgICdwYWNrYWdlX2J1aWx0X2RlcGVuZGVuY2llcycsIG5hbWU9J3BhY2thZ2VfYnVpbHRfZGVwZW5kZW5jaWVzJyksCisgICAgICAgICAgICB2aWV3cy5wYWNrYWdlX2J1aWx0X2RlcGVuZGVuY2llcywgbmFtZT0ncGFja2FnZV9idWlsdF9kZXBlbmRlbmNpZXMnKSwKICAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3BhY2thZ2VfaW5jbHVkZWRfZGV0YWlsLyg/UDx0YXJnZXRfaWQ+XGQrKS8oP1A8cGFja2FnZV9pZD5cZCspJCcsCi0gICAgICAgICAgICAncGFja2FnZV9pbmNsdWRlZF9kZXRhaWwnLCBuYW1lPSdwYWNrYWdlX2luY2x1ZGVkX2RldGFpbCcpLAorICAgICAgICAgICAgdmlld3MucGFja2FnZV9pbmNsdWRlZF9kZXRhaWwsIG5hbWU9J3BhY2thZ2VfaW5jbHVkZWRfZGV0YWlsJyksCiAgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9wYWNrYWdlX2luY2x1ZGVkX2RlcGVuZGVuY2llcy8oP1A8dGFyZ2V0X2lkPlxkKykvKD9QPHBhY2thZ2VfaWQ+XGQrKSQnLAotICAgICAgICAgICAgJ3BhY2thZ2VfaW5jbHVkZWRfZGVwZW5kZW5jaWVzJywgbmFtZT0ncGFja2FnZV9pbmNsdWRlZF9kZXBlbmRlbmNpZXMnKSwKKyAgICAgICAgICAgIHZpZXdzLnBhY2thZ2VfaW5jbHVkZWRfZGVwZW5kZW5jaWVzLCBuYW1lPSdwYWNrYWdlX2luY2x1ZGVkX2RlcGVuZGVuY2llcycpLAogICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvcGFja2FnZV9pbmNsdWRlZF9yZXZlcnNlX2RlcGVuZGVuY2llcy8oP1A8dGFyZ2V0X2lkPlxkKykvKD9QPHBhY2thZ2VfaWQ+XGQrKSQnLAotICAgICAgICAgICAgJ3BhY2thZ2VfaW5jbHVkZWRfcmV2ZXJzZV9kZXBlbmRlbmNpZXMnLCBuYW1lPSdwYWNrYWdlX2luY2x1ZGVkX3JldmVyc2VfZGVwZW5kZW5jaWVzJyksCisgICAgICAgICAgICB2aWV3cy5wYWNrYWdlX2luY2x1ZGVkX3JldmVyc2VfZGVwZW5kZW5jaWVzLCBuYW1lPSdwYWNrYWdlX2luY2x1ZGVkX3JldmVyc2VfZGVwZW5kZW5jaWVzJyksCiAKICAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3RhcmdldC8oP1A8dGFyZ2V0X2lkPlxkKykkJywKICAgICAgICAgICAgIGJ1aWxkdGFibGVzLkluc3RhbGxlZFBhY2thZ2VzVGFibGUuYXNfdmlldygKQEAgLTc1LDExICs3NiwxMSBAQAogICAgICAgICAgICAgbmFtZT0ndGFyZ2V0JyksCiAKIAotICAgICAgICB1cmwocideZGVudHJpZXMvYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFyZ2V0Lyg/UDx0YXJnZXRfaWQ+XGQrKSQnLCAneGhyX2RpcmluZm8nLCBuYW1lPSdkaXJpbmZvX2FqYXgnKSwKLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3RhcmdldC8oP1A8dGFyZ2V0X2lkPlxkKykvZGlyaW5mbyQnLCAnZGlyaW5mbycsIG5hbWU9J2RpcmluZm8nKSwKLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL3RhcmdldC8oP1A8dGFyZ2V0X2lkPlxkKykvZGlyaW5mb19maWxlcGF0aC9fKD9QPGZpbGVfcGF0aD4oPzovW14vXG5dKykqKSQnLCAnZGlyaW5mbycsIG5hbWU9J2RpcmluZm9fZmlsZXBhdGgnKSwKLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL2NvbmZpZ3VyYXRpb24kJywgJ2NvbmZpZ3VyYXRpb24nLCBuYW1lPSdjb25maWd1cmF0aW9uJyksCi0gICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9jb25maWd2YXJzJCcsICdjb25maWd2YXJzJywgbmFtZT0nY29uZmlndmFycycpLAorICAgICAgICB1cmwocideZGVudHJpZXMvYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFyZ2V0Lyg/UDx0YXJnZXRfaWQ+XGQrKSQnLCB2aWV3cy54aHJfZGlyaW5mbywgbmFtZT0nZGlyaW5mb19hamF4JyksCisgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS90YXJnZXQvKD9QPHRhcmdldF9pZD5cZCspL2RpcmluZm8kJywgdmlld3MuZGlyaW5mbywgbmFtZT0nZGlyaW5mbycpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFyZ2V0Lyg/UDx0YXJnZXRfaWQ+XGQrKS9kaXJpbmZvX2ZpbGVwYXRoL18oP1A8ZmlsZV9wYXRoPig/Oi9bXi9cbl0rKSopJCcsIHZpZXdzLmRpcmluZm8sIG5hbWU9J2RpcmluZm9fZmlsZXBhdGgnKSwKKyAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL2NvbmZpZ3VyYXRpb24kJywgdmlld3MuY29uZmlndXJhdGlvbiwgbmFtZT0nY29uZmlndXJhdGlvbicpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvY29uZmlndmFycyQnLCB2aWV3cy5jb25maWd2YXJzLCBuYW1lPSdjb25maWd2YXJzJyksCiAgICAgICAgIHVybChyJ15idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKS9idWlsZHRpbWUkJywKICAgICAgICAgICAgIGJ1aWxkdGFibGVzLkJ1aWxkVGltZVRhYmxlLmFzX3ZpZXcoCiAgICAgICAgICAgICAgICAgdGVtcGxhdGVfbmFtZT0iYnVpbGRpbmZvLXRvYXN0ZXJ0YWJsZS5odG1sIiksCkBAIC05NywyNiArOTgsMjYgQEAKIAogICAgICAgICAjIGltYWdlIGluZm9ybWF0aW9uIGRpcgogICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvdGFyZ2V0Lyg/UDx0YXJnZXRfaWQ+XGQrKS9wYWNrYWdlZmlsZS8oP1A8cGFja2FnZWZpbGVfaWQ+XGQrKSQnLAotICAgICAgICAgICAgICdpbWFnZV9pbmZvcm1hdGlvbl9kaXInLCBuYW1lPSdpbWFnZV9pbmZvcm1hdGlvbl9kaXInKSwKKyAgICAgICAgICAgICB2aWV3cy5pbWFnZV9pbmZvcm1hdGlvbl9kaXIsIG5hbWU9J2ltYWdlX2luZm9ybWF0aW9uX2RpcicpLAogCiAgICAgICAgICMgYnVpbGQgZG93bmxvYWQgYXJ0aWZhY3QKLSAgICAgICAgdXJsKHInXmJ1aWxkLyg/UDxidWlsZF9pZD5cZCspL2FydGlmYWN0Lyg/UDxhcnRpZmFjdF90eXBlPlx3KykvaWQvKD9QPGFydGlmYWN0X2lkPlx3KyknLCAnYnVpbGRfYXJ0aWZhY3QnLCBuYW1lPSJidWlsZF9hcnRpZmFjdCIpLAorICAgICAgICB1cmwocideYnVpbGQvKD9QPGJ1aWxkX2lkPlxkKykvYXJ0aWZhY3QvKD9QPGFydGlmYWN0X3R5cGU+XHcrKS9pZC8oP1A8YXJ0aWZhY3RfaWQ+XHcrKScsIHZpZXdzLmJ1aWxkX2FydGlmYWN0LCBuYW1lPSJidWlsZF9hcnRpZmFjdCIpLAogCiAgICAgICAgICMgcHJvamVjdCBVUkxzCi0gICAgICAgIHVybChyJ15uZXdwcm9qZWN0LyQnLCAnbmV3cHJvamVjdCcsIG5hbWU9J25ld3Byb2plY3QnKSwKKyAgICAgICAgdXJsKHInXm5ld3Byb2plY3QvJCcsIHZpZXdzLm5ld3Byb2plY3QsIG5hbWU9J25ld3Byb2plY3QnKSwKIAogICAgICAgICB1cmwocidecHJvamVjdHMvJCcsCiAgICAgICAgICAgICB0YWJsZXMuUHJvamVjdHNUYWJsZS5hc192aWV3KHRlbXBsYXRlX25hbWU9InByb2plY3RzLXRvYXN0ZXJ0YWJsZS5odG1sIiksCiAgICAgICAgICAgICBuYW1lPSdhbGwtcHJvamVjdHMnKSwKIAotICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvJCcsICdwcm9qZWN0JywgbmFtZT0ncHJvamVjdCcpLAotICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvY29uZmlndXJhdGlvbiQnLCAncHJvamVjdGNvbmYnLCBuYW1lPSdwcm9qZWN0Y29uZicpLAorICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvJCcsIHZpZXdzLnByb2plY3QsIG5hbWU9J3Byb2plY3QnKSwKKyAgICAgICAgdXJsKHInXnByb2plY3QvKD9QPHBpZD5cZCspL2NvbmZpZ3VyYXRpb24kJywgdmlld3MucHJvamVjdGNvbmYsIG5hbWU9J3Byb2plY3Rjb25mJyksCiAgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9idWlsZHMvJCcsCiAgICAgICAgICAgICB0YWJsZXMuUHJvamVjdEJ1aWxkc1RhYmxlLmFzX3ZpZXcodGVtcGxhdGVfbmFtZT0icHJvamVjdGJ1aWxkcy10b2FzdGVydGFibGUuaHRtbCIpLAogICAgICAgICAgICAgbmFtZT0ncHJvamVjdGJ1aWxkcycpLAogCiAgICAgICAgICMgdGhlIGltcG9ydCBsYXllciBpcyBhIHByb2plY3Qtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eTsKLSAgICAgICAgdXJsKHInXnByb2plY3QvKD9QPHBpZD5cZCspL2ltcG9ydGxheWVyJCcsICdpbXBvcnRsYXllcicsIG5hbWU9J2ltcG9ydGxheWVyJyksCisgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9pbXBvcnRsYXllciQnLCB2aWV3cy5pbXBvcnRsYXllciwgbmFtZT0naW1wb3J0bGF5ZXInKSwKIAogICAgICAgICAjIHRoZSB0YWJsZSBwYWdlcyB0aGF0IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gVG9hc3RlclRhYmxlIHdpZGdldAogICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvbWFjaGluZXMvJCcsCkBAIC0xNDIsNyArMTQzLDcgQEAKICAgICAgICAgICAgIG5hbWU9InByb2plY3RsYXllcnMiKSwKIAogICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvbGF5ZXIvKD9QPGxheWVyaWQ+XGQrKSQnLAotICAgICAgICAgICAgJ2xheWVyZGV0YWlscycsIG5hbWU9J2xheWVyZGV0YWlscycpLAorICAgICAgICAgICAgdmlld3MubGF5ZXJkZXRhaWxzLCBuYW1lPSdsYXllcmRldGFpbHMnKSwKIAogICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvbGF5ZXIvKD9QPGxheWVyaWQ+XGQrKS9yZWNpcGVzLyQnLAogICAgICAgICAgICAgdGFibGVzLkxheWVyUmVjaXBlc1RhYmxlLmFzX3ZpZXcodGVtcGxhdGVfbmFtZT0iZ2VuZXJpYy10b2FzdGVydGFibGUtcGFnZS5odG1sIiksCkBAIC0xNTcsNiArMTU4LDExIEBACiAgICAgICAgICAgICBuYW1lPXRhYmxlcy5MYXllck1hY2hpbmVzVGFibGUuX19uYW1lX18ubG93ZXIoKSksCiAKIAorICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvZGlzdHJvcy8kJywKKyAgICAgICAgICAgIHRhYmxlcy5EaXN0cm9zVGFibGUuYXNfdmlldyh0ZW1wbGF0ZV9uYW1lPSJnZW5lcmljLXRvYXN0ZXJ0YWJsZS1wYWdlLmh0bWwiKSwKKyAgICAgICAgICAgIG5hbWU9InByb2plY3RkaXN0cm9zIiksCisKKwogICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvY3VzdG9tcmVjaXBlLyg/UDxjdXN0cmVjaXBlaWQ+XGQrKS9zZWxlY3RwYWNrYWdlcy8kJywKICAgICAgICAgICAgIHRhYmxlcy5TZWxlY3RQYWNrYWdlc1RhYmxlLmFzX3ZpZXcoKSwgbmFtZT0icmVjaXBlc2VsZWN0cGFja2FnZXMiKSwKIApAQCAtMTY2LDcgKzE3Miw3IEBACiAgICAgICAgICAgICBuYW1lPSJjdXN0b21yZWNpcGUiKSwKIAogICAgICAgICB1cmwocidecHJvamVjdC8oP1A8cGlkPlxkKykvY3VzdG9tcmVjaXBlLyg/UDxyZWNpcGVfaWQ+XGQrKS9kb3dubG9hZCQnLAotICAgICAgICAgICAgJ2N1c3RvbXJlY2lwZV9kb3dubG9hZCcsCisgICAgICAgICAgICB2aWV3cy5jdXN0b21yZWNpcGVfZG93bmxvYWQsCiAgICAgICAgICAgICBuYW1lPSJjdXN0b21yZWNpcGVkb3dubG9hZCIpLAogCiAgICAgICAgIHVybChyJ15wcm9qZWN0Lyg/UDxwaWQ+XGQrKS9yZWNpcGUvKD9QPHJlY2lwZV9pZD5cZCspJCcsCkBAIC0xODYsOSArMTkyLDEyIEBACiAgICAgICAgICAgICB0eXBlYWhlYWRzLkdpdFJldmlzaW9uVHlwZUFoZWFkLmFzX3ZpZXcoKSwKICAgICAgICAgICAgIG5hbWU9J3hocl9naXRyZXZ0eXBlYWhlYWQnKSwKIAotICAgICAgICB1cmwocideeGhyX3Rlc3RyZWxlYXNlY2hhbmdlLyg/UDxwaWQ+XGQrKSQnLCAneGhyX3Rlc3RyZWxlYXNlY2hhbmdlJywKKyAgICAgICAgdXJsKHInXnhocl90eXBlYWhlYWQvKD9QPHBpZD5cZCspL2Rpc3Ryb3MkJywKKyAgICAgICAgICAgIHR5cGVhaGVhZHMuRGlzdHJvc1R5cGVBaGVhZC5hc192aWV3KCksIG5hbWU9J3hocl9kaXN0cm9zdHlwZWFoZWFkJyksCisKKyAgICAgICAgdXJsKHInXnhocl90ZXN0cmVsZWFzZWNoYW5nZS8oP1A8cGlkPlxkKykkJywgdmlld3MueGhyX3Rlc3RyZWxlYXNlY2hhbmdlLAogICAgICAgICAgICAgbmFtZT0neGhyX3Rlc3RyZWxlYXNlY2hhbmdlJyksCi0gICAgICAgIHVybChyJ154aHJfY29uZmlndmFyZWRpdC8oP1A8cGlkPlxkKykkJywgJ3hocl9jb25maWd2YXJlZGl0JywKKyAgICAgICAgdXJsKHInXnhocl9jb25maWd2YXJlZGl0Lyg/UDxwaWQ+XGQrKSQnLCB2aWV3cy54aHJfY29uZmlndmFyZWRpdCwKICAgICAgICAgICAgIG5hbWU9J3hocl9jb25maWd2YXJlZGl0JyksCiAKICAgICAgICAgdXJsKHInXnhocl9sYXllci8oP1A8cGlkPlxkKykvKD9QPGxheWVydmVyc2lvbl9pZD5cZCspJCcsCkBAIC0yMDAsNyArMjA5LDcgQEAKICAgICAgICAgICAgIG5hbWU9J3hocl9sYXllcicpLAogCiAgICAgICAgICMgSlMgVW5pdCB0ZXN0cwotICAgICAgICB1cmwocideanMtdW5pdC10ZXN0cy8kJywgJ2pzdW5pdHRlc3RzJywgbmFtZT0nanMtdW5pdC10ZXN0cycpLAorICAgICAgICB1cmwocideanMtdW5pdC10ZXN0cy8kJywgdmlld3MuanN1bml0dGVzdHMsIG5hbWU9J2pzLXVuaXQtdGVzdHMnKSwKIAogICAgICAgICAjIGltYWdlIGN1c3RvbWlzYXRpb24gZnVuY3Rpb25hbGl0eQogICAgICAgICB1cmwocideeGhyX2N1c3RvbXJlY2lwZS8oP1A8cmVjaXBlX2lkPlxkKyknCkBAIC0yMzUsNiArMjQ0LDExIEBACiAgICAgICAgIHVybChyJ15tb3N0cmVjZW50YnVpbGRzJCcsIHdpZGdldHMuTW9zdFJlY2VudEJ1aWxkc1ZpZXcuYXNfdmlldygpLAogICAgICAgICAgICAgbmFtZT0nbW9zdF9yZWNlbnRfYnVpbGRzJyksCiAKLSAgICAgICAgICAjIGRlZmF1bHQgcmVkaXJlY3Rpb24KKyAgICAgICAgIyBKU09OIGRhdGEgZm9yIGFnZ3JlZ2F0b3JzCisgICAgICAgIHVybChyJ15hcGkvYnVpbGRzJCcsIHZpZXdzLmpzb25fYnVpbGRzLCBuYW1lPSdqc29uX2J1aWxkcycpLAorICAgICAgICB1cmwocideYXBpL2J1aWxkaW5nJCcsIHZpZXdzLmpzb25fYnVpbGRpbmcsIG5hbWU9J2pzb25fYnVpbGRpbmcnKSwKKyAgICAgICAgdXJsKHInXmFwaS9idWlsZC8oP1A8YnVpbGRfaWQ+XGQrKSQnLCB2aWV3cy5qc29uX2J1aWxkLCBuYW1lPSdqc29uX2J1aWxkJyksCisKKyAgICAgICAgIyBkZWZhdWx0IHJlZGlyZWN0aW9uCiAgICAgICAgIHVybChyJ14kJywgUmVkaXJlY3RWaWV3LmFzX3ZpZXcodXJsPSdsYW5kaW5nJywgcGVybWFuZW50PVRydWUpKSwKLSkKK10KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3ZpZXdzLnB5CmluZGV4IDc1YzU5MTEuLjM0ZWQyYjIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQpAQCAtMzUsNyArMzUsNyBAQAogZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UsIHJlc29sdmUKIGZyb20gZGphbmdvLmNvcmUuZXhjZXB0aW9ucyBpbXBvcnQgTXVsdGlwbGVPYmplY3RzUmV0dXJuZWQsIE9iamVjdERvZXNOb3RFeGlzdAogZnJvbSBkamFuZ28uY29yZS5wYWdpbmF0b3IgaW1wb3J0IFBhZ2luYXRvciwgRW1wdHlQYWdlLCBQYWdlTm90QW5JbnRlZ2VyCi1mcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2VOb3RGb3VuZAorZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlTm90Rm91bmQsIEpzb25SZXNwb25zZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVsdGEsIGRhdGV0aW1lCiBmcm9tIHRvYXN0ZXJndWkudGVtcGxhdGV0YWdzLnByb2plY3R0YWdzIGltcG9ydCBqc29uIGFzIGpzb25maWx0ZXIKQEAgLTQ5LDYgKzQ5LDggQEAKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInRvYXN0ZXIiKQogCisjIFByb2plY3QgY3JlYXRpb24gYW5kIG1hbmFnZWQgYnVpbGQgZW5hYmxlCitwcm9qZWN0X2VuYWJsZSA9ICgnMScgPT0gb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfQlVJTERTRVJWRVInKSkKIAogY2xhc3MgTWltZVR5cGVGaW5kZXIob2JqZWN0KToKICAgICAjIHNldHRpbmcgdGhpcyB0byBGYWxzZSBlbmFibGVzIGFkZGl0aW9uYWwgbm9uLXN0YW5kYXJkIG1pbWV0eXBlcwpAQCAtNjUsNiArNjcsMTIgQEAKICAgICAgICAgICAgIGd1ZXNzZWRfdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCiAgICAgICAgIHJldHVybiBndWVzc2VkX3R5cGUKIAorIyBzaW5nbGUgcG9pbnQgdG8gYWRkIGdsb2JhbCB2YWx1ZXMgaW50byB0aGUgY29udGV4dCBiZWZvcmUgcmVuZGVyaW5nCitkZWYgdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgcGFnZSwgY29udGV4dCk6CisgICAgY29udGV4dFsncHJvamVjdF9lbmFibGUnXSA9IHByb2plY3RfZW5hYmxlCisgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCBwYWdlLCBjb250ZXh0KQorCisKICMgYWxsIG5ldyBzZXNzaW9ucyBzaG91bGQgY29tZSB0aHJvdWdoIHRoZSBsYW5kaW5nIHBhZ2U7CiAjIGRldGVybWluZSBpbiB3aGljaCBtb2RlIHdlIGFyZSBydW5uaW5nIGluLCBhbmQgcmVkaXJlY3QgYXBwcm9wcmlhdGVseQogZGVmIGxhbmRpbmcocmVxdWVzdCk6CkBAIC04Niw3ICs5NCw3IEBACiAKICAgICBjb250ZXh0ID0geydsdnNfbm9zJyA6IExheWVyX1ZlcnNpb24ub2JqZWN0cy5hbGwoKS5jb3VudCgpfQogCi0gICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCAnbGFuZGluZy5odG1sJywgY29udGV4dCkKKyAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgJ2xhbmRpbmcuaHRtbCcsIGNvbnRleHQpCiAKIGRlZiBvYmp0b2pzb24ob2JqKToKICAgICBmcm9tIGRqYW5nby5kYi5tb2RlbHMucXVlcnkgaW1wb3J0IFF1ZXJ5U2V0CkBAIC0yNzcsNyArMjg1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOb25lLCBpbnZhbGlkICsgc3RyKGZpZWxkX2lucHV0X2xpc3QpCiAKICAgICAgICAgIyBDaGVjayB3ZSBhcmUgbG9va2luZyBmb3IgYSB2YWxpZCBmaWVsZAotICAgICAgICB2YWxpZF9maWVsZHMgPSBtb2RlbC5fbWV0YS5nZXRfYWxsX2ZpZWxkX25hbWVzKCkKKyAgICAgICAgdmFsaWRfZmllbGRzID0gW2YubmFtZSBmb3IgZiBpbiBtb2RlbC5fbWV0YS5nZXRfZmllbGRzKCldCiAgICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZF9pbnB1dF9saXN0WzBdLnNwbGl0KEFORF9WQUxVRV9TRVBBUkFUT1IpOgogICAgICAgICAgICAgaWYgVHJ1ZSBpbiBbZmllbGQuc3RhcnRzd2l0aCh4KSBmb3IgeCBpbiB2YWxpZF9maWVsZHNdOgogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC00NTcsMTAgKzQ2NSwxNSBAQAogICAgICAgICBucGtnID0gMAogICAgICAgICBwa2dzeiA9IDAKICAgICAgICAgcGFja2FnZSA9IE5vbmUKLSAgICAgICAgZm9yIHBhY2thZ2UgaW4gUGFja2FnZS5vYmplY3RzLmZpbHRlcihpZF9faW4gPSBbeC5wYWNrYWdlX2lkIGZvciB4IGluIHQudGFyZ2V0X2luc3RhbGxlZF9wYWNrYWdlX3NldC5hbGwoKV0pOgotICAgICAgICAgICAgcGtnc3ogPSBwa2dzeiArIHBhY2thZ2Uuc2l6ZQotICAgICAgICAgICAgaWYgcGFja2FnZS5pbnN0YWxsZWRfbmFtZToKLSAgICAgICAgICAgICAgICBucGtnID0gbnBrZyArIDEKKyAgICAgICAgIyBDaHVuayB0aGUgcXVlcnkgdG8gYXZvaWQgInRvbyBtYW55IFNRTCB2YXJpYWJsZXMiIGVycm9yCisgICAgICAgIHBhY2thZ2Vfc2V0ID0gdC50YXJnZXRfaW5zdGFsbGVkX3BhY2thZ2Vfc2V0LmFsbCgpCisgICAgICAgIHBhY2thZ2Vfc2V0X2xlbiA9IGxlbihwYWNrYWdlX3NldCkKKyAgICAgICAgZm9yIHBzX3N0YXJ0IGluIHJhbmdlKDAscGFja2FnZV9zZXRfbGVuLDUwMCk6CisgICAgICAgICAgICBwc19zdG9wID0gbWluKHBzX3N0YXJ0KzUwMCxwYWNrYWdlX3NldF9sZW4pCisgICAgICAgICAgICBmb3IgcGFja2FnZSBpbiBQYWNrYWdlLm9iamVjdHMuZmlsdGVyKGlkX19pbiA9IFt4LnBhY2thZ2VfaWQgZm9yIHggaW4gcGFja2FnZV9zZXRbcHNfc3RhcnQ6cHNfc3RvcF1dKToKKyAgICAgICAgICAgICAgICBwa2dzeiA9IHBrZ3N6ICsgcGFja2FnZS5zaXplCisgICAgICAgICAgICAgICAgaWYgcGFja2FnZS5pbnN0YWxsZWRfbmFtZToKKyAgICAgICAgICAgICAgICAgICAgbnBrZyA9IG5wa2cgKyAxCiAgICAgICAgIGVsZW1bJ25wa2cnXSA9IG5wa2cKICAgICAgICAgZWxlbVsncGtnc3onXSA9IHBrZ3N6CiAgICAgICAgIHRpID0gVGFyZ2V0X0ltYWdlX0ZpbGUub2JqZWN0cy5maWx0ZXIodGFyZ2V0X2lkID0gdC5pZCkKQEAgLTUxNCw3ICs1MjcsNyBAQAogICAgICAgICAgICAgJ3BhY2thZ2Vjb3VudCcgICAgOiBwYWNrYWdlQ291bnQsCiAgICAgICAgICAgICAnbG9nbWVzc2FnZXMnICAgICA6IGxvZ21lc3NhZ2VzLAogICAgIH0KLSAgICByZXR1cm4gcmVuZGVyKCByZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCApCisgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKCByZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCApCiAKIAogCkBAIC01ODYsNyArNTk5LDcgQEAKICAgICAgICAgICAgIGJ1aWxkX19jb21wbGV0ZWRfb25fX2x0PXRhc2tfb2JqZWN0LmJ1aWxkLmNvbXBsZXRlZF9vbikuZXhjbHVkZSgKICAgICAgICAgICAgIG9yZGVyX19pc251bGw9VHJ1ZSkuZXhjbHVkZShvdXRjb21lPVRhc2suT1VUQ09NRV9OQSkub3JkZXJfYnkoJy1idWlsZF9fY29tcGxldGVkX29uJykKIAotICAgIHJldHVybiByZW5kZXIoIHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0ICkKKyAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIoIHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0ICkKIAogZGVmIHJlY2lwZShyZXF1ZXN0LCBidWlsZF9pZCwgcmVjaXBlX2lkLCBhY3RpdmVfdGFiPSIxIik6CiAgICAgdGVtcGxhdGUgPSAicmVjaXBlLmh0bWwiCkBAIC02MTMsNyArNjI2LDcgQEAKICAgICAgICAgICAgICdwYWNrYWdlX2NvdW50JyA6IHBhY2thZ2VfY291bnQsCiAgICAgICAgICAgICAndGFiX3N0YXRlcycgOiB0YWJfc3RhdGVzLAogICAgIH0KLSAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKIAogZGVmIHJlY2lwZV9wYWNrYWdlcyhyZXF1ZXN0LCBidWlsZF9pZCwgcmVjaXBlX2lkKToKICAgICB0ZW1wbGF0ZSA9ICJyZWNpcGVfcGFja2FnZXMuaHRtbCIKQEAgLTY1OCw3ICs2NzEsNyBAQAogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0KICAgICAgICB9Ci0gICAgcmVzcG9uc2UgPSByZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCisgICAgcmVzcG9uc2UgPSB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKICAgICBfc2V0X3BhcmFtZXRlcnNfdmFsdWVzKHBhZ2VzaXplLCBvcmRlcmJ5LCByZXF1ZXN0KQogICAgIHJldHVybiByZXNwb25zZQogCkBAIC03ODAsNyArNzkzLDcgQEAKICAgICAgICAgICAgICAgICAnZGlyX2xpc3QnOiBkaXJfbGlzdCwKICAgICAgICAgICAgICAgICAnZmlsZV9wYXRoJzogZmlsZV9wYXRoLAogICAgICAgICAgICAgICB9Ci0gICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAKIGRlZiBfZmluZF90YXNrX2RlcCh0YXNrX29iamVjdCk6CiAgICAgdGRlcHMgPSBUYXNrX0RlcGVuZGVuY3kub2JqZWN0cy5maWx0ZXIodGFzaz10YXNrX29iamVjdCkuZmlsdGVyKGRlcGVuZHNfb25fX29yZGVyX19ndD0wKQpAQCAtODMyLDcgKzg0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICdidWlsZCc6IGJ1aWxkLAogICAgICAgICAgICAgICAgICAgICAncHJvamVjdCc6IGJ1aWxkLnByb2plY3QsCiAgICAgICAgICAgICAgICAgICAgICd0YXJnZXRzJzogVGFyZ2V0Lm9iamVjdHMuZmlsdGVyKGJ1aWxkPWJ1aWxkX2lkKX0pCi0gICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAKIAogZGVmIGNvbmZpZ3ZhcnMocmVxdWVzdCwgYnVpbGRfaWQpOgpAQCAtOTIxLDcgKzkzNCw3IEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgIH0KIAotICAgIHJlc3BvbnNlID0gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJlc3BvbnNlID0gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAgICAgX3NldF9wYXJhbWV0ZXJzX3ZhbHVlcyhwYWdlc2l6ZSwgb3JkZXJieSwgcmVxdWVzdCkKICAgICByZXR1cm4gcmVzcG9uc2UKIApAQCAtOTM0LDcgKzk0Nyw3IEBACiAgICAgICAgICdwcm9qZWN0JzogYnVpbGQucHJvamVjdCwKICAgICAgICAgJ29iamVjdHMnIDogZmlsZXMKICAgICB9Ci0gICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAKIAogIyBBIHNldCBvZiBkZXBlbmRlbmN5IHR5cGVzIHZhbGlkIGZvciBib3RoIGluY2x1ZGVkIGFuZCBidWlsdCBwYWNrYWdlIHZpZXdzCkBAIC0xMDg3LDcgKzExMDAsNyBAQAogICAgIGlmIHBhdGhzLmFsbCgpLmNvdW50KCkgPCAyOgogICAgICAgICBjb250ZXh0WydkaXNhYmxlX3NvcnQnXSA9IFRydWU7CiAKLSAgICByZXNwb25zZSA9IHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICByZXNwb25zZSA9IHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQogICAgIF9zZXRfcGFyYW1ldGVyc192YWx1ZXMocGFnZXNpemUsIG9yZGVyYnksIHJlcXVlc3QpCiAgICAgcmV0dXJuIHJlc3BvbnNlCiAKQEAgLTExMDYsNyArMTExOSw3IEBACiAgICAgICAgICAgICAnb3RoZXJfZGVwcycgOiAgIGRlcGVuZGVuY2llc1snb3RoZXJfZGVwcyddLAogICAgICAgICAgICAgJ2RlcGVuZGVuY3lfY291bnQnIDogX2dldF9wYWNrYWdlX2RlcGVuZGVuY3lfY291bnQocGFja2FnZSwgLTEsICBGYWxzZSkKICAgICB9Ci0gICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAKIAogZGVmIHBhY2thZ2VfaW5jbHVkZWRfZGV0YWlsKHJlcXVlc3QsIGJ1aWxkX2lkLCB0YXJnZXRfaWQsIHBhY2thZ2VfaWQpOgpAQCAtMTE1Miw3ICsxMTY1LDcgQEAKICAgICB9CiAgICAgaWYgcGF0aHMuYWxsKCkuY291bnQoKSA8IDI6CiAgICAgICAgIGNvbnRleHRbJ2Rpc2FibGVfc29ydCddID0gVHJ1ZQotICAgIHJlc3BvbnNlID0gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJlc3BvbnNlID0gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAgICAgX3NldF9wYXJhbWV0ZXJzX3ZhbHVlcyhwYWdlc2l6ZSwgb3JkZXJieSwgcmVxdWVzdCkKICAgICByZXR1cm4gcmVzcG9uc2UKIApAQCAtMTE3Niw3ICsxMTg5LDcgQEAKICAgICAgICAgICAgICdyZXZlcnNlX2NvdW50JyA6IF9nZXRfcGFja2FnZV9yZXZlcnNlX2RlcF9jb3VudChwYWNrYWdlLCB0YXJnZXRfaWQpLAogICAgICAgICAgICAgJ2RlcGVuZGVuY3lfY291bnQnIDogX2dldF9wYWNrYWdlX2RlcGVuZGVuY3lfY291bnQocGFja2FnZSwgdGFyZ2V0X2lkLCBUcnVlKQogICAgIH0KLSAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQorICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKIAogZGVmIHBhY2thZ2VfaW5jbHVkZWRfcmV2ZXJzZV9kZXBlbmRlbmNpZXMocmVxdWVzdCwgYnVpbGRfaWQsIHRhcmdldF9pZCwgcGFja2FnZV9pZCk6CiAgICAgdGVtcGxhdGUgPSAicGFja2FnZV9pbmNsdWRlZF9yZXZlcnNlX2RlcGVuZGVuY2llcy5odG1sIgpAQCAtMTIyNyw3ICsxMjQwLDcgQEAKICAgICB9CiAgICAgaWYgb2JqZWN0cy5hbGwoKS5jb3VudCgpIDwgMjoKICAgICAgICAgY29udGV4dFsnZGlzYWJsZV9zb3J0J10gPSBUcnVlCi0gICAgcmVzcG9uc2UgPSByZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCisgICAgcmVzcG9uc2UgPSB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKICAgICBfc2V0X3BhcmFtZXRlcnNfdmFsdWVzKHBhZ2VzaXplLCBvcmRlcmJ5LCByZXF1ZXN0KQogICAgIHJldHVybiByZXNwb25zZQogCkBAIC0xMjUxLDYgKzEyNjQsODkgQEAKICAgICB9CiAgICAgcmV0dXJuIHJldAogCisjIFJFU1QtYmFzZWQgQVBJIGNhbGxzIHRvIHJldHVybiBidWlsZC9idWlsZGluZyBzdGF0dXMgdG8gZXh0ZXJuYWwgVG9hc3RlcgorIyBtYW5hZ2VycyBhbmQgYWdncmVnYXRvcnMgdmlhIEpTT04KKworZGVmIF9qc29uX2J1aWxkX3N0YXR1cyhidWlsZF9pZCxleHRlbmQpOgorICAgIGJ1aWxkX3N0YXQgPSBOb25lCisgICAgdHJ5OgorICAgICAgICBidWlsZCA9IEJ1aWxkLm9iamVjdHMuZ2V0KCBwayA9IGJ1aWxkX2lkICkKKyAgICAgICAgYnVpbGRfc3RhdCA9IHt9CisgICAgICAgIGJ1aWxkX3N0YXRbJ2lkJ10gPSBidWlsZC5pZAorICAgICAgICBidWlsZF9zdGF0WyduYW1lJ10gPSBidWlsZC5idWlsZF9uYW1lCisgICAgICAgIGJ1aWxkX3N0YXRbJ21hY2hpbmUnXSA9IGJ1aWxkLm1hY2hpbmUKKyAgICAgICAgYnVpbGRfc3RhdFsnZGlzdHJvJ10gPSBidWlsZC5kaXN0cm8KKyAgICAgICAgYnVpbGRfc3RhdFsnc3RhcnQnXSA9IGJ1aWxkLnN0YXJ0ZWRfb24KKyAgICAgICAgIyBsb29rIHVwIHRhcmdldCBuYW1lCisgICAgICAgIHRhcmdldD0gVGFyZ2V0Lm9iamVjdHMuZ2V0KCBidWlsZCA9IGJ1aWxkICkKKyAgICAgICAgaWYgdGFyZ2V0OgorICAgICAgICAgICAgaWYgdGFyZ2V0LnRhc2s6CisgICAgICAgICAgICAgICAgYnVpbGRfc3RhdFsndGFyZ2V0J10gPSAnJXM6JXMnICUgKHRhcmdldC50YXJnZXQsdGFyZ2V0LnRhc2spCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ3RhcmdldCddID0gJyVzJyAlICh0YXJnZXQudGFyZ2V0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnVpbGRfc3RhdFsndGFyZ2V0J10gPSAnJworICAgICAgICAjIGxvb2sgdXAgcHJvamVjdCBuYW1lCisgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KCBidWlsZCA9IGJ1aWxkICkKKyAgICAgICAgaWYgcHJvamVjdDoKKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ3Byb2plY3QnXSA9IHByb2plY3QubmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnVpbGRfc3RhdFsncHJvamVjdCddID0gJycKKyAgICAgICAgaWYgQnVpbGQuSU5fUFJPR1JFU1MgPT0gYnVpbGQub3V0Y29tZToKKyAgICAgICAgICAgIG5vdyA9IHRpbWV6b25lLm5vdygpCisgICAgICAgICAgICB0aW1lZGlmZiA9IG5vdyAtIGJ1aWxkLnN0YXJ0ZWRfb24KKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ3NlY29uZHMnXT0nJS4zZicgJSB0aW1lZGlmZi50b3RhbF9zZWNvbmRzKCkKKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ2Nsb25lJ109JyVkOiVkJyAlIChidWlsZC5yZXBvc19jbG9uZWQsYnVpbGQucmVwb3NfdG9fY2xvbmUpCisgICAgICAgICAgICBidWlsZF9zdGF0WydwYXJzZSddPSclZDolZCcgJSAoYnVpbGQucmVjaXBlc19wYXJzZWQsYnVpbGQucmVjaXBlc190b19wYXJzZSkKKyAgICAgICAgICAgIHRmID0gVGFzay5vYmplY3RzLmZpbHRlcihidWlsZCA9IGJ1aWxkKQorICAgICAgICAgICAgdGZjID0gdGYuY291bnQoKQorICAgICAgICAgICAgaWYgdGZjID4gMDoKKyAgICAgICAgICAgICAgICB0ZmQgPSB0Zi5leGNsdWRlKG9yZGVyX19pc251bGw9VHJ1ZSkuY291bnQoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZmQgPSAwCisgICAgICAgICAgICBidWlsZF9zdGF0Wyd0YXNrJ109JyVkOiVkJyAlICh0ZmQsdGZjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnVpbGRfc3RhdFsnb3V0Y29tZSddID0gYnVpbGQuZ2V0X291dGNvbWVfdGV4dCgpCisgICAgICAgICAgICB0aW1lZGlmZiA9IGJ1aWxkLmNvbXBsZXRlZF9vbiAtIGJ1aWxkLnN0YXJ0ZWRfb24KKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ3NlY29uZHMnXT0nJS4zZicgJSB0aW1lZGlmZi50b3RhbF9zZWNvbmRzKCkKKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ3N0b3AnXSA9IGJ1aWxkLmNvbXBsZXRlZF9vbgorICAgICAgICAgICAgbWVzc2FnZXMgPSBMb2dNZXNzYWdlLm9iamVjdHMuYWxsKCkuZmlsdGVyKGJ1aWxkID0gYnVpbGQpCisgICAgICAgICAgICBlcnJvcnMgPSBsZW4obWVzc2FnZXMuZmlsdGVyKGxldmVsPUxvZ01lc3NhZ2UuRVJST1IpIHwKKyAgICAgICAgICAgICAgICAgbWVzc2FnZXMuZmlsdGVyKGxldmVsPUxvZ01lc3NhZ2UuRVhDRVBUSU9OKSB8CisgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmZpbHRlcihsZXZlbD1Mb2dNZXNzYWdlLkNSSVRJQ0FMKSkKKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ2Vycm9ycyddID0gZXJyb3JzCisgICAgICAgICAgICB3YXJuaW5ncyA9IGxlbihtZXNzYWdlcy5maWx0ZXIobGV2ZWw9TG9nTWVzc2FnZS5XQVJOSU5HKSkKKyAgICAgICAgICAgIGJ1aWxkX3N0YXRbJ3dhcm5pbmdzJ10gPSB3YXJuaW5ncworICAgICAgICBpZiBleHRlbmQ6CisgICAgICAgICAgICBidWlsZF9zdGF0Wydjb29rZXJfbG9nJ10gPSBidWlsZC5jb29rZXJfbG9nX3BhdGgKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGJ1aWxkX3N0YXRlID0gc3RyKGUpCisgICAgcmV0dXJuIGJ1aWxkX3N0YXQKKworZGVmIGpzb25fYnVpbGRzKHJlcXVlc3QpOgorICAgIGJ1aWxkX3RhYmxlID0gW10KKyAgICBidWlsZHMgPSBbXQorICAgIHRyeToKKyAgICAgICAgYnVpbGRzID0gQnVpbGQub2JqZWN0cy5leGNsdWRlKG91dGNvbWU9QnVpbGQuSU5fUFJPR1JFU1MpLm9yZGVyX2J5KCItc3RhcnRlZF9vbiIpCisgICAgICAgIGZvciBidWlsZCBpbiBidWlsZHM6CisgICAgICAgICAgICBidWlsZF90YWJsZS5hcHBlbmQoX2pzb25fYnVpbGRfc3RhdHVzKGJ1aWxkLmlkLEZhbHNlKSkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGJ1aWxkX3RhYmxlID0gc3RyKGUpCisgICAgcmV0dXJuIEpzb25SZXNwb25zZSh7J2J1aWxkcycgOiBidWlsZF90YWJsZSwgJ2NvdW50JyA6IGxlbihidWlsZHMpfSkKKworZGVmIGpzb25fYnVpbGRpbmcocmVxdWVzdCk6CisgICAgYnVpbGRfdGFibGUgPSBbXQorICAgIGJ1aWxkcyA9IFtdCisgICAgdHJ5OgorICAgICAgICBidWlsZHMgPSBCdWlsZC5vYmplY3RzLmZpbHRlcihvdXRjb21lPUJ1aWxkLklOX1BST0dSRVNTKS5vcmRlcl9ieSgiLXN0YXJ0ZWRfb24iKQorICAgICAgICBmb3IgYnVpbGQgaW4gYnVpbGRzOgorICAgICAgICAgICAgYnVpbGRfdGFibGUuYXBwZW5kKF9qc29uX2J1aWxkX3N0YXR1cyhidWlsZC5pZCxGYWxzZSkpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBidWlsZF90YWJsZSA9IHN0cihlKQorICAgIHJldHVybiBKc29uUmVzcG9uc2UoeydidWlsZGluZycgOiBidWlsZF90YWJsZSwgJ2NvdW50JyA6IGxlbihidWlsZHMpfSkKKworZGVmIGpzb25fYnVpbGQocmVxdWVzdCxidWlsZF9pZCk6CisgICAgcmV0dXJuIEpzb25SZXNwb25zZSh7J2J1aWxkJyA6IF9qc29uX2J1aWxkX3N0YXR1cyhidWlsZF9pZCxUcnVlKX0pCiAKIAogaW1wb3J0IHRvYXN0ZXJtYWluLnNldHRpbmdzCkBAIC0xMjc3LDYgKzEzNzMsOSBAQAogCiAgICAgIyBuZXcgcHJvamVjdAogICAgIGRlZiBuZXdwcm9qZWN0KHJlcXVlc3QpOgorICAgICAgICBpZiBub3QgcHJvamVjdF9lbmFibGU6CisgICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoIGxhbmRpbmcgKQorCiAgICAgICAgIHRlbXBsYXRlID0gIm5ld3Byb2plY3QuaHRtbCIKICAgICAgICAgY29udGV4dCA9IHsKICAgICAgICAgICAgICdlbWFpbCc6IHJlcXVlc3QudXNlci5lbWFpbCBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpIGVsc2UgJycsCkBAIC0xMjkxLDcgKzEzOTAsNyBAQAogCiAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9kID09ICJHRVQiOgogICAgICAgICAgICAgIyByZW5kZXIgbmV3IHByb2plY3QgcGFnZQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKICAgICAgICAgZWxpZiByZXF1ZXN0Lm1ldGhvZCA9PSAiUE9TVCI6CiAgICAgICAgICAgICBtYW5kYXRvcnlfZmllbGRzID0gWydwcm9qZWN0bmFtZScsICdwdHlwZSddCiAgICAgICAgICAgICB0cnk6CkBAIC0xMzMxLDcgKzE0MzAsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250ZXh0WydhbGVydCddID0gIllvdXIgY2hvc2VuIHVzZXJuYW1lIGlzIGFscmVhZHkgdXNlZCIKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBjb250ZXh0WydhbGVydCddID0gc3RyKGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCiAKICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbnZhbGlkIEhUVFAgbWV0aG9kIGZvciB0aGlzIHBhZ2UiKQogCkBAIC0xMzM5LDcgKzE0MzgsNyBAQAogICAgIGRlZiBwcm9qZWN0KHJlcXVlc3QsIHBpZCk6CiAgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrPXBpZCkKICAgICAgICAgY29udGV4dCA9IHsicHJvamVjdCI6IHByb2plY3R9Ci0gICAgICAgIHJldHVybiByZW5kZXIocmVxdWVzdCwgInByb2plY3QuaHRtbCIsIGNvbnRleHQpCisgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCAicHJvamVjdC5odG1sIiwgY29udGV4dCkKIAogICAgIGRlZiBqc3VuaXR0ZXN0cyhyZXF1ZXN0KToKICAgICAgICAgIiIiIFByb3ZpZGVzIGEgcGFnZSBmb3IgdGhlIGpzIHVuaXQgdGVzdHMgIiIiCkBAIC0xMzY1LDcgKzE0NjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9Ik1BQ0hJTkUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJxZW11eDg2IikKICAgICAgICAgY29udGV4dCA9IHsncHJvamVjdCc6IG5ld19wcm9qZWN0fQotICAgICAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsICJqcy11bml0LXRlc3RzLmh0bWwiLCBjb250ZXh0KQorICAgICAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgImpzLXVuaXQtdGVzdHMuaHRtbCIsIGNvbnRleHQpCiAKICAgICBmcm9tIGRqYW5nby52aWV3cy5kZWNvcmF0b3JzLmNzcmYgaW1wb3J0IGNzcmZfZXhlbXB0CiAgICAgQGNzcmZfZXhlbXB0CkBAIC0xNTAwLDcgKzE1OTksNyBAQAogICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgJ3Byb2plY3QnOiBQcm9qZWN0Lm9iamVjdHMuZ2V0KGlkPXBpZCksCiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsIHRlbXBsYXRlLCBjb250ZXh0KQogCiAgICAgZGVmIGxheWVyZGV0YWlscyhyZXF1ZXN0LCBwaWQsIGxheWVyaWQpOgogICAgICAgICBwcm9qZWN0ID0gUHJvamVjdC5vYmplY3RzLmdldChwaz1waWQpCkBAIC0xNTI5LDcgKzE2MjgsNyBAQAogICAgICAgICAgICAgJ3Byb2plY3RsYXllcnMnOiBsaXN0KHByb2plY3RfbGF5ZXJzKQogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCAnbGF5ZXJkZXRhaWxzLmh0bWwnLCBjb250ZXh0KQorICAgICAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgJ2xheWVyZGV0YWlscy5odG1sJywgY29udGV4dCkKIAogCiAgICAgZGVmIGdldF9wcm9qZWN0X2NvbmZpZ3ZhcnNfY29udGV4dCgpOgpAQCAtMTYxOSw3ICsxNzE4LDcgQEAKICAgICAgICAgZXhjZXB0IChQcm9qZWN0VmFyaWFibGUuRG9lc05vdEV4aXN0LCBCdWlsZEVudmlyb25tZW50LkRvZXNOb3RFeGlzdCk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCAicHJvamVjdGNvbmYuaHRtbCIsIGNvbnRleHQpCisgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCAicHJvamVjdGNvbmYuaHRtbCIsIGNvbnRleHQpCiAKICAgICBkZWYgX2ZpbGVfbmFtZXNfZm9yX2FydGlmYWN0KGJ1aWxkLCBhcnRpZmFjdF90eXBlLCBhcnRpZmFjdF9pZCk6CiAgICAgICAgICIiIgpAQCAtMTY4Niw2ICsxNzg1LDcgQEAKIAogICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsICJ1bmF2YWlsYWJsZV9hcnRpZmFjdC5odG1sIikKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgInVuYXZhaWxhYmxlX2FydGlmYWN0Lmh0bWwiKQogICAgICAgICBleGNlcHQgKE9iamVjdERvZXNOb3RFeGlzdCwgSU9FcnJvcik6Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyKHJlcXVlc3QsICJ1bmF2YWlsYWJsZV9hcnRpZmFjdC5odG1sIikKKyAgICAgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCAidW5hdmFpbGFibGVfYXJ0aWZhY3QuaHRtbCIpCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvd2lkZ2V0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvd2lkZ2V0cy5weQppbmRleCA2YjdiOTgxLi5hMTc5MmQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5CkBAIC00MSw2ICs0MSw3IEBACiBpbXBvcnQganNvbgogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgcmUKK2ltcG9ydCBvcwogCiBmcm9tIHRvYXN0ZXJndWkudGFibGVmaWx0ZXIgaW1wb3J0IFRhYmxlRmlsdGVyTWFwCiAKQEAgLTg2LDYgKzg3LDkgQEAKICAgICAgICAgY29udGV4dFsndGFibGVfbmFtZSddID0gdHlwZShzZWxmKS5fX25hbWVfXy5sb3dlcigpCiAgICAgICAgIGNvbnRleHRbJ2VtcHR5X3N0YXRlJ10gPSBzZWxmLmVtcHR5X3N0YXRlCiAKKyAgICAgICAgIyBnbG9iYWwgdmFyaWFibGVzCisgICAgICAgIGNvbnRleHRbJ3Byb2plY3RfZW5hYmxlJ10gPSAoJzEnID09IG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX0JVSUxEU0VSVkVSJykpCisKICAgICAgICAgcmV0dXJuIGNvbnRleHQKIAogICAgIGRlZiBnZXQoc2VsZiwgcmVxdWVzdCwgKmFyZ3MsICoqa3dhcmdzKToKQEAgLTUxMSw2ICs1MTUsMTAgQEAKICAgICAgICAgICAgICAgICBpbnQoKGJ1aWxkX29iai5yZWNpcGVzX3BhcnNlZCAvCiAgICAgICAgICAgICAgICAgICAgICBidWlsZF9vYmoucmVjaXBlc190b19wYXJzZSkgKiAxMDApCiAKKyAgICAgICAgICAgIGJ1aWxkWydyZXBvc19jbG9uZWRfcGVyY2VudGFnZSddID0gXAorICAgICAgICAgICAgICAgIGludCgoYnVpbGRfb2JqLnJlcG9zX2Nsb25lZCAvCisgICAgICAgICAgICAgICAgICAgICBidWlsZF9vYmoucmVwb3NfdG9fY2xvbmUpICogMTAwKQorCiAgICAgICAgICAgICB0YXNrc19jb21wbGV0ZV9wZXJjZW50YWdlID0gMAogICAgICAgICAgICAgaWYgYnVpbGRfb2JqLm91dGNvbWUgaW4gKEJ1aWxkLlNVQ0NFRURFRCwgQnVpbGQuRkFJTEVEKToKICAgICAgICAgICAgICAgICB0YXNrc19jb21wbGV0ZV9wZXJjZW50YWdlID0gMTAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkKaW5kZXggOGRmZWYwYS4uNzBiNTgxMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZHNsaXN0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weQpAQCAtMSwxMyArMSwxMyBAQAotZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IE5vQXJnc0NvbW1hbmQsIENvbW1hbmRFcnJvcgorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kLCBDb21tYW5kRXJyb3IKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQnVpbGQKIGltcG9ydCBvcwogCiAKIAotY2xhc3MgQ29tbWFuZChOb0FyZ3NDb21tYW5kKToKK2NsYXNzIENvbW1hbmQoQmFzZUNvbW1hbmQpOgogICAgIGFyZ3MgICAgPSAiIgogICAgIGhlbHAgICAgPSAiTGlzdHMgY3VycmVudCBidWlsZHMiCiAKLSAgICBkZWYgaGFuZGxlX25vYXJncyhzZWxmLCoqb3B0aW9ucyk6CisgICAgZGVmIGhhbmRsZShzZWxmLCoqb3B0aW9ucyk6CiAgICAgICAgIGZvciBiIGluIEJ1aWxkLm9iamVjdHMuYWxsKCk6CiAgICAgICAgICAgICBwcmludCgiJWQ6ICVzICVzICVzIiAlIChiLnBrLCBiLm1hY2hpbmUsIGIuZGlzdHJvLCAiLCIuam9pbihbeC50YXJnZXQgZm9yIHggaW4gYi50YXJnZXRfc2V0LmFsbCgpXSkpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vc2V0dGluZ3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weQppbmRleCAxZmQ2NDljLi4xMzU0MWQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weQpAQCAtMjQsNyArMjQsNiBAQAogaW1wb3J0IG9zCiAKIERFQlVHID0gVHJ1ZQotVEVNUExBVEVfREVCVUcgPSBERUJVRwogCiAjIFNldCB0byBUcnVlIHRvIHNlZSB0aGUgU1FMIHF1ZXJpZXMgaW4gY29uc29sZQogU1FMX0RFQlVHID0gRmFsc2UKQEAgLTE2MSwxMiArMTYwLDQ3IEBACiAjIE1ha2UgdGhpcyB1bmlxdWUsIGFuZCBkb24ndCBzaGFyZSBpdCB3aXRoIGFueWJvZHkuCiBTRUNSRVRfS0VZID0gJ05PVF9TVUlUQUJMRV9GT1JfSE9TVEVEX0RFUExPWU1FTlQnCiAKLSMgTGlzdCBvZiBjYWxsYWJsZXMgdGhhdCBrbm93IGhvdyB0byBpbXBvcnQgdGVtcGxhdGVzIGZyb20gdmFyaW91cyBzb3VyY2VzLgotVEVNUExBVEVfTE9BREVSUyA9ICgKLSAgICAnZGphbmdvLnRlbXBsYXRlLmxvYWRlcnMuZmlsZXN5c3RlbS5Mb2FkZXInLAotICAgICdkamFuZ28udGVtcGxhdGUubG9hZGVycy5hcHBfZGlyZWN0b3JpZXMuTG9hZGVyJywKLSMgICAgICdkamFuZ28udGVtcGxhdGUubG9hZGVycy5lZ2dzLkxvYWRlcicsCi0pCitjbGFzcyBJbnZhbGlkU3RyaW5nKHN0cik6CisgICAgZGVmIF9fbW9kX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBmcm9tIGRqYW5nby50ZW1wbGF0ZS5iYXNlIGltcG9ydCBUZW1wbGF0ZVN5bnRheEVycm9yCisgICAgICAgIHJhaXNlIFRlbXBsYXRlU3ludGF4RXJyb3IoCisgICAgICAgICAgICAiVW5kZWZpbmVkIHZhcmlhYmxlIG9yIHVua25vd24gdmFsdWUgZm9yOiBcIiVzXCIiICUgb3RoZXIpCisKK1RFTVBMQVRFUyA9IFsKKyAgICB7CisgICAgICAgICdCQUNLRU5EJzogJ2RqYW5nby50ZW1wbGF0ZS5iYWNrZW5kcy5kamFuZ28uRGphbmdvVGVtcGxhdGVzJywKKyAgICAgICAgJ0RJUlMnOiBbCisgICAgICAgICAgICAjIFB1dCBzdHJpbmdzIGhlcmUsIGxpa2UgIi9ob21lL2h0bWwvZGphbmdvX3RlbXBsYXRlcyIgb3IgIkM6L3d3dy9kamFuZ28vdGVtcGxhdGVzIi4KKyAgICAgICAgICAgICMgQWx3YXlzIHVzZSBmb3J3YXJkIHNsYXNoZXMsIGV2ZW4gb24gV2luZG93cy4KKyAgICAgICAgICAgICMgRG9uJ3QgZm9yZ2V0IHRvIHVzZSBhYnNvbHV0ZSBwYXRocywgbm90IHJlbGF0aXZlIHBhdGhzLgorICAgICAgICBdLAorICAgICAgICAnT1BUSU9OUyc6IHsKKyAgICAgICAgICAgICdjb250ZXh0X3Byb2Nlc3NvcnMnOiBbCisgICAgICAgICAgICAgICAgIyBJbnNlcnQgeW91ciBURU1QTEFURV9DT05URVhUX1BST0NFU1NPUlMgaGVyZSBvciB1c2UgdGhpcworICAgICAgICAgICAgICAgICMgbGlzdCBpZiB5b3UgaGF2ZW4ndCBjdXN0b21pemVkIHRoZW06CisgICAgICAgICAgICAgICAgJ2RqYW5nby5jb250cmliLmF1dGguY29udGV4dF9wcm9jZXNzb3JzLmF1dGgnLAorICAgICAgICAgICAgICAgICdkamFuZ28udGVtcGxhdGUuY29udGV4dF9wcm9jZXNzb3JzLmRlYnVnJywKKyAgICAgICAgICAgICAgICAnZGphbmdvLnRlbXBsYXRlLmNvbnRleHRfcHJvY2Vzc29ycy5pMThuJywKKyAgICAgICAgICAgICAgICAnZGphbmdvLnRlbXBsYXRlLmNvbnRleHRfcHJvY2Vzc29ycy5tZWRpYScsCisgICAgICAgICAgICAgICAgJ2RqYW5nby50ZW1wbGF0ZS5jb250ZXh0X3Byb2Nlc3NvcnMuc3RhdGljJywKKyAgICAgICAgICAgICAgICAnZGphbmdvLnRlbXBsYXRlLmNvbnRleHRfcHJvY2Vzc29ycy50eicsCisgICAgICAgICAgICAgICAgJ2RqYW5nby5jb250cmliLm1lc3NhZ2VzLmNvbnRleHRfcHJvY2Vzc29ycy5tZXNzYWdlcycsCisgICAgICAgICAgICAgICAgIyBDdXN0b20KKyAgICAgICAgICAgICAgICAnZGphbmdvLnRlbXBsYXRlLmNvbnRleHRfcHJvY2Vzc29ycy5yZXF1ZXN0JywKKyAgICAgICAgICAgICAgICAndG9hc3Rlcmd1aS52aWV3cy5tYW5hZ2VkY29udGV4dHByb2Nlc3NvcicsCisKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAnbG9hZGVycyc6IFsKKyAgICAgICAgICAgICAgICAjIExpc3Qgb2YgY2FsbGFibGVzIHRoYXQga25vdyBob3cgdG8gaW1wb3J0IHRlbXBsYXRlcyBmcm9tIHZhcmlvdXMgc291cmNlcy4KKyAgICAgICAgICAgICAgICAnZGphbmdvLnRlbXBsYXRlLmxvYWRlcnMuZmlsZXN5c3RlbS5Mb2FkZXInLAorICAgICAgICAgICAgICAgICdkamFuZ28udGVtcGxhdGUubG9hZGVycy5hcHBfZGlyZWN0b3JpZXMuTG9hZGVyJywKKyAgICAgICAgICAgICAgICAjJ2RqYW5nby50ZW1wbGF0ZS5sb2FkZXJzLmVnZ3MuTG9hZGVyJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAnc3RyaW5nX2lmX2ludmFsaWQnOiBJbnZhbGlkU3RyaW5nKCIlcyIpLAorICAgICAgICAgICAgJ2RlYnVnJzogREVCVUcsCisgICAgICAgIH0sCisgICAgfSwKK10KIAogTUlERExFV0FSRV9DTEFTU0VTID0gKAogICAgICdkamFuZ28ubWlkZGxld2FyZS5jb21tb24uQ29tbW9uTWlkZGxld2FyZScsCkBAIC0yMDMsMjIgKzIzNyw2IEBACiAjIFB5dGhvbiBkb3R0ZWQgcGF0aCB0byB0aGUgV1NHSSBhcHBsaWNhdGlvbiB1c2VkIGJ5IERqYW5nbydzIHJ1bnNlcnZlci4KIFdTR0lfQVBQTElDQVRJT04gPSAndG9hc3Rlcm1haW4ud3NnaS5hcHBsaWNhdGlvbicKIAotVEVNUExBVEVfRElSUyA9ICgKLSAgICAjIFB1dCBzdHJpbmdzIGhlcmUsIGxpa2UgIi9ob21lL2h0bWwvZGphbmdvX3RlbXBsYXRlcyIgb3IgIkM6L3d3dy9kamFuZ28vdGVtcGxhdGVzIi4KLSAgICAjIEFsd2F5cyB1c2UgZm9yd2FyZCBzbGFzaGVzLCBldmVuIG9uIFdpbmRvd3MuCi0gICAgIyBEb24ndCBmb3JnZXQgdG8gdXNlIGFic29sdXRlIHBhdGhzLCBub3QgcmVsYXRpdmUgcGF0aHMuCi0pCi0KLVRFTVBMQVRFX0NPTlRFWFRfUFJPQ0VTU09SUyA9ICgnZGphbmdvLmNvbnRyaWIuYXV0aC5jb250ZXh0X3Byb2Nlc3NvcnMuYXV0aCcsCi0gJ2RqYW5nby5jb3JlLmNvbnRleHRfcHJvY2Vzc29ycy5kZWJ1ZycsCi0gJ2RqYW5nby5jb3JlLmNvbnRleHRfcHJvY2Vzc29ycy5pMThuJywKLSAnZGphbmdvLmNvcmUuY29udGV4dF9wcm9jZXNzb3JzLm1lZGlhJywKLSAnZGphbmdvLmNvcmUuY29udGV4dF9wcm9jZXNzb3JzLnN0YXRpYycsCi0gJ2RqYW5nby5jb3JlLmNvbnRleHRfcHJvY2Vzc29ycy50eicsCi0gJ2RqYW5nby5jb250cmliLm1lc3NhZ2VzLmNvbnRleHRfcHJvY2Vzc29ycy5tZXNzYWdlcycsCi0gImRqYW5nby5jb3JlLmNvbnRleHRfcHJvY2Vzc29ycy5yZXF1ZXN0IiwKLSAndG9hc3Rlcmd1aS52aWV3cy5tYW5hZ2VkY29udGV4dHByb2Nlc3NvcicsCi0gKQogCiBJTlNUQUxMRURfQVBQUyA9ICgKICAgICAnZGphbmdvLmNvbnRyaWIuYXV0aCcsCkBAIC0zNDgsMTAgKzM2Niw0IEBACiAjCiAKIAotY2xhc3MgSW52YWxpZFN0cmluZyhzdHIpOgotICAgIGRlZiBfX21vZF9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgZnJvbSBkamFuZ28udGVtcGxhdGUuYmFzZSBpbXBvcnQgVGVtcGxhdGVTeW50YXhFcnJvcgotICAgICAgICByYWlzZSBUZW1wbGF0ZVN5bnRheEVycm9yKAotICAgICAgICAgICAgIlVuZGVmaW5lZCB2YXJpYWJsZSBvciB1bmtub3duIHZhbHVlIGZvcjogXCIlc1wiIiAlIG90aGVyKQogCi1URU1QTEFURV9TVFJJTkdfSUZfSU5WQUxJRCA9IEludmFsaWRTdHJpbmcoIiVzIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3VybHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi91cmxzLnB5CmluZGV4IDFmODU5OWUuLmUyZmIwYWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3VybHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weQpAQCAtMTksOSArMTksMTAgQEAKICMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KIAotZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBwYXR0ZXJucywgaW5jbHVkZSwgdXJsCi1mcm9tIGRqYW5nby52aWV3cy5nZW5lcmljIGltcG9ydCBSZWRpcmVjdFZpZXcKK2Zyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgaW5jbHVkZSwgdXJsCitmcm9tIGRqYW5nby52aWV3cy5nZW5lcmljIGltcG9ydCBSZWRpcmVjdFZpZXcsIFRlbXBsYXRlVmlldwogZnJvbSBkamFuZ28udmlld3MuZGVjb3JhdG9ycy5jYWNoZSBpbXBvcnQgbmV2ZXJfY2FjaGUKK2ltcG9ydCBibGRjb2xsZWN0b3Iudmlld3MKIAogaW1wb3J0IGxvZ2dpbmcKIApAQCAtMzEsNyArMzIsNyBAQAogZnJvbSBkamFuZ28uY29udHJpYiBpbXBvcnQgYWRtaW4KIGFkbWluLmF1dG9kaXNjb3ZlcigpCiAKLXVybHBhdHRlcm5zID0gcGF0dGVybnMoJycsCit1cmxwYXR0ZXJucyA9IFsKIAogICAgICMgRXhhbXBsZXM6CiAgICAgIyB1cmwocidedG9hc3Rlci8nLCBpbmNsdWRlKCd0b2FzdGVyLmZvby51cmxzJykpLApAQCAtNDIsMTEgKzQzLDEzIEBACiAKICAgICAjIFRoaXMgaXMgaGVyZSB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCB3aWxsIGJlIGRlcHJlY2F0ZWQKICAgICAjIGluIHRoZSBmdXR1cmUuCi0gICAgdXJsKHInXm9ybS9ldmVudGZpbGUkJywgJ2JsZGNvbGxlY3Rvci52aWV3cy5ldmVudGZpbGUnKSwKKyAgICB1cmwocideb3JtL2V2ZW50ZmlsZSQnLCBibGRjb2xsZWN0b3Iudmlld3MuZXZlbnRmaWxlKSwKKworICAgIHVybChyJ15oZWFsdGgkJywgVGVtcGxhdGVWaWV3LmFzX3ZpZXcodGVtcGxhdGVfbmFtZT0iaGVhbHRoLmh0bWwiKSwgbmFtZT0nVG9hc3RlciBIZWFsdGgnKSwKIAogICAgICMgaWYgbm8gYXBwbGljYXRpb24gaXMgc2VsZWN0ZWQsIHdlIGhhdmUgdGhlIG1hZ2ljIHRvYXN0ZXJndWkgYXBwIGhlcmUKICAgICB1cmwocideJCcsIG5ldmVyX2NhY2hlKFJlZGlyZWN0Vmlldy5hc192aWV3KHVybD0nL3RvYXN0ZXJndWkvJywgcGVybWFuZW50PVRydWUpKSksCi0pCitdCiAKIGltcG9ydCB0b2FzdGVybWFpbi5zZXR0aW5ncwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKaW5kZXggZTYxYzhlMi4uYzBlYzM2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL3RvYXN0ZXItcmVxdWlyZW1lbnRzLnR4dApAQCAtMSwzICsxLDMgQEAKLURqYW5nbz4xLjgsPDEuOQorRGphbmdvPjEuOCw8MS4xMS45CiBiZWF1dGlmdWxzb3VwND49NC40LjAKIHB5dHoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKaW5kZXggOTA3N2M4MS4uOTg5MTA5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKQEAgLTgsNyArOCw3IEBACiAjIHN5c3RlbS4gIFRoZXNlIG1hbnVhbHMgYWxzbyBpbmNsdWRlIGFuICJlY2xpcHNlIiBzdWItZGlyZWN0b3J5IGFzIHBhcnQgb2YKICMgdGhlIG1ha2UgcHJvY2Vzcy4KICMKLSMgTm90ZSB0aGF0IHRoZSBmaWd1cmVzIGZvciB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwKKyMgTm90ZSB0aGF0IHRoZSBmaWd1cmVzIGZvciB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKICMgZGlmZmVyIGRlcGVuZGluZyBvbiB0aGUgQlJBTkNIIGJlaW5nIGJ1aWx0LgogIwogIyBUaGUgTWFrZWZpbGUgaGFzIHRoZXNlIHRhcmdldHM6CkBAIC00Miw3ICs0Miw3IEBACiAjIFRvIGJ1aWxkIGEgbWFudWFsLCB5b3UgbXVzdCBpbnZva2UgTWFrZWZpbGUgd2l0aCB0aGUgRE9DIGFyZ3VtZW50LiAgSWYgeW91CiAjIGFyZSBnb2luZyB0byBwdWJsaXNoIHRoZSBtYW51YWwsIHRoZW4geW91IG11c3QgaW52b2tlIE1ha2VmaWxlIHdpdGggYm90aCB0aGUKICMgRE9DIGFuZCB0aGUgVkVSIGFyZ3VtZW50LiAgRnVydGhlcm1vcmUsIGlmIHlvdSBhcmUgYnVpbGRpbmcgb3IgcHVibGlzaGluZwotIyB0aGUgZWRpc29uIG9yIGRlbnppbCB2ZXJzaW9ucyBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgb3IKKyMgdGhlIGVkaXNvbiBvciBkZW56aWwgdmVyc2lvbnMgb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIG9yCiAjIHRoZSBtZWdhLW1hbnVhbCwgeW91IG11c3QgYWxzbyB1c2UgdGhlIEJSQU5DSCBhcmd1bWVudC4KICMKICMgRXhhbXBsZXM6CkBAIC01OSw3ICs1OSw3IEBACiAjICdtYWtlIERPQz15b2N0by1wcm9qZWN0LXFzJyBjb21tYW5kIHdvdWxkIGJlIGVxdWl2YWxlbnQuIFRoZSB0aGlyZCBleGFtcGxlCiAjIGdlbmVyYXRlcyBqdXN0IHRoZSBQREYgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogIyBUaGUgZm91cnRoIGV4YW1wbGUgZ2VuZXJhdGVzIHRoZSBIVE1MICdlZGlzb24nIHZlcnNpb24gYW5kIChpZiBhdmFpbGFibGUpCi0jIHRoZSBFY2xpcHNlIGhlbHAgdmVyc2lvbiBvZiB0aGUgWVAgRGV2ZWxvcG1lbnQgTWFudWFsLiAgVGhlIGxhc3QgZXhhbXBsZQorIyB0aGUgRWNsaXBzZSBoZWxwIHZlcnNpb24gb2YgdGhlIFlQIERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4gIFRoZSBsYXN0IGV4YW1wbGUKICMgZ2VuZXJhdGVzIHRoZSBIVE1MIHZlcnNpb24gb2YgdGhlIG1lZ2EtbWFudWFsIGFuZCB1c2VzIHRoZSAnZGVuemlsJwogIyBicmFuY2ggd2hlbiBjaG9vc2luZyBmaWd1cmVzIGZvciB0aGUgdGFyYmFsbCBvZiBmaWd1cmVzLiAgQW55IGV4YW1wbGUgdGhhdCBkb2VzCiAjIG5vdCB1c2UgdGhlIEJSQU5DSCBhcmd1bWVudCBidWlsZHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgbWFudWFsIHNldC4KQEAgLTc5LDE1ICs3OSwxNiBAQAogIyBUaGUgZmlyc3QgZXhhbXBsZSBwdWJsaXNoZXMgdGhlIDEuNyB2ZXJzaW9uIG9mIGJvdGggdGhlIFBERiBhbmQgSFRNTCB2ZXJzaW9ucyBvZgogIyB0aGUgQlNQIEd1aWRlLiAgVGhlIHNlY29uZCBleGFtcGxlIHB1Ymxpc2hlcyB0aGUgMS42IHZlcnNpb24gb2YgYm90aCB0aGUgUERGIGFuZAogIyBIVE1MIHZlcnNpb25zIG9mIHRoZSBBRFQgTWFudWFsLiBUaGUgdGhpcmQgZXhhbXBsZSBwdWJsaXNoZXMgdGhlIDEuMS4xIHZlcnNpb24gb2YKLSMgdGhlIFBERiBhbmQgSFRNTCBZUCBEZXZlbG9wbWVudCBNYW51YWwgZm9yIHRoZSAnZWRpc29uJyBicmFuY2guICBUaGUgZm91cnRoIGV4YW1wbGUKLSMgcHVibGlzaGVzIHRoZSAxLjIgdmVyc2lvbiBvZiB0aGUgUERGIGFuZCBIVE1MIFlQIERldmVsb3BtZW50IE1hbnVhbCBmb3IgdGhlCi0jICdkZW56aWwnIGJyYW5jaC4KKyMgdGhlIFBERiBhbmQgSFRNTCBZUCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIHRoZSAnZWRpc29uJyBicmFuY2guICBUaGUgZm91cnRoCisjIGV4YW1wbGUgcHVibGlzaGVzIHRoZSAxLjIgdmVyc2lvbiBvZiB0aGUgUERGIGFuZCBIVE1MIFlQIERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorIyBmb3IgdGhlICdkZW56aWwnIGJyYW5jaC4KICMKIAogaWZlcSAoJChET0MpLGJzcC1ndWlkZSkKIFhTTFRPUFRTID0gLS14aW5jbHVkZQogQUxMUFJFUSA9IGh0bWwgZWNsaXBzZSB0YXJiYWxsCiBUQVJGSUxFUyA9IGJzcC1zdHlsZS5jc3MgYnNwLWd1aWRlLmh0bWwgZmlndXJlcy9ic3AtdGl0bGUucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nIFwKICAgICAgICAgICAgZWNsaXBzZQogTUFOVUFMUyA9ICQoRE9DKS8kKERPQykuaHRtbCAkKERPQykvZWNsaXBzZQogRklHVVJFUyA9IGZpZ3VyZXMKQEAgLTEyOCwxNCArMTI5LDggQEAKICAgICAgICAgICAgZmlndXJlcy93aXAucG5nCiAgICAgICAgIGVsc2UKIFRBUkZJTEVTID0gZGV2LXN0eWxlLmNzcyBkZXYtbWFudWFsLmh0bWwgXAotICAgICAgICAgICBmaWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcgXAotICAgICAgICAgICBmaWd1cmVzL2Rldi10aXRsZS5wbmcgZmlndXJlcy9naXQtd29ya2Zsb3cucG5nIFwKLSAgICAgICAgICAgZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nIGZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZyBcCi0gICAgICAgICAgIGZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTEucG5nIGZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcgXAotICAgICAgICAgICBmaWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcgZmlndXJlcy95cC1kb3dubG9hZC5wbmcgXAotICAgICAgICAgICBmaWd1cmVzL3JlY2lwZS13b3JrZmxvdy5wbmcgXAotICAgICAgICAgICBmaWd1cmVzL2RldnRvb2wtYWRkLWZsb3cucG5nIGZpZ3VyZXMvZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcgXAotICAgICAgICAgICBmaWd1cmVzL2RldnRvb2wtdXBncmFkZS1mbG93LnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvZGV2LXRpdGxlLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvcmVjaXBlLXdvcmtmbG93LnBuZyBmaWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcgXAogICAgICAgICAgICBlY2xpcHNlCiAJZW5kaWYKIApAQCAtMTQ4LDcgKzE0Myw3IEBACiBpZmVxICgkKERPQykseW9jdG8tcHJvamVjdC1xcykKIFhTTFRPUFRTID0gLS14aW5jbHVkZQogQUxMUFJFUSA9IGh0bWwgZWNsaXBzZSB0YXJiYWxsCi1UQVJGSUxFUyA9IHlvY3RvLXByb2plY3QtcXMuaHRtbCBxcy1zdHlsZS5jc3MgZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC5wbmcgXAorVEFSRklMRVMgPSB5b2N0by1wcm9qZWN0LXFzLmh0bWwgcXMtc3R5bGUuY3NzIFwKICAgICAgICAgICAgZmlndXJlcy95b2N0by1wcm9qZWN0LXRyYW5zcC5wbmcgXAogICAgICAgICAgICBlY2xpcHNlCiBNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sICQoRE9DKS9lY2xpcHNlCkBAIC0xOTUsOCArMTkwLDggQEAKIAlmaWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcgZmlndXJlcy95cC1kb3dubG9hZC5wbmcgXAogCWZpZ3VyZXMvd2lwLnBuZwogICAgICAgICBlbHNlCi1UQVJGSUxFUyA9IG1lZ2EtbWFudWFsLmh0bWwgbWVnYS1zdHlsZS5jc3MgZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC5wbmcgXAotICAgICAgICBmaWd1cmVzL2J1aWxkaW5nLWFuLWltYWdlLnBuZyAgXAorVEFSRklMRVMgPSBtZWdhLW1hbnVhbC5odG1sIG1lZ2Etc3R5bGUuY3NzIFwKKyAgICAgICAgZmlndXJlcy9idWlsZGluZy1hbi1pbWFnZS5wbmcgZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nIFwKIAlmaWd1cmVzL3VzaW5nLWEtcHJlLWJ1aWx0LWltYWdlLnBuZyBcCiAJZmlndXJlcy9wb2t5LXRpdGxlLnBuZyBmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcgXAogICAgICAgICBmaWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nIFwKQEAgLTIwNiw3ICsyMDEsNyBAQAogICAgICAgICBmaWd1cmVzL2Rldi10aXRsZS5wbmcgXAogCWZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZyBmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgXAogICAgICAgICBmaWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcgXAotCWZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTEucG5nIGZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcgXAorCWZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcgXAogCWZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyBcCiAgICAgICAgIGZpZ3VyZXMvcHJvZmlsZS10aXRsZS5wbmcgZmlndXJlcy9rZXJuZWxzaGFyay1hbGwucG5nIFwKICAgICAgICAgZmlndXJlcy9rZXJuZWxzaGFyay1jaG9vc2UtZXZlbnRzLnBuZyBcCkBAIC0yNDQsMTMgKzIzOSwxMiBAQAogCWZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMvcmVjaXBlLXdvcmtmbG93LnBuZyBcCiAJZmlndXJlcy9idWlsZC13b3Jrc3BhY2UtZGlyZWN0b3J5LnBuZyBmaWd1cmVzL21lZ2EtdGl0bGUucG5nIFwKIAlmaWd1cmVzL3RvYXN0ZXItdGl0bGUucG5nIGZpZ3VyZXMvaG9zdGVkLXNlcnZpY2UucG5nIFwKLQlmaWd1cmVzL3NpbXBsZS1jb25maWd1cmF0aW9uLnBuZyBmaWd1cmVzL2RldnRvb2wtYWRkLWZsb3cucG5nIFwKLQlmaWd1cmVzL2RldnRvb2wtbW9kaWZ5LWZsb3cucG5nIGZpZ3VyZXMvZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIFwKKwlmaWd1cmVzL3NpbXBsZS1jb25maWd1cmF0aW9uLnBuZyBcCiAJZmlndXJlcy9jb21wYXRpYmxlLWxheWVycy5wbmcgZmlndXJlcy9pbXBvcnQtbGF5ZXIucG5nIGZpZ3VyZXMvbmV3LXByb2plY3QucG5nIFwKIAlmaWd1cmVzL3Nkay1lbnZpcm9ubWVudC5wbmcgZmlndXJlcy9zZGstaW5zdGFsbGVkLXN0YW5kYXJkLXNkay1kaXJlY3RvcnkucG5nIFwKIAlmaWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZyBmaWd1cmVzL3Nkay1pbnN0YWxsZWQtZXh0ZW5zaWJsZS1zZGstZGlyZWN0b3J5LnBuZyBcCiAJZmlndXJlcy9zZGstZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcgZmlndXJlcy9zZGstZWNsaXBzZS1kZXYtZmxvdy5wbmcgXAotCWZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZworCWZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZyBmaWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcKIAllbmRpZgogCiBNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sCkBAIC0yNjIsNyArMjU2LDcgQEAKIGlmZXEgKCQoRE9DKSxyZWYtbWFudWFsKQogWFNMVE9QVFMgPSAtLXhpbmNsdWRlCiBBTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKLVRBUkZJTEVTID0gcmVmLW1hbnVhbC5odG1sIHJlZi1zdHlsZS5jc3MgZmlndXJlcy9wb2t5LXRpdGxlLnBuZyBcCitUQVJGSUxFUyA9IHJlZi1tYW51YWwuaHRtbCByZWYtc3R5bGUuY3NzIGZpZ3VyZXMvcG9reS10aXRsZS5wbmcgZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nIFwKIAlmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcgZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZyBlY2xpcHNlIFwKICAgICAgICAgZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZyBmaWd1cmVzL2xheWVyLWlucHV0LnBuZyBcCiAJZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyBmaWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcgXApAQCAtMjcxLDcgKzI2NSw4IEBACiAJZmlndXJlcy9wYXRjaGluZy5wbmcgZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcgXAogCWZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZyBmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIFwKIAlmaWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZyBmaWd1cmVzL2J1aWxkaW5nLWFuLWltYWdlLnBuZyBcCi0JZmlndXJlcy9idWlsZC13b3Jrc3BhY2UtZGlyZWN0b3J5LnBuZworCWZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcgZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIFwKKwlmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgZmlndXJlcy95cC1kb3dubG9hZC5wbmcgZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCiBNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sICQoRE9DKS9lY2xpcHNlCiBGSUdVUkVTID0gZmlndXJlcwogU1RZTEVTSEVFVCA9ICQoRE9DKS8qLmNzcwpAQCAtMzMwLDggKzMyNSw4IEBACiBYU0xUT1BUUyA9IC0teGluY2x1ZGUKIEFMTFBSRVEgPSBodG1sIGVjbGlwc2UgdGFyYmFsbAogVEFSRklMRVMgPSBrZXJuZWwtZGV2Lmh0bWwga2VybmVsLWRldi1zdHlsZS5jc3MgXAotICAgICAgICAgICBmaWd1cmVzL2tlcm5lbC1kZXYtdGl0bGUucG5nIFwKLSAgICAgICAgICAgZmlndXJlcy9rZXJuZWwtYXJjaGl0ZWN0dXJlLW92ZXJ2aWV3LnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMva2VybmVsLWRldi10aXRsZS5wbmcgZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMva2VybmVsLWFyY2hpdGVjdHVyZS1vdmVydmlldy5wbmcgZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nIFwKICAgICAgICAgICAgZWNsaXBzZQogTUFOVUFMUyA9ICQoRE9DKS8kKERPQykuaHRtbCAkKERPQykvZWNsaXBzZQogRklHVVJFUyA9IGZpZ3VyZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL1JFQURNRSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL1JFQURNRQppbmRleCBhNGU3MGE4Li5kNjRmMmZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vUkVBRE1FCkBAIC0zNiw4ICszNiw4IEBACiAKICogc2RrLW1hbnVhbCAgICAgICAtIFRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZS4KICogYnNwLWd1aWRlICAgICAgICAtIFRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZQotKiBkZXYtbWFudWFsICAgICAgIC0gVGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsCi0qIGtlcm5lbC1kZXYgICAgICAgLSBUaGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsCisqIGRldi1tYW51YWwgICAgICAgLSBUaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyoga2VybmVsLWRldiAgICAgICAtIFRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKICogcmVmLW1hbnVhbCAgICAgICAtIFRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwKICogeW9jdG8tcHJvamVjdC1xcyAtIFRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0CiAqIG1lZ2EtbWFudWFsICAgICAgLSBUaGUgWW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbCwgd2hpY2ggaXMgYW4gYWdncmVnYXRlZCBtYW51YWwgY29tcHJpc2VkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCmluZGV4IGYwZWUzOTkuLjU3NmVkMTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCkBAIC0yMiwxOCArMjIsMTEgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2F1bDwvZmlyc3RuYW1lPiA8c3VybmFtZT5Xb2xkPC9zdXJuYW1lPgorICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+SW50ZWwgQ29ycG9yYXRpb248L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zYXVsLndvbGRAaW50ZWwuY29tPC9lbWFpbD4KLSAgICAgICAgICAgIDwvYXV0aG9yPgotICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlJpY2hhcmQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UHVyZGllPC9zdXJuYW1lPgotICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+TGludXggRm91bmRhdGlvbjwvb3JnbmFtZT4KLSAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5yaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTExOSwyNCArMTEyLDE5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SnVuZSAyMDE3PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPlNlcHRlbWJlciAyMDE3PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4zPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuNDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTE1MCwzNCArMTM4LDM0IEBACiAgICAgICAgIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudCB1bmRlcgogICAgICAgICB0aGUgdGVybXMgb2YgdGhlIDx1bGluayB0eXBlPSJodHRwIiB1cmw9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzIuMC91ay8iPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIFVLOiBFbmdsYW5kICZhbXA7IFdhbGVzPC91bGluaz4gYXMgcHVibGlzaGVkIGJ5IENyZWF0aXZlIENvbW1vbnMuCiAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkCi0gICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUgYXNzb2NpYXRlZCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzIFlvY3RvIFByb2plY3QgcmVsZWFzZSAodmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOyksCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgorICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSBEZXZlbG9wZXIncyBHdWlkZTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBsYXRlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCAoaWYgdGhleSBleGlzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIGZvciB3aGljaCB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW4tZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlLCBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvbGF0ZXN0L2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KIAogICAgIDwvYm9va2luZm8+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sCmluZGV4IGE5MmU2MTEuLmQ3YjZmMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sCkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgICAgICAgICAgVG8gaGVscCB1bmRlcnN0YW5kIHRoZSBCU1AgbGF5ZXIgY29uY2VwdCwgY29uc2lkZXIgdGhlIEJTUHMgdGhhdCB0aGUKICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIGFuZCBwcm92aWRlcyB3aXRoIGVhY2ggcmVsZWFzZS4KICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgbGF5ZXJzIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgogICAgICAgICAgICAgICAgIHRocm91Z2ggYSB3ZWIgaW50ZXJmYWNlIGF0CiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2knPjwvdWxpbms+LgogICAgICAgICAgICAgICAgIElmIHlvdSBnbyB0byB0aGF0IGludGVyZmFjZSwgeW91IHdpbGwgZmluZCBuZWFyIHRoZSBib3R0b20gb2YgdGhlIGxpc3QKQEAgLTgzLDEyICs4MywxMiBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIEJTUCBkZXZlbG9wbWVudCB3b3JrZmxvdywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+RGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+RGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGEgbG9jYWwgY29weSBvZiBzb3VyY2UgZmlsZXMKICAgICAgICAgICAgICAgICBmcm9tIGEgR2l0IHJlcG9zaXRvcnksIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ2V0dGluZy1zZXR1cCc+R2V0dGluZyBTZXQgVXA8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGFsc28gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gYWxzbyBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtOTgsMTIgKzk4LDEwIEBACiAgICAgICAgICAgICAgICAgVGhpcyByb290IGlzIHdoYXQgeW91IGFkZCB0byB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICB3aGljaCBpcyBlc3RhYmxpc2hlZCBhZnRlciB5b3UgcnVuIG9uZSBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50Ci0gICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0cyAoaS5lLgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIGVzdGFibGlzaGVkIGFmdGVyIHlvdSBydW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPikuCiAgICAgICAgICAgICAgICAgQWRkaW5nIHRoZSByb290IGFsbG93cyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byByZWNvZ25pemUgdGhlIEJTUAogICAgICAgICAgICAgICAgIGRlZmluaXRpb24gYW5kIGZyb20gaXQgYnVpbGQgYW4gaW1hZ2UuCiAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgpAQCAtMTQxLDcgKzEzOSwxNDkgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQogICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3ByZXBhcmluZy15b3VyLWJ1aWxkLWhvc3QtdG8td29yay13aXRoLWJzcC1sYXllcnMnPgorICAgICAgICAgICAgPHRpdGxlPlByZXBhcmluZyBZb3VyIEJ1aWxkIEhvc3QgdG8gV29yayBXaXRoIEJTUCBMYXllcnM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBnZXQgeW91ciBidWlsZCBob3N0IHJlYWR5CisgICAgICAgICAgICAgICAgdG8gd29yayB3aXRoIEJTUCBsYXllcnMuCisgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgaG9zdCBzZXQgdXAsIHlvdSBjYW4gY3JlYXRlIHRoZSBsYXllcgorICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIG5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBzdHJ1Y3R1cmFsIGluZm9ybWF0aW9uIG9uIEJTUHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnNwLWZpbGVsYXlvdXQnPkV4YW1wbGUgRmlsZXN5c3RlbSBMYXlvdXQ8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGFyZSBzZXQgdXAgdG8gdXNlIEJpdEJha2UgaW4gYSBzaGVsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+U2V0dGluZyBVcCB0aGUgRGV2ZWxvcG1lbnQgSG9zdCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdGhhdCBpcyBlaXRoZXIgYSBuYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IG1hY2hpbmUgb3IgYSBtYWNoaW5lIHRoYXQgdXNlcyBDUk9QUy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaGF2ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gYSBsb2NhbCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkpLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcG9zc2libHkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tpbmctb3V0LWJ5LWJyYW5jaC1pbi1wb2t5Jz5DaGVja2luZyBPdXQgYnkgQnJhbmNoIGluIFBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IFRhZyBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBhbGwgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIGNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBjaGVjayBvdXQgdGhlIGFwcHJvcHJpYXRlIGJyYW5jaCBmb3IgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgdGhlIEJTUCBMYXllciBZb3UgV2FudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgbWFueSBCU1BzLCB3aGljaCBhcmUgbWFpbnRhaW5lZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXIgb3duIGxheWVycyBvciBpbiBsYXllcnMgZGVzaWduZWQgdG8gY29udGFpbiBzZXZlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICBCU1BzLgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gZ2V0IGFuIGlkZWEgb2YgbWFjaGluZSBzdXBwb3J0IHRocm91Z2ggQlNQIGxheWVycywgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgbG9vayBhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX0RMX1VSTDsvbWFjaGluZXMnPmluZGV4IG9mIG1hY2hpbmVzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBDbG9uZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gQlNQIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGlzIGJhc2VkIG9uIGN1cnJlbnQgSW50ZWwgQ1BVcyBhbmQgZGV2aWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gbGV2ZXJhZ2UgdGhpcyBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBCU1AgbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIGxheWVyJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEtaW50ZWwvdHJlZS9SRUFETUUnPjxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk5hdmlnYXRlIHRvIFlvdXIgU291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSBzZXQgdXAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIHRoZSBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEtaW50ZWwuZ2l0CisgICAgIENsb25pbmcgaW50byAnbWV0YS1pbnRlbCcuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAxNDIyNCwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg0NTkxLzQ1OTEpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDE0MjI0IChkZWx0YSA4MjQ1KSwgcmV1c2VkIDEzOTg1IChkZWx0YSA4MDA2KQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMTQyMjQvMTQyMjQpLCA0LjI5IE1pQiB8IDIuOTAgTWlCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDgyNDUvODI0NSksIGRvbmUuCisgICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIE91dCB0aGUgUHJvcGVyIEJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnJhbmNoIHlvdSBjaGVjayBvdXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbXVzdCBtYXRjaCB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2ggeW91IGFyZSB1c2luZyBmb3IgdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAmRElTVFJPX05BTUVfTk9fQ0FQOyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgY2hlY2tvdXQgPHJlcGxhY2VhYmxlPmJyYW5jaF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvbiBob3cgdG8gZGlzY292ZXIgYnJhbmNoIG5hbWVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja291dCBvbiBhIGJyYW5jaCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tpbmctb3V0LWJ5LWJyYW5jaC1pbi1wb2t5Jz5DaGVja2luZyBPdXQgQnkgQnJhbmNoIGluIFBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBTZXQgVXAgYW4gQWx0ZXJuYXRpdmUgQlNQIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGNhbiBiZSBtb3JlIGNsb3NlbHkgbGV2ZXJhZ2VkIHRvIGFuCisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBCU1Agbm90IHdpdGhpbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVyLCB5b3UgY2FuIGNsb25lIHRoYXQgQlNQIGxheWVyLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHByb2Nlc3MgaXMgaWRlbnRpY2FsIHRvIHRoZSBwcm9jZXNzIHVzZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBleGNlcHQgZm9yIHRoZSBsYXllcidzCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkZXRlcm1pbmUgdGhhdCB5b3VyIGhhcmR3YXJlIG1vc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlbHkgbWF0Y2hlcyB0aGUgPGZpbGVuYW1lPm1ldGEtbWlubm93PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZSB0aGF0IGxheWVyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLW1pbm5vdworICAgICBDbG9uaW5nIGludG8gJ21ldGEtbWlubm93Jy4uLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDQ1NiwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgyODMvMjgzKSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCA0NTYgKGRlbHRhIDE2MyksIHJldXNlZCAzODQgKGRlbHRhIDkxKQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoNDU2LzQ1NiksIDk2Ljc0IEtpQiB8IDAgYnl0ZXMvcywgZG9uZS4KKyAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMTYzLzE2MyksIGRvbmUuCisgICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBTb3VyY2UgRGlyZWN0b3J5IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSwgcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgdG8gZGVmaW5lIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGluIHRoaXMgY2FzZQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgc2NyaXB0IHJ1bnMsIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKQEAgLTQxNyw3ICs1NTcsNyBAQAogICAgICAgICAgICAgICAgICAgICByZWxlYXNlZCB3aXRoIHRoZSBCU1AuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgPGZpbGVuYW1lPlJFQURNRS5zb3VyY2VzPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgZmlsZSBhbHNvIGhlbHBzIHlvdSBmaW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGdlbmVyYXRlIHRoZSBpbWFnZXMgdGhhdCBzaGlwIHdpdGggdGhlIEJTUC4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgQlNQJ3MgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcwpAQCAtNTIyLDcgKzY2Miw3IEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHNpbXBseSBtYWtlcwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBhd2FyZSBvZiB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbiBkaXJlY3Rvcmllcy4KICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgbXVzdCBleGlzdCBzbyB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiByZWNvZ25pemUgdGhlIEJTUC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC01NzEsNyArNzExLDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVHVuaW5nIGZpbGVzIGFyZSBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+aWEzMi1iYXNlLmluYzwvZmlsZW5hbWU+IGZpbGUgcmVzaWRlcyBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGU8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtNjI3LDcgKzc2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvcm1mYWN0b3IgcmVjaXBlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvcl8wLjAuYmI8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L25vdGU+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKQEAgLTY2Nyw3ICs4MDcsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgeW91ciBCU1AsIHlvdSB0eXBpY2FsbHkgd2FudCB0byB1c2UgYW4gZXhpc3RpbmcgWW9jdG8KICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBrZXJuZWwgcmVjaXBlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGF0IDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYXBwZW5kIG1hY2hpbmUtc3BlY2lmaWMgY2hhbmdlcyB0byB0aGUga2VybmVsIHJlY2lwZQogICAgICAgICAgICAgICAgICAgICBieSB1c2luZyBhIHNpbWlsYXJseSBuYW1lZCBhcHBlbmQgZmlsZSwgd2hpY2ggaXMgbG9jYXRlZCBpbgpAQCAtNzEwLDYgKzg1MCwyMDQgQEAKICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgPC9zZWN0aW9uPgogCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+CisgICAgICAgICAgICA8dGl0bGU+RGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgaGlnaC1sZXZlbCBwcm9jZWR1cmUgeW91IGNhbiBmb2xsb3cKKyAgICAgICAgICAgICAgICB0byBjcmVhdGUgYSBCU1AgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QncworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3VzaW5nLXRoZS15b2N0by1wcm9qZWN0cy1ic3AtdG9vbHMnPkJTUCBUb29sczwvbGluaz4uCisgICAgICAgICAgICAgICAgQWx0aG91Z2ggbm90IHJlcXVpcmVkIGZvciBCU1AgY3JlYXRpb24sIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gcmVwb3NpdG9yeSwgd2hpY2ggY29udGFpbnMKKyAgICAgICAgICAgICAgICBtYW55IEJTUHMgc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0LCBpcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgIGV4YW1wbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGNyZWF0ZSBhIG5ldyBsYXllciB1c2luZworICAgICAgICAgICAgICAgIHRoZSB0b29scywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPkNyZWF0aW5nIGEgTmV3IEJTUCBMYXllciBVc2luZyB0aGUgeW9jdG8tYnNwIFNjcmlwdDwvbGluaz4iCisgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaWxsdXN0cmF0aW9uIGFuZCBsaXN0IHN1bW1hcml6ZSB0aGUgQlNQCisgICAgICAgICAgICAgICAgY3JlYXRpb24gZ2VuZXJhbCB3b3JrZmxvdy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2JzcC1kZXYtZmxvdy5wbmciIHdpZHRoPSI3aW4iIGRlcHRoPSI1aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBVc2luZyB0aGUgWW9jdG8gUHJvamVjdDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjeXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBmb3Igb3B0aW9ucyBvbiBob3cKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Fc3RhYmxpc2ggdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9zaXRvcnkgb24gWW91ciBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhhdmluZyBsb2NhbCBjb3BpZXMgb2YgdGhlc2Ugc3VwcG9ydGVkIEJTUCBsYXllcnMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgc3lzdGVtIGdpdmVzIHlvdSBhY2Nlc3MgdG8gbGF5ZXJzIHlvdSBtaWdodCBiZSBhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBvbiBvciBtb2RpZnkgdG8gY3JlYXRlIHlvdXIgQlNQLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgdGhlc2UgZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgd2l0aCBCU1AgTGF5ZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBZb3VyIE93biBCU1AgTGF5ZXIgVXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPjxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIGFyZSBpZGVhbCBmb3IgaXNvbGF0aW5nIGFuZCBzdG9yaW5nIHdvcmsgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIHBpZWNlIG9mIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBsYXllciBpcyByZWFsbHkganVzdCBhIGxvY2F0aW9uIG9yIGFyZWEgaW4gd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZSB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbnMgZm9yIHlvdXIgQlNQLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gZmFjdCwgYSBCU1AgaXMsIGluIGl0c2VsZiwgYSBzcGVjaWFsIHR5cGUgb2YgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBhIG5ldyBCU1AgbGF5ZXIgdGhhdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGF0IHNjcmlwdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIGV4YW1wbGUgdGhhdCBpbGx1c3RyYXRlcyBhIGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbiBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGFyZSBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IGhhcworICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBvciBvdGhlciBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgZm9yIGl0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIGFuZCBydW4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGF5ZXIsIGluIHRoaXMgY2FzZSwgd291bGQgYmUgd2hlcmUgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyB0aGF0IGRlZmluZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGtlcHQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUga2V5IHBvaW50IGZvciBhIGxheWVyIGlzIHRoYXQgaXQgaXMgYW4gaXNvbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgdGhhdCBjb250YWlucyBhbGwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByb2plY3QgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBrbm93cworICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5GaXZlIEJTUHMgZXhpc3QgdGhhdCBhcmUgcGFydCBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IHJlbGVhc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJlYWdsZWJvbmU8L2ZpbGVuYW1lPiAoQVJNKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXBjODMxNWU8L2ZpbGVuYW1lPiAoUG93ZXJQQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5lZGdlcm91dGVyPC9maWxlbmFtZT4gKE1JUFMpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9ucyBmb3IgdGhlc2UgZml2ZSBCU1BzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGxvY2F0ZWQgYW5kIGRpc3BlcnNlZCB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRocmVlIGNvcmUgSW50ZWwgQlNQcyBleGlzdCBhcyBwYXJ0IG9mIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcmVsZWFzZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlbC1jb3JlMi0zMjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBCU1Agb3B0aW1pemVkIGZvciB0aGUgQ29yZTIgZmFtaWx5IG9mIENQVXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYWxsIENQVXMgcHJpb3IgdG8gdGhlIFNpbHZlcm1vbnQgY29yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW50ZWwtY29yZWk3LTY0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIE5laGFsZW0gYW5kIGxhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlIGFuZCBYZW9uIENQVXMgYXMgd2VsbCBhcyBTaWx2ZXJtb250IGFuZCBsYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvbSBDUFVzLCBzdWNoIGFzIHRoZSBCYXl0cmFpbCBTb0NzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlbC1xdWFyazwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBCU1Agb3B0aW1pemVkIGZvciB0aGUgSW50ZWwgR2FsaWxlbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuMSAmYW1wOyBnZW4yIGRldmVsb3BtZW50IGJvYXJkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IHNldCB1cCBhIGxheWVyIGZvciBhIG5ldyBCU1AsIHlvdSBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvdyBhIHN0YW5kYXJkIGxheW91dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGF5b3V0IGlzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtZmlsZWxheW91dCc+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHN0YW5kYXJkIGxheW91dCwgeW91IHdpbGwgbm90aWNlIGEgc3VnZ2VzdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZm9yIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc3RhbmRhcmQgbGF5b3V0IGZvciBhIEJTUCBieSBleGFtaW5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGFueSBzdXBwb3J0ZWQgQlNQIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBpbnNpZGUgdGhlIFNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyB0byBZb3VyIE5ldyBCU1AKKyAgICAgICAgICAgICAgICAgICAgICAgIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3RhbmRhcmQgQlNQIGxheWVyIHN0cnVjdHVyZSBvcmdhbml6ZXMgdGhlIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBlZGl0IGluIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcmFsIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgd2l0aGluIHRoZSBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGNoYW5nZXMgaWRlbnRpZnkgd2hlcmUgeW91ciBuZXcgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIG9uIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIGlkZW50aWZ5IHdoaWNoIGtlcm5lbCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnb2luZyB0byB1c2UuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhlIDxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPiBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGFibGUgdG8gaW50ZXJhY3RpdmVseSBjb25maWd1cmUgbWFueSB0aGluZ3MgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgQlNQIChlLmcuIGtleWJvYXJkLCB0b3VjaHNjcmVlbiwgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBSZWNpcGUgQ2hhbmdlcyB0byBZb3VyIE5ldyBCU1AKKyAgICAgICAgICAgICAgICAgICAgICAgIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGUgY2hhbmdlcyBpbmNsdWRlIGFsdGVyaW5nIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMpLCByZW1vdmluZyByZWNpcGVzIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHVzZSwgYW5kIGFkZGluZyBuZXcgcmVjaXBlcyBvciBhcHBlbmQgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIHRoYXQgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgeW91ciBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyZSBmb3IgdGhlIEJ1aWxkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIG1hZGUgYWxsIHRoZSBjaGFuZ2VzIHRvIHlvdXIgQlNQIGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUgcmVtYWlucyBhIGZldyB0aGluZ3MgeW91IG5lZWQgdG8gZG8gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbiBvcmRlciBmb3IgaXQgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZ2V0IHRoZSBidWlsZCBlbnZpcm9ubWVudCByZWFkeSBieQorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNpbmcgYW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3UgbmVlZCB0byBiZSBzdXJlIHR3byBrZXkgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgYXJlIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseTogdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBtYWtlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICBvZiB5b3VyIG5ldyBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy15b3VyLWxheWVyJz5FbmFibGluZyBZb3VyIExheWVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBsZXQgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAga25vdyBhYm91dCB5b3VyIG5ldyBsYXllci48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBlbnRpcmUgcHJvY2VzcyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ2aWV3ZWQgaW4gdGhlIHNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iIHNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gcmVmZXJlbmNlIHRoaXMgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgQml0QmFrZSB0b29sCisgICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBpbWFnZXMgYmFzZWQgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBidWlsZCBwcm9jZXNzIHN1cHBvcnRzIHNldmVyYWwgdHlwZXMgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcyB0byBzYXRpc2Z5IGRpZmZlcmVudCBuZWVkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHN1cHBvcnRlZCBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKICAgICAgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVtZW50cy1hbmQtcmVjb21tZW5kYXRpb25zLWZvci1yZWxlYXNlZC1ic3BzJz4KICAgICAgICAgICAgIDx0aXRsZT5SZXF1aXJlbWVudHMgYW5kIFJlY29tbWVuZGF0aW9ucyBmb3IgUmVsZWFzZWQgQlNQczwvdGl0bGU+CiAKQEAgLTczMiwyNCArMTA3MCwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBndWlkZWxpbmVzIG9uIGNyZWF0aW5nIGEgbGF5ZXIgdGhhdCBtZWV0cyB0aGVzZSBiYXNlIHJlcXVpcmVtZW50cywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC9saW5rPiIgYW5kIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzIjwvdWxpbms+IGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzIjwvdWxpbms+IGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVxdWlyZW1lbnRzIGluIHRoaXMgc2VjdGlvbiBhcHBseSByZWdhcmRsZXNzIG9mIGhvdyB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGEgQlNQLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgY29uc3VsdCB0aGUgcGFja2FnaW5nIGFuZCBkaXN0cmlidXRpb24gZ3VpZGVsaW5lcyBmb3IgeW91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHJlbGVhc2UgcHJvY2Vzcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBwYWNrYWdpbmcgYW5kIGRpc3RyaWJ1dGlvbiByZXF1aXJlbWVudHMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaGlyZF9QYXJ0eV9CU1BfUmVsZWFzZV9Qcm9jZXNzJz5UaGlyZCBQYXJ0eSBCU1AgUmVsZWFzZSBQcm9jZXNzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVxdWlyZW1lbnRzIGZvciB0aGUgQlNQIGFzIGl0IGlzIG1hZGUgYXZhaWxhYmxlIHRvIGEgZGV2ZWxvcGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQgb2YgdGhlIHJlbGVhc2VkIGZvcm0gb2YgdGhlIEJTUC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIEJTUCBNZXRhZGF0YSBjYW4gYmUgY29udGFpbmVkIHdpdGhpbiBhIEdpdCByZXBvc2l0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNvdWxkIGhhdmUgYSBkaXJlY3Rvcnkgc3RydWN0dXJlIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20gd2hhdCBhcHBlYXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG9mZmljaWFsbHkgcmVsZWFzZWQgQlNQIGxheWVyLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBvZmZpY2lhbGx5IHJlbGVhc2VkIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JdCBpcyBub3QgcmVxdWlyZWQgdGhhdCBzcGVjaWZpYyBwYWNrYWdlcyBvciBwYWNrYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpY2F0aW9ucyBleGlzdCBpbiB0aGUgQlNQIGxheWVyLCBiZXlvbmQgdGhlIHJlcXVpcmVtZW50cyBmb3IgZ2VuZXJhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsaWFuY2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgbm8gcmVxdWlyZW1lbnQgZXhpc3RzIGRpY3RhdGluZyB0aGF0IGEgc3BlY2lmaWMga2VybmVsIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIHZlcnNpb24gYmUgdXNlZCBpbiBhIGdpdmVuIEJTUC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgdmVyc2lvbiBiZSB1c2VkIGluIGEgZ2l2ZW4gQlNQLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTc3Niw3ICsxMTE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCA8ZmlsZW5hbWU+cmVjaXBlcy50eHQ8L2ZpbGVuYW1lPiBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGluIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBMYXllcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPikgZm91bmQgYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvdHJlZS9tZXRhJz48L3VsaW5rPi4KQEAgLTgzMiw4ICsxMTc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIHBlcnNvbiB0byB3aG9tIHBhdGNoZXMgYW5kIHF1ZXN0aW9ucyBzaG91bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHNlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGZpbmQgdGhlIHJpZ2h0IHBlcnNvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0cnVjdGlvbnMgb24gaG93IHRvIGJ1aWxkIHRoZSBCU1AgdXNpbmcgdGhlIEJTUAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC05MzcsNyArMTI3OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBtb2RpZmllZCByZWNpcGUuCiAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBhcHBlbmQgZmlsZXMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXMgaW4gWW91ciBMYXllcjwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJlIHlvdXIgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbiB0aGUgQlNQIGxheWVyCkBAIC0xMTQ0LDcgKzE0ODYsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIERlc2lnbmVkIHRvIGhhdmUgYSAgY29tbWFuZCBpbnRlcmZhY2Ugc29tZXdoYXQgbGlrZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNnaXQnPkdpdDwvdWxpbms+LCBlYWNoCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4sIGVhY2gKICAgICAgICAgICAgICAgICAgICAgdG9vbCBpcyBzdHJ1Y3R1cmVkIGFzIGEgc2V0IG9mIHN1Yi1jb21tYW5kcyB1bmRlciBhCiAgICAgICAgICAgICAgICAgICAgIHRvcC1sZXZlbCBjb21tYW5kLgogICAgICAgICAgICAgICAgICAgICBUaGUgdG9wLWxldmVsIGNvbW1hbmQgKDxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPgpAQCAtMTE1NSw3ICsxNDk3LDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBCb3RoIHRvb2xzIHJlc2lkZSBpbiB0aGUgPGZpbGVuYW1lPnNjcmlwdHMvPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIG9mIHRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdG8gdXNlIHRoZSBzY3JpcHRzLCB5b3UgbXVzdCA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlCiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGp1c3QgYXMgeW91IHdvdWxkIHdoZW4gaW52b2tpbmcgYSBidWlsZDoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMTI1MSwxMSArMTU5MywxMSBAQAogICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgQlNQIGFuZCBwZXJmb3JtIGJhc2ljIGtlcm5lbCBtYWludGVuYW5jZSBvbiB0aGF0IEJTUCB1c2luZwogICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMuCiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSB0aGUgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT4gdG9vbCB0byBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHNjcmlwdCB0byBjcmVhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIGEgImdlbmVyaWMiIGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoaXMgdG9vbCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUteW9jdG8tbGF5ZXItc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWxheWVyIFNjcmlwdDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBHdWlkZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGlzIHNjcmlwdCB0byBjcmVhdGUgYSBsYXllciwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTEzODQsOCArMTcyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGRvIHdhbnQgdG8gdXNlLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk5leHQsIHRoZSBzY3JpcHQgYXNrcyB3aGV0aGVyIHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgYSBuZXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2ggY3JlYXRlZCBlc3BlY2lhbGx5IGZvciB5b3VyIEJTUCBpbiB0aGUgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhbC1rZXJuZWwtZmlsZXMnPkxpbnV4IFlvY3RvIEtlcm5lbDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IFlvY3RvIEtlcm5lbCBHaXQgcmVwb3NpdG9yeSAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90LCB0aGVuIHRoZSBzY3JpcHQgcmUtdXNlcyBhbiBleGlzdGluZyBicmFuY2guPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoaXMgZXhhbXBsZSwgdGhlIGRlZmF1bHQgKG9yICJ5ZXMiKSBpcyBhY2NlcHRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBhIG5ldyBicmFuY2ggaXMgY3JlYXRlZCBmb3IgdGhlIEJTUCByYXRoZXIgdGhhbiB1c2luZyBhIGNvbW1vbiwgc2hhcmVkCkBAIC0xNDA2LDcgKzE3NDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIGFyZSBhY2NlcHRlZCBmb3IgZWFjaC48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CeSBkZWZhdWx0LCB0aGUgc2NyaXB0IGNyZWF0ZXMgdGhlIG5ldyBCU1AgTGF5ZXIgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5L2J1aWxkPC9maWxlbmFtZT4pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY4MmExZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbAppbmRleCA1OThmODc3Li4wMDgxNzM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbApAQCAtMTgsNyArMTgsOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc3VwcG9ydHMgb3JnYW5pemluZwotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiBpbnRvIG11bHRpcGxlIGxheWVycy4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IGludG8KKyAgICAgICAgICAgIG11bHRpcGxlIGxheWVycy4KICAgICAgICAgICAgIExheWVycyBhbGxvdyB5b3UgdG8gaXNvbGF0ZSBkaWZmZXJlbnQgdHlwZXMgb2YgY3VzdG9taXphdGlvbnMgZnJvbQogICAgICAgICAgICAgZWFjaCBvdGhlci4KICAgICAgICAgICAgIFlvdSBtaWdodCBmaW5kIGl0IHRlbXB0aW5nIHRvIGtlZXAgZXZlcnl0aGluZyBpbiBvbmUgbGF5ZXIgd2hlbgpAQCAtNTgsNyArNTksNyBAQAogICAgICAgICAgICAgPHRpdGxlPkxheWVyczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICBjb250YWlucyBib3RoIGdlbmVyYWwgbGF5ZXJzIGFuZCBCU1AKICAgICAgICAgICAgICAgICBsYXllcnMgcmlnaHQgb3V0IG9mIHRoZSBib3guCiAgICAgICAgICAgICAgICAgWW91IGNhbiBlYXNpbHkgaWRlbnRpZnkgbGF5ZXJzIHRoYXQgc2hpcCB3aXRoIGEKQEAgLTEwNyw3ICsxMDgsNyBAQAogICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPkNyZWF0aW5nIGEgTmV3IEJTUCBMYXllciBVc2luZyB0aGUgeW9jdG8tYnNwIFNjcmlwdDwvdWxpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApCiAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUgYW5kIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWxheWVyLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSB5b2N0by1sYXllciBTY3JpcHQ8L2xpbms+IgorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gZnVydGhlciBkb3duIGluIHRoaXMgbWFudWFsLgogICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0yNTQsMTk3ICsyNTUsMTgyIEBACiAgICAgICAgIDwvc2VjdGlvbj4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nYmVzdC1wcmFjdGljZXMtdG8tZm9sbG93LXdoZW4tY3JlYXRpbmctbGF5ZXJzJz4KLSAgICAgICAgICAgIDx0aXRsZT5CZXN0IFByYWN0aWNlcyB0byBGb2xsb3cgV2hlbiBDcmVhdGluZyBMYXllcnM8L3RpdGxlPgorICAgICAgICAgICAgPHRpdGxlPkZvbGxvd2luZyBCZXN0IFByYWN0aWNlcyBXaGVuIENyZWF0aW5nIExheWVyczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBsYXllcnMgdGhhdCBhcmUgZWFzaWVyIHRvIG1haW50YWluIGFuZCB0aGF0IHdpbGwKICAgICAgICAgICAgICAgICBub3QgaW1wYWN0IGJ1aWxkcyBmb3Igb3RoZXIgbWFjaGluZXMsIHlvdSBzaG91bGQgY29uc2lkZXIgdGhlCi0gICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2F2b2lkLW92ZXJsYXlpbmctZW50aXJlLXJlY2lwZXMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Bdm9pZCAiT3ZlcmxheWluZyIgRW50aXJlIFJlY2lwZXM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEF2b2lkICJvdmVybGF5aW5nIiBlbnRpcmUgcmVjaXBlcyBmcm9tIG90aGVyIGxheWVycyBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBkbyBub3QgY29weSBhbiBlbnRpcmUgcmVjaXBlIGludG8geW91cgotICAgICAgICAgICAgICAgICAgICBsYXllciBhbmQgdGhlbiBtb2RpZnkgaXQuCi0gICAgICAgICAgICAgICAgICAgIFJhdGhlciwgdXNlIGFuIGFwcGVuZCBmaWxlICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgIHRvIG92ZXJyaWRlCi0gICAgICAgICAgICAgICAgICAgIG9ubHkgdGhvc2UgcGFydHMgb2YgdGhlIG9yaWdpbmFsIHJlY2lwZSB5b3UgbmVlZCB0byBtb2RpZnkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nYXZvaWQtZHVwbGljYXRpbmctaW5jbHVkZS1maWxlcyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkF2b2lkIER1cGxpY2F0aW5nIEluY2x1ZGUgRmlsZXM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEF2b2lkIGR1cGxpY2F0aW5nIGluY2x1ZGUgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgIFVzZSBhcHBlbmQgZmlsZXMgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2ggcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgdXNlcyBhbiBpbmNsdWRlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIE9yLCBpZiB5b3UgYXJlIGludHJvZHVjaW5nIGEgbmV3IHJlY2lwZSB0aGF0IHJlcXVpcmVzCi0gICAgICAgICAgICAgICAgICAgIHRoZSBpbmNsdWRlZCBmaWxlLCB1c2UgdGhlIHBhdGggcmVsYXRpdmUgdG8gdGhlIG9yaWdpbmFsCi0gICAgICAgICAgICAgICAgICAgIGxheWVyIGRpcmVjdG9yeSB0byByZWZlciB0byB0aGUgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZSByZWNpcGVzLWNvcmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5maWxlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmluYzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgPGZpbGVuYW1lPnJlcXVpcmUgPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91J3JlIGZpbmRpbmcgeW91IGhhdmUgdG8gb3ZlcmxheSB0aGUgaW5jbHVkZSBmaWxlLAotICAgICAgICAgICAgICAgICAgICBpdCBjb3VsZCBpbmRpY2F0ZSBhIGRlZmljaWVuY3kgaW4gdGhlIGluY2x1ZGUgZmlsZSBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgbGF5ZXIgdG8gd2hpY2ggaXQgb3JpZ2luYWxseSBiZWxvbmdzLgotICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3Ugc2hvdWxkIHRyeSB0byBhZGRyZXNzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZGVmaWNpZW5jeSBpbnN0ZWFkIG9mIG92ZXJsYXlpbmcgdGhlIGluY2x1ZGUgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBhZGRyZXNzIHRoaXMgYnkgZ2V0dGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lciBvZiB0aGUgaW5jbHVkZSBmaWxlIHRvIGFkZCBhIHZhcmlhYmxlIG9yCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0byBtYWtlIGl0IGVhc3kgdG8gb3ZlcnJpZGUgdGhlIHBhcnRzIG5lZWRpbmcKLSAgICAgICAgICAgICAgICAgICAgdG8gYmUgb3ZlcnJpZGRlbi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUteW91ci1sYXllcnMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5TdHJ1Y3R1cmUgWW91ciBMYXllcnM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFByb3BlciB1c2Ugb2Ygb3ZlcnJpZGVzIHdpdGhpbiBhcHBlbmQgZmlsZXMgYW5kIHBsYWNlbWVudAotICAgICAgICAgICAgICAgICAgICBvZiBtYWNoaW5lLXNwZWNpZmljIGZpbGVzIHdpdGhpbiB5b3VyIGxheWVyIGNhbiBlbnN1cmUgdGhhdAotICAgICAgICAgICAgICAgICAgICBhIGJ1aWxkIGlzIG5vdCB1c2luZyB0aGUgd3JvbmcgTWV0YWRhdGEgYW5kIG5lZ2F0aXZlbHkKLSAgICAgICAgICAgICAgICAgICAgaW1wYWN0aW5nIGEgYnVpbGQgZm9yIGEgZGlmZmVyZW50IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBleGFtcGxlczoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TW9kaWZ5aW5nIFZhcmlhYmxlcyB0byBTdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBEaWZmZXJlbnQgTWFjaGluZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGhhdmUgYSBsYXllciBuYW1lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZTwvZmlsZW5hbWU+IHRoYXQgYWRkcyBzdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJ1aWxkaW5nIG1hY2hpbmUgIm9uZSIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gZG8gc28sIHlvdSB1c2UgYW4gYXBwZW5kIGZpbGUgbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1maWxlcy5iYmFwcGVuZDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIGRlcGVuZGVuY3kgb24gImZvbyIgYnkgYWx0ZXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgZm9sbG93aW5nIGxpc3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF2b2lkICJPdmVybGF5aW5nIiBFbnRpcmUgUmVjaXBlcyBmcm9tIE90aGVyIExheWVycyBpbiBZb3VyIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBkbyBub3QgY29weSBhbiBlbnRpcmUgcmVjaXBlIGludG8geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgYW5kIHRoZW4gbW9kaWZ5IGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgUmF0aGVyLCB1c2UgYW4gYXBwZW5kIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIHRvIG92ZXJyaWRlIG9ubHkgdGhvc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzIG9mIHRoZSBvcmlnaW5hbCByZWNpcGUgeW91IG5lZWQgdG8gbW9kaWZ5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Bdm9pZCBEdXBsaWNhdGluZyBJbmNsdWRlIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgYXBwZW5kIGZpbGVzICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCByZWNpcGUgdGhhdCB1c2VzIGFuIGluY2x1ZGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9yLCBpZiB5b3UgYXJlIGludHJvZHVjaW5nIGEgbmV3IHJlY2lwZSB0aGF0IHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5jbHVkZWQgZmlsZSwgdXNlIHRoZSBwYXRoIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgbGF5ZXIgZGlyZWN0b3J5IHRvIHJlZmVyIHRvIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlcXVpcmUgcmVjaXBlcy1jb3JlLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlcXVpcmUgPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSdyZSBmaW5kaW5nIHlvdSBoYXZlIHRvIG92ZXJsYXkgdGhlIGluY2x1ZGUgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IGNvdWxkIGluZGljYXRlIGEgZGVmaWNpZW5jeSBpbiB0aGUgaW5jbHVkZSBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGF5ZXIgdG8gd2hpY2ggaXQgb3JpZ2luYWxseSBiZWxvbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgeW91IHNob3VsZCB0cnkgdG8gYWRkcmVzcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpY2llbmN5IGluc3RlYWQgb2Ygb3ZlcmxheWluZyB0aGUgaW5jbHVkZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBhZGRyZXNzIHRoaXMgYnkgZ2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1haW50YWluZXIgb2YgdGhlIGluY2x1ZGUgZmlsZSB0byBhZGQgYSB2YXJpYWJsZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIHRvIG1ha2UgaXQgZWFzeSB0byBvdmVycmlkZSB0aGUgcGFydHMgbmVlZGluZworICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgb3ZlcnJpZGRlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RydWN0dXJlIFlvdXIgTGF5ZXJzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXIgdXNlIG9mIG92ZXJyaWRlcyB3aXRoaW4gYXBwZW5kIGZpbGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50IG9mIG1hY2hpbmUtc3BlY2lmaWMgZmlsZXMgd2l0aGluIHlvdXIgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBlbnN1cmUgdGhhdCBhIGJ1aWxkIGlzIG5vdCB1c2luZyB0aGUgd3JvbmcgTWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuZWdhdGl2ZWx5IGltcGFjdGluZyBhIGJ1aWxkIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBleGFtcGxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TW9kaWZ5IFZhcmlhYmxlcyB0byBTdXBwb3J0IGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlmZmVyZW50IE1hY2hpbmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9zZSB5b3UgaGF2ZSBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZTwvZmlsZW5hbWU+IHRoYXQgYWRkcyBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBidWlsZGluZyBtYWNoaW5lICJvbmUiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBkbyBzbywgeW91IHVzZSBhbiBhcHBlbmQgZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1maWxlcy5iYmFwcGVuZDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgYSBkZXBlbmRlbmN5IG9uICJmb28iIGJ5IGFsdGVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIERFUEVORFMgPSAiZm9vIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVwZW5kZW5jeSBpcyBjcmVhdGVkIGR1cmluZyBhbnkgYnVpbGQgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIHRoZSBsYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBtaWdodCBub3Qgd2FudCB0aGlzIGRlcGVuZGVuY3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIG1hY2hpbmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgYnVpbGRpbmcgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSAidHdvIiBidXQgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBoYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lPC9maWxlbmFtZT4gbGF5ZXIgaW5jbHVkZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBidWlsZCwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2UtZmlsZXM8L2ZpbGVuYW1lPiBmb3IgbWFjaGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d28iIHdpbGwgYWxzbyBoYXZlIHRoZSBkZXBlbmRlbmN5IG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+LjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UbyBtYWtlIHN1cmUgeW91ciBjaGFuZ2VzIGFwcGx5IG9ubHkgd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIG1hY2hpbmUgIm9uZSIsIHVzZSBhIG1hY2hpbmUgb3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IHN0YXRlbWVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlcGVuZGVuY3kgaXMgY3JlYXRlZCBkdXJpbmcgYW55IGJ1aWxkIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgdGhlIGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgbWlnaHQgbm90IHdhbnQgdGhpcyBkZXBlbmRlbmN5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbGwgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgYnVpbGRpbmcgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgInR3byIgYnV0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGhhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lPC9maWxlbmFtZT4gbGF5ZXIgaW5jbHVkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1cmluZyB0aGUgYnVpbGQsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1maWxlczwvZmlsZW5hbWU+IGZvciBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d28iIHdpbGwgYWxzbyBoYXZlIHRoZSBkZXBlbmRlbmN5IG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb288L2ZpbGVuYW1lPi48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIG1ha2Ugc3VyZSB5b3VyIGNoYW5nZXMgYXBwbHkgb25seSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIG1hY2hpbmUgIm9uZSIsIHVzZSBhIG1hY2hpbmUgb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgREVQRU5EU19vbmUgPSAiZm9vIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGZvbGxvdyB0aGUgc2FtZSBzdHJhdGVneSB3aGVuIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRpb25zOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGZvbGxvdyB0aGUgc2FtZSBzdHJhdGVneSB3aGVuIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdGlvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgREVQRU5EU19hcHBlbmRfb25lID0gIiBmb28iCiAgICAgIERFUEVORFNfcHJlcGVuZF9vbmUgPSAiZm9vICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gYWN0dWFsIGV4YW1wbGUsIGhlcmUncyBhIGxpbmUgZnJvbSB0aGUgcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGdudXRscywgd2hpY2ggYWRkcyBkZXBlbmRlbmNpZXMgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJncC1zdGFuZGFsb25lIiB3aGVuIGJ1aWxkaW5nIHdpdGggdGhlIG11c2wgQwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGFjdHVhbCBleGFtcGxlLCBoZXJlJ3MgYSBsaW5lIGZyb20gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZ251dGxzLCB3aGljaCBhZGRzIGRlcGVuZGVuY2llcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJncC1zdGFuZGFsb25lIiB3aGVuIGJ1aWxkaW5nIHdpdGggdGhlIG11c2wgQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXZvaWRpbmcgIis9IiBhbmQgIj0rIiBhbmQgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlY29tbWVuZGVkIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QbGFjZSBNYWNoaW5lLVNwZWNpZmljIEZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gTWFjaGluZS1TcGVjaWZpYyBMb2NhdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBoYXZlIGEgYmFzZSByZWNpcGUsIHN1Y2ggYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzZS1maWxlcy5iYjwvZmlsZW5hbWU+LCB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgdG8gYSBmaWxlLCB5b3UgY2FuIHVzZSBhbiBhcHBlbmQgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNhdXNlIHRoZSBidWlsZCB0byB1c2UgeW91ciBvd24gdmVyc2lvbiBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhbiBhcHBlbmQgZmlsZSBpbiB5b3VyIGxheWVyIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMuYmJhcHBlbmQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGV4dGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU1BBVEgnPjxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXZvaWRpbmcgIis9IiBhbmQgIj0rIiBhbmQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyByZWNvbW1lbmRlZCBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBsYWNlIE1hY2hpbmUtU3BlY2lmaWMgRmlsZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjaGluZS1TcGVjaWZpYyBMb2NhdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgaGF2ZSBhIGJhc2UgcmVjaXBlLCBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNlLWZpbGVzLmJiPC9maWxlbmFtZT4sIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCB0byBhIGZpbGUsIHlvdSBjYW4gdXNlIGFuIGFwcGVuZCBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNhdXNlIHRoZSBidWlsZCB0byB1c2UgeW91ciBvd24gdmVyc2lvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFuIGFwcGVuZCBmaWxlIGluIHlvdXIgbGF5ZXIgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMuYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBleHRlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTRVhUUkFQQVRIUyc+PGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke0JQTn06IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgZm9yIG1hY2hpbmUgIm9uZSIgd2lsbCBwaWNrIHVwIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIGZpbGUgYXMgbG9uZyBhcyB5b3UgaGF2ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBidWlsZGluZyBmb3IgYSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIGFuZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW5jbHVkZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGEtb25lPC9maWxlbmFtZT4gbGF5ZXIgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxvY2F0aW9uIG9mIHlvdXIgbWFjaGluZS1zcGVjaWZpYyBmaWxlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpcnN0IGxvY2F0aW9uIHdoZXJlIHRoYXQgZmlsZSBpcyBmb3VuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGZvciBhbGwgbWFjaGluZXMgd2lsbCBhbHNvIHVzZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBmaWxlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIG1ha2Ugc3VyZSB0aGF0IGEgbWFjaGluZS1zcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaXMgdXNlZCBmb3IgYSBwYXJ0aWN1bGFyIG1hY2hpbmUgYnkgcHV0dGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IHNwZWNpZmljIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHJhdGhlciB0aGFuIHBsYWNpbmcgdGhlIGZpbGUgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmUvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy88L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHNob3duIGFib3ZlLCBwdXQgaXQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmUvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9vbmUvPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IG9ubHkgZG9lcyB0aGlzIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB1c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSB3aGVuIGJ1aWxkaW5nIGZvciBtYWNoaW5lICJvbmUiLCBidXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgcHJvY2VzcyBsb2NhdGVzIHRoZSBmaWxlIG1vcmUgcXVpY2tseS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gc3VtbWFyeSwgeW91IG5lZWQgdG8gcGxhY2UgYWxsIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlZCBmcm9tIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIG1hY2hpbmUtc3BlY2lmaWMgc3ViZGlyZWN0b3J5IHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBpbiBvcmRlciB0byByZXN0cmljdCB0aG9zZSBmaWxlcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgYnVpbGRzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdvdGhlci1yZWNvbW1lbmRhdGlvbnMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5PdGhlciBSZWNvbW1lbmRhdGlvbnM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFdlIGFsc28gcmVjb21tZW5kIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgeW91IHdhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBDb21wYXRpYmlsaXR5IGxvZ28gd2l0aCB5b3VyIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgYXBwbGljYXRpb24gdGhhdCB1c2VzIHlvdXIgbGF5ZXIsIHBlcmZvcm0gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgdG8gYXBwbHkgZm9yIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYWtpbmctc3VyZS15b3VyLWxheWVyLWlzLWNvbXBhdGlibGUtd2l0aC15b2N0by1wcm9qZWN0Jz5NYWtpbmcgU3VyZSBZb3VyIExheWVyIGlzIENvbXBhdGlibGUgV2l0aCBZb2N0byBQcm9qZWN0PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlN0b3JlIGN1c3RvbSBsYXllcnMgaW4gYSBHaXQgcmVwb3NpdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdXNlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+bGF5ZXJfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gZm9ybWF0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsb25lIHRoZSByZXBvc2l0b3J5IGFsb25nc2lkZSBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyB0aGVzZSByZWNvbW1lbmRhdGlvbnMga2VlcHMgeW91ciBTb3VyY2UgRGlyZWN0b3J5IGFuZAotICAgICAgICAgICAgICAgICAgICAgaXRzIGNvbmZpZ3VyYXRpb24gZW50aXJlbHkgaW5zaWRlIHRoZSBZb2N0byBQcm9qZWN0J3MgY29yZQotICAgICAgICAgICAgICAgICAgICAgYmFzZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIGZvciBtYWNoaW5lICJvbmUiIHdpbGwgcGljayB1cCB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgZmlsZSBhcyBsb25nIGFzIHlvdSBoYXZlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9uZS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgYXJlIGJ1aWxkaW5nIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YS1vbmU8L2ZpbGVuYW1lPiBsYXllciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxvY2F0aW9uIG9mIHlvdXIgbWFjaGluZS1zcGVjaWZpYyBmaWxlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBsb2NhdGlvbiB3aGVyZSB0aGF0IGZpbGUgaXMgZm91bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGZvciBhbGwgbWFjaGluZXMgd2lsbCBhbHNvIHVzZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgZmlsZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gbWFrZSBzdXJlIHRoYXQgYSBtYWNoaW5lLXNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaXMgdXNlZCBmb3IgYSBwYXJ0aWN1bGFyIG1hY2hpbmUgYnkgcHV0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSBpbiBhIHN1YmRpcmVjdG9yeSBzcGVjaWZpYyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHJhdGhlciB0aGFuIHBsYWNpbmcgdGhlIGZpbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtb25lL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgc2hvd24gYWJvdmUsIHB1dCBpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1vbmUvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9vbmUvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBvbmx5IGRvZXMgdGhpcyBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gYnVpbGRpbmcgZm9yIG1hY2hpbmUgIm9uZSIsIGJ1dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgcHJvY2VzcyBsb2NhdGVzIHRoZSBmaWxlIG1vcmUgcXVpY2tseS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHN1bW1hcnksIHlvdSBuZWVkIHRvIHBsYWNlIGFsbCBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VkIGZyb20gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIG1hY2hpbmUtc3BlY2lmaWMgc3ViZGlyZWN0b3J5IHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgaW4gb3JkZXIgdG8gcmVzdHJpY3QgdGhvc2UgZmlsZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBlcmZvcm0gU3RlcHMgdG8gQXBwbHkgZm9yIFlvY3RvIFByb2plY3QgQ29tcGF0aWJpbGl0eTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IENvbXBhdGliaWxpdHkgbG9nbyB3aXRoIHlvdXIgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyB5b3VyIGxheWVyLCBwZXJmb3JtIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgdG8gYXBwbHkgZm9yIGNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFraW5nLXN1cmUteW91ci1sYXllci1pcy1jb21wYXRpYmxlLXdpdGgteW9jdG8tcHJvamVjdCc+TWFraW5nIFN1cmUgWW91ciBMYXllciBpcyBDb21wYXRpYmxlIFdpdGggWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Gb2xsb3cgdGhlIExheWVyIE5hbWluZyBDb252ZW50aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBjdXN0b20gbGF5ZXJzIGluIGEgR2l0IHJlcG9zaXRvcnkgdGhhdCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+bGF5ZXJfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R3JvdXAgWW91ciBMYXllcnMgTG9jYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xvbmUgeW91ciByZXBvc2l0b3J5IGFsb25nc2lkZSBvdGhlciBjbG9uZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9J21ha2luZy1zdXJlLXlvdXItbGF5ZXItaXMtY29tcGF0aWJsZS13aXRoLXlvY3RvLXByb2plY3QnPgpAQCAtNDU2LDY1ICs0NDIsNzQgQEAKICAgICAgICAgICAgICAgICBleGlzdGluZyBZb2N0byBQcm9qZWN0IGxheWVycyAoaS5lLiB0aGUgbGF5ZXIgaXMgY29tcGF0aWJsZQogICAgICAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QpLgogICAgICAgICAgICAgICAgIEVuc3VyaW5nIGNvbXBhdGliaWxpdHkgbWFrZXMgdGhlIGxheWVyIGVhc3kgdG8gYmUgY29uc3VtZWQKLSAgICAgICAgICAgICAgICBieSBvdGhlcnMgaW4gdGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5IGFuZCBhbGxvd3MgeW91Ci0gICAgICAgICAgICAgICAgcGVybWlzc2lvbiB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgQ29tcGF0aWJpbGl0eSBsb2dvLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBWZXJzaW9uIDEuMCBvZiB0aGUgWW9jdG8gUHJvamVjdCBDb21wYXRpYmlsaXR5IFByb2dyYW0gaGFzCi0gICAgICAgICAgICAgICAgYmVlbiBpbiBleGlzdGVuY2UgZm9yIGEgbnVtYmVyIG9mIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgcHJvZ3JhbSBjb25zaXN0cyBvZiB0aGUgbGF5ZXIgYXBwbGljYXRpb24KLSAgICAgICAgICAgICAgICBwcm9jZXNzIHRoYXQgcmVxdWVzdHMgcGVybWlzc2lvbiB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICBDb21wYXRpYmlsaXR5IGxvZ28gZm9yIHlvdXIgbGF5ZXIgYW5kIGFwcGxpY2F0aW9uLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB2ZXJzaW9uIDEuMCBvZiB0aGUgZm9ybSBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvd2ViZm9ybS95b2N0by1wcm9qZWN0LWNvbXBhdGlibGUtcmVnaXN0cmF0aW9uJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBUbyBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBsb2dvLCB5b3UgbmVlZCB0byBiZSBhYmxlCi0gICAgICAgICAgICAgICAgdG8gYW5zd2VyICJZZXMiIHRvIHRoZSBxdWVzdGlvbnMgb3IgaGF2ZSBhbiBhY2NlcHRhYmxlCi0gICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gZm9yIGFueSBxdWVzdGlvbnMgYW5zd2VyZWQgIk5vIi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBzZWNvbmQgdmVyc2lvbiAoMi4wKSBvZiB0aGUgWW9jdG8gUHJvamVjdCBDb21wYXRpYmlsaXR5Ci0gICAgICAgICAgICAgICAgUHJvZ3JhbSBpcyBjdXJyZW50bHkgdW5kZXIgZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICAgICAgSW5jbHVkZWQgYXMgcGFydCBvZiB2ZXJzaW9uIDIuMCAoYW5kIGN1cnJlbnRseSBhdmFpbGFibGUpIGlzCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT55b2N0by1jb21wYXQtbGF5ZXIucHk8L2ZpbGVuYW1lPiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgV2hlbiBydW4gYWdhaW5zdCBhIGxheWVyLCB0aGlzIHNjcmlwdCB0ZXN0cyB0aGUgbGF5ZXIgYWdhaW5zdAotICAgICAgICAgICAgICAgIHRpZ2h0ZXIgY29uc3RyYWludHMgYmFzZWQgb24gZXhwZXJpZW5jZXMgb2YgaG93IGxheWVycyBoYXZlCi0gICAgICAgICAgICAgICAgd29ya2VkIGluIHRoZSByZWFsIHdvcmxkIGFuZCB3aGVyZSBwaXRmYWxscyBoYXZlIGJlZW4gZm91bmQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFBhcnQgb2YgdGhlIDIuMCB2ZXJzaW9uIG9mIHRoZSBwcm9ncmFtIHRoYXQgaXMgbm90IGN1cnJlbnRseQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBidXQgaXMgaW4gZGV2ZWxvcG1lbnQgaXMgYW4gdXBkYXRlZCBjb21wYXRpYmlsaXR5Ci0gICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZm9ybS4KLSAgICAgICAgICAgICAgICBUaGlzIHVwZGF0ZWQgZm9ybSwgYW1vbmcgb3RoZXIgcXVlc3Rpb25zLCBzcGVjaWZpY2FsbHkKLSAgICAgICAgICAgICAgICBhc2tzIGlmIHlvdXIgbGF5ZXIgaGFzIHBhc3NlZCB0aGUgdGVzdCB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tY29tcGF0LWxheWVyLnB5PC9maWxlbmFtZT4gc2NyaXB0LgotICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgotICAgICAgICAgICAgICAgICAgICBFdmVuIHRob3VnaCB0aGUgdXBkYXRlZCBhcHBsaWNhdGlvbiBmb3JtIGlzIGN1cnJlbnRseQotICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZSBmb3IgdmVyc2lvbiAyLjAgb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgQ29tcGF0aWJpbGl0eSBQcm9ncmFtLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWNvbXBhdC1sYXllci5weTwvZmlsZW5hbWU+IHNjcmlwdCBpcwotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgaW4gT0UtQ29yZS4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHNjcmlwdCB0byBhc3Nlc3MgdGhlIHN0YXR1cyBvZiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGxheWVycyBpbiBhZHZhbmNlIG9mIHRoZSAyLjAgcmVsZWFzZSBvZiB0aGUgcHJvZ3JhbS4KKyAgICAgICAgICAgICAgICBieSBvdGhlcnMgaW4gdGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5IGFuZCBjb3VsZCBhbGxvdyB5b3UKKyAgICAgICAgICAgICAgICBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBDb21wYXRpYmxlIExvZ28uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIE9ubHkgWW9jdG8gUHJvamVjdCBtZW1iZXIgb3JnYW5pemF0aW9ucyBhcmUgcGVybWl0dGVkIHRvCisgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBDb21wYXRpYmxlIExvZ28uCisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2dvIGlzIG5vdCBhdmFpbGFibGUgZm9yIGdlbmVyYWwgdXNlLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJlY29tZSBhIFlvY3RvIFByb2plY3QgbWVtYmVyCisgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIHByZXNlbnRzIGluZm9ybWF0aW9uIG9uIHRoZQotICAgICAgICAgICAgICAgIHZlcnNpb24gMS4wIHJlZ2lzdHJhdGlvbiBmb3JtIGFuZCBvbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tY29tcGF0LWxheWVyLnB5PC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IENvbXBhdGliaWxpdHkgUHJvZ3JhbSBjb25zaXN0cyBvZiBhIGxheWVyCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gcHJvY2VzcyB0aGF0IHJlcXVlc3RzIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QgQ29tcGF0aWJpbGl0eSBMb2dvIGZvciB5b3VyIGxheWVyIGFuZCBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBjb25zaXN0cyBvZiB0d28gcGFydHM6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzZnVsbHkgcGFzc2luZyBhIHNjcmlwdAorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT55b2N0by1jaGVjay1sYXllcjwvZmlsZW5hbWU+KSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHJ1biBhZ2FpbnN0IHlvdXIgbGF5ZXIsIHRlc3RzIGl0IGFnYWluc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzIGJhc2VkIG9uIGV4cGVyaWVuY2VzIG9mIGhvdyBsYXllcnMgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VkIGluIHRoZSByZWFsIHdvcmxkIGFuZCB3aGVyZSBwaXRmYWxscyBoYXZlIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgR2V0dGluZyBhICJQQVNTIiByZXN1bHQgZnJvbSB0aGUgc2NyaXB0IGlzIHJlcXVpcmVkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bCBjb21wYXRpYmlsaXR5IHJlZ2lzdHJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIGFjY2VwdGFuY2UgZm9ybSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gZmluZCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy93ZWJmb3JtL3lvY3RvLXByb2plY3QtY29tcGF0aWJsZS1yZWdpc3RyYXRpb24nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3lvY3RvLXByb2plY3QtY29tcGF0aWJpbGl0eS1wcm9ncmFtLWFwcGxpY2F0aW9uJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBDb21wYXRpYmlsaXR5IFByb2dyYW0gQXBwbGljYXRpb248L3RpdGxlPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gYmUgZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgbG9nbywgeW91IG5lZWQgdG8gc2F0aXNmeQorICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgYWJsZSB0byBjaGVjayB0aGUgYm94IGluZGljYXRpbmcgdGhhdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdCBhICJQQVNTIiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdCBhZ2FpbnN0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlciAiWWVzIiB0byB0aGUgcXVlc3Rpb25zIG9uIHRoZSBmb3JtIG9yIGhhdmUgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGFibGUgZXhwbGFuYXRpb24gZm9yIGFueSBxdWVzdGlvbnMgYW5zd2VyZWQgIk5vIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBiZSBhIFlvY3RvIFByb2plY3QgTWVtYmVyIE9yZ2FuaXphdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICByZWdpc3RyYXRpb24gZm9ybSBhbmQgb24gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWNoZWNrLWxheWVyPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1jb21wYXRpYmxlLXByb2dyYW0tYXBwbGljYXRpb24nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IENvbXBhdGlibGUgUHJvZ3JhbSBBcHBsaWNhdGlvbjwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSAxLjAgdmVyc2lvbiBvZiB0aGUgZm9ybSB0byBhcHBseSBmb3IgeW91cgotICAgICAgICAgICAgICAgICAgICBsYXllcidzIGNvbXBhdGliaWxpdHkgYXBwcm92YWwuCisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9ybSB0byBhcHBseSBmb3IgeW91ciBsYXllcidzIGFwcHJvdmFsLgogICAgICAgICAgICAgICAgICAgICBVcG9uIHN1Y2Nlc3NmdWwgYXBwbGljYXRpb24sIHlvdSBjYW4gdXNlIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IENvbXBhdGliaWxpdHkgbG9nbyB3aXRoIHlvdXIgbGF5ZXIgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IENvbXBhdGliaWxpdHkgTG9nbyB3aXRoIHlvdXIgbGF5ZXIgYW5kIHRoZQogICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB0aGF0IHVzZXMgeW91ciBsYXllci4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTU1MiwyNiArNTQ3LDE4IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0neW9jdG8tY29tcGF0LWxheWVyLXB5LXNjcmlwdCc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT55b2N0by1jb21wYXQtbGF5ZXIucHk8L2ZpbGVuYW1lPiBTY3JpcHQ8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3lvY3RvLWNoZWNrLWxheWVyLXNjcmlwdCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT55b2N0by1jaGVjay1sYXllcjwvZmlsZW5hbWU+IFNjcmlwdDwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT55b2N0by1jb21wYXQtbGF5ZXIucHk8L2ZpbGVuYW1lPiBzY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGN1cnJlbnRseSBhdmFpbGFibGUsIHByb3ZpZGVzIHlvdSBhIHdheSB0bwotICAgICAgICAgICAgICAgICAgICBhc3Nlc3MgaG93IGNvbXBhdGlibGUgeW91ciBsYXllciBpcyB3aXRoIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWNoZWNrLWxheWVyPC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIHlvdSBhIHdheSB0byBhc3Nlc3MgaG93IGNvbXBhdGlibGUgeW91ciBsYXllciBpcworICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHJ1biB0aGlzIHNjcmlwdCBwcmlvciB0byB1c2luZyB0aGUgZm9ybSB0bwogICAgICAgICAgICAgICAgICAgICBhcHBseSBmb3IgY29tcGF0aWJpbGl0eSBhcyBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgc2NyaXB0IGlzIHBhcnQgb2YgdGhlIDIuMCByZWxlYXNlIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBDb21wYXRpYmlsaXR5IFByb2dyYW0sIHlvdSBhcmUgbm90Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCB0byBzdWNjZXNzZnVsbHkgcnVuIHlvdXIgbGF5ZXIgYWdhaW5zdCBpdAotICAgICAgICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgdG8gYmUgZ3JhbnRlZCBjb21wYXRpYmlsaXR5IHN0YXR1cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGEgZ29vZCBpZGVhIGFzIGl0IHByb21vdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICB3ZWxsLWJlaGF2ZWQgbGF5ZXJzIGFuZCBnaXZlcyB5b3UgYW4gaWRlYSBvZiB3aGVyZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXllciBzdGFuZHMgcmVnYXJkaW5nIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYWNoaWV2ZSBhICJQQVNTIiByZXN1bHQgaW4gb3JkZXIgdG8gaGF2ZQorICAgICAgICAgICAgICAgICAgICB5b3VyIGFwcGxpY2F0aW9uIGZvcm0gc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTU4OCw3ICs1NzUsNyBAQAogICAgICAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGRpcmVjdG9yeToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgotICAgICAkIHlvY3RvLWNvbXBhdC1sYXllci5weSA8cmVwbGFjZWFibGU+eW91cl9sYXllcl9kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAkIHlvY3RvLWNoZWNrLWxheWVyIDxyZXBsYWNlYWJsZT55b3VyX2xheWVyX2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBwcm92aWRlIHRoZSBhY3R1YWwgZGlyZWN0b3J5IGZvciB5b3VyIGxheWVyCiAgICAgICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIGNvbW1hbmQuCkBAIC02NTUsNyArNjQyLDcgQEAKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz5CQkxBWUVSUzwvdWxpbms+PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAogICAgICAgICAgICAgICAgIHdoaWNoIGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gZW5hYmxlIGEgbGF5ZXIgbmFtZWQKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1teWxheWVyPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtNzM2LDcgKzcyMyw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgbWFpbiBmb3JtZmFjdG9yIHJlY2lwZSBhbmQgYQogICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgZm9ybWZhY3RvciBhcHBlbmQgZmlsZSBib3RoIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIG1haW4gZm9ybWZhY3RvciByZWNpcGUsIHdoaWNoIGlzIG5hbWVkCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiPC9maWxlbmFtZT4gYW5kIGxvY2F0ZWQgaW4gdGhlCiAgICAgICAgICAgICAgICAgIm1ldGEiIGxheWVyIGF0CkBAIC05NzUsMTI4ICs5NjIsMTYzIEBACiAgICAgIC4uLgogICAgICBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc29tZXRoaW5nIC0tZW5hYmxlLXNvbWV0aGluZ2Vsc2UiCiAgICAgIC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGF5ZXJpbmRleC1mZXRjaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGZXRjaGVzIGEgbGF5ZXIgZnJvbSBhIGxheWVyIGluZGV4LCBhbG9uZyB3aXRoIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW50IGxheWVycywgYW5kIGFkZHMgdGhlIGxheWVycyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGF5ZXJpbmRleC1zaG93LWRlcGVuZHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRmluZHMgbGF5ZXIgZGVwZW5kZW5jaWVzIGZyb20gdGhlIGxheWVyIGluZGV4LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Y3JlYXRlLWxheWVyPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBiYXNpYyBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUteW9jdG8tbGF5ZXItc2NyaXB0Jz4KLSAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWxheWVyIFNjcmlwdDwvdGl0bGU+CisgICAgICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+CisgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT4gc2NyaXB0IHNpbXBsaWZpZXMKKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gc2NyaXB0IHdpdGggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+IHN1YmNvbW1hbmQgc2ltcGxpZmllcwogICAgICAgICAgICAgICAgIGNyZWF0aW5nIGEgbmV3IGdlbmVyYWwgbGF5ZXIuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3BlY2lmaWMgKEJTUCkKLSAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gQlNQIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTcGVjaWZpYyAoQlNQKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlcyB0aGUgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQsIHdoaWNoIGlzIGRlcHJlY2F0ZWQgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWVzIHRvIGZ1bmN0aW9uIGFzIHBhcnQgb2YgdGhlIDIuNCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IHdpbGwgYmUgcmVtb3ZlZCBwb3N0IDIuNC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZGUgb2YgdGhlIHNjcmlwdCdzIG9wZXJhdGlvbiBpcyB0byBwcm9tcHQgeW91IGZvcgotICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG5lZWRlZCB0byBnZW5lcmF0ZSB0aGUgbGF5ZXI6CisgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgbW9kZSBvZiB0aGUgc2NyaXB0J3Mgb3BlcmF0aW9uIHdpdGggdGhpcworICAgICAgICAgICAgICAgIHN1YmNvbW1hbmQgaXMgdG8gY3JlYXRlIGEgbGF5ZXIgd2l0aCB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgbGF5ZXIgcHJpb3JpdHkuCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIGxheWVyIHByaW9yaXR5IG9mIDYuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldoZXRoZXIgb3Igbm90IHRvIGNyZWF0ZSBhIHNhbXBsZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+V2hldGhlciBvciBub3QgdG8gY3JlYXRlIGEgc2FtcGxlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQSA8ZmlsZW5hbWU+cmVjaXBlcy1leGFtcGxlPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIGEgZnVydGhlciBzdWJkaXJlY3RvcnkgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leGFtcGxlPC9maWxlbmFtZT4sIHdoaWNoIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgICAgICBhbiA8ZmlsZW5hbWU+ZXhhbXBsZS5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIDxmaWxlbmFtZSA+Q09QWUlORy5NSVQ8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBsaWNlbnNlIHN0YXRlbWVudCBmb3IgdGhlIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBhc3N1bWVzIHlvdSB3YW50IHRvIHVzZSB0aGUgTUlUIGxpY2Vuc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB0eXBpY2FsIGZvciBtb3N0IGxheWVycywgZm9yIHRoZSBjb250ZW50cyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVyIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBhIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJpbmcgdGhlIGNvbnRlbnRzIG9mIHlvdXIgbmV3IGxheWVyLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPnlvY3RvLWxheWVyIGNyZWF0ZTwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kCi0gICAgICAgICAgICAgICAgdG8gY3JlYXRlIGEgbmV3IGdlbmVyYWwgbGF5ZXIuCi0gICAgICAgICAgICAgICAgSW4gaXRzIHNpbXBsZXN0IGZvcm0sIHlvdSBjYW4gY3JlYXRlIGEgbGF5ZXIgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICBJbiBpdHMgc2ltcGxlc3QgZm9ybSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvcm0KKyAgICAgICAgICAgICAgICB0byBjcmVhdGUgYSBsYXllci4KKyAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBjcmVhdGVzIGEgbGF5ZXIgd2hvc2UgbmFtZSBjb3JyZXNwb25kcyB0bworICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT55b3VyX2xheWVyX25hbWU8L3JlcGxhY2VhYmxlPiBpbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgIGRpcmVjdG9yeToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8tbGF5ZXIgY3JlYXRlIG15bGF5ZXIKKyAgICAgJCBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgPHJlcGxhY2VhYmxlPnlvdXJfbGF5ZXJfbmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGNyZWF0ZXMgYSBsYXllciBuYW1lZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIHRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXIgY3JlYXRlPC9maWxlbmFtZT4gY29tbWFuZCBydW5zLAotICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgcHJvbXB0cyBhcHBlYXIgaW4gYnJhY2tldHMuCi0gICAgICAgICAgICAgICAgUHJlc3NpbmcgZW50ZXIgd2l0aG91dCBzdXBwbHlpbmcgYW55dGhpbmcgZm9yIHRoZSBwcm9tcHRzCi0gICAgICAgICAgICAgICAgb3IgcHJlc3NpbmcgZW50ZXIgYW5kIHByb3ZpZGluZyBhbiBpbnZhbGlkIHJlc3BvbnNlIGNhdXNlcyB0aGUKLSAgICAgICAgICAgICAgICBzY3JpcHQgdG8gYWNjZXB0IHRoZSBkZWZhdWx0IHZhbHVlLgotICAgICAgICAgICAgICAgIE9uY2UgdGhlIHNjcmlwdCBjb21wbGV0ZXMsIHRoZSBuZXcgbGF5ZXIKLSAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgbmFtZXMgdGhlIGxheWVyIGJ5IHByZXBlbmRpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPiB0byB0aGUgbmFtZSB5b3UgcHJvdmlkZS4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBzZXQgdGhlIHByaW9yaXR5IG9mIHRoZSBsYXllciB0byBvdGhlciB0aGFuIHRoZQorICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgb2YgIjYiLCB5b3UgY2FuIGVpdGhlciB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZkYXNoOyZkYXNoO3ByaW9yaXR5PC9maWxlbmFtZT4gb3B0aW9uIG9yIHlvdSBjYW4KKyAgICAgICAgICAgICAgICBlZGl0IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkZJTEVfUFJJT1JJVFknPjxmaWxlbmFtZT5CQkZJTEVfUFJJT1JJVFk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFsdWUgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBhZnRlciB0aGUKKyAgICAgICAgICAgICAgICBzY3JpcHQgY3JlYXRlcyBpdC4KKyAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgaWYgeW91IHdhbnQgdG8gZ2l2ZSB0aGUgZXhhbXBsZSByZWNpcGUgZmlsZQorICAgICAgICAgICAgICAgIHNvbWUgbmFtZSBvdGhlciB0aGFuIHRoZSBkZWZhdWx0LCB5b3UgY2FuCisgICAgICAgICAgICAgICAgdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mZGFzaDsmZGFzaDtleGFtcGxlLXJlY2lwZS1uYW1lPC9maWxlbmFtZT4gb3B0aW9uLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBNaW5pbWFsbHksIHRoZSBzY3JpcHQgY3JlYXRlcyB0aGUgZm9sbG93aW5nIHdpdGhpbiB0aGUgbGF5ZXI6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UaGUgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgbGF5ZXIncyBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgcm9vdCBuYW1lIGZvciB0aGUgZmlsZSBpcyB0aGUgc2FtZSBhcyB0aGUgcm9vdCBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3VyIHByb3ZpZGVkIGZvciB0aGUgbGF5ZXIgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48cmVwbGFjZWFibGU+bGF5ZXI8L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09QWUlORy5NSVQ8L2ZpbGVuYW1lPiBmaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29weXJpZ2h0IGFuZCB1c2Ugbm90aWNlIGZvciB0aGUgc29mdHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UaGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIGZpbGUgZGVzY3JpYmluZyB0aGUgY29udGVudHMgb2YgeW91ciBuZXcgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSWYgeW91IGNob29zZSB0byBnZW5lcmF0ZSBhIHNhbXBsZSByZWNpcGUgZmlsZSwgdGhlIHNjcmlwdAotICAgICAgICAgICAgICAgIHByb21wdHMgeW91IGZvciB0aGUgbmFtZSBmb3IgdGhlIHJlY2lwZSBhbmQgdGhlbiBjcmVhdGVzIGl0Ci0gICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5sYXllcjwvcmVwbGFjZWFibGU+L3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlLzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgY3JlYXRlcyBhIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlIGFuZCBhCi0gICAgICAgICAgICAgICAgZGlyZWN0b3J5LCB3aGljaCBjb250YWlucyBhIHNhbXBsZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oZWxsb3dvcmxkLmM8L2ZpbGVuYW1lPiBzb3VyY2UgZmlsZSwgYWxvbmcgd2l0aAotICAgICAgICAgICAgICAgIGEgc2FtcGxlIHBhdGNoIGZpbGUuCi0gICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBwcm92aWRlIGEgcmVjaXBlIG5hbWUsIHRoZSBzY3JpcHQgdXNlcwotICAgICAgICAgICAgICAgICJleGFtcGxlIi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSWYgeW91IGNob29zZSB0byBnZW5lcmF0ZSBhIHNhbXBsZSBhcHBlbmQgZmlsZSwgdGhlIHNjcmlwdAotICAgICAgICAgICAgICAgIHByb21wdHMgeW91IGZvciB0aGUgbmFtZSBmb3IgdGhlIGZpbGUgYW5kIHRoZW4gY3JlYXRlcyBpdAotICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT48cmVwbGFjZWFibGU+bGF5ZXI8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC88L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGNyZWF0ZXMgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBhbmQgYQotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgd2hpY2ggY29udGFpbnMgYSBzYW1wbGUgcGF0Y2ggZmlsZS4KLSAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSByZWNpcGUgbmFtZSwgdGhlIHNjcmlwdCB1c2VzCi0gICAgICAgICAgICAgICAgImV4YW1wbGUiLgotICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgYWxzbyBwcm9tcHRzIHlvdSBmb3IgdGhlIHZlcnNpb24gb2YgdGhlIGFwcGVuZCBmaWxlLgotICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIHNob3VsZCBtYXRjaCB0aGUgcmVjaXBlIHRvIHdoaWNoIHRoZSBhcHBlbmQgZmlsZQotICAgICAgICAgICAgICAgIGlzIGFzc29jaWF0ZWQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBlYXNpZXN0IHdheSB0byBzZWUgaG93IHRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHNjcmlwdCB3b3JrcyBpcyB0byBleHBlcmltZW50IHdpdGggdGhlIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBUaGUgZWFzaWVzdCB3YXkgdG8gc2VlIGhvdyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgIHdvcmtzIGlzIHRvIGV4cGVyaW1lbnQgd2l0aCB0aGUgc2NyaXB0LgogICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWFkIHRoZSB1c2FnZSBpbmZvcm1hdGlvbiBieSBlbnRlcmluZyB0aGUKICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHlvY3RvLWxheWVyIGhlbHAKKyAgICAgJCBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgLS1oZWxwCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIHVzYWdlOiBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgWy1oXSBbLS1wcmlvcml0eSBQUklPUklUWV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLS1leGFtcGxlLXJlY2lwZS1uYW1lIEVYQU1QTEVSRUNJUEVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJkaXIKKworICAgICBDcmVhdGUgYSBiYXNpYyBsYXllcgorCisgICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgIGxheWVyZGlyICAgICAgICAgICAgICBMYXllciBkaXJlY3RvcnkgdG8gY3JlYXRlCisKKyAgICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgICAgLS1wcmlvcml0eSBQUklPUklUWSwgLXAgUFJJT1JJVFkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXIgZGlyZWN0b3J5IHRvIGNyZWF0ZQorICAgICAgIC0tZXhhbXBsZS1yZWNpcGUtbmFtZSBFWEFNUExFUkVDSVBFLCAtZSBFWEFNUExFUkVDSVBFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lIG9mIHRoZSBleGFtcGxlIHJlY2lwZQogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgT25jZSB5b3UgY3JlYXRlIHlvdXIgZ2VuZXJhbCBsYXllciwgeW91IG11c3QgYWRkIGl0IHRvIHlvdXIKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlIGEgbGF5ZXIgbmFtZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1teWxheWVyPC9maWxlbmFtZT4gaXMgYWRkZWQ6CisgICAgICAgICAgICAgICAgWW91IGNhbiBhZGQgeW91ciBsYXllciBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgYWRkLWxheWVyPC9maWxlbmFtZT4gY29tbWFuZDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEJCTEFZRVJTID0gPyIgXAotICAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhIFwKLSAgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS1wb2t5IFwKLSAgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS15b2N0by1ic3AgXAotICAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLW15bGF5ZXIgXAotICAgICAgICAiCisgICAgICQgYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIDxyZXBsYWNlYWJsZT55b3VyX2xheWVyX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgd2hlcmUgYSBsYXllciBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNjb3R0cmlmPC9maWxlbmFtZT4gaXMgYWRkZWQgYW5kIHRoZW4gdGhlCisgICAgICAgICAgICAgICAgbGF5ZXJzIGFyZSBzaG93biB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnM8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgbWV0YS1zY290dHJpZgorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICBMb2FkaW5nIGNhY2hlOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBMb2FkZWQgMTI3NSBlbnRyaWVzIGZyb20gZGVwZW5kZW5jeSBjYWNoZS4KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDAKKyAgICAgUGFyc2luZyBvZiA4MTkgLmJiIGZpbGVzIGNvbXBsZXRlICg4MTcgY2FjaGVkLCAyIHBhcnNlZCkuIDEyNzYgdGFyZ2V0cywgNDQgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICAkIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIGxheWVyICAgICAgICAgICAgICAgICBwYXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eQorICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICBtZXRhICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9tZXRhICAgICAgICAgICAgICAgICAgNQorICAgICBtZXRhLXBva3kgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9tZXRhLXBva3kgICAgICAgICAgICAgNQorICAgICBtZXRhLXlvY3RvLWJzcCAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9tZXRhLXlvY3RvLWJzcCAgICAgICAgNQorICAgICBtZXRhLW15bGF5ZXIgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvbWV0YS1teWxheWVyICAgICAgICAgICAgICAgNgorICAgICB3b3Jrc3BhY2UgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC93b3Jrc3BhY2UgICAgICAgOTkKKyAgICAgbWV0YS1zY290dHJpZiAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvbWV0YS1zY290dHJpZiAgIDYKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgQWRkaW5nIHRoZSBsYXllciB0byB0aGlzIGZpbGUgZW5hYmxlcyB0aGUgYnVpbGQgc3lzdGVtIHRvCiAgICAgICAgICAgICAgICAgbG9jYXRlIHRoZSBsYXllciBkdXJpbmcgdGhlIGJ1aWxkLgpAQCAtMTE5Myw3ICsxMjE1LDcgQEAKICAgICAgICAgICAgICAgICBmcm9tIHdpdGhpbiBhIHJlY2lwZSBhbmQgdXNpbmcKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVhUUkFfSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBmcm9tIHdpdGhpbgogICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC0xNDk2LDYgKzE1MTgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNpbWlsYXIgaW4gZnVuY3Rpb24gdG8gdGhlIHJlY2lwZSB5b3UgbmVlZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gcmVjaXBlIHN5bnRheCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVjaXBlLXN5bnRheCc+UmVjaXBlIFN5bnRheDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmV3LXJlY2lwZS1jcmVhdGluZy10aGUtYmFzZS1yZWNpcGUtdXNpbmctZGV2dG9vbCc+CkBAIC0xNTE2LDggKzE1NDMsOSBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYSBjb21wbGV0ZSBkZXNjcmlwdGlvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzZS1kZXZ0b29sLXRvLWludGVncmF0ZS1uZXctY29kZSc+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IHRvIEFkZCBhbiBBcHBsaWNhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYS1jbG9zZXItbG9vay1hdC1kZXZ0b29sLWFkZCc+QSBDbG9zZXIgTG9vayBhdCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFkZDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKQEAgLTE1NDAsMTIgKzE1NjgsMTAgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUbyBydW4gdGhlIHRvb2wsIHlvdSBqdXN0IG5lZWQgdG8gYmUgaW4geW91cgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBhbmQgaGF2ZSBzb3VyY2VkIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKICAgICAgICAgICAgICAgICAgICAgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPjwvdWxpbms+KS4KICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgYmFzaWMgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBzeW50YXg6CiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgUnVubmluZyA8ZmlsZW5hbWU+cmVjaXBldG9vbCAtaDwvZmlsZW5hbWU+IG9yCkBAIC0xNzE1LDMwMyArMTc0MSw2IEBACiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kaW5nLXJlY2lwZS1zeW50YXgnPgotICAgICAgICAgICAgPHRpdGxlPlVuZGVyc3RhbmRpbmcgUmVjaXBlIFN5bnRheDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgcmVjaXBlIGZpbGUgc3ludGF4IGlzIGltcG9ydGFudCBmb3IKLSAgICAgICAgICAgICAgICB3cml0aW5nIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IG92ZXJ2aWV3cyB0aGUgYmFzaWMgaXRlbXMgdGhhdCBtYWtlIHVwIGEKLSAgICAgICAgICAgICAgICBCaXRCYWtlIHJlY2lwZSBmaWxlLgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGNvbXBsZXRlIEJpdEJha2Ugc3ludGF4IGRlc2NyaXB0aW9ucywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgY2hhcHRlciBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlZhcmlhYmxlIEFzc2lnbm1lbnRzIGFuZCBNYW5pcHVsYXRpb25zOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZSBhc3NpZ25tZW50cyBhbGxvdyBhIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFzc2lnbm1lbnQgY2FuIGJlIHN0YXRpYyB0ZXh0IG9yIG1pZ2h0IGluY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50cyBvZiBvdGhlciB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB0aGUgYXNzaWdubWVudCwgYXBwZW5kaW5nIGFuZCBwcmVwZW5kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zIGFyZSBhbHNvIHN1cHBvcnRlZC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3Mgc29tZSBvZiB0aGUgd2F5cwotICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdmFyaWFibGVzIGluIHJlY2lwZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFMgPSAiJHtXT1JLRElSfS9wb3N0Zml4LSR7UFZ9IgotICAgICBDRkxBR1MgKz0gIi1ETk9fQVNNIgotICAgICBTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2ZpeHVwLnBhdGNoIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RnVuY3Rpb25zOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbnMgcHJvdmlkZSBhIHNlcmllcyBvZiBhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB1c3VhbGx5IHVzZSBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIGEgdGFzayBmdW5jdGlvbiBvciB0byBjb21wbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBhIGRlZmF1bHQgZnVuY3Rpb24gKGkuZS4gYXBwZW5kIG9yIHByZXBlbmQgdG8gYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGZ1bmN0aW9uKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkIGZ1bmN0aW9ucyB1c2UgPGZpbGVuYW1lPnNoPC9maWxlbmFtZT4gc2hlbGwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCwgYWx0aG91Z2ggYWNjZXNzIHRvIE9wZW5FbWJlZGRlZCB2YXJpYWJsZXMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCBtZXRob2RzIGFyZSBhbHNvIGF2YWlsYWJsZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZnVuY3Rpb24gZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZWQ8L2ZpbGVuYW1lPiByZWNpcGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGRvX2luc3RhbGwgKCkgewotICAgICAgICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKLSAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0gICAgICAgICBtdiAke0R9JHtiaW5kaXJ9L3NlZCAke0R9JHtiYXNlX2JpbmRpcn0vc2VkCi0gICAgICAgICBybWRpciAke0R9JHtiaW5kaXJ9LwotICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGltcGxlbWVudCBuZXcgZnVuY3Rpb25zIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBjYWxsZWQgYmV0d2VlbiBleGlzdGluZyB0YXNrcyBhcyBsb25nIGFzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGZ1bmN0aW9ucyBhcmUgbm90IHJlcGxhY2luZyBvciBjb21wbGVtZW50aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBmdW5jdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGltcGxlbWVudCBmdW5jdGlvbnMgaW4gUHl0aG9uCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIHNoZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgQm90aCBvZiB0aGVzZSBvcHRpb25zIGFyZSBub3Qgc2VlbiBpbiB0aGUgbWFqb3JpdHkgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+S2V5d29yZHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgcmVjaXBlcyB1c2Ugb25seSBhIGZldyBrZXl3b3Jkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB1c2Uga2V5d29yZHMgdG8gaW5jbHVkZSBjb21tb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyAoPGZpbGVuYW1lPmluaGVyaXQ8L2ZpbGVuYW1lPiksIGxvYWQgcGFydHMKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgcmVjaXBlIGZyb20gb3RoZXIgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlcXVpcmU8L2ZpbGVuYW1lPikgYW5kIGV4cG9ydCB2YXJpYWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBlbnZpcm9ubWVudCAoPGZpbGVuYW1lPmV4cG9ydDwvZmlsZW5hbWU+KS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIHVzZSBvZiBzb21lIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBrZXl3b3JkczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZXhwb3J0IFBPU1RDT05GID0gIiR7U1RBR0lOR19CSU5ESVJ9L3Bvc3Rjb25mIgotICAgICBpbmhlcml0IGF1dG9jb25mCi0gICAgIHJlcXVpcmUgb3RoZXJmaWxlLmluYwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29tbWVudHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFueSBsaW5lcyB0aGF0IGJlZ2luIHdpdGggdGhlIGhhc2ggY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiM8L2ZpbGVuYW1lPikgYXJlIHRyZWF0ZWQgYXMgY29tbWVudCBsaW5lcwotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFyZSBpZ25vcmVkOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIFRoaXMgaXMgYSBjb21tZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBuZXh0IGxpc3Qgc3VtbWFyaXplcyB0aGUgbW9zdCBpbXBvcnRhbnQgYW5kIG1vc3QgY29tbW9ubHkKLSAgICAgICAgICAgICAgICB1c2VkIHBhcnRzIG9mIHRoZSByZWNpcGUgc3ludGF4LgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHBhcnRzIG9mIHRoZSBzeW50YXgsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICByZWZlcmVuY2UgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhJz5TeW50YXggYW5kIE9wZXJhdG9yczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxpbmUgQ29udGludWF0aW9uOiA8ZmlsZW5hbWU+XDwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBiYWNrd2FyZCBzbGFzaCAoPGZpbGVuYW1lPlw8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciB0byBzcGxpdCBhIHN0YXRlbWVudCBvdmVyIG11bHRpcGxlIGxpbmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2UgdGhlIHNsYXNoIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRvIGJlIGNvbnRpbnVlZCBvbiB0aGUgbmV4dCBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBWQVIgPSAiQSByZWFsbHkgbG9uZyBcCi0gICAgICAgICAgICBsaW5lIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBoYXZlIGFueSBjaGFyYWN0ZXJzIGluY2x1ZGluZyBzcGFjZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0YWJzIGFmdGVyIHRoZSBzbGFzaCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzaW5nIFZhcmlhYmxlczogPGZpbGVuYW1lPiR7Li4ufTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+JHs8cmVwbGFjZWFibGU+VkFSTkFNRTwvcmVwbGFjZWFibGU+fTwvZmlsZW5hbWU+IHN5bnRheCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRoZSBjb250ZW50cyBvZiBhIHZhcmlhYmxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJwbmcvemxpYi0ke1BWfS50YXIuZ3oiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZSB2YWx1ZSBvZiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZXhwcmVzc2VkIGluIHRoaXMgZm9ybSBkb2VzIG5vdCBnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRlZCBhdXRvbWF0aWNhbGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBleHBhbnNpb24gb2YgdGhlc2UgZXhwcmVzc2lvbnMgaGFwcGVucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uLWRlbWFuZCBsYXRlciAoZS5nLiB1c3VhbGx5IHdoZW4gYSBmdW5jdGlvbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXMgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBleGVjdXRlcykuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBlbnN1cmVzIHRoYXQgdGhlIHZhbHVlcyBhcmUgbW9zdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIGZvciB0aGUgY29udGV4dCBpbiB3aGljaCB0aGV5IGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgdXNlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgcmFyZSBvY2Nhc2lvbiB0aGF0IHlvdSBkbyBuZWVkIHRoZSB2YXJpYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gdG8gYmUgZXhwYW5kZWQgaW1tZWRpYXRlbHksIHlvdSBjYW4gdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT46PTwvZmlsZW5hbWU+IG9wZXJhdG9yIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IHdoZW4geW91IG1ha2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudCwgYnV0IHRoaXMgaXMgbm90IGdlbmVyYWxseSBuZWVkZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5RdW90ZSBBbGwgQXNzaWdubWVudHM6IDxmaWxlbmFtZT4iPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4iPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgZG91YmxlIHF1b3RlcyBhcm91bmQgdGhlIHZhbHVlIGluIGFsbCB2YXJpYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudHMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFZBUjEgPSAiJHtPVEhFUlZBUn0iCi0gICAgIFZBUjIgPSAiVGhlIHZlcnNpb24gaXMgJHtQVn0iCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Db25kaXRpb25hbCBBc3NpZ25tZW50OiA8ZmlsZW5hbWU+Pz08L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbmFsIGFzc2lnbm1lbnQgaXMgdXNlZCB0byBhc3NpZ24gYSB2YWx1ZSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYSB2YXJpYWJsZSwgYnV0IG9ubHkgd2hlbiB0aGUgdmFyaWFibGUgaXMgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNldC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgcXVlc3Rpb24gbWFyayBmb2xsb3dlZCBieSB0aGUgZXF1YWwgc2lnbgotICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+KSB0byBtYWtlIGEgInNvZnQiIGFzc2lnbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksICJzb2Z0IiBhc3NpZ25tZW50cyBhcmUgdXNlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3IgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBhbGxvd2VkIHRvIGNvbWUgdGhyb3VnaCBmcm9tIHRoZSBleHRlcm5hbAotICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGUgd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4gaXMgc2V0IHRvICJOZXcgdmFsdWUiIGlmCi0gICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyBjdXJyZW50bHkgZW1wdHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiA8ZmlsZW5hbWU+VkFSMTwvZmlsZW5hbWU+IGhhcyBhbHJlYWR5IGJlZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNldCwgaXQgcmVtYWlucyB1bmNoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFZBUjEgPz0gIk5ldyB2YWx1ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgbmV4dCBleGFtcGxlLCA8ZmlsZW5hbWU+VkFSMTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBpcyBsZWZ0IHdpdGggdGhlIHZhbHVlICJPcmlnaW5hbCB2YWx1ZSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFZBUjEgPSAiT3JpZ2luYWwgdmFsdWUiCi0gICAgIFZBUjEgPz0gIk5ldyB2YWx1ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkFwcGVuZGluZzogPGZpbGVuYW1lPis9PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIHBsdXMgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5IHRoZSBlcXVhbHMgc2lnbgotICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+KSB0byBhcHBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgb2YgdGhlIHZhcmlhYmxlIGFuZCB0aGUgbmV3IGNvbnRlbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZml4LW1ha2VmaWxlLnBhdGNoIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UHJlcGVuZGluZzogPGZpbGVuYW1lPj0rPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGVxdWFscyBzaWduIGZvbGxvd2VkIGJ5IHRoZSBwbHVzIGNoYXJhY3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+KSB0byBwcmVwZW5kIHZhbHVlcyB0byBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBhZGRzIGEgc3BhY2UgYmV0d2VlbiB0aGUgbmV3IGNvbnRlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGV4aXN0aW5nIGNvbnRlbnQgb2YgdGhlIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVkFSID0rICJTdGFydHMiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBlbmRpbmc6IDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gb3BlcmF0b3IgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBkb2VzIG5vdCBhZGQgYW55IGFkZGl0aW9uYWwgc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCB0aGUgb3BlcmF0b3IgaXMgYXBwbGllZCBhZnRlciBhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPiBvcGVyYXRvcnMgaGF2ZSBiZWVuIGFwcGxpZWQgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBhbGwgPGZpbGVuYW1lPj08L2ZpbGVuYW1lPiBhc3NpZ25tZW50cyBoYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICBvY2N1cnJlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyB0aGUgc3BhY2UgYmVpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIHN0YXJ0IHRvIGVuc3VyZSB0aGUgYXBwZW5kZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzIG5vdCBtZXJnZWQgd2l0aCB0aGUgZXhpc3RpbmcgdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vZml4LW1ha2VmaWxlLnBhdGNoIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSB0aGUgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Igd2l0aCBvdmVycmlkZXMsIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGFjdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgYmVpbmcgcGVyZm9ybWVkIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSV9hcHBlbmRfc2g0ID0gIiBmaWxlOi8vZml4LW1ha2VmaWxlLnBhdGNoIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UHJlcGVuZGluZzogPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kIHZhbHVlcyB0byBleGlzdGluZyB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGRvZXMgbm90IGFkZCBhbnkgYWRkaXRpb25hbCBzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+IG9wZXJhdG9ycyBoYXZlIGJlZW4gYXBwbGllZCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIG9jY3VycmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZwotICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgZW5kIHRvIGVuc3VyZSB0aGUgcHJlcGVuZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBub3QgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHZhbHVlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDRkxBR1NfcHJlcGVuZCA9ICItSSR7U30vbXlpbmNsdWRlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoZSA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Igd2l0aCBvdmVycmlkZXMsIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGFjdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgYmVpbmcgcGVyZm9ybWVkIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQ0ZMQUdTX3ByZXBlbmRfc2g0ID0gIi1JJHtTfS9teWluY2x1ZGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk92ZXJyaWRlczo8L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBvdmVycmlkZXMgdG8gc2V0IGEgdmFsdWUgY29uZGl0aW9uYWxseSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGljYWxseSBiYXNlZCBvbiBob3cgdGhlIHJlY2lwZSBpcyBiZWluZyBidWlsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBzZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0JSQU5DSCc+PGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSdzIHZhbHVlIHRvICJzdGFuZGFyZC9iYXNlIiBmb3IgYW55IHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBmb3IgcWVtdWFybSB3aGVyZSBpdCBzaG91bGQgYmUgc2V0IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiLCB5b3Ugd291bGQgZG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEtCUkFOQ0ggPSAic3RhbmRhcmQvYmFzZSIKLSAgICAgS0JSQU5DSF9xZW11YXJtICA9ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlcyBhcmUgYWxzbyB1c2VkIHRvIHNlcGFyYXRlIGFsdGVybmF0ZSB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgdmFyaWFibGUgaW4gb3RoZXIgc2l0dWF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHNldHRpbmcgdmFyaWFibGVzIHN1Y2ggYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGluZGl2aWR1YWwgcGFja2FnZXMgcHJvZHVjZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjaXBlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UgYW4gb3ZlcnJpZGUgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5kZW50YXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBzcGFjZXMgZm9yIGluZGVudGF0aW9uIHJhdGhlciB0aGFuIHRoYW4gdGFicy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzaGVsbCBmdW5jdGlvbnMsIGJvdGggY3VycmVudGx5IHdvcmsuCi0gICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBhIHBvbGljeSBkZWNpc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlIHRhYnMgaW4gc2hlbGwgZnVuY3Rpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IHNvbWUgbGF5ZXJzIGhhdmUgYSBwb2xpY3kgdG8gdXNlIHNwYWNlcwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFsbCBpbmRlbnRhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVzaW5nIFB5dGhvbiBmb3IgQ29tcGxleCBPcGVyYXRpb25zOiA8ZmlsZW5hbWU+JHtAPHJlcGxhY2VhYmxlPnB5dGhvbl9jb2RlPC9yZXBsYWNlYWJsZT59PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBhZHZhbmNlZCBwcm9jZXNzaW5nLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBjb2RlIGR1cmluZyB2YXJpYWJsZSBhc3NpZ25tZW50cyAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoIGFuZCByZXBsYWNlbWVudCBvbiBhIHZhcmlhYmxlKS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaW5kaWNhdGUgUHl0aG9uIGNvZGUgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtAPHJlcGxhY2VhYmxlPnB5dGhvbl9jb2RlPC9yZXBsYWNlYWJsZT59PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCBmb3IgdGhlIHZhcmlhYmxlIGFzc2lnbm1lbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvemlwJHtAZC5nZXRWYXIoJ1BWJywxKS5yZXBsYWNlKCcuJywgJycpfS50Z3oKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNoZWxsIEZ1bmN0aW9uIFN5bnRheDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgc2hlbGwgZnVuY3Rpb25zIGFzIGlmIHlvdSB3ZXJlIHdyaXRpbmcgYSBzaGVsbAotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IHdoZW4geW91IGRlc2NyaWJlIGEgbGlzdCBvZiBhY3Rpb25zIHRvIHRha2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHlvdXIgc2NyaXB0IHdvcmtzIHdpdGggYSBnZW5lcmljCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2g8L2ZpbGVuYW1lPiBhbmQgdGhhdCBpdCBkb2VzIG5vdCByZXF1aXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBhbnkgPGZpbGVuYW1lPmJhc2g8L2ZpbGVuYW1lPiBvciBvdGhlciBzaGVsbC1zcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzYW1lIGNvbnNpZGVyYXRpb25zIGFwcGx5IHRvIHZhcmlvdXMgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICB1dGlsaXRpZXMgKGUuZy4gPGZpbGVuYW1lPnNlZDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdyZXA8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmF3azwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoKSB0aGF0IHlvdSBtaWdodCB3aXNoIHRvIHVzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIGluIGRvdWJ0LCB5b3Ugc2hvdWxkIGNoZWNrIHdpdGggbXVsdGlwbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyAtIGluY2x1ZGluZyB0aG9zZSBmcm9tIEJ1c3lCb3guCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCiAgICAgICAgIDxzZWN0aW9uIGlkPSduZXctcmVjaXBlLXJ1bm5pbmctYS1idWlsZC1vbi10aGUtcmVjaXBlJz4KICAgICAgICAgICAgIDx0aXRsZT5SdW5uaW5nIGEgQnVpbGQgb24gdGhlIFJlY2lwZTwvdGl0bGU+CiAKQEAgLTIwMjMsMTIgKzE3NTIsMTAgQEAKICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXNzdW1pbmcgeW91IGhhdmUgc291cmNlZCBhIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4pCisgICAgICAgICAgICAgICAgQXNzdW1pbmcgeW91IGhhdmUgc291cmNlZCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IChpLmUuCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KQogICAgICAgICAgICAgICAgIGFuZCB5b3UgYXJlIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgIHVzZSBCaXRCYWtlIHRvIHByb2Nlc3MgeW91ciByZWNpcGUuCiAgICAgICAgICAgICAgICAgQWxsIHlvdSBuZWVkIHRvIHByb3ZpZGUgaXMgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5iYXNlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gb2YgdGhlIHJlY2lwZSBhcyBkZXNjcmliZWQKQEAgLTIwODMsOCArMTgxMCw4IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZCBwcm9jZXNzIGluIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNjbG9zZXItbG9vayc+QSBDbG9zZXIgTG9vayBhdCB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdWxpbms+IgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZCBwcm9jZXNzIGluCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+VGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3VsaW5rPiIKICAgICAgICAgICAgICAgICBjaGFwdGVyIG9mIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTMwNzQsNyArMjgwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4KICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgPGZpbGVuYW1lPnN5c3RlbWQuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4geW91cgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC0zOTY3LDYgKzM2OTQsNDE3IEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKKyAgICA8c2VjdGlvbiBpZD0nZmluZGluZy10aGUtdGVtcG9yYXJ5LXNvdXJjZS1jb2RlJz4KKyAgICAgICAgPHRpdGxlPkZpbmRpbmcgVGVtcG9yYXJ5IFNvdXJjZSBDb2RlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBtaWdodCBmaW5kIGl0IGhlbHBmdWwgZHVyaW5nIGRldmVsb3BtZW50IHRvIG1vZGlmeSB0aGUKKyAgICAgICAgICAgIHRlbXBvcmFyeSBzb3VyY2UgY29kZSB1c2VkIGJ5IHJlY2lwZXMgdG8gYnVpbGQgcGFja2FnZXMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIGRldmVsb3BpbmcgYSBwYXRjaCBhbmQgeW91IG5lZWQgdG8KKyAgICAgICAgICAgIGV4cGVyaW1lbnQgYSBiaXQgdG8gZmlndXJlIG91dCB5b3VyIHNvbHV0aW9uLgorICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgaW5pdGlhbGx5IGJ1aWx0IHRoZSBwYWNrYWdlLCB5b3UgY2FuIGl0ZXJhdGl2ZWx5CisgICAgICAgICAgICB0d2VhayB0aGUgc291cmNlIGNvZGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgYW5kIHRoZW4geW91IGNhbiBmb3JjZSBhIHJlLWNvbXBpbGUgYW5kIHF1aWNrbHkgdGVzdCB5b3VyIGFsdGVyZWQKKyAgICAgICAgICAgIGNvZGUuCisgICAgICAgICAgICBPbmNlIHlvdSBzZXR0bGUgb24gYSBzb2x1dGlvbiwgeW91IGNhbiB0aGVuIHByZXNlcnZlIHlvdXIgY2hhbmdlcworICAgICAgICAgICAgaW4gdGhlIGZvcm0gb2YgcGF0Y2hlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRHVyaW5nIGEgYnVpbGQsIHRoZSB1bnBhY2tlZCB0ZW1wb3Jhcnkgc291cmNlIGNvZGUgdXNlZCBieSByZWNpcGVzCisgICAgICAgICAgICB0byBidWlsZCBwYWNrYWdlcyBpcyBhdmFpbGFibGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSBhcworICAgICAgICAgICAgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgQmVsb3cgaXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICBhcyBkZWZpbmVkIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUKKyAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTID0gIiR7V09SS0RJUn0vJHtCUH0iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBZb3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgbWFueSByZWNpcGVzIG92ZXJyaWRlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCByZWNpcGVzIHRoYXQgZmV0Y2ggdGhlaXIgc291cmNlIGZyb20gR2l0IHVzdWFsbHkgc2V0CisgICAgICAgICAgICA8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+IHRvIDxmaWxlbmFtZT4ke1dPUktESVJ9L2dpdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJQJz48ZmlsZW5hbWU+QlA8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgcmVwcmVzZW50cyB0aGUgYmFzZSByZWNpcGUgbmFtZSwgd2hpY2ggY29uc2lzdHMgb2YgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICBhbmQgdmVyc2lvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJQID0gIiR7QlBOfS0ke1BWfSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBwYXRoIHRvIHRoZSB3b3JrIGRpcmVjdG9yeSBmb3IgdGhlIHJlY2lwZQorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4pCisgICAgICAgICAgICBpcyBkZWZpbmVkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7VE1QRElSfS93b3JrLyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9LyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBhY3R1YWwgZGlyZWN0b3J5IGRlcGVuZHMgb24gc2V2ZXJhbCB0aGluZ3M6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSB0b3AtbGV2ZWwgYnVpbGQgb3V0cHV0IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTVVMVElNQUNIX1RBUkdFVF9TWVMnPjxmaWxlbmFtZT5NVUxUSU1BQ0hfVEFSR0VUX1NZUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgc3lzdGVtIGlkZW50aWZpZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIG5hbWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVEVORFBFJz48ZmlsZW5hbWU+RVhURU5EUEU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgZXBvY2ggLSAoaWYKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQsIHdoaWNoIGlzIHVzdWFsbHkgdGhlIGNhc2UgZm9yIG1vc3QKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcywgdGhlbiA8ZmlsZW5hbWU+RVhURU5EUEU8L2ZpbGVuYW1lPiBpcyBibGFuaykuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIHJldmlzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBhc3N1bWUgYSBTb3VyY2UgRGlyZWN0b3J5IHRvcC1sZXZlbCBmb2xkZXIKKyAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4sIGEgZGVmYXVsdCBCdWlsZCBEaXJlY3RvcnkgYXQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L2J1aWxkPC9maWxlbmFtZT4sIGFuZCBhCisgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4Ni1wb2t5LWxpbnV4PC9maWxlbmFtZT4gbWFjaGluZSB0YXJnZXQKKyAgICAgICAgICAgIHN5c3RlbS4KKyAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCBzdXBwb3NlIHlvdXIgcmVjaXBlIGlzIG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vXzEuMy4wLmJiPC9maWxlbmFtZT4uCisgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSB3b3JrIGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8KKyAgICAgICAgICAgIGJ1aWxkIHRoZSBwYWNrYWdlIHdvdWxkIGJlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2Zvby8xLjMuMC1yMAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InVzaW5nLWEtcXVpbHQtd29ya2Zsb3ciPgorICAgICAgICA8dGl0bGU+VXNpbmcgUXVpbHQgaW4gWW91ciBXb3JrZmxvdzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9xdWlsdCc+UXVpbHQ8L3VsaW5rPgorICAgICAgICAgICAgaXMgYSBwb3dlcmZ1bCB0b29sIHRoYXQgYWxsb3dzIHlvdSB0byBjYXB0dXJlIHNvdXJjZSBjb2RlIGNoYW5nZXMKKyAgICAgICAgICAgIHdpdGhvdXQgaGF2aW5nIGEgY2xlYW4gc291cmNlIHRyZWUuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gb3V0bGluZXMgdGhlIHR5cGljYWwgd29ya2Zsb3cgeW91IGNhbiB1c2UgdG8gbW9kaWZ5CisgICAgICAgICAgICBzb3VyY2UgY29kZSwgdGVzdCBjaGFuZ2VzLCBhbmQgdGhlbiBwcmVzZXJ2ZSB0aGUgY2hhbmdlcyBpbiB0aGUKKyAgICAgICAgICAgIGZvcm0gb2YgYSBwYXRjaCBhbGwgdXNpbmcgUXVpbHQuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICBXaXRoIHJlZ2FyZCB0byBwcmVzZXJ2aW5nIGNoYW5nZXMgdG8gc291cmNlIGZpbGVzLCBpZiB5b3UKKyAgICAgICAgICAgICAgICBjbGVhbiBhIHJlY2lwZSBvciBoYXZlIDxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT4gZW5hYmxlZCwKKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtmbG93PC91bGluaz4KKyAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwKKyAgICAgICAgICAgICAgICBpcyBhIHNhZmVyIGRldmVsb3BtZW50IGZsb3cgdGhhbiB0aGUgZmxvdyB0aGF0IHVzZXMgUXVpbHQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBnZW5lcmFsIHN0ZXBzOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmQgdGhlIFNvdXJjZSBDb2RlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRlbXBvcmFyeSBzb3VyY2UgY29kZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGlzIGtlcHQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2ZpbmRpbmctdGhlLXRlbXBvcmFyeS1zb3VyY2UtY29kZSc+RmluZGluZyBUZW1wb3JhcnkgU291cmNlIENvZGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIHRvIGxlYXJuIGhvdyB0byBsb2NhdGUgdGhlIGRpcmVjdG9yeSB0aGF0IGhhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5IHNvdXJjZSBjb2RlIGZvciBhIHBhcnRpY3VsYXIgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hhbmdlIFlvdXIgV29ya2luZyBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IGhhcyB0aGUgdGVtcG9yYXJ5CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBUaGF0IGRpcmVjdG9yeSBpcyBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIE5ldyBQYXRjaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgbW9kaWZ5aW5nIHNvdXJjZSBjb2RlLCB5b3UgbmVlZCB0byBjcmVhdGUgYSBuZXcKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2guCisgICAgICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIG5ldyBwYXRjaCBmaWxlLCB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnF1aWx0IG5ldzwvZmlsZW5hbWU+IGFzIGJlbG93OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcXVpbHQgbmV3IG15X2NoYW5nZXMucGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Ob3RpZnkgUXVpbHQgYW5kIEFkZCBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBZnRlciBjcmVhdGluZyB0aGUgcGF0Y2gsIHlvdSBuZWVkIHRvIG5vdGlmeSBRdWlsdCBhYm91dAorICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZXMgeW91IHBsYW4gdG8gZWRpdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5vdGlmeSBRdWlsdCBieSBhZGRpbmcgdGhlIGZpbGVzIHRvIHRoZSBwYXRjaCB5b3UKKyAgICAgICAgICAgICAgICAgICAganVzdCBjcmVhdGVkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcXVpbHQgYWRkIGZpbGUxLmMgZmlsZTIuYyBmaWxlMy5jCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTWFrZSB5b3VyIGNoYW5nZXMgaW4gdGhlIHNvdXJjZSBjb2RlIHRvIHRoZSBmaWxlcyB5b3UgYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHBhdGNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIG1vZGlmaWVkIHRoZSBzb3VyY2UgY29kZSwgdGhlIGVhc2llc3Qgd2F5IHRvCisgICAgICAgICAgICAgICAgICAgIHRlc3QgeW91ciBjaGFuZ2VzIGlzIGJ5IGNhbGxpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT4gdGFzayBhcyBzaG93biBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1jIGNvbXBpbGUgLWYgPHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+LWY8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+LS1mb3JjZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBmb3JjZXMgdGhlIHNwZWNpZmllZCB0YXNrIHRvIGV4ZWN1dGUuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBmaW5kIHByb2JsZW1zIHdpdGggeW91ciBjb2RlLCB5b3UgY2FuIGp1c3Qga2VlcAorICAgICAgICAgICAgICAgICAgICBlZGl0aW5nIGFuZCByZS10ZXN0aW5nIGl0ZXJhdGl2ZWx5IHVudGlsIHRoaW5ncyB3b3JrCisgICAgICAgICAgICAgICAgICAgIGFzIGV4cGVjdGVkLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsbCB0aGUgbW9kaWZpY2F0aW9ucyB5b3UgbWFrZSB0byB0aGUgdGVtcG9yYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZSBkaXNhcHBlYXIgb25jZSB5b3UgcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNsZWFuJz48ZmlsZW5hbWU+ZG9fY2xlYW48L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNsZWFuYWxsJz48ZmlsZW5hbWU+ZG9fY2xlYW5hbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyB1c2luZyBCaXRCYWtlIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBjbGVhbiA8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWMgY2xlYW5hbGwgPHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1vZGlmaWNhdGlvbnMgd2lsbCBhbHNvIGRpc2FwcGVhciBpZiB5b3UgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPiBmZWF0dXJlIGFzIGRlc2NyaWJlZAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNxcy1idWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HZW5lcmF0ZSB0aGUgUGF0Y2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3VyIGNoYW5nZXMgd29yayBhcyBleHBlY3RlZCwgeW91IG5lZWQgdG8gdXNlIFF1aWx0CisgICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBwYXRjaCB0aGF0IGNvbnRhaW5zIGFsbCB5b3VyCisgICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBxdWlsdCByZWZyZXNoCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgdGhlIDxmaWxlbmFtZT5teV9jaGFuZ2VzLnBhdGNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBoYXMgYWxsIHlvdXIgZWRpdHMgbWFkZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGUxLmM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmZpbGUyLmM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5maWxlMy5jPC9maWxlbmFtZT4gZmlsZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gZmluZCB0aGUgcmVzdWx0aW5nIHBhdGNoIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYXRjaGVzLzwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSBvZiB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+KSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvcHkgdGhlIFBhdGNoIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIGNvcHkgdGhlIHBhdGNoIGZpbGUgaW50byBhIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+ZmlsZXM8L2ZpbGVuYW1lPiwgd2hpY2ggeW91IGNhbiBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBmaWxlIG9yIHRoZSBhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgUGxhY2luZyB0aGUgcGF0Y2ggaGVyZSBndWFyYW50ZWVzIHRoYXQgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gd2lsbCBmaW5kIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgTmV4dCwgYWRkIHRoZSBwYXRjaCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPlNSQ19VUkk8L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vbXlfY2hhbmdlcy5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1hcHBkZXYtZGV2c2hlbGwiPgorICAgICAgICA8dGl0bGU+VXNpbmcgYSBEZXZlbG9wbWVudCBTaGVsbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIGRlYnVnZ2luZyBjZXJ0YWluIGNvbW1hbmRzIG9yIGV2ZW4gd2hlbiBqdXN0IGVkaXRpbmcgcGFja2FnZXMsCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBjYW4gYmUgYSB1c2VmdWwgdG9vbC4KKyAgICAgICAgICAgIFdoZW4geW91IGludm9rZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwgYWxsIHRhc2tzIHVwIHRvIGFuZAorICAgICAgICAgICAgaW5jbHVkaW5nCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGFyZSBydW4gZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0LgorICAgICAgICAgICAgVGhlbiwgYSBuZXcgdGVybWluYWwgaXMgb3BlbmVkIGFuZCB5b3UgYXJlIHBsYWNlZCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgorICAgICAgICAgICAgSW4gdGhlIG5ldyB0ZXJtaW5hbCwgYWxsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQtcmVsYXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlCisgICAgICAgICAgICBzdGlsbCBkZWZpbmVkIHNvIHlvdSBjYW4gdXNlIGNvbW1hbmRzIHN1Y2ggYXMgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kcyBleGVjdXRlIGp1c3QgYXMgaWYgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2VyZSBleGVjdXRpbmcgdGhlbS4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgd29ya2luZyB0aGlzIHdheSBjYW4gYmUgaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyBhIGJ1aWxkIG9yIHByZXBhcmluZworICAgICAgICAgICAgc29mdHdhcmUgdG8gYmUgdXNlZCB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IHVzZXMgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gb24gYSB0YXJnZXQgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1jIGRldnNoZWxsCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzcGF3bnMgYSB0ZXJtaW5hbCB3aXRoIGEgc2hlbGwgcHJvbXB0IHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1PRV9URVJNSU5BTCc+PGZpbGVuYW1lPk9FX1RFUk1JTkFMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUgY29udHJvbHMgd2hhdCB0eXBlIG9mIHNoZWxsIGlzIG9wZW5lZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIHNwYXduZWQgdGVybWluYWxzLCB0aGUgZm9sbG93aW5nIG9jY3VyczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlIGluY2x1ZGVzIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+cGtnY29uZmlnPC9maWxlbmFtZT4gdmFyaWFibGVzIGZpbmQgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5wYzwvZmlsZW5hbWU+IGZpbGVzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IGNvbW1hbmQgZmluZHMgdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgc2l0ZSBmaWxlcyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuZWNlc3NhcnkgZmlsZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aGluIHRoaXMgZW52aXJvbm1lbnQsIHlvdSBjYW4gcnVuIGNvbmZpZ3VyZSBvciBjb21waWxlCisgICAgICAgICAgICBjb21tYW5kcyBhcyBpZiB0aGV5IHdlcmUgYmVpbmcgcnVuIGJ5CisgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICBBcyBub3RlZCBlYXJsaWVyLCB0aGUgd29ya2luZyBkaXJlY3RvcnkgYWxzbyBhdXRvbWF0aWNhbGx5IGNoYW5nZXMgdG8gdGhlCisgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5ICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gbWFudWFsbHkgcnVuIGEgc3BlY2lmaWMgdGFzayB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHJ1biB0aGUgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+cnVuLio8L2ZpbGVuYW1lPiBzY3JpcHQgaW4KKyAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0vdGVtcDwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkgKGUuZy4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+cnVuLmRvX2NvbmZpZ3VyZS48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5waWQ8L3JlcGxhY2VhYmxlPikuCisgICAgICAgICAgICBJZiBhIHRhc2sncyBzY3JpcHQgZG9lcyBub3QgZXhpc3QsIHdoaWNoIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZSB0YXNrIHdhcworICAgICAgICAgICAgc2tpcHBlZCBieSB3YXkgb2YgdGhlIHNzdGF0ZSBjYWNoZSwgeW91IGNhbiBjcmVhdGUgdGhlIHRhc2sgYnkgZmlyc3QgcnVubmluZworICAgICAgICAgICAgaXQgb3V0c2lkZSBvZiB0aGUgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtYyA8cmVwbGFjZWFibGU+dGFzazwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeGVjdXRpb24gb2YgYSB0YXNrJ3MgPGZpbGVuYW1lPnJ1bi4qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBhbmQgQml0QmFrZSdzIGV4ZWN1dGlvbiBvZiBhIHRhc2sgYXJlIGlkZW50aWNhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBydW5uaW5nIHRoZSBzY3JpcHQgcmUtcnVucyB0aGUgdGFzaworICAgICAgICAgICAgICAgICAgICAgICAganVzdCBhcyBpdCB3b3VsZCBiZSBydW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYzwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFueSA8ZmlsZW5hbWU+cnVuLio8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYSA8ZmlsZW5hbWU+LnBpZDwvZmlsZW5hbWU+IGV4dGVuc2lvbiBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xpYyBsaW5rIChzeW1saW5rKSB0byB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFJlbWVtYmVyLCB0aGF0IHRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBpcyBhIG1lY2hhbmlzbSB0aGF0IGFsbG93cworICAgICAgICAgICAgeW91IHRvIGdldCBpbnRvIHRoZSBCaXRCYWtlIHRhc2sgZXhlY3V0aW9uIGVudmlyb25tZW50LgorICAgICAgICAgICAgQW5kIGFzIHN1Y2gsIGFsbCBjb21tYW5kcyBtdXN0IGJlIGNhbGxlZCBqdXN0IGFzIEJpdEJha2Ugd291bGQgY2FsbCB0aGVtLgorICAgICAgICAgICAgVGhhdCBtZWFucyB5b3UgbmVlZCB0byBwcm92aWRlIHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zIGZvcgorICAgICAgICAgICAgY3Jvc3MtY29tcGlsYXRpb24gYW5kIHNvIGZvcnRoIGFzIGFwcGxpY2FibGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGFyZSBmaW5pc2hlZCB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwgZXhpdCB0aGUgc2hlbGwKKyAgICAgICAgICAgIG9yIGNsb3NlIHRoZSB0ZXJtaW5hbCB3aW5kb3cuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIHdvcnRoIHJlbWVtYmVyaW5nIHRoYXQgd2hlbiB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byB1c2UgdGhlIGZ1bGwgY29tcGlsZXIgbmFtZSBzdWNoIGFzIDxmaWxlbmFtZT5hcm0tcG9reS1saW51eC1nbnVlYWJpLWdjYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YganVzdCB1c2luZyA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoZSBzYW1lIGFwcGxpZXMgdG8gb3RoZXIgYXBwbGljYXRpb25zIHN1Y2ggYXMgPGZpbGVuYW1lPmJpbnV0aWxzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJ0b29sPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHNldHMgdXAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHN1Y2ggYXMgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gYXNzaXN0IGFwcGxpY2F0aW9ucywgc3VjaCBhcyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHRvIGZpbmQgdGhlIGNvcnJlY3QgdG9vbHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBzdGlsbCB3b3JrcyBvdmVyCisgICAgICAgICAgICAgICAgICAgIFgxMSBmb3J3YXJkaW5nIGFuZCBzaW1pbGFyIHNpdHVhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1hcHBkZXYtZGV2cHlzaGVsbCI+CisgICAgICAgIDx0aXRsZT5Vc2luZyBhIERldmVsb3BtZW50IFB5dGhvbiBTaGVsbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTaW1pbGFyIHRvIHdvcmtpbmcgd2l0aGluIGEgZGV2ZWxvcG1lbnQgc2hlbGwgYXMgZGVzY3JpYmVkIGluCisgICAgICAgICAgICB0aGUgcHJldmlvdXMgc2VjdGlvbiwgeW91IGNhbiBhbHNvIHNwYXduIGFuZCB3b3JrIHdpdGhpbiBhbgorICAgICAgICAgICAgaW50ZXJhY3RpdmUgUHl0aG9uIGRldmVsb3BtZW50IHNoZWxsLgorICAgICAgICAgICAgV2hlbiBkZWJ1Z2dpbmcgY2VydGFpbiBjb21tYW5kcyBvciBldmVuIHdoZW4ganVzdCBlZGl0aW5nIHBhY2thZ2VzLAorICAgICAgICAgICAgPGZpbGVuYW1lPmRldnB5c2hlbGw8L2ZpbGVuYW1lPiBjYW4gYmUgYSB1c2VmdWwgdG9vbC4KKyAgICAgICAgICAgIFdoZW4geW91IGludm9rZSA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+LCBhbGwgdGFza3MgdXAgdG8gYW5kCisgICAgICAgICAgICBpbmNsdWRpbmcKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgYXJlIHJ1biBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQuCisgICAgICAgICAgICBUaGVuIGEgbmV3IHRlcm1pbmFsIGlzIG9wZW5lZC4KKyAgICAgICAgICAgIEFkZGl0aW9uYWxseSwga2V5IFB5dGhvbiBvYmplY3RzIGFuZCBjb2RlIGFyZSBhdmFpbGFibGUgaW4gdGhlIHNhbWUKKyAgICAgICAgICAgIHdheSB0aGV5IGFyZSB0byBCaXRCYWtlIHRhc2tzLCBpbiBwYXJ0aWN1bGFyLCB0aGUgZGF0YSBzdG9yZSAnZCcuCisgICAgICAgICAgICBTbywgY29tbWFuZHMgc3VjaCBhcyB0aGUgZm9sbG93aW5nIGFyZSB1c2VmdWwgd2hlbiBleHBsb3JpbmcgdGhlIGRhdGEKKyAgICAgICAgICAgIHN0b3JlIGFuZCBydW5uaW5nIGZ1bmN0aW9uczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcHlkZXZzaGVsbD4gZC5nZXRWYXIoIlNUQUdJTkdfRElSIiwgVHJ1ZSkKKyAgICAgJy9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMnCisgICAgIHB5ZGV2c2hlbGw+IGQuZ2V0VmFyKCJTVEFHSU5HX0RJUiIsIEZhbHNlKQorICAgICAnJHtUTVBESVJ9L3N5c3Jvb3RzJworICAgICBweWRldnNoZWxsPiBkLnNldFZhcigiRk9PIiwgImJhciIpCisgICAgIHB5ZGV2c2hlbGw+IGQuZ2V0VmFyKCJGT08iLCBUcnVlKQorICAgICAnYmFyJworICAgICBweWRldnNoZWxsPiBkLmRlbFZhcigiRk9PIikKKyAgICAgcHlkZXZzaGVsbD4gZC5nZXRWYXIoIkZPTyIsIFRydWUpCisgICAgIHB5ZGV2c2hlbGw+IGJiLmJ1aWxkLmV4ZWNfZnVuYygiZG9fdW5wYWNrIiwgZCkKKyAgICAgcHlkZXZzaGVsbD4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBjb21tYW5kcyBleGVjdXRlIGp1c3QgYXMgaWYgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2VyZSBleGVjdXRpbmcgdGhlbS4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgd29ya2luZyB0aGlzIHdheSBjYW4gYmUgaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyBhIGJ1aWxkIG9yIHByZXBhcmluZworICAgICAgICAgICAgc29mdHdhcmUgdG8gYmUgdXNlZCB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IHVzZXMgPGZpbGVuYW1lPmRldnB5c2hlbGw8L2ZpbGVuYW1lPiBvbiBhIHRhcmdldCBuYW1lZAorICAgICAgICAgICAgPGZpbGVuYW1lPm1hdGNoYm94LWRlc2t0b3A8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgLWMgZGV2cHlzaGVsbAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGNvbW1hbmQgc3Bhd25zIGEgdGVybWluYWwgYW5kIHBsYWNlcyB5b3UgaW4gYW4gaW50ZXJhY3RpdmUKKyAgICAgICAgICAgIFB5dGhvbiBpbnRlcnByZXRlciB3aXRoaW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItT0VfVEVSTUlOQUwnPjxmaWxlbmFtZT5PRV9URVJNSU5BTDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIGNvbnRyb2xzIHdoYXQgdHlwZSBvZiBzaGVsbCBpcyBvcGVuZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGFyZSBmaW5pc2hlZCB1c2luZyA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+LCB5b3UKKyAgICAgICAgICAgIGNhbiBleGl0IHRoZSBzaGVsbCBlaXRoZXIgYnkgdXNpbmcgQ3RybCtkIG9yIGNsb3NpbmcgdGhlIHRlcm1pbmFsCisgICAgICAgICAgICB3aW5kb3cuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKICAgICA8c2VjdGlvbiBpZD0ncGxhdGRldi1idWlsZGluZy10YXJnZXRzLXdpdGgtbXVsdGlwbGUtY29uZmlndXJhdGlvbnMnPgogICAgICAgICA8dGl0bGU+QnVpbGRpbmcgVGFyZ2V0cyB3aXRoIE11bHRpcGxlIENvbmZpZ3VyYXRpb25zPC90aXRsZT4KIApAQCAtNDE3Nyw3ICs0MzE1LDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFNldmVyYWwgZXhhbXBsZXMgZXhpc3QgaW4gdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2tlbGV0b248L2ZpbGVuYW1lPiBsYXllciBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+OgorICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+OgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29uZi9tdWx0aWxpYi1leGFtcGxlLmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC00MjAzLDcgKzQzNDEsNyBAQAogICAgICAgICAgICAgICAgICAgICBNYW55IHN0YW5kYXJkIHJlY2lwZXMgYXJlIGFscmVhZHkgZXh0ZW5kZWQgYW5kIHN1cHBvcnQgbXVsdGlwbGUgbGlicmFyaWVzLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNoZWNrIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL211bHRpbGliLmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+IHRvIHNlZSBob3cgdGhpcyBpcworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4gdG8gc2VlIGhvdyB0aGlzIGlzCiAgICAgICAgICAgICAgICAgICAgIGRvbmUgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkNMQVNTRVhURU5EJz48ZmlsZW5hbWU+QkJDTEFTU0VYVEVORDwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCkBAIC00MjM5LDcgKzQzNzcsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBsaWJyYXJpZXMgeW91IHdhbnQgdG8gYnVpbGQuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBhY2NvbXBsaXNoIHRoaXMgdGhyb3VnaCB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgY29uZmlndXJhdGlvbiB3b3VsZCBiZSBhcyBmb2xsb3dzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIE1BQ0hJTkUgPSAicWVtdXg4Ni02NCIKQEAgLTQzMTUsNyArNDQ1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSB1bmlxdWUgYXJjaGl0ZWN0dXJlIGlzIGRlZmluZWQgZm9yIHRoZSBNdWx0aWxpYiBwYWNrYWdlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIGNyZWF0aW5nIGEgdW5pcXVlIGRlcGxveSBmb2xkZXIgdW5kZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveS9ycG08L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY29uc2lkZXIgPGZpbGVuYW1lPmxpYjMyPC9maWxlbmFtZT4gaW4gYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LTY0PC9maWxlbmFtZT4gaW1hZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHBvc3NpYmxlIGFyY2hpdGVjdHVyZXMgaW4gdGhlIHN5c3RlbSBhcmUgImFsbCIsICJxZW11eDg2XzY0IiwKQEAgLTQ2NzUsOCArNDgxMyw4IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctcGFydGl0aW9uZWQtaW1hZ2VzJz4KLSAgICAgICAgPHRpdGxlPkNyZWF0aW5nIFBhcnRpdGlvbmVkIEltYWdlczwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXBhcnRpdGlvbmVkLWltYWdlcy11c2luZy13aWMnPgorICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgUGFydGl0aW9uZWQgSW1hZ2VzIFVzaW5nIFdpYzwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDcmVhdGluZyBhbiBpbWFnZSBmb3IgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIHRhcmdldCB1c2luZyB0aGUKQEAgLTQ2OTIsMTEyNCArNDgzMCw3ODEgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBnZW5lcmF0ZSBwYXJ0aXRpb25lZCBpbWFnZXMKLSAgICAgICAgICAgICg8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4ud2ljPC9maWxlbmFtZT4pCi0gICAgICAgICAgICB0d28gd2F5czogdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYW5kIGJ5IHJ1bm5pbmcKLSAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgSW1hZ2UgQ3JlYXRvciBXaWMgZGlyZWN0bHkuCi0gICAgICAgICAgICBUaGUgZm9ybWVyIHdheSBpcyBwcmVmZXJhYmxlIGFzIGl0IGlzIGVhc2llciB0byB1c2UgYW5kIHVuZGVyc3RhbmQuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQgZ2VuZXJhdGVzIHBhcnRpdGlvbmVkCisgICAgICAgICAgICBpbWFnZXMgZnJvbSBleGlzdGluZyBPcGVuRW1iZWRkZWQgYnVpbGQgYXJ0aWZhY3RzLgorICAgICAgICAgICAgSW1hZ2UgZ2VuZXJhdGlvbiBpcyBkcml2ZW4gYnkgcGFydGl0aW9uaW5nIGNvbW1hbmRzCisgICAgICAgICAgICBjb250YWluZWQgaW4gYW4gT3BlbmVtYmVkZGVkIGtpY2tzdGFydCBmaWxlCisgICAgICAgICAgICAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgc3BlY2lmaWVkIGVpdGhlciBkaXJlY3RseSBvbgorICAgICAgICAgICAgdGhlIGNvbW1hbmQgbGluZSBvciBhcyBvbmUgb2YgYSBzZWxlY3Rpb24gb2YgY2FubmVkCisgICAgICAgICAgICBraWNrc3RhcnQgZmlsZXMgYXMgc2hvd24gd2l0aCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgbGlzdCBpbWFnZXM8L2ZpbGVuYW1lPiBjb21tYW5kIGluIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcHJvdmlkZWQta2lja3N0YXJ0LWZpbGUnPlVzaW5nIGFuIEV4aXN0aW5nIEtpY2tzdGFydCBGaWxlPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICBXaGVuIHlvdSBhcHBseSB0aGUgY29tbWFuZCB0byBhIGdpdmVuIHNldCBvZiBidWlsZAorICAgICAgICAgICAgYXJ0aWZhY3RzLCB0aGUgcmVzdWx0IGlzIGFuIGltYWdlIG9yIHNldCBvZiBpbWFnZXMgdGhhdAorICAgICAgICAgICAgY2FuIGJlIGRpcmVjdGx5IHdyaXR0ZW4gb250byBtZWRpYSBhbmQgdXNlZCBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgIHN5c3RlbS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEZvciBhIGtpY2tzdGFydCBmaWxlIHJlZmVyZW5jZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXdrcy1yZWZlcmVuY2UnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIENoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy13aWMtaW1hZ2VzLW9lJz4KLSAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgdGhlIGluZnJhc3RydWN0dXJlCisgICAgICAgICAgICBpdCBpcyBiYXNlZCBvbiBpcyBieSBkZWZpbml0aW9uIGluY29tcGxldGUuCisgICAgICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGUgY29tbWFuZCBpcyB0byBhbGxvdyB0aGUgZ2VuZXJhdGlvbiBvZgorICAgICAgICAgICAgY3VzdG9taXplZCBpbWFnZXMsIGFuZCBhcyBzdWNoLCB3YXMgZGVzaWduZWQgdG8gYmUKKyAgICAgICAgICAgIGNvbXBsZXRlbHkgZXh0ZW5zaWJsZSB0aHJvdWdoIGEgcGx1Zy1pbiBpbnRlcmZhY2UuCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjd2ljLXBsdWctaW5zLWludGVyZmFjZSc+V2ljIFBsdWctSW5zIEludGVyZmFjZTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBpbmZvcm1hdGlvbgorICAgICAgICAgICAgb24gdGhlc2UgcGx1Zy1pbnMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBzb21lIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gV2ljLAorICAgICAgICAgICAgZGVzY3JpYmVzIHdoYXQgeW91IG5lZWQgdG8gaGF2ZSBpbgorICAgICAgICAgICAgcGxhY2UgdG8gcnVuIHRoZSB0b29sLCBwcm92aWRlcyBpbnN0cnVjdGlvbiBvbiBob3cgdG8gdXNlCisgICAgICAgICAgICB0aGUgV2ljIHV0aWxpdHksIGFuZCBwcm92aWRlcyBzZXZlcmFsIGV4YW1wbGVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy1iYWNrZ3JvdW5kJz4KKyAgICAgICAgICAgIDx0aXRsZT5CYWNrZ3JvdW5kPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIGdlbmVyYXRlCi0gICAgICAgICAgICAgICAgcGFydGl0aW9uZWQgaW1hZ2VzIHRoZSBzYW1lIHdheSBhcyBpdCBnZW5lcmF0ZXMKLSAgICAgICAgICAgICAgICBhbnkgb3RoZXIgaW1hZ2UgdHlwZS4KLSAgICAgICAgICAgICAgICBUbyBnZW5lcmF0ZSBhIHBhcnRpdGlvbmVkIGltYWdlLCB5b3UgbmVlZCB0byBtb2RpZnkKLSAgICAgICAgICAgICAgICB0d28gdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBzb21lIGJhY2tncm91bmQgb24gdGhlIFdpYyB1dGlsaXR5LgorICAgICAgICAgICAgICAgIFdoaWxlIG5vbmUgb2YgdGhpcyBpbmZvcm1hdGlvbiBpcyByZXF1aXJlZCB0byB1c2UKKyAgICAgICAgICAgICAgICBXaWMsIHlvdSBtaWdodCBmaW5kIGl0IGludGVyZXN0aW5nLgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lICJXaWMiIGlzIGRlcml2ZWQgZnJvbSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlIENyZWF0b3IgKG9laWMpLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlICJvZSIgZGlwaHRob25nIGluICJvZWljIiB3YXMgcHJvbW90ZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBsZXR0ZXIgInciLCBiZWNhdXNlICJvZWljIiBpcyBib3RoIGRpZmZpY3VsdCB0bworICAgICAgICAgICAgICAgICAgICAgICAgcmVtZW1iZXIgYW5kIHRvIHByb25vdW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBXaWMgaXMgbG9vc2VseSBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE1lZWdvIEltYWdlIENyZWF0b3IgKDxmaWxlbmFtZT5taWM8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1ld29yay4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBXaWMgaW1wbGVtZW50YXRpb24gaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYXZpbHkgbW9kaWZpZWQgdG8gbWFrZSBkaXJlY3QgdXNlIG9mIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYXJ0aWZhY3RzIGluc3RlYWQgb2YgcGFja2FnZSBpbnN0YWxsYXRpb24gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCB3aGljaCBhcmUgYWxyZWFkeSBpbmNvcnBvcmF0ZWQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGFydGlmYWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBXaWMgaXMgYSBjb21wbGV0ZWx5IGluZGVwZW5kZW50CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lIHV0aWxpdHkgdGhhdCBpbml0aWFsbHkgcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhc2llci10by11c2UgYW5kIG1vcmUgZmxleGlibGUgcmVwbGFjZW1lbnRzIGZvciBhbgorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBpbiBPRSBDb3JlJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWltYWdlLWxpdmUnPjxmaWxlbmFtZT5pbWFnZS1saXZlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgYW5kIDxmaWxlbmFtZT5ta2VmaWRpc2suc2g8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICBXaWMgYW5kIHRob3NlIGV4YW1wbGVzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpdGggV2ljIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBvZiB0aG9zZSBzY3JpcHRzIGlzIGltcGxlbWVudGVkCisgICAgICAgICAgICAgICAgICAgICAgICBieSBhIGdlbmVyYWwtcHVycG9zZSBwYXJ0aXRpb25pbmcgbGFuZ3VhZ2UsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiBSZWRoYXQga2lja3N0YXJ0IHN5bnRheC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd3aWMtcmVxdWlyZW1lbnRzJz4KKyAgICAgICAgICAgIDx0aXRsZT5SZXF1aXJlbWVudHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhlIFdpYyB1dGlsaXR5IHdpdGggdGhlIE9wZW5FbWJlZGRlZCBCdWlsZAorICAgICAgICAgICAgICAgIHN5c3RlbSwgeW91ciBzeXN0ZW0gbmVlZHMgdG8gbWVldCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCBkaXN0cmlidXRpb24gb24geW91ciBkZXZlbG9wbWVudCBob3N0IG11c3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGlzdCBvZiBkaXN0cmlidXRpb25zIHRoYXQgc3VwcG9ydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHN0YW5kYXJkIHN5c3RlbSB1dGlsaXRpZXMsIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcDwvZmlsZW5hbWU+LCBtdXN0IGJlIGluc3RhbGxlZCBvbiB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBoYXZlIHNvdXJjZWQgdGhlIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cCBzY3JpcHQgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIHRoZSBidWlsZCBhcnRpZmFjdHMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLCB3aGljaCB0eXBpY2FsbHkgbWVhbnMgdGhhdCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgYW4gaW1hZ2UgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBPcGVuZW1iZWRkZWQgYnVpbGQgc3lzdGVtIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgaXQgbWlnaHQgc2VlbSByZWR1bmRhbnQgdG8gZ2VuZXJhdGUgYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGNyZWF0ZSBhbiBpbWFnZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgV2ljLCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBXaWMgcmVxdWlyZXMgdGhlIGFydGlmYWN0cworICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGZvcm0gZ2VuZXJhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBidWlsZCBzZXZlcmFsIG5hdGl2ZSB0b29scywgd2hpY2ggYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCB0byBydW4gb24gdGhlIGJ1aWxkIHN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIHBhcnRlZC1uYXRpdmUgZG9zZnN0b29scy1uYXRpdmUgbXRvb2xzLW5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgIndpYyIgYXMgcGFydCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXdrcy1yZWZlcmVuY2UnPndpYyBraWNrc3RhcnQgZmlsZTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I29wZW5lbWJlZGRlZC1raWNrc3RhcnQtd2tzLXJlZmVyZW5jZSc+d2ljIGtpY2tzdGFydCBmaWxlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV0tTX0ZJTEUnPjxmaWxlbmFtZT5XS1NfRklMRTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICBGdXJ0aGVyIHN0ZXBzIHRvIGdlbmVyYXRlIGEgcGFydGl0aW9uZWQgaW1hZ2UKLSAgICAgICAgICAgICAgICBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBvdGhlciBpbWFnZSB0eXBlLgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBpbWFnZSB0eXBlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdidWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjcmVhdGUtd2ljLWltYWdlcy13aWMnPgotICAgICAgICAgICAgPHRpdGxlPlVzaW5nIE9wZW5FbWJlZGRlZCBJbWFnZSBDcmVhdG9yIFdpYyB0byBHZW5lcmF0ZSBQYXJ0aXRpb25lZCBJbWFnZXM8L3RpdGxlPgorICAgICAgICA8c2VjdGlvbiBpZD0nd2ljLWdldHRpbmctaGVscCc+CisgICAgICAgICAgICA8dGl0bGU+R2V0dGluZyBIZWxwPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kIGdlbmVyYXRlcyBwYXJ0aXRpb25lZAotICAgICAgICAgICAgICAgIGltYWdlcyBmcm9tIGV4aXN0aW5nIE9wZW5FbWJlZGRlZCBidWlsZCBhcnRpZmFjdHMuCi0gICAgICAgICAgICAgICAgSW1hZ2UgZ2VuZXJhdGlvbiBpcyBkcml2ZW4gYnkgcGFydGl0aW9uaW5nIGNvbW1hbmRzCi0gICAgICAgICAgICAgICAgY29udGFpbmVkIGluIGFuIE9wZW5lbWJlZGRlZCBraWNrc3RhcnQgZmlsZQotICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBzcGVjaWZpZWQgZWl0aGVyIGRpcmVjdGx5IG9uCi0gICAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgbGluZSBvciBhcyBvbmUgb2YgYSBzZWxlY3Rpb24gb2YgY2FubmVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPiBmaWxlcyBhcyBzaG93biB3aXRoIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgbGlzdCBpbWFnZXM8L2ZpbGVuYW1lPiBjb21tYW5kIGluIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1hLXByb3ZpZGVkLWtpY2tzdGFydC1maWxlJz5Vc2luZyBhbiBFeGlzdGluZyBLaWNrc3RhcnQgRmlsZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBhcHBseSB0aGUgY29tbWFuZCB0byBhIGdpdmVuIHNldCBvZiBidWlsZAotICAgICAgICAgICAgICAgIGFydGlmYWN0cywgdGhlIHJlc3VsdCBpcyBhbiBpbWFnZSBvciBzZXQgb2YgaW1hZ2VzIHRoYXQKLSAgICAgICAgICAgICAgICBjYW4gYmUgZGlyZWN0bHkgd3JpdHRlbiBvbnRvIG1lZGlhIGFuZCB1c2VkIG9uIGEgcGFydGljdWxhcgotICAgICAgICAgICAgICAgIHN5c3RlbS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kIGFuZCB0aGUgaW5mcmFzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICBpdCBpcyBiYXNlZCBvbiBpcyBieSBkZWZpbml0aW9uIGluY29tcGxldGUuCi0gICAgICAgICAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhlIGNvbW1hbmQgaXMgdG8gYWxsb3cgdGhlIGdlbmVyYXRpb24gb2YKLSAgICAgICAgICAgICAgICBjdXN0b21pemVkIGltYWdlcywgYW5kIGFzIHN1Y2gsIHdhcyBkZXNpZ25lZCB0byBiZQotICAgICAgICAgICAgICAgIGNvbXBsZXRlbHkgZXh0ZW5zaWJsZSB0aHJvdWdoIGEgcGx1Zy1pbiBpbnRlcmZhY2UuCi0gICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXBsdWdpbnMnPlBsdWctaW5zPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBwbHVnLWlucy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBXaWMsCi0gICAgICAgICAgICAgICAgZGVzY3JpYmVzIHdoYXQgeW91IG5lZWQgdG8gaGF2ZSBpbgotICAgICAgICAgICAgICAgIHBsYWNlIHRvIHJ1biB0aGUgdG9vbCwgcHJvdmlkZXMgaW5zdHJ1Y3Rpb24gb24gaG93IHRvIHVzZQotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gdXRpbGl0eSwKLSAgICAgICAgICAgICAgICBhbmQgcHJvdmlkZXMgc2V2ZXJhbCBleGFtcGxlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy1iYWNrZ3JvdW5kJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+QmFja2dyb3VuZDwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgYmFja2dyb3VuZCBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IHV0aWxpdHkuCi0gICAgICAgICAgICAgICAgICAgIFdoaWxlIG5vbmUgb2YgdGhpcyBpbmZvcm1hdGlvbiBpcyByZXF1aXJlZCB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgV2ljLCB5b3UgbWlnaHQgZmluZCBpdCBpbnRlcmVzdGluZy4KLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSAiV2ljIiBpcyBkZXJpdmVkIGZyb20gT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2UgQ3JlYXRvciAob2VpYykuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlICJvZSIgZGlwaHRob25nIGluICJvZWljIiB3YXMgcHJvbW90ZWQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0dGVyICJ3IiwgYmVjYXVzZSAib2VpYyIgaXMgYm90aCBkaWZmaWN1bHQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1lbWJlciBhbmQgdG8gcHJvbm91bmNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYyBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZWdvIEltYWdlIENyZWF0b3IgKDxmaWxlbmFtZT5taWM8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmsuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFdpYyBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXZpbHkgbW9kaWZpZWQgdG8gbWFrZSBkaXJlY3QgdXNlIG9mIE9wZW5FbWJlZGRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGFydGlmYWN0cyBpbnN0ZWFkIG9mIHBhY2thZ2UgaW5zdGFsbGF0aW9uIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGFyZSBhbHJlYWR5IGluY29ycG9yYXRlZCB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGFydGlmYWN0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMgaXMgYSBjb21wbGV0ZWx5IGluZGVwZW5kZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhbG9uZSB1dGlsaXR5IHRoYXQgaW5pdGlhbGx5IHByb3ZpZGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzaWVyLXRvLXVzZSBhbmQgbW9yZSBmbGV4aWJsZSByZXBsYWNlbWVudHMgZm9yIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBpbiBPRSBDb3JlJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgPGZpbGVuYW1lPm1rZWZpZGlzay5zaDwvZmlsZW5hbWU+IHNjcmlwdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ljIGFuZCB0aG9zZSBleGFtcGxlcyBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2l0aCBXaWMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBvZiB0aG9zZSBzY3JpcHRzIGlzIGltcGxlbWVudGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgYSBnZW5lcmFsLXB1cnBvc2UgcGFydGl0aW9uaW5nIGxhbmd1YWdlLCB3aGljaCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VkIG9uIFJlZGhhdCBraWNrc3RhcnQgc3ludGF4LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd3aWMtcmVxdWlyZW1lbnRzJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+UmVxdWlyZW1lbnRzPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiB1dGlsaXR5Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBCdWlsZCBzeXN0ZW0sIHlvdXIgc3lzdGVtIG5lZWRzCi0gICAgICAgICAgICAgICAgICAgIHRvIG1lZXQgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHM6Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIExpbnV4IGRpc3RyaWJ1dGlvbiBvbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdCBtdXN0IHN1cHBvcnQgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyB0aGF0IHN1cHBvcnQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3RhbmRhcmQgc3lzdGVtIHV0aWxpdGllcywgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcDwvZmlsZW5hbWU+LCBtdXN0IGJlIGluc3RhbGxlZCBvbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaGF2ZSB0aGUgYnVpbGQgYXJ0aWZhY3RzIGFscmVhZHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUsIHdoaWNoIHR5cGljYWxseSBtZWFucyB0aGF0IHlvdSBtdXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgYW4gaW1hZ2UgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbmVtYmVkZGVkIGJ1aWxkIHN5c3RlbSAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgaXQgbWlnaHQgc2VlbSByZWR1bmRhbnQgdG8gZ2VuZXJhdGUgYW4gaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBjcmVhdGUgYW4gaW1hZ2UgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMsIHRoZSBjdXJyZW50IHZlcnNpb24gb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMgcmVxdWlyZXMgdGhlIGFydGlmYWN0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBmb3JtIGdlbmVyYXRlZCBieSB0aGUgYnVpbGQgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGJ1aWxkIHNldmVyYWwgbmF0aXZlIHRvb2xzLCB3aGljaCBhcmUgdG9vbHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCB0byBydW4gb24gdGhlIGJ1aWxkIHN5c3RlbToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBwYXJ0ZWQtbmF0aXZlIGRvc2ZzdG9vbHMtbmF0aXZlIG10b29scy1uYXRpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaGF2ZSBzb3VyY2VkIG9uZSBvZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cCBzY3JpcHRzIChpLmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy1nZXR0aW5nLWhlbHAnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5HZXR0aW5nIEhlbHA8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGdlbmVyYWwgaGVscCBmb3IgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGJ5IGVudGVyaW5nIHRoZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICBieSBpdHNlbGYgb3IgYnkgZW50ZXJpbmcgdGhlIGNvbW1hbmQgd2l0aCBhIGhlbHAgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGdlbmVyYWwgaGVscCBmb3IgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQgYnkgZW50ZXJpbmcgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgYnkgaXRzZWxmIG9yIGJ5IGVudGVyaW5nIHRoZSBjb21tYW5kIHdpdGggYSBoZWxwIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIC1oCiAgICAgICQgd2ljIC0taGVscAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHksIFdpYyBzdXBwb3J0cyB0d28gY29tbWFuZHM6Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcmVhdGU8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmxpc3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgaGVscCBmb3IgdGhlc2UgY29tbWFuZHMgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQ3VycmVudGx5LCBXaWMgc3VwcG9ydHMgc2V2ZW4gY29tbWFuZHM6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNwPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5jcmVhdGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVscDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+bGlzdDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cm08L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndyaXRlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgaGVscCBmb3IgdGhlc2UgY29tbWFuZHMgYXMgZm9sbG93cyB3aXRoCisgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmNvbW1hbmQ8L3JlcGxhY2VhYmxlPiBiZWluZyBvbmUgb2YgdGhlCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkIGNvbW1hbmRzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgaGVscCA8cmVwbGFjZWFibGU+Y29tbWFuZDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggPHJlcGxhY2VhYmxlPmNvbW1hbmQ8L3JlcGxhY2VhYmxlPiBiZWluZyBlaXRoZXIKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZTwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5saXN0PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBnZXQgZGV0YWlsZWQgaGVscCBvbiBhIG51bWJlciBvZiB0b3BpY3MKLSAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgaGVscCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPndpYyAtLWhlbHA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBkaXNwbGF5cyBhIGxpc3Qgb2YgYXZhaWxhYmxlIGhlbHAKLSAgICAgICAgICAgICAgICAgICAgdG9waWNzIHVuZGVyIGEgIkhlbHAgdG9waWNzIiBoZWFkaW5nLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGhhdmUgdGhlIGhlbHAgc3lzdGVtIGRpc3BsYXkgdGhlIGhlbHAgdGV4dCBmb3IKLSAgICAgICAgICAgICAgICAgICAgYSBnaXZlbiB0b3BpYyBieSBwcmVmYWNpbmcgdGhlIHRvcGljIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBoZWxwPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBnZXQgZGV0YWlsZWQgaGVscCBvbiBhIG51bWJlciBvZiB0b3BpY3MKKyAgICAgICAgICAgICAgICBmcm9tIHRoZSBoZWxwIHN5c3RlbS4KKyAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IG9mIDxmaWxlbmFtZT53aWMgLS1oZWxwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXNwbGF5cyBhIGxpc3Qgb2YgYXZhaWxhYmxlIGhlbHAKKyAgICAgICAgICAgICAgICB0b3BpY3MgdW5kZXIgYSAiSGVscCB0b3BpY3MiIGhlYWRpbmcuCisgICAgICAgICAgICAgICAgWW91IGNhbiBoYXZlIHRoZSBoZWxwIHN5c3RlbSBkaXNwbGF5IHRoZSBoZWxwIHRleHQgZm9yCisgICAgICAgICAgICAgICAgYSBnaXZlbiB0b3BpYyBieSBwcmVmYWNpbmcgdGhlIHRvcGljIHdpdGgKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2ljIGhlbHA8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIGhlbHAgPHJlcGxhY2VhYmxlPmhlbHBfdG9waWM8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlIGltYWdlcwotICAgICAgICAgICAgICAgICAgICBXaWMgY3JlYXRlcyB1c2luZyB0aGUgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICAgICAga2lja3N0YXJ0IGZpbGVzIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtIG9mIHRoZSBjb21tYW5kOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlIGltYWdlcyBXaWMgY3JlYXRlcyB1c2luZworICAgICAgICAgICAgICAgIHRoZSBleGlzdGluZyBraWNrc3RhcnQgZmlsZXMgd2l0aCB0aGUgZm9sbG93aW5nIGZvcm0gb2YKKyAgICAgICAgICAgICAgICB0aGUgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIGxpc3QgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4gaGVscAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgYmVpbmcgZWl0aGVyIDxmaWxlbmFtZT5kaXJlY3RkaXNrPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1rZWZpZGlzazwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRm9yIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LCB5b3UgY2FuIHByb3ZpZGUKKyAgICAgICAgICAgICAgICBhbnkgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgYmVhZ2xlYm9uZQorICAgICAgIG1wYzgzMTVlLXJkYgorICAgICAgIGdlbmVyaWN4ODYKKyAgICAgICBlZGdlcm91dGVyCisgICAgICAgcWVtdXg4Ni1kaXJlY3RkaXNrCisgICAgICAgZGlyZWN0ZGlzay1ncHQKKyAgICAgICBta2VmaWRpc2sKKyAgICAgICBkaXJlY3RkaXNrCisgICAgICAgc3lzdGVtZC1ib290ZGlzaworICAgICAgIG1raHlicmlkaXNvCisgICAgICAgc2RpbWFnZS1ib290cGFydAorICAgICAgIGRpcmVjdGRpc2stbXVsdGktcm9vdGZzCisgICAgICAgZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nb3BlcmF0aW9uYWwtbW9kZXMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5PcGVyYXRpb25hbCBNb2RlczwvdGl0bGU+CisgICAgICAgIDxzZWN0aW9uIGlkPSdvcGVyYXRpb25hbC1tb2Rlcyc+CisgICAgICAgICAgICA8dGl0bGU+T3BlcmF0aW9uYWwgTW9kZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBXaWMgaW4gdHdvIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIG1vZGVzLCBkZXBlbmRpbmcgb24gaG93IG11Y2ggY29udHJvbCB5b3UgbmVlZCBmb3IKKyAgICAgICAgICAgICAgICBzcGVjaWZ5aW5nIHRoZSBPcGVuZW1iZWRkZWQgYnVpbGQgYXJ0aWZhY3RzIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIGltYWdlOiBSYXcgYW5kIENvb2tlZDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmF3IE1vZGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBleHBsaWNpdGx5IHNwZWNpZnkgYnVpbGQgYXJ0aWZhY3RzIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db29rZWQgTW9kZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgYW5kIGltYWdlIG5hbWUgYXJlIHVzZWQgdG8gYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlIGFuZCBwcm92aWRlIHRoZSBidWlsZCBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UganVzdCBzdXBwbHkgYSBraWNrc3RhcnQgZmlsZSBhbmQgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBpbWFnZSBmcm9tIHdoaWNoIHRvIHVzZSBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgbW9kZSB5b3UgdXNlLCB5b3UgbmVlZCB0byBoYXZlIHRoZSBidWlsZAorICAgICAgICAgICAgICAgIGFydGlmYWN0cyByZWFkeSBhbmQgYXZhaWxhYmxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmF3LW1vZGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5SYXcgTW9kZTwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgV2ljIGluIHR3byBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgbW9kZXMsIGRlcGVuZGluZyBvbiBob3cgbXVjaCBjb250cm9sIHlvdSBuZWVkIGZvcgotICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5aW5nIHRoZSBPcGVuZW1iZWRkZWQgYnVpbGQgYXJ0aWZhY3RzIHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgICAgIHVzZWQgZm9yIGNyZWF0aW5nIHRoZSBpbWFnZTogUmF3IGFuZCBDb29rZWQ6Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJhdyBNb2RlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGV4cGxpY2l0bHkgc3BlY2lmeSBidWlsZCBhcnRpZmFjdHMgdGhyb3VnaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvb2tlZCBNb2RlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZyBhbmQgaW1hZ2UgbmFtZSBhcmUgdXNlZCB0byBhdXRvbWF0aWNhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlIGFuZCBwcm92aWRlIHRoZSBidWlsZCBhcnRpZmFjdHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIFdpYyBpbiByYXcgbW9kZSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25zIHRocm91Z2ggdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpbmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmltYXJ5IHVzZSBmb3IgcmF3IG1vZGUgaXMgaWYgeW91IGhhdmUgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgeW91ciBrZXJuZWwgb3V0c2lkZSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgeW91IGNhbiBwb2ludCB0byBhcmJpdHJhcnkga2VybmVsLAorICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gbG9jYXRpb25zLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIENvbnRyYXN0IHRoaXMgYmVoYXZpb3Igd2l0aCBjb29rZWQgbW9kZSB3aGVyZSBXaWMKKyAgICAgICAgICAgICAgICAgICAgbG9va3MgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+KS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgbW9kZSB5b3UgdXNlLCB5b3UgbmVlZCB0byBoYXZlIHRoZSBidWlsZAotICAgICAgICAgICAgICAgICAgICBhcnRpZmFjdHMgcmVhZHkgYW5kIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgZW52aXJvbm1lbnQgbXVzdCBiZSBzZXQgdXAgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBzY3JpcHQgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmF3LW1vZGUnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+UmF3IE1vZGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYWwgZm9ybSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kIGluIHJhdyBtb2RlIGlzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBjcmVhdGUgPHJlcGxhY2VhYmxlPmltYWdlX25hbWU8L3JlcGxhY2VhYmxlPi53a3MgWzxyZXBsYWNlYWJsZT5vcHRpb25zPC9yZXBsYWNlYWJsZT5dIFsuLi5dCisgICAgICAgICAgICAgICAgICAgIFRoZSBnZW5lcmFsIGZvcm0gb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kIGluIHJhdyBtb2RlIGlzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGNyZWF0ZSA8cmVwbGFjZWFibGU+d2tzX2ZpbGU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFibGU+IC4uLgogCiAgICAgICAgV2hlcmU6CiAKLSAgICAgICAgICA8cmVwbGFjZWFibGU+aW1hZ2VfbmFtZTwvcmVwbGFjZWFibGU+LndrcworICAgICAgICAgIDxyZXBsYWNlYWJsZT53a3NfZmlsZTwvcmVwbGFjZWFibGU+OgogICAgICAgICAgICAgIEFuIE9wZW5FbWJlZGRlZCBraWNrc3RhcnQgZmlsZS4gIFlvdSBjYW4gcHJvdmlkZQogICAgICAgICAgICAgIHlvdXIgb3duIGN1c3RvbSBmaWxlIG9yIHVzZSBhIGZpbGUgZnJvbSBhIHNldCBvZgogICAgICAgICAgICAgIGV4aXN0aW5nIGZpbGVzIGFzIGRlc2NyaWJlZCBieSBmdXJ0aGVyIG9wdGlvbnMuCiAKLSAgICAgICAgICAtbyA8cmVwbGFjZWFibGU+T1VURElSPC9yZXBsYWNlYWJsZT4sIC0tb3V0ZGlyPTxyZXBsYWNlYWJsZT5PVVRESVI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgIFRoZSBuYW1lIG9mIGEgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGNyZWF0ZSBpbWFnZS4KKyAgICAgICAgICBvcHRpb25hbCBhcmd1bWVudHM6CisgICAgICAgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgICAgICAgLW8gPHJlcGxhY2VhYmxlPk9VVERJUjwvcmVwbGFjZWFibGU+LCAtLW91dGRpciA8cmVwbGFjZWFibGU+T1VURElSPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIG9mIGRpcmVjdG9yeSB0byBjcmVhdGUgaW1hZ2UgaW4KKyAgICAgICAgICAgIC1lIDxyZXBsYWNlYWJsZT5JTUFHRV9OQU1FPC9yZXBsYWNlYWJsZT4sIC0taW1hZ2UtbmFtZSA8cmVwbGFjZWFibGU+SU1BR0VfTkFNRTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBvZiB0aGUgaW1hZ2UgdG8gdXNlIHRoZSBhcnRpZmFjdHMgZnJvbSBlLmcuIGNvcmUtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Utc2F0bworICAgICAgICAgICAgLXIgPHJlcGxhY2VhYmxlPlJPT1RGU19ESVI8L3JlcGxhY2VhYmxlPiwgLS1yb290ZnMtZGlyIDxyZXBsYWNlYWJsZT5ST09URlNfRElSPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIHRvIHRoZSAvcm9vdGZzIGRpciB0byB1c2UgYXMgdGhlIC53a3Mgcm9vdGZzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlCisgICAgICAgICAgICAtYiA8cmVwbGFjZWFibGU+Qk9PVElNR19ESVI8L3JlcGxhY2VhYmxlPiwgLS1ib290aW1nLWRpciA8cmVwbGFjZWFibGU+Qk9PVElNR19ESVI8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggdG8gdGhlIGRpciBjb250YWluaW5nIHRoZSBib290IGFydGlmYWN0cyAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9FRkkgb3IgL3N5c2xpbnV4IGRpcnMpIHRvIHVzZSBhcyB0aGUgLndrcyBib290aW1nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlCisgICAgICAgICAgICAtayA8cmVwbGFjZWFibGU+S0VSTkVMX0RJUjwvcmVwbGFjZWFibGU+LCAtLWtlcm5lbC1kaXIgPHJlcGxhY2VhYmxlPktFUk5FTF9ESVI8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggdG8gdGhlIGRpciBjb250YWluaW5nIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC53a3MgYm9vdGltZworICAgICAgICAgICAgLW4gPHJlcGxhY2VhYmxlPk5BVElWRV9TWVNST09UPC9yZXBsYWNlYWJsZT4sIC0tbmF0aXZlLXN5c3Jvb3QgPHJlcGxhY2VhYmxlPk5BVElWRV9TWVNST09UPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCB0aGUgaW1hZ2UKKyAgICAgICAgICAgIC1zLCAtLXNraXAtYnVpbGQtY2hlY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwIHRoZSBidWlsZCBjaGVjaworICAgICAgICAgICAgLWYsIC0tYnVpbGQtcm9vdGZzICAgIGJ1aWxkIHJvb3RmcworICAgICAgICAgICAgLWMge2d6aXAsYnppcDIseHp9LCAtLWNvbXByZXNzLXdpdGgge2d6aXAsYnppcDIseHp9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3MgaW1hZ2Ugd2l0aCBzcGVjaWZpZWQgY29tcHJlc3NvcgorICAgICAgICAgICAgLW0sIC0tYm1hcCAgICAgICAgICAgIGdlbmVyYXRlIC5ibWFwCisgICAgICAgICAgICAtLW5vLWZzdGFiLXVwZGF0ZSAgICAgRG8gbm90IGNoYW5nZSBmc3RhYiBmaWxlLgorICAgICAgICAgICAgLXYgPHJlcGxhY2VhYmxlPlZBUlNfRElSPC9yZXBsYWNlYWJsZT4sIC0tdmFycyA8cmVwbGFjZWFibGU+VkFSU19ESVI8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoICZsdDtpbWFnZSZndDsuZW52IGZpbGVzIHRoYXQgc3RvcmUgYml0YmFrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcworICAgICAgICAgICAgLUQsIC0tZGVidWcgICAgICAgICAgIG91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHJvb3QgcHJpdmlsZWdlcyB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdpYy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIGZhY3QsIHlvdSBzaG91bGQgbm90IHJ1biBhcyByb290IHdoZW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB1dGlsaXR5LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgLWkgPHJlcGxhY2VhYmxlPlBST1BFUlRJRVNfRklMRTwvcmVwbGFjZWFibGU+LCAtLWluZmlsZT08cmVwbGFjZWFibGU+UFJPUEVSVElFU19GSUxFPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICBUaGUgbmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyB0aGUgdmFsdWVzIGZvciBpbWFnZQotICAgICAgICAgICAgIHByb3BlcnRpZXMgYXMgYSBKU09OIGZpbGUuCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY29va2VkLW1vZGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Db29rZWQgTW9kZTwvdGl0bGU+CiAKLSAgICAgICAgICAtZSA8cmVwbGFjZWFibGU+SU1BR0VfTkFNRTwvcmVwbGFjZWFibGU+LCAtLWltYWdlLW5hbWU9PHJlcGxhY2VhYmxlPklNQUdFX05BTUU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBpbWFnZSBmcm9tIHdoaWNoIHRvIHVzZSB0aGUgYXJ0aWZhY3RzCi0gICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUnVubmluZyBXaWMgaW4gY29va2VkIG1vZGUgbGV2ZXJhZ2VzIG9mZiBhcnRpZmFjdHMgaW4KKyAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkga2VybmVsIG9yCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSBsb2NhdGlvbnMgYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgQWxsIHlvdSBuZWVkIHRvIHByb3ZpZGUgaXMgYSBraWNrc3RhcnQgZmlsZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgdGhlIGltYWdlIGZyb20gd2hpY2ggdG8gdXNlIGFydGlmYWN0cyBieSB1c2luZworICAgICAgICAgICAgICAgICAgICB0aGUgIi1lIiBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIFdpYyBsb29rcyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4pCisgICAgICAgICAgICAgICAgICAgIGZvciBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgLXIgPHJlcGxhY2VhYmxlPlJPT1RGU19ESVI8L3JlcGxhY2VhYmxlPiwgLS1yb290ZnMtZGlyPTxyZXBsYWNlYWJsZT5ST09URlNfRElSPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICBUaGUgcGF0aCB0byB0aGUgPGZpbGVuYW1lPi9yb290ZnM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdG8gdXNlIGFzIHRoZQotICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gcm9vdGZzIHNvdXJjZS4KLQotICAgICAgICAgIC1iIDxyZXBsYWNlYWJsZT5CT09USU1HX0RJUjwvcmVwbGFjZWFibGU+LCAtLWJvb3RpbWctZGlyPTxyZXBsYWNlYWJsZT5CT09USU1HX0RJUjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBib290IGFydGlmYWN0cwotICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT4vRUZJPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPi9zeXNsaW51eDwvZmlsZW5hbWU+KSB0byB1c2UgYXMgdGhlIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gYm9vdGltZwotICAgICAgICAgICAgIHNvdXJjZS4KLQotICAgICAgICAgIC1rIDxyZXBsYWNlYWJsZT5LRVJORUxfRElSPC9yZXBsYWNlYWJsZT4sIC0ta2VybmVsLWRpcj08cmVwbGFjZWFibGU+S0VSTkVMX0RJUjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBrZXJuZWwgdG8gdXNlCi0gICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gYm9vdCBpbWFnZS4KLQotICAgICAgICAgIC1uIDxyZXBsYWNlYWJsZT5OQVRJVkVfU1lTUk9PVDwvcmVwbGFjZWFibGU+LCAtLW5hdGl2ZS1zeXNyb290PTxyZXBsYWNlYWJsZT5OQVRJVkVfU1lTUk9PVDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgVGhlIHBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290IGNvbnRhaW5pbmcgdGhlIHRvb2xzIHRvIHVzZQotICAgICAgICAgICAgIHRvIGJ1aWxkIHRoZSBpbWFnZS4KLQotICAgICAgICAgIC1zLCAtLXNraXAtYnVpbGQtY2hlY2sKLSAgICAgICAgICAgICAgU2tpcHMgdGhlIGJ1aWxkIGNoZWNrLgotCi0gICAgICAgICAgLUQsIC0tZGVidWcKLSAgICAgICAgICAgICAgT3V0cHV0IGRlYnVnIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHJvb3QgcHJpdmlsZWdlcyB0byBydW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gZmFjdCwgeW91IHNob3VsZCBub3QgcnVuIGFzIHJvb3Qgd2hlbiB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsaXR5LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2Nvb2tlZC1tb2RlJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNvb2tlZCBNb2RlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBnZW5lcmFsIGZvcm0gb2YgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBDb29rZWQgTW9kZSBpczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB3aWMgY3JlYXRlIDxyZXBsYWNlYWJsZT5raWNrc3RhcnRfZmlsZTwvcmVwbGFjZWFibGU+IC1lIDxyZXBsYWNlYWJsZT5pbWFnZV9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYWwgZm9ybSBvZiB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdXNpbmcgQ29va2VkIE1vZGUgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBjcmVhdGUgPHJlcGxhY2VhYmxlPndrc19maWxlPC9yZXBsYWNlYWJsZT4gLWUgPHJlcGxhY2VhYmxlPklNQUdFX05BTUU8L3JlcGxhY2VhYmxlPgogCiAgICAgICAgV2hlcmU6CiAKLSAgICAgICAgICAgPHJlcGxhY2VhYmxlPmtpY2tzdGFydF9maWxlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgIEFuIE9wZW5FbWJlZGRlZCBraWNrc3RhcnQgZmlsZS4gWW91IGNhbiBwcm92aWRlIHlvdXIgb3duCi0gICAgICAgICAgICAgICBjdXN0b20gZmlsZSBvciBhIHN1cHBsaWVkIGZpbGUuCisgICAgICAgICAgPHJlcGxhY2VhYmxlPndrc19maWxlPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgQW4gT3BlbkVtYmVkZGVkIGtpY2tzdGFydCBmaWxlLiAgWW91IGNhbiBwcm92aWRlCisgICAgICAgICAgICAgeW91ciBvd24gY3VzdG9tIGZpbGUgb3IgdXNlIGEgZmlsZSBmcm9tIGEgc2V0IG9mCisgICAgICAgICAgICAgZXhpc3RpbmcgZmlsZXMgcHJvdmlkZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgIHJlbGVhc2UuCiAKLSAgICAgICAgICAgPHJlcGxhY2VhYmxlPmltYWdlX25hbWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBpbWFnZSBidWlsdCB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgICBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZvcm0gaXMgdGhlIHNpbXBsZXN0IGFuZCBtb3N0IHVzZXItZnJpZW5kbHksIGFzIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb2VzIG5vdCByZXF1aXJlIHNwZWNpZnlpbmcgYWxsIGluZGl2aWR1YWwgcGFyYW1ldGVycy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsbCB5b3UgbmVlZCB0byBwcm92aWRlIGlzIHlvdXIgb3duCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+IGZpbGUgb3Igb25lIHByb3ZpZGVkIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYS1wcm92aWRlZC1raWNrc3RhcnQtZmlsZSc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlVzaW5nIGFuIEV4aXN0aW5nIEtpY2tzdGFydCBGaWxlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHdhbnQgdG8gY3JlYXRlIHlvdXIgb3duCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gZmlsZSwgeW91IGNhbiB1c2UgYW4gZXhpc3RpbmcKLSAgICAgICAgICAgICAgICAgICAgZmlsZSBwcm92aWRlZCBieSB0aGUgV2ljIGluc3RhbGxhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBsaXN0IHRoZSBhdmFpbGFibGUgZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB3aWMgbGlzdCBpbWFnZXMKLSAgICAgZGlyZWN0ZGlzayBDcmVhdGUgYSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQotICAgICBta2VmaWRpc2sgQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlCisgICAgICAgICAgcmVxdWlyZWQgYXJndW1lbnQ6CisgICAgICAgICAgICAgLWUgPHJlcGxhY2VhYmxlPklNQUdFX05BTUU8L3JlcGxhY2VhYmxlPiwgLS1pbWFnZS1uYW1lIDxyZXBsYWNlYWJsZT5JTUFHRV9OQU1FPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIG9mIHRoZSBpbWFnZSB0byB1c2UgdGhlIGFydGlmYWN0cyBmcm9tIGUuZy4gY29yZS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS1zYXRvCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIGFuIGV4aXN0aW5nIGZpbGUsIHlvdSBkbyBub3QgaGF2ZSB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgaW4gUmF3IE1vZGUgdGhhdCB1c2VzIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzazwvZmlsZW5hbWU+IGZpbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYS1wcm92aWRlZC1raWNrc3RhcnQtZmlsZSc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgYW4gRXhpc3RpbmcgS2lja3N0YXJ0IEZpbGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHdhbnQgdG8gY3JlYXRlIHlvdXIgb3duIGtpY2tzdGFydCBmaWxlLCB5b3UKKyAgICAgICAgICAgICAgICBjYW4gdXNlIGFuIGV4aXN0aW5nIGZpbGUgcHJvdmlkZWQgYnkgdGhlIFdpYyBpbnN0YWxsYXRpb24uCisgICAgICAgICAgICAgICAgQXMgc2hpcHBlZCwga2lja3N0YXJ0IGZpbGVzIGNhbiBiZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgaW4gdGhlIGZvbGxvd2luZyB0d28gbG9jYXRpb25zOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9tZXRhLXlvY3RvLWJzcC93aWMKKyAgICAgcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGxpc3QgdGhlIGF2YWlsYWJsZSBraWNrc3RhcnQKKyAgICAgICAgICAgICAgICBmaWxlczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGxpc3QgaW1hZ2VzCisgICAgICAgYmVhZ2xlYm9uZSAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgQmVhZ2xlYm9uZQorICAgICAgIG1wYzgzMTVlLXJkYiAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIE1QQzgzMTVFLVJEQgorICAgICAgIGdlbmVyaWN4ODYgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgorICAgICAgIGVkZ2Vyb3V0ZXIgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEVkZ2Vyb3V0ZXIKKyAgICAgICBxZW11eDg2LWRpcmVjdGRpc2sgICAgICAgICAgICAJCUNyZWF0ZSBhIHFlbXUgbWFjaGluZSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQorICAgICAgIGRpcmVjdGRpc2stZ3B0ICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2UKKyAgICAgICBta2VmaWRpc2sgICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZQorICAgICAgIGRpcmVjdGRpc2sgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2UKKyAgICAgICBzeXN0ZW1kLWJvb3RkaXNrICAgICAgICAgICAgICAJCUNyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSB3aXRoIHN5c3RlbWQtYm9vdAorICAgICAgIG1raHlicmlkaXNvICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGEgaHlicmlkIElTTyBpbWFnZQorICAgICAgIHNkaW1hZ2UtYm9vdHBhcnQgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2Ugd2l0aCBhIGJvb3QgcGFydGl0aW9uCisgICAgICAgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMgICAgICAgCQlDcmVhdGUgbXVsdGkgcm9vdGZzIGltYWdlIHVzaW5nIHJvb3RmcyBwbHVnaW4KKyAgICAgICBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnICAJCUNyZWF0ZSBhICdwY2Jpb3MnIGRpcmVjdCBkaXNrIGltYWdlIHdpdGggY3VzdG9tIGJvb3Rsb2FkZXIgY29uZmlnCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSBhbiBleGlzdGluZyBmaWxlLCB5b3UgZG8gbm90IGhhdmUgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4gZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBpbiBSYXcgTW9kZSB0aGF0IHVzZXMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGRpc2s8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgY3JlYXRlIGRpcmVjdGRpc2sgLXIgPHJlcGxhY2VhYmxlPnJvb3Rmc19kaXI8L3JlcGxhY2VhYmxlPiAtYiA8cmVwbGFjZWFibGU+Ym9vdGltZ19kaXI8L3JlcGxhY2VhYmxlPiBcCiAgICAgICAgICAgIC1rIDxyZXBsYWNlYWJsZT5rZXJuZWxfZGlyPC9yZXBsYWNlYWJsZT4gLW4gPHJlcGxhY2VhYmxlPm5hdGl2ZV9zeXNyb290PC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIGFjdHVhbCBwYXJ0aXRpb24gbGFuZ3VhZ2UgY29tbWFuZHMKLSAgICAgICAgICAgICAgICAgICAgdXNlZCBpbiB0aGUgPGZpbGVuYW1lPm1rZWZpZGlzay53a3M8L2ZpbGVuYW1lPiBmaWxlIHRvCi0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGFuIGltYWdlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgc2hvcnQtZGVzY3JpcHRpb246IENyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZQotICAgICAjIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBFRkkgZGlzayBpbWFnZSB0aGF0IHRoZSB1c2VyCi0gICAgICMgY2FuIGRpcmVjdGx5IGRkIHRvIGJvb3QgbWVkaWEuCi0KLSAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLWVmaSAtLW9uZGlzayBzZGEgLS1sYWJlbCBtc2RvcyAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKLQotICAgICBwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQzIC0tbGFiZWwgcGxhdGZvcm0gLS1hbGlnbiAxMDI0Ci0KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSBhY3R1YWwgcGFydGl0aW9uIGxhbmd1YWdlIGNvbW1hbmRzCisgICAgICAgICAgICAgICAgdXNlZCBpbiB0aGUgPGZpbGVuYW1lPmdlbmVyaWN4ODYud2tzPC9maWxlbmFtZT4gZmlsZSB0bworICAgICAgICAgICAgICAgIGdlbmVyYXRlIGFuIGltYWdlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBzaG9ydC1kZXNjcmlwdGlvbjogQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgorICAgICAjIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NiogbWFjaGluZXMKKyAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLWVmaSAtLXNvdXJjZXBhcmFtcz0ibG9hZGVyPWdydWItZWZpIiAtLW9uZGlzayBzZGEgLS1sYWJlbCBtc2RvcyAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKKyAgICAgcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNCAtLXVzZS11dWlkCiAgICAgIHBhcnQgc3dhcCAtLW9uZGlzayBzZGEgLS1zaXplIDQ0IC0tbGFiZWwgc3dhcDEgLS1mc3R5cGU9c3dhcAogCi0gICAgIGJvb3Rsb2FkZXIgIC0tdGltZW91dD0xMCAgLS1hcHBlbmQ9InJvb3R3YWl0IHJvb3Rmc3R5cGU9ZXh0MyBjb25zb2xlPXR0eVBDSDAsMTE1MjAwIGNvbnNvbGU9dHR5MCB2bWFsbG9jPTI1Nk1CIHNuZC1oZGEtaW50ZWwuZW5hYmxlX21zaT0wIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICBib290bG9hZGVyIC0tcHRhYmxlIGdwdCAtLXRpbWVvdXQ9NSAtLWFwcGVuZD0icm9vdGZzdHlwZT1leHQ0IGNvbnNvbGU9dHR5UzAsMTE1MjAwIGNvbnNvbGU9dHR5MCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy11c2FnZS1leGFtcGxlcyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy11c2FnZS1leGFtcGxlcyc+CisgICAgICAgICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc2V2ZXJhbCBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIHVzZQorICAgICAgICAgICAgICAgIHRoZSBXaWMgdXRpbGl0eS4KKyAgICAgICAgICAgICAgICBBbGwgdGhlIGV4YW1wbGVzIGFzc3VtZSB0aGUgbGlzdCBvZiByZXF1aXJlbWVudHMgaW4gdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dpYy1yZXF1aXJlbWVudHMnPlJlcXVpcmVtZW50czwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBoYXZlIGJlZW4gbWV0LgorICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBhc3N1bWUgdGhlIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGltYWdlIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZ2VuZXJhdGUtYW4taW1hZ2UtdXNpbmctYS1wcm92aWRlZC1raWNrc3RhcnQtZmlsZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkdlbmVyYXRlIGFuIEltYWdlIHVzaW5nIGFuIEV4aXN0aW5nIEtpY2tzdGFydCBGaWxlPC90aXRsZT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc2V2ZXJhbCBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIHVzZQotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IHV0aWxpdHkuCi0gICAgICAgICAgICAgICAgICAgIEFsbCB0aGUgZXhhbXBsZXMgYXNzdW1lIHRoZSBsaXN0IG9mIHJlcXVpcmVtZW50cyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dpYy1yZXF1aXJlbWVudHMnPlJlcXVpcmVtZW50czwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaGF2ZSBiZWVuIG1ldC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGFzc3VtZSB0aGUgcHJldmlvdXNseSBnZW5lcmF0ZWQgaW1hZ2UgaXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdnZW5lcmF0ZS1hbi1pbWFnZS11c2luZy1hLXByb3ZpZGVkLWtpY2tzdGFydC1maWxlJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkdlbmVyYXRlIGFuIEltYWdlIHVzaW5nIGFuIEV4aXN0aW5nIEtpY2tzdGFydCBGaWxlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBydW5zIGluIENvb2tlZCBNb2RlIGFuZCB1c2VzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1rZWZpZGlzazwvZmlsZW5hbWU+IGtpY2tzdGFydCBmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgcnVucyBpbiBDb29rZWQgTW9kZSBhbmQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1rZWZpZGlzazwvZmlsZW5hbWU+IGtpY2tzdGFydCBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIGNyZWF0ZSBta2VmaWRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsCi0gICAgIENoZWNraW5nIGJhc2ljIGJ1aWxkIGVudmlyb25tZW50Li4uCi0gICAgIERvbmUuCi0KLSAgICAgQ3JlYXRpbmcgaW1hZ2UocykuLi4KLQotICAgICBJbmZvOiBUaGUgbmV3IGltYWdlKHMpIGNhbiBiZSBmb3VuZCBoZXJlOgotICAgICAgPHJlcGxhY2VhYmxlPmN1cnJlbnRfZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4vYnVpbGQvbWtlZmlkaXNrLTIwMTMxMDIzMDk0Ni1zZGEuZGlyZWN0CisgICAgIElORk86IEJ1aWxkaW5nIHdpYy10b29scy4uLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICBJTkZPOiBUaGUgbmV3IGltYWdlKHMpIGNhbiBiZSBmb3VuZCBoZXJlOgorICAgICAgIC4vbWtlZmlkaXNrLTIwMTcxMDA2MTQwOS1zZGEuZGlyZWN0CiAKICAgICAgVGhlIGZvbGxvd2luZyBidWlsZCBhcnRpZmFjdHMgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgaW1hZ2Uocyk6Ci0gICAgICBST09URlNfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3dvcmsvbWlubm93LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yb290ZnMKLSAgICAgIEJPT1RJTUdfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3dvcmsvbWlubm93LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9jb3JlLWltYWdlLW1pbmltYWwtMS4wL2hkZGltZwotICAgICAgS0VSTkVMX0RJUjogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy9taW5ub3cvdXNyL3NyYy9rZXJuZWwKLSAgICAgIE5BVElWRV9TWVNST09UOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eAorICAgICAgIFJPT1RGU19ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wLndpYy5yNGhrZHMwYi9yb290ZnNfY29weQorICAgICAgIEJPT1RJTUdfRElSOiAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlCisgICAgICAgS0VSTkVMX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2CisgICAgICAgTkFUSVZFX1NZU1JPT1Q6ICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvd2ljLXRvb2xzLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUKIAotICAgICBUaGUgaW1hZ2Uocykgd2VyZSBjcmVhdGVkIHVzaW5nIE9FIGtpY2tzdGFydCBmaWxlOgotICAgICAgL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL3NjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3MvbWtlZmlkaXNrLndrcwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgc2hvd3MgdGhlIGVhc2llc3Qgd2F5IHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2UgYnkgcnVubmluZyBpbiBDb29rZWQgTW9kZSBhbmQgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWU8L2ZpbGVuYW1lPiBvcHRpb24gd2l0aCBhbiBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICAgICAga2lja3N0YXJ0IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBBbGwgdGhhdCBpcyBuZWNlc3NhcnkgaXMgdG8gc3BlY2lmeSB0aGUgaW1hZ2UgdXNlZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGhlIGFydGlmYWN0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBuZWVkcyB0byBoYXZlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc2V0IHRvIHRoZSBtYWNoaW5lIHlvdSBhcmUgdXNpbmcsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlubm93IiBpbiB0aGlzIGV4YW1wbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgSU5GTzogVGhlIGltYWdlKHMpIHdlcmUgY3JlYXRlZCB1c2luZyBPRSBraWNrc3RhcnQgZmlsZToKKyAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL21rZWZpZGlzay53a3MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBzaG93cyB0aGUgZWFzaWVzdCB3YXkgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIGFuIGltYWdlIGJ5IHJ1bm5pbmcgaW4gY29va2VkIG1vZGUgYW5kIHN1cHBseWluZworICAgICAgICAgICAgICAgICAgICBhIGtpY2tzdGFydCBmaWxlIGFuZCB0aGUgIi1lIiBvcHRpb24gdG8gcG9pbnQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGJ1aWxkIGFydGlmYWN0cy4KKyAgICAgICAgICAgICAgICAgICAgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgbmVlZHMgdG8gaGF2ZQorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBzZXQgdG8gdGhlIG1hY2hpbmUgeW91IGFyZSB1c2luZywgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiIGluIHRoaXMgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IHNwZWNpZmllcyB0aGUgZXhhY3QgaW1hZ2UgY3JlYXRlZCBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBpdCB3YXMgY3JlYXRlZCwgd2hpY2ggaXMgaW4gdGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBieSBkZWZhdWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBhbHNvIG5hbWVzIHRoZSBhcnRpZmFjdHMgdXNlZCBhbmQgdGhlIGV4YWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+IHNjcmlwdCB0aGF0IHdhcyB1c2VkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGFsd2F5cyB2ZXJpZnkgdGhlIGRldGFpbHMgcHJvdmlkZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbWFnZSB3YXMgaW5kZWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBleGFjdGx5IGFzIGV4cGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGltYWdlIGJ1aWxkcywgdGhlIG91dHB1dCBwcm92aWRlcyBpbWFnZQorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwgYXJ0aWZhY3QgdXNlLCBhbmQga2lja3N0YXJ0IGZpbGUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgdmVyaWZ5IHRoZSBkZXRhaWxzIHByb3ZpZGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbWFnZSB3YXMgaW5kZWVkCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGV4YWN0bHkgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb250aW51aW5nIHdpdGggdGhlIGV4YW1wbGUsIHlvdSBjYW4gbm93IHdyaXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdG8gYSBVU0Igc3RpY2ssIG9yIHdoYXRldmVyIG1lZGlhIGZvciB3aGljaCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IHlvdXIgaW1hZ2UsIGFuZCBib290IHRoZSByZXN1bHRpbmcgbWVkaWEuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHdyaXRlIHRoZSBpbWFnZSBieSB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIG9lLXJ1bi1uYXRpdmUgYm1hcHRvb2wgY29weSBidWlsZC9ta2VmaWRpc2stMjAxMzEwMjMwOTQ2LXNkYS5kaXJlY3QgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBkZCBpZj1idWlsZC9ta2VmaWRpc2stMjAxMzEwMjMwOTQ2LXNkYS5kaXJlY3Qgb2Y9L2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gdG8gZmxhc2ggYSBkZXZpY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGFuIGltYWdlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2ZsYXNoaW5nLWltYWdlcy11c2luZy1ibWFwdG9vbCc+Rmxhc2hpbmcgSW1hZ2VzIFVzaW5nIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb250aW51aW5nIHdpdGggdGhlIGV4YW1wbGUsIHlvdSBjYW4gbm93IHdyaXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBpbWFnZSB0byBhIFVTQiBzdGljaywgb3Igd2hhdGV2ZXIgbWVkaWEgZm9yIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICBidWlsdCB5b3VyIGltYWdlLCBhbmQgYm9vdCBmcm9tIHRoZSBtZWRpYS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB3cml0ZSB0aGUgaW1hZ2UgYnkgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXB0b29sIGNvcHkgYnVpbGQvbWtlZmlkaXNrLTIwMTcxMDA2MTQwOS1zZGEuZGlyZWN0IC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gZGQgaWY9YnVpbGQvbWtlZmlkaXNrLTIwMTcxMDA2MTQwOS1zZGEuZGlyZWN0IG9mPS9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gdG8gZmxhc2ggYSBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYW4gaW1hZ2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdmbGFzaGluZy1pbWFnZXMtdXNpbmctYm1hcHRvb2wnPkZsYXNoaW5nIEltYWdlcyBVc2luZyA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWEtbW9kaWZpZWQta2lja3N0YXJ0LWZpbGUnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgYSBNb2RpZmllZCBLaWNrc3RhcnQgRmlsZTwvdGl0bGU+CisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYS1tb2RpZmllZC1raWNrc3RhcnQtZmlsZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlVzaW5nIGEgTW9kaWZpZWQgS2lja3N0YXJ0IEZpbGU8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBwYXJ0aXRpb25lZCBpbWFnZSBjcmVhdGlvbiBpcwotICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVuIGJ5IHRoZSBraWNrc3RhcnQgZmlsZSwgaXQgaXMgZWFzeSB0byBhZmZlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIGNyZWF0aW9uIGJ5IGNoYW5naW5nIHRoZSBwYXJhbWV0ZXJzIGluIHRoZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgZGVtb25zdHJhdGVzIHRoYXQgdGhyb3VnaCBtb2RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+ZGlyZWN0ZGlzazwvZmlsZW5hbWU+IGtpY2tzdGFydCBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgcGFydGl0aW9uZWQgaW1hZ2UgY3JlYXRpb24gaXMgZHJpdmVuIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICBraWNrc3RhcnQgZmlsZSwgaXQgaXMgZWFzeSB0byBhZmZlY3QgaW1hZ2UgY3JlYXRpb24gYnkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdpbmcgdGhlIHBhcmFtZXRlcnMgaW4gdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIGRlbW9uc3RyYXRlcyB0aGF0IHRocm91Z2ggbW9kaWZpY2F0aW9uCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+ZGlyZWN0ZGlzay1ncHQ8L2ZpbGVuYW1lPiBraWNrc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgeW91IGNhbiB1c2UgdGhlIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgbGlzdCBpbWFnZXM8L2ZpbGVuYW1lPiB0byBzaG93IHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBvZiBleGlzdGluZyBraWNrc3RhcnQgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZXNlIGZpbGVzIHJlc2lkZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3MvPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIGF2YWlsYWJsZSBmaWxlcyByZXNpZGUgaW4gdGhpcyBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNyZWF0ZSBhbmQgYWRkIHlvdXIgb3duIGN1c3RvbSBmaWxlcyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFN1YnNlcXVlbnQgdXNlIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsaXN0IGltYWdlczwvZmlsZW5hbWU+IGNvbW1hbmQgd291bGQgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB5b3VyIGtpY2tzdGFydCBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgeW91IGNhbiB1c2UgdGhlIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYyBsaXN0IGltYWdlczwvZmlsZW5hbWU+IHRvIHNob3cgdGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgb2YgZXhpc3Rpbmcga2lja3N0YXJ0IGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzay1ncHQud2tzPC9maWxlbmFtZT4gZmlsZSByZXNpZGVzIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2xpYi9pbWFnZS9jYW5uZWQtd2tzLzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgYXZhaWxhYmxlIGZpbGVzIHJlc2lkZSBpbiB0aGlzIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBjcmVhdGUgYW5kIGFkZCB5b3VyIG93biBjdXN0b20gZmlsZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgU3Vic2VxdWVudCB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgbGlzdCBpbWFnZXM8L2ZpbGVuYW1lPiBjb21tYW5kIHdvdWxkIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB5b3VyIGtpY2tzdGFydCBmaWxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGRpc2s8L2ZpbGVuYW1lPiBmaWxlIGFscmVhZHkgZG9lcyBtb3N0Ci0gICAgICAgICAgICAgICAgICAgICAgICBvZiB3aGF0IGlzIG5lZWRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGZvciB0aGUgaGFyZHdhcmUgaW4gdGhpcyBleGFtcGxlLCB0aGUgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgbmVlZCB0byBib290IGZyb20gPGZpbGVuYW1lPnNkYjwvZmlsZW5hbWU+IGluc3RlYWQKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIDxmaWxlbmFtZT5zZGE8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgd2hhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrPC9maWxlbmFtZT4ga2lja3N0YXJ0IGZpbGUgdXNlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzay1ncHQ8L2ZpbGVuYW1lPiBmaWxlIGFscmVhZHkgZG9lcworICAgICAgICAgICAgICAgICAgICBtb3N0IG9mIHdoYXQgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBmb3IgdGhlIGhhcmR3YXJlIGluIHRoaXMgZXhhbXBsZSwgdGhlIGltYWdlCisgICAgICAgICAgICAgICAgICAgIHdpbGwgbmVlZCB0byBib290IGZyb20gPGZpbGVuYW1lPnNkYjwvZmlsZW5hbWU+IGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPnNkYTwvZmlsZW5hbWU+LCB3aGljaCBpcyB3aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzay1ncHQ8L2ZpbGVuYW1lPiBraWNrc3RhcnQgZmlsZQorICAgICAgICAgICAgICAgICAgICB1c2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlIGJlZ2lucyBieSBtYWtpbmcgYSBjb3B5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpcmVjdGRpc2sud2tzPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2xpYi9pbWFnZS9jYW5uZWQtd2tzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgdGhlbiBieSBjaGFuZ2luZyB0aGUgbGluZXMgdGhhdCBzcGVjaWZ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGRpc2sgZnJvbSB3aGljaCB0byBib290LgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNwIC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9zY3JpcHRzL2xpYi9pbWFnZS9jYW5uZWQtd2tzL2RpcmVjdGRpc2sud2tzIFwKLSAgICAgICAgICAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2Uvc2NyaXB0cy9saWIvaW1hZ2UvY2FubmVkLXdrcy9kaXJlY3RkaXNrc2RiLndrcwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgTmV4dCwgdGhlIGV4YW1wbGUgbW9kaWZpZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlza3NkYi53a3M8L2ZpbGVuYW1lPiBmaWxlIGFuZCBjaGFuZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBhbGwgaW5zdGFuY2VzIG9mICI8ZmlsZW5hbWU+LS1vbmRpc2sgc2RhPC9maWxlbmFtZT4iCi0gICAgICAgICAgICAgICAgICAgICAgICB0byAiPGZpbGVuYW1lPi0tb25kaXNrIHNkYjwvZmlsZW5hbWU+Ii4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlIGNoYW5nZXMgdGhlIGZvbGxvd2luZyB0d28gbGluZXMgYW5kIGxlYXZlcwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlbWFpbmluZyBsaW5lcyB1bnRvdWNoZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlIGJlZ2lucyBieSBtYWtpbmcgYSBjb3B5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlzay1ncHQud2tzPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHRoZW4gYnkgY2hhbmdpbmcgdGhlIGxpbmVzIHRoYXQgc3BlY2lmeQorICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGRpc2sgZnJvbSB3aGljaCB0byBib290LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY3AgL2hvbWUvc2NvdHRyaWYvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9kaXJlY3RkaXNrLWdwdC53a3MgXAorICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlza3NkYi1ncHQud2tzCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgTmV4dCwgdGhlIGV4YW1wbGUgbW9kaWZpZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrc2RiLWdwdC53a3M8L2ZpbGVuYW1lPiBmaWxlIGFuZAorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIGFsbCBpbnN0YW5jZXMgb2YKKyAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT4tLW9uZGlzayBzZGE8L2ZpbGVuYW1lPiIgdG8KKyAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT4tLW9uZGlzayBzZGI8L2ZpbGVuYW1lPiIuCisgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlIGNoYW5nZXMgdGhlIGZvbGxvd2luZyB0d28gbGluZXMgYW5kIGxlYXZlcworICAgICAgICAgICAgICAgICAgICB0aGUgcmVtYWluaW5nIGxpbmVzIHVudG91Y2hlZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGNiaW9zIC0tb25kaXNrIHNkYiAtLWxhYmVsIGJvb3QgLS1hY3RpdmUgLS1hbGlnbiAxMDI0Ci0gICAgIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RiIC0tZnN0eXBlPWV4dDMgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGxpbmVzIGFyZSBjaGFuZ2VkLCB0aGUgZXhhbXBsZSBnZW5lcmF0ZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlza3NkYjwvZmlsZW5hbWU+IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgcG9pbnRzIHRoZSBwcm9jZXNzIGF0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGFydGlmYWN0cyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBOZXh0IFVuaXQgb2YgQ29tcHV0aW5nIChudWMpCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB3aWMgY3JlYXRlIGRpcmVjdGRpc2tzZGIgLWUgY29yZS1pbWFnZS1taW5pbWFsCi0gICAgIENoZWNraW5nIGJhc2ljIGJ1aWxkIGVudmlyb25tZW50Li4uCi0gICAgIERvbmUuCisgICAgIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RiIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGxpbmVzIGFyZSBjaGFuZ2VkLCB0aGUgZXhhbXBsZSBnZW5lcmF0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJlY3RkaXNrc2RiLWdwdDwvZmlsZW5hbWU+IGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBwb2ludHMgdGhlIHByb2Nlc3MgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBhcnRpZmFjdHMgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBOZXh0IFVuaXQgb2YgQ29tcHV0aW5nIChudWMpCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgY3JlYXRlIGRpcmVjdGRpc2tzZGItZ3B0IC1lIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICBJTkZPOiBCdWlsZGluZyB3aWMtdG9vbHMuLi4KKyAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgIC4KKyAgICAgSW5pdGlhbGlzaW5nIHRhc2tzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDEKKyAgICAgTk9URTogRXhlY3V0aW5nIFNldFNjZW5lIFRhc2tzCisgICAgIE5PVEU6IEV4ZWN1dGluZyBSdW5RdWV1ZSBUYXNrcworICAgICBOT1RFOiBUYXNrcyBTdW1tYXJ5OiBBdHRlbXB0ZWQgMTE2MSB0YXNrcyBvZiB3aGljaCAxMTU3IGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLgorICAgICBJTkZPOiBDcmVhdGluZyBpbWFnZShzKS4uLgogCi0gICAgIENyZWF0aW5nIGltYWdlKHMpLi4uCi0KLSAgICAgSW5mbzogVGhlIG5ldyBpbWFnZShzKSBjYW4gYmUgZm91bmQgaGVyZToKLSAgICAgIDxyZXBsYWNlYWJsZT5jdXJyZW50X2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+L2J1aWxkL2RpcmVjdGRpc2tzZGItMjAxMzEwMjMxMTMxLXNkYi5kaXJlY3QKKyAgICAgSU5GTzogVGhlIG5ldyBpbWFnZShzKSBjYW4gYmUgZm91bmQgaGVyZToKKyAgICAgICAuL2RpcmVjdGRpc2tzZGItZ3B0LTIwMTcxMDA5MDkzOC1zZGIuZGlyZWN0CiAKICAgICAgVGhlIGZvbGxvd2luZyBidWlsZCBhcnRpZmFjdHMgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgaW1hZ2Uocyk6CisgICAgICAgUk9PVEZTX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAud2ljLmhrM3dsNnpuL3Jvb3Rmc19jb3B5CisgICAgICAgQk9PVElNR19ESVI6ICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUKKyAgICAgICBLRVJORUxfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKKyAgICAgICBOQVRJVkVfU1lTUk9PVDogICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQogCi0gICAgICBST09URlNfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3dvcmsvbnVjLXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yb290ZnMKLSAgICAgIEJPT1RJTUdfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3N5c3Jvb3RzL251Yy91c3Ivc2hhcmUKLSAgICAgIEtFUk5FTF9ESVI6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMvbnVjL3Vzci9zcmMva2VybmVsCi0gICAgICBOQVRJVkVfU1lTUk9PVDogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgKLQotICAgICBUaGUgaW1hZ2Uocykgd2VyZSBjcmVhdGVkIHVzaW5nIE9FIGtpY2tzdGFydCBmaWxlOgotICAgICAgL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL3NjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3MvZGlyZWN0ZGlza3NkYi53a3MKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGUgZXhhbXBsZSwgeW91IGNhbiBub3cgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+IHRoZSBpbWFnZSB0byBhIFVTQiBzdGljaywgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoYXRldmVyIG1lZGlhIGZvciB3aGljaCB5b3UgYnVpbHQgeW91ciBpbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBib290IHRoZSByZXN1bHRpbmcgbWVkaWE6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBkZCBpZj1idWlsZC9kaXJlY3RkaXNrc2RiLTIwMTMxMDIzMTEzMS1zZGIuZGlyZWN0IG9mPS9kZXYvc2RiCi0gICAgIDg2MDE4KzAgcmVjb3JkcyBpbgotICAgICA4NjAxOCswIHJlY29yZHMgb3V0Ci0gICAgIDQ0MDQxMjE2IGJ5dGVzICg0NCBNQikgY29waWVkLCAxMy4wNzM0IHMsIDMuNCBNQi9zCi0gICAgIFt0cnogYXQgZW1wYW5hZGEgdG1wXSQgc3VkbyBlamVjdCAvZGV2L3NkYgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLWFuLWltYWdlLWJhc2VkLW9uLWNvcmUtaW1hZ2UtbWluaW1hbC1hbmQtY3Jvd25iYXktbm9lbWdkJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGFuIEltYWdlIEJhc2VkIG9uIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmNyb3duYmF5LW5vZW1nZDwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBjcmVhdGVzIGFuIGltYWdlIGJhc2VkIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gYW5kIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcm93bmJheS1ub2VtZ2Q8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB3b3JrcyByaWdodCBvdXQgb2YgdGhlIGJveC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB3aWMgY3JlYXRlIGRpcmVjdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsCi0KLSAgICAgQ2hlY2tpbmcgYmFzaWMgYnVpbGQgZW52aXJvbm1lbnQuLi4KLSAgICAgRG9uZS4KLQotICAgICBDcmVhdGluZyBpbWFnZShzKS4uLgotCi0gICAgIEluZm86IFRoZSBuZXcgaW1hZ2UocykgY2FuIGJlIGZvdW5kIGhlcmU6Ci0gICAgICA8cmVwbGFjZWFibGU+Y3VycmVudF9kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPi9idWlsZC9kaXJlY3RkaXNrLTIwMTMwOTI1MjM1MC1zZGEuZGlyZWN0Ci0KLSAgICAgVGhlIGZvbGxvd2luZyBidWlsZCBhcnRpZmFjdHMgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgaW1hZ2Uocyk6Ci0KLSAgICAgUk9PVEZTX0RJUjogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC93b3JrL2Nyb3duYmF5X25vZW1nZC1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzCi0gICAgIEJPT1RJTUdfRElSOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3N5c3Jvb3RzL2Nyb3duYmF5LW5vZW1nZC91c3Ivc2hhcmUKLSAgICAgS0VSTkVMX0RJUjogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy9jcm93bmJheS1ub2VtZ2QvdXNyL3NyYy9rZXJuZWwKLSAgICAgTkFUSVZFX1NZU1JPT1Q6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMvY3Jvd25iYXktbm9lbWdkL3Vzci9zcmMva2VybmVsCi0KLSAgICAgVGhlIGltYWdlKHMpIHdlcmUgY3JlYXRlZCB1c2luZyBPRSBraWNrc3RhcnQgZmlsZToKLSAgICAgIC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9zY3JpcHRzL2xpYi9pbWFnZS9jYW5uZWQtd2tzL2RpcmVjdGRpc2sud2tzCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYS1tb2RpZmllZC1raWNrc3RhcnQtZmlsZS1hbmQtcnVubmluZy1pbi1yYXctbW9kZSc+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBhIE1vZGlmaWVkIEtpY2tzdGFydCBGaWxlIGFuZCBSdW5uaW5nIGluIFJhdyBNb2RlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIG1hbnVhbGx5IHNwZWNpZmllcyBlYWNoIGJ1aWxkIGFydGlmYWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAocnVucyBpbiBSYXcgTW9kZSkgYW5kIHVzZXMgYSBtb2RpZmllZCBraWNrc3RhcnQgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlIGFsc28gdXNlcyB0aGUgPGZpbGVuYW1lPi1vPC9maWxlbmFtZT4gb3B0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBjYXVzZSBXaWMgdG8gY3JlYXRlIHRoZSBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvbWV3aGVyZSBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IG91dHB1dCBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgY3VycmVudCBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgd2ljIGNyZWF0ZSB+L3Rlc3Qud2tzIC1vIC9ob21lL3Ryei90ZXN0d2ljIC0tcm9vdGZzLWRpciBcCi0gICAgICAgICAgL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC93b3JrL2Nyb3duYmF5X25vZW1nZC1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzIFwKLSAgICAgICAgICAtLWJvb3RpbWctZGlyIC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMvY3Jvd25iYXktbm9lbWdkL3Vzci9zaGFyZSBcCi0gICAgICAgICAgLS1rZXJuZWwtZGlyIC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMvY3Jvd25iYXktbm9lbWdkL3Vzci9zcmMva2VybmVsIFwKLSAgICAgICAgICAtLW5hdGl2ZS1zeXNyb290IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4Ci0KLSAgICAgQ3JlYXRpbmcgaW1hZ2UocykuLi4KLQotICAgICBJbmZvOiBUaGUgbmV3IGltYWdlKHMpIGNhbiBiZSBmb3VuZCBoZXJlOgotICAgICAgL2hvbWUvdHJ6L3Rlc3R3aWMvYnVpbGQvdGVzdC0yMDEzMDkyNjAwMzItc2RhLmRpcmVjdAotCi0gICAgIFRoZSBmb2xsb3dpbmcgYnVpbGQgYXJ0aWZhY3RzIHdlcmUgdXNlZCB0byBjcmVhdGUgdGhlIGltYWdlKHMpOgotCi0gICAgIFJPT1RGU19ESVI6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvd29yay9jcm93bmJheV9ub2VtZ2QtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcwotICAgICBCT09USU1HX0RJUjogL2hvbWUvdHJ6L3lvY3RvL3lvY3RvLWltYWdlL2J1aWxkL3RtcC9zeXNyb290cy9jcm93bmJheS1ub2VtZ2QvdXNyL3NoYXJlCi0gICAgIEtFUk5FTF9ESVI6IC9ob21lL3Ryei95b2N0by95b2N0by1pbWFnZS9idWlsZC90bXAvc3lzcm9vdHMvY3Jvd25iYXktbm9lbWdkL3Vzci9zcmMva2VybmVsCi0gICAgIE5BVElWRV9TWVNST09UOiAvaG9tZS90cnoveW9jdG8veW9jdG8taW1hZ2UvYnVpbGQvdG1wL3N5c3Jvb3RzL2Nyb3duYmF5LW5vZW1nZC91c3Ivc3JjL2tlcm5lbAotCi0gICAgIFRoZSBpbWFnZShzKSB3ZXJlIGNyZWF0ZWQgdXNpbmcgT0Uga2lja3N0YXJ0IGZpbGU6Ci0gICAgICAvaG9tZS90cnovdGVzdC53a3MKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaWQgbm90IGhhdmUgdG8gYmUgc3BlY2lmaWVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHNpbmNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgYXJ0aWZhY3QgaXMgbWFudWFsbHkgc3BlY2lmaWVkLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICBJTkZPOiBUaGUgaW1hZ2Uocykgd2VyZSBjcmVhdGVkIHVzaW5nIE9FIGtpY2tzdGFydCBmaWxlOgorICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlza3NkYi1ncHQud2tzCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoZSBleGFtcGxlLCB5b3UgY2FuIG5vdyBkaXJlY3RseQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGQ8L2ZpbGVuYW1lPiB0aGUgaW1hZ2UgdG8gYSBVU0Igc3RpY2ssIG9yCisgICAgICAgICAgICAgICAgICAgIHdoYXRldmVyIG1lZGlhIGZvciB3aGljaCB5b3UgYnVpbHQgeW91ciBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgYW5kIGJvb3QgdGhlIHJlc3VsdGluZyBtZWRpYToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gZGQgaWY9ZGlyZWN0ZGlza3NkYi1ncHQtMjAxNzEwMDkwOTM4LXNkYi5kaXJlY3Qgb2Y9L2Rldi9zZGIKKyAgICAgMTQwOTY2KzAgcmVjb3JkcyBpbgorICAgICAxNDA5NjYrMCByZWNvcmRzIG91dAorICAgICA3MjE3NDU5MiBieXRlcyAoNzIgTUIsIDY5IE1pQikgY29waWVkLCA3OC4wMjgyIHMsIDkyNSBrQi9zCisgICAgICQgc3VkbyBlamVjdCAvZGV2L3NkYgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nb3BlbmVtYmVkZGVkLWtpY2tzdGFydC1wbHVnaW5zJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+UGx1Zy1pbnM8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWEtbW9kaWZpZWQta2lja3N0YXJ0LWZpbGUtYW5kLXJ1bm5pbmctaW4tcmF3LW1vZGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBhIE1vZGlmaWVkIEtpY2tzdGFydCBGaWxlIGFuZCBSdW5uaW5nIGluIFJhdyBNb2RlPC90aXRsZT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBQbHVnLWlucyBhbGxvdyBXaWMgZnVuY3Rpb25hbGl0eSB0bwotICAgICAgICAgICAgICAgICAgICBiZSBleHRlbmRlZCBhbmQgc3BlY2lhbGl6ZWQgYnkgdXNlcnMuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIHBsdWctaW4gaW50ZXJmYWNlLCB3aGljaCBpcwotICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHkgcmVzdHJpY3RlZCB0byBzb3VyY2UgcGx1Zy1pbnMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIG1hbnVhbGx5IHNwZWNpZmllcyBlYWNoIGJ1aWxkIGFydGlmYWN0CisgICAgICAgICAgICAgICAgICAgIChydW5zIGluIFJhdyBNb2RlKSBhbmQgdXNlcyBhIG1vZGlmaWVkIGtpY2tzdGFydCBmaWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZSBhbHNvIHVzZXMgdGhlIDxmaWxlbmFtZT4tbzwvZmlsZW5hbWU+IG9wdGlvbgorICAgICAgICAgICAgICAgICAgICB0byBjYXVzZSBXaWMgdG8gY3JlYXRlIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgc29tZXdoZXJlIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgb3V0cHV0IGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGNyZWF0ZSAvaG9tZS9zY290dHJpZi9teV95b2N0by90ZXN0LndrcyAtbyAvaG9tZS9zY290dHJpZi90ZXN0d2ljIFwKKyAgICAgICAgICAtLXJvb3Rmcy1kaXIgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yb290ZnMgXAorICAgICAgICAgIC0tYm9vdGltZy1kaXIgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUgXAorICAgICAgICAgIC0ta2VybmVsLWRpciAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYgXAorICAgICAgICAgIC0tbmF0aXZlLXN5c3Jvb3QgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvd2ljLXRvb2xzLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUKKworICAgICBJTkZPOiBDcmVhdGluZyBpbWFnZShzKS4uLgorCisgICAgIElORk86IFRoZSBuZXcgaW1hZ2UocykgY2FuIGJlIGZvdW5kIGhlcmU6CisgICAgICAgL2hvbWUvc2NvdHRyaWYvdGVzdHdpYy90ZXN0LTIwMTcxMDA5MTQ0NS1zZGIuZGlyZWN0CisKKyAgICAgVGhlIGZvbGxvd2luZyBidWlsZCBhcnRpZmFjdHMgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgaW1hZ2Uocyk6CisgICAgICAgUk9PVEZTX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvdGVzdHdpYy90bXAud2ljLng0d2lwYm1iL3Jvb3Rmc19jb3B5CisgICAgICAgQk9PVElNR19ESVI6ICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUKKyAgICAgICBLRVJORUxfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKKyAgICAgICBOQVRJVkVfU1lTUk9PVDogICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQorCisgICAgIElORk86IFRoZSBpbWFnZShzKSB3ZXJlIGNyZWF0ZWQgdXNpbmcgT0Uga2lja3N0YXJ0IGZpbGU6CisgICAgICAgL2hvbWUvc2NvdHRyaWYvbXlfeW9jdG8vdGVzdC53a3MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGRpZCBub3QgaGF2ZSB0byBiZSBzcGVjaWZpZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBzaW5jZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYXJ0aWZhY3QgaXMgbWFudWFsbHkgc3BlY2lmaWVkLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLXdpYy10by1tYW5pcHVsYXRlLWFuLWltYWdlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgV2ljIHRvIE1hbmlwdWxhdGUgYW4gSW1hZ2U8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFNvdXJjZSBwbHVnLWlucyBwcm92aWRlIGEgbWVjaGFuaXNtIHRvIGN1c3RvbWl6ZQotICAgICAgICAgICAgICAgICAgICB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIGltYWdlIGdlbmVyYXRpb24gcHJvY2VzcyBpbgotICAgICAgICAgICAgICAgICAgICBXaWMsIG1haW5seSB0aGUgY29udGVudHMgb2YKLSAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHBsdWctaW5zIHByb3ZpZGUgYSBtZWNoYW5pc20gZm9yIG1hcHBpbmcgdmFsdWVzCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBpbiA8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+IGZpbGVzIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPiBrZXl3b3JkIHRvIGEKLSAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhciBwbHVnLWluIGltcGxlbWVudGF0aW9uIHRoYXQgcG9wdWxhdGVzIGEKLSAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIFdpYyBpbWFnZSBtYW5pcHVsYXRpb24gYWxsb3dzIHlvdSB0byBzaG9ydGVuIHR1cm5hcm91bmQKKyAgICAgICAgICAgICAgICAgICAgdGltZSBkdXJpbmcgaW1hZ2UgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBXaWMgdG8gZGVsZXRlIHRoZSBrZXJuZWwgcGFydGl0aW9uCisgICAgICAgICAgICAgICAgICAgIG9mIGEgV2ljIGltYWdlIGFuZCB0aGVuIGluc2VydCBhIG5ld2x5IGJ1aWx0IGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzYXZlcyB5b3UgdGltZSBmcm9tIGhhdmluZyB0byByZWJ1aWxkIHRoZSBlbnRpcmUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgZWFjaCB0aW1lIHlvdSBtb2RpZnkgdGhlIGtlcm5lbC4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIHBsdWctaW5zIHRoYXQgaGF2ZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gbmF0aXZlIHRvb2xzLCBib290bG9hZGVycywgYW5kIHNvIGZvcnRoKQotICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBhIFdpYyBpbWFnZSwgeW91IG5lZWQgdG8gc3BlY2lmeSB0aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdLU19GSUxFX0RFUEVORFMnPjxmaWxlbmFtZT5XS1NfRklMRV9ERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgV2ljIHRvIG1hbmlwdWxhdGUgYSBXaWMgaW1hZ2UgYXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZXhhbXBsZSwgeW91ciBkZXZlbG9wbWVudCBtYWNoaW5lIG11c3QgaGF2ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tdG9vbHM8L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZC4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBIHNvdXJjZSBwbHVnLWluIGlzIGNyZWF0ZWQgYXMgYSBzdWJjbGFzcyBvZgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIFRoZSBwbHVnLWluIGZpbGUgY29udGFpbmluZyBpdCBpcyBhZGRlZCB0bwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlLzwvZmlsZW5hbWU+IHRvCi0gICAgICAgICAgICAgICAgICAgIG1ha2UgdGhlIHBsdWctaW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICBXaWMgaW1wbGVtZW50YXRpb24uCi0gICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFNvdXJjZSBwbHVnLWlucyBjYW4gYWxzbyBiZSBpbXBsZW1lbnRlZCBhbmQgYWRkZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWwgbGF5ZXJzLgotICAgICAgICAgICAgICAgICAgICBBcyBzdWNoLCBhbnkgcGx1Zy1pbnMgZm91bmQgaW4gYQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlLzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiBhbiBleHRlcm5hbCBsYXllciBhcmUgYWxzbyBtYWRlCi0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgV2ljIGltcGxlbWVudGF0aW9uIG5lZWRzCi0gICAgICAgICAgICAgICAgICAgIHRvIGludm9rZSBhIHBhcnRpdGlvbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgaXQgbG9va3MKLSAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBwbHVnLWluIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+IHBhcmFtZXRlciBnaXZlbiB0bwotICAgICAgICAgICAgICAgICAgICB0aGF0IHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSBwYXJ0aXRpb24gaXMgc2V0IHVwIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBjYmlvcyAgIC4uLgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBtZXRob2RzIGRlZmluZWQgYXMgY2xhc3MgbWVtYmVycyBvZiB0aGUgcGx1Zy1pbgotICAgICAgICAgICAgICAgICAgICBoYXZpbmcgdGhlIG1hdGNoaW5nIDxmaWxlbmFtZT5ib290aW1nLXBjYmlvcy5uYW1lPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY2xhc3MgbWVtYmVyIGFyZSB1c2VkLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyBiZSBtb3JlIGNvbmNyZXRlLCBoZXJlIGlzIHRoZSBwbHVnLWluIGRlZmluaXRpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICBtYXRjaGVzIGEKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlIGJvb3RpbWctcGNiaW9zPC9maWxlbmFtZT4gdXNhZ2UsCi0gICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggYW4gZXhhbXBsZQotICAgICAgICAgICAgICAgICAgICBtZXRob2QgY2FsbGVkIGJ5IHRoZSBXaWMgaW1wbGVtZW50YXRpb24KLSAgICAgICAgICAgICAgICAgICAgd2hlbiBpdCBuZWVkcyB0byBpbnZva2UgYW4gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uLXByZXBhcmF0aW9uIGZ1bmN0aW9uOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgY2xhc3MgQm9vdGltZ1BjYmlvc1BsdWdpbihTb3VyY2VQbHVnaW4pOgotICAgICAgICBuYW1lID0gJ2Jvb3RpbWctcGNiaW9zJwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgICAgIGRlZiBkb19wcmVwYXJlX3BhcnRpdGlvbihzZWxmLCBwYXJ0LCAuLi4pCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHN1YmNsYXNzIGl0c2VsZiBkb2VzIG5vdCBpbXBsZW1lbnQgYSBmdW5jdGlvbiwgYQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHZlcnNpb24gaW4gYSBzdXBlcmNsYXNzIGlzIGxvY2F0ZWQgYW5kCi0gICAgICAgICAgICAgICAgICAgIHVzZWQsIHdoaWNoIGlzIHdoeSBhbGwgcGx1Zy1pbnMgbXVzdCBiZSBkZXJpdmVkIGZyb20KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzIGRlZmluZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBtZXRob2RzLCB3aGljaCBpcyB0aGUgY3VycmVudCBzZXQgb2YgbWV0aG9kcwotICAgICAgICAgICAgICAgICAgICB0aGF0IGNhbiBiZSBpbXBsZW1lbnRlZCBvciBvdmVycmlkZGVuIGJ5Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+IHBsdWctaW5zLgotICAgICAgICAgICAgICAgICAgICBBbnkgbWV0aG9kcyBub3QgaW1wbGVtZW50ZWQgYnkgYQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gc3ViY2xhc3MgaW5oZXJpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIHByZXNlbnQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IHNvdXJjZSBmb3IgZGV0YWlsczoKLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGV4YW1pbmVzIHRoZSBjb250ZW50cyBvZiB0aGUgV2ljCisgICAgICAgICAgICAgICAgICAgIGltYWdlLCBkZWxldGVzIHRoZSBleGlzdGluZyBrZXJuZWwsIGFuZCB0aGVuIGluc2VydHMgYQorICAgICAgICAgICAgICAgICAgICBuZXcga2VybmVsOgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsZWQgdG8gZG8gdGhlIGFjdHVhbCBjb250ZW50IHBvcHVsYXRpb24gZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGlzdCB0aGUgUGFydGl0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPndpYyBsczwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgcGFydGl0aW9ucyBpbiB0aGUgV2ljIGltYWdlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgbHMgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni53aWMKKyAgICAgTnVtICAgICBTdGFydCAgICAgICAgRW5kICAgICAgICAgIFNpemUgICAgICBGc3R5cGUKKyAgICAgIDEgICAgICAgMTA0ODU3NiAgICAgMjUwNDE5MTkgICAgIDIzOTkzMzQ0ICBmYXQxNgorICAgICAgMiAgICAgIDI1MTY1ODI0ICAgICA3MjE1NzE4MyAgICAgNDY5OTEzNjAgIGV4dDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIG91dHB1dCBzaG93cyB0d28gcGFydGl0aW9ucyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYud2ljPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhhbWluZSBhIFBhcnRpY3VsYXIgUGFydGl0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+d2ljIGxzPC9maWxlbmFtZT4gY29tbWFuZCBhZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpbiBhIGRpZmZlcmVudCBmb3JtIHRvIGV4YW1pbmUgYSBwYXJ0aWN1bGFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgbWV0aG9kIHByZXBhcmVzIHRoZSBmaW5hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBpbWFnZSB0aGF0IGlzIGluY29ycG9yYXRlZCBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2sgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19jb25maWd1cmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxlZCBiZWZvcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcHJlcGFyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIGlzIHR5cGljYWxseSB1c2VkIHRvIGNyZWF0ZSBjdXN0b20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBhIHBhcnRpdGlvbiAoZS5nLiBzeXNsaW51eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdydWIgY29uZmlndXJhdGlvbiBmaWxlcykuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19pbnN0YWxsX2Rpc2soKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIGFmdGVyIGFsbCBwYXJ0aXRpb25zIGhhdmUgYmVlbiBwcmVwYXJlZCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlbWJsZWQgaW50byBhIGRpc2sgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgcHJvdmlkZXMgYSBob29rIHRvIGFsbG93IGZpbmFsaXphdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgZGlzayBpbWFnZSwgKGUuZy4gd3JpdGluZyBhbiBNQlIpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fc3RhZ2VfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpYWwgY29udGVudC1zdGFnaW5nIGhvb2sgY2FsbGVkIGJlZm9yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgbm9ybWFsbHkgZW1wdHkuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlR5cGljYWxseSwgYSBwYXJ0aXRpb24ganVzdCB1c2VzIHRoZSBwYXNzZWQtaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIChlLmcuIHRoZSB1bm1vZGlmaWVkIHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWdfZGlyPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgdGhpbmdzIG1pZ2h0IG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRhaWxvcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNlcnRhaW4gZmlsZXMgbWlnaHQgYWRkaXRpb25hbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBiZSB0YWtlbiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWdfZGlyICsgL2Jvb3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGhvb2sgYWxsb3dzIHRob3NlIGZpbGVzIHRvIGJlIHN0YWdlZCBpbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9taXplZCBmYXNoaW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2V0X2JpdGJha2VfdmFyKCk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIGFjY2VzcyBub24tc3RhbmRhcmQgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIGZvciB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBjb21tYW5kIHVzYWdlIG9uIGFueSBXaWMgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgaGVscCA8cmVwbGFjZWFibGU+Y29tbWFuZDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBzaG93cyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHZhcmlvdXMgd2F5cyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgbHM8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGhlbHAgbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBzaG93cyB3aGF0IGlzIGluIFBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgd2ljIGxzIHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYud2ljOjEKKyAgICAgVm9sdW1lIGluIGRyaXZlIDogaXMgYm9vdAorICAgICAgVm9sdW1lIFNlcmlhbCBOdW1iZXIgaXMgRTg5NC0xODA5CisgICAgIERpcmVjdG9yeSBmb3IgOjovCiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzY2hlbWUgaXMgZXh0ZW5zaWJsZS4KLSAgICAgICAgICAgICAgICAgICAgQWRkaW5nIG1vcmUgaG9va3MgaXMgYSBzaW1wbGUgbWF0dGVyIG9mIGFkZGluZyBtb3JlCi0gICAgICAgICAgICAgICAgICAgIHBsdWctaW4gbWV0aG9kcyB0byA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgY2xhc3Nlcy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGNvZGUgdGhhdCB0aGVuIG5lZWRzIHRvIGNhbGwgdGhlIHBsdWctaW4gbWV0aG9kcyB1c2VzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wbHVnaW4uZ2V0X3NvdXJjZV9wbHVnaW5fbWV0aG9kcygpPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgdG8gZmluZCB0aGUgbWV0aG9kIG9yIG1ldGhvZHMgbmVlZGVkIGJ5IHRoZSBjYWxsLgotICAgICAgICAgICAgICAgICAgICBSZXRyaWV2YWwgb2YgdGhvc2UgbWV0aG9kcyBpcyBhY2NvbXBsaXNoZWQKLSAgICAgICAgICAgICAgICAgICAgYnkgZmlsbGluZyB1cCBhIGRpY3Qgd2l0aCBrZXlzCi0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIG1ldGhvZCBuYW1lcyBvZiBpbnRlcmVzdC4KLSAgICAgICAgICAgICAgICAgICAgT24gc3VjY2VzcywgdGhlc2Ugd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgYWN0dWFsCi0gICAgICAgICAgICAgICAgICAgIG1ldGhvZHMuCi0gICAgICAgICAgICAgICAgICAgIFBsZWFzZSBzZWUgdGhlIFdpYwotICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBmb3IgZXhhbXBsZXMgYW5kIGRldGFpbHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICBsaWJjb20zMiBjMzIgICAgMTg2NTAwIDIwMTctMTAtMDkgIDE2OjA2CisgICAgIGxpYnV0aWwgIGMzMiAgICAgMjQxNDggMjAxNy0xMC0wOSAgMTY6MDYKKyAgICAgc3lzbGludXggY2ZnICAgICAgIDIyMCAyMDE3LTEwLTA5ICAxNjowNgorICAgICB2ZXNhbWVudSBjMzIgICAgIDI3MTA0IDIwMTctMTAtMDkgIDE2OjA2CisgICAgIHZtbGludXogICAgICAgIDY5MDQ2MDggMjAxNy0xMC0wOSAgMTY6MDYKKyAgICAgICAgICAgICA1IGZpbGVzICAgICAgICAgICA3IDE0MiA1ODAgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2IDU4MiA2NTYgYnl0ZXMgZnJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgb3V0cHV0IHNob3dzIGZpdmUgZmlsZXMsIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZtbGludXo8L2ZpbGVuYW1lPiBiZWluZyB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc2VlIHRoZSBmb2xsb3dpbmcgZXJyb3IsIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSBvciBjcmVhdGUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi8ubXRvb2xzcmM8L2ZpbGVuYW1lPiBmaWxlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBzdXJlIHRvIGhhdmUgdGhlIGxpbmUg4oCcbXRvb2xzX3NraXBfY2hlY2s9MeKAnAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbiwgcnVuIHRoZSBXaWMgY29tbWFuZCBhZ2FpbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFUlJPUjogX2V4ZWNfY21kOiAvdXNyL2Jpbi9tZGlyIC1pIC90bXAvd2ljLXBhcnR0Zm9rdXdyYSA6Oi8gcmV0dXJuZWQgJzEnIGluc3RlYWQgb2YgMAorICAgICAgb3V0cHV0OiBUb3RhbCBudW1iZXIgb2Ygc2VjdG9ycyAoNDc4MjQpIG5vdCBhIG11bHRpcGxlIG9mIHNlY3RvcnMgcGVyIHRyYWNrICgzMikhCisgICAgICBBZGQgbXRvb2xzX3NraXBfY2hlY2s9MSB0byB5b3VyIC5tdG9vbHNyYyBmaWxlIHRvIHNraXAgdGhpcyB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZW1vdmUgdGhlIE9sZCBLZXJuZWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+d2ljIHJtPC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIDxmaWxlbmFtZT52bWxpbnV6PC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2VybmVsKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHdpYyBybSB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LndpYzoxL3ZtbGludXoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgSW4gdGhlIE5ldyBLZXJuZWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+d2ljIGNwPC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgdGhlIHVwZGF0ZWQga2VybmVsIHRvIHRoZSBXaWMgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiBob3cgeW91IGJ1aWx0IHlvdXIga2VybmVsLCBpdCBjb3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBpbiBkaWZmZXJlbnQgcGxhY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgdXNlZCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBTREsgdG8gYnVpbGQgeW91ciBrZXJuZWwsIGl0IHJlc2lkZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvd29yazwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2VkIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCwgdGhlIGtlcm5lbCB3aWxsIGJlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d29ya3NwYWNlL3NvdXJjZXM8L2ZpbGVuYW1lPiBhcmVhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXdrcy1yZWZlcmVuY2UnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBjdXJyZW50IFdpYyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cwotICAgICAgICAgICAgICAgICAgICBvbmx5IHRoZSBiYXNpYyBraWNrc3RhcnQgcGFydGl0aW9uaW5nIGNvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFydGl0aW9uPC9maWxlbmFtZT4gKG9yIDxmaWxlbmFtZT5wYXJ0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZm9yIHNob3J0KSBhbmQgPGZpbGVuYW1lPmJvb3Rsb2FkZXI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGdXR1cmUgdXBkYXRlcyB3aWxsIGltcGxlbWVudCBtb3JlIGNvbW1hbmRzIGFuZCBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHVzZSBhbnl0aGluZyB0aGF0IGlzIG5vdCBzcGVjaWZpY2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCwgcmVzdWx0cyBjYW4gYmUgdW5wcmVkaWN0YWJsZS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0aGUgY29tbWFuZHMsIHRoZWlyIHN5bnRheCwKLSAgICAgICAgICAgICAgICAgICAgYW5kIG1lYW5pbmdzLgotICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZHMgYXJlIGJhc2VkIG9uIHRoZSBGZWRvcmEKLSAgICAgICAgICAgICAgICAgICAga2lja3N0YXJ0IHZlcnNpb25zIGJ1dCB3aXRoIG1vZGlmaWNhdGlvbnMgdG8KLSAgICAgICAgICAgICAgICAgICAgcmVmbGVjdCBXaWMgY2FwYWJpbGl0aWVzLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBmb3IgdGhvc2UgY29tbWFuZHMKLSAgICAgICAgICAgICAgICAgICAgYXQgdGhlIGZvbGxvd2luZyBsaW5rczoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9BbmFjb25kYS9LaWNrc3RhcnQjcGFydF9vcl9wYXJ0aXRpb24nPmh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNwYXJ0X29yX3BhcnRpdGlvbjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQW5hY29uZGEvS2lja3N0YXJ0I2Jvb3Rsb2FkZXInPmh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNib290bG9hZGVyPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2NvbW1hbmQtcGFydC1vci1wYXJ0aXRpb24nPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Q29tbWFuZDogcGFydCBvciBwYXJ0aXRpb248L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBFaXRoZXIgb2YgdGhlc2UgY29tbWFuZHMgY3JlYXRlIGEgcGFydGl0aW9uIG9uIHRoZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZm9sbG93aW5nIHN5bnRheDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcGFydCBbPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT5dCi0gICAgIHBhcnRpdGlvbiBbPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT5dCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+LCBXaWMgY3JlYXRlcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gYnV0IGRvZXMgbm90IG1vdW50IGl0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48cmVwbGFjZWFibGU+bW50cG9pbnQ8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBpcyB3aGVyZSB0aGUgcGFydGl0aW9uIHdpbGwgYmUgbW91bnRlZCBhbmQgbXVzdCBiZSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi88cmVwbGFjZWFibGU+cGF0aDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCAiLyIsICIvdXNyIiwgb3IgIi9ob21lIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zd2FwPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjcmVhdGVkIHBhcnRpdGlvbiBpcyB1c2VkIGFzIHN3YXAgc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnlpbmcgYSA8cmVwbGFjZWFibGU+bW50cG9pbnQ8L3JlcGxhY2VhYmxlPiBjYXVzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYXJ0aXRpb24gdG8gYXV0b21hdGljYWxseSBiZSBtb3VudGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgV2ljIGFjaGlldmVzIHRoaXMgYnkgYWRkaW5nIGVudHJpZXMgdG8gdGhlIGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlIChmc3RhYikgZHVyaW5nIGltYWdlIGdlbmVyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3Igd2ljIHRvIGdlbmVyYXRlIGEgdmFsaWQgZnN0YWIsIHlvdSBtdXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbHNvIHByb3ZpZGUgb25lIG9mIHRoZSA8ZmlsZW5hbWU+LS1vbmRyaXZlPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1vbmRpc2s8L2ZpbGVuYW1lPiwgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXVzZS11dWlkPC9maWxlbmFtZT4gcGFydGl0aW9uIG9wdGlvbnMgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdXNpbmcgIi8iIGFzIHRoZSBtb3VudHBvaW50LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgdXNlcyAiLS1vbmRpc2siIHRvIGZvcmNlIHRoZSBwYXJ0aXRpb24gb250bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5zZGI8L2ZpbGVuYW1lPiBkaXNrOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYiAtLWZzdHlwZT1leHQzIC0tbGFiZWwgcGxhdGZvcm0gLS1hbGlnbiAxMDI0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBsaXN0IHRoYXQgZGVzY3JpYmVzIG90aGVyIHN1cHBvcnRlZCBvcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB3aXRoIHRoZSA8ZmlsZW5hbWU+cGFydDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhcnRpdGlvbjwvZmlsZW5hbWU+IGNvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1pbmltdW0gcGFydGl0aW9uIHNpemUgaW4gTUJ5dGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5IGFuIGludGVnZXIgdmFsdWUgc3VjaCBhcyA1MDAuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCBhcHBlbmQgdGhlIG51bWJlciB3aXRoICJNQiIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyB0aGUgc291cmNlIG9mIHRoZSBkYXRhIHRoYXQgcG9wdWxhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYXJ0aXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtb3N0IGNvbW1vbiB2YWx1ZSBmb3IgdGhpcyBvcHRpb24gaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3RmcyIsIGJ1dCB5b3UgY2FuIHVzZSBhbnkgdmFsdWUgdGhhdCBtYXBzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgdmFsaWQgc291cmNlIHBsdWctaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgc291cmNlIHBsdWctaW5zLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXBsdWdpbnMnPlBsdWctaW5zPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlIHJvb3RmczwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMgY3JlYXRlcyBhIHBhcnRpdGlvbiBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXJnZSBhcyBuZWVkZWQgYW5kIHRvIGZpbGwgaXQgd2l0aCB0aGUgY29udGVudHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSBwb2ludGVkIHRvIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXI8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUgb3B0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBlcXVpdmFsZW50IHJvb3RmcyBkZXJpdmVkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlc3lzdGVtIHR5cGUgdXNlZCB0byBjcmVhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBpcyBkcml2ZW4gYnkgdGhlIHZhbHVlIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1mc3R5cGU8L2ZpbGVuYW1lPiBvcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGZvciB0aGUgcGFydGl0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIGVudHJ5IG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWZzdHlwZTwvZmlsZW5hbWU+IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNvdXJjZSA8cmVwbGFjZWFibGU+cGx1Z2luLW5hbWU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMgY3JlYXRlcyBhIHBhcnRpdGlvbiBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXJnZSBhcyBuZWVkZWQgYW5kIGZpbGxzIGl0IHdpdGggdGhlIGNvbnRlbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBwYXJ0aXRpb24gdGhhdCBpcyBnZW5lcmF0ZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBwbHVnLWluIG5hbWUgdXNpbmcgdGhlIGRhdGEgcG9pbnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBieSB0aGUgPGZpbGVuYW1lPi1yPC9maWxlbmFtZT4gY29tbWFuZC1saW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvciB0aGUgZXF1aXZhbGVudCByb290ZnMgZGVyaXZlZCBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWU8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGFjdGx5IHdoYXQgdGhvc2UgY29udGVudHMgYW5kIGZpbGVzeXN0ZW0gdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgdXAgYmVpbmcgYXJlIGRlcGVuZGVudCBvbiB0aGUgZ2l2ZW4gcGx1Zy1pbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgZG8gbm90IHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4gb3B0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcyBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eSBwYXJ0aXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG11c3QgdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT4gb3B0aW9uIHRvIHNwZWNpZnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNpemUgb2YgdGhlIGVtcHR5IHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tb25kaXNrPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPi0tb25kcml2ZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlcyB0aGUgcGFydGl0aW9uIHRvIGJlIGNyZWF0ZWQgb24gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIGRpc2suCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWZzdHlwZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldHMgdGhlIGZpbGUgc3lzdGVtIHR5cGUgZm9yIHRoZSBwYXJ0aXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkIHZhbHVlcyBhcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmV4dDQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmV4dDM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmV4dDI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJ0cmZzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5zcXVhc2hmczwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+c3dhcDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWZzb3B0aW9uczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGZyZWUtZm9ybSBzdHJpbmcgb2Ygb3B0aW9ucyB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIHdoZW4gbW91bnRpbmcgdGhlIGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RyaW5nIHdpbGwgYmUgY29waWVkIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4gZmlsZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIHN5c3RlbSBhbmQgc2hvdWxkIGJlIGVuY2xvc2VkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgc3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzICJkZWZhdWx0cyIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWxhYmVsIGxhYmVsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsYWJlbCB0byBnaXZlIHRvIHRoZSBmaWxlc3lzdGVtIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIG1hZGUgb24gdGhlIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGdpdmVuIGxhYmVsIGlzIGFscmVhZHkgaW4gdXNlIGJ5IGFub3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSwgYSBuZXcgbGFiZWwgaXMgY3JlYXRlZCBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tYWN0aXZlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya3MgdGhlIHBhcnRpdGlvbiBhcyBhY3RpdmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWFsaWduIChpbiBLQnl0ZXMpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F5cyB0byBzdGFydCBhIHBhcnRpdGlvbiBvbiBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+eDwvcmVwbGFjZWFibGU+IEtCeXRlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1uby10YWJsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ljLXNwZWNpZmljIG9wdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIG9wdGlvbiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBhbmQgY2F1c2VzIGl0IHRvIGJlY29tZSBwb3B1bGF0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBwYXJ0aXRpb24gaXMgbm90IGFkZGVkIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gdGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWV4dHJhLXNwYWNlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcyBleHRyYSBzcGFjZSBhZnRlciB0aGUgc3BhY2UgZmlsbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSBwYXJ0aXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzaXplIGNhbiBnbyBiZXlvbmQgdGhlIHNpemUgc3BlY2lmaWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSA8ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT4gb3B0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxMCBNYnl0ZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLW92ZXJoZWFkLWZhY3RvcjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXMgdGhlIHNpemUgb2YgdGhlIHBhcnRpdGlvbiBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uJ3MgdmFsdWUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHN1cHBseSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzICIxLjMiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1wYXJ0LXR5cGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHBhcnRpdGlvbiB0eXBlIGdsb2JhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZSBpZGVudGlmaWVyIChHVUlEKSBmb3IgR1BUIHBhcnRpdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgbGlzdCBvZiBwYXJ0aXRpb24gdHlwZSBHVUlEcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dVSURfUGFydGl0aW9uX1RhYmxlI1BhcnRpdGlvbl90eXBlX0dVSURzJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZXMgV2ljIHRvIGdlbmVyYXRlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tIEdVSUQgZm9yIHRoZSBwYXJ0aXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBnZW5lcmF0ZWQgaWRlbnRpZmllciBpcyB1c2VkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290bG9hZGVyIGNvbmZpZ3VyYXRpb24gdG8gc3BlY2lmeSB0aGUgcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXV1aWQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpYy1zcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gdGhhdCBzcGVjaWZpZXMgdGhlIHBhcnRpdGlvbiBVVUlELgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2NvbW1hbmQtYm9vdGxvYWRlcic+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db21tYW5kOiBib290bG9hZGVyPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzcGVjaWZpZXMgaG93IHRoZSBib290bG9hZGVyIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZCBhbmQgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vdGxvYWRlciBmdW5jdGlvbmFsaXR5IGFuZCBib290IHBhcnRpdGlvbnMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50ZWQgYnkgdGhlIHZhcmlvdXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWctaW5zIHRoYXQgaW1wbGVtZW50IGJvb3Rsb2FkZXIgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYm9vdGxvYWRlciBjb21tYW5kIGVzc2VudGlhbGx5IHByb3ZpZGVzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWFucyBvZiBtb2RpZnlpbmcgYm9vdGxvYWRlciBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS10aW1lb3V0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Rsb2FkZXIgdGltZXMgb3V0IGFuZCBib290cyB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWFwcGVuZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBrZXJuZWwgcGFyYW1ldGVycy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgcGFyYW1ldGVycyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzeXNsaW51eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QVBQRU5EPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdydWI8L2ZpbGVuYW1lPiBrZXJuZWwgY29tbWFuZCBsaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1jb25maWdmaWxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgdXNlci1kZWZpbmVkIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJvb3Rsb2FkZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcHJvdmlkZSBhIGZ1bGwgcGF0aG5hbWUgZm9yIHRoZSBmaWxlIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgZmlsZSB0aGF0IGV4aXN0cyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNhbm5lZC13a3M8L2ZpbGVuYW1lPiBmb2xkZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIG92ZXJyaWRlcyBhbGwgb3RoZXIgYm9vdGxvYWRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgYXNzdW1lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdhcyB1c2VkIHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgY3Agfi9wb2t5X3Nkay90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8vNC4xMi4xMitnaXQ5OTktcjAvbGludXgteW9jdG8tNC4xMi4xMitnaXQ5OTkvYXJjaC94ODYvYm9vdC9iekltYWdlIFwKKyAgICAgICAgfi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYud2ljOjEvdm1saW51egorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIG5ldyBrZXJuZWwgaXMgYWRkZWQgYmFjayBpbnRvIHRoZSBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZmxhc2hpbmctaW1hZ2VzLXVzaW5nLWJtYXB0b29sJz48ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmxhc2ggeW91ciB3aWMgaW1hZ2Ugb250byBhbiBTRCBjYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIFVTQiBzdGljayBhbmQgdGVzdCB5b3VyIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbGx5IDEwIHRvIDIwIHRpbWVzIGZhc3RlciB0aGFuIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTU4MTcsODg3ICs1NjEyLDIzMSBAQAogICAgICAgICA8dGl0bGU+QnVpbGRpbmcgYW4gSW5pdGlhbCBSQU0gRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBJbWFnZTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBpbml0cmFtZnMgaXMgdGhlIHN1Y2Nlc3NvciBvZiBJbml0aWFsIFJBTSBEaXNrIChpbml0cmQpLgotICAgICAgICAgICAgSXQgaXMgYSAiY29weSBpbiBhbmQgb3V0IiAoY3BpbykgYXJjaGl2ZSBvZiB0aGUgaW5pdGlhbCBmaWxlIHN5c3RlbQotICAgICAgICAgICAgdGhhdCBnZXRzIGxvYWRlZCBpbnRvIG1lbW9yeSBkdXJpbmcgdGhlIExpbnV4IHN0YXJ0dXAgcHJvY2Vzcy4KLSAgICAgICAgICAgIEJlY2F1c2UgTGludXggdXNlcyB0aGUgY29udGVudHMgb2YgdGhlIGFyY2hpdmUgZHVyaW5nCi0gICAgICAgICAgICBpbml0aWFsaXphdGlvbiwgdGhlIGluaXRyYW1mcyBuZWVkcyB0byBjb250YWluIGFsbCBvZiB0aGUgZGV2aWNlCi0gICAgICAgICAgICBkcml2ZXJzIGFuZCB0b29scyBuZWVkZWQgdG8gbW91bnQgdGhlIGZpbmFsIHJvb3QgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgIEFuIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gKGluaXRyYW1mcykgaW1hZ2UgcHJvdmlkZXMgYSB0ZW1wb3JhcnkKKyAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB1c2VkIGZvciBlYXJseSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKGUuZy4KKyAgICAgICAgICAgIGxvYWRpbmcgb2YgbW9kdWxlcyBuZWVkZWQgdG8gbG9jYXRlIGFuZCBtb3VudCB0aGUgInJlYWwiIHJvb3QKKyAgICAgICAgICAgIGZpbGVzeXN0ZW0pLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIGluaXRyYW1mcyBpbWFnZSBpcyB0aGUgc3VjY2Vzc29yIG9mIGluaXRpYWwgUkFNIGRpc2sKKyAgICAgICAgICAgICAgICAoaW5pdHJkKS4KKyAgICAgICAgICAgICAgICBJdCBpcyBhICJjb3B5IGluIGFuZCBvdXQiIChjcGlvKSBhcmNoaXZlIG9mIHRoZSBpbml0aWFsCisgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSB0aGF0IGdldHMgbG9hZGVkIGludG8gbWVtb3J5IGR1cmluZyB0aGUgTGludXgKKyAgICAgICAgICAgICAgICBzdGFydHVwIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgQmVjYXVzZSBMaW51eCB1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgYXJjaGl2ZSBkdXJpbmcKKyAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiwgdGhlIGluaXRyYW1mcyBpbWFnZSBuZWVkcyB0byBjb250YWluIGFsbCBvZiB0aGUKKyAgICAgICAgICAgICAgICBkZXZpY2UgZHJpdmVycyBhbmQgdG9vbHMgbmVlZGVkIHRvIG1vdW50IHRoZSBmaW5hbCByb290CisgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gYnVpbGQgYW4gaW5pdHJhbWZzIGltYWdlIGFuZCBidW5kbGUgaXQgaW50byB0aGUga2VybmVsLCBzZXQgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwgYW5kIHNldCB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTklUUkFNRlNfSU1BR0UnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0U8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5tYWNoaW5lLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhbiBpbml0cmFtZnMgaW1hZ2U6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBpbml0cmFtZnMgSW1hZ2UgUmVjaXBlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVmZXJlbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb3JlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYXMgYW4gZXhhbXBsZSBmcm9tIHdoaWNoIHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlY2lkZSBpZiBZb3UgTmVlZCB0byBCdW5kbGUgdGhlIGluaXRyYW1mcyBJbWFnZQorICAgICAgICAgICAgICAgICAgICBJbnRvIHRoZSBLZXJuZWwgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGluaXRyYW1mcyBpbWFnZSB0aGF0IGlzIGJ1aWx0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgaW4gd2l0aCB0aGUga2VybmVsIGltYWdlLCBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTklUUkFNRlNfSU1BR0VfQlVORExFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIHJlY2lwZSB0aGF0IGJ1aWxkcyB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIGJ1bmRsZSB0aGUgaW5pdHJhbWZzCisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIHRoZSBrZXJuZWwgaW1hZ2UgdG8gYXZvaWQgY2lyY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSBrZXJuZWwgcmVjaXBlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcyByZWNpcGUgc2hvdWxkIHRoZSBpbml0cmFtZnMgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGUgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmbGFnIGNhdXNlcyB0aGUgaW5pdHJhbWZzIGltYWdlIHRvIGJlIHVucGFja2VkCisgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIDxmaWxlbmFtZT4ke0J9L3Vzci88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSB1bnBhY2tlZCBpbml0cmFtZnMgaW1hZ2UgaXMgdGhlbiBwYXNzZWQgdG8gdGhlIGtlcm5lbCdzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09ORklHX0lOSVRSQU1GU19TT1VSQ0UnPjxmaWxlbmFtZT5DT05GSUdfSU5JVFJBTUZTX1NPVVJDRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFsbG93aW5nIHRoZSBpbml0cmFtZnMgaW1hZ2UgdG8gYmUgYnVpbHQgaW50bworICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIG5vcm1hbGx5LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjaG9vc2UgdG8gbm90IGJ1bmRsZSB0aGUgaW5pdHJhbWZzIGltYWdlIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgaW1hZ2UsIHlvdSBhcmUgZXNzZW50aWFsbHkgdXNpbmcgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luaXRyZCc+SW5pdGlhbCBSQU0gRGlzayAoaW5pdHJkKTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgYW4gaW5pdHJkIGlzIGhhbmRsZWQgcHJpbWFyaWx5IHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJEX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJEX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUUkRfTElWRTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUUkRfSU1BR0VfTElWRTwvZmlsZW5hbWU+IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcyc+PGZpbGVuYW1lPmltYWdlLWxpdmUuYmJjbGFzczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Cis8IS0tCitTb21lIG5vdGVzIGZyb20gQ2FsOgorCisgICAgQSBub24tYnVuZGxlZCBpbml0cmFtZnMgaXMgZXNzZW50aWFsbHkgYW4gaW5pdHJkLCB3aGljaCBJIGFtIGRpc2NvdmVyaW5nCisgICAgdG8gYmUgcmF0aGVyIGNvbmZ1c2luZ2x5IHN1cHBvcnRlZCBpbiBPRSBhdCB0aGUgbW9tZW50LgorCisgICAgSXRzIHByaW1hcmlseSBoYW5kbGVkIHRocm91Z2ggSU5JVFJEX0lNQUdFKF9MSVZFL19WTSkgYW5kIElOSVRSRChfTElWRS9fVk0pCisgICAgdmFyaWFibGVzLiBJTklUUkRfSU1BR0UqIGlzIHRoZSBwcmltYXJ5IGltYWdlIHRhcmdldCwgd2hpY2ggZ2V0cyBhZGRlZCB0bworICAgIElOSVRSRCosIHdoaWNoIGlzIGEgbGlzdCBvZiBjcGlvIGZpbGVzeXN0ZW1zLiBZb3UgY2FuIGFkZCBtb3JlIGNwaW8KKyAgICBmaWxlc3lzdGVtcyB0byB0aGUgSU5JVFJEIHZhcmlhYmxlIHRvIGFkZCBtb3JlIHRvIHRoZSBpbml0cmQuIEZvcgorICAgIGluc3RhbmNlLCBtZXRhLWludGVsIGFkZHMgaW50ZWwtbWljcm9jb2RlIHZpYSB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIElOSVRSRF9MSVZFX3ByZXBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnaW50ZWwtdWNvZGUnLCAnJHtERVBMT1lfRElSX0lNQUdFfS9taWNyb2NvZGUuY3BpbyAnLCAnJywgZCl9IgorCisgICAgSWYgJ2ludGVsLXVjb2RlJyBpcyBpbiBNQUNISU5FX0ZFQVRVUkVTLCB0aGlzIHJlc29sdmVzIHRvOgorCisgICAgICAgIElOSVRSRF9MSVZFX3ByZXBlbmQgPSAiJHtERVBMT1lfRElSX0lNQUdFfS9taWNyb2NvZGUuY3BpbyAiCisKKyAgICBVbmZvcnR1bmF0ZWx5IHlvdSBuZWVkIHRoZSBmdWxsIHBhdGgsIGFuZCBpdHMgdXAgdG8geW91IHRvIHNvcnQgb3V0CisgICAgZGVwZW5kZW5jaWVzIGFzIHdlbGwuIEZvciBpbnN0YW5jZSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdpbnRlbC11Y29kZScsICcgaW50ZWwtbWljcm9jb2RlJywgJycsIGQpfSIKKworICAgIHdoaWNoIHJlc29sdmVzIHRvOgorCisgICAgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTX2FwcGVuZCA9ICJpbnRlbC1taWNyb2NvZGUiCisKKyAgICBIb3dldmVyLCB0aGUgYWJvdmUgaXMgb25seSB0cnVlIHdpdGggdGhlICJsaXZlIiBJTUFHRV9GU1RZUEUuIFdpYyBpcworICAgIGFub3RoZXIgYmVhc3QgZW50aXJlbHksIHdpdGggY3VycmVudCB3aWMga2lja3N0YXJ0IGZpbGVzIG5vdCBzdXBwb3J0aW5nCisgICAgaW5pdHJkcywgYW5kIG9ubHkgcGFydGlhbCBzdXBwb3J0IGluIHRoZSBzb3VyY2UgcGx1Z2lucy4gVGhhdCBiZWluZyBzYWlkLAorICAgIEkga25vdyB0aGUgZ2VuZXJpYyBib290ZnMgd29yayBFZCBpcyB3b3JraW5nIG9uIHdpbGwgaGVscCBpbW1lbnNlbHkgaW4gdGhpcworICAgIGFzcGVjdC4gSGUgb3IgU2F1bCBjYW4gcHJvdmlkZSBtb3JlIGRldGFpbHMgaGVyZS4KKworICAgIEFueWhvdywgaXRzIHJhdGhlciBmcmFjdHVyZWQgYW5kIGNvbmZ1c2luZyBhbmQgY291bGQgcHJvYmFibHkgdXNlIGEKKyAgICByZXdvcmsgaG9uZXN0bHkuIEkgZG9uJ3Qga25vdyBob3cgZmVhc2libGUgaXQgaXMgdG8gZG9jdW1lbnQgYWxsIHRoZQorICAgIGRldGFpbHMgYW5kIGNvcm5lciBjYXNlcyBvZiB0aGlzIGFyZWEuCistLT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IEFkZCBJdGVtcyB0byB0aGUgaW5pdHJhbWZzIEltYWdlCisgICAgICAgICAgICAgICAgICAgIFRocm91Z2ggdGhlIGluaXRyYW1mcyBJbWFnZSBSZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFkZCBpdGVtcyB0byB0aGUgaW5pdHJhbWZzIGltYWdlIGJ5IHdheSBvZiBpdHMKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCB5b3Ugc2hvdWxkIHVzZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9JTlNUQUxMJz48ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT4gZ2l2ZXMgbW9yZSBkaXJlY3QKKyAgICAgICAgICAgICAgICAgICAgY29udHJvbCBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdHMgeW91IG1pZ2h0IG5vdCBuZWNlc3NhcmlseSB3YW50IHRoYXQgYXJlCisgICAgICAgICAgICAgICAgICAgIHNldCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtY29yZS1pbWFnZSc+PGZpbGVuYW1lPmNvcmUtaW1hZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgYW5kIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQnVpbGQgeW91ciBrZXJuZWwgaW1hZ2UgdXNpbmcgQml0QmFrZS4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSBpcyBhIGRlcGVuZGVuY3kgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSwgdGhlIGluaXRyYW1mcyBpbWFnZSBpcyBidWlsdCBhcyB3ZWxsIGFuZAorICAgICAgICAgICAgICAgICAgICBidW5kbGVkIHdpdGggdGhlIGtlcm5lbCBpbWFnZSBpZiB5b3UgdXNlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZXNjcmliZWQgZWFybGllci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2ZsYXNoaW5nLWltYWdlcy11c2luZy1ibWFwdG9vbCc+CisgICAgICAgIDx0aXRsZT5GbGFzaGluZyBJbWFnZXMgVXNpbmcgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQW4gZWFzeSB3YXkgdG8gZmxhc2ggYW4gaW1hZ2UgdG8gYSBib290YWJsZSBkZXZpY2UgaXMgdG8gdXNlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgaW50ZWdyYXRlZCBpbnRvIHRoZQorICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nLCBpcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGZsYXNoIGEgV2ljIGltYWdlLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gdG8gZmxhc2ggYW55CisgICAgICAgICAgICAgICAgdHlwZSBvZiBpbWFnZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIFVzZSB0aGVzZSBzdGVwcyB0byBmbGFzaCBhbiBpbWFnZSB1c2luZworICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBVbmxlc3MgeW91IGFyZSBhYmxlIHRvIGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXAtdG9vbHM8L2ZpbGVuYW1lPiBwYWNrYWdlIGFzIG1lbnRpb25lZCBpbiB0aGUgbm90ZQorICAgICAgICAgICAgICAgIGluIHRoZSBzZWNvbmQgYnVsbGV0IG9mIHN0ZXAgMyBmdXJ0aGVyIGRvd24sIHlvdSB3aWxsIG5lZWQgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBiZWZvcmUgdXNpbmcgaXQuCisgICAgICAgICAgICAgICAgQnVpbGQgdGhlIHRvb2wgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGJtYXAtdG9vbHMtbmF0aXZlCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZGF0ZSB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZTVFlQRVMgKz0gIndpYyB3aWMuYm1hcCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HZXQgWW91ciBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBFaXRoZXIgaGF2ZSB5b3VyIGltYWdlIHJlYWR5IChwcmUtYnVpbHQpIG9yIHRha2UgdGhlIHN0ZXAKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgdGhlIGltYWdlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZsYXNoIHRoZSBEZXZpY2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRmxhc2ggdGhlIGRldmljZSB3aXRoIHRoZSBpbWFnZSBieSB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBkZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgICAgIHNldHVwOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgbWVkaWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHRoaXMgY29tbWFuZCBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGJtYXB0b29sIGNvcHkgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0LWNvcmUtaW1hZ2UtbWluaW1hbC08cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LndpYyAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgYWNjZXNzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1lZGlhLCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGNobW9kIDY2NiAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAkIG9lLXJ1bi1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUgYm1hcHRvb2wgY29weSAuL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQtY29yZS1pbWFnZS1taW5pbWFsLTxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4ud2ljIC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIFVidW50dSBvciBEZWJpYW4gZGlzdHJpYnV0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBpbnN0YWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcC10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kIGFuZCB0aGVuIHVzZSB0aGUgdG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBldmVuIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgYWNjb3VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGJtYXAtdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGhlbHAgb24gdGhlIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQsIHVzZSB0aGUKKyAgICAgICAgICAgIGZvbGxvd2luZyBjb21tYW5kOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBJTklUUkFNRlNfSU1BR0VfQlVORExFID0gIjEiCi0gICAgIElOSVRSQU1GU19JTUFHRSA9ICI8cmVwbGFjZWFibGU+aW1hZ2VfcmVjaXBlX25hbWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgJCBibWFwdG9vbCAtLWhlbHAKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFNldHRpbmcgdGhlIDxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZsYWcgY2F1c2VzIHRoZSBpbml0cmFtZnMgY3JlYXRlZCBieSB0aGUgcmVjaXBlIGFuZCBkZWZpbmVkIGJ5Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT4gdG8gYmUgdW5wYWNrZWQgaW50byB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT4ke0J9L3Vzci88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICBUaGUgdW5wYWNrZWQgaW5pdHJhbWZzIGlzIHRoZW4gcGFzc2VkIHRvIHRoZSBrZXJuZWwncwotICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gdXNpbmcgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09ORklHX0lOSVRSQU1GU19TT1VSQ0UnPjxmaWxlbmFtZT5DT05GSUdfSU5JVFJBTUZTX1NPVVJDRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLCBhbGxvd2luZyBpbml0cmFtZnMgdG8gYmUgYnVpbHQgaW4gdG8gdGhlIGtlcm5lbAotICAgICAgICAgICAgbm9ybWFsbHkuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgcHJlZmVycmVkIG1ldGhvZCBpcyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+IHZhcmlhYmxlIHJhdGhlciB0aGFuIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUUkFNRlNfVEFTSzwvZmlsZW5hbWU+IHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIFNldHRpbmcgPGZpbGVuYW1lPklOSVRSQU1GU19UQVNLPC9maWxlbmFtZT4gaXMgc3VwcG9ydGVkIGZvcgotICAgICAgICAgICAgICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgdXNlIG9mIHRoaXMgdmFyaWFibGUgaGFzIGNpcmN1bGFyIGRlcGVuZGVuY3kKLSAgICAgICAgICAgICAgICBwcm9ibGVtcy4KLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIGRlcGVuZGVuY3kKLSAgICAgICAgICAgICAgICBwcm9ibGVtcy4KLSAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJlY2lwZSB0aGF0IDxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0U8L2ZpbGVuYW1lPgotICAgICAgICAgICAgcG9pbnRzIHRvIG11c3QgcHJvZHVjZSBhIDxmaWxlbmFtZT4uY3Bpby5nejwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPi5jcGlvLnRhcjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+LmNwaW8ubHo0PC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LmNwaW8ubHptYTwvZmlsZW5hbWU+LCBvcgotICAgICAgICAgICAgPGZpbGVuYW1lPi5jcGlvLnh6PC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgIFlvdSBjYW4gZW5zdXJlIHlvdSBwcm9kdWNlIG9uZSBvZiB0aGVzZSA8ZmlsZW5hbWU+LmNwaW8uKjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmaWxlcyBieSBzZXR0aW5nIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19GU1RZUEVTJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBvbmUgb3IgbW9yZSBvZiB0aGUgYWJvdmUKLSAgICAgICAgICAgIGZpbGUgdHlwZXMuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYWRkIGl0ZW1zIHRvIHRoZSBpbml0cmFtZnMgaW1hZ2UgYnkgd2F5IG9mIGl0cyByZWNpcGUsCi0gICAgICAgICAgICAgICAgeW91IHNob3VsZCB1c2UKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9JTlNUQUxMJz48ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT4gZ2l2ZXMgbW9yZSBkaXJlY3QgY29udHJvbAotICAgICAgICAgICAgICAgIG9mIHdoYXQgaXMgYWRkZWQgdG8gdGhlIGltYWdlIGFzIGNvbXBhcmVkIHRvIHRoZSBkZWZhdWx0cyB5b3UKLSAgICAgICAgICAgICAgICBtaWdodCBub3QgbmVjZXNzYXJpbHkgd2FudCB0aGF0IGFyZSBzZXQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWNvcmUtaW1hZ2UnPjxmaWxlbmFtZT5jb3JlLWltYWdlPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIGNsYXNzZXMuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJpbmctdGhlLWtlcm5lbCc+Ci0gICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgS2VybmVsPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBjb25zaXN0cyBvZiBtYWtpbmcgc3VyZSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBoYXMgYWxsIHRoZSByaWdodCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgaW4gaXQgZm9yIHRoZSBpbWFnZSB5b3UgYXJlIGJ1aWxkaW5nLgotICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbCBhbmQKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIHRvIG1ha2Ugc3VyZSB5b3VyCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgaXMganVzdCBob3cgeW91IG5lZWQgaXQuCi0gICAgICAgICAgICBZb3UgY2FuIGFsc28gc2F2ZSBrbm93biBjb25maWd1cmF0aW9ucyBpbiBhCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0aGF0IHRoZSBidWlsZCBzeXN0ZW0gY2FuIHVzZQotICAgICAgICAgICAgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byB1c2UgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIGNyZWF0ZSBhbmQgdXNlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBhbmQgaG93IHRvIGludGVyYWN0aXZlbHkKLSAgICAgICAgICAgIG1vZGlmeSB5b3VyIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0byBjcmVhdGUgdGhlCi0gICAgICAgICAgICBsZWFuZXN0IGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgcG9zc2libGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NoYW5naW5nLXRoZS1jb25maWd1cmF0aW9uJz5DaGFuZ2luZyB0aGUgQ29uZmlndXJhdGlvbjwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLW1lbnVjb25maWcnPgotICAgICAgICAgICAgPHRpdGxlPlVzaW5nJm5ic3A7Jm5ic3A7PGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBlYXNpZXN0IHdheSB0byBkZWZpbmUga2VybmVsIGNvbmZpZ3VyYXRpb25zIGlzIHRvIHNldCB0aGVtIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sLgotICAgICAgICAgICAgICAgIFRoaXMgdG9vbCBwcm92aWRlcyBhbiBpbnRlcmFjdGl2ZSBtZXRob2Qgd2l0aCB3aGljaAotICAgICAgICAgICAgICAgIHRvIHNldCBrZXJuZWwgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiwgc2VlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZW51Y29uZmlnJz48L3VsaW5rPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gdXNlIHRoZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHRvb2wgaW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgeW91IG11c3QgbGF1bmNoIGl0IHVzaW5nIEJpdEJha2UuCi0gICAgICAgICAgICAgICAgVGh1cywgdGhlIGVudmlyb25tZW50IG11c3QgYmUgc2V0IHVwIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBzY3JpcHQgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gYmUgc3VyZSBvZiB0aGUgc3RhdGUgb2YgeW91ciBidWlsZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIHJ1biA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgYXNzdW1pbmcgdGhlIFNvdXJjZSBEaXJlY3RvcnkncyB0b3AtbGV2ZWwgZm9sZGVyIGlzCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vcG9reTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCBwb2t5Ci0gICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52Ci0gICAgICQgYml0YmFrZSBsaW51eC15b2N0byAtYyBrZXJuZWxfY29uZmlnbWUgLWYKLSAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIG1lbnVjb25maWcKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgT25jZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGNvbWVzIHVwLCBpdHMgc3RhbmRhcmQKLSAgICAgICAgICAgICAgICBpbnRlcmZhY2UgYWxsb3dzIHlvdSB0byBpbnRlcmFjdGl2ZWx5IGV4YW1pbmUgYW5kIGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgIGFsbCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KLSAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgeW91ciBjaGFuZ2VzLCBzaW1wbHkgZXhpdCB0aGUgdG9vbCBhbmQgc2F2ZSB5b3VyCi0gICAgICAgICAgICAgICAgY2hhbmdlcyB0byBjcmVhdGUgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBDb25zaWRlciBhbiBleGFtcGxlIHRoYXQgY29uZmlndXJlcyB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGtlcm5lbC4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSByZWNvZ25pemVzIHRoaXMga2VybmVsIGFzCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgVGh1cywgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmcm9tIHRoZSBzaGVsbCBpbiB3aGljaCB5b3UgcHJldmlvdXNseSBzb3VyY2VkIHRoZQotICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGluaXRpYWxpemF0aW9uIHNjcmlwdCBjbGVhbnMgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZSBhbmQgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgdGhlbiBydW5zIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMgbWVudWNvbmZpZwotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25jZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGxhdW5jaGVzLCB1c2UgdGhlIGludGVyZmFjZQotICAgICAgICAgICAgICAgIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIHNlbGVjdGlvbnMgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBpbgotICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBhcmUgaW50ZXJlc3RlZC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIDxmaWxlbmFtZT5DT05GSUdfU01QPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBzZXR0aW5nLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpdCBhdCA8ZmlsZW5hbWU+UHJvY2Vzc29yIFR5cGUgYW5kIEZlYXR1cmVzPC9maWxlbmFtZT4gdW5kZXIKLSAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBzZWxlY3Rpb24gPGZpbGVuYW1lPlN5bW1ldHJpYyBNdWx0aS1wcm9jZXNzaW5nIFN1cHBvcnQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBBZnRlciBoaWdobGlnaHRpbmcgdGhlIHNlbGVjdGlvbiwgdXNlIHRoZSBhcnJvdyBrZXlzIHRvIHNlbGVjdCBvciBkZXNlbGVjdAotICAgICAgICAgICAgICAgIHRoZSBzZXR0aW5nLgotICAgICAgICAgICAgICAgIFdoZW4geW91IGFyZSBmaW5pc2hlZCB3aXRoIGFsbCB5b3VyIHNlbGVjdGlvbnMsIGV4aXQgb3V0IGFuZCBzYXZlIHRoZW0uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFNhdmluZyB0aGUgc2VsZWN0aW9ucyB1cGRhdGVzIHRoZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZS4KLSAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBmaWxlIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBjb25maWd1cmUgdGhlCi0gICAgICAgICAgICAgICAga2VybmVsIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFuZCBleGFtaW5lIHRoaXMgZmlsZSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC93b3JrLzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBpcyBsb2NhdGVkIGluIHRoZSBhcmVhIHdoZXJlIHRoZQotICAgICAgICAgICAgICAgIHNwZWNpZmljIGtlcm5lbCBpcyBidWlsdC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHdlcmUgYnVpbGRpbmcgYSBMaW51eCBZb2N0byBrZXJuZWwgYmFzZWQgb24gdGhlCi0gICAgICAgICAgICAgICAgTGludXggMy4xNCBrZXJuZWwgYW5kIHlvdSB3ZXJlIGJ1aWxkaW5nIGEgUUVNVSBpbWFnZSB0YXJnZXRlZCBmb3IKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eDg2PC9maWxlbmFtZT4gYXJjaGl0ZWN0dXJlLCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgd291bGQgYmUgbG9jYXRlZCBoZXJlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8tMy4xNC4xMStnaXQxKzg0Zi4uLgotICAgICAgICAuLi42NTZlZDMwLXIxL2xpbnV4LXFlbXV4ODYtc3RhbmRhcmQtYnVpbGQKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGRpcmVjdG9yeSBpcyBhcnRpZmljaWFsbHkgc3BsaXQgYW5kIG1hbnkgb2YgdGhlIGNoYXJhY3RlcnMKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGFjdHVhbCBmaWxlbmFtZSBhcmUgb21pdHRlZCBpbiBvcmRlciB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUuCi0gICAgICAgICAgICAgICAgICAgIEFsc28sIGRlcGVuZGluZyBvbiB0aGUga2VybmVsIHlvdSBhcmUgdXNpbmcsIHRoZSBleGFjdCBwYXRobmFtZQotICAgICAgICAgICAgICAgICAgICBmb3IgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTQuLi48L2ZpbGVuYW1lPiBtaWdodCBkaWZmZXIuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgeW91IGNhbiBzZWUgdGhlIGtlcm5lbCBzZXR0aW5ncy4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBlbnRyeSBzaG93cyB0aGF0IHN5bW1ldHJpYyBtdWx0aS1wcm9jZXNzb3Igc3VwcG9ydAotICAgICAgICAgICAgICAgIGlzIG5vdCBzZXQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIENPTkZJR19TTVAgaXMgbm90IHNldAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBnb29kIG1ldGhvZCB0byBpc29sYXRlIGNoYW5nZWQgY29uZmlndXJhdGlvbnMgaXMgdG8gdXNlIGEgY29tYmluYXRpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB0b29sIGFuZCBzaW1wbGUgc2hlbGwgY29tbWFuZHMuCi0gICAgICAgICAgICAgICAgQmVmb3JlIGNoYW5naW5nIGNvbmZpZ3VyYXRpb25zIHdpdGggPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiwgY29weSB0aGUKLSAgICAgICAgICAgICAgICBleGlzdGluZyA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGFuZCByZW5hbWUgaXQgdG8gc29tZXRoaW5nIGVsc2UsCi0gICAgICAgICAgICAgICAgdXNlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG8gbWFrZQotICAgICAgICAgICAgICAgIGFzIG1hbnkgY2hhbmdlcyBhcyB5b3Ugd2FudCBhbmQgc2F2ZSB0aGVtLCB0aGVuIGNvbXBhcmUgdGhlIHJlbmFtZWQgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgIGZpbGUgYWdhaW5zdCB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSByZXN1bHRpbmcgZGlmZmVyZW5jZXMgYXMgeW91ciBiYXNlIHRvIGNyZWF0ZSBjb25maWd1cmF0aW9uIGZyYWdtZW50cwotICAgICAgICAgICAgICAgIHRvIHBlcm1hbmVudGx5IHNhdmUgaW4geW91ciBrZXJuZWwgbGF5ZXIuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gYW5kIGRvbid0IGp1c3QKLSAgICAgICAgICAgICAgICAgICAgcmVuYW1lIGl0LgotICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIG5lZWRzIGFuIGV4aXN0aW5nIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZnJvbSB3aGljaCB0byB3b3JrLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy1hLWRlZmNvbmZpZy1maWxlJz4KLSAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhJm5ic3A7Jm5ic3A7PGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IEZpbGU8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGlzIHNpbXBseSBhCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiByZW5hbWVkIHRvICJkZWZjb25maWciLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICB0byByZXRhaW4gYSBrbm93biBzZXQgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb25zIGZyb20gd2hpY2ggdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gZHJhdyB0byBjcmVhdGUgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBPdXQtb2YtdGhlLWJveCwgdGhlIFlvY3RvIFByb2plY3QgbmV2ZXIgc2hpcHMgYQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBmaW5hbAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgdXNlZCB0byBjb25maWd1cmUgdGhlCi0gICAgICAgICAgICAgICAgICAgIGtlcm5lbC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiwgc3RhcnQgd2l0aCBhCi0gICAgICAgICAgICAgICAgY29tcGxldGUsIHdvcmtpbmcgTGludXgga2VybmVsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmaWxlLgotICAgICAgICAgICAgICAgIENvcHkgdGhhdCBmaWxlIHRvIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiB5b3VyIGxheWVyJ3MKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIGFuZCByZW5hbWUKLSAgICAgICAgICAgICAgICB0aGUgY29waWVkIGZpbGUgdG8gImRlZmNvbmZpZyIuCi0gICAgICAgICAgICAgICAgVGhlbiwgYWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8gdGhlIGxpbnV4LXlvY3RvCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgaW4geW91ciBsYXllcjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLSAgICAgU1JDX1VSSSArPSAiZmlsZTovL2RlZmNvbmZpZyIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHRlbGxzIHRoZSBidWlsZCBzeXN0ZW0gaG93IHRvIHNlYXJjaCBmb3IgdGhlIGZpbGUsIHdoaWxlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgZXh0ZW5kcyB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIChzZWFyY2ggZGlyZWN0b3JpZXMpIHRvIGluY2x1ZGUgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UE59PC9maWxlbmFtZT4gZGlyZWN0b3J5IHlvdSBjcmVhdGVkIHRvIGhvbGQgdGhlCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2VzLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIGNvbmZpZ3VyYXRpb25zIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGJlZm9yZSBhcHBseWluZyBhbnkKLSAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBjb25maWd1cmF0aW9uIGZyYWdtZW50cy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGtlcm5lbCBjb25maWd1cmF0aW9uIGlzIGEgY29tYmluYXRpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGluIHRoZSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZSBhbmQgYW55IGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIHlvdSBwcm92aWRlLgotICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplIHRoYXQgaWYgeW91IGhhdmUgYW55IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRzLCB0aGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlc2Ugb24gdG9wIG9mIGFuZAotICAgICAgICAgICAgICAgICAgICBhZnRlciBhcHBseWluZyB0aGUgZXhpc3RpbmcgZGVmY29uZmlnIGZpbGUgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NoYW5naW5nLXRoZS1jb25maWd1cmF0aW9uJz5DaGFuZ2luZyB0aGUgQ29uZmlndXJhdGlvbjwvdWxpbms+IgotICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz5HZW5lcmF0aW5nIENvbmZpZ3VyYXRpb24gRmlsZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9ucywgYm90aCBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICBNYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Ci0gICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZyYWdtZW50cyBhcmUgc2ltcGx5IGtlcm5lbCBvcHRpb25zIHRoYXQgYXBwZWFyIGluIGEgZmlsZQotICAgICAgICAgICAgICAgIHBsYWNlZCB3aGVyZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gZmluZCBhbmQgYXBwbHkgdGhlbS4KLSAgICAgICAgICAgICAgICBTeW50YWN0aWNhbGx5LCB0aGUgY29uZmlndXJhdGlvbiBzdGF0ZW1lbnQgaXMgaWRlbnRpY2FsIHRvIHdoYXQgd291bGQgYXBwZWFyCi0gICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgdG1wL3dvcmsvPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi1wb2t5LWxpbnV4L2xpbnV4LXlvY3RvLTxyZXBsYWNlYWJsZT5yZWxlYXNlX3NwZWNpZmljX3N0cmluZzwvcmVwbGFjZWFibGU+L2xpbnV4LTxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmJ1aWxkX3R5cGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSXQgaXMgc2ltcGxlIHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlzc3VpbmcgdGhlIGZvbGxvd2luZyBmcm9tIHRoZSBzaGVsbCBjcmVhdGVzIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudAotICAgICAgICAgICAgICAgIGZpbGUgbmFtZWQgPGZpbGVuYW1lPm15X3NtcC5jZmc8L2ZpbGVuYW1lPiB0aGF0IGVuYWJsZXMgbXVsdGktcHJvY2Vzc29yIHN1cHBvcnQKLSAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIGtlcm5lbDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZWNobyAiQ09ORklHX1NNUD15IiA+PiBteV9zbXAuY2ZnCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBBbGwgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlcyBtdXN0IHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jZmc8L2ZpbGVuYW1lPiBleHRlbnNpb24gaW4gb3JkZXIgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHJlY29nbml6ZSB0aGVtIGFzIGEKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdoZXJlIGRvIHlvdSBwdXQgeW91ciBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGVzPwotICAgICAgICAgICAgICAgIFlvdSBjYW4gcGxhY2UgdGhlc2UgZmlsZXMgaW4gdGhlIHNhbWUgYXJlYSBwb2ludGVkIHRvIGJ5Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwaWNrcyB1cCB0aGUgY29uZmlndXJhdGlvbiBhbmQKLSAgICAgICAgICAgICAgICBhZGRzIGl0IHRvIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgYSBzZXQgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zCi0gICAgICAgICAgICAgICAgaW4gYSBmaWxlIGNhbGxlZCA8ZmlsZW5hbWU+bXljb25maWcuY2ZnPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgSWYgeW91IHB1dCB0aGF0IGZpbGUgaW5zaWRlIGEgZGlyZWN0b3J5IG5hbWVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4gdGhhdCByZXNpZGVzIGluIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFzIHRoZSBrZXJuZWwncyBhcHBlbmQgZmlsZSBhbmQgdGhlbiBhZGQgYQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IHN1Y2ggYXMgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgIHRvIHRoZSBrZXJuZWwncyBhcHBlbmQgZmlsZSwgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zCi0gICAgICAgICAgICAgICAgd2lsbCBiZSBwaWNrZWQgdXAgYW5kIGFwcGxpZWQgd2hlbiB0aGUga2VybmVsIGlzIGJ1aWx0LgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSArPSAiZmlsZTovL215Y29uZmlnLmNmZyIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB5b3UgY2FuIGdyb3VwIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgaW50byBtdWx0aXBsZSBmaWxlcyBhbmQKLSAgICAgICAgICAgICAgICBuYW1lIHRoZW0gYWxsIGluIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgZ3JvdXAgc2VwYXJhdGUgY29uZmlndXJhdGlvbnMgc3BlY2lmaWNhbGx5IGZvciBFdGhlcm5ldCBhbmQgZ3JhcGhpY3MKLSAgICAgICAgICAgICAgICBpbnRvIHRoZWlyIG93biBmaWxlcyBhbmQgYWRkIHRob3NlIGJ5IHVzaW5nIGEgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgbGlrZSB0aGUKLSAgICAgICAgICAgICAgICBmb2xsb3dpbmcgaW4geW91ciBhcHBlbmQgZmlsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9teWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL2V0aC5jZmcgXAotICAgICAgICAgICAgZmlsZTovL2dmeC5jZmciCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2ZpbmUtdHVuaW5nLXRoZS1rZXJuZWwtY29uZmlndXJhdGlvbi1maWxlJz4KLSAgICAgICAgICAgIDx0aXRsZT5GaW5lLVR1bmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gRmlsZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSBzdXJlIHRoZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgaXMgYXMgbGVhbiBvciBlZmZpY2llbnQgYXMKLSAgICAgICAgICAgICAgICBwb3NzaWJsZSBieSByZWFkaW5nIHRoZSBvdXRwdXQgb2YgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZyYWdtZW50IGF1ZGl0LAotICAgICAgICAgICAgICAgIG5vdGluZyBhbnkgaXNzdWVzLCBtYWtpbmcgY2hhbmdlcyB0byBjb3JyZWN0IHRoZSBpc3N1ZXMsIGFuZCB0aGVuIHJlcGVhdGluZy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXMgcGFydCBvZiB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MsIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrIHJ1bnMuCi0gICAgICAgICAgICAgICAgVGhpcyB0YXNrIHZhbGlkYXRlcyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYnkgY2hlY2tpbmcgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGFnYWluc3QgdGhlIGlucHV0IGZpbGVzLgotICAgICAgICAgICAgICAgIER1cmluZyB0aGUgY2hlY2ssIHRoZSB0YXNrIHByb2R1Y2VzIHdhcm5pbmcgbWVzc2FnZXMgZm9yIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICBpc3N1ZXM6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlcXVlc3RlZCBvcHRpb25zIHRoYXQgZGlkIG5vdCBtYWtlIHRoZSBmaW5hbAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29uZmlndXJhdGlvbiBpdGVtcyB0aGF0IGFwcGVhciB0d2ljZSBpbiB0aGUgc2FtZQotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbmZpZ3VyYXRpb24gaXRlbXMgdGFnZ2VkIGFzICJyZXF1aXJlZCIgdGhhdCB3ZXJlIG92ZXJyaWRkZW4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgYm9hcmQgb3ZlcnJpZGVzIGEgbm9uLWJvYXJkIHNwZWNpZmljIG9wdGlvbi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxpc3RlZCBvcHRpb25zIG5vdCB2YWxpZCBmb3IgdGhlIGtlcm5lbCBiZWluZyBwcm9jZXNzZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIG9wdGlvbiBkb2VzIG5vdCBhcHBlYXIgYW55d2hlcmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzayBjYW4KLSAgICAgICAgICAgICAgICAgICAgYWxzbyBvcHRpb25hbGx5IHJlcG9ydCBpZiBhbiBvcHRpb24gaXMgb3ZlcnJpZGRlbiBkdXJpbmcKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBlYWNoIG91dHB1dCB3YXJuaW5nLCBhIG1lc3NhZ2UgcG9pbnRzIHRvIHRoZSBmaWxlCi0gICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyBhIGxpc3Qgb2YgdGhlIG9wdGlvbnMgYW5kIGEgcG9pbnRlciB0byB0aGUKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50IHRoYXQgZGVmaW5lcyB0aGVtLgotICAgICAgICAgICAgICAgIENvbGxlY3RpdmVseSwgdGhlIGZpbGVzIGFyZSB0aGUga2V5IHRvIHN0cmVhbWxpbmluZyB0aGUKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBzdHJlYW1saW5lIHRoZSBjb25maWd1cmF0aW9uLCBkbyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlN0YXJ0IHdpdGggYSBmdWxsIGNvbmZpZ3VyYXRpb24gdGhhdCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIGtub3cgd29ya3MgLSBpdCBidWlsZHMgYW5kIGJvb3RzIHN1Y2Nlc3NmdWxseS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHdpbGwgYmUgeW91ciBiYXNlbGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2VwYXJhdGVseSBydW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ21lPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFza3MuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRha2UgdGhlIHJlc3VsdGluZyBsaXN0IG9mIGZpbGVzIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzawotICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgYW5kIGRvIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJvcCB2YWx1ZXMgdGhhdCBhcmUgcmVkZWZpbmVkIGluIHRoZSBmcmFnbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZG8gbm90IGNoYW5nZSB0aGUgZmluYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emUgYW5kIHBvdGVudGlhbGx5IGRyb3AgdmFsdWVzIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0aGF0IG92ZXJyaWRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emUgYW5kIHBvdGVudGlhbGx5IHJlbW92ZSBub24tYm9hcmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgb3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUgcmVwZWF0ZWQgYW5kIGludmFsaWQgb3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgd29ya2VkIHRocm91Z2ggdGhlIG91dHB1dCBvZiB0aGUga2VybmVsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGF1ZGl0LCB5b3UgY2FuIHJlLXJ1biB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnbWU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSByZXN1bHRzIG9mIHlvdXIgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG1vcmUgaXNzdWVzLCB5b3UgY2FuIGRlYWwgd2l0aCB0aGVtIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVseSB3b3JraW5nIHRocm91Z2ggc3RlcHMgdHdvIHRocm91Z2ggZm91ciBldmVudHVhbGx5IHlpZWxkcwotICAgICAgICAgICAgICAgIGEgbWluaW1hbCwgc3RyZWFtbGluZWQgY29uZmlndXJhdGlvbiBmaWxlLgotICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIGJlc3QgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiwgeW91IGNhbiBidWlsZCB0aGUgTGludXgKLSAgICAgICAgICAgICAgICBZb2N0byBrZXJuZWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZGV0ZXJtaW5pbmctaGFyZHdhcmUtYW5kLW5vbi1oYXJkd2FyZS1mZWF0dXJlcy1mb3ItdGhlLWtlcm5lbC1jb25maWd1cmF0aW9uLWF1ZGl0LXBoYXNlJz4KLSAgICAgICAgICAgIDx0aXRsZT5EZXRlcm1pbmluZyBIYXJkd2FyZSBhbmQgTm9uLUhhcmR3YXJlIEZlYXR1cmVzIGZvciB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gQXVkaXQgUGhhc2U8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHBhcnQgb2YgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGF1ZGl0Ci0gICAgICAgICAgICAgICAgcGhhc2UgdGhhdCBtb3N0IGRldmVsb3BlcnMgY2FuIGlnbm9yZS4KLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBwYXJ0IG9mIHRoZSBhdWRpdCBwaGFzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaW5hbAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhcmUgY29tcGFyZWQgYWdhaW5zdCB0aGUKLSAgICAgICAgICAgICAgICBmcmFnbWVudHMgc3BlY2lmaWVkIGJ5IHRoZSBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgVGhlc2UgZnJhZ21lbnRzIGNhbiBiZSBzeXN0ZW0gZnJhZ21lbnRzLCBkaXN0cm8gZnJhZ21lbnRzLAotICAgICAgICAgICAgICAgIG9yIHVzZXIgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGVpciBvcmlnaW4sIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgd2FybnMgdGhlIHVzZXIgaWYgYSBzcGVjaWZpYyBvcHRpb24gaXMgbm90IGluY2x1ZGVkIGluIHRoZQotICAgICAgICAgICAgICAgIGZpbmFsIGtlcm5lbCBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBub3Qgb3ZlcndoZWxtIHRoZSB1c2VyIHdpdGggY29uZmlndXJhdGlvbiB3YXJuaW5ncywKLSAgICAgICAgICAgICAgICBieSBkZWZhdWx0IHRoZSBzeXN0ZW0gb25seSByZXBvcnRzIG9uIG1pc3NpbmcgImhhcmR3YXJlIgotICAgICAgICAgICAgICAgIG9wdGlvbnMgYmVjYXVzZSBhIG1pc3NpbmcgaGFyZHdhcmUgb3B0aW9uIGNvdWxkIG1lYW4gYSBib290Ci0gICAgICAgICAgICAgICAgZmFpbHVyZSBvciB0aGF0IGltcG9ydGFudCBoYXJkd2FyZSBpcyBub3QgYXZhaWxhYmxlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBnaXZlbiBvcHRpb24gaXMgImhhcmR3YXJlIiBvcgotICAgICAgICAgICAgICAgICJub24taGFyZHdhcmUiLCB0aGUga2VybmVsIE1ldGFkYXRhIGNvbnRhaW5zIGZpbGVzIHRoYXQKLSAgICAgICAgICAgICAgICBjbGFzc2lmeSBpbmRpdmlkdWFsIG9yIGdyb3VwcyBvZiBvcHRpb25zIGFzIGVpdGhlciBoYXJkd2FyZQotICAgICAgICAgICAgICAgIG9yIG5vbi1oYXJkd2FyZS4KLSAgICAgICAgICAgICAgICBUbyBiZXR0ZXIgc2hvdyB0aGlzLCBjb25zaWRlciBhIHNpdHVhdGlvbiB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGtlcm5lbCBjYWNoZSBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpbGVzOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAga2VybmVsLWNhY2hlL2ZlYXR1cmVzL2RybS1wc2IvaGFyZHdhcmUuY2ZnCi0gICAgIGtlcm5lbC1jYWNoZS9mZWF0dXJlcy9rZ2RiL2hhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2UvaGFyZHdhcmUuY2ZnCi0gICAgIGtlcm5lbC1jYWNoZS9ic3AvbXRpLW1hbHRhMzIvaGFyZHdhcmUuY2ZnCi0gICAgIGtlcm5lbC1jYWNoZS9ic3AvZnNsLW1wYzgzMTVlLXJkYi9oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2JzcC9xZW11LXBwYzMyL2hhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUvYnNwL3FlbXVhcm1hOS9oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2JzcC9tdGktbWFsdGE2NC9oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2JzcC9hcm0tdmVyc2F0aWxlLTkyNmVqcy9oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2JzcC9jb21tb24tcGMvaGFyZHdhcmUuY2ZnCi0gICAgIGtlcm5lbC1jYWNoZS9ic3AvY29tbW9uLXBjLTY0L2hhcmR3YXJlLmNmZwotICAgICBrZXJuZWwtY2FjaGUvZmVhdHVyZXMvcmZraWxsL25vbi1oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2t0eXBlcy9iYXNlL25vbi1oYXJkd2FyZS5jZmcKLSAgICAga2VybmVsLWNhY2hlL2ZlYXR1cmVzL2F1ZnMvbm9uLWhhcmR3YXJlLmtjZgotICAgICBrZXJuZWwtY2FjaGUvZmVhdHVyZXMvb2NmL25vbi1oYXJkd2FyZS5rY2YKLSAgICAga2VybmVsLWNhY2hlL2t0eXBlcy9iYXNlL25vbi1oYXJkd2FyZS5rY2YKLSAgICAga2VybmVsLWNhY2hlL2t0eXBlcy9iYXNlL2hhcmR3YXJlLmtjZgotICAgICBrZXJuZWwtY2FjaGUvYnNwL3FlbXUtcHBjMzIvaGFyZHdhcmUua2NmCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcm92aWRlcyBleHBsYW5hdGlvbnMgZm9yIHRoZSB2YXJpb3VzCi0gICAgICAgICAgICAgICAgZmlsZXM6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2Yga2VybmVsIEtjb25maWcgZmlsZXMgdGhhdCBjb250YWluCi0gICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBvcHRpb25zIG9ubHkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ub24taGFyZHdhcmUua2NmPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGtlcm5lbCBLY29uZmlnIGZpbGVzIHRoYXQgY29udGFpbgotICAgICAgICAgICAgICAgICAgICAgICAgbm9uLWhhcmR3YXJlIG9wdGlvbnMgb25seS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmhhcmR3YXJlLmNmZzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT05GSUdfPC9maWxlbmFtZT4gb3B0aW9ucyB0aGF0IGFyZSBoYXJkd2FyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhleSBhcmUgd2l0aGluIGEgS2NvbmZpZwotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBzcGVjaWZpZWQgYnkgYSBoYXJkd2FyZSBvciBub24taGFyZHdhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIEtjb25maWcgZmlsZSAoaS5lLiA8ZmlsZW5hbWU+aGFyZHdhcmUua2NmPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub24taGFyZHdhcmUua2NmPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmNmZzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT05GSUdfPC9maWxlbmFtZT4gb3B0aW9ucyB0aGF0IGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgbm90IGhhcmR3YXJlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSBLY29uZmlnIGZpbGUgc3BlY2lmaWVkIGJ5IGEgaGFyZHdhcmUgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vbi1oYXJkd2FyZSBLY29uZmlnIGZpbGUgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5vbi1oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc3BlY2lmaWMgZXhhbXBsZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLWNhY2hlL2JzcC9tdGktbWFsdGEzMi9oYXJkd2FyZS5jZmc8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIENPTkZJR19TRVJJQUxfODI1MAotICAgICBDT05GSUdfU0VSSUFMXzgyNTBfQ09OU09MRQotICAgICBDT05GSUdfU0VSSUFMXzgyNTBfTlJfVUFSVFMKLSAgICAgQ09ORklHX1NFUklBTF84MjUwX1BDSQotICAgICBDT05GSUdfU0VSSUFMX0NPUkUKLSAgICAgQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEUKLSAgICAgQ09ORklHX1ZHQV9BUkIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGF1ZGl0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB0aGVzZQotICAgICAgICAgICAgICAgIGZpbGVzIChoZW5jZSB0aGUgbmFtZXMgbXVzdCBiZSBleGFjdGx5IHRoZSBvbmVzIGRpc2N1c3NlZCBoZXJlKSwKLSAgICAgICAgICAgICAgICBhbmQgdXNlcyB0aGVtIGFzIGlucHV0cyB3aGVuIGdlbmVyYXRpbmcgd2FybmluZ3MgYWJvdXQgdGhlCi0gICAgICAgICAgICAgICAgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBIHVzZXItc3BlY2lmaWVkIGtlcm5lbCBNZXRhZGF0YSByZXBvc2l0b3J5LCBvciByZWNpcGUgc3BhY2UKLSAgICAgICAgICAgICAgICBmZWF0dXJlLCBjYW4gdXNlIHRoZXNlIHNhbWUgZmlsZXMgdG8gY2xhc3NpZnkgb3B0aW9ucyB0aGF0IGFyZQotICAgICAgICAgICAgICAgIGZvdW5kIHdpdGhpbiBpdHMgPGZpbGVuYW1lPi5jZmc8L2ZpbGVuYW1lPiBmaWxlcyBhcyBoYXJkd2FyZQotICAgICAgICAgICAgICAgIG9yIG5vbi1oYXJkd2FyZSwgdG8gcHJldmVudCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBmcm9tCi0gICAgICAgICAgICAgICAgcHJvZHVjaW5nIGFuIGVycm9yIG9yIHdhcm5pbmcgd2hlbiBhbiBvcHRpb24gaXMgbm90IGluIHRoZQotICAgICAgICAgICAgICAgIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJwYXRjaGluZy10aGUta2VybmVsIj4KLSAgICAgICAgPHRpdGxlPlBhdGNoaW5nIHRoZSBLZXJuZWw8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgUGF0Y2hpbmcgdGhlIGtlcm5lbCBpbnZvbHZlcyBjaGFuZ2luZyBvciBhZGRpbmcgY29uZmlndXJhdGlvbnMgdG8gYW4gZXhpc3Rpbmcga2VybmVsLAotICAgICAgICAgICAgY2hhbmdpbmcgb3IgYWRkaW5nIHJlY2lwZXMgdG8gdGhlIGtlcm5lbCB0aGF0IGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcywKLSAgICAgICAgICAgIG9yIGV2ZW4gYWx0ZXJpbmcgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZi4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0Ci0gICAgICAgICAgICAgICAgZm91bmQgaW4gdGhlIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgICAgICAgICAgdW5kZXIgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiB0byBtYW5hZ2Uga2VybmVsIHBhdGNoZXMgYW5kIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICAgICAgU2VlIHRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjbWFuYWdpbmcta2VybmVsLXBhdGNoZXMtYW5kLWNvbmZpZy1pdGVtcy13aXRoLXlvY3RvLWtlcm5lbCc+TWFuYWdpbmcga2VybmVsIFBhdGNoZXMgYW5kIENvbmZpZyBJdGVtcyB3aXRoIHlvY3RvLWtlcm5lbDwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZSBmb3IKLSAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLjwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBleGFtcGxlIGNyZWF0ZXMgYSBzaW1wbGUgcGF0Y2ggYnkgYWRkaW5nIHNvbWUgUUVNVSBlbXVsYXRvciBjb25zb2xlCi0gICAgICAgICAgICBvdXRwdXQgYXQgYm9vdCB0aW1lIHRocm91Z2ggPGZpbGVuYW1lPnByaW50azwvZmlsZW5hbWU+IHN0YXRlbWVudHMgaW4gdGhlIGtlcm5lbCdzCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBzb3VyY2UgY29kZSBmaWxlLgotICAgICAgICAgICAgQXBwbHlpbmcgdGhlIHBhdGNoIGFuZCBib290aW5nIHRoZSBtb2RpZmllZCBpbWFnZSBjYXVzZXMgdGhlIGFkZGVkCi0gICAgICAgICAgICBtZXNzYWdlcyB0byBhcHBlYXIgb24gdGhlIGVtdWxhdG9yJ3MgY29uc29sZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGV4YW1wbGUgYXNzdW1lcyBhIGNsZWFuIGJ1aWxkIGV4aXN0cyBmb3IgdGhlIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4KLSAgICAgICAgICAgIG1hY2hpbmUgaW4gYQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiBpcwotICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gYW5kIGlzIGxvY2F0ZWQgaW4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIHRoZSBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDMuNCBrZXJuZWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFsc28sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHBhdGNoaW5nIHRoZSBrZXJuZWwsIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjYXBwbHlpbmctcGF0Y2hlcyc+QXBwbHlpbmcgUGF0Y2hlczwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0ZS1hLWxheWVyLWZvci15b3VyLWNoYW5nZXMnPgotICAgICAgICAgICAgPHRpdGxlPkNyZWF0ZSBhIExheWVyIGZvciB5b3VyIENoYW5nZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZmlyc3Qgc3RlcCBpcyB0byBjcmVhdGUgYSBsYXllciBzbyB5b3UgY2FuIGlzb2xhdGUgeW91cgotICAgICAgICAgICAgICAgIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQKLSAgICAgICAgICAgICAgICB0byBjcmVhdGUgdGhlIGxheWVyLCB0aGlzIGV4YW1wbGUgc3RlcHMgdGhyb3VnaCB0aGUgcHJvY2VzcwotICAgICAgICAgICAgICAgIGJ5IGhhbmQuCi0gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgaW5mb3JtYXRpb24gb24gdGhlIHNjcmlwdCB0aGF0IGNyZWF0ZXMgYSBnZW5lcmFsCi0gICAgICAgICAgICAgICAgbGF5ZXIsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS15b2N0by1sYXllci1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgeW9jdG8tbGF5ZXIgU2NyaXB0PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGVzZSB0d28gY29tbWFuZHMgY3JlYXRlIGEgZGlyZWN0b3J5IHlvdSBjYW4gdXNlIGZvciB5b3VyCi0gICAgICAgICAgICAgICAgbGF5ZXI6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vcG9reQotICAgICAkIG1rZGlyIG1ldGEtbXlsYXllcgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBDcmVhdGluZyBhIGRpcmVjdG9yeSB0aGF0IGZvbGxvd3MgdGhlIFlvY3RvIFByb2plY3QgbGF5ZXIgbmFtaW5nCi0gICAgICAgICAgICAgICAgY29udmVudGlvbnMgc2V0cyB1cCB0aGUgbGF5ZXIgZm9yIHlvdXIgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICBUaGUgbGF5ZXIgaXMgd2hlcmUgeW91IHBsYWNlIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlcywgYXBwZW5kCi0gICAgICAgICAgICAgICAgZmlsZXMsIGFuZCBwYXRjaCBmaWxlcy4KLSAgICAgICAgICAgICAgICBUbyBsZWFybiBtb3JlIGFib3V0IGNyZWF0aW5nIGEgbGF5ZXIgYW5kIGZpbGxpbmcgaXQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICBmaWxlcyB5b3UgbmVlZCwgc2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nCi0gICAgICAgICAgICAgICAgYW5kIENyZWF0aW5nIExheWVyczwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZmluZGluZy10aGUta2VybmVsLXNvdXJjZS1jb2RlJz4KLSAgICAgICAgICAgIDx0aXRsZT5GaW5kaW5nIHRoZSBLZXJuZWwgU291cmNlIENvZGU8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBFYWNoIHRpbWUgeW91IGJ1aWxkIGEga2VybmVsIGltYWdlLCB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGlzIGZldGNoZWQKLSAgICAgICAgICAgICAgICBhbmQgdW5wYWNrZWQgaW50byB0aGUgZm9sbG93aW5nIGRpcmVjdG9yeToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICR7U30vbGludXgKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0nZmluZGluZy10aGUtdGVtcG9yYXJ5LXNvdXJjZS1jb2RlJz5GaW5kaW5nIFRlbXBvcmFyeSBTb3VyY2UgQ29kZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBhbmQgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPiB2YXJpYWJsZQotICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHNvdXJjZSBpcyBrZXB0IGR1cmluZyBhIGJ1aWxkLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB3ZSBhcmUgZ29pbmcgdG8gcGF0Y2ggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluaXQvY2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgYnkgYWRkaW5nIHNvbWUgc2ltcGxlIGNvbnNvbGUgPGZpbGVuYW1lPnByaW50azwvZmlsZW5hbWU+IHN0YXRlbWVudHMgdGhhdCB3ZSBjYW4KLSAgICAgICAgICAgICAgICBzZWUgd2hlbiB3ZSBib290IHRoZSBpbWFnZSB1c2luZyBRRU1VLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXRoZS1wYXRjaCc+Ci0gICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFBhdGNoPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVHdvIG1ldGhvZHMgZXhpc3QgYnkgd2hpY2ggeW91IGNhbiBjcmVhdGUgdGhlIHBhdGNoOgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3VzaW5nLWRldnRvb2wtaW4teW91ci13b3JrZmxvdyc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjwvbGluaz4gYW5kCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctYS1xdWlsdC13b3JrZmxvdyc+UXVpbHQ8L2xpbms+LgotICAgICAgICAgICAgICAgIEZvciBrZXJuZWwgcGF0Y2hlcywgdGhlIEdpdCB3b3JrZmxvdyBpcyBtb3JlIGFwcHJvcHJpYXRlLgotICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBhc3N1bWVzIHRoZSBHaXQgd29ya2Zsb3cgYW5kIHNob3dzIHRoZSBzdGVwcyBzcGVjaWZpYyB0bwotICAgICAgICAgICAgICAgIHRoaXMgZXhhbXBsZS4KLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2hhbmdlIHRoZSB3b3JraW5nIGRpcmVjdG9yeTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlIHRvIHdoZXJlIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgaXMgYmVmb3JlIG1ha2luZwotICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBlZGl0cyB0byB0aGUgPGZpbGVuYW1lPmNhbGlicmF0ZS5jPC9maWxlbmFtZT4gZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+L3Bva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2xpbnV4LXlvY3RvLSR7UFZ9LSR7UFJ9L2xpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHlvdSBhcmUgd29ya2luZyBpbiBhbiBlc3RhYmxpc2hlZCBHaXQgcmVwb3NpdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBtdXN0IGJlIGluIHRoaXMgZGlyZWN0b3J5IGluIG9yZGVyIHRvIGNvbW1pdCB5b3VyIGNoYW5nZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjcmVhdGUgdGhlIHBhdGNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT5UaGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPiB2YXJpYWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnQgdGhlIHZlcnNpb24gYW5kIHJldmlzaW9uIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+IHZhcmlhYmxlIGluY2x1ZGVzIHRoZSBHaXQgbWV0YSBhbmQgbWFjaGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hlcywgd2hpY2ggbWFrZSB0aGUgZGlyZWN0b3J5IG5hbWUgbG9uZ2VyIHRoYW4geW91IG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVkaXQgdGhlIHNvdXJjZSBmaWxlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZSA8ZmlsZW5hbWU+aW5pdC9jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IGZpbGUgdG8gaGF2ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjaGFuZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICB2b2lkIGNhbGlicmF0ZV9kZWxheSh2b2lkKQotICAgICB7Ci0gICAgICAgICB1bnNpZ25lZCBsb25nIGxwajsKLSAgICAgICAgIHN0YXRpYyBib29sIHByaW50ZWQ7Ci0gICAgICAgICBpbnQgdGhpc19jcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7Ci0KLSAgICAgICAgIHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7Ci0gICAgICAgICBwcmludGsoIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiIpOwotICAgICAgICAgcHJpbnRrKCIqICAgICAgICBIRUxMTyBZT0NUTyBLRVJORUwgICAgICAgICAqXG4iKTsKLSAgICAgICAgIHByaW50aygiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIik7Ci0gICAgICAgICBwcmludGsoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOwotCi0gICAgIAlpZiAocGVyX2NwdShjcHVfbG9vcHNfcGVyX2ppZmZ5LCB0aGlzX2NwdSkpIHsKLSAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TdGFnZSBhbmQgY29tbWl0IHlvdXIgY2hhbmdlczwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgR2l0IGNvbW1hbmRzIGRpc3BsYXkgdGhlIG1vZGlmaWVkIGZpbGUsIHN0YWdlIGl0LCBhbmQgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0IHRoZSBmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBzdGF0dXMKLSAgICAgJCBnaXQgYWRkIGluaXQvY2FsaWJyYXRlLmMKLSAgICAgJCBnaXQgY29tbWl0IC1tICJjYWxpYnJhdGU6IEFkZCBwcmludGsgZXhhbXBsZSIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5HZW5lcmF0ZSB0aGUgcGF0Y2ggZmlsZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBHaXQgY29tbWFuZCBjcmVhdGVzIHRoZSBhIHBhdGNoIGZpbGUgbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4wMDAxLWNhbGlicmF0ZS1BZGQtcHJpbnRrLWV4YW1wbGUucGF0Y2g8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLTEKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc2V0LXVwLXlvdXItbGF5ZXItZm9yLXRoZS1idWlsZCc+Ci0gICAgICAgICAgICA8dGl0bGU+U2V0IFVwIFlvdXIgTGF5ZXIgZm9yIHRoZSBCdWlsZDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPlRoZXNlIHN0ZXBzIGdldCB5b3VyIGxheWVyIHNldCB1cCBmb3IgdGhlIGJ1aWxkOgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgYWRkaXRpb25hbCBzdHJ1Y3R1cmU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSB0aGUgYWRkaXRpb25hbCBsYXllciBzdHJ1Y3R1cmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2Qgfi9wb2t5L21ldGEtbXlsYXllcgotICAgICAkIG1rZGlyIGNvbmYKLSAgICAgJCBta2RpciByZWNpcGVzLWtlcm5lbAotICAgICAkIG1rZGlyIHJlY2lwZXMta2VybmVsL2xpbnV4Ci0gICAgICQgbWtkaXIgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IGhvbGRzIHlvdXIgY29uZmlndXJhdGlvbiBmaWxlcywgd2hpbGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4gZGlyZWN0b3J5IGhvbGRzIHlvdXIgYXBwZW5kIGZpbGUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBwYXRjaCBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0ZSB0aGUgbGF5ZXIgY29uZmlndXJhdGlvbiBmaWxlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBNb3ZlIHRvIHRoZSA8ZmlsZW5hbWU+bWV0YS1teWxheWVyL2NvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgYW5kIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZSBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYWRkIHRvIEJCUEFUSAotICAgICBCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKLQotICAgICAjIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUwotICAgICBCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiIFwKLSAgICAgICAgICAgICAgICAgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKLQotICAgICBCQkZJTEVfQ09MTEVDVElPTlMgKz0gIm15bGF5ZXIiCi0gICAgIEJCRklMRV9QQVRURVJOX215bGF5ZXIgPSAiXiR7TEFZRVJESVJ9LyIKLSAgICAgQkJGSUxFX1BSSU9SSVRZX215bGF5ZXIgPSAiNSIKLSAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTm90aWNlIDxmaWxlbmFtZT5teWxheWVyPC9maWxlbmFtZT4gYXMgcGFydCBvZiB0aGUgbGFzdCB0aHJlZQotICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q3JlYXRlIHRoZSBrZXJuZWwgcmVjaXBlIGFwcGVuZCBmaWxlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBNb3ZlIHRvIHRoZSA8ZmlsZW5hbWU+bWV0YS1teWxheWVyL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4gZGlyZWN0b3J5IGFuZCBjcmVhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG9fMy40LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCi0KLSAgICAgU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY2FsaWJyYXRlLUFkZC1wcmludGstZXhhbXBsZS5wYXRjaCIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgZW5hYmxlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGZpbmQgdGhlIHBhdGNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBhcHBlbmQgZmlsZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlB1dCB0aGUgcGF0Y2ggZmlsZSBpbiB5b3VyIGxheWVyPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBNb3ZlIHRoZSA8ZmlsZW5hbWU+MDAwMS1jYWxpYnJhdGUtQWRkLXByaW50ay1leGFtcGxlLnBhdGNoPC9maWxlbmFtZT4gZmlsZSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG88L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc2V0LXVwLWZvci10aGUtYnVpbGQnPgotICAgICAgICAgICAgPHRpdGxlPlNldCBVcCBmb3IgdGhlIEJ1aWxkPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRG8gdGhlIGZvbGxvd2luZyB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIHBhcmFtZXRlcnMgYXJlIHNldCB1cCBmb3IgdGhlIGV4YW1wbGUuCi0gICAgICAgICAgICAgICAgT25jZSB5b3Ugc2V0IHVwIHRoZXNlIGJ1aWxkIHBhcmFtZXRlcnMsIHRoZXkgZG8gbm90IGhhdmUgdG8gY2hhbmdlIHVubGVzcyB5b3UKLSAgICAgICAgICAgICAgICBjaGFuZ2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgb2YgdGhlIG1hY2hpbmUgeW91IGFyZSBidWlsZGluZzoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIGZvciB0aGUgY29ycmVjdCB0YXJnZXQgYXJjaGl0ZWN0dXJlOjwvZW1waGFzaXM+IFlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24gd2l0aGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSB1c2VkIHdoZW4gYnVpbGRpbmcgdGhlIExpbnV4IGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gaXMgc2V0IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LCB3aGljaCBzcGVjaWZpZXMgYSAzMi1iaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IEFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IG1hY2hpbmUgc3VpdGFibGUgZm9yIHRoZSBRRU1VIGVtdWxhdG9yLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPklkZW50aWZ5IHlvdXIgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXllcjo8L2VtcGhhc2lzPiBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkxBWUVSUyc+PGZpbGVuYW1lPkJCTEFZRVJTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9idWlsZC9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IG5lZWRzIHRvIGhhdmUgdGhlIHBhdGggdG8geW91ciBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+IGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGNvbnRhaW5zIHBhdGhzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgQWRkIHRoZSBwYXRoIHRvIHlvdXIgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+IGxvY2F0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBCQkxBWUVSUyA/PSAiIFwKLSAgICAgICAkSE9NRS9wb2t5L21ldGEgXAotICAgICAgICRIT01FL3Bva3kvbWV0YS1wb2t5IFwKLSAgICAgICAkSE9NRS9wb2t5L21ldGEteW9jdG8tYnNwIFwKLSAgICAgICAkSE9NRS9wb2t5L21ldGEtbXlsYXllciBcCi0gICAgICAgIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkLXRoZS1tb2RpZmllZC1xZW11LWtlcm5lbC1pbWFnZSc+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGQgdGhlIE1vZGlmaWVkIFFFTVUgS2VybmVsIEltYWdlPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBidWlsZCB5b3VyIG1vZGlmaWVkIGtlcm5lbCBpbWFnZToKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QmUgc3VyZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50IGlzIGluaXRpYWxpemVkPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGVudmlyb25tZW50IHNob3VsZCBiZSBzZXQgdXAgc2luY2UgeW91IHByZXZpb3VzbHkgc291cmNlZAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIGl0IGlzIG5vdCwgc291cmNlIHRoZSBzY3JpcHQgYWdhaW4gZnJvbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vcG9reQotICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2xlYW4gdXA8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gY2xlYW4gdGhlIHNoYXJlZCBzdGF0ZSBvdXQgYnkgdXNpbmcgQml0QmFrZQotICAgICAgICAgICAgICAgICAgICAgICAgdG8gcnVuIGZyb20gd2l0aGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY2xlYW5zc3RhdGUnPjxmaWxlbmFtZT5kb19jbGVhbnNzdGF0ZTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1jIGNsZWFuc3N0YXRlIGxpbnV4LXlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlciByZW1vdmUgYW55IGZpbGVzIGJ5IGhhbmQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluc2lkZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzIHVzZSB0aGUgdmFyaW91cyBCaXRCYWtlIGNsZWFuIHRhc2tzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXIgb3V0IHByZXZpb3VzIGJ1aWxkIGFydGlmYWN0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIGNsZWFuIHRhc2tzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbic+PGZpbGVuYW1lPmRvX2NsZWFuPC9maWxlbmFtZT48L3VsaW5rPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbmFsbCc+PGZpbGVuYW1lPmRvX2NsZWFuYWxsPC9maWxlbmFtZT48L3VsaW5rPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbnNzdGF0ZSc+PGZpbGVuYW1lPmRvX2NsZWFuc3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBhbGwgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgdGhlIGltYWdlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBOZXh0LCBidWlsZCB0aGUga2VybmVsIGltYWdlIHVzaW5nIHRoaXMgY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1rIGxpbnV4LXlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdib290LXRoZS1pbWFnZS1hbmQtdmVyaWZ5LXlvdXItY2hhbmdlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+Qm9vdCB0aGUgSW1hZ2UgYW5kIFZlcmlmeSBZb3VyIENoYW5nZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGVzZSBzdGVwcyBib290IHRoZSBpbWFnZSBhbmQgYWxsb3cgeW91IHRvIHNlZSB0aGUgY2hhbmdlcwotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Cb290IHRoZSBpbWFnZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgQm9vdCB0aGUgbW9kaWZpZWQgaW1hZ2UgaW4gdGhlIFFFTVUgZW11bGF0b3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoaXMgY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5WZXJpZnkgdGhlIGNoYW5nZXM8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIExvZyBpbnRvIHRoZSBtYWNoaW5lIHVzaW5nIDxmaWxlbmFtZT5yb290PC9maWxlbmFtZT4gd2l0aCBubyBwYXNzd29yZCBhbmQgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSBmb2xsb3dpbmcgc2hlbGwgY29tbWFuZCB0byBzY3JvbGwgdGhyb3VnaCB0aGUgY29uc29sZSdzIGJvb3Qgb3V0cHV0LgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIGRtZXNnIHwgbGVzcwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBzZWUgdGhlIHJlc3VsdHMgb2YgeW91ciA8ZmlsZW5hbWU+cHJpbnRrPC9maWxlbmFtZT4gc3RhdGVtZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUgb3V0cHV0LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKICAgICA8c2VjdGlvbiBpZD0nbWFraW5nLWltYWdlcy1tb3JlLXNlY3VyZSc+CkBAIC02ODEyLDcgKzU5NTEsNyBAQAogICAgICAgICAgICAgICAgIFRoZSBzZWN1cml0eSBmbGFncyBhcmUgaW4gdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGZpbGUgaW4geW91cgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgcmVjaXBlLCBjZXJ0YWluIHNlY3VyaXR5IGZsYWdzIGFyZSBlbmFibGVkCkBAIC02OTMyLDggKzYwNzEsOCBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFdoZW4geW91IGJ1aWxkIGFuIGltYWdlIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGFuZAogICAgICAgICAgICAgZG8gbm90IGFsdGVyIGFueSBkaXN0cmlidXRpb24KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4sIHlvdSBhcmUgY3JlYXRpbmcgYQotICAgICAgICAgICAgUG9reSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiwKKyAgICAgICAgICAgIHlvdSBhcmUgY3JlYXRpbmcgYSBQb2t5IGRpc3RyaWJ1dGlvbi4KICAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIGdhaW4gbW9yZSBjb250cm9sIG92ZXIgcGFja2FnZSBhbHRlcm5hdGl2ZQogICAgICAgICAgICAgc2VsZWN0aW9ucywgY29tcGlsZS10aW1lIG9wdGlvbnMsIGFuZCBvdGhlciBsb3ctbGV2ZWwKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLCB5b3UgY2FuIGNyZWF0ZSB5b3VyIG93biBkaXN0cmlidXRpb24uCkBAIC02OTU2LDcgKzYwOTUsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgbWFrZXMgaXQgZWFzaWVyIHRvIHJlcHJvZHVjZSB0aGUgc2FtZQogICAgICAgICAgICAgICAgICAgICBidWlsZCBjb25maWd1cmF0aW9uIHdoZW4gdXNpbmcgbXVsdGlwbGUgYnVpbGQgbWFjaGluZXMuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUteW9jdG8tbGF5ZXItc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWxheWVyIFNjcmlwdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcXVpY2tseSBzZXQgdXAgYSBsYXllci4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGU6PC9lbXBoYXNpcz4KQEAgLTcwMTksNyArNjE1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIGJ1bGxldGVkIGl0ZW0uPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Qb2ludCB0byBZb3VyIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGZpbGU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgSW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKICAgICAgICAgICAgICAgICAgICAgc2V0IHlvdXIKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gcG9pbnQgdG8geW91ciBkaXN0cmlidXRpb24ncyBjb25maWd1cmF0aW9uIGZpbGUuCkBAIC03MDQ0LDcgKzYxODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIGhvdyB0byBhZGQgcmVjaXBlcyB0byB5b3VyIGxheWVyLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWxheWVyJz5DcmVhdGluZyBZb3VyIE93biBMYXllcjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Jlc3QtcHJhY3RpY2VzLXRvLWZvbGxvdy13aGVuLWNyZWF0aW5nLWxheWVycyc+QmVzdCBQcmFjdGljZXMgdG8gRm9sbG93IFdoZW4gQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYmVzdC1wcmFjdGljZXMtdG8tZm9sbG93LXdoZW4tY3JlYXRpbmctbGF5ZXJzJz5Gb2xsb3dpbmcgQmVzdCBQcmFjdGljZXMgV2hlbiBDcmVhdGluZyBMYXllcnM8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFkZCBhbnkgaW1hZ2UgcmVjaXBlcyB0aGF0IGFyZSBzcGVjaWZpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHlvdXIgZGlzdHJpYnV0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNzA3OSw3ICs2MjE4LDcgQEAKICAgICAgICAgICAgIDxmaWxlbmFtZT5URU1QTEFURUNPTkY8L2ZpbGVuYW1lPiB0byBsb2NhdGUgdGhlIGRpcmVjdG9yeQogICAgICAgICAgICAgZnJvbSB3aGljaCBpdCBnYXRoZXJzIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gdGhhdCB1bHRpbWF0ZWx5CiAgICAgICAgICAgICBlbmRzIHVwIGluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3RvcnknczwvbGluaz4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5LgogICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPlRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IGlzIHNldCBhcwogICAgICAgICAgICAgZm9sbG93cyBpbiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5OgpAQCAtNzEwNiw3ICs2MjQ1LDcgQEAKICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+VEVNUExBVEVDT05GPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgc2V0IGluIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPi50ZW1wbGF0ZWNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBpbiB0aGUKICAgICAgICAgICAgIHRvcC1sZXZlbAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgZm9sZGVyIChlLmcuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLgogICAgICAgICAgICAgRWRpdCB0aGUgPGZpbGVuYW1lPi50ZW1wbGF0ZWNvbmY8L2ZpbGVuYW1lPiBzbyB0aGF0IGl0IGNhbiBsb2NhdGUKICAgICAgICAgICAgIHlvdXIgZGlyZWN0b3J5LgpAQCAtNzEzNywxMiArNjI3NiwxMCBAQAogICAgICAgICAgICAgQXNpZGUgZnJvbSB0aGUgPGZpbGVuYW1lPiouc2FtcGxlPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcywKICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29uZi1ub3Rlcy50eHQ8L2ZpbGVuYW1lPiBhbHNvIHJlc2lkZXMgaW4gdGhlCiAgICAgICAgICAgICBkZWZhdWx0IDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgIFRoZSBzY3JpcHRzIHRoYXQgc2V0IHVwIHRoZSBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICAgICAgVGhlIHNjcmlwdCB0aGF0IHNldHMgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50CiAgICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICBhbmQKLSAgICAgICAgICAgIDx1bGluayB1cmw9IiZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQiPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+KQotICAgICAgICAgICAgdXNlIHRoaXMgZmlsZSB0byBkaXNwbGF5IEJpdEJha2UgdGFyZ2V0cyBhcyBwYXJ0IG9mIHRoZSBzY3JpcHQKKyAgICAgICAgICAgIDx1bGluayB1cmw9IiZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCI+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgIHVzZXMgdGhpcyBmaWxlIHRvIGRpc3BsYXkgQml0QmFrZSB0YXJnZXRzIGFzIHBhcnQgb2YgdGhlIHNjcmlwdAogICAgICAgICAgICAgb3V0cHV0LgogICAgICAgICAgICAgQ3VzdG9taXppbmcgdGhpcyA8ZmlsZW5hbWU+Y29uZi1ub3Rlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlIGlzIGEKICAgICAgICAgICAgIGdvb2Qgd2F5IHRvIG1ha2Ugc3VyZSB5b3VyIGxpc3Qgb2YgY3VzdG9tIHRhcmdldHMgYXBwZWFycwpAQCAtNzI5Niw3ICs2NDMzLDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRvIGhlbHAgeW91IHNlZSB3aGVyZSB5b3UgY3VycmVudGx5IGFyZSB3aXRoIGtlcm5lbCBhbmQgcm9vdAogICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gc2l6ZXMsIHlvdSBjYW4gdXNlIHR3byB0b29scyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPiBpbgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiBpbgogICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+c2NyaXB0cy90aW55LzwvZmlsZW5hbWU+IGRpcmVjdG9yeToKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmtzaXplLnB5PC9maWxlbmFtZT46IFJlcG9ydHMKQEAgLTczMjgsMTAgKzY0NjUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2tjb25maWc8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJhdGlvbiBmcmFnbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2dlbmVyYXRpbmctY29uZmlndXJhdGlvbi1maWxlcyc+R2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGFuZCB0aGUgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24sIHdoaWNoIGlzIGluIHRoaXMgbWFudWFsLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5DcmVhdGluZyBDb25maWd1cmF0aW9uIEZyYWdtZW50czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJpdGJha2UgLXUgdGFza2V4cCAtZyA8cmVwbGFjZWFibGU+Yml0YmFrZV90YXJnZXQ8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIEJpdEJha2UgY29tbWFuZCB3aXRoIHRoZXNlIG9wdGlvbnMgYnJpbmdzIHVwCiAgICAgICAgICAgICAgICAgICAgICAgICBhIERlcGVuZGVuY3kgRXhwbG9yZXIgZnJvbSB3aGljaCB5b3UgY2FuIHZpZXcgZmlsZQpAQCAtNzk1Nyw3ICs3MDk0LDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQsIGF0dGVtcHRpbmcgdG8gbWFpbnRhaW4gcmV2aXNpb24gbnVtYmVycyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgaXMgZXJyb3IgcHJvbmUsIGluYWNjdXJhdGUsIGFuZCBjYXVzZXMgcHJvYmxlbXMgZm9yIHBlb3BsZQogICAgICAgICAgICAgICAgICAgICBzdWJtaXR0aW5nIHJlY2lwZXMuCiAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNlbHksIHRoZSBQUiBTZXJ2aWNlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzCkBAIC04MDMyLDcgKzcxNjksNyBAQAogICAgICAgICAgICAgICAgICAgICBzZXR0aW5nCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUlNFUlZfSE9TVCc+PGZpbGVuYW1lPlBSU0VSVl9IT1NUPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQUlNFUlZfSE9TVCA9ICJsb2NhbGhvc3Q6MCIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtODMzMyw3ICs3NDcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbm5tYW4uaW5jPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi88L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0neW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPnNvdXJjZSByZXBvc2l0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPnNvdXJjZSByZXBvc2l0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGV4YW1wbGVzIGluCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3M8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtODU2OCw3ICs3NzA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGUgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+fi9wb2t5L2J1aWxkL2NvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTg3MzgsNyArNzg3NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHdpdGggdGhlIGZvbGxvd2luZyBjb250ZW50OgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBbb2UtcGFja2FnZXNdCi0gICAgIGJhc2V1cmw9Imh0dHA6Ly9teS5zZXJ2ZXIvcnBtL2k1ODYgaHR0cDovL215LnNlcnZlci9ycG0vcWVtdXg4NiBodHRwOi8vbXkuc2VydmVyL3JwbS9hbGwiCisgICAgIGJhc2V1cmw9aHR0cDovL215LnNlcnZlci9ycG0vaTU4NiBodHRwOi8vbXkuc2VydmVyL3JwbS9xZW11eDg2IGh0dHA6Ly9teS5zZXJ2ZXIvcnBtL2FsbAogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgdGFyZ2V0IG1hY2hpbmUsIGZldGNoIHRoZSByZXBvc2l0b3J5OgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtODkyMCwxMyArODA1NywxMCBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIGJlaW5nIGFibGUgdG8gc2lnbiBSUE0gcGFja2FnZXMsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICAgICAgYWxzbyBlbmFibGUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYmUgYWJsZSB0bwotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgcHJldmlvdXNseSBzaWduZWQgcGFja2FnZSBmZWVkcyBmb3IgSVBLCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IGN1cnJlbnRseQotICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBzaWduZWQgRFBLRyBvciBSUE0gcGFja2FnZSBmZWVkcy4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBhbHNvIGVuYWJsZSBzaWduZWQgcGFja2FnZSBmZWVkcyBmb3IgSVBLIGFuZCBSUE0gcGFja2FnZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB5b3UgbmVlZCB0byB0YWtlIHRvIGVuYWJsZSBzaWduZWQgcGFja2FnZSBmZWVkCiAgICAgICAgICAgICAgICAgICAgIHVzZSBhcmUgc2ltaWxhciB0byB0aGUgc3RlcHMgdXNlZCB0byBzaWduIFJQTSBwYWNrYWdlcy4KICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgZGVmaW5lIHRoZSBmb2xsb3dpbmcgaW4geW91cgpAQCAtOTAyNiw3ICs4MTYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYW5kIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdG8geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsCiAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgcHRlc3QiCiAgICAgIEVYVFJBX0lNQUdFX0ZFQVRVUkVTICs9ICJwdGVzdC1wa2dzIgpAQCAtOTI2Miw4ICs4Mzk2LDggQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4gd2hlbgotICAgICAgICAgICAgYnVpbGRpbmcgc291cmNlIGNvZGUuCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIHNvdXJjZSBjb2RlLgogICAgICAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgaW52b2x2ZXMgZmV0Y2hpbmcgdGhlIHNvdXJjZSBmaWxlcywgdW5wYWNraW5nCiAgICAgICAgICAgICB0aGVtLCBhbmQgdGhlbiBwYXRjaGluZyB0aGVtIGlmIG5lY2Vzc2FyeSBiZWZvcmUgdGhlIGJ1aWxkIHRha2VzCiAgICAgICAgICAgICBwbGFjZS4KQEAgLTk2MjcsNyArODc2MSw3IEBACiAgICAgICAgICAgICAgICAgVXNpbmcgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50cyBpbiB5b3VyCiAgICAgICAgICAgICAgICAgaW1hZ2UgcmVjaXBlIG9yIGZyb20gd2l0aGluIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgY2F1c2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIElNQUdFX0ZFQVRVUkVTID0gInJlYWQtb25seS1yb290ZnMiCkBAIC0xMDIyMSw3ICs5MzU1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1URVNUX0lNQUdFJz48ZmlsZW5hbWU+VEVTVF9JTUFHRTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIxIiBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgVEVTVF9JTUFHRSA9ICIxIgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMTAyNDksNyArOTM4Myw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBBbGwgdGVzdCBmaWxlcyByZXNpZGUgaW4KICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9ydW50aW1lPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgIEEgdGVzdCBuYW1lIG1hcHMgZGlyZWN0bHkgdG8gYSBQeXRob24gbW9kdWxlLgogICAgICAgICAgICAgICAgIEVhY2ggdGVzdCBtb2R1bGUgbWF5IGNvbnRhaW4gYSBudW1iZXIgb2YgaW5kaXZpZHVhbCB0ZXN0cy4KICAgICAgICAgICAgICAgICBUZXN0cyBhcmUgdXN1YWxseSBncm91cGVkIHRvZ2V0aGVyIGJ5IHRoZSBhcmVhCkBAIC0xMDM1Myw3ICs5NDg3LDggQEAKICAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+IC1jIHRlc3RleHBvcnQKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgRXhwb3J0aW5nIHRoZSB0ZXN0cyBwbGFjZXMgdGhlbSBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4gaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgaW4KICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL3Rlc3RleHBvcnQvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiwKICAgICAgICAgICAgICAgICB3aGljaCBpcyBjb250cm9sbGVkIGJ5IHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX0VYUE9SVF9ESVI8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KQEAgLTEwODkzLDE4MiArMTAwMjgsNiBAQAogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCi08IS0tCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zy1zZXR1cCc+Ci0gICAgICAgICAgICA8dGl0bGU+U2V0IFVwIHRoZSBDcm9zcy1EZXZlbG9wbWVudCBEZWJ1Z2dpbmcgRW52aXJvbm1lbnQ8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiBpbml0aWF0ZSBhIHJlbW90ZSBkZWJ1Z2dpbmcgc2Vzc2lvbiwgeW91IG5lZWQKLSAgICAgICAgICAgICAgICB0byBiZSBzdXJlIHlvdSBoYXZlIHNldCB1cCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsCi0gICAgICAgICAgICAgICAgdG9vbGNoYWluLCBhbmQgc3lzcm9vdC4KLSAgICAgICAgICAgICAgICBUaGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWludHJvJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoaXMgcHJvY2Vzcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zy1sYXVuY2gtZ2Ric2VydmVyIj4KLSAgICAgICAgICAgIDx0aXRsZT5MYXVuY2ggZ2Ric2VydmVyIG9uIHRoZSBUYXJnZXQ8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBNYWtlIHN1cmUgZ2Ric2VydmVyIGlzIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgICAgIElmIGl0IGlzIG5vdCwgaW5zdGFsbCB0aGUgcGFja2FnZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZGJzZXJ2ZXI8L2ZpbGVuYW1lPiwgd2hpY2ggbmVlZHMgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnRocmVhZC1kYjE8L2ZpbGVuYW1lPiBwYWNrYWdlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUsIHRoYXQgd2hlbiBlbnRlcmVkIGZyb20gdGhlIGhvc3QsCi0gICAgICAgICAgICAgICAgY29ubmVjdHMgdG8gdGhlIHRhcmdldCBhbmQgbGF1bmNoZXMgZ2Ric2VydmVyIGluIG9yZGVyIHRvCi0gICAgICAgICAgICAgICAgImRlYnVnIiBhIGJpbmFyeSBuYW1lZCA8ZmlsZW5hbWU+aGVsbG93b3JsZDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnZGJzZXJ2ZXIgbG9jYWxob3N0OjIzNDUgL3Vzci9iaW4vaGVsbG93b3JsZAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBnZGJzZXJ2ZXIgc2hvdWxkIG5vdyBiZSBsaXN0ZW5pbmcgb24gcG9ydCAyMzQ1IGZvciBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICBjb21tYW5kcyBjb21pbmcgZnJvbSBhIHJlbW90ZSBHREIgcHJvY2VzcyB0aGF0IGlzIHJ1bm5pbmcgb24KLSAgICAgICAgICAgICAgICB0aGUgaG9zdCBjb21wdXRlci4KLSAgICAgICAgICAgICAgICBDb21tdW5pY2F0aW9uIGJldHdlZW4gZ2Ric2VydmVyIGFuZCB0aGUgaG9zdCBHREIgYXJlIGRvbmUKLSAgICAgICAgICAgICAgICB1c2luZyBUQ1AuCi0gICAgICAgICAgICAgICAgVG8gdXNlIG90aGVyIGNvbW11bmljYXRpb24gcHJvdG9jb2xzLCBwbGVhc2UgcmVmZXIgdG8gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYi8nPkdkYnNlcnZlciBkb2N1bWVudGF0aW9uPC91bGluaz4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1nZGItcmVtb3RlZGVidWctbGF1bmNoLWdkYiI+Ci0gICAgICAgICAgICA8dGl0bGU+TGF1bmNoIEdEQiBvbiB0aGUgSG9zdCBDb21wdXRlcjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFJ1bm5pbmcgR0RCIG9uIHRoZSBob3N0IGNvbXB1dGVyIHRha2VzIGEgbnVtYmVyIG9mIHN0YWdlcywgd2hpY2gKLSAgICAgICAgICAgICAgICB0aGlzIHNlY3Rpb24gZGVzY3JpYmVzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1nZGItcmVtb3RlZGVidWctbGF1bmNoLWdkYi1idWlsZGNyb3NzIj4KLSAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGQgdGhlIENyb3NzLUdEQiBQYWNrYWdlPC90aXRsZT4KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQSBzdWl0YWJsZSBHREIgY3Jvc3MtYmluYXJ5IGlzIHJlcXVpcmVkIHRoYXQgcnVucyBvbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGhvc3QgY29tcHV0ZXIgYnV0IGFsc28ga25vd3MgYWJvdXQgdGhlIHRoZSBBQkkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIHJlbW90ZSB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoaXMgYmluYXJ5IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluPC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlIHRoZSB0b29sY2hhaW4gaGFzIGJlZW4gaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBkZWZhdWx0IGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L29wdC9wb2t5LyZESVNUUk87PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgL29wdC9wb2t5LyZESVNUUk87L3N5c3Jvb3RzL2k2ODYtcG9reXNkay1saW51eC91c3IvYmluL2FybXY3YS12ZnAtbmVvbi1wb2t5LWxpbnV4LWdudWVhYmkvYXJtLXBva3ktbGludXgtZ251ZWFiaS1nZGIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICB3aGVyZSA8ZmlsZW5hbWU+YXJtPC9maWxlbmFtZT4gaXMgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUKLSAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5saW51eC1nbnVlYWJpPC9maWxlbmFtZT4gaXMgdGhlIHRhcmdldCBBQkkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZGItY3Jvc3M8L2ZpbGVuYW1lPiBiaW5hcnkuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgZ2RiLWNyb3NzCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgYmluYXJ5IGlzIGJ1aWx0LCB5b3UgY2FuIGZpbmQgaXQgaGVyZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICB0bXAvc3lzcm9vdHMvPHJlcGxhY2VhYmxlPmhvc3QtYXJjaDwvcmVwbGFjZWFibGU+L3Vzci9iaW4vPHJlcGxhY2VhYmxlPnRhcmdldC1wbGF0Zm9ybTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT50YXJnZXQtYWJpPC9yZXBsYWNlYWJsZT4tZ2RiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdjcmVhdGUtdGhlLWdkYi1pbml0aWFsaXphdGlvbi1maWxlJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+Q3JlYXRlIHRoZSBHREIgSW5pdGlhbGl6YXRpb24gRmlsZSBhbmQgUG9pbnQgdG8gWW91ciBSb290IEZpbGVzeXN0ZW08L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEFzaWRlIGZyb20gdGhlIEdEQiBjcm9zcy1iaW5hcnksIHlvdSBhbHNvIG5lZWQgYSBHREIKLSAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gZmlsZSBpbiB0aGUgc2FtZSB0b3AgZGlyZWN0b3J5IGluIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgYmluYXJ5IHJlc2lkZXMuCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHN0YXJ0IEdEQiBvbiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtLCBHREIKLSAgICAgICAgICAgICAgICAgICAgZmluZHMgdGhpcyBpbml0aWFsaXphdGlvbiBmaWxlIGFuZCBleGVjdXRlcyBhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzIHdpdGhpbi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSA8ZmlsZW5hbWU+LmdkYmluaXQ8L2ZpbGVuYW1lPiwgc2VlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL29ubGluZWRvY3MvZ2RiLyc+RGVidWdnaW5nIHdpdGggR0RCPC91bGluaz4iLAotICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBtYWludGFpbmVkIGJ5Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuc291cmNld2FyZS5vcmcnPnNvdXJjZXdhcmUub3JnPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGFkZCBhIHN0YXRlbWVudCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vLmdkYmluaXQ8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgcG9pbnRzIHRvIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBwb2ludHMgdG8gdGhlIHJvb3QgZmlsZXN5c3RlbSBmb3IKLSAgICAgICAgICAgICAgICAgICAgYW4gQVJNLWJhc2VkIHRhcmdldCBkZXZpY2U6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgc2V0IHN5c3Jvb3Qgfi9zeXNyb290X2FybQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1nZGItcmVtb3RlZGVidWctbGF1bmNoLWdkYi1sYXVuY2hob3N0Ij4KLSAgICAgICAgICAgICAgICA8dGl0bGU+TGF1bmNoIHRoZSBIb3N0IEdEQjwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQmVmb3JlIGxhdW5jaGluZyB0aGUgaG9zdCBHREIsIHlvdSBuZWVkIHRvIGJlIHN1cmUKLSAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgc291cmNlZCB0aGUgY3Jvc3MtZGVidWdnaW5nIGVudmlyb25tZW50IHNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAgd2hpY2ggaWYgeW91IGluc3RhbGxlZCB0aGUgcm9vdCBmaWxlc3lzdGVtIGluIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIGlzIGF0IDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBhbmQgYmVnaW5zIHdpdGggdGhlIHN0cmluZyAiZW52aXJvbm1lbnQtc2V0dXAiLgotICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstbWFudWFsJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncwotICAgICAgICAgICAgICAgICAgICBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGaW5hbGx5LCBzd2l0Y2ggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYmluYXJ5IHJlc2lkZXMKLSAgICAgICAgICAgICAgICAgICAgYW5kIHJ1biB0aGUgPGZpbGVuYW1lPmNyb3NzLWdkYjwvZmlsZW5hbWU+IGJpbmFyeS4KLSAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSB0aGUgYmluYXJ5IGZpbGUgeW91IGFyZSBnb2luZyB0byBkZWJ1Zy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBjb250aW51ZXMgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSB1c2VkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIGJ5IGxvYWRpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5oZWxsb3dvcmxkPC9maWxlbmFtZT4gYmluYXJ5IGFzIHdlbGwgYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIGRlYnVnZ2luZyBpbmZvcm1hdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGFybS1wb2t5LWxpbnV4LWdudWFiaS1nZGIgaGVsbG93b3JsZAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kcyBpbiB5b3VyIDxmaWxlbmFtZT4uZ2RiaW5pdDwvZmlsZW5hbWU+IGV4ZWN1dGUKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBHREIgcHJvbXB0IGFwcGVhcnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3BsYXRkZXYtZ2RiLWNvbm5lY3QtdG8tdGhlLXJlbW90ZS1nZGItc2VydmVyJz4KLSAgICAgICAgICAgIDx0aXRsZT5Db25uZWN0IHRvIHRoZSBSZW1vdGUgR0RCIFNlcnZlcjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZyb20gdGhlIHRhcmdldCwgeW91IG5lZWQgdG8gY29ubmVjdCB0byB0aGUgcmVtb3RlIEdEQgotICAgICAgICAgICAgICAgIHNlcnZlciB0aGF0IGlzIHJ1bm5pbmcgb24gdGhlIGhvc3QuCi0gICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgcmVtb3RlIGhvc3QgYW5kIHBvcnQuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgY29tbWFuZCBjb250aW51aW5nIHdpdGggdGhlIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICB0YXJnZXQgcmVtb3RlIDE5Mi4xNjguNy4yOjIzNDUKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0icGxhdGRldi1nZGItcmVtb3RlZGVidWctbGF1bmNoLWdkYi11c2luZyI+Ci0gICAgICAgICAgICA8dGl0bGU+VXNlIHRoZSBEZWJ1Z2dlcjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gbm93IHByb2NlZWQgd2l0aCBkZWJ1Z2dpbmcgYXMgbm9ybWFsIC0gYXMgaWYgeW91IHdlcmUgZGVidWdnaW5nCi0gICAgICAgICAgICAgICAgb24gdGhlIGxvY2FsIG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGluc3RydWN0IEdEQiB0byBicmVhayBpbiB0aGUgIm1haW4iIGZ1bmN0aW9uIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgY29udGludWUgd2l0aCBleGVjdXRpb24gb2YgdGhlIGluZmVyaW9yIGJpbmFyeSB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcwotICAgICAgICAgICAgICAgIGZyb20gd2l0aGluIEdEQjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIChnZGIpIGJyZWFrIG1haW4KLSAgICAgKGdkYikgY29udGludWUKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHVzaW5nIEdEQiwgc2VlIHRoZSBwcm9qZWN0J3Mgb25saW5lIGRvY3VtZW50YXRpb24gYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL2Rvd25sb2FkL29ubGluZWRvY3MvIi8+LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotLS0+Ci0KICAgICA8c2VjdGlvbiBpZD0nZGVidWdnaW5nLXdpdGgtdGhlLWdudS1wcm9qZWN0LWRlYnVnZ2VyLWdkYi1vbi10aGUtdGFyZ2V0Jz4KICAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyB3aXRoIHRoZSBHTlUgUHJvamVjdCBEZWJ1Z2dlciAoR0RCKSBvbiB0aGUgVGFyZ2V0PC90aXRsZT4KIApAQCAtMTEzNDcsNyArMTAzMDYsNyBAQAogICAgICAgICAgICAgICAgIE9uY2UgdGhlIHBhdGNoIGZpbGUgZXhpc3RzLCB5b3UgbmVlZCB0byBhZGQgaXQgYmFjayB0byB0aGUKICAgICAgICAgICAgICAgICBvcmlnaW5hdGluZyByZWNpcGUgZm9sZGVyLgogICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBhc3N1bWluZyBhIHRvcC1sZXZlbAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgY3AgcGF0Y2hlcy9wYXJhbGxlbG1ha2UucGF0Y2ggcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25lYXJkL25lYXJkCkBAIC0xMTQwNyw3ICsxMDM2Niw3IEBACiAgICAgICAgICAgICAgICAgbmVlZCB0byBzdWJtaXQgdGhlIGZpeCBmb3IgdGhlIHJlY2lwZSBpbiBPRS1Db3JlIGFuZCB1cHN0cmVhbQogICAgICAgICAgICAgICAgIHNvIHRoYXQgdGhlIHByb2JsZW0gaXMgdGFrZW4gY2FyZSBvZiBhdCBpdHMgc291cmNlLgogICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvbGluaz4iCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTExNTEwLDcgKzEwNDY5LDcgQEAKICAgICAgICAgICAgICAgICByZWxlYXNlIGp1c3QgdGhlIHNvdXJjZSBhcyBhIHRhcmJhbGwuCiAgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz46CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIElOSEVSSVQgKz0gImFyY2hpdmVyIgogICAgICBBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiCkBAIC0xMTY3OCw4ICsxMDYzNyw4IEBACiAgICAgICAgIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBDcmVhdGluZyBhbmQgcHJvdmlkaW5nIGFuIGFyY2hpdmUgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiBsYXllcnMKLSAgICAgICAgICAgICAgICAocmVjaXBlcywgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgbGF5ZXJzIChyZWNpcGVzLCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgc28gZm9ydGgpCiAgICAgICAgICAgICAgICAgZW5hYmxlcyB5b3UgdG8gbWVldCB5b3VyCiAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIHRvIGluY2x1ZGUgdGhlIHNjcmlwdHMgdG8gY29udHJvbCBjb21waWxhdGlvbgogICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZS4KQEAgLTExNjk3LDcgKzEwNjU2LDcgQEAKICAgICAgICAgICAgIGJyb3dzZSBlcnJvcnMsIHZpZXcgc3RhdGlzdGljcywgYW5kIHF1ZXJ5IGZvciBlcnJvcnMuCiAgICAgICAgICAgICBUaGUgdG9vbCB3b3JrcyB1c2luZyBhIGNsaWVudC1zZXJ2ZXIgc3lzdGVtIHdoZXJlIHRoZSBjbGllbnQKICAgICAgICAgICAgIHBvcnRpb24gaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBpbnN0YWxsZWQgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICBUaGUgc2VydmVyIHJlY2VpdmVzIHRoZSBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQgYW5kIHNhdmVzIGl0IGluIGEKICAgICAgICAgICAgIGRhdGFiYXNlLgpAQCAtMTE3MjUsNyArMTA2ODQsNyBAQAogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXJlcG9ydC1lcnJvcic+PGZpbGVuYW1lPnJlcG9ydC1lcnJvcjwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICBjbGFzcyBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgdG8gdGhlIGVuZCBvZgogICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHlvdXIKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIElOSEVSSVQgKz0gInJlcG9ydC1lcnJvciIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xMTc4NCw3ICsxMDc0Myw3IEBACiAgICAgICAgICAgICAgICAgVG8gZGlzYWJsZSB0aGUgZXJyb3IgcmVwb3J0aW5nIGZlYXR1cmUsIHNpbXBseSByZW1vdmUgb3IgY29tbWVudAogICAgICAgICAgICAgICAgIG91dCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCBmcm9tIHRoZSBlbmQgb2YgeW91cgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB5b3VyCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBJTkhFUklUICs9ICJyZXBvcnQtZXJyb3IiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby54bWwKaW5kZXggNDkxNDhhYi4uNDdjODAwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWludHJvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sCkBAIC00LDEwMiArNCw3MyBAQAogCiA8Y2hhcHRlciBpZD0nZGV2LW1hbnVhbC1pbnRybyc+CiAKLTx0aXRsZT5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWw8L3RpdGxlPgotICAgIDxzZWN0aW9uIGlkPSdkZXYtaW50cm8nPgotICAgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKzx0aXRsZT5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdkZXYtd2VsY29tZSc+CisgICAgICAgIDx0aXRsZT5XZWxjb21lPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIQotICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCB0bwotICAgICAgICAgICAgZGV2ZWxvcCBlbWJlZGRlZCBMaW51eCBpbWFnZXMgYW5kIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRoYXQKLSAgICAgICAgICAgIHJ1biBvbiB0YXJnZXRlZCBkZXZpY2VzLgotICAgICAgICAgICAgVGhlIG1hbnVhbCBwcm92aWRlcyBhbiBvdmVydmlldyBvZiBpbWFnZSwga2VybmVsLCBhbmQKLSAgICAgICAgICAgIHVzZXItc3BhY2UgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICBCZWNhdXNlIG11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoaXMgbWFudWFsIGlzIGdlbmVyYWwsIGl0Ci0gICAgICAgICAgICBjb250YWlucyBtYW55IHJlZmVyZW5jZXMgdG8gb3RoZXIgc291cmNlcyB3aGVyZSB5b3UgY2FuIGZpbmQgbW9yZQotICAgICAgICAgICAgZGV0YWlsLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gZmluZCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBHaXQsIHJlcG9zaXRvcmllcywKLSAgICAgICAgICAgIGFuZCBvcGVuIHNvdXJjZSBpbiBnZW5lcmFsIGluIG1hbnkgcGxhY2VzIG9uIHRoZSBJbnRlcm5ldC4KLSAgICAgICAgICAgIEFub3RoZXIgZXhhbXBsZSBzcGVjaWZpYyB0byB0aGUgWW9jdG8gUHJvamVjdCBpcyBob3cgdG8gcXVpY2tseQotICAgICAgICAgICAgc2V0IHVwIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gYW5kIGJ1aWxkIGFuIGltYWdlLCB3aGljaCB5b3UKLSAgICAgICAgICAgIGZpbmQgaW4gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC91bGluaz4uCisgICAgICAgICAgICBXZWxjb21lIHRvIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCEKKyAgICAgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIHJlbGV2YW50IHByb2NlZHVyZXMgbmVjZXNzYXJ5IGZvciBkZXZlbG9waW5nCisgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBlbnZpcm9ubWVudCAoaS5lLiBkZXZlbG9waW5nIGVtYmVkZGVkIExpbnV4CisgICAgICAgICAgICBpbWFnZXMgYW5kIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRoYXQgcnVuIG9uIHRhcmdldGVkIGRldmljZXMpLgorICAgICAgICAgICAgVGhlIG1hbnVhbCBncm91cHMgcmVsYXRlZCBwcm9jZWR1cmVzIGludG8gaGlnaGVyLWxldmVsIHNlY3Rpb25zLgorICAgICAgICAgICAgUHJvY2VkdXJlcyBjYW4gY29uc2lzdCBvZiBoaWdoLWxldmVsIHN0ZXBzIG9yIGxvdy1sZXZlbCBzdGVwcworICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0b3BpYy4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCBjb25jZXB0dWFsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gYSBwcm9jZWR1cmUgYnkKKyAgICAgICAgICAgIGZvbGxvd2luZyBhcHByb3ByaWF0ZSBsaW5rcyB0byB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UKKyAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGRvZXMsIGhvd2V2ZXIsIHByb3ZpZGUKLSAgICAgICAgICAgIGd1aWRhbmNlIGFuZCBleGFtcGxlcyBvbiBob3cgdG8gY2hhbmdlIHRoZSBrZXJuZWwgc291cmNlIGNvZGUsCi0gICAgICAgICAgICByZWNvbmZpZ3VyZSB0aGUga2VybmVsLCBhbmQgZGV2ZWxvcCBhbiBhcHBsaWNhdGlvbiB1c2luZwotICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgY3JlYXRlcyBhIFBva3kgZGlzdHJpYnV0aW9uLgotICAgICAgICAgICAgSG93ZXZlciwgeW91IGNhbiBjcmVhdGUgeW91ciBvd24gZGlzdHJpYnV0aW9uIGJ5IHByb3ZpZGluZyBrZXkKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4uCi0gICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyBBbmdzdHJvbSwgd2hpY2ggaGFzIGhhZCBhIGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgYmFzZWQgb24gdGhlIFlvY3RvIFByb2plY3Qgc2luY2UgaXRzIGluY2VwdGlvbi4KLSAgICAgICAgICAgIE90aGVyIGV4YW1wbGVzIGluY2x1ZGUgY29tbWVyY2lhbCBkaXN0cmlidXRpb25zIGxpa2UKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvb3JnYW5pemF0aW9uL3dpbmQtcml2ZXItc3lzdGVtcyc+V2luZCBSaXZlciBMaW51eDwvdWxpbms+LAotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9vcmdhbml6YXRpb24vbWVudG9yLWdyYXBoaWNzJz5NZW50b3IgRW1iZWRkZWQgTGludXg8L3VsaW5rPiwKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvb3JnYW5pemF0aW9uL2VuZWEtYWInPkVORUEgTGludXg8L3VsaW5rPgotICAgICAgICAgICAgYW5kIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZWNvc3lzdGVtL21lbWJlci1vcmdhbml6YXRpb25zJz5vdGhlcnM8L3VsaW5rPi4KLSAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWRpc3RyaWJ1dGlvbic+Q3JlYXRpbmcgWW91ciBPd24gRGlzdHJpYnV0aW9uPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nd2hhdC10aGlzLW1hbnVhbC1wcm92aWRlcyc+Ci0gICAgICAgIDx0aXRsZT5XaGF0IFRoaXMgTWFudWFsIFByb3ZpZGVzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgd2hhdCB5b3UgY2FuIGdldCBmcm9tIHRoaXMgbWFudWFsOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5mb3JtYXRpb24gdGhhdCBsZXRzIHlvdSBnZXQgc2V0Ci0gICAgICAgICAgICAgICAgICAgIHVwIHRvIGRldmVsb3AgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluZm9ybWF0aW9uIHRvIGhlbHAgZGV2ZWxvcGVycyB3aG8gYXJlIG5ldyB0bwotICAgICAgICAgICAgICAgICAgICB0aGUgb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQgYW5kIHRvIHRoZSBkaXN0cmlidXRlZCByZXZpc2lvbgotICAgICAgICAgICAgICAgICAgICBjb250cm9sIHN5c3RlbSBHaXQsIHdoaWNoIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMuCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0dXAgUHJvY2VkdXJlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHNldAorICAgICAgICAgICAgICAgICAgICB1cCBhIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIGhvdworICAgICAgICAgICAgICAgICAgICB0byBhY2NvbXBsaXNoIHRoZSBjaGFuZ2Ugd29ya2Zsb3cgdGhyb3VnaCBsb2dnaW5nCisgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgYW5kIHN1Ym1pdHRpbmcgY2hhbmdlcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFuIHVuZGVyc3RhbmRpbmcgb2YgY29tbW9uIGVuZC10by1lbmQKLSAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbW9kZWxzIGFuZCB0YXNrcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5mb3JtYXRpb24gYWJvdXQgY29tbW9uIGRldmVsb3BtZW50IHRhc2tzCi0gICAgICAgICAgICAgICAgICAgIGdlbmVyYWxseSB1c2VkIGR1cmluZyBpbWFnZSBkZXZlbG9wbWVudCBmb3IKLSAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWQgZGV2aWNlcy4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FbXVsYXRpb24gUHJvY2VkdXJlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBpbnRlZ3JhdGVkIFF1aWNrRU1VbGF0b3IgKFFFTVUpLCB3aGljaCBsZXRzCisgICAgICAgICAgICAgICAgICAgIHlvdSBzaW11bGF0ZSBydW5uaW5nIG9uIGhhcmR3YXJlIGFuIGltYWdlIHlvdSBoYXZlIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgaW50ZWdyYXRpb24gb2YgdGhlIFF1aWNrRU1VbGF0b3IgKFFFTVUpLCB3aGljaCBsZXRzIHlvdQotICAgICAgICAgICAgICAgICAgICBzaW11bGF0ZSBydW5uaW5nIG9uIGhhcmR3YXJlIGFuIGltYWdlIHlvdSBoYXZlIGJ1aWx0IHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1vbiBQcm9jZWR1cmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByb2NlZHVyZXMgcmVsYXRlZCB0byAiZXZlcnlkYXkiIHRhc2tzIHlvdSBwZXJmb3JtIHdoaWxlCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BpbmcgaW1hZ2VzIGFuZCBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5NYW55IHJlZmVyZW5jZXMgdG8gb3RoZXIgc291cmNlcyBvZiByZWxhdGVkCi0gICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nd2hhdC10aGlzLW1hbnVhbC1kb2VzLW5vdC1wcm92aWRlJz4KLSAgICAgICAgPHRpdGxlPldoYXQgdGhpcyBNYW51YWwgRG9lcyBOb3QgUHJvdmlkZTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGlzIG1hbnVhbCB3aWxsIG5vdCBnaXZlIHlvdSB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlN0ZXAtYnktc3RlcCBpbnN0cnVjdGlvbnMgd2hlbiB0aG9zZSBpbnN0cnVjdGlvbnMgZXhpc3QgaW4gb3RoZXIgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBkb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVkdW5kYW50IFN0ZXAtYnktc3RlcCBJbnN0cnVjdGlvbnM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCBjb250YWlucyBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGluc3RhbGwgYW4KICAgICAgICAgICAgICAgICAgICAgU0RLLCB3aGljaCBpcyB1c2VkIHRvIGRldmVsb3AgYXBwbGljYXRpb25zIGZvciB0YXJnZXQKICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmVmZXJlbmNlIG1hdGVyaWFsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVmZXJlbmNlIG9yIENvbmNlcHR1YWwgTWF0ZXJpYWw6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIG1hdGVyaWFsIHJlc2lkZXMgaW4gYW4gYXBwcm9wcmlhdGUgcmVmZXJlbmNlIG1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN5c3RlbSB2YXJpYWJsZXMgYXJlIGRvY3VtZW50ZWQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZXRhaWxlZCBwdWJsaWMgaW5mb3JtYXRpb24gdGhhdCBpcyBub3Qgc3BlY2lmaWMgdG8gdGhlIFlvY3RvIFByb2plY3Q6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGV4aGF1c3RpdmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBHaXQgaXMgY292ZXJlZCBiZXR0ZXIgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgSW50ZXJuZXQgdGhhbiBpbiB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRhaWxlZCBQdWJsaWMgSW5mb3JtYXRpb24gTm90IFNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBleGhhdXN0aXZlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgR2l0IGlzIGJldHRlciBjb3ZlcmVkIHdpdGggSW50ZXJuZXQKKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoZXMgYW5kIG9mZmljaWFsIEdpdCBEb2N1bWVudGF0aW9uIHRoYW4gdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L3BhcmE+CkBAIC0xMDksMTQ0ICs4MCwyMyBAQAogICAgICAgICA8dGl0bGU+T3RoZXIgSW5mb3JtYXRpb248L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQmVjYXVzZSB0aGlzIG1hbnVhbCBwcmVzZW50cyBvdmVydmlldyBpbmZvcm1hdGlvbiBmb3IgbWFueSBkaWZmZXJlbnQKKyAgICAgICAgICAgIEJlY2F1c2UgdGhpcyBtYW51YWwgcHJlc2VudHMgaW5mb3JtYXRpb24gZm9yIG1hbnkgZGlmZmVyZW50CiAgICAgICAgICAgICB0b3BpY3MsIHN1cHBsZW1lbnRhbCBpbmZvcm1hdGlvbiBpcyByZWNvbW1lbmRlZCBmb3IgZnVsbAogICAgICAgICAgICAgY29tcHJlaGVuc2lvbi4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcmVzZW50cyBvdGhlciBzb3VyY2VzIG9mIGluZm9ybWF0aW9uIHlvdSBtaWdodCBmaW5kIGhlbHBmdWw6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+IFRoZSBob21lIHBhZ2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIGxvdHMgb2YgaW5mb3JtYXRpb24gb24gdGhlIHByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBsaW5rcyB0byBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2hvcnQgZG9jdW1lbnQgbGV0cyB5b3UgZ2V0IHN0YXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBhbmQgcXVpY2tseSBiZWdpbiBidWlsZGluZyBhbiBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsnPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGlzIGEgcmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgIGd1aWRlIHRvIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB3aGljaCBpcyBiYXNlZCBvbiBCaXRCYWtlLgotICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyAiUG9reSIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgZ3VpZGUgcHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCBsZXRzIHlvdSBnZXQgZ29pbmcKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgc3RhbmRhcmQgb3IgZXh0ZW5zaWJsZSBTREsuCi0gICAgICAgICAgICAgICAgICAgIEFuIFNESywgd2l0aCBpdHMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywgYWxsb3dzIHlvdQotICAgICAgICAgICAgICAgICAgICB0byBkZXZlbG9wIHByb2plY3RzIGluc2lkZSBvciBvdXRzaWRlIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGd1aWRlIGRlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgQlNQIGNvbXBvbmVudHMuCi0gICAgICAgICAgICAgICAgICAgIEhhdmluZyBhIGNvbW1vbmx5IHVuZGVyc3Rvb2Qgc3RydWN0dXJlIGVuY291cmFnZXMgc3RhbmRhcmRpemF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsnPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGRlc2NyaWJlcyBob3cgdG8gd29yayB3aXRoIExpbnV4IFlvY3RvIGtlcm5lbHMgYXMgd2VsbCBhcyBwcm92aWRlcyBhIGJpdAotICAgICAgICAgICAgICAgICAgICBvZiBjb25jZXB0dWFsIGluZm9ybWF0aW9uIG9uIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIFlvY3RvIExpbnV4IGtlcm5lbCB0cmVlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19QUk9GX1VSTDsnPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIHByZXNlbnRzIGEgc2V0IG9mIGNvbW1vbiBhbmQgZ2VuZXJhbGx5IHVzZWZ1bCB0cmFjaW5nIGFuZAotICAgICAgICAgICAgICAgICAgICBwcm9maWxpbmcgc2NoZW1lcyBhbG9uZyB3aXRoIHRoZWlyIGFwcGxpY2F0aW9ucyAoYXMgYXBwcm9wcmlhdGUpIHRvIGVhY2ggdG9vbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGludHJvZHVjZXMgYW5kIGRlc2NyaWJlcyBob3cgdG8gc2V0IHVwIGFuZCB1c2UKLSAgICAgICAgICAgICAgICAgICAgVG9hc3Rlciwgd2hpY2ggaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW08L2xpbms+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLTwhLS0KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9M1psT3UtZ0xzaDAnPgotICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERSBZb2N0byBQbHVnLWluPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQSBzdGVwLWJ5LXN0ZXAgaW5zdHJ1Y3Rpb25hbCB2aWRlbyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIGRlbW9uc3RyYXRlcyBob3cgYW4gYXBwbGljYXRpb24gZGV2ZWxvcGVyIHVzZXMgWW9jdG8gUGx1Zy1pbiBmZWF0dXJlcyB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLS0tPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hcHBlbmRpeC1sYXRlc3QteXAtZWNsaXBzZS1wbHVnLWluJz5FY2xpcHNlIElERSBZb2N0byBQbHVnLWluPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25zIHRoYXQgZGVtb25zdHJhdGUgaG93IGFuIGFwcGxpY2F0aW9uIGRldmVsb3BlcgotICAgICAgICAgICAgICAgICAgICB1c2VzIHRoZSBFY2xpcHNlIFlvY3RvIFByb2plY3QgUGx1Zy1pbiBmZWF0dXJlIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9GQVEnPkZBUTwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBjb21tb25seSBhc2tlZCBxdWVzdGlvbnMgYW5kIHRoZWlyIGFuc3dlcnMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX05PVEVTOyc+UmVsZWFzZSBOb3RlczwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEZlYXR1cmVzLCB1cGRhdGVzIGFuZCBrbm93biBpc3N1ZXMgZm9yIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgICAgIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvdG9vbHMtcmVzb3VyY2VzL3Byb2plY3RzL3RvYXN0ZXInPlRvYXN0ZXI8L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBBbiBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgKEFQSSkgYW5kIHdlYi1iYXNlZAotICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UgdG8gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHdoaWNoIHVzZXMKLSAgICAgICAgICAgICAgICAgICAgQml0QmFrZSwgdGhhdCByZXBvcnRzIGJ1aWxkIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L3Rvb2xzLXJlc291cmNlcy9wcm9qZWN0cy9idWlsZC1hcHBsaWFuY2UnPkJ1aWxkIEFwcGxpYW5jZTwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEEgdmlydHVhbCBtYWNoaW5lIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZW5hYmxlcyB5b3UgdG8gYnVpbGQgYW5kIGJvb3QgYSBjdXN0b20gZW1iZWRkZWQgTGludXggaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCB1c2luZyBhIG5vbi1MaW51eCBkZXZlbG9wbWVudCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19CVUdaSUxMQV9VUkw7Jz5CdWd6aWxsYTwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBidWcgdHJhY2tpbmcgYXBwbGljYXRpb24gdGhlIFlvY3RvIFByb2plY3QgdXNlcy4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGZpbmQgcHJvYmxlbXMgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgeW91IHNob3VsZCByZXBvcnQgdGhlbSB1c2luZyB0aGlzCi0gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPllvY3RvIFByb2plY3QgTWFpbGluZyBMaXN0czo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUbyBzdWJzY3JpYmUgdG8gdGhlIFlvY3RvIFByb2plY3QgbWFpbGluZwotICAgICAgICAgICAgICAgICAgICBsaXN0cywgY2xpY2sgb24gdGhlIGZvbGxvd2luZyBVUkxzIGFuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fTElTVFNfVVJMOy9saXN0aW5mby95b2N0byc+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYSBZb2N0byBQcm9qZWN0IERpc2N1c3Npb25zIG1haWxpbmcgbGlzdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fTElTVFNfVVJMOy9saXN0aW5mby9wb2t5Jz48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIFlvY3RvIFByb2plY3QgRGlzY3Vzc2lvbnMgbWFpbGluZyBsaXN0IGFib3V0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gKFBva3kpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L2xpc3RpbmZvL3lvY3RvLWFubm91bmNlJz48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIG1haWxpbmcgbGlzdCB0byByZWNlaXZlIG9mZmljaWFsIFlvY3RvIFByb2plY3QgYW5ub3VuY2VtZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgWW9jdG8gUHJvamVjdCBtaWxlc3RvbmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L2xpc3RpbmZvJz48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIGxpc3Rpbmcgb2YgYWxsIHB1YmxpYyBtYWlsaW5nIGxpc3RzIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5JbnRlcm5ldCBSZWxheSBDaGF0IChJUkMpOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFR3byBJUkMgY2hhbm5lbHMgb24gZnJlZW5vZGUgYXJlIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICBmb3IgWW9jdG8gUHJvamVjdCBhbmQgUG9reSBkaXNjdXNzaW9uczogPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+I3Bva3k8L2ZpbGVuYW1lPiwgcmVzcGVjdGl2ZWx5LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmT0VfSE9NRV9VUkw7Jz5PcGVuRW1iZWRkZWQ8L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHVzZWQgYnkgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgcHJvamVjdCBpcyB0aGUgdXBzdHJlYW0sIGdlbmVyaWMsIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHRoZSBZb2N0byBQcm9qZWN0IGRlcml2ZXMgaXRzIGJ1aWxkIHN5c3RlbSAoUG9reSkKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRvIHdoaWNoIGl0IGNvbnRyaWJ1dGVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmcvd2lraS9CaXRCYWtlJz5CaXRCYWtlPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHRvb2wgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICB0byBwcm9jZXNzIHByb2plY3QgbWV0YWRhdGEuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw6PC91bGluaz48L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBBIGNvbXByZWhlbnNpdmUgZ3VpZGUgdG8gdGhlIEJpdEJha2UgdG9vbC4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgaW5mb3JtYXRpb24gb24gQml0QmFrZSwgc2VlIHRoaXMgbWFudWFsLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9JbmRleC5odG1sJz5RdWljayBFTVVsYXRvciAoUUVNVSk8L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBBbiBvcGVuLXNvdXJjZSBtYWNoaW5lIGVtdWxhdG9yIGFuZCB2aXJ0dWFsaXplci4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIEZvciBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+LgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFuIGludHJvZHVjdG9yeSB0byB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBieSB3b3JraW5nCisgICAgICAgICAgICB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgbGlua3MgYW5kIG90aGVyIGRvY3VtZW50YXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbGlua3MtYW5kLXJlbGF0ZWQtZG9jdW1lbnRhdGlvbic+TGlua3MgYW5kIFJlbGF0ZWQgRG9jdW1lbnRhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbW9kZWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLW1vZGVsLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAwOGUxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbW9kZWwueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTY1NCArMCwwIEBACi08IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08Y2hhcHRlciBpZD0nZGV2LW1hbnVhbC1tb2RlbCc+Ci0KLTx0aXRsZT5Db21tb24gRGV2ZWxvcG1lbnQgTW9kZWxzPC90aXRsZT4KLQotPHBhcmE+Ci0gICAgTWFueSBkZXZlbG9wbWVudCBtb2RlbHMgZXhpc3QgZm9yIHdoaWNoIHlvdSBjYW4gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgotICAgIFRoaXMgY2hhcHRlciBvdmVydmlld3Mgc2ltcGxlIG1ldGhvZHMgdGhhdCB1c2UgdG9vbHMgcHJvdmlkZWQgYnkgdGhlCi0gICAgWW9jdG8gUHJvamVjdDoKLSAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlN5c3RlbSBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgIFN5c3RlbSBEZXZlbG9wbWVudCBjb3ZlcnMgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgYW5kIGtlcm5lbCBtb2RpZmljYXRpb24gb3IgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvbiBob3cgdG8gY3JlYXRlIGEgQlNQLCBzZWUgdGhlCi0gICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC91bGluaz4iCi0gICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKLSAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KLSAgICAgICAgICAgICBGb3IgbW9yZSBjb21wbGV0ZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gd29yayB3aXRoIHRoZSBrZXJuZWwsCi0gICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVzZXIgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICBVc2VyIEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGNvdmVycyBkZXZlbG9wbWVudCBvZiBhcHBsaWNhdGlvbnMKLSAgICAgICAgICAgICB0aGF0IHlvdSBpbnRlbmQgdG8gcnVuIG9uIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGZvcgotICAgICAgICAgICAgIHVzZXItc3BhY2UgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQsIHNlZSB0aGUKLSAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KLSAgICAgICAgICAgICBGb3IgYSBzaW1wbGUgZXhhbXBsZSBvZiB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IHVzaW5nCi0gICAgICAgICAgICAgdGhlIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IElERSwgc2VlIHRoZQotICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZGV2ZWxvcGluZy1hcHBsaWNhdGlvbnMtdXNpbmctZWNsaXBzZSc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L3VsaW5rPiIgc2VjdGlvbi4KLSAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VGVtcG9yYXJ5IFNvdXJjZSBDb2RlIE1vZGlmaWNhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgIERpcmVjdCBtb2RpZmljYXRpb24gb2YgdGVtcG9yYXJ5IHNvdXJjZSBjb2RlIGlzIGEgY29udmVuaWVudAotICAgICAgICAgICAgIGRldmVsb3BtZW50IG1vZGVsIHRvIHF1aWNrbHkgaXRlcmF0ZSBhbmQgZGV2ZWxvcCB0b3dhcmRzIGEKLSAgICAgICAgICAgICBzb2x1dGlvbi4KLSAgICAgICAgICAgICBPbmNlIHlvdSBpbXBsZW1lbnQgdGhlIHNvbHV0aW9uLCB5b3Ugc2hvdWxkIG9mIGNvdXJzZSB0YWtlCi0gICAgICAgICAgICAgc3RlcHMgdG8gZ2V0IHRoZSBjaGFuZ2VzIHVwc3RyZWFtIGFuZCBhcHBsaWVkIGluIHRoZSBhZmZlY3RlZAotICAgICAgICAgICAgIHJlY2lwZXMuCi0gICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkltYWdlIERldmVsb3BtZW50IHVzaW5nIFRvYXN0ZXI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L1Rvb2xzLXJlc291cmNlcy9wcm9qZWN0cy90b2FzdGVyJz5Ub2FzdGVyPC91bGluaz4KLSAgICAgICAgICAgICB0byBidWlsZCBjdXN0b20gb3BlcmF0aW5nIHN5c3RlbSBpbWFnZXMgd2l0aGluIHRoZSBidWlsZAotICAgICAgICAgICAgIGVudmlyb25tZW50LgotICAgICAgICAgICAgIFRvYXN0ZXIgcHJvdmlkZXMgYW4gZWZmaWNpZW50IGludGVyZmFjZSB0byB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgdGhhdCBhbGxvd3MgeW91IHRvIHN0YXJ0IGJ1aWxkcyBhbmQgZXhhbWluZSBidWlsZCBzdGF0aXN0aWNzLgotICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2luZyBhIERldmVsb3BtZW50IFNoZWxsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgWW91IGNhbiB1c2UgYQotICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3BsYXRkZXYtYXBwZGV2LWRldnNoZWxsJz48ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICB0byBlZmZpY2llbnRseSBkZWJ1ZwotICAgICAgICAgICAgIGNvbW1hbmRzIG9yIHNpbXBseSBlZGl0IHBhY2thZ2VzLgotICAgICAgICAgICAgIFdvcmtpbmcgaW5zaWRlIGEgZGV2ZWxvcG1lbnQgc2hlbGwgaXMgYSBxdWljayB3YXkgdG8gc2V0IHVwIHRoZQotICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudCB0byB3b3JrIG9uIHBhcnRzIG9mIGEgcHJvamVjdC4KLSAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgPC9pdGVtaXplZGxpc3Q+Ci08L3BhcmE+Ci0KLTxzZWN0aW9uIGlkPSdzeXN0ZW0tZGV2ZWxvcG1lbnQtbW9kZWwnPgotICAgIDx0aXRsZT5TeXN0ZW0gRGV2ZWxvcG1lbnQgV29ya2Zsb3c8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFN5c3RlbSBkZXZlbG9wbWVudCBpbnZvbHZlcyBtb2RpZmljYXRpb24gb3IgY3JlYXRpb24gb2YgYW4gaW1hZ2UgdGhhdCB5b3Ugd2FudCB0byBydW4gb24KLSAgICAgICAgYSBzcGVjaWZpYyBoYXJkd2FyZSB0YXJnZXQuCi0gICAgICAgIFVzdWFsbHksIHdoZW4geW91IHdhbnQgdG8gY3JlYXRlIGFuIGltYWdlIHRoYXQgcnVucyBvbiBlbWJlZGRlZCBoYXJkd2FyZSwgdGhlIGltYWdlIGRvZXMKLSAgICAgICAgbm90IHJlcXVpcmUgdGhlIHNhbWUgbnVtYmVyIG9mIGZlYXR1cmVzIHRoYXQgYSBmdWxsLWZsZWRnZWQgTGludXggZGlzdHJpYnV0aW9uIHByb3ZpZGVzLgotICAgICAgICBUaHVzLCB5b3UgY2FuIGNyZWF0ZSBhIG11Y2ggc21hbGxlciBpbWFnZSB0aGF0IGlzIGRlc2lnbmVkIHRvIHVzZSBvbmx5IHRoZQotICAgICAgICBmZWF0dXJlcyBmb3IgeW91ciBwYXJ0aWN1bGFyIGhhcmR3YXJlLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUbyBoZWxwIHlvdSB1bmRlcnN0YW5kIGhvdyBzeXN0ZW0gZGV2ZWxvcG1lbnQgd29ya3MgaW4gdGhlIFlvY3RvIFByb2plY3QsIHRoaXMgc2VjdGlvbgotICAgICAgICBjb3ZlcnMgdHdvIHR5cGVzIG9mIGltYWdlIGRldmVsb3BtZW50OiAgQlNQIGNyZWF0aW9uIGFuZCBrZXJuZWwgbW9kaWZpY2F0aW9uIG9yCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz4KLSAgICAgICAgPHRpdGxlPkRldmVsb3BpbmcgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQSBCU1AgaXMgYSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgdGhhdCwgd2hlbiBhcHBsaWVkIGR1cmluZyBhIGJ1aWxkLCByZXN1bHRzIGluCi0gICAgICAgICAgICBhbiBpbWFnZSB0aGF0IHlvdSBjYW4gcnVuIG9uIGEgcGFydGljdWxhciBib2FyZC4KLSAgICAgICAgICAgIFRodXMsIHRoZSBwYWNrYWdlIHdoZW4gY29tcGlsZWQgaW50byB0aGUgbmV3IGltYWdlLCBzdXBwb3J0cyB0aGUgb3BlcmF0aW9uIG9mIHRoZSBib2FyZC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgRm9yIGEgYnJpZWYgbGlzdCBvZiB0ZXJtcyB1c2VkIHdoZW4gZGVzY3JpYmluZyB0aGUgZGV2ZWxvcG1lbnQgcHJvY2VzcyBpbiB0aGUgWW9jdG8gUHJvamVjdCwKLSAgICAgICAgICAgIHNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3lvY3RvLXByb2plY3QtdGVybXMnPllvY3RvIFByb2plY3QgVGVybXM8L2xpbms+IiBzZWN0aW9uLgotICAgICAgICA8L25vdGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyB0aGUgYmFzaWMKLSAgICAgICAgICAgIHN0ZXBzIHVzZWQgdG8gY3JlYXRlIGEgQlNQIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0J3MKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I3VzaW5nLXRoZS15b2N0by1wcm9qZWN0cy1ic3AtdG9vbHMnPkJTUCBUb29sczwvdWxpbms+LgotICAgICAgICAgICAgQWx0aG91Z2ggbm90IHJlcXVpcmVkIGZvciBCU1AgY3JlYXRpb24sIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCB3aGljaCBjb250YWlucwotICAgICAgICAgICAgbWFueSBCU1BzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCwgaXMgcGFydCBvZiB0aGUgZXhhbXBsZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgdG8gY3JlYXRlIGEgbmV3IGxheWVyIHVzaW5nIHRoZSB0b29scywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC91bGluaz4iCi0gICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaWxsdXN0cmF0aW9uIGFuZCBsaXN0IHN1bW1hcml6ZSB0aGUgQlNQIGNyZWF0aW9uIGdlbmVyYWwgd29ya2Zsb3cuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2V0IHVwIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gdG8gc3VwcG9ydAotICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdDwvZW1waGFzaXM+OiAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyN0aGUtbGludXgtZGlzdHJvJz5UaGUgTGludXggRGlzdHJpYnV0aW9uPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcGFja2FnZXMnPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC91bGluaz4iIHNlY3Rpb25zIGJvdGgKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgZm9yIHJlcXVpcmVtZW50cy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzdGFibGlzaCBhIGxvY2FsIGNvcHkgb2YgdGhlIHByb2plY3QgZmlsZXMgb24geW91cgotICAgICAgICAgICAgICAgICAgICBzeXN0ZW08L2VtcGhhc2lzPjogIFlvdSBuZWVkIHRoaXMgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlCi0gICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeTwvbGluaz4gYXZhaWxhYmxlIG9uIHlvdXIgaG9zdCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIEhhdmluZyB0aGVzZSBmaWxlcyBvbiB5b3VyIHN5c3RlbSBnaXZlcyB5b3UgYWNjZXNzIHRvIHRoZSBidWlsZAotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIGFuZCB0byB0aGUgdG9vbHMgeW91IG5lZWQuCi0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIHRoZSBTb3VyY2UgRGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXNldHVwJz5HZXR0aW5nIFNldCBVcDwvbGluaz4iIHNlY3Rpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3RhYmxpc2ggdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBvbiB5b3VyIHN5c3RlbTwvZW1waGFzaXM+OiAgSGF2aW5nIGxvY2FsIGNvcGllcwotICAgICAgICAgICAgICAgICAgICBvZiB0aGVzZSBzdXBwb3J0ZWQgQlNQIGxheWVycyBvbiB5b3VyIHN5c3RlbSBnaXZlcyB5b3UKLSAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRvIGxheWVycyB5b3UgbWlnaHQgYmUgYWJsZSB0byBidWlsZCBvbiBvciBtb2RpZnkKLSAgICAgICAgICAgICAgICAgICAgdG8gY3JlYXRlIHlvdXIgQlNQLgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCB0aGVzZSBmaWxlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1zZXR1cCc+R2V0dGluZyBTZXQgVXA8L2xpbms+IiBzZWN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q3JlYXRlIHlvdXIgb3duIEJTUCBsYXllciB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz48ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT48L3VsaW5rPiBzY3JpcHQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIGFyZSBpZGVhbCBmb3IKLSAgICAgICAgICAgICAgICAgICAgaXNvbGF0aW5nIGFuZCBzdG9yaW5nIHdvcmsgZm9yIGEgZ2l2ZW4gcGllY2Ugb2YgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgIEEgbGF5ZXIgaXMgcmVhbGx5IGp1c3QgYSBsb2NhdGlvbiBvciBhcmVhIGluIHdoaWNoIHlvdSBwbGFjZQotICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbnMgZm9yIHlvdXIgQlNQLgotICAgICAgICAgICAgICAgICAgICBJbiBmYWN0LCBhIEJTUCBpcywgaW4gaXRzZWxmLCBhIHNwZWNpYWwgdHlwZSBvZiBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHNpbXBsZXN0IHdheSB0byBjcmVhdGUgYSBuZXcgQlNQIGxheWVyIHRoYXQgaXMgY29tcGxpYW50IHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgaXMgdG8gdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhhdCBzY3JpcHQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBleGFtcGxlIHRoYXQgaWxsdXN0cmF0ZXMgYSBsYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgaXMgYW4gYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3NlIHlvdSBhcmUgY3JlYXRpbmcgYW4gYXBwbGljYXRpb24gdGhhdCBoYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgb3Igb3RoZXIgZGVwZW5kZW5jaWVzIGluIG9yZGVyIGZvciBpdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZSBhbmQgcnVuLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxheWVyLCBpbiB0aGlzIGNhc2UsIHdvdWxkIGJlIHdoZXJlIGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgdGhhdCBkZWZpbmUgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBrZXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGtleSBwb2ludCBmb3IgYSBsYXllciBpcyB0aGF0IGl0IGlzIGFuIGlzb2xhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmVhIHRoYXQgY29udGFpbnMgYWxsIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwcm9qZWN0IHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0ga25vd3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGFib3V0LgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEJTUCBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKQotICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml2ZSBCU1BzIGV4aXN0IHRoYXQgYXJlIHBhcnQgb2YgdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJlYWdsZWJvbmU8L2ZpbGVuYW1lPiAoQVJNKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1wYzgzMTVlPC9maWxlbmFtZT4gKFBvd2VyUEMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmVkZ2Vyb3V0ZXI8L2ZpbGVuYW1lPiAoTUlQUykuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9ucyBmb3IgdGhlc2UgZml2ZSBCU1BzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBsb2NhdGVkIGFuZCBkaXNwZXJzZWQgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWUgY29yZSBJbnRlbCBCU1BzIGV4aXN0IGFzIHBhcnQgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcmVsZWFzZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW50ZWwtY29yZTItMzI8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIHRoZSBDb3JlMiBmYW1pbHkgb2YgQ1BVcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYWxsIENQVXMgcHJpb3IgdG8gdGhlIFNpbHZlcm1vbnQgY29yZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW50ZWwtY29yZWk3LTY0PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBCU1Agb3B0aW1pemVkIGZvciBOZWhhbGVtIGFuZCBsYXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUgYW5kIFhlb24gQ1BVcyBhcyB3ZWxsIGFzIFNpbHZlcm1vbnQgYW5kIGxhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXRvbSBDUFVzLCBzdWNoIGFzIHRoZSBCYXl0cmFpbCBTb0NzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbnRlbC1xdWFyazwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgdGhlIEludGVsIEdhbGlsZW8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4xICZhbXA7IGdlbjIgZGV2ZWxvcG1lbnQgYm9hcmRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBzZXQgdXAgYSBsYXllciBmb3IgYSBuZXcgQlNQLCB5b3Ugc2hvdWxkIGZvbGxvdyBhIHN0YW5kYXJkIGxheW91dC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBsYXlvdXQgaXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjYnNwLWZpbGVsYXlvdXQnPkV4YW1wbGUgRmlsZXN5c3RlbSBMYXlvdXQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BtZW50IEd1aWRlLgotICAgICAgICAgICAgICAgICAgICBJbiB0aGUgc3RhbmRhcmQgbGF5b3V0LCB5b3Ugd2lsbCBub3RpY2UgYSBzdWdnZXN0ZWQgc3RydWN0dXJlIGZvciByZWNpcGVzIGFuZAotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc3RhbmRhcmQgbGF5b3V0IGZvciBhIEJTUCBieSBleGFtaW5pbmcKLSAgICAgICAgICAgICAgICAgICAgYW55IHN1cHBvcnRlZCBCU1AgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIgaW5zaWRlCi0gICAgICAgICAgICAgICAgICAgIHRoZSBTb3VyY2UgRGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFrZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgdG8geW91ciBuZXcgQlNQCi0gICAgICAgICAgICAgICAgICAgIGxheWVyPC9lbXBoYXNpcz46ICBUaGUgc3RhbmRhcmQgQlNQIGxheWVyIHN0cnVjdHVyZSBvcmdhbml6ZXMgdGhlIGZpbGVzIHlvdSBuZWVkCi0gICAgICAgICAgICAgICAgICAgIHRvIGVkaXQgaW4gPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBhbmQgc2V2ZXJhbCA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgd2l0aGluIHRoZSBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY2hhbmdlcyBpZGVudGlmeSB3aGVyZSB5b3VyIG5ldyBsYXllciBpcyBvbiB0aGUgbG9jYWwgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgIGFuZCBpZGVudGlmeSB3aGljaCBrZXJuZWwgeW91IGFyZSBnb2luZyB0byB1c2UuCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGUgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IHNjcmlwdCwgeW91IGFyZSBhYmxlIHRvIGludGVyYWN0aXZlbHkKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlIG1hbnkgdGhpbmdzIGZvciB0aGUgQlNQIChlLmcuIGtleWJvYXJkLCB0b3VjaHNjcmVlbiwgYW5kIHNvIGZvcnRoKS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWtlIHJlY2lwZSBjaGFuZ2VzIHRvIHlvdXIgbmV3IEJTUCBsYXllcjwvZW1waGFzaXM+OiAgUmVjaXBlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgaW5jbHVkZSBhbHRlcmluZyByZWNpcGVzICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMpLCByZW1vdmluZwotICAgICAgICAgICAgICAgICAgICByZWNpcGVzIHlvdSBkbyBub3QgdXNlLCBhbmQgYWRkaW5nIG5ldyByZWNpcGVzIG9yIGFwcGVuZCBmaWxlcwotICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KSB0aGF0IHlvdSBuZWVkIHRvIHN1cHBvcnQgeW91ciBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmVwYXJlIGZvciB0aGUgYnVpbGQ8L2VtcGhhc2lzPjogIE9uY2UgeW91IGhhdmUgbWFkZSBhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdG8geW91ciBCU1AgbGF5ZXIsIHRoZXJlIHJlbWFpbnMgYSBmZXcgdGhpbmdzCi0gICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGRvIGZvciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbiBvcmRlciBmb3IgaXQgdG8gY3JlYXRlIHlvdXIgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGdldCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgcmVhZHkgYnkgc291cmNpbmcgYW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSBuZWVkIHRvIGJlIHN1cmUgdHdvIGtleSBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBjb25maWd1cmVkIGFwcHJvcHJpYXRlbHk6Ci0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgbWFrZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhd2FyZSBvZiB5b3VyIG5ldyBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZW5hYmxpbmcteW91ci1sYXllcic+RW5hYmxpbmcgWW91ciBMYXllcjwvbGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBsZXQgdGhlIGJ1aWxkIHN5c3RlbSBrbm93IGFib3V0IHlvdXIgbmV3IGxheWVyLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGVudGlyZSBwcm9jZXNzIGZvciBidWlsZGluZyBhbiBpbWFnZSBpcyBvdmVydmlld2VkIGluIHRoZSBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBtaWdodCB3YW50IHRvIHJlZmVyZW5jZSB0aGlzIGluZm9ybWF0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgdGhlIGltYWdlPC9lbXBoYXNpcz46ICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICB1c2VzIHRoZSBCaXRCYWtlIHRvb2wgdG8gYnVpbGQgaW1hZ2VzIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGltYWdlIHlvdSB3YW50IHRvIGNyZWF0ZS4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQml0QmFrZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBidWlsZCBwcm9jZXNzIHN1cHBvcnRzIHNldmVyYWwgdHlwZXMgb2YgaW1hZ2VzIHRvIHNhdGlzZnkgZGlmZmVyZW50IG5lZWRzLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIgY2hhcHRlcgotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBpbmZvcm1hdGlvbiBvbgotICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgaW1hZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiB2aWV3IGEgdmlkZW8gcHJlc2VudGF0aW9uIG9uICJCdWlsZGluZyBDdXN0b20gRW1iZWRkZWQgSW1hZ2VzIHdpdGggWW9jdG8iCi0gICAgICAgICAgICBhdCA8dWxpbmsgdXJsPSdodHRwOi8vZnJlZS1lbGVjdHJvbnMuY29tL2Jsb2cvZWxjLTIwMTEtdmlkZW9zJz5GcmVlIEVsZWN0cm9uczwvdWxpbms+LgotICAgICAgICAgICAgQWZ0ZXIgZ29pbmcgdG8gdGhlIHBhZ2UsIGp1c3Qgc2VhcmNoIGZvciAiRW1iZWRkZWQiLgotICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgc3VwcGxlbWVudGFsIGluZm9ybWF0aW9uIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPgotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KLSAgICAgICAgICAgIEZpbmFsbHksIHRoZXJlIGlzIGhlbHBmdWwgbWF0ZXJpYWwgYW5kIGxpbmtzIG9uIHRoaXMKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9UcmFuc2NyaXB0Ol9jcmVhdGluZ19vbmVfZ2VuZXJpY19BdG9tX0JTUF9mcm9tX2Fub3RoZXInPndpa2kgcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgQWx0aG91Z2ggYSBiaXQgZGF0ZWQsIHlvdSBtaWdodCBmaW5kIHRoZSBpbmZvcm1hdGlvbiBvbiB0aGUgd2lraQotICAgICAgICAgICAgaGVscGZ1bC4KLSAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J21vZGlmeWluZy10aGUta2VybmVsJz4KLSAgICAgICAgPHRpdGxlPjxhbmNob3IgaWQ9J2tlcm5lbC1zcG90JyAvPk1vZGlmeWluZyB0aGUgS2VybmVsPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEtlcm5lbCBtb2RpZmljYXRpb24gaW52b2x2ZXMgY2hhbmdpbmcgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsLCB3aGljaCBjb3VsZCBpbnZvbHZlIGNoYW5naW5nCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgd2VsbCBhcyBhZGRpbmcgbmV3IGtlcm5lbCByZWNpcGVzLgotICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBjaGFuZ2VzIGNhbiBiZSBhZGRlZCBpbiB0aGUgZm9ybSBvZiBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgd2hpbGUgcmVjaXBlCi0gICAgICAgICAgICBtb2RpZmljYXRpb24gY29tZXMgdGhyb3VnaCB0aGUga2VybmVsJ3MgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4gYXJlYQotICAgICAgICAgICAgaW4gYSBrZXJuZWwgbGF5ZXIgeW91IGNyZWF0ZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJlc2VudHMgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICBrZXJuZWwgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgc3RlcHMgdG8gbW9kaWZ5IHRoZSBrZXJuZWwuCi0gICAgICAgICAgICBZb3UgY2FuIHJlZmVyZW5jZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwYXRjaGluZy10aGUta2VybmVsJz5QYXRjaGluZyB0aGUgS2VybmVsPC9saW5rPiIgc2VjdGlvbgotICAgICAgICAgICAgZm9yIGFuIGV4YW1wbGUgdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBvZiB0aGUga2VybmVsLgotICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb25maWd1cmUgdGhlIGtlcm5lbCwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NvbmZpZ3VyaW5nLXRoZS1rZXJuZWwnPkNvbmZpZ3VyaW5nIHRoZSBLZXJuZWw8L2xpbms+IiBzZWN0aW9uLgotICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGtlcm5lbCBhbmQgb24gbW9kaWZ5aW5nIHRoZSBrZXJuZWwsIHNlZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC91bGluaz4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0na2VybmVsLW92ZXJ2aWV3Jz4KLSAgICAgICAgICAgIDx0aXRsZT5LZXJuZWwgT3ZlcnZpZXc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUcmFkaXRpb25hbGx5LCB3aGVuIG9uZSB0aGlua3Mgb2YgYSBwYXRjaGVkIGtlcm5lbCwgdGhleSB0aGluayBvZiBhIGJhc2Uga2VybmVsCi0gICAgICAgICAgICAgICAgc291cmNlIHRyZWUgYW5kIGEgZml4ZWQgc3RydWN0dXJlIHRoYXQgY29udGFpbnMga2VybmVsIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QsIGhvd2V2ZXIsIGVtcGxveXMgbWVjaGFuaXNtcyB0aGF0LCBpbiBhIHNlbnNlLCByZXN1bHQgaW4gYSBrZXJuZWwgc291cmNlCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLgotICAgICAgICAgICAgICAgIEJ5IHRoZSBlbmQgb2YgdGhpcyBzZWN0aW9uLCB0aGlzIGFuYWxvZ3kgd2lsbCBiZWNvbWUgY2xlYXJlci4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgd2ViIGludGVyZmFjZSB0byB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgc291cmNlIHJlcG9zaXRvcmllcyBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgSWYgeW91IGxvb2sgYXQgdGhlIGludGVyZmFjZSwgeW91IHdpbGwgc2VlIHRvIHRoZSBsZWZ0IGEgZ3JvdXBpbmcgb2YKLSAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yaWVzIHRpdGxlZCAiWW9jdG8gTGludXggS2VybmVsLiIKLSAgICAgICAgICAgICAgICBXaXRoaW4gdGhpcyBncm91cCwgeW91IHdpbGwgZmluZCBzZXZlcmFsIGtlcm5lbHMgc3VwcG9ydGVkIGJ5Ci0gICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Q6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE0PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhYmxlIFlvY3RvIFByb2plY3Qga2VybmVsIHRvIHVzZSB3aXRoIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlcyAxLjYgYW5kIDEuNy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCAzLjE0IHJlbGVhc2VkIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTc8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0gQW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwsIHVuc3VwcG9ydGVkIFlvY3RvIFByb2plY3Qga2VybmVsIHVzZWQgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgUmVsZWFzZSAxLjcuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGtlcm5lbCBpcyBiYXNlZCBvbiB0aGUgTGludXggMy4xNyByZWxlYXNlZCBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE5PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhYmxlIFlvY3RvIFByb2plY3Qga2VybmVsIHRvIHVzZSB3aXRoIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDEuOC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCAzLjE5IHJlbGVhc2VkIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLSBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZSAyLjAuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGtlcm5lbCBpcyBiYXNlZCBvbiB0aGUgTGludXggNC4xIHJlbGVhc2VkIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuNDwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLSBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZSAyLjEuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGtlcm5lbCBpcyBiYXNlZCBvbiB0aGUgTGludXggNC40IHJlbGVhc2VkIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWRldjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLSBBCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBrZXJuZWwgYmFzZWQgb24gdGhlIGxhdGVzdCB1cHN0cmVhbSByZWxlYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIExvbmcgVGVybSBTdXBwb3J0IEluaXRpYXRpdmUgKExUU0kpIGZvciBZb2N0byBQcm9qZWN0IGtlcm5lbHMKLSAgICAgICAgICAgICAgICAgICAgaXMgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Gb3IgWW9jdG8gUHJvamVjdCByZWxlYXNlcyAxLjcsIDEuOCwgYW5kIDIuMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTFRTSSBrZXJuZWwgaXMgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Gb3IgWW9jdG8gUHJvamVjdCByZWxlYXNlIDIuMSwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTFRTSSBrZXJuZWwgaXMgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBrZXJuZWxzIGFyZSBtYWludGFpbmVkIHVzaW5nIHRoZSBHaXQgcmV2aXNpb24gY29udHJvbCBzeXN0ZW0KLSAgICAgICAgICAgICAgICB0aGF0IHN0cnVjdHVyZXMgdGhlbSB1c2luZyB0aGUgZmFtaWxpYXIgInRyZWUiLCAiYnJhbmNoIiwgYW5kICJsZWFmIiBzY2hlbWUuCi0gICAgICAgICAgICAgICAgQnJhbmNoZXMgcmVwcmVzZW50IGRpdmVyc2lvbnMgZnJvbSBnZW5lcmFsIGNvZGUgdG8gbW9yZSBzcGVjaWZpYyBjb2RlLCB3aGlsZSBsZWF2ZXMKLSAgICAgICAgICAgICAgICByZXByZXNlbnQgdGhlIGVuZC1wb2ludHMgZm9yIGEgY29tcGxldGUgYW5kIHVuaXF1ZSBrZXJuZWwgd2hvc2Ugc291cmNlIGZpbGVzLAotICAgICAgICAgICAgICAgIHdoZW4gZ2F0aGVyZWQgZnJvbSB0aGUgcm9vdCBvZiB0aGUgdHJlZSB0byB0aGUgbGVhZiwgYWNjdW11bGF0ZSB0byBjcmVhdGUgdGhlIGZpbGVzCi0gICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBhIHNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlIGFuZCBpdHMgZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgZGlzcGxheXMgdGhpcyBjb25jZXB0OgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1vdmVydmlldy0xLnBuZyIKLSAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjZpbiIgZGVwdGg9IjZpbiIgYWxpZ249ImNlbnRlciIgc2NhbGU9IjEwMCIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2l0aGluIHRoZSBmaWd1cmUsIHRoZSAiS2VybmVsLm9yZyBCcmFuY2ggUG9pbnQiIHJlcHJlc2VudHMgdGhlIHBvaW50IGluIHRoZSB0cmVlCi0gICAgICAgICAgICAgICAgd2hlcmUgYSBzdXBwb3J0ZWQgYmFzZSBrZXJuZWwgaXMgbW9kaWZpZWQgZnJvbSB0aGUgTGludXgga2VybmVsLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIGNvdWxkIGJlIHRoZSBicmFuY2ggcG9pbnQgZm9yIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAga2VybmVsLgotICAgICAgICAgICAgICAgIFRodXMsIGV2ZXJ5dGhpbmcgZnVydGhlciB0byB0aGUgcmlnaHQgaW4gdGhlIHN0cnVjdHVyZSBpcyBiYXNlZCBvbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOTwvZmlsZW5hbWU+IGtlcm5lbC4KLSAgICAgICAgICAgICAgICBCcmFuY2ggcG9pbnRzIHRvIHRoZSByaWdodCBpbiB0aGUgZmlndXJlIHJlcHJlc2VudCB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOTwvZmlsZW5hbWU+IGtlcm5lbCBpcyBtb2RpZmllZCBmb3Igc3BlY2lmaWMgaGFyZHdhcmUKLSAgICAgICAgICAgICAgICBvciB0eXBlcyBvZiBrZXJuZWxzLCBzdWNoIGFzIHJlYWwtdGltZSBrZXJuZWxzLgotICAgICAgICAgICAgICAgIEVhY2ggbGVhZiB0aHVzIHJlcHJlc2VudHMgdGhlIGVuZC1wb2ludCBmb3IgYSBrZXJuZWwgZGVzaWduZWQgdG8gcnVuIG9uIGEgc3BlY2lmaWMKLSAgICAgICAgICAgICAgICB0YXJnZXRlZCBkZXZpY2UuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBvdmVyYWxsIHJlc3VsdCBpcyBhIEdpdC1tYWludGFpbmVkIHJlcG9zaXRvcnkgZnJvbSB3aGljaCBhbGwgdGhlIHN1cHBvcnRlZAotICAgICAgICAgICAgICAgIGtlcm5lbCB0eXBlcyBjYW4gYmUgZGVyaXZlZCBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQgZGV2aWNlcy4KLSAgICAgICAgICAgICAgICBBIGJpZyBhZHZhbnRhZ2UgdG8gdGhpcyBzY2hlbWUgaXMgdGhlIHNoYXJpbmcgb2YgY29tbW9uIGZlYXR1cmVzIGJ5IGtlZXBpbmcgdGhlbSBpbgotICAgICAgICAgICAgICAgICJsYXJnZXIiIGJyYW5jaGVzIHdpdGhpbiB0aGUgdHJlZS4KLSAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGVsaW1pbmF0ZXMgcmVkdW5kYW50IHN0b3JhZ2Ugb2Ygc2ltaWxhciBmZWF0dXJlcyBzaGFyZWQgYW1vbmcga2VybmVscy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgS2VlcCBpbiBtaW5kIHRoZSBmaWd1cmUgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgYWxsIHRoZSBzdXBwb3J0ZWQgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0IGtlcm5lbCB0eXBlcywgYnV0IHJhdGhlciBzaG93cyBhIHNpbmdsZSBnZW5lcmljIGtlcm5lbCBqdXN0IGZvciBjb25jZXB0dWFsIHB1cnBvc2VzLgotICAgICAgICAgICAgICAgIEFsc28ga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzCi0gICAgICAgICAgICAgICAgdGhhdCBhcmUgZWl0aGVyIHB1bGxlZCBmcm9tIGR1cmluZyB0aGUgYnVpbGQgb3IgZXN0YWJsaXNoZWQgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtCi0gICAgICAgICAgICAgICAgcHJpb3IgdG8gdGhlIGJ1aWxkIGJ5IGVpdGhlciBjbG9uaW5nIGEgcGFydGljdWxhciBrZXJuZWwncyBHaXQgcmVwb3NpdG9yeSBvciBieQotICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nIGFuZCB1bnBhY2tpbmcgYSB0YXJiYWxsLgotICAgICAgICAgICAgPC9ub3RlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBVcHN0cmVhbSBzdG9yYWdlIG9mIGFsbCB0aGUgYXZhaWxhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBpcyBvbmUgdGhpbmcsIHdoaWxlCi0gICAgICAgICAgICAgICAgcmVwcmVzZW50aW5nIGFuZCB1c2luZyB0aGUgY29kZSBvbiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGlzIGFub3RoZXIuCi0gICAgICAgICAgICAgICAgQ29uY2VwdHVhbGx5LCB5b3UgY2FuIHRoaW5rIG9mIHRoZSBrZXJuZWwgc291cmNlIHJlcG9zaXRvcmllcyBhcyBhbGwgdGhlCi0gICAgICAgICAgICAgICAgc291cmNlIGZpbGVzIG5lY2Vzc2FyeSBmb3IgYWxsIHRoZSBzdXBwb3J0ZWQga2VybmVscy4KLSAgICAgICAgICAgICAgICBBcyBhIGRldmVsb3BlciwgeW91IGFyZSBqdXN0IGludGVyZXN0ZWQgaW4gdGhlIHNvdXJjZSBmaWxlcyBmb3IgdGhlIGtlcm5lbCBvbgotICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBhcmUgd29ya2luZy4KLSAgICAgICAgICAgICAgICBBbmQsIGZ1cnRoZXJtb3JlLCB5b3UgbmVlZCB0aGVtIGF2YWlsYWJsZSBvbiB5b3VyIGhvc3Qgc3lzdGVtLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBLZXJuZWwgc291cmNlIGNvZGUgaXMgYXZhaWxhYmxlIG9uIHlvdXIgaG9zdCBzeXN0ZW0gYSBjb3VwbGUgb2YgZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgd2F5cy4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHdvcmtpbmcgaW4gdGhlIGtlcm5lbCBhbGwgdGhlIHRpbWUsIHlvdSBwcm9iYWJseSB3b3VsZCB3YW50Ci0gICAgICAgICAgICAgICAgdG8gc2V0IHVwIHlvdXIgb3duIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mIHRoZSBrZXJuZWwgdHJlZS4KLSAgICAgICAgICAgICAgICBJZiB5b3UganVzdCBuZWVkIHRvIG1ha2Ugc29tZSBwYXRjaGVzIHRvIHRoZSBrZXJuZWwsIHlvdSBjYW4gYWNjZXNzCi0gICAgICAgICAgICAgICAgdGVtcG9yYXJ5IGtlcm5lbCBzb3VyY2UgZmlsZXMgdGhhdCB3ZXJlIGV4dHJhY3RlZCBhbmQgdXNlZAotICAgICAgICAgICAgICAgIGR1cmluZyBhIGJ1aWxkLgotICAgICAgICAgICAgICAgIFdlIHdpbGwganVzdCB0YWxrIGFib3V0IHdvcmtpbmcgd2l0aCB0aGUgdGVtcG9yYXJ5IHNvdXJjZSBjb2RlLgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQga2VybmVsIHNvdXJjZSBjb2RlIG9udG8geW91cgotICAgICAgICAgICAgICAgIGhvc3Qgc3lzdGVtLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2xvY2FsLWtlcm5lbC1maWxlcyc+WW9jdG8gUHJvamVjdCBLZXJuZWw8L2xpbms+IgotICAgICAgICAgICAgICAgIGJ1bGxldGVkIGl0ZW0gZWFybGllciBpbiB0aGUgbWFudWFsLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaGF0IGhhcHBlbnMgZHVyaW5nIHRoZSBidWlsZD8KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBidWlsZCB0aGUga2VybmVsIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLCBhbGwgZmlsZXMgbmVlZGVkIGZvciB0aGUgYnVpbGQKLSAgICAgICAgICAgICAgICBhcmUgdGFrZW4gZnJvbSB0aGUgc291cmNlIHJlcG9zaXRvcmllcyBwb2ludGVkIHRvIGJ5IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4gdmFyaWFibGUKLSAgICAgICAgICAgICAgICBhbmQgZ2F0aGVyZWQgaW4gYSB0ZW1wb3Jhcnkgd29yayBhcmVhCi0gICAgICAgICAgICAgICAgd2hlcmUgdGhleSBhcmUgc3Vic2VxdWVudGx5IHVzZWQgdG8gY3JlYXRlIHRoZSB1bmlxdWUga2VybmVsLgotICAgICAgICAgICAgICAgIFRodXMsIGluIGEgc2Vuc2UsIHRoZSBwcm9jZXNzIGNvbnN0cnVjdHMgYSBsb2NhbCBzb3VyY2UgdHJlZSBzcGVjaWZpYyB0byB5b3VyCi0gICAgICAgICAgICAgICAga2VybmVsIHRvIGdlbmVyYXRlIHRoZSBuZXcga2VybmVsIGltYWdlIC0gYSBzb3VyY2UgZ2VuZXJhdG9yIGlmIHlvdSB3aWxsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIHRoZSB0ZW1wb3JhcnkgZmlsZSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICBjcmVhdGVkIG9uIHlvdXIgaG9zdCBzeXN0ZW0gd2hlbiB0aGUgYnVpbGQgb2NjdXJzLgotICAgICAgICAgICAgICAgIFRoaXMKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4gY29udGFpbnMgYWxsIHRoZQotICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcyB1c2VkIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZyIKLSAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjZpbiIgZGVwdGg9IjVpbiIgYWxpZ249ImNlbnRlciIgc2NhbGU9IjEwMCIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQWdhaW4sIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCdzCi0gICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgYnJhbmNoaW5nIHN0cmF0ZWd5LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwYXRjaGluZy10aGUta2VybmVsJz5QYXRjaGluZyB0aGUgS2VybmVsPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBhIGRldGFpbGVkIGV4YW1wbGUgdGhhdCBtb2RpZmllcyB0aGUga2VybmVsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2tlcm5lbC1tb2RpZmljYXRpb24td29ya2Zsb3cnPgotICAgICAgICAgICAgPHRpdGxlPktlcm5lbCBNb2RpZmljYXRpb24gV29ya2Zsb3c8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGlzIGlsbHVzdHJhdGlvbiBhbmQgdGhlIGZvbGxvd2luZyBsaXN0IHN1bW1hcml6ZXMgdGhlIGtlcm5lbCBtb2RpZmljYXRpb24gZ2VuZXJhbCB3b3JrZmxvdy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmciCi0gICAgICAgICAgICAgICAgICAgIHdpZHRoPSI2aW4iIGRlcHRoPSI1aW4iIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2V0IHVwIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gdG8gc3VwcG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L2VtcGhhc2lzPjogIFNlZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjdGhlLWxpbnV4LWRpc3Rybyc+VGhlIExpbnV4IERpc3RyaWJ1dGlvbjwvdWxpbms+IiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3BhY2thZ2VzJz5UaGUgQnVpbGQgSG9zdCBQYWNrYWdlczwvdWxpbms+IiBzZWN0aW9ucyBib3RoCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBmb3IgcmVxdWlyZW1lbnRzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzdGFibGlzaCBhIGxvY2FsIGNvcHkgb2YgcHJvamVjdCBmaWxlcyBvbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW08L2VtcGhhc2lzPjogIEhhdmluZyB0aGUgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rvcnk8L2xpbms+IG9uIHlvdXIgc3lzdGVtIGdpdmVzIHlvdSBhY2Nlc3MgdG8gdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHRvb2xzCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2V0IHRoZXNlIGZpbGVzLCBzZWUgdGhlIGJ1bGxldGVkIGl0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdsb2NhbC15cC1yZWxlYXNlJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2U8L2xpbms+IiBlYXJsaWVyIGluIHRoaXMgbWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXN0YWJsaXNoIHRoZSB0ZW1wb3Jhcnkga2VybmVsIHNvdXJjZSBmaWxlczwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGVtcG9yYXJ5IGtlcm5lbCBzb3VyY2UgZmlsZXMgYXJlIGtlcHQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoZW4geW91IHJ1biBCaXRCYWtlLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgbmV2ZXIgYnVpbHQgdGhlIGtlcm5lbCBpbiB3aGljaCB5b3UgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkLCB5b3UgbmVlZCB0byBydW4gYW4gaW5pdGlhbCBidWlsZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgZXN0YWJsaXNoIGxvY2FsIGtlcm5lbCBzb3VyY2UgZmlsZXMuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSBidWlsZGluZyBhbiBpbWFnZSBmb3IgdGhlIGZpcnN0IHRpbWUsIHlvdSBuZWVkIHRvIGdldCB0aGUgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHJlYWR5IGJ5IHNvdXJjaW5nIGFuIGVudmlyb25tZW50IHNldHVwIHNjcmlwdAotICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgYWxzbyBuZWVkIHRvIGJlIHN1cmUgdHdvIGtleSBjb25maWd1cmF0aW9uIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBjb25maWd1cmVkIGFwcHJvcHJpYXRlbHkuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGVudGlyZSBwcm9jZXNzIGZvciBidWlsZGluZyBhbiBpbWFnZSBpcyBvdmVydmlld2VkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgd2FudCB0byByZWZlcmVuY2UgdGhpcyBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIEJpdEJha2UgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgYnVpbGQgcHJvY2VzcyBzdXBwb3J0cyBzZXZlcmFsIHR5cGVzIG9mIGltYWdlcyB0byBzYXRpc2Z5IGRpZmZlcmVudCBuZWVkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IiBjaGFwdGVyIGluCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBpbmZvcm1hdGlvbiBvbiBzdXBwb3J0ZWQgaW1hZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFrZSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgc291cmNlIGNvZGUgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGU8L2VtcGhhc2lzPjogIE1vZGlmeWluZyB0aGUga2VybmVsIGRvZXMgbm90IGFsd2F5cyBtZWFuIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2luZyBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgaGF2ZSB0byBkbyB0aGlzLCB5b3UgbWFrZSB0aGUgY2hhbmdlcyB0byB0aGUgZmlsZXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFrZSBrZXJuZWwgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGlmIGFwcGxpY2FibGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgc2l0dWF0aW9uIGNhbGxzIGZvciBjaGFuZ2luZyB0aGUga2VybmVsJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz48ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBhbGxvd3MgeW91IHRvIGludGVyYWN0aXZlbHkgZGV2ZWxvcCBhbmQgdGVzdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB5b3UgYXJlIG1ha2luZyB0byB0aGUga2VybmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgU2F2aW5nIGNoYW5nZXMgeW91IG1ha2Ugd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiB1cGRhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsJ3MgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPldhcm5pbmc8L3RpdGxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyeSB0byByZXNpc3QgdGhlIHRlbXB0YXRpb24gdG8gZGlyZWN0bHkgZWRpdCBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9zeXNyb290cy88cmVwbGFjZWFibGU+bWFjaGluZS1uYW1lPC9yZXBsYWNlYWJsZT4va2VybmVsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28sIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cyB3aGVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcmVnZW5lcmF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHRoZSBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIG1hZGUgdXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSBoYXZlIHNhdmVkIHRoZW0sIHlvdSBjYW4gZGlyZWN0bHkgY29tcGFyZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdGluZyA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYWdhaW5zdCBhbgotICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3Rpbmcgb3JpZ2luYWwgYW5kIGdhdGhlciB0aG9zZSBjaGFuZ2VzIGludG8gYQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+Y29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlPC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgcmVmZXJlbmNlZCBmcm9tIHdpdGhpbiB0aGUga2VybmVsJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWRkaXRpb25hbGx5LCBpZiB5b3UgYXJlIHdvcmtpbmcgaW4gYSBCU1AgbGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuZWVkIHRvIG1vZGlmeSB0aGUgQlNQJ3Mga2VybmVsJ3MgY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjbWFuYWdpbmcta2VybmVsLXBhdGNoZXMtYW5kLWNvbmZpZy1pdGVtcy13aXRoLXlvY3RvLWtlcm5lbCc+PGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBhcyB3ZWxsIGFzIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+IHNjcmlwdCBsZXRzCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgaW50ZXJhY3RpdmVseSBzZXQgdXAga2VybmVsIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmVidWlsZCB0aGUga2VybmVsIGltYWdlIHdpdGggeW91ciBjaGFuZ2VzPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWJ1aWxkaW5nIHRoZSBrZXJuZWwgaW1hZ2UgYXBwbGllcyB5b3VyIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nYXBwbGljYXRpb24tZGV2ZWxvcG1lbnQtd29ya2Zsb3ctdXNpbmctYW4tc2RrJz4KLSAgICA8dGl0bGU+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgV29ya2Zsb3cgVXNpbmcgYW4gU0RLPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBTdGFuZGFyZCBhbmQgZXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXRzIChTREspIG1ha2UgaXQgZWFzeQotICAgICAgICB0byBkZXZlbG9wIGFwcGxpY2F0aW9ucyBpbnNpZGUgb3Igb3V0c2lkZSBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICAgICAgVG9vbHMgZXhpc3QgdG8gaGVscCB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyIGR1cmluZyBhbnkgcGhhc2UKLSAgICAgICAgb2YgZGV2ZWxvcG1lbnQuCi0gICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCBhbmQgdXNlIGFuIFNESywgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstaW50cm8nPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0iZGV2LW1vZGlmeWluZy1zb3VyY2UtY29kZSI+Ci0gICAgPHRpdGxlPk1vZGlmeWluZyBTb3VyY2UgQ29kZTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQSBjb21tb24gZGV2ZWxvcG1lbnQgd29ya2Zsb3cgY29uc2lzdHMgb2YgbW9kaWZ5aW5nIHByb2plY3Qgc291cmNlCi0gICAgICAgIGZpbGVzIHRoYXQgYXJlIGV4dGVybmFsIHRvIHRoZSBZb2N0byBQcm9qZWN0IGFuZCB0aGVuIGludGVncmF0aW5nCi0gICAgICAgIHRoYXQgcHJvamVjdCdzIGJ1aWxkIG91dHB1dCBpbnRvIGFuIGltYWdlIGJ1aWx0IHVzaW5nIHRoZQotICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgotICAgICAgICBHaXZlbiB0aGlzIHNjZW5hcmlvLCBkZXZlbG9wbWVudCBlbmdpbmVlcnMgdHlwaWNhbGx5IHdhbnQgdG8gc3RpY2sKLSAgICAgICAgdG8gdGhlaXIgZmFtaWxpYXIgcHJvamVjdCBkZXZlbG9wbWVudCB0b29scyBhbmQgbWV0aG9kcywgd2hpY2ggYWxsb3dzCi0gICAgICAgIHRoZW0gdG8ganVzdCBmb2N1cyBvbiB0aGUgcHJvamVjdC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgU2V2ZXJhbCB3b3JrZmxvd3MgZXhpc3QgdGhhdCBhbGxvdyB5b3UgdG8gZGV2ZWxvcCwgYnVpbGQsIGFuZCB0ZXN0Ci0gICAgICAgIGNvZGUgdGhhdCBpcyBnb2luZyB0byBiZSBpbnRlZ3JhdGVkIGludG8gYW4gaW1hZ2UgYnVpbHQgdXNpbmcgdGhlCi0gICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdHdvOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSBzZXQgb2YgdG9vbHMgdG8gYWlkIGluIHdvcmtpbmcgb24gdGhlIHNvdXJjZSBjb2RlIGJ1aWx0IGJ5Ci0gICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgU2VjdGlvbgotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLWluLXlvdXItd29ya2Zsb3cnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gaW4gWW91ciBXb3JrZmxvdzwvbGluaz4iCi0gICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoaXMgd29ya2Zsb3cuCi0gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgbW9yZSBpbmZvcm1hdGlvbiB0aGF0IHNob3djYXNlcyB0aGUgd29ya2Zsb3csIGNsaWNrCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2EvbGluYXJvLm9yZy9maWxlL2QvMEIzS0d6WTVmVzdsYVREVnhVWG8zVURSdmQycy92aWV3Jz5oZXJlPC91bGluaz4KLSAgICAgICAgICAgICAgICBmb3IgYSBwcmVzZW50YXRpb24gYnkgVHJldm9yIFdvZXJuZXIgdGhhdCwgd2hpbGUgc29tZXdoYXQgZGF0ZWQsCi0gICAgICAgICAgICAgICAgcHJvdmlkZXMgZGV0YWlsZWQgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBhbmQgYSBjb21wbGV0ZQotICAgICAgICAgICAgICAgIHdvcmtpbmcgdHV0b3JpYWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjx1bGluayB1cmw9J2h0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3F1aWx0Jz5RdWlsdDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSBwb3dlcmZ1bCB0b29sIHRoYXQgYWxsb3dzIHlvdSB0byBjYXB0dXJlIHNvdXJjZQotICAgICAgICAgICAgICAgIGNvZGUgY2hhbmdlcyB3aXRob3V0IGhhdmluZyBhIGNsZWFuIHNvdXJjZSB0cmVlLgotICAgICAgICAgICAgICAgIFdoaWxlIFF1aWx0IGlzIG5vdCB0aGUgcHJlZmVycmVkIHdvcmtmbG93IG9mIHRoZSB0d28sIHRoaXMKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluY2x1ZGVzIGl0IGZvciB1c2VycyB0aGF0IGFyZSBjb21taXR0ZWQgdG8gdXNpbmcKLSAgICAgICAgICAgICAgICB0aGUgdG9vbC4KLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcXVpbHQtd29ya2Zsb3cnPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZy1kZXZ0b29sLWluLXlvdXItd29ya2Zsb3cnPgotICAgICAgICA8dGl0bGU+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpbiBZb3VyIFdvcmtmbG93PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGhlbHBzCi0gICAgICAgICAgICB5b3UgZWFzaWx5IGRldmVsb3AgcHJvamVjdHMgd2hvc2UgYnVpbGQgb3V0cHV0IG11c3QgYmUgcGFydCBvZgotICAgICAgICAgICAgYW4gaW1hZ2UgYnVpbHQgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRocmVlIGVudHJ5IHBvaW50cyBleGlzdCB0aGF0IGFsbG93IHlvdSB0byBkZXZlbG9wIHVzaW5nCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJlc2VudHMgdGhlc2Ugd29ya2Zsb3dzLgotICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1kZXZ0b29sLXJlZmVyZW5jZSc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiZuYnNwO1F1aWNrIFJlZmVyZW5jZTwvdWxpbms+IgotICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgYQotICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBxdWljayByZWZlcmVuY2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndXNlLWRldnRvb2wtdG8taW50ZWdyYXRlLW5ldy1jb2RlJz4KLSAgICAgICAgICAgIDx0aXRsZT5Vc2UgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gdG8gQWRkIGFuIEFwcGxpY2F0aW9uPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgZ2VuZXJhdGVzCi0gICAgICAgICAgICAgICAgYSBuZXcgcmVjaXBlIGJhc2VkIG9uIGV4aXN0aW5nIHNvdXJjZSBjb2RlLgotICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2dG9vbC10aGUtd29ya3NwYWNlLWxheWVyLXN0cnVjdHVyZSc+d29ya3NwYWNlPC91bGluaz4KLSAgICAgICAgICAgICAgICBsYXllciB0aGF0IG1hbnkgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kcwotICAgICAgICAgICAgICAgIHVzZS4KLSAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBpcyBmbGV4aWJsZSBlbm91Z2ggdG8gYWxsb3cgeW91IHRvIGV4dHJhY3Qgc291cmNlCi0gICAgICAgICAgICAgICAgY29kZSBpbnRvIGJvdGggdGhlIHdvcmtzcGFjZSBvciBhIHNlcGFyYXRlIGxvY2FsIEdpdCByZXBvc2l0b3J5Ci0gICAgICAgICAgICAgICAgYW5kIHRvIHVzZSBleGlzdGluZyBjb2RlIHRoYXQgZG9lcyBub3QgbmVlZCB0byBiZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2NlbmFyaW8sIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKLSAgICAgICAgICAgICAgICB5b3UgdXNlIHdpdGggPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gZm9ybSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICBjb21iaW5hdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93cwotICAgICAgICAgICAgICAgIHlvdSB3b3VsZCB1c2Ugd2l0aCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBjb21tYW5kOgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGV2dG9vbC1hZGQtZmxvdy5wbmciIGFsaWduPSJjZW50ZXIiIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5HZW5lcmF0aW5nIHRoZSBOZXcgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9wIHBhcnQgb2YgdGhlIGZsb3cgc2hvd3MgdGhyZWUgc2NlbmFyaW9zIGJ5IHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY291bGQgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBhIHJlY2lwZSBiYXNlZCBvbiBleGlzdGluZyBzb3VyY2UgY29kZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIGEgc2hhcmVkIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBpdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgdHlwaWNhbCB3aGVyZSBvdGhlciBkZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgYXJlYXMgb2Ygc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBBcyBhIGRldmVsb3BlciwgeW91IGFyZSBwcm9iYWJseSBpbnRlcmVzdGVkIGluIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHNvdXJjZSBjb2RlIGFzIHBhcnQgb2YgeW91ciBkZXZlbG9wbWVudCB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBBbGwgeW91IG5lZWQgaXMgYWNjZXNzIHRvIHRoZSBjb2RlLCBhIHJlY2lwZSwgYW5kIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZWQgYXJlYSBpbiB3aGljaCB0byBkbyB5b3VyIHdvcmsuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gdGhlIGRpYWdyYW0sIHRocmVlIHBvc3NpYmxlIHNjZW5hcmlvcwotICAgICAgICAgICAgICAgICAgICAgICAgZmVlZCBpbnRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiB3b3JrZmxvdzoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MZWZ0PC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsZWZ0IHNjZW5hcmlvIHJlcHJlc2VudHMgYSBjb21tb24gc2l0dWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCBleGlzdCBsb2NhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuZWVkcyB0byBiZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB5b3UganVzdCBsZXQgaXQgZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RlZCB0byB0aGUgZGVmYXVsdCB3b3Jrc3BhY2UgLSB5b3UgZG8gbm90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgaXQgaW4gc29tZSBzcGVjaWZpYyBsb2NhdGlvbiBvdXRzaWRlIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIGV2ZXJ5dGhpbmcgeW91IG5lZWQgd2lsbCBiZSBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGFkZCA8cmVwbGFjZWFibGU+cmVjaXBlIGZldGNodXJpPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHRoaXMgY29tbWFuZCwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgcmVjaXBlIGFuZCBhbiBhcHBlbmQgZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlIGFzIHdlbGwgYXMgZXh0cmFjdHMgdGhlIHVwc3RyZWFtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcyBpbnRvIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgYWxzbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIDxmaWxlbmFtZT5zb3VyY2VzPC9maWxlbmFtZT4gZm9sZGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1pZGRsZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWlkZGxlIHNjZW5hcmlvIGFsc28gcmVwcmVzZW50cyBhIHNpdHVhdGlvbiB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgZXhpc3QgbG9jYWxseS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29kZSBpcyBhZ2FpbiB1cHN0cmVhbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkIHRvIHNvbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgYXJlYSAtIHRoaXMgdGltZSBvdXRzaWRlIG9mIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgcmVxdWlyZWQsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx3YXlzIGNyZWF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBHaXQgcmVwb3NpdG9yeSBsb2NhbGx5IGR1cmluZyB0aGUgZXh0cmFjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gaW4gdGhpcyBjYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXMgd2hlcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBsb2NhdGUgdGhlIGV4dHJhY3RlZCBjb2RlIG91dHNpZGUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgYWRkIDxyZXBsYWNlYWJsZT5yZWNpcGUgc3JjdHJlZSBmZXRjaHVyaTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gc3VtbWFyeSwgdGhlIHNvdXJjZSBjb2RlIGlzIHB1bGxlZCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5mZXRjaHVyaTwvcmVwbGFjZWFibGU+IGFuZCBleHRyYWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgbG9jYXRpb24gZGVmaW5lZCBieQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IGFzIGEgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGhpbiB3b3Jrc3BhY2UsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBib3RoIHRoZSByZWNpcGUgYW5kIGFuIGFwcGVuZCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJpZ2h0PC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByaWdodCBzY2VuYXJpbyByZXByZXNlbnRzIGEgc2l0dWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoZSBzb3VyY2UgdHJlZSAoc3JjdHJlZSkgaGFzIGJlZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBwcmVwYXJlZCBvdXRzaWRlIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgY29tbWFuZCBuYW1lcyB0aGUgcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpZGVudGlmaWVzIHdoZXJlIHRoZSBleGlzdGluZyBzb3VyY2UgdHJlZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBsb2NhdGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBhZGQgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBleGFtaW5lcyB0aGUgc291cmNlIGNvZGUgYW5kIGNyZWF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNpcGUgZm9yIGl0IHBsYWNpbmcgdGhlIHJlY2lwZSBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlY2F1c2UgdGhlIGV4dHJhY3RlZCBzb3VyY2UgY29kZSBhbHJlYWR5IGV4aXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCB0cnkgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsb2NhdGUgaXQgaW50byB0aGUgd29ya3NwYWNlIC0ganVzdCB0aGUgbmV3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgaXMgcGxhY2VkIGluIHRoZSB3b3Jrc3BhY2UuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzaWRlIGZyb20gYSByZWNpcGUgZm9sZGVyLCB0aGUgY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGNyZWF0ZXMgYW4gYXBwZW5kIGZvbGRlciBhbmQgcGxhY2VzIGFuIGluaXRpYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiouYmJhcHBlbmQ8L2ZpbGVuYW1lPiB3aXRoaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FZGl0IHRoZSBSZWNpcGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBjYW4gdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGVkaXQtcmVjaXBlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIG9wZW4gdXAgdGhlIGVkaXRvciBhcyBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiRFRElUT1I8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1vZGlmeSB0aGUgZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGVkaXQtcmVjaXBlIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB3aXRoaW4gdGhlIGVkaXRvciwgeW91IGNhbiBtYWtlIG1vZGlmaWNhdGlvbnMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgdGhhdCB0YWtlIGFmZmVjdCB3aGVuIHlvdSBidWlsZCBpdCBsYXRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIHRoZSBSZWNpcGUgb3IgUmVidWlsZCB0aGUgSW1hZ2U8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQgaW4gdGhlIGZsb3csIHRoZSBuZXh0IHN0ZXAgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YWtlIGRlcGVuZHMgb24gd2hhdCB5b3UgYXJlIGdvaW5nIHRvIGRvIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZXcgY29kZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgbmVlZCB0byB0YWtlIHRoZSBidWlsZCBvdXRwdXQgYW5kIGV2ZW50dWFsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUgaXQgdG8gdGhlIHRhcmdldCBoYXJkd2FyZSwgeW91IHdvdWxkIHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGJ1aWxkIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uIHRoZSBvdGhlciBoYW5kLCBpZiB5b3Ugd2FudCBhbiBpbWFnZSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbiB0aGUgcmVjaXBlJ3MgcGFja2FnZXMgZm9yIGltbWVkaWF0ZSBkZXBsb3ltZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbnRvIGEgZGV2aWNlIChlLmcuIGZvciB0ZXN0aW5nIHB1cnBvc2VzKSwgeW91IGNhbiB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBidWlsZC1pbWFnZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RGVwbG95IHRoZSBCdWlsZCBPdXRwdXQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBidWlsZCBvdXQgeW91ciByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgaWYgdGhlIHJlc3VsdGluZyBidWlsZCBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RlcCBhc3N1bWVzIHlvdSBoYXZlIGEgcHJldmlvdXNseSBidWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRoYXQgaXMgYWxyZWFkeSBlaXRoZXIgcnVubmluZyBpbiBRRU1VIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyBvbiBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgaXQgaXMgYXNzdW1lZCB0aGF0IGZvciBkZXBsb3ltZW50IG9mIHRoZSBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXJnZXQsIFNTSCBpcyBpbnN0YWxsZWQgaW4gdGhlIGltYWdlIGFuZCBpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBpcyBydW5uaW5nIG9uIHJlYWwgaGFyZHdhcmUgdGhhdCB5b3UgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmsgYWNjZXNzIHRvIGFuZCBmcm9tIHlvdXIgZGV2ZWxvcG1lbnQgbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHlvdXIgYnVpbGQgb3V0cHV0IHRvIHRoYXQgdGFyZ2V0IGhhcmR3YXJlIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IDxyZXBsYWNlYWJsZT5yZWNpcGUgdGFyZ2V0PC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gaXMgYSBsaXZlIHRhcmdldCBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIGFzIGFuIFNTSCBzZXJ2ZXIuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuLCBvZiBjb3Vyc2UsIGFsc28gZGVwbG95IHRoZSBpbWFnZSB5b3UgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZG9lcyBub3QgcHJvdmlkZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0byBkbyB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5pc2ggWW91ciBXb3JrIFdpdGggdGhlIFJlY2lwZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcwotICAgICAgICAgICAgICAgICAgICAgICAgYW55IHBhdGNoZXMgY29ycmVzcG9uZGluZyB0byBjb21taXRzIGluIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIG1vdmVzIHRoZSBuZXcgcmVjaXBlIHRvIGEgbW9yZSBwZXJtYW5lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLCBhbmQgdGhlbiByZXNldHMgdGhlIHJlY2lwZSBzbyB0aGF0IHRoZSByZWNpcGUgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IG5vcm1hbGx5IHJhdGhlciB0aGFuIGZyb20gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGZpbmlzaCA8cmVwbGFjZWFibGU+cmVjaXBlIGxheWVyPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIHlvdSB3YW50IHRvIHR1cm4gaW50byBwYXRjaGVzIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQgdG8gdGhlIEdpdCByZXBvc2l0b3J5IGluIHRoZSBzb3VyY2UgdHJlZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIG1lbnRpb25lZCwgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG1vdmVzIHRoZSBmaW5hbCByZWNpcGUgdG8gaXRzIHBlcm1hbmVudCBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYSBmaW5hbCBwcm9jZXNzIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlIHN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3RhbmRhcmQgbGF5ZXJzIGFuZCB0aGUgdXBzdHJlYW0gc291cmNlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlZCBzbyB0aGF0IHlvdSBjYW4gYnVpbGQgdGhlIHJlY2lwZSBmcm9tIHRob3NlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmVhcyByYXRoZXIgdGhhbiB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHJlc2V0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHB1dCB0aGluZ3MgYmFjayBzaG91bGQgeW91IGRlY2lkZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3Qgd2FudCB0byBwcm9jZWVkIHdpdGggeW91ciB3b3JrLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyB1c2UgdGhpcyBjb21tYW5kLCByZWFsaXplIHRoYXQgdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUgaXMgcHJlc2VydmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLXVzZS1kZXZ0b29sLW1vZGlmeS10by1lbmFibGUtd29yay1vbi1jb2RlLWFzc29jaWF0ZWQtd2l0aC1hbi1leGlzdGluZy1yZWNpcGUnPgotICAgICAgICAgICAgPHRpdGxlPlVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiB0byBNb2RpZnkgdGhlIFNvdXJjZSBvZiBhbiBFeGlzdGluZyBDb21wb25lbnQ8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gY29tbWFuZCBwcmVwYXJlcyB0aGUKLSAgICAgICAgICAgICAgICB3YXkgdG8gd29yayBvbiBleGlzdGluZyBjb2RlIHRoYXQgYWxyZWFkeSBoYXMgYSByZWNpcGUgaW4KLSAgICAgICAgICAgICAgICBwbGFjZS4KLSAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBpcyBmbGV4aWJsZSBlbm91Z2ggdG8gYWxsb3cgeW91IHRvIGV4dHJhY3QgY29kZSwKLSAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoZSBleGlzdGluZyByZWNpcGUsIGFuZCBrZWVwIHRyYWNrIG9mIGFuZCBnYXRoZXIgYW55Ci0gICAgICAgICAgICAgICAgcGF0Y2ggZmlsZXMgZnJvbSBvdGhlciBkZXZlbG9wZXJzIHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb2RlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyIHNjZW5hcmlvLCB0aGUgYXJndW1lbnRzIGFuZCBvcHRpb25zCi0gICAgICAgICAgICAgICAgeW91IHVzZSB3aXRoIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGZvcm0gZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgY29tYmluYXRpb25zLgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyBjb21tb24gZGV2ZWxvcG1lbnQgZmxvd3MKLSAgICAgICAgICAgICAgICB5b3Ugd291bGQgdXNlIHdpdGggdGhlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29tbWFuZDoKLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RldnRvb2wtbW9kaWZ5LWZsb3cucG5nIiBhbGlnbj0iY2VudGVyIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UHJlcGFyaW5nIHRvIE1vZGlmeSB0aGUgQ29kZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcCBwYXJ0IG9mIHRoZSBmbG93IHNob3dzIHRocmVlIHNjZW5hcmlvcyBieSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiB0bwotICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZSB0byB3b3JrIG9uIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEVhY2ggc2NlbmFyaW8gYXNzdW1lcyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHJlY2lwZSBleGlzdHMgaW4gc29tZSBsYXllciBleHRlcm5hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgc291cmNlIGZpbGVzIGV4aXN0IHVwc3RyZWFtIGluIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuLWV4dHJhY3RlZCBzdGF0ZSBvciBsb2NhbGx5IGluIGEgcHJldmlvdXNseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgc3RhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgdHlwaWNhbCBzaXR1YXRpb24gaXMgd2hlcmUgYW5vdGhlciBkZXZlbG9wZXIgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIHNvbWUgbGF5ZXIgZm9yIHVzZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXIgcmVjaXBlIGFscmVhZHkgcmVzaWRlcyBpbiB0aGF0IGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZWlyIHNvdXJjZSBjb2RlIGlzIHJlYWRpbHkgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICBlaXRoZXIgdXBzdHJlYW0gb3IgbG9jYWxseS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MZWZ0PC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsZWZ0IHNjZW5hcmlvIHJlcHJlc2VudHMgYSBjb21tb24gc2l0dWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCBleGlzdCBsb2NhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuZWVkcyB0byBiZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB0aGUgc291cmNlIGlzIGV4dHJhY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBkZWZhdWx0IHdvcmtzcGFjZSBsb2NhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSwgaW4gdGhpcyBzY2VuYXJpbywgaXMgaW4gaXRzIG93bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bGF5ZXJuYW1lPC9yZXBsYWNlYWJsZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIGlkZW50aWZpZXMgdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYnkgZGVmYXVsdCBleHRyYWN0cyB0aGUgc291cmNlIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBtb2RpZnkgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT25jZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+bG9jYXRlcyB0aGUgcmVjaXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCB1c2VzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBsb2NhbCBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBwcm92aWRlIGFuIFVSTCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gd2hlbiB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIHNjZW5hcmlvLCBob3dldmVyLCBzaW5jZSBubwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IGFyZ3VtZW50IGV4aXN0cywgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQgYnkgZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0cyB0aGUgc291cmNlIGZpbGVzIHRvIGEgR2l0IHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBsb2NhdGlvbiBmb3IgdGhlIGV4dHJhY3RlZCBzb3VyY2UgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgYXJlYSB3aXRoaW4gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHRoZSBjb21tYW5kIHNldHMgdXAgYm90aCB0aGUgc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgYW5kIGFuIGFwcGVuZCBmaWxlIHdpdGhpbiB0aGUgd29ya3NwYWNlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSByZW1haW5pbmcgaW4gaXRzIG9yaWdpbmFsIGxvY2F0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1pZGRsZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWlkZGxlIHNjZW5hcmlvIHJlcHJlc2VudHMgYSBzaXR1YXRpb24gd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBjb2RlIGFsc28gZG9lcyBub3QgZXhpc3QgbG9jYWxseS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29kZSBpcyBhZ2FpbiB1cHN0cmVhbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkIHRvIHNvbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgYXJlYSBhcyBhIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlLCBpbiB0aGlzIHNjZW5hcmlvLCBpcyBhZ2FpbiBpbiBpdHMgb3duCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIG91dHNpZGUgdGhlIHdvcmtzcGFjZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIHRlbGxzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd2hhdCByZWNpcGUgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0byB3b3JrIGFuZCwgaW4gdGhpcyBjYXNlLCBpZGVudGlmaWVzIGEgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYSBmb3IgdGhlIGV4dHJhY3RlZCBzb3VyY2UgZmlsZXMgdGhhdCBpcyBvdXRzaWRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBkZWZhdWx0IHdvcmtzcGFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgbW9kaWZ5IDxyZXBsYWNlYWJsZT5yZWNpcGUgc3JjdHJlZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgd2l0aCBhbGwgZXh0cmFjdGlvbnMsIHRoZSBjb21tYW5kIHVzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSdzIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdG8gbG9jYXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGZpbGVzIGFyZSBsb2NhdGVkLCB0aGUgY29tbWFuZCBieSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIHRoZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGluZyB0aGUgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCBpbnN0cnVjdHMgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZSB0aGUgZXh0cmFjdGVkIHNvdXJjZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHdvcmtzcGFjZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIHJlbWFpbnMgaW4gaXRzIG9yaWdpbmFsIGxvY2F0aW9uIGJ1dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIGZpbGVzIGFyZSBleHRyYWN0ZWQgdG8gdGhlIGxvY2F0aW9uIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCB3aXRoIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmlnaHQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJpZ2h0IHNjZW5hcmlvIHJlcHJlc2VudHMgYSBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIHNvdXJjZSB0cmVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+KSBleGlzdHMgYXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IGV4dHJhY3RlZCBHaXQgc3RydWN0dXJlIG91dHNpZGUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSByZWNpcGUgYWxzbyBleGlzdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXdoZXJlIGluIGl0cyBvd24gbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgdGVsbHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0aGUgcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggd2hpY2ggdG8gd29yaywgdXNlcyB0aGUgIi1uIiBvcHRpb24gdG8gaW5kaWNhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGRvZXMgbm90IG5lZWQgdG8gYmUgZXh0cmFjdGVkLCBhbmQgdXNlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IHRvIHBvaW50IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IGV4dHJhY3RlZCBzb3VyY2UgZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIG1vZGlmeSAtbiA8cmVwbGFjZWFibGU+cmVjaXBlIHNyY3RyZWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHRoZSBjb21tYW5kIGZpbmlzaGVzLCBpdCBjcmVhdGVzIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gYXBwZW5kIGZpbGUgZm9yIHRoZSByZWNpcGUgaW4gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBhbmQgdGhlIHNvdXJjZSBjb2RlIHJlbWFpbiBpbiB0aGVpcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBsb2NhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RWRpdCB0aGUgU291cmNlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVzZWQgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCB5b3UgYXJlIGZyZWUgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYW55IGVkaXRvciB5b3UgbGlrZSB0byBtYWtlIGFuZCBzYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3VyIHNvdXJjZSBjb2RlIG1vZGlmaWNhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVwZGF0ZWQgdGhlIHNvdXJjZSBmaWxlcywgeW91IGNhbiBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRlcGxveSB0aGUgQnVpbGQgT3V0cHV0PC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYnVpbGQgb3V0IHlvdXIgcmVjaXBlLCB5b3UgcHJvYmFibHkgd2FudCB0byBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSByZXN1bHRpbmcgYnVpbGQgb3V0cHV0IHdvcmtzIGFzIGV4cGVjdGVkIG9uIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgYXNzdW1lcyB5b3UgaGF2ZSBhIHByZXZpb3VzbHkgYnVpbHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0aGF0IGlzIGFscmVhZHkgZWl0aGVyIHJ1bm5pbmcgaW4gUUVNVSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgb24gYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGl0IGlzIGFzc3VtZWQgdGhhdCBmb3IgZGVwbG95bWVudCBvZiB0aGUgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgdGFyZ2V0LCBTU0ggaXMgaW5zdGFsbGVkIGluIHRoZSBpbWFnZSBhbmQgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UgaXMgcnVubmluZyBvbiByZWFsIGhhcmR3YXJlIHRoYXQgeW91IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyIGRldmVsb3BtZW50IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRlcGxveSB5b3VyIGJ1aWxkIG91dHB1dCB0byB0aGF0IHRhcmdldCBoYXJkd2FyZSBieQotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgZGVwbG95LXRhcmdldCA8cmVwbGFjZWFibGU+cmVjaXBlIHRhcmdldDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIGEgbGl2ZSB0YXJnZXQgbWFjaGluZQotICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyBhcyBhbiBTU0ggc2VydmVyLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiwgb2YgY291cnNlLCBhbHNvIGRlcGxveSB0aGUgaW1hZ2UgeW91IGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGRvZXMgbm90IHByb3ZpZGUgYQotICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgY29tbWFuZCB0aGF0IGFsbG93cyB5b3UgdG8gZG8gdGhpcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmluaXNoIFlvdXIgV29yayBXaXRoIHRoZSBSZWNpcGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBjb21tYW5kIGNyZWF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGFueSBwYXRjaGVzIGNvcnJlc3BvbmRpbmcgdG8gY29tbWl0cyBpbiB0aGUgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LCB1cGRhdGVzIHRoZSByZWNpcGUgdG8gcG9pbnQgdG8gdGhlbQotICAgICAgICAgICAgICAgICAgICAgICAgKG9yIGNyZWF0ZXMgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSB0byBkbwotICAgICAgICAgICAgICAgICAgICAgICAgc28sIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uIGxheWVyKSwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIHJlc2V0cyB0aGUgcmVjaXBlIHNvIHRoYXQgdGhlIHJlY2lwZSBpcyBidWlsdCBub3JtYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gZnJvbSB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgZmluaXNoIDxyZXBsYWNlYWJsZT5yZWNpcGUgbGF5ZXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IHdhbnQgdG8gdHVybiBpbnRvIHBhdGNoZXMgbXVzdCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgR2l0IHJlcG9zaXRvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVjYXVzZSB0aGVyZSBpcyBubyBuZWVkIHRvIG1vdmUgdGhlIHJlY2lwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGVpdGhlciB1cGRhdGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgcmVjaXBlIGluIHRoZSBvcmlnaW5hbCBsYXllciBvciB0aGUgY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBpbiBhIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgYXMgcHJvdmlkZWQgYnkgPHJlcGxhY2VhYmxlPmxheWVyPC9yZXBsYWNlYWJsZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIGEgZmluYWwgcHJvY2VzcyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZSBzdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHN0YW5kYXJkIGxheWVycyBhbmQgdGhlIHVwc3RyZWFtIHNvdXJjZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZWQgc28gdGhhdCB5b3UgY2FuIGJ1aWxkIHRoZSByZWNpcGUgZnJvbSB0aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAgYXJlYXMgcmF0aGVyIHRoYW4gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCByZXNldDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBwdXQgdGhpbmdzIGJhY2sgc2hvdWxkIHlvdSBkZWNpZGUgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHdhbnQgdG8gcHJvY2VlZCB3aXRoIHlvdXIgd29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gdXNlIHRoaXMgY29tbWFuZCwgcmVhbGl6ZSB0aGF0IHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlIGlzIHByZXNlcnZlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZGV2dG9vbC11c2UtZGV2dG9vbC11cGdyYWRlLXRvLWNyZWF0ZS1hLXZlcnNpb24tb2YtdGhlLXJlY2lwZS10aGF0LXN1cHBvcnRzLWEtbmV3ZXItdmVyc2lvbi1vZi10aGUtc29mdHdhcmUnPgotICAgICAgICAgICAgPHRpdGxlPlVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gdG8gQ3JlYXRlIGEgVmVyc2lvbiBvZiB0aGUgUmVjaXBlIHRoYXQgU3VwcG9ydHMgYSBOZXdlciBWZXJzaW9uIG9mIHRoZSBTb2Z0d2FyZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZCB1cGRhdGVzCi0gICAgICAgICAgICAgICAgYW4gZXhpc3RpbmcgcmVjaXBlIHNvIHRoYXQgeW91IGNhbiBidWlsZCBpdCBmb3IgYW4gdXBkYXRlZAotICAgICAgICAgICAgICAgIHNldCBvZiBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgaXMgZmxleGlibGUgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBzcGVjaWZ5Ci0gICAgICAgICAgICAgICAgc291cmNlIGNvZGUgcmV2aXNpb24gYW5kIHZlcnNpb25pbmcgc2NoZW1lcywgZXh0cmFjdCBjb2RlIGludG8KLSAgICAgICAgICAgICAgICBvciBvdXQgb2YgdGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLCBhbmQKLSAgICAgICAgICAgICAgICB3b3JrIHdpdGggYW55IHNvdXJjZSBmaWxlIGZvcm1zIHRoYXQgdGhlIGZldGNoZXJzIHN1cHBvcnQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2NlbmFyaW8sIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKLSAgICAgICAgICAgICAgICB5b3UgdXNlIHdpdGggPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGZvcm0gZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgY29tYmluYXRpb25zLgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyBhIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93Ci0gICAgICAgICAgICAgICAgeW91IHdvdWxkIHVzZSB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbW1hbmQ6Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmciIGFsaWduPSJjZW50ZXIiIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Jbml0aWF0ZSB0aGUgVXBncmFkZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcCBwYXJ0IG9mIHRoZSBmbG93IHNob3dzIGEgdHlwaWNhbCBzY2VuYXJpbyBieSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgZXhpc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVjaXBlIGV4aXN0cyBpbiBzb21lIGxheWVyIGV4dGVybmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzb3VyY2UgZmlsZXMgZm9yIHRoZSBuZXcgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdCBhZGphY2VudCB0byB0aGUgc2FtZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY2lwZSAoZS5nLiBhIHRhcmJhbGwgd2l0aCB0aGUgbmV3IHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIGluIHRoZSBuYW1lLCBvciBhcyBhIGRpZmZlcmVudCByZXZpc2lvbiBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXBzdHJlYW0gR2l0IHJlcG9zaXRvcnkpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgQSBjb21tb24gc2l0dWF0aW9uIGlzIHdoZXJlIHRoaXJkLXBhcnR5IHNvZnR3YXJlIGhhcwotICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJnb25lIGEgcmV2aXNpb24gc28gdGhhdCBpdCBoYXMgYmVlbiB1cGdyYWRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgeW91IGhhdmUgYWNjZXNzIHRvIGlzIGxpa2VseSBpbiB5b3VyIG93biBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIHlvdSBuZWVkIHRvIHVwZ3JhZGUgdGhlIHJlY2lwZSB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdlciB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIHVwZ3JhZGUgLVYgPHJlcGxhY2VhYmxlPnZlcnNpb24gcmVjaXBlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdHMgc291cmNlIGNvZGUgaW50byB0aGUgPGZpbGVuYW1lPnNvdXJjZXM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGluIHRoZSB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgY29kZSBleHRyYWN0ZWQgdG8gYW55IG90aGVyIGxvY2F0aW9uLCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gcHJvdmlkZSB0aGUgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25hbCBhcmd1bWVudCB3aXRoIHRoZSBjb21tYW5kIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCB1cGdyYWRlIC1WIDxyZXBsYWNlYWJsZT52ZXJzaW9uIHJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGluIHRoaXMgZXhhbXBsZSwgdGhlICItViIgb3B0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyB2ZXJzaW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNvdXJjZSBmaWxlcyBwb2ludGVkIHRvIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgaW4gdGhlIHJlY2lwZSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgR2l0IHJlcG9zaXRvcnksIHlvdSBtdXN0IHByb3ZpZGUgdGhlICItUyIgb3B0aW9uIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBhIHJldmlzaW9uIGZvciB0aGUgc29mdHdhcmUuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gbG9jYXRlcyB0aGUgcmVjaXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgaXQgdXNlcyB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0byBsb2NhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBhbmQgYW55IGxvY2FsIHBhdGNoIGZpbGVzIGZyb20gb3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BlcnMgYXJlIGxvY2F0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIGNvbW1hbmQgc2V0cyB1cCB0aGUgc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLCB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIHJlY2lwZSwgYW5kIGFuIGFwcGVuZCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICBhbGwgd2l0aGluIHRoZSB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SZXNvbHZlIGFueSBDb25mbGljdHMgY3JlYXRlZCBieSB0aGUgVXBncmFkZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgdGhlcmUgY291bGQgYmUgc29tZSBjb25mbGljdHMgZHVlIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgYmVpbmcgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgd291bGQgb2NjdXIgaWYgeW91ciByZWNpcGUgc3BlY2lmaWVzIHNvbWUgcGF0Y2ggZmlsZXMgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdGhhdCBjb25mbGljdCB3aXRoIGNoYW5nZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hZGUgaW4gdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgaXMgdGhlIGNhc2UsIHlvdSBuZWVkIHRvIHJlc29sdmUgdGhlIGNvbmZsaWN0cwotICAgICAgICAgICAgICAgICAgICAgICAgYnkgZWRpdGluZyB0aGUgc291cmNlIGFuZCBmb2xsb3dpbmcgdGhlIG5vcm1hbAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCByZWJhc2U8L2ZpbGVuYW1lPiBjb25mbGljdCByZXNvbHV0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIG1vdmluZyBvbnRvIHRoZSBuZXh0IHN0ZXAsIGJlIHN1cmUgdG8gcmVzb2x2ZSBhbnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggY29uZmxpY3RzIGNyZWF0ZWQgdGhyb3VnaCB1c2Ugb2YgYSBuZXdlciBvciBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgdGhlIFJlY2lwZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB5b3VyIHJlY2lwZSBpbiBvcmRlciwgeW91IGNhbiBidWlsZCBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZWl0aGVyIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgRWl0aGVyIG1ldGhvZCBwcm9kdWNlcyBidWlsZCBvdXRwdXQgdGhhdCBpcyBzdG9yZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGluCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRlcGxveSB0aGUgQnVpbGQgT3V0cHV0PC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgb3IgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiB0byBidWlsZCBvdXQgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCB5b3UgcHJvYmFibHkgd2FudCB0byBzZWUgaWYgdGhlIHJlc3VsdGluZyBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHdvcmtzIGFzIGV4cGVjdGVkIG9uIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RlcCBhc3N1bWVzIHlvdSBoYXZlIGEgcHJldmlvdXNseSBidWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRoYXQgaXMgYWxyZWFkeSBlaXRoZXIgcnVubmluZyBpbiBRRU1VIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyBvbiBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgaXQgaXMgYXNzdW1lZCB0aGF0IGZvciBkZXBsb3ltZW50IG9mIHRoZSBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXJnZXQsIFNTSCBpcyBpbnN0YWxsZWQgaW4gdGhlIGltYWdlIGFuZCBpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBpcyBydW5uaW5nIG9uIHJlYWwgaGFyZHdhcmUgdGhhdCB5b3UgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmsgYWNjZXNzIHRvIGFuZCBmcm9tIHlvdXIgZGV2ZWxvcG1lbnQgbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHlvdXIgYnVpbGQgb3V0cHV0IHRvIHRoYXQgdGFyZ2V0IGhhcmR3YXJlIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IDxyZXBsYWNlYWJsZT5yZWNpcGUgdGFyZ2V0PC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gaXMgYSBsaXZlIHRhcmdldCBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIGFzIGFuIFNTSCBzZXJ2ZXIuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuLCBvZiBjb3Vyc2UsIGFsc28gZGVwbG95IHRoZSBpbWFnZSB5b3UgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZG9lcyBub3QgcHJvdmlkZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0byBkbyB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5pc2ggWW91ciBXb3JrIFdpdGggdGhlIFJlY2lwZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcwotICAgICAgICAgICAgICAgICAgICAgICAgYW55IHBhdGNoZXMgY29ycmVzcG9uZGluZyB0byBjb21taXRzIGluIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIG1vdmVzIHRoZSBuZXcgcmVjaXBlIHRvIGEgbW9yZSBwZXJtYW5lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLCBhbmQgdGhlbiByZXNldHMgdGhlIHJlY2lwZSBzbyB0aGF0IHRoZSByZWNpcGUgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IG5vcm1hbGx5IHJhdGhlciB0aGFuIGZyb20gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBzcGVjaWZ5IGEgZGVzdGluYXRpb24gbGF5ZXIgdGhhdCBpcyB0aGUgc2FtZSBhcwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIHNvdXJjZSwgdGhlbiB0aGUgb2xkIHZlcnNpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgYW5kIGFzc29jaWF0ZWQgZmlsZXMgd2lsbCBiZSByZW1vdmVkIHByaW9yIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRpbmcgdGhlIG5ldyB2ZXJzaW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgZmluaXNoIDxyZXBsYWNlYWJsZT5yZWNpcGUgbGF5ZXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IHdhbnQgdG8gdHVybiBpbnRvIHBhdGNoZXMgbXVzdCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgR2l0IHJlcG9zaXRvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIGEgZmluYWwgcHJvY2VzcyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZSBzdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHN0YW5kYXJkIGxheWVycyBhbmQgdGhlIHVwc3RyZWFtIHNvdXJjZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZWQgc28gdGhhdCB5b3UgY2FuIGJ1aWxkIHRoZSByZWNpcGUgZnJvbSB0aG9zZQotICAgICAgICAgICAgICAgICAgICAgICAgYXJlYXMgcmF0aGVyIHRoYW4gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCByZXNldDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBwdXQgdGhpbmdzIGJhY2sgc2hvdWxkIHlvdSBkZWNpZGUgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHdhbnQgdG8gcHJvY2VlZCB3aXRoIHlvdXIgd29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gdXNlIHRoaXMgY29tbWFuZCwgcmVhbGl6ZSB0aGF0IHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlIGlzIHByZXNlcnZlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0idXNpbmctYS1xdWlsdC13b3JrZmxvdyI+Ci0gICAgICAgIDx0aXRsZT5Vc2luZyBRdWlsdCBpbiBZb3VyIFdvcmtmbG93PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3F1aWx0Jz5RdWlsdDwvdWxpbms+Ci0gICAgICAgICAgICBpcyBhIHBvd2VyZnVsIHRvb2wgdGhhdCBhbGxvd3MgeW91IHRvIGNhcHR1cmUgc291cmNlIGNvZGUgY2hhbmdlcwotICAgICAgICAgICAgd2l0aG91dCBoYXZpbmcgYSBjbGVhbiBzb3VyY2UgdHJlZS4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBvdXRsaW5lcyB0aGUgdHlwaWNhbCB3b3JrZmxvdyB5b3UgY2FuIHVzZSB0byBtb2RpZnkKLSAgICAgICAgICAgIHNvdXJjZSBjb2RlLCB0ZXN0IGNoYW5nZXMsIGFuZCB0aGVuIHByZXNlcnZlIHRoZSBjaGFuZ2VzIGluIHRoZQotICAgICAgICAgICAgZm9ybSBvZiBhIHBhdGNoIGFsbCB1c2luZyBRdWlsdC4KLSAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgotICAgICAgICAgICAgICAgIFdpdGggcmVnYXJkIHRvIHByZXNlcnZpbmcgY2hhbmdlcyB0byBzb3VyY2UgZmlsZXMgaWYgeW91Ci0gICAgICAgICAgICAgICAgY2xlYW4gYSByZWNpcGUgb3IgaGF2ZSA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+IGVuYWJsZWQsCi0gICAgICAgICAgICAgICAgdGhlIHdvcmtmbG93IGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC1pbi15b3VyLXdvcmtmbG93Jz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIFlvdXIgV29ya2Zsb3c8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaXMgYSBzYWZlciBkZXZlbG9wbWVudCBmbG93IHRoYW4gdGhhbiB0aGUgZmxvdyB0aGF0Ci0gICAgICAgICAgICAgICAgdXNlcyBRdWlsdC4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHM6Ci0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GaW5kIHRoZSBTb3VyY2UgQ29kZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUZW1wb3Jhcnkgc291cmNlIGNvZGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2ZpbmRpbmctdGhlLXRlbXBvcmFyeS1zb3VyY2UtY29kZSc+RmluZGluZyBUZW1wb3JhcnkgU291cmNlIENvZGU8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIHRvIGxlYXJuIGhvdyB0byBsb2NhdGUgdGhlIGRpcmVjdG9yeSB0aGF0IGhhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5IHNvdXJjZSBjb2RlIGZvciBhIHBhcnRpY3VsYXIgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DaGFuZ2UgWW91ciBXb3JraW5nIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBiZSBpbiB0aGUgZGlyZWN0b3J5IHRoYXQgaGFzIHRoZSB0ZW1wb3Jhcnkgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgICAgIFRoYXQgZGlyZWN0b3J5IGlzIGRlZmluZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgYSBOZXcgUGF0Y2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQmVmb3JlIG1vZGlmeWluZyBzb3VyY2UgY29kZSwgeW91IG5lZWQgdG8gY3JlYXRlIGEgbmV3IHBhdGNoLgotICAgICAgICAgICAgICAgICAgICBUbyBjcmVhdGUgYSBuZXcgcGF0Y2ggZmlsZSwgdXNlIDxmaWxlbmFtZT5xdWlsdCBuZXc8L2ZpbGVuYW1lPiBhcyBiZWxvdzoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHF1aWx0IG5ldyBteV9jaGFuZ2VzLnBhdGNoCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk5vdGlmeSBRdWlsdCBhbmQgQWRkIEZpbGVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEFmdGVyIGNyZWF0aW5nIHRoZSBwYXRjaCwgeW91IG5lZWQgdG8gbm90aWZ5IFF1aWx0IGFib3V0IHRoZSBmaWxlcwotICAgICAgICAgICAgICAgICAgICB5b3UgcGxhbiB0byBlZGl0LgotICAgICAgICAgICAgICAgICAgICBZb3Ugbm90aWZ5IFF1aWx0IGJ5IGFkZGluZyB0aGUgZmlsZXMgdG8gdGhlIHBhdGNoIHlvdSBqdXN0IGNyZWF0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBxdWlsdCBhZGQgZmlsZTEuYyBmaWxlMi5jIGZpbGUzLmMKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVkaXQgdGhlIEZpbGVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIE1ha2UgeW91ciBjaGFuZ2VzIGluIHRoZSBzb3VyY2UgY29kZSB0byB0aGUgZmlsZXMgeW91IGFkZGVkCi0gICAgICAgICAgICAgICAgICAgIHRvIHRoZSBwYXRjaC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UZXN0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIG1vZGlmaWVkIHRoZSBzb3VyY2UgY29kZSwgdGhlIGVhc2llc3Qgd2F5IHRvCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgY2hhbmdlcyBpcyBieSBjYWxsaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+IHRhc2sgYXMgc2hvd24gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSAtYyBjb21waWxlIC1mIDxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPi0tZm9yY2U8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBvcHRpb24gZm9yY2VzIHRoZSBzcGVjaWZpZWQgdGFzayB0byBleGVjdXRlLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZmluZCBwcm9ibGVtcyB3aXRoIHlvdXIgY29kZSwgeW91IGNhbiBqdXN0IGtlZXAgZWRpdGluZyBhbmQKLSAgICAgICAgICAgICAgICAgICAgcmUtdGVzdGluZyBpdGVyYXRpdmVseSB1bnRpbCB0aGluZ3Mgd29yayBhcyBleHBlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+QWxsIHRoZSBtb2RpZmljYXRpb25zIHlvdSBtYWtlIHRvIHRoZSB0ZW1wb3Jhcnkgc291cmNlIGNvZGUKLSAgICAgICAgICAgICAgICAgICAgZGlzYXBwZWFyIG9uY2UgeW91IHJ1biB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNsZWFuJz48ZmlsZW5hbWU+ZG9fY2xlYW48L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbmFsbCc+PGZpbGVuYW1lPmRvX2NsZWFuYWxsPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB0YXNrcyB1c2luZyBCaXRCYWtlIChpLmUuCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIGNsZWFuIDxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWMgY2xlYW5hbGwgPHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgTW9kaWZpY2F0aW9ucyB3aWxsIGFsc28gZGlzYXBwZWFyIGlmIHlvdSB1c2UgdGhlIDxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZSBhcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdlbmVyYXRlIHRoZSBQYXRjaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdXIgY2hhbmdlcyB3b3JrIGFzIGV4cGVjdGVkLCB5b3UgbmVlZCB0byB1c2UgUXVpbHQgdG8gZ2VuZXJhdGUgdGhlIGZpbmFsIHBhdGNoIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYWxsIHlvdXIgbW9kaWZpY2F0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHF1aWx0IHJlZnJlc2gKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB0aGUgPGZpbGVuYW1lPm15X2NoYW5nZXMucGF0Y2g8L2ZpbGVuYW1lPiBmaWxlIGhhcyBhbGwgeW91ciBlZGl0cyBtYWRlCi0gICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZmlsZTEuYzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZmlsZTIuYzwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGUzLmM8L2ZpbGVuYW1lPiBmaWxlcy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gZmluZCB0aGUgcmVzdWx0aW5nIHBhdGNoIGZpbGUgaW4gdGhlIDxmaWxlbmFtZT5wYXRjaGVzLzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiB0aGUgc291cmNlICg8ZmlsZW5hbWU+UzwvZmlsZW5hbWU+KSBkaXJlY3RvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Db3B5IHRoZSBQYXRjaCBGaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCBjb3B5IHRoZSBwYXRjaCBmaWxlIGludG8gYSBkaXJlY3RvcnkgbmFtZWQgPGZpbGVuYW1lPmZpbGVzPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBjYW4gY3JlYXRlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB0aGF0IGhvbGRzIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPikgZmlsZSBvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIFBsYWNpbmcgdGhlIHBhdGNoIGhlcmUgZ3VhcmFudGVlcyB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdpbGwgZmluZAotICAgICAgICAgICAgICAgICAgICB0aGUgcGF0Y2guCi0gICAgICAgICAgICAgICAgICAgIE5leHQsIGFkZCB0aGUgcGF0Y2ggaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz5TUkNfVVJJPC91bGluaz48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSArPSAiZmlsZTovL215X2NoYW5nZXMucGF0Y2giCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nZmluZGluZy10aGUtdGVtcG9yYXJ5LXNvdXJjZS1jb2RlJz4KLSAgICAgICAgPHRpdGxlPkZpbmRpbmcgVGVtcG9yYXJ5IFNvdXJjZSBDb2RlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBtaWdodCBmaW5kIGl0IGhlbHBmdWwgZHVyaW5nIGRldmVsb3BtZW50IHRvIG1vZGlmeSB0aGUKLSAgICAgICAgICAgIHRlbXBvcmFyeSBzb3VyY2UgY29kZSB1c2VkIGJ5IHJlY2lwZXMgdG8gYnVpbGQgcGFja2FnZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIGRldmVsb3BpbmcgYSBwYXRjaCBhbmQgeW91IG5lZWQgdG8KLSAgICAgICAgICAgIGV4cGVyaW1lbnQgYSBiaXQgdG8gZmlndXJlIG91dCB5b3VyIHNvbHV0aW9uLgotICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgaW5pdGlhbGx5IGJ1aWx0IHRoZSBwYWNrYWdlLCB5b3UgY2FuIGl0ZXJhdGl2ZWx5Ci0gICAgICAgICAgICB0d2VhayB0aGUgc291cmNlIGNvZGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4sIGFuZCB0aGVuCi0gICAgICAgICAgICB5b3UgY2FuIGZvcmNlIGEgcmUtY29tcGlsZSBhbmQgcXVpY2tseSB0ZXN0IHlvdXIgYWx0ZXJlZCBjb2RlLgotICAgICAgICAgICAgT25jZSB5b3Ugc2V0dGxlIG9uIGEgc29sdXRpb24sIHlvdSBjYW4gdGhlbiBwcmVzZXJ2ZSB5b3VyIGNoYW5nZXMKLSAgICAgICAgICAgIGluIHRoZSBmb3JtIG9mIHBhdGNoZXMuCi0gICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIFF1aWx0IGZvciBkZXZlbG9wbWVudCwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcXVpbHQtd29ya2Zsb3cnPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRHVyaW5nIGEgYnVpbGQsIHRoZSB1bnBhY2tlZCB0ZW1wb3Jhcnkgc291cmNlIGNvZGUgdXNlZCBieSByZWNpcGVzCi0gICAgICAgICAgICB0byBidWlsZCBwYWNrYWdlcyBpcyBhdmFpbGFibGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSBhcwotICAgICAgICAgICAgZGVmaW5lZCBieSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+UzwvdWxpbms+PC9maWxlbmFtZT4gdmFyaWFibGUuCi0gICAgICAgICAgICBCZWxvdyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIDxmaWxlbmFtZT5TPC9maWxlbmFtZT4gdmFyaWFibGUgYXMgZGVmaW5lZCBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz46Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFMgPSAiJHtXT1JLRElSfS8ke0JQfSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBtYW55IHJlY2lwZXMgb3ZlcnJpZGUgdGhlIDxmaWxlbmFtZT5TPC9maWxlbmFtZT4gdmFyaWFibGUuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgcmVjaXBlcyB0aGF0IGZldGNoIHRoZWlyIHNvdXJjZSBmcm9tIEdpdCB1c3VhbGx5IHNldAotICAgICAgICAgICAgPGZpbGVuYW1lPlM8L2ZpbGVuYW1lPiB0byA8ZmlsZW5hbWU+JHtXT1JLRElSfS9naXQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CUCc+PGZpbGVuYW1lPkJQPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgdGhlIGJhc2UgcmVjaXBlIG5hbWUsIHdoaWNoIGNvbnNpc3RzIG9mIHRoZSBuYW1lIGFuZCB2ZXJzaW9uOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQlAgPSAiJHtCUE59LSR7UFZ9IgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHBhdGggdG8gdGhlIHdvcmsgZGlyZWN0b3J5IGZvciB0aGUgcmVjaXBlCi0gICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPikKLSAgICAgICAgICAgIGlzIGRlZmluZWQgYXMgZm9sbG93czoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJHtUTVBESVJ9L3dvcmsvJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU30vJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfQotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhlIGFjdHVhbCBkaXJlY3RvcnkgZGVwZW5kcyBvbiBzZXZlcmFsIHRoaW5nczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICBUaGUgdG9wLWxldmVsIGJ1aWxkIG91dHB1dCBkaXJlY3Rvcnk8L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTVVMVElNQUNIX1RBUkdFVF9TWVMnPjxmaWxlbmFtZT5NVUxUSU1BQ0hfVEFSR0VUX1NZUzwvZmlsZW5hbWU+PC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgc3lzdGVtIGlkZW50aWZpZXI8L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgbmFtZTwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRFTkRQRSc+PGZpbGVuYW1lPkVYVEVORFBFPC9maWxlbmFtZT48L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIGVwb2NoIC0gKGlmCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QRSc+PGZpbGVuYW1lPlBFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBpcyBub3Qgc3BlY2lmaWVkLCB3aGljaCBpcyB1c3VhbGx5IHRoZSBjYXNlIGZvciBtb3N0Ci0gICAgICAgICAgICAgICAgICAgIHJlY2lwZXMsIHRoZW4gPGZpbGVuYW1lPkVYVEVORFBFPC9maWxlbmFtZT4gaXMgYmxhbmspPC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIHZlcnNpb248L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgcmV2aXNpb248L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGFzc3VtZSBhIFNvdXJjZSBEaXJlY3RvcnkgdG9wLWxldmVsIGZvbGRlcgotICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiwgYSBkZWZhdWx0IEJ1aWxkIERpcmVjdG9yeSBhdAotICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvYnVpbGQ8L2ZpbGVuYW1lPiwgYW5kIGEKLSAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LXBva3ktbGludXg8L2ZpbGVuYW1lPiBtYWNoaW5lIHRhcmdldAotICAgICAgICAgICAgc3lzdGVtLgotICAgICAgICAgICAgRnVydGhlcm1vcmUsIHN1cHBvc2UgeW91ciByZWNpcGUgaXMgbmFtZWQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fMS4zLjAuYmI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHdvcmsgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcyB0bwotICAgICAgICAgICAgYnVpbGQgdGhlIHBhY2thZ2Ugd291bGQgYmUgYXMgZm9sbG93czoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvZm9vLzEuMy4wLXIwCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBrbm93IHdoZXJlIHRvIGxvY2F0ZSB0aGUgZGlyZWN0b3J5IHRoYXQgaGFzIHRoZQotICAgICAgICAgICAgdGVtcG9yYXJ5IHNvdXJjZSBjb2RlLCB5b3UgY2FuIHVzZSBhIFF1aWx0IGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctYS1xdWlsdC13b3JrZmxvdyc+VXNpbmcgUXVpbHQgaW4gWW91ciBXb3JrZmxvdzwvbGluaz4iCi0gICAgICAgICAgICB0byBtYWtlIHlvdXIgZWRpdHMsIHRlc3QgdGhlIGNoYW5nZXMsIGFuZCBwcmVzZXJ2ZSB0aGUgY2hhbmdlcyBpbgotICAgICAgICAgICAgdGhlIGZvcm0gb2YgcGF0Y2hlcy4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J2ltYWdlLWRldmVsb3BtZW50LXVzaW5nLXRvYXN0ZXInPgotICAgIDx0aXRsZT5JbWFnZSBEZXZlbG9wbWVudCBVc2luZyBUb2FzdGVyPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUb2FzdGVyIGlzIGEgd2ViIGludGVyZmFjZSB0byB0aGUgWW9jdG8gUHJvamVjdCdzIE9wZW5FbWJlZGRlZCBidWlsZAotICAgICAgICBzeXN0ZW0uCi0gICAgICAgIFlvdSBjYW4gaW5pdGlhdGUgYnVpbGRzIHVzaW5nIFRvYXN0ZXIgYXMgd2VsbCBhcyBleGFtaW5lIHRoZSByZXN1bHRzCi0gICAgICAgIGFuZCBzdGF0aXN0aWNzIG9mIGJ1aWxkcy4KLSAgICAgICAgU2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLWludHJvJz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz4KLSAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYW5kIHVzZSBUb2FzdGVyIHRvIGJ1aWxkIGltYWdlcy4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSJwbGF0ZGV2LWFwcGRldi1kZXZzaGVsbCI+Ci0gICAgPHRpdGxlPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoZW4gZGVidWdnaW5nIGNlcnRhaW4gY29tbWFuZHMgb3IgZXZlbiB3aGVuIGp1c3QgZWRpdGluZyBwYWNrYWdlcywKLSAgICAgICAgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gY2FuIGJlIGEgdXNlZnVsIHRvb2wuCi0gICAgICAgIFdoZW4geW91IGludm9rZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwgYWxsIHRhc2tzIHVwIHRvIGFuZAotICAgICAgICBpbmNsdWRpbmcKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgIGFyZSBydW4gZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0LgotICAgICAgICBUaGVuLCBhIG5ldyB0ZXJtaW5hbCBpcyBvcGVuZWQgYW5kIHlvdSBhcmUgcGxhY2VkIGluCi0gICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCi0gICAgICAgIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgotICAgICAgICBJbiB0aGUgbmV3IHRlcm1pbmFsLCBhbGwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZC1yZWxhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUKLSAgICAgICAgc3RpbGwgZGVmaW5lZCBzbyB5b3UgY2FuIHVzZSBjb21tYW5kcyBzdWNoIGFzIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPi4KLSAgICAgICAgVGhlIGNvbW1hbmRzIGV4ZWN1dGUganVzdCBhcyBpZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3ZXJlIGV4ZWN1dGluZyB0aGVtLgotICAgICAgICBDb25zZXF1ZW50bHksIHdvcmtpbmcgdGhpcyB3YXkgY2FuIGJlIGhlbHBmdWwgd2hlbiBkZWJ1Z2dpbmcgYSBidWlsZCBvciBwcmVwYXJpbmcKLSAgICAgICAgc29mdHdhcmUgdG8gYmUgdXNlZCB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IHVzZXMgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gb24gYSB0YXJnZXQgbmFtZWQKLSAgICAgICAgPGZpbGVuYW1lPm1hdGNoYm94LWRlc2t0b3A8L2ZpbGVuYW1lPjoKLSAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBkZXZzaGVsbAotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgY29tbWFuZCBzcGF3bnMgYSB0ZXJtaW5hbCB3aXRoIGEgc2hlbGwgcHJvbXB0IHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50LgotICAgICAgICBUaGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU9FX1RFUk1JTkFMJz48ZmlsZW5hbWU+T0VfVEVSTUlOQUw8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgIHZhcmlhYmxlIGNvbnRyb2xzIHdoYXQgdHlwZSBvZiBzaGVsbCBpcyBvcGVuZWQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBzcGF3bmVkIHRlcm1pbmFscywgdGhlIGZvbGxvd2luZyBvY2N1cnM6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgaW5jbHVkZXMgdGhlCi0gICAgICAgICAgICAgICAgY3Jvc3MtdG9vbGNoYWluLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+cGtnY29uZmlnPC9maWxlbmFtZT4gdmFyaWFibGVzIGZpbmQgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnBjPC9maWxlbmFtZT4gZmlsZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gY29tbWFuZCBmaW5kcyB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHNpdGUgZmlsZXMgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmVjZXNzYXJ5IGZpbGVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgV2l0aGluIHRoaXMgZW52aXJvbm1lbnQsIHlvdSBjYW4gcnVuIGNvbmZpZ3VyZSBvciBjb21waWxlCi0gICAgICAgIGNvbW1hbmRzIGFzIGlmIHRoZXkgd2VyZSBiZWluZyBydW4gYnkKLSAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXRzZWxmLgotICAgICAgICBBcyBub3RlZCBlYXJsaWVyLCB0aGUgd29ya2luZyBkaXJlY3RvcnkgYWxzbyBhdXRvbWF0aWNhbGx5IGNoYW5nZXMgdG8gdGhlCi0gICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4pLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUbyBtYW51YWxseSBydW4gYSBzcGVjaWZpYyB0YXNrIHVzaW5nIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LAotICAgICAgICBydW4gdGhlIGNvcnJlc3BvbmRpbmcgPGZpbGVuYW1lPnJ1bi4qPC9maWxlbmFtZT4gc2NyaXB0IGluCi0gICAgICAgIHRoZQotICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS90ZW1wPC9maWxlbmFtZT4KLSAgICAgICAgZGlyZWN0b3J5IChlLmcuLAotICAgICAgICA8ZmlsZW5hbWU+cnVuLmRvX2NvbmZpZ3VyZS48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5waWQ8L3JlcGxhY2VhYmxlPikuCi0gICAgICAgIElmIGEgdGFzaydzIHNjcmlwdCBkb2VzIG5vdCBleGlzdCwgd2hpY2ggd291bGQgYmUgdGhlIGNhc2UgaWYgdGhlIHRhc2sgd2FzCi0gICAgICAgIHNraXBwZWQgYnkgd2F5IG9mIHRoZSBzc3RhdGUgY2FjaGUsIHlvdSBjYW4gY3JlYXRlIHRoZSB0YXNrIGJ5IGZpcnN0IHJ1bm5pbmcKLSAgICAgICAgaXQgb3V0c2lkZSBvZiB0aGUgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT46Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1jIDxyZXBsYWNlYWJsZT50YXNrPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhlY3V0aW9uIG9mIGEgdGFzaydzIDxmaWxlbmFtZT5ydW4uKjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHNjcmlwdCBhbmQgQml0QmFrZSdzIGV4ZWN1dGlvbiBvZiBhIHRhc2sgYXJlIGlkZW50aWNhbC4KLSAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHJ1bm5pbmcgdGhlIHNjcmlwdCByZS1ydW5zIHRoZSB0YXNrCi0gICAgICAgICAgICAgICAgICAgIGp1c3QgYXMgaXQgd291bGQgYmUgcnVuIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYzwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BbnkgPGZpbGVuYW1lPnJ1bi4qPC9maWxlbmFtZT4gZmlsZSB0aGF0IGRvZXMgbm90Ci0gICAgICAgICAgICAgICAgICAgIGhhdmUgYSA8ZmlsZW5hbWU+LnBpZDwvZmlsZW5hbWU+IGV4dGVuc2lvbiBpcyBhCi0gICAgICAgICAgICAgICAgICAgIHN5bWJvbGljIGxpbmsgKHN5bWxpbmspIHRvIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBSZW1lbWJlciwgdGhhdCB0aGUgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gaXMgYSBtZWNoYW5pc20gdGhhdCBhbGxvd3MKLSAgICAgICAgeW91IHRvIGdldCBpbnRvIHRoZSBCaXRCYWtlIHRhc2sgZXhlY3V0aW9uIGVudmlyb25tZW50LgotICAgICAgICBBbmQgYXMgc3VjaCwgYWxsIGNvbW1hbmRzIG11c3QgYmUgY2FsbGVkIGp1c3QgYXMgQml0QmFrZSB3b3VsZCBjYWxsIHRoZW0uCi0gICAgICAgIFRoYXQgbWVhbnMgeW91IG5lZWQgdG8gcHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyBmb3IKLSAgICAgICAgY3Jvc3MtY29tcGlsYXRpb24gYW5kIHNvIGZvcnRoIGFzIGFwcGxpY2FibGUuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoZW4geW91IGFyZSBmaW5pc2hlZCB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwgZXhpdCB0aGUgc2hlbGwKLSAgICAgICAgb3IgY2xvc2UgdGhlIHRlcm1pbmFsIHdpbmRvdy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIEl0IGlzIHdvcnRoIHJlbWVtYmVyaW5nIHRoYXQgd2hlbiB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIHVzZSB0aGUgZnVsbCBjb21waWxlciBuYW1lIHN1Y2ggYXMgPGZpbGVuYW1lPmFybS1wb2t5LWxpbnV4LWdudWVhYmktZ2NjPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIGp1c3QgdXNpbmcgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBzYW1lIGFwcGxpZXMgdG8gb3RoZXIgYXBwbGljYXRpb25zIHN1Y2ggYXMgPGZpbGVuYW1lPmJpbnV0aWxzPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnRvb2w8L2ZpbGVuYW1lPiBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAgICAgQml0QmFrZSBzZXRzIHVwIGVudmlyb25tZW50IHZhcmlhYmxlcyBzdWNoIGFzIDxmaWxlbmFtZT5DQzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdG8gYXNzaXN0IGFwcGxpY2F0aW9ucywgc3VjaCBhcyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHRvIGZpbmQgdGhlIGNvcnJlY3QgdG9vbHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgSXQgaXMgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBzdGlsbCB3b3JrcyBvdmVyCi0gICAgICAgICAgICAgICAgWDExIGZvcndhcmRpbmcgYW5kIHNpbWlsYXIgc2l0dWF0aW9ucy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9ub3RlPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0icGxhdGRldi1hcHBkZXYtZGV2cHlzaGVsbCI+Ci0gICAgPHRpdGxlPlVzaW5nIGEgRGV2ZWxvcG1lbnQgUHl0aG9uIFNoZWxsPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBTaW1pbGFyIHRvIHdvcmtpbmcgd2l0aGluIGEgZGV2ZWxvcG1lbnQgc2hlbGwgYXMgZGVzY3JpYmVkIGluCi0gICAgICAgIHRoZSBwcmV2aW91cyBzZWN0aW9uLCB5b3UgY2FuIGFsc28gc3Bhd24gYW5kIHdvcmsgd2l0aGluIGFuCi0gICAgICAgIGludGVyYWN0aXZlIFB5dGhvbiBkZXZlbG9wbWVudCBzaGVsbC4KLSAgICAgICAgV2hlbiBkZWJ1Z2dpbmcgY2VydGFpbiBjb21tYW5kcyBvciBldmVuIHdoZW4ganVzdCBlZGl0aW5nIHBhY2thZ2VzLAotICAgICAgICA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+IGNhbiBiZSBhIHVzZWZ1bCB0b29sLgotICAgICAgICBXaGVuIHlvdSBpbnZva2UgPGZpbGVuYW1lPmRldnB5c2hlbGw8L2ZpbGVuYW1lPiwgYWxsIHRhc2tzIHVwIHRvIGFuZAotICAgICAgICBpbmNsdWRpbmcKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgIGFyZSBydW4gZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0LgotICAgICAgICBUaGVuIGEgbmV3IHRlcm1pbmFsIGlzIG9wZW5lZC4KLSAgICAgICAgQWRkaXRpb25hbGx5LCBrZXkgUHl0aG9uIG9iamVjdHMgYW5kIGNvZGUgYXJlIGF2YWlsYWJsZSBpbiB0aGUgc2FtZQotICAgICAgICB3YXkgdGhleSBhcmUgdG8gQml0QmFrZSB0YXNrcywgaW4gcGFydGljdWxhciwgdGhlIGRhdGEgc3RvcmUgJ2QnLgotICAgICAgICBTbywgY29tbWFuZHMgc3VjaCBhcyB0aGUgZm9sbG93aW5nIGFyZSB1c2VmdWwgd2hlbiBleHBsb3JpbmcgdGhlIGRhdGEKLSAgICAgICAgc3RvcmUgYW5kIHJ1bm5pbmcgZnVuY3Rpb25zOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHB5ZGV2c2hlbGw+IGQuZ2V0VmFyKCJTVEFHSU5HX0RJUiIsIFRydWUpCi0gICAgICcvbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzJwotICAgICBweWRldnNoZWxsPiBkLmdldFZhcigiU1RBR0lOR19ESVIiLCBGYWxzZSkKLSAgICAgJyR7VE1QRElSfS9zeXNyb290cycKLSAgICAgcHlkZXZzaGVsbD4gZC5zZXRWYXIoIkZPTyIsICJiYXIiKQotICAgICBweWRldnNoZWxsPiBkLmdldFZhcigiRk9PIiwgVHJ1ZSkKLSAgICAgJ2JhcicKLSAgICAgcHlkZXZzaGVsbD4gZC5kZWxWYXIoIkZPTyIpCi0gICAgIHB5ZGV2c2hlbGw+IGQuZ2V0VmFyKCJGT08iLCBUcnVlKQotICAgICBweWRldnNoZWxsPiBiYi5idWlsZC5leGVjX2Z1bmMoImRvX3VucGFjayIsIGQpCi0gICAgIHB5ZGV2c2hlbGw+Ci0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgVGhlIGNvbW1hbmRzIGV4ZWN1dGUganVzdCBhcyBpZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3ZXJlIGV4ZWN1dGluZyB0aGVtLgotICAgICAgICBDb25zZXF1ZW50bHksIHdvcmtpbmcgdGhpcyB3YXkgY2FuIGJlIGhlbHBmdWwgd2hlbiBkZWJ1Z2dpbmcgYSBidWlsZCBvciBwcmVwYXJpbmcKLSAgICAgICAgc29mdHdhcmUgdG8gYmUgdXNlZCB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IHVzZXMgPGZpbGVuYW1lPmRldnB5c2hlbGw8L2ZpbGVuYW1lPiBvbiBhIHRhcmdldCBuYW1lZAotICAgICAgICA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcDwvZmlsZW5hbWU+OgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1jIGRldnB5c2hlbGwKLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIGNvbW1hbmQgc3Bhd25zIGEgdGVybWluYWwgYW5kIHBsYWNlcyB5b3UgaW4gYW4gaW50ZXJhY3RpdmUKLSAgICAgICAgUHl0aG9uIGludGVycHJldGVyIHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50LgotICAgICAgICBUaGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU9FX1RFUk1JTkFMJz48ZmlsZW5hbWU+T0VfVEVSTUlOQUw8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgIHZhcmlhYmxlIGNvbnRyb2xzIHdoYXQgdHlwZSBvZiBzaGVsbCBpcyBvcGVuZWQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoZW4geW91IGFyZSBmaW5pc2hlZCB1c2luZyA8ZmlsZW5hbWU+ZGV2cHlzaGVsbDwvZmlsZW5hbWU+LCB5b3UKLSAgICAgICAgY2FuIGV4aXQgdGhlIHNoZWxsIGVpdGhlciBieSB1c2luZyBDdHJsK2Qgb3IgY2xvc2luZyB0aGUgdGVybWluYWwKLSAgICAgICAgd2luZG93LgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLW5ld2JpZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbAppbmRleCBhZDMyYWM2Li5hMGZiYjRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbApAQCAtNiw2MyArNiwxMyBAQAogCiA8dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgT3BlbiBTb3VyY2UgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgogCi08cGFyYT4KLSAgICBUaGlzIGNoYXB0ZXIgaGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIFlvY3RvIFByb2plY3QgYXMgYW4gb3BlbiBzb3VyY2UgZGV2ZWxvcG1lbnQgcHJvamVjdC4KLSAgICBJbiBnZW5lcmFsLCB3b3JraW5nIGluIGFuIG9wZW4gc291cmNlIGVudmlyb25tZW50IGlzIHZlcnkgZGlmZmVyZW50IGZyb20gd29ya2luZyBpbiBhCi0gICAgY2xvc2VkLCBwcm9wcmlldGFyeSBlbnZpcm9ubWVudC4KLSAgICBBZGRpdGlvbmFsbHksIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgc3BlY2lmaWMgdG9vbHMgYW5kIGNvbnN0cnVjdHMgYXMgcGFydCBvZiBpdHMgZGV2ZWxvcG1lbnQKLSAgICBlbnZpcm9ubWVudC4KLSAgICBUaGlzIGNoYXB0ZXIgc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBvcGVuIHNvdXJjZSBwaGlsb3NvcGh5LCB1c2luZyB0aGUKLSAgICBZb2N0byBQcm9qZWN0IGluIGEgdGVhbSBlbnZpcm9ubWVudCwgc291cmNlIHJlcG9zaXRvcmllcywgWW9jdG8gUHJvamVjdAotICAgIHRlcm1zLCBsaWNlbnNpbmcsIHRoZSBvcGVuIHNvdXJjZSBkaXN0cmlidXRlZCB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIEdpdCwKLSAgICB3b3JrZmxvd3MsIGJ1ZyB0cmFja2luZywgYW5kIGhvdyB0byBzdWJtaXQgY2hhbmdlcy4KLTwvcGFyYT4KLQotPHNlY3Rpb24gaWQ9J29wZW4tc291cmNlLXBoaWxvc29waHknPgotICAgIDx0aXRsZT5PcGVuIFNvdXJjZSBQaGlsb3NvcGh5PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBPcGVuIHNvdXJjZSBwaGlsb3NvcGh5IGlzIGNoYXJhY3Rlcml6ZWQgYnkgc29mdHdhcmUgZGV2ZWxvcG1lbnQgZGlyZWN0ZWQgYnkgcGVlciBwcm9kdWN0aW9uCi0gICAgICAgIGFuZCBjb2xsYWJvcmF0aW9uIHRocm91Z2ggYW4gYWN0aXZlIGNvbW11bml0eSBvZiBkZXZlbG9wZXJzLgotICAgICAgICBDb250cmFzdCB0aGlzIHRvIHRoZSBtb3JlIHN0YW5kYXJkIGNlbnRyYWxpemVkIGRldmVsb3BtZW50IG1vZGVscyB1c2VkIGJ5IGNvbW1lcmNpYWwgc29mdHdhcmUKLSAgICAgICAgY29tcGFuaWVzIHdoZXJlIGEgZmluaXRlIHNldCBvZiBkZXZlbG9wZXJzIHByb2R1Y2VzIGEgcHJvZHVjdCBmb3Igc2FsZSB1c2luZyBhIGRlZmluZWQgc2V0Ci0gICAgICAgIG9mIHByb2NlZHVyZXMgdGhhdCB1bHRpbWF0ZWx5IHJlc3VsdCBpbiBhbiBlbmQgcHJvZHVjdCB3aG9zZSBhcmNoaXRlY3R1cmUgYW5kIHNvdXJjZSBtYXRlcmlhbAotICAgICAgICBhcmUgY2xvc2VkIHRvIHRoZSBwdWJsaWMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIE9wZW4gc291cmNlIHByb2plY3RzIGNvbmNlcHR1YWxseSBoYXZlIGRpZmZlcmluZyBjb25jdXJyZW50IGFnZW5kYXMsIGFwcHJvYWNoZXMsIGFuZCBwcm9kdWN0aW9uLgotICAgICAgICBUaGVzZSBmYWNldHMgb2YgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MgY2FuIGNvbWUgZnJvbSBhbnlvbmUgaW4gdGhlIHB1YmxpYyAoY29tbXVuaXR5KSB0aGF0IGhhcyBhCi0gICAgICAgIHN0YWtlIGluIHRoZSBzb2Z0d2FyZSBwcm9qZWN0LgotICAgICAgICBUaGUgb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQgY29udGFpbnMgbmV3IGNvcHlyaWdodCwgbGljZW5zaW5nLCBkb21haW4sIGFuZCBjb25zdW1lciBpc3N1ZXMKLSAgICAgICAgdGhhdCBkaWZmZXIgZnJvbSB0aGUgbW9yZSB0cmFkaXRpb25hbCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICAgICAgSW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsIHRoZSBlbmQgcHJvZHVjdCwgc291cmNlIG1hdGVyaWFsLCBhbmQgZG9jdW1lbnRhdGlvbiBhcmUKLSAgICAgICAgYWxsIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGF0IG5vIGNvc3QuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEEgYmVuY2htYXJrIGV4YW1wbGUgb2YgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBpcyB0aGUgTGludXgga2VybmVsLCB3aGljaCB3YXMgaW5pdGlhbGx5IGNvbmNlaXZlZAotICAgICAgICBhbmQgY3JlYXRlZCBieSBGaW5uaXNoIGNvbXB1dGVyIHNjaWVuY2Ugc3R1ZGVudCBMaW51cyBUb3J2YWxkcyBpbiAxOTkxLgotICAgICAgICBDb252ZXJzZWx5LCBhIGdvb2QgZXhhbXBsZSBvZiBhIG5vbi1vcGVuIHNvdXJjZSBwcm9qZWN0IGlzIHRoZQotICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5XaW5kb3dzPC90cmFkZW1hcms+IGZhbWlseSBvZiBvcGVyYXRpbmcKLSAgICAgICAgc3lzdGVtcyBkZXZlbG9wZWQgYnkgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+TWljcm9zb2Z0PC90cmFkZW1hcms+IENvcnBvcmF0aW9uLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaWtpcGVkaWEgaGFzIGEgZ29vZCBoaXN0b3JpY2FsIGRlc2NyaXB0aW9uIG9mIHRoZSBPcGVuIFNvdXJjZSBQaGlsb3NvcGh5Ci0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbl9zb3VyY2UnPmhlcmU8L3VsaW5rPi4KLSAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgaGVscGZ1bCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcGFydGljaXBhdGUgaW4gdGhlIExpbnV4IENvbW11bml0eQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGRuLmxpbnV4Zm91bmRhdGlvbi5vcmcvYm9vay9ob3ctcGFydGljaXBhdGUtbGludXgtY29tbXVuaXR5Jz5oZXJlPC91bGluaz4uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCiA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LWNoYW5nZXMtY29sbGFib3JhdGUiPgotICAgIDx0aXRsZT5Vc2luZyB0aGUgWW9jdG8gUHJvamVjdCBpbiBhIFRlYW0gRW52aXJvbm1lbnQ8L3RpdGxlPgorICAgIDx0aXRsZT5TZXR0aW5nIFVwIGEgVGVhbSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC90aXRsZT4KIAogICAgIDxwYXJhPgogICAgICAgICBJdCBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgY2xlYXIgaG93IHlvdSBjYW4gdXNlIHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IGluIGEgdGVhbSBlbnZpcm9ubWVudCwgb3Igc2NhbGUgaXQgZm9yIGEgbGFyZ2UgdGVhbSBvZgotICAgICAgICBkZXZlbG9wZXJzLgorICAgICAgICBQcm9qZWN0IGluIGEgdGVhbSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgb3Igc2NhbGUgaXQgZm9yIGEgbGFyZ2UKKyAgICAgICAgdGVhbSBvZiBkZXZlbG9wZXJzLgogICAgICAgICBPbmUgb2YgdGhlIHN0cmVuZ3RocyBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0aGF0IGl0IGlzIGV4dHJlbWVseQogICAgICAgICBmbGV4aWJsZS4KICAgICAgICAgVGh1cywgeW91IGNhbiBhZGFwdCBpdCB0byBtYW55IGRpZmZlcmVudCB1c2UgY2FzZXMgYW5kIHNjZW5hcmlvcy4KQEAgLTcxLDE1MDUgKzIxLDYxNSBAQAogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBUbyBoZWxwIHdpdGggdGhlc2UgdHlwZXMgb2Ygc2l0dWF0aW9ucywgdGhpcyBzZWN0aW9uIHByZXNlbnRzCi0gICAgICAgIHNvbWUgb2YgdGhlIHByb2plY3QncyBtb3N0IHN1Y2Nlc3NmdWwgZXhwZXJpZW5jZXMsCi0gICAgICAgIHByYWN0aWNlcywgc29sdXRpb25zLCBhbmQgYXZhaWxhYmxlIHRlY2hub2xvZ2llcyB0aGF0IHdvcmsgd2VsbC4KLSAgICAgICAgS2VlcCBpbiBtaW5kLCB0aGUgaW5mb3JtYXRpb24gaGVyZSBpcyBhIHN0YXJ0aW5nIHBvaW50LgorICAgICAgICBUbyBoZWxwIHlvdSB1bmRlcnN0YW5kIGhvdyB0byBzZXQgdXAgdGhpcyB0eXBlIG9mIGVudmlyb25tZW50LAorICAgICAgICB0aGlzIHNlY3Rpb24gcHJlc2VudHMgYSBwcm9jZWR1cmUgdGhhdCBnaXZlcyB5b3UgdGhlIGluZm9ybWF0aW9uCisgICAgICAgIHRvIGxlYXJuIGhvdyB0byBnZXQgdGhlIHJlc3VsdHMgeW91IHdhbnQuCisgICAgICAgIFRoZSBwcm9jZWR1cmUgaXMgaGlnaC1sZXZlbCBhbmQgcHJlc2VudHMgc29tZSBvZiB0aGUgcHJvamVjdCdzIG1vc3QKKyAgICAgICAgc3VjY2Vzc2Z1bCBleHBlcmllbmNlcywgcHJhY3RpY2VzLCBzb2x1dGlvbnMsIGFuZCBhdmFpbGFibGUKKyAgICAgICAgdGVjaG5vbG9naWVzIHRoYXQgd29yayB3ZWxsLgorICAgICAgICBLZWVwIGluIG1pbmQsIHRoZSBwcm9jZWR1cmUgaGVyZSBpcyBhIHN0YXJ0aW5nIHBvaW50LgogICAgICAgICBZb3UgY2FuIGJ1aWxkIG9mZiBpdCBhbmQgY3VzdG9taXplIGl0IHRvIGZpdCBhbnkKICAgICAgICAgcGFydGljdWxhciB3b3JraW5nIGVudmlyb25tZW50IGFuZCBzZXQgb2YgcHJhY3RpY2VzLgotICAgIDwvcGFyYT4KKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgV2hvIGlzIEdvaW5nIHRvIGJlIERldmVsb3Bpbmc6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byB1bmRlcnN0YW5kIHdobyBpcyBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZworICAgICAgICAgICAgICAgIHJlbGF0ZWQgdG8gdGhlIFlvY3RvIFByb2plY3QgYW5kIHdoYXQgdGhlaXIgcm9sZXMgd291bGQgYmUuCisgICAgICAgICAgICAgICAgTWFraW5nIHRoaXMgZGV0ZXJtaW5hdGlvbiBpcyBlc3NlbnRpYWwgdG8gY29tcGxldGluZyB0aGUKKyAgICAgICAgICAgICAgICBzdGVwcyB0d28gYW5kIHRocmVlLCB3aGljaCBhcmUgdG8gZ2V0IHlvdXIgZXF1aXBtZW50IHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgYW5kIHNldCB1cCB5b3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50J3MgaGFyZHdhcmUgdG9wb2xvZ3kuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgPHNlY3Rpb24gaWQ9J2Jlc3QtcHJhY3RpY2VzLXN5c3RlbS1jb25maWd1cmF0aW9ucyc+Ci0gICAgICAgIDx0aXRsZT5TeXN0ZW0gQ29uZmlndXJhdGlvbnM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU3lzdGVtcyBhY3Jvc3MgYSBsYXJnZSB0ZWFtIHNob3VsZCBtZWV0IHRoZSBuZWVkcyBvZgotICAgICAgICAgICAgdHdvIHR5cGVzIG9mIGRldmVsb3BlcnM6IHRob3NlIHdvcmtpbmcgb24gdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSBpbWFnZSBpdHNlbGYgYW5kIHRob3NlIGRldmVsb3BpbmcgYXBwbGljYXRpb25zLgotICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBkZXZlbG9wZXIsIHRoZWlyIHdvcmtzdGF0aW9ucyBtdXN0Ci0gICAgICAgICAgICBiZSBib3RoIHJlYXNvbmFibHkgcG93ZXJmdWwgYW5kIHJ1biBMaW51eC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdiZXN0LXByYWN0aWNlcy1hcHBsaWNhdGlvbi1kZXZlbG9wbWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQ8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgZGV2ZWxvcGVycyB3aG8gbWFpbmx5IGRvIGFwcGxpY2F0aW9uIGxldmVsIHdvcmsKLSAgICAgICAgICAgICAgICBvbiB0b3Agb2YgYW4gZXhpc3Rpbmcgc29mdHdhcmUgc3RhY2ssCi0gICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHByYWN0aWNlcyB0aGF0IHdvcmsgYmVzdC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgYSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESyksIHNlZQotICAgICAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1pbnRybyc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIHJvbGVzIGV4aXN0OgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Vc2UgYSBwcmUtYnVpbHQgdG9vbGNoYWluIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGxpY2F0aW9uIERldmVsb3BtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSB0eXBlcyBvZiBkZXZlbG9wZXJzIGRvIGFwcGxpY2F0aW9uIGxldmVsIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRvcCBvZiBhbiBleGlzdGluZyBzb2Z0d2FyZSBzdGFjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29yZSBTeXN0ZW0gRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtIGltYWdlIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgRW5naW5lZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgbWFuYWdlcyBBdXRvYnVpbGRlcnMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgZW52aXJvbm1lbnRzIG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBFbmdpbmVlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBjcmVhdGVzIGFuZCBtYW5hZ2VzIGF1dG9tYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgbmVlZGVkIHRvIGVuc3VyZSBhbGwgYXBwbGljYXRpb24gYW5kIGNvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBkZXZlbG9wbWVudCBtZWV0cyBkZXNpcmVkIHF1YWxpdHkgc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdhdGhlciB0aGUgSGFyZHdhcmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCYXNlZCBvbiB0aGUgc2l6ZSBhbmQgbWFrZS11cCBvZiB0aGUgdGVhbSwgZ2V0IHRoZSBoYXJkd2FyZQorICAgICAgICAgICAgICAgIHRvZ2V0aGVyLgorICAgICAgICAgICAgICAgIEFueSBkZXZlbG9wbWVudCwgYnVpbGQsIG9yIHRlc3QgZW5naW5lZXIgc2hvdWxkIGJlIHVzaW5nCisgICAgICAgICAgICAgICAgYSBzeXN0ZW0gdGhhdCBpcyBydW5uaW5nIGEgc3VwcG9ydGVkIExpbnV4IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICBTeXN0ZW1zLCBpbiBnZW5lcmFsLCBzaG91bGQgYmUgaGlnaCBwZXJmb3JtYW5jZSAoZS5nLiBkdWFsLAorICAgICAgICAgICAgICAgIHNpeC1jb3JlIFhlb25zIHdpdGggMjQgR2J5dGVzIG9mIFJBTSBhbmQgcGxlbnR5IG9mIGRpc2sgc3BhY2UpLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gaGVscCBlbnN1cmUgZWZmaWNpZW5jeSBieSBoYXZpbmcgYW55IG1hY2hpbmVzIHVzZWQKKyAgICAgICAgICAgICAgICBmb3IgdGVzdGluZyBvciB0aGF0IHJ1biBBdXRvYnVpbGRlcnMgYmUgYXMgaGlnaCBwZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgIGFzIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VbmRlcnN0YW5kIHRoZSBIYXJkd2FyZSBUb3BvbG9neSBvZiB0aGUgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBOb3cgdGhhdCB5b3Uga25vdyBob3cgbWFueSBkZXZlbG9wZXJzIGFuZCBzdXBwb3J0IGVuZ2luZWVycworICAgICAgICAgICAgICAgIGFyZSByZXF1aXJlZCwgeW91IGNhbiB1bmRlcnN0YW5kIHRoZSB0b3BvbG9neSBvZiB0aGUKKyAgICAgICAgICAgICAgICBoYXJkd2FyZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyBhIG1vZGVyYXRlbHkgc2l6ZWQgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LgorCisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0id3JpdGVybm90ZXMiPgorICAgICAgICAgICAgICAgIE5lZWQgZmlndXJlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgR2l0IGFzIFlvdXIgU291cmNlIENvbnRyb2wgTWFuYWdlciAoU0NNKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEtlZXBpbmcgeW91cgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kIGFueSBzb2Z0d2FyZSB5b3UgYXJlIGRldmVsb3BpbmcgdW5kZXIgdGhlCisgICAgICAgICAgICAgICAgY29udHJvbCBvZiBhbiBTQ00gc3lzdGVtIHRoYXQgaXMgY29tcGF0aWJsZQorICAgICAgICAgICAgICAgIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYWR2aXNhYmxlLgorICAgICAgICAgICAgICAgIE9mIHRoZSBTQ01zIEJpdEJha2Ugc3VwcG9ydHMsIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdGVhbSBzdHJvbmdseSByZWNvbW1lbmRzIHVzaW5nCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBHaXQgaXMgYSBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdCBpcyBlYXN5IHRvIGJhY2t1cCwKKyAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIHdvcmsgcmVtb3RlbHksIGFuZCB0aGVuIGNvbm5lY3RzIGJhY2sgdG8gdGhlCisgICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgcmVsYXRpdmVseSBlYXN5IHRvIHNldCB1cCBHaXQgc2VydmljZXMgYW5kIGNyZWF0ZQorICAgICAgICAgICAgICAgIGluZnJhc3RydWN0dXJlIGxpa2UKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZzwvdWxpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIGJhc2VkIG9uIHNlcnZlciBzb2Z0d2FyZSBjYWxsZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiB3aXRoIDxmaWxlbmFtZT5jZ2l0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBiZWluZyB1c2VkIHRvIGdlbmVyYXRlIHRoZSB3ZWIgaW50ZXJmYWNlIHRoYXQgbGV0cyB5b3UgdmlldyB0aGUKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIGlkZW50aWZpZXMgdXNlcnMKKyAgICAgICAgICAgICAgICB1c2luZyBTU0gga2V5cyBhbmQgYWxsb3dzIGJyYW5jaC1iYXNlZAorICAgICAgICAgICAgICAgIGFjY2VzcyBjb250cm9scyB0byByZXBvc2l0b3JpZXMgdGhhdCB5b3UgY2FuIGNvbnRyb2wgYXMgbGl0dGxlCisgICAgICAgICAgICAgICAgb3IgYXMgbXVjaCBhcyBuZWNlc3NhcnkuCisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICBUaGUgc2V0dXAgb2YgdGhlc2Ugc2VydmljZXMgaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHNpdGVzIHN1Y2ggYXMgdGhlc2UgZXhpc3QgdGhhdCBkZXNjcmliZSBob3cgdG8KKyAgICAgICAgICAgICAgICAgICBwZXJmb3JtIHNldHVwOgorICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9ib29rL2NoNC04Lmh0bWwnPkdpdCBkb2N1bWVudGF0aW9uPC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmliZXMgaG93IHRvIGluc3RhbGwgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3NpdGFyYW1jLmdpdGh1Yi5jb20vZ2l0b2xpdGUvbWFzdGVyLXRvYy5odG1sJz5UaGUgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4gbWFzdGVyIGluZGV4PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHRvcGljcyBmb3IgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9JbnRlcmZhY2VzLF9mcm9udGVuZHMsX2FuZF90b29scyc+SW50ZXJmYWNlcywgZnJvbnRlbmRzLCBhbmQgdG9vbHM8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIG9uIGhvdyB0byBjcmVhdGUgaW50ZXJmYWNlcyBhbmQgZnJvbnRlbmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIEdpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgdGhlIEFwcGxpY2F0aW9uIERldmVsb3BtZW50IE1hY2hpbmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgYXJlIGNyZWF0aW5nCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zIG9uIHRvcCBvZiBleGlzdGluZyBzb2Z0d2FyZSBzdGFja3MuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJlc3QgcHJhY3RpY2VzIGZvciBzZXR0aW5nIHVwIG1hY2hpbmVzCisgICAgICAgICAgICAgICAgdGhhdCBkbyBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgYSBwcmUtYnVpbHQgdG9vbGNoYWluIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIHRoZSBzb2Z0d2FyZSBzdGFjayBpdHNlbGYuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVuLCBkZXZlbG9wIHRoZSBhcHBsaWNhdGlvbiBjb2RlIG9uIHRvcCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2Qgd29ya3Mgd2VsbCBmb3Igc21hbGwgbnVtYmVycyBvZiByZWxhdGl2ZWx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc29sYXRlZCBhcHBsaWNhdGlvbnMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGVuIHBvc3NpYmxlLCB1c2UgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHBsdWctaW4gZm9yIHRoZSA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBJREUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzb2xhdGVkIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsdWctaW4gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFCiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgU0RLIGRldmVsb3BtZW50IHByYWN0aWNlcy4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4iLgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPktlZXAgeW91ciBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zCi0gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkLgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHlvdXIgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyB1cGRhdGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIHRocm91Z2ggcHJvdmlzaW9uaW5nIGVpdGhlciBhcyBuZXcKICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBkb3dubG9hZHMgb3IgYXMgdXBkYXRlcyB0aHJvdWdoIGEgcGFja2FnZQogICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIG1lY2hhbmlzbSB1c2luZyA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIHVwZGF0ZXMgdG8gYW4gZXhpc3RpbmcgdG9vbGNoYWluLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YWN0IG1lY2hhbmljcyBvZiBob3cgYW5kIHdoZW4gdG8gZG8gdGhpcyBhcmUgYQotICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24gZm9yIGxvY2FsIHBvbGljeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVzZSBtdWx0aXBsZSB0b29sY2hhaW5zIGluc3RhbGxlZCBsb2NhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbiBmb3IgbG9jYWwgcG9saWN5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBtdWx0aXBsZSB0b29sY2hhaW5zIGluc3RhbGxlZCBsb2NhbGx5CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGRpZmZlcmVudCBsb2NhdGlvbnMgdG8gYWxsb3cgZGV2ZWxvcG1lbnQgYWNyb3NzCi0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9ucy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYmVzdC1wcmFjdGljZXMtY29yZS1zeXN0ZW0tZGV2ZWxvcG1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPkNvcmUgU3lzdGVtIERldmVsb3BtZW50PC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIGNvcmUgc3lzdGVtIGRldmVsb3BtZW50LCBpdCBpcyBvZnRlbiBiZXN0IHRvIGhhdmUgdGhlCi0gICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGl0c2VsZiBhdmFpbGFibGUgb24gdGhlIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMKLSAgICAgICAgICAgICAgICBzbyBkZXZlbG9wZXJzIGNhbiBydW4gdGhlaXIgb3duIGJ1aWxkcyBhbmQgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICByZWJ1aWxkIHRoZSBzb2Z0d2FyZSBzdGFjay4KLSAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGtlZXAgdGhlIGNvcmUgc3lzdGVtIHVuY2hhbmdlZCBhcyBtdWNoIGFzCi0gICAgICAgICAgICAgICAgcG9zc2libGUgYW5kIGRvIHlvdXIgd29yayBpbiBsYXllcnMgb24gdG9wIG9mIHRoZSBjb3JlIHN5c3RlbS4KLSAgICAgICAgICAgICAgICBEb2luZyBzbyBnaXZlcyB5b3UgYSBncmVhdGVyIGxldmVsIG9mIHBvcnRhYmlsaXR5IHdoZW4KLSAgICAgICAgICAgICAgICB1cGdyYWRpbmcgdG8gbmV3IHZlcnNpb25zIG9mIHRoZSBjb3JlIHN5c3RlbSBvciBCb2FyZAotICAgICAgICAgICAgICAgIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gc2hhcmUgbGF5ZXJzIGFtb25nc3QgdGhlIGRldmVsb3BlcnMgb2YgYSBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgcHJvamVjdCBhbmQgY29udGFpbiB0aGUgcG9saWN5IGNvbmZpZ3VyYXRpb24gdGhhdCBkZWZpbmVzCi0gICAgICAgICAgICAgICAgdGhlIHByb2plY3QuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzaWRlIGZyb20gdGhlIHByZXZpb3VzIGJlc3QgcHJhY3RpY2VzLCB0aGVyZSBleGlzdHMgYSBudW1iZXIKLSAgICAgICAgICAgICAgICBvZiB0aXBzIGFuZCB0cmlja3MgdGhhdCBjYW4gaGVscCBzcGVlZCB1cCBjb3JlIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgcHJvamVjdHM6CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGUgQ29yZSBEZXZlbG9wbWVudCBNYWNoaW5lczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGVzZSB0eXBlcyBvZiBkZXZlbG9wZXJzIHdvcmsgb24gdGhlCisgICAgICAgICAgICAgICAgY29udGVudHMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXRzZWxmLgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBiZXN0IHByYWN0aWNlcyBmb3Igc2V0dGluZyB1cCBtYWNoaW5lcworICAgICAgICAgICAgICAgIHVzZWQgZm9yIGRldmVsb3BpbmcgaW1hZ2VzOgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Vc2UgYQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5TaGFyZWQgU3RhdGUgQ2FjaGU8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgKHNzdGF0ZSkgYW1vbmcgZ3JvdXBzIG9mIGRldmVsb3BlcnMgd2hvIGFyZSBvbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICBmYXN0IG5ldHdvcmsuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmVzdCB3YXkgdG8gc2hhcmUgc3N0YXRlIGlzIHRocm91Z2ggYQotICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29yayBGaWxlIFN5c3RlbSAoTkZTKSBzaGFyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaXJzdCB1c2VyIHRvIGJ1aWxkIGEgZ2l2ZW4gY29tcG9uZW50IGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IHRpbWUgY29udHJpYnV0ZXMgdGhhdCBvYmplY3QgdG8gdGhlIHNzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHN1YnNlcXVlbnQgYnVpbGRzIGZyb20gb3RoZXIgZGV2ZWxvcGVycyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICByZXVzZSB0aGUgb2JqZWN0IHJhdGhlciB0aGFuIHJlYnVpbGQgaXQgdGhlbXNlbHZlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFsdGhvdWdoIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBvdGhlciBwcm90b2NvbHMgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc3N0YXRlIHN1Y2ggYXMgSFRUUCBhbmQgRlRQLCB5b3Ugc2hvdWxkIGF2b2lkIHRoZXNlLgotICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgSFRUUCBsaW1pdHMgdGhlIHNzdGF0ZSB0byByZWFkLW9ubHkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBGVFAgcHJvdmlkZXMgcG9vciBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSGF2ZSB0aGUgWW9jdG8gUHJvamVjdCBidWlsZCBzeXN0ZW0gaXRzZWxmIGF2YWlsYWJsZSBvbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMgc28gZGV2ZWxvcGVycyBjYW4gcnVuIHRoZWlyIG93bgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGFuZCBkaXJlY3RseSByZWJ1aWxkIHRoZSBzb2Z0d2FyZSBzdGFjay4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SGF2ZSBhdXRvYnVpbGRlcnMgY29udHJpYnV0ZSB0byB0aGUgc3N0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICBwb29sIHNpbWlsYXJseSB0byBob3cgdGhlIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyaWJ1dGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdiZXN0LXByYWN0aWNlcy1hdXRvYnVpbGRlcnMnPkF1dG9idWlsZGVyczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnVpbGQgc3RhbmQtYWxvbmUgdGFyYmFsbHMgdGhhdCBjb250YWluCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyIgc3lzdGVtIHJlcXVpcmVtZW50cyBpZiBmb3Igc29tZSByZWFzb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMgZG8gbm90IG1lZXQgbWluaW11bSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cyBzdWNoIGFzIGxhdGVzdCBQeXRob24gdmVyc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LCBvciBvdGhlciB0b29scy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gaW5zdGFsbCBhbmQgcmVsb2NhdGUgdGhlIHRhcmJhbGwgZXhhY3RseSBhcyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIHdvdWxkIHRoZSB1c3VhbCBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gc28gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgYWxsIGRldmVsb3BlcnMgY2FuIG1lZXQgbWluaW11bSB2ZXJzaW9uIHJlcXVpcmVtZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgb24gbW9zdCBkaXN0cmlidXRpb25zLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VXNlIGEgc21hbGwgbnVtYmVyIG9mIHNoYXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2ggcGVyZm9ybWFuY2Ugc3lzdGVtcyBmb3IgdGVzdGluZyBwdXJwb3NlcwotICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gZHVhbCwgc2l4LWNvcmUgWGVvbnMgd2l0aCAyNCBHYnl0ZXMgb2YgUkFNCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgcGxlbnR5IG9mIGRpc2sgc3BhY2UpLgotICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVycyBjYW4gdXNlIHRoZXNlIHN5c3RlbXMgZm9yIHdpZGVyLCBtb3JlCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpdmUgdGVzdGluZyB3aGlsZSB0aGV5IGNvbnRpbnVlIHRvIGRldmVsb3AKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsbHkgdXNpbmcgdGhlaXIgcHJpbWFyeSBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEtlZXAgdGhlIGNvcmUgc3lzdGVtIHVuY2hhbmdlZCBhcyBtdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZSBhbmQgZG8geW91ciB3b3JrIGluIGxheWVycyBvbiB0b3Agb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjb3JlIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIGdpdmVzIHlvdSBhIGdyZWF0ZXIgbGV2ZWwgb2YgcG9ydGFiaWxpdHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgdXBncmFkaW5nIHRvIG5ldyB2ZXJzaW9ucyBvZiB0aGUgY29yZSBzeXN0ZW0gb3IgQm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbmFibGUgdGhlIFBSIFNlcnZpY2Ugd2hlbiBwYWNrYWdlIGZlZWRzCi0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJlIGluY3JlbWVudGFsIHdpdGggY29udGludWFsbHkgaW5jcmVhc2luZwotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz5QUjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHRoaXMgc2l0dWF0aW9uIG9jY3VycyB3aGVuIHlvdSB1c2Ugb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxpc2ggcGFja2FnZSBmZWVkcyBhbmQgdXNlIGEgc2hhcmVkIHN0YXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBlbmFibGUgdGhlIFBSIFNlcnZpY2UgZm9yIGFsbCB1c2VycyB3aG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgc2hhcmVkIHN0YXRlIHBvb2wuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgUFIgU2VydmljZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dvcmtpbmctd2l0aC1hLXByLXNlcnZpY2UnPldvcmtpbmcgV2l0aCBhIFBSIFNlcnZpY2U8L2xpbms+Ii4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmUgbGF5ZXJzIGFtb25nc3QgdGhlIGRldmVsb3BlcnMgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhciBwcm9qZWN0IGFuZCBjb250YWluIHRoZSBwb2xpY3kgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBkZWZpbmVzIHRoZSBwcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nYmVzdC1wcmFjdGljZXMtc291cmNlLWNvbnRyb2wtbWFuYWdlbWVudCc+Ci0gICAgICAgIDx0aXRsZT5Tb3VyY2UgQ29udHJvbCBNYW5hZ2VtZW50IChTQ00pPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEtlZXBpbmcgeW91cgotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KLSAgICAgICAgICAgIGFuZCBhbnkgc29mdHdhcmUgeW91IGFyZSBkZXZlbG9waW5nIHVuZGVyIHRoZQotICAgICAgICAgICAgY29udHJvbCBvZiBhbiBTQ00gc3lzdGVtIHRoYXQgaXMgY29tcGF0aWJsZQotICAgICAgICAgICAgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBhZHZpc2FibGUuCi0gICAgICAgICAgICBPZiB0aGUgU0NNcyBCaXRCYWtlIHN1cHBvcnRzLCB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdGVhbSBzdHJvbmdseSByZWNvbW1lbmRzIHVzaW5nCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4uCi0gICAgICAgICAgICBHaXQgaXMgYSBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdCBpcyBlYXN5IHRvIGJhY2t1cCwKLSAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gd29yayByZW1vdGVseSwgYW5kIHRoZW4gY29ubmVjdHMgYmFjayB0byB0aGUKLSAgICAgICAgICAgIGluZnJhc3RydWN0dXJlLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEl0IGlzIHJlbGF0aXZlbHkgZWFzeSB0byBzZXQgdXAgR2l0IHNlcnZpY2VzIGFuZCBjcmVhdGUKLSAgICAgICAgICAgIGluZnJhc3RydWN0dXJlIGxpa2UKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnPC91bGluaz4sCi0gICAgICAgICAgICB3aGljaCBpcyBiYXNlZCBvbiBzZXJ2ZXIgc29mdHdhcmUgY2FsbGVkCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiB3aXRoIDxmaWxlbmFtZT5jZ2l0PC9maWxlbmFtZT4KLSAgICAgICAgICAgIGJlaW5nIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHdlYiBpbnRlcmZhY2UgdGhhdCBsZXRzIHlvdSB2aWV3IHRoZQotICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIGlkZW50aWZpZXMgdXNlcnMKLSAgICAgICAgICAgIHVzaW5nIFNTSCBrZXlzIGFuZCBhbGxvd3MgYnJhbmNoLWJhc2VkCi0gICAgICAgICAgICBhY2Nlc3MgY29udHJvbHMgdG8gcmVwb3NpdG9yaWVzIHRoYXQgeW91IGNhbiBjb250cm9sIGFzIGxpdHRsZQotICAgICAgICAgICAgb3IgYXMgbXVjaCBhcyBuZWNlc3NhcnkuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFRoZSBzZXR1cCBvZiB0aGVzZSBzZXJ2aWNlcyBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgbWFudWFsLgotICAgICAgICAgICAgSG93ZXZlciwgc2l0ZXMgc3VjaCBhcyB0aGVzZSBleGlzdCB0aGF0IGRlc2NyaWJlIGhvdyB0byBwZXJmb3JtCi0gICAgICAgICAgICBzZXR1cDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9ib29rL2NoNC04Lmh0bWwnPkdpdCBkb2N1bWVudGF0aW9uPC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERlc2NyaWJlcyBob3cgdG8gaW5zdGFsbCA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBvbiB0aGUgc2VydmVyLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPSdodHRwOi8vc2l0YXJhbWMuZ2l0aHViLmNvbS9naXRvbGl0ZS9tYXN0ZXItdG9jLmh0bWwnPlRoZSA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiBtYXN0ZXIgaW5kZXg8L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgQWxsIHRvcGljcyBmb3IgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPSdodHRwczovL2dpdC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0ludGVyZmFjZXMsX2Zyb250ZW5kcyxfYW5kX3Rvb2xzJz5JbnRlcmZhY2VzLCBmcm9udGVuZHMsIGFuZCB0b29sczwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIG9uIGhvdyB0byBjcmVhdGUgaW50ZXJmYWNlcyBhbmQgZnJvbnRlbmRzCi0gICAgICAgICAgICAgICAgICAgIGZvciBHaXQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdiZXN0LXByYWN0aWNlcy1hdXRvYnVpbGRlcnMnPgotICAgICAgICA8dGl0bGU+QXV0b2J1aWxkZXJzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEF1dG9idWlsZGVycyBhcmUgb2Z0ZW4gdGhlIGNvcmUgb2YgYSBkZXZlbG9wbWVudCBwcm9qZWN0LgotICAgICAgICAgICAgSXQgaXMgaGVyZSB0aGF0IGNoYW5nZXMgZnJvbSBpbmRpdmlkdWFsIGRldmVsb3BlcnMgYXJlIGJyb3VnaHQKLSAgICAgICAgICAgIHRvZ2V0aGVyIGFuZCBjZW50cmFsbHkgdGVzdGVkIGFuZCBzdWJzZXF1ZW50IGRlY2lzaW9ucyBhYm91dAotICAgICAgICAgICAgcmVsZWFzZXMgY2FuIGJlIG1hZGUuCi0gICAgICAgICAgICBBdXRvYnVpbGRlcnMgYWxzbyBhbGxvdyBmb3IgImNvbnRpbnVvdXMgaW50ZWdyYXRpb24iIHN0eWxlCi0gICAgICAgICAgICB0ZXN0aW5nIG9mIHNvZnR3YXJlIGNvbXBvbmVudHMgYW5kIHJlZ3Jlc3Npb24gaWRlbnRpZmljYXRpb24KLSAgICAgICAgICAgIGFuZCB0cmFja2luZy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU2VlICI8dWxpbmsgdXJsPSdodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZyc+WW9jdG8gUHJvamVjdCBBdXRvYnVpbGRlcjwvdWxpbms+IgotICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGxpbmtzIHRvIGJ1aWxkYm90LgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBoYXMgZm91bmQgdGhpcyBpbXBsZW1lbnRhdGlvbgotICAgICAgICAgICAgd29ya3Mgd2VsbCBpbiB0aGlzIHJvbGUuCi0gICAgICAgICAgICBBIHB1YmxpYyBleGFtcGxlIG9mIHRoaXMgaXMgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIEF1dG9idWlsZGVycywgd2hpY2ggd2UgdXNlIHRvIHRlc3QgdGhlIG92ZXJhbGwgaGVhbHRoIG9mIHRoZQotICAgICAgICAgICAgcHJvamVjdC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZlYXR1cmVzIG9mIHRoaXMgc3lzdGVtIGFyZToKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkhpZ2hsaWdodHMgd2hlbiBjb21taXRzIGJyZWFrIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlBvcHVsYXRlcyBhbiBzc3RhdGUgY2FjaGUgZnJvbSB3aGljaAotICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZXJzIGNhbiBwdWxsIHJhdGhlciB0aGFuIHJlcXVpcmluZyBsb2NhbAotICAgICAgICAgICAgICAgICAgICBidWlsZHMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFsbG93cyBjb21taXQgaG9vayB0cmlnZ2VycywKLSAgICAgICAgICAgICAgICAgICAgd2hpY2ggdHJpZ2dlciBidWlsZHMgd2hlbiBjb21taXRzIGFyZSBtYWRlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWxsb3dzIHRyaWdnZXJpbmcgb2YgYXV0b21hdGVkIGltYWdlIGJvb3RpbmcKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRlc3RpbmcgdW5kZXIgdGhlIFF1aWNrRU1VbGF0b3IgKFFFTVUpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3VwcG9ydHMgaW5jcmVtZW50YWwgYnVpbGQgdGVzdGluZyBhbmQKLSAgICAgICAgICAgICAgICAgICAgZnJvbS1zY3JhdGNoIGJ1aWxkcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2hhcmVzIG91dHB1dCB0aGF0IGFsbG93cyBkZXZlbG9wZXIKLSAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBhbmQgaGlzdG9yaWNhbCByZWdyZXNzaW9uIGludmVzdGlnYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGVzIG91dHB1dCB0aGF0IGNhbiBiZSB1c2VkIGZvciByZWxlYXNlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFsbG93cyBzY2hlZHVsaW5nIG9mIGJ1aWxkcyBzbyB0aGF0IHJlc291cmNlcwotICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCBlZmZpY2llbnRseS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2Jlc3QtcHJhY3RpY2VzLXBvbGljaWVzLWFuZC1jaGFuZ2UtZmxvdyc+Ci0gICAgICAgIDx0aXRsZT5Qb2xpY2llcyBhbmQgQ2hhbmdlIEZsb3c8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXRzZWxmIHVzZXMgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlIGFuZCBhCi0gICAgICAgICAgICBwdWxsIG1vZGVsLgotICAgICAgICAgICAgU2NyaXB0cyBleGlzdCB0byBjcmVhdGUgYW5kIHNlbmQgcHVsbCByZXF1ZXN0cwotICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgIFRoaXMgbW9kZWwgaXMgaW4gbGluZSB3aXRoIG90aGVyIG9wZW4gc291cmNlIHByb2plY3RzIHdoZXJlCi0gICAgICAgICAgICBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBwcm9qZWN0Ci0gICAgICAgICAgICBhbmQgYSBzaW5nbGUgbWFpbnRhaW5lciBoYW5kbGVzIHRoZSBmaW5hbCAidG9wLW9mLXRyZWUiIG1lcmdlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSBhIG1vcmUgY29sbGVjdGl2ZSBwdXNoIG1vZGVsLgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIHN1cHBvcnRzIGJvdGggdGhlCi0gICAgICAgICAgICBwdXNoIGFuZCBwdWxsIG1vZGVscyBxdWl0ZSBlYXNpbHkuCi0gICAgICAgIDwvbm90ZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIHdpdGggYW55IGRldmVsb3BtZW50IGVudmlyb25tZW50LCBpdCBpcyBpbXBvcnRhbnQKLSAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKLSAgICAgICAgICAgIGd1aWRlbGluZXMgc28gdGhleSBhcmUgdW5kZXJzdG9vZCBieSBldmVyeW9uZS4KLSAgICAgICAgICAgIEl0IGlzIGFsc28gYSBnb29kIGlkZWEgdG8gaGF2ZSB3ZWxsIHN0cnVjdHVyZWQKLSAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCi0gICAgICAgICAgICBndWlkZWxpbmVzLgotICAgICAgICAgICAgR29vZCBjb21taXQgbWVzc2FnZXMgYXJlIGVzc2VudGlhbCB3aGVuIGxvb2tpbmcgYmFjayBpbiB0aW1lIGFuZAotICAgICAgICAgICAgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGNoYW5nZXMgd2VyZSBtYWRlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB5b3UgZGlzY292ZXIgdGhhdCBjaGFuZ2VzIGFyZSBuZWVkZWQgdG8gdGhlIGNvcmUgbGF5ZXIgb2YgdGhlCi0gICAgICAgICAgICBwcm9qZWN0LCBpdCBpcyB3b3J0aCBzaGFyaW5nIHRob3NlIHdpdGggdGhlIGNvbW11bml0eSBhcyBzb29uCi0gICAgICAgICAgICBhcyBwb3NzaWJsZS4KLSAgICAgICAgICAgIENoYW5jZXMgYXJlIGlmIHlvdSBoYXZlIGRpc2NvdmVyZWQgdGhlIG5lZWQgZm9yIGNoYW5nZXMsIHNvbWVvbmUKLSAgICAgICAgICAgIGVsc2UgaW4gdGhlIGNvbW11bml0eSBuZWVkcyB0aGVtIGFsc28uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nYmVzdC1wcmFjdGljZXMtc3VtbWFyeSc+Ci0gICAgICAgIDx0aXRsZT5TdW1tYXJ5PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBzdW1tYXJpemVzIHRoZSBrZXkgcmVjb21tZW5kYXRpb25zIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgIHByZXZpb3VzIHNlY3Rpb25zOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VXNlIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBhcyB0aGUgc291cmNlIGNvbnRyb2wgc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5NYWludGFpbiB5b3VyIE1ldGFkYXRhIGluIGxheWVycyB0aGF0IG1ha2Ugc2Vuc2UKLSAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgc2l0dWF0aW9uLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSd1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcKLSAgICAgICAgICAgICAgICAgICAgYW5kIENyZWF0aW5nIExheWVyczwvbGluaz4iIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24KLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU2VwYXJhdGUgdGhlIHByb2plY3QncyBNZXRhZGF0YSBhbmQgY29kZSBieSB1c2luZwotICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZSBHaXQgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXNldHVwJz5HZXR0aW5nIFNldCBVcDwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgbG9jYWwgR2l0Ci0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcyBmb3IgcmVsYXRlZCB1cHN0cmVhbSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZXQgdXAgdGhlIGRpcmVjdG9yeSBmb3IgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZQotICAgICAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L3VsaW5rPikKLSAgICAgICAgICAgICAgICAgICAgd2hlcmUgaXQgbWFrZXMgc2Vuc2UuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzZXQgdXAgdGhlIHNzdGF0ZSBjYWNoZSBvbiBhIHN5c3RlbSB1c2VkCi0gICAgICAgICAgICAgICAgICAgIGJ5IGRldmVsb3BlcnMgaW4gdGhlIHNhbWUgb3JnYW5pemF0aW9uIGFuZCBzaGFyZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgc2FtZSBzb3VyY2UgZGlyZWN0b3JpZXMgb24gdGhlaXIgbWFjaGluZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZXQgdXAgYW4gQXV0b2J1aWxkZXIgYW5kIGhhdmUgaXQgcG9wdWxhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIHNzdGF0ZSBjYWNoZSBhbmQgc291cmNlIGRpcmVjdG9yaWVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkgZW5jb3VyYWdlcyB5b3UKLSAgICAgICAgICAgICAgICAgICAgdG8gc2VuZCBwYXRjaGVzIHRvIHRoZSBwcm9qZWN0IHRvIGZpeCBidWdzIG9yIGFkZCBmZWF0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIHN1Ym1pdCBwYXRjaGVzLCBmb2xsb3cgdGhlIHByb2plY3QgY29tbWl0Ci0gICAgICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgZm9yIHdyaXRpbmcgZ29vZCBjb21taXQgbWVzc2FnZXMuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZW5kIGNoYW5nZXMgdG8gdGhlIGNvcmUgc29vbmVyIHRoYW4gbGF0ZXIKLSAgICAgICAgICAgICAgICAgICAgYXMgb3RoZXJzIGFyZSBsaWtlbHkgdG8gcnVuIGludG8gdGhlIHNhbWUgaXNzdWVzLgotICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiBtYWlsaW5nIGxpc3RzIHRvIHVzZSwgc2VlIHRoZSBsaXN0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLW1haWxpbmdsaXN0Jz5NYWlsaW5nIExpc3RzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz4KLSAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIG1haW50YWlucyBjb21wbGV0ZSBzb3VyY2UgcmVwb3NpdG9yaWVzIGZvciBhbGwKLSAgICAgICAgWW9jdG8gUHJvamVjdCBmaWxlcyBhdAotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaSc+PC91bGluaz4uCi0gICAgICAgIFRoaXMgd2ViLWJhc2VkIHNvdXJjZSBjb2RlIGJyb3dzZXIgaXMgb3JnYW5pemVkIGludG8gY2F0ZWdvcmllcyBieQotICAgICAgICBmdW5jdGlvbiBzdWNoIGFzIElERSBQbHVnaW5zLCBNYXRjaGJveCwgUG9reSwgWW9jdG8gTGludXggS2VybmVsLCBhbmQKLSAgICAgICAgc28gZm9ydGguCi0gICAgICAgIEZyb20gdGhlIGludGVyZmFjZSwgeW91IGNhbiBjbGljayBvbiBhbnkgcGFydGljdWxhciBpdGVtIGluIHRoZSAiTmFtZSIKLSAgICAgICAgY29sdW1uIGFuZCBzZWUgdGhlIFVSTCBhdCB0aGUgYm90dG9tIG9mIHRoZSBwYWdlIHRoYXQgeW91IG5lZWQgdG8gY2xvbmUKLSAgICAgICAgYSBHaXQgcmVwb3NpdG9yeSBmb3IgdGhhdCBwYXJ0aWN1bGFyIGl0ZW0uCi0gICAgICAgIEhhdmluZyBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPiwgd2hpY2ggaXMKLSAgICAgICAgdXN1YWxseSBuYW1lZCAicG9reSIsIGFsbG93cwotICAgICAgICB5b3UgdG8gbWFrZSBjaGFuZ2VzLCBjb250cmlidXRlIHRvIHRoZSBoaXN0b3J5LCBhbmQgdWx0aW1hdGVseSBlbmhhbmNlCi0gICAgICAgIHRoZSBZb2N0byBQcm9qZWN0J3MgdG9vbHMsIEJvYXJkIFN1cHBvcnQgUGFja2FnZXMsIGFuZCBzbyBmb3J0aC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGFueSBzdXBwb3J0ZWQgcmVsZWFzZSBvZiBZb2N0byBQcm9qZWN0LCB5b3UgY2FuIGFsc28gZ28gdG8gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+IGFuZAotICAgICAgICBzZWxlY3QgdGhlICJEb3dubG9hZHMiIHRhYiBhbmQgZ2V0IGEgcmVsZWFzZWQgdGFyYmFsbCBvZiB0aGUKLSAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IG9yIGFueSBzdXBwb3J0ZWQgQlNQIHRhcmJhbGxzLgotICAgICAgICBVbnBhY2tpbmcgdGhlc2UgdGFyYmFsbHMgZ2l2ZXMgeW91IGEgc25hcHNob3Qgb2YgdGhlIHJlbGVhc2VkCi0gICAgICAgIGZpbGVzLgotICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIHNldHRpbmcgdXAgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBmaWxlcyBmb3Igc3VwcG9ydGVkIEJTUHMKLSAgICAgICAgICAgICAgICAgICAgKGUuZy4sIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4pIGlzIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4gdG8gY3JlYXRlIGEgbG9jYWwgY29weSBvZgotICAgICAgICAgICAgICAgICAgICB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gYWx3YXlzIHdvcmsgaW4gbWF0Y2hpbmcgYnJhbmNoZXMgZm9yIGJvdGgKLSAgICAgICAgICAgICAgICAgICAgdGhlIHNlbGVjdGVkIEJTUCByZXBvc2l0b3J5IGFuZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGNoZWNrZWQgb3V0IHRoZSAibWFzdGVyIiBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhbmQgeW91IGFyZSBnb2luZyB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiwgYmUgc3VyZSB0byBjaGVja291dCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIgYnJhbmNoIG9mIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvbm90ZT4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgSW4gc3VtbWFyeSwgaGVyZSBpcyB3aGVyZSB5b3UgY2FuIGdldCB0aGUgcHJvamVjdCBmaWxlcyBuZWVkZWQgZm9yIGRldmVsb3BtZW50OgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz48ZW1waGFzaXM+PHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2knPlNvdXJjZSBSZXBvc2l0b3JpZXM6PC91bGluaz48L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBjb250YWlucyBJREUgUGx1Z2lucywgTWF0Y2hib3gsIFBva3ksIFBva3kgU3VwcG9ydCwgVG9vbHMsIFlvY3RvIExpbnV4IEtlcm5lbCwgYW5kIFlvY3RvCi0gICAgICAgICAgICAgICAgTWV0YWRhdGEgTGF5ZXJzLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGxvY2FsIGNvcGllcyBvZiBHaXQgcmVwb3NpdG9yaWVzIGZvciBlYWNoIG9mIHRoZXNlIGFyZWFzLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48YW5jaG9yIGlkPSdpbmRleC1kb3dubG9hZHMnIC8+PGVtcGhhc2lzPjx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzLyc+SW5kZXggb2YgL3JlbGVhc2VzOjwvdWxpbms+PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGlzIGlzIGFuIGluZGV4IG9mIHJlbGVhc2VzIHN1Y2ggYXMKLSAgICAgICAgICAgICAgICB0aGUgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KLSAgICAgICAgICAgICAgICBZb2N0byBQbHVnLWluLCBtaXNjZWxsYW5lb3VzIHN1cHBvcnQsIFBva3ksIFBzZXVkbywgaW5zdGFsbGVycyBmb3IgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywKLSAgICAgICAgICAgICAgICBhbmQgYWxsIHJlbGVhc2VkIHZlcnNpb25zIG9mIFlvY3RvIFByb2plY3QgaW4gdGhlIGZvcm0gb2YgaW1hZ2VzIG9yIHRhcmJhbGxzLgotICAgICAgICAgICAgICAgIERvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIHRoZXNlIGZpbGVzIGRvZXMgbm90IHByb2R1Y2UgYSBsb2NhbCBjb3B5IG9mIHRoZQotICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGJ1dCByYXRoZXIgYSBzbmFwc2hvdCBvZiBhIHBhcnRpY3VsYXIgcmVsZWFzZSBvciBpbWFnZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSIzLjVpbiIgLz4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IkRvd25sb2FkcyIgcGFnZSBmb3IgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBY2Nlc3MgdGhpcyBwYWdlIGJ5IGdvaW5nIHRvIHRoZSB3ZWJzaXRlIGFuZCB0aGVuIHNlbGVjdGluZwotICAgICAgICAgICAgICAgIHRoZSAiRG93bmxvYWRzIiB0YWIuCi0gICAgICAgICAgICAgICAgVGhpcyBwYWdlIGFsbG93cyB5b3UgdG8gZG93bmxvYWQgYW55IFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICByZWxlYXNlIG9yIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBpbiB0YXJiYWxsIGZvcm0uCi0gICAgICAgICAgICAgICAgVGhlIHRhcmJhbGxzIGFyZSBzaW1pbGFyIHRvIHRob3NlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzLyc+SW5kZXggb2YgL3JlbGVhc2VzOjwvdWxpbms+IGFyZWEuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy95cC1kb3dubG9hZC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+Ci0gICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgYW4gQXV0b2J1aWxkZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBdXRvYnVpbGRlcnMgYXJlIG9mdGVuIHRoZSBjb3JlIG9mIHRoZSBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIEl0IGlzIGhlcmUgdGhhdCBjaGFuZ2VzIGZyb20gaW5kaXZpZHVhbCBkZXZlbG9wZXJzIGFyZSBicm91Z2h0CisgICAgICAgICAgICAgICAgdG9nZXRoZXIgYW5kIGNlbnRyYWxseSB0ZXN0ZWQgYW5kIHN1YnNlcXVlbnQgZGVjaXNpb25zIGFib3V0CisgICAgICAgICAgICAgICAgcmVsZWFzZXMgY2FuIGJlIG1hZGUuCisgICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzIGFsc28gYWxsb3cgZm9yICJjb250aW51b3VzIGludGVncmF0aW9uIiBzdHlsZQorICAgICAgICAgICAgICAgIHRlc3Rpbmcgb2Ygc29mdHdhcmUgY29tcG9uZW50cyBhbmQgcmVncmVzc2lvbiBpZGVudGlmaWNhdGlvbgorICAgICAgICAgICAgICAgIGFuZCB0cmFja2luZy48L3BhcmE+CiAKLTxzZWN0aW9uIGlkPSd5b2N0by1wcm9qZWN0LXRlcm1zJz4KLSAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBUZXJtczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPHBhcmE+U2VlICI8dWxpbmsgdXJsPSdodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZyc+WW9jdG8gUHJvamVjdCBBdXRvYnVpbGRlcjwvdWxpbms+IgorICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBsaW5rcyB0byBidWlsZGJvdC4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyBmb3VuZCB0aGlzIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAgICAgd29ya3Mgd2VsbCBpbiB0aGlzIHJvbGUuCisgICAgICAgICAgICAgICAgQSBwdWJsaWMgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzLCB3aGljaCB3ZSB1c2UgdG8gdGVzdCB0aGUgb3ZlcmFsbCBoZWFsdGggb2YgdGhlCisgICAgICAgICAgICAgICAgcHJvamVjdC48L3BhcmE+CiAKLSAgICA8cGFyYT4KLSAgICAgICAgRm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0ZXJtcyBhbmQgZGVmaW5pdGlvbnMgdXNlcnMgbmV3IHRvIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50Ci0gICAgICAgIGVudmlyb25tZW50IG1pZ2h0IGZpbmQgaGVscGZ1bC4KLSAgICAgICAgV2hpbGUgc29tZSBvZiB0aGVzZSB0ZXJtcyBhcmUgdW5pdmVyc2FsLCB0aGUgbGlzdCBpbmNsdWRlcyB0aGVtIGp1c3QgaW4gY2FzZToKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QXBwZW5kIEZpbGVzOjwvZW1waGFzaXM+IEZpbGVzIHRoYXQgYXBwZW5kIGJ1aWxkIGluZm9ybWF0aW9uIHRvCi0gICAgICAgICAgICAgICAgYSByZWNpcGUgZmlsZS4KLSAgICAgICAgICAgICAgICBBcHBlbmQgZmlsZXMgYXJlIGtub3duIGFzIEJpdEJha2UgYXBwZW5kIGZpbGVzIGFuZCA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZXhwZWN0cyBldmVyeSBhcHBlbmQgZmlsZSB0byBoYXZlIGEgY29ycmVzcG9uZGluZwotICAgICAgICAgICAgICAgIHJlY2lwZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBmaWxlLgotICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgYXBwZW5kIGZpbGUgYW5kIGNvcnJlc3BvbmRpbmcgcmVjaXBlIGZpbGUKLSAgICAgICAgICAgICAgICBtdXN0IHVzZSB0aGUgc2FtZSByb290IGZpbGVuYW1lLgotICAgICAgICAgICAgICAgIFRoZSBmaWxlbmFtZXMgY2FuIGRpZmZlciBvbmx5IGluIHRoZSBmaWxlIHR5cGUgc3VmZml4IHVzZWQgKGUuZy4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmI8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiYXBwZW5kPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5JbmZvcm1hdGlvbiBpbiBhcHBlbmQgZmlsZXMgZXh0ZW5kcyBvciBvdmVycmlkZXMgdGhlCi0gICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaW4gdGhlIHNpbWlsYXJseS1uYW1lZCByZWNpcGUgZmlsZS4KLSAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBhbiBhcHBlbmQgZmlsZSBpbiB1c2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlczwvbGluaz4iIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZlYXR1cmVzIG9mIHRoaXMgc3lzdGVtIGFyZToKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgSGlnaGxpZ2h0cyB3aGVuIGNvbW1pdHMgYnJlYWsgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBQb3B1bGF0ZXMgYW4gc3N0YXRlIGNhY2hlIGZyb20gd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BlcnMgY2FuIHB1bGwgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGxvY2FsCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIGNvbW1pdCBob29rIHRyaWdnZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdHJpZ2dlciBidWlsZHMgd2hlbiBjb21taXRzIGFyZSBtYWRlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93cyB0cmlnZ2VyaW5nIG9mIGF1dG9tYXRlZCBpbWFnZSBib290aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGVzdGluZyB1bmRlciB0aGUgUXVpY2tFTVVsYXRvciAoUUVNVSkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9ydHMgaW5jcmVtZW50YWwgYnVpbGQgdGVzdGluZyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20tc2NyYXRjaCBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmVzIG91dHB1dCB0aGF0IGFsbG93cyBkZXZlbG9wZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgYW5kIGhpc3RvcmljYWwgcmVncmVzc2lvbiBpbnZlc3RpZ2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgb3V0cHV0IHRoYXQgY2FuIGJlIHVzZWQgZm9yIHJlbGVhc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93cyBzY2hlZHVsaW5nIG9mIGJ1aWxkcyBzbyB0aGF0IHJlc291cmNlcworICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHVzZWQgZWZmaWNpZW50bHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgVGVzdCBNYWNoaW5lczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgVXNlIGEgc21hbGwgbnVtYmVyIG9mIHNoYXJlZCwgaGlnaCBwZXJmb3JtYW5jZSBzeXN0ZW1zCisgICAgICAgICAgICAgICBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICAgICAgICAgICAgIERldmVsb3BlcnMgY2FuIHVzZSB0aGVzZSBzeXN0ZW1zIGZvciB3aWRlciwgbW9yZQorICAgICAgICAgICAgICAgZXh0ZW5zaXZlIHRlc3Rpbmcgd2hpbGUgdGhleSBjb250aW51ZSB0byBkZXZlbG9wCisgICAgICAgICAgICAgICBsb2NhbGx5IHVzaW5nIHRoZWlyIHByaW1hcnkgZGV2ZWxvcG1lbnQgc3lzdGVtLgorICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb2N1bWVudCBQb2xpY2llcyBhbmQgQ2hhbmdlIEZsb3c6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGl0c2VsZiB1c2VzIGEgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSBhbmQgYQorICAgICAgICAgICAgICAgIHB1bGwgbW9kZWwuCisgICAgICAgICAgICAgICAgU2NyaXB0cyBleGlzdCB0byBjcmVhdGUgYW5kIHNlbmQgcHVsbCByZXF1ZXN0cworICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5jcmVhdGUtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIFRoaXMgbW9kZWwgaXMgaW4gbGluZSB3aXRoIG90aGVyIG9wZW4gc291cmNlIHByb2plY3RzIHdoZXJlCisgICAgICAgICAgICAgICAgbWFpbnRhaW5lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBzcGVjaWZpYyBhcmVhcyBvZiB0aGUgcHJvamVjdAorICAgICAgICAgICAgICAgIGFuZCBhIHNpbmdsZSBtYWludGFpbmVyIGhhbmRsZXMgdGhlIGZpbmFsICJ0b3Atb2YtdHJlZSIgbWVyZ2VzLgogICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBBcHBlbmQgZmlsZXMgY2FuIGFsc28gdXNlIHdpbGRjYXJkIHBhdHRlcm5zIGluIHRoZWlyIHZlcnNpb24gbnVtYmVycwotICAgICAgICAgICAgICAgICAgICBzbyB0aGV5IGNhbiBiZSBhcHBsaWVkIHRvIG1vcmUgdGhhbiBvbmUgdmVyc2lvbiBvZiB0aGUgdW5kZXJseWluZyByZWNpcGUgZmlsZS4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2JpdGJha2UtdGVybSc+PGVtcGhhc2lzPkJpdEJha2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgdGFzayBleGVjdXRvciBhbmQgc2NoZWR1bGVyIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAotICAgICAgICAgICAgICAgIHN5c3RlbSB0byBidWlsZCBpbWFnZXMuCi0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQml0QmFrZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8cGFyYSBpZD0nYnVpbGQtZGlyZWN0b3J5Jz48ZW1waGFzaXM+QnVpbGQgRGlyZWN0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyB0ZXJtIHJlZmVycyB0byB0aGUgYXJlYSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgICAgICBzeXN0ZW0gZm9yIGJ1aWxkcy4KLSAgICAgICAgICAgICAgICBUaGUgYXJlYSBpcyBjcmVhdGVkIHdoZW4geW91IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUKLSAgICAgICAgICAgICAgICBzZXR1cCBlbnZpcm9ubWVudCBzY3JpcHQgdGhhdCBpcyBmb3VuZCBpbiB0aGUgU291cmNlIERpcmVjdG9yeQotICAgICAgICAgICAgICAgIChpLmUuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4pLgotICAgICAgICAgICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE9QRElSJz48ZmlsZW5hbWU+VE9QRElSPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgQnVpbGQgRGlyZWN0b3J5LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSBhIGxvdCBvZiBmbGV4aWJpbGl0eSB3aGVuIGNyZWF0aW5nIHRoZSBCdWlsZAotICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIGNyZWF0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZXMgYXNzdW1lIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4gaXMKLSAgICAgICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSB0aGUgQnVpbGQgRGlyZWN0b3J5IGluc2lkZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBhbmQgbGV0IHRoZSBuYW1lIG9mIHRoZSBCdWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBkZWZhdWx0IHRvIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCAkSE9NRS9wb2t5Ci0gICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSB0aGUgQnVpbGQgRGlyZWN0b3J5IGluc2lkZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9tZSBkaXJlY3RvcnkgYW5kIHNwZWNpZmljYWxseSBuYW1lIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3QtYnVpbGRzPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkICRIT01FCi0gICAgICQgc291cmNlIHBva3kvJk9FX0lOSVRfRklMRTsgdGVzdC1idWlsZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGRpcmVjdG9yeSBwYXRoIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYWxseSBuYW1lIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW55IGludGVybWVkaWF0ZSBmb2xkZXJzIGluIHRoZSBwYXRobmFtZSBtdXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGV4YW1wbGUgY3JlYXRlcyBhIEJ1aWxkIERpcmVjdG9yeSBuYW1lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ZUC0mUE9LWVZFUlNJT047PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgPGZpbGVuYW1lPm15YnVpbGRzPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkY2QgJEhPTUUKLSAgICAgJCBzb3VyY2UgJEhPTUUvcG9reS8mT0VfSU5JVF9GSUxFOyAkSE9NRS9teWJ1aWxkcy9ZUC0mUE9LWVZFUlNJT047Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgQnVpbGQgRGlyZWN0b3J5IGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBpdHMgd29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBjYW5ub3QgYmUgdW5kZXIgTkZTLgotICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgYnkgZGVmYXVsdCwgdGhlIEJ1aWxkIERpcmVjdG9yeSBjYW5ub3QgYmUgdW5kZXIgTkZTLgotICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IG5lZWQgdGhlIEJ1aWxkIERpcmVjdG9yeSB0byBiZSB1bmRlciBORlMsCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHNldCB0aGlzIHVwIGJ5IHNldHRpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGEgbG9jYWwgZHJpdmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBlZmZlY3RpdmVseSBzZXBhcmF0ZXMgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNsYXNzZXM6PC9lbXBoYXNpcz4gRmlsZXMgdGhhdCBwcm92aWRlIGZvciBsb2dpYyBlbmNhcHN1bGF0aW9uCi0gICAgICAgICAgICAgICAgYW5kIGluaGVyaXRhbmNlIHNvIHRoYXQgY29tbW9ubHkgdXNlZCBwYXR0ZXJucyBjYW4gYmUgZGVmaW5lZCBvbmNlIGFuZCB0aGVuIGVhc2lseSB1c2VkCi0gICAgICAgICAgICAgICAgaW4gbXVsdGlwbGUgcmVjaXBlcy4KLSAgICAgICAgICAgICAgICBGb3IgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IGNsYXNzZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMnPkNsYXNzZXM8L3VsaW5rPiIgY2hhcHRlciBvZiB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgQ2xhc3MgZmlsZXMgZW5kIHdpdGggdGhlIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+IGZpbGVuYW1lIGV4dGVuc2lvbi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpbiB2YXJpb3VzIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZmlsZXMgcHJvdmlkZXMgZ2xvYmFsIGRlZmluaXRpb25zIG9mIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBpbgotICAgICAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgIGNvbnRhaW5zIHVzZXItZGVmaW5lZCB2YXJpYWJsZXMgdGhhdCBhZmZlY3QgZXZlcnkgYnVpbGQuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgZGVmaW5lcyBZb2N0byAiZGlzdHJvIiBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgdmFyaWFibGVzIHVzZWQgb25seSB3aGVuIGJ1aWxkaW5nIHdpdGggdGhpcyBwb2xpY3kuCi0gICAgICAgICAgICAgICAgTWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzLCB3aGljaAotICAgICAgICAgICAgICAgIGFyZSBsb2NhdGVkIHRocm91Z2hvdXQgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4sIGRlZmluZQotICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGFyZSBvbmx5IHVzZWQgd2hlbiBidWlsZGluZwotICAgICAgICAgICAgICAgIGZvciB0aGF0IHRhcmdldCAoZS5nLiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFjaGluZS9iZWFnbGVib25lLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSBkZWZpbmVzIHZhcmlhYmxlcyBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIEFSTSBDb3J0ZXgtQTgKLSAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBib2FyZCkuCi0gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlcyBlbmQgd2l0aCBhIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4nPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaXMgYSBjb2xsZWN0aW9uIG9mCi0gICAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGRldmVsb3BtZW50IHRvb2xzIGFuZCB1dGlsaXRpZXMgdGhhdCBydW4gb24gb25lCi0gICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhbmQgYWxsb3cgeW91IHRvIGRldmVsb3Agc29mdHdhcmUgZm9yIGEKLSAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50LCBvciB0YXJnZXRlZCwgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICBUaGVzZSB0b29sY2hhaW5zIGNvbnRhaW4gY3Jvc3MtY29tcGlsZXJzLCBsaW5rZXJzLCBhbmQKLSAgICAgICAgICAgICAgICAgICAgZGVidWdnZXJzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHR3byBkaWZmZXJlbnQgY3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluczoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHRvb2xjaGFpbiBvbmx5IHVzZWQgYnkgYW5kIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2Ugd2hlbiBidWlsZGluZyBhbiBpbWFnZSBmb3IgYSB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSByZWxvY2F0YWJsZSB0b29sY2hhaW4gdXNlZCBvdXRzaWRlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBieSBkZXZlbG9wZXJzIHdoZW4gZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcnVuIG9uIGEgdGFyZ2V0ZWQgZGV2aWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQ3JlYXRpb24gb2YgdGhlc2UgdG9vbGNoYWlucyBpcyBzaW1wbGUgYW5kIGF1dG9tYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRvb2xjaGFpbiBjb25jZXB0cyBhcyB0aGV5IGFwcGx5IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSB0b29sY2hhaW4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5JbWFnZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEFuIGltYWdlIGlzIGFuIGFydGlmYWN0IG9mIHRoZSBCaXRCYWtlIGJ1aWxkIHByb2Nlc3MgZ2l2ZW4KLSAgICAgICAgICAgICAgICBhIGNvbGxlY3Rpb24gb2YgcmVjaXBlcyBhbmQgcmVsYXRlZCBNZXRhZGF0YS4KLSAgICAgICAgICAgICAgICBJbWFnZXMgYXJlIHRoZSBiaW5hcnkgb3V0cHV0IHRoYXQgcnVuIG9uIHNwZWNpZmljIGhhcmR3YXJlIG9yCi0gICAgICAgICAgICAgICAgUUVNVSBhbmQgYXJlIHVzZWQgZm9yIHNwZWNpZmljIHVzZS1jYXNlcy4KLSAgICAgICAgICAgICAgICBGb3IgYSBsaXN0IG9mIHRoZSBzdXBwb3J0ZWQgaW1hZ2UgdHlwZXMgdGhhdCB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2xheWVyJz48ZW1waGFzaXM+TGF5ZXI6PC9lbXBoYXNpcz4gQSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgcmVwcmVzZW50aW5nIHRoZSBjb3JlLAotICAgICAgICAgICAgICAgIGEgQlNQLCBvciBhbiBhcHBsaWNhdGlvbiBzdGFjay4KLSAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkKLSAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWV0YWRhdGEnPjxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBmaWxlcyB0aGF0IEJpdEJha2UgcGFyc2VzIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgTWV0YWRhdGEgaW5jbHVkZXMgcmVjaXBlcywgY2xhc3NlcywgYW5kCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgICAgICBJbiB0aGUgY29udGV4dCBvZiB0aGUga2VybmVsICgia2VybmVsIE1ldGFkYXRhIiksCi0gICAgICAgICAgICAgICAgaXQgcmVmZXJzIHRvIE1ldGFkYXRhIGluIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgYnJhbmNoZXMgb2YgdGhlIGtlcm5lbCBzb3VyY2UgR2l0IHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nb2UtY29yZSc+PGVtcGhhc2lzPk9FLUNvcmU6PC9lbXBoYXNpcz4gQSBjb3JlIHNldCBvZiBNZXRhZGF0YSBvcmlnaW5hdGluZwotICAgICAgICAgICAgICAgIHdpdGggT3BlbkVtYmVkZGVkIChPRSkgdGhhdCBpcyBzaGFyZWQgYmV0d2VlbiBPRSBhbmQgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgVGhpcyBNZXRhZGF0YSBpcyBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2J1aWxkLXN5c3RlbS10ZXJtJz48ZW1waGFzaXM+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gc3BlY2lmaWMgdG8gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYmFzZWQgb24gYW5vdGhlciBwcm9qZWN0IGtub3duCi0gICAgICAgICAgICAgICAgYXMgIlBva3kiLCB3aGljaCB1c2VzCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPiBhcyB0aGUgdGFzawotICAgICAgICAgICAgICAgIGV4ZWN1dG9yLgotICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQsIHRoZQotICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIHNpbXBseQotICAgICAgICAgICAgICAgIGFzICJ0aGUgYnVpbGQgc3lzdGVtIi4KLSAgICAgICAgICAgICAgICBJZiBvdGhlciBidWlsZCBzeXN0ZW1zLCBzdWNoIGFzIGEgaG9zdCBvciB0YXJnZXQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgYXJlIHJlZmVyZW5jZWQsIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFybHkgc3RhdGVzIHRoZQotICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGhpc3RvcmljYWwgaW5mb3JtYXRpb24gYWJvdXQgUG9reSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdwb2t5Jz5Qb2t5PC9saW5rPiB0ZXJtLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UGFja2FnZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEluIHRoZSBjb250ZXh0IG9mIHRoZSBZb2N0byBQcm9qZWN0LCB0aGlzIHRlcm0gcmVmZXJzIHRvIGEKLSAgICAgICAgICAgICAgICByZWNpcGUncyBwYWNrYWdlZCBvdXRwdXQgcHJvZHVjZWQgYnkgQml0QmFrZSAoaS5lLiBhCi0gICAgICAgICAgICAgICAgImJha2VkIHJlY2lwZSIpLgotICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBnZW5lcmFsbHkgdGhlIGNvbXBpbGVkIGJpbmFyaWVzIHByb2R1Y2VkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgcmVjaXBlJ3Mgc291cmNlcy4KLSAgICAgICAgICAgICAgICBZb3UgImJha2UiIHNvbWV0aGluZyBieSBydW5uaW5nIGl0IHRocm91Z2ggQml0QmFrZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIHRlcm0gInBhY2thZ2UiIGNhbiwgaW4gZ2VuZXJhbCwgaGF2ZSBzdWJ0bGUKLSAgICAgICAgICAgICAgICBtZWFuaW5ncy4gIEZvciBleGFtcGxlLCB0aGUgcGFja2FnZXMgcmVmZXJyZWQgdG8gaW4gdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcGFja2FnZXMnPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC91bGluaz4iIHNlY3Rpb24gYXJlCi0gICAgICAgICAgICAgICAgY29tcGlsZWQgYmluYXJpZXMgdGhhdCwgd2hlbiBpbnN0YWxsZWQsIGFkZCBmdW5jdGlvbmFsaXR5IHRvIHlvdXIgTGludXgKLSAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24uPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkFub3RoZXIgcG9pbnQgd29ydGggbm90aW5nIGlzIHRoYXQgaGlzdG9yaWNhbGx5IHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCwKLSAgICAgICAgICAgICAgICByZWNpcGVzIHdlcmUgcmVmZXJyZWQgdG8gYXMgcGFja2FnZXMgLSB0aHVzLCB0aGUgZXhpc3RlbmNlIG9mIHNldmVyYWwgQml0QmFrZQotICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSBzZWVtaW5nbHkgbWlzLW5hbWVkLAotICAgICAgICAgICAgICAgIChlLmcuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz4sIGFuZAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QRSc+PGZpbGVuYW1lPlBFPC9maWxlbmFtZT48L3VsaW5rPikuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBhY2thZ2UgR3JvdXBzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXJiaXRyYXJ5IGdyb3VwcyBvZiBzb2Z0d2FyZSBSZWNpcGVzLgotICAgICAgICAgICAgICAgIFlvdSB1c2UgcGFja2FnZSBncm91cHMgdG8gaG9sZCByZWNpcGVzIHRoYXQsIHdoZW4gYnVpbHQsCi0gICAgICAgICAgICAgICAgdXN1YWxseSBhY2NvbXBsaXNoIGEgc2luZ2xlIHRhc2suCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIGZvciBhCi0gICAgICAgICAgICAgICAgY29tcGFueeKAmXMgcHJvcHJpZXRhcnkgb3IgdmFsdWUtYWRkIHNvZnR3YXJlLgotICAgICAgICAgICAgICAgIE9yLCB0aGUgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIHRoYXQgZW5hYmxlCi0gICAgICAgICAgICAgICAgZ3JhcGhpY3MuCi0gICAgICAgICAgICAgICAgQSBwYWNrYWdlIGdyb3VwIGlzIHJlYWxseSBqdXN0IGFub3RoZXIgcmVjaXBlLgotICAgICAgICAgICAgICAgIEJlY2F1c2UgcGFja2FnZSBncm91cCBmaWxlcyBhcmUgcmVjaXBlcywgdGhleSBlbmQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZW5hbWUgZXh0ZW5zaW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwb2t5Jz48ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSB0ZXJtICJwb2t5IiBjYW4gbWVhbiBzZXZlcmFsIHRoaW5ncy4KLSAgICAgICAgICAgICAgICBJbiBpdHMgbW9zdCBnZW5lcmFsIHNlbnNlLCBpdCBpcyBhbiBvcGVuLXNvdXJjZQotICAgICAgICAgICAgICAgIHByb2plY3QgdGhhdCB3YXMgaW5pdGlhbGx5IGRldmVsb3BlZCBieSBPcGVuZWRIYW5kLgotICAgICAgICAgICAgICAgIFdpdGggT3BlbmVkSGFuZCwgcG9reSB3YXMgZGV2ZWxvcGVkIG9mZiBvZiB0aGUgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGJlY29taW5nIGEgY29tbWVyY2lhbGx5Ci0gICAgICAgICAgICAgICAgc3VwcG9ydGFibGUgYnVpbGQgc3lzdGVtIGZvciBlbWJlZGRlZCBMaW51eC4KLSAgICAgICAgICAgICAgICBBZnRlciBJbnRlbCBDb3Jwb3JhdGlvbiBhY3F1aXJlZCBPcGVuZWRIYW5kLCB0aGUKLSAgICAgICAgICAgICAgICBwcm9qZWN0IHBva3kgYmVjYW1lIHRoZSBiYXNpcyBmb3IgdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXMsCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBleGlzdHMgYXMgYSBzZXBhcmF0ZSBHaXQKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5IHlvdSBjYW4gY2xvbmUgdG8geWllbGQgYSBsb2NhbCBjb3B5IG9uIHlvdXIKLSAgICAgICAgICAgICAgICBob3N0IHN5c3RlbS4KLSAgICAgICAgICAgICAgICBUaHVzLCAicG9reSIgY2FuIHJlZmVyIHRvIHRoZSBsb2NhbCBjb3B5IG9mIHRoZSBTb3VyY2UKLSAgICAgICAgICAgICAgICBEaXJlY3RvcnkgdXNlZCBmb3IgZGV2ZWxvcG1lbnQgd2l0aGluIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgIFByb2plY3QuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkZpbmFsbHksICJwb2t5IiBjYW4gcmVmZXIgdG8gdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIChpLmUuIGRpc3RyaWJ1dGlvbikgY3JlYXRlZCB3aGVuIHlvdSB1c2UgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSB0byBidWlsZCBhbiBpbWFnZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmVjaXBlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSBzZXQgb2YgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICBBIHJlY2lwZSBkZXNjcmliZXMgd2hlcmUgeW91IGdldCBzb3VyY2UgY29kZSwgd2hpY2ggcGF0Y2hlcwotICAgICAgICAgICAgICAgIHRvIGFwcGx5LCBob3cgdG8gY29uZmlndXJlIHRoZSBzb3VyY2UsIGhvdyB0byBjb21waWxlIGl0IGFuZCBzbyBvbi4KLSAgICAgICAgICAgICAgICBSZWNpcGVzIGFsc28gZGVzY3JpYmUgZGVwZW5kZW5jaWVzIGZvciBsaWJyYXJpZXMgb3IgZm9yIG90aGVyCi0gICAgICAgICAgICAgICAgcmVjaXBlcy4KLSAgICAgICAgICAgICAgICBSZWNpcGVzIHJlcHJlc2VudCB0aGUgbG9naWNhbCB1bml0IG9mIGV4ZWN1dGlvbiwgdGhlIHNvZnR3YXJlCi0gICAgICAgICAgICAgICAgdG8gYnVpbGQsIHRoZSBpbWFnZXMgdG8gYnVpbGQsIGFuZCB1c2UgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdzb3VyY2UtZGlyZWN0b3J5Jz48ZW1waGFzaXM+U291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgdGVybSByZWZlcnMgdG8gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgY3JlYXRlZCBhcyBhIHJlc3VsdAotICAgICAgICAgICAgICAgIG9mIGNyZWF0aW5nIGEgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5IDxmaWxlbmFtZT5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBvciBleHBhbmRpbmcgYSByZWxlYXNlZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIGEgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBpcyB0aGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBzZXR0aW5nIHVwCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgU291cmNlIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgU29tZXRpbWVzIHlvdSBtaWdodCBoZWFyIHRoZSB0ZXJtICJwb2t5IGRpcmVjdG9yeSIgdXNlZCB0byByZWZlcgotICAgICAgICAgICAgICAgIHRvIHRoaXMgZGlyZWN0b3J5IHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lcyB0aGF0IGNvbnRhaW4gc3BhY2VzLgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRoYXQgdGhlIFNvdXJjZSBEaXJlY3RvcnkgeW91IHVzZSBkb2VzIG5vdCBjb250YWluCi0gICAgICAgICAgICAgICAgICAgIHRoZXNlIHR5cGVzIG9mIG5hbWVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIGEgbW9yZSBjb2xsZWN0aXZlIHB1c2ggbW9kZWwuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiBzb2Z0d2FyZSBzdXBwb3J0cyBib3RoIHRoZQorICAgICAgICAgICAgICAgICAgICBwdXNoIGFuZCBwdWxsIG1vZGVscyBxdWl0ZSBlYXNpbHkuCiAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBTb3VyY2UgRGlyZWN0b3J5IGNvbnRhaW5zIEJpdEJha2UsIERvY3VtZW50YXRpb24sCi0gICAgICAgICAgICAgICAgTWV0YWRhdGEgYW5kIG90aGVyIGZpbGVzIHRoYXQgYWxsIHN1cHBvcnQgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbXVzdCBoYXZlIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGluIHBsYWNlIG9uCi0gICAgICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gaW4gb3JkZXIgdG8gZG8gYW55IGRldmVsb3BtZW50IHVzaW5nCi0gICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPkFzIHdpdGggYW55IGRldmVsb3BtZW50IGVudmlyb25tZW50LCBpdCBpcyBpbXBvcnRhbnQKKyAgICAgICAgICAgICAgICB0byBkb2N1bWVudCB0aGUgcG9saWN5IHVzZWQgYXMgd2VsbCBhcyBhbnkgbWFpbiBwcm9qZWN0CisgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcyBzbyB0aGV5IGFyZSB1bmRlcnN0b29kIGJ5IGV2ZXJ5b25lLgorICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gYSBnb29kIGlkZWEgdG8gaGF2ZSB3ZWxsIHN0cnVjdHVyZWQKKyAgICAgICAgICAgICAgICBjb21taXQgbWVzc2FnZXMsIHdoaWNoIGFyZSB1c3VhbGx5IGEgcGFydCBvZiBhIHByb2plY3QncworICAgICAgICAgICAgICAgIGd1aWRlbGluZXMuCisgICAgICAgICAgICAgICAgR29vZCBjb21taXQgbWVzc2FnZXMgYXJlIGVzc2VudGlhbCB3aGVuIGxvb2tpbmcgYmFjayBpbiB0aW1lIGFuZAorICAgICAgICAgICAgICAgIHRyeWluZyB0byB1bmRlcnN0YW5kIHdoeSBjaGFuZ2VzIHdlcmUgbWFkZS48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91Ci0gICAgICAgICAgICAgICAgY2FuIG5hbWUgdGhlIHJlcG9zaXRvcnkgYW55dGhpbmcgeW91IGxpa2UuCi0gICAgICAgICAgICAgICAgVGhyb3VnaG91dCBtdWNoIG9mIHRoZSBkb2N1bWVudGF0aW9uLCAicG9reSIKLSAgICAgICAgICAgICAgICBpcyB1c2VkIGFzIHRoZSBuYW1lIG9mIHRoZSB0b3AtbGV2ZWwgZm9sZGVyIG9mIHRoZSBsb2NhbCBjb3B5IG9mCi0gICAgICAgICAgICAgICAgdGhlIHBva3kgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgU28sIGZvciBleGFtcGxlLCBjbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgcmVzdWx0cyBpbiBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IHdob3NlIHRvcC1sZXZlbAotICAgICAgICAgICAgICAgIGZvbGRlciBpcyBhbHNvIG5hbWVkICJwb2t5Ii48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5XaGlsZSBpdCBpcyBub3QgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIHRhcmJhbGwgZXhwYW5zaW9uCi0gICAgICAgICAgICAgICAgdG8gc2V0IHVwIHRoZSBTb3VyY2UgRGlyZWN0b3J5LCBpZiB5b3UgZG8sIHRoZSB0b3AtbGV2ZWwKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgU291cmNlIERpcmVjdG9yeSBpcyBkZXJpdmVkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlIHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGRvd25sb2FkaW5nIGFuZCB1bnBhY2tpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JllPQ1RPX1BPS1lfVEFSQkFMTDs8L2ZpbGVuYW1lPiByZXN1bHRzIGluIGEKLSAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IHdob3NlIHJvb3QgZm9sZGVyIGlzIG5hbWVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19QT0tZOzwvZmlsZW5hbWU+LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPkl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZQotICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgY3JlYXRlZCBieSB1bnBhY2tpbmcgYSByZWxlYXNlZCB0YXJiYWxsIGFzCi0gICAgICAgICAgICAgICAgY29tcGFyZWQgdG8gY2xvbmluZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgV2hlbiB5b3UgdW5wYWNrIGEgdGFyYmFsbCwgeW91IGhhdmUgYW4gZXhhY3QgY29weSBvZiB0aGUgZmlsZXMKLSAgICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgdGltZSBvZiByZWxlYXNlIC0gYSBmaXhlZCByZWxlYXNlIHBvaW50LgotICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIHlvdSBtYWtlIHRvIHlvdXIgbG9jYWwgZmlsZXMgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBhcmUgb24gdG9wIG9mIHRoZSByZWxlYXNlIGFuZCB3aWxsIHJlbWFpbiBsb2NhbCBvbmx5LgotICAgICAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCB3aGVuIHlvdSBjbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LCB5b3UgaGF2ZSBhbiBhY3RpdmUgZGV2ZWxvcG1lbnQgcmVwb3NpdG9yeSB3aXRoCi0gICAgICAgICAgICAgICAgYWNjZXNzIHRvIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5J3MgYnJhbmNoZXMgYW5kIHRhZ3MuCi0gICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhbnkgbG9jYWwgY2hhbmdlcyB5b3UgbWFrZSB0byB0aGUgbG9jYWwKLSAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGNhbiBiZSBsYXRlciBhcHBsaWVkIHRvIGFjdGl2ZSBkZXZlbG9wbWVudAotICAgICAgICAgICAgICAgIGJyYW5jaGVzIG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uY2VwdHMgcmVsYXRlZCB0byBHaXQKLSAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMsIGJyYW5jaGVzLCBhbmQgdGFncywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXBvc2l0b3JpZXMtdGFncy1hbmQtYnJhbmNoZXMnPlJlcG9zaXRvcmllcywgVGFncywgYW5kIEJyYW5jaGVzPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UYXNrOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSB1bml0IG9mIGV4ZWN1dGlvbiBmb3IgQml0QmFrZSAoZS5nLgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkaXNjb3ZlciB0aGF0IGNoYW5nZXMgYXJlIG5lZWRlZCB0byB0aGUgY29yZQorICAgICAgICAgICAgICAgIGxheWVyIG9mIHRoZSBwcm9qZWN0LCBpdCBpcyB3b3J0aCBzaGFyaW5nIHRob3NlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgY29tbXVuaXR5IGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgQ2hhbmNlcyBhcmUgaWYgeW91IGhhdmUgZGlzY292ZXJlZCB0aGUgbmVlZCBmb3IgY2hhbmdlcywKKyAgICAgICAgICAgICAgICBzb21lb25lIGVsc2UgaW4gdGhlIGNvbW11bml0eSBuZWVkcyB0aGVtIGFsc28uCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVwc3RyZWFtOjwvZW1waGFzaXM+IEEgcmVmZXJlbmNlIHRvIHNvdXJjZSBjb2RlIG9yIHJlcG9zaXRvcmllcwotICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5vdCBsb2NhbCB0byB0aGUgZGV2ZWxvcG1lbnQgc3lzdGVtIGJ1dCBsb2NhdGVkIGluIGEgbWFzdGVyIGFyZWEgdGhhdCBpcyBjb250cm9sbGVkCi0gICAgICAgICAgICAgICAgYnkgdGhlIG1haW50YWluZXIgb2YgdGhlIHNvdXJjZSBjb2RlLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiBvcmRlciBmb3IgYSBkZXZlbG9wZXIgdG8gd29yayBvbiBhIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZSwgdGhleSBuZWVkIHRvCi0gICAgICAgICAgICAgICAgZmlyc3QgZ2V0IGEgY29weSBvZiBpdCBmcm9tIGFuICJ1cHN0cmVhbSIgc291cmNlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdsaWNlbnNpbmcnPgotICAgIDx0aXRsZT5MaWNlbnNpbmc8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEJlY2F1c2Ugb3BlbiBzb3VyY2UgcHJvamVjdHMgYXJlIG9wZW4gdG8gdGhlIHB1YmxpYywgdGhleSBoYXZlIGRpZmZlcmVudCBsaWNlbnNpbmcgc3RydWN0dXJlcyBpbiBwbGFjZS4KLSAgICAgICAgTGljZW5zZSBldm9sdXRpb24gZm9yIGJvdGggT3BlbiBTb3VyY2UgYW5kIEZyZWUgU29mdHdhcmUgaGFzIGFuIGludGVyZXN0aW5nIGhpc3RvcnkuCi0gICAgICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGlzIGhpc3RvcnksIHlvdSBjYW4gZmluZCBiYXNpYyBpbmZvcm1hdGlvbiBoZXJlOgotICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW4tc291cmNlX2xpY2Vuc2UnPk9wZW4gc291cmNlIGxpY2Vuc2UgaGlzdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJlZV9zb2Z0d2FyZV9saWNlbnNlJz5GcmVlIHNvZnR3YXJlIGxpY2Vuc2UKLSAgICAgICAgICAgIGhpc3Rvcnk8L3VsaW5rPjwvcGFyYT48L2xpc3RpdGVtPgotICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBJbiBnZW5lcmFsLCB0aGUgWW9jdG8gUHJvamVjdCBpcyBicm9hZGx5IGxpY2Vuc2VkIHVuZGVyIHRoZSBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5Ci0gICAgICAgIChNSVQpIExpY2Vuc2UuCi0gICAgICAgIE1JVCBsaWNlbnNpbmcgcGVybWl0cyB0aGUgcmV1c2Ugb2Ygc29mdHdhcmUgd2l0aGluIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGFzIGxvbmcgYXMgdGhlCi0gICAgICAgIGxpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGF0IHNvZnR3YXJlLgotICAgICAgICBNSVQgaXMgYWxzbyBjb21wYXRpYmxlIHdpdGggdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpLgotICAgICAgICBQYXRjaGVzIHRvIHRoZSBZb2N0byBQcm9qZWN0IGZvbGxvdyB0aGUgdXBzdHJlYW0gbGljZW5zaW5nIHNjaGVtZS4KLSAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIG9uIHRoZSBNSVQgbGljZW5zZQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocCc+aGVyZTwvdWxpbms+LgotICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gdGhlIEdOVSBHUEwgPHVsaW5rIHVybD0naHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9MR1BMLTMuMCc+Ci0gICAgICAgIGhlcmU8L3VsaW5rPi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgV2hlbiB5b3UgYnVpbGQgYW4gaW1hZ2UgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QsIHRoZSBidWlsZCBwcm9jZXNzIHVzZXMgYQotICAgICAgICBrbm93biBsaXN0IG9mIGxpY2Vuc2VzIHRvIGVuc3VyZSBjb21wbGlhbmNlLgotICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBsaXN0IGluIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPiBhdAotICAgICAgICA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPi4KLSAgICAgICAgT25jZSB0aGUgYnVpbGQgY29tcGxldGVzLCB0aGUgbGlzdCBvZiBhbGwgbGljZW5zZXMgZm91bmQgYW5kIHVzZWQgZHVyaW5nIHRoYXQgYnVpbGQgYXJlCi0gICAgICAgIGtlcHQgaW4gdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiBhdAotICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveS9saWNlbnNlczwvZmlsZW5hbWU+LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBJZiBhIG1vZHVsZSByZXF1aXJlcyBhIGxpY2Vuc2UgdGhhdCBpcyBub3QgaW4gdGhlIGJhc2UgbGlzdCwgdGhlIGJ1aWxkIHByb2Nlc3MKLSAgICAgICAgZ2VuZXJhdGVzIGEgd2FybmluZyBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICBUaGVzZSB0b29scyBtYWtlIGl0IGVhc2llciBmb3IgYSBkZXZlbG9wZXIgdG8gYmUgY2VydGFpbiBvZiB0aGUgbGljZW5zZXMgd2l0aCB3aGljaAotICAgICAgICB0aGVpciBzaGlwcGVkIHByb2R1Y3RzIG11c3QgY29tcGx5LgotICAgICAgICBIb3dldmVyLCBldmVuIHdpdGggdGhlc2UgdG9vbHMgaXQgaXMgc3RpbGwgdXAgdG8gdGhlIGRldmVsb3BlciB0byByZXNvbHZlIHBvdGVudGlhbCBsaWNlbnNpbmcgaXNzdWVzLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgYmFzZSBsaXN0IG9mIGxpY2Vuc2VzIHVzZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgU29mdHdhcmUgUGFja2FnZQotICAgICAgICBEYXRhIEV4Y2hhbmdlIChTUERYKSBsaXN0IGFuZCB0aGUgT3BlbiBTb3VyY2UgSW5pdGlhdGl2ZSAoT1NJKSBwcm9qZWN0cy4KLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3NwZHgub3JnJz5TUERYIEdyb3VwPC91bGluaz4gaXMgYSB3b3JraW5nIGdyb3VwIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uCi0gICAgICAgIHRoYXQgbWFpbnRhaW5zIGEgc3BlY2lmaWNhdGlvbgotICAgICAgICBmb3IgYSBzdGFuZGFyZCBmb3JtYXQgZm9yIGNvbW11bmljYXRpbmcgdGhlIGNvbXBvbmVudHMsIGxpY2Vuc2VzLCBhbmQgY29weXJpZ2h0cwotICAgICAgICBhc3NvY2lhdGVkIHdpdGggYSBzb2Z0d2FyZSBwYWNrYWdlLgotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vb3BlbnNvdXJjZS5vcmcnPk9TSTwvdWxpbms+IGlzIGEgY29ycG9yYXRpb24gZGVkaWNhdGVkIHRvIHRoZSBPcGVuIFNvdXJjZQotICAgICAgICBEZWZpbml0aW9uIGFuZCB0aGUgZWZmb3J0IGZvciByZXZpZXdpbmcgYW5kIGFwcHJvdmluZyBsaWNlbnNlcyB0aGF0Ci0gICAgICAgIGNvbmZvcm0gdG8gdGhlIE9wZW4gU291cmNlIERlZmluaXRpb24gKE9TRCkuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgdGhlIGNvbWJpbmVkIFNQRFggYW5kIE9TSSBsaWNlbnNlcyB0aGF0IHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0IHVzZXMgaW4gdGhlCi0gICAgICAgIDxmaWxlbmFtZT5tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB5b3VyCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gdGhhdCBjYW4gaGVscCB5b3UgbWFpbnRhaW4gY29tcGxpYW5jZSB3aXRoIHZhcmlvdXMKLSAgICAgICAgb3BlbiBzb3VyY2UgbGljZW5zaW5nIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIGEgcHJvZHVjdCBjcmVhdGVkIHVzaW5nCi0gICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvbGluaz4iCi0gICAgICAgIHNlY3Rpb24uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nZ2l0Jz4KLSAgICA8dGl0bGU+R2l0PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBtYWtlcyBleHRlbnNpdmUgdXNlIG9mIEdpdCwKLSAgICAgICAgd2hpY2ggaXMgYSBmcmVlLCBvcGVuIHNvdXJjZSBkaXN0cmlidXRlZCB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLgotICAgICAgICBHaXQgc3VwcG9ydHMgZGlzdHJpYnV0ZWQgZGV2ZWxvcG1lbnQsIG5vbi1saW5lYXIgZGV2ZWxvcG1lbnQsIGFuZCBjYW4gaGFuZGxlIGxhcmdlIHByb2plY3RzLgotICAgICAgICBJdCBpcyBiZXN0IHRoYXQgeW91IGhhdmUgc29tZSBmdW5kYW1lbnRhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBHaXQgdHJhY2tzIHByb2plY3RzIGFuZAotICAgICAgICBob3cgdG8gd29yayB3aXRoIEdpdCBpZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBmb3IgZGV2ZWxvcG1lbnQuCi0gICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIHF1aWNrIG92ZXJ2aWV3IG9mIGhvdyBHaXQgd29ya3MgYW5kIHByb3ZpZGVzIHlvdSB3aXRoIGEgc3VtbWFyeQotICAgICAgICBvZiBzb21lIGVzc2VudGlhbCBHaXQgY29tbWFuZHMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEdpdCwgc2VlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KLSAgICAgICAgSWYgeW91IG5lZWQgdG8gZG93bmxvYWQgR2l0LCBnbyB0byA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG93bmxvYWQnPjwvdWxpbms+LgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdyZXBvc2l0b3JpZXMtdGFncy1hbmQtYnJhbmNoZXMnPgotICAgICAgICA8dGl0bGU+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIgaW4gdGhlIHNlY3Rpb24KLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPiIsCi0gICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgc291cmNlIHJlcG9zaXRvcmllcyBhdAotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz48L3VsaW5rPi4KLSAgICAgICAgICAgIElmIHlvdSBsb29rIGF0IHRoaXMgd2ViLWludGVyZmFjZSBvZiB0aGUgcmVwb3NpdG9yaWVzLCBlYWNoIGl0ZW0gaXMgYSBzZXBhcmF0ZQotICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMgdXNlIGJyYW5jaGluZyB0ZWNobmlxdWVzIHRoYXQgdHJhY2sgY29udGVudCBjaGFuZ2UgKG5vdCBmaWxlcykKLSAgICAgICAgICAgIHdpdGhpbiBhIHByb2plY3QgKGUuZy4gYSBuZXcgZmVhdHVyZSBvciB1cGRhdGVkIGRvY3VtZW50YXRpb24pLgotICAgICAgICAgICAgQ3JlYXRpbmcgYSB0cmVlLWxpa2Ugc3RydWN0dXJlIGJhc2VkIG9uIHByb2plY3QgZGl2ZXJnZW5jZSBhbGxvd3MgZm9yIGV4Y2VsbGVudCBoaXN0b3JpY2FsCi0gICAgICAgICAgICBpbmZvcm1hdGlvbiBvdmVyIHRoZSBsaWZlIG9mIGEgcHJvamVjdC4KLSAgICAgICAgICAgIFRoaXMgbWV0aG9kb2xvZ3kgYWxzbyBhbGxvd3MgZm9yIGFuIGVudmlyb25tZW50IGZyb20gd2hpY2ggeW91IGNhbiBkbyBsb3RzIG9mCi0gICAgICAgICAgICBsb2NhbCBleHBlcmltZW50YXRpb24gb24gcHJvamVjdHMgYXMgeW91IGRldmVsb3AgY2hhbmdlcyBvciBuZXcgZmVhdHVyZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEEgR2l0IHJlcG9zaXRvcnkgcmVwcmVzZW50cyBhbGwgZGV2ZWxvcG1lbnQgZWZmb3J0cyBmb3IgYSBnaXZlbiBwcm9qZWN0LgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBHaXQgcmVwb3NpdG9yeSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGNvbnRhaW5zIGFsbCBjaGFuZ2VzCi0gICAgICAgICAgICBhbmQgZGV2ZWxvcG1lbnRzIGZvciBQb2t5IG92ZXIgdGhlIGNvdXJzZSBvZiBpdHMgZW50aXJlIGxpZmUuCi0gICAgICAgICAgICBUaGF0IG1lYW5zIHRoYXQgYWxsIGNoYW5nZXMgdGhhdCBtYWtlIHVwIGFsbCByZWxlYXNlcyBhcmUgY2FwdHVyZWQuCi0gICAgICAgICAgICBUaGUgcmVwb3NpdG9yeSBtYWludGFpbnMgYSBjb21wbGV0ZSBoaXN0b3J5IG9mIGNoYW5nZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGEgbG9jYWwgY29weSBvZiBhbnkgcmVwb3NpdG9yeSBieSAiY2xvbmluZyIgaXQgd2l0aCB0aGUgR2l0Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+Y2xvbmU8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgYSBHaXQgcmVwb3NpdG9yeSwgeW91IGVuZCB1cCB3aXRoIGFuIGlkZW50aWNhbCBjb3B5IG9mIHRoZQotICAgICAgICAgICAgcmVwb3NpdG9yeSBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbS4KLSAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgYSBsb2NhbCBjb3B5IG9mIGEgcmVwb3NpdG9yeSwgeW91IGNhbiB0YWtlIHN0ZXBzIHRvIGRldmVsb3AgbG9jYWxseS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlcyBvbiBob3cgdG8gY2xvbmUgR2l0IHJlcG9zaXRvcmllcywgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctc2V0dXAnPkdldHRpbmcgU2V0IFVwPC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCBHaXQgdHJhY2tzIGNvbnRlbnQgY2hhbmdlIGFuZAotICAgICAgICAgICAgbm90IGZpbGVzLgotICAgICAgICAgICAgR2l0IHVzZXMgImJyYW5jaGVzIiB0byBvcmdhbml6ZSBkaWZmZXJlbnQgZGV2ZWxvcG1lbnQgZWZmb3J0cy4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IGhhcwotICAgICAgICAgICAgc2V2ZXJhbCBicmFuY2hlcyB0aGF0IGluY2x1ZGUgdGhlIGN1cnJlbnQKLSAgICAgICAgICAgIDxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOzwvZmlsZW5hbWU+IGJyYW5jaCwgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bWFzdGVyPC9maWxlbmFtZT4gYnJhbmNoLCBhbmQgbWFueSBicmFuY2hlcyBmb3IgcGFzdAotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCB0aGUgYnJhbmNoZXMgYnkgZ29pbmcgdG8KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4gYW5kCi0gICAgICAgICAgICBjbGlja2luZyBvbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvcG9reS9yZWZzL2hlYWRzJz5bLi4uXTwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIGxpbmsgYmVuZWF0aCB0aGUgIkJyYW5jaCIgaGVhZGluZy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRWFjaCBvZiB0aGVzZSBicmFuY2hlcyByZXByZXNlbnRzIGEgc3BlY2lmaWMgYXJlYSBvZiBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWFzdGVyPC9maWxlbmFtZT4gYnJhbmNoIHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgb3IgbW9zdCByZWNlbnQKLSAgICAgICAgICAgIGRldmVsb3BtZW50LgotICAgICAgICAgICAgQWxsIG90aGVyIGJyYW5jaGVzIHJlcHJlc2VudCBvZmZzaG9vdHMgb2YgdGhlIDxmaWxlbmFtZT5tYXN0ZXI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgYnJhbmNoLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIGEgR2l0IHJlcG9zaXRvcnksIHRoZSBjb3B5IGhhcyB0aGUgc2FtZSBzZXQKLSAgICAgICAgICAgIG9mIGJyYW5jaGVzIGFzIHRoZSBvcmlnaW5hbC4KLSAgICAgICAgICAgIFRoaXMgbWVhbnMgeW91IGNhbiB1c2UgR2l0IHRvIGNyZWF0ZSBhIGxvY2FsIHdvcmtpbmcgYXJlYSAoYWxzbyBjYWxsZWQgYSBicmFuY2gpCi0gICAgICAgICAgICB0aGF0IHRyYWNrcyBhIHNwZWNpZmljIGRldmVsb3BtZW50IGJyYW5jaCBmcm9tIHRoZSBzb3VyY2UgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBpbiBvdGhlciB3b3JkcywgeW91IGNhbiBkZWZpbmUgeW91ciBsb2NhbCBHaXQgZW52aXJvbm1lbnQgdG8gd29yayBvbiBhbnkgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIGJyYW5jaCBpbiB0aGUgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIFRvIGhlbHAgaWxsdXN0cmF0ZSwgaGVyZSBpcyBhIHNldCBvZiBjb21tYW5kcyB0aGF0IGNyZWF0ZXMgYSBsb2NhbCBjb3B5IG9mIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBhbmQgdGhlbiBjcmVhdGVzIGFuZCBjaGVja3Mgb3V0IGEgbG9jYWwKLSAgICAgICAgICAgIEdpdCBicmFuY2ggdGhhdCB0cmFja3MgdGhlIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgUmVsZWFzZSAoJkRJU1RST19OQU1FOykgZGV2ZWxvcG1lbnQ6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgfgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5Ci0gICAgICQgY2QgcG9reQotICAgICAkIGdpdCBjaGVja291dCAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyBvcmlnaW4vJkRJU1RST19OQU1FX05PX0NBUDsKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgeW91ciBsb2NhbAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgIGlzICJwb2t5IiBhbmQgdGhlIG5hbWUgb2YgdGhhdCBsb2NhbCB3b3JraW5nIGFyZWEgKGxvY2FsIGJyYW5jaCkKLSAgICAgICAgICAgIHlvdSBqdXN0IGNyZWF0ZWQgYW5kIGNoZWNrZWQgb3V0IGlzICImRElTVFJPX05BTUVfTk9fQ0FQOyIuCi0gICAgICAgICAgICBUaGUgZmlsZXMgaW4geW91ciBsb2NhbCByZXBvc2l0b3J5IG5vdyByZWZsZWN0IHRoZSBzYW1lIGZpbGVzIHRoYXQKLSAgICAgICAgICAgIGFyZSBpbiB0aGUgIiZESVNUUk9fTkFNRV9OT19DQVA7IiBkZXZlbG9wbWVudCBicmFuY2ggb2YgdGhlCi0gICAgICAgICAgICBZb2N0byBQcm9qZWN0J3MgInBva3kiIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGNyZWF0ZSBhbmQgY2hlY2tvdXQgYQotICAgICAgICAgICAgbG9jYWwgd29ya2luZyBicmFuY2ggYmFzZWQgb24gYSBicmFuY2ggbmFtZSwKLSAgICAgICAgICAgIHlvdXIgbG9jYWwgZW52aXJvbm1lbnQgbWF0Y2hlcyB0aGUgInRpcCIgb2YgdGhhdCBkZXZlbG9wbWVudCBicmFuY2gKLSAgICAgICAgICAgIGF0IHRoZSB0aW1lIHlvdSBjcmVhdGVkIHlvdXIgbG9jYWwgYnJhbmNoLCB3aGljaCBjb3VsZCBiZQotICAgICAgICAgICAgZGlmZmVyZW50IGZyb20gdGhlIGZpbGVzIGF0IHRoZSB0aW1lIG9mIGEgc2ltaWxhcmx5IG5hbWVkIHJlbGVhc2UuCi0gICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgY3JlYXRpbmcgYW5kIGNoZWNraW5nIG91dCBhIGxvY2FsIGJyYW5jaCBiYXNlZCBvbgotICAgICAgICAgICAgdGhlICImRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoIG5hbWUgaXMgbm90IHRoZSBzYW1lIGFzCi0gICAgICAgICAgICBjbG9uaW5nIGFuZCBjaGVja2luZyBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaC4KLSAgICAgICAgICAgIEtlZXAgcmVhZGluZyB0byBzZWUgaG93IHlvdSBjcmVhdGUgYSBsb2NhbCBzbmFwc2hvdCBvZiBhIFlvY3RvCi0gICAgICAgICAgICBQcm9qZWN0IFJlbGVhc2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEdpdCB1c2VzICJ0YWdzIiB0byBtYXJrIHNwZWNpZmljIGNoYW5nZXMgaW4gYSByZXBvc2l0b3J5LgotICAgICAgICAgICAgVHlwaWNhbGx5LCBhIHRhZyBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWFsIHBvaW50IHN1Y2ggYXMgdGhlIGZpbmFsCi0gICAgICAgICAgICBjaGFuZ2UgYmVmb3JlIGEgcHJvamVjdCBpcyByZWxlYXNlZC4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSB0YWdzIHVzZWQgd2l0aCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKLSAgICAgICAgICAgIHJlcG9zaXRvcnkgYnkgZ29pbmcgdG8KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4gYW5kCi0gICAgICAgICAgICBjbGlja2luZyBvbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvcG9reS9yZWZzL3RhZ3MnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgotICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiVGFnIiBoZWFkaW5nLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTb21lIGtleSB0YWdzIGFyZQotICAgICAgICAgICAgPGZpbGVuYW1lPmRpenp5LTEyLjAuMDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPmZpZG8tMTMuMC4wPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+amV0aHJvLTE0LjAuMDwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047PC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGVzZSB0YWdzIHJlcHJlc2VudCBZb2N0byBQcm9qZWN0IHJlbGVhc2VzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91IGFsc28gaGF2ZSBhY2Nlc3MgdG8gYWxsIHRoZQotICAgICAgICAgICAgdGFncy4KLSAgICAgICAgICAgIFNpbWlsYXIgdG8gYnJhbmNoZXMsIHlvdSBjYW4gY3JlYXRlIGFuZCBjaGVja291dCBhIGxvY2FsIHdvcmtpbmcgR2l0IGJyYW5jaCBiYXNlZAotICAgICAgICAgICAgb24gYSB0YWcgbmFtZS4KLSAgICAgICAgICAgIFdoZW4geW91IGRvIHRoaXMsIHlvdSBnZXQgYSBzbmFwc2hvdCBvZiB0aGUgR2l0IHJlcG9zaXRvcnkgdGhhdCByZWZsZWN0cwotICAgICAgICAgICAgdGhlIHN0YXRlIG9mIHRoZSBmaWxlcyB3aGVuIHRoZSBjaGFuZ2Ugd2FzIG1hZGUgYXNzb2NpYXRlZCB3aXRoIHRoYXQgdGFnLgotICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzZSBpcyB0byBjaGVja291dCBhIHdvcmtpbmcgYnJhbmNoIHRoYXQgbWF0Y2hlcyBhIHNwZWNpZmljCi0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCi0gICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgfgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5Ci0gICAgICQgY2QgcG9reQotICAgICAkIGdpdCBjaGVja291dCAtYiBteS0mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047ICZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjsKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgeW91ciBsb2NhbCBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICBGaWxlcyBHaXQgcmVwb3NpdG9yeSBpcyA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgQW5kLCB0aGUgbmFtZSBvZiB0aGUgbG9jYWwgYnJhbmNoIHlvdSBoYXZlIGNyZWF0ZWQgYW5kIGNoZWNrZWQgb3V0IGlzCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bXktJkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgVGhlIGZpbGVzIGluIHlvdXIgcmVwb3NpdG9yeSBub3cgZXhhY3RseSBtYXRjaCB0aGUgWW9jdG8gUHJvamVjdCAmRElTVFJPOwotICAgICAgICAgICAgUmVsZWFzZSB0YWcgKDxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCB3aGVuIHlvdSBjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbG9jYWwKLSAgICAgICAgICAgIHdvcmtpbmcgYnJhbmNoIGJhc2VkIG9uIGEgdGFnLCB5b3VyIGVudmlyb25tZW50IG1hdGNoZXMgYSBzcGVjaWZpYyBwb2ludAotICAgICAgICAgICAgaW4gdGltZSBhbmQgbm90IHRoZSBlbnRpcmUgZGV2ZWxvcG1lbnQgYnJhbmNoLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2Jhc2ljLWNvbW1hbmRzJz4KLSAgICAgICAgPHRpdGxlPkJhc2ljIENvbW1hbmRzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEdpdCBoYXMgYW4gZXh0ZW5zaXZlIHNldCBvZiBjb21tYW5kcyB0aGF0IGxldHMgeW91IG1hbmFnZSBjaGFuZ2VzIGFuZCBwZXJmb3JtCi0gICAgICAgICAgICBjb2xsYWJvcmF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgotICAgICAgICAgICAgQ29udmVuaWVudGx5IHRob3VnaCwgeW91IGNhbiBtYW5hZ2Ugd2l0aCBhIHNtYWxsIHNldCBvZiBiYXNpYyBvcGVyYXRpb25zIGFuZCB3b3JrZmxvd3MKLSAgICAgICAgICAgIG9uY2UgeW91IHVuZGVyc3RhbmQgdGhlIGJhc2ljIHBoaWxvc29waHkgYmVoaW5kIEdpdC4KLSAgICAgICAgICAgIFlvdSBkbyBub3QgaGF2ZSB0byBiZSBhbiBleHBlcnQgaW4gR2l0IHRvIGJlIGZ1bmN0aW9uYWwuCi0gICAgICAgICAgICBBIGdvb2QgcGxhY2UgdG8gbG9vayBmb3IgaW5zdHJ1Y3Rpb24gb24gYSBtaW5pbWFsIHNldCBvZiBHaXQgY29tbWFuZHMgaXMKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz5oZXJlPC91bGluaz4uCi0gICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBkb3dubG9hZCBHaXQsIHlvdSBjYW4gZG8gc28KLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb3dubG9hZCc+aGVyZTwvdWxpbms+LCBhbHRob3VnaAotICAgICAgICAgICAgYW55IHJlYXNvbmFibHkgY3VycmVudCBMaW51eCBkaXN0cmlidXRpb24gc2hvdWxkIGFscmVhZHkgaGF2ZSBhbgotICAgICAgICAgICAgaW5zdGFsbGFibGUgcGFja2FnZSBmb3IgR2l0LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB5b3UgZG8gbm90IGtub3cgbXVjaCBhYm91dCBHaXQsIHlvdSBzaG91bGQgZWR1Y2F0ZQotICAgICAgICAgICAgeW91cnNlbGYgYnkgdmlzaXRpbmcgdGhlIGxpbmtzIHByZXZpb3VzbHkgbWVudGlvbmVkLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgYnJpZWZseSBkZXNjcmliZXMgc29tZSBiYXNpYyBHaXQgb3BlcmF0aW9ucyBhcyBhIHdheSB0byBnZXQgc3RhcnRlZC4KLSAgICAgICAgICAgIEFzIHdpdGggYW55IHNldCBvZiBjb21tYW5kcywgdGhpcyBsaXN0IChpbiBtb3N0IGNhc2VzKSBzaW1wbHkgc2hvd3MgdGhlIGJhc2UgY29tbWFuZCBhbmQKLSAgICAgICAgICAgIG9taXRzIHRoZSBtYW55IGFyZ3VtZW50cyB0aGV5IHN1cHBvcnQuCi0gICAgICAgICAgICBTZWUgdGhlIEdpdCBkb2N1bWVudGF0aW9uIGZvciBjb21wbGV0ZSBkZXNjcmlwdGlvbnMgYW5kIHN0cmF0ZWdpZXMgb24gaG93IHRvIHVzZSB0aGVzZSBjb21tYW5kczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGluaXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBJbml0aWFsaXplcyBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgR2l0IGNvbW1hbmRzIHVubGVzcyB5b3UgaGF2ZSBhIDxmaWxlbmFtZT4uZ2l0PC9maWxlbmFtZT4gcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgbG9jYWwgY2xvbmUgb2YgYSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGNvbGxhYm9yYXRpb24sIHRoaXMgY29tbWFuZCBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhCi0gICAgICAgICAgICAgICAgICAgIGxvY2FsIEdpdCByZXBvc2l0b3J5IHRoYXQgaXMgb24gZXF1YWwgZm9vdGluZyB3aXRoIGEgZmVsbG93Ci0gICAgICAgICAgICAgICAgICAgIGRldmVsb3BlcuKAmXMgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBTdGFnZXMgdXBkYXRlZCBmaWxlIGNvbnRlbnRzCi0gICAgICAgICAgICAgICAgICAgIHRvIHRoZSBpbmRleCB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIEdpdCB1c2VzIHRvIHRyYWNrIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHN0YWdlIGFsbCBmaWxlcyB0aGF0IGhhdmUgY2hhbmdlZCBiZWZvcmUgeW91IGNhbiBjb21taXQgdGhlbS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY29tbWl0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4gQ3JlYXRlcyBhICJjb21taXQiIHRoYXQgZG9jdW1lbnRzCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjaGFuZ2VzIHlvdSBtYWRlLgotICAgICAgICAgICAgICAgICAgICBDb21taXRzIGFyZSB1c2VkIGZvciBoaXN0b3JpY2FsIHB1cnBvc2VzLCBmb3IgZGV0ZXJtaW5pbmcgaWYgYSBtYWludGFpbmVyIG9mIGEgcHJvamVjdAotICAgICAgICAgICAgICAgICAgICB3aWxsIGFsbG93IHRoZSBjaGFuZ2UsIGFuZCBmb3IgdWx0aW1hdGVseSBwdXNoaW5nIHRoZSBjaGFuZ2UgZnJvbSB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5Ci0gICAgICAgICAgICAgICAgICAgIGludG8gdGhlIHByb2plY3TigJlzIHVwc3RyZWFtIChvciBtYXN0ZXIpIHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHN0YXR1czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcG9ydHMgYW55IG1vZGlmaWVkIGZpbGVzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgcG9zc2libHkgbmVlZCB0byBiZSBzdGFnZWQgYW5kIGNvbW1pdHRlZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2hlY2tvdXQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPiBDaGFuZ2VzCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgd29ya2luZyBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyBhbmFsb2dvdXMgdG8gImNkIi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2hlY2tvdXQg4oCTYjwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT53b3JraW5nLWJyYW5jaDwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+IENyZWF0ZXMKLSAgICAgICAgICAgICAgICAgICAgYSB3b3JraW5nIGJyYW5jaCBvbiB5b3VyIGxvY2FsIG1hY2hpbmUgd2hlcmUgeW91IGNhbiBpc29sYXRlIHdvcmsuCi0gICAgICAgICAgICAgICAgICAgIEl0IGlzIGEgZ29vZCBpZGVhIHRvIHVzZSBsb2NhbCBicmFuY2hlcyB3aGVuIGFkZGluZyBzcGVjaWZpYyBmZWF0dXJlcyBvciBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICBUaGlzIHdheSBpZiB5b3UgZG8gbm90IGxpa2Ugd2hhdCB5b3UgaGF2ZSBkb25lIHlvdSBjYW4gZWFzaWx5IGdldCByaWQgb2YgdGhlIHdvcmsuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGJyYW5jaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcG9ydHMKLSAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgbG9jYWwgYnJhbmNoZXMgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRlbGxzIHlvdSB0aGUgYnJhbmNoIGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IHdvcmtpbmcuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGJyYW5jaCAtRDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIERlbGV0ZXMgYW4gZXhpc3RpbmcgbG9jYWwgYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBiZSBpbiBhIGxvY2FsIGJyYW5jaCBvdGhlciB0aGFuIHRoZSBvbmUgeW91IGFyZSBkZWxldGluZwotICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBkZWxldGUgPHJlcGxhY2VhYmxlPmJyYW5jaC1uYW1lPC9yZXBsYWNlYWJsZT4uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1bGw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24KLSAgICAgICAgICAgICAgICAgICAgZnJvbSBhbiB1cHN0cmVhbSBHaXQKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgcGxhY2VzIGl0IGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgIFlvdSB1c2UgdGhpcyBjb21tYW5kIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIHN5bmNocm9uaXplZCB3aXRoIHRoZSByZXBvc2l0b3J5Ci0gICAgICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggeW91IGFyZSBiYXNpbmcgY2hhbmdlcyAoLmUuZy4gdGhlIG1hc3RlciBicmFuY2gpLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBwdXNoPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgU2VuZHMgYWxsIHlvdXIgY29tbWl0dGVkIGxvY2FsIGNoYW5nZXMgdG8gYW4gdXBzdHJlYW0gR2l0Ci0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgKGUuZy4gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIG9mIHRoZSBwcm9qZWN0IGRyYXdzIGZyb20gdGhlc2UgcmVwb3NpdG9yaWVzCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gYWRkaW5nIGNoYW5nZXMgdG8gdGhlIHByb2plY3TigJlzIG1hc3RlciByZXBvc2l0b3J5IG9yCi0gICAgICAgICAgICAgICAgICAgIG90aGVyIGRldmVsb3BtZW50IGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gQ29tYmluZXMgb3IgYWRkcyBjaGFuZ2VzIGZyb20gb25lCi0gICAgICAgICAgICAgICAgICAgIGxvY2FsIGJyYW5jaCBvZiB5b3VyIHJlcG9zaXRvcnkgd2l0aCBhbm90aGVyIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnksIHRoZSBkZWZhdWx0IGJyYW5jaCBpcyBuYW1lZCAibWFzdGVyIi4KLSAgICAgICAgICAgICAgICAgICAgQSB0eXBpY2FsIHdvcmtmbG93IGlzIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBicmFuY2ggZm9yIGlzb2xhdGVkIHdvcmssIG1ha2UgYW5kIGNvbW1pdCB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMsIHN3aXRjaCB0byB5b3VyIGxvY2FsIG1hc3RlciBicmFuY2gsIG1lcmdlIHRoZSBjaGFuZ2VzIGZyb20gdGhlIHRlbXBvcmFyeSBicmFuY2ggaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgbG9jYWwgbWFzdGVyIGJyYW5jaCwgYW5kIHRoZW4gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgYnJhbmNoLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVycnktcGljazwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IENob29zZSBhbmQgYXBwbHkgc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0cyBmcm9tIG9uZSBicmFuY2ggaW50byBhbm90aGVyIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgVGhlcmUgYXJlIHRpbWVzIHdoZW4geW91IG1pZ2h0IG5vdCBiZSBhYmxlIHRvIG1lcmdlIGFsbCB0aGUgY2hhbmdlcyBpbiBvbmUgYnJhbmNoIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgYW5vdGhlciBidXQgbmVlZCB0byBwaWNrIG91dCBjZXJ0YWluIG9uZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0azwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFByb3ZpZGVzIGEgR1VJIHZpZXcgb2YgdGhlIGJyYW5jaGVzCi0gICAgICAgICAgICAgICAgICAgIGFuZCBjaGFuZ2VzIGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyBhIGdvb2Qgd2F5IHRvIGdyYXBoaWNhbGx5IHNlZSB3aGVyZSB0aGluZ3MgaGF2ZSBkaXZlcmdlZCBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGxvY2FsIHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGxvZzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcG9ydHMgYSBoaXN0b3J5IG9mIHlvdXIgY2hhbmdlcyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgZGlmZjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IERpc3BsYXlzIGxpbmUtYnktbGluZSBkaWZmZXJlbmNlcwotICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIHlvdXIgbG9jYWwgd29ya2luZyBmaWxlcyBhbmQgdGhlIHNhbWUgZmlsZXMgaW4gdGhlIHVwc3RyZWFtIEdpdCByZXBvc2l0b3J5IHRoYXQgeW91cgotICAgICAgICAgICAgICAgICAgICBicmFuY2ggY3VycmVudGx5IHRyYWNrcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nd29ya2Zsb3dzJz4KLSAgICA8dGl0bGU+V29ya2Zsb3dzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBvdmVydmlldyBvbiB3b3JrZmxvd3MgdXNpbmcgR2l0LgotICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgaW5mb3JtYXRpb24gY292ZXJzIGJhc2ljIHByYWN0aWNlcyB0aGF0IGRlc2NyaWJlIHJvbGVzIGFuZCBhY3Rpb25zIGluIGEKLSAgICAgICAgY29sbGFib3JhdGl2ZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICAgICAgQWdhaW4sIGlmIHlvdSBhcmUgZmFtaWxpYXIgd2l0aCB0aGlzIHR5cGUgb2YgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIHlvdSBtaWdodCB3YW50IHRvIGp1c3QKLSAgICAgICAgc2tpcCB0aGlzIHNlY3Rpb24uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGZpbGVzIGFyZSBtYWludGFpbmVkIHVzaW5nIEdpdCBpbiBhICJtYXN0ZXIiIGJyYW5jaCB3aG9zZSBHaXQgaGlzdG9yeQotICAgICAgICB0cmFja3MgZXZlcnkgY2hhbmdlIGFuZCB3aG9zZSBzdHJ1Y3R1cmUgcHJvdmlkZXMgYnJhbmNoZXMgZm9yIGFsbCBkaXZlcmdpbmcgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgQWx0aG91Z2ggdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgR2l0LCBtYW55IG9wZW4gc291cmNlIHByb2plY3RzIGRvIHNvLgotICAgICAgICBGb3IgdGhlIFlvY3RvIFByb2plY3QsIGEga2V5IGluZGl2aWR1YWwgY2FsbGVkIHRoZSAibWFpbnRhaW5lciIgaXMgcmVzcG9uc2libGUgZm9yIHRoZSAibWFzdGVyIgotICAgICAgICBicmFuY2ggb2YgYSBnaXZlbiBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgVGhlICJtYXN0ZXIiIGJyYW5jaCBpcyB0aGUg4oCcdXBzdHJlYW3igJ0gcmVwb3NpdG9yeSB3aGVyZSB0aGUgZmluYWwgYnVpbGRzIG9mIHRoZSBwcm9qZWN0IG9jY3VyLgotICAgICAgICBUaGUgbWFpbnRhaW5lciBpcyByZXNwb25zaWJsZSBmb3IgYWNjZXB0aW5nIGNoYW5nZXMgZnJvbSBvdGhlciBkZXZlbG9wZXJzIGFuZCBmb3IKLSAgICAgICAgb3JnYW5pemluZyB0aGUgdW5kZXJseWluZyBicmFuY2ggc3RydWN0dXJlIHRvIHJlZmxlY3QgcmVsZWFzZSBzdHJhdGVnaWVzIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgPG5vdGU+Rm9yIGluZm9ybWF0aW9uIG9uIGZpbmRpbmcgb3V0IHdobyBpcyByZXNwb25zaWJsZSBmb3IgKG1haW50YWlucykKLSAgICAgICAgICAgIGEgcGFydGljdWxhciBhcmVhIG9mIGNvZGUsIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5Ib3cgdG8gU3VibWl0IGEgQ2hhbmdlPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIHByb2plY3QgYWxzbyBoYXMgYW4gdXBzdHJlYW0gY29udHJpYnV0aW9uIEdpdCByZXBvc2l0b3J5IG5hbWVkCi0gICAgICAgIDxmaWxlbmFtZT5wb2t5LWNvbnRyaWI8L2ZpbGVuYW1lPi4KLSAgICAgICAgWW91IGNhbiBzZWUgYWxsIHRoZSBicmFuY2hlcyBpbiB0aGlzIHJlcG9zaXRvcnkgdXNpbmcgdGhlIHdlYiBpbnRlcmZhY2UKLSAgICAgICAgb2YgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IG9yZ2FuaXplZAotICAgICAgICB3aXRoaW4gdGhlICJQb2t5IFN1cHBvcnQiIGFyZWEuCi0gICAgICAgIFRoZXNlIGJyYW5jaGVzIHRlbXBvcmFyaWx5IGhvbGQgY2hhbmdlcyB0byB0aGUgcHJvamVjdCB0aGF0IGhhdmUgYmVlbgotICAgICAgICBzdWJtaXR0ZWQgb3IgY29tbWl0dGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IHRlYW0gYW5kIGJ5Ci0gICAgICAgIGNvbW11bml0eSBtZW1iZXJzIHdobyBjb250cmlidXRlIHRvIHRoZSBwcm9qZWN0LgotICAgICAgICBUaGUgbWFpbnRhaW5lciBkZXRlcm1pbmVzIGlmIHRoZSBjaGFuZ2VzIGFyZSBxdWFsaWZpZWQgdG8gYmUgbW92ZWQKLSAgICAgICAgZnJvbSB0aGUgImNvbnRyaWIiIGJyYW5jaGVzIGludG8gdGhlICJtYXN0ZXIiIGJyYW5jaCBvZiB0aGUgR2l0Ci0gICAgICAgIHJlcG9zaXRvcnkuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIERldmVsb3BlcnMgKGluY2x1ZGluZyBjb250cmlidXRpbmcgY29tbXVuaXR5IG1lbWJlcnMpIGNyZWF0ZSBhbmQgbWFpbnRhaW4gY2xvbmVkIHJlcG9zaXRvcmllcwotICAgICAgICBvZiB0aGUgdXBzdHJlYW0gIm1hc3RlciIgYnJhbmNoLgotICAgICAgICBUaGVzZSByZXBvc2l0b3JpZXMgYXJlIGxvY2FsIHRvIHRoZWlyIGRldmVsb3BtZW50IHBsYXRmb3JtcyBhbmQgYXJlIHVzZWQgdG8gZGV2ZWxvcCBjaGFuZ2VzLgotICAgICAgICBXaGVuIGEgZGV2ZWxvcGVyIGlzIHNhdGlzZmllZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIG9yIGNoYW5nZSwgdGhleSAicHVzaCIgdGhlIGNoYW5nZXMKLSAgICAgICAgdG8gdGhlIGFwcHJvcHJpYXRlICJjb250cmliIiByZXBvc2l0b3J5LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBEZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSBmb3Iga2VlcGluZyB0aGVpciBsb2NhbCByZXBvc2l0b3J5IHVwLXRvLWRhdGUgd2l0aCAibWFzdGVyIi4KLSAgICAgICAgVGhleSBhcmUgYWxzbyByZXNwb25zaWJsZSBmb3Igc3RyYWlnaHRlbmluZyBvdXQgYW55IGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGFyaXNlIHdpdGhpbiBmaWxlcwotICAgICAgICB0aGF0IGFyZSBiZWluZyB3b3JrZWQgb24gc2ltdWx0YW5lb3VzbHkgYnkgbW9yZSB0aGFuIG9uZSBwZXJzb24uCi0gICAgICAgIEFsbCB0aGlzIHdvcmsgaXMgZG9uZSBsb2NhbGx5IG9uIHRoZSBkZXZlbG9wZXLigJlzIG1hY2hpbmVzIGJlZm9yZSBhbnl0aGluZyBpcyBwdXNoZWQgdG8gYQotICAgICAgICAiY29udHJpYiIgYXJlYSBhbmQgZXhhbWluZWQgYXQgdGhlIG1haW50YWluZXLigJlzIGxldmVsLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBBIHNvbWV3aGF0IGZvcm1hbCBtZXRob2QgZXhpc3RzIGJ5IHdoaWNoIGRldmVsb3BlcnMgY29tbWl0IGNoYW5nZXMgYW5kIHB1c2ggdGhlbSBpbnRvIHRoZQotICAgICAgICAiY29udHJpYiIgYXJlYSBhbmQgc3Vic2VxdWVudGx5IHJlcXVlc3QgdGhhdCB0aGUgbWFpbnRhaW5lciBpbmNsdWRlIHRoZW0gaW50byAibWFzdGVyIgotICAgICAgICBUaGlzIHByb2Nlc3MgaXMgY2FsbGVkIOKAnHN1Ym1pdHRpbmcgYSBwYXRjaOKAnSBvciAic3VibWl0dGluZyBhIGNoYW5nZS4iCi0gICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzdWJtaXR0aW5nIHBhdGNoZXMgYW5kIGNoYW5nZXMsIHNlZSB0aGUKLSAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L2xpbms+IiBzZWN0aW9uLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUbyBzdW1tYXJpemUgdGhlIGVudmlyb25tZW50OiAgYSBzaW5nbGUgcG9pbnQgb2YgZW50cnkgZXhpc3RzIGZvcgotICAgICAgICBjaGFuZ2VzIGludG8gdGhlIHByb2plY3TigJlzICJtYXN0ZXIiIGJyYW5jaCBvZiB0aGUgR2l0IHJlcG9zaXRvcnksCi0gICAgICAgIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHByb2plY3TigJlzIG1haW50YWluZXIuCi0gICAgICAgIEFuZCwgYSBzZXQgb2YgZGV2ZWxvcGVycyBleGlzdCB3aG8gaW5kZXBlbmRlbnRseSBkZXZlbG9wLCB0ZXN0LCBhbmQKLSAgICAgICAgc3VibWl0IGNoYW5nZXMgdG8gImNvbnRyaWIiIGFyZWFzIGZvciB0aGUgbWFpbnRhaW5lciB0byBleGFtaW5lLgotICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGVuIGNob29zZXMgd2hpY2ggY2hhbmdlcyBhcmUgZ29pbmcgdG8gYmVjb21lIGEKLSAgICAgICAgcGVybWFuZW50IHBhcnQgb2YgdGhlIHByb2plY3QuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9naXQtd29ya2Zsb3cucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iM2luIiBhbGlnbj0ibGVmdCIgc2NhbGVmaXQ9IjEiIC8+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoaWxlIGVhY2ggZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgaXMgdW5pcXVlLCB0aGVyZSBhcmUgc29tZSBiZXN0IHByYWN0aWNlcyBvciBtZXRob2RzCi0gICAgICAgIHRoYXQgaGVscCBkZXZlbG9wbWVudCBydW4gc21vb3RobHkuCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgc29tZSBvZiB0aGVzZSBwcmFjdGljZXMuCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEdpdCB3b3JrZmxvd3MsIHNlZSB0aGUgd29ya2Zsb3cgdG9waWNzIGluIHRoZQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vYm9vay5naXQtc2NtLmNvbSc+R2l0IENvbW11bml0eSBCb29rPC91bGluaz4uCi0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1ha2UgU21hbGwgQ2hhbmdlczo8L2VtcGhhc2lzPiBJdCBpcyBiZXN0IHRvIGtlZXAgdGhlIGNoYW5nZXMgeW91IGNvbW1pdAotICAgICAgICAgICAgICAgIHNtYWxsIGFzIGNvbXBhcmVkIHRvIGJ1bmRsaW5nIG1hbnkgZGlzcGFyYXRlIGNoYW5nZXMgaW50byBhIHNpbmdsZSBjb21taXQuCi0gICAgICAgICAgICAgICAgVGhpcyBwcmFjdGljZSBub3Qgb25seSBrZWVwcyB0aGluZ3MgbWFuYWdlYWJsZSBidXQgYWxzbyBhbGxvd3MgdGhlIG1haW50YWluZXIKLSAgICAgICAgICAgICAgICB0byBtb3JlIGVhc2lseSBpbmNsdWRlIG9yIHJlZnVzZSBjaGFuZ2VzLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyBhbHNvIGdvb2QgcHJhY3RpY2UgdG8gbGVhdmUgdGhlIHJlcG9zaXRvcnkgaW4gYSBzdGF0ZSB0aGF0IGFsbG93cyB5b3UgdG8KLSAgICAgICAgICAgICAgICBzdGlsbCBzdWNjZXNzZnVsbHkgYnVpbGQgeW91ciBwcm9qZWN0LiAgSW4gb3RoZXIgd29yZHMsIGRvIG5vdCBjb21taXQgaGFsZiBvZiBhIGZlYXR1cmUsCi0gICAgICAgICAgICAgICAgdGhlbiBhZGQgdGhlIG90aGVyIGhhbGYgYXMgYSBzZXBhcmF0ZSwgbGF0ZXIgY29tbWl0LgotICAgICAgICAgICAgICAgIEVhY2ggY29tbWl0IHNob3VsZCB0YWtlIHlvdSBmcm9tIG9uZSBidWlsZGFibGUgcHJvamVjdCBzdGF0ZSB0byBhbm90aGVyCi0gICAgICAgICAgICAgICAgYnVpbGRhYmxlIHN0YXRlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2UgQnJhbmNoZXMgTGliZXJhbGx5OjwvZW1waGFzaXM+IEl0IGlzIHZlcnkgZWFzeSB0byBjcmVhdGUsIHVzZSwgYW5kCi0gICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsIGJyYW5jaGVzIGluIHlvdXIgd29ya2luZyBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIG5hbWUgdGhlc2UgYnJhbmNoZXMgYW55dGhpbmcgeW91IGxpa2UuCi0gICAgICAgICAgICAgICAgSXQgaXMgaGVscGZ1bCB0byBnaXZlIHRoZW0gbmFtZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aWN1bGFyIGZlYXR1cmUgb3IgY2hhbmdlCi0gICAgICAgICAgICAgICAgb24gd2hpY2ggeW91IGFyZSB3b3JraW5nLgotICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBkb25lIHdpdGggYSBmZWF0dXJlIG9yIGNoYW5nZSBhbmQgaGF2ZSBtZXJnZWQgaXQKLSAgICAgICAgICAgICAgICBpbnRvIHlvdXIgbG9jYWwgbWFzdGVyIGJyYW5jaCwgc2ltcGx5IGRpc2NhcmQgdGhlIHRlbXBvcmFyeQotICAgICAgICAgICAgICAgIGJyYW5jaC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWVyZ2UgQ2hhbmdlczo8L2VtcGhhc2lzPiBUaGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29tbWFuZCBhbGxvd3MgeW91IHRvIHRha2UgdGhlCi0gICAgICAgICAgICAgICAgY2hhbmdlcyBmcm9tIG9uZSBicmFuY2ggYW5kIGZvbGQgdGhlbSBpbnRvIGFub3RoZXIgYnJhbmNoLgotICAgICAgICAgICAgICAgIFRoaXMgcHJvY2VzcyBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBtb3JlIHRoYW4gYSBzaW5nbGUgZGV2ZWxvcGVyIG1pZ2h0IGJlIHdvcmtpbmcKLSAgICAgICAgICAgICAgICBvbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHNhbWUgZmVhdHVyZS4KLSAgICAgICAgICAgICAgICBNZXJnaW5nIGNoYW5nZXMgYWxzbyBhdXRvbWF0aWNhbGx5IGlkZW50aWZpZXMgYW55IGNvbGxpc2lvbnMgb3IgImNvbmZsaWN0cyIKLSAgICAgICAgICAgICAgICB0aGF0IG1pZ2h0IGhhcHBlbiBhcyBhIHJlc3VsdCBvZiB0aGUgc2FtZSBsaW5lcyBvZiBjb2RlIGJlaW5nIGFsdGVyZWQgYnkgdHdvIGRpZmZlcmVudAotICAgICAgICAgICAgICAgIGRldmVsb3BlcnMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1hbmFnZSBCcmFuY2hlczo8L2VtcGhhc2lzPiBCZWNhdXNlIGJyYW5jaGVzIGFyZSBlYXN5IHRvIHVzZSwgeW91IHNob3VsZAotICAgICAgICAgICAgICAgIHVzZSBhIHN5c3RlbSB3aGVyZSBicmFuY2hlcyBpbmRpY2F0ZSB2YXJ5aW5nIGxldmVscyBvZiBjb2RlIHJlYWRpbmVzcy4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBoYXZlIGEgIndvcmsiIGJyYW5jaCB0byBkZXZlbG9wIGluLCBhICJ0ZXN0IiBicmFuY2ggd2hlcmUgdGhlIGNvZGUgb3IKLSAgICAgICAgICAgICAgICBjaGFuZ2UgaXMgdGVzdGVkLCBhICJzdGFnZSIgYnJhbmNoIHdoZXJlIGNoYW5nZXMgYXJlIHJlYWR5IHRvIGJlIGNvbW1pdHRlZCwgYW5kIHNvIGZvcnRoLgotICAgICAgICAgICAgICAgIEFzIHlvdXIgcHJvamVjdCBkZXZlbG9wcywgeW91IGNhbiBtZXJnZSBjb2RlIGFjcm9zcyB0aGUgYnJhbmNoZXMgdG8gcmVmbGVjdCBldmVyLWluY3JlYXNpbmcKLSAgICAgICAgICAgICAgICBzdGFibGUgc3RhdGVzIG9mIHRoZSBkZXZlbG9wbWVudC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlIFB1c2ggYW5kIFB1bGw6PC9lbXBoYXNpcz4gVGhlIHB1c2gtcHVsbCB3b3JrZmxvdyBpcyBiYXNlZCBvbiB0aGUKLSAgICAgICAgICAgICAgICBjb25jZXB0IG9mIGRldmVsb3BlcnMgInB1c2hpbmciIGxvY2FsIGNvbW1pdHMgdG8gYSByZW1vdGUgcmVwb3NpdG9yeSwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICB1c3VhbGx5IGEgY29udHJpYnV0aW9uIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgVGhpcyB3b3JrZmxvdyBpcyBhbHNvIGJhc2VkIG9uIGRldmVsb3BlcnMgInB1bGxpbmciIGtub3duIHN0YXRlcyBvZiB0aGUgcHJvamVjdCBkb3duIGludG8gdGhlaXIKLSAgICAgICAgICAgICAgICBsb2NhbCBkZXZlbG9wbWVudCByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgVGhlIHdvcmtmbG93IGVhc2lseSBhbGxvd3MgeW91IHRvIHB1bGwgY2hhbmdlcyBzdWJtaXR0ZWQgYnkgb3RoZXIgZGV2ZWxvcGVycyBmcm9tIHRoZQotICAgICAgICAgICAgICAgIHVwc3RyZWFtIHJlcG9zaXRvcnkgaW50byB5b3VyIHdvcmsgYXJlYSBlbnN1cmluZyB0aGF0IHlvdSBoYXZlIHRoZSBtb3N0IHJlY2VudCBzb2Z0d2FyZQotICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRvIGRldmVsb3AuCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIHR3byBzY3JpcHRzIG5hbWVkIDxmaWxlbmFtZT5jcmVhdGUtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gdGhhdCBzaGlwIHdpdGggdGhlIHJlbGVhc2UgdG8gZmFjaWxpdGF0ZSB0aGlzCi0gICAgICAgICAgICAgICAgd29ya2Zsb3cuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIHNjcmlwdHMgaW4gdGhlIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmb2xkZXIgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlc2Ugc2NyaXB0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwdXNoaW5nLWEtY2hhbmdlLXVwc3RyZWFtJz5Vc2luZyBTY3JpcHRzIHRvIFB1c2ggYSBDaGFuZ2UgVXBzdHJlYW0gYW5kIFJlcXVlc3QgYSBQdWxsPC9saW5rPiIgc2VjdGlvbi4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgU3VtbWFyeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEFzaWRlIGZyb20gdGhlIHByZXZpb3VzIHN0ZXBzLCBzb21lIGJlc3QgcHJhY3RpY2VzIGV4aXN0CisgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBzb3VyY2UgY29udHJvbCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTWFpbnRhaW4geW91ciBNZXRhZGF0YSBpbiBsYXllcnMgdGhhdCBtYWtlIHNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeW91ciBzaXR1YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSd1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBDcmVhdGluZyBMYXllcnM8L2xpbms+IiBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uCisgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VwYXJhdGUgdGhlIHByb2plY3QncyBNZXRhZGF0YSBhbmQgY29kZSBieSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGUgR2l0IHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd29ya2luZy13aXRoLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Xb3JraW5nIFdpdGggWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBsb2NhbCBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcyBmb3IgcmVsYXRlZCB1cHN0cmVhbSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNldCB1cCB0aGUgZGlyZWN0b3J5IGZvciB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlCisgICAgICAgICAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHNldCB1cCB0aGUgc3N0YXRlIGNhY2hlIG9uIGEgc3lzdGVtIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGRldmVsb3BlcnMgaW4gdGhlIHNhbWUgb3JnYW5pemF0aW9uIGFuZCBzaGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgc291cmNlIGRpcmVjdG9yaWVzIG9uIHRoZWlyIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNldCB1cCBhbiBBdXRvYnVpbGRlciBhbmQgaGF2ZSBpdCBwb3B1bGF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNzdGF0ZSBjYWNoZSBhbmQgc291cmNlIGRpcmVjdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGNvbW11bml0eSBlbmNvdXJhZ2VzIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2VuZCBwYXRjaGVzIHRvIHRoZSBwcm9qZWN0IHRvIGZpeCBidWdzIG9yIGFkZCBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBzdWJtaXQgcGF0Y2hlcywgZm9sbG93IHRoZSBwcm9qZWN0IGNvbW1pdAorICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcyBmb3Igd3JpdGluZyBnb29kIGNvbW1pdCBtZXNzYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZW5kIGNoYW5nZXMgdG8gdGhlIGNvcmUgc29vbmVyIHRoYW4gbGF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIG90aGVycyBhcmUgbGlrZWx5IHRvIHJ1biBpbnRvIHRoZSBzYW1lIGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGd1aWRhbmNlIG9uIG1haWxpbmcgbGlzdHMgdG8gdXNlLCBzZWUgdGhlIGxpc3QgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGF2YWlsYWJsZSBtYWlsaW5nIGxpc3RzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLW1haWxpbmdsaXN0Jz5NYWlsaW5nIExpc3RzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UGF0Y2ggV29ya2Zsb3c6PC9lbXBoYXNpcz4gVGhpcyB3b3JrZmxvdyBhbGxvd3MgeW91IHRvIG5vdGlmeSB0aGUKLSAgICAgICAgICAgICAgICBtYWludGFpbmVyIHRocm91Z2ggYW4gZW1haWwgdGhhdCB5b3UgaGF2ZSBhIGNoYW5nZSAob3IgcGF0Y2gpIHlvdSB3b3VsZCBsaWtlIGNvbnNpZGVyZWQKLSAgICAgICAgICAgICAgICBmb3IgdGhlICJtYXN0ZXIiIGJyYW5jaCBvZiB0aGUgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgVG8gc2VuZCB0aGlzIHR5cGUgb2YgY2hhbmdlLCB5b3UgZm9ybWF0IHRoZSBwYXRjaCBhbmQgdGhlbiBzZW5kIHRoZSBlbWFpbCB1c2luZyB0aGUgR2l0IGNvbW1hbmRzCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlc2Ugc2NyaXB0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5Ib3cgdG8gU3VibWl0IGEgQ2hhbmdlPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSd0cmFja2luZy1idWdzJz4KLSAgICA8dGl0bGU+VHJhY2tpbmcgQnVnczwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdXNlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuYnVnemlsbGEub3JnL2Fib3V0Lyc+QnVnemlsbGE8L3VsaW5rPiB0byB0cmFjayBidWdzLgotICAgICAgICBJbXBsZW1lbnRhdGlvbnMgb2YgQnVnemlsbGEgd29yayB3ZWxsIGZvciBncm91cCBkZXZlbG9wbWVudCBiZWNhdXNlIHRoZXkgdHJhY2sgYnVncyBhbmQgY29kZQotICAgICAgICBjaGFuZ2VzLCBjYW4gYmUgdXNlZCB0byBjb21tdW5pY2F0ZSBjaGFuZ2VzIGFuZCBwcm9ibGVtcyB3aXRoIGRldmVsb3BlcnMsIGNhbiBiZSB1c2VkIHRvCi0gICAgICAgIHN1Ym1pdCBhbmQgcmV2aWV3IHBhdGNoZXMsIGFuZCBjYW4gYmUgdXNlZCB0byBtYW5hZ2UgcXVhbGl0eSBhc3N1cmFuY2UuCi0gICAgICAgIFRoZSBob21lIHBhZ2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mIEJ1Z3ppbGxhIGlzCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19CVUdaSUxMQV9VUkw7Jz4mWU9DVE9fQlVHWklMTEFfVVJMOzwvdWxpbms+LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBTb21ldGltZXMgaXQgaXMgaGVscGZ1bCB0byBzdWJtaXQsIGludmVzdGlnYXRlLCBvciB0cmFjayBhIGJ1ZyBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0IGl0c2VsZgotICAgICAgICBzdWNoIGFzIHdoZW4gZGlzY292ZXJpbmcgYW4gaXNzdWUgd2l0aCBzb21lIGNvbXBvbmVudCBvZiB0aGUgYnVpbGQgc3lzdGVtIHRoYXQgYWN0cyBjb250cmFyeQotICAgICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBvciB5b3VyIGV4cGVjdGF0aW9ucy4KLSAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBnZW5lcmFsIHByb2NlZHVyZSBmb3Igc3VibWl0dGluZyBhIG5ldyBidWcgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgQnVnemlsbGEuCi0gICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIGRlZmVjdCBtYW5hZ2VtZW50LCBidWcgdHJhY2tpbmcsIGFuZCBmZWF0dXJlIHJlcXVlc3QKLSAgICAgICAgcHJvY2Vzc2VzIGFsbCBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0aGUgWW9jdG8gUHJvamVjdCBCdWd6aWxsYSBvbiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+d2lraSBwYWdlPC91bGluaz4uCi0gICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BbHdheXMgdXNlIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mIEJ1Z3ppbGxhIHRvIHN1Ym1pdAotICAgICAgICAgICAgICAgIGEgYnVnLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldoZW4gc3VibWl0dGluZyBhIG5ldyBidWcsIGJlIHN1cmUgdG8gY2hvb3NlIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uLCBQcm9kdWN0LCBhbmQgQ29tcG9uZW50IGZvciB3aGljaCB0aGUgaXNzdWUgd2FzIGZvdW5kLgotICAgICAgICAgICAgICAgIERlZmVjdHMgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGZhbGwgaW50byBvbmUgb2Ygc2V2ZW4gY2xhc3NpZmljYXRpb25zOgotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgQ29tcG9uZW50cywgSW5mcmFzdHJ1Y3R1cmUsIEJ1aWxkIFN5c3RlbSAmYW1wOyBNZXRhZGF0YSwKLSAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uLCBRQS9UZXN0aW5nLCBSdW50aW1lIGFuZCBIYXJkd2FyZS4KLSAgICAgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIENsYXNzaWZpY2F0aW9ucyBicmVhayBkb3duIGludG8gbXVsdGlwbGUgUHJvZHVjdHMgYW5kLCBpbiBzb21lCi0gICAgICAgICAgICAgICAgY2FzZXMsIG11bHRpcGxlIENvbXBvbmVudHMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VXNlIHRoZSBidWcgZm9ybSB0byBjaG9vc2UgdGhlIGNvcnJlY3QgSGFyZHdhcmUgYW5kIEFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgIGZvciB3aGljaCB0aGUgYnVnIGFwcGxpZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5kaWNhdGUgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB5b3Ugd2VyZSB1c2luZyB3aGVuIHRoZSBpc3N1ZQotICAgICAgICAgICAgICAgIG9jY3VycmVkLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkJlIHN1cmUgdG8gaW5kaWNhdGUgdGhlIFNldmVyaXR5IG9mIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgU2V2ZXJpdHkgY29tbXVuaWNhdGVzIGhvdyB0aGUgYnVnIGltcGFjdGVkIHlvdXIgd29yay48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgdGhlIGFwcHJvcHJpYXRlICJEb2N1bWVudGF0aW9uIGNoYW5nZSIgaXRlbQotICAgICAgICAgICAgICAgIGZvciB0aGUgYnVnLgotICAgICAgICAgICAgICAgIEZpeGluZyBhIGJ1ZyBtYXkgb3IgbWF5IG5vdCBhZmZlY3QgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlByb3ZpZGUgYSBicmllZiBzdW1tYXJ5IG9mIHRoZSBpc3N1ZS4KLSAgICAgICAgICAgICAgICBUcnkgdG8gbGltaXQgeW91ciBzdW1tYXJ5IHRvIGp1c3QgYSBsaW5lIG9yIHR3byBhbmQgYmUgc3VyZSB0byBjYXB0dXJlIHRoZQotICAgICAgICAgICAgICAgIGVzc2VuY2Ugb2YgdGhlIGlzc3VlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgaXNzdWUuCi0gICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggZGV0YWlsIGFzIHlvdSBjYW4gYWJvdXQgdGhlIGNvbnRleHQsIGJlaGF2aW9yLCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoIHRoYXQgc3Vycm91bmRzIHRoZSBpc3N1ZS4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGV2ZW4gYXR0YWNoIHN1cHBvcnRpbmcgZmlsZXMgZm9yIG91dHB1dCBmcm9tIGxvZ3MgYnkKLSAgICAgICAgICAgICAgICB1c2luZyB0aGUgIkFkZCBhbiBhdHRhY2htZW50IiBidXR0b24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QmUgc3VyZSB0byBjb3B5IHRoZSBhcHByb3ByaWF0ZSBwZW9wbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgIkNDIExpc3QiIGZvciB0aGUgYnVnLgotICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IGZpbmRpbmcgb3V0IHdobyBpcyByZXNwb25zaWJsZQotICAgICAgICAgICAgICAgIGZvciBjb2RlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlN1Ym1pdCB0aGUgYnVnIGJ5IGNsaWNraW5nIHRoZSAiU3VibWl0IEJ1ZyIgYnV0dG9uLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAorPHNlY3Rpb24gaWQ9J3N1Ym1pdHRpbmctYS1kZWZlY3QtYWdhaW5zdC10aGUteW9jdG8tcHJvamVjdCc+CisgICAgPHRpdGxlPlN1Ym1pdHRpbmcgYSBEZWZlY3QgQWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVXNlIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuYnVnemlsbGEub3JnL2Fib3V0Lyc+QnVnemlsbGE8L3VsaW5rPgorICAgICAgICB0byBzdWJtaXQgYSBkZWZlY3QgKGJ1ZykgYWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBCdWd6aWxsYSBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtYnVndHJhY2tlcic+WW9jdG8gUHJvamVjdCBCdWd6aWxsYTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgIEZvciBtb3JlIGRldGFpbCBvbiBhbnkgb2YgdGhlIGZvbGxvd2luZyBzdGVwcywgc2VlIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWd6aWxsYV9Db25maWd1cmF0aW9uX2FuZF9CdWdfVHJhY2tpbmcnPkJ1Z3ppbGxhIHdpa2kgcGFnZTwvdWxpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0ZXBzIHRvIHN1Ym1pdCBhIGJ1ZyIKKworICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgT3BlbiB0aGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19CVUdaSUxMQV9VUkw7Jz5CdWd6aWxsYTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIENsaWNrICJGaWxlIGEgQnVnIiB0byBlbnRlciBhIG5ldyBidWcuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSBhcHByb3ByaWF0ZSAiQ2xhc3NpZmljYXRpb24iLCAiUHJvZHVjdCIsIGFuZAorICAgICAgICAgICAgICAgICJDb21wb25lbnQiIGZvciB3aGljaCB0aGUgYnVnIHdhcyBmb3VuZC4KKyAgICAgICAgICAgICAgICBCdWdzIGZvciB0aGUgWW9jdG8gUHJvamVjdCBmYWxsIGludG8gb25lIG9mIHNldmVyYWwKKyAgICAgICAgICAgICAgICBjbGFzc2lmaWNhdGlvbnMsIHdoaWNoIGluIHR1cm4gYnJlYWsgZG93biBpbnRvIHNldmVyYWwKKyAgICAgICAgICAgICAgICBwcm9kdWN0cyBhbmQgY29tcG9uZW50cy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIGEgYnVnIGFnYWluc3QgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciwgeW91IHdvdWxkIGNob29zZQorICAgICAgICAgICAgICAgICJCdWlsZCBTeXN0ZW0sIE1ldGFkYXRhICZhbXA7IFJ1bnRpbWUiLCAiQlNQcyIsIGFuZAorICAgICAgICAgICAgICAgICJic3BzLW1ldGEtaW50ZWwiLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAiVmVyc2lvbiIgb2YgdGhlIFlvY3RvIFByb2plY3QgZm9yIHdoaWNoIHlvdSBmb3VuZAorICAgICAgICAgICAgICAgIHRoZSBidWcgKGUuZy4gJkRJU1RSTzspLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIERldGVybWluZSBhbmQgc2VsZWN0IHRoZSAiU2V2ZXJpdHkiIG9mIHRoZSBidWcuCisgICAgICAgICAgICAgICAgVGhlIHNldmVyaXR5IGluZGljYXRlcyBob3cgdGhlIGJ1ZyBpbXBhY3RlZCB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAiSGFyZHdhcmUiIHRoYXQgdGhlIGJ1ZyBpbXBhY3RzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIENob29zZSB0aGUgIkFyY2hpdGVjdHVyZSIgdGhhdCB0aGUgYnVnIGltcGFjdHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ2hvb3NlIGEgIkRvY3VtZW50YXRpb24gY2hhbmdlIiBpdGVtIGZvciB0aGUgYnVnLgorICAgICAgICAgICAgICAgIEZpeGluZyBhIGJ1ZyBtaWdodCBvciBtaWdodCBub3QgYWZmZWN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVuc3VyZSBvZiB0aGUgaW1wYWN0IHRvIHRoZSBkb2N1bWVudGF0aW9uLCBzZWxlY3QKKyAgICAgICAgICAgICAgICAiRG9uJ3QgS25vdyIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGJyaWVmICJTdW1tYXJ5IiBvZiB0aGUgYnVnLgorICAgICAgICAgICAgICAgIFRyeSB0byBsaW1pdCB5b3VyIHN1bW1hcnkgdG8ganVzdCBhIGxpbmUgb3IgdHdvIGFuZCBiZSBzdXJlCisgICAgICAgICAgICAgICAgdG8gY2FwdHVyZSB0aGUgZXNzZW5jZSBvZiB0aGUgYnVnLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBkZXRhaWxlZCAiRGVzY3JpcHRpb24iIG9mIHRoZSBidWcuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggZGV0YWlsIGFzIHlvdSBjYW4gYWJvdXQgdGhlIGNvbnRleHQsCisgICAgICAgICAgICAgICAgYmVoYXZpb3IsIG91dHB1dCwgYW5kIHNvIGZvcnRoIHRoYXQgc3Vycm91bmRzIHRoZSBidWcuCisgICAgICAgICAgICAgICAgWW91IGNhbiBldmVuIGF0dGFjaCBzdXBwb3J0aW5nIGZpbGVzIGZvciBvdXRwdXQgZnJvbSBsb2dzIGJ5CisgICAgICAgICAgICAgICAgdXNpbmcgdGhlICJBZGQgYW4gYXR0YWNobWVudCIgYnV0dG9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiU3VibWl0IEJ1ZyIgYnV0dG9uIHN1Ym1pdCB0aGUgYnVnLgorICAgICAgICAgICAgICAgIEEgbmV3IEJ1Z3ppbGxhIG51bWJlciBpcyBhc3NpZ25lZCB0byB0aGUgYnVnIGFuZCB0aGUgZGVmZWN0CisgICAgICAgICAgICAgICAgaXMgbG9nZ2VkIGluIHRoZSBidWcgdHJhY2tpbmcgc3lzdGVtLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICBPbmNlIHlvdSBmaWxlIGEgYnVnLCB0aGUgYnVnIGlzIHByb2Nlc3NlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBCdWcKKyAgICAgICAgVHJpYWdlIFRlYW0gYW5kIGZ1cnRoZXIgZGV0YWlscyBjb25jZXJuaW5nIHRoZSBidWcgYXJlIGFzc2lnbmVkCisgICAgICAgIChlLmcuIHByaW9yaXR5IGFuZCBvd25lcikuCisgICAgICAgIFlvdSBhcmUgdGhlICJTdWJtaXR0ZXIiIG9mIHRoZSBidWcgYW5kIGFueSBmdXJ0aGVyIGNhdGVnb3JpemF0aW9uLAorICAgICAgICBwcm9ncmVzcywgb3IgY29tbWVudHMgb24gdGhlIGJ1ZyByZXN1bHQgaW4gQnVnemlsbGEgc2VuZGluZyB5b3UgYW4KKyAgICAgICAgYXV0b21hdGVkIGVtYWlsIGNvbmNlcm5pbmcgdGhlIHBhcnRpY3VsYXIgY2hhbmdlIG9yIHByb2dyZXNzIHRvIHRoZQorICAgICAgICBidWcuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCiA8c2VjdGlvbiBpZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+Ci0gICAgPHRpdGxlPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L3RpdGxlPgorICAgIDx0aXRsZT5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogICAgIDxwYXJhPgogICAgICAgICBDb250cmlidXRpb25zIHRvIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBPcGVuRW1iZWRkZWQgYXJlIHZlcnkgd2VsY29tZS4KLSAgICAgICAgQmVjYXVzZSB0aGUgc3lzdGVtIGlzIGV4dHJlbWVseSBjb25maWd1cmFibGUgYW5kIGZsZXhpYmxlLCB3ZSByZWNvZ25pemUgdGhhdCBkZXZlbG9wZXJzCi0gICAgICAgIHdpbGwgd2FudCB0byBleHRlbmQsIGNvbmZpZ3VyZSBvciBvcHRpbWl6ZSBpdCBmb3IgdGhlaXIgc3BlY2lmaWMgdXNlcy4KLSAgICAgICAgWW91IHNob3VsZCBzZW5kIHBhdGNoZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBzbyB0aGF0IHRoZXkKLSAgICAgICAgY2FuIGJlIHJldmlld2VkIGFuZCBtZXJnZWQgYnkgdGhlIGFwcHJvcHJpYXRlIG1haW50YWluZXIuCisgICAgICAgIEJlY2F1c2UgdGhlIHN5c3RlbSBpcyBleHRyZW1lbHkgY29uZmlndXJhYmxlIGFuZCBmbGV4aWJsZSwgd2UgcmVjb2duaXplCisgICAgICAgIHRoYXQgZGV2ZWxvcGVycyB3aWxsIHdhbnQgdG8gZXh0ZW5kLCBjb25maWd1cmUgb3Igb3B0aW1pemUgaXQgZm9yCisgICAgICAgIHRoZWlyIHNwZWNpZmljIHVzZXMuCiAgICAgPC9wYXJhPgogCi0gICAgPHNlY3Rpb24gaWQ9J3N1Ym1pdC1jaGFuZ2Utb3ZlcnZpZXcnPgotICAgICAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIGEgbWFpbGluZyBsaXN0IGFuZCBhIHBhdGNoLWJhc2VkIHdvcmtmbG93CisgICAgICAgIHRoYXQgaXMgc2ltaWxhciB0byB0aGUgTGludXgga2VybmVsIGJ1dCBjb250YWlucyBpbXBvcnRhbnQKKyAgICAgICAgZGlmZmVyZW5jZXMuCisgICAgICAgIEluIGdlbmVyYWwsIGEgbWFpbGluZyBsaXN0IGV4aXN0cyB0aHJvdWdoIHdoaWNoIHlvdSBjYW4gc3VibWl0CisgICAgICAgIHBhdGNoZXMuCisgICAgICAgIFlvdSBzaG91bGQgc2VuZCBwYXRjaGVzIHRvIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nIGxpc3Qgc28gdGhhdCB0aGV5CisgICAgICAgIGNhbiBiZSByZXZpZXdlZCBhbmQgbWVyZ2VkIGJ5IHRoZSBhcHByb3ByaWF0ZSBtYWludGFpbmVyLgorICAgICAgICBUaGUgc3BlY2lmaWMgbWFpbGluZyBsaXN0IHlvdSBuZWVkIHRvIHVzZSBkZXBlbmRzIG9uIHRoZQorICAgICAgICBsb2NhdGlvbiBvZiB0aGUgY29kZSB5b3UgYXJlIGNoYW5naW5nLgorICAgICAgICBFYWNoIGNvbXBvbmVudCAoZS5nLiBsYXllcikgc2hvdWxkIGhhdmUgYQorICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSB0aGF0IGluZGljYXRlcyB3aGVyZSB0byBzZW5kCisgICAgICAgIHRoZSBjaGFuZ2VzIGFuZCB3aGljaCBwcm9jZXNzIHRvIGZvbGxvdy4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIGEgbWFpbGluZyBsaXN0IGFuZCBwYXRjaC1iYXNlZCB3b3JrZmxvdwotICAgICAgICAgICAgdGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBMaW51eCBrZXJuZWwgYnV0IGNvbnRhaW5zIGltcG9ydGFudAotICAgICAgICAgICAgZGlmZmVyZW5jZXMuCi0gICAgICAgICAgICBJbiBnZW5lcmFsLCBhIG1haWxpbmcgbGlzdCBleGlzdHMgdGhyb3VnaCB3aGljaCB5b3UgY2FuIHN1Ym1pdAotICAgICAgICAgICAgcGF0Y2hlcy4KLSAgICAgICAgICAgIFRoZSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QgeW91IG5lZWQgdG8gdXNlIGRlcGVuZHMgb24gdGhlCi0gICAgICAgICAgICBsb2NhdGlvbiBvZiB0aGUgY29kZSB5b3UgYXJlIGNoYW5naW5nLgotICAgICAgICAgICAgRWFjaCBjb21wb25lbnQgKGUuZy4gbGF5ZXIpIHNob3VsZCBoYXZlIGEKLSAgICAgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgaW5kaWNhdGVzIHdoZXJlIHRvIHNlbmQKLSAgICAgICAgICAgIHRoZSBjaGFuZ2VzIGFuZCB3aGljaCBwcm9jZXNzIHRvIGZvbGxvdy4KLSAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIHNlbmQgdGhlIHBhdGNoIHRvIHRoZSBtYWlsaW5nIGxpc3QgdXNpbmcgd2hpY2hldmVyIGFwcHJvYWNoCisgICAgICAgIHlvdSBmZWVsIGNvbWZvcnRhYmxlIHdpdGggdG8gZ2VuZXJhdGUgdGhlIHBhdGNoLgorICAgICAgICBPbmNlIHNlbnQsIHRoZSBwYXRjaCBpcyB1c3VhbGx5IHJldmlld2VkIGJ5IHRoZSBjb21tdW5pdHkgYXQgbGFyZ2UuCisgICAgICAgIElmIHNvbWVib2R5IGhhcyBjb25jZXJucyB3aXRoIHRoZSBwYXRjaCwgdGhleSB3aWxsIHVzdWFsbHkgdm9pY2UKKyAgICAgICAgdGhlaXIgY29uY2VybiBvdmVyIHRoZSBtYWlsaW5nIGxpc3QuCisgICAgICAgIElmIGEgcGF0Y2ggZG9lcyBub3QgcmVjZWl2ZSBhbnkgbmVnYXRpdmUgcmV2aWV3cywgdGhlIG1haW50YWluZXIgb2YKKyAgICAgICAgdGhlIGFmZmVjdGVkIGxheWVyIHR5cGljYWxseSB0YWtlcyB0aGUgcGF0Y2gsIHRlc3RzIGl0LCBhbmQgdGhlbgorICAgICAgICBiYXNlZCBvbiBzdWNjZXNzZnVsIHRlc3RpbmcsIG1lcmdlcyB0aGUgcGF0Y2guCisgICAgPC9wYXJhPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBzZW5kIHRoZSBwYXRjaCB0byB0aGUgbWFpbGluZyBsaXN0IHVzaW5nIHdoaWNoZXZlciBhcHByb2FjaAotICAgICAgICAgICAgeW91IGZlZWwgY29tZm9ydGFibGUgd2l0aCB0byBnZW5lcmF0ZSB0aGUgcGF0Y2guCi0gICAgICAgICAgICBPbmNlIHNlbnQsIHRoZSBwYXRjaCBpcyB1c3VhbGx5IHJldmlld2VkIGJ5IHRoZSBjb21tdW5pdHkgYXQgbGFyZ2UuCi0gICAgICAgICAgICBJZiBzb21lYm9keSBoYXMgY29uY2VybnMgd2l0aCB0aGUgcGF0Y2gsIHRoZXkgd2lsbCB1c3VhbGx5IHZvaWNlCi0gICAgICAgICAgICB0aGVpciBjb25jZXJuIG92ZXIgdGhlIG1haWxpbmcgbGlzdC4KLSAgICAgICAgICAgIElmIGEgcGF0Y2ggZG9lcyBub3QgcmVjZWl2ZSBhbnkgbmVnYXRpdmUgcmV2aWV3cywgdGhlIG1haW50YWluZXIgb2YKLSAgICAgICAgICAgIHRoZSBhZmZlY3RlZCBsYXllciB0eXBpY2FsbHkgdGFrZXMgdGhlIHBhdGNoLCB0ZXN0cyBpdCwgYW5kIHRoZW4KLSAgICAgICAgICAgIGJhc2VkIG9uIHN1Y2Nlc3NmdWwgdGVzdGluZywgbWVyZ2VzIHRoZSBwYXRjaC4KLSAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhIGlkPSdmaWd1cmluZy1vdXQtdGhlLW1haWxpbmctbGlzdC10by11c2UnPgorICAgICAgICBUaGUgInBva3kiIHJlcG9zaXRvcnksIHdoaWNoIGlzIHRoZSBZb2N0byBQcm9qZWN0J3MgcmVmZXJlbmNlIGJ1aWxkCisgICAgICAgIGVudmlyb25tZW50LCBpcyBhIGh5YnJpZCByZXBvc2l0b3J5IHRoYXQgY29udGFpbnMgc2V2ZXJhbAorICAgICAgICBpbmRpdmlkdWFsIHBpZWNlcyAoZS5nLiBCaXRCYWtlLCBNZXRhZGF0YSwgZG9jdW1lbnRhdGlvbiwKKyAgICAgICAgYW5kIHNvIGZvcnRoKSBidWlsdCB1c2luZyB0aGUgY29tYm8tbGF5ZXIgdG9vbC4KKyAgICAgICAgVGhlIHVwc3RyZWFtIGxvY2F0aW9uIHVzZWQgZm9yIHN1Ym1pdHRpbmcgY2hhbmdlcyB2YXJpZXMgYnkKKyAgICAgICAgY29tcG9uZW50OgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db3JlIE1ldGFkYXRhOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgU2VuZCB5b3VyIHBhdGNoIHRvIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4vbGlzdGluZm8vb3BlbmVtYmVkZGVkLWNvcmUnPm9wZW5lbWJlZGRlZC1jb3JlPC91bGluaz4KKyAgICAgICAgICAgICAgICBtYWlsaW5nIGxpc3QuICBGb3IgZXhhbXBsZSwgYSBjaGFuZ2UgdG8gYW55dGhpbmcgdW5kZXIKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgc2hvdWxkIGJlIHNlbnQKKyAgICAgICAgICAgICAgICB0byB0aGlzIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qml0QmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZvciBjaGFuZ2VzIHRvIEJpdEJha2UgKGkuZS4gYW55dGhpbmcgdW5kZXIgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBkaXJlY3RvcnkpLCBzZW5kIHlvdXIgcGF0Y2gKKyAgICAgICAgICAgICAgICB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JpdGJha2UtZGV2ZWwnPmJpdGJha2UtZGV2ZWw8L3VsaW5rPgorICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Im1ldGEtKiIgdHJlZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGVzZSB0cmVlcyBjb250YWluIE1ldGFkYXRhLgorICAgICAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvbGlzdGluZm8vcG9reSc+cG9reTwvdWxpbms+CisgICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTcGVjaWZpYyB0byBPcGVuRW1iZWRkZWQtQ29yZSwgdHdvIGNvbW1vbmx5IHVzZWQgdGVzdGluZyB0cmVlcwotICAgICAgICAgICAgZXhpc3Q6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJyb3NzL211dCIgYnJhbmNoOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSAibXV0IiAobWFzdGVyLXVuZGVyLXRlc3QpIHRyZWUKLSAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSA8ZmlsZW5hbWU+cG9reS1jb250cmliPC9maWxlbmFtZT4gcmVwb3NpdG9yeQotICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Zb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXM8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Im1hc3Rlci1uZXh0IiBicmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBicmFuY2ggaXMgcGFydCBvZiB0aGUgbWFpbgotICAgICAgICAgICAgICAgICAgICAicG9reSIgcmVwb3NpdG9yeSBpbiB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgTWFpbnRhaW5lcnMgdXNlIHRoZXNlIGJyYW5jaGVzIHRvIHRlc3Qgc3VibWlzc2lvbnMgcHJpb3IgdG8gbWVyZ2luZwotICAgICAgICAgICAgcGF0Y2hlcy4KLSAgICAgICAgICAgIFRodXMsIHlvdSBjYW4gZ2V0IGFuIGlkZWEgb2YgdGhlIHN0YXR1cyBvZiBhIHBhdGNoIGJhc2VkIG9uCi0gICAgICAgICAgICB3aGV0aGVyIHRoZSBwYXRjaCBoYXMgYmVlbiBtZXJnZWQgaW50byBvbmUgb2YgdGhlc2UgYnJhbmNoZXMuCi0gICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIGNoYW5nZXMgdG8gb3RoZXIgbGF5ZXJzIGhvc3RlZCBpbiB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UKKyAgICAgICAgcmVwb3NpdG9yaWVzIChpLmUuIDxmaWxlbmFtZT55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4pLCB0b29scywKKyAgICAgICAgYW5kIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24sIHVzZSB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL2xpc3RpbmZvL3lvY3RvJz5Zb2N0byBQcm9qZWN0PC91bGluaz4KKyAgICAgICAgZ2VuZXJhbCBtYWlsaW5nIGxpc3QuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgU29tZXRpbWVzIGEgbGF5ZXIncyBkb2N1bWVudGF0aW9uIHNwZWNpZmllcyB0byB1c2UgYQorICAgICAgICAgICAgcGFydGljdWxhciBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICBJZiBzbywgdXNlIHRoYXQgbGlzdC4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICBGb3IgYWRkaXRpb25hbCByZWNpcGVzIHRoYXQgZG8gbm90IGZpdCBpbnRvIHRoZSBjb3JlIE1ldGFkYXRhLCB5b3UKKyAgICAgICAgc2hvdWxkIGRldGVybWluZSB3aGljaCBsYXllciB0aGUgcmVjaXBlIHNob3VsZCBnbyBpbnRvIGFuZCBzdWJtaXQKKyAgICAgICAgdGhlIGNoYW5nZSBpbiB0aGUgbWFubmVyIHJlY29tbWVuZGVkIGJ5IHRoZSBkb2N1bWVudGF0aW9uIChlLmcuCisgICAgICAgIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSkgc3VwcGxpZWQgd2l0aCB0aGUgbGF5ZXIuCisgICAgICAgIElmIGluIGRvdWJ0LCBwbGVhc2UgYXNrIG9uIHRoZSBZb2N0byBnZW5lcmFsIG1haWxpbmcgbGlzdCBvciBvbgorICAgICAgICB0aGUgb3BlbmVtYmVkZGVkLWRldmVsIG1haWxpbmcgbGlzdC4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIHN5c3RlbSBpcyBpbXBlcmZlY3QgYW5kIHBhdGNoZXMgY2FuIHNvbWV0aW1lcyBnZXQgbG9zdCBpbiB0aGUKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBhbHNvIHB1c2ggYSBjaGFuZ2UgdXBzdHJlYW0gYW5kIHJlcXVlc3QgYSBtYWludGFpbmVyIHRvCisgICAgICAgIHB1bGwgdGhlIGNoYW5nZSBpbnRvIHRoZSBjb21wb25lbnQncyB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICBZb3UgZG8gdGhpcyBieSBwdXNoaW5nIHRvIGEgY29udHJpYnV0aW9uIHJlcG9zaXRvcnkgdGhhdCBpcyB1cHN0cmVhbS4KKyAgICAgICAgU2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjd29ya2Zsb3dzJz5Xb3JrZmxvd3M8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBhZGRpdGlvbmFsCisgICAgICAgIGNvbmNlcHRzIG9uIHdvcmtpbmcgaW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFR3byBjb21tb25seSB1c2VkIHRlc3RpbmcgcmVwb3NpdG9yaWVzIGV4aXN0IGZvcgorICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+InJvc3MvbXV0IiBicmFuY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgIm11dCIgKG1hc3Rlci11bmRlci10ZXN0KSB0cmVlCisgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSA8ZmlsZW5hbWU+cG9reS1jb250cmliPC9maWxlbmFtZT4gcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+WW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJtYXN0ZXItbmV4dCIgYnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBicmFuY2ggaXMgcGFydCBvZiB0aGUgbWFpbgorICAgICAgICAgICAgICAgICJwb2t5IiByZXBvc2l0b3J5IGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICBNYWludGFpbmVycyB1c2UgdGhlc2UgYnJhbmNoZXMgdG8gdGVzdCBzdWJtaXNzaW9ucyBwcmlvciB0byBtZXJnaW5nCisgICAgICAgIHBhdGNoZXMuCisgICAgICAgIFRodXMsIHlvdSBjYW4gZ2V0IGFuIGlkZWEgb2YgdGhlIHN0YXR1cyBvZiBhIHBhdGNoIGJhc2VkIG9uCisgICAgICAgIHdoZXRoZXIgdGhlIHBhdGNoIGhhcyBiZWVuIG1lcmdlZCBpbnRvIG9uZSBvZiB0aGVzZSBicmFuY2hlcy4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUaGlzIHN5c3RlbSBpcyBpbXBlcmZlY3QgYW5kIGNoYW5nZXMgY2FuIHNvbWV0aW1lcyBnZXQgbG9zdCBpbiB0aGUKICAgICAgICAgICAgIGZsb3cuCi0gICAgICAgICAgICBBc2tpbmcgYWJvdXQgdGhlIHN0YXR1cyBvZiBhIHBhdGNoIGlzIHJlYXNvbmFibGUgaWYgdGhlIHBhdGNoCi0gICAgICAgICAgICBoYXMgYmVlbiBpZGxlIGZvciBhIHdoaWxlIHdpdGggbm8gZmVlZGJhY2suCisgICAgICAgICAgICBBc2tpbmcgYWJvdXQgdGhlIHN0YXR1cyBvZiBhIHBhdGNoIG9yIGNoYW5nZSBpcyByZWFzb25hYmxlIGlmIHRoZQorICAgICAgICAgICAgY2hhbmdlIGhhcyBiZWVuIGlkbGUgZm9yIGEgd2hpbGUgd2l0aCBubyBmZWVkYmFjay4KICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGRvZXMgaGF2ZSBwbGFucyB0byB1c2UKICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhdGNod29ya18oc29mdHdhcmUpJz5QYXRjaHdvcms8L3VsaW5rPgogICAgICAgICAgICAgdG8gdHJhY2sgdGhlIHN0YXR1cyBvZiBwYXRjaGVzIGFuZCBhbHNvIHRvIGF1dG9tYXRpY2FsbHkgcHJldmlldwogICAgICAgICAgICAgcGF0Y2hlcy4KLSAgICAgICAgPC9wYXJhPgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcHJvdmlkZSBwcm9jZWR1cmVzIGZvciBzdWJtaXR0aW5nIGEgY2hhbmdlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdwdXNoaW5nLWEtY2hhbmdlLXVwc3RyZWFtJz4KKyAgICAgICAgPHRpdGxlPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwcm92aWRlIGdlbmVyYWwgaW5zdHJ1Y3Rpb25zIGZvciBib3RoCi0gICAgICAgICAgICBwdXNoaW5nIGNoYW5nZXMgdXBzdHJlYW0gYW5kIGZvciBzdWJtaXR0aW5nIGNoYW5nZXMgYXMgcGF0Y2hlcy4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdzdWJtaXQtY2hhbmdlLXN1Ym1pc3Npb25zLXRvLXBva3knPgotICAgICAgICA8dGl0bGU+U3VibWlzc2lvbnMgdG8gUG9reTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgInBva3kiIHJlcG9zaXRvcnksIHdoaWNoIGlzIHRoZSBZb2N0byBQcm9qZWN0J3MgcmVmZXJlbmNlIGJ1aWxkCi0gICAgICAgICAgICBlbnZpcm9ubWVudCwgaXMgYSBoeWJyaWQgcmVwb3NpdG9yeSB0aGF0IGNvbnRhaW5zIHNldmVyYWwKLSAgICAgICAgICAgIGluZGl2aWR1YWwgcGllY2VzIChlLmcuIEJpdEJha2UsIE9wZW5FbWJlZGRlZC1Db3JlLCBtZXRhLXlvY3RvLAotICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiwgYW5kIHNvIGZvcnRoKSBidWlsdCB1c2luZyB0aGUgY29tYm8tbGF5ZXIgdG9vbC4KLSAgICAgICAgICAgIFRoZSB1cHN0cmVhbSBsb2NhdGlvbiB1c2VkIGZvciBzdWJtaXR0aW5nIGNoYW5nZXMgdmFyaWVzIGJ5Ci0gICAgICAgICAgICBjb21wb25lbnQ6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvcmUgTWV0YWRhdGE6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgU2VuZCB5b3VyIHBhdGNoIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL29wZW5lbWJlZGRlZC1jb3JlJz5vcGVuZW1iZWRkZWQtY29yZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4gIEZvciBleGFtcGxlLCBhIGNoYW5nZSB0byBhbnl0aGluZyB1bmRlcgotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIHNob3VsZCBiZSBzZW50Ci0gICAgICAgICAgICAgICAgICAgIHRvIHRoaXMgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBjaGFuZ2VzIHRvIEJpdEJha2UgKGkuZS4gYW55dGhpbmcgdW5kZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gZGlyZWN0b3J5KSwgc2VuZCB5b3VyIHBhdGNoCi0gICAgICAgICAgICAgICAgICAgIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JpdGJha2UtZGV2ZWwnPmJpdGJha2UtZGV2ZWw8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJtZXRhLXlvY3RvLWJzcCIgYW5kICJtZXRhLXBva3kiIHRyZWVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZXNlIHRyZWVzIGFyZQotICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSAibWV0YS15b2N0byIgcmVwb3NpdG9yeSBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9saXN0aW5mby9wb2t5Jz5wb2t5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3N1Ym1pdC1jaGFuZ2Utc3VibWlzc2lvbnMtdG8tb3RoZXItbGF5ZXJzJz4KLSAgICAgICAgPHRpdGxlPlN1Ym1pc3Npb25zIHRvIE90aGVyIExheWVyczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgY2hhbmdlcyB0byBvdGhlciBsYXllcnMgaG9zdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZQotICAgICAgICAgICAgcmVwb3NpdG9yaWVzIChpLmUuIDxmaWxlbmFtZT55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4pLCB0b29scywKLSAgICAgICAgICAgIGFuZCB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uLCB1c2UgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvbGlzdGluZm8veW9jdG8nPllvY3RvIFByb2plY3Q8L3VsaW5rPgotICAgICAgICAgICAgZ2VuZXJhbCBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICBGb2xsb3cgdGhpcyBwcm9jZWR1cmUgdG8gcHVzaCBhIGNoYW5nZSB0byBhbiB1cHN0cmVhbSAiY29udHJpYiIKKyAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5OgogICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgU29tZXRpbWVzIGEgbGF5ZXIncyBkb2N1bWVudGF0aW9uIHNwZWNpZmllcyB0byB1c2UgYQotICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgICAgIElmIHNvLCB1c2UgdGhhdCBsaXN0LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBnZW5lcmFsIEdpdCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcHVzaCBhIGNoYW5nZQorICAgICAgICAgICAgICAgIHVwc3RyZWFtIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9ib29rL2VuL3YyL0Rpc3RyaWJ1dGVkLUdpdC1EaXN0cmlidXRlZC1Xb3JrZmxvd3MnPkdpdCBDb21tdW5pdHkgQm9vazwvdWxpbms+LgogICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgcmVjaXBlcyB0aGF0IGRvIG5vdCBmaXQgaW50byB0aGUgY29yZSBNZXRhZGF0YSwgeW91Ci0gICAgICAgICAgICBzaG91bGQgZGV0ZXJtaW5lIHdoaWNoIGxheWVyIHRoZSByZWNpcGUgc2hvdWxkIGdvIGludG8gYW5kIHN1Ym1pdAotICAgICAgICAgICAgdGhlIGNoYW5nZSBpbiB0aGUgbWFubmVyIHJlY29tbWVuZGVkIGJ5IHRoZSBkb2N1bWVudGF0aW9uIChlLmcuCi0gICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUpIHN1cHBsaWVkIHdpdGggdGhlIGxheWVyLgotICAgICAgICAgICAgSWYgaW4gZG91YnQsIHBsZWFzZSBhc2sgb24gdGhlIFlvY3RvIGdlbmVyYWwgbWFpbGluZyBsaXN0IG9yIG9uCi0gICAgICAgICAgICB0aGUgb3BlbmVtYmVkZGVkLWRldmVsIG1haWxpbmcgbGlzdC4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdzdWJtaXQtY2hhbmdlLXBhdGNoLXN1Ym1pc3Npb24tZGV0YWlscyc+Ci0gICAgICAgIDx0aXRsZT5QYXRjaCBTdWJtaXNzaW9uIERldGFpbHM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiBzdWJtaXR0aW5nIGFueSBjaGFuZ2UsIHlvdSBjYW4gY2hlY2sgd2hvIHlvdSBzaG91bGQgYmUKLSAgICAgICAgICAgIG5vdGlmeWluZy4KLSAgICAgICAgICAgIFVzZSBlaXRoZXIgb2YgdGhlc2UgbWV0aG9kcyB0byBmaW5kIG91dDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFpbnRlbmFuY2UgRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZSA8ZmlsZW5hbWU+bWFpbnRhaW5lcnMuaW5jPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlPC9maWxlbmFtZT4sIHRvCi0gICAgICAgICAgICAgICAgICAgIHNlZSB3aG8gaXMgcmVzcG9uc2libGUgZm9yIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFlvdXIgQ2hhbmdlcyBMb2NhbGx5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE1ha2UgeW91ciBjaGFuZ2VzIGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgbWFrZSBzbWFsbCwgY29udHJvbGxlZCwgaXNvbGF0ZWQgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgS2VlcGluZyBjaGFuZ2VzIHNtYWxsIGFuZCBpc29sYXRlZCBhaWRzIHJldmlldywKKyAgICAgICAgICAgICAgICAgICAgbWFrZXMgbWVyZ2luZy9yZWJhc2luZyBlYXNpZXIgYW5kIGtlZXBzIHRoZSBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgaGlzdG9yeSBjbGVhbiBzaG91bGQgYW55b25lIG5lZWQgdG8gcmVmZXIgdG8gaXQgaW4KKyAgICAgICAgICAgICAgICAgICAgZnV0dXJlLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWFyY2ggYnkgRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBVc2luZyA8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4sIHlvdSBjYW4gZW50ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjb21tYW5kIHRvIGJyaW5nIHVwIGEgc2hvcnQgbGlzdCBvZiBhbGwgY29tbWl0cwotICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IGEgc3BlY2lmaWMgZmlsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBnaXQgc2hvcnRsb2cgLS0gPHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBKdXN0IHByb3ZpZGUgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZm9yIHdoaWNoIHlvdSBhcmUgaW50ZXJlc3RlZC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIHJldHVybmVkIGlzIG5vdCBvcmRlcmVkIGJ5IGhpc3RvcnkgYnV0IGRvZXMKLSAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBhIGxpc3Qgb2YgYWxsIGNvbW1pdHRlcnMgZ3JvdXBlZCBieSBuYW1lLgotICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSBsaXN0LCB5b3UgY2FuIHNlZSB3aG8gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBidWxrIG9mCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjaGFuZ2VzIGFnYWluc3QgdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdGFnZSBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU3RhZ2UgeW91ciBjaGFuZ2VzIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgb24gZWFjaCBmaWxlIHlvdSBjaGFuZ2VkLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgYSBsaXN0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGFuZCByZWxhdGVkIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgbGlzdHM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiB5b3Ugc2VuZCBhIHBhdGNoLCBiZSBzdXJlIHRvIGluY2x1ZGUgYSAiU2lnbmVkLW9mZi1ieToiCi0gICAgICAgICAgICBsaW5lIGluIHRoZSBzYW1lIHN0eWxlIGFzIHJlcXVpcmVkIGJ5IHRoZSBMaW51eCBrZXJuZWwuCi0gICAgICAgICAgICBBZGRpbmcgdGhpcyBsaW5lIHNpZ25pZmllcyB0aGF0IHlvdSwgdGhlIHN1Ym1pdHRlciwgaGF2ZSBhZ3JlZWQKLSAgICAgICAgICAgIHRvIHRoZSBEZXZlbG9wZXIncyBDZXJ0aWZpY2F0ZSBvZiBPcmlnaW4gMS4xIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdtYWtpbmctc3VyZS15b3UtaGF2ZS1jb3JyZWN0LWNvbW1pdC1pbmZvcm1hdGlvbic+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21taXQgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbW1pdCB0aGUgY2hhbmdlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNvbW1pdDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIE1ha2Ugc3VyZSB5b3VyIGNvbW1pdCBpbmZvcm1hdGlvbiBmb2xsb3dzIHN0YW5kYXJkcyBieQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlc2UgYWNjZXB0ZWQgY29udmVudGlvbnM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbmNsdWRlIGEgIlNpZ25lZC1vZmYtYnk6IiBsaW5lIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgc3R5bGUgYXMgcmVxdWlyZWQgYnkgdGhlIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpbmcgdGhpcyBsaW5lIHNpZ25pZmllcyB0aGF0IHlvdSwgdGhlIHN1Ym1pdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGFncmVlZCB0byB0aGUgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW4gMS4xIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBEZXZlbG9wZXIncyBDZXJ0aWZpY2F0ZSBvZiBPcmlnaW4gMS4xCiAKICAgICAgQnkgbWFraW5nIGEgY29udHJpYnV0aW9uIHRvIHRoaXMgcHJvamVjdCwgSSBjZXJ0aWZ5IHRoYXQ6CkBAIC0xNTk1LDEyMSArNjU1LDE4MyBAQAogICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gSSBzdWJtaXQgd2l0aCBpdCwgaW5jbHVkaW5nIG15IHNpZ24tb2ZmKSBpcwogICAgICAgICAgbWFpbnRhaW5lZCBpbmRlZmluaXRlbHkgYW5kIG1heSBiZSByZWRpc3RyaWJ1dGVkIGNvbnNpc3RlbnQgd2l0aAogICAgICAgICAgdGhpcyBwcm9qZWN0IG9yIHRoZSBvcGVuIHNvdXJjZSBsaWNlbnNlKHMpIGludm9sdmVkLgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBhIGNvbGxhYm9yYXRpdmUgZW52aXJvbm1lbnQsIGl0IGlzIG5lY2Vzc2FyeSB0byBoYXZlIHNvbWUgc29ydAotICAgICAgICAgICAgb2Ygc3RhbmRhcmQgb3IgbWV0aG9kIHRocm91Z2ggd2hpY2ggeW91IHN1Ym1pdCBjaGFuZ2VzLgotICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGluZ3MgY291bGQgZ2V0IHF1aXRlIGNoYW90aWMuCi0gICAgICAgICAgICBPbmUgZ2VuZXJhbCBwcmFjdGljZSB0byBmb2xsb3cgaXMgdG8gbWFrZSBzbWFsbCwgY29udHJvbGxlZCBjaGFuZ2VzLgotICAgICAgICAgICAgS2VlcGluZyBjaGFuZ2VzIHNtYWxsIGFuZCBpc29sYXRlZCBhaWRzIHJldmlldywgbWFrZXMKLSAgICAgICAgICAgIG1lcmdpbmcvcmViYXNpbmcgZWFzaWVyIGFuZCBrZWVwcyB0aGUgY2hhbmdlIGhpc3RvcnkgY2xlYW4gc2hvdWxkCi0gICAgICAgICAgICBhbnlvbmUgbmVlZCB0byByZWZlciB0byBpdCBpbiBmdXR1cmUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4geW91IG1ha2UgYSBjb21taXQsIHlvdSBtdXN0IGZvbGxvdyBjZXJ0YWluIHN0YW5kYXJkcwotICAgICAgICAgICAgZXN0YWJsaXNoZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBhbmQgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCB0ZWFtcy4KLSAgICAgICAgICAgIEZvciBlYWNoIGNvbW1pdCwgeW91IG11c3QgcHJvdmlkZSBhIHNpbmdsZS1saW5lIHN1bW1hcnkgb2YgdGhlCi0gICAgICAgICAgICBjaGFuZ2UgYW5kIHlvdSBzaG91bGQgYWxtb3N0IGFsd2F5cyBwcm92aWRlIGEgbW9yZSBkZXRhaWxlZAotICAgICAgICAgICAgZGVzY3JpcHRpb24gb2Ygd2hhdCB5b3UgZGlkIChpLmUuIHRoZSBib2R5IG9mIHRoZSBjb21taXQgbWVzc2FnZSkuCi0gICAgICAgICAgICBUaGUgb25seSBleGNlcHRpb25zIGZvciBub3QgcHJvdmlkaW5nIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gd291bGQKLSAgICAgICAgICAgIGJlIGlmIHlvdXIgY2hhbmdlIGlzIGEgc2ltcGxlLCBzZWxmLWV4cGxhbmF0b3J5IGNoYW5nZSB0aGF0IG5lZWRzCi0gICAgICAgICAgICBubyBmdXJ0aGVyIGRlc2NyaXB0aW9uIGJleW9uZCB0aGUgc3VtbWFyeS4KLSAgICAgICAgICAgIEhlcmUgYXJlIHRoZSBndWlkZWxpbmVzIGZvciBjb21wb3NpbmcgYSBjb21taXQgbWVzc2FnZToKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgc2luZ2xlLWxpbmUsIHNob3J0IHN1bW1hcnkgb2YgdGhlIGNoYW5nZS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzdW1tYXJ5IGlzIHR5cGljYWxseSB2aWV3YWJsZSBpbiB0aGUgInNob3J0bGlzdCIgb2YKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgVGh1cywgcHJvdmlkaW5nIHNvbWV0aGluZyBzaG9ydCBhbmQgZGVzY3JpcHRpdmUgdGhhdAotICAgICAgICAgICAgICAgICAgICBnaXZlcyB0aGUgcmVhZGVyIGEgc3VtbWFyeSBvZiB0aGUgY2hhbmdlIGlzIHVzZWZ1bCB3aGVuCi0gICAgICAgICAgICAgICAgICAgIHZpZXdpbmcgYSBsaXN0IG9mIG1hbnkgY29tbWl0cy4KLSAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcmVmaXggdGhpcyBzaG9ydCBkZXNjcmlwdGlvbiB3aXRoIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgbmFtZSAoaWYgY2hhbmdpbmcgYSByZWNpcGUpLCBvciBlbHNlIHdpdGggdGhlIHNob3J0IGZvcm0KLSAgICAgICAgICAgICAgICAgICAgcGF0aCB0byB0aGUgZmlsZSBiZWluZyBjaGFuZ2VkLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciB0aGUgYm9keSBvZiB0aGUgY29tbWl0IG1lc3NhZ2UsIHByb3ZpZGUgZGV0YWlsZWQKLSAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gdGhhdCBkZXNjcmliZXMgd2hhdCB5b3UgY2hhbmdlZCwgd2h5IHlvdSBtYWRlCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjaGFuZ2UsIGFuZCB0aGUgYXBwcm9hY2ggeW91IHVzZWQuCi0gICAgICAgICAgICAgICAgICAgIEl0IG1pZ2h0IGFsc28gYmUgaGVscGZ1bCBpZiB5b3UgbWVudGlvbiBob3cgeW91IHRlc3RlZAotICAgICAgICAgICAgICAgICAgICB0aGUgY2hhbmdlLgotICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGFzIG11Y2ggZGV0YWlsIGFzIHlvdSBjYW4gaW4gdGhlIGJvZHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIElmIHRoZSBjaGFuZ2UgYWRkcmVzc2VzIGEgc3BlY2lmaWMgYnVnIG9yIGlzc3VlIHRoYXQgaXMKLSAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgYnVnLXRyYWNraW5nIElELCBpbmNsdWRlIGEgcmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgIHRvIHRoYXQgSUQgaW4geW91ciBkZXRhaWxlZCBkZXNjcmlwdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBzcGVjaWZpYyBjb252ZW50aW9uCi0gICAgICAgICAgICAgICAgICAgIGZvciBidWcgcmVmZXJlbmNlcyAtIGFueSBjb21taXQgdGhhdCBhZGRyZXNzZXMgYSBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICBidWcgc2hvdWxkIHVzZSB0aGUgZm9sbG93aW5nIGZvcm0gZm9yIHRoZSBkZXRhaWxlZAotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byB1c2UgdGhlIGFjdHVhbCBidWctdHJhY2tpbmcgSUQgZnJvbQotICAgICAgICAgICAgICAgICAgICBCdWd6aWxsYSBmb3IKLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJ1Zy1pZDwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBzaW5nbGUtbGluZSBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1vcmUgZXhwbGFuYXRpb24gaXMgbmVlZGVkLCBwcm92aWRlIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWwgaW4gdGhlIGJvZHkgb2YgdGhlIGNvbW1pdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN1bW1hcnkgaXMgdHlwaWNhbGx5IHZpZXdhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG9ydGxpc3QiIG9mIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgcHJvdmlkaW5nIHNvbWV0aGluZyBzaG9ydCBhbmQgZGVzY3JpcHRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGdpdmVzIHRoZSByZWFkZXIgYSBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VmdWwgd2hlbiB2aWV3aW5nIGEgbGlzdCBvZiBtYW55IGNvbW1pdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcmVmaXggdGhpcyBzaG9ydCBkZXNjcmlwdGlvbiB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lIChpZiBjaGFuZ2luZyBhIHJlY2lwZSksIG9yIGVsc2Ugd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzaG9ydCBmb3JtIHBhdGggdG8gdGhlIGZpbGUgYmVpbmcgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGJvZHkgb2YgdGhlIGNvbW1pdCBtZXNzYWdlLCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsZWQgaW5mb3JtYXRpb24gdGhhdCBkZXNjcmliZXMgd2hhdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkLCB3aHkgeW91IG1hZGUgdGhlIGNoYW5nZSwgYW5kIHRoZSBhcHByb2FjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB1c2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IG1pZ2h0IGFsc28gYmUgaGVscGZ1bCBpZiB5b3UgbWVudGlvbiBob3cgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVkIHRoZSBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhcyBtdWNoIGRldGFpbCBhcyB5b3UgY2FuIGluIHRoZSBib2R5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1pdCBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgdG8gcHJvdmlkZSBhIG1vcmUgZGV0YWlsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gb2YgYSBjaGFuZ2UgaWYgdGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vciB0byB0aGUgcG9pbnQgb2YgdGhlIHNpbmdsZSBsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnkgcHJvdmlkaW5nIGFsbCB0aGUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBjaGFuZ2UgYWRkcmVzc2VzIGEgc3BlY2lmaWMgYnVnIG9yIGlzc3VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggYSBidWctdHJhY2tpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBhIHJlZmVyZW5jZSB0byB0aGF0IElEIGluIHlvdXIgZGV0YWlsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBhIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVudGlvbiBmb3IgYnVnIHJlZmVyZW5jZXMgLSBhbnkgY29tbWl0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXMgYSBzcGVjaWZpYyBidWcgc2hvdWxkIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gdXNlIHRoZSBhY3R1YWwgYnVnLXRyYWNraW5nIElEIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWd6aWxsYSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnVnLWlkPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBGaXhlcyBbWU9DVE8gIzxyZXBsYWNlYWJsZT5idWctaWQ8L3JlcGxhY2VhYmxlPl0KIAogICAgICA8cmVwbGFjZWFibGU+ZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgY2hhbmdlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QdXNoIFlvdXIgQ29tbWl0cyB0byBhICJDb250cmliIiBVcHN0cmVhbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhcnJhbmdlZCBmb3IgcGVybWlzc2lvbnMgdG8gcHVzaCB0byBhbgorICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbSBjb250cmliIHJlcG9zaXRvcnksIHB1c2ggdGhlIGNoYW5nZSB0byB0aGF0CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgcHVzaCA8cmVwbGFjZWFibGU+dXBzdHJlYW1fcmVtb3RlX3JlcG88L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+bG9jYWxfYnJhbmNoX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlIHBlcm1pc3Npb25zIHRvIHB1c2ggaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gPGZpbGVuYW1lPm1ldGEtaW50ZWwtY29udHJpYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIHlvdSBhcmUgd29ya2luZyBpbiBhIGxvY2FsIGJyYW5jaCBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+eW91cl9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L1JFQURNRTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgcHVzaGVzIHlvdXIgbG9jYWwgY29tbWl0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWwtY29udHJpYjwvZmlsZW5hbWU+IHVwc3RyZWFtCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIHB1dHMgdGhlIGNvbW1pdCBpbiBhIGJyYW5jaCBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+eW91cl9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L1JFQURNRTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IHB1c2ggbWV0YS1pbnRlbC1jb250cmliIDxyZXBsYWNlYWJsZT55b3VyX25hbWU8L3JlcGxhY2VhYmxlPi9SRUFETUUKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwdXNoLWRldGVybWluZS13aG8tdG8tbm90aWZ5Jz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBXaG8gdG8gTm90aWZ5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERldGVybWluZSB0aGUgbWFpbnRhaW5lciBvciB0aGUgbWFpbGluZyBsaXN0CisgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG5lZWQgdG8gbm90aWZ5IGZvciB0aGUgY2hhbmdlLjwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGd1aWRhbmNlIG9uIGNyZWF0aW5nIHdlbGwtZm9ybWVkIGNvbW1pdCBtZXNzYWdlcwotICAgICAgICAgICAgYXQgdGhpcyBPcGVuRW1iZWRkZWQgd2lraSBwYWdlOgotICAgICAgICAgICAgPHVsaW5rIHVybD0nJk9FX0hPTUVfVVJMOy93aWtpL0NvbW1pdF9QYXRjaF9NZXNzYWdlX0d1aWRlbGluZXMnPjwvdWxpbms+LgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPgotICAgICAgICA8dGl0bGU+VXNpbmcgU2NyaXB0cyB0byBQdXNoIGEgQ2hhbmdlIFVwc3RyZWFtIGFuZCBSZXF1ZXN0IGEgUHVsbDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgYmFzaWMgZmxvdyBmb3IgcHVzaGluZyBhIGNoYW5nZSB0byBhbiB1cHN0cmVhbSAiY29udHJpYiIgR2l0IHJlcG9zaXRvcnkgaXMgYXMgZm9sbG93czoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1ha2UgeW91ciBjaGFuZ2VzIGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlN0YWdlIHlvdXIgY2hhbmdlcyBieSB1c2luZyB0aGUgPGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG9uIGVhY2ggZmlsZSB5b3UgY2hhbmdlZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIENvbW1pdCB0aGUgY2hhbmdlIGJ5IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNvbW1pdDwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSBhIGNvbW1pdCBtZXNzYWdlIHRoYXQgZm9sbG93cyB0aGUKLSAgICAgICAgICAgICAgICAgICAgcHJvamVjdOKAmXMgY29tbWl0IG1lc3NhZ2Ugc3RhbmRhcmRzIGFzIGRlc2NyaWJlZCBlYXJsaWVyLgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWZvcmUgc3VibWl0dGluZyBhbnkgY2hhbmdlLCB5b3UgbmVlZCB0byBiZSBzdXJlCisgICAgICAgICAgICAgICAgICAgIHdobyB0aGUgbWFpbnRhaW5lciBpcyBvciB3aGF0IG1haWxpbmcgbGlzdCB0aGF0IHlvdSBuZWVkCisgICAgICAgICAgICAgICAgICAgIHRvIG5vdGlmeS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIGVpdGhlciB0aGVzZSBtZXRob2RzIHRvIGZpbmQgb3V0OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWludGVuYW5jZSBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbWluZSB0aGUgPGZpbGVuYW1lPm1haW50YWluZXJzLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWUgd2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWFyY2ggYnkgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBlbnRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gYnJpbmcgdXAgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IGxpc3Qgb2YgYWxsIGNvbW1pdHMgYWdhaW5zdCBhIHNwZWNpZmljIGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBnaXQgc2hvcnRsb2cgLS0gPHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVzdCBwcm92aWRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGZvciB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgaW50ZXJlc3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgaXMgbm90IG9yZGVyZWQgYnkgaGlzdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBkb2VzIGluY2x1ZGUgYSBsaXN0IG9mIGV2ZXJ5b25lIHdobyBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQgZ3JvdXBlZCBieSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGxpc3QsIHlvdSBjYW4gc2VlIHdobyBpcyByZXNwb25zaWJsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVsayBvZiB0aGUgY2hhbmdlcyBhZ2FpbnN0IHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIHRoZSBMaXN0IG9mIE1haWxpbmcgTGlzdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBsaXN0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGFuZCByZWxhdGVkIG1haWxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgbGlzdHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFB1c2ggdGhlIGNoYW5nZSB0byB0aGUgdXBzdHJlYW0gImNvbnRyaWIiIHJlcG9zaXRvcnkgYnkKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgcHVzaDwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ob3RpZnkgdGhlIG1haW50YWluZXIgdGhhdCB5b3UgaGF2ZSBwdXNoZWQgYSBjaGFuZ2UgYnkgbWFraW5nIGEgcHVsbAotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LgotICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyB0d28gc2NyaXB0cyB0aGF0IGNvbnZlbmllbnRseSBsZXQgeW91IGdlbmVyYXRlIGFuZCBzZW5kCi0gICAgICAgICAgICAgICAgICAgIHB1bGwgcmVxdWVzdHMgdG8gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIHNjcmlwdHMgYXJlIDxmaWxlbmFtZT5jcmVhdGUtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2Ugc2NyaXB0cyBpbiB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIHRoZXNlIHNjcmlwdHMgY29ycmVjdGx5IGZvcm1hdHMgdGhlIHJlcXVlc3RzIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55Ci0gICAgICAgICAgICAgICAgICAgIHdoaXRlc3BhY2Ugb3IgSFRNTCBmb3JtYXR0aW5nLgotICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGF0IHJlY2VpdmVzIHlvdXIgcGF0Y2hlcyBuZWVkcyB0byBiZSBhYmxlIHRvIHNhdmUgYW5kIGFwcGx5IHRoZW0KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgZnJvbSB5b3VyIGVtYWlscy4KLSAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlc2Ugc2NyaXB0cyBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZCBmb3Igc2VuZGluZyBwYXRjaGVzLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGhlbHAgb24gdXNpbmcgdGhlc2Ugc2NyaXB0cywgc2ltcGx5IHByb3ZpZGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4taDwvZmlsZW5hbWU+IGFyZ3VtZW50IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIGEgUHVsbCBSZXF1ZXN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE5vdGlmeSB0aGUgbWFpbnRhaW5lciBvciB0aGUgbWFpbGluZyBsaXN0IHRoYXQgeW91IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgcHVzaGVkIGEgY2hhbmdlIGJ5IG1ha2luZyBhIHB1bGwgcmVxdWVzdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgdHdvIHNjcmlwdHMgdGhhdAorICAgICAgICAgICAgICAgICAgICBjb252ZW5pZW50bHkgbGV0IHlvdSBnZW5lcmF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBzY3JpcHRzIGFyZSA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIHNjcmlwdHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5+L3Bva3kvc2NyaXB0czwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIHRoZXNlIHNjcmlwdHMgY29ycmVjdGx5IGZvcm1hdHMgdGhlIHJlcXVlc3RzCisgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHdoaXRlc3BhY2Ugb3IgSFRNTCBmb3JtYXR0aW5nLgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGF0IHJlY2VpdmVzIHlvdXIgcGF0Y2hlcyBlaXRoZXIgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgb3IgdGhyb3VnaCB0aGUgbWFpbGluZyBsaXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gc2F2ZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgYXBwbHkgdGhlbSBkaXJlY3RseSBmcm9tIHlvdXIgZW1haWxzLgorICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGVzZSBzY3JpcHRzIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBzZW5kaW5nCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZpcnN0LCBjcmVhdGUgdGhlIHB1bGwgcmVxdWVzdC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBydW5zIHRoZSBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSBpbiB0aGUgY29udHJpYiBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgaW50byB3aGljaCB5b3UgcHVzaGVkIHRoZSBjaGFuZ2UsIGFuZCBwcm92aWRlcyBhIHN1YmplY3QKKyAgICAgICAgICAgICAgICAgICAgbGluZSBpbiB0aGUgY3JlYXRlZCBwYXRjaCBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIH4vcG9reS9zY3JpcHRzL2NyZWF0ZS1wdWxsLXJlcXVlc3QgLXUgbWV0YS1pbnRlbC1jb250cmliIC1zICJVcGRhdGVkIE1hbnVhbCBTZWN0aW9uIFJlZmVyZW5jZSBpbiBSRUFETUUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgUnVubmluZyB0aGlzIHNjcmlwdCBmb3JtcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IGZpbGVzIGluIGEgZm9sZGVyIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wdWxsLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlBJRDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgT25lIG9mIHRoZSBwYXRjaCBmaWxlcyBpcyBhIGNvdmVyIGxldHRlci48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIHJ1bm5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdCwgeW91IG11c3QKKyAgICAgICAgICAgICAgICAgICAgZWRpdCB0aGUgY292ZXIgbGV0dGVyIHBhdGNoIHRvIGluc2VydCBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgICAgICAgICAgICB5b3VyIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZWRpdGluZyB0aGUgY292ZXIgbGV0dGVyLCBzZW5kIHRoZSBwdWxsIHJlcXVlc3QuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgcnVucyB0aGUgc2NyaXB0IGFuZAorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHBhdGNoIGRpcmVjdG9yeSBhbmQgZW1haWwgYWRkcmVzcy4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgZW1haWwgYWRkcmVzcyBpcyBhIG1haWxpbmcgbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIH4vcG9reS9zY3JpcHRzL3NlbmQtcHVsbC1yZXF1ZXN0IC1wIH4vbWV0YS1pbnRlbC9wdWxsLTEwNTY1IC10IG1ldGEtaW50ZWxAeW9jdG9wcm9qZWN0Lm9yZworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGZvbGxvdyB0aGUgcHJvbXB0cyBhcyB0aGUgc2NyaXB0IGlzCisgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBoZWxwIG9uIHVzaW5nIHRoZXNlIHNjcmlwdHMsIHNpbXBseSBwcm92aWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1oPC9maWxlbmFtZT4gYXJndW1lbnQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBwb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdCAtaAogICAgICAkIHBva3kvc2NyaXB0cy9zZW5kLXB1bGwtcmVxdWVzdCAtaAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIGdlbmVyYWwgR2l0IGluZm9ybWF0aW9uIG9uIGhvdyB0byBwdXNoIGEgY2hhbmdlIHVwc3RyZWFtIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Jvb2svZW4vdjIvRGlzdHJpYnV0ZWQtR2l0LURpc3RyaWJ1dGVkLVdvcmtmbG93cyc+R2l0IENvbW11bml0eSBCb29rPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0xNzE3LDQzICs4MzksNjcgQEAKICAgICAgICAgPHRpdGxlPlVzaW5nIEVtYWlsIHRvIFN1Ym1pdCBhIFBhdGNoPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gc3VibWl0IHBhdGNoZXMgd2l0aG91dCB1c2luZyB0aGUgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdHMgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLgorICAgICAgICAgICAgWW91IGNhbiBzdWJtaXQgcGF0Y2hlcyB3aXRob3V0IHVzaW5nIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdHMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbi4KICAgICAgICAgICAgIEhvd2V2ZXIsIGtlZXAgaW4gbWluZCwgdGhlIHByZWZlcnJlZCBtZXRob2QgaXMgdG8gdXNlIHRoZSBzY3JpcHRzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIGNvbXBvbmVudHMgY2hhbmdlZCwgeW91IG5lZWQgdG8gc3VibWl0IHRoZSBlbWFpbCB0byBhIHNwZWNpZmljCi0gICAgICAgICAgICBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiB3aGljaCBtYWlsaW5nIGxpc3QgdG8gdXNlLCBzZWUgdGhlIGxpc3QgaW4gdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhIENoYW5nZTwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgRm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGF2YWlsYWJsZSBtYWlsaW5nIGxpc3RzLCBzZWUgdGhlCisgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIGNvbXBvbmVudHMgY2hhbmdlZCwgeW91IG5lZWQgdG8gc3VibWl0IHRoZSBlbWFpbAorICAgICAgICAgICAgdG8gYSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiB3aGljaCBtYWlsaW5nIGxpc3QgdG8gdXNlLCBzZWUgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdmaWd1cmluZy1vdXQtdGhlLW1haWxpbmctbGlzdC10by11c2UnPmJlZ2lubmluZzwvbGluaz4KKyAgICAgICAgICAgIG9mIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgYXZhaWxhYmxlIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgTGlzdHM8L3VsaW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSGVyZSBpcyB0aGUgZ2VuZXJhbCBwcm9jZWR1cmUgb24gaG93IHRvIHN1Ym1pdCBhIHBhdGNoIHRocm91Z2ggZW1haWwgd2l0aG91dCB1c2luZyB0aGUKLSAgICAgICAgICAgIHNjcmlwdHM6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5NYWtlIHlvdXIgY2hhbmdlcyBpbiB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TdGFnZSB5b3VyIGNoYW5nZXMgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgYWRkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvbiBlYWNoIGZpbGUgeW91IGNoYW5nZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbW1pdCB0aGUgY2hhbmdlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgSGVyZSBpcyB0aGUgZ2VuZXJhbCBwcm9jZWR1cmUgb24gaG93IHRvIHN1Ym1pdCBhIHBhdGNoIHRocm91Z2gKKyAgICAgICAgICAgIGVtYWlsIHdpdGhvdXQgdXNpbmcgdGhlIHNjcmlwdHM6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBZb3VyIENoYW5nZXMgTG9jYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBNYWtlIHlvdXIgY2hhbmdlcyBpbiB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG1ha2Ugc21hbGwsIGNvbnRyb2xsZWQsIGlzb2xhdGVkIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIEtlZXBpbmcgY2hhbmdlcyBzbWFsbCBhbmQgaXNvbGF0ZWQgYWlkcyByZXZpZXcsCisgICAgICAgICAgICAgICAgICAgIG1ha2VzIG1lcmdpbmcvcmViYXNpbmcgZWFzaWVyIGFuZCBrZWVwcyB0aGUgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkgY2xlYW4gc2hvdWxkIGFueW9uZSBuZWVkIHRvIHJlZmVyIHRvIGl0IGluCisgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFN0YWdlIHlvdXIgY2hhbmdlcyBieSB1c2luZyB0aGUgPGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG9uIGVhY2ggZmlsZSB5b3UgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb21taXQgdGhlIGNoYW5nZSBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjb21taXQgLS1zaWdub2ZmPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT4tLXNpZ25vZmY8L2ZpbGVuYW1lPiBvcHRpb24gaWRlbnRpZmllcyB5b3UgYXMgdGhlIHBlcnNvbgotICAgICAgICAgICAgICAgICAgICBtYWtpbmcgdGhlIGNoYW5nZSBhbmQgYWxzbyBzYXRpc2ZpZXMgdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mCi0gICAgICAgICAgICAgICAgICAgIE9yaWdpbiAoRENPKSBzaG93biBlYXJsaWVyLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3UgZm9ybSBhIGNvbW1pdCwgeW91IG11c3QgZm9sbG93IGNlcnRhaW4gc3RhbmRhcmRzIGVzdGFibGlzaGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IHRlYW0uCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZWFybGllciBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5Ib3cgdG8gU3VibWl0IGEgQ2hhbmdlPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgZm9yIFlvY3RvIFByb2plY3QgY29tbWl0IG1lc3NhZ2Ugc3RhbmRhcmRzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Gb3JtYXQgdGhlIGNvbW1pdCBpbnRvIGFuIGVtYWlsIG1lc3NhZ2UuCi0gICAgICAgICAgICAgICAgICAgIFRvIGZvcm1hdCBjb21taXRzLCB1c2UgdGhlIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcHJvdmlkZSB0aGUgY29tbWFuZCwgeW91IG11c3QgaW5jbHVkZSBhIHJldmlzaW9uIGxpc3Qgb3IgYSBudW1iZXIgb2YgcGF0Y2hlcwotICAgICAgICAgICAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgPGZpbGVuYW1lPi0tc2lnbm9mZjwvZmlsZW5hbWU+IG9wdGlvbiBpZGVudGlmaWVzCisgICAgICAgICAgICAgICAgICAgIHlvdSBhcyB0aGUgcGVyc29uIG1ha2luZyB0aGUgY2hhbmdlIGFuZCBhbHNvIHNhdGlzZmllcworICAgICAgICAgICAgICAgICAgICB0aGUgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YgT3JpZ2luIChEQ08pIHNob3duIGVhcmxpZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBmb3JtIGEgY29tbWl0LCB5b3UgbXVzdCBmb2xsb3cgY2VydGFpbgorICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZHMgZXN0YWJsaXNoZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgdGVhbS4KKyAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ha2luZy1zdXJlLXlvdS1oYXZlLWNvcnJlY3QtY29tbWl0LWluZm9ybWF0aW9uJz5TdGVwIDM8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBjb21taXQgaW5mb3JtYXRpb24gdGhhdCBtZWV0cyBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlIHN0YW5kYXJkcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Rm9ybWF0IHRoZSBDb21taXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRm9ybWF0IHRoZSBjb21taXQgaW50byBhbiBlbWFpbCBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICBUbyBmb3JtYXQgY29tbWl0cywgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHByb3ZpZGUgdGhlIGNvbW1hbmQsIHlvdSBtdXN0IGluY2x1ZGUgYSByZXZpc2lvbgorICAgICAgICAgICAgICAgICAgICBsaXN0IG9yIGEgbnVtYmVyIG9mIHBhdGNoZXMgYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGVpdGhlciBvZiB0aGVzZSB0d28gY29tbWFuZHMgdGFrZXMgeW91ciBtb3N0CiAgICAgICAgICAgICAgICAgICAgIHJlY2VudCBzaW5nbGUgY29tbWl0IGFuZCBmb3JtYXRzIGl0IGFzIGFuIGVtYWlsIG1lc3NhZ2UgaW4KICAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5OgpAQCAtMTc2NCw1MCArOTEwLDc2IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIEhFQUR+CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkFmdGVyIHRoZSBjb21tYW5kIGlzIHJ1biwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGNvbnRhaW5zIGEKLSAgICAgICAgICAgICAgICAgICAgbnVtYmVyZWQgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IGZpbGUgZm9yIHRoZSBjb21taXQuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgcHJvdmlkZSBzZXZlcmFsIGNvbW1pdHMgYXMgcGFydCBvZiB0aGUgY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZCBwcm9kdWNlcyBhCi0gICAgICAgICAgICAgICAgICAgIHNlcmllcyBvZiBudW1iZXJlZCBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkg4oCTIG9uZSBmb3IgZWFjaCBjb21taXQuCisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWZ0ZXIgdGhlIGNvbW1hbmQgaXMgcnVuLCB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSBudW1iZXJlZCA8ZmlsZW5hbWU+LnBhdGNoPC9maWxlbmFtZT4gZmlsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1pdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHByb3ZpZGUgc2V2ZXJhbCBjb21taXRzIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHRoZSA8ZmlsZW5hbWU+Z2l0IGZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXMgYSBzZXJpZXMgb2YgbnVtYmVyZWQgZmlsZXMgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IOKAkyBvbmUgZm9yIGVhY2ggY29tbWl0LgogICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIHBhdGNoLCB5b3Ugc2hvdWxkIGFsc28gdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1jb3ZlcjwvZmlsZW5hbWU+IG9wdGlvbiB3aXRoIHRoZSBjb21tYW5kLCB3aGljaCBnZW5lcmF0ZXMgYQotICAgICAgICAgICAgICAgICAgICBjb3ZlciBsZXR0ZXIgYXMgdGhlIGZpcnN0ICJwYXRjaCIgaW4gdGhlIHNlcmllcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0aGVuIGVkaXQgdGhlIGNvdmVyIGxldHRlciB0byBwcm92aWRlIGEgZGVzY3JpcHRpb24gZm9yCi0gICAgICAgICAgICAgICAgICAgIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSA8ZmlsZW5hbWU+Z2l0IGZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgIHNlZSA8ZmlsZW5hbWU+R0lUX0ZPUk1BVF9QQVRDSCgxKTwvZmlsZW5hbWU+IGRpc3BsYXllZCB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hbiBnaXQtZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPklmIHlvdSBhcmUgb3Igd2lsbCBiZSBhIGZyZXF1ZW50IGNvbnRyaWJ1dG9yIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIG9yIHRvIE9wZW5FbWJlZGRlZCwgeW91IG1pZ2h0IGNvbnNpZGVyIHJlcXVlc3RpbmcgYSBjb250cmliIGFyZWEgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcnkgYXNzb2NpYXRlZCByaWdodHMuPC9ub3RlPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkltcG9ydCB0aGUgZmlsZXMgaW50byB5b3VyIG1haWwgY2xpZW50IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1jb3ZlcjwvZmlsZW5hbWU+IG9wdGlvbiB3aXRoIHRoZSBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICB3aGljaCBnZW5lcmF0ZXMgYSBjb3ZlciBsZXR0ZXIgYXMgdGhlIGZpcnN0ICJwYXRjaCIgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHNlcmllcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0aGVuIGVkaXQgdGhlIGNvdmVyIGxldHRlciB0byBwcm92aWRlIGEKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgIHNlZSA8ZmlsZW5hbWU+R0lUX0ZPUk1BVF9QQVRDSCgxKTwvZmlsZW5hbWU+IGRpc3BsYXllZAorICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPm1hbiBnaXQtZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG9yIHdpbGwgYmUgYSBmcmVxdWVudCBjb250cmlidXRvciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgb3IgdG8gT3BlbkVtYmVkZGVkLCB5b3UgbWlnaHQgY29uc2lkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RpbmcgYSBjb250cmliIGFyZWEgYW5kIHRoZSBuZWNlc3NhcnkgYXNzb2NpYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkltcG9ydCB0aGUgRmlsZXMgSW50byBZb3VyIE1haWwgQ2xpZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEltcG9ydCB0aGUgZmlsZXMgaW50byB5b3VyIG1haWwgY2xpZW50IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT5JbiBvcmRlciB0byB1c2UgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4sIHlvdSBtdXN0IGhhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgIHRoZSBwcm9wZXIgR2l0IHBhY2thZ2VzIGluc3RhbGxlZC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIFVidW50dSwgRGViaWFuLCBhbmQgRmVkb3JhIHRoZSBwYWNrYWdlIGlzIDxmaWxlbmFtZT5naXQtZW1haWw8L2ZpbGVuYW1lPi48L25vdGU+PC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZCBzZW5kcyBlbWFpbCBieSB1c2luZyBhIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgIG9yIHJlbW90ZSBNYWlsIFRyYW5zcG9ydCBBZ2VudCAoTVRBKSBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tc210cDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+c2VuZG1haWw8L2ZpbGVuYW1lPiwgb3IgdGhyb3VnaCBhIGRpcmVjdAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c210cDwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gaW4geW91ciBHaXQgPGZpbGVuYW1lPmNvbmZpZzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgc3VibWl0dGluZyBwYXRjaGVzIHRocm91Z2ggZW1haWwgb25seSwgaXQgaXMgdmVyeSBpbXBvcnRhbnQKLSAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3Ugc3VibWl0IHRoZW0gd2l0aG91dCBhbnkgd2hpdGVzcGFjZSBvciBIVE1MIGZvcm1hdHRpbmcgdGhhdAotICAgICAgICAgICAgICAgICAgICBlaXRoZXIgeW91IG9yIHlvdXIgbWFpbGVyIGludHJvZHVjZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIHRoYXQgcmVjZWl2ZXMgeW91ciBwYXRjaGVzIG5lZWRzIHRvIGJlIGFibGUgdG8gc2F2ZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgYXBwbHkgdGhlbSBkaXJlY3RseSBmcm9tIHlvdXIgZW1haWxzLgotICAgICAgICAgICAgICAgICAgICBBIGdvb2Qgd2F5IHRvIHZlcmlmeSB0aGF0IHdoYXQgeW91IGFyZSBzZW5kaW5nIHdpbGwgYmUgYXBwbGljYWJsZSBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lciBpcyB0byBkbyBhIGRyeSBydW4gYW5kIHNlbmQgdGhlbSB0byB5b3Vyc2VsZiBhbmQgdGhlbgotICAgICAgICAgICAgICAgICAgICBzYXZlIGFuZCBhcHBseSB0aGVtIGFzIHRoZSBtYWludGFpbmVyIHdvdWxkLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQgaXMgdGhlIHByZWZlcnJlZCBtZXRob2QKLSAgICAgICAgICAgICAgICAgICAgZm9yIHNlbmRpbmcgeW91ciBwYXRjaGVzIHNpbmNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgY29tcHJvbWlzaW5nIHdoaXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UsIHdoaWNoIGNhbiBvY2N1ciB3aGVuIHlvdSB1c2UgeW91ciBvd24gbWFpbCBjbGllbnQuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgaGF2ZSB0aGUgcHJvcGVyIEdpdCBwYWNrYWdlcyBpbnN0YWxsZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBVYnVudHUsIERlYmlhbiwgYW5kIEZlZG9yYSB0aGUgcGFja2FnZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC1lbWFpbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIHNlbmRzIGVtYWlsIGJ5IHVzaW5nIGEgbG9jYWwgb3IgcmVtb3RlIE1haWwgVHJhbnNwb3J0IEFnZW50CisgICAgICAgICAgICAgICAgICAgIChNVEEpIHN1Y2ggYXMgPGZpbGVuYW1lPm1zbXRwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kbWFpbDwvZmlsZW5hbWU+LCBvciB0aHJvdWdoIGEgZGlyZWN0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zbXRwPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBpbiB5b3VyIEdpdAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi8uZ2l0Y29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBzdWJtaXR0aW5nIHBhdGNoZXMgdGhyb3VnaCBlbWFpbCBvbmx5LCBpdCBpcworICAgICAgICAgICAgICAgICAgICB2ZXJ5IGltcG9ydGFudCB0aGF0IHlvdSBzdWJtaXQgdGhlbSB3aXRob3V0IGFueSB3aGl0ZXNwYWNlCisgICAgICAgICAgICAgICAgICAgIG9yIEhUTUwgZm9ybWF0dGluZyB0aGF0IGVpdGhlciB5b3Ugb3IgeW91ciBtYWlsZXIKKyAgICAgICAgICAgICAgICAgICAgaW50cm9kdWNlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1haW50YWluZXIgdGhhdCByZWNlaXZlcyB5b3VyIHBhdGNoZXMgbmVlZHMgdG8gYmUgYWJsZQorICAgICAgICAgICAgICAgICAgICB0byBzYXZlIGFuZCBhcHBseSB0aGVtIGRpcmVjdGx5IGZyb20geW91ciBlbWFpbHMuCisgICAgICAgICAgICAgICAgICAgIEEgZ29vZCB3YXkgdG8gdmVyaWZ5IHRoYXQgd2hhdCB5b3UgYXJlIHNlbmRpbmcgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIGJ5IHRoZSBtYWludGFpbmVyIGlzIHRvIGRvIGEgZHJ5IHJ1biBhbmQgc2VuZAorICAgICAgICAgICAgICAgICAgICB0aGVtIHRvIHlvdXJzZWxmIGFuZCB0aGVuIHNhdmUgYW5kIGFwcGx5IHRoZW0gYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIG1haW50YWluZXIgd291bGQuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kIGlzCisgICAgICAgICAgICAgICAgICAgIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBzZW5kaW5nIHlvdXIgcGF0Y2hlcyB1c2luZworICAgICAgICAgICAgICAgICAgICBlbWFpbCBzaW5jZSB0aGVyZSBpcyBubyByaXNrIG9mIGNvbXByb21pc2luZyB3aGl0ZXNwYWNlCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlLCB3aGljaCBjYW4gb2NjdXIgd2hlbiB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgIHlvdXIgb3duIG1haWwgY2xpZW50LgogICAgICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBhbHNvIGhhcyBzZXZlcmFsIG9wdGlvbnMgdGhhdCBsZXQgeW91Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgcmVjaXBpZW50cyBhbmQgcGVyZm9ybSBmdXJ0aGVyIGVkaXRpbmcgb2YgdGhlIGVtYWlsIG1lc3NhZ2UuCi0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHJlY2lwaWVudHMgYW5kIHBlcmZvcm0gZnVydGhlciBlZGl0aW5nIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBlbWFpbCBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgc2VlIDxmaWxlbmFtZT5HSVQtU0VORC1FTUFJTCgxKTwvZmlsZW5hbWU+IGRpc3BsYXllZCB1c2luZwogICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1hbiBnaXQtc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCmluZGV4IDQxYzE4MjkuLjg1ZTczMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwKQEAgLTYsNDI3ICs2LDMwMyBAQAogCiA8dGl0bGU+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdGl0bGU+CiAKLTxwYXJhPgotICAgIFF1aWNrIEVNVWxhdG9yIChRRU1VKSBpcyBhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IHRoZSBZb2N0byBQcm9qZWN0IHVzZXMKLSAgICBhcyBwYXJ0IG9mIGl0cyBkZXZlbG9wbWVudCAidG9vbCBzZXQiLgotICAgIEFzIHN1Y2gsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIGNoYXB0ZXIgaXMgbGltaXRlZCB0byB0aGUKLSAgICBZb2N0byBQcm9qZWN0IGludGVncmF0aW9uIG9mIFFFTVUgYW5kIG5vdCBRRU1VIGluIGdlbmVyYWwuCi0gICAgRm9yIG9mZmljaWFsIGluZm9ybWF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIG9uIFFFTVUsIHNlZSB0aGUKLSAgICBmb2xsb3dpbmcgcmVmZXJlbmNlczoKLSAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL01haW5fUGFnZSc+UUVNVSBXZWJzaXRlPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgIFRoZSBvZmZpY2lhbCB3ZWJzaXRlIGZvciB0aGUgUUVNVSBPcGVuIFNvdXJjZSBwcm9qZWN0LgotICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFudWFsJz5Eb2N1bWVudGF0aW9uPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgIFRoZSBRRU1VIHVzZXIgbWFudWFsLgotICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgPC9pdGVtaXplZGxpc3Q+Ci08L3BhcmE+Ci0KLTxwYXJhPgotICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgWW9jdG8gUHJvamVjdCdzIGludGVncmF0aW9uIG9mCi0gICAgUUVNVSwgYSBkZXNjcmlwdGlvbiBvZiBob3cgeW91IHVzZSBRRU1VIGFuZCBpdHMgdmFyaW91cyBvcHRpb25zLCBydW5uaW5nCi0gICAgdW5kZXIgYSBOZXR3b3JrIEZpbGUgU3lzdGVtIChORlMpIHNlcnZlciwgYW5kIGEgZmV3IHRpcHMgYW5kIHRyaWNrcyB5b3UKLSAgICBtaWdodCBmaW5kIGhlbHBmdWwgd2hlbiB1c2luZyBRRU1VLgotPC9wYXJhPgotCi08c2VjdGlvbiBpZD0ncWVtdS1vdmVydmlldyc+Ci0gICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KLQogICAgIDxwYXJhPgotICAgICAgICBXaXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIFlvY3RvIFByb2plY3QsIFFFTVUgaXMgYW4KLSAgICAgICAgZW11bGF0b3IgYW5kIHZpcnR1YWxpemF0aW9uIG1hY2hpbmUgdGhhdCBhbGxvd3MgeW91IHRvIHJ1biBhIGNvbXBsZXRlCi0gICAgICAgIGltYWdlIHlvdSBoYXZlIGJ1aWx0IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGFzIGp1c3QgYW5vdGhlciB0YXNrCi0gICAgICAgIG9uIHlvdXIgYnVpbGQgc3lzdGVtLgotICAgICAgICBRRU1VIGlzIHVzZWZ1bCBmb3IgcnVubmluZyBhbmQgdGVzdGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyBvbgotICAgICAgICBzdXBwb3J0ZWQgWW9jdG8gUHJvamVjdCBhcmNoaXRlY3R1cmVzIHdpdGhvdXQgaGF2aW5nIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIFFFTVUgdG8gcnVuIGF1dG9tYXRlZAotICAgICAgICBRdWFsaXR5IEFzc3VyYW5jZSAoUUEpIHRlc3RzIG9uIGZpbmFsIGltYWdlcyBzaGlwcGVkIHdpdGggZWFjaAotICAgICAgICByZWxlYXNlLgorICAgICAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgcHJvY2VkdXJlcyB0aGF0IHNob3cgeW91IGhvdyB0byB1c2UgdGhlCisgICAgICAgIFF1aWNrIEVNVWxhdG9yIChRRU1VKSwgd2hpY2ggaXMgYW4gT3BlbiBTb3VyY2UgcHJvamVjdCB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCB1c2VzIGFzIHBhcnQgb2YgaXRzIGRldmVsb3BtZW50ICJ0b29sIHNldCIuCisgICAgICAgIEZvciByZWZlcmVuY2UgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YgUUVNVSwKKyAgICAgICAgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXF1aWNrLWVtdWxhdG9yLXFlbXUnPlF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCiAgICAgPC9wYXJhPgogCi0gICAgPHBhcmE+Ci0gICAgICAgIFFFTVUgaXMgbWFkZSBhdmFpbGFibGUgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBhIG51bWJlciBvZiB3YXlzLgotICAgICAgICBPbmUgbWV0aG9kIGlzIHRvIGluc3RhbGwgYSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykuCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBtYWtlIHN1cmUgeW91IGhhdmUKLSAgICAgICAgUUVNVSBhdmFpbGFibGUsIHNlZSB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWludHJvJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3FlbXUtcnVubmluZy1xZW11Jz4KLSAgICA8dGl0bGU+UnVubmluZyBRRU1VPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBSdW5uaW5nIFFFTVUgaW52b2x2ZXMgaGF2aW5nIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQgc2V0IHVwLCBoYXZpbmcgdGhlCi0gICAgICAgIHJpZ2h0IGFydGlmYWN0cyBhdmFpbGFibGUsIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyB0byB1c2UgdGhlIG1hbnkKLSAgICAgICAgb3B0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgdG8geW91IHdoZW4geW91IHN0YXJ0IFFFTVUgdXNpbmcgdGhlCi0gICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncWVtdS1zZXR0aW5nLXVwLXRoZS1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRoZSBFbnZpcm9ubWVudDwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtcnVubmluZy1xZW11Jz4KKyAgICAgICAgPHRpdGxlPlJ1bm5pbmcgUUVNVTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgcnVuIFFFTVUgaW4gdGhlIHNhbWUgZW52aXJvbm1lbnQgZnJvbSB3aGljaCB5b3UgcnVuIEJpdEJha2UuCi0gICAgICAgICAgICBUaGlzIG1lYW5zIHlvdSBuZWVkIHRvIHNvdXJjZSBhIGJ1aWxkIGVudmlyb25tZW50IHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICBvcgotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC91bGluaz4pLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgVG8gdXNlIFFFTVUsIHlvdSBuZWVkIHRvIGhhdmUgUUVNVSBpbnN0YWxsZWQgYW5kIGluaXRpYWxpemVkIGFzCisgICAgICAgICAgICB3ZWxsIGFzIGhhdmUgdGhlIHByb3BlciBhcnRpZmFjdHMgKGkuZS4gaW1hZ2UgZmlsZXMgYW5kIHJvb3QKKyAgICAgICAgICAgIGZpbGVzeXN0ZW1zKSBhdmFpbGFibGUuCisgICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwcyB0byBydW4gUUVNVToKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIFFFTVU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN0aGUtcWVtdS1lbXVsYXRvcic+VGhlIFFFTVUgRW11bGF0b3I8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpbnN0YWxsIFFFTVUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldHRpbmcgVXAgdGhlIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEhvdyB5b3Ugc2V0IHVwIHRoZSBRRU1VIGVudmlyb25tZW50IGRlcGVuZHMgb24gaG93IHlvdQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgUUVNVToKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2xvbmVkIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBvciB5b3UgZG93bmxvYWRlZCBhbmQgdW5wYWNrZWQgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSB0YXJiYWxsLCB5b3UgY2FuIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGluc3RhbGxlZCBhIGNyb3NzLXRvb2xjaGFpbiwgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0aGUgc2NyaXB0IHRoYXQgaW5pdGlhbGl6ZXMgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0IGZyb20gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reV9zZGs8L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAuIH4vcG9reV9zZGsvZW52aXJvbm1lbnQtc2V0dXAtY29yZTItNjQtcG9reS1saW51eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVuc3VyZSB0aGUgQXJ0aWZhY3RzIGFyZSBpbiBQbGFjZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBiZSBzdXJlIHlvdSBoYXZlIGEgcHJlLWJ1aWx0IGtlcm5lbCB0aGF0CisgICAgICAgICAgICAgICAgICAgIHdpbGwgYm9vdCBpbiBRRU1VLgorICAgICAgICAgICAgICAgICAgICBZb3UgYWxzbyBuZWVkIHRoZSB0YXJnZXQgcm9vdCBmaWxlc3lzdGVtIGZvciB5b3VyIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5l4oCZcyBhcmNoaXRlY3R1cmU6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgcHJldmlvdXNseSBidWlsdCBhbiBpbWFnZSBmb3IgUUVNVQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIHRoZSBhcnRpZmFjdHMgYXJlIGluIHBsYWNlIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG5vdCBidWlsdCBhbiBpbWFnZSwgeW91IGNhbiBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fTUFDSElORVNfRExfVVJMOyc+bWFjaGluZXMvcWVtdTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYSBhbmQgZG93bmxvYWQgYSBwcmUtYnVpbHQgaW1hZ2UgdGhhdCBtYXRjaGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBhcmNoaXRlY3R1cmUgYW5kIGNhbiBiZSBydW4gb24gUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPgogCi0gICAgPHNlY3Rpb24gaWQ9J3FlbXUtdXNpbmctdGhlLXJ1bnFlbXUtY29tbWFuZCc+Ci0gICAgICAgIDx0aXRsZT5Vc2luZyB0aGUgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBDb21tYW5kPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBiYXNpYyA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQgc3ludGF4IGlzIGFzCi0gICAgICAgICAgICBmb2xsb3dzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0cmFjdGluZy10aGUtcm9vdC1maWxlc3lzdGVtJz5FeHRyYWN0aW5nIHRoZSBSb290IEZpbGVzeXN0ZW08L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBleHRyYWN0IGEgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SdW4gUUVNVTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzaWMgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kIHN5bnRheCBpcyBhcworICAgICAgICAgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgcnVucWVtdSBbPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFjZWFibGU+IF0gIFsuLi5dCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBCYXNlZCBvbiB3aGF0IHlvdSBwcm92aWRlIG9uIHRoZSBjb21tYW5kIGxpbmUsCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRvZXMgYSBnb29kIGpvYiBvZiBmaWd1cmluZyBvdXQgd2hhdAotICAgICAgICAgICAgeW91IGFyZSB0cnlpbmcgdG8gZG8uCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCwgUUVNVSBsb29rcyBmb3IgdGhlIG1vc3QgcmVjZW50bHkgYnVpbHQKLSAgICAgICAgICAgIGltYWdlIGFjY29yZGluZyB0byB0aGUgdGltZXN0YW1wIHdoZW4gaXQgbmVlZHMgdG8gbG9vayBmb3IgYW4KLSAgICAgICAgICAgIGltYWdlLgotICAgICAgICAgICAgTWluaW1hbGx5LCB0aHJvdWdoIHRoZSB1c2Ugb2Ygb3B0aW9ucywgeW91IG11c3QgcHJvdmlkZSBlaXRoZXIKLSAgICAgICAgICAgIGEgbWFjaGluZSBuYW1lLCBhIHZpcnR1YWwgbWFjaGluZSBpbWFnZQotICAgICAgICAgICAgKDxmaWxlbmFtZT4qLnZtZGs8L2ZpbGVuYW1lPiksIG9yIGEga2VybmVsIGltYWdlCi0gICAgICAgICAgICAoPGZpbGVuYW1lPiouYmluPC9maWxlbmFtZT4pLgotICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQmFzZWQgb24gd2hhdCB5b3UgcHJvdmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRvZXMgYSBnb29kIGpvYiBvZiBmaWd1cmluZworICAgICAgICAgICAgICAgICAgICBvdXQgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkby4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQsIFFFTVUgbG9va3MgZm9yIHRoZSBtb3N0IHJlY2VudGx5CisgICAgICAgICAgICAgICAgICAgIGJ1aWx0IGltYWdlIGFjY29yZGluZyB0byB0aGUgdGltZXN0YW1wIHdoZW4gaXQgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgbG9vayBmb3IgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIE1pbmltYWxseSwgdGhyb3VnaCB0aGUgdXNlIG9mIG9wdGlvbnMsIHlvdSBtdXN0IHByb3ZpZGUKKyAgICAgICAgICAgICAgICAgICAgZWl0aGVyIGEgbWFjaGluZSBuYW1lLCBhIHZpcnR1YWwgbWFjaGluZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPip3aWMudm1kazwvZmlsZW5hbWU+KSwgb3IgYSBrZXJuZWwgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJpbjwvZmlsZW5hbWU+KS48L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgaXMgYSBkZXNjcmlwdGlvbiBvZiA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBvcHRpb25zIHlvdSBjYW4gcHJvdmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lOgotICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgSWYgeW91IGRvIHByb3ZpZGUgc29tZSAiaWxsZWdhbCIgb3B0aW9uIGNvbWJpbmF0aW9uIG9yIHBlcmhhcHMKLSAgICAgICAgICAgICAgICB5b3UgZG8gbm90IHByb3ZpZGUgZW5vdWdoIGluIHRoZSB3YXkgb2Ygb3B0aW9ucywKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHByb3ZpZGVzIGFwcHJvcHJpYXRlIGVycm9yCi0gICAgICAgICAgICAgICAgbWVzc2FnaW5nIHRvIGhlbHAgeW91IGNvcnJlY3QgdGhlIHByb2JsZW0uCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48cmVwbGFjZWFibGU+UUVNVUFSQ0g8L3JlcGxhY2VhYmxlPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIFFFTVUgbWFjaGluZSBhcmNoaXRlY3R1cmUsIHdoaWNoIG11c3QgYmUgInFlbXV4ODYiLAotICAgICAgICAgICAgICAgICAgICAicWVtdXg4Nl82NCIsICJxZW11YXJtIiwgInFlbXVtaXBzIiwgInFlbXVtaXBzZWwiLAotICAgICAgICAgICAgICAgICAgICDigJxxZW11bWlwczY0IiwgInFlbXVzaDQiLCAicWVtdXBwYyIsICJxZW11bWljcm9ibGF6ZSIsCi0gICAgICAgICAgICAgICAgICAgIG9yICJxZW11enlucSIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlZNPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIHZpcnR1YWwgbWFjaGluZSBpbWFnZSwgd2hpY2ggbXVzdCBiZSBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4udm1kazwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIG9wdGlvbiB3aGVuIHlvdSB3YW50IHRvIGJvb3QgYQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnZtZGs8L2ZpbGVuYW1lPiBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGltYWdlIGZpbGVuYW1lIHlvdSBwcm92aWRlIG11c3QgY29udGFpbiBvbmUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzdHJpbmdzOiAicWVtdXg4Ni02NCIsICJxZW11eDg2IiwgInFlbXVhcm0iLAotICAgICAgICAgICAgICAgICAgICAicWVtdW1pcHM2NCIsICJxZW11bWlwcyIsICJxZW11cHBjIiwgb3IgInFlbXVzaDQiLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHJlcGxhY2VhYmxlPlJPT1RGUzwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBBIHJvb3QgZmlsZXN5c3RlbSB0aGF0IGhhcyBvbmUgb2YgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICBmaWxldHlwZSBleHRlbnNpb25zOiAiZXh0MiIsICJleHQzIiwgImV4dDQiLCAiamZmczIiLAotICAgICAgICAgICAgICAgICAgICAibmZzIiwgb3IgImJ0cmZzIi4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGZpbGVuYW1lIHlvdSBwcm92aWRlIGZvciB0aGlzIG9wdGlvbiB1c2VzIOKAnG5mc+KAnSwgaXQKLSAgICAgICAgICAgICAgICAgICAgbXVzdCBwcm92aWRlIGFuIGV4cGxpY2l0IHJvb3QgZmlsZXN5c3RlbSBwYXRoLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHJlcGxhY2VhYmxlPktFUk5FTDwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBBIGtlcm5lbCBpbWFnZSwgd2hpY2ggaXMgYSA8ZmlsZW5hbWU+LmJpbjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHByb3ZpZGUgYSA8ZmlsZW5hbWU+LmJpbjwvZmlsZW5hbWU+IGZpbGUsCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gZGV0ZWN0cyBpdCBhbmQgYXNzdW1lcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyBhIGtlcm5lbCBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIFFFTVUgbWFjaGluZSwgd2hpY2ggbXVzdCBiZSBvbmUKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZzogInFlbXV4ODYiLAotICAgICAgICAgICAgICAgICAgICAicWVtdXg4Ni02NCIsICJxZW11YXJtIiwgInFlbXVtaXBzIiwgInFlbXVtaXBzZWwiLAotICAgICAgICAgICAgICAgICAgICDigJxxZW11bWlwczY0IiwgInFlbXVzaDQiLCAicWVtdXBwYyIsICJxZW11bWljcm9ibGF6ZSIsCi0gICAgICAgICAgICAgICAgICAgIG9yICJxZW11enlucSIuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+UUVNVUFSQ0g8L3JlcGxhY2VhYmxlPiBvcHRpb25zIGFyZSBiYXNpY2FsbHkKLSAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiB0cmllcyB0byBkZXRlcm1pbmUKLSAgICAgICAgICAgICAgICAgICAgaXQgYmFzZWQgb24gb3RoZXIgb3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5yYW1mczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgeW91IGFyZSBib290aW5nIGFuIGluaXRpYWwgUkFNIGRpc2sgKGluaXRyYW1mcykKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIHdoaWNoIG1lYW5zIHRoZSA8ZmlsZW5hbWU+RlNUWVBFPC9maWxlbmFtZT4gaXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNwaW8uZ3o8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pc288L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHlvdSBhcmUgYm9vdGluZyBhbiBJU08gaW1hZ2UsIHdoaWNoIG1lYW5zIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RlNUWVBFPC9maWxlbmFtZT4gaXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5pc288L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRGlzYWJsZXMgdGhlIHZpZGVvIGNvbnNvbGUsIHdoaWNoIHNldHMgdGhlIGNvbnNvbGUgdG8KLSAgICAgICAgICAgICAgICAgICAgInR0eXMwIi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5zZXJpYWw8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBhIHNlcmlhbCBjb25zb2xlIG9uCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L3R0eVMwPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Ymlvc2RpcjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBFc3RhYmxpc2hlcyBhIGN1c3RvbSBkaXJlY3RvcnkgZm9yIEJJT1MsIFZHQSBCSU9TIGFuZAotICAgICAgICAgICAgICAgICAgICBrZXltYXBzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJpb3NmaWxlbmFtZTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBFc3RhYmxpc2hlcyBhIGN1c3RvbSBCSU9TIG5hbWUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cWVtdXBhcmFtcz1cIjxyZXBsYWNlYWJsZT54eXo8L3JlcGxhY2VhYmxlPlwiPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBjdXN0b20gUUVNVSBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBvcHRpb24gdG8gcGFzcyBvcHRpb25zIG90aGVyIHRoYW4gdGhlIHNpbXBsZQotICAgICAgICAgICAgICAgICAgICAia3ZtIiBhbmQgInNlcmlhbCIgb3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ib290cGFyYW1zPVwiPHJlcGxhY2VhYmxlPnh5ejwvcmVwbGFjZWFibGU+XCI8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGN1c3RvbSBib290IHBhcmFtZXRlcnMgZm9yIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YXVkaW88L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBhdWRpbyBpbiBRRU1VLgotICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBvcHRpb24gbXVzdCBiZQotICAgICAgICAgICAgICAgICAgICBlaXRoZXIgInFlbXV4ODYiIG9yICJxZW11eDg2LTY0IiBpbiBvcmRlciBmb3IgYXVkaW8gdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgZW5hYmxlZC4KLSAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgPGZpbGVuYW1lPnNuZF9pbnRlbDh4MDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIG9yIDxmaWxlbmFtZT5zbmRfZW5zMTM3MDwvZmlsZW5hbWU+IGRyaXZlciBtdXN0IGJlCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBsaW51eCBndWVzdC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5zbGlycDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBFbmFibGVzICJzbGlycCIgbmV0d29ya2luZywgd2hpY2ggaXMgYSBkaWZmZXJlbnQgd2F5Ci0gICAgICAgICAgICAgICAgICAgIG9mIG5ldHdvcmtpbmcgdGhhdCBkb2VzIG5vdCBuZWVkIHJvb3QgYWNjZXNzCi0gICAgICAgICAgICAgICAgICAgIGJ1dCBhbHNvIGlzIG5vdCBhcyBlYXN5IHRvIHVzZSBvciBjb21wcmVoZW5zaXZlCi0gICAgICAgICAgICAgICAgICAgIGFzIHRoZSBkZWZhdWx0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2t2bS1jb25kJz48ZmlsZW5hbWU+a3ZtPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgS1ZNIHdoZW4gcnVubmluZyAicWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiCi0gICAgICAgICAgICAgICAgICAgIFFFTVUgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIEtWTSB0byB3b3JrLCBhbGwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG11c3QgYmUgbWV0OgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgZXhhbXBsZXMgdG8gaGVscCBpbGx1c3RyYXRlCisgICAgICAgICAgICAgICAgICAgIGZ1cnRoZXIgUUVNVToKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gbXVzdCBiZSBlaXRoZXIKLXFlbXV4ODYiIG9yICJxZW11eDg2LTY0Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3RhcnRzIFFFTVUgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gc2V0IHRvICJxZW11eDg2Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyBhIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGF1dG9tYXRpY2FsbHkgZmluZHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ6SW1hZ2UtcWVtdXg4Ni5iaW48L2ZpbGVuYW1lPiBpbWFnZSBmaWxlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni0yMDE0MDcwNzA3NDYxMS5yb290ZnMuZXh0MzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc3VtaW5nIHRoZSBjdXJyZW50IGJ1aWxkIGNyZWF0ZWQgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBtb3JlIHRoYW4gb25lIGltYWdlIHdpdGggdGhlIHNhbWUgbmFtZSBleGlzdHMsIFFFTVUgZmluZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlcyB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBpbWFnZSBhY2NvcmRpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcnVucWVtdSBxZW11eDg2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBoYXMgdG8gaGF2ZSB0aGUgS1ZNIG1vZHVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQsIHdoaWNoIGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L2t2bTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAgYnVpbGQgaG9zdCA8ZmlsZW5hbWU+L2Rldi9rdm08L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBoYXMgdG8gYmUgYm90aCB3cml0YWJsZSBhbmQgcmVhZGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmt2bS12aG9zdDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBFbmFibGVzIEtWTSB3aXRoIFZIT1NUIHN1cHBvcnQgd2hlbiBydW5uaW5nICJxZW11eDg2IiBvciAicWVtdXg4Ni02NCIKLSAgICAgICAgICAgICAgICAgICAgUUVNVSBhcmNoaXRlY3R1cmVzLgotICAgICAgICAgICAgICAgICAgICBGb3IgS1ZNIHdpdGggVkhPU1QgdG8gd29yaywgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG11c3QKLSAgICAgICAgICAgICAgICAgICAgYmUgbWV0OgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2t2bS1jb25kJz5rdm08L2xpbms+IG9wdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBidWlsZCBob3N0IGhhcyB0byBoYXZlIHZpcnRpbyBuZXQgZGV2aWNlLCB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSA8ZmlsZW5hbWU+L2Rldi92aG9zdC1uZXQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgaG9zdCA8ZmlsZW5hbWU+L2Rldi92aG9zdC1uZXQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBoYXMgdG8gYmUgZWl0aGVyIHJlYWRhYmxlIG9yIHdyaXRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIOKAnHNsaXJwLWVuYWJsZWTigJ0uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB1YmxpY3ZuYzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGEgVk5DIHNlcnZlciBvcGVuIHRvIGFsbCBob3N0cy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIGZ1cnRoZXIgdW5kZXJzdGFuZGluZyByZWdhcmRpbmcgb3B0aW9uIHVzZSB3aXRoCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+LCBjb25zaWRlciBzb21lIGV4YW1wbGVzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3RhcnRzIFFFTVUgd2l0aAotICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBzZXQgdG8gInFlbXV4ODYiLgotICAgICAgICAgICAgQXNzdW1pbmcgYSBzdGFuZGFyZAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAotICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBhdXRvbWF0aWNhbGx5IGZpbmRzIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmJ6SW1hZ2UtcWVtdXg4Ni5iaW48L2ZpbGVuYW1lPiBpbWFnZSBmaWxlIGFuZAotICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtMjAxNDA3MDcwNzQ2MTEucm9vdGZzLmV4dDM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgKGFzc3VtaW5nIHRoZSBjdXJyZW50IGJ1aWxkIGNyZWF0ZWQgYQotICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlKS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFdoZW4gbW9yZSB0aGFuIG9uZSBpbWFnZSB3aXRoIHRoZSBzYW1lIG5hbWUgZXhpc3RzLCBRRU1VIGZpbmRzCi0gICAgICAgICAgICAgICAgYW5kIHVzZXMgdGhlIG1vc3QgcmVjZW50bHkgYnVpbHQgaW1hZ2UgYWNjb3JkaW5nIHRvIHRoZQotICAgICAgICAgICAgICAgIHRpbWVzdGFtcC4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAkIHJ1bnFlbXUgcWVtdXg4NgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhpcyBleGFtcGxlIHByb2R1Y2VzIHRoZSBleGFjdCBzYW1lIHJlc3VsdHMgYXMgdGhlCi0gICAgICAgICAgICBwcmV2aW91cyBleGFtcGxlLgotICAgICAgICAgICAgVGhpcyBjb21tYW5kLCBob3dldmVyLCBzcGVjaWZpY2FsbHkgcHJvdmlkZXMgdGhlIGltYWdlCi0gICAgICAgICAgICBhbmQgcm9vdCBmaWxlc3lzdGVtIHR5cGUuCi0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHByb2R1Y2VzIHRoZSBleGFjdCBzYW1lIHJlc3VsdHMgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQsIGhvd2V2ZXIsIHNwZWNpZmljYWxseSBwcm92aWRlcyB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcm9vdCBmaWxlc3lzdGVtIHR5cGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHJ1bnFlbXUgcWVtdXg4NiBjb3JlLWltYWdlLW1pbmltYWwgZXh0MwotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhpcyBleGFtcGxlIHNwZWNpZmllcyB0byBib290IGFuIGluaXRpYWwgUkFNIGRpc2sgaW1hZ2UKLSAgICAgICAgICAgIGFuZCB0byBlbmFibGUgYXVkaW8gaW4gUUVNVS4KLSAgICAgICAgICAgIEZvciB0aGlzIGNhc2UsIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gc2V0IHRoZQotICAgICAgICAgICAgaW50ZXJuYWwgdmFyaWFibGUgPGZpbGVuYW1lPkZTVFlQRTwvZmlsZW5hbWU+IHRvCi0gICAgICAgICAgICAiY3Bpby5neiIuCi0gICAgICAgICAgICBBbHNvLCBmb3IgYXVkaW8gdG8gYmUgZW5hYmxlZCwgYW4gYXBwcm9wcmlhdGUgZHJpdmVyIG11c3QKLSAgICAgICAgICAgIGJlIGluc3RhbGxlZCAoc2VlIHRoZSBwcmV2aW91cyBkZXNjcmlwdGlvbiBmb3IgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YXVkaW88L2ZpbGVuYW1lPiBvcHRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24pLgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3BlY2lmaWVzIHRvIGJvb3QgYW4gaW5pdGlhbCBSQU0gZGlzayBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0byBlbmFibGUgYXVkaW8gaW4gUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBjYXNlLCA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCB2YXJpYWJsZSA8ZmlsZW5hbWU+RlNUWVBFPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Bpby5neiIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgZm9yIGF1ZGlvIHRvIGJlIGVuYWJsZWQsIGFuIGFwcHJvcHJpYXRlIGRyaXZlciBtdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaW5zdGFsbGVkIChzZWUgdGhlIHByZXZpb3VzIGRlc2NyaXB0aW9uIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXVkaW88L2ZpbGVuYW1lPiBvcHRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBydW5xZW11IHFlbXV4ODYgcmFtZnMgYXVkaW8KLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBkb2VzIG5vdCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiBmb3IKLSAgICAgICAgICAgIFFFTVUgdG8gbGF1bmNoLgotICAgICAgICAgICAgV2hpbGUgdGhlIGNvbW1hbmQgZG9lcyBwcm92aWRlIGEgcm9vdCBmaWxlc3lzdGVtIHR5cGUsIGl0Ci0gICAgICAgICAgICBtdXN0IGFsc28gbWluaW1hbGx5IHByb3ZpZGUgYQotICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiwKLSAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5LRVJORUw8L3JlcGxhY2VhYmxlPiwgb3IKLSAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5WTTwvcmVwbGFjZWFibGU+IG9wdGlvbi4KLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgdG8gbGF1bmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoZSBjb21tYW5kIGRvZXMgcHJvdmlkZSBhIHJvb3QgZmlsZXN5c3RlbSB0eXBlLCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYWxzbyBtaW5pbWFsbHkgcHJvdmlkZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+S0VSTkVMPC9yZXBsYWNlYWJsZT4sIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlZNPC9yZXBsYWNlYWJsZT4gb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBydW5xZW11IGV4dDMKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzcGVjaWZpZXMgdG8gYm9vdCBhIHZpcnR1YWwgbWFjaGluZSBpbWFnZQotICAgICAgICAgICAgKDxmaWxlbmFtZT4udm1kazwvZmlsZW5hbWU+IGZpbGUpLgotICAgICAgICAgICAgRnJvbSB0aGUgPGZpbGVuYW1lPi52bWRrPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRldGVybWluZXMgdGhlIFFFTVUKLSAgICAgICAgICAgIGFyY2hpdGVjdHVyZSAoPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPikgdG8gYmUKLSAgICAgICAgICAgICJxZW11eDg2IiBhbmQgdGhlIHJvb3QgZmlsZXN5c3RlbSB0eXBlIHRvIGJlICJ2bWRrIi4KLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IC9ob21lL3Njb3R0LWxlbm92by92bS9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni52bWRrCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzcGVjaWZpZXMgdG8gYm9vdCBhIHZpcnR1YWwgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlICg8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4gZmlsZSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgPGZpbGVuYW1lPi53aWMudm1kazwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gZGV0ZXJtaW5lcyB0aGUgUUVNVQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSAoPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPikgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicWVtdXg4NiIgYW5kIHRoZSByb290IGZpbGVzeXN0ZW0gdHlwZSB0byBiZSAidm1kayIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgL2hvbWUvc2NvdHQtbGVub3ZvL3ZtL2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LndpYy52bWRrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgogCi08c2VjdGlvbiBpZD0ncWVtdS1ydW5uaW5nLXVuZGVyLWEtbmV0d29yay1maWxlLXN5c3RlbS1uZnMtc2VydmVyJz4KLSAgICA8dGl0bGU+UnVubmluZyBVbmRlciBhIE5ldHdvcmsgRmlsZSBTeXN0ZW0gKE5GUykgU2VydmVyPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBPbmUgbWV0aG9kIGZvciBydW5uaW5nIFFFTVUgaXMgdG8gcnVuIGl0IG9uIGFuIE5GUyBzZXJ2ZXIuCi0gICAgICAgIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lIGZpbGUgc3lzdGVtIGZyb20gYm90aAotICAgICAgICB0aGUgYnVpbGQgYW5kIHRoZSBlbXVsYXRlZCBzeXN0ZW0gYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgSXQgaXMgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgc3lzdGVtIGRvZXMgbm90IG5lZWQgcm9vdCBwcml2aWxlZ2VzCi0gICAgICAgIHRvIHJ1bi4KLSAgICAgICAgSXQgdXNlcyBhIHVzZXIgc3BhY2UgTkZTIHNlcnZlciB0byBhdm9pZCB0aGF0LgotICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgZm9yIHJ1bm5pbmcgUUVNVSB1c2luZyBhbiBORlMKLSAgICAgICAgc2VydmVyIGFuZCB0aGVuIGhvdyB5b3UgY2FuIHN0YXJ0IGFuZCBzdG9wIHRoZSBzZXJ2ZXIuCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J3FlbXUtc2V0dGluZy11cC10by11c2UtbmZzJz4KLSAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIE5GUzwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J3N3aXRjaGluZy1iZXR3ZWVuLWNvbnNvbGVzJz4KKyAgICAgICAgPHRpdGxlPlN3aXRjaGluZyBCZXR3ZWVuIENvbnNvbGVzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uY2UgeW91IGFyZSBhYmxlIHRvIHJ1biBRRU1VIGluIHlvdXIgZW52aXJvbm1lbnQsIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXUtZXh0cmFjdC1zZGs8L2ZpbGVuYW1lPiBzY3JpcHQsIHdoaWNoIGlzIGxvY2F0ZWQKLSAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbG9uZyB3aXRoCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHNjcmlwdC4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IHRha2VzIGEgcm9vdAotICAgICAgICAgICAgZmlsZSBzeXN0ZW0gdGFyYmFsbCBhbmQgZXh0cmFjdHMgaXQgaW50byBhIGxvY2F0aW9uIHRoYXQgeW91Ci0gICAgICAgICAgICBzcGVjaWZ5LgotICAgICAgICAgICAgVGhlbiwgd2hlbiB5b3UgcnVuIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4sIHlvdSBjYW4gc3BlY2lmeQotICAgICAgICAgICAgdGhlIGxvY2F0aW9uIHRoYXQgaGFzIHRoZSBmaWxlIHN5c3RlbSB0byBwYXNzIGl0IHRvIFFFTVUuCi0gICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCB0YWtlcyBhIGZpbGUgc3lzdGVtIGFuZCBleHRyYWN0cyBpdCB0bwotICAgICAgICAgICAgYSBkaXJlY3RvcnkgbmFtZWQgPGZpbGVuYW1lPnRlc3QtbmZzPC9maWxlbmFtZT46Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICBXaGVuIGJvb3Rpbmcgb3IgcnVubmluZyBRRU1VLCB5b3UgY2FuIHN3aXRjaCBiZXR3ZWVuCisgICAgICAgICAgICBzdXBwb3J0ZWQgY29uc29sZXMgYnkgdXNpbmcKKyAgICAgICAgICAgIEN0cmwrQWx0KzxyZXBsYWNlYWJsZT5udW1iZXI8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBDdHJsK0FsdCszIHN3aXRjaGVzIHlvdSB0byB0aGUgc2VyaWFsIGNvbnNvbGUKKyAgICAgICAgICAgIGFzIGxvbmcgYXMgdGhhdCBjb25zb2xlIGlzIGVuYWJsZWQuCisgICAgICAgICAgICBCZWluZyBhYmxlIHRvIHN3aXRjaCBjb25zb2xlcyBpcyBoZWxwZnVsLCBmb3IgZXhhbXBsZSwgaWYKKyAgICAgICAgICAgIHRoZSBtYWluIFFFTVUgY29uc29sZSBicmVha3MgZm9yIHNvbWUgcmVhc29uLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVXN1YWxseSwgIjIiIGdldHMgeW91IHRvIHRoZSBtYWluIGNvbnNvbGUgYW5kICIzIgorICAgICAgICAgICAgICAgIGdldHMgeW91IHRvIHRoZSBzZXJpYWwgY29uc29sZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZW1vdmluZy10aGUtc3BsYXNoLXNjcmVlbic+CisgICAgICAgIDx0aXRsZT5SZW1vdmluZyB0aGUgU3BsYXNoIFNjcmVlbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIHJlbW92ZSB0aGUgc3BsYXNoIHNjcmVlbiB3aGVuIFFFTVUgaXMgYm9vdGluZyBieQorICAgICAgICAgICAgdXNpbmcgQWx0K2xlZnQuCisgICAgICAgICAgICBSZW1vdmluZyB0aGUgc3BsYXNoIHNjcmVlbiBhbGxvd3MgeW91IHRvIHNlZSB3aGF0IGlzCisgICAgICAgICAgICBoYXBwZW5pbmcgaW4gdGhlIGJhY2tncm91bmQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nZGlzYWJsaW5nLXRoZS1jdXJzb3ItZ3JhYic+CisgICAgICAgIDx0aXRsZT5EaXNhYmxpbmcgdGhlIEN1cnNvciBHcmFiPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBkZWZhdWx0IFFFTVUgaW50ZWdyYXRpb24gY2FwdHVyZXMgdGhlIGN1cnNvciB3aXRoaW4gdGhlCisgICAgICAgICAgICBtYWluIHdpbmRvdy4KKyAgICAgICAgICAgIEl0IGRvZXMgdGhpcyBzaW5jZSBzdGFuZGFyZCBtb3VzZSBkZXZpY2VzIG9ubHkgcHJvdmlkZQorICAgICAgICAgICAgcmVsYXRpdmUgaW5wdXQgYW5kIG5vdCBhYnNvbHV0ZSBjb29yZGluYXRlcy4KKyAgICAgICAgICAgIFlvdSB0aGVuIGhhdmUgdG8gYnJlYWsgb3V0IG9mIHRoZSBncmFiIHVzaW5nIHRoZSAiQ3RybCtBbHQiCisgICAgICAgICAgICBrZXkgY29tYmluYXRpb24uCisgICAgICAgICAgICBIb3dldmVyLCB0aGUgWW9jdG8gUHJvamVjdCdzIGludGVncmF0aW9uIG9mIFFFTVUgZW5hYmxlcworICAgICAgICAgICAgdGhlIHdhY29tIFVTQiB0b3VjaCBwYWQgZHJpdmVyIGJ5IGRlZmF1bHQgdG8gYWxsb3cgaW5wdXQKKyAgICAgICAgICAgIG9mIGFic29sdXRlIGNvb3JkaW5hdGVzLgorICAgICAgICAgICAgVGhpcyBkZWZhdWx0IG1lYW5zIHRoYXQgdGhlIG1vdXNlIGNhbiBlbnRlciBhbmQgbGVhdmUgdGhlCisgICAgICAgICAgICBtYWluIHdpbmRvdyB3aXRob3V0IHRoZSBncmFiIHRha2luZyBlZmZlY3QgbGVhZGluZyB0byBhCisgICAgICAgICAgICBiZXR0ZXIgdXNlciBleHBlcmllbmNlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtcnVubmluZy11bmRlci1hLW5ldHdvcmstZmlsZS1zeXN0ZW0tbmZzLXNlcnZlcic+CisgICAgICAgIDx0aXRsZT5SdW5uaW5nIFVuZGVyIGEgTmV0d29yayBGaWxlIFN5c3RlbSAoTkZTKSBTZXJ2ZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25lIG1ldGhvZCBmb3IgcnVubmluZyBRRU1VIGlzIHRvIHJ1biBpdCBvbiBhbiBORlMgc2VydmVyLgorICAgICAgICAgICAgVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgZmlsZSBzeXN0ZW0KKyAgICAgICAgICAgIGZyb20gYm90aCB0aGUgYnVpbGQgYW5kIHRoZSBlbXVsYXRlZCBzeXN0ZW0gYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgICAgIEl0IGlzIGFsc28gd29ydGggbm90aW5nIHRoYXQgdGhlIHN5c3RlbSBkb2VzIG5vdCBuZWVkIHJvb3QKKyAgICAgICAgICAgIHByaXZpbGVnZXMgdG8gcnVuLgorICAgICAgICAgICAgSXQgdXNlcyBhIHVzZXIgc3BhY2UgTkZTIHNlcnZlciB0byBhdm9pZCB0aGF0LgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIHNldCB1cCBmb3IgcnVubmluZyBRRU1VIHVzaW5nIGFuIE5GUworICAgICAgICAgICAgc2VydmVyLgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4dHJhY3QgYSBSb290IEZpbGVzeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgYXJlIGFibGUgdG8gcnVuIFFFTVUgaW4geW91ciBlbnZpcm9ubWVudCwgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIDxmaWxlbmFtZT5ydW5xZW11LWV4dHJhY3Qtc2RrPC9maWxlbmFtZT4gc2NyaXB0LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBsb2NhdGVkIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbG9uZyB3aXRoIHRoZSA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5ydW5xZW11LWV4dHJhY3Qtc2RrPC9maWxlbmFtZT4gdGFrZXMgYQorICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gdGFyYmFsbCBhbmQgZXh0cmFjdHMgaXQgaW50byBhIGxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IHNwZWNpZnkuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHRha2VzIGEgZmlsZSBzeXN0ZW0gYW5kCisgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIGl0IHRvIGEgZGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXN0LW5mczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHJ1bnFlbXUtZXh0cmFjdC1zZGsgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2NvcmUtaW1hZ2Utc2F0by1xZW11eDg2LnRhci5iejIgdGVzdC1uZnMKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgZXh0cmFjdGVkIHRoZSBmaWxlIHN5c3RlbSwgeW91IGNhbiBydW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gbm9ybWFsbHkgd2l0aCB0aGUgYWRkaXRpb25hbAotICAgICAgICAgICAgbG9jYXRpb24gb2YgdGhlIGZpbGUgc3lzdGVtLgotICAgICAgICAgICAgWW91IGNhbiB0aGVuIGFsc28gbWFrZSBjaGFuZ2VzIHRvIHRoZSBmaWxlcyB3aXRoaW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT4uL3Rlc3QtbmZzPC9maWxlbmFtZT4gYW5kIHNlZSB0aG9zZSBjaGFuZ2VzIGFwcGVhciBpbiB0aGUKLSAgICAgICAgICAgIGltYWdlIGluIHJlYWwgdGltZS4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBpbWFnZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdGFydCBRRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgZXh0cmFjdGVkIHRoZSBmaWxlIHN5c3RlbSwgeW91IGNhbiBydW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBub3JtYWxseSB3aXRoIHRoZSBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0aGVuIGFsc28gbWFrZSBjaGFuZ2VzIHRvIHRoZSBmaWxlcyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi4vdGVzdC1uZnM8L2ZpbGVuYW1lPiBhbmQgc2VlIHRob3NlIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgYXBwZWFyIGluIHRoZSBpbWFnZSBpbiByZWFsIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbWFnZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBydW5xZW11IHFlbXV4ODYgLi90ZXN0LW5mcwotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3FlbXUtc3RhcnRpbmctYW5kLXN0b3BwaW5nLW5mcyc+Ci0gICAgICAgIDx0aXRsZT5TdGFydGluZyBhbmQgU3RvcHBpbmcgTkZTPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gbWFudWFsbHkgc3RhcnQgYW5kIHN0b3AgdGhlIE5GUyBzaGFyZSB1c2luZyB0aGVzZQotICAgICAgICAgICAgY29tbWFuZHM6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnN0YXJ0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgU3RhcnRzIHRoZSBORlMgc2hhcmU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2hvdWxkIHlvdSBuZWVkIHRvIHN0YXJ0LCBzdG9wLCBvciByZXN0YXJ0IHRoZSBORlMgc2hhcmUsCisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHN0YXJ0cyB0aGUgTkZTIHNoYXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcnVucWVtdS1leHBvcnQtcm9vdGZzIHN0YXJ0IDxyZXBsYWNlYWJsZT5maWxlLXN5c3RlbS1sb2NhdGlvbjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c3RvcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFN0b3BzIHRoZSBORlMgc2hhcmU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcnVucWVtdS1leHBvcnQtcm9vdGZzIHN0b3AgPHJlcGxhY2VhYmxlPmZpbGUtc3lzdGVtLWxvY2F0aW9uPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5yZXN0YXJ0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUmVzdGFydHMgdGhlIE5GUyBzaGFyZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgc3RvcHMgdGhlIE5GUyBzaGFyZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICBydW5xZW11LWV4cG9ydC1yb290ZnMgc3RvcCA8cmVwbGFjZWFibGU+ZmlsZS1zeXN0ZW0tbG9jYXRpb248L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgcmVzdGFydHMgdGhlIE5GUyBzaGFyZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHJ1bnFlbXUtZXhwb3J0LXJvb3RmcyByZXN0YXJ0IDxyZXBsYWNlYWJsZT5maWxlLXN5c3RlbS1sb2NhdGlvbjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3FlbXUtdGlwcy1hbmQtdHJpY2tzJz4KLSAgICA8dGl0bGU+VGlwcyBhbmQgVHJpY2tzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoaW5ncyB5b3UgY2FuIGRvIHRvIG1ha2UgcnVubmluZyBRRU1VCi0gICAgICAgIGluIHRoZSBjb250ZXh0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGEgYmV0dGVyIGV4cGVyaWVuY2U6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlN3aXRjaGluZyBCZXR3ZWVuIENvbnNvbGVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgV2hlbiBib290aW5nIG9yIHJ1bm5pbmcgUUVNVSwgeW91IGNhbiBzd2l0Y2ggYmV0d2VlbgotICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBjb25zb2xlcyBieSB1c2luZwotICAgICAgICAgICAgICAgIEN0cmwrQWx0KzxyZXBsYWNlYWJsZT5udW1iZXI8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgQ3RybCtBbHQrMyBzd2l0Y2hlcyB5b3UgdG8gdGhlIHNlcmlhbCBjb25zb2xlIGFzCi0gICAgICAgICAgICAgICAgbG9uZyBhcyB0aGF0IGNvbnNvbGUgaXMgZW5hYmxlZC4KLSAgICAgICAgICAgICAgICBCZWluZyBhYmxlIHRvIHN3aXRjaCBjb25zb2xlcyBpcyBoZWxwZnVsLCBmb3IgZXhhbXBsZSwgaWYgdGhlCi0gICAgICAgICAgICAgICAgbWFpbiBRRU1VIGNvbnNvbGUgYnJlYWtzIGZvciBzb21lIHJlYXNvbi4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVXN1YWxseSwgIjIiIGdldHMgeW91IHRvIHRoZSBtYWluIGNvbnNvbGUgYW5kICIzIiBnZXRzIHlvdQotICAgICAgICAgICAgICAgICAgICB0byB0aGUgc2VyaWFsIGNvbnNvbGUuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SZW1vdmluZyB0aGUgU3BsYXNoIFNjcmVlbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVtb3ZlIHRoZSBzcGxhc2ggc2NyZWVuIHdoZW4gUUVNVSBpcyBib290aW5nIGJ5Ci0gICAgICAgICAgICAgICAgdXNpbmcgQWx0K2xlZnQuCi0gICAgICAgICAgICAgICAgUmVtb3ZpbmcgdGhlIHNwbGFzaCBzY3JlZW4gYWxsb3dzIHlvdSB0byBzZWUgd2hhdCBpcyBoYXBwZW5pbmcKLSAgICAgICAgICAgICAgICBpbiB0aGUgYmFja2dyb3VuZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RGlzYWJsaW5nIHRoZSBDdXJzb3IgR3JhYjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IFFFTVUgaW50ZWdyYXRpb24gY2FwdHVyZXMgdGhlIGN1cnNvciB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgbWFpbiB3aW5kb3cuCi0gICAgICAgICAgICAgICAgSXQgZG9lcyB0aGlzIHNpbmNlIHN0YW5kYXJkIG1vdXNlIGRldmljZXMgb25seSBwcm92aWRlIHJlbGF0aXZlCi0gICAgICAgICAgICAgICAgaW5wdXQgYW5kIG5vdCBhYnNvbHV0ZSBjb29yZGluYXRlcy4KLSAgICAgICAgICAgICAgICBZb3UgdGhlbiBoYXZlIHRvIGJyZWFrIG91dCBvZiB0aGUgZ3JhYiB1c2luZyB0aGUgIkN0cmwrQWx0IiBrZXkKLSAgICAgICAgICAgICAgICBjb21iaW5hdGlvbi4KLSAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgWW9jdG8gUHJvamVjdCdzIGludGVncmF0aW9uIG9mIFFFTVUgZW5hYmxlcyB0aGUKLSAgICAgICAgICAgICAgICB3YWNvbSBVU0IgdG91Y2ggcGFkIGRyaXZlciBieSBkZWZhdWx0IHRvIGFsbG93IGlucHV0IG9mIGFic29sdXRlCi0gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXMuCi0gICAgICAgICAgICAgICAgVGhpcyBkZWZhdWx0IG1lYW5zIHRoYXQgdGhlIG1vdXNlIGNhbiBlbnRlciBhbmQgbGVhdmUgdGhlCi0gICAgICAgICAgICAgICAgbWFpbiB3aW5kb3cgd2l0aG91dCB0aGUgZ3JhYiB0YWtpbmcgZWZmZWN0IGxlYWRpbmcgdG8gYSBiZXR0ZXIKLSAgICAgICAgICAgICAgICB1c2VyIGV4cGVyaWVuY2UuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQogPC9jaGFwdGVyPgogPCEtLQogdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKaW5kZXggYjg1MjdmNi4uMTk1YjIyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCkBAIC03LDUyMyArNyw3NDQgQEAKIDx0aXRsZT5HZXR0aW5nIFN0YXJ0ZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CiAKIDxwYXJhPgotICAgIFRoaXMgY2hhcHRlciBpbnRyb2R1Y2VzIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBnaXZlcyB5b3UgYW4gaWRlYSBvZiB3aGF0IHlvdSBuZWVkIHRvIGdldCBzdGFydGVkLgotICAgIFlvdSBjYW4gZmluZCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBhbmQgYnVpbGQgb3IgdXNlIGltYWdlcyBmb3IKLSAgICBoYXJkd2FyZSBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgYnkgcmVhZGluZyB0aGUKKyAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgcHJvY2VkdXJlcyByZWxhdGVkIHRvIGdldHRpbmcgc2V0IHVwIHRvIHVzZSB0aGUKKyAgICBZb2N0byBQcm9qZWN0LgorICAgIEZvciBhIG1vcmUgZnJvbnQtdG8tZW5kIHByb2Nlc3MgdGhhdCB0YWtlcyB5b3UgZnJvbSBtaW5pbWFsbHkgcHJlcGFyaW5nCisgICAgYSBidWlsZCBob3N0IHRocm91Z2ggYnVpbGRpbmcgYW4gaW1hZ2UsIHNlZSB0aGUKICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC91bGluaz4uCiA8L3BhcmE+CiAKLTxwYXJhPgotICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBjaGFwdGVyIHN1bW1hcml6ZXMgd2hhdCBpcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBhbmQgcHJvdmlkZXMKLSAgICBzb21lIGhpZ2hlci1sZXZlbCBjb25jZXB0cyB5b3UgbWlnaHQgd2FudCB0byBjb25zaWRlci4KLTwvcGFyYT4KLQotPHNlY3Rpb24gaWQ9J2ludHJvZHVjaW5nLXRoZS15b2N0by1wcm9qZWN0Jz4KLSAgICA8dGl0bGU+SW50cm9kdWNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorPHNlY3Rpb24gaWQ9J3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz4KKyAgICA8dGl0bGU+U2V0dGluZyBVcCB0aGUgRGV2ZWxvcG1lbnQgSG9zdCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4tc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdCBmb2N1c2VkIG9uIGVtYmVkZGVkIExpbnV4IGRldmVsb3BtZW50LgotICAgICAgICBUaGUgcHJvamVjdCBjdXJyZW50bHkgcHJvdmlkZXMgYSBidWlsZCBzeXN0ZW0gdGhhdCBpcwotICAgICAgICByZWZlcnJlZCB0byBhcyB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L2xpbms+Ci0gICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24uCi0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHZhcmlvdXMgYW5jaWxsYXJ5IHRvb2xzIGZvciB0aGUgZW1iZWRkZWQgZGV2ZWxvcGVyCi0gICAgICAgIGFuZCBhbHNvIGZlYXR1cmVzIHRoZSBTYXRvIHJlZmVyZW5jZSBVc2VyIEludGVyZmFjZSwgd2hpY2ggaXMgb3B0aW1pemVkIGZvcgotICAgICAgICBzdHlsdXMtZHJpdmVuLCBsb3ctcmVzb2x1dGlvbiBzY3JlZW5zLgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgcHJvY2VkdXJlcyB0byBzZXQgdXAgeW91ciBkZXZlbG9wbWVudCBob3N0IHRvCisgICAgICAgIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgWW91IGNhbiB1c2UgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBuYXRpdmUgTGludXggZGV2ZWxvcG1lbnQgaG9zdCBvcgorICAgICAgICB5b3UgY2FuIHVzZQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICB3aGljaCBsZXZlcmFnZXMKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4sCisgICAgICAgIHRvIHByZXBhcmUgYW55IExpbnV4LCBNYWMsIG9yIFdpbmRvd3MgZGV2ZWxvcG1lbnQgaG9zdC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiB1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHdoaWNoIHVzZXMKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPiwgdG8gZGV2ZWxvcCBjb21wbGV0ZSBMaW51eAotICAgICAgICBpbWFnZXMgYW5kIGFzc29jaWF0ZWQgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgZm9yIGFyY2hpdGVjdHVyZXMgYmFzZWQKLSAgICAgICAgb24gQVJNLCBNSVBTLCBQb3dlclBDLCB4ODYgYW5kIHg4Ni02NC4KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBCeSBkZWZhdWx0LCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBjcmVhdGVzIGEgUG9reSBkaXN0cmlidXRpb24uCi0gICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIGNyZWF0ZSB5b3VyIG93biBkaXN0cmlidXRpb24gYnkgcHJvdmlkaW5nIGtleQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPi4KLSAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWRpc3RyaWJ1dGlvbic+Q3JlYXRpbmcgWW91ciBPd24gRGlzdHJpYnV0aW9uPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICAgICAgV2hpbGUgdGhlIFlvY3RvIFByb2plY3QgZG9lcyBub3QgcHJvdmlkZSBhIHN0cmljdCB0ZXN0aW5nIGZyYW1ld29yaywKLSAgICAgICAgaXQgZG9lcyBwcm92aWRlIG9yIGdlbmVyYXRlIGZvciB5b3UgYXJ0aWZhY3RzIHRoYXQgbGV0IHlvdSBwZXJmb3JtIHRhcmdldC1sZXZlbCBhbmQKLSAgICAgICAgZW11bGF0ZWQgdGVzdGluZyBhbmQgZGVidWdnaW5nLgotICAgICAgICBBZGRpdGlvbmFsbHksIGlmIHlvdSBhcmUgYW4gPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KLSAgICAgICAgSURFIHVzZXIsIHlvdSBjYW4gaW5zdGFsbCBhbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gdG8gYWxsb3cgeW91IHRvCi0gICAgICAgIGRldmVsb3Agd2l0aGluIHRoYXQgZmFtaWxpYXIgZW52aXJvbm1lbnQuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nZ2V0dGluZy1zZXR1cCc+Ci0gICAgPHRpdGxlPkdldHRpbmcgU2V0IFVwPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBIZXJlIGlzIHdoYXQgeW91IG5lZWQgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0OgorICAgICAgICBPbmNlIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBpcyBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LAorICAgICAgICBmdXJ0aGVyIHN0ZXBzIGFyZSBuZWNlc3NhcnkgZGVwZW5kaW5nIG9uIHdoYXQgeW91IHdhbnQgdG8KKyAgICAgICAgYWNjb21wbGlzaC4KKyAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgcmVmZXJlbmNlcyBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHByZXBhcmUgZm9yCisgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBkZXZlbG9wbWVudCwga2VybmVsIGRldmVsb3BtZW50LCBhbmQKKyAgICAgICAgZGV2ZWxvcG1lbnQgdXNpbmcgdGhlIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IElERToKICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SG9zdCBTeXN0ZW06PC9lbXBoYXNpcz4gIFlvdSBzaG91bGQgaGF2ZSBhIHJlYXNvbmFibHkgY3VycmVudAotICAgICAgICAgICAgICAgIExpbnV4LWJhc2VkIGhvc3Qgc3lzdGVtLgotICAgICAgICAgICAgICAgIFlvdSB3aWxsIGhhdmUgdGhlIGJlc3QgcmVzdWx0cyB3aXRoIGEgcmVjZW50IHJlbGVhc2Ugb2YgRmVkb3JhLAotICAgICAgICAgICAgICAgIG9wZW5TVVNFLCBEZWJpYW4sIFVidW50dSwgb3IgQ2VudE9TIGFzIHRoZXNlIHJlbGVhc2VzIGFyZSBmcmVxdWVudGx5IHRlc3RlZCBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgYW5kIG9mZmljaWFsbHkgc3VwcG9ydGVkLgotICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgdW5kZXIgdmFsaWRhdGlvbiBhbmQgdGhlaXIgc3RhdHVzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBhbmQgdGhlIHdpa2kgcGFnZSBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9EaXN0cmlidXRpb25fU3VwcG9ydCc+RGlzdHJpYnV0aW9uIFN1cHBvcnQ8L3VsaW5rPi48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHNvIGhhdmUgYWJvdXQgNTAgR2J5dGVzIG9mIGZyZWUgZGlzayBzcGFjZSBmb3IgYnVpbGRpbmcgaW1hZ2VzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYWNrYWdlczo8L2VtcGhhc2lzPiAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICByZXF1aXJlcyB0aGF0IGNlcnRhaW4gcGFja2FnZXMgZXhpc3Qgb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gKGUuZy4gUHl0aG9uIDIuNykuCi0gICAgICAgICAgICAgICAgU2VlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3BhY2thZ2VzJz5UaGUgQnVpbGQgSG9zdCBQYWNrYWdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgYW5kIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciB0aGUgZXhhY3QKLSAgICAgICAgICAgICAgICBwYWNrYWdlIHJlcXVpcmVtZW50cyBhbmQgdGhlIGluc3RhbGxhdGlvbiBjb21tYW5kcyB0byBpbnN0YWxsCi0gICAgICAgICAgICAgICAgdGhlbSBmb3IgdGhlIHN1cHBvcnRlZCBkaXN0cmlidXRpb25zLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtIGlkPSdsb2NhbC15cC1yZWxlYXNlJz48cGFyYT48ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBSZWxlYXNlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgWW91IG5lZWQgYSByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0IGxvY2FsbHkgaW5zdGFsbGVkIG9uCi0gICAgICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgVGhlIGRvY3VtZW50YXRpb24gcmVmZXJzIHRvIHRoaXMgc2V0IG9mIGxvY2FsbHkgaW5zdGFsbGVkIGZpbGVzCi0gICAgICAgICAgICAgICAgYXMgdGhlIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgICAgIFlvdSBjcmVhdGUgeW91ciBTb3VyY2UgRGlyZWN0b3J5IGJ5IHVzaW5nCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2l0Jz5HaXQ8L2xpbms+IHRvIGNsb25lIGEgbG9jYWwgY29weQotICAgICAgICAgICAgICAgIG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnksCi0gICAgICAgICAgICAgICAgb3IgYnkgZG93bmxvYWRpbmcgYW5kIHVucGFja2luZyBhIHRhcmJhbGwgb2YgYW4gb2ZmaWNpYWwKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgVGhlIHByZWZlcnJlZCBtZXRob2QgaXMgdG8gY3JlYXRlIGEgY2xvbmUgb2YgdGhlIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPldvcmtpbmcgZnJvbSBhIGNvcHkgb2YgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgYWxsb3dzIHlvdQotICAgICAgICAgICAgICAgIHRvIGNvbnRyaWJ1dGUgYmFjayBpbnRvIHRoZSBZb2N0byBQcm9qZWN0IG9yIHNpbXBseSB3b3JrIHdpdGgKLSAgICAgICAgICAgICAgICB0aGUgbGF0ZXN0IHNvZnR3YXJlIG9uIGEgZGV2ZWxvcG1lbnQgYnJhbmNoLgotICAgICAgICAgICAgICAgIEJlY2F1c2UgR2l0IG1haW50YWlucyBhbmQgY3JlYXRlcyBhbiB1cHN0cmVhbSByZXBvc2l0b3J5IHdpdGgKLSAgICAgICAgICAgICAgICBhIGNvbXBsZXRlIGhpc3Rvcnkgb2YgY2hhbmdlcyBhbmQgeW91IGFyZSB3b3JraW5nIHdpdGggYSBsb2NhbAotICAgICAgICAgICAgICAgIGNsb25lIG9mIHRoYXQgcmVwb3NpdG9yeSwgeW91IGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0IGRldmVsb3BtZW50IGJyYW5jaGVzIGFuZCB0YWcgbmFtZXMgdXNlZCBpbiB0aGUgdXBzdHJlYW0KLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5LjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8bm90ZT5Zb3UgY2FuIHZpZXcgdGhlIFlvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllcyBhdAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgdHJhbnNjcmlwdCBzaG93cyBob3cgdG8gY2xvbmUgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBpbnRvIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgd29ya2luZyBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgY3JlYXRlcyB0aGUgbG9jYWwgcmVwb3NpdG9yeSBpbiBhIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEdpdCB1c2VkIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCwgc2VlCi0gICAgICAgICAgICAgICAgdGhlICI8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5Ci0gICAgIENsb25pbmcgaW50byAncG9reScuLi4KLSAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAyMjY3OTAsIGRvbmUuCi0gICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoNTc0NjUvNTc0NjUpLCBkb25lLgotICAgICByZW1vdGU6IFRvdGFsIDIyNjc5MCAoZGVsdGEgMTY1MjEyKSwgcmV1c2VkIDIyNTg4NyAoZGVsdGEgMTY0MzI3KQotICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMjI2NzkwLzIyNjc5MCksIDEwMC45OCBNaUIgfCAyNjMgS2lCL3MsIGRvbmUuCi0gICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDE2NTIxMi8xNjUyMTIpLCBkb25lLgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGFub3RoZXIgZXhhbXBsZSBvZiBob3cgdG8gc2V0IHVwIHlvdXIgb3duIGxvY2FsIEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcywgc2VlIHRoaXMKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvVHJhbnNjcmlwdDpfZnJvbV9naXRfY2hlY2tvdXRfdG9fbWV0YS1pbnRlbF9CU1AnPgotICAgICAgICAgICAgICAgIHdpa2kgcGFnZTwvdWxpbms+LCB3aGljaCBkZXNjcmliZXMgaG93IHRvIGNyZWF0ZSBsb2NhbAotICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMgZm9yIGJvdGgKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZ2V0IHRoZSBZb2N0byBQcm9qZWN0IEZpbGVzIGJ5IGRvd25sb2FkaW5nCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlcyBmcm9tIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9IiZZT0NUT19IT01FX1VSTDsiPllvY3RvIFByb2plY3Qgd2Vic2l0ZTwvdWxpbms+LgotICAgICAgICAgICAgICAgIEZyb20gdGhlIHdlYnNpdGUsIHlvdSBqdXN0IGNsaWNrICJEb3dubG9hZHMiIGluIHRoZSBuYXZpZ2F0aW9uCi0gICAgICAgICAgICAgICAgcGFuZSB0byB0aGUgbGVmdCB0byBkaXNwbGF5IGFsbCBZb2N0byBQcm9qZWN0IGRvd25sb2Fkcy4KLSAgICAgICAgICAgICAgICBDdXJyZW50IGFuZCBhcmNoaXZlZCByZWxlYXNlcyBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4KLSAgICAgICAgICAgICAgICBOaWdodGx5IGFuZCBkZXZlbG9wbWVudGFsIGJ1aWxkcyBhcmUgYWxzbyBtYWludGFpbmVkIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iJllPQ1RPX0FCX05JR0hUTFlfVVJMOyI+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgT25lIGZpbmFsIHNpdGUgeW91IGNhbiB2aXNpdCBmb3IgaW5mb3JtYXRpb24gb24gWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIHJlbGVhc2VzIGlzIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgotICAgICAgICAgICAgICAgIHdpa2kuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0gaWQ9J2xvY2FsLWtlcm5lbC1maWxlcyc+PHBhcmE+PGVtcGhhc2lzPllvY3RvIFByb2plY3QgS2VybmVsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byBiZSBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBhIHN1cHBvcnRlZCBZb2N0byBQcm9qZWN0IGtlcm5lbCwgeW91Ci0gICAgICAgICAgICAgICAgbmVlZCB0byBlc3RhYmxpc2ggbG9jYWwgY29waWVzIG9mIHRoZSBzb3VyY2UuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIEdpdCByZXBvc2l0b3JpZXMgb2Ygc3VwcG9ydGVkIFlvY3RvIFByb2plY3Qga2VybmVscyBvcmdhbml6ZWQgdW5kZXIKLSAgICAgICAgICAgICAgICAiWW9jdG8gTGludXggS2VybmVsIiBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz48L3VsaW5rPi48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBzZXR1cCBjYW4gaW52b2x2ZSBjcmVhdGluZyBhIGJhcmUgY2xvbmUgb2YgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgY29weWluZyB0aGF0IGNsb25lZCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIHRoZSBiYXJlIGNsb25lIGFuZCB0aGUgY29weSBvZiB0aGUgYmFyZSBjbG9uZSBhbnl3aGVyZSB5b3UgbGlrZS4KLSAgICAgICAgICAgICAgICBGb3Igc2ltcGxpY2l0eSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgY3JlYXRlIHRoZXNlIHN0cnVjdHVyZXMgb3V0c2lkZSBvZiB0aGUKLSAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5LCB3aGljaCBpcyB1c3VhbGx5IG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkFzIGFuIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHJhbnNjcmlwdCBzaG93cyBob3cgdG8gY3JlYXRlIHRoZSBiYXJlIGNsb25lCi0gICAgICAgICAgICAgICAgb2YgdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE5PC9maWxlbmFtZT4ga2VybmVsIGFuZCB0aGVuIGNyZWF0ZSBhIGNvcHkgb2YKLSAgICAgICAgICAgICAgICB0aGF0IGNsb25lLgotICAgICAgICAgICAgICAgIDxub3RlPldoZW4geW91IGhhdmUgYSBsb2NhbCBZb2N0byBQcm9qZWN0IGtlcm5lbCBHaXQgcmVwb3NpdG9yeSwgeW91IGNhbgotICAgICAgICAgICAgICAgIHJlZmVyZW5jZSB0aGF0IHJlcG9zaXRvcnkgcmF0aGVyIHRoYW4gdGhlIHVwc3RyZWFtIEdpdCByZXBvc2l0b3J5IGFzCi0gICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgPGZpbGVuYW1lPmNsb25lPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICBEb2luZyBzbyBjYW4gc3BlZWQgdXAgdGhlIHByb2Nlc3MuPC9ub3RlPjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5JbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHRoZSBiYXJlIGNsb25lIGlzIG5hbWVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTkuZ2l0PC9maWxlbmFtZT4sIHdoaWxlIHRoZQotICAgICAgICAgICAgICAgIGNvcHkgaXMgbmFtZWQgPGZpbGVuYW1lPm15LWxpbnV4LXlvY3RvLTMuMTktd29yazwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2xvbmUgLS1iYXJlIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTMuMTkgbGludXgteW9jdG8tMy4xOS5naXQKLSAgICAgQ2xvbmluZyBpbnRvIGJhcmUgcmVwb3NpdG9yeSAnbGludXgteW9jdG8tMy4xOS5naXQnLi4uCi0gICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogMzk4MzI1NiwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg2MDUwMDYvNjA1MDA2KSwgZG9uZS4KLSAgICAgcmVtb3RlOiBUb3RhbCAzOTgzMjU2IChkZWx0YSAzMzUyODMyKSwgcmV1c2VkIDM5NzQ1MDMgKGRlbHRhIDMzNDQwNzkpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgzOTgzMjU2LzM5ODMyNTYpLCA4NDMuNjYgTWlCIHwgMS4wNyBNaUIvcywgZG9uZS4KLSAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMzM1MjgzMi8zMzUyODMyKSwgZG9uZS4KLSAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5Ob3cgY3JlYXRlIGEgY2xvbmUgb2YgdGhlIGJhcmUgY2xvbmUganVzdCBjcmVhdGVkOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2xvbmUgbGludXgteW9jdG8tMy4xOS5naXQgbXktbGludXgteW9jdG8tMy4xOS13b3JrCi0gICAgIENsb25pbmcgaW50byAnbXktbGludXgteW9jdG8tMy4xOS13b3JrJy4uLgotICAgICBkb25lLgotICAgICBDaGVja2luZyBvdXQgZmlsZXM6IDEwMCUgKDQ4NDQwLzQ4NDQwKSwgZG9uZS4KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0gaWQ9J21ldGEteW9jdG8ta2VybmVsLWV4dHJhcy1yZXBvJz48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWtlcm5lbC1leHRyYXM8L2ZpbGVuYW1lPiBHaXQgUmVwb3NpdG9yeTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1rZXJuZWwtZXh0cmFzPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgY29udGFpbnMgTWV0YWRhdGEgbmVlZGVkCi0gICAgICAgICAgICAgICAgb25seSBpZiB5b3UgYXJlIG1vZGlmeWluZyBhbmQgYnVpbGRpbmcgdGhlIGtlcm5lbCBpbWFnZS4KLSAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBpdCBjb250YWlucyB0aGUga2VybmVsIEJpdEJha2UgYXBwZW5kICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgZmlsZXMgdGhhdCB5b3UKLSAgICAgICAgICAgICAgICBlZGl0IHRvIHBvaW50IHRvIHlvdXIgbG9jYWxseSBtb2RpZmllZCBrZXJuZWwgc291cmNlIGZpbGVzIGFuZCB0byBidWlsZCB0aGUga2VybmVsCi0gICAgICAgICAgICAgICAgaW1hZ2UuCi0gICAgICAgICAgICAgICAgUG9pbnRpbmcgdG8gdGhlc2UgbG9jYWwgZmlsZXMgaXMgbXVjaCBtb3JlIGVmZmljaWVudCB0aGFuIHJlcXVpcmluZyBhIGRvd25sb2FkIG9mIHRoZQotICAgICAgICAgICAgICAgIGtlcm5lbCdzIHNvdXJjZSBmaWxlcyBmcm9tIHVwc3RyZWFtIGVhY2ggdGltZSB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gZmluZCB0aGUgPGZpbGVuYW1lPm1ldGEteW9jdG8ta2VybmVsLWV4dHJhczwvZmlsZW5hbWU+IEdpdCBSZXBvc2l0b3J5IGluIHRoZQotICAgICAgICAgICAgICAgICJZb2N0byBNZXRhZGF0YSBMYXllcnMiIGFyZWEgb2YgdGhlIFlvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllcyBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgSXQgaXMgZ29vZCBwcmFjdGljZSB0byBjcmVhdGUgdGhpcyBHaXQgcmVwb3NpdG9yeSBpbnNpZGUgdGhlIFNvdXJjZSBEaXJlY3RvcnkuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgY3JlYXRlcyB0aGUgPGZpbGVuYW1lPm1ldGEteW9jdG8ta2VybmVsLWV4dHJhczwvZmlsZW5hbWU+IEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgaW5zaWRlIHRoZSBTb3VyY2UgRGlyZWN0b3J5LCB3aGljaCBpcyBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgaW4gdGhpcyBjYXNlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+L3Bva3kKLSAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS15b2N0by1rZXJuZWwtZXh0cmFzIG1ldGEteW9jdG8ta2VybmVsLWV4dHJhcwotICAgICBDbG9uaW5nIGludG8gJ21ldGEteW9jdG8ta2VybmVsLWV4dHJhcycuLi4KLSAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiA3MjcsIGRvbmUuCi0gICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoNDUyLzQ1MiksIGRvbmUuCi0gICAgIHJlbW90ZTogVG90YWwgNzI3IChkZWx0YSAyNjApLCByZXVzZWQgNzE5IChkZWx0YSAyNTIpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICg3MjcvNzI3KSwgNTM2LjM2IEtpQiB8IDI0MCBLaUIvcywgZG9uZS4KLSAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMjYwLzI2MCksIGRvbmUuCi0gICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nc3VwcG9ydGVkLWJvYXJkLXN1cHBvcnQtcGFja2FnZXMtKGJzcHMpJz48ZW1waGFzaXM+U3VwcG9ydGVkIEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgbWFueSBCU1BzLCB3aGljaCBhcmUgbWFpbnRhaW5lZCBpbgotICAgICAgICAgICAgICAgIHRoZWlyIG93biBsYXllcnMgb3IgaW4gbGF5ZXJzIGRlc2lnbmVkIHRvIGNvbnRhaW4gc2V2ZXJhbAotICAgICAgICAgICAgICAgIEJTUHMuCi0gICAgICAgICAgICAgICAgVG8gZ2V0IGFuIGlkZWEgb2YgbWFjaGluZSBzdXBwb3J0IHRocm91Z2ggQlNQIGxheWVycywgeW91IGNhbgotICAgICAgICAgICAgICAgIGxvb2sgYXQgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1JFTEVBU0VfRExfVVJMOy9tYWNoaW5lcyc+aW5kZXggb2YgbWFjaGluZXM8L3VsaW5rPgotICAgICAgICAgICAgICAgIGZvciB0aGUgcmVsZWFzZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgWW9jdG8gUHJvamVjdCB1c2VzIHRoZSBmb2xsb3dpbmcgQlNQIGxheWVyIG5hbWluZwotICAgICAgICAgICAgICAgIHNjaGVtZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgd2hlcmUgPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4gaXMgdGhlIHJlY29nbml6ZWQKLSAgICAgICAgICAgICAgICBCU1AgbmFtZS4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLXJhc3BiZXJyeXBpCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CU1AgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjcHJlcGFyaW5nLXlvdXItYnVpbGQtaG9zdC10by13b3JrLXdpdGgtYnNwLWxheWVycyc+UHJlcGFyaW5nIFlvdXIgQnVpbGQgSG9zdCB0byBXb3JrIFdpdGggQlNQIExheWVyczwvdWxpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApCi0gICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQlNQIExheWVycy48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5BIHVzZWZ1bCBHaXQgcmVwb3NpdG9yeSByZWxlYXNlZCB3aXRoIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgIFByb2plY3QgaXMgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgYQotICAgICAgICAgICAgICAgIHBhcmVudCBsYXllciB0aGF0IGNvbnRhaW5zIG1hbnkgc3VwcG9ydGVkCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjYnNwLWxheWVycyc+QlNQIExheWVyczwvdWxpbms+LgotICAgICAgICAgICAgICAgIFlvdSBjYW4gbG9jYXRlIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgaW4gdGhlICJZb2N0byBNZXRhZGF0YSBMYXllcnMiIGFyZWEgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz48L3VsaW5rPi48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5Vc2luZwotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB0byBjcmVhdGUgYSBsb2NhbCBjbG9uZSBvZiB0aGUKLSAgICAgICAgICAgICAgICB1cHN0cmVhbSByZXBvc2l0b3J5IGNhbiBiZSBoZWxwZnVsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoCi0gICAgICAgICAgICAgICAgQlNQcy4KLSAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSBzZXQgdXAgdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBpbnNpZGUgdGhlIFNvdXJjZSBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHJhbnNjcmlwdCBzaG93cyB0aGUgc3RlcHMgdG8gY2xvbmUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHdvcmsgaW4gdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoIHRoYXQgbWF0Y2hlcyB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGNoZWNrZWQgb3V0IHRoZSAibWFzdGVyIiBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhbmQgeW91IGFyZSBnb2luZyB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiwgYmUgc3VyZSB0byBjaGVja291dCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIgYnJhbmNoIG9mIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+L3Bva3kKLSAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS1pbnRlbC5naXQKLSAgICAgQ2xvbmluZyBpbnRvICdtZXRhLWludGVsJy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDExOTE3LCBkb25lLgotICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDM4NDIvMzg0MiksIGRvbmUuCi0gICAgIHJlbW90ZTogVG90YWwgMTE5MTcgKGRlbHRhIDY4NDApLCByZXVzZWQgMTE2OTkgKGRlbHRhIDY2MjIpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgxMTkxNy8xMTkxNyksIDIuOTIgTWlCIHwgMi44OCBNaUIvcywgZG9uZS4KLSAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoNjg0MC82ODQwKSwgZG9uZS4KLSAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBzYW1lCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1RyYW5zY3JpcHQ6X2Zyb21fZ2l0X2NoZWNrb3V0X3RvX21ldGEtaW50ZWxfQlNQJz53aWtpIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgIHJlZmVyZW5jZWQgZWFybGllciBjb3ZlcnMgaG93IHRvIHNldCB1cCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FY2xpcHNlIFlvY3RvIFBsdWctaW46PC9lbXBoYXNpcz4gIElmIHlvdSBhcmUgZGV2ZWxvcGluZwotICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUgRWNsaXBzZSBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IChJREUpLAotICAgICAgICAgICAgICAgIHlvdSB3aWxsIG5lZWQgdGhpcyBwbHVnLWluLgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5LZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hcHBlbmRpeC1sYXRlc3QteXAtZWNsaXBzZS1wbHVnLWluJz5Vc2luZyBFY2xpcHNlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykKLSAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I3ByZXBhcmluZy10aGUtYnVpbGQtaG9zdC10by13b3JrLW9uLXRoZS1rZXJuZWwnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdCB0byBXb3JrIG9uIHRoZSBLZXJuZWw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVjbGlwc2UgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1lY2xpcHNlLXByb2plY3QnPkRldmVsb3BpbmcgQXBwbGljYXRpb25zIFVzaW5nIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+PC91bGluaz4iCisgICAgICAgICAgICAgICAgQ2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3NldHRpbmctdXAtYS1uYXRpdmUtbGludXgtaG9zdCc+CisgICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIGEgTmF0aXZlIExpbnV4IEhvc3Q8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIHByZXBhcmUgYSBuYXRpdmUgTGludXggbWFjaGluZSBhcyB5b3VyCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGhvc3Q6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIGEgU3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGhhdmUgYSByZWFzb25hYmx5IGN1cnJlbnQgTGludXgtYmFzZWQgaG9zdAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGhhdmUgdGhlIGJlc3QgcmVzdWx0cyB3aXRoIGEgcmVjZW50IHJlbGVhc2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgRmVkb3JhLCBvcGVuU1VTRSwgRGViaWFuLCBVYnVudHUsIG9yIENlbnRPUyBhcyB0aGVzZQorICAgICAgICAgICAgICAgICAgICByZWxlYXNlcyBhcmUgZnJlcXVlbnRseSB0ZXN0ZWQgYWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICBhbmQgb2ZmaWNpYWxseSBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgdW5kZXIgdmFsaWRhdGlvbiBhbmQgdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIgc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGFuZCB0aGUgd2lraSBwYWdlIGF0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9EaXN0cmlidXRpb25fU3VwcG9ydCc+RGlzdHJpYnV0aW9uIFN1cHBvcnQ8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SGF2ZSBFbm91Z2ggRnJlZSBNZW1vcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBoYXZlIGF0IGxlYXN0IDUwIEdieXRlcyBvZiBmcmVlIGRpc2sgc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgZm9yIGJ1aWxkaW5nIGltYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWVldCBNaW5pbWFsIFZlcnNpb24gUmVxdWlyZW1lbnRzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBvbiBhbnkKKyAgICAgICAgICAgICAgICAgICAgbW9kZXJuIGRpc3RyaWJ1dGlvbiB0aGF0IGhhcyB0aGUgZm9sbG93aW5nIHZlcnNpb25zIGZvcgorICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgYW5kIFB5dGhvbi4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgMS44LjMuMSBvciBncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjcgb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGRvZXMgbm90IG1lZXQgYW55IG9mIHRoZXNlIHRocmVlIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50cywgeW91IGNhbiB0YWtlIHN0ZXBzIHRvIHByZXBhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzbyB0aGF0IHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgRGV2ZWxvcG1lbnQgSG9zdCBQYWNrYWdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZCBkZXZlbG9wbWVudCBob3N0IHBhY2thZ2VzIHZhcnkgZGVwZW5kaW5nIG9uIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgbWFjaGluZSBhbmQgd2hhdCB5b3Ugd2FudCB0byBkbyB3aXRoIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgcGFja2FnZXMgaXMgbGFyZ2UKKyAgICAgICAgICAgICAgICAgICAgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBjb3ZlciBhbGwgY2FzZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBsaXN0cyBvZiByZXF1aXJlZCBwYWNrYWdlcyBmb3IgYWxsIHNjZW5hcmlvcywKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY29tcGxldGVkIHRoZSBwcmV2aW91cyBzdGVwcywgeW91IGFyZSByZWFkeSB0bworICAgICAgICAgICAgY29udGludWUgdXNpbmcgYSBnaXZlbiBkZXZlbG9wbWVudCBwYXRoIG9uIHlvdXIgbmF0aXZlIExpbnV4CisgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgQml0QmFrZSwgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgRXh0ZW5zaWJsZSBTREssIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+VXNpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgICAgICBDaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byB3b3JrIG9uIHRoZSBrZXJuZWwsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSBUb2FzdGVyLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyN0b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlJz5TZXR0aW5nIFVwIGFuZCBVc2luZyBUb2FzdGVyPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBUb2FzdGVyIFVzZXIgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3NldHRpbmctdXAtdG8tdXNlLWNyb3BzJz4KKyAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIENST3NzIFBsYXRmb3JtUyAoQ1JPUFMpPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdpdGgKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9jcm9wcy9hYm91dC8nPkNST1BTPC91bGluaz4sCisgICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LAorICAgICAgICAgICAgeW91IGNhbiBjcmVhdGUgYSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQKKyAgICAgICAgICAgIGlzIG9wZXJhdGluZyBzeXN0ZW0gYWdub3N0aWMuCisgICAgICAgICAgICBZb3UgY2FuIHNldCB1cCBhIGNvbnRhaW5lciBpbiB3aGljaCB5b3UgY2FuIGRldmVsb3AgdXNpbmcgdGhlCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IG9uIGEgV2luZG93cywgTWFjLCBvciBMaW51eCAgbWFjaGluZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHMgdG8gcHJlcGFyZSBhIFdpbmRvd3MsIE1hYywgb3IgTGludXgKKyAgICAgICAgICAgIG1hY2hpbmUgYXMgeW91ciBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGhvc3Q6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R28gdG8gdGhlIERvY2tlciBJbnN0YWxsYXRpb24gU2l0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tL3doYXQtZG9ja2VyJz5Eb2NrZXI8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBhIHNvZnR3YXJlIGNvbnRhaW5lciBwbGF0Zm9ybSB0aGF0IHlvdSBuZWVkIHRvIGluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3RhcnQgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9pbnN0YWxsYXRpb24vJz5Eb2NrZXIgSW5zdGFsbGF0aW9uPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hvb3NlIFlvdXIgRG9ja2VyIEVkaXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRG9ja2VyIGNvbWVzIGluIHNldmVyYWwgZWRpdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgWW9jdG8gUHJvamVjdCwgdGhlIHN0YWJsZSBjb21tdW5pdHkgZWRpdGlvbgorICAgICAgICAgICAgICAgICAgICAoaS5lLiAiRG9ja2VyIENFIFN0YWJsZSIpIGlzIGFkZXF1YXRlLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdGhlIERvY2tlciBlZGl0aW9ucyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBzaXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HbyB0aGUgSW5zdGFsbCBTaXRlIGZvciBZb3VyIFBsYXRmb3JtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSBsaW5rIGZvciB0aGUgRG9ja2VyIGVkaXRpb24gYXNzb2NpYXRlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBtYWNoaW5lJ3MgbmF0aXZlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91ciBtYWNoaW5lIGlzIHJ1bm5pbmcgTWljcm9zb2Z0CisgICAgICAgICAgICAgICAgICAgIFdpbmRvd3MgVmVyc2lvbiAxMCBhbmQgeW91IHdhbnQgdGhlIERvY2tlciBDRSBTdGFibGUKKyAgICAgICAgICAgICAgICAgICAgZWRpdGlvbiwgY2xpY2sgdGhhdCBsaW5rIHVuZGVyICJTdXBwb3J0ZWQgUGxhdGZvcm1zIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5kZXJzdGFuZCBXaGF0IFlvdSBOZWVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBpbnN0YWxsIHBhZ2UgaGFzIHByZS1yZXF1aXNpdGVzIHlvdXIgbWFjaGluZSBtdXN0CisgICAgICAgICAgICAgICAgICAgIG1lZXQuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IHJlYWQgdGhyb3VnaCB0aGlzIHBhZ2UgYW5kIG1ha2Ugc3VyZSB5b3VyCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgbWVldHMgdGhlIHJlcXVpcmVtZW50cyB0byBydW4gRG9ja2VyLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIG1hY2hpbmUgZG9lcyBub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzLCB0aGUgcGFnZQorICAgICAgICAgICAgICAgICAgICBoYXMgaW5zdHJ1Y3Rpb25zIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gcnVuIERvY2tlciBvbiBXaW5kb3dzIDEwLCB5b3UgbXVzdCBoYXZlCisgICAgICAgICAgICAgICAgICAgIHRoZSBwcm8gdmVyc2lvbiBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgdGhlIGhvbWUgdmVyc2lvbiwgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vdG9vbGJveC9vdmVydmlldy8jcmVhZHktdG8tZ2V0LXN0YXJ0ZWQnPkRvY2tlciBUb29sYm94PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIGV4YW1wbGUgaXMgdGhhdCBhIFdpbmRvd3MgbWFjaGluZSBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICBoYXZlIE1pY3Jvc29mdCBIeXBlci1WLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIGxlZ2FjeSB2ZXJzaW9uIG9mIHRoZSB0aGUgTWljcm9zb2Z0CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gb3IgZm9yIGFueSBvdGhlciByZWFzb24geW91IGRvIG5vdCBoYXZlCisgICAgICAgICAgICAgICAgICAgIE1pY3Jvc29mdCBIeXBlci1WLCB5b3Ugd291bGQgaGF2ZSB0byBlbnRlciB0aGUgQklPUyBhbmQKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlIHZpcnR1YWxpemF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTb2Z0d2FyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVuZGVyc3Rvb2QgYWxsIHRoZSBwcmUtcmVxdWlzaXRlcywgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCBhbmQgaW5zdGFsbCB0aGUgYXBwcm9wcmlhdGUgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIHNwZWNpZmljIG1hY2hpbmUgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSB0eXBlIG9mIHRoZSBzb2Z0d2FyZSB5b3UgbmVlZCB0byBpbnN0YWxsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IE9yaWVudCBZb3Vyc2VsZiBXaXRoIERvY2tlcnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bmZhbWlsaWFyIHdpdGggRG9ja2VycyBhbmQgdGhlIGNvbnRhaW5lcgorICAgICAgICAgICAgICAgICAgICBjb25jZXB0LCB5b3UgY2FuIGxlYXJuIG1vcmUgaGVyZSAtCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2dldC1zdGFydGVkLyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYmUgYWJsZSB0byBsYXVuY2ggRG9ja2VyIG9yIHRoZSBEb2NrZXIgVG9vbGJveAorICAgICAgICAgICAgICAgICAgICBhbmQgaGF2ZSBhIHRlcm1pbmFsIHNoZWxsIG9uIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRoZSBDb250YWluZXJzIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBHbyB0bworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvZG9ja2VyLXdpbi1tYWMtZG9jcy93aWtpJz48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgZm9sbG93IHRoZSBkaXJlY3Rpb25zIGZvciB5b3VyIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdCAoaS5lLiBMaW51eCwgTWFjLCBvciBXaW5kb3dzKS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB5b3UgY29tcGxldGUgdGhlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgeW91cgorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLCB5b3UgaGF2ZSB0aGUgUG9reSwgRXh0ZW5zaWJsZSBTREssIGFuZCBUb2FzdGVyCisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcnMgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNsaWNrIHRob3NlIGxpbmtzIGZyb20gdGhlIHBhZ2UgYW5kIGxlYXJuIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgYWJvdXQgdXNpbmcgZWFjaCBvZiB0aG9zZSBjb250YWluZXJzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGEgY29udGFpbmVyIHNldCB1cCwgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSB0bworICAgICAgICAgICAgZGV2ZWxvcCBqdXN0IGFzIGlmIHlvdSB3ZXJlIHJ1bm5pbmcgb24gYSBuYXRpdmUgTGludXggbWFjaGluZS4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBQb2t5IGNvbnRhaW5lciwgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgRXh0ZW5zaWJsZSBTREsgY29udGFpbmVyLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWV4dGVuc2libGUnPlVzaW5nIHRoZSBFeHRlbnNpYmxlIFNESzwvdWxpbms+IgorICAgICAgICAgICAgQ2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFRvYXN0ZXIgY29udGFpbmVyLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyN0b2FzdGVyLW1hbnVhbC1zZXR1cC1hbmQtdXNlJz5TZXR0aW5nIFVwIGFuZCBVc2luZyBUb2FzdGVyPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBUb2FzdGVyIFVzZXIgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogPC9zZWN0aW9uPgogCi08c2VjdGlvbiBpZD0nYnVpbGRpbmctaW1hZ2VzJz4KLSAgICA8dGl0bGU+QnVpbGRpbmcgSW1hZ2VzPC90aXRsZT4KKzxzZWN0aW9uIGlkPSd3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPgorICAgIDx0aXRsZT5Xb3JraW5nIFdpdGggWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBidWlsZCBwcm9jZXNzIGNyZWF0ZXMgYW4gZW50aXJlIExpbnV4IGRpc3RyaWJ1dGlvbiwgaW5jbHVkaW5nIHRoZSB0b29sY2hhaW4sIGZyb20gc291cmNlLgotICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHRvcGljLCBzZWUgdGhlCisgICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBwcm9jZWR1cmVzIHJlbGF0ZWQgdG8gbG9jYXRpbmcgYW5kIHNlY3VyaW5nCisgICAgICAgIFlvY3RvIFByb2plY3QgZmlsZXMuCisgICAgICAgIFlvdSBlc3RhYmxpc2ggYW5kIHVzZSB0aGVzZSBsb2NhbCBmaWxlcyB0byB3b3JrIG9uIHByb2plY3RzLgorICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBjb25jZXB0cyBhbmQgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIGFib3V0IEdpdCBhcyBpdAorICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIGluIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGNvbmNlcHRzIG9uIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuIgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J2FjY2Vzc2luZy1zb3VyY2UtcmVwb3NpdG9yaWVzJz4KKyAgICAgICAgPHRpdGxlPkFjY2Vzc2luZyBTb3VyY2UgUmVwb3NpdG9yaWVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgbWFpbnRhaW5zIHVwc3RyZWFtIEdpdAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICB0aGF0IHlvdSBjYW4gZXhhbWluZSBhbmQgYWNjZXNzIHVzaW5nIGEgYnJvd3Nlci1iYXNlZCBVSToKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BY2Nlc3MgUmVwb3NpdG9yaWVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+IHRvIGFjY2VzcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgR1VJLWJhc2VkIGludGVyZmFjZSBpbnRvIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZQorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCBhIFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gYW55IHJlcG9zaXRvcnkgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBVUkwgVXNlZCB0byBDbG9uZSB0aGUgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGUgYm90dG9tIG9mIHRoZSBwYWdlLCBub3RlIHRoZSBVUkwgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQtY29tbWFuZHMtY2xvbmUnPmNsb25lPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhhdCByZXBvc2l0b3J5IChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fR0lUX1VSTDsvcG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhhbWluZSBDaGFuZ2UgSGlzdG9yeSBvZiB0aGUgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBjbGljayBvbiBhbnkgYnJhbmNoIGluIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICBtaWdodCBiZSBpbnRlcmVzdGVkIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0aGVuIHZpZXcgdGhlIGNvbW1pdCBsb2cgb3IgdHJlZSB2aWV3IGZvciB0aGF0CisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2FjY2Vzc2luZy1pbmRleC1vZi1yZWxlYXNlcyc+CisgICAgICAgIDx0aXRsZT5BY2Nlc3NpbmcgSW5kZXggb2YgUmVsZWFzZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgYW4gSW5kZXggb2YgUmVsZWFzZXMgYXJlYSB0aGF0IGNvbnRhaW5zCisgICAgICAgICAgICByZWxhdGVkIGZpbGVzIHRoYXQgY29udHJpYnV0ZSB0byB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIFJhdGhlciB0aGFuIEdpdCByZXBvc2l0b3JpZXMsIHRoZXNlIGZpbGVzIHJlcHJlc2VudCBzbmFwc2hvdAorICAgICAgICAgICAgdGFyYmFsbHMuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICBUaGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBhY2Nlc3NpbmcgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIGNvbXBvbmVudHMgaXMgdG8gdXNlIEdpdCB0byBjbG9uZSBhIHJlcG9zaXRvcnkgYW5kIHdvcmsgZnJvbQorICAgICAgICAgICAgICAgIHdpdGhpbiB0aGF0IGxvY2FsIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgVGhlIHByb2NlZHVyZSBpbiB0aGlzIHNlY3Rpb24gZXhpc3RzIHNob3VsZCB5b3UgZGVzaXJlIGEKKyAgICAgICAgICAgICAgICB0YXJiYWxsIHNuYXBzaG90IG9mIGFueSBnaXZlbiBjb21wb25lbnQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QWNjZXNzIHRoZSBJbmRleCBvZiBSZWxlYXNlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPcGVuIGEgYnJvd3NlciBhbmQgZ28gdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMnPjwvdWxpbms+IHRvIGFjY2VzcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgSW5kZXggb2YgUmVsZWFzZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsaXN0IHJlcHJlc2VudHMgcmVsZWFzZWQgY29tcG9uZW50cyAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZWNsaXBzZS1wbHVnaW48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNhdG88L2ZpbGVuYW1lPiwgYW5kIHNvIG9uKS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCBhcnJheSBvZiByZWxlYXNlZCBQb2t5IHRhcmJhbGxzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggb2YgUmVsZWFzZXMgd2FzIGhpc3RvcmljYWxseSB1c2VkIGZvciB2ZXJ5CisgICAgICAgICAgICAgICAgICAgICAgICBlYXJseSByZWxlYXNlcyBhbmQgZXhpc3RzIGZvciByZXRyb2FjdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVuZXNzIG9ubHkuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgQ29tcG9uZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENsaWNrIG9uIGFueSByZWxlYXNlZCBjb21wb25lbnQgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkCisgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT55b2N0bzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmluZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEcmlsbCBkb3duIHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGNsaWNrIG9uIDxmaWxlbmFtZT55b2N0by0mRElTVFJPOzwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIHZpZXcgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0ICZESVNUUk87CisgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgKGUuZy4gPGZpbGVuYW1lPnBva3ktJkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOy50YXIuYnoyPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSByZWxlYXNlZCBQb2t5IHRhcmJhbGwpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayBhIHRhcmJhbGwgdG8gZG93bmxvYWQgYW5kIHNhdmUgYSBzbmFwc2hvdCBvZiBhCisgICAgICAgICAgICAgICAgICAgIGdpdmVuIGNvbXBvbmVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLXRoZS1kb3dubG9hZHMtcGFnZSc+CisgICAgICAgIDx0aXRsZT5Vc2luZyB0aGUgRG93bmxvYWRzIFBhZ2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPgorICAgICAgICAgICAgdXNlcyBhICJEb3dubG9hZHMiIGFyZWEgZnJvbSB3aGljaCB5b3UgY2FuIGxvY2F0ZSBhbmQgZG93bmxvYWQKKyAgICAgICAgICAgIHRhcmJhbGxzIG9mIGFueSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCisgICAgICAgICAgICBSYXRoZXIgdGhhbiBHaXQgcmVwb3NpdG9yaWVzLCB0aGVzZSBmaWxlcyByZXByZXNlbnQgc25hcHNob3QKKyAgICAgICAgICAgIHRhcmJhbGxzLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3IgYWNjZXNzaW5nIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBjb21wb25lbnRzIGlzIHRvIHVzZSBHaXQgdG8gY2xvbmUgYSByZXBvc2l0b3J5IGFuZCB3b3JrIGZyb20KKyAgICAgICAgICAgICAgICB3aXRoaW4gdGhhdCBsb2NhbCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBwcm9jZWR1cmUgaW4gdGhpcyBzZWN0aW9uIGV4aXN0cyBzaG91bGQgeW91IGRlc2lyZSBhCisgICAgICAgICAgICAgICAgdGFyYmFsbCBzbmFwc2hvdCBvZiBhbnkgZ2l2ZW4gY29tcG9uZW50LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRvIHRoZSBZb2N0byBQcm9qZWN0IFdlYnNpdGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciBicm93c2VyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HZXQgdG8gdGhlIERvd25sb2FkcyBBcmVhOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiRG93bmxvYWRzIiB0YWIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCB0aGUgVHlwZSBvZiBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgdHlwZSBvZiBmaWxlcyB5b3Ugd2FudCAoaS5lICJCdWlsZCBTeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiVG9vbHMiLCBvciAiQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUgYW5kIERvd25sb2FkIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGxpc3Qgb2YgcmVsZWFzZXMsIGxvY2F0ZSB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgbGluayBhbmQgZG93bmxvYWQgdGhlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz4KKyAgICAgICAgPHRpdGxlPkNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyB1c2UgdGhlIFlvY3RvIFByb2plY3QsIHlvdSBuZWVkIGEgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgbG9jYWxseSBpbnN0YWxsZWQgb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICBUaGUgbG9jYWxseSBpbnN0YWxsZWQgc2V0IG9mIGZpbGVzIGlzIHJlZmVycmVkIHRvIGFzIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY3JlYXRlIHlvdXIgU291cmNlIERpcmVjdG9yeSBieSB1c2luZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB0byBjbG9uZSBhIGxvY2FsCisgICAgICAgICAgICBjb3B5IG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICBUaGUgcHJlZmVycmVkIG1ldGhvZCBvZiBnZXR0aW5nIHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZQorICAgICAgICAgICAgICAgIERpcmVjdG9yeSBzZXQgdXAgaXMgdG8gY2xvbmUgdGhlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBXb3JraW5nIGZyb20gYSBjb3B5IG9mIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGFsbG93cyB5b3UKKyAgICAgICAgICAgIHRvIGNvbnRyaWJ1dGUgYmFjayBpbnRvIHRoZSBZb2N0byBQcm9qZWN0IG9yIHNpbXBseSB3b3JrIHdpdGgKKyAgICAgICAgICAgIHRoZSBsYXRlc3Qgc29mdHdhcmUgb24gYSBkZXZlbG9wbWVudCBicmFuY2guCisgICAgICAgICAgICBCZWNhdXNlIEdpdCBtYWludGFpbnMgYW5kIGNyZWF0ZXMgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeSB3aXRoCisgICAgICAgICAgICBhIGNvbXBsZXRlIGhpc3Rvcnkgb2YgY2hhbmdlcyBhbmQgeW91IGFyZSB3b3JraW5nIHdpdGggYSBsb2NhbAorICAgICAgICAgICAgY2xvbmUgb2YgdGhhdCByZXBvc2l0b3J5LCB5b3UgaGF2ZSBhY2Nlc3MgdG8gYWxsIHRoZSBZb2N0bworICAgICAgICAgICAgUHJvamVjdCBkZXZlbG9wbWVudCBicmFuY2hlcyBhbmQgdGFnIG5hbWVzIHVzZWQgaW4gdGhlIHVwc3RyZWFtCisgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY3JlYXRlIGEgbG9jYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgIHVwc3RyZWFtCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNwb2t5Jz48ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBZb3VyIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBCZSBpbiB0aGUgZGlyZWN0b3J5IHdoZXJlIHlvdSB3YW50IHRvIGNyZWF0ZSB5b3VyIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIGNvcHkgb2YgcG9reS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIGNsb25lcyB0aGUgcmVwb3NpdG9yeSBhbmQgdXNlcworICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBuYW1lICJwb2t5IiBmb3IgeW91ciBsb2NhbCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKyAgICAgQ2xvbmluZyBpbnRvICdwb2t5Jy4uLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDM2NzE3OCwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg4ODE2MS84ODE2MSksIGRvbmUuCisgICAgIHJlbW90ZTogVG90YWwgMzY3MTc4IChkZWx0YSAyNzI3NjEpLCByZXVzZWQgMzY2OTQyIChkZWx0YSAyNzI1MjUpCisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgzNjcxNzgvMzY3MTc4KSwgMTMzLjI2IE1pQiB8IDYuNDAgTWlCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDI3Mjc2MS8yNzI3NjEpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBVbmxlc3MgeW91IHNwZWNpZnkgYSBzcGVjaWZpYyBkZXZlbG9wbWVudCBicmFuY2ggb3IKKyAgICAgICAgICAgICAgICAgICAgdGFnIG5hbWUsIEdpdCBjbG9uZXMgdGhlICJtYXN0ZXIiIGJyYW5jaCwgd2hpY2ggcmVzdWx0cworICAgICAgICAgICAgICAgICAgICBpbiBhIHNuYXBzaG90IG9mIHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnQgY2hhbmdlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2hlY2sgb3V0IGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoIG9yIG9uIGhvdyB0byBjaGVjayBvdXQgYSBsb2NhbAorICAgICAgICAgICAgICAgICAgICBicmFuY2ggYmFzZWQgb24gYSB0YWcgbmFtZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2hlY2tpbmctb3V0LWJ5LWJyYW5jaC1pbi1wb2t5Jz5DaGVja2luZyBPdXQgQnkgQnJhbmNoIGluIFBva3k8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nY2hlY2tvdXQtb3V0LWJ5LXRhZy1pbi1wb2t5Jz5DaGVja2luZyBPdXQgQnkgVGFnIGluIFBva3k8L2xpbms+IiwKKyAgICAgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZWx5LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHRoZSByZXBvc2l0b3J5IGlzIGNyZWF0ZWQsIHlvdSBjYW4gY2hhbmdlIHRvCisgICAgICAgICAgICAgICAgICAgIHRoYXQgZGlyZWN0b3J5IGFuZCBjaGVjayBpdHMgc3RhdHVzLgorICAgICAgICAgICAgICAgICAgICBIZXJlLCB0aGUgc2luZ2xlICJtYXN0ZXIiIGJyYW5jaCBleGlzdHMgb24geW91ciBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgYW5kIGJ5IGRlZmF1bHQsIGl0IGlzIGNoZWNrZWQgb3V0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5CisgICAgICQgZ2l0IHN0YXR1cworICAgICBPbiBicmFuY2ggbWFzdGVyCisgICAgIFlvdXIgYnJhbmNoIGlzIHVwLXRvLWRhdGUgd2l0aCAnb3JpZ2luL21hc3RlcicuCisgICAgIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIGRpcmVjdG9yeSBjbGVhbgorICAgICAkIGdpdCBicmFuY2gKKyAgICAgKiBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3VyIGxvY2FsIHJlcG9zaXRvcnkgb2YgcG9reSBpcyBpZGVudGljYWwgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtIHBva3kgcmVwb3NpdG9yeSBhdCB0aGUgdGltZSBmcm9tIHdoaWNoIGl0IHdhcworICAgICAgICAgICAgICAgICAgICBjbG9uZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPgorICAgICAgICA8dGl0bGU+Q2hlY2tpbmcgT3V0IGJ5IEJyYW5jaCBpbiBQb2t5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNsb25lIHRoZSB1cHN0cmVhbSBwb2t5IHJlcG9zaXRvcnksIHlvdSBoYXZlIGFjY2VzcyB0bworICAgICAgICAgICAgYWxsIGl0cyBkZXZlbG9wbWVudCBicmFuY2hlcy4KKyAgICAgICAgICAgIEVhY2ggZGV2ZWxvcG1lbnQgYnJhbmNoIGluIGEgcmVwb3NpdG9yeSBpcyB1bmlxdWUgYXMgaXQgZm9ya3MKKyAgICAgICAgICAgIG9mZiB0aGUgIm1hc3RlciIgYnJhbmNoLgorICAgICAgICAgICAgVG8gc2VlIGFuZCB1c2UgdGhlIGZpbGVzIG9mIGEgcGFydGljdWxhciBkZXZlbG9wbWVudCBicmFuY2gKKyAgICAgICAgICAgIGxvY2FsbHksIHlvdSBuZWVkIHRvIGtub3cgdGhlIGJyYW5jaCBuYW1lIGFuZCB0aGVuIHNwZWNpZmljYWxseQorICAgICAgICAgICAgY2hlY2sgb3V0IHRoYXQgZGV2ZWxvcG1lbnQgYnJhbmNoLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQ2hlY2tpbmcgb3V0IGFuIGFjdGl2ZSBkZXZlbG9wbWVudCBicmFuY2ggYnkgYnJhbmNoIG5hbWUKKyAgICAgICAgICAgICAgICBnaXZlcyB5b3UgYSBzbmFwc2hvdCBvZiB0aGF0IHBhcnRpY3VsYXIgYnJhbmNoIGF0IHRoZSB0aW1lCisgICAgICAgICAgICAgICAgeW91IGNoZWNrIGl0IG91dC4KKyAgICAgICAgICAgICAgICBGdXJ0aGVyIGRldmVsb3BtZW50IG9uIHRvcCBvZiB0aGUgYnJhbmNoIHRoYXQgb2NjdXJzIGFmdGVyCisgICAgICAgICAgICAgICAgY2hlY2sgaXQgb3V0IGNhbiBvY2N1ci4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Td2l0Y2ggdG8gdGhlIFBva3kgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGEgbG9jYWwgcG9reSBHaXQgcmVwb3NpdG9yeSwgc3dpdGNoIHRvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgdGhlIGxvY2FsIGNvcHkgb2YgcG9reSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgRXhpc3RpbmcgQnJhbmNoIE5hbWVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgYnJhbmNoIC1hCisgICAgICogbWFzdGVyCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vMS4xX00xCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vMS4xX00yCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vMS4xX00zCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vMS4xX000CisgICAgICAgcmVtb3Rlcy9vcmlnaW4vMS4yX00xCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vMS4yX00yCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vMS4yX00zCisgICAgICAgICAgIC4KKyAgICAgICAgICAgLgorICAgICAgICAgICAuCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyLW5leHQKKyAgICAgICByZW1vdGVzL29yaWdpbi9tYXN0ZXItbmV4dDIKKyAgICAgICByZW1vdGVzL29yaWdpbi9tb3J0eQorICAgICAgIHJlbW90ZXMvb3JpZ2luL3Bpbmt5CisgICAgICAgcmVtb3Rlcy9vcmlnaW4vcHVycGxlCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vcHlybworICAgICAgIHJlbW90ZXMvb3JpZ2luL3JvY2tvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2tvdXQgdGhlIEJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDaGVja291dCB0aGUgZGV2ZWxvcG1lbnQgYnJhbmNoIGluIHdoaWNoIHlvdSB3YW50IHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBhY2Nlc3MgdGhlIGZpbGVzIGZvciB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAmRElTVFJPOyBSZWxlYXNlICgmRElTVFJPX05BTUU7KSwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjaGVja291dCAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyBvcmlnaW4vJkRJU1RST19OQU1FX05PX0NBUDsKKyAgICAgQnJhbmNoICZESVNUUk9fTkFNRV9OT19DQVA7IHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICZESVNUUk9fTkFNRV9OT19DQVA7IGZyb20gb3JpZ2luLgorICAgICBTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJyZESVNUUk9fTkFNRV9OT19DQVA7JworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBjb21tYW5kIGNoZWNrcyBvdXQgdGhlICImRElTVFJPX05BTUVfTk9fQ0FQOyIKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoIGFuZCByZXBvcnRzIHRoYXQgdGhlIGJyYW5jaCBpcyB0cmFja2luZworICAgICAgICAgICAgICAgICAgICB0aGUgdXBzdHJlYW0gIm9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgZGlzcGxheXMgdGhlIGJyYW5jaGVzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5vdyBwYXJ0IG9mIHlvdXIgbG9jYWwgcG9reSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGUgYXN0ZXJpc2sgY2hhcmFjdGVyIGluZGljYXRlcyB0aGUgYnJhbmNoIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5IGNoZWNrZWQgb3V0IGZvciB3b3JrOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGJyYW5jaAorICAgICAgIG1hc3RlcgorICAgICAqICZESVNUUk9fTkFNRV9OT19DQVA7CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+CisgICAgICAgIDx0aXRsZT5DaGVja2luZyBPdXQgYnkgVGFnIGluIFBva3k8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU2ltaWxhciB0byBicmFuY2hlcywgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgdXNlcyB0YWdzCisgICAgICAgICAgICB0byBtYXJrIHNwZWNpZmljIGNvbW1pdHMgYXNzb2NpYXRlZCB3aXRoIHNpZ25pZmljYW50IHBvaW50cyBpbgorICAgICAgICAgICAgYSBkZXZlbG9wbWVudCBicmFuY2ggKGkuZS4gYSByZWxlYXNlIHBvaW50IG9yIHN0YWdlIG9mIGEKKyAgICAgICAgICAgIHJlbGVhc2UpLgorICAgICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gc2V0IHVwIGEgbG9jYWwgYnJhbmNoIGJhc2VkIG9uIG9uZSBvZiB0aG9zZQorICAgICAgICAgICAgcG9pbnRzIGluIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgVGhlIHByb2Nlc3MgaXMgc2ltaWxhciB0byBjaGVja2luZyBvdXQgYnkgYnJhbmNoIG5hbWUgZXhjZXB0IHlvdQorICAgICAgICAgICAgdXNlIHRhZyBuYW1lcy4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIENoZWNraW5nIG91dCBhIGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBnaXZlcyB5b3UgYQorICAgICAgICAgICAgICAgIHN0YWJsZSBzZXQgb2YgZmlsZXMgbm90IGFmZmVjdGVkIGJ5IGRldmVsb3BtZW50IG9uIHRoZQorICAgICAgICAgICAgICAgIGJyYW5jaCBhYm92ZSB0aGUgdGFnLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN3aXRjaCB0byB0aGUgUG9reSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBsb2NhbCBwb2t5IEdpdCByZXBvc2l0b3J5LCBzd2l0Y2ggdG8gdGhhdAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgbG9jYWwgY29weSBvZiBwb2t5LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjbG9uaW5nLXRoZS1wb2t5LXJlcG9zaXRvcnknPkNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZldGNoIHRoZSBUYWcgTmFtZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVG8gY2hlY2tvdXQgdGhlIGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBuYW1lLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBmZXRjaCB0aGUgdXBzdHJlYW0gdGFncyBpbnRvIHlvdXIgbG9jYWwgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBmZXRjaCAtLXRhZ3MKKyAgICAgJAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxpc3QgdGhlIFRhZyBOYW1lczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGxpc3QgdGhlIHRhZyBuYW1lcyBub3c6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgdGFnCisgICAgIDEuMV9NMS5maW5hbAorICAgICAxLjFfTTEucmMxCisgICAgIDEuMV9NMS5yYzIKKyAgICAgMS4xX00yLmZpbmFsCisgICAgIDEuMV9NMi5yYzEKKyAgICAgICAgLgorICAgICAgICAuCisgICAgICAgIC4KKyAgICAgeW9jdG8tMi4yCisgICAgIHlvY3RvLTIuMi4xCisgICAgIHlvY3RvLTIuMworICAgICB5b2N0by0yLjMuMQorICAgICB5b2N0by0yLjQKKyAgICAgeW9jdG9fMS41X001LnJjOAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjaGVja291dCB0YWdzLyZESVNUUk87IC1iIG15X3lvY3RvXyZESVNUUk87CisgICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnbXlfeW9jdG9fJkRJU1RSTzsnCisgICAgICQgZ2l0IGJyYW5jaAorICAgICAgIG1hc3RlcgorICAgICAqIG15X3lvY3RvXyZESVNUUk87CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmQgY3JlYXRlcyBhbmQgY2hlY2tzIG91dCBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBuYW1lZCAibXlfeW9jdG9fJkRJU1RSTzsiLCB3aGljaCBpcyBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWl0IGluIHRoZSB1cHN0cmVhbSBwb2t5IHJlcG9zaXRvcnkgdGhhdCBoYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgdGFnLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBmaWxlcyB5b3UgaGF2ZSBhdmFpbGFibGUgbG9jYWxseQorICAgICAgICAgICAgICAgICAgICBhcyBhIHJlc3VsdCBvZiB0aGUgPGZpbGVuYW1lPmNoZWNrb3V0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBhcmUgYSBzbmFwc2hvdCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIiZESVNUUk9fTkFNRV9OT19DQVA7IiBkZXZlbG9wbWVudCBicmFuY2ggYXQgdGhlIHBvaW50CisgICAgICAgICAgICAgICAgICAgIHdoZXJlIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgd2FzIHJlbGVhc2VkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdwZXJmb3JtaW5nLWEtc2ltcGxlLWJ1aWxkJz4KKyAgICA8dGl0bGU+UGVyZm9ybWluZyBhIFNpbXBsZSBCdWlsZDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU2V2ZXJhbCBtZXRob2RzIGV4aXN0IHRoYXQgYWxsb3cgeW91IHRvIGJ1aWxkIGFuIGltYWdlIHdpdGhpbiB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgVGhpcyBwcm9jZWR1cmUgc2hvd3MgaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nIEJpdEJha2UgZnJvbSBhCisgICAgICAgIExpbnV4IGhvc3QuCisgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBidWlsZCBhbiBpbWFnZSB1c2luZworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0b2FzdGVyLXRlcm0nPlRvYXN0ZXI8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Zb2N0byBQcm9qZWN0IFRvYXN0ZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBidWlsZCBpbWFnZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3VzaW5nLWRldnRvb2wtaW4teW91ci1zZGstd29ya2Zsb3cnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gaW4gWW91ciBTREsgV29ya2Zsb3c8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgY3JlYXRlcyBhbiBlbnRpcmUgTGludXggZGlzdHJpYnV0aW9uIGZyb20gc291cmNlCisgICAgICAgIGFuZCBwbGFjZXMgaXQgaW4geW91cgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgIHVuZGVyIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlczwvZmlsZW5hbWU+LgorICAgICAgICBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIHByb2Nlc3MgdXNpbmcgQml0QmFrZSwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgWW91IGNhbiBhbHNvIHJlZmVyZW5jZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIKICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgaXMgYXMgZm9sbG93czoKKyAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgYW5kIGxpc3Qgb3ZlcnZpZXdzIHRoZSBidWlsZCBwcm9jZXNzOgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyIgd2lkdGg9IjdpbiIgZGVwdGg9IjRpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CiAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5NYWtlIHN1cmUgeW91IGhhdmUgc2V0IHVwIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICBwcmV2aW91cyBzZWN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluaXRpYWxpemUgdGhlIGJ1aWxkIGVudmlyb25tZW50IGJ5IHNvdXJjaW5nIGEgYnVpbGQKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzY3JpcHQgKGkuZS4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIFlvdXIgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW0gdG8gU3VwcG9ydAorICAgICAgICAgICAgICAgIERldmVsb3BtZW50IFVzaW5nIHRoZSBZb2N0byBQcm9qZWN0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3lwLXJlc291cmNlcyc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZvciBvcHRpb25zIG9uIGhvdworICAgICAgICAgICAgICAgIHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk9wdGlvbmFsbHkgZW5zdXJlIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLAotICAgICAgICAgICAgICAgIHdoaWNoIGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiwKKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbml0aWFsaXplIHRoZSBidWlsZCBlbnZpcm9ubWVudCBieSBzb3VyY2luZyB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzY3JpcHQgKGkuZS4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFN1cmUgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgRmlsZSBpcyBDb3JyZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRW5zdXJlIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgaXMgc2V0IHVwIGhvdyB5b3Ugd2FudCBpdC4KLSAgICAgICAgICAgICAgICBUaGlzIGZpbGUgZGVmaW5lcyBtYW55IGFzcGVjdHMgb2YgdGhlIGJ1aWxkIGVudmlyb25tZW50IGluY2x1ZGluZwotICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgbWFjaGluZSBhcmNoaXRlY3R1cmUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICBUaGlzIGZpbGUgZGVmaW5lcyBtYW55IGFzcGVjdHMgb2YgdGhlIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHRoZSB0YXJnZXQgbWFjaGluZSBhcmNoaXRlY3R1cmUgdGhyb3VnaCB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPk1BQ0hJTkU8L3VsaW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLAogICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdpbmcgZm9ybWF0IHVzZWQgZHVyaW5nIHRoZSBidWlsZAogICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L3VsaW5rPiksCiAgICAgICAgICAgICAgICAgYW5kIGEgY2VudHJhbGl6ZWQgdGFyYmFsbCBkb3dubG9hZCBkaXJlY3RvcnkgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURMX0RJUic+RExfRElSPC91bGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURMX0RJUic+RExfRElSPC91bGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIEltYWdlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIGltYWdlIHVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgaW5mb3JtYXRpb24gb24gQml0QmFrZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgYnVpbGRzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UnVuIHRoZSBpbWFnZSBlaXRoZXIgb24gdGhlIGFjdHVhbCBoYXJkd2FyZSBvciB1c2luZyB0aGUgUUVNVQotICAgICAgICAgICAgICAgIGVtdWxhdG9yLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAotPHNlY3Rpb24gaWQ9J2ZsYXNoaW5nLWltYWdlcy11c2luZy1ibWFwdG9vbCc+Ci0gICAgPHRpdGxlPkZsYXNoaW5nIEltYWdlcyBVc2luZyA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPjwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQW4gZWFzeSB3YXkgdG8gZmxhc2ggYW4gaW1hZ2UgdG8gYSBib290YWJsZSBkZXZpY2UgaXMgdG8gdXNlCi0gICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+LCB3aGljaCBpcyBpbnRlZ3JhdGVkIGludG8gdGhlCi0gICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvbGxvd2luZywgaXMgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBmbGFzaCBhIFdpYyBpbWFnZS4KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiB0byBmbGFzaCBhbnkKLSAgICAgICAgICAgIHR5cGUgb2YgaW1hZ2UuCi0gICAgICAgIDwvbm90ZT4KLSAgICAgICAgVXNlIHRoZXNlIHN0ZXBzIHRvIGZsYXNoIGFuIGltYWdlIHVzaW5nCi0gICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+OgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFVubGVzcyB5b3UgYXJlIGFibGUgdG8gaW5zdGFsbCB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwLXRvb2xzPC9maWxlbmFtZT4gcGFja2FnZSBhcyBtZW50aW9uZWQgaW4gdGhlIG5vdGUKLSAgICAgICAgICAgIGluIHRoZSBzZWNvbmQgYnVsbGV0IG9mIHN0ZXAgMyBmdXJ0aGVyIGRvd24sIHlvdSB3aWxsIG5lZWQgdG8gYnVpbGQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IGJlZm9yZSB1c2luZyBpdC4KLSAgICAgICAgICAgIEJ1aWxkIHRoZSB0b29sIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIGJtYXAtdG9vbHMtbmF0aXZlCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvbm90ZT4KLSAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIEFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZpbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBJTUFHRV9GU1RZUEVTICs9ICJ3aWMgd2ljLmJtYXAiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIEVpdGhlciBoYXZlIHlvdXIgaW1hZ2UgcmVhZHkgKHByZS1idWlsdCkgb3IgdGFrZSB0aGUgc3RlcAotICAgICAgICAgICAgICAgIGJ1aWxkIHRoZSBpbWFnZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBGbGFzaCB0aGUgaW1hZ2UgdG8gdGhlIG1lZGlhIGJ5IHVzaW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gZGVwZW5kaW5nIG9uIHlvdXIgcGFydGljdWxhcgotICAgICAgICAgICAgICAgIHNldHVwOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgbWVkaWEsCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhpcyBjb21tYW5kIGZvcm06Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwdG9vbCBjb3B5IC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi53aWMgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgYWNjZXNzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWVkaWEsIHVzZSB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGJhc2gKLSAgICAgJCBQQVRIPXRtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi8gYm1hcHRvb2wgY29weSAuL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQvY29yZS1pbWFnZS1taW5pbWFsLTxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4ud2ljIC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIFVidW50dSBvciBEZWJpYW4gZGlzdHJpYnV0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGluc3RhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXAtdG9vbHM8L2ZpbGVuYW1lPiBwYWNrYWdlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjb21tYW5kIGFuZCB0aGVuIHVzZSB0aGUgdG9vbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgc3BlY2lmeWluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZXZlbiBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgYWNjb3VudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgYm1hcC10b29scwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgaGVscCBvbiB0aGUgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gY29tbWFuZCwgdXNlIGVpdGhlciBvZgotICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYm1hcHRvb2wgLS1oZWxwCi0gICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwdG9vbCAtLWhlbHAKLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3VzaW5nLXByZS1idWlsdC1iaW5hcmllcy1hbmQtcWVtdSc+Ci0gICAgPHRpdGxlPlVzaW5nIFByZS1CdWlsdCBCaW5hcmllcyBhbmQgUUVNVTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQW5vdGhlciBvcHRpb24geW91IGhhdmUgdG8gZ2V0IHN0YXJ0ZWQgaXMgdG8gdXNlIHByZS1idWlsdCBiaW5hcmllcy4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgbWFueSB0eXBlcyBvZiBiaW5hcmllcyB3aXRoIGVhY2ggcmVsZWFzZS4KLSAgICAgICAgU2VlIHRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iCi0gICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbAotICAgICAgICBmb3IgZGVzY3JpcHRpb25zIG9mIHRoZSB0eXBlcyBvZiBiaW5hcmllcyB0aGF0IHNoaXAgd2l0aCBhIFlvY3RvIFByb2plY3QKLSAgICAgICAgcmVsZWFzZS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVXNpbmcgYSBwcmUtYnVpbHQgYmluYXJ5IGlzIGlkZWFsIGZvciBkZXZlbG9waW5nIHNvZnR3YXJlCi0gICAgICAgIGFwcGxpY2F0aW9ucyB0byBydW4gb24geW91ciB0YXJnZXQgaGFyZHdhcmUuCi0gICAgICAgIFRvIGRvIHRoaXMsIHlvdSBuZWVkIHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICBjcm9zcy10b29sY2hhaW4gdGFyYmFsbCBmb3IgdGhlIGFyY2hpdGVjdHVyZSBvbiB3aGljaCB5b3UgYXJlCi0gICAgICAgIGRldmVsb3BpbmcuCi0gICAgICAgIElmIHlvdSBhcmUgdXNpbmcgYW4gU0RLIHR5cGUgaW1hZ2UsIHRoZSBpbWFnZSBzaGlwcyB3aXRoIHRoZSBjb21wbGV0ZQotICAgICAgICB0b29sY2hhaW4gbmF0aXZlIHRvIHRoZSBhcmNoaXRlY3R1cmUgKGkuZS4gYSB0b29sY2hhaW4gZGVzaWduZWQgdG8KLSAgICAgICAgcnVuIG9uIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+KS4KLSAgICAgICAgSWYgeW91IGFyZSBub3QgdXNpbmcgYW4gU0RLIHR5cGUgaW1hZ2UsIHlvdSBuZWVkIHRvIHNlcGFyYXRlbHkgZG93bmxvYWQKLSAgICAgICAgYW5kIGluc3RhbGwgdGhlIHN0YW5kLWFsb25lIFlvY3RvIFByb2plY3QgY3Jvc3MtdG9vbGNoYWluIHRhcmJhbGwuCi0gICAgICAgIFNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hcHBlbmRpeC1vYnRhaW4nPk9idGFpbmluZyB0aGUgU0RLPC91bGluaz4iCi0gICAgICAgIGFwcGVuZGl4IGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKQotICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsb2NhdGluZyBhbmQgaW5zdGFsbGluZwotICAgICAgICBjcm9zcy10b29sY2hhaW5zLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIGltYWdlIHlvdSBhcmUgdXNpbmcsIHlvdSBuZWVkIHRvIGRvd25sb2FkIHRoZSBwcmUtYnVpbHQga2VybmVsCi0gICAgICAgIHRoYXQgeW91IHdpbGwgYm9vdCBpbiB0aGUgUUVNVSBlbXVsYXRvciBhbmQgdGhlbiBkb3dubG9hZCBhbmQgZXh0cmFjdCB0aGUgdGFyZ2V0IHJvb3QKLSAgICAgICAgZmlsZXN5c3RlbSBmb3IgeW91ciB0YXJnZXQgbWFjaGluZeKAmXMgYXJjaGl0ZWN0dXJlLgotICAgICAgICBZb3UgY2FuIGdldCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYmluYXJpZXMgYW5kIGZpbGUgc3lzdGVtcyBmcm9tCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19NQUNISU5FU19ETF9VUkw7Jz5tYWNoaW5lczwvdWxpbms+LgotICAgICAgICBZb3UgY2FuIGdldCBpbnN0YWxsYXRpb24gc2NyaXB0cyBmb3Igc3RhbmQtYWxvbmUgdG9vbGNoYWlucyBmcm9tCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19UT09MQ0hBSU5fRExfVVJMOyc+dG9vbGNoYWluczwvdWxpbms+LgotICAgICAgICBPbmNlIHlvdSBoYXZlIGFsbCB5b3VyIGZpbGVzLCB5b3Ugc2V0IHVwIHRoZSBlbnZpcm9ubWVudCB0byBlbXVsYXRlIHRoZSBoYXJkd2FyZQotICAgICAgICBieSBzb3VyY2luZyBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgIEZpbmFsbHksIHlvdSBzdGFydCB0aGUgUUVNVSBlbXVsYXRvci4KLSAgICAgICAgWW91IGNhbiBmaW5kIGRldGFpbHMgb24gYWxsIHRoZXNlIHN0ZXBzIGluIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstbWFudWFsJz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdXNpbmcgUUVNVSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGluIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC9saW5rPiIKLSAgICAgICAgc2VjdGlvbi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVXNpbmcgUUVNVSB0byBlbXVsYXRlIHlvdXIgaGFyZHdhcmUgY2FuIHJlc3VsdCBpbiBzcGVlZCBpc3N1ZXMKLSAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgYW5kIGhvc3QgYXJjaGl0ZWN0dXJlIG1peC4KLSAgICAgICAgRm9yIGV4YW1wbGUsIHVzaW5nIHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGltYWdlIGluIHRoZSBlbXVsYXRvcgotICAgICAgICBvbiBhbiBJbnRlbC1iYXNlZCAzMi1iaXQgKHg4NikgaG9zdCBtYWNoaW5lIGlzIGZhc3QgYmVjYXVzZSB0aGUgdGFyZ2V0IGFuZAotICAgICAgICBob3N0IGFyY2hpdGVjdHVyZXMgbWF0Y2guCi0gICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiBpbWFnZSBvbiB0aGUgc2FtZSBJbnRlbC1iYXNlZAotICAgICAgICBob3N0IGNhbiBiZSBzbG93ZXIuCi0gICAgICAgIEJ1dCwgeW91IHN0aWxsIGFjaGlldmUgZmFpdGhmdWwgZW11bGF0aW9uIG9mIEFSTS1zcGVjaWZpYyBpc3N1ZXMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRvIHNwZWVkIHRoaW5ncyB1cCwgdGhlIFFFTVUgaW1hZ2VzIHN1cHBvcnQgdXNpbmcgPGZpbGVuYW1lPmRpc3RjYzwvZmlsZW5hbWU+Ci0gICAgICAgIHRvIGNhbGwgYSBjcm9zcy1jb21waWxlciBvdXRzaWRlIHRoZSBlbXVsYXRlZCBzeXN0ZW0uCi0gICAgICAgIElmIHlvdSB1c2VkIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gdG8gc3RhcnQgUUVNVSwgYW5kIHRoZQotICAgICAgICA8ZmlsZW5hbWU+ZGlzdGNjZDwvZmlsZW5hbWU+IGFwcGxpY2F0aW9uIGlzIHByZXNlbnQgb24gdGhlIGhvc3Qgc3lzdGVtLCBhbnkKLSAgICAgICAgQml0QmFrZSBjcm9zcy1jb21waWxpbmcgdG9vbGNoYWluIGF2YWlsYWJsZSBmcm9tIHRoZSBidWlsZCBzeXN0ZW0gaXMgYXV0b21hdGljYWxseQotICAgICAgICB1c2VkIGZyb20gd2l0aGluIFFFTVUgc2ltcGx5IGJ5IGNhbGxpbmcgPGZpbGVuYW1lPmRpc3RjYzwvZmlsZW5hbWU+LgotICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggdGhpcyBieSBkZWZpbmluZyB0aGUgY3Jvc3MtY29tcGlsZXIgdmFyaWFibGUKLSAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmV4cG9ydCBDQz0iZGlzdGNjIjwvZmlsZW5hbWU+KS4KLSAgICAgICAgQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB1c2luZyBhIHN1aXRhYmxlIFNESyBpbWFnZSBvciB0aGUgYXBwcm9wcmlhdGUKLSAgICAgICAgc3RhbmQtYWxvbmUgdG9vbGNoYWluIGlzIHByZXNlbnQsCi0gICAgICAgIHRoZSB0b29sY2hhaW4gaXMgYWxzbyBhdXRvbWF0aWNhbGx5IHVzZWQuCi0gICAgPC9wYXJhPgotCi0gICAgPG5vdGU+Ci0gICAgICAgIFNldmVyYWwgbWVjaGFuaXNtcyBleGlzdCB0aGF0IGxldCB5b3UgY29ubmVjdCB0byB0aGUgc3lzdGVtIHJ1bm5pbmcgb24gdGhlCi0gICAgICAgIFFFTVUgZW11bGF0b3I6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UUVNVSBwcm92aWRlcyBhIGZyYW1lYnVmZmVyIGludGVyZmFjZSB0aGF0IG1ha2VzIHN0YW5kYXJkCi0gICAgICAgICAgICAgICAgY29uc29sZXMgYXZhaWxhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdlbmVyYWxseSwgaGVhZGxlc3MgZW1iZWRkZWQgZGV2aWNlcyBoYXZlIGEgc2VyaWFsIHBvcnQuCi0gICAgICAgICAgICAgICAgSWYgc28sIHlvdSBjYW4gY29uZmlndXJlIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9mIHRoZSBydW5uaW5nIGltYWdlCi0gICAgICAgICAgICAgICAgdG8gdXNlIHRoYXQgcG9ydCB0byBydW4gYSBjb25zb2xlLgotICAgICAgICAgICAgICAgIFRoZSBjb25uZWN0aW9uIHVzZXMgc3RhbmRhcmQgSVAgbmV0d29ya2luZy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBTU0ggc2VydmVycyBleGlzdCBpbiBzb21lIFFFTVUgaW1hZ2VzLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gUUVNVSBpbWFnZSBoYXMgYQotICAgICAgICAgICAgICAgIERyb3BiZWFyIHNlY3VyZSBzaGVsbCAoU1NIKSBzZXJ2ZXIgdGhhdCBydW5zIHdpdGggdGhlIHJvb3QKLSAgICAgICAgICAgICAgICBwYXNzd29yZCBkaXNhYmxlZC4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT4gUUVNVSBpbWFnZXMKLSAgICAgICAgICAgICAgICBoYXZlIE9wZW5TU0ggaW5zdGVhZCBvZiBEcm9wYmVhci4KLSAgICAgICAgICAgICAgICBJbmNsdWRpbmcgdGhlc2UgU1NIIHNlcnZlcnMgYWxsb3cgeW91IHRvIHVzZSBzdGFuZGFyZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnNjcDwvZmlsZW5hbWU+IGNvbW1hbmRzLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gUUVNVSBpbWFnZSwKLSAgICAgICAgICAgICAgICBob3dldmVyLCBjb250YWlucyBubyBTU0ggc2VydmVyLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSBjYW4gdXNlIGEgcHJvdmlkZWQsIHVzZXItc3BhY2UgTkZTIHNlcnZlciB0byBib290IHRoZSBRRU1VIHNlc3Npb24KLSAgICAgICAgICAgICAgICB1c2luZyBhIGxvY2FsIGNvcHkgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSBvbiB0aGUgaG9zdC4KLSAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBtYWtlIHRoaXMgY29ubmVjdGlvbiwgeW91IG11c3QgZXh0cmFjdCBhIHJvb3QgZmlsZXN5c3RlbSB0YXJiYWxsIGJ5IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11LWV4dHJhY3Qtc2RrPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCB5b3UgbXVzdCB0aGVuIHBvaW50IHRoZSA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgc2NyaXB0IHRvIHRoZSBleHRyYWN0ZWQgZGlyZWN0b3J5IGluc3RlYWQgb2YgYSByb290IGZpbGVzeXN0ZW0gaW1hZ2UgZmlsZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9ub3RlPgotPC9zZWN0aW9uPgorLS0+CiA8L2NoYXB0ZXI+CiA8IS0tCiB2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbAppbmRleCAyNmVlOTc0Li5lZDgwMTFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwKQEAgLTE3LDE0ICsxNywxNCBAQAogICAgICAgICA8L21lZGlhb2JqZWN0PgogCiAgICAgICAgIDx0aXRsZT4KLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAogICAgICAgICA8L3RpdGxlPgogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+CiAgICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5JbnRlbCBDb3Jwb3JhdGlvbjwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CiAgICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgpAQCAtOTcsMjQgKzk3LDE5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SnVuZSAyMDE3PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPlNlcHRlbWJlciAyMDE3PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4zPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuNDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTEzMCwzMyArMTI1LDM0IEBACiAgICAgICAgICAgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAyLjAgVUs6IEVuZ2xhbmQgJmFtcDsgV2FsZXM8L3VsaW5rPiBhcyBwdWJsaXNoZWQgYnkKICAgICAgICAgICBDcmVhdGl2ZSBDb21tb25zLgogICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgWW9jdG8gUHJvamVjdCByZWxlYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiAmWU9DVE9fRE9DX1ZFUlNJT047KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCB1c2UgdGhlIG1hbnVhbCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hbnVhbHMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbWFudWFsIGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICZZT0NUT19ET0NfVkVSU0lPTjsuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbGF0ZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgKGlmIHRoZXkgZXhpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBmb3Igd2hpY2ggeW91IHdhbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGluLWRldmVsb3BtZW50IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IE1hbnVhbCwgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7L2xhdGVzdC9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KIAogICAgIDwvYm9va2luZm8+CkBAIC0xNjcsOCArMTYzLDYgQEAKIAogICAgIDx4aTppbmNsdWRlIGhyZWY9ImRldi1tYW51YWwtbmV3YmllLnhtbCIvPgogCi0gICAgPHhpOmluY2x1ZGUgaHJlZj0iZGV2LW1hbnVhbC1tb2RlbC54bWwiLz4KLQogICAgIDx4aTppbmNsdWRlIGhyZWY9ImRldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbCIvPgogCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0iZGV2LW1hbnVhbC1xZW11LnhtbCIvPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDgyNjVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQwYjBhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9kZXYtdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2Rldi10aXRsZS5wbmcKaW5kZXggZDNjYWM0YS4uMTVlNjdkMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2Rldi10aXRsZS5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2Rldi10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2RldnRvb2wtYWRkLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2RldnRvb2wtYWRkLWZsb3cucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODVhYzMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9kZXZ0b29sLWFkZC1mbG93LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9kZXZ0b29sLW1vZGlmeS1mbG93LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ2ODRmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2RldnRvb2wtdXBncmFkZS1mbG93LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU0NzRkYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEyNTFkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwOTEwNWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTEucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0xLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE2YzBiOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTEucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjk3MGVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YzVmMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2ZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYvZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5M2EzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2ZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUyY2RiMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYvZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkLnhtbAppbmRleCBhNWNjZmRjLi5jMzAxM2I4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1hZHZhbmNlZC54bWwKQEAgLTMsNyArMyw3IEBACiBbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CiAKIDxjaGFwdGVyIGlkPSdrZXJuZWwtZGV2LWFkdmFuY2VkJz4KLTx0aXRsZT5Xb3JraW5nIHdpdGggQWR2YW5jZWQgTWV0YWRhdGE8L3RpdGxlPgorPHRpdGxlPldvcmtpbmcgd2l0aCBBZHZhbmNlZCBNZXRhZGF0YSAoPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+KTwvdGl0bGU+CiAKIDxzZWN0aW9uIGlkPSdrZXJuZWwtZGV2LWFkdmFuY2VkLW92ZXJ2aWV3Jz4KICAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgpAQCAtMTEsMzMgKzExLDUxIEBACiAgICAgPHBhcmE+CiAgICAgICAgIEluIGFkZGl0aW9uIHRvIHN1cHBvcnRpbmcgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgYW5kIHBhdGNoZXMsIHRoZQogICAgICAgICBZb2N0byBQcm9qZWN0IGtlcm5lbCB0b29scyBhbHNvIHN1cHBvcnQgcmljaAotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiB0aGF0IHlvdSBjYW4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4gdGhhdCB5b3UgY2FuCiAgICAgICAgIHVzZSB0byBkZWZpbmUgY29tcGxleCBwb2xpY2llcyBhbmQgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIHN1cHBvcnQuCi0gICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoZSBNZXRhZGF0YSBhbmQgdGhlIHRvb2xzIHRoYXQgbWFuYWdlIGl0LCBrbm93biBhcwotICAgICAgICB0aGUga2Vybi10b29scyAoPGZpbGVuYW1lPmtlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYjwvZmlsZW5hbWU+KSwgaXMKKyAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhlIE1ldGFkYXRhIGFuZCB0aGUgdG9vbHMgdGhhdCBtYW5hZ2UgaXQgaXMKICAgICAgICAgdG8gaGVscCB5b3UgbWFuYWdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSBjb25maWd1cmF0aW9uIGFuZCBzb3VyY2VzCiAgICAgICAgIHVzZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBCU1BzIGFuZCBMaW51eCBrZXJuZWwgdHlwZXMuCiAgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEtlcm5lbCBNZXRhZGF0YSBleGlzdHMgaW4gbWFueSBwbGFjZXMuCisgICAgICAgIE9uZSBhcmVhIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICBpcyB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgorICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyByZXBvc2l0b3J5IGdyb3VwZWQgdW5kZXIgdGhlICJZb2N0byBMaW51eCBLZXJuZWwiCisgICAgICAgIGhlYWRpbmcgaW4gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEtlcm5lbCBkZXZlbG9wbWVudCB0b29scyAoImtlcm4tdG9vbHMiKSBleGlzdCBhbHNvIGluIHRoZSBZb2N0bworICAgICAgICBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgdW5kZXIgdGhlICJZb2N0byBMaW51eCBLZXJuZWwiIGhlYWRpbmcKKyAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtdG9vbHM8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgVGhlIHJlY2lwZSB0aGF0IGJ1aWxkcyB0aGVzZSB0b29scyBpcworICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYjwvZmlsZW5hbWU+CisgICAgICAgIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCisgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCiA8c2VjdGlvbiBpZD0ndXNpbmcta2VybmVsLW1ldGFkYXRhLWluLWEtcmVjaXBlJz4KICAgICA8dGl0bGU+VXNpbmcgS2VybmVsIE1ldGFkYXRhIGluIGEgUmVjaXBlPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGUga2VybmVsIHNvdXJjZXMgaW4gdGhlIFlvY3RvIFByb2plY3QgY29udGFpbiBrZXJuZWwgTWV0YWRhdGEsIHdoaWNoCi0gICAgICAgIGlzIGxvY2F0ZWQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoZXMgb2YgdGhlIGtlcm5lbAotICAgICAgICBzb3VyY2UgR2l0IHJlcG9zaXRvcmllcy4KKyAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBpbnRyb2R1Y3Rpb24sIHRoZSBZb2N0byBQcm9qZWN0IGNvbnRhaW5zIGtlcm5lbAorICAgICAgICBNZXRhZGF0YSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgogICAgICAgICBUaGlzIE1ldGFkYXRhIGRlZmluZXMgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykgdGhhdAotICAgICAgICBjb3JyZXNwb25kIHRvIGRlZmluaXRpb25zIGluIGxpbnV4LXlvY3RvIHJlY2lwZXMgZm9yIHRoZSBzYW1lIEJTUHMuCisgICAgICAgIGNvcnJlc3BvbmQgdG8gZGVmaW5pdGlvbnMgaW4gbGludXgteW9jdG8gcmVjaXBlcyBmb3IgY29ycmVzcG9uZGluZyBCU1BzLgogICAgICAgICBBIEJTUCBjb25zaXN0cyBvZiBhbiBhZ2dyZWdhdGlvbiBvZiBrZXJuZWwgcG9saWN5IGFuZCBlbmFibGVkCiAgICAgICAgIGhhcmR3YXJlLXNwZWNpZmljIGZlYXR1cmVzLgogICAgICAgICBUaGUgQlNQIGNhbiBiZSBpbmZsdWVuY2VkIGZyb20gd2l0aGluIHRoZSBsaW51eC15b2N0byByZWNpcGUuCiAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgTGludXgga2VybmVsIHNvdXJjZSB0aGF0IGNvbnRhaW5zIGtlcm5lbCBNZXRhZGF0YSBpcyBzYWlkIHRvIGJlCi0gICAgICAgICAgICAibGludXgteW9jdG8gc3R5bGUiIGtlcm5lbCBzb3VyY2UuCi0gICAgICAgICAgICBBIExpbnV4IGtlcm5lbCByZWNpcGUgdGhhdCBpbmhlcml0cyBmcm9tIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLmluYzwvZmlsZW5hbWU+IGluY2x1ZGUgZmlsZSBpcyBzYWlkIHRvIGJlIGEKLSAgICAgICAgICAgICJsaW51eC15b2N0byBzdHlsZSIgcmVjaXBlLgorICAgICAgICAgICAgQSBMaW51eCBrZXJuZWwgcmVjaXBlIHRoYXQgY29udGFpbnMga2VybmVsIE1ldGFkYXRhIChlLmcuCisgICAgICAgICAgICBpbmhlcml0cyBmcm9tIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8uaW5jPC9maWxlbmFtZT4gZmlsZSkKKyAgICAgICAgICAgIGlzIHNhaWQgdG8gYmUgYSAibGludXgteW9jdG8gc3R5bGUiIHJlY2lwZS4KICAgICAgICAgPC9ub3RlPgogICAgIDwvcGFyYT4KIApAQCAtNDgsNyArNjYsNyBAQAogICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHR5cGljYWxseSBzZXQgdG8gdGhlIHNhbWUgdmFsdWUgYXMgdGhlCiAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHVzZWQgYnkKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4uCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+LgogICAgICAgICBIb3dldmVyLCBpbiBzb21lIGNhc2VzLCB0aGUgdmFyaWFibGUgbWlnaHQgaW5zdGVhZCByZWZlciB0byB0aGUKICAgICAgICAgdW5kZXJseWluZyBwbGF0Zm9ybSBvZiB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPi4KICAgICA8L3BhcmE+CkBAIC01NiwxMiArNzQsMTYgQEAKICAgICA8cGFyYT4KICAgICAgICAgTXVsdGlwbGUgQlNQcyBjYW4gcmV1c2UgdGhlIHNhbWUgPGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT4KICAgICAgICAgbmFtZSBpZiB0aGV5IGFyZSBidWlsdCB1c2luZyB0aGUgc2FtZSBCU1AgZGVzY3JpcHRpb24uCi0gICAgICAgIFRoZSAiZXAxMDgtenlucW1wIiBhbmQgInFlbXV6eW5xbXAiIEJTUCBjb21iaW5hdGlvbgotICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPm1ldGEteGlsaW54PC9maWxlbmFtZT4KLSAgICAgICAgbGF5ZXIgaXMgYSBnb29kIGV4YW1wbGUgb2YgdHdvIEJTUHMgdXNpbmcgdGhlIHNhbWUKLSAgICAgICAgPGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT4gdmFsdWUgKGkuZS4gInp5bnFtcCIpLgotICAgICAgICBTZWUgdGhlIDxsaW5rIGxpbmtlbmQ9J2JzcC1kZXNjcmlwdGlvbnMnPkJTUCBEZXNjcmlwdGlvbnM8L2xpbms+IHNlY3Rpb24KLSAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgIE11bHRpcGxlIENvcmVpNy1iYXNlZCBCU1BzIGNvdWxkIHNoYXJlIHRoZSBzYW1lICJpbnRlbC1jb3JlaTctNjQiCisgICAgICAgIHZhbHVlIGZvciA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPi4KKyAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhhdCA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiBpcworICAgICAgICBqdXN0IGZvciBrZXJuZWwgbWFwcGluZywgd2hpbGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICBpcyB0aGUgbWFjaGluZSB0eXBlIHdpdGhpbiBhIEJTUCBMYXllci4KKyAgICAgICAgRXZlbiB3aXRoIHRoaXMgZGlzdGluY3Rpb24sIGhvd2V2ZXIsIHRoZXNlIHR3byB2YXJpYWJsZXMgY2FuIGhvbGQKKyAgICAgICAgdGhlIHNhbWUgdmFsdWUuCisgICAgICAgIFNlZSB0aGUgPGxpbmsgbGlua2VuZD0nYnNwLWRlc2NyaXB0aW9ucyc+QlNQIERlc2NyaXB0aW9uczwvbGluaz4KKyAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTcyLDkgKzk0LDkgQEAKICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPiB2YWx1ZSB0byBkZWZpbmUgYW4KICAgICAgICAgICAgIGFsdGVybmF0ZSBicmFuY2ggdHlwaWNhbGx5IHdpdGggYSBtYWNoaW5lIG92ZXJyaWRlIGFzIHNob3duIGhlcmUKLSAgICAgICAgICAgIGZyb20gdGhlIDxmaWxlbmFtZT5tZXRhLWVtZW5sb3c8L2ZpbGVuYW1lPiBsYXllcjoKKyAgICAgICAgICAgIGZyb20gdGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBLQlJBTkNIX2VtZW5sb3ctbm9lbWdkID0gInN0YW5kYXJkL2Jhc2UiCisgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICA8L25vdGU+CiAgICAgPC9wYXJhPgpAQCAtMTEzLDE2ICsxMzUsNyBAQAogICAgICAgICByZWNpcGUuCiAgICAgICAgIFRoZSB0b29scyB1c2UgdGhlIGZpcnN0IEJTUCBkZXNjcmlwdGlvbiBpdCBmaW5kcyB0aGF0IG1hdGNoCiAgICAgICAgIGJvdGggdmFyaWFibGVzLgotICAgICAgICBJZiB0aGUgdG9vbHMgY2Fubm90IGZpbmQgYSBtYXRjaCwgdGhleSBpc3N1ZSBhIHdhcm5pbmcgc3VjaCBhcwotICAgICAgICB0aGUgZm9sbG93aW5nOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFdBUk5JTkc6IENhbid0IGZpbmQgYW55IEJTUCBoYXJkd2FyZSBvciByZXF1aXJlZCBjb25maWd1cmF0aW9uIGZyYWdtZW50cy4KLSAgICAgV0FSTklORzogTG9va2VkIGF0IG1ldGEvY2ZnL2Jyb2tlbi9lbWVubG93LWJyb2tlbi9oZHdfZnJhZ3MudHh0IGFuZAotICAgICAgICAgICAgICBtZXRhL2NmZy9icm9rZW4vZW1lbmxvdy1icm9rZW4vcmVxdWlyZWRfZnJhZ3MudHh0IGluIGRpcmVjdG9yeToKLSAgICAgICAgICAgICAgbWV0YS9jZmcvYnJva2VuL2VtZW5sb3ctYnJva2VuCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgSW4gdGhpcyBleGFtcGxlLCA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiB3YXMgc2V0IHRvICJlbWVubG93LWJyb2tlbiIKLSAgICAgICAgYW5kIDxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+IHdhcyBzZXQgdG8gImJyb2tlbiIuCisgICAgICAgIElmIHRoZSB0b29scyBjYW5ub3QgZmluZCBhIG1hdGNoLCB0aGV5IGlzc3VlIGEgd2FybmluZy4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTE1NCwxOSArMTY3LDEzIEBACiAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBlbnRyaWVzIGluIDxmaWxlbmFtZT5LRVJORUxfRkVBVFVSRVM8L2ZpbGVuYW1lPgogICAgICAgICBhcmUgZGVwZW5kZW50IG9uIHRoZWlyIGxvY2F0aW9uIHdpdGhpbiB0aGUga2VybmVsIE1ldGFkYXRhIGl0c2VsZi4KLSAgICAgICAgVGhlIGV4YW1wbGVzIGhlcmUgYXJlIHRha2VuIGZyb20gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4KLSAgICAgICAgYnJhbmNoIG9mIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCi0gICAgICAgIFdpdGhpbiB0aGF0IGJyYW5jaCwgImZlYXR1cmVzIiBhbmQgImNmZyIgYXJlIHN1YmRpcmVjdG9yaWVzIG9mIHRoZQotICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jZmcva2VybmVsLWNhY2hlPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICBUaGUgZXhhbXBsZXMgaGVyZSBhcmUgdGFrZW4gZnJvbSB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgIEVhY2ggYnJhbmNoIG9mIHRoaXMgcmVwb3NpdG9yeSBjb250YWlucyAiZmVhdHVyZXMiIGFuZCAiY2ZnIgorICAgICAgICBzdWJkaXJlY3RvcmllcyBhdCB0aGUgdG9wLWxldmVsLgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0na2VybmVsLW1ldGFkYXRhLXN5bnRheCc+S2VybmVsIE1ldGFkYXRhIFN5bnRheDwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgVGhlIHByb2Nlc3Npbmcgb2YgdGhlIHRoZXNlIHZhcmlhYmxlcyBoYXMgZXZvbHZlZCBzb21lIGJldHdlZW4gdGhlCi0JICAgICAgICAwLjkgYW5kIDEuMyByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgYXNzb2NpYXRlZAotCSAgICAgICAga2Vybi10b29scyBzb3VyY2VzLgotICAgICAgICAgICAgVGhlIGRlc2NyaXB0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYXJlIGFjY3VyYXRlIGZvciAxLjMgYW5kIGxhdGVyCi0JICAgICAgICByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgPC9ub3RlPgorICAgICAgICAiPGxpbmsgbGlua2VuZD0na2VybmVsLW1ldGFkYXRhLXN5bnRheCc+S2VybmVsIE1ldGFkYXRhIFN5bnRheDwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0yNzksMTEgKzI4NiwxMyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIFBhdGhzIHVzZWQgaW4ga2VybmVsIE1ldGFkYXRhIGZpbGVzIGFyZSByZWxhdGl2ZSB0bwotICAgICAgICA8ZmlsZW5hbWU+Jmx0O2Jhc2UmZ3Q7PC9maWxlbmFtZT4sIHdoaWNoIGlzIGVpdGhlcgorICAgICAgICA8cmVwbGFjZWFibGU+YmFzZTwvcmVwbGFjZWFibGU+LCB3aGljaCBpcyBlaXRoZXIKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTRVhUUkFQQVRIUyc+PGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgaWYgeW91IGFyZSBjcmVhdGluZyBNZXRhZGF0YSBpbgogICAgICAgICA8bGluayBsaW5rZW5kPSdyZWNpcGUtc3BhY2UtbWV0YWRhdGEnPnJlY2lwZS1zcGFjZTwvbGluaz4sCi0gICAgICAgIG9yIDxmaWxlbmFtZT5tZXRhL2NmZy9rZXJuZWwtY2FjaGUvPC9maWxlbmFtZT4gaWYgeW91IGFyZSBjcmVhdGluZworICAgICAgICBvciB0aGUgdG9wIGxldmVsIG9mCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3lvY3RvLWtlcm5lbC1jYWNoZS90cmVlLyc+PGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgaWYgeW91IGFyZSBjcmVhdGluZwogICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YS1vdXRzaWRlLXRoZS1yZWNpcGUtc3BhY2UnPk1ldGFkYXRhIG91dHNpZGUgb2YgdGhlIHJlY2lwZS1zcGFjZTwvbGluaz4uCiAgICAgPC9wYXJhPgogCkBAIC0zMDAsMTIgKzMwOSwxOCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgU3ltbWV0cmljIE11bHRpLVByb2Nlc3NpbmcgKFNNUCkgZnJhZ21lbnQgaW5jbHVkZWQgaW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xOTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5Ci0gICAgICAgICAgICBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIHR3byBmaWxlczoKKyAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBTeW1tZXRyaWMgTXVsdGktUHJvY2Vzc2luZyAoU01QKQorICAgICAgICAgICAgZnJhZ21lbnQgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+CisgICAgICAgICAgICBrZXJuZWwgYXMgZGVmaW5lZCBvdXRzaWRlIG9mIHRoZSByZWNpcGUgc3BhY2UgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBUaGlzIE1ldGFkYXRhIGNvbnNpc3RzIG9mIHR3byBmaWxlczogPGZpbGVuYW1lPnNtcC5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5zbXAuY2ZnPC9maWxlbmFtZT4uCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIDxmaWxlbmFtZT5jZmc8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+eW9jdG8tNC4xMjwvZmlsZW5hbWU+IGJyYW5jaCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgY2ZnL3NtcC5zY2M6Ci0gICAgICAgIGRlZmluZSBLRkVBVFVSRV9ERVNDUklQVElPTiAiRW5hYmxlIFNNUCIKKyAgICAgICAgZGVmaW5lIEtGRUFUVVJFX0RFU0NSSVBUSU9OICJFbmFibGUgU01QIGZvciAzMiBiaXQgYnVpbGRzIgogICAgICAgICBkZWZpbmUgS0ZFQVRVUkVfQ09NUEFUSUJJTElUWSBhbGwKIAogICAgICAgICBrY29uZiBoYXJkd2FyZSBzbXAuY2ZnCkBAIC0zMTYsMjIgKzMzMSwyNyBAQAogICAgICAgICAjIEluY3JlYXNlIGRlZmF1bHQgTlJfQ1BVUyBmcm9tIDggdG8gNjQgc28gdGhhdCBwbGF0Zm9ybSB3aXRoCiAgICAgICAgICMgbW9yZSB0aGFuIDggcHJvY2Vzc29ycyBjYW4gYmUgYWxsIGFjdGl2YXRlZCBhdCBib290IHRpbWUKICAgICAgICAgQ09ORklHX05SX0NQVVM9NjQKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIGlzIG5lZWRlZCB3aGVuIHNldHRpbmcgTlJfQ1BVUyB0byBzb21ldGhpbmcKKyAgICAgICAgIyBncmVhdGVyIHRoYW4gOCBvbiB4ODYgYXJjaGl0ZWN0dXJlcywgaXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgIyBkaXNyZWdhcmRlZCBieSBLY29uZmlnIHdoZW4gdXNpbmcgYSBkaWZmZXJlbnQgYXJjaAorICAgICAgICBDT05GSUdfWDg2X0JJR1NNUD15CiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5DcmVhdGluZyBDb25maWd1cmF0aW9uIEZyYWdtZW50czwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgYW5kIGluCi0gICAgICAgICAgICB0aGUgIjxsaW5rIGxpbmtlbmQ9J2dlbmVyYXRpbmctY29uZmlndXJhdGlvbi1maWxlcyc+R2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gZWFybGllciBpbiB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXMgaW4KKyAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdpdGhpbiB0aGUgPGZpbGVuYW1lPnNtcC5zY2M8L2ZpbGVuYW1lPiBmaWxlLCB0aGUKICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRkVBVFVSRV9ERVNDUklQVElPTic+PGZpbGVuYW1lPktGRUFUVVJFX0RFU0NSSVBUSU9OPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgcHJvdmlkZXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGUgZnJhZ21lbnQuCisgICAgICAgICAgICBzdGF0ZW1lbnQgcHJvdmlkZXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGUgZnJhZ21lbnQuCiAgICAgICAgICAgICBIaWdoZXIgbGV2ZWwga2VybmVsIHRvb2xzIHVzZSB0aGlzIGRlc2NyaXB0aW9uLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmtjb25mPC9maWxlbmFtZT4gY29tbWFuZCBpcyB1c2VkIHRvIGluY2x1ZGUgdGhlCisgICAgICAgICAgICBBbHNvIHdpdGhpbiB0aGUgPGZpbGVuYW1lPnNtcC5zY2M8L2ZpbGVuYW1lPiBmaWxlLCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5rY29uZjwvZmlsZW5hbWU+IGNvbW1hbmQgaW5jbHVkZXMgdGhlCiAgICAgICAgICAgICBhY3R1YWwgY29uZmlndXJhdGlvbiBmcmFnbWVudCBpbiBhbiA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+CiAgICAgICAgICAgICBmaWxlLCBhbmQgdGhlICJoYXJkd2FyZSIga2V5d29yZCBpZGVudGlmaWVzIHRoZSBmcmFnbWVudCBhcwogICAgICAgICAgICAgYmVpbmcgaGFyZHdhcmUgZW5hYmxpbmcsIGFzIG9wcG9zZWQgdG8gZ2VuZXJhbCBwb2xpY3ksCkBAIC0zNDcsNyArMzY3LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZW5lcmF0aW5nLWNvbmZpZ3VyYXRpb24tZmlsZXMnPkdlbmVyYXRpbmcgQ29uZmlndXJhdGlvbiBGaWxlczwvbGluaz4iCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndmFsaWRhdGluZy1jb25maWd1cmF0aW9uJz5WYWxpZGF0aW5nIENvbmZpZ3VyYXRpb248L2xpbms+IgogICAgICAgICAgICAgc2VjdGlvbiwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQgdG8gYXVkaXQgeW91cgogICAgICAgICAgICAgY29uZmlndXJhdGlvbjoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTM2MywyNiArMzgzLDcxIEBACiAgICAgICAgICAgICBQYXRjaCBkZXNjcmlwdGlvbnMgYXJlIHZlcnkgc2ltaWxhciB0byBjb25maWd1cmF0aW9uIGZyYWdtZW50CiAgICAgICAgICAgICBkZXNjcmlwdGlvbnMsIHdoaWNoIGFyZSBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCiAgICAgICAgICAgICBIb3dldmVyLCBpbnN0ZWFkIG9mIGEgPGZpbGVuYW1lPi5jZmc8L2ZpbGVuYW1lPiBmaWxlLCB0aGVzZQotICAgICAgICAgICAgZGVzY3JpcHRpb25zIHdvcmsgd2l0aCBzb3VyY2UgcGF0Y2hlcy4KKyAgICAgICAgICAgIGRlc2NyaXB0aW9ucyB3b3JrIHdpdGggc291cmNlIHBhdGNoZXMgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT4ucGF0Y2g8L2ZpbGVuYW1lPiBmaWxlcykuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEEgdHlwaWNhbCBwYXRjaCBpbmNsdWRlcyBhIGRlc2NyaXB0aW9uIGZpbGUgYW5kIHRoZSBwYXRjaCBpdHNlbGY6CisgICAgICAgICAgICBBIHR5cGljYWwgcGF0Y2ggaW5jbHVkZXMgYSBkZXNjcmlwdGlvbiBmaWxlIGFuZCB0aGUgcGF0Y2ggaXRzZWxmLgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIGJ1aWxkIHBhdGNoZXMgdXNlZCB3aXRoIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwgYXMgZGVmaW5lZCBvdXRzaWRlIG9mCisgICAgICAgICAgICB0aGUgcmVjaXBlIHNwYWNlIChpLmUuIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBUaGlzIE1ldGFkYXRhIGNvbnNpc3RzIG9mIHNldmVyYWwgZmlsZXM6CisgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQuc2NjPC9maWxlbmFtZT4gYW5kIGEgc2V0IG9mCisgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSA8ZmlsZW5hbWU+cGF0Y2hlcy9idWlsZDwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIDxmaWxlbmFtZT55b2N0by00LjEyPC9maWxlbmFtZT4gYnJhbmNoIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3RpbmdzIHNob3cgdGhlIDxmaWxlbmFtZT5idWlsZC5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSBhbmQgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tb2Rwb3N0LW1hc2stdHJpdmlhbC13YXJuaW5ncy5wYXRjaDwvZmlsZW5hbWU+IGZpbGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHBhdGNoZXMvbXlwYXRjaC5zY2M6Ci0gICAgICAgIHBhdGNoIG15cGF0Y2gucGF0Y2gKKyAgICAgcGF0Y2hlcy9idWlsZC9idWlsZC5zY2M6CisgICAgICAgIHBhdGNoIGFybS1zZXJpYWxpemUtYnVpbGQtdGFyZ2V0cy5wYXRjaAorICAgICAgICBwYXRjaCBwb3dlcnBjLXNlcmlhbGl6ZS1pbWFnZS10YXJnZXRzLnBhdGNoCisgICAgICAgIHBhdGNoIGtidWlsZC1leGNsdWRlLW1ldGEtZGlyZWN0b3J5LWZyb20tZGlzdGNsZWFuLXByb2Nlc3NpLnBhdGNoCiAKLSAgICAgcGF0Y2hlcy9teXBhdGNoLnBhdGNoOgotICAgICAgICA8cmVwbGFjZWFibGU+dHlwaWNhbC1wYXRjaDwvcmVwbGFjZWFibGU+CisgICAgICAgICMgYXBwbGllZCBieSBrZ2l0CisgICAgICAgICMgcGF0Y2gga2J1aWxkLWFkZC1tZXRhLWZpbGVzLXRvLXRoZS1pZ25vcmUtbGkucGF0Y2gKKworICAgICAgICBwYXRjaCBtb2Rwb3N0LW1hc2stdHJpdmlhbC13YXJuaW5ncy5wYXRjaAorICAgICAgICBwYXRjaCBtZW51Y29uZmlnLWNoZWNrLWx4ZGlhZ2xvZy5zaC1BbGxvdy1zcGVjaWZpY2F0aW9uLW9mLnBhdGNoCisKKyAgICAgcGF0Y2hlcy9idWlsZC9tb2Rwb3N0LW1hc2stdHJpdmlhbC13YXJuaW5ncy5wYXRjaDoKKyAgICAgICAgRnJvbSBiZDQ4OTMxYmMxNDJiZGQxMDQ2NjhmM2EwNjJhMWYyMjYwMGFhZTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorICAgICAgICBGcm9tOiBQYXVsIEdvcnRtYWtlciAmbHQ7cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbSZndDsKKyAgICAgICAgRGF0ZTogU3VuLCAyNSBKYW4gMjAwOSAxNzo1ODowOSAtMDUwMAorICAgICAgICBTdWJqZWN0OiBbUEFUQ0hdIG1vZHBvc3Q6IG1hc2sgdHJpdmlhbCB3YXJuaW5ncworCisgICAgICAgIE5ld2VyIEhPU1RDQyB3aWxsIGNvbXBsYWluIGFib3V0IHZhcmlvdXMgc3RkaW8gZmNucyBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAuCisgCSAgICAgICAgY2hhciAqZHVtcF93cml0ZSA9IE5VTEwsICpmaWxlc19zb3VyY2UgPSBOVUxMOworIAkgICAgICAgIGludCBvcHQ7CisgICAgICAgIC0tCisgICAgICAgIDIuMTAuMQorCisgICAgICAgIGdlbmVyYXRlZCBieSBjZ2l0IHYwLjEwLjIgYXQgMjAxNy0wOS0yOCAxNToyMzoyMyAoR01UKQogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgdGhlIHR5cGljYWwgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmaWxlIHVzaW5nIDxmaWxlbmFtZT5kaWZmIC1OdXJwPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4uCisgICAgICAgICAgICBUaGUgZGVzY3JpcHRpb24gZmlsZSBjYW4gaW5jbHVkZSBtdWx0aXBsZSBwYXRjaCBzdGF0ZW1lbnRzIHdoZXJlCisgICAgICAgICAgICBlYWNoIHN0YXRlbWVudCBoYW5kbGVzIGEgc2luZ2xlIHBhdGNoLgorICAgICAgICAgICAgSW4gdGhlIGV4YW1wbGUgPGZpbGVuYW1lPmJ1aWxkLnNjYzwvZmlsZW5hbWU+IGZpbGUsIGZpdmUgcGF0Y2gKKyAgICAgICAgICAgIHN0YXRlbWVudHMgZXhpc3QgZm9yIHRoZSBmaXZlIHBhdGNoZXMgaW4gdGhlIGRpcmVjdG9yeS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGRlc2NyaXB0aW9uIGZpbGUgY2FuIGluY2x1ZGUgbXVsdGlwbGUgcGF0Y2ggc3RhdGVtZW50cywKLSAgICAgICAgICAgIG9uZSBwZXIgcGF0Y2guCisgICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSBhIHR5cGljYWwgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IGZpbGUgdXNpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kaWZmIC1OdXJwPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZHMuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBwYXRjaGVzLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb25zLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0zOTEsMjYgKzQ1NiwyMyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRmVhdHVyZXMgYXJlIGNvbXBsZXgga2VybmVsIE1ldGFkYXRhIHR5cGVzIHRoYXQgY29uc2lzdAotICAgICAgICAgICAgb2YgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgKDxmaWxlbmFtZT5rY29uZjwvZmlsZW5hbWU+KSwgcGF0Y2hlcwotICAgICAgICAgICAgKDxmaWxlbmFtZT5wYXRjaDwvZmlsZW5hbWU+KSwgYW5kIHBvc3NpYmx5IG90aGVyIGZlYXR1cmUKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uIGZpbGVzICg8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+KS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgYSBmZWF0dXJlIGRlc2NyaXB0aW9uIGZpbGU6CisgICAgICAgICAgICBvZiBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgcGF0Y2hlcywgYW5kIHBvc3NpYmx5IG90aGVyIGZlYXR1cmUKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIGZpbGVzLgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBnZW5lcmljIGxpc3Rpbmc6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGZlYXR1cmVzL215ZmVhdHVyZS5zY2MKLSAgICAgICAgZGVmaW5lIEtGRUFUVVJFX0RFU0NSSVBUSU9OICJFbmFibGUgbXlmZWF0dXJlIgorICAgICBmZWF0dXJlcy88cmVwbGFjZWFibGU+bXlmZWF0dXJlPC9yZXBsYWNlYWJsZT4uc2NjCisgICAgICAgIGRlZmluZSBLRkVBVFVSRV9ERVNDUklQVElPTiAiRW5hYmxlIDxyZXBsYWNlYWJsZT5teWZlYXR1cmU8L3JlcGxhY2VhYmxlPiIKIAotICAgICAgICBwYXRjaCAwMDAxLW15ZmVhdHVyZS1jb3JlLnBhdGNoCi0gICAgICAgIHBhdGNoIDAwMDItbXlmZWF0dXJlLWludGVyZmFjZS5wYXRjaAorICAgICAgICBwYXRjaCAwMDAxLTxyZXBsYWNlYWJsZT5teWZlYXR1cmU8L3JlcGxhY2VhYmxlPi1jb3JlLnBhdGNoCisgICAgICAgIHBhdGNoIDAwMDItPHJlcGxhY2VhYmxlPm15ZmVhdHVyZTwvcmVwbGFjZWFibGU+LWludGVyZmFjZS5wYXRjaAogCi0gICAgICAgIGluY2x1ZGUgY2ZnL215ZmVhdHVyZV9kZXBlbmRlbmN5LnNjYwotICAgICAgICBrY29uZiBub24taGFyZHdhcmUgbXlmZWF0dXJlLmNmZworICAgICAgICBpbmNsdWRlIGNmZy88cmVwbGFjZWFibGU+bXlmZWF0dXJlPC9yZXBsYWNlYWJsZT5fZGVwZW5kZW5jeS5zY2MKKyAgICAgICAga2NvbmYgbm9uLWhhcmR3YXJlIDxyZXBsYWNlYWJsZT5teWZlYXR1cmU8L3JlcGxhY2VhYmxlPi5jZmcKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBzaG93cyBob3cgdGhlIDxmaWxlbmFtZT5wYXRjaDwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICAgPGZpbGVuYW1lPmtjb25mPC9maWxlbmFtZT4gY29tbWFuZHMgYXJlIHVzZWQgYXMgd2VsbCBhcwotICAgICAgICAgICAgaG93IGFuIGFkZGl0aW9uYWwgZmVhdHVyZSBkZXNjcmlwdGlvbiBmaWxlIGlzIGluY2x1ZGVkLgorICAgICAgICAgICAgaG93IGFuIGFkZGl0aW9uYWwgZmVhdHVyZSBkZXNjcmlwdGlvbiBmaWxlIGlzIGluY2x1ZGVkIHdpdGgKKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+aW5jbHVkZTwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTQzMCwyMSArNDkyLDQ3IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQSBrZXJuZWwgdHlwZSBkZWZpbmVzIGEgaGlnaC1sZXZlbCBrZXJuZWwgcG9saWN5IGJ5CiAgICAgICAgICAgICBhZ2dyZWdhdGluZyBub24taGFyZHdhcmUgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgd2l0aAotICAgICAgICAgICAgcGF0Y2hlcyB5b3Ugd2FudCB0byB1c2Ugd2hlbiBidWlsZGluZyBhIExpbnV4IGtlcm5lbHMgb2YgYQotICAgICAgICAgICAgc3BlY2lmaWMgdHlwZS4KKyAgICAgICAgICAgIHBhdGNoZXMgeW91IHdhbnQgdG8gdXNlIHdoZW4gYnVpbGRpbmcgYSBMaW51eCBrZXJuZWwgb2YgYQorICAgICAgICAgICAgc3BlY2lmaWMgdHlwZSAoZS5nLiBhIHJlYWwtdGltZSBrZXJuZWwpLgogICAgICAgICAgICAgU3ludGFjdGljYWxseSwga2VybmVsIHR5cGVzIGFyZSBubyBkaWZmZXJlbnQgdGhhbiBmZWF0dXJlcwogICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSAiPGxpbmsgbGlua2VuZD0nZmVhdHVyZXMnPkZlYXR1cmVzPC9saW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT4gdmFyaWFibGUgaW4gdGhlIGtlcm5lbAotICAgICAgICAgICAgcmVjaXBlIHNlbGVjdHMgdGhlIGtlcm5lbCB0eXBlLgotICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ndXNpbmcta2VybmVsLW1ldGFkYXRhLWluLWEtcmVjaXBlJz5Vc2luZyBLZXJuZWwgTWV0YWRhdGEgaW4gYSBSZWNpcGU8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX0tFUk5FTF9UWVBFJz48ZmlsZW5hbWU+TElOVVhfS0VSTkVMX1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUga2VybmVsIHJlY2lwZSBzZWxlY3RzIHRoZSBrZXJuZWwgdHlwZS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuMTIuYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAga2VybmVsIHJlY2lwZSBmb3VuZCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+LCBhCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3JlcXVpcmUtaW5jbHVzaW9uJz48ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGRpcmVjdGl2ZSBpbmNsdWRlcyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGZpbGUsIHdoaWNoIGhhcyB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCB0aGF0IGRlZmluZXMgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIGtlcm5lbCB0eXBlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSU5VWF9LRVJORUxfVFlQRSA/Pz0gInN0YW5kYXJkIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgdHJlZSBkZWZpbmVzIHRocmVlIGtlcm5lbCB0eXBlczogInN0YW5kYXJkIiwKLSAgICAgICAgICAgICJ0aW55IiwgYW5kICJwcmVlbXB0LXJ0IjoKKyAgICAgICAgICAgIEFub3RoZXIgZXhhbXBsZSB3b3VsZCBiZSB0aGUgcmVhbC10aW1lIGtlcm5lbCAoaS5lLgorICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLXJ0XzQuMTIuYmI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBUaGlzIGtlcm5lbCByZWNpcGUgZGlyZWN0bHkgc2V0cyB0aGUga2VybmVsIHR5cGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBrZXJuZWwgcmVjaXBlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ndXNpbmcta2VybmVsLW1ldGFkYXRhLWluLWEtcmVjaXBlJz5Vc2luZyBLZXJuZWwgTWV0YWRhdGEgaW4gYSBSZWNpcGU8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRocmVlIGtlcm5lbCB0eXBlcyAoInN0YW5kYXJkIiwgInRpbnkiLCBhbmQgInByZWVtcHQtcnQiKSBhcmUKKyAgICAgICAgICAgIHN1cHBvcnRlZCBmb3IgTGludXggWW9jdG8ga2VybmVsczoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPiJzdGFuZGFyZCI6CiAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGVzIHRoZSBnZW5lcmljIExpbnV4IGtlcm5lbCBwb2xpY3kgb2YgdGhlIFlvY3RvCkBAIC00NzEsMjkgKzU1OSw0MCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgInN0YW5kYXJkIiBrZXJuZWwgdHlwZSBpcyBkZWZpbmVkIGJ5Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+c3RhbmRhcmQuc2NjPC9maWxlbmFtZT46CisgICAgICAgICAgICBGb3IgYW55IGdpdmVuIGtlcm5lbCB0eXBlLCB0aGUgTWV0YWRhdGEgaXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gKGUuZy4gPGZpbGVuYW1lPnN0YW5kYXJkLnNjYzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIEhlcmUgaXMgYSBwYXJ0aWFsIGxpc3RpbmcgZm9yIHRoZSA8ZmlsZW5hbWU+c3RhbmRhcmQuc2NjPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+a3R5cGVzL3N0YW5kYXJkPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBJbmNsdWRlIHRoaXMga2VybmVsIHR5cGUgZnJhZ21lbnQgdG8gZ2V0IHRoZSBzdGFuZGFyZCBmZWF0dXJlcyBhbmQKICAgICAgIyBjb25maWd1cmF0aW9uIHZhbHVlcy4KIAotICAgICAjIEluY2x1ZGUgYWxsIHN0YW5kYXJkIGZlYXR1cmVzCi0gICAgIGluY2x1ZGUgc3RhbmRhcmQtbm9jZmcuc2NjCisgICAgICMgTm90ZTogaWYgb25seSB0aGUgZmVhdHVyZXMgYXJlIGRlc2lyZWQsIGJ1dCBub3QgdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgIyAgICAgICB0aGVuIHRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGFzOgorICAgICAjICAgICAgICAgICAgIGluY2x1ZGUga3R5cGVzL3N0YW5kYXJkL3N0YW5kYXJkLnNjYyBub2NmZworICAgICAjICAgICAgIGlmIG5vIGNoYWluZWQgY29uZmlndXJhdGlvbiBpcyBkZXNpcmVkLCBpbmNsdWRlIGl0IGFzOgorICAgICAjICAgICAgICAgICAgIGluY2x1ZGUga3R5cGVzL3N0YW5kYXJkL3N0YW5kYXJkLnNjYyBub2NmZyBpbmhlcml0CisKKworCisgICAgIGluY2x1ZGUga3R5cGVzL2Jhc2UvYmFzZS5zY2MKKyAgICAgYnJhbmNoIHN0YW5kYXJkCiAKICAgICAga2NvbmYgbm9uLWhhcmR3YXJlIHN0YW5kYXJkLmNmZwogCi0gICAgICMgaW5kaXZpZHVhbCBjZmcgYmxvY2sgc2VjdGlvbgotICAgICBpbmNsdWRlIGNmZy9mcy9kZXZ0bXBmcy5zY2MKLSAgICAgaW5jbHVkZSBjZmcvZnMvZGVidWdmcy5zY2MKLSAgICAgaW5jbHVkZSBjZmcvZnMvYnRyZnMuc2NjCi0gICAgIGluY2x1ZGUgY2ZnL2ZzL2V4dDIuc2NjCi0gICAgIGluY2x1ZGUgY2ZnL2ZzL2V4dDMuc2NjCi0gICAgIGluY2x1ZGUgY2ZnL2ZzL2V4dDQuc2NjCisgICAgIGluY2x1ZGUgZmVhdHVyZXMva2dkYi9rZ2RiLnNjYworICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgLgogCi0gICAgIGluY2x1ZGUgY2ZnL25ldC9pcHY2LnNjYwotICAgICBpbmNsdWRlIGNmZy9uZXQvaXBfbmYuc2NjCiAgICAgIGluY2x1ZGUgY2ZnL25ldC9pcDZfbmYuc2NjCiAgICAgIGluY2x1ZGUgY2ZnL25ldC9icmlkZ2Uuc2NjCisKKyAgICAgaW5jbHVkZSBjZmcvc3lzdGVtZC5zY2MKKworICAgICBpbmNsdWRlIGZlYXR1cmVzL3Jma2lsbC9yZmtpbGwuc2NjCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KIApAQCAtNTM5LDkgKzYzOCw5IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIEJTUCBkZXNjcmlwdGlvbiBzdHJ1Y3R1cmFsIG92ZXJ2aWV3IGFsb25nCi0gICAgICAgICAgICB3aXRoIGFnZ3JlZ2F0aW9uIGNvbmNlcHRzIGFzIHdlbGwgYXMgYSBkZXRhaWxlZCBleGFtcGxlIHVzaW5nCi0gICAgICAgICAgICBhIEJTUCBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgKGkuZS4gTWlubm93IEJvYXJkKS4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBvdmVydmlld3MgdGhlIEJTUCBkZXNjcmlwdGlvbiBzdHJ1Y3R1cmUsIHRoZQorICAgICAgICAgICAgYWdncmVnYXRpb24gY29uY2VwdHMsIGFuZCBwcmVzZW50cyBhIGRldGFpbGVkIGV4YW1wbGUgdXNpbmcKKyAgICAgICAgICAgIGEgQlNQIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCAoaS5lLiBCZWFnbGVCb25lIEJvYXJkKS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxzZWN0aW9uIGlkPSdic3AtZGVzY3JpcHRpb24tZmlsZS1vdmVydmlldyc+CkBAIC01NDksNyArNjQ4LDcgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgdG9wLWxldmVsIEJTUAotICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZmlsZXMgZm9yIHRoZSBCZWFnbGVCb25lIGJvYXJkLgogICAgICAgICAgICAgICAgIFRvcC1sZXZlbCBCU1AgZGVzY3JpcHRpb25zIGZpbGVzIGVtcGxveSBib3RoIGEgc3RydWN0dXJlCiAgICAgICAgICAgICAgICAgYW5kIG5hbWluZyBjb252ZW50aW9uIGZvciBjb25zaXN0ZW5jeS4KICAgICAgICAgICAgICAgICBUaGUgbmFtaW5nIGNvbnZlbnRpb24gZm9yIHRoZSBmaWxlIGlzIGFzIGZvbGxvd3M6CkBAIC01NTcsMzEgKzY1NiwzMCBAQAogICAgICA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi5zY2MKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBleGFtcGxlIHRvcC1sZXZlbCBCU1AgZmlsZW5hbWVzIGZvciB0aGUKLSAgICAgICAgICAgICAgICBNaW5ub3cgQm9hcmQgQlNQLCB3aGljaCBpcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgQmVhZ2xlQm9uZSBCb2FyZCBCU1AsIHdoaWNoIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1pbm5vdy1zdGFuZGFyZC5zY2MKLSAgICAgbWlubm93LXByZWVtcHQtcnQuc2NjCi0gICAgIG1pbm5vdy10aW55LnNjYworICAgICBiZWFnbGVib25lLXN0YW5kYXJkLnNjYworICAgICBiZWFnbGVib25lLXByZWVtcHQtcnQuc2NjCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIEVhY2ggZmlsZSB1c2VzIHRoZSBCU1AgbmFtZSBmb2xsb3dlZCBieSB0aGUga2VybmVsIHR5cGUuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIGlzIHNpbXBsZSBCU1AgZGVzY3JpcHRpb24gZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUKLSAgICAgICAgICAgICAgICBmb3JtCi0gICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPm15YnNwPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LXN0YW5kYXJkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhbmQgc3VwcG9ydHMgdGhlIDxyZXBsYWNlYWJsZT5teWJzcDwvcmVwbGFjZWFibGU+IG1hY2hpbmUgdXNpbmcKLSAgICAgICAgICAgICAgICBhIHN0YW5kYXJkIGtlcm5lbDoKKyAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZSA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS1zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkZWZpbmUgS01BQ0hJTkUgPHJlcGxhY2VhYmxlPm15YnNwPC9yZXBsYWNlYWJsZT4KKyAgICAgZGVmaW5lIEtNQUNISU5FIGJlYWdsZWJvbmUKICAgICAgZGVmaW5lIEtUWVBFIHN0YW5kYXJkCi0gICAgIGRlZmluZSBLQVJDSCBpMzg2CisgICAgIGRlZmluZSBLQVJDSCBhcm0KIAotICAgICBpbmNsdWRlIGt0eXBlcy9zdGFuZGFyZAorICAgICBpbmNsdWRlIGt0eXBlcy9zdGFuZGFyZC9zdGFuZGFyZC5zY2MKKyAgICAgYnJhbmNoIGJlYWdsZWJvbmUKIAotICAgICBpbmNsdWRlIDxyZXBsYWNlYWJsZT5teWJzcDwvcmVwbGFjZWFibGU+LnNjYworICAgICBpbmNsdWRlIGJlYWdsZWJvbmUuc2NjCiAKLSAgICAga2NvbmYgaGFyZHdhcmUgPHJlcGxhY2VhYmxlPm15YnNwPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmV4dHJhPC9yZXBsYWNlYWJsZT4uY2ZnCisgICAgICMgZGVmYXVsdCBwb2xpY3kgZm9yIHN0YW5kYXJkIGtlcm5lbHMKKyAgICAgaW5jbHVkZSBmZWF0dXJlcy9sYXRlbmN5dG9wL2xhdGVuY3l0b3Auc2NjCisgICAgIGluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgRXZlcnkgdG9wLWxldmVsIEJTUCBkZXNjcmlwdGlvbiBmaWxlIHNob3VsZCBkZWZpbmUgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtNQUNISU5FJz48ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LApAQCAtNTkxLDIzICs2ODksMjAgQEAKICAgICAgICAgICAgICAgICBUaGVzZSB2YXJpYWJsZXMgYWxsb3cgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gaWRlbnRpZnkKICAgICAgICAgICAgICAgICB0aGUgZGVzY3JpcHRpb24gYXMgbWVldGluZyB0aGUgY3JpdGVyaWEgc2V0IGJ5IHRoZSByZWNpcGUgYmVpbmcKICAgICAgICAgICAgICAgICBidWlsdC4KLSAgICAgICAgICAgICAgICBUaGlzIHNpbXBsZSBleGFtcGxlIHN1cHBvcnRzIHRoZSAibXlic3AiIG1hY2hpbmUgZm9yIHRoZSAic3RhbmRhcmQiCi0gICAgICAgICAgICAgICAga2VybmVsIGFuZCB0aGUgImkzODYiIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3VwcG9ydHMgdGhlICJiZWFnbGVib25lIiBtYWNoaW5lIGZvciB0aGUKKyAgICAgICAgICAgICAgICAic3RhbmRhcmQiIGtlcm5lbCBhbmQgdGhlICJhcm0iIGFyY2hpdGVjdHVyZS4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgQmUgYXdhcmUgdGhhdCBhIGhhcmQgbGluayBiZXR3ZWVuIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LVFlQRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFuZCBhIGtlcm5lbCB0eXBlIGRlc2NyaXB0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSBkb2VzIG5vdCBleGlzdC4KLSAgICAgICAgICAgICAgICBUaHVzLCBpZiB5b3UgZG8gbm90IGhhdmUga2VybmVsIHR5cGVzIGRlZmluZWQgaW4geW91ciBrZXJuZWwKLSAgICAgICAgICAgICAgICBNZXRhZGF0YSwgeW91IG9ubHkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUga2VybmVsIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT4gdmFyaWFibGUgYW5kIGEga2VybmVsIHR5cGUKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBmaWxlIGRvZXMgbm90IGV4aXN0LgorICAgICAgICAgICAgICAgIFRodXMsIGlmIHlvdSBkbyBub3QgaGF2ZSB0aGUga2VybmVsIHR5cGUgZGVmaW5lZCBpbiB5b3VyIGtlcm5lbAorICAgICAgICAgICAgICAgIE1ldGFkYXRhIGFzIGl0IGlzIGhlcmUsIHlvdSBvbmx5IG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX0tFUk5FTF9UWVBFJz48ZmlsZW5hbWU+TElOVVhfS0VSTkVMX1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRoZSA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICBCU1AgZGVzY3JpcHRpb24gZmlsZSBtYXRjaC4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRnV0dXJlIHZlcnNpb25zIG9mIHRoZSB0b29saW5nIG1ha2UgdGhlIHNwZWNpZmljYXRpb24gb2YKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT4gaW4gdGhlIEJTUCBvcHRpb25hbC4KLSAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIGtlcm5lbCByZWNpcGUgYW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LVFlQRTwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHRoZSBCU1AgZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICBmaWxlIG1hdGNoLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTYxNiwxMyArNzExLDEyIEBACiAgICAgICAgICAgICAgICAgInN0YW5kYXJkIi4KICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgdGhpcyBpcyBkb25lIHVzaW5nIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBpbmNsdWRlIGt0eXBlcy9zdGFuZGFyZAorICAgICBpbmNsdWRlIGt0eXBlcy9zdGFuZGFyZC9zdGFuZGFyZC5zY2MKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIDxmaWxlbmFtZT5rdHlwZXMvc3RhbmRhcmQuc2NjPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmcmFnbWVudHMsIHBhdGNoZXMsIGFuZAotICAgICAgICAgICAgICAgIGZlYXR1cmVzIHRoYXQgbWFrZSB1cCB5b3VyIHN0YW5kYXJkIGtlcm5lbCBwb2xpY3kuCi0gICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0na2VybmVsLXR5cGVzJz5LZXJuZWwgVHlwZXM8L2xpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGFnZ3JlZ2F0ZXMgYWxsIHRoZSBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgcGF0Y2hlcywKKyAgICAgICAgICAgICAgICBhbmQgZmVhdHVyZXMgdGhhdCBtYWtlIHVwIHlvdXIgc3RhbmRhcmQga2VybmVsIHBvbGljeS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdrZXJuZWwtdHlwZXMnPktlcm5lbCBUeXBlczwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC02MzEsMTAgKzcyNSwxNCBAQAogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgaW5jbHVkZSA8cmVwbGFjZWFibGU+bXlic3A8L3JlcGxhY2VhYmxlPi5zY2MKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhhdCBpbiB0aGUgQmVhZ2xlQm9uZSBleGFtcGxlIHdpdGggdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGluY2x1ZGUgYmVhZ2xlYm9uZS5zY2MKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBicmVhayBhIGNvbXBsZXRlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGludG8gdGhlIHZhcmlvdXMKICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZW5lcmF0aW5nLWNvbmZpZ3VyYXRpb24tZmlsZXMnPkdlbmVyYXRpbmcgQ29uZmlndXJhdGlvbiBGaWxlczwvbGluaz4iCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC9saW5rPiIKICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgPC9wYXJhPgogCkBAIC02NDUsNiArNzQzLDIzIEBACiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBrY29uZiBoYXJkd2FyZSA8cmVwbGFjZWFibGU+bXlic3A8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+ZXh0cmE8L3JlcGxhY2VhYmxlPi5jZmcKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIEJlYWdsZUJvbmUgZXhhbXBsZSBkb2VzIG5vdCBpbmNsdWRlIHRoZXNlIHR5cGVzIG9mCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIE1hbHRhIDMyLWJpdCBib2FyZCBkb2VzICgibXRpLW1hbHRhMzIiKS4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSA8ZmlsZW5hbWU+bXRpLW1hbHRhMzItbGUtc3RhbmRhcmQuc2NjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZGVmaW5lIEtNQUNISU5FIG10aS1tYWx0YTMyLWxlCisgICAgIGRlZmluZSBLTUFDSElORSBxZW11bWlwc2VsCisgICAgIGRlZmluZSBLVFlQRSBzdGFuZGFyZAorICAgICBkZWZpbmUgS0FSQ0ggbWlwcworCisgICAgIGluY2x1ZGUga3R5cGVzL3N0YW5kYXJkL3N0YW5kYXJkLnNjYworICAgICBicmFuY2ggbXRpLW1hbHRhMzIKKworICAgICBpbmNsdWRlIG10aS1tYWx0YTMyLnNjYworICAgICBrY29uZiBoYXJkd2FyZSBtdGktbWFsdGEzMi1sZS5jZmcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtNjU1LDE0ICs3NzAsMTUgQEAKICAgICAgICAgICAgICAgICBNYW55IHJlYWwtd29ybGQgZXhhbXBsZXMgYXJlIG1vcmUgY29tcGxleC4KICAgICAgICAgICAgICAgICBMaWtlIGFueSBvdGhlciA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGUsIEJTUAogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9ucyBjYW4gYWdncmVnYXRlIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBNaW5ub3cgQlNQIGRlZmluaXRpb24gZnJvbSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC40PC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvbWlubm93PC9maWxlbmFtZT4pOgorICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBNaW5ub3cgQlNQIGRlZmluaXRpb24gZ2l2ZW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuNDwvZmlsZW5hbWU+IGJyYW5jaCBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gKGkuZS4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlL2JzcC9taW5ub3cvbWlubm93LnNjYzwvZmlsZW5hbWU+KToKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggdGhlIE1pbm5vdyBCb2FyZCBCU1AgaXMgdW51c2VkLCB0aGUgTWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICAgcmVtYWlucyBhbmQgaXMgYmVpbmcgdXNlZCBoZXJlIGp1c3QgYXMgYW4gZXhhbXBsZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtaW5ub3cuc2NjOgogICAgICAgICAgaW5jbHVkZSBjZmcveDg2LnNjYwogICAgICAgICAgaW5jbHVkZSBmZWF0dXJlcy9lZzIwdC9lZzIwdC5zY2MKICAgICAgICAgIGluY2x1ZGUgY2ZnL2RtYWVuZ2luZS5zY2MKQEAgLTY5OCw5ICs4MTQsOCBAQAogICAgICAgICAgICAgICAgICJtaW5ub3ciIGRlc2NyaXB0aW9uIGZpbGVzIGZvciB0aGUgc3VwcG9ydGVkIGtlcm5lbCB0eXBlcwogICAgICAgICAgICAgICAgIChpLmUuICJzdGFuZGFyZCIsICJwcmVlbXB0LXJ0IiwgYW5kICJ0aW55IikuCiAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlICJtaW5ub3ciIGRlc2NyaXB0aW9uIGZvciB0aGUgInN0YW5kYXJkIiBrZXJuZWwKLSAgICAgICAgICAgICAgICB0eXBlOgorICAgICAgICAgICAgICAgIHR5cGUgKGkuZS4gPGZpbGVuYW1lPm1pbm5vdy1zdGFuZGFyZC5zY2M8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1pbm5vdy1zdGFuZGFyZC5zY2M6CiAgICAgICAgICBkZWZpbmUgS01BQ0hJTkUgbWlubm93CiAgICAgICAgICBkZWZpbmUgS1RZUEUgc3RhbmRhcmQKICAgICAgICAgIGRlZmluZSBLQVJDSCBpMzg2CkBAIC03MzUsOSArODUwLDggQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgTm93IGNvbnNpZGVyIHRoZSAibWlubm93IiBkZXNjcmlwdGlvbiBmb3IgdGhlICJ0aW55IiBrZXJuZWwKLSAgICAgICAgICAgICAgICB0eXBlOgorICAgICAgICAgICAgICAgIHR5cGUgKGkuZS4gPGZpbGVuYW1lPm1pbm5vdy10aW55LnNjYzwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWlubm93LXRpbnkuc2NjOgogICAgICAgICBkZWZpbmUgS01BQ0hJTkUgbWlubm93CiAgICAgICAgIGRlZmluZSBLVFlQRSB0aW55CiAgICAgICAgIGRlZmluZSBLQVJDSCBpMzg2CkBAIC03NTcsMTAgKzg3MSwxMiBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBOb3RpY2UgYWdhaW4gdGhlIHRocmVlIGNyaXRpY2FsIHZhcmlhYmxlczoKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5LQVJDSDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIE9mIHRoZXNlIHZhcmlhYmxlcywgb25seSB0aGUgPGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT4gaGFzIGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgSXQgaXMgbm93IHNldCB0byAidGlueSIuCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtNQUNISU5FJz48ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LVFlQRSc+PGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0FSQ0gnPjxmaWxlbmFtZT5LQVJDSDwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgT2YgdGhlc2UgdmFyaWFibGVzLCBvbmx5IDxmaWxlbmFtZT5LVFlQRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgaGFzIGNoYW5nZWQgdG8gc3BlY2lmeSB0aGUgInRpbnkiIGtlcm5lbCB0eXBlLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgpAQCAtODY3LDE1ICs5ODMsMTUgQEAKICAgICAgICAgICAgIFdoZW4gc3RvcmVkIG91dHNpZGUgb2YgdGhlIHJlY2lwZS1zcGFjZSwgdGhlIGtlcm5lbCBNZXRhZGF0YQogICAgICAgICAgICAgZmlsZXMgcmVzaWRlIGluIGEgc2VwYXJhdGUgcmVwb3NpdG9yeS4KICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFkZHMgdGhlIE1ldGFkYXRhIHRvIHRoZSBidWlsZCBhcwotICAgICAgICAgICAgYSAia3R5cGU9bWV0YSIgcmVwb3NpdG9yeSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgYSAidHlwZT1rbWV0YSIgcmVwb3NpdG9yeSB0aHJvdWdoIHRoZQogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgdmFyaWFibGUuCiAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KLSAgICAgICAgICAgIHN0YXRlbWVudCBmcm9tIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC40LmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHN0YXRlbWVudCBmcm9tIHRoZSA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMi5iYjwvZmlsZW5hbWU+CiAgICAgICAgICAgICBrZXJuZWwgcmVjaXBlOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKyAgICAgU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKKyAgICAgICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0tNRVRBfTwvZmlsZW5hbWU+LCBpbiB0aGlzIGNvbnRleHQsIGlzIHNpbXBseSB1c2VkIHRvCiAgICAgICAgICAgICBuYW1lIHRoZSBkaXJlY3RvcnkgaW50byB3aGljaCB0aGUgR2l0IGZldGNoZXIgcGxhY2VzIHRoZSBNZXRhZGF0YS4KQEAgLTg5NCw0NiArMTAxMCw2IEBACiAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHBoYXNlLgogICAgICAgICA8L3BhcmE+CiAKLTwhLS0KLQotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgYSB0cml2aWFsIHRyZWUgb2YgTWV0YWRhdGEKLSAgICAgICAgICAgIGlzIHN0b3JlZCBpbiBhIGN1c3RvbSBMaW51eCBrZXJuZWwgR2l0IHJlcG9zaXRvcnk6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEvCi0gICAgIGAmZGFzaDsmZGFzaDsgY2ZnCi0gICAgICAgICBgJmRhc2g7JmRhc2g7IGtlcm5lbC1jYWNoZQotICAgICAgICAgICAgIHwmZGFzaDsmZGFzaDsgYnNwLXN0YW5kYXJkLnNjYwotICAgICAgICAgICAgIHwmZGFzaDsmZGFzaDsgYnNwLmNmZwotICAgICAgICAgICAgIGAmZGFzaDsmZGFzaDsgc3RhbmRhcmQuY2ZnCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIHVzZSBhIGJyYW5jaCBkaWZmZXJlbnQgZnJvbSB3aGVyZSB0aGUgc291cmNlcyByZXNpZGUsCi0gICAgICAgICAgICBzcGVjaWZ5IHRoZSBicmFuY2ggaW4gdGhlIDxmaWxlbmFtZT5LTUVUQTwvZmlsZW5hbWU+IHZhcmlhYmxlCi0gICAgICAgICAgICBpbiB5b3VyIExpbnV4IGtlcm5lbCByZWNpcGUuCi0gICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEtNRVRBID0gIm1ldGEiCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUbyB1c2UgdGhlIHNhbWUgYnJhbmNoIGFzIHRoZSBzb3VyY2VzLCBzZXQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5LTUVUQTwvZmlsZW5hbWU+IHRvIGFuIGVtcHR5IHN0cmluZzoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS01FVEEgPSAiIgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgSWYgeW91IGFyZSB3b3JraW5nIHdpdGggeW91ciBvd24gc291cmNlcyBhbmQgd2FudCB0byBjcmVhdGUgYW4KLSAgICAgICAgICAgIG9ycGhhbiA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGJyYW5jaCwgdXNlIHRoZXNlIGNvbW1hbmRzCi0gICAgICAgICAgICBmcm9tIHdpdGhpbiB5b3VyIExpbnV4IGtlcm5lbCBHaXQgcmVwb3NpdG9yeToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2hlY2tvdXQgJmRhc2g7JmRhc2g7b3JwaGFuIG1ldGEKLSAgICAgJCBnaXQgcm0gLXJmIC4KLSAgICAgJCBnaXQgY29tbWl0ICZkYXNoOyZkYXNoO2FsbG93LWVtcHR5IC1tICJDcmVhdGUgb3JwaGFuIG1ldGEgYnJhbmNoIgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0tLT4KLQogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIElmIHlvdSBtb2RpZnkgdGhlIE1ldGFkYXRhLCB5b3UgbXVzdCBub3QgZm9yZ2V0IHRvIHVwZGF0ZSB0aGUKICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+CkBAIC0xMDU3LDEwICsxMTMzLDkgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGZpbmQKLSAgICAgICAgICAgIHlvdXJzZWxmIHdpdGggbnVtZXJvdXMgYnJhbmNoZXMsIHlvdSBtaWdodCBjb25zaWRlciB1c2luZyBhCi0gICAgICAgICAgICBoaWVyYXJjaGljYWwgYnJhbmNoaW5nIHN5c3RlbSBzaW1pbGFyIHRvIHdoYXQgdGhlIGxpbnV4LXlvY3RvIExpbnV4Ci0gICAgICAgICAgICBrZXJuZWwgcmVwb3NpdG9yaWVzIHVzZToKKyAgICAgICAgICAgIElmIHlvdSBmaW5kIHlvdXJzZWxmIHdpdGggbnVtZXJvdXMgYnJhbmNoZXMsIHlvdSBtaWdodCBjb25zaWRlcgorICAgICAgICAgICAgdXNpbmcgYSBoaWVyYXJjaGljYWwgYnJhbmNoaW5nIHN5c3RlbSBzaW1pbGFyIHRvIHdoYXQgdGhlCisgICAgICAgICAgICBZb2N0byBMaW51eCBLZXJuZWwgR2l0IHJlcG9zaXRvcmllcyB1c2U6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIDxyZXBsYWNlYWJsZT5jb21tb248L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xMDkwLDcgKzExNjUsOCBAQAogICAgICAgICAgICAgVGhlICJzdGFuZGFyZCIgYW5kICJzbWFsbCIgYnJhbmNoZXMgYWRkIHNvdXJjZXMgc3BlY2lmaWMgdG8gdGhvc2UKICAgICAgICAgICAgIGtlcm5lbCB0eXBlcyB0aGF0IGZvciB3aGF0ZXZlciByZWFzb24gYXJlIG5vdCBhcHByb3ByaWF0ZSBmb3IgdGhlCiAgICAgICAgICAgICBvdGhlciBicmFuY2hlcy4KLSAgICAgICAgICAgIDxub3RlPlRoZSAiYmFzZSIgYnJhbmNoZXMgYXJlIGFuIGFydGlmYWN0IG9mIHRoZSB3YXkgR2l0IG1hbmFnZXMKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSAiYmFzZSIgYnJhbmNoZXMgYXJlIGFuIGFydGlmYWN0IG9mIHRoZSB3YXkgR2l0IG1hbmFnZXMKICAgICAgICAgICAgICAgICBpdHMgZGF0YSBpbnRlcm5hbGx5IG9uIHRoZSBmaWxlc3lzdGVtOiBHaXQgd2lsbCBub3QgYWxsb3cgeW91CiAgICAgICAgICAgICAgICAgdG8gdXNlIDxmaWxlbmFtZT5teWRpci9zdGFuZGFyZDwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5teWRpci9zdGFuZGFyZC9tYWNoaW5lX2E8L2ZpbGVuYW1lPiBiZWNhdXNlIGl0CkBAIC0xMTM3LDI3ICsxMjEzLDM0IEBACiAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIGJyaWVmIHJlZmVyZW5jZSBmb3IgdGhlIGNvbW1hbmRzIHlvdSBjYW4gdXNlCiAgICAgICAgIHdpdGhpbiBhbiBTQ0MgZGVzY3JpcHRpb24gZmlsZSAoPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPik6CiAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJyYW5jaCBbcmVmXTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5icmFuY2ggW3JlZl08L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgbmV3IGJyYW5jaCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBicmFuY2gKICAgICAgICAgICAgICAgICAodHlwaWNhbGx5IDxmaWxlbmFtZT4ke0tUWVBFfTwvZmlsZW5hbWU+KSB1c2luZwogICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50bHkgY2hlY2tlZC1vdXQgYnJhbmNoLCBvciAicmVmIiBpZiBzcGVjaWZpZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmRlZmluZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZpbmU8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICBEZWZpbmVzIHZhcmlhYmxlcywgc3VjaCBhcyA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPktBUkNIPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5LRkVBVFVSRV9ERVNDUklQVElPTjwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbmNsdWRlIFNDQ19GSUxFPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluY2x1ZGUgU0NDX0ZJTEU8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICBJbmNsdWRlcyBhbiBTQ0MgZmlsZSBpbiB0aGUgY3VycmVudCBmaWxlLgogICAgICAgICAgICAgICAgIFRoZSBmaWxlIGlzIHBhcnNlZCBhcyBpZiB5b3UgaGFkIGluc2VydGVkIGl0IGlubGluZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+a2NvbmYgW2hhcmR3YXJlfG5vbi1oYXJkd2FyZV0gQ0ZHX0ZJTEU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2NvbmYgW2hhcmR3YXJlfG5vbi1oYXJkd2FyZV0gQ0ZHX0ZJTEU8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICBRdWV1ZXMgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZvciBtZXJnaW5nIGludG8gdGhlIGZpbmFsCiAgICAgICAgICAgICAgICAgTGludXggPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5naXQgbWVyZ2UgR0lUX0JSQU5DSDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgbWVyZ2UgR0lUX0JSQU5DSDwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIE1lcmdlcyB0aGUgZmVhdHVyZSBicmFuY2ggaW50byB0aGUgY3VycmVudCBicmFuY2guCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnBhdGNoIFBBVENIX0ZJTEU8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBBcHBsaWVzIHRoZSBwYXRjaCB0byB0aGUgY3VycmVudCBHaXQgYnJhbmNoLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYXRjaCBQQVRDSF9GSUxFPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgQXBwbGllcyB0aGUgcGF0Y2ggdG8gdGhlIGN1cnJlbnQgR2l0IGJyYW5jaC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbAppbmRleCBhYTQwZmM4Li5iOGZkODcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbApAQCAtMywyMCArMyw0NjYgQEAKIFs8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KIAogPGNoYXB0ZXIgaWQ9J2tlcm5lbC1kZXYtY29tbW9uJz4KLQogPHRpdGxlPkNvbW1vbiBUYXNrczwvdGl0bGU+CiAKLTxwYXJhPgotICAgIFRoaXMgY2hhcHRlciBwcmVzZW50cyBzZXZlcmFsIGNvbW1vbiB0YXNrcyB5b3UgcGVyZm9ybSB3aGVuIHlvdQotICAgIHdvcmsgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwuCi0gICAgVGhlc2UgdGFza3MgaW5jbHVkZSBwcmVwYXJpbmcgYSBsYXllciwgbW9kaWZ5aW5nIGFuIGV4aXN0aW5nIHJlY2lwZSwKLSAgICBpdGVyYXRpdmUgZGV2ZWxvcG1lbnQsIHdvcmtpbmcgd2l0aCB5b3VyIG93biBzb3VyY2VzLCBhbmQgaW5jb3Jwb3JhdGluZwotICAgIG91dC1vZi10cmVlIG1vZHVsZXMuCi0gICAgPG5vdGU+Ci0gICAgICAgIFRoZSBleGFtcGxlcyBwcmVzZW50ZWQgaW4gdGhpcyBjaGFwdGVyIHdvcmsgd2l0aCB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAxLjIuMiBSZWxlYXNlIGFuZCBmb3J3YXJkLgotICAgIDwvbm90ZT4KLTwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjaGFwdGVyIHByZXNlbnRzIHNldmVyYWwgY29tbW9uIHRhc2tzIHlvdSBwZXJmb3JtIHdoZW4geW91CisgICAgICAgIHdvcmsgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwuCisgICAgICAgIFRoZXNlIHRhc2tzIGluY2x1ZGUgcHJlcGFyaW5nIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZm9yCisgICAgICAgIGtlcm5lbCBkZXZlbG9wbWVudCwgcHJlcGFyaW5nIGEgbGF5ZXIsIG1vZGlmeWluZyBhbiBleGlzdGluZyByZWNpcGUsCisgICAgICAgIHBhdGNoaW5nIHRoZSBrZXJuZWwsIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwsIGl0ZXJhdGl2ZSBkZXZlbG9wbWVudCwKKyAgICAgICAgd29ya2luZyB3aXRoIHlvdXIgb3duIHNvdXJjZXMsIGFuZCBpbmNvcnBvcmF0aW5nIG91dC1vZi10cmVlIG1vZHVsZXMuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVGhlIGV4YW1wbGVzIHByZXNlbnRlZCBpbiB0aGlzIGNoYXB0ZXIgd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAyLjQgUmVsZWFzZSBhbmQgZm9yd2FyZC4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdwcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QtdG8td29yay1vbi10aGUta2VybmVsJz4KKyAgICAgICAgPHRpdGxlPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdCB0byBXb3JrIG9uIHRoZSBLZXJuZWw8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQmVmb3JlIHlvdSBjYW4gZG8gYW55IGtlcm5lbCBkZXZlbG9wbWVudCwgeW91IG5lZWQgdG8gYmUKKyAgICAgICAgICAgIHN1cmUgeW91ciBidWlsZCBob3N0IGlzIHNldCB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCBzZXQgdXAsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgUGFydCBvZiBwcmVwYXJpbmcgdGhlIHN5c3RlbSBpcyBjcmVhdGluZyBhIGxvY2FsIEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeSBvZiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgKDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIG9uIHlvdXIgc3lzdGVtLgorICAgICAgICAgICAgRm9sbG93IHRoZSBzdGVwcyBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjbG9uaW5nLXRoZS1wb2t5LXJlcG9zaXRvcnknPkNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gUmVwb3NpdG9yeTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgdG8gc2V0IHVwIHlvdXIKKyAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBjaGVjayBvdXQgdGhlIGFwcHJvcHJpYXRlIGRldmVsb3BtZW50IGJyYW5jaCBvcgorICAgICAgICAgICAgICAgIHlvdSBjcmVhdGUgeW91ciBsb2NhbCBicmFuY2ggYnkgY2hlY2tpbmcgb3V0IGEgc3BlY2lmaWMgdGFnCisgICAgICAgICAgICAgICAgdG8gZ2V0IHRoZSBkZXNpcmVkIHZlcnNpb24gb2YgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IEJyYW5jaCBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IFRhZyBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbnMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEtlcm5lbCBkZXZlbG9wbWVudCBpcyBiZXN0IGFjY29tcGxpc2hlZCB1c2luZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdXNpbmctZGV2dG9vbC1pbi15b3VyLXNkay13b3JrZmxvdyc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBhbmQgbm90IHRocm91Z2ggdHJhZGl0aW9uYWwga2VybmVsIHdvcmtmbG93IG1ldGhvZHMuCisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBmb3IgYm90aAorICAgICAgICAgICAgc2NlbmFyaW9zLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dldHRpbmctcmVhZHktdG8tZGV2ZWxvcC11c2luZy1kZXZ0b29sJz4KKyAgICAgICAgICAgIDx0aXRsZT5HZXR0aW5nIFJlYWR5IHRvIERldmVsb3AgVXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBwcmVwYXJlIHRvIHVwZGF0ZSB0aGUga2VybmVsIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBDb21wbGV0aW5nIHRoaXMgcHJvY2VkdXJlIGxlYXZlcyB5b3Ugd2l0aCBhIGNsZWFuIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgICAgIGFuZCByZWFkeSB0byBtYWtlIG1vZGlmaWNhdGlvbnMgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbjoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCaXRCYWtlIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCZWZvcmUgYnVpbGRpbmcgYW4gZXh0ZW5zaWJsZSBTREssIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplIHRoZSBCaXRCYWtlIGJ1aWxkIGVudmlyb25tZW50IGJ5IHNvdXJjaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+PC91bGluaz4pOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reQorICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmRzIGFzc3VtZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSBoYXZlIGJlZW4gY2xvbmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgR2l0IGFuZCB0aGUgbG9jYWwgcmVwb3NpdG9yeSBpcyBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb2t5Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyZSBZb3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiAzMi1iaXQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBhcmUgbm90LCB5b3UgbmVlZCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFwcHJvcHJpYXRlbHkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPn4vcG9reS9idWlsZDwvZmlsZW5hbWU+IGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUpLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWxzbywgc2luY2UgeW91IGFyZSBwcmVwYXJpbmcgdG8gd29yayBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSwgeW91IG5lZWQgdG8gc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTJz48ZmlsZW5hbWU+TUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBpbmNsdWRlIGtlcm5lbCBtb2R1bGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBleGFtcGxlIHVzZXMgdGhlIGRlZmF1bHQgInFlbXV4ODYiIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYnV0IG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBhZGQgdGhlICJrZXJuZWwtbW9kdWxlcyI6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJrZXJuZWwtbW9kdWxlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgTGF5ZXIgZm9yIFBhdGNoZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIGxheWVyIHRvIGhvbGQgcGF0Y2hlcyBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcgorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICBBZGQgeW91ciBuZXcgbGF5ZXIgd2l0aCAnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcicKKyAgICAgJAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gd29ya2luZyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIGFuZCBCU1AgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgKEJTUCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5mb3JtIHRoZSBCaXRCYWtlIEJ1aWxkIEVudmlyb25tZW50IEFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBcyBkaXJlY3RlZCB3aGVuIHlvdSBjcmVhdGVkIHlvdXIgbGF5ZXIsIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBhZGQgdGhlIGxheWVyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAuLi8uLi9tZXRhLW15bGF5ZXIKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgJAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgRXh0ZW5zaWJsZSBTREs6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBCaXRCYWtlIHRvIGJ1aWxkIHRoZSBleHRlbnNpYmxlIFNESyBzcGVjaWZpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB1c2Ugd2l0aCBpbWFnZXMgdG8gYmUgcnVuIHVzaW5nIFFFTVU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwgLWMgcG9wdWxhdGVfc2RrX2V4dAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgYnVpbGQgZmluaXNoZXMsIHlvdSBjYW4gZmluZCB0aGUgU0RLIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSAoaS5lLiA8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+IGZpbGUpIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgfi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvc2RrCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgaW5zdGFsbGVyIGZpbGUgaXMgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLW1pbmltYWwtaTU4Ni10b29sY2hhaW4tZXh0LSZESVNUUk87LnNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCB0aGUgRXh0ZW5zaWJsZSBTREs6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gaW5zdGFsbCB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgaW5zdGFsbCB0aGUgU0RLIGluIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi9wb2t5X3NkazwvZmlsZW5hbWU+IGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQvdG1wL2RlcGxveS9zZGsKKyAgICAgJCAuL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2UtbWluaW1hbC1pNTg2LXRvb2xjaGFpbi1leHQtJkRJU1RSTzsuc2gKKyAgICAgUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSBFeHRlbnNpYmxlIFNESyBpbnN0YWxsZXIgdmVyc2lvbiAmRElTVFJPOworICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgIEVudGVyIHRhcmdldCBkaXJlY3RvcnkgZm9yIFNESyAoZGVmYXVsdDogfi9wb2t5X3Nkayk6CisgICAgIFlvdSBhcmUgYWJvdXQgdG8gaW5zdGFsbCB0aGUgU0RLIHRvICIvaG9tZS9zY290dHJpZi9wb2t5X3NkayIuIFByb2NlZWRbWS9uXT8gWQorICAgICBFeHRyYWN0aW5nIFNESy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uZG9uZQorICAgICBTZXR0aW5nIGl0IHVwLi4uCisgICAgIEV4dHJhY3RpbmcgYnVpbGR0b29scy4uLgorICAgICBQcmVwYXJpbmcgYnVpbGQgc3lzdGVtLi4uCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6NTIKKyAgICAgSW5pdGlhbGl6aW5nIHRhc2tzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowNAorICAgICBDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHk6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MzMKKyAgICAgSW5pdGlhbGl6aW5nIHRhc2tzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBkb25lCisgICAgIFNESyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2V0IHVwIGFuZCBpcyByZWFkeSB0byBiZSB1c2VkLgorICAgICBFYWNoIHRpbWUgeW91IHdpc2ggdG8gdXNlIHRoZSBTREsgaW4gYSBuZXcgc2hlbGwgc2Vzc2lvbiwgeW91IG5lZWQgdG8gc291cmNlIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZS5nLgorICAgICAgJCAuIC9ob21lL3Njb3R0cmlmL3Bva3lfc2RrL2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nc2V0dGluZy11cC10aGUtZXNkay10ZXJtaW5hbCc+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIGEgTmV3IFRlcm1pbmFsIHRvIFdvcmsgV2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuc2libGUgU0RLOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzZXQgdXAgYSBuZXcgdGVybWluYWwgdG8gd29yayB3aXRoIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSB0aGUgc2FtZSBCaXRCYWtlIHNoZWxsIHVzZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZXIuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZnRlciBvcGVuaW5nIGEgbmV3IHNoZWxsLCBydW4gdGhlIFNESyBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGFzIGRpcmVjdGVkIGJ5IHRoZSBvdXRwdXQgZnJvbSBpbnN0YWxsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgU0RLOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSB+L3Bva3lfc2RrL2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAiU0RLIGVudmlyb25tZW50IG5vdyBzZXQgdXA7IGFkZGl0aW9uYWxseSB5b3UgbWF5IG5vdyBydW4gZGV2dG9vbCB0byBwZXJmb3JtIGRldmVsb3BtZW50IHRhc2tzLgorICAgICBSdW4gZGV2dG9vbCAtLWhlbHAgZm9yIGZ1cnRoZXIgZGV0YWlscy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBnZXQgYSB3YXJuaW5nIGFib3V0IGF0dGVtcHRpbmcgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLIGluIGFuIGVudmlyb25tZW50IHNldCB1cCB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlLCB5b3UgZGlkIG5vdCB1c2UgYSBuZXcgc2hlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBDbGVhbiBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHN0ZXAgaW4gcHJlcGFyaW5nIHRvIHdvcmsgb24gdGhlIGtlcm5lbCBpcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYW4gaW5pdGlhbCBpbWFnZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpbiB0aGUgbmV3IHRlcm1pbmFsIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAganVzdCBzZXQgdXAgYW5kIGluaXRpYWxpemVkIGZvciBTREsgd29yazoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjA1CisgICAgIFBhcnNpbmcgb2YgODMwIC5iYiBmaWxlcyBjb21wbGV0ZSAoMCBjYWNoZWQsIDgzMCBwYXJzZWQpLiAxMjk5IHRhcmdldHMsIDQ3IHNraXBwZWQsIDAgbWFza2VkLCAwIGVycm9ycy4KKyAgICAgV0FSTklORzogTm8gcGFja2FnZXMgdG8gYWRkLCBidWlsZGluZyBpbWFnZSBjb3JlLWltYWdlLW1pbmltYWwgdW5tb2RpZmllZAorICAgICBMb2FkaW5nIGNhY2hlOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBMb2FkZWQgMTI5OSBlbnRyaWVzIGZyb20gZGVwZW5kZW5jeSBjYWNoZS4KKyAgICAgTk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRhc2sgcXVldWUgZGVwZW5kZW5jaWVzCisgICAgIEluaXRpYWxpemluZyB0YXNrczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjA3CisgICAgIENoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eTogMTAwJSB8IyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgTk9URTogVGFza3MgU3VtbWFyeTogQXR0ZW1wdGVkIDI4NjYgdGFza3Mgb2Ygd2hpY2ggMjYwNCBkaWRuJ3QgbmVlZCB0byBiZSByZXJ1biBhbmQgYWxsIHN1Y2NlZWRlZC4KKyAgICAgTk9URTogU3VjY2Vzc2Z1bGx5IGJ1aWx0IGNvcmUtaW1hZ2UtbWluaW1hbC4gWW91IGNhbiBmaW5kIG91dHB1dCBmaWxlcyBpbiAvaG9tZS9zY290dHJpZi9wb2t5X3Nkay90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2VyZSBidWlsZGluZyBmb3IgYWN0dWFsIGhhcmR3YXJlIGFuZCBub3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBlbXVsYXRpb24sIHlvdSBjb3VsZCBmbGFzaCB0aGUgaW1hZ2UgdG8gYSBVU0Igc3RpY2sKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIDxmaWxlbmFtZT4vZGV2L3NkZDwvZmlsZW5hbWU+IGFuZCBib290IHlvdXIgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgdGhhdCB1c2VzIGEgTWlubm93Ym9hcmQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9LZXJuZWxEZXZlbG9wbWVudFdpdGhFc2RrJz5UaXBzQW5kVHJpY2tzL0tlcm5lbERldmVsb3BtZW50V2l0aEVzZGs8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgV2lraSBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3UgaGF2ZSBzZXQgdXAgdG8gc3RhcnQgbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8KKyAgICAgICAgICAgICAgICB0aGUga2VybmVsIGJ5IHVzaW5nIHRoZSBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICBGb3IgYSBjb250aW51ZWQgZXhhbXBsZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdnZXR0aW5nLXJlYWR5LWZvci10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPkdldHRpbmcgUmVhZHkgZm9yIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEdldHRpbmcgcmVhZHkgZm9yIHRyYWRpdGlvbmFsIGtlcm5lbCBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICBQcm9qZWN0IGludm9sdmVzIG1hbnkgb2YgdGhlIHNhbWUgc3RlcHMgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgIHByZXZpb3VzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG5lZWQgdG8gZXN0YWJsaXNoIGEgbG9jYWwgY29weSBvZiB0aGUga2VybmVsIHNvdXJjZQorICAgICAgICAgICAgICAgIHNpbmNlIHlvdSB3aWxsIGJlIGVkaXRpbmcgdGhlc2UgZmlsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBwcmVwYXJlIHRvIHVwZGF0ZSB0aGUga2VybmVsIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgdHJhZGl0aW9uYWwga2VybmVsIGRldmVsb3BtZW50IGZsb3cgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBDb21wbGV0aW5nIHRoaXMgcHJvY2VkdXJlIGxlYXZlcyB5b3UgcmVhZHkgdG8gbWFrZSBtb2RpZmljYXRpb25zCisgICAgICAgICAgICAgICAgdG8gdGhlIGtlcm5lbCBzb3VyY2UgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb246CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQml0QmFrZSBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBjYW4gZG8gYW55dGhpbmcgdXNpbmcgQml0QmFrZSwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemUgdGhlIEJpdEJha2UgYnVpbGQgZW52aXJvbm1lbnQgYnkgc291cmNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBmb3IgdGhpcyBleGFtcGxlLCBiZSBzdXJlIHRoYXQgdGhlIGxvY2FsIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgY2hlY2tlZCBvdXQgZm9yIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0ICZESVNUUk9fTkFNRTsgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gY2hlY2tvdXQgb3V0IHRoZSAmRElTVFJPX05BTUU7IGJyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIG91dCBieSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5CisgICAgICQgZ2l0IGJyYW5jaAorICAgICBtYXN0ZXIKKyAgICAgKiAmRElTVFJPX05BTUU7CisgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgY29tbWFuZHMgYXNzdW1lIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGhhdmUgYmVlbiBjbG9uZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBHaXQgYW5kIHRoZSBsb2NhbCByZXBvc2l0b3J5IGlzIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiAzMi1iaXQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBhcmUgbm90LCB5b3UgbmVlZCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFwcHJvcHJpYXRlbHkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPn4vcG9reS9idWlsZDwvZmlsZW5hbWU+IGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUpLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWxzbywgc2luY2UgeW91IGFyZSBwcmVwYXJpbmcgdG8gd29yayBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSwgeW91IG5lZWQgdG8gc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTJz48ZmlsZW5hbWU+TUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBpbmNsdWRlIGtlcm5lbCBtb2R1bGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBleGFtcGxlIHVzZXMgdGhlIGRlZmF1bHQgInFlbXV4ODYiIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYnV0IG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBhZGQgdGhlICJrZXJuZWwtbW9kdWxlcyI6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJrZXJuZWwtbW9kdWxlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgTGF5ZXIgZm9yIFBhdGNoZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIGxheWVyIHRvIGhvbGQgcGF0Y2hlcyBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcgorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICBBZGQgeW91ciBuZXcgbGF5ZXIgd2l0aCAnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC4uLy4uL21ldGEtbXlsYXllcicKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBhbmQgQlNQIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IChCU1ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluZm9ybSB0aGUgQml0QmFrZSBCdWlsZCBFbnZpcm9ubWVudCBBYm91dAorICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgZGlyZWN0ZWQgd2hlbiB5b3UgY3JlYXRlZCB5b3VyIGxheWVyLCB5b3UgbmVlZCB0byBhZGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYXllciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkxBWUVSUyc+PGZpbGVuYW1lPkJCTEFZRVJTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgLi4vLi4vbWV0YS1teWxheWVyCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyIC4uLgorICAgICAkCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIExvY2FsIENvcHkgb2YgdGhlIEtlcm5lbCBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBHaXQgcmVwb3NpdG9yaWVzIG9mIHN1cHBvcnRlZCBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxzIG9yZ2FuaXplZCB1bmRlciAiWW9jdG8gTGludXggS2VybmVsIiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllcyBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igc2ltcGxpY2l0eSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgY3JlYXRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgb2YgdGhlIGtlcm5lbCBHaXQgcmVwb3NpdG9yeSBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdXN1YWxseSBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgYmUgc3VyZSB5b3UgYXJlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN0YW5kYXJkL2Jhc2U8L2ZpbGVuYW1lPiBicmFuY2guCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kcyBzaG93IGhvdyB0byBjcmVhdGUgYSBsb2NhbCBjb3B5CisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBiZSBpbiB0aGUgPGZpbGVuYW1lPnN0YW5kYXJkL2Jhc2U8L2ZpbGVuYW1lPiBicmFuY2guCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGZvcndhcmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzIHByaW9yIHRvIFlvY3RvIFByb2plY3QgMi40OgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMiAtLWJyYW5jaCBzdGFuZGFyZC9iYXNlCisgICAgIENsb25pbmcgaW50byAnbGludXgteW9jdG8tNC4xMicuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiA2MDk3MTk1LCBkb25lLgorICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDkwMTAyNi85MDEwMjYpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDYwOTcxOTUgKGRlbHRhIDUxNTI2MDQpLCByZXVzZWQgNjA5Njg0NyAoZGVsdGEgNTE1MjI1NikKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDYwOTcxOTUvNjA5NzE5NSksIDEuMjQgR2lCIHwgNy44MSBNaUIvcywgZG9uZS4KKyAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoNTE1MjYwNC81MTUyNjA0KSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgIENoZWNraW5nIG91dCBmaWxlczogMTAwJSAoNTk4NDYvNTk4NDYpLCBkb25lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBMb2NhbCBDb3B5IG9mIHRoZSBLZXJuZWwgQ2FjaGUgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igc2ltcGxpY2l0eSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgY3JlYXRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgb2YgdGhlIGtlcm5lbCBjYWNoZSBHaXQgcmVwb3NpdG9yeSBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdXN1YWxseSBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgZm9yIHRoaXMgZXhhbXBsZSwgYmUgc3VyZSB5b3UgYXJlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBicmFuY2guCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kcyBzaG93IGhvdyB0byBjcmVhdGUgYSBsb2NhbCBjb3B5CisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYmUgaW4gdGhlIDxmaWxlbmFtZT55b2N0by00LjEyPC9maWxlbmFtZT4gYnJhbmNoOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlIC0tYnJhbmNoIHlvY3RvLTQuMTIKKyAgICAgQ2xvbmluZyBpbnRvICd5b2N0by1rZXJuZWwtY2FjaGUnLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogMjI2MzksIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoOTc2MS85NzYxKSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCAyMjYzOSAoZGVsdGEgMTI0MDApLCByZXVzZWQgMjI1ODYgKGRlbHRhIDEyMzQ3KQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMjI2MzkvMjI2MzkpLCAyMi4zNCBNaUIgfCA2LjI3IE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgxMjQwMC8xMjQwMCksIGRvbmUuCisgICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCwgeW91IGFyZSByZWFkeSB0byBzdGFydCBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0bworICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgdXNpbmcgdHJhZGl0aW9uYWwga2VybmVsIGRldmVsb3BtZW50IHN0ZXBzLgorICAgICAgICAgICAgICAgIEZvciBhIGNvbnRpbnVlZCBleGFtcGxlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQgdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KIAogICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy1hbmQtcHJlcGFyaW5nLWEtbGF5ZXInPgogICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYW5kIFByZXBhcmluZyBhIExheWVyPC90aXRsZT4KQEAgLTI2LDI1ICs0NzIsOTggQEAKICAgICAgICAgICAgIHRoYXQgeW91IGNyZWF0ZSBhbmQgcHJlcGFyZSB5b3VyIG93biBsYXllciBpbiB3aGljaCB0byBkbyB5b3VyCiAgICAgICAgICAgICB3b3JrLgogICAgICAgICAgICAgWW91ciBsYXllciBjb250YWlucyBpdHMgb3duCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgotICAgICAgICAgICAgYXBwZW5kIGZpbGVzCi0gICAgICAgICAgICAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KSBhbmQgcHJvdmlkZXMgYSBjb252ZW5pZW50Ci0gICAgICAgICAgICBtZWNoYW5pc20gdG8gY3JlYXRlIHlvdXIgb3duIHJlY2lwZSBmaWxlcwotICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gY3JlYXRlIGFuZCB3b3JrIHdpdGggbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgYXBwZW5kIGZpbGVzICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIGFuZCBwcm92aWRlcyBhCisgICAgICAgICAgICBjb252ZW5pZW50IG1lY2hhbmlzbSB0byBjcmVhdGUgeW91ciBvd24gcmVjaXBlIGZpbGVzCisgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBhcyB3ZWxsIGFzIHN0b3JlIGFuZCB1c2Uga2VybmVsCisgICAgICAgICAgICBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgIEZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgd2l0aCBsYXllcnMsIHNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgogICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGNvbWVzIHdpdGggbWFueSB0b29scyB0aGF0IHNpbXBsaWZ5CiAgICAgICAgICAgICAgICAgdGFza3MgeW91IG5lZWQgdG8gcGVyZm9ybS4KLSAgICAgICAgICAgICAgICBPbmUgc3VjaCB0b29sIGlzIHRoZSA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXIgY3JlYXRlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBzY3JpcHQsIHdoaWNoIHNpbXBsaWZpZXMgY3JlYXRpbmcgYSBuZXcgbGF5ZXIuCisgICAgICAgICAgICAgICAgT25lIHN1Y2ggdG9vbCBpcyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kLCB3aGljaCBzaW1wbGlmaWVzIGNyZWF0aW5nIGEgbmV3IGxheWVyLgogICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS15b2N0by1sYXllci1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgeW9jdG8tbGF5ZXIgU2NyaXB0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yIG1vcmUKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIHNjcmlwdC4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIGxheWVyIHlvdSBjcmVhdGUgZm9yIGtlcm5lbCBkZXZlbG9wbWVudCwKKyAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGNyZWF0ZSBhIGxheWVyCisgICAgICAgICAgICB3aXRob3V0IHRoZSBhaWQgb2YgdG9vbHMuCisgICAgICAgICAgICBUaGVzZSBzdGVwcyBhc3N1bWUgY3JlYXRpb24gb2YgYSBsYXllciBuYW1lZAorICAgICAgICAgICAgPGZpbGVuYW1lPm15bGF5ZXI8L2ZpbGVuYW1lPiBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5OgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBTdHJ1Y3R1cmU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIHRoZSBsYXllcidzIHN0cnVjdHVyZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkICRIT01FCisgICAgICQgbWtkaXIgbWV0YS1teWxheWVyCisgICAgICQgbWtkaXIgbWV0YS1teWxheWVyL2NvbmYKKyAgICAgJCBta2RpciBtZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwKKyAgICAgJCBta2RpciBtZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwvbGludXgKKyAgICAgJCBta2RpciBtZXRhLW15bGF5ZXIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaG9sZHMgeW91cgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzLCB3aGlsZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4gZGlyZWN0b3J5IGhvbGRzIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kIGZpbGUgYW5kIGV2ZW50dWFsIHBhdGNoIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgdGhlIExheWVyIENvbmZpZ3VyYXRpb24gRmlsZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBNb3ZlIHRvIHRoZSA8ZmlsZW5hbWU+bWV0YS1teWxheWVyL2NvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIGNyZWF0ZSB0aGUgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKKyAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCisKKyAgICAgIyBXZSBoYXZlIHJlY2lwZXMtKiBkaXJlY3RvcmllcywgYWRkIHRvIEJCRklMRVMKKyAgICAgQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCisgICAgICAgICAgICAgICAgICR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiCisKKyAgICAgQkJGSUxFX0NPTExFQ1RJT05TICs9ICJteWxheWVyIgorICAgICBCQkZJTEVfUEFUVEVSTl9teWxheWVyID0gIl4ke0xBWUVSRElSfS8iCisgICAgIEJCRklMRV9QUklPUklUWV9teWxheWVyID0gIjUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgTm90aWNlIDxmaWxlbmFtZT5teWxheWVyPC9maWxlbmFtZT4gYXMgcGFydCBvZiB0aGUgbGFzdAorICAgICAgICAgICAgICAgICAgICB0aHJlZSBzdGF0ZW1lbnRzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgdGhlIEtlcm5lbCBSZWNpcGUgQXBwZW5kIEZpbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgTW92ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtbXlsYXllci9yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgY3JlYXRlIHRoZSBrZXJuZWwncyBhcHBlbmQgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by00LjEyPC9maWxlbmFtZT4ga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgbmFtZSBvZiB0aGUgYXBwZW5kIGZpbGUgaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisKKyAgICAgU1JDX1VSSV9hcHBlbmQgKz0gImZpbGU6Ly88cmVwbGFjZWFibGU+cGF0Y2gtZmlsZS1vbmU8L3JlcGxhY2VhYmxlPiIKKyAgICAgU1JDX1VSSV9hcHBlbmQgKz0gImZpbGU6Ly88cmVwbGFjZWFibGU+cGF0Y2gtZmlsZS10d288L3JlcGxhY2VhYmxlPiIKKyAgICAgU1JDX1VSSV9hcHBlbmQgKz0gImZpbGU6Ly88cmVwbGFjZWFibGU+cGF0Y2gtZmlsZS10aHJlZTwvcmVwbGFjZWFibGU+IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIGVuYWJsZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBmaW5kCisgICAgICAgICAgICAgICAgICAgIHBhdGNoIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBhcHBlbmQgZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXMgaW4gWW91ciBMYXllcjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J21vZGlmeWluZy1hbi1leGlzdGluZy1yZWNpcGUnPgpAQCAtNTYsNyArNTc1LDcgQEAKICAgICAgICAgICAgIEVhY2ggcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhIGZldyBMaW51eAogICAgICAgICAgICAga2VybmVsIHJlY2lwZXMgZnJvbSB3aGljaCB5b3UgY2FuIGNob29zZS4KICAgICAgICAgICAgIFRoZXNlIGFyZSBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4uCiAgICAgICAgIDwvcGFyYT4KIApAQCAtNzIsMTIgKzU5MSw5IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQmVmb3JlIG1vZGlmeWluZyBhbiBleGlzdGluZyByZWNpcGUsIGJlIHN1cmUgdGhhdCB5b3UgaGF2ZSBjcmVhdGVkCiAgICAgICAgICAgICBhIG1pbmltYWwsIGN1c3RvbSBsYXllciBmcm9tIHdoaWNoIHlvdSBjYW4gd29yay4KLSAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWFuZC1wcmVwYXJpbmctYS1sYXllcic+Q3JlYXRpbmcgYW5kIFByZXBhcmluZyBhIExheWVyPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gZm9yIHNvbWUgZ2VuZXJhbCByZXNvdXJjZXMuCi0gICAgICAgICAgICBZb3UgY2FuIGFsc28gc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldC11cC15b3VyLWxheWVyLWZvci10aGUtYnVpbGQnPlNldCBVcCBZb3VyIExheWVyIGZvciB0aGUgQnVpbGQ8L3VsaW5rPiIgc2VjdGlvbgotICAgICAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBhIGRldGFpbGVkCi0gICAgICAgICAgICBleGFtcGxlLgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWFuZC1wcmVwYXJpbmctYS1sYXllcic+Q3JlYXRpbmcgYW5kIFByZXBhcmluZyBhIExheWVyPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXRoZS1hcHBlbmQtZmlsZSc+CkBAIC04OCwxMSArNjA0LDExIEBACiAgICAgICAgICAgICAgICAgWW91IGFsc28gbmFtZSBpdCBhY2NvcmRpbmdseSBiYXNlZCBvbiB0aGUgbGludXgteW9jdG8gcmVjaXBlCiAgICAgICAgICAgICAgICAgeW91IGFyZSB1c2luZy4KICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBtb2RpZnlpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICByZWNpcGUsIHRoZSBhcHBlbmQgZmlsZSB3aWxsIHR5cGljYWxseSBiZSBsb2NhdGVkIGFzIGZvbGxvd3MKICAgICAgICAgICAgICAgICB3aXRoaW4geW91ciBjdXN0b20gbGF5ZXI6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICA8cmVwbGFjZWFibGU+eW91ci1sYXllcjwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorICAgICA8cmVwbGFjZWFibGU+eW91ci1sYXllcjwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgVGhlIGFwcGVuZCBmaWxlIHNob3VsZCBpbml0aWFsbHkgZXh0ZW5kIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU1BBVEgnPjxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPjwvdWxpbms+CkBAIC0xMjMsNyArNjM5LDcgQEAKICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIGFwcGVuZCBmaWxlCiAgICAgICAgICAgICAgICAgdXNlZCBieSB0aGUgQlNQcyBpbiA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorICAgICBtZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdGluZyBzaG93cyB0aGUgZmlsZS4KICAgICAgICAgICAgICAgICBCZSBhd2FyZSB0aGF0IHRoZSBhY3R1YWwgY29tbWl0IElEIHN0cmluZ3MgaW4gdGhpcwpAQCAtMTQwLDExICs2NTYsMTIgQEAKICAgICAgS0JSQU5DSF9iZWFnbGVib25lID0gInN0YW5kYXJkL2JlYWdsZWJvbmUiCiAgICAgIEtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCiAKLSAgICAgU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiYWQ4YjFkNjU5ZGRkMjY5OWViZjdkNTBlZjlkZTg5NDBiMTU3YmZjMiIKLSAgICAgU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiYWQ4YjFkNjU5ZGRkMjY5OWViZjdkNTBlZjlkZTg5NDBiMTU3YmZjMiIKLSAgICAgU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiY2ViZTFhZDU2YWViZDg5ZTBkZTI5NDEyZTE5NDMzZmI0NDFiZjEzYyIKLSAgICAgU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZSA/PSAiY2ViZTFhZDU2YWViZDg5ZTBkZTI5NDEyZTE5NDMzZmI0NDFiZjEzYyIKLSAgICAgU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICIwNmMwZGJkY2JhMzc0Y2E3ZjkyYTUzZDY5MjkyZDZiYjdiYzliMGYzIgorICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICJkMDlmMmNlNTg0ZDYwZWNiNzg5MDU1MGMyMmE4MGM0OGI4M2MyZTE5IgorICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJkMDlmMmNlNTg0ZDYwZWNiNzg5MDU1MGMyMmE4MGM0OGI4M2MyZTE5IgorICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICJiNWM4Y2ZkYTJkZmUyOTY0MTBkNTFlMTMxMjg5ZmIwOWM2OWUxZTdkIgorICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lID89ICJiNWM4Y2ZkYTJkZmUyOTY0MTBkNTFlMTMxMjg5ZmIwOWM2OWUxZTdkIgorICAgICBTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjJkMWQwMTAyNDA4NDZkN2JmZjE1ZDFmY2MwY2I2ZWI4YTIyZmM3OGEiCisKIAogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgpAQCAtMTUyLDExICs2NjksMTEgQEAKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUgPSAiYmVhZ2xlYm9uZSIKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCiAKLSAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuNC40MSIKLSAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuNC40MSIKLSAgICAgTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuNC41MyIKLSAgICAgTElOVVhfVkVSU0lPTl9iZWFnbGVib25lID0gIjQuNC41MyIKLSAgICAgTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC40LjUzIgorICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xMi43IgorICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi43IgorICAgICBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xMi4xMCIKKyAgICAgTElOVVhfVkVSU0lPTl9iZWFnbGVib25lID0gIjQuMTIuMTAiCisgICAgIExJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuMTIuMTAiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoaXMgYXBwZW5kIGZpbGUgY29udGFpbnMgc3RhdGVtZW50cyB1c2VkIHRvIHN1cHBvcnQKICAgICAgICAgICAgICAgICBzZXZlcmFsIEJTUHMgdGhhdCBzaGlwIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCkBAIC0xNzksNyArNjk2LDcgQEAKICAgICAgICAgICAgICAgICB2YXJpYWJsZSBjb3VsZCBiZSB1c2VkIHRvIGVuYWJsZSBmZWF0dXJlcyBzcGVjaWZpYyB0bwogICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwuCiAgICAgICAgICAgICAgICAgVGhlIGFwcGVuZCBmaWxlIHBvaW50cyB0byBzcGVjaWZpYyBjb21taXRzIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGFuZCB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeQogICAgICAgICAgICAgICAgIGJyYW5jaGVzIHRvIGlkZW50aWZ5IHRoZSBleGFjdCBrZXJuZWwgbmVlZGVkIHRvIGJ1aWxkIHRoZQogICAgICAgICAgICAgICAgIEJTUC4KQEAgLTE4Nyw4ICs3MDQsOCBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBPbmUgdGhpbmcgbWlzc2luZyBpbiB0aGlzIHBhcnRpY3VsYXIgQlNQLCB3aGljaCB5b3Ugd2lsbAotICAgICAgICAgICAgICAgIHR5cGljYWxseSBuZWVkIHdoZW4gZGV2ZWxvcGluZyBhIEJTUCwgaXMgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSAoPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPikgZm9yIHlvdXIgQlNQLgorICAgICAgICAgICAgICAgIHR5cGljYWxseSBuZWVkIHdoZW4gZGV2ZWxvcGluZyBhIEJTUCwgaXMgdGhlIGtlcm5lbAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSAoPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPikgZm9yIHlvdXIgQlNQLgogICAgICAgICAgICAgICAgIFdoZW4gZGV2ZWxvcGluZyBhIEJTUCwgeW91IHByb2JhYmx5IGhhdmUgYSBrZXJuZWwgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgIGZpbGUgb3IgYSBzZXQgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCwgd2hlbiB0YWtlbgogICAgICAgICAgICAgICAgIHRvZ2V0aGVyLCBkZWZpbmUgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZvciB5b3VyIEJTUC4KQEAgLTE5Niw3ICs3MTMsOCBAQAogICAgICAgICAgICAgICAgIGluIGEgZmlsZSBvciBhIHNldCBvZiBmaWxlcyBpbnNpZGUgYSBkaXJlY3RvcnkgbG9jYXRlZCBhdCB0aGUKICAgICAgICAgICAgICAgICBzYW1lIGxldmVsIGFzIHlvdXIga2VybmVsJ3MgYXBwZW5kIGZpbGUgYW5kIGhhdmluZyB0aGUgc2FtZQogICAgICAgICAgICAgICAgIG5hbWUgYXMgdGhlIGtlcm5lbCdzIG1haW4gcmVjaXBlIGZpbGUuCi0gICAgICAgICAgICAgICAgV2l0aCBhbGwgdGhlc2UgY29uZGl0aW9ucyBtZXQsIHNpbXBseSByZWZlcmVuY2UgdGhvc2UgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgV2l0aCBhbGwgdGhlc2UgY29uZGl0aW9ucyBtZXQsIHNpbXBseSByZWZlcmVuY2UgdGhvc2UgZmlsZXMgaW4KKyAgICAgICAgICAgICAgICB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGluIHRoZSBhcHBlbmQgZmlsZS4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTI0MiwyNSArNzYwLDMxIEBACiAKICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBPdGhlciBtZXRob2RzIGV4aXN0IHRvIGFjY29tcGxpc2ggZ3JvdXBpbmcgYW5kIGRlZmluaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIGEgbG9jYWwgY2xvbmUgb2YgdGhlIGtlcm5lbCByZXBvc2l0b3J5LAotICAgICAgICAgICAgICAgICAgICB5b3UgY291bGQgY2hlY2tvdXQgdGhlIGtlcm5lbCdzIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoLCBtYWtlIHlvdXIgY2hhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRoZW4gcHVzaCB0aGUgY2hhbmdlcyB0byB0aGUgbG9jYWwgYmFyZSBjbG9uZSBvZiB0aGUga2VybmVsLgotICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoYXQgeW91IGRpcmVjdGx5IGFkZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoIGZvciB5b3VyIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGxpa2VseSBlbmQgdXAgaW4gdGhhdCBsb2NhdGlvbiBhbnl3YXkgaWYgdGhlIEJTUCBnZXRzCi0gICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBPdGhlciBtZXRob2RzIGV4aXN0IHRvIGFjY29tcGxpc2ggZ3JvdXBpbmcgYW5kIGRlZmluaW5nCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIGEgbG9jYWwgY2xvbmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCByZXBvc2l0b3J5LCB5b3UgY291bGQgY2hlY2tvdXQgdGhlIGtlcm5lbCdzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoLCBtYWtlIHlvdXIgY2hhbmdlcywgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZW4gcHVzaCB0aGUgY2hhbmdlcyB0byB0aGUgbG9jYWwgYmFyZSBjbG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoYXQgeW91IGRpcmVjdGx5IGFkZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoIGZvciB5b3VyIEJTUC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGxpa2VseSBlbmQgdXAgaW4gdGhhdAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiBhbnl3YXkgaWYgdGhlIEJTUCBnZXRzIGFkZGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBob3dldmVyLCB0aGUgWW9jdG8gUHJvamVjdCBtYWludGFpbmVycyB0YWtlIGNhcmUgb2YgbW92aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+LXNwZWNpZmllZAotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIGtlcm5lbCdzIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICBOb3Qgb25seSBpcyBpdCBlYXNpZXIgZm9yIEJTUCBkZXZlbG9wZXJzIHRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHB1dHRpbmcgdGhvc2UKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgaW4gdGhlIGJyYW5jaCwgYnV0IGhhdmluZyB0aGUgbWFpbnRhaW5lcnMgZG8gaXQgYWxsb3dzIHRoZW0gdG8gYXBwbHkKLSAgICAgICAgICAgICAgICAgICAgJ2dsb2JhbCcga25vd2xlZGdlIGFib3V0IHRoZSBraW5kcyBvZiBjb21tb24gY29uZmlndXJhdGlvbiBvcHRpb25zIG11bHRpcGxlIEJTUHMgaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIHRyZWUgYXJlIHR5cGljYWxseSB1c2luZy4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBhbGxvd3MgZm9yIHByb21vdGlvbiBvZiBjb21tb24gY29uZmlndXJhdGlvbnMgaW50byBjb21tb24gZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGhvd2V2ZXIsIHRoZSBZb2N0byBQcm9qZWN0IG1haW50YWluZXJzIHRha2UKKyAgICAgICAgICAgICAgICAgICAgY2FyZSBvZiBtb3ZpbmcgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4tc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIE5vdCBvbmx5IGlzIGl0IGVhc2llciBmb3IgQlNQIGRldmVsb3BlcnMgdG8gbm90IGhhdmUgdG8KKyAgICAgICAgICAgICAgICAgICAgd29ycnkgYWJvdXQgcHV0dGluZyB0aG9zZSBjb25maWd1cmF0aW9ucyBpbiB0aGUgYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICBidXQgaGF2aW5nIHRoZSBtYWludGFpbmVycyBkbyBpdCBhbGxvd3MgdGhlbSB0byBhcHBseQorICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsJyBrbm93bGVkZ2UgYWJvdXQgdGhlIGtpbmRzIG9mIGNvbW1vbiBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgbXVsdGlwbGUgQlNQcyBpbiB0aGUgdHJlZSBhcmUgdHlwaWNhbGx5IHVzaW5nLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGFsbG93cyBmb3IgcHJvbW90aW9uIG9mIGNvbW1vbiBjb25maWd1cmF0aW9ucyBpbnRvCisgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBmZWF0dXJlcy4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTI5NSw5ICs4MTksMTIgQEAKICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIGEgZGV0YWlsZWQgZXhhbXBsZSBzaG93aW5nIGhvdyB0byBwYXRjaCB0aGUga2VybmVsLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BhdGNoaW5nLXRoZS1rZXJuZWwnPlBhdGNoaW5nIHRoZSBLZXJuZWw8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgYSBkZXRhaWxlZCBleGFtcGxlIHNob3dpbmcgaG93IHRvIHBhdGNoIHRoZSBrZXJuZWwgdXNpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWRldnRvb2wtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9ucy4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC0zODMsOCArOTEwLDggQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEZvciBhIGRldGFpbGVkIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gY29uZmlndXJlIHRoZSBrZXJuZWwsCiAgICAgICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjb25maWd1cmluZy10aGUta2VybmVsJz5Db25maWd1cmluZyB0aGUgS2VybmVsPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NvbmZpZ3VyaW5nLXRoZS1rZXJuZWwnPkNvbmZpZ3VyaW5nIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtNDE2LDE1ICs5NDMsMTcgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSBhbiAiaW4tdHJlZSIgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUsCi0gICAgICAgICAgICAgICAgZWRpdCB0aGUgcmVjaXBlIHRoYXQgYnVpbGRzIHlvdXIga2VybmVsIHNvIHRoYXQgaXQgaGFzIHRoZQotICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjb21tYW5kIGZvcm06CisgICAgICAgICAgICAgICAgdXNlIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IGZvcm06CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBLQlVJTERfREVGQ09ORklHX0tNQUNISU5FID89IDxyZXBsYWNlYWJsZT5kZWZjb25maWdfZmlsZTwvcmVwbGFjZWFibGU+CisgICAgIEtCVUlMRF9ERUZDT05GSUdfPHJlcGxhY2VhYmxlPktNQUNISU5FPC9yZXBsYWNlYWJsZT4gPz0gPHJlcGxhY2VhYmxlPmRlZmNvbmZpZ19maWxlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYXBwZW5kIHRoZSB2YXJpYWJsZSB3aXRoCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtNQUNISU5FJz48ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgYW5kIHRoZW4gc3VwcGx5IHRoZSBwYXRoIHRvIHlvdXIgImluLXRyZWUiCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYXBwZW5kcyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0JVSUxEX0RFRkNPTkZJRzwvZmlsZW5hbWU+IHZhcmlhYmxlIHdpdGgKKyAgICAgICAgICAgICAgICAiY29tbW9uLXBjIiBhbmQgcHJvdmlkZXMgdGhlIHBhdGggdG8gdGhlICJpbi10cmVlIgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JVSUxEX0RFRkNPTkZJR19jb21tb24tcGMgPz0gIi9ob21lL3Njb3R0cmlmL2NvbmZpZ2ZpbGVzL215X2RlZmNvbmZpZ19maWxlIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC00MzIsNyArOTYxLDggQEAKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgeW91IG5lZWQgdG8gYmUgc3VyZSBubwogICAgICAgICAgICAgICAgIGZpbGVzIG9yIHN0YXRlbWVudHMgc2V0IDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdG8gdXNlIGEKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gb3RoZXIgdGhhbiB5b3VyICJpbi10cmVlIgotICAgICAgICAgICAgICAgIGZpbGUgKGUuZy4gYSBrZXJuZWwncyA8ZmlsZW5hbWU+bGludXgtPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5pbmM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgKGUuZy4gYSBrZXJuZWwncworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmluYzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZmlsZSkuCiAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBidWlsZCBzeXN0ZW0gZGV0ZWN0cyBhIHN0YXRlbWVudAogICAgICAgICAgICAgICAgIHRoYXQgaWRlbnRpZmllcyBhbiAib3V0LW9mLXRyZWUiCkBAIC00NDksMTE1ICs5NzksNzUwIEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0ndXNpbmctYW4taXRlcmF0aXZlLWRldmVsb3BtZW50LXByb2Nlc3MnPgotICAgICAgICA8dGl0bGU+VXNpbmcgYW4gSXRlcmF0aXZlIERldmVsb3BtZW50IFByb2Nlc3M8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSJ1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwiPgorICAgICAgICA8dGl0bGU+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBQYXRjaCB0aGUgS2VybmVsPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSBleGlzdGluZyBwYXRjaGVzIG9yIGNvbmZpZ3VyYXRpb24gZmlsZXMsCi0gICAgICAgICAgICB5b3UgY2FuIGl0ZXJhdGl2ZWx5IGdlbmVyYXRlIHRoZW0gZnJvbSB3aXRoaW4gdGhlIEJpdEJha2UgYnVpbGQKLSAgICAgICAgICAgIGVudmlyb25tZW50IGFzIGRlc2NyaWJlZCB3aXRoaW4gdGhpcyBzZWN0aW9uLgotICAgICAgICAgICAgRHVyaW5nIGFuIGl0ZXJhdGl2ZSB3b3JrZmxvdywgcnVubmluZyBhIHByZXZpb3VzbHkgY29tcGxldGVkIEJpdEJha2UKLSAgICAgICAgICAgIHRhc2sgY2F1c2VzIEJpdEJha2UgdG8gaW52YWxpZGF0ZSB0aGUgdGFza3MgdGhhdCBmb2xsb3cgdGhlCi0gICAgICAgICAgICBjb21wbGV0ZWQgdGFzayBpbiB0aGUgYnVpbGQgc2VxdWVuY2UuCi0gICAgICAgICAgICBJbnZhbGlkYXRlZCB0YXNrcyByZWJ1aWxkIHRoZSBuZXh0IHRpbWUgeW91IHJ1biB0aGUgYnVpbGQgdXNpbmcKLSAgICAgICAgICAgIEJpdEJha2UuCisgICAgICAgICAgICBUaGUgc3RlcHMgaW4gdGhpcyBwcm9jZWR1cmUgc2hvdyB5b3UgaG93IHlvdSBjYW4gcGF0Y2ggdGhlCisgICAgICAgICAgICBrZXJuZWwgdXNpbmcgdGhlIGV4dGVuc2libGUgU0RLIGFuZCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQmVmb3JlIGF0dGVtcHRpbmcgdGhpcyBwcm9jZWR1cmUsIGJlIHN1cmUgeW91IGhhdmUgcGVyZm9ybWVkCisgICAgICAgICAgICAgICAgdGhlIHN0ZXBzIHRvIGdldCByZWFkeSBmb3IgdXBkYXRpbmcgdGhlIGtlcm5lbCBhcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS10by1kZXZlbG9wLXVzaW5nLWRldnRvb2wnPkdldHRpbmcgUmVhZHkgdG8gRGV2ZWxvcCBVc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyB5b3UgcmVhZCB0aGlzIHNlY3Rpb24sIGJlIHN1cmUgdG8gc3Vic3RpdHV0ZSB0aGUgbmFtZQotICAgICAgICAgICAgb2YgeW91ciBMaW51eCBrZXJuZWwgcmVjaXBlIGZvciB0aGUgdGVybQotICAgICAgICAgICAgImxpbnV4LXlvY3RvIi4KKyAgICAgICAgICAgIFBhdGNoaW5nIHRoZSBrZXJuZWwgaW52b2x2ZXMgY2hhbmdpbmcgb3IgYWRkaW5nIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICB0byBhbiBleGlzdGluZyBrZXJuZWwsIGNoYW5naW5nIG9yIGFkZGluZyByZWNpcGVzIHRvIHRoZSBrZXJuZWwKKyAgICAgICAgICAgIHRoYXQgYXJlIG5lZWRlZCB0byBzdXBwb3J0IHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzLCBvciBldmVuCisgICAgICAgICAgICBhbHRlcmluZyB0aGUgc291cmNlIGNvZGUgaXRzZWxmLgogICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3RpcC1kaXJ0eS1zdHJpbmcnPgotICAgICAgICAgICAgPHRpdGxlPiItZGlydHkiIFN0cmluZzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBleGFtcGxlIGNyZWF0ZXMgYSBzaW1wbGUgcGF0Y2ggYnkgYWRkaW5nIHNvbWUgUUVNVSBlbXVsYXRvcgorICAgICAgICAgICAgY29uc29sZSBvdXRwdXQgYXQgYm9vdCB0aW1lIHRocm91Z2ggPGZpbGVuYW1lPnByaW50azwvZmlsZW5hbWU+CisgICAgICAgICAgICBzdGF0ZW1lbnRzIGluIHRoZSBrZXJuZWwncyA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBzb3VyY2UKKyAgICAgICAgICAgIGNvZGUgZmlsZS4KKyAgICAgICAgICAgIEFwcGx5aW5nIHRoZSBwYXRjaCBhbmQgYm9vdGluZyB0aGUgbW9kaWZpZWQgaW1hZ2UgY2F1c2VzIHRoZSBhZGRlZAorICAgICAgICAgICAgbWVzc2FnZXMgdG8gYXBwZWFyIG9uIHRoZSBlbXVsYXRvcidzIGNvbnNvbGUuCisgICAgICAgICAgICBUaGUgZXhhbXBsZSBpcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgc2V0dXAgcHJvY2VkdXJlIGZvdW5kIGluCisgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LXRvLWRldmVsb3AtdXNpbmctZGV2dG9vbCc+R2V0dGluZyBSZWFkeSB0byBEZXZlbG9wIFVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgU2VjdGlvbi4KKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBPdXQgdGhlIEtlcm5lbCBTb3VyY2UgRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRmlyc3QgeW91IG11c3QgdXNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gY2hlY2tvdXQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBpbiBpdHMgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgaW4gdGhlIHRlcm1pbmFsIHNldCB1cCB0byBkbyB3b3JrCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzZXR0aW5nLXVwLXRoZS1lc2RrLXRlcm1pbmFsJz5zdGVwPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS10by1kZXZlbG9wLXVzaW5nLWRldnRvb2wnPkdldHRpbmcgUmVhZHkgdG8gRGV2ZWxvcCBVc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIHRvIGNoZWNrIG91dCB0aGUgY29kZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgbW9kaWZ5IGxpbnV4LXlvY3RvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGNoZWNrb3V0IG9wZXJhdGlvbiwgYSBidWcgZXhpc3RzIHRoYXQgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlIGVycm9ycyBzdWNoIGFzIHRoZSBmb2xsb3dpbmcgdG8gYXBwZWFyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFUlJPUjogVGFza2hhc2ggbWlzbWF0Y2ggMmM3OTM0MzhjMmQ5ZjhjMzY4MWZkNWY3YmM4MTllZmEgdmVyc3VzCisgICAgICAgICAgICBiZTNhODljZTdjNDcxNzg4ODBiYTdiZjYyOTNkNzQwNCBmb3IKKyAgICAgICAgICAgIC9wYXRoL3RvL2VzZGsvbGF5ZXJzL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiLmRvX3VucGFjaworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIG1lc3NhZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNvdXJjZSBjb2RlIGlzIGNvcnJlY3RseSBjaGVja2VkIG91dC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBTb3VyY2UgRmlsZXM8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gbWFrZSBzb21lIHNpbXBsZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hhbmdlIHRoZSB3b3JraW5nIGRpcmVjdG9yeTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBzdGVwLCB0aGUgb3V0cHV0IG5vdGVkIHdoZXJlIHlvdSBjYW4gZmluZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi9wb2t5X3Nkay93b3Jrc3BhY2Uvc291cmNlcy9saW51eC15b2N0bzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2UgdG8gd2hlcmUgdGhlIGtlcm5lbCBzb3VyY2UgY29kZSBpcyBiZWZvcmUgbWFraW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBlZGl0cyB0byB0aGUgPGZpbGVuYW1lPmNhbGlicmF0ZS5jPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5X3Nkay93b3Jrc3BhY2Uvc291cmNlcy9saW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgc291cmNlIGZpbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZSA8ZmlsZW5hbWU+aW5pdC9jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IGZpbGUgdG8gaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHZvaWQgY2FsaWJyYXRlX2RlbGF5KHZvaWQpCisgICAgIHsKKyAgICAgICAgIHVuc2lnbmVkIGxvbmcgbHBqOworICAgICAgICAgc3RhdGljIGJvb2wgcHJpbnRlZDsKKyAgICAgICAgIGludCB0aGlzX2NwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKIAotPCEtLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFSIC0gRGFycmVuIEhhcnQ6PC9lbXBoYXNpcz4gIFRoaXMgc2VjdGlvbgotICAgICAgICAgICAgICAgIG9yaWdpbmF0ZWQgZnJvbSB0aGUgb2xkIFlvY3RvIFByb2plY3QgS2VybmVsIEFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgIGFuZCBVc2UgTWFudWFsLgotICAgICAgICAgICAgICAgIEl0IHdhcyBkZWNpZGVkIHdlIG5lZWQgdG8gcHV0IGl0IGluIHRoaXMgc2VjdGlvbiBoZXJlLgotICAgICAgICAgICAgICAgIERhcnJlbiBuZWVkcyB0byBmaWd1cmUgb3V0IHdoZXJlIHdlIHdhbnQgaXQgYW5kIHdoYXQgcGFydAotICAgICAgICAgICAgICAgIG9mIGl0IHdlIHdhbnQgKGFsbCwgcmV2aXNpb24/Pz8pCi0gICAgICAgICAgICA8L3BhcmE+Ci0tLT4KKyAgICAgICAgIHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CisgICAgICAgICBwcmludGsoIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiIpOworICAgICAgICAgcHJpbnRrKCIqICAgICAgICBIRUxMTyBZT0NUTyBLRVJORUwgICAgICAgICAqXG4iKTsKKyAgICAgICAgIHByaW50aygiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIik7CisgICAgICAgICBwcmludGsoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOwogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJZiBrZXJuZWwgaW1hZ2VzIGFyZSBiZWluZyBidWlsdCB3aXRoICItZGlydHkiIG9uIHRoZQotICAgICAgICAgICAgICAgIGVuZCBvZiB0aGUgdmVyc2lvbiBzdHJpbmcsIHRoaXMgc2ltcGx5IG1lYW5zIHRoYXQKLSAgICAgICAgICAgICAgICBtb2RpZmljYXRpb25zIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5IGhhdmUgbm90IGJlZW4gY29tbWl0dGVkLgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgCWlmIChwZXJfY3B1KGNwdV9sb29wc19wZXJfamlmZnksIHRoaXNfY3B1KSkgeworICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIFVwZGF0ZWQgS2VybmVsIFNvdXJjZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUbyBidWlsZCB0aGUgdXBkYXRlZCBrZXJuZWwgc291cmNlLCB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYnVpbGQgbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgdGhlIEltYWdlIFdpdGggdGhlIE5ldyBLZXJuZWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgdG8gY3JlYXRlIGEgbmV3IGltYWdlIHRoYXQgaGFzIHRoZSBuZXcga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBpbWFnZSB5b3Ugb3JpZ2luYWxseSBjcmVhdGVkIHJlc3VsdGVkIGluIGEgV2ljCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCB5b3UgY2FuIHVzZSBhbiBhbHRlcm5hdGUgbWV0aG9kIHRvIGNyZWF0ZSB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIHRoZSB1cGRhdGVkIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlLCBzZWUgdGhlIHN0ZXBzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL0tlcm5lbERldmVsb3BtZW50V2l0aEVzZGsnPlRpcHNBbmRUcmlja3MvS2VybmVsRGV2ZWxvcG1lbnRXaXRoRXNkazwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBXaWtpIFBhZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlc3QgdGhlIE5ldyBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB5b3UgY2FuIHJ1biB0aGUgbmV3IGltYWdlIHVzaW5nIFFFTVUKKyAgICAgICAgICAgICAgICAgICAgdG8gdmVyaWZ5IHlvdXIgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb290IHRoZSBpbWFnZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb3QgdGhlIG1vZGlmaWVkIGltYWdlIGluIHRoZSBRRU1VIGVtdWxhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhpcyBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IHFlbXV4ODYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlZlcmlmeSB0aGUgY2hhbmdlczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZyBpbnRvIHRoZSBtYWNoaW5lIHVzaW5nIDxmaWxlbmFtZT5yb290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG5vIHBhc3N3b3JkIGFuZCB0aGVuIHVzZSB0aGUgZm9sbG93aW5nIHNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBzY3JvbGwgdGhyb3VnaCB0aGUgY29uc29sZSdzIGJvb3Qgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBkbWVzZyB8IGxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBzZWUgdGhlIHJlc3VsdHMgb2YgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wcmludGs8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgcGFydCBvZiB0aGUgb3V0cHV0IHdoZW4geW91IHNjcm9sbCBkb3duIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUgd2luZG93LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdGFnZSBhbmQgY29tbWl0IHlvdXIgY2hhbmdlczwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBXaXRoaW4geW91ciBlU0RLIHRlcm1pbmFsLCBjaGFuZ2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSB0bworICAgICAgICAgICAgICAgICAgICB3aGVyZSB5b3UgbW9kaWZpZWQgdGhlIDxmaWxlbmFtZT5jYWxpYnJhdGUuYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYW5kIHVzZSB0aGVzZSBHaXQgY29tbWFuZHMgdG8gc3RhZ2UgYW5kIGNvbW1pdCB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3lfc2RrL3dvcmtzcGFjZS9zb3VyY2VzL2xpbnV4LXlvY3RvCiAgICAgICQgZ2l0IHN0YXR1cwotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgJCBnaXQgYWRkIGluaXQvY2FsaWJyYXRlLmMKKyAgICAgJCBnaXQgY29tbWl0IC1tICJjYWxpYnJhdGU6IEFkZCBwcmludGsgZXhhbXBsZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHBvcnQgdGhlIFBhdGNoZXMgYW5kIENyZWF0ZSBhbiBBcHBlbmQgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUbyBleHBvcnQgeW91ciBjb21taXRzIGFzIHBhdGNoZXMgYW5kIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlLCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGluIHRoZSB0ZXJtaW5hbCB1c2VkIHRvIHdvcmsgd2l0aCB0aGUgZXh0ZW5zaWJsZQorICAgICAgICAgICAgICAgICAgICBTREsuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSB1c2VzIHRoZSBwcmV2aW91c2x5IGVzdGFibGlzaGVkIGxheWVyIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgU3RlcCAzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctcmVhZHktdG8tZGV2ZWxvcC11c2luZy1kZXZ0b29sJz5HZXR0aW5nIFJlYWR5IHRvIERldmVsb3AgVXNpbmcgZGV2dG9vbDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIHRoaXMgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgZmluaXNoIGxpbnV4LXlvY3RvIH4vbWV0YS1teWxheWVyCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgY29tbWFuZCBmaW5pc2hlcywgdGhlIHBhdGNoZXMgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBhcmUgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vbWV0YS1teWxheWVyL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2UgV2l0aCBZb3VyIE1vZGlmaWVkIEtlcm5lbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG5vdyBidWlsZCBhbiBpbWFnZSB0aGF0IGluY2x1ZGVzIHlvdXIga2VybmVsCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20geW91cgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGluIHRoZSB0ZXJtaW5hbCBzZXQgdXAgdG8gcnVuIEJpdEJha2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kvYnVpbGQKKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJ1c2luZy10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQtdG8tcGF0Y2gtdGhlLWtlcm5lbCI+CisgICAgICAgIDx0aXRsZT5Vc2luZyBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQgdG8gUGF0Y2ggdGhlIEtlcm5lbDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgc3RlcHMgaW4gdGhpcyBwcm9jZWR1cmUgc2hvdyB5b3UgaG93IHlvdSBjYW4gcGF0Y2ggdGhlCisgICAgICAgICAgICBrZXJuZWwgdXNpbmcgdHJhZGl0aW9uYWwga2VybmVsIGRldmVsb3BtZW50IChpLmUuIG5vdCB1c2luZworICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBhbmQgdGhlIGV4dGVuc2libGUgU0RLIGFzCisgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbikuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBCZWZvcmUgYXR0ZW1wdGluZyB0aGlzIHByb2NlZHVyZSwgYmUgc3VyZSB5b3UgaGF2ZSBwZXJmb3JtZWQKKyAgICAgICAgICAgICAgICB0aGUgc3RlcHMgdG8gZ2V0IHJlYWR5IGZvciB1cGRhdGluZyB0aGUga2VybmVsIGFzIGRlc2NyaWJlZAorICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LWZvci10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQnPkdldHRpbmcgUmVhZHkgZm9yIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUGF0Y2hpbmcgdGhlIGtlcm5lbCBpbnZvbHZlcyBjaGFuZ2luZyBvciBhZGRpbmcgY29uZmlndXJhdGlvbnMKKyAgICAgICAgICAgIHRvIGFuIGV4aXN0aW5nIGtlcm5lbCwgY2hhbmdpbmcgb3IgYWRkaW5nIHJlY2lwZXMgdG8gdGhlIGtlcm5lbAorICAgICAgICAgICAgdGhhdCBhcmUgbmVlZGVkIHRvIHN1cHBvcnQgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMsIG9yIGV2ZW4KKyAgICAgICAgICAgIGFsdGVyaW5nIHRoZSBzb3VyY2UgY29kZSBpdHNlbGYuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBleGFtcGxlIGluIHRoaXMgc2VjdGlvbiBjcmVhdGVzIGEgc2ltcGxlIHBhdGNoIGJ5IGFkZGluZyBzb21lCisgICAgICAgICAgICBRRU1VIGVtdWxhdG9yIGNvbnNvbGUgb3V0cHV0IGF0IGJvb3QgdGltZSB0aHJvdWdoCisgICAgICAgICAgICA8ZmlsZW5hbWU+cHJpbnRrPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpbiB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgIDxmaWxlbmFtZT5jYWxpYnJhdGUuYzwvZmlsZW5hbWU+IHNvdXJjZSBjb2RlIGZpbGUuCisgICAgICAgICAgICBBcHBseWluZyB0aGUgcGF0Y2ggYW5kIGJvb3RpbmcgdGhlIG1vZGlmaWVkIGltYWdlIGNhdXNlcyB0aGUgYWRkZWQKKyAgICAgICAgICAgIG1lc3NhZ2VzIHRvIGFwcGVhciBvbiB0aGUgZW11bGF0b3IncyBjb25zb2xlLgorICAgICAgICAgICAgVGhlIGV4YW1wbGUgaXMgYSBjb250aW51YXRpb24gb2YgdGhlIHNldHVwIHByb2NlZHVyZSBmb3VuZCBpbgorICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS1mb3ItdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50Jz5HZXR0aW5nIFJlYWR5IGZvciBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQ8L2xpbms+IgorICAgICAgICAgICAgU2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWx0aG91Z2ggdGhpcyBleGFtcGxlIHVzZXMgR2l0IGFuZCBzaGVsbCBjb21tYW5kcyB0byBnZW5lcmF0ZSB0aGUKKyAgICAgICAgICAgIHBhdGNoLCB5b3UgY291bGQgdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgICAgICBmb3VuZCBpbiB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICB1bmRlciA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IHRvIGFkZCBhbmQgbWFuYWdlIGtlcm5lbAorICAgICAgICAgICAgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIFNlZSB0aGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I21hbmFnaW5nLWtlcm5lbC1wYXRjaGVzLWFuZC1jb25maWctaXRlbXMtd2l0aC15b2N0by1rZXJuZWwnPk1hbmFnaW5nIGtlcm5lbCBQYXRjaGVzIGFuZCBDb25maWcgSXRlbXMgd2l0aCB5b2N0by1rZXJuZWw8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKQorICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVkaXQgdGhlIFNvdXJjZSBGaWxlczwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByaW9yIHRvIHRoaXMgc3RlcCwgeW91IHNob3VsZCBoYXZlIHVzZWQgR2l0IHRvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIHJlcG9zaXRvcnkgZm9yIHlvdXIga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3UgY3JlYXRlZCB0aGUgcmVwb3NpdG9yeSBhcyBkaXJlY3RlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dldHRpbmctcmVhZHktZm9yLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudCc+R2V0dGluZyBSZWFkeSBmb3IgVHJhZGl0aW9uYWwgS2VybmVsIERldmVsb3BtZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gZWRpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNhbGlicmF0ZS5jPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGFuZ2UgdGhlIHdvcmtpbmcgZGlyZWN0b3J5PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gbG9jYXRlIHRoZSBzb3VyY2UgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgY29weSBvZiB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZSB0byB3aGVyZSB0aGUga2VybmVsIHNvdXJjZSBjb2RlIGlzIGJlZm9yZSBtYWtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGVkaXRzIHRvIHRoZSA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L2xpbnV4LXlvY3RvLTQuMTIvaW5pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgc291cmNlIGZpbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZSA8ZmlsZW5hbWU+Y2FsaWJyYXRlLmM8L2ZpbGVuYW1lPiBmaWxlIHRvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB2b2lkIGNhbGlicmF0ZV9kZWxheSh2b2lkKQorICAgICB7CisgICAgICAgICB1bnNpZ25lZCBsb25nIGxwajsKKyAgICAgICAgIHN0YXRpYyBib29sIHByaW50ZWQ7CisgICAgICAgICBpbnQgdGhpc19jcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisKKyAgICAgICAgIHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CisgICAgICAgICBwcmludGsoIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiIpOworICAgICAgICAgcHJpbnRrKCIqICAgICAgICBIRUxMTyBZT0NUTyBLRVJORUwgICAgICAgICAqXG4iKTsKKyAgICAgICAgIHByaW50aygiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIik7CisgICAgICAgICBwcmludGsoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOworCisgICAgIAlpZiAocGVyX2NwdShjcHVfbG9vcHNfcGVyX2ppZmZ5LCB0aGlzX2NwdSkpIHsKKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YWdlIGFuZCBDb21taXQgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSBzdGFuZGFyZCBHaXQgY29tbWFuZHMgdG8gc3RhZ2UgYW5kIGNvbW1pdCB0aGUgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICB5b3UganVzdCBtYWRlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGFkZCBjYWxpYnJhdGUuYworICAgICAkIGdpdCBjb21taXQgLW0gImNhbGlicmF0ZS5jIC0gQWRkZWQgc29tZSBwcmludGsgc3RhdGVtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHN0YWdlIGFuZCBjb21taXQgeW91ciBjaGFuZ2VzLCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgIEJ1aWxkIFN5c3RlbSB3aWxsIG5vdCBwaWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGRhdGUgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IEZpbGUKKyAgICAgICAgICAgICAgICAgICAgdG8gUG9pbnQgdG8gWW91ciBTb3VyY2UgRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmeWluZyB0byB1c2UgImtlcm5lbC1tb2R1bGVzIiBhbmQgdGhlICJxZW11eDg2IgorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLCBpdCBtdXN0IGFsc28gcG9pbnQgdG8gdGhlIHVwZGF0ZWQga2VybmVsIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgQWRkCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZC9jb25mCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSV9wbi1saW51eC15b2N0byA9ICJnaXQ6Ly8vPHJlcGxhY2VhYmxlPnBhdGgtdG88L3JlcGxhY2VhYmxlPi9saW51eC15b2N0by00LjEyO3Byb3RvY29sPWZpbGU7bmFtZT1tYWNoaW5lO2JyYW5jaD1zdGFuZGFyZC9iYXNlOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0Oi8vLzxyZXBsYWNlYWJsZT5wYXRoLXRvPC9yZXBsYWNlYWJsZT4veW9jdG8ta2VybmVsLWNhY2hlO3Byb3RvY29sPWZpbGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKyAgICAgU1JDUkVWX21ldGFfcWVtdXg4NiA9ICIke0FVVE9SRVZ9IgorICAgICBTUkNSRVZfbWFjaGluZV9xZW11eDg2ID0gIiR7QVVUT1JFVn0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHJlcGxhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5wYXRoLXRvPC9yZXBsYWNlYWJsZT4gd2l0aCB0aGUgcGF0aG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIHlvdSBtdXN0IGJlIHN1cmUgdG8gc3BlY2lmeSB0aGUgY29ycmVjdCBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtYWNoaW5lIHR5cGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGJyYW5jaCBpcworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN0YW5kYXJkL2Jhc2U8L2ZpbGVuYW1lPiBhbmQgdGhlIG1hY2hpbmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGUgc291cmNlIG1vZGlmaWVkLCB5b3VyIGNoYW5nZXMgc3RhZ2VkIGFuZAorICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQsIGFuZCB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHBvaW50aW5nIHRvIHRoZSBrZXJuZWwgZmlsZXMsIHlvdSBjYW4gbm93IHVzZSBCaXRCYWtlIHRvCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHRoZSBpbWFnZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdCB0aGUgaW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgQm9vdCB0aGUgbW9kaWZpZWQgaW1hZ2UgaW4gdGhlIFFFTVUgZW11bGF0b3IKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhpcyBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHByb21wdGVkIHRvIGxvZ2luIHRvIHRoZSBRRU1VIGNvbnNvbGUsIHVzZSAicm9vdCIKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBubyBwYXNzd29yZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vcG9reS9idWlsZAorICAgICAkIHJ1bnFlbXUgcWVtdXg4NgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvb2sgZm9yIFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBcyBRRU1VIGJvb3RlZCwgeW91IG1pZ2h0IGhhdmUgc2VlbiB5b3VyIGNoYW5nZXMgcmFwaWRseQorICAgICAgICAgICAgICAgICAgICBzY3JvbGwgYnkuCisgICAgICAgICAgICAgICAgICAgIElmIG5vdCwgdXNlIHRoZXNlIGNvbW1hbmRzIHRvIHNlZSB5b3VyIGNoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBkbWVzZyB8IGxlc3MKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHNlZSB0aGUgcmVzdWx0cyBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wcmludGs8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIG91dHB1dCB3aGVuIHlvdSBzY3JvbGwgZG93biB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZSB3aW5kb3cuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdlbmVyYXRlIHRoZSBQYXRjaCBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBzdXJlIHRoYXQgeW91ciBwYXRjaCB3b3JrcyBjb3JyZWN0bHksIHlvdQorICAgICAgICAgICAgICAgICAgICBjYW4gZ2VuZXJhdGUgYSA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vbGludXgteW9jdG8tNC4xMi9pbml0CisgICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtMQorICAgICAwMDAxLWNhbGlicmF0ZS5jLUFkZGVkLXNvbWUtcHJpbnRrLXN0YXRlbWVudHMucGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Nb3ZlIHRoZSBQYXRjaCBGaWxlIHRvIFlvdXIgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHN1YnNlcXVlbnQgYnVpbGRzIHRvIHBpY2sgdXAgcGF0Y2hlcywgeW91CisgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gbW92ZSB0aGUgcGF0Y2ggZmlsZSB5b3UgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgc3RlcCB0byB5b3VyIGxheWVyIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGxheWVyIGNyZWF0ZWQgZWFybGllciBpcyBsb2NhdGVkCisgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgaG9tZSBkaXJlY3RvcnkgYXMgPGZpbGVuYW1lPm1ldGEtbXlsYXllcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBsYXllciB3YXMgY3JlYXRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWNyZWF0ZTwvZmlsZW5hbWU+IHNjcmlwdCwgbm8gYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHkgd2FzIGNyZWF0ZWQgdG8gc3VwcG9ydCBwYXRjaGVzLgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgbW92aW5nIHRoZSBwYXRjaCBmaWxlLCB5b3UgbmVlZCB0byBhZGQgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgdG8geW91ciBsYXllciB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9tZXRhLW15bGF5ZXIKKyAgICAgJCBta2RpciByZWNpcGVzLWtlcm5lbAorICAgICAkIG1rZGlyIHJlY2lwZXMta2VybmVsL2xpbnV4CisgICAgICQgbWtkaXIgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGNyZWF0ZWQgdGhpcyBoaWVyYXJjaHkgaW4geW91ciBsYXllciwgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICBtb3ZlIHRoZSBwYXRjaCBmaWxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG12IH4vbGludXgteW9jdG8tNC4xMi9pbml0LzAwMDEtY2FsaWJyYXRlLmMtQWRkZWQtc29tZS1wcmludGstc3RhdGVtZW50cy5wYXRjaCB+L21ldGEtbXlsYXllci9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgQXBwZW5kIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgeW91IG5lZWQgdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgIGluc2VydCBzdGF0ZW1lbnRzIHRoYXQgYWxsb3cgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gZmluZCB0aGUgcGF0Y2guCisgICAgICAgICAgICAgICAgICAgIFRoZSBhcHBlbmQgZmlsZSBuZWVkcyB0byBiZSBpbiB5b3VyIGxheWVyJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBpdCBtdXN0IGJlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyLmJiYXBwZW5kPC9maWxlbmFtZT4gYW5kIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb250ZW50czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisKKyAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly8wMDAxLWNhbGlicmF0ZS5jLUFkZGVkLXNvbWUtcHJpbnRrLXN0YXRlbWVudHMucGF0Y2giCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7dmFyLUZJTEVTRVhUUkFQQVRIUyc+PGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7dmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIGVuYWJsZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBmaW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBwYXRjaCBmaWxlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhcHBlbmQgZmlsZXMgYW5kIHBhdGNoZXMsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXRoZS1hcHBlbmQtZmlsZSc+Q3JlYXRpbmcgdGhlIEFwcGVuZCBGaWxlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdhcHBseWluZy1wYXRjaGVzJz5BcHBseWluZyBQYXRjaGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXIiPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJ1aWxkIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgYWdhaW4gYW5kIHNlZSB0aGUgZWZmZWN0cyBvZiB5b3VyIHBhdGNoLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBlc3NlbnRpYWxseSBlbGltaW5hdGUgdGhlIHRlbXBvcmFyeSBzb3VyY2UgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkIGluIDxmaWxlbmFtZT5wb2t5L2J1aWxkL3RtcC93b3JrLy4uLjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVzaWR1YWwgZWZmZWN0cyBvZiB0aGUgYnVpbGQgYnkgZW50ZXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZSAtYyBjbGVhbmFsbCB5b2N0by1saW51eAorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsIC1jIGNsZWFuYWxsCisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgJCBydW5xZW11IHFlbXV4ODYKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJpbmctdGhlLWtlcm5lbCc+CisgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgS2VybmVsPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBjb25zaXN0cyBvZiBtYWtpbmcgc3VyZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBoYXMgYWxsIHRoZSByaWdodCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgaW4gaXQgZm9yIHRoZSBpbWFnZSB5b3UgYXJlIGJ1aWxkaW5nLgorICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbCBhbmQKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIHRvIG1ha2Ugc3VyZSB5b3VyCisgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgaXMganVzdCBob3cgeW91IG5lZWQgaXQuCisgICAgICAgICAgICBZb3UgY2FuIGFsc28gc2F2ZSBrbm93biBjb25maWd1cmF0aW9ucyBpbiBhCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0aGF0IHRoZSBidWlsZCBzeXN0ZW0gY2FuIHVzZQorICAgICAgICAgICAgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byB1c2UgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIGNyZWF0ZSBhbmQgdXNlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBhbmQgaG93IHRvIGludGVyYWN0aXZlbHkKKyAgICAgICAgICAgIG1vZGlmeSB5b3VyIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICBsZWFuZXN0IGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgcG9zc2libGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2hhbmdpbmctdGhlLWNvbmZpZ3VyYXRpb24nPkNoYW5naW5nIHRoZSBDb25maWd1cmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctbWVudWNvbmZpZyc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcmbmJzcDsmbmJzcDs8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGVhc2llc3Qgd2F5IHRvIGRlZmluZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgaXMgdG8gc2V0CisgICAgICAgICAgICAgICAgdGhlbSB0aHJvdWdoIHRoZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHRvb2wuCisgICAgICAgICAgICAgICAgVGhpcyB0b29sIHByb3ZpZGVzIGFuIGludGVyYWN0aXZlIG1ldGhvZCB3aXRoIHdoaWNoCisgICAgICAgICAgICAgICAgdG8gc2V0IGtlcm5lbCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LCBzZWUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01lbnVjb25maWcnPjwvdWxpbms+LgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgYWJvdmUgR2l0IGNvbW1hbmQgdG8gcmVwb3J0IG1vZGlmaWVkLAotICAgICAgICAgICAgICAgIHJlbW92ZWQsIG9yIGFkZGVkIGZpbGVzLgotICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgY29tbWl0IHRob3NlIGNoYW5nZXMgdG8gdGhlIHRyZWUgcmVnYXJkbGVzcyBvZgotICAgICAgICAgICAgICAgIHdoZXRoZXIgdGhleSB3aWxsIGJlIHNhdmVkLCBleHBvcnRlZCwgb3IgdXNlZC4KLSAgICAgICAgICAgICAgICBPbmNlIHlvdSBjb21taXQgdGhlIGNoYW5nZXMsIHlvdSBuZWVkIHRvIHJlYnVpbGQgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gZm9yY2UgYSBwaWNrdXAgYW5kIGNvbW1pdCBvZiBhbGwgc3VjaCBwZW5kaW5nIGNoYW5nZXMsCi0gICAgICAgICAgICAgICAgZW50ZXIgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICBUbyB1c2UgdGhlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbCBpbiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LCB5b3UgbXVzdCBsYXVuY2ggaXQgdXNpbmcKKyAgICAgICAgICAgICAgICBCaXRCYWtlLgorICAgICAgICAgICAgICAgIFRodXMsIHRoZSBlbnZpcm9ubWVudCBtdXN0IGJlIHNldCB1cCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBzY3JpcHQgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBZb3UgbXVzdCBhbHNvIGJlIHN1cmUgb2YgdGhlIHN0YXRlIG9mIHlvdXIgYnVpbGQncworICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgaW5pdGlhbGl6ZSB0aGUgQml0QmFrZSBlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICAgICBydW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWtlcm5lbF9jb25maWdtZSc+PGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdtZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrLCBhbmQgbGF1bmNoIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlc2UgY29tbWFuZHMgYXNzdW1lIHRoZSBTb3VyY2UgRGlyZWN0b3J5J3MgdG9wLWxldmVsIGZvbGRlcgorICAgICAgICAgICAgICAgIGlzIDxmaWxlbmFtZT5+L3Bva3k8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGFkZCAuCi0gICAgICQgZ2l0IGNvbW1pdCAtcyAtYSAtbSAiZ2V0dGluZyByaWQgb2YgLWRpcnR5IgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgTmV4dCwgcmVidWlsZCB0aGUga2VybmVsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2dlbmVyYXRpbmctY29uZmlndXJhdGlvbi1maWxlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+R2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBtYW5pcHVsYXRlIHRoZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIGEgbGludXgteW9jdG8gcmVjaXBlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiBjb21tYW5kIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIHBva3kKKyAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKyAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGtlcm5lbF9jb25maWdtZSAtZgogICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMgbWVudWNvbmZpZwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgc3RhcnRzIHRoZSBMaW51eCBrZXJuZWwgY29uZmlndXJhdGlvbiB0b29sLAotICAgICAgICAgICAgICAgIHdoaWNoIGFsbG93cyB5b3UgdG8gcHJlcGFyZSBhIG5ldwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBmb3IgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgIFdoZW4geW91IGV4aXQgdGhlIHRvb2wsIGJlIHN1cmUgdG8gc2F2ZSB5b3VyIGNoYW5nZXMKLSAgICAgICAgICAgICAgICBhdCB0aGUgcHJvbXB0LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpcwotICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIHdoaWNoIGV4cGFuZHMgdG8KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+PGZpbGVuYW1lPi9saW51eC08L2ZpbGVuYW1lPjxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS0kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX0tFUk5FTF9UWVBFJz48ZmlsZW5hbWU+TElOVVhfS0VSTkVMX1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0tYnVpbGQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgZW50aXJlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhcyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NoYW5naW5nLXRoZS1jb25maWd1cmF0aW9uJz5DaGFuZ2luZyB0aGUgQ29uZmlndXJhdGlvbjwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwKLSAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLW1lbnVjb25maWcnPlVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICBPbmNlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gY29tZXMgdXAsIGl0cyBzdGFuZGFyZAorICAgICAgICAgICAgICAgIGludGVyZmFjZSBhbGxvd3MgeW91IHRvIGludGVyYWN0aXZlbHkgZXhhbWluZSBhbmQgY29uZmlndXJlCisgICAgICAgICAgICAgICAgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgICAgIEFmdGVyIG1ha2luZyB5b3VyIGNoYW5nZXMsIHNpbXBseSBleGl0IHRoZSB0b29sIGFuZCBzYXZlIHlvdXIKKyAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIGNyZWF0ZSBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUuCiAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGV0ZXJtaW5lIHdoYXQgYSB2YXJpYWJsZSBleHBhbmRzIHRvIGJ5IGxvb2tpbmcKLSAgICAgICAgICAgICAgICAgICAgYXQgdGhlIG91dHB1dCBvZiB0aGUgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSAtZSB2aXJ0dWFsL2tlcm5lbAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFNlYXJjaCB0aGUgb3V0cHV0IGZvciB0aGUgdmFyaWFibGUgaW4gd2hpY2ggeW91IGFyZQotICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkIHRvIHNlZSBleGFjdGx5IGhvdyBpdCBpcyBleHBhbmRlZCBhbmQgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIGVudGlyZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgYXMgdGhlIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGVzLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWFuLWluLXRyZWUtZGVmY29uZmlnLWZpbGUnPlVzaW5nIGFuIEluLVRyZWUgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IEZpbGU8L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtZGVmY29uZmlnLWZpbGUnPkNyZWF0aW5nIGEgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IEZpbGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEEgYmV0dGVyIG1ldGhvZCBpcyB0byBjcmVhdGUgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIENvbnNpZGVyIGFuIGV4YW1wbGUgdGhhdCBjb25maWd1cmVzIHRoZSAiQ09ORklHX1NNUCIgc2V0dGluZworICAgICAgICAgICAgICAgIGZvciB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHJlY29nbml6ZXMgdGhpcyBrZXJuZWwgYXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4gdGhyb3VnaCBNZXRhZGF0YSAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJFRkVSUkVEX1ZFUlNJT04nPjxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+X2xpbnV4LXlvY3RvID89ICIxMi40JSI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIE9uY2UgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiBsYXVuY2hlcywgdXNlIHRoZQorICAgICAgICAgICAgICAgIGludGVyZmFjZSB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBzZWxlY3Rpb25zIHRvIGZpbmQgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQuCisgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgeW91IGRlc2VsZWN0ICJDT05GSUdfU01QIiBieSBjbGVhcmluZyB0aGUKKyAgICAgICAgICAgICAgICAiU3ltbWV0cmljIE11bHRpLVByb2Nlc3NpbmcgU3VwcG9ydCIgb3B0aW9uLgorICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBpbnRlcmZhY2UsIHlvdSBjYW4gZmluZCB0aGUgb3B0aW9uIHVuZGVyCisgICAgICAgICAgICAgICAgIlByb2Nlc3NvciBUeXBlIGFuZCBGZWF0dXJlcyIuCisgICAgICAgICAgICAgICAgVG8gZGVzZWxlY3QgIkNPTkZJR19TTVAiLCB1c2UgdGhlIGFycm93IGtleXMgdG8KKyAgICAgICAgICAgICAgICBoaWdobGlnaHQgIlN5bW1ldHJpYyBNdWx0aS1Qcm9jZXNzaW5nIFN1cHBvcnQiIGFuZCBlbnRlciAiTiIKKyAgICAgICAgICAgICAgICB0byBjbGVhciB0aGUgYXN0ZXJpc2suCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgYXJlIGZpbmlzaGVkLCBleGl0IG91dCBhbmQgc2F2ZSB0aGUgY2hhbmdlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTYXZpbmcgdGhlIHNlbGVjdGlvbnMgdXBkYXRlcyB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBmaWxlIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0bworICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSB0aGUga2VybmVsIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFuZCBleGFtaW5lIHRoaXMgZmlsZSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC93b3JrLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgIGFyZWEgd2hlcmUgdGhlIHNwZWNpZmljIGtlcm5lbCBpcyBidWlsdC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHdlcmUgYnVpbGRpbmcgYSBMaW51eCBZb2N0byBrZXJuZWwgYmFzZWQKKyAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTI8L2ZpbGVuYW1lPiBrZXJuZWwgYW5kIHlvdQorICAgICAgICAgICAgICAgIHdlcmUgYnVpbGRpbmcgYSBRRU1VIGltYWdlIHRhcmdldGVkIGZvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT54ODY8L2ZpbGVuYW1lPiBhcmNoaXRlY3R1cmUsIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB3b3VsZCBiZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2xpbnV4LXlvY3RvLzQuMTIuMTIrZ2l0QVVUT0lOQytlZGE0ZDE4Li4uCisgICAgIC4uLjk2Ny1yMC9saW51eC1xZW11eDg2LXN0YW5kYXJkLWJ1aWxkLy5jb25maWcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGRpcmVjdG9yeSBpcyBhcnRpZmljaWFsbHkgc3BsaXQgYW5kCisgICAgICAgICAgICAgICAgICAgIG1hbnkgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGFjdHVhbCBmaWxlbmFtZSBhcmUgb21pdHRlZAorICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUuCisgICAgICAgICAgICAgICAgICAgIEFsc28sIGRlcGVuZGluZyBvbiB0aGUga2VybmVsIHlvdSBhcmUgdXNpbmcsIHRoZSBleGFjdAorICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSBtaWdodCBkaWZmZXIuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgeW91IGNhbiBzZWUgdGhlCisgICAgICAgICAgICAgICAga2VybmVsIHNldHRpbmdzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGVudHJ5IHNob3dzIHRoYXQgc3ltbWV0cmljCisgICAgICAgICAgICAgICAgbXVsdGktcHJvY2Vzc29yIHN1cHBvcnQgaXMgbm90IHNldDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgQ09ORklHX1NNUCBpcyBub3Qgc2V0CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGdvb2QgbWV0aG9kIHRvIGlzb2xhdGUgY2hhbmdlZCBjb25maWd1cmF0aW9ucyBpcyB0byB1c2UgYQorICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9uIG9mIHRoZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IHRvb2wgYW5kCisgICAgICAgICAgICAgICAgc2ltcGxlIHNoZWxsIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgIEJlZm9yZSBjaGFuZ2luZyBjb25maWd1cmF0aW9ucyB3aXRoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiwgY29weSB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGFuZCByZW5hbWUgaXQgdG8gc29tZXRoaW5nIGVsc2UsCisgICAgICAgICAgICAgICAgdXNlIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG8gbWFrZSBhcyBtYW55IGNoYW5nZXMgYXMKKyAgICAgICAgICAgICAgICB5b3Ugd2FudCBhbmQgc2F2ZSB0aGVtLCB0aGVuIGNvbXBhcmUgdGhlIHJlbmFtZWQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgYWdhaW5zdCB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSByZXN1bHRpbmcgZGlmZmVyZW5jZXMgYXMgeW91ciBiYXNlIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzIHRvIHBlcm1hbmVudGx5IHNhdmUgaW4geW91ciBrZXJuZWwKKyAgICAgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBtYWtlIGEgY29weSBvZiB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCBkbyBub3QganVzdCByZW5hbWUgaXQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gbmVlZHMgYW4gZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGZyb20gd2hpY2ggdG8gd29yay4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1kZWZjb25maWctZmlsZSc+CisgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYSZuYnNwOyZuYnNwOzxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBGaWxlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZSBpcyBzaW1wbHkgYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gcmVuYW1lZCB0byAiZGVmY29uZmlnIi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgdG8gcmV0YWluIGEga25vd24gc2V0IG9mIGtlcm5lbCBjb25maWd1cmF0aW9ucyBmcm9tIHdoaWNoIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIGRyYXcgdG8gY3JlYXRlIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgT3V0LW9mLXRoZS1ib3gsIHRoZSBZb2N0byBQcm9qZWN0IG5ldmVyIHNoaXBzIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHVzZWQgdG8gY29uZmlndXJlIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBjcmVhdGUgYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4sIHN0YXJ0IHdpdGggYQorICAgICAgICAgICAgICAgIGNvbXBsZXRlLCB3b3JraW5nIExpbnV4IGtlcm5lbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICBDb3B5IHRoYXQgZmlsZSB0byB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW4geW91ciBsYXllcidzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4gZGlyZWN0b3J5LCBhbmQgcmVuYW1lCisgICAgICAgICAgICAgICAgdGhlIGNvcGllZCBmaWxlIHRvICJkZWZjb25maWciIChlLmcuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vbWV0YS1teWxheWVyL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvL2RlZmNvbmZpZzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBUaGVuLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byB0aGUgbGludXgteW9jdG8KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBpbiB5b3VyIGxheWVyOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZGVmY29uZmlnIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGVsbHMgdGhlIGJ1aWxkIHN5c3RlbSBob3cgdG8gc2VhcmNoIGZvciB0aGUgZmlsZSwgd2hpbGUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTRVhUUkFQQVRIUyc+PGZpbGVuYW1lPkZJTEVTRVhUUkFQQVRIUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBleHRlbmRzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU1BBVEgnPjxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgKHNlYXJjaCBkaXJlY3RvcmllcykgdG8gaW5jbHVkZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQTn08L2ZpbGVuYW1lPiBkaXJlY3RvcnkgeW91IGNyZWF0ZWQgdG8gaG9sZCB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGUgY29uZmlndXJhdGlvbnMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYmVmb3JlIGFwcGx5aW5nIGFueQorICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwga2VybmVsIGNvbmZpZ3VyYXRpb24gaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgaW4gdGhlIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCBhbnkgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgeW91IHByb3ZpZGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHJlYWxpemUgdGhhdCBpZiB5b3UgaGF2ZSBhbnkgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMsIHRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGVzZSBvbiB0b3Agb2YgYW5kCisgICAgICAgICAgICAgICAgICAgIGFmdGVyIGFwcGx5aW5nIHRoZSBleGlzdGluZyBkZWZjb25maWcgZmlsZSBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGtlcm5lbCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctY29uZmlnLWZyYWdtZW50cyc+CisgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgQ29uZmlndXJhdGlvbiBGcmFnbWVudHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZyYWdtZW50cyBhcmUgc2ltcGx5IGtlcm5lbCBvcHRpb25zIHRoYXQKKyAgICAgICAgICAgICAgICBhcHBlYXIgaW4gYSBmaWxlIHBsYWNlZCB3aGVyZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGNhbiBmaW5kIGFuZCBhcHBseSB0aGVtLgorICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyBjb25maWd1cmF0aW9uIGZyYWdtZW50cyBhZnRlcgorICAgICAgICAgICAgICAgIGFwcGx5aW5nIGNvbmZpZ3VyYXRpb25zIGZyb20gYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgIFRodXMsIHRoZSBmaW5hbCBrZXJuZWwgY29uZmlndXJhdGlvbiBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGluIHRoZSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGFuZCB0aGVuIGFueSBjb25maWd1cmF0aW9uIGZyYWdtZW50cyB5b3UgcHJvdmlkZS4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgZnJhZ21lbnRzIG9uIHRvcCBvZiBhbmQKKyAgICAgICAgICAgICAgICBhZnRlciBhcHBseWluZyB0aGUgZXhpc3RpbmcgZGVmY29uZmlnIGZpbGUgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFN5bnRhY3RpY2FsbHksIHRoZSBjb25maWd1cmF0aW9uIHN0YXRlbWVudCBpcyBpZGVudGljYWwgdG8KKyAgICAgICAgICAgICAgICB3aGF0IHdvdWxkIGFwcGVhciBpbiB0aGUgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgICAgIHdoaWNoIGlzIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgaXMgbG9jYXRlZCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICBleGFtcGxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctbWVudWNvbmZpZyc+VXNpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyBzaW1wbGUgdG8gY3JlYXRlIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudC4KKyAgICAgICAgICAgICAgICBPbmUgbWV0aG9kIGlzIHRvIHVzZSBzaGVsbCBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaXNzdWluZyB0aGUgZm9sbG93aW5nIGZyb20gdGhlIHNoZWxsIGNyZWF0ZXMgYQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5teV9zbXAuY2ZnPC9maWxlbmFtZT4gdGhhdCBlbmFibGVzIG11bHRpLXByb2Nlc3NvcgorICAgICAgICAgICAgICAgIHN1cHBvcnQgd2l0aGluIHRoZSBrZXJuZWw6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGVjaG8gIkNPTkZJR19TTVA9eSIgPj4gbXlfc21wLmNmZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQWxsIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXMgbXVzdCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY2ZnPC9maWxlbmFtZT4gZXh0ZW5zaW9uIGluIG9yZGVyIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byByZWNvZ25pemUgdGhlbSBhcyBhCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyIG1ldGhvZCBpcyB0byBjcmVhdGUgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIGNvbmZpZ3VyYXRpb24gZmlsZXM6IG9uZSBwcmV2aW91c2x5CiAgICAgICAgICAgICAgICAgY3JlYXRlZCBhbmQgc2F2ZWQsIGFuZCBvbmUgZnJlc2hseSBjcmVhdGVkIHVzaW5nIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbC4KQEAgLTU2Nyw0MCArMTczMiw0NyBAQAogICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgdXNpbmcgdGhpcyBtZXRob2QsIGZvbGxvdwogICAgICAgICAgICAgICAgIHRoZXNlIHN0ZXBzOgogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbXBsZXRlIGEgYnVpbGQgYXQgbGVhc3QgdGhyb3VnaCB0aGUga2VybmVsCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21wbGV0ZSBhIEJ1aWxkIFRocm91Z2ggS2VybmVsIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXRlIGEgYnVpbGQgYXQgbGVhc3QgdGhyb3VnaCB0aGUga2VybmVsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHRhc2sgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGtlcm5lbF9jb25maWdtZSAtZgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGVuc3VyZXMgdGhhdCB5b3Ugd2lsbCBiZSBjcmVhdGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgZW5zdXJlcyB0aGF0IHlvdSBjcmVhdGUgYQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIGZyb20gYSBrbm93biBzdGF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2Ugc2l0dWF0aW9ucyBleGlzdCB3aGVyZSB5b3VyIGJ1aWxkIHN0YXRlIG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWUgdW5rbm93biwgaXQgaXMgYmVzdCB0byBydW4gdGhlIHByZXZpb3VzCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHByaW9yIHRvIHN0YXJ0aW5nIHVwCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgYmVjb21lIHVua25vd24sIGl0IGlzIGJlc3QgdG8gcnVuIHRoaXMgdGFzayBwcmlvcgorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3RhcnRpbmcgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UnVuIHRoZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMgbWVudWNvbmZpZwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UnVuIHRoZSA8ZmlsZW5hbWU+ZGlmZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgQ29uZmlndXJhdGlvbiBGcmFnbWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSA8ZmlsZW5hbWU+ZGlmZmNvbmZpZzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIHByZXBhcmUgYSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdGluZyBmaWxlIDxmaWxlbmFtZT5mcmFnbWVudC5jZmc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBwbGFjZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBwbGFjZWQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+IGRpcmVjdG9yeToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGRpZmZjb25maWcKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGlmZmNvbmZpZzwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcyBhIGZpbGUgdGhhdCBpcyBhCi0gICAgICAgICAgICAgICAgbGlzdCBvZiBMaW51eCBrZXJuZWwgPGZpbGVuYW1lPkNPTkZJR188L2ZpbGVuYW1lPiBhc3NpZ25tZW50cy4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRpZmZjb25maWc8L2ZpbGVuYW1lPiBjb21tYW5kIGNyZWF0ZXMgYSBmaWxlCisgICAgICAgICAgICAgICAgdGhhdCBpcyBhIGxpc3Qgb2YgTGludXgga2VybmVsIDxmaWxlbmFtZT5DT05GSUdfPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBhc3NpZ25tZW50cy4KICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIG91dHB1dCBhcyBhCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcmFnbWVudC4KKyAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIG91dHB1dAorICAgICAgICAgICAgICAgIGFzIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudC4KICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSB0aGlzIG1ldGhvZCB0byBjcmVhdGUgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgZm9yIGEgQlNQLgpAQCAtNjEwLDM0ICsxNzgyLDEyNiBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUga2VybmVsIHRvb2xzIGFsc28gcHJvdmlkZSBjb25maWd1cmF0aW9uIHZhbGlkYXRpb24uCi0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlc2UgdG9vbHMgdG8gcHJvZHVjZSB3YXJuaW5ncyBmb3Igd2hlbiBhCisgICAgICAgICAgICAgICAgV2hlcmUgZG8geW91IHB1dCB5b3VyIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgZmlsZXM/CisgICAgICAgICAgICAgICAgWW91IGNhbiBwbGFjZSB0aGVzZSBmaWxlcyBpbiBhbiBhcmVhIHBvaW50ZWQgdG8gYnkKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYXMgZGlyZWN0ZWQgYnkgeW91ciA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgbG9jYXRlZCBpbiB5b3VyIGxheWVyLgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBpY2tzIHVwIHRoZSBjb25maWd1cmF0aW9uIGFuZAorICAgICAgICAgICAgICAgIGFkZHMgaXQgdG8gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhZCBhIHNldCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMKKyAgICAgICAgICAgICAgICBpbiBhIGZpbGUgY2FsbGVkIDxmaWxlbmFtZT5teWNvbmZpZy5jZmc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBJZiB5b3UgcHV0IHRoYXQgZmlsZSBpbnNpZGUgYSBkaXJlY3RvcnkgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPiB0aGF0IHJlc2lkZXMgaW4gdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYXMgdGhlIGtlcm5lbCdzIGFwcGVuZCBmaWxlIHdpdGhpbiB5b3VyIGxheWVyCisgICAgICAgICAgICAgICAgYW5kIHRoZW4gYWRkIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50cyB0byB0aGUga2VybmVsJ3MgYXBwZW5kCisgICAgICAgICAgICAgICAgZmlsZSwgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgcGlja2VkIHVwIGFuZCBhcHBsaWVkCisgICAgICAgICAgICAgICAgd2hlbiB0aGUga2VybmVsIGlzIGJ1aWx0OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vbXljb25maWcuY2ZnIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHlvdSBjYW4gZ3JvdXAgcmVsYXRlZCBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgICAgIGludG8gbXVsdGlwbGUgZmlsZXMgYW5kIG5hbWUgdGhlbSBhbGwgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGdyb3VwIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IGZvciBFdGhlcm5ldCBhbmQgZ3JhcGhpY3MgaW50byB0aGVpciBvd24gZmlsZXMKKyAgICAgICAgICAgICAgICBhbmQgYWRkIHRob3NlIGJ5IHVzaW5nIGEgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQKKyAgICAgICAgICAgICAgICBsaWtlIHRoZSBmb2xsb3dpbmcgaW4geW91ciBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9teWNvbmZpZy5jZmcgXAorICAgICAgICAgICAgZmlsZTovL2V0aC5jZmcgXAorICAgICAgICAgICAgZmlsZTovL2dmeC5jZmciCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3ZhbGlkYXRpbmctY29uZmlndXJhdGlvbic+CisgICAgICAgICAgICA8dGl0bGU+VmFsaWRhdGluZyBDb25maWd1cmF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWtlcm5lbF9jb25maWdjaGVjayc+PGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIHRvIHByb3ZpZGUgY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGtlcm5lbF9jb25maWdjaGVjayAtZgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgdGFzayBwcm9kdWNlcyB3YXJuaW5ncyBmb3Igd2hlbiBhCiAgICAgICAgICAgICAgICAgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gZG9lcyBub3QgYXBwZWFyIGluIHRoZSBmaW5hbAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBvciB3aGVuIHlvdSBvdmVycmlkZSBhCiAgICAgICAgICAgICAgICAgcG9saWN5IGNvbmZpZ3VyYXRpb24gaW4gYSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGZyYWdtZW50LgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB3aXRoIHNvbWUgc2FtcGxlIG91dHB1dCBvZiB0aGUgY29tbWFuZAotICAgICAgICAgICAgICAgIHRoYXQgcnVucyB0aGVzZSB0b29sczoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gcnVuIHRoaXMgdGFzaywgeW91IG11c3QgaGF2ZSBhbiBleGlzdGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLW1lbnVjb25maWcnPlVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBzYW1wbGUgb3V0cHV0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+IHRhc2s6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ2NoZWNrIC1mCisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIExvYWRlZCAxMjc1IGVudHJpZXMgZnJvbSBkZXBlbmRlbmN5IGNhY2hlLgorICAgICBOT1RFOiBSZXNvbHZpbmcgYW55IG1pc3NpbmcgdGFzayBxdWV1ZSBkZXBlbmRlbmNpZXMKIAotICAgICAuLi4KKyAgICAgQnVpbGQgQ29uZmlndXJhdGlvbjoKKyAgICAgICAgIC4KKyAgICAgICAgIC4KKyAgICAgICAgIC4KIAotICAgICBOT1RFOiB2YWxpZGF0aW5nIGtlcm5lbCBjb25maWd1cmF0aW9uCi0gICAgIFRoaXMgQlNQIHNldHMgMyBpbnZhbGlkL29ic29sZXRlIGtlcm5lbCBvcHRpb25zLgotICAgICBUaGVzZSBjb25maWcgb3B0aW9ucyBhcmUgbm90IG9mZmVyZWQgYW55d2hlcmUgd2l0aGluIHRoaXMga2VybmVsLgotICAgICBUaGUgZnVsbCBsaXN0IGNhbiBiZSBmb3VuZCBpbiB5b3VyIGtlcm5lbCBzcmMgZGlyIGF0OgotICAgICBtZXRhL2NmZy9zdGFuZGFyZC9teWJzcC9pbnZhbGlkLmNmZworICAgICBOT1RFOiBFeGVjdXRpbmcgU2V0U2NlbmUgVGFza3MKKyAgICAgTk9URTogRXhlY3V0aW5nIFJ1blF1ZXVlIFRhc2tzCisgICAgIFdBUk5JTkc6IGxpbnV4LXlvY3RvLTQuMTIuMTIrZ2l0QVVUT0lOQytlZGE0ZDE4Y2U0XzE2ZGUwMTQ5NjctcjAgZG9fa2VybmVsX2NvbmZpZ2NoZWNrOgorICAgICAgICAgW2tlcm5lbCBjb25maWddOiBzcGVjaWZpZWQgdmFsdWVzIGRpZCBub3QgbWFrZSBpdCBpbnRvIHRoZSBrZXJuZWwncyBmaW5hbCBjb25maWd1cmF0aW9uOgogCi0gICAgIFRoaXMgQlNQIHNldHMgMjEga2VybmVsIG9wdGlvbnMgdGhhdCBhcmUgcG9zc2libHkgbm9uLWhhcmR3YXJlIHJlbGF0ZWQuCi0gICAgIFRoZSBmdWxsIGxpc3QgY2FuIGJlIGZvdW5kIGluIHlvdXIga2VybmVsIHNyYyBkaXIgYXQ6Ci0gICAgIG1ldGEvY2ZnL3N0YW5kYXJkL215YnNwL3NwZWNpZmllZF9ub25faGR3LmNmZworICAgICAtLS0tLS0tLS0tIENPTkZJR19YODZfVFNDIC0tLS0tLS0tLS0tLS0tLS0tCisgICAgIENvbmZpZzogQ09ORklHX1g4Nl9UU0MKKyAgICAgRnJvbTogL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni9rZXJuZWwtc291cmNlLy5rZXJuZWwtbWV0YS9jb25maWdzL3N0YW5kYXJkL2JzcC9jb21tb24tcGMvY29tbW9uLXBjLWNwdS5jZmcKKyAgICAgUmVxdWVzdGVkIHZhbHVlOiAgQ09ORklHX1g4Nl9UU0M9eQorICAgICBBY3R1YWwgdmFsdWU6CiAKLSAgICAgV0FSTklORzogVGhlcmUgd2VyZSAyIGhhcmR3YXJlIG9wdGlvbnMgcmVxdWVzdGVkIHRoYXQgZG8gbm90Ci0gICAgICAgICAgICAgIGhhdmUgYSBjb3JyZXNwb25kaW5nIHZhbHVlIHByZXNlbnQgaW4gdGhlIGZpbmFsICIuY29uZmlnIiBmaWxlLgotICAgICAgICAgICAgICBUaGlzIHByb2JhYmx5IG1lYW5zIHlvdSBhcmUgbm90IGdldHRpbmcgdGhlIGNvbmZpZyB5b3Ugd2FudGVkLgotICAgICAgICAgICAgICBUaGUgZnVsbCBsaXN0IGNhbiBiZSBmb3VuZCBpbiB5b3VyIGtlcm5lbCBzcmMgZGlyIGF0OgotICAgICAgICAgICAgICBtZXRhL2NmZy9zdGFuZGFyZC9teWJzcC9taXNtYXRjaC5jZmcKKworICAgICAtLS0tLS0tLS0tIENPTkZJR19YODZfQklHU01QIC0tLS0tLS0tLS0tLS0tLS0tCisgICAgIENvbmZpZzogQ09ORklHX1g4Nl9CSUdTTVAKKyAgICAgRnJvbTogL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni9rZXJuZWwtc291cmNlLy5rZXJuZWwtbWV0YS9jb25maWdzL3N0YW5kYXJkL2NmZy9zbXAuY2ZnCisgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS8ua2VybmVsLW1ldGEvY29uZmlncy9zdGFuZGFyZC9kZWZjb25maWcKKyAgICAgUmVxdWVzdGVkIHZhbHVlOiAgIyBDT05GSUdfWDg2X0JJR1NNUCBpcyBub3Qgc2V0CisgICAgIEFjdHVhbCB2YWx1ZToKKworCisgICAgIC0tLS0tLS0tLS0gQ09ORklHX05SX0NQVVMgLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgQ29uZmlnOiBDT05GSUdfTlJfQ1BVUworICAgICBGcm9tOiAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9xZW11eDg2L2tlcm5lbC1zb3VyY2UvLmtlcm5lbC1tZXRhL2NvbmZpZ3Mvc3RhbmRhcmQvY2ZnL3NtcC5jZmcKKyAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni9rZXJuZWwtc291cmNlLy5rZXJuZWwtbWV0YS9jb25maWdzL3N0YW5kYXJkL2JzcC9jb21tb24tcGMvY29tbW9uLXBjLmNmZworICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9xZW11eDg2L2tlcm5lbC1zb3VyY2UvLmtlcm5lbC1tZXRhL2NvbmZpZ3Mvc3RhbmRhcmQvZGVmY29uZmlnCisgICAgIFJlcXVlc3RlZCB2YWx1ZTogIENPTkZJR19OUl9DUFVTPTgKKyAgICAgQWN0dWFsIHZhbHVlOiAgICAgQ09ORklHX05SX0NQVVM9MQorCisKKyAgICAgLS0tLS0tLS0tLSBDT05GSUdfU0NIRURfU01UIC0tLS0tLS0tLS0tLS0tLS0tCisgICAgIENvbmZpZzogQ09ORklHX1NDSEVEX1NNVAorICAgICBGcm9tOiAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrLXNoYXJlZC9xZW11eDg2L2tlcm5lbC1zb3VyY2UvLmtlcm5lbC1tZXRhL2NvbmZpZ3Mvc3RhbmRhcmQvY2ZnL3NtcC5jZmcKKyAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni9rZXJuZWwtc291cmNlLy5rZXJuZWwtbWV0YS9jb25maWdzL3N0YW5kYXJkL2RlZmNvbmZpZworICAgICBSZXF1ZXN0ZWQgdmFsdWU6ICBDT05GSUdfU0NIRURfU01UPXkKKyAgICAgQWN0dWFsIHZhbHVlOgorCisKKworICAgICBOT1RFOiBUYXNrcyBTdW1tYXJ5OiBBdHRlbXB0ZWQgMjg4IHRhc2tzIG9mIHdoaWNoIDI4NSBkaWRuJ3QgbmVlZCB0byBiZSByZXJ1biBhbmQgYWxsIHN1Y2NlZWRlZC4KKworICAgICBTdW1tYXJ5OiBUaGVyZSB3ZXJlIDMgV0FSTklORyBtZXNzYWdlcyBzaG93bi4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBvdXRwdXQgZXhhbXBsZSBoYXMgYXJ0aWZpY2lhbCBsaW5lIGJyZWFrcworICAgICAgICAgICAgICAgICAgICB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTY0NiwxMTEgKzE5MTAsMjA4IEBACiAgICAgICAgICAgICAgICAgaXRlbXMuCiAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBsb2dzIHRvIGFkanVzdCB5b3VyCiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgdGhlbiByZXBlYXQgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbF9jb25maWdtZTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiBjb21tYW5kcyB1bnRpbAotICAgICAgICAgICAgICAgIHRoZXkgcHJvZHVjZSBubyB3YXJuaW5ncy4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3Mta2VybmVsX2NvbmZpZ21lJz48ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ21lPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1rZXJuZWxfY29uZmlnY2hlY2snPjxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFza3MgdW50aWwgdGhleSBwcm9kdWNlIG5vIHdhcm5pbmdzLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gdG9vbCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1tZW51Y29uZmlnJz5Vc2luZyA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nbW9kaWZ5aW5nLXNvdXJjZS1jb2RlJz4KLSAgICAgICAgICAgIDx0aXRsZT5Nb2RpZnlpbmcgU291cmNlIENvZGU8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGV4cGVyaW1lbnQgd2l0aCBzb3VyY2UgY29kZSBjaGFuZ2VzIGFuZCBjcmVhdGUgYQotICAgICAgICAgICAgICAgIHNpbXBsZSBwYXRjaCB3aXRob3V0IGxlYXZpbmcgdGhlIEJpdEJha2UgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgVG8gZ2V0IHN0YXJ0ZWQsIGJlIHN1cmUgdG8gY29tcGxldGUgYSBidWlsZCBhdAotICAgICAgICAgICAgICAgIGxlYXN0IHRocm91Z2ggdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRhc2s6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ21lIC1mCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRha2luZyB0aGlzIHN0ZXAgZW5zdXJlcyB5b3UgaGF2ZSB0aGUgc291cmNlcyBwcmVwYXJlZAotICAgICAgICAgICAgICAgIGFuZCB0aGUgY29uZmlndXJhdGlvbiBjb21wbGV0ZWQuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBzb3VyY2VzIGluIHRoZSBidWlsZCBkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zb3VyY2UvPC9maWxlbmFtZT4gZGlyZWN0b3J5LCB3aGljaCBpcyBhIHN5bWxpbmsKLSAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS9zb3VyY2U8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zb3VyY2UvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGV4cGFuZHMgdG8KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+PGZpbGVuYW1lPi9saW51eC08L2ZpbGVuYW1lPjxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS0kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX0tFUk5FTF9UWVBFJz48ZmlsZW5hbWU+TElOVVhfS0VSTkVMX1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn0tYnVpbGQvc291cmNlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBwb2ludGVkIHRvIGJ5IHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zb3VyY2UvPC9maWxlbmFtZT4gc3ltbGluayBpcyBhbHNvIGtub3duIGFzCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBR0lOR19LRVJORUxfRElSJz48ZmlsZW5hbWU+U1RBR0lOR19LRVJORUxfRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZWRpdCB0aGUgc291cmNlcyBhcyB5b3Ugd291bGQgYW55IG90aGVyIExpbnV4IHNvdXJjZQotICAgICAgICAgICAgICAgIHRyZWUuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwga2VlcCBpbiBtaW5kIHRoYXQgeW91IHdpbGwgbG9zZSBjaGFuZ2VzIGlmIHlvdQotICAgICAgICAgICAgICAgIHRyaWdnZXIgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBmb3IgdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGF2b2lkIHRyaWdnZXJpbmcgdGhpcyB0YXNrIGJ5IG5vdCB1c2luZyBCaXRCYWtlIHRvCi0gICAgICAgICAgICAgICAgcnVuIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jbGVhbmFsbCc+PGZpbGVuYW1lPmNsZWFuYWxsPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY2xlYW5zc3RhdGUnPjxmaWxlbmFtZT5jbGVhbnNzdGF0ZTwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgb3IgZm9yY2VkCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgY29tbWFuZHMuCi0gICAgICAgICAgICAgICAgQWxzbywgZG8gbm90IG1vZGlmeSB0aGUgcmVjaXBlIGl0c2VsZiB3aGlsZSB3b3JraW5nCi0gICAgICAgICAgICAgICAgd2l0aCB0ZW1wb3JhcnkgY2hhbmdlcyBvciBCaXRCYWtlIG1pZ2h0IHJ1biB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmV0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kIGRlcGVuZGluZyBvbiB0aGUKLSAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIHRoZSByZWNpcGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIHRlc3QgeW91ciB0ZW1wb3JhcnkgY2hhbmdlcywgaW5zdHJ1Y3QgQml0QmFrZSB0byBydW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbXBpbGU8L2ZpbGVuYW1lPiBhZ2Fpbi4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3B0aW9uIGZvcmNlcyB0aGUgY29tbWFuZCB0byBydW4KLSAgICAgICAgICAgICAgICBldmVuIHRob3VnaCBCaXRCYWtlIG1pZ2h0IHRoaW5rIGl0IGhhcyBhbHJlYWR5IGRvbmUgc286Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMgY29tcGlsZSAtZgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBJZiB0aGUgY29tcGlsZSBmYWlscywgeW91IGNhbiB1cGRhdGUgdGhlIHNvdXJjZXMgYW5kIHJlcGVhdAotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29tcGlsZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIE9uY2UgY29tcGlsYXRpb24gaXMgc3VjY2Vzc2Z1bCwgeW91IGNhbiBpbnNwZWN0IGFuZCB0ZXN0Ci0gICAgICAgICAgICAgICAgdGhlIHJlc3VsdGluZyBidWlsZCAoaS5lLiBrZXJuZWwsIG1vZHVsZXMsIGFuZCBzbyBmb3J0aCkgZnJvbQotICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgYnVpbGQgZGlyZWN0b3J5OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJHtXT1JLRElSfS9saW51eC0ke1BBQ0tBR0VfQVJDSH0tJHtMSU5VWF9LRVJORUxfVFlQRX0tYnVpbGQKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBydW4gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcGxhY2UgdGhlIGtlcm5lbCBpbWFnZSBpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL2RlcGxveS9pbWFnZXM8L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotCSQgYml0YmFrZSBsaW51eC15b2N0byAtYyBkZXBsb3kKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgQW5kLCBvZiBjb3Vyc2UsIHlvdSBjYW4gcGVyZm9ybSB0aGUgcmVtYWluaW5nIGluc3RhbGxhdGlvbiBhbmQKLSAgICAgICAgICAgICAgICBwYWNrYWdpbmcgc3RlcHMgYnkgaXNzdWluZzoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0JJCBiaXRiYWtlIGxpbnV4LXlvY3RvCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgcmFwaWQgaXRlcmF0aXZlIGRldmVsb3BtZW50LCB0aGUgZWRpdC1jb21waWxlLXJlcGVhdCBsb29wCi0gICAgICAgICAgICAgICAgZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbiBpcyBwcmVmZXJhYmxlIHRvIHJlYnVpbGRpbmcgdGhlCi0gICAgICAgICAgICAgICAgZW50aXJlIHJlY2lwZSBiZWNhdXNlIHRoZSBpbnN0YWxsYXRpb24gYW5kIHBhY2thZ2luZyB0YXNrcwotICAgICAgICAgICAgICAgIGFyZSB2ZXJ5IHRpbWUgY29uc3VtaW5nLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBzb3VyY2UgY29kZSBtb2RpZmljYXRpb25zLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gbWFrZSB0aGVtIHBlcm1hbmVudCBieSBnZW5lcmF0aW5nIHBhdGNoZXMgYW5kCi0gICAgICAgICAgICAgICAgYXBwbHlpbmcgdGhlbSB0byB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50IGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYXBwbHlpbmctcGF0Y2hlcyc+QXBwbHlpbmcgUGF0Y2hlczwvbGluaz4iCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLW1lbnVjb25maWcnPlVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L2xpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgSWYgeW91IGFyZSBub3QgZmFtaWxpYXIgd2l0aCBnZW5lcmF0aW5nIHBhdGNoZXMsIHJlZmVyIHRvIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy10aGUtcGF0Y2gnPkNyZWF0aW5nIHRoZSBQYXRjaDwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2ZpbmUtdHVuaW5nLXRoZS1rZXJuZWwtY29uZmlndXJhdGlvbi1maWxlJz4KKyAgICAgICAgICAgIDx0aXRsZT5GaW5lLVR1bmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gRmlsZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSBzdXJlIHRoZSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgaXMgYXMKKyAgICAgICAgICAgICAgICBsZWFuIG9yIGVmZmljaWVudCBhcyBwb3NzaWJsZSBieSByZWFkaW5nIHRoZSBvdXRwdXQgb2YgdGhlCisgICAgICAgICAgICAgICAga2VybmVsIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQgYXVkaXQsIG5vdGluZyBhbnkgaXNzdWVzLCBtYWtpbmcKKyAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIGNvcnJlY3QgdGhlIGlzc3VlcywgYW5kIHRoZW4gcmVwZWF0aW5nLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBwYXJ0IG9mIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2VzcywgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2tlcm5lbF9jb25maWdjaGVjazwvZmlsZW5hbWU+IHRhc2sgcnVucy4KKyAgICAgICAgICAgICAgICBUaGlzIHRhc2sgdmFsaWRhdGVzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBieSBjaGVja2luZyB0aGUKKyAgICAgICAgICAgICAgICBmaW5hbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYWdhaW5zdCB0aGUgaW5wdXQKKyAgICAgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGNoZWNrLCB0aGUgdGFzayBwcm9kdWNlcyB3YXJuaW5nIG1lc3NhZ2VzIGZvciB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3RlZCBvcHRpb25zIHRoYXQgZGlkIG5vdCBtYWtlIHRoZSBmaW5hbAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gaXRlbXMgdGhhdCBhcHBlYXIgdHdpY2UgaW4gdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBpdGVtcyB0YWdnZWQgYXMgInJlcXVpcmVkIiB0aGF0IHdlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRkZW4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQSBib2FyZCBvdmVycmlkZXMgYSBub24tYm9hcmQgc3BlY2lmaWMgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RlZCBvcHRpb25zIG5vdCB2YWxpZCBmb3IgdGhlIGtlcm5lbCBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBvcHRpb24gZG9lcyBub3QgYXBwZWFyIGFueXdoZXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzayBjYW4KKyAgICAgICAgICAgICAgICAgICAgYWxzbyBvcHRpb25hbGx5IHJlcG9ydCBpZiBhbiBvcHRpb24gaXMgb3ZlcnJpZGRlbiBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBlYWNoIG91dHB1dCB3YXJuaW5nLCBhIG1lc3NhZ2UgcG9pbnRzIHRvIHRoZSBmaWxlCisgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyBhIGxpc3Qgb2YgdGhlIG9wdGlvbnMgYW5kIGEgcG9pbnRlciB0byB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZyYWdtZW50IHRoYXQgZGVmaW5lcyB0aGVtLgorICAgICAgICAgICAgICAgIENvbGxlY3RpdmVseSwgdGhlIGZpbGVzIGFyZSB0aGUga2V5IHRvIHN0cmVhbWxpbmluZyB0aGUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBzdHJlYW1saW5lIHRoZSBjb25maWd1cmF0aW9uLCBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBhIFdvcmtpbmcgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgd2l0aCBhIGZ1bGwgY29uZmlndXJhdGlvbiB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAga25vdyB3b3Jrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gYnVpbGRzIGFuZCBib290cworICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGFzIHlvdXIgYmFzZWxpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJ1biBDb25maWd1cmUgYW5kIENoZWNrIFRhc2tzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZWx5IHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnbWU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19rZXJuZWxfY29uZmlnY2hlY2s8L2ZpbGVuYW1lPiB0YXNrczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGtlcm5lbF9jb25maWdtZSAtZgorICAgICAkIGJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ2NoZWNrIC1mCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByb2Nlc3MgdGhlIFJlc3VsdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRha2UgdGhlIHJlc3VsdGluZyBsaXN0IG9mIGZpbGVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFzaworICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgYW5kIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJvcCB2YWx1ZXMgdGhhdCBhcmUgcmVkZWZpbmVkIGluIHRoZSBmcmFnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZG8gbm90IGNoYW5nZSB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emUgYW5kIHBvdGVudGlhbGx5IGRyb3AgdmFsdWVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSB0aGF0IG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emUgYW5kIHBvdGVudGlhbGx5IHJlbW92ZSBub24tYm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUgcmVwZWF0ZWQgYW5kIGludmFsaWQgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmUtUnVuIENvbmZpZ3VyZSBhbmQgQ2hlY2sgVGFza3M6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHdvcmtlZCB0aHJvdWdoIHRoZSBvdXRwdXQgb2YgdGhlIGtlcm5lbAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhdWRpdCwgeW91IGNhbiByZS1ydW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ21lPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fa2VybmVsX2NvbmZpZ2NoZWNrPC9maWxlbmFtZT4gdGFza3MgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgcmVzdWx0cyBvZiB5b3VyIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBtb3JlIGlzc3VlcywgeW91IGNhbiBkZWFsIHdpdGggdGhlbSBhcworICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzdGVwLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSXRlcmF0aXZlbHkgd29ya2luZyB0aHJvdWdoIHN0ZXBzIHR3byB0aHJvdWdoIGZvdXIgZXZlbnR1YWxseQorICAgICAgICAgICAgICAgIHlpZWxkcyBhIG1pbmltYWwsIHN0cmVhbWxpbmVkIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHRoZSBiZXN0IDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4sIHlvdSBjYW4KKyAgICAgICAgICAgICAgICBidWlsZCB0aGUgTGludXggWW9jdG8ga2VybmVsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2V4cGFuZGluZy12YXJpYWJsZXMnPgorICAgICAgICA8dGl0bGU+RXhwYW5kaW5nIFZhcmlhYmxlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21ldGltZXMgaXQgaXMgaGVscGZ1bCB0byBkZXRlcm1pbmUgd2hhdCBhIHZhcmlhYmxlIGV4cGFuZHMKKyAgICAgICAgICAgIHRvIGR1cmluZyBhIGJ1aWxkLgorICAgICAgICAgICAgWW91IGNhbiBkbyBleGFtaW5lIHRoZSB2YWx1ZXMgb2YgdmFyaWFibGVzIGJ5IGV4YW1pbmluZyB0aGUKKyAgICAgICAgICAgIG91dHB1dCBvZiB0aGUgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgVGhlIG91dHB1dCBpcyBsb25nIGFuZCBpcyBtb3JlIGVhc2lseSBtYW5hZ2VkIGluIGEgdGV4dCBmaWxlLAorICAgICAgICAgICAgd2hpY2ggYWxsb3dzIGZvciBlYXN5IHNlYXJjaGVzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWUgdmlydHVhbC9rZXJuZWwgPiA8cmVwbGFjZWFibGU+c29tZV90ZXh0X2ZpbGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgV2l0aGluIHRoZSB0ZXh0IGZpbGUsIHlvdSBjYW4gc2VlIGV4YWN0bHkgaG93IGVhY2ggdmFyaWFibGUgaXMKKyAgICAgICAgICAgIGV4cGFuZGVkIGFuZCB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC1hLWRpcnR5LWtlcm5lbC12ZXJzaW9uLXN0cmluZyc+CisgICAgICAgIDx0aXRsZT5Xb3JraW5nIHdpdGggYSAiRGlydHkiIEtlcm5lbCBWZXJzaW9uIFN0cmluZzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgYnVpbGQgYSBrZXJuZWwgaW1hZ2UgYW5kIHRoZSB2ZXJzaW9uIHN0cmluZyBoYXMgYQorICAgICAgICAgICAgIisiIG9yIGEgIi1kaXJ0eSIgYXQgdGhlIGVuZCwgdW5jb21taXR0ZWQgbW9kaWZpY2F0aW9ucyBleGlzdAorICAgICAgICAgICAgaW4gdGhlIGtlcm5lbCdzIHNvdXJjZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY2xlYW4gdXAgdGhlIHZlcnNpb24gc3RyaW5nOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRpc2NvdmVyIHRoZSBVbmNvbW1pdHRlZCBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEdvIHRvIHRoZSBrZXJuZWwncyBsb2NhbGx5IGNsb25lZCBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAoc291cmNlIGRpcmVjdG9yeSkgYW5kIHVzZSB0aGUgZm9sbG93aW5nIEdpdCBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIHRvIGxpc3QgdGhlIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQsIGFkZGVkLCBvcgorICAgICAgICAgICAgICAgICAgICByZW1vdmVkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IHN0YXR1cworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1pdCB0aGUgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGNvbW1pdCB0aG9zZSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgc291cmNlCisgICAgICAgICAgICAgICAgICAgIHRyZWUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB5b3Ugd2lsbCBzYXZlLAorICAgICAgICAgICAgICAgICAgICBleHBvcnQsIG9yIHVzZSB0aGUgY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBhZGQKKyAgICAgJCBnaXQgY29tbWl0IC1zIC1hIC1tICJnZXR0aW5nIHJpZCBvZiAtZGlydHkiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVidWlsZCB0aGUgS2VybmVsIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGNvbW1pdCB0aGUgY2hhbmdlcywgcmVidWlsZCB0aGUga2VybmVsLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5EZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyIGtlcm5lbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB3b3JrZmxvdywgdGhlIGNvbW1hbmRzIHlvdSB1c2UgdG8gcmVidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIG1pZ2h0IGRpZmZlci4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIHRoZSBrZXJuZWwgaW1hZ2Ugd2hlbgorICAgICAgICAgICAgICAgICAgICB1c2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy1kZXZ0b29sLXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdG8gUGF0Y2ggdGhlIEtlcm5lbDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBidWlsZGluZyB0aGUga2VybmVsIGltYWdlIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgQml0YmFrZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC15b3VyLW93bi1zb3VyY2VzJz4KQEAgLTc2Myw3ICsyMTI0LDcgQEAKICAgICAgICAgICAgIHdvcmtpbmcgd2l0aCB5b3VyIG93biBzb3VyY2VzLgogICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHlvdXIgb3duIHNvdXJjZXMsIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvCiAgICAgICAgICAgICBsZXZlcmFnZSB0aGUgZXhpc3Rpbmcga2VybmVsCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IGFuZAogICAgICAgICAgICAgc3RhYmlsaXphdGlvbiB3b3JrIG9mIHRoZSBsaW51eC15b2N0byBzb3VyY2VzLgogICAgICAgICAgICAgSG93ZXZlciwgeW91IHdpbGwgYmUgYWJsZSB0byBtYW5hZ2UgeW91ciBvd24gTWV0YWRhdGEgaW4gdGhlIHNhbWUKICAgICAgICAgICAgIGZvcm1hdCBhcyB0aGUgbGludXgteW9jdG8gc291cmNlcy4KQEAgLTc4OCwyMyArMjE0OSwyOSBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBIZXJlIGFyZSBzb21lIGJhc2ljIHN0ZXBzIHlvdSBjYW4gdXNlIHRvIHdvcmsgd2l0aCB5b3VyIG93biBzb3VyY2VzOgorICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBiYXNpYyBzdGVwcyB5b3UgY2FuIHVzZSB0byB3b3JrIHdpdGggeW91ciBvd24KKyAgICAgICAgICAgIHNvdXJjZXM6CiAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvcHkgdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by1jdXN0b20uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIENvcHkgb2YgdGhlIEtlcm5lbCBSZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29weSB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWN1c3RvbS5iYjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byB5b3VyIGxheWVyIGFuZCBnaXZlIGl0IGEgbWVhbmluZ2Z1bCBuYW1lLgotICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBzaG91bGQgaW5jbHVkZSB0aGUgdmVyc2lvbiBvZiB0aGUgTGludXgga2VybmVsIHlvdQotICAgICAgICAgICAgICAgICAgICBhcmUgdXNpbmcgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLW15cHJvamVjdF8zLjE5LmJiPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgIHdoZXJlICIzLjE5IiBpcyB0aGUgYmFzZSB2ZXJzaW9uIG9mIHRoZSBMaW51eCBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB3aGljaCB5b3Ugd291bGQgYmUgd29ya2luZykuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluIHRoZSBzYW1lIGRpcmVjdG9yeSBpbnNpZGUgeW91ciBsYXllciwKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgbWF0Y2hpbmcgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIHRvIHN0b3JlIHlvdXIgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyAoZS5nLgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tbXlwcm9qZWN0PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBzaG91bGQgaW5jbHVkZSB0aGUgdmVyc2lvbiBvZiB0aGUgWW9jdG8gTGludXgKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIHlvdSBhcmUgdXNpbmcgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLW15cHJvamVjdF80LjEyLmJiPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoZXJlICI0LjEyIiBpcyB0aGUgYmFzZSB2ZXJzaW9uIG9mIHRoZSBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB3aGljaCB5b3Ugd291bGQgYmUgd29ya2luZykuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5NYWtlIHN1cmUgeW91IGhhdmUgZWl0aGVyIGEKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgb3IgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCBmaWxlcy4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBEaXJlY3RvcnkgZm9yIFlvdXIgUGF0Y2hlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgc2FtZSBkaXJlY3RvcnkgaW5zaWRlIHlvdXIgbGF5ZXIsIGNyZWF0ZSBhIG1hdGNoaW5nCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB0byBzdG9yZSB5b3VyIHBhdGNoZXMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmxpbnV4LXlvY3RvLW15cHJvamVjdDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW5zdXJlIFlvdSBIYXZlIENvbmZpZ3VyYXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE1ha2Ugc3VyZSB5b3UgaGF2ZSBlaXRoZXIgYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBvciBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGVzIGluIHlvdXIgbGF5ZXIuCiAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWN1c3RvbS5iYjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgeW91IG11c3Qgc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSBhIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlLApAQCAtODEzLDI3ICsyMTgwLDMyIEBACiAgICAgICQgbWFrZSBkZWZjb25maWcKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCBjb3B5IHRoZSByZXN1bHRpbmcKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGVzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGFzICJkZWZjb25maWciIGFuZAotICAgICAgICAgICAgICAgICAgICB0aGVuIGFkZCBpdCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmlsZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4geW91ciBsYXllcgorICAgICAgICAgICAgICAgICAgICBhcyAiZGVmY29uZmlnIiBhbmQgdGhlbiBhZGQgaXQgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIHJlY2lwZS48L3BhcmE+CisKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+UnVubmluZyB0aGUgPGZpbGVuYW1lPm1ha2UgZGVmY29uZmlnPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCByZXN1bHRzIGluIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIKICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIGFzIGRlZmluZWQgYnkgeW91ciBrZXJuZWwuCiAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIG5vIGd1YXJhbnRlZSBleGlzdHMgdGhhdCB0aGlzIGNvbmZpZ3VyYXRpb24gaXMKICAgICAgICAgICAgICAgICAgICAgdmFsaWQgZm9yIHlvdXIgdXNlIGNhc2UsIG9yIHRoYXQgeW91ciBib2FyZCB3aWxsIGV2ZW4gYm9vdC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBmb3Igbm9uLXg4NiBhcmNoaXRlY3R1cmVzLgotICAgICAgICAgICAgICAgICAgICBUbyB1c2Ugbm9uLXg4NiA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZXMsIHlvdQotICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJlIG1vcmUgc3BlY2lmaWMgYW5kIGZpbmQgb25lIHRoYXQgbWF0Y2hlcyB5b3VyCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgZm9yIG5vbi14ODYgYXJjaGl0ZWN0dXJlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VG8gdXNlIG5vbi14ODYgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGVzLAorICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljIGFuZCBmaW5kIG9uZSB0aGF0IG1hdGNoZXMgeW91cgogICAgICAgICAgICAgICAgICAgICBib2FyZCAoaS5lLiBmb3IgYXJtLCB5b3UgbG9vayBpbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJjaC9hcm0vY29uZmlnczwvZmlsZW5hbWU+IGFuZCB1c2UgdGhlIG9uZSB0aGF0CiAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50IGZvciB5b3VyIGJvYXJkKS4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVkaXQgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4geW91ciByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgYXMgYXBwcm9wcmlhdGUgZm9yIHlvdXIgcHJvamVjdDoKKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBSZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRWRpdCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBpbiB5b3VyIHJlY2lwZSBhcyBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgICAgICBmb3IgeW91ciBwcm9qZWN0OgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzaG91bGQgc3BlY2lmeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgR2l0IHJlcG9zaXRvcnkgdGhhdCB1c2VzIG9uZSBvZiB0aGUgc3VwcG9ydGVkIEdpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoZXIgcHJvdG9jb2xzIChpLmUuIDxmaWxlbmFtZT5maWxlPC9maWxlbmFtZT4sCkBAIC04NDUsMjQgKzIyMTcsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2tlbGV0b24gcmVjaXBlIHByb3ZpZGVzIGFuIGV4YW1wbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGFzIGEgc3ludGF4IHJlZmVyZW5jZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElOVVhfVkVSU0lPTic+PGZpbGVuYW1lPkxJTlVYX1ZFUlNJT048L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSU5VWF9WRVJTSU9OJz48ZmlsZW5hbWU+TElOVVhfVkVSU0lPTjwvZmlsZW5hbWU+PC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExpbnV4IGtlcm5lbCB2ZXJzaW9uIHlvdSBhcmUgdXNpbmcgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMy4xOSIpLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSU5VWF9WRVJTSU9OX0VYVEVOU0lPTic+PGZpbGVuYW1lPkxJTlVYX1ZFUlNJT05fRVhURU5TSU9OPC9maWxlbmFtZT48L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTGludXgga2VybmVsIDxmaWxlbmFtZT5DT05GSUdfTE9DQUxWRVJTSU9OPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIGNvbXBpbGVkIGludG8gdGhlIHJlc3VsdGluZyBrZXJuZWwgYW5kIHZpc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNC4xMiIpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSU5VWF9WRVJTSU9OX0VYVEVOU0lPTic+PGZpbGVuYW1lPkxJTlVYX1ZFUlNJT05fRVhURU5TSU9OPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTGludXgga2VybmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTkZJR19MT0NBTFZFUlNJT048L2ZpbGVuYW1lPiB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZWQgaW50byB0aGUgcmVzdWx0aW5nIGtlcm5lbCBhbmQgdmlzaWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIDxmaWxlbmFtZT51bmFtZTwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1pdCBJRCBmcm9tIHdoaWNoIHlvdSB3YW50IHRvIGJ1aWxkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmVhdCB0aGlzIHZhcmlhYmxlIHRoZSBzYW1lIGFzIHlvdSB3b3VsZCBpbiBhbnkgb3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50IHRoZSB2YXJpYWJsZSB0byBpbmRpY2F0ZSB0byB0aGUgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHRoYXQgdGhlIHJlY2lwZSBoYXMgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJlYXQgdGhpcyB2YXJpYWJsZSB0aGUgc2FtZSBhcyB5b3Ugd291bGQgaW4gYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudCB0aGUgdmFyaWFibGUgdG8gaW5kaWNhdGUgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0aGF0IHRoZSByZWNpcGUgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+IGFzc2lnbm1lbnQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpY2FsbHkgYWRlcXVhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgY29tYmluZXMgdGhlIDxmaWxlbmFtZT5MSU5VWF9WRVJTSU9OPC9maWxlbmFtZT4KQEAgLTg3MCwxNiArMjI1MCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGRlcml2ZWQgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDUFYnPjxmaWxlbmFtZT5TUkNQVjwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tYmluZWQgcmVzdWx0cyBhcmUgYSBzdHJpbmcgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29tYmluZWQgcmVzdWx0cyBhcmUgYSBzdHJpbmcgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZm9ybToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIDMuMTkuMTErZ2l0MSs2OGE2MzViZjhkZmI2NGIwMjI2M2MxYWM4MGM5NDg2NDdjYzc2ZDVmXzErMjE4YmQ4ZDIwMjJiOTg1MmM2MGQzMmYwZDc3MDkzMWUzY2YzNDNlMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBsZW5ndGh5LCB0aGUgZXh0cmEgdmVyYm9zaXR5IGluIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscHMgZW5zdXJlIHlvdSBhcmUgdXNpbmcgdGhlIGV4YWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcyBmcm9tIHdoaWNoIHlvdSBpbnRlbmQgdG8gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgbGVuZ3RoeSwgdGhlIGV4dHJhIHZlcmJvc2l0eSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+IGhlbHBzIGVuc3VyZSB5b3UgYXJlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGV4YWN0IHNvdXJjZXMgZnJvbSB3aGljaCB5b3UgaW50ZW5kIHRvIGJ1aWxkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT01QQVRJQkxFX01BQ0hJTkUnPjxmaWxlbmFtZT5DT01QQVRJQkxFX01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT01QQVRJQkxFX01BQ0hJTkUnPjxmaWxlbmFtZT5DT01QQVRJQkxFX01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiB0aGUgbWFjaGluZXMgc3VwcG9ydGVkIGJ5IHlvdXIgbmV3IHJlY2lwZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGluIHRoZSBleGFtcGxlIHJlY2lwZSBpcyBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IHRvIGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcwpAQCAtODg4LDE4ICsyMjY5LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBjaGFuZ2UgaXQgdG8gbWF0Y2ggYSBsaXN0IG9mIHRoZSBtYWNoaW5lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91ciBuZXcgcmVjaXBlIHN1cHBvcnRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBzdXBwb3J0IHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5xZW11eDg2LTY0PC9maWxlbmFtZT4gbWFjaGluZXMsIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBzdXBwb3J0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODYtNjQ8L2ZpbGVuYW1lPiBtYWNoaW5lcywgdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Qcm92aWRlIGZ1cnRoZXIgY3VzdG9taXphdGlvbnMgdG8geW91ciByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DdXN0b21pemUgWW91ciBSZWNpcGUgYXMgTmVlZGVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgZnVydGhlciBjdXN0b21pemF0aW9ucyB0byB5b3VyIHJlY2lwZQogICAgICAgICAgICAgICAgICAgICBhcyBuZWVkZWQganVzdCBhcyB5b3Ugd291bGQgY3VzdG9taXplIGFuIGV4aXN0aW5nCiAgICAgICAgICAgICAgICAgICAgIGxpbnV4LXlvY3RvIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0nbW9kaWZ5aW5nLWFuLWV4aXN0aW5nLXJlY2lwZSc+TW9kaWZ5aW5nCi0gICAgICAgICAgICAgICAgICAgIGFuIEV4aXN0aW5nIFJlY2lwZTwvbGluaz4iIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtb2RpZnlpbmctYW4tZXhpc3RpbmctcmVjaXBlJz5Nb2RpZnlpbmcgYW4gRXhpc3RpbmcgUmVjaXBlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgPC9wYXJhPgpAQCAtMTIzMCw3ICsyNjE3LDggQEAKICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNlYXJjaGVzIGFsbCBmb3JtcyBvZiBrZXJuZWwKICAgICAgICAgICAgIE1ldGFkYXRhIG9uIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCByZWdhcmRsZXNzCiAgICAgICAgICAgICBvZiB3aGV0aGVyIHRoZSBNZXRhZGF0YSBpcyBpbiB0aGUgImtlcm5lbC1jYWNoZSIsIHN5c3RlbSBrZXJuZWwKLSAgICAgICAgICAgIE1ldGFkYXRhLCBvciBhIHJlY2lwZS1zcGFjZSBNZXRhZGF0YS4KKyAgICAgICAgICAgIE1ldGFkYXRhLCBvciBhIHJlY2lwZS1zcGFjZSBNZXRhZGF0YSAoaS5lLiBwYXJ0IG9mIHRoZSBrZXJuZWwKKyAgICAgICAgICAgIHJlY2lwZSkuCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0na2VybmVsLW1ldGFkYXRhLWxvY2F0aW9uJz5LZXJuZWwgTWV0YWRhdGEgTG9jYXRpb248L2xpbms+IgogICAgICAgICAgICAgc2VjdGlvbiBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KQEAgLTEyNTMsNiArMjY0MSw3IEBACiAgICAgICAgICAgICB0byB0aGUgYnVpbGQuCiAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBGZWF0dXJlIEZpbGU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIGEgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlIGFuZCBsb2NhdGUgaXQKICAgICAgICAgICAgICAgICAgICAganVzdCBhcyB5b3Ugd291bGQgYW55IG90aGVyIHBhdGNoIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uY2ZnPC9maWxlbmFtZT4gZmlsZSwgb3IgZmV0Y2hlciBpdGVtCkBAIC0xMjk1LDYgKzI2ODQsNyBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdC5jZmc8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QWRkIHRoZSBGZWF0dXJlIEZpbGUgdG8gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBBZGQgdGhlIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZSB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTEzMDQsNyArMjY5NCw5IEBACiAgICAgICAgICAgICAgICAgICAgIHBhdGggaXMgYXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5nIHBhdGguCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmeSB0aGUgZmVhdHVyZSBhcyBhIGtlcm5lbCBmZWF0dXJlOgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3BlY2lmeSB0aGUgRmVhdHVyZSBhcyBhIEtlcm5lbCBGZWF0dXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+IHN0YXRlbWVudAorICAgICAgICAgICAgICAgICAgICB0byBzcGVjaWZ5IHRoZSBmZWF0dXJlIGFzIGEga2VybmVsIGZlYXR1cmU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgdGVzdC5zY2MiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbAppbmRleCBhYzkxNzQ5Li5mYmVjYzEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sCkBAIC03LDI0NSArNyw2MTMgQEAKIAogICAgIDxzZWN0aW9uIGlkPSdrZXJuZWwtYmlnLXBpY3R1cmUnPgogICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBLZXJuZWwgRGV2ZWxvcG1lbnQgYW5kIE1haW50ZW5hbmNlPC90aXRsZT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEtlcm5lbHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFlvY3RvIFByb2plY3QsIGxpa2Ugb3RoZXIga2VybmVscywgYXJlIGJhc2VkIG9mZiB0aGUgTGludXgKLSAgICAgICAgICAgIGtlcm5lbCByZWxlYXNlcyBmcm9tIDx1bGluayB1cmw9J2h0dHA6Ly93d3cua2VybmVsLm9yZyc+PC91bGluaz4uCi0gICAgICAgICAgICBBdCB0aGUgYmVnaW5uaW5nIG9mIGEgbWFqb3IgZGV2ZWxvcG1lbnQgY3ljbGUsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0KLSAgICAgICAgICAgIGNob29zZXMgaXRzIGtlcm5lbCBiYXNlZCBvbiBmYWN0b3JzIHN1Y2ggYXMgcmVsZWFzZSB0aW1pbmcsIHRoZSBhbnRpY2lwYXRlZCByZWxlYXNlCi0gICAgICAgICAgICB0aW1pbmcgb2YgZmluYWwgdXBzdHJlYW0gPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiB2ZXJzaW9ucywgYW5kIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIEtlcm5lbHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFlvY3RvIFByb2plY3QgKFlvY3RvIExpbnV4IGtlcm5lbHMpLAorICAgICAgICAgICAgbGlrZSBvdGhlciBrZXJuZWxzLCBhcmUgYmFzZWQgb2ZmIHRoZSBMaW51eCBrZXJuZWwgcmVsZWFzZXMgZnJvbQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5rZXJuZWwub3JnJz48L3VsaW5rPi4KKyAgICAgICAgICAgIEF0IHRoZSBiZWdpbm5pbmcgb2YgYSBtYWpvciBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgY3ljbGUsIHRoZQorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0ZWFtIGNob29zZXMgYSBMaW51eCBrZXJuZWwgYmFzZWQgb24gZmFjdG9ycyBzdWNoIGFzCisgICAgICAgICAgICByZWxlYXNlIHRpbWluZywgdGhlIGFudGljaXBhdGVkIHJlbGVhc2UgdGltaW5nIG9mIGZpbmFsIHVwc3RyZWFtCisgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IHZlcnNpb25zLCBhbmQgWW9jdG8gUHJvamVjdAogICAgICAgICAgICAgZmVhdHVyZSByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICBUeXBpY2FsbHksIHRoZSBrZXJuZWwgY2hvc2VuIGlzIGluIHRoZQotICAgICAgICAgICAgZmluYWwgc3RhZ2VzIG9mIGRldmVsb3BtZW50IGJ5IHRoZSBjb21tdW5pdHkuCi0gICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIGtlcm5lbCBpcyBpbiB0aGUgcmVsZWFzZQotICAgICAgICAgICAgY2FuZGlkYXRlIG9yICJyYyIgcGhhc2UgYW5kIG5vdCB5ZXQgYSBmaW5hbCByZWxlYXNlLgotICAgICAgICAgICAgQnV0LCBieSBiZWluZyBpbiB0aGUgZmluYWwgc3RhZ2VzIG9mIGV4dGVybmFsIGRldmVsb3BtZW50LCB0aGUgdGVhbSBrbm93cyB0aGF0IHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiBmaW5hbCByZWxlYXNlIHdpbGwgY2xlYXJseSBiZSB3aXRoaW4gdGhlIGVhcmx5IHN0YWdlcyBvZgotICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgd2luZG93LgorICAgICAgICAgICAgVHlwaWNhbGx5LCB0aGUgTGludXgga2VybmVsIGNob3NlbiBpcyBpbiB0aGUgZmluYWwgc3RhZ2VzIG9mCisgICAgICAgICAgICBkZXZlbG9wbWVudCBieSB0aGUgTGludXggY29tbXVuaXR5LgorICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBMaW51eCBrZXJuZWwgaXMgaW4gdGhlIHJlbGVhc2UgY2FuZGlkYXRlCisgICAgICAgICAgICBvciAicmMiIHBoYXNlIGFuZCBoYXMgeWV0IHRvIHJlYWNoIGZpbmFsIHJlbGVhc2UuCisgICAgICAgICAgICBCdXQsIGJ5IGJlaW5nIGluIHRoZSBmaW5hbCBzdGFnZXMgb2YgZXh0ZXJuYWwgZGV2ZWxvcG1lbnQsIHRoZQorICAgICAgICAgICAgdGVhbSBrbm93cyB0aGF0IHRoZSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IGZpbmFsIHJlbGVhc2UKKyAgICAgICAgICAgIHdpbGwgY2xlYXJseSBiZSB3aXRoaW4gdGhlIGVhcmx5IHN0YWdlcyBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgd2luZG93LgogICAgICAgICA8L3BhcmE+CisKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGJhbGFuY2UgYWxsb3dzIHRoZSB0ZWFtIHRvIGRlbGl2ZXIgdGhlIG1vc3QgdXAtdG8tZGF0ZSBrZXJuZWwKLSAgICAgICAgICAgIHBvc3NpYmxlLCB3aGlsZSBzdGlsbCBlbnN1cmluZyB0aGF0IHRoZSB0ZWFtIGhhcyBhIHN0YWJsZSBvZmZpY2lhbCByZWxlYXNlIGZvcgotICAgICAgICAgICAgdGhlIGJhc2VsaW5lIExpbnV4IGtlcm5lbCB2ZXJzaW9uLgorICAgICAgICAgICAgVGhpcyBiYWxhbmNlIGFsbG93cyB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHRvIGRlbGl2ZXIgdGhlIG1vc3QKKyAgICAgICAgICAgIHVwLXRvLWRhdGUgWW9jdG8gTGludXgga2VybmVsIHBvc3NpYmxlLCB3aGlsZSBzdGlsbCBlbnN1cmluZyB0aGF0CisgICAgICAgICAgICB0aGUgdGVhbSBoYXMgYSBzdGFibGUgb2ZmaWNpYWwgcmVsZWFzZSBmb3IgdGhlIGJhc2VsaW5lIExpbnV4CisgICAgICAgICAgICBrZXJuZWwgdmVyc2lvbi4KICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHVsdGltYXRlIHNvdXJjZSBmb3Iga2VybmVscyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgWW9jdG8gUHJvamVjdCBhcmUgcmVsZWFzZWQga2VybmVscwotICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gYSBmb3VuZGF0aW9uYWwga2VybmVsIGZyb20gPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiwgdGhlCi0gICAgICAgICAgICBrZXJuZWxzIGF2YWlsYWJsZSBjb250YWluIGEgbWl4IG9mIGltcG9ydGFudCBuZXcgbWFpbmxpbmUKLSAgICAgICAgICAgIGRldmVsb3BtZW50cywgbm9uLW1haW5saW5lIGRldmVsb3BtZW50cyAod2hlbiB0aGVyZSBpcyBubyBhbHRlcm5hdGl2ZSksCi0gICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgZGV2ZWxvcG1lbnRzLAotICAgICAgICAgICAgYW5kIGN1c3RvbSBmZWF0dXJlcy4KLSAgICAgICAgICAgIFRoZXNlIGFkZGl0aW9ucyByZXN1bHQgaW4gYSBjb21tZXJjaWFsbHkgcmVsZWFzZWQgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwgdGhhdCBjYXRlcnMKLSAgICAgICAgICAgIHRvIHNwZWNpZmljIGVtYmVkZGVkIGRlc2lnbmVyIG5lZWRzIGZvciB0YXJnZXRlZCBoYXJkd2FyZS4KKyAgICAgICAgICAgIEFzIGltcGxpZWQgZWFybGllciwgdGhlIHVsdGltYXRlIHNvdXJjZSBmb3IgWW9jdG8gTGludXgga2VybmVscworICAgICAgICAgICAgYXJlIHJlbGVhc2VkIGtlcm5lbHMgZnJvbSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gYSBmb3VuZGF0aW9uYWwga2VybmVsIGZyb20KKyAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4sIHRoZSBhdmFpbGFibGUgWW9jdG8gTGludXgga2VybmVscworICAgICAgICAgICAgY29udGFpbiBhIG1peCBvZiBpbXBvcnRhbnQgbmV3IG1haW5saW5lIGRldmVsb3BtZW50cywgbm9uLW1haW5saW5lCisgICAgICAgICAgICBkZXZlbG9wbWVudHMgKHdoZW4gbm8gYWx0ZXJuYXRpdmUgZXhpc3RzKSwgQm9hcmQgU3VwcG9ydCBQYWNrYWdlCisgICAgICAgICAgICAoQlNQKSBkZXZlbG9wbWVudHMsIGFuZCBjdXN0b20gZmVhdHVyZXMuCisgICAgICAgICAgICBUaGVzZSBhZGRpdGlvbnMgcmVzdWx0IGluIGEgY29tbWVyY2lhbGx5IHJlbGVhc2VkIFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IExpbnV4IGtlcm5lbCB0aGF0IGNhdGVycyB0byBzcGVjaWZpYyBlbWJlZGRlZCBkZXNpZ25lcgorICAgICAgICAgICAgbmVlZHMgZm9yIHRhcmdldGVkIGhhcmR3YXJlLgogICAgICAgICA8L3BhcmE+CisKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIGEga2VybmVsIGlzIG9mZmljaWFsbHkgcmVsZWFzZWQsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gZ29lcyBpbnRvCi0gICAgICAgICAgICB0aGVpciBuZXh0IGRldmVsb3BtZW50IGN5Y2xlLCBvciB1cHdhcmQgcmV2aXNpb24gKHVwcmV2KSBjeWNsZSwgd2hpbGUgc3RpbGwKLSAgICAgICAgICAgIGNvbnRpbnVpbmcgbWFpbnRlbmFuY2Ugb24gdGhlIHJlbGVhc2VkIGtlcm5lbC4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIExpbnV4IGtlcm5lbHMgaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgIGF0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgorICAgICAgICAgICAgSWYgeW91IGxvb2sgYXQgdGhlIGludGVyZmFjZSwgeW91IHdpbGwgc2VlIHRvIHRoZSBsZWZ0IGEKKyAgICAgICAgICAgIGdyb3VwaW5nIG9mIEdpdCByZXBvc2l0b3JpZXMgdGl0bGVkICJZb2N0byBMaW51eCBLZXJuZWwiLgorICAgICAgICAgICAgV2l0aGluIHRoaXMgZ3JvdXAsIHlvdSB3aWxsIGZpbmQgc2V2ZXJhbCBMaW51eCBZb2N0byBrZXJuZWxzCisgICAgICAgICAgICBkZXZlbG9wZWQgYW5kIGluY2x1ZGVkIHdpdGggWW9jdG8gUHJvamVjdCByZWxlYXNlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuMTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzdGFibGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdG8gdXNlIHdpdGggdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZSAyLjAuCisgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCA0LjEgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC40PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDIuMS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDQuNCByZWxlYXNlZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0by00LjY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIHRlbXBvcmFyeSBrZXJuZWwgdGhhdCBpcyBub3QgdGllZCB0byBhbnkgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC44PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHN0YWJsZSB5b2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBSZWxlYXNlIDIuMi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpbnV4LXlvY3RvLTQuOTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzdGFibGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdG8gdXNlIHdpdGggdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZSAyLjMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMga2VybmVsIGlzIGJhc2VkIG9uIHRoZSBMaW51eCA0LjkgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBSZWxlYXNlIDIuMy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDQuMTAgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8tNC4xMjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHN0YWJsZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0byB1c2Ugd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBSZWxlYXNlIDIuNC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBrZXJuZWwgaXMgYmFzZWQgb24gdGhlIExpbnV4IDQuMTIgcmVsZWFzZWQga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5saW51eC15b2N0by1jYWNoZTwvZmlsZW5hbWU+IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgbGludXgteW9jdG8ga2VybmVsCisgICAgICAgICAgICAgICAgICAgIHRyZWUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVwb3NpdG9yeSBpcyB1c2VmdWwgd2hlbiB3b3JraW5nIG9uIHRoZSBsaW51eC15b2N0bworICAgICAgICAgICAgICAgICAgICBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgIkFkdmFuY2VkIEtlcm5lbCBNZXRhZGF0YSIsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2tlcm5lbC1kZXYtYWR2YW5jZWQnPldvcmtpbmcgV2l0aCBBZHZhbmNlZCBNZXRhZGF0YSAoPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+KTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0by1kZXY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIGRldmVsb3BtZW50IGtlcm5lbCBiYXNlZCBvbiB0aGUgbGF0ZXN0IHVwc3RyZWFtIHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgTG9uZyBUZXJtIFN1cHBvcnQgSW5pdGlhdGl2ZSAoTFRTSSkgZm9yIFlvY3RvIExpbnV4CisgICAgICAgICAgICAgICAga2VybmVscyBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBZb2N0byBQcm9qZWN0IHJlbGVhc2VzIDEuNywgMS44LCBhbmQgMi4wLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIExUU0kga2VybmVsIGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xNDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBZb2N0byBQcm9qZWN0IHJlbGVhc2VzIDIuMSwgMi4yLCBhbmQgMi4zLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIExUU0kga2VybmVsIGlzIDxmaWxlbmFtZT5saW51eC15b2N0by00LjE8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgWW9jdG8gUHJvamVjdCByZWxlYXNlIDIuNCwgdGhlIExUU0kga2VybmVsIGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC45PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tNC40PC9maWxlbmFtZT4gaXMgYW4gTFRTCisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSBhIFlvY3RvIExpbnV4IGtlcm5lbCBpcyBvZmZpY2lhbGx5IHJlbGVhc2VkLCB0aGUgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgdGVhbSBnb2VzIGludG8gdGhlaXIgbmV4dCBkZXZlbG9wbWVudCBjeWNsZSwgb3IgdXB3YXJkCisgICAgICAgICAgICByZXZpc2lvbiAodXByZXYpIGN5Y2xlLCB3aGlsZSBzdGlsbCBjb250aW51aW5nIG1haW50ZW5hbmNlIG9uIHRoZQorICAgICAgICAgICAgcmVsZWFzZWQga2VybmVsLgogICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgbW9zdCBzdXN0YWluYWJsZSBhbmQgc3RhYmxlIHdheQotICAgICAgICAgICAgdG8gaW5jbHVkZSBmZWF0dXJlIGRldmVsb3BtZW50IHVwc3RyZWFtIGlzIHRocm91Z2ggYSBrZXJuZWwgdXByZXYgcHJvY2Vzcy4KLSAgICAgICAgICAgIEJhY2stcG9ydGluZyBodW5kcmVkcyBvZiBpbmRpdmlkdWFsIGZpeGVzIGFuZCBtaW5vciBmZWF0dXJlcyBmcm9tIHZhcmlvdXMKLSAgICAgICAgICAgIGtlcm5lbCB2ZXJzaW9ucyBpcyBub3Qgc3VzdGFpbmFibGUgYW5kIGNhbiBlYXNpbHkgY29tcHJvbWlzZSBxdWFsaXR5LgorICAgICAgICAgICAgdG8gaW5jbHVkZSBmZWF0dXJlIGRldmVsb3BtZW50IHVwc3RyZWFtIGlzIHRocm91Z2ggYSBrZXJuZWwgdXByZXYKKyAgICAgICAgICAgIHByb2Nlc3MuCisgICAgICAgICAgICBCYWNrLXBvcnRpbmcgaHVuZHJlZHMgb2YgaW5kaXZpZHVhbCBmaXhlcyBhbmQgbWlub3IgZmVhdHVyZXMgZnJvbQorICAgICAgICAgICAgdmFyaW91cyBrZXJuZWwgdmVyc2lvbnMgaXMgbm90IHN1c3RhaW5hYmxlIGFuZCBjYW4gZWFzaWx5CisgICAgICAgICAgICBjb21wcm9taXNlIHF1YWxpdHkuCiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIER1cmluZyB0aGUgdXByZXYgY3ljbGUsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdXNlcyBhbiBvbmdvaW5nIGFuYWx5c2lzIG9mCi0gICAgICAgICAgICBrZXJuZWwgZGV2ZWxvcG1lbnQsIEJTUCBzdXBwb3J0LCBhbmQgcmVsZWFzZSB0aW1pbmcgdG8gc2VsZWN0IHRoZSBiZXN0Ci0gICAgICAgICAgICBwb3NzaWJsZSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IHZlcnNpb24uCi0gICAgICAgICAgICBUaGUgdGVhbSBjb250aW51YWxseSBtb25pdG9ycyBjb21tdW5pdHkga2VybmVsCi0gICAgICAgICAgICBkZXZlbG9wbWVudCB0byBsb29rIGZvciBzaWduaWZpY2FudCBmZWF0dXJlcyBvZiBpbnRlcmVzdC4KLSAgICAgICAgICAgIFRoZSB0ZWFtIGRvZXMgY29uc2lkZXIgYmFjay1wb3J0aW5nIGxhcmdlIGZlYXR1cmVzIGlmIHRoZXkgaGF2ZSBhIHNpZ25pZmljYW50IGFkdmFudGFnZS4KLSAgICAgICAgICAgIFVzZXIgb3IgY29tbXVuaXR5IGRlbWFuZCBjYW4gYWxzbyB0cmlnZ2VyIGEgYmFjay1wb3J0IG9yIGNyZWF0aW9uIG9mIG5ldwotICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBpbiB0aGUgWW9jdG8gUHJvamVjdCBiYXNlbGluZSBrZXJuZWwgZHVyaW5nIHRoZSB1cHJldiBjeWNsZS4KKyAgICAgICAgICAgIER1cmluZyB0aGUgdXByZXYgY3ljbGUsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gdXNlcyBhbiBvbmdvaW5nCisgICAgICAgICAgICBhbmFseXNpcyBvZiBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQsIEJTUCBzdXBwb3J0LCBhbmQgcmVsZWFzZQorICAgICAgICAgICAgdGltaW5nIHRvIHNlbGVjdCB0aGUgYmVzdCBwb3NzaWJsZSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+CisgICAgICAgICAgICBMaW51eCBrZXJuZWwgdmVyc2lvbiBvbiB3aGljaCB0byBiYXNlIHN1YnNlcXVlbnQgWW9jdG8gTGludXgKKyAgICAgICAgICAgIGtlcm5lbCBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgIFRoZSB0ZWFtIGNvbnRpbnVhbGx5IG1vbml0b3JzIExpbnV4IGNvbW11bml0eSBrZXJuZWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIHRvIGxvb2sgZm9yIHNpZ25pZmljYW50IGZlYXR1cmVzIG9mIGludGVyZXN0LgorICAgICAgICAgICAgVGhlIHRlYW0gZG9lcyBjb25zaWRlciBiYWNrLXBvcnRpbmcgbGFyZ2UgZmVhdHVyZXMgaWYgdGhleSBoYXZlIGEKKyAgICAgICAgICAgIHNpZ25pZmljYW50IGFkdmFudGFnZS4KKyAgICAgICAgICAgIFVzZXIgb3IgY29tbXVuaXR5IGRlbWFuZCBjYW4gYWxzbyB0cmlnZ2VyIGEgYmFjay1wb3J0IG9yIGNyZWF0aW9uCisgICAgICAgICAgICBvZiBuZXcgZnVuY3Rpb25hbGl0eSBpbiB0aGUgWW9jdG8gUHJvamVjdCBiYXNlbGluZSBrZXJuZWwgZHVyaW5nCisgICAgICAgICAgICB0aGUgdXByZXYgY3ljbGUuCiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEdlbmVyYWxseSBzcGVha2luZywgZXZlcnkgbmV3IGtlcm5lbCBib3RoIGFkZHMgZmVhdHVyZXMgYW5kIGludHJvZHVjZXMgbmV3IGJ1Z3MuCi0gICAgICAgICAgICBUaGVzZSBjb25zZXF1ZW5jZXMgYXJlIHRoZSBiYXNpYyBwcm9wZXJ0aWVzIG9mIHVwc3RyZWFtIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgYXJlCi0gICAgICAgICAgICBtYW5hZ2VkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IHRlYW0ncyBrZXJuZWwgc3RyYXRlZ3kuCi0gICAgICAgICAgICBJdCBpcyB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtJ3MgcG9saWN5IHRvIG5vdCBiYWNrLXBvcnQgbWlub3IgZmVhdHVyZXMgdG8gdGhlIHJlbGVhc2VkIGtlcm5lbC4KLSAgICAgICAgICAgIFRoZXkgb25seSBjb25zaWRlciBiYWNrLXBvcnRpbmcgc2lnbmlmaWNhbnQgdGVjaG5vbG9naWNhbCBqdW1wcyAtIGFuZCwgdGhhdCBpcyBkb25lCi0gICAgICAgICAgICBhZnRlciBhIGNvbXBsZXRlIGdhcCBhbmFseXNpcy4KLSAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgcG9saWN5IGlzIHRoYXQgYmFjay1wb3J0aW5nIGFueSBzbWFsbCB0byBtZWRpdW0gc2l6ZWQgY2hhbmdlCi0gICAgICAgICAgICBmcm9tIGFuIGV2b2x2aW5nIGtlcm5lbCBjYW4gZWFzaWx5IGNyZWF0ZSBtaXNtYXRjaGVzLCBpbmNvbXBhdGliaWxpdGllcyBhbmQgdmVyeQotICAgICAgICAgICAgc3VidGxlIGVycm9ycy4KKyAgICAgICAgICAgIEdlbmVyYWxseSBzcGVha2luZywgZXZlcnkgbmV3IExpbnV4IGtlcm5lbCBib3RoIGFkZHMgZmVhdHVyZXMgYW5kCisgICAgICAgICAgICBpbnRyb2R1Y2VzIG5ldyBidWdzLgorICAgICAgICAgICAgVGhlc2UgY29uc2VxdWVuY2VzIGFyZSB0aGUgYmFzaWMgcHJvcGVydGllcyBvZiB1cHN0cmVhbQorICAgICAgICAgICAgTGludXgga2VybmVsIGRldmVsb3BtZW50IGFuZCBhcmUgbWFuYWdlZCBieSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgdGVhbSdzIFlvY3RvIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBzdHJhdGVneS4KKyAgICAgICAgICAgIEl0IGlzIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0ncyBwb2xpY3kgdG8gbm90IGJhY2stcG9ydCBtaW5vcgorICAgICAgICAgICAgZmVhdHVyZXMgdG8gdGhlIHJlbGVhc2VkIFlvY3RvIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgIFRoZXkgb25seSBjb25zaWRlciBiYWNrLXBvcnRpbmcgc2lnbmlmaWNhbnQgdGVjaG5vbG9naWNhbAorICAgICAgICAgICAganVtcHMgJmRhc2g7IGFuZCwgdGhhdCBpcyBkb25lIGFmdGVyIGEgY29tcGxldGUgZ2FwIGFuYWx5c2lzLgorICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBwb2xpY3kgaXMgdGhhdCBiYWNrLXBvcnRpbmcgYW55IHNtYWxsIHRvCisgICAgICAgICAgICBtZWRpdW0gc2l6ZWQgY2hhbmdlIGZyb20gYW4gZXZvbHZpbmcgTGludXgga2VybmVsIGNhbiBlYXNpbHkKKyAgICAgICAgICAgIGNyZWF0ZSBtaXNtYXRjaGVzLCBpbmNvbXBhdGliaWxpdGllcyBhbmQgdmVyeSBzdWJ0bGUgZXJyb3JzLgogICAgICAgICA8L3BhcmE+CisKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGVzZSBwb2xpY2llcyByZXN1bHQgaW4gYm90aCBhIHN0YWJsZSBhbmQgYSBjdXR0aW5nCi0gICAgICAgICAgICBlZGdlIGtlcm5lbCB0aGF0IG1peGVzIGZvcndhcmQgcG9ydHMgb2YgZXhpc3RpbmcgZmVhdHVyZXMgYW5kIHNpZ25pZmljYW50IGFuZCBjcml0aWNhbAotICAgICAgICAgICAgbmV3IGZ1bmN0aW9uYWxpdHkuCi0gICAgICAgICAgICBGb3J3YXJkIHBvcnRpbmcgZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVscyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwKLSAgICAgICAgICAgIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgIm1pY3JvIHVwcmV2LiIKLSAgICAgICAgICAgIFRoZSBtYW55IOKAnG1pY3JvIHVwcmV2c+KAnSBwcm9kdWNlIGEga2VybmVsIHZlcnNpb24gd2l0aCBhIG1peCBvZgotICAgICAgICAgICAgaW1wb3J0YW50IG5ldyBtYWlubGluZSwgbm9uLW1haW5saW5lLCBCU1AgZGV2ZWxvcG1lbnRzIGFuZCBmZWF0dXJlIGludGVncmF0aW9ucy4KLSAgICAgICAgICAgIFRoaXMga2VybmVsIGdpdmVzIGluc2lnaHQgaW50byBuZXcgZmVhdHVyZXMgYW5kIGFsbG93cyBmb2N1c2VkCi0gICAgICAgICAgICBhbW91bnRzIG9mIHRlc3RpbmcgdG8gYmUgZG9uZSBvbiB0aGUga2VybmVsLCB3aGljaCBwcmV2ZW50cwotICAgICAgICAgICAgc3VycHJpc2VzIHdoZW4gc2VsZWN0aW5nIHRoZSBuZXh0IG1ham9yIHVwcmV2LgotICAgICAgICAgICAgVGhlIHF1YWxpdHkgb2YgdGhlc2UgY3V0dGluZyBlZGdlIGtlcm5lbHMgaXMgZXZvbHZpbmcgYW5kIHRoZSBrZXJuZWxzIGFyZSB1c2VkIGluIGxlYWRpbmcgZWRnZQotICAgICAgICAgICAgZmVhdHVyZSBhbmQgQlNQIGRldmVsb3BtZW50LgorICAgICAgICAgICAgVGhlIHBvbGljaWVzIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb24gcmVzdWx0IGluIGJvdGggYSBzdGFibGUKKyAgICAgICAgICAgIGFuZCBhIGN1dHRpbmcgZWRnZSBZb2N0byBMaW51eCBrZXJuZWwgdGhhdCBtaXhlcyBmb3J3YXJkIHBvcnRzIG9mCisgICAgICAgICAgICBleGlzdGluZyBMaW51eCBrZXJuZWwgZmVhdHVyZXMgYW5kIHNpZ25pZmljYW50IGFuZCBjcml0aWNhbCBuZXcKKyAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICBGb3J3YXJkIHBvcnRpbmcgTGludXgga2VybmVsIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUgWW9jdG8gTGludXgKKyAgICAgICAgICAgIGtlcm5lbHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFlvY3RvIFByb2plY3QgY2FuIGJlIHRob3VnaHQgb2YgYXMKKyAgICAgICAgICAgIGEgIm1pY3JvIHVwcmV2LiIKKyAgICAgICAgICAgIFRoZSBtYW55IOKAnG1pY3JvIHVwcmV2c+KAnSBwcm9kdWNlIGEgWW9jdG8gTGludXgga2VybmVsIHZlcnNpb24gd2l0aAorICAgICAgICAgICAgYSBtaXggb2YgaW1wb3J0YW50IG5ldyBtYWlubGluZSwgbm9uLW1haW5saW5lLCBCU1AgZGV2ZWxvcG1lbnRzCisgICAgICAgICAgICBhbmQgZmVhdHVyZSBpbnRlZ3JhdGlvbnMuCisgICAgICAgICAgICBUaGlzIFlvY3RvIExpbnV4IGtlcm5lbCBnaXZlcyBpbnNpZ2h0IGludG8gbmV3IGZlYXR1cmVzIGFuZAorICAgICAgICAgICAgYWxsb3dzIGZvY3VzZWQgYW1vdW50cyBvZiB0ZXN0aW5nIHRvIGJlIGRvbmUgb24gdGhlIGtlcm5lbCwKKyAgICAgICAgICAgIHdoaWNoIHByZXZlbnRzIHN1cnByaXNlcyB3aGVuIHNlbGVjdGluZyB0aGUgbmV4dCBtYWpvciB1cHJldi4KKyAgICAgICAgICAgIFRoZSBxdWFsaXR5IG9mIHRoZXNlIGN1dHRpbmcgZWRnZSBZb2N0byBMaW51eCBrZXJuZWxzIGlzIGV2b2x2aW5nCisgICAgICAgICAgICBhbmQgdGhlIGtlcm5lbHMgYXJlIHVzZWQgaW4gbGVhZGluZyBlZGdlIGZlYXR1cmUgYW5kIEJTUAorICAgICAgICAgICAgZGV2ZWxvcG1lbnQuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0na2VybmVsLWFyY2hpdGVjdHVyZSc+Ci0gICAgICAgIDx0aXRsZT5LZXJuZWwgQXJjaGl0ZWN0dXJlPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0neW9jdG8tbGludXgta2VybmVsLWFyY2hpdGVjdHVyZS1hbmQtYnJhbmNoaW5nLXN0cmF0ZWdpZXMnPgorICAgICAgICA8dGl0bGU+WW9jdG8gTGludXggS2VybmVsIEFyY2hpdGVjdHVyZSBhbmQgQnJhbmNoaW5nIFN0cmF0ZWdpZXM8L3RpdGxlPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBrZXJuZWxzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZQotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhbmQgcHJvdmlkZXMgaW5mb3JtYXRpb24KLSAgICAgICAgICAgIG9uIHRoZSBtZWNoYW5pc21zIHVzZWQgdG8gYWNoaWV2ZSB0aGF0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCBhIGtleSBnb2FsIG9mIHRoZSBZb2N0byBQcm9qZWN0IGlzCisgICAgICAgICAgICB0byBwcmVzZW50IHRoZSBkZXZlbG9wZXIgd2l0aCBhIGtlcm5lbCB0aGF0IGhhcyBhIGNsZWFyIGFuZAorICAgICAgICAgICAgY29udGludW91cyBoaXN0b3J5IHRoYXQgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4KKyAgICAgICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgYW5kIG1lY2hhbmlzbXMsIGluIHBhcnRpY3VsYXIgdGhlIGJyYW5jaGluZworICAgICAgICAgICAgc3RyYXRlZ2llcywgdXNlZCBhY2hpZXZlIHRoYXQgZ29hbCBpbiBhIG1hbm5lciBzaW1pbGFyIHRvCisgICAgICAgICAgICB1cHN0cmVhbSBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4uCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nYXJjaGl0ZWN0dXJlLW92ZXJ2aWV3Jz4KLSAgICAgICAgICAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgYSBrZXkgZ29hbCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byBwcmVzZW50IHRoZQotICAgICAgICAgICAgICAgIGRldmVsb3BlciB3aXRoCi0gICAgICAgICAgICAgICAgYSBrZXJuZWwgdGhhdCBoYXMgYSBjbGVhciBhbmQgY29udGludW91cyBoaXN0b3J5IHRoYXQgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4KLSAgICAgICAgICAgICAgICBUaGUgYXJjaGl0ZWN0dXJlIGFuZCBtZWNoYW5pc21zIHVzZWQgYWNoaWV2ZSB0aGF0IGdvYWwgaW4gYSBtYW5uZXIgc2ltaWxhciB0byB0aGUKLSAgICAgICAgICAgICAgICB1cHN0cmVhbSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiB0aGluayBvZiBhIFlvY3RvIFByb2plY3Qga2VybmVsIGFzIGNvbnNpc3Rpbmcgb2YgYSBiYXNlbGluZSBMaW51eCBrZXJuZWwgd2l0aAotICAgICAgICAgICAgICAgIGFkZGVkIGZlYXR1cmVzIGxvZ2ljYWxseSBzdHJ1Y3R1cmVkIG9uIHRvcCBvZiB0aGUgYmFzZWxpbmUuCi0gICAgICAgICAgICAgICAgVGhlIGZlYXR1cmVzIGFyZSB0YWdnZWQgYW5kIG9yZ2FuaXplZCBieSB3YXkgb2YgYSBicmFuY2hpbmcgc3RyYXRlZ3kgaW1wbGVtZW50ZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgc291cmNlIGNvZGUgbWFuYWdlciAoU0NNKSBHaXQuCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEdpdCBhcyBhcHBsaWVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dpdCc+R2l0PC91bGluaz4iIHNlY3Rpb24gaW4gdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIHVzZXIgaGFzIHRoZSBhYmlsaXR5IHRvIHNlZSB0aGUgYWRkZWQgZmVhdHVyZXMgYW5kCi0gICAgICAgICAgICAgICAgdGhlIGNvbW1pdHMgdGhhdCBtYWtlIHVwIHRob3NlIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIGJlaW5nIGFibGUgdG8gc2VlIGFkZGVkIGZlYXR1cmVzLCB0aGUgdXNlciBjYW4gYWxzbyB2aWV3IHRoZSBoaXN0b3J5IG9mIHdoYXQKLSAgICAgICAgICAgICAgICBtYWRlIHVwIHRoZSBiYXNlbGluZSBrZXJuZWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlsbHVzdHJhdGlvbiBzaG93cyB0aGUgY29uY2VwdHVhbCBZb2N0byBQcm9qZWN0IGtlcm5lbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9rZXJuZWwtYXJjaGl0ZWN0dXJlLW92ZXJ2aWV3LnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgYWxpZ249ImNlbnRlciIgc2NhbGU9IjEwMCIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEluIHRoZSBpbGx1c3RyYXRpb24sIHRoZSAiS2VybmVsLm9yZyBCcmFuY2ggUG9pbnQiCi0gICAgICAgICAgICAgICAgbWFya3MgdGhlIHNwZWNpZmljIHNwb3QgKG9yIHJlbGVhc2UpIGZyb20KLSAgICAgICAgICAgICAgICB3aGljaCB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgaXMgY3JlYXRlZC4KLSAgICAgICAgICAgICAgICBGcm9tIHRoaXMgcG9pbnQgInVwIiBpbiB0aGUgdHJlZSwgZmVhdHVyZXMgYW5kIGRpZmZlcmVuY2VzIGFyZSBvcmdhbml6ZWQgYW5kIHRhZ2dlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSAiWW9jdG8gUHJvamVjdCBCYXNlbGluZSBLZXJuZWwiIGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkgdGhhdCBpcyBjb21tb24gdG8gZXZlcnkga2VybmVsCi0gICAgICAgICAgICAgICAgdHlwZSBhbmQgQlNQIHRoYXQgaXMgb3JnYW5pemVkIGZ1cnRoZXIgdXAgdGhlIHRyZWUuCi0gICAgICAgICAgICAgICAgUGxhY2luZyB0aGVzZSBjb21tb24gZmVhdHVyZXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgdHJlZSB0aGlzIHdheSBtZWFucyBmZWF0dXJlcyBkbyBub3QgaGF2ZSB0byBiZSBkdXBsaWNhdGVkIGFsb25nIGluZGl2aWR1YWwgYnJhbmNoZXMgb2YgdGhlCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRnJvbSB0aGUgWW9jdG8gUHJvamVjdCBCYXNlbGluZSBLZXJuZWwsIGJyYW5jaCBwb2ludHMgcmVwcmVzZW50IHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkKLSAgICAgICAgICAgICAgICBmb3IgaW5kaXZpZHVhbCBCU1BzIGFzIHdlbGwgYXMgcmVhbC10aW1lIGtlcm5lbHMuCi0gICAgICAgICAgICAgICAgVGhlIGlsbHVzdHJhdGlvbiByZXByZXNlbnRzIHRoaXMgdGhyb3VnaCB0aHJlZSBCU1Atc3BlY2lmaWMgYnJhbmNoZXMgYW5kIGEgcmVhbC10aW1lCi0gICAgICAgICAgICAgICAga2VybmVsIGJyYW5jaC4KLSAgICAgICAgICAgICAgICBFYWNoIGJyYW5jaCByZXByZXNlbnRzIHNvbWUgdW5pcXVlIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBCU1Agb3IgYSByZWFsLXRpbWUga2VybmVsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlIHN0cnVjdHVyZSwgdGhlIHJlYWwtdGltZSBrZXJuZWwgYnJhbmNoIGhhcyBjb21tb24gZmVhdHVyZXMgZm9yIGFsbAotICAgICAgICAgICAgICAgIHJlYWwtdGltZSBrZXJuZWxzIGFuZCBjb250YWlucwotICAgICAgICAgICAgICAgIG1vcmUgYnJhbmNoZXMgZm9yIGluZGl2aWR1YWwgQlNQLXNwZWNpZmljIHJlYWwtdGltZSBrZXJuZWxzLgotICAgICAgICAgICAgICAgIFRoZSBpbGx1c3RyYXRpb24gc2hvd3MgdGhyZWUgYnJhbmNoZXMgYXMgYW4gZXhhbXBsZS4KLSAgICAgICAgICAgICAgICBFYWNoIGJyYW5jaCBwb2ludHMgdGhlIHdheSB0byBzcGVjaWZpYywgdW5pcXVlIGZlYXR1cmVzIGZvciBhIHJlc3BlY3RpdmUgcmVhbC10aW1lCi0gICAgICAgICAgICAgICAga2VybmVsIGFzIHRoZXkgYXBwbHkgdG8gYSBnaXZlbiBCU1AuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIHRyZWUgc3RydWN0dXJlIHByZXNlbnRzIGEgY2xlYXIgcGF0aCBvZiBtYXJrZXJzIChvciBicmFuY2hlcykgdG8gdGhlCi0gICAgICAgICAgICAgICAgZGV2ZWxvcGVyIHRoYXQsIGZvciBhbGwgcHJhY3RpY2FsIHB1cnBvc2VzLCBpcyB0aGUga2VybmVsIG5lZWRlZCBmb3IgYW55IGdpdmVuIHNldAotICAgICAgICAgICAgICAgIG9mIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgYSBZb2N0byBMaW51eCBrZXJuZWwgYXMgY29uc2lzdGluZyBvZiBhCisgICAgICAgICAgICBiYXNlbGluZSBMaW51eCBrZXJuZWwgd2l0aCBhZGRlZCBmZWF0dXJlcyBsb2dpY2FsbHkgc3RydWN0dXJlZAorICAgICAgICAgICAgb24gdG9wIG9mIHRoZSBiYXNlbGluZS4KKyAgICAgICAgICAgIFRoZSBmZWF0dXJlcyBhcmUgdGFnZ2VkIGFuZCBvcmdhbml6ZWQgYnkgd2F5IG9mIGEgYnJhbmNoaW5nCisgICAgICAgICAgICBzdHJhdGVneSBpbXBsZW1lbnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHVzaW5nIHRoZQorICAgICAgICAgICAgU291cmNlIENvZGUgTWFuYWdlciAoU0NNKSBHaXQuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdCBpcyB0aGUgb2J2aW91cyBTQ00gZm9yIG1lZXRpbmcgdGhlIFlvY3RvIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgb3JnYW5pemF0aW9uYWwgYW5kIHN0cnVjdHVyYWwgZ29hbHMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGlzIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBOb3Qgb25seSBpcyBHaXQgdGhlIFNDTSBmb3IgTGludXgga2VybmVsIGRldmVsb3BtZW50IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+IGJ1dCwgR2l0IGNvbnRpbnVlcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3cgaW4gcG9wdWxhcml0eSBhbmQgc3VwcG9ydHMgbWFueSBkaWZmZXJlbnQgd29yaworICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3dzLCBmcm9udC1lbmRzIGFuZCBtYW5hZ2VtZW50IHRlY2huaXF1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGRvY3VtZW50YXRpb24gb24gR2l0IGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG9jdW1lbnRhdGlvbic+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZ2V0IGFuIGludHJvZHVjdGlvbiB0byBHaXQgYXMgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpZXMgdG8gdGhlIFlvY3RvIFByb2plY3QgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsYXR0ZXIgcmVmZXJlbmNlIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mCisgICAgICAgICAgICAgICAgICAgICAgICBHaXQgYW5kIHByZXNlbnRzIGEgbWluaW1hbCBzZXQgb2YgR2l0IGNvbW1hbmRzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFsbG93cyB5b3UgdG8gYmUgZnVuY3Rpb25hbCB1c2luZyBHaXQuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhcyBtdWNoLCBvciBhcyBsaXR0bGUsIG9mIHdoYXQgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXMgdG8gb2ZmZXIgdG8gYWNjb21wbGlzaCB3aGF0IHlvdSBuZWVkIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIGJlIGEgIkdpdCBFeHBlcnQiIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB1c2UgaXQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2JyYW5jaGluZy1hbmQtd29ya2Zsb3cnPgotICAgICAgICAgICAgPHRpdGxlPkJyYW5jaGluZyBTdHJhdGVneSBhbmQgV29ya2Zsb3c8L3RpdGxlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBjcmVhdGVzIGtlcm5lbCBicmFuY2hlcyBhdCBwb2ludHMgd2hlcmUgZnVuY3Rpb25hbGl0eSBpcwotICAgICAgICAgICAgICAgIG5vIGxvbmdlciBzaGFyZWQgYW5kIHRodXMsIG5lZWRzIHRvIGJlIGlzb2xhdGVkLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBib2FyZC1zcGVjaWZpYyBpbmNvbXBhdGliaWxpdGllcyB3b3VsZCByZXF1aXJlIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5Ci0gICAgICAgICAgICAgICAgYW5kIHdvdWxkIHJlcXVpcmUgYSBicmFuY2ggdG8gc2VwYXJhdGUgdGhlIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgIExpa2V3aXNlLCBmb3Igc3BlY2lmaWMga2VybmVsIGZlYXR1cmVzLCB0aGUgc2FtZSBicmFuY2hpbmcgc3RyYXRlZ3kgaXMgdXNlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgYnJhbmNoaW5nIHN0cmF0ZWd5IHJlc3VsdHMgaW4gYSB0cmVlIHRoYXQgaGFzIGZlYXR1cmVzIG9yZ2FuaXplZCB0byBiZSBzcGVjaWZpYwotICAgICAgICAgICAgICAgIGZvciBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHksIHNpbmdsZSBrZXJuZWwgdHlwZXMsIG9yIGEgc3Vic2V0IG9mIGtlcm5lbCB0eXBlcy4KLSAgICAgICAgICAgICAgICBUaGlzIHN0cmF0ZWd5IGFsc28gcmVzdWx0cyBpbiBub3QgaGF2aW5nIHRvIHN0b3JlIHRoZSBzYW1lIGZlYXR1cmUgdHdpY2UKLSAgICAgICAgICAgICAgICBpbnRlcm5hbGx5IGluIHRoZSB0cmVlLgotICAgICAgICAgICAgICAgIFJhdGhlciwgdGhlIGtlcm5lbCB0ZWFtIHN0b3JlcyB0aGUgdW5pcXVlIGRpZmZlcmVuY2VzIHJlcXVpcmVkIHRvIGFwcGx5IHRoZQotICAgICAgICAgICAgICAgIGZlYXR1cmUgb250byB0aGUga2VybmVsIHR5cGUgaW4gcXVlc3Rpb24uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3RyaXZlcyB0byBwbGFjZSBmZWF0dXJlcyBpbiB0aGUgdHJlZSBzdWNoIHRoYXQgdGhleSBjYW4gYmUKLSAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGJ5IGFsbCBib2FyZHMgYW5kIGtlcm5lbCB0eXBlcyB3aGVyZSBwb3NzaWJsZS4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgZHVyaW5nIGRldmVsb3BtZW50IGN5Y2xlcyBvciB3aGVuIGxhcmdlIGZlYXR1cmVzIGFyZSBtZXJnZWQsCi0gICAgICAgICAgICAgICAgICAgIHRoZSB0ZWFtIGNhbm5vdCBhbHdheXMgZm9sbG93IHRoaXMgcHJhY3RpY2UuCi0gICAgICAgICAgICAgICAgICAgIEluIHRob3NlIGNhc2VzLCB0aGUgdGVhbSB1c2VzIGlzb2xhdGVkIGJyYW5jaGVzIHRvIG1lcmdlIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJTUC1zcGVjaWZpYyBjb2RlIGFkZGl0aW9ucyBhcmUgaGFuZGxlZCBpbiBhIHNpbWlsYXIgbWFubmVyIHRvIGtlcm5lbC1zcGVjaWZpYyBhZGRpdGlvbnMuCi0gICAgICAgICAgICAgICAgU29tZSBCU1BzIG9ubHkgbWFrZSBzZW5zZSBnaXZlbiBjZXJ0YWluIGtlcm5lbCB0eXBlcy4KLSAgICAgICAgICAgICAgICBTbywgZm9yIHRoZXNlIHR5cGVzLCB0aGUgdGVhbSBjcmVhdGVzIGJyYW5jaGVzIG9mZiB0aGUgZW5kIG9mIHRoYXQga2VybmVsIHR5cGUgZm9yIGFsbAotICAgICAgICAgICAgICAgIG9mIHRoZSBCU1BzIHRoYXQgYXJlIHN1cHBvcnRlZCBvbiB0aGF0IGtlcm5lbCB0eXBlLgotICAgICAgICAgICAgICAgIEZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSB0b29scyB0aGF0IGNyZWF0ZSB0aGUgQlNQIGJyYW5jaCwgdGhlIEJTUCBpcyByZWFsbHkgbm8KLSAgICAgICAgICAgICAgICBkaWZmZXJlbnQgdGhhbiBhIGZlYXR1cmUuCi0gICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgc2FtZSBicmFuY2hpbmcgc3RyYXRlZ3kgYXBwbGllcyB0byBCU1BzIGFzIGl0IGRvZXMgdG8gZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgU28gYWdhaW4sIHJhdGhlciB0aGFuIHN0b3JlIHRoZSBCU1AgdHdpY2UsIHRoZSB0ZWFtIG9ubHkgc3RvcmVzIHRoZSB1bmlxdWUKLSAgICAgICAgICAgICAgICBkaWZmZXJlbmNlcyBmb3IgdGhlIEJTUCBhY3Jvc3MgdGhlIHN1cHBvcnRlZCBtdWx0aXBsZSBrZXJuZWxzLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2hpbGUgdGhpcyBzdHJhdGVneSBjYW4gcmVzdWx0IGluIGEgdHJlZSB3aXRoIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGJyYW5jaGVzLCBpdCBpcwotICAgICAgICAgICAgICAgIGltcG9ydGFudCB0byByZWFsaXplIHRoYXQgZnJvbSB0aGUgZGV2ZWxvcGVyJ3MgcG9pbnQgb2YgdmlldywgdGhlcmUgaXMgYSBsaW5lYXIKLSAgICAgICAgICAgICAgICBwYXRoIHRoYXQgdHJhdmVscyBmcm9tIHRoZSBiYXNlbGluZSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LCB0aHJvdWdoIGEgc2VsZWN0Ci0gICAgICAgICAgICAgICAgZ3JvdXAgb2YgZmVhdHVyZXMgYW5kIGVuZHMgd2l0aCB0aGVpciBCU1Atc3BlY2lmaWMgY29tbWl0cy4KLSAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIGRpdmlzaW9ucyBvZiB0aGUga2VybmVsIGFyZSB0cmFuc3BhcmVudCBhbmQgYXJlIG5vdCByZWxldmFudAotICAgICAgICAgICAgICAgIHRvIHRoZSBkZXZlbG9wZXIgb24gYSBkYXktdG8tZGF5IGJhc2lzLgotICAgICAgICAgICAgICAgIEZyb20gdGhlIGRldmVsb3BlcidzIHBlcnNwZWN0aXZlLCB0aGlzIHBhdGggaXMgdGhlICJtYXN0ZXIiIGJyYW5jaC4KLSAgICAgICAgICAgICAgICBUaGUgZGV2ZWxvcGVyIGRvZXMgbm90IG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGV4aXN0ZW5jZSBvZiBhbnkgb3RoZXIgYnJhbmNoZXMgYXQgYWxsLgotICAgICAgICAgICAgICAgIE9mIGNvdXJzZSwgdGhlcmUgaXMgdmFsdWUgaW4gdGhlIGV4aXN0ZW5jZSBvZiB0aGVzZSBicmFuY2hlcwotICAgICAgICAgICAgICAgIGluIHRoZSB0cmVlLCBzaG91bGQgYSBwZXJzb24gZGVjaWRlIHRvIGV4cGxvcmUgdGhlbS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYSBjb21wYXJpc29uIGJldHdlZW4gdHdvIEJTUHMgYXQgZWl0aGVyIHRoZSBjb21taXQgbGV2ZWwgb3IgYXQgdGhlIGxpbmUtYnktbGluZQotICAgICAgICAgICAgICAgIGNvZGUgPGZpbGVuYW1lPmRpZmY8L2ZpbGVuYW1lPiBsZXZlbCBpcyBub3cgYSB0cml2aWFsIG9wZXJhdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdvcmtpbmcgd2l0aCB0aGUga2VybmVsIGFzIGEgc3RydWN0dXJlZCB0cmVlIGZvbGxvd3MgcmVjb2duaXplZCBjb21tdW5pdHkgYmVzdCBwcmFjdGljZXMuCi0gICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGtlcm5lbCBhcyBzaGlwcGVkIHdpdGggdGhlIHByb2R1Y3QsIHNob3VsZCBiZQotICAgICAgICAgICAgICAgIGNvbnNpZGVyZWQgYW4gInVwc3RyZWFtIHNvdXJjZSIgYW5kIHZpZXdlZCBhcyBhIHNlcmllcyBvZgotICAgICAgICAgICAgICAgIGhpc3RvcmljYWwgYW5kIGRvY3VtZW50ZWQgbW9kaWZpY2F0aW9ucyAoY29tbWl0cykuCi0gICAgICAgICAgICAgICAgVGhlc2UgbW9kaWZpY2F0aW9ucyByZXByZXNlbnQgdGhlIGRldmVsb3BtZW50IGFuZCBzdGFiaWxpemF0aW9uIGRvbmUKLSAgICAgICAgICAgICAgICBieSB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgZGV2ZWxvcG1lbnQgdGVhbS4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJlY2F1c2UgY29tbWl0cyBvbmx5IGNoYW5nZSBhdCBzaWduaWZpY2FudCByZWxlYXNlIHBvaW50cyBpbiB0aGUgcHJvZHVjdCBsaWZlIGN5Y2xlLAotICAgICAgICAgICAgICAgIGRldmVsb3BlcnMgY2FuIHdvcmsgb24gYSBicmFuY2ggY3JlYXRlZAotICAgICAgICAgICAgICAgIGZyb20gdGhlIGxhc3QgcmVsZXZhbnQgY29tbWl0IGluIHRoZSBzaGlwcGVkIFlvY3RvIFByb2plY3Qga2VybmVsLgotICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBwcmV2aW91c2x5LCB0aGUgc3RydWN0dXJlIGlzIHRyYW5zcGFyZW50IHRvIHRoZSBkZXZlbG9wZXIKLSAgICAgICAgICAgICAgICBiZWNhdXNlIHRoZSBrZXJuZWwgdHJlZSBpcyBsZWZ0IGluIHRoaXMgc3RhdGUgYWZ0ZXIgY2xvbmluZyBhbmQgYnVpbGRpbmcgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVzaW5nIEdpdCdzIHRhZ2dpbmcgYW5kIGJyYW5jaGluZyBmZWF0dXJlcywgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIHRlYW0gY3JlYXRlcyBrZXJuZWwgYnJhbmNoZXMgYXQgcG9pbnRzIHdoZXJlIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgICAgICAgIG5vIGxvbmdlciBzaGFyZWQgYW5kIHRodXMsIG5lZWRzIHRvIGJlIGlzb2xhdGVkLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGJvYXJkLXNwZWNpZmljIGluY29tcGF0aWJpbGl0aWVzIHdvdWxkIHJlcXVpcmUKKyAgICAgICAgICAgIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5IGFuZCB3b3VsZCByZXF1aXJlIGEgYnJhbmNoIHRvCisgICAgICAgICAgICBzZXBhcmF0ZSB0aGUgZmVhdHVyZXMuCisgICAgICAgICAgICBMaWtld2lzZSwgZm9yIHNwZWNpZmljIGtlcm5lbCBmZWF0dXJlcywgdGhlIHNhbWUgYnJhbmNoaW5nCisgICAgICAgICAgICBzdHJhdGVneSBpcyB1c2VkLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3NvdXJjZS1jb2RlLW1hbmFnZXItZ2l0Jz4KLSAgICAgICAgICAgIDx0aXRsZT5Tb3VyY2UgQ29kZSBNYW5hZ2VyIC0gR2l0PC90aXRsZT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBTb3VyY2UgQ29kZSBNYW5hZ2VyIChTQ00pIGlzIEdpdC4KLSAgICAgICAgICAgICAgICBUaGlzIFNDTSBpcyB0aGUgb2J2aW91cyBtZWNoYW5pc20gZm9yIG1lZXRpbmcgdGhlIHByZXZpb3VzbHkgbWVudGlvbmVkIGdvYWxzLgotICAgICAgICAgICAgICAgIE5vdCBvbmx5IGlzIGl0IHRoZSBTQ00gZm9yIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gYnV0LAotICAgICAgICAgICAgICAgIEdpdCBjb250aW51ZXMgdG8gZ3JvdyBpbiBwb3B1bGFyaXR5IGFuZCBzdXBwb3J0cyBtYW55IGRpZmZlcmVudCB3b3JrIGZsb3dzLAotICAgICAgICAgICAgICAgIGZyb250LWVuZHMgYW5kIG1hbmFnZW1lbnQgdGVjaG5pcXVlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBkb2N1bWVudGF0aW9uIG9uIEdpdCBhdCA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG9jdW1lbnRhdGlvbic+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGdldCBhbiBpbnRyb2R1Y3Rpb24gdG8gR2l0IGFzIGl0IGFwcGxpZXMgdG8gdGhlIFlvY3RvIFByb2plY3QgaW4gdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dpdCc+R2l0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgICAgICAgICAgICAgVGhlc2UgcmVmZXJlbmNlZCBzZWN0aW9ucyBvdmVydmlldyBHaXQgYW5kIGRlc2NyaWJlIGEgbWluaW1hbCBzZXQgb2YKLSAgICAgICAgICAgICAgICBjb21tYW5kcyB0aGF0IGFsbG93cyB5b3UgdG8gYmUgZnVuY3Rpb25hbCB1c2luZyBHaXQuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGFzIG11Y2gsIG9yIGFzIGxpdHRsZSwgb2Ygd2hhdCBHaXQgaGFzIHRvIG9mZmVyIHRvIGFjY29tcGxpc2ggd2hhdAotICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCBmb3IgeW91ciBwcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gYmUgYSAiR2l0IE1hc3RlciIgaW4gb3JkZXIgdG8gdXNlIGl0IHdpdGggdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyAidHJlZS1saWtlIiBhcmNoaXRlY3R1cmUgcmVzdWx0cyBpbiBhIHN0cnVjdHVyZSB0aGF0IGhhcworICAgICAgICAgICAgZmVhdHVyZXMgb3JnYW5pemVkIHRvIGJlIHNwZWNpZmljIGZvciBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHksCisgICAgICAgICAgICBzaW5nbGUga2VybmVsIHR5cGVzLCBvciBhIHN1YnNldCBvZiBrZXJuZWwgdHlwZXMuCisgICAgICAgICAgICBUaHVzLCB0aGUgdXNlciBoYXMgdGhlIGFiaWxpdHkgdG8gc2VlIHRoZSBhZGRlZCBmZWF0dXJlcyBhbmQgdGhlCisgICAgICAgICAgICBjb21taXRzIHRoYXQgbWFrZSB1cCB0aG9zZSBmZWF0dXJlcy4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIGJlaW5nIGFibGUgdG8gc2VlIGFkZGVkIGZlYXR1cmVzLCB0aGUgdXNlcgorICAgICAgICAgICAgY2FuIGFsc28gdmlldyB0aGUgaGlzdG9yeSBvZiB3aGF0IG1hZGUgdXAgdGhlIGJhc2VsaW5lCisgICAgICAgICAgICBMaW51eCBrZXJuZWwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFub3RoZXIgY29uc2VxdWVuY2Ugb2YgdGhpcyBzdHJhdGVneSByZXN1bHRzIGluIG5vdCBoYXZpbmcgdG8KKyAgICAgICAgICAgIHN0b3JlIHRoZSBzYW1lIGZlYXR1cmUgdHdpY2UgaW50ZXJuYWxseSBpbiB0aGUgdHJlZS4KKyAgICAgICAgICAgIFJhdGhlciwgdGhlIGtlcm5lbCB0ZWFtIHN0b3JlcyB0aGUgdW5pcXVlIGRpZmZlcmVuY2VzIHJlcXVpcmVkCisgICAgICAgICAgICB0byBhcHBseSB0aGUgZmVhdHVyZSBvbnRvIHRoZSBrZXJuZWwgdHlwZSBpbiBxdWVzdGlvbi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3RyaXZlcyB0byBwbGFjZSBmZWF0dXJlcyBpbiB0aGUgdHJlZQorICAgICAgICAgICAgICAgIHN1Y2ggdGhhdCBmZWF0dXJlcyBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBib2FyZHMgYW5kIGtlcm5lbAorICAgICAgICAgICAgICAgIHR5cGVzIHdoZXJlIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGR1cmluZyBkZXZlbG9wbWVudCBjeWNsZXMgb3Igd2hlbiBsYXJnZSBmZWF0dXJlcworICAgICAgICAgICAgICAgIGFyZSBtZXJnZWQsIHRoZSB0ZWFtIGNhbm5vdCBhbHdheXMgZm9sbG93IHRoaXMgcHJhY3RpY2UuCisgICAgICAgICAgICAgICAgSW4gdGhvc2UgY2FzZXMsIHRoZSB0ZWFtIHVzZXMgaXNvbGF0ZWQgYnJhbmNoZXMgdG8gbWVyZ2UKKyAgICAgICAgICAgICAgICBmZWF0dXJlcy4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQlNQLXNwZWNpZmljIGNvZGUgYWRkaXRpb25zIGFyZSBoYW5kbGVkIGluIGEgc2ltaWxhciBtYW5uZXIgdG8KKyAgICAgICAgICAgIGtlcm5lbC1zcGVjaWZpYyBhZGRpdGlvbnMuCisgICAgICAgICAgICBTb21lIEJTUHMgb25seSBtYWtlIHNlbnNlIGdpdmVuIGNlcnRhaW4ga2VybmVsIHR5cGVzLgorICAgICAgICAgICAgU28sIGZvciB0aGVzZSB0eXBlcywgdGhlIHRlYW0gY3JlYXRlcyBicmFuY2hlcyBvZmYgdGhlIGVuZAorICAgICAgICAgICAgb2YgdGhhdCBrZXJuZWwgdHlwZSBmb3IgYWxsIG9mIHRoZSBCU1BzIHRoYXQgYXJlIHN1cHBvcnRlZCBvbgorICAgICAgICAgICAgdGhhdCBrZXJuZWwgdHlwZS4KKyAgICAgICAgICAgIEZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSB0b29scyB0aGF0IGNyZWF0ZSB0aGUgQlNQIGJyYW5jaCwKKyAgICAgICAgICAgIHRoZSBCU1AgaXMgcmVhbGx5IG5vIGRpZmZlcmVudCB0aGFuIGEgZmVhdHVyZS4KKyAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIHNhbWUgYnJhbmNoaW5nIHN0cmF0ZWd5IGFwcGxpZXMgdG8gQlNQcyBhcworICAgICAgICAgICAgaXQgZG9lcyB0byBrZXJuZWwgZmVhdHVyZXMuCisgICAgICAgICAgICBTbyBhZ2FpbiwgcmF0aGVyIHRoYW4gc3RvcmUgdGhlIEJTUCB0d2ljZSwgdGhlIHRlYW0gb25seQorICAgICAgICAgICAgc3RvcmVzIHRoZSB1bmlxdWUgZGlmZmVyZW5jZXMgZm9yIHRoZSBCU1AgYWNyb3NzIHRoZSBzdXBwb3J0ZWQKKyAgICAgICAgICAgIG11bHRpcGxlIGtlcm5lbHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoaWxlIHRoaXMgc3RyYXRlZ3kgY2FuIHJlc3VsdCBpbiBhIHRyZWUgd2l0aCBhIHNpZ25pZmljYW50IG51bWJlcgorICAgICAgICAgICAgb2YgYnJhbmNoZXMsIGl0IGlzIGltcG9ydGFudCB0byByZWFsaXplIHRoYXQgZnJvbSB0aGUgZGV2ZWxvcGVyJ3MKKyAgICAgICAgICAgIHBvaW50IG9mIHZpZXcsIHRoZXJlIGlzIGEgbGluZWFyIHBhdGggdGhhdCB0cmF2ZWxzIGZyb20gdGhlCisgICAgICAgICAgICBiYXNlbGluZSA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LCB0aHJvdWdoIGEgc2VsZWN0CisgICAgICAgICAgICBncm91cCBvZiBmZWF0dXJlcyBhbmQgZW5kcyB3aXRoIHRoZWlyIEJTUC1zcGVjaWZpYyBjb21taXRzLgorICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSBkaXZpc2lvbnMgb2YgdGhlIGtlcm5lbCBhcmUgdHJhbnNwYXJlbnQgYW5kCisgICAgICAgICAgICBhcmUgbm90IHJlbGV2YW50IHRvIHRoZSBkZXZlbG9wZXIgb24gYSBkYXktdG8tZGF5IGJhc2lzLgorICAgICAgICAgICAgRnJvbSB0aGUgZGV2ZWxvcGVyJ3MgcGVyc3BlY3RpdmUsIHRoaXMgcGF0aCBpcyB0aGUgIm1hc3RlciIgYnJhbmNoCisgICAgICAgICAgICBpbiBHaXQgdGVybXMuCisgICAgICAgICAgICBUaGUgZGV2ZWxvcGVyIGRvZXMgbm90IG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGV4aXN0ZW5jZSBvZiBhbnkKKyAgICAgICAgICAgIG90aGVyIGJyYW5jaGVzIGF0IGFsbC4KKyAgICAgICAgICAgIE9mIGNvdXJzZSwgdmFsdWUgZXhpc3RzIGluIHRoZSBoYXZpbmcgdGhlc2UgYnJhbmNoZXMgaW4gdGhlIHRyZWUsCisgICAgICAgICAgICBzaG91bGQgYSBwZXJzb24gZGVjaWRlIHRvIGV4cGxvcmUgdGhlbS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gQlNQcyBhdCBlaXRoZXIgdGhlIGNvbW1pdAorICAgICAgICAgICAgbGV2ZWwgb3IgYXQgdGhlIGxpbmUtYnktbGluZSBjb2RlIDxmaWxlbmFtZT5kaWZmPC9maWxlbmFtZT4gbGV2ZWwKKyAgICAgICAgICAgIGlzIG5vdyBhIHRyaXZpYWwgb3BlcmF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlsbHVzdHJhdGlvbiBzaG93cyB0aGUgY29uY2VwdHVhbCBZb2N0bworICAgICAgICAgICAgTGludXgga2VybmVsLgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1hcmNoaXRlY3R1cmUtb3ZlcnZpZXcucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiB0aGUgaWxsdXN0cmF0aW9uLCB0aGUgIktlcm5lbC5vcmcgQnJhbmNoIFBvaW50IiBtYXJrcyB0aGUKKyAgICAgICAgICAgIHNwZWNpZmljIHNwb3QgKG9yIExpbnV4IGtlcm5lbCByZWxlYXNlKSBmcm9tIHdoaWNoIHRoZQorICAgICAgICAgICAgWW9jdG8gTGludXgga2VybmVsIGlzIGNyZWF0ZWQuCisgICAgICAgICAgICBGcm9tIHRoaXMgcG9pbnQgZm9yd2FyZCBpbiB0aGUgdHJlZSwgZmVhdHVyZXMgYW5kIGRpZmZlcmVuY2VzCisgICAgICAgICAgICBhcmUgb3JnYW5pemVkIGFuZCB0YWdnZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSAiWW9jdG8gUHJvamVjdCBCYXNlbGluZSBLZXJuZWwiIGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkgdGhhdAorICAgICAgICAgICAgaXMgY29tbW9uIHRvIGV2ZXJ5IGtlcm5lbCB0eXBlIGFuZCBCU1AgdGhhdCBpcyBvcmdhbml6ZWQKKyAgICAgICAgICAgIGZ1cnRoZXIgYWxvbmcgaW4gdGhlIHRyZWUuCisgICAgICAgICAgICBQbGFjaW5nIHRoZXNlIGNvbW1vbiBmZWF0dXJlcyBpbiB0aGUgdHJlZSB0aGlzIHdheSBtZWFucworICAgICAgICAgICAgZmVhdHVyZXMgZG8gbm90IGhhdmUgdG8gYmUgZHVwbGljYXRlZCBhbG9uZyBpbmRpdmlkdWFsCisgICAgICAgICAgICBicmFuY2hlcyBvZiB0aGUgdHJlZSBzdHJ1Y3R1cmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZyb20gdGhlICJZb2N0byBQcm9qZWN0IEJhc2VsaW5lIEtlcm5lbCIsIGJyYW5jaCBwb2ludHMgcmVwcmVzZW50CisgICAgICAgICAgICBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGZvciBpbmRpdmlkdWFsIEJvYXJkIFN1cHBvcnQgUGFja2FnZXMKKyAgICAgICAgICAgIChCU1BzKSBhcyB3ZWxsIGFzIHJlYWwtdGltZSBrZXJuZWxzLgorICAgICAgICAgICAgVGhlIGlsbHVzdHJhdGlvbiByZXByZXNlbnRzIHRoaXMgdGhyb3VnaCB0aHJlZSBCU1Atc3BlY2lmaWMKKyAgICAgICAgICAgIGJyYW5jaGVzIGFuZCBhIHJlYWwtdGltZSBrZXJuZWwgYnJhbmNoLgorICAgICAgICAgICAgRWFjaCBicmFuY2ggcmVwcmVzZW50cyBzb21lIHVuaXF1ZSBmdW5jdGlvbmFsaXR5IGZvciB0aGUgQlNQCisgICAgICAgICAgICBvciBmb3IgYSByZWFsLXRpbWUgWW9jdG8gTGludXgga2VybmVsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUgc3RydWN0dXJlLCB0aGUgIlJlYWwtdGltZSAocnQpIEtlcm5lbCIgYnJhbmNoIGhhcworICAgICAgICAgICAgY29tbW9uIGZlYXR1cmVzIGZvciBhbGwgcmVhbC10aW1lIFlvY3RvIExpbnV4IGtlcm5lbHMgYW5kCisgICAgICAgICAgICBjb250YWlucyBtb3JlIGJyYW5jaGVzIGZvciBpbmRpdmlkdWFsIEJTUC1zcGVjaWZpYyByZWFsLXRpbWUKKyAgICAgICAgICAgIGtlcm5lbHMuCisgICAgICAgICAgICBUaGUgaWxsdXN0cmF0aW9uIHNob3dzIHRocmVlIGJyYW5jaGVzIGFzIGFuIGV4YW1wbGUuCisgICAgICAgICAgICBFYWNoIGJyYW5jaCBwb2ludHMgdGhlIHdheSB0byBzcGVjaWZpYywgdW5pcXVlIGZlYXR1cmVzIGZvciBhCisgICAgICAgICAgICByZXNwZWN0aXZlIHJlYWwtdGltZSBrZXJuZWwgYXMgdGhleSBhcHBseSB0byBhIGdpdmVuIEJTUC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHJlc3VsdGluZyB0cmVlIHN0cnVjdHVyZSBwcmVzZW50cyBhIGNsZWFyIHBhdGggb2YgbWFya2VycworICAgICAgICAgICAgKG9yIGJyYW5jaGVzKSB0byB0aGUgZGV2ZWxvcGVyIHRoYXQsIGZvciBhbGwgcHJhY3RpY2FsCisgICAgICAgICAgICBwdXJwb3NlcywgaXMgdGhlIFlvY3RvIExpbnV4IGtlcm5lbCBuZWVkZWQgZm9yIGFueSBnaXZlbiBzZXQgb2YKKyAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEtlZXAgaW4gbWluZCB0aGUgZmlndXJlIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IGFsbCB0aGUKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgWW9jdG8gTGludXgga2VybmVscywgYnV0IHJhdGhlciBzaG93cyBhIHNpbmdsZQorICAgICAgICAgICAgICAgIGdlbmVyaWMga2VybmVsIGp1c3QgZm9yIGNvbmNlcHR1YWwgcHVycG9zZXMuCisgICAgICAgICAgICAgICAgQWxzbyBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBlaXRoZXIgcHVsbGVkIGZyb20gZHVyaW5nIHRoZSBidWlsZCBvciBlc3RhYmxpc2hlZAorICAgICAgICAgICAgICAgIG9uIHRoZSBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBwcmlvciB0byB0aGUgYnVpbGQgYnkgZWl0aGVyCisgICAgICAgICAgICAgICAgY2xvbmluZyBhIHBhcnRpY3VsYXIga2VybmVsJ3MgR2l0IHJlcG9zaXRvcnkgb3IgYnkKKyAgICAgICAgICAgICAgICBkb3dubG9hZGluZyBhbmQgdW5wYWNraW5nIGEgdGFyYmFsbC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV29ya2luZyB3aXRoIHRoZSBrZXJuZWwgYXMgYSBzdHJ1Y3R1cmVkIHRyZWUgZm9sbG93cyByZWNvZ25pemVkCisgICAgICAgICAgICBjb21tdW5pdHkgYmVzdCBwcmFjdGljZXMuCisgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUga2VybmVsIGFzIHNoaXBwZWQgd2l0aCB0aGUgcHJvZHVjdCwgc2hvdWxkIGJlCisgICAgICAgICAgICBjb25zaWRlcmVkIGFuICJ1cHN0cmVhbSBzb3VyY2UiIGFuZCB2aWV3ZWQgYXMgYSBzZXJpZXMgb2YKKyAgICAgICAgICAgIGhpc3RvcmljYWwgYW5kIGRvY3VtZW50ZWQgbW9kaWZpY2F0aW9ucyAoY29tbWl0cykuCisgICAgICAgICAgICBUaGVzZSBtb2RpZmljYXRpb25zIHJlcHJlc2VudCB0aGUgZGV2ZWxvcG1lbnQgYW5kIHN0YWJpbGl6YXRpb24KKyAgICAgICAgICAgIGRvbmUgYnkgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIGRldmVsb3BtZW50IHRlYW0uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlY2F1c2UgY29tbWl0cyBvbmx5IGNoYW5nZSBhdCBzaWduaWZpY2FudCByZWxlYXNlIHBvaW50cyBpbiB0aGUKKyAgICAgICAgICAgIHByb2R1Y3QgbGlmZSBjeWNsZSwgZGV2ZWxvcGVycyBjYW4gd29yayBvbiBhIGJyYW5jaCBjcmVhdGVkCisgICAgICAgICAgICBmcm9tIHRoZSBsYXN0IHJlbGV2YW50IGNvbW1pdCBpbiB0aGUgc2hpcHBlZCBZb2N0byBQcm9qZWN0IExpbnV4CisgICAgICAgICAgICBrZXJuZWwuCisgICAgICAgICAgICBBcyBtZW50aW9uZWQgcHJldmlvdXNseSwgdGhlIHN0cnVjdHVyZSBpcyB0cmFuc3BhcmVudCB0byB0aGUKKyAgICAgICAgICAgIGRldmVsb3BlciBiZWNhdXNlIHRoZSBrZXJuZWwgdHJlZSBpcyBsZWZ0IGluIHRoaXMgc3RhdGUgYWZ0ZXIKKyAgICAgICAgICAgIGNsb25pbmcgYW5kIGJ1aWxkaW5nIHRoZSBrZXJuZWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0na2VybmVsLWJ1aWxkLWZpbGUtaGllcmFyY2h5Jz4KKyAgICAgICAgPHRpdGxlPktlcm5lbCBCdWlsZCBGaWxlIEhpZXJhcmNoeTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVcHN0cmVhbSBzdG9yYWdlIG9mIGFsbCB0aGUgYXZhaWxhYmxlIGtlcm5lbCBzb3VyY2UgY29kZSBpcworICAgICAgICAgICAgb25lIHRoaW5nLCB3aGlsZSByZXByZXNlbnRpbmcgYW5kIHVzaW5nIHRoZSBjb2RlIG9uIHlvdXIgaG9zdAorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgc3lzdGVtIGlzIGFub3RoZXIuCisgICAgICAgICAgICBDb25jZXB0dWFsbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yaWVzCisgICAgICAgICAgICBhcyBhbGwgdGhlIHNvdXJjZSBmaWxlcyBuZWNlc3NhcnkgZm9yIGFsbCB0aGUgc3VwcG9ydGVkCisgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWxzLgorICAgICAgICAgICAgQXMgYSBkZXZlbG9wZXIsIHlvdSBhcmUganVzdCBpbnRlcmVzdGVkIGluIHRoZSBzb3VyY2UgZmlsZXMKKyAgICAgICAgICAgIGZvciB0aGUga2VybmVsIG9uIHdoaWNoIHlvdSBhcmUgd29ya2luZy4KKyAgICAgICAgICAgIEFuZCwgZnVydGhlcm1vcmUsIHlvdSBuZWVkIHRoZW0gYXZhaWxhYmxlIG9uIHlvdXIgaG9zdCBzeXN0ZW0uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEtlcm5lbCBzb3VyY2UgY29kZSBpcyBhdmFpbGFibGUgb24geW91ciBob3N0IHN5c3RlbSBzZXZlcmFsCisgICAgICAgICAgICBkaWZmZXJlbnQgd2F5czoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmlsZXMgQWNjZXNzZWQgV2hpbGUgdXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LCB3aGljaCBpcyBhdmFpbGFibGUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgaXMgdGhlIHByZWZlcnJlZCBtZXRob2QgYnkgd2hpY2ggdG8KKyAgICAgICAgICAgICAgICAgICAgbW9kaWZ5IHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2tlcm5lbC1tb2RpZmljYXRpb24td29ya2Zsb3cnPktlcm5lbCBNb2RpZmljYXRpb24gV29ya2Zsb3c8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZWQgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHdvcmtpbmcgaW4gdGhlIGtlcm5lbCBhbGwgdGhlIHRpbWUsIHlvdSBwcm9iYWJseQorICAgICAgICAgICAgICAgICAgICB3b3VsZCB3YW50IHRvIHNldCB1cCB5b3VyIG93biBsb2NhbCBHaXQgcmVwb3NpdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gTGludXgga2VybmVsIHRyZWUuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2xvbmUgYSBZb2N0byBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3ByZXBhcmluZy10aGUtYnVpbGQtaG9zdC10by13b3JrLW9uLXRoZS1rZXJuZWwnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdCB0byBXb3JrIG9uIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZW1wb3JhcnkgU291cmNlIEZpbGVzIGZyb20gYSBCdWlsZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UganVzdCBuZWVkIHRvIG1ha2Ugc29tZSBwYXRjaGVzIHRvIHRoZSBrZXJuZWwgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgYSB0cmFkaXRpb25hbCBCaXRCYWtlIHdvcmtmbG93IChpLmUuIG5vdCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiksIHlvdSBjYW4gYWNjZXNzIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgc291cmNlIGZpbGVzIHRoYXQgd2VyZSBleHRyYWN0ZWQgYW5kIHVzZWQgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIGEga2VybmVsIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgdGVtcG9yYXJ5IGtlcm5lbCBzb3VyY2UgZmlsZXMgcmVzdWx0aW5nIGZyb20gYSBidWlsZCB1c2luZworICAgICAgICAgICAgQml0QmFrZSBoYXZlIGEgcGFydGljdWxhciBoaWVyYXJjaHkuCisgICAgICAgICAgICBXaGVuIHlvdSBidWlsZCB0aGUga2VybmVsIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLCBhbGwgZmlsZXMKKyAgICAgICAgICAgIG5lZWRlZCBmb3IgdGhlIGJ1aWxkIGFyZSB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgcmVwb3NpdG9yaWVzCisgICAgICAgICAgICBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGUgYW5kIGdhdGhlcmVkIGluIGEgdGVtcG9yYXJ5IHdvcmsgYXJlYSB3aGVyZSB0aGV5IGFyZQorICAgICAgICAgICAgc3Vic2VxdWVudGx5IHVzZWQgdG8gY3JlYXRlIHRoZSB1bmlxdWUga2VybmVsLgorICAgICAgICAgICAgVGh1cywgaW4gYSBzZW5zZSwgdGhlIHByb2Nlc3MgY29uc3RydWN0cyBhIGxvY2FsIHNvdXJjZSB0cmVlCisgICAgICAgICAgICBzcGVjaWZpYyB0byB5b3VyIGtlcm5lbCBmcm9tIHdoaWNoIHRvIGdlbmVyYXRlIHRoZSBuZXcga2VybmVsCisgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgdGhlIHRlbXBvcmFyeSBmaWxlIHN0cnVjdHVyZQorICAgICAgICAgICAgY3JlYXRlZCBvbiB5b3VyIGhvc3Qgc3lzdGVtIHdoZW4geW91IGJ1aWxkIHRoZSBrZXJuZWwgdXNpbmcKKyAgICAgICAgICAgIEJpdGJha2UuCisgICAgICAgICAgICBUaGlzCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICBjb250YWlucyBhbGwgdGhlIHNvdXJjZSBmaWxlcyB1c2VkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmciCisgICAgICAgICAgICAgICAgd2lkdGg9IjZpbiIgZGVwdGg9IjVpbiIgYWxpZ249ImNlbnRlciIgc2NhbGU9IjEwMCIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQWdhaW4sIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCdzCisgICAgICAgICAgICBhcmNoaXRlY3R1cmUgYW5kIGl0cyBicmFuY2hpbmcgc3RyYXRlZ3ksIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd5b2N0by1saW51eC1rZXJuZWwtYXJjaGl0ZWN0dXJlLWFuZC1icmFuY2hpbmctc3RyYXRlZ2llcyc+WW9jdG8gTGludXggS2VybmVsIEFyY2hpdGVjdHVyZSBhbmQgQnJhbmNoaW5nIFN0cmF0ZWdpZXM8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb25zIGZvciBkZXRhaWxlZCBleGFtcGxlIHRoYXQgbW9kaWZpZXMgdGhlIGtlcm5lbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdkZXRlcm1pbmluZy1oYXJkd2FyZS1hbmQtbm9uLWhhcmR3YXJlLWZlYXR1cmVzLWZvci10aGUta2VybmVsLWNvbmZpZ3VyYXRpb24tYXVkaXQtcGhhc2UnPgorICAgICAgICA8dGl0bGU+RGV0ZXJtaW5pbmcgSGFyZHdhcmUgYW5kIE5vbi1IYXJkd2FyZSBGZWF0dXJlcyBmb3IgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIEF1ZGl0IFBoYXNlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgcGFydCBvZiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYXVkaXQKKyAgICAgICAgICAgIHBoYXNlIHRoYXQgbW9zdCBkZXZlbG9wZXJzIGNhbiBpZ25vcmUuCisgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiBrZXJuZWwgY29uZmlndXJhdGlvbiBpbmNsdWRpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZXMsIGFuZCBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NvbmZpZ3VyaW5nLXRoZS1rZXJuZWwnPkNvbmZpZ3VyaW5nIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRHVyaW5nIHRoaXMgcGFydCBvZiB0aGUgYXVkaXQgcGhhc2UsIHRoZSBjb250ZW50cyBvZiB0aGUgZmluYWwKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSBhcmUgY29tcGFyZWQgYWdhaW5zdCB0aGUKKyAgICAgICAgICAgIGZyYWdtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHN5c3RlbS4KKyAgICAgICAgICAgIFRoZXNlIGZyYWdtZW50cyBjYW4gYmUgc3lzdGVtIGZyYWdtZW50cywgZGlzdHJvIGZyYWdtZW50cywKKyAgICAgICAgICAgIG9yIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMuCisgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZWlyIG9yaWdpbiwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgIHdhcm5zIHRoZSB1c2VyIGlmIGEgc3BlY2lmaWMgb3B0aW9uIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgICAgIGZpbmFsIGtlcm5lbCBjb25maWd1cmF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZWZhdWx0LCBpbiBvcmRlciB0byBub3Qgb3ZlcndoZWxtIHRoZSB1c2VyIHdpdGgKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gd2FybmluZ3MsIHRoZSBzeXN0ZW0gb25seSByZXBvcnRzIG1pc3NpbmcKKyAgICAgICAgICAgICJoYXJkd2FyZSIgb3B0aW9ucyBhcyB0aGV5IGNvdWxkIHJlc3VsdCBpbiBhIGJvb3QKKyAgICAgICAgICAgIGZhaWx1cmUgb3IgaW5kaWNhdGUgdGhhdCBpbXBvcnRhbnQgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gb3B0aW9uIGlzICJoYXJkd2FyZSIgb3IKKyAgICAgICAgICAgICJub24taGFyZHdhcmUiLCB0aGUga2VybmVsIE1ldGFkYXRhIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gY29udGFpbnMgZmlsZXMgdGhhdAorICAgICAgICAgICAgY2xhc3NpZnkgaW5kaXZpZHVhbCBvciBncm91cHMgb2Ygb3B0aW9ucyBhcyBlaXRoZXIgaGFyZHdhcmUKKyAgICAgICAgICAgIG9yIG5vbi1oYXJkd2FyZS4KKyAgICAgICAgICAgIFRvIGJldHRlciBzaG93IHRoaXMsIGNvbnNpZGVyIGEgc2l0dWF0aW9uIHdoZXJlIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgIGZpbGVzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB5b2N0by1rZXJuZWwtY2FjaGUvZmVhdHVyZXMvZHJtLXBzYi9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2ZlYXR1cmVzL2tnZGIvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9rdHlwZXMvYmFzZS9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9tdGktbWFsdGEzMi9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9mc2wtbXBjODMxNWUtcmRiL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL3FlbXUtcHBjMzIvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvcWVtdWFybWE5L2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL210aS1tYWx0YTY0L2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2FybS12ZXJzYXRpbGUtOTI2ZWpzL2hhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2NvbW1vbi1wYy9oYXJkd2FyZS5jZmcKKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9jb21tb24tcGMtNjQvaGFyZHdhcmUuY2ZnCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9yZmtpbGwvbm9uLWhhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2Uvbm9uLWhhcmR3YXJlLmNmZworICAgICB5b2N0by1rZXJuZWwtY2FjaGUvZmVhdHVyZXMvYXVmcy9ub24taGFyZHdhcmUua2NmCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9vY2Yvbm9uLWhhcmR3YXJlLmtjZgorICAgICB5b2N0by1rZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2Uvbm9uLWhhcmR3YXJlLmtjZgorICAgICB5b2N0by1rZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2UvaGFyZHdhcmUua2NmCisgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvcWVtdS1wcGMzMi9oYXJkd2FyZS5rY2YKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcm92aWRlcyBleHBsYW5hdGlvbnMgZm9yIHRoZSB2YXJpb3VzCisgICAgICAgICAgICBmaWxlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGFyZHdhcmUua2NmPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2Yga2VybmVsIEtjb25maWcgZmlsZXMgdGhhdCBjb250YWluCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIG9wdGlvbnMgb25seS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGtlcm5lbCBLY29uZmlnIGZpbGVzIHRoYXQgY29udGFpbgorICAgICAgICAgICAgICAgICAgICBub24taGFyZHdhcmUgb3B0aW9ucyBvbmx5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYXJkd2FyZS5jZmc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBrZXJuZWwgPGZpbGVuYW1lPkNPTkZJR188L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHRoYXQgYXJlIGhhcmR3YXJlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90CisgICAgICAgICAgICAgICAgICAgIHRoZXkgYXJlIHdpdGhpbiBhIEtjb25maWcgZmlsZSBzcGVjaWZpZWQgYnkgYSBoYXJkd2FyZQorICAgICAgICAgICAgICAgICAgICBvciBub24taGFyZHdhcmUgS2NvbmZpZyBmaWxlIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmNmZzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGtlcm5lbCA8ZmlsZW5hbWU+Q09ORklHXzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgdGhhdCBhcmUgbm90IGhhcmR3YXJlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKKyAgICAgICAgICAgICAgICAgICAgbm90IHRoZXkgYXJlIHdpdGhpbiBhIEtjb25maWcgZmlsZSBzcGVjaWZpZWQgYnkgYQorICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBvciBub24taGFyZHdhcmUgS2NvbmZpZyBmaWxlIChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYXJkd2FyZS5rY2Y8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9uLWhhcmR3YXJlLmtjZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIEhlcmUgaXMgYSBzcGVjaWZpYyBleGFtcGxlIHVzaW5nIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmtlcm5lbC1jYWNoZS9ic3AvbXRpLW1hbHRhMzIvaGFyZHdhcmUuY2ZnPC9maWxlbmFtZT46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPTkZJR19TRVJJQUxfODI1MAorICAgICBDT05GSUdfU0VSSUFMXzgyNTBfQ09OU09MRQorICAgICBDT05GSUdfU0VSSUFMXzgyNTBfTlJfVUFSVFMKKyAgICAgQ09ORklHX1NFUklBTF84MjUwX1BDSQorICAgICBDT05GSUdfU0VSSUFMX0NPUkUKKyAgICAgQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEUKKyAgICAgQ09ORklHX1ZHQV9BUkIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhdWRpdCBhdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhlc2UKKyAgICAgICAgICAgIGZpbGVzIChoZW5jZSB0aGUgbmFtZXMgbXVzdCBiZSBleGFjdGx5IHRoZSBvbmVzIGRpc2N1c3NlZCBoZXJlKSwKKyAgICAgICAgICAgIGFuZCB1c2VzIHRoZW0gYXMgaW5wdXRzIHdoZW4gZ2VuZXJhdGluZyB3YXJuaW5ncyBhYm91dCB0aGUKKyAgICAgICAgICAgIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSB1c2VyLXNwZWNpZmllZCBrZXJuZWwgTWV0YWRhdGEgcmVwb3NpdG9yeSwgb3IgcmVjaXBlIHNwYWNlCisgICAgICAgICAgICBmZWF0dXJlLCBjYW4gdXNlIHRoZXNlIHNhbWUgZmlsZXMgdG8gY2xhc3NpZnkgb3B0aW9ucyB0aGF0IGFyZQorICAgICAgICAgICAgZm91bmQgd2l0aGluIGl0cyA8ZmlsZW5hbWU+LmNmZzwvZmlsZW5hbWU+IGZpbGVzIGFzIGhhcmR3YXJlCisgICAgICAgICAgICBvciBub24taGFyZHdhcmUsIHRvIHByZXZlbnQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZnJvbQorICAgICAgICAgICAgcHJvZHVjaW5nIGFuIGVycm9yIG9yIHdhcm5pbmcgd2hlbiBhbiBvcHRpb24gaXMgbm90IGluIHRoZQorICAgICAgICAgICAgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9hcHBlbmRpeD4KIDwhLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1leGFtcGxlcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtZXhhbXBsZXMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDlhZWY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1leGFtcGxlcy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5MTggKzAsMCBAQAotPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgotImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKLVs8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KLQotPGNoYXB0ZXIgaWQ9J2tlcm5lbC1ob3ctdG8nPgotCi08dGl0bGU+V29ya2luZyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IEtlcm5lbDwvdGl0bGU+Ci0KLQotPHNlY3Rpb24gaWQ9J2FjdGlvbnMtb3JnJz4KLSAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KLSAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBob3cgdG8gYWNjb21wbGlzaCB0YXNrcyBpbnZvbHZpbmcgYSBrZXJuZWwncyB0cmVlIHN0cnVjdHVyZS4KLSAgICAgICAgVGhlIGluZm9ybWF0aW9uIGlzIGRlc2lnbmVkIHRvIGhlbHAgdGhlIGRldmVsb3BlciB0aGF0IHdhbnRzIHRvIG1vZGlmeSB0aGUgWW9jdG8KLSAgICAgICAgUHJvamVjdCBrZXJuZWwgYW5kIGNvbnRyaWJ1dGUgY2hhbmdlcyB1cHN0cmVhbSB0byB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgVGhlIGluZm9ybWF0aW9uIGNvdmVycyB0aGUgZm9sbG93aW5nOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRyZWUgY29uc3RydWN0aW9uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnVpbGQgc3RyYXRlZ2llczwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldvcmtmbG93IGV4YW1wbGVzPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd0cmVlLWNvbnN0cnVjdGlvbic+Ci0gICAgICAgIDx0aXRsZT5UcmVlIENvbnN0cnVjdGlvbjwvdGl0bGU+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBjb25zdHJ1Y3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHNvdXJjZSByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgIGFzIGFjY29tcGxpc2hlZCBieSB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHRvIGNyZWF0ZSBrZXJuZWwgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgVGhlc2Uga2VybmVsIHJlcG9zaXRvcmllcyBhcmUgZm91bmQgdW5kZXIgdGhlIGhlYWRpbmcgIllvY3RvIExpbnV4IEtlcm5lbCIgYXQKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+JllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpPC91bGluaz4KLSAgICAgICAgICAgIGFuZCBjYW4gYmUgc2hpcHBlZCBhcyBwYXJ0IG9mIGEgWW9jdG8gUHJvamVjdCByZWxlYXNlLgotICAgICAgICAgICAgVGhlIHRlYW0gY3JlYXRlcyB0aGVzZSByZXBvc2l0b3JpZXMgYnkKLSAgICAgICAgICAgIGNvbXBpbGluZyBhbmQgZXhlY3V0aW5nIHRoZSBzZXQgb2YgZmVhdHVyZSBkZXNjcmlwdGlvbnMgZm9yIGV2ZXJ5IEJTUC9mZWF0dXJlCi0gICAgICAgICAgICBpbiB0aGUgcHJvZHVjdC4KLSAgICAgICAgICAgIFRob3NlIGZlYXR1cmUgZGVzY3JpcHRpb25zIGxpc3QgYWxsIG5lY2Vzc2FyeSBwYXRjaGVzLAotICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgYnJhbmNoaW5nLCB0YWdnaW5nIGFuZCBmZWF0dXJlIGRpdmlzaW9ucyBmb3VuZCBpbiBhIGtlcm5lbC4KLSAgICAgICAgICAgIFRodXMsIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCByZXBvc2l0b3J5IChvciB0cmVlKSBpcyBidWlsdC4KLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBleGlzdGVuY2Ugb2YgdGhpcyB0cmVlIGFsbG93cyB5b3UgdG8gYWNjZXNzIGFuZCBjbG9uZSBhIHBhcnRpY3VsYXIKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3Qga2VybmVsIHJlcG9zaXRvcnkgYW5kIHVzZSBpdCB0byBidWlsZCBpbWFnZXMgYmFzZWQgb24gdGhlaXIgY29uZmlndXJhdGlvbnMKLSAgICAgICAgICAgIGFuZCBmZWF0dXJlcy4KLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgZmlsZXMgdXNlZCB0byBkZXNjcmliZSBhbGwgdGhlIHZhbGlkIGZlYXR1cmVzIGFuZCBCU1BzCi0gICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgaW4gYW55IGNsb25lIG9mIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yeQotICAgICAgICAgICAgR2l0IHRyZWUuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIGNsb25lcyB0aGUgWW9jdG8gUHJvamVjdCBiYXNlbGluZSBrZXJuZWwgdGhhdAotICAgICAgICAgICAgYnJhbmNoZWQgb2ZmIG9mIDxmaWxlbmFtZT5saW51eC5vcmc8L2ZpbGVuYW1lPiB2ZXJzaW9uIDMuNDoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tMy40Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBGb3IgYW5vdGhlciBleGFtcGxlIG9mIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAga2VybmVsIGZpbGVzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbG9jYWwta2VybmVsLWZpbGVzJz5Zb2N0byBQcm9qZWN0IEtlcm5lbDwvdWxpbms+IiBidWxsZXRlZAotICAgICAgICAgICAgaXRlbSBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGNsb25lZCB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5IG9uIHlvdXIgbG9jYWwgbWFjaGluZSwgeW91IGNhbgotICAgICAgICAgICAgc3dpdGNoIHRvIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGJyYW5jaCB3aXRoaW4gdGhlIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhc3N1bWVzIHRoZSBsb2NhbCBHaXQgcmVwb3NpdG9yeSBmb3IgdGhlIGtlcm5lbCBpcyBpbgotICAgICAgICAgICAgYSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG5hbWVkIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjQ8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+L2xpbnV4LXlvY3RvLTMuNAotICAgICAkIGdpdCBjaGVja291dCAtYiBtZXRhIG9yaWdpbi9tZXRhCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGNoZWNrZWQgb3V0IGFuZCBzd2l0Y2hlZCB0byB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBicmFuY2gsCi0gICAgICAgICAgICB5b3UgY2FuIHNlZSBhIHNuYXBzaG90IG9mIGFsbCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIGZlYXR1cmUgZGVzY3JpcHRpb25zIHRoYXQgYXJlCi0gICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIHRoYXQgcGFydGljdWxhciBrZXJuZWwgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIFRoZXNlIGRlc2NyaXB0aW9ucyBhcmUgaW4gdGhlIGZvcm0gb2YgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBzaG91bGQgcmVhbGl6ZSwgaG93ZXZlciwgdGhhdCBicm93c2luZyB5b3VyIGxvY2FsIGtlcm5lbCByZXBvc2l0b3J5Ci0gICAgICAgICAgICBmb3IgZmVhdHVyZSBkZXNjcmlwdGlvbnMgYW5kIHBhdGNoZXMgaXMgbm90IGFuIGVmZmVjdGl2ZSB3YXkgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgaW4gYQotICAgICAgICAgICAgcGFydGljdWxhciBrZXJuZWwgYnJhbmNoLgotICAgICAgICAgICAgSW5zdGVhZCwgeW91IHNob3VsZCB1c2UgR2l0IGRpcmVjdGx5IHRvIGRpc2NvdmVyIHRoZSBjaGFuZ2VzIGluIGEgYnJhbmNoLgotICAgICAgICAgICAgVXNpbmcgR2l0IGlzIGFuIGVmZmljaWVudCBhbmQgZmxleGlibGUgd2F5IHRvIGluc3BlY3QgY2hhbmdlcyB0byB0aGUga2VybmVsLgotICAgICAgICAgICAgRm9yIGV4YW1wbGVzIHNob3dpbmcgaG93IHRvIHVzZSBHaXQgdG8gaW5zcGVjdCBrZXJuZWwgY29tbWl0cywgc2VlIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMKLSAgICAgICAgICAgIGluIHRoaXMgY2hhcHRlci4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIEdyb3VuZCB1cCByZWNvbnN0cnVjdGlvbiBvZiB0aGUgY29tcGxldGUga2VybmVsIHRyZWUgaXMgYW4gYWN0aW9uIG9ubHkgdGFrZW4gYnkgdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0ZWFtIGR1cmluZyBhbiBhY3RpdmUgZGV2ZWxvcG1lbnQgY3ljbGUuCi0gICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgY2xvbmUgb2YgdGhlIGtlcm5lbCBHaXQgcmVwb3NpdG9yeSwgeW91IGFyZSBzaW1wbHkgbWFraW5nIGl0Ci0gICAgICAgICAgICAgICAgZWZmaWNpZW50bHkgYXZhaWxhYmxlIGZvciBidWlsZGluZyBhbmQgZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0ZXBzIGRlc2NyaWJlIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBZb2N0byBQcm9qZWN0IFRlYW0gY29uc3RydWN0cwotICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHNvdXJjZSBHaXQgcmVwb3NpdG9yeSAob3IgdHJlZSkgZm91bmQgYXQKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4gZ2l2ZW4gdGhlCi0gICAgICAgICAgICBpbnRyb2R1Y3Rpb24gb2YgYSBuZXcgdG9wLWxldmVsIGtlcm5lbCBmZWF0dXJlIG9yIEJTUC4KLSAgICAgICAgICAgIFRoZXNlIGFyZSB0aGUgYWN0aW9ucyB0aGF0IGVmZmVjdGl2ZWx5IGNyZWF0ZSB0aGUgdHJlZQotICAgICAgICAgICAgdGhhdCBpbmNsdWRlcyB0aGUgbmV3IGZlYXR1cmUsIHBhdGNoIG9yIEJTUDoKLSAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSB0b3AtbGV2ZWwga2VybmVsIGZlYXR1cmUgaXMgcGFzc2VkIHRvIHRoZSBrZXJuZWwgYnVpbGQgc3Vic3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBOb3JtYWxseSwgdGhpcyBmZWF0dXJlIGlzIGEgQlNQIGZvciBhIHBhcnRpY3VsYXIga2VybmVsIHR5cGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBmaWxlIHRoYXQgZGVzY3JpYmVzIHRoZSB0b3AtbGV2ZWwgZmVhdHVyZSBpcyBsb2NhdGVkIGJ5IHNlYXJjaGluZwotICAgICAgICAgICAgICAgICAgICB0aGVzZSBzeXN0ZW0gZGlyZWN0b3JpZXM6Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGluLXRyZWUga2VybmVsLWNhY2hlIGRpcmVjdG9yaWVzLCB3aGljaCBhcmUgbG9jYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5tZXRhL2NmZy9rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFyZWFzIHBvaW50ZWQgdG8gYnkgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgaW4gcmVjaXBlczwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGEgdHlwaWNhbCBidWlsZCwgdGhlIHRhcmdldCBvZiB0aGUgc2VhcmNoIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZSBkZXNjcmlwdGlvbiBpbiBhbiA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgd2hvc2UgbmFtZSBmb2xsb3dzIHRoaXMgZm9ybWF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICZsdDtic3BfbmFtZSZndDstJmx0O2tlcm5lbF90eXBlJmd0Oy5zY2MKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5PbmNlIGxvY2F0ZWQsIHRoZSBmZWF0dXJlIGRlc2NyaXB0aW9uIGlzIGVpdGhlciBjb21waWxlZCBpbnRvIGEgc2ltcGxlIHNjcmlwdAotICAgICAgICAgICAgICAgICAgICBvZiBhY3Rpb25zLCBvciBpbnRvIGFuIGV4aXN0aW5nIGVxdWl2YWxlbnQgc2NyaXB0IHRoYXQgaXMgYWxyZWFkeSBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICBzaGlwcGVkIGtlcm5lbC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXh0cmEgZmVhdHVyZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSB0b3AtbGV2ZWwgZmVhdHVyZSBkZXNjcmlwdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmVhdHVyZXMgY2FuIGNvbWUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9GRUFUVVJFUyc+PGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gcmVjaXBlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RWFjaCBleHRyYSBmZWF0dXJlIGlzIGxvY2F0ZWQsIGNvbXBpbGVkIGFuZCBhcHBlbmRlZCB0byB0aGUgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiBzdGVwIHRocmVlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgc2NyaXB0IGlzIGV4ZWN1dGVkIHRvIHByb2R1Y2UgYSBzZXJpZXMgb2YgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBkaXJlY3RvcmllcyBhcmUgZGVzY3JpcHRpb25zIG9mIGFsbCB0aGUgYnJhbmNoZXMsIHRhZ3MsIHBhdGNoZXMgYW5kIGNvbmZpZ3VyYXRpb25zIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBiZSBhcHBsaWVkIHRvIHRoZSBiYXNlIEdpdCByZXBvc2l0b3J5IHRvIGNvbXBsZXRlbHkgY3JlYXRlIHRoZQotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKGJ1aWxkKSBicmFuY2ggZm9yIHRoZSBuZXcgQlNQIG9yIGZlYXR1cmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBiYXNlIHJlcG9zaXRvcnkgaXMgY2xvbmVkLCBhbmQgdGhlIGFjdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgbGlzdGVkIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS0qPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgYXJlIGFwcGxpZWQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHRyZWUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBHaXQgcmVwb3NpdG9yeSBpcyBsZWZ0IHdpdGggdGhlIGRlc2lyZWQgYnJhbmNoIGNoZWNrZWQgb3V0IGFuZCBhbnkKLSAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgYnJhbmNoaW5nLCBwYXRjaGluZyBhbmQgdGFnZ2luZyBoYXMgYmVlbiBwZXJmb3JtZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGtlcm5lbCB0cmVlIGlzIG5vdyByZWFkeSBmb3IgZGV2ZWxvcGVyIGNvbnN1bXB0aW9uIHRvIGJlIGxvY2FsbHkgY2xvbmVkLAotICAgICAgICAgICAgY29uZmlndXJlZCwgYW5kIGJ1aWx0IGludG8gYSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzcGVjaWZpYyB0byBzb21lIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgIDxub3RlPjxwYXJhPlRoZSBnZW5lcmF0ZWQgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGFkZCB0byB0aGUga2VybmVsCi0gICAgICAgICAgICAgICAgYXMgc2hpcHBlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgQW55IGFkZC1vbnMgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YSBhcmUgYXBwbGllZCB0byB0aGUgZW5kIG9mIGFuIGV4aXN0aW5nIGJyYW5jaC4KLSAgICAgICAgICAgICAgICBUaGUgZnVsbCByZXBvc2l0b3J5IGdlbmVyYXRpb24gdGhhdCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICBvZmZpY2lhbCBZb2N0byBQcm9qZWN0IGtlcm5lbCByZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgaXMgdGhlIGNvbWJpbmF0aW9uIG9mIGFsbCBzdXBwb3J0ZWQgYm9hcmRzIGFuZCBjb25maWd1cmF0aW9ucy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIHRlY2huaXF1ZSB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHVzZXMgaXMgZmxleGlibGUgYW5kIGFsbG93cyBmb3Igc2VhbWxlc3MKLSAgICAgICAgICAgICAgICBibGVuZGluZyBvZiBhbiBpbW11dGFibGUgaGlzdG9yeSB3aXRoIGFkZGl0aW9uYWwgcGF0Y2hlcyBzcGVjaWZpYyB0byBhCi0gICAgICAgICAgICAgICAgZGVwbG95bWVudC4KLSAgICAgICAgICAgICAgICBBbnkgYWRkaXRpb25zIHRvIHRoZSBrZXJuZWwgYmVjb21lIGFuIGludGVncmF0ZWQgcGFydCBvZiB0aGUgYnJhbmNoZXMuPC9wYXJhPgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2J1aWxkLXN0cmF0ZWd5Jz4KLSAgICAgICAgPHRpdGxlPkJ1aWxkIFN0cmF0ZWd5PC90aXRsZT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIGV4aXN0cyBvbiBhIGRldmVsb3BtZW50IHN5c3RlbSwKLSAgICAgICAgICAgIHlvdSBjYW4gY29uc2lkZXIgdGhlIGNvbXBpbGF0aW9uIHBoYXNlIG9mIGtlcm5lbCBkZXZlbG9wbWVudCAtIGJ1aWxkaW5nIGEga2VybmVsIGltYWdlLgotICAgICAgICAgICAgU29tZSBwcmVyZXF1aXNpdGVzIGV4aXN0IHRoYXQgYXJlIHZhbGlkYXRlZCBieSB0aGUgYnVpbGQgcHJvY2VzcyBiZWZvcmUgY29tcGlsYXRpb24KLSAgICAgICAgICAgIHN0YXJ0czoKLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPiBwb2ludHMKLSAgICAgICAgICAgICAgICB0byB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgQlNQIGJ1aWxkIGJyYW5jaCBleGlzdHMuCi0gICAgICAgICAgICAgICAgVGhpcyBicmFuY2ggaGFzIHRoZSBmb2xsb3dpbmcgZm9ybToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICZsdDtrZXJuZWxfdHlwZSZndDsvJmx0O2JzcF9uYW1lJmd0OwotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBtYWtlcyBzdXJlIHRoZXNlIGNvbmRpdGlvbnMgZXhpc3QgYmVmb3JlIGF0dGVtcHRpbmcgY29tcGlsYXRpb24uCi0gICAgICAgICAgICBPdGhlciBtZWFucywgaG93ZXZlciwgZG8gZXhpc3QsIHN1Y2ggYXMgYXMgYm9vdHN0cmFwcGluZyBhIEJTUCwgc2VlCi0gICAgICAgICAgICB0aGUgIjxsaW5rIGxpbmtlbmQ9J3dvcmtmbG93LWV4YW1wbGVzJz5Xb3JrZmxvdyBFeGFtcGxlczwvbGluaz4iLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCZWZvcmUgYnVpbGRpbmcgYSBrZXJuZWwsIHRoZSBidWlsZCBwcm9jZXNzIHZlcmlmaWVzIHRoZSB0cmVlCi0gICAgICAgICAgICBhbmQgY29uZmlndXJlcyB0aGUga2VybmVsIGJ5IHByb2Nlc3NpbmcgYWxsIG9mIHRoZQotICAgICAgICAgICAgY29uZmlndXJhdGlvbiAiZnJhZ21lbnRzIiBzcGVjaWZpZWQgYnkgZmVhdHVyZSBkZXNjcmlwdGlvbnMgaW4gdGhlIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgQXMgdGhlIGZlYXR1cmVzIGFyZSBjb21waWxlZCwgYXNzb2NpYXRlZCBrZXJuZWwgY29uZmlndXJhdGlvbiBmcmFnbWVudHMgYXJlIG5vdGVkCi0gICAgICAgICAgICBhbmQgcmVjb3JkZWQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhLSo8L2ZpbGVuYW1lPiBzZXJpZXMgb2YgZGlyZWN0b3JpZXMgaW4gdGhlaXIgY29tcGlsYXRpb24gb3JkZXIuCi0gICAgICAgICAgICBUaGUgZnJhZ21lbnRzIGFyZSBtaWdyYXRlZCwgcHJlLXByb2Nlc3NlZCBhbmQgcGFzc2VkIHRvIHRoZSBMaW51eCBLZXJuZWwKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gc3Vic3lzdGVtICg8ZmlsZW5hbWU+bGtjPC9maWxlbmFtZT4pIGFzIHJhdyBpbnB1dCBpbiB0aGUgZm9ybQotICAgICAgICAgICAgb2YgYSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxrYzwvZmlsZW5hbWU+IHVzZXMgaXRzIG93biBpbnRlcm5hbCBkZXBlbmRlbmN5IGNvbnN0cmFpbnRzIHRvIGRvIHRoZSBmaW5hbAotICAgICAgICAgICAgcHJvY2Vzc2luZyBvZiB0aGF0IGluZm9ybWF0aW9uIGFuZCBnZW5lcmF0ZXMgdGhlIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgdGhhdCBpcyB1c2VkIGR1cmluZyBjb21waWxhdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVXNpbmcgdGhlIGJvYXJkJ3MgYXJjaGl0ZWN0dXJlIGFuZCBvdGhlciByZWxldmFudCB2YWx1ZXMgZnJvbSB0aGUgYm9hcmQncyB0ZW1wbGF0ZSwKLSAgICAgICAgICAgIGtlcm5lbCBjb21waWxhdGlvbiBpcyBzdGFydGVkIGFuZCBhIGtlcm5lbCBpbWFnZSBpcyBwcm9kdWNlZC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIG90aGVyIHRoaW5nIHRoYXQgeW91IG5vdGljZSBvbmNlIHlvdSBjb25maWd1cmUgYSBrZXJuZWwgaXMgdGhhdAotICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgZ2VuZXJhdGVzIGEgYnVpbGQgdHJlZSB0aGF0IGlzIHNlcGFyYXRlIGZyb20geW91ciBrZXJuZWwncyBsb2NhbCBHaXQKLSAgICAgICAgICAgIHNvdXJjZSByZXBvc2l0b3J5IHRyZWUuCi0gICAgICAgICAgICBUaGlzIGJ1aWxkIHRyZWUgaGFzIGEgbmFtZSB0aGF0IHVzZXMgdGhlIGZvbGxvd2luZyBmb3JtLCB3aGVyZQotICAgICAgICAgICAgPGZpbGVuYW1lPiR7TUFDSElORX08L2ZpbGVuYW1lPiBpcyB0aGUgbWV0YWRhdGEgbmFtZSBvZiB0aGUgbWFjaGluZSAoQlNQKSBhbmQgImtlcm5lbF90eXBlIiBpcyBvbmUKLSAgICAgICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRlZCBrZXJuZWwgdHlwZXMgKGUuZy4gInN0YW5kYXJkIik6Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbGludXgtJHtNQUNISU5FfS0mbHQ7a2VybmVsX3R5cGUmZ3Q7LWJ1aWxkCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGV4aXN0aW5nIHN1cHBvcnQgaW4gdGhlIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gdHJlZSBhY2hpZXZlcyB0aGlzCi0gICAgICAgICAgICBkZWZhdWx0IGZ1bmN0aW9uYWxpdHkuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgbWVhbnMgdGhhdCBhbGwgdGhlIGdlbmVyYXRlZCBmaWxlcyBmb3IgYSBwYXJ0aWN1bGFyIG1hY2hpbmUgb3IgQlNQIGFyZSBub3cgaW4KLSAgICAgICAgICAgIHRoZSBidWlsZCB0cmVlIGRpcmVjdG9yeS4KLSAgICAgICAgICAgIFRoZSBmaWxlcyBpbmNsdWRlIHRoZSBmaW5hbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUsIGFsbCB0aGUgPGZpbGVuYW1lPi5vPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZpbGVzLCB0aGUgPGZpbGVuYW1lPi5hPC9maWxlbmFtZT4gZmlsZXMsIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgIFNpbmNlIGVhY2ggbWFjaGluZSBvciBCU1AgaGFzIGl0cyBvd24gc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5IGluIGl0cyBvd24gc2VwYXJhdGUgYnJhbmNoCi0gICAgICAgICAgICBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdSBjYW4gZWFzaWx5IHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudCBidWlsZHMuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nd29ya2Zsb3ctZXhhbXBsZXMnPgotICAgICAgICA8dGl0bGU+V29ya2Zsb3cgRXhhbXBsZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQXMgcHJldmlvdXNseSBub3RlZCwgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIGhhcyBidWlsdC1pbiBHaXQgaW50ZWdyYXRpb24uCi0gICAgICAgICAgICBIb3dldmVyLCB0aGVzZSB1dGlsaXRpZXMgYXJlIG5vdCB0aGUgb25seSB3YXkgdG8gd29yayB3aXRoIHRoZSBrZXJuZWwgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBub3QgbWFkZSBjaGFuZ2VzIHRvIEdpdCBvciB0byBvdGhlciB0b29scyB0aGF0Ci0gICAgICAgICAgICB3b3VsZCBpbnZhbGlkYXRlIGFsdGVybmF0ZSB3b3JrZmxvd3MuCi0gICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSB3YXkgdGhlIGtlcm5lbCByZXBvc2l0b3J5IGlzIGNvbnN0cnVjdGVkIHJlc3VsdHMgaW4gdXNpbmcKLSAgICAgICAgICAgIG9ubHkgY29yZSBHaXQgZnVuY3Rpb25hbGl0eSwgdGh1cyBhbGxvd2luZyBhbnkgbnVtYmVyIG9mIHRvb2xzIG9yIGZyb250IGVuZHMgdG8gdXNlIHRoZQotICAgICAgICAgICAgcmVzdWx0aW5nIHRyZWUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBzZXZlcmFsIHdvcmtmbG93IGV4YW1wbGVzLgotICAgICAgICAgICAgTWFueSBvZiB0aGUgZXhhbXBsZXMgdXNlIEdpdCBjb21tYW5kcy4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCBHaXQgZG9jdW1lbnRhdGlvbiBhdAotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPjwvdWxpbms+LgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgc2ltcGxlIG92ZXJ2aWV3IG9mIHVzaW5nIEdpdCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGluIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dpdCc+R2l0PC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjaGFuZ2UtaW5zcGVjdGlvbi1rZXJuZWwtY2hhbmdlcy1jb21taXRzJz4KLSAgICAgICAgICAgIDx0aXRsZT5DaGFuZ2UgSW5zcGVjdGlvbjogQ2hhbmdlcy9Db21taXRzPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBjb21tb24gcXVlc3Rpb24gd2hlbiB3b3JraW5nIHdpdGggYSBrZXJuZWwgaXM6Ci0gICAgICAgICAgICAgICAgIldoYXQgY2hhbmdlcyBoYXZlIGJlZW4gYXBwbGllZCB0byB0aGlzIHRyZWU/IgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJbiBwcm9qZWN0cyB0aGF0IGhhdmUgYSBjb2xsZWN0aW9uIG9mIGRpcmVjdG9yaWVzIHRoYXQKLSAgICAgICAgICAgICAgICBjb250YWluIHBhdGNoZXMgdG8gdGhlIGtlcm5lbCwgaXQgaXMgcG9zc2libGUgdG8gaW5zcGVjdCBvciAiZ3JlcCIgdGhlIGNvbnRlbnRzCi0gICAgICAgICAgICAgICAgb2YgdGhlIGRpcmVjdG9yaWVzIHRvIGdldCBhIGdlbmVyYWwgZmVlbCBmb3IgdGhlIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgVGhpcyBzb3J0IG9mIHBhdGNoIGluc3BlY3Rpb24gaXMgbm90IGFuIGVmZmljaWVudCB3YXkgdG8gZGV0ZXJtaW5lIHdoYXQgaGFzIGJlZW4KLSAgICAgICAgICAgICAgICBkb25lIHRvIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgVGhlIHJlYXNvbiBpdCBpcyBpbmVmZmljaWVudCBpcyBiZWNhdXNlIHRoZXJlIGFyZSBtYW55IG9wdGlvbmFsIHBhdGNoZXMgdGhhdCBhcmUKLSAgICAgICAgICAgICAgICBzZWxlY3RlZCBiYXNlZCBvbiB0aGUga2VybmVsIHR5cGUgYW5kIHRoZSBmZWF0dXJlIGRlc2NyaXB0aW9uLgotICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgcGF0Y2hlcyBjb3VsZCBleGlzdCBpbiBkaXJlY3RvcmllcyB0aGF0IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHNlYXJjaC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBtb3JlIGVmZmljaWVudCB3YXkgdG8gZGV0ZXJtaW5lIHdoYXQgaGFzIGNoYW5nZWQgaW4gdGhlIGJyYW5jaCBpcyB0byB1c2UKLSAgICAgICAgICAgICAgICBHaXQgYW5kIGluc3BlY3Qgb3Igc2VhcmNoIHRoZSBrZXJuZWwgdHJlZS4KLSAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBnaXZlcyB5b3UgYSBmdWxsIHZpZXcgb2Ygbm90IG9ubHkgdGhlIHNvdXJjZSBjb2RlIG1vZGlmaWNhdGlvbnMsCi0gICAgICAgICAgICAgICAgYnV0IGFsc28gcHJvdmlkZXMgdGhlIHJlYXNvbnMgZm9yIHRoZSBjaGFuZ2VzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nd2hhdC1jaGFuZ2VkLWluLWEta2VybmVsJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+V2hhdCBDaGFuZ2VkIGluIGEgS2VybmVsPzwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBhIGZldyBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIHVzZSBHaXQgY29tbWFuZHMgdG8gZXhhbWluZSBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIEdpdCByZXBvc2l0b3JpZXMgaW4gdGhlIFlvY3RvIFByb2plY3QgZG8gbm90IGJyZWFrIGV4aXN0aW5nIEdpdAotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LCBhbmQgYmVjYXVzZSB0aGVyZSBleGlzdHMgbWFueSBwZXJtdXRhdGlvbnMgb2YgdGhlc2UgdHlwZXMgb2YKLSAgICAgICAgICAgICAgICAgICAgR2l0IGNvbW1hbmRzLCBtYW55IG1ldGhvZHMgZXhpc3QgYnkgd2hpY2ggeW91IGNhbiBkaXNjb3ZlciBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMsIHVubGVzcyB5b3UgcHJvdmlkZSBhIGNvbW1pdCByYW5nZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gaGlzdG9yeSBpcyBibGVuZGVkIHdpdGggWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZvcm0gcmFuZ2VzIGJ5IHVzaW5nIGJyYW5jaCBuYW1lcyBmcm9tIHRoZSBrZXJuZWwgdHJlZSBhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyIGFuZCBsb3dlciBjb21taXQgbWFya2VycyB3aXRoIHRoZSBHaXQgY29tbWFuZHMuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgYnJhbmNoIG5hbWVzIHRocm91Z2ggdGhlIHdlYiBpbnRlcmZhY2UgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaSc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGJyYW5jaCBuYW1lcyBmb3IgdGhlIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIHJlcG9zaXRvcnkgY2FuIGJlIHNlZW4gYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaS9saW51eC15b2N0by0zLjQvcmVmcy9oZWFkcyc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVG8gc2VlIGEgZnVsbCByYW5nZSBvZiB0aGUgY2hhbmdlcywgdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHdoYXRjaGFuZ2VkPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgc3BlY2lmeSBhIGNvbW1pdCByYW5nZQotICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGJyYW5jaCAoPGZpbGVuYW1lPiZsdDtjb21taXQmZ3Q7Li4mbHQ7Y29tbWl0Jmd0OzwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgbG9va3MgYXQgd2hhdCBoYXMgY2hhbmdlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVtZW5sb3c8L2ZpbGVuYW1lPiBicmFuY2ggb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjQ8L2ZpbGVuYW1lPiBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBsb3dlciBjb21taXQgcmFuZ2UgaXMgdGhlIGNvbW1pdCBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdGFuZGFyZC9iYXNlPC9maWxlbmFtZT4gYnJhbmNoLCB3aGlsZQotICAgICAgICAgICAgICAgICAgICB0aGUgdXBwZXIgY29tbWl0IHJhbmdlIGlzIHRoZSBjb21taXQgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3RhbmRhcmQvZW1lbmxvdzwvZmlsZW5hbWU+IGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCB3aGF0Y2hhbmdlZCBvcmlnaW4vc3RhbmRhcmQvYmFzZS4ub3JpZ2luL3N0YW5kYXJkL2VtZW5sb3cKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyBzZWUgYSBzdW1tYXJ5IG9mIGNoYW5nZXMgdXNlIHRoZSA8ZmlsZW5hbWU+Z2l0IGxvZzwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyB0aGUgc2FtZSBicmFuY2hlczoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBsb2cgLS1vbmVsaW5lIG9yaWdpbi9zdGFuZGFyZC9iYXNlLi5vcmlnaW4vc3RhbmRhcmQvZW1lbmxvdwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2l0IGxvZzwvZmlsZW5hbWU+IG91dHB1dCBtaWdodCBiZSBtb3JlIHVzZWZ1bCB0aGFuCi0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Z2l0IHdoYXRjaGFuZ2VkPC9maWxlbmFtZT4gYXMgeW91IGdldAotICAgICAgICAgICAgICAgICAgICBhIHNob3J0LCBvbmUtbGluZSBzdW1tYXJ5IG9mIGVhY2ggY2hhbmdlIGFuZCBub3QgdGhlIGVudGlyZSBjb21taXQuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHNlZSBjb2RlIGRpZmZlcmVuY2VzIGFzc29jaWF0ZWQgd2l0aCBhbGwgdGhlIGNoYW5nZXMsIHVzZQotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmdpdCBkaWZmPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGRpZmYgb3JpZ2luL3N0YW5kYXJkL2Jhc2UuLm9yaWdpbi9zdGFuZGFyZC9lbWVubG93Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIGNvbW1pdCBsb2cgbWVzc2FnZXMgYW5kIHRoZSB0ZXh0IGRpZmZlcmVuY2VzIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHNob3c8L2ZpbGVuYW1lPiBjb21tYW5kOgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgc2hvdyBvcmlnaW4vc3RhbmRhcmQvYmFzZS4ub3JpZ2luL3N0YW5kYXJkL2VtZW5sb3cKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSBpbmRpdmlkdWFsIHBhdGNoZXMgZm9yIGVhY2ggY2hhbmdlIGJ5IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHRoYXQgY3JlYXRlcyBwYXRjaCBmaWxlcyBmb3IgZWFjaCBjb21taXQgYW5kCi0gICAgICAgICAgICAgICAgICAgIHBsYWNlcyB0aGVtIGluIHlvdXIgPGZpbGVuYW1lPkRvY3VtZW50czwvZmlsZW5hbWU+IGRpcmVjdG9yeToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLW8gJEhPTUUvRG9jdW1lbnRzIG9yaWdpbi9zdGFuZGFyZC9iYXNlLi5vcmlnaW4vc3RhbmRhcmQvZW1lbmxvdwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nc2hvdy1hLXBhcnRpY3VsYXItZmVhdHVyZS1vci1icmFuY2gtY2hhbmdlJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+U2hvdyBhIFBhcnRpY3VsYXIgRmVhdHVyZSBvciBCcmFuY2ggQ2hhbmdlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXJzIHVzZSB0YWdzIGluIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0cmVlIHRvIGRpdmlkZSBjaGFuZ2VzIGZvciBzaWduaWZpY2FudAotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBvciBicmFuY2hlcy4KLSAgICAgICAgICAgICAgICAgICAgT25jZSB5b3Uga25vdyBhIHBhcnRpY3VsYXIgdGFnLCB5b3UgY2FuIHVzZSBHaXQgY29tbWFuZHMKLSAgICAgICAgICAgICAgICAgICAgdG8gc2hvdyBjaGFuZ2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFnIGFuZCBmaW5kIHRoZSBicmFuY2hlcyB0aGF0IGNvbnRhaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIGZlYXR1cmUuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBCU1AgYnJhbmNoLCA8ZmlsZW5hbWU+a2VybmVsLm9yZzwvZmlsZW5hbWU+LCBhbmQgZmVhdHVyZSB0YWdzIGFyZSBhbGwKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQsIHRoZXJlIGNvdWxkIGJlIG1hbnkgdGFncy4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdCBzaG93ICZsdDt0YWcmZ3Q7PC9maWxlbmFtZT4gY29tbWFuZCBzaG93cyBjaGFuZ2VzIHRoYXQgYXJlIHRhZ2dlZCBieQotICAgICAgICAgICAgICAgICAgICBhIGZlYXR1cmUuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGNoYW5nZXMgdGFnZ2VkIGJ5IHRoZSA8ZmlsZW5hbWU+c3lzdGVtdGFwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBzaG93IHN5c3RlbXRhcAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+Z2l0IGJyYW5jaCAtLWNvbnRhaW5zICZsdDt0YWcmZ3Q7PC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICB0byBzaG93IHRoZSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gYSBwYXJ0aWN1bGFyIGZlYXR1cmUuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBzaG93cyB0aGUgYnJhbmNoZXMgdGhhdCBjb250YWluIHRoZSA8ZmlsZW5hbWU+c3lzdGVtdGFwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBicmFuY2ggLS1jb250YWlucyBzeXN0ZW10YXAKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBtYW55IG90aGVyIGNvbXBhcmlzb25zIHRvIGlzb2xhdGUgQlNQIGFuZCBrZXJuZWwgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gY29tcGFyZSBhZ2FpbnN0IDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gdGFncwotICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHRoZSA8ZmlsZW5hbWU+djMuNDwvZmlsZW5hbWU+IHRhZy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZGV2ZWxvcG1lbnQtc2F2aW5nLWtlcm5lbC1tb2RpZmljYXRpb25zJz4KLSAgICAgICAgICAgIDx0aXRsZT5EZXZlbG9wbWVudDogU2F2aW5nIEtlcm5lbCBNb2RpZmljYXRpb25zPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQW5vdGhlciBjb21tb24gb3BlcmF0aW9uIGlzIHRvIGJ1aWxkIGEgQlNQIHN1cHBsaWVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0LCBtYWtlIHNvbWUKLSAgICAgICAgICAgICAgICBjaGFuZ2VzLCByZWJ1aWxkLCBhbmQgdGhlbiB0ZXN0LgotICAgICAgICAgICAgICAgIFRob3NlIGxvY2FsIGNoYW5nZXMgb2Z0ZW4gbmVlZCB0byBiZSBleHBvcnRlZCwgc2hhcmVkIG9yIG90aGVyd2lzZSBtYWludGFpbmVkLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBTaW5jZSB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgc291cmNlIHRyZWUgaXMgYmFja2VkIGJ5IEdpdCwgdGhpcyBhY3Rpdml0eSBpcwotICAgICAgICAgICAgICAgIG11Y2ggZWFzaWVyIGFzIGNvbXBhcmVkIHRvIHdpdGggcHJldmlvdXMgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgQmVjYXVzZSBHaXQgdHJhY2tzIGZpbGUgbW9kaWZpY2F0aW9ucywgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMsIGl0IGlzIGVhc3kKLSAgICAgICAgICAgICAgICB0byBtb2RpZnkgdGhlIGNvZGUgYW5kIGxhdGVyIHJlYWxpemUgdGhhdCB5b3UgbmVlZCB0byBzYXZlIHRoZSBjaGFuZ2VzLgotICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gZWFzeSB0byBkZXRlcm1pbmUgd2hhdCBoYXMgY2hhbmdlZC4KLSAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBhbHNvIHByb3ZpZGVzIG1hbnkgdG9vbHMgdG8gY29tbWl0LCB1bmRvIGFuZCBleHBvcnQgdGhvc2UgbW9kaWZpY2F0aW9ucy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGFuZCBpdHMgc3ViLXNlY3Rpb25zLCBkZXNjcmliZSBnZW5lcmFsIGFwcGxpY2F0aW9uIG9mIEdpdCdzCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB1c2g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnB1bGw8L2ZpbGVuYW1lPiBjb21tYW5kcywgd2hpY2ggYXJlIHVzZWQgdG8KLSAgICAgICAgICAgICAgICBnZXQgeW91ciBjaGFuZ2VzIHVwc3RyZWFtIG9yIHNvdXJjZSB5b3VyIGNvZGUgZnJvbSBhbiB1cHN0cmVhbSByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHNjcmlwdHMgdGhhdCBoZWxwIHlvdSB3b3JrIGluIGEgY29sbGFib3JhdGl2ZSBkZXZlbG9wbWVudAotICAgICAgICAgICAgICAgIGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZQotICAgICAgICAgICAgICAgIFVwc3RyZWFtIGFuZCBSZXF1ZXN0IGEgUHVsbDwvdWxpbms+IiBhbmQKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc3VibWl0dGluZy1hLXBhdGNoJz5Vc2luZyBFbWFpbCB0byBTdWJtaXQgYSBQYXRjaDwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb25zIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlcmUgYXJlIG1hbnkgd2F5cyB0byBzYXZlIGtlcm5lbCBtb2RpZmljYXRpb25zLgotICAgICAgICAgICAgICAgIFRoZSB0ZWNobmlxdWUgZW1wbG95ZWQKLSAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSBkZXN0aW5hdGlvbiBmb3IgdGhlIHBhdGNoZXM6Ci0KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnVsayBzdG9yYWdlPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnRlcm5hbCBzaGFyaW5nIGVpdGhlciB0aHJvdWdoIHBhdGNoZXMgb3IgYnkgdXNpbmcgR2l0PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHRlcm5hbCBzdWJtaXNzaW9uczwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhwb3J0aW5nIGZvciBpbnRlZ3JhdGlvbiBpbnRvIGFub3RoZXIgU291cmNlIENvZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZXIgKFNDTSk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGxpc3Qgb2YgaXNzdWVzLCB0aGUgZGVzdGluYXRpb24gb2YgdGhlIHBhdGNoZXMgYWxzbyBpbmZsdWVuY2VzCi0gICAgICAgICAgICAgICAgdGhlIG1ldGhvZCBmb3IgZ2F0aGVyaW5nIHRoZW06Ci0KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QmlzZWN0YWJpbGl0eTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29tbWl0IGhlYWRlcnM8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRpdmlzaW9uIG9mIHN1YnN5c3RlbXMgZm9yIHNlcGFyYXRlIHN1Ym1pc3Npb24gb3IgcmV2aWV3PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdidWxrLWV4cG9ydCc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkJ1bGsgRXhwb3J0PC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB5b3UgY2FuICJidWxrIiBleHBvcnQgY2hhbmdlcyB0aGF0IGhhdmUgbm90Ci0gICAgICAgICAgICAgICAgICAgIGJlZW4gc2VwYXJhdGVkIG9yIGRpdmlkZWQuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2l0dWF0aW9uIHdvcmtzIHdlbGwgd2hlbiB5b3UgYXJlIHNpbXBseSBzdG9yaW5nIHBhdGNoZXMgb3V0c2lkZSBvZiB0aGUga2VybmVsCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSByZXBvc2l0b3J5LCBlaXRoZXIgcGVybWFuZW50bHkgb3IgdGVtcG9yYXJpbHksIGFuZCB5b3UgYXJlIG5vdCBjb21taXR0aW5nCi0gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsIGNoYW5nZXMgZHVyaW5nIGRldmVsb3BtZW50LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGVjaG5pcXVlIGlzIG5vdCBhcHByb3ByaWF0ZSBmb3IgZnVsbCBpbnRlZ3JhdGlvbiBvZiB1cHN0cmVhbSBzdWJtaXNzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIGNoYW5nZXMgYXJlIG5vdCBwcm9wZXJseSBkaXZpZGVkIGFuZCBkbyBub3QgcHJvdmlkZSBhbiBhdmVudWUgZm9yIHBlci1jaGFuZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhhdCBjaGFuZ2VzIGhhdmUgbm90IGJlZW4gY29tbWl0dGVkIGluY3JlbWVudGFsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBkZXZlbG9wbWVudCBhbmQgdGhhdCB5b3Ugc2ltcGx5IG11c3QgZ2F0aGVyIGFuZCBleHBvcnQgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICMgYnVsayBleHBvcnQgb2YgQUxMIG1vZGlmaWNhdGlvbnMgd2l0aG91dCBzZXBhcmF0aW9uIG9yIGRpdmlzaW9uCi0gICAgICMgb2YgdGhlIGNoYW5nZXMKLQotICAgICAkIGdpdCBhZGQgLgotICAgICAkIGdpdCBjb21taXQgLXMgLWEgLW0gJmx0O21zZyZndDsKLSAgICAgICAgb3IKLSAgICAgJCBnaXQgY29tbWl0IC1zIC1hICMgYW5kIGludGVyYWN0IHdpdGggJEVESVRPUgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBvcGVyYXRpb25zIGNhcHR1cmUgYWxsIHRoZSBsb2NhbCBjaGFuZ2VzIGluIHRoZSBwcm9qZWN0IHNvdXJjZQotICAgICAgICAgICAgICAgICAgICB0cmVlIGluIGEgc2luZ2xlIEdpdCBjb21taXQuCi0gICAgICAgICAgICAgICAgICAgIEFuZCwgdGhhdCBjb21taXQgaXMgYWxzbyBzdG9yZWQgaW4gdGhlIHByb2plY3QncyBzb3VyY2UgdHJlZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgY2hhbmdlcyBhcmUgZXhwb3J0ZWQsIHlvdSBjYW4gcmVzdG9yZSB0aGVtIG1hbnVhbGx5IHVzaW5nIGEgdGVtcGxhdGUKLSAgICAgICAgICAgICAgICAgICAgb3IgdGhyb3VnaCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGVmYXVsdF9rZXJuZWw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2luY3JlbWVudGFsLXBsYW5uZWQtc2hhcmluZyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkluY3JlbWVudGFsL1BsYW5uZWQgU2hhcmluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gc2F2ZSBtb2RpZmljYXRpb25zIHdoZW4geW91IGFyZSBtYWtpbmcgaW5jcmVtZW50YWwKLSAgICAgICAgICAgICAgICAgICAgY29tbWl0cyBvciBwcmFjdGljaW5nIHBsYW5uZWQgc2hhcmluZy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGluIHRoaXMgc2VjdGlvbiBhc3N1bWUgdGhhdCB5b3UgaGF2ZSBpbmNyZW1lbnRhbGx5IGNvbW1pdHRlZAotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIHRoZSB0cmVlIGR1cmluZyBkZXZlbG9wbWVudCBhbmQgbm93IG5lZWQgdG8gZXhwb3J0IHRoZW0uCi0gICAgICAgICAgICAgICAgICAgIFRoZSBzZWN0aW9ucyB0aGF0IGZvbGxvdwotICAgICAgICAgICAgICAgICAgICBkZXNjcmliZSBob3cgeW91IGNhbiBleHBvcnQgeW91ciBjaGFuZ2VzIGludGVybmFsbHkgdGhyb3VnaCBlaXRoZXIgcGF0Y2hlcyBvciBieQotICAgICAgICAgICAgICAgICAgICB1c2luZyBHaXQgY29tbWFuZHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIER1cmluZyBkZXZlbG9wbWVudCwgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgb2YgaW50ZXJlc3QuCi0gICAgICAgICAgICAgICAgICAgIEZvciBmdWxsIEdpdCBkb2N1bWVudGF0aW9uLCByZWZlciB0byB0aGUgR2l0IGRvY3VtZW50YXRpb24gYXQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdGh1Yi5jb20nPjwvdWxpbms+LgotCi0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIyBlZGl0IGEgZmlsZQotICAgICAkIHZpICZsdDtwYXRoJmd0Oy9maWxlCi0gICAgICMgc3RhZ2UgdGhlIGNoYW5nZQotICAgICAkIGdpdCBhZGQgJmx0O3BhdGgmZ3Q7L2ZpbGUKLSAgICAgIyBjb21taXQgdGhlIGNoYW5nZQotICAgICAkIGdpdCBjb21taXQgLXMKLSAgICAgIyByZW1vdmUgYSBmaWxlCi0gICAgICQgZ2l0IHJtICZsdDtwYXRoJmd0Oy9maWxlCi0gICAgICMgY29tbWl0IHRoZSBjaGFuZ2UKLSAgICAgJCBnaXQgY29tbWl0IC1zCi0KLSAgICAgLi4uIGV0Yy4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRlZCBkZXZlbG9wbWVudCB3aXRoIEdpdCBpcyBwb3NzaWJsZSB3aGVuIHlvdSB1c2UgYSB1bml2ZXJzYWxseQotICAgICAgICAgICAgICAgICAgICBhZ3JlZWQtdXBvbiB1bmlxdWUgY29tbWl0IGlkZW50aWZpZXIgKHNldCBieSB0aGUgY3JlYXRvciBvZiB0aGUgY29tbWl0KSB0aGF0IG1hcHMgdG8gYQotICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBjaGFuZ2Ugc2V0IHdpdGggYSBzcGVjaWZpYyBwYXJlbnQuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgaWRlbnRpZmllciBpcyBjcmVhdGVkIGZvciB5b3Ugd2hlbgotICAgICAgICAgICAgICAgICAgICB5b3UgY3JlYXRlIGEgY29tbWl0LCBhbmQgaXMgcmUtY3JlYXRlZCB3aGVuIHlvdSBhbWVuZCwgYWx0ZXIgb3IgcmUtYXBwbHkKLSAgICAgICAgICAgICAgICAgICAgYSBjb21taXQuCi0gICAgICAgICAgICAgICAgICAgIEFzIGFuIGluZGl2aWR1YWwgaW4gaXNvbGF0aW9uLCB0aGlzIGlzIG9mIG5vIGludGVyZXN0LgotICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UKLSAgICAgICAgICAgICAgICAgICAgaW50ZW5kIHRvIHNoYXJlIHlvdXIgdHJlZSB3aXRoIG5vcm1hbCBHaXQgPGZpbGVuYW1lPnB1c2g8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB1bGw8L2ZpbGVuYW1lPiBvcGVyYXRpb25zIGZvcgotICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRlZCBkZXZlbG9wbWVudCwgeW91IHNob3VsZCBjb25zaWRlciB0aGUgcmFtaWZpY2F0aW9ucyBvZiBjaGFuZ2luZyBhCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdCB0aGF0IHlvdSBoYXZlIGFscmVhZHkgc2hhcmVkIHdpdGggb3RoZXJzLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB0aGF0IHRoZSBjaGFuZ2VzIGhhdmUgbm90IGJlZW4gcHVzaGVkIHVwc3RyZWFtLCBvciBwdWxsZWQgaW50bwotICAgICAgICAgICAgICAgICAgICBhbm90aGVyIHJlcG9zaXRvcnksIHlvdSBjYW4gdXBkYXRlIGJvdGggdGhlIGNvbW1pdCBjb250ZW50IGFuZCBjb21taXQgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGRldmVsb3BtZW50IGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0KLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIEdpdCBhZGQgJmx0O3BhdGgmZ3Q7L2ZpbGUKLSAgICAgJCBHaXQgY29tbWl0IC0tYW1lbmQKLSAgICAgJCBHaXQgcmViYXNlIG9yIEdpdCByZWJhc2UgLWkKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBZ2FpbiwgYXNzdW1pbmcgdGhhdCB0aGUgY2hhbmdlcyBoYXZlIG5vdCBiZWVuIHB1c2hlZCB1cHN0cmVhbSwgYW5kIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgbm8gcGVuZGluZyB3b3Jrcy1pbi1wcm9ncmVzcyBleGlzdCAodXNlIDxmaWxlbmFtZT5naXQgc3RhdHVzPC9maWxlbmFtZT4gdG8gY2hlY2spLCB0aGVuCi0gICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gcmV2ZXJ0ICh1bmRvKSBjb21taXRzIGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0KLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIHJlbW92ZSB0aGUgY29tbWl0LCB1cGRhdGUgd29ya2luZyB0cmVlIGFuZCByZW1vdmUgYWxsCi0gICAgICMgdHJhY2VzIG9mIHRoZSBjaGFuZ2UKLSAgICAgJCBnaXQgcmVzZXQgLS1oYXJkIEhFQUReCi0gICAgICMgcmVtb3ZlIHRoZSBjb21taXQsIGJ1dCBsZWF2ZSB0aGUgZmlsZXMgY2hhbmdlZCBhbmQgc3RhZ2VkIGZvciByZS1jb21taXQKLSAgICAgJCBnaXQgcmVzZXQgLS1zb2Z0IEhFQUReCi0gICAgICMgcmVtb3ZlIHRoZSBjb21taXQsIGxlYXZlIGZpbGUgY2hhbmdlLCBidXQgbm90IHN0YWdlZCBmb3IgY29tbWl0Ci0gICAgICQgZ2l0IHJlc2V0IC0tbWl4ZWQgSEVBRF4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSBicmFuY2hlcywgImNoZXJyeS1waWNrIiBjaGFuZ2VzLCBvciBwZXJmb3JtIGFueSBudW1iZXIgb2YgR2l0Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgdW50aWwgdGhlIGNvbW1pdHMgYXJlIGluIGdvb2Qgb3JkZXIgZm9yIHB1c2hpbmcgdXBzdHJlYW0KLSAgICAgICAgICAgICAgICAgICAgb3IgZm9yIHB1bGwgcmVxdWVzdHMuCi0gICAgICAgICAgICAgICAgICAgIEFmdGVyIGEgPGZpbGVuYW1lPnB1c2g8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+cHVsbDwvZmlsZW5hbWU+IGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHMgYXJlIG5vcm1hbGx5IGNvbnNpZGVyZWQKLSAgICAgICAgICAgICAgICAgICAgInBlcm1hbmVudCIgYW5kIHlvdSBzaG91bGQgbm90IG1vZGlmeSB0aGVtLgotICAgICAgICAgICAgICAgICAgICBJZiB0aGUgY29tbWl0cyBuZWVkIHRvIGJlIGNoYW5nZWQsIHlvdSBjYW4gaW5jcmVtZW50YWxseSBkbyBzbyB3aXRoIG5ldyBjb21taXRzLgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBwcmFjdGljZXMgZm9sbG93IHN0YW5kYXJkIEdpdCB3b3JrZmxvdyBhbmQgdGhlIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gYmVzdAotICAgICAgICAgICAgICAgICAgICBwcmFjdGljZXMsIHdoaWNoIGlzIHJlY29tbWVuZGVkLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRvIHRhZyBvciBicmFuY2ggYmVmb3JlIGFkZGluZyBjaGFuZ2VzIHRvIGEgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgQlNQIG9yIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBvbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIHJlY29tbWVuZGF0aW9uIGlzIGJlY2F1c2UgdGhlIGJyYW5jaCBvciB0YWcgcHJvdmlkZXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIHBvaW50IHRvIGZhY2lsaXRhdGUgbG9jYXRpbmcgYW5kIGV4cG9ydGluZyBsb2NhbCBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2V4cG9ydC1pbnRlcm5hbGx5LXZpYS1wYXRjaGVzJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkV4cG9ydGluZyBDaGFuZ2VzIEludGVybmFsbHkgYnkgVXNpbmcgUGF0Y2hlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB5b3UgY2FuIGV4dHJhY3QgY29tbWl0dGVkIGNoYW5nZXMgZnJvbSBhIHdvcmtpbmcgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICBieSBleHBvcnRpbmcgdGhlbSBhcyBwYXRjaGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgY2hhbmdlcyBoYXZlIGJlZW4gZXh0cmFjdGVkLCB5b3UgY2FuIHVzZSB0aGUgcGF0Y2hlcyBmb3IgdXBzdHJlYW0gc3VibWlzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlIHRoZW0gaW4gYSBZb2N0byBQcm9qZWN0IHRlbXBsYXRlIGZvciBhdXRvbWF0aWMga2VybmVsIHBhdGNoaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgb3IgYXBwbHkgdGhlbSBpbiBtYW55IG90aGVyIGNvbW1vbiB1c2VzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgc2hvd3MgaG93IHRvIGNyZWF0ZSBhIGRpcmVjdG9yeSB3aXRoIHNlcXVlbnRpYWxseSBudW1iZXJlZCBwYXRjaGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgZGlyZWN0b3J5IGlzIGNyZWF0ZWQsIHlvdSBjYW4gYXBwbHkgaXQgdG8gYSByZXBvc2l0b3J5IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBhbTwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gcmVwcm9kdWNlIHRoZSBvcmlnaW5hbCBjb21taXQgYW5kIGFsbAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlbGF0ZWQgaW5mb3JtYXRpb24gc3VjaCBhcyBhdXRob3IsIGRhdGUsIGNvbW1pdCBsb2csIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXcgY29tbWl0IGlkZW50aWZpZXJzIChJRCkgd2lsbCBiZSBnZW5lcmF0ZWQgdXBvbiByZS1hcHBsaWNhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFjdGlvbiByZWZsZWN0cyB0aGF0IHRoZSBjb21taXQgaXMgbm93IGFwcGxpZWQgdG8gYW4gdW5kZXJseWluZyBjb21taXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEgZGlmZmVyZW50IElELgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjICZsdDtmaXJzdC1jb21taXQmZ3Q7IGNhbiBiZSBhIHRhZyBpZiBvbmUgd2FzIGNyZWF0ZWQgYmVmb3JlIGRldmVsb3BtZW50Ci0gICAgICMgYmVnYW4uIEl0IGNhbiBhbHNvIGJlIHRoZSBwYXJlbnQgYnJhbmNoIGlmIGEgYnJhbmNoIHdhcyBjcmVhdGVkCi0gICAgICMgYmVmb3JlIGRldmVsb3BtZW50IGJlZ2FuLgotCi0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtbyAmbHQ7ZGlyJmd0OyAmbHQ7Zmlyc3QgY29tbWl0Jmd0Oy4uJmx0O2xhc3QgY29tbWl0Jmd0OwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIyBJZGVudGlmeSBjb21taXRzIG9mIGludGVyZXN0LgotCi0gICAgICMgSWYgdGhlIHRyZWUgd2FzIHRhZ2dlZCBiZWZvcmUgZGV2ZWxvcG1lbnQKLSAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIC1vICZsdDtzYXZlIGRpciZndDsgJmx0O3RhZyZndDsKLQotICAgICAjIElmIG5vIHRhZ3MgYXJlIGF2YWlsYWJsZQotICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLW8gJmx0O3NhdmUgZGlyJmd0OyBIRUFEXiAgIyBsYXN0IGNvbW1pdAotICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLW8gJmx0O3NhdmUgZGlyJmd0OyBIRUFEXl4gIyBsYXN0IDIgY29tbWl0cwotICAgICAkIGdpdCB3aGF0Y2hhbmdlZCAjIGlkZW50aWZ5IGxhc3QgY29tbWl0Ci0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtbyAmbHQ7c2F2ZSBkaXImZ3Q7ICZsdDtjb21taXQgaWQmZ3Q7Ci0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCAtbyAmbHQ7c2F2ZSBkaXImZ3Q7ICZsdDtyZXYtbGlzdCZndDsKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdleHBvcnQtaW50ZXJuYWxseS12aWEtZ2l0Jz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkV4cG9ydGluZyBDaGFuZ2VzIEludGVybmFsbHkgYnkgVXNpbmcgR2l0PC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHlvdSBjYW4gZXhwb3J0IGNoYW5nZXMgZnJvbSBhIHdvcmtpbmcgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICBieSBwdXNoaW5nIHRoZSBjaGFuZ2VzIGludG8gYSBtYXN0ZXIgcmVwb3NpdG9yeSBvciBieSBtYWtpbmcgYSBwdWxsIHJlcXVlc3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHB1c2hlZCB0aGUgY2hhbmdlcyB0byB0aGUgbWFzdGVyIHJlcG9zaXRvcnksIHlvdSBjYW4gdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgcHVsbCB0aG9zZSBzYW1lIGNoYW5nZXMgaW50byBhIG5ldyBrZXJuZWwgYnVpbGQgYXQgYSBsYXRlciB0aW1lLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBjb21tYW5kIGZvcm0gdG8gcHVzaCB0aGUgY2hhbmdlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgcHVzaCBzc2g6Ly8mbHQ7bWFzdGVyX3NlcnZlciZndDsvJmx0O3BhdGhfdG9fcmVwbyZndDsKLSAgICAgICAgJmx0O2xvY2FsX2JyYW5jaCZndDs6Jmx0O3JlbW90ZV9icmFuY2gmZ3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgcHVzaGVzIHRoZSBjaGFuZ2VzIGZyb20geW91ciBsb2NhbCBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by9zdGFuZGFyZC9jb21tb24tcGMvYmFzZTwvZmlsZW5hbWU+IHRvIHRoZSByZW1vdGUgYnJhbmNoIHdpdGggdGhlIHNhbWUgbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG1hc3RlciByZXBvc2l0b3J5IDxmaWxlbmFtZT4vL2dpdC5teWNvbXBhbnkuY29tL3B1Yi9naXQva2VybmVsLTMuNDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBwdXNoIHNzaDovL2dpdC5teWNvbXBhbnkuY29tL3B1Yi9naXQva2VybmVsLTMuNCBcCi0gICAgICAgIHlvY3RvL3N0YW5kYXJkL2NvbW1vbi1wYy9iYXNlOnlvY3RvL3N0YW5kYXJkL2NvbW1vbi1wYy9iYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgcHVsbCByZXF1ZXN0IGVudGFpbHMgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgcmVxdWVzdC1wdWxsPC9maWxlbmFtZT4gY29tbWFuZCB0byBjb21wb3NlCi0gICAgICAgICAgICAgICAgICAgICAgICBhbiBlbWFpbCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIG1haW50YWluZXIgcmVxdWVzdGluZyB0aGF0IGEgYnJhbmNoIGJlIHB1bGxlZCBpbnRvIHRoZSBtYXN0ZXIgcmVwb3NpdG9yeSwgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0aHViLmNvbS9ndWlkZXMvcHVsbC1yZXF1ZXN0cyc+PC91bGluaz4gZm9yIGFuIGV4YW1wbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlciBjb21tYW5kcyBzdWNoIGFzIDxmaWxlbmFtZT5naXQgc3Rhc2g8L2ZpbGVuYW1lPiBvciBicmFuY2hpbmcgY2FuIGFsc28gYmUgdXNlZCB0byBzYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcywgYnV0IGFyZSBub3QgY292ZXJlZCBpbiB0aGlzIGRvY3VtZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nZXhwb3J0LWZvci1leHRlcm5hbC11cHN0cmVhbS1zdWJtaXNzaW9uJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+RXhwb3J0aW5nIENoYW5nZXMgZm9yIEV4dGVybmFsIChVcHN0cmVhbSkgU3VibWlzc2lvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gZXhwb3J0IGNoYW5nZXMgZm9yIGV4dGVybmFsIHVwc3RyZWFtIHN1Ym1pc3Npb24uCi0gICAgICAgICAgICAgICAgICAgIElmIHRoZSBwYXRjaCBzZXJpZXMgaXMgbGFyZ2Ugb3IgdGhlIG1haW50YWluZXIgcHJlZmVycyB0byBwdWxsCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMsIHlvdSBjYW4gc3VibWl0IHRoZXNlIGNoYW5nZXMgYnkgdXNpbmcgYSBwdWxsIHJlcXVlc3QuCi0gICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGNvbW1vbiB0byBzZW5kIHBhdGNoZXMgYXMgYW4gZW1haWwgc2VyaWVzLgotICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBhbGxvd3MgZWFzeSByZXZpZXcgYW5kIGludGVncmF0aW9uIG9mIHRoZSBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJlZm9yZSBzZW5kaW5nIHBhdGNoZXMgZm9yIHJldmlldyBiZSBzdXJlIHlvdSB1bmRlcnN0YW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgY29tbXVuaXR5IHN0YW5kYXJkcyBmb3Igc3VibWl0dGluZyBhbmQgZG9jdW1lbnRpbmcgY2hhbmdlcyBhbmQgZm9sbG93IHRoZWlyIGJlc3QgcHJhY3RpY2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGtlcm5lbCBwYXRjaGVzIHNob3VsZCBmb2xsb3cgc3RhbmRhcmRzIHN1Y2ggYXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpbnV4Lnl5ei51cy9wYXRjaC1mb3JtYXQuaHRtbCc+PC91bGluaz48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcyAoaW4gYW55IGxpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBzb3VyY2UgdHJlZSk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBtZXNzYWdlcyB1c2VkIHRvIGNvbW1pdCBjaGFuZ2VzIGFyZSBhIGxhcmdlIHBhcnQgb2YgdGhlc2Ugc3RhbmRhcmRzLgotICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGJlIHN1cmUgdGhhdCB0aGUgaGVhZGVycyBmb3IgZWFjaCBjb21taXQgaGF2ZSB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZm9sbG93IHRoZSBZb2N0byBQcm9qZWN0IGNvbW1pdCBtZXNzYWdlIHN0YW5kYXJkcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+SG93IHRvIFN1Ym1pdCBhCi0gICAgICAgICAgICAgICAgICAgIENoYW5nZTwvdWxpbms+IiBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGluaXRpYWwgY29tbWl0cyB3ZXJlIG5vdCBwcm9wZXJseSBkb2N1bWVudGVkIG9yIGRvIG5vdCBtZWV0IHRob3NlIHN0YW5kYXJkcywKLSAgICAgICAgICAgICAgICAgICAgeW91IGNhbiByZS1iYXNlIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+Z2l0IHJlYmFzZSAtaTwvZmlsZW5hbWU+IGNvbW1hbmQgdG8KLSAgICAgICAgICAgICAgICAgICAgbWFuaXB1bGF0ZSB0aGUgY29tbWl0cyBhbmQKLSAgICAgICAgICAgICAgICAgICAgZ2V0IHRoZW0gaW50byB0aGUgcmVxdWlyZWQgZm9ybWF0LgotICAgICAgICAgICAgICAgICAgICBPdGhlciB0ZWNobmlxdWVzIHN1Y2ggYXMgYnJhbmNoaW5nIGFuZCBjaGVycnktcGlja2luZyBjb21taXRzIGFyZSBhbHNvIHZpYWJsZSBvcHRpb25zLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBjb21wbGV0ZSB0aGUgY29tbWl0cywgeW91IGNhbiBnZW5lcmF0ZSB0aGUgZW1haWwgdGhhdCBzZW5kcyB0aGUgcGF0Y2hlcwotICAgICAgICAgICAgICAgICAgICB0byB0aGUgbWFpbnRhaW5lcihzKSBvciBsaXN0cyB0aGF0IHJldmlldyBhbmQgaW50ZWdyYXRlIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGlzIGNvbW1vbmx5IHVzZWQgdG8gZW5zdXJlCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgcGF0Y2hlcyBhcmUgcHJvcGVybHkKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIGZvciBlYXN5IGFwcGxpY2F0aW9uIGFuZCBhdm9pZCBtYWlsZXItaW5kdWNlZCBwYXRjaCBkYW1hZ2UuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBkdW1waW5nIHBhdGNoZXMgZm9yIGV4dGVybmFsIHN1Ym1pc3Npb246Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIyBkdW1wIHRoZSBsYXN0IDQgY29tbWl0cwotICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLS10aHJlYWQgLW4gLW8gfi9yci8gSEVBRF5eXl4KLSAgICAgJCBnaXQgc2VuZC1lbWFpbCAtLWNvbXBvc2UgLS1zdWJqZWN0ICdbUkZDIDAvTl0gJmx0O3BhdGNoIHNlcmllcyBzdW1tYXJ5Jmd0OycgXAotICAgICAgLS10byBmb29AeW9jdG9wcm9qZWN0Lm9yZyAtLXRvIGJhckB5b2N0b3Byb2plY3Qub3JnIFwKLSAgICAgIC0tY2MgbGlzdEB5b2N0b3Byb2plY3Qub3JnICB+L3JyCi0gICAgICMgdGhlIGVkaXRvciBpcyBpbnZva2VkIGZvciB0aGUgMC9OIHBhdGNoLCBhbmQgd2hlbiBjb21wbGV0ZSB0aGUgZW50aXJlCi0gICAgICMgc2VyaWVzIGlzIHNlbnQgdmlhIGVtYWlsIGZvciByZXZpZXcKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2V4cG9ydC1mb3ItaW1wb3J0LWludG8tb3RoZXItc2NtJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+RXhwb3J0aW5nIENoYW5nZXMgZm9yIEltcG9ydCBpbnRvIEFub3RoZXIgU0NNPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB3YW50IHRvIGV4cG9ydCBjaGFuZ2VzIGZvciBpbXBvcnQgaW50byBhbm90aGVyCi0gICAgICAgICAgICAgICAgICAgIFNvdXJjZSBDb2RlIE1hbmFnZXIgKFNDTSksIHlvdSBjYW4gdXNlIGFueSBvZiB0aGUgcHJldmlvdXNseSBkaXNjdXNzZWQKLSAgICAgICAgICAgICAgICAgICAgdGVjaG5pcXVlcy4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgdGhlIHBhdGNoZXMgYXJlIG1hbnVhbGx5IGFwcGxpZWQgdG8gYSBzZWNvbmRhcnkgdHJlZSBhbmQgdGhlbgotICAgICAgICAgICAgICAgICAgICB0aGF0IHRyZWUgaXMgY2hlY2tlZCBpbnRvIHRoZSBTQ00sIHlvdSBjYW4gbG9zZSBjaGFuZ2UgaW5mb3JtYXRpb24gc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICBjb21taXQgbG9ncy4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBwcm9jZXNzIGlzIG5vdCByZWNvbW1lbmRlZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgTWFueSBTQ01zIGNhbiBkaXJlY3RseSBpbXBvcnQgR2l0IGNvbW1pdHMsIG9yIGNhbiB0cmFuc2xhdGUgR2l0IHBhdGNoZXMgc28gdGhhdAotICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpcyBub3QgbG9zdC4KLSAgICAgICAgICAgICAgICAgICAgVGhvc2UgZmFjaWxpdGllcyBhcmUgU0NNLWRlcGVuZGVudCBhbmQgeW91IHNob3VsZCB1c2UgdGhlbSB3aGVuZXZlciBwb3NzaWJsZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc2NtLXdvcmtpbmctd2l0aC10aGUteW9jdG8tcHJvamVjdC1rZXJuZWwtaW4tYW5vdGhlci1zY20nPgotICAgICAgICAgICAgPHRpdGxlPldvcmtpbmcgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBLZXJuZWwgaW4gQW5vdGhlciBTQ008L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGtlcm5lbCBkZXZlbG9wbWVudCBpbiBhbiBTQ00gb3RoZXIgdGhhbiBHaXQsCi0gICAgICAgICAgICAgICAgd2hpY2ggaXMgbm90IHRoZSBzYW1lIGFzIGV4cG9ydGluZyBjaGFuZ2VzIHRvIGFub3RoZXIgU0NNIGRlc2NyaWJlZCBlYXJsaWVyLgotICAgICAgICAgICAgICAgIEZvciB0aGlzIHNjZW5hcmlvLCB5b3UgdXNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvCi0gICAgICAgICAgICAgICAgZGV2ZWxvcCB0aGUga2VybmVsIGluIGEgZGlmZmVyZW50IFNDTS4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZSBmb3IgeW91IHRvIGFjY29tcGxpc2ggdGhpczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGRlbGl2ZXJlZCBZb2N0byBQcm9qZWN0IGtlcm5lbCBtdXN0IGJlIGV4cG9ydGVkIGludG8gdGhlIHNlY29uZAotICAgICAgICAgICAgICAgICAgICAgICAgU0NNLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGV2ZWxvcG1lbnQgbXVzdCBiZSBleHBvcnRlZCBmcm9tIHRoYXQgc2Vjb25kYXJ5IFNDTSBpbnRvIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nZXhwb3J0aW5nLWRlbGl2ZXJlZC1rZXJuZWwtdG8tc2NtJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+RXhwb3J0aW5nIHRoZSBEZWxpdmVyZWQgS2VybmVsIHRvIHRoZSBTQ008L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgU0NNLCBpdCBtaWdodCBiZSBwb3NzaWJsZSB0byBleHBvcnQgdGhlIGVudGlyZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIGtlcm5lbCBHaXQgcmVwb3NpdG9yeSwgYnJhbmNoZXMgYW5kIGFsbCwgaW50byBhIG5ldyBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgcHJlZmVycmVkIGJlY2F1c2UgaXQgaGFzIHRoZSBtb3N0IGZsZXhpYmlsaXR5IGFuZCBwb3RlbnRpYWwgdG8gbWFpbnRhaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIG1ldGEgZGF0YSBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb21taXQuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFdoZW4gYSBkaXJlY3QgaW1wb3J0IG1lY2hhbmlzbSBpcyBub3QgYXZhaWxhYmxlLCBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0bwotICAgICAgICAgICAgICAgICAgICBleHBvcnQgYSBicmFuY2ggKG9yIHNlcmllcyBvZiBicmFuY2hlcykgYW5kIGNoZWNrIHRoZW0gaW50byBhIG5ldyByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGlsbHVzdHJhdGUgc29tZSBvZiB0aGUgc3RlcHMgeW91IGNvdWxkIHVzZSB0bwotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdGhlIDxmaWxlbmFtZT55b2N0by9zdGFuZGFyZC9jb21tb24tcGMvYmFzZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbnRvIGEgc2Vjb25kYXJ5IFNDTToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjaGVja291dCB5b2N0by9zdGFuZGFyZC9jb21tb24tcGMvYmFzZQotICAgICAkIGNkIC4uIDsgZWNobyBsaW51eC8uZ2l0ICZndDsgLmN2c2lnbm9yZQotICAgICAkIGN2cyBpbXBvcnQgLW0gImluaXRpYWwgaW1wb3J0IiBsaW51eCBNWV9DT01QQU5ZIHN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNvdWxkIG5vdyByZWxvY2F0ZSB0aGUgQ1ZTIHJlcG9zaXRvcnkgYW5kIHVzZSBpdCBpbiBhIGNlbnRyYWxpemVkIG1hbm5lci4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kcyBpbGx1c3RyYXRlIGhvdyB5b3UgY2FuIGNvbmRlbnNlIGFuZCBtZXJnZSB0d28gQlNQcyBpbnRvIGEKLSAgICAgICAgICAgICAgICAgICAgc2Vjb25kIFNDTToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjaGVja291dCB5b2N0by9zdGFuZGFyZC9jb21tb24tcGMvYmFzZQotICAgICAkIGdpdCBtZXJnZSB5b2N0by9zdGFuZGFyZC9jb21tb24tcGMtNjQvYmFzZQotICAgICAjIHJlc29sdmUgYW55IGNvbmZsaWN0cyBhbmQgY29tbWl0IHRoZW0KLSAgICAgJCBjZCAuLiA7IGVjaG8gbGludXgvLmdpdCAmZ3Q7IC5jdnNpZ25vcmUKLSAgICAgJCBjdnMgaW1wb3J0IC1tICJpbml0aWFsIGltcG9ydCIgbGludXggTVlfQ09NUEFOWSBzdGFydAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0naW1wb3J0aW5nLWNoYW5nZXMtZm9yLWJ1aWxkJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+SW1wb3J0aW5nIENoYW5nZXMgZm9yIHRoZSBCdWlsZDwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgT25jZSBkZXZlbG9wbWVudCBoYXMgcmVhY2hlZCBhIHN1aXRhYmxlIHBvaW50IGluIHRoZSBzZWNvbmQgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIHlvdSBuZWVkIHRvIGV4cG9ydCB0aGUgY2hhbmdlcyBhcyBwYXRjaGVzLgotICAgICAgICAgICAgICAgICAgICBUbyBleHBvcnQgdGhlbSwgcGxhY2UgdGhlIGNoYW5nZXMgaW4gYSByZWNpcGUgYW5kCi0gICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYXBwbHkgdGhlbSB0byB0aGUga2VybmVsIGR1cmluZyBwYXRjaGluZy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYnNwLWNyZWF0aW5nJz4KLSAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBhIEJTUCBCYXNlZCBvbiBhbiBFeGlzdGluZyBTaW1pbGFyIEJTUDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBvdmVydmlld3MgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgYSBCU1AgYmFzZWQgb24gYW4KLSAgICAgICAgICAgICAgICBleGlzdGluZyBzaW1pbGFyIEJTUC4KLSAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gaXMgaW50cm9kdWN0b3J5IGluIG5hdHVyZSBhbmQgZG9lcyBub3QgcHJvdmlkZSBzdGVwLWJ5LXN0ZXAgZXhhbXBsZXMuCi0gICAgICAgICAgICAgICAgRm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYSBuZXcgQlNQLCBzZWUKLSAgICAgICAgICAgICAgICB0aGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC91bGluaz4iIHNlY3Rpb24gaW4gdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUsIG9yIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvVHJhbnNjcmlwdDpfY3JlYXRpbmdfb25lX2dlbmVyaWNfQXRvbV9CU1BfZnJvbV9hbm90aGVyJz5UcmFuc2NyaXB0Ol9jcmVhdGluZ19vbmVfZ2VuZXJpY19BdG9tX0JTUF9mcm9tX2Fub3RoZXI8L3VsaW5rPgotICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGJhc2ljIHN0ZXBzIHlvdSBuZWVkIHRvIGZvbGxvdyBhcmU6Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1ha2Ugc3VyZSB5b3UgaGF2ZSBzZXQgdXAgYSBsb2NhbCBTb3VyY2UgRGlyZWN0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBjcmVhdGUgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBieSBlaXRoZXIgY3JlYXRpbmcgYSBHaXQgcmVwb3NpdG9yeSAocmVjb21tZW5kZWQpIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0aW5nIGEgWW9jdG8gUHJvamVjdCByZWxlYXNlIHRhcmJhbGwuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2hvb3NlIGFuIGV4aXN0aW5nIEJTUCBhdmFpbGFibGUgd2l0aCB0aGUgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVHJ5IHRvIG1hcCB5b3VyIGJvYXJkIGZlYXR1cmVzIGFzIGNsb3NlbHkgdG8gdGhlIGZlYXR1cmVzIG9mIGEgQlNQIHRoYXQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgc3VwcG9ydGVkIGFuZCBleGlzdHMgaW4gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBTdGFydGluZyB3aXRoIHNvbWV0aGluZyBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB5b3VyIGJvYXJkIG1ha2VzIGRldmVsb3BpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgQlNQIGVhc2llci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhbGwgdGhlIEJTUHMgdGhhdCBhcmUgc3VwcG9ydGVkIGFuZCBzaGlwIHdpdGggdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBZb2N0byBQcm9qZWN0J3MgRG93bmxvYWQgcGFnZSBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb3dubG9hZCc+PC91bGluaz4uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QmUgc3VyZSB5b3UgaGF2ZSB0aGUgQmFzZSBCU1A6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGVpdGhlciBoYXZlIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlIGJhc2UgQlNQIHNldCB1cCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBkb3dubG9hZGVkIGFuZCBleHRyYWN0ZWQgdGhlIGZpbGVzIGZyb20gYSByZWxlYXNlIEJTUCB0YXJiYWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgRWl0aGVyIG1ldGhvZCBnaXZlcyB5b3UgYWNjZXNzIHRvIHRoZSBCU1Agc291cmNlIGZpbGVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1ha2UgYSBjb3B5IG9mIHRoZSBleGlzdGluZyBCU1AsIHRodXMgaXNvbGF0aW5nIHlvdXIgbmV3Ci0gICAgICAgICAgICAgICAgICAgICAgICBCU1Agd29yazo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQ29weWluZyB0aGUgZXhpc3RpbmcgQlNQIGZpbGUgc3RydWN0dXJlIGdpdmVzIHlvdSBhIG5ldyBhcmVhIGluIHdoaWNoIHRvIHdvcmsuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFrZSBjb25maWd1cmF0aW9uIGFuZCByZWNpcGUgY2hhbmdlcyB0byB5b3VyIG5ldyBCU1A6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY2hhbmdlcyBpbnZvbHZlIHRoZSBmaWxlcyBpbiB0aGUgQlNQJ3MgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlcyBpbmNsdWRlIGNyZWF0aW5nIGEgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgYW5kIGVkaXRpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGlkZW50aWZ5IHRoZSBrZXJuZWwgeW91IHdpbGwgYmUgdXNpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGUgY2hhbmdlcyBpbmNsdWRlIHJlbW92aW5nLCBtb2RpZnlpbmcsIG9yIGFkZGluZyBuZXcgcmVjaXBlIGZpbGVzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0IHRoZSBidWlsZCBwcm9jZXNzIG9uIHdoYXQgZmVhdHVyZXMgdG8gaW5jbHVkZSBpbiB0aGUgaW1hZ2UuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UHJlcGFyZSBmb3IgdGhlIGJ1aWxkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGFjdHVhbGx5IGluaXRpYXRlIHRoZSBidWlsZCwgeW91IG5lZWQgdG8gc2V0IHVwIHRoZSBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgYnkgc291cmNpbmcgdGhlIGVudmlyb25tZW50IGluaXRpYWxpemF0aW9uIHNjcmlwdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50LCB5b3UgbmVlZCB0byBtYWtlIHNvbWUgYnVpbGQgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyB0byB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgdGhlIGltYWdlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIEJpdEJha2UgdG8gY3JlYXRlIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGRlY2lkZSBvbiB0aGUgdHlwZSBvZiBpbWFnZSB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIChlLmcuIG1pbmltYWwsIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb3JlLCBzYXRvLCBhbmQgc28gZm9ydGgpIGFuZCB0aGVuIHN0YXJ0IHRoZSBidWlsZCB1c2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3RpcC1kaXJ0eS1zdHJpbmcnPgotICAgICAgICAgICAgPHRpdGxlPiItZGlydHkiIFN0cmluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIGtlcm5lbCBpbWFnZXMgYXJlIGJlaW5nIGJ1aWx0IHdpdGggIi1kaXJ0eSIgb24gdGhlIGVuZCBvZiB0aGUgdmVyc2lvbgotICAgICAgICAgICAgICAgIHN0cmluZywgdGhpcyBzaW1wbHkgbWVhbnMgdGhhdCBtb2RpZmljYXRpb25zIGluIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaGF2ZSBub3QgYmVlbiBjb21taXR0ZWQuCi0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBzdGF0dXMKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBhYm92ZSBHaXQgY29tbWFuZCB0byByZXBvcnQgbW9kaWZpZWQsIHJlbW92ZWQsIG9yIGFkZGVkIGZpbGVzLgotICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgY29tbWl0IHRob3NlIGNoYW5nZXMgdG8gdGhlIHRyZWUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgd2lsbCBiZSBzYXZlZCwKLSAgICAgICAgICAgICAgICBleHBvcnRlZCwgb3IgdXNlZC4KLSAgICAgICAgICAgICAgICBPbmNlIHlvdSBjb21taXQgdGhlIGNoYW5nZXMgeW91IG5lZWQgdG8gcmVidWlsZCB0aGUga2VybmVsLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBicnV0ZSBmb3JjZSBwaWNrdXAgYW5kIGNvbW1pdCBhbGwgc3VjaCBwZW5kaW5nIGNoYW5nZXMsIGVudGVyIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBhZGQgLgotICAgICAkIGdpdCBjb21taXQgLXMgLWEgLW0gImdldHRpbmcgcmlkIG9mIC1kaXJ0eSIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE5leHQsIHJlYnVpbGQgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLTwvY2hhcHRlcj4KLTwhLS0KLXZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKLS0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWZhcS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtZmFxLnhtbAppbmRleCA5ZTA1MTdkLi5jM2EyMDQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtZmFxLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtZmFxLnhtbApAQCAtMzYsNyArMzYsOCBAQAogICAgICAgICAgICAgICAgIDwvcXVlc3Rpb24+CiAgICAgICAgICAgICAgICAgPGFuc3dlcj4KICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZlciB0byB0aGUgIjxsaW5rIGxpbmtlbmQ9J2dlbmVyYXRpbmctY29uZmlndXJhdGlvbi1maWxlcyc+R2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPC9hbnN3ZXI+CkBAIC03Myw4ICs3NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlICJrZXJuZWwtaW1hZ2UiLjwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBpbmZvcm1hdGlvbiBvbgotICAgICAgICAgICAgICAgICAgICAgICAgaG93IHRvIHVzZSBhbiBhcHBlbmQgZmlsZSB0byBvdmVycmlkZSBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBhbiBhcHBlbmQgZmlsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgbWV0YWRhdGEuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8L2Fuc3dlcj4KICAgICAgICAgICAgIDwvcWFuZGFlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtaW50cm8ueG1sCmluZGV4IDI2M2U1MDAuLmRiYTQ1NDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWludHJvLnhtbApAQCAtNSwxNDQgKzUsMjYzIEBACiA8Y2hhcHRlciBpZD0na2VybmVsLWRldi1pbnRybyc+CiA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KIAotPCEtLQotPHBhcmE+Ci0gICAgPGVtcGhhc2lzPkFSIC0gRGFycmVuIEhhcnQ6PC9lbXBoYXNpcz4gIFNlZSBpZiB0aGUgY29uY2VwdHMgaW4gdGhlc2UKLSAgICB0aHJlZSBidWxsZXRzIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgaW4gc29tZXdoZXJlIGluIHRoaXMgbWFudWFsOgotICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT5EbyB3ZSBjb252ZXkgdGhhdCBvdXIga2VybmVsIEdpdCByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgIGhhdmUgYSBjbGVhciBhbmQgY29udGludW91cyBoaXN0b3J5LCBzaW1pbGFyIHRvIHRoZSB3YXkgdGhlCi0gICAgICAgICAgICBrZXJuZWwgR2l0IHJlcG9zaXRvcmllcyBmb3IgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgZG8uCi0gICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRvZXMgdGhlIG1hbnVhbCBub3RlIHRoYXQgWW9jdG8gUHJvamVjdCBkZWxpdmVycwotICAgICAgICAgICAgYSBrZXkgc2V0IG9mIHN1cHBvcnRlZCBrZXJuZWwgdHlwZXMsIHdoZXJlCi0gICAgICAgICAgICBlYWNoIHR5cGUgaXMgdGFpbG9yZWQgdG8gbWVldCBhIHNwZWNpZmljIHVzZSAoZS5nLiBuZXR3b3JraW5nLAotICAgICAgICAgICAgY29uc3VtZXIsIGRldmljZXMsIGFuZCBzbyBmb3J0aCkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT5EbyB3ZSBjb252ZXkgdGhhdCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIGEKLSAgICAgICAgICAgIEdpdCBicmFuY2hpbmcgc3RyYXRlZ3kgdGhhdCwgZnJvbSBhCi0gICAgICAgICAgICBkZXZlbG9wZXIncyBwb2ludCBvZiB2aWV3LCByZXN1bHRzIGluIGEgbGluZWFyIHBhdGggZnJvbSB0aGUKLSAgICAgICAgICAgIGJhc2VsaW5lIGtlcm5lbC5vcmcsIHRocm91Z2ggYSBzZWxlY3QgZ3JvdXAgb2YgZmVhdHVyZXMgYW5kCi0gICAgICAgICAgICBlbmRzIHdpdGggdGhlaXIgQlNQLXNwZWNpZmljIGNvbW1pdHMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgPC9pdGVtaXplZGxpc3Q+Ci08L3BhcmE+Ci0tLT4KKzxzZWN0aW9uIGlkPSdrZXJuZWwtZGV2LW92ZXJ2aWV3Jz4KKyAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgogCi0gICAgPHNlY3Rpb24gaWQ9J2tlcm5lbC1kZXYtb3ZlcnZpZXcnPgotICAgICAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgICBSZWdhcmRsZXNzIG9mIGhvdyB5b3UgaW50ZW5kIHRvIG1ha2UgdXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0LAorICAgICAgICBjaGFuY2VzIGFyZSB5b3Ugd2lsbCB3b3JrIHdpdGggdGhlIExpbnV4IGtlcm5lbC4KKyAgICAgICAgVGhpcyBtYW51YWwgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgeW91ciBidWlsZCBob3N0IHRvIHN1cHBvcnQKKyAgICAgICAga2VybmVsIGRldmVsb3BtZW50LCBpbnRyb2R1Y2VzIHRoZSBrZXJuZWwgZGV2ZWxvcG1lbnQgcHJvY2VzcywKKyAgICAgICAgcHJvdmlkZXMgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gTGludXgga2VybmVsCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LAorICAgICAgICBkZXNjcmliZXMgY29tbW9uIHRhc2tzIHlvdSBjYW4gcGVyZm9ybSB1c2luZyB0aGUga2VybmVsIHRvb2xzLAorICAgICAgICBzaG93cyB5b3UgaG93IHRvIHVzZSB0aGUga2VybmVsIE1ldGFkYXRhIG5lZWRlZCB0byB3b3JrIHdpdGgKKyAgICAgICAgdGhlIGtlcm5lbCBpbnNpZGUgdGhlIFlvY3RvIFByb2plY3QsIGFuZCBwcm92aWRlcyBpbnNpZ2h0IGludG8gaG93CisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gZGV2ZWxvcHMgYW5kIG1haW50YWlucyBZb2N0byBMaW51eCBrZXJuZWwKKyAgICAgICAgR2l0IHJlcG9zaXRvcmllcyBhbmQgTWV0YWRhdGEuCisgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBSZWdhcmRsZXNzIG9mIGhvdyB5b3UgaW50ZW5kIHRvIG1ha2UgdXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0LAotICAgICAgICAgICAgY2hhbmNlcyBhcmUgeW91IHdpbGwgd29yayB3aXRoIHRoZSBMaW51eCBrZXJuZWwuCi0gICAgICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBMaW51eCBrZXJuZWwKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LAotICAgICAgICAgICAgZGVzY3JpYmVzIGNvbW1vbiB0YXNrcyB5b3UgY2FuIHBlcmZvcm0gdXNpbmcgdGhlIGtlcm5lbCB0b29scywKLSAgICAgICAgICAgIGFuZCBzaG93cyB5b3UgaG93IHRvIHVzZSB0aGUga2VybmVsIE1ldGFkYXRhIG5lZWRlZCB0byB3b3JrIHdpdGgKLSAgICAgICAgICAgIHRoZSBrZXJuZWwgaW5zaWRlIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgICAgICBFYWNoIFlvY3RvIFByb2plY3QgcmVsZWFzZSBoYXMgYSBzZXQgb2YgWW9jdG8gTGludXgga2VybmVsIHJlY2lwZXMsCisgICAgICAgIHdob3NlIEdpdCByZXBvc2l0b3JpZXMgeW91IGNhbiB2aWV3IGluIHRoZSBZb2N0bworICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiB1bmRlcgorICAgICAgICB0aGUgIllvY3RvIExpbnV4IEtlcm5lbCIgaGVhZGluZy4KKyAgICAgICAgTmV3IHJlY2lwZXMgZm9yIHRoZSByZWxlYXNlIHRyYWNrIHRoZSBsYXRlc3QgTGludXgga2VybmVsCisgICAgICAgIHVwc3RyZWFtIGRldmVsb3BtZW50cyBmcm9tCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cua2VybmVsLm9yZyc+PC91bGluaz4gYW5kIGludHJvZHVjZQorICAgICAgICBuZXdseS1zdXBwb3J0ZWQgcGxhdGZvcm1zLgorICAgICAgICBQcmV2aW91cyByZWNpcGVzIGluIHRoZSByZWxlYXNlIGFyZSByZWZyZXNoZWQgYW5kIHN1cHBvcnRlZCBmb3IgYXQKKyAgICAgICAgbGVhc3Qgb25lIGFkZGl0aW9uYWwgWW9jdG8gUHJvamVjdCByZWxlYXNlLgorICAgICAgICBBcyB0aGV5IGFsaWduLCB0aGVzZSBwcmV2aW91cyByZWxlYXNlcyBhcmUgdXBkYXRlZCB0byBpbmNsdWRlIHRoZQorICAgICAgICBsYXRlc3QgZnJvbSB0aGUgTG9uZyBUZXJtIFN1cHBvcnQgSW5pdGlhdGl2ZSAoTFRTSSkgcHJvamVjdC4KKyAgICAgICAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IFlvY3RvIExpbnV4IGtlcm5lbHMgYW5kIExUU0kgaW4gdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtYmlnLXBpY3R1cmUnPllvY3RvIFByb2plY3QgS2VybmVsIERldmVsb3BtZW50IGFuZCBNYWludGVuYW5jZTwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgPC9wYXJhPgogCi0gICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBFYWNoIFlvY3RvIFByb2plY3QgcmVsZWFzZSBoYXMgYSBzZXQgb2YgbGludXgteW9jdG8gcmVjaXBlcywgd2hvc2UKLSAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMgeW91IGNhbiB2aWV3IGluIHRoZSBZb2N0bwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4gdW5kZXIKLSAgICAgICAgICAgIHRoZSAiWW9jdG8gTGludXggS2VybmVsIiBoZWFkaW5nLgotICAgICAgICAgICAgTmV3IHJlY2lwZXMgZm9yIHRoZSByZWxlYXNlIHRyYWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZGV2ZWxvcG1lbnRzCi0gICAgICAgICAgICBhbmQgaW50cm9kdWNlIG5ld2x5LXN1cHBvcnRlZCBwbGF0Zm9ybXMuCi0gICAgICAgICAgICBQcmV2aW91cyByZWNpcGVzIGluIHRoZSByZWxlYXNlIGFyZSByZWZyZXNoZWQgYW5kIHN1cHBvcnRlZCBmb3IgYXQKLSAgICAgICAgICAgIGxlYXN0IG9uZSBhZGRpdGlvbmFsIHJlbGVhc2UuCi0gICAgICAgICAgICBBcyB0aGV5IGFsaWduLCB0aGVzZSBwcmV2aW91cyByZWxlYXNlcyBhcmUgdXBkYXRlZCB0byBpbmNsdWRlIHRoZQotICAgICAgICAgICAgbGF0ZXN0IGZyb20gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L29yZ2FuaXphdGlvbi9sb25nLXRlcm0tc3VwcG9ydC1pbml0aWF0aXZlLWx0c2knPkxvbmcgVGVybSBTdXBwb3J0IEluaXRpYXRpdmU8L3VsaW5rPgotICAgICAgICAgICAgKExUU0kpIHByb2plY3QuCi0gICAgICAgICAgICBBbHNvIGluY2x1ZGVkIGlzIGEgbGludXgteW9jdG8gZGV2ZWxvcG1lbnQgcmVjaXBlCi0gICAgICAgICAgICAoPGZpbGVuYW1lPmxpbnV4LXlvY3RvLWRldi5iYjwvZmlsZW5hbWU+KSBzaG91bGQgeW91IHdhbnQgdG8gd29yawotICAgICAgICAgICAgd2l0aCB0aGUgdmVyeSBsYXRlc3QgaW4gdXBzdHJlYW0gTGludXgga2VybmVsIGRldmVsb3BtZW50IGFuZAotICAgICAgICAgICAga2VybmVsIE1ldGFkYXRhIGRldmVsb3BtZW50LgotICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEFsc28gaW5jbHVkZWQgaXMgYSBZb2N0byBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgcmVjaXBlCisgICAgICAgICg8ZmlsZW5hbWU+bGludXgteW9jdG8tZGV2LmJiPC9maWxlbmFtZT4pIHNob3VsZCB5b3Ugd2FudCB0byB3b3JrCisgICAgICAgIHdpdGggdGhlIHZlcnkgbGF0ZXN0IGluIHVwc3RyZWFtIFlvY3RvIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBhbmQKKyAgICAgICAga2VybmVsIE1ldGFkYXRhIGRldmVsb3BtZW50LgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEZvciBtb3JlIG9uIFlvY3RvIExpbnV4IGtlcm5lbHMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtYmlnLXBpY3R1cmUnPllvY3RvIFByb2plY3QgS2VybmVsIERldmVsb3BtZW50IGFuZCBNYWludGVuYW5jZTwvbGluaz4KKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBhbHNvIHByb3ZpZGVzIGEgcG93ZXJmdWwgc2V0IG9mIGtlcm5lbAotICAgICAgICAgICAgdG9vbHMgZm9yIG1hbmFnaW5nIExpbnV4IGtlcm5lbCBzb3VyY2VzIGFuZCBjb25maWd1cmF0aW9uIGRhdGEuCi0gICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGVzZSB0b29scyB0byBtYWtlIGEgc2luZ2xlIGNvbmZpZ3VyYXRpb24gY2hhbmdlLAotICAgICAgICAgICAgYXBwbHkgbXVsdGlwbGUgcGF0Y2hlcywgb3Igd29yayB3aXRoIHlvdXIgb3duIGtlcm5lbCBzb3VyY2VzLgotICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGFsc28gcHJvdmlkZXMgYSBwb3dlcmZ1bCBzZXQgb2Yga2VybmVsCisgICAgICAgIHRvb2xzIGZvciBtYW5hZ2luZyBZb2N0byBMaW51eCBrZXJuZWwgc291cmNlcyBhbmQgY29uZmlndXJhdGlvbiBkYXRhLgorICAgICAgICBZb3UgY2FuIHVzZSB0aGVzZSB0b29scyB0byBtYWtlIGEgc2luZ2xlIGNvbmZpZ3VyYXRpb24gY2hhbmdlLAorICAgICAgICBhcHBseSBtdWx0aXBsZSBwYXRjaGVzLCBvciB3b3JrIHdpdGggeW91ciBvd24ga2VybmVsIHNvdXJjZXMuCisgICAgPC9wYXJhPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGtlcm5lbCB0b29scyBhbGxvdyB5b3UgdG8gZ2VuZXJhdGUgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgZnJhZ21lbnRzIHRoYXQgc3BlY2lmeSBvbmx5IHdoYXQgeW91IG11c3QsIGFuZCBub3RoaW5nIG1vcmUuCi0gICAgICAgICAgICBDb25maWd1cmF0aW9uIGZyYWdtZW50cyBvbmx5IG5lZWQgdG8gY29udGFpbiB0aGUgaGlnaGVzdCBsZXZlbAotICAgICAgICAgICAgdmlzaWJsZSA8ZmlsZW5hbWU+Q09ORklHPC9maWxlbmFtZT4gb3B0aW9ucyBhcyBwcmVzZW50ZWQgYnkgdGhlIExpbnV4Ci0gICAgICAgICAgICBrZXJuZWwgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPiBzeXN0ZW0uCi0gICAgICAgICAgICBDb250cmFzdCB0aGlzIGFnYWluc3QgYSBjb21wbGV0ZSBMaW51eCBrZXJuZWwKLSAgICAgICAgICAgIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4sIHdoaWNoIGluY2x1ZGVzIGFsbCB0aGUgYXV0b21hdGljYWxseQotICAgICAgICAgICAgc2VsZWN0ZWQgPGZpbGVuYW1lPkNPTkZJRzwvZmlsZW5hbWU+IG9wdGlvbnMuCi0gICAgICAgICAgICBUaGlzIGVmZmljaWVuY3kgcmVkdWNlcyB5b3VyIG1haW50ZW5hbmNlIGVmZm9ydCBhbmQgYWxsb3dzIHlvdQotICAgICAgICAgICAgdG8gZnVydGhlciBzZXBhcmF0ZSB5b3VyIGNvbmZpZ3VyYXRpb24gaW4gd2F5cyB0aGF0IG1ha2Ugc2Vuc2UgZm9yCi0gICAgICAgICAgICB5b3VyIHByb2plY3QuCi0gICAgICAgICAgICBBIGNvbW1vbiBzcGxpdCBzZXBhcmF0ZXMgcG9saWN5IGFuZCBoYXJkd2FyZS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBhbGwgeW91ciBrZXJuZWxzIG1pZ2h0IHN1cHBvcnQKLSAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cHJvYzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+c3lzPC9maWxlbmFtZT4gZmlsZXN5c3RlbXMsCi0gICAgICAgICAgICBidXQgb25seSBzcGVjaWZpYyBib2FyZHMgcmVxdWlyZSBzb3VuZCwgVVNCLCBvciBzcGVjaWZpYyBkcml2ZXJzLgotICAgICAgICAgICAgU3BlY2lmeWluZyB0aGVzZSBjb25maWd1cmF0aW9ucyBpbmRpdmlkdWFsbHkgYWxsb3dzIHlvdSB0byBhZ2dyZWdhdGUKLSAgICAgICAgICAgIHRoZW0gdG9nZXRoZXIgYXMgbmVlZGVkLCBidXQgbWFpbnRhaW5zIHRoZW0gaW4gb25seSBvbmUgcGxhY2UuCi0gICAgICAgICAgICBTaW1pbGFyIGxvZ2ljIGFwcGxpZXMgdG8gc2VwYXJhdGluZyBzb3VyY2UgY2hhbmdlcy4KLSAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUga2VybmVsIHRvb2xzIGFsbG93IHlvdSB0byBnZW5lcmF0ZSBjb25maWd1cmF0aW9uCisgICAgICAgIGZyYWdtZW50cyB0aGF0IHNwZWNpZnkgb25seSB3aGF0IHlvdSBtdXN0LCBhbmQgbm90aGluZyBtb3JlLgorICAgICAgICBDb25maWd1cmF0aW9uIGZyYWdtZW50cyBvbmx5IG5lZWQgdG8gY29udGFpbiB0aGUgaGlnaGVzdCBsZXZlbAorICAgICAgICB2aXNpYmxlIDxmaWxlbmFtZT5DT05GSUc8L2ZpbGVuYW1lPiBvcHRpb25zIGFzIHByZXNlbnRlZCBieSB0aGUKKyAgICAgICAgWW9jdG8gTGludXgga2VybmVsIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4gc3lzdGVtLgorICAgICAgICBDb250cmFzdCB0aGlzIGFnYWluc3QgYSBjb21wbGV0ZSBZb2N0byBMaW51eCBrZXJuZWwKKyAgICAgICAgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpbmNsdWRlcyBhbGwgdGhlIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgc2VsZWN0ZWQgPGZpbGVuYW1lPkNPTkZJRzwvZmlsZW5hbWU+IG9wdGlvbnMuCisgICAgICAgIFRoaXMgZWZmaWNpZW5jeSByZWR1Y2VzIHlvdXIgbWFpbnRlbmFuY2UgZWZmb3J0IGFuZCBhbGxvd3MgeW91CisgICAgICAgIHRvIGZ1cnRoZXIgc2VwYXJhdGUgeW91ciBjb25maWd1cmF0aW9uIGluIHdheXMgdGhhdCBtYWtlIHNlbnNlIGZvcgorICAgICAgICB5b3VyIHByb2plY3QuCisgICAgICAgIEEgY29tbW9uIHNwbGl0IHNlcGFyYXRlcyBwb2xpY3kgYW5kIGhhcmR3YXJlLgorICAgICAgICBGb3IgZXhhbXBsZSwgYWxsIHlvdXIga2VybmVscyBtaWdodCBzdXBwb3J0IHRoZQorICAgICAgICA8ZmlsZW5hbWU+cHJvYzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+c3lzPC9maWxlbmFtZT4gZmlsZXN5c3RlbXMsCisgICAgICAgIGJ1dCBvbmx5IHNwZWNpZmljIGJvYXJkcyByZXF1aXJlIHNvdW5kLCBVU0IsIG9yIHNwZWNpZmljIGRyaXZlcnMuCisgICAgICAgIFNwZWNpZnlpbmcgdGhlc2UgY29uZmlndXJhdGlvbnMgaW5kaXZpZHVhbGx5IGFsbG93cyB5b3UgdG8gYWdncmVnYXRlCisgICAgICAgIHRoZW0gdG9nZXRoZXIgYXMgbmVlZGVkLCBidXQgbWFpbnRhaW5zIHRoZW0gaW4gb25seSBvbmUgcGxhY2UuCisgICAgICAgIFNpbWlsYXIgbG9naWMgYXBwbGllcyB0byBzZXBhcmF0aW5nIHNvdXJjZSBjaGFuZ2VzLgorICAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBkbyBub3QgbWFpbnRhaW4geW91ciBvd24ga2VybmVsIHNvdXJjZXMgYW5kIG5lZWQgdG8gbWFrZQotICAgICAgICAgICAgb25seSBtaW5pbWFsIGNoYW5nZXMgdG8gdGhlIHNvdXJjZXMsIHRoZSByZWxlYXNlZCByZWNpcGVzIHByb3ZpZGUgYQotICAgICAgICAgICAgdmV0dGVkIGJhc2UgdXBvbiB3aGljaCB0byBsYXllciB5b3VyIGNoYW5nZXMuCi0gICAgICAgICAgICBEb2luZyBzbyBhbGxvd3MgeW91IHRvIGJlbmVmaXQgZnJvbSB0aGUgY29udGludWFsIGtlcm5lbAotICAgICAgICAgICAgaW50ZWdyYXRpb24gYW5kIHRlc3RpbmcgcGVyZm9ybWVkIGR1cmluZyBkZXZlbG9wbWVudCBvZiB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCi0gICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IGRvIG5vdCBtYWludGFpbiB5b3VyIG93biBrZXJuZWwgc291cmNlcyBhbmQgbmVlZCB0byBtYWtlCisgICAgICAgIG9ubHkgbWluaW1hbCBjaGFuZ2VzIHRvIHRoZSBzb3VyY2VzLCB0aGUgcmVsZWFzZWQgcmVjaXBlcyBwcm92aWRlIGEKKyAgICAgICAgdmV0dGVkIGJhc2UgdXBvbiB3aGljaCB0byBsYXllciB5b3VyIGNoYW5nZXMuCisgICAgICAgIERvaW5nIHNvIGFsbG93cyB5b3UgdG8gYmVuZWZpdCBmcm9tIHRoZSBjb250aW51YWwga2VybmVsCisgICAgICAgIGludGVncmF0aW9uIGFuZCB0ZXN0aW5nIHBlcmZvcm1lZCBkdXJpbmcgZGV2ZWxvcG1lbnQgb2YgdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgPC9wYXJhPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYsIGluc3RlYWQsIHlvdSBoYXZlIGEgdmVyeSBzcGVjaWZpYyBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUKLSAgICAgICAgICAgIGFuZCBhcmUgdW5hYmxlIHRvIGFsaWduIHdpdGggb25lIG9mIHRoZSBvZmZpY2lhbCBsaW51eC15b2N0bwotICAgICAgICAgICAgcmVjaXBlcywgYW4gYWx0ZXJuYXRpdmUgZXhpc3RzIGJ5IHdoaWNoIHlvdSBjYW4gdXNlIHRoZSBZb2N0bwotICAgICAgICAgICAgUHJvamVjdCBMaW51eCBrZXJuZWwgdG9vbHMgd2l0aCB5b3VyIG93biBrZXJuZWwgc291cmNlcy4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KKyAgICA8cGFyYT4KKyAgICAgICAgSWYsIGluc3RlYWQsIHlvdSBoYXZlIGEgdmVyeSBzcGVjaWZpYyBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUKKyAgICAgICAgYW5kIGFyZSB1bmFibGUgdG8gYWxpZ24gd2l0aCBvbmUgb2YgdGhlIG9mZmljaWFsIFlvY3RvIExpbnV4IGtlcm5lbAorICAgICAgICByZWNpcGVzLCBhbiBhbHRlcm5hdGl2ZSBleGlzdHMgYnkgd2hpY2ggeW91IGNhbiB1c2UgdGhlIFlvY3RvCisgICAgICAgIFByb2plY3QgTGludXgga2VybmVsIHRvb2xzIHdpdGggeW91ciBvd24ga2VybmVsIHNvdXJjZXMuCisgICAgPC9wYXJhPgogCi0gICAgPHNlY3Rpb24gaWQ9J2tlcm5lbC1kZXYtb3RoZXItcmVzb3VyY2VzJz4KLSAgICAgICAgPHRpdGxlPk90aGVyIFJlc291cmNlczwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBtYW51YWwgcHJvdmlkZXMgaW5zdHJ1Y3Rpb25zIGZvciBjb21wbGV0aW5nCisgICAgICAgIHNwZWNpZmljIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCB0YXNrcy4KKyAgICAgICAgVGhlc2UgaW5zdHJ1Y3Rpb25zIGFzc3VtZSB5b3UgYXJlIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vb3BlbmVtYmVkZGVkLm9yZy93aWtpL0JpdGJha2UnPkJpdEJha2U8L3VsaW5rPgorICAgICAgICByZWNpcGVzIGFuZCBiYXNpYyBvcGVuLXNvdXJjZSBkZXZlbG9wbWVudCB0b29scy4KKyAgICAgICAgVW5kZXJzdGFuZGluZyB0aGVzZSBjb25jZXB0cyB3aWxsIGZhY2lsaXRhdGUgdGhlIHByb2Nlc3Mgb2Ygd29ya2luZworICAgICAgICB3aXRoIHRoZSBrZXJuZWwgcmVjaXBlcy4KKyAgICAgICAgSWYgeW91IGZpbmQgeW91IG5lZWQgc29tZSBhZGRpdGlvbmFsIGJhY2tncm91bmQsIHBsZWFzZSBiZSBzdXJlIHRvCisgICAgICAgIHJldmlldyBhbmQgdW5kZXJzdGFuZCB0aGUgZm9sbG93aW5nIGRvY3VtZW50YXRpb246CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdXNpbmctZGV2dG9vbC1pbi15b3VyLXNkay13b3JrZmxvdyc+PGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3b3JrZmxvdzwvdWxpbms+CisgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAorICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdrZXJuZWwtbW9kaWZpY2F0aW9uLXdvcmtmbG93Jz5LZXJuZWwgTW9kaWZpY2F0aW9uIFdvcmtmbG93PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgc2VjdGlvbnMgdGhhdCBmb2xsb3cgcHJvdmlkZSBpbnN0cnVjdGlvbnMgZm9yIGNvbXBsZXRpbmcKLSAgICAgICAgICAgIHNwZWNpZmljIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCB0YXNrcy4KLSAgICAgICAgICAgIFRoZXNlIGluc3RydWN0aW9ucyBhc3N1bWUgeW91IGFyZSBjb21mb3J0YWJsZSB3b3JraW5nIHdpdGgKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9vcGVuZW1iZWRkZWQub3JnL3dpa2kvQml0YmFrZSc+Qml0QmFrZTwvdWxpbms+Ci0gICAgICAgICAgICByZWNpcGVzIGFuZCBiYXNpYyBvcGVuLXNvdXJjZSBkZXZlbG9wbWVudCB0b29scy4KLSAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uY2VwdHMgd2lsbCBmYWNpbGl0YXRlIHRoZSBwcm9jZXNzIG9mIHdvcmtpbmcKLSAgICAgICAgICAgIHdpdGggdGhlIGtlcm5lbCByZWNpcGVzLgotICAgICAgICAgICAgSWYgeW91IGZpbmQgeW91IG5lZWQgc29tZSBhZGRpdGlvbmFsIGJhY2tncm91bmQsIHBsZWFzZSBiZSBzdXJlIHRvCi0gICAgICAgICAgICByZXZpZXcgYW5kIHVuZGVyc3RhbmQgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tb2RpZnlpbmctc291cmNlLWNvZGUnPk1vZGlmeWluZyBTb3VyY2UgQ29kZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbAotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21vZGlmeWluZy10aGUta2VybmVsJz5Nb2RpZnlpbmcgdGhlIEtlcm5lbDwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEZpbmFsbHksIHdoaWxlIHRoaXMgZG9jdW1lbnQgZm9jdXNlcyBvbiB0aGUgbWFudWFsIGNyZWF0aW9uIG9mCisgICAgICAgIHJlY2lwZXMsIHBhdGNoZXMsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgdG9vbHMgYXJlIGF2YWlsYWJsZSB0byBhdXRvbWF0ZQorICAgICAgICB0aGlzIHByb2Nlc3Mgd2l0aCBleGlzdGluZyBjb250ZW50IGFuZCB3b3JrIHdlbGwgdG8gY3JlYXRlIHRoZQorICAgICAgICBpbml0aWFsIGZyYW1ld29yayBhbmQgYm9pbGVycGxhdGUgY29kZS4KKyAgICAgICAgRm9yIGRldGFpbHMgb24gdGhlc2UgdG9vbHMsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I3VzaW5nLXRoZS15b2N0by1wcm9qZWN0cy1ic3AtdG9vbHMnPlVzaW5nIHRoZSBZb2N0byBQcm9qZWN0J3MgQlNQIFRvb2xzPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzCisgICAgICAgIEd1aWRlLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZpbmFsbHksIHdoaWxlIHRoaXMgZG9jdW1lbnQgZm9jdXNlcyBvbiB0aGUgbWFudWFsIGNyZWF0aW9uIG9mCi0gICAgICAgICAgICByZWNpcGVzLCBwYXRjaGVzLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcywgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSB0b29scyBhcmUgYXZhaWxhYmxlIHRvIGF1dG9tYXRlCi0gICAgICAgICAgICB0aGlzIHByb2Nlc3Mgd2l0aCBleGlzdGluZyBjb250ZW50IGFuZCB3b3JrIHdlbGwgdG8gY3JlYXRlIHRoZQotICAgICAgICAgICAgaW5pdGlhbCBmcmFtZXdvcmsgYW5kIGJvaWxlcnBsYXRlIGNvZGUuCi0gICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGVzZSB0b29scywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I3VzaW5nLXRoZS15b2N0by1wcm9qZWN0cy1ic3AtdG9vbHMnPlVzaW5nIHRoZSBZb2N0byBQcm9qZWN0J3MgQlNQIFRvb2xzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncwotICAgICAgICAgICAgR3VpZGUuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0na2VybmVsLW1vZGlmaWNhdGlvbi13b3JrZmxvdyc+CisgICAgPHRpdGxlPktlcm5lbCBNb2RpZmljYXRpb24gV29ya2Zsb3c8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEtlcm5lbCBtb2RpZmljYXRpb24gaW52b2x2ZXMgY2hhbmdpbmcgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsLAorICAgICAgICB3aGljaCBjb3VsZCBpbnZvbHZlIGNoYW5naW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcyB3ZWxsIGFzIGFkZGluZworICAgICAgICBuZXcga2VybmVsIHJlY2lwZXMuCisgICAgICAgIENvbmZpZ3VyYXRpb24gY2hhbmdlcyBjYW4gYmUgYWRkZWQgaW4gdGhlIGZvcm0gb2YgY29uZmlndXJhdGlvbgorICAgICAgICBmcmFnbWVudHMsIHdoaWxlIHJlY2lwZSBtb2RpZmljYXRpb24gY29tZXMgdGhyb3VnaCB0aGUga2VybmVsJ3MKKyAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4gYXJlYSBpbiBhIGtlcm5lbCBsYXllciB5b3UgY3JlYXRlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIGtlcm5lbCBtb2RpZmljYXRpb24gd29ya2Zsb3cuCisgICAgICAgIFRoZSBpbGx1c3RyYXRpb24gYW5kIGFjY29tcGFueWluZyBsaXN0IHByb3ZpZGUgZ2VuZXJhbCBpbmZvcm1hdGlvbgorICAgICAgICBhbmQgcmVmZXJlbmNlcyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmciCisgICAgICAgICAgICB3aWR0aD0iOWluIiBkZXB0aD0iNWluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgVXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0CisgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgVXNpbmcgdGhlIFlvY3RvIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjeXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgZm9yIG9wdGlvbnMgb24gaG93CisgICAgICAgICAgICAgICAgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCBZb3VyIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtIGZvciBLZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGFuZCBhbiBleHRlbnNpYmxlIFNESyBmb3Iga2VybmVsIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRyYWRpdGlvbmFsIGtlcm5lbCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIG1ldGhvZHMgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBFaXRoZXIgd2F5LCB0aGVyZSBhcmUgc3RlcHMgeW91IG5lZWQgdG8gdGFrZSB0byBnZXQgdGhlCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgcmVhZHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBhbmQgdGhlIGVTREsgcmVxdWlyZXMKKyAgICAgICAgICAgICAgICB0aGF0IHlvdSBoYXZlIGEgY2xlYW4gYnVpbGQgb2YgdGhlIGltYWdlIGFuZCB0aGF0IHlvdSBhcmUKKyAgICAgICAgICAgICAgICBzZXQgdXAgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZVNESy4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LXRvLWRldmVsb3AtdXNpbmctZGV2dG9vbCc+R2V0dGluZyBSZWFkeSB0byBEZXZlbG9wIFVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VXNpbmcgdHJhZGl0aW9uYWwga2VybmVsIGRldmVsb3BtZW50IHJlcXVpcmVzIHRoYXQgeW91CisgICAgICAgICAgICAgICAgaGF2ZSB0aGUga2VybmVsIHNvdXJjZSBhdmFpbGFibGUgaW4gYW4gaXNvbGF0ZWQgbG9jYWwgR2l0CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdnZXR0aW5nLXJlYWR5LWZvci10cmFkaXRpb25hbC1rZXJuZWwtZGV2ZWxvcG1lbnQnPkdldHRpbmcgUmVhZHkgZm9yIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBDaGFuZ2VzIHRvIHRoZSBLZXJuZWwgU291cmNlIENvZGUgaWYKKyAgICAgICAgICAgICAgICBhcHBsaWNhYmxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgTW9kaWZ5aW5nIHRoZSBrZXJuZWwgZG9lcyBub3QgYWx3YXlzIG1lYW4gZGlyZWN0bHkKKyAgICAgICAgICAgICAgICBjaGFuZ2luZyBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGhhdmUgdG8gZG8gdGhpcywgeW91IG1ha2UgdGhlIGNoYW5nZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgZmlsZXMgaW4gdGhlIGVTREsncyBCdWlsZCBEaXJlY3RvcnkgaWYgeW91IGFyZSB1c2luZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctZGV2dG9vbC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIFBhdGNoIHRoZSBLZXJuZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyB0cmFkaXRpb25hbCBrZXJuZWwgZGV2ZWxvcG1lbnQsIHlvdQorICAgICAgICAgICAgICAgIGVkaXQgdGhlIHNvdXJjZSBmaWxlcyBpbiB0aGUga2VybmVsJ3MgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndXNpbmctdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50LXRvLXBhdGNoLXRoZS1rZXJuZWwnPlVzaW5nIFRyYWRpdGlvbmFsIEtlcm5lbCBEZXZlbG9wbWVudCB0byBQYXRjaCB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIEtlcm5lbCBDb25maWd1cmF0aW9uIENoYW5nZXMgaWYKKyAgICAgICAgICAgICAgICBBcHBsaWNhYmxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSWYgeW91ciBzaXR1YXRpb24gY2FsbHMgZm9yIGNoYW5naW5nIHRoZSBrZXJuZWwncworICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctbWVudWNvbmZpZyc+PGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggYWxsb3dzIHlvdSB0byBpbnRlcmFjdGl2ZWx5IGRldmVsb3AgYW5kIHRlc3QgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHlvdSBhcmUgbWFraW5nIHRvIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgU2F2aW5nIGNoYW5nZXMgeW91IG1ha2Ugd2l0aCA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdXBkYXRlcyB0aGUga2VybmVsJ3MgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5XYXJuaW5nPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgVHJ5IHRvIHJlc2lzdCB0aGUgdGVtcHRhdGlvbiB0byBkaXJlY3RseSBlZGl0IGFuCisgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSBhbW9uZyB0aGUgc291cmNlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgdXNlZCBmb3IgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBEb2luZyBzbywgY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcmVnZW5lcmF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHRoZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgY2hhbmdlcyBtYWRlIHVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBhbmQgeW91IGhhdmUgc2F2ZWQgdGhlbSwgeW91IGNhbiBkaXJlY3RseSBjb21wYXJlIHRoZQorICAgICAgICAgICAgICAgIHJlc3VsdGluZyA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgYWdhaW5zdCBhbgorICAgICAgICAgICAgICAgIGV4aXN0aW5nIG9yaWdpbmFsIGFuZCBnYXRoZXIgdGhvc2UgY2hhbmdlcyBpbnRvIGEKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5jb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGU8L2xpbms+CisgICAgICAgICAgICAgICAgdG8gYmUgcmVmZXJlbmNlZCBmcm9tIHdpdGhpbiB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5BZGRpdGlvbmFsbHksIGlmIHlvdSBhcmUgd29ya2luZyBpbiBhIEJTUCBsYXllcgorICAgICAgICAgICAgICAgIGFuZCBuZWVkIHRvIG1vZGlmeSB0aGUgQlNQJ3Mga2VybmVsJ3MgY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNtYW5hZ2luZy1rZXJuZWwtcGF0Y2hlcy1hbmQtY29uZmlnLWl0ZW1zLXdpdGgteW9jdG8ta2VybmVsJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHNjcmlwdCBhcyB3ZWxsIGFzIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiBzY3JpcHQgbGV0cworICAgICAgICAgICAgICAgIHlvdSBpbnRlcmFjdGl2ZWx5IHNldCB1cCBrZXJuZWwgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlYnVpbGQgdGhlIEtlcm5lbCBJbWFnZSBXaXRoIFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFJlYnVpbGRpbmcgdGhlIGtlcm5lbCBpbWFnZSBhcHBsaWVzIHlvdXIgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciB0YXJnZXQgaGFyZHdhcmUsIHlvdSBjYW4gdmVyaWZ5IHlvdXIgY2hhbmdlcworICAgICAgICAgICAgICAgIG9uIGFjdHVhbCBoYXJkd2FyZSBvciBwZXJoYXBzIFFFTVUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBkZXZlbG9wZXIncyBndWlkZSBjb3ZlcnMgY29tbW9uIHRhc2tzIHR5cGljYWxseQorICAgICAgICB1c2VkIGR1cmluZyBrZXJuZWwgZGV2ZWxvcG1lbnQsIGFkdmFuY2VkIE1ldGFkYXRhIHVzYWdlLCBhbmQgWW9jdG8gTGludXgKKyAgICAgICAga2VybmVsIG1haW50ZW5hbmNlIGNvbmNlcHRzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKwogPC9jaGFwdGVyPgogPCEtLQogdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LW1haW50LWFwcHgueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LW1haW50LWFwcHgueG1sCmluZGV4IDZiYjBjZjYuLmY1ZmQxODMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtbWFpbnQtYXBweC54bWwKQEAgLTcsODIgKzcsMTQ0IEBACiAKICAgICA8c2VjdGlvbiBpZD0ndHJlZS1jb25zdHJ1Y3Rpb24nPgogICAgICAgICA8dGl0bGU+VHJlZSBDb25zdHJ1Y3Rpb248L3RpdGxlPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBjb25zdHJ1Y3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHNvdXJjZSByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgIGFzIGFjY29tcGxpc2hlZCBieSB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHRvIGNyZWF0ZSBrZXJuZWwgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgVGhlc2Uga2VybmVsIHJlcG9zaXRvcmllcyBhcmUgZm91bmQgdW5kZXIgdGhlIGhlYWRpbmcgIllvY3RvIExpbnV4IEtlcm5lbCIgYXQKKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgY29uc3RydWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbAorICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcmllcyBhcyBhY2NvbXBsaXNoZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgdGVhbSB0bworICAgICAgICAgICAgY3JlYXRlIFlvY3RvIExpbnV4IGtlcm5lbCByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICBUaGVzZSBrZXJuZWwgcmVwb3NpdG9yaWVzIGFyZSBmb3VuZCB1bmRlciB0aGUgaGVhZGluZyAiWW9jdG8gTGludXgKKyAgICAgICAgICAgIEtlcm5lbCIgYXQKICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+JllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpPC91bGluaz4KLSAgICAgICAgICAgIGFuZCBjYW4gYmUgc2hpcHBlZCBhcyBwYXJ0IG9mIGEgWW9jdG8gUHJvamVjdCByZWxlYXNlLgotICAgICAgICAgICAgVGhlIHRlYW0gY3JlYXRlcyB0aGVzZSByZXBvc2l0b3JpZXMgYnkKLSAgICAgICAgICAgIGNvbXBpbGluZyBhbmQgZXhlY3V0aW5nIHRoZSBzZXQgb2YgZmVhdHVyZSBkZXNjcmlwdGlvbnMgZm9yIGV2ZXJ5IEJTUAotICAgICAgICAgICAgYW5kIGZlYXR1cmUgaW4gdGhlIHByb2R1Y3QuCisgICAgICAgICAgICBhbmQgYXJlIHNoaXBwZWQgYXMgcGFydCBvZiBhIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KKyAgICAgICAgICAgIFRoZSB0ZWFtIGNyZWF0ZXMgdGhlc2UgcmVwb3NpdG9yaWVzIGJ5IGNvbXBpbGluZyBhbmQgZXhlY3V0aW5nIHRoZQorICAgICAgICAgICAgc2V0IG9mIGZlYXR1cmUgZGVzY3JpcHRpb25zIGZvciBldmVyeSBCU1AgYW5kIGZlYXR1cmUgaW4gdGhlCisgICAgICAgICAgICBwcm9kdWN0LgogICAgICAgICAgICAgVGhvc2UgZmVhdHVyZSBkZXNjcmlwdGlvbnMgbGlzdCBhbGwgbmVjZXNzYXJ5IHBhdGNoZXMsCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLCBicmFuY2hpbmcsIHRhZ2dpbmcgYW5kIGZlYXR1cmUgZGl2aXNpb25zIGZvdW5kIGluIGEga2VybmVsLgotICAgICAgICAgICAgVGh1cywgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHJlcG9zaXRvcnkgKG9yIHRyZWUpIGlzIGJ1aWx0LgorICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIGJyYW5jaGVzLCB0YWdzLCBhbmQgZmVhdHVyZSBkaXZpc2lvbnMgZm91bmQgaW4gYQorICAgICAgICAgICAgWW9jdG8gTGludXgga2VybmVsLgorICAgICAgICAgICAgVGh1cywgdGhlIFlvY3RvIFByb2plY3QgTGludXgga2VybmVsIHJlcG9zaXRvcnkgKG9yIHRyZWUpIGFuZAorICAgICAgICAgICAgYWNjb21wYW55aW5nIE1ldGFkYXRhIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IGFyZSBidWlsdC4KICAgICAgICAgPC9wYXJhPgorCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGV4aXN0ZW5jZSBvZiB0aGlzIHRyZWUgYWxsb3dzIHlvdSB0byBhY2Nlc3MgYW5kIGNsb25lIGEgcGFydGljdWxhcgotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBrZXJuZWwgcmVwb3NpdG9yeSBhbmQgdXNlIGl0IHRvIGJ1aWxkIGltYWdlcyBiYXNlZCBvbiB0aGVpciBjb25maWd1cmF0aW9ucwotICAgICAgICAgICAgYW5kIGZlYXR1cmVzLgorICAgICAgICAgICAgVGhlIGV4aXN0ZW5jZSBvZiB0aGVzZSByZXBvc2l0b3JpZXMgYWxsb3cgeW91IHRvIGFjY2VzcyBhbmQgY2xvbmUgYQorICAgICAgICAgICAgcGFydGljdWxhciBZb2N0byBQcm9qZWN0IExpbnV4IGtlcm5lbCByZXBvc2l0b3J5IGFuZCB1c2UgaXQgdG8KKyAgICAgICAgICAgIGJ1aWxkIGltYWdlcyBiYXNlZCBvbiB0aGVpciBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMuCiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgZmlsZXMgdXNlZCB0byBkZXNjcmliZSBhbGwgdGhlIHZhbGlkIGZlYXR1cmVzIGFuZCBCU1BzCi0gICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgaW4gYW55IGNsb25lIG9mIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzb3VyY2UgcmVwb3NpdG9yeQotICAgICAgICAgICAgR2l0IHRyZWUuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIGNsb25lcyB0aGUgWW9jdG8gUHJvamVjdCBiYXNlbGluZSBrZXJuZWwgdGhhdAotICAgICAgICAgICAgYnJhbmNoZWQgb2ZmIG9mIDxmaWxlbmFtZT5saW51eC5vcmc8L2ZpbGVuYW1lPiB2ZXJzaW9uIDMuMTk6CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIGZpbGVzIHVzZWQgdG8gZGVzY3JpYmUgYWxsIHRoZSB2YWxpZCBmZWF0dXJlcyBhbmQKKyAgICAgICAgICAgIEJTUHMgaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXgga2VybmVsIGluIGFueSBjbG9uZSBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgTGludXgga2VybmVsIHNvdXJjZSByZXBvc2l0b3J5IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IEdpdCB0cmVlcy4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGNsb25lIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBiYXNlbGluZSBMaW51eCBrZXJuZWwgdGhhdCBicmFuY2hlcyBvZmYKKyAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC5vcmc8L2ZpbGVuYW1lPiB2ZXJzaW9uIDQuMTIgYW5kIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+LCB3aGljaCBjb250YWlucyBzdG9yZXMgb2YKKyAgICAgICAgICAgIGtlcm5lbCBNZXRhZGF0YToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tMy4xOQorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyCisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LWtlcm5lbC1jYWNoZQogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgRm9yIGFub3RoZXIgZXhhbXBsZSBvZiBob3cgdG8gc2V0IHVwIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIGtlcm5lbCBmaWxlcywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2FsLWtlcm5lbC1maWxlcyc+WW9jdG8gUHJvamVjdCBLZXJuZWw8L3VsaW5rPiIgYnVsbGV0ZWQKLSAgICAgICAgICAgIGl0ZW0gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mCisgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBrZXJuZWwgZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QtdG8td29yay1vbi10aGUta2VybmVsJz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3QgdG8gV29yayBvbiB0aGUgS2VybmVsPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY2xvbmVkIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnkgb24geW91ciBsb2NhbCBtYWNoaW5lLCB5b3UgY2FuCi0gICAgICAgICAgICBzd2l0Y2ggdG8gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gYnJhbmNoIHdpdGhpbiB0aGUgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGFzc3VtZXMgdGhlIGxvY2FsIEdpdCByZXBvc2l0b3J5IGZvciB0aGUga2VybmVsIGlzIGluCi0gICAgICAgICAgICBhIHRvcC1sZXZlbCBkaXJlY3RvcnkgbmFtZWQgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTk8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY2xvbmVkIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnkgYW5kIHRoZQorICAgICAgICAgICAgY2FjaGUgb2YgTWV0YWRhdGEgb24geW91ciBsb2NhbCBtYWNoaW5lLCB5b3UgY2FuIGRpc2NvdmVyIHRoZQorICAgICAgICAgICAgYnJhbmNoZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoZSByZXBvc2l0b3J5IHVzaW5nIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgIEdpdCBjb21tYW5kOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIGxpbnV4LXlvY3RvLTMuMTkKLSAgICAgJCBnaXQgY2hlY2tvdXQgLWIgbWV0YSBvcmlnaW4vbWV0YQorICAgICAkIGdpdCBicmFuY2ggLWEKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY2hlY2tlZCBvdXQgYW5kIHN3aXRjaGVkIHRvIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGJyYW5jaCwKLSAgICAgICAgICAgIHlvdSBjYW4gc2VlIGEgc25hcHNob3Qgb2YgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgZmVhdHVyZSBkZXNjcmlwdGlvbnMgdGhhdCBhcmUKLSAgICAgICAgICAgIHVzZWQgdG8gYnVpbGQgdGhhdCBwYXJ0aWN1bGFyIGtlcm5lbCByZXBvc2l0b3J5LgotICAgICAgICAgICAgVGhlc2UgZGVzY3JpcHRpb25zIGFyZSBpbiB0aGUgZm9ybSBvZiA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGVzLgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IHNob3VsZCByZWFsaXplLCBob3dldmVyLCB0aGF0IGJyb3dzaW5nIHlvdXIgbG9jYWwga2VybmVsIHJlcG9zaXRvcnkKLSAgICAgICAgICAgIGZvciBmZWF0dXJlIGRlc2NyaXB0aW9ucyBhbmQgcGF0Y2hlcyBpcyBub3QgYW4gZWZmZWN0aXZlIHdheSB0byBkZXRlcm1pbmUgd2hhdCBpcyBpbiBhCi0gICAgICAgICAgICBwYXJ0aWN1bGFyIGtlcm5lbCBicmFuY2guCi0gICAgICAgICAgICBJbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZSBHaXQgZGlyZWN0bHkgdG8gZGlzY292ZXIgdGhlIGNoYW5nZXMgaW4gYSBicmFuY2guCi0gICAgICAgICAgICBVc2luZyBHaXQgaXMgYW4gZWZmaWNpZW50IGFuZCBmbGV4aWJsZSB3YXkgdG8gaW5zcGVjdCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuCisgICAgICAgICAgICBDaGVja2luZyBvdXQgYSBicmFuY2ggYWxsb3dzIHlvdSB0byB3b3JrIHdpdGggYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICBZb2N0byBMaW51eCBrZXJuZWwuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBjaGVjayBvdXQgdGhlCisgICAgICAgICAgICAic3RhbmRhcmQvYmVhZ2xlYm9hcmQiIGJyYW5jaCBvZiB0aGUgWW9jdG8gTGludXgga2VybmVsIHJlcG9zaXRvcnkKKyAgICAgICAgICAgIGFuZCB0aGUgInlvY3RvLTQuMTIiIGJyYW5jaCBvZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiByZXBvc2l0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vbGludXgteW9jdG8tNC4xMgorICAgICAkIGdpdCBjaGVja291dCAtYiBteS1rZXJuZWwtNC4xMiByZW1vdGVzL29yaWdpbi9zdGFuZGFyZC9iZWFnbGVib2FyZAorICAgICAkIGNkIH4vbGludXgta2VybmVsLWNhY2hlCisgICAgICQgZ2l0IGNoZWNrb3V0IC1iIG15LTQuMTItbWV0YWRhdGEgcmVtb3Rlcy9vcmlnaW4veW9jdG8tNC4xMgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgR3JvdW5kIHVwIHJlY29uc3RydWN0aW9uIG9mIHRoZSBjb21wbGV0ZSBrZXJuZWwgdHJlZSBpcyBhbiBhY3Rpb24gb25seSB0YWtlbiBieSB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHRlYW0gZHVyaW5nIGFuIGFjdGl2ZSBkZXZlbG9wbWVudCBjeWNsZS4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBjbG9uZSBvZiB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5LCB5b3UgYXJlIHNpbXBseSBtYWtpbmcgaXQKLSAgICAgICAgICAgICAgICBlZmZpY2llbnRseSBhdmFpbGFibGUgZm9yIGJ1aWxkaW5nIGFuZCBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgICAgICBCcmFuY2hlcyBpbiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBjb3JyZXNwb25kIHRvIFlvY3RvIExpbnV4IGtlcm5lbCB2ZXJzaW9ucworICAgICAgICAgICAgICAgIChlLmcuICJ5b2N0by00LjEyIiwgInlvY3RvLTQuMTAiLCAieW9jdG8tNC45IiwgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgY2hlY2tlZCBvdXQgYW5kIHN3aXRjaGVkIHRvIGFwcHJvcHJpYXRlIGJyYW5jaGVzLAorICAgICAgICAgICAgeW91IGNhbiBzZWUgYSBzbmFwc2hvdCBvZiBhbGwgdGhlIGtlcm5lbCBzb3VyY2UgZmlsZXMgdXNlZCB0bworICAgICAgICAgICAgdXNlZCB0byBidWlsZCB0aGF0IHBhcnRpY3VsYXIgWW9jdG8gTGludXgga2VybmVsIGZvciBhCisgICAgICAgICAgICBwYXJ0aWN1bGFyIGJvYXJkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBzZWUgdGhlIGZlYXR1cmVzIGFuZCBjb25maWd1cmF0aW9ucyBmb3IgYSBwYXJ0aWN1bGFyIFlvY3RvCisgICAgICAgICAgICBMaW51eCBrZXJuZWwsIHlvdSBuZWVkIHRvIGV4YW1pbmUgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBBcyBtZW50aW9uZWQsIGJyYW5jaGVzIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgY29ycmVzcG9uZCB0bworICAgICAgICAgICAgWW9jdG8gTGludXgga2VybmVsIHZlcnNpb25zIChlLmcuIDxmaWxlbmFtZT55b2N0by00LjEyPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgQnJhbmNoZXMgY29udGFpbiBkZXNjcmlwdGlvbnMgaW4gdGhlIGZvcm0gb2YKKyAgICAgICAgICAgIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT4uY2ZnPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBzaG91bGQgcmVhbGl6ZSwgaG93ZXZlciwgdGhhdCBicm93c2luZyB5b3VyIGxvY2FsCisgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4gcmVwb3NpdG9yeSBmb3IgZmVhdHVyZQorICAgICAgICAgICAgZGVzY3JpcHRpb25zIGFuZCBwYXRjaGVzIGlzIG5vdCBhbiBlZmZlY3RpdmUgd2F5IHRvIGRldGVybWluZSB3aGF0CisgICAgICAgICAgICBpcyBpbiBhIHBhcnRpY3VsYXIga2VybmVsIGJyYW5jaC4KKyAgICAgICAgICAgIEluc3RlYWQsIHlvdSBzaG91bGQgdXNlIEdpdCBkaXJlY3RseSB0byBkaXNjb3ZlciB0aGUgY2hhbmdlcyBpbgorICAgICAgICAgICAgYSBicmFuY2guCisgICAgICAgICAgICBVc2luZyBHaXQgaXMgYW4gZWZmaWNpZW50IGFuZCBmbGV4aWJsZSB3YXkgdG8gaW5zcGVjdCBjaGFuZ2VzIHRvCisgICAgICAgICAgICB0aGUga2VybmVsLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgR3JvdW5kIHVwIHJlY29uc3RydWN0aW9uIG9mIHRoZSBjb21wbGV0ZSBrZXJuZWwgdHJlZSBpcyBhbgorICAgICAgICAgICAgICAgIGFjdGlvbiBvbmx5IHRha2VuIGJ5IHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gZHVyaW5nIGFuIGFjdGl2ZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGN5Y2xlLgorICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGNsb25lIG9mIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnksIHlvdSBhcmUKKyAgICAgICAgICAgICAgICBzaW1wbHkgbWFraW5nIGl0IGVmZmljaWVudGx5IGF2YWlsYWJsZSBmb3IgYnVpbGRpbmcgYW5kCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQuCiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RlcHMgZGVzY3JpYmUgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIFlvY3RvIFByb2plY3QgVGVhbSBjb25zdHJ1Y3RzCi0gICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgc291cmNlIEdpdCByZXBvc2l0b3J5IChvciB0cmVlKSBmb3VuZCBhdAorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBkZXNjcmliZSB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgVGVhbSBjb25zdHJ1Y3RzIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBzb3VyY2UgR2l0IHJlcG9zaXRvcnkKKyAgICAgICAgICAgIChvciB0cmVlKSBmb3VuZCBhdAogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz48L3VsaW5rPiBnaXZlbiB0aGUKICAgICAgICAgICAgIGludHJvZHVjdGlvbiBvZiBhIG5ldyB0b3AtbGV2ZWwga2VybmVsIGZlYXR1cmUgb3IgQlNQLgotICAgICAgICAgICAgVGhlc2UgYXJlIHRoZSBhY3Rpb25zIHRoYXQgZWZmZWN0aXZlbHkgY3JlYXRlIHRoZSB0cmVlCi0gICAgICAgICAgICB0aGF0IGluY2x1ZGVzIHRoZSBuZXcgZmVhdHVyZSwgcGF0Y2ggb3IgQlNQOgorICAgICAgICAgICAgVGhlc2UgYXJlIHRoZSBhY3Rpb25zIHRoYXQgZWZmZWN0aXZlbHkgcHJvdmlkZSB0aGUgTWV0YWRhdGEKKyAgICAgICAgICAgIGFuZCBjcmVhdGUgdGhlIHRyZWUgdGhhdCBpbmNsdWRlcyB0aGUgbmV3IGZlYXR1cmUsIHBhdGNoIG9yIEJTUDoKICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSB0b3AtbGV2ZWwga2VybmVsIGZlYXR1cmUgaXMgcGFzc2VkIHRvIHRoZSBrZXJuZWwgYnVpbGQgc3Vic3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBOb3JtYWxseSwgdGhpcyBmZWF0dXJlIGlzIGEgQlNQIGZvciBhIHBhcnRpY3VsYXIga2VybmVsIHR5cGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBmaWxlIHRoYXQgZGVzY3JpYmVzIHRoZSB0b3AtbGV2ZWwgZmVhdHVyZSBpcyBsb2NhdGVkIGJ5IHNlYXJjaGluZwotICAgICAgICAgICAgICAgICAgICB0aGVzZSBzeXN0ZW0gZGlyZWN0b3JpZXM6CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFzcyBGZWF0dXJlIHRvIEJ1aWxkIFN1YnN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBpcyBwYXNzZWQgdG8gdGhlIGtlcm5lbCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzdWJzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIE5vcm1hbGx5LCB0aGlzIGZlYXR1cmUgaXMgYSBCU1AgZm9yIGEgcGFydGljdWxhciBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9jYXRlIEZlYXR1cmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgdGhhdCBkZXNjcmliZXMgdGhlIHRvcC1sZXZlbCBmZWF0dXJlIGlzIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgc2VhcmNoaW5nIHRoZXNlIHN5c3RlbSBkaXJlY3RvcmllczoKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgaW4tdHJlZSBrZXJuZWwtY2FjaGUgZGlyZWN0b3JpZXMsIHdoaWNoIGFyZSBsb2NhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPm1ldGEvY2ZnL2tlcm5lbC1jYWNoZTwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QXJlYXMgcG9pbnRlZCB0byBieSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCBpbiByZWNpcGVzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluLXRyZWUga2VybmVsLWNhY2hlIGRpcmVjdG9yaWVzLCB3aGljaCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmVhcyBwb2ludGVkIHRvIGJ5IDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIGZvdW5kIGluIGtlcm5lbCByZWNpcGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICBGb3IgYSB0eXBpY2FsIGJ1aWxkLCB0aGUgdGFyZ2V0IG9mIHRoZSBzZWFyY2ggaXMgYQogICAgICAgICAgICAgICAgICAgICBmZWF0dXJlIGRlc2NyaXB0aW9uIGluIGFuIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gZmlsZQpAQCAtOTEsNDEgKzE1Myw5NiBAQAogICAgICA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi5zY2MKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5PbmNlIGxvY2F0ZWQsIHRoZSBmZWF0dXJlIGRlc2NyaXB0aW9uIGlzIGVpdGhlciBjb21waWxlZCBpbnRvIGEgc2ltcGxlIHNjcmlwdAotICAgICAgICAgICAgICAgICAgICBvZiBhY3Rpb25zLCBvciBpbnRvIGFuIGV4aXN0aW5nIGVxdWl2YWxlbnQgc2NyaXB0IHRoYXQgaXMgYWxyZWFkeSBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICBzaGlwcGVkIGtlcm5lbC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXh0cmEgZmVhdHVyZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSB0b3AtbGV2ZWwgZmVhdHVyZSBkZXNjcmlwdGlvbi4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHBhbmQgRmVhdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIGxvY2F0ZWQsIHRoZSBmZWF0dXJlIGRlc2NyaXB0aW9uIGlzIGVpdGhlciBleHBhbmRlZAorICAgICAgICAgICAgICAgICAgICBpbnRvIGEgc2ltcGxlIHNjcmlwdCBvZiBhY3Rpb25zLCBvciBpbnRvIGFuIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgIGVxdWl2YWxlbnQgc2NyaXB0IHRoYXQgaXMgYWxyZWFkeSBwYXJ0IG9mIHRoZSBzaGlwcGVkCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwZW5kIEV4dHJhIEZlYXR1cmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIGZlYXR1cmVzIGFyZSBhcHBlbmRlZCB0byB0aGUgdG9wLWxldmVsIGZlYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uCiAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZlYXR1cmVzIGNhbiBjb21lIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfRkVBVFVSRVMnPjxmaWxlbmFtZT5LRVJORUxfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHJlY2lwZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVhY2ggZXh0cmEgZmVhdHVyZSBpcyBsb2NhdGVkLCBjb21waWxlZCBhbmQgYXBwZW5kZWQgdG8gdGhlIHNjcmlwdAotICAgICAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gc3RlcCB0aHJlZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHNjcmlwdCBpcyBleGVjdXRlZCB0byBwcm9kdWNlIGEgc2VyaWVzIG9mIDxmaWxlbmFtZT5tZXRhLSo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgZGlyZWN0b3JpZXMgYXJlIGRlc2NyaXB0aW9ucyBvZiBhbGwgdGhlIGJyYW5jaGVzLCB0YWdzLCBwYXRjaGVzIGFuZCBjb25maWd1cmF0aW9ucyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgYXBwbGllZCB0byB0aGUgYmFzZSBHaXQgcmVwb3NpdG9yeSB0byBjb21wbGV0ZWx5IGNyZWF0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgc291cmNlIChidWlsZCkgYnJhbmNoIGZvciB0aGUgbmV3IEJTUCBvciBmZWF0dXJlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgYmFzZSByZXBvc2l0b3J5IGlzIGNsb25lZCwgYW5kIHRoZSBhY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgIGxpc3RlZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGFyZSBhcHBsaWVkIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICB0cmVlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgR2l0IHJlcG9zaXRvcnkgaXMgbGVmdCB3aXRoIHRoZSBkZXNpcmVkIGJyYW5jaCBjaGVja2VkIG91dCBhbmQgYW55Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIGJyYW5jaGluZywgcGF0Y2hpbmcgYW5kIHRhZ2dpbmcgaGFzIGJlZW4gcGVyZm9ybWVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUsIEV4cGFuZCwgYW5kIEFwcGVuZCBFYWNoIEZlYXR1cmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRWFjaCBleHRyYSBmZWF0dXJlIGlzIGxvY2F0ZWQsIGV4cGFuZGVkIGFuZCBhcHBlbmRlZCB0bworICAgICAgICAgICAgICAgICAgICB0aGUgc2NyaXB0IGFzIGRlc2NyaWJlZCBpbiBzdGVwIHRocmVlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGVjdXRlIHRoZSBTY3JpcHQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBpcyBleGVjdXRlZCB0byBwcm9kdWNlIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2NjPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT4uY2ZnPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUgZGVzY3JpcHRpb25zIG9mIGFsbCB0aGUgYnJhbmNoZXMsIHRhZ3MsCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMgYW5kIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBhcHBsaWVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBiYXNlIEdpdCByZXBvc2l0b3J5IHRvIGNvbXBsZXRlbHkgY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKGJ1aWxkKSBicmFuY2ggZm9yIHRoZSBuZXcgQlNQIG9yIGZlYXR1cmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIEJhc2UgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSByZXBvc2l0b3J5IGlzIGNsb25lZCwgYW5kIHRoZSBhY3Rpb25zCisgICAgICAgICAgICAgICAgICAgIGxpc3RlZCBpbiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGFyZSBhcHBsaWVkIHRvIHRoZSB0cmVlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QZXJmb3JtIENsZWFudXA6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEdpdCByZXBvc2l0b3JpZXMgYXJlIGxlZnQgd2l0aCB0aGUgZGVzaXJlZCBicmFuY2hlcworICAgICAgICAgICAgICAgICAgICBjaGVja2VkIG91dCBhbmQgYW55IHJlcXVpcmVkIGJyYW5jaGluZywgcGF0Y2hpbmcgYW5kCisgICAgICAgICAgICAgICAgICAgIHRhZ2dpbmcgaGFzIGJlZW4gcGVyZm9ybWVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBrZXJuZWwgdHJlZSBpcyBub3cgcmVhZHkgZm9yIGRldmVsb3BlciBjb25zdW1wdGlvbiB0byBiZSBsb2NhbGx5IGNsb25lZCwKLSAgICAgICAgICAgIGNvbmZpZ3VyZWQsIGFuZCBidWlsdCBpbnRvIGEgWW9jdG8gUHJvamVjdCBrZXJuZWwgc3BlY2lmaWMgdG8gc29tZSB0YXJnZXQgaGFyZHdhcmUuCi0gICAgICAgICAgICA8bm90ZT48cGFyYT5UaGUgZ2VuZXJhdGVkIDxmaWxlbmFtZT5tZXRhLSo8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBhZGQgdG8gdGhlIGtlcm5lbAotICAgICAgICAgICAgICAgIGFzIHNoaXBwZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlLgotICAgICAgICAgICAgICAgIEFueSBhZGQtb25zIGFuZCBjb25maWd1cmF0aW9uIGRhdGEgYXJlIGFwcGxpZWQgdG8gdGhlIGVuZCBvZiBhbiBleGlzdGluZyBicmFuY2guCi0gICAgICAgICAgICAgICAgVGhlIGZ1bGwgcmVwb3NpdG9yeSBnZW5lcmF0aW9uIHRoYXQgaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgb2ZmaWNpYWwgWW9jdG8gUHJvamVjdCBrZXJuZWwgcmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz5odHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC5jZ2k8L3VsaW5rPgotICAgICAgICAgICAgICAgIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBhbGwgc3VwcG9ydGVkIGJvYXJkcyBhbmQgY29uZmlndXJhdGlvbnMuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSB0ZWNobmlxdWUgdGhlIFlvY3RvIFByb2plY3QgdGVhbSB1c2VzIGlzIGZsZXhpYmxlIGFuZCBhbGxvd3MgZm9yIHNlYW1sZXNzCi0gICAgICAgICAgICAgICAgYmxlbmRpbmcgb2YgYW4gaW1tdXRhYmxlIGhpc3Rvcnkgd2l0aCBhZGRpdGlvbmFsIHBhdGNoZXMgc3BlY2lmaWMgdG8gYQotICAgICAgICAgICAgICAgIGRlcGxveW1lbnQuCi0gICAgICAgICAgICAgICAgQW55IGFkZGl0aW9ucyB0byB0aGUga2VybmVsIGJlY29tZSBhbiBpbnRlZ3JhdGVkIHBhcnQgb2YgdGhlIGJyYW5jaGVzLjwvcGFyYT4KKyAgICAgICAgICAgIFRoZSBrZXJuZWwgdHJlZSBhbmQgY2FjaGUgYXJlIHJlYWR5IGZvciBkZXZlbG9wZXIgY29uc3VtcHRpb24gdG8KKyAgICAgICAgICAgIGJlIGxvY2FsbHkgY2xvbmVkLCBjb25maWd1cmVkLCBhbmQgYnVpbHQgaW50byBhIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIGtlcm5lbCBzcGVjaWZpYyB0byBzb21lIHRhcmdldCBoYXJkd2FyZS4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYWRkcyB0byB0aGUga2VybmVsIGFzIHNoaXBwZWQgd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFueSBhZGQtb25zIGFuZCBjb25maWd1cmF0aW9uIGRhdGEgYXJlIGFwcGxpZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBlbmQgb2YgYW4gZXhpc3RpbmcgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bGwgcmVwb3NpdG9yeSBnZW5lcmF0aW9uIHRoYXQgaXMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZpY2lhbCBZb2N0byBQcm9qZWN0IGtlcm5lbCByZXBvc2l0b3JpZXMgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQuY2dpPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBhbGwgc3VwcG9ydGVkIGJvYXJkcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0ZWNobmlxdWUgdGhlIFlvY3RvIFByb2plY3QgdGVhbSB1c2VzIGlzIGZsZXhpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYWxsb3dzIGZvciBzZWFtbGVzcyBibGVuZGluZyBvZiBhbiBpbW11dGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpc3Rvcnkgd2l0aCBhZGRpdGlvbmFsIHBhdGNoZXMgc3BlY2lmaWMgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgZGVwbG95bWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFueSBhZGRpdGlvbnMgdG8gdGhlIGtlcm5lbCBiZWNvbWUgYW4gaW50ZWdyYXRlZCBwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgYnJhbmNoZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bGwga2VybmVsIHRyZWUgdGhhdCB5b3Ugc2VlIG9uCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgdGhyb3VnaCByZXBlYXRpbmcgdGhlIGFib3ZlIHN0ZXBzIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIEJTUHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZW5kIHJlc3VsdCBpcyBhIGJyYW5jaGVkLCBjbGVhbiBoaXN0b3J5IHRyZWUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXMgdXAgdGhlIGtlcm5lbCBmb3IgYSBnaXZlbiByZWxlYXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIHNjcmlwdCAoPGZpbGVuYW1lPmtnaXQtc2NjPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJsZSBmb3IgdGhpcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS95b2N0by1rZXJuZWwtdG9vbHMvdHJlZS90b29scyc+PGZpbGVuYW1lPnlvY3RvLWtlcm5lbC10b29sczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHN0ZXBzIHVzZWQgdG8gY29uc3RydWN0IHRoZSBmdWxsIGtlcm5lbCB0cmVlIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgc3RlcHMgdGhhdCBCaXRCYWtlIHVzZXMgd2hlbiBpdCBidWlsZHMgYQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC0xMzMsODUgKzI1MCwxMDAgQEAKICAgICA8c2VjdGlvbiBpZD0nYnVpbGQtc3RyYXRlZ3knPgogICAgICAgICA8dGl0bGU+QnVpbGQgU3RyYXRlZ3k8L3RpdGxlPgogCi08IS0tCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPGVtcGhhc2lzPkFSIC0gRGFycmVuIEhhcnQ6PC9lbXBoYXNpcz4gIFNvbWUgcGFydHMgb2YgdGhpcyBzZWN0aW9uCi0gICAgICAgICAgICBuZWVkIHRvIGJlIGluIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWFuLWl0ZXJhdGl2ZS1kZXZlbG9wbWVudC1wcm9jZXNzJz5Vc2luZyBhbiBJdGVyYXRpdmUgRGV2ZWxvcG1lbnQgUHJvY2VzczwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgRGFycmVuIG5lZWRzIHRvIGZpZ3VyZSBvdXQgd2hpY2ggcGFydHMgYW5kIGlkZW50aWZ5IHRoZW0uCi0gICAgICAgIDwvcGFyYT4KLS0tPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBleGlzdHMgb24gYSBkZXZlbG9wbWVudCBzeXN0ZW0sCi0gICAgICAgICAgICB5b3UgY2FuIGNvbnNpZGVyIHRoZSBjb21waWxhdGlvbiBwaGFzZSBvZiBrZXJuZWwgZGV2ZWxvcG1lbnQgLSBidWlsZGluZyBhIGtlcm5lbCBpbWFnZS4KLSAgICAgICAgICAgIFNvbWUgcHJlcmVxdWlzaXRlcyBleGlzdCB0aGF0IGFyZSB2YWxpZGF0ZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MgYmVmb3JlIGNvbXBpbGF0aW9uCi0gICAgICAgICAgICBzdGFydHM6CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGNsb25lZCBhIFlvY3RvIExpbnV4IGtlcm5lbCByZXBvc2l0b3J5IGFuZCB0aGUKKyAgICAgICAgICAgIGNhY2hlIHJlcG9zaXRvcnkgKDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPikgb250bworICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0sIHlvdSBjYW4gY29uc2lkZXIgdGhlIGNvbXBpbGF0aW9uIHBoYXNlCisgICAgICAgICAgICBvZiBrZXJuZWwgZGV2ZWxvcG1lbnQsIHdoaWNoIGlzIGJ1aWxkaW5nIGEga2VybmVsIGltYWdlLgorICAgICAgICAgICAgU29tZSBwcmVyZXF1aXNpdGVzIGV4aXN0IHRoYXQgYXJlIHZhbGlkYXRlZCBieSB0aGUgYnVpbGQgcHJvY2VzcworICAgICAgICAgICAgYmVmb3JlIGNvbXBpbGF0aW9uIHN0YXJ0czoKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPiBwb2ludHMKLSAgICAgICAgICAgICAgICB0byB0aGUga2VybmVsIEdpdCByZXBvc2l0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgQlNQIGJ1aWxkIGJyYW5jaCBleGlzdHMuCi0gICAgICAgICAgICAgICAgVGhpcyBicmFuY2ggaGFzIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgcG9pbnRzIHRvIHRoZSBrZXJuZWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQSBCU1AgYnVpbGQgYnJhbmNoIHdpdGggTWV0YWRhdGEgZXhpc3RzIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBicmFuY2ggaXMgYmFzZWQgb24gdGhlIFlvY3RvIExpbnV4IGtlcm5lbCB2ZXJzaW9uIGFuZAorICAgICAgICAgICAgICAgIGhhcyBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMgZ3JvdXBlZCB1bmRlciB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlL2JzcDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZmVhdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKKyAgICAgICAgICAgICAgICBCZWFnbGVCb25lIEJvYXJkIGFzc3VtaW5nIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC4xMjwvZmlsZW5hbWU+IGtlcm5lbCByZXNpZGUgaW4gdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIGFyZWEgb2YgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnk6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICA8cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9iZWFnbGVib25lCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgdGhlICJ5b2N0by00LjEyIiBicmFuY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCBvdXQgaW4gdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBtYWtlcyBzdXJlIHRoZXNlIGNvbmRpdGlvbnMgZXhpc3QgYmVmb3JlIGF0dGVtcHRpbmcgY29tcGlsYXRpb24uCisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBtYWtlcyBzdXJlIHRoZXNlIGNvbmRpdGlvbnMgZXhpc3QKKyAgICAgICAgICAgIGJlZm9yZSBhdHRlbXB0aW5nIGNvbXBpbGF0aW9uLgogICAgICAgICAgICAgT3RoZXIgbWVhbnMsIGhvd2V2ZXIsIGRvIGV4aXN0LCBzdWNoIGFzIGFzIGJvb3RzdHJhcHBpbmcgYSBCU1AuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEJlZm9yZSBidWlsZGluZyBhIGtlcm5lbCwgdGhlIGJ1aWxkIHByb2Nlc3MgdmVyaWZpZXMgdGhlIHRyZWUKICAgICAgICAgICAgIGFuZCBjb25maWd1cmVzIHRoZSBrZXJuZWwgYnkgcHJvY2Vzc2luZyBhbGwgb2YgdGhlCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uICJmcmFnbWVudHMiIHNwZWNpZmllZCBieSBmZWF0dXJlIGRlc2NyaXB0aW9ucyBpbiB0aGUgPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPgotICAgICAgICAgICAgZmlsZXMuCi0gICAgICAgICAgICBBcyB0aGUgZmVhdHVyZXMgYXJlIGNvbXBpbGVkLCBhc3NvY2lhdGVkIGtlcm5lbCBjb25maWd1cmF0aW9uIGZyYWdtZW50cyBhcmUgbm90ZWQKLSAgICAgICAgICAgIGFuZCByZWNvcmRlZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+IHNlcmllcyBvZiBkaXJlY3RvcmllcyBpbiB0aGVpciBjb21waWxhdGlvbiBvcmRlci4KLSAgICAgICAgICAgIFRoZSBmcmFnbWVudHMgYXJlIG1pZ3JhdGVkLCBwcmUtcHJvY2Vzc2VkIGFuZCBwYXNzZWQgdG8gdGhlIExpbnV4IEtlcm5lbAotICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBzdWJzeXN0ZW0gKDxmaWxlbmFtZT5sa2M8L2ZpbGVuYW1lPikgYXMgcmF3IGlucHV0IGluIHRoZSBmb3JtCi0gICAgICAgICAgICBvZiBhIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bGtjPC9maWxlbmFtZT4gdXNlcyBpdHMgb3duIGludGVybmFsIGRlcGVuZGVuY3kgY29uc3RyYWludHMgdG8gZG8gdGhlIGZpbmFsCi0gICAgICAgICAgICBwcm9jZXNzaW5nIG9mIHRoYXQgaW5mb3JtYXRpb24gYW5kIGdlbmVyYXRlcyB0aGUgZmluYWwgPGZpbGVuYW1lPi5jb25maWc8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICB0aGF0IGlzIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uLgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiAiZnJhZ21lbnRzIiBzcGVjaWZpZWQgYnkgZmVhdHVyZSBkZXNjcmlwdGlvbnMKKyAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+LnNjYzwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgQXMgdGhlIGZlYXR1cmVzIGFyZSBjb21waWxlZCwgYXNzb2NpYXRlZCBrZXJuZWwgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgZnJhZ21lbnRzIGFyZSBub3RlZCBhbmQgcmVjb3JkZWQgaW4gdGhlIHNlcmllcyBvZiBkaXJlY3RvcmllcworICAgICAgICAgICAgaW4gdGhlaXIgY29tcGlsYXRpb24gb3JkZXIuCisgICAgICAgICAgICBUaGUgZnJhZ21lbnRzIGFyZSBtaWdyYXRlZCwgcHJlLXByb2Nlc3NlZCBhbmQgcGFzc2VkIHRvIHRoZQorICAgICAgICAgICAgTGludXggS2VybmVsIENvbmZpZ3VyYXRpb24gc3Vic3lzdGVtICg8ZmlsZW5hbWU+bGtjPC9maWxlbmFtZT4pIGFzCisgICAgICAgICAgICByYXcgaW5wdXQgaW4gdGhlIGZvcm0gb2YgYSA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxrYzwvZmlsZW5hbWU+IHVzZXMgaXRzIG93biBpbnRlcm5hbCBkZXBlbmRlbmN5CisgICAgICAgICAgICBjb25zdHJhaW50cyB0byBkbyB0aGUgZmluYWwgcHJvY2Vzc2luZyBvZiB0aGF0IGluZm9ybWF0aW9uIGFuZAorICAgICAgICAgICAgZ2VuZXJhdGVzIHRoZSBmaW5hbCA8ZmlsZW5hbWU+LmNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgdGhhdCBpcyB1c2VkCisgICAgICAgICAgICBkdXJpbmcgY29tcGlsYXRpb24uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFVzaW5nIHRoZSBib2FyZCdzIGFyY2hpdGVjdHVyZSBhbmQgb3RoZXIgcmVsZXZhbnQgdmFsdWVzIGZyb20gdGhlIGJvYXJkJ3MgdGVtcGxhdGUsCi0gICAgICAgICAgICBrZXJuZWwgY29tcGlsYXRpb24gaXMgc3RhcnRlZCBhbmQgYSBrZXJuZWwgaW1hZ2UgaXMgcHJvZHVjZWQuCisgICAgICAgICAgICBVc2luZyB0aGUgYm9hcmQncyBhcmNoaXRlY3R1cmUgYW5kIG90aGVyIHJlbGV2YW50IHZhbHVlcyBmcm9tCisgICAgICAgICAgICB0aGUgYm9hcmQncyB0ZW1wbGF0ZSwga2VybmVsIGNvbXBpbGF0aW9uIGlzIHN0YXJ0ZWQgYW5kIGEga2VybmVsCisgICAgICAgICAgICBpbWFnZSBpcyBwcm9kdWNlZC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIG90aGVyIHRoaW5nIHRoYXQgeW91IG5vdGljZSBvbmNlIHlvdSBjb25maWd1cmUgYSBrZXJuZWwgaXMgdGhhdAotICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgZ2VuZXJhdGVzIGEgYnVpbGQgdHJlZSB0aGF0IGlzIHNlcGFyYXRlIGZyb20geW91ciBrZXJuZWwncyBsb2NhbCBHaXQKLSAgICAgICAgICAgIHNvdXJjZSByZXBvc2l0b3J5IHRyZWUuCisgICAgICAgICAgICB0aGUgYnVpbGQgcHJvY2VzcyBnZW5lcmF0ZXMgYSBidWlsZCB0cmVlIHRoYXQgaXMgc2VwYXJhdGUgZnJvbQorICAgICAgICAgICAgeW91ciBrZXJuZWwncyBsb2NhbCBHaXQgc291cmNlIHJlcG9zaXRvcnkgdHJlZS4KICAgICAgICAgICAgIFRoaXMgYnVpbGQgdHJlZSBoYXMgYSBuYW1lIHRoYXQgdXNlcyB0aGUgZm9sbG93aW5nIGZvcm0sIHdoZXJlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+JHtNQUNISU5FfTwvZmlsZW5hbWU+IGlzIHRoZSBtZXRhZGF0YSBuYW1lIG9mIHRoZSBtYWNoaW5lIChCU1ApIGFuZCAia2VybmVsX3R5cGUiIGlzIG9uZQotICAgICAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydGVkIGtlcm5lbCB0eXBlcyAoZS5nLiAic3RhbmRhcmQiKToKKyAgICAgICAgICAgIDxmaWxlbmFtZT4ke01BQ0hJTkV9PC9maWxlbmFtZT4gaXMgdGhlIG1ldGFkYXRhIG5hbWUgb2YgdGhlCisgICAgICAgICAgICBtYWNoaW5lIChCU1ApIGFuZCAia2VybmVsX3R5cGUiIGlzIG9uZSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgc3VwcG9ydGVkIGtlcm5lbCB0eXBlcyAoZS5nLiAic3RhbmRhcmQiKToKICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBsaW51eC0ke01BQ0hJTkV9LTxyZXBsYWNlYWJsZT5rZXJuZWxfdHlwZTwvcmVwbGFjZWFibGU+LWJ1aWxkCiAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGV4aXN0aW5nIHN1cHBvcnQgaW4gdGhlIDxmaWxlbmFtZT5rZXJuZWwub3JnPC9maWxlbmFtZT4gdHJlZSBhY2hpZXZlcyB0aGlzCi0gICAgICAgICAgICBkZWZhdWx0IGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICBUaGUgZXhpc3Rpbmcgc3VwcG9ydCBpbiB0aGUgPGZpbGVuYW1lPmtlcm5lbC5vcmc8L2ZpbGVuYW1lPiB0cmVlCisgICAgICAgICAgICBhY2hpZXZlcyB0aGlzIGRlZmF1bHQgZnVuY3Rpb25hbGl0eS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBtZWFucyB0aGF0IGFsbCB0aGUgZ2VuZXJhdGVkIGZpbGVzIGZvciBhIHBhcnRpY3VsYXIgbWFjaGluZSBvciBCU1AgYXJlIG5vdyBpbgotICAgICAgICAgICAgdGhlIGJ1aWxkIHRyZWUgZGlyZWN0b3J5LgotICAgICAgICAgICAgVGhlIGZpbGVzIGluY2x1ZGUgdGhlIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwgYWxsIHRoZSA8ZmlsZW5hbWU+Lm88L2ZpbGVuYW1lPgotICAgICAgICAgICAgZmlsZXMsIHRoZSA8ZmlsZW5hbWU+LmE8L2ZpbGVuYW1lPiBmaWxlcywgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBtZWFucyB0aGF0IGFsbCB0aGUgZ2VuZXJhdGVkIGZpbGVzIGZvciBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgIG1hY2hpbmUgb3IgQlNQIGFyZSBub3cgaW4gdGhlIGJ1aWxkIHRyZWUgZGlyZWN0b3J5LgorICAgICAgICAgICAgVGhlIGZpbGVzIGluY2x1ZGUgdGhlIGZpbmFsIDxmaWxlbmFtZT4uY29uZmlnPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgIGFsbCB0aGUgPGZpbGVuYW1lPi5vPC9maWxlbmFtZT4gZmlsZXMsIHRoZSA8ZmlsZW5hbWU+LmE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZXMsIGFuZCBzbyBmb3J0aC4KICAgICAgICAgICAgIFNpbmNlIGVhY2ggbWFjaGluZSBvciBCU1AgaGFzIGl0cyBvd24gc2VwYXJhdGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIGluIGl0cyBvd24gc2VwYXJhdGUgYnJhbmNoCi0gICAgICAgICAgICBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdSBjYW4gZWFzaWx5IHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudCBidWlsZHMuCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICBpbiBpdHMgb3duIHNlcGFyYXRlIGJyYW5jaCBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdSBjYW4gZWFzaWx5CisgICAgICAgICAgICBzd2l0Y2ggYmV0d2VlbiBkaWZmZXJlbnQgYnVpbGRzLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9hcHBlbmRpeD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1zdHlsZS5jc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtc3R5bGUuY3NzCmluZGV4IDZlMGMxYzcuLjljMDFhYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1zdHlsZS5jc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LXN0eWxlLmNzcwpAQCAtNzMwLDYgKzczMCwxMCBAQAogICBib3JkZXItY29sb3I6IGJsYWNrOwogfQogCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQorCiAKICAgLyoqKioqKioqKioqIC8KICAvICBncmFwaGljcyAgLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi54bWwKaW5kZXggMjhhMzM2NC4uZWMzNmQyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCkBAIC0yMiwxMSArMjIsMTEgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+RGFycmVuPC9maXJzdG5hbWU+IDxzdXJuYW1lPkhhcnQ8L3N1cm5hbWU+CisgICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5JbnRlbCBDb3Jwb3JhdGlvbjwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPmRhcnJlbi5oYXJ0QGludGVsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC04MiwyNCArODIsMTkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KdW5lIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4yIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy40PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIApAQCAtMTE2LDMwICsxMTEsMzEgQEAKICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CiAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eAotICAgICAgICAgICAgICAgICAgICAgICBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcmVsZWFzZSAodmVyc2lvbiAmWU9DVE9fRE9DX1ZFUlNJT047KSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbWFudWFsIGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOy4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGxhdGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IChpZiB0aGV5IGV4aXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBmb3Igd2hpY2ggeW91IHdhbnQKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW4tZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbCwgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7L2xhdGVzdC9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CiAKICAgICA8L2Jvb2tpbmZvPgpAQCAtMTU0LDEwICsxNTAsNiBAQAogCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ia2VybmVsLWRldi1tYWludC1hcHB4LnhtbCIvPgogCi08IS0tCi0gICAgPHhpOmluY2x1ZGUgaHJlZj0ia2VybmVsLWRldi1leGFtcGxlcy54bWwiLz4KLS0tPgotCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ia2VybmVsLWRldi1mYXEueG1sIi8+CiAKIDwhLS0gICAgPGluZGV4IGlkPSdpbmRleCc+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC5wbmcKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JpdGJha2UtYnVpbGQtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI5NWViMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKaW5kZXggNTQwYjBhYi4uMGY4MmExZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2Rldi10aXRsZS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2Rldi10aXRsZS5wbmcKaW5kZXggZDNjYWM0YS4uMTVlNjdkMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXYtdGl0bGUucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGV2LXRpdGxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2RldnRvb2wtYWRkLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXZ0b29sLWFkZC1mbG93LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA5ZTYwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2RldnRvb2wtYWRkLWZsb3cucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkN2Y0ZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXZ0b29sLW1vZGlmeS1mbG93LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNTE2OGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcKaW5kZXggYzkwNzk5Ny4uOTYzMDNiOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1kZXYtZmxvdy5wbmcKaW5kZXggMDA5MTA1ZC4uNzkzYTM5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWwtZGV2LWZsb3cucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLWRldi1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9rZXJuZWwtb3ZlcnZpZXctMi1nZW5lcmljLnBuZwppbmRleCBjYjk3MGVhLi5lZTJjZGIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tlcm5lbC1vdmVydmlldy0yLWdlbmVyaWMucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2VybmVsLW92ZXJ2aWV3LTItZ2VuZXJpYy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstdGl0bGUucG5nCmluZGV4IGU5ZDViMzQuLmU2OWUwMzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLXRpdGxlLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nCmluZGV4IDY1YzVmMjkuLmU5Y2ZmMTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCmluZGV4IGQwNmY4NTEuLmE5NDFkNzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICAgICAgICAgIDxhdXRob3I+CiAgICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5JbnRlbCBDb3Jwb3JhdGlvbjwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CiAgICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgpAQCAtNjYsMjQgKzY2LDE5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SnVuZSAyMDE3PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE3PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPlNlcHRlbWJlciAyMDE3PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4zPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuNDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgIDwvcmV2aGlzdG9yeT4KIApAQCAtMTAwLDI3ICs5NSwyOSBAQAogICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIE1lZ2EtTWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFlvY3RvIFByb2plY3QgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiAmWU9DVE9fRE9DX1ZFUlNJT047KSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBZb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgTWVnYS1NYW51YWw8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCB1c2UgdGhlIG1hbnVhbCBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047LgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbGF0ZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgKGlmIHRoZXkgZXhpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hbnVhbHMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIGZvciB3aGljaCB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGluLWRldmVsb3BtZW50IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgTWVnYS1NYW51YWwsIHNlZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7L2xhdGVzdC9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC5odG1sJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCkBAIC0xNDYsOCArMTQzLDYgQEAKICAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLW5ld2JpZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZQotICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLW1vZGVsLnhtbCIvPgotICAgIDx4aTppbmNsdWRlCiAgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbCIvPgogICAgIDx4aTppbmNsdWRlCiAgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwiLz4KQEAgLTE2Nyw2ICsxNjIsOCBAQAogICAgIDx4aTppbmNsdWRlCiAgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9zZGstbWFudWFsL3Nkay13b3JraW5nLXByb2plY3RzLnhtbCIvPgogICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9zZGstbWFudWFsL3Nkay1lY2xpcHNlLXByb2plY3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwiLz4KICAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sIi8+CkBAIC0yMjksNyArMjI2LDcgQEAKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvdXNpbmdwb2t5LnhtbCIvPgogCiAgICAgPHhpOmluY2x1ZGUKLSAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvY2xvc2VyLWxvb2sueG1sIi8+CisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlCiAgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3RlY2huaWNhbC1kZXRhaWxzLnhtbCIvPgpAQCAtMjUzLDYgKzI1MCw5IEBACiAgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtcWEtY2hlY2tzLnhtbCIvPgogCiAgICAgPHhpOmluY2x1ZGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2Etc3R5bGUuY3NzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1zdHlsZS5jc3MKaW5kZXggZGY3MWEyMC4uY2Q3MWViNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1zdHlsZS5jc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1zdHlsZS5jc3MKQEAgLTczMSw2ICs3MzEsMTEgQEAKIH0KIAogCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQorCisKICAgLyoqKioqKioqKioqIC8KICAvICBncmFwaGljcyAgLwogLyAqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKaW5kZXggMTRkNjdlNS4uZGIzZWVmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKQEAgLTEsMTAgKzEsMTMgQEAKLTwhRU5USVRZIERJU1RSTyAiMi4zLjQiPgotPCFFTlRJVFkgRElTVFJPX0NPTVBSRVNTRUQgIjIzNCI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVAgInB5cm8iPgotPCFFTlRJVFkgRElTVFJPX05BTUUgIlB5cm8iPgotPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjIuMy40Ij4KLTwhRU5USVRZIFBPS1lWRVJTSU9OICIxOC4wLjQiPgotPCFFTlRJVFkgUE9LWVZFUlNJT05fQ09NUFJFU1NFRCAiMTgwNCI+Cis8IUVOVElUWSBESVNUUk8gIjIuNC4yIj4KKzwhRU5USVRZIERJU1RST19DT01QUkVTU0VEICIyNDIiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQICJyb2NrbyI+Cis8IUVOVElUWSBESVNUUk9fTkFNRSAiUm9ja28iPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjIuNC4yIj4KKzwhRU5USVRZIERJU1RST19SRUxfVEFHICJ5b2N0by0yLjQuMiI+Cis8IUVOVElUWSBNRVRBSU5URUxWRVJTSU9OICI4LjAiPgorPCFFTlRJVFkgTUVUQV9JTlRFTF9SRUxfVEFHICImTUVUQUlOVEVMVkVSU0lPTjstJkRJU1RST19OQU1FX05PX0NBUDstJllPQ1RPX0RPQ19WRVJTSU9OOyI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTiAiMTkuMC4yIj4KKzwhRU5USVRZIFBPS1lWRVJTSU9OX0NPTVBSRVNTRUQgIjE5MDIiPgogPCFFTlRJVFkgWU9DVE9fUE9LWSAicG9reS0mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047Ij4KIDwhRU5USVRZIENPUFlSSUdIVF9ZRUFSICIyMDEwLTIwMTgiPgogPCFFTlRJVFkgWU9DVE9fRExfVVJMICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmciPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCmluZGV4IGI2NjhmZDQuLmY3NDJlODggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMSBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5Ub208L2ZpcnN0bmFtZT4gPHN1cm5hbWU+WmFudXNzaTwvc3VybmFtZT4KKyAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPkludGVsIENvcnBvcmF0aW9uPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+dG9tLnphbnVzc2lAaW50ZWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTgyLDI0ICs4MiwxOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkp1bmUgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNDwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxNzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjI8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5TZXB0ZW1iZXIgMjAxNzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjIgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjMuMzwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjQ8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXJjaCAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC0xMTUsMzQgKzExMCwzNCBAQAogICAgICAgICAgIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIFVLOiBFbmdsYW5kICZhbXA7IFdhbGVzPC91bGluaz4gYXMgcHVibGlzaGVkIGJ5CiAgICAgICAgICAgQ3JlYXRpdmUgQ29tbW9ucy4KICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBQcm9maWxpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBUcmFjaW5nIE1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhpcyBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlICh2ZXJzaW9uICZZT0NUT19ET0NfVkVSU0lPTjspLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCisgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBsYXRlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCAoaWYgdGhleSBleGlzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIGZvciB3aGljaCB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW4tZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbCwgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7L2xhdGVzdC9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgogCiAgICAgPC9ib29raW5mbz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvY2xvc2VyLWxvb2sueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9jbG9zZXItbG9vay54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyM2VkMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9jbG9zZXItbG9vay54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMwICswLDAgQEAKLTwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKLSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCi1bPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Ci0KLTxjaGFwdGVyIGlkPSdjbG9zZXItbG9vayc+Ci08dGl0bGU+QSBDbG9zZXIgTG9vayBhdCB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjaGFwdGVyIHRha2VzIGEgbW9yZSBkZXRhaWxlZCBsb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICBUaGUgZm9sbG93aW5nIGRpYWdyYW0gcmVwcmVzZW50cyB0aGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYXQgYQotICAgICAgICBoaWdoIGxldmVsLgotICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgY2hhcHRlciBleHBhbmRzIG9uIHRoZSBmdW5kYW1lbnRhbCBpbnB1dCwgb3V0cHV0LAotICAgICAgICBwcm9jZXNzLCBhbmQKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4pIGJsb2NrcwotICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYSBpZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPgotICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQtcmVmLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjhpbiIgZGVwdGg9IjQuMjVpbiIgLz4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIGdlbmVyYWxpemVkIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgY29uc2lzdHMgb2YKLSAgICAgICAgc2V2ZXJhbCBmdW5jdGlvbmFsIGFyZWFzOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2VyIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBNZXRhZGF0YSB5b3UgY2FuIHVzZSB0byBjb250cm9sIHRoZSBidWlsZCBwcm9jZXNzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NZXRhZGF0YSBMYXllcnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBWYXJpb3VzIGxheWVycyB0aGF0IHByb3ZpZGUgc29mdHdhcmUsIG1hY2hpbmUsIGFuZAotICAgICAgICAgICAgICAgIGRpc3RybyBNZXRhZGF0YS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U291cmNlIEZpbGVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVXBzdHJlYW0gcmVsZWFzZXMsIGxvY2FsIHByb2plY3RzLCBhbmQgU0NNcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgU3lzdGVtOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgUHJvY2Vzc2VzIHVuZGVyIHRoZSBjb250cm9sIG9mCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgVGhpcyBibG9jayBleHBhbmRzIG9uIGhvdyBCaXRCYWtlIGZldGNoZXMgc291cmNlLCBhcHBsaWVzCi0gICAgICAgICAgICAgICAgcGF0Y2hlcywgY29tcGxldGVzIGNvbXBpbGF0aW9uLCBhbmFseXplcyBvdXRwdXQgZm9yIHBhY2thZ2UKLSAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBjcmVhdGVzIGFuZCB0ZXN0cyBwYWNrYWdlcywgZ2VuZXJhdGVzIGltYWdlcywgYW5kCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGVzIGNyb3NzLWRldmVsb3BtZW50IHRvb2xzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYWNrYWdlIEZlZWRzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGlyZWN0b3JpZXMgY29udGFpbmluZyBvdXRwdXQgcGFja2FnZXMgKFJQTSwgREVCIG9yIElQSyksCi0gICAgICAgICAgICAgICAgd2hpY2ggYXJlIHN1YnNlcXVlbnRseSB1c2VkIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gaW1hZ2Ugb3IKLSAgICAgICAgICAgICAgICBTREssIHByb2R1Y2VkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgVGhlc2UgZmVlZHMgY2FuIGFsc28gYmUgY29waWVkIGFuZCBzaGFyZWQgdXNpbmcgYSB3ZWIgc2VydmVyIG9yCi0gICAgICAgICAgICAgICAgb3RoZXIgbWVhbnMgdG8gZmFjaWxpdGF0ZSBleHRlbmRpbmcgb3IgdXBkYXRpbmcgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICBpbWFnZXMgb24gZGV2aWNlcyBhdCBydW50aW1lIGlmIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IGlzCi0gICAgICAgICAgICAgICAgZW5hYmxlZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW1hZ2VzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBDcm9zcy1kZXZlbG9wbWVudCB0b29scyB0aGF0IGFyZSBwcm9kdWNlZCBhbG9uZyB3aXRoIGFuIGltYWdlCi0gICAgICAgICAgICAgICAgb3Igc2VwYXJhdGVseSB3aXRoIEJpdEJha2UuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSJ1c2VyLWNvbmZpZ3VyYXRpb24iPgotICAgICAgICA8dGl0bGU+VXNlciBDb25maWd1cmF0aW9uPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFVzZXIgY29uZmlndXJhdGlvbiBoZWxwcyBkZWZpbmUgdGhlIGJ1aWxkLgotICAgICAgICAgICAgVGhyb3VnaCB1c2VyIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gdGVsbCBCaXRCYWtlIHRoZQotICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2UsCi0gICAgICAgICAgICB3aGVyZSB0byBzdG9yZSBkb3dubG9hZGVkIHNvdXJjZSwgYW5kIG90aGVyIGJ1aWxkIHByb3BlcnRpZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGFuIGV4cGFuZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgICAgICAgICAgIlVzZXIgQ29uZmlndXJhdGlvbiIgYm94IG9mIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+OgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgLz4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSBuZWVkcyBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gb3JkZXIgdG8gY29tcGxldGUKLSAgICAgICAgICAgIGEgYnVpbGQuCi0gICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUgPGZpbGVuYW1lPiouY29uZjwvZmlsZW5hbWU+IGZpbGVzLgotICAgICAgICAgICAgVGhlIG1pbmltYWxseSBuZWNlc3Nhcnkgb25lcyByZXNpZGUgYXMgZXhhbXBsZSBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCB0aGlzIHNlY3Rpb24gcmVmZXJzIHRvIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGFzCi0gICAgICAgICAgICB0aGUgIlBva3kgRGlyZWN0b3J5LiIKLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgb3IgeW91Ci0gICAgICAgICAgICBkb3dubG9hZCBhbmQgdW5wYWNrIGEgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB5b3UgY2FuIHNldCB1cCB0aGUKLSAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgdG8gYmUgbmFtZWQgYW55dGhpbmcgeW91IHdhbnQuCi0gICAgICAgICAgICBGb3IgdGhpcyBkaXNjdXNzaW9uLCB0aGUgY2xvbmVkIHJlcG9zaXRvcnkgdXNlcyB0aGUgZGVmYXVsdAotICAgICAgICAgICAgbmFtZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIFBva3kgcmVwb3NpdG9yeSBpcyBwcmltYXJpbHkgYW4gYWdncmVnYXRpb24gb2YgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgSXQgaXMgbm90IGEgY2Fub25pY2FsIHVwc3RyZWFtIHNvdXJjZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBsYXllciBpbnNpZGUgUG9reSBjb250YWlucwotICAgICAgICAgICAgYSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0aGF0IGhhcyBleGFtcGxlCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzLgotICAgICAgICAgICAgVGhlc2UgZXhhbXBsZSBmaWxlcyBhcmUgdXNlZCBhcyBhIGJhc2lzIGZvciBjcmVhdGluZyBhY3R1YWwKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgd2hlbiB5b3Ugc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgc2NyaXB0Ci0gICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIG9yCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+KS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU291cmNpbmcgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNjcmlwdCBjcmVhdGVzIGEKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSBCdWlsZCBEaXJlY3RvcnkgZm9yIGFsbCBpdHMgd29yayBkdXJpbmcgYnVpbGRzLgotICAgICAgICAgICAgVGhlIEJ1aWxkIERpcmVjdG9yeSBoYXMgYSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0aGF0Ci0gICAgICAgICAgICBjb250YWlucyBkZWZhdWx0IHZlcnNpb25zIG9mIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgIFRoZXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgY3JlYXRlZCBvbmx5IGlmIHZlcnNpb25zCi0gICAgICAgICAgICBkbyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGF0IHRoZSB0aW1lIHlvdQotICAgICAgICAgICAgc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJlY2F1c2UgdGhlIFBva3kgcmVwb3NpdG9yeSBpcyBmdW5kYW1lbnRhbGx5IGFuIGFnZ3JlZ2F0aW9uIG9mCi0gICAgICAgICAgICBleGlzdGluZyByZXBvc2l0b3JpZXMsIHNvbWUgdXNlcnMgbWlnaHQgYmUgZmFtaWxpYXIgd2l0aCBydW5uaW5nCi0gICAgICAgICAgICB0aGUgPGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPiBzY3JpcHQgaW4gdGhlIGNvbnRleHQKLSAgICAgICAgICAgIG9mIHNlcGFyYXRlIE9wZW5FbWJlZGRlZC1Db3JlIGFuZCBCaXRCYWtlIHJlcG9zaXRvcmllcyByYXRoZXIgdGhhbiBhCi0gICAgICAgICAgICBzaW5nbGUgUG9reSByZXBvc2l0b3J5LgotICAgICAgICAgICAgVGhpcyBkaXNjdXNzaW9uIGFzc3VtZXMgdGhlIHNjcmlwdCBpcyBleGVjdXRlZCBmcm9tIHdpdGhpbiBhIGNsb25lZAotICAgICAgICAgICAgb3IgdW5wYWNrZWQgdmVyc2lvbiBvZiBQb2t5LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBEZXBlbmRpbmcgb24gd2hlcmUgdGhlIHNjcmlwdCBpcyBzb3VyY2VkLCBkaWZmZXJlbnQgc3ViLXNjcmlwdHMKLSAgICAgICAgICAgIGFyZSBjYWxsZWQgdG8gc2V0IHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkgKFlvY3RvIG9yIE9wZW5FbWJlZGRlZCkuCi0gICAgICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSBzY3JpcHQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL29lLXNldHVwLWJ1aWxkZGlyPC9maWxlbmFtZT4gaW5zaWRlIHRoZQotICAgICAgICAgICAgcG9reSBkaXJlY3Rvcnkgc2V0cyB1cCB0aGUgQnVpbGQgRGlyZWN0b3J5IGFuZCBzZWVkcyB0aGUgZGlyZWN0b3J5Ci0gICAgICAgICAgICAoaWYgbmVjZXNzYXJ5KSB3aXRoIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXBwcm9wcmlhdGUgZm9yIHRoZQotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IHNjcmlwdAotICAgICAgICAgICAgICAgIHVzZXMgdGhlIDxmaWxlbmFtZT4kVEVNUExBVEVDT05GPC9maWxlbmFtZT4gdmFyaWFibGUgdG8KLSAgICAgICAgICAgICAgICBkZXRlcm1pbmUgd2hpY2ggc2FtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gbG9jYXRlLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHByb3ZpZGVzIG1hbnkKLSAgICAgICAgICAgIGJhc2ljIHZhcmlhYmxlcyB0aGF0IGRlZmluZSBhIGJ1aWxkIGVudmlyb25tZW50LgotICAgICAgICAgICAgSGVyZSBpcyBhIGxpc3Qgb2YgYSBmZXcuCi0gICAgICAgICAgICBUbyBzZWUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgaW4gYSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmaWxlIGNyZWF0ZWQgYnkgdGhlIGJ1aWxkIGVudmlyb25tZW50IHNjcmlwdCwgc2VlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXI6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UGFyYWxsZWxpc20gT3B0aW9uczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfTlVNQkVSX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBUkFMTEVMX01BS0UnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfTlVNQkVSX1BBUlNFX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfUEFSU0VfVEhSRUFEUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VGFyZ2V0IE1hY2hpbmUgU2VsZWN0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvd25sb2FkIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2hhcmVkIFN0YXRlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCBPdXRwdXQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgc2V0IGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmaWxlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9hdXRvLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRlbGxzIEJpdEJha2Ugd2hhdAotICAgICAgICAgICAgbGF5ZXJzIHlvdSB3YW50IGNvbnNpZGVyZWQgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBsYXllcnMgbGlzdGVkIGluIHRoaXMgZmlsZSBpbmNsdWRlIGxheWVycwotICAgICAgICAgICAgbWluaW1hbGx5IG5lZWRlZCBieSB0aGUgYnVpbGQgc3lzdGVtLgotICAgICAgICAgICAgSG93ZXZlciwgeW91IG11c3QgbWFudWFsbHkgYWRkIGFueSBjdXN0b20gbGF5ZXJzIHlvdSBoYXZlIGNyZWF0ZWQuCi0gICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB3b3JraW5nIHdpdGggdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZW5hYmxpbmcteW91ci1sYXllcic+RW5hYmxpbmcgWW91ciBMYXllcjwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmaWxlcyA8ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4gYXJlIG5vdCBjcmVhdGVkIGJ5IHRoZSBlbnZpcm9ubWVudAotICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0LgotICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB5b3UgbmVlZCB0bwotICAgICAgICAgICAgY3JlYXRlIHRoYXQgeW91cnNlbGYuCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgdHlwaWNhbGx5IGNyZWF0ZWQgYnkKLSAgICAgICAgICAgIGFuIGF1dG9idWlsZGVyOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHRvIGNvbmZpZ3VyZSBtdWx0aXBsZSBidWlsZCBkaXJlY3Rvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhZCBzZXZlcmFsIGJ1aWxkIGVudmlyb25tZW50cyBhbmQKLSAgICAgICAgICAgICAgICAgICAgdGhleSBzaGFyZWQgc29tZSBjb21tb24gZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHQgYnVpbGQgcHJvcGVydGllcyBoZXJlLgotICAgICAgICAgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyBwZXJoYXBzIHRoZSBwYWNrYWdpbmcgZm9ybWF0IHRvIHVzZQotICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25lIHVzZWZ1bCBzY2VuYXJpbyBmb3IgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgdG8gZXh0ZW5kIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZSBwYXRoIHRvIGEKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIFRoZW4sIHdoZW4gQml0QmFrZSBsb29rcyBmb3IgTWV0YWRhdGEgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+LCBpdCBmaW5kcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4gZmlsZSBhbmQgYXBwbGllcyB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGNvbW1vbiBjb25maWd1cmF0aW9ucyBmb3VuZCBpbiB0aGUgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgVG8gb3ZlcnJpZGUgY29uZmlndXJhdGlvbnMgaW4gYSBwYXJ0aWN1bGFyIGJ1aWxkIGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgYWx0ZXIgdGhlIHNpbWlsYXIgY29uZmlndXJhdGlvbnMgd2l0aGluIHRoYXQgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5J3MgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIGlzIHVzdWFsbHkgY3JlYXRlZCBhbmQgd3JpdHRlbiB0byBieQotICAgICAgICAgICAgICAgICAgICBhbiBhdXRvYnVpbGRlci4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHNldHRpbmdzIHB1dCBpbnRvIHRoZSBmaWxlIGFyZSB0eXBpY2FsbHkgdGhlIHNhbWUgYXMKLSAgICAgICAgICAgICAgICAgICAgeW91IHdvdWxkIGZpbmQgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBvciB0aGUgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gZWRpdCBhbGwgY29uZmlndXJhdGlvbiBmaWxlcyB0byBmdXJ0aGVyIGRlZmluZQotICAgICAgICAgICAgYW55IHBhcnRpY3VsYXIgYnVpbGQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgcmVwcmVzZW50ZWQgYnkgdGhlICJVc2VyIENvbmZpZ3VyYXRpb24gRWRpdHMiCi0gICAgICAgICAgICBib3ggaW4gdGhlIGZpZ3VyZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiB5b3UgbGF1bmNoIHlvdXIgYnVpbGQgd2l0aCB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBjb21tYW5kLCBCaXRCYWtlIHNvcnRzIG91dCB0aGUgY29uZmlndXJhdGlvbnMgdG8gdWx0aW1hdGVseQotICAgICAgICAgICAgZGVmaW5lIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICByZWFkcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBpbiBhIHNwZWNpZmljIG9yZGVyOgotICAgICAgICAgICAgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIEFuZCwgdGhlIGJ1aWxkIHN5c3RlbSBhcHBsaWVzIHRoZSBub3JtYWwgYXNzaWdubWVudCBzdGF0ZW1lbnQKLSAgICAgICAgICAgIHJ1bGVzLgotICAgICAgICAgICAgQmVjYXVzZSB0aGUgZmlsZXMgYXJlIHBhcnNlZCBpbiBhIHNwZWNpZmljIG9yZGVyLCB2YXJpYWJsZQotICAgICAgICAgICAgYXNzaWdubWVudHMgZm9yIHRoZSBzYW1lIHZhcmlhYmxlIGNvdWxkIGJlIGFmZmVjdGVkLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4gZmlsZSBhbmQKLSAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHNldAotICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnZhcmlhYmxlMTwvcmVwbGFjZWFibGU+IHRvIGRpZmZlcmVudCB2YWx1ZXMsIGJlY2F1c2UKLSAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gcGFyc2VzIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gYWZ0ZXIKLSAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxyZXBsYWNlYWJsZT52YXJpYWJsZTE8L3JlcGxhY2VhYmxlPiBpcyBhc3NpZ25lZCB0aGUgdmFsdWUgZnJvbQotICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJtZXRhZGF0YS1tYWNoaW5lLWNvbmZpZ3VyYXRpb24tYW5kLXBvbGljeS1jb25maWd1cmF0aW9uIj4KLSAgICAgICAgPHRpdGxlPk1ldGFkYXRhLCBNYWNoaW5lIENvbmZpZ3VyYXRpb24sIGFuZCBQb2xpY3kgQ29uZmlndXJhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcHJldmlvdXMgc2VjdGlvbiBkZXNjcmliZWQgdGhlIHVzZXIgY29uZmlndXJhdGlvbnMgdGhhdAotICAgICAgICAgICAgZGVmaW5lIEJpdEJha2UncyBnbG9iYWwgYmVoYXZpb3IuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gdGFrZXMgYSBjbG9zZXIgbG9vayBhdCB0aGUgbGF5ZXJzIHRoZSBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgIHVzZXMgdG8gZnVydGhlciBjb250cm9sIHRoZSBidWlsZC4KLSAgICAgICAgICAgIFRoZXNlIGxheWVycyBwcm92aWRlIE1ldGFkYXRhIGZvciB0aGUgc29mdHdhcmUsIG1hY2hpbmUsIGFuZAotICAgICAgICAgICAgcG9saWN5LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBnZW5lcmFsLCB0aHJlZSB0eXBlcyBvZiBsYXllciBpbnB1dCBleGlzdDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Qb2xpY3kgQ29uZmlndXJhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRpb24gTGF5ZXJzIHByb3ZpZGUgdG9wLWxldmVsIG9yIGdlbmVyYWwKLSAgICAgICAgICAgICAgICAgICAgcG9saWNpZXMgZm9yIHRoZSBpbWFnZSBvciBTREsgYmVpbmcgYnVpbHQuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIGxheWVyIHdvdWxkIGRpY3RhdGUgd2hldGhlciBCaXRCYWtlCi0gICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIFJQTSBvciBJUEsgcGFja2FnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWNoaW5lIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIGxheWVycyBwcm92aWRlIG1hY2hpbmUKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBpbmZvcm1hdGlvbiBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk1ldGFkYXRhOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIGxheWVycyBjb250YWluIHVzZXItc3VwcGxpZWQgcmVjaXBlIGZpbGVzLAotICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLCBhbmQgYXBwZW5kIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyBhbiBleHBhbmRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgICAgICAgICAgIE1ldGFkYXRhLCBNYWNoaW5lIENvbmZpZ3VyYXRpb24sIGFuZCBQb2xpY3kgQ29uZmlndXJhdGlvbiBpbnB1dAotICAgICAgICAgICAgKGxheWVycykgYm94ZXMgb2YgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz46Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9sYXllci1pbnB1dC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI4aW4iIGRlcHRoPSI3LjVpbiIgLz4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYWxsIGxheWVycyBoYXZlIGEgc2ltaWxhciBzdHJ1Y3R1cmUuCi0gICAgICAgICAgICBUaGV5IGFsbCBjb250YWluIGEgbGljZW5zaW5nIGZpbGUKLSAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5DT1BZSU5HPC9maWxlbmFtZT4pIGlmIHRoZSBsYXllciBpcyB0byBiZQotICAgICAgICAgICAgZGlzdHJpYnV0ZWQsIGEgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgYXMgZ29vZCBwcmFjdGljZQotICAgICAgICAgICAgYW5kIGVzcGVjaWFsbHkgaWYgdGhlIGxheWVyIGlzIHRvIGJlIGRpc3RyaWJ1dGVkLCBhCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSwgYW5kIHJlY2lwZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIG1hbnkgbGF5ZXJzIHRoYXQgY2FuIGJlIHVzZWQuCi0gICAgICAgICAgICBZb3UgY2FuIHNlZSBhIHdlYi1pbnRlcmZhY2UgbGlzdGluZyBvZiB0aGVtIG9uIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyI+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+Ci0gICAgICAgICAgICBwYWdlLgotICAgICAgICAgICAgVGhlIGxheWVycyBhcmUgc2hvd24gYXQgdGhlIGJvdHRvbSBjYXRlZ29yaXplZCB1bmRlcgotICAgICAgICAgICAgIllvY3RvIE1ldGFkYXRhIExheWVycy4iCi0gICAgICAgICAgICBUaGVzZSBsYXllcnMgYXJlIGZ1bmRhbWVudGFsbHkgYSBzdWJzZXQgb2YgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9sYXllcnMvIj5PcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXg8L3VsaW5rPiwKLSAgICAgICAgICAgIHdoaWNoIGxpc3RzIGFsbCBsYXllcnMgcHJvdmlkZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBjb21tdW5pdHkuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBMYXllcnMgZXhpc3QgaW4gdGhlIFlvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllcyB0aGF0Ci0gICAgICAgICAgICAgICAgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBPcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXguCi0gICAgICAgICAgICAgICAgVGhlc2UgbGF5ZXJzIGFyZSBlaXRoZXIgZGVwcmVjYXRlZCBvciBleHBlcmltZW50YWwgaW4gbmF0dXJlLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAotICAgICAgICAgICAgd2hpY2ggaXMgcGFydCBvZiB0aGUgdXNlciBjb25maWd1cmF0aW9uLCB0byBmaW5kIHdoYXQgbGF5ZXJzIGl0Ci0gICAgICAgICAgICBzaG91bGQgYmUgdXNpbmcgYXMgcGFydCBvZiB0aGUgYnVpbGQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJkaXN0cm8tbGF5ZXIiPgotICAgICAgICAgICAgPHRpdGxlPkRpc3RybyBMYXllcjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBkaXN0cmlidXRpb24gbGF5ZXIgcHJvdmlkZXMgcG9saWN5IGNvbmZpZ3VyYXRpb25zIGZvciB5b3VyCi0gICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgotICAgICAgICAgICAgICAgIEJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgdGhhdCB5b3UgaXNvbGF0ZSB0aGVzZSB0eXBlcyBvZgotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGludG8gdGhlaXIgb3duIGxheWVyLgotICAgICAgICAgICAgICAgIFNldHRpbmdzIHlvdSBwcm92aWRlIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvZGlzdHJvLzxyZXBsYWNlYWJsZT5kaXN0cm88L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4gb3ZlcnJpZGUKLSAgICAgICAgICAgICAgICBzaW1pbGFyCi0gICAgICAgICAgICAgICAgc2V0dGluZ3MgdGhhdCBCaXRCYWtlIGZpbmRzIGluIHlvdXIKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgQnVpbGQKLSAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcm92aWRlcyBzb21lIGV4cGxhbmF0aW9uIGFuZCByZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgZm9yIHdoYXQgeW91IHR5cGljYWxseSBmaW5kIGluIHRoZSBkaXN0cmlidXRpb24gbGF5ZXI6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5jbGFzc2VzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyBmaWxlcyAoPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pIGhvbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBmdW5jdGlvbmFsaXR5IHRoYXQgY2FuIGJlIHNoYXJlZCBhbW9uZwotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBpbiB0aGUgZGlzdHJpYnV0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3VyIHJlY2lwZXMgaW5oZXJpdCBhIGNsYXNzLCB0aGV5IHRha2Ugb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBhbmQgZnVuY3Rpb25zIGZvciB0aGF0IGNsYXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgY2xhc3MgZmlsZXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMnPkNsYXNzZXM8L2xpbms+IiBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Y29uZjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGhvbGRzIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgKDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiksCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGlzdHJpYnV0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmNvbmYvZGlzdHJvLzxyZXBsYWNlYWJsZT5kaXN0cm88L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4pLAotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBkaXN0cmlidXRpb24td2lkZSBpbmNsdWRlIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+cmVjaXBlcy0qOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMgdGhhdCBhZmZlY3QgY29tbW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGFjcm9zcyB0aGUgZGlzdHJpYnV0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGNvdWxkIGluY2x1ZGUgcmVjaXBlcyBhbmQgYXBwZW5kIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBhZGQgZGlzdHJpYnV0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBzY3JpcHRzLCBjdXN0b20gaW1hZ2UgcmVjaXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJic3AtbGF5ZXIiPgotICAgICAgICAgICAgPHRpdGxlPkJTUCBMYXllcjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBCU1AgTGF5ZXIgcHJvdmlkZXMgbWFjaGluZSBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIGluIHRoaXMgbGF5ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgZm9yIHdoaWNoCi0gICAgICAgICAgICAgICAgeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2Ugb3IgdGhlIFNESy4KLSAgICAgICAgICAgICAgICBBIGNvbW1vbiBzdHJ1Y3R1cmUgb3IgZm9ybSBpcyBkZWZpbmVkIGZvciBCU1AgbGF5ZXJzLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIGEgQlNQIGxheWVyIHRvIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50IHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIGl0IG11c3QgbWVldCBzb21lIHN0cnVjdHVyYWwgcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllcidzIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlIG1hY2hpbmUKLSAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmNvbmYvbWFjaGluZS88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPikgYW5kLAotICAgICAgICAgICAgICAgIG9mIGNvdXJzZSwgdGhlIGxheWVyICg8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoZSBsYXllciBpcyBkZWRpY2F0ZWQgdG8gc3BlY2lmaWMgcmVjaXBlcwotICAgICAgICAgICAgICAgIGJ5IGZ1bmN0aW9uOiA8ZmlsZW5hbWU+cmVjaXBlcy1ic3A8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1jb3JlPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtZ3JhcGhpY3M8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgTWV0YWRhdGEgY2FuIGV4aXN0IGZvciBtdWx0aXBsZSBmb3JtZmFjdG9ycywgZ3JhcGhpY3MKLSAgICAgICAgICAgICAgICBzdXBwb3J0IHN5c3RlbXMsIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhlIGZpZ3VyZSBzaG93cyBzZXZlcmFsIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcywgbm90IGFsbCB0aGVzZSBkaXJlY3RvcmllcyBhcHBlYXIgaW4gYWxsCi0gICAgICAgICAgICAgICAgICAgIEJTUCBsYXllcnMuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9InNvZnR3YXJlLWxheWVyIj4KLSAgICAgICAgICAgIDx0aXRsZT5Tb2Z0d2FyZSBMYXllcjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBzb2Z0d2FyZSBsYXllciBwcm92aWRlcyB0aGUgTWV0YWRhdGEgZm9yIGFkZGl0aW9uYWwKLSAgICAgICAgICAgICAgICBzb2Z0d2FyZSBwYWNrYWdlcyB1c2VkIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgVGhpcyBsYXllciBkb2VzIG5vdCBpbmNsdWRlIE1ldGFkYXRhIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlCi0gICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uIG9yIHRoZSBtYWNoaW5lLCB3aGljaCBhcmUgZm91bmQgaW4gdGhlaXIKLSAgICAgICAgICAgICAgICByZXNwZWN0aXZlIGxheWVycy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBsYXllciBjb250YWlucyBhbnkgbmV3IHJlY2lwZXMgdGhhdCB5b3VyIHByb2plY3QgbmVlZHMKLSAgICAgICAgICAgICAgICBpbiB0aGUgZm9ybSBvZiByZWNpcGUgZmlsZXMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ic291cmNlcy1kZXYtZW52aXJvbm1lbnQiPgotICAgICAgICA8dGl0bGU+U291cmNlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBvcmRlciBmb3IgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGFuIGltYWdlIG9yCi0gICAgICAgICAgICBhbnkgdGFyZ2V0LCBpdCBtdXN0IGJlIGFibGUgdG8gYWNjZXNzIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+Ci0gICAgICAgICAgICByZXByZXNlbnRzIHNvdXJjZSBmaWxlcyB1c2luZyB0aGUgIlVwc3RyZWFtIFByb2plY3QgUmVsZWFzZXMiLAotICAgICAgICAgICAgIkxvY2FsIFByb2plY3RzIiwgYW5kICJTQ01zIChvcHRpb25hbCkiIGJveGVzLgotICAgICAgICAgICAgVGhlIGZpZ3VyZSByZXByZXNlbnRzIG1pcnJvcnMsIHdoaWNoIGFsc28gcGxheSBhIHJvbGUgaW4gbG9jYXRpbmcKLSAgICAgICAgICAgIHNvdXJjZSBmaWxlcywgd2l0aCB0aGUgIlNvdXJjZSBNaXJyb3IocykiIGJveC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIG1ldGhvZCBieSB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIHVsdGltYXRlbHkgb3JnYW5pemVkIGlzCi0gICAgICAgICAgICBhIGZ1bmN0aW9uIG9mIHRoZSBwcm9qZWN0LgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGZvciByZWxlYXNlZCBzb2Z0d2FyZSwgcHJvamVjdHMgdGVuZCB0byB1c2UgdGFyYmFsbHMKLSAgICAgICAgICAgIG9yIG90aGVyIGFyY2hpdmVkIGZpbGVzIHRoYXQgY2FuIGNhcHR1cmUgdGhlIHN0YXRlIG9mIGEgcmVsZWFzZQotICAgICAgICAgICAgZ3VhcmFudGVlaW5nIHRoYXQgaXQgaXMgc3RhdGljYWxseSByZXByZXNlbnRlZC4KLSAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCBmb3IgYSBwcm9qZWN0IHRoYXQgaXMgbW9yZSBkeW5hbWljIG9yCi0gICAgICAgICAgICBleHBlcmltZW50YWwgaW4gbmF0dXJlLCBhIHByb2plY3QgbWlnaHQga2VlcCBzb3VyY2UgZmlsZXMgaW4gYQotICAgICAgICAgICAgcmVwb3NpdG9yeSBjb250cm9sbGVkIGJ5IGEgU291cmNlIENvbnRyb2wgTWFuYWdlciAoU0NNKSBzdWNoIGFzCi0gICAgICAgICAgICBHaXQuCi0gICAgICAgICAgICBQdWxsaW5nIHNvdXJjZSBmcm9tIGEgcmVwb3NpdG9yeSBhbGxvd3MgeW91IHRvIGNvbnRyb2wKLSAgICAgICAgICAgIHRoZSBwb2ludCBpbiB0aGUgcmVwb3NpdG9yeSAodGhlIHJldmlzaW9uKSBmcm9tIHdoaWNoIHlvdSB3YW50IHRvCi0gICAgICAgICAgICBidWlsZCBzb2Z0d2FyZS4KLSAgICAgICAgICAgIEZpbmFsbHksIGEgY29tYmluYXRpb24gb2YgdGhlIHR3byBtaWdodCBleGlzdCwgd2hpY2ggd291bGQgZ2l2ZSB0aGUKLSAgICAgICAgICAgIGNvbnN1bWVyIGEgY2hvaWNlIHdoZW4gZGVjaWRpbmcgd2hlcmUgdG8gZ2V0IHNvdXJjZSBmaWxlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byBzb3VyY2UgZmlsZXMgcmVnYXJkbGVzcyBvZiB0aGVpciBsb2NhdGlvbi4KLSAgICAgICAgICAgIEVhY2ggcmVjaXBlIG11c3QgaGF2ZSBhIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUKLSAgICAgICAgICAgIHRoYXQgcG9pbnRzIHRvIHRoZSBzb3VyY2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFub3RoZXIgYXJlYSB0aGF0IHBsYXlzIGEgc2lnbmlmaWNhbnQgcm9sZSBpbiB3aGVyZSBzb3VyY2UgZmlsZXMKLSAgICAgICAgICAgIGNvbWUgZnJvbSBpcyBwb2ludGVkIHRvIGJ5IHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICBUaGlzIGFyZWEgaXMgYSBjYWNoZSB0aGF0IGNhbiBob2xkIHByZXZpb3VzbHkgZG93bmxvYWRlZCBzb3VyY2UuCi0gICAgICAgICAgICBZb3UgY2FuIGFsc28gaW5zdHJ1Y3QgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlCi0gICAgICAgICAgICB0YXJiYWxscyBmcm9tIEdpdCByZXBvc2l0b3JpZXMsIHdoaWNoIGlzIG5vdCB0aGUgZGVmYXVsdCBiZWhhdmlvciwKLSAgICAgICAgICAgIGFuZCBzdG9yZSB0aGVtIGluIHRoZSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJz48ZmlsZW5hbWU+QkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSnVkaWNpb3VzIHVzZSBvZiBhIDxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgY2FuCi0gICAgICAgICAgICBzYXZlIHRoZSBidWlsZCBzeXN0ZW0gYSB0cmlwIGFjcm9zcyB0aGUgSW50ZXJuZXQgd2hlbiBsb29raW5nCi0gICAgICAgICAgICBmb3IgZmlsZXMuCi0gICAgICAgICAgICBBIGdvb2QgbWV0aG9kIGZvciB1c2luZyBhIGRvd25sb2FkIGRpcmVjdG9yeSBpcyB0byBoYXZlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gcG9pbnQgdG8gYW4gYXJlYSBvdXRzaWRlIG9mIHlvdXIKLSAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KLSAgICAgICAgICAgIERvaW5nIHNvIGFsbG93cyB5b3UgdG8gc2FmZWx5IGRlbGV0ZSB0aGUgQnVpbGQgRGlyZWN0b3J5Ci0gICAgICAgICAgICBpZiBuZWVkZWQgd2l0aG91dCBmZWFyIG9mIHJlbW92aW5nIGFueSBkb3dubG9hZGVkIHNvdXJjZSBmaWxlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIGRlZXBlciBsb29rIGludG8gdGhlCi0gICAgICAgICAgICBzb3VyY2UgZmlsZXMgYW5kIHRoZSBtaXJyb3JzLgotICAgICAgICAgICAgSGVyZSBpcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBhdCB0aGUgc291cmNlIGZpbGUgYXJlYSBvZiB0aGUKLSAgICAgICAgICAgIGJhc2UgZmlndXJlOgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3NvdXJjZS1pbnB1dC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI3LjVpbiIgLz4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSd1cHN0cmVhbS1wcm9qZWN0LXJlbGVhc2VzJz4KLSAgICAgICAgICAgIDx0aXRsZT5VcHN0cmVhbSBQcm9qZWN0IFJlbGVhc2VzPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVXBzdHJlYW0gcHJvamVjdCByZWxlYXNlcyBleGlzdCBhbnl3aGVyZSBpbiB0aGUgZm9ybSBvZiBhbgotICAgICAgICAgICAgICAgIGFyY2hpdmVkIGZpbGUgKGUuZy4gdGFyYmFsbCBvciB6aXAgZmlsZSkuCi0gICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgY29ycmVzcG9uZCB0byBpbmRpdmlkdWFsIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmaWd1cmUgdXNlcyBzcGVjaWZpYyByZWxlYXNlcyBlYWNoIGZvcgotICAgICAgICAgICAgICAgIEJ1c3lCb3gsIFF0LCBhbmQgRGJ1cy4KLSAgICAgICAgICAgICAgICBBbiBhcmNoaXZlIGZpbGUgY2FuIGJlIGZvciBhbnkgcmVsZWFzZWQgcHJvZHVjdCB0aGF0IGNhbiBiZQotICAgICAgICAgICAgICAgIGJ1aWx0IHVzaW5nIGEgcmVjaXBlLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2xvY2FsLXByb2plY3RzJz4KLSAgICAgICAgICAgIDx0aXRsZT5Mb2NhbCBQcm9qZWN0czwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIExvY2FsIHByb2plY3RzIGFyZSBjdXN0b20gYml0cyBvZiBzb2Z0d2FyZSB0aGUgdXNlciBwcm92aWRlcy4KLSAgICAgICAgICAgICAgICBUaGVzZSBiaXRzIHJlc2lkZSBzb21ld2hlcmUgbG9jYWwgdG8gYSBwcm9qZWN0IC0gcGVyaGFwcwotICAgICAgICAgICAgICAgIGEgZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIHVzZXIgY2hlY2tzIGluIGl0ZW1zIChlLmcuCi0gICAgICAgICAgICAgICAgYSBsb2NhbCBkaXJlY3RvcnkgY29udGFpbmluZyBhIGRldmVsb3BtZW50IHNvdXJjZSB0cmVlCi0gICAgICAgICAgICAgICAgdXNlZCBieSB0aGUgZ3JvdXApLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgY2Fub25pY2FsIG1ldGhvZCB0aHJvdWdoIHdoaWNoIHRvIGluY2x1ZGUgYSBsb2NhbCBwcm9qZWN0Ci0gICAgICAgICAgICAgICAgaXMgdG8gdXNlIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWV4dGVybmFsc3JjJz48ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBjbGFzcyB0byBpbmNsdWRlIHRoYXQgbG9jYWwgcHJvamVjdC4KLSAgICAgICAgICAgICAgICBZb3UgdXNlIGVpdGhlciB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBvciBhCi0gICAgICAgICAgICAgICAgcmVjaXBlJ3MgYXBwZW5kIGZpbGUgdG8gb3ZlcnJpZGUgb3Igc2V0IHRoZQotICAgICAgICAgICAgICAgIHJlY2lwZSB0byBwb2ludCB0byB0aGUgbG9jYWwgZGlyZWN0b3J5IG9uIHlvdXIgZGlzayB0byBwdWxsCi0gICAgICAgICAgICAgICAgaW4gdGhlIHdob2xlIHNvdXJjZSB0cmVlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPiBjbGFzcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzY21zJz4KLSAgICAgICAgICAgIDx0aXRsZT5Tb3VyY2UgQ29udHJvbCBNYW5hZ2VycyAoT3B0aW9uYWwpPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQW5vdGhlciBwbGFjZSB0aGUgYnVpbGQgc3lzdGVtIGNhbiBnZXQgc291cmNlIGZpbGVzIGZyb20gaXMKLSAgICAgICAgICAgICAgICB0aHJvdWdoIGFuIFNDTSBzdWNoIGFzIEdpdCBvciBTdWJ2ZXJzaW9uLgotICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgYSByZXBvc2l0b3J5IGlzIGNsb25lZCBvciBjaGVja2VkIG91dC4KLSAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2sgaW5zaWRlIEJpdEJha2UgdXNlcwotICAgICAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlIGFyZ3VtZW50J3MgcHJlZml4IHRvIGRldGVybWluZSB0aGUgY29ycmVjdAotICAgICAgICAgICAgICAgIGZldGNoZXIgbW9kdWxlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGhhdmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICBnZW5lcmF0ZSB0YXJiYWxscyBmb3IgR2l0IHJlcG9zaXRvcmllcyBhbmQgcGxhY2UgdGhlbSBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyc+PGZpbGVuYW1lPkJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgPC9ub3RlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaGVuIGZldGNoaW5nIGEgcmVwb3NpdG9yeSwgQml0QmFrZSB1c2VzIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIHJldmlzaW9uIGZyb20gd2hpY2ggdG8KLSAgICAgICAgICAgICAgICBidWlsZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzb3VyY2UtbWlycm9ycyc+Ci0gICAgICAgICAgICA8dGl0bGU+U291cmNlIE1pcnJvcihzKTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFR3byBraW5kcyBvZiBtaXJyb3JzIGV4aXN0OiBwcmUtbWlycm9ycyBhbmQgcmVndWxhciBtaXJyb3JzLgotICAgICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSd2YXItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUlSUk9SUyc+PGZpbGVuYW1lPk1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZXMgcG9pbnQgdG8gdGhlc2UsIHJlc3BlY3RpdmVseS4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGNoZWNrcyBwcmUtbWlycm9ycyBiZWZvcmUgbG9va2luZyB1cHN0cmVhbSBmb3IgYW55Ci0gICAgICAgICAgICAgICAgc291cmNlIGZpbGVzLgotICAgICAgICAgICAgICAgIFByZS1taXJyb3JzIGFyZSBhcHByb3ByaWF0ZSB3aGVuIHlvdSBoYXZlIGEgc2hhcmVkIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgIHRoYXQgaXMgbm90IGEgZGlyZWN0b3J5IGRlZmluZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIEEgUHJlLW1pcnJvciB0eXBpY2FsbHkgcG9pbnRzIHRvIGEgc2hhcmVkIGRpcmVjdG9yeSB0aGF0IGlzCi0gICAgICAgICAgICAgICAgbG9jYWwgdG8geW91ciBvcmdhbml6YXRpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFJlZ3VsYXIgbWlycm9ycyBjYW4gYmUgYW55IHNpdGUgYWNyb3NzIHRoZSBJbnRlcm5ldCB0aGF0IGlzCi0gICAgICAgICAgICAgICAgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbiBmb3Igc291cmNlIGNvZGUgc2hvdWxkIHRoZQotICAgICAgICAgICAgICAgIHByaW1hcnkgc2l0ZSBub3QgYmUgZnVuY3Rpb25pbmcgZm9yIHNvbWUgcmVhc29uIG9yIGFub3RoZXIuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0icGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQiPgotICAgICAgICA8dGl0bGU+UGFja2FnZSBGZWVkczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyBhbiBpbWFnZSBvciBhbiBTREssCi0gICAgICAgICAgICBpdCBnZXRzIHRoZSBwYWNrYWdlcyBmcm9tIGEgcGFja2FnZSBmZWVkIGFyZWEgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPgotICAgICAgICAgICAgc2hvd3MgdGhpcyBwYWNrYWdlIGZlZWRzIGFyZWEgaW4gdGhlIHVwcGVyLXJpZ2h0IGNvcm5lci4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxvb2tzIGEgbGl0dGxlIGNsb3NlciBpbnRvIHRoZSBwYWNrYWdlIGZlZWRzIGFyZWEgdXNlZAotICAgICAgICAgICAgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgIEhlcmUgaXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgYXQgdGhlIGFyZWE6Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFBhY2thZ2UgZmVlZHMgYXJlIGFuIGludGVybWVkaWFyeSBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzLgotICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMgY2xhc3NlcyB0byBnZW5lcmF0ZQotICAgICAgICAgICAgZGlmZmVyZW50IHBhY2thZ2UgdHlwZXMsIGFuZCB5b3Ugc3BlY2lmeSB3aGljaCBjbGFzc2VzIHRvIGVuYWJsZQotICAgICAgICAgICAgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgQmVmb3JlIHBsYWNpbmcgdGhlIHBhY2thZ2VzIGludG8gcGFja2FnZSBmZWVkcywKLSAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIHZhbGlkYXRlcyB0aGVtIHdpdGggZ2VuZXJhdGVkIG91dHB1dCBxdWFsaXR5Ci0gICAgICAgICAgICBhc3N1cmFuY2UgY2hlY2tzIHRocm91Z2ggdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGNsYXNzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcGFja2FnZSBmZWVkIGFyZWEgcmVzaWRlcyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgotICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8gdGVtcG9yYXJpbHkgc3RvcmUgcGFja2FnZXMKLSAgICAgICAgICAgIGlzIGRldGVybWluZWQgYnkgYSBjb21iaW5hdGlvbiBvZiB2YXJpYWJsZXMgYW5kIHRoZSBwYXJ0aWN1bGFyCi0gICAgICAgICAgICBwYWNrYWdlIG1hbmFnZXIgaW4gdXNlLgotICAgICAgICAgICAgU2VlIHRoZSAiUGFja2FnZSBGZWVkcyIgYm94IGluIHRoZSBpbGx1c3RyYXRpb24gYW5kIG5vdGUgdGhlCi0gICAgICAgICAgICBpbmZvcm1hdGlvbiB0byB0aGUgcmlnaHQgb2YgdGhhdCBhcmVhLgotICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBkZWZpbmVzIHdoZXJlIHBhY2thZ2UgZmlsZXMgYXJlCi0gICAgICAgICAgICBrZXB0OgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBEZWZpbmVkIGFzIDxmaWxlbmFtZT50bXAvZGVwbG95PC9maWxlbmFtZT4gaW4gdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ERVBMT1lfRElSXyo8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCwgdGhlIHBhY2thZ2UgdHlwZQotICAgICAgICAgICAgICAgICAgICBzdWItZm9sZGVyLgotICAgICAgICAgICAgICAgICAgICBHaXZlbiBSUE0sIElQSywgb3IgREVCIHBhY2thZ2luZyBhbmQgdGFyYmFsbCBjcmVhdGlvbiwgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1JQTSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfUlBNPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JUEsnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lQSzwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1RBUic+PGZpbGVuYW1lPkRFUExPWV9ESVJfVEFSPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgYXJlIHVzZWQsIHJlc3BlY3RpdmVseS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHN1Yi1mb2xkZXJzLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcGFja2FnZXMgY291bGQgZXhpc3QgZm9yIHRoZSBpNTg2IG9yIHFlbXV4ODYKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4gdGFza3MgdG8KLSAgICAgICAgICAgIGdlbmVyYXRlIHBhY2thZ2VzIGFuZCBwbGFjZSB0aGVtIGludG8gdGhlIHBhY2thZ2UgaG9sZGluZyBhcmVhIChlLmcuCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPiBmb3IgSVBLIHBhY2thZ2VzKS4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2RlYjwvZmlsZW5hbWU+PC9saW5rPiIsCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfaXBrJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvbGluaz4iLAotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3JwbSc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfcnBtPC9maWxlbmFtZT48L2xpbms+IiwKLSAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3Rhcic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfdGFyPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbnMgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciBhIHNjZW5hcmlvIHdoZXJlIGFuIElQSyBwYWNrYWdpbmcgbWFuYWdlcgotICAgICAgICAgICAgaXMgYmVpbmcgdXNlZCBhbmQgcGFja2FnZSBhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IgYm90aCBpNTg2Ci0gICAgICAgICAgICBhbmQgcWVtdXg4NiBleGlzdC4KLSAgICAgICAgICAgIFBhY2thZ2VzIGZvciB0aGUgaTU4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL2k1ODY8L2ZpbGVuYW1lPiwgd2hpbGUgcGFja2FnZXMgZm9yCi0gICAgICAgICAgICB0aGUgcWVtdXg4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL3FlbXV4ODY8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5CaXRCYWtlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+Ci0gICAgICAgICAgICB0byBwcm9kdWNlIGltYWdlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIGZyb20gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz4sCi0gICAgICAgICAgICB0aGUgQml0QmFrZSBhcmVhIGNvbnNpc3RzIG9mIHNldmVyYWwgZnVuY3Rpb25hbCBhcmVhcy4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IGVhY2ggb2YgdGhvc2UgYXJlYXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNlcGFyYXRlIGRvY3VtZW50YXRpb24gZXhpc3RzIGZvciB0aGUgQml0QmFrZSB0b29sLgotICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsJz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4KLSAgICAgICAgICAgIGZvciByZWZlcmVuY2UgbWF0ZXJpYWwgb24gQml0QmFrZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzb3VyY2UtZmV0Y2hpbmctZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5Tb3VyY2UgRmV0Y2hpbmc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZmlyc3Qgc3RhZ2VzIG9mIGJ1aWxkaW5nIGEgcmVjaXBlIGFyZSB0byBmZXRjaCBhbmQgdW5wYWNrCi0gICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBjb2RlOgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNi41aW4iIGRlcHRoPSI1aW4iIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2tzIGZldGNoIHRoZSBzb3VyY2UgZmlsZXMgYW5kIHVucGFjayB0aGVtIGludG8gdGhlIHdvcmsKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBldmVyeSBsb2NhbCBmaWxlIChlLmcuIDxmaWxlbmFtZT5maWxlOi8vPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgcGFydCBvZiBhIHJlY2lwZSdzCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRha2VzIGEgY2hlY2tzdW0KLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZpbGUgZm9yIHRoZSByZWNpcGUgYW5kIGluc2VydHMgdGhlIGNoZWNrc3VtIGludG8KLSAgICAgICAgICAgICAgICAgICAgdGhlIHNpZ25hdHVyZSBmb3IgdGhlIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBJZiBhbnkgbG9jYWwgZmlsZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+IHRhc2sgYW5kIGFsbCB0YXNrcyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIGRlcGVuZCBvbiBpdCBhcmUgcmUtZXhlY3V0ZWQuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGV2ZXJ5dGhpbmcgaXMgYWNjb21wbGlzaGVkIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCi0gICAgICAgICAgICAgICAgd2hpY2ggaGFzIGEgZGVmaW5lZCBzdHJ1Y3R1cmUuCi0gICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGUgQnVpbGQgRGlyZWN0b3J5LAotICAgICAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtYnVpbGQnPjxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPjwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVW5wYWNrZWQgc291cmNlIGZpbGVzIGFyZSBwb2ludGVkIHRvIGJ5IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBFYWNoIHJlY2lwZSBoYXMgYW4gYXJlYSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IHdoZXJlIHRoZQotICAgICAgICAgICAgICAgIHVucGFja2VkIHNvdXJjZSBjb2RlIHJlc2lkZXMuCi0gICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhhdCBkaXJlY3RvcnkgZm9yIGFueSBnaXZlbiByZWNpcGUgaXMgZGVmaW5lZCBmcm9tCi0gICAgICAgICAgICAgICAgc2V2ZXJhbCBkaWZmZXJlbnQgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgdGhlc2UgZGlyZWN0b3JpZXMKLSAgICAgICAgICAgICAgICBieSBsb29raW5nIGF0IHRoZSBmaWd1cmU6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgZGlyZWN0b3J5IHdoZXJlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtcyBhbGwgaXRzIHdvcmsgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBidWlsdCBwYWNrYWdlIG9yIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX09TJz48ZmlsZW5hbWU+VEFSR0VUX09TPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcGVyYXRpbmcgc3lzdGVtIG9mIHRoZSB0YXJnZXQgZGV2aWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgYnVpbHQgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHZlcnNpb24gb2YgdGhlIHJlY2lwZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYWNrYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHJlY2lwZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYWNrYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHdpdGhpbiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgc3BlY2lmaWMgcGFja2FnZSBpcyBidWlsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSB1bnBhY2tlZCBzb3VyY2UgZmlsZXMgZm9yIGEgZ2l2ZW4gcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ncGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5QYXRjaGluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9uY2Ugc291cmNlIGNvZGUgaXMgZmV0Y2hlZCBhbmQgdW5wYWNrZWQsIEJpdEJha2UgbG9jYXRlcwotICAgICAgICAgICAgICAgIHBhdGNoIGZpbGVzIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIHNvdXJjZSBmaWxlczoKLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGF0Y2hpbmcucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iNWluIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2sgcHJvY2Vzc2VzIHJlY2lwZXMgYnkKLSAgICAgICAgICAgICAgICB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBsb2NhdGUgYXBwbGljYWJsZSBwYXRjaCBmaWxlcywgd2hpY2ggYnkgZGVmYXVsdAotICAgICAgICAgICAgICAgIGFyZSA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiouZGlmZjwvZmlsZW5hbWU+IGZpbGVzLCBvciBhbnkgZmlsZSBpZgotICAgICAgICAgICAgICAgICJhcHBseT15ZXMiIGlzIHNwZWNpZmllZCBmb3IgdGhlIGZpbGUgaW4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGZpbmRzIGFuZCBhcHBsaWVzIG11bHRpcGxlIHBhdGNoZXMgZm9yIGEgc2luZ2xlIHJlY2lwZQotICAgICAgICAgICAgICAgIGluIHRoZSBvcmRlciBpbiB3aGljaCBpdCBmaW5kcyB0aGUgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICBQYXRjaGVzIGFyZSBhcHBsaWVkIHRvIHRoZSByZWNpcGUncyBzb3VyY2UgZmlsZXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gZGlyZWN0b3J5LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHNvdXJjZSBkaXJlY3RvcmllcyBhcmUKLSAgICAgICAgICAgICAgICBjcmVhdGVkLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1mZXRjaGluZy1kZXYtZW52aXJvbm1lbnQnPlNvdXJjZSBGZXRjaGluZzwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjb25maWd1cmF0aW9uLWFuZC1jb21waWxhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyYXRpb24gYW5kIENvbXBpbGF0aW9uPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQWZ0ZXIgc291cmNlIGNvZGUgaXMgcGF0Y2hlZCwgQml0QmFrZSBleGVjdXRlcyB0YXNrcyB0aGF0Ci0gICAgICAgICAgICAgICAgY29uZmlndXJlIGFuZCBjb21waWxlIHRoZSBzb3VyY2UgY29kZToKLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvY29uZmlndXJhdGlvbi1jb21waWxlLWF1dG9yZWNvbmYucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iN2luIiBkZXB0aD0iNWluIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgaW4gdGhlIGJ1aWxkIHByb2Nlc3MgY29uc2lzdHMgb2YgdGhyZWUgdGFza3M6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wcmVwYXJlX3JlY2lwZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdDwvZmlsZW5hbWU+PC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0YXNrIHNldHMgdXAgdGhlIHR3byBzeXNyb290cyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdC1uYXRpdmU8L2ZpbGVuYW1lPikgc28gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3Jvb3RzIGNvbnRhaW4gdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyBvZiB0aGUgcmVjaXBlcyBvbiB3aGljaCB0aGUgcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nIHRoZSB0YXNrcyBkZXBlbmRzLgotICAgICAgICAgICAgICAgICAgICAgICAgQSBzeXNyb290IGV4aXN0cyBmb3IgYm90aCB0aGUgdGFyZ2V0IGFuZCBmb3IgdGhlIG5hdGl2ZQotICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJpZXMsIHdoaWNoIHJ1biBvbiB0aGUgaG9zdCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb25maWd1cmVzIHRoZSBzb3VyY2UgYnkgZW5hYmxpbmcgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxpbmcgYW55IGJ1aWxkLXRpbWUgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25zIGNhbiBjb21lIGZyb20gdGhlIHJlY2lwZSBpdHNlbGYgYXMgd2VsbAotICAgICAgICAgICAgICAgICAgICAgICAgYXMgZnJvbSBhbiBpbmhlcml0ZWQgY2xhc3MuCi0gICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBzb2Z0d2FyZSBpdHNlbGYgbWlnaHQgY29uZmlndXJlIGl0c2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgZm9yIHdoaWNoIGl0IGlzIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgY29uZmlndXJhdGlvbnMgaGFuZGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgYXJlIHNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBzb3VyY2UgY29kZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc291cmNlIGNvZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGJ1aWx0IGJ5IHRoZSByZWNpcGUuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGJ5IHVzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLUVYVFJBX09FQ09ORic+PGZpbGVuYW1lPkVYVFJBX09FQ09ORjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIHdvcmtzIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjbGFzcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIGEgY29uZmlndXJhdGlvbiB0YXNrIGhhcyBiZWVuIHNhdGlzZmllZCwgQml0QmFrZQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXMgdGhlIHNvdXJjZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGF0aW9uIG9jY3VycyBpbiB0aGUgZGlyZWN0b3J5IHBvaW50ZWQgdG8gYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQic+PGZpbGVuYW1lPkI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IHRoZSA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcywgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQsIHRoZSBzYW1lIGFzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSBjb21waWxhdGlvbiBpcyBkb25lLCBCaXRCYWtlIGV4ZWN1dGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0YXNrIGNvcGllcyBmaWxlcyBmcm9tIHRoZSA8ZmlsZW5hbWU+QjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHBsYWNlcyB0aGVtIGluIGEgaG9sZGluZyBhcmVhIHBvaW50ZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwYWNrYWdlLXNwbGl0dGluZy1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2UgU3BsaXR0aW5nPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQWZ0ZXIgc291cmNlIGNvZGUgaXMgY29uZmlndXJlZCBhbmQgY29tcGlsZWQsIHRoZQotICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYW5hbHl6ZXMKLSAgICAgICAgICAgICAgICB0aGUgcmVzdWx0cyBhbmQgc3BsaXRzIHRoZSBvdXRwdXQgaW50byBwYWNrYWdlczoKLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjdpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrcyBjb21iaW5lIHRvIGFuYWx5emUKLSAgICAgICAgICAgICAgICB0aGUgZmlsZXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L2xpbms+IGRpcmVjdG9yeQotICAgICAgICAgICAgICAgIGFuZCBzcGxpdCB0aGVtIGludG8gc3Vic2V0cyBiYXNlZCBvbiBhdmFpbGFibGUgcGFja2FnZXMgYW5kCi0gICAgICAgICAgICAgICAgZmlsZXMuCi0gICAgICAgICAgICAgICAgVGhlIGFuYWx5emluZyBwcm9jZXNzIGludm9sdmVzIHRoZSBmb2xsb3dpbmcgYXMgd2VsbCBhcyBvdGhlcgotICAgICAgICAgICAgICAgIGl0ZW1zOiBzcGxpdHRpbmcgb3V0IGRlYnVnZ2luZyBzeW1ib2xzLAotICAgICAgICAgICAgICAgIGxvb2tpbmcgYXQgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGJldHdlZW4gcGFja2FnZXMsCi0gICAgICAgICAgICAgICAgYW5kIGxvb2tpbmcgYXQgcGFja2FnZSByZWxhdGlvbnNoaXBzLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPiB0YXNrIGNyZWF0ZXMgcGFja2FnZQotICAgICAgICAgICAgICAgIG1ldGFkYXRhIGJhc2VkIG9uIHRoZSBhbmFseXNpcyBzdWNoIHRoYXQgdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gZ2VuZXJhdGUgdGhlIGZpbmFsIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgIFdvcmtpbmcsIHN0YWdlZCwgYW5kIGludGVybWVkaWF0ZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcwotICAgICAgICAgICAgICAgIGFuZCBwYWNrYWdlIHNwbGl0dGluZyBwcm9jZXNzIHVzZSB0aGVzZSBhcmVhczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBLR0QnPjxmaWxlbmFtZT5QS0dEPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZm9yIHBhY2thZ2VzIGJlZm9yZSB0aGV5IGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dEQVRBX0RJUic+PGZpbGVuYW1lPlBLR0RBVEFfRElSPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgc2hhcmVkLCBnbG9iYWwtc3RhdGUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIGR1cmluZyB0aGUgcGFja2FnaW5nIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dERVNUV09SSyc+PGZpbGVuYW1lPlBLR0RFU1RXT1JLPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgdGVtcG9yYXJ5IHdvcmsgYXJlYSB1c2VkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiB0YXNrLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHREVTVCc+PGZpbGVuYW1lPlBLR0RFU1Q8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHBhcmVudCBkaXJlY3RvcnkgZm9yIHBhY2thZ2VzIGFmdGVyIHRoZXkgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBzcGxpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlZmluZXMgdGhlIGZpbGVzIHRoYXQgZ28gaW50byBlYWNoIHBhY2thZ2UgaW4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC9saW5rPi4KLSAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBkZXRhaWxzIG9uIGhvdyB0aGlzIGlzIGFjY29tcGxpc2hlZCwgeW91IGNhbgotICAgICAgICAgICAgICAgIGxvb2sgYXQgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZSc+PGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBjbGFzcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHBhY2thZ2VzIGJlaW5nIGNyZWF0ZWQgKFJQTSwgREVCLCBvcgotICAgICAgICAgICAgICAgIElQSyksIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4gdGFzawotICAgICAgICAgICAgICAgIGNyZWF0ZXMgdGhlIGFjdHVhbCBwYWNrYWdlcyBhbmQgcGxhY2VzIHRoZW0gaW4gdGhlCi0gICAgICAgICAgICAgICAgUGFja2FnZSBGZWVkIGFyZWEsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7VE1QRElSfS9kZXBsb3k8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgZGV0YWlsIG9uIHRoYXQgcGFydCBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgY3JlYXRpbmcgZmVlZHMgZGlyZWN0bHkgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGxveS8qPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgZG9lcyBub3QgZXhpc3QuCi0gICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIHN1Y2ggZmVlZHMgdXN1YWxseSByZXF1aXJlcyBzb21lIGtpbmQgb2YgZmVlZAotICAgICAgICAgICAgICAgICAgICBtYWludGVuYW5jZSBtZWNoYW5pc20gdGhhdCB3b3VsZCB1cGxvYWQgdGhlIG5ldyBwYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICBpbnRvIGFuIG9mZmljaWFsIHBhY2thZ2UgZmVlZCAoZS5nLiB0aGUKLSAgICAgICAgICAgICAgICAgICAgw4VuZ3N0csO2bSBkaXN0cmlidXRpb24pLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgaGlnaGx5IGRpc3RyaWJ1dGlvbi1zcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICBhbmQgdGh1cyBpcyBub3QgcHJvdmlkZWQgb3V0IG9mIHRoZSBib3guCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5JbWFnZSBHZW5lcmF0aW9uPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25jZSBwYWNrYWdlcyBhcmUgc3BsaXQgYW5kIHN0b3JlZCBpbiB0aGUgUGFja2FnZSBGZWVkcyBhcmVhLAotICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgQml0QmFrZSB0byBnZW5lcmF0ZSB0aGUKLSAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gaW1hZ2U6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iN2luIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGNvbnNpc3RzIG9mIHNldmVyYWwgc3RhZ2VzIGFuZAotICAgICAgICAgICAgICAgIGRlcGVuZHMgb24gc2V2ZXJhbCB0YXNrcyBhbmQgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIGNyZWF0ZXMgdGhlIHJvb3QgZmlsZXN5c3RlbSAoZmlsZSBhbmQgZGlyZWN0b3J5IHN0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICBmb3IgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhpcyB0YXNrIHVzZXMgc2V2ZXJhbCBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgb2YgcGFja2FnZXMgdG8gYWN0dWFsbHkgaW5zdGFsbDoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgb3V0IHRoZSBiYXNlIHNldCBvZiBwYWNrYWdlcyB0byBpbnN0YWxsIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBQYWNrYWdlIEZlZWRzIGFyZWEuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9FWENMVURFJz48ZmlsZW5hbWU+UEFDS0FHRV9FWENMVURFPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHBhY2thZ2VzIHRoYXQgc2hvdWxkIG5vdCBiZSBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgTW9zdCBvZiB0aGVzZSBmZWF0dXJlcyBtYXAgdG8gYWRkaXRpb25hbCBwYWNrYWdlcyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhY2thZ2UgYmFja2VuZCB0byB1c2UgYW5kIGNvbnNlcXVlbnRseQotICAgICAgICAgICAgICAgICAgICAgICAgaGVscHMgZGV0ZXJtaW5lIHdoZXJlIHRvIGxvY2F0ZSBwYWNrYWdlcyB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlIEZlZWRzIGFyZWEuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItSU1BR0VfTElOR1VBUyc+PGZpbGVuYW1lPklNQUdFX0xJTkdVQVM8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBEZXRlcm1pbmVzIHRoZSBsYW5ndWFnZShzKSBmb3Igd2hpY2ggYWRkaXRpb25hbAotICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ugc3VwcG9ydCBwYWNrYWdlcyBhcmUgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9JTlNUQUxMJz48ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGxpc3Qgb2YgcGFja2FnZXMgcGFzc2VkIHRvIHRoZSBwYWNrYWdlIG1hbmFnZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbnN0YWxsYXRpb24gaW50byB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2l0aAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9ST09URlMnPjxmaWxlbmFtZT5JTUFHRV9ST09URlM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW0gdW5kZXIgY29uc3RydWN0aW9uIGFuZAotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT4gdmFyaWFibGUgcHJvdmlkaW5nIHRoZQotICAgICAgICAgICAgICAgIGZpbmFsIGxpc3Qgb2YgcGFja2FnZXMgdG8gaW5zdGFsbCwgdGhlIHJvb3QgZmlsZSBzeXN0ZW0gaXMKLSAgICAgICAgICAgICAgICBjcmVhdGVkLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBQYWNrYWdlIGluc3RhbGxhdGlvbiBpcyB1bmRlciBjb250cm9sIG9mIHRoZSBwYWNrYWdlIG1hbmFnZXIKLSAgICAgICAgICAgICAgICAoZS5nLiBkbmYvcnBtLCBvcGtnLCBvciBhcHQvZHBrZykgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yCi0gICAgICAgICAgICAgICAgbm90IHBhY2thZ2UgbWFuYWdlbWVudCBpcyBlbmFibGVkIGZvciB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgICAgIEF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3MsIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBub3QKLSAgICAgICAgICAgICAgICBlbmFibGVkIGZvciB0aGUgdGFyZ2V0LCB0aGUgcGFja2FnZSBtYW5hZ2VyJ3MgZGF0YSBmaWxlcwotICAgICAgICAgICAgICAgIGFyZSBkZWxldGVkIGZyb20gdGhlIHJvb3QgZmlsZXN5c3RlbS4KLSAgICAgICAgICAgICAgICBBcyBwYXJ0IG9mIHRoZSBmaW5hbCBzdGFnZSBvZiBwYWNrYWdlIGluc3RhbGxhdGlvbiwgcG9zdGluc3RhbGwKLSAgICAgICAgICAgICAgICBzY3JpcHRzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHBhY2thZ2VzIGFyZSBydW4uCi0gICAgICAgICAgICAgICAgQW55IHNjcmlwdHMgdGhhdCBmYWlsIHRvIHJ1bgotICAgICAgICAgICAgICAgIG9uIHRoZSBidWlsZCBob3N0IGFyZSBydW4gb24gdGhlIHRhcmdldCB3aGVuIHRoZSB0YXJnZXQgc3lzdGVtCi0gICAgICAgICAgICAgICAgaXMgZmlyc3QgYm9vdGVkLgotICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgYQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtcmVhZC1vbmx5LXJvb3QtZmlsZXN5c3RlbSc+cmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbTwvdWxpbms+LAotICAgICAgICAgICAgICAgIGFsbCB0aGUgcG9zdCBpbnN0YWxsYXRpb24gc2NyaXB0cyBtdXN0IHN1Y2NlZWQgZHVyaW5nIHRoZQotICAgICAgICAgICAgICAgIHBhY2thZ2UgaW5zdGFsbGF0aW9uIHBoYXNlIHNpbmNlIHRoZSByb290IGZpbGVzeXN0ZW0gaXMKLSAgICAgICAgICAgICAgICByZWFkLW9ubHkuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzdGFnZXMgb2YgdGhlIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPiB0YXNrCi0gICAgICAgICAgICAgICAgaGFuZGxlIHBvc3QgcHJvY2Vzc2luZy4KLSAgICAgICAgICAgICAgICBQb3N0IHByb2Nlc3NpbmcgaW5jbHVkZXMgY3JlYXRpb24gb2YgYSBtYW5pZmVzdCBmaWxlIGFuZAotICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbnMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBtYW5pZmVzdCBmaWxlICg8ZmlsZW5hbWU+Lm1hbmlmZXN0PC9maWxlbmFtZT4pIHJlc2lkZXMKLSAgICAgICAgICAgICAgICBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZS4KLSAgICAgICAgICAgICAgICBUaGlzIGZpbGUgbGlzdHMgb3V0LCBsaW5lLWJ5LWxpbmUsIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgaXMgdXNlZnVsIGZvciB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3MsIGZvciBleGFtcGxlLCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gcnVuCi0gICAgICAgICAgICAgICAgc3BlY2lmaWMgdGVzdHMuCi0gICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9NQU5JRkVTVCc+PGZpbGVuYW1lPklNQUdFX01BTklGRVNUPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9wdGltaXppbmcgcHJvY2Vzc2VzIHJ1biBhY3Jvc3MgdGhlIGltYWdlIGluY2x1ZGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWtsaWJzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5wcmVsaW5rPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBwb3N0LXByb2Nlc3NpbmcgY29tbWFuZHMgYXMgZGVmaW5lZCBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5ST09URlNfUE9TVFBST0NFU1NfQ09NTUFORDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWtsaWJzPC9maWxlbmFtZT4gcHJvY2VzcyBvcHRpbWl6ZXMgdGhlIHNpemUKLSAgICAgICAgICAgICAgICBvZiB0aGUgbGlicmFyaWVzLCB3aGlsZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHJlbGluazwvZmlsZW5hbWU+IHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBkeW5hbWljCi0gICAgICAgICAgICAgICAgbGlua2luZyBvZiBzaGFyZWQgbGlicmFyaWVzIHRvIHJlZHVjZSBzdGFydCB1cCB0aW1lIG9mCi0gICAgICAgICAgICAgICAgZXhlY3V0YWJsZXMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIHRoZSByb290IGZpbGVzeXN0ZW0gaXMgYnVpbHQsIHByb2Nlc3NpbmcgYmVnaW5zIG9uCi0gICAgICAgICAgICAgICAgdGhlIGltYWdlIHRocm91Z2ggdGhlIDxmaWxlbmFtZT5kb19pbWFnZTwvZmlsZW5hbWU+IHRhc2suCi0gICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBydW5zIGFueSBwcmUtcHJvY2Vzc2luZyBjb21tYW5kcyBhcyBkZWZpbmVkCi0gICAgICAgICAgICAgICAgYnkgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1BSRVBST0NFU1NfQ09NTUFORCc+PGZpbGVuYW1lPklNQUdFX1BSRVBST0NFU1NfQ09NTUFORDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBiZWZvcmUKLSAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBmaW5hbCBpbWFnZSBvdXRwdXQKLSAgICAgICAgICAgICAgICBmaWxlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19pbWFnZTwvZmlsZW5hbWU+IHRhc2sgZHluYW1pY2FsbHkgY3JlYXRlcwotICAgICAgICAgICAgICAgIG90aGVyIDxmaWxlbmFtZT5kb19pbWFnZV8qPC9maWxlbmFtZT4gdGFza3MgYXMgbmVlZGVkLCB3aGljaAotICAgICAgICAgICAgICAgIGluY2x1ZGUgY29tcHJlc3NpbmcgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZSB0byByZWR1Y2UgdGhlCi0gICAgICAgICAgICAgICAgb3ZlcmFsbCBzaXplIG9mIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyB0dXJucyBldmVyeXRoaW5nIGludG8gYW4gaW1hZ2UgZmlsZSBvciBhIHNldCBvZgotICAgICAgICAgICAgICAgIGltYWdlIGZpbGVzLgotICAgICAgICAgICAgICAgIFRoZSBmb3JtYXRzIHVzZWQgZm9yIHRoZSByb290IGZpbGVzeXN0ZW0gZGVwZW5kIG9uIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZmluYWwgdGFzayBpbnZvbHZlZCBpbiBpbWFnZSBjcmVhdGlvbiBpcyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPiB0YXNrLgotICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb21wbGV0ZXMgdGhlIGltYWdlIGJ5IGFwcGx5aW5nIGFueSBpbWFnZQotICAgICAgICAgICAgICAgIHBvc3QgcHJvY2Vzc2luZyBhcyBkZWZpbmVkIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBjcmVhdGVkIHRoZSBmaW5hbCBpbWFnZSBvdXRwdXQKLSAgICAgICAgICAgICAgICBmaWxlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIGVudGlyZSBpbWFnZSBnZW5lcmF0aW9uIHByb2Nlc3MgaXMgcnVuIHVuZGVyIFBzZXVkby4KLSAgICAgICAgICAgICAgICBSdW5uaW5nIHVuZGVyIFBzZXVkbyBlbnN1cmVzIHRoYXQgdGhlIGZpbGVzIGluIHRoZSByb290Ci0gICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBoYXZlIGNvcnJlY3Qgb3duZXJzaGlwLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+U0RLIEdlbmVyYXRpb248L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIEJpdEJha2UgdG8gZ2VuZXJhdGUgdGhlCi0gICAgICAgICAgICAgICAgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIGluc3RhbGxlciBzY3JpcHQgZm9yIGJvdGggdGhlCi0gICAgICAgICAgICAgICAgc3RhbmRhcmQgYW5kIGV4dGVuc2libGUgU0RLczoKLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIiBhbGlnbj0iY2VudGVyIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGFkdmFudGFnZXMgZ2FpbmVkIHdoZW4gYnVpbGRpbmcgYQotICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzaywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspCi0gICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCi0gICAgICAgICAgICA8L25vdGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIExpa2UgaW1hZ2UgZ2VuZXJhdGlvbiwgdGhlIFNESyBzY3JpcHQgcHJvY2VzcyBjb25zaXN0cyBvZgotICAgICAgICAgICAgICAgIHNldmVyYWwgc3RhZ2VzIGFuZCBkZXBlbmRzIG9uIG1hbnkgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiB0YXNrcyB1c2UgdGhlc2UKLSAgICAgICAgICAgICAgICBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvIGFjdHVhbGx5Ci0gICAgICAgICAgICAgICAgaW5zdGFsbC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIHZhcmlhYmxlcyBsaXN0ZWQgaW4gdGhlIGZpZ3VyZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gdGFzayBoZWxwcyBjcmVhdGUKLSAgICAgICAgICAgICAgICB0aGUgc3RhbmRhcmQgU0RLIGFuZCBoYW5kbGVzIHR3byBwYXJ0czogYSB0YXJnZXQgcGFydCBhbmQgYQotICAgICAgICAgICAgICAgIGhvc3QgcGFydC4KLSAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IHBhcnQgaXMgdGhlIHBhcnQgYnVpbHQgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgYW5kCi0gICAgICAgICAgICAgICAgaW5jbHVkZXMgbGlicmFyaWVzIGFuZCBoZWFkZXJzLgotICAgICAgICAgICAgICAgIFRoZSBob3N0IHBhcnQgaXMgdGhlIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiB0YXNrIGhlbHBzIGNyZWF0ZQotICAgICAgICAgICAgICAgIHRoZSBleHRlbnNpYmxlIFNESyBhbmQgaGFuZGxlcyBob3N0IGFuZCB0YXJnZXQgcGFydHMKLSAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSB0aGFuIGl0cyBjb3VudGVyIHBhcnQgZG9lcyBmb3IgdGhlIHN0YW5kYXJkIFNESy4KLSAgICAgICAgICAgICAgICBGb3IgdGhlIGV4dGVuc2libGUgU0RLLCB0aGUgdGFzayBlbmNhcHN1bGF0ZXMgdGhlIGJ1aWxkIHN5c3RlbSwKLSAgICAgICAgICAgICAgICB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCAoaG9zdCBhbmQgdGFyZ2V0KSBmb3IgdGhlIFNESy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBTREsgYmVpbmcgY29uc3RydWN0ZWQsIHRoZQotICAgICAgICAgICAgICAgIHRhc2tzIHBlcmZvcm0gc29tZSBjbGVhbnVwIGFmdGVyIHdoaWNoIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYW5kIGFueSBuZWVkZWQgY29uZmlndXJhdGlvbiBmaWxlcwotICAgICAgICAgICAgICAgIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBvdXRwdXQgaXMgdGhlIENyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgdG9vbGNoYWluIGluc3RhbGxhdGlvbiBzY3JpcHQgKDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlKSwKLSAgICAgICAgICAgICAgICB3aGljaCBpbmNsdWRlcyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz4KLSAgICAgICAgICAgIDx0aXRsZT5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBlYWNoIHRhc2sgdGhhdCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCBCaXRCYWtlIHdyaXRlcyBhCi0gICAgICAgICAgICAgICAgc3RhbXAgZmlsZSBpbnRvIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUFNfRElSJz48ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBUaGUgYmVnaW5uaW5nIG9mIHRoZSBzdGFtcCBmaWxlJ3MgZmlsZW5hbWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBhbmQgdGhlIGVuZCBvZiB0aGUgbmFtZSBjb25zaXN0cyBvZiB0aGUgdGFzaydzIG5hbWUKLSAgICAgICAgICAgICAgICBhbmQgY3VycmVudAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjY2hlY2tzdW1zJz5pbnB1dCBjaGVja3N1bTwvdWxpbms+LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGlzIG5hbWluZyBzY2hlbWUgYXNzdW1lcyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX1NJR05BVFVSRV9IQU5ETEVSJz48ZmlsZW5hbWU+QkJfU0lHTkFUVVJFX0hBTkRMRVI8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGlzICJPRUJhc2ljSGFzaCIsIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIGNhc2UgaW4KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudCBPcGVuRW1iZWRkZWQuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIFRvIGRldGVybWluZSBpZiBhIHRhc2sgbmVlZHMgdG8gYmUgcmVydW4sIEJpdEJha2UgY2hlY2tzIGlmIGEKLSAgICAgICAgICAgICAgICBzdGFtcCBmaWxlIHdpdGggYSBtYXRjaGluZyBpbnB1dCBjaGVja3N1bSBleGlzdHMgZm9yIHRoZSB0YXNrLgotICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBzdGFtcCBmaWxlIGV4aXN0cywgdGhlIHRhc2sncyBvdXRwdXQgaXMgYXNzdW1lZCB0bwotICAgICAgICAgICAgICAgIGV4aXN0IGFuZCBzdGlsbCBiZSB2YWxpZC4KLSAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlIHRhc2sgaXMgcmVydW4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBzdGFtcCBtZWNoYW5pc20gaXMgbW9yZSBnZW5lcmFsIHRoYW4gdGhlIHNoYXJlZAotICAgICAgICAgICAgICAgICAgICBzdGF0ZSAoc3N0YXRlKSBjYWNoZSBtZWNoYW5pc20gZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2V0c2NlbmUtdGFza3MtYW5kLXNoYXJlZC1zdGF0ZSc+U2V0c2NlbmUgVGFza3MgYW5kIFNoYXJlZCBTdGF0ZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYXZvaWRzIHJlcnVubmluZyBhbnkgdGFzayB0aGF0IGhhcyBhIHZhbGlkCi0gICAgICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUsIG5vdCBqdXN0IHRhc2tzIHRoYXQgY2FuIGJlIGFjY2VsZXJhdGVkIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgdGhlIHNzdGF0ZSBjYWNoZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkhvd2V2ZXIsIHlvdSBzaG91bGQgcmVhbGl6ZSB0aGF0IHN0YW1wIGZpbGVzIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgc2VydmUgYXMgYSBtYXJrZXIgdGhhdCBzb21lIHdvcmsgaGFzIGJlZW4gZG9uZSBhbmQgdGhhdAotICAgICAgICAgICAgICAgICAgICB0aGVzZSBmaWxlcyBkbyBub3QgcmVjb3JkIHRhc2sgb3V0cHV0LgotICAgICAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIHRhc2sgb3V0cHV0IHdvdWxkIHVzdWFsbHkgYmUgc29tZXdoZXJlIGluCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgKGUuZy4gaW4gc29tZSByZWNpcGUncwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uKQotICAgICAgICAgICAgICAgICAgICBXaGF0IHRoZSBzc3RhdGUgY2FjaGUgbWVjaGFuaXNtIGFkZHMgaXMgYSB3YXkgdG8gY2FjaGUgdGFzawotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdGhhdCBjYW4gdGhlbiBiZSBzaGFyZWQgYmV0d2VlbiBidWlsZCBtYWNoaW5lcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICBTaW5jZSA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+IGlzIHVzdWFsbHkgYSBzdWJkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4sIHJlbW92aW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHdpbGwgYWxzbyByZW1vdmUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+LCB3aGljaCBtZWFucyB0YXNrcyB3aWxsCi0gICAgICAgICAgICAgICAgcHJvcGVybHkgYmUgcmVydW4gdG8gcmVwb3B1bGF0ZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHNvbWUgdGFzayB0byBhbHdheXMgYmUgY29uc2lkZXJlZCAib3V0IG9mIGRhdGUiLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gbWFyayBpdCB3aXRoIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPjxmaWxlbmFtZT5ub3N0YW1wPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmZsYWcuCi0gICAgICAgICAgICAgICAgSWYgc29tZSBvdGhlciB0YXNrIGRlcGVuZHMgb24gc3VjaCBhIHRhc2ssIHRoZW4gdGhhdCB0YXNrIHdpbGwKLSAgICAgICAgICAgICAgICBhbHNvIGFsd2F5cyBiZSBjb25zaWRlcmVkIG91dCBvZiBkYXRlLCB3aGljaCBtaWdodCBub3QgYmUgd2hhdAotICAgICAgICAgICAgICAgIHlvdSB3YW50LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdmlldyBpbmZvcm1hdGlvbiBhYm91dCBhIHRhc2sncwotICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzZXRzY2VuZS10YXNrcy1hbmQtc2hhcmVkLXN0YXRlJz4KLSAgICAgICAgICAgIDx0aXRsZT5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGRlc2NyaXB0aW9uIG9mIHRhc2tzIHNvIGZhciBhc3N1bWVzIHRoYXQgQml0QmFrZSBuZWVkcyB0bwotICAgICAgICAgICAgICAgIGJ1aWxkIGV2ZXJ5dGhpbmcgYW5kIHRoZXJlIGFyZSBubyBwcmVidWlsdCBvYmplY3RzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgc3VwcG9ydCBza2lwcGluZyB0YXNrcyBpZiBwcmVidWlsdCBvYmplY3RzIGFyZQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICBUaGVzZSBvYmplY3RzIGFyZSB1c3VhbGx5IG1hZGUgYXZhaWxhYmxlIGluIHRoZSBmb3JtIG9mIGEKLSAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgY2FjaGUuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB2YXJpYWJsZXMgYWZmZWN0aW5nIHNzdGF0ZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBpZGVhIG9mIGEgc2V0c2NlbmUgdGFzayAoaS5lCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+X3NldHNjZW5lPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgaXMgYSB2ZXJzaW9uIG9mIHRoZSB0YXNrIHdoZXJlCi0gICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBidWlsZGluZyBzb21ldGhpbmcsIEJpdEJha2UgY2FuIHNraXAgdG8gdGhlIGVuZAotICAgICAgICAgICAgICAgIHJlc3VsdCBhbmQgc2ltcGx5IHBsYWNlIGEgc2V0IG9mIGZpbGVzIGludG8gc3BlY2lmaWMgbG9jYXRpb25zCi0gICAgICAgICAgICAgICAgYXMgbmVlZGVkLgotICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIGl0IG1ha2VzIHNlbnNlIHRvIGhhdmUgYSBzZXRzY2VuZSB0YXNrIHZhcmlhbnQKLSAgICAgICAgICAgICAgICAoZS5nLiBnZW5lcmF0aW5nIHBhY2thZ2UgZmlsZXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHRhc2spLgotICAgICAgICAgICAgICAgIEluIG90aGVyIGNhc2VzLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlLCAoZS5nLiBhCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIG9yCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2spIHNpbmNlIHRoZSB3b3JrIGludm9sdmVkIHdvdWxkIGJlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbgotICAgICAgICAgICAgICAgIHRoZSB1bmRlcmx5aW5nIHRhc2suCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB0aGUgY29tbW9uIHRhc2tzIHRoYXQgaGF2ZQotICAgICAgICAgICAgICAgIHNldHNjZW5lIHZhcmlhbnRzIGFyZSA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IHRoZXNlIGFyZSBtb3N0IG9mIHRoZSB0YXNrcyB3aG9zZSBvdXRwdXQgaXMgYW4KLSAgICAgICAgICAgICAgICBlbmQgcmVzdWx0LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMga25vd2xlZGdlIG9mIHRoZSByZWxhdGlvbnNoaXAKLSAgICAgICAgICAgICAgICBiZXR3ZWVuIHRoZXNlIHRhc2tzIGFuZCBvdGhlciB0YXNrcyB0aGF0IHByZWNlZGUgdGhlbS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgQml0QmFrZSBydW5zCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU8L2ZpbGVuYW1lPiBmb3IKLSAgICAgICAgICAgICAgICBzb21ldGhpbmcsIHRoZXJlIGlzIGxpdHRsZSBwb2ludCBpbiBydW5uaW5nIGFueSBvZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+IHRhc2tzLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gbmVlZHMgdG8gYmUgcnVuLAotICAgICAgICAgICAgICAgIEJpdEJha2Ugd291bGQgbmVlZCB0byBydW4gdGhvc2Ugb3RoZXIgdGFza3MuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEl0IGJlY29tZXMgbW9yZSBjb21wbGljYXRlZCBpZiBldmVyeXRoaW5nIGNhbiBjb21lIGZyb20gYW4KLSAgICAgICAgICAgICAgICBzc3RhdGUgY2FjaGUgYmVjYXVzZSBzb21lIG9iamVjdHMgYXJlIHNpbXBseSBub3QgcmVxdWlyZWQgYXQKLSAgICAgICAgICAgICAgICBhbGwuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBkbyBub3QgbmVlZCBhIGNvbXBpbGVyIG9yIG5hdGl2ZSB0b29scywgc3VjaAotICAgICAgICAgICAgICAgIGFzIHF1aWx0LCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGNvbXBpbGUgb3IgcGF0Y2guCi0gICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPiBwYWNrYWdlcyBhcmUKLSAgICAgICAgICAgICAgICBhdmFpbGFibGUgZnJvbSBzc3RhdGUsIEJpdEJha2UgZG9lcyBub3QgbmVlZCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgZGF0YS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gaGFuZGxlIGFsbCB0aGVzZSBjb21wbGV4aXRpZXMsIEJpdEJha2UgcnVucyBpbiB0d28gcGhhc2VzLgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBpcyB0aGUgInNldHNjZW5lIiBzdGFnZS4KLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBzdGFnZSwgQml0QmFrZSBmaXJzdCBjaGVja3MgdGhlIHNzdGF0ZSBjYWNoZSBmb3IKLSAgICAgICAgICAgICAgICBhbnkgdGFyZ2V0cyBpdCBpcyBwbGFubmluZyB0byBidWlsZC4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgYSBmYXN0IGNoZWNrIHRvIHNlZSBpZiB0aGUgb2JqZWN0IGV4aXN0cyByYXRoZXIKLSAgICAgICAgICAgICAgICB0aGFuIGEgY29tcGxldGUgZG93bmxvYWQuCi0gICAgICAgICAgICAgICAgSWYgbm90aGluZyBleGlzdHMsIHRoZSBzZWNvbmQgcGhhc2UsIHdoaWNoIGlzIHRoZSBzZXRzY2VuZQotICAgICAgICAgICAgICAgIHN0YWdlLCBjb21wbGV0ZXMgYW5kIHRoZSBtYWluIGJ1aWxkIHByb2NlZWRzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJZiBvYmplY3RzIGFyZSBmb3VuZCBpbiB0aGUgc3N0YXRlIGNhY2hlLCB0aGUgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHdvcmtzIGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQgdGFyZ2V0cyBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICBieSB0aGUgdXNlci4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgYW4gaW1hZ2UgaXMgYmVpbmcgYnVpbHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgICAgICBzeXN0ZW0gZmlyc3QgbG9va3MgZm9yIHRoZSBwYWNrYWdlcyBuZWVkZWQgZm9yIHRoYXQgaW1hZ2UgYW5kCi0gICAgICAgICAgICAgICAgdGhlIHRvb2xzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgSWYgdGhvc2UgYXJlIGF2YWlsYWJsZSwgdGhlIGNvbXBpbGVyIGlzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgVGh1cywgdGhlIGNvbXBpbGVyIGlzIG5vdCBldmVuIGRvd25sb2FkZWQuCi0gICAgICAgICAgICAgICAgSWYgc29tZXRoaW5nIHdhcyBmb3VuZCB0byBiZSB1bmF2YWlsYWJsZSwgb3IgdGhlIGRvd25sb2FkIG9yCi0gICAgICAgICAgICAgICAgc2V0c2NlbmUgdGFzayBmYWlscywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGhlbiB0cmllcwotICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLCBzdWNoIGFzIHRoZSBjb21waWxlciwgZnJvbSB0aGUgY2FjaGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBhdmFpbGFiaWxpdHkgb2Ygb2JqZWN0cyBpbiB0aGUgc3N0YXRlIGNhY2hlIGlzIGhhbmRsZWQgYnkKLSAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX0hBU0hDSEVDS19GVU5DVElPTic+PGZpbGVuYW1lPkJCX0hBU0hDSEVDS19GVU5DVElPTjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGhlIG9iamVjdHMgdGhhdCBhcmUgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfU0VUU0NFTkVfREVQVkFMSUQnPjxmaWxlbmFtZT5CQl9TRVRTQ0VORV9ERVBWQUxJRDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbgotICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgZm9sbG93ZWQsIGFuZCB3aGV0aGVyIGZvciBhbnkgZ2l2ZW4KLSAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAgdGhlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHBhc3NlZC4KLSAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIFRydWUgb3IgRmFsc2UgdmFsdWUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0naW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5JbWFnZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGltYWdlcyBwcm9kdWNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgYXJlIGNvbXByZXNzZWQgZm9ybXMgb2YgdGhlCi0gICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gdGhhdCBhcmUgcmVhZHkgdG8gYm9vdCBvbiBhIHRhcmdldCBkZXZpY2UuCi0gICAgICAgICAgICBZb3UgY2FuIHNlZSBmcm9tIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+Ci0gICAgICAgICAgICB0aGF0IEJpdEJha2Ugb3V0cHV0LCBpbiBwYXJ0LCBjb25zaXN0cyBvZiBpbWFnZXMuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gaXMgZ29pbmcgdG8gbG9vayBtb3JlIGNsb3NlbHkgYXQgdGhpcyBvdXRwdXQ6Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW1hZ2VzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjUuNWluIiBkZXB0aD0iNS41aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgZXhhbXBsZSBpbWFnZXMgdGhhdCB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcywKLSAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IiBjaGFwdGVyLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbWFnZXMgYXJlIHdyaXR0ZW4gb3V0IHRvIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgaW5zaWRlIHRoZSA8ZmlsZW5hbWU+dG1wL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi88L2ZpbGVuYW1lPgotICAgICAgICAgICAgZm9sZGVyIGFzIHNob3duIGluIHRoZSBmaWd1cmUuCi0gICAgICAgICAgICBUaGlzIGZvbGRlciBjb250YWlucyBhbnkgZmlsZXMgZXhwZWN0ZWQgdG8gYmUgbG9hZGVkIG9uIHRoZQotICAgICAgICAgICAgdGFyZ2V0IGRldmljZS4KLSAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksCi0gICAgICAgICAgICB3aGlsZSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX0lNQUdFJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9JTUFHRTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcnkgY29udGFpbmluZyBpbWFnZXMgZm9yCi0gICAgICAgICAgICB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5rZXJuZWwtaW1hZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBBIGtlcm5lbCBiaW5hcnkgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfSU1BR0VUWVBFJz48ZmlsZW5hbWU+S0VSTkVMX0lNQUdFVFlQRTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBzZXR0aW5nIGRldGVybWluZXMgdGhlIG5hbWluZyBzY2hlbWUgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoYXQgdmFyaWFibGUsIHRoZSBmaWxlIGNvdWxkIGJlZ2luIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgYSB2YXJpZXR5IG9mIG5hbWluZyBzdHJpbmdzLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBjYW4gY29udGFpbiBtdWx0aXBsZSBpbWFnZSBmaWxlcyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+cm9vdC1maWxlc3lzdGVtLWltYWdlPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgUm9vdCBmaWxlc3lzdGVtcyBmb3IgdGhlIHRhcmdldCBkZXZpY2UgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiouZXh0MzwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4qLmJ6MjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVzKS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBzZXR0aW5nIGRldGVybWluZXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZQotICAgICAgICAgICAgICAgICAgICB0eXBlLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBjYW4gY29udGFpbiBtdWx0aXBsZSByb290IGZpbGVzeXN0ZW1zIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5rZXJuZWwtbW9kdWxlczwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFRhcmJhbGxzIHRoYXQgY29udGFpbiBhbGwgdGhlIG1vZHVsZXMgYnVpbHQgZm9yIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgIEtlcm5lbCBtb2R1bGUgdGFyYmFsbHMgZXhpc3QgZm9yIGxlZ2FjeSBwdXJwb3NlcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHN1cHByZXNzZWQgYnkgc2V0dGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1PRFVMRV9UQVJCQUxMX0RFUExPWSc+PGZpbGVuYW1lPk1PRFVMRV9UQVJCQUxMX0RFUExPWTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMCIuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbHMKLSAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBtYWNoaW5lLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJvb3Rsb2FkZXJzPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgQm9vdGxvYWRlcnMgc3VwcG9ydGluZyB0aGUgaW1hZ2UsIGlmIGFwcGxpY2FibGUgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldCBtYWNoaW5lLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBjYW4gY29udGFpbiBtdWx0aXBsZSBib290bG9hZGVycyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+c3ltbGlua3M8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGZvbGRlciBjb250YWlucwotICAgICAgICAgICAgICAgICAgICBhIHN5bWJvbGljIGxpbmsgdGhhdCBwb2ludHMgdG8gdGhlIG1vc3QgcmVjZW50bHkgYnVpbHQgZmlsZQotICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCBtYWNoaW5lLgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBsaW5rcyBtaWdodCBiZSB1c2VmdWwgZm9yIGV4dGVybmFsIHNjcmlwdHMgdGhhdAotICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIG9idGFpbiB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgZWFjaCBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3Nkay1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICA8dGl0bGU+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+LAotICAgICAgICAgICAgdGhlIG91dHB1dCBsYWJlbGVkICJBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREsiIHJlcHJlc2VudHMgYW4KLSAgICAgICAgICAgIFNESy4KLSAgICAgICAgICAgIFRoZSBTREsgZ2VuZXJhdGlvbiBwcm9jZXNzIGRpZmZlcnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91IGJ1aWxkCi0gICAgICAgICAgICBhIHN0YW5kYXJkIFNESwotICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+KQotICAgICAgICAgICAgb3IgYW4gZXh0ZW5zaWJsZSBTREsKLSAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGlzIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGlzIG91dHB1dDoKLSAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zZGsucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOWluIiBkZXB0aD0iNy4yNWluIiAvPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgc3BlY2lmaWMgZm9ybSBvZiB0aGlzIG91dHB1dCBpcyBhIHNlbGYtZXh0cmFjdGluZwotICAgICAgICAgICAgU0RLIGluc3RhbGxlciAoPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPikgdGhhdCwgd2hlbiBydW4sCi0gICAgICAgICAgICBpbnN0YWxscyB0aGUgU0RLLCB3aGljaCBjb25zaXN0cyBvZiBhIGNyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICB0b29sY2hhaW4sIGEgc2V0IG9mIGxpYnJhcmllcyBhbmQgaGVhZGVycywgYW5kIGFuIFNESwotICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgUnVubmluZyB0aGlzIGluc3RhbGxlciBlc3NlbnRpYWxseSBzZXRzIHVwIHlvdXIKLSAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICAgICAgWW91IGNhbiB0aGluayBvZiB0aGUgY3Jvc3MtdG9vbGNoYWluIGFzIHRoZSAiaG9zdCIKLSAgICAgICAgICAgIHBhcnQgYmVjYXVzZSBpdCBydW5zIG9uIHRoZSBTREsgbWFjaGluZS4KLSAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIGxpYnJhcmllcyBhbmQgaGVhZGVycyBhcyB0aGUgInRhcmdldCIKLSAgICAgICAgICAgIHBhcnQgYmVjYXVzZSB0aGV5IGFyZSBidWlsdCBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgaXMgYWRkZWQgc28gdGhhdCB5b3UgY2FuIGluaXRpYWxpemUKLSAgICAgICAgICAgIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgdXNpbmcgdGhlIHRvb2xzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBzZXZlcmFsIG1ldGhvZHMgYnkgd2hpY2ggeW91IGNhbgotICAgICAgICAgICAgICAgICAgICBzZXQgdXAgdGhpcyBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgbWV0aG9kcyBpbmNsdWRlIGRvd25sb2FkaW5nIHByZS1idWlsdCBTREsgaW5zdGFsbGVycwotICAgICAgICAgICAgICAgICAgICBvciBidWlsZGluZyBhbmQgaW5zdGFsbGluZyB5b3VyIG93biBTREsgaW5zdGFsbGVyLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgdXAgYSBjcm9zcy1kZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSBidWlsdCwgdGhlIFNESyBpbnN0YWxsZXJzIGFyZSB3cml0dGVuIG91dCB0byB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvc2RrPC9maWxlbmFtZT4gZm9sZGVyIGluc2lkZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIGFzIHNob3duIGluIHRoZSBmaWd1cmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIHNlY3Rpb24uCi0gICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgU0RLLCBzZXZlcmFsIHZhcmlhYmxlcyBleGlzdCB0aGF0IGhlbHAKLSAgICAgICAgICAgIGNvbmZpZ3VyZSB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCBhIHN0YW5kYXJkCi0gICAgICAgICAgICBTREs6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgbWFjaGluZQotICAgICAgICAgICAgICAgICAgICBvbiB3aGljaCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMgYXJlIHJ1biB0bwotICAgICAgICAgICAgICAgICAgICBjcmVhdGUgcGFja2FnZXMgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5TREtJTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlICJ0YXJnZXQiIHBhcnQKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIFNESy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1UT09MQ0hBSU5fSE9TVF9UQVNLJz48ZmlsZW5hbWU+VE9PTENIQUlOX0hPU1RfVEFTSzwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgTGlzdHMgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZSBob3N0Ci0gICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlIFNESyAoaS5lLiB0aGUgcGFydCB0aGF0IHJ1bnMgb24KLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIDxyZXBsYWNlYWJsZT5pbWFnZW5hbWU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSB0aGUgU0RLLCBhIHNldCBvZiBkZWZhdWx0IHBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgIGFwcGx5LgotICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGFsbG93cyB5b3UgdG8gYWRkIG1vcmUgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItVE9PTENIQUlOX1RBUkdFVF9UQVNLJz48ZmlsZW5hbWU+VE9PTENIQUlOX1RBUkdFVF9UQVNLPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIHRhcmdldCBwYXJ0Ci0gICAgICAgICAgICAgICAgICAgIG9mIHRoZSBTREsgKGkuZS4gdGhlIHBhcnQgYnVpbHQgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICB0YXJnZXQgaGFyZHdhcmUpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES1BBVEgnPjxmaWxlbmFtZT5TREtQQVRIPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSBkZWZhdWx0IFNESyBpbnN0YWxsYXRpb24gcGF0aCBvZmZlcmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgVGhpcyBuZXh0IGxpc3QsIHNob3dzIHRoZSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGV4dGVuc2libGUKLSAgICAgICAgICAgIFNESzoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19FWFRfVFlQRSc+PGZpbGVuYW1lPlNES19FWFRfVFlQRTwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbHMgd2hldGhlciBvciBub3Qgc2hhcmVkIHN0YXRlIGFydGlmYWN0cyBhcmUgY29waWVkCi0gICAgICAgICAgICAgICAgICAgIGludG8gdGhlIGV4dGVuc2libGUgU0RLLgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBhbGwgcmVxdWlyZWQgc2hhcmVkIHN0YXRlIGFydGlmYWN0cyBhcmUgY29waWVkCi0gICAgICAgICAgICAgICAgICAgIGludG8gdGhlIFNESy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfSU5DTFVERV9QS0dEQVRBJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfUEtHREFUQTwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHBhY2thZ2VkYXRhIHdpbGwgYmUgaW5jbHVkZWQgaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIGV4dGVuc2libGUgU0RLIGZvciBhbGwgcmVjaXBlcyBpbiB0aGUgIndvcmxkIiB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0lOQ0xVREVfVE9PTENIQUlOJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfVE9PTENIQUlOPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgdGhlIHRvb2xjaGFpbiB3aWxsIGJlIGluY2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgdGhlIGV4dGVuc2libGUgU0RLLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19MT0NBTF9DT05GX1dISVRFTElTVCc+PGZpbGVuYW1lPlNES19MT0NBTF9DT05GX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBhbGxvd2VkIHRocm91Z2ggZnJvbSB0aGUgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1Q8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiB2YXJpYWJsZXMgbm90IGFsbG93ZWQgdGhyb3VnaCBmcm9tIHRoZSBidWlsZAotICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19JTkhFUklUX0JMQUNLTElTVCc+PGZpbGVuYW1lPlNES19JTkhFUklUX0JMQUNLTElTVDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGNsYXNzZXMgdG8gcmVtb3ZlIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhFUklUJz48ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSBnbG9iYWxseSB3aXRoaW4gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLTwvY2hhcHRlcj4KLTwhLS0KLXZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKLS0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sCmluZGV4IDVmM2YxNzMuLjExZGZjNWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKQEAgLTEzLDExICsxMywxMSBAQAogICAgICAgICA8L3F1ZXN0aW9uPgogICAgICAgICA8YW5zd2VyPgogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIHRlcm0gIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Bva3knPlBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBUaGUgdGVybSAiPGxpbmsgbGluaz0ncG9reSc+UG9reTwvbGluaz4iCiAgICAgICAgICAgICAgICAgcmVmZXJzIHRvIHRoZSBzcGVjaWZpYyByZWZlcmVuY2UgYnVpbGQgc3lzdGVtIHRoYXQKICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcy4KLSAgICAgICAgICAgICAgICBQb2t5IGlzIGJhc2VkIG9uIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I29lLWNvcmUnPk9FLUNvcmU8L3VsaW5rPgotICAgICAgICAgICAgICAgIGFuZCA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBQb2t5IGlzIGJhc2VkIG9uIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+CisgICAgICAgICAgICAgICAgYW5kIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4uCiAgICAgICAgICAgICAgICAgVGh1cywgdGhlIGdlbmVyaWMgdGVybSB1c2VkIGhlcmUgZm9yIHRoZSBidWlsZCBzeXN0ZW0gaXMKICAgICAgICAgICAgICAgICB0aGUgIk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgICAgIERldmVsb3BtZW50IGluIHRoZSBZb2N0byBQcm9qZWN0IHVzaW5nIFBva3kgaXMgY2xvc2VseSB0aWVkIHRvIE9wZW5FbWJlZGRlZCwgd2l0aApAQCAtNjAsNyArNjAsNyBAQAogICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBhcmVhcyB0aGF0IGhlbHAgd2l0aCBzdGFiaWxpdHk7CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHRlYW0ga2VlcHMKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I29lLWNvcmUnPk9FLUNvcmU8L3VsaW5rPiBzbWFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4gc21hbGwKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBmb2N1c2VkLCBjb250YWluaW5nIGFyb3VuZCA4MzAgcmVjaXBlcyBhcyBvcHBvc2VkIHRvIHRoZSB0aG91c2FuZHMKICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBpbiBvdGhlciBPcGVuRW1iZWRkZWQgY29tbXVuaXR5IGxheWVycy4KICAgICAgICAgICAgICAgICAgICAgICAgIEtlZXBpbmcgaXQgc21hbGwgbWFrZXMgaXQgZWFzeSB0byB0ZXN0IGFuZCBtYWludGFpbi48L3BhcmE+PC9saXN0aXRlbT4KQEAgLTg2LDcgKzg2LDcgQEAKICAgICAgICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgbGF5ZXIgZm9yIGl0LgogICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYSBCU1AgbGF5ZXIsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBhbmQgdGhlCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgYW5kIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPHBhcmE+CkBAIC0xNDMsNyArMTQzLDcgQEAKICAgICAgICAgICAgICAgICBUbyBhZGQgYSBwYWNrYWdlLCB5b3UgbmVlZCB0byBjcmVhdGUgYSBCaXRCYWtlIHJlY2lwZS4KICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIEJpdEJha2UgcmVjaXBlLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I25ldy1yZWNpcGUtd3JpdGluZy1hLW5ldy1yZWNpcGUnPldyaXRpbmcgYSBOZXcgUmVjaXBlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9hbnN3ZXI+CiAgICAgPC9xYW5kYWVudHJ5PgpAQCAtMjM1LDggKzIzNSw5IEBACiAgICAgPHFhbmRhZW50cnk+CiAgICAgICAgIDxxdWVzdGlvbj4KICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEkgc2VlIGxvdHMgb2YgNDA0IHJlc3BvbnNlcyBmb3IgZmlsZXMgb24KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JllPQ1RPX0hPTUVfVVJMOy9zb3VyY2VzLyo8L2ZpbGVuYW1lPi4gSXMgc29tZXRoaW5nIHdyb25nPworICAgICAgICAgICAgICAgIEkgc2VlIGxvdHMgb2YgNDA0IHJlc3BvbnNlcyBmb3IgZmlsZXMgd2hlbiB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGlzIHRyeWluZyB0byBkb3dubG9hZCBzb3VyY2VzLgorICAgICAgICAgICAgICAgIElzIHNvbWV0aGluZyB3cm9uZz8KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9xdWVzdGlvbj4KICAgICAgICAgPGFuc3dlcj4KQEAgLTQxNiw5ICs0MTcsOSBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiBsaWNlbnNpbmcgaW4gdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xpY2Vuc2luZyc+TGljZW5zaW5nPC91bGluaz4iCi0gICAgICAgICAgICAgICAgYW5kICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb25zLCBib3RoIG9mIHdoaWNoIGFyZSBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdsaWNlbnNpbmcnPkxpY2Vuc2luZzwvbGluaz4iIHNlY3Rpb24gYW5kIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24sIHdoaWNoIGlzIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCiAgICAgICAgICAgICAgICAgTWFudWFsLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2Fuc3dlcj4KQEAgLTU0Nyw3ICs1NDgsNyBAQAogICAgICAgICAgICAgICAgIGZpbGUgdG8gaW5jbHVkZSBmcm9tIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGU8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluCiAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTY5OSwxMCArNzAwLDkgQEAKICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgQml0QmFrZSB0byBidWlsZCBhbiBpbWFnZSwgYWxsIHRoZSBidWlsZCBvdXRwdXQKICAgICAgICAgICAgICAgICBnb2VzIGludG8gdGhlIGRpcmVjdG9yeSBjcmVhdGVkIHdoZW4geW91IHJ1biB0aGUKICAgICAgICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgKGkuZS4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICBpcyBuYW1lZCA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBidXQgY2FuIGJlIG5hbWVkCiAgICAgICAgICAgICAgICAgYW55dGhpbmcgeW91IHdhbnQuCiAgICAgICAgICAgICA8L3BhcmE+CkBAIC03NjUsNyArNzY1LDcgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgTWVhbndoaWxlLCA8ZmlsZW5hbWU+REVTVERJUjwvZmlsZW5hbWU+IGlzIGEgcGF0aCB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB0aGUgcmVjaXBlIGJ1aWxkcyBhIG5hdGl2ZSBwcm9ncmFtIChpLmUuIG9uZQogICAgICAgICAgICAgICAgIHRoYXQgaXMgaW50ZW5kZWQgdG8gcnVuIG9uIHRoZSBidWlsZCBtYWNoaW5lKSwgdGhhdCBwcm9ncmFtCiAgICAgICAgICAgICAgICAgaXMgbmV2ZXIgaW5zdGFsbGVkIGRpcmVjdGx5IHRvIHRoZSBidWlsZCBtYWNoaW5lJ3Mgcm9vdApAQCAtODEwLDcgKzgxMCw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUaGlzIHNpdHVhdGlvbiByZXN1bHRzIHdoZW4gYSBidWlsZCBzeXN0ZW0gZG9lcwogICAgICAgICAgICAgICAgIG5vdCByZWNvZ25pemUgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBzdXBwbGllZCB0byBpdCBieQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4uCiAgICAgICAgICAgICAgICAgVGhlIGluY2lkZW50IHRoYXQgcHJvbXB0ZWQgdGhpcyBGQVEgZW50cnkgaW52b2x2ZWQgYSBNYWtlZmlsZQogICAgICAgICAgICAgICAgIHRoYXQgdXNlZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CSU5ESVI8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mIHRoZSBtb3JlIHN0YW5kYXJkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNjQ0MTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2dpdC13b3JrZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjMwM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWNmZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9pbnRyb2R1Y3Rpb24ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9pbnRyb2R1Y3Rpb24ueG1sCmluZGV4IGVlYzZjYjMuLjI5ZWYyZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvaW50cm9kdWN0aW9uLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ludHJvZHVjdGlvbi54bWwKQEAgLTUsMTE5ICs1LDE2MCBAQAogPGNoYXB0ZXIgaWQ9J3JlZi1tYW51YWwtaW50cm8nPgogPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CiAKLTxzZWN0aW9uIGlkPSdpbnRyby13ZWxjb21lJz4KLSAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKzxzZWN0aW9uIGlkPSdyZWYtd2VsY29tZSc+CisgICAgPHRpdGxlPldlbGNvbWU8L3RpdGxlPgogCiAgICAgPHBhcmE+CisgICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVmZXJlbmNlIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCByZWxlYXNlCiAgICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBhbiBvcGVuLXNvdXJjZSBjb2xsYWJvcmF0aW9uIHByb2plY3QgZm9jdXNlZAotICAgICAgICBvbiBlbWJlZGRlZCBMaW51eCBkZXZlbG9wZXJzLgotICAgICAgICBBbW9uZ3N0IG90aGVyIHRoaW5ncywgdGhlIFlvY3RvIFByb2plY3QgdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgIHN5c3RlbSwgd2hpY2ggaXMgYmFzZWQgb24gdGhlIFBva3kgcHJvamVjdCwgdG8gY29uc3RydWN0IGNvbXBsZXRlCi0gICAgICAgIExpbnV4IGltYWdlcy4KLSAgICAgICAgWW91IGNhbiBmaW5kIGNvbXBsZXRlIGludHJvZHVjdG9yeSBhbmQgZ2V0dGluZyBzdGFydGVkIGluZm9ybWF0aW9uCi0gICAgICAgIG9uIHRoZSBZb2N0byBQcm9qZWN0IGJ5IHJlYWRpbmcgdGhlCisgICAgICAgIFRoaXMgbWFudWFsIGlzIGJlc3QgdXNlZCBhZnRlciB5b3UgaGF2ZSBhbiB1bmRlcnN0YW5kaW5nCisgICAgICAgIG9mIHRoZSBiYXNpY3Mgb2YgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIFRoZSBtYW51YWwgaXMgbmVpdGhlciBtZWFudCB0byBiZSByZWFkIGFzIGEgc3RhcnRpbmcgcG9pbnQgdG8gdGhlCisgICAgICAgIFlvY3RvIFByb2plY3Qgbm9yIHJlYWQgZnJvbSBzdGFydCB0byBmaW5pc2guCisgICAgICAgIFVzZSB0aGlzIG1hbnVhbCB0byBmaW5kIGNvbmNlcHRzLCB2YXJpYWJsZSBkZWZpbml0aW9ucywgY2xhc3MKKyAgICAgICAgZGVzY3JpcHRpb25zLCBhbmQgc28gZm9ydGggYXMgbmVlZGVkIGR1cmluZyB0aGUgY291cnNlIG9mIHVzaW5nCisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+IGFuZCB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3lwLWludHJvJz5JbnRyb2R1Y2luZyB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCB0byB0ZXN0IHJ1biBidWlsZGluZyBhbiBpbWFnZQorICAgICAgICB3aXRob3V0IGhhdmluZyB0byB1bmRlcnN0YW5kIGNvbmNlcHRzLCB3b3JrIHRocm91Z2ggdGhlCiAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L3VsaW5rPi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIHRhc2stYmFzZWQgaW5mb3JtYXRpb24gdXNpbmcgdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsPC91bGluaz4KLSAgICAgICAgYW5kIHRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsnPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDwvdWxpbms+LgotICAgICAgICBGb3IgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIHN0cnVjdHVyZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgYSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQsIChTREspLCBzZWUgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gdHJhY2luZyBhbmQgcHJvZmlsaW5nIGluIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19QUk9GX1VSTDsnPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvdWxpbms+LgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gQml0QmFrZSwgd2hpY2ggaXMgdGhlIHRhc2sgZXhlY3V0aW9uIHRvb2wgdGhlCi0gICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYmFzZWQgb24sIHNlZSB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsJz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgIEZpbmFsbHksIHlvdSBjYW4gYWxzbyBmaW5kIGxvdHMgb2YgWW9jdG8gUHJvamVjdCBpbmZvcm1hdGlvbiBvbiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0iJllPQ1RPX0hPTUVfVVJMOyI+WW9jdG8gUHJvamVjdCB3ZWJzaXRlPC91bGluaz4uCisgICAgICAgIFlvdSBjYW4gZmluZCAiaG93LXRvIiBpbmZvcm1hdGlvbiBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC91bGluaz4uCisgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFlvY3RvIFByb2plY3QgRG9jdW1lbnRhdGlvbiBzZXQsCisgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9ub3RlPgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAotPHNlY3Rpb24gaWQ9J2ludHJvLW1hbnVhbG92ZXJ2aWV3Jz4KLSAgICA8dGl0bGU+RG9jdW1lbnRhdGlvbiBPdmVydmlldzwvdGl0bGU+Cis8c2VjdGlvbiBpZD0neXAtaW50cm8nPgorICAgIDx0aXRsZT5JbnRyb2R1Y2luZyB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+CisKICAgICA8cGFyYT4KLSAgICAgICAgVGhpcyByZWZlcmVuY2UgbWFudWFsIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3VzaW5ncG9reSc+VXNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgUHJvdmlkZXMgYW4gb3ZlcnZpZXcgb2YgdGhlIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgZm9sbG93ZWQgYnkgaW5mb3JtYXRpb24gYWJvdXQgZGVidWdnaW5nIGltYWdlcyBjcmVhdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjbG9zZXItbG9vayc+QSBDbG9zZXIgTG9vayBhdCB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBQcm92aWRlcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBhdCB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAotICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHdpdGhpbiB0aGUgY29udGV4dCBvZiBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndGVjaG5pY2FsLWRldGFpbHMnPlRlY2huaWNhbCBEZXRhaWxzPC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIERlc2NyaWJlcyBmdW5kYW1lbnRhbCBZb2N0byBQcm9qZWN0IGNvbXBvbmVudHMgYXMgd2VsbCBhcyBhbiBleHBsYW5hdGlvbgotICAgICAgICAgICAgICAgIGJlaGluZCBob3cgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgY2FjaGUgdG8gc3BlZWQgYnVpbGQgdGltZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWlncmF0aW9uJz5NaWdyYXRpbmcgdG8gYSBOZXdlciBZb2N0byBQcm9qZWN0IFJlbGVhc2U8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGVzY3JpYmVzIHJlbGVhc2Utc3BlY2lmaWMgaW5mb3JtYXRpb24gdGhhdCBoZWxwcyB5b3UgbW92ZSBmcm9tCi0gICAgICAgICAgICAgICAgb25lIFlvY3RvIFByb2plY3QgUmVsZWFzZSB0byBhbm90aGVyLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtc3RydWN0dXJlJz5EaXJlY3RvcnkgU3RydWN0dXJlPC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIERlc2NyaWJlcyB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4gY3JlYXRlZAotICAgICAgICAgICAgICAgIGVpdGhlciBieSB1bnBhY2tpbmcgYSByZWxlYXNlZCBZb2N0byBQcm9qZWN0IHRhcmJhbGwgb24geW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSwKLSAgICAgICAgICAgICAgICBvciBieSBjbG9uaW5nIHRoZSB1cHN0cmVhbQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Bva3knPlBva3k8L3VsaW5rPiBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMnPkNsYXNzZXM8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGVzY3JpYmVzIHRoZSBjbGFzc2VzIHVzZWQgaW4gdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcyc+VGFza3M8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGVzY3JpYmVzIHRoZSB0YXNrcyBkZWZpbmVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtZGV2dG9vbC1yZWZlcmVuY2UnPjxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gUXVpY2sgUmVmZXJlbmNlPC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFByb3ZpZGVzIGEgcXVpY2sgcmVmZXJlbmNlIGZvciB0aGUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1xYS1jaGVja3MnPlFBIEVycm9yIGFuZCBXYXJuaW5nIE1lc3NhZ2VzPC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIExpc3RzIGFuZCBkZXNjcmliZXMgUUEgd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZXMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1pbWFnZXMnPkltYWdlczwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBEZXNjcmliZXMgdGhlIHN0YW5kYXJkIGltYWdlcyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtZmVhdHVyZXMnPkZlYXR1cmVzPC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIERlc2NyaWJlcyBtZWNoYW5pc21zIGZvciBjcmVhdGluZyBkaXN0cmlidXRpb24sIG1hY2hpbmUsIGFuZCBpbWFnZQotICAgICAgICAgICAgICAgIGZlYXR1cmVzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXZhcmlhYmxlcy1nbG9zJz5WYXJpYWJsZXMgR2xvc3Nhcnk8L2xpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgUHJlc2VudHMgbW9zdCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgd2hpY2gKLSAgICAgICAgICAgICAgICB1c2VzIEJpdEJha2UuCi0gICAgICAgICAgICAgICAgRW50cmllcyBkZXNjcmliZSB0aGUgZnVuY3Rpb24gb2YgdGhlIHZhcmlhYmxlIGFuZCBob3cgdG8gYXBwbHkgdGhlbS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXZhcmxvY2FsaXR5Jz5WYXJpYWJsZSBDb250ZXh0PC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFByb3ZpZGVzIHZhcmlhYmxlIGxvY2FsaXR5IG9yIGNvbnRleHQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ZhcSc+RkFRPC9saW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFByb3ZpZGVzIGFuc3dlcnMgZm9yIGNvbW1vbmx5IGFza2VkIHF1ZXN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZXNvdXJjZXMnPkNvbnRyaWJ1dGluZyB0byB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBQcm92aWRlcyBndWlkYW5jZSBvbiBob3cgeW91IGNhbiBjb250cmlidXRlIGJhY2sgdG8gdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4tc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdCB3aG9zZQorICAgICAgICBmb2N1cyBpcyBmb3IgZGV2ZWxvcGVycyBvZiBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zLgorICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYW4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L2xpbms+LgorICAgICAgICBUaGUgYnVpbGQgc3lzdGVtLCB3aGljaCBpcyBiYXNlZCBvbiB0aGUgT3BlbkVtYmVkZGVkIChPRSkgcHJvamVjdCBhbmQKKyAgICAgICAgdXNlcyB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPiB0b29sLCBjb25zdHJ1Y3RzIGNvbXBsZXRlCisgICAgICAgIExpbnV4IGltYWdlcyBmb3IgYXJjaGl0ZWN0dXJlcyBiYXNlZCBvbiBBUk0sIE1JUFMsIFBvd2VyUEMsIHg4NiBhbmQKKyAgICAgICAgeDg2LTY0LgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEhpc3RvcmljYWxseSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHdoaWNoIGlzIHRoZQorICAgICAgICAgICAgY29tYmluYXRpb24gb2YgQml0QmFrZSBhbmQgT0UgY29tcG9uZW50cywgZm9ybWVkIGEgcmVmZXJlbmNlCisgICAgICAgICAgICBidWlsZCBob3N0IHRoYXQgd2FzIGtub3duIGFzCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncG9reSc+UG9reTwvbGluaz4iICg8ZW1waGFzaXM+UGFoPC9lbXBoYXNpcz4ta2VlKS4KKyAgICAgICAgICAgIFRoZSB0ZXJtICJQb2t5IiwgYXMgdXNlZCB0aHJvdWdob3V0IHRoZSBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24KKyAgICAgICAgICAgIHNldCwgY2FuIGhhdmUgZGlmZmVyZW50IG1lYW5pbmdzLgorICAgICAgICA8L25vdGU+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHZhcmlvdXMgYW5jaWxsYXJ5IHRvb2xzIGZvciB0aGUgZW1iZWRkZWQKKyAgICAgICAgZGV2ZWxvcGVyIGFuZCBhbHNvIGZlYXR1cmVzIHRoZSBTYXRvIHJlZmVyZW5jZSBVc2VyIEludGVyZmFjZSwgd2hpY2gKKyAgICAgICAgaXMgb3B0aW1pemVkIGZvciBzdHlsdXMtZHJpdmVuLCBsb3ctcmVzb2x1dGlvbiBzY3JlZW5zLgorICAgIDwvcGFyYT4KKworICAgIDxtZWRpYW9iamVjdD4KKyAgICAgICAgPGltYWdlb2JqZWN0PgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmciCisgICAgICAgICAgICAgICAgZm9ybWF0PSJQTkciIGFsaWduPSdjZW50ZXInIHdpZHRoPSI4aW4iLz4KKyAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICA8L21lZGlhb2JqZWN0PgorCisgICAgPHBhcmE+CisgICAgICAgIEhlcmUgYXJlIHNvbWUgaGlnaGxpZ2h0cyBmb3IgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgPC9wYXJhPgorCisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgUHJvdmlkZXMgYSByZWNlbnQgTGludXgga2VybmVsIGFsb25nIHdpdGggYSBzZXQgb2Ygc3lzdGVtCisgICAgICAgICAgICBjb21tYW5kcyBhbmQgbGlicmFyaWVzIHN1aXRhYmxlIGZvciB0aGUgZW1iZWRkZWQKKyAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgIE1ha2VzIGF2YWlsYWJsZSBzeXN0ZW0gY29tcG9uZW50cyBzdWNoIGFzIFgxMSwgR1RLKywgUXQsCisgICAgICAgICAgICBDbHV0dGVyLCBhbmQgU0RMIChhbW9uZyBvdGhlcnMpIHNvIHlvdSBjYW4gY3JlYXRlIGEgcmljaCB1c2VyCisgICAgICAgICAgICBleHBlcmllbmNlIG9uIGRldmljZXMgdGhhdCBoYXZlIGRpc3BsYXkgaGFyZHdhcmUuCisgICAgICAgICAgICBGb3IgZGV2aWNlcyB0aGF0IGRvIG5vdCBoYXZlIGEgZGlzcGxheSBvciB3aGVyZSB5b3Ugd2lzaCB0bworICAgICAgICAgICAgdXNlIGFsdGVybmF0aXZlIFVJIGZyYW1ld29ya3MsIHRoZXNlIGNvbXBvbmVudHMgbmVlZCBub3QgYmUKKyAgICAgICAgICAgIGluc3RhbGxlZC4KKyAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICBDcmVhdGVzIGEgZm9jdXNlZCBhbmQgc3RhYmxlIGNvcmUgY29tcGF0aWJsZSB3aXRoIHRoZQorICAgICAgICAgICAgT3BlbkVtYmVkZGVkIHByb2plY3Qgd2l0aCB3aGljaCB5b3UgY2FuIGVhc2lseSBhbmQgcmVsaWFibHkKKyAgICAgICAgICAgIGJ1aWxkIGFuZCBkZXZlbG9wLgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgIEZ1bGx5IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBoYXJkd2FyZSBhbmQgZGV2aWNlIGVtdWxhdGlvbgorICAgICAgICAgICAgdGhyb3VnaCB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpLgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgIFByb3ZpZGVzIGEgbGF5ZXIgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgZXh0ZW5kCisgICAgICAgICAgICB0aGUgc3lzdGVtLCBtYWtlIGN1c3RvbWl6YXRpb25zLCBhbmQga2VlcCB0aGVtIG9yZ2FuaXplZC4KKyAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvIGdlbmVyYXRlIGltYWdlcyBmb3IgbWFueSBraW5kcworICAgICAgICBvZiBkZXZpY2VzLgorICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgY3JlYXRpb24gb2YKKyAgICAgICAgcmVmZXJlbmNlIGltYWdlcyB0aGF0IHlvdSBjYW4gYm9vdCB3aXRoaW4gYW5kIGVtdWxhdGUgdXNpbmcgUUVNVS4KKyAgICAgICAgVGhlIHN0YW5kYXJkIGV4YW1wbGUgbWFjaGluZXMgdGFyZ2V0IFFFTVUgZnVsbC1zeXN0ZW0KKyAgICAgICAgZW11bGF0aW9uIGZvciAzMi1iaXQgYW5kIDY0LWJpdCB2YXJpYW50cyBvZiB4ODYsIEFSTSwgTUlQUywgYW5kCisgICAgICAgIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgQmV5b25kIGVtdWxhdGlvbiwgeW91IGNhbiB1c2UgdGhlIGxheWVyIG1lY2hhbmlzbSB0byBleHRlbmQKKyAgICAgICAgc3VwcG9ydCB0byBqdXN0IGFib3V0IGFueSBwbGF0Zm9ybSB0aGF0IExpbnV4IGNhbiBydW4gb24gYW5kIHRoYXQKKyAgICAgICAgYSB0b29sY2hhaW4gY2FuIHRhcmdldC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQW5vdGhlciBZb2N0byBQcm9qZWN0IGZlYXR1cmUgaXMgdGhlIFNhdG8gcmVmZXJlbmNlIFVzZXIKKyAgICAgICAgSW50ZXJmYWNlLgorICAgICAgICBUaGlzIG9wdGlvbmFsIFVJIHRoYXQgaXMgYmFzZWQgb24gR1RLKyBpcyBpbnRlbmRlZCBmb3IgZGV2aWNlcyB3aXRoCisgICAgICAgIHJlc3RyaWN0ZWQgc2NyZWVuIHNpemVzIGFuZCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQorICAgICAgICBPcGVuRW1iZWRkZWQgQ29yZSBsYXllciBzbyB0aGF0IGRldmVsb3BlcnMgY2FuIHRlc3QgcGFydHMgb2YgdGhlCisgICAgICAgIHNvZnR3YXJlIHN0YWNrLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGlsZSB0aGUgWW9jdG8gUHJvamVjdCBkb2VzIG5vdCBwcm92aWRlIGEgc3RyaWN0IHRlc3RpbmcgZnJhbWV3b3JrLAorICAgICAgICBpdCBkb2VzIHByb3ZpZGUgb3IgZ2VuZXJhdGUgZm9yIHlvdSBhcnRpZmFjdHMgdGhhdCBsZXQgeW91IHBlcmZvcm0KKyAgICAgICAgdGFyZ2V0LWxldmVsIGFuZCBlbXVsYXRlZCB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuCisgICAgICAgIEFkZGl0aW9uYWxseSwgaWYgeW91IGFyZSBhbgorICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBJREUgdXNlciwgeW91IGNhbgorICAgICAgICBpbnN0YWxsIGFuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiB0byBhbGxvdyB5b3UgdG8gZGV2ZWxvcCB3aXRoaW4gdGhhdAorICAgICAgICBmYW1pbGlhciBlbnZpcm9ubWVudC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQnkgZGVmYXVsdCwgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgYW4gaW1hZ2UgY3JlYXRlcyBhIFBva3kKKyAgICAgICAgZGlzdHJpYnV0aW9uLgorICAgICAgICBIb3dldmVyLCB5b3UgY2FuIGNyZWF0ZSB5b3VyIG93biBkaXN0cmlidXRpb24gYnkgcHJvdmlkaW5nIGtleQorICAgICAgICA8bGluayBsaW5rPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+LgorICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyBBbmdzdHJvbSwgd2hpY2ggaGFzIGhhZCBhIGRpc3RyaWJ1dGlvbgorICAgICAgICBiYXNlZCBvbiB0aGUgWW9jdG8gUHJvamVjdCBzaW5jZSBpdHMgaW5jZXB0aW9uLgorICAgICAgICBPdGhlciBleGFtcGxlcyBpbmNsdWRlIGNvbW1lcmNpYWwgZGlzdHJpYnV0aW9ucyBsaWtlCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvb3JnYW5pemF0aW9uL3dpbmQtcml2ZXItc3lzdGVtcyc+V2luZCBSaXZlciBMaW51eDwvdWxpbms+LAorICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL29yZ2FuaXphdGlvbi9tZW50b3ItZ3JhcGhpY3MnPk1lbnRvciBFbWJlZGRlZCBMaW51eDwvdWxpbms+LAorICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL29yZ2FuaXphdGlvbi9lbmVhLWFiJz5FTkVBIExpbnV4PC91bGluaz4KKyAgICAgICAgYW5kIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZWNvc3lzdGVtL21lbWJlci1vcmdhbml6YXRpb25zJz5vdGhlcnM8L3VsaW5rPi4KKyAgICAgICAgU2VlIHRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmcteW91ci1vd24tZGlzdHJpYnV0aW9uJz5DcmVhdGluZyBZb3VyIE93biBEaXN0cmlidXRpb248L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCi0KIDxzZWN0aW9uIGlkPSdpbnRyby1yZXF1aXJlbWVudHMnPgogPHRpdGxlPlN5c3RlbSBSZXF1aXJlbWVudHM8L3RpdGxlPgogICAgIDxwYXJhPgpAQCAtMTYzLDEyICsyMDQsMTIgQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEwLjA0PC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMS4xMDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTIuMDQgKExUUyk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEzLjEwPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTQuMDQgKExUUyk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEzLjEwPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNC4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE0LjEwPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNS4wNDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTUuMTA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE2LjA0PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNi4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPgogPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDE2IChWZXJuZSk8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDE3IChTcGhlcmljYWwpPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDE5IChTY2hyw7ZkaW5nZXIncyBDYXQpPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0xODUsNiArMjI2LDcgQEAKIDwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNi4wIChTcXVlZXplKTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcueCAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA4LnggKEplc3NpZSk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA5LnggKFN0cmV0Y2gpPC9wYXJhPjwvbGlzdGl0ZW0+CiA8IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMSAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMiAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMyAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNDEzLDcgKzQ1NSw3IEBACiAgICAgICAgICAgICBQeXRob246CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5HaXQgMS44LjMuMSBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPnRhciAxLjI0IG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjcgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMy40LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KQEAgLTQ5Miw5ICs1MzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG1hY2hpbmUgdGhhdCBpcyBhYmxlIHRvIHJ1biBCaXRCYWtlLAogICAgICAgICAgICAgICAgICAgICAgICAgYmUgc3VyZSB5b3UgaGF2ZSBzZXQgdXAgeW91ciBidWlsZCBlbnZpcm9ubWVudCB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSBCaXRCYWtlIGNvbW1hbmQgdG8gYnVpbGQgdGhlIHRhcmJhbGw6CkBAIC01MTIsNyArNTUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgdGhhdCBpbnN0YWxscwogICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMgaW4gdGhlIDxmaWxlbmFtZT50bXAvZGVwbG95L3NkazwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5zdGFsbGVyIGZpbGUgaGFzIHRoZSBzdHJpbmcgImJ1aWxkdG9vbHMiCiAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTYwMCwxMiArNjQwLDQ0MSBAQAogICAgIDx0aXRsZT5EZXZlbG9wbWVudCBDaGVja291dHM8L3RpdGxlPgogICAgIDxwYXJhPgogICAgICAgICBEZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCByZXF1aXJlcyBhIGxvY2FsCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgIFlvdSBjYW4gc2V0IHVwIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGJ5IGNsb25pbmcgYSBjb3B5IG9mIHRoZSB1cHN0cmVhbQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwb2t5Jz5wb2t5PC91bGluaz4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Bva3knPnBva3k8L2xpbms+IEdpdCByZXBvc2l0b3J5LgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGRvIHRoaXMsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dldHRpbmctc2V0dXAnPkdldHRpbmcgU2V0IFVwPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd29ya2luZy13aXRoLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Xb3JraW5nIFdpdGggWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC10ZXJtcyc+CisgICAgPHRpdGxlPllvY3RvIFByb2plY3QgVGVybXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgdGVybXMgYW5kIGRlZmluaXRpb25zIHVzZXJzIG5ldyB0byB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBtaWdodCBmaW5kIGhlbHBmdWwuCisgICAgICAgIFdoaWxlIHNvbWUgb2YgdGhlc2UgdGVybXMgYXJlIHVuaXZlcnNhbCwgdGhlIGxpc3QgaW5jbHVkZXMgdGhlbQorICAgICAgICBqdXN0IGluIGNhc2U6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGVuZCBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZpbGVzIHRoYXQgYXBwZW5kIGJ1aWxkIGluZm9ybWF0aW9uIHRvIGEgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgQXBwZW5kIGZpbGVzIGFyZSBrbm93biBhcyBCaXRCYWtlIGFwcGVuZCBmaWxlcyBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZXhwZWN0cyBldmVyeSBhcHBlbmQgZmlsZSB0byBoYXZlCisgICAgICAgICAgICAgICAgYSBjb3JyZXNwb25kaW5nIHJlY2lwZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBmaWxlLgorICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgYXBwZW5kIGZpbGUgYW5kIGNvcnJlc3BvbmRpbmcgcmVjaXBlIGZpbGUKKyAgICAgICAgICAgICAgICBtdXN0IHVzZSB0aGUgc2FtZSByb290IGZpbGVuYW1lLgorICAgICAgICAgICAgICAgIFRoZSBmaWxlbmFtZXMgY2FuIGRpZmZlciBvbmx5IGluIHRoZSBmaWxlIHR5cGUgc3VmZml4IHVzZWQKKyAgICAgICAgICAgICAgICAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZDwvZmlsZW5hbWU+KS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JbmZvcm1hdGlvbiBpbiBhcHBlbmQgZmlsZXMgZXh0ZW5kcyBvciBvdmVycmlkZXMgdGhlCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaW4gdGhlIHNpbWlsYXJseS1uYW1lZCByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBhbiBhcHBlbmQgZmlsZSBpbiB1c2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlcyBpbiBZb3VyIExheWVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEFwcGVuZCBmaWxlcyBjYW4gYWxzbyB1c2Ugd2lsZGNhcmQgcGF0dGVybnMgaW4gdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBudW1iZXJzIHNvIHRoZXkgY2FuIGJlIGFwcGxpZWQgdG8gbW9yZSB0aGFuIG9uZQorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSB1bmRlcmx5aW5nIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nYml0YmFrZS10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qml0QmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSB0YXNrIGV4ZWN1dG9yIGFuZCBzY2hlZHVsZXIgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGJ1aWxkIGltYWdlcy4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwLXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIGdyb3VwIG9mIGRyaXZlcnMsIGRlZmluaXRpb25zLCBhbmQgb3RoZXIgY29tcG9uZW50cyB0aGF0CisgICAgICAgICAgICAgICAgcHJvdmlkZSBzdXBwb3J0IGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQlNQcywgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdidWlsZC1kaXJlY3RvcnknPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHRlcm0gcmVmZXJzIHRvIHRoZSBhcmVhIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgIHN5c3RlbSBmb3IgYnVpbGRzLgorICAgICAgICAgICAgICAgIFRoZSBhcmVhIGlzIGNyZWF0ZWQgd2hlbiB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZQorICAgICAgICAgICAgICAgIHNldHVwIGVudmlyb25tZW50IHNjcmlwdCB0aGF0IGlzIGZvdW5kIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgKGkuZS4gPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIEJ1aWxkIERpcmVjdG9yeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaGF2ZSBhIGxvdCBvZiBmbGV4aWJpbGl0eSB3aGVuIGNyZWF0aW5nIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgZXhhbXBsZXMgdGhhdCBzaG93IGhvdyB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBhc3N1bWUgeW91cgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+IGlzCisgICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgYW5kIGxldCB0aGUgbmFtZSBvZiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBkZWZhdWx0IHRvIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkICRIT01FL3Bva3kKKyAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbWUgZGlyZWN0b3J5IGFuZCBzcGVjaWZpY2FsbHkgbmFtZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3QtYnVpbGRzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgJEhPTUUKKyAgICAgJCBzb3VyY2UgcG9reS8mT0VfSU5JVF9GSUxFOyB0ZXN0LWJ1aWxkcworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBkaXJlY3RvcnkgcGF0aCBhbmQgc3BlY2lmaWNhbGx5IG5hbWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgaW50ZXJtZWRpYXRlIGZvbGRlcnMgaW4gdGhlIHBhdGhuYW1lIG11c3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+WVAtJlBPS1lWRVJTSU9OOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJGNkICRIT01FCisgICAgICQgc291cmNlICRIT01FL3Bva3kvJk9FX0lOSVRfRklMRTsgJEhPTUUvbXlidWlsZHMvWVAtJlBPS1lWRVJTSU9OOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBCdWlsZCBEaXJlY3RvcnkgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgaXRzIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBjYW5ub3QgYmUgdW5kZXIgTkZTLgorICAgICAgICAgICAgICAgICAgICBUaHVzLCBieSBkZWZhdWx0LCB0aGUgQnVpbGQgRGlyZWN0b3J5IGNhbm5vdCBiZSB1bmRlciBORlMuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBuZWVkIHRoZSBCdWlsZCBEaXJlY3RvcnkgdG8gYmUgdW5kZXIgTkZTLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHNldCB0aGlzIHVwIGJ5IHNldHRpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHRvIHVzZSBhIGxvY2FsIGRyaXZlLgorICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBlZmZlY3RpdmVseSBzZXBhcmF0ZXMgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+LCB3aGljaCBpcyB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0naGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgc3lzdGVtIHVzZWQgdG8gYnVpbGQgaW1hZ2VzIGluIGEgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIERldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsYXNzZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBGaWxlcyB0aGF0IHByb3ZpZGUgZm9yIGxvZ2ljIGVuY2Fwc3VsYXRpb24gYW5kIGluaGVyaXRhbmNlIHNvCisgICAgICAgICAgICAgICAgdGhhdCBjb21tb25seSB1c2VkIHBhdHRlcm5zIGNhbiBiZSBkZWZpbmVkIG9uY2UgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICBlYXNpbHkgdXNlZCBpbiBtdWx0aXBsZSByZWNpcGVzLgorICAgICAgICAgICAgICAgIEZvciByZWZlcmVuY2UgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QgY2xhc3Nlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvbGluaz4iIGNoYXB0ZXIuCisgICAgICAgICAgICAgICAgQ2xhc3MgZmlsZXMgZW5kIHdpdGggdGhlIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGluIHZhcmlvdXMgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlcyBwcm92aWRlcyBnbG9iYWwgZGVmaW5pdGlvbnMgb2YgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGluCisgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgY29udGFpbnMgdXNlci1kZWZpbmVkIHZhcmlhYmxlcyB0aGF0IGFmZmVjdCBldmVyeSBidWlsZC4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBkZWZpbmVzIFlvY3RvICJkaXN0cm8iIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdXNlZCBvbmx5IHdoZW4gYnVpbGRpbmcgd2l0aCB0aGlzIHBvbGljeS4KKyAgICAgICAgICAgICAgICBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHdoaWNoCisgICAgICAgICAgICAgICAgYXJlIGxvY2F0ZWQgdGhyb3VnaG91dCB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPiwgZGVmaW5lCisgICAgICAgICAgICAgICAgdmFyaWFibGVzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgYXJlIG9ubHkgdXNlZCB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgZm9yIHRoYXQgdGFyZ2V0IChlLmcuIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWNoaW5lL2JlYWdsZWJvbmUuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBmaWxlIGRlZmluZXMgdmFyaWFibGVzIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgQVJNIENvcnRleC1BOAorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGJvYXJkKS4KKyAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGZpbGVzIGVuZCB3aXRoIGEgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlbmFtZSBleHRlbnNpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGEgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGlzIGEgY29sbGVjdGlvbiBvZgorICAgICAgICAgICAgICAgIHNvZnR3YXJlIGRldmVsb3BtZW50IHRvb2xzIGFuZCB1dGlsaXRpZXMgdGhhdCBydW4gb24gb25lCisgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIGFuZCBhbGxvdyB5b3UgdG8gZGV2ZWxvcCBzb2Z0d2FyZSBmb3IgYQorICAgICAgICAgICAgICAgIGRpZmZlcmVudCwgb3IgdGFyZ2V0ZWQsIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICBUaGVzZSB0b29sY2hhaW5zIGNvbnRhaW4gY3Jvc3MtY29tcGlsZXJzLCBsaW5rZXJzLCBhbmQKKyAgICAgICAgICAgICAgICBkZWJ1Z2dlcnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgdHdvIGRpZmZlcmVudCBjcm9zcy1kZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIHRvb2xjaGFpbnM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQSB0b29sY2hhaW4gb25seSB1c2VkIGJ5IGFuZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2Ugd2hlbiBidWlsZGluZyBhbiBpbWFnZSBmb3IgYSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSByZWxvY2F0YWJsZSB0b29sY2hhaW4gdXNlZCBvdXRzaWRlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGJ5IGRldmVsb3BlcnMgd2hlbiBkZXZlbG9waW5nIGFwcGxpY2F0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB3aWxsIHJ1biBvbiBhIHRhcmdldGVkIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkNyZWF0aW9uIG9mIHRoZXNlIHRvb2xjaGFpbnMgaXMgc2ltcGxlIGFuZCBhdXRvbWF0ZWQuCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRvb2xjaGFpbiBjb25jZXB0cyBhcyB0aGV5IGFwcGx5IHRvIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgcmVsb2NhdGFibGUgdG9vbGNoYWluIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KKyAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQW4gaW1hZ2UgaXMgYW4gYXJ0aWZhY3Qgb2YgdGhlIEJpdEJha2UgYnVpbGQgcHJvY2VzcyBnaXZlbgorICAgICAgICAgICAgICAgIGEgY29sbGVjdGlvbiBvZiByZWNpcGVzIGFuZCByZWxhdGVkIE1ldGFkYXRhLgorICAgICAgICAgICAgICAgIEltYWdlcyBhcmUgdGhlIGJpbmFyeSBvdXRwdXQgdGhhdCBydW4gb24gc3BlY2lmaWMgaGFyZHdhcmUgb3IKKyAgICAgICAgICAgICAgICBRRU1VIGFuZCBhcmUgdXNlZCBmb3Igc3BlY2lmaWMgdXNlLWNhc2VzLgorICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIHN1cHBvcnRlZCBpbWFnZSB0eXBlcyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgcHJvdmlkZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWltYWdlcyc+SW1hZ2VzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBjaGFwdGVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgY29sbGVjdGlvbiBvZiByZWNpcGVzIHJlcHJlc2VudGluZyB0aGUgY29yZSwKKyAgICAgICAgICAgICAgICBhIEJTUCwgb3IgYW4gYXBwbGljYXRpb24gc3RhY2suCisgICAgICAgICAgICAgICAgRm9yIGEgZGlzY3Vzc2lvbiBzcGVjaWZpY2FsbHkgb24gQlNQIExheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApCisgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J21ldGFkYXRhJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWV0YWRhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgZmlsZXMgdGhhdCBCaXRCYWtlIHBhcnNlcyB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlLgorICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIE1ldGFkYXRhIGluY2x1ZGVzIHJlY2lwZXMsIGNsYXNzZXMsIGFuZAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgICAgICAgICAgSW4gdGhlIGNvbnRleHQgb2YgdGhlIGtlcm5lbCAoImtlcm5lbCBNZXRhZGF0YSIpLCB0aGUKKyAgICAgICAgICAgICAgICB0ZXJtIHJlZmVycyB0byB0aGUga2VybmVsIGNvbmZpZyBmcmFnbWVudHMgYW5kIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgY29udGFpbmVkIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3lvY3RvLWtlcm5lbC1jYWNoZSc+PGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nb2UtY29yZSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9FLUNvcmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIGNvcmUgc2V0IG9mIE1ldGFkYXRhIG9yaWdpbmF0aW5nIHdpdGggT3BlbkVtYmVkZGVkIChPRSkKKyAgICAgICAgICAgICAgICB0aGF0IGlzIHNoYXJlZCBiZXR3ZWVuIE9FIGFuZCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBUaGlzIE1ldGFkYXRhIGlzIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdidWlsZC1zeXN0ZW0tdGVybSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHNwZWNpZmljIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIGJhc2VkIG9uIGFub3RoZXIgcHJvamVjdCBrbm93bgorICAgICAgICAgICAgICAgIGFzICJQb2t5Iiwgd2hpY2ggdXNlcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4gYXMgdGhlIHRhc2sKKyAgICAgICAgICAgICAgICBleGVjdXRvci4KKyAgICAgICAgICAgICAgICBUaHJvdWdob3V0IHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gc2V0LCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBzaW1wbHkKKyAgICAgICAgICAgICAgICBhcyAidGhlIGJ1aWxkIHN5c3RlbSIuCisgICAgICAgICAgICAgICAgSWYgb3RoZXIgYnVpbGQgc3lzdGVtcywgc3VjaCBhcyBhIGhvc3Qgb3IgdGFyZ2V0IGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGFyZSByZWZlcmVuY2VkLCB0aGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGUKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBoaXN0b3JpY2FsIGluZm9ybWF0aW9uIGFib3V0IFBva3ksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncG9reSc+UG9reTwvbGluaz4gdGVybS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgdGhpcyB0ZXJtIHJlZmVycyB0byBhCisgICAgICAgICAgICAgICAgcmVjaXBlJ3MgcGFja2FnZWQgb3V0cHV0IHByb2R1Y2VkIGJ5IEJpdEJha2UgKGkuZS4gYQorICAgICAgICAgICAgICAgICJiYWtlZCByZWNpcGUiKS4KKyAgICAgICAgICAgICAgICBBIHBhY2thZ2UgaXMgZ2VuZXJhbGx5IHRoZSBjb21waWxlZCBiaW5hcmllcyBwcm9kdWNlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZSdzIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgWW91ICJiYWtlIiBzb21ldGhpbmcgYnkgcnVubmluZyBpdCB0aHJvdWdoIEJpdEJha2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIHRlcm0gInBhY2thZ2UiIGNhbiwKKyAgICAgICAgICAgICAgICBpbiBnZW5lcmFsLCBoYXZlIHN1YnRsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHBhY2thZ2VzIHJlZmVycmVkIHRvIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3BhY2thZ2VzJz5UaGUgQnVpbGQgSG9zdCBQYWNrYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgYXJlIGNvbXBpbGVkIGJpbmFyaWVzCisgICAgICAgICAgICAgICAgdGhhdCwgd2hlbiBpbnN0YWxsZWQsIGFkZCBmdW5jdGlvbmFsaXR5IHRvIHlvdXIgTGludXgKKyAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+QW5vdGhlciBwb2ludCB3b3J0aCBub3RpbmcgaXMgdGhhdCBoaXN0b3JpY2FsbHkgd2l0aGluCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QsIHJlY2lwZXMgd2VyZSByZWZlcnJlZCB0byBhcyBwYWNrYWdlcyAtIHRodXMsCisgICAgICAgICAgICAgICAgdGhlIGV4aXN0ZW5jZSBvZiBzZXZlcmFsIEJpdEJha2UgdmFyaWFibGVzIHRoYXQgYXJlIHNlZW1pbmdseQorICAgICAgICAgICAgICAgIG1pcy1uYW1lZCwKKyAgICAgICAgICAgICAgICAoZS5nLiA8bGluayBsaW5rZW5kPSd2YXItUFInPjxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPiwgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWNrYWdlIEdyb3Vwczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEFyYml0cmFyeSBncm91cHMgb2Ygc29mdHdhcmUgUmVjaXBlcy4KKyAgICAgICAgICAgICAgICBZb3UgdXNlIHBhY2thZ2UgZ3JvdXBzIHRvIGhvbGQgcmVjaXBlcyB0aGF0LCB3aGVuIGJ1aWx0LAorICAgICAgICAgICAgICAgIHVzdWFsbHkgYWNjb21wbGlzaCBhIHNpbmdsZSB0YXNrLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIHBhY2thZ2UgZ3JvdXAgY291bGQgY29udGFpbiB0aGUgcmVjaXBlcyBmb3IgYQorICAgICAgICAgICAgICAgIGNvbXBhbnnigJlzIHByb3ByaWV0YXJ5IG9yIHZhbHVlLWFkZCBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICBPciwgdGhlIHBhY2thZ2UgZ3JvdXAgY291bGQgY29udGFpbiB0aGUgcmVjaXBlcyB0aGF0IGVuYWJsZQorICAgICAgICAgICAgICAgIGdyYXBoaWNzLgorICAgICAgICAgICAgICAgIEEgcGFja2FnZSBncm91cCBpcyByZWFsbHkganVzdCBhbm90aGVyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHBhY2thZ2UgZ3JvdXAgZmlsZXMgYXJlIHJlY2lwZXMsIHRoZXkgZW5kIHdpdGggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGVuYW1lIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0ncG9reSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBva3k6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgdGVybSAicG9reSIsIHdoaWNoIGlzIHByb25vdW5jZWQKKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFoPC9lbXBoYXNpcz4ta2VlLCBjYW4gbWVhbiBzZXZlcmFsIHRoaW5nczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiBpdHMgbW9zdCBnZW5lcmFsIHNlbnNlLCBwb2t5IGlzIGFuIG9wZW4tc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IHRoYXQgd2FzIGluaXRpYWxseSBkZXZlbG9wZWQgYnkgT3BlbmVkSGFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5lZEhhbmQgZGV2ZWxvcGVkIHBva3kgb2ZmIG9mIHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYSBjb21tZXJjaWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRhYmxlIGJ1aWxkIHN5c3RlbSBmb3IgZW1iZWRkZWQgTGludXguCisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBJbnRlbCBDb3Jwb3JhdGlvbiBhY3F1aXJlZCBPcGVuZWRIYW5kLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBva3kgcHJvamVjdCBiZWNhbWUgdGhlIGJhc2lzIGZvciB0aGUgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgV2l0aGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb2t5IiBleGlzdHMgYXMgYSBzZXBhcmF0ZSBHaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgZnJvbSB3aGljaCB5b3UgY2FuIGNsb25lIHRvIHlpZWxkIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IHRoYXQgaXMgYSBjb3B5IG9uIHlvdXIgaG9zdCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCAicG9reSIgY2FuIHJlZmVyIHRvIHRoZSB1cHN0cmVhbSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgY29weSBvZiB0aGUgZmlsZXMgdXNlZCBmb3IgZGV2ZWxvcG1lbnQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGaW5hbGx5LCAicG9reSIgY2FuIHJlZmVyIHRvIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBkaXN0cmlidXRpb24pIGNyZWF0ZWQgd2hlbiB5b3UgdXNlIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IHRvIGJ1aWxkIGFuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgc2V0IG9mIGluc3RydWN0aW9ucyBmb3IgYnVpbGRpbmcgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgQSByZWNpcGUgZGVzY3JpYmVzIHdoZXJlIHlvdSBnZXQgc291cmNlIGNvZGUsIHdoaWNoIHBhdGNoZXMKKyAgICAgICAgICAgICAgICB0byBhcHBseSwgaG93IHRvIGNvbmZpZ3VyZSB0aGUgc291cmNlLCBob3cgdG8gY29tcGlsZSBpdCBhbmQgc28gb24uCisgICAgICAgICAgICAgICAgUmVjaXBlcyBhbHNvIGRlc2NyaWJlIGRlcGVuZGVuY2llcyBmb3IgbGlicmFyaWVzIG9yIGZvciBvdGhlcgorICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgUmVjaXBlcyByZXByZXNlbnQgdGhlIGxvZ2ljYWwgdW5pdCBvZiBleGVjdXRpb24sIHRoZSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgIHRvIGJ1aWxkLCB0aGUgaW1hZ2VzIHRvIGJ1aWxkLCBhbmQgdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0ncmVmZXJlbmNlLWtpdC10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVmZXJlbmNlIEtpdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgd29ya2luZyBleGFtcGxlIG9mIGEgc3lzdGVtLCB3aGljaCBpbmNsdWRlcyBhCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcC10ZXJtJz5CU1A8L2xpbms+CisgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBhCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIHN5c3RlbTwvbGluaz4KKyAgICAgICAgICAgICAgICBhbmQgb3RoZXIgY29tcG9uZW50cywgdGhhdCBjYW4gd29yayBvbiBzcGVjaWZpYyBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8cGFyYSBpZD0nc291cmNlLWRpcmVjdG9yeSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNvdXJjZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHRlcm0gcmVmZXJzIHRvIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGNyZWF0ZWQgYXMgYSByZXN1bHQKKyAgICAgICAgICAgICAgICBvZiBjcmVhdGluZyBhIGxvY2FsIGNvcHkgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSA8ZmlsZW5hbWU+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgb3IgZXhwYW5kaW5nIGEgcmVsZWFzZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiB0YXJiYWxsLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhIGxvY2FsIGNvcHkgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgaXMgdGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3Igc2V0dGluZyB1cAorICAgICAgICAgICAgICAgICAgICB5b3VyIFNvdXJjZSBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcyB5b3UgbWlnaHQgaGVhciB0aGUgdGVybSAicG9reSBkaXJlY3RvcnkiIHVzZWQgdG8gcmVmZXIKKyAgICAgICAgICAgICAgICB0byB0aGlzIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBvcgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgbmFtZXMgdGhhdCBjb250YWluIHNwYWNlcy4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0aGF0IHRoZSBTb3VyY2UgRGlyZWN0b3J5IHlvdSB1c2UgZG9lcyBub3QgY29udGFpbgorICAgICAgICAgICAgICAgICAgICB0aGVzZSB0eXBlcyBvZiBuYW1lcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFNvdXJjZSBEaXJlY3RvcnkgY29udGFpbnMgQml0QmFrZSwgRG9jdW1lbnRhdGlvbiwKKyAgICAgICAgICAgICAgICBNZXRhZGF0YSBhbmQgb3RoZXIgZmlsZXMgdGhhdCBhbGwgc3VwcG9ydCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtdXN0IGhhdmUgdGhlIFNvdXJjZSBEaXJlY3RvcnkgaW4gcGxhY2Ugb24KKyAgICAgICAgICAgICAgICB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSBpbiBvcmRlciB0byBkbyBhbnkgZGV2ZWxvcG1lbnQgdXNpbmcKKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSwgeW91CisgICAgICAgICAgICAgICAgY2FuIG5hbWUgdGhlIHJlcG9zaXRvcnkgYW55dGhpbmcgeW91IGxpa2UuCisgICAgICAgICAgICAgICAgVGhyb3VnaG91dCBtdWNoIG9mIHRoZSBkb2N1bWVudGF0aW9uLCAicG9reSIKKyAgICAgICAgICAgICAgICBpcyB1c2VkIGFzIHRoZSBuYW1lIG9mIHRoZSB0b3AtbGV2ZWwgZm9sZGVyIG9mIHRoZSBsb2NhbCBjb3B5IG9mCisgICAgICAgICAgICAgICAgdGhlIHBva3kgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgU28sIGZvciBleGFtcGxlLCBjbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgcmVzdWx0cyBpbiBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IHdob3NlIHRvcC1sZXZlbAorICAgICAgICAgICAgICAgIGZvbGRlciBpcyBhbHNvIG5hbWVkICJwb2t5Ii48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGlsZSBpdCBpcyBub3QgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIHRhcmJhbGwgZXhwYW5zaW9uCisgICAgICAgICAgICAgICAgdG8gc2V0IHVwIHRoZSBTb3VyY2UgRGlyZWN0b3J5LCBpZiB5b3UgZG8sIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgU291cmNlIERpcmVjdG9yeSBpcyBkZXJpdmVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlIHRhcmJhbGwuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGRvd25sb2FkaW5nIGFuZCB1bnBhY2tpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JllPQ1RPX1BPS1lfVEFSQkFMTDs8L2ZpbGVuYW1lPiByZXN1bHRzIGluIGEKKyAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IHdob3NlIHJvb3QgZm9sZGVyIGlzIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19QT0tZOzwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZQorICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgY3JlYXRlZCBieSB1bnBhY2tpbmcgYSByZWxlYXNlZCB0YXJiYWxsIGFzCisgICAgICAgICAgICAgICAgY29tcGFyZWQgdG8gY2xvbmluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdW5wYWNrIGEgdGFyYmFsbCwgeW91IGhhdmUgYW4gZXhhY3QgY29weSBvZiB0aGUgZmlsZXMKKyAgICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgdGltZSBvZiByZWxlYXNlIC0gYSBmaXhlZCByZWxlYXNlIHBvaW50LgorICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIHlvdSBtYWtlIHRvIHlvdXIgbG9jYWwgZmlsZXMgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBhcmUgb24gdG9wIG9mIHRoZSByZWxlYXNlIGFuZCB3aWxsIHJlbWFpbiBsb2NhbCBvbmx5LgorICAgICAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCB3aGVuIHlvdSBjbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LCB5b3UgaGF2ZSBhbiBhY3RpdmUgZGV2ZWxvcG1lbnQgcmVwb3NpdG9yeSB3aXRoCisgICAgICAgICAgICAgICAgYWNjZXNzIHRvIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5J3MgYnJhbmNoZXMgYW5kIHRhZ3MuCisgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhbnkgbG9jYWwgY2hhbmdlcyB5b3UgbWFrZSB0byB0aGUgbG9jYWwKKyAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGNhbiBiZSBsYXRlciBhcHBsaWVkIHRvIGFjdGl2ZSBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIGJyYW5jaGVzIG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uY2VwdHMgcmVsYXRlZCB0byBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMsIGJyYW5jaGVzLCBhbmQgdGFncywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXBvc2l0b3JpZXMtdGFncy1hbmQtYnJhbmNoZXMnPlJlcG9zaXRvcmllcywgVGFncywgYW5kIEJyYW5jaGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UYXNrOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSB1bml0IG9mIGV4ZWN1dGlvbiBmb3IgQml0QmFrZSAoZS5nLgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSd0b2FzdGVyLXRlcm0nPjxlbXBoYXNpcz5Ub2FzdGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4uCisgICAgICAgICAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBidWlsZHMgaXMgY29sbGVjdGVkIGFuZCBzdG9yZWQgaW4gYSBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gVG9hc3Rlciwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPllvY3RvIFByb2plY3QgVG9hc3RlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXBzdHJlYW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIHJlZmVyZW5jZSB0byBzb3VyY2UgY29kZSBvciByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBub3QgbG9jYWwgdG8gdGhlIGRldmVsb3BtZW50IHN5c3RlbSBidXQgbG9jYXRlZCBpbiBhCisgICAgICAgICAgICAgICAgbWFzdGVyIGFyZWEgdGhhdCBpcyBjb250cm9sbGVkIGJ5IHRoZSBtYWludGFpbmVyIG9mIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICBjb2RlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiBvcmRlciBmb3IgYSBkZXZlbG9wZXIgdG8gd29yayBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICBwaWVjZSBvZiBjb2RlLCB0aGV5IG5lZWQgdG8gZmlyc3QgZ2V0IGEgY29weSBvZiBpdCBmcm9tIGFuCisgICAgICAgICAgICAgICAgInVwc3RyZWFtIiBzb3VyY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCmluZGV4IDdjYTkyOWMuLjgxMTU3N2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZC4KICAgICAgICAgICAgICAgICBGb3IgbW9zdCBvZiB0aGVtLCBpdCBpcyB1bmxpa2VseSB0aGF0IHlvdSB3b3VsZCBoYXZlIGFueQogICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgdG8gdGhlbSBpbiB5b3VyIG93bgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4uCiAgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IHNob3VsZCBjaGVjayB5b3VyIG1ldGFkYXRhIGFnYWluc3QgdGhpcyBsaXN0IHRvIGJlIHN1cmU6CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+bGlieDExLXRyaW08L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgpAQCAtMjkzLDcgKzI5Myw3IEBACiAgICAgICAgICAgICAgICAgRm9yIHRoZSByZW1haW5kZXIsIHlvdSBjYW4gbm93IGZpbmQgdGhlbSBpbiB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1leHRyYXM8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCB3aGljaCBpcyBpbiB0aGUKICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+LgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgpAQCAtNDM4LDExICs0MzgsMTEgQEAKICAgICAgICAgICAgIHlvdSBub3cgbmVlZCB0byBjcmVhdGUgYW4gYXBwZW5kIGZpbGUgZm9yIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPmluaXQtaWZ1cGRvd248L2ZpbGVuYW1lPiByZWNpcGUgaW5zdGVhZCwgd2hpY2ggeW91IGNhbgogICAgICAgICAgICAgZmluZCBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgIGF0IDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duPC9maWxlbmFtZT4uCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBhcHBlbmQgZmlsZXMsIHNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzPC91bGluaz4iCi0gICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTgyMSw3ICs4MjEsNyBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGhpc3RvcnkgaXMgZW5hYmxlZCwgaXRzIG91dHB1dCBpcyBub3cgd3JpdHRlbgogICAgICAgICAgICAgICAgICAgICB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4KICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gbWFrZXMgaXQgZWFzaWVyIHRvIGRlbGV0ZQpAQCAtOTkyLDcgKzk5Miw3IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IHBlcmZvcm1pbmcgYXV0b21hdGVkIGltYWdlIHRlc3RzIGluIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTExNzMsNyArMTE3Myw3IEBACiAgICAgICAgICAgICBjbGFzcyBoYXMgYmVlbiByZXdyaXR0ZW4gYW5kIGl0cyBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHNpbXBsaWZpZWQuCiAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBzb3VyY2UgYXJjaGl2ZXIsIHNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMTIxOCw3ICsxMjE4LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0bwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdiaXRiYWtlLXRlcm0nPkJpdEJha2U8L2xpbms+LgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjYtbWF0Y2hpbmctYnJhbmNoLXJlcXVpcmVtZW50LWZvci1naXQtZmV0Y2hpbmcnPgpAQCAtMTM2Miw3ICsxMzYyLDcgQEAKICAgICAgICAgICAgICAgICBpbmNyZW1lbnRzIG9uIGNoYW5nZXMsIHVzZSB0aGUgUFIgc2VydmljZSBpbnN0ZWFkLgogICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGlzIHNlcnZpY2UgaW4gdGhlCiAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC1hLXByLXNlcnZpY2UnPldvcmtpbmcgV2l0aCBhIFBSIFNlcnZpY2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC0xNDUzLDcgKzE0NTMsNyBAQAogICAgICAgICAgICAgUGFja2FnZSBUZXN0cyAocHRlc3QpIGFyZSBidWlsdCBidXQgbm90IGluc3RhbGxlZCBieSBkZWZhdWx0LgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIFBhY2thZ2UgVGVzdHMsIHNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN0ZXN0aW5nLXBhY2thZ2VzLXdpdGgtcHRlc3QnPlNldHRpbmcgdXAgYW5kIHJ1bm5pbmcgcGFja2FnZSB0ZXN0IChwdGVzdCk8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT5wdGVzdDwvZmlsZW5hbWU+IGNsYXNzLCBzZWUgdGhlCiAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcHRlc3QnPjxmaWxlbmFtZT5wdGVzdC5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgogICAgICAgICAgICAgc2VjdGlvbi4KQEAgLTE1MjUsNyArMTUyNSw3IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIHRvcC1sZXZlbCA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IGZpbGUgaGFzIGJlZW4gY2hhbmdlZAogICAgICAgICAgICAgdG8gYmV0dGVyIGRlc2NyaWJlIHRoZSBsaWNlbnNlIG9mIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgb2YKLSAgICAgICAgICAgIE9FLUNvcmUuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvZS1jb3JlJz5PRS1Db3JlPC9saW5rPi4KICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBsaWNlbnNpbmcgaXRzZWxmIHJlbWFpbnMgdW5jaGFuZ2VkLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTE3NDgsNyArMTc0OCw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgbWluaW11bQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB2ZXJzaW9uIHJlcXVpcmVkCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4gdmVyc2lvbiByZXF1aXJlZAogICAgICAgICAgICAgb24gdGhlIGJ1aWxkIGhvc3QgaXMgbm93IDEuNy44IGJlY2F1c2UgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1saXN0PC9maWxlbmFtZT4gb3B0aW9uIGlzIG5vdyByZXF1aXJlZCBieQogICAgICAgICAgICAgQml0QmFrZSdzIEdpdCBmZXRjaGVyLgpAQCAtMjU3Miw3ICsyNTcyLDggQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIE1haW50ZW5hbmNlIHRyYWNraW5nIGRhdGEgZm9yIHJlY2lwZXMgdGhhdCB3YXMgcHJldmlvdXNseSBwYXJ0Ci0gICAgICAgICAgICBvZiA8ZmlsZW5hbWU+bWV0YS15b2N0bzwvZmlsZW5hbWU+IGhhcyBiZWVuIG1vdmVkIHRvIE9FLUNvcmUuCisgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+bWV0YS15b2N0bzwvZmlsZW5hbWU+IGhhcyBiZWVuIG1vdmVkIHRvCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvZS1jb3JlJz5PRS1Db3JlPC9saW5rPi4KICAgICAgICAgICAgIFRoZSBjaGFuZ2UgaW5jbHVkZXMgPGZpbGVuYW1lPnBhY2thZ2VfcmVnZXguaW5jPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvX2FsaWFzLmluYzwvZmlsZW5hbWU+LCB3aGljaCBhcmUgdHlwaWNhbGx5IGVuYWJsZWQKICAgICAgICAgICAgIHdoZW4gdXNpbmcgdGhlCkBAIC0zMDAwLDggKzMwMDEsNyBAQAogICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPiBpbnN0ZWFkLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJvb3QtZGlyZWN0ZGlzazwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBNZXJnZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW1hZ2Utdm0nPjxmaWxlbmFtZT5pbWFnZS12bTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBNZXJnZWQgaW50byB0aGUgPGZpbGVuYW1lPmltYWdlLXZtPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgY2xhc3MuCiAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Ym9vdC1kaXJlY3RkaXNrPC9maWxlbmFtZT4gY2xhc3Mgd2FzIHJhcmVseQogICAgICAgICAgICAgICAgICAgICBkaXJlY3RseSB1c2VkLgpAQCAtMzIxMCw3ICszMjEwLDggQEAKICAgICAgICAgICAgIFlvdSBjYW4gZW5hYmxlLCBkaXNhYmxlLCBhbmQgdGVzdCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGlzIGRhdGEuCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZW5hYmxpbmctZ29iamVjdC1pbnRyb3NwZWN0aW9uLXN1cHBvcnQnPkVuYWJsaW5nIEdPYmplY3QgSW50cm9zcGVjdGlvbiBTdXBwb3J0PC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0zNDE5LDcgKzM0MjAsOCBAQAogICAgICAgICAgICAgICAgIEZvciBoZWxwIHByZXBhcmluZyBtZXRhZGF0YSwgc2VlIGFueSBvZiB0aGUgbWFueSBQeXRob24gMyBwb3J0aW5nCiAgICAgICAgICAgICAgICAgZ3VpZGVzIGF2YWlsYWJsZS4KICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJlZmVyZW5jZSB0aGUgY29udmVyc2lvbiBjb21taXRzIGZvciBCaXRiYWtlCi0gICAgICAgICAgICAgICAgYW5kIHlvdSBjYW4gdXNlIE9FLUNvcmUgYXMgYSBndWlkZSBmb3IgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICBhbmQgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvZS1jb3JlJz5PRS1Db3JlPC9saW5rPiBhcyBhIGd1aWRlIGZvciBjaGFuZ2VzLgogICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgcGFydGljdWxhciBhcmVhcyBvZiBpbnRlcmVzdDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICogc3VicHJvY2VzcyBjb21tYW5kLWxpbmUgcGlwZXMgbmVlZGluZyBsb2NhbGUgZGVjb2RpbmcKQEAgLTM1MDgsNyArMzUxMCw4IEBACiAgICAgICAgICAgICBoYXJkLWNvZGluZyBhbnkga25vd2xlZGdlIGFib3V0IGRpZmZlcmVudCBtYWNoaW5lcy4KICAgICAgICAgICAgIFVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlIGlzIHBhcnRpY3VsYXJseSBjb252ZW5pZW50IHdoZW4gdHJ5aW5nCiAgICAgICAgICAgICB0byB1c2UgUUVNVSB3aXRoIG1hY2hpbmVzIG90aGVyIHRoYW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdSo8L2ZpbGVuYW1lPiBtYWNoaW5lcyBpbiBPRS1Db3JlLgorICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXUqPC9maWxlbmFtZT4gbWFjaGluZXMgaW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+LgogICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5xZW11Ym9vdC5jb25mPC9maWxlbmFtZT4gZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdWJvb3Q8L2ZpbGVuYW1lPgogICAgICAgICAgICAgY2xhc3Mgd2hlbiB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzIGJlaW5nIGJ1aWxkIChpLmUuCkBAIC00MDM1LDcgKzQwMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgYW4gZXhhbXBsZSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGl4YnVmY2FjaGU8L2ZpbGVuYW1lPiBjbGFzcyBpbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzLzwvZmlsZW5hbWU+IGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TU1RBVEVQT1NUSU5TVEZVTkNTPC9maWxlbmFtZT4gdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgIGl0c2VsZiBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUKQEAgLTQ0NzgsNyArNDQ4MSw4IEBACiAgICAgICAgICAgICAgICAgICAgIG5lZWRlZCBieSBjdXJyZW50IGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICBUaHVzLCBHU3RyZWFtZXIncyBpdm9yYmlzIHBsdWdpbiBoYXMgYmVlbiBkaXNhYmxlZAogICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IGVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRyZW1vcjwvZmlsZW5hbWU+IHJlY2lwZSBpbiBPRS1Db3JlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dHJlbW9yPC9maWxlbmFtZT4gcmVjaXBlIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmd1bW1pYm9vdDo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CkBAIC00NDk1LDggKzQ0OTksOCBAQAogICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIFdpYzoKICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFdpYywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMnPkNyZWF0aW5nIFBhcnRpdGlvbmVkIEltYWdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTQ3MTcsNiArNDcyMSw1MjMgQEAKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0yLjQtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjQtbWVtb3J5LXJlc2lkZW50LW1vZGUnPgorICAgICAgICA8dGl0bGU+TWVtb3J5IFJlc2lkZW50IE1vZGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBwZXJzaXN0ZW50IG1vZGUgaXMgbm93IGF2YWlsYWJsZSBpbiBCaXRCYWtlJ3MgZGVmYXVsdCBvcGVyYXRpb24sCisgICAgICAgICAgICByZXBsYWNpbmcgaXRzIHByZXZpb3VzICJtZW1vcnkgcmVzaWRlbnQgbW9kZSIgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBOb3cgeW91IG9ubHkgbmVlZCB0byBzZXQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9TRVJWRVJfVElNRU9VVDwvZmlsZW5hbWU+IHRvIGEgdGltZW91dAorICAgICAgICAgICAgKGluIHNlY29uZHMpIGFuZCBCaXRCYWtlJ3Mgc2VydmVyIHN0YXlzIHJlc2lkZW50IGZvciB0aGF0CisgICAgICAgICAgICBhbW91bnQgb2YgdGltZSBiZXR3ZWVuIGludm9jYXRpb25zLgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPiBzY3JpcHQgaGFzIGJlZW4KKyAgICAgICAgICAgIHJlbW92ZWQgc2luY2UgYSBzZXBhcmF0ZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgaXMgbm8gbG9uZ2VyCisgICAgICAgICAgICBuZWVkZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNC1wYWNrYWdpbmctY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5QYWNrYWdpbmcgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgcGFja2FnaW5nIGNoYW5nZXMgdGhhdCBoYXZlCisgICAgICAgICAgICBvY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uMzwvZmlsZW5hbWU+IENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiAicHl0aG9uMyIgcGFja2FnZSBub3cgYnJpbmdzIGluIGFsbCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZCBQeXRob24gMyBkaXN0cmlidXRpb24gcmF0aGVyIHRoYW4gYSBzdWJzZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBtYXRjaGVzIHdoYXQgaXMgZXhwZWN0ZWQgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFkaXRpb25hbCBMaW51eCBkaXN0cmlidXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIGluc3RhbGwgYSBzdWJzZXQgb2YgUHl0aG9uIDMsIHNwZWNpZnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uLWNvcmU8L2ZpbGVuYW1lPiBwbHVzIG9uZSBvciBtb3JlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluZGl2aWR1YWwgcGFja2FnZXMgdGhhdCBhcmUgc3RpbGwgcHJvZHVjZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24zPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ6Mi5weTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sem1hLnB5PC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fY29tcHJlc3Npb24ucHk8L2ZpbGVuYW1lPiBzY3JpcHRzIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIG1vdmVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjMtbWlzYzwvZmlsZW5hbWU+IHBhY2thZ2UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnB5dGhvbjMtY29tcHJlc3Npb248L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmJpbnV0aWxzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5saWJiZmQ8L2ZpbGVuYW1lPiBsaWJyYXJ5IGlzIG5vdyBwYWNrYWdlZCBpbgorICAgICAgICAgICAgICAgICAgICBhIHNlcGFyYXRlICJsaWJiZmQiIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFja2FnaW5nIHNhdmVzIHNwYWNlIHdoZW4gY2VydGFpbiB0b29scworICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cGVyZjwvZmlsZW5hbWU+KSBhcmUgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBJbiBzdWNoIGNhc2VzLCB0aGUgdG9vbHMgb25seSBuZWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJiZmQ8L2ZpbGVuYW1lPiByYXRoZXIgdGhhbiBhbGwgdGhlIHBhY2thZ2VzIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW51dGlsczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnN1PC9maWxlbmFtZT4gcHJvZ3JhbSBpcyBub3cgcGFja2FnZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIHNlcGFyYXRlICJ1dGlsLWxpbnV4LXN1IiBwYWNrYWdlLCB3aGljaCBpcyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgd2hlbiAicGFtIiBpcyBsaXN0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51dGlsLWxpbnV4PC9maWxlbmFtZT4gc2hvdWxkIG5vdCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCB1bmxlc3MgaXQgaXMgbmVlZGVkIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3U8L2ZpbGVuYW1lPiBpcyBub3JtYWxseSBwcm92aWRlZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNoYWRvdyBmaWxlIGZvcm1hdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZSBkZXBlbmRlbmNpZXMgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtc3U8L2ZpbGVuYW1lPiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiAicGFtIiBpcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zd2l0Y2hfcm9vdDwvZmlsZW5hbWU+IHByb2dyYW0gaXMgbm93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZWQgaW4gYSBzZXBhcmF0ZSAidXRpbC1saW51eC1zd2l0Y2gtcm9vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGZvciBzbWFsbCBpbml0cmFtZnMgaW1hZ2VzIHRoYXQgZG8gbm90IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2hvbGUgPGZpbGVuYW1lPnV0aWwtbGludXg8L2ZpbGVuYW1lPiBwYWNrYWdlIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1c3lib3ggYmluYXJ5LCB3aGljaCBhcmUgYm90aCBtdWNoIGxhcmdlciB0aGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN3aXRjaF9yb290PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gPGZpbGVuYW1lPnV0aWwtbGludXg8L2ZpbGVuYW1lPiBwYWNrYWdlIGhhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjb21tZW5kZWQgcnVudGltZSBkZXBlbmRlbmN5IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIDxmaWxlbmFtZT51dGlsLWxpbnV4LXN3aXRjaC1yb290PC9maWxlbmFtZT4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmlvbmljZTwvZmlsZW5hbWU+IHByb2dyYW0gaXMgbm93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZWQgaW4gYSBzZXBhcmF0ZSAidXRpbC1saW51eC1pb25pY2UiIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gPGZpbGVuYW1lPnV0aWwtbGludXg8L2ZpbGVuYW1lPiBwYWNrYWdlIGhhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjb21tZW5kZWQgcnVudGltZSBkZXBlbmRlbmN5IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIDxmaWxlbmFtZT51dGlsLWxpbnV4LWlvbmljZTwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aW5pdHNjcmlwdHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnN1c2hlbGw8L2ZpbGVuYW1lPiBwcm9ncmFtIGlzIG5vdyBwYWNrYWdlZCBpbgorICAgICAgICAgICAgICAgICAgICBhIHNlcGFyYXRlICJpbml0c2NyaXB0cy1zdXNoZWxsIiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHBhY2thZ2luZyBjaGFuZ2UgYWxsb3dzIHN5c3RlbXMgdG8gcHVsbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3VzaGVsbDwvZmlsZW5hbWU+IGluIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbGludXg8L2ZpbGVuYW1lPiBpcyBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgY2hhbmdlIGFsc28gZWxpbWluYXRlcyBuZWVkaW5nIHRvIHB1bGwgaW4gdGhlIGVudGlyZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5pdHNjcmlwdHM8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+aW5pdHNjcmlwdHM8L2ZpbGVuYW1lPiBwYWNrYWdlIGhhcyBhCisgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUgZGVwZW5kZW5jeSAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgb24gdGhlIDxmaWxlbmFtZT5zdXNoZWxsPC9maWxlbmFtZT4gcGFja2FnZSB3aGVuCisgICAgICAgICAgICAgICAgICAgICJzZWxpbnV4IiBpcyBpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2xpYi0yLjA8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdsaWItMi4wPC9maWxlbmFtZT4gcGFja2FnZSBub3cgaGFzIGEKKyAgICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWQgcnVudGltZSBkZXBlbmRlbmN5IChpLmUuCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoYXJlZC1taW1lLWluZm88L2ZpbGVuYW1lPiBwYWNrYWdlLCBzaW5jZSBsYXJnZQorICAgICAgICAgICAgICAgICAgICBwb3J0aW9ucyBvZiBHSU8gYXJlIG5vdCB1c2VmdWwgd2l0aG91dCB0aGUgTUlNRSBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZW1vdmUgdGhlIGRlcGVuZGVuY3kgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQURfUkVDT01NRU5EQVRJT05TJz48ZmlsZW5hbWU+QkFEX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpZiA8ZmlsZW5hbWU+c2hhcmVkLW1pbWUtaW5mbzwvZmlsZW5hbWU+IGlzIHRvbworICAgICAgICAgICAgICAgICAgICBsYXJnZSBhbmQgaXMgbm90IHJlcXVpcmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HbyBTdGFuZGFyZCBSdW50aW1lOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBHbyBzdGFuZGFyZCBydW50aW1lIGhhcyBiZWVuIHNwbGl0IG91dCBmcm9tIHRoZSBtYWluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nbzwvZmlsZW5hbWU+IHJlY2lwZSBpbnRvIGEgc2VwYXJhdGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdvLXJ1bnRpbWU8L2ZpbGVuYW1lPiByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNC1yZW1vdmVkLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBSZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmFjcGl0ZXN0czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG5vdCBtYWludGFpbmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YXV0b2dlbi1uYXRpdmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBObyBsb25nZXIgcmVxdWlyZWQgYnkgR3J1Yiwgb2UtY29yZSwgb3IgbWV0YS1vZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmJkd2djPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTm90aGluZyBpbiBPcGVuRW1iZWRkZWQtQ29yZSByZXF1aXJlcyB0aGlzIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgSXQgaGFzIG1vdmVkIHRvIG1ldGEtb2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5ieWFjYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyBvbmx5IG5lZWRlZCBieSBycG0gNS54IGFuZCBoYXMgbW92ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgbWV0YS1vZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdjYyAoNS40KTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSA1LjQgc2VyaWVzIGRyb3BwZWQgdGhlIHJlY2lwZSBpbiBmYXZvciBvZiA2LjMgLyA3LjIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nbm9tZS1jb21tb248L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGVkIHVwc3RyZWFtIGFuZCBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z28tYm9vdHN0cmFwLW5hdGl2ZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEdvIDEuOSBkb2VzIGl0cyBvd24gYm9vdHN0cmFwcGluZyBzbyB0aGlzIHJlY2lwZSBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z3VpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgb25seSBuZWVkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9nZW4tbmF0aXZlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZW1ha2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBpcyBubyBsb25nZXIgbmVlZGVkIGJ5IGVpdGhlciBvZiB0aGVzZSBwcm9ncmFtcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYmNsYXNzLWlzYS1wZXJsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHByZXZpb3VzbHkgbmVlZGVkIGZvciBMU0IgNCwgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYmR1bXB2YWx1ZS1wZXJsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHByZXZpb3VzbHkgbmVlZGVkIGZvciBMU0IgNCwgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYmVudi1wZXJsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHByZXZpb3VzbHkgbmVlZGVkIGZvciBMU0IgNCwgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYmZpbGUtY2hlY2t0cmVlLXBlcmw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcHJldmlvdXNseSBuZWVkZWQgZm9yIExTQiA0LCBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGliaTE4bi1jb2xsYXRlLXBlcmw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcHJldmlvdXNseSBuZWVkZWQgZm9yIExTQiA0LCBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGliaWNvbnY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgb25seSBuZWVkZWQgZm9yIDxmaWxlbmFtZT51Y2xpYmM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggd2FzIHJlbW92ZWQgaW4gdGhlIHByZXZpb3VzIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+bXVzbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGhhdmUgdGhlaXIgb3duIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtbWluZ3c8L2ZpbGVuYW1lPiBzdGlsbCBuZWVkcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliaWNvbnY8L2ZpbGVuYW1lPiwgc28gaXQgaGFzCisgICAgICAgICAgICAgICAgICAgIGJlZW4gbW92ZWQgdG8gPGZpbGVuYW1lPm1ldGEtbWluZ3c8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYnBuZzEyPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHByZXZpb3VzbHkgbmVlZGVkIGZvciBMU0IuIFRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJwbmc8L2ZpbGVuYW1lPiBpcyAxLjYueC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYnBvZC1wbGFpbmVyLXBlcmw8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcHJldmlvdXNseSBuZWVkZWQgZm9yIExTQiA0LCBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGludXgteW9jdG8gKDQuMSk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiA0LjQsIDQuOSwgNC4xMCBhbmQgNC4xMi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm1haWx4PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHByZXZpb3VzbHkgb25seSBuZWVkZWQgZm9yIExTQgorICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5LCBhbmQgdXBzdHJlYW0gaXMgZGVmdW5jdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm1lc2EgKGdpdCB2ZXJzaW9uIG9ubHkpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGdpdCB2ZXJzaW9uIHJlY2lwZSB3YXMgc3RhbGUgd2l0aCByZXNwZWN0IHRvIHRoZSByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5vZm9ubyAoZ2l0IHZlcnNpb24gb25seSk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZ2l0IHZlcnNpb24gcmVjaXBlIHdhcyBzdGFsZSB3aXRoIHJlc3BlY3QgdG8gdGhlIHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnBvcnRtYXA8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBvYnNvbGV0ZSBhbmQgaXMgc3VwZXJzZWRlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uMy1weWdwZ21lPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgaXMgb2xkIGFuZCB1bm1haW50YWluZWQuIEl0IHdhcyBwcmV2aW91c2x5CisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIGJ5IDxmaWxlbmFtZT5kbmY8L2ZpbGVuYW1lPiwgd2hpY2ggaGFzIHN3aXRjaGVkCisgICAgICAgICAgICAgICAgICAgIHRvIG9mZmljaWFsIDxmaWxlbmFtZT5ncGdtZTwvZmlsZW5hbWU+IFB5dGhvbiBiaW5kaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1hc3luYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIFB5dGhvbiAzCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tZ2l0ZGI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBQeXRob24gMworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLWdpdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIHRoZSBQeXRob24gMworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLW1ha288L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgUHl0aG9uIDMKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbi1wZXhwZWN0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIFB5dGhvbiAzIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tcHR5cHJvY2VzczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIFB5dGhvbiB0aGUgMyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cHl0aG9uLXB5Y3VybDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE5vdGhpbmcgaXMgdXNpbmcgdGhpcyByZWNpcGUgaW4gT3BlbkVtYmVkZGVkLUNvcmUKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPm1ldGEtb2U8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tc2l4PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyByZWNpcGUgd2FzIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIFB5dGhvbiAzIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5weXRob24tc21tYXA8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgUHl0aG9uIDMgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnJlbWFrZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5yZW1ha2U8L2ZpbGVuYW1lPiBhcyB0aGUgcHJvdmlkZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbWFrZTwvZmlsZW5hbWU+IGlzIGJyb2tlbi4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGlzIHJlY2lwZSBpcyBub3QgbmVlZGVkIGluIE9wZW5FbWJlZGRlZC1Db3JlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjQta2VybmVsLWRldmljZS10cmVlLW1vdmUnPgorICAgICAgICA8dGl0bGU+S2VybmVsIERldmljZSBUcmVlIE1vdmU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgS2VybmVsIERldmljZSBUcmVlIHN1cHBvcnQgaXMgbm93IGVhc2llciB0byBlbmFibGUgaW4gYSBrZXJuZWwKKyAgICAgICAgICAgIHJlY2lwZS4KKyAgICAgICAgICAgIFRoZSBEZXZpY2UgVHJlZSBjb2RlIGhhcyBtb3ZlZCB0byBhCisgICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIGZvciBhbnkgcmVjaXBlIHRoYXQgaW5oZXJpdHMKKyAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMta2VybmVsJz48ZmlsZW5hbWU+a2VybmVsPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBjbGFzcyBhbmQgc2V0cyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfREVWSUNFVFJFRSc+PGZpbGVuYW1lPktFUk5FTF9ERVZJQ0VUUkVFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgIFRoZSBwcmV2aW91cyBtZWNoYW5pc20gZm9yIGRvaW5nIHRoaXMsCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jPC9maWxlbmFtZT4sCisgICAgICAgICAgICBpcyBzdGlsbCBhdmFpbGFibGUgdG8gYXZvaWQgYnJlYWthZ2UsIGJ1dCB0cmlnZ2VycyBhCisgICAgICAgICAgICBkZXByZWNhdGlvbiB3YXJuaW5nLgorICAgICAgICAgICAgRnV0dXJlIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IHdpbGwgcmVtb3ZlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jPC9maWxlbmFtZT4uCisgICAgICAgICAgICBJdCBpcyBhZHZpc2FibGUgdG8gcmVtb3ZlIGFueSA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+CisgICAgICAgICAgICBzdGF0ZW1lbnRzIHRoYXQgcmVxdWVzdAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmcm9tIGFueSBjdXN0b20ga2VybmVsIHJlY2lwZXMgeW91IG1pZ2h0IGhhdmUuCisgICAgICAgICAgICBUaGlzIHdpbGwgYXZvaWQgYnJlYWthZ2UgaW4gcG9zdCAyLjQgcmVsZWFzZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNC1wYWNrYWdlLXFhLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UGFja2FnZSBRQSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcGFja2FnZSBRQSBjaGFuZ2VzIHRvb2sgcGxhY2U6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlICJ1bnNhZmUtcmVmZXJlbmNlcy1pbi1zY3JpcHRzIiBRQSBjaGVjayBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSByZWZlciB0byA8ZmlsZW5hbWU+JHtDT1JFQkFTRX0vTElDRU5TRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDX0ZJTEVTX0NIS1NVTSc+PGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgeW91IHJlY2VpdmUgYSB3YXJuaW5nIGJlY2F1c2UgdGhpcyBmaWxlIGlzIGEgZGVzY3JpcHRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGxpY2Vuc2UgZm9yIE9FLUNvcmUuCisgICAgICAgICAgICAgICAgICAgIFVzZSA8ZmlsZW5hbWU+JHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGlmIHlvdXIgcmVjaXBlIGlzIE1JVC1saWNlbnNlZCBhbmQgeW91IGNhbm5vdCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIHByZWZlcnJlZCBtZXRob2Qgb2YgcmVmZXJyaW5nIHRvIGEgZmlsZSB3aXRoaW4gdGhlIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICB0cmVlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjQtcmVhZG1lLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IEZpbGUgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBjaGFuZ2VzIHRvIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiBQb2t5IDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIG1vdmVkIHRvIHRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXIgYW5kCisgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIHJlbmFtZWQgPGZpbGVuYW1lPlJFQURNRS5wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEEgc3ltbGluayBoYXMgYmVlbiBjcmVhdGVkIHNvIHRoYXQgcmVmZXJlbmNlcyB0byB0aGUgb2xkCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5SRUFETUUuaGFyZHdhcmU8L2ZpbGVuYW1lPiBmaWxlIGhhcyBiZWVuIG1vdmVkCisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBBIHN5bWxpbmsgaGFzIGJlZW4gY3JlYXRlZCBzbyB0aGF0IHJlZmVyZW5jZXMgdG8gdGhlIG9sZAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiB3b3JrLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgPGZpbGVuYW1lPlJFQURNRS5xZW11PC9maWxlbmFtZT4gZmlsZSBoYXMgYmVlbiBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgIHdpdGggY292ZXJhZ2Ugb2YgdGhlIDxmaWxlbmFtZT5xZW11KjwvZmlsZW5hbWU+IG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjQtbWlzY2VsbGFuZW91cy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBhZGRpdGlvbmFsIGNoYW5nZXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ST09URlNfUEtHTUFOQUdFX0JPT1RTVFJBUDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCBhbnkgcmVmZXJlbmNlcyB0byBpdCBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCByZW1vdmUgdGhpcyB2YXJpYWJsZSBmcm9tIGFueSBjdXN0b20gcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEteW9jdG88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgWW9jdG8gUHJvamVjdCAyLjEgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG88L2ZpbGVuYW1lPiB3YXMgcmVuYW1lZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IHJlbWFpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWFpbnRhaW5lcnMuaW5jPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggdHJhY2tzCisgICAgICAgICAgICAgICAgICAgIG1haW50YWluZXJzIGJ5IGxpc3RpbmcgYSBwcmltYXJ5IHBlcnNvbiByZXNwb25zaWJsZSBmb3IgZWFjaAorICAgICAgICAgICAgICAgICAgICByZWNpcGUgaW4gT0UtQ29yZSwgaGFzIGJlZW4gbW92ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gdG8gT0UtQ29yZSAoaS5lLiBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJ1aWxkaGlzdG9yeSc+PGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBub3cgbWFrZXMgYSBzaW5nbGUgY29tbWl0IHBlciBidWlsZCByYXRoZXIgdGhhbiBvbmUKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0IHBlciBzdWJkaXJlY3RvcnkgaW4gdGhlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgYXNzdW1lcyB0aGUgY29tbWl0cyBhcmUgZW5hYmxlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMREhJU1RPUllfQ09NTUlUJz48ZmlsZW5hbWU+QlVJTERISVNUT1JZX0NPTU1JVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICA9ICIxIiwgd2hpY2ggaXMgdHlwaWNhbC4KKyAgICAgICAgICAgICAgICAgICAgUHJldmlvdXNseSwgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcyBtYWRlCisgICAgICAgICAgICAgICAgICAgIG9uZSBjb21taXQgcGVyIHN1YmRpcmVjdG9yeSBpbiB0aGUgcmVwb3NpdG9yeSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICBtYWtlIGl0IGVhc2llciB0byBzZWUgdGhlIGNoYW5nZXMgZm9yIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRvIHZpZXcgYSBwYXJ0aWN1bGFyIGNoYW5nZSwgc3BlY2lmeSB0aGF0IHN1YmRpcmVjdG9yeSBhcworICAgICAgICAgICAgICAgICAgICB0aGUgbGFzdCBwYXJhbWV0ZXIgb24gdGhlIDxmaWxlbmFtZT5naXQgc2hvdzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9yIDxmaWxlbmFtZT5naXQgZGlmZjwvZmlsZW5hbWU+IGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eDg2LWJhc2UuaW5jPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWQgYnkgYWxsIHg4Ni1iYXNlZCBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zLCBub3cgc2V0cworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgPGZpbGVuYW1lPj89PC9maWxlbmFtZT4gdG8gImxpdmUiIHJhdGhlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZGluZyB3aXRoIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgZGVmYXVsdCBlYXNpZXIgdG8gb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBmaXJlcyBtdWx0aXBsZSAiQnVpbGRTdGFydGVkIiBldmVudHMgd2hlbgorICAgICAgICAgICAgICAgICAgICBtdWx0aWNvbmZpZyBpcyBlbmFibGVkIChvbmUgcGVyIGNvbmZpZ3VyYXRpb24pLgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNldmVudHMnPkV2ZW50czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPnNlY3VyaXR5X2ZsYWdzLmluYzwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc2V0cyBhIDxmaWxlbmFtZT5HQ0NQSUU8L2ZpbGVuYW1lPiB2YXJpYWJsZSB3aXRoIGFuIG9wdGlvbgorICAgICAgICAgICAgICAgICAgICB0byBlbmFibGUgUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZXMgKFBJRSkgd2l0aGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgRW5hYmxpbmcgUElFIGluIHRoZSBHTlUgQyBDb21waWxlciAoR0NDKSwgbWFrZXMgUmV0dXJuCisgICAgICAgICAgICAgICAgICAgIE9yaWVudGVkIFByb2dyYW1taW5nIChST1ApIGF0dGFja3MgbXVjaCBtb3JlIGRpZmZpY3VsdCB0bworICAgICAgICAgICAgICAgICAgICBleGVjdXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9FLUNvcmUgbm93IHByb3ZpZGVzIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gcGx1Z2luIHRoYXQgaW1wbGVtZW50cworICAgICAgICAgICAgICAgICAgICBhICJjcmVhdGUtbGF5ZXIiIHN1YmNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHN1YmNvbW1hbmQgaGFzIHJlc3VsdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQgYmVpbmcgZGVwcmVjYXRlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnZtZGs8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnZkaTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+cWNvdzI8L2ZpbGVuYW1lPiBpbWFnZSBmaWxlIHR5cGVzIGFyZSBub3cKKyAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlICJ3aWMiIGltYWdlIHR5cGUgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT05WRVJTSU9OX0NNRDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIGVxdWl2YWxlbnQgaW1hZ2UgdHlwZXMgYXJlIG5vdworICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMudm1kazwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+d2ljLnZkaTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+d2ljLnFjb3cyPC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW1hZ2VfJmx0O3R5cGUmZ3Q7W2RlcGVuZHNdPC9maWxlbmFtZT4gaGFzCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkIDxmaWxlbmFtZT5JTUFHRV9ERVBFTkRTXyZsdDt0eXBlJmd0OzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSB5b3VyIG93biBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IGN1c3RvbSBpbWFnZQorICAgICAgICAgICAgICAgICAgICB0eXBlcywgdGhlbiB5b3UgbmVlZCB0byB1cGRhdGUgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPcGVuU1NMIDEuMSBoYXMgYmVlbiBpbnRyb2R1Y2VkLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgZGVmYXVsdCBpcyBzdGlsbCAxLjAueCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJFRkVSUkVEX1ZFUlNJT04nPjxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBwcmVmZXJlbmNlIGlzIHNldCBpcyBkdWUgdG8gdGhlIHJlbWFpbmluZyBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgIGlzc3VlcyB3aXRoIG90aGVyIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBST1ZJREVTJz48ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgIGluIHRoZSBvcGVuc3NsIDEuMCByZWNpcGUgbm93IGluY2x1ZGVzICJvcGVuc3NsMTAiCisgICAgICAgICAgICAgICAgICAgIGFzIGEgbWFya2VyIHRoYXQgY2FuIGJlIHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiByZWNpcGVzIHRoYXQgYnVpbGQgc29mdHdhcmUgdGhhdCBzdGlsbCBkZXBlbmQgb24KKyAgICAgICAgICAgICAgICAgICAgT3BlblNTTCAxLjAuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZW5zdXJlIGNvbnNpc3RlbnQgYmVoYXZpb3IsIEJpdEJha2UncyAiLXIiIGFuZCAiLVIiCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgKGkuZS4gcHJlZmlsZSBhbmQgcG9zdGZpbGUpLCB3aGljaCBhcmUgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICByZWFkIG9yIHBvc3QtcmVhZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZmlsZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaW5lLCBub3cgb25seSBhZmZlY3QgdGhlIGN1cnJlbnQgQml0QmFrZSBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgdGhlc2UgQml0QmFrZSBjaGFuZ2VzLCB0aGVzZSBvcHRpb25zIHdvdWxkICJzdGljayIKKyAgICAgICAgICAgICAgICAgICAgZm9yIGZ1dHVyZSBleGVjdXRpb25zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgogPC9jaGFwdGVyPgogPCEtLQogdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtYml0YmFrZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1iaXRiYWtlLnhtbAppbmRleCAyZjM2ZTE2Li4xN2Y0YzU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1iaXRiYWtlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1iaXRiYWtlLnhtbApAQCAtOCw3ICs4LDcgQEAKIAogICAgIDxwYXJhPgogICAgICAgICBCaXRCYWtlIGlzIGEgcHJvZ3JhbSB3cml0dGVuIGluIFB5dGhvbiB0aGF0IGludGVycHJldHMgdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IHVzZWQgYnkKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiB1c2VkIGJ5CiAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgogICAgICAgICBBdCBzb21lIHBvaW50LCBkZXZlbG9wZXJzIHdvbmRlciB3aGF0IGFjdHVhbGx5IGhhcHBlbnMgd2hlbiB5b3UgZW50ZXI6CiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTI0LDcgKzI0LDcgQEAKICAgICAgICAgQml0QmFrZSBzdHJpdmVzIHRvIGJlIGEgZ2VuZXJpYyAidGFzayIgZXhlY3V0b3IgdGhhdCBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIGNvbXBsZXggZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzLgogICAgICAgICBBcyBzdWNoLCBpdCBoYXMgbm8gcmVhbCBrbm93bGVkZ2Ugb2Ygd2hhdCB0aGUgdGFza3MgYmVpbmcgZXhlY3V0ZWQgYWN0dWFsbHkgZG8uCiAgICAgICAgIEJpdEJha2UganVzdCBjb25zaWRlcnMgYSBsaXN0IG9mIHRhc2tzIHdpdGggZGVwZW5kZW5jaWVzIGFuZCBoYW5kbGVzCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KICAgICAgICAgY29uc2lzdGluZyBvZiB2YXJpYWJsZXMgaW4gYSBjZXJ0YWluIGZvcm1hdCB0aGF0IGdldCBwYXNzZWQgdG8gdGhlIHRhc2tzLgogICAgIDwvbm90ZT4KIApAQCAtMzYsOSArMzYsMTAgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIEJpdEJha2UgZG9lcyBpcyBsb29rIGZvciB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICBUaGUgZmlyc3QgdGhpbmcgQml0QmFrZSBkb2VzIGlzIGxvb2sgZm9yIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUuCiAgICAgICAgICAgICBUaGlzIGZpbGUgcmVzaWRlcyBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgIHdpdGhpbiB0aGUgPGZpbGVuYW1lPm1ldGEvY29uZi88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCiAgICAgICAgICAgICBCaXRCYWtlIGZpbmRzIGl0IGJ5IGV4YW1pbmluZyBpdHMKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4gZW52aXJvbm1lbnQKQEAgLTkyLDggKzkzLDggQEAKICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtKi88L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIFBva3kuCiAgICAgICAgICAgICBBZGRpbmcgZXh0cmEgY29udGVudCB0byA8ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+IGlzIGJlc3QgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgdXNlIG9mCiAgICAgICAgICAgICBCaXRCYWtlIGxheWVycyBhcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZAotICAgICAgICAgICAgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMjI3LDEzICsyMjgsMTQgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIERlcGVuZGVuY2llcyBhcmUgZGVmaW5lZCB0aHJvdWdoIHNldmVyYWwgdmFyaWFibGVzLgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHZhcmlhYmxlcyBCaXRCYWtlIHVzZXMgaW4gdGhlIEJpdEJha2UgZG9jdW1lbnRhdGlvbiwKLSAgICAgICAgICAgIHdoaWNoIGlzIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS9kb2MvbWFudWFsPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJsZXMgQml0QmFrZSB1c2VzIGluIHRoZQorICAgICAgICAgICAgQml0QmFrZSBkb2N1bWVudGF0aW9uLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2RvYy9tYW51YWw8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICBBdCBhIGJhc2ljIGxldmVsLCBpdCBpcyBzdWZmaWNpZW50IHRvIGtub3cgdGhhdCBCaXRCYWtlIHVzZXMgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz5SREVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZXMgd2hlbgotICAgICAgICAgICAgY2FsY3VsYXRpbmcgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+UkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgIHZhcmlhYmxlcyB3aGVuIGNhbGN1bGF0aW5nIGRlcGVuZGVuY2llcy4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtNDQ4LDIwICs0NTAsMjMgQEAKICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3B0aW9ucyBhbmQgZm9ybWF0cyBvZiBlbnRyaWVzIGZvciBzcGVjaWZpYwogICAgICAgICAgICAgZmV0Y2hlcnMgaW4gdGhlIEJpdEJha2UgbWFudWFsIGxvY2F0ZWQgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9kb2MvbWFudWFsPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uZSB1c2VmdWwgZmVhdHVyZSBmb3IgY2VydGFpbiBTb3VyY2UgQ29kZSBNYW5hZ2VyIChTQ00pIGZldGNoZXJzIGlzIHRoZSBhYmlsaXR5IHRvCi0gICAgICAgICAgICAiYXV0by11cGRhdGUiIHdoZW4gdGhlIHVwc3RyZWFtIFNDTSBjaGFuZ2VzIHZlcnNpb24uCi0gICAgICAgICAgICBTaW5jZSB0aGlzIGFiaWxpdHkgcmVxdWlyZXMgY2VydGFpbiBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIFNDTSwgbm90IGFsbAotICAgICAgICAgICAgc3lzdGVtcyBzdXBwb3J0IGl0LgotICAgICAgICAgICAgQ3VycmVudGx5IFN1YnZlcnNpb24sIEJhemFhciBhbmQgdG8gYSBsaW1pdGVkIGV4dGVudCwgR2l0IHN1cHBvcnQgdGhlIGFiaWxpdHkgdG8gImF1dG8tdXBkYXRlIi4KKyAgICAgICAgICAgIE9uZSB1c2VmdWwgZmVhdHVyZSBmb3IgY2VydGFpbiBTb3VyY2UgQ29kZSBNYW5hZ2VyIChTQ00pIGZldGNoZXJzCisgICAgICAgICAgICBpcyB0aGUgYWJpbGl0eSB0byAiYXV0by11cGRhdGUiIHdoZW4gdGhlIHVwc3RyZWFtIFNDTSBjaGFuZ2VzCisgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgU2luY2UgdGhpcyBhYmlsaXR5IHJlcXVpcmVzIGNlcnRhaW4gZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSBTQ00sCisgICAgICAgICAgICBub3QgYWxsIHN5c3RlbXMgc3VwcG9ydCBpdC4KKyAgICAgICAgICAgIEN1cnJlbnRseSBTdWJ2ZXJzaW9uLCBCYXphYXIgYW5kIHRvIGEgbGltaXRlZCBleHRlbnQsIEdpdCBzdXBwb3J0CisgICAgICAgICAgICB0aGUgYWJpbGl0eSB0byAiYXV0by11cGRhdGUiLgogICAgICAgICAgICAgVGhpcyBmZWF0dXJlIHdvcmtzIHVzaW5nIHRoZSA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+U1JDUkVWPC9saW5rPjwvZmlsZW5hbWU+CiAgICAgICAgICAgICB2YXJpYWJsZS4KICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWFwcGRldi1zcmNyZXYnPlVzaW5nIGFuIEV4dGVybmFsIFNDTTwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1hcHBkZXYtc3JjcmV2Jz5Vc2luZyBhbiBFeHRlcm5hbCBTQ008L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbAppbmRleCBjODgxNjJiLi41OTYxZDNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbApAQCAtMTYsMTIgKzE2LDEyIEBACiA8L3BhcmE+CiAKIDxwYXJhPgotICAgIEFueSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiB1c3VhbGx5CisgICAgQW55IDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4gdXN1YWxseQogICAgIGZvdW5kIGluIGEgcmVjaXBlIGNhbiBhbHNvIGJlIHBsYWNlZCBpbiBhIGNsYXNzIGZpbGUuCiAgICAgQ2xhc3MgZmlsZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIGV4dGVuc2lvbiA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPgogICAgIGFuZCBhcmUgdXN1YWxseSBwbGFjZWQgaW4gYSA8ZmlsZW5hbWU+Y2xhc3Nlcy88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgYmVuZWF0aAogICAgIHRoZSA8ZmlsZW5hbWU+bWV0YSovPC9maWxlbmFtZT4gZGlyZWN0b3J5IGZvdW5kIGluIHRoZQotICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICBDbGFzcyBmaWxlcyBjYW4gYWxzbyBiZSBwb2ludGVkIHRvIGJ5CiAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxERElSJz48ZmlsZW5hbWU+QlVJTERESVI8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAoZS5nLiA8ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT4pIGluIHRoZSBzYW1lIHdheSBhcwpAQCAtMzYsNyArMzYsNyBAQAogICAgIFRoaXMgY2hhcHRlciBkaXNjdXNzZXMgb25seSB0aGUgbW9zdCB1c2VmdWwgYW5kIGltcG9ydGFudCBjbGFzc2VzLgogICAgIE90aGVyIGNsYXNzZXMgZG8gZXhpc3Qgd2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzPC9maWxlbmFtZT4KICAgICBkaXJlY3RvcnkgaW4gdGhlCi0gICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgIFlvdSBjYW4gcmVmZXJlbmNlIHRoZSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlcyBkaXJlY3RseQogICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogPC9wYXJhPgpAQCAtOTQsNyArOTQsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBzb3VyY2UgYXJjaGl2ZXIsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUFSQ0hJVkVSX01PREUnPjxmaWxlbmFtZT5BUkNISVZFUl9NT0RFPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgIHZhcmlhYmxlIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFyaWFibGUgZmxhZ3MgKHZhcmZsYWdzKQpAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgICAgIFRoZXNlIGNsYXNzZXMgY2FuIGFsc28gd29yayB3aXRoIHNvZnR3YXJlIHRoYXQgZW11bGF0ZXMgQXV0b3Rvb2xzLgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1hdXRvdG9vbGVkLXBhY2thZ2UnPkF1dG90b29sZWQgUGFja2FnZTwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC0zMzMsNyArMzMzLDcgQEAKICAgICAgICAgRm9yIGRldGFpbHMgb24gaG93IHRoZSBjbGFzcyB3b3Jrcywgc2VlIHRoZQogICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2JsdWV0b290aC5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgWW9jdG8KICAgICAgICAgUHJvamVjdAotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtNjQxLDcgKzY0MSw3IEBACiAgICAgICAgIERpc3RyaWJ1dGlvbiBwb2xpY3kgZGljdGF0ZXMgd2hldGhlciB0byBpbmNsdWRlIHRoaXMgY2xhc3MuCiAgICAgICAgIFNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BsYXRkZXYtYXBwZGV2LWRldnNoZWxsJz5Vc2luZyBhIERldmVsb3BtZW50IFNoZWxsPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAogICAgICAgICB1c2luZyA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPi4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CkBAIC04MTYsMTEgKzgxNiwxMSBAQAogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUKICAgICAgICAgPGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT4gY2xhc3MsIHNlZSB0aGUgY29tbWVudHMgaW4KICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPgogICAgICAgICBjbGFzcywgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UnPkJ1aWxkaW5nIFNvZnR3YXJlIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTEyNDcsNyArMTI0Nyw3IEBACiAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3VzdG9taXppbmcgaW1hZ2VzLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlJz5DdXN0b21pemluZyBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IGltYWdlcyBhcmUgY3JlYXRlZCwgc2VlIHRoZQogICAgICAgICAiPGxpbmsgbGlua2VuZD0naW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+SW1hZ2VzPC9saW5rPiIgc2VjdGlvbiBlbHNld2hlcmUKICAgICAgICAgaW4gdGhpcyBtYW51YWwuCkBAIC0xMjg2LDE0ICsxMjg2LDE1IEBACiAgICAgICAgIDxmaWxlbmFtZT5pbWFnZV90eXBlczwvZmlsZW5hbWU+IG11c3QgYWxzbyBhcHBlYXIgaW4KICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPi4KICAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1pbWFnZV90eXBlc191Ym9vdCc+Ci0gICAgPHRpdGxlPjxmaWxlbmFtZT5pbWFnZV90eXBlc191Ym9vdC5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSA8ZmlsZW5hbWU+aW1hZ2VfdHlwZXNfdWJvb3Q8L2ZpbGVuYW1lPiBjbGFzcwotICAgICAgICBkZWZpbmVzIGFkZGl0aW9uYWwgaW1hZ2UgdHlwZXMgc3BlY2lmaWNhbGx5IGZvciB0aGUgVS1Cb290IGJvb3Rsb2FkZXIuCisgICAgICAgIFRoaXMgY2xhc3MgYWxzbyBoYW5kbGVzIGNvbnZlcnNpb24gYW5kIGNvbXByZXNzaW9uIG9mIGltYWdlcy4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBUbyBidWlsZCBhIFZNd2FyZSBWTURLIGltYWdlLCB5b3UgbmVlZCB0byBhZGQgIndpYy52bWRrIiB0bworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgVGhpcyB3b3VsZCBhbHNvIGJlIHNpbWlsYXIgZm9yIFZpcnR1YWwgQm94IFZpcnR1YWwgRGlzayBJbWFnZQorICAgICAgICAgICAgKCJ2ZGkiKSBhbmQgUUVNVSBDb3B5IE9uIFdyaXRlIFZlcnNpb24gMiAoInFjb3cyIikgaW1hZ2VzLgorICAgICAgICA8L25vdGU+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0xMzcwLDI3ICsxMzcxLDYgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1pbWFnZS12bSc+Ci0gICAgPHRpdGxlPjxmaWxlbmFtZT5pbWFnZS12bS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSA8ZmlsZW5hbWU+aW1hZ2Utdm08L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBidWlsZGluZyBWTQotICAgICAgICBpbWFnZXMuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtaW1hZ2Utdm1kayc+Ci0gICAgPHRpdGxlPjxmaWxlbmFtZT5pbWFnZS12bWRrLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZS12bWRrPC9maWxlbmFtZT4gY2xhc3Mgc3VwcG9ydHMgYnVpbGRpbmcgVk13YXJlCi0gICAgICAgIFZNREsgaW1hZ2VzLgotICAgICAgICBOb3JtYWxseSwgeW91IGRvIG5vdCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseS4KLSAgICAgICAgSW5zdGVhZCwgeW91IGFkZCAidm1kayIgdG8KLSAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+LgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQogPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWluc2FuZSc+CiAgICAgPHRpdGxlPjxmaWxlbmFtZT5pbnNhbmUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KIApAQCAtMTc4OCwyNyArMTc2OCw2IEBACiAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogLS0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT51bnNhZmUtcmVmZXJlbmNlcy1pbi1zY3JpcHRzOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBSZXBvcnRzIHdoZW4gYSBzY3JpcHQgZmlsZSBpbnN0YWxsZWQgaW4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX2xpYmRpcn08L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX2JpbmRpcn08L2ZpbGVuYW1lPiwgb3IKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX3NiaW5kaXJ9PC9maWxlbmFtZT4sIGRlcGVuZHMgb24gZmlsZXMKLSAgICAgICAgICAgICAgICBpbnN0YWxsZWQgdW5kZXIgPGZpbGVuYW1lPiR7ZXhlY19wcmVmaXh9PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgVGhpcyBkZXBlbmRlbmN5IGlzIGEgY29uY2VybiBpZiB5b3Ugd2FudCB0aGUgc3lzdGVtIHRvIHJlbWFpbgotICAgICAgICAgICAgICAgIGJhc2ljYWxseSBvcGVyYWJsZSBpZiA8ZmlsZW5hbWU+L3VzcjwvZmlsZW5hbWU+IGlzIG1vdW50ZWQKLSAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5IGFuZCBpcyBub3QgbW91bnRlZC4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgZm9yIGJpbmFyaWVzIGluc3RhbGxlZCBpbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX2xpYmRpcn08L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7YmFzZV9iaW5kaXJ9PC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiYXNlX3NiaW5kaXJ9PC9maWxlbmFtZT4gYXJlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vbGliPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4vYmluPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3NiaW48L2ZpbGVuYW1lPiwgcmVzcGVjdGl2ZWx5LgotICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBmb3IgYSBiaW5hcnkgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgIHVuZGVyIDxmaWxlbmFtZT4ke2V4ZWNfcHJlZml4fTwvZmlsZW5hbWU+IGlzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+dXNlbGVzcy1ycGF0aHM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIENoZWNrcyBmb3IgZHluYW1pYyBsaWJyYXJ5IGxvYWQgcGF0aHMgKHJwYXRocykgaW4gdGhlIGJpbmFyaWVzIHRoYXQKICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IG9uIGEgc3RhbmRhcmQgc3lzdGVtIGFyZSBzZWFyY2hlZCBieSB0aGUgbGlua2VyIChlLmcuCkBAIC0xOTAwLDcgKzE4NTksNyBAQAogICAgICAgICB5b3UgYnVpbGQgdGhlIGtlcm5lbCBpbWFnZS4KICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBidWlsZCBhbiBpbml0cmFtZnMsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkaW5nLWFuLWluaXRyYW1mcy1pbWFnZSc+QnVpbGRpbmcgYW4gSW5pdGlhbCBSQU0gRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBJbWFnZTwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC0yMTk0LDcgKzIxNTMsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgTXVsdGlsaWIgZmVhdHVyZSwgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY29tYmluaW5nLW11bHRpcGxlLXZlcnNpb25zLWxpYnJhcnktZmlsZXMtaW50by1vbmUtaW1hZ2UnPkNvbWJpbmluZyBNdWx0aXBsZSBWZXJzaW9ucyBvZiBMaWJyYXJ5IEZpbGVzIGludG8gT25lIEltYWdlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTIzMjgsNyArMjI4Nyw3IEBACiAgICAgICAgIFRoZSA8ZmlsZW5hbWU+b2VsaW50PC9maWxlbmFtZT4gY2xhc3MgaXMgYW4KICAgICAgICAgb2Jzb2xldGUgbGludCBjaGVja2luZyB0b29sIHRoYXQgZXhpc3RzIGluCiAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXM8L2ZpbGVuYW1lPiBpbiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTIzOTMsNyArMjM1Miw3IEBACiAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz5QQUNLQUdFX0NMQVNTRVM8L2xpbms+PC9maWxlbmFtZT4KICAgICAgICAgdmFyaWFibGUgZGVmaW5lZCBpbiB5b3VyIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgV2hlbiBkZWZpbmluZyB0aGUgdmFyaWFibGUsIHlvdSBjYW4gc3BlY2lmeSBvbmUgb3IgbW9yZSBwYWNrYWdlIHR5cGVzLgogICAgICAgICBTaW5jZSBpbWFnZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHBhY2thZ2VzLCBhIHBhY2thZ2luZyBjbGFzcyBpcwogICAgICAgICBuZWVkZWQgdG8gZW5hYmxlIGltYWdlIGdlbmVyYXRpb24uCkBAIC0yNDA3LDcgKzIzNjYsNyBAQAogICAgICAgICBvbiB0aGUgdGFyZ2V0IChpLmUuIHJ1bnRpbWUgaW5zdGFsbGF0aW9uIG9mIHBhY2thZ2VzKS4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLXJ1bnRpbWUtcGFja2FnZS1tYW5hZ2VtZW50Jz5Vc2luZyBSdW50aW1lIFBhY2thZ2UgTWFuYWdlbWVudDwvdWxpbms+IgotICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTI0MTksNyArMjM3OCw3IEBACiAgICAgICAgIGFsbCBkZXBlbmRlbmNpZXMgcHJldmlvdXNseSBidWlsdC4KICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBkaXNjcmVwYW5jeSBpcyBiZWNhdXNlIHRoZSBSUE0gcGFja2FnZSBtYW5hZ2VyCiAgICAgICAgIGNyZWF0ZXMgYW5kIHByb2Nlc3NlcyBtb3JlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+IHRoYW4gdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4gdGhhbiB0aGUKICAgICAgICAgSVBLIHBhY2thZ2UgbWFuYWdlci4KICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbWlnaHQgY29uc2lkZXIgc2V0dGluZwogICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT4gdG8gInBhY2thZ2VfaXBrIiBpZiB5b3UgYXJlCkBAIC0yNTg3LDcgKzI1NDYsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIGNsYXNzLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlLWN1c3RvbXRhc2tzJz5DdXN0b21pemluZyBJbWFnZXMgVXNpbmcgQ3VzdG9tIFBhY2thZ2UgR3JvdXBzPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTI2NzYsNyArMjYzNSw4IEBACiAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9zZGsnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgdGFzaywgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtMjc1Niw4ICsyNzE2LDggQEAKICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3Nkayc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICB0YXNrLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncwotICAgICAgICBHdWlkZS4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0yODMwLDggKzI3OTAsOCBAQAogICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICBTZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN0ZXN0aW5nLXBhY2thZ2VzLXdpdGgtcHRlc3QnPlRlc3RpbmcgUGFja2FnZXMgV2l0aCBwdGVzdDwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbgotICAgICAgICBvbiBwdGVzdC4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgaW5mb3JtYXRpb24gb24gcHRlc3QuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0yODQ3LDcgKzI4MDcsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCBhbmQgcnVubmluZyBwdGVzdHMsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+VGVzdGluZyBQYWNrYWdlcyBXaXRoIHB0ZXN0PC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTI5ODgsNyArMjk0OCw3IEBACiAgICAgICAgIGFzIHRoZSBidWlsZCBwcm9ncmVzc2VzLCB5b3UgY2FuIGVuYWJsZSA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+CiAgICAgICAgIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAogICAgICAgICB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgSU5IRVJJVCArPSAicm1fd29yayIKICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMzQ1NSw3ICszNDE1LDcgQEAKICAgICA8cGFyYT4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPiwgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2VsZWN0aW5nLWFuLWluaXRpYWxpemF0aW9uLW1hbmFnZXInPlNlbGVjdGluZyBhbiBJbml0aWFsaXphdGlvbiBNYW5hZ2VyPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTM1NTUsNyArMzUxNSw3IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZW5hYmxlLCBydW4sIGFuZCBjcmVhdGUgbmV3IHRlc3RzLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0zNzM3LDcgKzM2OTcsOCBAQAogICAgICAgICBwcm92aWRlIHBhdGhuYW1lcyBmb3IgbGlua3MsIGRlZmF1bHQgbGlua3MgZm9yIHRhcmdldHMsIGFuZAogICAgICAgICBzbyBmb3J0aC4KICAgICAgICAgRm9yIGRldGFpbHMgb24gaG93IHRvIHVzZSB0aGlzIGNsYXNzLCBzZWUgdGhlIGNvbW1lbnRzIGluIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9jbGFzc2VzL3VwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzcyc+PGZpbGVuYW1lPnVwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzczwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL2NsYXNzZXMvdXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzJz48ZmlsZW5hbWU+dXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICBmaWxlLgogICAgIDwvcGFyYT4KIAogICAgIDxub3RlPgpAQCAtMzc3Nyw4ICszNzM4LDkgQEAKICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIHBhY2thZ2VzIHRoYXQgY29udGFpbiBzeXN0ZW0gc2VydmljZXMgdGhhdAogICAgICAgICBzaG91bGQgYmUgcnVuIHVuZGVyIHRoZWlyIG93biB1c2VyIG9yIGdyb3VwLCB5b3UgY2FuIHVzZSB0aGVzZSBjbGFzc2VzCiAgICAgICAgIHRvIGVuYWJsZSBjcmVhdGlvbiBvZiB0aGUgdXNlciBvciBncm91cC4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXNrZWxldG9uL3JlY2lwZXMtc2tlbGV0b24vdXNlcmFkZC91c2VyYWRkLWV4YW1wbGUuYmI8L2ZpbGVuYW1lPgotICAgICAgICByZWNpcGUgaW4gdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICBUaGUKKyAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2tlbGV0b24vcmVjaXBlcy1za2VsZXRvbi91c2VyYWRkL3VzZXJhZGQtZXhhbXBsZS5iYjwvZmlsZW5hbWU+CisgICAgICAgIHJlY2lwZSBpbiB0aGUgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgcHJvdmlkZXMgYSBzaW1wbGUgZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBhZGQgdGhyZWUKICAgICAgICAgdXNlcnMgYW5kIGdyb3VwcyB0byB0d28gcGFja2FnZXMuCiAgICAgICAgIFNlZSB0aGUgPGZpbGVuYW1lPnVzZXJhZGQtZXhhbXBsZS5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmb3IgbW9yZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMTk3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKQEAgLTAsMCArMSwyNzYxIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorCis8Y2hhcHRlciBpZD0ncmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50Jz4KKzx0aXRsZT5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+CisKKzxwYXJhPgorICAgIFRoaXMgY2hhcHRlciB0YWtlcyBhIGxvb2sgYXQgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICBlbnZpcm9ubWVudCBhbmQgYWxzbyBwcm92aWRlcyBhIGRldGFpbGVkIGxvb2sgYXQgd2hhdCBnb2VzIG9uIGR1cmluZworICAgIGRldmVsb3BtZW50IGluIHRoYXQgZW52aXJvbm1lbnQuCisgICAgVGhlIGNoYXB0ZXIgcHJvdmlkZXMgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25jZXB0cyB0aGF0CisgICAgaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgd29yayBpcyBhY2NvbXBsaXNoZWQgaW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsCisgICAgd2hpY2ggaXMgdmVyeSBkaWZmZXJlbnQgYXMgY29tcGFyZWQgdG8gd29yayBhY2NvbXBsaXNoZWQgaW4gYSBjbG9zZWQsCisgICAgcHJvcHJpZXRhcnkgZW52aXJvbm1lbnQuCis8L3BhcmE+CisKKzxwYXJhPgorICAgIFNwZWNpZmljYWxseSwgdGhpcyBjaGFwdGVyIGFkZHJlc3NlcyBvcGVuIHNvdXJjZSBwaGlsb3NvcGh5LCB3b3JrZmxvd3MsCisgICAgR2l0LCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBsaWNlbnNpbmcsIHJlY2lwZSBzeW50YXgsIGFuZCBkZXZlbG9wbWVudAorICAgIHN5bnRheC4KKzwvcGFyYT4KKworPHNlY3Rpb24gaWQ9J29wZW4tc291cmNlLXBoaWxvc29waHknPgorICAgIDx0aXRsZT5PcGVuIFNvdXJjZSBQaGlsb3NvcGh5PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBPcGVuIHNvdXJjZSBwaGlsb3NvcGh5IGlzIGNoYXJhY3Rlcml6ZWQgYnkgc29mdHdhcmUgZGV2ZWxvcG1lbnQKKyAgICAgICAgZGlyZWN0ZWQgYnkgcGVlciBwcm9kdWN0aW9uIGFuZCBjb2xsYWJvcmF0aW9uIHRocm91Z2ggYW4gYWN0aXZlCisgICAgICAgIGNvbW11bml0eSBvZiBkZXZlbG9wZXJzLgorICAgICAgICBDb250cmFzdCB0aGlzIHRvIHRoZSBtb3JlIHN0YW5kYXJkIGNlbnRyYWxpemVkIGRldmVsb3BtZW50IG1vZGVscworICAgICAgICB1c2VkIGJ5IGNvbW1lcmNpYWwgc29mdHdhcmUgY29tcGFuaWVzIHdoZXJlIGEgZmluaXRlIHNldCBvZiBkZXZlbG9wZXJzCisgICAgICAgIHByb2R1Y2VzIGEgcHJvZHVjdCBmb3Igc2FsZSB1c2luZyBhIGRlZmluZWQgc2V0IG9mIHByb2NlZHVyZXMgdGhhdAorICAgICAgICB1bHRpbWF0ZWx5IHJlc3VsdCBpbiBhbiBlbmQgcHJvZHVjdCB3aG9zZSBhcmNoaXRlY3R1cmUgYW5kIHNvdXJjZQorICAgICAgICBtYXRlcmlhbCBhcmUgY2xvc2VkIHRvIHRoZSBwdWJsaWMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIE9wZW4gc291cmNlIHByb2plY3RzIGNvbmNlcHR1YWxseSBoYXZlIGRpZmZlcmluZyBjb25jdXJyZW50IGFnZW5kYXMsCisgICAgICAgIGFwcHJvYWNoZXMsIGFuZCBwcm9kdWN0aW9uLgorICAgICAgICBUaGVzZSBmYWNldHMgb2YgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MgY2FuIGNvbWUgZnJvbSBhbnlvbmUgaW4gdGhlCisgICAgICAgIHB1YmxpYyAoY29tbXVuaXR5KSB0aGF0IGhhcyBhIHN0YWtlIGluIHRoZSBzb2Z0d2FyZSBwcm9qZWN0LgorICAgICAgICBUaGUgb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQgY29udGFpbnMgbmV3IGNvcHlyaWdodCwgbGljZW5zaW5nLCBkb21haW4sCisgICAgICAgIGFuZCBjb25zdW1lciBpc3N1ZXMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgbW9yZSB0cmFkaXRpb25hbCBkZXZlbG9wbWVudAorICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgSW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsIHRoZSBlbmQgcHJvZHVjdCwgc291cmNlIG1hdGVyaWFsLAorICAgICAgICBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgYWxsIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGF0IG5vIGNvc3QuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEEgYmVuY2htYXJrIGV4YW1wbGUgb2YgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBpcyB0aGUgTGludXgga2VybmVsLAorICAgICAgICB3aGljaCB3YXMgaW5pdGlhbGx5IGNvbmNlaXZlZCBhbmQgY3JlYXRlZCBieSBGaW5uaXNoIGNvbXB1dGVyIHNjaWVuY2UKKyAgICAgICAgc3R1ZGVudCBMaW51cyBUb3J2YWxkcyBpbiAxOTkxLgorICAgICAgICBDb252ZXJzZWx5LCBhIGdvb2QgZXhhbXBsZSBvZiBhIG5vbi1vcGVuIHNvdXJjZSBwcm9qZWN0IGlzIHRoZQorICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5XaW5kb3dzPC90cmFkZW1hcms+IGZhbWlseSBvZiBvcGVyYXRpbmcKKyAgICAgICAgc3lzdGVtcyBkZXZlbG9wZWQgYnkKKyAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+TWljcm9zb2Z0PC90cmFkZW1hcms+IENvcnBvcmF0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaWtpcGVkaWEgaGFzIGEgZ29vZCBoaXN0b3JpY2FsIGRlc2NyaXB0aW9uIG9mIHRoZSBPcGVuIFNvdXJjZQorICAgICAgICBQaGlsb3NvcGh5CisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbl9zb3VyY2UnPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgaGVscGZ1bCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcGFydGljaXBhdGUgaW4gdGhlCisgICAgICAgIExpbnV4IENvbW11bml0eQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGRuLmxpbnV4Zm91bmRhdGlvbi5vcmcvYm9vay9ob3ctcGFydGljaXBhdGUtbGludXgtY29tbXVuaXR5Jz5oZXJlPC91bGluaz4uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nd29ya2Zsb3dzJz4KKyAgICA8dGl0bGU+V29ya2Zsb3dzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgd29ya2Zsb3cgY29uY2VwdHMgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgYW5kCisgICAgICAgIEdpdC4KKyAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGluZm9ybWF0aW9uIGNvdmVycyBiYXNpYyBwcmFjdGljZXMgdGhhdCBkZXNjcmliZQorICAgICAgICByb2xlcyBhbmQgYWN0aW9ucyBpbiBhIGNvbGxhYm9yYXRpdmUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgSWYgeW91IGFyZSBmYW1pbGlhciB3aXRoIHRoaXMgdHlwZSBvZiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgeW91CisgICAgICAgICAgICBtaWdodCBub3Qgd2FudCB0byByZWFkIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBmaWxlcyBhcmUgbWFpbnRhaW5lZCB1c2luZyBHaXQgaW4gIm1hc3RlciIKKyAgICAgICAgYnJhbmNoZXMgd2hvc2UgR2l0IGhpc3RvcmllcyB0cmFjayBldmVyeSBjaGFuZ2UgYW5kIHdob3NlIHN0cnVjdHVyZXMKKyAgICAgICAgcHJvdmlkZXMgYnJhbmNoZXMgZm9yIGFsbCBkaXZlcmdpbmcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgQWx0aG91Z2ggdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgR2l0LCBtYW55IG9wZW4gc291cmNlIHByb2plY3RzIGRvIHNvLgorICAgIDxwYXJhPgorCisgICAgPC9wYXJhPgorICAgICAgICBGb3IgdGhlIFlvY3RvIFByb2plY3QsIGEga2V5IGluZGl2aWR1YWwgY2FsbGVkIHRoZSAibWFpbnRhaW5lciIgaXMKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSAibWFzdGVyIiBicmFuY2ggb2YgYSBnaXZlbiBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgVGhlICJtYXN0ZXIiIGJyYW5jaCBpcyB0aGUg4oCcdXBzdHJlYW3igJ0gcmVwb3NpdG9yeSBmcm9tIHdoaWNoIGZpbmFsIG9yCisgICAgICAgIG1vc3QgcmVjZW50IGJ1aWxkcyBvZiB0aGUgcHJvamVjdCBvY2N1ci4KKyAgICAgICAgVGhlIG1haW50YWluZXIgaXMgcmVzcG9uc2libGUgZm9yIGFjY2VwdGluZyBjaGFuZ2VzIGZyb20gb3RoZXIKKyAgICAgICAgZGV2ZWxvcGVycyBhbmQgZm9yIG9yZ2FuaXppbmcgdGhlIHVuZGVybHlpbmcgYnJhbmNoIHN0cnVjdHVyZSB0bworICAgICAgICByZWZsZWN0IHJlbGVhc2Ugc3RyYXRlZ2llcyBhbmQgc28gZm9ydGguCisgICAgICAgIDxub3RlPkZvciBpbmZvcm1hdGlvbiBvbiBmaW5kaW5nIG91dCB3aG8gaXMgcmVzcG9uc2libGUgZm9yIChtYWludGFpbnMpCisgICAgICAgICAgICBhIHBhcnRpY3VsYXIgYXJlYSBvZiBjb2RlLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBhbHNvIGhhcyBhbgorICAgICAgICB1cHN0cmVhbSBjb250cmlidXRpb24gR2l0IHJlcG9zaXRvcnkgbmFtZWQKKyAgICAgICAgPGZpbGVuYW1lPnBva3ktY29udHJpYjwvZmlsZW5hbWU+LgorICAgICAgICBZb3UgY2FuIHNlZSBhbGwgdGhlIGJyYW5jaGVzIGluIHRoaXMgcmVwb3NpdG9yeSB1c2luZyB0aGUgd2ViIGludGVyZmFjZQorICAgICAgICBvZiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4gb3JnYW5pemVkCisgICAgICAgIHdpdGhpbiB0aGUgIlBva3kgU3VwcG9ydCIgYXJlYS4KKyAgICAgICAgVGhlc2UgYnJhbmNoZXMgdGVtcG9yYXJpbHkgaG9sZCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IHRoYXQgaGF2ZSBiZWVuCisgICAgICAgIHN1Ym1pdHRlZCBvciBjb21taXR0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgdGVhbSBhbmQgYnkKKyAgICAgICAgY29tbXVuaXR5IG1lbWJlcnMgd2hvIGNvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QuCisgICAgICAgIFRoZSBtYWludGFpbmVyIGRldGVybWluZXMgaWYgdGhlIGNoYW5nZXMgYXJlIHF1YWxpZmllZCB0byBiZSBtb3ZlZAorICAgICAgICBmcm9tIHRoZSAiY29udHJpYiIgYnJhbmNoZXMgaW50byB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQKKyAgICAgICAgcmVwb3NpdG9yeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRGV2ZWxvcGVycyAoaW5jbHVkaW5nIGNvbnRyaWJ1dGluZyBjb21tdW5pdHkgbWVtYmVycykgY3JlYXRlIGFuZAorICAgICAgICBtYWludGFpbiBjbG9uZWQgcmVwb3NpdG9yaWVzIG9mIHRoZSB1cHN0cmVhbSAibWFzdGVyIiBicmFuY2guCisgICAgICAgIFRoZSBjbG9uZWQgcmVwb3NpdG9yaWVzIGFyZSBsb2NhbCB0byB0aGVpciBkZXZlbG9wbWVudCBwbGF0Zm9ybXMgYW5kCisgICAgICAgIGFyZSB1c2VkIHRvIGRldmVsb3AgY2hhbmdlcy4KKyAgICAgICAgV2hlbiBhIGRldmVsb3BlciBpcyBzYXRpc2ZpZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBvciBjaGFuZ2UsCisgICAgICAgIHRoZXkgInB1c2giIHRoZSBjaGFuZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSAiY29udHJpYiIgcmVwb3NpdG9yeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRGV2ZWxvcGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgdGhlaXIgbG9jYWwgcmVwb3NpdG9yeQorICAgICAgICB1cC10by1kYXRlIHdpdGggIm1hc3RlciIuCisgICAgICAgIFRoZXkgYXJlIGFsc28gcmVzcG9uc2libGUgZm9yIHN0cmFpZ2h0ZW5pbmcgb3V0IGFueSBjb25mbGljdHMgdGhhdAorICAgICAgICBtaWdodCBhcmlzZSB3aXRoaW4gZmlsZXMgdGhhdCBhcmUgYmVpbmcgd29ya2VkIG9uIHNpbXVsdGFuZW91c2x5IGJ5CisgICAgICAgIG1vcmUgdGhhbiBvbmUgcGVyc29uLgorICAgICAgICBBbGwgdGhpcyB3b3JrIGlzIGRvbmUgbG9jYWxseSBvbiB0aGUgZGV2ZWxvcGVy4oCZcyBtYWNoaW5lIGJlZm9yZQorICAgICAgICBhbnl0aGluZyBpcyBwdXNoZWQgdG8gYSAiY29udHJpYiIgYXJlYSBhbmQgZXhhbWluZWQgYXQgdGhlIG1haW50YWluZXLigJlzCisgICAgICAgIGxldmVsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIHNvbWV3aGF0IGZvcm1hbCBtZXRob2QgZXhpc3RzIGJ5IHdoaWNoIGRldmVsb3BlcnMgY29tbWl0IGNoYW5nZXMKKyAgICAgICAgYW5kIHB1c2ggdGhlbSBpbnRvIHRoZSAiY29udHJpYiIgYXJlYSBhbmQgc3Vic2VxdWVudGx5IHJlcXVlc3QgdGhhdAorICAgICAgICB0aGUgbWFpbnRhaW5lciBpbmNsdWRlIHRoZW0gaW50byAibWFzdGVyIi4KKyAgICAgICAgVGhpcyBwcm9jZXNzIGlzIGNhbGxlZCDigJxzdWJtaXR0aW5nIGEgcGF0Y2jigJ0gb3IgInN1Ym1pdHRpbmcgYSBjaGFuZ2UuIgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc3VibWl0dGluZyBwYXRjaGVzIGFuZCBjaGFuZ2VzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUbyBzdW1tYXJpemUgdGhlIGRldmVsb3BtZW50IHdvcmtmbG93OiAgYSBzaW5nbGUgcG9pbnQgb2YgZW50cnkKKyAgICAgICAgZXhpc3RzIGZvciBjaGFuZ2VzIGludG8gdGhlIHByb2plY3TigJlzICJtYXN0ZXIiIGJyYW5jaCBvZiB0aGUKKyAgICAgICAgR2l0IHJlcG9zaXRvcnksIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHByb2plY3TigJlzIG1haW50YWluZXIuCisgICAgICAgIEFuZCwgYSBzZXQgb2YgZGV2ZWxvcGVycyBleGlzdCB3aG8gaW5kZXBlbmRlbnRseSBkZXZlbG9wLCB0ZXN0LCBhbmQKKyAgICAgICAgc3VibWl0IGNoYW5nZXMgdG8gImNvbnRyaWIiIGFyZWFzIGZvciB0aGUgbWFpbnRhaW5lciB0byBleGFtaW5lLgorICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGVuIGNob29zZXMgd2hpY2ggY2hhbmdlcyBhcmUgZ29pbmcgdG8gYmVjb21lIGEKKyAgICAgICAgcGVybWFuZW50IHBhcnQgb2YgdGhlIHByb2plY3QuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9naXQtd29ya2Zsb3cucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iM2luIiBhbGlnbj0ibGVmdCIgc2NhbGVmaXQ9IjEiIC8+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdoaWxlIGVhY2ggZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgaXMgdW5pcXVlLCB0aGVyZSBhcmUgc29tZSBiZXN0CisgICAgICAgIHByYWN0aWNlcyBvciBtZXRob2RzIHRoYXQgaGVscCBkZXZlbG9wbWVudCBydW4gc21vb3RobHkuCisgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgc29tZSBvZiB0aGVzZSBwcmFjdGljZXMuCisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEdpdCB3b3JrZmxvd3MsIHNlZSB0aGUgd29ya2Zsb3cgdG9waWNzIGluCisgICAgICAgIHRoZQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vYm9vay5naXQtc2NtLmNvbSc+R2l0IENvbW11bml0eSBCb29rPC91bGluaz4uCisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU21hbGwgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEl0IGlzIGJlc3QgdG8ga2VlcCB0aGUgY2hhbmdlcyB5b3UgY29tbWl0IHNtYWxsIGFzIGNvbXBhcmVkIHRvCisgICAgICAgICAgICAgICAgYnVuZGxpbmcgbWFueSBkaXNwYXJhdGUgY2hhbmdlcyBpbnRvIGEgc2luZ2xlIGNvbW1pdC4KKyAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIG5vdCBvbmx5IGtlZXBzIHRoaW5ncyBtYW5hZ2VhYmxlIGJ1dCBhbHNvIGFsbG93cworICAgICAgICAgICAgICAgIHRoZSBtYWludGFpbmVyIHRvIG1vcmUgZWFzaWx5IGluY2x1ZGUgb3IgcmVmdXNlIGNoYW5nZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgYWxzbyBnb29kIHByYWN0aWNlIHRvIGxlYXZlIHRoZSByZXBvc2l0b3J5IGluIGEKKyAgICAgICAgICAgICAgICBzdGF0ZSB0aGF0IGFsbG93cyB5b3UgdG8gc3RpbGwgc3VjY2Vzc2Z1bGx5IGJ1aWxkIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgZG8gbm90IGNvbW1pdCBoYWxmIG9mIGEgZmVhdHVyZSwKKyAgICAgICAgICAgICAgICB0aGVuIGFkZCB0aGUgb3RoZXIgaGFsZiBhcyBhIHNlcGFyYXRlLCBsYXRlciBjb21taXQuCisgICAgICAgICAgICAgICAgRWFjaCBjb21taXQgc2hvdWxkIHRha2UgeW91IGZyb20gb25lIGJ1aWxkYWJsZSBwcm9qZWN0IHN0YXRlCisgICAgICAgICAgICAgICAgdG8gYW5vdGhlciBidWlsZGFibGUgc3RhdGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBCcmFuY2hlcyBMaWJlcmFsbHk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyB2ZXJ5IGVhc3kgdG8gY3JlYXRlLCB1c2UsIGFuZCBkZWxldGUgbG9jYWwgYnJhbmNoZXMgaW4KKyAgICAgICAgICAgICAgICB5b3VyIHdvcmtpbmcgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgWW91IGNhbiBuYW1lIHRoZXNlIGJyYW5jaGVzIGFueXRoaW5nIHlvdSBsaWtlLgorICAgICAgICAgICAgICAgIEl0IGlzIGhlbHBmdWwgdG8gZ2l2ZSB0aGVtIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFydGljdWxhcgorICAgICAgICAgICAgICAgIGZlYXR1cmUgb3IgY2hhbmdlIG9uIHdoaWNoIHlvdSBhcmUgd29ya2luZy4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBhcmUgZG9uZSB3aXRoIGEgZmVhdHVyZSBvciBjaGFuZ2UgYW5kIGhhdmUgbWVyZ2VkIGl0CisgICAgICAgICAgICAgICAgaW50byB5b3VyIGxvY2FsIG1hc3RlciBicmFuY2gsIHNpbXBseSBkaXNjYXJkIHRoZSB0ZW1wb3JhcnkKKyAgICAgICAgICAgICAgICBicmFuY2guCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1lcmdlIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+IGNvbW1hbmQgYWxsb3dzIHlvdSB0byB0YWtlCisgICAgICAgICAgICAgICAgdGhlIGNoYW5nZXMgZnJvbSBvbmUgYnJhbmNoIGFuZCBmb2xkIHRoZW0gaW50byBhbm90aGVyIGJyYW5jaC4KKyAgICAgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gbW9yZSB0aGFuIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgZGV2ZWxvcGVyIG1pZ2h0IGJlIHdvcmtpbmcgb24gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgZmVhdHVyZS4KKyAgICAgICAgICAgICAgICBNZXJnaW5nIGNoYW5nZXMgYWxzbyBhdXRvbWF0aWNhbGx5IGlkZW50aWZpZXMgYW55IGNvbGxpc2lvbnMKKyAgICAgICAgICAgICAgICBvciAiY29uZmxpY3RzIiB0aGF0IG1pZ2h0IGhhcHBlbiBhcyBhIHJlc3VsdCBvZiB0aGUgc2FtZSBsaW5lcworICAgICAgICAgICAgICAgIG9mIGNvZGUgYmVpbmcgYWx0ZXJlZCBieSB0d28gZGlmZmVyZW50IGRldmVsb3BlcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1hbmFnZSBCcmFuY2hlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEJlY2F1c2UgYnJhbmNoZXMgYXJlIGVhc3kgdG8gdXNlLCB5b3Ugc2hvdWxkIHVzZSBhIHN5c3RlbQorICAgICAgICAgICAgICAgIHdoZXJlIGJyYW5jaGVzIGluZGljYXRlIHZhcnlpbmcgbGV2ZWxzIG9mIGNvZGUgcmVhZGluZXNzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGhhdmUgYSAid29yayIgYnJhbmNoIHRvIGRldmVsb3AgaW4sIGEKKyAgICAgICAgICAgICAgICAidGVzdCIgYnJhbmNoIHdoZXJlIHRoZSBjb2RlIG9yIGNoYW5nZSBpcyB0ZXN0ZWQsIGEgInN0YWdlIgorICAgICAgICAgICAgICAgIGJyYW5jaCB3aGVyZSBjaGFuZ2VzIGFyZSByZWFkeSB0byBiZSBjb21taXR0ZWQsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICBBcyB5b3VyIHByb2plY3QgZGV2ZWxvcHMsIHlvdSBjYW4gbWVyZ2UgY29kZSBhY3Jvc3MgdGhlCisgICAgICAgICAgICAgICAgYnJhbmNoZXMgdG8gcmVmbGVjdCBldmVyLWluY3JlYXNpbmcgc3RhYmxlIHN0YXRlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIFB1c2ggYW5kIFB1bGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgcHVzaC1wdWxsIHdvcmtmbG93IGlzIGJhc2VkIG9uIHRoZSBjb25jZXB0IG9mIGRldmVsb3BlcnMKKyAgICAgICAgICAgICAgICAicHVzaGluZyIgbG9jYWwgY29tbWl0cyB0byBhIHJlbW90ZSByZXBvc2l0b3J5LCB3aGljaCBpcworICAgICAgICAgICAgICAgIHVzdWFsbHkgYSBjb250cmlidXRpb24gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGlzIGFsc28gYmFzZWQgb24gZGV2ZWxvcGVycyAicHVsbGluZyIga25vd24KKyAgICAgICAgICAgICAgICBzdGF0ZXMgb2YgdGhlIHByb2plY3QgZG93biBpbnRvIHRoZWlyIGxvY2FsIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgIFRoZSB3b3JrZmxvdyBlYXNpbHkgYWxsb3dzIHlvdSB0byBwdWxsIGNoYW5nZXMgc3VibWl0dGVkIGJ5CisgICAgICAgICAgICAgICAgb3RoZXIgZGV2ZWxvcGVycyBmcm9tIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGludG8geW91cgorICAgICAgICAgICAgICAgIHdvcmsgYXJlYSBlbnN1cmluZyB0aGF0IHlvdSBoYXZlIHRoZSBtb3N0IHJlY2VudCBzb2Z0d2FyZQorICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRvIGRldmVsb3AuCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIHR3byBzY3JpcHRzIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiB0aGF0IHNoaXAgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICByZWxlYXNlIHRvIGZhY2lsaXRhdGUgdGhpcyB3b3JrZmxvdy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2Ugc2NyaXB0cyBpbiB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZvbGRlciBvZiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGF0Y2ggV29ya2Zsb3c6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGFsbG93cyB5b3UgdG8gbm90aWZ5IHRoZSBtYWludGFpbmVyIHRocm91Z2ggYW4KKyAgICAgICAgICAgICAgICBlbWFpbCB0aGF0IHlvdSBoYXZlIGEgY2hhbmdlIChvciBwYXRjaCkgeW91IHdvdWxkIGxpa2UKKyAgICAgICAgICAgICAgICBjb25zaWRlcmVkIGZvciB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBUbyBzZW5kIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIHlvdSBmb3JtYXQgdGhlIHBhdGNoIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgc2VuZCB0aGUgZW1haWwgdXNpbmcgdGhlIEdpdCBjb21tYW5kcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlc2Ugc2NyaXB0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2dpdCc+CisgICAgPHRpdGxlPkdpdDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBHaXQsIHdoaWNoIGlzIGEKKyAgICAgICAgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4KKyAgICAgICAgR2l0IHN1cHBvcnRzIGRpc3RyaWJ1dGVkIGRldmVsb3BtZW50LCBub24tbGluZWFyIGRldmVsb3BtZW50LAorICAgICAgICBhbmQgY2FuIGhhbmRsZSBsYXJnZSBwcm9qZWN0cy4KKyAgICAgICAgSXQgaXMgYmVzdCB0aGF0IHlvdSBoYXZlIHNvbWUgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZworICAgICAgICBvZiBob3cgR2l0IHRyYWNrcyBwcm9qZWN0cyBhbmQgaG93IHRvIHdvcmsgd2l0aCBHaXQgaWYKKyAgICAgICAgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgZm9yIGRldmVsb3BtZW50LgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBob3cgR2l0IHdvcmtzIGFuZAorICAgICAgICBwcm92aWRlcyB5b3Ugd2l0aCBhIHN1bW1hcnkgb2Ygc29tZSBlc3NlbnRpYWwgR2l0IGNvbW1hbmRzLgorICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEdpdCwgc2VlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBkb3dubG9hZCBHaXQsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGFkZAorICAgICAgICAgICAgICAgICAgICBHaXQgdG8geW91ciBzeXN0ZW0gdGhyb3VnaCB5b3VyIGRpc3RyaWJ1dGlvbidzICJzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICBzdG9yZSIgKGUuZy4gZm9yIFVidW50dSwgdXNlIHRoZSBVYnVudHUgU29mdHdhcmUgZmVhdHVyZSkuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgR2l0IGRvd25sb2FkIHBhZ2UsIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG93bmxvYWQnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlcyBiZXlvbmQgdGhlIGxpbWl0ZWQgZmV3IGluIHRoaXMgc2VjdGlvbiBvbiBob3cKKyAgICAgICAgICAgICAgICAgICAgdG8gdXNlIEdpdCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdyZXBvc2l0b3JpZXMtdGFncy1hbmQtYnJhbmNoZXMnPgorICAgICAgICA8dGl0bGU+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGJyaWVmbHkgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gYW5kIGFsc28gaW4gdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd29ya2Zsb3dzJz5Xb3JrZmxvd3M8L2xpbms+IiBzZWN0aW9uLAorICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgbWFpbnRhaW5zIHNvdXJjZSByZXBvc2l0b3JpZXMgYXQKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4uCisgICAgICAgICAgICBJZiB5b3UgbG9vayBhdCB0aGlzIHdlYi1pbnRlcmZhY2Ugb2YgdGhlIHJlcG9zaXRvcmllcywgZWFjaCBpdGVtCisgICAgICAgICAgICBpcyBhIHNlcGFyYXRlIEdpdCByZXBvc2l0b3J5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBHaXQgcmVwb3NpdG9yaWVzIHVzZSBicmFuY2hpbmcgdGVjaG5pcXVlcyB0aGF0IHRyYWNrIGNvbnRlbnQKKyAgICAgICAgICAgIGNoYW5nZSAobm90IGZpbGVzKSB3aXRoaW4gYSBwcm9qZWN0IChlLmcuIGEgbmV3IGZlYXR1cmUgb3IgdXBkYXRlZAorICAgICAgICAgICAgZG9jdW1lbnRhdGlvbikuCisgICAgICAgICAgICBDcmVhdGluZyBhIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgYmFzZWQgb24gcHJvamVjdCBkaXZlcmdlbmNlIGFsbG93cworICAgICAgICAgICAgZm9yIGV4Y2VsbGVudCBoaXN0b3JpY2FsIGluZm9ybWF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgorICAgICAgICAgICAgVGhpcyBtZXRob2RvbG9neSBhbHNvIGFsbG93cyBmb3IgYW4gZW52aXJvbm1lbnQgZnJvbSB3aGljaCB5b3UgY2FuCisgICAgICAgICAgICBkbyBsb3RzIG9mIGxvY2FsIGV4cGVyaW1lbnRhdGlvbiBvbiBwcm9qZWN0cyBhcyB5b3UgZGV2ZWxvcAorICAgICAgICAgICAgY2hhbmdlcyBvciBuZXcgZmVhdHVyZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEEgR2l0IHJlcG9zaXRvcnkgcmVwcmVzZW50cyBhbGwgZGV2ZWxvcG1lbnQgZWZmb3J0cyBmb3IgYSBnaXZlbgorICAgICAgICAgICAgcHJvamVjdC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgR2l0IHJlcG9zaXRvcnkgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBjb250YWlucworICAgICAgICAgICAgYWxsIGNoYW5nZXMgYW5kIGRldmVsb3BtZW50cyBmb3IgUG9reSBvdmVyIHRoZSBjb3Vyc2Ugb2YgaXRzCisgICAgICAgICAgICBlbnRpcmUgbGlmZS4KKyAgICAgICAgICAgIFRoYXQgbWVhbnMgdGhhdCBhbGwgY2hhbmdlcyB0aGF0IG1ha2UgdXAgYWxsIHJlbGVhc2VzIGFyZSBjYXB0dXJlZC4KKyAgICAgICAgICAgIFRoZSByZXBvc2l0b3J5IG1haW50YWlucyBhIGNvbXBsZXRlIGhpc3Rvcnkgb2YgY2hhbmdlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIGFueSByZXBvc2l0b3J5IGJ5ICJjbG9uaW5nIiBpdAorICAgICAgICAgICAgd2l0aCB0aGUgPGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICBXaGVuIHlvdSBjbG9uZSBhIEdpdCByZXBvc2l0b3J5LCB5b3UgZW5kIHVwIHdpdGggYW4gaWRlbnRpY2FsCisgICAgICAgICAgICBjb3B5IG9mIHRoZSByZXBvc2l0b3J5IG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLgorICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBhIGxvY2FsIGNvcHkgb2YgYSByZXBvc2l0b3J5LCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8KKyAgICAgICAgICAgIGRldmVsb3AgbG9jYWxseS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlcyBvbiBob3cgdG8gY2xvbmUgR2l0IHJlcG9zaXRvcmllcywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCBHaXQgdHJhY2tzIGNvbnRlbnQgY2hhbmdlIGFuZAorICAgICAgICAgICAgbm90IGZpbGVzLgorICAgICAgICAgICAgR2l0IHVzZXMgImJyYW5jaGVzIiB0byBvcmdhbml6ZSBkaWZmZXJlbnQgZGV2ZWxvcG1lbnQgZWZmb3J0cy4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IGhhcworICAgICAgICAgICAgc2V2ZXJhbCBicmFuY2hlcyB0aGF0IGluY2x1ZGUgdGhlIGN1cnJlbnQgIiZESVNUUk9fTkFNRV9OT19DQVA7IgorICAgICAgICAgICAgYnJhbmNoLCB0aGUgIm1hc3RlciIgYnJhbmNoLCBhbmQgbWFueSBicmFuY2hlcyBmb3IgcGFzdAorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlcy4KKyAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCB0aGUgYnJhbmNoZXMgYnkgZ29pbmcgdG8KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4gYW5kCisgICAgICAgICAgICBjbGlja2luZyBvbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvcG9reS9yZWZzL2hlYWRzJz5bLi4uXTwvdWxpbms+PC9maWxlbmFtZT4KKyAgICAgICAgICAgIGxpbmsgYmVuZWF0aCB0aGUgIkJyYW5jaCIgaGVhZGluZy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRWFjaCBvZiB0aGVzZSBicmFuY2hlcyByZXByZXNlbnRzIGEgc3BlY2lmaWMgYXJlYSBvZiBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgIFRoZSAibWFzdGVyIiBicmFuY2ggcmVwcmVzZW50cyB0aGUgY3VycmVudCBvciBtb3N0IHJlY2VudAorICAgICAgICAgICAgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICBBbGwgb3RoZXIgYnJhbmNoZXMgcmVwcmVzZW50IG9mZnNob290cyBvZiB0aGUgIm1hc3RlciIgYnJhbmNoLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIGEgR2l0IHJlcG9zaXRvcnksIHRoZSBjb3B5IGhhcworICAgICAgICAgICAgdGhlIHNhbWUgc2V0IG9mIGJyYW5jaGVzIGFzIHRoZSBvcmlnaW5hbC4KKyAgICAgICAgICAgIFRoaXMgbWVhbnMgeW91IGNhbiB1c2UgR2l0IHRvIGNyZWF0ZSBhIGxvY2FsIHdvcmtpbmcgYXJlYQorICAgICAgICAgICAgKGFsc28gY2FsbGVkIGEgYnJhbmNoKSB0aGF0IHRyYWNrcyBhIHNwZWNpZmljIGRldmVsb3BtZW50IGJyYW5jaAorICAgICAgICAgICAgZnJvbSB0aGUgdXBzdHJlYW0gc291cmNlIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgaW4gb3RoZXIgd29yZHMsIHlvdSBjYW4gZGVmaW5lIHlvdXIgbG9jYWwgR2l0IGVudmlyb25tZW50IHRvCisgICAgICAgICAgICB3b3JrIG9uIGFueSBkZXZlbG9wbWVudCBicmFuY2ggaW4gdGhlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBUbyBoZWxwIGlsbHVzdHJhdGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBHaXQgY29tbWFuZHM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5CisgICAgICQgY2QgcG9reQorICAgICAkIGdpdCBjaGVja291dCAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyBvcmlnaW4vJkRJU1RST19OQU1FX05PX0NBUDsKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlIGFmdGVyIG1vdmluZyB0byB0aGUgaG9tZSBkaXJlY3RvcnksIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcyBhCisgICAgICAgICAgICBsb2NhbCBjb3B5IG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgR2l0IGNoZWNrcyBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaCBmb3IgeW91ciB3b3JrLgorICAgICAgICAgICAgQWZ0ZXIgY2hhbmdpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBuZXcgbG9jYWwgcmVwb3NpdG9yeQorICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiksIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcworICAgICAgICAgICAgYW5kIGNoZWNrcyBvdXQgYSBsb2NhbCBicmFuY2ggbmFtZWQgIiZESVNUUk9fTkFNRV9OT19DQVA7Iiwgd2hpY2gKKyAgICAgICAgICAgIHRyYWNrcyB0aGUgdXBzdHJlYW0gIm9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoLgorICAgICAgICAgICAgQ2hhbmdlcyB5b3UgbWFrZSB3aGlsZSBpbiB0aGlzIGJyYW5jaCB3b3VsZCB1bHRpbWF0ZWx5IGFmZmVjdAorICAgICAgICAgICAgdGhlIHVwc3RyZWFtICImRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoIG9mIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGNyZWF0ZSBhbmQgY2hlY2tvdXQgYQorICAgICAgICAgICAgbG9jYWwgd29ya2luZyBicmFuY2ggYmFzZWQgb24gYSBicmFuY2ggbmFtZSwKKyAgICAgICAgICAgIHlvdXIgbG9jYWwgZW52aXJvbm1lbnQgbWF0Y2hlcyB0aGUgInRpcCIgb2YgdGhhdCBwYXJ0aWN1bGFyCisgICAgICAgICAgICBkZXZlbG9wbWVudCBicmFuY2ggYXQgdGhlIHRpbWUgeW91IGNyZWF0ZWQgeW91ciBsb2NhbCBicmFuY2gsCisgICAgICAgICAgICB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgZmlsZXMgaW4gdGhlICJtYXN0ZXIiIGJyYW5jaAorICAgICAgICAgICAgb2YgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgY3JlYXRpbmcgYW5kIGNoZWNraW5nIG91dCBhIGxvY2FsIGJyYW5jaCBiYXNlZCBvbgorICAgICAgICAgICAgdGhlICImRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoIG5hbWUgaXMgbm90IHRoZSBzYW1lIGFzCisgICAgICAgICAgICBjbG9uaW5nIGFuZCBjaGVja2luZyBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaCBpZiB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEtlZXAgcmVhZGluZyB0byBzZWUgaG93IHlvdSBjcmVhdGUgYSBsb2NhbCBzbmFwc2hvdCBvZiBhIFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IFJlbGVhc2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCB1c2VzICJ0YWdzIiB0byBtYXJrIHNwZWNpZmljIGNoYW5nZXMgaW4gYSByZXBvc2l0b3J5LgorICAgICAgICAgICAgVHlwaWNhbGx5LCBhIHRhZyBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWFsIHBvaW50IHN1Y2ggYXMgdGhlIGZpbmFsCisgICAgICAgICAgICBjaGFuZ2UgYmVmb3JlIGEgcHJvamVjdCBpcyByZWxlYXNlZC4KKyAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSB0YWdzIHVzZWQgd2l0aCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgIHJlcG9zaXRvcnkgYnkgZ29pbmcgdG8KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4gYW5kCisgICAgICAgICAgICBjbGlja2luZyBvbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvcG9reS9yZWZzL3RhZ3MnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiVGFnIiBoZWFkaW5nLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21lIGtleSB0YWdzIGZvciB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhcmUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5qZXRocm8tMTQuMC4zPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+bW9ydHktMTYuMC4xPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+cHlyby0xNy4wLjA8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+JkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgVGhlc2UgdGFncyByZXByZXNlbnQgWW9jdG8gUHJvamVjdCByZWxlYXNlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgbG9jYWwgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdSBhbHNvCisgICAgICAgICAgICBoYXZlIGFjY2VzcyB0byBhbGwgdGhlIHRhZ3MgaW4gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBTaW1pbGFyIHRvIGJyYW5jaGVzLCB5b3UgY2FuIGNyZWF0ZSBhbmQgY2hlY2tvdXQgYSBsb2NhbCB3b3JraW5nCisgICAgICAgICAgICBHaXQgYnJhbmNoIGJhc2VkIG9uIGEgdGFnIG5hbWUuCisgICAgICAgICAgICBXaGVuIHlvdSBkbyB0aGlzLCB5b3UgZ2V0IGEgc25hcHNob3Qgb2YgdGhlIEdpdCByZXBvc2l0b3J5IHRoYXQKKyAgICAgICAgICAgIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZmlsZXMgd2hlbiB0aGUgY2hhbmdlIHdhcyBtYWRlIGFzc29jaWF0ZWQKKyAgICAgICAgICAgIHdpdGggdGhhdCB0YWcuCisgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNlIGlzIHRvIGNoZWNrb3V0IGEgd29ya2luZyBicmFuY2ggdGhhdCBtYXRjaGVzCisgICAgICAgICAgICBhIHNwZWNpZmljIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KKyAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKyAgICAgJCBjZCBwb2t5CisgICAgICQgZ2l0IGZldGNoIC0tYWxsIC0tdGFncyAtLXBydW5lCisgICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MvcHlyby0xNy4wLjAgLWIgbXktcHlyby0xNy4wLjAKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgeW91cgorICAgICAgICAgICAgbG9jYWwgWW9jdG8gUHJvamVjdCByZXBvc2l0b3J5IGlzIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICBBZnRlciBtb3ZpbmcgdG8gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gZGlyZWN0b3J5LCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZmV0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kIG1ha2VzIGFsbCB0aGUgdXBzdHJlYW0KKyAgICAgICAgICAgIHRhZ3MgYXZhaWxhYmxlIGxvY2FsbHkgaW4geW91ciByZXBvc2l0b3J5LgorICAgICAgICAgICAgRmluYWxseSwgdGhlIDxmaWxlbmFtZT5naXQgY2hlY2tvdXQ8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICBjcmVhdGVzIGFuZCBjaGVja3Mgb3V0IGEgYnJhbmNoIG5hbWVkICJteS1weXJvLTE3LjAuMCIgdGhhdCBpcworICAgICAgICAgICAgYmFzZWQgb24gdGhlIHNwZWNpZmljIGNoYW5nZSB1cHN0cmVhbSBpbiB0aGUgcmVwb3NpdG9yeQorICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSAicHlyby0xNy4wLjAiIHRhZy4KKyAgICAgICAgICAgIFRoZSBmaWxlcyBpbiB5b3VyIHJlcG9zaXRvcnkgbm93IGV4YWN0bHkgbWF0Y2ggdGhhdCBwYXJ0aWN1bGFyCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgYXMgaXQgaXMgdGFnZ2VkIGluIHRoZSB1cHN0cmVhbSBHaXQKKyAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGNyZWF0ZSBhbmQKKyAgICAgICAgICAgIGNoZWNrb3V0IGEgbG9jYWwgd29ya2luZyBicmFuY2ggYmFzZWQgb24gYSB0YWcsIHlvdXIgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIG1hdGNoZXMgYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lIGFuZCBub3QgdGhlIGVudGlyZSBkZXZlbG9wbWVudAorICAgICAgICAgICAgYnJhbmNoIChpLmUuIHRoZSAidGlwIiBvZiB0aGUgYnJhbmNoKS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdiYXNpYy1jb21tYW5kcyc+CisgICAgICAgIDx0aXRsZT5CYXNpYyBDb21tYW5kczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBHaXQgaGFzIGFuIGV4dGVuc2l2ZSBzZXQgb2YgY29tbWFuZHMgdGhhdCBsZXRzIHlvdSBtYW5hZ2UgY2hhbmdlcworICAgICAgICAgICAgYW5kIHBlcmZvcm0gY29sbGFib3JhdGlvbiBvdmVyIHRoZSBsaWZlIG9mIGEgcHJvamVjdC4KKyAgICAgICAgICAgIENvbnZlbmllbnRseSB0aG91Z2gsIHlvdSBjYW4gbWFuYWdlIHdpdGggYSBzbWFsbCBzZXQgb2YgYmFzaWMKKyAgICAgICAgICAgIG9wZXJhdGlvbnMgYW5kIHdvcmtmbG93cyBvbmNlIHlvdSB1bmRlcnN0YW5kIHRoZSBiYXNpYworICAgICAgICAgICAgcGhpbG9zb3BoeSBiZWhpbmQgR2l0LgorICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIGJlIGFuIGV4cGVydCBpbiBHaXQgdG8gYmUgZnVuY3Rpb25hbC4KKyAgICAgICAgICAgIEEgZ29vZCBwbGFjZSB0byBsb29rIGZvciBpbnN0cnVjdGlvbiBvbiBhIG1pbmltYWwgc2V0IG9mIEdpdAorICAgICAgICAgICAgY29tbWFuZHMgaXMKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz5oZXJlPC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdSBkbyBub3Qga25vdyBtdWNoIGFib3V0IEdpdCwgeW91IHNob3VsZCBlZHVjYXRlCisgICAgICAgICAgICB5b3Vyc2VsZiBieSB2aXNpdGluZyB0aGUgbGlua3MgcHJldmlvdXNseSBtZW50aW9uZWQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBvZiBHaXQgY29tbWFuZHMgYnJpZWZseSBkZXNjcmliZXMgc29tZSBiYXNpYworICAgICAgICAgICAgR2l0IG9wZXJhdGlvbnMgYXMgYSB3YXkgdG8gZ2V0IHN0YXJ0ZWQuCisgICAgICAgICAgICBBcyB3aXRoIGFueSBzZXQgb2YgY29tbWFuZHMsIHRoaXMgbGlzdCAoaW4gbW9zdCBjYXNlcykgc2ltcGx5IHNob3dzCisgICAgICAgICAgICB0aGUgYmFzZSBjb21tYW5kIGFuZCBvbWl0cyB0aGUgbWFueSBhcmd1bWVudHMgdGhleSBzdXBwb3J0LgorICAgICAgICAgICAgU2VlIHRoZSBHaXQgZG9jdW1lbnRhdGlvbiBmb3IgY29tcGxldGUgZGVzY3JpcHRpb25zIGFuZCBzdHJhdGVnaWVzCisgICAgICAgICAgICBvbiBob3cgdG8gdXNlIHRoZXNlIGNvbW1hbmRzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGluaXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplcyBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgR2l0IGNvbW1hbmRzIHVubGVzcyB5b3UgaGF2ZSBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uZ2l0PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdnaXQtY29tbWFuZHMtY2xvbmUnPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBsb2NhbCBjbG9uZSBvZiBhIEdpdCByZXBvc2l0b3J5IHRoYXQgaXMgb24KKyAgICAgICAgICAgICAgICAgICAgZXF1YWwgZm9vdGluZyB3aXRoIGEgZmVsbG93IGRldmVsb3BlcuKAmXMgR2l0IHJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgb3IgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBMb2NhbGx5IHN0YWdlcyB1cGRhdGVkIGZpbGUgY29udGVudHMgdG8gdGhlIGluZGV4IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgR2l0IHVzZXMgdG8gdHJhY2sgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3RhZ2UgYWxsIGZpbGVzIHRoYXQgaGF2ZSBjaGFuZ2VkIGJlZm9yZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgY2FuIGNvbW1pdCB0aGVtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNvbW1pdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBsb2NhbCAiY29tbWl0IiB0aGF0IGRvY3VtZW50cyB0aGUgY2hhbmdlcyB5b3UKKyAgICAgICAgICAgICAgICAgICAgbWFkZS4KKyAgICAgICAgICAgICAgICAgICAgT25seSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIHN0YWdlZCBjYW4gYmUgY29tbWl0dGVkLgorICAgICAgICAgICAgICAgICAgICBDb21taXRzIGFyZSB1c2VkIGZvciBoaXN0b3JpY2FsIHB1cnBvc2VzLCBmb3IgZGV0ZXJtaW5pbmcKKyAgICAgICAgICAgICAgICAgICAgaWYgYSBtYWludGFpbmVyIG9mIGEgcHJvamVjdCB3aWxsIGFsbG93IHRoZSBjaGFuZ2UsCisgICAgICAgICAgICAgICAgICAgIGFuZCBmb3IgdWx0aW1hdGVseSBwdXNoaW5nIHRoZSBjaGFuZ2UgZnJvbSB5b3VyIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGludG8gdGhlIHByb2plY3TigJlzIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgc3RhdHVzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyBhbnkgbW9kaWZpZWQgZmlsZXMgdGhhdCBwb3NzaWJseSBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAgICAgIHN0YWdlZCBhbmQgZ2l2ZXMgeW91IGEgc3RhdHVzIG9mIHdoZXJlIHlvdSBzdGFuZCByZWdhcmRpbmcKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgY29tbWl0cyBhcyBjb21wYXJlZCB0byB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENoYW5nZXMgeW91ciB3b3JraW5nIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGFuYWxvZ291cyB0byAiY2QiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2hlY2tvdXQg4oCTYjwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT53b3JraW5nLWJyYW5jaDwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYW5kIGNoZWNrcyBvdXQgYSB3b3JraW5nIGJyYW5jaCBvbiB5b3VyIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgdGhhdCB5b3UgY2FuIHVzZSB0byBpc29sYXRlIHlvdXIgd29yay4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgYSBnb29kIGlkZWEgdG8gdXNlIGxvY2FsIGJyYW5jaGVzIHdoZW4gYWRkaW5nCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGZlYXR1cmVzIG9yIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIGlzb2xhdGVkIGJyYW5jaGVzIGZhY2lsaXRhdGVzIGVhc3kgcmVtb3ZhbCBvZgorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIGlmIHRoZXkgZG8gbm90IHdvcmsgb3V0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYnJhbmNoPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGlzcGxheXMgdGhlIGV4aXN0aW5nIGxvY2FsIGJyYW5jaGVzIGFzc29jaWF0ZWQgd2l0aCB5b3VyCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBicmFuY2ggdGhhdCB5b3UgaGF2ZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgaXMgbm90ZWQKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBhbiBhc3RlcmlzayBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYnJhbmNoIC1EPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPmJyYW5jaC1uYW1lPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGVsZXRlcyBhbiBleGlzdGluZyBsb2NhbCBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGluIGEgbG9jYWwgYnJhbmNoIG90aGVyIHRoYW4gdGhlIG9uZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgYXJlIGRlbGV0aW5nIGluIG9yZGVyIHRvIGRlbGV0ZQorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBwdWxsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmV0cmlldmVzIGluZm9ybWF0aW9uIGZyb20gYW4gdXBzdHJlYW0gR2l0IHJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgYW5kIHBsYWNlcyBpdCBpbiB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIHRoaXMgY29tbWFuZCB0byBtYWtlIHN1cmUgeW91IGFyZSBzeW5jaHJvbml6ZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICB0aGUgcmVwb3NpdG9yeSBmcm9tIHdoaWNoIHlvdSBhcmUgYmFzaW5nIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgKC5lLmcuIHRoZSAibWFzdGVyIiBicmFuY2gpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1c2g8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTZW5kcyBhbGwgeW91ciBjb21taXR0ZWQgbG9jYWwgY2hhbmdlcyB0byB0aGUgdXBzdHJlYW0gR2l0CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgdGhhdCB5b3VyIGxvY2FsIHJlcG9zaXRvcnkgaXMgdHJhY2tpbmcKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIG9mIHRoZSBwcm9qZWN0IGRyYXdzIGZyb20gdGhlc2UgcmVwb3NpdG9yaWVzCisgICAgICAgICAgICAgICAgICAgIHRvIG1lcmdlIGNoYW5nZXMgKGNvbW1pdHMpIGludG8gdGhlIGFwcHJvcHJpYXRlIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBvZiBwcm9qZWN0J3MgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbWJpbmVzIG9yIGFkZHMgY2hhbmdlcyBmcm9tIG9uZQorICAgICAgICAgICAgICAgICAgICBsb2NhbCBicmFuY2ggb2YgeW91ciByZXBvc2l0b3J5IHdpdGggYW5vdGhlciBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIEdpdCByZXBvc2l0b3J5LCB0aGUgZGVmYXVsdCBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgbmFtZWQgIm1hc3RlciIuCisgICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCB3b3JrZmxvdyBpcyB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgYnJhbmNoIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb2ZmICJtYXN0ZXIiIHRoYXQgeW91IHdvdWxkIHVzZSBmb3IgaXNvbGF0ZWQgd29yay4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdvdWxkIG1ha2UgeW91ciBjaGFuZ2VzIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICBzdGFnZSBhbmQgY29tbWl0IHRoZW0gbG9jYWxseSwgc3dpdGNoIHRvIHRoZSAibWFzdGVyIgorICAgICAgICAgICAgICAgICAgICBicmFuY2gsIGFuZCB0aGVuIHVzZSB0aGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYXBwbHkgdGhlIGNoYW5nZXMgZnJvbSB5b3VyIGlzb2xhdGVkIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgYnJhbmNoIChlLmcuICJtYXN0ZXIiKS4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIG1lcmdlIGlzIGNvbXBsZXRlIGFuZCBpZiB5b3UgYXJlIGRvbmUgd2l0aAorICAgICAgICAgICAgICAgICAgICB3b3JraW5nIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLCB5b3UgY2FuIHNhZmVseSBkZWxldGUKKyAgICAgICAgICAgICAgICAgICAgdGhlIGlzb2xhdGVkIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVycnktcGljazwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENob29zZSBhbmQgYXBwbHkgc3BlY2lmaWMgY29tbWl0cyBmcm9tIG9uZSBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgaW50byBhbm90aGVyIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgVGhlcmUgYXJlIHRpbWVzIHdoZW4geW91IG1pZ2h0IG5vdCBiZSBhYmxlIHRvIG1lcmdlCisgICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgY2hhbmdlcyBpbiBvbmUgYnJhbmNoIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgYW5vdGhlciBidXQgbmVlZCB0byBwaWNrIG91dCBjZXJ0YWluIG9uZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXRrPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgYSBHVUkgdmlldyBvZiB0aGUgYnJhbmNoZXMgYW5kIGNoYW5nZXMgaW4geW91cgorICAgICAgICAgICAgICAgICAgICBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGEgZ29vZCB3YXkgdG8gZ3JhcGhpY2FsbHkgc2VlIHdoZXJlIHRoaW5ncworICAgICAgICAgICAgICAgICAgICBoYXZlIGRpdmVyZ2VkIGluIHlvdXIgbG9jYWwgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZSA8ZmlsZW5hbWU+Z2l0azwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtIHRvIHVzZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgbG9nPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyBhIGhpc3Rvcnkgb2YgeW91ciBjb21taXRzIHRvIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlcG9ydCBsaXN0cyBhbGwgY29tbWl0cyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91CisgICAgICAgICAgICAgICAgICAgIGhhdmUgcHVzaGVkIHRoZW0gdXBzdHJlYW0gb3Igbm90LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGRpZmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXNwbGF5cyBsaW5lLWJ5LWxpbmUgZGlmZmVyZW5jZXMgYmV0d2VlbiBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgZmlsZSBhbmQgdGhlIHNhbWUgZmlsZSBhcyB1bmRlcnN0b29kIGJ5IEdpdC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIHVzZWZ1bCB0byBzZWUgd2hhdCB5b3UgaGF2ZSBjaGFuZ2VkCisgICAgICAgICAgICAgICAgICAgIGluIGFueSBnaXZlbiBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPgorICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gbWFpbnRhaW5zIGNvbXBsZXRlIHNvdXJjZSByZXBvc2l0b3JpZXMgZm9yIGFsbAorICAgICAgICBZb2N0byBQcm9qZWN0IGZpbGVzIGF0CisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpJz48L3VsaW5rPi4KKyAgICAgICAgVGhpcyB3ZWItYmFzZWQgc291cmNlIGNvZGUgYnJvd3NlciBpcyBvcmdhbml6ZWQgaW50byBjYXRlZ29yaWVzIGJ5CisgICAgICAgIGZ1bmN0aW9uIHN1Y2ggYXMgSURFIFBsdWdpbnMsIE1hdGNoYm94LCBQb2t5LCBZb2N0byBMaW51eCBLZXJuZWwsIGFuZAorICAgICAgICBzbyBmb3J0aC4KKyAgICAgICAgRnJvbSB0aGUgaW50ZXJmYWNlLCB5b3UgY2FuIGNsaWNrIG9uIGFueSBwYXJ0aWN1bGFyIGl0ZW0gaW4gdGhlICJOYW1lIgorICAgICAgICBjb2x1bW4gYW5kIHNlZSB0aGUgVVJMIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdGhhdCB5b3UgbmVlZCB0byBjbG9uZQorICAgICAgICBhIEdpdCByZXBvc2l0b3J5IGZvciB0aGF0IHBhcnRpY3VsYXIgaXRlbS4KKyAgICAgICAgSGF2aW5nIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCB3aGljaCBpcworICAgICAgICB1c3VhbGx5IG5hbWVkICJwb2t5IiwgYWxsb3dzCisgICAgICAgIHlvdSB0byBtYWtlIGNoYW5nZXMsIGNvbnRyaWJ1dGUgdG8gdGhlIGhpc3RvcnksIGFuZCB1bHRpbWF0ZWx5IGVuaGFuY2UKKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QncyB0b29scywgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcywgYW5kIHNvIGZvcnRoLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgYW55IHN1cHBvcnRlZCByZWxlYXNlIG9mIFlvY3RvIFByb2plY3QsIHlvdSBjYW4gYWxzbyBnbyB0byB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4gYW5kCisgICAgICAgIHNlbGVjdCB0aGUgIkRvd25sb2FkcyIgdGFiIGFuZCBnZXQgYSByZWxlYXNlZCB0YXJiYWxsIG9mIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgb3IgYW55IHN1cHBvcnRlZCBCU1AgdGFyYmFsbHMuCisgICAgICAgIFVucGFja2luZyB0aGVzZSB0YXJiYWxscyBnaXZlcyB5b3UgYSBzbmFwc2hvdCBvZiB0aGUgcmVsZWFzZWQKKyAgICAgICAgZmlsZXMuCisgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3Igc2V0dGluZyB1cCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGZpbGVzIGZvciBzdXBwb3J0ZWQgQlNQcworICAgICAgICAgICAgICAgICAgICAoZS5nLiwgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPikgaXMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB0byBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBhbHdheXMgd29yayBpbiBtYXRjaGluZyBicmFuY2hlcyBmb3IgYm90aAorICAgICAgICAgICAgICAgICAgICB0aGUgc2VsZWN0ZWQgQlNQIHJlcG9zaXRvcnkgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgY2hlY2tlZCBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFuZCB5b3UgYXJlIGdvaW5nIHRvIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LCBiZSBzdXJlIHRvIGNoZWNrb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAibWFzdGVyIiBicmFuY2ggb2YgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJbiBzdW1tYXJ5LCBoZXJlIGlzIHdoZXJlIHlvdSBjYW4gZ2V0IHRoZSBwcm9qZWN0IGZpbGVzIG5lZWRlZCBmb3IKKyAgICAgICAgZGV2ZWxvcG1lbnQ6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3NvdXJjZS1yZXBvc2l0b3JpZXMnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaSc+U291cmNlIFJlcG9zaXRvcmllczo8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGNvbnRhaW5zIElERSBQbHVnaW5zLCBNYXRjaGJveCwgUG9reSwgUG9reSBTdXBwb3J0LAorICAgICAgICAgICAgICAgIFRvb2xzLCBZb2N0byBMaW51eCBLZXJuZWwsIGFuZCBZb2N0byBNZXRhZGF0YSBMYXllcnMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgbG9jYWwgY29waWVzIG9mIEdpdCByZXBvc2l0b3JpZXMgZm9yIGVhY2ggb2YKKyAgICAgICAgICAgICAgICB0aGVzZSBhcmVhcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHZpZXcgYW5kIGFjY2VzcyB0aGVzZSB1cHN0cmVhbSBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWNjZXNzaW5nLXNvdXJjZS1yZXBvc2l0b3JpZXMnPkFjY2Vzc2luZyBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgU2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGFuY2hvciBpZD0naW5kZXgtZG93bmxvYWRzJyAvPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBpcyBhbiBpbmRleCBvZiByZWxlYXNlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgdGhlIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+CisgICAgICAgICAgICAgICAgWW9jdG8gUGx1Zy1pbiwgbWlzY2VsbGFuZW91cyBzdXBwb3J0LCBQb2t5LCBQc2V1ZG8sIGluc3RhbGxlcnMKKyAgICAgICAgICAgICAgICBmb3IgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywgYW5kIGFsbCByZWxlYXNlZCB2ZXJzaW9ucyBvZgorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgaW4gdGhlIGZvcm0gb2YgaW1hZ2VzIG9yIHRhcmJhbGxzLgorICAgICAgICAgICAgICAgIERvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIHRoZXNlIGZpbGVzIGRvZXMgbm90IHByb2R1Y2UgYSBsb2NhbAorICAgICAgICAgICAgICAgIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5IGJ1dCByYXRoZXIgYSBzbmFwc2hvdCBvZiBhCisgICAgICAgICAgICAgICAgcGFydGljdWxhciByZWxlYXNlIG9yIGltYWdlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iMy41aW4iIC8+CisgICAgICAgICAgICAgICAgRm9yIHN0ZXBzIG9uIGhvdyB0byB2aWV3IGFuZCBhY2Nlc3MgdGhlc2UgZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWNjZXNzaW5nLWluZGV4LW9mLXJlbGVhc2VzJz5BY2Nlc3NpbmcgSW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZG93bmxvYWRzLXBhZ2UnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4iRG93bmxvYWRzIiBwYWdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9IndyaXRlcm5vdGVzIj5UaGlzIHNlY3Rpb24gd2lsbCBjaGFuZ2UgZHVlIHRvCisgICAgICAgICAgICAgICAgcmV3b3JraW5nIG9mIHRoZSBZUCBXZWJzaXRlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUgaW5jbHVkZXMgYSAiRG93bmxvYWRzIiB0YWIKKyAgICAgICAgICAgICAgICB0aGF0IGFsbG93cyB5b3UgdG8gZG93bmxvYWQgYW55IFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICByZWxlYXNlIGFuZCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgaW4gdGFyYmFsbCBmb3JtLgorICAgICAgICAgICAgICAgIFRoZSB0YXJiYWxscyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPiBhcmVhLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy95cC1kb3dubG9hZC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+CisgICAgICAgICAgICAgICAgRm9yIHN0ZXBzIG9uIGhvdyB0byB1c2UgdGhlICJEb3dubG9hZHMiIHBhZ2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctdGhlLWRvd25sb2Fkcy1wYWdlJz5Vc2luZyB0aGUgRG93bmxvYWRzIFBhZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nbGljZW5zaW5nJz4KKyAgICA8dGl0bGU+TGljZW5zaW5nPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBCZWNhdXNlIG9wZW4gc291cmNlIHByb2plY3RzIGFyZSBvcGVuIHRvIHRoZSBwdWJsaWMsIHRoZXkgaGF2ZQorICAgICAgICBkaWZmZXJlbnQgbGljZW5zaW5nIHN0cnVjdHVyZXMgaW4gcGxhY2UuCisgICAgICAgIExpY2Vuc2UgZXZvbHV0aW9uIGZvciBib3RoIE9wZW4gU291cmNlIGFuZCBGcmVlIFNvZnR3YXJlIGhhcyBhbgorICAgICAgICBpbnRlcmVzdGluZyBoaXN0b3J5LgorICAgICAgICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdGhpcyBoaXN0b3J5LCB5b3UgY2FuIGZpbmQgYmFzaWMgaW5mb3JtYXRpb24KKyAgICAgICAgaGVyZToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW4tc291cmNlX2xpY2Vuc2UnPk9wZW4gc291cmNlIGxpY2Vuc2UgaGlzdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmVlX3NvZnR3YXJlX2xpY2Vuc2UnPkZyZWUgc29mdHdhcmUgbGljZW5zZSBoaXN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEluIGdlbmVyYWwsIHRoZSBZb2N0byBQcm9qZWN0IGlzIGJyb2FkbHkgbGljZW5zZWQgdW5kZXIgdGhlCisgICAgICAgIE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kgKE1JVCkgTGljZW5zZS4KKyAgICAgICAgTUlUIGxpY2Vuc2luZyBwZXJtaXRzIHRoZSByZXVzZSBvZiBzb2Z0d2FyZSB3aXRoaW4gcHJvcHJpZXRhcnkKKyAgICAgICAgc29mdHdhcmUgYXMgbG9uZyBhcyB0aGUgbGljZW5zZSBpcyBkaXN0cmlidXRlZCB3aXRoIHRoYXQgc29mdHdhcmUuCisgICAgICAgIE1JVCBpcyBhbHNvIGNvbXBhdGlibGUgd2l0aCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkuCisgICAgICAgIFBhdGNoZXMgdG8gdGhlIFlvY3RvIFByb2plY3QgZm9sbG93IHRoZSB1cHN0cmVhbSBsaWNlbnNpbmcgc2NoZW1lLgorICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gdGhlIE1JVCBsaWNlbnNlCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwJz5oZXJlPC91bGluaz4uCisgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiB0aGUgR05VIEdQTAorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wJz5oZXJlPC91bGluaz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdoZW4geW91IGJ1aWxkIGFuIGltYWdlIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LCB0aGUgYnVpbGQgcHJvY2VzcworICAgICAgICB1c2VzIGEga25vd24gbGlzdCBvZiBsaWNlbnNlcyB0byBlbnN1cmUgY29tcGxpYW5jZS4KKyAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgbGlzdCBpbiB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4gYXQKKyAgICAgICAgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4uCisgICAgICAgIE9uY2UgdGhlIGJ1aWxkIGNvbXBsZXRlcywgdGhlIGxpc3Qgb2YgYWxsIGxpY2Vuc2VzIGZvdW5kIGFuZCB1c2VkCisgICAgICAgIGR1cmluZyB0aGF0IGJ1aWxkIGFyZSBrZXB0IGluIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgYXQgPGZpbGVuYW1lPnRtcC9kZXBsb3kvbGljZW5zZXM8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgYSBtb2R1bGUgcmVxdWlyZXMgYSBsaWNlbnNlIHRoYXQgaXMgbm90IGluIHRoZSBiYXNlIGxpc3QsIHRoZQorICAgICAgICBidWlsZCBwcm9jZXNzIGdlbmVyYXRlcyBhIHdhcm5pbmcgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgVGhlc2UgdG9vbHMgbWFrZSBpdCBlYXNpZXIgZm9yIGEgZGV2ZWxvcGVyIHRvIGJlIGNlcnRhaW4gb2YgdGhlCisgICAgICAgIGxpY2Vuc2VzIHdpdGggd2hpY2ggdGhlaXIgc2hpcHBlZCBwcm9kdWN0cyBtdXN0IGNvbXBseS4KKyAgICAgICAgSG93ZXZlciwgZXZlbiB3aXRoIHRoZXNlIHRvb2xzIGl0IGlzIHN0aWxsIHVwIHRvIHRoZSBkZXZlbG9wZXIgdG8KKyAgICAgICAgcmVzb2x2ZSBwb3RlbnRpYWwgbGljZW5zaW5nIGlzc3Vlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGJhc2UgbGlzdCBvZiBsaWNlbnNlcyB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIGlzIGEgY29tYmluYXRpb24KKyAgICAgICAgb2YgdGhlIFNvZnR3YXJlIFBhY2thZ2UgRGF0YSBFeGNoYW5nZSAoU1BEWCkgbGlzdCBhbmQgdGhlIE9wZW4KKyAgICAgICAgU291cmNlIEluaXRpYXRpdmUgKE9TSSkgcHJvamVjdHMuCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zcGR4Lm9yZyc+U1BEWCBHcm91cDwvdWxpbms+IGlzIGEgd29ya2luZyBncm91cCBvZgorICAgICAgICB0aGUgTGludXggRm91bmRhdGlvbiB0aGF0IG1haW50YWlucyBhIHNwZWNpZmljYXRpb24gZm9yIGEgc3RhbmRhcmQKKyAgICAgICAgZm9ybWF0IGZvciBjb21tdW5pY2F0aW5nIHRoZSBjb21wb25lbnRzLCBsaWNlbnNlcywgYW5kIGNvcHlyaWdodHMKKyAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgc29mdHdhcmUgcGFja2FnZS4KKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL29wZW5zb3VyY2Uub3JnJz5PU0k8L3VsaW5rPiBpcyBhIGNvcnBvcmF0aW9uCisgICAgICAgIGRlZGljYXRlZCB0byB0aGUgT3BlbiBTb3VyY2UgRGVmaW5pdGlvbiBhbmQgdGhlIGVmZm9ydCBmb3IgcmV2aWV3aW5nCisgICAgICAgIGFuZCBhcHByb3ZpbmcgbGljZW5zZXMgdGhhdCBjb25mb3JtIHRvIHRoZSBPcGVuIFNvdXJjZSBEZWZpbml0aW9uCisgICAgICAgIChPU0QpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIHRoZSBjb21iaW5lZCBTUERYIGFuZCBPU0kgbGljZW5zZXMgdGhhdCB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCB1c2VzIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4geW91cgorICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIHRoYXQgY2FuIGhlbHAgeW91IG1haW50YWluIGNvbXBsaWFuY2Ugd2l0aCB2YXJpb3VzCisgICAgICAgIG9wZW4gc291cmNlIGxpY2Vuc2luZyBkdXJpbmcgdGhlIGxpZmVjeWNsZSBvZiBhIHByb2R1Y3QgY3JlYXRlZCB1c2luZworICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ncmVjaXBlLXN5bnRheCc+CisgICAgPHRpdGxlPlJlY2lwZSBTeW50YXg8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFVuZGVyc3RhbmRpbmcgcmVjaXBlIGZpbGUgc3ludGF4IGlzIGltcG9ydGFudCBmb3IKKyAgICAgICAgd3JpdGluZyByZWNpcGVzLgorICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgb3ZlcnZpZXdzIHRoZSBiYXNpYyBpdGVtcyB0aGF0IG1ha2UgdXAgYQorICAgICAgICBCaXRCYWtlIHJlY2lwZSBmaWxlLgorICAgICAgICBGb3IgbW9yZSBjb21wbGV0ZSBCaXRCYWtlIHN5bnRheCBkZXNjcmlwdGlvbnMsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YSc+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3VsaW5rPiIKKyAgICAgICAgY2hhcHRlciBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VmFyaWFibGUgQXNzaWdubWVudHMgYW5kIE1hbmlwdWxhdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBWYXJpYWJsZSBhc3NpZ25tZW50cyBhbGxvdyBhIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBUaGUgYXNzaWdubWVudCBjYW4gYmUgc3RhdGljIHRleHQgb3IgbWlnaHQgaW5jbHVkZQorICAgICAgICAgICAgICAgIHRoZSBjb250ZW50cyBvZiBvdGhlciB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGFzc2lnbm1lbnQsIGFwcGVuZGluZyBhbmQgcHJlcGVuZGluZworICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgYXJlIGFsc28gc3VwcG9ydGVkLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3Mgc29tZSBvZiB0aGUgd2F5cworICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHZhcmlhYmxlcyBpbiByZWNpcGVzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUyA9ICIke1dPUktESVJ9L3Bvc3RmaXgtJHtQVn0iCisgICAgIENGTEFHUyArPSAiLUROT19BU00iCisgICAgIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vZml4dXAucGF0Y2giCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GdW5jdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBGdW5jdGlvbnMgcHJvdmlkZSBhIHNlcmllcyBvZiBhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZC4KKyAgICAgICAgICAgICAgICBZb3UgdXN1YWxseSB1c2UgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSB0YXNrIGZ1bmN0aW9uIG9yIHRvIGNvbXBsZW1lbnQKKyAgICAgICAgICAgICAgICBhIGRlZmF1bHQgZnVuY3Rpb24gKGkuZS4gYXBwZW5kIG9yIHByZXBlbmQgdG8gYW4KKyAgICAgICAgICAgICAgICBleGlzdGluZyBmdW5jdGlvbikuCisgICAgICAgICAgICAgICAgU3RhbmRhcmQgZnVuY3Rpb25zIHVzZSA8ZmlsZW5hbWU+c2g8L2ZpbGVuYW1lPiBzaGVsbAorICAgICAgICAgICAgICAgIHN5bnRheCwgYWx0aG91Z2ggYWNjZXNzIHRvIE9wZW5FbWJlZGRlZCB2YXJpYWJsZXMgYW5kCisgICAgICAgICAgICAgICAgaW50ZXJuYWwgbWV0aG9kcyBhcmUgYWxzbyBhdmFpbGFibGUuPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmdW5jdGlvbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZWQ8L2ZpbGVuYW1lPiByZWNpcGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19pbnN0YWxsICgpIHsKKyAgICAgICAgIGF1dG90b29sc19kb19pbnN0YWxsCisgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS9zZWQgJHtEfSR7YmFzZV9iaW5kaXJ9L3NlZAorICAgICAgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KKyAgICAgfQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGltcGxlbWVudCBuZXcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgICAgICAgICBhcmUgY2FsbGVkIGJldHdlZW4gZXhpc3RpbmcgdGFza3MgYXMgbG9uZyBhcyB0aGUKKyAgICAgICAgICAgICAgICBuZXcgZnVuY3Rpb25zIGFyZSBub3QgcmVwbGFjaW5nIG9yIGNvbXBsZW1lbnRpbmcgdGhlCisgICAgICAgICAgICAgICAgZGVmYXVsdCBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25zIGluIFB5dGhvbgorICAgICAgICAgICAgICAgIGluc3RlYWQgb2Ygc2hlbGwuCisgICAgICAgICAgICAgICAgQm90aCBvZiB0aGVzZSBvcHRpb25zIGFyZSBub3Qgc2VlbiBpbiB0aGUgbWFqb3JpdHkgb2YKKyAgICAgICAgICAgICAgICByZWNpcGVzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5LZXl3b3Jkczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEJpdEJha2UgcmVjaXBlcyB1c2Ugb25seSBhIGZldyBrZXl3b3Jkcy4KKyAgICAgICAgICAgICAgICBZb3UgdXNlIGtleXdvcmRzIHRvIGluY2x1ZGUgY29tbW9uCisgICAgICAgICAgICAgICAgZnVuY3Rpb25zICg8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+KSwgbG9hZCBwYXJ0cworICAgICAgICAgICAgICAgIG9mIGEgcmVjaXBlIGZyb20gb3RoZXIgZmlsZXMKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+KSBhbmQgZXhwb3J0IHZhcmlhYmxlcworICAgICAgICAgICAgICAgIHRvIHRoZSBlbnZpcm9ubWVudCAoPGZpbGVuYW1lPmV4cG9ydDwvZmlsZW5hbWU+KS48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSB1c2Ugb2Ygc29tZSBvZgorICAgICAgICAgICAgICAgIHRoZXNlIGtleXdvcmRzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZXhwb3J0IFBPU1RDT05GID0gIiR7U1RBR0lOR19CSU5ESVJ9L3Bvc3Rjb25mIgorICAgICBpbmhlcml0IGF1dG9jb25mCisgICAgIHJlcXVpcmUgb3RoZXJmaWxlLmluYworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29tbWVudHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBbnkgbGluZXMgdGhhdCBiZWdpbiB3aXRoIHRoZSBoYXNoIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+IzwvZmlsZW5hbWU+KSBhcmUgdHJlYXRlZCBhcyBjb21tZW50IGxpbmVzCisgICAgICAgICAgICAgICAgYW5kIGFyZSBpZ25vcmVkOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBUaGlzIGlzIGEgY29tbWVudAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgbmV4dCBsaXN0IHN1bW1hcml6ZXMgdGhlIG1vc3QgaW1wb3J0YW50IGFuZCBtb3N0IGNvbW1vbmx5CisgICAgICAgIHVzZWQgcGFydHMgb2YgdGhlIHJlY2lwZSBzeW50YXguCisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHBhcnRzIG9mIHRoZSBzeW50YXgsIHlvdSBjYW4KKyAgICAgICAgcmVmZXJlbmNlIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4KKyAgICAgICAgY2hhcHRlciBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGluZSBDb250aW51YXRpb246IDxmaWxlbmFtZT5cPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgVXNlIHRoZSBiYWNrd2FyZCBzbGFzaCAoPGZpbGVuYW1lPlw8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdG8gc3BsaXQgYSBzdGF0ZW1lbnQgb3ZlciBtdWx0aXBsZSBsaW5lcy4KKyAgICAgICAgICAgICAgICBQbGFjZSB0aGUgc2xhc2ggY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgdGhhdAorICAgICAgICAgICAgICAgIGlzIHRvIGJlIGNvbnRpbnVlZCBvbiB0aGUgbmV4dCBsaW5lOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSID0gIkEgcmVhbGx5IGxvbmcgXAorICAgICAgICAgICAgbGluZSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgaGF2ZSBhbnkgY2hhcmFjdGVycyBpbmNsdWRpbmcgc3BhY2VzCisgICAgICAgICAgICAgICAgICAgIG9yIHRhYnMgYWZ0ZXIgdGhlIHNsYXNoIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzaW5nIFZhcmlhYmxlczogPGZpbGVuYW1lPiR7Li4ufTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPiR7PHJlcGxhY2VhYmxlPlZBUk5BTUU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPiBzeW50YXggdG8KKyAgICAgICAgICAgICAgICBhY2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGEgdmFyaWFibGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJwbmcvemxpYi0ke1BWfS50YXIuZ3oiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZSB2YWx1ZSBvZiBhCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGV4cHJlc3NlZCBpbiB0aGlzIGZvcm0gZG9lcyBub3QgZ2V0CisgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBleHBhbnNpb24gb2YgdGhlc2UgZXhwcmVzc2lvbnMgaGFwcGVucworICAgICAgICAgICAgICAgICAgICBvbi1kZW1hbmQgbGF0ZXIgKGUuZy4gdXN1YWxseSB3aGVuIGEgZnVuY3Rpb24gdGhhdAorICAgICAgICAgICAgICAgICAgICBtYWtlcyByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIGV4ZWN1dGVzKS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBlbnN1cmVzIHRoYXQgdGhlIHZhbHVlcyBhcmUgbW9zdAorICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBmb3IgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhleSBhcmUKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseSB1c2VkLgorICAgICAgICAgICAgICAgICAgICBPbiB0aGUgcmFyZSBvY2Nhc2lvbiB0aGF0IHlvdSBkbyBuZWVkIHRoZSB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uIHRvIGJlIGV4cGFuZGVkIGltbWVkaWF0ZWx5LCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPjo9PC9maWxlbmFtZT4gb3BlcmF0b3IgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IHdoZW4geW91IG1ha2UgdGhlCisgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQsIGJ1dCB0aGlzIGlzIG5vdCBnZW5lcmFsbHkgbmVlZGVkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UXVvdGUgQWxsIEFzc2lnbm1lbnRzOiA8ZmlsZW5hbWU+IjxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgIFVzZSBkb3VibGUgcXVvdGVzIGFyb3VuZCB0aGUgdmFsdWUgaW4gYWxsIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgYXNzaWdubWVudHMuCisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVIxID0gIiR7T1RIRVJWQVJ9IgorICAgICBWQVIyID0gIlRoZSB2ZXJzaW9uIGlzICR7UFZ9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZGl0aW9uYWwgQXNzaWdubWVudDogPGZpbGVuYW1lPj89PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgQ29uZGl0aW9uYWwgYXNzaWdubWVudCBpcyB1c2VkIHRvIGFzc2lnbiBhIHZhbHVlIHRvCisgICAgICAgICAgICAgICAgYSB2YXJpYWJsZSwgYnV0IG9ubHkgd2hlbiB0aGUgdmFyaWFibGUgaXMgY3VycmVudGx5CisgICAgICAgICAgICAgICAgdW5zZXQuCisgICAgICAgICAgICAgICAgVXNlIHRoZSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IHRoZSBlcXVhbCBzaWduCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+KSB0byBtYWtlIGEgInNvZnQiIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICB1c2VkIGZvciBjb25kaXRpb25hbCBhc3NpZ25tZW50LgorICAgICAgICAgICAgICAgIFR5cGljYWxseSwgInNvZnQiIGFzc2lnbm1lbnRzIGFyZSB1c2VkIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3IgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgdGhhdCBhcmUgYWxsb3dlZCB0byBjb21lIHRocm91Z2ggZnJvbSB0aGUgZXh0ZXJuYWwKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gIk5ldyB2YWx1ZSIgaWYKKyAgICAgICAgICAgICAgICBpdCBpcyBjdXJyZW50bHkgZW1wdHkuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBoYXMgYWxyZWFkeSBiZWVuCisgICAgICAgICAgICAgICAgc2V0LCBpdCByZW1haW5zIHVuY2hhbmdlZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZBUjEgPz0gIk5ldyB2YWx1ZSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSW4gdGhpcyBuZXh0IGV4YW1wbGUsIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpcyBsZWZ0IHdpdGggdGhlIHZhbHVlICJPcmlnaW5hbCB2YWx1ZSI6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVIxID0gIk9yaWdpbmFsIHZhbHVlIgorICAgICBWQVIxID89ICJOZXcgdmFsdWUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBlbmRpbmc6IDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgIFVzZSB0aGUgcGx1cyBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgdGhlIGVxdWFscyBzaWduCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+KSB0byBhcHBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBleGlzdGluZworICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSB2YXJpYWJsZSBhbmQgdGhlIG5ldyBjb250ZW50LgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSSArPSAiZmlsZTovL2ZpeC1tYWtlZmlsZS5wYXRjaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlByZXBlbmRpbmc6IDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgIFVzZSB0aGUgZXF1YWxzIHNpZ24gZm9sbG93ZWQgYnkgdGhlIHBsdXMgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+KSB0byBwcmVwZW5kIHZhbHVlcyB0byBleGlzdGluZworICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBhZGRzIGEgc3BhY2UgYmV0d2VlbiB0aGUgbmV3IGNvbnRlbnQKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBleGlzdGluZyBjb250ZW50IG9mIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZBUiA9KyAiU3RhcnRzIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QXBwZW5kaW5nOiA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQorICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRvciB0bworICAgICAgICAgICAgICAgIGFwcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgZG9lcyBub3QgYWRkIGFueSBhZGRpdGlvbmFsIHNwYWNlLgorICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4gb3BlcmF0b3JzIGhhdmUgYmVlbiBhcHBsaWVkIGFuZAorICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKKyAgICAgICAgICAgICAgICBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZworICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIHN0YXJ0IHRvIGVuc3VyZSB0aGUgYXBwZW5kZWQKKyAgICAgICAgICAgICAgICB2YWx1ZSBpcyBub3QgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHZhbHVlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucworICAgICAgICAgICAgICAgIG9ubHkgYmVpbmcgcGVyZm9ybWVkIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBvcgorICAgICAgICAgICAgICAgIG1hY2hpbmU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJX2FwcGVuZF9zaDQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmVwZW5kaW5nOiA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KKyAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvCisgICAgICAgICAgICAgICAgcHJlcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgZG9lcyBub3QgYWRkIGFueSBhZGRpdGlvbmFsIHNwYWNlLgorICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4gb3BlcmF0b3JzIGhhdmUgYmVlbiBhcHBsaWVkIGFuZAorICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKKyAgICAgICAgICAgICAgICBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZworICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIGVuZCB0byBlbnN1cmUgdGhlIHByZXBlbmRlZAorICAgICAgICAgICAgICAgIHZhbHVlIGlzIG5vdCBtZXJnZWQgd2l0aCB0aGUgZXhpc3RpbmcgdmFsdWU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDRkxBR1NfcHJlcGVuZCA9ICItSSR7U30vbXlpbmNsdWRlcyAiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgb3BlcmF0b3Igd2l0aCBvdmVycmlkZXMsIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGFjdGlvbnMKKyAgICAgICAgICAgICAgICBvbmx5IGJlaW5nIHBlcmZvcm1lZCBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQgb3IKKyAgICAgICAgICAgICAgICBtYWNoaW5lOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ0ZMQUdTX3ByZXBlbmRfc2g0ID0gIi1JJHtTfS9teWluY2x1ZGVzICIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk92ZXJyaWRlczo8L2VtcGhhc2lzPiAtCisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2Ugb3ZlcnJpZGVzIHRvIHNldCBhIHZhbHVlIGNvbmRpdGlvbmFsbHksCisgICAgICAgICAgICAgICAgdHlwaWNhbGx5IGJhc2VkIG9uIGhvdyB0aGUgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtCUkFOQ0gnPjxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUncyB2YWx1ZSB0byAic3RhbmRhcmQvYmFzZSIgZm9yIGFueSB0YXJnZXQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgZXhjZXB0IGZvciBxZW11YXJtIHdoZXJlIGl0IHNob3VsZCBiZSBzZXQgdG8KKyAgICAgICAgICAgICAgICAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiLCB5b3Ugd291bGQgZG8gdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JSQU5DSCA9ICJzdGFuZGFyZC9iYXNlIgorICAgICBLQlJBTkNIX3FlbXVhcm0gID0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBPdmVycmlkZXMgYXJlIGFsc28gdXNlZCB0byBzZXBhcmF0ZSBhbHRlcm5hdGUgdmFsdWVzCisgICAgICAgICAgICAgICAgb2YgYSB2YXJpYWJsZSBpbiBvdGhlciBzaXR1YXRpb25zLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHNldHRpbmcgdmFyaWFibGVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGhhdCBhcmUgc3BlY2lmaWMgdG8gaW5kaXZpZHVhbCBwYWNrYWdlcyBwcm9kdWNlZCBieQorICAgICAgICAgICAgICAgIGEgcmVjaXBlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UgYW4gb3ZlcnJpZGUgdGhhdAorICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5kZW50YXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBVc2Ugc3BhY2VzIGZvciBpbmRlbnRhdGlvbiByYXRoZXIgdGhhbiB0aGFuIHRhYnMuCisgICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgYm90aCBjdXJyZW50bHkgd29yay4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBhIHBvbGljeSBkZWNpc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIHRvIHVzZSB0YWJzIGluIHNoZWxsIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgc29tZSBsYXllcnMgaGF2ZSBhIHBvbGljeSB0byB1c2Ugc3BhY2VzCisgICAgICAgICAgICAgICAgZm9yIGFsbCBpbmRlbnRhdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNpbmcgUHl0aG9uIGZvciBDb21wbGV4IE9wZXJhdGlvbnM6IDxmaWxlbmFtZT4ke0A8cmVwbGFjZWFibGU+cHl0aG9uX2NvZGU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBhZHZhbmNlZCBwcm9jZXNzaW5nLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UKKyAgICAgICAgICAgICAgICBQeXRob24gY29kZSBkdXJpbmcgdmFyaWFibGUgYXNzaWdubWVudHMgKGUuZy4KKyAgICAgICAgICAgICAgICBzZWFyY2ggYW5kIHJlcGxhY2VtZW50IG9uIGEgdmFyaWFibGUpLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaW5kaWNhdGUgUHl0aG9uIGNvZGUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7QDxyZXBsYWNlYWJsZT5weXRob25fY29kZTwvcmVwbGFjZWFibGU+fTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgc3ludGF4IGZvciB0aGUgdmFyaWFibGUgYXNzaWdubWVudDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvemlwJHtAZC5nZXRWYXIoJ1BWJywxKS5yZXBsYWNlKCcuJywgJycpfS50Z3oKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNoZWxsIEZ1bmN0aW9uIFN5bnRheDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFdyaXRlIHNoZWxsIGZ1bmN0aW9ucyBhcyBpZiB5b3Ugd2VyZSB3cml0aW5nIGEgc2hlbGwKKyAgICAgICAgICAgICAgICBzY3JpcHQgd2hlbiB5b3UgZGVzY3JpYmUgYSBsaXN0IG9mIGFjdGlvbnMgdG8gdGFrZS4KKyAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHlvdXIgc2NyaXB0IHdvcmtzIHdpdGggYSBnZW5lcmljCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoPC9maWxlbmFtZT4gYW5kIHRoYXQgaXQgZG9lcyBub3QgcmVxdWlyZQorICAgICAgICAgICAgICAgIGFueSA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IG9yIG90aGVyIHNoZWxsLXNwZWNpZmljCisgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgICAgICBUaGUgc2FtZSBjb25zaWRlcmF0aW9ucyBhcHBseSB0byB2YXJpb3VzIHN5c3RlbQorICAgICAgICAgICAgICAgIHV0aWxpdGllcyAoZS5nLiA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdyZXA8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmF3azwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkgdGhhdCB5b3UgbWlnaHQgd2lzaCB0byB1c2UuCisgICAgICAgICAgICAgICAgSWYgaW4gZG91YnQsIHlvdSBzaG91bGQgY2hlY2sgd2l0aCBtdWx0aXBsZQorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyAtIGluY2x1ZGluZyB0aG9zZSBmcm9tIEJ1c3lCb3guCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImRldmVsb3BtZW50LWNvbmNlcHRzIj4KKyAgICA8dGl0bGU+RGV2ZWxvcG1lbnQgQ29uY2VwdHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBpbnNpZGUgdGhlIGRldmVsb3BtZW50CisgICAgICAgIHByb2Nlc3MuCisgICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSByZXByZXNlbnRzIGRldmVsb3BtZW50IGF0IGEgaGlnaCBsZXZlbC4KKyAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIGNoYXB0ZXIgZXhwYW5kcyBvbiB0aGUgZnVuZGFtZW50YWwgaW5wdXQsIG91dHB1dCwKKyAgICAgICAgcHJvY2VzcywgYW5kCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4pIGJsb2NrcworICAgICAgICB0aGF0IG1ha2UgdXAgZGV2ZWxvcG1lbnQgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmEgaWQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz4KKyAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI4aW4iIGRlcHRoPSI0LjI1aW4iIC8+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEluIGdlbmVyYWwsIGRldmVsb3BtZW50IGNvbnNpc3RzIG9mIHNldmVyYWwgZnVuY3Rpb25hbCBhcmVhczoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlciBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgTWV0YWRhdGEgeW91IGNhbiB1c2UgdG8gY29udHJvbCB0aGUgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWV0YWRhdGEgTGF5ZXJzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVmFyaW91cyBsYXllcnMgdGhhdCBwcm92aWRlIHNvZnR3YXJlLCBtYWNoaW5lLCBhbmQKKyAgICAgICAgICAgICAgICBkaXN0cm8gTWV0YWRhdGEuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNvdXJjZSBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFVwc3RyZWFtIHJlbGVhc2VzLCBsb2NhbCBwcm9qZWN0cywgYW5kIFNDTXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFByb2Nlc3NlcyB1bmRlciB0aGUgY29udHJvbCBvZgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4uCisgICAgICAgICAgICAgICAgVGhpcyBibG9jayBleHBhbmRzIG9uIGhvdyBCaXRCYWtlIGZldGNoZXMgc291cmNlLCBhcHBsaWVzCisgICAgICAgICAgICAgICAgcGF0Y2hlcywgY29tcGxldGVzIGNvbXBpbGF0aW9uLCBhbmFseXplcyBvdXRwdXQgZm9yIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBjcmVhdGVzIGFuZCB0ZXN0cyBwYWNrYWdlcywgZ2VuZXJhdGVzIGltYWdlcywgYW5kCisgICAgICAgICAgICAgICAgZ2VuZXJhdGVzIGNyb3NzLWRldmVsb3BtZW50IHRvb2xzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYWNrYWdlIEZlZWRzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRGlyZWN0b3JpZXMgY29udGFpbmluZyBvdXRwdXQgcGFja2FnZXMgKFJQTSwgREVCIG9yIElQSyksCisgICAgICAgICAgICAgICAgd2hpY2ggYXJlIHN1YnNlcXVlbnRseSB1c2VkIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gaW1hZ2Ugb3IKKyAgICAgICAgICAgICAgICBTREssIHByb2R1Y2VkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhlc2UgZmVlZHMgY2FuIGFsc28gYmUgY29waWVkIGFuZCBzaGFyZWQgdXNpbmcgYSB3ZWIgc2VydmVyIG9yCisgICAgICAgICAgICAgICAgb3RoZXIgbWVhbnMgdG8gZmFjaWxpdGF0ZSBleHRlbmRpbmcgb3IgdXBkYXRpbmcgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICBpbWFnZXMgb24gZGV2aWNlcyBhdCBydW50aW1lIGlmIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IGlzCisgICAgICAgICAgICAgICAgZW5hYmxlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW1hZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDcm9zcy1kZXZlbG9wbWVudCB0b29scyB0aGF0IGFyZSBwcm9kdWNlZCBhbG9uZyB3aXRoIGFuIGltYWdlCisgICAgICAgICAgICAgICAgb3Igc2VwYXJhdGVseSB3aXRoIEJpdEJha2UuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSJ1c2VyLWNvbmZpZ3VyYXRpb24iPgorICAgICAgICA8dGl0bGU+VXNlciBDb25maWd1cmF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFVzZXIgY29uZmlndXJhdGlvbiBoZWxwcyBkZWZpbmUgdGhlIGJ1aWxkLgorICAgICAgICAgICAgVGhyb3VnaCB1c2VyIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gdGVsbCBCaXRCYWtlIHRoZQorICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2UsCisgICAgICAgICAgICB3aGVyZSB0byBzdG9yZSBkb3dubG9hZGVkIHNvdXJjZSwgYW5kIG90aGVyIGJ1aWxkIHByb3BlcnRpZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGFuIGV4cGFuZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICAgICAgICAgIlVzZXIgQ29uZmlndXJhdGlvbiIgYm94IG9mIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+OgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSBuZWVkcyBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gb3JkZXIgdG8gY29tcGxldGUKKyAgICAgICAgICAgIGEgYnVpbGQuCisgICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUgPGZpbGVuYW1lPiouY29uZjwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgVGhlIG1pbmltYWxseSBuZWNlc3Nhcnkgb25lcyByZXNpZGUgYXMgZXhhbXBsZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIHRoaXMgc2VjdGlvbiByZWZlcnMgdG8gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYXMKKyAgICAgICAgICAgIHRoZSAiUG9reSBEaXJlY3RvcnkuIgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBjbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBvciB5b3UKKyAgICAgICAgICAgIGRvd25sb2FkIGFuZCB1bnBhY2sgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHlvdSBjYW4gc2V0IHVwIHRoZQorICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSB0byBiZSBuYW1lZCBhbnl0aGluZyB5b3Ugd2FudC4KKyAgICAgICAgICAgIEZvciB0aGlzIGRpc2N1c3Npb24sIHRoZSBjbG9uZWQgcmVwb3NpdG9yeSB1c2VzIHRoZSBkZWZhdWx0CisgICAgICAgICAgICBuYW1lIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgUG9reSByZXBvc2l0b3J5IGlzIHByaW1hcmlseSBhbiBhZ2dyZWdhdGlvbiBvZiBleGlzdGluZworICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICBJdCBpcyBub3QgYSBjYW5vbmljYWwgdXBzdHJlYW0gc291cmNlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyIGluc2lkZSBQb2t5IGNvbnRhaW5zCisgICAgICAgICAgICBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRoYXQgaGFzIGV4YW1wbGUKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgICAgICBUaGVzZSBleGFtcGxlIGZpbGVzIGFyZSB1c2VkIGFzIGEgYmFzaXMgZm9yIGNyZWF0aW5nIGFjdHVhbAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyB3aGVuIHlvdSBzb3VyY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgICAgICBzY3JpcHQKKyAgICAgICAgICAgIChpLmUuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvdXJjaW5nIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQgY3JlYXRlcyBhCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgIGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgorICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSBCdWlsZCBEaXJlY3RvcnkgZm9yIGFsbCBpdHMgd29yayBkdXJpbmcgYnVpbGRzLgorICAgICAgICAgICAgVGhlIEJ1aWxkIERpcmVjdG9yeSBoYXMgYSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0aGF0CisgICAgICAgICAgICBjb250YWlucyBkZWZhdWx0IHZlcnNpb25zIG9mIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgIFRoZXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgY3JlYXRlZCBvbmx5IGlmIHZlcnNpb25zCisgICAgICAgICAgICBkbyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGF0IHRoZSB0aW1lIHlvdQorICAgICAgICAgICAgc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhlIFBva3kgcmVwb3NpdG9yeSBpcyBmdW5kYW1lbnRhbGx5IGFuIGFnZ3JlZ2F0aW9uIG9mCisgICAgICAgICAgICBleGlzdGluZyByZXBvc2l0b3JpZXMsIHNvbWUgdXNlcnMgbWlnaHQgYmUgZmFtaWxpYXIgd2l0aCBydW5uaW5nCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT4gc2NyaXB0IGluIHRoZSBjb250ZXh0CisgICAgICAgICAgICBvZiBzZXBhcmF0ZSBPcGVuRW1iZWRkZWQtQ29yZSBhbmQgQml0QmFrZSByZXBvc2l0b3JpZXMgcmF0aGVyIHRoYW4gYQorICAgICAgICAgICAgc2luZ2xlIFBva3kgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIFRoaXMgZGlzY3Vzc2lvbiBhc3N1bWVzIHRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgZnJvbSB3aXRoaW4gYSBjbG9uZWQKKyAgICAgICAgICAgIG9yIHVucGFja2VkIHZlcnNpb24gb2YgUG9reS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHdoZXJlIHRoZSBzY3JpcHQgaXMgc291cmNlZCwgZGlmZmVyZW50IHN1Yi1zY3JpcHRzCisgICAgICAgICAgICBhcmUgY2FsbGVkIHRvIHNldCB1cCB0aGUgQnVpbGQgRGlyZWN0b3J5IChZb2N0byBvciBPcGVuRW1iZWRkZWQpLgorICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgc2NyaXB0CisgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IGluc2lkZSB0aGUKKyAgICAgICAgICAgIHBva3kgZGlyZWN0b3J5IHNldHMgdXAgdGhlIEJ1aWxkIERpcmVjdG9yeSBhbmQgc2VlZHMgdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgKGlmIG5lY2Vzc2FyeSkgd2l0aCBjb25maWd1cmF0aW9uIGZpbGVzIGFwcHJvcHJpYXRlIGZvciB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXI8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICB1c2VzIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGxvY2F0ZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBwcm92aWRlcyBtYW55CisgICAgICAgICAgICBiYXNpYyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgYSBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIEhlcmUgaXMgYSBsaXN0IG9mIGEgZmV3LgorICAgICAgICAgICAgVG8gc2VlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGluIGEgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSBjcmVhdGVkIGJ5IHRoZSBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQsIHNlZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBhcmFsbGVsaXNtIE9wdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX05VTUJFUl9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1RIUkVBRFM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX05VTUJFUl9QQVJTRV9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1BBUlNFX1RIUkVBRFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRhcmdldCBNYWNoaW5lIFNlbGVjdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb3dubG9hZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNoYXJlZCBTdGF0ZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgT3V0cHV0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25zIHNldCBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYXV0by5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSB0ZWxscyBCaXRCYWtlIHdoYXQKKyAgICAgICAgICAgIGxheWVycyB5b3Ugd2FudCBjb25zaWRlcmVkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgbGF5ZXJzIGxpc3RlZCBpbiB0aGlzIGZpbGUgaW5jbHVkZSBsYXllcnMKKyAgICAgICAgICAgIG1pbmltYWxseSBuZWVkZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBtdXN0IG1hbnVhbGx5IGFkZCBhbnkgY3VzdG9tIGxheWVycyB5b3UgaGF2ZSBjcmVhdGVkLgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gd29ya2luZyB3aXRoIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZmlsZXMgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGFyZSBub3QgY3JlYXRlZCBieSB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSA8ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT4gZmlsZSwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgIGNyZWF0ZSB0aGF0IHlvdXJzZWxmLgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHR5cGljYWxseSBjcmVhdGVkIGJ5CisgICAgICAgICAgICBhbiBhdXRvYnVpbGRlcjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBjb25maWd1cmUgbXVsdGlwbGUgYnVpbGQgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgc2V2ZXJhbCBidWlsZCBlbnZpcm9ubWVudHMgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZXkgc2hhcmVkIHNvbWUgY29tbW9uIGZlYXR1cmVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0IGJ1aWxkIHByb3BlcnRpZXMgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgaXMgcGVyaGFwcyB0aGUgcGFja2FnaW5nIGZvcm1hdCB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uZSB1c2VmdWwgc2NlbmFyaW8gZm9yIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHRvIGV4dGVuZCB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgcGF0aCB0byBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGVuLCB3aGVuIEJpdEJha2UgbG9va3MgZm9yIE1ldGFkYXRhIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgaXQgZmluZHMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kIGFwcGxpZXMgeW91cgorICAgICAgICAgICAgICAgICAgICBjb21tb24gY29uZmlndXJhdGlvbnMgZm91bmQgaW4gdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRvIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zIGluIGEgcGFydGljdWxhciBidWlsZCBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgIGFsdGVyIHRoZSBzaW1pbGFyIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGF0IGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSdzIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSBpcyB1c3VhbGx5IGNyZWF0ZWQgYW5kIHdyaXR0ZW4gdG8gYnkKKyAgICAgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXIuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzZXR0aW5ncyBwdXQgaW50byB0aGUgZmlsZSBhcmUgdHlwaWNhbGx5IHRoZSBzYW1lIGFzCisgICAgICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBmaW5kIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3IgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGVkaXQgYWxsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZnVydGhlciBkZWZpbmUKKyAgICAgICAgICAgIGFueSBwYXJ0aWN1bGFyIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhpcyBwcm9jZXNzIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSAiVXNlciBDb25maWd1cmF0aW9uIEVkaXRzIgorICAgICAgICAgICAgYm94IGluIHRoZSBmaWd1cmUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGxhdW5jaCB5b3VyIGJ1aWxkIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29tbWFuZCwgQml0QmFrZSBzb3J0cyBvdXQgdGhlIGNvbmZpZ3VyYXRpb25zIHRvIHVsdGltYXRlbHkKKyAgICAgICAgICAgIGRlZmluZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgcmVhZHMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYSBzcGVjaWZpYyBvcmRlcjoKKyAgICAgICAgICAgIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICBBbmQsIHRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGUgbm9ybWFsIGFzc2lnbm1lbnQgc3RhdGVtZW50CisgICAgICAgICAgICBydWxlcy4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhlIGZpbGVzIGFyZSBwYXJzZWQgaW4gYSBzcGVjaWZpYyBvcmRlciwgdmFyaWFibGUKKyAgICAgICAgICAgIGFzc2lnbm1lbnRzIGZvciB0aGUgc2FtZSB2YXJpYWJsZSBjb3VsZCBiZSBhZmZlY3RlZC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB0aGUgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBzZXQKKyAgICAgICAgICAgIDxyZXBsYWNlYWJsZT52YXJpYWJsZTE8L3JlcGxhY2VhYmxlPiB0byBkaWZmZXJlbnQgdmFsdWVzLCBiZWNhdXNlCisgICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtIHBhcnNlcyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFmdGVyCisgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+dmFyaWFibGUxPC9yZXBsYWNlYWJsZT4gaXMgYXNzaWduZWQgdGhlIHZhbHVlIGZyb20KKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ibWV0YWRhdGEtbWFjaGluZS1jb25maWd1cmF0aW9uLWFuZC1wb2xpY3ktY29uZmlndXJhdGlvbiI+CisgICAgICAgIDx0aXRsZT5NZXRhZGF0YSwgTWFjaGluZSBDb25maWd1cmF0aW9uLCBhbmQgUG9saWN5IENvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHByZXZpb3VzIHNlY3Rpb24gZGVzY3JpYmVkIHRoZSB1c2VyIGNvbmZpZ3VyYXRpb25zIHRoYXQKKyAgICAgICAgICAgIGRlZmluZSBCaXRCYWtlJ3MgZ2xvYmFsIGJlaGF2aW9yLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGxheWVycyB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICB1c2VzIHRvIGZ1cnRoZXIgY29udHJvbCB0aGUgYnVpbGQuCisgICAgICAgICAgICBUaGVzZSBsYXllcnMgcHJvdmlkZSBNZXRhZGF0YSBmb3IgdGhlIHNvZnR3YXJlLCBtYWNoaW5lLCBhbmQKKyAgICAgICAgICAgIHBvbGljeS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gZ2VuZXJhbCwgdGhyZWUgdHlwZXMgb2YgbGF5ZXIgaW5wdXQgZXhpc3Q6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UG9saWN5IENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uIExheWVycyBwcm92aWRlIHRvcC1sZXZlbCBvciBnZW5lcmFsCisgICAgICAgICAgICAgICAgICAgIHBvbGljaWVzIGZvciB0aGUgaW1hZ2Ugb3IgU0RLIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBsYXllciB3b3VsZCBkaWN0YXRlIHdoZXRoZXIgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBSUE0gb3IgSVBLIHBhY2thZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFjaGluZSBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBsYXllcnMgcHJvdmlkZSBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgaW5mb3JtYXRpb24gaXMgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCBhcmNoaXRlY3R1cmUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBsYXllcnMgY29udGFpbiB1c2VyLXN1cHBsaWVkIHJlY2lwZSBmaWxlcywKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcywgYW5kIGFwcGVuZCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgYW4gZXhwYW5kZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlCisgICAgICAgICAgICBNZXRhZGF0YSwgTWFjaGluZSBDb25maWd1cmF0aW9uLCBhbmQgUG9saWN5IENvbmZpZ3VyYXRpb24gaW5wdXQKKyAgICAgICAgICAgIChsYXllcnMpIGJveGVzIG9mIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+OgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOGluIiBkZXB0aD0iNy41aW4iIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGdlbmVyYWwsIGFsbCBsYXllcnMgaGF2ZSBhIHNpbWlsYXIgc3RydWN0dXJlLgorICAgICAgICAgICAgVGhleSBhbGwgY29udGFpbiBhIGxpY2Vuc2luZyBmaWxlCisgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Q09QWUlORzwvZmlsZW5hbWU+KSBpZiB0aGUgbGF5ZXIgaXMgdG8gYmUKKyAgICAgICAgICAgIGRpc3RyaWJ1dGVkLCBhIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFzIGdvb2QgcHJhY3RpY2UKKyAgICAgICAgICAgIGFuZCBlc3BlY2lhbGx5IGlmIHRoZSBsYXllciBpcyB0byBiZSBkaXN0cmlidXRlZCwgYQorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaXJlY3RvcnksIGFuZCByZWNpcGUgZGlyZWN0b3JpZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBtYW55IGxheWVycyB0aGF0IGNhbiBiZSB1c2VkLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgYSB3ZWItaW50ZXJmYWNlIGxpc3Rpbmcgb2YgdGhlbSBvbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8iPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgIFRoZSBsYXllcnMgYXJlIHNob3duIGF0IHRoZSBib3R0b20gY2F0ZWdvcml6ZWQgdW5kZXIKKyAgICAgICAgICAgICJZb2N0byBNZXRhZGF0YSBMYXllcnMuIgorICAgICAgICAgICAgVGhlc2UgbGF5ZXJzIGFyZSBmdW5kYW1lbnRhbGx5IGEgc3Vic2V0IG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvbGF5ZXJzLyI+T3BlbkVtYmVkZGVkIE1ldGFkYXRhIEluZGV4PC91bGluaz4sCisgICAgICAgICAgICB3aGljaCBsaXN0cyBhbGwgbGF5ZXJzIHByb3ZpZGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgY29tbXVuaXR5LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgTGF5ZXJzIGV4aXN0IGluIHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgdGhhdAorICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgT3BlbkVtYmVkZGVkIE1ldGFkYXRhIEluZGV4LgorICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBhcmUgZWl0aGVyIGRlcHJlY2F0ZWQgb3IgZXhwZXJpbWVudGFsIGluIG5hdHVyZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIHVzZXIgY29uZmlndXJhdGlvbiwgdG8gZmluZCB3aGF0IGxheWVycyBpdAorICAgICAgICAgICAgc2hvdWxkIGJlIHVzaW5nIGFzIHBhcnQgb2YgdGhlIGJ1aWxkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0iZGlzdHJvLWxheWVyIj4KKyAgICAgICAgICAgIDx0aXRsZT5EaXN0cm8gTGF5ZXI8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZGlzdHJpYnV0aW9uIGxheWVyIHByb3ZpZGVzIHBvbGljeSBjb25maWd1cmF0aW9ucyBmb3IgeW91cgorICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICBCZXN0IHByYWN0aWNlcyBkaWN0YXRlIHRoYXQgeW91IGlzb2xhdGUgdGhlc2UgdHlwZXMgb2YKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbnRvIHRoZWlyIG93biBsYXllci4KKyAgICAgICAgICAgICAgICBTZXR0aW5ncyB5b3UgcHJvdmlkZSBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3Ryby88cmVwbGFjZWFibGU+ZGlzdHJvPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+IG92ZXJyaWRlCisgICAgICAgICAgICAgICAgc2ltaWxhcgorICAgICAgICAgICAgICAgIHNldHRpbmdzIHRoYXQgQml0QmFrZSBmaW5kcyBpbiB5b3VyCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlIEJ1aWxkCisgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgcHJvdmlkZXMgc29tZSBleHBsYW5hdGlvbiBhbmQgcmVmZXJlbmNlcworICAgICAgICAgICAgICAgIGZvciB3aGF0IHlvdSB0eXBpY2FsbHkgZmluZCBpbiB0aGUgZGlzdHJpYnV0aW9uIGxheWVyOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Y2xhc3Nlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgZmlsZXMgKDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KSBob2xkCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24gZnVuY3Rpb25hbGl0eSB0aGF0IGNhbiBiZSBzaGFyZWQgYW1vbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91ciByZWNpcGVzIGluaGVyaXQgYSBjbGFzcywgdGhleSB0YWtlIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgYW5kIGZ1bmN0aW9ucyBmb3IgdGhhdCBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNsYXNzIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzJz5DbGFzc2VzPC9saW5rPiIgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmNvbmY6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBob2xkcyBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyICg8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4pLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5jb25mL2Rpc3Ryby88cmVwbGFjZWFibGU+ZGlzdHJvPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgZGlzdHJpYnV0aW9uLXdpZGUgaW5jbHVkZSBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnJlY2lwZXMtKjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVjaXBlcyBhbmQgYXBwZW5kIGZpbGVzIHRoYXQgYWZmZWN0IGNvbW1vbgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBjb3VsZCBpbmNsdWRlIHJlY2lwZXMgYW5kIGFwcGVuZCBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWRkIGRpc3RyaWJ1dGlvbi1zcGVjaWZpYyBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0cywgY3VzdG9tIGltYWdlIHJlY2lwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWxheWVyIj4KKyAgICAgICAgICAgIDx0aXRsZT5CU1AgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgQlNQIExheWVyIHByb3ZpZGVzIG1hY2hpbmUgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyBpbiB0aGlzIGxheWVyIGlzIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIGZvciB3aGljaAorICAgICAgICAgICAgICAgIHlvdSBhcmUgYnVpbGRpbmcgdGhlIGltYWdlIG9yIHRoZSBTREsuCisgICAgICAgICAgICAgICAgQSBjb21tb24gc3RydWN0dXJlIG9yIGZvcm0gaXMgZGVmaW5lZCBmb3IgQlNQIGxheWVycy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdGhpcyBzdHJ1Y3R1cmUgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciBhIEJTUCBsYXllciB0byBiZSBjb25zaWRlcmVkIGNvbXBsaWFudCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBpdCBtdXN0IG1lZXQgc29tZSBzdHJ1Y3R1cmFsIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBCU1AgTGF5ZXIncyBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSBjb250YWlucworICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBtYWNoaW5lCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5jb25mL21hY2hpbmUvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4pIGFuZCwKKyAgICAgICAgICAgICAgICBvZiBjb3Vyc2UsIHRoZSBsYXllciAoPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGUgbGF5ZXIgaXMgZGVkaWNhdGVkIHRvIHNwZWNpZmljIHJlY2lwZXMKKyAgICAgICAgICAgICAgICBieSBmdW5jdGlvbjogPGZpbGVuYW1lPnJlY2lwZXMtYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtY29yZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWdyYXBoaWNzPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIE1ldGFkYXRhIGNhbiBleGlzdCBmb3IgbXVsdGlwbGUgZm9ybWZhY3RvcnMsIGdyYXBoaWNzCisgICAgICAgICAgICAgICAgc3VwcG9ydCBzeXN0ZW1zLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoZSBmaWd1cmUgc2hvd3Mgc2V2ZXJhbCA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMsIG5vdCBhbGwgdGhlc2UgZGlyZWN0b3JpZXMgYXBwZWFyIGluIGFsbAorICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXJzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJzb2Z0d2FyZS1sYXllciI+CisgICAgICAgICAgICA8dGl0bGU+U29mdHdhcmUgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc29mdHdhcmUgbGF5ZXIgcHJvdmlkZXMgdGhlIE1ldGFkYXRhIGZvciBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgc29mdHdhcmUgcGFja2FnZXMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgZG9lcyBub3QgaW5jbHVkZSBNZXRhZGF0YSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBvciB0aGUgbWFjaGluZSwgd2hpY2ggYXJlIGZvdW5kIGluIHRoZWlyCisgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBsYXllcnMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgY29udGFpbnMgYW55IG5ldyByZWNpcGVzIHRoYXQgeW91ciBwcm9qZWN0IG5lZWRzCisgICAgICAgICAgICAgICAgaW4gdGhlIGZvcm0gb2YgcmVjaXBlIGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InNvdXJjZXMtZGV2LWVudmlyb25tZW50Ij4KKyAgICAgICAgPHRpdGxlPlNvdXJjZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhbiBpbWFnZSBvcgorICAgICAgICAgICAgYW55IHRhcmdldCwgaXQgbXVzdCBiZSBhYmxlIHRvIGFjY2VzcyBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPgorICAgICAgICAgICAgcmVwcmVzZW50cyBzb3VyY2UgZmlsZXMgdXNpbmcgdGhlICJVcHN0cmVhbSBQcm9qZWN0IFJlbGVhc2VzIiwKKyAgICAgICAgICAgICJMb2NhbCBQcm9qZWN0cyIsIGFuZCAiU0NNcyAob3B0aW9uYWwpIiBib3hlcy4KKyAgICAgICAgICAgIFRoZSBmaWd1cmUgcmVwcmVzZW50cyBtaXJyb3JzLCB3aGljaCBhbHNvIHBsYXkgYSByb2xlIGluIGxvY2F0aW5nCisgICAgICAgICAgICBzb3VyY2UgZmlsZXMsIHdpdGggdGhlICJTb3VyY2UgTWlycm9yKHMpIiBib3guCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBtZXRob2QgYnkgd2hpY2ggc291cmNlIGZpbGVzIGFyZSB1bHRpbWF0ZWx5IG9yZ2FuaXplZCBpcworICAgICAgICAgICAgYSBmdW5jdGlvbiBvZiB0aGUgcHJvamVjdC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBmb3IgcmVsZWFzZWQgc29mdHdhcmUsIHByb2plY3RzIHRlbmQgdG8gdXNlIHRhcmJhbGxzCisgICAgICAgICAgICBvciBvdGhlciBhcmNoaXZlZCBmaWxlcyB0aGF0IGNhbiBjYXB0dXJlIHRoZSBzdGF0ZSBvZiBhIHJlbGVhc2UKKyAgICAgICAgICAgIGd1YXJhbnRlZWluZyB0aGF0IGl0IGlzIHN0YXRpY2FsbHkgcmVwcmVzZW50ZWQuCisgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgZm9yIGEgcHJvamVjdCB0aGF0IGlzIG1vcmUgZHluYW1pYyBvcgorICAgICAgICAgICAgZXhwZXJpbWVudGFsIGluIG5hdHVyZSwgYSBwcm9qZWN0IG1pZ2h0IGtlZXAgc291cmNlIGZpbGVzIGluIGEKKyAgICAgICAgICAgIHJlcG9zaXRvcnkgY29udHJvbGxlZCBieSBhIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgKFNDTSkgc3VjaCBhcworICAgICAgICAgICAgR2l0LgorICAgICAgICAgICAgUHVsbGluZyBzb3VyY2UgZnJvbSBhIHJlcG9zaXRvcnkgYWxsb3dzIHlvdSB0byBjb250cm9sCisgICAgICAgICAgICB0aGUgcG9pbnQgaW4gdGhlIHJlcG9zaXRvcnkgKHRoZSByZXZpc2lvbikgZnJvbSB3aGljaCB5b3Ugd2FudCB0bworICAgICAgICAgICAgYnVpbGQgc29mdHdhcmUuCisgICAgICAgICAgICBGaW5hbGx5LCBhIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28gbWlnaHQgZXhpc3QsIHdoaWNoIHdvdWxkIGdpdmUgdGhlCisgICAgICAgICAgICBjb25zdW1lciBhIGNob2ljZSB3aGVuIGRlY2lkaW5nIHdoZXJlIHRvIGdldCBzb3VyY2UgZmlsZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgdG8gcG9pbnQgdG8gc291cmNlIGZpbGVzIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgbG9jYXRpb24uCisgICAgICAgICAgICBFYWNoIHJlY2lwZSBtdXN0IGhhdmUgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICB0aGF0IHBvaW50cyB0byB0aGUgc291cmNlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbm90aGVyIGFyZWEgdGhhdCBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaW4gd2hlcmUgc291cmNlIGZpbGVzCisgICAgICAgICAgICBjb21lIGZyb20gaXMgcG9pbnRlZCB0byBieSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgVGhpcyBhcmVhIGlzIGEgY2FjaGUgdGhhdCBjYW4gaG9sZCBwcmV2aW91c2x5IGRvd25sb2FkZWQgc291cmNlLgorICAgICAgICAgICAgWW91IGNhbiBhbHNvIGluc3RydWN0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZQorICAgICAgICAgICAgdGFyYmFsbHMgZnJvbSBHaXQgcmVwb3NpdG9yaWVzLCB3aGljaCBpcyBub3QgdGhlIGRlZmF1bHQgYmVoYXZpb3IsCisgICAgICAgICAgICBhbmQgc3RvcmUgdGhlbSBpbiB0aGUgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyc+PGZpbGVuYW1lPkJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEp1ZGljaW91cyB1c2Ugb2YgYSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gZGlyZWN0b3J5IGNhbgorICAgICAgICAgICAgc2F2ZSB0aGUgYnVpbGQgc3lzdGVtIGEgdHJpcCBhY3Jvc3MgdGhlIEludGVybmV0IHdoZW4gbG9va2luZworICAgICAgICAgICAgZm9yIGZpbGVzLgorICAgICAgICAgICAgQSBnb29kIG1ldGhvZCBmb3IgdXNpbmcgYSBkb3dubG9hZCBkaXJlY3RvcnkgaXMgdG8gaGF2ZQorICAgICAgICAgICAgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IHBvaW50IHRvIGFuIGFyZWEgb3V0c2lkZSBvZiB5b3VyCisgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICBEb2luZyBzbyBhbGxvd3MgeW91IHRvIHNhZmVseSBkZWxldGUgdGhlIEJ1aWxkIERpcmVjdG9yeQorICAgICAgICAgICAgaWYgbmVlZGVkIHdpdGhvdXQgZmVhciBvZiByZW1vdmluZyBhbnkgZG93bmxvYWRlZCBzb3VyY2UgZmlsZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBkZWVwZXIgbG9vayBpbnRvIHRoZQorICAgICAgICAgICAgc291cmNlIGZpbGVzIGFuZCB0aGUgbWlycm9ycy4KKyAgICAgICAgICAgIEhlcmUgaXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgYXQgdGhlIHNvdXJjZSBmaWxlIGFyZWEgb2YgdGhlCisgICAgICAgICAgICBiYXNlIGZpZ3VyZToKKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iN2luIiBkZXB0aD0iNy41aW4iIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndXBzdHJlYW0tcHJvamVjdC1yZWxlYXNlcyc+CisgICAgICAgICAgICA8dGl0bGU+VXBzdHJlYW0gUHJvamVjdCBSZWxlYXNlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVwc3RyZWFtIHByb2plY3QgcmVsZWFzZXMgZXhpc3QgYW55d2hlcmUgaW4gdGhlIGZvcm0gb2YgYW4KKyAgICAgICAgICAgICAgICBhcmNoaXZlZCBmaWxlIChlLmcuIHRhcmJhbGwgb3IgemlwIGZpbGUpLgorICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGNvcnJlc3BvbmQgdG8gaW5kaXZpZHVhbCByZWNpcGVzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZmlndXJlIHVzZXMgc3BlY2lmaWMgcmVsZWFzZXMgZWFjaCBmb3IKKyAgICAgICAgICAgICAgICBCdXN5Qm94LCBRdCwgYW5kIERidXMuCisgICAgICAgICAgICAgICAgQW4gYXJjaGl2ZSBmaWxlIGNhbiBiZSBmb3IgYW55IHJlbGVhc2VkIHByb2R1Y3QgdGhhdCBjYW4gYmUKKyAgICAgICAgICAgICAgICBidWlsdCB1c2luZyBhIHJlY2lwZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdsb2NhbC1wcm9qZWN0cyc+CisgICAgICAgICAgICA8dGl0bGU+TG9jYWwgUHJvamVjdHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBMb2NhbCBwcm9qZWN0cyBhcmUgY3VzdG9tIGJpdHMgb2Ygc29mdHdhcmUgdGhlIHVzZXIgcHJvdmlkZXMuCisgICAgICAgICAgICAgICAgVGhlc2UgYml0cyByZXNpZGUgc29tZXdoZXJlIGxvY2FsIHRvIGEgcHJvamVjdCAtIHBlcmhhcHMKKyAgICAgICAgICAgICAgICBhIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZSB1c2VyIGNoZWNrcyBpbiBpdGVtcyAoZS5nLgorICAgICAgICAgICAgICAgIGEgbG9jYWwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBkZXZlbG9wbWVudCBzb3VyY2UgdHJlZQorICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIGdyb3VwKS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGNhbm9uaWNhbCBtZXRob2QgdGhyb3VnaCB3aGljaCB0byBpbmNsdWRlIGEgbG9jYWwgcHJvamVjdAorICAgICAgICAgICAgICAgIGlzIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgY2xhc3MgdG8gaW5jbHVkZSB0aGF0IGxvY2FsIHByb2plY3QuCisgICAgICAgICAgICAgICAgWW91IHVzZSBlaXRoZXIgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYQorICAgICAgICAgICAgICAgIHJlY2lwZSdzIGFwcGVuZCBmaWxlIHRvIG92ZXJyaWRlIG9yIHNldCB0aGUKKyAgICAgICAgICAgICAgICByZWNpcGUgdG8gcG9pbnQgdG8gdGhlIGxvY2FsIGRpcmVjdG9yeSBvbiB5b3VyIGRpc2sgdG8gcHVsbAorICAgICAgICAgICAgICAgIGluIHRoZSB3aG9sZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT4gY2xhc3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYy5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc2Ntcyc+CisgICAgICAgICAgICA8dGl0bGU+U291cmNlIENvbnRyb2wgTWFuYWdlcnMgKE9wdGlvbmFsKTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFub3RoZXIgcGxhY2UgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gZ2V0IHNvdXJjZSBmaWxlcyBmcm9tIGlzCisgICAgICAgICAgICAgICAgdGhyb3VnaCBhbiBTQ00gc3VjaCBhcyBHaXQgb3IgU3VidmVyc2lvbi4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEgcmVwb3NpdG9yeSBpcyBjbG9uZWQgb3IgY2hlY2tlZCBvdXQuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIGluc2lkZSBCaXRCYWtlIHVzZXMKKyAgICAgICAgICAgICAgICB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRoZSBhcmd1bWVudCdzIHByZWZpeCB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgICAgICBmZXRjaGVyIG1vZHVsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBoYXZlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGFyYmFsbHMgZm9yIEdpdCByZXBvc2l0b3JpZXMgYW5kIHBsYWNlIHRoZW0gaW4gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiBmZXRjaGluZyBhIHJlcG9zaXRvcnksIEJpdEJha2UgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHRoZSBzcGVjaWZpYyByZXZpc2lvbiBmcm9tIHdoaWNoIHRvCisgICAgICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLW1pcnJvcnMnPgorICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBNaXJyb3Iocyk8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUd28ga2luZHMgb2YgbWlycm9ycyBleGlzdDogcHJlLW1pcnJvcnMgYW5kIHJlZ3VsYXIgbWlycm9ycy4KKyAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLVBSRU1JUlJPUlMnPjxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGVzIHBvaW50IHRvIHRoZXNlLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgQml0QmFrZSBjaGVja3MgcHJlLW1pcnJvcnMgYmVmb3JlIGxvb2tpbmcgdXBzdHJlYW0gZm9yIGFueQorICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBQcmUtbWlycm9ycyBhcmUgYXBwcm9wcmlhdGUgd2hlbiB5b3UgaGF2ZSBhIHNoYXJlZCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBhIGRpcmVjdG9yeSBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBBIFByZS1taXJyb3IgdHlwaWNhbGx5IHBvaW50cyB0byBhIHNoYXJlZCBkaXJlY3RvcnkgdGhhdCBpcworICAgICAgICAgICAgICAgIGxvY2FsIHRvIHlvdXIgb3JnYW5pemF0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBSZWd1bGFyIG1pcnJvcnMgY2FuIGJlIGFueSBzaXRlIGFjcm9zcyB0aGUgSW50ZXJuZXQgdGhhdCBpcworICAgICAgICAgICAgICAgIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgbG9jYXRpb24gZm9yIHNvdXJjZSBjb2RlIHNob3VsZCB0aGUKKyAgICAgICAgICAgICAgICBwcmltYXJ5IHNpdGUgbm90IGJlIGZ1bmN0aW9uaW5nIGZvciBzb21lIHJlYXNvbiBvciBhbm90aGVyLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InBhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Ij4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2UgRmVlZHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgYW4gaW1hZ2Ugb3IgYW4gU0RLLAorICAgICAgICAgICAgaXQgZ2V0cyB0aGUgcGFja2FnZXMgZnJvbSBhIHBhY2thZ2UgZmVlZCBhcmVhIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPgorICAgICAgICAgICAgc2hvd3MgdGhpcyBwYWNrYWdlIGZlZWRzIGFyZWEgaW4gdGhlIHVwcGVyLXJpZ2h0IGNvcm5lci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxvb2tzIGEgbGl0dGxlIGNsb3NlciBpbnRvIHRoZSBwYWNrYWdlIGZlZWRzIGFyZWEgdXNlZAorICAgICAgICAgICAgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIEhlcmUgaXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgYXQgdGhlIGFyZWE6CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFBhY2thZ2UgZmVlZHMgYXJlIGFuIGludGVybWVkaWFyeSBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMgY2xhc3NlcyB0byBnZW5lcmF0ZQorICAgICAgICAgICAgZGlmZmVyZW50IHBhY2thZ2UgdHlwZXMsIGFuZCB5b3Ugc3BlY2lmeSB3aGljaCBjbGFzc2VzIHRvIGVuYWJsZQorICAgICAgICAgICAgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgQmVmb3JlIHBsYWNpbmcgdGhlIHBhY2thZ2VzIGludG8gcGFja2FnZSBmZWVkcywKKyAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIHZhbGlkYXRlcyB0aGVtIHdpdGggZ2VuZXJhdGVkIG91dHB1dCBxdWFsaXR5CisgICAgICAgICAgICBhc3N1cmFuY2UgY2hlY2tzIHRocm91Z2ggdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcGFja2FnZSBmZWVkIGFyZWEgcmVzaWRlcyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8gdGVtcG9yYXJpbHkgc3RvcmUgcGFja2FnZXMKKyAgICAgICAgICAgIGlzIGRldGVybWluZWQgYnkgYSBjb21iaW5hdGlvbiBvZiB2YXJpYWJsZXMgYW5kIHRoZSBwYXJ0aWN1bGFyCisgICAgICAgICAgICBwYWNrYWdlIG1hbmFnZXIgaW4gdXNlLgorICAgICAgICAgICAgU2VlIHRoZSAiUGFja2FnZSBGZWVkcyIgYm94IGluIHRoZSBpbGx1c3RyYXRpb24gYW5kIG5vdGUgdGhlCisgICAgICAgICAgICBpbmZvcm1hdGlvbiB0byB0aGUgcmlnaHQgb2YgdGhhdCBhcmVhLgorICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBkZWZpbmVzIHdoZXJlIHBhY2thZ2UgZmlsZXMgYXJlCisgICAgICAgICAgICBrZXB0OgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVkIGFzIDxmaWxlbmFtZT50bXAvZGVwbG95PC9maWxlbmFtZT4gaW4gdGhlIEJ1aWxkCisgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ERVBMT1lfRElSXyo8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCwgdGhlIHBhY2thZ2UgdHlwZQorICAgICAgICAgICAgICAgICAgICBzdWItZm9sZGVyLgorICAgICAgICAgICAgICAgICAgICBHaXZlbiBSUE0sIElQSywgb3IgREVCIHBhY2thZ2luZyBhbmQgdGFyYmFsbCBjcmVhdGlvbiwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1JQTSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfUlBNPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JUEsnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lQSzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1RBUic+PGZpbGVuYW1lPkRFUExPWV9ESVJfVEFSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgYXJlIHVzZWQsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHN1Yi1mb2xkZXJzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcGFja2FnZXMgY291bGQgZXhpc3QgZm9yIHRoZSBpNTg2IG9yIHFlbXV4ODYKKyAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4gdGFza3MgdG8KKyAgICAgICAgICAgIGdlbmVyYXRlIHBhY2thZ2VzIGFuZCBwbGFjZSB0aGVtIGludG8gdGhlIHBhY2thZ2UgaG9sZGluZyBhcmVhIChlLmcuCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPiBmb3IgSVBLIHBhY2thZ2VzKS4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2RlYjwvZmlsZW5hbWU+PC9saW5rPiIsCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfaXBrJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvbGluaz4iLAorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3JwbSc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfcnBtPC9maWxlbmFtZT48L2xpbms+IiwKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3Rhcic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfdGFyPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgc2VjdGlvbnMgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciBhIHNjZW5hcmlvIHdoZXJlIGFuIElQSyBwYWNrYWdpbmcgbWFuYWdlcgorICAgICAgICAgICAgaXMgYmVpbmcgdXNlZCBhbmQgcGFja2FnZSBhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IgYm90aCBpNTg2CisgICAgICAgICAgICBhbmQgcWVtdXg4NiBleGlzdC4KKyAgICAgICAgICAgIFBhY2thZ2VzIGZvciB0aGUgaTU4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL2k1ODY8L2ZpbGVuYW1lPiwgd2hpbGUgcGFja2FnZXMgZm9yCisgICAgICAgICAgICB0aGUgcWVtdXg4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgorICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL3FlbXV4ODY8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgIDx0aXRsZT5CaXRCYWtlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4KKyAgICAgICAgICAgIHRvIHByb2R1Y2UgaW1hZ2VzLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgZnJvbSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPiwKKyAgICAgICAgICAgIHRoZSBCaXRCYWtlIGFyZWEgY29uc2lzdHMgb2Ygc2V2ZXJhbCBmdW5jdGlvbmFsIGFyZWFzLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgZWFjaCBvZiB0aG9zZSBhcmVhcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU2VwYXJhdGUgZG9jdW1lbnRhdGlvbiBleGlzdHMgZm9yIHRoZSBCaXRCYWtlIHRvb2wuCisgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgZm9yIHJlZmVyZW5jZSBtYXRlcmlhbCBvbiBCaXRCYWtlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3NvdXJjZS1mZXRjaGluZy1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBGZXRjaGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBzdGFnZXMgb2YgYnVpbGRpbmcgYSByZWNpcGUgYXJlIHRvIGZldGNoIGFuZCB1bnBhY2sKKyAgICAgICAgICAgICAgICB0aGUgc291cmNlIGNvZGU6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2LjVpbiIgZGVwdGg9IjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtdW5wYWNrJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFza3MgZmV0Y2ggdGhlIHNvdXJjZSBmaWxlcyBhbmQgdW5wYWNrIHRoZW0gaW50byB0aGUgd29yaworICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV2ZXJ5IGxvY2FsIGZpbGUgKGUuZy4gPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBwYXJ0IG9mIGEgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGFrZXMgYSBjaGVja3N1bQorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZmlsZSBmb3IgdGhlIHJlY2lwZSBhbmQgaW5zZXJ0cyB0aGUgY2hlY2tzdW0gaW50bworICAgICAgICAgICAgICAgICAgICB0aGUgc2lnbmF0dXJlIGZvciB0aGUgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIGFueSBsb2NhbCBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4gdGFzayBhbmQgYWxsIHRhc2tzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGFyZSByZS1leGVjdXRlZC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgZXZlcnl0aGluZyBpcyBhY2NvbXBsaXNoZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAorICAgICAgICAgICAgICAgIHdoaWNoIGhhcyBhIGRlZmluZWQgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIEJ1aWxkIERpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLWJ1aWxkJz48ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVucGFja2VkIHNvdXJjZSBmaWxlcyBhcmUgcG9pbnRlZCB0byBieSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIGFuIGFyZWEgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICB1bnBhY2tlZCBzb3VyY2UgY29kZSByZXNpZGVzLgorICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoYXQgZGlyZWN0b3J5IGZvciBhbnkgZ2l2ZW4gcmVjaXBlIGlzIGRlZmluZWQgZnJvbQorICAgICAgICAgICAgICAgIHNldmVyYWwgZGlmZmVyZW50IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgdmFyaWFibGVzIHRoYXQgZGVmaW5lIHRoZXNlIGRpcmVjdG9yaWVzCisgICAgICAgICAgICAgICAgYnkgbG9va2luZyBhdCB0aGUgZmlndXJlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGRpcmVjdG9yeSB3aGVyZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybXMgYWxsIGl0cyB3b3JrIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbHQgcGFja2FnZSBvciBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9PUyc+PGZpbGVuYW1lPlRBUkdFVF9PUzwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3BlcmF0aW5nIHN5c3RlbSBvZiB0aGUgdGFyZ2V0IGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGJ1aWx0IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz4gLQorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiB3aXRoaW4gPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIHBhY2thZ2UgaXMgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgICAgICAgICBDb250YWlucyB0aGUgdW5wYWNrZWQgc291cmNlIGZpbGVzIGZvciBhIGdpdmVuIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3BhdGNoaW5nLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICA8dGl0bGU+UGF0Y2hpbmc8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmNlIHNvdXJjZSBjb2RlIGlzIGZldGNoZWQgYW5kIHVucGFja2VkLCBCaXRCYWtlIGxvY2F0ZXMKKyAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBzb3VyY2UgZmlsZXM6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3BhdGNoaW5nLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIHByb2Nlc3NlcyByZWNpcGVzIGJ5CisgICAgICAgICAgICAgICAgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbG9jYXRlIGFwcGxpY2FibGUgcGF0Y2ggZmlsZXMsIHdoaWNoIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgICAgICBhcmUgPGZpbGVuYW1lPioucGF0Y2g8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmRpZmY8L2ZpbGVuYW1lPiBmaWxlcywgb3IgYW55IGZpbGUgaWYKKyAgICAgICAgICAgICAgICAiYXBwbHk9eWVzIiBpcyBzcGVjaWZpZWQgZm9yIHRoZSBmaWxlIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSBmaW5kcyBhbmQgYXBwbGllcyBtdWx0aXBsZSBwYXRjaGVzIGZvciBhIHNpbmdsZSByZWNpcGUKKyAgICAgICAgICAgICAgICBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggaXQgZmluZHMgdGhlIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgUGF0Y2hlcyBhcmUgYXBwbGllZCB0byB0aGUgcmVjaXBlJ3Mgc291cmNlIGZpbGVzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoZSBzb3VyY2UgZGlyZWN0b3JpZXMgYXJlCisgICAgICAgICAgICAgICAgY3JlYXRlZCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzb3VyY2UtZmV0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5Tb3VyY2UgRmV0Y2hpbmc8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJhdGlvbi1hbmQtY29tcGlsYXRpb24tZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uIGFuZCBDb21waWxhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIHBhdGNoZWQsIEJpdEJha2UgZXhlY3V0ZXMgdGFza3MgdGhhdAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBhbmQgY29tcGlsZSB0aGUgc291cmNlIGNvZGU6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzIGNvbnNpc3RzIG9mIHRocmVlIHRhc2tzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBzZXRzIHVwIHRoZSB0d28gc3lzcm9vdHMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnJlY2lwZS1zeXNyb290PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT4pIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzeXNyb290cyBjb250YWluIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFza3Mgb2YgdGhlIHJlY2lwZXMgb24gd2hpY2ggdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZyB0aGUgdGFza3MgZGVwZW5kcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgc3lzcm9vdCBleGlzdHMgZm9yIGJvdGggdGhlIHRhcmdldCBhbmQgZm9yIHRoZSBuYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyaWVzLCB3aGljaCBydW4gb24gdGhlIGhvc3Qgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29uZmlndXJlcyB0aGUgc291cmNlIGJ5IGVuYWJsaW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsaW5nIGFueSBidWlsZC10aW1lIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc29mdHdhcmUgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyBjYW4gY29tZSBmcm9tIHRoZSByZWNpcGUgaXRzZWxmIGFzIHdlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGZyb20gYW4gaW5oZXJpdGVkIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgc29mdHdhcmUgaXRzZWxmIG1pZ2h0IGNvbmZpZ3VyZSBpdHNlbGYKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGZvciB3aGljaCBpdCBpcyBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGNvbmZpZ3VyYXRpb25zIGhhbmRsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrIGFyZSBzcGVjaWZpYworICAgICAgICAgICAgICAgICAgICAgICAgdG8gc291cmNlIGNvZGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNvdXJjZSBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBidWlsdCBieSB0aGUgcmVjaXBlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWF1dG90b29scyc+PGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGFkZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBieSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRUNPTkYnPjxmaWxlbmFtZT5FWFRSQV9PRUNPTkY8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJR19DT05GQVJHUyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdGhpcyB2YXJpYWJsZSB3b3JrcyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2xhc3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSBhIGNvbmZpZ3VyYXRpb24gdGFzayBoYXMgYmVlbiBzYXRpc2ZpZWQsIEJpdEJha2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVzIHRoZSBzb3VyY2UgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBDb21waWxhdGlvbiBvY2N1cnMgaW4gdGhlIGRpcmVjdG9yeSBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCB0aGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMsIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LCB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgY29tcGlsYXRpb24gaXMgZG9uZSwgQml0QmFrZSBleGVjdXRlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb3BpZXMgZmlsZXMgZnJvbSB0aGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBwbGFjZXMgdGhlbSBpbiBhIGhvbGRpbmcgYXJlYSBwb2ludGVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncGFja2FnZS1zcGxpdHRpbmctZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgIDx0aXRsZT5QYWNrYWdlIFNwbGl0dGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIGNvbmZpZ3VyZWQgYW5kIGNvbXBpbGVkLCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuYWx5emVzCisgICAgICAgICAgICAgICAgdGhlIHJlc3VsdHMgYW5kIHNwbGl0cyB0aGUgb3V0cHV0IGludG8gcGFja2FnZXM6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI3aW4iIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlZGF0YSc+PGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFza3MgY29tYmluZSB0byBhbmFseXplCisgICAgICAgICAgICAgICAgdGhlIGZpbGVzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC9saW5rPiBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBhbmQgc3BsaXQgdGhlbSBpbnRvIHN1YnNldHMgYmFzZWQgb24gYXZhaWxhYmxlIHBhY2thZ2VzIGFuZAorICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgIFRoZSBhbmFseXppbmcgcHJvY2VzcyBpbnZvbHZlcyB0aGUgZm9sbG93aW5nIGFzIHdlbGwgYXMgb3RoZXIKKyAgICAgICAgICAgICAgICBpdGVtczogc3BsaXR0aW5nIG91dCBkZWJ1Z2dpbmcgc3ltYm9scywKKyAgICAgICAgICAgICAgICBsb29raW5nIGF0IHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBiZXR3ZWVuIHBhY2thZ2VzLAorICAgICAgICAgICAgICAgIGFuZCBsb29raW5nIGF0IHBhY2thZ2UgcmVsYXRpb25zaGlwcy4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT4gdGFzayBjcmVhdGVzIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBtZXRhZGF0YSBiYXNlZCBvbiB0aGUgYW5hbHlzaXMgc3VjaCB0aGF0IHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIGdlbmVyYXRlIHRoZSBmaW5hbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICBXb3JraW5nLCBzdGFnZWQsIGFuZCBpbnRlcm1lZGlhdGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMKKyAgICAgICAgICAgICAgICBhbmQgcGFja2FnZSBzcGxpdHRpbmcgcHJvY2VzcyB1c2UgdGhlc2UgYXJlYXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dEJz48ZmlsZW5hbWU+UEtHRDwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGZvciBwYWNrYWdlcyBiZWZvcmUgdGhleSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgICAgICAgICBBIHNoYXJlZCwgZ2xvYmFsLXN0YXRlIGRpcmVjdG9yeSB0aGF0IGhvbGRzIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBkdXJpbmcgdGhlIHBhY2thZ2luZyBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHREVTVFdPUksnPjxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+PC9saW5rPiAtCisgICAgICAgICAgICAgICAgICAgICAgICBBIHRlbXBvcmFyeSB3b3JrIGFyZWEgdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBLR0RFU1QnPjxmaWxlbmFtZT5QS0dERVNUPC9maWxlbmFtZT48L2xpbms+IC0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXJlbnQgZGlyZWN0b3J5IGZvciBwYWNrYWdlcyBhZnRlciB0aGV5IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gc3BsaXQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZWZpbmVzIHRoZSBmaWxlcyB0aGF0IGdvIGludG8gZWFjaCBwYWNrYWdlIGluCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgZGV0YWlscyBvbiBob3cgdGhpcyBpcyBhY2NvbXBsaXNoZWQsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICBsb29rIGF0IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2UnPjxmaWxlbmFtZT5wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBwYWNrYWdlcyBiZWluZyBjcmVhdGVkIChSUE0sIERFQiwgb3IKKyAgICAgICAgICAgICAgICBJUEspLCB0aGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHRhc2sKKyAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBhY3R1YWwgcGFja2FnZXMgYW5kIHBsYWNlcyB0aGVtIGluIHRoZQorICAgICAgICAgICAgICAgIFBhY2thZ2UgRmVlZCBhcmVhLCB3aGljaCBpcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1RNUERJUn0vZGVwbG95PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRldGFpbCBvbiB0aGF0IHBhcnQgb2YgdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIGNyZWF0aW5nIGZlZWRzIGRpcmVjdGx5IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGRvZXMgbm90IGV4aXN0LgorICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBzdWNoIGZlZWRzIHVzdWFsbHkgcmVxdWlyZXMgc29tZSBraW5kIG9mIGZlZWQKKyAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgbWVjaGFuaXNtIHRoYXQgd291bGQgdXBsb2FkIHRoZSBuZXcgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgaW50byBhbiBvZmZpY2lhbCBwYWNrYWdlIGZlZWQgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgICAgIMOFbmdzdHLDtm0gZGlzdHJpYnV0aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGhpZ2hseSBkaXN0cmlidXRpb24tc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRodXMgaXMgbm90IHByb3ZpZGVkIG91dCBvZiB0aGUgYm94LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICA8dGl0bGU+SW1hZ2UgR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgcGFja2FnZXMgYXJlIHNwbGl0IGFuZCBzdG9yZWQgaW4gdGhlIFBhY2thZ2UgRmVlZHMgYXJlYSwKKyAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIEJpdEJha2UgdG8gZ2VuZXJhdGUgdGhlCisgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGltYWdlOgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGltYWdlIGdlbmVyYXRpb24gcHJvY2VzcyBjb25zaXN0cyBvZiBzZXZlcmFsIHN0YWdlcyBhbmQKKyAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHNldmVyYWwgdGFza3MgYW5kIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFzayBjcmVhdGVzIHRoZSByb290IGZpbGVzeXN0ZW0gKGZpbGUgYW5kIGRpcmVjdG9yeSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgZm9yIGFuIGltYWdlLgorICAgICAgICAgICAgICAgIFRoaXMgdGFzayB1c2VzIHNldmVyYWwga2V5IHZhcmlhYmxlcyB0byBoZWxwIGNyZWF0ZSB0aGUgbGlzdAorICAgICAgICAgICAgICAgIG9mIHBhY2thZ2VzIHRvIGFjdHVhbGx5IGluc3RhbGw6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIG91dCB0aGUgYmFzZSBzZXQgb2YgcGFja2FnZXMgdG8gaW5zdGFsbCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgUGFja2FnZSBGZWVkcyBhcmVhLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRVhDTFVERSc+PGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERTwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBwYWNrYWdlcyB0aGF0IHNob3VsZCBub3QgYmUgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBmZWF0dXJlcyB0byBpbmNsdWRlIGluIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgZmVhdHVyZXMgbWFwIHRvIGFkZGl0aW9uYWwgcGFja2FnZXMgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYWNrYWdlIGJhY2tlbmQgdG8gdXNlIGFuZCBjb25zZXF1ZW50bHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBzIGRldGVybWluZSB3aGVyZSB0byBsb2NhdGUgcGFja2FnZXMgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSBGZWVkcyBhcmVhLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0xJTkdVQVMnPjxmaWxlbmFtZT5JTUFHRV9MSU5HVUFTPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyB0aGUgbGFuZ3VhZ2UocykgZm9yIHdoaWNoIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlIHN1cHBvcnQgcGFja2FnZXMgYXJlIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBsaXN0IG9mIHBhY2thZ2VzIHBhc3NlZCB0byB0aGUgcGFja2FnZSBtYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uIGludG8gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdpdGgKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUk9PVEZTJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlc3lzdGVtIHVuZGVyIGNvbnN0cnVjdGlvbiBhbmQKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+IHZhcmlhYmxlIHByb3ZpZGluZyB0aGUKKyAgICAgICAgICAgICAgICBmaW5hbCBsaXN0IG9mIHBhY2thZ2VzIHRvIGluc3RhbGwsIHRoZSByb290IGZpbGUgc3lzdGVtIGlzCisgICAgICAgICAgICAgICAgY3JlYXRlZC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUGFja2FnZSBpbnN0YWxsYXRpb24gaXMgdW5kZXIgY29udHJvbCBvZiB0aGUgcGFja2FnZSBtYW5hZ2VyCisgICAgICAgICAgICAgICAgKGUuZy4gZG5mL3JwbSwgb3BrZywgb3IgYXB0L2Rwa2cpIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvcgorICAgICAgICAgICAgICAgIG5vdCBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgZW5hYmxlZCBmb3IgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICBBdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzLCBpZiBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgbm90CisgICAgICAgICAgICAgICAgZW5hYmxlZCBmb3IgdGhlIHRhcmdldCwgdGhlIHBhY2thZ2UgbWFuYWdlcidzIGRhdGEgZmlsZXMKKyAgICAgICAgICAgICAgICBhcmUgZGVsZXRlZCBmcm9tIHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgQXMgcGFydCBvZiB0aGUgZmluYWwgc3RhZ2Ugb2YgcGFja2FnZSBpbnN0YWxsYXRpb24sIHBvc3RpbnN0YWxsCisgICAgICAgICAgICAgICAgc2NyaXB0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwYWNrYWdlcyBhcmUgcnVuLgorICAgICAgICAgICAgICAgIEFueSBzY3JpcHRzIHRoYXQgZmFpbCB0byBydW4KKyAgICAgICAgICAgICAgICBvbiB0aGUgYnVpbGQgaG9zdCBhcmUgcnVuIG9uIHRoZSB0YXJnZXQgd2hlbiB0aGUgdGFyZ2V0IHN5c3RlbQorICAgICAgICAgICAgICAgIGlzIGZpcnN0IGJvb3RlZC4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIGEKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLXJlYWQtb25seS1yb290LWZpbGVzeXN0ZW0nPnJlYWQtb25seSByb290IGZpbGVzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgICAgICBhbGwgdGhlIHBvc3QgaW5zdGFsbGF0aW9uIHNjcmlwdHMgbXVzdCBzdWNjZWVkIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICBwYWNrYWdlIGluc3RhbGxhdGlvbiBwaGFzZSBzaW5jZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzCisgICAgICAgICAgICAgICAgcmVhZC1vbmx5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RhZ2VzIG9mIHRoZSA8ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT4gdGFzaworICAgICAgICAgICAgICAgIGhhbmRsZSBwb3N0IHByb2Nlc3NpbmcuCisgICAgICAgICAgICAgICAgUG9zdCBwcm9jZXNzaW5nIGluY2x1ZGVzIGNyZWF0aW9uIG9mIGEgbWFuaWZlc3QgZmlsZSBhbmQKKyAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25zLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSAoPGZpbGVuYW1lPi5tYW5pZmVzdDwvZmlsZW5hbWU+KSByZXNpZGVzCisgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UuCisgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIG91dCwgbGluZS1ieS1saW5lLCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIFRoZSBtYW5pZmVzdCBmaWxlIGlzIHVzZWZ1bCBmb3IgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdGVzdGltYWdlKic+PGZpbGVuYW1lPnRlc3RpbWFnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGNsYXNzLCBmb3IgZXhhbXBsZSwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHJ1bgorICAgICAgICAgICAgICAgIHNwZWNpZmljIHRlc3RzLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfTUFOSUZFU1QnPjxmaWxlbmFtZT5JTUFHRV9NQU5JRkVTVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPcHRpbWl6aW5nIHByb2Nlc3NlcyBydW4gYWNyb3NzIHRoZSBpbWFnZSBpbmNsdWRlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cHJlbGluazwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgcG9zdC1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+Uk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+IHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBzaXplCisgICAgICAgICAgICAgICAgb2YgdGhlIGxpYnJhcmllcywgd2hpbGUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnByZWxpbms8L2ZpbGVuYW1lPiBwcm9jZXNzIG9wdGltaXplcyB0aGUgZHluYW1pYworICAgICAgICAgICAgICAgIGxpbmtpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcyB0byByZWR1Y2Ugc3RhcnQgdXAgdGltZSBvZgorICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBZnRlciB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzIGJ1aWx0LCBwcm9jZXNzaW5nIGJlZ2lucyBvbgorICAgICAgICAgICAgICAgIHRoZSBpbWFnZSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZSc+PGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHJ1bnMgYW55IHByZS1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzIGRlZmluZWQKKyAgICAgICAgICAgICAgICBieSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+SU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZQorICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsIGltYWdlIG91dHB1dAorICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkeW5hbWljYWxseSBjcmVhdGVzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyBhcyBuZWVkZWQsIGJhc2VkCisgICAgICAgICAgICAgICAgb24gdGhlIGltYWdlIHR5cGVzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyB0dXJucyBldmVyeXRoaW5nIGludG8gYW4gaW1hZ2UgZmlsZSBvciBhIHNldCBvZgorICAgICAgICAgICAgICAgIGltYWdlIGZpbGVzIGFuZCBjb21wcmVzc2VzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UgdG8gcmVkdWNlCisgICAgICAgICAgICAgICAgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgVGhlIGZvcm1hdHMgdXNlZCBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbSBkZXBlbmQgb24gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYSBkeW5hbWljYWxseSBjcmVhdGVkIHRhc2sgd2hlbiBjcmVhdGluZyBhCisgICAgICAgICAgICAgICAgcGFydGljdWxhciBpbWFnZSA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IHdvdWxkIHRha2UgdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIGZvcm06CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19pbWFnZV88cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+W2RlcGVuZHNdCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFNvLCBpZiB0aGUgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBhcyBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB3ZXJlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDQ8L2ZpbGVuYW1lPiwgdGhlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCB0YXNrCisgICAgICAgICAgICAgICAgd291bGQgYmUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2ltYWdlX2V4dDRbZGVwZW5kc10KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmaW5hbCB0YXNrIGludm9sdmVkIGluIGltYWdlIGNyZWF0aW9uIGlzIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZS1jb21wbGV0ZSc+PGZpbGVuYW1lPmRvX2ltYWdlX2NvbXBsZXRlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29tcGxldGVzIHRoZSBpbWFnZSBieSBhcHBseWluZyBhbnkgaW1hZ2UKKyAgICAgICAgICAgICAgICBwb3N0IHByb2Nlc3NpbmcgYXMgZGVmaW5lZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+SU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIG9uY2UgdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0CisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBlbnRpcmUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGlzIHJ1biB1bmRlciBQc2V1ZG8uCisgICAgICAgICAgICAgICAgUnVubmluZyB1bmRlciBQc2V1ZG8gZW5zdXJlcyB0aGF0IHRoZSBmaWxlcyBpbiB0aGUgcm9vdAorICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gaGF2ZSBjb3JyZWN0IG93bmVyc2hpcC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzZGstZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPlNESyBHZW5lcmF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBCaXRCYWtlIHRvIGdlbmVyYXRlIHRoZQorICAgICAgICAgICAgICAgIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBpbnN0YWxsZXIgc2NyaXB0IGZvciBib3RoIHRoZQorICAgICAgICAgICAgICAgIHN0YW5kYXJkIGFuZCBleHRlbnNpYmxlIFNES3M6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbgorICAgICAgICAgICAgICAgIGdlbmVyYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZHZhbnRhZ2VzIGdhaW5lZCB3aGVuIGJ1aWxkaW5nIGEKKyAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3Nkayc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHRhc2ssIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBtYW51YWwuCisgICAgICAgICAgICA8L25vdGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIExpa2UgaW1hZ2UgZ2VuZXJhdGlvbiwgdGhlIFNESyBzY3JpcHQgcHJvY2VzcyBjb25zaXN0cyBvZgorICAgICAgICAgICAgICAgIHNldmVyYWwgc3RhZ2VzIGFuZCBkZXBlbmRzIG9uIG1hbnkgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiB0YXNrcyB1c2UgdGhlc2UKKyAgICAgICAgICAgICAgICBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvIGFjdHVhbGx5CisgICAgICAgICAgICAgICAgaW5zdGFsbC4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIHZhcmlhYmxlcyBsaXN0ZWQgaW4gdGhlIGZpZ3VyZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gdGFzayBoZWxwcyBjcmVhdGUKKyAgICAgICAgICAgICAgICB0aGUgc3RhbmRhcmQgU0RLIGFuZCBoYW5kbGVzIHR3byBwYXJ0czogYSB0YXJnZXQgcGFydCBhbmQgYQorICAgICAgICAgICAgICAgIGhvc3QgcGFydC4KKyAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IHBhcnQgaXMgdGhlIHBhcnQgYnVpbHQgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgYW5kCisgICAgICAgICAgICAgICAgaW5jbHVkZXMgbGlicmFyaWVzIGFuZCBoZWFkZXJzLgorICAgICAgICAgICAgICAgIFRoZSBob3N0IHBhcnQgaXMgdGhlIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiB0YXNrIGhlbHBzIGNyZWF0ZQorICAgICAgICAgICAgICAgIHRoZSBleHRlbnNpYmxlIFNESyBhbmQgaGFuZGxlcyBob3N0IGFuZCB0YXJnZXQgcGFydHMKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSB0aGFuIGl0cyBjb3VudGVyIHBhcnQgZG9lcyBmb3IgdGhlIHN0YW5kYXJkIFNESy4KKyAgICAgICAgICAgICAgICBGb3IgdGhlIGV4dGVuc2libGUgU0RLLCB0aGUgdGFzayBlbmNhcHN1bGF0ZXMgdGhlIGJ1aWxkIHN5c3RlbSwKKyAgICAgICAgICAgICAgICB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCAoaG9zdCBhbmQgdGFyZ2V0KSBmb3IgdGhlIFNESy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBTREsgYmVpbmcgY29uc3RydWN0ZWQsIHRoZQorICAgICAgICAgICAgICAgIHRhc2tzIHBlcmZvcm0gc29tZSBjbGVhbnVwIGFmdGVyIHdoaWNoIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYW5kIGFueSBuZWVkZWQgY29uZmlndXJhdGlvbiBmaWxlcworICAgICAgICAgICAgICAgIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBvdXRwdXQgaXMgdGhlIENyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgdG9vbGNoYWluIGluc3RhbGxhdGlvbiBzY3JpcHQgKDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlKSwKKyAgICAgICAgICAgICAgICB3aGljaCBpbmNsdWRlcyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz4KKyAgICAgICAgICAgIDx0aXRsZT5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBlYWNoIHRhc2sgdGhhdCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCBCaXRCYWtlIHdyaXRlcyBhCisgICAgICAgICAgICAgICAgc3RhbXAgZmlsZSBpbnRvIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUFNfRElSJz48ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBUaGUgYmVnaW5uaW5nIG9mIHRoZSBzdGFtcCBmaWxlJ3MgZmlsZW5hbWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBhbmQgdGhlIGVuZCBvZiB0aGUgbmFtZSBjb25zaXN0cyBvZiB0aGUgdGFzaydzIG5hbWUKKyAgICAgICAgICAgICAgICBhbmQgY3VycmVudAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjY2hlY2tzdW1zJz5pbnB1dCBjaGVja3N1bTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG5hbWluZyBzY2hlbWUgYXNzdW1lcyB0aGF0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX1NJR05BVFVSRV9IQU5ETEVSJz48ZmlsZW5hbWU+QkJfU0lHTkFUVVJFX0hBTkRMRVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGlzICJPRUJhc2ljSGFzaCIsIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIGNhc2UgaW4KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudCBPcGVuRW1iZWRkZWQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFRvIGRldGVybWluZSBpZiBhIHRhc2sgbmVlZHMgdG8gYmUgcmVydW4sIEJpdEJha2UgY2hlY2tzIGlmIGEKKyAgICAgICAgICAgICAgICBzdGFtcCBmaWxlIHdpdGggYSBtYXRjaGluZyBpbnB1dCBjaGVja3N1bSBleGlzdHMgZm9yIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBzdGFtcCBmaWxlIGV4aXN0cywgdGhlIHRhc2sncyBvdXRwdXQgaXMgYXNzdW1lZCB0bworICAgICAgICAgICAgICAgIGV4aXN0IGFuZCBzdGlsbCBiZSB2YWxpZC4KKyAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlIHRhc2sgaXMgcmVydW4uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBzdGFtcCBtZWNoYW5pc20gaXMgbW9yZSBnZW5lcmFsIHRoYW4gdGhlIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICBzdGF0ZSAoc3N0YXRlKSBjYWNoZSBtZWNoYW5pc20gZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2V0c2NlbmUtdGFza3MtYW5kLXNoYXJlZC1zdGF0ZSc+U2V0c2NlbmUgVGFza3MgYW5kIFNoYXJlZCBTdGF0ZTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYXZvaWRzIHJlcnVubmluZyBhbnkgdGFzayB0aGF0IGhhcyBhIHZhbGlkCisgICAgICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUsIG5vdCBqdXN0IHRhc2tzIHRoYXQgY2FuIGJlIGFjY2VsZXJhdGVkIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNzdGF0ZSBjYWNoZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhvd2V2ZXIsIHlvdSBzaG91bGQgcmVhbGl6ZSB0aGF0IHN0YW1wIGZpbGVzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgc2VydmUgYXMgYSBtYXJrZXIgdGhhdCBzb21lIHdvcmsgaGFzIGJlZW4gZG9uZSBhbmQgdGhhdAorICAgICAgICAgICAgICAgICAgICB0aGVzZSBmaWxlcyBkbyBub3QgcmVjb3JkIHRhc2sgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIHRhc2sgb3V0cHV0IHdvdWxkIHVzdWFsbHkgYmUgc29tZXdoZXJlIGluCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gaW4gc29tZSByZWNpcGUncworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uKQorICAgICAgICAgICAgICAgICAgICBXaGF0IHRoZSBzc3RhdGUgY2FjaGUgbWVjaGFuaXNtIGFkZHMgaXMgYSB3YXkgdG8gY2FjaGUgdGFzaworICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdGhhdCBjYW4gdGhlbiBiZSBzaGFyZWQgYmV0d2VlbiBidWlsZCBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBTaW5jZSA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+IGlzIHVzdWFsbHkgYSBzdWJkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4sIHJlbW92aW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHdpbGwgYWxzbyByZW1vdmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+LCB3aGljaCBtZWFucyB0YXNrcyB3aWxsCisgICAgICAgICAgICAgICAgcHJvcGVybHkgYmUgcmVydW4gdG8gcmVwb3B1bGF0ZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHNvbWUgdGFzayB0byBhbHdheXMgYmUgY29uc2lkZXJlZCAib3V0IG9mIGRhdGUiLAorICAgICAgICAgICAgICAgIHlvdSBjYW4gbWFyayBpdCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPjxmaWxlbmFtZT5ub3N0YW1wPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmZsYWcuCisgICAgICAgICAgICAgICAgSWYgc29tZSBvdGhlciB0YXNrIGRlcGVuZHMgb24gc3VjaCBhIHRhc2ssIHRoZW4gdGhhdCB0YXNrIHdpbGwKKyAgICAgICAgICAgICAgICBhbHNvIGFsd2F5cyBiZSBjb25zaWRlcmVkIG91dCBvZiBkYXRlLCB3aGljaCBtaWdodCBub3QgYmUgd2hhdAorICAgICAgICAgICAgICAgIHlvdSB3YW50LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdmlldyBpbmZvcm1hdGlvbiBhYm91dCBhIHRhc2sncworICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzZXRzY2VuZS10YXNrcy1hbmQtc2hhcmVkLXN0YXRlJz4KKyAgICAgICAgICAgIDx0aXRsZT5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGRlc2NyaXB0aW9uIG9mIHRhc2tzIHNvIGZhciBhc3N1bWVzIHRoYXQgQml0QmFrZSBuZWVkcyB0bworICAgICAgICAgICAgICAgIGJ1aWxkIGV2ZXJ5dGhpbmcgYW5kIHRoZXJlIGFyZSBubyBwcmVidWlsdCBvYmplY3RzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgc3VwcG9ydCBza2lwcGluZyB0YXNrcyBpZiBwcmVidWlsdCBvYmplY3RzIGFyZQorICAgICAgICAgICAgICAgIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICBUaGVzZSBvYmplY3RzIGFyZSB1c3VhbGx5IG1hZGUgYXZhaWxhYmxlIGluIHRoZSBmb3JtIG9mIGEKKyAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgY2FjaGUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB2YXJpYWJsZXMgYWZmZWN0aW5nIHNzdGF0ZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBpZGVhIG9mIGEgc2V0c2NlbmUgdGFzayAoaS5lCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+X3NldHNjZW5lPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgaXMgYSB2ZXJzaW9uIG9mIHRoZSB0YXNrIHdoZXJlCisgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBidWlsZGluZyBzb21ldGhpbmcsIEJpdEJha2UgY2FuIHNraXAgdG8gdGhlIGVuZAorICAgICAgICAgICAgICAgIHJlc3VsdCBhbmQgc2ltcGx5IHBsYWNlIGEgc2V0IG9mIGZpbGVzIGludG8gc3BlY2lmaWMgbG9jYXRpb25zCisgICAgICAgICAgICAgICAgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIGl0IG1ha2VzIHNlbnNlIHRvIGhhdmUgYSBzZXRzY2VuZSB0YXNrIHZhcmlhbnQKKyAgICAgICAgICAgICAgICAoZS5nLiBnZW5lcmF0aW5nIHBhY2thZ2UgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHRhc2spLgorICAgICAgICAgICAgICAgIEluIG90aGVyIGNhc2VzLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlLCAoZS5nLiBhCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIG9yCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgIHRhc2spIHNpbmNlIHRoZSB3b3JrIGludm9sdmVkIHdvdWxkIGJlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbgorICAgICAgICAgICAgICAgIHRoZSB1bmRlcmx5aW5nIHRhc2suCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB0aGUgY29tbW9uIHRhc2tzIHRoYXQgaGF2ZQorICAgICAgICAgICAgICAgIHNldHNjZW5lIHZhcmlhbnRzIGFyZSA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IHRoZXNlIGFyZSBtb3N0IG9mIHRoZSB0YXNrcyB3aG9zZSBvdXRwdXQgaXMgYW4KKyAgICAgICAgICAgICAgICBlbmQgcmVzdWx0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMga25vd2xlZGdlIG9mIHRoZSByZWxhdGlvbnNoaXAKKyAgICAgICAgICAgICAgICBiZXR3ZWVuIHRoZXNlIHRhc2tzIGFuZCBvdGhlciB0YXNrcyB0aGF0IHByZWNlZGUgdGhlbS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgQml0QmFrZSBydW5zCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU8L2ZpbGVuYW1lPiBmb3IKKyAgICAgICAgICAgICAgICBzb21ldGhpbmcsIHRoZXJlIGlzIGxpdHRsZSBwb2ludCBpbiBydW5uaW5nIGFueSBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+IHRhc2tzLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gbmVlZHMgdG8gYmUgcnVuLAorICAgICAgICAgICAgICAgIEJpdEJha2Ugd291bGQgbmVlZCB0byBydW4gdGhvc2Ugb3RoZXIgdGFza3MuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEl0IGJlY29tZXMgbW9yZSBjb21wbGljYXRlZCBpZiBldmVyeXRoaW5nIGNhbiBjb21lIGZyb20gYW4KKyAgICAgICAgICAgICAgICBzc3RhdGUgY2FjaGUgYmVjYXVzZSBzb21lIG9iamVjdHMgYXJlIHNpbXBseSBub3QgcmVxdWlyZWQgYXQKKyAgICAgICAgICAgICAgICBhbGwuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBkbyBub3QgbmVlZCBhIGNvbXBpbGVyIG9yIG5hdGl2ZSB0b29scywgc3VjaAorICAgICAgICAgICAgICAgIGFzIHF1aWx0LCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGNvbXBpbGUgb3IgcGF0Y2guCisgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPiBwYWNrYWdlcyBhcmUKKyAgICAgICAgICAgICAgICBhdmFpbGFibGUgZnJvbSBzc3RhdGUsIEJpdEJha2UgZG9lcyBub3QgbmVlZCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgZGF0YS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gaGFuZGxlIGFsbCB0aGVzZSBjb21wbGV4aXRpZXMsIEJpdEJha2UgcnVucyBpbiB0d28gcGhhc2VzLgorICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBpcyB0aGUgInNldHNjZW5lIiBzdGFnZS4KKyAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBzdGFnZSwgQml0QmFrZSBmaXJzdCBjaGVja3MgdGhlIHNzdGF0ZSBjYWNoZSBmb3IKKyAgICAgICAgICAgICAgICBhbnkgdGFyZ2V0cyBpdCBpcyBwbGFubmluZyB0byBidWlsZC4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgYSBmYXN0IGNoZWNrIHRvIHNlZSBpZiB0aGUgb2JqZWN0IGV4aXN0cyByYXRoZXIKKyAgICAgICAgICAgICAgICB0aGFuIGEgY29tcGxldGUgZG93bmxvYWQuCisgICAgICAgICAgICAgICAgSWYgbm90aGluZyBleGlzdHMsIHRoZSBzZWNvbmQgcGhhc2UsIHdoaWNoIGlzIHRoZSBzZXRzY2VuZQorICAgICAgICAgICAgICAgIHN0YWdlLCBjb21wbGV0ZXMgYW5kIHRoZSBtYWluIGJ1aWxkIHByb2NlZWRzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiBvYmplY3RzIGFyZSBmb3VuZCBpbiB0aGUgc3N0YXRlIGNhY2hlLCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHdvcmtzIGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQgdGFyZ2V0cyBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICBieSB0aGUgdXNlci4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgYW4gaW1hZ2UgaXMgYmVpbmcgYnVpbHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICBzeXN0ZW0gZmlyc3QgbG9va3MgZm9yIHRoZSBwYWNrYWdlcyBuZWVkZWQgZm9yIHRoYXQgaW1hZ2UgYW5kCisgICAgICAgICAgICAgICAgdGhlIHRvb2xzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgSWYgdGhvc2UgYXJlIGF2YWlsYWJsZSwgdGhlIGNvbXBpbGVyIGlzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIGNvbXBpbGVyIGlzIG5vdCBldmVuIGRvd25sb2FkZWQuCisgICAgICAgICAgICAgICAgSWYgc29tZXRoaW5nIHdhcyBmb3VuZCB0byBiZSB1bmF2YWlsYWJsZSwgb3IgdGhlIGRvd25sb2FkIG9yCisgICAgICAgICAgICAgICAgc2V0c2NlbmUgdGFzayBmYWlscywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGhlbiB0cmllcworICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLCBzdWNoIGFzIHRoZSBjb21waWxlciwgZnJvbSB0aGUgY2FjaGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBhdmFpbGFiaWxpdHkgb2Ygb2JqZWN0cyBpbiB0aGUgc3N0YXRlIGNhY2hlIGlzIGhhbmRsZWQgYnkKKyAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX0hBU0hDSEVDS19GVU5DVElPTic+PGZpbGVuYW1lPkJCX0hBU0hDSEVDS19GVU5DVElPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGhlIG9iamVjdHMgdGhhdCBhcmUgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfU0VUU0NFTkVfREVQVkFMSUQnPjxmaWxlbmFtZT5CQl9TRVRTQ0VORV9ERVBWQUxJRDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbgorICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgZm9sbG93ZWQsIGFuZCB3aGV0aGVyIGZvciBhbnkgZ2l2ZW4KKyAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAgdGhlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHBhc3NlZC4KKyAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIFRydWUgb3IgRmFsc2UgdmFsdWUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0naW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgIDx0aXRsZT5JbWFnZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGltYWdlcyBwcm9kdWNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgYXJlIGNvbXByZXNzZWQgZm9ybXMgb2YgdGhlCisgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gdGhhdCBhcmUgcmVhZHkgdG8gYm9vdCBvbiBhIHRhcmdldCBkZXZpY2UuCisgICAgICAgICAgICBZb3UgY2FuIHNlZSBmcm9tIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICB0aGF0IEJpdEJha2Ugb3V0cHV0LCBpbiBwYXJ0LCBjb25zaXN0cyBvZiBpbWFnZXMuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gaXMgZ29pbmcgdG8gbG9vayBtb3JlIGNsb3NlbHkgYXQgdGhpcyBvdXRwdXQ6CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW1hZ2VzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjUuNWluIiBkZXB0aD0iNS41aW4iIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgZXhhbXBsZSBpbWFnZXMgdGhhdCB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcywKKyAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IiBjaGFwdGVyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbWFnZXMgYXJlIHdyaXR0ZW4gb3V0IHRvIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICBpbnNpZGUgdGhlIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzwvZmlsZW5hbWU+CisgICAgICAgICAgICBmb2xkZXIgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZS4KKyAgICAgICAgICAgIFRoaXMgZm9sZGVyIGNvbnRhaW5zIGFueSBmaWxlcyBleHBlY3RlZCB0byBiZSBsb2FkZWQgb24gdGhlCisgICAgICAgICAgICB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKKyAgICAgICAgICAgIHdoaWxlIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfSU1BR0UnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lNQUdFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSBjb250YWluaW5nIGltYWdlcyBmb3IKKyAgICAgICAgICAgIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmtlcm5lbC1pbWFnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEEga2VybmVsIGJpbmFyeSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9JTUFHRVRZUEUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VUWVBFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgbmFtaW5nIHNjaGVtZSBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhhdCB2YXJpYWJsZSwgdGhlIGZpbGUgY291bGQgYmVnaW4gd2l0aAorICAgICAgICAgICAgICAgICAgICBhIHZhcmlldHkgb2YgbmFtaW5nIHN0cmluZ3MuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGltYWdlIGZpbGVzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5yb290LWZpbGVzeXN0ZW0taW1hZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBSb290IGZpbGVzeXN0ZW1zIGZvciB0aGUgdGFyZ2V0IGRldmljZSAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5leHQzPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPiouYnoyPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZXMpLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlCisgICAgICAgICAgICAgICAgICAgIHR5cGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIHJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmtlcm5lbC1tb2R1bGVzPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGFyYmFsbHMgdGhhdCBjb250YWluIGFsbCB0aGUgbW9kdWxlcyBidWlsdCBmb3IgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgS2VybmVsIG1vZHVsZSB0YXJiYWxscyBleGlzdCBmb3IgbGVnYWN5IHB1cnBvc2VzIGFuZAorICAgICAgICAgICAgICAgICAgICBjYW4gYmUgc3VwcHJlc3NlZCBieSBzZXR0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTU9EVUxFX1RBUkJBTExfREVQTE9ZJz48ZmlsZW5hbWU+TU9EVUxFX1RBUkJBTExfREVQTE9ZPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIwIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUga2VybmVsIG1vZHVsZSB0YXJiYWxscworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1hY2hpbmUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+Ym9vdGxvYWRlcnM8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBCb290bG9hZGVycyBzdXBwb3J0aW5nIHRoZSBpbWFnZSwgaWYgYXBwbGljYWJsZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGJvb3Rsb2FkZXJzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5zeW1saW5rczwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZm9sZGVyIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIGEgc3ltYm9saWMgbGluayB0aGF0IHBvaW50cyB0byB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBmaWxlCisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGxpbmtzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgc2NyaXB0cyB0aGF0CisgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gb2J0YWluIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBlYWNoIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2RrLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgIDx0aXRsZT5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz4sCisgICAgICAgICAgICB0aGUgb3V0cHV0IGxhYmVsZWQgIkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESyIgcmVwcmVzZW50cyBhbgorICAgICAgICAgICAgU0RLLgorICAgICAgICAgICAgVGhlIFNESyBnZW5lcmF0aW9uIHByb2Nlc3MgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UgYnVpbGQKKyAgICAgICAgICAgIGEgc3RhbmRhcmQgU0RLCisgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pCisgICAgICAgICAgICBvciBhbiBleHRlbnNpYmxlIFNESworICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5pbWFnZW5hbWU8L3JlcGxhY2VhYmxlPikuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gaXMgZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI5aW4iIGRlcHRoPSI3LjI1aW4iIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzcGVjaWZpYyBmb3JtIG9mIHRoaXMgb3V0cHV0IGlzIGEgc2VsZi1leHRyYWN0aW5nCisgICAgICAgICAgICBTREsgaW5zdGFsbGVyICg8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+KSB0aGF0LCB3aGVuIHJ1biwKKyAgICAgICAgICAgIGluc3RhbGxzIHRoZSBTREssIHdoaWNoIGNvbnNpc3RzIG9mIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIHRvb2xjaGFpbiwgYSBzZXQgb2YgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBhbmQgYW4gU0RLCisgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICBSdW5uaW5nIHRoaXMgaW5zdGFsbGVyIGVzc2VudGlhbGx5IHNldHMgdXAgeW91cgorICAgICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBZb3UgY2FuIHRoaW5rIG9mIHRoZSBjcm9zcy10b29sY2hhaW4gYXMgdGhlICJob3N0IgorICAgICAgICAgICAgcGFydCBiZWNhdXNlIGl0IHJ1bnMgb24gdGhlIFNESyBtYWNoaW5lLgorICAgICAgICAgICAgWW91IGNhbiB0aGluayBvZiB0aGUgbGlicmFyaWVzIGFuZCBoZWFkZXJzIGFzIHRoZSAidGFyZ2V0IgorICAgICAgICAgICAgcGFydCBiZWNhdXNlIHRoZXkgYXJlIGJ1aWx0IGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBhZGRlZCBzbyB0aGF0IHlvdSBjYW4gaW5pdGlhbGl6ZQorICAgICAgICAgICAgdGhlIGVudmlyb25tZW50IGJlZm9yZSB1c2luZyB0aGUgdG9vbHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIHNldCB1cCB0aGlzIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBtZXRob2RzIGluY2x1ZGUgZG93bmxvYWRpbmcgcHJlLWJ1aWx0IFNESyBpbnN0YWxsZXJzCisgICAgICAgICAgICAgICAgICAgIG9yIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHlvdXIgb3duIFNESyBpbnN0YWxsZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucworICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCBhIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L25vdGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSBidWlsdCwgdGhlIFNESyBpbnN0YWxsZXJzIGFyZSB3cml0dGVuIG91dCB0byB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvc2RrPC9maWxlbmFtZT4gZm9sZGVyIGluc2lkZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBTREssIHNldmVyYWwgdmFyaWFibGVzIGV4aXN0IHRoYXQgaGVscAorICAgICAgICAgICAgY29uZmlndXJlIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhbmRhcmQKKyAgICAgICAgICAgIFNESzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29scyBhcmUgcnVuIHRvCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBwYWNrYWdlcyBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtJTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPlNES0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUgZmVhdHVyZXMgdG8gaW5jbHVkZSBpbiB0aGUgInRhcmdldCIgcGFydAorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRPT0xDSEFJTl9IT1NUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fSE9TVF9UQVNLPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBMaXN0cyBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIGhvc3QKKyAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgU0RLIChpLmUuIHRoZSBwYXJ0IHRoYXQgcnVucyBvbgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGsgPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gY3JlYXRlIHRoZSBTREssIGEgc2V0IG9mIGRlZmF1bHQgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgYXBwbHkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWxsb3dzIHlvdSB0byBhZGQgbW9yZSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIExpc3RzIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgdGFyZ2V0IHBhcnQKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIFNESyAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCBoYXJkd2FyZSkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLUEFUSCc+PGZpbGVuYW1lPlNES1BBVEg8L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBwYXRoIG9mZmVyZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBUaGlzIG5leHQgbGlzdCwgc2hvd3MgdGhlIHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGggYW4gZXh0ZW5zaWJsZQorICAgICAgICAgICAgU0RLOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0VYVF9UWVBFJz48ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKKyAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGFsbCByZXF1aXJlZCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKKyAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19JTkNMVURFX1BLR0RBVEEnPjxmaWxlbmFtZT5TREtfSU5DTFVERV9QS0dEQVRBPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgcGFja2FnZWRhdGEgd2lsbCBiZSBpbmNsdWRlZCBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgZXh0ZW5zaWJsZSBTREsgZm9yIGFsbCByZWNpcGVzIGluIHRoZSAid29ybGQiIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfSU5DTFVERV9UT09MQ0hBSU4nPjxmaWxlbmFtZT5TREtfSU5DTFVERV9UT09MQ0hBSU48L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgdG9vbGNoYWluIHdpbGwgYmUgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUgZXh0ZW5zaWJsZSBTREsuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUJz48ZmlsZW5hbWU+U0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgdmFyaWFibGVzIGFsbG93ZWQgdGhyb3VnaCBmcm9tIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19MT0NBTF9DT05GX0JMQUNLTElTVCc+PGZpbGVuYW1lPlNES19MT0NBTF9DT05GX0JMQUNLTElTVDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0lOSEVSSVRfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0lOSEVSSVRfQkxBQ0tMSVNUPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgY2xhc3NlcyB0byByZW1vdmUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhbHVlIGdsb2JhbGx5IHdpdGhpbiB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwKaW5kZXggOTlkNWE1Mi4uZTI5YmY4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbApAQCAtMjAsOCArMjAsOCBAQAogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYXBwbHkgdGhlIGNvbW1hbmQgd2hlbiB1c2luZyB0aGUKICAgICAgICAgZXh0ZW5zaWJsZSBTREssIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1leHRlbnNpYmxlJz5Vc2luZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MKLSAgICAgICAgR3VpZGUuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogICAgIDwvcGFyYT4KIAogICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLWdldHRpbmctaGVscCc+CkBAIC0zNSw0NSArMzUsNTkgQEAKICAgICAgICAgICAgIHRoZSBjb21tYW5kczoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIC0taGVscAotICAgICB1c2FnZTogZGV2dG9vbCBbLS1iYXNlcGF0aCBCQVNFUEFUSF0gWy0tYmJwYXRoIEJCUEFUSF0gWy1kXSBbLXFdCi0gICAgICAgICAgICAgICAgICAgIFstLWNvbG9yIENPTE9SXSBbLWhdCi0gICAgICAgICAgICAgICAgICAgICZsdDtzdWJjb21tYW5kJmd0OyAuLi4KKyAgICAgdXNhZ2U6IGRldnRvb2wgYWRkIFstaF0gWy0tc2FtZS1kaXIgfCAtLW5vLXNhbWUtZGlyXSBbLS1mZXRjaCBVUkldCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1mZXRjaC1kZXZdIFstLXZlcnNpb24gVkVSU0lPTl0gWy0tbm8tZ2l0XQorICAgICAgICAgICAgICAgICAgICAgICAgWy0tc3JjcmV2IFNSQ1JFViB8IC0tYXV0b3Jldl0gWy0tc3JjYnJhbmNoIFNSQ0JSQU5DSF0KKyAgICAgICAgICAgICAgICAgICAgICAgIFstLWJpbmFyeV0gWy0tYWxzby1uYXRpdmVdIFstLXNyYy1zdWJkaXIgU1VCRElSXQorICAgICAgICAgICAgICAgICAgICAgICAgWy0tbWlycm9yc10gWy0tcHJvdmlkZXMgUFJPVklERVNdCisgICAgICAgICAgICAgICAgICAgICAgICBbcmVjaXBlbmFtZV0gW3NyY3RyZWVdIFtmZXRjaHVyaV0KIAotICAgICBPcGVuRW1iZWRkZWQgZGV2ZWxvcG1lbnQgdG9vbAorICAgICBBZGRzIGEgbmV3IHJlY2lwZSB0byB0aGUgd29ya3NwYWNlIHRvIGJ1aWxkIGEgc3BlY2lmaWVkIHNvdXJjZSB0cmVlLiBDYW4KKyAgICAgb3B0aW9uYWxseSBmZXRjaCBhIHJlbW90ZSBVUkkgYW5kIHVucGFjayBpdCB0byBjcmVhdGUgdGhlIHNvdXJjZSB0cmVlLgorCisgICAgIGFyZ3VtZW50czoKKyAgICAgICByZWNpcGVuYW1lICAgICAgICAgICAgTmFtZSBmb3IgbmV3IHJlY2lwZSB0byBhZGQgKGp1c3QgbmFtZSAtIG5vIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggb3IgZXh0ZW5zaW9uKS4gSWYgbm90IHNwZWNpZmllZCwgd2lsbCBhdHRlbXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGF1dG8tZGV0ZWN0IGl0LgorICAgICAgIHNyY3RyZWUgICAgICAgICAgICAgICBQYXRoIHRvIGV4dGVybmFsIHNvdXJjZSB0cmVlLiBJZiBub3Qgc3BlY2lmaWVkLCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3Bva3kvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkLgorICAgICAgIGZldGNodXJpICAgICAgICAgICAgICBGZXRjaCB0aGUgc3BlY2lmaWVkIFVSSSBhbmQgZXh0cmFjdCBpdCB0byBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSB0cmVlCiAKICAgICAgb3B0aW9uczoKLSAgICAgICAtLWJhc2VwYXRoIEJBU0VQQVRIICBCYXNlIGRpcmVjdG9yeSBvZiBTREsgLyBidWlsZCBkaXJlY3RvcnkKLSAgICAgICAtLWJicGF0aCBCQlBBVEggICAgICBFeHBsaWNpdGx5IHNwZWNpZnkgdGhlIEJCUEFUSCwgcmF0aGVyIHRoYW4gZ2V0dGluZyBpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIG1ldGFkYXRhCi0gICAgICAgLWQsIC0tZGVidWcgICAgICAgICAgRW5hYmxlIGRlYnVnIG91dHB1dAotICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgIFByaW50IG9ubHkgZXJyb3JzCi0gICAgICAgLS1jb2xvciBDT0xPUiAgICAgICAgQ29sb3JpemUgb3V0cHV0ICh3aGVyZSBDT0xPUiBpcyBhdXRvLCBhbHdheXMsIG5ldmVyKQotICAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKLQotICAgICBzdWJjb21tYW5kczoKLSAgICAgICBCZWdpbm5pbmcgd29yayBvbiBhIHJlY2lwZToKLSAgICAgICAgIGFkZCAgICAgICAgICAgICAgICAgIEFkZCBhIG5ldyByZWNpcGUKLSAgICAgICAgIG1vZGlmeSAgICAgICAgICAgICAgIE1vZGlmeSB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUKLSAgICAgICAgIHVwZ3JhZGUgICAgICAgICAgICAgIFVwZ3JhZGUgYW4gZXhpc3RpbmcgcmVjaXBlCi0gICAgICAgR2V0dGluZyBpbmZvcm1hdGlvbjoKLSAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgIFNob3cgd29ya3NwYWNlIHN0YXR1cwotICAgICAgICAgc2VhcmNoICAgICAgICAgICAgICAgU2VhcmNoIGF2YWlsYWJsZSByZWNpcGVzCi0gICAgICAgV29ya2luZyBvbiBhIHJlY2lwZSBpbiB0aGUgd29ya3NwYWNlOgotICAgICAgICAgZWRpdC1yZWNpcGUgICAgICAgICAgRWRpdCBhIHJlY2lwZSBmaWxlIGluIHlvdXIgd29ya3NwYWNlCi0gICAgICAgICBjb25maWd1cmUtaGVscCAgICAgICBHZXQgaGVscCBvbiBjb25maWd1cmUgc2NyaXB0IG9wdGlvbnMKLSAgICAgICAgIGJ1aWxkICAgICAgICAgICAgICAgIEJ1aWxkIGEgcmVjaXBlCi0gICAgICAgICB1cGRhdGUtcmVjaXBlICAgICAgICBBcHBseSBjaGFuZ2VzIGZyb20gZXh0ZXJuYWwgc291cmNlIHRyZWUgdG8gcmVjaXBlCi0gICAgICAgICByZXNldCAgICAgICAgICAgICAgICBSZW1vdmUgYSByZWNpcGUgZnJvbSB5b3VyIHdvcmtzcGFjZQotICAgICAgICAgZmluaXNoICAgICAgICAgICAgICAgRmluaXNoIHdvcmtpbmcgb24gYSByZWNpcGUgaW4geW91ciB3b3Jrc3BhY2UKLSAgICAgICBUZXN0aW5nIGNoYW5nZXMgb24gdGFyZ2V0OgotICAgICAgICAgZGVwbG95LXRhcmdldCAgICAgICAgRGVwbG95IHJlY2lwZSBvdXRwdXQgZmlsZXMgdG8gbGl2ZSB0YXJnZXQgbWFjaGluZQotICAgICAgICAgdW5kZXBsb3ktdGFyZ2V0ICAgICAgVW5kZXBsb3kgcmVjaXBlIG91dHB1dCBmaWxlcyBpbiBsaXZlIHRhcmdldCBtYWNoaW5lCi0gICAgICAgICBidWlsZC1pbWFnZSAgICAgICAgICBCdWlsZCBpbWFnZSBpbmNsdWRpbmcgd29ya3NwYWNlIHJlY2lwZSBwYWNrYWdlcwotICAgICAgIEFkdmFuY2VkOgotICAgICAgICAgY3JlYXRlLXdvcmtzcGFjZSAgICAgU2V0IHVwIHdvcmtzcGFjZSBpbiBhbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbgotICAgICAgICAgZXh0cmFjdCAgICAgICAgICAgICAgRXh0cmFjdCB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUKLSAgICAgICAgIHN5bmMgICAgICAgICAgICAgICAgIFN5bmNocm9uaXplIHRoZSBzb3VyY2UgdHJlZSBmb3IgYW4gZXhpc3RpbmcgcmVjaXBlCi0gICAgIFVzZSBkZXZ0b29sICZsdDtzdWJjb21tYW5kJmd0OyAtLWhlbHAgdG8gZ2V0IGhlbHAgb24gYSBzcGVjaWZpYyBjb21tYW5kCisgICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgICAtLXNhbWUtZGlyLCAtcyAgICAgICAgQnVpbGQgaW4gc2FtZSBkaXJlY3RvcnkgYXMgc291cmNlCisgICAgICAgLS1uby1zYW1lLWRpciAgICAgICAgIEZvcmNlIGJ1aWxkIGluIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5CisgICAgICAgLS1mZXRjaCBVUkksIC1mIFVSSSAgIEZldGNoIHRoZSBzcGVjaWZpZWQgVVJJIGFuZCBleHRyYWN0IGl0IHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIHRyZWUgKGRlcHJlY2F0ZWQgLSBwYXNzIGFzIHBvc2l0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgaW5zdGVhZCkKKyAgICAgICAtLWZldGNoLWRldiAgICAgICAgICAgRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMKKyAgICAgICAtLXZlcnNpb24gVkVSU0lPTiwgLVYgVkVSU0lPTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIHRvIHVzZSB3aXRoaW4gcmVjaXBlIChQVikKKyAgICAgICAtLW5vLWdpdCwgLWcgICAgICAgICAgSWYgZmV0Y2hpbmcgc291cmNlLCBkbyBub3Qgc2V0IHVwIHNvdXJjZSB0cmVlIGFzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0IHJlcG9zaXRvcnkKKyAgICAgICAtLXNyY3JldiBTUkNSRVYsIC1TIFNSQ1JFVgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgcmV2aXNpb24gdG8gZmV0Y2ggaWYgZmV0Y2hpbmcgZnJvbSBhbiBTQ00KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBnaXQgKGRlZmF1bHQgbGF0ZXN0KQorICAgICAgIC0tYXV0b3JldiwgLWEgICAgICAgICBXaGVuIGZldGNoaW5nIGZyb20gYSBnaXQgcmVwb3NpdG9yeSwgc2V0IFNSQ1JFViBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIHRvIGEgZmxvYXRpbmcgcmV2aXNpb24gaW5zdGVhZCBvZiBmaXhlZAorICAgICAgIC0tc3JjYnJhbmNoIFNSQ0JSQU5DSCwgLUIgU1JDQlJBTkNICisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGdpdCAoZGVmYXVsdCBtYXN0ZXIpCisgICAgICAgLS1iaW5hcnksIC1iICAgICAgICAgIFRyZWF0IHRoZSBzb3VyY2UgdHJlZSBhcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIHZlcmJhdGltIChubyBjb21waWxhdGlvbiwgc2FtZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlKS4gVXNlZnVsIHdpdGggYmluYXJ5IHBhY2thZ2VzIGUuZy4gUlBNcy4KKyAgICAgICAtLWFsc28tbmF0aXZlICAgICAgICAgQWxzbyBhZGQgbmF0aXZlIHZhcmlhbnQgKGkuZS4gc3VwcG9ydCBidWlsZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZm9yIHRoZSBidWlsZCBob3N0IGFzIHdlbGwgYXMgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lKQorICAgICAgIC0tc3JjLXN1YmRpciBTVUJESVIgICBTcGVjaWZ5IHN1YmRpcmVjdG9yeSB3aXRoaW4gc291cmNlIHRyZWUgdG8gdXNlCisgICAgICAgLS1taXJyb3JzICAgICAgICAgICAgIEVuYWJsZSBQUkVNSVJST1JTIGFuZCBNSVJST1JTIGZvciBzb3VyY2UgdHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaGluZyAoZGlzYWJsZSBieSBkZWZhdWx0KS4KKyAgICAgICAtLXByb3ZpZGVzIFBST1ZJREVTLCAtcCBQUk9WSURFUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5IGFuIGFsaWFzIGZvciB0aGUgaXRlbSBwcm92aWRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLiBFLmcuIHZpcnR1YWwvbGliZ2wKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgPC9wYXJhPgogCkBAIC0xOTQsOSArMjA4LDkgQEAKICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjcmVhdGVzIGFuZCBhZGRzIGEgbmV3IHJlY2lwZSBuYW1lZAogICAgICAgICAgICAgPGZpbGVuYW1lPmphY2tzb248L2ZpbGVuYW1lPiB0byBhIHdvcmtzcGFjZSBsYXllciB0aGUgdG9vbCBjcmVhdGVzLgogICAgICAgICAgICAgVGhlIHNvdXJjZSBjb2RlIGJ1aWx0IGJ5IHRoZSByZWNpcGVzIHJlc2lkZXMgaW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9zb3VyY2VzL2phY2tzb248L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3NvdXJjZXMvamFja3NvbjwvZmlsZW5hbWU+OgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgYWRkIGphY2tzb24gL2hvbWUvc2NvdHRyaWYvc291cmNlcy9qYWNrc29uCisgICAgICQgZGV2dG9vbCBhZGQgamFja3NvbiAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3NvdXJjZXMvamFja3NvbgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICA8L3BhcmE+CiAKQEAgLTIxNCwxOCArMjI4LDUyIEBACiAgICAgICAgICAgICBhcHBlbmQgZmlsZXMsIGFuZCBzb3VyY2UgZmlsZXMgaW50byB0aGUgZXhpc3Rpbmcgd29ya3NwYWNlIGxheWVyLgogICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGlzIGNyZWF0ZWQgdG8gcG9pbnQKICAgICAgICAgICAgIHRvIHRoZSBleHRlcm5hbCBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdXIgcmVjaXBlIGhhcyBydW50aW1lIGRlcGVuZGVuY2llcyBkZWZpbmVkLCB5b3UgbXVzdCBiZSBzdXJlCisgICAgICAgICAgICAgICAgdGhhdCB0aGVzZSBwYWNrYWdlcyBleGlzdCBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlIGJlZm9yZSBhdHRlbXB0aW5nCisgICAgICAgICAgICAgICAgdG8gcnVuIHlvdXIgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgSWYgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIGxpYnJhcmllcykgZG8gbm90IGV4aXN0IG9uIHRoZSB0YXJnZXQsCisgICAgICAgICAgICAgICAgeW91ciBhcHBsaWNhdGlvbiwgd2hlbiBydW4sIHdpbGwgZmFpbCB0byBmaW5kIHRob3NlIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZ0b29sLWRlcGxveWluZy15b3VyLXNvZnR3YXJlLW9uLXRoZS10YXJnZXQtbWFjaGluZSc+RGVwbG95aW5nIFlvdXIgU29mdHdhcmUgb24gdGhlIFRhcmdldCBNYWNoaW5lPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBJZiB5b3VyIHJlY2lwZSBoYXMgcnVudGltZSBkZXBlbmRlbmNpZXMgZGVmaW5lZCwgeW91IG11c3QgYmUgc3VyZQotICAgICAgICAgICAgdGhhdCB0aGVzZSBwYWNrYWdlcyBleGlzdCBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlIGJlZm9yZSBhdHRlbXB0aW5nCi0gICAgICAgICAgICB0byBydW4geW91ciBhcHBsaWNhdGlvbi4KLSAgICAgICAgICAgIElmIGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBsaWJyYXJpZXMpIGRvIG5vdCBleGlzdCBvbiB0aGUgdGFyZ2V0LAotICAgICAgICAgICAgeW91ciBhcHBsaWNhdGlvbiwgd2hlbiBydW4sIHdpbGwgZmFpbCB0byBmaW5kIHRob3NlIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2dG9vbC1kZXBsb3lpbmcteW91ci1zb2Z0d2FyZS1vbi10aGUtdGFyZ2V0LW1hY2hpbmUnPkRlcGxveWluZyBZb3VyIFNvZnR3YXJlIG9uIHRoZSBUYXJnZXQgTWFjaGluZTwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICA8L25vdGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gdXNlcyB0aGUgbGF0ZXN0CisgICAgICAgICAgICByZXZpc2lvbiAoaS5lLiBtYXN0ZXIpIHdoZW4gdW5wYWNraW5nIGZpbGVzIGZyb20gYSByZW1vdGUgVVJJLgorICAgICAgICAgICAgSW4gc29tZSBjYXNlcywgeW91IG1pZ2h0IHdhbnQgdG8gc3BlY2lmeSBhIHNvdXJjZSByZXZpc2lvbiBieQorICAgICAgICAgICAgYnJhbmNoLCB0YWcsIG9yIGNvbW1pdCBoYXNoLiBZb3UgY2FuIHNwZWNpZnkgdGhlc2Ugb3B0aW9ucyB3aGVuCisgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IGEgc291cmNlIGJyYW5jaCwgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zcmNicmFuY2g8L2ZpbGVuYW1lPiBvcHRpb246CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGFkZCAtLXNyY2JyYW5jaCAmRElTVFJPX05BTUVfTk9fQ0FQOyBqYWNrc29uIC9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vc291cmNlcy9qYWNrc29uCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHlvdSBhcmUgY2hlY2tpbmcgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAmRElTVFJPX05BTUVfTk9fQ0FQOyBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSBhIHNwZWNpZmljIHRhZyBvciBjb21taXQgaGFzaCwgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zcmNyZXY8L2ZpbGVuYW1lPiBvcHRpb246CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGFkZCAtLXNyY3JldiAmRElTVFJPX1JFTF9UQUc7IGphY2tzb24gL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9zb3VyY2VzL2phY2tzb24KKyAgICAgJCBkZXZ0b29sIGFkZCAtLXNyY3JldiA8cmVwbGFjZWFibGU+c29tZV9jb21taXRfaGFzaDwvcmVwbGFjZWFibGU+IC9ob21lLzxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4vc291cmNlcy9qYWNrc29uCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGVzIGNoZWNrIG91dCB0aGUgJkRJU1RST19SRUxfVEFHOyB0YWcKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBjb21taXQgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c29tZV9jb21taXRfaGFzaDwvcmVwbGFjZWFibGU+IGhhc2guCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgcHJlZmVyIHRvIHVzZSB0aGUgbGF0ZXN0IHJldmlzaW9uIGV2ZXJ5IHRpbWUgdGhlIHJlY2lwZSBpcworICAgICAgICAgICAgICAgIGJ1aWx0LCB1c2UgdGhlIG9wdGlvbnMgPGZpbGVuYW1lPi0tYXV0b3JldjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPi1hPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKICAgICA8c2VjdGlvbiBpZD0nZGV2dG9vbC1leHRyYWN0aW5nLXRoZS1zb3VyY2UtZm9yLWFuLWV4aXN0aW5nLXJlY2lwZSc+CkBAIC0yNzYsNyArMzI0LDcgQEAKICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gY29tbWFuZCB0byBiZWdpbgogICAgICAgICAgICAgbW9kaWZ5aW5nIHRoZSBzb3VyY2Ugb2YgYW4gZXhpc3RpbmcgcmVjaXBlLgogICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2RldnRvb2wtYWRkaW5nLWEtbmV3LXJlY2lwZS10by10aGUtd29ya3NwYWNlJz48ZmlsZW5hbWU+YWRkPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZGV2dG9vbC1hZGRpbmctYS1uZXctcmVjaXBlLXRvLXRoZS13b3Jrc3BhY2UnPjxmaWxlbmFtZT5hZGQ8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIGNvbW1hbmQgZXhjZXB0IHRoYXQgaXQgZG9lcyBub3QgcGh5c2ljYWxseSBjcmVhdGUgdGhlCiAgICAgICAgICAgICByZWNpcGUgaW4gdGhlIHdvcmtzcGFjZSBsYXllciBiZWNhdXNlIHRoZSByZWNpcGUgYWxyZWFkeQogICAgICAgICAgICAgZXhpc3RzIGluIGFuIGFub3RoZXIgbGF5ZXIuCkBAIC0zMzQsNyArMzgyLDcgQEAKICAgICAgICAgICAgIHRvIHRoZSBzb3VyY2UgZmlsZXMuCiAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGtub3cgeW91IGFyZSBnb2luZyB0byB3b3JrIG9uIHNvbWUKICAgICAgICAgICAgIGNvZGUsIHlvdSBjb3VsZCBmaXJzdCB1c2UgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXZ0b29sLW1vZGlmeWluZy1hLXJlY2lwZSc+PGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZGV2dG9vbC1tb2RpZnlpbmctYS1yZWNpcGUnPjxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgY29tbWFuZCB0byBleHRyYWN0IHRoZSBjb2RlIGFuZCBzZXQgdXAgdGhlIHdvcmtzcGFjZS4KICAgICAgICAgICAgIEFmdGVyIHdoaWNoLCB5b3UgY291bGQgbW9kaWZ5LCBjb21waWxlLCBhbmQgdGVzdCB0aGUgY29kZS4KICAgICAgICAgPC9wYXJhPgpAQCAtNTU2LDcgKzYwNCw3IEBACiAgICAgICAgICAgICByZW1vdmUgZGVwbG95ZWQgYnVpbGQgb3V0cHV0IGZyb20gdGhlIHRhcmdldCBtYWNoaW5lLgogICAgICAgICAgICAgRm9yIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1bmRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCiAgICAgICAgICAgICB3b3JrLCB5b3UgbXVzdCBoYXZlIHByZXZpb3VzbHkgdXNlZCB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2RldnRvb2wtZGVwbG95aW5nLXlvdXItc29mdHdhcmUtb24tdGhlLXRhcmdldC1tYWNoaW5lJz48ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZGV2dG9vbC1kZXBsb3lpbmcteW91ci1zb2Z0d2FyZS1vbi10aGUtdGFyZ2V0LW1hY2hpbmUnPjxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIGNvbW1hbmQuCiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCB1bmRlcGxveS10YXJnZXQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+Jm5ic3A7PHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+CkBAIC01NzMsNyArNjIxLDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGNyZWF0ZS13b3Jrc3BhY2U8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCiAgICAgICAgICAgICBjcmVhdGUgYSBuZXcgd29ya3NwYWNlIGxheWVyIGluIHlvdXIKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBuZXcgd29ya3NwYWNlIGxheWVyLCBpdCBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFuZCB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9ubHkuCkBAIC02MTYsNyArNjY0LDcgQEAKICAgICAgJCBkZXZ0b29sIHN0YXR1cwogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgRm9sbG93aW5nIGlzIHNhbXBsZSBvdXRwdXQgYWZ0ZXIgdXNpbmcKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2RldnRvb2wtYWRkaW5nLWEtbmV3LXJlY2lwZS10by10aGUtd29ya3NwYWNlJz48ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdkZXZ0b29sLWFkZGluZy1hLW5ldy1yZWNpcGUtdG8tdGhlLXdvcmtzcGFjZSc+PGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICB0byBjcmVhdGUgYW5kIGFkZCB0aGUgPGZpbGVuYW1lPm10cl8wLjg2LmJiPC9maWxlbmFtZT4gcmVjaXBlCiAgICAgICAgICAgICB0byB0aGUgPGZpbGVuYW1lPndvcmtzcGFjZTwvZmlsZW5hbWU+IGRpcmVjdG9yeToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbAppbmRleCA3ZTFjNWVmLi4wMjg1N2RjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCkBAIC0zNiw3ICszNiw3IEBACiAgICAgPHBhcmE+CiAgICAgICAgIE9uZSBtZXRob2QgeW91IGNhbiB1c2UgdG8gZGV0ZXJtaW5lIHdoaWNoIHJlY2lwZXMgYXJlIGNoZWNraW5nIHRvIHNlZSBpZiBhCiAgICAgICAgIHBhcnRpY3VsYXIgZmVhdHVyZSBpcyBjb250YWluZWQgb3Igbm90IGlzIHRvIDxmaWxlbmFtZT5ncmVwPC9maWxlbmFtZT4gdGhyb3VnaAotICAgICAgICB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KKyAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KICAgICAgICAgZm9yIHRoZSBmZWF0dXJlLgogICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBkaXNjb3ZlcnMgdGhlIHJlY2lwZXMgd2hvc2UgYnVpbGQgaXMgcG90ZW50aWFsbHkKICAgICAgICAgY2hhbmdlZCBiYXNlZCBvbiBhIGdpdmVuIGZlYXR1cmU6CkBAIC0xMzIsNyArMTMyLDcgQEAKICAgICAgICAgICAgIFRoZXNlIHNlbGVjdCBmZWF0dXJlcyBtYWtlIHNlbnNlIHRvIGJlIGNvbnRyb2xsZWQgYm90aCBhdAogICAgICAgICAgICAgdGhlIG1hY2hpbmUgYW5kIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGxldmVsLgogICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTUJJTkVEX0ZFQVRVUkVTJz48ZmlsZW5hbWU+Q09NQklORURfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQ09NQklORURfRkVBVFVSRVMnPjxmaWxlbmFtZT5DT01CSU5FRF9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgdmFyaWFibGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgIDwvcGFyYT4KIApAQCAtMTUxLDggKzE1MSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I2FkZGluZy1hcGktZG9jdW1lbnRhdGlvbi10by10aGUtc3RhbmRhcmQtc2RrJz5BZGRpbmcgQVBJIERvY3VtZW50YXRpb24gdG8gdGhlIFN0YW5kYXJkIFNESzwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKQotICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ymx1ZXRvb3RoOjwvZW1waGFzaXM+IEluY2x1ZGUKICAgICAgICAgICAgICAgICAgICAgYmx1ZXRvb3RoIHN1cHBvcnQgKGludGVncmF0ZWQgQlQgb25seSkuPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2UgdGVzdHMgd2hlcmUgc3VwcG9ydGVkIGJ5IGluZGl2aWR1YWwgcmVjaXBlcy4KICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcGFja2FnZSB0ZXN0cywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdGVzdGluZy1wYWNrYWdlcy13aXRoLXB0ZXN0Jz5UZXN0aW5nIFBhY2thZ2VzIFdpdGggcHRlc3Q8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnNtYmZzOjwvZW1waGFzaXM+IEluY2x1ZGUgU01CIG5ldHdvcmtzCiAgICAgICAgICAgICAgICAgICAgIGNsaWVudCBzdXBwb3J0IChmb3IgbW91bnRpbmcgU2FtYmEvTWljcm9zb2Z0IFdpbmRvd3Mgc2hhcmVzCkBAIC0zMDQsNyArMzA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUbyBtYWtlIHRoZSA8ZmlsZW5hbWU+L3Zhci9sb2c8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgcGVyc2lzdGVudCwgdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVZPTEFUSUxFX0xPR19ESVInPjxmaWxlbmFtZT5WT0xBVElMRV9MT0dfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVZPTEFUSUxFX0xPR19ESVInPjxmaWxlbmFtZT5WT0xBVElMRV9MT0dfRElSPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBieSBzZXR0aW5nIGl0IHRvICJubyIuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0zMTUsOCArMzE1LDggQEAKICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBhbiBpbWFnZSB3aG9zZSByb290IGZpbGVzeXN0ZW0gaXMgcmVhZC1vbmx5LgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLXJlYWQtb25seS1yb290LWZpbGVzeXN0ZW0nPkNyZWF0aW5nIGEgUmVhZC1Pbmx5IFJvb3QgRmlsZXN5c3RlbTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZQotICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c3BsYXNoOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgc2hvd2luZyBhIHNwbGFzaCBzY3JlZW4gZHVyaW5nIGJvb3QuCkBAIC0zNTYsNyArMzU2LDggQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBlcmY8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnN5c3RlbXRhcDwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPkxUVG5nPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHVzZXItc3BhY2UgdG9vbHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLW1hbnVhbCc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+c3NoLXNlcnZlci1kcm9wYmVhcjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBJbnN0YWxscyB0aGUgRHJvcGJlYXIgbWluaW1hbCBTU0ggc2VydmVyLgpAQCAtMzc0LDcgKzM3NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdHJhY2U8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmdkYjwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gR0RCLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zyc+RGVidWdnaW5nIFdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpIFJlbW90ZWx5PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRyYWNpbmcgYW5kIHByb2ZpbGluZywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19QUk9GX1VSTDsnPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWltYWdlcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1pbWFnZXMueG1sCmluZGV4IGYyMjA5NjguLmM3NTJmOTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWltYWdlcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtaW1hZ2VzLnhtbApAQCAtMzAsOCArMzAsOCBAQAogICAgIDxwYXJhPgogICAgICAgICBGcm9tIHdpdGhpbiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSwgeW91IGNhbiB1c2UKICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgd2l0aGluIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgdGhhdCBjb250YWluZSBpbWFnZSByZWNpcGUgZmlsZXM6CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgIHRoYXQgY29udGFpbiBpbWFnZSByZWNpcGUgZmlsZXM6CiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBscyBtZXRhKi9yZWNpcGVzKi9pbWFnZXMvKi5iYgogICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xNDAsNyArMTQwLDcgQEAKICAgICAgICAgICAgICAgICBzZWNvbmQgaW1hZ2UgdG8gYmUgdGVzdGVkLgogICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJ1bnRpbWUgdGVzdGluZyBpbiB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nJz5QZXJmb3JtaW5nIEF1dG9tYXRlZCBSdW50aW1lIFRlc3Rpbmc8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS10ZXN0bWFzdGVyLWluaXRyYW1mczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIEEgUkFNLWJhc2VkIEluaXRpYWwgUm9vdCBGaWxlc3lzdGVtIChpbml0cmFtZnMpIGltYWdlIHRhaWxvcmVkIGZvcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWtpY2tzdGFydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRkMzZiMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWtpY2tzdGFydC54bWwKQEAgLTAsMCArMSwyODQgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdyZWYta2lja3N0YXJ0Jz4KKzx0aXRsZT5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L3RpdGxlPgorCisgICAgPHNlY3Rpb24gaWQ9J29wZW5lbWJlZGRlZC1raWNrc3RhcnQtd2tzLXJlZmVyZW5jZSc+CisgICAgICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGN1cnJlbnQgV2ljIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIG9ubHkgdGhlIGJhc2ljIGtpY2tzdGFydAorICAgICAgICAgICAgcGFydGl0aW9uaW5nIGNvbW1hbmRzOgorICAgICAgICAgICAgPGZpbGVuYW1lPnBhcnRpdGlvbjwvZmlsZW5hbWU+IChvciA8ZmlsZW5hbWU+cGFydDwvZmlsZW5hbWU+CisgICAgICAgICAgICBmb3Igc2hvcnQpIGFuZCA8ZmlsZW5hbWU+Ym9vdGxvYWRlcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRnV0dXJlIHVwZGF0ZXMgd2lsbCBpbXBsZW1lbnQgbW9yZSBjb21tYW5kcyBhbmQgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGFueXRoaW5nIHRoYXQgaXMgbm90IHNwZWNpZmljYWxseSBzdXBwb3J0ZWQsIHJlc3VsdHMKKyAgICAgICAgICAgICAgICBjYW4gYmUgdW5wcmVkaWN0YWJsZS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGEgcmVmZXJlbmNlIG9uIHRoZSBhdmFpbGFibGUga2lja3N0YXJ0CisgICAgICAgICAgICBjb21tYW5kcy4KKyAgICAgICAgICAgIFRoZSBpbmZvcm1hdGlvbiBsaXN0cyB0aGUgY29tbWFuZHMsIHRoZWlyIHN5bnRheCwgYW5kIG1lYW5pbmdzLgorICAgICAgICAgICAgS2lja3N0YXJ0IGNvbW1hbmRzIGFyZSBiYXNlZCBvbiB0aGUgRmVkb3JhIGtpY2tzdGFydCB2ZXJzaW9ucyBidXQKKyAgICAgICAgICAgIHdpdGggbW9kaWZpY2F0aW9ucyB0byByZWZsZWN0IFdpYyBjYXBhYmlsaXRpZXMuCisgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBmb3IgdGhvc2UgY29tbWFuZHMgYXQgdGhlCisgICAgICAgICAgICBmb2xsb3dpbmcgbGlua3M6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQW5hY29uZGEvS2lja3N0YXJ0I3BhcnRfb3JfcGFydGl0aW9uJz5odHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9BbmFjb25kYS9LaWNrc3RhcnQjcGFydF9vcl9wYXJ0aXRpb248L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNib290bG9hZGVyJz5odHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9BbmFjb25kYS9LaWNrc3RhcnQjYm9vdGxvYWRlcjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY29tbWFuZC1wYXJ0LW9yLXBhcnRpdGlvbic+CisgICAgICAgIDx0aXRsZT5Db21tYW5kOiBwYXJ0IG9yIHBhcnRpdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBFaXRoZXIgb2YgdGhlc2UgY29tbWFuZHMgY3JlYXRlIGEgcGFydGl0aW9uIG9uIHRoZSBzeXN0ZW0gYW5kIHVzZQorICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBzeW50YXg6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBhcnQgWzxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+XQorICAgICBwYXJ0aXRpb24gWzxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+XQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBwcm92aWRlIDxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+LCBXaWMKKyAgICAgICAgICAgIGNyZWF0ZXMgYSBwYXJ0aXRpb24gYnV0IGRvZXMgbm90IG1vdW50IGl0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgIHdoZXJlIHRoZSBwYXJ0aXRpb24gd2lsbCBiZSBtb3VudGVkIGFuZCBtdXN0IGJlIG9mIG9uZSBvZiB0aGUKKyAgICAgICAgICAgIGZvbGxvd2luZyBmb3JtczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LzxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsICIvIiwgIi91c3IiLCBvciAiL2hvbWUiCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN3YXA8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGNyZWF0ZWQgcGFydGl0aW9uIGlzIHVzZWQgYXMgc3dhcCBzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU3BlY2lmeWluZyBhIDxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+IGNhdXNlcyB0aGUKKyAgICAgICAgICAgIHBhcnRpdGlvbiB0byBhdXRvbWF0aWNhbGx5IGJlIG1vdW50ZWQuCisgICAgICAgICAgICBXaWMgYWNoaWV2ZXMgdGhpcyBieSBhZGRpbmcgZW50cmllcyB0byB0aGUgZmlsZXN5c3RlbSB0YWJsZSAoZnN0YWIpCisgICAgICAgICAgICBkdXJpbmcgaW1hZ2UgZ2VuZXJhdGlvbi4KKyAgICAgICAgICAgIEluIG9yZGVyIGZvciB3aWMgdG8gZ2VuZXJhdGUgYSB2YWxpZCBmc3RhYiwgeW91IG11c3QgYWxzbyBwcm92aWRlCisgICAgICAgICAgICBvbmUgb2YgdGhlIDxmaWxlbmFtZT4tLW9uZHJpdmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT4tLW9uZGlzazwvZmlsZW5hbWU+LCBvcgorICAgICAgICAgICAgPGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPiBwYXJ0aXRpb24gb3B0aW9ucyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyAiLyIgYXMgdGhlIG1vdW50cG9pbnQuCisgICAgICAgICAgICBUaGUgY29tbWFuZCB1c2VzICItLW9uZGlzayIgdG8gZm9yY2UgdGhlIHBhcnRpdGlvbiBvbnRvIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnNkYjwvZmlsZW5hbWU+IGRpc2s6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RiIC0tZnN0eXBlPWV4dDMgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSGVyZSBpcyBhIGxpc3QgdGhhdCBkZXNjcmliZXMgb3RoZXIgc3VwcG9ydGVkIG9wdGlvbnMgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5wYXJ0PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+cGFydGl0aW9uPC9maWxlbmFtZT4gY29tbWFuZHM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXNpemU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgbWluaW11bSBwYXJ0aXRpb24gc2l6ZSBpbiBNQnl0ZXMuCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgYW4gaW50ZWdlciB2YWx1ZSBzdWNoIGFzIDUwMC4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IGFwcGVuZCB0aGUgbnVtYmVyIHdpdGggIk1CIi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRoaXMgb3B0aW9uIGlmIHlvdSB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IG5hbWVzIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGRhdGEgdGhhdCBwb3B1bGF0ZXMgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHZhbHVlIGZvciB0aGlzIG9wdGlvbiBpcyAicm9vdGZzIiwgYnV0IHlvdQorICAgICAgICAgICAgICAgICAgICBjYW4gdXNlIGFueSB2YWx1ZSB0aGF0IG1hcHMgdG8gYSB2YWxpZCBzb3VyY2UgcGx1Zy1pbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBzb3VyY2UgcGx1Zy1pbnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dpYy1wbHVnLWlucy1pbnRlcmZhY2UnPldpYyBQbHVnLUlucyBJbnRlcmZhY2U8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgdXNlIDxmaWxlbmFtZT4tLXNvdXJjZSByb290ZnM8L2ZpbGVuYW1lPiwgV2ljCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBwYXJ0aXRpb24gYXMgbGFyZ2UgYXMgbmVlZGVkIGFuZCB0byBmaWxsIGl0IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvbnRlbnRzIG9mIHRoZSByb290IGZpbGVzeXN0ZW0gcG9pbnRlZCB0byBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1yPC9maWxlbmFtZT4gY29tbWFuZC1saW5lIG9wdGlvbiBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVudCByb290ZnMgZGVyaXZlZCBmcm9tIHRoZSA8ZmlsZW5hbWU+LWU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kLWxpbmUgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZXN5c3RlbSB0eXBlIHVzZWQgdG8gY3JlYXRlIHRoZSBwYXJ0aXRpb24gaXMgZHJpdmVuCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgPGZpbGVuYW1lPi0tZnN0eXBlPC9maWxlbmFtZT4gb3B0aW9uCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBmb3IgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBlbnRyeSBvbiA8ZmlsZW5hbWU+LS1mc3R5cGU8L2ZpbGVuYW1lPiB0aGF0IGZvbGxvd3MKKyAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlIDxyZXBsYWNlYWJsZT5wbHVnaW4tbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIFdpYyBjcmVhdGVzIGEgcGFydGl0aW9uIGFzIGxhcmdlIGFzIG5lZWRlZCBhbmQgZmlsbHMgaXQKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgY29udGVudHMgb2YgdGhlIHBhcnRpdGlvbiB0aGF0IGlzIGdlbmVyYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIHBsdWctaW4gbmFtZSB1c2luZyB0aGUgZGF0YSBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXI8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUgb3B0aW9uIG9yIHRoZQorICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW50IHJvb3RmcyBkZXJpdmVkIGZyb20gdGhlIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIEV4YWN0bHkgd2hhdCB0aG9zZSBjb250ZW50cyBhbmQgZmlsZXN5c3RlbSB0eXBlIGVuZCB1cAorICAgICAgICAgICAgICAgICAgICBiZWluZyBhcmUgZGVwZW5kZW50IG9uIHRoZSBnaXZlbiBwbHVnLWluIGltcGxlbWVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGRvIG5vdCB1c2UgdGhlIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgdGhlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBjb21tYW5kIGNyZWF0ZXMgYW4KKyAgICAgICAgICAgICAgICAgICAgZW1wdHkgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtdXN0IHVzZSB0aGUgPGZpbGVuYW1lPi0tc2l6ZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBlbXB0eSBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLW9uZGlzazwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4tLW9uZHJpdmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3JjZXMgdGhlIHBhcnRpdGlvbiB0byBiZSBjcmVhdGVkIG9uIGEgcGFydGljdWxhciBkaXNrLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1mc3R5cGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTZXRzIHRoZSBmaWxlIHN5c3RlbSB0eXBlIGZvciB0aGUgcGFydGl0aW9uLgorICAgICAgICAgICAgICAgICAgICBWYWxpZCB2YWx1ZXMgYXJlOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQ0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idHJmczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNxdWFzaGZzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3dhcDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1mc29wdGlvbnM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBmcmVlLWZvcm0gc3RyaW5nIG9mIG9wdGlvbnMgdG8gYmUgdXNlZCB3aGVuCisgICAgICAgICAgICAgICAgICAgIG1vdW50aW5nIHRoZSBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHN0cmluZyB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+IGZpbGUgb2YgdGhlIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gYW5kIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuCisgICAgICAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHN0cmluZyBpcyAiZGVmYXVsdHMiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1sYWJlbCBsYWJlbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbGFiZWwgdG8gZ2l2ZSB0byB0aGUgZmlsZXN5c3RlbSB0byBiZSBtYWRlIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBnaXZlbiBsYWJlbCBpcyBhbHJlYWR5IGluIHVzZSBieSBhbm90aGVyIGZpbGVzeXN0ZW0sCisgICAgICAgICAgICAgICAgICAgIGEgbmV3IGxhYmVsIGlzIGNyZWF0ZWQgZm9yIHRoZSBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWFjdGl2ZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE1hcmtzIHRoZSBwYXJ0aXRpb24gYXMgYWN0aXZlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1hbGlnbiAoaW4gS0J5dGVzKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNheXMgdG8gc3RhcnQgYQorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gb24gYW4gPHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPiBLQnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLW5vLXRhYmxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgb3B0aW9uIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgcGFydGl0aW9uIGFuZAorICAgICAgICAgICAgICAgICAgICBjYXVzZXMgaXQgdG8gYmVjb21lIHBvcHVsYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIHBhcnRpdGlvbiBpcyBub3QgYWRkZWQgdG8gdGhlIHBhcnRpdGlvbiB0YWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZXh0cmEtc3BhY2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBhZGRzIGV4dHJhIHNwYWNlCisgICAgICAgICAgICAgICAgICAgIGFmdGVyIHRoZSBzcGFjZSBmaWxsZWQgYnkgdGhlIGNvbnRlbnQgb2YgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHNpemUgY2FuIGdvIGJleW9uZCB0aGUgc2l6ZSBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXNpemU8L2ZpbGVuYW1lPiBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwIE1ieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tb3ZlcmhlYWQtZmFjdG9yPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgbXVsdGlwbGllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSBvZiB0aGUgcGFydGl0aW9uIGJ5IHRoZSBvcHRpb24ncyB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3VwcGx5IGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICIxIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIjEuMyIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXBhcnQtdHlwZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNwZWNpZmllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uIHR5cGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgKEdVSUQpIGZvciBHUFQKKyAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBsaXN0IG9mIHBhcnRpdGlvbiB0eXBlIEdVSURzIGF0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1VJRF9QYXJ0aXRpb25fVGFibGUjUGFydGl0aW9uX3R5cGVfR1VJRHMnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS11c2UtdXVpZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IGNhdXNlcyBXaWMgdG8KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgYSByYW5kb20gR1VJRCBmb3IgdGhlIHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCBpZGVudGlmaWVyIGlzIHVzZWQgaW4gdGhlIGJvb3Rsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiB0byBzcGVjaWZ5IHRoZSByb290IHBhcnRpdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tdXVpZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNwZWNpZmllcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uIFVVSUQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY29tbWFuZC1ib290bG9hZGVyJz4KKyAgICA8dGl0bGU+Q29tbWFuZDogYm9vdGxvYWRlcjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGNvbW1hbmQgc3BlY2lmaWVzIGhvdyB0aGUgYm9vdGxvYWRlciBzaG91bGQgYmUgY29uZmlndXJlZCBhbmQKKyAgICAgICAgICAgIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEJvb3Rsb2FkZXIgZnVuY3Rpb25hbGl0eSBhbmQgYm9vdCBwYXJ0aXRpb25zIGFyZSBpbXBsZW1lbnRlZCBieQorICAgICAgICAgICAgICAgIHRoZSB2YXJpb3VzIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+IHBsdWctaW5zIHRoYXQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnQgYm9vdGxvYWRlciBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgIFRoZSBib290bG9hZGVyIGNvbW1hbmQgZXNzZW50aWFsbHkgcHJvdmlkZXMgYSBtZWFucyBvZgorICAgICAgICAgICAgICAgIG1vZGlmeWluZyBib290bG9hZGVyIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXRpbWVvdXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgYm9vdGxvYWRlciB0aW1lcworICAgICAgICAgICAgICAgICAgICBvdXQgYW5kIGJvb3RzIHRoZSBkZWZhdWx0IG9wdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tYXBwZW5kPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGtlcm5lbCBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBwYXJhbWV0ZXJzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c2xpbnV4CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5BUFBFTkQ8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+Z3J1YjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBjb21tYW5kIGxpbmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWNvbmZpZ2ZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSB1c2VyLWRlZmluZWQgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgYm9vdGxvYWRlci4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwcm92aWRlIGEgZnVsbCBwYXRobmFtZSBmb3IgdGhlIGZpbGUgb3IgYSBmaWxlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSA8ZmlsZW5hbWU+Y2FubmVkLXdrczwvZmlsZW5hbWU+IGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gb3ZlcnJpZGVzIGFsbCBvdGhlciBib290bG9hZGVyIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCmluZGV4IDc1MmIyMTAuLmQ0YjdiZWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbApAQCAtMjIsMTEgKzIyLDExIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlJpY2hhcmQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UHVyZGllPC9zdXJuYW1lPgorICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+TGludXggRm91bmRhdGlvbjwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc8L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KIAogICAgICAgICA8L2F1dGhvcmdyb3VwPgpAQCAtMTEzLDI0ICsxMTMsMTkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KdW5lIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4yIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy40PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIApAQCAtMTQ3LDI5ICsxNDIsMzEgQEAKICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CiAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFlvY3RvIFByb2plY3QgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiAmWU9DVE9fRE9DX1ZFUlNJT047KSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbWFudWFsIGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOy4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGxhdGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IChpZiB0aGV5IGV4aXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBmb3Igd2hpY2ggeW91IHdhbnQKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBpbi1kZXZlbG9wbWVudCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBNYW51YWwsIHNlZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy9sYXRlc3QvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgogCiAgICAgPC9ib29raW5mbz4KQEAgLTE3OCw3ICsxNzUsNyBAQAogCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0idXNpbmdwb2t5LnhtbCIvPgogCi0gICAgPHhpOmluY2x1ZGUgaHJlZj0iY2xvc2VyLWxvb2sueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbCIvPgogCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0idGVjaG5pY2FsLWRldGFpbHMueG1sIi8+CiAKQEAgLTE5NCw2ICsxOTEsOCBAQAogCiAgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbCIvPgogCisgICAgPHhpOmluY2x1ZGUgaHJlZj0icmVmLWtpY2tzdGFydC54bWwiLz4KKwogICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi1xYS1jaGVja3MueG1sIi8+CiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYtaW1hZ2VzLnhtbCIvPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwKaW5kZXggZmUzYmEwOS4uZTI5MDJlYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1yZWxlYXNlLXByb2Nlc3MueG1sCkBAIC02MSw5ICs2MSw5IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEVhY2ggbWFqb3IgcmVsZWFzZSByZWNlaXZlcyBhIGNvZGVuYW1lIHRoYXQgaWRlbnRpZmllcyB0aGUgcmVsZWFzZSBpbgogICAgICAgICB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICA8bGluayBsaW5rZW5kPSd5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPi4KICAgICAgICAgVGhlIGNvbmNlcHQgaXMgdGhhdCBicmFuY2hlcyBvZgotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgIHdpdGggdGhlIHNhbWUgY29kZW5hbWUgYXJlIGxpa2VseSB0byBiZSBjb21wYXRpYmxlIGFuZCB0aHVzCiAgICAgICAgIHdvcmsgdG9nZXRoZXIuCiAgICAgICAgIDxub3RlPgpAQCAtMTMxLDcgKzEzMSw3IEBACiAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcnVuIGF2YWlsYWJsZSB0ZXN0cyBvbiB5b3VyIHByb2plY3RzLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC0yMDYsNyArMjA2LDggQEAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QncyBtYWluIEF1dG9idWlsZGVyCiAgICAgICAgICg8ZmlsZW5hbWU+YXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+KSBwdWJsaWNseSB0ZXN0cwotICAgICAgICBlYWNoIFlvY3RvIFByb2plY3QgcmVsZWFzZSdzIGNvZGUgaW4gdGhlIE9FLUNvcmUsIFBva3ksIGFuZCBCaXRCYWtlCisgICAgICAgIGVhY2ggWW9jdG8gUHJvamVjdCByZWxlYXNlJ3MgY29kZSBpbiB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4sIFBva3ksIGFuZCBCaXRCYWtlCiAgICAgICAgIHJlcG9zaXRvcmllcy4KICAgICAgICAgVGhlIHRlc3Rpbmcgb2NjdXJzIGZvciBib3RoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZQogICAgICAgICAibWFzdGVyIiBicmFuY2ggYW5kIGFsc28gZm9yIHN1Ym1pdHRlZCBwYXRjaGVzLgpAQCAtMjE2LDcgKzIxNyw3IEBACiAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCiAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFsbCB0aGVzZSBicmFuY2hlcyBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvbGluaz4uCiAgICAgICAgIDwvbm90ZT4KICAgICAgICAgVGVzdGluZyB3aXRoaW4gdGhlc2UgcHVibGljIGJyYW5jaGVzIGVuc3VyZXMgaW4gYSBwdWJsaWNseSB2aXNpYmxlIHdheQogICAgICAgICB0aGF0IGFsbCBvZiB0aGUgbWFpbiBzdXBwb3NlZCBhcmNoaXRlY3R1cmVzIGFuZCByZWNpcGVzIGluIE9FLUNvcmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sCmluZGV4IDliMjcwMWMuLjRiZGRjNTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbApAQCAtNywxNiArNywxOSBAQAogPHRpdGxlPlNvdXJjZSBEaXJlY3RvcnkgU3RydWN0dXJlPC90aXRsZT4KIAogPHBhcmE+Ci0gICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiBjb25zaXN0cyBvZiBzZXZlcmFsIGNvbXBvbmVudHMuCi0gICAgVW5kZXJzdGFuZGluZyB0aGVtIGFuZCBrbm93aW5nIHdoZXJlIHRoZXkgYXJlIGxvY2F0ZWQgaXMga2V5IHRvIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IHdlbGwuCi0gICAgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyB0aGUgU291cmNlIERpcmVjdG9yeSBhbmQgZ2l2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhcmlvdXMKLSAgICBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCisgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgY29uc2lzdHMgb2Ygc2V2ZXJhbCBjb21wb25lbnRzLgorICAgIFVuZGVyc3RhbmRpbmcgdGhlbSBhbmQga25vd2luZyB3aGVyZSB0aGV5IGFyZSBsb2NhdGVkIGlzIGtleSB0byB1c2luZyB0aGUKKyAgICBZb2N0byBQcm9qZWN0IHdlbGwuCisgICAgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyB0aGUgU291cmNlIERpcmVjdG9yeSBhbmQgZ2l2ZXMgaW5mb3JtYXRpb24gYWJvdXQKKyAgICB0aGUgdmFyaW91cyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCiA8L3BhcmE+CiAKIDxwYXJhPgotICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZXN0YWJsaXNoIGEgbG9jYWwgU291cmNlIERpcmVjdG9yeSBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSwgc2VlIHRoZQotICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNnZXR0aW5nLXNldHVwJz5HZXR0aW5nIFNldCBVcDwvdWxpbms+IgotICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZXN0YWJsaXNoIGEgbG9jYWwgU291cmNlIERpcmVjdG9yeSBvbiB5b3VyCisgICAgZGV2ZWxvcG1lbnQgc3lzdGVtLCBzZWUgdGhlCisgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiA8L3BhcmE+CiAKIDxub3RlPgpAQCAtMzEsNyArMzQsNyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHRvcC1sZXZlbCBjb21wb25lbnRzIG9mIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgIDwvcGFyYT4KIAogICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtY29yZS1iaXRiYWtlJz4KQEAgLTQyLDcgKzQ1LDcgQEAKICAgICAgICAgICAgIFRoZSBjb3B5IHVzdWFsbHkgbWF0Y2hlcyB0aGUgY3VycmVudCBzdGFibGUgQml0QmFrZSByZWxlYXNlIGZyb20KICAgICAgICAgICAgIHRoZSBCaXRCYWtlIHByb2plY3QuCiAgICAgICAgICAgICBCaXRCYWtlLCBhCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgogICAgICAgICAgICAgaW50ZXJwcmV0ZXIsIHJlYWRzIHRoZSBZb2N0byBQcm9qZWN0IE1ldGFkYXRhIGFuZCBydW5zIHRoZSB0YXNrcwogICAgICAgICAgICAgZGVmaW5lZCBieSB0aGF0IGRhdGEuCiAgICAgICAgICAgICBGYWlsdXJlcyBhcmUgdXN1YWxseSBmcm9tIHRoZSBNZXRhZGF0YSBhbmQgbm90IGZyb20gQml0QmFrZSBpdHNlbGYuCkBAIC01MywxMCArNTYsOCBAQAogICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZQogICAgICAgICAgICAgbWFpbiBCaXRCYWtlIGV4ZWN1dGFibGUsIHdoaWNoIHJlc2lkZXMgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW4vPC9maWxlbmFtZT4gZGlyZWN0b3J5LCBzdGFydHMuCi0gICAgICAgICAgICBTb3VyY2luZyBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgKGUuZy4KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9InN0cnVjdHVyZS1jb3JlLXNjcmlwdCI+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBvcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ic3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCI+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgIFNvdXJjaW5nIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgKGkuZS4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9InN0cnVjdHVyZS1jb3JlLXNjcmlwdCI+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KQogICAgICAgICAgICAgcGxhY2VzIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvYmluPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgKGluIHRoYXQgb3JkZXIpIGludG8KICAgICAgICAgICAgIHRoZSBzaGVsbCdzIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuCkBAIC03NSwyNyArNzYsMjQgQEAKICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHVzZXIgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgdGhlIG91dHB1dAogICAgICAgICAgICAgZ2VuZXJhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHdoZXJlCiAgICAgICAgICAgICB0aGUgc291cmNlIHRyZWUgaXMgY29tYmluZWQgd2l0aCB0aGUgb3V0cHV0LgotICAgICAgICAgICAgVGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICBpcyBjcmVhdGVkIGluaXRpYWxseSB3aGVuIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4KICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0CiAgICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIG9yCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBwbGFjZSBvdXRwdXQgYW5kIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgIGZpbGVzIGluIGEgZGlyZWN0b3J5IHNlcGFyYXRlIGZyb20gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICBieSBwcm92aWRpbmcgYSBkaXJlY3RvcnkgbmFtZSB3aGVuIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4KICAgICAgICAgICAgIHRoZSBzZXR1cCBzY3JpcHQuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2VwYXJhdGluZyBvdXRwdXQgZnJvbSB5b3VyIGxvY2FsCiAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGZpbGVzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9ucy4KKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTE3NSw5ICsxNzMsNyBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdmFyaW91cyBpbnRlZ3JhdGlvbiBzY3JpcHRzIHRoYXQgaW1wbGVtZW50CiAgICAgICAgICAgICBleHRyYSBmdW5jdGlvbmFsaXR5IGluIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50IChlLmcuIFFFTVUgc2NyaXB0cykuCiAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ic3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgc2NyaXB0cyBhcHBlbmQgdGhpcyBkaXJlY3RvcnkgdG8gdGhlIHNoZWxsJ3MKKyAgICAgICAgICAgIHNjcmlwdCBhcHBlbmRzIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBzaGVsbCdzCiAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTE5MiwxNCArMTg4LDcgQEAKICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc2NyaXB0IGlzIG9uZSBvZiB0d28gc2NyaXB0cyB0aGF0IHNldCB1cCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgb3RoZXIgc2NyaXB0LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2NyaXB0IHNldHMgdXAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudC4KICAgICAgICAgICAgIFJ1bm5pbmcgdGhpcyBzY3JpcHQgd2l0aCB0aGUgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IGNvbW1hbmQgaW4KICAgICAgICAgICAgIGEgc2hlbGwgbWFrZXMgY2hhbmdlcyB0byA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGFuZCBzZXRzIG90aGVyCiAgICAgICAgICAgICBjb3JlIEJpdEJha2UgdmFyaWFibGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgpAQCAtMjEyLDcgKzIwMSw3IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoaXMgc2NyaXB0LCB5b3VyIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQgaXMgc2V0CiAgICAgICAgICAgICB1cCwgYQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICBpcyBjcmVhdGVkLCB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGJlY29tZXMgdGhlIEJ1aWxkIERpcmVjdG9yeSwKICAgICAgICAgICAgIGFuZCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBjb21tb24gQml0QmFrZSB0YXJnZXRzLgogICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgpAQCAtMjM0LDE5ICsyMjMsMTkgQEAKICAgICAgICAgICAgIFRoZSBzY3JpcHQgZ2V0cyBpdHMgZGVmYXVsdCBsaXN0IG9mIGNvbW1vbiB0YXJnZXRzIGZyb20gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi1ub3Rlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICBTaG91bGQgeW91IGhhdmUgY3VzdG9tIGRpc3RyaWJ1dGlvbnMsIGl0IGlzIHZlcnkgZWFzeSB0byBtb2RpZnkKICAgICAgICAgICAgIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHRvIGluY2x1ZGUgeW91ciB0YXJnZXRzIGZvciB5b3VyCiAgICAgICAgICAgICBkaXN0cmlidXRpb24uCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1jdXN0b20tdGVtcGxhdGUtY29uZmlndXJhdGlvbi1kaXJlY3RvcnknPkNyZWF0aW5nIGEgQ3VzdG9tIFRlbXBsYXRlIENvbmZpZ3VyYXRpb24gRGlyZWN0b3J5PC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKICAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBCeSBkZWZhdWx0LCBydW5uaW5nIHRoaXMgc2NyaXB0IHdpdGhvdXQgYQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICBhcmd1bWVudCBjcmVhdGVzIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKICAgICAgICAgICAgIGluIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KICAgICAgICAgICAgIElmIHlvdSBwcm92aWRlIGEgQnVpbGQgRGlyZWN0b3J5IGFyZ3VtZW50IHdoZW4geW91CkBAIC0yNTQsMTcgKzI0MywxNyBAQAogICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIEJ1aWxkIERpcmVjdG9yeSBvZiB5b3VyIGNob2ljZS4KICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgY3JlYXRlcyBhIEJ1aWxkIERpcmVjdG9yeSBuYW1lZAogICAgICAgICAgICAgPGZpbGVuYW1lPm15YnVpbGRzPC9maWxlbmFtZT4gdGhhdCBpcyBvdXRzaWRlIG9mIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz46CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7IH4vbXlidWlsZHMKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgIGZpbGVzLCB3aGljaCBhcmUgZm91bmQgYnkgZGVmYXVsdCBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkuCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1jdXN0b20tdGVtcGxhdGUtY29uZmlndXJhdGlvbi1kaXJlY3RvcnknPkNyZWF0aW5nIGEgQ3VzdG9tIFRlbXBsYXRlIENvbmZpZ3VyYXRpb24gRGlyZWN0b3J5PC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKICAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcyB0aGF0CkBAIC0yNzgsMTU3ICsyNjcsNiBAQAogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc2NyaXB0IGlzIG9uZSBvZiB0d28gc2NyaXB0cyB0aGF0IHNldCB1cCB0aGUgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIEFzaWRlIGZyb20gc2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQsIHRoaXMgc2NyaXB0IHN0YXJ0cyBhCi0gICAgICAgICAgICBtZW1vcnktcmVzaWRlbnQgQml0QmFrZSBzZXJ2ZXIuCi0gICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIG90aGVyIHNldHVwIHNjcmlwdCwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgTWVtb3J5LXJlc2lkZW50IEJpdEJha2UgcmVzaWRlcyBpbiBtZW1vcnkgdW50aWwgeW91IHNwZWNpZmljYWxseQotICAgICAgICAgICAgcmVtb3ZlIGl0IHVzaW5nIHRoZSBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLW0KLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgUnVubmluZyB0aGlzIHNjcmlwdCB3aXRoIHRoZSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gY29tbWFuZCBpbgotICAgICAgICAgICAgYSBzaGVsbCBtYWtlcyBjaGFuZ2VzIHRvIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gYW5kIHNldHMgb3RoZXIKLSAgICAgICAgICAgIGNvcmUgQml0QmFrZSB2YXJpYWJsZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0gICAgICAgICAgICBPbmUgb2YgdGhlc2UgdmFyaWFibGVzIGlzIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCU0VSVkVSJz48ZmlsZW5hbWU+QkJTRVJWRVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBhbGxvd3MgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gbG9jYXRlCi0gICAgICAgICAgICB0aGUgc2VydmVyIHRoYXQgaXMgcnVubmluZyBCaXRCYWtlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgbmVlZCB0byBydW4gYW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJlZm9yZSB1c2luZyBCaXRCYWtlCi0gICAgICAgICAgICBjb21tYW5kcy4KLSAgICAgICAgICAgIEZvbGxvd2luZyBpcyB0aGUgc2NyaXB0IHN5bnRheDoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzIDxyZXBsYWNlYWJsZT5wb3J0X251bWJlcjwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5idWlsZF9kaXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGNvbnNpZGVyYXRpb25zIHdoZW4gc291cmNpbmcgdGhpcyBzY3JpcHQ6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCB1c2VzIG90aGVyIHNjcmlwdHMgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0byBkbyB0aGUgYnVsayBvZgotICAgICAgICAgICAgICAgICAgICB0aGUgd29yay4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSBwb3J0IG51bWJlciB3aXRoIHRoZSBzY3JpcHQsIHRoZQotICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHNlcnZlciBzdGFydHMgYXQgYSByYW5kb21seSBzZWxlY3RlZCBwb3J0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQncyBwYXJhbWV0ZXJzIGFyZSBwb3NpdGlvbmFsbHkgZGVwZW5kZW50LgotICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBjYW5ub3QgcnVuIHRoZSBzY3JpcHQgYW5kIHByb3ZpZGUgYQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgd2l0aG91dCBhbHNvIHByb3ZpZGluZyBhIHBvcnQgbnVtYmVyLgotICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIGZvbGxvd2luZyBzeW50YXggaXMgaWxsZWdhbDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSBvZS1pbml0YnVpbGQtZW52LW1lbXJlcyA8cmVwbGFjZWFibGU+YnVpbGRfZGlyPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyByZXN0cmljdGlvbiBtaWdodCBiZSByZXNvbHZlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU1Jz5CdWcgNzU1NTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhpcyBzY3JpcHQsIHlvdXIgWW9jdG8gUHJvamVjdCBlbnZpcm9ubWVudCBpcyBzZXQKLSAgICAgICAgICAgIHVwLCBhIEJ1aWxkIERpcmVjdG9yeSBpcyBjcmVhdGVkLCB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGJlY29tZXMKLSAgICAgICAgICAgIHRoZSBCdWlsZCBEaXJlY3RvcnksIGFuZCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBjb21tb24KLSAgICAgICAgICAgIEJpdEJha2UgdGFyZ2V0cy4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzCi0gICAgIE5vIHBvcnQgc3BlY2lmaWVkLCB1c2luZyBkeW5hbWljYWxseSBzZWxlY3RlZCBwb3J0Ci0KLSAgICAgIyMjIFNoZWxsIGVudmlyb25tZW50IHNldCB1cCBmb3IgYnVpbGRzLiAjIyMKLQotICAgICBZb3UgY2FuIG5vdyBydW4gJ2JpdGJha2UgJmx0O3RhcmdldCZndDsnCi0KLSAgICAgQ29tbW9uIHRhcmdldHMgYXJlOgotICAgICAgICAgY29yZS1pbWFnZS1taW5pbWFsCi0gICAgICAgICBjb3JlLWltYWdlLXNhdG8KLSAgICAgICAgIG1ldGEtdG9vbGNoYWluCi0gICAgICAgICBtZXRhLWlkZS1zdXBwb3J0Ci0KLSAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2JwotICAgICBCaXRiYWtlIHNlcnZlciBhZGRyZXNzOiAxMjcuMC4wLjEsIHNlcnZlciBwb3J0OiA1Mzk5NQotICAgICBCaXRiYWtlIHNlcnZlciBzdGFydGVkIG9uIGRlbWFuZCBhcyBuZWVkZWQsIHVzZSBiaXRiYWtlIC1tIHRvIHNodXQgaXQgZG93bgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhlIHNjcmlwdCBnZXRzIGl0cyBkZWZhdWx0IGxpc3Qgb2YgY29tbW9uIHRhcmdldHMgZnJvbSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mLW5vdGVzLnR4dDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICBTaG91bGQgeW91IGhhdmUgY3VzdG9tIGRpc3RyaWJ1dGlvbnMsIGl0IGlzIHZlcnkgZWFzeSB0byBtb2RpZnkKLSAgICAgICAgICAgIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHRvIGluY2x1ZGUgeW91ciB0YXJnZXRzIGZvciB5b3VyCi0gICAgICAgICAgICBkaXN0cmlidXRpb24uCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1jdXN0b20tdGVtcGxhdGUtY29uZmlndXJhdGlvbi1kaXJlY3RvcnknPkNyZWF0aW5nIGEgQ3VzdG9tIFRlbXBsYXRlIENvbmZpZ3VyYXRpb24gRGlyZWN0b3J5PC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZQotICAgICAgICAgICAgaW5mb3JtYXRpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHJ1bm5pbmcgdGhpcyBzY3JpcHQgd2l0aG91dCBhCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICBhcmd1bWVudCBjcmVhdGVzIGEgYnVpbGQgZGlyZWN0b3J5IG5hbWVkCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIElmIHlvdSBwcm92aWRlIGEgQnVpbGQgRGlyZWN0b3J5IGFyZ3VtZW50IGFuZCBwb3J0IG51bWJlciB3aGVuIHlvdQotICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSBzY3JpcHQsIHRoZSBCdWlsZCBEaXJlY3RvcnkgaXMKLSAgICAgICAgICAgIGNyZWF0ZWQgdXNpbmcgdGhhdCBuYW1lLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBzdGFydHMgdGhlIEJpdEJha2Ugc2VydmVyIHVzaW5nCi0gICAgICAgICAgICBwb3J0IDUzOTk1IGFuZCBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPiB0aGF0IGlzIG91dHNpZGUgb2YgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz46Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52LW1lbXJlcyA1Mzk5NSB+L215YnVpbGRzCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+IHNjcmlwdCBzdGFydHMgYQotICAgICAgICAgICAgbWVtb3J5IHJlc2lkZW50IEJpdEJha2Ugc2VydmVyLgotICAgICAgICAgICAgVGhpcyBCaXRCYWtlIGluc3RhbmNlIHVzZXMgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1jb29rZXJkYWVtb24ubG9nPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMKLSAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgdGVtcGxhdGUgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgZmlsZXMsIHdoaWNoIGFyZSBmb3VuZCBieSBkZWZhdWx0IGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgotICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtY3VzdG9tLXRlbXBsYXRlLWNvbmZpZ3VyYXRpb24tZGlyZWN0b3J5Jz5DcmVhdGluZyBhIEN1c3RvbSBUZW1wbGF0ZSBDb25maWd1cmF0aW9uIERpcmVjdG9yeTwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yIG1vcmUKLSAgICAgICAgICAgIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yCi0gICAgICAgICAgICAgICAgZGlyZWN0b3J5IG5hbWVzIHRoYXQgY29udGFpbiBzcGFjZXMuCi0gICAgICAgICAgICAgICAgSWYgeW91IGF0dGVtcHQgdG8gcnVuIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPiBzY3JpcHQKLSAgICAgICAgICAgICAgICBmcm9tIGEgU291cmNlIERpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHNwYWNlcyBpbiBlaXRoZXIgdGhlCi0gICAgICAgICAgICAgICAgZmlsZW5hbWVzIG9yIGRpcmVjdG9yeSBuYW1lcywgdGhlIHNjcmlwdCByZXR1cm5zIGFuIGVycm9yCi0gICAgICAgICAgICAgICAgaW5kaWNhdGluZyBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gdXNlIGEgU291cmNlIERpcmVjdG9yeSBmcmVlIG9mIG5hbWVzIGNvbnRhaW5pbmcKLSAgICAgICAgICAgICAgICBzcGFjZXMuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KICAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJhc2ljLXRvcC1sZXZlbCc+CiAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+TElDRU5TRSwgUkVBRE1FLCBhbmQgUkVBRE1FLmhhcmR3YXJlPC9maWxlbmFtZT48L3RpdGxlPgogCkBAIC00NDMsMTEgKzI4MSw5IEBACiAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICB3aGVuIHlvdSBydW4gb25lIG9mIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHRzIChpLmUuCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgIG9yCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgd2hlbiB5b3UgcnVuIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHRzIChpLmUuCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTUwNSw5ICszNDEsNyBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gd2hlbgogICAgICAgICAgICAgeW91IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUgdG9wLWxldmVsIGJ1aWxkIGVudmlyb25tZW50CiAgICAgICAgICAgICBzZXR1cCBzY3JpcHQgKGkuZS4KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBvcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTUzMyw3ICszNjcsNyBAQAogICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGhvdyB0aGUgPGZpbGVuYW1lPlRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgaXMgdXNlZCBieSBsb29raW5nIGF0IHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL29lLXNldHVwLWJ1aWxkZGlyPC9maWxlbmFtZT4gc2NyaXB0IGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBvZiB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KQEAgLTU1OSw5ICszOTMsNyBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gd2hlbgogICAgICAgICAgICAgeW91IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUgdG9wLWxldmVsIGJ1aWxkIGVudmlyb25tZW50CiAgICAgICAgICAgICBzZXR1cCBzY3JpcHQgKGkuZS4KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBvcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTU4NSw3ICs0MTcsNyBAQAogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgaG93IHRoZSA8ZmlsZW5hbWU+VEVNUExBVEVDT05GPC9maWxlbmFtZT4gdmFyaWFibGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IHNjcmlwdCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gb2YgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCkBAIC03MzMsNyArNTY1LDcgQEAKICAgICAgICAgICAgIGNvbnRhaW4gYXBwcm9wcmlhdGUgPGZpbGVuYW1lPkNPUFlJTkc8L2ZpbGVuYW1lPiBsaWNlbnNlIGZpbGVzIHdpdGggb3RoZXIgbGljZW5zaW5nIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGxpY2Vuc2luZywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTc3Nyw3ICs2MDksOCBAQAogICAgICAgICAgICAgc3lzcm9vdCB0aGF0IG1hdGNoZXMgeW91ciB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlc2UgaW5zdGFsbGVycyBpbiB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTgwOCw3ICs2NDEsOCBAQAogICAgICAgICAgICAgcmVjaXBlIGxpc3RlZCBpbgogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgUG9wdWxhdGlvbiBvZiB0aGlzIGRpcmVjdG9yeSBpcyBoYW5kbGVkIHRocm91Z2ggc2hhcmVkIHN0YXRlLCB3aGlsZQotICAgICAgICAgICAgdGhlIHBhdGggaXMgc3BlY2lmaWVkIGJ5IHRoZSA8ZmlsZW5hbWU+Q09NUE9ORU5UU19ESVI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgdGhlIHBhdGggaXMgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPTVBPTkVOVFNfRElSJz48ZmlsZW5hbWU+Q09NUE9ORU5UU19ESVI8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIHZhcmlhYmxlLiBBcGFydCBmcm9tIGEgZmV3IHVudXN1YWwgY2lyY3Vtc3RhbmNlcywgaGFuZGxpbmcgb2YgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzcm9vdHMtY29tcG9uZW50czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBzaG91bGQgYmUKICAgICAgICAgICAgIGF1dG9tYXRpYywgYW5kIHJlY2lwZXMgc2hvdWxkIG5vdCBkaXJlY3RseSByZWZlcmVuY2UKQEAgLTkwNyw3ICs3NDEsOCBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXFlbXV4ODYtc3RhbmRhcmQtYnVpbGQ8L2ZpbGVuYW1lPiBhbmQgdGhlbiBwYXRjaGVkIGJ5IFF1aWx0LgogICAgICAgICAgICAgKFNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1hLXF1aWx0LXdvcmtmbG93Jz5Vc2luZyBRdWlsdCBpbiBZb3VyIFdvcmtmbG93PC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4pCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgaW5mb3JtYXRpb24uKQogICAgICAgICAgICAgV2l0aGluIHRoZSA8ZmlsZW5hbWU+bGludXgtcWVtdXg4Ni1zdGFuZGFyZC1idWlsZDwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKICAgICAgICAgICAgIHN0YW5kYXJkIFF1aWx0IGRpcmVjdG9yaWVzIDxmaWxlbmFtZT5saW51eC0zLjAvcGF0Y2hlczwvZmlsZW5hbWU+CiAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmxpbnV4LTMuMC8ucGM8L2ZpbGVuYW1lPiBhcmUgY3JlYXRlZCwKQEAgLTEwNDEsNyArODc2LDcgQEAKIAogICAgIDxwYXJhPgogICAgICAgICBBcyBtZW50aW9uZWQgcHJldmlvdXNseSwKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4gaXMgdGhlIGNvcmUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiBpcyB0aGUgY29yZQogICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgTWV0YWRhdGEgaGFzIHNldmVyYWwgaW1wb3J0YW50IHN1YmRpdmlzaW9uczoKICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHlsZS5jc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHlsZS5jc3MKaW5kZXggOGVhOGRhYy4uNzA3N2U0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3R5bGUuY3NzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0eWxlLmNzcwpAQCAtNzczLDYgKzc3MywxMCBAQAogICBib3JkZXItY29sb3I6IGJsYWNrOwogfQogCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQorCiAKICAgLyoqKioqKioqKioqIC8KICAvICBncmFwaGljcyAgLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sCmluZGV4IDg3ZGRiOTguLmM3MjZjYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRhc2tzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwKQEAgLTMwMiw3ICszMDIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgPGZpbGVuYW1lPmJpbl9wYWNrYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbiBleGFtcGxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KQEAgLTQ5NSwxMCArNDk1LDExIEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBJbnN0YWxscyB0aGUgZmlsZXMgaW50byB0aGUgaW5kaXZpZHVhbCByZWNpcGUgc3BlY2lmaWMgc3lzcm9vdHMKLSAgICAgICAgICAgIChpLmUuCisgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdC1uYXRpdmU8L2ZpbGVuYW1lPiB1bmRlcgogICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CiAgICAgICAgICAgICBiYXNlZCB1cG9uIHRoZSBkZXBlbmRlbmNpZXMgc3BlY2lmaWVkIGJ5Ci0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4pLgogICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN0YWdpbmcnPjxmaWxlbmFtZT5zdGFnaW5nPC9maWxlbmFtZT48L2xpbms+IgogICAgICAgICAgICAgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC03MTcsNyArNzE4LDcgQEAKICAgICAgICAgICAgIHRoZSBCaXRCYWtlIGVudmlyb25tZW50LgogICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BsYXRkZXYtYXBwZGV2LWRldnB5c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgUHl0aG9uIFNoZWxsPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHVzaW5nIDxmaWxlbmFtZT5kZXZweXNoZWxsPC9maWxlbmFtZT4uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC03MzAsNyArNzMxLDcgQEAKICAgICAgICAgICAgIGRldmVsb3BtZW50LCBkZWJ1Z2dpbmcsIG9yIGJvdGguCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQogICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC04MjAsNyArODIxLDcgQEAKICAgICAgICAgICAgIEJvb3RzIGFuIGltYWdlIGFuZCBwZXJmb3JtcyBydW50aW1lIHRlc3RzIHdpdGhpbiB0aGUgaW1hZ2UuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYXV0b21hdGljYWxseSB0ZXN0aW5nIGltYWdlcywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC04MzgsMTcgKzgzOSw3IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGF1dG9tYXRpY2FsbHkgdGVzdGluZyBpbWFnZXMsIHNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLXZtZGtpbWcnPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX3ZtZGtpbWc8L2ZpbGVuYW1lPjwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBDcmVhdGVzIGEgPGZpbGVuYW1lPi52bWRrPC9maWxlbmFtZT4gaW1hZ2UgZm9yIHVzZSB3aXRoCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnZtd2FyZS5jb20vJz5WTXdhcmU8L3VsaW5rPgotICAgICAgICAgICAgYW5kIGNvbXBhdGlibGUgdmlydHVhbCBtYWNoaW5lIGhvc3RzLgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CkBAIC04OTIsNyArODgzLDcgQEAKICAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGRpZmZjb25maWcKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2dlbmVyYXRpbmctY29uZmlndXJhdGlvbi1maWxlcyc+R2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzPC91bGluaz4iCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC91bGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC05MjcsNyArOTE4LDcgQEAKICAgICAgJCBiaXRiYWtlIGxpbnV4LXlvY3RvIC1jIGtlcm5lbF9jb25maWdjaGVjayAtZgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjZ2VuZXJhdGluZy1jb25maWd1cmF0aW9uLWZpbGVzJz5HZW5lcmF0aW5nIENvbmZpZ3VyYXRpb24gRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjdmFsaWRhdGluZy1jb25maWd1cmF0aW9uJz5WYWxpZGF0aW5nIENvbmZpZ3VyYXRpb248L3VsaW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTk2NSwxMiArOTU2LDkgQEAKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2dlbmVyYXRpbmctY29uZmlndXJhdGlvbi1maWxlcyc+R2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzPC91bGluaz4iCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I3VzaW5nLW1lbnVjb25maWcnPlVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3VsaW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbAogICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb25maWd1cmF0aW9uIHRvb2wuCi0gICAgICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLW1lbnVjb25maWcnPlVzaW5nIDxmaWxlbmFtZT5tZW51Y29uZmlnPC9maWxlbmFtZT48L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC05OTcsOCArOTg1LDggQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBSdW5zIDxmaWxlbmFtZT5tYWtlIG1lbnVjb25maWc8L2ZpbGVuYW1lPiBmb3IgdGhlIGtlcm5lbC4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctbWVudWNvbmZpZyc+VXNpbmcmbmJzcDsmbmJzcDs8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjdXNpbmctbWVudWNvbmZpZyc+VXNpbmcmbmJzcDsmbmJzcDs8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCmluZGV4IGFkMTAxMzkuLjJiMDE3MjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbApAQCAtMjksNyArMjksNyBAQAogICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LQVJDSCc+SzwvbGluaz4KICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTEFCRUxTJz5MPC9saW5rPgogICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz5NPC9saW5rPgotPCEtLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1nbG9zc2FyeS1uJz5OPC9saW5rPiAtLT4KKyAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTkFUSVZFTFNCU1RSSU5HJz5OPC9saW5rPgogICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1PQkpDT1BZJz5PPC9saW5rPgogICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QJz5QPC9saW5rPgogPCEtLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1nbG9zc2FyeS1xJz5RPC9saW5rPiAtLT4KQEAgLTMyMSw3ICszMjEsNyBAQAogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRoZSB2YXJpYWJsZSB3b3Jrcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTQ4OCw3ICs0ODgsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhdXRvbWF0aWNhbGx5LWluY3JlbWVudGluZy1hLWJpbmFyeS1wYWNrYWdlLXJldmlzaW9uLW51bWJlcic+QXV0b21hdGljYWxseSBJbmNyZW1lbnRpbmcgYSBCaW5hcnkgUGFja2FnZSBSZXZpc2lvbiBOdW1iZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01MzYsNyArNTM2LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFRoZSBkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwbGFjZXMgZ2VuZXJhdGVkCiAgICAgICAgICAgICAgICAgICAgIG9iamVjdHMgZHVyaW5nIGEgcmVjaXBlJ3MgYnVpbGQgcHJvY2Vzcy4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBkaXJlY3RvcnkgaXMgdGhlIHNhbWUgYXMgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPgpAQCAtNjI2LDE0ICs2MjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgTXVsdGlsaWIgY29udGV4dC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY29tYmluaW5nLW11bHRpcGxlLXZlcnNpb25zLWxpYnJhcnktZmlsZXMtaW50by1vbmUtaW1hZ2UnPkNvbWJpbmluZyBNdWx0aXBsZSBWZXJzaW9ucyBvZiBMaWJyYXJ5IEZpbGVzIGludG8gT25lIEltYWdlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gTXVsdGlsaWIuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+QkFTRV9MSUI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBkZWZpbmVkIGluCiAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lIGluY2x1ZGUgZmlsZXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIElmIE11bHRpbGliIGlzIG5vdCBiZWluZyB1c2VkLCB0aGUgdmFsdWUgZGVmYXVsdHMgdG8gImxpYiIuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTczNCw3ICs3MzQsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMSIsICJ5ZXMiLCBvciAidHJ1ZSIKICAgICAgICAgICAgICAgICAgICAgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzCiAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPjoKICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCX0RBTkdMSU5HQVBQRU5EU19XQVJOT05MWSA9ICIxIgpAQCAtNzU5LDcgKzc1OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIERpc2sgc3BhY2UgbW9uaXRvcmluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgogICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgbW9uaXRvcmluZywgYWRkIHRoZSA8ZmlsZW5hbWU+QkJfRElTS01PTl9ESVJTPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8geW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBmb3JtOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCX0RJU0tNT05fRElSUyA9ICI8cmVwbGFjZWFibGU+YWN0aW9uPC9yZXBsYWNlYWJsZT4sPHJlcGxhY2VhYmxlPmRpcjwvcmVwbGFjZWFibGU+LDxyZXBsYWNlYWJsZT50aHJlc2hvbGQ8L3JlcGxhY2VhYmxlPiBbLi4uXSIKQEAgLTg1Miw3ICs4NTIsNyBAQAogICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSBkaXNrIHNwYWNlIGFuZCBmcmVlIGlub2RlIHdhcm5pbmcgaW50ZXJ2YWxzLgogICAgICAgICAgICAgICAgICAgICBUbyBzZXQgdGhlc2UgaW50ZXJ2YWxzLCBkZWZpbmUgdGhlIHZhcmlhYmxlIGluIHlvdXIKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTkzNiw3ICs5MzYsNyBAQAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIFNldCB0aGlzIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTE1NCw3ICsxMTU0LDggQEAKIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBsYXllcnMgdG8gZW5hYmxlIGR1cmluZyB0aGUgYnVpbGQuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiB0aGUgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCTEFZRVJTID0gIiBcCkBAIC0xMjUwLDcgKzEyNTEsNyBAQAogICAgICBCQk1VTFRJRk9ORklHID0gImNvbmZpZ0EgY29uZmlnQiBjb25maWdDIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEVhY2ggY29uZmlndXJhdGlvbiBmaWxlIHlvdSB1c2UgbXVzdCByZXNpZGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5J3M8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWc8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgKGUuZy4KICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL211bHRpY29uZmlnL2NvbmZpZ0EuY29uZjwvZmlsZW5hbWU+KS4KQEAgLTEyNjIsNyArMTI2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIGJ1aWxkaW5nIHRhcmdldHMgd2l0aCBtdWx0aXBsZSBjb25maWd1cmF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1idWlsZGluZy10YXJnZXRzLXdpdGgtbXVsdGlwbGUtY29uZmlndXJhdGlvbnMnPkJ1aWxkaW5nIFRhcmdldHMgd2l0aCBNdWx0aXBsZSBDb25maWd1cmF0aW9uczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTI4MCw3ICsxMjgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgcnVuIEJpdEJha2UgZnJvbSBhIGRpcmVjdG9yeSBvdXRzaWRlIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDtidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAogICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgYmUgc3VyZSB0byBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB0byBwb2ludCB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KQEAgLTEyOTgsMjkgKzEyOTksMjkgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCU0VSVkVSJz48Z2xvc3N0ZXJtPkJCU0VSVkVSPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBCQlNFUlZFUltkb2NdID0gIlBvaW50cyB0byB0aGUgc2VydmVyIHRoYXQgcnVucyBtZW1vcnktcmVzaWRlbnQgQml0QmFrZS4iCisgICAgICAgICAgICAgICAgQkJTRVJWRVJbZG9jXSA9ICJQb2ludHMgdG8gdGhlIEJpdEJha2UgcmVtb3RlIHNlcnZlci4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIHNlcnZlciB0aGF0IHJ1bnMgbWVtb3J5LXJlc2lkZW50IEJpdEJha2UuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHNldHVwIHNjcmlwdCBhbmQgc2hvdWxkIG5vdCBiZSBoYW5kLWVkaXRlZC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGlzIG9ubHkgdXNlZCB3aGVuIHlvdSBlbXBsb3kgbWVtb3J5LXJlc2lkZW50Ci0gICAgICAgICAgICAgICAgICAgIEJpdEJha2UuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBzZXR1cCBzY3JpcHQgZXhwb3J0cyB0aGUgdmFsdWUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgSWYgZGVmaW5lZCBpbiB0aGUgQml0QmFrZSBlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCU0VSVkVSPC9maWxlbmFtZT4gcG9pbnRzIHRvIHRoZSBCaXRCYWtlCisgICAgICAgICAgICAgICAgICAgIHJlbW90ZSBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdCB0byBleHBvcnQgdGhlIHZhcmlhYmxlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGVudmlyb25tZW50OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGV4cG9ydCBCQlNFUlZFUj1sb2NhbGhvc3Q6JHBvcnQKKyAgICAgZXhwb3J0IEJCU0VSVkVSPWxvY2FsaG9zdDokcG9ydCIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlNFUlZFUjwvZmlsZW5hbWU+IGlzIHVzZWQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+IHNjcmlwdCwgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgaXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+QkJTRVJWRVI8L2ZpbGVuYW1lPiBhbHNvIGFwcGVhcnMgaW4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSEJBU0VfV0hJVEVMSVNUJz48ZmlsZW5hbWU+QkJfSEFTSEJBU0VfV0hJVEVMSVNUPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCA8ZmlsZW5hbWU+QkJTRVJWRVI8L2ZpbGVuYW1lPiBpcyBleGNsdWRlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIGNoZWNrc3VtIGFuZCBkZXBlbmRlbmN5IGRhdGEuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTM3Myw3ICsxMzc0LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgd29ya3MsIHNlZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2JpbmNvbmZpZy5iYmNsYXNzPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIGNsYXNzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYmluY29uZmlnJz48ZmlsZW5hbWU+YmluY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCkBAIC0xNDU2LDYgKzE0NTcsNTEgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0FTX0FSQ0gnPjxnbG9zc3Rlcm0+QlVJTERfQVNfQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERfQVNfQVJDSFtkb2NdID0gIlNwZWNpZmllcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFzc2VtYmxlciBmbGFncyBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYXNzZW1ibGVyIGZsYWdzIGZvcgorICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgaG9zdC4gQnkgZGVmYXVsdCwgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9BU19BUkNIPC9maWxlbmFtZT4gaXMgZW1wdHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfQ0NfQVJDSCc+PGdsb3NzdGVybT5CVUlMRF9DQ19BUkNIPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9DQ19BUkNIW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgQyBjb21waWxlciBmbGFncyBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgQyBjb21waWxlciBmbGFncyBmb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGhvc3QuIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERfQ0NfQVJDSDwvZmlsZW5hbWU+IGlzIGVtcHR5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0NDTEQnPjxnbG9zc3Rlcm0+QlVJTERfQ0NMRDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERfQ0NMRFtkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlua2VyIGNvbW1hbmQgdG8gYmUgdXNlZCBmb3IgdGhlIGJ1aWxkIGhvc3Qgd2hlbiB0aGUgQyBjb21waWxlciBpcyBiZWluZyB1c2VkIGFzIHRoZSBsaW5rZXIuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsaW5rZXIgY29tbWFuZCB0byBiZSB1c2VkIGZvciB0aGUgYnVpbGQgaG9zdAorICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBDIGNvbXBpbGVyIGlzIGJlaW5nIHVzZWQgYXMgdGhlIGxpbmtlci4gQnkgZGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX0NDTEQ8L2ZpbGVuYW1lPiBwb2ludHMgdG8gR0NDIGFuZCBwYXNzZXMgYXMKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlVJTERfQ0NfQVJDSCc+PGZpbGVuYW1lPkJVSUxEX0NDX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFzc3VtaW5nIDxmaWxlbmFtZT5CVUlMRF9DQ19BUkNIPC9maWxlbmFtZT4gaXMgc2V0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0NGTEFHUyc+PGdsb3NzdGVybT5CVUlMRF9DRkxBR1M8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIEJVSUxEX0NGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBjb21waWxlciB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4iCkBAIC0xNTA1LDYgKzE1NTEsNTIgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0ZDJz48Z2xvc3N0ZXJtPkJVSUxEX0ZDPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9GQ1tkb2NdID0gIlNwZWNpZmllcyB0aGUgRm9ydHJhbiBjb21waWxlciBjb21tYW5kIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIEZvcnRyYW4gY29tcGlsZXIgY29tbWFuZCBmb3IgdGhlIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5CVUlMRF9GQzwvZmlsZW5hbWU+IHBvaW50cyB0bworICAgICAgICAgICAgICAgICAgICBHZm9ydHJhbiBhbmQgcGFzc2VzIGFzIGFyZ3VtZW50cyB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX0NDX0FSQ0gnPjxmaWxlbmFtZT5CVUlMRF9DQ19BUkNIPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhc3N1bWluZyA8ZmlsZW5hbWU+QlVJTERfQ0NfQVJDSDwvZmlsZW5hbWU+IGlzIHNldC4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0xEJz48Z2xvc3N0ZXJtPkJVSUxEX0xEPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBCVUlMRF9MRFtkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlua2VyIGNvbW1hbmQgZm9yIHRoZSBidWlsZCBob3N0LiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbGlua2VyIGNvbW1hbmQgZm9yIHRoZSBidWlsZCBob3N0LiBCeSBkZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERfTEQ8L2ZpbGVuYW1lPiBwb2ludHMgdG8gdGhlIEdOVSBsaW5rZXIgKGxkKQorICAgICAgICAgICAgICAgICAgICBhbmQgcGFzc2VzIGFzIGFyZ3VtZW50cyB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxEX0xEX0FSQ0gnPjxmaWxlbmFtZT5CVUlMRF9MRF9BUkNIPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhc3N1bWluZyA8ZmlsZW5hbWU+QlVJTERfTERfQVJDSDwvZmlsZW5hbWU+IGlzIHNldC4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0xEX0FSQ0gnPjxnbG9zc3Rlcm0+QlVJTERfTERfQVJDSDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQlVJTERfTERfQVJDSFtkb2NdID0gIlNwZWNpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbGlua2VyIGZsYWdzIGZvciB0aGUgYnVpbGQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MgZm9yIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICBob3N0LiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxEX0xEX0FSQ0g8L2ZpbGVuYW1lPiBpcyBlbXB0eS4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0xERkxBR1MnPjxnbG9zc3Rlcm0+QlVJTERfTERGTEFHUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgQlVJTERfTERGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0LiIKQEAgLTE1NzgsNiArMTY3MCwyMSBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfU1RSSVAnPjxnbG9zc3Rlcm0+QlVJTERfU1RSSVA8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJVSUxEX1NUUklQW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIGJlIHVzZWQgdG8gc3RyaXAgZGVidWdnaW5nIHN5bWJvbHMgZnJvbSBiaW5hcmllcyBwcm9kdWNlZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIGJlIHVzZWQgdG8gc3RyaXAgZGVidWdnaW5nIHN5bWJvbHMKKyAgICAgICAgICAgICAgICAgICAgZnJvbSBiaW5hcmllcyBwcm9kdWNlZCBmb3IgdGhlIGJ1aWxkIGhvc3QuIEJ5IGRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMRF9TVFJJUDwvZmlsZW5hbWU+IHBvaW50cyB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRF9QUkVGSVgnPjxmaWxlbmFtZT5CVUlMRF9QUkVGSVg8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fXN0cmlwPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQlVJTERfU1lTJz48Z2xvc3N0ZXJtPkJVSUxEX1NZUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgQlVJTERfU1lTW2RvY10gPSAiVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IHVzZWQgZm9yIG5hdGl2ZSByZWNpcGVzLiIKQEAgLTE2MjYsMTQgKzE3MzMsMTIgQEAKICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgbG9jYXRpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZWZpbmUgdGhpcyBkaXJlY3RvcnkgaW5kaXJlY3RseSB0aHJvdWdoIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLW1lbXJlcy1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIGJ5IHBhc3NpbmcgaW4gYSBCdWlsZCBEaXJlY3RvcnkgcGF0aCB3aGVuIHlvdSBydW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIHNjcmlwdHMuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gdGhlIHNjcmlwdHMgYW5kIGRvIG5vdCBwcm92aWRlIGEgQnVpbGQgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBieSBwYXNzaW5nIGluIGEgQnVpbGQgRGlyZWN0b3J5IHBhdGggd2hlbiB5b3UgcnVuCisgICAgICAgICAgICAgICAgICAgIHRoZSBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gdGhlIHNjcmlwdCBhbmQgZG8gbm90IHByb3ZpZGUgYSBCdWlsZCBEaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgcGF0aCwgdGhlIDxmaWxlbmFtZT5CVUlMRERJUjwvZmlsZW5hbWU+IGRlZmF1bHRzIHRvCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xOTY4LDcgKzIwNzMsNyBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgQml0QmFrZSB1c2VzIHRvIHN0b3JlIGEgY2FjaGUKICAgICAgICAgICAgICAgICAgICAgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgc28gaXQgZG9lcyBub3QgbmVlZCB0byBiZSBwYXJzZWQgZXZlcnkgdGltZSBCaXRCYWtlIGlzCiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtMjEyNiw3ICsyMjMxLDcgQEAKIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPiwKICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgd2hlcmUgZ2VuZXJpYyBsaWNlbnNlIGZpbGVzIHJlc2lkZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtMjIwNyw2ICsyMzEyLDI3IEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1DT01QT05FTlRTX0RJUic+PGdsb3NzdGVybT5DT01QT05FTlRTX0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQ09NUE9ORU5UU19ESVJbZG9jXSA9ICJTdG9yZXMgc3lzcm9vdCBjb21wb25lbnRzIGZvciBlYWNoIHJlY2lwZS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTdG9yZXMgc3lzcm9vdCBjb21wb25lbnRzIGZvciBlYWNoIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09NUE9ORU5UU19ESVI8L2ZpbGVuYW1lPiB3aGVuIGNvbnN0cnVjdGluZworICAgICAgICAgICAgICAgICAgICByZWNpcGUtc3BlY2lmaWMgc3lzcm9vdHMgZm9yIG90aGVyIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUic+PGZpbGVuYW1lPlNUQUdJTkdfRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0tY29tcG9uZW50czwvZmlsZW5hbWU+LiIKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gIjxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3N5c3Jvb3RzLWNvbXBvbmVudHM8L2ZpbGVuYW1lPiIpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPTkZfVkVSU0lPTic+PGdsb3NzdGVybT5DT05GX1ZFUlNJT048L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIENPTkZfVkVSU0lPTltkb2NdID0gIlRyYWNrcyB0aGUgdmVyc2lvbiBvZiBsb2NhbC5jb25mLiAgSW5jcmVhc2VkIGVhY2ggdGltZSBidWlsZC9jb25mLyBjaGFuZ2VzIGluY29tcGF0aWJseS4iCkBAIC0yMjcyLDcgKzIzOTgsNyBAQAogICAgICAgICAgICAgICAgICAgICB0aGFuIDxmaWxlbmFtZT4vdXNyL2JpbjwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIHRoZXNlIHZhcmlhYmxlcyBhdCB0aGUgdG9wIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMjMxNSw3ICsyNDQxLDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGFuIGluaXRyYW1mcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0yNTQ5LDggKzI2NzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Byb3ZpZGluZy1saWNlbnNlLXRleHQnPlByb3ZpZGluZyBMaWNlbnNlIFRleHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gcHJvdmlkaW5nIGxpY2Vuc2UgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gcHJvdmlkaW5nIGxpY2Vuc2UgdGV4dC4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0yNTc3LDggKzI3MDMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Byb3ZpZGluZy1saWNlbnNlLXRleHQnPlByb3ZpZGluZyBMaWNlbnNlIFRleHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gcHJvdmlkaW5nIGxpY2Vuc2UgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gcHJvdmlkaW5nIGxpY2Vuc2UgdGV4dC4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0yNTk1LDcgKzI3MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG9ubHkgc2V0IHRoaXMgdmFyaWFibGUgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGZvdW5kCiAgICAgICAgICAgICAgICAgICAgIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0yODA1LDcgKzI5MzEsOCBAQAogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgVGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIGluIHRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGNvbXBvbmVudHMgYXJlIGluc3RhbGxlZCBieSB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHRhc2suCkBAIC0zMTE2LDcgKzMyNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzIGFuZCBvdGhlciBvdXRwdXQKICAgICAgICAgICAgICAgICAgICAgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uCiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgZGlyZWN0b3J5IHJlc2lkZXMgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBhcyA8ZmlsZW5hbWU+JHtUTVBESVJ9L2RlcGxveTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMzE4OSw3ICszMzE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBpcyBtYWNoaW5lLXNwZWNpZmljIGFzIGl0IGNvbnRhaW5zIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtNQUNISU5FfTwvZmlsZW5hbWU+IG5hbWUuCiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgZGlyZWN0b3J5IHJlc2lkZXMgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBhcyA8ZmlsZW5hbWU+JHtERVBMT1lfRElSfS9pbWFnZXMvJHtNQUNISU5FfS88L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTM0MzksNyArMzU2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFuZCByZXNpZGVzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mCiAgICAgICAgICAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMzQ1Myw3ICszNTgwLDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGxvY2F0ZWQgaW4gYQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9kaXN0cm88L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgZm9yIDxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPiBtdXN0IG5vdCBjb250YWluCiAgICAgICAgICAgICAgICAgICAgIHNwYWNlcywgYW5kIGlzIHR5cGljYWxseSBhbGwgbG93ZXItY2FzZS4KQEAgLTM3OTQsNyArMzkyMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRvIHRvdWNoIGl0LgogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZGlyZWN0b3J5IGlzIDxmaWxlbmFtZT5kb3dubG9hZHM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICNETF9ESVIgPz0gIiR7VE9QRElSfS9kb3dubG9hZHMiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTM4NjIsMTQgKzM5ODksMTQgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUVGSV9QUk9WSURFUic+PGdsb3NzdGVybT5FRklfUFJPVklERVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIEVGSV9QUk9WSURFUltkb2NdID0gIldoZW4gYnVpbGRpbmcgYm9vdGFibGUgaW1hZ2VzIChpLmUuIHdoZXJlIGhkZGltZyBvciB2bWRrIGlzIGluIElNQUdFX0ZTVFlQRVMpLCB0aGUgRUZJX1BST1ZJREVSIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgRUZJIGJvb3Rsb2FkZXIgdG8gdXNlLiIKKyAgICAgICAgICAgICAgICBFRklfUFJPVklERVJbZG9jXSA9ICJXaGVuIGJ1aWxkaW5nIGJvb3RhYmxlIGltYWdlcyAoaS5lLiB3aGVyZSBoZGRpbWcsIGlzbywgb3Igd2ljLnZtZGsgaXMgaW4gSU1BR0VfRlNUWVBFUyksIHRoZSBFRklfUFJPVklERVIgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBFRkkgYm9vdGxvYWRlciB0byB1c2UuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBib290YWJsZSBpbWFnZXMgKGkuZS4gd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhkZGltZzwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT52bWRrPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgaXMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhkZGltZzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+aXNvPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIG9yIDxmaWxlbmFtZT53aWMudm1kazwvZmlsZW5hbWU+IGlzIGluCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPiksCiAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+RUZJX1BST1ZJREVSPC9maWxlbmFtZT4gdmFyaWFibGUgc3BlY2lmaWVzCiAgICAgICAgICAgICAgICAgICAgIHRoZSBFRkkgYm9vdGxvYWRlciB0byB1c2UuCkBAIC00MTE3LDcgKzQyNDQsNyBAQAogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1zb2Z0d2FyZS1mcm9tLWFuLWV4dGVybmFsLXNvdXJjZSc+QnVpbGRpbmcgU29mdHdhcmUgZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTQxNDgsNyArNDI3NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhpcyB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkaW5nLXNvZnR3YXJlLWZyb20tYW4tZXh0ZXJuYWwtc291cmNlJz5CdWlsZGluZyBTb2Z0d2FyZSBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNDE5MSw3ICs0MzE4LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3UgY29uZmlndXJlIHRoaXMgdmFyaWFibGUgaW4geW91cgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIEFsdGhvdWdoIHlvdSBjYW4gdXNlIHRoaXMgdmFyaWFibGUgZnJvbSB3aXRoaW4gYSByZWNpcGUsCiAgICAgICAgICAgICAgICAgICAgIGJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgdGhhdCB5b3UgZG8gbm90LgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KQEAgLTQyMjUsOCArNDM1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGlzIHJlYWQtb25seS4gU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtcmVhZC1vbmx5LXJvb3QtZmlsZXN5c3RlbSc+Q3JlYXRpbmcgYSBSZWFkLU9ubHkgUm9vdCBGaWxlc3lzdGVtPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBNYW51YWwgZm9yIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uCiAKICJ0b29scy1kZWJ1ZyIgLSBBZGRzIGRlYnVnZ2luZyB0b29scyBzdWNoIGFzIGdkYiBhbmQKICAgICAgICAgICAgICAgICBzdHJhY2UuCkBAIC00MjUyLDcgKzQzNzksNyBAQAogICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBjdXN0b21pemUgeW91ciBpbWFnZSBieQogICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGlzIHZhcmlhYmxlLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlLWltYWdlZmVhdHVyZXMnPkN1c3RvbWl6aW5nIEltYWdlcyBVc2luZyBDdXN0b20gPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC00NTQxLDcgKzQ2NjgsNyBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9iaW48L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgbGlzdCBvZiB0aGVzZSB2YXJpYWJsZXMgYXQgdGhlIHRvcCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBhbHNvIGZpbmQgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSB2YXJpb3VzCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU18qPC9maWxlbmFtZT4gdmFyaWFibGVzIGluIHRoaXMgZmlsZS4KICAgICAgICAgICAgICAgICA8L25vdGU+CkBAIC00NjE1LDcgKzQ3NDIsOCBAQAogICAgICAgICAgICAgICAgICAgICBpbiBhIGRpcmVjdG9yeSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCBmaWxlLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoZW4gZXh0ZW5kaW5nIDxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoZW4gZXh0ZW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgICAgICBiZSBzdXJlIHRvIHVzZSB0aGUgaW1tZWRpYXRlIGV4cGFuc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT46PTwvZmlsZW5hbWU+KSBvcGVyYXRvci4KICAgICAgICAgICAgICAgICAgICAgICAgIEltbWVkaWF0ZSBleHBhbnNpb24gbWFrZXMgc3VyZSB0aGF0IEJpdEJha2UgZXZhbHVhdGVzCkBAIC00NjI0LDYgKzQ3NTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc29tZSBsYXRlciB0aW1lIHdoZW4gZXhwYW5zaW9uIG1pZ2h0IHJlc3VsdCBpbiBhCiAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdGhhdCBkb2VzIG5vdCBjb250YWluIHRoZSBmaWxlcyB5b3UgbmVlZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWxzbywgaW5jbHVkZSB0aGUgdHJhaWxpbmcgc2VwYXJhdGluZyBjb2xvbgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIGlmIHlvdSBhcmUgcHJlcGVuZGluZy4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0cmFpbGluZyBjb2xvbiBjaGFyYWN0ZXIgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgeW91CkBAIC00NjQxLDEzICs0NzcwLDM3IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBmaW5hbCBleGFtcGxlIHRoYXQgc3BlY2lmaWNhbGx5IGFkZHMgdGhyZWUgcGF0aHM6CisgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIHNwZWNpZmljYWxseSBhZGRzIHRocmVlIHBhdGhzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICJwYXRoXzE6cGF0aF8yOnBhdGhfMzoiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBmaW5hbCBleGFtcGxlIHNob3dzIGhvdyB5b3UgY2FuIGV4dGVuZCB0aGUgc2VhcmNoIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgYW5kIGluY2x1ZGUgYQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4tc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUsIHdoaWNoIGlzIHVzZWZ1bCBpbiBhIEJTUCBsYXllcjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZF9pbnRlbC14ODYtY29tbW9uIDo9ICIke1RISVNESVJ9LyR7UE59OiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgc3RhdGVtZW50IGFwcGVhcnMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by1kZXYuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaAorICAgICAgICAgICAgICAgICAgICBpcyBmb3VuZCBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPgorICAgICAgICAgICAgICAgICAgICBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSwgdGhlIG1hY2hpbmUgb3ZlcnJpZGUgaXMgYSBzcGVjaWFsCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiBmb3IgbXVsdGlwbGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBsYXllciB0aGF0IHN1cHBvcnRzIGEgc2luZ2xlIEJTUCwgdGhlIG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBqdXN0IGJlIHRoZSB2YWx1ZSBvZiA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEJ5IHByZXBlbmRpbmcgcGF0aHMgaW4gPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGZpbGVzLCB5b3UgYWxsb3cgbXVsdGlwbGUgYXBwZW5kIGZpbGVzIHRoYXQgcmVzaWRlIGluCiAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBsYXllcnMgYnV0IGFyZSB1c2VkIGZvciB0aGUgc2FtZSByZWNpcGUgdG8KQEAgLTQ3MDcsNyArNDg2MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgPGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gdGhlIDxmaWxlbmFtZT5iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBjbGFzcyBmb3VuZCBpbiA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgRklMRVNQQVRIID0gIiR7QGJhc2Vfc2V0X2ZpbGVzcGF0aChbIiR7RklMRV9ESVJOQU1FfS8ke0JQfSIsIFwKICAgICAgICAgIiR7RklMRV9ESVJOQU1FfS8ke0JQTn0iLCAiJHtGSUxFX0RJUk5BTUV9L2ZpbGVzIl0sIGQpfSIKQEAgLTQ3NTMsNyArNDkwNiw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlIDxmaWxlbmFtZT5mcy1wZXJtcy50eHQ8L2ZpbGVuYW1lPiwgd2hpY2gKICAgICAgICAgICAgICAgICAgICAgaXMgbG9jYXRlZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvZmlsZXM8L2ZpbGVuYW1lPiBmb2xkZXIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjcmVhdGUgeW91ciBvd24gZmlsZSBwZXJtaXNzaW9ucyBzZXR0aW5nIHRhYmxlLCB5b3Ugc2hvdWxkIHBsYWNlIGl0IGluIHlvdXIKICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgb3IgdGhlIGRpc3RybydzIGxheWVyLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTQ3NjEsNyArNDkxNCw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFlvdSBkZWZpbmUgdGhlIDxmaWxlbmFtZT5GSUxFU1lTVEVNX1BFUk1TX1RBQkxFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sIHRvCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiwgdG8KICAgICAgICAgICAgICAgICAgICAgcG9pbnQgdG8geW91ciBjdXN0b20gPGZpbGVuYW1lPmZzLXBlcm1zLnR4dDwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgbW9yZSB0aGFuIGEgc2luZ2xlIGZpbGUgcGVybWlzc2lvbnMgc2V0dGluZyB0YWJsZS4KICAgICAgICAgICAgICAgICAgICAgVGhlIHBhdGhzIHlvdSBzcGVjaWZ5IHRvIHRoZXNlIGZpbGVzIG11c3QgYmUgZGVmaW5lZCB3aXRoaW4gdGhlCkBAIC01NTM5LDcgKzU2OTIsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzczwvZmlsZW5hbWU+IGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTU2MTMsNyArNTc2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IGNvbmZpZ3VyZSB0aGlzIHZhcmlhYmxlIGluIGFuIGltYWdlIHJlY2lwZS4KICAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggeW91IGNhbiB1c2UgdGhpcyB2YXJpYWJsZSBmcm9tIHlvdXIKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAogICAgICAgICAgICAgICAgICAgICBiZXN0IHByYWN0aWNlcyBkaWN0YXRlIHRoYXQgeW91IGRvIG5vdC4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgZXh0cmEgZmVhdHVyZXMgZnJvbSBvdXRzaWRlIHRoZSBpbWFnZSByZWNpcGUsCkBAIC01NjMzLDcgKzU3ODYsNyBAQAogICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBjdXN0b21pemUgeW91ciBpbWFnZSBieQogICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGlzIHZhcmlhYmxlLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlLWltYWdlZmVhdHVyZXMnPkN1c3RvbWl6aW5nIEltYWdlcyBVc2luZyBDdXN0b20gPGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01NjYyLDIwICs1ODE1LDI1IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9UWVBFUyc+PGZpbGVuYW1lPklNQUdFX1RZUEVTPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYWRkICJsaXZlIiB0byA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGluc2lkZSBhbiBpbWFnZSByZWNpcGUsIGJlIHN1cmUgdGhhdCB5b3UgZG8gc28gcHJpb3IgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICJpbmhlcml0IGltYWdlIiBsaW5lIG9mIHRoZSByZWNpcGUgb3IgdGhlIGxpdmUgaW1hZ2Ugd2lsbAotICAgICAgICAgICAgICAgICAgICBub3QgYnVpbGQuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIER1ZSB0byB0aGUgd2F5IHRoaXMgdmFyaWFibGUgaXMgcHJvY2Vzc2VkLCBpdCBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgdG8gdXBkYXRlIGl0cyBjb250ZW50cyB1c2luZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+LiBUbyBhZGQgb25lIG9yIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCBvcHRpb25zIHRvIHRoaXMgdmFyaWFibGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+IG9wZXJhdG9yIG11c3QgYmUgdXNlZC4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhZGQgImxpdmUiIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiBpbnNpZGUgYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUsIGJlIHN1cmUgdGhhdCB5b3UgZG8gc28gcHJpb3IgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluaGVyaXQgaW1hZ2UiIGxpbmUgb2YgdGhlIHJlY2lwZSBvciB0aGUgbGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHdpbGwgbm90IGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1ZSB0byB0aGUgd2F5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VzIHRoaXMgdmFyaWFibGUsIHlvdSBjYW5ub3QgdXBkYXRlIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGJ5IHVzaW5nIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCB1c2UgdGhlIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgdG8gYWRkIG9uZSBvciBtb3JlIG9wdGlvbnMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNTcwMyw3ICs1ODYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZSBhZmZlY3RlZCBieSA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGFuIGluaXRyYW1mcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkaW5nLWFuLWluaXRyYW1mcy1pbWFnZSc+QnVpbGRpbmcgYW4gSW5pdGlhbCBSQU0gRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBJbWFnZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtNjE4OCw3ICs2MzQ2LDYgQEAKICAgICAgamZmczIKICAgICAgamZmczIuc3VtCiAgICAgIG11bHRpdWJpCi0gICAgIHFjb3cyCiAgICAgIHNxdWFzaGZzCiAgICAgIHNxdWFzaGZzLWx6bwogICAgICBzcXVhc2hmcy14egpAQCAtNjE5OSw4ICs2MzU2LDYgQEAKICAgICAgdGFyLnh6CiAgICAgIHViaQogICAgICB1YmlmcwotICAgICB2ZGkKLSAgICAgdm1kawogICAgICB3aWMKICAgICAgd2ljLmJ6MgogICAgICB3aWMuZ3oKQEAgLTYyMTIsNyArNjM2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZXNlIHR5cGVzIG9mIGltYWdlcywgc2VlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMqLmJiY2xhc3M8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC02NDU1LDcgKzY2MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlLCB3aGljaCBpcyBzZXQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LAogICAgICAgICAgICAgICAgICAgICBpcyAiY3Bpby5neiIuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCBrZXJuZWwncyBpbml0cmFtZnMgbWVjaGFuaXNtLCBhcyBvcHBvc2VkIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICBpbml0aWFsIFJBTSBmaWxlc3lzdGVtCkBAIC02NDc3LDMyICs2NjMyLDM4IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgYW4gaW1hZ2UgcmVjaXBlIHRoYXQgaXMgdXNlZCB0byBidWlsZCBhbiBpbml0aWFsCiAgICAgICAgICAgICAgICAgICAgIFJBTSBmaWxlc3lzdGVtIChpbml0cmFtZnMpIGltYWdlLgotICAgICAgICAgICAgICAgICAgICBBbiBpbml0cmFtZnMgcHJvdmlkZXMgYSB0ZW1wb3Jhcnkgcm9vdCBmaWxlc3lzdGVtIHVzZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgIGVhcmx5IHN5c3RlbSBpbml0aWFsaXphdGlvbiAoZS5nLiBsb2FkaW5nIG9mIG1vZHVsZXMKLSAgICAgICAgICAgICAgICAgICAgbmVlZGVkIHRvIGxvY2F0ZSBhbmQgbW91bnQgdGhlICJyZWFsIiByb290IGZpbGVzeXN0ZW0pLgotICAgICAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWVkIHJlY2lwZSBpcyBhZGRlZCBhcyBhIGRlcGVuZGVuY3kgb2YgdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSByZWNpcGUgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICByZWNpcGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBmb3IgYW4gZXhhbXBsZSBpbml0cmFtZnMgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICBUbyBzZWxlY3QgdGhpcyByZWNpcGUgdG8gcHJvdmlkZSB0aGUgaW5pdHJhbWZzLAotICAgICAgICAgICAgICAgICAgICBzZXQgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+IHRvCi0gICAgICAgICAgICAgICAgICAgICJjb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzIi4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgY2F1c2VzIGFuIGFkZGl0aW9uYWwgcmVjaXBlIHRvIGJlIGJ1aWx0IGFzCisgICAgICAgICAgICAgICAgICAgIGEgZGVwZW5kZW5jeSB0byB3aGF0ZXZlciByb290IGZpbGVzeXN0ZW0gcmVjaXBlIHlvdQorICAgICAgICAgICAgICAgICAgICBtaWdodCBiZSB1c2luZyAoZS5nLiA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBUaGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSB5b3UgcHJvdmlkZSBzaG91bGQgc2V0CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0bworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5JVFJBTUZTX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTklUUkFNRlNfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW4gaW5pdHJhbWZzIGltYWdlIHByb3ZpZGVzIGEgdGVtcG9yYXJ5IHJvb3QgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciBlYXJseSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKGUuZy4gbG9hZGluZyBvZgorICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIG5lZWRlZCB0byBsb2NhdGUgYW5kIG1vdW50IHRoZSAicmVhbCIgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtKS4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSBzaG91bGQgc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5JVFJBTUZTX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTklUUkFNRlNfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYW4gZXhhbXBsZSBpbml0cmFtZnMgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gc2VsZWN0IHRoaXMgc2FtcGxlIHJlY2lwZSBhcyB0aGUgb25lIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIHRoZSBpbml0cmFtZnMgaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAiY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyIuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBieSByZWZlcmVuY2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LAogICAgICAgICAgICAgICAgICAgICB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBjbGFzcywgYW5kIHRoZQpAQCAtNjUxMyw3ICs2Njc0LDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT4gaXMgZW1wdHksIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0LCB0aGVuIG5vIGluaXRyYW1mcyBpcyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQsIHRoZW4gbm8gaW5pdHJhbWZzIGltYWdlIGlzIGJ1aWx0LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNjUyMSwxMCArNjY4MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGFsbG93cyB0aGUgZ2VuZXJhdGVkIGltYWdlIHRvIGJlIGJ1bmRsZWQKICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZSBrZXJuZWwgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgZm9yIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGFuIGluaXRyYW1mcywgc2VlCi0gICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBhbiBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkaW5nLWFuLWluaXRyYW1mcy1pbWFnZSc+QnVpbGRpbmcgYW4gSW5pdGlhbCBSQU0gRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBJbWFnZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNjU2Miw3ICs2NzIzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbWJpbmVkIGJpbmFyeSBpcyBkZXBvc2l0ZWQgaW50byB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHdoaWNoIGlzIHBhcnQKICAgICAgICAgICAgICAgICAgICAgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTY1OTEsNyArNjc1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIEFsc28sIGZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBhbiBpbml0cmFtZnMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkaW5nLWFuLWluaXRyYW1mcy1pbWFnZSc+QnVpbGRpbmcgYW4gSW5pdGlhbCBSQU0gRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBJbWFnZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNjg2MiwxMiArNzAyMywxMyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBWYWx1ZXMgZm9yIHRoaXMgdmFyaWFibGUgYXJlIHNldCBpbiB0aGUga2VybmVsJ3MgcmVjaXBlCiAgICAgICAgICAgICAgICAgICAgIGZpbGUgYW5kIHRoZSBrZXJuZWwncyBhcHBlbmQgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Qga2VybmVsIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgaXMgYmFzZWQgb24gdGhlIExpbnV4IDMuMTQga2VybmVsLCB0aGUga2VybmVsIHJlY2lwZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgIGlzIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b18zLjE0LmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyPC9maWxlbmFtZT4ga2VybmVsLCB0aGUga2VybmVsCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBmaWxlIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZm9yIGEga2VybmVsIHJlY2lwZSBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+IGlzIHNldCBhcyBmb2xsb3dzIGluIHRoYXQKKyAgICAgICAgICAgICAgICAgICAga2VybmVsIHJlY2lwZSBmaWxlOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEtCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTY4NzcsMjEgKzcwMzksMjUgQEAKICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBhbHNvIHVzZWQgZnJvbSB0aGUga2VybmVsJ3MgYXBwZW5kIGZpbGUKICAgICAgICAgICAgICAgICAgICAgdG8gaWRlbnRpZnkgdGhlIGtlcm5lbCBicmFuY2ggc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyCiAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgb3IgdGFyZ2V0IGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICBUaGUga2VybmVsJ3MgYXBwZW5kIGZpbGUgaXMgbG9jYXRlZCBpbiB0aGUgQlNQIGxheWVyIGZvcgotICAgICAgICAgICAgICAgICAgICBhIGdpdmVuIG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUga2VybmVsIGFwcGVuZCBmaWxlIGZvciB0aGUgRW1lbmxvdyBCU1AgaXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgYW5kIGlzIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWVtZW5sb3cvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fMy4xNC5iYmFwcGVuZDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSB0aGUgcmVsYXRlZCBzdGF0ZW1lbnRzIGZyb20gdGhlIGFwcGVuZCBmaWxlOgorICAgICAgICAgICAgICAgICAgICBDb250aW51aW5nIHdpdGggdGhlIHByZXZpb3VzIGtlcm5lbCBleGFtcGxlLCB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kIGZpbGUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQ8L2ZpbGVuYW1lPikgaXMgbG9jYXRlZAorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgQlNQIGxheWVyIGZvciBhIGdpdmVuIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgYXBwZW5kIGZpbGUgZm9yIHRoZSBCZWFnbGVib25lLAorICAgICAgICAgICAgICAgICAgICBFZGdlUm91dGVyLCBhbmQgZ2VuZXJpYyB2ZXJzaW9ucyBvZiBib3RoIDMyIGFuZCA2NC1iaXQgSUEKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMgKDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+KSBpcyBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSB0aGUgcmVsYXRlZCBzdGF0ZW1lbnRzIGZyb20gdGhhdCBhcHBlbmQgZmlsZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZW1lbmxvdy1ub2VtZ2QgPSAiZW1lbmxvdy1ub2VtZ2QiCi0gICAgIEtNQUNISU5FX2VtZW5sb3ctbm9lbWdkID0gImVtZW5sb3ciCi0gICAgIEtCUkFOQ0hfZW1lbmxvdy1ub2VtZ2QgPSAic3RhbmRhcmQvYmFzZSIKLSAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9lbWVubG93LW5vZW1nZCA9ICIgZmVhdHVyZXMvZHJtLWdtYTUwMC9kcm0tZ21hNTAwLnNjYyIKKyAgICAgS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJzdGFuZGFyZC9iYXNlIgorICAgICBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCisgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgorICAgICBLQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKKyAgICAgS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT4gc3RhdGVtZW50IGlkZW50aWZpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYnJhbmNoIHRvIHVzZSB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgRW1lbmxvdwotICAgICAgICAgICAgICAgICAgICAgICAgQlNQLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpZGVudGlmeQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBicmFuY2ggdG8gdXNlIHdoZW4gYnVpbGRpbmcgZm9yIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBCU1AuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNjkxMywyMCArNzA3OSwyMyBAQAogICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHdoZW4gdXNpbmcgYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gdG8KICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlIGEga2VybmVsIGR1cmluZyBhIGJ1aWxkLCB5b3UgcGxhY2UgdGhlCiAgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4geW91ciBsYXllciBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgeW91IHdvdWxkCi0gICAgICAgICAgICAgICAgICAgIHBhdGNoIGZpbGVzIGFuZCBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGVzIChpLmUuCisgICAgICAgICAgICAgICAgICAgIHBsYWNlIHBhdGNoIGZpbGVzIGFuZCBjb25maWd1cmF0aW9uIGZyYWdtZW50IGZpbGVzIChpLmUuCiAgICAgICAgICAgICAgICAgICAgICJvdXQtb2YtdHJlZSIpLgogICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB5b3Ugd2FudCB0byB1c2UgYSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgZmlsZSB0aGF0IGlzIHBhcnQgb2YgdGhlIGtlcm5lbCB0cmVlIChpLmUuICJpbi10cmVlIiksCiAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0JVSUxEX0RFRkNPTkZJRzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvIHBvaW50Ci0gICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktCVUlMRF9ERUZDT05GSUc8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhbmQgYXBwZW5kCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB0aGUgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFRvIHVzZSB0aGUgdmFyaWFibGUsIHNldCBpdCBpbiB0aGUgYXBwZW5kIGZpbGUgZm9yIHlvdXIKICAgICAgICAgICAgICAgICAgICAga2VybmVsIHJlY2lwZSB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS0JVSUxEX0RFRkNPTkZJR188bGluayBsaW5rZW5kPSd2YXItS01BQ0hJTkUnPktNQUNISU5FPC9saW5rPiA/PSA8cmVwbGFjZWFibGU+ZGVmY29uZmlnX2ZpbGU8L3JlcGxhY2VhYmxlPgorICAgICBLQlVJTERfREVGQ09ORklHXzxyZXBsYWNlYWJsZT5LTUFDSElORTwvcmVwbGFjZWFibGU+ID89IDxyZXBsYWNlYWJsZT5kZWZjb25maWdfZmlsZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZyb20gYSAicmFzcGJlcnJ5cGkyIgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiBidWlsZCB0aGF0IHVzZXMgYQpAQCAtNzAyOCw0MSArNzE5Nyw1MCBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0ZFQVRVUkVTJz48Z2xvc3N0ZXJtPktFUk5FTF9GRUFUVVJFUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgS0VSTkVMX0ZFQVRVUkVTW2RvY10gPSAiSW5jbHVkZXMgYWRkaXRpb25hbCBtZXRhZGF0YSBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBHaXQgcmVwb3NpdG9yeS4gVGhlIG1ldGFkYXRhIHlvdSBhZGQgdGhyb3VnaCB0aGlzIHZhcmlhYmxlIGluY2x1ZGVzIGNvbmZpZyBmcmFnbWVudHMgYW5kIGZlYXR1cmVzIGRlc2NyaXB0aW9ucy4iCisgICAgICAgICAgICAgICAgS0VSTkVMX0ZFQVRVUkVTW2RvY10gPSAiSW5jbHVkZXMgYWRkaXRpb25hbCBrZXJuZWwgbWV0YWRhdGEuIFRoZSBtZXRhZGF0YSB5b3UgYWRkIHRocm91Z2ggdGhpcyB2YXJpYWJsZSBpbmNsdWRlcyBjb25maWcgZnJhZ21lbnRzIGFuZCBmZWF0dXJlcyBkZXNjcmlwdGlvbnMuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgSW5jbHVkZXMgYWRkaXRpb25hbCBtZXRhZGF0YSBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgSW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHRoZSBkZWZhdWx0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIEluY2x1ZGVzIGFkZGl0aW9uYWwga2VybmVsIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgdGhlIGRlZmF1bHQgQm9hcmQgU3VwcG9ydAorICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyAoQlNQcykKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgogICAgICAgICAgICAgICAgICAgICBpcyBwcm92aWRlZCB0aHJvdWdoCiAgICAgICAgICAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPSd2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQgPGxpbmsgbGlua2VuZD0ndmFyLUtCUkFOQ0gnPjxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5LRVJORUxfRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0byBmdXJ0aGVyCi0gICAgICAgICAgICAgICAgICAgIGFkZCBtZXRhZGF0YSBmb3IgYWxsIEJTUHMuCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0JSQU5DSCc+PGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZyb20gd2l0aGluIHRoZSBrZXJuZWwgcmVjaXBlIG9yIGtlcm5lbCBhcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgZmlsZSB0byBmdXJ0aGVyIGFkZCBtZXRhZGF0YSBmb3IgYWxsIEJTUHMgb3Igc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgQlNQcy4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1ldGFkYXRhIHlvdSBhZGQgdGhyb3VnaCB0aGlzIHZhcmlhYmxlIGluY2x1ZGVzIGNvbmZpZyBmcmFnbWVudHMgYW5kCi0gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIGRlc2NyaXB0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgVGhlIG1ldGFkYXRhIHlvdSBhZGQgdGhyb3VnaCB0aGlzIHZhcmlhYmxlIGluY2x1ZGVzIGNvbmZpZworICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgYW5kIGZlYXR1cmVzIGRlc2NyaXB0aW9ucywKICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdXN1YWxseSBpbmNsdWRlcyBwYXRjaGVzIGFzIHdlbGwgYXMgY29uZmlnIGZyYWdtZW50cy4KLSAgICAgICAgICAgICAgICAgICAgWW91IHR5cGljYWxseSBvdmVycmlkZSB0aGUgPGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgIGZvciBhIHNwZWNpZmljIG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIEluIHRoaXMgd2F5LCB5b3UgY2FuIHByb3ZpZGUgdmFsaWRhdGVkLCBidXQgb3B0aW9uYWwsIHNldHMgb2Yga2VybmVsCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IHR5cGljYWxseSBvdmVycmlkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktFUk5FTF9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGZvciBhCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgd2F5LCB5b3UgY2FuIHByb3ZpZGUgdmFsaWRhdGVkLCBidXQgb3B0aW9uYWwsCisgICAgICAgICAgICAgICAgICAgIHNldHMgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcy4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgYWRkcyA8ZmlsZW5hbWU+bmV0ZmlsdGVyPC9maWxlbmFtZT4gdG8gYWxsCi0gICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbHMgYW5kIGFkZHMgc291bmQgc3VwcG9ydCB0byB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lOgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by1ydF80LjEyPC9maWxlbmFtZT4ga2VybmVsIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBhZGRzICJuZXRmaWx0ZXIiIGFuZCAidGFza3N0YXRzIiBmZWF0dXJlcyB0byBhbGwgQlNQcworICAgICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzICJ2aXJ0aW8iIGNvbmZpZ3VyYXRpb25zIHRvIGFsbCBRRU1VIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGFzdCB0d28gc3RhdGVtZW50cyBhZGQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdG8KKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ZWQgbWFjaGluZSB0eXBlczoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIEFkZCBuZXRmaWx0ZXIgdG8gYWxsIGxpbnV4LXlvY3RvIGtlcm5lbHMKLSAgICAgS0VSTkVMX0ZFQVRVUkVTPSJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKLQotICAgICAjIEFkZCBzb3VuZCBzdXBwb3J0IHRvIHRoZSBxZW11eDg2IG1hY2hpbmUKLSAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyIKKyAgICAgS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKKyAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKKyAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKKyAgICAgS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTc3MzksNyArNzkxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DT1BZX0xJQ19NQU5JRkVTVCc+PGZpbGVuYW1lPkNPUFlfTElDX01BTklGRVNUPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBhbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwcm92aWRpbmctbGljZW5zZS10ZXh0Jz5Qcm92aWRpbmcgTGljZW5zZSBUZXh0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC03ODM4LDcgKzgwMTYsNyBAQAogICAgICAgICAgICAgICAgICAgICBkZWZpbmVzIHRoZSBzZWFyY2gKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIHVzZWQgYnkgdGhlIGtlcm5lbCB0b29scyB0byBmaW5kIHRoZSBhcHByb3ByaWF0ZQogICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiB3aXRoaW4gdGhlIGtlcm5lbAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHdpdGggd2hpY2ggdG8gYnVpbGQgb3V0IHRoZSBzb3VyY2VzIGFuZCBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtNzk0Miw3ICs4MTIwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgZGV2aWNlIGZvciB3aGljaCB0aGUgaW1hZ2UgaXMgYnVpbHQuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBkZWZpbmUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gaXMgc2V0IHRvCiAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2Iiwgd2hpY2ggaXMgYW4geDg2LWJhc2VkIGFyY2hpdGVjdHVyZSBtYWNoaW5lIHRvCiAgICAgICAgICAgICAgICAgICAgIGJlIGVtdWxhdGVkIHVzaW5nIFFFTVU6CkBAIC03OTU3LDcgKzgxMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICBUaHVzLCB3aGVuIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gaXMgc2V0IHRvICJxZW11eDg2IiB0aGVyZQogICAgICAgICAgICAgICAgICAgICBleGlzdHMgdGhlIGNvcnJlc3BvbmRpbmcgPGZpbGVuYW1lPnFlbXV4ODYuY29uZjwvZmlsZW5hbWU+IG1hY2hpbmUKICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLCB3aGljaCBjYW4gYmUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmU8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTg3MDgsNiArODg4NiwyOSBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTk9BVVRPUEFDS0FHRURFQlVHJz48Z2xvc3N0ZXJtPk5PQVVUT1BBQ0tBR0VERUJVRzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTk9BVVRPUEFDS0FHRURFQlVHW2RvY10gPSAiRGlzYWJsZXMgYXV0byBwYWNrYWdlIGZyb20gc3BsaXR0aW5nIC5kZWJ1ZyBmaWxlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBEaXNhYmxlcyBhdXRvIHBhY2thZ2UgZnJvbSBzcGxpdHRpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+IGZpbGVzLiBJZiBhIHJlY2lwZSByZXF1aXJlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVNfJHtQTn0tZGJnPC9maWxlbmFtZT4gdG8gYmUgc2V0IG1hbnVhbGx5LAorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPk5PQVVUT1BBQ0tBR0VERUJVRzwvZmlsZW5hbWU+IGNhbiBiZSBkZWZpbmVkCisgICAgICAgICAgICAgICAgICAgIGFsbG93aW5nIHlvdSB0byBkZWZpbmUgdGhlIGNvbnRlbnQgb2YgdGhlIGRlYnVnIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE5PQVVUT1BBQ0tBR0VERUJVRyA9ICIxIgorICAgICBGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfS8ke1FUX0RJUl9OQU1FfS9RdC8qIgorICAgICBGSUxFU18ke1BOfS1kYmcgPSAiL3Vzci9zcmMvZGVidWcvIgorICAgICBGSUxFU18ke1FUX0JBU0VfTkFNRX0tZGVtb3MtZG9jID0gIiR7ZG9jZGlyfS8ke1FUX0RJUl9OQU1FfS9xY2gvcXQucWNoIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTk9IREQnPjxnbG9zc3Rlcm0+Tk9IREQ8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIE5PSEREW2RvY10gPSAiQ2F1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHNraXAgYnVpbGRpbmcgdGhlIC5oZGRpbWcgaW1hZ2UuIgpAQCAtODc5OCw3ICs4OTk5LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2JpbmNvbmZpZy5iYmNsYXNzPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBmb3IgZGV0YWlscyBvbiBob3cgdGhpcyBjbGFzcyBhcHBsaWVzIHRoZXNlIGFkZGl0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgc2VkIGNvbW1hbmQgYXJndW1lbnRzLgogICAgICAgICAgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGUKQEAgLTg4NjMsNyArOTA2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tYyBkZXZzaGVsbDwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSBvcHRpb24pLgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L3VsaW5rPiIgc2VjdGlvbgotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtODg5MSwxOSArOTA5MiwxNyBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIHRoZSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKICAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGlzIHNvdXJjZWQuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IG1ha2VzIHR3byB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0cyBhdmFpbGFibGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBydW4gb25lIG9mIHRoZXNlIHNjcmlwdHMsIHRoZQorICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhIHRvcC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICBzZXR1cCBzY3JpcHQ6CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhpcyBzY3JpcHQsIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T0VST09UPC9maWxlbmFtZT4gdmFyaWFibGUgcmVzb2x2ZXMgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRoZSBzY3JpcHQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIGlzIHVzZWQsCi0gICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgaW5pdGlhbGl6YXRpb24gc2NyaXB0cy4KKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBpbml0aWFsaXphdGlvbiBzY3JpcHQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtOTA4Niw3ICs5Mjg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBmb3VuZCBpbgogICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBmb2xkZXIgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiwKICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBwYWNrYWdlIG1hbmFnZXIgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgdXNlcyB3aGVuIHBhY2thZ2luZyBkYXRhLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTkxNzksNyArOTM3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCBkZWJ1Z2dpbmcgdXNpbmcgR0RCIGJ5IHJlYWRpbmcKICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zyc+RGVidWdnaW5nIFdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpIFJlbW90ZWx5PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC05NDY2LDcgKzk2NjUsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGFuIGluaXRyYW1mcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC05NTIyLDcgKzk3MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gcnVubmluZyBwb3N0LWluc3RhbGxhdGlvbiBzY3JpcHRzLCBzZWUKICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXBvc3QtaW5zdGFsbGF0aW9uLXNjcmlwdHMnPlBvc3QtSW5zdGFsbGF0aW9uIFNjcmlwdHM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTk2NTQsNyArOTg1Myw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48Z2xvc3N0ZXJtPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1NbZG9jXSA9ICJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBnZW5lcmF0ZWQgZnJvbSBQQUNLQUdFQ09ORklHLiIKKyAgICAgICAgICAgICAgICBQQUNLQUdFQ09ORklHX0NPTkZBUkdTW2RvY10gPSAiQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgZ2VuZXJhdGVkIGZyb20gdGhlIFBBQ0tBR0VDT05GSUcgc2V0dGluZy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC05Nzg5LDcgKzk5ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBob3cgdG8gdXNlIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVNfRFlOQU1JQzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHdoZW4geW91IGFyZSBzcGxpdHRpbmcgcGFja2FnZXMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hhbmRsaW5nLW9wdGlvbmFsLW1vZHVsZS1wYWNrYWdpbmcnPkhhbmRsaW5nIE9wdGlvbmFsIE1vZHVsZSBQYWNrYWdpbmc8L3VsaW5rPiIgc2VjdGlvbgotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC05ODU0LDcgKzEwMDUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgYXMgYSB3b3JrYXJvdW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGFkZHJlc3NpbmcgcmFjZSBjb25kaXRpb25zLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGVidWdnaW5nLXBhcmFsbGVsLW1ha2UtcmFjZXMnPkRlYnVnZ2luZyBQYXJhbGxlbCBNYWtlIFJhY2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgIEZvciBzaW5nbGUgc29ja2V0IHN5c3RlbXMgKGkuZS4gb25lIENQVSksIHlvdSBzaG91bGQgbm90CiAgICAgICAgICAgICAgICAgICAgIGhhdmUgdG8gb3ZlcnJpZGUgdGhpcyB2YXJpYWJsZSB0byBnYWluIG9wdGltYWwgcGFyYWxsZWxpc20KQEAgLTk5MDMsNyArMTAxMDIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBhcyBhIHdvcmthcm91bmQuCiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWRkcmVzc2luZyByYWNlIGNvbmRpdGlvbnMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZWJ1Z2dpbmctcGFyYWxsZWwtbWFrZS1yYWNlcyc+RGVidWdnaW5nIFBhcmFsbGVsIE1ha2UgUmFjZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTEwMzg1LDcgKzEwNTg1LDggQEAKICAgICAgICAgICAgICAgICAgICAgY3VtYmVyc29tZSBhbmQgZXJyb3ItcHJvbmUsIGFuIGF1dG9tYXRlZCBzb2x1dGlvbiBleGlzdHMuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC1hLXByLXNlcnZpY2UnPldvcmtpbmcgV2l0aCBhIFBSIFNlcnZpY2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTA0MDksNiArMTA2MTAsOCBAQAogICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID0gInhzZXJ2ZXIteGY4NiIKICAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2wgPz0gIm1lc2EiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YS12aXJ0dWFsLXByb3ZpZGVycyc+TWV0YWRhdGEgKFZpcnR1YWwgUHJvdmlkZXJzKTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc2V0IDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+IGl0ZW0sIHRoZW4gYW55CkBAIC0xMDQ0NSw3ICsxMDY0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHR3byBleGFtcGxlczoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQUkVGRVJSRURfVkVSU0lPTl9weXRob24gPSAiMy40LjAiCi0gICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID0gIjMuMTklIgorICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA9ICI0LjEyJSIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQgdmVyc2lvbiBpcyBtYXRjaGVkIGFnYWluc3QKQEAgLTEwNDgwLDE0ICsxMDY4MywxNCBAQAogICAgICAgICAgICAgICAgICAgICB0byBzZXQgYSBtYWNoaW5lLXNwZWNpZmljIG92ZXJyaWRlLgogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdXg4NiA9ICIzLjQlIgorICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11eDg2ID0gIjQuMTIlIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEFsdGhvdWdoIG5vdCByZWNvbW1lbmRlZCwgd29yc3QgY2FzZSwgeW91IGNhbiBhbHNvIHVzZSB0aGUKICAgICAgICAgICAgICAgICAgICAgImZvcmNldmFyaWFibGUiIG92ZXJyaWRlLCB3aGljaCBpcyB0aGUgc3Ryb25nZXN0IG92ZXJyaWRlCiAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlLgogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fZm9yY2V2YXJpYWJsZSA9ICIzLjQlIgorICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19mb3JjZXZhcmlhYmxlID0gIjQuMTIlIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5fZm9yY2V2YXJpYWJsZTwvZmlsZW5hbWU+IG92ZXJyaWRlIGlzCkBAIC0xMDUzMiw3ICsxMDczNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB0byBhdHRlbXB0IGJlZm9yZSBhbnkgb3RoZXJzIGJ5IGFkZGluZwogICAgICAgICAgICAgICAgICAgICBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFBSRU1JUlJPUlNfcHJlcGVuZCA9ICJcCiAgICAgIGdpdDovLy4qLy4qIGh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9zb3VyY2VzLyBcbiBcCkBAIC0xMDcxMCw3ICsxMDkxMyw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHNob3dzIGhvdyB0aGUgPGZpbGVuYW1lPlBSU0VSVl9IT1NUPC9maWxlbmFtZT4gdmFyaWFibGUgaXMKICAgICAgICAgICAgICAgICAgICAgc2V0OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xMTQ5NCw3ICsxMTY5Nyw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYXRpb24gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHVucGFja2VkIHJlY2lwZSBzb3VyY2UgY29kZSByZXNpZGVzLgogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeSBpcwogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59LyR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItQlBOJz48ZmlsZW5hbWU+QlBOPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0tJHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPiwKQEAgLTExNTAyLDcgKzExNzA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT4ke1BWfTwvZmlsZW5hbWU+IGlzIHRoZSByZWNpcGUgdmVyc2lvbi4KICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNvdXJjZSB0YXJiYWxsIGV4dHJhY3RzIHRoZSBjb2RlIHRvIGEgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgIG5hbWVkIGFueXRoaW5nIG90aGVyIHRoYW4gPGZpbGVuYW1lPiR7QlBOfS0ke1BWfTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICBvciBpZiB0aGUgc291cmNlIGNvZGUgaWYgZmV0Y2hlZCBmcm9tIGFuIFNDTSBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIG9yIGlmIHRoZSBzb3VyY2UgY29kZSBpcyBmZXRjaGVkIGZyb20gYW4gU0NNIHN1Y2ggYXMKICAgICAgICAgICAgICAgICAgICAgR2l0IG9yIFN1YnZlcnNpb24sIHRoZW4geW91IG11c3Qgc2V0IDxmaWxlbmFtZT5TPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY2lwZSBzbyB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCiAgICAgICAgICAgICAgICAgICAgIGtub3dzIHdoZXJlIHRvIGZpbmQgdGhlIHVucGFja2VkIHNvdXJjZS4KQEAgLTExNTEwLDcgKzExNzEzLDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBhc3N1bWUgYQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdG9wLWxldmVsIGZvbGRlciBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFuZCBhCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgQnVpbGQgRGlyZWN0b3J5IGF0IDxmaWxlbmFtZT5wb2t5L2J1aWxkPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHdvcmsgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcwpAQCAtMTI0MTIsNyArMTI2MTUsNyBAQAogICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgZmlsZSByZW1vdmFsLCBzZXQgdGhlIHZhcmlhYmxlIHRvICIxIiBpbiB5b3VyCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUKICAgICAgICAgICAgICAgICAgICAgaW4geW91cjoKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFNLSVBfRklMRURFUFMgPSAiMSIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMTI2MTksNyArMTI4MjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+ZmlsZTovLzwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZldGNoZXMgZmlsZXMsIHdoaWNoIGFyZSB1c3VhbGx5IGZpbGVzIHNoaXBwZWQgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgbG9jYWwgbWFjaGluZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+CkBAIC0xMjgxOSw3ICsxMzAyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U1JDUFY8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgU1JDUFYgPSAiJHtAYmIuZmV0Y2gyLmdldF9zcmNyZXYoZCl9IgpAQCAtMTI4NjMsNyArMTMwNjYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUFVVE9SRVYnPjxmaWxlbmFtZT5BVVRPUkVWPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZXNjcmlwdGlvbiBhbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYXV0b21hdGljYWxseS1pbmNyZW1lbnRpbmctYS1iaW5hcnktcGFja2FnZS1yZXZpc2lvbi1udW1iZXInPkF1dG9tYXRpY2FsbHkgSW5jcmVtZW50aW5nIGEgQmluYXJ5IFBhY2thZ2UgUmV2aXNpb24gTnVtYmVyPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCB3aGljaCBpcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCB3aGljaCBpcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xMzExNiw3ICsxMzMyMCw4IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNST09UX0RJUlMnPjxmaWxlbmFtZT5TWVNST09UX0RJUlM8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXNoYXJpbmctZmlsZXMtYmV0d2Vlbi1yZWNpcGVzJz5TaGFyaW5nIEZpbGVzIEJldHdlZW4gUmVjaXBlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHNob3VsZCBuZXZlciB3cml0ZSBmaWxlcyBkaXJlY3RseSB1bmRlcgogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5TVEFHSU5HX0RJUjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBiZWNhdXNlCkBAIC0xMzU4MywxNSArMTM3ODgsMTIgQEAKIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB1bmRlciB0aGUgd29yayBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS9zeXNyb290LWRlc3RpZGlyPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3N5c3Jvb3QtZGVzdGRpcjwvZmlsZW5hbWU+IikKICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIGZpbGVzCiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBwb3B1bGF0ZWQgaW50byB0aGUgc3lzcm9vdCBhcmUgYXNzZW1ibGVkCiAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1lTUk9PVF9ERVNURElSID89ICJjb25zb2xlPXR0eVMwLDExNTIwMCIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE0MDI2LDcgKzE0MjI4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdGh1bWIuaW5jPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGZvciBhbiBleGFtcGxlLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xNDI5Miw3ICsxNDQ5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRoZSBzdWZmaXggaWRlbnRpZmllcyB0aGUgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiB2YXJpYW50CiAgICAgICAgICAgICAgICAgICAgIGZvciBidWlsZGluZy4KICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgYXJlIGJ1aWxkaW5nIGZvciBtdWx0aXBsZSB2YXJpYW50cyB3aXRoIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiwKICAgICAgICAgICAgICAgICAgICAgdGhpcyBtZWNoYW5pc20gZW5zdXJlcyB0aGF0IG91dHB1dCBmb3IgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4gdmFyaWFudHMgaXMga2VwdCBzZXBhcmF0ZSB0bwogICAgICAgICAgICAgICAgICAgICBhdm9pZCBwb3RlbnRpYWwgY29uZmxpY3RzLgpAQCAtMTQ0NTAsNyArMTQ2NTIsNyBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3NoPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IHRoaXMgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB0byBoYXZlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgcnVuCiAgICAgICAgICAgICAgICAgICAgIHRoZXNlIHRlc3RzIGFmdGVyIGFuIGltYWdlIHN1Y2Nlc3NmdWxseSBidWlsZHM6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTE0NDU5LDcgKzE0NjYxLDggQEAKICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZW5hYmxpbmcsIHJ1bm5pbmcsIGFuZCB3cml0aW5nCiAgICAgICAgICAgICAgICAgICAgIHRoZXNlIHRlc3RzLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwZXJmb3JtaW5nLWF1dG9tYXRlZC1ydW50aW1lLXRlc3RpbmcnPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUKICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXRlc3RpbWFnZSonPjxmaWxlbmFtZT50ZXN0aW1hZ2UqLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTQ1NDMsNyArMTQ3NDYsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0ZXN0aW5nIGltYWdlcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nJz5QZXJmb3JtaW5nIEF1dG9tYXRlZCBSdW50aW1lIFRlc3Rpbmc8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE0NjUwLDggKzE0ODUzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb290cyBhIFFFTVUgaW1hZ2UgYW5kIHJ1bnMgdGhlIHRlc3RzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcWVtdS1pbWFnZS1lbmFibGluZy10ZXN0cyc+RW5hYmxpbmcgUnVudGltZSBUZXN0cyBvbiBRRU1VPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ic2ltcGxlcmVtb3RlIiBhbmQgIlNpbXBsZVJlbW90ZVRhcmdldCI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5zIHRoZSB0ZXN0cyBvbiB0YXJnZXQgaGFyZHdhcmUgdGhhdCBpcyBhbHJlYWR5CkBAIC0xNDY4Myw3ICsxNDg4Niw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBydW5uaW5nIHRlc3RzIG9uIGhhcmR3YXJlLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNoYXJkd2FyZS1pbWFnZS1lbmFibGluZy10ZXN0cyc+RW5hYmxpbmcgUnVudGltZSBUZXN0cyBvbiBIYXJkd2FyZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTQ3NzIsNyArMTQ5NzUsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0ZXN0aW5nIGltYWdlcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nJz5QZXJmb3JtaW5nIEF1dG9tYXRlZCBSdW50aW1lIFRlc3Rpbmc8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE0ODE4LDcgKzE1MDIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZXMgKG90aGVyIHRoYW4gdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZSkuCiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gdmFyaWFibGUgcG9pbnRzCiAgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE0ODI2LDcgKzE1MDI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdGhhbiB0aGUgZGVmYXVsdCwgeW91IGNhbiB1bmNvbW1lbnQgYW5kIGVkaXQgdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICNUTVBESVIgPSAiJHtUT1BESVJ9L3RtcCIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMTQ4NzIsOCArMTUwNzUsOSBAQAogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgYnV0IHlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgcGFja2FnZXMgdG8gdGhlIGxpc3QuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hZGRpbmctaW5kaXZpZHVhbC1wYWNrYWdlcyc+QWRkaW5nIEluZGl2aWR1YWwgUGFja2FnZXMgdG8gdGhlIFN0YW5kYXJkIFNESzwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKQotICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xNDg4Myw3ICsxNTA4Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLW1hbnVhbCc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTQ5MjksOCArMTUxMzQsOSBAQAogICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBTREsgdGhhdCBydW5zIG9uIHRoZSB0YXJnZXQuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hZGRpbmctaW5kaXZpZHVhbC1wYWNrYWdlcyc+QWRkaW5nIEluZGl2aWR1YWwgUGFja2FnZXMgdG8gdGhlIFN0YW5kYXJkIFNESzwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKQotICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xNDk0MCw3ICsxNTE0Niw4IEBACiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLW1hbnVhbCc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTQ5NTMsMTIgKzE1MTYwLDEwIEBACiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBUaGUgdG9wLWxldmVsCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcyB2YXJpYWJsZSB3aGVuIHlvdQotICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQgdXNpbmcgZWl0aGVyCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemUgeW91ciBidWlsZCBlbnZpcm9ubWVudCB1c2luZworICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xNTAxMCw3ICsxNTIxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy9SRUFETUU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgaW5mb3JtYXRpb24gZm9yIDxmaWxlbmFtZT5UVU5FX0FSQ0g8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgPGZpbGVuYW1lPm1pcHM8L2ZpbGVuYW1lPiBhcmNoaXRlY3R1cmUuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTUyOTMsNyArMTU0OTgsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBLbm93biB0dW5pbmcgY29uZmxpY3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIG1hY2hpbmUgaW5jbHVkZQogICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvYXJjaC1taXBzLmluYzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgZmlsZSB0aGF0IGxpc3RzIHRoZSAibzMyIiBhbmQgIm42NCIgZmVhdHVyZXMgYXMKQEAgLTE1MzI1LDcgKzE1NTMwLDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIG1hY2hpbmUgaW5jbHVkZSBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGZvciB0aGVzZSBmZWF0dXJlcy4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtMTU2NjIsNyArMTU4NjcsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZWxlY3RpbmctZGV2LW1hbmFnZXInPlNlbGVjdGluZyBhIERldmljZSBNYW5hZ2VyPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xNTcxNyw3ICsxNTkyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gaW4KICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTYwNTYsMTIgKzE2MjYxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGtpY2tzdGFydCBmaWxlIHRoYXQgaXMgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB0byBjcmVhdGUgYSBwYXJ0aXRpb25lZCBpbWFnZQogICAgICAgICAgICAgICAgICAgICAoPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LndpYzwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYQotICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25lZCBpbWFnZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctd2ljLWltYWdlcy1vZSc+Q3JlYXRpbmcgUGFydGl0aW9uZWQgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGEgcGFydGl0aW9uZWQgaW1hZ2UsIHNlZQorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXBhcnRpdGlvbmVkLWltYWdlcy11c2luZy13aWMnPkNyZWF0aW5nIFBhcnRpdGlvbmVkIEltYWdlcyBVc2luZyBXaWM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSBraWNrc3RhcnQgZmlsZSBmb3JtYXQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I29wZW5lbWJlZGRlZC1raWNrc3RhcnQtd2tzLXJlZmVyZW5jZSc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgUmVmZXJlbmNlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXdrcy1yZWZlcmVuY2UnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgQ2hhcHRlci4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3Jlc291cmNlcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3Jlc291cmNlcy54bWwKaW5kZXggODI5OWY5Zi4uZDU5YmVhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZXNvdXJjZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbApAQCAtMywyNSArMyw3MSBAQAogWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgogCiA8Y2hhcHRlciBpZD0ncmVzb3VyY2VzJz4KLTx0aXRsZT5Db250cmlidXRpbmcgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorPHRpdGxlPkNvbnRyaWJ1dGlvbnMgYW5kIEFkZGl0aW9uYWwgSW5mb3JtYXRpb248L3RpdGxlPgogCiA8c2VjdGlvbiBpZD0ncmVzb3VyY2VzLWludHJvJz4KICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KICAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBpcyBoYXBweSBmb3IgcGVvcGxlIHRvIGV4cGVyaW1lbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgQSBudW1iZXIgb2YgcGxhY2VzIGV4aXN0IHRvIGZpbmQgaGVscCBpZiB5b3UgcnVuIGludG8gZGlmZmljdWx0aWVzIG9yIGZpbmQgYnVncy4KLSAgICAgICAgVG8gZmluZCBvdXQgaG93IHRvIGRvd25sb2FkIHNvdXJjZSBjb2RlLAotICAgICAgICBzZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhbC15cC1yZWxlYXNlJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2U8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gaXMgaGFwcHkgZm9yIHBlb3BsZSB0byBleHBlcmltZW50IHdpdGggdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgIEEgbnVtYmVyIG9mIHBsYWNlcyBleGlzdCB0byBmaW5kIGhlbHAgaWYgeW91IHJ1biBpbnRvIGRpZmZpY3VsdGllcworICAgICAgICBvciBmaW5kIGJ1Z3MuCisgICAgICAgIFRoaXMgcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgY29udHJpYnV0aW5nIGFuZCBwYXJ0aWNpcGF0aW5nIGluCisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J3Jlc291cmNlcy1jb250cmlidXRpb25zJz4KKyAgICA8dGl0bGU+Q29udHJpYnV0aW9uczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZ2xhZGx5IGFjY2VwdHMgY29udHJpYnV0aW9ucy4KKyAgICAgICAgWW91IGNhbiBzdWJtaXQgY2hhbmdlcyB0byB0aGUgcHJvamVjdCBlaXRoZXIgYnkgY3JlYXRpbmcgYW5kIHNlbmRpbmcKKyAgICAgICAgcHVsbCByZXF1ZXN0cywKKyAgICAgICAgb3IgYnkgc3VibWl0dGluZyBwYXRjaGVzIHRocm91Z2ggZW1haWwuCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZG8gYm90aCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIG9uIGhvdworICAgICAgICB0byBpZGVudGlmeSB0aGUgbWFpbnRhaW5lciBmb3IgZWFjaCBhcmVhIG9mIGNvZGUsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCiA8c2VjdGlvbiBpZD0ncmVzb3VyY2VzLWJ1Z3RyYWNrZXInPgotICAgIDx0aXRsZT5UcmFja2luZyBCdWdzPC90aXRsZT4KKyAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBCdWd6aWxsYTwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgSWYgeW91IGZpbmQgcHJvYmxlbXMgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgeW91IHNob3VsZCByZXBvcnQgdGhlbSB1c2luZyB0aGUKLSAgICAgICAgQnVnemlsbGEgYXBwbGljYXRpb24gYXQgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPjwvdWxpbms+LgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIGl0cyBvd24gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5idWd6aWxsYS5vcmcvYWJvdXQvJz5CdWd6aWxsYTwvdWxpbms+IHRvIHRyYWNrCisgICAgICAgIGRlZmVjdHMgKGJ1Z3MpLgorICAgICAgICBJbXBsZW1lbnRhdGlvbnMgb2YgQnVnemlsbGEgd29yayB3ZWxsIGZvciBncm91cCBkZXZlbG9wbWVudCBiZWNhdXNlCisgICAgICAgIHRoZXkgdHJhY2sgYnVncyBhbmQgY29kZSBjaGFuZ2VzLCBjYW4gYmUgdXNlZCB0byBjb21tdW5pY2F0ZSBjaGFuZ2VzCisgICAgICAgIGFuZCBwcm9ibGVtcyB3aXRoIGRldmVsb3BlcnMsIGNhbiBiZSB1c2VkIHRvIHN1Ym1pdCBhbmQgcmV2aWV3IHBhdGNoZXMsCisgICAgICAgIGFuZCBjYW4gYmUgdXNlZCB0byBtYW5hZ2UgcXVhbGl0eSBhc3N1cmFuY2UuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFNvbWV0aW1lcyBpdCBpcyBoZWxwZnVsIHRvIHN1Ym1pdCwgaW52ZXN0aWdhdGUsIG9yIHRyYWNrIGEgYnVnIGFnYWluc3QKKyAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgaXRzZWxmIChlLmcuIHdoZW4gZGlzY292ZXJpbmcgYW4gaXNzdWUgd2l0aCBzb21lCisgICAgICAgIGNvbXBvbmVudCBvZiB0aGUgYnVpbGQgc3lzdGVtIHRoYXQgYWN0cyBjb250cmFyeSB0byB0aGUgZG9jdW1lbnRhdGlvbgorICAgICAgICBvciB5b3VyIGV4cGVjdGF0aW9ucykuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEEgZ2VuZXJhbCBwcm9jZWR1cmUgYW5kIGd1aWRlbGluZXMgZXhpc3QgZm9yIHdoZW4geW91IHVzZSBCdWd6aWxsYSB0bworICAgICAgICBzdWJtaXQgYSBidWcuCisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIEJ1Z3ppbGxhIHRvIHN1Ym1pdCBhIGJ1ZyBhZ2FpbnN0IHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0LCBzZWUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc3VibWl0dGluZy1hLWRlZmVjdC1hZ2FpbnN0LXRoZS15b2N0by1wcm9qZWN0Jz5TdWJtaXR0aW5nIGEgRGVmZWN0IEFnYWluc3QgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWd6aWxsYV9Db25maWd1cmF0aW9uX2FuZF9CdWdfVHJhY2tpbmcnPkJ1Z3ppbGxhIHdpa2kgcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtNDMsMTkgKzg5LDE5IEBACiAgICAgICAgICAgICAgICAgRGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QgYWJvdXQgT3BlbkVtYmVkZGVkLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZPRV9MSVNUU19VUkw7L2xpc3RpbmZvL2JpdGJha2UtZGV2ZWwnPjwvdWxpbms+IC0KICAgICAgICAgICAgICAgICBEaXNjdXNzaW9uIG1haWxpbmcgbGlzdCBhYm91dCB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4KICAgICAgICAgICAgICAgICBidWlsZCB0b29sLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9JyZZT0NUT19MSVNUU19VUkw7L2xpc3RpbmZvL3Bva3knPjwvdWxpbms+IC0KICAgICAgICAgICAgICAgICBEaXNjdXNzaW9uIG1haWxpbmcgbGlzdCBhYm91dAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Bva3knPlBva3k8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdwb2t5Jz5Qb2t5PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPScmWU9DVE9fTElTVFNfVVJMOy9saXN0aW5mby95b2N0by1hbm5vdW5jZSc+PC91bGluaz4gLQogICAgICAgICAgICAgICAgIE1haWxpbmcgbGlzdCB0byByZWNlaXZlIG9mZmljaWFsIFlvY3RvIFByb2plY3QgcmVsZWFzZSBhbmQgbWlsZXN0b25lCiAgICAgICAgICAgICAgICAgYW5ub3VuY2VtZW50cy48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgPC9wYXJhPgotICAgIEZvciBtb3JlIFlvY3RvIFByb2plY3QtcmVsYXRlZCBtYWlsaW5nIGxpc3RzLCBzZWUgdGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5IG1haWxpbmcgbGlzdHMgcGFnZQotICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvdG9vbHMtcmVzb3VyY2VzL2NvbW11bml0eS9tYWlsaW5nLWxpc3RzJz5oZXJlPC91bGluaz4uCisgICAgRm9yIG1vcmUgWW9jdG8gUHJvamVjdC1yZWxhdGVkIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKKyAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPi4KIDwvc2VjdGlvbj4KIAogPHNlY3Rpb24gaWQ9J3Jlc291cmNlcy1pcmMnPgpAQCAtNzAsNTMgKzExNiwxNjAgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSdyZXNvdXJjZXMtbGlua3MnPgotICAgIDx0aXRsZT5MaW5rczwvdGl0bGU+Cis8c2VjdGlvbiBpZD0ncmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPgorICAgIDx0aXRsZT5MaW5rcyBhbmQgUmVsYXRlZCBEb2N1bWVudGF0aW9uPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiByZXNvdXJjZXMgeW91IHdpbGwgZmluZCBoZWxwZnVsOgorICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiByZXNvdXJjZXMgeW91IG1pZ2h0IGZpbmQgaGVscGZ1bDoKICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPlRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGU8L3VsaW5rPjoKLSAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPiBUaGUgaG9tZSBzaXRlIGZvciB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0LjwvcGFyYT48L2xpc3RpdGVtPgotPCEtLQotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmludGVsLmNvbS8nPkludGVsIENvcnBvcmF0aW9uPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgY29tcGFueSB0aGF0IGFjcXVpcmVkIE9wZW5lZEhhbmQgaW4gMjAwOCBhbmQgYmVnYW4KLSAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBvbiB0aGUgWW9jdG8gUHJvamVjdC48L3BhcmE+PC9saXN0aXRlbT4KLS0tPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmT0VfSE9NRV9VUkw7Jz5PcGVuRW1iZWRkZWQ8L3VsaW5rPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSB1cHN0cmVhbSwgZ2VuZXJpYywgZW1iZWRkZWQgZGlzdHJpYnV0aW9uIHVzZWQgYXMgdGhlIGJhc2lzCi0gICAgICAgICAgICAgICAgZm9yIHRoZSBidWlsZCBzeXN0ZW0gaW4gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgUG9reSBkZXJpdmVzIGZyb20gYW5kIGNvbnRyaWJ1dGVzIGJhY2sgdG8gdGhlIE9wZW5FbWJlZGRlZAotICAgICAgICAgICAgICAgIHByb2plY3QuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+IFRoZSBob21lIHNpdGUgZm9yIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvTWFpbl9QYWdlJz5UaGUgWW9jdG8gUHJvamVjdCBNYWluIFdpa2kgUGFnZTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIG1haW4gd2lraSBwYWdlIGZvciB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBUaGlzIHBhZ2UgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgcHJvamVjdCBwbGFubmluZywKKyAgICAgICAgICAgICAgICByZWxlYXNlIGVuZ2luZWVyaW5nLCBRQSAmYW1wOyBhdXRvbWF0aW9uLCBhIHJlZmVyZW5jZQorICAgICAgICAgICAgICAgIHNpdGUgbWFwLCBhbmQgb3RoZXIgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZPRV9IT01FX1VSTDsnPk9wZW5FbWJlZGRlZDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VkIGJ5IHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoaXMgcHJvamVjdCBpcyB0aGUgdXBzdHJlYW0sIGdlbmVyaWMsIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggdGhlIFlvY3RvIFByb2plY3QgZGVyaXZlcyBpdHMgYnVpbGQgc3lzdGVtIChQb2t5KQorICAgICAgICAgICAgICAgIGFuZCB0byB3aGljaCBpdCBjb250cmlidXRlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnL3dpa2kvQml0QmFrZSc+Ci0gICAgICAgICAgICAgICAgQml0QmFrZTwvdWxpbms+OjwvZW1waGFzaXM+IFRoZSB0b29sIHVzZWQgdG8gcHJvY2VzcyBtZXRhZGF0YS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4gVGhlIHRvb2wgdXNlZCB0byBwcm9jZXNzIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsOjwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIGNvbXByZWhlbnNpdmUgZ3VpZGUgdG8gdGhlIEJpdEJha2UgdG9vbC4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhpcyBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgc2hvcnQgZG9jdW1lbnQgbGV0cyB5b3UgZ2V0IHN0YXJ0ZWQKKyAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBxdWlja2x5IGJlZ2luIGJ1aWxkaW5nIGFuIGltYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGlzIGEgImhvdy10byIgZ3VpZGUgdGhhdCBwcmVzZW50cyBwcm9jZWR1cmVzCisgICAgICAgICAgICAgICAgdXNlZnVsIHRvIGJvdGggYXBwbGljYXRpb24gYW5kIHN5c3RlbSBkZXZlbG9wZXJzIHdobyB1c2UgdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgIG1hbnVhbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoaXMgZ3VpZGUgcHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCBsZXRzIHlvdSBnZXQgZ29pbmcKKyAgICAgICAgICAgICAgICB3aXRoIHRoZSBzdGFuZGFyZCBvciBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICBBbiBTREssIHdpdGggaXRzIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMsIGFsbG93cyB5b3UKKyAgICAgICAgICAgICAgICB0byBkZXZlbG9wIHByb2plY3RzIGluc2lkZSBvciBvdXRzaWRlIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBndWlkZSBkZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgZm9yIEJTUCBjb21wb25lbnRzLgorICAgICAgICAgICAgICAgIEhhdmluZyBhIGNvbW1vbmx5IHVuZGVyc3Rvb2Qgc3RydWN0dXJlIGVuY291cmFnZXMKKyAgICAgICAgICAgICAgICBzdGFuZGFyZGl6YXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBkZXNjcmliZXMgaG93IHRvIHdvcmsgd2l0aCBMaW51eCBZb2N0byBrZXJuZWxzIGFzCisgICAgICAgICAgICAgICAgd2VsbCBhcyBwcm92aWRlcyBhIGJpdCBvZiBjb25jZXB0dWFsIGluZm9ybWF0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgIGNvbnN0cnVjdGlvbiBvZiB0aGUgWW9jdG8gTGludXgga2VybmVsIHRyZWUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1BST0ZfVVJMOyc+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBwcmVzZW50cyBhIHNldCBvZiBjb21tb24gYW5kIGdlbmVyYWxseSB1c2VmdWwKKyAgICAgICAgICAgICAgICB0cmFjaW5nIGFuZCBwcm9maWxpbmcgc2NoZW1lcyBhbG9uZyB3aXRoIHRoZWlyIGFwcGxpY2F0aW9ucworICAgICAgICAgICAgICAgIChhcyBhcHByb3ByaWF0ZSkgdG8gZWFjaCB0b29sLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYXBwZW5kaXgtbGF0ZXN0LXlwLWVjbGlwc2UtcGx1Zy1pbic+RWNsaXBzZSBJREUgWW9jdG8gUGx1Zy1pbjwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25zIHRoYXQgZGVtb25zdHJhdGUgaG93IGFuIGFwcGxpY2F0aW9uIGRldmVsb3BlcgorICAgICAgICAgICAgICAgIHVzZXMgdGhlIEVjbGlwc2UgWW9jdG8gUHJvamVjdCBQbHVnLWluIGZlYXR1cmUgd2l0aGluCisgICAgICAgICAgICAgICAgdGhlIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvRkFRJz5GQVE8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBjb21tb25seSBhc2tlZCBxdWVzdGlvbnMgYW5kIHRoZWlyIGFuc3dlcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX05PVEVTOyc+UmVsZWFzZSBOb3RlczwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmVhdHVyZXMsIHVwZGF0ZXMgYW5kIGtub3duIGlzc3VlcyBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBpbnRyb2R1Y2VzIGFuZCBkZXNjcmliZXMgaG93IHRvIHNldCB1cCBhbmQgdXNlCisgICAgICAgICAgICAgICAgVG9hc3Rlci4KKyAgICAgICAgICAgICAgICBUb2FzdGVyIGlzIGFuIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZSAoQVBJKSBhbmQKKyAgICAgICAgICAgICAgICB3ZWItYmFzZWQgaW50ZXJmYWNlIHRvIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtPC9saW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCB1c2VzIEJpdEJha2UsIHRoYXQgcmVwb3J0cyBidWlsZCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgYnVnIHRyYWNraW5nIGFwcGxpY2F0aW9uIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMuCisgICAgICAgICAgICAgICAgSWYgeW91IGZpbmQgcHJvYmxlbXMgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgeW91IHNob3VsZCByZXBvcnQKKyAgICAgICAgICAgICAgICB0aGVtIHVzaW5nIHRoaXMgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWd6aWxsYV9Db25maWd1cmF0aW9uX2FuZF9CdWdfVHJhY2tpbmcnPkJ1Z3ppbGxhIENvbmZpZ3VyYXRpb24gYW5kIEJ1ZyBUcmFja2luZyBXaWtpIFBhZ2U8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgc2V0IHVwIGFuZCB1c2UgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBCdWd6aWxsYSBmb3IgbG9nZ2luZyBhbmQgdHJhY2tpbmcgWW9jdG8KKyAgICAgICAgICAgICAgICBQcm9qZWN0IGRlZmVjdHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkludGVybmV0IFJlbGF5IENoYXQgKElSQyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUd28gSVJDIGNoYW5uZWxzIG9uIGZyZWVub2RlIGFyZSBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICBmb3IgWW9jdG8gUHJvamVjdCBhbmQgUG9reSBkaXNjdXNzaW9uczogPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4jcG9reTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL0luZGV4Lmh0bWwnPlF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQW4gb3Blbi1zb3VyY2UgbWFjaGluZSBlbXVsYXRvciBhbmQgdmlydHVhbGl6ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICBGb3IgbW9yZSBsaW5rcywgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjb3RoZXItaW5mb3JtYXRpb24nPk90aGVyIEluZm9ybWF0aW9uPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3Jlc291cmNlcy1jb250cmlidXRpb25zJz4KLSAgICA8dGl0bGU+Q29udHJpYnV0aW9uczwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZ2xhZGx5IGFjY2VwdHMgY29udHJpYnV0aW9ucy4KLSAgICAgICAgWW91IGNhbiBzdWJtaXQgY2hhbmdlcyB0byB0aGUgcHJvamVjdCBlaXRoZXIgYnkgY3JlYXRpbmcgYW5kIHNlbmRpbmcKLSAgICAgICAgcHVsbCByZXF1ZXN0cywKLSAgICAgICAgb3IgYnkgc3VibWl0dGluZyBwYXRjaGVzIHRocm91Z2ggZW1haWwuCi0gICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZG8gYm90aCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIG9uIGhvdwotICAgICAgICB0byBpZGVudGlmeSB0aGUgbWFpbnRhaW5lciBmb3IgZWFjaCBhcmVhIG9mIGNvZGUsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPkhvdyB0byBTdWJtaXQgYSBDaGFuZ2U8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCiA8L2NoYXB0ZXI+CiA8IS0tCiB2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3RlY2huaWNhbC1kZXRhaWxzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdGVjaG5pY2FsLWRldGFpbHMueG1sCmluZGV4IDE5NjRhOWEuLmU5ZTc2ZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdGVjaG5pY2FsLWRldGFpbHMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdGVjaG5pY2FsLWRldGFpbHMueG1sCkBAIC0xOCw3ICsxOCw3IEBACiAKICAgICA8cGFyYT4KICAgICAgICAgVGhlCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4KICAgICAgICAgdGFzayBleGVjdXRvciB0b2dldGhlciB3aXRoIHZhcmlvdXMgdHlwZXMgb2YgY29uZmlndXJhdGlvbiBmaWxlcyBmb3JtCiAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgQ29yZS4KICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGVzZSBjb21wb25lbnRzIGJ5IGRlc2NyaWJpbmcgdGhlaXIgdXNlIGFuZApAQCAtNDgsMTUgKzQ4LDE2IEBACiAgICAgICAgIHRvIGVhY2ggZGF0YSBzb3VyY2UgYXMgYSBsYXllci4KICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZAotICAgICAgICBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgIENyZWF0aW5nIExheWVyczwvdWxpbms+IiBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50CisgICAgICAgIFRhc2tzIE1hbnVhbC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJyaWVmIGRldGFpbHMgb24gdGhlc2UgY29yZSBjb21wb25lbnRzLgogICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBob3cgdGhlc2UgY29tcG9uZW50cyBpbnRlcmFjdCBkdXJpbmcKICAgICAgICAgYSBidWlsZCwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0nY2xvc2VyLWxvb2snPkEgQ2xvc2VyIExvb2sgYXQgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L2xpbms+IgotICAgICAgICBDaGFwdGVyLgorICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2ZWxvcG1lbnQtY29uY2VwdHMnPkRldmVsb3BtZW50IENvbmNlcHRzPC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KICAgICA8L3BhcmE+CiAKICAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWNvbXBvbmVudHMtYml0YmFrZSc+CkBAIC02NSw3ICs2Niw3IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQml0QmFrZSBpcyB0aGUgdG9vbCBhdCB0aGUgaGVhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KICAgICAgICAgICAgIGFuZCBpcyByZXNwb25zaWJsZSBmb3IgcGFyc2luZyB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiwKICAgICAgICAgICAgIGdlbmVyYXRpbmcgYSBsaXN0IG9mIHRhc2tzIGZyb20gaXQsIGFuZCB0aGVuIGV4ZWN1dGluZyB0aG9zZSB0YXNrcy4KICAgICAgICAgPC9wYXJhPgogCkBAIC0xNDYsMTMgKzE0Nyw3MCBAQAogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCisgICAgPHNlY3Rpb24gaWQ9J21ldGFkYXRhLXZpcnR1YWwtcHJvdmlkZXJzJz4KKyAgICAgICAgPHRpdGxlPk1ldGFkYXRhIChWaXJ0dWFsIFByb3ZpZGVycyk8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUHJpb3IgdG8gdGhlIGJ1aWxkLCBpZiB5b3Uga25vdyB0aGF0IHNldmVyYWwgZGlmZmVyZW50IHJlY2lwZXMKKyAgICAgICAgICAgIHByb3ZpZGUgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSwgeW91IGNhbiB1c2UgYSB2aXJ0dWFsIHByb3ZpZGVyCisgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+dmlydHVhbC8qPC9maWxlbmFtZT4pIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHRoZQorICAgICAgICAgICAgYWN0dWFsIHByb3ZpZGVyLgorICAgICAgICAgICAgVGhlIGFjdHVhbCBwcm92aWRlciB3b3VsZCBiZSBkZXRlcm1pbmVkIGF0IGJ1aWxkCisgICAgICAgICAgICB0aW1lLgorICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB5b3Ugc2hvdWxkIGFkZCA8ZmlsZW5hbWU+dmlydHVhbC8qPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRvIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgIHJhdGhlciB0aGFuIGxpc3RpbmcgdGhlIHNwZWNpZmllZCBwcm92aWRlci4KKyAgICAgICAgICAgIFlvdSB3b3VsZCBzZWxlY3QgdGhlIGFjdHVhbCBwcm92aWRlciBieSBzZXR0aW5nIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgKGkuZS4gPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyo8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgIGluIHRoZSBidWlsZCdzIGNvbmZpZ3VyYXRpb24gZmlsZSAoZS5nLgorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvYnVpbGQvY29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQW55IHJlY2lwZSB0aGF0IFBST1ZJREVTIGEgPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+IGl0ZW0KKyAgICAgICAgICAgICAgICB0aGF0IGlzIHVsdGltYXRlbHkgbm90IHNlbGVjdGVkIHRocm91Z2gKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4gZG9lcyBub3QgZ2V0IGJ1aWx0LgorICAgICAgICAgICAgICAgIFByZXZlbnRpbmcgdGhlc2UgcmVjaXBlcyBmcm9tIGJ1aWxkaW5nIGlzIHVzdWFsbHkgdGhlIGRlc2lyZWQKKyAgICAgICAgICAgICAgICBiZWhhdmlvciBzaW5jZSB0aGlzIG1lY2hhbmlzbSdzIHB1cnBvc2UgaXMgdG8gc2VsZWN0IGJldHdlZW4KKyAgICAgICAgICAgICAgICBtdXR1YWxseSBleGNsdXNpdmUgYWx0ZXJuYXRpdmUgcHJvdmlkZXJzLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3RzIHNwZWNpZmljIGV4YW1wbGVzIG9mIHZpcnR1YWwgcHJvdmlkZXJzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL21lc2E8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdibS5wYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2VnbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+ZWdsLnBjPC9maWxlbmFtZT4gYW5kIHBvc3NpYmx5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53YXlsYW5kLWVnbC5wYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbC5wYzwvZmlsZW5hbWU+IChpLmUuIGxpYkdMKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9saWJnbGVzMTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+Z2xlc3YxX2NtLnBjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gbGliR0xFU3YxX0NNKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9saWJnbGVzMjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+Z2xlc3YyLnBjPC9maWxlbmFtZT4gKGkuZS4gbGliR0xFU3YyKS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKwogICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktY29tcG9uZW50cy1jbGFzc2VzJz4KICAgICAgICAgPHRpdGxlPkNsYXNzZXM8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQ2xhc3MgZmlsZXMgKDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KSBjb250YWluIGluZm9ybWF0aW9uIHRoYXQKICAgICAgICAgICAgIGlzIHVzZWZ1bCB0byBzaGFyZSBiZXR3ZWVuCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPiBmaWxlcy4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4gZmlsZXMuCiAgICAgICAgICAgICBBbiBleGFtcGxlIGlzIHRoZQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICBjbGFzcywgd2hpY2ggY29udGFpbnMgY29tbW9uIHNldHRpbmdzIGZvciBhbnkgYXBwbGljYXRpb24gdGhhdApAQCAtMTcyLDcgKzIzMCw3IEBACiAgICAgICAgICAgICBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBvcHRpb25zLCBjb21waWxlciB0dW5pbmcgb3B0aW9ucywgZ2VuZXJhbCBjb21tb24gY29uZmlndXJhdGlvbgogICAgICAgICAgICAgb3B0aW9ucywgYW5kIHVzZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4sIHdoaWNoIGlzIGZvdW5kCiAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CkBAIC0xODMsMTEgKzI0MSwxMiBAQAogICAgIDxwYXJhPgogICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkb2VzIG1vc3Qgb2YgdGhlIHdvcmsgZm9yIHlvdSB3aGVuIGl0IGNvbWVzIHRvCiAgICAgICAgIGNyZWF0aW5nCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Y3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluczwvdWxpbms+LgorICAgICAgICA8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4nPmNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnM8L2xpbms+LgogICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSB0ZWNobmljYWwgYmFja2dyb3VuZCBvbiBob3cKICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyBhcmUgY3JlYXRlZCBhbmQgdXNlZC4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdG9vbGNoYWlucywgeW91IGNhbiBhbHNvIHNlZSB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KKyAgICAgICAgbWFudWFsLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMzcyLDggKzQzMSw4IEBACiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZHZhbnRhZ2VzIGdhaW5lZCB3aGVuIGJ1aWxkaW5nIGEKICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGluc3RhbGxlciwgc2VlIHRoZQogICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MKLSAgICAgICAgR3VpZGUuCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogICAgIDwvbm90ZT4KIDwvc2VjdGlvbj4KIApAQCAtNDMzLDcgKzQ5Miw3IEBACiAgICAgICAgIHdvcmtzIHdpdGggcGFja2FnZXMgYW5kIGNhbgogICAgICAgICB0cmFjayBpbmNyZW1lbnRpbmcgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gaW5mb3JtYXRpb24sIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2F1dG9tYXRpY2FsbHktaW5jcmVtZW50aW5nLWEtYmluYXJ5LXBhY2thZ2UtcmV2aXNpb24tbnVtYmVyJz5BdXRvbWF0aWNhbGx5IEluY3JlbWVudGluZyBhIEJpbmFyeSBQYWNrYWdlIFJldmlzaW9uIE51bWJlcjwvdWxpbms+IgotICAgICAgICBzZWN0aW9uLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICA8L25vdGU+CiAKICAgICA8cGFyYT4KQEAgLTU2Miw3ICs2MjEsNyBAQAogICAgICAgICAgICAgY29kZS4KICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZXJlIGlzIHN0aWxsIHRoZSBxdWVzdGlvbiBvZiBhIHRhc2sncyBpbmRpcmVjdCBpbnB1dHMgLSB0aGUKICAgICAgICAgICAgIHRoaW5ncyB0aGF0IHdlcmUgYWxyZWFkeSBidWlsdCBhbmQgcHJlc2VudCBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICBUaGUgY2hlY2tzdW0gKG9yIHNpZ25hdHVyZSkgZm9yIGEgcGFydGljdWxhciB0YXNrIG5lZWRzIHRvIGFkZCB0aGUgaGFzaGVzCiAgICAgICAgICAgICBvZiBhbGwgdGhlIHRhc2tzIG9uIHdoaWNoIHRoZSBwYXJ0aWN1bGFyIHRhc2sgZGVwZW5kcy4KICAgICAgICAgICAgIENob29zaW5nIHdoaWNoIGRlcGVuZGVuY2llcyB0byBhZGQgaXMgYSBwb2xpY3kgZGVjaXNpb24uCkBAIC01OTgsMTEgKzY1NywxMiBAQAogICAgICAgICAgICAgVGhlIGNvZGUgaW4gPGZpbGVuYW1lPm1ldGEvbGliL29lL3NzdGF0ZXNpZy5weTwvZmlsZW5hbWU+IHNob3dzIHR3byBleGFtcGxlcwogICAgICAgICAgICAgb2YgdGhpcyBhbmQgYWxzbyBpbGx1c3RyYXRlcyBob3cgeW91IGNhbiBpbnNlcnQgeW91ciBvd24gcG9saWN5IGludG8gdGhlIHN5c3RlbQogICAgICAgICAgICAgaWYgc28gZGVzaXJlZC4KLSAgICAgICAgICAgIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSB0d28gYmFzaWMgc2lnbmF0dXJlIGdlbmVyYXRvcnMgPGZpbGVuYW1lPk9FLUNvcmU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgdXNlczogICJPRUJhc2ljIiBhbmQgIk9FQmFzaWNIYXNoIi4KKyAgICAgICAgICAgIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSB0d28gYmFzaWMgc2lnbmF0dXJlIGdlbmVyYXRvcnMKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J29lLWNvcmUnPk9FLUNvcmU8L2xpbms+IHVzZXM6ICAiT0VCYXNpYyIgYW5kCisgICAgICAgICAgICAiT0VCYXNpY0hhc2giLgogICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlcmUgaXMgYSBkdW1teSAibm9vcCIgc2lnbmF0dXJlIGhhbmRsZXIgZW5hYmxlZCBpbiBCaXRCYWtlLgogICAgICAgICAgICAgVGhpcyBtZWFucyB0aGF0IGJlaGF2aW9yIGlzIHVuY2hhbmdlZCBmcm9tIHByZXZpb3VzIHZlcnNpb25zLgotICAgICAgICAgICAgPGZpbGVuYW1lPk9FLUNvcmU8L2ZpbGVuYW1lPiB1c2VzIHRoZSAiT0VCYXNpY0hhc2giIHNpZ25hdHVyZSBoYW5kbGVyIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgIE9FLUNvcmUgdXNlcyB0aGUgIk9FQmFzaWNIYXNoIiBzaWduYXR1cmUgaGFuZGxlciBieSBkZWZhdWx0CiAgICAgICAgICAgICB0aHJvdWdoIHRoaXMgc2V0dGluZyBpbiB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCX1NJR05BVFVSRV9IQU5ETEVSID89ICJPRUJhc2ljSGFzaCIKQEAgLTYxMCw3ICs2NzAsNyBAQAogICAgICAgICAgICAgVGhlICJPRUJhc2ljSGFzaCIgPGZpbGVuYW1lPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9maWxlbmFtZT4gaXMgdGhlIHNhbWUgYXMgdGhlCiAgICAgICAgICAgICAiT0VCYXNpYyIgdmVyc2lvbiBidXQgYWRkcyB0aGUgdGFzayBoYXNoIHRvIHRoZSBzdGFtcCBmaWxlcy4KICAgICAgICAgICAgIFRoaXMgcmVzdWx0cyBpbiBhbnkKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgICAgICBjaGFuZ2UgdGhhdCBjaGFuZ2VzIHRoZSB0YXNrIGhhc2gsIGF1dG9tYXRpY2FsbHkKICAgICAgICAgICAgIGNhdXNpbmcgdGhlIHRhc2sgdG8gYmUgcnVuIGFnYWluLgogICAgICAgICAgICAgVGhpcyByZW1vdmVzIHRoZSBuZWVkIHRvIGJ1bXAgPGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTExOTUsNiArMTI1NSwyMTMgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKKzxzZWN0aW9uIGlkPSd3aWMtcGx1Zy1pbnMtaW50ZXJmYWNlJz4KKyAgICA8dGl0bGU+V2ljIFBsdWctSW5zIEludGVyZmFjZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBleHRlbmQgYW5kIHNwZWNpYWxpemUgV2ljIGZ1bmN0aW9uYWxpdHkgYnkgdXNpbmcKKyAgICAgICAgV2ljIHBsdWctaW5zLgorICAgICAgICBUaGlzIHNlY3Rpb24gZXhwbGFpbnMgdGhlIFdpYyBwbHVnLWluIGludGVyZmFjZS4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIFdpYyBpbiBnZW5lcmFsLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFdpYyBwbHVnLWlucyBjb25zaXN0IG9mICJzb3VyY2UiIGFuZCAiaW1hZ2VyIiBwbHVnLWlucy4KKyAgICAgICAgICAgIEltYWdlciBwbHVnLWlucyBhcmUgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIHNlY3Rpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU291cmNlIHBsdWctaW5zIHByb3ZpZGUgYSBtZWNoYW5pc20gdG8gY3VzdG9taXplIHBhcnRpdGlvbgorICAgICAgICBjb250ZW50IGR1cmluZyB0aGUgV2ljIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KKyAgICAgICAgWW91IGNhbiB1c2Ugc291cmNlIHBsdWctaW5zIHRvIG1hcCB2YWx1ZXMgdGhhdCB5b3Ugc3BlY2lmeQorICAgICAgICB1c2luZyA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPiBjb21tYW5kcyBpbiBraWNrc3RhcnQKKyAgICAgICAgZmlsZXMgKGkuZS4gPGZpbGVuYW1lPioud2tzPC9maWxlbmFtZT4pIHRvIGEgcGx1Zy1pbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB1c2VkIHRvIHBvcHVsYXRlIGEgZ2l2ZW4gcGFydGl0aW9uLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIElmIHlvdSB1c2UgcGx1Zy1pbnMgdGhhdCBoYXZlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAoZS5nLiBuYXRpdmUgdG9vbHMsIGJvb3Rsb2FkZXJzLCBhbmQgc28gZm9ydGgpCisgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGEgV2ljIGltYWdlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRob3NlCisgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdXNpbmcgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV0tTX0ZJTEVfREVQRU5EUyc+PGZpbGVuYW1lPldLU19GSUxFX0RFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFNvdXJjZSBwbHVnLWlucyBhcmUgc3ViY2xhc3NlcyBkZWZpbmVkIGluIHBsdWctaW4gZmlsZXMuCisgICAgICAgIEFzIHNoaXBwZWQsIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHNldmVyYWwgcGx1Zy1pbgorICAgICAgICBmaWxlcy4KKyAgICAgICAgWW91IGNhbiBzZWUgdGhlIHNvdXJjZSBwbHVnLWluIGZpbGVzIHRoYXQgc2hpcCB3aXRoIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0CisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UnPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgRWFjaCBvZiB0aGVzZSBwbHVnLWluIGZpbGVzIGNvbnRhaW4gc291cmNlIHBsdWctaW5zIHRoYXQKKyAgICAgICAgYXJlIGRlc2lnbmVkIHRvIHBvcHVsYXRlIGEgc3BlY2lmaWMgV2ljIGltYWdlIHBhcnRpdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU291cmNlIHBsdWctaW5zIGFyZSBzdWJjbGFzc2VzIG9mIHRoZQorICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoIGlzCisgICAgICAgIGRlZmluZWQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5PC9maWxlbmFtZT4KKyAgICAgICAgZmlsZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+Qm9vdGltZ0VGSVBsdWdpbjwvZmlsZW5hbWU+CisgICAgICAgIHNvdXJjZSBwbHVnLWluIGZvdW5kIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZy1lZmkucHk8L2ZpbGVuYW1lPiBmaWxlIGlzIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgdGhlIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcywgd2hpY2ggaXMgZm91bmQKKyAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5wbHVnaW5iYXNlLnB5PC9maWxlbmFtZT4gZmlsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBhbHNvIGltcGxlbWVudCBzb3VyY2UgcGx1Zy1pbnMgaW4gYSBsYXllciBvdXRzaWRlCisgICAgICAgIG9mIHRoZSBTb3VyY2UgUmVwb3NpdG9yaWVzIChleHRlcm5hbCBsYXllcikuCisgICAgICAgIFRvIGRvIHNvLCBiZSBzdXJlIHRoYXQgeW91ciBwbHVnLWluIGZpbGVzIGFyZSBsb2NhdGVkIGluCisgICAgICAgIGEgZGlyZWN0b3J5IHdob3NlIHBhdGggaXMKKyAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS88L2ZpbGVuYW1lPgorICAgICAgICB3aXRoaW4geW91ciBleHRlcm5hbCBsYXllci4KKyAgICAgICAgV2hlbiB0aGUgcGx1Zy1pbiBmaWxlcyBhcmUgbG9jYXRlZCB0aGVyZSwgdGhlIHNvdXJjZQorICAgICAgICBwbHVnLWlucyB0aGV5IGNvbnRhaW4gYXJlIG1hZGUgYXZhaWxhYmxlIHRvIFdpYy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hlbiB0aGUgV2ljIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGludm9rZSBhCisgICAgICAgIHBhcnRpdGlvbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgaXQgbG9va3MgZm9yIHRoZSBwbHVnLWluCisgICAgICAgIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4KKyAgICAgICAgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGtpY2tzdGFydCBmaWxlIGdpdmVuIHRvIHRoYXQKKyAgICAgICAgcGFydGl0aW9uLgorICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHBhcnRpdGlvbiBpcyBzZXQgdXAgdXNpbmcgdGhlIGZvbGxvd2luZworICAgICAgICBjb21tYW5kIGluIGEga2lja3N0YXJ0IGZpbGU6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBjYmlvcyAtLW9uZGlzayBzZGEgLS1sYWJlbCBib290IC0tYWN0aXZlIC0tYWxpZ24gMTAyNAorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIFRoZSBtZXRob2RzIGRlZmluZWQgYXMgY2xhc3MgbWVtYmVycyBvZiB0aGUgbWF0Y2hpbmcKKyAgICAgICAgc291cmNlIHBsdWctaW4gKGkuZS4gPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zPC9maWxlbmFtZT4pCisgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+Ym9vdGltZy1wY2Jpb3MucHk8L2ZpbGVuYW1lPiBwbHVnLWluIGZpbGUKKyAgICAgICAgYXJlIHVzZWQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIGJlIG1vcmUgY29uY3JldGUsIGhlcmUgaXMgdGhlIGNvcnJlc3BvbmRpbmcgcGx1Zy1pbgorICAgICAgICBkZWZpbml0aW9uIGZyb20gdGhlIDxmaWxlbmFtZT5ib290aW1nLXBjYmlvcy5weTwvZmlsZW5hbWU+CisgICAgICAgIGZpbGUgZm9yIHRoZSBwcmV2aW91cyBjb21tYW5kIGFsb25nIHdpdGggYW4gZXhhbXBsZQorICAgICAgICBtZXRob2QgY2FsbGVkIGJ5IHRoZSBXaWMgaW1wbGVtZW50YXRpb24gd2hlbiBpdCBuZWVkcyB0bworICAgICAgICBwcmVwYXJlIGEgcGFydGl0aW9uIHVzaW5nIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljCisgICAgICAgIGZ1bmN0aW9uOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGJvb3RpbWctcGNiaW9zLnB5CisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgIGNsYXNzIEJvb3RpbWdQY2Jpb3NQbHVnaW4oU291cmNlUGx1Z2luKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBNQlIgYm9vdCBwYXJ0aXRpb24gYW5kIGluc3RhbGwgc3lzbGludXggb24gaXQuCisgICAgICAgICIiIgorCisgICAgICAgIG5hbWUgPSAnYm9vdGltZy1wY2Jpb3MnCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjcmVhdG9yLCBjcl93b3JrZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfYnVpbGRkaXIsIGJvb3RpbWdfZGlyLCBrZXJuZWxfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBDYWxsZWQgdG8gZG8gdGhlIGFjdHVhbCBjb250ZW50IHBvcHVsYXRpb24gZm9yIGEgcGFydGl0aW9uIGkuZS4gaXQKKyAgICAgICAgICAgICdwcmVwYXJlcycgdGhlIHBhcnRpdGlvbiB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaW1hZ2UuCisgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHByZXBhcmUgY29udGVudCBmb3IgbGVnYWN5IGJpb3MgYm9vdCBwYXJ0aXRpb24uCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBJZiBhIHN1YmNsYXNzIChwbHVnLWluKSBpdHNlbGYgZG9lcyBub3QgaW1wbGVtZW50IGEKKyAgICAgICAgcGFydGljdWxhciBmdW5jdGlvbiwgV2ljIGxvY2F0ZXMgYW5kIHVzZXMgdGhlIGRlZmF1bHQKKyAgICAgICAgdmVyc2lvbiBpbiB0aGUgc3VwZXJjbGFzcy4KKyAgICAgICAgSXQgaXMgZm9yIHRoaXMgcmVhc29uIHRoYXQgYWxsIHNvdXJjZSBwbHVnLWlucyBhcmUgZGVyaXZlZAorICAgICAgICBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MgZGVmaW5lZCBpbgorICAgICAgICB0aGUgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGRlZmluZXMKKyAgICAgICAgYSBzZXQgb2YgbWV0aG9kcyB0aGF0IHNvdXJjZSBwbHVnLWlucyBjYW4gaW1wbGVtZW50IG9yCisgICAgICAgIG92ZXJyaWRlLgorICAgICAgICBBbnkgcGx1Zy1pbnMgKHN1YmNsYXNzIG9mCisgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPikgdGhhdCBkbyBub3QgaW1wbGVtZW50CisgICAgICAgIGEgcGFydGljdWxhciBtZXRob2QgaW5oZXJpdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlCisgICAgICAgIG1ldGhvZCBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcyBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGZvciBkZXRhaWxzOgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3M6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDYWxsZWQgdG8gcG9wdWxhdGUgYSBwYXJ0aXRpb24gd2l0aCBhY3R1YWwgY29udGVudC4KKyAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIG1ldGhvZCBwcmVwYXJlcyB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICBwYXJ0aXRpb24gaW1hZ2UgdGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50byB0aGUKKyAgICAgICAgICAgICAgICBkaXNrIGltYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDYWxsZWQgYmVmb3JlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgIGNyZWF0ZSBjdXN0b20gY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgYSBwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICAoZS5nLiBzeXNsaW51eCBvciBncnViIGNvbmZpZ3VyYXRpb24gZmlsZXMpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9faW5zdGFsbF9kaXNrKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENhbGxlZCBhZnRlciBhbGwgcGFydGl0aW9ucyBoYXZlIGJlZW4gcHJlcGFyZWQgYW5kCisgICAgICAgICAgICAgICAgYXNzZW1ibGVkIGludG8gYSBkaXNrIGltYWdlLgorICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgaG9vayB0byBhbGxvdyBmaW5hbGl6YXRpb24KKyAgICAgICAgICAgICAgICBvZiBhIGRpc2sgaW1hZ2UgKGUuZy4gd3JpdGluZyBhbiBNQlIpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fc3RhZ2VfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFNwZWNpYWwgY29udGVudC1zdGFnaW5nIGhvb2sgY2FsbGVkIGJlZm9yZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgbm9ybWFsbHkgZW1wdHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VHlwaWNhbGx5LCBhIHBhcnRpdGlvbiBqdXN0IHVzZXMgdGhlIHBhc3NlZC1pbgorICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGUuZy4gdGhlIHVubW9kaWZpZWQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZ19kaXI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgaW4gc29tZSBjYXNlcywgdGhpbmdzIG1pZ2h0IG5lZWQgdG8gYmUKKyAgICAgICAgICAgICAgICBtb3JlIHRhaWxvcmVkLgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNlcnRhaW4gZmlsZXMgbWlnaHQgYWRkaXRpb25hbGx5CisgICAgICAgICAgICAgICAgbmVlZCB0byBiZSB0YWtlbiBmcm9tCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWdfZGlyICsgL2Jvb3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGlzIGhvb2sgYWxsb3dzIHRob3NlIGZpbGVzIHRvIGJlIHN0YWdlZCBpbiBhCisgICAgICAgICAgICAgICAgY3VzdG9taXplZCBmYXNoaW9uLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2V0X2JpdGJha2VfdmFyKCk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIGFjY2VzcyBub24tc3RhbmRhcmQgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIGZvciB0aGlzCisgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjYW4gZXh0ZW5kIHRoZSBzb3VyY2UgcGx1Zy1pbiBtZWNoYW5pc20uCisgICAgICAgIFRvIGFkZCBtb3JlIGhvb2tzLCBjcmVhdGUgbW9yZSBzb3VyY2UgcGx1Zy1pbiBtZXRob2RzCisgICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIGRlcml2ZWQgc3ViY2xhc3Nlcy4KKyAgICAgICAgVGhlIGNvZGUgdGhhdCBjYWxscyB0aGUgcGx1Zy1pbiBtZXRob2RzIHVzZXMgdGhlCisgICAgICAgIDxmaWxlbmFtZT5wbHVnaW4uZ2V0X3NvdXJjZV9wbHVnaW5fbWV0aG9kcygpPC9maWxlbmFtZT4KKyAgICAgICAgZnVuY3Rpb24gdG8gZmluZCB0aGUgbWV0aG9kIG9yIG1ldGhvZHMgbmVlZGVkIGJ5IHRoZSBjYWxsLgorICAgICAgICBSZXRyaWV2YWwgb2YgdGhvc2UgbWV0aG9kcyBpcyBhY2NvbXBsaXNoZWQgYnkgZmlsbGluZyB1cAorICAgICAgICBhIGRpY3Qgd2l0aCBrZXlzIHRoYXQgY29udGFpbiB0aGUgbWV0aG9kIG5hbWVzIG9mIGludGVyZXN0LgorICAgICAgICBPbiBzdWNjZXNzLCB0aGVzZSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBhY3R1YWwKKyAgICAgICAgbWV0aG9kcy4KKyAgICAgICAgU2VlIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gZm9yIGV4YW1wbGVzIGFuZCBkZXRhaWxzLgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKwogPHNlY3Rpb24gaWQ9J3gzMic+CiAgICAgPHRpdGxlPngzMjwvdGl0bGU+CiAKQEAgLTEzMTAsNyArMTU3Nyw3IEBACiAgICAgICAgICAgICBUaGUgV2F5bGFuZCBwcm90b2NvbCBsaWJyYXJpZXMgYW5kIHRoZSByZWZlcmVuY2UgV2VzdG9uIGNvbXBvc2l0b3IKICAgICAgICAgICAgIHNoaXAgYXMgaW50ZWdyYXRlZCBwYWNrYWdlcyBpbiB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBsYXllcgogICAgICAgICAgICAgb2YgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgIFNwZWNpZmljYWxseSwgeW91IGNhbiBmaW5kIHRoZSByZWNpcGVzIHRoYXQgYnVpbGQgYm90aCBXYXlsYW5kCiAgICAgICAgICAgICBhbmQgV2VzdG9uIGF0IDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZDwvZmlsZW5hbWU+LgogICAgICAgICA8L3BhcmE+CkBAIC0xNDI1LDggKzE2OTIsOCBAQAogICAgIDxwYXJhPgogICAgICAgICBGb3IgaW5mb3JtYXRpb24gdGhhdCBjYW4gaGVscCB5b3UgbWFpbnRhaW4gY29tcGxpYW5jZSB3aXRoIHZhcmlvdXMgb3BlbgogICAgICAgICBzb3VyY2UgbGljZW5zaW5nIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBwcm9kdWN0LCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvamVjdCdzIExpZmVjeWNsZTwvdWxpbms+IiBzZWN0aW9uCi0gICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9qZWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIAogICAgIDxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSI+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3VzaW5ncG9reS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3VzaW5ncG9reS54bWwKaW5kZXggZDA4MDMxNi4uMTNkOWFkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC91c2luZ3Bva3kueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdXNpbmdwb2t5LnhtbApAQCAtNDIsMTEgKzQyLDkgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBkbyBpcyBzZXQgdXAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAotICAgICAgICAgICAgZW52aXJvbm1lbnQgYnkgc291cmNpbmcgYW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0CisgICAgICAgICAgICBlbnZpcm9ubWVudCBieSBzb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0CiAgICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIG9yCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsgWzxyZXBsYWNlYWJsZT5idWlsZF9kaXI8L3JlcGxhY2VhYmxlPl0KQEAgLTU2LDcgKzU0LDggQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+IGFyZ3VtZW50IGlzIG9wdGlvbmFsIGFuZCBzcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSB0aGUKICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBmb3IgdGhlIGJ1aWxkIC0KLSAgICAgICAgICAgIHRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSBCdWlsZCBEaXJlY3RvcnksIGl0IGRlZmF1bHRzIHRvIGEgZGlyZWN0b3J5CiAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAgICAgICAgICAgICBBIGNvbW1vbiBwcmFjdGljZSBpcyB0byB1c2UgYSBkaWZmZXJlbnQgQnVpbGQgRGlyZWN0b3J5IGZvciBkaWZmZXJlbnQgdGFyZ2V0cy4KQEAgLTEwOCw3ICsxMDcsNyBAQAogICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyB0aGUgbmFtZSBvZiB0aGUgcmVjaXBlIHlvdSB3YW50IHRvIGJ1aWxkLgogICAgICAgICAgICAgQ29tbW9uIHRhcmdldHMgYXJlIHRoZSBpbWFnZXMgaW4gPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb3JlL2ltYWdlczwvZmlsZW5hbWU+LAogICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1zYXRvL2ltYWdlczwvZmlsZW5hbWU+LCBldGMuIGFsbCBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgT3IsIHRoZSB0YXJnZXQgY2FuIGJlIHRoZSBuYW1lIG9mIGEgcmVjaXBlIGZvciBhIHNwZWNpZmljIHBpZWNlIG9mIHNvZnR3YXJlIHN1Y2ggYXMKICAgICAgICAgICAgIEJ1c3lCb3guCiAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBpbWFnZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc3VwcG9ydHMsIHNlZSB0aGUKQEAgLTE0MiwxMSArMTQxLDEyIEBACiAgICAgPHBhcmE+CiAgICAgICAgIE9uY2UgYW4gaW1hZ2UgaGFzIGJlZW4gYnVpbHQsIGl0IG9mdGVuIG5lZWRzIHRvIGJlIGluc3RhbGxlZC4KICAgICAgICAgVGhlIGltYWdlcyBhbmQga2VybmVscyBidWlsdCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhcmUgcGxhY2VkIGluIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+IGluCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPiBpbgogICAgICAgICA8ZmlsZW5hbWUgY2xhc3M9ImRpcmVjdG9yeSI+dG1wL2RlcGxveS9pbWFnZXM8L2ZpbGVuYW1lPi4KICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBydW4gcHJlLWJ1aWx0IGltYWdlcyBzdWNoIGFzIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4KICAgICAgICAgYW5kIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4sIHNlZSB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLW1hbnVhbCc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICBtYW51YWwuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gaW5zdGFsbCB0aGVzZSBpbWFnZXMsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91cgogICAgICAgICBwYXJ0aWN1bGFyIGJvYXJkIG9yIG1hY2hpbmUuCiAgICAgPC9wYXJhPgpAQCAtMTc3LDE2ICsxNzcsMTcgQEAKICAgICAgICAgZ29pbmcgd3JvbmcuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZW5hYmxlIGFuZCB1c2UgdGhpcyBmZWF0dXJlLCBzZWUgdGhlCiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy10aGUtZXJyb3ItcmVwb3J0aW5nLXRvb2wnPlVzaW5nIHRoZSBFcnJvciBSZXBvcnRpbmcgVG9vbDwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBkaXNjdXNzaW9ucyBvbiBkZWJ1Z2dpbmcsIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnJz5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L3VsaW5rPiIgc2VjdGlvbgotICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wZXIncyBNYW51YWwKKyAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCiAgICAgICAgIGFuZCB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I2FkdC1lY2xpcHNlJz5Xb3JraW5nIHdpdGhpbiBFY2xpcHNlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KICAgICA8L3BhcmE+CiAKICAgICA8bm90ZT4KQEAgLTIwOCw3ICsyMDksNyBAQAogICAgICAgICAgICAgKDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4pIG1pZ2h0IGJlIGluCiAgICAgICAgICAgICA8ZmlsZW5hbWU+dG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvdGVtcC9sb2cuZG9fY29tcGlsZTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgVG8gc2VlIHRoZSBjb21tYW5kcwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4gcmFuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdiaXRiYWtlLXRlcm0nPkJpdEJha2U8L2xpbms+IHJhbgogICAgICAgICAgICAgdG8gZ2VuZXJhdGUgYSBsb2csIGxvb2sgYXQgdGhlIGNvcnJlc3BvbmRpbmcKICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW4uZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCkBAIC04NzQsNyArODc1LDcgQEAKICAgICAgICAgICAgIGNsYXNzIGltcGxlbWVudHMgdGhlc2UgZnVuY3Rpb25zLgogICAgICAgICAgICAgU2VlIHRoYXQgY2xhc3MgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzPC9maWxlbmFtZT4gZm9sZGVyIG9mIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTk3OCw3ICs5NzksNyBAQAogICAgICAgICAgICAgICAgICAgICBSZW1vdmluZwogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgICh1c3VhbGx5IDxmaWxlbmFtZT50bXAvPC9maWxlbmFtZT4sIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+KQogICAgICAgICAgICAgICAgICAgICBjYW4gb2Z0ZW4gZml4IHRlbXBvcmFyeSBidWlsZCBpc3N1ZXMuCiAgICAgICAgICAgICAgICAgICAgIFJlbW92aW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBpcyB1c3VhbGx5IGEKICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVseSBjaGVhcCBvcGVyYXRpb24sIGJlY2F1c2UgdGFzayBvdXRwdXQgd2lsbCBiZQpAQCAtMTAzMSw5ICsxMDMyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8nPkJ1Z3ppbGxhPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzdWJtaXQgYSBidWcgYWdhaW5zdAotICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdHJhY2tpbmctYnVncyc+VHJhY2tpbmcgQnVnczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUgWW9jdG8gUHJvamVjdCBCdWd6aWxsYQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvQnVnemlsbGFfQ29uZmlndXJhdGlvbl9hbmRfQnVnX1RyYWNraW5nJz53aWtpIHBhZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3N1Ym1pdHRpbmctYS1kZWZlY3QtYWdhaW5zdC10aGUteW9jdG8tcHJvamVjdCc+U3VibWl0dGluZyBhIERlZmVjdCBBZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24sIHdoaWNoIGlzIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFudWFscyBtaWdodCBub3QgYmUgdGhlIHJpZ2h0IHBsYWNlIHRvIGRvY3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgdGhhdCBhcmUgcHVyZWx5IGludGVybmFsIGFuZCBoYXZlIGEgbGltaXRlZApAQCAtMTA0Niw2ICsxMDUwLDM3NiBAQAogICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KIAorPHNlY3Rpb24gaWQ9J3JlZi1xdWljay1lbXVsYXRvci1xZW11Jz4KKyAgICA8dGl0bGU+UXVpY2sgRU1VbGF0b3IgKFFFTVUpPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSkKKyAgICAgICAgT3BlbiBTb3VyY2UgcHJvamVjdCBhcyBwYXJ0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50ICJ0b29sCisgICAgICAgIHNldCIuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgUUVNVSBpcyBhbgorICAgICAgICBlbXVsYXRvciBhbmQgdmlydHVhbGl6YXRpb24gbWFjaGluZSB0aGF0IGFsbG93cyB5b3UgdG8gcnVuIGEgY29tcGxldGUKKyAgICAgICAgaW1hZ2UgeW91IGhhdmUgYnVpbHQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgYXMganVzdCBhbm90aGVyIHRhc2sKKyAgICAgICAgb24geW91ciBidWlsZCBzeXN0ZW0uCisgICAgICAgIFFFTVUgaXMgdXNlZnVsIGZvciBydW5uaW5nIGFuZCB0ZXN0aW5nIGltYWdlcyBhbmQgYXBwbGljYXRpb25zIG9uCisgICAgICAgIHN1cHBvcnRlZCBZb2N0byBQcm9qZWN0IGFyY2hpdGVjdHVyZXMgd2l0aG91dCBoYXZpbmcgYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgUUVNVSB0byBydW4gYXV0b21hdGVkCisgICAgICAgIFF1YWxpdHkgQXNzdXJhbmNlIChRQSkgdGVzdHMgb24gZmluYWwgaW1hZ2VzIHNoaXBwZWQgd2l0aCBlYWNoCisgICAgICAgIHJlbGVhc2UuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgdGhlIHNhbWUgYXMgUUVNVSBpbiBnZW5lcmFsLgorICAgICAgICA8L25vdGU+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIGJyaWVmIHJlZmVyZW5jZSBmb3IgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgUUVNVS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIG9mZmljaWFsIGluZm9ybWF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIG9uIFFFTVUgaW4gZ2VuZXJhbCwgc2VlIHRoZQorICAgICAgICBmb2xsb3dpbmcgcmVmZXJlbmNlczoKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFpbl9QYWdlJz5RRU1VIFdlYnNpdGU8L3VsaW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBvZmZpY2lhbCB3ZWJzaXRlIGZvciB0aGUgUUVNVSBPcGVuIFNvdXJjZSBwcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9NYW51YWwnPkRvY3VtZW50YXRpb248L3VsaW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBRRU1VIHVzZXIgbWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgUUVNVSwgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCisgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LWF2YWlsYWJpbGl0eSc+CisgICAgICAgIDx0aXRsZT5RRU1VIEF2YWlsYWJpbGl0eTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBRRU1VIGlzIG1hZGUgYXZhaWxhYmxlIHdpdGggdGhlIFlvY3RvIFByb2plY3QgYSBudW1iZXIgb2Ygd2F5cy4KKyAgICAgICAgICAgIE9uZSBtZXRob2QgaXMgdG8gaW5zdGFsbCBhIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKS4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBtYWtlIHN1cmUgeW91IGhhdmUKKyAgICAgICAgICAgIFFFTVUgYXZhaWxhYmxlLCBzZWUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN0aGUtcWVtdS1lbXVsYXRvcic+VGhlIFFFTVUgRW11bGF0b3I8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LXBlcmZvcm1hbmNlJz4KKyAgICAgICAgPHRpdGxlPlFFTVUgUGVyZm9ybWFuY2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNpbmcgUUVNVSB0byBlbXVsYXRlIHlvdXIgaGFyZHdhcmUgY2FuIHJlc3VsdCBpbiBzcGVlZCBpc3N1ZXMKKyAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGFuZCBob3N0IGFyY2hpdGVjdHVyZSBtaXguCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4gaW1hZ2UgaW4gdGhlCisgICAgICAgICAgICBlbXVsYXRvciBvbiBhbiBJbnRlbC1iYXNlZCAzMi1iaXQgKHg4NikgaG9zdCBtYWNoaW5lIGlzIGZhc3QKKyAgICAgICAgICAgIGJlY2F1c2UgdGhlIHRhcmdldCBhbmQgaG9zdCBhcmNoaXRlY3R1cmVzIG1hdGNoLgorICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIHVzaW5nIHRoZSA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+IGltYWdlCisgICAgICAgICAgICBvbiB0aGUgc2FtZSBJbnRlbC1iYXNlZCBob3N0IGNhbiBiZSBzbG93ZXIuCisgICAgICAgICAgICBCdXQsIHlvdSBzdGlsbCBhY2hpZXZlIGZhaXRoZnVsIGVtdWxhdGlvbiBvZiBBUk0tc3BlY2lmaWMgaXNzdWVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBzcGVlZCB0aGluZ3MgdXAsIHRoZSBRRU1VIGltYWdlcyBzdXBwb3J0IHVzaW5nCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdGNjPC9maWxlbmFtZT4gdG8gY2FsbCBhIGNyb3NzLWNvbXBpbGVyIG91dHNpZGUgdGhlCisgICAgICAgICAgICBlbXVsYXRlZCBzeXN0ZW0uCisgICAgICAgICAgICBJZiB5b3UgdXNlZCA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHRvIHN0YXJ0IFFFTVUsIGFuZCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0Y2NkPC9maWxlbmFtZT4gYXBwbGljYXRpb24gaXMgcHJlc2VudCBvbiB0aGUgaG9zdAorICAgICAgICAgICAgc3lzdGVtLCBhbnkgQml0QmFrZSBjcm9zcy1jb21waWxpbmcgdG9vbGNoYWluIGF2YWlsYWJsZSBmcm9tIHRoZQorICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGlzIGF1dG9tYXRpY2FsbHkgdXNlZCBmcm9tIHdpdGhpbiBRRU1VIHNpbXBseSBieQorICAgICAgICAgICAgY2FsbGluZyA8ZmlsZW5hbWU+ZGlzdGNjPC9maWxlbmFtZT4uCisgICAgICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggdGhpcyBieSBkZWZpbmluZyB0aGUgY3Jvc3MtY29tcGlsZXIgdmFyaWFibGUKKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5leHBvcnQgQ0M9ImRpc3RjYyI8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJlIHVzaW5nIGEgc3VpdGFibGUgU0RLIGltYWdlIG9yIHRoZQorICAgICAgICAgICAgYXBwcm9wcmlhdGUgc3RhbmQtYWxvbmUgdG9vbGNoYWluIGlzIHByZXNlbnQsIHRoZSB0b29sY2hhaW4gaXMKKyAgICAgICAgICAgIGFsc28gYXV0b21hdGljYWxseSB1c2VkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBTZXZlcmFsIG1lY2hhbmlzbXMgZXhpc3QgdGhhdCBsZXQgeW91IGNvbm5lY3QgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgcnVubmluZyBvbiB0aGUgUUVNVSBlbXVsYXRvcjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBRRU1VIHByb3ZpZGVzIGEgZnJhbWVidWZmZXIgaW50ZXJmYWNlIHRoYXQgbWFrZXMgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZXMgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEdlbmVyYWxseSwgaGVhZGxlc3MgZW1iZWRkZWQgZGV2aWNlcyBoYXZlIGEgc2VyaWFsIHBvcnQuCisgICAgICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgY2FuIGNvbmZpZ3VyZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcnVubmluZyBpbWFnZSB0byB1c2UgdGhhdCBwb3J0IHRvIHJ1biBhIGNvbnNvbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb25uZWN0aW9uIHVzZXMgc3RhbmRhcmQgSVAgbmV0d29ya2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTU0ggc2VydmVycyBleGlzdCBpbiBzb21lIFFFTVUgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IFFFTVUgaW1hZ2UgaGFzIGEKKyAgICAgICAgICAgICAgICAgICAgRHJvcGJlYXIgc2VjdXJlIHNoZWxsIChTU0gpIHNlcnZlciB0aGF0IHJ1bnMgd2l0aCB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLWZ1bGwtY21kbGluZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1sc2I8L2ZpbGVuYW1lPiBRRU1VIGltYWdlcworICAgICAgICAgICAgICAgICAgICBoYXZlIE9wZW5TU0ggaW5zdGVhZCBvZiBEcm9wYmVhci4KKyAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nIHRoZXNlIFNTSCBzZXJ2ZXJzIGFsbG93IHlvdSB0byB1c2Ugc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzaDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+c2NwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gUUVNVSBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgaG93ZXZlciwgY29udGFpbnMgbm8gU1NIIHNlcnZlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBhIHByb3ZpZGVkLCB1c2VyLXNwYWNlIE5GUyBzZXJ2ZXIgdG8gYm9vdAorICAgICAgICAgICAgICAgICAgICB0aGUgUUVNVSBzZXNzaW9uIHVzaW5nIGEgbG9jYWwgY29weSBvZiB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIG9uIHRoZSBob3N0LgorICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBtYWtlIHRoaXMgY29ubmVjdGlvbiwgeW91IG11c3QgZXh0cmFjdCBhCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0YXJiYWxsIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIGNvbW1hbmQsIHlvdSBtdXN0IHRoZW4gcG9pbnQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0IHRvIHRoZSBleHRyYWN0ZWQgZGlyZWN0b3J5IGluc3RlYWQgb2YgYSByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gaW1hZ2UgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcWVtdS1ydW5uaW5nLXVuZGVyLWEtbmV0d29yay1maWxlLXN5c3RlbS1uZnMtc2VydmVyJz5SdW5uaW5nIFVuZGVyIGEgTmV0d29yayBGaWxlIFN5c3RlbSAoTkZTKSBTZXJ2ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncWVtdS1jb21tYW5kLWxpbmUtc3ludGF4Jz4KKyAgICAgICAgPHRpdGxlPlFFTVUgQ29tbWFuZC1MaW5lIFN5bnRheDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgYmFzaWMgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kIHN5bnRheCBpcyBhcworICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IFs8cmVwbGFjZWFibGU+b3B0aW9uPC9yZXBsYWNlYWJsZT4gXSAgWy4uLl0KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEJhc2VkIG9uIHdoYXQgeW91IHByb3ZpZGUgb24gdGhlIGNvbW1hbmQgbGluZSwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gZG9lcyBhIGdvb2Qgam9iIG9mIGZpZ3VyaW5nIG91dCB3aGF0CisgICAgICAgICAgICB5b3UgYXJlIHRyeWluZyB0byBkby4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBieSBkZWZhdWx0LCBRRU1VIGxvb2tzIGZvciB0aGUgbW9zdCByZWNlbnRseSBidWlsdAorICAgICAgICAgICAgaW1hZ2UgYWNjb3JkaW5nIHRvIHRoZSB0aW1lc3RhbXAgd2hlbiBpdCBuZWVkcyB0byBsb29rIGZvciBhbgorICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICBNaW5pbWFsbHksIHRocm91Z2ggdGhlIHVzZSBvZiBvcHRpb25zLCB5b3UgbXVzdCBwcm92aWRlIGVpdGhlcgorICAgICAgICAgICAgYSBtYWNoaW5lIG5hbWUsIGEgdmlydHVhbCBtYWNoaW5lIGltYWdlCisgICAgICAgICAgICAoPGZpbGVuYW1lPip3aWMudm1kazwvZmlsZW5hbWU+KSwgb3IgYSBrZXJuZWwgaW1hZ2UKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5iaW48L2ZpbGVuYW1lPikuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyB0aGUgY29tbWFuZC1saW5lIGhlbHAgb3V0cHV0IGZvciB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBydW5xZW11IC0taGVscAorCisgICAgIFVzYWdlOiB5b3UgY2FuIHJ1biB0aGlzIHNjcmlwdCB3aXRoIGFueSB2YWxpZCBjb21iaW5hdGlvbgorICAgICBvZiB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyAoaW4gYW55IG9yZGVyKToKKyAgICAgICBLRVJORUwgLSB0aGUga2VybmVsIGltYWdlIGZpbGUgdG8gdXNlCisgICAgICAgUk9PVEZTIC0gdGhlIHJvb3RmcyBpbWFnZSBmaWxlIG9yIG5mc3Jvb3QgZGlyZWN0b3J5IHRvIHVzZQorICAgICAgIE1BQ0hJTkUgLSB0aGUgbWFjaGluZSBuYW1lIChvcHRpb25hbCwgYXV0b2RldGVjdGVkIGZyb20gS0VSTkVMIGZpbGVuYW1lIGlmIHVuc3BlY2lmaWVkKQorICAgICAgIFNpbXBsaWZpZWQgUUVNVSBjb21tYW5kLWxpbmUgb3B0aW9ucyBjYW4gYmUgcGFzc2VkIHdpdGg6CisgICAgICAgICBub2dyYXBoaWMgLSBkaXNhYmxlIHZpZGVvIGNvbnNvbGUKKyAgICAgICAgIHNlcmlhbCAtIGVuYWJsZSBhIHNlcmlhbCBjb25zb2xlIG9uIC9kZXYvdHR5UzAKKyAgICAgICAgIHNsaXJwIC0gZW5hYmxlIHVzZXIgbmV0d29ya2luZywgbm8gcm9vdCBwcml2aWxlZ2VzIGlzIHJlcXVpcmVkCisgICAgICAgICBrdm0gLSBlbmFibGUgS1ZNIHdoZW4gcnVubmluZyB4ODYveDg2XzY0IChWVC1jYXBhYmxlIENQVSByZXF1aXJlZCkKKyAgICAgICAgIGt2bS12aG9zdCAtIGVuYWJsZSBLVk0gd2l0aCB2aG9zdCB3aGVuIHJ1bm5pbmcgeDg2L3g4Nl82NCAoVlQtY2FwYWJsZSBDUFUgcmVxdWlyZWQpCisgICAgICAgICBwdWJsaWN2bmMgLSBlbmFibGUgYSBWTkMgc2VydmVyIG9wZW4gdG8gYWxsIGhvc3RzCisgICAgICAgICBhdWRpbyAtIGVuYWJsZSBhdWRpbworICAgICAgICAgWyovXW92bWYqIC0gT1ZNRiBmaXJtd2FyZSBmaWxlIG9yIGJhc2UgbmFtZSBmb3IgYm9vdGluZyB3aXRoIFVFRkkKKyAgICAgICB0Y3BzZXJpYWw9Jmx0O3BvcnQmZ3Q7IC0gc3BlY2lmeSB0Y3Agc2VyaWFsIHBvcnQgbnVtYmVyCisgICAgICAgYmlvc2Rpcj0mbHQ7ZGlyJmd0OyAtIHNwZWNpZnkgY3VzdG9tIGJpb3MgZGlyCisgICAgICAgYmlvc2ZpbGVuYW1lPSZsdDtmaWxlbmFtZSZndDsgLSBzcGVjaWZ5IGJpb3MgZmlsZW5hbWUKKyAgICAgICBxZW11cGFyYW1zPSZsdDt4eXomZ3Q7IC0gc3BlY2lmeSBjdXN0b20gcGFyYW1ldGVycyB0byBRRU1VCisgICAgICAgYm9vdHBhcmFtcz0mbHQ7eHl6Jmd0OyAtIHNwZWNpZnkgY3VzdG9tIGtlcm5lbCBwYXJhbWV0ZXJzIGR1cmluZyBib290CisgICAgICAgaGVscCwgLWgsIC0taGVscDogcHJpbnQgdGhpcyB0ZXh0CisKKyAgICAgRXhhbXBsZXM6CisgICAgICAgcnVucWVtdQorICAgICAgIHJ1bnFlbXUgcWVtdWFybQorICAgICAgIHJ1bnFlbXUgdG1wL2RlcGxveS9pbWFnZXMvcWVtdWFybQorICAgICAgIHJ1bnFlbXUgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni8mbHQ7cWVtdWJvb3QuY29uZiZndDsKKyAgICAgICBydW5xZW11IHFlbXV4ODYtNjQgY29yZS1pbWFnZS1zYXRvIGV4dDQKKyAgICAgICBydW5xZW11IHFlbXV4ODYtNjQgd2ljLWltYWdlLW1pbmltYWwgd2ljCisgICAgICAgcnVucWVtdSBwYXRoL3RvL2J6SW1hZ2UtcWVtdXg4Ni5iaW4gcGF0aC90by9uZnNyb290ZGlyLyBzZXJpYWwKKyAgICAgICBydW5xZW11IHFlbXV4ODYgaXNvL2hkZGltZy93aWMudm1kay93aWMucWNvdzIvd2ljLnZkaS9yYW1mcy9jcGlvLmd6Li4uCisgICAgICAgcnVucWVtdSBxZW11eDg2IHFlbXVwYXJhbXM9Ii1tIDI1NiIKKyAgICAgICBydW5xZW11IHFlbXV4ODYgYm9vdHBhcmFtcz0icHNwbGFzaD1mYWxzZSIKKyAgICAgICBydW5xZW11IHBhdGgvdG8vJmx0O2ltYWdlJmd0Oy0mbHQ7bWFjaGluZSZndDsud2ljCisgICAgICAgcnVucWVtdSBwYXRoL3RvLyZsdDtpbWFnZSZndDstJmx0O21hY2hpbmUmZ3Q7LndpYy52bWRrCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncnVucWVtdS1jb21tYW5kLWxpbmUtb3B0aW9ucyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IENvbW1hbmQtTGluZSBPcHRpb25zPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhIGRlc2NyaXB0aW9uIG9mIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KKyAgICAgICAgICAgIG9wdGlvbnMgeW91IGNhbiBwcm92aWRlIG9uIHRoZSBjb21tYW5kIGxpbmU6CisgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZG8gcHJvdmlkZSBzb21lICJpbGxlZ2FsIiBvcHRpb24gY29tYmluYXRpb24gb3IgcGVyaGFwcworICAgICAgICAgICAgICAgIHlvdSBkbyBub3QgcHJvdmlkZSBlbm91Z2ggaW4gdGhlIHdheSBvZiBvcHRpb25zLAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gcHJvdmlkZXMgYXBwcm9wcmlhdGUgZXJyb3IKKyAgICAgICAgICAgICAgICBtZXNzYWdpbmcgdG8gaGVscCB5b3UgY29ycmVjdCB0aGUgcHJvYmxlbS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+UUVNVUFSQ0g8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIFFFTVUgbWFjaGluZSBhcmNoaXRlY3R1cmUsIHdoaWNoIG11c3QgYmUgInFlbXVhcm0iLAorICAgICAgICAgICAgICAgICAgICAicWVtdWFybTY0IiwgInFlbXVtaXBzIiwgInFlbXVtaXBzNjQiLCAicWVtdXBwYyIsCisgICAgICAgICAgICAgICAgICAgICJxZW11eDg2Iiwgb3IgInFlbXV4ODYtNjQiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48cmVwbGFjZWFibGU+Vk08L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgdmlydHVhbCBtYWNoaW5lIGltYWdlLCB3aGljaCBtdXN0IGJlIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi53aWMudm1kazwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIG9wdGlvbiB3aGVuIHlvdSB3YW50IHRvIGJvb3QgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBpbWFnZSBmaWxlbmFtZSB5b3UgcHJvdmlkZSBtdXN0IGNvbnRhaW4gb25lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgc3RyaW5nczogInFlbXV4ODYtNjQiLCAicWVtdXg4NiIsICJxZW11YXJtIiwKKyAgICAgICAgICAgICAgICAgICAgInFlbXVtaXBzNjQiLCAicWVtdW1pcHMiLCAicWVtdXBwYyIsIG9yICJxZW11c2g0Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Uk9PVEZTPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIEEgcm9vdCBmaWxlc3lzdGVtIHRoYXQgaGFzIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIGZpbGV0eXBlIGV4dGVuc2lvbnM6ICJleHQyIiwgImV4dDMiLCAiZXh0NCIsICJqZmZzMiIsCisgICAgICAgICAgICAgICAgICAgICJuZnMiLCBvciAiYnRyZnMiLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZW5hbWUgeW91IHByb3ZpZGUgZm9yIHRoaXMgb3B0aW9uIHVzZXMg4oCcbmZz4oCdLCBpdAorICAgICAgICAgICAgICAgICAgICBtdXN0IHByb3ZpZGUgYW4gZXhwbGljaXQgcm9vdCBmaWxlc3lzdGVtIHBhdGguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPktFUk5FTDwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICBBIGtlcm5lbCBpbWFnZSwgd2hpY2ggaXMgYSA8ZmlsZW5hbWU+LmJpbjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHByb3ZpZGUgYSA8ZmlsZW5hbWU+LmJpbjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gZGV0ZWN0cyBpdCBhbmQgYXNzdW1lcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyBhIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBRRU1VIG1hY2hpbmUsIHdoaWNoIG11c3QgYmUgb25lCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmc6ICJxZW11eDg2IiwgInFlbXV4ODYtNjQiLCAicWVtdWFybSIsCisgICAgICAgICAgICAgICAgICAgICJxZW11YXJtNjQiLCAicWVtdW1pcHMiLCDigJxxZW11bWlwczY0Iiwgb3IgInFlbXVwcGMiLgorICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlFFTVVBUkNIPC9yZXBsYWNlYWJsZT4gb3B0aW9ucyBhcmUgYmFzaWNhbGx5CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWNhbC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBwcm92aWRlIGEgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBvcHRpb24sIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gdHJpZXMgdG8gZGV0ZXJtaW5lCisgICAgICAgICAgICAgICAgICAgIGl0IGJhc2VkIG9uIG90aGVyIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJhbWZzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEluZGljYXRlcyB5b3UgYXJlIGJvb3RpbmcgYW4gaW5pdGlhbCBSQU0gZGlzayAoaW5pdHJhbWZzKQorICAgICAgICAgICAgICAgICAgICBpbWFnZSwgd2hpY2ggbWVhbnMgdGhlIDxmaWxlbmFtZT5GU1RZUEU8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3Bpby5nejwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pc288L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHlvdSBhcmUgYm9vdGluZyBhbiBJU08gaW1hZ2UsIHdoaWNoIG1lYW5zIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RlNUWVBFPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5pc288L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9ncmFwaGljPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIERpc2FibGVzIHRoZSB2aWRlbyBjb25zb2xlLCB3aGljaCBzZXRzIHRoZSBjb25zb2xlIHRvCisgICAgICAgICAgICAgICAgICAgICJ0dHlzMCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlcmlhbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGEgc2VyaWFsIGNvbnNvbGUgb24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9kZXYvdHR5UzA8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ymlvc2RpcjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFc3RhYmxpc2hlcyBhIGN1c3RvbSBkaXJlY3RvcnkgZm9yIEJJT1MsIFZHQSBCSU9TIGFuZAorICAgICAgICAgICAgICAgICAgICBrZXltYXBzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW9zZmlsZW5hbWU8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRXN0YWJsaXNoZXMgYSBjdXN0b20gQklPUyBuYW1lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11cGFyYW1zPVwiPHJlcGxhY2VhYmxlPnh5ejwvcmVwbGFjZWFibGU+XCI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGN1c3RvbSBRRU1VIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIG9wdGlvbiB0byBwYXNzIG9wdGlvbnMgb3RoZXIgdGhhbiB0aGUgc2ltcGxlCisgICAgICAgICAgICAgICAgICAgICJrdm0iIGFuZCAic2VyaWFsIiBvcHRpb25zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmJvb3RwYXJhbXM9XCI8cmVwbGFjZWFibGU+eHl6PC9yZXBsYWNlYWJsZT5cIjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgY3VzdG9tIGJvb3QgcGFyYW1ldGVycyBmb3IgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXVkaW88L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBhdWRpbyBpbiBRRU1VLgorICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBvcHRpb24gbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgInFlbXV4ODYiIG9yICJxZW11eDg2LTY0IiBpbiBvcmRlciBmb3IgYXVkaW8gdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgPGZpbGVuYW1lPnNuZF9pbnRlbDh4MDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIG9yIDxmaWxlbmFtZT5zbmRfZW5zMTM3MDwvZmlsZW5hbWU+IGRyaXZlciBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBsaW51eCBndWVzdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2xpcnA8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyAic2xpcnAiIG5ldHdvcmtpbmcsIHdoaWNoIGlzIGEgZGlmZmVyZW50IHdheQorICAgICAgICAgICAgICAgICAgICBvZiBuZXR3b3JraW5nIHRoYXQgZG9lcyBub3QgbmVlZCByb290IGFjY2VzcworICAgICAgICAgICAgICAgICAgICBidXQgYWxzbyBpcyBub3QgYXMgZWFzeSB0byB1c2Ugb3IgY29tcHJlaGVuc2l2ZQorICAgICAgICAgICAgICAgICAgICBhcyB0aGUgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdrdm0tY29uZCc+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rdm08L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBLVk0gd2hlbiBydW5uaW5nICJxZW11eDg2IiBvciAicWVtdXg4Ni02NCIKKyAgICAgICAgICAgICAgICAgICAgUUVNVSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICBGb3IgS1ZNIHRvIHdvcmssIGFsbCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQ6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IG11c3QgYmUgZWl0aGVyCitxZW11eDg2IiBvciAicWVtdXg4Ni02NCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBidWlsZCBob3N0IGhhcyB0byBoYXZlIHRoZSBLVk0gbW9kdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCwgd2hpY2ggYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9kZXYva3ZtPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlICBidWlsZCBob3N0IDxmaWxlbmFtZT4vZGV2L2t2bTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGhhcyB0byBiZSBib3RoIHdyaXRhYmxlIGFuZCByZWFkYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bS12aG9zdDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIEtWTSB3aXRoIFZIT1NUIHN1cHBvcnQgd2hlbiBydW5uaW5nICJxZW11eDg2IgorICAgICAgICAgICAgICAgICAgICBvciAicWVtdXg4Ni02NCIgUUVNVSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICBGb3IgS1ZNIHdpdGggVkhPU1QgdG8gd29yaywgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG11c3QKKyAgICAgICAgICAgICAgICAgICAgYmUgbWV0OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2t2bS1jb25kJz5rdm08L2xpbms+IG9wdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBidWlsZCBob3N0IGhhcyB0byBoYXZlIHZpcnRpbyBuZXQgZGV2aWNlLCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSA8ZmlsZW5hbWU+L2Rldi92aG9zdC1uZXQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgaG9zdCA8ZmlsZW5hbWU+L2Rldi92aG9zdC1uZXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBoYXMgdG8gYmUgZWl0aGVyIHJlYWRhYmxlIG9yIHdyaXRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIOKAnHNsaXJwLWVuYWJsZWTigJ0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wdWJsaWN2bmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBhIFZOQyBzZXJ2ZXIgb3BlbiB0byBhbGwgaG9zdHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKIDxzZWN0aW9uIGlkPSdtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+CiAgICAgPHRpdGxlPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC90aXRsZT4KIApAQCAtMTA5OSwxNSArMTQ3MywxNSBAQAogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9DT01NSVQnPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfQ09NTUlUPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMSIgYXQgdGhlIGVuZCBvZiB5b3VyCiAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz46CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIElOSEVSSVQgKz0gImJ1aWxkaGlzdG9yeSIKICAgICAgQlVJTERISVNUT1JZX0NPTU1JVCA9ICIxIgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgRW5hYmxpbmcgYnVpbGQgaGlzdG9yeSBhcyBwcmV2aW91c2x5IGRlc2NyaWJlZAotICAgICAgICAgICAgY2F1c2VzIHRoZSBidWlsZCBwcm9jZXNzIHRvIGNvbGxlY3QgYnVpbGQKLSAgICAgICAgICAgIG91dHB1dCBpbmZvcm1hdGlvbiBhbmQgY29tbWl0IGl0IHRvIGEgbG9jYWwKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dpdCc+R2l0PC91bGluaz4gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEVuYWJsaW5nIGJ1aWxkIGhpc3RvcnkgYXMgcHJldmlvdXNseSBkZXNjcmliZWQgY2F1c2VzIHRoZQorICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjb2xsZWN0IGJ1aWxkIG91dHB1dCBpbmZvcm1hdGlvbiBhbmQKKyAgICAgICAgICAgIGNvbW1pdCBpdCBhcyBhIHNpbmdsZSBjb21taXQgdG8gYSBsb2NhbAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2l0Jz5HaXQ8L2xpbms+IHJlcG9zaXRvcnkuCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBFbmFibGluZyBidWlsZCBoaXN0b3J5IGluY3JlYXNlcyB5b3VyIGJ1aWxkIHRpbWVzIHNsaWdodGx5LAogICAgICAgICAgICAgICAgIHBhcnRpY3VsYXJseSBmb3IgaW1hZ2VzLCBhbmQgaW5jcmVhc2VzIHRoZSBhbW91bnQgb2YgZGlzawpAQCAtMTM1Nyw3ICsxNzMxLDcgQEAKICAgICAgICAgICAgICAgICB5b3UgY2FuIGVuYWJsZSB3cml0aW5nIG9ubHkgaW1hZ2UgaW5mb3JtYXRpb24gd2l0aG91dAogICAgICAgICAgICAgICAgIGFueSBoaXN0b3J5IGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIElOSEVSSVQgKz0gImJ1aWxkaGlzdG9yeSIKICAgICAgQlVJTERISVNUT1JZX0NPTU1JVCA9ICIwIgpAQCAtMTY0Myw3ICsyMDE3LDcgQEAKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3luYygpPC9maWxlbmFtZT4gY2FsbHMgaW50byB0aGUKICAgICAgICAgICAgICAgICBmaWxlIHN5c3RlbSBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgaWYgdGhlcmUgd2FzIGEgc2lnbmlmaWNhbnQKICAgICAgICAgICAgICAgICBmYWlsdXJlLCB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICAgICAgY29udGVudHMgY291bGQgZWFzaWx5IGJlIHJlYnVpbHQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLXRpdGxlLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstdGl0bGUucG5nCmluZGV4IGU5ZDViMzQuLmU2OWUwMzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstdGl0bGUucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstdGl0bGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbAppbmRleCA5NjVjY2NjLi41ODc1MjZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sCkBAIC0xNDgsOSArMTQ4LDcgQEAKICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICBJZiB5b3VyIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2V0dXAgdXNlcyBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBvdGhlciB0aGFuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtbWVtcmVzLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4sCiAgICAgICAgICAgICAgICAgdGhlbiB5b3UgbXVzdCBzZXQKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItT0VfSU5JVF9FTlZfU0NSSVBUJz48ZmlsZW5hbWU+T0VfSU5JVF9FTlZfU0NSSVBUPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIHRvIHBvaW50IHRvIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgeW91IHVzZS4KQEAgLTI4OSw3ICsyODcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBTREsgYWxvbmUsIGNyZWF0ZSBhCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zZGstZXh0cmEuY29uZjwvZmlsZW5hbWU+IGVpdGhlciBpbgogICAgICAgICAgICAgICAgICAgICAgICAgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgb3Igd2l0aGluIGFueSBsYXllciBhbmQgcHV0IHlvdXIKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SUzwvZmlsZW5hbWU+IHNldHRpbmcgd2l0aGluCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGZpbGUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1tYXJzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW1hcnMueG1sCmluZGV4IDk5NTcwNTcuLjJkODBmNjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW1hcnMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW1hcnMueG1sCkBAIC0xNCw4ICsxNCw4IEBACiAgICAgICAgIGZyb20gc3RhcnQgdG8gZmluaXNoLgogICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgRWNsaXBzZSBJREUgYW5kIHRoZSBZb2N0bwogICAgICAgICBQcm9qZWN0IEVjbGlwc2UgUGx1Zy1Jbiwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWRldmVsb3BpbmctYXBwbGljYXRpb25zLXVzaW5nLWVjbGlwc2UnPkRldmVsb3BpbmcgQXBwbGljYXRpb25zIFVzaW5nIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+PC9saW5rPiIKLSAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1lY2xpcHNlLXByb2plY3QnPkRldmVsb3BpbmcgQXBwbGljYXRpb25zIFVzaW5nIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+PC9saW5rPiIKKyAgICAgICAgQ2hhcHRlci4KICAgICA8L3BhcmE+CiAKICAgICA8c2VjdGlvbiBpZD0nbWFycy1zZXR0aW5nLXVwLXRoZS1lY2xpcHNlLWlkZSc+CkBAIC0zOTIsNyArMzkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgU3lzdGVtIERlcml2ZWQgVG9vbGNoYWluOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyB0eXBlIGlmIHlvdSBidWlsdCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gYXMgcGFydCBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3Ugc2VsZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgdXNpbmcgdGhlIHRvb2xjaGFpbiBidWlsdCBhbmQKQEAgLTQxOCw3ICs0MTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgdGhlIHBhdGggeW91IHByb3ZpZGUgZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Ub29sY2hhaW4gUm9vdCBMb2NhdGlvbjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHlvdSBydW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIChlLmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZDwvZmlsZW5hbWU+KS48L3BhcmE+CkBAIC00MzEsMTQgKzQzMSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgaGFyZHdhcmUgcmVzaWRlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBsb2NhdGlvbiBkZXBlbmRzIG9uIHdoZXJlIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkgZXh0cmFjdGVkIGFuZCBpbnN0YWxsZWQgdGhlIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseSBleHRyYWN0ZWQgYW5kIGluc3RhbGxlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgZmlsZXN5c3RlbSB3aGVuIHlvdSBlaXRoZXIgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBvciBkb3dubG9hZGVkIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG93bmxvYWRlZCB0aGUgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlIHJhdGhlciB0aGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IGl0LCB5b3UgbXVzdCBkb3dubG9hZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNhdG8tc2RrPC9maWxlbmFtZT4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgdG8gYnVpbGQgYW55IGMvYysrIHByb2plY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwcmVwYXJlZCBhbiBpbWFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBzdGVwcyBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB0aGUgPGZpbGVuYW1lPk1ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgeW91IHdvdWxkIGJyb3dzZSB0byBhbmQgc2VsZWN0IHRoYXQgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL2J1aWxkL01ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTQ4Nyw3ICs0OTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGtlcm5lbCB5b3UgYnVpbHQgd2lsbCBiZSBsb2NhdGVkIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCkBAIC02OTIsNyArNzAwLDcgQEAKICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwKKyAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAogICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIFFFTVUuCiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CkBAIC04MDQsNyArODEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnkgY2xpY2tpbmcgb24gIm5ldyIuPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCA8ZmlsZW5hbWU+U1NIPC9maWxlbmFtZT4sIHdoaWNoIG1lYW5zCiAgICAgICAgICAgICAgICAgICAgIFNlY3VyZSBTb2NrZXQgU2hlbGwuCi0gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc2VsZWN0IGFuIFRDRiBjb25uZWN0aW9uIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc2VsZWN0IGEgVENGIGNvbm5lY3Rpb24gaW5zdGVhZC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJOZXh0Ii4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC04NDgsMTEgKzg1NiwzMCBAQAogICAgICAgICAgICAgICAgICAgICBsYXVuY2guCiAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgaXMgaGVscGZ1bCBpbiB0aGF0IGl0IGF1dG8gZmlsbHMgeW91ciBhcHBsaWNhdGlvbgogICAgICAgICAgICAgICAgICAgICBuYW1lIGZvciB5b3UgYXNzdW1pbmcgeW91IGJyb3dzZWQgdG8gYSBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBwcm9tcHRlZCB0byBwcm92aWRlIGEgdXNlcm5hbWUgYW5kIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbGx5IHNldCBhIHBhc3N3b3JkLCBiZSBzdXJlIHlvdSBwcm92aWRlCi0gICAgICAgICAgICAgICAgICAgICAgICAicm9vdCIgYXMgdGhlIHVzZXJuYW1lIGFuZCB5b3UgbGVhdmUgdGhlIHBhc3N3b3JkCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCBibGFuay4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcHM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcHJvbXB0ZWQgdG8gcHJvdmlkZSBhIHVzZXJuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0byBvcHRpb25hbGx5IHNldCBhIHBhc3N3b3JkLCBiZSBzdXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBwcm92aWRlICJyb290IiBhcyB0aGUgdXNlcm5hbWUgYW5kIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWF2ZSB0aGUgcGFzc3dvcmQgZmllbGQgYmxhbmsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYnJvd3NpbmcgdG8gYSBkaXJlY3RvcnkgZmFpbHMgb3IgdGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LCBidXQgeW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3NoPC9maWxlbmFtZT4gaW50byB5b3VyIFFFTVUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdGFyZ2V0IGZyb20gdGhlIGNvbW1hbmQgbGluZSBhbmQgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgcHJveGllcyBzZXQgdXAsIGl0IGlzIGxpa2VseSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgaXMgc2VuZGluZyB0aGUgU1NIIHRyYWZmaWMgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBlaXRoZXIgdXNlIFRDRiAsIG9yIGNsaWNrIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWd1cmUgcHJveHkgc2V0dGluZ3MiIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIGRpYWxvZyBhbmQgYWRkIHRoZSB0YXJnZXQgSVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyB0byB0aGUgImJ5cGFzcyBwcm94eSIgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IGFsc28gbmVlZCB0byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGl2ZSBQcm92aWRlciIgZnJvbSBOYXRpdmUgdG8gTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCmluZGV4IGQwY2JmOWMuLmFiOTA1NWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbApAQCAtMTgsMzcgKzE4LDc4IEBACiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFlvdSBjYW4gZmluZCBTREsgaW5zdGFsbGVycyBoZXJlOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TdGFuZGFyZCBTREsgSW5zdGFsbGVyczo8L2VtcGhhc2lzPgorICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gbG9jYXRlIGFuZCBoYW5kLWluc3RhbGwgdGhlIHRvb2xjaGFpbjoKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HbyB0byB0aGUgSW5zdGFsbGVycyBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBHbyB0byA8dWxpbmsgdXJsPScmWU9DVE9fVE9PTENIQUlOX0RMX1VSTDsnPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgYW5kIGZpbmQgdGhlIGZvbGRlciB0aGF0IG1hdGNoZXMgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbQotICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5pNjg2PC9maWxlbmFtZT4gZm9yIDMyLWJpdCBtYWNoaW5lcyBvcgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT54ODZfNjQ8L2ZpbGVuYW1lPiBmb3IgNjQtYml0IG1hY2hpbmVzKS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5HbyBpbnRvIHRoYXQgZm9sZGVyIGFuZCBkb3dubG9hZCB0aGUgU0RLIGluc3RhbGxlcgotICAgICAgICAgICAgICAgIHdob3NlIG5hbWUgaW5jbHVkZXMgdGhlIGFwcHJvcHJpYXRlIHRhcmdldCBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgVGhlIHRvb2xjaGFpbnMgcHJvdmlkZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgYXJlIGJhc2VkIG9mZiBvZgotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2UgYW5kIGNvbnRhaW4KLSAgICAgICAgICAgICAgICBsaWJyYXJpZXMgYXBwcm9wcmlhdGUgZm9yIGRldmVsb3BpbmcgYWdhaW5zdCB0aGF0IGltYWdlLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGlzIGEgNjQtYml0IHg4NgotICAgICAgICAgICAgICAgIHN5c3RlbSBhbmQgeW91IGFyZSBnb2luZyB0byB1c2UgeW91ciBjcm9zcy10b29sY2hhaW4gZm9yIGEKLSAgICAgICAgICAgICAgICAzMi1iaXQgeDg2IHRhcmdldCwgZ28gaW50byB0aGUgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZm9sZGVyIGFuZCBkb3dubG9hZCB0aGUgZm9sbG93aW5nIGluc3RhbGxlcjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHBva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0mRElTVFJPOy5zaAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXh0ZW5zaWJsZSBTREsgSW5zdGFsbGVyczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEluc3RhbGxlcnMgZm9yIHRoZSBleHRlbnNpYmxlIFNESyBhcmUgYWxzbyBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBUaGVzZSBpbnN0YWxsZXJzIGhhdmUgdGhlIHN0cmluZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQ8L2ZpbGVuYW1lPiBhcyBwYXJ0IG9mIHRoZWlyIG5hbWVzOgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGVuIHRoZSBGb2xkZXIgZm9yIFlvdXIgRGV2ZWxvcG1lbnQgU3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgT3BlbiB0aGUgZm9sZGVyIHRoYXQgbWF0Y2hlcyB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtCisgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmk2ODY8L2ZpbGVuYW1lPiBmb3IgMzItYml0IG1hY2hpbmVzIG9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+IGZvciA2NC1iaXQgbWFjaGluZXMpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUgYW5kIERvd25sb2FkIHRoZSBTREsgSW5zdGFsbGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZmluZCBhbmQgZG93bmxvYWQgdGhlIGluc3RhbGxlciBhcHByb3ByaWF0ZSBmb3IKKyAgICAgICAgICAgICAgICB5b3VyIGRldmVsb3BtZW50IHN5c3RlbSwgdGFyZ2V0IGhhcmR3YXJlLCBhbmQgaW1hZ2UgdHlwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgaW5zdGFsbGVyIGZpbGVzICg8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+KSBmb2xsb3cKKyAgICAgICAgICAgICAgICB0aGlzIG5hbWluZyBjb252ZW50aW9uOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS1lZ2xpYmMtPHJlcGxhY2VhYmxlPmhvc3Rfc3lzdGVtPC9yZXBsYWNlYWJsZT4tY29yZS1pbWFnZS08cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tdG9vbGNoYWluLWV4dC08cmVwbGFjZWFibGU+cmVsZWFzZTwvcmVwbGFjZWFibGU+LnNoCisKKyAgICAgV2hlcmU6CisgICAgICAgICA8cmVwbGFjZWFibGU+aG9zdF9zeXN0ZW08L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW06CisgICAgICAgICAgICAgICAgaTY4NiBvciB4ODZfNjQuCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGVpdGhlciBhICJzYXRvIiBvciAibWluaW1hbCIKKyAgICAgICAgICAgICAgICBpbWFnZS4KKworICAgICAgICAgPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6CisgICAgICAgICAgICAgICAgYWFyY2g2NCwgYXJtdjVlLCBjb3JlMi02NCwgY29yZXRleGE4aGYtbmVvbiwgaTU4NiwgbWlwczMyNDIsCisgICAgICAgICAgICAgICAgbWlwczY0LCBvciBwcGM3NDAwLgorCisgICAgICAgICA8cmVwbGFjZWFibGU+cmVsZWFzZTwvcmVwbGFjZWFibGU+IGlzIHRoZSB2ZXJzaW9uIG9mIFlvY3RvIFByb2plY3QuCisKKyAgICAgICAgIE5PVEU6CisgICAgICAgICAgICBUaGUgc3RhbmRhcmQgU0RLIGluc3RhbGxlciBkb2VzIG5vdCBoYXZlIHRoZSAiLWV4dCIgc3RyaW5nIGFzCisgICAgICAgICAgICBwYXJ0IG9mIHRoZSBmaWxlbmFtZS4KKworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgdG9vbGNoYWlucyBwcm92aWRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBhcmUgYmFzZWQgb2ZmIG9mCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2VzIGFuZCBjb250YWluCisgICAgICAgICAgICAgICAgbGlicmFyaWVzIGFwcHJvcHJpYXRlIGZvciBkZXZlbG9waW5nIGFnYWluc3QgdGhvc2UgaW1hZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvciBleGFtcGxlLCBpZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGlzIGEKKyAgICAgICAgICAgICAgICA2NC1iaXQgeDg2IHN5c3RlbSBhbmQgeW91IGFyZSBuZWVkIGFuIGV4dGVuZGVkIFNESyBmb3IgYQorICAgICAgICAgICAgICAgIDY0LWJpdCBjb3JlMiB0YXJnZXQsIGdvIGludG8gdGhlIDxmaWxlbmFtZT54ODZfNjQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZvbGRlciBhbmQgZG93bmxvYWQgdGhlIGZvbGxvd2luZyBpbnN0YWxsZXI6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBwb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8tY29yZTItNjQtdG9vbGNoYWluLWV4dC0mRElTVFJPOy5zaAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJ1biB0aGUgSW5zdGFsbGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgaGF2ZSBleGVjdXRpb24gcHJpdmlsZWdlcyBhbmQgcnVuIHRoZSBpbnN0YWxsZXIuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZnJvbSB0aGUgPGZpbGVuYW1lPkRvd25sb2FkczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L0Rvd25sb2Fkcy9wb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8tY29yZTItNjQtdG9vbGNoYWluLWV4dC0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uIG9mIHRoZSBzY3JpcHQsIHlvdSBjaG9vc2UgdGhlIHJvb3QgbG9jYXRpb24KKyAgICAgICAgICAgICAgICBmb3IgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsZWQtc3RhbmRhcmQtc2RrLWRpcmVjdG9yeS1zdHJ1Y3R1cmUnPkluc3RhbGxlZCBTdGFuZGFyZCBTREsgRGlyZWN0b3J5IFN0cnVjdHVyZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBhbmQgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsZWQtZXh0ZW5zaWJsZS1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+SW5zdGFsbGVkIEV4dGVuc2libGUgU0RLIERpcmVjdG9yeSBTdHJ1Y3R1cmU8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC01Nyw2NSArOTgsMTM1IEBACiAKICAgICA8cGFyYT4KICAgICAgICAgQXMgYW4gYWx0ZXJuYXRpdmUgdG8gbG9jYXRpbmcgYW5kIGRvd25sb2FkaW5nIGEgU0RLIGluc3RhbGxlciwKLSAgICAgICAgeW91IGNhbiBidWlsZCB0aGUgU0RLIGluc3RhbGxlciBhc3N1bWluZyB5b3UgaGF2ZSBmaXJzdCBzb3VyY2VkCi0gICAgICAgIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgIFNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBmb3Igc3RlcHMgdGhhdCBzaG93IHlvdQotICAgICAgICBob3cgdG8gc2V0IHVwIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50LgotICAgICAgICBJbiBwYXJ0aWN1bGFyLCB5b3UgbmVlZCB0byBiZSBzdXJlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgIHZhcmlhYmxlIG1hdGNoZXMgdGhlIGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyBhbmQgdGhhdAotICAgICAgICB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICB2YXJpYWJsZSBpcyBjb3JyZWN0bHkgc2V0IGlmIHlvdSBhcmUgYnVpbGRpbmcgYSB0b29sY2hhaW4gZGVzaWduZWQgdG8KLSAgICAgICAgcnVuIG9uIGFuIGFyY2hpdGVjdHVyZSB0aGF0IGRpZmZlcnMgZnJvbSB5b3VyIGN1cnJlbnQgZGV2ZWxvcG1lbnQgaG9zdAotICAgICAgICBtYWNoaW5lIChpLmUuIHRoZSBidWlsZCBtYWNoaW5lKS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVG8gYnVpbGQgdGhlIFNESyBpbnN0YWxsZXIgZm9yIGEgc3RhbmRhcmQgU0RLIGFuZCBwb3B1bGF0ZQotICAgICAgICB0aGUgU0RLIGltYWdlLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgIHlvdSBjYW4gYnVpbGQgdGhlIFNESyBpbnN0YWxsZXIuCisgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgVXAgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgYXJlIHNldCB1cCB0byB1c2UgQml0QmFrZSBpbiBhIHNoZWxsLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlNldHRpbmcgVXAgdGhlIERldmVsb3BtZW50IEhvc3QgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdGhhdCBpcyBlaXRoZXIgYQorICAgICAgICAgICAgICAgIG5hdGl2ZSBMaW51eCBtYWNoaW5lIG9yIGEgbWFjaGluZSB0aGF0IHVzZXMgQ1JPUFMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIGEgbG9jYWwgY29weSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIChpLmUuIGEgbG9jYWwgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC91bGluaz4iCisgICAgICAgICAgICAgICAgYW5kIHBvc3NpYmx5IHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBieSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja291dC1vdXQtYnktdGFnLWluLXBva3knPkNoZWNraW5nIE91dCBieSBUYWcgaW4gUG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb25zIGFsbCBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIGNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgY2hlY2sgb3V0IHRoZSBhcHByb3ByaWF0ZSBicmFuY2ggZm9yIHlvdXIgd29yay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBXaGlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIFNvdXJjZSBEaXJlY3RvcnkgKGkuZS4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSwgcnVuIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBkZWZpbmUgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gaW4gdGhpcyBjYXNlCisgICAgICAgICAgICAgICAgYW5kIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIEFmdGVyIHRoZSBzY3JpcHQgcnVucywgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU3VyZSBZb3UgQXJlIEJ1aWxkaW5nIGFuIEluc3RhbGxlciBmb3IgdGhlIENvcnJlY3QgTWFjaGluZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIENoZWNrIHRvIGJlIHN1cmUgdGhhdCB5b3VyCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4geW91cgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBtYXRjaGVzIHRoZSBhcmNoaXRlY3R1cmUgZm9yIHdoaWNoIHlvdSBhcmUgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU3VyZSBZb3VyIFNESyBNYWNoaW5lIGlzIENvcnJlY3RseSBTZXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGJ1aWxkaW5nIGEgdG9vbGNoYWluIGRlc2lnbmVkIHRvIHJ1biBvbiBhbgorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSB0aGF0IGRpZmZlcnMgZnJvbSB5b3VyIGN1cnJlbnQgZGV2ZWxvcG1lbnQgaG9zdAorICAgICAgICAgICAgICAgIG1hY2hpbmUgKGkuZS4gdGhlIGJ1aWxkIG1hY2hpbmUpLCBiZSBzdXJlIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4geW91cgorICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeSBpcyBjb3JyZWN0bHkgc2V0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgU0RLIEluc3RhbGxlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRvIGJ1aWxkIHRoZSBTREsgaW5zdGFsbGVyIGZvciBhIHN0YW5kYXJkIFNESyBhbmQgcG9wdWxhdGUKKyAgICAgICAgICAgICAgICB0aGUgU0RLIGltYWdlLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvcm0uCisgICAgICAgICAgICAgICAgQmUgc3VyZSB0byByZXBsYWNlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+IHdpdGgKKyAgICAgICAgICAgICAgICBhbiBpbWFnZSAoZS5nLiAiY29yZS1pbWFnZS1zYXRvIik6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4gLWMgcG9wdWxhdGVfc2RrCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgWW91IGNhbiBkbyB0aGUgc2FtZSBmb3IgdGhlIGV4dGVuc2libGUgU0RLIHVzaW5nIHRoaXMgY29tbWFuZDoKLSAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHRoZSBzYW1lIGZvciB0aGUgZXh0ZW5zaWJsZSBTREsgdXNpbmcgdGhpcyBjb21tYW5kCisgICAgICAgICAgICAgICAgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPiAtYyBwb3B1bGF0ZV9zZGtfZXh0Ci0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgVGhlc2UgY29tbWFuZHMgcmVzdWx0IGluIGEgU0RLIGluc3RhbGxlciB0aGF0IGNvbnRhaW5zIHRoZSBzeXNyb290Ci0gICAgICAgIHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCByb290IGZpbGVzeXN0ZW0uCi0gICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGVzZSBjb21tYW5kcyByZXN1bHQgaW4gYSBTREsgaW5zdGFsbGVyIHRoYXQgY29udGFpbnMgdGhlCisgICAgICAgICAgICAgICAgc3lzcm9vdCB0aGF0IG1hdGNoZXMgeW91ciB0YXJnZXQgcm9vdCBmaWxlc3lzdGVtLjwvcGFyYT4KIAotICAgIDxwYXJhPgotICAgICAgICBXaGVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgY29tcGxldGVzLCB0aGUgU0RLCi0gICAgICAgIGluc3RhbGxlciB3aWxsIGJlIGluCi0gICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L3NkazwvZmlsZW5hbWU+IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyB0b29sY2hhaW4gZG9lcyBub3QgYnVpbGQgc3RhdGljIGJpbmFyaWVzLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIHRvb2xjaGFpbiB0byBidWlsZCB0aGVzZSB0eXBlcyBvZgotICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMsIHlvdSBuZWVkIHRvIGJlIHN1cmUgeW91ciBTREsgaGFzIHRoZQotICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBzdGF0aWMgZGV2ZWxvcG1lbnQgbGlicmFyaWVzLgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluc2lkZSB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICB0byBpbnN0YWxsIHRoZSBhcHByb3ByaWF0ZSBsaWJyYXJ5IHBhY2thZ2VzIGluIHRoZSBTREsuCi0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHVzaW5nIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGRldmVsb3BtZW50IGxpYnJhcmllczoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPldoZW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBjb21wbGV0ZXMsCisgICAgICAgICAgICAgICAgdGhlIFNESyBpbnN0YWxsZXIgd2lsbCBiZSBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L3NkazwvZmlsZW5hbWU+IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIHRvb2xjaGFpbiBkb2VzIG5vdCBidWlsZCBzdGF0aWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIHRvb2xjaGFpbiB0byBidWlsZCB0aGVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzIG9mIGxpYnJhcmllcywgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyIFNESworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyB0aGUgYXBwcm9wcmlhdGUgc3RhdGljIGRldmVsb3BtZW50IGxpYnJhcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPT0xDSEFJTl9UQVJHRVRfVEFTSyc+PGZpbGVuYW1lPlRPT0xDSEFJTl9UQVJHRVRfVEFTSzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbnNpZGUgeW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSB0byBpbnN0YWxsIHRoZSBhcHByb3ByaWF0ZSBsaWJyYXJ5IHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4gc3RhdGljIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgVE9PTENIQUlOX1RBUkdFVF9UQVNLX2FwcGVuZCA9ICIgbGliYy1zdGF0aWNkZXYiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBidWlsZGluZyB0aGUgaW5zdGFsbGVyLAotICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz5Db29rYm9vayBndWlkZSB0byBNYWtpbmcgYW4gRWNsaXBzZSBEZWJ1ZyBDYXBhYmxlIEltYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlciwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz5Db29rYm9vayBndWlkZSB0byBNYWtpbmcgYW4gRWNsaXBzZSBEZWJ1ZyBDYXBhYmxlIEltYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SdW4gdGhlIEluc3RhbGxlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gbm93IHJ1biB0aGUgU0RLIGluc3RhbGxlciBmcm9tCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvc2RrPC9maWxlbmFtZT4gaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvc2RrCisgICAgICQgLi9wb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8tY29yZTItNjQtdG9vbGNoYWluLWV4dC0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uIG9mIHRoZSBzY3JpcHQsIHlvdSBjaG9vc2UgdGhlIHJvb3QgbG9jYXRpb24KKyAgICAgICAgICAgICAgICBmb3IgdGhlIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsZWQtc3RhbmRhcmQtc2RrLWRpcmVjdG9yeS1zdHJ1Y3R1cmUnPkluc3RhbGxlZCBTdGFuZGFyZCBTREsgRGlyZWN0b3J5IFN0cnVjdHVyZTwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBhbmQgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsZWQtZXh0ZW5zaWJsZS1zZGstZGlyZWN0b3J5LXN0cnVjdHVyZSc+SW5zdGFsbGVkIEV4dGVuc2libGUgU0RLIERpcmVjdG9yeSBTdHJ1Y3R1cmU8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0xMjYsNTUgKzIzNywxMDYgQEAKICAgICAgICAgQWZ0ZXIgaW5zdGFsbGluZyB0aGUgdG9vbGNoYWluLCBmb3Igc29tZSB1c2UgY2FzZXMgeW91CiAgICAgICAgIG1pZ2h0IG5lZWQgdG8gc2VwYXJhdGVseSBleHRyYWN0IGEgcm9vdCBmaWxlc3lzdGVtOgogICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSB3YW50IHRvIGJvb3QgdGhlIGltYWdlIHVzaW5nIE5GUy4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBZb3Ugd2FudCB0byBib290IHRoZSBpbWFnZSB1c2luZyBORlMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IHdhbnQgdG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gYXMgdGhlCisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgWW91IHdhbnQgdG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gYXMgdGhlCiAgICAgICAgICAgICAgICAgdGFyZ2V0IHN5c3Jvb3QuCiAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBFY2xpcHNlIElERSBlbnZpcm9ubWVudCB3aXRoIHRoZSBFY2xpcHNlCiAgICAgICAgICAgICAgICAgWW9jdG8gUGx1Zy1pbiBpbnN0YWxsZWQgYWxsb3dzIHlvdSB0byB1c2UgUUVNVSB0byBib290Ci0gICAgICAgICAgICAgICAgdW5kZXIgTkZTLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSB3YW50IHRvIGRldmVsb3AgeW91ciB0YXJnZXQgYXBwbGljYXRpb24KKyAgICAgICAgICAgICAgICB1bmRlciBORlMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgWW91IHdhbnQgdG8gZGV2ZWxvcCB5b3VyIHRhcmdldCBhcHBsaWNhdGlvbgogICAgICAgICAgICAgICAgIHVzaW5nIHRoZSByb290IGZpbGVzeXN0ZW0gYXMgdGhlIHRhcmdldCBzeXNyb290LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVG8gZXh0cmFjdCB0aGUgcm9vdCBmaWxlc3lzdGVtLCBmaXJzdCA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4KLSAgICAgICAgdGhlIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBlc3RhYmxpc2gKLSAgICAgICAgbmVjZXNzYXJ5IGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSAgICAgICAgSWYgeW91IGJ1aWx0IHRoZSB0b29sY2hhaW4gaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSwgeW91IHdpbGwgZmluZAotICAgICAgICB0aGUgdG9vbGNoYWluIGVudmlyb25tZW50IHNjcmlwdCBpbiB0aGUKLSAgICAgICAgPGZpbGVuYW1lPnRtcDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgSWYgeW91IGluc3RhbGxlZCB0aGUgdG9vbGNoYWluIGJ5IGhhbmQsIHRoZSBlbnZpcm9ubWVudCBzZXR1cAotICAgICAgICBzY3JpcHQgaXMgbG9jYXRlZCBpbiA8ZmlsZW5hbWU+L29wdC9wb2t5LyZESVNUUk87PC9maWxlbmFtZT4uCi0gICAgPC9wYXJhPgorICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gZXh0cmFjdCB0aGUgcm9vdCBmaWxlc3lzdGVtOgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSBhbmQgRG93bmxvYWQgdGhlIFRhcmJhbGwgZm9yIHRoZSBQcmUtQnVpbHQKKyAgICAgICAgICAgICAgICBSb290IEZpbGVzeXN0ZW0gSW1hZ2UgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGZpbmQgYW5kIGRvd25sb2FkIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UKKyAgICAgICAgICAgICAgICBmaWxlIHRoYXQgaXMgYXBwcm9wcmlhdGUgZm9yIHlvdXIgdGFyZ2V0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUga2VwdCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy95b2N0by95b2N0by0mRElTVFJPOy9tYWNoaW5lcy8nPkluZGV4IG9mIFJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICBpbiB0aGUgIm1hY2hpbmVzIiBkaXJlY3RvcnkuPC9wYXJhPgogCi0gICAgPHBhcmE+Ci0gICAgICAgIEFmdGVyIHNvdXJjaW5nIHRoZSBlbnZpcm9ubWVudCBzY3JpcHQsIHVzZSB0aGUKLSAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXUtZXh0cmFjdC1zZGs8L2ZpbGVuYW1lPiBjb21tYW5kIGFuZCBwcm92aWRlIHRoZQotICAgICAgICBmaWxlc3lzdGVtIGltYWdlLgotICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgIm1hY2hpbmVzIiBkaXJlY3RvcnkgY29udGFpbnMgdGFyYmFsbHMKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPioudGFyLmJ6MjwvZmlsZW5hbWU+KSBmb3Igc3VwcG9ydGVkIG1hY2hpbmVzLgorICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgYWxzbyBjb250YWlucyBmbGF0dGVuZWQgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgaW1hZ2UgZmlsZXMgKDxmaWxlbmFtZT4qLmV4dDQ8L2ZpbGVuYW1lPiksIHdoaWNoIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgd2l0aCBRRU1VIGRpcmVjdGx5LjwvcGFyYT4KIAotICAgIDxwYXJhPgotICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZS4KLSAgICAgICAgVGhlIHNlY29uZCBjb21tYW5kIHNldHMgdXAgdGhlIGVudmlyb25tZW50LgotICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBzZXR1cCBzY3JpcHQgaXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgVGhlIHRoaXJkIGNvbW1hbmQgZXh0cmFjdHMgdGhlIHJvb3QgZmlsZXN5c3RlbSBmcm9tIGEgcHJldmlvdXNseQotICAgICAgICBidWlsdCBmaWxlc3lzdGVtIHRoYXQgaXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgPGZpbGVuYW1lPn4vRG93bmxvYWRzPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICBGdXJ0aGVybW9yZSwgdGhpcyBjb21tYW5kIGV4dHJhY3RzIHRoZSByb290IGZpbGVzeXN0ZW0gaW50byB0aGUKLSAgICAgICAgPGZpbGVuYW1lPnFlbXV4ODYtc2F0bzwvZmlsZW5hbWU+IGRpcmVjdG9yeToKLSAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4KLSAgICAgJCBzb3VyY2UgL29wdC9wb2t5LyZESVNUUk87L2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAotICAgICAkIHJ1bnFlbXUtZXh0cmFjdC1zZGsgXAotICAgICAgICB+L0Rvd25sb2Fkcy9jb3JlLWltYWdlLXNhdG8tc2RrLXFlbXV4ODYtMjAxMTA5MTQxMTgzMS5yb290ZnMudGFyLmJ6MiBcCi0gICAgICAgICRIT01FL3FlbXV4ODYtc2F0bwotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIFlvdSBjb3VsZCBub3cgcG9pbnQgdG8gdGhlIHRhcmdldCBzeXNyb290IGF0Ci0gICAgICAgIDxmaWxlbmFtZT5xZW11eDg2LXNhdG88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcHJlLWJ1aWx0IHJvb3QgZmlsZXN5c3RlbSBpbWFnZSBmaWxlcworICAgICAgICAgICAgICAgIGZvbGxvdyB0aGVzZSBuYW1pbmcgY29udmVudGlvbnM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBjb3JlLWltYWdlLTxyZXBsYWNlYWJsZT5wcm9maWxlPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi50YXIuYnoyCisKKyAgICAgV2hlcmU6CisgICAgICAgICA8cmVwbGFjZWFibGU+cHJvZmlsZTwvcmVwbGFjZWFibGU+IGlzIHRoZSBmaWxlc3lzdGVtIGltYWdlJ3MgcHJvZmlsZToKKyAgICAgICAgICAgICAgICAgICBsc2IsIGxzYi1kZXYsIGxzYi1zZGssIGxzYi1xdDMsIG1pbmltYWwsIG1pbmltYWwtZGV2LCBzYXRvLAorICAgICAgICAgICAgICAgICAgIHNhdG8tZGV2LCBzYXRvLXNkaywgbWluaW1hbC1pbml0cmFtZnMsIG9yIHNkay1wdGVzdC4gRm9yCisgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gdGhlc2UgdHlwZXMgb2YgaW1hZ2UgcHJvZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAiSW1hZ2VzIiBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlOgorICAgICAgICAgICAgICAgIGJlYWdsZWJvbmUsIGVkZ2Vyb3V0ZXIsIGdlbmVyaWN4ODYsIGdlbmVyaWN4ODYtNjQsIG1wYzgzMTVlLXJkYiwKKyAgICAgICAgICAgICAgICBxZW11YXJtLCBxZW11YXJtNjQsIHFlbXVtaXBzLCBxZW11bWlwczY0LCBxZW11cHBjLCBxZW11eDg2LCBvcgorICAgICAgICAgICAgICAgIHFlbXV4ODYtNjQuCisKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIHJvb3QgZmlsZXN5c3RlbXMgcHJvdmlkZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgYXJlIGJhc2VkCisgICAgICAgICAgICAgICAgb2ZmIG9mIHRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgZXhhbXBsZSwgaWYgeW91ciB0YXJnZXQgaGFyZHdhcmUgc3lzdGVtIGlzIGEKKyAgICAgICAgICAgICAgICBCZWFnbGVCb25lIGJvYXJkIGFuZCB5b3VyIGltYWdlIGlzIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2UsIHlvdSBuZWVkCisgICAgICAgICAgICAgICAgdG8gZG93bmxvYWQgdGhlIGZvbGxvd2luZyByb290IGZpbGVzeXN0ZW0gaW1hZ2UgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGNvcmUtaW1hZ2UtbWluaW1hbC1iZWFnbGVib25lLnRhci5iejIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIENyb3NzLURldmVsb3BtZW50IEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgWW91IG11c3QgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgdGhlIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBlc3RhYmxpc2gKKyAgICAgICAgICAgICAgICBuZWNlc3NhcnkgZW52aXJvbm1lbnQgdmFyaWFibGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgc2NyaXB0IGlzIGxvY2F0ZWQgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICB3aGljaCB5b3UgaW5zdGFsbGVkIHRoZSB0b29sY2hhaW4gKGUuZy4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reV9zZGs8L2ZpbGVuYW1lPikuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSBDb3JlMiA2NC1iaXQKKyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSB+L3Bva3lfc2RrL2Vudmlyb25tZW50LXNldHVwLWNvcmUyLTY0LXBva3ktbGludXgKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4dHJhY3QgdGhlIFJvb3QgRmlsZXN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPnJ1bnFlbXUtZXh0cmFjdC1zZGs8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgYW5kIHByb3ZpZGUgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBjb21tYW5kIHRoYXQgZXh0cmFjdHMgdGhlIHJvb3QKKyAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGZyb20gYSBwcmV2aW91c2x5IGJ1aWx0IHJvb3QgZmlsZXN5c3RlbSBpbWFnZSB0aGF0CisgICAgICAgICAgICAgICAgd2FzIGRvd25sb2FkZWQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNpbmRleC1kb3dubG9hZHMnPkluZGV4IG9mIFJlbGVhc2VzPC91bGluaz4uCisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGV4dHJhY3RzIHRoZSByb290IGZpbGVzeXN0ZW0gaW50byB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZTItNjQtc2F0bzwvZmlsZW5hbWU+IGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcnVucWVtdS1leHRyYWN0LXNkayB+L0Rvd25sb2Fkcy9jb3JlLWltYWdlLXNhdG8tY29yZTItNjQudGFyLmJ6MiB+L2NvcmUyLTY0LXNhdG8KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgWW91IGNvdWxkIG5vdyBwb2ludCB0byB0aGUgdGFyZ2V0IHN5c3Jvb3QgYXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZTItNjQtc2F0bzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZWNsaXBzZS1wcm9qZWN0LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWVjbGlwc2UtcHJvamVjdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRiODM0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWVjbGlwc2UtcHJvamVjdC54bWwKQEAgLTAsMCArMSwxMjExIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorCis8Y2hhcHRlciBpZD0nc2RrLWVjbGlwc2UtcHJvamVjdCc+CisKKyAgICA8dGl0bGU+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIHlvdSBhcmUgZmFtaWxpYXIgd2l0aCB0aGUgcG9wdWxhciBFY2xpcHNlIElERSwgeW91IGNhbiB1c2UgYW4KKyAgICAgICAgRWNsaXBzZSBZb2N0byBQbHVnLWluIHRvIGFsbG93IHlvdSB0byBkZXZlbG9wLCBkZXBsb3ksIGFuZCB0ZXN0IHlvdXIKKyAgICAgICAgYXBwbGljYXRpb24gYWxsIGZyb20gd2l0aGluIEVjbGlwc2UuCisgICAgICAgIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgZ2VuZXJhbCB3b3JrZmxvdyB1c2luZyB0aGUgU0RLIGFuZCBFY2xpcHNlCisgICAgICAgIGFuZCBob3cgdG8gY29uZmlndXJlIGFuZCBzZXQgdXAgRWNsaXBzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nd29ya2Zsb3ctdXNpbmctZWNsaXBzZSc+CisgICAgICAgIDx0aXRsZT5Xb3JrZmxvdyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBhbmQgc3VwcG9ydGluZyBsaXN0IHN1bW1hcml6ZSB0aGUKKyAgICAgICAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IGdlbmVyYWwgd29ya2Zsb3cgdGhhdCBlbXBsb3lzIGJvdGggdGhlCisgICAgICAgICAgICBTREsgRWNsaXBzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1lY2xpcHNlLWRldi1mbG93LnBuZyIKKyAgICAgICAgICAgICAgICB3aWR0aD0iN2luIiBkZXB0aD0iN2luIiBhbGlnbj0iY2VudGVyIiBzY2FsZT0iMTAwIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyZSB0aGUgaG9zdCBzeXN0ZW0gZm9yIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFNlZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBib3RoIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgYmUgc3VyZSB5b3VyIGhvc3Qgc3lzdGVtIGhhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnh0ZXJtPC9maWxlbmFtZT4gcGFja2FnZSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlY3VyZSB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIGltYWdlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGhhdmUgYSB0YXJnZXQga2VybmVsIGltYWdlIHRoYXQgaGFzIGJlZW4gYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5EZXBlbmRpbmcgb24gd2hldGhlciB0aGUgWW9jdG8gUHJvamVjdCBoYXMgYQorICAgICAgICAgICAgICAgICAgICBwcmUtYnVpbHQgaW1hZ2UgdGhhdCBtYXRjaGVzIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZQorICAgICAgICAgICAgICAgICAgICBhbmQgd2hlcmUgeW91IGFyZSBnb2luZyB0byBydW4gdGhlIGltYWdlIHdoaWxlIHlvdQorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wIHlvdXIgYXBwbGljYXRpb24gKFFFTVUgb3IgcmVhbCBoYXJkd2FyZSksIHRoZQorICAgICAgICAgICAgICAgICAgICBhcmVhIGZyb20gd2hpY2ggeW91IGdldCB0aGUgaW1hZ2UgZGlmZmVycy4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZCB0aGUgaW1hZ2UgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19NQUNISU5FU19ETF9VUkw7Jz48ZmlsZW5hbWU+bWFjaGluZXM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGdvaW5nIHRvIGRldmVsb3AgYW5kIHRlc3QgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIG9uIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZCB0aGUgaW1hZ2UgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19RRU1VX0RMX1VSTDsnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWNoaW5lcy9xZW11PC9maWxlbmFtZT48L3VsaW5rPiBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBzdXBwb3J0ZWQgYW5kIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnb2luZyB0byBkZXZlbG9wIGFuZCB0ZXN0IHlvdXIgYXBwbGljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgUUVNVSBlbXVsYXRvci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB5b3VyIGltYWdlIGlmIHlvdSBjYW5ub3QgZmluZCBhIHByZS1idWlsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHNpbWlsYXIgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmUsIHlvdSBjYW4gbW9kaWZ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSBiZWZvcmUgeW91IGJ1aWxkIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I3VzaW5nLWRldnRvb2wtdG8tcGF0Y2gtdGhlLWtlcm5lbCc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBQYXRjaCB0aGUgS2VybmVsPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBNYW51YWwgZm9yIGFuIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPjxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTREs8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIFNESyBwcm92aWRlcyBhIHRhcmdldC1zcGVjaWZpYyBjcm9zcy1kZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHRoZSByb290IGZpbGVzeXN0ZW0sIHRoZSBRRU1VIGVtdWxhdG9yLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgdG9vbHMgdGhhdCBjYW4gaGVscCB5b3UgZGV2ZWxvcCB5b3VyIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGluc3RhbGwgdGhlIFNESywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxpbmctdGhlLXNkayc+SW5zdGFsbGluZyB0aGUgU0RLPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VjdXJlIHRoZSB0YXJnZXQgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgQ3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGZpbmQgYW5kIGRvd25sb2FkIHRoZSBhcHByb3ByaWF0ZSByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gYW5kIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4uPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGZpbmQgdGhlIHRhcmJhbGxzIGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBzYW1lIGFyZWEgdXNlZCBmb3IgdGhlIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGltYWdlIHlvdSBhcmUgcnVubmluZywgdGhlCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB5b3UgbmVlZCBkaWZmZXJzLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBkZXZlbG9waW5nIGFuIGFwcGxpY2F0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgcnVucyBvbiBhbiBpbWFnZSB0aGF0IHN1cHBvcnRzIFNhdG8sIHlvdSBuZWVkIHRvIGdldCBhCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0aGF0IHN1cHBvcnRzIFNhdG8uPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGZpbmQgdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz48ZmlsZW5hbWU+dG9vbGNoYWluczwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gZ2V0IHRoZSBjb3JyZWN0IHRvb2xjaGFpbiBmb3IgeW91cgorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0IGFuZCB5b3VyIHRhcmdldCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3Nkay1sb2NhdGluZy1wcmUtYnVpbHQtc2RrLWluc3RhbGxlcnMnPkxvY2F0aW5nIFByZS1CdWlsdCBTREsgSW5zdGFsbGVyczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsaW5nLXRoZS1zZGsnPkluc3RhbGxpbmcgdGhlIFNESzwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluc3RhbGxhdGlvbiBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBhbHRlcm5hdGl2ZSB0byBkb3dubG9hZGluZyBhbiBTREssIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHRoZSBTREsgaW5zdGFsbGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGJ1aWxkaW5nIHRoZSBpbnN0YWxsZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBoZWxwZnVsIHJlc291cmNlIGZvciBidWlsZGluZyBhbiBpbnN0YWxsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPkNvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhbmQgYnVpbGQgeW91ciBhcHBsaWNhdGlvbjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgbmVlZCB0byBoYXZlIHNvdXJjZSBmaWxlcyBmb3IgeW91cgorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgZmlsZXMsIHlvdSBjYW4gdXNlIHRoZSBFY2xpcHNlIElERQorICAgICAgICAgICAgICAgICAgICB0byBpbXBvcnQgdGhlbSBhbmQgYnVpbGQgdGhlIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgbm90IHVzaW5nIEVjbGlwc2UsIHlvdSBuZWVkIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMgeW91IGhhdmUgaW5zdGFsbGVkIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVwbG95IHRoZSBpbWFnZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbjwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgRWNsaXBzZSBJREUsIHlvdSBjYW4gZGVwbG95IHlvdXIgaW1hZ2UgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIG9yIHRvIFFFTVUgdGhyb3VnaCB0aGUgcHJvamVjdCdzIHByZWZlcmVuY2VzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIEVjbGlwc2UgdG8gbG9hZCBhbmQgdGVzdCB5b3VyIGltYWdlCisgICAgICAgICAgICAgICAgICAgIHVuZGVyIFFFTVUuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSc+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBhbmQgZGVidWcgdGhlIGFwcGxpY2F0aW9uPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91ciBhcHBsaWNhdGlvbiBpcyBkZXBsb3llZCwgeW91IG5lZWQgdG8gdGVzdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgV2l0aGluIHRoZSBFY2xpcHNlIElERSwgeW91IGNhbiB1c2UgdGhlIGRlYnVnZ2luZworICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBhbG9uZyB3aXRoIHN1cHBvcnRlZCBwZXJmb3JtYW5jZSBlbmhhbmNpbmcKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saW51eHRvb2xzLyc+TGludXggVG9vbHM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2FkdC1lY2xpcHNlJz4KKyAgICAgICAgPHRpdGxlPldvcmtpbmcgV2l0aGluIEVjbGlwc2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIEVjbGlwc2UgSURFIGlzIGEgcG9wdWxhciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgaXQKKyAgICAgICAgICAgIGZ1bGx5IHN1cHBvcnRzIGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIHlvdSBpbnN0YWxsIGFuZCBjb25maWd1cmUgdGhlIEVjbGlwc2UgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgUGx1Zy1pbiBpbnRvIHRoZSBFY2xpcHNlIElERSwgeW91IG1heGltaXplIHlvdXIgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgZXhwZXJpZW5jZS4KKyAgICAgICAgICAgIEluc3RhbGxpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoZSBQbHVnLWluIHJlc3VsdHMgaW4gYW4KKyAgICAgICAgICAgIGVudmlyb25tZW50IHRoYXQgaGFzIGV4dGVuc2lvbnMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGxldAorICAgICAgICAgICAgeW91IG1vcmUgZWFzaWx5IGRldmVsb3Agc29mdHdhcmUuCisgICAgICAgICAgICBUaGVzZSBleHRlbnNpb25zIGFsbG93IGZvciBjcm9zcy1jb21waWxhdGlvbiwgZGVwbG95bWVudCwgYW5kCisgICAgICAgICAgICBleGVjdXRpb24gb2YgeW91ciBvdXRwdXQgaW50byBhIFFFTVUgZW11bGF0aW9uIHNlc3Npb24gYXMgd2VsbAorICAgICAgICAgICAgYXMgYWN0dWFsIHRhcmdldCBoYXJkd2FyZS4KKyAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBwZXJmb3JtIGNyb3NzLWRlYnVnZ2luZyBhbmQgcHJvZmlsaW5nLgorICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IGFsc28gc3VwcG9ydHMgcGVyZm9ybWFuY2UgZW5oYW5jaW5nCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvJz50b29sczwvdWxpbms+CisgICAgICAgICAgICB0aGF0IGFsbG93IHlvdSB0byBwZXJmb3JtIHJlbW90ZSBwcm9maWxpbmcsIHRyYWNpbmcsCisgICAgICAgICAgICBjb2xsZWN0aW9uIG9mIHBvd2VyIGRhdGEsIGNvbGxlY3Rpb24gb2YgbGF0ZW5jeSBkYXRhLCBhbmQKKyAgICAgICAgICAgIGNvbGxlY3Rpb24gb2YgcGVyZm9ybWFuY2UgZGF0YS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBib3RoIHRoZSBOZW9uCisgICAgICAgICAgICAgICAgYW5kIE1hcnMgdmVyc2lvbnMgb2YgdGhlIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBOZW9uCisgICAgICAgICAgICAgICAgcmVsZWFzZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBNYXJzIHZlcnNpb24gb2YgRWNsaXBzZQorICAgICAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QsIHNlZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYXBwZW5kaXgtbGF0ZXN0LXlwLWVjbGlwc2UtcGx1Zy1pbic+QXBwZW5kaXggQzwvbGluaz4uCisgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tc2V0dGluZy11cC10aGUtZWNsaXBzZS1pZGUnPgorICAgICAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdGhlIE5lb24gVmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBJREU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBkZXZlbG9wIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUsIHlvdSBuZWVkIHRvIGRvIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIE5lb24gdmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlIHRoZSBFY2xpcHNlIElERS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCBFY2xpcHNlIGZyb20geW91ciBkaXN0cmlidXRpb24ncyBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5zdGFsbCBFY2xpcHNlIGZyb20gdGhlIG9mZmljaWFsIEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgc2l0ZSBhcyBkaXJlY3RlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24taW5zdGFsbGluZy1lY2xpcHNlLWlkZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBsb2NhdGUsIGluc3RhbGwsIGFuZCBjb25maWd1cmUKKyAgICAgICAgICAgICAgICAgICAgTmVvbiBFY2xpcHNlOgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSB0aGUgTmVvbiBEb3dubG9hZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmVvbi8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmVvbi88L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayB0aHJvdWdoIHRoZSAiRG93bmxvYWQiIGJ1dHRvbnMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5wYWNrIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW92ZSB0byBhIGNsZWFuIGRpcmVjdG9yeSBhbmQgdW5wYWNrIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmJhbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgdGFyIC14enZmIH4vRG93bmxvYWRzL2VjbGlwc2UtaW5zdC1saW51eDY0LnRhci5negorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIHVucGFja3MgaW50byBhIGZvbGRlciBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlY2xpcHNlLWluc3RhbGxlciIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCB0aGUgSW5zdGFsbGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gbGF1bmNoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9lY2xpcHNlLWluc3RhbGxlcgorICAgICAkIC4vZWNsaXBzZS1pbnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3QgWW91ciBJREU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSBsaXN0LCBzZWxlY3QgdGhlICJFY2xpcHNlIElERSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDL0MrKyBEZXZlbG9wZXJzIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCB0aGUgU29mdHdhcmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgdGhlIGRlZmF1bHQgImNwcC1uZW9uIiBkaXJlY3RvcnkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2sgIkluc3RhbGwiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VwdCBhbnkgbGljZW5zZSBhZ3JlZW1lbnRzIGFuZCBhcHByb3ZlIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIE5lb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgIkxhdW5jaCIgYnV0dG9uIGFuZCBhY2NlcHQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCAid29ya3NwYWNlIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1tYXJzLWVjbGlwc2UtaWRlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBjb25maWd1cmUgdGhlIE5lb24gRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIGhvdyB5b3UgaW5zdGFsbGVkIEVjbGlwc2UgYW5kIHdoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBoYXZlIGFscmVhZHkgZG9uZSwgc29tZSBvZiB0aGUgb3B0aW9ucyB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXBwZWFyLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNhbm5vdCBmaW5kIGFuIG9wdGlvbiBhcyBkaXJlY3RlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgaXQgaGFzIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgRWNsaXBzZSBpcyBydW5uaW5nIGFuZCB5b3UgYXJlIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrYmVuY2guCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJJbnN0YWxsIE5ldyBTb2Z0d2FyZSIgZnJvbSB0aGUgIkhlbHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5lb24gLSBodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvcmVsZWFzZXMvbmVvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSAiV29yayB3aXRoOiIgcHVsbC1kb3duIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kIHRoZSBib3ggbmV4dCB0byAiTGludXggVG9vbHMiIGFuZCBzZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQy9DKysgUmVtb3RlIChPdmVyIFRDRi9URSkgUnVuL0RlYnVnIExhdW5jaGVyCisgICAgIFRNIFRlcm1pbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGFuZCB0aGUgYm94IG5leHQgdG8gIk1vYmlsZSBhbmQgRGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQiIGFuZCBzZWxlY3QgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQy9DKysgUmVtb3RlIChPdmVyIFRDRi9URSkgUnVuL0RlYnVnIExhdW5jaGVyCisgICAgIFJlbW90ZSBTeXN0ZW0gRXhwbG9yZXIgVXNlciBBY3Rpb25zCisgICAgIFRNIFRlcm1pbmFsCisgICAgIFRDRiBSZW1vdGUgU3lzdGVtIEV4cGxvcmVyIGFkZC1pbgorICAgICBUQ0YgVGFyZ2V0IEV4cGxvcmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGFuZCB0aGUgYm94IG5leHQgdG8gIlByb2dyYW1taW5nIExhbmd1YWdlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBmb2xsb3dpbmcgYm94OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQy9DKysgRGV2ZWxvcG1lbnQgVG9vbHMgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gYnkgY2xpY2tpbmcgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlICJOZXh0IiBhbmQgIkZpbmlzaCIgYnV0dG9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWluc3RhbGxpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgb3IgQWNjZXNzaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbnN0YWxsIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4gaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBJREUgb25lIG9mIHR3byB3YXlzOiAgdXNlIHRoZSBZb2N0byBQcm9qZWN0J3MKKyAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBVcGRhdGUgc2l0ZSB0byBpbnN0YWxsIHRoZSBwcmUtYnVpbHQgcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICBvciBidWlsZCBhbmQgaW5zdGFsbCB0aGUgcGx1Zy1pbiBmcm9tIHRoZSBsYXRlc3QKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tbmV3LXNvZnR3YXJlJz4KKyAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIFByZS1idWlsdCBQbHVnLWluIGZyb20gdGhlIFlvY3RvIFByb2plY3QgRWNsaXBzZSBVcGRhdGUgU2l0ZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIHNpdGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0IHVwIHRoZSBFY2xpcHNlIElERS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBFY2xpcHNlLCBzZWxlY3QgIkluc3RhbGwgTmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIiBmcm9tIHRoZSAiSGVscCIgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiQWRkLi4uIiBpbiB0aGUgIldvcmsgd2l0aDoiIGFyZWEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW50ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZFQ0xJUFNFX0RMX1BMVUdJTl9VUkw7L25lb248L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgVVJMIGZpZWxkIGFuZCBwcm92aWRlIGEgbWVhbmluZ2Z1bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGluIHRoZSAiTmFtZSIgZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIiB0byBoYXZlIHRoZSBlbnRyeSBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgZW50cnkgZm9yIHRoZSBwbHVnLWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBkcm9wLWRvd24gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVjayB0aGUgYm94ZXMgbmV4dCB0byB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFlvY3RvIFByb2plY3QgU0RLIFBsdWctaW4KKyAgICAgWW9jdG8gUHJvamVjdCBEb2N1bWVudGF0aW9uIHBsdWctaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXRlIHRoZSByZW1haW5pbmcgc29mdHdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHN0ZXBzIGFuZCB0aGVuIHJlc3RhcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgSURFIHRvIGZpbmlzaCB0aGUgaW5zdGFsbGF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwbHVnLWluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgIk9LIiB3aGVuIHByb21wdGVkIGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIHNvZnR3YXJlIHRoYXQgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24temlwLWZpbGUtbWV0aG9kJz4KKyAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIFBsdWctaW4gVXNpbmcgdGhlIExhdGVzdCBTb3VyY2UgQ29kZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZXN0IHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBKREsgMS44KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgWDExLXJlbGF0ZWQgcGFja2FnZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCB4YXV0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gYSBuZXcgdGVybWluYWwgc2hlbGwsIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IHdpdGg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2VjbGlwc2UtcG9reQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIEdpdCB0byBjcmVhdGUgdGhlIGNvcnJlY3QgdGFnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9lY2xpcHNlLXBva3kKKyAgICAgJCBnaXQgY2hlY2tvdXQgbmVvbi95b2N0by0mRElTVFJPOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY3JlYXRlcyBhIGxvY2FsIHRhZyBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmVvbi95b2N0by0mRElTVFJPOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VkIG9uIHRoZSBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9yaWdpbi9uZW9uLW1hc3RlcjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgYXJlIHB1dCBpbnRvIGEgZGV0YWNoZWQgSEVBRCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgZmluZSBzaW5jZSB5b3UgYXJlIG9ubHkgZ29pbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgYnVpbGRpbmcgYW5kIG5vdCBkZXZlbG9waW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZSB0byB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aGluIHRoZSBHaXQgcmVwb3NpdG9yeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIHNjcmlwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCB1cCB0aGUgbG9jYWwgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgcnVubmluZyB0aGUgc2V0dXAgc2NyaXB0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgLi9zZXR1cC5zaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdGhlIHNjcmlwdCBmaW5pc2hlcyBleGVjdXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHByb21wdHMgeW91IHdpdGggaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW4gdGhlIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCwgd2hpY2ggaXMgYWxzbyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEdpdCByZXBvc2l0b3J5IGNyZWF0ZWQgZWFybGllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCBhcyBkaXJlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBwcm92aWRlIHRoZSB0YWcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBicmFuY2gsIGFuZCBhIHJlbGVhc2UgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBFQ0xJUFNFX0hPTUU9L2hvbWUvc2NvdHRyaWYvZWNsaXBzZS1wb2t5L3NjcmlwdHMvZWNsaXBzZSAuL2J1aWxkLnNoIC1sIG5lb24veW9jdG8tJkRJU1RSTzsgbWFzdGVyIHlvY3RvLSZESVNUUk87IDI+JmFtcDsxIHwgdGVlIGJ1aWxkLmxvZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGNvbW1hbmQgYWRkcyB0aGUgdGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFycy95b2N0by0mRElTVFJPOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5IRUFEPC9maWxlbmFtZT4sIHRoZW4gdGVsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHNjcmlwdCB0byB1c2UgdGhlIGxvY2FsICgtbCkgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrb3V0IGZvciB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIHNjcmlwdCwgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9yZy55b2N0by5zZGstPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cmVsZWFzZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5kYXRlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LWFyY2hpdmUuemlwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5lY2Vzc2FyeSwgc3RhcnQgdGhlIEVjbGlwc2UgSURFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBiZSBzdXJlIHlvdSBhcmUgaW4gdGhlIFdvcmtiZW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiSGVscCIgcHVsbC1kb3duIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkFkZCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhbnl0aGluZyB5b3Ugd2FudCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWUiIGZpZWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJBcmNoaXZlIiBhbmQgYnJvd3NlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaSVAgZmlsZSB5b3UgYnVpbHQgZWFybGllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBaSVAgZmlsZSBzaG91bGQgbm90IGJlICJ1bnppcHBlZCIsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0IGJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+KmFyY2hpdmUuemlwPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IHJ1bm5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+IHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgIk9LIiBidXR0b24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2sgdGhlIGJveGVzIHRoYXQgYXBwZWFyIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsYXRpb24gd2luZG93IHRvIGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBZb2N0byBQcm9qZWN0IFNESyBQbHVnLWluCisgICAgIFlvY3RvIFByb2plY3QgRG9jdW1lbnRhdGlvbiBwbHVnLWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaW5pc2ggdGhlIGluc3RhbGxhdGlvbiBieSBjbGlja2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBhcHByb3ByaWF0ZSBidXR0b25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNsaWNrICJPSyIgd2hlbiBwcm9tcHRlZCBhYm91dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIHNvZnR3YXJlIHRoYXQgY29udGFpbnMgdW5zaWduZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN0YXJ0IHRoZSBFY2xpcHNlIElERSBpZiBuZWNlc3NhcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gY29uZmlndXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBZb2N0byBQbHVnLWluIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gaW52b2x2ZXMKKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZyB0aGUgQ3Jvc3MgQ29tcGlsZXIgb3B0aW9ucyBhbmQgdGhlIFRhcmdldAorICAgICAgICAgICAgICAgICAgICBvcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbnMgeW91IGNob29zZSBiZWNvbWUgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgZm9yIGFsbCBwcm9qZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGRvIGhhdmUgb3Bwb3J0dW5pdGllcyB0byBjaGFuZ2UgdGhlbSBsYXRlciB3aGVuCisgICAgICAgICAgICAgICAgICAgIHlvdSBjb25maWd1cmUgdGhlIHByb2plY3QgKHNlZSB0aGUgZm9sbG93aW5nIHNlY3Rpb24pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBzdGFydCwgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZyBmcm9tIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBJREU6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlICJQcmVmZXJlbmNlcyIgZnJvbSB0aGUgIldpbmRvdyIgbWVudSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgdGhlIFByZWZlcmVuY2VzIERpYWxvZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiWW9jdG8gUHJvamVjdCBTREsiIHRvIGRpc3BsYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBzY3JlZW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN1Yi1zZWN0aW9ucyBkZXNjcmliZSBob3cgdG8gY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgIHRoZSBwbHVnLWluLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIGRlc2NyaXB0aW9ucywgYSBzdGFydC10by1maW5pc2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUgZm9yIHByZXBhcmluZyBhIFFFTVUgaW1hZ2UgZm9yIHVzZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIGlzIHJlZmVyZW5jZWQgYXMgdGhlICJ3aWtpIiBhbmQgaXMgbGlua2VkCisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZXhhbXBsZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz4gQ29va2Jvb2sgZ3VpZGUgdG8gTWFraW5nIGFuIEVjbGlwc2UgRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtY3Jvc3MtY29tcGlsZXItb3B0aW9ucyc+CisgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtQ29tcGlsZXIgT3B0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDcm9zcyBDb21waWxlciBvcHRpb25zIGVuYWJsZSBFY2xpcHNlIHRvIHVzZSB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBjcm9zcyBjb21waWxlciB0b29sY2hhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBUbyBjb25maWd1cmUgdGhlc2Ugb3B0aW9ucywgeW91IG11c3Qgc2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZSBvZiB0b29sY2hhaW4sIHBvaW50IHRvIHRoZSB0b29sY2hhaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoZSBzeXNyb290IGxvY2F0aW9uLCBhbmQgc2VsZWN0IHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0aW5nIHRoZSBUb29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U3RhbmRhbG9uZSBwcmUtYnVpbHQgdG9vbGNoYWluPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgQ3Jvc3MgQ29tcGlsZXIgT3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN0YW5kYWxvbmUgUHJlLWJ1aWx0IFRvb2xjaGFpbjo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgdHlwZSB3aGVuIHlvdSBhcmUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHN0YW5kLWFsb25lIGNyb3NzLXRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZGV2ZWxvcGVyIGFuZCBkbyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJ1aWxkIGEgdGFyZ2V0IGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHlvdSBqdXN0IHdhbnQgdG8gdXNlIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvb2xjaGFpbiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIGtlcm5lbCBhbmQgdGFyZ2V0IHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB5b3UgaGF2ZSBkb3dubG9hZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGxlZCBhIHByZS1idWlsdCB0b29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYW4gZXhpc3RpbmcgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBTeXN0ZW0gRGVyaXZlZCBUb29sY2hhaW46PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGlzIHR5cGUgaWYgeW91IGJ1aWx0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3Ugc2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgdXNpbmcgdGhlIHRvb2xjaGFpbiBidWlsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBidW5kbGVkIGluc2lkZSB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGNyZWF0ZWQgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRhYmxlIGltYWdlIHVzaW5nIHRoZSBzdGVwcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB5b3Ugd291bGQgc2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3BlY2lmeSB0aGUgVG9vbGNoYWluIFJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhIHN0YW5kLWFsb25lIHByZS1idWlsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHlvdSBzaG91bGQgYmUgcG9pbnRpbmcgdG8gd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgaW5zdGFsbGVkIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsaW5nLXRoZS1zZGsnPkluc3RhbGxpbmcgdGhlIFNESzwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgU0RLIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZC48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBhcmUgdXNpbmcgYSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCB0b29sY2hhaW4sIHRoZSBwYXRoIHlvdSBwcm92aWRlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRvb2xjaGFpbiBSb290IExvY2F0aW9uPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB3aGljaCB5b3UgcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgKGUuZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TcGVjaWZ5IFN5c3Jvb3QgTG9jYXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbG9jYXRpb24gaXMgd2hlcmUgdGhlIHJvb3QgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSByZXNpZGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgbG9jYXRpb24gZGVwZW5kcyBvbiB3aGVyZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseSBleHRyYWN0ZWQgYW5kIGluc3RhbGxlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGZpbGVzeXN0ZW0gd2hlbiB5b3UgZWl0aGVyIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IG9yIGRvd25sb2FkZWQgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvd25sb2FkZWQgdGhlIHJvb3QgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IGl0LCB5b3UgbXVzdCBkb3dubG9hZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zYXRvLXNkazwvZmlsZW5hbWU+IGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBidWlsZCBhbnkgYy9jKysgcHJvamVjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSB5b3UgcHJlcGFyZWQgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdXNpbmcgdGhlIHN0ZXBzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzbywgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NWV9RRU1VX1JPT1RGUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgeW91IHdvdWxkIGJyb3dzZSB0byBhbmQgc2VsZWN0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL01ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIHRoZSB0b29sY2hhaW4gYW5kIG9uIGhvdyB0byBleHRyYWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpbnN0YWxsIHRoZSBzeXNyb290IGZpbGVzeXN0ZW0sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IHRoZSBUYXJnZXQgQXJjaGl0ZWN0dXJlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyB0aGUgdHlwZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSB5b3UgYXJlIGdvaW5nIHRvIHVzZSBvciBlbXVsYXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIHB1bGwtZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VGFyZ2V0IEFyY2hpdGVjdHVyZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUgdG8gbWFrZSB5b3VyIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHB1bGwtZG93biBtZW51IHNob3VsZCBoYXZlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGFyY2hpdGVjdHVyZSB5b3UgbmVlZCBpcyBub3QgbGlzdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBtZW51LCB5b3Ugd2lsbCBuZWVkIHRvIGJ1aWxkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNxcy1idWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLXRhcmdldC1vcHRpb25zJz4KKyAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBUYXJnZXQgT3B0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNob29zZSB0byBlbXVsYXRlIGhhcmR3YXJlIHVzaW5nIHRoZSBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICBlbXVsYXRvciwgb3IgeW91IGNhbiBjaG9vc2UgdG8gcnVuIHlvdXIgaW1hZ2Ugb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UUVNVTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdpbGwgYmUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgZW11bGF0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcgdGhlIGVtdWxhdG9yLCB5b3UgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGxvY2F0ZSB0aGUga2VybmVsIGFuZCBzcGVjaWZ5IGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20gb3B0aW9ucy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3RlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGtlcm5lbCB5b3UgYnVpbHQgd2lsbCBiZSBsb2NhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwZXJmb3JtZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzcGVjaWZ5IHlvdXIgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IHBhdGggZm9sbG93ZWQgYnkgdGhlIGltYWdlIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvYnpJbWFnZS1xZW11eDg2LmJpbjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3Ugc2VsZWN0ZWQgdGhlIHN0YW5kYWxvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlLWJ1aWx0IHRvb2xjaGFpbiwgdGhlIHByZS1idWlsdCBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgZG93bmxvYWRlZCBpcyBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IHNwZWNpZmllZCB3aGVuIHlvdSBkb3dubG9hZGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk1vc3QgY3VzdG9tIG9wdGlvbnMgYXJlIGZvciBhZHZhbmNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRRU1VIHVzZXJzIHRvIGZ1cnRoZXIgY3VzdG9taXplIHRoZWlyIFFFTVUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBiZXR3ZWVuIHBhaXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZWQgYnJhY2tldHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgb3B0aW9ucyBtdXN0IGJlIHNwZWNpZmllZCBvdXRzaWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFja2V0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIG9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlcmlhbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9ncmFwaGljPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a3ZtPC9maWxlbmFtZT4gbXVzdCBhbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2lkZSB0aGUgYnJhY2tldHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPm1hbiBxZW11PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBnZXQgaGVscCBvbiBhbGwgdGhlIG9wdGlvbnMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIHVzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBzZXJpYWwg4oCYJmx0Oy1tIDI1NiAtZnVsbC1zY3JlZW4mZ3Q74oCZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHRoZSBtb2RlLCBTeXNyb290IGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBhcyBwYXJ0IG9mIHRoZSBDcm9zcy1Db21waWxlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zIGNvbmZpZ3VyYXRpb24gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TeXNyb290IExvY2F0aW9uOjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHRlcm5hbCBIVzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdpbGwgYmUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsIGhhcmR3YXJlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiQXBwbHkiIGFuZCAiT0siIHRvIHNhdmUgeW91ciBwbHVnLWluCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNyZWF0aW5nLXRoZS1wcm9qZWN0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyB0aGUgUHJvamVjdDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIHR3byB0eXBlcyBvZiBwcm9qZWN0czogIEF1dG90b29scy1iYXNlZCwgb3IKKyAgICAgICAgICAgICAgICBNYWtlZmlsZS1iYXNlZC4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBjcmVhdGUgQXV0b3Rvb2xzLWJhc2VkCisgICAgICAgICAgICAgICAgcHJvamVjdHMgZnJvbSB3aXRoaW4gdGhlIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBNYWtlZmlsZS1iYXNlZCBwcm9qZWN0cyBpbiBhCisgICAgICAgICAgICAgICAgdGVybWluYWwgd2luZG93LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21ha2VmaWxlLWJhc2VkLXByb2plY3RzJz5NYWtlZmlsZS1CYXNlZCBQcm9qZWN0czwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gcHJvamVjdCBuYW1lcworICAgICAgICAgICAgICAgICAgICAoZS5nLiBzcGFjZXMsIHVuZGVyc2NvcmVzLCBldGMuKS4gIERvaW5nIHNvIGNhbgorICAgICAgICAgICAgICAgICAgICBjYXVzZSBjb25maWd1cmF0aW9uIHRvIGZhaWwuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBjcmVhdGUgYSBwcm9qZWN0IGJhc2VkIG9uIGEgWW9jdG8gdGVtcGxhdGUgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICBkaXNwbGF5IHRoZSBzb3VyY2UgY29kZSwgZm9sbG93IHRoZXNlIHN0ZXBzOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJDIFByb2plY3QiIGZyb20gdGhlICJGaWxlIC0+IE5ldyIgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Zb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMgUHJvamVjdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCA8ZmlsZW5hbWU+SGVsbG8gV29ybGQgQU5TSSBDIEF1dG90b29scyBQcm9qZWN0czwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhbiBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdCBiYXNlZCBvbiBhIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBQdXQgYSBuYW1lIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlByb2plY3QgbmFtZTo8L2ZpbGVuYW1lPiBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCB1c2UgaHlwaGVucyBhcyBwYXJ0IG9mIHRoZSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+aGVsbG88L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk5leHQiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBpbiB0aGUgdmFyaW91cyBmaWVsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbmlzaCIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlICJvcGVuIHBlcnNwZWN0aXZlIiBwcm9tcHQgYXBwZWFycywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrICJZZXMiIHNvIHRoYXQgeW91IGluIHRoZSBDL0MrKyBwZXJzcGVjdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGxlZnQtaGFuZCBuYXZpZ2F0aW9uIHBhbmUgc2hvd3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGlzcGxheSB5b3VyIHNvdXJjZSBieSBkb3VibGUgY2xpY2tpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0J3Mgc291cmNlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWNyb3NzLXRvb2xjaGFpbnMnPgorICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBDcm9zcy1Ub29sY2hhaW5zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGVhcmxpZXIgc2VjdGlvbiwKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbmVvbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IiwKKyAgICAgICAgICAgICAgICBzZXRzIHVwIHRoZSBkZWZhdWx0IHByb2plY3QgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBvdmVycmlkZSB0aGVzZSBzZXR0aW5ncyBmb3IgYSBnaXZlbiBwcm9qZWN0IGJ5CisgICAgICAgICAgICAgICAgZm9sbG93aW5nIHRoZXNlIHN0ZXBzOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJZb2N0byBQcm9qZWN0IFNldHRpbmdzIiBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIlByb2plY3QgLT4gUHJvcGVydGllcyIgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VsZWN0aW9uIGJyaW5ncyB1cCB0aGUgWW9jdG8gUHJvamVjdCBTZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgRGlhbG9nIGFuZCBhbGxvd3MgeW91IHRvIG1ha2UgY2hhbmdlcyBzcGVjaWZpYyB0bworICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW5kaXZpZHVhbCBwcm9qZWN0LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJ5IGRlZmF1bHQsIHRoZSBDcm9zcyBDb21waWxlciBPcHRpb25zIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0IE9wdGlvbnMgZm9yIGEgcHJvamVjdCBhcmUgaW5oZXJpdGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIHlvdSBwcm92aWRlZCB1c2luZyB0aGUgUHJlZmVyZW5jZXMgRGlhbG9nCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgZWFybGllciBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgU2V0dGluZ3MgRGlhbG9nIGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlIHRob3NlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTWFrZSBvciB2ZXJpZnkgeW91ciBjb25maWd1cmF0aW9ucyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGFuZCBjbGljayAiT0siLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJpZ2h0LWNsaWNrIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgIlJlY29uZmlndXJlIFByb2plY3QiIGZyb20gdGhlIHBvcC11cCBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWxlY3Rpb24gcmVjb25maWd1cmVzIHRoZSBwcm9qZWN0IGJ5IHJ1bm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvZ2VuLnNoPC9maWxlbmFtZT4gaW4gdGhlIHdvcmtzcGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgYWxzbyBydW5zCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlidG9vbGl6ZTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFjbG9jYWw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9oZWFkZXI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvbWFrZSAtLWE8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Li9jb25maWd1cmU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIG9uIHRoZSAiQ29uc29sZSIgdGFiIGJlbmVhdGggeW91ciBzb3VyY2UgY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2VlIHRoZSByZXN1bHRzIG9mIHJlY29uZmlndXJpbmcgeW91ciBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tYnVpbGRpbmctdGhlLXByb2plY3QnPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIHRoZSBQcm9qZWN0PC90aXRsZT4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBidWlsZCB0aGUgcHJvamVjdCBzZWxlY3QgIkJ1aWxkIEFsbCIgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAiUHJvamVjdCIgbWVudS4KKyAgICAgICAgICAgICAgICBUaGUgY29uc29sZSBzaG91bGQgdXBkYXRlIGFuZCB5b3UgY2FuIG5vdGUgdGhlCisgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsZXIgeW91IGFyZSB1c2luZy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyAiWW9jdG8gUHJvamVjdCBTREsgQXV0b3Rvb2xzIiBwcm9qZWN0cywKKyAgICAgICAgICAgICAgICAgICAgdGhlIEVjbGlwc2UgSURFIG1pZ2h0IGRpc3BsYXkgZXJyb3IgbWVzc2FnZXMgZm9yCisgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9ucy9TeW1ib2xzL1R5cGVzIHRoYXQgY2Fubm90IGJlICJyZXNvbHZlZCIsCisgICAgICAgICAgICAgICAgICAgIGV2ZW4gd2hlbiB0aGUgcmVsYXRlZCBpbmNsdWRlIGZpbGUgaXMgbGlzdGVkIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IG5hdmlnYXRvciBhbmQgd2hlbiB0aGUgcHJvamVjdCBpcyBhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMgb25seSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gYWRkIGEgbmV3CisgICAgICAgICAgICAgICAgICAgIGxpbmtlZCBmb2xkZXIgdG8gdGhlIGFwcHJvcHJpYXRlIHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGVzZSBzdGVwcyB0byBhZGQgdGhlIGxpbmtlZCBmb2xkZXI6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJGb2xkZXIiIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZpbGUgPiBOZXc8L2ZpbGVuYW1lPiBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSAiTmV3IEZvbGRlciIgRGlhbG9nLCBzZWxlY3QgIkxpbmsgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGUgbG9jYXRpb24gKGxpbmtlZCBmb2xkZXIpIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiQnJvd3NlIiB0byBuYXZpZ2F0ZSB0byB0aGUgaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlciBpbnNpZGUgdGhlIHNhbWUgc3lzcm9vdCBsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiT0siLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJGaW5pc2giIHRvIHNhdmUgdGhlIGxpbmtlZCBmb2xkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tc3RhcnRpbmctcWVtdS1pbi11c2VyLXNwYWNlLW5mcy1tb2RlJz4KKyAgICAgICAgICAgIDx0aXRsZT5TdGFydGluZyBRRU1VIGluIFVzZXItU3BhY2UgTkZTIE1vZGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBzdGFydCB0aGUgUUVNVSBlbXVsYXRvciBmcm9tIHdpdGhpbiBFY2xpcHNlLCBmb2xsb3cKKyAgICAgICAgICAgICAgICB0aGVzZSBzdGVwczoKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCisgICAgICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIFFFTVUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4cG9zZSBhbmQgc2VsZWN0ICJFeHRlcm5hbCBUb29scworICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgLi4uIiBmcm9tIHRoZSAiUnVuIC0+IEV4dGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICBUb29scyIgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGUgYW5kIHNlbGVjdCB5b3VyIGltYWdlIGluIHRoZSBuYXZpZ2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbCB0byB0aGUgbGVmdAorICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnFlbXVfaTU4Ni1wb2t5LWxpbnV4PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJSdW4iIHRvIGxhdW5jaCBRRU1VLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhvc3Qgb24gd2hpY2ggeW91IGFyZSBydW5uaW5nIFFFTVUgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgdGhlIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4gdXRpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgdG8gYmUgYWJsZSB0byBtYWtlIFJQQyBjYWxscyBvbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIG9uIHRoYXQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBRRU1VIGRvZXMgbm90IGludm9rZSBhbmQgeW91IHJlY2VpdmUgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcyBpbnZvbHZpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LCBmb2xsb3cgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMgdG8gZ2V0IHRoZSBzZXJ2aWNlIHJ1bm5pbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgb24gYSBuZXcgVWJ1bnR1IDE2LjA0IExUUworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiwgeW91IG11c3QgZG8gdGhlIGZvbGxvd2luZyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIGdldCBRRU1VIHRvIGxhdW5jaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgcnBjYmluZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBpbnN0YWxsaW5nIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gZWRpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9pbml0LmQvcnBjYmluZDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE9QVElPTlM9Ii1pIC13IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBtb2RpZnlpbmcgdGhlIGZpbGUsIHlvdSBuZWVkIHRvIHN0YXJ0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gc2VydmljZSBwb3J0bWFwIHJlc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgbmVlZGVkLCBlbnRlciB5b3VyIGhvc3Qgcm9vdCBwYXNzd29yZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNoZWxsIHdpbmRvdyBhdCB0aGUgcHJvbXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzZXRzIHVwIGEgPGZpbGVuYW1lPlRhcCAwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gbmVlZGVkIGZvciBydW5uaW5nIGluIHVzZXItc3BhY2UgTkZTCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdhaXQgZm9yIFFFTVUgdG8gbGF1bmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgUUVNVSBsYXVuY2hlcywgeW91IGNhbiBiZWdpbiBvcGVyYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGF0IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgT25lIHVzZWZ1bCB0YXNrIGF0IHRoaXMgcG9pbnQgd291bGQgYmUgdG8gZGV0ZXJtaW5lCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgSVAgQWRkcmVzcyBmb3IgdGhlIHVzZXItc3BhY2UgTkZTIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmlmY29uZmlnPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBRRU1VIG1hY2hpbmUgYXBwZWFycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHh0ZXJtIHdpbmRvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgYWRkcmVzcyB0byBoZWxwIHlvdSBzZWUgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIElQIGFkZHJlc3MgdGhlIGluc3RhbmNlIG9mIFFFTVUgaXMgdXNpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tZGVwbG95aW5nLWFuZC1kZWJ1Z2dpbmctdGhlLWFwcGxpY2F0aW9uJz4KKyAgICAgICAgICAgIDx0aXRsZT5EZXBsb3lpbmcgYW5kIERlYnVnZ2luZyB0aGUgQXBwbGljYXRpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmNlIHRoZSBRRU1VIGVtdWxhdG9yIGlzIHJ1bm5pbmcgdGhlIGltYWdlLCB5b3UgY2FuIGRlcGxveQorICAgICAgICAgICAgICAgIHlvdXIgYXBwbGljYXRpb24gdXNpbmcgdGhlIEVjbGlwc2UgSURFIGFuZCB0aGVuIHVzZQorICAgICAgICAgICAgICAgIHRoZSBlbXVsYXRvciB0byBwZXJmb3JtIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gZGVwbG95IHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ3VycmVudGx5LCBFY2xpcHNlIGRvZXMgbm90IHN1cHBvcnQgU1NIIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgZm9yd2FyZGluZy4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpZiB5b3UgbmVlZCB0byBydW4gb3IgZGVidWcgYSByZW1vdGUKKyAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gdXNpbmcgdGhlIGhvc3QgZGlzcGxheSwgeW91IG11c3QgY3JlYXRlIGEKKyAgICAgICAgICAgICAgICAgICAgdHVubmVsaW5nIGNvbm5lY3Rpb24gZnJvbSBvdXRzaWRlIEVjbGlwc2UgYW5kIGtlZXAKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjb25uZWN0aW9uIGFsaXZlIGR1cmluZyB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiBhIG5ldyB0ZXJtaW5hbCwgcnVuIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzc2ggLVhZIDxyZXBsYWNlYWJsZT51c2VyX25hbWU8L3JlcGxhY2VhYmxlPkA8cmVwbGFjZWFibGU+cmVtb3RlX2hvc3RfaXA8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBhYm92ZSBmb3JtLCBoZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzc2ggLVhZIHJvb3RAMTkyLjE2OC43LjIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCBhZGQgdGhlIGNvbW1hbmQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZWQgaW4gRWNsaXBzZSdzIHJ1biBjb25maWd1cmF0aW9uIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBleHBvcnQgRElTUExBWT06MTAuMAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gbm90IGRlc3Ryb3kgdGhlIGNvbm5lY3Rpb24gZHVyaW5nIHlvdXIgUUVNVQorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uIChpLmUuIGRvIG5vdAorICAgICAgICAgICAgICAgICAgICBleGl0IG91dCBvZiBvciBjbG9zZSB0aGF0IHNoZWxsKS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkRlYnVnIENvbmZpZ3VyYXRpb25zLi4uIiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIlJ1biIgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgbGVmdCBhcmVhLCBleHBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DL0MrK1JlbW90ZSBBcHBsaWNhdGlvbjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSB5b3VyIHByb2plY3QgYW5kIHNlbGVjdCBpdCB0byBicmluZworICAgICAgICAgICAgICAgICAgICAgICAgdXAgYSBuZXcgdGFiYmVkIHZpZXcgaW4gdGhlIERlYnVnIENvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBEaWFsb2cuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlICJEZWJ1Z2dlciIgdGFiIHRvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2wgZGVidWdnZXIgeW91IGFyZSB1c2luZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gY2hhbmdlIHRvIHRoZSBkZWJ1Z2dlciBwZXJzcGVjdGl2ZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGljayBvbiB0aGUgIk1haW4iIHRhYi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byB0aGUgUUVNVSBpbnN0YW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgYnkgY2xpY2tpbmcgb24gIm5ldyIuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgPGZpbGVuYW1lPlNTSDwvZmlsZW5hbWU+LCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgbWVhbnMgU2VjdXJlIFNvY2tldCBTaGVsbCBhbmQgdGhlbiBjbGljayAiT0siLgorICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzZWxlY3QgYSBUQ0YgY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGVhciBvdXQgdGhlICJDb25uZWN0aW9uIG5hbWUiIGZpZWxkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZW50ZXIgYW55IG5hbWUgeW91IHdhbnQgZm9yIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFB1dCB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIGNvbm5lY3Rpb24gaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiSG9zdCIgZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgUUVNVSwgdGhlIGRlZmF1bHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4xOTIuMTY4LjcuMjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgYSBwcmV2aW91cyBRRU1VIHNlc3Npb24gZGlkIG5vdCBleGl0CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbmx5LCB0aGUgSVAgYWRkcmVzcyBpbmNyZW1lbnRzIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+MTkyLjE2OC43LjM8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIElQIGFkZHJlc3MgZm9yIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVNVSBzZXNzaW9uIGJ5IGxvb2tpbmcgaW4gdGhlIHh0ZXJtIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVucyB3aGVuIHlvdSBsYXVuY2ggUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFbnRlciA8ZmlsZW5hbWU+cm9vdDwvZmlsZW5hbWU+LCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIFFFTVUsIGZvciB0aGUgIlVzZXIiIGZpZWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBsZWF2ZSB0aGUgcGFzc3dvcmQgZmllbGQgZW1wdHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbmlzaCIgdG8gY2xvc2UgdGhlIE5ldyBDb25uZWN0aW9ucyBEaWFsb2cuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgbmVjZXNzYXJ5LCB1c2UgdGhlIGRyb3AtZG93biBtZW51IG5vdyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIiBmaWVsZCBhbmQgcGljayB0aGUgSVAgQWRkcmVzcyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudGVyZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1pbmcgeW91IGFyZSBjb25uZWN0aW5nIGFzIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBmb3IgUUVNVSB4ODYtNjQgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXMgcHJvdmlkZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIlJlbW90ZSBBYnNvbHV0ZSBGaWxlIFBhdGggZm9yIEMvQysrIEFwcGxpY2F0aW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQsIGJyb3dzZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Jvb3QvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+UHJvamVjdE5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPi9ob21lL3Jvb3QvaGVsbG88L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgYWxzbyBicm93c2UgdG8gYW55IG90aGVyIHBhdGggeW91IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGFjY2VzcyB0byBvbiB0aGUgdGFyZ2V0IHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2JpbjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2NhdGlvbiBpcyB3aGVyZSB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgb24gdGhlIFFFTVUgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGZhaWwgdG8gYnJvd3NlIHRvIGFuZCBzcGVjaWZ5IGFuIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwgUUVNVSB3aWxsIG5vdCB1bmRlcnN0YW5kIHdoYXQgdG8gcmVtb3RlbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgaXMgaGVscGZ1bCBpbiB0aGF0IGl0IGF1dG8gZmlsbHMgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gbmFtZSBmb3IgeW91IGFzc3VtaW5nIHlvdSBicm93c2VkIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXBzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHByb21wdGVkIHRvIHByb3ZpZGUgYSB1c2VybmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRvIG9wdGlvbmFsbHkgc2V0IGEgcGFzc3dvcmQsIGJlIHN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBwcm92aWRlICJyb290IiBhcyB0aGUgdXNlcm5hbWUgYW5kIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmUgdGhlIHBhc3N3b3JkIGZpZWxkIGJsYW5rLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGJyb3dzaW5nIHRvIGEgZGlyZWN0b3J5IGZhaWxzIG9yIHRpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIGJ1dCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3NoPC9maWxlbmFtZT4gaW50byB5b3VyIFFFTVUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRhcmdldCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgYW5kIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBwcm94aWVzIHNldCB1cCwgaXQgaXMgbGlrZWx5IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgaXMgc2VuZGluZyB0aGUgU1NIIHRyYWZmaWMgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGVpdGhlciB1c2UgVENGICwgb3IgY2xpY2sgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWd1cmUgcHJveHkgc2V0dGluZ3MiIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiBkaWFsb2cgYW5kIGFkZCB0aGUgdGFyZ2V0IElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIHRvIHRoZSAiYnlwYXNzIHByb3h5IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IGFsc28gbmVlZCB0byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY3RpdmUgUHJvdmlkZXIiIGZyb20gTmF0aXZlIHRvIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGNoYW5nZSB0byB0aGUgIkRlYnVnIiBwZXJzcGVjdGl2ZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRGVidWciCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0IHRoZSBkZWJ1ZyBwZXJzcGVjdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi11c2luZy1MaW51eHRvb2xzJz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBMaW51eHRvb2xzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIgaW4gdGhlIG1hbnVhbCwgcGVyZm9ybWFuY2UgdG9vbHMgZXhpc3QKKyAgICAgICAgICAgICAgICAoTGludXh0b29scykgdGhhdCBlbmhhbmNlIHlvdXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4KKyAgICAgICAgICAgICAgICBUaGVzZSB0b29scyBhcmUgYWlkcyBpbiBkZXZlbG9waW5nIGFuZCBkZWJ1Z2dpbmcKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgYW5kIGltYWdlcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHJ1biB0aGVzZSB0b29scyBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUgdGhyb3VnaAorICAgICAgICAgICAgICAgIHRoZSAiTGludXh0b29scyIgbWVudS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb25maWd1cmUgYW5kIHVzZSB0aGVzZSB0b29scywKKyAgICAgICAgICAgICAgICBzZWUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvJz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvPC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWV4dGVuc2libGUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKaW5kZXggMTQ5NjQ3Ni4uNDQ0ZDgxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKQEAgLTE1LDcgKzE1LDcgQEAKICAgICAgICAgdG8gYW4gaW1hZ2UsIG1vZGlmeSB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyBjb21wb25lbnQsIHRlc3QKICAgICAgICAgY2hhbmdlcyBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlLCBhbmQgZWFzZSBpbnRlZ3JhdGlvbiBpbnRvIHRoZSByZXN0IG9mCiAgICAgICAgIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LgogICAgICAgICA8bm90ZT4KICAgICAgICAgICAgIEZvciBhIHNpZGUtYnktc2lkZSBjb21wYXJpc29uIG9mIG1haW4gZmVhdHVyZXMgc3VwcG9ydGVkIGZvciBhbgogICAgICAgICAgICAgZXh0ZW5zaWJsZSBTREsgYXMgY29tcGFyZWQgdG8gYSBzdGFuZGFyZCBTREssIHNlZSB0aGUKQEAgLTIzNSwxNSArMjM1LDI4IEBACiAgICAgICAgICAgICB5b3UgYnVpbGQsIHRlc3QgYW5kIHBhY2thZ2Ugc29mdHdhcmUgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESywgYW5kCiAgICAgICAgICAgICBvcHRpb25hbGx5IGludGVncmF0ZSBpdCBpbnRvIGFuIGltYWdlIGJ1aWx0IGJ5IHRoZSBPcGVuRW1iZWRkZWQKICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpcyBub3QgbGltaXRlZCB0bworICAgICAgICAgICAgICAgIHRoZSBleHRlbnNpYmxlIFNESy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGhlbHAgeW91IGVhc2lseQorICAgICAgICAgICAgICAgIGRldmVsb3AgYW55IHByb2plY3Qgd2hvc2UgYnVpbGQgb3V0cHV0IG11c3QgYmUgcGFydCBvZiBhbgorICAgICAgICAgICAgICAgIGltYWdlIGJ1aWx0IHVzaW5nIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kIGxpbmUgaXMgb3JnYW5pemVkCiAgICAgICAgICAgICBzaW1pbGFybHkgdG8KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dpdCc+R2l0PC91bGluaz4gaW4gdGhhdCBpdCBoYXMgYQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiBpbiB0aGF0IGl0IGhhcyBhCiAgICAgICAgICAgICBudW1iZXIgb2Ygc3ViLWNvbW1hbmRzIGZvciBlYWNoIGZ1bmN0aW9uLgogICAgICAgICAgICAgWW91IGNhbiBydW4gPGZpbGVuYW1lPmRldnRvb2wgLS1oZWxwPC9maWxlbmFtZT4gdG8gc2VlIGFsbCB0aGUKICAgICAgICAgICAgIGNvbW1hbmRzLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtZGV2dG9vbC1yZWZlcmVuY2UnPjxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4mbmJzcDtRdWljayBSZWZlcmVuY2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvciBhCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBxdWljayByZWZlcmVuY2UuCisgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTI5Myw3ICszMDYsNyBAQAogICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGdlbmVyYXRlcwogICAgICAgICAgICAgICAgIGEgbmV3IHJlY2lwZSBiYXNlZCBvbiBleGlzdGluZyBzb3VyY2UgY29kZS4KICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgdGFrZXMgYWR2YW50YWdlIG9mIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2RldnRvb2wtdGhlLXdvcmtzcGFjZS1sYXllci1zdHJ1Y3R1cmUnPndvcmtzcGFjZTwvdWxpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV2dG9vbC10aGUtd29ya3NwYWNlLWxheWVyLXN0cnVjdHVyZSc+d29ya3NwYWNlPC91bGluaz4KICAgICAgICAgICAgICAgICBsYXllciB0aGF0IG1hbnkgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kcwogICAgICAgICAgICAgICAgIHVzZS4KICAgICAgICAgICAgICAgICBUaGUgY29tbWFuZCBpcyBmbGV4aWJsZSBlbm91Z2ggdG8gYWxsb3cgeW91IHRvIGV4dHJhY3Qgc291cmNlCkBAIC02MTIsNyArNjI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdHMgdGhlbS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkaW5nIHRoZSA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IGluc3RydWN0cyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlIHRoZSBleHRyYWN0ZWQgc291cmNlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcGxhY2UgdGhlIGV4dHJhY3RlZCBzb3VyY2UuPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGhpbiB3b3Jrc3BhY2UsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhbiBhcHBlbmQgZmlsZSBmb3IgdGhlIHJlY2lwZS4KQEAgLTEyNjIsNyArMTI3NSw3IEBACiAgICAgICAgIDx0aXRsZT5Xb3JraW5nIFdpdGggUmVjaXBlczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIGJ1aWxkaW5nIGEgcmVjaXBlIHdpdGggPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiB0aGUKKyAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgYSByZWNpcGUgd2l0aCA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+LCB0aGUKICAgICAgICAgICAgIHR5cGljYWwgYnVpbGQgcHJvZ3Jlc3Npb24gaXMgYXMgZm9sbG93czoKICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1pbnRyby54bWwKaW5kZXggNjg0MDE2OS4uYjY5MjVmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWludHJvLnhtbApAQCAtOSw4ICs5LDggQEAKICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBXZWxjb21lIHRvIHRoZSBZb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKQotICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQgZXhwbGFpbnMgaG93IHRvIHVzZSBib3RoIHRoZQogICAgICAgICBZb2N0byBQcm9qZWN0IGV4dGVuc2libGUgYW5kIHN0YW5kYXJkIFNES3MgdG8gZGV2ZWxvcAogICAgICAgICBhcHBsaWNhdGlvbnMgYW5kIGltYWdlcy4KQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgICAgbmV3IGFwcGxpY2F0aW9ucyBhbmQgbGlicmFyaWVzIHRvIGFuIGltYWdlLCBtb2RpZnkgdGhlIHNvdXJjZSBvZiBhbgogICAgICAgICBleGlzdGluZyBjb21wb25lbnQsIHRlc3QgY2hhbmdlcyBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlLCBhbmQgZWFzaWx5CiAgICAgICAgIGludGVncmF0ZSBhbiBhcHBsaWNhdGlvbiBpbnRvIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+LgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtOTMsNyArOTMsNyBAQAogICAgICAgICAgICAgICAgIG1hdGNoaW5nIHN5c3Jvb3RzICh0YXJnZXQgYW5kIG5hdGl2ZSkgYWxsIGJ1aWx0IGJ5IHRoZQogICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gKGUuZy4gdGhlIFNESykuCiAgICAgICAgICAgICAgICAgVGhlIHRvb2xjaGFpbiBhbmQgc3lzcm9vdHMgYXJlIGJhc2VkIG9uIGEKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhbmQgZXh0ZW5zaW9ucywKICAgICAgICAgICAgICAgICB3aGljaCBhbGxvd3MgeW91IHRvIGNyb3NzLWRldmVsb3Agb24gdGhlIGhvc3QgbWFjaGluZSBmb3IgdGhlCiAgICAgICAgICAgICAgICAgdGFyZ2V0IGhhcmR3YXJlLgpAQCAtMjA3LDcgKzIwNyw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluPC91bGluaz4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluPC91bGluaz4KICAgICAgICAgICAgIGNvbnNpc3RzIG9mIGEgY3Jvc3MtY29tcGlsZXIsIGNyb3NzLWxpbmtlciwgYW5kIGNyb3NzLWRlYnVnZ2VyCiAgICAgICAgICAgICB0aGF0IGFyZSB1c2VkIHRvIGRldmVsb3AgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgZm9yIHRhcmdldGVkCiAgICAgICAgICAgICBoYXJkd2FyZS4KQEAgLTIxNSw3ICsyMTUsNyBAQAogICAgICAgICAgICAgYnVpbHQtaW4gPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBmdW5jdGlvbmFsaXR5LgogICAgICAgICAgICAgVGhpcyB0b29sY2hhaW4gaXMgY3JlYXRlZCBieSBydW5uaW5nIGEgU0RLIGluc3RhbGxlciBzY3JpcHQKICAgICAgICAgICAgIG9yIHRocm91Z2ggYQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgdGhhdCBpcyBiYXNlZCBvbiB5b3VyIE1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gb3IgZXh0ZW5zaW9uIGZvcgogICAgICAgICAgICAgeW91ciB0YXJnZXRlZCBkZXZpY2UuCiAgICAgICAgICAgICBUaGUgY3Jvc3MtdG9vbGNoYWluIHdvcmtzIHdpdGggYSBtYXRjaGluZyB0YXJnZXQgc3lzcm9vdC4KQEAgLTI0NSwxNiArMjQ1LDE1IEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBjbG9uZWQgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0CiAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBhbmQgeW91IGhhdmUgc291cmNlZCB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LCBRRU1VIGlzCiAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBhbmQgYXV0b21hdGljYWxseSBhdmFpbGFibGUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgZG93bmxvYWRlZCBhIFlvY3RvIFByb2plY3QgcmVsZWFzZSBhbmQgdW5wYWNrZWQKLSAgICAgICAgICAgICAgICAgICAgaXQgdG8gY3JlYXRlIGEKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQsIFFFTVUgaXMKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGFuZCBhdXRvbWF0aWNhbGx5IGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgaXQgdG8gY3JlYXRlIGEgU291cmNlIERpcmVjdG9yeSBhbmQgeW91IGhhdmUgc291cmNlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LCBRRU1VIGlzIGluc3RhbGxlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBhdmFpbGFibGUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBjcm9zcy10b29sY2hhaW4gdGFyYmFsbCBhbmQgeW91CkBAIC0yOTUsOCArMjk0LDggQEAKICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgd29ya2Zsb3cgdGhhdAogICAgICAgICAgICAgdXNlcyB0aGUgRWNsaXBzZSBJREUgYW5kIGZvciBhIGRldGFpbGVkIGV4YW1wbGUgb2YgaG93IHRvIGluc3RhbGwKICAgICAgICAgICAgIGFuZCBjb25maWd1cmUgdGhlIEVjbGlwc2UgWW9jdG8gUHJvamVjdCBQbHVnLWluLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWRldmVsb3BpbmctYXBwbGljYXRpb25zLXVzaW5nLWVjbGlwc2UnPkRldmVsb3BpbmcgQXBwbGljYXRpb25zIFVzaW5nIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+PC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWVjbGlwc2UtcHJvamVjdCc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L2xpbms+IgorICAgICAgICAgICAgQ2hhcHRlci4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMzg1LDcgKzM4NCw3IEBACiAgICAgICAgICAgICAgICAgdG8gZG93bmxvYWQgYW5kIGxlYXJuIGFib3V0IHRoZSBlbXVsYXRvci4KICAgICAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSc+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgotICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsCisgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVSB3aXRoaW4gdGhlIFlvY3RvCiAgICAgICAgICAgICAgICAgUHJvamVjdC48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgPC9vcmRlcmVkbGlzdD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCmluZGV4IDVjMjhlMzQuLjdmYzA0NzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbApAQCAtMTcsMTQgKzE3LDE0IEBACiAgICAgICAgIDwvbWVkaWFvYmplY3Q+CiAKICAgICAgICAgPHRpdGxlPgotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykKICAgICAgICAgPC90aXRsZT4KIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgogICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgTExDPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CkBAIC00NywyNCArNDcsMTkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KdW5lIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4yIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy40PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC04MSwyOCArNzYsMjkgQEAKICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CiAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZQotICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGUgYXNzb2NpYXRlZCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgIHRoaXMgWW9jdG8gUHJvamVjdCByZWxlYXNlICh2ZXJzaW9uICZZT0NUT19ET0NfVkVSU0lPTjspLAotICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIFlvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspCi0gICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbWFudWFsIGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgJllPQ1RPX0RPQ19WRVJTSU9OOy4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGxhdGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IChpZiB0aGV5IGV4aXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBmb3Igd2hpY2ggeW91IHdhbnQKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBpbi1kZXZlbG9wbWVudCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZSwgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvbGF0ZXN0L3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCkBAIC0xMTgsNiArMTE0LDggQEAKIAogICAgIDx4aTppbmNsdWRlIGhyZWY9InNkay13b3JraW5nLXByb2plY3RzLnhtbCIvPgogCisgICAgPHhpOmluY2x1ZGUgaHJlZj0ic2RrLWVjbGlwc2UtcHJvamVjdC54bWwiLz4KKwogICAgIDx4aTppbmNsdWRlIGhyZWY9InNkay1hcHBlbmRpeC1vYnRhaW4ueG1sIi8+CiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sIi8+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay13b3JraW5nLXByb2plY3RzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCmluZGV4IDU0YmM0ZDcuLjY5NjVlM2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCkBAIC0xMCw4ICsxMCw5IEBACiAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBTREsgdG9vbGNoYWluIGRpcmVjdGx5IHdpdGggTWFrZWZpbGUsCiAgICAgICAgIEF1dG90b29scywgYW5kIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IGJhc2VkCiAgICAgICAgIHByb2plY3RzLgotICAgICAgICBUaGlzIGNoYXB0ZXIgY292ZXJzIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIGVhY2ggb2YgdGhlc2UgdHlwZXMgb2YKLSAgICAgICAgcHJvamVjdHMuCisgICAgICAgIFRoaXMgY2hhcHRlciBjb3ZlcnMgdGhlIGZpcnN0IHR3bywgd2hpbGUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZWNsaXBzZS1wcm9qZWN0Jz5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvbGluaz4iCisgICAgICAgIENoYXB0ZXIgY292ZXJzIHRoZSBsYXR0ZXIuCiAgICAgPC9wYXJhPgogCiAgICAgPHNlY3Rpb24gaWQ9J2F1dG90b29scy1iYXNlZC1wcm9qZWN0cyc+CkBAIC0yNzYsMTE4NCArMjc3LDYgQEAKICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdzZGstZGV2ZWxvcGluZy1hcHBsaWNhdGlvbnMtdXNpbmctZWNsaXBzZSc+Ci0gICAgICAgIDx0aXRsZT5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB5b3UgYXJlIGZhbWlsaWFyIHdpdGggdGhlIHBvcHVsYXIgRWNsaXBzZSBJREUsIHlvdSBjYW4gdXNlIGFuCi0gICAgICAgICAgICBFY2xpcHNlIFlvY3RvIFBsdWctaW4gdG8gYWxsb3cgeW91IHRvIGRldmVsb3AsIGRlcGxveSwgYW5kIHRlc3QgeW91cgotICAgICAgICAgICAgYXBwbGljYXRpb24gYWxsIGZyb20gd2l0aGluIEVjbGlwc2UuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGdlbmVyYWwgd29ya2Zsb3cgdXNpbmcgdGhlIFNESyBhbmQgRWNsaXBzZQotICAgICAgICAgICAgYW5kIGhvdyB0byBjb25maWd1cmUgYW5kIHNldCB1cCBFY2xpcHNlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3dvcmtmbG93LXVzaW5nLWVjbGlwc2UnPgotICAgICAgICAgICAgPHRpdGxlPldvcmtmbG93IFVzaW5nIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+PC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgYW5kIHN1cHBvcnRpbmcgbGlzdCBzdW1tYXJpemUgdGhlCi0gICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgZ2VuZXJhbCB3b3JrZmxvdyB0aGF0IGVtcGxveXMgYm90aCB0aGUKLSAgICAgICAgICAgICAgICBTREsgRWNsaXBzZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1lY2xpcHNlLWRldi1mbG93LnBuZyIKLSAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjdpbiIgZGVwdGg9IjdpbiIgYWxpZ249ImNlbnRlciIgc2NhbGU9IjEwMCIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyZSB0aGUgaG9zdCBzeXN0ZW0gZm9yIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBib3RoIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBiZSBzdXJlIHlvdXIgaG9zdCBzeXN0ZW0gaGFzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnh0ZXJtPC9maWxlbmFtZT4gcGFja2FnZSBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlY3VyZSB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaGF2ZSBhIHRhcmdldCBrZXJuZWwgaW1hZ2UgdGhhdCBoYXMgYmVlbiBidWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+RGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIFlvY3RvIFByb2plY3QgaGFzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZS1idWlsdCBpbWFnZSB0aGF0IG1hdGNoZXMgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgd2hlcmUgeW91IGFyZSBnb2luZyB0byBydW4gdGhlIGltYWdlIHdoaWxlIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcCB5b3VyIGFwcGxpY2F0aW9uIChRRU1VIG9yIHJlYWwgaGFyZHdhcmUpLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgZnJvbSB3aGljaCB5b3UgZ2V0IHRoZSBpbWFnZSBkaWZmZXJzLgotICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkIHRoZSBpbWFnZSBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19NQUNISU5FU19ETF9VUkw7Jz48ZmlsZW5hbWU+bWFjaGluZXM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBzdXBwb3J0ZWQgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgZ29pbmcgdG8gZGV2ZWxvcCBhbmQgdGVzdCB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIG9uIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZCB0aGUgaW1hZ2UgZnJvbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fUUVNVV9ETF9VUkw7Jz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hY2hpbmVzL3FlbXU8L2ZpbGVuYW1lPjwvdWxpbms+IGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBzdXBwb3J0ZWQgYW5kIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgZ29pbmcgdG8gZGV2ZWxvcCBhbmQgdGVzdCB5b3VyIGFwcGxpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBRRU1VIGVtdWxhdG9yLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHlvdXIgaW1hZ2UgaWYgeW91IGNhbm5vdCBmaW5kIGEgcHJlLWJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBzaW1pbGFyIHRvIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSwgeW91IGNhbiBtb2RpZnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSBiZWZvcmUgeW91IGJ1aWxkIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwYXRjaGluZy10aGUta2VybmVsJz5QYXRjaGluZyB0aGUgS2VybmVsPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsIGZvciBhbiBleGFtcGxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPjxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTREs8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBTREsgcHJvdmlkZXMgYSB0YXJnZXQtc3BlY2lmaWMgY3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgdGhlIHJvb3QgZmlsZXN5c3RlbSwgdGhlIFFFTVUgZW11bGF0b3IsIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdG9vbHMgdGhhdCBjYW4gaGVscCB5b3UgZGV2ZWxvcCB5b3VyIGFwcGxpY2F0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpbnN0YWxsIHRoZSBTREssIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstaW5zdGFsbGluZy10aGUtc2RrJz5JbnN0YWxsaW5nIHRoZSBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VjdXJlIHRoZSB0YXJnZXQgcm9vdCBmaWxlc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIENyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbjwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZmluZCBhbmQgZG93bmxvYWQgdGhlIGFwcHJvcHJpYXRlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gYW5kIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4uPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIHRoZSB0YXJiYWxscyBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgYXJlYSB1c2VkIGZvciB0aGUga2VybmVsIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGltYWdlIHlvdSBhcmUgcnVubmluZywgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0geW91IG5lZWQgZGlmZmVycy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIGRldmVsb3BpbmcgYW4gYXBwbGljYXRpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgcnVucyBvbiBhbiBpbWFnZSB0aGF0IHN1cHBvcnRzIFNhdG8sIHlvdSBuZWVkIHRvIGdldCBhCi0gICAgICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gdGhhdCBzdXBwb3J0cyBTYXRvLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gZmluZCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz48ZmlsZW5hbWU+dG9vbGNoYWluczwvZmlsZW5hbWU+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGdldCB0aGUgY29ycmVjdCB0b29sY2hhaW4gZm9yIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3QgYW5kIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3Nkay1sb2NhdGluZy1wcmUtYnVpbHQtc2RrLWluc3RhbGxlcnMnPkxvY2F0aW5nIFByZS1CdWlsdCBTREsgSW5zdGFsbGVyczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxpbmctdGhlLXNkayc+SW5zdGFsbGluZyB0aGUgU0RLPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluc3RhbGxhdGlvbiBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGFsdGVybmF0aXZlIHRvIGRvd25sb2FkaW5nIGFuIFNESywgeW91IGNhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHRoZSBTREsgaW5zdGFsbGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBidWlsZGluZyB0aGUgaW5zdGFsbGVyLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFub3RoZXIgaGVscGZ1bCByZXNvdXJjZSBmb3IgYnVpbGRpbmcgYW4gaW5zdGFsbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPkNvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGFuZCBidWlsZCB5b3VyIGFwcGxpY2F0aW9uPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgbmVlZCB0byBoYXZlIHNvdXJjZSBmaWxlcyBmb3IgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHRoZSBmaWxlcywgeW91IGNhbiB1c2UgdGhlIEVjbGlwc2UgSURFCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBpbXBvcnQgdGhlbSBhbmQgYnVpbGQgdGhlIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG5vdCB1c2luZyBFY2xpcHNlLCB5b3UgbmVlZCB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29scyB5b3UgaGF2ZSBpbnN0YWxsZWQgdG8gY3JlYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXBsb3kgdGhlIGltYWdlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbjwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIEVjbGlwc2UgSURFLCB5b3UgY2FuIGRlcGxveSB5b3VyIGltYWdlIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgb3IgdG8gUUVNVSB0aHJvdWdoIHRoZSBwcm9qZWN0J3MgcHJlZmVyZW5jZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIEVjbGlwc2UgdG8gbG9hZCBhbmQgdGVzdCB5b3VyIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICB1bmRlciBRRU1VLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSc+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBRRU1VLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IGFuZCBkZWJ1ZyB0aGUgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91ciBhcHBsaWNhdGlvbiBpcyBkZXBsb3llZCwgeW91IG5lZWQgdG8gdGVzdCBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgRWNsaXBzZSBJREUsIHlvdSBjYW4gdXNlIHRoZSBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGFsb25nIHdpdGggc3VwcG9ydGVkIHBlcmZvcm1hbmNlIGVuaGFuY2luZwotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saW51eHRvb2xzLyc+TGludXggVG9vbHM8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYWR0LWVjbGlwc2UnPgotICAgICAgICAgICAgPHRpdGxlPldvcmtpbmcgV2l0aGluIEVjbGlwc2U8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgRWNsaXBzZSBJREUgaXMgYSBwb3B1bGFyIGRldmVsb3BtZW50IGVudmlyb25tZW50IGFuZCBpdAotICAgICAgICAgICAgICAgIGZ1bGx5IHN1cHBvcnRzIGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBpbnN0YWxsIGFuZCBjb25maWd1cmUgdGhlIEVjbGlwc2UgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIFBsdWctaW4gaW50byB0aGUgRWNsaXBzZSBJREUsIHlvdSBtYXhpbWl6ZSB5b3VyIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdCBleHBlcmllbmNlLgotICAgICAgICAgICAgICAgIEluc3RhbGxpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoZSBQbHVnLWluIHJlc3VsdHMgaW4gYW4KLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB0aGF0IGhhcyBleHRlbnNpb25zIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBsZXQKLSAgICAgICAgICAgICAgICB5b3UgbW9yZSBlYXNpbHkgZGV2ZWxvcCBzb2Z0d2FyZS4KLSAgICAgICAgICAgICAgICBUaGVzZSBleHRlbnNpb25zIGFsbG93IGZvciBjcm9zcy1jb21waWxhdGlvbiwgZGVwbG95bWVudCwgYW5kCi0gICAgICAgICAgICAgICAgZXhlY3V0aW9uIG9mIHlvdXIgb3V0cHV0IGludG8gYSBRRU1VIGVtdWxhdGlvbiBzZXNzaW9uIGFzIHdlbGwKLSAgICAgICAgICAgICAgICBhcyBhY3R1YWwgdGFyZ2V0IGhhcmR3YXJlLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBwZXJmb3JtIGNyb3NzLWRlYnVnZ2luZyBhbmQgcHJvZmlsaW5nLgotICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBhbHNvIHN1cHBvcnRzIHBlcmZvcm1hbmNlIGVuaGFuY2luZwotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy8nPnRvb2xzPC91bGluaz4KLSAgICAgICAgICAgICAgICB0aGF0IGFsbG93IHlvdSB0byBwZXJmb3JtIHJlbW90ZSBwcm9maWxpbmcsIHRyYWNpbmcsCi0gICAgICAgICAgICAgICAgY29sbGVjdGlvbiBvZiBwb3dlciBkYXRhLCBjb2xsZWN0aW9uIG9mIGxhdGVuY3kgZGF0YSwgYW5kCi0gICAgICAgICAgICAgICAgY29sbGVjdGlvbiBvZiBwZXJmb3JtYW5jZSBkYXRhLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYm90aCB0aGUgTmVvbgotICAgICAgICAgICAgICAgICAgICBhbmQgTWFycyB2ZXJzaW9ucyBvZiB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBOZW9uCi0gICAgICAgICAgICAgICAgICAgIHJlbGVhc2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIE1hcnMgdmVyc2lvbiBvZiBFY2xpcHNlCi0gICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIFlvY3RvIFByb2plY3QsIHNlZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWFwcGVuZGl4LWxhdGVzdC15cC1lY2xpcHNlLXBsdWctaW4nPkFwcGVuZGl4IEM8L2xpbms+LgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tc2V0dGluZy11cC10aGUtZWNsaXBzZS1pZGUnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRoZSBOZW9uIFZlcnNpb24gb2YgdGhlIEVjbGlwc2UgSURFPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyBkZXZlbG9wIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUsIHlvdSBuZWVkIHRvIGRvIHRoZQotICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsIHRoZSBOZW9uIHZlcnNpb24gb2YgdGhlIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZSB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbCB0aGUgRWNsaXBzZSBZb2N0byBQbHVnLWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZSB0aGUgRWNsaXBzZSBZb2N0byBQbHVnLWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIEVjbGlwc2UgZnJvbSB5b3VyIGRpc3RyaWJ1dGlvbidzIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGluc3RhbGwgRWNsaXBzZSBmcm9tIHRoZSBvZmZpY2lhbCBFY2xpcHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCBzaXRlIGFzIGRpcmVjdGVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1pbnN0YWxsaW5nLWVjbGlwc2UtaWRlJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGxvY2F0ZSwgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgICAgICAgICAgTmVvbiBFY2xpcHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSB0aGUgTmVvbiBEb3dubG9hZDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIGEgYnJvd3NlciBhbmQgZ28gdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZW9uLyc+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZW9uLzwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayB0aHJvdWdoIHRoZSAiRG93bmxvYWQiIGJ1dHRvbnMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgdGhlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVucGFjayB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3ZlIHRvIGEgY2xlYW4gZGlyZWN0b3J5IGFuZCB1bnBhY2sgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4KLSAgICAgJCB0YXIgLXh6dmYgfi9Eb3dubG9hZHMvZWNsaXBzZS1pbnN0LWxpbnV4NjQudGFyLmd6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB1bnBhY2tzIGludG8gYSBmb2xkZXIgbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVjbGlwc2UtaW5zdGFsbGVyIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIHRoZSBJbnN0YWxsZXI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gbGF1bmNoIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+L2VjbGlwc2UtaW5zdGFsbGVyCi0gICAgICQgLi9lY2xpcHNlLWluc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3QgWW91ciBJREU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgbGlzdCwgc2VsZWN0IHRoZSAiRWNsaXBzZSBJREUgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMvQysrIERldmVsb3BlcnMiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTb2Z0d2FyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgdGhlIGRlZmF1bHQgImNwcC1uZW9uIiBkaXJlY3RvcnkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrICJJbnN0YWxsIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0IGFueSBsaWNlbnNlIGFncmVlbWVudHMgYW5kIGFwcHJvdmUgYW55Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIE5lb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJMYXVuY2giIGJ1dHRvbiBhbmQgYWNjZXB0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ICJ3b3Jrc3BhY2UiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtbWFycy1lY2xpcHNlLWlkZSc+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIElERTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY29uZmlndXJlIHRoZSBOZW9uIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIGhvdyB5b3UgaW5zdGFsbGVkIEVjbGlwc2UgYW5kIHdoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBhbHJlYWR5IGRvbmUsIHNvbWUgb2YgdGhlIG9wdGlvbnMgd2lsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhcHBlYXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNhbm5vdCBmaW5kIGFuIG9wdGlvbiBhcyBkaXJlY3RlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIGl0IGhhcyBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSBFY2xpcHNlIGlzIHJ1bm5pbmcgYW5kIHlvdSBhcmUgaW4geW91cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrYmVuY2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJJbnN0YWxsIE5ldyBTb2Z0d2FyZSIgZnJvbSB0aGUgIkhlbHAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmVvbiAtIGh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9yZWxlYXNlcy9uZW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSAiV29yayB3aXRoOiIgcHVsbC1kb3duIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kIHRoZSBib3ggbmV4dCB0byAiTGludXggVG9vbHMiIGFuZCBzZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDL0MrKyBSZW1vdGUgKE92ZXIgVENGL1RFKSBSdW4vRGVidWcgTGF1bmNoZXIKLSAgICAgVE0gVGVybWluYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGFuZCB0aGUgYm94IG5leHQgdG8gIk1vYmlsZSBhbmQgRGV2aWNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IiBhbmQgc2VsZWN0IHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQy9DKysgUmVtb3RlIChPdmVyIFRDRi9URSkgUnVuL0RlYnVnIExhdW5jaGVyCi0gICAgIFJlbW90ZSBTeXN0ZW0gRXhwbG9yZXIgVXNlciBBY3Rpb25zCi0gICAgIFRNIFRlcm1pbmFsCi0gICAgIFRDRiBSZW1vdGUgU3lzdGVtIEV4cGxvcmVyIGFkZC1pbgotICAgICBUQ0YgVGFyZ2V0IEV4cGxvcmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmQgdGhlIGJveCBuZXh0IHRvICJQcm9ncmFtbWluZyBMYW5ndWFnZXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIGZvbGxvd2luZyBib3g6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQy9DKysgRGV2ZWxvcG1lbnQgVG9vbHMgU0RLCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIGJ5IGNsaWNraW5nIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9wcmlhdGUgIk5leHQiIGFuZCAiRmluaXNoIiBidXR0b25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1pbnN0YWxsaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyBvciBBY2Nlc3NpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gaW5zdGFsbCB0aGUgRWNsaXBzZSBZb2N0byBQbHVnLWluIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERSBvbmUgb2YgdHdvIHdheXM6ICB1c2UgdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBVcGRhdGUgc2l0ZSB0byBpbnN0YWxsIHRoZSBwcmUtYnVpbHQgcGx1Zy1pbgotICAgICAgICAgICAgICAgICAgICAgICAgb3IgYnVpbGQgYW5kIGluc3RhbGwgdGhlIHBsdWctaW4gZnJvbSB0aGUgbGF0ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLW5ldy1zb2Z0d2FyZSc+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgUHJlLWJ1aWx0IFBsdWctaW4gZnJvbSB0aGUgWW9jdG8gUHJvamVjdCBFY2xpcHNlIFVwZGF0ZSBTaXRlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUgc2l0ZSwgZm9sbG93IHRoZXNlIHN0ZXBzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgdXAgdGhlIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIEVjbGlwc2UsIHNlbGVjdCAiSW5zdGFsbCBOZXcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIiBmcm9tIHRoZSAiSGVscCIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiQWRkLi4uIiBpbiB0aGUgIldvcmsgd2l0aDoiIGFyZWEuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRUNMSVBTRV9ETF9QTFVHSU5fVVJMOy9uZW9uPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBVUkwgZmllbGQgYW5kIHByb3ZpZGUgYSBtZWFuaW5nZnVsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGluIHRoZSAiTmFtZSIgZmllbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIiB0byBoYXZlIHRoZSBlbnRyeSBhZGRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlICJXb3JrIHdpdGg6IiBkcm9wLWRvd24gbGlzdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIGVudHJ5IGZvciB0aGUgcGx1Zy1pbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrIHRoZSBib3hlcyBuZXh0IHRvIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFlvY3RvIFByb2plY3QgU0RLIFBsdWctaW4KLSAgICAgWW9jdG8gUHJvamVjdCBEb2N1bWVudGF0aW9uIHBsdWctaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0ZSB0aGUgcmVtYWluaW5nIHNvZnR3YXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gc3RlcHMgYW5kIHRoZW4gcmVzdGFydCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgSURFIHRvIGZpbmlzaCB0aGUgaW5zdGFsbGF0aW9uIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGx1Zy1pbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgIk9LIiB3aGVuIHByb21wdGVkIGFib3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBzb2Z0d2FyZSB0aGF0IGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29udGVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi16aXAtZmlsZS1tZXRob2QnPgotICAgICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIFBsdWctaW4gVXNpbmcgdGhlIExhdGVzdCBTb3VyY2UgQ29kZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZXN0IHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgSkRLIDEuOCsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsIFgxMS1yZWxhdGVkIHBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHhhdXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gYSBuZXcgdGVybWluYWwgc2hlbGwsIGNyZWF0ZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSB3aXRoOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4KLSAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZWNsaXBzZS1wb2t5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIEdpdCB0byBjcmVhdGUgdGhlIGNvcnJlY3QgdGFnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vZWNsaXBzZS1wb2t5Ci0gICAgICQgZ2l0IGNoZWNrb3V0IG5lb24veW9jdG8tJkRJU1RSTzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY3JlYXRlcyBhIGxvY2FsIHRhZyBuYW1lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5lb24veW9jdG8tJkRJU1RSTzs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gdGhlIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9yaWdpbi9uZW9uLW1hc3RlcjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGFyZSBwdXQgaW50byBhIGRldGFjaGVkIEhFQUQgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBmaW5lIHNpbmNlIHlvdSBhcmUgb25seSBnb2luZyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgYnVpbGRpbmcgYW5kIG5vdCBkZXZlbG9waW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZSB0byB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGhpbiB0aGUgR2l0IHJlcG9zaXRvcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2Qgc2NyaXB0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCB1cCB0aGUgbG9jYWwgYnVpbGQgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHJ1bm5pbmcgdGhlIHNldHVwIHNjcmlwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCAuL3NldHVwLnNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBzY3JpcHQgZmluaXNoZXMgZXhlY3V0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgcHJvbXB0cyB5b3Ugd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW4gdGhlIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQsIHdoaWNoIGlzIGFsc28gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEdpdCByZXBvc2l0b3J5IGNyZWF0ZWQgZWFybGllci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgYXMgZGlyZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHByb3ZpZGUgdGhlIHRhZyBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBicmFuY2gsIGFuZCBhIHJlbGVhc2UgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgRUNMSVBTRV9IT01FPS9ob21lL3Njb3R0cmlmL2VjbGlwc2UtcG9reS9zY3JpcHRzL2VjbGlwc2UgLi9idWlsZC5zaCAtbCBuZW9uL3lvY3RvLSZESVNUUk87IG1hc3RlciB5b2N0by0mRElTVFJPOyAyPiZhbXA7MSB8IHRlZSBidWlsZC5sb2cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGNvbW1hbmQgYWRkcyB0aGUgdGFnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXJzL3lvY3RvLSZESVNUUk87PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5IRUFEPC9maWxlbmFtZT4sIHRoZW4gdGVsbHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzY3JpcHQgdG8gdXNlIHRoZSBsb2NhbCAoLWwpIEdpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXQgZm9yIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIHNjcmlwdCwgdGhlIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcmcueW9jdG8uc2RrLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnJlbGVhc2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZGF0ZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi1hcmNoaXZlLnppcDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbmVjZXNzYXJ5LCBzdGFydCB0aGUgRWNsaXBzZSBJREUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBiZSBzdXJlIHlvdSBhcmUgaW4gdGhlIFdvcmtiZW5jaC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkhlbHAiIHB1bGwtZG93biBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJBZGQiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYW55dGhpbmcgeW91IHdhbnQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFtZSIgZmllbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkFyY2hpdmUiIGFuZCBicm93c2UgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaSVAgZmlsZSB5b3UgYnVpbHQgZWFybGllci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgWklQIGZpbGUgc2hvdWxkIG5vdCBiZSAidW56aXBwZWQiLCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+KmFyY2hpdmUuemlwPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSBydW5uaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiT0siIGJ1dHRvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVjayB0aGUgYm94ZXMgdGhhdCBhcHBlYXIgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsYXRpb24gd2luZG93IHRvIGluc3RhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFlvY3RvIFByb2plY3QgU0RLIFBsdWctaW4KLSAgICAgWW9jdG8gUHJvamVjdCBEb2N1bWVudGF0aW9uIHBsdWctaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaW5pc2ggdGhlIGluc3RhbGxhdGlvbiBieSBjbGlja2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgYXBwcm9wcmlhdGUgYnV0dG9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgIk9LIiB3aGVuIHByb21wdGVkIGFib3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIHNvZnR3YXJlIHRoYXQgY29udGFpbnMgdW5zaWduZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdGFydCB0aGUgRWNsaXBzZSBJREUgaWYgbmVjZXNzYXJ5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gY29uZmlndXJlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBhcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21hcnMtY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Ci0gICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluIGludm9sdmVzCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nIHRoZSBDcm9zcyBDb21waWxlciBvcHRpb25zIGFuZCB0aGUgVGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb25zIHlvdSBjaG9vc2UgYmVjb21lIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBmb3IgYWxsIHByb2plY3RzLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIGhhdmUgb3Bwb3J0dW5pdGllcyB0byBjaGFuZ2UgdGhlbSBsYXRlciB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY29uZmlndXJlIHRoZSBwcm9qZWN0IChzZWUgdGhlIGZvbGxvd2luZyBzZWN0aW9uKS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gc3RhcnQsIHlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmcgZnJvbSB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgIlByZWZlcmVuY2VzIiBmcm9tIHRoZSAiV2luZG93IiBtZW51IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgdGhlIFByZWZlcmVuY2VzIERpYWxvZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiWW9jdG8gUHJvamVjdCBTREsiIHRvIGRpc3BsYXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gc2NyZWVuLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdWItc2VjdGlvbnMgZGVzY3JpYmUgaG93IHRvIGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBsdWctaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJvdWdob3V0IHRoZSBkZXNjcmlwdGlvbnMsIGEgc3RhcnQtdG8tZmluaXNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSBmb3IgcHJlcGFyaW5nIGEgUUVNVSBpbWFnZSBmb3IgdXNlIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIGlzIHJlZmVyZW5jZWQgYXMgdGhlICJ3aWtpIiBhbmQgaXMgbGlua2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGV4YW1wbGUgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPiBDb29rYm9vayBndWlkZSB0byBNYWtpbmcgYW4gRWNsaXBzZSBEZWJ1ZyBDYXBhYmxlIEltYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtY3Jvc3MtY29tcGlsZXItb3B0aW9ucyc+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIENyb3NzLUNvbXBpbGVyIE9wdGlvbnM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcm9zcyBDb21waWxlciBvcHRpb25zIGVuYWJsZSBFY2xpcHNlIHRvIHVzZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgY3Jvc3MgY29tcGlsZXIgdG9vbGNoYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvIGNvbmZpZ3VyZSB0aGVzZSBvcHRpb25zLCB5b3UgbXVzdCBzZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZSBvZiB0b29sY2hhaW4sIHBvaW50IHRvIHRoZSB0b29sY2hhaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGUgc3lzcm9vdCBsb2NhdGlvbiwgYW5kIHNlbGVjdCB0aGUgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3RpbmcgdGhlIFRvb2xjaGFpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIGJldHdlZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TdGFuZGFsb25lIHByZS1idWlsdCB0b29sY2hhaW48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBDcm9zcyBDb21waWxlciBPcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN0YW5kYWxvbmUgUHJlLWJ1aWx0IFRvb2xjaGFpbjo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyB0eXBlIHdoZW4geW91IGFyZSB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHN0YW5kLWFsb25lIGNyb3NzLXRvb2xjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGFyZSBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIGRvIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJ1aWxkIGEgdGFyZ2V0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0ZWFkLCB5b3UganVzdCB3YW50IHRvIHVzZSBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG9vbGNoYWluIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIGtlcm5lbCBhbmQgdGFyZ2V0IHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBoYXZlIGRvd25sb2FkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGxlZCBhIHByZS1idWlsdCB0b29sY2hhaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFuIGV4aXN0aW5nIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIFN5c3RlbSBEZXJpdmVkIFRvb2xjaGFpbjo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyB0eXBlIGlmIHlvdSBidWlsdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIGFzIHBhcnQgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHNlbGVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgdXNpbmcgdGhlIHRvb2xjaGFpbiBidWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYnVuZGxlZCBpbnNpZGUgdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGNyZWF0ZWQgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWl0YWJsZSBpbWFnZSB1c2luZyB0aGUgc3RlcHMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB5b3Ugd291bGQgc2VsZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNwZWNpZnkgdGhlIFRvb2xjaGFpbiBSb290Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhIHN0YW5kLWFsb25lIHByZS1idWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluLCB5b3Ugc2hvdWxkIGJlIHBvaW50aW5nIHRvIHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyBpbnN0YWxsZWQgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxpbmctdGhlLXNkayc+SW5zdGFsbGluZyB0aGUgU0RLPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgU0RLIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyBhIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCB0b29sY2hhaW4sIHRoZSBwYXRoIHlvdSBwcm92aWRlIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VG9vbGNoYWluIFJvb3QgTG9jYXRpb248L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHlvdSBydW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgKGUuZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQ8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNwZWNpZnkgU3lzcm9vdCBMb2NhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxvY2F0aW9uIGlzIHdoZXJlIHRoZSByb290IGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlIHJlc2lkZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGxvY2F0aW9uIGRlcGVuZHMgb24gd2hlcmUgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5IGV4dHJhY3RlZCBhbmQgaW5zdGFsbGVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwcmVwYXJlZCBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdXNpbmcgdGhlIHN0ZXBzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NWV9RRU1VX1JPT1RGUzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgeW91IHdvdWxkIGJyb3dzZSB0byBhbmQgc2VsZWN0IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvTVlfUUVNVV9ST09URlM8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgdGhlIHRvb2xjaGFpbiBhbmQgb24gaG93IHRvIGV4dHJhY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpbnN0YWxsIHRoZSBzeXNyb290IGZpbGVzeXN0ZW0sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3QgdGhlIFRhcmdldCBBcmNoaXRlY3R1cmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgdGhlIHR5cGUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIHlvdSBhcmUgZ29pbmcgdG8gdXNlIG9yIGVtdWxhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIHB1bGwtZG93bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRhcmdldCBBcmNoaXRlY3R1cmU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSB0byBtYWtlIHlvdXIgc2VsZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHB1bGwtZG93biBtZW51IHNob3VsZCBoYXZlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgYXJjaGl0ZWN0dXJlIHlvdSBuZWVkIGlzIG5vdCBsaXN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBtZW51LCB5b3Ugd2lsbCBuZWVkIHRvIGJ1aWxkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNxcy1idWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLXRhcmdldC1vcHRpb25zJz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgVGFyZ2V0IE9wdGlvbnM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNob29zZSB0byBlbXVsYXRlIGhhcmR3YXJlIHVzaW5nIHRoZSBRRU1VCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW11bGF0b3IsIG9yIHlvdSBjYW4gY2hvb3NlIHRvIHJ1biB5b3VyIGltYWdlIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5RRU1VOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdpbGwgYmUgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRRU1VIGVtdWxhdG9yLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyB0aGUgZW11bGF0b3IsIHlvdSBhbHNvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGxvY2F0ZSB0aGUga2VybmVsIGFuZCBzcGVjaWZ5IGFueQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tIG9wdGlvbnMuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHNlbGVjdGVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCBrZXJuZWwgeW91IGJ1aWx0IHdpbGwgYmUgbG9jYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSB5b3UgcGVyZm9ybWVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB5b3Ugc3BlY2lmeSB5b3VyIEJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkgcGF0aCBmb2xsb3dlZCBieSB0aGUgaW1hZ2UgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvYnpJbWFnZS1xZW11eDg2LmJpbjwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3RlZCB0aGUgc3RhbmRhbG9uZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlLWJ1aWx0IHRvb2xjaGFpbiwgdGhlIHByZS1idWlsdCBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGRvd25sb2FkZWQgaXMgbG9jYXRlZCBpbiB0aGUgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3Ugc3BlY2lmaWVkIHdoZW4geW91IGRvd25sb2FkZWQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Nb3N0IGN1c3RvbSBvcHRpb25zIGFyZSBmb3IgYWR2YW5jZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgdXNlcnMgdG8gZnVydGhlciBjdXN0b21pemUgdGhlaXIgUUVNVQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBvcHRpb25zIGFyZSBzcGVjaWZpZWQgYmV0d2VlbiBwYWlyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlZCBicmFja2V0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgb3B0aW9ucyBtdXN0IGJlIHNwZWNpZmllZCBvdXRzaWRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhY2tldHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgb3B0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlcmlhbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5vZ3JhcGhpYzwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rdm08L2ZpbGVuYW1lPiBtdXN0IGFsbCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2lkZSB0aGUgYnJhY2tldHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5tYW4gcWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGdldCBoZWxwIG9uIGFsbCB0aGUgb3B0aW9ucyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIHVzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgIHNlcmlhbCDigJgmbHQ7LW0gMjU2IC1mdWxsLXNjcmVlbiZndDvigJkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIG1vZGUsIFN5c3Jvb3QgaXMgYWxyZWFkeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBhcyBwYXJ0IG9mIHRoZSBDcm9zcy1Db21waWxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9ucyBjb25maWd1cmF0aW9uIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN5c3Jvb3QgTG9jYXRpb246PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHRlcm5hbCBIVzo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgaGFyZHdhcmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiQXBwbHkiIGFuZCAiT0siIHRvIHNhdmUgeW91ciBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNyZWF0aW5nLXRoZS1wcm9qZWN0Jz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIHR3byB0eXBlcyBvZiBwcm9qZWN0czogIEF1dG90b29scy1iYXNlZCwgb3IKLSAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGUtYmFzZWQuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGNyZWF0ZSBBdXRvdG9vbHMtYmFzZWQKLSAgICAgICAgICAgICAgICAgICAgcHJvamVjdHMgZnJvbSB3aXRoaW4gdGhlIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgTWFrZWZpbGUtYmFzZWQgcHJvamVjdHMgaW4gYQotICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hbCB3aW5kb3csIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J21ha2VmaWxlLWJhc2VkLXByb2plY3RzJz5NYWtlZmlsZS1CYXNlZCBQcm9qZWN0czwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gcHJvamVjdCBuYW1lcwotICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gc3BhY2VzLCB1bmRlcnNjb3JlcywgZXRjLikuICBEb2luZyBzbyBjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlIGNvbmZpZ3VyYXRpb24gdG8gZmFpbC4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyBjcmVhdGUgYSBwcm9qZWN0IGJhc2VkIG9uIGEgWW9jdG8gdGVtcGxhdGUgYW5kIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGUgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKLSAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiQyBQcm9qZWN0IiBmcm9tIHRoZSAiRmlsZSAtPiBOZXciIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPllvY3RvIFByb2plY3QgU0RLIEF1dG90b29scyBQcm9qZWN0PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IDxmaWxlbmFtZT5IZWxsbyBXb3JsZCBBTlNJIEMgQXV0b3Rvb2xzIFByb2plY3RzPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhbiBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdCBiYXNlZCBvbiBhIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHV0IGEgbmFtZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UHJvamVjdCBuYW1lOjwvZmlsZW5hbWU+IGZpZWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCB1c2UgaHlwaGVucyBhcyBwYXJ0IG9mIHRoZSBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmhlbGxvPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJOZXh0Ii4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24gaW4gdGhlIHZhcmlvdXMgZmllbGRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJGaW5pc2giLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSAib3BlbiBwZXJzcGVjdGl2ZSIgcHJvbXB0IGFwcGVhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2sgIlllcyIgc28gdGhhdCB5b3UgaW4gdGhlIEMvQysrIHBlcnNwZWN0aXZlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBsZWZ0LWhhbmQgbmF2aWdhdGlvbiBwYW5lIHNob3dzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBwcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGlzcGxheSB5b3VyIHNvdXJjZSBieSBkb3VibGUgY2xpY2tpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCdzIHNvdXJjZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWNyb3NzLXRvb2xjaGFpbnMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtVG9vbGNoYWluczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGVhcmxpZXIgc2VjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIsCi0gICAgICAgICAgICAgICAgICAgIHNldHMgdXAgdGhlIGRlZmF1bHQgcHJvamVjdCBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBvdmVycmlkZSB0aGVzZSBzZXR0aW5ncyBmb3IgYSBnaXZlbiBwcm9qZWN0IGJ5Ci0gICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyB0aGVzZSBzdGVwczoKLSAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiWW9jdG8gUHJvamVjdCBTZXR0aW5ncyIgZnJvbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiUHJvamVjdCAtPiBQcm9wZXJ0aWVzIiBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VsZWN0aW9uIGJyaW5ncyB1cCB0aGUgWW9jdG8gUHJvamVjdCBTZXR0aW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWxvZyBhbmQgYWxsb3dzIHlvdSB0byBtYWtlIGNoYW5nZXMgc3BlY2lmaWMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbmRpdmlkdWFsIHByb2plY3QuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJ5IGRlZmF1bHQsIHRoZSBDcm9zcyBDb21waWxlciBPcHRpb25zIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCBPcHRpb25zIGZvciBhIHByb2plY3QgYXJlIGluaGVyaXRlZCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgeW91IHByb3ZpZGVkIHVzaW5nIHRoZSBQcmVmZXJlbmNlcyBEaWFsb2cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgZWFybGllciBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbmVvbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgU2V0dGluZ3MgRGlhbG9nIGFsbG93cyB5b3UgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSB0aG9zZSBkZWZhdWx0IHNldHRpbmdzIGZvciBhIGdpdmVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIG9yIHZlcmlmeSB5b3VyIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGFuZCBjbGljayAiT0siLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJpZ2h0LWNsaWNrIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ICJSZWNvbmZpZ3VyZSBQcm9qZWN0IiBmcm9tIHRoZSBwb3AtdXAgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNlbGVjdGlvbiByZWNvbmZpZ3VyZXMgdGhlIHByb2plY3QgYnkgcnVubmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvZ2VuLnNoPC9maWxlbmFtZT4gaW4gdGhlIHdvcmtzcGFjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB5b3VyIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBhbHNvIHJ1bnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlidG9vbGl6ZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9oZWFkZXI8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b21ha2UgLS1hPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uL2NvbmZpZ3VyZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIG9uIHRoZSAiQ29uc29sZSIgdGFiIGJlbmVhdGggeW91ciBzb3VyY2UgY29kZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNlZSB0aGUgcmVzdWx0cyBvZiByZWNvbmZpZ3VyaW5nIHlvdXIgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWJ1aWxkaW5nLXRoZS1wcm9qZWN0Jz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRvIGJ1aWxkIHRoZSBwcm9qZWN0IHNlbGVjdCAiQnVpbGQgQWxsIiBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAiUHJvamVjdCIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGNvbnNvbGUgc2hvdWxkIHVwZGF0ZSBhbmQgeW91IGNhbiBub3RlIHRoZQotICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlciB5b3UgYXJlIHVzaW5nLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgIllvY3RvIFByb2plY3QgU0RLIEF1dG90b29scyIgcHJvamVjdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgRWNsaXBzZSBJREUgbWlnaHQgZGlzcGxheSBlcnJvciBtZXNzYWdlcyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9ucy9TeW1ib2xzL1R5cGVzIHRoYXQgY2Fubm90IGJlICJyZXNvbHZlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBldmVuIHdoZW4gdGhlIHJlbGF0ZWQgaW5jbHVkZSBmaWxlIGlzIGxpc3RlZCBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgbmF2aWdhdG9yIGFuZCB3aGVuIHRoZSBwcm9qZWN0IGlzIGFibGUgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZXNlIGNhc2VzIG9ubHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIGFkZCBhIG5ldwotICAgICAgICAgICAgICAgICAgICAgICAgbGlua2VkIGZvbGRlciB0byB0aGUgYXBwcm9wcmlhdGUgc3lzcm9vdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGVzZSBzdGVwcyB0byBhZGQgdGhlIGxpbmtlZCBmb2xkZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJGb2xkZXIiIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GaWxlID4gTmV3PC9maWxlbmFtZT4gbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgIk5ldyBGb2xkZXIiIERpYWxvZywgc2VsZWN0ICJMaW5rIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZSBsb2NhdGlvbiAobGlua2VkIGZvbGRlcikiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJCcm93c2UiIHRvIG5hdmlnYXRlIHRvIHRoZSBpbmNsdWRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlciBpbnNpZGUgdGhlIHNhbWUgc3lzcm9vdCBsb2NhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJPSyIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbmlzaCIgdG8gc2F2ZSB0aGUgbGlua2VkIGZvbGRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1zdGFydGluZy1xZW11LWluLXVzZXItc3BhY2UtbmZzLW1vZGUnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5TdGFydGluZyBRRU1VIGluIFVzZXItU3BhY2UgTkZTIE1vZGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRvIHN0YXJ0IHRoZSBRRU1VIGVtdWxhdG9yIGZyb20gd2l0aGluIEVjbGlwc2UsIGZvbGxvdwotICAgICAgICAgICAgICAgICAgICB0aGVzZSBzdGVwczoKLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhwb3NlIGFuZCBzZWxlY3QgIkV4dGVybmFsIFRvb2xzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgLi4uIiBmcm9tIHRoZSAiUnVuIC0+IEV4dGVybmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9vbHMiIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRlIGFuZCBzZWxlY3QgeW91ciBpbWFnZSBpbiB0aGUgbmF2aWdhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsIHRvIHRoZSBsZWZ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnFlbXVfaTU4Ni1wb2t5LWxpbnV4PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJSdW4iIHRvIGxhdW5jaCBRRU1VLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaG9zdCBvbiB3aGljaCB5b3UgYXJlIHJ1bm5pbmcgUUVNVSBtdXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgdGhlIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4gdXRpbGl0eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIHRvIGJlIGFibGUgdG8gbWFrZSBSUEMgY2FsbHMgb24gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgb24gdGhhdCBtYWNoaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBRRU1VIGRvZXMgbm90IGludm9rZSBhbmQgeW91IHJlY2VpdmUgZXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMgaW52b2x2aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4sIGZvbGxvdyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMgdG8gZ2V0IHRoZSBzZXJ2aWNlIHJ1bm5pbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIG9uIGEgbmV3IFVidW50dSAxNi4wNCBMVFMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uLCB5b3UgbXVzdCBkbyB0aGUgZm9sbG93aW5nIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIGdldCBRRU1VIHRvIGxhdW5jaDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHJwY2JpbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBpbnN0YWxsaW5nIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGVkaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2luaXQuZC9ycGNiaW5kPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgbGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBPUFRJT05TPSItaSAtdyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBtb2RpZnlpbmcgdGhlIGZpbGUsIHlvdSBuZWVkIHRvIHN0YXJ0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBzZXJ2aWNlIHBvcnRtYXAgcmVzdGFydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5lZWRlZCwgZW50ZXIgeW91ciBob3N0IHJvb3QgcGFzc3dvcmQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hlbGwgd2luZG93IGF0IHRoZSBwcm9tcHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzZXRzIHVwIGEgPGZpbGVuYW1lPlRhcCAwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIG5lZWRlZCBmb3IgcnVubmluZyBpbiB1c2VyLXNwYWNlIE5GUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FpdCBmb3IgUUVNVSB0byBsYXVuY2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT25jZSBRRU1VIGxhdW5jaGVzLCB5b3UgY2FuIGJlZ2luIG9wZXJhdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGF0IGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSB1c2VmdWwgdGFzayBhdCB0aGlzIHBvaW50IHdvdWxkIGJlIHRvIGRldGVybWluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBJUCBBZGRyZXNzIGZvciB0aGUgdXNlci1zcGFjZSBORlMgYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmlmY29uZmlnPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgSVAgYWRkcmVzcyBvZiB0aGUgUUVNVSBtYWNoaW5lIGFwcGVhcnMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeHRlcm0gd2luZG93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgYWRkcmVzcyB0byBoZWxwIHlvdSBzZWUgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSVAgYWRkcmVzcyB0aGUgaW5zdGFuY2Ugb2YgUUVNVSBpcyB1c2luZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWRlcGxveWluZy1hbmQtZGVidWdnaW5nLXRoZS1hcHBsaWNhdGlvbic+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkRlcGxveWluZyBhbmQgRGVidWdnaW5nIHRoZSBBcHBsaWNhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgUUVNVSBlbXVsYXRvciBpcyBydW5uaW5nIHRoZSBpbWFnZSwgeW91IGNhbiBkZXBsb3kKLSAgICAgICAgICAgICAgICAgICAgeW91ciBhcHBsaWNhdGlvbiB1c2luZyB0aGUgRWNsaXBzZSBJREUgYW5kIHRoZW4gdXNlCi0gICAgICAgICAgICAgICAgICAgIHRoZSBlbXVsYXRvciB0byBwZXJmb3JtIGRlYnVnZ2luZy4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGRlcGxveSB0aGUgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudGx5LCBFY2xpcHNlIGRvZXMgbm90IHN1cHBvcnQgU1NIIHBvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGlmIHlvdSBuZWVkIHRvIHJ1biBvciBkZWJ1ZyBhIHJlbW90ZQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gdXNpbmcgdGhlIGhvc3QgZGlzcGxheSwgeW91IG11c3QgY3JlYXRlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHR1bm5lbGluZyBjb25uZWN0aW9uIGZyb20gb3V0c2lkZSBFY2xpcHNlIGFuZCBrZWVwCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbm5lY3Rpb24gYWxpdmUgZHVyaW5nIHlvdXIgd29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiBhIG5ldyB0ZXJtaW5hbCwgcnVuIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3NoIC1YWSA8cmVwbGFjZWFibGU+dXNlcl9uYW1lPC9yZXBsYWNlYWJsZT5APHJlcGxhY2VhYmxlPnJlbW90ZV9ob3N0X2lwPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBhYm92ZSBmb3JtLCBoZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3NoIC1YWSByb290QDE5Mi4xNjguNy4yCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCBhZGQgdGhlIGNvbW1hbmQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVkIGluIEVjbGlwc2UncyBydW4gY29uZmlndXJhdGlvbiBiZWZvcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgRElTUExBWT06MTAuMAotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBub3QgZGVzdHJveSB0aGUgY29ubmVjdGlvbiBkdXJpbmcgeW91ciBRRU1VCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uIChpLmUuIGRvIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCBvdXQgb2Ygb3IgY2xvc2UgdGhhdCBzaGVsbCkuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiRGVidWcgQ29uZmlndXJhdGlvbnMuLi4iIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJ1biIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgbGVmdCBhcmVhLCBleHBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Qy9DKytSZW1vdGUgQXBwbGljYXRpb248L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGUgeW91ciBwcm9qZWN0IGFuZCBzZWxlY3QgaXQgdG8gYnJpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cCBhIG5ldyB0YWJiZWQgdmlldyBpbiB0aGUgRGVidWcgQ29uZmlndXJhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWFsb2cuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlICJEZWJ1Z2dlciIgdGFiIHRvIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy10b29sIGRlYnVnZ2VyIHlvdSBhcmUgdXNpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBjaGFuZ2UgdG8gdGhlIGRlYnVnZ2VyIHBlcnNwZWN0aXZlIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayBvbiB0aGUgIk1haW4iIHRhYi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiB0byB0aGUgUUVNVSBpbnN0YW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGNsaWNraW5nIG9uICJuZXciLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCA8ZmlsZW5hbWU+U1NIPC9maWxlbmFtZT4sIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhbnMgU2VjdXJlIFNvY2tldCBTaGVsbCBhbmQgdGhlbiBjbGljayAiT0siLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc2VsZWN0IGFuIFRDRiBjb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGVhciBvdXQgdGhlICJDb25uZWN0aW9uIG5hbWUiIGZpZWxkIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGVyIGFueSBuYW1lIHlvdSB3YW50IGZvciB0aGUgY29ubmVjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXQgdGhlIElQIGFkZHJlc3MgZm9yIHRoZSBjb25uZWN0aW9uIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJIb3N0IiBmaWVsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgUUVNVSwgdGhlIGRlZmF1bHQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+MTkyLjE2OC43LjI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiBhIHByZXZpb3VzIFFFTVUgc2Vzc2lvbiBkaWQgbm90IGV4aXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbmx5LCB0aGUgSVAgYWRkcmVzcyBpbmNyZW1lbnRzIChlLmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjE5Mi4xNjguNy4zPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIElQIGFkZHJlc3MgZm9yIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgc2Vzc2lvbiBieSBsb29raW5nIGluIHRoZSB4dGVybSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zIHdoZW4geW91IGxhdW5jaCBRRU1VLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRlciA8ZmlsZW5hbWU+cm9vdDwvZmlsZW5hbWU+LCB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBkZWZhdWx0IGZvciBRRU1VLCBmb3IgdGhlICJVc2VyIiBmaWVsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGxlYXZlIHRoZSBwYXNzd29yZCBmaWVsZCBlbXB0eS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRmluaXNoIiB0byBjbG9zZSB0aGUgTmV3IENvbm5lY3Rpb25zIERpYWxvZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBuZWNlc3NhcnksIHVzZSB0aGUgZHJvcC1kb3duIG1lbnUgbm93IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIiBmaWVsZCBhbmQgcGljayB0aGUgSVAgQWRkcmVzcyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3UgYXJlIGNvbm5lY3RpbmcgYXMgdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBmb3IgUUVNVSB4ODYtNjQgU0RLCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzIHByb3ZpZGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0LCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVtb3RlIEFic29sdXRlIEZpbGUgUGF0aCBmb3IgQy9DKysgQXBwbGljYXRpb24iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQsIGJyb3dzZSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9yb290LzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlByb2plY3ROYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+L2hvbWUvcm9vdC9oZWxsbzwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgYWxzbyBicm93c2UgdG8gYW55IG90aGVyIHBhdGggeW91IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSBhY2Nlc3MgdG8gb24gdGhlIHRhcmdldCBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvYmluPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2NhdGlvbiBpcyB3aGVyZSB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIG9uIHRoZSBRRU1VIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZmFpbCB0byBicm93c2UgdG8gYW5kIHNwZWNpZnkgYW4gYXBwcm9wcmlhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwgUUVNVSB3aWxsIG5vdCB1bmRlcnN0YW5kIHdoYXQgdG8gcmVtb3RlbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyBoZWxwZnVsIGluIHRoYXQgaXQgYXV0byBmaWxscyB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gbmFtZSBmb3IgeW91IGFzc3VtaW5nIHlvdSBicm93c2VkIHRvIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcHJvbXB0ZWQgdG8gcHJvdmlkZSBhIHVzZXJuYW1lIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBvcHRpb25hbGx5IHNldCBhIHBhc3N3b3JkLCBiZSBzdXJlIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlICJyb290IiBhcyB0aGUgdXNlcm5hbWUgYW5kIHlvdSBsZWF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGFzc3dvcmQgZmllbGQgYmxhbmsuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGNoYW5nZSB0byB0aGUgIkRlYnVnIiBwZXJzcGVjdGl2ZSBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkRlYnVnIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VwdCB0aGUgZGVidWcgcGVyc3BlY3RpdmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi11c2luZy1MaW51eHRvb2xzJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgTGludXh0b29sczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIgaW4gdGhlIG1hbnVhbCwgcGVyZm9ybWFuY2UgdG9vbHMgZXhpc3QKLSAgICAgICAgICAgICAgICAgICAgKExpbnV4dG9vbHMpIHRoYXQgZW5oYW5jZSB5b3VyIGRldmVsb3BtZW50IGV4cGVyaWVuY2UuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xzIGFyZSBhaWRzIGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZwotICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgYW5kIGltYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBydW4gdGhlc2UgdG9vbHMgZnJvbSB3aXRoaW4gdGhlIEVjbGlwc2UgSURFIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgdGhlICJMaW51eHRvb2xzIiBtZW51LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbmZpZ3VyZSBhbmQgdXNlIHRoZXNlIHRvb2xzLAotICAgICAgICAgICAgICAgICAgICBzZWUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saW51eHRvb2xzLyc+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saW51eHRvb2xzLzwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLWludHJvLnhtbAppbmRleCBhNDA4MDI0Li40ZTU5ZTAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1pbnRyby54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sCkBAIC03LDcgKzcsNyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIFRvYXN0ZXIgaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPi4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPi4KICAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyIGJ1aWxkcy4KICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgYnVpbGRzIGlzIGNvbGxlY3RlZCBhbmQgc3RvcmVkIGluIGEgZGF0YWJhc2UuCiAgICAgICAgIFlvdSBjYW4gdXNlIFRvYXN0ZXIgdG8gY29uZmlndXJlIGFuZCBzdGFydCBidWlsZHMgb24gbXVsdGlwbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXJlZmVyZW5jZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UueG1sCmluZGV4IDNhNDZiNjEuLmU5ODQzOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXJlZmVyZW5jZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbApAQCAtMTQ4LDE3NyArMTQ4LDQ2IEBACiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nc2VsZWN0LXRoZS10b2FzdGVyY29uZi1qc29uLWZpbGUnPgotICAgICAgICAgICAgICAgICAgICA8dGl0bGU+VXNlIHRoZSA8ZmlsZW5hbWU+dG9hc3RlcmNvbmYuanNvbjwvZmlsZW5hbWU+IEZpbGU8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1c2UtdGhlLWZpeHR1cmUtZmVhdHVyZSc+CisgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2UgdGhlIEZpeHR1cmUgRmVhdHVyZTwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHdhbnQgdG8gdXNlIHRoZSBBZG1pbmlzdHJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlLCB5b3UgY2FuIGVkaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0b2FzdGVyLWpzb24tZmlsZXMnPjxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCByZWxvYWQgaXQgdG8gVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFRvYXN0ZXIgc3RhcnR1cCBzY3JpcHQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vYml0YmFrZS9iaW4vdG9hc3RlcjwvZmlsZW5hbWU+IHNwZWNpZmllcwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxvY2F0aW9uIG9mIGEgVG9hc3RlciBjb25maWd1cmF0aW9uIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4gYXMgdGhlIHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlRPQVNURVJfQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgaXMgdXNlZCB0byBzZXQgdXAgdGhlIGluaXRpYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gdmFsdWVzIHdpdGhpbiB0aGUgVG9hc3RlciBkYXRhYmFzZQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHRoZSBsYXllciBzb3VyY2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgVHdvIHZlcnNpb25zIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZXhpc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHZlcnNpb24gb2YgdGhlIGZpbGUgaXMgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL3RvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBjb250YWlucyB0aGUgZGVmYXVsdCBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNlY29uZCB2ZXJzaW9uIG9mIHRoZSBmaWxlIGlzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4gbGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPm1ldGEvY29uZi90b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gY29udGFpbnMgdGhlIGRlZmF1bHQgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZWRpdC10aGUtY29uZmlndXJhdGlvbi1maWxlJz4KLSAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkVkaXQgdGhlIENvbmZpZ3VyYXRpb24gRmlsZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZSB2ZXJzaW9uIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPiBmaWxlIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCB0byBzZXQgdXAgeW91ciBUb2FzdGVyIGluc3RhbmNlLgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIGZpbGUsIHlvdSB3aWxsIGZpbmQgYSBzZWN0aW9uIGZvciBsYXllciBzb3VyY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgRGphbmdvIGZpeHR1cmUgZmVhdHVyZSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciB3aGVuIHlvdSB1c2UgaXQgdG8gc3BlY2lmeSBhIGN1c3RvbSBVUkwuIFRvIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpeHR1cmUgZmVhdHVyZSwgY3JlYXRlIChvciBlZGl0KSB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvbGliL3RvYXN0ZXIub3JtL2ZpeHR1cmVzL2N1c3RvbS54bWw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGVuIHNldCB0aGUgZm9sbG93aW5nIFRvYXN0ZXIgc2V0dGluZyB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b20gVVJMOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICJsYXllcnNvdXJjZXMiOiBbCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIkxvY2FsIFlvY3RvIFByb2plY3QiLAotICAgICAgICAgICAgInNvdXJjZXR5cGUiOiAibG9jYWwiLAotICAgICAgICAgICAgImFwaXVybCI6ICIuLi8uLi8iLAotICAgICAgICAgICAgImJyYW5jaGVzIjogWyJIRUFEIiBdLAotICAgICAgICAgICAgImxheWVycyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIm9wZW5lbWJlZGRlZC1jb3JlIiwKLSAgICAgICAgICAgICAgICAgICAgImxvY2FsX3BhdGgiOiAibWV0YSIsCi0gICAgICAgICAgICAgICAgICAgICJ2Y3NfdXJsIjogInJlbW90ZTpvcmlnaW4iLAotICAgICAgICAgICAgICAgICAgICAiZGlycGF0aCI6ICJtZXRhIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJtZXRhLXBva3kiLAotICAgICAgICAgICAgICAgICAgICAibG9jYWxfcGF0aCI6ICJtZXRhLXBva3kiLAotICAgICAgICAgICAgICAgICAgICAidmNzX3VybCI6ICJyZW1vdGU6b3JpZ2luIiwKLSAgICAgICAgICAgICAgICAgICAgImRpcnBhdGgiOiAibWV0YS1wb2t5IgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJtZXRhLXlvY3RvLWJzcCIsCi0gICAgICAgICAgICAgICAgICAgICJsb2NhbF9wYXRoIjogIm1ldGEteW9jdG8tYnNwIiwKLSAgICAgICAgICAgICAgICAgICAgInZjc191cmwiOiAicmVtb3RlOm9yaWdpbiIsCi0gICAgICAgICAgICAgICAgICAgICJkaXJwYXRoIjogIm1ldGEteW9jdG8tYnNwIgotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJPcGVuRW1iZWRkZWQiLAotICAgICAgICAgICAgInNvdXJjZXR5cGUiOiAibGF5ZXJpbmRleCIsCi0gICAgICAgICAgICAiYXBpdXJsIjogImh0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2FwaS8iLAotICAgICAgICAgICAgImJyYW5jaGVzIjogWyJtYXN0ZXIiLCAiamV0aHJvIiAsImZpZG8iXQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJJbXBvcnRlZCBsYXllcnMiLAotICAgICAgICAgICAgInNvdXJjZXR5cGUiOiAiaW1wb3J0ZWQiLAotICAgICAgICAgICAgImFwaXVybCI6ICIiLAotICAgICAgICAgICAgImJyYW5jaGVzIjogWyJtYXN0ZXIiLCAiamV0aHJvIiwiZmlkbyIsICJIRUFEIl0KLQotICAgICAgICB9Ci0gICAgXSwKKyAgICAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiA/Jmd0OworICAgICAmbHQ7ZGphbmdvLW9iamVjdHMgdmVyc2lvbj0iMS4wIiZndDsKKyAgICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0udG9hc3RlcnNldHRpbmciIHBrPSIxMDAiJmd0OworICAgICAgICAgICAgICAgICAgICAgJmx0O2ZpZWxkIG5hbWU9Im5hbWUiIHR5cGU9IkNoYXJGaWVsZCImZ3Q7Q1VTVE9NX0xBWUVSSU5ERVhfU0VSVkVSJmx0Oy9maWVsZCZndDsKKyAgICAgICAgICAgICAgICAgICAgICZsdDtmaWVsZCBuYW1lPSJ2YWx1ZSIgdHlwZT0iQ2hhckZpZWxkIiZndDtodHRwczovL2xheWVycy5teV9vcmdhbml6YXRpb24ub3JnL2xheWVyaW5kZXgvYnJhbmNoL21hc3Rlci9sYXllcnMvJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7L29iamVjdCZndDsKKyAgICAgJmx0O2RqYW5nby1vYmplY3RzJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhZGQgeW91ciBvd24gbGF5ZXIgc291cmNlIHRvIHRoaXMgc2VjdGlvbiBieQotICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHRoZSBzYW1lIGZvcm1hdCB1c2VkIGZvciB0aGUgIk9wZW5FbWJlZGRlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIHNvdXJjZSBzaG93biBhYm92ZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgR2l2ZSB5b3VyIGxheWVyIHNvdXJjZSBhIG5hbWUsIHByb3ZpZGUgdGhlIFVSTCBvZiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXllciBzb3VyY2UgQVBJLCB1c2UgdGhlIHNvdXJjZSB0eXBlICJsYXllcmluZGV4IiwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0ZSB3aGljaCBicmFuY2hlcyBmcm9tIHlvdXIgbGF5ZXIgc291cmNlIHlvdSB3YW50Ci0gICAgICAgICAgICAgICAgICAgICAgICB0byBtYWtlIGF2YWlsYWJsZSB0aHJvdWdoIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIE9wZW5FbWJlZGRlZCBsYXllciBzb3VyY2UgbWFrZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBvbmx5IGl0cyAibWFzdGVyIiwgImZpZG8iLCBhbmQgImpldGhybyIKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaGVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnJhbmNoZXMgbXVzdCBtYXRjaCB0aGUgYnJhbmNoIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHdoZW4gY29uZmlndXJpbmcgeW91ciByZWxlYXNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgY29uZmlndXJlIG9uZSByZWxlYXNlIGluIFRvYXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHNldHRpbmcgaXRzIGJyYW5jaCB0byAiYnJhbmNoLW9uZSIgYW5kIHlvdSBjb25maWd1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgcmVsZWFzZSBpbiBUb2FzdGVyIGJ5IHNldHRpbmcgaXRzIGJyYW5jaCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgImJyYW5jaC10d28iLCB0aGUgYnJhbmNoZXMgaW4geW91ciBsYXllciBzb3VyY2Ugc2hvdWxkCi0gICAgICAgICAgICAgICAgICAgICAgICBiZSAiYnJhbmNoLW9uZSIgYW5kICJicmFuY2gtdHdvIiBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gY3JlYXRlcyBhIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgcmVsZWFzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgbGF5ZXIgaW5mb3JtYXRpb24gZnJvbSB5b3VyIGxheWVyIHNvdXJjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIHdoZW4gdXNlcnMgY3JlYXRlIGEgcHJvamVjdCB3aXRoIGEgZ2l2ZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UsIHRoZXkgd2lsbCBzZWUgdGhlIGFwcHJvcHJpYXRlIGxheWVycyBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGxheWVyIHNvdXJjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29ubmVjdGlvbiBlbnN1cmVzIHRoYXQgb25seSBsYXllcnMgdGhhdCBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCB0aGUgc2VsZWN0ZWQgcHJvamVjdCByZWxlYXNlIGNhbiBiZQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgZm9yIGJ1aWxkaW5nLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGFkZGVkIHRoaXMgaW5mb3JtYXRpb24gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3RlcmNvbmYuanNvbjwvZmlsZW5hbWU+IGZpbGUsIHNhdmUgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gYSB0ZXJtaW5hbCB3aW5kb3csIG5hdmlnYXRlIHRvIHRoZSBkaXJlY3RvcnkgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIFRvYXN0ZXIgZGF0YWJhc2UsIHdoaWNoIGJ5IGRlZmF1bHQgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByb290IG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBhcmUgbG9jYXRlZCBpbiB0aGF0IGRpcmVjdG9yeSwgcnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT5sb2FkY29uZjwvZmlsZW5hbWU+IiBjb21tYW5kLCB3aGljaCB0YWtlcyBhcwotICAgICAgICAgICAgICAgICAgICAgICAgYW4gYXJndW1lbnQgdGhlIGZ1bGwgcGF0aCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4gZmlsZSB5b3UganVzdCBlZGl0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGNsb25lZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBhbmQgeW91IGVkaXRlZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi90b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4gZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB3b3VsZCB0eXBlIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgbG9hZGNvbmYgL2hvbWUvc2NvdHRyaWYvcG9reS9tZXRhLXBva3kvY29uZi90b2FzdGVyY29uZi5qc29uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBlbnRlcmluZyB0aGlzIGNvbW1hbmQsIHlvdSBuZWVkIHRvIHVwZGF0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgZGF0YWJhc2Ugd2l0aCB0aGUgaW5mb3JtYXRpb24gY29taW5nIGZyb20geW91cgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGxheWVyIHNvdXJjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIGRvIHRoYXQsIHlvdSBzaG91bGQgcnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT5sc3VwZGF0ZXM8L2ZpbGVuYW1lPiIgY29tbWFuZCBmcm9tIHRoZSBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIFRvYXN0ZXIgZGF0YWJhc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgbHN1cGRhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiBUb2FzdGVyIGNhbiByZWFjaCB0aGUgQVBJIFVSTCwgeW91IHNob3VsZCBzZWUgYSBtZXNzYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZWxsaW5nIHlvdSB0aGF0IFRvYXN0ZXIgaXMgdXBkYXRpbmcgdGhlIGxheWVyIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzdGFydCBUb2FzdGVyIGZvciB0aGUgZmlyc3QgdGltZSwgb3IgaWYgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhlIGZpbGUgPGZpbGVuYW1lPnRvYXN0ZXIuc3FsaXRlPC9maWxlbmFtZT4gYW5kIHJlc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGF0YWJhc2Ugd2lsbCBwb3B1bGF0ZSBjbGVhbmx5IGZyb20gdGhpcyBsYXllciBpbmRleCBzZXJ2ZXIuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGluZm9ybWF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQsIHZlcmlmeSB0aGUgbmV3IGxheWVyCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYnkgdXNpbmcgdGhlIFRvYXN0ZXIgd2ViIGludGVyZmFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgIFRvIGRvIHRoYXQsIHZpc2l0IHRoZSAiQWxsIGNvbXBhdGlibGUgbGF5ZXJzIiBwYWdlIGluc2lkZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICBUb2FzdGVyIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGF5ZXJzIGZyb20geW91ciBsYXllciBzb3VyY2Ugc2hvdWxkIGJlIGxpc3RlZCB0aGVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgcHJvamVjdC4gVGhlIGxheWVycyBmcm9tIHlvdXIgbGF5ZXIgc291cmNlIHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVkIHRoZXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2hhbmdlIHRoZSBpbmZvcm1hdGlvbiBpbiB5b3VyIGxheWVyIGluZGV4IHNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2ggdGhlIFRvYXN0ZXIgZGF0YWJhc2UgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgbHN1cGRhdGVzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiBUb2FzdGVyIGNhbiByZWFjaCB0aGUgQVBJIFVSTCwgeW91IHNob3VsZCBzZWUgYSBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICB0ZWxsaW5nIHlvdSB0aGF0IFRvYXN0ZXIgaXMgdXBkYXRpbmcgdGhlIGxheWVyIHNvdXJjZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTM1OSwxOSArMjI4LDEyIEBACiAgICAgICAgICAgICAgICAgQXMgc2hpcHBlZCwgVG9hc3RlciBpcyBjb25maWd1cmVkIHRvIHdvcmsgd2l0aCB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgcmVsZWFzZXM6CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IDIuMCAiSmV0aHJvIiBvciBPcGVuRW1iZWRkZWQgIkpldGhybyI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBjYXVzZXMgeW91ciBUb2FzdGVyIHByb2plY3RzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBhZ2FpbnN0IHRoZSBoZWFkIG9mIHRoZSBqZXRocm8gYnJhbmNoIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1qZXRocm8nPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2NvbW1pdC8/aD1qZXRocm8nPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+WW9jdG8gUHJvamVjdCAxLjggIkZpZG8iIG9yIE9wZW5FbWJlZGRlZCAiRmlkbyI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBjYXVzZXMgeW91ciBUb2FzdGVyIHByb2plY3RzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBhZ2FpbnN0IHRoZSBoZWFkIG9mIHRoZSBmaWRvIGJyYW5jaCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9Zmlkbyc+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvY29tbWl0Lz9oPWZpZG8nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCAmRElTVFJPOyAiJkRJU1RST19OQU1FOyIgb3IgT3BlbkVtYmVkZGVkICImRElTVFJPX05BTUU7Ijo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyByZWxlYXNlIGNhdXNlcyB5b3VyIFRvYXN0ZXIgcHJvamVjdHMgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgdGhlIGhlYWQgb2YgdGhlICZESVNUUk9fTkFNRV9OT19DQVA7IGJyYW5jaCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9cm9ja28nPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBvciA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvY29tbWl0Lz9oPXJvY2tvJz48L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPllvY3RvIFByb2plY3QgIk1hc3RlciIgb3IgT3BlbkVtYmVkZGVkICJNYXN0ZXIiOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHJlbGVhc2UgY2F1c2VzIHlvdXIgVG9hc3RlciBQcm9qZWN0cyB0bwpAQCAtMzkwLDQ2OCArMjUyLDQxMyBAQAogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSd0b2FzdGVyLXJlbGVhc2VzLWNvbXByaXNlZC1vZic+Ci0gICAgICAgICAgICA8dGl0bGU+V2hhdCBNYWtlcyBVcCBhIFJlbGVhc2U/PC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJpbmctdG9hc3Rlcic+CisgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyBUb2FzdGVyPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSBUb2FzdGVyLCB5b3UgbXVzdCBjb25maWd1cmUgdGhlIGRhdGFiYXNlIHdpdGggdGhlCisgICAgICAgICAgICBkZWZhdWx0IGNvbnRlbnQuIFRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgZGVzY3JpYmUgdmFyaW91cyBhc3BlY3RzCisgICAgICAgICAgICBvZiBUb2FzdGVyIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJpbmctdGhlLXdvcmtmbG93Jz4KKyAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgV29ya2Zsb3c8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBIHJlbGVhc2UgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk5hbWU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSByZWxlYXNlICg8ZmlsZW5hbWU+bmFtZTwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBuYW1lIG5ldmVyIGFwcGVhcnMgaW4gdGhlIHRoZSBUb2FzdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICB3ZWIgaW50ZXJmYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBhIHVzZXIgbmV2ZXIgc2VlcyB0aGUgcmVsZWFzZSBuYW1lLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZSBjb250cm9scyB3b3JrZmxvdyBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RlcHMgb3V0bGluZSB0aGUgcHJvY2VzcyB0byBpbml0aWFsbHkgcG9wdWxhdGUKKyAgICAgICAgICAgICAgICB0aGlzIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgcHJvamVjdCBzZXR0aW5ncyBhcmUgc2V0IGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcm0vZml4dHVyZXMvc2V0dGluZ3MueG1sPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZXNjcmlwdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIHJlbGVhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+ZGVzY3JpcHRpb248L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGRlc2NyaXB0aW9uIGlzIHdoYXQgdXNlcnMgZW5jb3VudGVyIHdoZW4gY3JlYXRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggdGhlIFRvYXN0ZXIgd2ViIGludGVyZmFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGNvbmZpZ3VyZSB5b3VyIHJlbGVhc2UsIGJlIHN1cmUgdG8gdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBhIGRlc2NyaXB0aW9uIHRoYXQgc3VmZmljaWVudGx5IGRlc2NyaWJlcyBhbmQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyc3RhbmRhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgVG9hc3RlciBoYXMgbW9yZSB0aGFuIG9uZSByZWxlYXNlIGNvbmZpZ3VyZWQsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSBkZXNjcmlwdGlvbnMgYXBwZWFyIGxpc3RlZCBpbiBhIGRyb3AgZG93biBtZW51Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGEgdXNlciBjcmVhdGVzIGEgbmV3IHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiBUb2FzdGVyIGhhcyBvbmx5IG9uZSByZWxlYXNlIGNvbmZpZ3VyZWQsIGFsbAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdHMgY3JlYXRlZCB1c2luZyB0aGUgd2ViIGludGVyZmFjZSB0YWtlIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgYW5kIHRoZSBkcm9wIGRvd24gbWVudSBkb2VzIG5vdCBkaXNwbGF5IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3RlciB3ZWIgaW50ZXJmYWNlLgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBwcm9qZWN0IGRpc3RybyBhbmQgbGF5ZXJzIGFyZSBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+b3JtL2ZpeHR1cmVzL3Bva3kueG1sPC9maWxlbmFtZT4gaWYgcG9reQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgcG9reSBpcyBub3QgaW5zdGFsbGVkLCB0aGV5IGFyZSBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+b3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgQml0YmFrZSB2ZXJzaW9uICg8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCB0byBidWlsZCBsYXllcnMgc2V0IGluIHRoZSBjdXJyZW50IHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gaXMgZGVzY3JpYmVkIGJ5IGEgbmFtZSwgYSBHaXQgVVJMLCBhCi0gICAgICAgICAgICAgICAgICAgICAgICBicmFuY2ggaW4gdGhlIEdpdCBVUkwsIGFuZCBhIGRpcmVjdG9yeSBwYXRoIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHNuaXBwZXQgZnJvbQotICAgICAgICAgICAgICAgICAgICAgICAgYSBUb2FzdGVyIEpTT04gY29uZmlndXJhdGlvbiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBCaXRCYWtlIHZlcnNpb24gdXNlcyB0aGUgbWFzdGVyIGJyYW5jaCBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIHJlcG9zaXRvcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICJiaXRiYWtlIiA6IFsKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAibmFtZSI6ICJtYXN0ZXIiLAotICAgICAgICAgICAgICJnaXR1cmwiOiAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIsCi0gICAgICAgICAgICAgImJyYW5jaCI6ICJtYXN0ZXIiLAotICAgICAgICAgICAgICJkaXJwYXRoIjogIiIKLSAgICAgICAgIH0KLSAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBtb3JlIGRldGFpbCBvbiBlYWNoIG9mIHRoZSBpdGVtcyB0aGF0IGNvbXByaXNlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgQml0QmFrZSB2ZXJzaW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk5hbWU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBzdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5uYW1lPC9maWxlbmFtZT4pIHVzZWQgdG8gcmVmZXIgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHZlcnNpb24gb2YgQml0QmFrZSB5b3UgYXJlIHVzaW5nIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBuYW1lIGlzIG5ldmVyIGV4cG9zZWQgdGhyb3VnaCBUb2FzdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdpdCBVUkw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFVSTCAoPGZpbGVuYW1lPmdpdHVybDwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIEJpdEJha2UgR2l0IHJlcG9zaXRvcnkgY2xvbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBUb2FzdGVyIHByb2plY3RzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgR2l0IGJyYW5jaCwgb3IgcmV2aXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+YnJhbmNoPC9maWxlbmFtZT4pIG9mIHRoZSBCaXRCYWtlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgdXNlZCB3aXRoIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RGlyZWN0b3J5IFBhdGg6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHN1Yi1kaXJlY3Rvcnkgb2YgdGhlIEJpdEJha2UgcmVwb3NpdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmRpcnBhdGg8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBHaXQgVVJMIGluY2x1ZGVzIG1vcmUgdGhhbiBvbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSwgeW91IG5lZWQgdG8gc2V0IHRoaXMgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgVVJMIGRvZXMgbm90IGluY2x1ZGUgbW9yZSB0aGFuIGEgc2luZ2xlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnksIHlvdSBjYW4gc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXJwYXRoPC9maWxlbmFtZT4gdG8gYSBudWxsIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiAiIikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSA8ZmlsZW5hbWU+b3JtL2ZpeHR1cmVzL2N1c3RvbS54bWw8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMsIHRoZW4gaXRzIHZhbHVlcyBhcmUgYWRkZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CcmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBicmFuY2ggZm9yIHRoZSBsYXllciBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+YnJhbmNoPC9maWxlbmFtZT4pIHVzZWQgd2l0aCB0aGUgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBmb3IgdGhlIE9wZW5FbWJlZGRlZCBsYXllciBzb3VyY2UsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIsICJmaWRvIiwgYW5kICJqZXRocm8iIGJyYW5jaGVzIGFyZSBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsYXllciBpbmRleCBpcyB0aGVuIHNjYW5uZWQgYW5kIGFkZGVkIHRvIHRoZSBkYXRhYmFzZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRlZmF1bHQgTGF5ZXJzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2V0IG9mIGRlZmF1bHQgbGF5ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmRlZmF1bHRsYXllcnM8L2ZpbGVuYW1lPikgYXV0b21hdGljYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIHByb2plY3QgY29uZmlndXJhdGlvbiB3aGVuIGEgcHJvamVjdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxheWVyIFNvdXJjZSBQcmlvcml0aWVzPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgc3BlY2lmaWNhdGlvbiBvZgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbGF5ZXItc291cmNlJz5sYXllciBzb3VyY2U8L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0aWVzICg8ZmlsZW5hbWU+bGF5ZXJzb3VyY2Vwcmlvcml0eTwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciBUb2FzdGVyIHRvIHdvcmsgYXMgaW50ZW5kZWQsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIkltcG9ydGVkIGxheWVycyIgbGF5ZXIgc291cmNlIHNob3VsZCBoYXZlIHRoZSBoaWdoZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eSwgd2hpY2ggbWVhbnMgdGhhdCBsYXllcnMgbWFudWFsbHkgaW1wb3J0ZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzIHdpdGggdGhlICJJbXBvcnQgbGF5ZXIiIGZ1bmN0aW9uYWxpdHkgd2lsbAotICAgICAgICAgICAgICAgICAgICAgICAgYWx3YXlzIGJlIHZpc2libGUgYW5kIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SGVscCBUZXh0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBIZWxwIHRleHQgKDxmaWxlbmFtZT5oZWxwdGV4dDwvZmlsZW5hbWU+KSB0aGF0IGV4cGxhaW5zCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHRoZSByZWxlYXNlIGRvZXMgd2hlbiBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaGVscCB0ZXh0IGFwcGVhcnMgYmVsb3cgdGhlIHJlbGVhc2UgZHJvcC1kb3duCi0gICAgICAgICAgICAgICAgICAgICAgICBtZW51IHdoZW4geW91IGNyZWF0ZSBhIFRvYXN0ZXIgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBoZWxwIHRleHQgc2hvdWxkIGFzc2lzdCB1c2VycyBpbiBtYWtpbmcgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uIHJlZ2FyZGluZyB0aGUgcmVsZWFzZSB0byB1c2UgZm9yIGEgZ2l2ZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIE9uY2UgdGhlc2Ugc3RlcHMgY29tcGxldGUsIFRvYXN0ZXIgaXMgc2V0IHVwIGFuZCByZWFkeSB0byB1c2UuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY3VzdG9taXppbmctcHJlLXNldC1kYXRhJz4KKyAgICAgICAgICAgIDx0aXRsZT5DdXN0b21pemluZyBQcmUtU2V0IERhdGE8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcHJlLXNldCBkYXRhIGZvciBUb2FzdGVyIGlzIGVhc2lseSBjdXN0b21pemFibGUuIFlvdSBjYW4KKyAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIDxmaWxlbmFtZT5vcm0vZml4dHVyZXMvY3VzdG9tLnhtbDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICB0byBjdXN0b21pemUgdGhlIHZhbHVlcyB0aGF0IGdvIGludG8gdG8gdGhlIGRhdGFiYXNlLgorICAgICAgICAgICAgICAgIEN1c3RvbWl6YXRpb24gaXMgYWRkaXRpdmUsCisgICAgICAgICAgICAgICAgYW5kIGNhbiBlaXRoZXIgZXh0ZW5kIG9yIGNvbXBsZXRlbHkgcmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWVzLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBzdW1tYXJpemUgd2hhdCBjb21wcmlzZXMgYSByZWxlYXNlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgZXhhbXBsZSBmcm9tIGEgVG9hc3RlciBKU09OIGZpbGUuCi0gICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gbmFtZXMgdGhlIHJlbGVhc2UgIm1hc3RlciIgYW5kIHVzZXMgdGhlCi0gICAgICAgICAgICAgICAgIm1hc3RlciIgYnJhbmNoIHByb3ZpZGVkIGJ5IHRoZSBsYXllciBzb3VyY2Ugb2YgdHlwZQotICAgICAgICAgICAgICAgICJsYXllcmluZGV4Iiwgd2hpY2ggaXMgY2FsbGVkICJPcGVuRW1iZWRkZWQiLCBhbmQgc2V0cwotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPiBsYXllciBhcyB0aGUgb25lCi0gICAgICAgICAgICAgICAgdG8gYmUgYWRkZWQgYnkgZGVmYXVsdCB0byBhbnkgcHJvamVjdHMgY3JlYXRlZCBpbiBUb2FzdGVyLgotICAgICAgICAgICAgICAgIFRoZSBCaXRCYWtlIHZlcnNpb24gdXNlZCB3b3VsZCBiZSBkZWZpbmVkIGFzIHNob3duIGVhcmxpZXIKLSAgICAgICAgICAgICAgICBpbiB0aGUgcHJldmlvdXMgbGlzdDoKKyAgICAgICAgICAgICAgICBZb3UgdXNlIHRoZSA8ZmlsZW5hbWU+b3JtL2ZpeHR1cmVzL2N1c3RvbS54bWw8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0IHByb2plY3Qgc2V0dGluZ3MgZm9yIHRoZSBtYWNoaW5lLCBkaXN0cm8sCisgICAgICAgICAgICAgICAgZmlsZSBpbWFnZXMsIGFuZCBsYXllcnMuCisgICAgICAgICAgICAgICAgV2hlbiBjcmVhdGluZyBhIG5ldyBwcm9qZWN0LCB5b3UgY2FuIHVzZSB0aGUgZmlsZSB0byBkZWZpbmUKKyAgICAgICAgICAgICAgICB0aGUgb2ZmZXJlZCBhbHRlcm5hdGUgcHJvamVjdCByZWxlYXNlIHNlbGVjdGlvbnMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIG9uZSBvciBtb3JlIGFkZGl0aW9uYWwgc2VsZWN0aW9ucyB0aGF0CisgICAgICAgICAgICAgICAgcHJlc2VudCBjdXN0b20gbGF5ZXIgc2V0cyBvciBkaXN0cm9zLCBhbmQgYW55IG90aGVyIGxvY2FsIG9yIHByb3ByaWV0YXJ5CisgICAgICAgICAgICAgICAgY29udGVudC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB5b3UgY2FuIGNvbXBsZXRlbHkgZGlzYWJsZSB0aGUgY29udGVudCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1jb3JlLnhtbDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cG9reS54bWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVzIGJ5IGRlZmluaW5nIHRoZSBzZWN0aW9uIHNob3duIGJlbG93IGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZXR0aW5ncy54bWw8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIG9wdGlvbiBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGlmIHlvdXIgY3VzdG9tCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkZWZpbmVzIGZld2VyIHJlbGVhc2VzIG9yIGxheWVycyB0aGFuIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgZml4dHVyZSBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNldHMgIm5hbWUiIHRvICJDVVNUT01fWE1MX09OTFkiIGFuZCBpdHMgdmFsdWUKKyAgICAgICAgICAgICAgICB0byAiVHJ1ZSIuCiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAicmVsZWFzZXMiOiBbCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIm5hbWUiOiAibWFzdGVyIiwKLSAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiT3BlbkVtYmVkZGVkIG1hc3RlciIsCi0gICAgICAgICAgICAgImJpdGJha2UiOiAibWFzdGVyIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogIm1hc3RlciIsCi0gICAgICAgICAgICAgImRlZmF1bHRsYXllcnMiOiBbICJvcGVuZW1iZWRkZWQtY29yZSIgXSwKLSAgICAgICAgICAgICAibGF5ZXJzb3VyY2Vwcmlvcml0eSI6IHsgIkltcG9ydGVkIGxheWVycyI6IDk5LCAiTG9jYWwgT3BlbkVtYmVkZGVkIiA6IDEwLCAiT3BlbkVtYmVkZGVkIiA6ICAwIH0sCi0gICAgICAgICAgICAgImhlbHB0ZXh0IjogIlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj1cImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nL1wiJmd0O1lvY3RvIFByb2plY3QgbWFzdGVyIGJyYW5jaCZsdDsvYSZndDssIHdoZXJlIGFjdGl2ZSBkZXZlbG9wbWVudCB0YWtlcyBwbGFjZS4gVGhpcyBpcyBub3QgYSBzdGFibGUgYnJhbmNoLCBzbyB5b3VyIGJ1aWxkcyBtaWdodCBub3Qgd29yayBhcyBleHBlY3RlZC4iCi0gICAgICAgICB9Ci0gICAgIF0KKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLnRvYXN0ZXJzZXR0aW5nIiBwaz0iOTkiJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiJmd0O0NVU1RPTV9YTUxfT05MWSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0idmFsdWUiJmd0O1RydWUmbHQ7L2ZpZWxkJmd0OworICAgICAmbHQ7L29iamVjdCZndDsKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0ndG9hc3Rlci1qc29uLWZpbGVzJz4KLSAgICAgICAgPHRpdGxlPkpTT04gRmlsZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IG11c3QgY29uZmlndXJlIFRvYXN0ZXIgYmVmb3JlIHVzaW5nIGl0LgotICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBjdXN0b21pemVzIGxheWVyIHNvdXJjZSBzZXR0aW5ncyBhbmQgVG9hc3RlciBkZWZhdWx0cwotICAgICAgICAgICAgZm9yIGFsbCB1c2VycyBhbmQgaXMgcGVyZm9ybWVkIGJ5IHRoZSBwZXJzb24gcmVzcG9uc2libGUgZm9yCi0gICAgICAgICAgICBUb2FzdGVyIENvbmZpZ3VyYXRpb24gKGkuZSAgdGhlIFRvYXN0ZXIgQWRtaW5pc3RyYXRvcikuCi0gICAgICAgICAgICBUaGUgVG9hc3RlciBBZG1pbmlzdHJhdG9yIHBlcmZvcm1zIHRoaXMgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZQotICAgICAgICAgICAgRGphbmdvIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gbWFrZSBpdCBlYXNpZXIgdG8gaW5pdGlhbGx5IHN0YXJ0IFRvYXN0ZXIsIHlvdSBjYW4gaW1wb3J0IGEKLSAgICAgICAgICAgIHByZS1kZWZpbmVkIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2luZyB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3RvYXN0ZXItY29tbWFuZC1sb2FkY29uZic+PGZpbGVuYW1lPmxvYWRjb25mPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBjb21tYW5kLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIEpTT04tZm9ybWF0dGVkIHRleHQgZmlsZSB3aXRoCi0gICAgICAgICAgICAgICAgc3BlY2lmaWMgZmllbGRzIHRoYXQgVG9hc3RlciByZWNvZ25pemVzLgotICAgICAgICAgICAgICAgIEl0IGlzIG5vdCBhIGRhdGEgZHVtcCBmcm9tIHRoZSBkYXRhYmFzZSwgc28gaXQgY2Fubm90IGJlCi0gICAgICAgICAgICAgICAgbG9hZGVkIGRpcmVjdGx5IGluIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnkgY29udmVudGlvbiwgdGhlIHN1cHBsaWVkIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIG5hbWVkCi0gICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3RlcmNvbmYuanNvbjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgVGhlIFRvYXN0ZXIgQWRtaW5pc3RyYXRvciBjYW4gY3VzdG9taXplIHRoZSBmaWxlIHByaW9yIHRvIGxvYWRpbmcKLSAgICAgICAgICAgIGl0IGludG8gVG9hc3Rlci4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+VE9BU1RFUl9DT05GPC9maWxlbmFtZT4gdmFyaWFibGUgaW4gdGhlCi0gICAgICAgICAgICBUb2FzdGVyIHN0YXJ0dXAgc2NyaXB0IGF0IDxmaWxlbmFtZT5iaXRiYWtlL2Jpbi90b2FzdGVyPC9maWxlbmFtZT4KLSAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIDxmaWxlbmFtZT50b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdqc29uLWZpbGUtY2hvaWNlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJhdGlvbiBGaWxlIENob2ljZXM8L3RpdGxlPgorICAgICAgICA8c2VjdGlvbiBpZD0ndW5kZXJzdGFuZGluZy1maXh0dXJlLWZpbGUtZm9ybWF0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5VbmRlcnN0YW5kaW5nIEZpeHR1cmUgRmlsZSBGb3JtYXQ8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUd28gdmVyc2lvbnMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBleGlzdDoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi90b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QncyA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gY29udGFpbnMgdGhlIGRlZmF1bHQgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3IgVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBhcmUgcHJvbXB0ZWQgdG8gc2VsZWN0IHRoaXMgZmlsZSBkdXJpbmcgdGhlIFRvYXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldCB1cCBwcm9jZXNzIGlmIHlvdSBjbG9uZWQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fR0lUX1VSTDsvcG9reTwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEvY29uZi90b2FzdGVyY29uZi5qc29uPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCdzIDxmaWxlbmFtZT5vcGVuZW1iZWRkZWQtY29yZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBjb250YWlucyB0aGUgZGVmYXVsdCBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgYXJlIHByb21wdGVkIHRvIHNlbGVjdCB0aGlzIGZpbGUgZHVyaW5nIHRoZSBUb2FzdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXQgdXAgcHJvY2VzcyBpZiB5b3UgaGFkIGNsb25lZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcGVuZW1iZWRkZWQtY29yZTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZTwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gb3ZlcnZpZXcgb2YgdGhlIGZpbGUgZm9ybWF0IHVzZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWNvcmUueG1sPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5wb2t5LnhtbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Y3VzdG9tLnhtbDwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIGRlc2NyaWJlIGVhY2ggb2YgdGhlIHNlY3Rpb25zIGluIHRoZQorICAgICAgICAgICAgICAgIGZpeHR1cmUgZmlsZXMsIGFuZCBvdXRsaW5lIGFuIGV4YW1wbGUgc2VjdGlvbiBvZiB0aGUgWE1MIGNvZGUuCisgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdG8gaGVscCB1bmRlcnN0YW5kIHRoaXMgaW5mb3JtYXRpb24gYW5kIGNyZWF0ZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmN1c3RvbS54bWw8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGVmaW5pbmctdGhlLWRlZmF1bHQtZGlzdHJvLWFuZC1vdGhlci12YWx1ZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5EZWZpbmluZyB0aGUgRGVmYXVsdCBEaXN0cm8gYW5kIE90aGVyIFZhbHVlczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlZmluZXMgdGhlIGRlZmF1bHQgZGlzdHJvIHZhbHVlIGZvciBuZXcgcHJvamVjdHMuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGl0IHJlc2VydmVzIHRoZSBmaXJzdCBUb2FzdGVyIFNldHRpbmcgcmVjb3JkICIxIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkZW1vbnN0cmF0ZXMgaG93IHRvIHNldCB0aGUgcHJvamVjdCBkZWZhdWx0IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIGZvcgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPJz48ZmlsZW5hbWU+RElTVFJPPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7IS0tIFNldCB0aGUgcHJvamVjdCBkZWZhdWx0IHZhbHVlIGZvciBESVNUUk8gLS0mZ3Q7CisgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS50b2FzdGVyc2V0dGluZyIgcGs9IjEiJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiJmd0O0RFRkNPTkZfRElTVFJPJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2YWx1ZSImZ3Q7cG9reSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gb3ZlcnJpZGUgb3RoZXIgZGVmYXVsdCBwcm9qZWN0IHZhbHVlcyBieSBhZGRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCBUb2FzdGVyIFNldHRpbmcgc2VjdGlvbnMgc3VjaCBhcyBhbnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGNvbWluZyBmcm9tIHRoZSA8ZmlsZW5hbWU+c2V0dGluZ3MueG1sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgeW91IGNhbiBhZGQgY3VzdG9tIHZhbHVlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhlICJwayIgdmFsdWVzIG11c3QgYmUgdW5pcXVlLgorICAgICAgICAgICAgICAgICAgICAgICBCeSBjb252ZW50aW9uLCB2YWx1ZXMgdGhhdCBzZXQgZGVmYXVsdCBwcm9qZWN0IHZhbHVlcyBoYXZlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIkRFRkNPTkYiIHByZWZpeC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdkZWZpbmluZy1iaXRiYWtlLXZlcnNpb24nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5EZWZpbmluZyBCaXRCYWtlIFZlcnNpb248L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyB3aGljaCB2ZXJzaW9uIG9mIEJpdEJha2UgaXMgdXNlZAorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGZvbGxvd2luZyByZWxlYXNlIHNlbGVjdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7IS0tIEJpdGJha2UgdmVyc2lvbnMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgbWV0YWRhdGEgcmVsZWFzZSAtLSZndDsKKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSImZ3Q7cm9ja28mbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCImZ3Q7Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIiZndDtyb2NrbyZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCImZ3Q7Yml0YmFrZSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGVmaW5pbmctcmVsZWFzZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5EZWZpbmluZyBSZWxlYXNlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRlZmluZXMgdGhlIHJlbGVhc2VzIHdoZW4geW91IGNyZWF0ZSBhIG5ldworICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICZsdDshLS0gUmVsZWFzZXMgYXZhaWxhYmxlIC0tJmd0OworICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjEiJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiJmd0O3JvY2tvJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiImZ3Q7WW9jdG8gUHJvamVjdCAyLjQgIlJvY2tvIiZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmJpdGJha2V2ZXJzaW9uIiBuYW1lPSJiaXRiYWtlX3ZlcnNpb24iJmd0OzEmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIiZndDtyb2NrbyZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiJmd0O1RvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9cm9ja28iJmd0O1lvY3RvIFByb2plY3QgUm9ja28gYnJhbmNoJmx0Oy9hJmd0Oy4mbHQ7L2ZpZWxkJmd0OworICAgICAmbHQ7L29iamVjdCZndDsKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgInBrIiB2YWx1ZSBtdXN0IG1hdGNoIHRoZSBhYm92ZSByZXNwZWN0aXZlIEJpdEJha2UKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiByZWNvcmQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGVmaW5pbmctdGhlLXJlbGVhc2UtZGVmYXVsdC1sYXllci1uYW1lcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkRlZmluaW5nIHRoZSBSZWxlYXNlIERlZmF1bHQgTGF5ZXIgTmFtZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyB0aGUgZGVmYXVsdCBsYXllcnMgZm9yIGVhY2ggcmVsZWFzZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAmbHQ7IS0tIERlZmF1bHQgcHJvamVjdCBsYXllcnMgZm9yIGVhY2ggcmVsZWFzZSAtLSZndDsKKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2VkZWZhdWx0bGF5ZXIiIHBrPSIxIiZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibGF5ZXJfbmFtZSImZ3Q7b3BlbmVtYmVkZGVkLWNvcmUmbHQ7L2ZpZWxkJmd0OworICAgICAmbHQ7L29iamVjdCZndDsKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgJ3BrJyB2YWx1ZXMgaW4gdGhlIGV4YW1wbGUgYWJvdmUgc2hvdWxkIHN0YXJ0IGF0ICIxIiBhbmQgaW5jcmVtZW50CisgICAgICAgICAgICAgICAgICAgIHVuaXF1ZWx5LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgc2FtZSBsYXllciBuYW1lIGluIG11bHRpcGxlIHJlbGVhc2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2RlZmluaW5nLWxheWVyLWRlZmluaXRpb25zJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RGVmaW5pbmcgTGF5ZXIgRGVmaW5pdGlvbnM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExheWVyIGRlZmluaXRpb25zIGFyZSB0aGUgbW9zdCBjb21wbGV4LgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRlZmluZXMgZWFjaCBvZiB0aGUgbGF5ZXJzLCBhbmQgdGhlbiBkZWZpbmVzIHRoZSBleGFjdCBsYXllcgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBsYXllciB1c2VkIGZvciBlYWNoIHJlc3BlY3RpdmUgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaGF2ZSBvbmUgPGZpbGVuYW1lPm9ybS5sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGVudHJ5IGZvciBlYWNoIGxheWVyLgorICAgICAgICAgICAgICAgICAgICBUaGVuLCB3aXRoIGVhY2ggZW50cnkgeW91IG5lZWQgYSBzZXQgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9ybS5sYXllcl92ZXJzaW9uPC9maWxlbmFtZT4gZW50cmllcyB0aGF0IGNvbm5lY3RzCisgICAgICAgICAgICAgICAgICAgIHRoZSBsYXllciB3aXRoIGVhY2ggcmVsZWFzZSB0aGF0IGluY2x1ZGVzIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCBhbGwgcmVsZWFzZXMgaW5jbHVkZSB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJmx0O29iamVjdCBtb2RlbD0ib3JtLmxheWVyIiBwaz0iMSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSImZ3Q7b3BlbmVtYmVkZGVkLWNvcmUmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImxheWVyX2luZGV4X3VybCImZ3Q7Jmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2Y3NfdXJsIiZndDtnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5Jmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2Y3Nfd2ViX3VybCImZ3Q7aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0idmNzX3dlYl90cmVlX2Jhc2VfdXJsIiZndDtodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvJXBhdGglP2g9JWJyYW5jaCUmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9InZjc193ZWJfZmlsZV9iYXNlX3VybCImZ3Q7aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlLyVwYXRoJT9oPSVicmFuY2glJmx0Oy9maWVsZCZndDsKKyAgICAgJmx0Oy9vYmplY3QmZ3Q7CisgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMSImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIiZndDswJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIiZndDtyb2NrbyZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCImZ3Q7bWV0YSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAmbHQ7b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjIiJmd0OworICAgICAgICZsdDtmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiJmd0OzEmbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSImZ3Q7MCZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiJmd0OzImbHQ7L2ZpZWxkJmd0OworICAgICAgICZsdDtmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCImZ3Q7SEVBRCZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iY29tbWl0IiZndDtIRUFEJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIiZndDttZXRhJmx0Oy9maWVsZCZndDsKKyAgICAgJmx0Oy9vYmplY3QmZ3Q7CisgICAgICZsdDtvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMyImZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciImZ3Q7MSZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIiZndDswJmx0Oy9maWVsZCZndDsKKyAgICAgICAmbHQ7ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSImZ3Q7MyZsdDsvZmllbGQmZ3Q7CisKKyAgICAgICAmbHQ7ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giJmd0O21hc3RlciZsdDsvZmllbGQmZ3Q7CisgICAgICAgJmx0O2ZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCImZ3Q7bWV0YSZsdDsvZmllbGQmZ3Q7CisgICAgICZsdDsvb2JqZWN0Jmd0OworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsYXllciAicGsiIHZhbHVlcyBhYm92ZSBtdXN0IGJlIHVuaXF1ZSwgYW5kIHR5cGljYWxseSBzdGFydCBhdCAiMSIuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsYXllciB2ZXJzaW9uICJwayIgdmFsdWVzIG11c3QgYWxzbyBiZSB1bmlxdWUgYWNyb3NzIGFsbCBsYXllcnMsCisgICAgICAgICAgICAgICAgICAgIGFuZCB0eXBpY2FsbHkgc3RhcnQgYXQgIjEiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdyZW1vdGUtdG9hc3Rlci1tb25pdG9yaW5nJz4KKyAgICAgICAgPHRpdGxlPlJlbW90ZSBUb2FzdGVyIE1vbml0b3Jpbmc8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG9hc3RlciBoYXMgYW4gQVBJIHRoYXQgYWxsb3dzIHJlbW90ZSBtYW5hZ2VtZW50IGFwcGxpY2F0aW9ucyB0bworICAgICAgICAgICAgZGlyZWN0bHkgcXVlcnkgdGhlIHN0YXRlIG9mIHRoZSBUb2FzdGVyIHNlcnZlciBhbmQgaXRzIGJ1aWxkcworICAgICAgICAgICAgaW4gYSBtYWNoaW5lLXRvLW1hY2hpbmUgbWFubmVyLgorICAgICAgICAgICAgVGhpcyBBUEkgdXNlcyB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVwcmVzZW50YXRpb25hbF9zdGF0ZV90cmFuc2Zlcic+UkVTVDwvdWxpbms+CisgICAgICAgICAgICBpbnRlcmZhY2UgYW5kIHRoZSB0cmFuc2ZlciBvZiBKU09OIGZpbGVzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBtaWdodAorICAgICAgICAgICAgbW9uaXRvciBhIGJ1aWxkIGluc2lkZSBhIGNvbnRhaW5lciB0aHJvdWdoIHdlbGwgc3VwcG9ydGVkCisgICAgICAgICAgICBrbm93biBIVFRQIHBvcnRzIGluIG9yZGVyIHRvIGVhc2lseSBhY2Nlc3MgYSBUb2FzdGVyIHNlcnZlcgorICAgICAgICAgICAgaW5zaWRlIHRoZSBjb250YWluZXIuCisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHdoZW4geW91IHVzZSB0aGlzIGRpcmVjdCBKU09OIEFQSSwgeW91IGF2b2lkCisgICAgICAgICAgICBoYXZpbmcgd2ViIHBhZ2UgcGFyc2luZyBhZ2FpbnN0IHRoZSBkaXNwbGF5IHRoZSB1c2VyIHNlZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY2hlY2tpbmctaGVhbHRoJz4KKyAgICAgICAgICAgIDx0aXRsZT5DaGVja2luZyBIZWFsdGg8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWZvcmUgeW91IHVzZSByZW1vdGUgVG9hc3RlciBtb25pdG9yaW5nLCB5b3Ugc2hvdWxkIGRvCisgICAgICAgICAgICAgICAgYSBoZWFsdGggY2hlY2suCisgICAgICAgICAgICAgICAgVG8gZG8gdGhpcywgcGluZyB0aGUgVG9hc3RlciBzZXJ2ZXIgdXNpbmcgdGhlIGZvbGxvd2luZyBjYWxsCisgICAgICAgICAgICAgICAgdG8gc2VlIGlmIGl0IGlzIHN0aWxsIGFsaXZlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaHR0cDovLzxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPnBvcnQ8L3JlcGxhY2VhYmxlPi9oZWFsdGgKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBwcm92aWRlIHZhbHVlcyBmb3IgPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGFuZCA8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgIElmIHRoZSBzZXJ2ZXIgaXMgYWxpdmUsIHlvdSB3aWxsIGdldCB0aGUgcmVzcG9uc2UgSFRNTDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICZsdDshRE9DVFlQRSBodG1sJmd0OworICAgICAmbHQ7aHRtbCBsYW5nPSJlbiImZ3Q7CisgICAgICAgJmx0O2hlYWQmZ3Q7Jmx0O3RpdGxlJmd0O1RvYXN0ZXIgSGVhbHRoJmx0Oy90aXRsZSZndDsmbHQ7L2hlYWQmZ3Q7CisgICAgICAgJmx0O2JvZHkmZ3Q7T2smbHQ7L2JvZHkmZ3Q7CisgICAgICZsdDsvaHRtbCZndDsKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nanNvbi1zdHJ1Y3R1cmUnPgotICAgICAgICAgICAgPHRpdGxlPkZpbGUgU3RydWN0dXJlPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2RldGVybWluaW5nLXN0YXR1cy1vZi1idWlsZHMtaW4tcHJvZ3Jlc3MnPgorICAgICAgICAgICAgPHRpdGxlPkRldGVybWluaW5nIFN0YXR1cyBvZiBCdWlsZHMgaW4gUHJvZ3Jlc3M8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnRvYXN0ZXJjb25mLmpzb248L2ZpbGVuYW1lPiBmaWxlIGNvbnNpc3RzIG9mCi0gICAgICAgICAgICAgICAgZWFzaWx5IHJlYWRhYmxlIGFyZWFzOiBjb25maWd1cmF0aW9uLCBsYXllciBzb3VyY2VzLCBCaXRCYWtlLAotICAgICAgICAgICAgICAgIGRlZmF1bHQgcmVsZWFzZSwgYW5kIHJlbGVhc2VzLgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gZGV0ZXJtaW5lIHRoZSBzdGF0dXMgb2YgYSBidWlsZAorICAgICAgICAgICAgICAgIGluIHByb2dyZXNzLgorICAgICAgICAgICAgICAgIFRvIGdldCB0aGUgc3RhdHVzIG9mIHBlbmRpbmcgYnVpbGRzLCB1c2UgdGhlIGZvbGxvd2luZyBjYWxsOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaHR0cDovLzxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPnBvcnQ8L3JlcGxhY2VhYmxlPi90b2FzdGVyZ3VpL2FwaS9idWlsZGluZworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHByb3ZpZGUgdmFsdWVzIGZvciA8cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBpcyBhIEpTT04gZmlsZSB0aGF0IGl0ZW1pemVzIGFsbCBidWlsZHMgaW4KKyAgICAgICAgICAgICAgICBwcm9ncmVzcy4KKyAgICAgICAgICAgICAgICBUaGlzIGZpbGUgaW5jbHVkZXMgdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSBlYWNoCisgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBidWlsZCBzdGFydGVkIGFzIHdlbGwgYXMgdGhlIHByb2dyZXNzIG9mIHRoZQorICAgICAgICAgICAgICAgIGNsb25pbmcsIHBhcnNpbmcsIGFuZCB0YXNrIGV4ZWN1dGlvbi4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHNhbXBsZSBvdXRwdXQgZm9yIGEgYnVpbGQgaW4gcHJvZ3Jlc3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICB7ImNvdW50IjogMSwKKyAgICAgICJidWlsZGluZyI6IFsKKyAgICAgICAgeyJtYWNoaW5lIjogImJlYWdsZWJvbmUiLAorICAgICAgICAgICAic2Vjb25kcyI6ICI0NjMuODY5IiwKKyAgICAgICAgICAgInRhc2siOiAiOTI3OjIzODQiLAorICAgICAgICAgICAiZGlzdHJvIjogInBva3kiLAorICAgICAgICAgICAiY2xvbmUiOiAiMToxIiwKKyAgICAgICAgICAgImlkIjogMiwKKyAgICAgICAgICAgInN0YXJ0IjogIjIwMTctMDktMjJUMDk6MzE6NDQuODg3WiIsCisgICAgICAgICAgICJuYW1lIjogIjIwMTcwOTIyMDkzMjAwIiwKKyAgICAgICAgICAgInBhcnNlIjogIjgxODo4MTgiLAorICAgICAgICAgICAicHJvamVjdCI6ICJteV9yb2NrbyIsCisgICAgICAgICAgICJ0YXJnZXQiOiAiY29yZS1pbWFnZS1taW5pbWFsIgorICAgICAgICAgICB9XQorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBKU09OIGRhdGEgZm9yIHRoaXMgcXVlcnkgaXMgcmV0dXJuZWQgaW4gYSBzaW5nbGUgbGluZS4KKyAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSB0aGUgbGluZSBoYXMgYmVlbiBhcnRpZmljaWFsbHkgc3BsaXQgZm9yIHJlYWRhYmlsaXR5LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NoZWNraW5nLXN0YXR1cy1vZi1idWlsZHMtY29tcGxldGVkJz4KKyAgICAgICAgICAgIDx0aXRsZT5DaGVja2luZyBTdGF0dXMgb2YgQnVpbGRzIENvbXBsZXRlZDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgYSBidWlsZCBpcyBjb21wbGV0ZWQsIHlvdSBnZXQgdGhlIHN0YXR1cyB3aGVuIHlvdSB1c2UKKyAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNhbGw6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwOi8vPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+L3RvYXN0ZXJndWkvYXBpL2J1aWxkcworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHByb3ZpZGUgdmFsdWVzIGZvciA8cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBpcyBhIEpTT04gZmlsZSB0aGF0IGl0ZW1pemVzIGFsbCBjb21wbGV0ZSBidWlsZHMsCisgICAgICAgICAgICAgICAgYW5kIGluY2x1ZGVzIGJ1aWxkIHN1bW1hcnkgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBzYW1wbGUgb3V0cHV0IGZvciBhIGNvbXBsZXRlZCBidWlsZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHsiY291bnQiOiAxLAorICAgICAgImJ1aWxkcyI6IFsKKyAgICAgICAgeyJkaXN0cm8iOiAicG9reSIsCisgICAgICAgICAgICJlcnJvcnMiOiAwLAorICAgICAgICAgICAibWFjaGluZSI6CisgICAgICAgICAgICJiZWFnbGVib25lIiwKKyAgICAgICAgICAgInByb2plY3QiOiAibXlfcm9ja28iLAorICAgICAgICAgICAic3RvcCI6ICIyMDE3LTA5LTIyVDA5OjI2OjM2LjAxN1oiLAorICAgICAgICAgICAidGFyZ2V0IjogInF1aWx0LW5hdGl2ZSIsCisgICAgICAgICAgICJzZWNvbmRzIjogIjc4LjE5MyIsCisgICAgICAgICAgICJvdXRjb21lIjogIlN1Y2NlZWRlZCIsCisgICAgICAgICAgICJpZCI6IDEsCisgICAgICAgICAgICJzdGFydCI6ICIyMDE3LTA5LTIyVDA5OjI1OjE3LjgyNFoiLAorICAgICAgICAgICAid2FybmluZ3MiOiAxLAorICAgICAgICAgICAibmFtZSI6ICIyMDE3MDkyMjA5MjYxOCIKKyAgICAgICAgICAgfV0KKyAgICAgfQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgSlNPTiBkYXRhIGZvciB0aGlzIHF1ZXJ5IGlzIHJldHVybmVkIGluIGEgc2luZ2xlIGxpbmUuCisgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUgdGhlIGxpbmUgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IHNwbGl0IGZvciByZWFkYWJpbGl0eS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXRlcm1pbmluZy1zdGF0dXMtb2YtYS1zcGVjaWZpYy1idWlsZCc+CisgICAgICAgICAgICA8dGl0bGU+RGV0ZXJtaW5pbmcgU3RhdHVzIG9mIGEgU3BlY2lmaWMgQnVpbGQ8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgaXQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgc3RhdHVzIG9mIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICBUbyBnZXQgdGhlIHN0YXR1cyBvZiBhIHNwZWNpZmljIGJ1aWxkLCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgIGNhbGw6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBodHRwOi8vPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+L3RvYXN0ZXJndWkvYXBpL2J1aWxkLzxyZXBsYWNlYWJsZT5JRDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSB2YWx1ZXMgZm9yIDxyZXBsYWNlYWJsZT5ob3N0PC9yZXBsYWNlYWJsZT4sCisgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnBvcnQ8L3JlcGxhY2VhYmxlPiwgYW5kIDxyZXBsYWNlYWJsZT5JRDwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgdmFsdWUgZm9yIDxyZXBsYWNlYWJsZT5JRDwvcmVwbGFjZWFibGU+IGZyb20gdGhlCisgICAgICAgICAgICAgICAgQnVpbGRzIENvbXBsZXRlZCBxdWVyeS4gU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGVja2luZy1zdGF0dXMtb2YtYnVpbGRzLWNvbXBsZXRlZCc+Q2hlY2tpbmcgU3RhdHVzIG9mIEJ1aWxkcyBDb21wbGV0ZWQ8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdqc29uLWNvbmZpZy1hcmVhJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJhdGlvbiBBcmVhPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgb2YgdGhlIEpTT04gZmlsZSBzZXRzIHdoaWNoIHZhcmlhYmxlcyBhcmUgZXhwb3NlZAotICAgICAgICAgICAgICAgICAgICB0byB1c2VycyB0aHJvdWdoIHRoZSBUb2FzdGVyIHdlYiBpbnRlcmZhY2UuCi0gICAgICAgICAgICAgICAgICAgIFVzZXJzIGNhbiBlYXNpbHkgZWRpdCB0aGVzZSB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZXMgeW91IHNldCBoZXJlIGFyZSBkaXNwbGF5ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIHZhcmlhYmxlcyIgcGFnZSBpbiBUb2FzdGVyLgotICAgICAgICAgICAgICAgICAgICBNaW5pbWFsbHksIHlvdSBzaG91bGQgc2V0IHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBhcHBlYXJzIHRvIHVzZXJzIGFzIHBhcnQgb2YgdGhlIHByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgcGFnZSBpbiBUb2FzdGVyLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBkZWZhdWx0IDxmaWxlbmFtZT5jb25maWc8L2ZpbGVuYW1lPiBhcmVhOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICJjb25maWciOiB7Ci0gICAgICAgICAiTUFDSElORSIgICAgICA6ICJxZW11eDg2IiwKLSAgICAgICAgICJESVNUUk8iICAgICAgIDogInBva3kiLAotICAgICAgICAgIklNQUdFX0ZTVFlQRVMiOiAiZXh0MyBqZmZzMiB0YXIuYnoyIiwKLSAgICAgICAgICJJTUFHRV9JTlNUQUxMX2FwcGVuZCI6ICIiLAotICAgICAgICAgIlBBQ0tBR0VfQ0xBU1NFUyI6ICJwYWNrYWdlX3JwbSIsCi0gICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdqc29uLWxheWVyc291cmNlcy1hcmVhJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+TGF5ZXIgU291cmNlcyBBcmVhPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgb2YgdGhlIEpTT04gZmlsZSBkZWZpbmVzIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdsYXllci1zb3VyY2UnPmxheWVyIHNvdXJjZXM8L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgdXNlcy4KLSAgICAgICAgICAgICAgICAgICAgVG9hc3RlciByZWFkcyBsYXllciBpbmZvcm1hdGlvbiBmcm9tIGxheWVyIHNvdXJjZXMuCi0gICAgICAgICAgICAgICAgICAgIFRocmVlIHR5cGVzIG9mIGxheWVyIHNvdXJjZXMgZXhpc3QgdGhhdCBUb2FzdGVyCi0gICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZXM6IExvY2FsLCBMYXllckluZGV4LCBhbmQgSW1wb3J0ZWQuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBMb2NhbCBsYXllciBzb3VyY2UgcmVhZHMgbGF5ZXJzIGZyb20gR2l0IGNsb25lcwotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgb24geW91ciBsb2NhbCBkcml2ZS4KLSAgICAgICAgICAgICAgICAgICAgVXNpbmcgYSBsb2NhbCBsYXllciBzb3VyY2UgZW5hYmxlcyB5b3UgdG8gZWFzaWx5IHRlc3QKLSAgICAgICAgICAgICAgICAgICAgVG9hc3Rlci4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHNldHRpbmcgdXAgYSBob3N0ZWQgdmVyc2lvbiBvZiBUb2FzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBoYXZlIGEgbG9jYWwgbGF5ZXIgc291cmNlLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBMYXllckluZGV4IGxheWVyIHNvdXJjZSB1c2VzIGEgUkVTVCBBUEkgZXhwb3NlZCBieQotICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMgb2YgdGhlIExheWVyIEluZGV4IGFwcGxpY2F0aW9uIChlLmcgdGhlIHB1YmxpYwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvJz48L3VsaW5rPikKLSAgICAgICAgICAgICAgICAgICAgdG8gcmVhZCBsYXllciBkYXRhLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgSW1wb3J0ZWQgbGF5ZXIgc291cmNlIGlzIHJlc2VydmVkIGZvciBsYXllciBkYXRhCi0gICAgICAgICAgICAgICAgICAgIG1hbnVhbGx5IGludHJvZHVjZWQgYnkgdGhlIHVzZXIgb3IgVG9hc3RlciBBZG1pbmlzdHJhdG9yCi0gICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIEdVSS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBsYXllciBzb3VyY2UgbGV0cyB1c2VycyBpbXBvcnQgdGhlaXIgb3duIGxheWVycwotICAgICAgICAgICAgICAgICAgICBhbmQgYnVpbGQgdGhlbSB3aXRoIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgbm90IHJlbW92ZSB0aGUgaW1wb3J0ZWQgbGF5ZXIgc291cmNlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBkZWZhdWx0IDxmaWxlbmFtZT5sYXllcnNvdXJjZXM8L2ZpbGVuYW1lPiBhcmVhOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgImxheWVyc291cmNlcyI6IFsKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiTG9jYWwgWW9jdG8gUHJvamVjdCIsCi0gICAgICAgICAgICAic291cmNldHlwZSI6ICJsb2NhbCIsCi0gICAgICAgICAgICAiYXBpdXJsIjogIi4uLy4uLyIsCi0gICAgICAgICAgICAiYnJhbmNoZXMiOiBbIkhFQUQiIF0sCi0gICAgICAgICAgICAibGF5ZXJzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAib3BlbmVtYmVkZGVkLWNvcmUiLAotICAgICAgICAgICAgICAgICAgICAibG9jYWxfcGF0aCI6ICJtZXRhIiwKLSAgICAgICAgICAgICAgICAgICAgInZjc191cmwiOiAicmVtb3RlOm9yaWdpbiIsCi0gICAgICAgICAgICAgICAgICAgICJkaXJwYXRoIjogIm1ldGEiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIm1ldGEtcG9reSIsCi0gICAgICAgICAgICAgICAgICAgICJsb2NhbF9wYXRoIjogIm1ldGEtcG9reSIsCi0gICAgICAgICAgICAgICAgICAgICJ2Y3NfdXJsIjogInJlbW90ZTpvcmlnaW4iLAotICAgICAgICAgICAgICAgICAgICAiZGlycGF0aCI6ICJtZXRhLXBva3kiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIm1ldGEteW9jdG8tYnNwIiwKLSAgICAgICAgICAgICAgICAgICAgImxvY2FsX3BhdGgiOiAibWV0YS15b2N0by1ic3AiLAotICAgICAgICAgICAgICAgICAgICAidmNzX3VybCI6ICJyZW1vdGU6b3JpZ2luIiwKLSAgICAgICAgICAgICAgICAgICAgImRpcnBhdGgiOiAibWV0YS15b2N0by1ic3AiCi0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIk9wZW5FbWJlZGRlZCIsCi0gICAgICAgICAgICAic291cmNldHlwZSI6ICJsYXllcmluZGV4IiwKLSAgICAgICAgICAgICJhcGl1cmwiOiAiaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYXBpLyIsCi0gICAgICAgICAgICAiYnJhbmNoZXMiOiBbIm1hc3RlciIsICJqZXRocm8iICwiZmlkbyJdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIkltcG9ydGVkIGxheWVycyIsCi0gICAgICAgICAgICAic291cmNldHlwZSI6ICJpbXBvcnRlZCIsCi0gICAgICAgICAgICAiYXBpdXJsIjogIiIsCi0gICAgICAgICAgICAiYnJhbmNoZXMiOiBbIm1hc3RlciIsICJqZXRocm8iLCJmaWRvIiwgIkhFQUQiXQotCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGlzIGEgSlNPTiBmaWxlIHRoYXQgaXRlbWl6ZXMgdGhlIHNwZWNpZmljIGJ1aWxkCisgICAgICAgICAgICAgICAgYW5kIGluY2x1ZGVzIGJ1aWxkIHN1bW1hcnkgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBzYW1wbGUgb3V0cHV0IGZvciBhIHNwZWNpZmljIGJ1aWxkOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgeyJidWlsZCI6CisgICAgICAgeyJkaXN0cm8iOiAicG9reSIsCisgICAgICAgICJlcnJvcnMiOiAwLAorICAgICAgICAibWFjaGluZSI6ICJiZWFnbGVib25lIiwKKyAgICAgICAgInByb2plY3QiOiAibXlfcm9ja28iLAorICAgICAgICAic3RvcCI6ICIyMDE3LTA5LTIyVDA5OjI2OjM2LjAxN1oiLAorICAgICAgICAidGFyZ2V0IjogInF1aWx0LW5hdGl2ZSIsCisgICAgICAgICJzZWNvbmRzIjogIjc4LjE5MyIsCisgICAgICAgICJvdXRjb21lIjogIlN1Y2NlZWRlZCIsCisgICAgICAgICJpZCI6IDEsCisgICAgICAgICJzdGFydCI6ICIyMDE3LTA5LTIyVDA5OjI1OjE3LjgyNFoiLAorICAgICAgICAid2FybmluZ3MiOiAxLAorICAgICAgICAibmFtZSI6ICIyMDE3MDkyMjA5MjYxOCIsCisgICAgICAgICJjb29rZXJfbG9nIjogIi9vcHQvdXNlci9wb2t5L2J1aWxkLXRvYXN0ZXItMi90bXAvbG9nL2Nvb2tlci9iZWFnbGVib25lL2J1aWxkXzIwMTcwOTIyXzAyMjYwNy45OTEubG9nIgogICAgICAgICB9Ci0gICAgXSwKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2pzb24tYml0YmFrZS1hcmVhJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+Qml0QmFrZSBBcmVhPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgb2YgdGhlIEpTT04gZmlsZSBkZWZpbmVzIHRoZSB2ZXJzaW9uIG9mCi0gICAgICAgICAgICAgICAgICAgIEJpdEJha2UgVG9hc3RlciB1c2VzLgotICAgICAgICAgICAgICAgICAgICBBcyBzaGlwcGVkLCBUb2FzdGVyIGlzIGNvbmZpZ3VyZWQgdG8gcmVjb2duaXplIGZvdXIKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgb2YgQml0QmFrZTogbWFzdGVyLCBmaWRvLCBqZXRocm8sIGFuZCBIRUFELgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhFQUQgaXMgYSBzcGVjaWFsIG9wdGlvbiB0aGF0IGJ1aWxkcyB3aGF0ZXZlciBpcwotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIG9uIGRpc2ssIHdpdGhvdXQgY2hlY2tpbmcgb3V0IGFueSByZW1vdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgZGVmYXVsdCA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGFyZWE6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgImJpdGJha2UiIDogWwotICAgICAgICAgewotICAgICAgICAgICAgICJuYW1lIjogIm1hc3RlciIsCi0gICAgICAgICAgICAgImdpdHVybCI6ICJyZW1vdGU6b3JpZ2luIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogIm1hc3RlciIsCi0gICAgICAgICAgICAgImRpcnBhdGgiOiAiYml0YmFrZSIKLSAgICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICAibmFtZSI6ICJqZXRocm8iLAotICAgICAgICAgICAgICJnaXR1cmwiOiAicmVtb3RlOm9yaWdpbiIsCi0gICAgICAgICAgICAgImJyYW5jaCI6ICJqZXRocm8iLAotICAgICAgICAgICAgICJkaXJwYXRoIjogImJpdGJha2UiCi0gICAgICAgICB9LAotICAgICAgICAgewotICAgICAgICAgICAgICJuYW1lIjogImZpZG8iLAotICAgICAgICAgICAgICJnaXR1cmwiOiAicmVtb3RlOm9yaWdpbiIsCi0gICAgICAgICAgICAgImJyYW5jaCI6ICJmaWRvIiwKLSAgICAgICAgICAgICJkaXJwYXRoIjogImJpdGJha2UiCi0gICAgICAgIH0sCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgIm5hbWUiOiAiSEVBRCIsCi0gICAgICAgICAgICAgImdpdHVybCI6ICJyZW1vdGU6b3JpZ2luIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogIkhFQUQiLAotICAgICAgICAgICAgICJkaXJwYXRoIjogImJpdGJha2UiCi0gICAgICAgICB9Ci0gICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdqc29uLWRlZmF1bHQtYXJlYSc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkRlZmF1bHQgQXJlYTwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmVhIG9mIHRoZSBKU09OIGZpbGUgZXN0YWJsaXNoZXMgYSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgdXNlZCBieSBUb2FzdGVyLgotICAgICAgICAgICAgICAgICAgICBBcyBzaGlwcGVkLCBUb2FzdGVyIHVzZXMgdGhlICJtYXN0ZXIiIHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIHN0YXRlbWVudCBpbiB0aGUgSlNPTiBmaWxlIHRoYXQgZXN0YWJsaXNoZXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgcmVsZWFzZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAiZGVmYXVsdHJlbGVhc2UiOiAibWFzdGVyIiwKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2pzb24tcmVsZWFzZXMtYXJlYSc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlJlbGVhc2VzIEFyZWE8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBvZiB0aGUgSlNPTiBmaWxlIGRlZmluZXMgdGhlIHZlcnNpb25zIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIFRvYXN0ZXIgcmVjb2duaXplcy4KLSAgICAgICAgICAgICAgICAgICAgQXMgc2hpcHBlZCwgVG9hc3RlciBpcyBjb25maWd1cmVkIHRvIHdvcmsgd2l0aCB0aGUgZm91cgotICAgICAgICAgICAgICAgICAgICByZWxlYXNlcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0b2FzdGVyLXJlbGVhc2VzLXN1cHBvcnRlZCc+UHJlLUNvbmZpZ3VyZWQgUmVsZWFzZXM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBkZWZhdWx0IDxmaWxlbmFtZT5yZWxlYXNlczwvZmlsZW5hbWU+IGFyZWE6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgInJlbGVhc2VzIjogWwotICAgICAgICAgewotICAgICAgICAgICAgICJuYW1lIjogIm1hc3RlciIsCi0gICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIllvY3RvIFByb2plY3QgbWFzdGVyIiwKLSAgICAgICAgICAgICAiYml0YmFrZSI6ICJtYXN0ZXIiLAotICAgICAgICAgICAgICJicmFuY2giOiAibWFzdGVyIiwKLSAgICAgICAgICAgICAiZGVmYXVsdGxheWVycyI6IFsgIm9wZW5lbWJlZGRlZC1jb3JlIiwgIm1ldGEtcG9reSIsICJtZXRhLXlvY3RvLWJzcCJdLAotICAgICAgICAgICAgICJsYXllcnNvdXJjZXByaW9yaXR5IjogeyAiSW1wb3J0ZWQgbGF5ZXJzIjogOTksICJMb2NhbCBZb2N0byBQcm9qZWN0IiA6IDEwLCAiT3BlbkVtYmVkZGVkIiA6ICAwIH0sCi0gICAgICAgICAgICAgImhlbHB0ZXh0IjogIlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj1cImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nL1wiJmd0O1lvY3RvIFByb2plY3QgbWFzdGVyIGJyYW5jaCZsdDsvYSZndDssIHdoZXJlIGFjdGl2ZSBkZXZlbG9wbWVudCB0YWtlcyBwbGFjZS4gVGhpcyBpcyBub3QgYSBzdGFibGUgYnJhbmNoLCBzbyB5b3VyIGJ1aWxkcyBtaWdodCBub3Qgd29yayBhcyBleHBlY3RlZC4iCi0gICAgICAgICB9LAotICAgICAgICAgewotICAgICAgICAgICAgICJuYW1lIjogImpldGhybyIsCi0gICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIllvY3RvIFByb2plY3QgMi4wIEpldGhybyIsCi0gICAgICAgICAgICAgImJpdGJha2UiOiAiamV0aHJvIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogImpldGhybyIsCi0gICAgICAgICAgICAgImRlZmF1bHRsYXllcnMiOiBbICJvcGVuZW1iZWRkZWQtY29yZSIsICJtZXRhLXBva3kiLCAibWV0YS15b2N0by1ic3AiXSwKLSAgICAgICAgICAgICAibGF5ZXJzb3VyY2Vwcmlvcml0eSI6IHsgIkltcG9ydGVkIGxheWVycyI6IDk5LCAiTG9jYWwgWW9jdG8gUHJvamVjdCIgOiAxMCwgIk9wZW5FbWJlZGRlZCIgOiAgMCB9LAotICAgICAgICAgICAgICJoZWxwdGV4dCI6ICJUb2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHdpdGggdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj1cImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPWpldGhyb1wiJmd0O1lvY3RvIFByb2plY3QgMi4wIFwiSmV0aHJvXCImbHQ7L2EmZ3Q7IGJyYW5jaC4iCi0gICAgICAgICB9LAotICAgICAgICAgewotICAgICAgICAgICAgICJuYW1lIjogImZpZG8iLAotICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJZb2N0byBQcm9qZWN0IDEuOCBGaWRvIiwKLSAgICAgICAgICAgICAiYml0YmFrZSI6ICJmaWRvIiwKLSAgICAgICAgICAgICAiYnJhbmNoIjogImZpZG8iLAotICAgICAgICAgICAgICJkZWZhdWx0bGF5ZXJzIjogWyAib3BlbmVtYmVkZGVkLWNvcmUiLCAibWV0YS1wb2t5IiwgIm1ldGEteW9jdG8tYnNwIl0sCi0gICAgICAgICAgICAgImxheWVyc291cmNlcHJpb3JpdHkiOiB7ICJJbXBvcnRlZCBsYXllcnMiOiA5OSwgIkxvY2FsIFlvY3RvIFByb2plY3QiIDogMTAsICJPcGVuRW1iZWRkZWQiIDogIDAgfSwKLSAgICAgICAgICAgICAiaGVscHRleHQiOiAiVG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB3aXRoIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9XCJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1maWRvXCImZ3Q7WW9jdG8gUHJvamVjdCAxLjggXCJGaWRvXCImbHQ7L2EmZ3Q7IGJyYW5jaC4iCi0gICAgICAgICB9LAotICAgICAgICAgewotICAgICAgICAgICAgICJuYW1lIjogImxvY2FsIiwKLSAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTG9jYWwgWW9jdG8gUHJvamVjdCIsCi0gICAgICAgICAgICAgImJpdGJha2UiOiAiSEVBRCIsCi0gICAgICAgICAgICAgImJyYW5jaCI6ICJIRUFEIiwKLSAgICAgICAgICAgICAiZGVmYXVsdGxheWVycyI6IFsgIm9wZW5lbWJlZGRlZC1jb3JlIiwgIm1ldGEtcG9reSIsICJtZXRhLXlvY3RvLWJzcCJdLAotICAgICAgICAgICAgICJsYXllcnNvdXJjZXByaW9yaXR5IjogeyAiSW1wb3J0ZWQgbGF5ZXJzIjogOTksICJMb2NhbCBZb2N0byBQcm9qZWN0IiA6IDEwLCAiT3BlbkVtYmVkZGVkIiA6ICAwIH0sCi0gICAgICAgICAgICAgImhlbHB0ZXh0IjogIlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgd2l0aCB0aGUgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCB5b3UgaGF2ZSBjbG9uZWQgb3IgZG93bmxvYWRlZCB0byB5b3VyIGNvbXB1dGVyLiIKLSAgICAgICAgIH0KLSAgICAgXQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICB9CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBKU09OIGRhdGEgZm9yIHRoaXMgcXVlcnkgaXMgcmV0dXJuZWQgaW4gYSBzaW5nbGUgbGluZS4KKyAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgZXhhbXBsZSB0aGUgbGluZSBoYXMgYmVlbiBhcnRpZmljaWFsbHkgc3BsaXQgZm9yIHJlYWRhYmlsaXR5LgorICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCkBAIC04NzAsNyArNjc3LDcgQEAKICAgICAgICAgICAgIGNyZWF0ZWQgdGhhdCBhcmUgc3BlY2lmaWMgdG8gVG9hc3RlciBhbmQgYXJlIHVzZWQgdG8gY29udHJvbAogICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhbmQgYmFjay1lbmQgdGFza3MuCiAgICAgICAgICAgICBZb3UgY2FuIGxvY2F0ZSB0aGVzZSBjb21tYW5kcyBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSBhdAogICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvbGliL21hbmFnZS5weTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aG9zZSBjb21tYW5kcy4KQEAgLTg3OSw3ICs2ODYsNyBAQAogICAgICAgICAgICAgICAgICAgICBXaGVuIHVzaW5nIDxmaWxlbmFtZT5tYW5hZ2UucHk8L2ZpbGVuYW1lPiBjb21tYW5kcyBnaXZlbgogICAgICAgICAgICAgICAgICAgICBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgeW91IG11c3QgYmUgc3VyZSB0aGF0IHlvdXIKICAgICAgICAgICAgICAgICAgICAgd29ya2luZyBkaXJlY3RvcnkgaXMgc2V0IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5IGFsbG93cyBUb2FzdGVyIHRvIGZpbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50b2FzdGVyLnNxbGl0ZTwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQKQEAgLTEwMDUsMzAgKzgxMiw2IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0ndG9hc3Rlci1jb21tYW5kLWxvYWRjb25mJz4KLSAgICAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bG9hZGNvbmY8L2ZpbGVuYW1lPjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bG9hZGNvbmY8L2ZpbGVuYW1lPiBjb21tYW5kIGxvYWRzIGFuCi0gICAgICAgICAgICAgICAgZXhpc3RpbmcgVG9hc3RlciBjb25maWd1cmF0aW9uIGZpbGUgKEpTT04gZmlsZSkuCi0gICAgICAgICAgICAgICAgWW91IG11c3QgcnVuIHRoaXMgb24gYSBuZXcgZGF0YWJhc2UgdGhhdCBkb2VzIG5vdCBoYXZlIGFueQotICAgICAgICAgICAgICAgIGRhdGEuCi0gICAgICAgICAgICAgICAgUnVubmluZyB0aGlzIGNvbW1hbmQgb24gYW4gZXhpc3RpbmcgZGF0YWJhc2UgdGhhdCBoYXMgZGF0YQotICAgICAgICAgICAgICAgIHJlc3VsdHMgaW4gZXJyb3JzLgotICAgICAgICAgICAgICAgIEFjY2VzcyB0aGUgY29tbWFuZCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBsb2FkY29uZiA8cmVwbGFjZWFibGU+ZmlsZXBhdGg8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxvYWRjb25mPC9maWxlbmFtZT4gY29tbWFuZCBjb25maWd1cmVzIGEgZGF0YWJhc2UKLSAgICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgc3VwcGxpZWQgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3RlcmNvbmYuanNvbjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSA8ZmlsZW5hbWU+dG9hc3RlcmNvbmYuanNvbjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1qc29uLWZpbGVzJz5KU09OIEZpbGVzPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KICAgICAgICAgPHNlY3Rpb24gaWQ9J3RvYXN0ZXItY29tbWFuZC1ydW5idWlsZHMnPgogICAgICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5ydW5idWlsZHM8L2ZpbGVuYW1lPjwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKaW5kZXggOTY2YzM1ZC4uYzI2YTMyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKQEAgLTE4LDcgKzE4LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIE5hdmlnYXRlIHRvIHRoZSByb290IG9mIHlvdXIKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CiAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBjZCBwb2t5CkBAIC02MSwxOSArNjEsMzIgQEAKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLWEtZGlmZmVyZW50LWFkZHJlc3MnPgotICAgICAgICA8dGl0bGU+U2V0dGluZyBhIERpZmZlcmVudCBBZGRyZXNzPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC1leHRlcm5hbC1hY2Nlc3MnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyB1cCBFeHRlcm5hbCBBY2Nlc3M8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQnkgZGVmYXVsdCwgVG9hc3RlciBiaW5kcyB0byB0aGUgbG9vcCBiYWNrIGFkZHJlc3MKLSAgICAgICAgICAgIChpLmUuIGxvY2FsaG9zdCkuCi0gICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPldFQlBPUlQ8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIgdG8KLSAgICAgICAgICAgIHNldCBhIGRpZmZlcmVudCBob3N0LgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBzZXRzIHRoZSBob3N0IGFuZCBwb3J0Ci0gICAgICAgICAgICB0byAiMC4wLjAuMDo4NDAwIjoKKyAgICAgICAgICAgIChpLmUuIGxvY2FsaG9zdCksIHdoaWNoIGRvZXMgbm90IGFsbG93IGFjY2VzcyBmcm9tCisgICAgICAgICAgICBleHRlcm5hbCBob3N0cy4gVG8gYWxsb3cgZXh0ZXJuYWwgYWNjZXNzLCB1c2UgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+V0VCUE9SVDwvZmlsZW5hbWU+IHBhcmFtZXRlciB0byBvcGVuIGFuCisgICAgICAgICAgICBhZGRyZXNzIHRoYXQgY29ubmVjdHMgdG8gdGhlIG5ldHdvcmssIHNwZWNpZmljYWxseSB0aGUKKyAgICAgICAgICAgIElQIGFkZHJlc3MgdGhhdCB5b3VyIE5JQyB1c2VzIHRvIGNvbm5lY3QgdG8gdGhlIG5ldHdvcmsuCisgICAgICAgICAgICBZb3UgY2FuIGFsc28gYmluZCB0byBhbGwgSVAgYWRkcmVzc2VzIHRoZSBjb21wdXRlcgorICAgICAgICAgICAgc3VwcG9ydHMgYnkgdXNpbmcgdGhlIHNob3J0Y3V0CisgICAgICAgICAgICAiMC4wLjAuMDo8cmVwbGFjZWFibGU+cG9ydDwvcmVwbGFjZWFibGU+Ii4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGJpbmRzIHRvIGFsbCBJUCBhZGRyZXNzZXMgb24gdGhlCisgICAgICAgICAgICBob3N0OgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNvdXJjZSB0b2FzdGVyIHN0YXJ0IHdlYnBvcnQ9MC4wLjAuMDo4NDAwCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIGV4YW1wbGUgYmluZHMgdG8gYSBzcGVjaWZpYyBJUCBhZGRyZXNzIG9uIHRoZSBob3N0J3MKKyAgICAgICAgICAgIE5JQzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgdG9hc3RlciBzdGFydCB3ZWJwb3J0PTE5Mi4xNjguMS4xOjg0MDAKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMTQ1LDcgKzE1OCw3IEBACiAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBUb2FzdGVyIGRhdGFiYXNlLAogICAgICAgICAgICAgICAgICAgd2hpY2ggYnkgZGVmYXVsdCBpcyB0aGUKLSAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgaW52b2tlIHRoZSA8ZmlsZW5hbWU+Y3JlYXRlc3VwZXJ1c2VyPC9maWxlbmFtZT4gY29tbWFuZAogICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0zNjksMTYgKzM4MiwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE9BU1RFUl9DT05GPC9maWxlbmFtZT4sIHdoaWNoIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlIHRvIHRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgVG9hc3RlciBjb25maWd1cmF0aW9uIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfQ09ORjwvZmlsZW5hbWU+LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3RvYXN0ZXItanNvbi1maWxlcyc+SlNPTiBGaWxlczwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFRvYXN0ZXIgY29uZmlndXJhdGlvbiBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2NvbmZpZ3VyaW5nLXRvYXN0ZXInPkNvbmZpZ3VyaW5nIFRvYXN0ZXI8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGluZSBhbHNvIHJ1bnMgdGhlIDxmaWxlbmFtZT5jaGVja3NldHRpbmdzPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgd2hpY2ggY29uZmlndXJlcyB0aGUgbG9jYXRpb24gb2YgdGhlIFRvYXN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBkaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBkaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFRvYXN0ZXIgcm9vdCBkaXJlY3RvcnkgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lcyB3aGVyZSB0aGUgVG9hc3RlciBidWlsZCBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgY3JlYXRlZCBvbiB0aGUgZmlsZSBzeXN0ZW0uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zdGFydC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zdGFydC54bWwKaW5kZXggYzVjNjc5NS4uNjVlMDU3YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbApAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICAgICAgVGhlIHJlcXVpcmVtZW50cyBmaWxlIGlzIGxvY2F0ZWQgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKICAgICAgICAgICAgIHJvb3QgZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5wb2t5L2JpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0PC9maWxlbmFtZT4pLgogICAgICAgICAgICAgVGhlIGRlcGVuZGVuY2llcyBhcHBlYXIgaW4gYSA8ZmlsZW5hbWU+cGlwPC9maWxlbmFtZT4sCiAgICAgICAgICAgICBpbnN0YWxsLWNvbXBhdGlibGUgZm9ybWF0LgpAQCAtNTQsNyArNTQsNyBAQAogICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlIHBhY2thZ2VzIHRoYXQgVG9hc3RlciByZXF1aXJlcy4KICAgICAgICAgICAgICAgICBVc2UgdGhpcyBjb21tYW5kOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCAkIHBpcDMgaW5zdGFsbCAtLXVzZXIgLXIgYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKKyAgICAgJCBwaXAzIGluc3RhbGwgLS11c2VyIC1yIGJpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBjb21tYW5kIGluc3RhbGxzIHRoZSBuZWNlc3NhcnkgVG9hc3RlciBtb2R1bGVzCiAgICAgICAgICAgICAgICAgaW50byBhIGxvY2FsIHB5dGhvbiAzIGNhY2hlIGluIHlvdXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbAppbmRleCBjN2E3ZmNkLi41YTFiNjBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTEgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgorICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+S3Jpc3RpPC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPkludGVsIENvcnBvcmF0aW9uPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD5rcmlzdGlAYnV6emNvbGxlY3RpdmVtYXJrZXRpbmcuY29tPC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC01NywyNCArNTcsMTkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KdW5lIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQ8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTc8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTc8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMy4yIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4zLjM8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjMuMyBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMy40PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4zLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC05MSwyNyArODYsMjkgQEAKICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk1hbnVhbCBOb3RlczwvdGl0bGU+CiAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBUb2FzdGVyCi0gICAgICAgICAgICAgICAgICAgICAgIFVzZXIgTWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFlvY3RvIFByb2plY3QgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiAmWU9DVE9fRE9DX1ZFUlNJT047KSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBZb2N0byBQcm9qZWN0IFRvYXN0ZXIgVXNlciBNYW51YWwgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VG9hc3RlciBVc2VyIE1hbnVhbDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBpcyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICZZT0NUT19ET0NfVkVSU0lPTjsuCi0gICAgICAgICAgICAgICAgICAgICAgIEZvciBsYXRlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCAoaWYgdGhleSBleGlzdCksCi0gICAgICAgICAgICAgICAgICAgICAgIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gZm9yIHdoaWNoIHlvdSB3YW50Ci0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIG1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlc2lyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW4tZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBUb2FzdGVyIFVzZXIgTWFudWFsLCBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy9sYXRlc3QvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCmluZGV4IDkzNmIxMDkuLmFlMjgwMGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKQEAgLTIsMzIgKzIsMzIgQEAKICMgVGhpcyBzdHlsZSBpcyBmb3IgbWFudWFsIGZvbGRlcnMgbGlrZSAieW9jdG8tcHJvamVjdC1xcyIgYW5kICJwb2t5LXJlZi1tYW51YWwiLgogIyBUaGlzIGlzIHRoZSBvbGQgd2F5IHRoYXQgZGlkIGl0LiAgQ2FuJ3QgZG8gdGhhdCBub3cgdGhhdCB3ZSBoYXZlICJiaXRiYWtlLXVzZXItbWFudWFsIiBzdHJpbmdzCiAjIGluIHRoZSBtZWdhLW1hbnVhbC4KLSMgcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvW2Etel0qLVthLXpdKi1bYS16XSpcL1thLXpdKi1bYS16XSotW2Etel0qLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL3lvY3RvLXByb2plY3QtcXNcL3lvY3RvLXByb2plY3QtcXMuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvcG9reS1yZWYtbWFudWFsXC9wb2t5LXJlZi1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworIyBzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9bYS16XSotW2Etel0qLVthLXpdKlwvW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwveW9jdG8tcHJvamVjdC1xc1wveW9jdG8tcHJvamVjdC1xcy5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCitzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9wb2t5LXJlZi1tYW51YWxcL3Bva3ktcmVmLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCiAKICMgUHJvY2Vzc2VzIGFsbCBvdGhlciBtYW51YWxzICg8d29yZD4tPHdvcmQ+IHN0eWxlKSBleGNlcHQgZm9yIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGJlY2F1c2UKICMgaXQgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBtZWdhLW1hbnVhbC4KICMgVGhpcyBzdHlsZSBpcyBmb3IgbWFudWFsIGZvbGRlcnMgdGhhdCB1c2UgdHdvIHdvcmQsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBub3cgKGUuZy4gInJlZi1tYW51YWwiKS4KICMgVGhpcyB3YXMgdGhlIG9uZS1saW5lciB0aGF0IHdvcmtlZCBiZWZvcmUgd2UgaW50cm9kdWNlZCB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbCwgd2hpY2ggaXMKICMgbm90IGluIHRoZSBtZWdhLW1hbnVhbC4KLSMgcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvW2Etel0qLVthLXpdKlwvW2Etel0qLVthLXpdKi5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCisjIHMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL1thLXpdKi1bYS16XSpcL1thLXpdKi1bYS16XSouaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwogCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9zZGstbWFudWFsXC9zZGstbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL2JzcC1ndWlkZVwvYnNwLWd1aWRlLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL2Rldi1tYW51YWxcL2Rldi1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwva2VybmVsLWRldlwva2VybmVsLWRldi5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9wcm9maWxlLW1hbnVhbFwvcHJvZmlsZS1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvcmVmLW1hbnVhbFwvcmVmLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC90b2FzdGVyLW1hbnVhbFwvdG9hc3Rlci1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwveW9jdG8tcHJvamVjdC1xc1wveW9jdG8tcHJvamVjdC1xcy5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCitzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9zZGstbWFudWFsXC9zZGstbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKK3MvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2JzcC1ndWlkZVwvYnNwLWd1aWRlLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKK3MvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2Rldi1tYW51YWxcL2Rldi1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwva2VybmVsLWRldlwva2VybmVsLWRldi5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCitzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9wcm9maWxlLW1hbnVhbFwvcHJvZmlsZS1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvcmVmLW1hbnVhbFwvcmVmLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCitzL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC90b2FzdGVyLW1hbnVhbFwvdG9hc3Rlci1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwveW9jdG8tcHJvamVjdC1xc1wveW9jdG8tcHJvamVjdC1xcy5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCiAKICMgUHJvY2VzcyBjYXNlcyB3aGVyZSBqdXN0IGFuIGV4dGVybmFsIG1hbnVhbCBpcyByZWZlcmVuY2VkIHdpdGhvdXQgYW4gaWQgYW5jaG9yCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDxcL2E+L1lvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvZGV2LW1hbnVhbFwvZGV2LW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgTWFudWFsPFwvYT4vWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvc2RrLW1hbnVhbFwvc2RrLW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPFwvYT4vWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGUvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvYnNwLWd1aWRlXC9ic3AtZ3VpZGUuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTxcL2E+L1lvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlL2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL3Byb2ZpbGUtbWFudWFsXC9wcm9maWxlLW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbC9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuMy40XC9rZXJuZWwtZGV2XC9rZXJuZWwtZGV2Lmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPFwvYT4vWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsL2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi4zLjRcL3JlZi1tYW51YWxcL3JlZi1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8XC9hPi9Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjMuNFwvdG9hc3Rlci1tYW51YWxcL3RvYXN0ZXItbWFudWFsLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+VG9hc3RlciBVc2VyIE1hbnVhbDxcL2E+L1RvYXN0ZXIgVXNlciBNYW51YWwvZworcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwveW9jdG8tcHJvamVjdC1xc1wveW9jdG8tcHJvamVjdC1xcy5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8XC9hPi9Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0L2cKK3MvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2Rldi1tYW51YWxcL2Rldi1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsL2cKK3MvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Nkay1tYW51YWxcL3Nkay1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPFwvYT4vWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKS9nCitzLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9ic3AtZ3VpZGVcL2JzcC1ndWlkZS5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPFwvYT4vWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUvZworcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvcHJvZmlsZS1tYW51YWxcL3Byb2ZpbGUtbWFudWFsLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPFwvYT4vWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsL2cKK3MvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2tlcm5lbC1kZXZcL2tlcm5lbC1kZXYuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8XC9hPi9Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwvZworcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvcmVmLW1hbnVhbFwvcmVmLW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC9nCitzLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC90b2FzdGVyLW1hbnVhbFwvdG9hc3Rlci1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Ub2FzdGVyIFVzZXIgTWFudWFsPFwvYT4vVG9hc3RlciBVc2VyIE1hbnVhbC9nCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL2ZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU5NjkwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL2ZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy9xcy1zdHlsZS5jc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3FzLXN0eWxlLmNzcwppbmRleCAyMzVjODVhLi45NDhmMWJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3FzLXN0eWxlLmNzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3FzLXN0eWxlLmNzcwpAQCAtNzMwLDYgKzczMCwxMSBAQAogfQogCiAKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiByZWQ7Cit9CisKKwogICAvKioqKioqKioqKiogLwogIC8gIGdyYXBoaWNzICAvCiAvICoqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy54bWwKaW5kZXggYjRiM2Y0Yi4uZTZkYWU3ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sCkBAIC0xNiwzNSArMTYsMzYgQEAKICAgICAgICAgICAgICAgICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQgdW5kZXIKICAgICAgICAgICAgICAgICB0aGUgdGVybXMgb2YgdGhlIDx1bGluayB0eXBlPSJodHRwIiB1cmw9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzIuMC91ay8iPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMi4wIFVLOiBFbmdsYW5kICZhbXA7IFdhbGVzPC91bGluaz4gYXMgcHVibGlzaGVkIGJ5IENyZWF0aXZlIENvbW1vbnMuCiAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrCi0gICAgICAgICAgICAgICAgICAgICAgICBTdGFydCBhc3NvY2lhdGVkIHdpdGggdGhpcyBZb2N0byBQcm9qZWN0IHJlbGVhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uICZZT0NUT19ET0NfVkVSU0lPTjspLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCisgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCB1c2UgdGhlIG1hbnVhbCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hbnVhbHMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgbWFudWFsIGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICZZT0NUT19ET0NfVkVSU0lPTjsuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbGF0ZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgKGlmIHRoZXkgZXhpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBmb3Igd2hpY2ggeW91IHdhbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGluLWRldmVsb3BtZW50IHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIFF1aWNrIFN0YXJ0LCBzZWUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvbGF0ZXN0L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9sZWdhbG5vdGljZT4KIAotCiAgICAgICAgIDxhYnN0cmFjdD4KICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy95b2N0by1wcm9qZWN0LXRyYW5zcC5wbmciCiAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iNmluIiBkZXB0aD0iMWluIgpAQCAtNjAsMjQgKzYxLDEyIEBACiAgICAgICAgICAgICBmb2N1cyBpcyBkZXZlbG9wZXJzIG9mIGVtYmVkZGVkIExpbnV4IHN5c3RlbXMuCiAgICAgICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBidWlsZCBob3N0IGJhc2VkCiAgICAgICAgICAgICBvbiB0aGUgT3BlbkVtYmVkZGVkIChPRSkgcHJvamVjdCwgd2hpY2ggdXNlcyB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgogICAgICAgICAgICAgdG9vbCwgdG8gY29uc3RydWN0IGNvbXBsZXRlIExpbnV4IGltYWdlcy4KLSAgICAgICAgICAgIFRoZSBCaXRCYWtlIGFuZCBPRSBjb21wb25lbnRzIGFyZSBjb21iaW5lZCB0b2dldGhlciB0byBmb3JtCisgICAgICAgICAgICBUaGUgQml0QmFrZSBhbmQgT0UgY29tcG9uZW50cyBjb21iaW5lIHRvZ2V0aGVyIHRvIGZvcm0KICAgICAgICAgICAgIGEgcmVmZXJlbmNlIGJ1aWxkIGhvc3QsIGhpc3RvcmljYWxseSBrbm93biBhcwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcG9reSc+UG9reTwvdWxpbms+Ci0gICAgICAgICAgICAoPGVtcGhhc2lzPlBhaDwvZW1waGFzaXM+LWtleSkuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSBhIHN5c3RlbSB0aGF0IHJ1bnMgTGludXggYW5kIHlvdSB3YW50IHRvIGdpdmUKLSAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGEgdGVzdCBydW4sIHlvdSBtaWdodCBjb25zaWRlciB1c2luZyB0aGUgWW9jdG8KLSAgICAgICAgICAgIFByb2plY3QgQnVpbGQgQXBwbGlhbmNlLgotICAgICAgICAgICAgVGhlIEJ1aWxkIEFwcGxpYW5jZSBhbGxvd3MgeW91IHRvIGJ1aWxkIGFuZCBib290IGEgY3VzdG9tIGVtYmVkZGVkCi0gICAgICAgICAgICBMaW51eCBpbWFnZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IHVzaW5nIGEgbm9uLUxpbnV4IGRldmVsb3BtZW50Ci0gICAgICAgICAgICBzeXN0ZW0uCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL3Rvb2xzLXJlc291cmNlcy9wcm9qZWN0cy9idWlsZC1hcHBsaWFuY2UnPllvY3RvIFByb2plY3QgQnVpbGQgQXBwbGlhbmNlPC91bGluaz4KLSAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+CisgICAgICAgICAgICAoPGVtcGhhc2lzPlBhaDwvZW1waGFzaXM+LWtlZSkuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTg2LDMwICs3NSw3NCBAQAogICAgICAgICAgICAgTGludXggaW1hZ2VzLgogICAgICAgICAgICAgUmF0aGVyIHRoYW4gZ28gaW50byBncmVhdCBkZXRhaWwgYWJvdXQgdGhlIFlvY3RvIFByb2plY3QgYW5kIGl0cwogICAgICAgICAgICAgbWFueSBjYXBhYmlsaXRpZXMsIHRoaXMgcXVpY2sgc3RhcnQgcHJvdmlkZXMgdGhlIG1pbmltYWwKLSAgICAgICAgICAgIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIHRyeSBvdXQgdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgYQotICAgICAgICAgICAgc3VwcG9ydGVkIExpbnV4IGJ1aWxkIGhvc3QuCisgICAgICAgICAgICBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byB0cnkgb3V0IHRoZSBZb2N0byBQcm9qZWN0IHVzaW5nIGVpdGhlciBhCisgICAgICAgICAgICBzdXBwb3J0ZWQgTGludXggYnVpbGQgaG9zdCBvciBhIGJ1aWxkIGhvc3Qgc2V0IHVwIHRvIHVzZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgICAgIHdoaWNoIGxldmVyYWdlcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFJlYWRpbmcgYW5kIHVzaW5nIHRoZSBxdWljayBzdGFydCBzaG91bGQgcmVzdWx0IGluIHlvdSBoYXZpbmcgYQogICAgICAgICAgICAgYmFzaWMgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBZb2N0byBQcm9qZWN0IGlzIGFuZCBob3cgdG8gdXNlCiAgICAgICAgICAgICBzb21lIG9mIGl0cyBjb3JlIGNvbXBvbmVudHMuCiAgICAgICAgICAgICBZb3Ugd2lsbCBhbHNvIGhhdmUgd29ya2VkIHRocm91Z2ggc3RlcHMgdG8gcHJvZHVjZSB0d28gaW1hZ2VzOgotICAgICAgICAgICAgb25lIHRoYXQgaXMgc3VpdGFibGUgZm9yIGVtdWxhdGlvbiBhbmQgb25lIHRoYXQgYm9vdHMgb24gYWN0dWFsCi0gICAgICAgICAgICBoYXJkd2FyZS4KKyAgICAgICAgICAgIG9uZSB0aGF0IHJ1bnMgb24gdGhlIGVtdWxhdG9yIChRRU1VKSBhbmQgb25lIHRoYXQgYm9vdHMgb24gYWN0dWFsCisgICAgICAgICAgICBoYXJkd2FyZSAoaS5lLiBNaW5ub3dCb2FyZCBUdXJib3QpLgogICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGhpZ2hsaWdodCB0aGUgZWFzZSB3aXRoIHdoaWNoIHlvdSBjYW4gdXNlIHRoZQogICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0byBjcmVhdGUgaW1hZ2VzIGZvciBtdWx0aXBsZSB0eXBlcyBvZiBoYXJkd2FyZS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRpcmVjdHMgeW91IHRvIGtleSBzZWN0aW9ucyBvZiB0aGlzCisgICAgICAgICAgICBxdWljayBzdGFydDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjQveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwjeXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi40L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sI2J1aWxkaW5nLWFuLWltYWdlLWZvci1lbXVsYXRpb24nPkJ1aWxkaW5nIGFuIEltYWdlIGZvciBFbXVsYXRpb248L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNC95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbCNidWlsZGluZy1hbi1pbWFnZS1mb3ItaGFyZHdhcmUnPkJ1aWxkaW5nIGFuIEltYWdlIGZvciBIYXJkd2FyZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Cis8IS0tCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgYSBzeXN0ZW0gdGhhdCBydW5zIExpbnV4IGFuZCB5b3Ugd2FudCB0byBnaXZlCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgYSB0ZXN0IHJ1biwgeW91IG1pZ2h0IGNvbnNpZGVyIHVzaW5nIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QgQnVpbGQgQXBwbGlhbmNlLgorICAgICAgICAgICAgICAgIFRoZSBCdWlsZCBBcHBsaWFuY2UgYWxsb3dzIHlvdSB0byBidWlsZCBhbmQgYm9vdCBhIGN1c3RvbQorICAgICAgICAgICAgICAgIGVtYmVkZGVkIExpbnV4IGltYWdlIHdpdGggdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgYSBub24tTGludXgKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvdG9vbHMtcmVzb3VyY2VzL3Byb2plY3RzL2J1aWxkLWFwcGxpYW5jZSc+WW9jdG8gUHJvamVjdCBCdWlsZCBBcHBsaWFuY2U8L3VsaW5rPgorICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorLS0+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0LCB5b3UgY2FuCiAgICAgICAgICAgICByZWZlcmVuY2UgdGhlc2UgcmVzb3VyY2VzOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPldlYnNpdGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5XZWJzaXRlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyB0aGUgbGF0ZXN0IGJ1aWxkcywgYnJlYWtpbmcgbmV3cywgZnVsbCBkZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLCBhbmQgYWNjZXNzIHRvIGEgcmljaCBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IENvbW11bml0eSBpbnRvIHdoaWNoIHlvdSBjYW4gdGFwLgorICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uLCB0aGUgbGF0ZXN0IGJ1aWxkcywgYnJlYWtpbmcKKyAgICAgICAgICAgICAgICAgICAgbmV3cywgZnVsbCBkZXZlbG9wbWVudCBkb2N1bWVudGF0aW9uLCBhbmQgYWNjZXNzIHRvIGEgcmljaAorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IENvbW11bml0eSBpbnRvIHdoaWNoIHlvdSBjYW4gdGFwLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkZBUXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IE92ZXJ2aWV3OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjeXAtaW50cm8nPkludHJvZHVjaW5nIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gcHJlc2VudHMgYW4gb3ZlcnZpZXcgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZBUXM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgTGlzdHMgY29tbW9ubHkgYXNrZWQgWW9jdG8gUHJvamVjdCBxdWVzdGlvbnMgYW5kIGFuc3dlcnMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0d28gRkFRczoKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0ZBUSc+WW9jdG8gUHJvamVjdCBGQVE8L3VsaW5rPgpAQCAtMTE3LDcgKzE1MCw4IEBACiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNmYXEnPkZBUTwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RGV2ZWxvcGVyIFNjcmVlbmNhc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXZlbG9wZXIgU2NyZWVuY2FzdDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBUaGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3ZpbWVvLmNvbS8zNjQ1MDMyMSc+R2V0dGluZyBTdGFydGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgLSBOZXcgRGV2ZWxvcGVyIFNjcmVlbmNhc3QgVHV0b3JpYWw8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBhIDMwLW1pbnV0ZSB2aWRlbyBjcmVhdGVkIGZvciB1c2VycyB1bmZhbWlsaWFyCkBAIC0xMjYsMjM4ICsxNjAsMjQwIEBACiAgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgc2NyZWVuY2FzdCBpcyBzb21ld2hhdCBkYXRlZCwgdGhlIGludHJvZHVjdG9yeQogICAgICAgICAgICAgICAgICAgICBhbmQgZnVuZGFtZW50YWwgY29uY2VwdHMgYXJlIHVzZWZ1bCBmb3IgdGhlIGJlZ2lubmVyLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21wcmVoZW5zaXZlIExpc3Qgb2YgTGlua3MgYW5kIE90aGVyIERvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbGlua3MtYW5kLXJlbGF0ZWQtZG9jdW1lbnRhdGlvbic+TGlua3MgYW5kIFJlbGF0ZWQgRG9jdW1lbnRhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgcHJvdmlkZXMgYQorICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgcmVsYXRlZCBsaW5rcyBhbmQgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSd5cC1pbnRybyc+Ci0gICAgICAgIDx0aXRsZT5JbnRyb2R1Y2luZyB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0aHJvdWdoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHByb3ZpZGVzIGFuCi0gICAgICAgICAgICBvcGVuIHNvdXJjZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0YXJnZXRpbmcgdGhlIEFSTSwgTUlQUywKLSAgICAgICAgICAgIFBvd2VyUEMsIGFuZCB4ODYgYXJjaGl0ZWN0dXJlcyBmb3IgYSB2YXJpZXR5IG9mIHBsYXRmb3JtcwotICAgICAgICAgICAgaW5jbHVkaW5nIHg4Ni02NCBhbmQgZW11bGF0ZWQgb25lcy4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIGNvbXBvbmVudHMgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCB0byBkZXNpZ24sIGRldmVsb3AsCi0gICAgICAgICAgICBidWlsZCwgZGVidWcsIHNpbXVsYXRlLCBhbmQgdGVzdCB0aGUgY29tcGxldGUgc29mdHdhcmUgc3RhY2sgdXNpbmcKLSAgICAgICAgICAgIExpbnV4LCB0aGUgWCBXaW5kb3cgU3lzdGVtLCBHVEsrIGZyYW1ld29ya3MsIGFuZCBRdCBmcmFtZXdvcmtzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG1lZGlhb2JqZWN0PgotICAgICAgICAgICAgPGltYWdlb2JqZWN0PgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC5wbmciCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdD0iUE5HIiBhbGlnbj0nY2VudGVyJyB3aWR0aD0iOGluIi8+Ci0gICAgICAgICAgICA8L2ltYWdlb2JqZWN0PgotICAgICAgICAgPC9tZWRpYW9iamVjdD4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgaGlnaGxpZ2h0cyBmb3IgdGhlIFlvY3RvIFByb2plY3Q6Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIFByb3ZpZGVzIGEgcmVjZW50IExpbnV4IGtlcm5lbCBhbG9uZyB3aXRoIGEgc2V0IG9mIHN5c3RlbQotICAgICAgICAgICAgICAgIGNvbW1hbmRzIGFuZCBsaWJyYXJpZXMgc3VpdGFibGUgZm9yIHRoZSBlbWJlZGRlZAotICAgICAgICAgICAgICAgIGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIE1ha2VzIGF2YWlsYWJsZSBzeXN0ZW0gY29tcG9uZW50cyBzdWNoIGFzIFgxMSwgR1RLKywgUXQsCi0gICAgICAgICAgICAgICAgQ2x1dHRlciwgYW5kIFNETCAoYW1vbmcgb3RoZXJzKSBzbyB5b3UgY2FuIGNyZWF0ZSBhIHJpY2ggdXNlcgotICAgICAgICAgICAgICAgIGV4cGVyaWVuY2Ugb24gZGV2aWNlcyB0aGF0IGhhdmUgZGlzcGxheSBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICBGb3IgZGV2aWNlcyB0aGF0IGRvIG5vdCBoYXZlIGEgZGlzcGxheSBvciB3aGVyZSB5b3Ugd2lzaCB0bwotICAgICAgICAgICAgICAgIHVzZSBhbHRlcm5hdGl2ZSBVSSBmcmFtZXdvcmtzLCB0aGVzZSBjb21wb25lbnRzIG5lZWQgbm90IGJlCi0gICAgICAgICAgICAgICAgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBmb2N1c2VkIGFuZCBzdGFibGUgY29yZSBjb21wYXRpYmxlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIHByb2plY3Qgd2l0aCB3aGljaCB5b3UgY2FuIGVhc2lseSBhbmQgcmVsaWFibHkKLSAgICAgICAgICAgICAgICBidWlsZCBhbmQgZGV2ZWxvcC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBGdWxseSBzdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgaGFyZHdhcmUgYW5kIGRldmljZSBlbXVsYXRpb24KLSAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgUHJvdmlkZXMgYSBsYXllciBtZWNoYW5pc20gdGhhdCBhbGxvd3MgeW91IHRvIGVhc2lseSBleHRlbmQKLSAgICAgICAgICAgICAgICB0aGUgc3lzdGVtLCBtYWtlIGN1c3RvbWl6YXRpb25zLCBhbmQga2VlcCB0aGVtIG9yZ2FuaXplZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgWW9jdG8gUHJvamVjdCB0byBnZW5lcmF0ZSBpbWFnZXMgZm9yIG1hbnkga2luZHMKLSAgICAgICAgICAgIG9mIGRldmljZXMuCi0gICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgY3JlYXRpb24gb2YKLSAgICAgICAgICAgIHJlZmVyZW5jZSBpbWFnZXMgdGhhdCB5b3UgY2FuIGJvb3Qgd2l0aGluIGFuZCBlbXVsYXRlIHVzaW5nIFFFTVUuCi0gICAgICAgICAgICBUaGUgc3RhbmRhcmQgZXhhbXBsZSBtYWNoaW5lcyB0YXJnZXQgUUVNVSBmdWxsLXN5c3RlbQotICAgICAgICAgICAgZW11bGF0aW9uIGZvciAzMi1iaXQgYW5kIDY0LWJpdCB2YXJpYW50cyBvZiB4ODYsIEFSTSwgTUlQUywgYW5kCi0gICAgICAgICAgICBQb3dlclBDIGFyY2hpdGVjdHVyZXMuCi0gICAgICAgICAgICBCZXlvbmQgZW11bGF0aW9uLCB5b3UgY2FuIHVzZSB0aGUgbGF5ZXIgbWVjaGFuaXNtIHRvIGV4dGVuZAotICAgICAgICAgICAgc3VwcG9ydCB0byBqdXN0IGFib3V0IGFueSBwbGF0Zm9ybSB0aGF0IExpbnV4IGNhbiBydW4gb24gYW5kIHRoYXQKLSAgICAgICAgICAgIGEgdG9vbGNoYWluIGNhbiB0YXJnZXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFub3RoZXIgWW9jdG8gUHJvamVjdCBmZWF0dXJlIGlzIHRoZSBTYXRvIHJlZmVyZW5jZSBVc2VyCi0gICAgICAgICAgICBJbnRlcmZhY2UuCi0gICAgICAgICAgICBUaGlzIG9wdGlvbmFsIFVJIHRoYXQgaXMgYmFzZWQgb24gR1RLKyBpcyBpbnRlbmRlZCBmb3IgZGV2aWNlcyB3aXRoCi0gICAgICAgICAgICByZXN0cmljdGVkIHNjcmVlbiBzaXplcyBhbmQgaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUKLSAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBDb3JlIGxheWVyIHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gdGVzdCBwYXJ0cyBvZiB0aGUKLSAgICAgICAgICAgIHNvZnR3YXJlIHN0YWNrLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCiAgICAgPHNlY3Rpb24gaWQ9J3lwLXJlc291cmNlcyc+CiAgICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3Mgd2hhdCB5b3UgbmVlZCBpbiBvcmRlciB0byB1c2UgYQotICAgICAgICAgICAgTGludXgtYmFzZWQgYnVpbGQgaG9zdCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgaW1hZ2VzOgorICAgICAgICAgICAgU2V0dGluZyB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgaW52b2x2ZXMgZ2V0dGluZyB5b3VyIGJ1aWxkCisgICAgICAgICAgICBob3N0IHJlYWR5LgorICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBuYXRpdmUgTGludXggbWFjaGluZSB0aGF0IHJ1bnMgYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBzdXBwb3J0ZWQgZGlzdHJpYnV0aW9uIGFzIGRlc2NyaWJlZCBieSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCwgeW91IGNhbiBwcmVwYXJlCisgICAgICAgICAgICB0aGF0IG1hY2hpbmUgYXMgeW91ciBidWlsZCBob3N0LgorICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3FzLW5hdGl2ZS1saW51eC1idWlsZC1ob3N0Jz5Vc2luZyBhIE5hdGl2ZSBMaW51eCBNYWNoaW5lPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCBIb3N0PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIGJ1aWxkIGhvc3Qgd2l0aCBhIG1pbmltdW0gb2YgNTAgR2J5dGVzIG9mIGZyZWUgZGlzawotICAgICAgICAgICAgICAgIHNwYWNlIHRoYXQgaXMgcnVubmluZyBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24gKGkuZS4KLSAgICAgICAgICAgICAgICByZWNlbnQgcmVsZWFzZXMgb2YgRmVkb3JhLCBvcGVuU1VTRSwgQ2VudE9TLCBEZWJpYW4sIG9yCi0gICAgICAgICAgICAgICAgVWJ1bnR1KS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgSG9zdCBQYWNrYWdlczwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXBwcm9wcmlhdGUgcGFja2FnZXMgaW5zdGFsbGVkIG9uIHRoZSBidWlsZCBob3N0LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UaGUgWW9jdG8gUHJvamVjdDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHdhbnQgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IG9uIGEgbmF0aXZlIExpbnV4CisgICAgICAgICAgICBtYWNoaW5lLCB5b3UgY2FuIHByZXBhcmUgeW91ciBidWlsZCBob3N0IHRvIHVzZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgICAgIHdoaWNoIGxldmVyYWdlcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCisgICAgICAgICAgICBZb3UgY2FuIHNldCB1cCBhIGJ1aWxkIGhvc3QgZm9yIFdpbmRvd3MsIE1hYywgYW5kIExpbnV4CisgICAgICAgICAgICBtYWNoaW5lcy4KKyAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdxcy1jcm9wcy1idWlsZC1ob3N0Jz5Vc2luZyBDUk9QUyBhbmQgQ29udGFpbmVyczwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3RoZS1saW51eC1kaXN0cm8nPgotICAgICAgICAgICAgPHRpdGxlPlRoZSBMaW51eCBEaXN0cmlidXRpb248L3RpdGxlPgorICAgICAgICA8c2VjdGlvbiBpZD0ncXMtY3JvcHMtYnVpbGQtaG9zdCc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgQ1JPUFMgYW5kIENvbnRhaW5lcnM8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIHZlcmlmaWVzIGVhY2ggcmVsZWFzZSBhZ2FpbnN0IHJlY2VudAotICAgICAgICAgICAgICAgIHZlcnNpb25zIG9mIHRoZSBtb3N0IHBvcHVsYXIgTGludXggZGlzdHJpYnV0aW9ucyB0aGF0Ci0gICAgICAgICAgICAgICAgcHJvdmlkZSBzdGFibGUgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgaWYgeW91IGhhdmUgdGhlIGN1cnJlbnQgcmVsZWFzZSBtaW51cyBvbmUgb2YgdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nIGRpc3RyaWJ1dGlvbnMsIHlvdSBzaG91bGQgaGF2ZSBubyBwcm9ibGVtcy4KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBnZXQgeW91ciBidWlsZCBob3N0IHNldCB1cCB3aXRoIGEKKyAgICAgICAgICAgICAgICBQb2t5IGNvbnRhaW5lciB0aGF0IHlvdSBjYW4gdXNlIHRvIGNvbXBsZXRlIHRoZSBidWlsZAorICAgICAgICAgICAgICAgIGV4YW1wbGVzIGZ1cnRoZXIgZG93biBpbiB0aGUgUXVpY2sgU3RhcnQ6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBVYnVudHUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgVXAgdG8gdXNlIENST3NzIFBsYXRmb3JtUyAoQ1JPUFMpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBXb3JrIHRocm91Z2ggdGhlIGZpcnN0IHNpeCBzdGVwcyBvZiB0aGUgcHJvY2VkdXJlCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRvLXVzZS1jcm9wcyc+U2V0dGluZyBVcCB0byBVc2UgQ1JPc3MgUGxhdGZvcm1TIChDUk9QUyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZlZG9yYQotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5TVVNFCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQ2VudE9TCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRGViaWFuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICBGb3IgYSBtb3JlIGRldGFpbGVkIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyB0aGF0IHN1cHBvcnQgdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRoZSBQb2t5IENvbnRhaW5lciB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEdvIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXIvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kJz48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGZvbGxvdyB0aGUgZGlyZWN0aW9ucyB0byBzZXQgdXAgdGhlIFBva3kgY29udGFpbmVyCisgICAgICAgICAgICAgICAgICAgICAgICBvbiB5b3VyIGJ1aWxkIGhvc3QuPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzaG91bGQgYmUgYWJsZSB0byBydW4gb24gYW55Ci0gICAgICAgICAgICAgICAgbW9kZXJuIGRpc3RyaWJ1dGlvbiB0aGF0IGhhcyB0aGUgZm9sbG93aW5nIHZlcnNpb25zIGZvcgotICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBhbmQgUHl0aG9uLgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEdpdCAxLjguMy4xIG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uY2UgeW91IGNvbXBsZXRlIHRoZSBzZXR1cCBpbnN0cnVjdGlvbnMgZm9yIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBuZWVkIHRvIGdldCBhIGNvcHkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgb24geW91ciBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWxlYXNlcyc+WW9jdG8gUHJvamVjdCBSZWxlYXNlPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gdG8gY29udGludWUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjQgb3IgZ3JlYXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGRvZXMgbm90IG1lZXQgYW55IG9mIHRoZXNlIHRocmVlIGxpc3RlZAotICAgICAgICAgICAgICAgIHZlcnNpb24gcmVxdWlyZW1lbnRzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8gcHJlcGFyZSB0aGUKLSAgICAgICAgICAgICAgICBzeXN0ZW0gc28gdGhhdCB5b3UgY2FuIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0ncGFja2FnZXMnPgotICAgICAgICAgICAgPHRpdGxlPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J3FzLW5hdGl2ZS1saW51eC1idWlsZC1ob3N0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBhIE5hdGl2ZSBMaW51eCBNYWNoaW5lPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUmVxdWlyZWQgYnVpbGQgaG9zdCBwYWNrYWdlcyB2YXJ5IGRlcGVuZGluZyBvbiB5b3VyCi0gICAgICAgICAgICAgICAgYnVpbGQgbWFjaGluZSBhbmQgd2hhdCB5b3Ugd2FudCB0byBkbyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBidWlsZCBhbiBpbWFnZSB0aGF0IGNhbiBydW4KLSAgICAgICAgICAgICAgICBvbiBRRU1VIGluIGdyYXBoaWNhbCBtb2RlIChhIG1pbmltYWwsIGJhc2ljIGJ1aWxkCi0gICAgICAgICAgICAgICAgcmVxdWlyZW1lbnQpLCB0aGVuIHRoZSBidWlsZCBob3N0IHBhY2thZ2UgcmVxdWlyZW1lbnRzCi0gICAgICAgICAgICAgICAgYXJlIGRpZmZlcmVudCB0aGFuIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGltYWdlIG9uIGEgaGVhZGxlc3MKLSAgICAgICAgICAgICAgICBzeXN0ZW0gb3IgYnVpbGQgb3V0IHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gc2V0LgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB3aGF0IHlvdSBuZWVkIGluIG9yZGVyIHRvIHVzZSBhCisgICAgICAgICAgICAgICAgTGludXgtYmFzZWQgYnVpbGQgaG9zdCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgaW1hZ2VzOgogICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgcGFja2FnZXMgaXMgbGFyZ2UKLSAgICAgICAgICAgICAgICBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGNvdmVyIGFsbCBjYXNlcy4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgeW91IG5lZWQgdG8gaGF2ZSByb290IGFjY2VzcyBhbmQgdGhlbiBpbnN0YWxsCi0gICAgICAgICAgICAgICAgICAgIHRoZSByZXF1aXJlZCBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgVGh1cywgdGhlIGNvbW1hbmRzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbiBtYXkgb3IgbWF5Ci0gICAgICAgICAgICAgICAgICAgIG5vdCB3b3JrIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB5b3VyIExpbnV4Ci0gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBoYXMgPGZpbGVuYW1lPnN1ZG88L2ZpbGVuYW1lPiBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIEhvc3Q8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBIGJ1aWxkIGhvc3Qgd2l0aCBhIG1pbmltdW0gb2YgNTAgR2J5dGVzIG9mIGZyZWUgZGlzaworICAgICAgICAgICAgICAgICAgICBzcGFjZSB0aGF0IGlzIHJ1bm5pbmcgYSBzdXBwb3J0ZWQgTGludXggZGlzdHJpYnV0aW9uIChpLmUuCisgICAgICAgICAgICAgICAgICAgIHJlY2VudCByZWxlYXNlcyBvZiBGZWRvcmEsIG9wZW5TVVNFLCBDZW50T1MsIERlYmlhbiwgb3IKKyAgICAgICAgICAgICAgICAgICAgVWJ1bnR1KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCBIb3N0IFBhY2thZ2VzPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQXBwcm9wcmlhdGUgcGFja2FnZXMgaW5zdGFsbGVkIG9uIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIG5lZWRlZCB0byBidWlsZAotICAgICAgICAgICAgICAgIGFuIGltYWdlIHRoYXQgcnVucyBvbiBRRU1VIGluIGdyYXBoaWNhbCBtb2RlIChlLmcuIGVzc2VudGlhbAotICAgICAgICAgICAgICAgIHBsdXMgZ3JhcGhpY3Mgc3VwcG9ydCkuCi0gICAgICAgICAgICAgICAgRm9yIGxpc3RzIG9mIHJlcXVpcmVkIHBhY2thZ2VzIGZvciBvdGhlciBzY2VuYXJpb3MsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVidW50dSBhbmQgRGViaWFuPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd0aGUtbGludXgtZGlzdHJvJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VGhlIExpbnV4IERpc3RyaWJ1dGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSB2ZXJpZmllcyBlYWNoIHJlbGVhc2UgYWdhaW5zdCByZWNlbnQKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgb2YgdGhlIG1vc3QgcG9wdWxhciBMaW51eCBkaXN0cmlidXRpb25zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBzdGFibGUgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGlmIHlvdSBoYXZlIHRoZSBjdXJyZW50IHJlbGVhc2UgbWludXMgb25lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZGlzdHJpYnV0aW9ucywgeW91IHNob3VsZCBoYXZlIG5vIHByb2JsZW1zLgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVidW50dQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZlZG9yYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5TVVNFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VudE9TCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGViaWFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBGb3IgYSBtb3JlIGRldGFpbGVkIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyB0aGF0IHN1cHBvcnQgdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBvbiBhbnkKKyAgICAgICAgICAgICAgICAgICAgbW9kZXJuIGRpc3RyaWJ1dGlvbiB0aGF0IGhhcyB0aGUgZm9sbG93aW5nIHZlcnNpb25zIGZvcgorICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgYW5kIFB5dGhvbi4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgMS44LjMuMSBvciBncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjcgb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGRvZXMgbm90IG1lZXQgYW55IG9mIHRoZXNlIHRocmVlIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50cywgeW91IGNhbiB0YWtlIHN0ZXBzIHRvIHByZXBhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzbyB0aGF0IHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncGFja2FnZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5UaGUgQnVpbGQgSG9zdCBQYWNrYWdlczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWQgYnVpbGQgaG9zdCBwYWNrYWdlcyB2YXJ5IGRlcGVuZGluZyBvbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIG1hY2hpbmUgYW5kIHdoYXQgeW91IHdhbnQgdG8gZG8gd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGltYWdlIHRoYXQgY2FuIHJ1bgorICAgICAgICAgICAgICAgICAgICBvbiBRRU1VIGluIGdyYXBoaWNhbCBtb2RlIChhIG1pbmltYWwsIGJhc2ljIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50KSwgdGhlbiB0aGUgYnVpbGQgaG9zdCBwYWNrYWdlIHJlcXVpcmVtZW50cworICAgICAgICAgICAgICAgICAgICBhcmUgZGlmZmVyZW50IHRoYW4gaWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW1hZ2Ugb24gYSBoZWFkbGVzcworICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gb3IgYnVpbGQgb3V0IHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gc2V0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgcGFja2FnZXMgaXMgbGFyZ2UKKyAgICAgICAgICAgICAgICAgICAgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBjb3ZlciBhbGwgY2FzZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgeW91IG5lZWQgdG8gaGF2ZSByb290IGFjY2VzcyBhbmQgdGhlbiBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVxdWlyZWQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgY29tbWFuZHMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uIG1heSBvciBtYXkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCB3b3JrIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB5b3VyIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gaGFzIDxmaWxlbmFtZT5zdWRvPC9maWxlbmFtZT4gaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGFuIGltYWdlIHRoYXQgcnVucyBvbiBRRU1VIGluIGdyYXBoaWNhbCBtb2RlIChlLmcuIGVzc2VudGlhbAorICAgICAgICAgICAgICAgICAgICBwbHVzIGdyYXBoaWNzIHN1cHBvcnQpLgorICAgICAgICAgICAgICAgICAgICBGb3IgbGlzdHMgb2YgcmVxdWlyZWQgcGFja2FnZXMgZm9yIG90aGVyIHNjZW5hcmlvcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVidW50dSBhbmQgRGViaWFuPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgJlVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsgbGlic2RsMS4yLWRldiB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RmVkb3JhPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkZlZG9yYTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgJkZFRE9SQV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsgU0RMLWRldmVsIHh0ZXJtCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuU1VTRTwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuU1VTRTwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8genlwcGVyIGluc3RhbGwgJk9QRU5TVVNFX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBsaWJTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNlbnRPUzwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DZW50T1M8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzdWRvIHl1bSBpbnN0YWxsICZDRU5UT1NfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7IFNETC1kZXZlbCB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRyYSBQYWNrYWdlcyBmb3IgRW50ZXJwcmlzZSBMaW51eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYSBjb2xsZWN0aW9uIG9mIHBhY2thZ2VzIGZyb20gRmVkb3JhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBvbiBSSEVML0NlbnRPUyBmb3IgZWFzeSBpbnN0YWxsYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHBhY2thZ2VzIG5vdCBpbmNsdWRlZCBpbiBlbnRlcnByaXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW51eCBieSBkZWZhdWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ha2VjYWNoZTwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVzIGFkZGl0aW9uYWwgTWV0YWRhdGEgZnJvbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRyYSBQYWNrYWdlcyBmb3IgRW50ZXJwcmlzZSBMaW51eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGNvbGxlY3Rpb24gb2YgcGFja2FnZXMgZnJvbSBGZWRvcmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBvbiBSSEVML0NlbnRPUyBmb3IgZWFzeSBpbnN0YWxsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXMgYWRkaXRpb25hbCBNZXRhZGF0YSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgY29tcGxldGUgdGhlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgeW91cgorICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBuZWVkIHRvIGdldCBhIGNvcHkgb2YgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQKKyAgICAgICAgICAgICAgICBob3N0LgorICAgICAgICAgICAgICAgIENvbnRpbnVlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlbGVhc2VzJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2U8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtMzY1LDExICs0MDEsMTIgQEAKICAgICAgICAgICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFJlbGVhc2U8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgbGFzdCByZXF1aXJlbWVudCB5b3UgbmVlZCB0byBtZWV0IGJlZm9yZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGlzIGdldHRpbmcgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgTm93IHRoYXQgeW91ciBidWlsZCBob3N0IGhhcyB0aGUgcmlnaHQgcGFja2FnZXMgKG5hdGl2ZQorICAgICAgICAgICAgICAgIExpbnV4IG1hY2hpbmUpIG9yIHlvdSBoYXZlIHRoZSBQb2t5IGNvbnRhaW5lciBzZXQgdXAKKyAgICAgICAgICAgICAgICAoQ1JPUFMpLCB5b3UgbmVlZCB0byBnZXQgYSBjb3B5IG9mIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGdldCB0aGUgbGF0ZXN0IFlvY3RvIFByb2plY3QgcmVsZWFzZQogICAgICAgICAgICAgICAgIGJ5IHNldHRpbmcgdXAgKGNsb25pbmcgaW4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNnaXQnPkdpdDwvdWxpbms+IHRlcm1zKSBhCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB0ZXJtcykgYQogICAgICAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgb24KICAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QgYW5kIHRoZW4gY2hlY2tpbmcgb3V0IHRoZSBsYXRlc3QgcmVsZWFzZS4KICAgICAgICAgICAgICAgICBEb2luZyBzbyBhbGxvd3MgeW91IHRvIGVhc2lseSB1cGRhdGUgdG8gbmV3ZXIgWW9jdG8gUHJvamVjdApAQCAtMzc3LDkgKzQxNCwxNSBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSBhbiBVYnVudHUgYnVpbGQgaG9zdCB0aGF0IGNsb25lcyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgYW5kIHRoZW4gY2hlY2tzIG91dCB0aGUKLSAgICAgICAgICAgICAgICBsYXRlc3QgWW9jdG8gUHJvamVjdCBSZWxlYXNlIChpLmUuICZESVNUUk87KToKKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIHRoYXQgaXMKKyAgICAgICAgICAgICAgICBydW5uaW5nIFVidW50dS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGlzIHVzaW5nIGEgUG9reSBjb250YWluZXIsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSBzYW1lIEdpdCBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNsb25lcyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIHRoZW4gY2hlY2tzIG91dCB0aGUgbGF0ZXN0IFlvY3RvIFByb2plY3QgUmVsZWFzZQorICAgICAgICAgICAgICAgIGJ5IHRhZyAoaS5lLiA8ZmlsZW5hbWU+JkRJU1RST19SRUxfVEFHOzwvZmlsZW5hbWU+KToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKICAgICAgQ2xvbmluZyBpbnRvICdwb2t5Jy4uLgpAQCAtMzg5LDE4ICs0MzIsMzUgQEAKICAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDM2MTc4Mi8zNjE3ODIpLCAxMzEuOTQgTWlCIHwgNi44OCBNaUIvcywgZG9uZS4KICAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMjY4NjE5LzI2ODYxOSksIGRvbmUuCiAgICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgotICAgICAkIGdpdCBjaGVja291dCAmRElTVFJPX05BTUVfTk9fQ0FQOworICAgICAkIGdpdCBjaGVja291dCB0YWdzLyZESVNUUk9fUkVMX1RBRzsgLWIgcG9reV8mRElTVFJPOwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZ2V0IHRoZSBZb2N0byBQcm9qZWN0IEZpbGVzIGJ5IGRvd25sb2FkaW5nCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlcyBmcm9tIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9IiZZT0NUT19IT01FX1VSTDsiPllvY3RvIFByb2plY3Qgd2Vic2l0ZTwvdWxpbms+LgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBnZXR0aW5nIHNldCB1cCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgcmVsZWFzZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhbC15cC1yZWxlYXNlJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBpdGVtIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgR2l0IDxmaWxlbmFtZT5jaGVja291dDwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICBjcmVhdGVzIGEgbG9jYWwgYnJhbmNoIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3lfJkRJU1RSTzs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgZmlsZXMgYXZhaWxhYmxlIHRvIHlvdSBpbiB0aGF0IGJyYW5jaCBleGFjdGx5IG1hdGNoIHRoZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkncyBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JkRJU1RST19OQU1FX05PX0NBUDs8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGJyYW5jaCBhdCB0aGUgdGltZSBvZiB0aGUgWW9jdG8gUHJvamVjdCAmRElTVFJPOworICAgICAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFJhdGhlciB0aGFuIGNoZWNraW5nIG91dCB0aGUgZW50aXJlIGRldmVsb3BtZW50IGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBvZiBhIHJlbGVhc2UgKGkuZS4gdGhlIHRpcCksIHdoaWNoIGNvdWxkIGJlIGNvbnRpbnVvdXNseQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2luZyB3aGlsZSB5b3UgYXJlIGRvaW5nIHlvdXIgZGV2ZWxvcG1lbnQsIHlvdSB3b3VsZAorICAgICAgICAgICAgICAgICAgICBjaGVjayBvdXQgYSBicmFuY2ggYmFzZWQgb24gYSByZWxlYXNlIHRhZyBhcyBzaG93biBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgcHJldmlvdXMgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gcHJvdmlkZXMgeW91IHdpdGggYW4gdW5jaGFuZ2luZywgc3RhYmxlIHNldCBvZgorICAgICAgICAgICAgICAgICAgICBmaWxlcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBtb3JlIG9wdGlvbnMgYW5kIGluZm9ybWF0aW9uIGFib3V0IGFjY2Vzc2luZyBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QgcmVsYXRlZCByZXBvc2l0b3JpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd29ya2luZy13aXRoLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Xb3JraW5nIFdpdGggWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KQEAgLTQwOSwyMCArNDY5LDIyIEBACiAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBJbWFnZXM8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgTm93IHRoYXQgeW91IGhhdmUgeW91ciBzeXN0ZW0gcmVxdWlyZW1lbnRzIGluIG9yZGVyLCB5b3UgY2FuIGdpdmUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYSB0cnkuCi0gICAgICAgICAgICBZb3UgY2FuIHRyeSBvdXQgWW9jdG8gUHJvamVjdCB1c2luZyBlaXRoZXIgdGhlIGNvbW1hbmQtbGluZQotICAgICAgICAgICAgaW50ZXJmYWNlIG9yIHVzaW5nIFRvYXN0ZXIsIHdoaWNoIHVzZXMgYSBncmFwaGljYWwgdXNlcgotICAgICAgICAgICAgaW50ZXJmYWNlLgotICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gdHJ5IG91dCB0aGUgWW9jdG8gUHJvamVjdCB1c2luZyBhIEdVSSwgc2VlIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+Ci0gICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGluc3RhbGwgYW5kIHNldCB1cCBUb2FzdGVyLgorICAgICAgICAgICAgWW91IGFyZSBub3cgcmVhZHkgdG8gZ2l2ZSB0aGUgWW9jdG8gUHJvamVjdCBhIHRyeS4KKyAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHlvdSB3aWxsIGJlIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgdG8gYnVpbGQKKyAgICAgICAgICAgIHlvdXIgaW1hZ2VzLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QgaXMgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgdGhyb3VnaAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3RvYXN0ZXItdGVybSc+VG9hc3RlcjwvdWxpbms+LgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRocm91Z2ggdGhlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UsCi0gICAgICAgICAgICBmaW5pc2ggdGhpcyBxdWljayBzdGFydCwgd2hpY2ggcHJlc2VudHMgc3RlcHMgdGhhdCBsZXQgeW91Ci0gICAgICAgICAgICBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHF1aWNrIHN0YXJ0IHN0ZXBzIHlvdSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIGEgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiByZWZlcmVuY2UgaW1hZ2UKQEAgLTQzMyw3ICs0OTUsNyBAQAogICAgICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzZWNvbmQgaW1hZ2UgdGhhdCB5b3UgY2FuIGxvYWQgb250byBib290YWJsZQogICAgICAgICAgICAgICAgICAgICBtZWRpYSBhbmQgYWN0dWFsbHkgYm9vdCB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSB1c2VzIHRoZSBNaW5ub3dCb2FyZAotICAgICAgICAgICAgICAgICAgICBNQVgtY29tcGF0aWJsZSBib2FyZHMuCisgICAgICAgICAgICAgICAgICAgIFR1cmJvdC1jb21wYXRpYmxlIGJvYXJkcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgIDxub3RlPgpAQCAtNDUyLDM3ICs1MTQsMzkgQEAKICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBidWlsZCB5b3VyIGltYWdlLgogICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgYW4gZW50aXJlIExpbnV4CiAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uLCBpbmNsdWRpbmcgdGhlIHRvb2xjaGFpbiwgZnJvbSBzb3VyY2UuCi0gICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGUgYWJvdXQgTmV0d29yayBQcm94aWVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgcHJvY2VzcyBzZWFyY2hlcyBmb3Igc291cmNlIGNvZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIGEgcHJlLWRldGVybWluZWQgb3JkZXIgdGhyb3VnaCBhIHNldCBvZgotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB3b3JraW5nIGJlaGluZCBhIGZpcmV3YWxsIGFuZCB5b3VyIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICBob3N0IGlzIG5vdCBzZXQgdXAgZm9yIHByb3hpZXMsIHlvdSBjb3VsZCBlbmNvdW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2JsZW1zIHdpdGggdGhlIGJ1aWxkIHByb2Nlc3Mgd2hlbiBmZXRjaGluZyBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgKGUuZy4gZmV0Y2hlciBmYWlsdXJlcyBvciBHaXQgZmFpbHVyZXMpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGtub3cgeW91ciBwcm94eSBzZXR0aW5ncywgY29uc3VsdCB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIHJlc291cmNlcyBhbmQgZ2V0IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIHN0YXJ0aW5nIHBvaW50IGNvdWxkIGFsc28gYmUgdG8gY2hlY2sgeW91ciB3ZWIKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIgc2V0dGluZ3MuCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5hbGx5LCB5b3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYmVoaW5kIGEgZmlyZXdhbGwgaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBNYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hvdy1kb2VzLXRoZS15b2N0by1wcm9qZWN0LW9idGFpbi1zb3VyY2UtY29kZS1hbmQtd2lsbC1pdC13b3JrLWJlaGluZC1teS1maXJld2FsbC1vci1wcm94eS1zZXJ2ZXInPkZBUTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9Xb3JraW5nX0JlaGluZF9hX05ldHdvcmtfUHJveHknPldvcmtpbmcgQmVoaW5kIGEgTmV0d29yayBQcm94eTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzIGFib3V0IE5ldHdvcmsgUHJveGllczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGJ1aWxkIHByb2Nlc3Mgc2VhcmNoZXMgZm9yIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgdXNpbmcgYSBwcmUtZGV0ZXJtaW5lZCBvcmRlciB0aHJvdWdoIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgd29ya2luZyBiZWhpbmQgYSBmaXJld2FsbCBhbmQgeW91ciBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgaXMgbm90IHNldCB1cCBmb3IgcHJveGllcywgeW91IGNvdWxkIGVuY291bnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2JsZW1zIHdpdGggdGhlIGJ1aWxkIHByb2Nlc3Mgd2hlbiBmZXRjaGluZyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIChlLmcuIGZldGNoZXIgZmFpbHVyZXMgb3IgR2l0IGZhaWx1cmVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGtub3cgeW91ciBwcm94eSBzZXR0aW5ncywgY29uc3VsdCB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSByZXNvdXJjZXMgYW5kIGdldCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIHN0YXJ0aW5nIHBvaW50IGNvdWxkIGFsc28gYmUgdG8gY2hlY2sgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYiBicm93c2VyIHNldHRpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksIHlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYmVoaW5kIGEgZmlyZXdhbGwgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2UgTWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaG93LWRvZXMtdGhlLXlvY3RvLXByb2plY3Qtb2J0YWluLXNvdXJjZS1jb2RlLWFuZC13aWxsLWl0LXdvcmstYmVoaW5kLW15LWZpcmV3YWxsLW9yLXByb3h5LXNlcnZlcic+RkFRPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvV29ya2luZ19CZWhpbmRfYV9OZXR3b3JrX1Byb3h5Jz5Xb3JraW5nIEJlaGluZCBhIE5ldHdvcmsgUHJveHk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJlIFN1cmUgWW91ciBCdWlsZCBIb3N0IGlzIFNldCBVcDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QmUgU3VyZSBZb3VyIEJ1aWxkIEhvc3QgaXMgU2V0IFVwOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3RlcHMgdG8gYnVpbGQgYW4gaW1hZ2UgaW4gdGhpcyBzZWN0aW9uIGRlcGVuZCBvbgogICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBidWlsZCBob3N0IGJlaW5nIHByb3Blcmx5IHNldCB1cC4KICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGhhdmUgd29ya2VkIHRocm91Z2ggdGhlIHJlcXVpcmVtZW50cwpAQCAtNDkwLDkgKzU1NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3lwLXJlc291cmNlcyc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNoZWNrIE91dCBZb3VyIEJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgT3V0IFlvdXIgQnJhbmNoOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgYW5kIHRoZW4gY2hlY2sgb3V0CiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnJhbmNoIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGF0ZXN0IFlvY3RvIFByb2plY3QKICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2U6CkBAIC01MTAsNyArNTc1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBlbnN1cmVzIHlvdSBhcmUgdXNpbmcgdGhlIGxhdGVzdCBmaWxlcyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcmVsZWFzZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgdG8gZGVmaW5lIHRoZSBPcGVuRW1iZWRkZWQKQEAgLTUxOSwyMyArNTg1LDE3IEBACiAgICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBzY3JpcHQgY3JlYXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gaW4gdGhpcyBjYXNlCiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHRoZSBzY3JpcHQgcnVucywgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gdGhlIEJ1aWxkIERpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgICAgIExhdGVyLCB3aGVuIHRoZSBidWlsZCBjb21wbGV0ZXMsIHRoZSBCdWlsZCBEaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGFsbCB0aGUgZmlsZXMgY3JlYXRlZCBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHJ1bm5pbmcgYSBtZW1vcnktcmVzaWRlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN1c2luZ3Bva3ktY29tcG9uZW50cy1iaXRiYWtlJz5CaXRCYWtlPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1tZW1yZXMtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudi1tZW1yZXM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXhhbWluZSBZb3VyIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhhbWluZSBZb3VyIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3Ugc2V0IHVwIHRoZSBidWlsZCBlbnZpcm9ubWVudCwgYSBsb2NhbAogICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGJlY29tZXMgYXZhaWxhYmxlIGluCkBAIC01ODksNyArNjQ5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlN0YXJ0IHRoZSBCdWlsZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhcnQgdGhlIEJ1aWxkOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBDb250aW51ZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBidWlsZCBhbiBPUyBpbWFnZQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXJnZXQsIHdoaWNoIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW4gdGhpcyBleGFtcGxlOgpAQCAtNjQ3LDcgKzcwOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TaW11bGF0ZSBZb3VyIEltYWdlIFVzaW5nIFFFTVU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNpbXVsYXRlIFlvdXIgSW1hZ2UgVXNpbmcgUUVNVTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGlzIHBhcnRpY3VsYXIgaW1hZ2UgaXMgYnVpbHQsIHlvdSBjYW4gc3RhcnQgUUVNVQogICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJ1biB0aGUgaW1hZ2U6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC02NTUsOSArNzE3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBsZWFybiBtb3JlIGFib3V0IHJ1bm5pbmcgUUVNVSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9IiZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSI+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkV4aXQgUUVNVTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhpdCBRRU1VOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBFeGl0IFFFTVUgYnkgZWl0aGVyIGNsaWNraW5nIG9uIHRoZSBzaHV0ZG93biBpY29uIG9yIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcgPGZpbGVuYW1lPkN0cmwtQzwvZmlsZW5hbWU+IGluIHRoZSBRRU1VCiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2NyaXB0IHdpbmRvdyBmcm9tIHdoaWNoIHlvdSBldm9rZWQgUUVNVS4KQEAgLTY3MiwxMyArNzM1LDEzIEBACiAgICAgICAgICAgICA8cGFyYSBpZD0ncXMtbWlubm93Ym9hcmQtZXhhbXBsZSc+CiAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBzaG93IGhvdyBlYXN5IGl0IGlzIHRvIHNldCB1cCB0byBidWlsZCBhbgogICAgICAgICAgICAgICAgIGltYWdlIGZvciBhIG5ldyBtYWNoaW5lLgotICAgICAgICAgICAgICAgIFRoZXNlIHN0ZXBzIGJ1aWxkIGFuIGltYWdlIGZvciB0aGUgTWlubm93Qm9hcmQgTUFYLCB3aGljaCBpcworICAgICAgICAgICAgICAgIFRoZXNlIHN0ZXBzIGJ1aWxkIGFuIGltYWdlIGZvciB0aGUgTWlubm93Qm9hcmQgVHVyYm90LCB3aGljaCBpcwogICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBhbmQgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiA8ZmlsZW5hbWU+aW50ZWwtY29yZWk3LTY0PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmludGVsLWNvcmUyLTMyPC9maWxlbmFtZT4gQm9hcmQgU3VwcG9ydCBQYWNrYWdlcwogICAgICAgICAgICAgICAgIChCU1BzKS4KICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIE1pbm5vd0JvYXJkIE1BWCBzaGlwcyB3aXRoIDY0LWJpdCBmaXJtd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE1pbm5vd0JvYXJkIFR1cmJvdCBzaGlwcyB3aXRoIDY0LWJpdCBmaXJtd2FyZS4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBib2FyZCBpbiAzMi1iaXQgbW9kZSwgeW91IG11c3QKICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9maXJtd2FyZS5pbnRlbC5jb20vcHJvamVjdHMvbWlubm93Ym9hcmQtbWF4Jz4zMi1iaXQgZmlybXdhcmU8L3VsaW5rPi4KQEAgLTY4NywxMyArNzUwLDE1IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgYSBMb2NhbCBDb3B5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgTG9jYWwgQ29weSBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGRpbmcgYW4gaW1hZ2UgZm9yIHRoZSBNaW5ub3dCb2FyZCBNQVggcmVxdWlyZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyBhbiBpbWFnZSBmb3IgdGhlIE1pbm5vd0JvYXJkIFR1cmJvdCByZXF1aXJlcworICAgICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLgogICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+Z2l0IGNsb25lPC9maWxlbmFtZT4gY29tbWFuZCB0byBjcmVhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIGEgbG9jYWwgY29weSBvZiB0aGUgcmVwb3NpdG9yeSBpbnNpZGUgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBpbiB0aGlzIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgY2QgJEhPTUUvcG9reQpAQCAtNzEzLDE3ICs3NzgsMzAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgdGhhdCBib3RoIHJlcG9zaXRvcmllcwogICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSBhcmUgdXNpbmcgdGhlIHNhbWUgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHlvdSB1c2VkIHRoZSA8ZmlsZW5hbWU+JkRJU1RST19SRUxfVEFHOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB0YWcgd2hlbiB5b3UgY2hlY2tlZCBvdXQgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYnkgdGFnLCB5b3Ugc2hvdWxkIHVzZSBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB0YWcgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHRoZSByZWxlYXNlIHlvdSB1c2VkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG5lZWQgdG8gY2hlY2tvdXQgb3V0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOzwvZmlsZW5hbWU+IiByZWxlYXNlIGFmdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uaW5nIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiZNRVRBSU5URUxWRVJTSU9OOy0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047PC9maWxlbmFtZT4iCisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2ggYWZ0ZXIgY2xvbmluZyA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGNkICRIT01FL3Bva3kvbWV0YS1pbnRlbAotICAgICAkIGdpdCBjaGVja291dCAmRElTVFJPX05BTUVfTk9fQ0FQOwotICAgICBCcmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgZnJvbSBvcmlnaW4uCi0gICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJkRJU1RST19OQU1FX05PX0NBUDsnCisgICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MvJk1FVEFJTlRFTFZFUlNJT047LSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsgLWIgbWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047CisgICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnbWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047JwogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIEdpdCA8ZmlsZW5hbWU+Y2hlY2tvdXQ8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgbG9jYWwgYnJhbmNoIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSB0aGUgb3B0aW9uIHRvIG5hbWUgeW91ciBsb2NhbCBicmFuY2ggd2hhdGV2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IGJ5IHByb3ZpZGluZyBhbnkgbmFtZSB5b3UgbGlrZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhLWludGVsLSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsiCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYWJvdmUgZXhhbXBsZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNvbmZpZ3VyZSB0aGUgQnVpbGQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyZSB0aGUgQnVpbGQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFRvIGNvbmZpZ3VyZSB0aGUgYnVpbGQsIHlvdSBlZGl0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZXMsIGJvdGggb2Ygd2hpY2ggYXJlCkBAIC03NjAsMTMgKzgzOCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgYW4gSW1hZ2UgZm9yIE1pbm5vd0JvYXJkIE1BWDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgYW4gSW1hZ2UgZm9yIE1pbm5vd0JvYXJkCisgICAgICAgICAgICAgICAgICAgICAgICBUdXJib3Q6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0eXBlIG9mIGltYWdlIHlvdSBidWlsZCBkZXBlbmRzIG9uIHlvdXIgZ29hbHMuCiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHByZXZpb3VzIGJ1aWxkIGNyZWF0ZWQgYQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlLCB3aGljaCBpcyBhbgogICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Ugd2l0aCBTYXRvIHN1cHBvcnQuCiAgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBidWlsZCBtYW55IGltYWdlIHR5cGVzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIE1pbm5vd0JvYXJkIE1BWC4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbm5vd0JvYXJkIFR1cmJvdC4KICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcG9zc2liaWxpdGllcyBhcmUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtYmFzZTwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBjb25zb2xlLW9ubHkgaW1hZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgICBBbm90aGVyIGNob2ljZSBjb3VsZCBiZSBhCkBAIC04MjYsNyArOTA2LDggQEAKICAgICAgdG1wL2RlcGxveS9pbWFnZXMvaW50ZWwtY29yZWk3LTY0L2NvcmUtaW1hZ2UtYmFzZS1pbnRlbC1jb3JlaTctNjQud2ljCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Xcml0ZSB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPldyaXRlIHRoZSBJbWFnZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB3cml0ZSB0aGUgaW1hZ2UganVzdCBidWlsdCB0byBhIGJvb3RhYmxlIG1lZGlhCiAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhIFVTQiBrZXksIFNBVEEgZHJpdmUsIFNEIGNhcmQsIGV0Yy4pIHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRkPC9maWxlbmFtZT4gdXRpbGl0eToKQEAgLTg0MCw5ICs5MjEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L21tY2JsazA8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgbW9zdCBsaWtlbHkgYW4KICAgICAgICAgICAgICAgICAgICAgICAgIFNEIGNhcmQpLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Qm9vdCB0aGUgSGFyZHdhcmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJvb3QgdGhlIEhhcmR3YXJlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHRoZSBib290IGRldmljZSBwcm92aXNpb25lZCwgeW91IGNhbiBpbnNlcnQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYSBpbnRvIHRoZSBNaW5ub3dCb2FyZCBNQVggYW5kIGJvb3QgdGhlIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWEgaW50byB0aGUgTWlubm93Qm9hcmQgVHVyYm90IGFuZCBib290IHRoZSBoYXJkd2FyZS4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBib2FyZCBzaG91bGQgYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIG1lZGlhIGFuZCBib290IHRvCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYm9vdGxvYWRlciBhbmQgc3Vic2VxdWVudGx5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtODgwLDY2ICs5NjIsNzYgQEAKICAgICAgICAgICAgIERlcGVuZGluZyBvbiB3aGF0IHlvdSBwcmltYXJ5IGludGVyZXN0cyBhcmUgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwKICAgICAgICAgICAgIHlvdSBjb3VsZCBjb25zaWRlciBhbnkgb2YgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5WaXNpdCB0aGUgWW9jdG8gUHJvamVjdCBXZWIgU2l0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlZpc2l0IHRoZSBZb2N0byBQcm9qZWN0IFdlYiBTaXRlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFRoZSBvZmZpY2lhbAogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgd2ViIHNpdGUgY29udGFpbnMgaW5mb3JtYXRpb24gb24gdGhlIGVudGlyZSBwcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICBWaXNpdGluZyB0aGlzIHNpdGUgaXMgYSBnb29kIHdheSB0byBmYW1pbGlhcml6ZSB5b3Vyc2VsZgogICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBvdmVyYWxsIHByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TG9vayBUaHJvdWdoIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1pbnRybyc+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBpcyBhIGdyZWF0IHBsYWNlIHRvIGdldCBhIGZlZWwgZm9yIGhvdyB0byB1c2UgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBtYW51YWwgY29udGFpbnMgY29uY2VwdHVhbCBhbmQgcHJvY2VkdXJhbCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICB0aGF0IGNvdmVycwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLW1vZGVsJz5jb21tb24gZGV2ZWxvcG1lbnQgbW9kZWxzPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kIGludHJvZHVjZXMKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1uZXdiaWUnPnRoZSBZb2N0byBQcm9qZWN0IG9wZW4gc291cmNlIGRldmVsb3BtZW50IGVudmlyb25tZW50PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIFRoZSBtYW51YWwgYWxzbyBjb250YWlucyBzZXZlcmFsIHRhcmdldGVkIHNlY3Rpb25zIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgY292ZXIgc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZXh0ZW5kcG9reSc+Y29tbW9uIHRhc2tzPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyB1bmRlcnN0YW5kaW5nIGFuZCBjcmVhdGluZyBsYXllcnMsIGN1c3RvbWl6aW5nCi0gICAgICAgICAgICAgICAgICAgIGltYWdlcywgd3JpdGluZyBuZXcgcmVjaXBlcywgd29ya2luZyB3aXRoIGxpYnJhcmllcywgYW5kCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyaW5nIGFuZCBwYXRjaGluZyB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvb2sgVGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1pbnRybyc+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L3VsaW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBjb250YWlucyBwcm9jZWR1cmFsIGluZm9ybWF0aW9uIGdyb3VwZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgaGVscCB5b3UgZ2V0IHNldCB1cCwgd29yayB3aXRoIGxheWVycywgY3VzdG9taXplIGltYWdlcywKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUgbmV3IHJlY2lwZXMsIHdvcmsgd2l0aCBsaWJyYXJpZXMsIGFuZCB1c2UgUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIGlzIHRhc2stYmFzZWQgYW5kIHNwYW5zIHRoZSBicmVhZHRoIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxvb2sgVGhyb3VnaCB0aGUgWW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1pbnRybyc+WW9jdG8gUHJvamVjdCBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSBib3RoIHRoZQorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvb2sgVGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgZGVzY3JpYmVzIGhvdyB0byB1c2UgYm90aCB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLXVzaW5nLXRoZS1zdGFuZGFyZC1zZGsnPnN0YW5kYXJkIFNESzwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWV4dGVuc2libGUnPmV4dGVuc2libGUgU0RLPC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSB1c2VkIHByaW1hcmlseSBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGFsc28gcHJvdmlkZXMgYW4gZXhhbXBsZSB3b3JrZmxvdyB0aGF0IHVzZXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIHBvcHVsYXIgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KLSAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGFsc28gcHJvdmlkZXMgZXhhbXBsZSB3b3JrZmxvd3MKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB1c2UgdGhlIHBvcHVsYXIgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIHRoYXQgdXNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3dvcmtmbG93LXVzaW5nLWVjbGlwc2UnPldvcmtmbG93IHVzaW5nIEVjbGlwc2XihKI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIHlvdXIgU0RLIFdvcmtmbG93PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxlYXJuIEFib3V0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGVhcm4gQWJvdXQgS2VybmVsIERldmVsb3BtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHNlZSBob3cgdG8gd29yayB3aXRoIHRoZSBrZXJuZWwgYW5kCisgICAgICAgICAgICAgICAgICAgIHVuZGVyc3RhbmQgWW9jdG8gTGludXgga2VybmVscywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsja2VybmVsLWRldi1pbnRybyc+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byBwYXRjaCB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsLCBtb2RpZnkga2VybmVsIHJlY2lwZXMsIGFuZCBjb25maWd1cmUgdGhlIGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGVhcm4gQWJvdXQgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcyk6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gbGVhcm4gYWJvdXQgQlNQcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBhbHNvIHByb3ZpZGVzIGFuIGV4YW1wbGUgQlNQIGNyZWF0aW9uIHdvcmtmbG93LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz4iRGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxlYXJuIEFib3V0IFRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MZWFybiBBYm91dCBUb2FzdGVyOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MKICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHVzaW5nIHRoaXMgdHlwZSBvZiBpbnRlcmZhY2UgdG8KICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIGltYWdlcywgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLWludHJvJz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SGF2ZSBBdmFpbGFibGUgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtbWFudWFsLWludHJvJz5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgdW5saWtlIHRoZSByZXN0IG9mIHRoZSBZb2N0byBQcm9qZWN0IG1hbnVhbCBzZXQsIGlzCi0gICAgICAgICAgICAgICAgICAgIGNvbXByaXNlZCBvZiBtYXRlcmlhbCBzdWl0ZWQgZm9yIHJlZmVyZW5jZSByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkhhdmUgQXZhaWxhYmxlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtbWFudWFsLWludHJvJz5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw6PC91bGluaz48L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBVbmxpa2UgdGhlIHJlc3Qgb2YgdGhlIFlvY3RvIFByb2plY3QgbWFudWFsIHNldCwgdGhpcyBtYW51YWwKKyAgICAgICAgICAgICAgICAgICAgaXMgY29tcHJpc2VkIG9mIG1hdGVyaWFsIHN1aXRlZCBmb3IgcmVmZXJlbmNlIHJhdGhlciB0aGFuCiAgICAgICAgICAgICAgICAgICAgIHByb2NlZHVyZXMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0CiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3VzaW5ncG9reSc+YnVpbGQgZGV0YWlsczwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICBhCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2Nsb3Nlci1sb29rJz5jbG9zZXIgbG9vazwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldmVsb3BtZW50LWNvbmNlcHRzJz5jbG9zZXIgbG9vazwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGF0IGhvdyB0aGUgcGllY2VzIG9mIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHdvcmsgdG9nZXRoZXIsIGluZm9ybWF0aW9uIG9uIHZhcmlvdXMKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdGVjaG5pY2FsLWRldGFpbHMnPnRlY2huaWNhbCBkZXRhaWxzPC91bGluaz4sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L1JFQURNRS5wb2t5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9SRUFETUUucG9reQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTQyODQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9SRUFETUUucG9reQpAQCAtMCwwICsxLDU4IEBACitQb2t5Cis9PT09CisKK1Bva3kgaXMgYW4gaW50ZWdyYXRpb24gb2YgdmFyaW91cyBjb21wb25lbnRzIHRvIGZvcm0gYSBjb21wbGV0ZSBwcmVwYWNrYWdlZAorYnVpbGQgc3lzdGVtIGFuZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gSXQgZmVhdHVyZXMgc3VwcG9ydCBmb3IgYnVpbGRpbmcKK2N1c3RvbWlzZWQgZW1iZWRkZWQgZGV2aWNlIHN0eWxlIGltYWdlcy4gVGhlcmUgYXJlIHJlZmVyZW5jZSBkZW1vIGltYWdlcworZmVhdHVyaW5nIGEgWDExL01hdGNoYm94L0dUSyB0aGVtZWQgVUkgY2FsbGVkIFNhdG8uIFRoZSBzeXN0ZW0gc3VwcG9ydHMKK2Nyb3NzLWFyY2hpdGVjdHVyZSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCB1c2luZyBRRU1VIGVtdWxhdGlvbiBhbmQgYQorc3RhbmRhbG9uZSB0b29sY2hhaW4gYW5kIFNESyB3aXRoIElERSBpbnRlZ3JhdGlvbi4KKworQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgc3BlY2lmaWNzIG9mIGhhcmR3YXJlIHRoYXQgUG9reSBzdXBwb3J0cworaXMgYXZhaWxhYmxlIGluIFJFQURNRS5oYXJkd2FyZS4gRnVydGhlciBoYXJkd2FyZSBzdXBwb3J0IGNhbiBlYXNpbHkgYmUgYWRkZWQKK2luIHRoZSBmb3JtIG9mIGxheWVycyB3aGljaCBleHRlbmQgdGhlIHN5c3RlbXMgY2FwYWJpbGl0aWVzIGluIGEgbW9kdWxhciB3YXkuCisKK0FzIGFuIGludGVncmF0aW9uIGxheWVyIFBva3kgY29uc2lzdHMgb2Ygc2V2ZXJhbCB1cHN0cmVhbSBwcm9qZWN0cyBzdWNoIGFzIAorQml0QmFrZSwgT3BlbkVtYmVkZGVkLUNvcmUsIFlvY3RvIGRvY3VtZW50YXRpb24gYW5kIHZhcmlvdXMgc291cmNlcyBvZiBpbmZvcm1hdGlvbiAKK2UuZy4gZm9yIHRoZSBoYXJkd2FyZSBzdXBwb3J0LiBQb2t5IGlzIGluIHR1cm4gYSBjb21wb25lbnQgb2YgdGhlIFlvY3RvIFByb2plY3QuCisKK1RoZSBZb2N0byBQcm9qZWN0IGhhcyBleHRlbnNpdmUgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgc3lzdGVtIGluY2x1ZGluZyBhIAorcmVmZXJlbmNlIG1hbnVhbCB3aGljaCBjYW4gYmUgZm91bmQgYXQ6CisgICAgaHR0cDovL3lvY3RvcHJvamVjdC5vcmcvZG9jdW1lbnRhdGlvbgorCitPcGVuRW1iZWRkZWQtQ29yZSBpcyBhIGxheWVyIGNvbnRhaW5pbmcgdGhlIGNvcmUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdmVyc2lvbnMKK29mIE9wZW5FbWJlZGRlZC4gSXQgaXMgZGlzdHJvLWxlc3MgKGNhbiBidWlsZCBhIGZ1bmN0aW9uYWwgaW1hZ2Ugd2l0aAorRElTVFJPID0gIm5vZGlzdHJvIikgYW5kIGNvbnRhaW5zIG9ubHkgZW11bGF0ZWQgbWFjaGluZSBzdXBwb3J0LgorCitGb3IgaW5mb3JtYXRpb24gYWJvdXQgT3BlbkVtYmVkZGVkLCBzZWUgdGhlIE9wZW5FbWJlZGRlZCB3ZWJzaXRlOgorICAgIGh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy8KKworV2hlcmUgdG8gU2VuZCBQYXRjaGVzCis9PT09PT09PT09PT09PT09PT09PT0KKworQXMgUG9reSBpcyBhbiBpbnRlZ3JhdGlvbiByZXBvc2l0b3J5IChidWlsdCB1c2luZyBhIHRvb2wgY2FsbGVkIGNvbWJvLWxheWVyKSwKK3BhdGNoZXMgYWdhaW5zdCB0aGUgdmFyaW91cyBjb21wb25lbnRzIHNob3VsZCBiZSBzZW50IHRvIHRoZWlyIHJlc3BlY3RpdmUKK3Vwc3RyZWFtczoKKworYml0YmFrZToKKyAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UvCisgICAgTWFpbGluZyBsaXN0OiBiaXRiYWtlLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKKworZG9jdW1lbnRhdGlvbjoKKyAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kveW9jdG8tZG9jcy8KKyAgICBNYWlsaW5nIGxpc3Q6IHlvY3RvQHlvY3RvcHJvamVjdC5vcmcKKworbWV0YS1wb2t5LCBtZXRhLXlvY3RvLWJzcDoKKyAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbWV0YS15b2N0bygtYnNwKQorICAgIE1haWxpbmcgbGlzdDogcG9reUB5b2N0b3Byb2plY3Qub3JnCisKK0V2ZXJ5dGhpbmcgZWxzZSBzaG91bGQgYmUgc2VudCB0byB0aGUgT3BlbkVtYmVkZGVkIENvcmUgbWFpbGluZyBsaXN0LiAgSWYgaW4KK2RvdWJ0LCBjaGVjayB0aGUgb2UtY29yZSBnaXQgcmVwb3NpdG9yeSBmb3IgdGhlIGNvbnRlbnQgeW91IGludGVuZCB0byBtb2RpZnkuCitCZWZvcmUgc2VuZGluZywgYmUgc3VyZSB0aGUgcGF0Y2hlcyBhcHBseSBjbGVhbmx5IHRvIHRoZSBjdXJyZW50IG9lLWNvcmUgZ2l0CityZXBvc2l0b3J5LgorCisgICAgR2l0IHJlcG9zaXRvcnk6IGh0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS8KKyAgICBNYWlsaW5nIGxpc3Q6IG9wZW5lbWJlZGRlZC1jb3JlQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKKworTm90ZTogVGhlIHNjcmlwdHMgZGlyZWN0b3J5IHNob3VsZCBiZSB0cmVhdGVkIHdpdGggZXh0cmEgY2FyZSBhcyBpdCBpcyBhIG1peCBvZgorb2UtY29yZSBhbmQgcG9reS1zcGVjaWZpYyBmaWxlcyBmcm9tIG1ldGEtcG9reS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9jb25mLW5vdGVzLnR4dCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9jb25mLW5vdGVzLnR4dAppbmRleCAyZjI5MzJiLi5mMWE0ZjRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvY29uZi1ub3Rlcy50eHQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2NvbmYtbm90ZXMudHh0CkBAIC0xLDMgKzEsOCBAQAorCisjIyMgU2hlbGwgZW52aXJvbm1lbnQgc2V0IHVwIGZvciBidWlsZHMuICMjIworCitZb3UgY2FuIG5vdyBydW4gJ2JpdGJha2UgPHRhcmdldD4nCisKIENvbW1vbiB0YXJnZXRzIGFyZToKICAgICBjb3JlLWltYWdlLW1pbmltYWwKICAgICBjb3JlLWltYWdlLXNhdG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjFjOGYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw4NDAgKzAsMCBAQAotIyBZb2N0byBQcm9qZWN0IC8gT3BlbkVtYmVkZGVkLUNvcmUgKE9FLUNvcmUpIE1haW50YWluZXJzIEZpbGUKLSMKLSMgVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiByZWNpcGUgbWFpbnRhaW5lcnMuCi0jCi0jIFBsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCByZWNpcGVzIGluIG1ldGEgdG8gdGhlIAotIyBPRS1Db3JlIG1haWwgbGlzdCAob3BlbmVtYmVkZGVkLWNvcmVAbGlzdHMub3BlbmVtYmVkZGVkLm9yZykKLSMgRm9yIHJlY2lwZXMgaW4gbWV0YS15b2N0byBwbGVhc2UgdXNlIHRoZSBQb2t5IGxpc3QgKHBva3lAeW9jdG9wcm9qZWN0Lm9yZykKLSMKLSMgSWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCBvciBxdWVzdGlvbnMgYWJvdXQgYSBwYXJ0aWN1bGFyIHJlY2lwZSwgZmVlbAotIyBmcmVlIHRvIGNvbnRhY3QgdGhlIG1haW50YWluZXIgZGlyZWN0bHkgKGNjOmluZyB0aGUgYXBwcm9wcmlhdGUgbWFpbGluZyBsaXN0Ci0jIHB1dHMgaXQgaW4gdGhlIGFyY2hpdmUgYW5kIGhlbHBzIG90aGVyIHBlb3BsZSB3aG8gbWlnaHQgaGF2ZSB0aGUgc2FtZQotIyBxdWVzdGlvbnMgaW4gdGhlIGZ1dHVyZSksIGJ1dCBwbGVhc2UgdHJ5IHRvIGRvIHRoZSBmb2xsb3dpbmcgZmlyc3Q6Ci0jCi0jICAtIGxvb2sgaW4gdGhlIFlvY3RvIFByb2plY3QgQnVnemlsbGEKLSMgICAgKGh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLykgdG8gc2VlIGlmIGEgcHJvYmxlbSBoYXMKLSMgICAgYWxyZWFkeSBiZWVuIHJlcG9ydGVkCi0jCi0jIC0gbG9vayB0aHJvdWdoIHJlY2VudCBlbnRyaWVzIG9mIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nIGxpc3QgYXJjaGl2ZXMKLSMgICAoaHR0cDovL2xpc3RzLmxpbnV4dG9nby5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlIG9yCi0jICAgIGh0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9waXBlcm1haWwvcG9reS8pIHRvIHNlZSBpZiBvdGhlcgotIyAgIHBlb3BsZSBoYXZlIHJ1biBpbnRvIHNpbWlsYXIgcHJvYmxlbXMgb3IgaGFkIHNpbWlsYXIgcXVlc3Rpb25zCi0jICAgYW5zd2VyZWQuCi0jCi0jIFRoZSBmb3JtYXQgaXMgYXMgYSBiaXRiYWtlIHZhcmlhYmxlIG92ZXJyaWRlIGZvciBlYWNoIHJlY2lwZQotIwotIwlSRUNJUEVfTUFJTlRBSU5FUl9wbi08cmVjaXBlIG5hbWU+ID0gIkZ1bGwgTmFtZSA8YWRkcmVzc0Bkb21haW4+IgotIwotIyBQbGVhc2Uga2VlcCB0aGlzIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgotIwotUkVDSVBFX01BSU5UQUlORVJfcG4tYWNsID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hY3BpZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hZHdhaXRhLWljb24tdGhlbWUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLWxpYiA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1wbHVnaW5zID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXN0YXRlID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXRvb2xzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXV0aWxzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXV0aWxzLXNjcmlwdHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwbWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXByID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHItdXRpbCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXB0ID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwdC1uYXRpdmUgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXJncC1zdGFuZGFsb25lID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXNjaWlkb2MgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3BlbGwgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItY29yZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0dHIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9nZW4tbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9tYWtlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGktdWkgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYWJlbHRyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1maWxlcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtcGFzc3dkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzaCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzaC1jb21wbGV0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJkd2djID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmVlY3J5cHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmlncmVxc3Byb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmluZCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3MtY2FuYWRpYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zc3NkayA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpc29uID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iamFtLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsa3Rvb2wgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ibGt0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsdWV6NSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ibWFwLXRvb2xzID0gIkVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJvb3N0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vdGNoYXJ0MiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJzZC1oZWFkZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnRyZnMtdG9vbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1hcHBsaWFuY2UtaW1hZ2UgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1jb21wYXJlID0gIlJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGRlciA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkdG9vbHMtdGFyYmFsbCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ieWFjYyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnppcDIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2EtY2VydGlmaWNhdGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2Fpcm8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jYWxpYnJhdGVwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbnRhcmVsbC1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNjYWNoZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jZHJ0b29scy1uYXRpdmUgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWcgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWctYWx0ZXJuYXRpdmVzLW5hdGl2ZSA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNocnBhdGggPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3RrLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNtYWtlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UtbmF0aXZlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29nbC0xLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb21wb3NpdGVwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1jb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4tZ25vbWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29uc29sZS10b29scyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29uc29sZWtpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1iYXNlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1jbHV0dGVyID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWtlcm5lbC1kZXYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWxzYiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbHNiLWRldiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbHNiLXNkayA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbWluaW1hbC1kZXYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1ydCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtcnQtc2RrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1zYXRvID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1zYXRvLWRldiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2Utc2F0by1zZGsgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS10ZXN0bWFzdGVyID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS10ZXN0bWFzdGVyLWluaXRyYW1mcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2Utd2VzdG9uID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS14MTEgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JldXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNwaW8gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbmlzQGRlbml4Lm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jcmFja2xpYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jcmVhdGVyZXBvID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jcm9uaWUgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jcm9zcy1sb2NhbGVkZWYtbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LWxpbnV4ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyeXB0b2Rldi1tb2R1bGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LXRlc3RzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN1cHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN1cmwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3ZlLWNoZWNrLXRvb2wgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jd2F1dG9tYWNyb3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGFtYWdlcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kYiA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy1nbGliID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXRlc3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtd2FpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGViaWFudXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGVwbW9kd3JhcHBlci1jcm9zcyA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRoY3AgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZzdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kaWZmdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpcmVjdGZiID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXJlY3RmYi1leGFtcGxlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGlzdGNjID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXN0Y2MtY29uZmlnID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZG1pZGVjb2RlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZG14cHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kb2Nib29rLXhtbC1kdGQ0ID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZG9jYm9vay14c2wtc3R5bGVzaGVldHMgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kb3Nmc3Rvb2xzID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZHBrZyA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kcmkycHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kcmkzcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kcm9wYmVhciA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWR0YyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWUyZnNwcm9ncyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVlZS1hY3BpLXNjcmlwdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZmlsaW51eCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8tZmIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLXgxMSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWxpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZWxmdXRpbHMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY2hhbnQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jb2RpbmdzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZXBpcGhhbnkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ldGh0b29sID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV1ZGV2ID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV4cGF0ID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZXhwZWN0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZmZtcGVnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZmlsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1maW5kdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpeGVzcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mbGFjID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mbGV4ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LWFsaWFzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC11dGlsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udGNvbmZpZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRzcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb29tYXRpYy1maWx0ZXJzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb3JtZmFjdG9yID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyZWV0eXBlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZnN0ZXN0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZ0cyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdhd2sgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcy1jYW5hZGlhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3Nzc2RrID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3Nzc2RrLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtcnVudGltZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zYW5pdGl6ZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNvdXJjZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjY21ha2VkZXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY29uZiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjciA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYi1jcm9zcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYi1jcm9zcy1jYW5hZGlhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGstcGl4YnVmID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2V0dGV4dCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nZXR0ZXh0LW1pbmltYWwtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdob3N0c2NyaXB0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1naXQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xldyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItMi4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi1uZXR3b3JraW5nID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtbG9jYWxlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtbXRyYWNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtc2NyaXB0cyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdscHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1jb21tb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wLXRlc3RpbmcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wMyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRvYy11dGlscyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLXRoZW1lcy1zdGFuZGFyZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1jb25maWcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWVmaSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnVwZyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ251dGxzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvYmplY3QtaW50cm9zcGVjdGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvLW5hdGl2ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwZXJmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3BnbWUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwdGZkaXNrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3JlcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVuaXNAZGVuaXgub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdyb2ZmID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1Yi1lZmkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0LXBsYXllciA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtbGliYXYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW9teCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtbWV0YS1iYXNlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ayszID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWRvYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1lbmdpbmVzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWljb24tdXRpbHMtbmF0aXZlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLXNhdG8tZW5naW5lID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3VpbGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3VpbHQtbmF0aXZlID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1bW1pYm9vdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd6aXAgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taGFyZmJ1enogPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taGRwYXJtID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW5pc0BkZW5peC5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taGVscDJtYW4tbmF0aXZlID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1oaWNvbG9yLWljb24tdGhlbWUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ob3N0YXAtY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ob3N0YXAtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taHdsYXRkZXRlY3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pMmMtdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taWNlY2MtY3JlYXRlLWVudi1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pY29uLW5hbWluZy11dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWljdSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlmdXBkb3duID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXQtaWZ1cGRvd24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWJvb3QgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtZnJhbWV3b3JrID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtYm9vdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpLXRlc3RmcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtdGVzdGZzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHNjcmlwdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbnB1dHByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW50bHRvb2wgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHJvdXRlMiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHRhYmxlcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlyZGEtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taXNvLWNvZGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taXcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlianBlZy10dXJibyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1qc29uLWMgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1qc29uLWdsaWIgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rYmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rYnByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2NvbmZpZy1mcm9udGVuZHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuZWxzaGFyayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm5lbC1kZXZzcmMgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2V4ZWMtdG9vbHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2V5bWFwcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWttb2QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWttb2QtbmF0aXZlID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sM2FmcGFkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGFtZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGF0ZW5jeXRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxkY29uZmlnLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxlc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYTUyID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhY3BpID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFpbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFyY2hpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhcnQtbGdwbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFzc3VhbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhdG9taWMtb3BzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmF2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYnNkID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjYXAtbmcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2dyb3VwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2hlY2sgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2xhc3MtaXNhLXBlcmwgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29udmVydC1hc24xLXBlcmwgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY3JvY28gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkYWVtb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkbXggPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkcm0gPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkdW1wdmFsdWUtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlbnYtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcG94eSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVyYXRpb24tZm9udHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcnJvci1wZXJsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZlbnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJleGlmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmFrZWtleSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZmaSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZpbGUtY2hlY2t0cmVlLXBlcmwgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmbS1leHRyYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZvbnRlbmMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY2MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY2MtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjcnlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2ZvcnRyYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnbGFkZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsdSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdwZy1lcnJvciA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ3VkZXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpMThuLWNvbGxhdGUtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2FsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljb252ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWQzdGFnID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpbnB1dCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmpzb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJrc2JhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibWF0Y2hib3ggPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtcGMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0LXB5dGhvbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmZzaWRtYXAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJub3RpZnkgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuc3MtbWRucyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9nZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvbXhpbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvd2wgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwYW0gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNhcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY2lhY2Nlc3MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjcmUyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBmbTQgPSAiTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG5nMTIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG9kLXBsYWluZXItcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwcm94eSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwdGhyZWFkLXN0dWJzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicnN2ZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNhbXBsZXJhdGUwID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2RsMiA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZWNyZXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzbSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNuZGZpbGUxID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb2x2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvdXAtMi40ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGFzbjEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGhlb3JhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGltZWRhdGUtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aXJwYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wtY3Jvc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW5pc3RyaW5nID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVud2luZCA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJpLXBlcmwgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiLWNvbXBhdCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYjEgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2VyID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZvcmJpcyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlid2VicCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYngxMSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYngxMS1kaWV0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGF1ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGNhbGlicmF0ZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjYiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjb21wb3NpdGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y3Vyc29yID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGRhbWFnZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhkbWNwID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGV4dCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmaXhlcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmb250ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZ0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGkgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4aW5lcmFtYSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmNvbW1vbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmZpbGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wYXJzZXItcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LWJhc2UtcGVybCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LXBlcmwgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNpbXBsZS1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbDIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtdSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhwbSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyYW5kciA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZW5kZXIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmVzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNjcm5zYXZlciA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzZXR0aW5ncy1jbGllbnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2htZmVuY2UgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2x0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dHN0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dm1jID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHhmODZkZ2EgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4Nm1pc2MgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4NnZtID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieWFtbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpZ2h0dHBkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgtZHVtbXkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC1maXJtd2FyZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWxpYmMtaGVhZGVycyA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0byA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by1kZXYgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgteW9jdG8tcnQgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgteW9jdG8tdGlueSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sb2dyb3RhdGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHJ6c3ogPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2Jpbml0c2NyaXB0cyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYnRlc3QgPSAiRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sc29mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0cCA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0dG5nLW1vZHVsZXMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctdG9vbHMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctdXN0ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx6NCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx6byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx6b3AgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tNCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tNC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWFpbHggPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlZGVwZW5kID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2VkZXZzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYW4gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hbi1wYWdlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtY29uZmlnLWd0ayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3AgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1rZXlib2FyZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXBhbmVsLTIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtc2Vzc2lvbi1zYXRvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtdGVybWluYWwgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10aGVtZS1zYXRvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtd20gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZGFkbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZW51LWNhY2hlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EtZGVtb3MgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhLWdsID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1lbnZpcm9ubWVudCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWVudmlyb25tZW50LWV4dHNkayA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWV4dHNkay10b29sY2hhaW4gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1pZGUtc3VwcG9ydCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtdG9vbGNoYWluID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS13b3JsZC1wa2dkYXRhID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmkteC1zZXNzaW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaWNvbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2VsZmltYWdlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250ZGlyID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250c2NhbGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2xpYnMtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rdGVtcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tbWMtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbW9kdXRpbHMtaW5pdHNjcmlwdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXBlZzJkZWMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGZyID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXBnMTIzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXNtdHAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGQtdXRpbHMgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbmlzQGRlbml4Lm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGRldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tdXNsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXgtMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmFzbSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15ID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1saWJ0b29sID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcWVtdS1oZWxwZXIgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdCA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uY3Vyc2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZWFyZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldC10b29scyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXRiYXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldHRsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5mcy1leHBvcnQtcm9vdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtdXRpbHMgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ucHRoID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbnNwciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzLW15aG9zdG5hbWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb2Zvbm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb2gtcHV6emxlcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2cgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnLWFyY2gtY29uZmlnID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZy1rZXlyaW5ncyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2ctdXRpbHMgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcHJvZmlsZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9yYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcy1yZWxlYXNlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3NzcC11dWlkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcDExLWtpdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2UtaW5kZXggPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtYmFzZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLWJvb3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLWNsdXR0ZXIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1kZXZpY2UtZGV2ZWwgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1kaXJlY3RmYiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLWVjbGlwc2UtZGVidWcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1sc2IgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1uZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1zZGsgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1zc2gtZHJvcGJlYXIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS1zc2gtb3BlbnNzaCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLXRvb2xzLWRlYnVnID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUteDExID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNvcmUteDExLWJhc2UgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0byA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2Vncm91cC1jb3JlLXgxMS14c2VydmVyID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGFuZ28gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXJ0ZWQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhdGNoID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXRjaGVsZiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBheC11dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGJ6aXAyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjaXV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21hbmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGNtY2lhdXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGVyZiA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIkFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ2xpdCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ3ogPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpbmVudHJ5ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGl4bWFuID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGl4eiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBrZ2NvbmZpZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wbS11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wb2ludGVyY2FsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG9pbnRlcmNhbC14aW5wdXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wb25nLWNsb2NrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG9wdCA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvcnRtYXAgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG93ZXJ0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wcHAgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcC1kaWFsaW4gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXByZWxpbmsgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXByZXNlbnRwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXByb2NwcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzZXVkbyA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHNtaXNjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHNwbGFzaCA9ICJEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB0ZXN0LXJ1bm5lciA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvLWNsaWVudC1jb25mLXNhdG8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1enpsZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24gPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tYXN5bmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1kaXN0cmlidXRlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZ2l0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZ2l0ZGIgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1pbWFnaW5nID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbWFrbyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbm9zZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW51bXB5ID0gIkVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXBleHBlY3QgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1wdHlwcm9jZXNzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHljYWlybyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB5Y3VybCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB5Z3RrID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHlyZXggPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zY29ucyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNjb25zLW5hdGl2ZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNldHVwdG9vbHMgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2l4ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc21hcnRwbSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNtbWFwID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtYXN5bmMgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRidXMgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRpc3RyaWJ1dGUgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRvY3V0aWxzID0gIkVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXQgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ZGIgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW1ha28gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbmF0aXZlID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbm9zZSA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbnVtcHkgPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXBpcCA9ICJFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnb2JqZWN0ID0gIkVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zZXR1cHRvb2xzID0gIkVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zaXggPSAiRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNtbWFwID0gIkVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdSA9ICJBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11LWhlbHBlci1uYXRpdmUgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdXdyYXBwZXItY3Jvc3MgPSAiQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcXVpbHQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcXVpbHQtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1b3RhID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJhbmRycHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZWFkbGluZSA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcmVjb3JkcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZW1ha2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcmVuZGVycHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZXNvbHZjb25mID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZXNvdXJjZXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcmdiID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnBjYmluZCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcm5nLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJwbSA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnBtcmVzb2x2ZSA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnN5bmMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnQtdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ydWJ5ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnVuLXBvc3RpbnN0cyA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ4dnQtdW5pY29kZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNhdG8taWNvbi10aGVtZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLXNjcmVlbnNob3QgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zYmMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNjcmVlbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zY3Juc2F2ZXJwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNlZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2VyZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXRzZXJpYWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2V0dGluZ3MtZGFlbW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhZG93ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3ctc2VjdXJldHR5ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3ctc3lzcm9vdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhcmVkLW1pbWUtaW5mbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNodXRkb3duLWRlc2t0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zaWduaW5nLWtleXMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2xhbmcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc29jYXQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNvdXJjZS1oaWdobGlnaHQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zcGVleCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3BlZXhkc3AgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNxbGl0ZTMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3F1YXNoZnMtdG9vbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3RhcnR1cC1ub3RpZmljYXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJhY2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3RyZXNzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN1YnZlcnNpb24gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3VkbyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3dhYmJlci1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2lnID0gIkVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzZnN1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lza2xvZ2QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2xpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzcHJvZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3N0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtYm9vdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290Y2hhcnQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtY29tcGF0LXVuaXRzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLXNlcmlhbGdldHR5ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcC11cHJvYmVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdC1pbml0dGFiID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGFnbGliID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRhciA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGNmLWFnZW50ID0gIlJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGNsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjcC13cmFwcGVycyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXN0ZXhwb3J0LXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aTJodG1sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8gPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvLWR1bW15LW5hdGl2ZSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpZmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10aW1lID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpbnktaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyYWNlLWNtZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyZW1vciA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdHNsaWIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10dGYtYml0c3RyZWFtLXZlcmEgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10emNvZGUtbmF0aXZlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6ZGF0YSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QtZnctdXRpbHMgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QtbWtpbWFnZSA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVib290Y2hhcnQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11ZGV2LWV4dHJhY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11bmZzMyA9ICJSYW5keSBXaXR0IDxyYW5keS5lLndpdHRAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuaWZkZWYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11bmluYXRpdmUtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11bnppcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVwZGF0ZS1yYy5kID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdXNiaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYnV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdXRpbC1saW51eCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdXRpbC1tYWNyb3MgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12ODZkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdmFsYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZhbGdyaW5kID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdmlkZW9wcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZvbGF0aWxlLWJpbmRzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12dGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13YWZmbGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13YXRjaGRvZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhdGNoZG9nLWNvbmZpZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdheWxhbmQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbmlzQGRlbml4Lm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13YXlsYW5kLXByb3RvY29scyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVuaXNAZGVuaXgub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlYmtpdGd0ayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlc3RvbiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVuaXNAZGVuaXgub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlc3Rvbi1pbml0ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW5pc0BkZW5peC5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2dldCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13aGljaCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpcmVsZXNzLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdwYS1zdXBwbGljYW50ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMS1jb21tb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14MTFwZXJmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teDI2NCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhhdXRoID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC1pbWFnZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLWtleXN5bXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC1yZW5kZXJ1dGlsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwtd20gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y21pc2Nwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14ZGctdXRpbHMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14ZHB5aW5mbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhleHRwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhleWVzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1ldmRldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQta2V5Ym9hcmQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWxpYmlucHV0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1tb3VzZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtc3luYXB0aWNzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC12bW1vdXNlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1jaXJydXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWZiZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1pbnRlbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tb21hcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tb21hcGZiID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby12ZXNhID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby12bXdhcmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2ZGdhcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2ZHJpcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2bWlzY3Byb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4NnZpZG1vZGVwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhob3N0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGluZXJhbWFwcm90byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbmV0ZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5pdCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbnB1dCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbnB1dC1jYWxpYnJhdG9yID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGtiY29tcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhrZXlib2FyZC1jb25maWcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14bWx0byA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teG1vZG1hcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhvcmctbWluaW1hbC1mb250cyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhwcm9wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHJhbmRyID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHJlc3RvcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXJ2ZXItbm9kbS1pbml0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14Zjg2LWNvbmZpZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXJ2ZXIteG9yZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14dHJhbnMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14dHNjYWwgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14dXNlci1hY2NvdW50ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHZpZGVvLXRlc3RzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aW5mbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh3aW5pbmZvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHogPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi15YXNtID0gIkRlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4temlwID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4temlzb2ZzLXRvb2xzLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXpsaWIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS13b3JsZC1leGNsdWRlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LXdvcmxkLWV4Y2x1ZGUuaW5jCmluZGV4IGE2NjM1YjYuLjFhMmRlYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LXdvcmxkLWV4Y2x1ZGUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LXdvcmxkLWV4Y2x1ZGUuaW5jCkBAIC0yLDcgKzIsMyBAQAogIyBUaGluZ3Mgd2UgZXhsdWRlIGZyb213IHdvcmxkIHRlc3Rpbmcgd2l0aGluIHRoZSByZWZlcmVuY2UgZGlzdHJvCiAjCiAKLSMgcXd0IGZyb20gbWV0YS1xdDQsIGhhcyBwb2t5LWxzYiBRQSB3YXJuaW5ncywgcXQ0IGZvciBsc2Igb25seQotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXF3dCA9ICIxIgotIyBweXRob24tcHlxdCBmcm9tIG1ldGEtcXQ0IHJlcXVpcmVzIHNpcCBmcm9tIG1ldGEtb2UKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1weXRob24tcHlxdCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mCmluZGV4IGU3ZDY5OTUuLjI0Y2ZiMDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYKQEAgLTEyLDQgKzEyLDQgQEAKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcG4tbGludXgteW9jdG8gPSAiIGZlYXR1cmVzL25mc2QvbmZzZC1lbmFibGUuc2NjIgogCiAjIFVzZSB0aGUgTFRTSSBLZXJuZWwgZm9yIExTQiBUZXN0aW5nCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19saW51eHN0ZGJhc2UgPz0gIjQuMSUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19saW51eHN0ZGJhc2UgPz0gIjQuOSUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LXRpbnkuY29uZgppbmRleCA1NjE1NjZlLi4yMDMyYmZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKQEAgLTM4LDcgKzM4LDcgQEAKICMgRGlzdHJvIGNvbmZpZyBpcyBldmFsdWF0ZWQgYWZ0ZXIgdGhlIG1hY2hpbmUgY29uZmlnLCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkKICMgc2V0IHRoZSBrZXJuZWwgcHJvdmlkZXIgdG8gb3ZlcnJpZGUgYSBtYWNoaW5lIGNvbmZpZy4KIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA9ICJsaW51eC15b2N0by10aW55IgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8tdGlueSA/PSAiNC45JSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvLXRpbnkgPz0gIjQuMTIlIgogCiAjIFdlIGNhbiB1c2UgcGFja2FnZWdyb3VwLWNvcmUtYm9vdCwgYnV0IGluIHRoZSBmdXR1cmUgd2UgbWF5IG5lZWQgYSBuZXcgcGFja2FnZWdyb3VwLWNvcmUtdGlueQogI1BPS1lfREVGQVVMVF9FWFRSQV9SREVQRU5EUyArPSAicGFja2FnZWdyb3VwLWNvcmUtYm9vdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKaW5kZXggNjIxZDg0NS4uNTdkMDBiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKQEAgLTEsNyArMSw3IEBACiBESVNUUk8gPSAicG9reSIKIERJU1RST19OQU1FID0gIlBva3kgKFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIERpc3RybykiCi1ESVNUUk9fVkVSU0lPTiA9ICIyLjMuMyIKLURJU1RST19DT0RFTkFNRSA9ICJweXJvIgorRElTVFJPX1ZFUlNJT04gPSAiMi40LjIiCitESVNUUk9fQ09ERU5BTUUgPSAicm9ja28iCiBTREtfVkVORE9SID0gIi1wb2t5c2RrIgogU0RLX1ZFUlNJT04gOj0gIiR7QCcke0RJU1RST19WRVJTSU9OfScucmVwbGFjZSgnc25hcHNob3QtJHtEQVRFfScsJ3NuYXBzaG90Jyl9IgogCkBAIC0xNSwxOSArMTUsMTMgQEAKIFNES19WRVJTSU9OW3ZhcmRlcHNleGNsdWRlXSA9ICJEQVRFIgogCiAjIE92ZXJyaWRlIHRoZXNlIGluIHBva3kgYmFzZWQgZGlzdHJvcwotUE9LWV9ERUZBVUxUX0RJU1RST19GRUFUVVJFUyA9ICJsYXJnZWZpbGUgb3BlbmdsIHB0ZXN0IG11bHRpYXJjaCB3YXlsYW5kIgorUE9LWV9ERUZBVUxUX0RJU1RST19GRUFUVVJFUyA9ICJsYXJnZWZpbGUgb3BlbmdsIHB0ZXN0IG11bHRpYXJjaCB3YXlsYW5kIHZ1bGthbiIKIFBPS1lfREVGQVVMVF9FWFRSQV9SREVQRU5EUyA9ICJwYWNrYWdlZ3JvdXAtY29yZS1ib290IgogUE9LWV9ERUZBVUxUX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGUtYWYtcGFja2V0IgogCiBESVNUUk9fRkVBVFVSRVMgPz0gIiR7RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFR9ICR7RElTVFJPX0ZFQVRVUkVTX0xJQkN9ICR7UE9LWV9ERUZBVUxUX0RJU1RST19GRUFUVVJFU30iCiAKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjEwJSIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX3FlbXV4ODYgPz0gIjQuMTAlIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdXg4Ni02NCA/PSAiNC4xMCUiCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11YXJtID89ICI0LjEwJSIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX3FlbXVtaXBzID89ICI0LjEwJSIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX3FlbXVtaXBzNjQgPz0gIjQuMTAlIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdXBwYyA/PSAiNC4xMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCiAKIFNES19OQU1FID0gIiR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtfQVJDSH0tJHtJTUFHRV9CQVNFTkFNRX0tJHtUVU5FX1BLR0FSQ0h9IgogU0RLUEFUSCA9ICIvb3B0LyR7RElTVFJPfS8ke1NES19WRVJTSU9OfSIKQEAgLTQ1LDcgKzM5LDcgQEAKIAogVENMSUJDQVBQRU5EID0gIiIKIAotUUVNVV9UQVJHRVRTID89ICJhcm0gYWFyY2g2NCBpMzg2IG1pcHMgbWlwc2VsIG1pcHM2NCBtaXBzNjRlbCBwcGMgeDg2XzY0IgorUUVNVV9UQVJHRVRTID89ICJhcm0gYWFyY2g2NCBpMzg2IG1pcHMgbWlwc2VsIG1pcHM2NCBtaXBzNjRlbCBuaW9zMiBwcGMgeDg2XzY0IgogIyBPdGhlciBRRU1VX1RBUkdFVFMgInNoNCIKIAogUFJFTUlSUk9SUyA/Pz0gIlwKQEAgLTcyLDIwICs2NiwyNCBAQAogU0FOSVRZX1RFU1RFRF9ESVNUUk9TID89ICIgXAogICAgICAgICAgICAgcG9reS0yLjIgXG4gXAogICAgICAgICAgICAgcG9reS0yLjMgXG4gXAorICAgICAgICAgICAgcG9reS0yLjQgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE1LjA0IFxuIFwKICAgICAgICAgICAgIHVidW50dS0xNi4wNCBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTYuMTAgXG4gXAorICAgICAgICAgICAgdWJ1bnR1LTE3LjA0IFxuIFwKICAgICAgICAgICAgIGZlZG9yYS0yNCBcbiBcCiAgICAgICAgICAgICBmZWRvcmEtMjUgXG4gXAorICAgICAgICAgICAgZmVkb3JhLTI2IFxuIFwKICAgICAgICAgICAgIGNlbnRvcy03IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi04IFxuIFwKKyAgICAgICAgICAgIGRlYmlhbi05IFxuIFwKICAgICAgICAgICAgIG9wZW5zdXNlLTQyLjEgXG4gXAogICAgICAgICAgICAgb3BlbnN1c2UtNDIuMiBcbiBcCiAgICAgICAgICAgICAiCiAjCi0jIE9FTEFZT1VUX0FCSSBhbGxvd3MgdXMgdG8gbm90aWZ5IHVzZXJzIHdoZW4gdGhlIGZvcm1hdCBvZiBUTVBESVIgY2hhbmdlcyBpbiAKKyMgT0VMQVlPVVRfQUJJIGFsbG93cyB1cyB0byBub3RpZnkgdXNlcnMgd2hlbiB0aGUgZm9ybWF0IG9mIFRNUERJUiBjaGFuZ2VzIGluCiAjIGFuIGluY29tcGF0aWJsZSB3YXkuIFN1Y2ggY2hhbmdlcyBzaG91bGQgdXN1YWxseSBiZSBkZXRhaWxlZCBpbiB0aGUgY29tbWl0Ci0jIHRoYXQgYnJlYWtzIHRoZSBmb3JtYXQgYW5kIGhhdmUgYmVlbiBwcmV2aW91c2x5IGRpc2N1c3NlZCBvbiB0aGUgbWFpbGluZyBsaXN0IAorIyB0aGF0IGJyZWFrcyB0aGUgZm9ybWF0IGFuZCBoYXZlIGJlZW4gcHJldmlvdXNseSBkaXNjdXNzZWQgb24gdGhlIG1haWxpbmcgbGlzdAogIyB3aXRoIGdlbmVyYWwgYWdyZWVtZW50IGZyb20gdGhlIGNvcmUgdGVhbS4KICMKIE9FTEFZT1VUX0FCSSA9ICIxMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKaW5kZXggOGI3YjMzZC4uMjZkN2MzYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKQEAgLTksNiArOSw4IEBACiBCQkZJTEVfUEFUVEVSTl95b2N0byA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX3lvY3RvID0gIjUiCiAKK0xBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJyb2NrbyIKKwogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCiBMQVlFUlZFUlNJT05feW9jdG8gPSAiMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQppbmRleCAzMDRlZTAxLi45YTU2MGRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCkBAIC0xNDksNyArMTQ5LDYgQEAKICMgICAtICdidWlsZHN0YXRzJyBjb2xsZWN0IGJ1aWxkIHN0YXRpc3RpY3MKICMgICAtICdpbWFnZS1ta2xpYnMnIHRvIHJlZHVjZSBzaGFyZWQgbGlicmFyeSBmaWxlcyBzaXplIGZvciBhbiBpbWFnZQogIyAgIC0gJ2ltYWdlLXByZWxpbmsnIGluIG9yZGVyIHRvIHByZWxpbmsgdGhlIGZpbGVzeXN0ZW0gaW1hZ2UKLSMgICAtICdpbWFnZS1zd2FiJyB0byBwZXJmb3JtIGhvc3Qgc3lzdGVtIGludHJ1c2lvbiBkZXRlY3Rpb24KICMgTk9URTogaWYgbGlzdGluZyBta2xpYnMgJiBwcmVsaW5rIGJvdGgsIHRoZW4gbWFrZSBzdXJlIG1rbGlicyBpcyBiZWZvcmUgcHJlbGluawogIyBOT1RFOiBta2xpYnMgYWxzbyBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQgZm9yIGEgZ2l2ZW4gaW1hZ2UsIHNlZSBsb2NhbC5jb25mLmV4dGVuZGVkCiBVU0VSX0NMQVNTRVMgPz0gImJ1aWxkc3RhdHMgaW1hZ2UtbWtsaWJzIGltYWdlLXByZWxpbmsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKaW5kZXggYTg0N2I3OC4uMmE3MTg5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgpAQCAtOCwzICs4LDUgQEAKIEJCRklMRV9DT0xMRUNUSU9OUyArPSAic2VsZnRlc3QiCiBCQkZJTEVfUEFUVEVSTl9zZWxmdGVzdCA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX3NlbGZ0ZXN0ID0gIjUiCisKK0xBWUVSU0VSSUVTX0NPTVBBVF9zZWxmdGVzdCA9ICJyb2NrbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2ZpbGVzL3NpZ25pbmcva2V5LnBhc3NwaHJhc2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9maWxlcy9zaWduaW5nL2tleS5wYXNzcGhyYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNzFhNTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9maWxlcy9zaWduaW5nL2tleS5wYXNzcGhyYXNlCkBAIC0wLDAgKzEgQEAKK3Rlc3QxMjMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2ZpbGVzL3N0YXRpYy1ncm91cCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2ZpbGVzL3N0YXRpYy1ncm91cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjEzYjhlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvZmlsZXMvc3RhdGljLWdyb3VwCkBAIC0wLDAgKzEsMTQgQEAKK21lc3NhZ2VidXM6eDo1MDA6CitzeXN0ZW1kLWJ1cy1wcm94eTp4OjUwMToKK3N5c3RlbWQtbmV0d29yazp4OjUwMjoKK3N5c3RlbWQtcmVzb2x2ZTp4OjUwMzoKK3N5c3RlbWQtdGltZXN5bmM6eDo1MDQ6Citwb2xraXRkOng6NTA1OgorbG9jazp4OjUwNjoKK3N5c3RlbWQtam91cm5hbDp4OjUwNzoKK25ldGRldjp4OjUwODoKK2F2YWhpOng6NTA5OgorYXZhaGktYXV0b2lwZDp4OjUxMDoKK3JwYzp4OjUxMToKK3JwY3VzZXI6eDo1MTM6CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2ZpbGVzL3N0YXRpYy1wYXNzd2QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9maWxlcy9zdGF0aWMtcGFzc3dkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMmY4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9maWxlcy9zdGF0aWMtcGFzc3dkCkBAIC0wLDAgKzEsMTEgQEAKK21lc3NhZ2VidXM6eDo1MDA6NTAwOjovdmFyL2xpYi9kYnVzOi9iaW4vZmFsc2UKK3N5c3RlbWQtYnVzLXByb3h5Ong6NTAxOjUwMTo6LzovYmluL25vbG9naW4KK3N5c3RlbWQtbmV0d29yazp4OjUwMjo1MDI6Oi86L2Jpbi9ub2xvZ2luCitzeXN0ZW1kLXJlc29sdmU6eDo1MDM6NTAzOjovOi9iaW4vbm9sb2dpbgorc3lzdGVtZC10aW1lc3luYzp4OjUwNDo1MDQ6Oi86L2Jpbi9ub2xvZ2luCitwb2xraXRkOng6NTA1OjUwNTo6LzovYmluL25vbG9naW4KK2F2YWhpOng6NTA5OjUwOTo6LzovYmluL25vbG9naW4KK2F2YWhpLWF1dG9pcGQ6eDo1MTA6NTEwOjovOi9iaW4vbm9sb2dpbgorcnBjOng6NTExOjUxMTo6LzovYmluL25vbG9naW4KK2Rpc3RjYzp4OjUxMjpub2dyb3VwOjovOi9iaW4vbm9sb2dpbgorcnBjdXNlcjp4OjUxMzo1MTM6Oi92YXIvbGliL25mczovYmluL25vbG9naW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mX3J1bnRpbWUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZl9ydW50aW1lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYzUwZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZl9ydW50aW1lLnB5CkBAIC0wLDAgKzEsNDcgQEAKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCitmcm9tIG9lcWEucnVudGltZS5jYXNlcy5kbmYgaW1wb3J0IERuZlRlc3QKK2Zyb20gb2VxYS51dGlscy5odHRwc2VydmVyIGltcG9ydCBIVFRQU2VydmljZQorCitjbGFzcyBEbmZTZWxmdGVzdChEbmZUZXN0KToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGltcG9ydCB0ZW1wZmlsZQorICAgICAgICBjbHMudGVtcF9kaXIgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSJvZXFhLXJlbW90ZWZlZWRzLSIpCisgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKG9zLnBhdGguam9pbihjbHMudGMudGRbJ1dPUktESVInXSwgJ29lLXJvb3Rmcy1yZXBvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0b3AoKQorICAgICAgICBjbHMudGVtcF9kaXIuY2xlYW51cCgpCisKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ2RuZi5EbmZCYXNpY1Rlc3QudGVzdF9kbmZfaGVscCddKQorICAgIGRlZiB0ZXN0X3ZlcmlmeV9wYWNrYWdlX2ZlZWRzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgY29ycmVjdCBzZXR0aW5nIG9mIFBBQ0tBR0VfRkVFRF9VUklTIHZhcgorICAgICAgICBFeHBlY3RlZDogMS4gRmVlZHMgd2VyZSBjb3JyZWN0bHkgc2V0IGZvciBkbmYKKyAgICAgICAgICAgICAgICAgIDIuIFVwZGF0ZSByZWNvdmVycyBwYWNrYWdlcyBmcm9tIGhvc3QncyByZXBvCisgICAgICAgIEF1dGhvcjogSHVtYmVydG8gSWJhcnJhIDxodW1iZXJ0by5pYmFycmEubG9wZXpAaW50ZWwuY29tPgorICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICAjIFdoZW4gd2UgY3JlYXRlZCBhbiBpbWFnZSwgd2UgaGFkIHRvIHN1cHBseSBmYWtlIGlwIGFuZCBwb3J0CisgICAgICAgICMgZm9yIHRoZSBmZWVkcy4gTm93IHdlIGNhbiBwYXRjaCB0aGUgcmVhbCBvbmVzIGludG8gdGhlIGNvbmZpZyBmaWxlLgorICAgICAgICB0ZW1wX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rpci5uYW1lLCAndG1wLnJlcG8nKQorICAgICAgICBzZWxmLnRjLnRhcmdldC5jb3B5RnJvbSgiL2V0Yy95dW0ucmVwb3MuZC9vZS1yZW1vdGUtcmVwby5yZXBvIiwgdGVtcF9maWxlKQorICAgICAgICBmaXhlZF9jb25maWcgPSBvcGVuKHRlbXBfZmlsZSwgInIiKS5yZWFkKCkucmVwbGFjZSgiYm9ndXNfaXAiLCBzZWxmLnRjLnRhcmdldC5zZXJ2ZXJfaXApLnJlcGxhY2UoImJvZ3VzX3BvcnQiLCBzdHIoc2VsZi5yZXBvX3NlcnZlci5wb3J0KSkKKyAgICAgICAgd2l0aCBvcGVuKHRlbXBfZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShmaXhlZF9jb25maWcpCisgICAgICAgIHNlbGYudGMudGFyZ2V0LmNvcHlUbyh0ZW1wX2ZpbGUsICIvZXRjL3l1bS5yZXBvcy5kL29lLXJlbW90ZS1yZXBvLnJlcG8iKQorCisgICAgICAgIGltcG9ydCByZQorICAgICAgICAjIFVzZSAnLXknIGZvciBub24taW50ZXJhY3RpdmUgbW9kZTogYXV0b21hdGljYWxseSBpbXBvcnQgdGhlIGZlZWQgc2lnbmluZyBrZXkKKyAgICAgICAgb3V0cHV0X21ha2VjYWNoZSA9IHNlbGYuZG5mKCctdnkgbWFrZWNhY2hlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiLipGYWlsZWQgdG8gc3luY2hyb25pemUgY2FjaGUiLCBvdXRwdXRfbWFrZWNhY2hlLCByZS5ET1RBTEwpIGlzIE5vbmUsIG1zZyA9ICJkbmYgbWFrZWNhY2hlIGZhaWxlZCB0byBzeW5jaHJvbml6ZSByZXBvOiAlcyIgJShvdXRwdXRfbWFrZWNhY2hlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiLipNZXRhZGF0YSBjYWNoZSBjcmVhdGVkIiwgb3V0cHV0X21ha2VjYWNoZSwgcmUuRE9UQUxMKSBpcyBub3QgTm9uZSwgbXNnID0gImRuZiBtYWtlY2FjaGUgZmFpbGVkOiAlcyIgJShvdXRwdXRfbWFrZWNhY2hlKSkKKworICAgICAgICBvdXRwdXRfcmVwb2luZm8gPSBzZWxmLmRuZignLXYgcmVwb2luZm8nKQorICAgICAgICBtYXRjaG9iaiA9IHJlLm1hdGNoKHIiLipSZXBvLXBrZ3Nccyo6XHMqKD9QPG5fcGtncz5bMC05XSspIiwgb3V0cHV0X3JlcG9pbmZvLCByZS5ET1RBTEwpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaG9iaiBpcyBub3QgTm9uZSwgbXNnID0gIkNvdWxkIG5vdCBmaW5kIHRoZSBhbW91bnQgb2YgcGFja2FnZXMgaW4gZG5mIHJlcG9pbmZvIG91dHB1dDogJXMiICUob3V0cHV0X3JlcG9pbmZvKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGludChtYXRjaG9iai5ncm91cCgnbl9wa2dzJykpID4gMCwgbXNnID0gIkFtb3VudCBvZiByZW1vdGUgcGFja2FnZXMgaXMgbm90IG1vcmUgdGhhbiB6ZXJvOiAlc1xuIiAlKG91dHB1dF9yZXBvaW5mbykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3NlbGZ0ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvcnVudGltZS9jYXNlcy9zZWxmdGVzdC5weQppbmRleCBlNDk4NWE2Li4xOWRlNzQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3NlbGZ0ZXN0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc2VsZnRlc3QucHkKQEAgLTEsNyArMSw1IEBACiBmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKLWZyb20gb2VxYS5ydW50aW1lLmNhc2VzLmRuZiBpbXBvcnQgRG5mVGVzdAotZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCiAKIGNsYXNzIFNlbGZ0ZXN0KE9FUnVudGltZVRlc3RDYXNlKToKIApAQCAtMzEsNDMgKzI5LDMgQEAKIAogICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi50YXJnZXQucnVuKCJzb2NhdCAtViIpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RhdHVzLCAwLCBtc2c9InNvY2F0IGlzIHN0aWxsIGluc3RhbGxlZCIpCi0KLQotY2xhc3MgRG5mU2VsZnRlc3QoRG5mVGVzdCk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydXT1JLRElSJ10sICdvZS1yb290ZnMtcmVwbycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCkKLSAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0YXJ0KCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGNscy5yZXBvX3NlcnZlci5zdG9wKCkKLQotICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKLSAgICBkZWYgdGVzdF92ZXJpZnlfcGFja2FnZV9mZWVkcyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6IENoZWNrIGNvcnJlY3Qgc2V0dGluZyBvZiBQQUNLQUdFX0ZFRURfVVJJUyB2YXIKLSAgICAgICAgRXhwZWN0ZWQ6IDEuIEZlZWRzIHdlcmUgY29ycmVjdGx5IHNldCBmb3IgZG5mCi0gICAgICAgICAgICAgICAgICAyLiBVcGRhdGUgcmVjb3ZlcnMgcGFja2FnZXMgZnJvbSBob3N0J3MgcmVwbwotICAgICAgICBBdXRob3I6IEh1bWJlcnRvIEliYXJyYSA8aHVtYmVydG8uaWJhcnJhLmxvcGV6QGludGVsLmNvbT4KLSAgICAgICAgQXV0aG9yOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgotICAgICAgICAiIiIKLSAgICAgICAgIyBXaGVuIHdlIGNyZWF0ZWQgYW4gaW1hZ2UsIHdlIGhhZCB0byBzdXBwbHkgZmFrZSBpcCBhbmQgcG9ydAotICAgICAgICAjIGZvciB0aGUgZmVlZHMuIE5vdyB3ZSBjYW4gcGF0Y2ggdGhlIHJlYWwgb25lcyBpbnRvIHRoZSBjb25maWcgZmlsZS4KLSAgICAgICAgaW1wb3J0IHRlbXBmaWxlCi0gICAgICAgIHRlbXBfZmlsZSA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXg9Im9lcWEtcmVtb3RlZmVlZHMtIikubmFtZQotICAgICAgICBzZWxmLnRjLnRhcmdldC5jb3B5RnJvbSgiL2V0Yy95dW0ucmVwb3MuZC9vZS1yZW1vdGUtcmVwby5yZXBvIiwgdGVtcF9maWxlKQotICAgICAgICBmaXhlZF9jb25maWcgPSBvcGVuKHRlbXBfZmlsZSwgInIiKS5yZWFkKCkucmVwbGFjZSgiYm9ndXNfaXAiLCBzZWxmLnRjLnRhcmdldC5zZXJ2ZXJfaXApLnJlcGxhY2UoImJvZ3VzX3BvcnQiLCBzdHIoc2VsZi5yZXBvX3NlcnZlci5wb3J0KSkKLSAgICAgICAgb3Blbih0ZW1wX2ZpbGUsICJ3Iikud3JpdGUoZml4ZWRfY29uZmlnKQotICAgICAgICBzZWxmLnRjLnRhcmdldC5jb3B5VG8odGVtcF9maWxlLCAiL2V0Yy95dW0ucmVwb3MuZC9vZS1yZW1vdGUtcmVwby5yZXBvIikKLQotICAgICAgICBpbXBvcnQgcmUKLSAgICAgICAgb3V0cHV0X21ha2VjYWNoZSA9IHNlbGYuZG5mKCdtYWtlY2FjaGUnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociIuKk1ldGFkYXRhIGNhY2hlIGNyZWF0ZWQiLCBvdXRwdXRfbWFrZWNhY2hlLCByZS5ET1RBTEwpIGlzIG5vdCBOb25lLCBtc2cgPSAiZG5mIG1ha2VjYWNoZSBmYWlsZWQ6ICVzIiAlKG91dHB1dF9tYWtlY2FjaGUpKQotCi0gICAgICAgIG91dHB1dF9yZXBvaW5mbyA9IHNlbGYuZG5mKCdyZXBvaW5mbycpCi0gICAgICAgIG1hdGNob2JqID0gcmUubWF0Y2gociIuKlJlcG8tcGtnc1xzKjpccyooP1A8bl9wa2dzPlswLTldKykiLCBvdXRwdXRfcmVwb2luZm8sIHJlLkRPVEFMTCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNob2JqIGlzIG5vdCBOb25lLCBtc2cgPSAiQ291bGQgbm90IGZpbmQgdGhlIGFtb3VudCBvZiBwYWNrYWdlcyBpbiBkbmYgcmVwb2luZm8gb3V0cHV0OiAlcyIgJShvdXRwdXRfcmVwb2luZm8pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW50KG1hdGNob2JqLmdyb3VwKCduX3BrZ3MnKSkgPiAwLCBtc2cgPSAiQW1vdW50IG9mIHJlbW90ZSBwYWNrYWdlcyBpcyBub3QgbW9yZSB0aGFuIHplcm86ICVzXG4iICUob3V0cHV0X3JlcG9pbmZvKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2V4dGVybmFsLWxheWVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZXh0ZXJuYWwtbGF5ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTliMWFmYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2V4dGVybmFsLWxheWVyLnB5CkBAIC0wLDAgKzEsMTYgQEAKKyNmcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorI2Zyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQorCisKK2NsYXNzIEltcG9ydGVkVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3VuY29uZGl0aW9uYWxfcGFzcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IERvZXNuJ3QgY2hlY2sgYW55dGhpbmcsIHVzZWQgdG8gY2hlY2sgaW1wb3J0IHRlc3QgZnJvbSBvdGhlciBsYXllcnMuCisgICAgICAgIEV4cGVjdGVkOiAxLiBQYXNzIHVuY29uZGl0aW9uYWxseQorICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBUcnVlLCBtc2cgPSAiSW1wb3NzaWJsZSB0byBmYWlsIHRoaXMgdGVzdCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXRlc3QtcGF0Y2gtZ3ouYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXRlc3QtcGF0Y2gtZ3ouYmIKaW5kZXggZTQ1ZWU5Zi4uZmMzNzk5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC10ZXN0LXBhdGNoLWd6LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1wYXRjaC1nei5iYgpAQCAtNiw2ICs2LDcgQEAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3hyZXN0b3AveHJlc3RvcC0wLjQudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3JlYWRtZS5wYXRjaC5neiBcCiAgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0veHJlc3RvcC0wLjQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0MV8xLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0MV8xLjUuMy5iYgppbmRleCA0MDQ5YmUyLi4zMzNlY2FjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDFfMS41LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QxXzEuNS4zLmJiCkBAIC00LDYgKzQsOCBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9zb3VyY2VzL3B2LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLW5vdGUtbGluZS10by10aGUtcXVpY2stcmVmZXJlbmNlLnBhdGNoIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9wdi5zaHRtbCIKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlRoaXMgcmVjaXBlIGlzIHVzZWQgdG8gdGVzdCBkZXZ0b29sIHVwZ3JhZGUgZmVhdHVyZSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjkzNjVkODZiZDg4NDIyMmI0YmYxMDM5YjVhOWVkMWJkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4MWJjY2E5Nzg0YmYzY2IyMjA3ZTY4MjM2ZDFmNjhlMmFhN2I4MGY5OTliNTc1MGRjNzdkY2Q3NTZlODFmYmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDFfMS41LjMuYmIudXBncmFkZWQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDFfMS41LjMuYmIudXBncmFkZWQKaW5kZXggNDJjMDcwNS4uOWQ5NGY2NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QxXzEuNS4zLmJiLnVwZ3JhZGVkCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0MV8xLjUuMy5iYi51cGdyYWRlZApAQCAtNCw2ICs0LDggQEAKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3Lml2YXJjaC5jb20vcHJvZ3JhbXMvc291cmNlcy9wdi0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1ub3RlLWxpbmUtdG8tdGhlLXF1aWNrLXJlZmVyZW5jZS5wYXRjaCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lml2YXJjaC5jb20vcHJvZ3JhbXMvcHYuc2h0bWwiCitSRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJUaGlzIHJlY2lwZSBpcyB1c2VkIHRvIHRlc3QgZGV2dG9vbCB1cGdyYWRlIGZlYXR1cmUiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwNjJiY2E1ZmYzM2RmMWRkMDk0NzJlN2ZjM2JiZTMzMiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZGQ0NTM5MTgwNmIwZWQyMTVhYmVlNGM1YWMxNTk3ZDAxOGMzODZmZTljMWY1YWZkMmY2YmMzYjA3ZmQ4MmMzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0Ml9naXQuYmIKaW5kZXggNDUwNjM2ZS4uMDdiODMyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QyX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDJfZ2l0LmJiCkBAIC0xMiw2ICsxMiw4IEBACiBQUiA9ICJyMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9kYnVzLXdhaXQiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCitSRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJUaGlzIHJlY2lwZSBpcyB1c2VkIHRvIHRlc3QgZGV2dG9vbCB1cGdyYWRlIGZlYXR1cmUiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0Ml9naXQuYmIudXBncmFkZWQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXVwZ3JhZGUtdGVzdDJfZ2l0LmJiLnVwZ3JhZGVkCmluZGV4IDBkMmUxOWUuLjMyZWM0YjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdXBncmFkZS10ZXN0Ml9naXQuYmIudXBncmFkZWQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC11cGdyYWRlLXRlc3QyX2dpdC5iYi51cGdyYWRlZApAQCAtMTEsNiArMTEsOCBAQAogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2RidXMtd2FpdCIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlRoaXMgcmVjaXBlIGlzIHVzZWQgdG8gdGVzdCBkZXZ0b29sIHVwZ3JhZGUgZmVhdHVyZSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCmluZGV4IGFjYTE2MzMuLmExNTUxNmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKQEAgLTEzLDMgKzEzLDUgQEAKIExBWUVSVkVSU0lPTl9za2VsZXRvbiA9ICIxIgogCiBMQVlFUkRFUEVORFNfc2tlbGV0b24gPSAiY29yZSIKKworTEFZRVJTRVJJRVNfQ09NUEFUX3NrZWxldG9uID0gInJvY2tvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRjNWFmYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUKQEAgLTAsMCArMSw0MDcgQEAKKyAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgSGFyZHdhcmUgUmVmZXJlbmNlIEJTUHMgUkVBRE1FCisgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGZpbGUgZ2l2ZXMgZGV0YWlscyBhYm91dCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBoYXJkd2FyZSByZWZlcmVuY2UgQlNQcy4KK1RoZSBtYWNoaW5lcyBzdXBwb3J0ZWQgY2FuIGJlIHNlZW4gaW4gdGhlIGNvbmYvbWFjaGluZS8gZGlyZWN0b3J5IGFuZCBhcmUgbGlzdGVkIAorYmVsb3cuIFRoZXJlIGlzIG9uZSBwZXIgc3VwcG9ydGVkIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSBhbmQgdGhlc2UgYXJlIHByaW1hcmlseQordXNlZCB0byB2YWxpZGF0ZSB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHdvcmtzIG9uIHRoZSBoYXJkd2FyZSBhcmN0ZWN0dXJlcyBvZiAKK3Rob3NlIG1hY2hpbmVzLgorCitJZiB5b3UgYXJlIGluIGRvdWJ0IGFib3V0IHVzaW5nIFBva3kvT3BlbkVtYmVkZGVkL1lvY3RvIFByb2plY3Qgd2l0aCB5b3VyIGhhcmR3YXJlLCAKK2NvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgYm9hcmQvZGV2aWNlLgorCitTdXBwb3J0IGZvciBhZGRpdGlvbmFsIGRldmljZXMgaXMgbm9ybWFsbHkgYWRkZWQgYnkgYWRkaW5nIEJTUCBsYXllcnMgdG8geW91ciAKK2NvbmZpZ3VyYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgdGhlIFlvY3RvIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAKKyhCU1ApIERldmVsb3BlcidzIEd1aWRlIC0gZG9jdW1lbnRhdGlvbiBzb3VyY2UgaXMgaW4gZG9jdW1lbnRhdGlvbi9ic3BndWlkZSBvciAKK2Rvd25sb2FkIHRoZSBQREYgZnJvbToKKworICAgaHR0cDovL3lvY3RvcHJvamVjdC5vcmcvZG9jdW1lbnRhdGlvbgorCitOb3RlIHRoYXQgdGhlc2UgcmVmZXJlbmNlIEJTUHMgdXNlIHRoZSBsaW51eC15b2N0byBrZXJuZWwgYW5kIGluIGdlbmVyYWwgZG9uJ3QKK3B1bGwgaW4gYmluYXJ5IG1vZHVsZSBzdXBwb3J0IGZvciB0aGUgcGxhdGZvcm1zLiBUaGlzIG1lYW5zIHNvbWUgZGV2aWNlIGZ1bmN0aW9uYWxpdHkKK21heSBiZSBsaW1pdGVkIGNvbXBhcmVkIHRvIGEgJ2Z1bGwnIEJTUCB3aGljaCBtYXkgYmUgYXZhaWxhYmxlLgorCisKK0hhcmR3YXJlIFJlZmVyZW5jZSBCb2FyZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGZvbGxvd2luZyBib2FyZHMgYXJlIHN1cHBvcnRlZCBieSB0aGUgbWV0YS15b2N0by1ic3AgbGF5ZXI6CisKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBCZWFnbGVib25lIChiZWFnbGVib25lKQorICAqIEZyZWVzY2FsZSBNUEM4MzE1RS1SREIgKG1wYzgzMTVlLXJkYikKKyAgKiBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUgKGVkZ2Vyb3V0ZXIpCisgICogR2VuZXJhbCBJQSBwbGF0Zm9ybXMgKGdlbmVyaWN4ODYgYW5kIGdlbmVyaWN4ODYtNjQpCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgYm9hcmQncyBzZWN0aW9uIGJlbG93LiBUaGUgYXBwcm9wcmlhdGUgTUFDSElORQordmFyaWFibGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgYm9hcmQgaXMgZ2l2ZW4gaW4gYnJhY2tldHMuCisKK1JlZmVyZW5jZSBCb2FyZCBNYWludGVuYW5jZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NlbmQgcHVsbCByZXF1ZXN0cywgcGF0Y2hlcywgY29tbWVudHMgb3IgcXVlc3Rpb25zIGFib3V0IG1ldGEteW9jdG8tYnNwcyB0byBwb2t5QHlvY3RvcHJvamVjdC5vcmcKKworTWFpbnRhaW5lcnM6IEtldmluIEhhbyA8a2V4aW4uaGFvQHdpbmRyaXZlci5jb20+CisgICAgICAgICAgICAgQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CisKK0NvbnN1bWVyIERldmljZXMKKz09PT09PT09PT09PT09PT0KKworVGhlIGZvbGxvd2luZyBjb25zdW1lciBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG1ldGEteW9jdG8tYnNwIGxheWVyOgorCisgICogSW50ZWwgeDg2IGJhc2VkIFBDcyBhbmQgZGV2aWNlcyAoZ2VuZXJpY3g4NikKKyAgKiBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUgKGVkZ2Vyb3V0ZXIpCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgZGV2aWNlJ3Mgc2VjdGlvbiBiZWxvdy4gVGhlIGFwcHJvcHJpYXRlIE1BQ0hJTkUKK3ZhcmlhYmxlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRldmljZSBpcyBnaXZlbiBpbiBicmFja2V0cy4KKworCisKKyAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpYyBIYXJkd2FyZSBEb2N1bWVudGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK0ludGVsIHg4NiBiYXNlZCBQQ3MgYW5kIGRldmljZXMgKGdlbmVyaWN4ODYqKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBnZW5lcmljeDg2IGFuZCBnZW5lcmljeDg2LTY0IE1BQ0hJTkUgYXJlIHRlc3RlZCBvbiB0aGUgZm9sbG93aW5nIHBsYXRmb3JtczoKKworSW50ZWwgWGVvbi9Db3JlIGktU2VyaWVzOgorICArIEludGVsIE5VQzUgU2VyaWVzIC0gaXgtNTJ4eCBTZXJpZXMgU09DIChCcm9hZHdlbGwpCisgICsgSW50ZWwgTlVDNiBTZXJpZXMgLSBpeC02Mnh4IFNlcmllcyBTT0MgKFNreWxha2UpCisgICsgSW50ZWwgU2h1bXdheSBYZW9uIFNlcnZlcgorCitJbnRlbCBBdG9tIHBsYXRmb3JtczoKKyAgKyBNaW5ub3dCb2FyZCBNQVggLSBFMzgyNSBTT0MgKEJheSBUcmFpbCkKKyAgKyBNaW5ub3dCb2FyZCBNQVggLSBUdXJib3QgKEFESSBFbmdpbmVlcmluZykgLSBFMzgyNiBTT0MgKEJheSBUcmFpbCkKKyAgICAtIFRoZXNlIGJvYXJkcyBjYW4gYmUgZWl0aGVyIDMyYm90IG9yIDY0Yml0IG1vZGVzIGRlcGVuZGluZyBvbiBmaXJtd2FyZQorICAgIC0gU2VlIG1pbm5vd2JvYXJkLm9yZyBmb3IgZGV0YWlscyAKKyAgKyBJbnRlbCBCcmFzd2VsbCBTT0MKKworYW5kIGlzIGxpa2VseSB0byB3b3JrIG9uIG1hbnkgdW5saXN0ZWQgQXRvbS9Db3JlL1hlb24gYmFzZWQgZGV2aWNlcy4gVGhlIE1BQ0hJTkUKK3R5cGUgc3VwcG9ydHMgZXRoZXJuZXQsIHdpZmksIHNvdW5kLCBhbmQgSW50ZWwvdmVzYSBncmFwaGljcyBieSBkZWZhdWx0IGluCithZGRpdGlvbiB0byBjb21tb24gUEMgaW5wdXQgZGV2aWNlcywgYnVzc2VzLCBhbmQgc28gb24uCisKK0RlcGVuZGluZyBvbiB0aGUgZGV2aWNlLCBpdCBjYW4gYm9vdCBmcm9tIGEgdHJhZGl0aW9uYWwgaGFyZC1kaXNrLCBhIFVTQiBkZXZpY2UsCitvciBvdmVyIHRoZSBuZXR3b3JrLiBXcml0aW5nIGdlbmVyYXRlZCBpbWFnZXMgdG8gcGh5c2ljYWwgbWVkaWEgaXMKK3N0cmFpZ2h0Zm9yd2FyZCB3aXRoIGEgY2F2ZWF0IGZvciBVU0IgZGV2aWNlcy4gVGhlIGZvbGxvd2luZyBleGFtcGxlcyBhc3N1bWUgdGhlCit0YXJnZXQgYm9vdCBkZXZpY2UgaXMgL2Rldi9zZGIsIGJlIHN1cmUgdG8gdmVyaWZ5IHRoaXMgYW5kIHVzZSB0aGUgY29ycmVjdAorZGV2aWNlIGFzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXJlIHJ1biBhcyByb290IGFuZCBhcmUgbm90IHJldmVyc2FibGUuCisKK1VTQiBEZXZpY2U6CisgIDEuIEJ1aWxkIGEgbGl2ZSBpbWFnZS4gVGhpcyBpbWFnZSB0eXBlIGNvbnNpc3RzIG9mIGEgc2ltcGxlIGZpbGVzeXN0ZW0KKyAgICAgd2l0aG91dCBhIHBhcnRpdGlvbiB0YWJsZSwgd2hpY2ggaXMgc3VpdGFibGUgZm9yIFVTQiBrZXlzLCBhbmQgd2l0aCB0aGUKKyAgICAgZGVmYXVsdCBzZXR1cCBmb3IgdGhlIGdlbmVyaWN4ODYgbWFjaGluZSwgdGhpcyBpbWFnZSB0eXBlIGlzIGJ1aWx0CisgICAgIGF1dG9tYXRpY2FsbHkgZm9yIGFueSBpbWFnZSB5b3UgYnVpbGQuIEZvciBleGFtcGxlOgorCisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKKworICAyLiBVc2UgdGhlICJkZCIgdXRpbGl0eSB0byB3cml0ZSB0aGUgaW1hZ2UgdG8gdGhlIHJhdyBibG9jayBkZXZpY2UuIEZvcgorICAgICBleGFtcGxlOgorCisgICAgICMgZGQgaWY9Y29yZS1pbWFnZS1taW5pbWFsLWdlbmVyaWN4ODYuaGRkaW1nIG9mPS9kZXYvc2RiCisKKyAgSWYgdGhlIGRldmljZSBmYWlscyB0byBib290IHdpdGggIkJvb3QgZXJyb3IiIGRpc3BsYXllZCwgb3IgYXBwYXJlbnRseQorICBzdG9wcyBqdXN0IGFmdGVyIHRoZSBTWVNMSU5VWCB2ZXJzaW9uIGJhbm5lciwgaXQgaXMgbGlrZWx5IHRoZSBCSU9TIGNhbm5vdAorICB1bmRlcnN0YW5kIHRoZSBwaHlzaWNhbCBsYXlvdXQgb2YgdGhlIGRpc2sgKG9yIHJhdGhlciBpdCBleHBlY3RzIGEKKyAgcGFydGljdWxhciBsYXlvdXQgYW5kIGNhbm5vdCBoYW5kbGUgYW55dGhpbmcgZWxzZSkuIFRoZXJlIGFyZSB0d28gcG9zc2libGUKKyAgc29sdXRpb25zIHRvIHRoaXMgcHJvYmxlbToKKworICAxLiBDaGFuZ2UgdGhlIEJJT1MgVVNCIERldmljZSBzZXR0aW5nIHRvIEhERCBtb2RlLiBUaGUgbGFiZWwgd2lsbCB2YXJ5IGJ5CisgICAgIGRldmljZSwgYnV0IHRoZSBpZGVhIGlzIHRvIGZvcmNlIEJJT1MgdG8gcmVhZCB0aGUgQ3lsaW5kZXIvSGVhZC9TZWN0b3IKKyAgICAgZ2VvbWV0cnkgZnJvbSB0aGUgZGV2aWNlLgorCisgIDIuIFVzZSBhICIud2ljIiBpbWFnZSB3aXRoIGFuIEVGSSBwYXJ0aXRpb24KKworICAgICBhKSBXaXRoIGEgZGVmYXVsdCBncnViLWVmaSBib290bG9hZGVyOgorICAgICAjIGRkIGlmPWNvcmUtaW1hZ2UtbWluaW1hbC1nZW5lcmljeDg2LTY0LndpYyBvZj0vZGV2L3NkYgorCisgICAgIGIpIFVzZSBzeXN0ZW1kLWJvb3QgaW5zdGVhZAorICAgICAtIEJ1aWxkIGFuIGltYWdlIHdpdGggRUZJX1BST1ZJREVSPSJzeXN0ZW1kLWJvb3QiIHRoZW4gdXNlIHRoZSBhYm92ZQorICAgICAgIGRkIGNvbW1hbmQgdG8gd3JpdGUgdGhlIGltYWdlIHRvIGEgVVNCIHN0aWNrLgorCisKK1RleGFzIEluc3RydW1lbnRzIEJlYWdsZWJvbmUgKGJlYWdsZWJvbmUpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgQmVhZ2xlYm9uZSBpcyBhbiBBUk0gQ29ydGV4LUE4IGRldmVsb3BtZW50IGJvYXJkIHdpdGggVVNCLCBFdGhlcm5ldCwgMkQvM0QKK2FjY2VsZXJhdGVkIGdyYXBoaWNzLCBhdWRpbywgc2VyaWFsLCBKVEFHLCBhbmQgU0QvTU1DLiBUaGUgQmxhY2sgYWRkcyBhIGZhc3RlcgorQ1BVLCBtb3JlIFJBTSwgZU1NQyBmbGFzaCBhbmQgYSBtaWNybyBIRE1JIHBvcnQuIFRoZSBiZWFnbGVib25lIE1BQ0hJTkUgaXMKK3Rlc3RlZCBvbiB0aGUgZm9sbG93aW5nIHBsYXRmb3JtczoKKworICBvIEJlYWdsZWJvbmUgQmxhY2sgQTYKKyAgbyBCZWFnbGVib25lIEE2ICh0aGUgb3JpZ2luYWwgIldoaXRlIiBtb2RlbCkKKworVGhlIEJlYWdsZWJvbmUgQmxhY2sgaGFzIGVNTUMsIHdoaWxlIHRoZSBXaGl0ZSBkb2VzIG5vdC4gUHJlc3NpbmcgdGhlIFVTRVIvQk9PVAorYnV0dG9uIHdoZW4gcG93ZXJpbmcgb24gd2lsbCB0ZW1wb3JhcmlseSBjaGFuZ2UgdGhlIGJvb3Qgb3JkZXIuIEJ1dCBmb3IgdGhlIHNha2UKK29mIHNpbXBsaWNpdHksIHRoZXNlIGluc3RydWN0aW9ucyBhc3N1bWUgeW91IGhhdmUgZXJhc2VkIHRoZSBlTU1DIG9uIHRoZSBCbGFjaywKK3NvIGl0cyBib290IGJlaGF2aW9yIG1hdGNoZXMgdGhhdCBvZiB0aGUgV2hpdGUgYW5kIGJvb3RzIG9mZiBvZiBTRCBjYXJkLiBUbyBkbwordGhpcywgaXNzdWUgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmcm9tIHRoZSB1LWJvb3QgcHJvbXB0OgorCisgICAgIyBtbWMgZGV2IDEKKyAgICAjIG1tYyBlcmFzZSAwIDUxMgorCitUbyBmdXJ0aGVyIHRhaWxvciB0aGVzZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgYm9hcmQsIHBsZWFzZSByZWZlciB0byB0aGUKK2RvY3VtZW50YXRpb24gYXQgaHR0cDovL3d3dy5iZWFnbGVib2FyZC5vcmcvYm9uZSBhbmQgaHR0cDovL3d3dy5iZWFnbGVib2FyZC5vcmcvYmxhY2sKKworRnJvbSBhIExpbnV4IHN5c3RlbSB3aXRoIGFjY2VzcyB0byB0aGUgaW1hZ2UgZmlsZXMgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgorCisgIDEuIEJ1aWxkIGFuIGltYWdlLiBGb3IgZXhhbXBsZToKKworICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCisKKyAgMi4gVXNlIHRoZSAiZGQiIHV0aWxpdHkgdG8gd3JpdGUgdGhlIGltYWdlIHRvIHRoZSBTRCBjYXJkLiBGb3IgZXhhbXBsZToKKworICAgICAjIGRkIGNvcmUtaW1hZ2UtbWluaW1hbC1iZWFnbGVib25lLndpYyBvZj0vZGV2L3NkYgorCisgIDMuIEluc2VydCB0aGUgU0QgY2FyZCBpbnRvIHRoZSBCZWFnbGVib25lIGFuZCBib290IHRoZSBib2FyZC4KKworRnJlZXNjYWxlIE1QQzgzMTVFLVJEQiAobXBjODMxNWUtcmRiKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgTVBDODMxNSBQb3dlclBDIHJlZmVyZW5jZSBwbGF0Zm9ybSAoTVBDODMxNUUtUkRCKSBpcyBhaW1lZCBhdCBoYXJkd2FyZSBhbmQKK3NvZnR3YXJlIGRldmVsb3BtZW50IG9mIG5ldHdvcmsgYXR0YWNoZWQgc3RvcmFnZSAoTkFTKSBhbmQgZGlnaXRhbCBtZWRpYSBzZXJ2ZXIKK2FwcGxpY2F0aW9ucy4gVGhlIE1QQzgzMTVFLVJEQiBmZWF0dXJlcyB0aGUgUG93ZXJRVUlDQyBJSSBQcm8gcHJvY2Vzc29yLCB3aGljaAoraW5jbHVkZXMgYSBidWlsdC1pbiBzZWN1cml0eSBhY2NlbGVyYXRvci4KKworKE5vdGU6IHlvdSBtYXkgZmluZCBpdCBlYXNpZXIgdG8gb3JkZXIgTVBDODMxNUUtUkRCQTsgdGhpcyBhcHBlYXJzIHRvIGJlIHRoZQorc2FtZSBib2FyZCBpbiBhbiBlbmNsb3N1cmUgd2l0aCBhY2Nlc3Nvcmllcy4gSW4gYW55IGNhc2UgaXQgaXMgZnVsbHkKK2NvbXBhdGlibGUgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zIGdpdmVuIGhlcmUuKQorCitTZXR1cCBpbnN0cnVjdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6CisqIE5GUyByb290IHNldHVwIG9uIHlvdXIgd29ya3N0YXRpb24KKyogVEZUUCBzZXJ2ZXIgaW5zdGFsbGVkIG9uIHlvdXIgd29ya3N0YXRpb24KKyogU3RyYWlnaHQtdGhydSA5LWNvbmR1Y3RvciBzZXJpYWwgY2FibGUgKERCOSwgTS9GKSBjb25uZWN0ZWQgZnJvbSB5b3VyIAorICBQQyB0byBVQVJUMQorKiBFdGhlcm5ldCBjb25uZWN0ZWQgdG8gdGhlIGZpcnN0IGV0aGVybmV0IHBvcnQgb24gdGhlIGJvYXJkCisKKy0tLSBQcmVwYXJhdGlvbiAtLS0KKworTm90ZTogaWYgeW91IGhhdmUgYWx0ZXJlZCB5b3VyIGJvYXJkJ3MgZXRoZXJuZXQgTUFDIGFkZHJlc3MoZXMpIGZyb20gdGhlCitkZWZhdWx0cywgb3IgeW91IG5lZWQgdG8gZG8gc28gYmVjYXVzZSB5b3Ugd2FudCBtdWx0aXBsZSBib2FyZHMgb24gdGhlIHNhbWUKK25ldHdvcmssIHRoZW4geW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlcyBpbiB0aGUgZHRzIGZpbGUgKHBhdGNoCitsaW51eC9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODMxNWVyZGIuZHRzIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSkuIElmCit5b3UgaGF2ZSBsZWZ0IHRoZW0gYXQgdGhlIGZhY3RvcnkgZGVmYXVsdCB0aGVuIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBkbworYW55dGhpbmcgaGVyZS4KKworTm90ZTogVG8gYm9vdCBmcm9tIFVTQiBkaXNrIHlvdSBuZWVkIHUtYm9vdCB0aGF0IHN1cHBvcnRzICdleHQybG9hZCB1c2InCitjb21tYW5kLiBZb3UgbmVlZCB0byBzZXR1cCBURlRQIHNlcnZlciwgbG9hZCB1LWJvb3QgZnJvbSB0aGVyZSBhbmQKK2ZsYXNoIGl0IHRvIE5PUiBmbGFzaC4KKworQmV3YXJlISBGbGFzaGluZyBib290bG9hZGVyIGlzIHBvdGVudGlhbGx5IGRhbmdlcm91cyBvcGVyYXRpb24gdGhhdCBjYW4KK2JyaWNrIHlvdXIgZGV2aWNlIGlmIGRvbmUgaW5jb3JyZWN0bHkuIFBsZWFzZSwgbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kCit3aGF0IGJlbG93IGNvbW1hbmRzIG1lYW4gYmVmb3JlIGV4ZWN1dGluZyB0aGVtLgorCitMb2FkIHRoZSBuZXcgdS1ib290LmJpbiBmcm9tIFRGVFAgc2VydmVyIHRvIG1lbW9yeSBhZGRyZXNzIDIwMDAwMAorPT4gdGZ0cCAyMDAwMDAgdS1ib290LmJpbgorCitEaXNhYmxlIGZsYXNoIHByb3RlY3Rpb24KKz0+IHByb3RlY3Qgb2ZmIGFsbAorCitFcmFzZSB0aGUgb2xkIHUtYm9vdCBmcm9tIGZlMDAwMDAwIHRvIGZlMDZmZmZmIGluIE5PUiBmbGFzaC4KK1RoZSBzaXplIGlzIDB4NzAwMDAgKDQ1ODc1MiBieXRlcykKKz0+IGVyYXNlIGZlMDAwMDAwIGZlMDZmZmZmCisKK0NvcHkgdGhlIG5ldyB1LWJvb3QgZnJvbSBhZGRyZXNzIDIwMDAwMCB0byBmZTAwMDAwMAordGhlIHNpemUgaXMgMHg3MDAwMC4gSXQgaGFzIHRvIGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdS1ib290LmJpbiBzaXplCis9PiBjcC5iIDIwMDAwMCBmZTAwMDAwMCA3MDAwMAorCitFbmFibGUgZmxhc2ggcHJvdGVjdGlvbiBhZ2FpbgorPT4gcHJvdGVjdCBvbiBhbGwKKworUmVzZXQgdGhlIGJvYXJkCis9PiByZXNldAorCistLS0gQm9vdGluZyBmcm9tIFVTQiBkaXNrIC0tLQorCisgMS4gRmxhc2ggcGFydGl0aW9uZWQgaW1hZ2UgdG8gdGhlIFVTQiBkaXNrCisKKyAgICAjIGRkIGlmPWNvcmUtaW1hZ2UtbWluaW1hbC1tcGM4MzE1ZS1yZGIud2ljIG9mPS9kZXYvc2RiCisKKyAyLiBQbHVnIFVTQiBkaXNrIGludG8gdGhlIE1QQzgzMTUgYm9hcmQKKworIDMuIENvbm5lY3QgdGhlIGJvYXJkJ3MgZmlyc3Qgc2VyaWFsIHBvcnQgdG8geW91ciB3b3Jrc3RhdGlvbiBhbmQgdGhlbiBzdGFydCB1cAorICAgIHlvdXIgZmF2b3VyaXRlIHNlcmlhbCB0ZXJtaW5hbCBzbyB0aGF0IHlvdSB3aWxsIGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aAorICAgIHRoZSBzZXJpYWwgY29uc29sZS4gSWYgeW91IGRvbid0IGhhdmUgYSBmYXZvdXJpdGUsIHBpY29jb20gaXMgc3VnZ2VzdGVkOgorCisgICQgcGljb2NvbSAvZGV2L3R0eVVTQjAgLWIgMTE1MjAwCisKKyA0LiBQb3dlciB1cCBvciByZXNldCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkCisgICAgdG8gZ2V0IHRvIHRoZSBVLUJvb3QgY29tbWFuZCBsaW5lCisKKyA1LiBPcHRpb25hbC4gTG9hZCB0aGUgdS1ib290LmJpbiBmcm9tIHRoZSBVU0IgZGlzazoKKworID0+IHVzYiBzdGFydAorID0+IGV4dDJsb2FkIHVzYiAwOjEgMjAwMDAwIHUtYm9vdC5iaW4KKworICAgIGFuZCBmbGFzaCBpdCB0byBOT1IgZmxhc2ggYXMgZGVzY3JpYmVkIGFib3ZlLgorCisgNi4gTG9hZCB0aGUga2VybmVsIGFuZCBkdGIgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIG9mIHRoZSBVU0IgZGlzazoKKworID0+IHVzYiBzdGFydAorID0+IGV4dDJsb2FkIHVzYiAwOjEgMTAwMDAwMCB1SW1hZ2UKKyA9PiBleHQybG9hZCB1c2IgMDoxIDIwMDAwMDAgZHRiCisKKyA3LiBTZXQgYm9vdGFyZ3MgYW5kIGJvb3QgdXAgdGhlIGRldmljZQorCisgPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9zZGIyIHJ3IHJvb3R3YWl0IGNvbnNvbGU9dHR5UzAsMTE1MjAwCisgPT4gYm9vdG0gMTAwMDAwMCAtIDIwMDAwMDAKKworCistLS0gQm9vdGluZyBmcm9tIE5GUyByb290IC0tLQorCitMb2FkIHRoZSBrZXJuZWwgYW5kIGR0YiAoZGV2aWNlIHRyZWUgYmxvYiksIGFuZCBib290IHRoZSBzeXN0ZW0gYXMgZm9sbG93czoKKworIDEuIEdldCB0aGUga2VybmVsICh1SW1hZ2UtbXBjODMxNWUtcmRiLmJpbikgYW5kIGR0YiAodUltYWdlLW1wYzgzMTVlLXJkYi5kdGIpCisgICAgZmlsZXMgZnJvbSB0aGUgdG1wL2RlcGxveSBkaXJlY3RvcnksIGFuZCBtYWtlIHRoZW0gYXZhaWxhYmxlIG9uIHlvdXIgVEZUUAorICAgIHNlcnZlci4KKworIDIuIENvbm5lY3QgdGhlIGJvYXJkJ3MgZmlyc3Qgc2VyaWFsIHBvcnQgdG8geW91ciB3b3Jrc3RhdGlvbiBhbmQgdGhlbiBzdGFydCB1cAorICAgIHlvdXIgZmF2b3VyaXRlIHNlcmlhbCB0ZXJtaW5hbCBzbyB0aGF0IHlvdSB3aWxsIGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aAorICAgIHRoZSBzZXJpYWwgY29uc29sZS4gSWYgeW91IGRvbid0IGhhdmUgYSBmYXZvdXJpdGUsIHBpY29jb20gaXMgc3VnZ2VzdGVkOgorCisgICQgcGljb2NvbSAvZGV2L3R0eVVTQjAgLWIgMTE1MjAwCisKKyAzLiBQb3dlciB1cCBvciByZXNldCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkCisgICAgdG8gZ2V0IHRvIHRoZSBVLUJvb3QgY29tbWFuZCBsaW5lCisKKyA0LiBTZXQgdXAgdGhlIGVudmlyb25tZW50IGluIFUtQm9vdDoKKworID0+IHNldGVudiBpcGFkZHIgPGJvYXJkIGlwPgorID0+IHNldGVudiBzZXJ2ZXJpcCA8dGZ0cCBzZXJ2ZXIgaXA+CisgPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgcncgbmZzcm9vdD08bmZzcm9vdCBpcD46PHJvb3RmcyBwYXRoPiBpcD08Ym9hcmQgaXA+OjxzZXJ2ZXIgaXA+OjxnYXRld2F5IGlwPjoyNTUuMjU1LjI1NS4wOm1wYzgzMTVlOmV0aDA6b2ZmIGNvbnNvbGU9dHR5UzAsMTE1MjAwCisKKyA1LiBEb3dubG9hZCB0aGUga2VybmVsIGFuZCBkdGIsIGFuZCBib290OgorCisgPT4gdGZ0cCAxMDAwMDAwIHVJbWFnZS1tcGM4MzE1ZS1yZGIuYmluCisgPT4gdGZ0cCAyMDAwMDAwIHVJbWFnZS1tcGM4MzE1ZS1yZGIuZHRiCisgPT4gYm9vdG0gMTAwMDAwMCAtIDIwMDAwMDAKKworLS0tIEJvb3RpbmcgZnJvbSBKRkZTMiByb290IC0tLQorCisgMS4gRmlyc3QgYm9vdCB0aGUgYm9hcmQgd2l0aCBORlMgcm9vdC4KKworIDIuIEVyYXNlIHRoZSBNVEQgcGFydGl0aW9uIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyByb290OgorCisgICAgJCBmbGFzaF9lcmFzZWFsbCAgL2Rldi9tdGQzCisKKyAzLiBDb3B5IHRoZSBKRkZTMiBpbWFnZSB0byB0aGUgTVREIHBhcnRpdGlvbjoKKworICAgICQgZmxhc2hjcCBjb3JlLWltYWdlLW1pbmltYWwtbXBjODMxNWUtcmRiLmpmZnMyIC9kZXYvbXRkMworCisgNC4gVGhlbiByZWJvb3QgdGhlIGJvYXJkIGFuZCBzZXQgdXAgdGhlIGVudmlyb25tZW50IGluIFUtQm9vdDoKKworICAgID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvbXRkYmxvY2szIHJvb3Rmc3R5cGU9amZmczIgY29uc29sZT10dHlTMCwxMTUyMDAKKworCitVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUgKGVkZ2Vyb3V0ZXIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBFZGdlUm91dGVyIExpdGUgaXMgcGFydCBvZiB0aGUgRWRnZU1heCBzZXJpZXMuIEl0IGlzIGEgTUlQUzY0IHJvdXRlcgorKGJhc2VkIG9uIHRoZSBDYXZpdW0gT2N0ZW9uIHByb2Nlc3Nvcikgd2l0aCA1MTJNQiBvZiBSQU0sIHdoaWNoIHVzZXMgYW4KK2ludGVybmFsIFVTQiBwZW5kcml2ZSBmb3Igc3RvcmFnZS4KKworU2V0dXAgaW5zdHJ1Y3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nOgorKiBSSjQ1IC0+IHNlcmlhbCAoInJvbGxvdmVyIikgY2FibGUgY29ubmVjdGVkIGZyb20geW91ciBQQyB0byB0aGUgQ09OU09MRQorICBwb3J0IG9uIHRoZSBkZXZpY2UKKyogRXRoZXJuZXQgY29ubmVjdGVkIHRvIHRoZSBmaXJzdCBldGhlcm5ldCBwb3J0IG9uIHRoZSBib2FyZAorCitJZiB1c2luZyBORlMgYXMgcGFydCBvZiB0aGUgc2V0dXAgcHJvY2VzcywgeW91IHdpbGwgYWxzbyBuZWVkOgorKiBORlMgcm9vdCBzZXR1cCBvbiB5b3VyIHdvcmtzdGF0aW9uCisqIFRGVFAgc2VydmVyIGluc3RhbGxlZCBvbiB5b3VyIHdvcmtzdGF0aW9uIChpZiBmZXRjaGluZyB0aGUga2VybmVsIGZyb20KKyAgVEZUUCwgc2VlIGJlbG93KS4KKworLS0tIFByZXBhcmF0aW9uIC0tLQorCitCdWlsZCBhbiBpbWFnZSAoZS5nLiBjb3JlLWltYWdlLW1pbmltYWwpIHVzaW5nICJlZGdlcm91dGVyIiBhcyB0aGUgTUFDSElORS4KK0luIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24gaXQgaXMgYmFzZWQgb24gY29yZS1pbWFnZS1taW5pbWFsLiBBbm90aGVyIHRhcmdldAorbWF5IGJlIHNpbWlsaWFyIHdpdGggaXQuCisKKy0tLSBCb290aW5nIGZyb20gTkZTIHJvb3QgLyBrZXJuZWwgdmlhIFRGVFAgLS0tCisKK0xvYWQgdGhlIGtlcm5lbCwgYW5kIGJvb3QgdGhlIHN5c3RlbSBhcyBmb2xsb3dzOgorCisgMS4gR2V0IHRoZSBrZXJuZWwgKHZtbGludXgpIGZpbGUgZnJvbSB0aGUgdG1wL2RlcGxveS9pbWFnZXMvZWRnZXJvdXRlcgorICAgIGRpcmVjdG9yeSwgYW5kIG1ha2UgdGhlbSBhdmFpbGFibGUgb24geW91ciBURlRQIHNlcnZlci4KKworIDIuIENvbm5lY3QgdGhlIGJvYXJkJ3MgZmlyc3Qgc2VyaWFsIHBvcnQgdG8geW91ciB3b3Jrc3RhdGlvbiBhbmQgdGhlbiBzdGFydCB1cAorICAgIHlvdXIgZmF2b3VyaXRlIHNlcmlhbCB0ZXJtaW5hbCBzbyB0aGF0IHlvdSB3aWxsIGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aAorICAgIHRoZSBzZXJpYWwgY29uc29sZS4gSWYgeW91IGRvbid0IGhhdmUgYSBmYXZvdXJpdGUsIHBpY29jb20gaXMgc3VnZ2VzdGVkOgorCisgICQgcGljb2NvbSAvZGV2L3R0eVMwIC1iIDExNTIwMAorCisgMy4gUG93ZXIgdXAgb3IgcmVzZXQgdGhlIGJvYXJkIGFuZCBwcmVzcyBhIGtleSBvbiB0aGUgdGVybWluYWwgd2hlbiBwcm9tcHRlZAorICAgIHRvIGdldCB0byB0aGUgVS1Cb290IGNvbW1hbmQgbGluZQorCisgNC4gU2V0IHVwIHRoZSBlbnZpcm9ubWVudCBpbiBVLUJvb3Q6CisKKyA9PiBzZXRlbnYgaXBhZGRyIDxib2FyZCBpcD4KKyA9PiBzZXRlbnYgc2VydmVyaXAgPHRmdHAgc2VydmVyIGlwPgorCisgNS4gRG93bmxvYWQgdGhlIGtlcm5lbCBhbmQgYm9vdDoKKworID0+IHRmdHAgdGZ0cCAkbG9hZGFkZHIgdm1saW51eAorID0+IGJvb3RvY3RsaW51eCAkbG9hZGFkZHIgY29yZW1hc2s9MHgzIHJvb3Q9L2Rldi9uZnMgcncgbmZzcm9vdD08bmZzcm9vdCBpcD46PHJvb3RmcyBwYXRoPiBpcD08Ym9hcmQgaXA+OjxzZXJ2ZXIgaXA+OjxnYXRld2F5IGlwPjo8bmV0bWFzaz46ZWRnZXJvdXRlcjpldGgwOm9mZiBtdGRwYXJ0cz1waHlzX21hcHBlZF9mbGFzaDo1MTJrKGJvb3QwKSw1MTJrKGJvb3QxKSw2NGtAMzA3MmsoZWVwcm9tKQorCistLS0gQm9vdGluZyBmcm9tIFVTQiBkaXNrIC0tLQorCitUbyBib290IGZyb20gdGhlIFVTQiBkaXNrLCB5b3UgZWl0aGVyIG5lZWQgdG8gcmVtb3ZlIGl0IGZyb20gdGhlIGVkZ2Vyb3V0ZXIKK2JveCBhbmQgcG9wdWxhdGUgaXQgZnJvbSBhbm90aGVyIGNvbXB1dGVyLCBvciB1c2UgYSBwcmV2aW91c2x5IGJvb3RlZCBORlMKK2ltYWdlIGFuZCBwb3B1bGF0ZSBmcm9tIHRoZSBlZGdlcm91dGVyIGl0c2VsZi4KKworVHlwZSAxOiBVc2UgcGFydGl0aW9uZWQgaW1hZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1N0ZXBzOgorCisgMS4gUmVtb3ZlIHRoZSBVU0IgZGlzayBmcm9tIHRoZSBlZGdlcm91dGVyIGFuZCBpbnNlcnQgaXQgaW50byBhIGNvbXB1dGVyCisgICAgdGhhdCBoYXMgYWNjZXNzIHRvIHlvdXIgYnVpbGQgYXJ0aWZhY3RzLgorCisgMi4gRmxhc2ggdGhlIGltYWdlLgorCisgICAgIyBkZCBpZj1jb3JlLWltYWdlLW1pbmltYWwtZWRnZXJvdXRlci53aWMgb2Y9L2Rldi9zZGIKKworIDMuIEluc2VydCBVU0IgZGlzayBpbnRvIHRoZSBlZGdlcm91dGVyIGFuZCBib290IGl0LgorCitUeXBlIDI6IE5GUworLS0tLS0tLS0tLS0KKworTm90ZTogSWYgeW91IHBsYWNlIHRoZSBrZXJuZWwgb24gdGhlIGV4dDMgcGFydGl0aW9uLCB5b3UgbXVzdCByZS1jcmVhdGUgdGhlCisgICAgICBleHQzIGZpbGVzeXN0ZW0sIHNpbmNlIHRoZSBmYWN0b3J5IHUtYm9vdCBjYW4gb25seSBoYW5kbGUgMTI4IGJ5dGUgaW5vZGVzIGFuZAorICAgICAgY2Fubm90IHJlYWQgdGhlIHBhcnRpdGlvbiBvdGhlcndpc2UuCisKKyAgICAgIFRoZXNlIGJvb3QgaW5zdHJ1Y3Rpb25zIGFzc3VtZSB0aGF0IHlvdSBoYXZlIHJlY3JlYXRlZCB0aGUgZXh0MyBmaWxlc3lzdGVtIHdpdGgKKyAgICAgIDEyOCBieXRlIGlub2RlcywgeW91IGhhdmUgYW4gdXBkYXRlZCB1Ym9vdCBvciB5b3UgYXJlIHJ1bm5pbmcgYW5kIGltYWdlIGNhcGFibGUKKyAgICAgIG9mIG1ha2luZyB0aGUgZmlsZXN5c3RlbSBvbiB0aGUgYm9hcmQgaXRzZWxmLgorCisKKyAxLiBCb290IGZyb20gTkZTIHJvb3QKKworIDIuIE1vdW50IHRoZSBVU0IgZGlzayBwYXJ0aXRpb24gMiBhbmQgdGhlbiBleHRyYWN0IHRoZSBjb250ZW50cyBvZgorICAgIHRtcC9kZXBsb3kvY29yZS1pbWFnZS1YWFhYLnRhci5iejIgaW50byBpdC4KKworICAgIEJlZm9yZSBzdGFydGluZywgY29weSBjb3JlLWltYWdlLW1pbmltYWwteHh4LnRhci5iejIgYW5kIHZtbGludXggaW50bworICAgIHJvb3RmcyBwYXRoIG9uIHlvdXIgd29ya3N0YXRpb24uCisKKyAgICBhbmQgdGhlbiwKKyAgCisgICAgICAjIG1vdW50IC9kZXYvc2RhMiAvbWVkaWEvc2RhMgorICAgICAgIyB0YXIgLXh2anBmIGNvcmUtaW1hZ2UtbWluaW1hbC1YWFgudGFyLmJ6MiAtQyAvbWVkaWEvc2RhMgorICAgICAgIyBjcCB2bWxpbnV4IC9tZWRpYS9zZGEyL2Jvb3Qvdm1saW51eAorICAgICAgIyB1bW91bnQgL21lZGlhL3NkYTIKKyAgICAgICMgcmVib290CisKKyAzLiBSZWJvb3QgdGhlIGJvYXJkIGFuZCBwcmVzcyBhIGtleSBvbiB0aGUgdGVybWluYWwgd2hlbiBwcm9tcHRlZCB0byBnZXQgdG8gdGhlIFUtQm9vdAorICAgIGNvbW1hbmQgbGluZToKKworICAgICMgcmVib290CisKKyA0LiBMb2FkIHRoZSBrZXJuZWwgYW5kIGJvb3Q6CisKKyAgICAgID0+IGV4dDJsb2FkIHVzYiAwOjIgJGxvYWRhZGRyIGJvb3Qvdm1saW51eAorICAgICAgPT4gYm9vdG9jdGxpbnV4ICRsb2FkYWRkciBjb3JlbWFzaz0weDMgcm9vdD0vZGV2L3NkYTIgcncgcm9vdHdhaXQgbXRkcGFydHM9cGh5c19tYXBwZWRfZmxhc2g6NTEyayhib290MCksNTEyayhib290MSksNjRrQDMwNzJrKGVlcHJvbSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCmluZGV4IDQ0ZGJjYTYuLjdiNTY1ZjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgpAQCAtOSwzICs5LDQgQEAKIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfeW9jdG9ic3AgPSAiNSIKIExBWUVSVkVSU0lPTl95b2N0b2JzcCA9ICIzIgorTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gInJvY2tvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUuY29uZgppbmRleCA0YTkwYmE1Li4xYmRkNGRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUuY29uZgpAQCAtMjYsNyArMjYsNyBAQAogUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTIlIgogCiBLRVJORUxfSU1BR0VUWVBFID0gInpJbWFnZSIKLUtFUk5FTF9ERVZJQ0VUUkVFID0gImFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiIKK0tFUk5FTF9ERVZJQ0VUUkVFID0gImFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiBhbTMzNXgtYm9uZWdyZWVuLmR0YiIKIEtFUk5FTF9FWFRSQV9BUkdTICs9ICJMT0FEQUREUj0ke1VCT09UX0VOVFJZUE9JTlR9IgogCiBTUExfQklOQVJZID0gIk1MTyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZ2VuZXJpY3g4Ni02NC5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9nZW5lcmljeDg2LTY0LmNvbmYKaW5kZXggYmZlZGQ4NC4uMTJmN2MwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9nZW5lcmljeDg2LTY0LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9nZW5lcmljeDg2LTY0LmNvbmYKQEAgLTcsNiArNyw0IEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYwogCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMCUiCi0KIFNFUklBTF9DT05TT0xFU19DSEVDSyA9ICJ0dHlTMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZ2VuZXJpY3g4Ni5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9nZW5lcmljeDg2LmNvbmYKaW5kZXggYWYwM2I4Ni4uNzk4YjYyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9nZW5lcmljeDg2LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9nZW5lcmljeDg2LmNvbmYKQEAgLTgsNSArOCwzIEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYwogCiBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyArPSAiZ21hNTAwLWdmeC1jaGVjayIKLQotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTAlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKaW5kZXggNmUyZDMxNi4uMzcxYTNkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCkBAIC0zMCw2ICszMCw2IEBACiBJTUFHRV9GU1RZUEVTID89ICJqZmZzMiB0YXIuYnoyIgogSkZGUzJfRVJBU0VCTE9DSyA9ICIweDQwMDAiCiAKLUlNQUdFX0ZTVFlQRVMgKz0gIndpYyIKK0lNQUdFX0ZTVFlQRVMgKz0gIndpYyB3aWMuYm1hcCIKIFdLU19GSUxFID89ICdtcGM4MzE1ZS1yZGIud2tzJwogSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LmJpbiB1SW1hZ2UgdUltYWdlLW1wYzgzMTVlcmRiLmR0YjtkdGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNWVlZWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5CkBAIC0wLDAgKzEsOTggQEAKK2ltcG9ydCBvcworCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgcnVucWVtdQorCitjbGFzcyBTeXN0ZW1kYm9vdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIGRlZiBfY29tbW9uX3NldHVwKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29tbW9uIHNldHVwIGZvciB0ZXN0IGNhc2VzOiAxNDQ1LCAxNTI4CisgICAgICAgICIiIgorCisgICAgICAgICMgU2V0IEVGSV9QUk9WSURFUiA9ICJzeXN0ZW1kYm9vdCIgYW5kIE1BQ0hJTkUgPSAiZ2VuZXJpY3g4Ni02NCIgaW4gY29uZi9sb2NhbC5jb25mCisgICAgICAgIGZlYXR1cmVzID0gJ0VGSV9QUk9WSURFUiA9ICJzeXN0ZW1kLWJvb3QiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdNQUNISU5FID0gImdlbmVyaWN4ODYtNjQiJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoZmVhdHVyZXMpCisKKyAgICBkZWYgX2NvbW1vbl9idWlsZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbW1vbiBidWlsZCBmb3IgdGVzdCBjYXNlczogMTQ0NSAsIDE1MjgKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBCdWlsZCBhIGdlbmVyaWN4ODYtNjQvZWZpIHN5c3RlbWRib290IGltYWdlCisgICAgICAgIGJpdGJha2UoJ210b29scy1uYXRpdmUgY29yZS1pbWFnZS1taW5pbWFsJykKKworCisgICAgQE9FVGVzdElEKDE0NDUpCisgICAgZGVmIHRlc3RfZWZpX3N5c3RlbWRib290X2ltYWdlc19jYW5fYmVfYnVpbHQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgaWYgc3lzdGVtZC1ib290IGltYWdlcyBjYW4gYmUgYnVpbHQgY29ycmVjdGx5CisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBGaWxlIHN5c3RlbWQtYm9vdC5lZmkgc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiAkcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9nZW5lcmljeDg2LTY0CisgICAgICAgICAgICAgICAgICAgICAyLiAnc3lzdGVtZC1ib290IiBjYW4gYmUgYnVpbHQgY29ycmVjdGx5CisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBKb3NlIFBlcmV6IENhcnJhbnphIDxqb3NlLnBlcmV6LmNhcnJhbnphQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IEpvc2UgUGVyZXogQ2FycmFuemEgPGpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICAjIFdlJ2QgdXNlIERFUExPWV9ESVJfSU1BR0UgaGVyZSwgZXhjZXB0IHRoYXQgd2UgbmVlZCBpdHMgdmFsdWUgZm9yCisgICAgICAgICMgTUFDSElORT0iZ2VuZXJpY3g4Ni02NCB3aGljaCBpcyBwcm9iYWJseSBub3QgdGhlIG9uZSBjb25maWd1cmVkCisgICAgICAgIHN5c3RlbWRib290ZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdERVBMT1lfRElSJyksICdpbWFnZXMnLCAnZ2VuZXJpY3g4Ni02NCcsICdzeXN0ZW1kLWJvb3R4NjQuZWZpJykKKworICAgICAgICBzZWxmLl9jb21tb25fc2V0dXAoKQorCisgICAgICAgICMgRW5zdXJlIHdlJ3JlIGFjdHVhbGx5IHRlc3RpbmcgdGhhdCB0aGlzIGdldHMgYnVpbHQgYW5kIG5vdCB0aGF0CisgICAgICAgICMgaXQgd2FzIGFyb3VuZCBmcm9tIGFuIGVhcmxpZXIgYnVpbGQKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW5zc3RhdGUgc3lzdGVtZC1ib290JykKKyAgICAgICAgcnVuQ21kKCdybSAtZiAlcycgJSBzeXN0ZW1kYm9vdGZpbGUpCisKKyAgICAgICAgc2VsZi5fY29tbW9uX2J1aWxkKCkKKworICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKHN5c3RlbWRib290ZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAnU3lzdGVtZC1Cb290IGZpbGUgJXMgbm90IGZvdW5kJyAlIHN5c3RlbWRib290ZmlsZSkKKworICAgIEBPRVRlc3RJRCgxNTI4KQorICAgIEBPRVRlc3REZXBlbmRzKFsnc3lzdGVtZF9ib290LlN5c3RlbWRib290LnRlc3RfZWZpX3N5c3RlbWRib290X2ltYWdlc19jYW5fYmVfYnVpbHQnXSkKKyAgICBkZWYgdGVzdF9pbWFnZV9lZmlfZmlsZShzZWxmKToKKworICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgICBDaGVjayBpZiBFRkkgYm9vdGxvYWRlciBmb3Igc3lzdGVtZCBpcyBjb3JyZWN0bHkgYnVpbGQKKyAgICAgICAgRGVwZW5kZW5jaWVzOiBJbWFnZSB3YXMgYnVpbHQgY29ycmVjdGx5IG9uIHRlc3RjYXNlIDE0NDUKKyAgICAgICAgU3RlcHM6ICAgICAgICAxLiBDb3B5IGJvb3R4NjQuZWZpIGZpbGUgZm9ybSB0aGUgaGRkaW1nIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICB1bmRlciBidWlsZC90bXAvZGVwbG95L2ltYWdlcy9nZW5lcmljeDg2LTY0CisgICAgICAgICAgICAgICAgICAgICAgMi4gQ2hlY2sgYm9vdHg2NC5lZmkgd2FzIGNvcGllZCBmb3JtIGhkZGltZworICAgICAgICAgICAgICAgICAgICAgIDMuIFZlcmlmeSB0aGUgY2hlY2tzdW1zIGZyb20gdGhlIGNvcGllZCBhbmQgcHJldmlvdXNseQorICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgZmlsZSBhcmUgZXF1YWwuCisgICAgICAgIEV4cGVjdGVkIDogICAgU3lzdGVtZC1ib290eDY0LmVmaSBhbmQgYm9vdHg2NC5lZmkgc2hvdWxkIGJlIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgICAgICAgaGVuY2UgY2hlY2tzdW1zIHNob3VsZCBiZSBlcXVhbC4KKyAgICAgICAgUHJvZHVjdDogICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICAgSm9zZSBQZXJleiBDYXJyYW56YSA8am9zZS5wZXJlei5jYXJyYW56YSBhdCBsaW51eC1pbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiAgSm9zZSBQZXJleiBDYXJyYW56YSA8am9zZS5wZXJlei5jYXJyYW56YSBhdCBsaW51eC1pbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIHN5c3RlbWRib290ZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdERVBMT1lfRElSJyksICdpbWFnZXMnLCAnZ2VuZXJpY3g4Ni02NCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWQtYm9vdHg2NC5lZmknKQorICAgICAgICBzeXN0ZW1kYm9vdGltYWdlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0RFUExPWV9ESVInKSwgJ2ltYWdlcycsICdnZW5lcmljeDg2LTY0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JlLWltYWdlLW1pbmltYWwtZ2VuZXJpY3g4Ni02NC5oZGRpbWcnKQorICAgICAgICBpbWFnZWJvb3RmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0RFUExPWV9ESVInKSwgJ2ltYWdlcycsICdnZW5lcmljeDg2LTY0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib290eDY0LmVmaScpCisgICAgICAgIG1jb3B5bmF0aXZlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ1NUQUdJTkdfQklORElSX05BVElWRScpLCAnbWNvcHknKQorCisgICAgICAgICNDbGVhbiBlbnZpcm9ubWVudCBiZWZvcmUgc3RhcnQgdGhlIHRlc3QKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoaW1hZ2Vib290ZmlsZSk6CisgICAgICAgICAgICBydW5DbWQoJ3JtIC1mICVzJyAlIGltYWdlYm9vdGZpbGUpCisKKyAgICAgICAgICAgICNTdGVwIDEKKyAgICAgICAgICAgIHJ1bkNtZCgnJXMgLWkgJXMgOjpFRkkvQk9PVC9ib290eDY0LmVmaSAlcycgJSAobWNvcHluYXRpdmUgLHN5c3RlbWRib290aW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlYm9vdGZpbGUpKQorCisgICAgICAgICAgICAjU3RlcCAyCisgICAgICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKGltYWdlYm9vdGZpbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdib290eDY0LmVmaSBmaWxlICVzIHdhcyBub3QgY29waWVkIGZyb20gaW1hZ2UnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBpbWFnZWJvb3RmaWxlKQorCisgICAgICAgICAgICAjU3RlcCAzCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ21kNXN1bSAlcyAlcycgJSAoc3lzdGVtZGJvb3RmaWxlLCBpbWFnZWJvb3RmaWxlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zcGxpdCgpWzBdLCByZXN1bHQub3V0cHV0LnNwbGl0KClbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcyB3YXMgbm90IGNvcnJlY2x0eSBnZW5lcmF0ZWQnICUgaW1hZ2Vib290ZmlsZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9zeXN0ZW1kX2Jvb3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3Qvc3lzdGVtZF9ib290LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2Y3NGRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9zeXN0ZW1kX2Jvb3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIHJ1bnFlbXUKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotaW1wb3J0IHJlCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBsb2dnaW5nCi0KLQotY2xhc3MgU3lzdGVtZGJvb3Qob2VTZWxmVGVzdCk6Ci0KLSAgICBkZWYgX2NvbW1vbl9zZXR1cChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIENvbW1vbiBzZXR1cCBmb3IgdGVzdCBjYXNlczogMTQ0NSwgWFhYWAotICAgICAgICAiIiIKLQotICAgICAgICAjIFNldCBFRklfUFJPVklERVIgPSAiZ3VtbWlib290IiBhbmQgTUFDSElORSA9ICJnZW5lcmljeDg2LTY0IiBpbiBjb25mL2xvY2FsLmNvbmYKLSAgICAgICAgZmVhdHVyZXMgPSAnRUZJX1BST1ZJREVSID0gInN5c3RlbWQtYm9vdCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ01BQ0hJTkUgPSAiZ2VuZXJpY3g4Ni02NCInCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhmZWF0dXJlcykKLQotICAgIGRlZiBfY29tbW9uX2J1aWxkKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgQ29tbW9uIGJ1aWxkIGZvciB0ZXN0IGNhc2VzOiAxNDQ1ICwgWFhYWAotICAgICAgICAiIiIKLQotICAgICAgICAjIEJ1aWxkIGEgZ2VuZXJpY3g4Ni02NC9lZmkgZ3VtbWlib290IGltYWdlCi0gICAgICAgIGJpdGJha2UoJ210b29scy1uYXRpdmUgY29yZS1pbWFnZS1taW5pbWFsJykKLQotCi0gICAgQHRlc3RjYXNlKDE0NDUpCi0gICAgZGVmIHRlc3RfZWZpX3N5c3RlbWRib290X2ltYWdlc19jYW5fYmVfYnVpbHQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgaWYgc3lzdGVtZC1ib290IGltYWdlcyBjYW4gYmUgYnVpbHQgY29ycmVjdGx5Ci0gICAgICAgIEV4cGVjdGVkOiAgICAxLiBGaWxlIHN5c3RlbWQtYm9vdC5lZmkgc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiAkcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9nZW5lcmljeDg2LTY0Ci0gICAgICAgICAgICAgICAgICAgICAyLiAnc3lzdGVtZC1ib290IiBjYW4gYmUgYnVpbHQgY29ycmVjdGx5Ci0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBKb3NlIFBlcmV6IENhcnJhbnphIDxqb3NlLnBlcmV6LmNhcnJhbnphQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IEpvc2UgUGVyZXogQ2FycmFuemEgPGpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICAjIFdlJ2QgdXNlIERFUExPWV9ESVJfSU1BR0UgaGVyZSwgZXhjZXB0IHRoYXQgd2UgbmVlZCBpdHMgdmFsdWUgZm9yCi0gICAgICAgICMgTUFDSElORT0iZ2VuZXJpY3g4Ni02NCB3aGljaCBpcyBwcm9iYWJseSBub3QgdGhlIG9uZSBjb25maWd1cmVkCi0gICAgICAgIHN5c3RlbWRib290ZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdERVBMT1lfRElSJyksICdpbWFnZXMnLCAnZ2VuZXJpY3g4Ni02NCcsICdzeXN0ZW1kLWJvb3R4NjQuZWZpJykKLQotICAgICAgICBzZWxmLl9jb21tb25fc2V0dXAoKQotCi0gICAgICAgICMgRW5zdXJlIHdlJ3JlIGFjdHVhbGx5IHRlc3RpbmcgdGhhdCB0aGlzIGdldHMgYnVpbHQgYW5kIG5vdCB0aGF0Ci0gICAgICAgICMgaXQgd2FzIGFyb3VuZCBmcm9tIGFuIGVhcmxpZXIgYnVpbGQKLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW5zc3RhdGUgc3lzdGVtZC1ib290JykKLSAgICAgICAgcnVuQ21kKCdybSAtZiAlcycgJSBzeXN0ZW1kYm9vdGZpbGUpCi0KLSAgICAgICAgc2VsZi5fY29tbW9uX2J1aWxkKCkKLQotICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKHN5c3RlbWRib290ZmlsZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAnU3lzdGVtZC1Cb290IGZpbGUgJXMgbm90IGZvdW5kJyAlIHN5c3RlbWRib290ZmlsZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NjU5NWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVJERVBFTkRTXyR7UE59X2FwcGVuZF9nZW5lcmljeDg2ID0gIiBsdHRuZy11c3Qgc3lzdGVtdGFwIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU1ZjkyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLUtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKLUtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKLQotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjc4MjEzM2Q4MTY2YWM3MWVmMWZmYWJhNThiN2NmODFlYzllNTMyYTEiCi1TUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICI3ODIxMzNkODE2NmFjNzFlZjFmZmFiYTU4YjdjZjgxZWM5ZTUzMmExIgotU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZSA/PSAiY2UzOGZkYjgyMDQ3NmU0OTY1NzlmMjQ4MWJlOTc3YzBmMzU1MDlmNCIKLVNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCi1DT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgotQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUgPSAiYmVhZ2xlYm9uZSIKLUNPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgotCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xLjQzIgotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuMS40MyIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEuNDMiCi1MSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUgPSAiNC4xLjQzIgotTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xLjQzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWQ4ZWJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwyNyBAQAorS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJzdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJzdGFuZGFyZC9iYXNlIgorCitLTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCitLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCitLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAic3RhbmRhcmQvZWRnZXJvdXRlciIKK0tCUkFOQ0hfYmVhZ2xlYm9uZSA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgorS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKKworU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiMWM0YWQ1NjlhZjNlMjNhNzc5OTQyMzU0MzUwNDBlMzIyOTA4Njg3ZiIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjFjNGFkNTY5YWYzZTIzYTc3OTk0MjM1NDM1MDQwZTMyMjkwODY4N2YiCitTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIyNTdmODQzZWEzNjc3NDQ2MjBmMWQ5MjkxMGFmZDJmNDU0ZTMxNDgzIgorU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiMjU3Zjg0M2VhMzY3NzQ0NjIwZjFkOTI5MTBhZmQyZjQ1NGUzMTQ4MyIKK1NSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiMDE0NTYwODc0ZjllYjJhODYxMzhjOWNjMzUwNDZmZjE3MjA0ODVlMSIKKworCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgorQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKK0NPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCitDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZSA9ICJiZWFnbGVib25lIgorQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCisKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjEyLjIwIgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuMTIuMjAiCitMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xMi4xOSIKK0xJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI0LjEyLjE5IgorTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xMi4xOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IDQyN2FmNGMuLjM1Y2NlMWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApAQCAtNywxMSArNywxMSBAQAogS0JSQU5DSF9iZWFnbGVib25lID0gInN0YW5kYXJkL2JlYWdsZWJvbmUiCiBLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiYjcxYzdiNzg2YWVkMjZjMGExZTRlY2E2NmYxZDg3NGVjMDE3ZDY5OSIKLVNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWFjaGluZV9iZWFnbGVib25lID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICJiNGRhYTRlOWQ2ODg2MmU1NTlkNzI2YjBiNjZiN2JlNjA1ODg5YjllIgorU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgorU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiNzAxMjBjMGE2YjBmODgxMjI3OTk3MDUxMTRhOTlhMTViZjAxMTNjZSIKIAogQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCkBAIC0xOSw4ICsxOSw4IEBACiBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZSA9ICJiZWFnbGVib25lIgogQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCiAKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjQuODciCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC40Ljg3IgotTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuNC44NyIKLUxJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZSA9ICI0LjQuODciCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjQuODciCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC40LjExMyIKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjQuMTEzIgorTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuNC4xMTMiCitMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC40LjExMyIKK0xJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuNC4xMTMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZAppbmRleCBiM2I1Y2Q1Li5jMGIyZWVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmJhcHBlbmQKQEAgLTcsMTEgKzcsMTEgQEAKIEtCUkFOQ0hfYmVhZ2xlYm9uZSA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgogS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjQ4MGVlNTk5ZmI4ZGY3MTJjMTBkY2Y0YjdhYTYzOThiNzlmN2Q0MDQiCi1TUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZSA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiODhhNzAzYjE1YTc1NjQ3MDRjM2RjNWQzYzEyMzdlMDg1OTg5NzY1NSIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImY3YTZkNDVmZmY4NTMxNzNiZmJmNjE3MDZhZWZmY2QxZDFlOTk0NjciCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJmN2E2ZDQ1ZmZmODUzMTczYmZiZjYxNzA2YWVmZmNkMWQxZTk5NDY3IgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjdhNmQ0NWZmZjg1MzE3M2JmYmY2MTcwNmFlZmZjZDFkMWU5OTQ2NyIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImY3YTZkNDVmZmY4NTMxNzNiZmJmNjE3MDZhZWZmY2QxZDFlOTk0NjciCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjE5NWE4NTdhMGU0MjE1MGI5NDBkZmNiZGY4NTdiZTY2ZTA1ZGQwMDMiCiAKIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCiBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgpAQCAtMTksOCArMTksOCBAQAogQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUgPSAiYmVhZ2xlYm9uZSIKIENPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgogCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC45LjQ5IgotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuOS40OSIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjkuNDkiCi1MSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUgPSAiNC45LjQ5IgotTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC45LjQ5IgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuOS43OCIKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjkuNzgiCitMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC45Ljc4IgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuOS43OCIKK0xJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuOS43OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvL2NvbmYvbGF5ZXIuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVkMzBlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by9jb25mL2xheWVyLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSMgRHVtbXkgZmlsZSB0byBhbGxvdyBmb3IgbWV0YS15b2N0byAtPiBtZXRhLXBva3kgdHJhbnNpdGlvbgotQkJQQVRIID0uICIke0xBWUVSRElSfS8uLi9tZXRhLXBva3k6IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FsbGFyY2guYmJjbGFzcwppbmRleCBhN2NlMDI0Li41MWJhNTA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FsbGFyY2guYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FsbGFyY2guYmJjbGFzcwpAQCAtNDMsOCArNDMsOCBAQAogICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9QQUNLQUdFX1NUUklQIiwgIjEiKQogCiAgICAgICAgICMgVGhlc2UgbXVsdGlsaWIgdmFsdWVzIHNob3VsZG4ndCBjaGFuZ2UgYWxsYXJjaCBwYWNrYWdlcyBzbyBleGNsdWRlIHRoZW0KLSAgICAgICAgZC5zZXRWYXJGbGFnKCJlbWl0X3BrZ2RhdGEiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiTVVMVElMSUJfVkFSSUFOVFMiKQotICAgICAgICBkLnNldFZhckZsYWcoIndyaXRlX3NwZWNmaWxlIiwgInZhcmRlcHNleGNsdWRlIiwgIk1VTFRJTElCUyIpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiZW1pdF9wa2dkYXRhIiwgInZhcmRlcHNleGNsdWRlIiwgIiBNVUxUSUxJQl9WQVJJQU5UUyIpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygid3JpdGVfc3BlY2ZpbGUiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiIE1VTFRJTElCUyIpCiAgICAgZWxpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdwYWNrYWdlZ3JvdXAnLCBkKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpOgogICAgICAgICBiYi5lcnJvcigiUGxlYXNlIGVuc3VyZSByZWNpcGUgJXMgc2V0cyBQQUNLQUdFX0FSQ0ggYmVmb3JlIGluaGVyaXQgcGFja2FnZWdyb3VwIiAlIGQuZ2V0VmFyKCJGSUxFIikpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKaW5kZXggMThjNWI5Ni4uZWM4MGFkNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwpAQCAtMjIzLDYgKzIyMyw4IEBACiAgICAgaW1wb3J0IHNodXRpbAogCiAgICAgIyBGb3JjaWJseSBleHBhbmQgdGhlIHN5c3Jvb3QgcGF0aHMgYXMgd2UncmUgYWJvdXQgdG8gY2hhbmdlIFdPUktESVIKKyAgICBkLnNldFZhcignU1RBR0lOR19ESVJfSE9TVCcsIGQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9IT1NUJykpCisgICAgZC5zZXRWYXIoJ1NUQUdJTkdfRElSX1RBUkdFVCcsIGQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9UQVJHRVQnKSkKICAgICBkLnNldFZhcignUkVDSVBFX1NZU1JPT1QnLCBkLmdldFZhcignUkVDSVBFX1NZU1JPT1QnKSkKICAgICBkLnNldFZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgZC5nZXRWYXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScpKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwppbmRleCBhYzA0YTA3Li5lZmE0MDk4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKQEAgLTE0MSw3ICsxNDEsNyBAQAogCiBweXRob24gYXV0b3Rvb2xzX2FjbG9jYWxzICgpIHsKICAgICAjIFJlZnJlc2ggdmFyaWFibGUgd2l0aCBjYWNoZSBmaWxlcwotICAgIGQuc2V0VmFyKCJDT05GSUdfU0lURSIsIHNpdGVpbmZvX2dldF9maWxlcyhkLCBhY2xvY2FsY2FjaGU9VHJ1ZSkpCisgICAgZC5zZXRWYXIoIkNPTkZJR19TSVRFIiwgc2l0ZWluZm9fZ2V0X2ZpbGVzKGQsIHN5c3Jvb3RjYWNoZT1UcnVlKSkKIH0KIAogQ09ORklHVVJFX0ZJTEVTID0gIiR7U30vY29uZmlndXJlLmluICR7U30vY29uZmlndXJlLmFjICR7U30vY29uZmlnLmguaW4gJHtTfS9hY2luY2x1ZGUubTQgTWFrZWZpbGUuYW0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCmluZGV4IGQ5NWFmYjcuLmJkMGQ2ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCkBAIC02MSwyMiArNjEsMTUgQEAKIAogCiBkZWYgYmFzZV9kZXBfcHJlcGVuZChkKToKLSAgICAjCi0gICAgIyBJZGVhbGx5IHRoaXMgd2lsbCBjaGVjayBhIGZsYWcgc28gd2Ugd2lsbCBvcGVyYXRlIHByb3Blcmx5IGluCi0gICAgIyB0aGUgY2FzZSB3aGVyZSBob3N0ID09IGJ1aWxkID09IHRhcmdldCwgZm9yIG5vdyB3ZSBkb24ndCB3b3JrIGluCi0gICAgIyB0aGF0IGNhc2UgdGhvdWdoLgotICAgICMKKyAgICBpZiBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnLCBGYWxzZSk6CisgICAgICAgIHJldHVybiAiIgorICAgIHJldHVybiAiJHtCQVNFX0RFRkFVTFRfREVQU30iCiAKLSAgICBkZXBzID0gIiIKLSAgICAjIElOSElCSVRfREVGQVVMVF9ERVBTIGRvZXNuJ3QgYXBwbHkgdG8gdGhlIHBhdGNoIGNvbW1hbmQuICBXaGV0aGVyIG9yICBub3QKLSAgICAjIHdlIG5lZWQgdGhhdCBidWlsdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHBhdGNoIGZ1bmN0aW9uIC8gY2xhc3MsIG5vdAotICAgICMgdGhlIGFwcGxpY2F0aW9uLgotICAgIGlmIG5vdCBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnLCBGYWxzZSk6Ci0gICAgICAgIGlmIChkLmdldFZhcignSE9TVF9TWVMnKSAhPSBkLmdldFZhcignQlVJTERfU1lTJykpOgotICAgICAgICAgICAgZGVwcyArPSAiIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMgdmlydHVhbC9saWJjICIKLSAgICByZXR1cm4gZGVwcworQkFTRV9ERUZBVUxUX0RFUFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWNvbXBpbGVybGlicyB2aXJ0dWFsL2xpYmMiCiAKLUJBU0VERVBFTkRTID0gIiR7QGJhc2VfZGVwX3ByZXBlbmQoZCl9IgorQkFTRURFUEVORFMgPSAiIgorQkFTRURFUEVORFNfY2xhc3MtdGFyZ2V0ID0gIiR7QGJhc2VfZGVwX3ByZXBlbmQoZCl9IgorQkFTRURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiR7QGJhc2VfZGVwX3ByZXBlbmQoZCl9IgogCiBERVBFTkRTX3ByZXBlbmQ9IiR7QkFTRURFUEVORFN9ICIKIApAQCAtMTg1LDcgKzE3OCw3IEBACiAKIGRlZiBnZXRfbGF5ZXJzX2JyYW5jaF9yZXYoZCk6CiAgICAgbGF5ZXJzID0gKGQuZ2V0VmFyKCJCQkxBWUVSUyIpIG9yICIiKS5zcGxpdCgpCi0gICAgbGF5ZXJzX2JyYW5jaF9yZXYgPSBbIiUtMTdzID0gXCIlczolc1wiIiAlIChvcy5wYXRoLmJhc2VuYW1lKGkpLCBcCisgICAgbGF5ZXJzX2JyYW5jaF9yZXYgPSBbIiUtMjBzID0gXCIlczolc1wiIiAlIChvcy5wYXRoLmJhc2VuYW1lKGkpLCBcCiAgICAgICAgIGJhc2VfZ2V0X21ldGFkYXRhX2dpdF9icmFuY2goaSwgTm9uZSkuc3RyaXAoKSwgXAogICAgICAgICBiYXNlX2dldF9tZXRhZGF0YV9naXRfcmV2aXNpb24oaSwgTm9uZSkpIFwKICAgICAgICAgICAgIGZvciBpIGluIGxheWVyc10KQEAgLTIxMyw3ICsyMDYsNyBAQAogICAgIGZvciB2YXIgaW4gc3RhdHVzdmFyczoKICAgICAgICAgdmFsdWUgPSBkLmdldFZhcih2YXIpCiAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgeWllbGQgJyUtMTdzID0gIiVzIicgJSAodmFyLCB2YWx1ZSkKKyAgICAgICAgICAgIHlpZWxkICclLTIwcyA9ICIlcyInICUgKHZhciwgdmFsdWUpCiAKIGRlZiBidWlsZGNmZ19uZWVkZWR2YXJzKGQpOgogICAgIG5lZWRlZF92YXJzID0gb2UuZGF0YS50eXBlZF92YWx1ZSgiQlVJTERDRkdfTkVFREVEVkFSUyIsIGQpCkBAIC0yMjcsNyArMjIwLDcgQEAKICAgICAgICAgYmIuZmF0YWwoJ1RoZSBmb2xsb3dpbmcgdmFyaWFibGUocykgd2VyZSBub3Qgc2V0OiAlc1xuUGxlYXNlIHNldCB0aGVtIGRpcmVjdGx5LCBvciBjaG9vc2UgYSBNQUNISU5FIG9yIERJU1RSTyB0aGF0IHNldHMgdGhlbS4nICUgJywgJy5qb2luKHBlc3RlcnVzZXIpKQogCiBhZGRoYW5kbGVyIGJhc2VfZXZlbnRoYW5kbGVyCi1iYXNlX2V2ZW50aGFuZGxlcltldmVudG1hc2tdID0gImJiLmV2ZW50LkNvbmZpZ1BhcnNlZCBiYi5ldmVudC5CdWlsZFN0YXJ0ZWQgYmIuZXZlbnQuUmVjaXBlUHJlRmluYWxpc2UgYmIucnVucXVldWUuc2NlbmVRdWV1ZUNvbXBsZXRlIGJiLmV2ZW50LlJlY2lwZVBhcnNlZCIKK2Jhc2VfZXZlbnRoYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuQ29uZmlnUGFyc2VkIGJiLmV2ZW50Lk11bHRpQ29uZmlnUGFyc2VkIGJiLmV2ZW50LkJ1aWxkU3RhcnRlZCBiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSBiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlQ29tcGxldGUgYmIuZXZlbnQuUmVjaXBlUGFyc2VkIgogcHl0aG9uIGJhc2VfZXZlbnRoYW5kbGVyKCkgewogICAgIGltcG9ydCBiYi5ydW5xdWV1ZQogCkBAIC0yNDIsNiArMjM1LDE2IEBACiAgICAgICAgIHNldHVwX2hvc3R0b29sc19kaXIoZC5nZXRWYXIoJ0hPU1RUT09MU19ESVInKSwgJ0hPU1RUT09MUycsIGQpCiAgICAgICAgIHNldHVwX2hvc3R0b29sc19kaXIoZC5nZXRWYXIoJ0hPU1RUT09MU19ESVInKSwgJ0hPU1RUT09MU19OT05GQVRBTCcsIGQsIGZhdGFsPUZhbHNlKQogCisgICAgaWYgaXNpbnN0YW5jZShlLCBiYi5ldmVudC5NdWx0aUNvbmZpZ1BhcnNlZCk6CisgICAgICAgICMgV2UgbmVlZCB0byBleHBhbmQgU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyBpbiBlYWNoIG9mIHRoZSBtdWx0aWNvbmZpZyBkYXRhIHN0b3JlcworICAgICAgICAjIG93biBjb250ZXh0cyBzbyB0aGUgdmFyaWFibGVzIGdldCBleHBhbmRlZCBjb3JyZWN0bHkgZm9yIHRoYXQgYXJjaCwgdGhlbiBpbmplY3QgYmFjayBpbnRvCisgICAgICAgICMgdGhlIG1haW4gZGF0YSBzdG9yZS4KKyAgICAgICAgZGVwcyA9IFtdCisgICAgICAgIGZvciBjb25maWcgaW4gZS5tY2RhdGE6CisgICAgICAgICAgICBkZXBzLmFwcGVuZChlLm1jZGF0YVtjb25maWddLmdldFZhcigiU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyIpKQorICAgICAgICBkZXBzID0gIiAiLmpvaW4oZGVwcykKKyAgICAgICAgZS5tY2RhdGFbJyddLnNldFZhcigiU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyIsIGRlcHMpCisKICAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2ZW50LkJ1aWxkU3RhcnRlZCk6CiAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShlLmRhdGEpCiAgICAgICAgIHN0YXR1c2xpbmVzID0gW10KQEAgLTM5MSw3ICszOTQsNyBAQAogICAgICMgVGhlc2UgdGFrZSB0aGUgZm9ybToKICAgICAjCiAgICAgIyBQQUNLQUdFQ09ORklHID8/PSAiPGRlZmF1bHQgb3B0aW9ucz4iCi0gICAgIyBQQUNLQUdFQ09ORklHW2Zvb10gPSAiLS1lbmFibGUtZm9vLC0tZGlzYWJsZS1mb28sZm9vX2RlcGVuZHMsZm9vX3J1bnRpbWVfZGVwZW5kcyIKKyAgICAjIFBBQ0tBR0VDT05GSUdbZm9vXSA9ICItLWVuYWJsZS1mb28sLS1kaXNhYmxlLWZvbyxmb29fZGVwZW5kcyxmb29fcnVudGltZV9kZXBlbmRzLGZvb19ydW50aW1lX3JlY29tbWVuZHMiCiAgICAgcGtnY29uZmlnZmxhZ3MgPSBkLmdldFZhckZsYWdzKCJQQUNLQUdFQ09ORklHIikgb3Ige30KICAgICBpZiBwa2djb25maWdmbGFnczoKICAgICAgICAgcGtnY29uZmlnID0gKGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJykgb3IgIiIpLnNwbGl0KCkKQEAgLTQzMywxMiArNDM2LDEzIEBACiAKICAgICAgICAgZXh0cmFkZXBzID0gW10KICAgICAgICAgZXh0cmFyZGVwcyA9IFtdCisgICAgICAgIGV4dHJhcnJlY3MgPSBbXQogICAgICAgICBleHRyYWNvbmYgPSBbXQogICAgICAgICBmb3IgZmxhZywgZmxhZ3ZhbCBpbiBzb3J0ZWQocGtnY29uZmlnZmxhZ3MuaXRlbXMoKSk6CiAgICAgICAgICAgICBpdGVtcyA9IGZsYWd2YWwuc3BsaXQoIiwiKQogICAgICAgICAgICAgbnVtID0gbGVuKGl0ZW1zKQotICAgICAgICAgICAgaWYgbnVtID4gNDoKLSAgICAgICAgICAgICAgICBiYi5lcnJvcigiJXM6IFBBQ0tBR0VDT05GSUdbJXNdIE9ubHkgZW5hYmxlLGRpc2FibGUsZGVwZW5kLHJkZXBlbmQgY2FuIGJlIHNwZWNpZmllZCEiCisgICAgICAgICAgICBpZiBudW0gPiA1OgorICAgICAgICAgICAgICAgIGJiLmVycm9yKCIlczogUEFDS0FHRUNPTkZJR1slc10gT25seSBlbmFibGUsZGlzYWJsZSxkZXBlbmQscmRlcGVuZCxycmVjb21tZW5kIGNhbiBiZSBzcGVjaWZpZWQhIgogICAgICAgICAgICAgICAgICAgICAlIChkLmdldFZhcignUE4nKSwgZmxhZykpCiAKICAgICAgICAgICAgIGlmIGZsYWcgaW4gcGtnY29uZmlnOgpAQCAtNDQ2LDEyICs0NTAsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFkZXBzLmFwcGVuZChpdGVtc1syXSkKICAgICAgICAgICAgICAgICBpZiBudW0gPj0gNCBhbmQgaXRlbXNbM106CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhcmRlcHMuYXBwZW5kKGl0ZW1zWzNdKQorICAgICAgICAgICAgICAgIGlmIG51bSA+PSA1IGFuZCBpdGVtc1s0XToKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFycmVjcy5hcHBlbmQoaXRlbXNbNF0pCiAgICAgICAgICAgICAgICAgaWYgbnVtID49IDEgYW5kIGl0ZW1zWzBdOgogICAgICAgICAgICAgICAgICAgICBleHRyYWNvbmYuYXBwZW5kKGl0ZW1zWzBdKQogICAgICAgICAgICAgZWxpZiBudW0gPj0gMiBhbmQgaXRlbXNbMV06CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY29uZi5hcHBlbmQoaXRlbXNbMV0pCiAgICAgICAgIGFwcGVuZFZhcignREVQRU5EUycsIGV4dHJhZGVwcykKICAgICAgICAgYXBwZW5kVmFyKCdSREVQRU5EU18ke1BOfScsIGV4dHJhcmRlcHMpCisgICAgICAgIGFwcGVuZFZhcignUlJFQ09NTUVORFNfJHtQTn0nLCBleHRyYXJyZWNzKQogICAgICAgICBhcHBlbmRWYXIoJ1BBQ0tBR0VDT05GSUdfQ09ORkFSR1MnLCBleHRyYWNvbmYpCiAKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCkBAIC02MTcsMTYgKzYyNCwxNiBAQAogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb191bnBhY2snLCAnZGVwZW5kcycsICcgbHppcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKICAgICAgICAgIyAqLnh6IHNob3VsZCBERVBFTkQgb24geHotbmF0aXZlIGZvciB1bnBhY2tpbmcKLSAgICAgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCcueHonKToKKyAgICAgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCcueHonKSBvciBwYXRoLmVuZHN3aXRoKCcudHh6Jyk6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3VucGFjaycsICdkZXBlbmRzJywgJyB4ei1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKICAgICAgICAgIyAuemlwIHNob3VsZCBERVBFTkQgb24gdW56aXAtbmF0aXZlIGZvciB1bnBhY2tpbmcKLSAgICAgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCcuemlwJyk6CisgICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnppcCcpIG9yIHBhdGguZW5kc3dpdGgoJy5qYXInKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIHVuemlwLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAogICAgICAgICAjIGZpbGUgaXMgbmVlZGVkIGJ5IHJwbTJjcGlvLnNoCi0gICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnNyYy5ycG0nKToKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIGZpbGUtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQorICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy5ycG0nKToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAogICAgIGlmIG5lZWRzcmNyZXY6CiAgICAgICAgIGQuc2V0VmFyKCJTUkNQViIsICIke0BiYi5mZXRjaDIuZ2V0X3NyY3JldihkKX0iKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKaW5kZXggMzgyM2M2Ni4uN2E1NTM0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCkBAIC0xOTIsNyArMTkyLDcgQEAKICAgICBwZSA9IGQuZ2V0VmFyKCdQRScpIG9yICIwIgogICAgIHB2ID0gZC5nZXRWYXIoJ1BWJykKICAgICBwciA9IGQuZ2V0VmFyKCdQUicpCi0gICAgbGF5ZXIgPSBiYi51dGlscy5nZXRfZmlsZV9sYXllcihkLmdldFZhcignRklMRScsIFRydWUpLCBkKQorICAgIGxheWVyID0gYmIudXRpbHMuZ2V0X2ZpbGVfbGF5ZXIoZC5nZXRWYXIoJ0ZJTEUnKSwgZCkKIAogICAgIHBrZ2RhdGFfZGlyID0gZC5nZXRWYXIoJ1BLR0RBVEFfRElSJykKICAgICBwYWNrYWdlcyA9ICIiCkBAIC0zNDgsNiArMzQ4LDcgQEAKICAgICAgICAgZi53cml0ZSh1IlBBQ0tBR0VTID0gJXNcbiIgJSAgcmNwaW5mby5wYWNrYWdlcykKICAgICAgICAgZi53cml0ZSh1IkxBWUVSID0gJXNcbiIgJSAgcmNwaW5mby5sYXllcikKIAorICAgIHdyaXRlX2xhdGVzdF9zcmNyZXYoZCwgcGtnaGlzdGRpcikKIAogZGVmIHdyaXRlX3BrZ2hpc3RvcnkocGtnaW5mbywgZCk6CiAgICAgYmIuZGVidWcoMiwgIldyaXRpbmcgcGFja2FnZSBoaXN0b3J5IGZvciBwYWNrYWdlICVzIiAlIHBrZ2luZm8ubmFtZSkKQEAgLTYwMCwyNiArNjAxLDE5IEBACiAKIHB5dGhvbiBidWlsZGhpc3RvcnlfZ2V0X2V4dHJhX3Nka2luZm8oKSB7CiAgICAgaW1wb3J0IG9wZXJhdG9yCi0gICAgaW1wb3J0IG1hdGgKKyAgICBmcm9tIG9lLnNkayBpbXBvcnQgZ2V0X2V4dHJhX3Nka2luZm8KKworICAgIHNzdGF0ZV9kaXIgPSBkLmV4cGFuZCgnJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L3NzdGF0ZS1jYWNoZScpCisgICAgZXh0cmFfaW5mbyA9IGdldF9leHRyYV9zZGtpbmZvKHNzdGF0ZV9kaXIpCiAKICAgICBpZiBkLmdldFZhcignQkJfQ1VSUkVOVFRBU0snKSA9PSAncG9wdWxhdGVfc2RrX2V4dCcgYW5kIFwKICAgICAgICAgICAgICJzZGsiIGluIChkLmdldFZhcignQlVJTERISVNUT1JZX0ZFQVRVUkVTJykgb3IgIiIpLnNwbGl0KCk6Ci0gICAgICAgIHRhc2tzaXplcyA9IHt9Ci0gICAgICAgIGZpbGVzaXplcyA9IHt9Ci0gICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGQuZXhwYW5kKCcke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vc3N0YXRlLWNhY2hlJykpOgotICAgICAgICAgICAgZm9yIGZuIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcudGd6Jyk6Ci0gICAgICAgICAgICAgICAgICAgIGZzaXplID0gaW50KG1hdGguY2VpbChmbG9hdChvcy5wYXRoLmdldHNpemUob3MucGF0aC5qb2luKHJvb3QsIGZuKSkpIC8gMTAyNCkpCi0gICAgICAgICAgICAgICAgICAgIHRhc2sgPSBmbi5yc3BsaXQoJzonLCAxKVsxXS5zcGxpdCgnXycsIDEpWzFdLnNwbGl0KCcuJylbMF0KLSAgICAgICAgICAgICAgICAgICAgb3JpZ3RvdGFsID0gdGFza3NpemVzLmdldCh0YXNrLCAwKQotICAgICAgICAgICAgICAgICAgICB0YXNrc2l6ZXNbdGFza10gPSBvcmlndG90YWwgKyBmc2l6ZQotICAgICAgICAgICAgICAgICAgICBmaWxlc2l6ZXNbZm5dID0gZnNpemUKICAgICAgICAgd2l0aCBvcGVuKGQuZXhwYW5kKCcke0JVSUxESElTVE9SWV9ESVJfU0RLfS9zc3RhdGUtcGFja2FnZS1zaXplcy50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZmlsZXNpemVzX3NvcnRlZCA9IHNvcnRlZChmaWxlc2l6ZXMuaXRlbXMoKSwga2V5PW9wZXJhdG9yLml0ZW1nZXR0ZXIoMSwgMCksIHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgICAgIGZpbGVzaXplc19zb3J0ZWQgPSBzb3J0ZWQoZXh0cmFfaW5mb1snZmlsZXNpemVzJ10uaXRlbXMoKSwga2V5PW9wZXJhdG9yLml0ZW1nZXR0ZXIoMSwgMCksIHJldmVyc2U9VHJ1ZSkKICAgICAgICAgICAgIGZvciBmbiwgc2l6ZSBpbiBmaWxlc2l6ZXNfc29ydGVkOgogICAgICAgICAgICAgICAgIGYud3JpdGUoJyUxMGQgS2lCICVzXG4nICUgKHNpemUsIGZuKSkKICAgICAgICAgd2l0aCBvcGVuKGQuZXhwYW5kKCcke0JVSUxESElTVE9SWV9ESVJfU0RLfS9zc3RhdGUtdGFzay1zaXplcy50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgdGFza3NpemVzX3NvcnRlZCA9IHNvcnRlZCh0YXNrc2l6ZXMuaXRlbXMoKSwga2V5PW9wZXJhdG9yLml0ZW1nZXR0ZXIoMSwgMCksIHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgICAgIHRhc2tzaXplc19zb3J0ZWQgPSBzb3J0ZWQoZXh0cmFfaW5mb1sndGFza3NpemVzJ10uaXRlbXMoKSwga2V5PW9wZXJhdG9yLml0ZW1nZXR0ZXIoMSwgMCksIHJldmVyc2U9VHJ1ZSkKICAgICAgICAgICAgIGZvciB0YXNrLCBzaXplIGluIHRhc2tzaXplc19zb3J0ZWQ6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgnJTEwZCBLaUIgJXNcbicgJSAoc2l6ZSwgdGFzaykpCiB9CkBAIC03MTUsMjAgKzcwOSwyMyBAQAogCiAKIGRlZiBidWlsZGhpc3RvcnlfZ2V0X2NtZGxpbmUoZCk6Ci0gICAgaWYgc3lzLmFyZ3ZbMF0uZW5kc3dpdGgoJ2Jpbi9iaXRiYWtlJyk6Ci0gICAgICAgIGJpbmNtZCA9ICdiaXRiYWtlJwotICAgIGVsc2U6Ci0gICAgICAgIGJpbmNtZCA9IHN5cy5hcmd2WzBdCi0gICAgcmV0dXJuICclcyAlcycgJSAoYmluY21kLCAnICcuam9pbihzeXMuYXJndlsxOl0pKQorICAgIGFyZ3YgPSBkLmdldFZhcignQkJfQ01ETElORScsIEZhbHNlKQorICAgIGlmIGFyZ3Y6CisgICAgICAgIGlmIGFyZ3ZbMF0uZW5kc3dpdGgoJ2Jpbi9iaXRiYWtlJyk6CisgICAgICAgICAgICBiaW5jbWQgPSAnYml0YmFrZScKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJpbmNtZCA9IGFyZ3ZbMF0KKyAgICAgICAgcmV0dXJuICclcyAlcycgJSAoYmluY21kLCAnICcuam9pbihhcmd2WzE6XSkpCisgICAgcmV0dXJuICcnCiAKIAogYnVpbGRoaXN0b3J5X3NpbmdsZV9jb21taXQoKSB7CiAJaWYgWyAiJDMiID0gIiIgXSA7IHRoZW4KIAkJY29tbWl0b3B0cz0iJHtCVUlMREhJU1RPUllfRElSfS8gLS1hbGxvdy1lbXB0eSIKLQkJaXRlbT0iTm8gY2hhbmdlcyIKKwkJc2hvcnRsb2dwcmVmaXg9Ik5vIGNoYW5nZXM6ICIKIAllbHNlCi0JCWNvbW1pdG9wdHM9IiQzIG1ldGFkYXRhLXJldnMiCi0JCWl0ZW09IiQzIgorCQljb21taXRvcHRzPSIiCisJCXNob3J0bG9ncHJlZml4PSIiCiAJZmkKIAlpZiBbICIke0JVSUxESElTVE9SWV9CVUlMRF9GQUlMVVJFU30iID0gIjAiIF0gOyB0aGVuCiAJCXJlc3VsdD0ic3VjY2VlZGVkIgpAQCAtNzQ1LDcgKzc0Miw3IEBACiAJZXNhYwogCWNvbW1pdG1zZ2ZpbGU9YG1rdGVtcGAKIAljYXQgPiAkY29tbWl0bXNnZmlsZSA8PCBFTkQKLSRpdGVtOiBCdWlsZCAke0JVSUxETkFNRX0gb2YgJHtESVNUUk99ICR7RElTVFJPX1ZFUlNJT059IGZvciBtYWNoaW5lICR7TUFDSElORX0gb24gJDIKKyR7c2hvcnRsb2dwcmVmaXh9QnVpbGQgJHtCVUlMRE5BTUV9IG9mICR7RElTVFJPfSAke0RJU1RST19WRVJTSU9OfSBmb3IgbWFjaGluZSAke01BQ0hJTkV9IG9uICQyCiAKIGNtZDogJDEKIApAQCAtNzg5LDkgKzc4Niw3IEBACiAJCQlnaXQgYWRkIC1BIC4KIAkJCSMgcG9yY2VsYWluIG91dHB1dCBsb29rcyBsaWtlICI/PyBwYWNrYWdlcy9mb28vYmFyIgogCQkJIyBFbnN1cmUgd2UgY29tbWl0IG1ldGFkYXRhLXJldnMgd2l0aCB0aGUgZmlyc3QgY29tbWl0Ci0JCQlmb3IgZW50cnkgaW4gYGVjaG8gIiRyZXBvc3RhdHVzIiB8IGF3ayAne3ByaW50ICQyfScgfCBhd2sgLUYvICd7cHJpbnQgJDF9JyB8IHNvcnQgfCB1bmlxYCA7IGRvCi0JCQkJYnVpbGRoaXN0b3J5X3NpbmdsZV9jb21taXQgIiRDTURMSU5FIiAiJEhPU1ROQU1FIiAiJGVudHJ5IgotCQkJZG9uZQorCQkJYnVpbGRoaXN0b3J5X3NpbmdsZV9jb21taXQgIiRDTURMSU5FIiAiJEhPU1ROQU1FIiBkdW1teQogCQkJZ2l0IGdjIC0tYXV0byAtLXF1aWV0CiAJCWVsc2UKIAkJCWJ1aWxkaGlzdG9yeV9zaW5nbGVfY29tbWl0ICIkQ01ETElORSIgIiRIT1NUTkFNRSIKQEAgLTgyOSw2ICs4MjQsOCBAQAogICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gZ2V0YXR0cihlLCAnX2ludGVycnVwdGVkJywgMCkKICAgICAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdCVUlMREhJU1RPUllfQlVJTERfSU5URVJSVVBURUQnLCBzdHIoaW50ZXJydXB0ZWQpKQogICAgICAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygiYnVpbGRoaXN0b3J5X2NvbW1pdCIsIGxvY2FsZGF0YSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYmIubm90ZSgiTm8gY29tbWl0IHNpbmNlIEJVSUxESElTVE9SWV9DT01NSVQgIT0gJzEnIikKIH0KIAogYWRkaGFuZGxlciBidWlsZGhpc3RvcnlfZXZlbnRoYW5kbGVyCkBAIC04NzQsNyArODcxLDEwIEBACiBkb19mZXRjaFtwb3N0ZnVuY3NdICs9ICJ3cml0ZV9zcmNyZXYiCiBkb19mZXRjaFt2YXJkZXBzZXhjbHVkZV0gKz0gIndyaXRlX3NyY3JldiIKIHB5dGhvbiB3cml0ZV9zcmNyZXYoKSB7Ci0gICAgcGtnaGlzdGRpciA9IGQuZ2V0VmFyKCdCVUlMREhJU1RPUllfRElSX1BBQ0tBR0UnKQorICAgIHdyaXRlX2xhdGVzdF9zcmNyZXYoZCwgZC5nZXRWYXIoJ0JVSUxESElTVE9SWV9ESVJfUEFDS0FHRScpKQorfQorCitkZWYgd3JpdGVfbGF0ZXN0X3NyY3JldihkLCBwa2doaXN0ZGlyKToKICAgICBzcmNyZXZmaWxlID0gb3MucGF0aC5qb2luKHBrZ2hpc3RkaXIsICdsYXRlc3Rfc3JjcmV2JykKIAogICAgIHNyY3JldnMsIHRhZ19zcmNyZXZzID0gX2dldF9zcmNyZXZfdmFsdWVzKGQpCkBAIC05MTIsNCArOTEyLDMzIEBACiAgICAgZWxzZToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3JjcmV2ZmlsZSk6CiAgICAgICAgICAgICBvcy5yZW1vdmUoc3JjcmV2ZmlsZSkKKworZG9fdGVzdGltYWdlW3Bvc3RmdW5jc10gKz0gIndyaXRlX3B0ZXN0X3Jlc3VsdCIKK2RvX3Rlc3RpbWFnZVt2YXJkZXBzZXhjbHVkZV0gKz0gIndyaXRlX3B0ZXN0X3Jlc3VsdCIKKworcHl0aG9uIHdyaXRlX3B0ZXN0X3Jlc3VsdCgpIHsKKyAgICB3cml0ZV9sYXRlc3RfcHRlc3RfcmVzdWx0KGQsIGQuZ2V0VmFyKCdCVUlMREhJU1RPUllfRElSJykpCiB9CisKK2RlZiB3cml0ZV9sYXRlc3RfcHRlc3RfcmVzdWx0KGQsIGhpc3RkaXIpOgorICAgIGltcG9ydCBnbG9iCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICB0ZXN0X2xvZ19kaXIgPSBkLmdldFZhcignVEVTVF9MT0dfRElSJykKKyAgICBpbnB1dF9wdGVzdCA9IG9zLnBhdGguam9pbih0ZXN0X2xvZ19kaXIsICdwdGVzdF9sb2cnKQorICAgIG91dHB1dF9wdGVzdCA9IG9zLnBhdGguam9pbihoaXN0ZGlyLCAncHRlc3QnKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKGlucHV0X3B0ZXN0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBMb2NrIGl0IGF2b2lkIHJhY2UgaXNzdWUKKyAgICAgICAgICAgIGxvY2sgPSBiYi51dGlscy5sb2NrZmlsZShvdXRwdXRfcHRlc3QgKyAiL3B0ZXN0LmxvY2siKQorICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG91dHB1dF9wdGVzdCkKKyAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoaW5wdXRfcHRlc3QsIG91dHB1dF9wdGVzdCkKKyAgICAgICAgICAgICMgU29ydCB0ZXN0IHJlc3VsdAorICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiBnbG9iLmdsb2IoJyVzL3Bhc3MuZmFpbC4qJyAlIG91dHB1dF9wdGVzdCk6CisgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgJ1Byb2Nlc3NpbmcgJXMnICUgcmVzdWx0KQorICAgICAgICAgICAgICAgIGNtZCA9IFsnc29ydCcsIHJlc3VsdCwgJy1vJywgcmVzdWx0XQorICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICdSdW5uaW5nICVzJyAlIGNtZCkKKyAgICAgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoY21kKQorICAgICAgICAgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgICAgICAgICBiYi5lcnJvcignRmFpbGVkIHRvIHJ1biAlcyEnICUgY21kKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsb2NrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jY2FjaGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY2NhY2hlLmJiY2xhc3MKaW5kZXggZDU4YzhmNi4uOTYwOTAyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jY2FjaGUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NjYWNoZS5iYmNsYXNzCkBAIC0xLDYgKzEsNSBAQAogQ0NBQ0hFID0gIiR7QGJiLnV0aWxzLndoaWNoKGQuZ2V0VmFyKCdQQVRIJyksICdjY2FjaGUnKSBhbmQgJ2NjYWNoZSAnfSIKIGV4cG9ydCBDQ0FDSEVfRElSID89ICIke1RNUERJUn0vY2NhY2hlLyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9LyR7UE59IgotQ0NBQ0hFX0RJU0FCTEVbdW5leHBvcnRdID0gIjEiCiAKICMgV2UgbmVlZCB0byBzdG9wIGNjYWNoZSBjb25zaWRlcmluZyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb3IgdGhlCiAjIGRlYnVnLXByZWZpeC1tYXAgdGFyZ2V0IGRpcmVjdG9yeSB0byBiZSBzaWduaWZpY2FudCB3aGVuIGNhbGN1bGF0aW5nCkBAIC0xMCw2ICs5LDMgQEAKIAogREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBjY2FjaGUtbmF0aXZlIgogREVQRU5EU1t2YXJkZXB2YWx1ZWV4Y2x1ZGVdID0gIiBjY2FjaGUtbmF0aXZlIgotCi1kb19jb25maWd1cmVbZGlyc10gPSsgIiR7Q0NBQ0hFX0RJUn0iCi1kb19rZXJuZWxfY29uZmlnbWVbZGlyc10gPSsgIiR7Q0NBQ0hFX0RJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKaW5kZXggMTJkZjYxNy4uYWMyYzE1MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcwpAQCAtMzEsNiArMzEsOSBAQAogCiBFWFRSQV9PRUNNQUtFX2FwcGVuZCA9ICIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIAorRVhUUkFfT0VDTUFLRV9CVUlMRF9wcmVwZW5kX3Rhc2stY29tcGlsZSA9ICIke1BBUkFMTEVMX01BS0V9ICIKK0VYVFJBX09FQ01BS0VfQlVJTERfcHJlcGVuZF90YXNrLWluc3RhbGwgPSAiJHtQQVJBTExFTF9NQUtFSU5TVH0gIgorCiAjIENNYWtlIGV4cGVjdHMgdGFyZ2V0IGFyY2hpdGVjdHVyZXMgaW4gdGhlIGZvcm1hdCBvZiB1bmFtZSgyKSwKICMgd2hpY2ggZG8gbm90IGFsd2F5cyBtYXRjaCBUQVJHRVRfQVJDSCwgc28gYWxsIHRoZSBuZWNlc3NhcnkKICMgY29udmVyc2lvbnMgc2hvdWxkIGhhcHBlbiBoZXJlLgpAQCAtMTM1LDEzICsxMzgsMTMgQEAKIAogZG9fY29tcGlsZVtwcm9ncmVzc10gPSAicGVyY2VudCIKIGNtYWtlX2RvX2NvbXBpbGUoKSAgewotCWNkICR7Qn0KLQliYXNlX2RvX2NvbXBpbGUgVkVSQk9TRT0xCisJYmJub3RlIFZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CisJVkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KIH0KIAogY21ha2VfZG9faW5zdGFsbCgpIHsKLQljZCAke0J9Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJYmJub3RlIERFU1RESVI9JyR7RH0nIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tdGFyZ2V0IGluc3RhbGwgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCURFU1RESVI9JyR7RH0nIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tdGFyZ2V0IGluc3RhbGwgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQogfQogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwgZG9fZ2VuZXJhdGVfdG9vbGNoYWluX2ZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21sMS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWwxLmJiY2xhc3MKaW5kZXggMzhlNjYxMy4uOTI2NzQ3ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWwxLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWwxLmJiY2xhc3MKQEAgLTY0LDcgKzY0LDggQEAKICAgICBpZiBpc2RpZmY6CiAgICAgICAgIHN0YXRlbWVudCA9ICdkaWZmIC0tdW5jaGFuZ2VkLWxpbmUtZm9ybWF0PSAtLW9sZC1saW5lLWZvcm1hdD0gLS1uZXctbGluZS1mb3JtYXQ9IiVMIiAnICsgY29uZmlnb3JpZyArICcgJyArIGNvbmZpZyArICc+JyArIGZyYWdtZW50CiAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChzdGF0ZW1lbnQsIHNoZWxsPVRydWUpCi0KKyAgICAgICAgIyBObyBuZWVkIHRvIGNoZWNrIHRoZSBleGl0IGNvZGUgYXMgd2Uga25vdyBpdCdzIGdvaW5nIHRvIGJlCisgICAgICAgICMgbm9uLXplcm8sIGJ1dCB0aGF0J3Mgd2hhdCB3ZSBleHBlY3QuCiAgICAgICAgIHNodXRpbC5jb3B5KGNvbmZpZ29yaWcsIGNvbmZpZykKIAogICAgICAgICBiYi5wbGFpbigiQ29uZmlnIGZyYWdtZW50IGhhcyBiZWVuIGR1bXBlZCBpbnRvOlxuICVzIiAlIGZyYWdtZW50KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCmluZGV4IDQ5Mzg4ZDQuLjE5Mjg0NTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKQEAgLTE1LDcgKzE1LDcgQEAKICMgVXBkYXRlIEJBU0VfUEFDS0FHRV9BUkNIIGFuZCBQQUNLQUdFX0FSQ0hTCiAjCiBQQUNLQUdFX0FSQ0ggPSAiJHtTREtfQVJDSH0tJHtTREtQS0dTVUZGSVh9IgotQkFTRUNBTkFESUFORVhUUkFPUyA/PSAibGludXgtdWNsaWJjIGxpbnV4LW11c2wiCitCQVNFQ0FOQURJQU5FWFRSQU9TID89ICJsaW51eC1tdXNsIgogQ0FOQURJQU5FWFRSQU9TID0gIiR7QkFTRUNBTkFESUFORVhUUkFPU30iCiBDQU5BRElBTkVYVFJBVkVORE9SID0gIiIKIE1PRElGWVRPUyA/Pz0gIjEiCkBAIC0zNiwxMSArMzYsOSBAQAogICAgIHRvcyA9IGQuZ2V0VmFyKCJUQVJHRVRfT1MiKQogICAgIHdoaXRlbGlzdCA9IFtdCiAgICAgZXh0cmFsaWJjcyA9IFsiIl0KLSAgICBpZiAidWNsaWJjIiBpbiBkLmdldFZhcigiQkFTRUNBTkFESUFORVhUUkFPUyIpOgotICAgICAgICBleHRyYWxpYmNzLmFwcGVuZCgidWNsaWJjIikKICAgICBpZiAibXVzbCIgaW4gZC5nZXRWYXIoIkJBU0VDQU5BRElBTkVYVFJBT1MiKToKICAgICAgICAgZXh0cmFsaWJjcy5hcHBlbmQoIm11c2wiKQotICAgIGZvciB2YXJpYW50IGluIFsiIiwgInNwZSIsICJ4MzIiLCAiZWFiaSIsICJuMzIiXToKKyAgICBmb3IgdmFyaWFudCBpbiBbIiIsICJzcGUiLCAieDMyIiwgImVhYmkiLCAibjMyIiwgImlscDMyIl06CiAgICAgICAgIGZvciBsaWJjIGluIGV4dHJhbGliY3M6CiAgICAgICAgICAgICBlbnRyeSA9ICJsaW51eCIKICAgICAgICAgICAgIGlmIHZhcmlhbnQgYW5kIGxpYmM6CkBAIC04MCw3ICs3OCw3IEBACiAgICAgICAgIGZvciBleHRyYW9zIGluIGQuZ2V0VmFyKCJCQVNFQ0FOQURJQU5FWFRSQU9TIikuc3BsaXQoKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiICIgKyBleHRyYW9zICsgIm4zMiIpCiAgICAgaWYgdGFyY2ggPT0gImFybSIgb3IgdGFyY2ggPT0gImFybWViIjoKLSAgICAgICAgZC5hcHBlbmRWYXIoIkNBTkFESUFORVhUUkFPUyIsICIgbGludXgtZ251ZWFiaSBsaW51eC1tdXNsZWFiaSBsaW51eC11Y2xpYmNlYWJpIikKKyAgICAgICAgZC5hcHBlbmRWYXIoIkNBTkFESUFORVhUUkFPUyIsICIgbGludXgtZ251ZWFiaSBsaW51eC1tdXNsZWFiaSIpCiAgICAgICAgIGQuc2V0VmFyKCJUQVJHRVRfT1MiLCAibGludXgtZ251ZWFiaSIpCiAgICAgZWxzZToKICAgICAgICAgZC5zZXRWYXIoIlRBUkdFVF9PUyIsICJsaW51eCIpCkBAIC0xMTUsMTEgKzExMyw2IEBACiBIT1NUX0xEX0FSQ0ggPSAiJHtTREtfTERfQVJDSH0iCiBIT1NUX0FTX0FSQ0ggPSAiJHtTREtfQVNfQVJDSH0iCiAKLVRBUkdFVF9DUFBGTEFHUyA9ICIke0JVSUxEU0RLX0NQUEZMQUdTfSIKLVRBUkdFVF9DRkxBR1MgPSAiJHtCVUlMRFNES19DRkxBR1N9IgotVEFSR0VUX0NYWEZMQUdTID0gIiR7QlVJTERTREtfQ1hYRkxBR1N9IgotVEFSR0VUX0xERkxBR1MgPSAiJHtCVUlMRFNES19MREZMQUdTfSIKLQogI2Fzc2lnbiBEUEtHX0FSQ0gKIERQS0dfQVJDSCA9ICIke0BkZWJpYW5fYXJjaF9tYXAoZC5nZXRWYXIoJ1NES19BUkNIJyksICcnKX0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwppbmRleCA0ZmViMDFlLi5kMjE3NzE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCkBAIC01MCw3ICs1MCw3IEBACiAjIFBhdGggbWFuZ2xpbmcgbmVlZGVkIGJ5IHRoZSBjcm9zcyBwYWNrYWdpbmcKICMgTm90ZSB0aGF0IHdlIHVzZSA6PSBoZXJlIHRvIGVuc3VyZSB0aGF0IGxpYmRpciBhbmQgaW5jbHVkZWRpciBhcmUKICMgdGFyZ2V0IHBhdGhzLgotdGFyZ2V0X2Jhc2VfcHJlZml4IDo9ICIke2Jhc2VfcHJlZml4fSIKK3RhcmdldF9iYXNlX3ByZWZpeCA6PSAiJHtyb290X3ByZWZpeH0iCiB0YXJnZXRfcHJlZml4IDo9ICIke3ByZWZpeH0iCiB0YXJnZXRfZXhlY19wcmVmaXggOj0gIiR7ZXhlY19wcmVmaXh9IgogdGFyZ2V0X2Jhc2VfbGliZGlyID0gIiR7dGFyZ2V0X2Jhc2VfcHJlZml4fS8ke2Jhc2VsaWJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKaW5kZXggMTNlYzYyZS4uYmMyZjAzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCkBAIC04Myw2ICs4MywxMSBAQAogCiAgICAgaW1wb3J0IHNodXRpbAogCisgICAgaWYgZC5nZXRWYXIoIkNWRV9DSEVDS19DT1BZX0ZJTEVTIikgPT0gIjEiOgorICAgICAgICBkZXBsb3lfZmlsZSA9IG9zLnBhdGguam9pbihkLmdldFZhcigiQ1ZFX0NIRUNLX0RJUiIpLCBkLmdldFZhcigiUE4iKSkKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGVwbG95X2ZpbGUpOgorICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKGRlcGxveV9maWxlKQorCiAgICAgaWYgb3MucGF0aC5leGlzdHMoZC5nZXRWYXIoIkNWRV9DSEVDS19UTVBfRklMRSIpKToKICAgICAgICAgYmIubm90ZSgiV3JpdGluZyByb290ZnMgQ1ZFIG1hbmlmZXN0IikKICAgICAgICAgZGVwbG95X2RpciA9IGQuZ2V0VmFyKCJERVBMT1lfRElSX0lNQUdFIikKQEAgLTEwMiw2ICsxMDcsNyBAQAogfQogCiBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORF9wcmVwZW5kID0gIiR7QCdjdmVfY2hlY2tfd3JpdGVfcm9vdGZzX21hbmlmZXN0OyAnIGlmIGQuZ2V0VmFyKCdDVkVfQ0hFQ0tfQ1JFQVRFX01BTklGRVNUJykgPT0gJzEnIGVsc2UgJyd9IgorZG9fcm9vdGZzW3JlY3JkZXB0YXNrXSArPSAiJHtAJ2RvX2N2ZV9jaGVjaycgaWYgZC5nZXRWYXIoJ0NWRV9DSEVDS19DUkVBVEVfTUFOSUZFU1QnKSA9PSAnMScgZWxzZSAnJ30iCiAKIGRlZiBnZXRfcGF0Y2hlc19jdmVzKGQpOgogICAgICIiIgpAQCAtMTEyLDEwICsxMTgsMjQgQEAKIAogICAgIHBuID0gZC5nZXRWYXIoIlBOIikKICAgICBjdmVfbWF0Y2ggPSByZS5jb21waWxlKCJDVkU6KCBDVkVcLVxkezR9XC1cZCspKyIpCisKKyAgICAjIE1hdGNoZXMgbGFzdCBDVkUtMTIzNC0yMTE0MzIgaW4gdGhlIGZpbGUgbmFtZSwgYWxzbyBpZiB3cml0dGVuCisgICAgIyB3aXRoIHNtYWxsIGxldHRlcnMuIE5vdCBzdXBwb3J0aW5nIG11bHRpcGxlIENWRSBpZCdzIGluIGEgc2luZ2xlCisgICAgIyBmaWxlIG5hbWUuCisgICAgY3ZlX2ZpbGVfbmFtZV9tYXRjaCA9IHJlLmNvbXBpbGUoIi4qKFtDY11bVnZdW0VlXVwtXGR7NH1cLVxkKykiKQorCiAgICAgcGF0Y2hlZF9jdmVzID0gc2V0KCkKICAgICBiYi5kZWJ1ZygyLCAiTG9va2luZyBmb3IgcGF0Y2hlcyB0aGF0IHNvbHZlcyBDVkVzIGZvciAlcyIgJSBwbikKICAgICBmb3IgdXJsIGluIHNyY19wYXRjaGVzKGQpOgogICAgICAgICBwYXRjaF9maWxlID0gYmIuZmV0Y2guZGVjb2RldXJsKHVybClbMl0KKworICAgICAgICAjIENoZWNrIHBhdGNoIGZpbGUgbmFtZSBmb3IgQ1ZFIElECisgICAgICAgIGZuYW1lX21hdGNoID0gY3ZlX2ZpbGVfbmFtZV9tYXRjaC5zZWFyY2gocGF0Y2hfZmlsZSkKKyAgICAgICAgaWYgZm5hbWVfbWF0Y2g6CisgICAgICAgICAgICBjdmUgPSBmbmFtZV9tYXRjaC5ncm91cCgxKS51cHBlcigpCisgICAgICAgICAgICBwYXRjaGVkX2N2ZXMuYWRkKGN2ZSkKKyAgICAgICAgICAgIGJiLmRlYnVnKDIsICJGb3VuZCBDVkUgJXMgZnJvbSBwYXRjaCBmaWxlIG5hbWUgJXMiICUgKGN2ZSwgcGF0Y2hfZmlsZSkpCisKICAgICAgICAgd2l0aCBvcGVuKHBhdGNoX2ZpbGUsICJyIiwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwYXRjaF90ZXh0ID0gZi5yZWFkKCkKQEAgLTEzNCw3ICsxNTQsNyBAQAogICAgICAgICAgICAgZm9yIGN2ZSBpbiBjdmVzLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgIlBhdGNoICVzIHNvbHZlcyAlcyIgJSAocGF0Y2hfZmlsZSwgY3ZlKSkKICAgICAgICAgICAgICAgICBwYXRjaGVkX2N2ZXMuYWRkKGN2ZSkKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxpZiBub3QgZm5hbWVfbWF0Y2g6CiAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiUGF0Y2ggJXMgZG9lc24ndCBzb2x2ZSBDVkVzIiAlIHBhdGNoX2ZpbGUpCiAKICAgICByZXR1cm4gcGF0Y2hlZF9jdmVzCkBAIC0xNDksNyArMTY5LDcgQEAKICAgICBjdmVzX3BhdGNoZWQgPSBbXQogICAgIGN2ZXNfdW5wYXRjaGVkID0gW10KICAgICBicG4gPSBkLmdldFZhcigiQ1ZFX1BST0RVQ1QiKQotICAgIHB2ID0gZC5nZXRWYXIoIlBWIikuc3BsaXQoImdpdCsiKVswXQorICAgIHB2ID0gZC5nZXRWYXIoIlBWIikuc3BsaXQoIitnaXQiKVswXQogICAgIGN2ZXMgPSAiICIuam9pbihwYXRjaGVkX2N2ZXMpCiAgICAgY3ZlX2RiX2RpciA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRElSIikKICAgICBjdmVfd2hpdGVsaXN0ID0gYXN0LmxpdGVyYWxfZXZhbChkLmdldFZhcigiQ1ZFX0NIRUNLX0NWRV9XSElURUxJU1QiKSkKQEAgLTE3MSw3ICsxOTEsNyBAQAogICAgICAgICAgICAgZi53cml0ZSgiJXMsJXMsJXMsIiAlIChicG4sIHB2LCBjdmVzKSkKICAgICAgICAgY21kLmFwcGVuZChmYXV4KQogCi0gICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgYmIuZGVidWcoMiwgIk91dHB1dCBvZiBjb21tYW5kICVzOlxuJXMiICUgKCJcbiIuam9pbihjbWQpLCBvdXRwdXQpKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICBiYi53YXJuKCJDb3VsZG4ndCBjaGVjayBmb3IgQ1ZFczogJXMgKG91dHB1dCAlcykiICUgKGUsIGUub3V0cHV0KSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2c2hlbGwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2c2hlbGwuYmJjbGFzcwppbmRleCA0ZGU3ZWE2Li5mZGY3ZGMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnNoZWxsLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZzaGVsbC5iYmNsYXNzCkBAIC04LDE0ICs4LDE0IEBACiAgICAgICAgZmFrZWVudiA9IGQuZ2V0VmFyKCJGQUtFUk9PVEVOViIpLnNwbGl0KCkKICAgICAgICBmb3IgZiBpbiBmYWtlZW52OgogICAgICAgICAgICAgayA9IGYuc3BsaXQoIj0iKQotICAgICAgICAgICAgZC5zZXRWYXIoa1swXSwga1sxXSkgICAgICAgICAgIAorICAgICAgICAgICAgZC5zZXRWYXIoa1swXSwga1sxXSkKICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJPRV9URVJNSU5BTF9FWFBPUlRTIiwgIiAiICsga1swXSkKICAgICAgICBkLmRlbFZhckZsYWcoImRvX2RldnNoZWxsIiwgImZha2Vyb290IikKIAogICAgIG9lX3Rlcm1pbmFsKGQuZ2V0VmFyKCdERVZTSEVMTCcpLCAnT3BlbkVtYmVkZGVkIERldmVsb3BlciBTaGVsbCcsIGQpCiB9CiAKLWFkZHRhc2sgZGV2c2hlbGwgYWZ0ZXIgZG9fcGF0Y2gKK2FkZHRhc2sgZGV2c2hlbGwgYWZ0ZXIgZG9fcGF0Y2ggZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdAogCiAjIFRoZSBkaXJlY3RvcnkgdGhhdCB0aGUgdGVybWluYWwgc3RhcnRzIGluCiBERVZTSEVMTF9TVEFSVERJUiA/PSAiJHtTfSIKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAgb2xkWzNdID0gb2xkWzNdICZ+IHRlcm1pb3MuRUNITyAmfiB0ZXJtaW9zLklDQU5PTgogICAgICAgICAjICZ+IHRlcm1pb3MuSVNJRwogICAgICAgICB0ZXJtaW9zLnRjc2V0YXR0cihmZCwgdGVybWlvcy5UQ1NBRFJBSU4sIG9sZCkKLSAgICAKKwogICAgICMgTm8gZWNobyBvciBidWZmZXJpbmcgb3ZlciB0aGUgcHR5CiAgICAgbm9lY2hvaWNhbm9uKHMpCiAKQEAgLTE0NSw3ICsxNDUsNyBAQAogICAgIHRyeToKICAgICAgICAgZGV2cHlzaGVsbChkKQogICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgotICAgICAgICAjIFN0b3AgdGhlIFNJR1RFUk0gYWJvdmUgY2F1c2luZyBhbiBlcnJvciBleGl0IGNvZGUgICAgCisgICAgICAgICMgU3RvcCB0aGUgU0lHVEVSTSBhYm92ZSBjYXVzaW5nIGFuIGVycm9yIGV4aXQgY29kZQogICAgICAgICByZXR1cm4KICAgICBmaW5hbGx5OgogICAgICAgICByZXR1cm4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjViYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzCkBAIC0wLDAgKzEsMTY1IEBACisjIERldmVsb3BtZW50IHRvb2wgLSBzb3VyY2UgZXh0cmFjdGlvbiBoZWxwZXIgY2xhc3MKKyMKKyMgTk9URTogdGhpcyBjbGFzcyBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGRldnRvb2wgYW5kIHNob3VsZCBub3QgYmUKKyMgaW5oZXJpdGVkIG1hbnVhbGx5LgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKworCitERVZUT09MX1RFTVBESVIgPz0gIiIKK0RFVlRPT0xfUEFUQ0hfU1JDRElSID0gIiR7REVWVE9PTF9URU1QRElSfS9wYXRjaHdvcmtkaXIiCisKKworcHl0aG9uKCkgeworICAgIHRlbXBkaXIgPSBkLmdldFZhcignREVWVE9PTF9URU1QRElSJykKKworICAgIGlmIG5vdCB0ZW1wZGlyOgorICAgICAgICBiYi5mYXRhbCgnZGV2dG9vbC1zb3VyY2UgY2xhc3MgaXMgZm9yIGludGVybmFsIHVzZSBieSBkZXZ0b29sIG9ubHknKQorCisgICAgIyBNYWtlIGEgc3ViZGlyIHNvIHdlIGd1YXJkIGFnYWluc3QgV09SS0RJUj09UworICAgIHdvcmtkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3dvcmtkaXInKQorICAgIGQuc2V0VmFyKCdXT1JLRElSJywgd29ya2RpcikKKyAgICBpZiBub3QgZC5nZXRWYXIoJ1MnKS5zdGFydHN3aXRoKHdvcmtkaXIpOgorICAgICAgICAjIFVzdWFsbHkgYSBzaGFyZWQgd29ya2RpciByZWNpcGUgKGtlcm5lbCwgZ2NjKQorICAgICAgICAjIFRyeSB0byBzZXQgYSByZWFzb25hYmxlIGRlZmF1bHQKKyAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsJywgZCk6CisgICAgICAgICAgICBkLnNldFZhcignUycsICcke1dPUktESVJ9L3NvdXJjZScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkLnNldFZhcignUycsICcke1dPUktESVJ9LyVzJyAlIG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoJ1MnKSkpCisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsJywgZCk6CisgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBtb3ZlIHRoZSBzb3VyY2UgdG8gU1RBR0lOR19LRVJORUxfRElSIGhlcmUKKyAgICAgICAgZC5zZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0RJUicsICcke1N9JykKKworICAgIGQuc2V0VmFyKCdTVEFNUFNfRElSJywgb3MucGF0aC5qb2luKHRlbXBkaXIsICdzdGFtcHMnKSkKKyAgICBkLnNldFZhcignVCcsIG9zLnBhdGguam9pbih0ZW1wZGlyLCAndGVtcCcpKQorCisgICAgIyBIb29rIGluIHByZS9wb3N0ZnVuY3MKKyAgICBpc19rZXJuZWxfeW9jdG8gPSBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKQorICAgIGlmIGlzX2tlcm5lbF95b2N0bzoKKyAgICAgICAgdW5wYWNrdGFzayA9ICdkb19rZXJuZWxfY2hlY2tvdXQnCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fY29uZmlndXJlJywgJ3Bvc3RmdW5jcycsICcgZGV2dG9vbF9wb3N0X2NvbmZpZ3VyZScpCisgICAgZWxzZToKKyAgICAgICAgdW5wYWNrdGFzayA9ICdkb191bnBhY2snCisgICAgZC5hcHBlbmRWYXJGbGFnKHVucGFja3Rhc2ssICdwb3N0ZnVuY3MnLCAnIGRldnRvb2xfcG9zdF91bnBhY2snKQorICAgIGQucHJlcGVuZFZhckZsYWcoJ2RvX3BhdGNoJywgJ3ByZWZ1bmNzJywgJyBkZXZ0b29sX3ByZV9wYXRjaCcpCisgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19wYXRjaCcsICdwb3N0ZnVuY3MnLCAnIGRldnRvb2xfcG9zdF9wYXRjaCcpCisKKyAgICAjIE5PVEU6IGluIG9yZGVyIGZvciB0aGUgcGF0Y2ggc3R1ZmYgdG8gYmUgZnVsbHkgZnVuY3Rpb25hbCwKKyAgICAjIFBBVENIVE9PTCBhbmQgUEFUQ0hfQ09NTUlUX0ZVTkNUSU9OUyBuZWVkIHRvIGJlIHNldDsgd2UgY2FuJ3QKKyAgICAjIGRvIHRoYXQgaGVyZSBiZWNhdXNlIHdlIGNhbid0IGd1YXJhbnRlZSB0aGUgb3JkZXIgb2YgdGhlIGFub255bW91cworICAgICMgZnVuY3Rpb25zLCBzbyBpdCBnZXRzIGRvbmUgaW4gdGhlIGJiYXBwZW5kIHdlIGNyZWF0ZS4KK30KKworCitweXRob24gZGV2dG9vbF9wb3N0X3VucGFjaygpIHsKKyAgICBpbXBvcnQgb2UucmVjaXBldXRpbHMKKyAgICBpbXBvcnQgc2h1dGlsCisgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihkLmdldFZhcignQ09SRUJBU0UnKSwgJ3NjcmlwdHMnLCAnbGliJykpCisgICAgaW1wb3J0IHNjcmlwdHV0aWxzCisgICAgZnJvbSBkZXZ0b29sIGltcG9ydCBzZXR1cF9naXRfcmVwbworCisgICAgdGVtcGRpciA9IGQuZ2V0VmFyKCdERVZUT09MX1RFTVBESVInKQorICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCisgICAgc3Jjc3ViZGlyID0gZC5nZXRWYXIoJ1MnKQorCisgICAgZGVmIF9tb3ZlX2ZpbGUoc3JjLCBkc3QpOgorICAgICAgICAiIiJNb3ZlIGEgZmlsZS4gQ3JlYXRlcyBhbGwgdGhlIGRpcmVjdG9yeSBjb21wb25lbnRzIG9mIGRlc3RpbmF0aW9uIHBhdGguIiIiCisgICAgICAgIGRzdF9kID0gb3MucGF0aC5kaXJuYW1lKGRzdCkKKyAgICAgICAgaWYgZHN0X2Q6CisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZHN0X2QpCisgICAgICAgIHNodXRpbC5tb3ZlKHNyYywgZHN0KQorCisgICAgZGVmIF9sc190cmVlKGRpcmVjdG9yeSk6CisgICAgICAgICIiIlJlY3Vyc2l2ZSBsaXN0aW5nIG9mIGZpbGVzIGluIGEgZGlyZWN0b3J5IiIiCisgICAgICAgIHJldCA9IFtdCisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6CisgICAgICAgICAgICByZXQuZXh0ZW5kKFtvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHJvb3QsIGZuYW1lKSwgZGlyZWN0b3J5KSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lIGluIGZpbGVzXSkKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAgIyBNb3ZlIGxvY2FsIHNvdXJjZSBmaWxlcyBpbnRvIHNlcGFyYXRlIHN1YmRpcgorICAgIHJlY2lwZV9wYXRjaGVzID0gW29zLnBhdGguYmFzZW5hbWUocGF0Y2gpIGZvciBwYXRjaCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wYXRjaGVzKGQpXQorICAgIGxvY2FsX2ZpbGVzID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9sb2NhbF9maWxlcyhkKQorCisgICAgIyBJZ25vcmUgbG9jYWwgZmlsZXMgd2l0aCBzdWJkaXI9e0JQfQorICAgIHNyY2Fic3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc3Jjc3ViZGlyKQorICAgIGxvY2FsX2ZpbGVzID0gW2ZuYW1lIGZvciBmbmFtZSBpbiBsb2NhbF9maWxlcyBpZgorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4od29ya2RpciwgZm5hbWUpKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgKHNyY2Fic3BhdGggPT0gd29ya2RpciBvciBub3QKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHdvcmtkaXIsIGZuYW1lKS5zdGFydHN3aXRoKHNyY2Fic3BhdGggKworICAgICAgICAgICAgICAgICAgICAgICAgb3Muc2VwKSldCisgICAgaWYgbG9jYWxfZmlsZXM6CisgICAgICAgIGZvciBmbmFtZSBpbiBsb2NhbF9maWxlczoKKyAgICAgICAgICAgIF9tb3ZlX2ZpbGUob3MucGF0aC5qb2luKHdvcmtkaXIsIGZuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih0ZW1wZGlyLCAnb2UtbG9jYWwtZmlsZXMnLCBmbmFtZSkpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ29lLWxvY2FsLWZpbGVzJywgJy5naXRpZ25vcmUnKSwKKyAgICAgICAgICAgICAgICAgICAgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnIyBJZ25vcmUgbG9jYWwgZmlsZXMsIGJ5IGRlZmF1bHQuIFJlbW92ZSB0aGlzIGZpbGUgJworICAgICAgICAgICAgICAgICAgICAnaWYgeW91IHdhbnQgdG8gY29tbWl0IHRoZSBkaXJlY3RvcnkgdG8gR2l0XG4qXG4nKQorCisgICAgaWYgc3Jjc3ViZGlyID09IHdvcmtkaXI6CisgICAgICAgICMgRmluZCBub24tcGF0Y2ggbm9uLWxvY2FsIHNvdXJjZXMgdGhhdCB3ZXJlICJ1bnBhY2tlZCIgdG8gc3JjdHJlZQorICAgICAgICAjIGRpcmVjdG9yeQorICAgICAgICBzcmNfZmlsZXMgPSBbZm5hbWUgZm9yIGZuYW1lIGluIF9sc190cmVlKHdvcmtkaXIpIGlmCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKGZuYW1lKSBub3QgaW4gcmVjaXBlX3BhdGNoZXNdCisgICAgICAgIHNyY3N1YmRpciA9IGQuZ2V0VmFyKCdERVZUT09MX1BBVENIX1NSQ0RJUicpCisgICAgICAgICMgTW92ZSBzb3VyY2UgZmlsZXMgdG8gUworICAgICAgICBmb3IgcGF0aCBpbiBzcmNfZmlsZXM6CisgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbih3b3JrZGlyLCBwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzcmNzdWJkaXIsIHBhdGgpKQorICAgIGVsaWYgb3MucGF0aC5kaXJuYW1lKHNyY3N1YmRpcikgIT0gd29ya2RpcjoKKyAgICAgICAgIyBIYW5kbGUgaWYgUyBpcyBzZXQgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgdGhlIHNvdXJjZQorICAgICAgICBzcmNzdWJkaXIgPSBvcy5wYXRoLmpvaW4od29ya2Rpciwgb3MucGF0aC5yZWxwYXRoKHNyY3N1YmRpciwgd29ya2Rpcikuc3BsaXQob3Muc2VwKVswXSkKKworICAgIHNjcmlwdHV0aWxzLmdpdF9jb252ZXJ0X3N0YW5kYWxvbmVfY2xvbmUoc3Jjc3ViZGlyKQorCisgICAgIyBNYWtlIHN1cmUgdGhhdCBzcmNzdWJkaXIgZXhpc3RzCisgICAgYmIudXRpbHMubWtkaXJoaWVyKHNyY3N1YmRpcikKKyAgICBpZiBub3Qgb3MubGlzdGRpcihzcmNzdWJkaXIpOgorICAgICAgICBiYi53YXJuKCJObyBzb3VyY2UgdW5wYWNrZWQgdG8gUyAtIGVpdGhlciB0aGUgJXMgcmVjaXBlICIKKyAgICAgICAgICAgICAgICAiZG9lc24ndCB1c2UgYW55IHNvdXJjZSBvciB0aGUgY29ycmVjdCBzb3VyY2UgIgorICAgICAgICAgICAgICAgICJkaXJlY3RvcnkgY291bGQgbm90IGJlIGRldGVybWluZWQiICUgZC5nZXRWYXIoJ1BOJykpCisKKyAgICBkZXZicmFuY2ggPSBkLmdldFZhcignREVWVE9PTF9ERVZCUkFOQ0gnKQorICAgIHNldHVwX2dpdF9yZXBvKHNyY3N1YmRpciwgZC5nZXRWYXIoJ1BWJyksIGRldmJyYW5jaCwgZD1kKQorCisgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXNyY3N1YmRpcikKKyAgICBpbml0aWFsX3JldiA9IHN0ZG91dC5yc3RyaXAoKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2luaXRpYWxfcmV2JyksICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZShpbml0aWFsX3JldikKKworICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NyY3N1YmRpcicpLCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGUoc3Jjc3ViZGlyKQorfQorCitweXRob24gZGV2dG9vbF9wcmVfcGF0Y2goKSB7CisgICAgaWYgZC5nZXRWYXIoJ1MnKSA9PSBkLmdldFZhcignV09SS0RJUicpOgorICAgICAgICBkLnNldFZhcignUycsICcke0RFVlRPT0xfUEFUQ0hfU1JDRElSfScpCit9CisKK3B5dGhvbiBkZXZ0b29sX3Bvc3RfcGF0Y2goKSB7CisgICAgdGVtcGRpciA9IGQuZ2V0VmFyKCdERVZUT09MX1RFTVBESVInKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NyY3N1YmRpcicpLCAncicpIGFzIGY6CisgICAgICAgIHNyY3N1YmRpciA9IGYucmVhZCgpCisgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCB0YWcgLWYgZGV2dG9vbC1wYXRjaGVkJywgY3dkPXNyY3N1YmRpcikKK30KKworcHl0aG9uIGRldnRvb2xfcG9zdF9jb25maWd1cmUoKSB7CisgICAgaW1wb3J0IHNodXRpbAorICAgIHRlbXBkaXIgPSBkLmdldFZhcignREVWVE9PTF9URU1QRElSJykKKyAgICBzaHV0aWwuY29weTIob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdCJyksICcuY29uZmlnJyksIHRlbXBkaXIpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCmluZGV4IDVlMzQ0NDEuLmM4NWY3YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvZGF0YS5iYmNsYXNzCkBAIC0yNjEsMTIgKzI2MSw0NCBAQAogICAgICAgICBmcm9tIGJiLnV0aWxzIGltcG9ydCB2ZXJjbXBfc3RyaW5nCiAgICAgICAgIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yLCBOb01ldGhvZEVycm9yLCBkZWNvZGV1cmwKIAotICAgICAgICAiIiJmaXJzdCBjaGVjayB3aGV0aGVyIGEgdXJpIGlzIHByb3ZpZGVkIiIiCi0gICAgICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAnJykuc3BsaXQoKQotICAgICAgICBpZiBzcmNfdXJpOgotICAgICAgICAgICAgdXJpX3R5cGUsIF8sIF8sIF8sIF8sIF8gPSBkZWNvZGV1cmwoc3JjX3VyaVswXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHVyaV90eXBlID0gIm5vbmUiCisgICAgICAgIGRlZiBnZXRfdXBzdHJlYW1fdmVyc2lvbl9hbmRfc3RhdHVzKCk6CisKKyAgICAgICAgICAgICMgc2V0IGlmIHRoZSB1cHN0cmVhbSBjaGVjayBmYWlscyByZWxpYWJseSwgZS5nLiBhYnNlbnQgZ2l0IHRhZ3MsIG9yIHdlaXJkIHZlcnNpb24gZm9ybWF0IHVzZWQgb24gb3VyIG9yIG9uIHVwc3RyZWFtIHNpZGUuCisgICAgICAgICAgICB1cHN0cmVhbV92ZXJzaW9uX3Vua25vd24gPSBsb2NhbGRhdGEuZ2V0VmFyKCdVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04nKQorICAgICAgICAgICAgIyBzZXQgaWYgdGhlIHVwc3RyZWFtIGNoZWNrIGNhbm5vdCBiZSByZWxpYWJseSBwZXJmb3JtZWQgZHVlIHRvIHRyYW5zaWVudCBuZXR3b3JrIGZhaWx1cmVzLCBvciBzZXJ2ZXIgYmVoYXZpbmcgd2VpcmRseS4gCisgICAgICAgICAgICAjIFRoaXMgb25lIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseSwgYXMgaXQgY29tcGxldGVseSBleGNsdWRlcyBhIHJlY2lwZSBmcm9tIHVwc3RyZWFtIGNoZWNraW5nLgorICAgICAgICAgICAgdXBzdHJlYW1fY2hlY2tfdW5yZWxpYWJsZSA9IGxvY2FsZGF0YS5nZXRWYXIoJ1VQU1RSRUFNX0NIRUNLX1VOUkVMSUFCTEUnKQorCisgICAgICAgICAgICBpZiB1cHN0cmVhbV9jaGVja191bnJlbGlhYmxlID09ICIxIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIk4vQSIsICJDSEVDS19JU19VTlJFTElBQkxFIgorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdXYgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3Vwc3RyZWFtX3ZlcnNpb24obG9jYWxkYXRhKQorICAgICAgICAgICAgICAgIHB1cHZlciA9IHV2Wyd2ZXJzaW9uJ10gaWYgdXZbJ3ZlcnNpb24nXSBlbHNlICJOL0EiCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcHVwdmVyID0gIk4vQSIKKworICAgICAgICAgICAgaWYgcHVwdmVyID09ICJOL0EiOgorICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiVU5LTk9XTiIgaWYgdXBzdHJlYW1fdmVyc2lvbl91bmtub3duIGVsc2UgIlVOS05PV05fQlJPS0VOIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzcmNfdXJpID0gKGxvY2FsZGF0YS5nZXRWYXIoJ1NSQ19VUkknKSBvciAnJykuc3BsaXQoKQorICAgICAgICAgICAgICAgIGlmIHNyY191cmk6CisgICAgICAgICAgICAgICAgICAgIHVyaV90eXBlLCBfLCBfLCBfLCBfLCBfID0gZGVjb2RldXJsKHNyY191cmlbMF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdXJpX3R5cGUgPSAibm9uZSIKKyAgICAgICAgICAgICAgICBwdiwgXywgXyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcHZfd2l0aG91dF9zcmNwdihwdmVyc2lvbiwgdXJpX3R5cGUpCisgICAgICAgICAgICAgICAgdXB2LCBfLCBfID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB1cHZlciwgdXJpX3R5cGUpCisKKyAgICAgICAgICAgICAgICBjbXAgPSB2ZXJjbXBfc3RyaW5nKHB2LCB1cHYpCisgICAgICAgICAgICAgICAgaWYgY21wID09IC0xOgorICAgICAgICAgICAgICAgICAgICBwc3RhdHVzID0gIlVQREFURSIgaWYgbm90IHVwc3RyZWFtX3ZlcnNpb25fdW5rbm93biBlbHNlICJLTk9XTl9CUk9LRU4iCisgICAgICAgICAgICAgICAgZWxpZiBjbXAgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJNQVRDSCIgaWYgbm90IHVwc3RyZWFtX3ZlcnNpb25fdW5rbm93biBlbHNlICJLTk9XTl9CUk9LRU4iCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJVTktOT1dOIiBpZiB1cHN0cmVhbV92ZXJzaW9uX3Vua25vd24gZWxzZSAiVU5LTk9XTl9CUk9LRU4iCisKKyAgICAgICAgICAgIHJldHVybiBwdXB2ZXIsIHBzdGF0dXMKKwogCiAgICAgICAgICIiImluaXRpYWxpemUgbG9nIGZpbGVzLiIiIgogICAgICAgICBsb2dwYXRoID0gZC5nZXRWYXIoJ0xPR19ESVInKQpAQCAtMzEzLDM0ICszNDUsNyBAQAogICAgICAgICBwc3JjdXJpID0gbG9jYWxkYXRhLmdldFZhcignU1JDX1VSSScpCiAgICAgICAgIG1haW50YWluZXIgPSBsb2NhbGRhdGEuZ2V0VmFyKCdSRUNJUEVfTUFJTlRBSU5FUicpCiAKLSAgICAgICAgIiIiIEdldCB1cHN0cmVhbSB2ZXJzaW9uIHZlcnNpb24gIiIiCi0gICAgICAgIHB1cHZlciA9ICIiCi0gICAgICAgIHBzdGF0dXMgPSAiIgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHV2ID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV91cHN0cmVhbV92ZXJzaW9uKGxvY2FsZGF0YSkKLQotICAgICAgICAgICAgcHVwdmVyID0gdXZbJ3ZlcnNpb24nXQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBpZiBlIGlzIEZldGNoRXJyb3I6Ci0gICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJFcnJBY2Nlc3MiCi0gICAgICAgICAgICBlbGlmIGUgaXMgTm9NZXRob2RFcnJvcjoKLSAgICAgICAgICAgICAgICBwc3RhdHVzID0gIkVyclVuc3VwcG9ydGVkUHJvdG8iCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiRXJyVW5rbm93biIKLQotICAgICAgICAiIiJTZXQgdXBzdHJlYW0gdmVyc2lvbiBzdGF0dXMiIiIKLSAgICAgICAgaWYgbm90IHB1cHZlcjoKLSAgICAgICAgICAgIHB1cHZlciA9ICJOL0EiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwdiwgXywgXyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcHZfd2l0aG91dF9zcmNwdihwdmVyc2lvbiwgdXJpX3R5cGUpCi0gICAgICAgICAgICB1cHYsIF8sIF8gPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3B2X3dpdGhvdXRfc3JjcHYocHVwdmVyLCB1cmlfdHlwZSkKLQotICAgICAgICAgICAgY21wID0gdmVyY21wX3N0cmluZyhwdiwgdXB2KQotICAgICAgICAgICAgaWYgY21wID09IC0xOgotICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiVVBEQVRFIgotICAgICAgICAgICAgZWxpZiBjbXAgPT0gMDoKLSAgICAgICAgICAgICAgICBwc3RhdHVzID0gIk1BVENIIgorICAgICAgICBwdXB2ZXIsIHBzdGF0dXMgPSBnZXRfdXBzdHJlYW1fdmVyc2lvbl9hbmRfc3RhdHVzKCkKIAogICAgICAgICBpZiBwc3JjdXJpOgogICAgICAgICAgICAgcHNyY3VyaSA9IHBzcmN1cmkuc3BsaXQoKVswXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9vdmVycmlkZXMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvb3ZlcnJpZGVzLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY0ZGIwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvb3ZlcnJpZGVzLmJiY2xhc3MKQEAgLTAsMCArMSwzMiBAQAorIyBUdXJucyBjZXJ0YWluIERJU1RST19GRUFUVVJFUyBpbnRvIG92ZXJyaWRlcyB3aXRoIHRoZSBzYW1lCisjIG5hbWUgcGx1cyBhIGRmLSBwcmVmaXguIEVuc3VyZXMgdGhhdCB0aGVzZSBzcGVjaWFsCisjIGRpc3RybyBmZWF0dXJlcyByZW1haW4gc2V0IGFsc28gZm9yIG5hdGl2ZSBhbmQgbmF0aXZlc2RrCisjIHJlY2lwZXMsIHNvIHRoYXQgdGhlc2Ugb3ZlcnJpZGVzIGNhbiBhbHNvIGJlIHVzZWQgdGhlcmUuCisjCisjIFRoaXMgbWFrZXMgaXQgc2ltcGxlciB0byB3cml0ZSAuYmJhcHBlbmRzIHRoYXQgb25seSBjaGFuZ2UgdGhlCisjIHRhc2sgc2lnbmF0dXJlcyBvZiB0aGUgcmVjaXBlIGlmIHRoZSBjaGFuZ2UgaXMgcmVhbGx5IGVuYWJsZWQsCisjIGZvciBleGFtcGxlIHdpdGg6CisjICAgZG9faW5zdGFsbF9hcHBlbmRfZGYtbXktZmVhdHVyZSAoKSB7IC4uLiB9CisjIHdoZXJlICJteS1mZWF0dXJlIiBpcyBhIERJU1RST19GRUFUVVJFLgorIworIyBUaGUgY2xhc3MgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBhIGxheWVyLmNvbmYgb3IgZGlzdHJvCisjIC5pbmMgZmlsZSB3aXRoOgorIyBJTkhFUklUICs9ICJkaXN0cm9vdmVycmlkZXMiCisjIERJU1RST19GRUFUVVJFU19PVkVSUklERVMgKz0gIm15LWZlYXR1cmUiCisjCisjIEJld2FyZSB0aGF0IHRoaXMgcGFydCBvZiBPVkVSUklERVMgY2hhbmdlcyBkdXJpbmcgcGFyc2luZywgc28gdXNhZ2UKKyMgb2YgdGhlc2Ugb3ZlcnJpZGVzIHNob3VsZCBiZSBsaW1pdGVkIHRvIC5iYiBhbmQgLmJiYXBwZW5kIGZpbGVzLAorIyBiZWNhdXNlIHRoZW4gRElTVFJPX0ZFQVRVUkVTIGlzIGZpbmFsLgorCitESVNUUk9fRkVBVFVSRVNfT1ZFUlJJREVTID89ICIiCitESVNUUk9fRkVBVFVSRVNfT1ZFUlJJREVTW2RvY10gPSAiQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiA8ZmVhdHVyZT4gZW50cmllcy4gXAorRWFjaCBlbnRyeSBpcyBhZGRlZCB0byBPVkVSUklERVMgYXMgZGYtPGZlYXR1cmU+IGlmIDxmZWF0dXJlPiBpcyBpbiBESVNUUk9fRkVBVFVSRVMuIgorCitESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRV9hcHBlbmQgPSAiICR7RElTVFJPX0ZFQVRVUkVTX09WRVJSSURFU30iCitESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRVNES19hcHBlbmQgPSAiICR7RElTVFJPX0ZFQVRVUkVTX09WRVJSSURFU30iCisKKyMgSWYgRElTVFJPX0ZFQVRVUkVTX09WRVJSSURFUyBvciBESVNUUk9fRkVBVFVSRVMgc2hvdyB1cCBpbiBhIHRhc2sKKyMgc2lnbmF0dXJlIGJlY2F1c2Ugb2YgdGhpcyBsaW5lLCB0aGVuIHRoZSB0YXNrIGRlcGVuZGVuY3kgb24KKyMgT1ZFUlJJREVTIGl0c2VsZiBzaG91bGQgYmUgZml4ZWQuIEV4Y2x1ZGluZyB0aGVzZSB0d28gdmFyaWFibGVzCisjIHdpdGggRElTVFJPT1ZFUlJJREVTW3ZhcmRlcHNleGNsdWRlXSB3b3VsZCBqdXN0IHdvcmsgYXJvdW5kIHRoZSBwcm9ibGVtLgorRElTVFJPT1ZFUlJJREVTIC49ICIke0AgJycuam9pbihbJzpkZi0nICsgeCBmb3IgeCBpbiBzb3J0ZWQoc2V0KGQuZ2V0VmFyKCdESVNUUk9fRkVBVFVSRVNfT1ZFUlJJREVTJykuc3BsaXQoKSkgJiBzZXQoKGQuZ2V0VmFyKCdESVNUUk9fRkVBVFVSRVMnKSBvciAnJykuc3BsaXQoKSkpXSkgfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcwppbmRleCBkNjRhZjZhLi42NWRkMTNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCkBAIC0yOSw2ICsyOSwxMiBAQAogCiBweXRob24gKCkgewogICAgIGV4dGVybmFsc3JjID0gZC5nZXRWYXIoJ0VYVEVSTkFMU1JDJykKKyAgICBleHRlcm5hbHNyY2J1aWxkID0gZC5nZXRWYXIoJ0VYVEVSTkFMU1JDX0JVSUxEJykKKworICAgIGlmIGV4dGVybmFsc3JjIGFuZCBub3QgZXh0ZXJuYWxzcmMuc3RhcnRzd2l0aCgiLyIpOgorICAgICAgICBiYi5lcnJvcigiRVhURVJOQUxTUkMgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoIikKKyAgICBpZiBleHRlcm5hbHNyY2J1aWxkIGFuZCBub3QgZXh0ZXJuYWxzcmNidWlsZC5zdGFydHN3aXRoKCIvIik6CisgICAgICAgIGJiLmVycm9yKCJFWFRFUk5BTFNSQ19CVUlMRCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgiKQogCiAgICAgIyBJZiB0aGlzIGlzIHRoZSBiYXNlIHJlY2lwZSBhbmQgRVhURVJOQUxTUkMgaXMgc2V0IGZvciBpdCBvciBhbnkgb2YgaXRzCiAgICAgIyBkZXJpdmF0aXZlcywgdGhlbiBlbmFibGUgQkJfRE9OVF9DQUNIRSB0byBmb3JjZSB0aGUgcmVjaXBlIHRvIGFsd2F5cyBiZQpAQCAtNDgsNyArNTQsNiBAQAogCiAgICAgaWYgZXh0ZXJuYWxzcmM6CiAgICAgICAgIGQuc2V0VmFyKCdTJywgZXh0ZXJuYWxzcmMpCi0gICAgICAgIGV4dGVybmFsc3JjYnVpbGQgPSBkLmdldFZhcignRVhURVJOQUxTUkNfQlVJTEQnKQogICAgICAgICBpZiBleHRlcm5hbHNyY2J1aWxkOgogICAgICAgICAgICAgZC5zZXRWYXIoJ0InLCBleHRlcm5hbHNyY2J1aWxkKQogICAgICAgICBlbHNlOgpAQCAtMTY3LDYgKzE3Miw3IEBACiBkb19idWlsZGNsZWFuW2RvY10gPSAiQ2FsbCAnbWFrZSBjbGVhbicgb3IgZXF1aXZhbGVudCBpbiAke0J9IgogZXh0ZXJuYWxzcmNfZG9fYnVpbGRjbGVhbigpIHsKIAlpZiBbIC1lIE1ha2VmaWxlIC1vIC1lIG1ha2VmaWxlIC1vIC1lIEdOVW1ha2VmaWxlIF07IHRoZW4KKwkJcm0gLWYgJHtAJyAnLmpvaW4oW3guc3BsaXQoJzonKVswXSBmb3IgeCBpbiAoZC5nZXRWYXIoJ0VYVEVSTkFMU1JDX1NZTUxJTktTJykgb3IgJycpLnNwbGl0KCldKX0KIAkJb2VfcnVubWFrZSBjbGVhbiB8fCBkaWUgIm1ha2UgZmFpbGVkIgogCWVsc2UKIAkJYmJub3RlICJub3RoaW5nIHRvIGRvIC0gbm8gbWFrZWZpbGUgZm91bmQiCkBAIC0xNzksMTQgKzE4NSwyMCBAQAogICAgIGltcG9ydCB0ZW1wZmlsZQogCiAgICAgc19kaXIgPSBzcmNkaXIgb3IgZC5nZXRWYXIoJ0VYVEVSTkFMU1JDJykKLSAgICBnaXRfZGlyID0gb3MucGF0aC5qb2luKHNfZGlyLCAnLmdpdCcpCi0gICAgb2VfaGFzaF9maWxlID0gb3MucGF0aC5qb2luKGdpdF9kaXIsICdvZS1kZXZ0b29sLXRyZWUtc2hhMScpCisgICAgZ2l0X2RpciA9IE5vbmUKKworICAgIHRyeToKKyAgICAgICAgZ2l0X2RpciA9IG9zLnBhdGguam9pbihzX2RpciwKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZ2l0JywgJy1DJywgc19kaXIsICdyZXYtcGFyc2UnLCAnLS1naXQtZGlyJ10pLmRlY29kZSgidXRmLTgiKS5yc3RyaXAoKSkKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgIHBhc3MKIAogICAgIHJldCA9ICIgIgotICAgIGlmIG9zLnBhdGguZXhpc3RzKGdpdF9kaXIpOgotICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkaXI9Z2l0X2RpciwgcHJlZml4PSdvZS1kZXZ0b29sLWluZGV4JykgYXMgdG1wX2luZGV4OgorICAgIGlmIGdpdF9kaXIgaXMgbm90IE5vbmU6CisgICAgICAgIG9lX2hhc2hfZmlsZSA9IG9zLnBhdGguam9pbihnaXRfZGlyLCAnb2UtZGV2dG9vbC10cmVlLXNoYTEnKQorICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShwcmVmaXg9J29lLWRldnRvb2wtaW5kZXgnKSBhcyB0bXBfaW5kZXg6CiAgICAgICAgICAgICAjIENsb25lIGluZGV4Ci0gICAgICAgICAgICBzaHV0aWwuY29weTIob3MucGF0aC5qb2luKGdpdF9kaXIsICdpbmRleCcpLCB0bXBfaW5kZXgubmFtZSkKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4oZ2l0X2RpciwgJ2luZGV4JyksIHRtcF9pbmRleC5uYW1lKQogICAgICAgICAgICAgIyBVcGRhdGUgb3VyIGN1c3RvbSBpbmRleAogICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgICAgIGVudlsnR0lUX0lOREVYX0ZJTEUnXSA9IHRtcF9pbmRleC5uYW1lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dldHRleHQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCmluZGV4IDBiZTE0MjQuLmRhNjhlNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCkBAIC0xMyw3ICsxMywxMiBAQAogICAgICAgICByZXR1cm4gJy0tZGlzYWJsZS1ubHMnCiAgICAgcmV0dXJuICItLWVuYWJsZS1ubHMiCiAKLURFUEVORFNfR0VUVEVYVCA/Pz0gInZpcnR1YWwvZ2V0dGV4dCBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFNfR0VUVEVYVCA/Pz0gImdldHRleHQtbmF0aXZlIgogCi1CQVNFREVQRU5EUyA9KyAiJHtAZ2V0dGV4dF9kZXBlbmRlbmNpZXMoZCl9IgorQkFTRURFUEVORFNfYXBwZW5kID0gIiAke0BnZXR0ZXh0X2RlcGVuZGVuY2llcyhkKX0iCiBFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAke0BnZXR0ZXh0X29lY29uZihkKX0iCisKKyMgV2l0aG91dCB0aGlzLCBtc2dmbXQgZnJvbSBnZXR0ZXh0LW5hdGl2ZSB3aWxsIG5vdCBmaW5kIElUUyBmaWxlcworIyBwcm92aWRlZCBieSB0YXJnZXQgcmVjaXBlcyAoZm9yIGV4YW1wbGUsIHBvbGtpdC5pdHMpLgorR0VUVEVYVERBVEFESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiOiR7U1RBR0lOR19EQVRBRElSfS9nZXR0ZXh0IgorZXhwb3J0IEdFVFRFWFREQVRBRElSUwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbm9tZWJhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ25vbWViYXNlLmJiY2xhc3MKaW5kZXggNTRhYTQ1Zi4uNGNjYzhlMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbm9tZWJhc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzCkBAIC0xNCw2ICsxNCw4IEBACiAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQqIFwKICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L0dDb25mIFwKICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pY29ucyBcCiAiCiAKIEZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9kZXZoZWxwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCmluZGV4IDg1ZjcxYTIuLjA5YjAxYTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKQEAgLTEsNzcgKzEsMTgyIEBACi1pbmhlcml0IGdvYXJjaAoraW5oZXJpdCBnb2FyY2ggcHRlc3QKIAotIyB4MzIgQUJJIGlzIG5vdCBzdXBwb3J0ZWQgb24gZ28gY29tcGlsZXIgc28gZmFyCi1DT01QQVRJQkxFX0hPU1RfbGludXgtZ251eDMyID0gIm51bGwiCi0jIHBwYzMyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZ28gY29tcGlsZXJzCi1DT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgorZGVmIGdldF9nb19wYXJhbGxlbF9tYWtlKGQpOgorICAgIHBtID0gKGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykgb3IgJycpLnNwbGl0KCkKKyAgICAjIGxvb2sgZm9yICctaicgYW5kIHRocm93IG90aGVyIG9wdGlvbnMgKGUuZy4gJy1sJykgYXdheQorICAgICMgYmVjYXVzZSB0aGV5IG1pZ2h0IGhhdmUgYSBkaWZmZXJlbnQgbWVhbmluZyBpbiBnb2xhbmcKKyAgICB3aGlsZSBwbToKKyAgICAgICAgb3B0ID0gcG0ucG9wKDApCisgICAgICAgIGlmIG9wdCA9PSAnLWonOgorICAgICAgICAgICAgdiA9IHBtLnBvcCgwKQorICAgICAgICBlbGlmIG9wdC5zdGFydHN3aXRoKCctaicpOgorICAgICAgICAgICAgdiA9IG9wdFsyOl0uc3RyaXAoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICByZXR1cm4gJy1wICVkJyAlIGludCh2KQorCisgICAgcmV0dXJuICIiCisKK0dPX1BBUkFMTEVMX0JVSUxEID89ICIke0BnZXRfZ29fcGFyYWxsZWxfbWFrZShkKX0iCiAKIEdPUk9PVF9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgotR09ST09UID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke1RBUkdFVF9TWVN9L2dvIgotR09CSU5fRklOQUxfY2xhc3MtbmF0aXZlID0gIiR7R09ST09UX0ZJTkFMfS9iaW4iCi1HT0JJTl9GSU5BTCA9ICIke0dPUk9PVF9GSU5BTH0vYmluLyR7R09PU31fJHtHT0FSQ0h9IgotCi1leHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKLWV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKLWV4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKK0dPUk9PVF9jbGFzcy1uYXRpdmVzZGsgPSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtsaWJkaXJ9L2dvIgorR09ST09UID0gIiR7U1RBR0lOR19MSUJESVJ9L2dvIgogZXhwb3J0IEdPUk9PVAotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vJHtUQVJHRVRfU1lTfS9nbyIKLWV4cG9ydCBHT0JJTl9GSU5BTAotZXhwb3J0IEdPUEtHX0ZJTkFMID0gIiR7R09ST09UX0ZJTkFMfS9wa2cvJHtHT09TfV8ke0dPQVJDSH0iCi1leHBvcnQgR09TUkNfRklOQUwgPSAiJHtHT1JPT1RfRklOQUx9L3NyYyIKLWV4cG9ydCBHT19HQ0ZMQUdTID0gIiR7VEFSR0VUX0NGTEFHU30iCi1leHBvcnQgR09fTERGTEFHUyA9ICIke1RBUkdFVF9MREZMQUdTfSIKLWV4cG9ydCBDR09fQ0ZMQUdTID0gIiR7VEFSR0VUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30gJHtUQVJHRVRfQ0ZMQUdTfSIKLWV4cG9ydCBDR09fQ1BQRkxBR1MgPSAiJHtUQVJHRVRfQ1BQRkxBR1N9IgotZXhwb3J0IENHT19DWFhGTEFHUyA9ICIke1RBUkdFVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9ICR7VEFSR0VUX0NYWEZMQUdTfSIKLWV4cG9ydCBDR09fTERGTEFHUyA9ICIke1RBUkdFVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9ICR7VEFSR0VUX0xERkxBR1N9IgorZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCiAKLURFUEVORFMgKz0gImdvLWNyb3NzLSR7VEFSR0VUX0FSQ0h9IgotREVQRU5EU19jbGFzcy1uYXRpdmUgKz0gImdvLW5hdGl2ZSIKK0RFUEVORFNfR09MQU5HX2NsYXNzLXRhcmdldCA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgorREVQRU5EU19HT0xBTkdfY2xhc3MtbmF0aXZlID0gImdvLW5hdGl2ZSIKK0RFUEVORFNfR09MQU5HX2NsYXNzLW5hdGl2ZXNkayA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgogCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7R09TUkNfRklOQUx9LyR7R09fSU1QT1JUfSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtHT1BLR19GSU5BTH0vJHtHT19JTVBPUlR9KiIKK0RFUEVORFNfYXBwZW5kID0gIiAke0RFUEVORFNfR09MQU5HfSIKKworR09fTElOS1NIQVJFRCA/PSAiJHtAJy1saW5rc2hhcmVkJyBpZiBkLmdldFZhcignR09fRFlOTElOSycpIGVsc2UgJyd9IgorR09fUlBBVEhfTElOSyA9ICIke0AnLVdsLC1ycGF0aC1saW5rPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluaycgaWYgZC5nZXRWYXIoJ0dPX0RZTkxJTksnKSBlbHNlICcnfSIKK0dPX1JQQVRIID0gIiR7QCctciAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsnIGlmIGQuZ2V0VmFyKCdHT19EWU5MSU5LJykgZWxzZSAnJ30iCitHT19SUEFUSF9jbGFzcy1uYXRpdmUgPSAiJHtAJy1yICR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluaycgaWYgZC5nZXRWYXIoJ0dPX0RZTkxJTksnKSBlbHNlICcnfSIKK0dPX1JQQVRIX0xJTktfY2xhc3MtbmF0aXZlID0gIiR7QCctV2wsLXJwYXRoLWxpbms9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rJyBpZiBkLmdldFZhcignR09fRFlOTElOSycpIGVsc2UgJyd9IgorR09fRVhUTERGTEFHUyA/PSAiJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30gJHtHT19SUEFUSF9MSU5LfSAke0xERkxBR1N9IgorR09fTElOS01PREUgPz0gIiIKK0dPX0xJTktNT0RFX2NsYXNzLW5hdGl2ZXNkayA9ICItLWxpbmttb2RlPWV4dGVybmFsIgorR09fTERGTEFHUyA/PSAnLWxkZmxhZ3M9IiR7R09fUlBBVEh9ICR7R09fTElOS01PREV9IC1leHRsZGZsYWdzICcke0dPX0VYVExERkxBR1N9JyInCitleHBvcnQgR09CVUlMREZMQUdTID89ICItdiAke0dPX0xERkxBR1N9IgorZXhwb3J0IEdPUFRFU1RCVUlMREZMQUdTID89ICIke0dPQlVJTERGTEFHU30gLWMiCitleHBvcnQgR09QVEVTVEZMQUdTID89ICItdGVzdC52IgorR09CVUlMREZMQUdTX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7R09fUEFSQUxMRUxfQlVJTER9ICIKKworZXhwb3J0IEdPID0gIiR7SE9TVF9QUkVGSVh9Z28iCitHT1RPT0xESVIgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7VEFSR0VUX1NZU30vZ28vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfSIKK0dPVE9PTERJUl9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvL3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0iCitleHBvcnQgR09UT09MRElSCisKK1NFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCitTRUNVUklUWV9MREZMQUdTID0gIiIKKworZXhwb3J0IENHT19FTkFCTEVEID89ICIxIgorZXhwb3J0IENHT19DRkxBR1MgPz0gIiR7Q0ZMQUdTfSIKK2V4cG9ydCBDR09fQ1BQRkxBR1MgPz0gIiR7Q1BQRkxBR1N9IgorZXhwb3J0IENHT19DWFhGTEFHUyA/PSAiJHtDWFhGTEFHU30iCitleHBvcnQgQ0dPX0xERkxBR1MgPz0gIiR7TERGTEFHU30iCiAKIEdPX0lOU1RBTEwgPz0gIiR7R09fSU1QT1JUfS8uLi4iCitHT19JTlNUQUxMX0ZJTFRFUk9VVCA/PSAiJHtHT19JTVBPUlR9L3ZlbmRvci8iCiAKLWRvX2dvX2NvbXBpbGUoKSB7Ci0JR09QQVRIPSR7U306JHtTVEFHSU5HX0xJQkRJUn0vJHtUQVJHRVRfU1lTfS9nbyBnbyBlbnYKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2V4cG9ydCBHT1BBVEggPSAiJHtCfSIKK0dPX1RNUERJUiA/PSAiJHtXT1JLRElSfS9nby10bXAiCitHT19UTVBESVJbdmFyZGVwdmFsdWVdID0gIiIKKworcHl0aG9uIGdvX2RvX3VucGFjaygpIHsKKyAgICBzcmNfdXJpID0gKGQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgIiIpLnNwbGl0KCkKKyAgICBpZiBsZW4oc3JjX3VyaSkgPT0gMDoKKyAgICAgICAgcmV0dXJuCisKKyAgICB0cnk6CisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goc3JjX3VyaSwgZCkKKyAgICAgICAgZm9yIHVybCBpbiBmZXRjaGVyLnVybHM6CisgICAgICAgICAgICBpZiBmZXRjaGVyLnVkW3VybF0udHlwZSA9PSAnZ2l0JzoKKyAgICAgICAgICAgICAgICBpZiBmZXRjaGVyLnVkW3VybF0ucGFybS5nZXQoJ2Rlc3RzdWZmaXgnKSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzX2Rpcm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCdTJykpCisgICAgICAgICAgICAgICAgICAgIGZldGNoZXIudWRbdXJsXS5wYXJtWydkZXN0c3VmZml4J10gPSBvcy5wYXRoLmpvaW4oc19kaXJuYW1lLCAnc3JjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignR09fSU1QT1JUJykpICsgJy8nCisgICAgICAgIGZldGNoZXIudW5wYWNrKGQuZ2V0VmFyKCdXT1JLRElSJykpCisgICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoZSkKK30KKworZ29fbGlzdF9wYWNrYWdlcygpIHsKKwkke0dPfSBsaXN0IC1mICd7ey5JbXBvcnRQYXRofX0nICR7R09CVUlMREZMQUdTfSAke0dPX0lOU1RBTEx9IHwgXAorCQllZ3JlcCAtdiAnJHtHT19JTlNUQUxMX0ZJTFRFUk9VVH0nCit9CisKK2dvX2xpc3RfcGFja2FnZV90ZXN0cygpIHsKKyAgICAke0dPfSBsaXN0IC1mICd7ey5JbXBvcnRQYXRofX0ge3suVGVzdEdvRmlsZXN9fScgJHtHT0JVSUxERkxBR1N9ICR7R09fSU5TVEFMTH0gfCBcCisJCWdyZXAgLXYgJ1xbXF0kJyB8IFwKKwkJZWdyZXAgLXYgJyR7R09fSU5TVEFMTF9GSUxURVJPVVR9JyB8IFwKKwkJYXdrICd7IHByaW50ICQxIH0nCit9CisKK2dvX2RvX2NvbmZpZ3VyZSgpIHsKKwlsbiAtc25mICR7U30vc3JjICR7Qn0vCit9CisKK2dvX2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IFRNUERJUj0iJHtHT19UTVBESVJ9IgorCSR7R099IGVudgogCWlmIFsgLW4gIiR7R09fSU5TVEFMTH0iIF07IHRoZW4KLQkJR09QQVRIPSR7U306JHtTVEFHSU5HX0xJQkRJUn0vJHtUQVJHRVRfU1lTfS9nbyBnbyBpbnN0YWxsIC12ICR7R09fSU5TVEFMTH0KKwkJJHtHT30gaW5zdGFsbCAke0dPX0xJTktTSEFSRUR9ICR7R09CVUlMREZMQUdTfSBgZ29fbGlzdF9wYWNrYWdlc2AKKwlmaQorfQorZG9fY29tcGlsZVtkaXJzXSA9KyAiJHtHT19UTVBESVJ9IgorZG9fY29tcGlsZVtjbGVhbmRpcnNdID0gIiR7Qn0vYmluICR7Qn0vcGtnIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIGV4cG9ydCBUTVBESVI9IiR7R09fVE1QRElSfSIKKyAgICBybSAtZiAke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0CisJZ29fbGlzdF9wYWNrYWdlX3Rlc3RzIHwgd2hpbGUgcmVhZCBwa2c7IGRvCisJCWNkICR7Qn0vc3JjLyRwa2cKKwkJJHtHT30gdGVzdCAke0dPUFRFU1RCVUlMREZMQUdTfSAkcGtnCisJCWZpbmQgLiAtbWluZGVwdGggMSAtbWF4ZGVwdGggMSAtdHlwZSBmIC1uYW1lICcqLnRlc3QnIC1leGVjIGVjaG8gJHBrZy97fSBcOyB8IFwKKwkJCXNlZCAtZSdzLC9cLi8sLywnPj4gJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAorCWRvbmUKK30KK2RvX2NvbXBpbGVfcHRlc3RfYmFzZVtkaXJzXSA9KyAiJHtHT19UTVBESVJ9IgorCitnb19kb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMvJHtHT19JTVBPUlR9CisJdGFyIC1DICR7U30vc3JjLyR7R09fSU1QT1JUfSAtY2YgLSAtLWV4Y2x1ZGUtdmNzIC0tZXhjbHVkZSAnKi50ZXN0JyAuIHwgXAorCQl0YXIgLUMgJHtEfSR7bGliZGlyfS9nby9zcmMvJHtHT19JTVBPUlR9IC0tbm8tc2FtZS1vd25lciAteGYgLQorCXRhciAtQyAke0J9IC1jZiAtIHBrZyB8IHRhciAtQyAke0R9JHtsaWJkaXJ9L2dvIC0tbm8tc2FtZS1vd25lciAteGYgLQorCisJaWYgWyAtbiAiYGxzICR7Qn0vJHtHT19CVUlMRF9CSU5ESVJ9L2AiIF07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJCWluc3RhbGwgLW0gMDc1NSAke0J9LyR7R09fQlVJTERfQklORElSfS8qICR7RH0ke2JpbmRpcn0vCiAJZmkKIH0KIAotZG9fZ29faW5zdGFsbCgpIHsKLQlybSAtcmYgJHtXT1JLRElSfS9zdGFnaW5nCi0JaW5zdGFsbCAtZCAke1dPUktESVJ9L3N0YWdpbmcke0dPUk9PVF9GSU5BTH0gJHtEfSR7R09ST09UX0ZJTkFMfQotCXRhciAtQyAke1N9IC1jZiAtIC4gfCB0YXIgLUMgJHtXT1JLRElSfS9zdGFnaW5nJHtHT1JPT1RfRklOQUx9IC14cHZmIC0KLQotCWZpbmQgJHtXT1JLRElSfS9zdGFnaW5nJHtHT1JPT1RfRklOQUx9IFwoIFwKLQkJLW5hbWUgXCouaW5kaXJlY3Rpb25zeW1saW5rIC1vIFwKLQkJLW5hbWUgLmdpdFwqIC1vICAgICAgICAgICAgICAgIFwKLQkJLW5hbWUgLmhnIC1vICAgICAgICAgICAgICAgICAgIFwKLQkJLW5hbWUgLnN2biAtbyAgICAgICAgICAgICAgICAgIFwKLQkJLW5hbWUgLnBjXCogLW8gICAgICAgICAgICAgICAgIFwKLQkJLW5hbWUgcGF0Y2hlc1wqICAgICAgICAgICAgICAgIFwKLQkJXCkgLXByaW50MCB8IFwKLQl4YXJncyAtcjAgcm0gLXJmCi0KLQl0YXIgLUMgJHtXT1JLRElSfS9zdGFnaW5nJHtHT1JPT1RfRklOQUx9IC1jZiAtIC4gfCBcCi0JdGFyIC1DICR7RH0ke0dPUk9PVF9GSU5BTH0gLXhwdmYgLQotCi0JY2hvd24gLVIgcm9vdDpyb290ICIke0R9JHtHT1JPT1RfRklOQUx9IgotCi0JaWYgWyAtZSAiJHtEfSR7R09CSU5fRklOQUx9IiBdOyB0aGVuCi0JCWluc3RhbGwgLWQgLW0gMDc1NSAiJHtEfSR7YmluZGlyfSIKLQkJZmluZCAiJHtEfSR7R09CSU5fRklOQUx9IiAhIC10eXBlIGQgLXByaW50MCB8IHhhcmdzIC1yMCBtdiAtLXRhcmdldC1kaXJlY3Rvcnk9IiR7RH0ke2JpbmRpcn0iCi0JCXJtZGlyIC1wICIke0R9JHtHT0JJTl9GSU5BTH0iIHx8IHRydWUKLQlmaQorZG9faW5zdGFsbF9wdGVzdF9iYXNlKCkgeworc2V0IC14CisgICAgdGVzdCAtZiAiJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdCIgfHwgZXhpdCAwCisgICAgdGVzdHM9IiIKKyAgICB3aGlsZSByZWFkIHRlc3Q7IGRvCisgICAgICAgIHRlc3RzPSIkdGVzdHMke3Rlc3RzOisgfSR7dGVzdCUudGVzdH0iCisgICAgICAgIHRlc3RkaXI9YGRpcm5hbWUgJHRlc3RgCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3RkaXIKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vc3JjLyR0ZXN0ICR7RH0ke1BURVNUX1BBVEh9LyR0ZXN0CisgICAgICAgIGlmIFsgLWQgIiR7Qn0vc3JjLyR0ZXN0ZGlyL3Rlc3RkYXRhIiBdOyB0aGVuCisgICAgICAgICAgICBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAiJHtCfS9zcmMvJHRlc3RkaXIvdGVzdGRhdGEiICR7RH0ke1BURVNUX1BBVEh9LyR0ZXN0ZGlyCisgICAgICAgIGZpCisgICAgZG9uZSA8ICR7Qn0vLmdvX2NvbXBpbGVkX3Rlc3RzLmxpc3QKKyAgICBpZiBbIC1uICIkdGVzdHMiIF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBjYXQgPiR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdCA8PEVPRgorIyEvYmluL3NoCitBTllGQUlMRUQ9MAorZm9yIHQgaW4gJHRlc3RzOyBkbworICAgIHRlc3RkaXI9XGBkaXJuYW1lIFwkdC50ZXN0XGAKKyAgICBpZiAoIGNkICIke1BURVNUX1BBVEh9L1wkdGVzdGRpciI7ICIke1BURVNUX1BBVEh9L1wkdC50ZXN0IiAke0dPUFRFU1RGTEFHU30gfCB0ZWUgL2Rldi9mZC85IHwgZ3JlcCAtcSAiXkZBSUwiICkgOT4mMTsgdGhlbgorICAgICAgICBBTllGQUlMRUQ9MQorICAgIGZpCitkb25lCitpZiBbIFwkQU5ZRkFJTEVEIC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJGQUlMOiAke1BOfSIKKyAgICBleGl0IDEKK2ZpCitlY2hvICJQQVNTOiAke1BOfSIKK2V4aXQgMAorRU9GCisgICAgICAgIGNobW9kICt4ICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorICAgIGVsc2UKKyAgICAgICAgcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9CisgICAgZmkKK3NldCAreAogfQogCi1kb19jb21waWxlKCkgewotCWRvX2dvX2NvbXBpbGUKLX0KK0VYUE9SVF9GVU5DVElPTlMgZG9fdW5wYWNrIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwKIAotZG9faW5zdGFsbCgpIHsKLQlkb19nb19pbnN0YWxsCi19CitGSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvL3NyYyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vZ28vcGtnIgorCitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyIKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJsZGZsYWdzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKaW5kZXggMTJkZjg4Zi4uNjYzYzlmZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCkBAIC0xLDE1ICsxLDM3IEBACi1CVUlMRF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignQlVJTERfT1MnLCBUcnVlKSwgZCl9IgotQlVJTERfR09BUkNIID0gIiR7QGdvX21hcF9hcmNoKGQuZ2V0VmFyKCdCVUlMRF9BUkNIJywgVHJ1ZSksIGQpfSIKK0JVSUxEX0dPT1MgPSAiJHtAZ29fbWFwX29zKGQuZ2V0VmFyKCdCVUlMRF9PUycpLCBkKX0iCitCVUlMRF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ0JVSUxEX0FSQ0gnKSwgZCl9IgogQlVJTERfR09UVVBMRSA9ICIke0JVSUxEX0dPT1N9XyR7QlVJTERfR09BUkNIfSIKLUhPU1RfR09PUyA9ICIke0Bnb19tYXBfb3MoZC5nZXRWYXIoJ0hPU1RfT1MnLCBUcnVlKSwgZCl9IgotSE9TVF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ0hPU1RfQVJDSCcsIFRydWUpLCBkKX0iCi1IT1NUX0dPQVJNID0gIiR7QGdvX21hcF9hcm0oZC5nZXRWYXIoJ0hPU1RfQVJDSCcsIFRydWUpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycsIFRydWUpLCBkKX0iCitIT1NUX0dPT1MgPSAiJHtAZ29fbWFwX29zKGQuZ2V0VmFyKCdIT1NUX09TJyksIGQpfSIKK0hPU1RfR09BUkNIID0gIiR7QGdvX21hcF9hcmNoKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZCl9IgorSE9TVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorSE9TVF9HTzM4NiA9ICIke0Bnb19tYXBfMzg2KGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogSE9TVF9HT1RVUExFID0gIiR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfSIKLVRBUkdFVF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignVEFSR0VUX09TJywgVHJ1ZSksIGQpfSIKLVRBUkdFVF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSksIGQpfSIKLVRBUkdFVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycsIFRydWUpLCBkKX0iCitUQVJHRVRfR09PUyA9ICIke0Bnb19tYXBfb3MoZC5nZXRWYXIoJ1RBUkdFVF9PUycpLCBkKX0iCitUQVJHRVRfR09BUkNIID0gIiR7QGdvX21hcF9hcmNoKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCitUQVJHRVRfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorVEFSR0VUX0dPMzg2ID0gIiR7QGdvX21hcF8zODYoZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKIFRBUkdFVF9HT1RVUExFID0gIiR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH0iCi1HT19CVUlMRF9CSU5ESVIgPSAiJHtAWydiaW4vJHtIT1NUX0dPVFVQTEV9JywnYmluJ11bZC5nZXRWYXIoJ0JVSUxEX0dPVFVQTEUnLFRydWUpID09IGQuZ2V0VmFyKCdIT1NUX0dPVFVQTEUnLFRydWUpXX0iCitHT19CVUlMRF9CSU5ESVIgPSAiJHtAWydiaW4vJHtIT1NUX0dPVFVQTEV9JywnYmluJ11bZC5nZXRWYXIoJ0JVSUxEX0dPVFVQTEUnKSA9PSBkLmdldFZhcignSE9TVF9HT1RVUExFJyldfSIKKworIyBHbyBzdXBwb3J0cyBkeW5hbWljIGxpbmtpbmcgb24gYSBsaW1pdGVkIHNldCBvZiBhcmNoaXRlY3R1cmVzLgorIyBTZWUgdGhlIHN1cHBvcnRzRHlubGluayBmdW5jdGlvbiBpbiBnby9zcmMvY21kL2NvbXBpbGUvaW50ZXJuYWwvZ2MvbWFpbi5nbworR09fRFlOTElOSyA9ICIiCitHT19EWU5MSU5LX2FybSA9ICIxIgorR09fRFlOTElOS19hYXJjaDY0ID0gIjEiCitHT19EWU5MSU5LX3g4NiA9ICIxIgorR09fRFlOTElOS194ODYtNjQgPSAiMSIKK0dPX0RZTkxJTktfcG93ZXJwYzY0ID0gIjEiCitHT19EWU5MSU5LX2NsYXNzLW5hdGl2ZSA9ICIiCisKKyMgZGVmaW5lIGhlcmUgYmVjYXVzZSBldmVyeWJvZHkgaW5oZXJpdHMgdGhpcyBjbGFzcworIworQ09NUEFUSUJMRV9IT1NUX2xpbnV4LWdudXgzMiA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX2xpbnV4LW11c2x4MzIgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tYXJjaD1taXBzMzJyMiIKIAogZGVmIGdvX21hcF9hcmNoKGEsIGQpOgogICAgIGltcG9ydCByZQpAQCAtMjEsMTQgKzQzLDE0IEBACiAgICAgICAgIHJldHVybiAnYXJtJwogICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQuKicsIGEpOgogICAgICAgICByZXR1cm4gJ2FybTY0JwotICAgIGVsaWYgcmUubWF0Y2goJ21pcHM2NGVsKicsIGEpOgorICAgIGVsaWYgcmUubWF0Y2goJ21pcHM2NGVsLionLCBhKToKICAgICAgICAgcmV0dXJuICdtaXBzNjRsZScKLSAgICBlbGlmIHJlLm1hdGNoKCdtaXBzNjQqJywgYSk6CisgICAgZWxpZiByZS5tYXRjaCgnbWlwczY0LionLCBhKToKICAgICAgICAgcmV0dXJuICdtaXBzNjQnCi0gICAgZWxpZiByZS5tYXRjaCgnbWlwc2VsKicsIGEpOgotICAgICAgICByZXR1cm4gJ21pcHNsZScKLSAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKicsIGEpOgorICAgIGVsaWYgYSA9PSAnbWlwcyc6CiAgICAgICAgIHJldHVybiAnbWlwcycKKyAgICBlbGlmIGEgPT0gJ21pcHNlbCc6CisgICAgICAgIHJldHVybiAnbWlwc2xlJwogICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSg2NCknLCBhKToKICAgICAgICAgcmV0dXJuICdwcGM2NCcKICAgICBlbGlmIHJlLm1hdGNoKCdwKHBjfG93ZXJwYykoNjRlbCknLCBhKToKQEAgLTQzLDYgKzY1LDE3IEBACiAgICAgICAgICAgICByZXR1cm4gJzcnCiAgICAgICAgIGVsaWYgJ2FybXY2JyBpbiBmOgogICAgICAgICAgICAgcmV0dXJuICc2JworICAgICAgICBlbGlmICdhcm12NScgaW4gZjoKKyAgICAgICAgICAgIHJldHVybiAnNScKKyAgICByZXR1cm4gJycKKworZGVmIGdvX21hcF8zODYoYSwgZiwgZCk6CisgICAgaW1wb3J0IHJlCisgICAgaWYgcmUubWF0Y2goJ2kuODYnLCBhKToKKyAgICAgICAgaWYgKCdjb3JlMicgaW4gZikgb3IgKCdjb3JlaTcnIGluIGYpOgorICAgICAgICAgICAgcmV0dXJuICdzc2UyJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICczODcnCiAgICAgcmV0dXJuICcnCiAKIGRlZiBnb19tYXBfb3MobywgZCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MKaW5kZXggZGY3ZmUxOC4uNjEwNDc5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcwpAQCAtMTcsNyArMTcsNiBAQAogIyAke0dSVUJfUk9PVH0gLSBncnViJ3Mgcm9vdCBkZXZpY2UuCiAKIGRvX2Jvb3RpbWdbZGVwZW5kc10gKz0gIiR7TUxQUkVGSVh9Z3J1Yi1lZmk6ZG9fZGVwbG95IgotZG9fYm9vdGRpcmVjdGRpc2tbZGVwZW5kc10gKz0gIiR7TUxQUkVGSVh9Z3J1Yi1lZmk6ZG9fZGVwbG95IgogCiBHUlVCX1NFUklBTCA/PSAiY29uc29sZT10dHlTMCwxMTUyMDAiCiBHUlVCX0NGR19WTSA9ICIke1N9L2dydWJfdm0uY2ZnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstZG9jLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcwppbmRleCAwYWUyNzI5Li41MjAxYzcxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcwpAQCAtNDgsNiArNDgsNyBAQAogIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKIGV4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQogCitHSVJfRVhUUkFfTElCU19QQVRIPVxgZmluZCAke0J9IC1uYW1lICouc28gLXByaW50ZiAiJWhcbiJ8c29ydHx1bmlxfCB0ciAnXG4nICc6J1xgXCRHSVJfRVhUUkFfTElCU19QQVRICiBHSVJfRVhUUkFfTElCU19QQVRIPVxgZmluZCAke0J9IC1uYW1lIC5saWJzfCB0ciAnXG4nICc6J1xgXCRHSVJfRVhUUkFfTElCU19QQVRICiAKIGlmIFsgLWQgIi5saWJzIiBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKaW5kZXggNzdiZjYxMS4uMWNjMWM0ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwpAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgIyBmb3Igb25lIHJlYXNvbiBvciB0aGUgb3RoZXIKICAgICAjIHRoaXMgaXMgdGhlIG9sZCBsaXN0ICh3aGljaCBkb2Vzbid0IHNlZW0gdG8gYmUgdmFsaWQgYW55bW9yZSwgYmVjYXVzZSBJIHdhcyBhYmxlIHRvIGJ1aWxkCiAgICAgIyBhbGwgdGhlc2Ugd2l0aCBpY2VjYyBlbmFibGVkKQotICAgICMgc3lzdGVtX3BhY2thZ2VfYmxhY2tsaXN0ID0gWyAidWNsaWJjIiwgImdsaWJjIiwgImdjYyIsICJiaW5kIiwgInUtYm9vdCIsICJkaGNwLWZvcndhcmRlciIsICJlbmNoYW50IiwgImNvbm5tYW4iLCAib3JiaXQyIiBdCisgICAgIyBzeXN0ZW1fcGFja2FnZV9ibGFja2xpc3QgPSBbICJnbGliYyIsICJnY2MiLCAiYmluZCIsICJ1LWJvb3QiLCAiZGhjcC1mb3J3YXJkZXIiLCAiZW5jaGFudCIsICJjb25ubWFuIiwgIm9yYml0MiIgXQogICAgICMgd2hlbiBhZGRpbmcgbmV3IGVudHJ5LCBwbGVhc2UgZG9jdW1lbnQgd2h5IChob3cgaXQgZmFpbGVkKSBzbyB0aGF0IHdlIGNhbiByZS1ldmFsdWF0ZSBpdCBsYXRlcgogICAgICMgZS5nLiB3aGVuIHRoZXJlIGlzIG5ldyB2ZXJzaW9uCiAgICAgIyBidWlsZGluZyBsaWJnY2MtaW5pdGlhbCB3aXRoIGljZWNjIGZhaWxzIHdpdGggQ1BQIHNhbml0eSBjaGVjayBlcnJvciBpZiBob3N0IHN5c3Jvb3QgY29udGFpbnMgY3Jvc3MgZ2NjIGJ1aWx0IGZvciBhbm90aGVyIHRhcmdldCB0dW5lL3ZhcmlhbnQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKaW5kZXggYTNkMWI0ZS4uMTYyM2MxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKQEAgLTM0LDIwICszNCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJHtNTFBSRUZJWH1zeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IFwKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKICAgICAgICAgICAgICAgICAgICAgICAgICR7QG9lLnV0aWxzLmlmZWxzZShkLmdldFZhcignQ09NUFJFU1NJU08nLCBGYWxzZSksJ3ppc29mcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsJycpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke1BOfTpkb19pbWFnZV9leHQ0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7UE59OmRvX2ltYWdlXyR7QGQuZ2V0VmFyKCdMSVZFX1JPT1RGU19UWVBFJykucmVwbGFjZSgnLScsICdfJyl9IFwKICAgICAgICAgICAgICAgICAgICAgICAgICIKIAogCiBMQUJFTFNfTElWRSA/PSAiYm9vdCBpbnN0YWxsIgogUk9PVF9MSVZFID89ICJyb290PS9kZXYvcmFtMCIKLUlOSVRSRF9JTUFHRV9MSVZFID89ICJjb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzIgorSU5JVFJEX0lNQUdFX0xJVkUgPz0gIiR7TUxQUkVGSVh9Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyIKIElOSVRSRF9MSVZFID89ICIke0RFUExPWV9ESVJfSU1BR0V9LyR7SU5JVFJEX0lNQUdFX0xJVkV9LSR7TUFDSElORX0uY3Bpby5neiIKIAotUk9PVEZTID89ICIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LmV4dDQiCitMSVZFX1JPT1RGU19UWVBFID89ICJleHQ0IgorUk9PVEZTID89ICIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LiR7TElWRV9ST09URlNfVFlQRX0iCiAKLUlNQUdFX1RZUEVERVBfbGl2ZSA9ICJleHQ0IgotSU1BR0VfVFlQRURFUF9pc28gPSAiZXh0NCIKLUlNQUdFX1RZUEVERVBfaGRkaW1nID0gImV4dDQiCitJTUFHRV9UWVBFREVQX2xpdmUgPSAiJHtMSVZFX1JPT1RGU19UWVBFfSIKK0lNQUdFX1RZUEVERVBfaXNvID0gIiR7TElWRV9ST09URlNfVFlQRX0iCitJTUFHRV9UWVBFREVQX2hkZGltZyA9ICIke0xJVkVfUk9PVEZTX1RZUEV9IgogSU1BR0VfVFlQRVNfTUFTS0VEICs9ICJsaXZlIGhkZGltZyBpc28iCiAKIHB5dGhvbigpIHsKQEAgLTkxLDcgKzkyLDcgQEAKIAlmb3IgZnMgaW4gJHtJTklUUkR9CiAJZG8KIAkJaWYgWyAhIC1zICIkZnMiIF07IHRoZW4KLQkJCWJibm90ZSAiSVNPIGltYWdlIHdpbGwgbm90IGJlIGNyZWF0ZWQuICRmcyBpcyBpbnZhbGlkLiIKKwkJCWJid2FybiAiSVNPIGltYWdlIHdpbGwgbm90IGJlIGNyZWF0ZWQuICRmcyBpcyBpbnZhbGlkLiIKIAkJCXJldHVybgogCQlmaQogCWRvbmUKQEAgLTIxNiwxMCArMjE3LDEwIEBACiAJZmkKIAogCWlmIFsgLXogIiR7SERESU1HX0lEfSIgXTsgdGhlbgotCQlta2Rvc2ZzICR7RkFUU0laRX0gLW4gJHtCT09USU1HX1ZPTFVNRV9JRH0gLVMgNTEyIC1DICR7RkFUSU1HfSBcCisJCW1rZG9zZnMgJHtGQVRTSVpFfSAtbiAke0JPT1RJTUdfVk9MVU1FX0lEfSAke01LRE9TRlNfRVhUUkFPUFRTfSAtQyAke0ZBVElNR30gXAogCQkJJHtCTE9DS1N9CiAJZWxzZQotCQlta2Rvc2ZzICR7RkFUU0laRX0gLW4gJHtCT09USU1HX1ZPTFVNRV9JRH0gLVMgNTEyIC1DICR7RkFUSU1HfSBcCisJCW1rZG9zZnMgJHtGQVRTSVpFfSAtbiAke0JPT1RJTUdfVk9MVU1FX0lEfSAke01LRE9TRlNfRVhUUkFPUFRTfSAtQyAke0ZBVElNR30gXAogCQkke0JMT0NLU30gLWkgJHtIRERJTUdfSUR9CiAJZmkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcwppbmRleCA0MTU3ZGYwLi5mM2JiNjhiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcwpAQCAtMSw2ICsxLDYgQEAKIGRvX3Jvb3Rmc1tkZXBlbmRzXSArPSAicHJlbGluay1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAotSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EICs9ICJwcmVsaW5rX3NldHVwOyBwcmVsaW5rX2ltYWdlOyAiCitJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkRfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIHByZWxpbmtfc2V0dXA7IHByZWxpbmtfaW1hZ2U7ICIKIAogcHl0aG9uIHByZWxpbmtfc2V0dXAgKCkgewogICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKQEAgLTM2LDcgKzM2LDE3IEBACiAJZHluYW1pY19sb2FkZXI9JChsaW51eGxvYWRlcikKIAogCSMgcHJlbGluayEKLQkke1NUQUdJTkdfU0JJTkRJUl9OQVRJVkV9L3ByZWxpbmsgLS1yb290ICR7SU1BR0VfUk9PVEZTfSAtYW1SIC1OIC1jICR7c3lzY29uZmRpcn0vcHJlbGluay5jb25mIC0tZHluYW1pYy1saW5rZXIgJGR5bmFtaWNfbG9hZGVyCisJaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorCQliYm5vdGUgIiBwcmVsaW5rOiBCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMuLi4iCisJCWlmIFsgIiRSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyIgPSAiIiBdOyB0aGVuCisJCQlleHBvcnQgUFJFTElOS19USU1FU1RBTVA9YGdpdCBsb2cgLTEgLS1wcmV0dHk9JWN0IGAKKwkJZWxzZQorCQkJZXhwb3J0IFBSRUxJTktfVElNRVNUQU1QPSRSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUworCQlmaQorCQkke1NUQUdJTkdfU0JJTkRJUl9OQVRJVkV9L3ByZWxpbmsgLS1yb290ICR7SU1BR0VfUk9PVEZTfSAtYW0gLU4gLWMgJHtzeXNjb25mZGlyfS9wcmVsaW5rLmNvbmYgLS1keW5hbWljLWxpbmtlciAkZHluYW1pY19sb2FkZXIKKwllbHNlCisJCSR7U1RBR0lOR19TQklORElSX05BVElWRX0vcHJlbGluayAtLXJvb3QgJHtJTUFHRV9ST09URlN9IC1hbVIgLU4gLWMgJHtzeXNjb25mZGlyfS9wcmVsaW5rLmNvbmYgLS1keW5hbWljLWxpbmtlciAkZHluYW1pY19sb2FkZXIKKwlmaQogCiAJIyBSZW1vdmUgdGhlIHByZWxpbmsuY29uZiBpZiB3ZSBoYWQgdG8gYWRkIGl0LgogCWlmIFsgIiRkdW1teV9wcmVsaW5rX2NvbmYiID0gInRydWUiIF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2Utdm0uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2Utdm0uYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThiZDkyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXZtLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotIyBpbWFnZS12bS5iYmNsYXNzCi0jIChsb29zbHkgYmFzZWQgb2ZmIGltYWdlLWxpdmUuYmJjbGFzcyBDb3B5cmlnaHQgKEMpIDIwMDQsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4pCi0jCi0jIENyZWF0ZSBhbiBpbWFnZSB3aGljaCBjYW4gYmUgcGxhY2VkIGRpcmVjdGx5IG9udG8gYSBoYXJkZGlzayB1c2luZyBkZCBhbmQgdGhlbgotIyBib290ZWQuCi0jCi0jIFRoaXMgdXNlcyBzeXNsaW51eC4gZXh0bGludXggd291bGQgaGF2ZSBiZWVuIG5pY2UgYnV0IHJlcXVpcmVkIHRoZSBleHQyLzMKLSMgcGFydGl0aW9uIHRvIGJlIG1vdW50ZWQuIGdydWIgcmVxdWlyZXMgdG8gcnVuIGl0c2VsZiBhcyBwYXJ0IG9mIHRoZSBpbnN0YWxsCi0jIHByb2Nlc3MuCi0jCi0jIFRoZSBlbmQgcmVzdWx0IGlzIGEgNTEyIGJvb3Qgc2VjdG9yIHBvcHVsYXRlZCB3aXRoIGFuIE1CUiBhbmQgcGFydGl0aW9uIHRhYmxlCi0jIGZvbGxvd2VkIGJ5IGFuIG1zZG9zIGZhdDE2IHBhcnRpdGlvbiBjb250YWluaW5nIHN5c2xpbnV4IGFuZCBhIGxpbnV4IGtlcm5lbAotIyBjb21wbGV0ZWQgYnkgdGhlIGV4dDIvMyByb290ZnMuCi0jCi0jIFdlIGhhdmUgdG8gcHVzaCB0aGUgbXNkb3MgcGFyaXRpb24gdGFibGUgc2l6ZSA+IDE2TUIgc28gZmF0IDE2IGlzIHVzZWQgYXMgcGFydGVkCi0jIHdvbid0IHRvdWNoIGZhdDEyIHBhcnRpdGlvbnMuCi0KLWluaGVyaXQgbGl2ZS12bS1jb21tb24KLQotZG9fYm9vdGRpcmVjdGRpc2tbZGVwZW5kc10gKz0gImRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwva2VybmVsOmRvX2RlcGxveSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzbGludXg6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRlZC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfTpkb19pbWFnZV8ke1ZNX1JPT1RGU19UWVBFfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1JTUFHRV9UWVBFREVQX3ZtZGsgPSAiJHtWTV9ST09URlNfVFlQRX0iCi1JTUFHRV9UWVBFREVQX3ZkaSA9ICIke1ZNX1JPT1RGU19UWVBFfSIKLUlNQUdFX1RZUEVERVBfcWNvdzIgPSAiJHtWTV9ST09URlNfVFlQRX0iCi1JTUFHRV9UWVBFREVQX2hkZGRpcmVjdCA9ICIke1ZNX1JPT1RGU19UWVBFfSIKLUlNQUdFX1RZUEVTX01BU0tFRCArPSAidm1kayB2ZGkgcWNvdzIgaGRkZGlyZWN0IgotCi1WTV9ST09URlNfVFlQRSA/PSAiZXh0NCIKLVJPT1RGUyA/PSAiJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS4ke1ZNX1JPT1RGU19UWVBFfSIKLQotIyBVc2VkIGJ5IGJvb3Rsb2FkZXIKLUxBQkVMU19WTSA/PSAiYm9vdCIKLVJPT1RfVk0gPz0gInJvb3Q9L2Rldi9zZGEyIgotIyBVc2luZyBhbiBpbml0cmFtZnMgaXMgb3B0aW9uYWwuIEVuYWJsZSBpdCBieSBzZXR0aW5nIElOSVRSRF9JTUFHRV9WTS4KLUlOSVRSRF9JTUFHRV9WTSA/PSAiIgotSU5JVFJEX1ZNID89ICIke0AnJHtJTUdERVBMT1lESVJ9LyR7SU5JVFJEX0lNQUdFX1ZNfS0ke01BQ0hJTkV9LmNwaW8uZ3onIGlmICcke0lOSVRSRF9JTUFHRV9WTX0nIGVsc2UgJyd9IgotZG9fYm9vdGRpcmVjdGRpc2tbZGVwZW5kc10gKz0gIiR7QCcke0lOSVRSRF9JTUFHRV9WTX06ZG9faW1hZ2VfY29tcGxldGUnIGlmICcke0lOSVRSRF9JTUFHRV9WTX0nIGVsc2UgJyd9IgotCi1CT09URERfVk9MVU1FX0lEICAgPz0gImJvb3QiCi1CT09URERfRVhUUkFfU1BBQ0UgPz0gIjE2Mzg0IgotCi1ESVNLX1NJR05BVFVSRSA/PSAiJHtESVNLX1NJR05BVFVSRV9HRU5FUkFURUR9IgotRElTS19TSUdOQVRVUkVbdmFyZGVwc2V4Y2x1ZGVdID0gIkRJU0tfU0lHTkFUVVJFX0dFTkVSQVRFRCIKLQotYnVpbGRfYm9vdF9kZCgpIHsKLQlIRERESVI9IiR7U30vaGRkL2Jvb3QiCi0JSERESU1HPSIke1N9L2hkZC5pbWFnZSIKLQlJTUFHRT0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfS5oZGRkaXJlY3QKLQotCXBvcHVsYXRlX2tlcm5lbCAkSERERElSCi0KLQlpZiBbICIke1BDQklPU30iID0gIjEiIF07IHRoZW4KLQkJc3lzbGludXhfaGRkaW1nX3BvcHVsYXRlICRIRERESVIKLQlmaQotCWlmIFsgIiR7RUZJfSIgPSAiMSIgXTsgdGhlbgotCQllZmlfaGRkaW1nX3BvcHVsYXRlICRIRERESVIKLQlmaQotCi0JQkxPQ0tTPWBkdSAtYmtzICRIRERESVIgfCBjdXQgLWYgMWAKLQlCTE9DS1M9YGV4cHIgJEJMT0NLUyArICR7Qk9PVEREX0VYVFJBX1NQQUNFfWAKLQotCSMgUmVtb3ZlIGl0IHNpbmNlIG1rZG9zZnMgd291bGQgZmFpbCB3aGVuIGl0IGV4aXN0cwotCXJtIC1mICRIRERJTUcKLQlta2Rvc2ZzIC1uICR7Qk9PVEREX1ZPTFVNRV9JRH0gLVMgNTEyIC1DICRIRERJTUcgJEJMT0NLUyAKLQltY29weSAtaSAkSERESU1HIC1zICRIRERESVIvKiA6Oi8KLQotCWlmIFsgIiR7UENCSU9TfSIgPSAiMSIgXTsgdGhlbgotCQlzeXNsaW51eF9oZGRkaXJlY3RfaW5zdGFsbCAkSERESU1HCi0JZmkJCi0JY2htb2QgNjQ0ICRIRERJTUcKLQotCVJPT1RGU0JMT0NLUz1gZHUgLUxia3MgJHtST09URlN9IHwgY3V0IC1mIDFgCi0JVE9UQUxTSVpFPWBleHByICRCTE9DS1MgKyAkUk9PVEZTQkxPQ0tTYAotCUVORDE9YGV4cHIgJEJMT0NLUyBcKiAxMDI0YAotCUVORDI9YGV4cHIgJEVORDEgKyA1MTJgCi0JRU5EMz1gZXhwciBcKCAkUk9PVEZTQkxPQ0tTIFwqIDEwMjQgXCkgKyAkRU5EMWAKLQotCWVjaG8gJFJPT1RGU0JMT0NLUyAkVE9UQUxTSVpFICRFTkQxICRFTkQyICRFTkQzCi0Jcm0gLXJmICRJTUFHRQotCWRkIGlmPS9kZXYvemVybyBvZj0kSU1BR0UgYnM9MTAyNCBzZWVrPSRUT1RBTFNJWkUgY291bnQ9MQotCi0JcGFydGVkICRJTUFHRSBta2xhYmVsIG1zZG9zCi0JcGFydGVkICRJTUFHRSBta3BhcnQgcHJpbWFyeSBmYXQxNiAwICR7RU5EMX1CCi0JcGFydGVkICRJTUFHRSB1bml0IEIgbWtwYXJ0IHByaW1hcnkgZXh0MiAke0VORDJ9QiAke0VORDN9QgotCXBhcnRlZCAkSU1BR0Ugc2V0IDEgYm9vdCBvbiAKLQotCXBhcnRlZCAkSU1BR0UgcHJpbnQKLQotCWF3ayAiQkVHSU4geyBwcmludGYgXCIkKGVjaG8gJHtESVNLX1NJR05BVFVSRX0gfCBzZWQgJ3MvXCguLlwpXCguLlwpXCguLlwpXCguLlwpL1xceFw0XFx4XDNcXHhcMlxceFwxLycpXCIgfSIgfCBcCi0JCWRkIG9mPSRJTUFHRSBicz0xIHNlZWs9NDQwIGNvbnY9bm90cnVuYwotCi0JT0ZGU0VUPWBleHByICRFTkQyIC8gNTEyYAotCWlmIFsgIiR7UENCSU9TfSIgPSAiMSIgXTsgdGhlbgotCQlkZCBpZj0ke1NUQUdJTkdfREFUQURJUn0vc3lzbGludXgvbWJyLmJpbiBvZj0kSU1BR0UgY29udj1ub3RydW5jCi0JZmkKLQotCWRkIGlmPSRIRERJTUcgb2Y9JElNQUdFIGNvbnY9bm90cnVuYyBzZWVrPTEgYnM9NTEyCi0JZGQgaWY9JHtST09URlN9IG9mPSRJTUFHRSBjb252PW5vdHJ1bmMgc2Vlaz0kT0ZGU0VUIGJzPTUxMgotCi0JY2QgJHtJTUdERVBMT1lESVJ9Ci0KLQlsbiAtc2YgJHtJTUFHRV9OQU1FfS5oZGRkaXJlY3QgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5oZGRkaXJlY3QKLX0gCi0KLXB5dGhvbiBkb19ib290ZGlyZWN0ZGlzaygpIHsKLSAgICB2YWxpZGF0ZV9kaXNrX3NpZ25hdHVyZShkKQotICAgIHNldF9saXZlX3ZtX3ZhcnMoZCwgJ1ZNJykKLSAgICBpZiBkLmdldFZhcigiUENCSU9TIikgPT0gIjEiOgotICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2J1aWxkX3N5c2xpbnV4X2NmZycsIGQpCi0gICAgaWYgZC5nZXRWYXIoIkVGSSIpID09ICIxIjoKLSAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdidWlsZF9lZmlfY2ZnJywgZCkKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2J1aWxkX2Jvb3RfZGQnLCBkKQotfQotCi1kZWYgZ2VuZXJhdGVfZGlza19zaWduYXR1cmUoKToKLSAgICBpbXBvcnQgdXVpZAotCi0gICAgc2lnbmF0dXJlID0gc3RyKHV1aWQudXVpZDQoKSlbOjhdCi0KLSAgICBpZiBzaWduYXR1cmUgIT0gJzAwMDAwMDAwJzoKLSAgICAgICAgcmV0dXJuIHNpZ25hdHVyZQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnZmZmZmZmZmYnCi0KLWRlZiB2YWxpZGF0ZV9kaXNrX3NpZ25hdHVyZShkKToKLSAgICBpbXBvcnQgcmUKLQotICAgIGRpc2tfc2lnbmF0dXJlID0gZC5nZXRWYXIoIkRJU0tfU0lHTkFUVVJFIikKLQotICAgIGlmIG5vdCByZS5tYXRjaChyJ15bMC05YS1mQS1GXXs4fSQnLCBkaXNrX3NpZ25hdHVyZSk6Ci0gICAgICAgIGJiLmZhdGFsKCJESVNLX1NJR05BVFVSRSAnJXMnIG11c3QgYmUgYW4gOCBkaWdpdCBoZXggc3RyaW5nIiAlIGRpc2tfc2lnbmF0dXJlKQotCi1ESVNLX1NJR05BVFVSRV9HRU5FUkFURUQgOj0gIiR7QGdlbmVyYXRlX2Rpc2tfc2lnbmF0dXJlKCl9IgotCi1ydW5fcWVtdV9pbWcgKCl7Ci0gICAgdHlwZT0iJDEiCi0gICAgcWVtdS1pbWcgY29udmVydCAtTyAkdHlwZSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LmhkZGRpcmVjdCAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfS4kdHlwZQotCi0gICAgbG4gLXNmICR7SU1BR0VfTkFNRX0uJHR5cGUgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS4kdHlwZQotfQotY3JlYXRlX3ZtZGtfaW1hZ2UgKCkgewotICAgIHJ1bl9xZW11X2ltZyB2bWRrCi19Ci0KLWNyZWF0ZV92ZGlfaW1hZ2UgKCkgewotICAgIHJ1bl9xZW11X2ltZyB2ZGkKLX0KLQotY3JlYXRlX3Fjb3cyX2ltYWdlICgpIHsKLSAgICBydW5fcWVtdV9pbWcgcWNvdzIKLX0KLQotcHl0aG9uIGRvX3ZtaW1nKCkgewotICAgIGlmICd2bWRrJyBpbiBkLmdldFZhcignSU1BR0VfRlNUWVBFUycpOgotICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2NyZWF0ZV92bWRrX2ltYWdlJywgZCkKLSAgICBpZiAndmRpJyBpbiBkLmdldFZhcignSU1BR0VfRlNUWVBFUycpOgotICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2NyZWF0ZV92ZGlfaW1hZ2UnLCBkKQotICAgIGlmICdxY293MicgaW4gZC5nZXRWYXIoJ0lNQUdFX0ZTVFlQRVMnKToKLSAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdjcmVhdGVfcWNvdzJfaW1hZ2UnLCBkKQotfQotCi1hZGR0YXNrIGJvb3RkaXJlY3RkaXNrIGJlZm9yZSBkb192bWltZwotYWRkdGFzayB2bWltZyBhZnRlciBkb19ib290ZGlyZWN0ZGlzayBiZWZvcmUgZG9faW1hZ2VfY29tcGxldGUKLWRvX3ZtaW1nW2RlcGVuZHNdICs9ICJxZW11LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCmluZGV4IDRiY2ZiODcuLmQ4OGNlNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKQEAgLTksNyArOSw3IEBACiBUT09MQ0hBSU5fVEFSR0VUX1RBU0tfQVRURU1QVE9OTFkgKz0gIiR7UEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZfSIKIFBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EICs9ICJyb290ZnNfc3lzcm9vdF9yZWxhdGl2ZWxpbmtzOyAiCiAKLUxJQ0VOU0UgPSAiTUlUIgorTElDRU5TRSA/PSAiTUlUIgogUEFDS0FHRVMgPSAiIgogREVQRU5EUyArPSAiJHtNTFBSRUZJWH1xZW11d3JhcHBlci1jcm9zcyBkZXBtb2R3cmFwcGVyLWNyb3NzIgogUkRFUEVORFMgKz0gIiR7UEFDS0FHRV9JTlNUQUxMfSAke0xJTkdVQVNfSU5TVEFMTH0iCkBAIC0zMyw3ICszMyw3IEBACiAKICMgVGhlc2UgcGFja2FnZXMgd2lsbCBiZSByZW1vdmVkIGZyb20gYSByZWFkLW9ubHkgcm9vdGZzIGFmdGVyIGFsbCBvdGhlcgogIyBwYWNrYWdlcyBoYXZlIGJlZW4gaW5zdGFsbGVkCi1ST09URlNfUk9fVU5ORUVERUQgPSAidXBkYXRlLXJjLmQgYmFzZS1wYXNzd2Qgc2hhZG93ICR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9ICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKK1JPT1RGU19ST19VTk5FRURFRCA/Pz0gInVwZGF0ZS1yYy5kIGJhc2UtcGFzc3dkIHNoYWRvdyAke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSAke1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTH0iCiAKICMgcGFja2FnZXMgdG8gaW5zdGFsbCBmcm9tIGZlYXR1cmVzCiBGRUFUVVJFX0lOU1RBTEwgPSAiJHtAJyAnLmpvaW4ob2UucGFja2FnZWdyb3VwLnJlcXVpcmVkX3BhY2thZ2VzKG9lLmRhdGEudHlwZWRfdmFsdWUoJ0lNQUdFX0ZFQVRVUkVTJywgZCksIGQpKX0iCkBAIC04NSw3ICs4NSw2IEBACiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogCiBMRENPTkZJR0RFUEVORCA/PSAibGRjb25maWctbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi1MRENPTkZJR0RFUEVORF9saWJjLXVjbGliYyA9ICIiCiBMRENPTkZJR0RFUEVORF9saWJjLW11c2wgPSAiIgogCiAjIFRoaXMgaXMgbmVlZGVkIHRvIGhhdmUgZGVwbW9kIGRhdGEgaW4gUEtHREFUQV9ESVIsCkBAIC0xMTgsNyArMTE3LDcgQEAKICAgICAgICAgICAgICAgICAgJ0lNQUdFX1JPT1RGU19NQVhTSVpFJywnSU1BR0VfTkFNRScsJ0lNQUdFX0xJTktfTkFNRScsJ0lNQUdFX01BTklGRVNUJywnREVQTE9ZX0RJUl9JTUFHRScsJ0lNQUdFX0ZTVFlQRVMnLCdJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknLCdJTUFHRV9MSU5HVUFTJywKICAgICAgICAgICAgICAgICAgJ01VTFRJTElCUkVfQUxMT1dfUkVQJywnTVVMVElMSUJfVEVNUF9ST09URlMnLCdNVUxUSUxJQl9WQVJJQU5UUycsJ01VTFRJTElCUycsJ0FMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTJywnTVVMVElMSUJfR0xPQkFMX1ZBUklBTlRTJywnQkFEX1JFQ09NTUVOREFUSU9OUycsJ05PX1JFQ09NTUVOREFUSU9OUycsCiAgICAgICAgICAgICAgICAgICdQQUNLQUdFX0FSQ0hTJywnUEFDS0FHRV9DTEFTU0VTJywnVEFSR0VUX1ZFTkRPUicsJ1RBUkdFVF9BUkNIJywnVEFSR0VUX09TJywnT1ZFUlJJREVTJywnQkJFWFRFTkRWQVJJQU5UJywnRkVFRF9ERVBMT1lESVJfQkFTRV9VUkknLCdJTlRFUkNFUFRfRElSJywnVVNFX0RFVkZTJywKLSAgICAgICAgICAgICAgICAgJ0NPTlZFUlNJT05UWVBFUycsICdJTUFHRV9HRU5fREVCVUdGUycsICdST09URlNfUk9fVU5ORUVERUQnLCAnSU1HREVQTE9ZRElSJywgJ1BBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZJ10KKyAgICAgICAgICAgICAgICAgJ0NPTlZFUlNJT05UWVBFUycsICdJTUFHRV9HRU5fREVCVUdGUycsICdST09URlNfUk9fVU5ORUVERUQnLCAnSU1HREVQTE9ZRElSJywgJ1BBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZJywgJ1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTJ10KICAgICB2YXJpYWJsZXMuZXh0ZW5kKHJvb3Rmc19jb21tYW5kX3ZhcmlhYmxlcyhkKSkKICAgICB2YXJpYWJsZXMuZXh0ZW5kKHZhcmlhYmxlX2RlcGVuZHMoZCkpCiAgICAgcmV0dXJuICIgIi5qb2luKHZhcmlhYmxlcykKQEAgLTEzOSw5ICsxMzgsNiBAQAogSU1BR0VfVFlQRV9saXZlID0gIiR7QGJ1aWxkX2xpdmUoZCl9IgogaW5oZXJpdCAke0lNQUdFX1RZUEVfbGl2ZX0KIAotSU1BR0VfVFlQRV92bSA9ICcke0BiYi51dGlscy5jb250YWluc19hbnkoIklNQUdFX0ZTVFlQRVMiLCBbInZtZGsiLCAidmRpIiwgInFjb3cyIiwgImhkZGRpcmVjdCJdLCAiaW1hZ2Utdm0iLCAiIiwgZCl9JwotaW5oZXJpdCAke0lNQUdFX1RZUEVfdm19Ci0KIElNQUdFX1RZUEVfY29udGFpbmVyID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCJJTUFHRV9GU1RZUEVTIiwgImNvbnRhaW5lciIsICJpbWFnZS1jb250YWluZXIiLCAiIiwgZCl9JwogaW5oZXJpdCAke0lNQUdFX1RZUEVfY29udGFpbmVyfQogCkBAIC0xNDksMTQgKzE0NSwxOCBAQAogaW5oZXJpdCAke0lNQUdFX1RZUEVfd2ljfQogCiBweXRob24gKCkgeworICAgIGRlZiBleHRyYWltYWdlX2dldGRlcGVuZHModGFzayk6CisgICAgICAgIGRlcHMgPSAiIgorICAgICAgICBmb3IgZGVwIGluIChkLmdldFZhcignRVhUUkFfSU1BR0VERVBFTkRTJykgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgICAgICBkZXBzICs9ICIgJXM6JXMiICUgKGRlcCwgdGFzaykKKyAgICAgICAgcmV0dXJuIGRlcHMKKworICAgIGQuYXBwZW5kVmFyRmxhZygnZG9faW1hZ2UnLCAnZGVwZW5kcycsIGV4dHJhaW1hZ2VfZ2V0ZGVwZW5kcygnZG9fcG9wdWxhdGVfbGljJykpCisgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZV9jb21wbGV0ZScsICdkZXBlbmRzJywgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKCdkb19wb3B1bGF0ZV9zeXNyb290JykpCisKICAgICBkZXBzID0gIiAiICsgaW1hZ2V0eXBlc19nZXRkZXBlbmRzKGQpCiAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19yb290ZnMnLCAnZGVwZW5kcycsIGRlcHMpCiAKLSAgICBkZXBzID0gIiIKLSAgICBmb3IgZGVwIGluIChkLmdldFZhcignRVhUUkFfSU1BR0VERVBFTkRTJykgb3IgIiIpLnNwbGl0KCk6Ci0gICAgICAgIGRlcHMgKz0gIiAlczpkb19wb3B1bGF0ZV9zeXNyb290IiAlIGRlcAotICAgIGQuYXBwZW5kVmFyRmxhZygnZG9faW1hZ2VfY29tcGxldGUnLCAnZGVwZW5kcycsIGRlcHMpCi0KICAgICAjcHJvY2VzcyBJTUFHRV9GRUFUVVJFUywgd2UgbXVzdCBkbyB0aGlzIGJlZm9yZSBydW50aW1lX21hcHBpbmdfcmVuYW1lCiAgICAgI0NoZWNrIGZvciByZXBsYWNlcyBpbWFnZSBmZWF0dXJlcwogICAgIGZlYXR1cmVzID0gc2V0KG9lLmRhdGEudHlwZWRfdmFsdWUoJ0lNQUdFX0ZFQVRVUkVTJywgZCkpCkBAIC0yNTQsNiArMjU0LDcgQEAKICAgICBwcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKIAogICAgICMgZ2VuZXJhdGUgcm9vdGZzCisgICAgZC5zZXRWYXJGbGFnKCdSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUycsICdleHBvcnQnLCAnMScpCiAgICAgY3JlYXRlX3Jvb3RmcyhkLCBwcm9ncmVzc19yZXBvcnRlcj1wcm9ncmVzc19yZXBvcnRlciwgbG9nY2F0Y2hlcj1sb2djYXRjaGVyKQogCiAgICAgcHJvZ3Jlc3NfcmVwb3J0ZXIuZmluaXNoKCkKQEAgLTI2MSwxOCArMjYyLDE5IEBACiBkb19yb290ZnNbZGlyc10gPSAiJHtUT1BESVJ9IgogZG9fcm9vdGZzW2NsZWFuZGlyc10gKz0gIiR7U30gJHtJTUdERVBMT1lESVJ9IgogZG9fcm9vdGZzW3VtYXNrXSA9ICIwMjIiCi1hZGR0YXNrIHJvb3RmcyBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdAorYWRkdGFzayByb290ZnMgYWZ0ZXIgZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdAogCiBmYWtlcm9vdCBweXRob24gZG9faW1hZ2UgKCkgewogICAgIGZyb20gb2UudXRpbHMgaW1wb3J0IGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcwogCisgICAgZC5zZXRWYXJGbGFnKCdSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUycsICdleHBvcnQnLCAnMScpCiAgICAgcHJlX3Byb2Nlc3NfY21kcyA9IGQuZ2V0VmFyKCJJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQiKQogCiAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKGQsIHByZV9wcm9jZXNzX2NtZHMpCiB9CiBkb19pbWFnZVtkaXJzXSA9ICIke1RPUERJUn0iCiBkb19pbWFnZVt1bWFza10gPSAiMDIyIgotYWRkdGFzayBkb19pbWFnZSBhZnRlciBkb19yb290ZnMgYmVmb3JlIGRvX2J1aWxkCithZGR0YXNrIGRvX2ltYWdlIGFmdGVyIGRvX3Jvb3RmcwogCiBmYWtlcm9vdCBweXRob24gZG9faW1hZ2VfY29tcGxldGUgKCkgewogICAgIGZyb20gb2UudXRpbHMgaW1wb3J0IGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcwpAQCAtMjg5LDE0ICsyOTEsMjEgQEAKIGRvX2ltYWdlX2NvbXBsZXRlW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IgogZG9faW1hZ2VfY29tcGxldGVbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FfSIKIGFkZHRhc2sgZG9faW1hZ2VfY29tcGxldGUgYWZ0ZXIgZG9faW1hZ2UgYmVmb3JlIGRvX2J1aWxkCitweXRob24gZG9faW1hZ2VfY29tcGxldGVfc2V0c2NlbmUgKCkgeworICAgIHNzdGF0ZV9zZXRzY2VuZShkKQorfQorYWRkdGFzayBkb19pbWFnZV9jb21wbGV0ZV9zZXRzY2VuZQogCiAjIEFkZCBpbWFnZS1sZXZlbCBRQS9zYW5pdHkgY2hlY2tzIHRvIElNQUdFX1FBX0NPTU1BTkRTCiAjCiAjIElNQUdFX1FBX0NPTU1BTkRTICs9ICIgXAogIyAgICAgaW1hZ2VfY2hlY2tfZXZlcnl0aGluZ19vayBcCiAjICIKLSMgVGhpcyB0YXNrIHJ1bnMgYWxsIGZ1bmN0aW9ucyBpbiBJTUFHRV9RQV9DT01NQU5EUyBhZnRlciB0aGUgaW1hZ2UKKyMgVGhpcyB0YXNrIHJ1bnMgYWxsIGZ1bmN0aW9ucyBpbiBJTUFHRV9RQV9DT01NQU5EUyBhZnRlciB0aGUgcm9vdGZzCiAjIGNvbnN0cnVjdGlvbiBoYXMgY29tcGxldGVkIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSByZXN1bHRpbmcgaW1hZ2UuCisjCisjIFRoZSBmdW5jdGlvbnMgc2hvdWxkIHVzZSAke0lNQUdFX1JPT1RGU30gdG8gZmluZCB0aGUgdW5wYWNrZWQgcm9vdGZzCisjIGRpcmVjdG9yeSwgd2hpY2ggaWYgUUEgcGFzc2VzIHdpbGwgYmUgdGhlIGJhc2lzIGZvciB0aGUgaW1hZ2VzLgogZmFrZXJvb3QgcHl0aG9uIGRvX2ltYWdlX3FhICgpIHsKICAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBJbWFnZVFBRmFpbGVkCiAKQEAgLTMxOCw3ICszMjcsMTYgQEAKICAgICAgICAgaW1nbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9OQU1FJykKICAgICAgICAgYmIuZmF0YWwoIlFBIGVycm9ycyBmb3VuZCB3aGlsc3QgdmFsaWRhdGluZyBpbWFnZTogJXNcbiVzIiAlIChpbWduYW1lLCBxYW1zZykpCiB9Ci1hZGR0YXNrIGRvX2ltYWdlX3FhIGFmdGVyIGRvX2ltYWdlX2NvbXBsZXRlIGJlZm9yZSBkb19idWlsZAorYWRkdGFzayBkb19pbWFnZV9xYSBhZnRlciBkb19yb290ZnMgYmVmb3JlIGRvX2ltYWdlCisKK1NTVEFURVRBU0tTICs9ICJkb19pbWFnZV9xYSIKK1NTVEFURV9TS0lQX0NSRUFUSU9OX3Rhc2staW1hZ2UtcWEgPSAnMScKK2RvX2ltYWdlX3FhW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiIKK2RvX2ltYWdlX3FhW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIiCitweXRob24gZG9faW1hZ2VfcWFfc2V0c2NlbmUgKCkgeworICAgIHNzdGF0ZV9zZXRzY2VuZShkKQorfQorYWRkdGFzayBkb19pbWFnZV9xYV9zZXRzY2VuZQogCiBkZWYgc2V0dXBfZGVidWdmc192YXJpYWJsZXMoZCk6CiAgICAgZC5hcHBlbmRWYXIoJ0lNQUdFX1JPT1RGUycsICctZGJnJykKQEAgLTQyNiw3ICs0NDQsMTEgQEAKICAgICAgICAgIyBFeHBhbmQgUFYgZWxzZSBpdCBjYW4gdHJpZ2dlciBnZXRfc3JjcmV2IHdoaWNoIGNhbiBmYWlsIGR1ZSB0byB0aGVzZSB2YXJpYWJsZXMgYmVpbmcgdW5zZXQKICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUFYnLCBkLmdldFZhcignUFYnKSkKICAgICAgICAgbG9jYWxkYXRhLmRlbFZhcignREFURVRJTUUnKQorICAgICAgICBsb2NhbGRhdGEuZGVsVmFyKCdEQVRFJykKICAgICAgICAgbG9jYWxkYXRhLmRlbFZhcignVE1QRElSJykKKyAgICAgICAgdmFyZGVwc2V4Y2x1ZGUgPSAoZC5nZXRWYXJGbGFnKCdJTUFHRV9DTURfJyArIHJlYWx0LCAndmFyZGVwc2V4Y2x1ZGUnLCBUcnVlKSBvciAnJykuc3BsaXQoKQorICAgICAgICBmb3IgZGVwIGluIHZhcmRlcHNleGNsdWRlOgorICAgICAgICAgICAgbG9jYWxkYXRhLmRlbFZhcihkZXApCiAKICAgICAgICAgaW1hZ2VfY21kID0gbG9jYWxkYXRhLmdldFZhcigiSU1BR0VfQ01EIikKICAgICAgICAgdmFyZGVwcy5hZGQoJ0lNQUdFX0NNRF8nICsgcmVhbHQpCkBAIC00ODAsMTkgKzUwMiwyMCBAQAogICAgICAgICBmb3IgZGVwIGluIHR5cGVkZXBzW3RdOgogICAgICAgICAgICAgYWZ0ZXIgKz0gJyBkb19pbWFnZV8lcycgJSBkZXAucmVwbGFjZSgiLSIsICJfIikucmVwbGFjZSgiLiIsICJfIikKIAotICAgICAgICB0ID0gdC5yZXBsYWNlKCItIiwgIl8iKS5yZXBsYWNlKCIuIiwgIl8iKQorICAgICAgICB0YXNrID0gImRvX2ltYWdlXyVzIiAlIHQucmVwbGFjZSgiLSIsICJfIikucmVwbGFjZSgiLiIsICJfIikKIAotICAgICAgICBkLnNldFZhcignZG9faW1hZ2VfJXMnICUgdCwgJ1xuJy5qb2luKGNtZHMpKQotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX2ltYWdlXyVzJyAlIHQsICdmdW5jJywgJzEnKQotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX2ltYWdlXyVzJyAlIHQsICdmYWtlcm9vdCcsICcxJykKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdkb19pbWFnZV8lcycgJSB0LCAncHJlZnVuY3MnLCBkZWJ1ZyArICdzZXRfaW1hZ2Vfc2l6ZScpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnZG9faW1hZ2VfJXMnICUgdCwgJ3Bvc3RmdW5jcycsICdjcmVhdGVfc3ltbGlua3MnKQotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX2ltYWdlXyVzJyAlIHQsICdzdWJpbWFnZXMnLCAnICcuam9pbihzdWJpbWFnZXMpKQotICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlXyVzJyAlIHQsICd2YXJkZXBzJywgJyAnLmpvaW4odmFyZGVwcykpCi0gICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9faW1hZ2VfJXMnICUgdCwgJ3ZhcmRlcHNleGNsdWRlJywgJ0RBVEVUSU1FJykKKyAgICAgICAgZC5zZXRWYXIodGFzaywgJ1xuJy5qb2luKGNtZHMpKQorICAgICAgICBkLnNldFZhckZsYWcodGFzaywgJ2Z1bmMnLCAnMScpCisgICAgICAgIGQuc2V0VmFyRmxhZyh0YXNrLCAnZmFrZXJvb3QnLCAnMScpCiAKLSAgICAgICAgYmIuZGVidWcoMiwgIkFkZGluZyB0eXBlICVzIGJlZm9yZSAlcywgYWZ0ZXIgJXMiICUgKHQsICdkb19pbWFnZV9jb21wbGV0ZScsIGFmdGVyKSkKLSAgICAgICAgYmIuYnVpbGQuYWRkdGFzaygnZG9faW1hZ2VfJXMnICUgdCwgJ2RvX2ltYWdlX2NvbXBsZXRlJywgYWZ0ZXIsIGQpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZyh0YXNrLCAncHJlZnVuY3MnLCAnICcgKyBkZWJ1ZyArICcgc2V0X2ltYWdlX3NpemUnKQorICAgICAgICBkLnByZXBlbmRWYXJGbGFnKHRhc2ssICdwb3N0ZnVuY3MnLCAnIGNyZWF0ZV9zeW1saW5rcycpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZyh0YXNrLCAnc3ViaW1hZ2VzJywgJyAnICsgJyAnLmpvaW4oc3ViaW1hZ2VzKSkKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKHRhc2ssICd2YXJkZXBzJywgJyAnICsgJyAnLmpvaW4odmFyZGVwcykpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZyh0YXNrLCAndmFyZGVwc2V4Y2x1ZGUnLCAnREFURVRJTUUgREFURSAnICsgJyAnLmpvaW4odmFyZGVwc2V4Y2x1ZGUpKQorCisgICAgICAgIGJiLmRlYnVnKDIsICJBZGRpbmcgdGFzayAlcyBiZWZvcmUgJXMsIGFmdGVyICVzIiAlICh0YXNrLCAnZG9faW1hZ2VfY29tcGxldGUnLCBhZnRlcikpCisgICAgICAgIGJiLmJ1aWxkLmFkZHRhc2sodGFzaywgJ2RvX2ltYWdlX2NvbXBsZXRlJywgYWZ0ZXIsIGQpCiB9CiAKICMKQEAgLTU5OCwzICs2MjEsNDYgQEAKIGRvX3BhY2thZ2Vfd3JpdGVfZGViW25vZXhlY10gPSAiMSIKIGRvX3BhY2thZ2Vfd3JpdGVfcnBtW25vZXhlY10gPSAiMSIKIAorIyBQcmVwYXJlIHRoZSByb290IGxpbmtzIHRvIHBvaW50IHRvIHRoZSAvdXNyIGNvdW50ZXJwYXJ0cy4KK2NyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzKCkgeworICAgIHJvb3Q9IiQxIgorICAgIGluc3RhbGwgLWQgJHJvb3Qke2Jhc2VfYmluZGlyfSAkcm9vdCR7YmFzZV9zYmluZGlyfSAkcm9vdCR7YmFzZV9saWJkaXJ9CisgICAgbG5yICRyb290JHtiYXNlX2JpbmRpcn0gJHJvb3QvYmluCisgICAgbG5yICRyb290JHtiYXNlX3NiaW5kaXJ9ICRyb290L3NiaW4KKyAgICBsbnIgJHJvb3Qke2Jhc2VfbGliZGlyfSAkcm9vdC8ke2Jhc2VsaWJ9CisKKyAgICBpZiBbICIke25vbmFyY2hfYmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX2xpYmRpcn0iIF07IHRoZW4KKyAgICAgICBpbnN0YWxsIC1kICRyb290JHtub25hcmNoX2Jhc2VfbGliZGlyfQorICAgICAgIGxuciAkcm9vdCR7bm9uYXJjaF9iYXNlX2xpYmRpcn0gJHJvb3QvbGliCisgICAgZmkKKworICAgICMgY3JlYXRlIGJhc2UgbGlua3MgZm9yIG11bHRpbGlicworICAgIG11bHRpX2xpYmRpcnM9IiR7QGQuZ2V0VmFyKCdNVUxUSUxJQl9WQVJJQU5UUycpfSIKKyAgICBmb3IgZCBpbiAkbXVsdGlfbGliZGlyczsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAkcm9vdCR7ZXhlY19wcmVmaXh9LyRkCisgICAgICAgIGxuciAkcm9vdCR7ZXhlY19wcmVmaXh9LyRkICRyb290LyRkCisgICAgZG9uZQorfQorCitjcmVhdGVfbWVyZ2VkX3Vzcl9zeW1saW5rc19yb290ZnMoKSB7CisgICAgY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3MgJHtJTUFHRV9ST09URlN9Cit9CisKK2NyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzX3NkaygpIHsKKyAgICBjcmVhdGVfbWVyZ2VkX3Vzcl9zeW1saW5rcyAke1NES19PVVRQVVR9JHtTREtUQVJHRVRTWVNST09UfQorfQorCitST09URlNfUFJFUFJPQ0VTU19DT01NQU5EICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJ2NyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzX3Jvb3RmczsgJywgJycsZCl9IgorUE9QVUxBVEVfU0RLX1BSRV9UQVJHRVRfQ09NTUFORCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICdjcmVhdGVfbWVyZ2VkX3Vzcl9zeW1saW5rc19zZGs7ICcsICcnLGQpfSIKKworcmVwcm9kdWNpYmxlX2ZpbmFsX2ltYWdlX3Rhc2sgKCkgeworICAgIGlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKyAgICAgICAgaWYgWyAiJFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTIiA9ICIiIF07IHRoZW4KKyAgICAgICAgICAgIFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTPWBnaXQgbG9nIC0xIC0tcHJldHR5PSVjdGAKKyAgICAgICAgZmkKKyAgICAgICAgIyBTZXQgbXRpbWUgb2YgYWxsIGZpbGVzIHRvIGEgcmVwcm9kdWNpYmxlIHZhbHVlCisgICAgICAgIGJibm90ZSAicmVwcm9kdWNpYmxlX2ZpbmFsX2ltYWdlX3Rhc2s6IG10aW1lIHNldCB0byAkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiCisgICAgICAgIGZpbmQgICR7SU1BR0VfUk9PVEZTfSAtZXhlYyB0b3VjaCAtaCAgLS1kYXRlPUAkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMge30gXDsKKyAgICBmaQorfQorSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EX2FwcGVuZCA9ICIgcmVwcm9kdWNpYmxlX2ZpbmFsX2ltYWdlX3Rhc2s7ICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcwppbmRleCA4ZGIxOGFjLi5lODgxZDBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCkBAIC0yNiwyMCArMjYsMzEgQEAKICAgICBmc3R5cGVzID0gc2V0KChkLmdldFZhcignSU1BR0VfRlNUWVBFUycpIG9yICIiKS5zcGxpdCgpKQogICAgIGZzdHlwZXMgfD0gc2V0KChkLmdldFZhcignSU1BR0VfRlNUWVBFU19ERUJVR0ZTJykgb3IgIiIpLnNwbGl0KCkpCiAKKyAgICBkZXByZWNhdGVkID0gc2V0KCkKICAgICBkZXBzID0gc2V0KCkKICAgICBmb3IgdHlwZXN0cmluZyBpbiBmc3R5cGVzOgogICAgICAgICBiYXNldHlwZSwgcmVzdHR5cGVzID0gc3BsaXRfdHlwZXModHlwZXN0cmluZykKLSAgICAgICAgYWRkZGVwKGQuZ2V0VmFyKCdJTUFHRV9ERVBFTkRTXyVzJyAlIGJhc2V0eXBlKSAsIGRlcHMpCisKKyAgICAgICAgdmFyID0gIklNQUdFX0RFUEVORFNfJXMiICUgYmFzZXR5cGUKKyAgICAgICAgaWYgZC5nZXRWYXIodmFyKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRlcHJlY2F0ZWQuYWRkKHZhcikKIAogICAgICAgICBmb3IgdHlwZWRlcGVuZHMgaW4gKGQuZ2V0VmFyKCJJTUFHRV9UWVBFREVQXyVzIiAlIGJhc2V0eXBlKSBvciAiIikuc3BsaXQoKToKICAgICAgICAgICAgIGJhc2UsIHJlc3QgPSBzcGxpdF90eXBlcyh0eXBlZGVwZW5kcykKLSAgICAgICAgICAgIGFkZGRlcChkLmdldFZhcignSU1BR0VfREVQRU5EU18lcycgJSBiYXNlKSAsIGRlcHMpCiAgICAgICAgICAgICByZXN0dHlwZXMgKz0gcmVzdAogCisgICAgICAgICAgICB2YXIgPSAiSU1BR0VfREVQRU5EU18lcyIgJSBiYXNlCisgICAgICAgICAgICBpZiBkLmdldFZhcih2YXIpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRlcHJlY2F0ZWQuYWRkKHZhcikKKwogICAgICAgICBmb3IgY3R5cGUgaW4gcmVzdHR5cGVzOgogICAgICAgICAgICAgYWRkZGVwKGQuZ2V0VmFyKCJDT05WRVJTSU9OX0RFUEVORFNfJXMiICUgY3R5cGUpLCBkZXBzKQogICAgICAgICAgICAgYWRkZGVwKGQuZ2V0VmFyKCJDT01QUkVTU19ERVBFTkRTXyVzIiAlIGN0eXBlKSwgZGVwcykKIAorICAgIGlmIGRlcHJlY2F0ZWQ6CisgICAgICAgIGJiLmZhdGFsKCdEZXByZWNhdGVkIHZhcmlhYmxlKHMpIGZvdW5kOiAiJXMiLiAnCisgICAgICAgICAgICAgICAgICdVc2UgZG9faW1hZ2VfPHR5cGU+W2RlcGVuZHNdICs9ICI8cmVjaXBlPjo8dGFzaz4iIGluc3RlYWQnICUgJywgJy5qb2luKGRlcHJlY2F0ZWQpKQorCiAgICAgIyBTb3J0IHRoZSBzZXQgc28gdGhhdCBvcmRlcmluZyBpcyBjb25zaXN0YW50CiAgICAgcmV0dXJuICIgIi5qb2luKHNvcnRlZChkZXBzKSkKIApAQCAtNzIsNyArODMsMTEgQEAKIAkJZXZhbCBDT1VOVD1cIiRNSU5fQ09VTlRcIgogCWZpCiAJIyBDcmVhdGUgYSBzcGFyc2UgaW1hZ2UgYmxvY2sKKwliYmRlYnVnIDEgRXhlY3V0aW5nICJkZCBpZj0vZGV2L3plcm8gb2Y9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIHNlZWs9JFJPT1RGU19TSVpFIGNvdW50PSRDT1VOVCBicz0xMDI0IgogCWRkIGlmPS9kZXYvemVybyBvZj0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgc2Vlaz0kUk9PVEZTX1NJWkUgY291bnQ9JENPVU5UIGJzPTEwMjQKKwliYmRlYnVnIDEgIkFjdHVhbCBSb290ZnMgc2l6ZTogIGBkdSAtcyAke0lNQUdFX1JPT1RGU31gIgorCWJiZGVidWcgMSAiQWN0dWFsIFBhcnRpb24gc2l6ZTogYGxzIC1zICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZWAiCisJYmJkZWJ1ZyAxIEV4ZWN1dGluZyAibWtmcy4kZnN0eXBlIC1GICRleHRyYV9pbWFnZWNtZCAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGUgLWQgJHtJTUFHRV9ST09URlN9IgogCW1rZnMuJGZzdHlwZSAtRiAkZXh0cmFfaW1hZ2VjbWQgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIC1kICR7SU1BR0VfUk9PVEZTfQogCSMgRXJyb3IgY29kZXMgMC0zIGluZGljYXRlIHN1Y2Nlc3NmdWxsIG9wZXJhdGlvbiBvZiBmc2NrIChubyBlcnJvcnMgb3IgZXJyb3JzIGNvcnJlY3RlZCkKIAlmc2NrLiRmc3R5cGUgLXB2ZkQgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIHx8IFsgJD8gLWxlIDMgXQpAQCAtODksMjYgKzEwNCwyOCBAQAogCQlzaXplPSR7TUlOX0JUUkZTX1NJWkV9CiAJCWJid2FybiAiUm9vdGZzIHNpemUgaXMgdG9vIHNtYWxsIGZvciBCVFJGUy4gRmlsZXN5c3RlbSB3aWxsIGJlIGV4dGVuZGVkIHRvICR7c2l6ZX1LIgogCWZpCi0JZGQgaWY9L2Rldi96ZXJvIG9mPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uYnRyZnMgY291bnQ9JHtzaXplfSBicz0xMDI0CisJZGQgaWY9L2Rldi96ZXJvIG9mPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uYnRyZnMgc2Vlaz0ke3NpemV9IGNvdW50PTAgYnM9MTAyNAogCW1rZnMuYnRyZnMgJHtFWFRSQV9JTUFHRUNNRH0gLXIgJHtJTUFHRV9ST09URlN9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uYnRyZnMKIH0KIAogSU1BR0VfQ01EX3NxdWFzaGZzID0gIm1rc3F1YXNoZnMgJHtJTUFHRV9ST09URlN9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uc3F1YXNoZnMgJHtFWFRSQV9JTUFHRUNNRH0gLW5vYXBwZW5kIgogSU1BR0VfQ01EX3NxdWFzaGZzLXh6ID0gIm1rc3F1YXNoZnMgJHtJTUFHRV9ST09URlN9ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uc3F1YXNoZnMteHogJHtFWFRSQV9JTUFHRUNNRH0gLW5vYXBwZW5kIC1jb21wIHh6IgogSU1BR0VfQ01EX3NxdWFzaGZzLWx6byA9ICJta3NxdWFzaGZzICR7SU1BR0VfUk9PVEZTfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnNxdWFzaGZzLWx6byAke0VYVFJBX0lNQUdFQ01EfSAtbm9hcHBlbmQgLWNvbXAgbHpvIgorSU1BR0VfQ01EX3NxdWFzaGZzLWx6NCA9ICJta3NxdWFzaGZzICR7SU1BR0VfUk9PVEZTfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnNxdWFzaGZzLWx6NCAke0VYVFJBX0lNQUdFQ01EfSAtbm9hcHBlbmQgLWNvbXAgbHo0IgogCiAjIEJ5IGRlZmF1bHQsIHRhciBmcm9tIHRoZSBob3N0IGlzIHVzZWQsIHdoaWNoIGNhbiBiZSBxdWl0ZSBvbGQuIElmCiAjIHlvdSBuZWVkIHNwZWNpYWwgcGFyYW1ldGVycyAobGlrZSAtLXhhdHRycykgd2hpY2ggYXJlIG9ubHkgc3VwcG9ydGVkCiAjIGJ5IEdOVSB0YXIgdXBzdHJlYW0gPj0gMS4yNywgdGhlbiBvdmVycmlkZSB0aGF0IGRlZmF1bHQ6CiAjIElNQUdFX0NNRF9UQVIgPSAidGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9KiIKLSMgSU1BR0VfREVQRU5EU190YXJfYXBwZW5kID0gIiB0YXItcmVwbGFjZW1lbnQtbmF0aXZlIgorIyBkb19pbWFnZV90YXJbZGVwZW5kc10gKz0gInRhci1yZXBsYWNlbWVudC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKICMgRVhUUkFOQVRJVkVQQVRIICs9ICJ0YXItbmF0aXZlIgogIwogIyBUaGUgR05VIGRvY3VtZW50YXRpb24gZG9lcyBub3Qgc3BlY2lmeSB3aGV0aGVyIC0teGF0dHJzLWluY2x1ZGUgaXMgbmVjZXNzYXJ5LgogIyBJbiBwcmFjdGljZSwgaXQgdHVybmVkIG91dCB0byBiZSBub3QgbmVlZGVkIHdoZW4gY3JlYXRpbmcgYXJjaGl2ZXMgYW5kCiAjIHJlcXVpcmVkIHdoZW4gZXh0cmFjdGluZywgYnV0IGl0IHNlZW1zIHBydWRlbnQgdG8gdXNlIGl0IGluIGJvdGggY2FzZXMuCiBJTUFHRV9DTURfVEFSID89ICJ0YXIiCi1JTUFHRV9DTURfdGFyID0gIiR7SU1BR0VfQ01EX1RBUn0gLWN2ZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnRhciAtQyAke0lNQUdFX1JPT1RGU30gLiIKKyMgaWdub3JlIHJldHVybiBjb2RlIDEgImZpbGUgY2hhbmdlZCBhcyB3ZSByZWFkIGl0IiBhcyBvdGhlciB0YXNrcyhlLmcuIGRvX2ltYWdlX3dpYykgbWF5IGJlIGhhcmRsaW5raW5nIHJvb3RmcworSU1BR0VfQ01EX3RhciA9ICIke0lNQUdFX0NNRF9UQVJ9IC1jZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnRhciAtQyAke0lNQUdFX1JPT1RGU30gLiB8fCBbICQ/IC1lcSAxIF0iCiAKIGRvX2ltYWdlX2NwaW9bY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9jcGlvX2FwcGVuZCIKIElNQUdFX0NNRF9jcGlvICgpIHsKQEAgLTEzNSw3ICsxNTIsNyBAQAogCiBJTUFHRV9DTURfZWxmICgpIHsKIAl0ZXN0IC1mICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZWxmICYmIHJtIC1mICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZWxmCi0JbWtlbGZJbWFnZSAtLWtlcm5lbD0ke0VMRl9LRVJORUx9IC0taW5pdHJkPSR7REVQTE9ZX0RJUl9JTUFHRX0vJHtJTUFHRV9MSU5LX05BTUV9LmNwaW8uZ3ogLS1vdXRwdXQ9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYgLS1hcHBlbmQ9JyR7RUxGX0FQUEVORH0nICR7RVhUUkFfSU1BR0VDTUR9CisJbWtlbGZJbWFnZSAtLWtlcm5lbD0ke0VMRl9LRVJORUx9IC0taW5pdHJkPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uY3Bpby5neiAtLW91dHB1dD0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZiAtLWFwcGVuZD0nJHtFTEZfQVBQRU5EfScgJHtFWFRSQV9JTUFHRUNNRH0KIH0KIAogSU1BR0VfVFlQRURFUF9lbGYgPSAiY3Bpby5neiIKQEAgLTE0NSw2ICsxNjIsMTIgQEAKIG11bHRpdWJpX21rZnMoKSB7CiAJbG9jYWwgbWt1Ymlmc19hcmdzPSIkMSIKIAlsb2NhbCB1YmluaXplX2FyZ3M9IiQyIgorICAgIAorICAgICAgICAjIEFkZGVkIHByb21wdCBlcnJvciBtZXNzYWdlIGZvciB1YmkgYW5kIHViaWZzIGltYWdlIGNyZWF0aW9uLgorICAgICAgICBpZiBbIC16ICIkbWt1Ymlmc19hcmdzIl0gfHwgWyAteiAiJHViaW5pemVfYXJncyIgXTsgdGhlbgorICAgICAgICAgICAgYmJmYXRhbCAiTUtVQklGU19BUkdTIGFuZCBVQklOSVpFX0FSR1MgaGF2ZSB0byBiZSBzZXQsIHNlZSBodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnL2ZhcS91Ymlmcy5odG1sIGZvciBkZXRhaWxzIgorICAgICAgICBmaQorICAgIAogCWlmIFsgLXogIiQzIiBdOyB0aGVuCiAJCWxvY2FsIHZuYW1lPSIiCiAJZWxzZQpAQCAtMjA5LDIxICsyMzIsMjAgQEAKIEVYVFJBX0lNQUdFQ01EX2J0cmZzID89ICItbiA0MDk2IgogRVhUUkFfSU1BR0VDTURfZWxmID89ICIiCiAKLUlNQUdFX0RFUEVORFMgPSAiIgotSU1BR0VfREVQRU5EU19qZmZzMiA9ICJtdGQtdXRpbHMtbmF0aXZlIgotSU1BR0VfREVQRU5EU19jcmFtZnMgPSAidXRpbC1saW51eC1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX2V4dDIgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfZXh0MyA9ICJlMmZzcHJvZ3MtbmF0aXZlIgotSU1BR0VfREVQRU5EU19leHQ0ID0gImUyZnNwcm9ncy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX2J0cmZzID0gImJ0cmZzLXRvb2xzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfc3F1YXNoZnMgPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlIgotSU1BR0VfREVQRU5EU19zcXVhc2hmcy14eiA9ICJzcXVhc2hmcy10b29scy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX3NxdWFzaGZzLWx6byA9ICJzcXVhc2hmcy10b29scy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX2VsZiA9ICJ2aXJ0dWFsL2tlcm5lbCBta2VsZmltYWdlLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfdWJpID0gIm10ZC11dGlscy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX3ViaWZzID0gIm10ZC11dGlscy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX211bHRpdWJpID0gIm10ZC11dGlscy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX3dpYyA9ICJwYXJ0ZWQtbmF0aXZlIgorZG9faW1hZ2VfamZmczJbZGVwZW5kc10gKz0gIm10ZC11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX2NyYW1mc1tkZXBlbmRzXSArPSAidXRpbC1saW51eC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX2V4dDJbZGVwZW5kc10gKz0gImUyZnNwcm9ncy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX2V4dDNbZGVwZW5kc10gKz0gImUyZnNwcm9ncy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX2V4dDRbZGVwZW5kc10gKz0gImUyZnNwcm9ncy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX2J0cmZzW2RlcGVuZHNdICs9ICJidHJmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX3NxdWFzaGZzW2RlcGVuZHNdICs9ICJzcXVhc2hmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX3NxdWFzaGZzX3h6W2RlcGVuZHNdICs9ICJzcXVhc2hmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX3NxdWFzaGZzX2x6b1tkZXBlbmRzXSArPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9zcXVhc2hmc19sejRbZGVwZW5kc10gKz0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfZWxmW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wb3B1bGF0ZV9zeXNyb290IG1rZWxmaW1hZ2UtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV91YmlbZGVwZW5kc10gKz0gIm10ZC11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX3ViaWZzW2RlcGVuZHNdICs9ICJtdGQtdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9tdWx0aXViaVtkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCiAjIFRoaXMgdmFyaWFibGUgaXMgYXZhaWxhYmxlIHRvIHJlcXVlc3Qgd2hpY2ggdmFsdWVzIGFyZSBzdWl0YWJsZSBmb3IgSU1BR0VfRlNUWVBFUwogSU1BR0VfVFlQRVMgPSAiIFwKQEAgLTIzNSwxNCArMjU3LDEwIEBACiAgICAgYnRyZnMgXAogICAgIGlzbyBcCiAgICAgaGRkaW1nIFwKLSAgICBzcXVhc2hmcyBzcXVhc2hmcy14eiBzcXVhc2hmcy1sem8gXAorICAgIHNxdWFzaGZzIHNxdWFzaGZzLXh6IHNxdWFzaGZzLWx6byBzcXVhc2hmcy1sejQgXAogICAgIHViaSB1YmlmcyBtdWx0aXViaSBcCiAgICAgdGFyIHRhci5neiB0YXIuYnoyIHRhci54eiB0YXIubHo0IFwKICAgICBjcGlvIGNwaW8uZ3ogY3Bpby54eiBjcGlvLmx6bWEgY3Bpby5sejQgXAotICAgIHZtZGsgXAotICAgIHZkaSBcCi0gICAgcWNvdzIgXAotICAgIGhkZGRpcmVjdCBcCiAgICAgZWxmIFwKICAgICB3aWMgd2ljLmd6IHdpYy5iejIgd2ljLmx6bWEgXAogICAgIGNvbnRhaW5lciBcCkBAIC0yNTQsOSArMjcyLDkgQEAKICMgQ09OVkVSU0lPTl9DTUQvREVQRU5EUy4KIENPTVBSRVNTSU9OVFlQRVMgPz0gIiIKIAotQ09OVkVSU0lPTlRZUEVTID0gImd6IGJ6MiBsem1hIHh6IGx6NCBsem8gemlwIHN1bSBtZDVzdW0gc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIHNoYTM4NHN1bSBzaGE1MTJzdW0gYm1hcCB1LWJvb3QgJHtDT01QUkVTU0lPTlRZUEVTfSIKK0NPTlZFUlNJT05UWVBFUyA9ICJneiBiejIgbHptYSB4eiBsejQgbHpvIHppcCBzdW0gbWQ1c3VtIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBzaGEzODRzdW0gc2hhNTEyc3VtIGJtYXAgdS1ib290IHZtZGsgdmRpIHFjb3cyICR7Q09NUFJFU1NJT05UWVBFU30iCiBDT05WRVJTSU9OX0NNRF9sem1hID0gImx6bWEgLWsgLWYgLTcgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCi1DT05WRVJTSU9OX0NNRF9neiA9ICJnemlwIC1mIC05IC1jICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uZ3oiCitDT05WRVJTSU9OX0NNRF9neiA9ICJnemlwIC1mIC05IC1uIC1jICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uZ3oiCiBDT05WRVJTSU9OX0NNRF9iejIgPSAicGJ6aXAyIC1mIC1rICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgogQ09OVkVSU0lPTl9DTURfeHogPSAieHogLWYgLWsgLWMgJHtYWl9DT01QUkVTU0lPTl9MRVZFTH0gJHtYWl9USFJFQURTfSAtLWNoZWNrPSR7WFpfSU5URUdSSVRZX0NIRUNLfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lnh6IgogQ09OVkVSU0lPTl9DTURfbHo0ID0gImx6NCAtOSAteiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5sejQiCkBAIC0yNzIsNiArMjkwLDkgQEAKIENPTlZFUlNJT05fQ01EX3NoYTUxMnN1bSA9ICJzaGE1MTJzdW0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5zaGE1MTJzdW0iCiBDT05WRVJTSU9OX0NNRF9ibWFwID0gImJtYXB0b29sIGNyZWF0ZSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAtbyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5ibWFwIgogQ09OVkVSU0lPTl9DTURfdS1ib290ID0gIm1raW1hZ2UgLUEgJHtVQk9PVF9BUkNIfSAtTyBsaW51eCAtVCByYW1kaXNrIC1DIG5vbmUgLW4gJHtJTUFHRV9OQU1FfSAtZCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS51LWJvb3QiCitDT05WRVJTSU9OX0NNRF92bWRrID0gInFlbXUtaW1nIGNvbnZlcnQgLU8gdm1kayAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS52bWRrIgorQ09OVkVSU0lPTl9DTURfdmRpID0gInFlbXUtaW1nIGNvbnZlcnQgLU8gdmRpICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnZkaSIKK0NPTlZFUlNJT05fQ01EX3Fjb3cyID0gInFlbXUtaW1nIGNvbnZlcnQgLU8gcWNvdzIgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ucWNvdzIiCiBDT05WRVJTSU9OX0RFUEVORFNfbHptYSA9ICJ4ei1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfZ3ogPSAicGlnei1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfYnoyID0gInBiemlwMi1uYXRpdmUiCkBAIC0yODIsMTUgKzMwMywxOCBAQAogQ09OVkVSU0lPTl9ERVBFTkRTX3N1bSA9ICJtdGQtdXRpbHMtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX2JtYXAgPSAiYm1hcC10b29scy1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfdS1ib290ID0gInUtYm9vdC1ta2ltYWdlLW5hdGl2ZSIKK0NPTlZFUlNJT05fREVQRU5EU192bWRrID0gInFlbXUtbmF0aXZlIgorQ09OVkVSU0lPTl9ERVBFTkRTX3ZkaSA9ICJxZW11LW5hdGl2ZSIKK0NPTlZFUlNJT05fREVQRU5EU19xY293MiA9ICJxZW11LW5hdGl2ZSIKIAogUlVOTkFCTEVfSU1BR0VfVFlQRVMgPz0gImV4dDIgZXh0MyBleHQ0IgogUlVOTkFCTEVfTUFDSElORV9QQVRURVJOUyA/PSAicWVtdSIKIAogREVQTE9ZQUJMRV9JTUFHRV9UWVBFUyA/PSAiaGRkaW1nIGlzbyIgCiAKLSMgVXNlIElNQUdFX0VYVEVOU0lPTl94eHggdG8gbWFwIGltYWdlIHR5cGUgJ3h4eCcgd2l0aCByZWFsIGltYWdlIGZpbGUgZXh0ZW5zaW9uIG5hbWUocykgZm9yIEhvYgotSU1BR0VfRVhURU5TSU9OX2xpdmUgPSAiaGRkaW1nIGlzbyIKLQogIyBUaGUgSU1BR0VfVFlQRVNfTUFTS0VEIHZhcmlhYmxlIHdpbGwgYmUgdXNlZCB0byBtYXNrIG91dCBmcm9tIHRoZSBJTUFHRV9GU1RZUEVTLAogIyBpbWFnZXMgdGhhdCB3aWxsIG5vdCBiZSBidWlsdCBhdCBkb19yb290ZnMgdGltZTogdm1kaywgdmRpLCBxY293MiwgaGRkZGlyZWN0LCBoZGRpbWcsIGlzbywgZXRjLgogSU1BR0VfVFlQRVNfTUFTS0VEID89ICIiCisKKyMgYm1hcCByZXF1aXJlcyBweXRob24zIHRvIGJlIGluIHRoZSBQQVRICitFWFRSQU5BVElWRVBBVEggKz0gIiR7QCdweXRob24zLW5hdGl2ZScgaWYgZC5nZXRWYXIoJ0lNQUdFX0ZTVFlQRVMnKS5maW5kKCcuYm1hcCcpIGVsc2UgJyd9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKaW5kZXggNjhmMjUxYy4uZGNmNjIwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCkBAIC0zLDcgKzMsNyBAQAogV0lDVkFSUyA/PSAiXAogICAgICAgICAgICBCQkxBWUVSUyBJTUdERVBMT1lESVIgREVQTE9ZX0RJUl9JTUFHRSBGQUtFUk9PVENNRCBJTUFHRV9CQVNFTkFNRSBJTUFHRV9CT09UX0ZJTEVTIFwKICAgICAgICAgICAgSU1BR0VfTElOS19OQU1FIElNQUdFX1JPT1RGUyBJTklUUkFNRlNfRlNUWVBFUyBJTklUUkQgSU5JVFJEX0xJVkUgSVNPRElSIFJFQ0lQRV9TWVNST09UX05BVElWRSBcCi0gICAgICAgICAgIFJPT1RGU19TSVpFIFNUQUdJTkdfREFUQURJUiBTVEFHSU5HX0RJUiBTVEFHSU5HX0xJQkRJUiBUQVJHRVRfU1lTIFRSQU5TTEFURURfVEFSR0VUX0FSQ0giCisgICAgICAgICAgIFJPT1RGU19TSVpFIFNUQUdJTkdfREFUQURJUiBTVEFHSU5HX0RJUiBTVEFHSU5HX0xJQkRJUiBUQVJHRVRfU1lTIgogCiBXS1NfRklMRSA/Pz0gIiR7SU1BR0VfQkFTRU5BTUV9LiR7TUFDSElORX0ud2tzIgogV0tTX0ZJTEVTID89ICIke1dLU19GSUxFfSAke0lNQUdFX0JBU0VOQU1FfS53a3MiCkBAIC0zOSw4ICszOSwxOSBAQAogVVNJTkdfV0lDID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnSU1BR0VfRlNUWVBFUycsICd3aWMgJyArICcgJy5qb2luKCd3aWMuJXMnICUgYyBmb3IgYyBpbiAnJHtDT05WRVJTSU9OVFlQRVN9Jy5zcGxpdCgpKSwgJzEnLCAnJywgZCl9IgogV0tTX0ZJTEVfQ0hFQ0tTVU0gPSAiJHtAJyR7V0tTX0ZVTExfUEFUSH06JXMnICUgb3MucGF0aC5leGlzdHMoJyR7V0tTX0ZVTExfUEFUSH0nKSBpZiAnJHtVU0lOR19XSUN9JyBlbHNlICcnfSIKIGRvX2ltYWdlX3dpY1tmaWxlLWNoZWNrc3Vtc10gKz0gIiR7V0tTX0ZJTEVfQ0hFQ0tTVU19IgotZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICJ3aWMtdG9vbHM6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLVdLU19GSUxFX0RFUEVORFMgPz89ICcnCitkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gIiR7QCcgJy5qb2luKCclcy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcgJSByIGZvciByIGluICgncGFydGVkJywgJ2dwdGZkaXNrJywgJ2Rvc2ZzdG9vbHMnLCAnbXRvb2xzJykpfSIKKworIyBXZSBlbnN1cmUgYWxsIGFydGZhY3RzIGFyZSBkZXBsb3llZCAoZS5nIHZpcnR1YWwvYm9vdGxvYWRlcikKK2RvX2ltYWdlX3dpY1tyZWNyZGVwdGFza10gKz0gImRvX2RlcGxveSIKKworV0tTX0ZJTEVfREVQRU5EU19ERUZBVUxUID0gInN5c2xpbnV4LW5hdGl2ZSBibWFwLXRvb2xzLW5hdGl2ZSBjZHJ0b29scy1uYXRpdmUgYnRyZnMtdG9vbHMtbmF0aXZlIHNxdWFzaGZzLXRvb2xzLW5hdGl2ZSBlMmZzcHJvZ3MtbmF0aXZlIgorV0tTX0ZJTEVfREVQRU5EU19CT09UTE9BREVSUyA9ICIiCitXS1NfRklMRV9ERVBFTkRTX0JPT1RMT0FERVJTX3g4NiA9ICJzeXNsaW51eCBncnViLWVmaSBzeXN0ZW1kLWJvb3QiCitXS1NfRklMRV9ERVBFTkRTX0JPT1RMT0FERVJTX3g4Ni02NCA9ICJzeXNsaW51eCBncnViLWVmaSBzeXN0ZW1kLWJvb3QiCitXS1NfRklMRV9ERVBFTkRTX0JPT1RMT0FERVJTX3g4Ni14MzIgPSAic3lzbGludXggZ3J1Yi1lZmkiCisKK1dLU19GSUxFX0RFUEVORFMgPz89ICIke1dLU19GSUxFX0RFUEVORFNfREVGQVVMVH0gJHtXS1NfRklMRV9ERVBFTkRTX0JPT1RMT0FERVJTfSIKKwogREVQRU5EUyArPSAiJHtAICcke1dLU19GSUxFX0RFUEVORFN9JyBpZiBkLmdldFZhcignVVNJTkdfV0lDJykgZWxzZSAnJyB9IgogCiBweXRob24gZG9fd3JpdGVfd2tzX3RlbXBsYXRlICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCmluZGV4IDBjMTFjMzYuLjBhM2I1MjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwpAQCAtMTYsMTMgKzE2LDggQEAKICMgICBpbnRvIGV4ZWNfcHJlZml4CiAjICAtQ2hlY2sgdGhhdCBzY3JpcHRzIGluIGJhc2VfW2JpbmRpcnxzYmluZGlyfGxpYmRpcl0gZG8gbm90IHJlZmVyZW5jZQogIyAgIGZpbGVzIHVuZGVyIGV4ZWNfcHJlZml4CisjICAtQ2hlY2sgaWYgdGhlIHBhY2thZ2UgbmFtZSBpcyB1cHBlciBjYXNlCiAKLQotIyB1bnNhZmUtcmVmZXJlbmNlcy1pbi1iaW5hcmllcyByZXF1aXJlcyBwcmVsaW5rLXJ0bGQgZnJvbQotIyBwcmVsaW5rLW5hdGl2ZSwgYnV0IHdlIGRvbid0IHdhbnQgdGhpcyBERVBFTkRTIGZvciAtbmF0aXZlIGJ1aWxkcwotUUFERVBFTkRTID0gInByZWxpbmstbmF0aXZlIgotUUFERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCi1RQURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiIKIFFBX1NBTkUgPSAiVHJ1ZSIKIAogIyBFbGVjdCB3aGV0aGVyIGEgZ2l2ZW4gdHlwZSBvZiBlcnJvciBpcyBhIHdhcm5pbmcgb3IgZXJyb3IsIHRoZXkgbWF5CkBAIC0zMiw3ICsyNyw3IEBACiAgICAgICAgICAgICBpbnN0YWxsZWQtdnMtc2hpcHBlZCBjb21waWxlLWhvc3QtcGF0aCBpbnN0YWxsLWhvc3QtcGF0aCBcCiAgICAgICAgICAgICBwbi1vdmVycmlkZXMgaW5mb2RpciBidWlsZC1kZXBzIFwKICAgICAgICAgICAgIHVua25vd24tY29uZmlndXJlLW9wdGlvbiBzeW1saW5rLXRvLXN5c3Jvb3QgbXVsdGlsaWIgXAotICAgICAgICAgICAgaW52YWxpZC1wYWNrYWdlY29uZmlnIGhvc3QtdXNlci1jb250YW1pbmF0ZWQgXAorICAgICAgICAgICAgaW52YWxpZC1wYWNrYWdlY29uZmlnIGhvc3QtdXNlci1jb250YW1pbmF0ZWQgdXBwZXJjYXNlLXBuIFwKICAgICAgICAgICAgICIKIEVSUk9SX1FBID89ICJkZXYtc28gZGVidWctZGVwcyBkZXYtZGVwcyBkZWJ1Zy1maWxlcyBhcmNoIHBrZ2NvbmZpZyBsYSBcCiAgICAgICAgICAgICBwZXJtcyBkZXAtY21wIHBrZ3ZhcmNoZWNrIHBlcm0tY29uZmlnIHBlcm0tbGluZSBwZXJtLWxpbmsgXApAQCAtNDAsNiArMzUsOSBAQAogICAgICAgICAgICAgdmVyc2lvbi1nb2luZy1iYWNrd2FyZHMgZXhwYW5kZWQtZCBpbnZhbGlkLWNoYXJzIFwKICAgICAgICAgICAgIGxpY2Vuc2UtY2hlY2tzdW0gZGV2LWVsZiBmaWxlLXJkZXBzIFwKICAgICAgICAgICAgICIKKyMgQWRkIHVzcm1lcmdlIFFBIGNoZWNrIGJhc2VkIG9uIGRpc3RybyBmZWF0dXJlCitFUlJPUl9RQV9hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcgdXNybWVyZ2UnLCAnJywgZCl9IgorCiBGQUtFUk9PVF9RQSA9ICJob3N0LXVzZXItY29udGFtaW5hdGVkIgogRkFLRVJPT1RfUUFbZG9jXSA9ICJRQSB0ZXN0cyB3aGljaCBuZWVkIHRvIHJ1biB1bmRlciBmYWtlcm9vdC4gSWYgYW55IFwKIGVuYWJsZWQgdGVzdHMgYXJlIGxpc3RlZCBoZXJlLCB0aGUgZG9fcGFja2FnZV9xYSB0YXNrIHdpbGwgcnVuIHVuZGVyIGZha2Vyb290LiIKQEAgLTEwMywyMyArMTAxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC11Y2xpYmMiIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKCAgNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICggIDQwLCAgICA5NywgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoICAyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpMzg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaTQ4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpNjg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICggIDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzZWwiOiAgICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0IjogICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhdnIzMiI6ICAgICAgKDYzMTcsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotCi0gICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eC1tdXNsIiA6IHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NCIgOiAgICgxODMsICAgIDAsICAgIDAsICAgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjRfYmUiIDooMTgzLCAgICAwLCAgICAwLCAgICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKQEAgLTE1MSwxOSArMTMyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiIgOiAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtdWNsaWJjZWFiaSIgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiIgOiAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAibGludXgtZ251c3BlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAibGludXgtbXVzbHNwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LXVjbGliY3NwZSIgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgImxpbnV4LWdudSIgOiAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLApAQCAtMTcxLDYgKzE0NSw5IEBACiAgICAgICAgICAgICAibGludXgtZ251eDMyIiA6ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibGludXgtbXVzbHgzMiIgOiAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgImxpbnV4LWdudW4zMiIgOiAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0IjogICAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKQEAgLTIwNywxMiArMTg0LDEzIEBACiAgICAgICAgICAgICBmLndyaXRlKCIlczogJXMgWyVzXVxuIiAlIChwLCBlcnJvciwgdHlwZSkpCiAKIGRlZiBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcihlcnJvcl9jbGFzcywgZXJyb3JfbXNnLCBkKToKLSAgICBwYWNrYWdlX3FhX3dyaXRlX2Vycm9yKGVycm9yX2NsYXNzLCBlcnJvcl9tc2csIGQpCiAgICAgaWYgZXJyb3JfY2xhc3MgaW4gKGQuZ2V0VmFyKCJFUlJPUl9RQSIpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICBwYWNrYWdlX3FhX3dyaXRlX2Vycm9yKGVycm9yX2NsYXNzLCBlcnJvcl9tc2csIGQpCiAgICAgICAgIGJiLmVycm9yKCJRQSBJc3N1ZTogJXMgWyVzXSIgJSAoZXJyb3JfbXNnLCBlcnJvcl9jbGFzcykpCiAgICAgICAgIGQuc2V0VmFyKCJRQV9TQU5FIiwgRmFsc2UpCiAgICAgICAgIHJldHVybiBGYWxzZQogICAgIGVsaWYgZXJyb3JfY2xhc3MgaW4gKGQuZ2V0VmFyKCJXQVJOX1FBIikgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgIHBhY2thZ2VfcWFfd3JpdGVfZXJyb3IoZXJyb3JfY2xhc3MsIGVycm9yX21zZywgZCkKICAgICAgICAgYmIud2FybigiUUEgSXNzdWU6ICVzIFslc10iICUgKGVycm9yX21zZywgZXJyb3JfY2xhc3MpKQogICAgIGVsc2U6CiAgICAgICAgIGJiLm5vdGUoIlFBIElzc3VlOiAlcyBbJXNdIiAlIChlcnJvcl9tc2csIGVycm9yX2NsYXNzKSkKQEAgLTQwOCw3MSArMzg2LDYgQEAKICAgICAiIiIKICAgICByZXR1cm4KIAotUUFQQVRIVEVTVFt1bnNhZmUtcmVmZXJlbmNlcy1pbi1zY3JpcHRzXSA9ICJwYWNrYWdlX3FhX2NoZWNrX3Vuc2FmZV9yZWZlcmVuY2VzX2luX3NjcmlwdHMiCi1kZWYgcGFja2FnZV9xYV9jaGVja191bnNhZmVfcmVmZXJlbmNlc19pbl9zY3JpcHRzKHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgotICAgICIiIgotICAgIFdhcm4gaWYgc2NyaXB0cyBpbiBiYXNlX1tiaW5kaXJ8c2JpbmRpcnxsaWJkaXJdIHJlZmVyZW5jZSBmaWxlcyB1bmRlciBleGVjX3ByZWZpeAotICAgICIiIgotICAgIGlmIHVuc2FmZV9yZWZlcmVuY2VzX3NraXBwYWJsZShwYXRoLCBuYW1lLCBkKToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBub3QgZWxmOgotICAgICAgICBpbXBvcnQgc3RhdAotICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0KLSAgICAgICAgIyBFbnN1cmUgd2UncmUgY2hlY2tpbmcgYW4gZXhlY3V0YWJsZSBzY3JpcHQKLSAgICAgICAgc3RhdGluZm8gPSBvcy5zdGF0KHBhdGgpCi0gICAgICAgIGlmIGJvb2woc3RhdGluZm8uc3RfbW9kZSAmIHN0YXQuU19JWFVTUik6Ci0gICAgICAgICAgICAjIGdyZXAgc2hlbGwgc2NyaXB0cyBmb3IgcG9zc2libGUgcmVmZXJlbmNlcyB0byAvZXhlY19wcmVmaXgvCi0gICAgICAgICAgICBleGVjX3ByZWZpeCA9IGQuZ2V0VmFyKCdleGVjX3ByZWZpeCcpCi0gICAgICAgICAgICBzdGF0ZW1lbnQgPSAiZ3JlcCAtZSAnJXMvW14gOl1cezEsXH0vW14gOl1cezEsXH0nICVzID4gL2Rldi9udWxsIiAlIChleGVjX3ByZWZpeCwgcGF0aCkKLSAgICAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzdGF0ZW1lbnQsIHNoZWxsPVRydWUpID09IDA6Ci0gICAgICAgICAgICAgICAgZXJyb3JfbXNnID0gcG4gKyAiOiBGb3VuZCBhIHJlZmVyZW5jZSB0byAlcy8gaW4gJXMiICUgKGV4ZWNfcHJlZml4LCBwYXRoKQotICAgICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJ1bnNhZmUtcmVmZXJlbmNlcy1pbi1zY3JpcHRzIiwgZXJyb3JfbXNnLCBkKQotICAgICAgICAgICAgICAgIGVycm9yX21zZyA9ICJTaGVsbCBzY3JpcHRzIGluIGJhc2VfYmluZGlyIGFuZCBiYXNlX3NiaW5kaXIgc2hvdWxkIG5vdCByZWZlcmVuY2UgYW55dGhpbmcgaW4gZXhlY19wcmVmaXgiCi0gICAgICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInVuc2FmZS1yZWZlcmVuY2VzLWluLXNjcmlwdHMiLCBlcnJvcl9tc2csIGQpCi0KLWRlZiB1bnNhZmVfcmVmZXJlbmNlc19za2lwcGFibGUocGF0aCwgbmFtZSwgZCk6Ci0gICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBpZiAiLWRiZyIgaW4gbmFtZSBvciAiLWRldiIgaW4gbmFtZToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICMgT3RoZXIgcGFja2FnZSBuYW1lcyB0byBza2lwOgotICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgia2VybmVsLW1vZHVsZS0iKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICMgU2tpcCBzeW1saW5rcwotICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBTa2lwIHVudXN1YWwgcm9vdGZzIGxheW91dHMgd2hpY2ggbWFrZSB0aGVzZSB0ZXN0cyBpcnJlbGV2YW50Ci0gICAgZXhlY19wcmVmaXggPSBkLmdldFZhcignZXhlY19wcmVmaXgnKQotICAgIGlmIGV4ZWNfcHJlZml4ID09ICIiOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKLSAgICBwa2dkZXN0ID0gcGtnZGVzdCArICIvIiArIG5hbWUKLSAgICBwa2dkZXN0ID0gb3MucGF0aC5hYnNwYXRoKHBrZ2Rlc3QpCi0gICAgYmFzZV9iaW5kaXIgPSBwa2dkZXN0ICsgZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJykKLSAgICBiYXNlX3NiaW5kaXIgPSBwa2dkZXN0ICsgZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicpCi0gICAgYmFzZV9saWJkaXIgPSBwa2dkZXN0ICsgZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJykKLSAgICBiaW5kaXIgPSBwa2dkZXN0ICsgZC5nZXRWYXIoJ2JpbmRpcicpCi0gICAgc2JpbmRpciA9IHBrZ2Rlc3QgKyBkLmdldFZhcignc2JpbmRpcicpCi0gICAgbGliZGlyID0gcGtnZGVzdCArIGQuZ2V0VmFyKCdsaWJkaXInKQotCi0gICAgaWYgYmFzZV9iaW5kaXIgPT0gYmluZGlyIGFuZCBiYXNlX3NiaW5kaXIgPT0gc2JpbmRpciBhbmQgYmFzZV9saWJkaXIgPT0gbGliZGlyOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBTa2lwIGZpbGVzIG5vdCBpbiBiYXNlX1tiaW5kaXJ8c2JpbmRpcnxsaWJkaXJdCi0gICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChwYXRoKQotICAgIGlmIG5vdCAoYmFzZV9iaW5kaXIgaW4gcGF0aCBvciBiYXNlX3NiaW5kaXIgaW4gcGF0aCBvciBiYXNlX2xpYmRpciBpbiBwYXRoKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIHJldHVybiBGYWxzZQotCiBRQVBBVEhURVNUW2FyY2hdID0gInBhY2thZ2VfcWFfY2hlY2tfYXJjaCIKIGRlZiBwYWNrYWdlX3FhX2NoZWNrX2FyY2gocGF0aCxuYW1lLGQsIGVsZiwgbWVzc2FnZXMpOgogICAgICIiIgpAQCAtNTA5LDcgKzQyMiw3IEBACiAKICAgICAjIENoZWNrIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGVuZGlhbm5lcyBvZiB0aGUgYmluYXJ5CiAgICAgaXNfMzIgPSAoKCJ2aXJ0dWFsL2tlcm5lbCIgaW4gcHJvdmlkZXMpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoIm1vZHVsZSIsIGQpKSBhbmQgXAotICAgICAgICAgICAgKHRhcmdldF9vcyA9PSAibGludXgtZ251eDMyIiBvciByZS5tYXRjaCgnbWlwczY0LiozMicsIGQuZ2V0VmFyKCdERUZBVUxUVFVORScpKSkKKyAgICAgICAgICAgICh0YXJnZXRfb3MgPT0gImxpbnV4LWdudXgzMiIgb3IgdGFyZ2V0X29zID09ICJsaW51eC1tdXNseDMyIiAgb3IgcmUubWF0Y2goJ21pcHM2NC4qMzInLCBkLmdldFZhcignREVGQVVMVFRVTkUnKSkpCiAgICAgaWYgbm90ICgobWFjaGluZSA9PSBlbGYubWFjaGluZSgpKSBvciBpc18zMik6CiAgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJhcmNoIiwgIkFyY2hpdGVjdHVyZSBkaWQgbm90IG1hdGNoICglcywgZXhwZWN0ZWQgJXMpIG9uICVzIiAlIFwKICAgICAgICAgICAgICAgICAgKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZyhlbGYubWFjaGluZSgpKSwgb2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKG1hY2hpbmUpLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkpCkBAIC02NzcsNyArNTkwLDcgQEAKICAgICAgICAgc2FuZSA9IHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgcG4gKyAiOiBSZWNpcGUgZmlsZSBmZXRjaGVzIGZpbGVzIGFuZCBkb2VzIG5vdCBoYXZlIGxpY2Vuc2UgZmlsZSBpbmZvcm1hdGlvbiAoTElDX0ZJTEVTX0NIS1NVTSkiLCBkKQogCiAgICAgc3JjZGlyID0gZC5nZXRWYXIoJ1MnKQotCisgICAgY29yZWJhc2VfbGljZW5zZWZpbGUgPSBkLmdldFZhcignQ09SRUJBU0UnKSArICIvTElDRU5TRSIKICAgICBmb3IgdXJsIGluIGxpY19maWxlcy5zcGxpdCgpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICAodHlwZSwgaG9zdCwgcGF0aCwgdXNlciwgcHN3ZCwgcGFybSkgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKQpAQCAtNjg5LDYgKzYwMiw5IEBACiAgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGljZW5zZS1jaGVja3N1bSIsIHBuICsgIjogTElDX0ZJTEVTX0NIS1NVTSBwb2ludHMgdG8gYW4gaW52YWxpZCBmaWxlOiAiICsgc3JjbGljZmlsZSwgZCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICAgICAgaWYgKHNyY2xpY2ZpbGUgPT0gY29yZWJhc2VfbGljZW5zZWZpbGUpOgorICAgICAgICAgICAgYmIud2FybigiJHtDT1JFQkFTRX0vTElDRU5TRSBpcyBub3QgYSB2YWxpZCBsaWNlbnNlIGZpbGUsIHBsZWFzZSB1c2UgJyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQnIGZvciBhIE1JVCBMaWNlbnNlIGZpbGUgaW4gTElDX0ZJTEVTX0NIS1NVTS4gVGhpcyB3aWxsIGJlY29tZSBhbiBlcnJvciBpbiB0aGUgZnV0dXJlIikKKwogICAgICAgICByZWNpcGVtZDUgPSBwYXJtLmdldCgnbWQ1JywgJycpCiAgICAgICAgIGJlZ2lubGluZSwgZW5kbGluZSA9IDAsIDAKICAgICAgICAgaWYgJ2JlZ2lubGluZScgaW4gcGFybToKQEAgLTgxNiw3ICs3MzIsNyBAQAogICAgIHJldHVybiBzYW5lCiAKICMgUnVuIGFsbCBwYWNrYWdlLXdpZGUgd2FybmZ1bmNzIGFuZCBlcnJvcmZ1bmNzCi1kZWYgcGFja2FnZV9xYV9wYWNrYWdlKHdhcm5mdW5jcywgZXJyb3JmdW5jcywgc2tpcCwgcGFja2FnZSwgZCk6CitkZWYgcGFja2FnZV9xYV9wYWNrYWdlKHdhcm5mdW5jcywgZXJyb3JmdW5jcywgcGFja2FnZSwgZCk6CiAgICAgd2FybmluZ3MgPSB7fQogICAgIGVycm9ycyA9IHt9CiAKQEAgLTgzMiw4ICs3NDgsMjUgQEAKIAogICAgIHJldHVybiBsZW4oZXJyb3JzKSA9PSAwCiAKKyMgUnVuIGFsbCByZWNpcGUtd2lkZSB3YXJuZnVuY3MgYW5kIGVycm9yZnVuY3MKK2RlZiBwYWNrYWdlX3FhX3JlY2lwZSh3YXJuZnVuY3MsIGVycm9yZnVuY3MsIHBuLCBkKToKKyAgICB3YXJuaW5ncyA9IHt9CisgICAgZXJyb3JzID0ge30KKworICAgIGZvciBmdW5jIGluIHdhcm5mdW5jczoKKyAgICAgICAgZnVuYyhwbiwgZCwgd2FybmluZ3MpCisgICAgZm9yIGZ1bmMgaW4gZXJyb3JmdW5jczoKKyAgICAgICAgZnVuYyhwbiwgZCwgZXJyb3JzKQorCisgICAgZm9yIHcgaW4gd2FybmluZ3M6CisgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKHcsIHdhcm5pbmdzW3ddLCBkKQorICAgIGZvciBlIGluIGVycm9yczoKKyAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoZSwgZXJyb3JzW2VdLCBkKQorCisgICAgcmV0dXJuIGxlbihlcnJvcnMpID09IDAKKwogIyBXYWxrIG92ZXIgYWxsIGZpbGVzIGluIGEgZGlyZWN0b3J5IGFuZCBjYWxsIGZ1bmMKLWRlZiBwYWNrYWdlX3FhX3dhbGsod2FybmZ1bmNzLCBlcnJvcmZ1bmNzLCBza2lwLCBwYWNrYWdlLCBkKToKK2RlZiBwYWNrYWdlX3FhX3dhbGsod2FybmZ1bmNzLCBlcnJvcmZ1bmNzLCBwYWNrYWdlLCBkKToKICAgICBpbXBvcnQgb2UucWEKIAogICAgICNpZiB0aGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLCB0aGVuIGZpeCB0aGUgZGljdCBhYm92ZQpAQCAtOTczLDggKzkwNiw5IEBACiAgICAgICAgICAgICAgICAgICAgIGVycm9yX21zZyA9ICIlcyBjb250YWluZWQgaW4gcGFja2FnZSAlcyByZXF1aXJlcyAlcywgYnV0IG5vIHByb3ZpZGVycyBmb3VuZCBpbiBSREVQRU5EU18lcz8iICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlcmRlcGVuZHNba2V5XS5yZXBsYWNlKCJfJXMiICUgcGtnLCAiIikucmVwbGFjZSgiQHVuZGVyc2NvcmVAIiwgIl8iKSwgcGtnLCBrZXksIHBrZykKICAgICAgICAgICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImZpbGUtcmRlcHMiLCBlcnJvcl9tc2csIGQpCitwYWNrYWdlX3FhX2NoZWNrX3JkZXBlbmRzW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCiAKLWRlZiBwYWNrYWdlX3FhX2NoZWNrX2RlcHMocGtnLCBwa2dkZXN0LCBza2lwLCBkKToKK2RlZiBwYWNrYWdlX3FhX2NoZWNrX2RlcHMocGtnLCBwa2dkZXN0LCBkKToKIAogICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsIHBrZykKQEAgLTk5Nyw2ICs5MzEsMTggQEAKICAgICBjaGVja192YWxpZF9kZXBzKCdSUkVQTEFDRVMnKQogICAgIGNoZWNrX3ZhbGlkX2RlcHMoJ1JDT05GTElDVFMnKQogCitRQVBLR1RFU1RbdXNybWVyZ2VdID0gInBhY2thZ2VfcWFfY2hlY2tfdXNybWVyZ2UiCitkZWYgcGFja2FnZV9xYV9jaGVja191c3JtZXJnZShwa2csIGQsIG1lc3NhZ2VzKToKKyAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQorICAgIHBrZ19kaXIgPSBwa2dkZXN0ICsgb3Muc2VwICsgcGtnICsgb3Muc2VwCisgICAgbWVyZ2VkX2RpcnMgPSBbJ2JpbicsICdzYmluJywgJ2xpYiddICsgZC5nZXRWYXIoJ01VTFRJTElCX1ZBUklBTlRTJykuc3BsaXQoKQorICAgIGZvciBmIGluIG1lcmdlZF9kaXJzOgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dfZGlyICsgZikgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhwa2dfZGlyICsgZik6CisgICAgICAgICAgICBtc2cgPSAiJXMgcGFja2FnZSBpcyBub3Qgb2JleWluZyB1c3JtZXJnZSBkaXN0cm8gZmVhdHVyZS4gLyVzIHNob3VsZCBiZSByZWxvY2F0ZWQgdG8gL3Vzci4iICUgKHBrZywgZikKKyAgICAgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJ1c3JtZXJnZSIsIG1zZykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKIFFBUEtHVEVTVFtleHBhbmRlZC1kXSA9ICJwYWNrYWdlX3FhX2NoZWNrX2V4cGFuZGVkX2QiCiBkZWYgcGFja2FnZV9xYV9jaGVja19leHBhbmRlZF9kKHBhY2thZ2UsIGQsIG1lc3NhZ2VzKToKICAgICAiIiIKQEAgLTEwNzAsNiArMTAxNiw3IEBACiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gVHJ1ZQogCisKICMgVGhlIFBBQ0tBR0UgRlVOQyB0byBzY2FuIGVhY2ggcGFja2FnZQogcHl0aG9uIGRvX3BhY2thZ2VfcWEgKCkgewogICAgIGltcG9ydCBzdWJwcm9jZXNzCkBAIC0xMDgzLDcgKzEwMzAsNyBAQAogICAgIHBhY2thZ2VfcWFfY2hlY2tfZW5jb2RpbmcoWydERVNDUklQVElPTicsICdTVU1NQVJZJywgJ0xJQ0VOU0UnLCAnU0VDVElPTiddLCAndXRmLTgnLCBkKQogCiAgICAgbG9nZGlyID0gZC5nZXRWYXIoJ1QnKQotICAgIHBrZyA9IGQuZ2V0VmFyKCdQTicpCisgICAgcG4gPSBkLmdldFZhcignUE4nKQogCiAgICAgIyBDaGVjayB0aGUgY29tcGlsZSBsb2cgZm9yIGhvc3QgY29udGFtaW5hdGlvbgogICAgIGNvbXBpbGVsb2cgPSBvcy5wYXRoLmpvaW4obG9nZGlyLCJsb2cuZG9fY29tcGlsZSIpCkBAIC0xMDkyLDcgKzEwMzksNyBAQAogICAgICAgICBzdGF0ZW1lbnQgPSAiZ3JlcCAtZSAnQ1JPU1MgQ09NUElMRSBCYWRuZXNzOicgLWUgJ2lzIHVuc2FmZSBmb3IgY3Jvc3MtY29tcGlsYXRpb24nICVzID4gL2Rldi9udWxsIiAlIGNvbXBpbGVsb2cKICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKHN0YXRlbWVudCwgc2hlbGw9VHJ1ZSkgPT0gMDoKICAgICAgICAgICAgIG1zZyA9ICIlczogVGhlIGNvbXBpbGUgbG9nIGluZGljYXRlcyB0aGF0IGhvc3QgaW5jbHVkZSBhbmQvb3IgbGlicmFyeSBwYXRocyB3ZXJlIHVzZWQuXG4gXAotICAgICAgICBQbGVhc2UgY2hlY2sgdGhlIGxvZyAnJXMnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgJSAocGtnLCBjb21waWxlbG9nKQorICAgICAgICBQbGVhc2UgY2hlY2sgdGhlIGxvZyAnJXMnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgJSAocG4sIGNvbXBpbGVsb2cpCiAgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigiY29tcGlsZS1ob3N0LXBhdGgiLCBtc2csIGQpCiAKICAgICAjIENoZWNrIHRoZSBpbnN0YWxsIGxvZyBmb3IgaG9zdCBjb250YW1pbmF0aW9uCkBAIC0xMTAyLDcgKzEwNDksNyBAQAogICAgICAgICBzdGF0ZW1lbnQgPSAiZ3JlcCAtZSAnQ1JPU1MgQ09NUElMRSBCYWRuZXNzOicgLWUgJ2lzIHVuc2FmZSBmb3IgY3Jvc3MtY29tcGlsYXRpb24nICVzID4gL2Rldi9udWxsIiAlIGluc3RhbGxsb2cKICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKHN0YXRlbWVudCwgc2hlbGw9VHJ1ZSkgPT0gMDoKICAgICAgICAgICAgIG1zZyA9ICIlczogVGhlIGluc3RhbGwgbG9nIGluZGljYXRlcyB0aGF0IGhvc3QgaW5jbHVkZSBhbmQvb3IgbGlicmFyeSBwYXRocyB3ZXJlIHVzZWQuXG4gXAotICAgICAgICBQbGVhc2UgY2hlY2sgdGhlIGxvZyAnJXMnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgJSAocGtnLCBpbnN0YWxsbG9nKQorICAgICAgICBQbGVhc2UgY2hlY2sgdGhlIGxvZyAnJXMnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgJSAocG4sIGluc3RhbGxsb2cpCiAgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigiaW5zdGFsbC1ob3N0LXBhdGgiLCBtc2csIGQpCiAKICAgICAjIFNjYW4gdGhlIHBhY2thZ2VzLi4uCkBAIC0xMTMxLDM1ICsxMDc4LDMwIEBACiAgICAgZm9yIGRlcCBpbiB0YXNrZGVwZGF0YToKICAgICAgICAgdGFza2RlcHMuYWRkKHRhc2tkZXBkYXRhW2RlcF1bMF0pCiAKKyAgICBkZWYgcGFyc2VfdGVzdF9tYXRyaXgobWF0cml4X25hbWUpOgorICAgICAgICB0ZXN0bWF0cml4ID0gZC5nZXRWYXJGbGFncyhtYXRyaXhfbmFtZSkgb3Ige30KKyAgICAgICAgZyA9IGdsb2JhbHMoKQorICAgICAgICB3YXJuY2hlY2tzID0gW10KKyAgICAgICAgZm9yIHcgaW4gKGQuZ2V0VmFyKCJXQVJOX1FBIikgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgICAgICBpZiB3IGluIHNraXA6CisgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgdyBpbiB0ZXN0bWF0cml4IGFuZCB0ZXN0bWF0cml4W3ddIGluIGc6CisgICAgICAgICAgICAgICAgd2FybmNoZWNrcy5hcHBlbmQoZ1t0ZXN0bWF0cml4W3ddXSkKKworICAgICAgICBlcnJvcmNoZWNrcyA9IFtdCisgICAgICAgIGZvciBlIGluIChkLmdldFZhcigiRVJST1JfUUEiKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgICAgIGlmIGUgaW4gc2tpcDoKKyAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBlIGluIHRlc3RtYXRyaXggYW5kIHRlc3RtYXRyaXhbZV0gaW4gZzoKKyAgICAgICAgICAgICAgICBlcnJvcmNoZWNrcy5hcHBlbmQoZ1t0ZXN0bWF0cml4W2VdXSkKKyAgICAgICAgcmV0dXJuIHdhcm5jaGVja3MsIGVycm9yY2hlY2tzCisKICAgICBmb3IgcGFja2FnZSBpbiBwYWNrYWdlczoKLSAgICAgICAgZGVmIHBhcnNlX3Rlc3RfbWF0cml4KG1hdHJpeF9uYW1lKToKLSAgICAgICAgICAgIHRlc3RtYXRyaXggPSBkLmdldFZhckZsYWdzKG1hdHJpeF9uYW1lKSBvciB7fQotICAgICAgICAgICAgZyA9IGdsb2JhbHMoKQotICAgICAgICAgICAgd2FybmNoZWNrcyA9IFtdCi0gICAgICAgICAgICBmb3IgdyBpbiAoZC5nZXRWYXIoIldBUk5fUUEiKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgICAgICAgICBpZiB3IGluIHNraXA6Ci0gICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiB3IGluIHRlc3RtYXRyaXggYW5kIHRlc3RtYXRyaXhbd10gaW4gZzoKLSAgICAgICAgICAgICAgICAgICAgd2FybmNoZWNrcy5hcHBlbmQoZ1t0ZXN0bWF0cml4W3ddXSkKLSAgICAgICAgICAgICAgICBpZiB3ID09ICd1bnNhZmUtcmVmZXJlbmNlcy1pbi1iaW5hcmllcyc6Ci0gICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKLQotICAgICAgICAgICAgZXJyb3JjaGVja3MgPSBbXQotICAgICAgICAgICAgZm9yIGUgaW4gKGQuZ2V0VmFyKCJFUlJPUl9RQSIpIG9yICIiKS5zcGxpdCgpOgotICAgICAgICAgICAgICAgIGlmIGUgaW4gc2tpcDoKLSAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGUgaW4gdGVzdG1hdHJpeCBhbmQgdGVzdG1hdHJpeFtlXSBpbiBnOgotICAgICAgICAgICAgICAgICAgICBlcnJvcmNoZWNrcy5hcHBlbmQoZ1t0ZXN0bWF0cml4W2VdXSkKLSAgICAgICAgICAgICAgICBpZiBlID09ICd1bnNhZmUtcmVmZXJlbmNlcy1pbi1iaW5hcmllcyc6Ci0gICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKLSAgICAgICAgICAgIHJldHVybiB3YXJuY2hlY2tzLCBlcnJvcmNoZWNrcwotCiAgICAgICAgIHNraXAgPSBzZXQoKGQuZ2V0VmFyKCdJTlNBTkVfU0tJUCcpIG9yICIiKS5zcGxpdCgpICsKICAgICAgICAgICAgICAgICAgICAoZC5nZXRWYXIoJ0lOU0FORV9TS0lQXycgKyBwYWNrYWdlKSBvciAiIikuc3BsaXQoKSkKICAgICAgICAgaWYgc2tpcDoKICAgICAgICAgICAgIGJiLm5vdGUoIlBhY2thZ2UgJXMgc2tpcHBpbmcgUUEgdGVzdHM6ICVzIiAlIChwYWNrYWdlLCBzdHIoc2tpcCkpKQogCi0KICAgICAgICAgYmIubm90ZSgiQ2hlY2tpbmcgUGFja2FnZTogJXMiICUgcGFja2FnZSkKICAgICAgICAgIyBDaGVjayBwYWNrYWdlIG5hbWUKICAgICAgICAgaWYgbm90IHBrZ25hbWVfcGF0dGVybi5tYXRjaChwYWNrYWdlKToKQEAgLTExNjcsMTMgKzExMDksMTYgQEAKICAgICAgICAgICAgICAgICAgICAgIiVzIGRvZXNuJ3QgbWF0Y2ggdGhlIFthLXowLTkuKy1dKyByZWdleCIgJSBwYWNrYWdlLCBkKQogCiAgICAgICAgIHdhcm5fY2hlY2tzLCBlcnJvcl9jaGVja3MgPSBwYXJzZV90ZXN0X21hdHJpeCgiUUFQQVRIVEVTVCIpCi0gICAgICAgIHBhY2thZ2VfcWFfd2Fsayh3YXJuX2NoZWNrcywgZXJyb3JfY2hlY2tzLCBza2lwLCBwYWNrYWdlLCBkKQorICAgICAgICBwYWNrYWdlX3FhX3dhbGsod2Fybl9jaGVja3MsIGVycm9yX2NoZWNrcywgcGFja2FnZSwgZCkKIAogICAgICAgICB3YXJuX2NoZWNrcywgZXJyb3JfY2hlY2tzID0gcGFyc2VfdGVzdF9tYXRyaXgoIlFBUEtHVEVTVCIpCi0gICAgICAgIHBhY2thZ2VfcWFfcGFja2FnZSh3YXJuX2NoZWNrcywgZXJyb3JfY2hlY2tzLCBza2lwLCBwYWNrYWdlLCBkKQorICAgICAgICBwYWNrYWdlX3FhX3BhY2thZ2Uod2Fybl9jaGVja3MsIGVycm9yX2NoZWNrcywgcGFja2FnZSwgZCkKIAogICAgICAgICBwYWNrYWdlX3FhX2NoZWNrX3JkZXBlbmRzKHBhY2thZ2UsIHBrZ2Rlc3QsIHNraXAsIHRhc2tkZXBzLCBwYWNrYWdlcywgZCkKLSAgICAgICAgcGFja2FnZV9xYV9jaGVja19kZXBzKHBhY2thZ2UsIHBrZ2Rlc3QsIHNraXAsIGQpCisgICAgICAgIHBhY2thZ2VfcWFfY2hlY2tfZGVwcyhwYWNrYWdlLCBwa2dkZXN0LCBkKQorCisgICAgd2Fybl9jaGVja3MsIGVycm9yX2NoZWNrcyA9IHBhcnNlX3Rlc3RfbWF0cml4KCJRQVJFQ0lQRVRFU1QiKQorICAgIHBhY2thZ2VfcWFfcmVjaXBlKHdhcm5fY2hlY2tzLCBlcnJvcl9jaGVja3MsIHBuLCBkKQogCiAgICAgaWYgJ2xpYmRpcicgaW4gZC5nZXRWYXIoIkFMTF9RQSIpLnNwbGl0KCk6CiAgICAgICAgIHBhY2thZ2VfcWFfY2hlY2tfbGliZGlyKGQpCkBAIC0xMjM4LDEyICsxMTgzLDEwIEBACiAgICAgY25mID0gZC5nZXRWYXIoJ0VYVFJBX09FQ09ORicpIG9yICIiCiAgICAgaWYgImdldHRleHQiIG5vdCBpbiBkLmdldFZhcignUCcpIGFuZCAiZ2NjLXJ1bnRpbWUiIG5vdCBpbiBkLmdldFZhcignUCcpIGFuZCAiLS1kaXNhYmxlLW5scyIgbm90IGluIGNuZjoKICAgICAgICAgbWwgPSBkLmdldFZhcigiTUxQUkVGSVgiKSBvciAiIgotICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcycsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3Nzc2RrJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCk6Ci0gICAgICAgICAgICBndCA9ICJnZXR0ZXh0LW5hdGl2ZSIKLSAgICAgICAgZWxpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcy1jYW5hZGlhbicsIGQpOgorICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcy1jYW5hZGlhbicsIGQpOgogICAgICAgICAgICAgZ3QgPSAibmF0aXZlc2RrLWdldHRleHQiCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBndCA9ICJ2aXJ0dWFsLyIgKyBtbCArICJnZXR0ZXh0IgorICAgICAgICAgICAgZ3QgPSAiZ2V0dGV4dC1uYXRpdmUiCiAgICAgICAgIGRlcHMgPSBiYi51dGlscy5leHBsb2RlX2RlcHMoZC5nZXRWYXIoJ0RFUEVORFMnKSBvciAiIikKICAgICAgICAgaWYgZ3Qgbm90IGluIGRlcHM6CiAgICAgICAgICAgICBmb3IgY29uZmlnIGluIGNvbmZpZ3M6CkBAIC0xMzA4LDYgKzEyNTEsOCBAQAogZG9fdW5wYWNrW3Bvc3RmdW5jc10gKz0gImRvX3FhX3VucGFjayIKIAogcHl0aG9uICgpIHsKKyAgICBpbXBvcnQgcmUKKyAgICAKICAgICB0ZXN0cyA9IGQuZ2V0VmFyKCdBTExfUUEnKS5zcGxpdCgpCiAgICAgaWYgImRlc2t0b3AiIGluIHRlc3RzOgogICAgICAgICBkLmFwcGVuZFZhcigiUEFDS0FHRV9ERVBFTkRTIiwgIiBkZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlIikKQEAgLTEzMzQsNiArMTI3OSw5IEBACiAgICAgaWYgcG4gaW4gb3ZlcnJpZGVzOgogICAgICAgICBtc2cgPSAnUmVjaXBlICVzIGhhcyBQTiBvZiAiJXMiIHdoaWNoIGlzIGluIE9WRVJSSURFUywgdGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgYmVoYXZpb3VyLicgJSAoZC5nZXRWYXIoIkZJTEUiKSwgcG4pCiAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJwbi1vdmVycmlkZXMiLCBtc2csIGQpCisgICAgcHJvZyA9IHJlLmNvbXBpbGUoJ1tBLVpdJykKKyAgICBpZiBwcm9nLnNlYXJjaChwbik6CisgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJ1cHBlcmNhc2UtcG4iLCAnUE46ICVzIGlzIHVwcGVyIGNhc2UsIHRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW9yLicgJSBwbiwgZCkKIAogICAgIGlzc3VlcyA9IFtdCiAgICAgaWYgKGQuZ2V0VmFyKCdQQUNLQUdFUycpIG9yICIiKS5zcGxpdCgpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMDhiZTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MKQEAgLTAsMCArMSwxMTIgQEAKKyMgU3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgZ2VuZXJhdGlvbgorUEFDS0FHRVNfYXBwZW5kID0gIiBcCisgICAga2VybmVsLWRldmljZXRyZWUgXAorICAgICR7QFsna2VybmVsLWltYWdlLXppbWFnZS1idW5kbGUnLCAnJ11bZC5nZXRWYXIoJ0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRScpICE9ICcxJ119IFwKKyIKK0ZJTEVTX2tlcm5lbC1kZXZpY2V0cmVlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9LyouZHRiIC8ke0tFUk5FTF9JTUFHRURFU1R9LyouZHRibyIKK0ZJTEVTX2tlcm5lbC1pbWFnZS16aW1hZ2UtYnVuZGxlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9L3pJbWFnZS0qLmR0Yi5iaW4iCisKKyMgR2VuZXJhdGUga2VybmVsK2RldmljZXRyZWUgYnVuZGxlCitLRVJORUxfREVWSUNFVFJFRV9CVU5ETEUgPz0gIjAiCisKK25vcm1hbGl6ZV9kdGIgKCkgeworCURUQj0iJDEiCisJaWYgZWNobyAke0RUQn0gfCBncmVwIC1xICcvZHRzLyc7IHRoZW4KKwkJYmJ3YXJuICIke0RUQn0gY29udGFpbnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgdGhlIGR0cyBmaWxlLCBidXQgb25seSB0aGUgZHRiIG5hbWUgc2hvdWxkIGJlIHVzZWQuIgorCQlEVEI9YGJhc2VuYW1lICR7RFRCfSB8IHNlZCAncyxcLmR0cyQsLmR0YixnJ2AKKwlmaQorCWVjaG8gIiR7RFRCfSIKK30KKworZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICgpIHsKKwlEVEI9IiQxIgorCURUQl9QQVRIPSIke0J9L2FyY2gvJHtBUkNIfS9ib290L2R0cy8ke0RUQn0iCisJaWYgWyAhIC1lICIke0RUQl9QQVRIfSIgXTsgdGhlbgorCQlEVEJfUEFUSD0iJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC8ke0RUQn0iCisJZmkKKwllY2hvICIke0RUQl9QQVRIfSIKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlpZiBbICIke0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRX0iID0gIjEiIF07IHRoZW4KKwkJaWYgZWNobyAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9IHwgZ3JlcCAtcSAnekltYWdlJzsgdGhlbgorCQkJY2FzZSAiJHtBUkNIfSIgaW4KKwkJCQkiYXJtIikKKwkJCQljb25maWc9IiR7Qn0vLmNvbmZpZyIKKwkJCQlpZiAhIGdyZXAgLXEgJ0NPTkZJR19BUk1fQVBQRU5ERURfRFRCPXknICRjb25maWc7IHRoZW4KKwkJCQkJYmJ3YXJuICdDT05GSUdfQVJNX0FQUEVOREVEX0RUQiBpcyBOT1QgZW5hYmxlZCBpbiB0aGUga2VybmVsLiBFbmFibGluZyBpdCB0byBhbGxvdyB0aGUga2VybmVsIHRvIGJvb3Qgd2l0aCB0aGUgRGV2aWNlIFRyZWUgYXBwZW5kZWQhJworCQkJCQlzZWQgLWkgIi9DT05GSUdfQVJNX0FQUEVOREVEX0RUQlsgPV0vZCIgJGNvbmZpZworCQkJCQllY2hvICJDT05GSUdfQVJNX0FQUEVOREVEX0RUQj15IiA+PiAkY29uZmlnCisJCQkJCWVjaG8gIiMgQ09ORklHX0FSTV9BVEFHX0RUQl9DT01QQVQgaXMgbm90IHNldCIgPj4gJGNvbmZpZworCQkJCWZpCisJCQkJOzsKKwkJCQkqKQorCQkJCWJiZXJyb3IgIktFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRSBpcyBub3Qgc3VwcG9ydGVkIGZvciAke0FSQ0h9LiBDdXJyZW50bHkgaXQgaXMgb25seSBzdXBwb3J0ZWQgZm9yICdBUk0nLiIKKwkJCWVzYWMKKwkJZWxzZQorCQkJYmJlcnJvciAnVGhlIEtFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRSByZXF1aXJlcyB0aGUgS0VSTkVMX0lNQUdFVFlQRSB0byBjb250YWluIHpJbWFnZS4nCisJCWZpCisJZmkKK30KKworZG9fY29tcGlsZV9hcHBlbmQoKSB7CisJZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KKwkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAorCQlvZV9ydW5tYWtlICR7RFRCfQorCWRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KKwkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAorCQlEVEJfRVhUPSR7RFRCIyMqLn0KKwkJRFRCX1BBVEg9YGdldF9yZWFsX2R0Yl9wYXRoX2luX2tlcm5lbCAiJHtEVEJ9ImAKKwkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCisJCWluc3RhbGwgLW0gMDY0NCAke0RUQl9QQVRIfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9CisJCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCisJCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KKwkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKKwkJCWxuIC1zZiAke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9L2RldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9CisKKwkJCWlmIFsgIiR0eXBlIiA9ICJ6SW1hZ2UiIF0gJiYgWyAiJHtLRVJORUxfREVWSUNFVFJFRV9CVU5ETEV9IiA9ICIxIiBdOyB0aGVuCisJCQkJY2F0ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8kdHlwZSBcCisJCQkJCSR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0gXAorCQkJCQk+ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8kdHlwZS0ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0uYmluCisJCQlmaQorCQlkb25lCisJZG9uZQorfQorCitkb19kZXBsb3lfYXBwZW5kKCkgeworCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCisJCURUQj1gbm9ybWFsaXplX2R0YiAiJHtEVEJ9ImAKKwkJRFRCX0VYVD0ke0RUQiMjKi59CisJCURUQl9CQVNFX05BTUU9YGJhc2VuYW1lICR7RFRCfSAuIiR7RFRCX0VYVH0iYAorCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9OyBkbworCQkJYmFzZV9uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9CQVNFX05BTUV9CisJCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KKwkJCURUQl9OQU1FPWBlY2hvICR7YmFzZV9uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCisJCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCisJCQlEVEJfUEFUSD1gZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICIke0RUQn0iYAorCQkJaW5zdGFsbCAtZCAke0RFUExPWURJUn0KKwkJCWluc3RhbGwgLW0gMDY0NCAke0RUQl9QQVRIfSAke0RFUExPWURJUn0vJHtEVEJfTkFNRX0uJHtEVEJfRVhUfQorCQkJbG4gLXNmICR7RFRCX05BTUV9LiR7RFRCX0VYVH0gJHtERVBMT1lESVJ9LyR7RFRCX1NZTUxJTktfTkFNRX0uJHtEVEJfRVhUfQorCQkJbG4gLXNmICR7RFRCX05BTUV9LiR7RFRCX0VYVH0gJHtERVBMT1lESVJ9LyR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfQorCisJCQlpZiBbICIkdHlwZSIgPSAiekltYWdlIiBdICYmIFsgIiR7S0VSTkVMX0RFVklDRVRSRUVfQlVORExFfSIgPSAiMSIgXTsgdGhlbgorCQkJCWNhdCAke0RFUExPWURJUn0vJHR5cGUgXAorCQkJCQkke0RFUExPWURJUn0vJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSBcCisJCQkJCT4gJHtERVBMT1lESVJ9LyR7RFRCX05BTUV9LiR7RFRCX0VYVH0uYmluCisJCQkJbG4gLXNmICR7RFRCX05BTUV9LiR7RFRCX0VYVH0uYmluICR7REVQTE9ZRElSfS8kdHlwZS0ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0uYmluCisKKwkJCQlpZiBbIC1lICIke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9LmluaXRyYW1mcyIgXTsgdGhlbgorCQkJCQljYXQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfS5pbml0cmFtZnMgXAorCQkJCQkJJHtERVBMT1lESVJ9LyR7RFRCX05BTUV9LiR7RFRCX0VYVH0gXAorCQkJCQkJPiAke0RFUExPWURJUn0vJHt0eXBlfS0ke0lOSVRSQU1GU19CQVNFX05BTUV9LSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS5iaW4KKwkJCQkJbG4gLXNmICR7dHlwZX0tJHtJTklUUkFNRlNfQkFTRV9OQU1FfS0ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0uYmluIFwKKwkJCQkJICAgICAgICR7REVQTE9ZRElSfS8ke3R5cGV9LWluaXRyYW1mcy0ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0tJHtNQUNISU5FfS5iaW4KKwkJCQlmaQorCQkJZmkKKwkJZG9uZQorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCmluZGV4IDE3OTE4NWIuLjliYWYzOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcwpAQCAtNyw5ICs3LDEyIEBACiAgICAgICAgIGRlcGVuZHMgPSAiJXMgdS1ib290LW1raW1hZ2UtbmF0aXZlIGR0Yy1uYXRpdmUiICUgZGVwZW5kcwogICAgICAgICBkLnNldFZhcigiREVQRU5EUyIsIGRlcGVuZHMpCiAKLSAgICAgICAgaWYgZC5nZXRWYXIoIlVCT09UX0FSQ0giKSA9PSAibWlwcyI6CisgICAgICAgIHVhcmNoID0gZC5nZXRWYXIoIlVCT09UX0FSQ0giKQorICAgICAgICBpZiB1YXJjaCA9PSAiYXJtNjQiOgorICAgICAgICAgICAgcmVwbGFjZW1lbnR0eXBlID0gIkltYWdlIgorICAgICAgICBlbGlmIHVhcmNoID09ICJtaXBzIjoKICAgICAgICAgICAgIHJlcGxhY2VtZW50dHlwZSA9ICJ2bWxpbnV6LmJpbiIKLSAgICAgICAgZWxpZiBkLmdldFZhcigiVUJPT1RfQVJDSCIpID09ICJ4ODYiOgorICAgICAgICBlbGlmIHVhcmNoID09ICJ4ODYiOgogICAgICAgICAgICAgcmVwbGFjZW1lbnR0eXBlID0gImJ6SW1hZ2UiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAiekltYWdlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1tb2R1bGUtc3BsaXQuYmJjbGFzcwppbmRleCA1ZTEwZGNmLi4xMDM1NTI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1tb2R1bGUtc3BsaXQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1tb2R1bGUtc3BsaXQuYmJjbGFzcwpAQCAtNDcsNyArNDcsNyBAQAogICAgICAgICB0ZiA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICB0bXBmaWxlID0gdGZbMV0KICAgICAgICAgY21kID0gIiVzb2JqY29weSAtaiAubW9kaW5mbyAtTyBiaW5hcnkgJXMgJXMiICUgKGQuZ2V0VmFyKCJIT1NUX1BSRUZJWCIpIG9yICIiLCBmaWxlLCB0bXBmaWxlKQotICAgICAgICBzdWJwcm9jZXNzLmNhbGwoY21kLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzaGVsbD1UcnVlKQogICAgICAgICBmID0gb3Blbih0bXBmaWxlKQogICAgICAgICBsID0gZi5yZWFkKCkuc3BsaXQoIlwwMDAiKQogICAgICAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVib290LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC11Ym9vdC5iYmNsYXNzCmluZGV4IDg3ZjAyNjUuLjIzNjQwNTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVib290LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtdWJvb3QuYmJjbGFzcwpAQCAtMyw2ICszLDEwIEBACiAJCXZtbGludXhfcGF0aD0iYXJjaC8ke0FSQ0h9L2Jvb3QvY29tcHJlc3NlZC92bWxpbnV4IgogCQlsaW51eF9zdWZmaXg9IiIKIAkJbGludXhfY29tcD0ibm9uZSIKKwllbGlmIFsgLWUgYXJjaC8ke0FSQ0h9L2Jvb3QvSW1hZ2UgXSA7IHRoZW4KKwkJdm1saW51eF9wYXRoPSJ2bWxpbnV4IgorCQlsaW51eF9zdWZmaXg9IiIKKwkJbGludXhfY29tcD0ibm9uZSIKIAllbGlmIFsgLWUgYXJjaC8ke0FSQ0h9L2Jvb3Qvdm1saW51ei5iaW4gXTsgdGhlbgogCQlybSAtZiBsaW51eC5iaW4KIAkJY3AgLWwgYXJjaC8ke0FSQ0h9L2Jvb3Qvdm1saW51ei5iaW4gbGludXguYmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwppbmRleCAxY2EwNzU2Li42NjNjNjU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKQEAgLTEwNywyMCArMTA3LDMxIEBACiAJCQkJY21wICIke1dPUktESVJ9L2RlZmNvbmZpZyIgIiR7U30vYXJjaC8ke0FSQ0h9L2NvbmZpZ3MvJHtLQlVJTERfREVGQ09ORklHfSIKIAkJCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KIAkJCQkJYmJ3YXJuICJkZWZjb25maWcgZGV0ZWN0ZWQgaW4gV09SS0RJUi4gJHtLQlVJTERfREVGQ09ORklHfSBza2lwcGVkIgorCQkJCWVsc2UKKwkJCQkJY3AgLWYgJHtTfS9hcmNoLyR7QVJDSH0vY29uZmlncy8ke0tCVUlMRF9ERUZDT05GSUd9ICR7V09SS0RJUn0vZGVmY29uZmlnCiAJCQkJZmkKIAkJCWVsc2UKIAkJCQljcCAtZiAke1N9L2FyY2gvJHtBUkNIfS9jb25maWdzLyR7S0JVSUxEX0RFRkNPTkZJR30gJHtXT1JLRElSfS9kZWZjb25maWcKLQkJCQlzY2NzPSIke1dPUktESVJ9L2RlZmNvbmZpZyIKIAkJCWZpCisJCQlzY2NzPSIke1dPUktESVJ9L2RlZmNvbmZpZyIKIAkJZWxzZQotCQkJYmJmYXRhbCAiQSBLQlVJTERfREVDT05GSUcgJyR7S0JVSUxEX0RFRkNPTkZJR30nIHdhcyBzcGVjaWZpZWQsIGJ1dCBub3QgcHJlc2VudCBpbiB0aGUgc291cmNlIHRyZWUiCisJCQliYmZhdGFsICJBIEtCVUlMRF9ERUZDT05GSUcgJyR7S0JVSUxEX0RFRkNPTkZJR30nIHdhcyBzcGVjaWZpZWQsIGJ1dCBub3QgcHJlc2VudCBpbiB0aGUgc291cmNlIHRyZWUiCiAJCWZpCiAJZmkKIAotCXNjY3M9IiRzY2NzICR7QCIgIi5qb2luKGZpbmRfc2NjcyhkKSl9IgorCXNjY3NfZnJvbV9zcmNfdXJpPSIke0AiICIuam9pbihmaW5kX3NjY3MoZCkpfSIKIAlwYXRjaGVzPSIke0AiICIuam9pbihmaW5kX3BhdGNoZXMoZCkpfSIKIAlmZWF0X2RpcnM9IiR7QCIgIi5qb2luKGZpbmRfa2VybmVsX2ZlYXR1cmVfZGlycyhkKSl9IgogCisJIyBhIHF1aWNrIGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIGR1cGxpY2F0ZSBkZWZjb25maWdzCisJIyBJZiB0aGVyZSdzIGEgZGVmY29uZmlnIGluIHRoZSBTUkNfVVJJLCBkaWQgd2UgYWxzbyBoYXZlIG9uZSBmcm9tCisJIyB0aGUgS0JVSUxEX0RFRkNPTkZJRyBwcm9jZXNzaW5nIGFib3ZlID8KKwlpZiBbIC1uICIkc2NjcyIgXTsgdGhlbgorCSAgICAjIHdlIGRpZCBoYXZlIGEgZGVmY29uZmlnIGZyb20gYWJvdmUuIHJlbW92ZSBhbnkgdGhhdCBtaWdodCBiZSBpbiB0aGUgc3JjX3VyaQorCSAgICBzY2NzX2Zyb21fc3JjX3VyaT0kKGVjaG8gJHNjY3NfZnJvbV9zcmNfdXJpIHwgYXdrICd7IGlmICgkMCE9ImRlZmNvbmZpZyIpIHsgcHJpbnQgJDAgfSB9JyBSUz0nICcpCisJZmkKKwlzY2NzPSIkc2NjcyAkc2Njc19mcm9tX3NyY191cmkiCisKIAkjIGNoZWNrIGZvciBmZWF0dXJlIGRpcmVjdG9yaWVzL3JlcG9zL2JyYW5jaGVzIHRoYXQgd2VyZSBwYXJ0IG9mIHRoZQogCSMgU1JDX1VSSS4gSWYgdGhleSB3ZXJlIHN1cHBsaWVkLCB3ZSBjb252ZXJ0IHRoZW0gaW50byBpbmNsdWRlIGRpcmVjdGl2ZXMKIAkjIGZvciB0aGUgdXBkYXRlIHBhcnQgb2YgdGhlIHByb2Nlc3MKQEAgLTE0Myw2ICsxNTQsMTIgQEAKIAogCSMgZXhwYW5kIGtlcm5lbCBmZWF0dXJlcyBpbnRvIHRoZWlyIGZ1bGwgcGF0aCBlcXVpdmFsZW50cwogCWJzcF9kZWZpbml0aW9uPSQoc3BwICR7aW5jbHVkZXN9IC0tZmluZCAtREtNQUNISU5FPSR7S01BQ0hJTkV9IC1ES1RZUEU9JHtMSU5VWF9LRVJORUxfVFlQRX0pCisJaWYgWyAteiAiJGJzcF9kZWZpbml0aW9uIiBdOyB0aGVuCisJCWVjaG8gIiRzY2NzIiB8IGdyZXAgLXEgZGVmY29uZmlnCisJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgorCQkJYmJmYXRhbF9sb2cgIkNvdWxkIG5vdCBsb2NhdGUgQlNQIGRlZmluaXRpb24gZm9yICR7S01BQ0hJTkV9LyR7TElOVVhfS0VSTkVMX1RZUEV9IGFuZCBubyBkZWZjb25maWcgd2FzIHByb3ZpZGVkIgorCQlmaQorCWZpCiAJbWV0YV9kaXI9JChrZ2l0IC0tbWV0YSkKIAogCSMgcnVuMTogcHVsbCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLCBubyBtYXR0ZXIgd2hlcmUgdGhleSBjb21lIGZyb20KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCmluZGV4IGNlMmNhYjYuLjE0ZjQxZTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcwpAQCAtMiw3ICsyLDcgQEAKIAogUFJPVklERVMgKz0gInZpcnR1YWwva2VybmVsIgogREVQRU5EUyArPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIGttb2QtbmF0aXZlIGJjLW5hdGl2ZSBsem9wLW5hdGl2ZSIKLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAiZGVwbW9kd3JhcHBlci1jcm9zcyB2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMtbmF0aXZlIgorUEFDS0FHRV9XUklURV9ERVBTICs9ICJkZXBtb2R3cmFwcGVyLWNyb3NzIgogCiBkb19kZXBsb3lbZGVwZW5kc10gKz0gImRlcG1vZHdyYXBwZXItY3Jvc3M6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIApAQCAtNTcsNyArNTcsNyBAQAogCiAgICAgICAgIGQuYXBwZW5kVmFyKCdQQUNLQUdFUycsICcgJyArICdrZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlcikKIAotICAgICAgICBkLnNldFZhcignRklMRVNfa2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIsICcvJyArIGltYWdlZGVzdCArICcvJyArIHR5cGUgKyAnLSR7S0VSTkVMX1ZFUlNJT05fTkFNRX0nKQorICAgICAgICBkLnNldFZhcignRklMRVNfa2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIsICcvJyArIGltYWdlZGVzdCArICcvJyArIHR5cGUgKyAnLSR7S0VSTkVMX1ZFUlNJT05fTkFNRX0nICsgJyAvJyArIGltYWdlZGVzdCArICcvJyArIHR5cGUpCiAKICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTX2tlcm5lbC1pbWFnZScsICcgJyArICdrZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlcikKIApAQCAtNjUsMTMgKzY1LDYgQEAKIAogICAgICAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfa2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIsICcxJykKIAotICAgICAgICBwcmlvcml0eSA9IGQuZ2V0VmFyKCdLRVJORUxfUFJJT1JJVFknKQotICAgICAgICBwb3N0aW5zdCA9ICcjIS9iaW4vc2hcbicgKyAndXBkYXRlLWFsdGVybmF0aXZlcyAtLWluc3RhbGwgLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlICsgJyAnICsgdHlwZSArICcgJyArIHR5cGUgKyAnLSR7S0VSTkVMX1ZFUlNJT05fTkFNRX0gJyArIHByaW9yaXR5ICsgJyB8fCB0cnVlJyArICdcbicKLSAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0aW5zdF9rZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlciwgcG9zdGluc3QpCi0KLSAgICAgICAgcG9zdHJtID0gJyMhL2Jpbi9zaFxuJyArICd1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tcmVtb3ZlJyArICcgJyArIHR5cGUgKyAnICcgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9IHx8IHRydWUnICsgJ1xuJwotICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RybV9rZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlciwgcG9zdHJtKQotCiAgICAgaW1hZ2UgPSBkLmdldFZhcignSU5JVFJBTUZTX0lNQUdFJykKICAgICBpZiBpbWFnZToKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19idW5kbGVfaW5pdHJhbWZzJywgJ2RlcGVuZHMnLCAnICR7SU5JVFJBTUZTX0lNQUdFfTpkb19pbWFnZV9jb21wbGV0ZScpCkBAIC0xMzcsMTAgKzEzMCw2IEBACiBleHBvcnQgS0JVSUxEX0JVSUxEX1VTRVIgPSAib2UtdXNlciIKIGV4cG9ydCBLQlVJTERfQlVJTERfSE9TVCA9ICJvZS1ob3N0IgogCi1LRVJORUxfUFJJT1JJVFkgPz0gIiR7QGludChkLmdldFZhcignUFYnKS5zcGxpdCgnLScpWzBdLnNwbGl0KCcrJylbMF0uc3BsaXQoJy4nKVswXSkgKiAxMDAwMCArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50KGQuZ2V0VmFyKCdQVicpLnNwbGl0KCctJylbMF0uc3BsaXQoJysnKVswXS5zcGxpdCgnLicpWzFdKSAqIDEwMCArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50KGQuZ2V0VmFyKCdQVicpLnNwbGl0KCctJylbMF0uc3BsaXQoJysnKVswXS5zcGxpdCgnLicpWy0xXSl9IgotCiBLRVJORUxfUkVMRUFTRSA/PSAiJHtLRVJORUxfVkVSU0lPTn0iCiAKICMgVGhlIGRpcmVjdG9yeSB3aGVyZSBidWlsdCBrZXJuZWwgbGllcyBpbiB0aGUga2VybmVsIHRyZWUKQEAgLTE2Niw3ICsxNTUsNyBAQAogIyBTb21lIExpbnV4IGtlcm5lbCBjb25maWd1cmF0aW9ucyBuZWVkIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBvbiB0aGUgY29tbWFuZCBsaW5lCiBLRVJORUxfRVhUUkFfQVJHUyA/PSAiIgogCi1FWFRSQV9PRU1BS0UgPSAiIEhPU1RDQz0iJHtCVUlMRF9DQ30iIEhPU1RDUFA9IiR7QlVJTERfQ1BQfSIiCitFWFRSQV9PRU1BS0UgPSAiIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDUFA9IiR7QlVJTERfQ1BQfSIiCiBLRVJORUxfQUxUX0lNQUdFVFlQRSA/Pz0gIiIKIAogY29weV9pbml0cmFtZnMoKSB7CkBAIC0yNTUsOCArMjQ0LDM2IEBACiAKIGFkZHRhc2sgYnVuZGxlX2luaXRyYW1mcyBhZnRlciBkb19pbnN0YWxsIGJlZm9yZSBkb19kZXBsb3kKIAorZ2V0X2NjX29wdGlvbiAoKSB7CisJCSMgQ2hlY2sgaWYgS0VSTkVMX0NDIHN1cHBvcnRzIHRoZSBvcHRpb24gImZpbGUtcHJlZml4LW1hcCIuCisJCSMgVGhpcyBvcHRpb24gYWxsb3dzIHVzIHRvIGJ1aWxkIGltYWdlcyB3aXRoIF9fRklMRV9fIHZhbHVlcyB0aGF0IGRvIG5vdAorCQkjIGNvbnRhaW4gdGhlIGhvc3QgYnVpbGQgcGF0aC4KKwkJaWYgJHtLRVJORUxfQ0N9IC1RIC0taGVscD1qb2luZWQgfCBncmVwIC1xICJcLWZmaWxlLXByZWZpeC1tYXA9PG9sZD1uZXc+IjsgdGhlbgorCQkJZWNobyAiLWZmaWxlLXByZWZpeC1tYXA9JHtTfT0va2VybmVsLXNvdXJjZS8iCisJCWZpCit9CisKIGtlcm5lbF9kb19jb21waWxlKCkgewogCXVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTIE1BQ0hJTkUKKwlpZiBbICIkQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTIiA9ICIxIiBdOyB0aGVuCisJCSMga2VybmVsIHNvdXJjZXMgZG8gbm90IHVzZSBkb191bnBhY2ssIHNvIFNPVVJDRV9EQVRFX0VQT0NIIG1heSBub3QKKwkJIyBiZSBzZXQuLi4uCisJCWlmIFsgIiRTT1VSQ0VfREFURV9FUE9DSCIgPSAiMCIgXTsgdGhlbgorCQkJb2xkZGlyPWBwd2RgCisJCQljZCAke1N9CisJCQlTT1VSQ0VfREFURV9FUE9DSD1gZ2l0IGxvZyAgLTEgLS1wcmV0dHk9JWN0YAorCQkJIyBnaXQgcmVwbyBub3QgZ3VhcmFudGVlZCwgc28gZmFsbCBiYWNrIHRvIFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTCisJCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KKwkJCQlTT1VSQ0VfREFURV9FUE9DSD0ke1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTfQorCQkJZmkKKwkJCWNkICRvbGRkaXIKKwkJZmkKKworCQl0cz1gTENfQUxMPUMgZGF0ZSAtZCBAJFNPVVJDRV9EQVRFX0VQT0NIYAorCQlleHBvcnQgS0JVSUxEX0JVSUxEX1RJTUVTVEFNUD0iJHRzIgorCQlleHBvcnQgS0NPTkZJR19OT1RJTUVTVEFNUD0xCisJCWJibm90ZSAiS0JVSUxEX0JVSUxEX1RJTUVTVEFNUDogJHRzIgorCWZpCiAJIyBUaGUgJHVzZV9hbHRlcm5hdGVfaW5pdHJkIGlzIG9ubHkgc2V0IGZyb20KIAkjIGRvX2J1bmRsZV9pbml0cmFtZnMoKSBUaGlzIHZhcmlhYmxlIGlzIHNwZWNpZmljYWxseSBmb3IgdGhlCiAJIyBjYXNlIHdoZXJlIHdlIGFyZSBtYWtpbmcgYSBzZWNvbmQgcGFzcyBhdCB0aGUga2VybmVsCkBAIC0yNzAsMjAgKzI4NywyMiBAQAogCQljb3B5X2luaXRyYW1mcwogCQl1c2VfYWx0ZXJuYXRlX2luaXRyZD1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0ke0J9L3Vzci8ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS5jcGlvCiAJZmkKKwljY19leHRyYT0kKGdldF9jY19vcHRpb24pCiAJZm9yIHR5cGVmb3JtYWtlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX0gOyBkbwotCQlvZV9ydW5tYWtlICR7dHlwZWZvcm1ha2V9IENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iICR7S0VSTkVMX0VYVFJBX0FSR1N9ICR1c2VfYWx0ZXJuYXRlX2luaXRyZAorCQlvZV9ydW5tYWtlICR7dHlwZWZvcm1ha2V9IENDPSIke0tFUk5FTF9DQ30gJGNjX2V4dHJhICIgTEQ9IiR7S0VSTkVMX0xEfSIgJHtLRVJORUxfRVhUUkFfQVJHU30gJHVzZV9hbHRlcm5hdGVfaW5pdHJkCiAJZG9uZQogCSMgdm1saW51eC5neiBpcyBub3QgYnVpbHQgYnkga2VybmVsCiAJaWYgKGVjaG8gIiR7S0VSTkVMX0lNQUdFVFlQRVN9IiB8IGdyZXAgLXdxICJ2bWxpbnV4XC5neiIpOyB0aGVuCiAJCW1rZGlyIC1wICIke0tFUk5FTF9PVVRQVVRfRElSfSIKLQkJZ3ppcCAtOWMgPCAke0J9L3ZtbGludXggPiAiJHtLRVJORUxfT1VUUFVUX0RJUn0vdm1saW51eC5neiIKKwkJZ3ppcCAtOWNuIDwgJHtCfS92bWxpbnV4ID4gIiR7S0VSTkVMX09VVFBVVF9ESVJ9L3ZtbGludXguZ3oiCiAJZmkKIH0KIAogZG9fY29tcGlsZV9rZXJuZWxtb2R1bGVzKCkgewogCXVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTIE1BQ0hJTkUKIAlpZiAoZ3JlcCAtcSAtaSAtZSAnXkNPTkZJR19NT0RVTEVTPXkkJyAke0J9Ly5jb25maWcpOyB0aGVuCi0JCW9lX3J1bm1ha2UgLUMgJHtCfSAke1BBUkFMTEVMX01BS0V9IG1vZHVsZXMgQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgJHtLRVJORUxfRVhUUkFfQVJHU30KKwkJY2NfZXh0cmE9JChnZXRfY2Nfb3B0aW9uKQorCQlvZV9ydW5tYWtlIC1DICR7Qn0gJHtQQVJBTExFTF9NQUtFfSBtb2R1bGVzIENDPSIke0tFUk5FTF9DQ30gJGNjX2V4dHJhICIgTEQ9IiR7S0VSTkVMX0xEfSIgJHtLRVJORUxfRVhUUkFfQVJHU30KIAogCQkjIE1vZHVsZS5zeW12ZXJzIGdldHMgdXBkYXRlZCBkdXJpbmcgdGhlIAogCQkjIGJ1aWxkaW5nIG9mIHRoZSBrZXJuZWwgbW9kdWxlcy4gV2UgbmVlZCB0bwpAQCAtMzIwLDYgKzMzOSw3IEBACiAJaW5zdGFsbCAtZCAke0R9L2Jvb3QKIAlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCiAJCWluc3RhbGwgLW0gMDY0NCAke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke3R5cGV9LSR7S0VSTkVMX1ZFUlNJT059CisJCWxuIC1zZiAke3R5cGV9LSR7S0VSTkVMX1ZFUlNJT059ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke3R5cGV9CiAJZG9uZQogCWluc3RhbGwgLW0gMDY0NCBTeXN0ZW0ubWFwICR7RH0vYm9vdC9TeXN0ZW0ubWFwLSR7S0VSTkVMX1ZFUlNJT059CiAJaW5zdGFsbCAtbSAwNjQ0IC5jb25maWcgJHtEfS9ib290L2NvbmZpZy0ke0tFUk5FTF9WRVJTSU9OfQpAQCAtNTc1LDE5ICs1OTUsMjcgQEAKIGFkZHRhc2sgc3RyaXAgYmVmb3JlIGRvX3NpemVjaGVjayBhZnRlciBkb19rZXJuZWxfbGlua19pbWFnZXMKIAogIyBTdXBwb3J0IGNoZWNraW5nIHRoZSBrZXJuZWwgc2l6ZSBzaW5jZSBzb21lIGtlcm5lbHMgbmVlZCB0byByZXNpZGUgaW4gcGFydGl0aW9ucwotIyB3aXRoIGEgZml4ZWQgbGVuZ3RoIG9yIHRoZXJlIGlzIGEgbGltaXQgaW4gdHJhbnNmZXJyaW5nIHRoZSBrZXJuZWwgdG8gbWVtb3J5CisjIHdpdGggYSBmaXhlZCBsZW5ndGggb3IgdGhlcmUgaXMgYSBsaW1pdCBpbiB0cmFuc2ZlcnJpbmcgdGhlIGtlcm5lbCB0byBtZW1vcnkuCisjIElmIG1vcmUgdGhhbiBvbmUgaW1hZ2UgdHlwZSBpcyBlbmFibGVkLCB3YXJuIG9uIGFueSB0aGF0IGRvbid0IGZpdCBidXQgb25seSBmYWlsCisjIGlmIG5vbmUgZml0LgogZG9fc2l6ZWNoZWNrKCkgewogCWlmIFsgISAteiAiJHtLRVJORUxfSU1BR0VfTUFYU0laRX0iIF07IHRoZW4KIAkJaW52YWxpZD1gZWNobyAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfSB8IHNlZCAncy9bMC05XS8vZydgCiAJCWlmIFsgLW4gIiRpbnZhbGlkIiBdOyB0aGVuCi0JCQlkaWUgIkludmFsaWQgS0VSTkVMX0lNQUdFX01BWFNJWkU6ICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9LCBzaG91bGQgYmUgYW4gaW50ZWdlcnggKFRoZSB1bml0IGlzIEtieXRlcykiCisJCQlkaWUgIkludmFsaWQgS0VSTkVMX0lNQUdFX01BWFNJWkU6ICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9LCBzaG91bGQgYmUgYW4gaW50ZWdlciAoVGhlIHVuaXQgaXMgS2J5dGVzKSIKIAkJZmkKKwkJYXRfbGVhc3Rfb25lX2ZpdHM9CiAJCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRVN9IDsgZG8KIAkJCXNpemU9YGR1IC1rcyAke0J9LyR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlIHwgYXdrICd7cHJpbnQgJDF9J2AKIAkJCWlmIFsgJHNpemUgLWdlICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9IF07IHRoZW4KLQkJCQl3YXJuICJUaGlzIGtlcm5lbCAkdHlwZSAoc2l6ZT0kc2l6ZShLKSA+ICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9KEspKSBpcyB0b28gYmlnIGZvciB5b3VyIGRldmljZS4gUGxlYXNlIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGJ5IG1ha2luZyBtb3JlIG9mIGl0IG1vZHVsYXIuIgorCQkJCWJid2FybiAiVGhpcyBrZXJuZWwgJHR5cGUgKHNpemU9JHNpemUoSykgPiAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfShLKSkgaXMgdG9vIGJpZyBmb3IgeW91ciBkZXZpY2UuIgorCQkJZWxzZQorCQkJCWF0X2xlYXN0X29uZV9maXRzPXkKIAkJCWZpCiAJCWRvbmUKKwkJaWYgWyAteiAiJGF0X2xlYXN0X29uZV9maXRzIiBdOyB0aGVuCisJCQlkaWUgIkFsbCBrZXJuZWwgaW1hZ2VzIGFyZSB0b28gYmlnIGZvciB5b3VyIGRldmljZS4gUGxlYXNlIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGJ5IG1ha2luZyBtb3JlIG9mIGl0IG1vZHVsYXIuIgorCQlmaQogCWZpCiB9CiBkb19zaXplY2hlY2tbZGlyc10gPSAiJHtCfSIKQEAgLTY0MiwzICs2NzAsNiBAQAogYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9fcG9wdWxhdGVfc3lzcm9vdCBkb19wYWNrYWdlZGF0YQogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2RlcGxveQorCisjIEFkZCB1c2luZyBEZXZpY2UgVHJlZSBzdXBwb3J0Citpbmhlcml0IGtlcm5lbC1kZXZpY2V0cmVlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCmluZGV4IGIxZmZmZTcuLmQzNTMxMTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCkBAIC0yNTUsMTQgKzI1NSw5IEBACiAgICAgIiIiCiAKICAgICBkZXBlbmRzID0gW10KLSAgICBib290X2RlcGVuZHNfc3RyaW5nID0gIiIKICAgICB0YXNrZGVwZGF0YSA9IGQuZ2V0VmFyKCJCQl9UQVNLREVQREFUQSIsIEZhbHNlKQotICAgICMgT25seSBib290aW1nIGFuZCBib290ZGlyZWN0ZGlzayBpbmNsdWRlIHRoZSBkZXBlbmRzIGZsYWcKLSAgICBib290X3Rhc2tzID0gWyJkb19ib290aW1nIiwgImRvX2Jvb3RkaXJlY3RkaXNrIixdCi0KLSAgICBmb3IgdGFzayBpbiBib290X3Rhc2tzOgotICAgICAgICBib290X2RlcGVuZHNfc3RyaW5nID0gIiVzICVzIiAlIChib290X2RlcGVuZHNfc3RyaW5nLAotICAgICAgICAgICAgICAgIGQuZ2V0VmFyRmxhZyh0YXNrLCAiZGVwZW5kcyIpIG9yICIiKQorICAgICMgT25seSBib290aW1nIGluY2x1ZGVzIHRoZSBkZXBlbmRzIGZsYWcKKyAgICBib290X2RlcGVuZHNfc3RyaW5nID0gZC5nZXRWYXJGbGFnKCJkb19ib290aW1nIiwgImRlcGVuZHMiKSBvciAiIgogICAgIGJvb3RfZGVwZW5kcyA9IFtkZXAuc3BsaXQoIjoiKVswXSBmb3IgZGVwCiAgICAgICAgICAgICAgICAgaW4gYm9vdF9kZXBlbmRzX3N0cmluZy5zcGxpdCgpCiAgICAgICAgICAgICAgICAgaWYgbm90IGRlcC5zcGxpdCgiOiIpWzBdLmVuZHN3aXRoKCItbmF0aXZlIildCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKaW5kZXggMTE3YjAzMC4uOGYzMGViMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcwpAQCAtMSw1ICsxLDggQEAKK0xEU09fVENMSUJDID0gImdsaWJjIgorTERTT19UQ0xJQkNfbGliYy1tdXNsID0gIm11c2wiCitMRFNPX1RDTElCQ19saWJjLWJhcmVtZXRhbCA9ICJtdXNsIgogCi1saW51eGxvYWRlciAoKSB7CitsaW51eGxvYWRlcl9nbGliYyAoKSB7CiAJY2FzZSAke1RBUkdFVF9BUkNIfSBpbgogCQlwb3dlcnBjIHwgbWljcm9ibGF6ZSApCiAJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQuc28uMSIKQEAgLTI4LDMgKzMxLDQwIEBACiAJZXNhYwogCWVjaG8gJGR5bmFtaWNfbG9hZGVyCiB9CisKK2xpbnV4bG9hZGVyX211c2wgKCkgeworCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KKwkJbWljcm9ibGF6ZSogKQorCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtbWljcm9ibGF6ZSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICcnLCAnZWwnICxkKX0uc28uMSIKKwkJCTs7CisJCW1pcHMqICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLW1pcHMke0FCSUVYVEVOU0lPTn0ke01JUFNQS0dTRlhfQllURX0ke01JUFNQS0dTRlhfUjZ9JHtNSVBTUEtHU0ZYX0VORElBTn0ke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCisJCQk7OworCQlwb3dlcnBjICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXBvd2VycGMke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCisJCQk7OworCQlwb3dlcnBjNjQgKQorCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtcG93ZXJwYzY0LnNvLjEiCisJCQk7OworCQl4ODZfNjQgKQorCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wteDg2XzY0LnNvLjEiCisJCQk7OworCQlpKjg2ICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWkzODYuc28uMSIKKwkJCTs7CisJCWFybSogKQorCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtYXJtJHtBUk1QS0dTRlhfRU5ESUFOfSR7QVJNUEtHU0ZYX0VBQkl9LnNvLjEiCisJCQk7OworCQlhYXJjaDY0KiApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1hYXJjaDY0JHtBUk1QS0dTRlhfRU5ESUFOXzY0fS5zby4xIgorCQkJOzsKKwkJKiApCisJCQlkeW5hbWljX2xvYWRlcj0iL3Vua25vd25fZHluYW1pY19saW5rZXIiCisJCQk7OworCWVzYWMKKwllY2hvICRkeW5hbWljX2xvYWRlcgorfQorCitsaW51eGxvYWRlciAoKSB7CisJbGludXhsb2FkZXJfJHtMRFNPX1RDTElCQ30KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcwppbmRleCAyN2IxMzdkLi5lMWQ4YjE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpdmUtdm0tY29tbW9uLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzCkBAIC0xNSw2ICsxNSw4IEBACiBFRklfUFJPVklERVIgPz0gImdydWItZWZpIgogRUZJX0NMQVNTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgImVmaSIsICIke0VGSV9QUk9WSURFUn0iLCAiIiwgZCl9IgogCitNS0RPU0ZTX0VYVFJBT1BUUyA/Pz0gIi1TIDUxMiIKKwogIyBJbmNsdWRlIGxlZ2FjeSBib290IGlmIE1BQ0hJTkVfRkVBVFVSRVMgaW5jbHVkZXMgInBjYmlvcyIgb3IgaWYgaXQgZG9lcyBub3QKICMgY29udGFpbiAiZWZpIi4gVGhpcyB3YXkgbGVnYWN5IGlzIHN1cHBvcnRlZCBieSBkZWZhdWx0IGlmIG5laXRoZXIgaXMKICMgc3BlY2lmaWVkLCBtYWludGFpbmluZyB0aGUgb3JpZ2luYWwgYmVoYXZpb3IuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21pcnJvcnMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCmluZGV4IDRhZDgxNGYuLjc2NmYxY2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCkBAIC0zMCwyMSArMzAsMTUgQEAKIGZ0cDovL2Z0cC5nbnV0bHMub3JnL2djcnlwdC9nbnV0bHMgJHtHTlVQR19NSVJST1J9L2dudXRscyBcbiBcCiBodHRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvIGh0dHA6Ly9taXJyb3Iuc3dpdGNoLmNoL2Z0cC9taXJyb3IvaW5mb3ppcC9zcmMvIFxuIFwKIGh0dHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL3NyYy8gZnRwOi8vc3Vuc2l0ZS5pY20uZWR1LnBsL3B1Yi91bml4L2FyY2hpdmluZy9pbmZvLXppcC9zcmMvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAuY2VyaWFzLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvc3lzdXRpbHMvbHNvZi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC50YXUuYWMuaWwvcHViL3VuaXgvYWRtaW4vIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAuY2VydC5kZm4uZGUvcHViL3Rvb2xzL2FkbWluL2xzb2YvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3B1Yi91bml4L3Rvb2xzL2xzb2YvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAua2Fpem8ub3JnL3B1Yi9sc29mLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLnR1LWRhcm1zdGFkdC5kZS9wdWIvc3lzYWRtaW4vbHNvZi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC50dXgub3JnL3B1Yi9zaXRlcy92aWMuY2MucHVyZHVlLmVkdS90b29scy91bml4L2xzb2YvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9nZC50dXdpZW4uYWMuYXQvdXRpbHMvYWRtaW4tdG9vbHMvbHNvZi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL3N1bnNpdGUudWFsYmVydGEuY2EvcHViL01pcnJvci9sc29mLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vdGhlLndpcmV0YXBwZWQubmV0L3B1Yi9zZWN1cml0eS9ob3N0LXNlY3VyaXR5L2xzb2YvIFxuIFwKK2h0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcvc2l0ZXMvbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZy9zaXRlcy9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mL09MRC8gXG4gXAogJHtBUEFDSEVfTUlSUk9SfSAgaHR0cDovL3d3dy51cy5hcGFjaGUub3JnL2Rpc3QgXG4gXAogJHtBUEFDSEVfTUlSUk9SfSAgaHR0cDovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0IFxuIFwKIGh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3dhdGNoZG9nLyBodHRwOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYy8gXG4gXAogJHtTQVZBTk5BSF9HTlVfTUlSUk9SfSBodHRwOi8vZG93bmxvYWQtbWlycm9yLnNhdmFubmFoLmdudS5vcmcvcmVsZWFzZXMgXG4gXAogJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfSBodHRwOi8vZG93bmxvYWQtbWlycm9yLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMgXG4gXAorZnRwOi8vc291cmNld2FyZS5vcmcvcHViIGh0dHA6Ly9taXJyb3JzLmtlcm5lbC5vcmcvc291cmNld2FyZSBcbiBcCitmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIgaHR0cDovL2dkLnR1d2llbi5hYy5hdC9nbnUvc291cmNld2FyZSBcbiBcCitmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIgaHR0cDovL2Z0cC5nd2RnLmRlL3B1Yi9saW51eC9zb3VyY2VzLnJlZGhhdC5jb20vc291cmNld2FyZSBcbiBcCiBjdnM6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBcCiBzdm46Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBcCiBnaXQ6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcwppbmRleCA4MDI0NzZiLi43OGQxYjIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLmJiY2xhc3MKQEAgLTEsNiArMSw2IEBACiBpbmhlcml0IG1vZHVsZS1iYXNlIGtlcm5lbC1tb2R1bGUtc3BsaXQgcGtnY29uZmlnCiAKLWFkZHRhc2sgbWFrZV9zY3JpcHRzIGFmdGVyIGRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QgYmVmb3JlIGRvX2NvbXBpbGUKK2FkZHRhc2sgbWFrZV9zY3JpcHRzIGFmdGVyIGRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QgYmVmb3JlIGRvX2NvbmZpZ3VyZQogZG9fbWFrZV9zY3JpcHRzW2xvY2tmaWxlc10gPSAiJHtUTVBESVJ9L2tlcm5lbC1zY3JpcHRzLmxvY2siCiBkb19tYWtlX3NjcmlwdHNbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgogCkBAIC0xOCw2ICsxOCwyNiBAQAogICAgIGQuc2V0VmFyKCdLQlVJTERfRVhUUkFfU1lNQk9MUycsICIgIi5qb2luKGV4dHJhX3N5bWJvbHMpKQogfQogCitweXRob24gZG9fZGV2c2hlbGxfcHJlcGVuZCAoKSB7CisgICAgb3MuZW52aXJvblsnQ0ZMQUdTJ10gPSAnJworICAgIG9zLmVudmlyb25bJ0NQUEZMQUdTJ10gPSAnJworICAgIG9zLmVudmlyb25bJ0NYWEZMQUdTJ10gPSAnJworICAgIG9zLmVudmlyb25bJ0xERkxBR1MnXSA9ICcnCisKKyAgICBvcy5lbnZpcm9uWydLRVJORUxfUEFUSCddID0gZC5nZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0RJUicpCisgICAgb3MuZW52aXJvblsnS0VSTkVMX1NSQyddID0gZC5nZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0RJUicpCisgICAgb3MuZW52aXJvblsnS0VSTkVMX1ZFUlNJT04nXSA9IGQuZ2V0VmFyKCdLRVJORUxfVkVSU0lPTicpCisgICAgb3MuZW52aXJvblsnQ0MnXSA9IGQuZ2V0VmFyKCdLRVJORUxfQ0MnKQorICAgIG9zLmVudmlyb25bJ0xEJ10gPSBkLmdldFZhcignS0VSTkVMX0xEJykKKyAgICBvcy5lbnZpcm9uWydBUiddID0gZC5nZXRWYXIoJ0tFUk5FTF9BUicpCisgICAgb3MuZW52aXJvblsnTyddID0gZC5nZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0JVSUxERElSJykKKyAgICBrYnVpbGRfZXh0cmFfc3ltYm9scyA9IGQuZ2V0VmFyKCdLQlVJTERfRVhUUkFfU1lNQk9MUycpCisgICAgaWYga2J1aWxkX2V4dHJhX3N5bWJvbHM6CisgICAgICAgIG9zLmVudmlyb25bJ0tCVUlMRF9FWFRSQV9TWU1CT0xTJ10gPSBrYnVpbGRfZXh0cmFfc3ltYm9scworICAgIGVsc2U6CisgICAgICAgIG9zLmVudmlyb25bJ0tCVUlMRF9FWFRSQV9TWU1CT0xTJ10gPSAnJworfQorCiBtb2R1bGVfZG9fY29tcGlsZSgpIHsKIAl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUwogCW9lX3J1bm1ha2UgS0VSTkVMX1BBVEg9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9ICAgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCmluZGV4IGFiMDQ1OTcuLjgxNmY1NGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKQEAgLTQsNyArNCw5IEBACiAgICAgaWYgY2xzICE9ICJtdWx0aWxpYiIgb3Igbm90IHZhcmlhbnQ6CiAgICAgICAgIHJldHVybgogCi0gICAgZS5kYXRhLnNldFZhcignU1RBR0lOR19LRVJORUxfRElSJywgZS5kYXRhLmdldFZhcignU1RBR0lOR19LRVJORUxfRElSJykpCisgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGUuZGF0YSkKKyAgICBsb2NhbGRhdGEuZGVsVmFyKCdUTVBESVInKQorICAgIGUuZGF0YS5zZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0RJUicsIGxvY2FsZGF0YS5nZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0RJUicpKQogCiAgICAgIyBUaGVyZSBzaG91bGQgb25seSBiZSBvbmUga2VybmVsIGluIG11bHRpbGliIGNvbmZpZ3MKICAgICAjIFdlIGFsc28gc2tpcCBtdWx0aWxpYiBzZXR1cCBmb3IgbW9kdWxlIHBhY2thZ2VzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKaW5kZXggNmI3ZjNkZC4uOWM0MzRkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCkBAIC0xMDgsNyArMTA4LDcgQEAKIFBLR19DT05GSUdfU1lTVEVNX0xJQlJBUllfUEFUSFt1bmV4cG9ydF0gPSAiMSIKIFBLR19DT05GSUdfU1lTVEVNX0lOQ0xVREVfUEFUSFt1bmV4cG9ydF0gPSAiMSIKIAotIyB3ZSBkb250IHdhbnQgbGliYy11Y2xpYmMgb3IgbGliYy1nbGliYyB0byBraWNrIGluIGZvciBuYXRpdmUgcmVjaXBlcworIyB3ZSBkb250IHdhbnQgbGliYy0qbGliYyB0byBraWNrIGluIGZvciBuYXRpdmUgcmVjaXBlcwogTElCQ09WRVJSSURFID0gIiIKIENMQVNTT1ZFUlJJREUgPSAiY2xhc3MtbmF0aXZlIgogTUFDSElORU9WRVJSSURFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL293bi1taXJyb3JzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL293bi1taXJyb3JzLmJiY2xhc3MKaW5kZXggMDI5NmQ1NC4uYTc3NzgzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9vd24tbWlycm9ycy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvb3duLW1pcnJvcnMuYmJjbGFzcwpAQCAtMSwxMyArMSwxMyBAQAotUFJFTUlSUk9SUygpIHsKLWN2czovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotc3ZuOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1naXQ6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLWdpdHNtOi8vLiovLiogICAke1NPVVJDRV9NSVJST1JfVVJMfQotaGc6Ly8uKi8uKiAgICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1ienI6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLXA0Oi8vLiovLiogICAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotb3NjOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1odHRwcz8kOi8vLiovLiogJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLWZ0cDovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotbnBtOi8vLiovPy4qICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci19CitQUkVNSVJST1JTX3ByZXBlbmQgPSAiIFwKK2N2czovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitzdm46Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorZ2l0Oi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK2dpdHNtOi8vLiovLiogICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitoZzovLy4qLy4qICAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorYnpyOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK3A0Oi8vLiovLiogICAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitvc2M6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAoraHR0cHM/JDovLy4qLy4qICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK2Z0cDovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitucG06Ly8uKi8/LiogICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwppbmRleCBhMDNjMDViLi4yMDUzZDQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwpAQCAtNzM3LDkgKzczNyw3IEBACiAgICAgZGVmIGdldF9mc19wZXJtc19saXN0KGQpOgogICAgICAgICBzdHIgPSAiIgogICAgICAgICBiYnBhdGggPSBkLmdldFZhcignQkJQQVRIJykKLSAgICAgICAgZnNfcGVybXNfdGFibGVzID0gZC5nZXRWYXIoJ0ZJTEVTWVNURU1fUEVSTVNfVEFCTEVTJykKLSAgICAgICAgaWYgbm90IGZzX3Blcm1zX3RhYmxlczoKLSAgICAgICAgICAgIGZzX3Blcm1zX3RhYmxlcyA9ICdmaWxlcy9mcy1wZXJtcy50eHQnCisgICAgICAgIGZzX3Blcm1zX3RhYmxlcyA9IGQuZ2V0VmFyKCdGSUxFU1lTVEVNX1BFUk1TX1RBQkxFUycpIG9yICIiCiAgICAgICAgIGZvciBjb25mX2ZpbGUgaW4gZnNfcGVybXNfdGFibGVzLnNwbGl0KCk6CiAgICAgICAgICAgICBzdHIgKz0gIiAlcyIgJSBiYi51dGlscy53aGljaChiYnBhdGgsIGNvbmZfZmlsZSkKICAgICAgICAgcmV0dXJuIHN0cgpAQCAtODc5LDYgKzg3NywxMSBAQAogICAgICAgICBkZWJ1Z2RpciA9ICIvLmRlYnVnIgogICAgICAgICBkZWJ1Z2xpYmRpciA9ICIiCiAgICAgICAgIGRlYnVnc3JjZGlyID0gIiIKKyAgICBlbGlmIGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFJykgPT0gJ2RlYnVnLXdpdGgtc3JjcGtnJzoKKyAgICAgICAgZGVidWdhcHBlbmQgPSAiIgorICAgICAgICBkZWJ1Z2RpciA9ICIvLmRlYnVnIgorICAgICAgICBkZWJ1Z2xpYmRpciA9ICIiCisgICAgICAgIGRlYnVnc3JjZGlyID0gIi91c3Ivc3JjL2RlYnVnIgogICAgIGVsc2U6CiAgICAgICAgICMgT3JpZ2luYWwgT0UtY29yZSwgYS5rLmEuICIuZGVidWciLCBzdHlsZSBkZWJ1ZyBpbmZvCiAgICAgICAgIGRlYnVnYXBwZW5kID0gIiIKQEAgLTEwOTIsNiArMTA5NSwxNSBAQAogICAgIAogICAgIGF1dG9kZWJ1ZyA9IG5vdCAoZC5nZXRWYXIoIk5PQVVUT1BBQ0tBR0VERUJVRyIpIG9yIEZhbHNlKQogCisgICAgc3BsaXRfc291cmNlX3BhY2thZ2UgPSAoZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnKSA9PSAnZGVidWctd2l0aC1zcmNwa2cnKQorCisgICAgIyBJZiBkZWJ1Zy13aXRoLXNyY3BrZyBtb2RlIGlzIGVuYWJsZWQgdGhlbiB0aGUgc3JjIHBhY2thZ2UgaXMgYWRkZWQKKyAgICAjIGludG8gdGhlIHBhY2thZ2UgbGlzdCBhbmQgdGhlIHNvdXJjZSBkaXJlY3RvcnkgYXMgaXRzIG1haW4gY29udGVudAorICAgIGlmIHNwbGl0X3NvdXJjZV9wYWNrYWdlOgorICAgICAgICBzcmNfcGFja2FnZV9uYW1lID0gKCclcy1zcmMnICUgZC5nZXRWYXIoJ1BOJykpCisgICAgICAgIHBhY2thZ2VzICs9ICgnICcgKyBzcmNfcGFja2FnZV9uYW1lKQorICAgICAgICBkLnNldFZhcignRklMRVNfJXMnICUgc3JjX3BhY2thZ2VfbmFtZSwgJy91c3Ivc3JjL2RlYnVnJykKKwogICAgICMgU2FuaXR5IGNoZWNrIFBBQ0tBR0VTIGZvciBkdXBsaWNhdGVzCiAgICAgIyBTYW5pdHkgc2hvdWxkIGJlIG1vdmVkIHRvIHNhbml0eS5iYmNsYXNzIG9uY2Ugd2UgaGF2ZSB0aGUgaW5mcmFzdHVjdHVyZQogICAgIHBhY2thZ2VfbGlzdCA9IFtdCkBAIC0xMTAwLDcgKzExMTIsMTIgQEAKICAgICAgICAgaWYgcGtnIGluIHBhY2thZ2VfbGlzdDoKICAgICAgICAgICAgIG1zZyA9ICIlcyBpcyBsaXN0ZWQgaW4gUEFDS0FHRVMgbXVsdGlwbGUgdGltZXMsIHRoaXMgbGVhZHMgdG8gcGFja2FnaW5nIGVycm9ycy4iICUgcGtnCiAgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigicGFja2FnZXMtbGlzdCIsIG1zZywgZCkKLSAgICAgICAgZWxpZiBhdXRvZGVidWcgYW5kIHBrZy5lbmRzd2l0aCgiLWRiZyIpOgorICAgICAgICAjIElmIGRlYnVnLXdpdGgtc3JjcGtnIG1vZGUgaXMgZW5hYmxlZCB0aGVuIHRoZSBzcmMgcGFja2FnZSB3aWxsIGhhdmUKKyAgICAgICAgIyBwcmlvcml0eSBvdmVyIGRiZyBwYWNrYWdlIHdoZW4gYXNzaWduaW5nIHRoZSBmaWxlcy4KKyAgICAgICAgIyBUaGlzIGFsbG93cyBzcmMgcGFja2FnZSB0byBpbmNsdWRlIHNvdXJjZSBmaWxlcyBhbmQgcmVtb3ZlIHRoZW0gZnJvbSBkYmcuCisgICAgICAgIGVsaWYgc3BsaXRfc291cmNlX3BhY2thZ2UgYW5kIHBrZy5lbmRzd2l0aCgiLXNyYyIpOgorICAgICAgICAgICAgcGFja2FnZV9saXN0Lmluc2VydCgwLCBwa2cpCisgICAgICAgIGVsaWYgYXV0b2RlYnVnIGFuZCBwa2cuZW5kc3dpdGgoIi1kYmciKSBhbmQgbm90IHNwbGl0X3NvdXJjZV9wYWNrYWdlOgogICAgICAgICAgICAgcGFja2FnZV9saXN0Lmluc2VydCgwLCBwa2cpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYWNrYWdlX2xpc3QuYXBwZW5kKHBrZykKQEAgLTE0MzQsMTMgKzE0NTEsNyBAQAogZmkKIH0KIAotIyBJbiBNb3J0eSBhbmQgZWFybGllciByZWxlYXNlcywgYW5kIG9uIG1hc3RlciAoUm9ja28pLCB0aGUgUlBNIGZpbGUKLSMgZGVwZW5kZW5jaWVzIGFyZSBhbHdheXMgZW5hYmxlZC4gSG93ZXZlciwgc2luY2UgdGhleSB3ZXJlIGJyb2tlbiB3aXRoIHRoZQotIyByZWxlYXNlIG9mIFB5cm8gYW5kIGVuYWJsaW5nIHRoZW0gbWF5IGNhdXNlIGJ1aWxkIHByb2JsZW1zIGZvciBzb21lIHBhY2thZ2VzLAotIyB0aGV5IGFyZSBub3QgZW5hYmxlZCBieSBkZWZhdWx0IGluIFB5cm8uIFNldHRpbmcgRU5BQkxFX1JQTV9GSUxFREVQU19GT1JfUFlSTwotIyB0byAiMSIgd2lsbCBlbmFibGUgdGhlbSBhZ2Fpbi4KLUVOQUJMRV9SUE1fRklMRURFUFNfRk9SX1BZUk8gPz89ICIwIgotUlBNREVQUyA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtL3JwbWRlcHMke0AnIC0tYWxsZGVwcycgaWYgZC5nZXRWYXIoJ0VOQUJMRV9SUE1fRklMRURFUFNfRk9SX1BZUk8nKSA9PSAnMScgZWxzZSAnJ30iCitSUE1ERVBTID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0vcnBtZGVwcyAtLWFsbGRlcHMiCiAKICMgQ29sbGVjdCBwZXJmaWxlIHJ1bi10aW1lIGRlcGVuZGVuY3kgbWV0YWRhdGEKICMgT3V0cHV0OgpAQCAtMTQ2NSw3ICsxNDc2LDcgQEAKICAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgIGlmIGQuZ2V0VmFyKCdTS0lQX0ZJTEVERVBTXycgKyBwa2cpID09ICcxJzoKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIHBrZy5lbmRzd2l0aCgnLWRiZycpIG9yIHBrZy5lbmRzd2l0aCgnLWRvYycpIG9yIHBrZy5maW5kKCctbG9jYWxlLScpICE9IC0xIG9yIHBrZy5maW5kKCctbG9jYWxlZGF0YS0nKSAhPSAtMSBvciBwa2cuZmluZCgnLWdjb252LScpICE9IC0xIG9yIHBrZy5maW5kKCctY2hhcm1hcC0nKSAhPSAtMSBvciBwa2cuc3RhcnRzd2l0aCgna2VybmVsLW1vZHVsZS0nKToKKyAgICAgICAgaWYgcGtnLmVuZHN3aXRoKCctZGJnJykgb3IgcGtnLmVuZHN3aXRoKCctZG9jJykgb3IgcGtnLmZpbmQoJy1sb2NhbGUtJykgIT0gLTEgb3IgcGtnLmZpbmQoJy1sb2NhbGVkYXRhLScpICE9IC0xIG9yIHBrZy5maW5kKCctZ2NvbnYtJykgIT0gLTEgb3IgcGtnLmZpbmQoJy1jaGFybWFwLScpICE9IC0xIG9yIHBrZy5zdGFydHN3aXRoKCdrZXJuZWwtbW9kdWxlLScpIG9yIHBrZy5lbmRzd2l0aCgnLXNyYycpOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZm9yIGZpbGVzIGluIGNodW5rcyhwa2dmaWxlc1twa2ddLCAxMDApOgogICAgICAgICAgICAgcGtnbGlzdC5hcHBlbmQoKHBrZywgZmlsZXMsIHJwbWRlcHMsIHBrZ2Rlc3QpKQpAQCAtMTU4Myw3ICsxNTk0LDcgQEAKICAgICAgICAgICAgICAgICBjb21ib3MuYXBwZW5kKCItIi5qb2luKG9wdGlvbnNbMDppXSkpCiAgICAgICAgICAgICByZXR1cm4gY29tYm9zCiAKLSAgICAgICAgaWYgKGZpbGUuZW5kc3dpdGgoJy5keWxpYicpIG9yIGZpbGUuZW5kc3dpdGgoJy5zbycpKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRldicpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGJnJyk6CisgICAgICAgIGlmIChmaWxlLmVuZHN3aXRoKCcuZHlsaWInKSBvciBmaWxlLmVuZHN3aXRoKCcuc28nKSkgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kZXYnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRiZycpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctc3JjJyk6CiAgICAgICAgICAgICAjIERyb3Agc3VmZml4CiAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlKS5yc3BsaXQoIi4iLDEpWzBdCiAgICAgICAgICAgICAjIEZpbmQgYWxsIGNvbWJpbmF0aW9ucwpAQCAtMjA2MCw3ICsyMDcxLDcgQEAKICAgICAjIGNhY2hlLiAgVGhpcyBpcyB1c2VmdWwgaWYgYW4gaXRlbSB0aGlzIGNsYXNzIGRlcGVuZHMgb24gY2hhbmdlcyBpbiBhCiAgICAgIyB3YXkgdGhhdCB0aGUgb3V0cHV0IG9mIHRoaXMgY2xhc3MgY2hhbmdlcy4gIHJwbWRlcHMgaXMgYSBnb29kIGV4YW1wbGUKICAgICAjIGFzIGFueSBjaGFuZ2UgdG8gcnBtZGVwcyByZXF1aXJlcyB0aGlzIHRvIGJlIHJlcnVuLgotICAgICMgUEFDS0FHRV9CQkNMQVNTX1ZFUlNJT04gPSAiMSIKKyAgICAjIFBBQ0tBR0VfQkJDTEFTU19WRVJTSU9OID0gIjIiCiAKICAgICAjIEluaXQgY2FjaGVkcGF0aAogICAgIGdsb2JhbCBjcGF0aApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCmluZGV4IGVhY2FiY2QuLjVkMjk3OTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKQEAgLTM5LDUwICszOSw3OSBAQAogICAgIGlmIGFyY2ggPT0gImFybSI6CiAgICAgICAgIHJldHVybiBhcmNoICsgWyJlbCIsICJoZiJdWyJjYWxsY29udmVudGlvbi1oYXJkIiBpbiB0dW5lX2ZlYXR1cmVzXQogICAgIHJldHVybiBhcmNoCi0jCi0jIGluc3RhbGwgYSBidW5jaCBvZiBwYWNrYWdlcyB1c2luZyBhcHQKLSMgdGhlIGZvbGxvd2luZyBzaGVsbCB2YXJpYWJsZXMgbmVlZHMgdG8gYmUgc2V0IGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuYzoKLSMgSU5TVEFMTF9ST09URlNfREVCIC0gaW5zdGFsbCByb290IGRpcgotIyBJTlNUQUxMX0JBU0VBUkNIX0RFQiAtIGluc3RhbGwgYmFzZSBhcmNoaXRlY3V0cmUKLSMgSU5TVEFMTF9BUkNIU19ERUIgLSBsaXN0IG9mIGF2YWlsYWJsZSBhcmNocwotIyBJTlNUQUxMX1BBQ0tBR0VTX05PUk1BTF9ERUIgLSBwYWNrYWdlcyB0byBiZSBpbnN0YWxsZWQKLSMgSU5TVEFMTF9QQUNLQUdFU19BVFRFTVBUT05MWV9ERUIgLSBwYWNrYWdlcyBhdHRlbXB0ZWQgdG8gYmUgaW5zdGFsbGVkIG9ubHkKLSMgSU5TVEFMTF9QQUNLQUdFU19MSU5HVUFTX0RFQiAtIGFkZGl0aW9uYWwgcGFja2FnZXMgZm9yIHVjbGliYwotIyBJTlNUQUxMX1RBU0tfREVCIC0gdGFzayBuYW1lCiAKIHB5dGhvbiBkb19wYWNrYWdlX2RlYiAoKSB7Ci0gICAgaW1wb3J0IHJlLCBjb3B5Ci0gICAgaW1wb3J0IHRleHR3cmFwCi0gICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMKLSAgICBpbXBvcnQgY29kZWNzCisKKyAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCisgICAgaW1wb3J0IHRyYWNlYmFjaworCisgICAgY2xhc3MgRGViaWFuV3JpdGVQa2dQcm9jZXNzKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9wY29ubiwgc2VsZi5fY2Nvbm4gPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCisgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBOb25lCisKKyAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5ydW4oc2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgdGIgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgICAgICAgICAgc2VsZi5fY2Nvbm4uc2VuZCgoZSwgdGIpKQorCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAgICAgaWYgc2VsZi5fcGNvbm4ucG9sbCgpOgorICAgICAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IHNlbGYuX3Bjb25uLnJlY3YoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlvbgogCiAgICAgb2xkY3dkID0gb3MuZ2V0Y3dkKCkKIAotICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCi0gICAgaWYgbm90IHdvcmtkaXI6Ci0gICAgICAgIGJiLmVycm9yKCJXT1JLRElSIG5vdCBkZWZpbmVkLCB1bmFibGUgdG8gcGFja2FnZSIpCi0gICAgICAgIHJldHVybgotCi0gICAgb3V0ZGlyID0gZC5nZXRWYXIoJ1BLR1dSSVRFRElSREVCJykKLSAgICBpZiBub3Qgb3V0ZGlyOgotICAgICAgICBiYi5lcnJvcigiUEtHV1JJVEVESVJERUIgbm90IGRlZmluZWQsIHVuYWJsZSB0byBwYWNrYWdlIikKLSAgICAgICAgcmV0dXJuCi0KICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpCiAgICAgaWYgbm90IHBhY2thZ2VzOgogICAgICAgICBiYi5kZWJ1ZygxLCAiUEFDS0FHRVMgbm90IGRlZmluZWQsIG5vdGhpbmcgdG8gcGFja2FnZSIpCiAgICAgICAgIHJldHVybgogCiAgICAgdG1wZGlyID0gZC5nZXRWYXIoJ1RNUERJUicpCi0KICAgICBpZiBvcy5hY2Nlc3Mob3MucGF0aC5qb2luKHRtcGRpciwgInN0YW1wcyIsICJERUJfUEFDS0FHRV9JTkRFWF9DTEVBTiIpLG9zLlJfT0spOgogICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHRtcGRpciwgInN0YW1wcyIsICJERUJfUEFDS0FHRV9JTkRFWF9DTEVBTiIpKQogCi0gICAgaWYgcGFja2FnZXMgPT0gW106Ci0gICAgICAgIGJiLmRlYnVnKDEsICJObyBwYWNrYWdlczsgbm90aGluZyB0byBkbyIpCi0gICAgICAgIHJldHVybgorICAgIG1heF9wcm9jZXNzID0gaW50KGQuZ2V0VmFyKCJCQl9OVU1CRVJfVEhSRUFEUyIpIG9yIG9zLmNwdV9jb3VudCgpIG9yIDEpCisgICAgbGF1bmNoZWQgPSBbXQorICAgIGVycm9yID0gTm9uZQorICAgIHBrZ3MgPSBwYWNrYWdlcy5zcGxpdCgpCisgICAgd2hpbGUgbm90IGVycm9yIGFuZCBwa2dzOgorICAgICAgICBpZiBsZW4obGF1bmNoZWQpIDwgbWF4X3Byb2Nlc3M6CisgICAgICAgICAgICBwID0gRGViaWFuV3JpdGVQa2dQcm9jZXNzKHRhcmdldD1kZWJfd3JpdGVfcGtnLCBhcmdzPShwa2dzLnBvcCgpLCBkKSkKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgbGF1bmNoZWQuYXBwZW5kKHApCisgICAgICAgIGZvciBxIGluIGxhdW5jaGVkOgorICAgICAgICAgICAgIyBUaGUgZmluaXNoZWQgcHJvY2Vzc2VzIGFyZSBqb2luZWQgd2hlbiBjYWxsaW5nIGlzX2FsaXZlKCkKKyAgICAgICAgICAgIGlmIG5vdCBxLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgbGF1bmNoZWQucmVtb3ZlKHEpCisgICAgICAgICAgICBpZiBxLmV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBlcnJvciwgdHJhY2ViYWNrID0gcS5leGNlcHRpb24KKyAgICAgICAgICAgICAgICBicmVhawogCisgICAgZm9yIHAgaW4gbGF1bmNoZWQ6CisgICAgICAgIHAuam9pbigpCisKKyAgICBvcy5jaGRpcihvbGRjd2QpCisKKyAgICBpZiBlcnJvcjoKKyAgICAgICAgcmFpc2UgZXJyb3IKK30KK2RvX3BhY2thZ2VfZGViW3ZhcmRlcHNdICs9ICJkZWJfd3JpdGVfcGtnIgorZG9fcGFja2FnZV9kZWJbdmFyZGVwc2V4Y2x1ZGVdID0gIkJCX05VTUJFUl9USFJFQURTIgorCitkZWYgZGViX3dyaXRlX3BrZyhwa2csIGQpOgorICAgIGltcG9ydCByZSwgY29weQorICAgIGltcG9ydCB0ZXh0d3JhcAorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zCisgICAgaW1wb3J0IGNvZGVjcworCisgICAgb3V0ZGlyID0gZC5nZXRWYXIoJ1BLR1dSSVRFRElSREVCJykKICAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQogCiAgICAgZGVmIGNsZWFudXBjb250cm9sKHJvb3QpOgpAQCAtOTEsMTEgKzEyMCwxMSBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocCk6CiAgICAgICAgICAgICAgICAgYmIudXRpbHMucHJ1bmVkaXIocCkKIAotICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKLSAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCi0gICAgICAgIHJvb3QgPSAiJXMvJXMiICUgKHBrZ2Rlc3QsIHBrZykKKyAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICByb290ID0gIiVzLyVzIiAlIChwa2dkZXN0LCBwa2cpCiAKLSAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShyb290ICsgIi5sb2NrIikKKyAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKHJvb3QgKyAiLmxvY2siKQorICAgIHRyeToKIAogICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdST09UJywgJycpCiAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1JPT1RfJXMnICUgcGtnLCByb290KQpAQCAtMTE3LDggKzE0Niw3IEBACiAgICAgICAgIGcgPSBnbG9iKCcqJykKICAgICAgICAgaWYgbm90IGcgYW5kIGxvY2FsZGF0YS5nZXRWYXIoJ0FMTE9XX0VNUFRZJywgRmFsc2UpICE9ICIxIjoKICAgICAgICAgICAgIGJiLm5vdGUoIk5vdCBjcmVhdGluZyBlbXB0eSBhcmNoaXZlIGZvciAlcy0lcy0lcyIgJSAocGtnLCBsb2NhbGRhdGEuZ2V0VmFyKCdQS0dWJyksIGxvY2FsZGF0YS5nZXRWYXIoJ1BLR1InKSkpCi0gICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQotICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGNvbnRyb2xkaXIgPSBvcy5wYXRoLmpvaW4ocm9vdCwgJ0RFQklBTicpCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjb250cm9sZGlyKQpAQCAtMTk0LDggKzIyMiw4IEBACiAgICAgICAgIG1hcHBpbmdfcmVuYW1lX2hvb2sobG9jYWxkYXRhKQogCiAgICAgICAgIGRlZiBkZWJpYW5fY21wX3JlbWFwKHZhcik6Ci0gICAgICAgICAgICAjIGRwa2cgZG9lcyBub3QgYWxsb3cgZm9yICcoJyBvciAnKScgaW4gYSBkZXBlbmRlbmN5IG5hbWUKLSAgICAgICAgICAgICMgcmVwbGFjZSB0aGVzZSBpbnN0YW5jZXMgd2l0aCAnX18nIGFuZCAnX18nCisgICAgICAgICAgICAjIGRwa2cgZG9lcyBub3QgYWxsb3cgZm9yICcoJywgJyknIG9yICc6JyBpbiBhIGRlcGVuZGVuY3kgbmFtZQorICAgICAgICAgICAgIyBSZXBsYWNlIGFueSBpbnN0YW5jZXMgb2YgdGhlbSB3aXRoICdfXycKICAgICAgICAgICAgICMKICAgICAgICAgICAgICMgSW4gZGViaWFuICc+JyBhbmQgJzwnIGRvIG5vdCBtZWFuIHdoYXQgaXQgYXBwZWFycyB0aGV5IG1lYW4KICAgICAgICAgICAgICMgICAnPCcgPSBsZXNzIG9yIGVxdWFsCkBAIC0yMDQsOCArMjMyLDcgQEAKICAgICAgICAgICAgICMKICAgICAgICAgICAgIGZvciBkZXAgaW4gdmFyOgogICAgICAgICAgICAgICAgIGlmICcoJyBpbiBkZXA6Ci0gICAgICAgICAgICAgICAgICAgIG5ld2RlcCA9IGRlcC5yZXBsYWNlKCcoJywgJ19fJykKLSAgICAgICAgICAgICAgICAgICAgbmV3ZGVwID0gbmV3ZGVwLnJlcGxhY2UoJyknLCAnX18nKQorICAgICAgICAgICAgICAgICAgICBuZXdkZXAgPSByZS5zdWIocidbKDopXScsICdfXycsIGRlcCkKICAgICAgICAgICAgICAgICAgICAgaWYgbmV3ZGVwICE9IGRlcDoKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcltuZXdkZXBdID0gdmFyW2RlcF0KICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCB2YXJbZGVwXQpAQCAtMjg5LDE3ICszMTYsMTkgQEAKICAgICAgICAgICAgIGNvbmZmaWxlcy5jbG9zZSgpCiAKICAgICAgICAgb3MuY2hkaXIoYmFzZWRpcikKLSAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIlBBVEg9XCIlc1wiIGRwa2ctZGViIC1iICVzICVzIiAlIChsb2NhbGRhdGEuZ2V0VmFyKCJQQVRIIiksIHJvb3QsIHBrZ291dGRpciksIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJQQVRIPVwiJXNcIiBkcGtnLWRlYiAtYiAlcyAlcyIgJSAobG9jYWxkYXRhLmdldFZhcigiUEFUSCIpLCByb290LCBwa2dvdXRkaXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUpCiAKKyAgICBmaW5hbGx5OgogICAgICAgICBjbGVhbnVwY29udHJvbChyb290KQogICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQotICAgIG9zLmNoZGlyKG9sZGN3ZCkKLX0KKworIyBPdGhlcndpc2UgYWxsYXJjaCBwYWNrYWdlcyBtYXkgY2hhbmdlIGRlcGVuZGluZyBvbiBvdmVycmlkZSBjb25maWd1cmF0aW9uCitkZWJfd3JpdGVfcGtnW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCisKICMgSW5kaXJlY3QgcmVmZXJlbmNlcyB0byB0aGVzZSB2YXJzCiBkb19wYWNrYWdlX3dyaXRlX2RlYlt2YXJkZXBzXSArPSAiUEtHViBQS0dSIFBLR1YgREVTQ1JJUFRJT04gU0VDVElPTiBQUklPUklUWSBNQUlOVEFJTkVSIERQS0dfQVJDSCBQTiBIT01FUEFHRSIKLSMgT3RoZXJ3aXNlIGFsbGFyY2ggcGFja2FnZXMgbWF5IGNoYW5nZSBkZXBlbmRpbmcgb24gb3ZlcnJpZGUgY29uZmlndXJhdGlvbgotZG9fcGFja2FnZV9kZWJbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKLQogCiBTU1RBVEVUQVNLUyArPSAiZG9fcGFja2FnZV93cml0ZV9kZWIiCiBkb19wYWNrYWdlX3dyaXRlX2RlYltzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1BLR1dSSVRFRElSREVCfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwppbmRleCBhMWU1MWVlLi42YzFmZGFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCkBAIC0xMiwxNSArMTIsMzQgQEAKIAogT1BLR19BUkdTICs9ICItLWZvcmNlX3Bvc3RpbnN0YWxsIC0tcHJlZmVyLWFyY2gtdG8tdmVyc2lvbiIKIE9QS0dfQVJHUyArPSAiJHtAWycnLCAnLS1uby1pbnN0YWxsLXJlY29tbWVuZHMnXVtkLmdldFZhcigiTk9fUkVDT01NRU5EQVRJT05TIikgPT0gIjEiXX0iCi1PUEtHX0FSR1MgKz0gIiR7QFsnJywgJy0tYWRkLWV4Y2x1ZGUgJyArICcgLS1hZGQtZXhjbHVkZSAnLmpvaW4oKGQuZ2V0VmFyKCdQQUNLQUdFX0VYQ0xVREUnKSBvciAiIikuc3BsaXQoKSldWyhkLmdldFZhcigiUEFDS0FHRV9FWENMVURFIikgb3IgIiIpICE9ICIiXX0iCitPUEtHX0FSR1MgKz0gIiR7QFsnJywgJy0tYWRkLWV4Y2x1ZGUgJyArICcgLS1hZGQtZXhjbHVkZSAnLmpvaW4oKGQuZ2V0VmFyKCdQQUNLQUdFX0VYQ0xVREUnKSBvciAiIikuc3BsaXQoKSldWyhkLmdldFZhcigiUEFDS0FHRV9FWENMVURFIikgb3IgIiIpLnN0cmlwKCkgIT0gIiJdfSIKIAogT1BLR0xJQkRJUiA9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYiIKIAogcHl0aG9uIGRvX3BhY2thZ2VfaXBrICgpIHsKLSAgICBpbXBvcnQgcmUsIGNvcHkKLSAgICBpbXBvcnQgdGV4dHdyYXAKLSAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgIGltcG9ydCBjb2xsZWN0aW9ucworICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKyAgICBpbXBvcnQgdHJhY2ViYWNrCisKKyAgICBjbGFzcyBJUEtXcml0ZVBrZ1Byb2Nlc3MobXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuX3Bjb25uLCBzZWxmLl9jY29ubiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKyAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IE5vbmUKKworICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLnJ1bihzZWxmKQorICAgICAgICAgICAgICAgIHNlbGYuX2Njb25uLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICB0YiA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKChlLCB0YikpCisKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIGRlZiBleGNlcHRpb24oc2VsZik6CisgICAgICAgICAgICBpZiBzZWxmLl9wY29ubi5wb2xsKCk6CisgICAgICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gc2VsZi5fcGNvbm4ucmVjdigpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhjZXB0aW9uCisKIAogICAgIG9sZGN3ZCA9IG9zLmdldGN3ZCgpCiAKQEAgLTQyLDIwICs2MSw1NSBAQAogICAgIGlmIG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4odG1wZGlyLCAic3RhbXBzIiwgIklQS19QQUNLQUdFX0lOREVYX0NMRUFOIiksIG9zLlJfT0spOgogICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHRtcGRpciwgInN0YW1wcyIsICJJUEtfUEFDS0FHRV9JTkRFWF9DTEVBTiIpKQogCisgICAgbWF4X3Byb2Nlc3MgPSBpbnQoZC5nZXRWYXIoIkJCX05VTUJFUl9USFJFQURTIikgb3Igb3MuY3B1X2NvdW50KCkgb3IgMSkKKyAgICBsYXVuY2hlZCA9IFtdCisgICAgZXJyb3IgPSBOb25lCisgICAgcGtncyA9IHBhY2thZ2VzLnNwbGl0KCkKKyAgICB3aGlsZSBub3QgZXJyb3IgYW5kIHBrZ3M6CisgICAgICAgIGlmIGxlbihsYXVuY2hlZCkgPCBtYXhfcHJvY2VzczoKKyAgICAgICAgICAgIHAgPSBJUEtXcml0ZVBrZ1Byb2Nlc3ModGFyZ2V0PWlwa193cml0ZV9wa2csIGFyZ3M9KHBrZ3MucG9wKCksIGQpKQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICBsYXVuY2hlZC5hcHBlbmQocCkKKyAgICAgICAgZm9yIHEgaW4gbGF1bmNoZWQ6CisgICAgICAgICAgICAjIFRoZSBmaW5pc2hlZCBwcm9jZXNzZXMgYXJlIGpvaW5lZCB3aGVuIGNhbGxpbmcgaXNfYWxpdmUoKQorICAgICAgICAgICAgaWYgbm90IHEuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICBsYXVuY2hlZC5yZW1vdmUocSkKKyAgICAgICAgICAgIGlmIHEuZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGVycm9yLCB0cmFjZWJhY2sgPSBxLmV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBmb3IgcCBpbiBsYXVuY2hlZDoKKyAgICAgICAgcC5qb2luKCkKKworICAgIG9zLmNoZGlyKG9sZGN3ZCkKKworICAgIGlmIGVycm9yOgorICAgICAgICByYWlzZSBlcnJvcgorfQorZG9fcGFja2FnZV9pcGtbdmFyZGVwc10gKz0gImlwa193cml0ZV9wa2ciCitkb19wYWNrYWdlX2lwa1t2YXJkZXBzZXhjbHVkZV0gPSAiQkJfTlVNQkVSX1RIUkVBRFMiCisKK2RlZiBpcGtfd3JpdGVfcGtnKHBrZywgZCk6CisgICAgaW1wb3J0IHJlLCBjb3B5CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICBpbXBvcnQgdGV4dHdyYXAKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMKKwogICAgIGRlZiBjbGVhbnVwY29udHJvbChyb290KToKICAgICAgICAgZm9yIHAgaW4gWydDT05UUk9MJywgJ0RFQklBTiddOgogICAgICAgICAgICAgcCA9IG9zLnBhdGguam9pbihyb290LCBwKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocCk6CiAgICAgICAgICAgICAgICAgYmIudXRpbHMucHJ1bmVkaXIocCkKIAorICAgIG91dGRpciA9IGQuZ2V0VmFyKCdQS0dXUklURURJUklQSycpCisgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKICAgICByZWNpcGVzb3VyY2UgPSBvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCdGSUxFJykpCiAKLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQotICAgICAgICByb290ID0gIiVzLyVzIiAlIChwa2dkZXN0LCBwa2cpCisgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgcm9vdCA9ICIlcy8lcyIgJSAocGtnZGVzdCwgcGtnKQogCi0gICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUocm9vdCArICIubG9jayIpCi0KKyAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKHJvb3QgKyAiLmxvY2siKQorICAgIHRyeToKICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUk9PVCcsICcnKQogICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdST09UXyVzJyAlIHBrZywgcm9vdCkKICAgICAgICAgcGtnbmFtZSA9IGxvY2FsZGF0YS5nZXRWYXIoJ1BLR18lcycgJSBwa2cpCkBAIC0xMDAsOCArMTU0LDcgQEAKICAgICAgICAgZyA9IGdsb2IoJyonKQogICAgICAgICBpZiBub3QgZyBhbmQgbG9jYWxkYXRhLmdldFZhcignQUxMT1dfRU1QVFknLCBGYWxzZSkgIT0gIjEiOgogICAgICAgICAgICAgYmIubm90ZSgiTm90IGNyZWF0aW5nIGVtcHR5IGFyY2hpdmUgZm9yICVzLSVzLSVzIiAlIChwa2csIGxvY2FsZGF0YS5nZXRWYXIoJ1BLR1YnKSwgbG9jYWxkYXRhLmdldFZhcignUEtHUicpKSkKLSAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCi0gICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgY29udHJvbGRpciA9IG9zLnBhdGguam9pbihyb290LCAnQ09OVFJPTCcpCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjb250cm9sZGlyKQpAQCAtMTQyLDE2ICsxOTUsOSBAQAogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gbG9jYWxkYXRhLmdldFZhcignREVTQ1JJUFRJT04nKSBvciAiLiIKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRleHR3cmFwLmRlZGVudChkZXNjcmlwdGlvbikuc3RyaXAoKQogICAgICAgICAgICAgICAgIGlmICdcXG4nIGluIGRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAjIE1hbnVhbGx5IGluZGVudAorICAgICAgICAgICAgICAgICAgICAjIE1hbnVhbGx5IGluZGVudDogbXVsdGlsaW5lIGRlc2NyaXB0aW9uIGluY2x1ZGVzIGEgbGVhZGluZyBzcGFjZQogICAgICAgICAgICAgICAgICAgICBmb3IgdCBpbiBkZXNjcmlwdGlvbi5zcGxpdCgnXFxuJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGRvbid0IGxpbWl0IHRoZSB3aWR0aCB3aGVuIG1hbnVhbGx5IGluZGVudCwgYnV0IHdlIGRvCi0gICAgICAgICAgICAgICAgICAgICAgICAjIG5lZWQgdGhlIHRleHR3cmFwLmZpbGwoKSB0byBzZXQgdGhlIGluaXRpYWxfaW5kZW50IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIyBzdWJzZXF1ZW50X2luZGVudCwgc28gc2V0IGEgbGFyZ2Ugd2lkdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSB0ZXh0d3JhcC5maWxsKHQuc3RyaXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTEwMDAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PScgJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNlcXVlbnRfaW5kZW50PScgJykgb3IgJy4nCi0gICAgICAgICAgICAgICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgnJXNcbicgJSBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoJyAlc1xuJyAlICh0LnN0cmlwKCkgb3IgJyAuJykpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBBdXRvIGluZGVudAogICAgICAgICAgICAgICAgICAgICBjdHJsZmlsZS53cml0ZSgnJXNcbicgJSB0ZXh0d3JhcC5maWxsKGRlc2NyaXB0aW9uLCB3aWR0aD03NCwgaW5pdGlhbF9pbmRlbnQ9JyAnLCBzdWJzZXF1ZW50X2luZGVudD0nICcpKQpAQCAtMjI4LDIwICsyNzQsMjIgQEAKIAogICAgICAgICBvcy5jaGRpcihiYXNlZGlyKQogICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiUEFUSD1cIiVzXCIgJXMgJXMgJXMiICUgKGxvY2FsZGF0YS5nZXRWYXIoIlBBVEgiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcigiT1BLR0JVSUxEQ01EIiksIHBrZywgcGtnb3V0ZGlyKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcigiT1BLR0JVSUxEQ01EIiksIHBrZywgcGtnb3V0ZGlyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlKQogCiAgICAgICAgIGlmIGQuZ2V0VmFyKCdJUEtfU0lHTl9QQUNLQUdFUycpID09ICcxJzoKICAgICAgICAgICAgIGlwa3ZlciA9ICIlcy0lcyIgJSAoZC5nZXRWYXIoJ1BLR1YnKSwgZC5nZXRWYXIoJ1BLR1InKSkKICAgICAgICAgICAgIGlwa190b19zaWduID0gIiVzLyVzXyVzXyVzLmlwayIgJSAocGtnb3V0ZGlyLCBwa2duYW1lLCBpcGt2ZXIsIGQuZ2V0VmFyKCdQQUNLQUdFX0FSQ0gnKSkKICAgICAgICAgICAgIHNpZ25faXBrKGQsIGlwa190b19zaWduKQogCisgICAgZmluYWxseToKICAgICAgICAgY2xlYW51cGNvbnRyb2wocm9vdCkKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIAotICAgIG9zLmNoZGlyKG9sZGN3ZCkKLX0KICMgT3RoZXJ3aXNlIGFsbGFyY2ggcGFja2FnZXMgbWF5IGNoYW5nZSBkZXBlbmRpbmcgb24gb3ZlcnJpZGUgY29uZmlndXJhdGlvbgotZG9fcGFja2FnZV9pcGtbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKK2lwa193cml0ZV9wa2dbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKKwogCiBTU1RBVEVUQVNLUyArPSAiZG9fcGFja2FnZV93cml0ZV9pcGsiCiBkb19wYWNrYWdlX3dyaXRlX2lwa1tzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1BLR1dSSVRFRElSSVBLfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcwppbmRleCAxZGVhZjgzLi5hNDI4ZDMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzCkBAIC02NDYsOSArNjQ2LDEzIEBACiAgICAgcnBtYnVpbGQgPSBkLmdldFZhcignUlBNQlVJTEQnKQogICAgIHRhcmdldHN5cyA9IGQuZ2V0VmFyKCdUQVJHRVRfU1lTJykKICAgICB0YXJnZXR2ZW5kb3IgPSBkLmdldFZhcignSE9TVF9WRU5ET1InKQorCiAgICAgIyBUb28gbWFueSBwbGFjZXMgaW4gZG5mIHN0YWNrIGFzc3VtZSB0aGF0IGFyY2gtaW5kZXBlbmRlbnQgcGFja2FnZXMgYXJlICJub2FyY2giLgogICAgICMgTGV0J3Mgbm90IGZpZ2h0IGFnYWluc3QgdGhpcy4KLSAgICBwYWNrYWdlX2FyY2ggPSAoZC5nZXRWYXIoJ1BBQ0tBR0VfQVJDSCcpIG9yICIiKS5yZXBsYWNlKCItIiwgIl8iKS5yZXBsYWNlKCJhbGwiLCAibm9hcmNoIikKKyAgICBwYWNrYWdlX2FyY2ggPSAoZC5nZXRWYXIoJ1BBQ0tBR0VfQVJDSCcpIG9yICIiKS5yZXBsYWNlKCItIiwgIl8iKQorICAgIGlmIHBhY2thZ2VfYXJjaCA9PSAiYWxsIjoKKyAgICAgICAgcGFja2FnZV9hcmNoID0gIm5vYXJjaCIKKwogICAgIHNka3BrZ3N1ZmZpeCA9IChkLmdldFZhcignU0RLUEtHU1VGRklYJykgb3IgIm5hdGl2ZXNkayIpLnJlcGxhY2UoIi0iLCAiXyIpCiAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VfQVJDSF9FWFRFTkQnLCBwYWNrYWdlX2FyY2gpCiAgICAgcGtnd3JpdGVkaXIgPSBkLmV4cGFuZCgnJHtQS0dXUklURURJUlJQTX0vJHtQQUNLQUdFX0FSQ0hfRVhURU5EfScpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VmZWVkLXN0YWJpbGl0eS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZmVlZC1zdGFiaWxpdHkuYmJjbGFzcwppbmRleCBjMGU5YmU1Li41NjQ4NjAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VmZWVkLXN0YWJpbGl0eS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZWZlZWQtc3RhYmlsaXR5LmJiY2xhc3MKQEAgLTE4OSw3ICsxODksNyBAQAogCiAgICAgIyBSZW1vdmUgYWxsIHRoZSBvbGQgZmlsZXMgYW5kIGNvcHkgYWdhaW4gaWYgZG9jb3B5CiAgICAgaWYgZG9jb3B5OgotICAgICAgICBiYi5wbGFpbignQ29weWluZyBwYWNrYWdlcyBmb3IgcmVjaXBlICVzJyAlIHBuKQorICAgICAgICBiYi5ub3RlKCdDb3B5aW5nIHBhY2thZ2VzIGZvciByZWNpcGUgJXMnICUgcG4pCiAgICAgICAgIHBjbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4ocHJlcGF0aCwgZC5leHBhbmQoJ3BrZy1jb21wYXJlLW1hbmlmZXN0LSR7TVVMVElNQUNIX1RBUkdFVF9TWVN9LSR7UE59JykpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggb3BlbihwY21hbmlmZXN0LCAncicpIGFzIGY6CkBAIC0yMjQsNyArMjI0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyY3BhdGgsIGRlc3RwYXRoKQogICAgICAgICAgICAgICAgIGYud3JpdGUoJyVzXG4nICUgZGVzdHBhdGgpCiAgICAgZWxzZToKLSAgICAgICAgYmIucGxhaW4oJ05vdCBjb3B5aW5nIHBhY2thZ2VzIGZvciByZWNpcGUgJXMnICUgcG4pCisgICAgICAgIGJiLm5vdGUoJ05vdCBjb3B5aW5nIHBhY2thZ2VzIGZvciByZWNpcGUgJXMnICUgcG4pCiAKIGRvX2NsZWFuc3N0YXRlW3Bvc3RmdW5jc10gKz0gInBmc19jbGVhbnBrZ3MiCiBweXRob24gcGZzX2NsZWFucGtncyAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKaW5kZXggNTYzNTgyZS4uNDI0YzYzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwpAQCAtNTksNiArNTksOSBAQAogCiBTREtfVEFSR0VUX01BTklGRVNUID0gIiR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS50YXJnZXQubWFuaWZlc3QiCiBTREtfSE9TVF9NQU5JRkVTVCA9ICIke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uaG9zdC5tYW5pZmVzdCIKK1NES19FWFRfVEFSR0VUX01BTklGRVNUID0gIiR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRX0udGFyZ2V0Lm1hbmlmZXN0IgorU0RLX0VYVF9IT1NUX01BTklGRVNUID0gIiR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRX0uaG9zdC5tYW5pZmVzdCIKKwogcHl0aG9uIHdyaXRlX3RhcmdldF9zZGtfbWFuaWZlc3QgKCkgewogICAgIGZyb20gb2Uuc2RrIGltcG9ydCBzZGtfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMKICAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBmb3JtYXRfcGtnX2xpc3QKQEAgLTg4LDggKzkxLDkgQEAKICAgICAgICAgb3V0cHV0LndyaXRlKGZvcm1hdF9wa2dfbGlzdChwa2dzLCAndmVyJykpCiB9CiAKLVBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EX2FwcGVuZCA9ICIgd3JpdGVfdGFyZ2V0X3Nka19tYW5pZmVzdCA7IHdyaXRlX3Nka190ZXN0X2RhdGEgOyAiCi1QT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkRfYXBwZW5kID0gIiB3cml0ZV9ob3N0X3Nka19tYW5pZmVzdDsgIgorUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkRfYXBwZW5kID0gIiB3cml0ZV9zZGtfdGVzdF9kYXRhIDsgIgorUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkRfYXBwZW5kX3Rhc2stcG9wdWxhdGUtc2RrICA9ICIgd3JpdGVfdGFyZ2V0X3Nka19tYW5pZmVzdCA7ICIKK1BPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORF9hcHBlbmRfdGFzay1wb3B1bGF0ZS1zZGsgPSAiIHdyaXRlX2hvc3Rfc2RrX21hbmlmZXN0OyAiCiBTREtfUEFDS0FHSU5HX0NPTU1BTkQgPSAiJHtAJyR7U0RLX1BBQ0tBR0lOR19GVU5DfTsnIGlmICcke1NES19QQUNLQUdJTkdfRlVOQ30nIGVsc2UgJyd9IgogU0RLX1BPU1RQUk9DRVNTX0NPTU1BTkQgPSAiIGNyZWF0ZV9zZGtfZmlsZXM7IGNoZWNrX3Nka19zeXNyb290czsgdGFyX3NkazsgJHtTREtfUEFDS0FHSU5HX0NPTU1BTkR9ICIKIApAQCAtOTcsNiArMTAxLDI2IEBACiAgICAgZnJvbSBvZS5zZGsgaW1wb3J0IHBvcHVsYXRlX3NkawogICAgIGZyb20gb2UubWFuaWZlc3QgaW1wb3J0IGNyZWF0ZV9tYW5pZmVzdCwgTWFuaWZlc3QKIAorICAgICMgSGFuZGxlIHBhY2thZ2UgZXhjbHVzaW9ucworICAgIGV4Y2xfcGtncyA9IChkLmdldFZhcigiUEFDS0FHRV9FWENMVURFIikgb3IgIiIpLnNwbGl0KCkKKyAgICBpbnN0X3BrZ3MgPSAoZC5nZXRWYXIoIlBBQ0tBR0VfSU5TVEFMTCIpIG9yICIiKS5zcGxpdCgpCisgICAgaW5zdF9hdHRlbXB0X3BrZ3MgPSAoZC5nZXRWYXIoIlBBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWSIpIG9yICIiKS5zcGxpdCgpCisKKyAgICBkLnNldFZhcignUEFDS0FHRV9JTlNUQUxMX09SSUcnLCAnICcuam9pbihpbnN0X3BrZ3MpKQorICAgIGQuc2V0VmFyKCdQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFknLCAnICcuam9pbihpbnN0X2F0dGVtcHRfcGtncykpCisKKyAgICBmb3IgcGtnIGluIGV4Y2xfcGtnczoKKyAgICAgICAgaWYgcGtnIGluIGluc3RfcGtnczoKKyAgICAgICAgICAgIGJiLndhcm4oIlBhY2thZ2UgJXMsIHNldCB0byBiZSBleGNsdWRlZCwgaXMgaW4gJXMgUEFDS0FHRV9JTlNUQUxMICglcykuICBJdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4iICUgKHBrZywgZC5nZXRWYXIoJ1BOJyksIGluc3RfcGtncykpCisgICAgICAgICAgICBpbnN0X3BrZ3MucmVtb3ZlKHBrZykKKworICAgICAgICBpZiBwa2cgaW4gaW5zdF9hdHRlbXB0X3BrZ3M6CisgICAgICAgICAgICBiYi53YXJuKCJQYWNrYWdlICVzLCBzZXQgdG8gYmUgZXhjbHVkZWQsIGlzIGluICVzIFBBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWSAoJXMpLiAgSXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3QuIiAlIChwa2csIGQuZ2V0VmFyKCdQTicpLCBpbnN0X3BrZ3MpKQorICAgICAgICAgICAgaW5zdF9hdHRlbXB0X3BrZ3MucmVtb3ZlKHBrZykKKworICAgIGQuc2V0VmFyKCJQQUNLQUdFX0lOU1RBTEwiLCAnICcuam9pbihpbnN0X3BrZ3MpKQorICAgIGQuc2V0VmFyKCJQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFkiLCAnICcuam9pbihpbnN0X2F0dGVtcHRfcGtncykpCisKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAgICAgcnVudGltZV9tYXBwaW5nX3JlbmFtZSgiVE9PTENIQUlOX1RBUkdFVF9UQVNLIiwgcG4sIGQpCiAgICAgcnVudGltZV9tYXBwaW5nX3JlbmFtZSgiVE9PTENIQUlOX1RBUkdFVF9UQVNLX0FUVEVNUFRPTkxZIiwgcG4sIGQpCkBAIC0yNTYsOCArMjgwLDcgQEAKIH0KIAogZGVmIHNka19jb21tYW5kX3ZhcmlhYmxlcyhkKToKLSAgICByZXR1cm4gWydPUEtHX1BSRVBST0NFU1NfQ09NTUFORFMnLCdPUEtHX1BPU1RQUk9DRVNTX0NPTU1BTkRTJywnUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EJywnUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQnLCdTREtfUE9TVFBST0NFU1NfQ09NTUFORCcsJ1JQTV9QUkVQUk9DRVNTX0NPTU1BTkRTJywKLSAgICAgICAgICAgICdSUE1fUE9TVFBST0NFU1NfQ09NTUFORFMnXQorICAgIHJldHVybiBbJ09QS0dfUFJFUFJPQ0VTU19DT01NQU5EUycsJ09QS0dfUE9TVFBST0NFU1NfQ09NTUFORFMnLCdQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQnLCdQT1BVTEFURV9TREtfUFJFX1RBUkdFVF9DT01NQU5EJywnUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQnLCdTREtfUE9TVFBST0NFU1NfQ09NTUFORCcsJ1JQTV9QUkVQUk9DRVNTX0NPTU1BTkRTJywnUlBNX1BPU1RQUk9DRVNTX0NPTU1BTkRTJ10KIAogZGVmIHNka192YXJpYWJsZXMoZCk6CiAgICAgdmFyaWFibGVzID0gWydCVUlMRF9JTUFHRVNfRlJPTV9GRUVEUycsJ1NES19PUycsJ1NES19PVVRQVVQnLCdTREtQQVRITkFUSVZFJywnU0RLVEFSR0VUU1lTUk9PVCcsJ1NES19ESVInLCdTREtfVkVORE9SJywnU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJywnU0RLX1BBQ0tBR0VfQVJDSFMnLCdTREtfT1VUUFVUJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKaW5kZXggOGI4YTM0MS4uYzc5ZGRiYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKQEAgLTMzLDYgKzMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRExfRElSIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NUQVRFX0RJUiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRNUERJUiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJCX1NFUlZFUl9USU1FT1VUIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiBTREtfSU5IRVJJVF9CTEFDS0xJU1QgPz0gImJ1aWxkaGlzdG9yeSBpY2VjYyIKIFNES19VUERBVEVfVVJMID89ICIiCkBAIC02OSw3ICs3MCw2IEBACiAjIENPUkVCQVNFIGJlIHByZXNlcnZlZCBhcyB3ZWxsIGFzIHVudHJhY2tlZCBmaWxlcy4KIENPUkVCQVNFX0ZJTEVTID89ICIgXAogICAgIG9lLWluaXQtYnVpbGQtZW52IFwKLSAgICBvZS1pbml0LWJ1aWxkLWVudi1tZW1yZXMgXAogICAgIHNjcmlwdHMgXAogICAgIExJQ0VOU0UgXAogICAgIC50ZW1wbGF0ZWNvbmYgXApAQCAtODMsNiArODMsMzkgQEAKIFNES19FWFRfVEFSR0VUX01BTklGRVNUID0gIiR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRX0udGFyZ2V0Lm1hbmlmZXN0IgogU0RLX0VYVF9IT1NUX01BTklGRVNUID0gIiR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRX0uaG9zdC5tYW5pZmVzdCIKIAorcHl0aG9uIHdyaXRlX3RhcmdldF9zZGtfZXh0X21hbmlmZXN0ICgpIHsKKyAgICBmcm9tIG9lLnNkayBpbXBvcnQgZ2V0X2V4dHJhX3Nka2luZm8KKyAgICBzc3RhdGVfZGlyID0gZC5leHBhbmQoJyR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9zc3RhdGUtY2FjaGUnKQorICAgIGV4dHJhX2luZm8gPSBnZXRfZXh0cmFfc2RraW5mbyhzc3RhdGVfZGlyKQorCisgICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9TWVMnKQorICAgIHRhcmdldF9tdWx0aW1hY2ggPSBkLmdldFZhcignTVVMVElNQUNIX1RBUkdFVF9TWVMnKQorICAgIHJlYWxfdGFyZ2V0X211bHRpbWFjaCA9IGQuZ2V0VmFyKCdSRUFMX01VTFRJTUFDSF9UQVJHRVRfU1lTJykKKworICAgIHBrZ3MgPSB7fQorICAgIHdpdGggb3BlbihkLmdldFZhcignU0RLX0VYVF9UQVJHRVRfTUFOSUZFU1QnKSwgJ3cnKSBhcyBmOgorICAgICAgICBmb3IgZm4gaW4gZXh0cmFfaW5mb1snZmlsZXNpemVzJ106CisgICAgICAgICAgICBpbmZvID0gZm4uc3BsaXQoJzonKQorICAgICAgICAgICAgaWYgaW5mb1syXSBpbiAodGFyZ2V0LCB0YXJnZXRfbXVsdGltYWNoLCByZWFsX3RhcmdldF9tdWx0aW1hY2gpIFwKKyAgICAgICAgICAgICAgICAgICAgb3IgaW5mb1s1XSA9PSAnYWxsYXJjaCc6CisgICAgICAgICAgICAgICAgaWYgbm90IGluZm9bMV0gaW4gcGtnczoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMgJXMgJXNcbiIgJSAoaW5mb1sxXSwgaW5mb1syXSwgaW5mb1szXSkpCisgICAgICAgICAgICAgICAgICAgIHBrZ3NbaW5mb1sxXV0gPSB7fQorfQorcHl0aG9uIHdyaXRlX2hvc3Rfc2RrX2V4dF9tYW5pZmVzdCAoKSB7CisgICAgZnJvbSBvZS5zZGsgaW1wb3J0IGdldF9leHRyYV9zZGtpbmZvCisgICAgc3N0YXRlX2RpciA9IGQuZXhwYW5kKCcke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vc3N0YXRlLWNhY2hlJykKKyAgICBleHRyYV9pbmZvID0gZ2V0X2V4dHJhX3Nka2luZm8oc3N0YXRlX2RpcikKKyAgICBob3N0ID0gZC5nZXRWYXIoJ0JVSUxEX1NZUycpCisgICAgd2l0aCBvcGVuKGQuZ2V0VmFyKCdTREtfRVhUX0hPU1RfTUFOSUZFU1QnKSwgJ3cnKSBhcyBmOgorICAgICAgICBmb3IgZm4gaW4gZXh0cmFfaW5mb1snZmlsZXNpemVzJ106CisgICAgICAgICAgICBpbmZvID0gZm4uc3BsaXQoJzonKQorICAgICAgICAgICAgaWYgaW5mb1syXSA9PSBob3N0OgorICAgICAgICAgICAgICAgIGYud3JpdGUoIiVzICVzICVzXG4iICUgKGluZm9bMV0sIGluZm9bMl0sIGluZm9bM10pKQorfQorCitTREtfUE9TVFBST0NFU1NfQ09NTUFORF9hcHBlbmRfdGFzay1wb3B1bGF0ZS1zZGstZXh0ID0gIndyaXRlX3RhcmdldF9zZGtfZXh0X21hbmlmZXN0OyB3cml0ZV9ob3N0X3Nka19leHRfbWFuaWZlc3Q7ICIgICAgCisKIFNES19USVRMRV90YXNrLXBvcHVsYXRlLXNkay1leHQgPSAiJHtAZC5nZXRWYXIoJ0RJU1RST19OQU1FJykgb3IgZC5nZXRWYXIoJ0RJU1RSTycpfSBFeHRlbnNpYmxlIFNESyIKIAogZGVmIGNsZWFuX2VzZGtfYnVpbGRkaXIoZCwgc2RrYmFzZXBhdGgpOgpAQCAtMTExLDcgKzE0NCw3IEBACiAgICAgICAgIHdpdGggb3BlbihzZGtiYXNlcGF0aCArICcvY29uZi9sb2NhbC5jb25mJywgJ2EnKSBhcyBmOgogICAgICAgICAgICAgIyBGb3JjZSB0aGUgdXNlIG9mIHNzdGF0ZSBmcm9tIHRoZSBidWlsZCBzeXN0ZW0KICAgICAgICAgICAgIGYud3JpdGUoJ1xuU1NUQVRFX0RJUl9mb3JjZXZhcmlhYmxlID0gIiVzIlxuJyAlIGQuZ2V0VmFyKCdTU1RBVEVfRElSJykpCi0gICAgICAgICAgICBmLndyaXRlKCdTU1RBVEVfTUlSUk9SU19mb3JjZXZhcmlhYmxlID0gIiJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdTU1RBVEVfTUlSUk9SU19mb3JjZXZhcmlhYmxlID0gImZpbGU6Ly91bml2ZXJzYWwvKC4qKSBmaWxlOi8vdW5pdmVyc2FsLTQuOS9cXDEgZmlsZTovL3VuaXZlcnNhbC00LjkvKC4qKSBmaWxlOi8vdW5pdmVyc2FsLTQuOC9cXDEiXG4nKQogICAgICAgICAgICAgIyBFbnN1cmUgVE1QRElSIGlzIHRoZSBkZWZhdWx0IHNvIHRoYXQgY2xlYW5fZXNka19idWlsZGRpcigpIGNhbiBkZWxldGUgaXQKICAgICAgICAgICAgIGYud3JpdGUoJ1RNUERJUl9mb3JjZXZhcmlhYmxlID0gIiR7VE9QRElSfS90bXAiXG4nKQogICAgICAgICAgICAgZi53cml0ZSgnVENMSUJDQVBQRU5EX2ZvcmNldmFyaWFibGUgPSAiIlxuJykKQEAgLTMxNCwxMiArMzQ3LDE4IEBACiAgICAgICAgICAgICAjIHRoZSBzaWcgY29tcHV0ZWQgZnJvbSB0aGUgbWV0YWRhdGEuCiAgICAgICAgICAgICBmLndyaXRlKCdTSUdHRU5fTE9DS0VEU0lHU19UQVNLU0lHX0NIRUNLID0gIndhcm4iXG5cbicpCiAKKyAgICAgICAgICAgICMgV2Ugd2FudCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHdpdGhvdXQgYSBmdWxsIHJlcGFyc2UKKyAgICAgICAgICAgIGYud3JpdGUoJ0JCX0hBU0hDT05GSUdfV0hJVEVMSVNUX2FwcGVuZCA9ICIgU0lHR0VOX1VOTE9DS0VEX1JFQ0lQRVMiXG5cbicpCisKICAgICAgICAgICAgICMgU2V0IHVwIHdoaXRlbGlzdCBmb3IgcnVuIG9uIGluc3RhbGwKICAgICAgICAgICAgIGYud3JpdGUoJ0JCX1NFVFNDRU5FX0VORk9SQ0VfV0hJVEVMSVNUID0gIiU6KiAqOmRvX3NoYXJlZF93b3JrZGlyICo6ZG9fcm1fd29yayB3aWMtdG9vbHM6KiAqOmRvX2FkZHRvX3JlY2lwZV9zeXNyb290IlxuXG4nKQogCiAgICAgICAgICAgICAjIEhpZGUgdGhlIGNvbmZpZyBpbmZvcm1hdGlvbiBmcm9tIGJpdGJha2Ugb3V0cHV0IChzaW5jZSBpdCdzIGZpeGVkIHdpdGhpbiB0aGUgU0RLKQogICAgICAgICAgICAgZi53cml0ZSgnQlVJTERDRkdfSEVBREVSID0gIiJcblxuJykKIAorICAgICAgICAgICAgZi53cml0ZSgnIyBQcm92aWRlIGEgZmxhZyB0byBpbmRpY2F0ZSB3ZSBhcmUgaW4gdGhlIEVYVF9TREsgQ29udGV4dFxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ1dJVEhJTl9FWFRfU0RLID0gIjEiXG5cbicpCisKICAgICAgICAgICAgICMgTWFwIGdjYy1kZXBlbmRlbnQgdW5pbmF0aXZlIHNzdGF0ZSBjYWNoZSBmb3IgaW5zdGFsbGVyIHVzYWdlCiAgICAgICAgICAgICBmLndyaXRlKCdTU1RBVEVfTUlSUk9SUyArPSAiIGZpbGU6Ly91bml2ZXJzYWwvKC4qKSBmaWxlOi8vdW5pdmVyc2FsLTQuOS9cXDEgZmlsZTovL3VuaXZlcnNhbC00LjkvKC4qKSBmaWxlOi8vdW5pdmVyc2FsLTQuOC9cXDEiXG5cbicpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MKaW5kZXggZWY0NjhiMy4uODk2NjVlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MKQEAgLTksNSArOSw4IEBACiBleHBvcnQgU1RBR0lOR19JTkNESVIKIGV4cG9ydCBTVEFHSU5HX0xJQkRJUgogCisjIHN1cHByZXNzIGhvc3QgdXNlcidzIHNpdGUtcGFja2FnZXMgZGlycy4KK2V4cG9ydCBQWVRIT05OT1VTRVJTSVRFID0gIjEiCisKICMgYXV0b2NvbmYgbWFjcm9zIHdpbGwgdXNlIHRoZWlyIGludGVybmFsIGRlZmF1bHQgcHJlZmVyZW5jZSBvdGhlcndpc2UKIGV4cG9ydCBQWVRIT04KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCmluZGV4IDRlMDM4MWIuLjRjYzhiMjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcwpAQCAtMTIsNSArMTIsOCBAQAogZXhwb3J0IFNUQUdJTkdfSU5DRElSCiBleHBvcnQgU1RBR0lOR19MSUJESVIKIAorIyBzdXBwcmVzcyBob3N0IHVzZXIncyBzaXRlLXBhY2thZ2VzIGRpcnMuCitleHBvcnQgUFlUSE9OTk9VU0VSU0lURSA9ICIxIgorCiAjIGF1dG9jb25mIG1hY3JvcyB3aWxsIHVzZSB0aGVpciBpbnRlcm5hbCBkZWZhdWx0IHByZWZlcmVuY2Ugb3RoZXJ3aXNlCiBleHBvcnQgUFlUSE9OCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MKaW5kZXggMzQ2OGQxYy4uMTVhOWU2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcwpAQCAtODUsMTAgKzg1LDExIEBACiAKICAgICBxZW11Ym9vdCA9ICIlcy8lcy5xZW11Ym9vdC5jb25mIiAlIChkLmdldFZhcignSU1HREVQTE9ZRElSJyksIGQuZ2V0VmFyKCdJTUFHRV9OQU1FJykpCiAgICAgcWVtdWJvb3RfbGluayA9ICIlcy8lcy5xZW11Ym9vdC5jb25mIiAlIChkLmdldFZhcignSU1HREVQTE9ZRElSJyksIGQuZ2V0VmFyKCdJTUFHRV9MSU5LX05BTUUnKSkKLSAgICB0b3BkaXI9IiVzLyIlKGQuZ2V0VmFyKCdUT1BESVInKSkucmVwbGFjZSgiLy8iLCIvIikKKyAgICBmaW5hbHBhdGggPSBkLmdldFZhcigiREVQTE9ZX0RJUl9JTUFHRSIpCisgICAgdG9wZGlyID0gZC5nZXRWYXIoJ1RPUERJUicpCiAgICAgY2YgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKICAgICBjZi5hZGRfc2VjdGlvbignY29uZmlnX2JzcCcpCi0gICAgZm9yIGsgaW4gcWVtdWJvb3RfdmFycyhkKToKKyAgICBmb3IgayBpbiBzb3J0ZWQocWVtdWJvb3RfdmFycyhkKSk6CiAgICAgICAgICMgcWVtdS1oZWxwZXItbmF0aXZlIHN5c3Jvb3QgaXMgbm90IHJlbW92ZWQgYnkgcm1fd29yayBhbmQKICAgICAgICAgIyBjb250YWlucyBhbGwgdG9vbHMgcmVxdWlyZWQgYnkgcnVucWVtdQogICAgICAgICBpZiBrID09ICdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnOgpAQCAtOTgsNyArOTksOCBAQAogICAgICAgICAgICAgdmFsID0gZC5nZXRWYXIoaykKICAgICAgICAgIyB3ZSBvbmx5IHdhbnQgdG8gd3JpdGUgb3V0IHJlbGF0aXZlIHBhdGhzIHNvIHRoYXQgd2UgY2FuIHJlbG9jYXRlIGltYWdlcwogICAgICAgICAjIGFuZCBzdGlsbCBydW4gdGhlbQotICAgICAgICB2YWw9dmFsLnJlcGxhY2UodG9wZGlyLCIiKQorICAgICAgICBpZiB2YWwuc3RhcnRzd2l0aCh0b3BkaXIpOgorICAgICAgICAgICAgdmFsID0gb3MucGF0aC5yZWxwYXRoKHZhbCwgZmluYWxwYXRoKQogICAgICAgICBjZi5zZXQoJ2NvbmZpZ19ic3AnLCBrLCAnJXMnICUgdmFsKQogCiAgICAgIyBRQl9ERUZBVUxUX0tFUk5FTCdzIHZhbHVlIG9mIEtFUk5FTF9JTUFHRVRZUEUgaXMgdGhlIG5hbWUgb2YgYSBzeW1saW5rCkBAIC0xMDgsMTQgKzExMCwxNSBAQAogICAgIGtlcm5lbCA9IG9zLnBhdGgucmVhbHBhdGgoa2VybmVsX2xpbmspCiAgICAgIyB3ZSBvbmx5IHdhbnQgdG8gd3JpdGUgb3V0IHJlbGF0aXZlIHBhdGhzIHNvIHRoYXQgd2UgY2FuIHJlbG9jYXRlIGltYWdlcwogICAgICMgYW5kIHN0aWxsIHJ1biB0aGVtCi0gICAga2VybmVsPWtlcm5lbC5yZXBsYWNlKHRvcGRpciwiIikKKyAgICBrZXJuZWwgPSBvcy5wYXRoLnJlbHBhdGgoa2VybmVsLCBmaW5hbHBhdGgpCiAgICAgY2Yuc2V0KCdjb25maWdfYnNwJywgJ1FCX0RFRkFVTFRfS0VSTkVMJywga2VybmVsKQogCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShxZW11Ym9vdCkpCiAgICAgd2l0aCBvcGVuKHFlbXVib290LCAndycpIGFzIGY6CiAgICAgICAgIGNmLndyaXRlKGYpCiAKLSAgICBpZiBvcy5wYXRoLmxleGlzdHMocWVtdWJvb3RfbGluayk6Ci0gICAgICAgb3MucmVtb3ZlKHFlbXVib290X2xpbmspCi0gICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKHFlbXVib290KSwgcWVtdWJvb3RfbGluaykKKyAgICBpZiBxZW11Ym9vdF9saW5rICE9IHFlbXVib290OgorICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMocWVtdWJvb3RfbGluayk6CisgICAgICAgICAgIG9zLnJlbW92ZShxZW11Ym9vdF9saW5rKQorICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUocWVtdWJvb3QpLCBxZW11Ym9vdF9saW5rKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXBvcnQtZXJyb3IuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwb3J0LWVycm9yLmJiY2xhc3MKaW5kZXggZDZmZGQzNi4uMWM1NWFiZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXBvcnQtZXJyb3IuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcG9ydC1lcnJvci5iYmNsYXNzCkBAIC0yOSw2ICsyOSwxMyBAQAogICAgICAgICBpbXBvcnQganNvbgogICAgICAgICBpbXBvcnQgY29kZWNzCiAKKyAgICAgICAgZGVmIG5hdGl2ZWxzYigpOgorICAgICAgICAgICAgbmF0aXZlbHNic3RyID0gZS5kYXRhLmdldFZhcigiTkFUSVZFTFNCU1RSSU5HIikKKyAgICAgICAgICAgICMgcHJvdmlkZSBhIGJpdCBtb3JlIGhvc3QgaW5mbyBpbiBjYXNlIG9mIHVuaW5hdGl2ZSBidWlsZAorICAgICAgICAgICAgaWYgZS5kYXRhLmdldFZhcignVU5JTkFUSVZFX1VSTCcpICE9ICd1bnNldCc6CisgICAgICAgICAgICAgICAgcmV0dXJuICcvJy5qb2luKFtuYXRpdmVsc2JzdHIsIGxzYl9kaXN0cm9faWRlbnRpZmllcihlLmRhdGEpXSkKKyAgICAgICAgICAgIHJldHVybiBuYXRpdmVsc2JzdHIKKwogICAgICAgICBsb2dwYXRoID0gZS5kYXRhLmdldFZhcignRVJSX1JFUE9SVF9ESVInKQogICAgICAgICBkYXRhZmlsZSA9IG9zLnBhdGguam9pbihsb2dwYXRoLCAiZXJyb3ItcmVwb3J0LnR4dCIpCiAKQEAgLTM4LDcgKzQ1LDcgQEAKICAgICAgICAgICAgIG1hY2hpbmUgPSBlLmRhdGEuZ2V0VmFyKCJNQUNISU5FIikKICAgICAgICAgICAgIGRhdGFbJ21hY2hpbmUnXSA9IG1hY2hpbmUKICAgICAgICAgICAgIGRhdGFbJ2J1aWxkX3N5cyddID0gZS5kYXRhLmdldFZhcigiQlVJTERfU1lTIikKLSAgICAgICAgICAgIGRhdGFbJ25hdGl2ZWxzYiddID0gZS5kYXRhLmdldFZhcigiTkFUSVZFTFNCU1RSSU5HIikKKyAgICAgICAgICAgIGRhdGFbJ25hdGl2ZWxzYiddID0gbmF0aXZlbHNiKCkKICAgICAgICAgICAgIGRhdGFbJ2Rpc3RybyddID0gZS5kYXRhLmdldFZhcigiRElTVFJPIikKICAgICAgICAgICAgIGRhdGFbJ3RhcmdldF9zeXMnXSA9IGUuZGF0YS5nZXRWYXIoIlRBUkdFVF9TWVMiKQogICAgICAgICAgICAgZGF0YVsnZmFpbHVyZXMnXSA9IFtdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm1fd29yay5iYmNsYXNzCmluZGV4IGJhZGVhZWIuLjMxZDk5ZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm1fd29yay5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm1fd29yay5iYmNsYXNzCkBAIC0zNSwyMiArMzUsMTIgQEAKICAgICAgICAgZmkKICAgICBkb25lCiAKLSAgICBjZCAke1dPUktESVJ9Ci0gICAgZm9yIGRpciBpbiAqCi0gICAgZG8KLSAgICAgICAgIyBSZXRhaW4gb25seSBsb2dzIGFuZCBvdGhlciBmaWxlcyBpbiB0ZW1wLCBzYWZlbHkgaWdub3JlCi0gICAgICAgICMgZmFpbHVyZXMgb2YgcmVtb3ZpbmcgcHNldWRvIGZvbGVycyBvbiBORlMyLzMgc2VydmVyLgotICAgICAgICBpZiBbICRkaXIgPSAncHNldWRvJyBdOyB0aGVuCi0gICAgICAgICAgICBybSAtcmYgJGRpciAyPiAvZGV2L251bGwgfHwgdHJ1ZQotICAgICAgICBlbGlmICEgZWNobyAnJHtSTV9XT1JLX0VYQ0xVREVfSVRFTVN9JyB8IGdyZXAgLXEgLXcgIiRkaXIiOyB0aGVuCi0gICAgICAgICAgICBybSAtcmYgJGRpcgotICAgICAgICBmaQotICAgIGRvbmUKLQogICAgICMgTmVlZCB0byBhZGQgcHNldWRvIGJhY2sgb3Igc3Vic3FldWVudCB3b3JrIGluIHRoaXMgd29ya2RpcgogICAgICMgbWlnaHQgZmFpbCBzaW5jZSBzZXRzY2VuZSBtYXkgbm90IHJlcnVuIHRvIHJlY3JlYXRlIGl0CiAgICAgbWtkaXIgLXAgJHtXT1JLRElSfS9wc2V1ZG8vCiAKKyAgICBleGNsdWRlcz0nJHtSTV9XT1JLX0VYQ0xVREVfSVRFTVN9JworCiAgICAgIyBDaGFuZ2Ugbm9ybWFsIHN0YW1wcyBpbnRvIHNldHNjZW5lIHN0YW1wcyBhcyB0aGV5IGJldHRlciByZWZsZWN0IHRoZQogICAgICMgZmFjdCBXT1JLRElSIGlzIG5vdyBlbXB0eQogICAgICMgQWxzbyBsZWF2ZSBub2V4ZWMgc3RhbXBzIHNpbmNlIHNldHNjZW5lIHN0YW1wcyBkb24ndCBjb3ZlciB0aGVtCkBAIC03MSw3ICs2MSwxMiBAQAogICAgICAgICAgICAgICAgIGk9ZHVtbXkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqZG9fcm9vdGZzKnwqZG9faW1hZ2UqfCpkb19ib290aW1nKnwqZG9fYm9vdGRpcmVjdGRpc2sqfCpkb192bWltZyp8KmRvX3dyaXRlX3FlbXVib290X2NvbmYqKQorICAgICAgICAgICAgKmRvX2ltYWdlX2NvbXBsZXRlKikKKyAgICAgICAgICAgICAgICBtdiAkaSBgZWNobyAkaSB8IHNlZCAtZSAicyNkb19pbWFnZV9jb21wbGV0ZSNkb19pbWFnZV9jb21wbGV0ZV9zZXRzY2VuZSMiYAorICAgICAgICAgICAgICAgIGk9ZHVtbXkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqZG9fcm9vdGZzKnwqZG9faW1hZ2UqfCpkb19ib290aW1nKnwqZG9fd3JpdGVfcWVtdWJvb3RfY29uZiopCiAgICAgICAgICAgICAgICAgaT1kdW1teQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgOzsKQEAgLTc5LDYgKzc0LDEyIEBACiAgICAgICAgICAgICAgICAgaT1kdW1teQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICpkb19hZGR0b19yZWNpcGVfc3lzcm9vdCopCisgICAgICAgICAgICAgICAgIyBQcmVzZXJ2ZSByZWNpcGUtc3lzcm9vdC1uYXRpdmUgaWYgZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QgaGFzIGJlZW4gdXNlZAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVzPSIkZXhjbHVkZXMgcmVjaXBlLXN5c3Jvb3QtbmF0aXZlIgorICAgICAgICAgICAgICAgIGk9ZHVtbXkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAjIFdlIHJlbW92ZSBkb19wYWNrYWdlIGVudGlyZWx5LCBpbmNsdWRpbmcgYW55CiAgICAgICAgICAgICAjIHNzdGF0ZSB2ZXJzaW9uIHNpbmNlIG90aGVyd2lzZSB3ZSdkIG5lZWQgdG8gbGVhdmUgJ3BsYWluZGlycycgYXJvdW5kCiAgICAgICAgICAgICAjIHN1Y2ggYXMgJ3BhY2thZ2VzJyBhbmQgJ3BhY2thZ2VzLXNwbGl0JyBhbmQgdGhlc2UgY2FuIGJlIGxhcmdlLiBObyBlbmQKQEAgLTEwMSw2ICsxMDIsMTggQEAKICAgICAgICAgZG9uZQogICAgICAgICBybSAtZiAkaQogICAgIGRvbmUKKworICAgIGNkICR7V09SS0RJUn0KKyAgICBmb3IgZGlyIGluICoKKyAgICBkbworICAgICAgICAjIFJldGFpbiBvbmx5IGxvZ3MgYW5kIG90aGVyIGZpbGVzIGluIHRlbXAsIHNhZmVseSBpZ25vcmUKKyAgICAgICAgIyBmYWlsdXJlcyBvZiByZW1vdmluZyBwc2V1ZG8gZm9sZXJzIG9uIE5GUzIvMyBzZXJ2ZXIuCisgICAgICAgIGlmIFsgJGRpciA9ICdwc2V1ZG8nIF07IHRoZW4KKyAgICAgICAgICAgIHJtIC1yZiAkZGlyIDI+IC9kZXYvbnVsbCB8fCB0cnVlCisgICAgICAgIGVsaWYgISBlY2hvICIkZXhjbHVkZXMiIHwgZ3JlcCAtcSAtdyAiJGRpciI7IHRoZW4KKyAgICAgICAgICAgIHJtIC1yZiAkZGlyCisgICAgICAgIGZpCisgICAgZG9uZQogfQogZG9fcm1fd29ya19hbGwgKCkgewogICAgIDoKQEAgLTE1Myw2ICsxNjYsMTAgQEAKICAgICBkZXBzID0gc2V0KGJiLmJ1aWxkLnByZWNlZWR0YXNrKCdkb19idWlsZCcsIFRydWUsIGQpKQogICAgIGRlcHMuZGlmZmVyZW5jZV91cGRhdGUoKCdkb19idWlsZCcsICdkb19ybV93b3JrX2FsbCcpKQogCisgICAgIyBkZXBzIGNhbiBiZSBlbXB0eSBpZiBkb19idWlsZCBkb2Vzbid0IGV4aXN0LCBlLmcuICotaW5pdGFsIHJlY2lwZXMKKyAgICBpZiBub3QgZGVwczoKKyAgICAgICAgZGVwcyA9IFsiZG9fcG9wdWxhdGVfc3lzcm9vdCIsICJkb19wb3B1bGF0ZV9saWMiXQorCiAgICAgaWYgcG4gaW4gZXhjbHVkZXM6CiAgICAgICAgIGQuZGVsVmFyRmxhZygncm1fd29ya19yb290ZnMnLCAnY2xlYW5kaXJzJykKICAgICAgICAgZC5kZWxWYXJGbGFnKCdybV93b3JrX3BvcHVsYXRlc2RrJywgJ2NsZWFuZGlycycpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCmluZGV4IGMxOWZmODcuLmE0ZTYyN2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCkBAIC0xNCw2ICsxNCwxNCBAQAogIyBUd2VhayB0aGUgbW91bnQgb3B0aW9ucyBmb3Igcm9vdGZzIGluIC9ldGMvZnN0YWIgaWYgcmVhZC1vbmx5LXJvb3RmcyBpcyBlbmFibGVkCiBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAnJHtAYmIudXRpbHMuY29udGFpbnMoIklNQUdFX0ZFQVRVUkVTIiwgInJlYWQtb25seS1yb290ZnMiLCAicmVhZF9vbmx5X3Jvb3Rmc19ob29rOyAiLCAiIixkKX0nCiAKKyMgV2UgYWxzbyBuZWVkIHRvIGRvIHRoZSBzYW1lIGZvciB0aGUga2VybmVsIGJvb3QgcGFyYW1ldGVycywKKyMgb3RoZXJ3aXNlIGtlcm5lbCBvciBpbml0cmFtZnMgZW5kIHVwIG1vdW50aW5nIHRoZSByb290ZnMgcmVhZC93cml0ZQorIyAodGhlIGRlZmF1bHQpIGlmIHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBzdG9yYWdlLgorIworIyBXZSBkbyB0aGlzIHdpdGggX2FwcGVuZCBiZWNhdXNlIHRoZSBkZWZhdWx0IHZhbHVlIG1pZ2h0IGdldCBzZXQgbGF0ZXIgd2l0aCA/PQorIyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBkaXNhYmxlIHN1Y2ggYSBkZWZhdWx0IHRoYXQgYnkgc2V0dGluZyBhIHZhbHVlIGhlcmUuCitBUFBFTkRfYXBwZW5kID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCJJTUFHRV9GRUFUVVJFUyIsICJyZWFkLW9ubHktcm9vdGZzIiwgIiBybyIsICIiLCBkKX0nCisKICMgR2VuZXJhdGVzIHRlc3QgZGF0YSBmaWxlIHdpdGggZGF0YSBzdG9yZSB2YXJpYWJsZXMgZXhwYW5kZWQgaW4ganNvbiBmb3JtYXQKIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICJ3cml0ZV9pbWFnZV90ZXN0X2RhdGEgOyAiCiAKQEAgLTg0LDcgKzkyLDkgQEAKICMKIHJlYWRfb25seV9yb290ZnNfaG9vayAoKSB7CiAJIyBUd2VhayB0aGUgbW91bnQgb3B0aW9uIGFuZCBmc19wYXNzbm8gZm9yIHJvb3RmcyBpbiBmc3RhYgotCXNlZCAtaSAtZSAnL15bI1s6c3BhY2U6XV0qXC9kZXZcL3Jvb3Qve3MvZGVmYXVsdHMvcm8vO3MvXChbWzpzcGFjZTpdXSpbWzpkaWdpdDpdXVwpXChbWzpzcGFjZTpdXSpcKVtbOmRpZ2l0Ol1dJC9cMVwyMC99JyAke0lNQUdFX1JPT1RGU30vZXRjL2ZzdGFiCisJaWYgWyAtZiAke0lNQUdFX1JPT1RGU30vZXRjL2ZzdGFiIF07IHRoZW4KKwkJc2VkIC1pIC1lICcvXlsjWzpzcGFjZTpdXSpcL2Rldlwvcm9vdC97cy9kZWZhdWx0cy9yby87cy9cKFtbOnNwYWNlOl1dKltbOmRpZ2l0Ol1dXClcKFtbOnNwYWNlOl1dKlwpW1s6ZGlnaXQ6XV0kL1wxXDIwL30nICR7SU1BR0VfUk9PVEZTfS9ldGMvZnN0YWIKKwlmaQogCiAJIyBJZiB3ZSdyZSB1c2luZyBvcGVuc3NoIGFuZCB0aGUgL2V0Yy9zc2ggZGlyZWN0b3J5IGhhcyBubyBwcmUtZ2VuZXJhdGVkIGtleXMsCiAJIyB3ZSBzaG91bGQgY29uZmlndXJlIG9wZW5zc2ggdG8gdXNlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgL2V0Yy9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKQEAgLTMxNiw1ICszMjYsNSBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmICd1bnNhdGlzZmllZCByZWNvbW1lbmRhdGlvbiBmb3InIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgYmIud2FybignW2xvZ19jaGVja10gJXM6ICVzJyAlIChkLmdldFZhcignUE4nLCBUcnVlKSwgbGluZSkpCisgICAgICAgICAgICAgICAgYmIud2FybignW2xvZ19jaGVja10gJXM6ICVzJyAlIChkLmdldFZhcignUE4nKSwgbGluZSkpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19kZWIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX2RlYi5iYmNsYXNzCmluZGV4IDI2MmUzZDUuLjllZTFkZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX2RlYi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX2RlYi5iYmNsYXNzCkBAIC0zMyw2ICszMywzIEBACiAgICAgZWxpZiBkYXJjaCA9PSAiYXJtIjoKICAgICAgICAgIGQuc2V0VmFyKCdERUJfU0RLX0FSQ0gnLCAnYXJtZWwnKQogfQotCi0jIFRoaXMgd2lsbCBvZiBjb3Vyc2Ugb25seSB3b3JrIGFmdGVyIHJvb3Rmc19kZWJfZG9fcm9vdGZzIG9yIHBvcHVsYXRlX3Nka19kZWIgaGFzIGJlZW4gY2FsbGVkCi1EUEtHX1FVRVJZX0NPTU1BTkQgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2Rwa2ctcXVlcnkgLS1hZG1pbmRpcj0kSU5TVEFMTF9ST09URlNfREVCL3Zhci9saWIvZHBrZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzZGVidWdmaWxlcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNkZWJ1Z2ZpbGVzLmJiY2xhc3MKaW5kZXggYTU1ODg3MS4uZTJiYTRlMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNkZWJ1Z2ZpbGVzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNkZWJ1Z2ZpbGVzLmJiY2xhc3MKQEAgLTE1LDYgKzE1LDEwIEBACiAjICAgIFJPT1RGU19ERUJVR19GSUxFUyArPSAiJHtUT1BESVJ9L2NvbmYvZHJvcGJlYXJfcnNhX2hvc3Rfa2V5ICR7SU1BR0VfUk9PVEZTfS9ldGMvZHJvcGJlYXIvZHJvcGJlYXJfcnNhX2hvc3Rfa2V5IDsiCiAjIDIuIEJvb3QgdGhlIGltYWdlIG9uY2UsIGNvcHkgdGhlIGRyb3BiZWFyX3JzYV9ob3N0X2tleSBmcm9tCiAjICAgIHRoZSBkZXZpY2UgaW50byB5b3VyIGJ1aWxkIGNvbmYgZGlyZWN0b3J5LgorIyAzLiBBIG9wdGlvbmFsIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBzZXQgZmlsZSBtb2RlCisjICAgIG9mIHRoZSBjb3BpZWQgdGFyZ2V0LCBmb3IgaW5zdGFuY2U6CisjICAgIFJPT1RGU19ERUJVR19GSUxFUyArPSAiJHtUT1BESVJ9L2NvbmYvZHJvcGJlYXJfcnNhX2hvc3Rfa2V5ICR7SU1BR0VfUk9PVEZTfS9ldGMvZHJvcGJlYXIvZHJvcGJlYXJfcnNhX2hvc3Rfa2V5IDA2MDA7IgorIyAgICBpbiBjYXNlIHRoZXkgbWlnaHQgYmUgcmVxdWlyZWQgdG8gaGF2ZSBhIHNwZWNpZmljIG1vZGUuIChTaG91bmRuJ3QgYmUgdG9vIG9wZW4sIGZvciBleGFtcGxlKQogIwogIyBEbyBub3QgdXNlIGZvciBwcm9kdWN0aW9uIGltYWdlcyEgSXQgYnlwYXNzZXMgc2V2ZXJhbAogIyBjb3JlIGJ1aWxkIG1lY2hhbmlzbXMgKHVwZGF0aW5nIHRoZSBpbWFnZSB3aGVuIG9uZQpAQCAtMjcsMTAgKzMxLDExIEBACiBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAicm9vdGZzX2RlYnVnX2ZpbGVzIDsiCiByb290ZnNfZGVidWdfZmlsZXMgKCkgewogICAgIyEvYmluL3NoIC1lCi0gICBlY2hvICIke1JPT1RGU19ERUJVR19GSUxFU30iIHwgc2VkIC1lICdzLzsvXG4vZycgfCB3aGlsZSByZWFkIHNvdXJjZSB0YXJnZXQ7IGRvCisgICBlY2hvICIke1JPT1RGU19ERUJVR19GSUxFU30iIHwgc2VkIC1lICdzLzsvXG4vZycgfCB3aGlsZSByZWFkIHNvdXJjZSB0YXJnZXQgbW9kZTsgZG8KICAgICAgIGlmIFsgLWUgIiRzb3VyY2UiIF07IHRoZW4KICAgICAgICAgIG1rZGlyIC1wICQoZGlybmFtZSAkdGFyZ2V0KQogICAgICAgICAgY3AgLWEgJHNvdXJjZSAkdGFyZ2V0CisgICAgICAgICBbIC1uICIkbW9kZSIgXSAmJiBjaG1vZCAkbW9kZSAkdGFyZ2V0CiAgICAgICBmaQogICAgZG9uZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKaW5kZXggZTgwNjRhYy4uMWZlYjc5NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCkBAIC0zNTAsNiArMzUwLDE0IEBACiAgICAgICAgIHJldHVybiAiVGhlICVzOiAlcyBjYW4ndCBiZSBsb2NhdGVkIG9uIG5mcy5cbiIgJSAobmFtZSwgcGF0aCkKICAgICByZXR1cm4gIiIKIAorIyBDaGVjayB0aGF0IHRoZSBwYXRoIGlzIG9uIGEgY2FzZS1zZW5zaXRpdmUgZmlsZSBzeXN0ZW0KK2RlZiBjaGVja19jYXNlX3NlbnNpdGl2ZShwYXRoLCBuYW1lKToKKyAgICBpbXBvcnQgdGVtcGZpbGUKKyAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShwcmVmaXg9J1RtUCcsIGRpcj1wYXRoKSBhcyB0bXBfZmlsZToKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHModG1wX2ZpbGUubmFtZS5sb3dlcigpKToKKyAgICAgICAgICAgIHJldHVybiAiVGhlICVzICglcykgY2FuJ3QgYmUgb24gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtLlxuIiAlIChuYW1lLCBwYXRoKQorICAgICAgICByZXR1cm4gIiIKKwogIyBDaGVjayB0aGF0IHBhdGggaXNuJ3QgYSBicm9rZW4gc3ltbGluawogZGVmIGNoZWNrX3N5bWxpbmsobG5rLCBkYXRhKToKICAgICBpZiBvcy5wYXRoLmlzbGluayhsbmspIGFuZCBub3Qgb3MucGF0aC5leGlzdHMobG5rKToKQEAgLTQ0OCw0NSArNDU2LDYgQEAKIAogICAgIHJldHVybiBtZXNzYWdlcwogCi0jIENoZWNrcyBpZiBuZWNlc3NhcnkgdG8gYWRkIG9wdGlvbiBtYXJjaCB0byBob3N0IGdjYwotZGVmIGNoZWNrX2djY19tYXJjaChzYW5pdHlfZGF0YSk6Ci0gICAgcmVzdWx0ID0gVHJ1ZQotICAgIG1lc3NhZ2UgPSAiIgotCi0gICAgIyBDaGVjayBpZiAtbWFyY2ggbm90IGluIEJVSUxEX0NGTEFHUwotICAgIGlmIHNhbml0eV9kYXRhLmdldFZhcigiQlVJTERfQ0ZMQUdTIikuZmluZCgiLW1hcmNoIikgPCAwOgotICAgICAgICByZXN1bHQgPSBGYWxzZQotCi0gICAgICAgICMgQ29uc3RydWN0IGEgdGVzdCBmaWxlCi0gICAgICAgIGYgPSBvcGVuKCJnY2NfdGVzdC5jIiwgInciKQotICAgICAgICBmLndyaXRlKCJpbnQgbWFpbiAoKXsgdm9sYXRpbGUgaW50IGF0b21pYyA9IDI7IF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAgKCZhdG9taWMsIDIsIDMpOyByZXR1cm4gMDsgfVxuIikKLSAgICAgICAgZi5jbG9zZSgpCi0KLSAgICAgICAgIyBDaGVjayBpZiBHQ0MgY291bGQgd29yayB3aXRob3V0IG1hcmNoCi0gICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICBzdGF0dXMscmVzID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KHNhbml0eV9kYXRhLmV4cGFuZCgiJHtCVUlMRF9DQ30gZ2NjX3Rlc3QuYyAtbyBnY2NfdGVzdCIpKQotICAgICAgICAgICAgaWYgc3RhdHVzID09IDA6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZTsKLQotICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgc3RhdHVzLHJlcyA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChzYW5pdHlfZGF0YS5leHBhbmQoIiR7QlVJTERfQ0N9IC1tYXJjaD1uYXRpdmUgZ2NjX3Rlc3QuYyAtbyBnY2NfdGVzdCIpKQotICAgICAgICAgICAgaWYgc3RhdHVzID09IDA6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJCVUlMRF9DRkxBR1NfYXBwZW5kID0gXCIgLW1hcmNoPW5hdGl2ZVwiIgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRydWU7Ci0KLSAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgIGJ1aWxkX2FyY2ggPSBzYW5pdHlfZGF0YS5nZXRWYXIoJ0JVSUxEX0FSQ0gnKQotICAgICAgICAgICAgc3RhdHVzLHJlcyA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChzYW5pdHlfZGF0YS5leHBhbmQoIiR7QlVJTERfQ0N9IC1tYXJjaD0lcyBnY2NfdGVzdC5jIC1vIGdjY190ZXN0IiAlIGJ1aWxkX2FyY2gpKQotICAgICAgICAgICAgaWYgc3RhdHVzID09IDA6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJCVUlMRF9DRkxBR1NfYXBwZW5kID0gXCIgLW1hcmNoPSVzXCIiICUgYnVpbGRfYXJjaAotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRydWU7Ci0KLSAgICAgICAgb3MucmVtb3ZlKCJnY2NfdGVzdC5jIikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoImdjY190ZXN0Iik6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoImdjY190ZXN0IikKLQotICAgIHJldHVybiAocmVzdWx0LCBtZXNzYWdlKQotCiAjIFVucGF0Y2hlZCB2ZXJzaW9ucyBvZiBtYWtlIDMuODIgYXJlIGtub3duIHRvIGJlIGJyb2tlbi4gIFNlZSBHTlUgU2F2YW5uYWggQnVnIDMwNjEyLgogIyBVc2UgYSBtb2RpZmllZCByZXByb2R1Y2VyIGZyb20gaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/MzA2MTIgdG8gdmFsaWRhdGUuCiBkZWYgY2hlY2tfbWFrZV92ZXJzaW9uKHNhbml0eV9kYXRhKToKQEAgLTYxMiw3ICs1ODEsNyBAQAogICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICByZXR1cm4gdGVzdG1zZwotICAgICAgIAorCiBkZWYgY2hlY2tfc2FuaXR5X3ZlcnNpb25fY2hhbmdlKHN0YXR1cywgZCk6CiAgICAgIyBTYW5pdHkgY2hlY2tzIHRvIGJlIGRvbmUgd2hlbiBTQU5JVFlfVkVSU0lPTiBvciBOQVRJVkVMU0JTVFJJTkcgY2hhbmdlcwogICAgICMgSW4gb3RoZXIgd29yZHMsIHRoZXNlIHRlc3RzIHJ1biBvbmNlIGluIGEgZ2l2ZW4gYnVpbGQgZGlyZWN0b3J5IGFuZCB0aGVuIApAQCAtNjU3LDIzICs2MjYsNiBAQAogICAgIGlmICJkaWZmc3RhdC1uYXRpdmUiIG5vdCBpbiBhc3N1bWVfcHJvdmlkZWQ6CiAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoJ1BsZWFzZSB1c2UgQVNTVU1FX1BST1ZJREVEICs9LCBub3QgQVNTVU1FX1BST1ZJREVEID0gaW4geW91ciBsb2NhbC5jb25mXG4nKQogCi0gICAgaWYgInFlbXUtbmF0aXZlIiBpbiBhc3N1bWVfcHJvdmlkZWQ6Ci0gICAgICAgIGlmIG5vdCBjaGVja19hcHBfZXhpc3RzKCJxZW11LWFybSIsIGQpOgotICAgICAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgicWVtdS1uYXRpdmUgd2FzIGluIEFTU1VNRV9QUk9WSURFRCBidXQgdGhlIFFFTVUgYmluYXJpZXMgKHFlbXUtYXJtKSBjYW4ndCBiZSBmb3VuZCBpbiBQQVRIIikKLQotICAgIGlmICJsaWJzZGwtbmF0aXZlIiBpbiBhc3N1bWVfcHJvdmlkZWQ6Ci0gICAgICAgIGlmIG5vdCBjaGVja19hcHBfZXhpc3RzKCJzZGwtY29uZmlnIiwgZCk6Ci0gICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJsaWJzZGwtbmF0aXZlIGlzIHNldCB0byBiZSBBU1NVTUVfUFJPVklERUQgYnV0IHNkbC1jb25maWcgY2FuJ3QgYmUgZm91bmQgaW4gUEFUSC4gUGxlYXNlIGVpdGhlciBpbnN0YWxsIGl0LCBvciBjb25maWd1cmUgcWVtdSBub3QgdG8gcmVxdWlyZSBzZGwuIikKLQotICAgIChyZXN1bHQsIG1lc3NhZ2UpID0gY2hlY2tfZ2NjX21hcmNoKGQpCi0gICAgaWYgcmVzdWx0IGFuZCBtZXNzYWdlOgotICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJZb3VyIGdjYyB2ZXJzaW9uIGlzIG9sZGVyIHRoYW4gNC41LCBwbGVhc2UgYWRkIHRoZSBmb2xsb3dpbmcgcGFyYW0gdG8gbG9jYWwuY29uZlxuIFwKLSAgICAgICAgJXNcbiIgJSBtZXNzYWdlKQotICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIllvdXIgZ2NjIHZlcnNpb24gaXMgb2xkZXIgdGhhbiA0LjUgb3IgaXMgbm90IHdvcmtpbmcgcHJvcGVybHkuICBQbGVhc2UgdmVyaWZ5IHlvdSBjYW4gYnVpbGQiKQotICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCIgYW5kIGxpbmsgc29tZXRoaW5nIHRoYXQgdXNlcyBhdG9taWMgb3BlcmF0aW9ucywgc3VjaCBhczogXG4iKQotICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCIgICAgICAgIF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAgKCZhdG9taWMsIDIsIDMpO1xuIikKLQogICAgICMgQ2hlY2sgdGhhdCBUTVBESVIgaXNuJ3Qgb24gYSBmaWxlc3lzdGVtIHdpdGggbGltaXRlZCBmaWxlbmFtZSBsZW5ndGggKGVnLiBlQ3J5cHRGUykKICAgICB0bXBkaXIgPSBkLmdldFZhcignVE1QRElSJykKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX2NyZWF0ZV9sb25nX2ZpbGVuYW1lKHRtcGRpciwgIlRNUERJUiIpKQpAQCAtNzI4LDYgKzY4MCwxMCBAQAogICAgICMgQ2hlY2sgdGhhdCBUTVBESVIgaXNuJ3QgbG9jYXRlZCBvbiBuZnMKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX25vdF9uZnModG1wZGlyLCAiVE1QRElSIikpCiAKKyAgICAjIENoZWNrIGZvciBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcyAoc3VjaCBhcyBMaW51eCBpbiBEb2NrZXIgb24KKyAgICAjIG1hY09TIHdpdGggZGVmYXVsdCBIRlMrIGZpbGUgc3lzdGVtKQorICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfY2FzZV9zZW5zaXRpdmUodG1wZGlyLCAiVE1QRElSIikpCisKIGRlZiBzYW5pdHlfY2hlY2tfbG9jYWxlKGQpOgogICAgICIiIgogICAgIEN1cnJlbnRseSBiaXRiYWtlIHN3aXRjaGVzIGxvY2FsZSB0byBlbl9VUy5VVEYtOCBzbyBjaGVjayB0aGF0IHRoaXMgbG9jYWxlIGFjdHVhbGx5IGV4aXN0cy4KQEAgLTc0NiwxMCArNzAyLDEwIEBACiAgICAgaWYgMCA9PSBvcy5nZXR1aWQoKToKICAgICAgICAgcmFpc2Vfc2FuaXR5X2Vycm9yKCJEbyBub3QgdXNlIEJpdGJha2UgYXMgcm9vdC4iLCBkKQogCi0gICAgIyBDaGVjayB0aGUgUHl0aG9uIHZlcnNpb24sIHdlIG5vdyBoYXZlIGEgbWluaW11bSBvZiBQeXRob24gMi43LjMKKyAgICAjIENoZWNrIHRoZSBQeXRob24gdmVyc2lvbiwgd2Ugbm93IGhhdmUgYSBtaW5pbXVtIG9mIFB5dGhvbiAzLjQKICAgICBpbXBvcnQgc3lzCi0gICAgaWYgc3lzLmhleHZlcnNpb24gPCAweDAyMDcwM0YwOgotICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCdUaGUgc3lzdGVtIHJlcXVpcmVzIGF0IGxlYXN0IFB5dGhvbiAyLjcuMyB0byBydW4uIFBsZWFzZSB1cGRhdGUgeW91ciBQeXRob24gaW50ZXJwcmV0ZXIuXG4nKQorICAgIGlmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMzA0MDAwMDoKKyAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgnVGhlIHN5c3RlbSByZXF1aXJlcyBhdCBsZWFzdCBQeXRob24gMy40IHRvIHJ1bi4gUGxlYXNlIHVwZGF0ZSB5b3VyIFB5dGhvbiBpbnRlcnByZXRlci5cbicpCiAKICAgICAjIENoZWNrIHRoZSBiaXRiYWtlIHZlcnNpb24gbWVldHMgbWluaW11bSByZXF1aXJlbWVudHMKICAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBMb29zZVZlcnNpb24KQEAgLTc3MCw2ICs3MjYsMTEgQEAKICAgICAgICAgaWYgbm90ICggY2hlY2tfY29uZl9leGlzdHMoImNvbmYvZGlzdHJvLyR7RElTVFJPfS5jb25mIiwgZCkgb3IgY2hlY2tfY29uZl9leGlzdHMoImNvbmYvZGlzdHJvL2luY2x1ZGUvJHtESVNUUk99LmluYyIsIGQpICk6CiAgICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJESVNUUk8gJyVzJyBub3QgZm91bmQuIFBsZWFzZSBzZXQgYSB2YWxpZCBESVNUUk8gaW4geW91ciBsb2NhbC5jb25mXG4iICUgZC5nZXRWYXIoIkRJU1RSTyIpKQogCisgICAgIyBDaGVjayB0aGF0IHRoZXNlIHZhcmlhYmxlcyBkb24ndCB1c2UgdGlsZGUtZXhwYW5zaW9uIGFzIHdlIGRvbid0IGRvIHRoYXQKKyAgICBmb3IgdiBpbiAoIlRNUERJUiIsICJETF9ESVIiLCAiU1NUQVRFX0RJUiIpOgorICAgICAgICBpZiBkLmdldFZhcih2KS5zdGFydHN3aXRoKCJ+Iik6CisgICAgICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCIlcyB1c2VzIH4gYnV0IEJpdGJha2Ugd2lsbCBub3QgZXhwYW5kIHRoaXMsIHVzZSBhbiBhYnNvbHV0ZSBwYXRoIG9yIHZhcmlhYmxlcy4iICUgdikKKwogICAgICMgQ2hlY2sgdGhhdCBETF9ESVIgaXMgc2V0LCBleGlzdHMgYW5kIGlzIHdyaXRhYmxlLiBJbiB0aGVvcnksIHdlIHNob3VsZCBuZXZlciBldmVuIGhpdCB0aGUgY2hlY2sgaWYgRExfRElSIGlzbid0IAogICAgICMgc2V0LCBzaW5jZSBzbyBtdWNoIHJlbGllcyBvbiBpdCBiZWluZyBzZXQuCiAgICAgZGxkaXIgPSBkLmdldFZhcignRExfRElSJykKQEAgLTgzOSw3ICs4MDAsNyBAQAogCiAgICAgICAgICMgU3BsaXQgaW50byBwYWlycwogICAgICAgICBpZiBsZW4obWlycm9ycykgJSAyICE9IDA6Ci0gICAgICAgICAgICBiYi53YXJuKCdJbnZhbGlkIG1pcnJvciB2YXJpYWJsZSB2YWx1ZSBmb3IgJXM6ICVzLCBzaG91bGQgY29udGFpbiBwYWlyZWQgbWVtYmVycy4nICUgKG1pcnJvcl92YXIsIG1pcnJvcnMuc3RyaXAoKSkpCisgICAgICAgICAgICBiYi53YXJuKCdJbnZhbGlkIG1pcnJvciB2YXJpYWJsZSB2YWx1ZSBmb3IgJXM6ICVzLCBzaG91bGQgY29udGFpbiBwYWlyZWQgbWVtYmVycy4nICUgKG1pcnJvcl92YXIsIHN0cihtaXJyb3JzKSkpCiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBtaXJyb3JzID0gbGlzdCh6aXAoKltpdGVyKG1pcnJvcnMpXSoyKSkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3BhY2thZ2VfZmVlZC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3BhY2thZ2VfZmVlZC5iYmNsYXNzCmluZGV4IDcxZGYwM2IuLmYwM2M0ODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcGFja2FnZV9mZWVkLmJiY2xhc3MKQEAgLTI4LDYgKzI4LDkgQEAKIFBBQ0tBR0VfRkVFRF9HUEdfQkFDS0VORCA/PSAnbG9jYWwnCiBQQUNLQUdFX0ZFRURfR1BHX1NJR05BVFVSRV9UWVBFID89ICdBU0MnCiAKKyMgTWFrZSBmZWVkIHNpZ25pbmcga2V5IHRvIGJlIHByZXNlbnQgaW4gcm9vdGZzCitGRUFUVVJFX1BBQ0tBR0VTX3BhY2thZ2UtbWFuYWdlbWVudF9hcHBlbmQgPSAiIHNpZ25pbmcta2V5cy1wYWNrYWdlZmVlZCIKKwogcHl0aG9uICgpIHsKICAgICAjIENoZWNrIHNhbml0eSBvZiBjb25maWd1cmF0aW9uCiAgICAgZm9yIHZhciBpbiAoJ1BBQ0tBR0VfRkVFRF9HUEdfTkFNRScsICdQQUNLQUdFX0ZFRURfR1BHX1BBU1NQSFJBU0VfRklMRScpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3JwbS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3JwbS5iYmNsYXNzCmluZGV4IGJjMmU5NDcuLjQ5NjFiMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcnBtLmJiY2xhc3MKQEAgLTksMTYgKzksMzAgQEAKICMgICAgICAgICAgIE9wdGlvbmFsIHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSBiYWNrZW5kIHRvIHVzZSBmb3Igc2lnbmluZy4KICMgICAgICAgICAgIEN1cnJlbnRseSB0aGUgb25seSBhdmFpbGFibGUgb3B0aW9uIGlzICdsb2NhbCcsIGkuZS4gbG9jYWwgc2lnbmluZwogIyAgICAgICAgICAgb24gdGhlIGJ1aWxkIGhvc3QuCisjIFJQTV9GSUxFX0NIRUNLU1VNX0RJR0VTVAorIyAgICAgICAgICAgT3B0aW9uYWwgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIGFsZ29yaXRobSBmb3IgZ2VuZXJhdGluZyBmaWxlCisjICAgICAgICAgICBjaGVja3N1bSBkaWdlc3QuCisjIFJQTV9GU0tfUEFUSAorIyAgICAgICAgICAgT3B0aW9uYWwgdmFyaWFibGUgZm9yIHRoZSBmaWxlIHNpZ25pbmcga2V5LgorIyBSUE1fRlNLX1BBU1NXT1JECisjICAgICAgICAgICBPcHRpb25hbCB2YXJpYWJsZSBmb3IgdGhlIGZpbGUgc2lnbmluZyBrZXkgcGFzc3dvcmQuCiAjIEdQR19CSU4KICMgICAgICAgICAgIE9wdGlvbmFsIHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSBncGcgYmluYXJ5L3dyYXBwZXIgdG8gdXNlIGZvcgogIyAgICAgICAgICAgc2lnbmluZy4KKyMgUlBNX0dQR19TSUdOX0NIVU5LCisjICAgICAgICAgICBPcHRpb25hbCB2YXJpYWJsZSBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgcGFja2FnZXMgdXNlZCBwZXIgZ3BnCisjICAgICAgICAgICBpbnZvY2F0aW9uCiAjIEdQR19QQVRICiAjICAgICAgICAgICBPcHRpb25hbCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0aGUgZ251cGcgImhvbWUiIGRpcmVjdG9yeToKLSMKKwogaW5oZXJpdCBzYW5pdHkKIAogUlBNX1NJR05fUEFDS0FHRVM9JzEnCitSUE1fU0lHTl9GSUxFUyA/PSAnMCcKIFJQTV9HUEdfQkFDS0VORCA/PSAnbG9jYWwnCisjIFNIQS0yNTYgaXMgdXNlZCBieSBkZWZhdWx0CitSUE1fRklMRV9DSEVDS1NVTV9ESUdFU1QgPz0gJzgnCitSUE1fR1BHX1NJR05fQ0hVTksgPz0gIiR7QkJfTlVNQkVSX1RIUkVBRFN9IgogCiAKIHB5dGhvbiAoKSB7CkBAIC0yOCw2ICs0MiwxMSBAQAogICAgIGZvciB2YXIgaW4gKCdSUE1fR1BHX05BTUUnLCAnUlBNX0dQR19QQVNTUEhSQVNFJyk6CiAgICAgICAgIGlmIG5vdCBkLmdldFZhcih2YXIpOgogICAgICAgICAgICAgcmFpc2Vfc2FuaXR5X2Vycm9yKCJZb3UgbmVlZCB0byBkZWZpbmUgJXMgaW4gdGhlIGNvbmZpZyIgJSB2YXIsIGQpCisKKyAgICBpZiBkLmdldFZhcignUlBNX1NJR05fRklMRVMnKSA9PSAnMSc6CisgICAgICAgIGZvciB2YXIgaW4gKCdSUE1fRlNLX1BBVEgnLCAnUlBNX0ZTS19QQVNTV09SRCcpOgorICAgICAgICAgICAgaWYgbm90IGQuZ2V0VmFyKHZhcik6CisgICAgICAgICAgICAgICAgcmFpc2Vfc2FuaXR5X2Vycm9yKCJZb3UgbmVlZCB0byBkZWZpbmUgJXMgaW4gdGhlIGNvbmZpZyIgJSB2YXIsIGQpCiB9CiAKIHB5dGhvbiBzaWduX3JwbSAoKSB7CkBAIC0zOSw4ICs1OCwxOCBAQAogCiAgICAgc2lnbmVyLnNpZ25fcnBtcyhycG1zLAogICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1JQTV9HUEdfTkFNRScpLAotICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1JQTV9HUEdfUEFTU1BIUkFTRScpKQorICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1JQTV9HUEdfUEFTU1BIUkFTRScpLAorICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1JQTV9GSUxFX0NIRUNLU1VNX0RJR0VTVCcpLAorICAgICAgICAgICAgICAgICAgICAgaW50KGQuZ2V0VmFyKCdSUE1fR1BHX1NJR05fQ0hVTksnKSksCisgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignUlBNX0ZTS19QQVRIJyksCisgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignUlBNX0ZTS19QQVNTV09SRCcpKQogfQogCiBkb19wYWNrYWdlX2luZGV4W2RlcGVuZHNdICs9ICJzaWduaW5nLWtleXM6ZG9fZGVwbG95IgogZG9fcm9vdGZzW2RlcGVuZHNdICs9ICJzaWduaW5nLWtleXM6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKworIyBOZXdlciB2ZXJzaW9ucyBvZiBncGcgKGF0IGxlYXN0IDIuMS41IGFuZCAyLjIuMSkgaGF2ZSBpc3N1ZXMgd2hlbiBzaWduaW5nIG9jY3VycyBpbiBwYXJhbGxlbAorIyBzbyB1bmZvcnR1bmF0ZWx5IHRoZSBzaWduaW5nIG11c3QgYmUgZG9uZSBzZXJpYWxseS4gT25jZSB0aGUgdXBzdHJlYW0gcHJvYmxlbSBpcyBmaXhlZCwKKyMgdGhlIGZvbGxvd2luZyBsaW5lIG11c3QgYmUgcmVtb3ZlZCBvdGhlcndpc2Ugd2UgbG9vc2UgYWxsIHRoZSBpbnRyaW5zaWMgcGFyYWxsZWxpc20gZnJvbQorIyBiaXRiYWtlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIGNoZWNrIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjIuCitkb19wYWNrYWdlX3dyaXRlX3JwbVtsb2NrZmlsZXNdICs9ICIke1RNUERJUn0vZ3BnLmxvY2siCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKaW5kZXggMmMzMzczMi4uMWFhZGE0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcwpAQCAtNjIsMTAgKzYyLDggQEAKICAgICAgICAgImxpbnV4LWdudW4zMiI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudWVhYmkiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1nbGliYyIsCiAgICAgICAgICJsaW51eC1nbnVzcGUiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1nbGliYyIsCi0gICAgICAgICJsaW51eC11Y2xpYmMiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi11Y2xpYmMiLAotICAgICAgICAibGludXgtdWNsaWJjZWFiaSI6ICJjb21tb24tbGludXggY29tbW9uLXVjbGliYyIsCi0gICAgICAgICJsaW51eC11Y2xpYmNzcGUiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi11Y2xpYmMiLAogICAgICAgICAibGludXgtbXVzbCI6ICJjb21tb24tbGludXggY29tbW9uLW11c2wiLAorICAgICAgICAibGludXgtbXVzbHgzMiI6ICJjb21tb24tbGludXggY29tbW9uLW11c2wiLAogICAgICAgICAibGludXgtbXVzbGVhYmkiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1tdXNsIiwKICAgICAgICAgImxpbnV4LW11c2xzcGUiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1tdXNsIiwKICAgICAgICAgInVjbGludXgtdWNsaWJjIjogImNvbW1vbi11Y2xpYmMiLApAQCAtNzksOSArNzcsNyBAQAogICAgICAgICAiYWFyY2g2NF9iZS1saW51eC1tdXNsIjogImFhcmNoNjRfYmUtbGludXgiLAogICAgICAgICAiYXJtLWxpbnV4LWdudWVhYmkiOiAiYXJtLWxpbnV4IiwKICAgICAgICAgImFybS1saW51eC1tdXNsZWFiaSI6ICJhcm0tbGludXgiLAotICAgICAgICAiYXJtLWxpbnV4LXVjbGliY2VhYmkiOiAiYXJtLWxpbnV4LXVjbGliYyIsCiAgICAgICAgICJhcm1lYi1saW51eC1nbnVlYWJpIjogImFybWViLWxpbnV4IiwKLSAgICAgICAgImFybWViLWxpbnV4LXVjbGliY2VhYmkiOiAiYXJtZWItbGludXgtdWNsaWJjIiwKICAgICAgICAgImFybWViLWxpbnV4LW11c2xlYWJpIjogImFybWViLWxpbnV4IiwKICAgICAgICAgIm1pcHMtbGludXgtbXVzbCI6ICJtaXBzLWxpbnV4IiwKICAgICAgICAgIm1pcHNlbC1saW51eC1tdXNsIjogIm1pcHNlbC1saW51eCIsCkBAIC05MywxMCArODksOCBAQAogICAgICAgICAibWlwc2lzYTY0cjZlbC1saW51eC1nbnVuMzIiOiAibWlwc2lzYTMycjZlbC1saW51eCBiaXQtMzIiLAogICAgICAgICAicG93ZXJwYy1saW51eCI6ICJwb3dlcnBjMzItbGludXgiLAogICAgICAgICAicG93ZXJwYy1saW51eC1tdXNsIjogInBvd2VycGMtbGludXggcG93ZXJwYzMyLWxpbnV4IiwKLSAgICAgICAgInBvd2VycGMtbGludXgtdWNsaWJjIjogInBvd2VycGMtbGludXggcG93ZXJwYzMyLWxpbnV4IiwKICAgICAgICAgInBvd2VycGMtbGludXgtZ251c3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzMyLWxpbnV4IiwKICAgICAgICAgInBvd2VycGMtbGludXgtbXVzbHNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGMzMi1saW51eCIsCi0gICAgICAgICJwb3dlcnBjLWxpbnV4LXVjbGliY3NwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGMzMi1saW51eCBwb3dlcnBjLWxpbnV4LXVjbGliYyIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgtZ251c3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKICAgICAgICAgInBvd2VycGM2NC1saW51eC1tdXNsc3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKICAgICAgICAgInBvd2VycGM2NC1saW51eCI6ICJwb3dlcnBjLWxpbnV4IiwKQEAgLTEwNiw3ICsxMDAsNyBAQAogICAgICAgICAieDg2XzY0LWRhcndpbjkiOiAiYml0LTY0IiwKICAgICAgICAgIng4Nl82NC1saW51eCI6ICJiaXQtNjQiLAogICAgICAgICAieDg2XzY0LWxpbnV4LW11c2wiOiAieDg2XzY0LWxpbnV4IGJpdC02NCIsCi0gICAgICAgICJ4ODZfNjQtbGludXgtdWNsaWJjIjogImJpdC02NCIsCisgICAgICAgICJ4ODZfNjQtbGludXgtbXVzbHgzMiI6ICJiaXQtMzIgaXg4Ni1jb21tb24geDMyLWxpbnV4IiwKICAgICAgICAgIng4Nl82NC1lbGYiOiAiYml0LTY0IiwKICAgICAgICAgIng4Nl82NC1saW51eC1nbnUiOiAiYml0LTY0IHg4Nl82NC1saW51eCIsCiAgICAgICAgICJ4ODZfNjQtbGludXgtZ251eDMyIjogImJpdC0zMiBpeDg2LWNvbW1vbiB4MzItbGludXgiLApAQCAtMTU5LDcgKzE1Myw3IEBACiAgICAgICAgIGJiLmZhdGFsKCJQbGVhc2UgYWRkIHlvdXIgYXJjaGl0ZWN0dXJlIHRvIHNpdGVpbmZvLmJiY2xhc3MiKQogfQogCi1kZWYgc2l0ZWluZm9fZ2V0X2ZpbGVzKGQsIGFjbG9jYWxjYWNoZSA9IEZhbHNlKToKK2RlZiBzaXRlaW5mb19nZXRfZmlsZXMoZCwgc3lzcm9vdGNhY2hlID0gRmFsc2UpOgogICAgIHNpdGVkYXRhID0gc2l0ZWluZm9fZGF0YShkKQogICAgIHNpdGVmaWxlcyA9ICIiCiAgICAgZm9yIHBhdGggaW4gZC5nZXRWYXIoIkJCUEFUSCIpLnNwbGl0KCI6Iik6CkBAIC0xNjgsMTggKzE2MiwxMSBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgIHNpdGVmaWxlcyArPSBmaWxlbmFtZSArICIgIgogCi0gICAgaWYgbm90IGFjbG9jYWxjYWNoZToKKyAgICBpZiBub3Qgc3lzcm9vdGNhY2hlOgogICAgICAgICByZXR1cm4gc2l0ZWZpbGVzCiAKLSAgICAjIE5vdyBjaGVjayBmb3Igc2l0ZWNvbmZpZyBjYWNoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IHNldHVwIGJ5IGF1dG90b29scy5iYmNsYXNzIHRvCi0gICAgIyBhdm9pZCByYWNlcy4KLSAgICAjCi0gICAgIyBBQ0xPQ0FMRElSIG1heSBvciBtYXkgbm90IGV4aXN0IHNvIGNhY2hlIHNob3VsZCBvbmx5IGJlIHNldCB0byBUcnVlIGZyb20gYXV0b3Rvb2xzLmJiY2xhc3MKLSAgICAjIGFmdGVyIGZpbGVzIGhhdmUgYmVlbiBjb3BpZWQgaW50byB0aGlzIGxvY2F0aW9uLiBUbyBkbyBvdGhlcndpc2Ugcmlza3MgcGFyc2luZy9zaWduYXR1cmUKLSAgICAjIGlzc3VlcyBhbmQgdGhlIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkL3JlbW92ZWQgd2hpbHN0IHRoaXMgY29kZSBleGVjdXRlcy4gVGhpcyBjYW4gaGFwcGVuCi0gICAgIyB3aGVuIGEgbXVsdGlsaWIgcmVjaXBlIGlzIHBhcnNlZCBhbG9uZyB3aXRoIGl0cyBiYXNlIHZhcmlhbnQgd2hpY2ggbWF5IGJlIHJ1bm5pbmcgYXQgdGhlIHRpbWUKLSAgICAjIGNhdXNpbmcgcmFyZSBidXQgbmFzdHkgZmFpbHVyZXMKLSAgICBwYXRoX3NpdGVjb25maWcgPSBkLmdldFZhcignQUNMT0NBTERJUicpCisgICAgIyBOb3cgY2hlY2sgZm9yIHNpdGVjb25maWcgY2FjaGUgZmlsZXMgaW4gc3lzcm9vdHMKKyAgICBwYXRoX3NpdGVjb25maWcgPSBkLmdldFZhcignU0lURUNPTkZJR19TWVNST09UQ0FDSEUnKQogICAgIGlmIHBhdGhfc2l0ZWNvbmZpZyBhbmQgb3MucGF0aC5pc2RpcihwYXRoX3NpdGVjb25maWcpOgogICAgICAgICBmb3IgaSBpbiBvcy5saXN0ZGlyKHBhdGhfc2l0ZWNvbmZpZyk6CiAgICAgICAgICAgICBpZiBub3QgaS5lbmRzd2l0aCgiX2NvbmZpZyIpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKaW5kZXggMGExMjkzNS4uZTMwZmJlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCkBAIC0zNDYsOCArMzQ2LDYgQEAKICAgICAgICAgb2UucGF0aC5yZW1vdmUoZGlyKQogCiAgICAgZm9yIHN0YXRlIGluIHNzWydkaXJzJ106Ci0gICAgICAgIGlmIGQuZ2V0VmFyKCdTU1RBVEVfU0tJUF9DUkVBVElPTicpID09ICcxJzoKLSAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHByZXBkaXIoc3RhdGVbMV0pCiAgICAgICAgIG9zLnJlbmFtZShzc3RhdGVpbnN0ICsgc3RhdGVbMF0sIHN0YXRlWzFdKQogICAgIHNzdGF0ZV9pbnN0YWxsKHNzLCBkKQpAQCAtNDA0LDcgKzQwMiw3IEBACiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBiYi5ub3RlKCJSZXBsYWNpbmcgZml4bWUgcGF0aHMgaW4gc3N0YXRlIHBhY2thZ2U6ICVzIiAlIChzc3RhdGVfaGFyZGNvZGVfY21kKSkKLSAgICAgICAgc3VicHJvY2Vzcy5jYWxsKHNzdGF0ZV9oYXJkY29kZV9jbWQsIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChzc3RhdGVfaGFyZGNvZGVfY21kLCBzaGVsbD1UcnVlKQogCiAgICAgICAgICMgTmVlZCB0byByZW1vdmUgdGhpcyBvciB3ZSdkIGNvcHkgaXQgaW50byB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbmQgbWF5IAogICAgICAgICAjIGNvbmZsaWN0IHdpdGggYW5vdGhlciB3cml0ZXIKQEAgLTQ1Myw3ICs0NTEsNyBAQAogICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0ICsgIi5wb3N0cm0iKToKICAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKICAgICAgICAgb3MuY2htb2QocG9zdHJtLCAwbzc1NSkKLSAgICAgICAgc3VicHJvY2Vzcy5jYWxsKHBvc3RybSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKHBvc3RybSwgc2hlbGw9VHJ1ZSkKICAgICAgICAgb2UucGF0aC5yZW1vdmUocG9zdHJtKQogCiAgICAgb2UucGF0aC5yZW1vdmUobWFuaWZlc3QpCkBAIC01OTYsOCArNTk0LDYgQEAKICAgICBmb3Igc3RhdGUgaW4gc3NbJ2RpcnMnXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHN0YXRlWzFdKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIGQuZ2V0VmFyKCdTU1RBVEVfU0tJUF9DUkVBVElPTicpID09ICcxJzoKLSAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHNyY2Jhc2UgPSBzdGF0ZVswXS5yc3RyaXAoIi8iKS5yc3BsaXQoJy8nLCAxKVswXQogICAgICAgICAjIEZpbmQgYW5kIGVycm9yIGZvciBhYnNvbHV0ZSBzeW1saW5rcy4gV2UgY291bGQgYXR0ZW1wdCB0byByZWxvY2F0ZSBidXQgaXRzIG5vdAogICAgICAgICAjIGNsZWFyIHdoZXJlIHRoZSBzeW1saW5rIGlzIHJlbGF0aXZlIHRvIGluIHRoaXMgY29udGV4dC4gV2UgY291bGQgYWRkIHRoYXQgbWFya3VwCkBAIC02MjUsNiArNjIxLDEwIEBACiAKICAgICBkLnNldFZhcignU1NUQVRFX0JVSUxERElSJywgc3N0YXRlYnVpbGQpCiAgICAgZC5zZXRWYXIoJ1NTVEFURV9QS0cnLCBzc3RhdGVwa2cpCisgICAgZC5zZXRWYXIoJ1NTVEFURV9JTlNURElSJywgc3N0YXRlYnVpbGQpCisKKyAgICBpZiBkLmdldFZhcignU1NUQVRFX1NLSVBfQ1JFQVRJT04nKSA9PSAnMSc6CisgICAgICAgIHJldHVybgogCiAgICAgZm9yIGYgaW4gKGQuZ2V0VmFyKCdTU1RBVEVDUkVBVEVGVU5DUycpIG9yICcnKS5zcGxpdCgpICsgXAogICAgICAgICAgICAgIFsnc3N0YXRlX2NyZWF0ZV9wYWNrYWdlJywgJ3NzdGF0ZV9zaWduX3BhY2thZ2UnXSArIFwKQEAgLTYzNCw4ICs2MzQsNiBAQAogCiAgICAgYmIuc2lnZ2VuLmR1bXBfdGhpc190YXNrKHNzdGF0ZXBrZyArICIuc2lnaW5mbyIsIGQpCiAKLSAgICBkLnNldFZhcignU1NUQVRFX0lOU1RESVInLCBzc3RhdGVidWlsZCkKLQogICAgIHJldHVybgogCiBkZWYgcHN0YWdpbmdfZmV0Y2goc3N0YXRlZmV0Y2gsIHNzdGF0ZXBrZywgZCk6CkBAIC05NjksNyArOTY3LDggQEAKICAgICAgICAgICAgIGlmIGlzTmF0aXZlQ3Jvc3ModGFza2RlcGVuZGVlc1tkZXBdWzBdKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICMgTmF0aXZlL2Nyb3NzIHRvb2xzIGRlcGVuZGVkIHVwb24gYnkgdGFyZ2V0IHN5c3Jvb3QgYXJlIG5vdCBuZWVkZWQKLSAgICAgICAgICAgIGlmIGlzTmF0aXZlQ3Jvc3ModGFza2RlcGVuZGVlc1t0YXNrXVswXSk6CisgICAgICAgICAgICAjIEFkZCBhbiBleGNlcHRpb24gZm9yIHNoYWRvdy1uYXRpdmUgYXMgcmVxdWlyZWQgYnkgdXNlcmFkZC5iYmNsYXNzCisgICAgICAgICAgICBpZiBpc05hdGl2ZUNyb3NzKHRhc2tkZXBlbmRlZXNbdGFza11bMF0pIGFuZCB0YXNrZGVwZW5kZWVzW3Rhc2tdWzBdICE9ICdzaGFkb3ctbmF0aXZlJzoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgIyBUYXJnZXQgcG9wdWxhdGVfc3lzcm9vdCBuZWVkIHRoZWlyIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0xMDE3LDYgKzEwMTYsMTEgQEAKICAgICBkID0gZS5kYXRhCiAgICAgc3RhbXBzID0gZS5zdGFtcHMudmFsdWVzKCkKICAgICByZW1vdmV3b3JrZGlyID0gKGQuZ2V0VmFyKCJTU1RBVEVfUFJVTkVfT0JTT0xFVEVXT1JLRElSIiwgRmFsc2UpID09ICIxIikKKyAgICBwcmVzZXJ2ZXN0YW1wZmlsZSA9IGQuZXhwYW5kKCcke1NTVEFURV9NQU5JRkVTVFN9L3ByZXNlcnZlLXN0YW1wcycpCisgICAgcHJlc2VydmVzdGFtcHMgPSBbXQorICAgIGlmIG9zLnBhdGguZXhpc3RzKHByZXNlcnZlc3RhbXBmaWxlKToKKyAgICAgICAgd2l0aCBvcGVuKHByZXNlcnZlc3RhbXBmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBwcmVzZXJ2ZXN0YW1wcyA9IGYucmVhZGxpbmVzKCkKICAgICBzZWVuID0gW10KICAgICBmb3IgYSBpbiBkLmdldFZhcigiU1NUQVRFX0FSQ0hTIikuc3BsaXQoKToKICAgICAgICAgdG9yZW1vdmUgPSBbXQpAQCAtMTAyNyw3ICsxMDMxLDcgQEAKICAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQogICAgICAgICAgICAgZm9yIGwgaW4gbGluZXM6CiAgICAgICAgICAgICAgICAgKHN0YW1wLCBtYW5pZmVzdCwgd29ya2RpcikgPSBsLnNwbGl0KCkKLSAgICAgICAgICAgICAgICBpZiBzdGFtcCBub3QgaW4gc3RhbXBzOgorICAgICAgICAgICAgICAgIGlmIHN0YW1wIG5vdCBpbiBzdGFtcHMgYW5kIHN0YW1wIG5vdCBpbiBwcmVzZXJ2ZXN0YW1wczoKICAgICAgICAgICAgICAgICAgICAgdG9yZW1vdmUuYXBwZW5kKGwpCiAgICAgICAgICAgICAgICAgICAgIGlmIHN0YW1wIG5vdCBpbiBzZWVuOgogICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgIlN0YW1wICVzIGlzIG5vdCByZWFjaGFibGUsIHJlbW92aW5nIHJlbGF0ZWQgbWFuaWZlc3RzIiAlIHN0YW1wKQpAQCAtMTA0OSw0ICsxMDUzLDYgQEAKICAgICAgICAgd2l0aCBvcGVuKGksICJ3IikgYXMgZjoKICAgICAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgIGYud3JpdGUobCkKKyAgICBpZiBwcmVzZXJ2ZXN0YW1wczoKKyAgICAgICAgb3MucmVtb3ZlKHByZXNlcnZlc3RhbXBmaWxlKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwppbmRleCA5ODQwNTFkLi5jNDc5YmQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwpAQCAtNjgsMTAxICs2OCwxOSBAQAogfQogCiBweXRob24gc3lzcm9vdF9zdHJpcCAoKSB7Ci0gICAgaW1wb3J0IHN0YXQsIGVycm5vCisgICAgaW5oaWJpdF9zeXNyb290ID0gZC5nZXRWYXIoJ0lOSElCSVRfU1lTUk9PVF9TVFJJUCcpCisgICAgaWYgaW5oaWJpdF9zeXNyb290IGFuZCBvZS50eXBlcy5ib29sZWFuKGluaGliaXRfc3lzcm9vdCk6CisgICAgICAgIHJldHVybiAwCiAKLSAgICBkdmFyID0gZC5nZXRWYXIoJ1NZU1JPT1RfREVTVERJUicpCisgICAgZHN0ZGlyID0gZC5nZXRWYXIoJ1NZU1JPT1RfREVTVERJUicpCiAgICAgcG4gPSBkLmdldFZhcignUE4nKQorICAgIGxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkc3RkaXIgKyBvcy5zZXAgKyBkLmdldFZhcigibGliZGlyIikpCisgICAgYmFzZV9saWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHN0ZGlyICsgb3Muc2VwICsgZC5nZXRWYXIoImJhc2VfbGliZGlyIikpCisgICAgcWFfYWxyZWFkeV9zdHJpcHBlZCA9ICdhbHJlYWR5LXN0cmlwcGVkJyBpbiAoZC5nZXRWYXIoJ0lOU0FORV9TS0lQXycgKyBwbikgb3IgIiIpLnNwbGl0KCkKKyAgICBzdHJpcF9jbWQgPSBkLmdldFZhcigiU1RSSVAiKQogCi0gICAgb3MuY2hkaXIoZHZhcikKLQotICAgICMgUmV0dXJuIHR5cGUgKGJpdHMpOgotICAgICMgMCAtIG5vdCBlbGYKLSAgICAjIDEgLSBFTEYKLSAgICAjIDIgLSBzdHJpcHBlZAotICAgICMgNCAtIGV4ZWN1dGFibGUKLSAgICAjIDggLSBzaGFyZWQgbGlicmFyeQotICAgICMgMTYgLSBrZXJuZWwgbW9kdWxlCi0gICAgZGVmIGlzRUxGKHBhdGgpOgotICAgICAgICB0eXBlID0gMAotICAgICAgICByZXQsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiZmlsZSBcIiVzXCIiICUgcGF0aC5yZXBsYWNlKCJcIiIsICJcXFwiIikpCi0KLSAgICAgICAgaWYgcmV0OgotICAgICAgICAgICAgYmIuZXJyb3IoInNwbGl0X2FuZF9zdHJpcF9maWxlczogJ2ZpbGUgJXMnIGZhaWxlZCIgJSBwYXRoKQotICAgICAgICAgICAgcmV0dXJuIHR5cGUKLQotICAgICAgICAjIE5vdCBzdHJpcHBlZAotICAgICAgICBpZiAiRUxGIiBpbiByZXN1bHQ6Ci0gICAgICAgICAgICB0eXBlIHw9IDEKLSAgICAgICAgICAgIGlmICJub3Qgc3RyaXBwZWQiIG5vdCBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgdHlwZSB8PSAyCi0gICAgICAgICAgICBpZiAiZXhlY3V0YWJsZSIgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIHR5cGUgfD0gNAotICAgICAgICAgICAgaWYgInNoYXJlZCIgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIHR5cGUgfD0gOAotICAgICAgICByZXR1cm4gdHlwZQotCi0KLSAgICBlbGZmaWxlcyA9IHt9Ci0gICAgaW5vZGVzID0ge30KLSAgICBsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHZhciArIG9zLnNlcCArIGQuZ2V0VmFyKCJsaWJkaXIiKSkKLSAgICBiYXNlbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGR2YXIgKyBvcy5zZXAgKyBkLmdldFZhcigiYmFzZV9saWJkaXIiKSkKLSAgICBpZiAoZC5nZXRWYXIoJ0lOSElCSVRfU1lTUk9PVF9TVFJJUCcpICE9ICcxJyk6Ci0gICAgICAgICMKLSAgICAgICAgIyBGaXJzdCBsZXRzIGZpZ3VyZSBvdXQgYWxsIG9mIHRoZSBmaWxlcyB3ZSBtYXkgaGF2ZSB0byBwcm9jZXNzCi0gICAgICAgICMKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZHZhcik6Ci0gICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCi0KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGx0YXJnZXQgPSBvZS5wYXRoLnJlYWxwYXRoKGZpbGUsIGR2YXIsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICBzID0gb3MubHN0YXQobHRhcmdldCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICAoZXJyLCBzdHJlcnJvcikgPSBlLmFyZ3MKLSAgICAgICAgICAgICAgICAgICAgaWYgZXJyICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgICMgU2tpcCBicm9rZW4gc3ltbGlua3MKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIENoZWNrIGl0cyBhbiBleGN1dGFibGUKLSAgICAgICAgICAgICAgICBpZiAoc1tzdGF0LlNUX01PREVdICYgc3RhdC5TX0lYVVNSKSBvciAoc1tzdGF0LlNUX01PREVdICYgc3RhdC5TX0lYR1JQKSBvciAoc1tzdGF0LlNUX01PREVdICYgc3RhdC5TX0lYT1RIKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBvciAoKGZpbGUuc3RhcnRzd2l0aChsaWJkaXIpIG9yIGZpbGUuc3RhcnRzd2l0aChiYXNlbGliZGlyKSkgYW5kICIuc28iIGluIGYpOgotICAgICAgICAgICAgICAgICAgICAjIElmIGl0J3MgYSBzeW1saW5rLCBhbmQgcG9pbnRzIHRvIGFuIEVMRiBmaWxlLCB3ZSBjYXB0dXJlIHRoZSByZWFkbGluayB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgICAgICMgSXQncyBhIGZpbGUgKG9yIGhhcmRsaW5rKSwgbm90IGEgbGluawotICAgICAgICAgICAgICAgICAgICAjIC4uLmJ1dCBpcyBpdCBFTEYsIGFuZCBpcyBpdCBhbHJlYWR5IHN0cmlwcGVkPwotICAgICAgICAgICAgICAgICAgICBlbGZfZmlsZSA9IGlzRUxGKGZpbGUpCi0gICAgICAgICAgICAgICAgICAgIGlmIGVsZl9maWxlICYgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVsZl9maWxlICYgMjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnYWxyZWFkeS1zdHJpcHBlZCcgaW4gKGQuZ2V0VmFyKCdJTlNBTkVfU0tJUF8nICsgcG4pIG9yICIiKS5zcGxpdCgpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJTa2lwcGluZyBmaWxlICVzIGZyb20gJXMgZm9yIGFscmVhZHktc3RyaXBwZWQgUUEgdGVzdCIgJSAoZmlsZVtsZW4oZHZhcik6XSwgcG4pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIkZpbGUgJyVzJyBmcm9tICVzIHdhcyBhbHJlYWR5IHN0cmlwcGVkLCB0aGlzIHdpbGwgcHJldmVudCBmdXR1cmUgZGVidWdnaW5nISIgJSAoZmlsZVtsZW4oZHZhcik6XSwgcG4pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHMuc3RfaW5vIGluIGlub2RlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saW5rKGlub2Rlc1tzLnN0X2lub10sIGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlub2Rlc1tzLnN0X2lub10gPSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVhayBoYXJkbGluawotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKGZpbGUsIGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxmZmlsZXNbZmlsZV0gPSBlbGZfZmlsZQotCi0gICAgICAgICMKLSAgICAgICAgIyBOb3cgc3RyaXAgdGhlbSAoaW4gcGFyYWxsZWwpCi0gICAgICAgICMKLSAgICAgICAgc3RyaXAgPSBkLmdldFZhcigiU1RSSVAiKQotICAgICAgICBzZmlsZXMgPSBbXQotICAgICAgICBmb3IgZmlsZSBpbiBlbGZmaWxlczoKLSAgICAgICAgICAgIGVsZl9maWxlID0gaW50KGVsZmZpbGVzW2ZpbGVdKQotICAgICAgICAgICAgI2JiLm5vdGUoIlN0cmlwICVzIiAlIGZpbGUpCi0gICAgICAgICAgICBzZmlsZXMuYXBwZW5kKChmaWxlLCBlbGZfZmlsZSwgc3RyaXApKQotCi0gICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKHNmaWxlcywgb2UucGFja2FnZS5ydW5zdHJpcCkKKyAgICBvZS5wYWNrYWdlLnN0cmlwX2V4ZWNzKHBuLCBkc3RkaXIsIHN0cmlwX2NtZCwgbGliZGlyLCBiYXNlX2xpYmRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHFhX2FscmVhZHlfc3RyaXBwZWQ9cWFfYWxyZWFkeV9zdHJpcHBlZCkKIH0KIAogZG9fcG9wdWxhdGVfc3lzcm9vdFtkaXJzXSA9ICIke1NZU1JPT1RfREVTVERJUn0iCkBAIC0yNTksNiArMTc3LDcgQEAKIGRlZiBzdGFnaW5nX3BvcHVsYXRlX3N5c3Jvb3RfZGlyKHRhcmdldHN5c3Jvb3QsIG5hdGl2ZXN5c3Jvb3QsIG5hdGl2ZSwgZCk6CiAgICAgaW1wb3J0IGdsb2IKICAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIGltcG9ydCBlcnJubwogCiAgICAgZml4bWUgPSBbXQogICAgIHBvc3RpbnN0cyA9IFtdCkBAIC00NTQsNyArMzczLDggQEAKICAgICAgICAgICAgICAgICAgICAgbXNnYnVmLmFwcGVuZCgiRm9sbG93aW5nIGRlcGVuZGVuY3kgb24gJXMiICUgc2V0c2NlbmVkZXBzW2RhdGFkZXBdWzBdKQogICAgICAgICBuZXh0ID0gbmV3CiAKLSAgICBiYi5ub3RlKCJcbiIuam9pbihtc2didWYpKQorICAgICMgVGhpcyBsb2dnaW5nIGlzIHRvbyB2ZXJib3NlIGZvciBkYXkgdG8gZGF5IHVzZSBzYWRseQorICAgICNiYi5kZWJ1ZygyLCAiXG4iLmpvaW4obXNnYnVmKSkKIAogICAgIGRlcGRpciA9IHJlY2lwZXN5c3Jvb3RuYXRpdmUgKyAiL2luc3RhbGxlZGRlcHMiCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlcGRpcikKQEAgLTQ2OSw2ICszODksOCBAQAogICAgIHBvc3RpbnN0cyA9IFtdCiAgICAgbXVsdGlsaWJzID0ge30KICAgICBtYW5pZmVzdHMgPSB7fQorICAgICMgQWxsIGZpbGVzIHRoYXQgd2UncmUgZ29pbmcgdG8gYmUgaW5zdGFsbGluZywgdG8gZmluZCBjb25mbGljdHMuCisgICAgZmlsZXNldCA9IHt9CiAKICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKGRlcGRpcik6CiAgICAgICAgIGlmIG5vdCBmLmVuZHN3aXRoKCIuY29tcGxldGUiKToKQEAgLTUyMSw2ICs0NDMsOCBAQAogICAgICAgICAgICAgb3MudW5saW5rKGZsKQogICAgICAgICAgICAgb3MudW5saW5rKGZsICsgIi5jb21wbGV0ZSIpCiAKKyAgICBtc2dfZXhpc3RzID0gW10KKyAgICBtc2dfYWRkaW5nID0gW10KICAgICBmb3IgZGVwIGluIGNvbmZpZ3VyZWRlcHM6CiAgICAgICAgIGMgPSBzZXRzY2VuZWRlcHNbZGVwXVswXQogICAgICAgICBpZiBjIG5vdCBpbiBpbnN0YWxsZWQ6CkBAIC01MzEsNyArNDU1LDcgQEAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGVwZGlyICsgIi8iICsgYyk6CiAgICAgICAgICAgICBsbmsgPSBvcy5yZWFkbGluayhkZXBkaXIgKyAiLyIgKyBjKQogICAgICAgICAgICAgaWYgbG5rID09IGMgKyAiLiIgKyB0YXNraGFzaCBhbmQgb3MucGF0aC5leGlzdHMoZGVwZGlyICsgIi8iICsgYyArICIuY29tcGxldGUiKToKLSAgICAgICAgICAgICAgICBiYi5ub3RlKCIlcyBleGlzdHMgaW4gc3lzcm9vdCwgc2tpcHBpbmciICUgYykKKyAgICAgICAgICAgICAgICBtc2dfZXhpc3RzLmFwcGVuZChjKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJiLm5vdGUoIiVzIGV4aXN0cyBpbiBzeXNyb290LCBidXQgaXMgc3RhbGUgKCVzIHZzLiAlcyksIHJlbW92aW5nLiIgJSAoYywgbG5rLCBjICsgIi4iICsgdGFza2hhc2gpKQpAQCAtNTQyLDYgKzQ2Niw4IEBACiAgICAgICAgIGVsaWYgb3MucGF0aC5sZXhpc3RzKGRlcGRpciArICIvIiArIGMpOgogICAgICAgICAgICAgb3MudW5saW5rKGRlcGRpciArICIvIiArIGMpCiAKKyAgICAgICAgbXNnX2FkZGluZy5hcHBlbmQoYykKKwogICAgICAgICBvcy5zeW1saW5rKGMgKyAiLiIgKyB0YXNraGFzaCwgZGVwZGlyICsgIi8iICsgYykKIAogICAgICAgICBkMiA9IGQKQEAgLTU5NSw4ICs1MjEsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgbC5lbmRzd2l0aCgiL2ZpeG1lcGF0aC5jbWQiKToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSBsLnJlcGxhY2Uoc3RhZ2luZ2RpciwgIiIpCi0gICAgICAgICAgICAgICAgICAgIGRlc3QgPSB0YXJnZXRkaXIgKyAiLyIgKyAiLyIuam9pbihkZXN0LnNwbGl0KCIvIilbMzpdKQotICAgICAgICAgICAgICAgICAgICBuZXdtYW5pZmVzdFtsXSA9IGRlc3QKKyAgICAgICAgICAgICAgICAgICAgZGVzdCA9ICIvIiArICIvIi5qb2luKGRlc3Quc3BsaXQoIi8iKVszOl0pCisgICAgICAgICAgICAgICAgICAgIG5ld21hbmlmZXN0W2xdID0gdGFyZ2V0ZGlyICsgZGVzdAorCisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgZmlsZXMgaGF2ZSBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkIGJ5IGFub3RoZXIKKyAgICAgICAgICAgICAgICAgICAgIyByZWNpcGUgYW5kIGFib3J0IGlmIHRoZXkgaGF2ZSwgZXhwbGFpbmluZyB3aGF0IHJlY2lwZXMgYXJlCisgICAgICAgICAgICAgICAgICAgICMgY29uZmxpY3RpbmcuCisgICAgICAgICAgICAgICAgICAgIGhhc2huYW1lID0gdGFyZ2V0ZGlyICsgZGVzdAorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaGFzaG5hbWUuZW5kc3dpdGgoIi8iKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2huYW1lIGluIGZpbGVzZXQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlRoZSBmaWxlICVzIGlzIGluc3RhbGxlZCBieSBib3RoICVzIGFuZCAlcywgYWJvcnRpbmciICUgKGRlc3QsIGMsIGZpbGVzZXRbaGFzaG5hbWVdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNldFtoYXNobmFtZV0gPSBjCisKICAgICAgICAgICAgICMgSGF2aW5nIG11bHRpcGxlIGlkZW50aWNhbCBtYW5pZmVzdHMgaW4gZWFjaCBzeXNyb290IGVhdHMgZGlza3NwYWNlIHNvCiAgICAgICAgICAgICAjIGNyZWF0ZSBhIHNoYXJlZCBwb29sIG9mIHRoZW0gYW5kIGhhcmRsaW5rIGlmIHdlIGNhbi4KICAgICAgICAgICAgICMgV2UgY3JlYXRlIHRoZSBtYW5pZmVzdCBpbiBhZHZhbmNlIHNvIHRoYXQgaWYgc29tZXRoaW5nIGZhaWxzIGR1cmluZyBpbnN0YWxsYXRpb24sCkBAIC02MjcsNiArNTY0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHN0YWdpbmdfY29weWZpbGUobCwgdGFyZ2V0ZGlyLCBkZXN0LCBwb3N0aW5zdHMsIHNlZW5kaXJzKQogCisgICAgYmIubm90ZSgiSW5zdGFsbGVkIGludG8gc3lzcm9vdDogJXMiICUgc3RyKG1zZ19hZGRpbmcpKQorICAgIGJiLm5vdGUoIlNraXBwaW5nIGFzIGFscmVhZHkgZXhpc3RzIGluIHN5c3Jvb3Q6ICVzIiAlIHN0cihtc2dfZXhpc3RzKSkKKwogICAgIGZvciBmIGluIGZpeG1lOgogICAgICAgICBpZiBmID09ICcnOgogICAgICAgICAgICAgc3RhZ2luZ19wcm9jZXNzZml4bWUoZml4bWVbZl0sIHJlY2lwZXN5c3Jvb3QsIHJlY2lwZXN5c3Jvb3QsIHJlY2lwZXN5c3Jvb3RuYXRpdmUsIGQpCkBAIC02NTgsNiArNTk4LDkgQEAKICMgQ2xlYW4gb3V0IHRoZSByZWNpcGUgc3BlY2lmaWMgc3lzcm9vdHMgYmVmb3JlIGRvX2ZldGNoCiAjICh1c2UgYSBwcmVmdW5jIHNvIHdlIGNhbiBvcmRlciBiZWZvcmUgZXh0ZW5kX3JlY2lwZV9zeXNyb290IGlmIGl0IGdldHMgYWRkZWQpCiBweXRob24gY2xlYW5fcmVjaXBlX3N5c3Jvb3QoKSB7CisgICAgIyBXZSByZW1vdmUgdGhlc2Ugc3RhbXBzIHNpbmNlIHdlJ3JlIHJlbW92aW5nIGFueSBjb250ZW50IHRoZXknZCBoYXZlIGFkZGVkIHdpdGgKKyAgICAjIGNsZWFuZGlycy4gVGhpcyByZW1vdmVzIHRoZSBzaWdkYXRhIHRvbywgbGlrZWx5IG5vdCBhIGJpZyBkZWFsLAorICAgIG9lLnBhdGgucmVtb3ZlKGQuZ2V0VmFyKCJTVEFNUCIpICsgIiphZGR0b19yZWNpcGVfc3lzcm9vdCoiKQogICAgIHJldHVybgogfQogY2xlYW5fcmVjaXBlX3N5c3Jvb3RbY2xlYW5kaXJzXSArPSAiJHtSRUNJUEVfU1lTUk9PVH0gJHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9IgpAQCAtNjcyLDQgKzYxNSwzIEBACiB9CiBzdGFnaW5nX3Rhc2toYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuUmVjaXBlVGFza1ByZVByb2Nlc3MiCiBhZGRoYW5kbGVyIHN0YWdpbmdfdGFza2hhbmRsZXIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LmJiY2xhc3MKaW5kZXggOTU5Nzc1OS4uOTM3MzA3MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzCkBAIC03LDEwICs3LDkgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICBtYWludGVuYW5jZS4KICMKICMgU2V0IEVGSV9QUk9WSURFUiA9ICJzeXN0ZW1kLWJvb3QiIHRvIHVzZSBzeXN0ZW1kLWJvb3Qgb24geW91ciBsaXZlIGltYWdlcyBpbnN0ZWFkIG9mIGdydWItZWZpCi0jIChpbWFnZXMgYnVpbHQgYnkgaW1hZ2UtbGl2ZS5iYmNsYXNzIG9yIGltYWdlLXZtLmJiY2xhc3MpCisjIChpbWFnZXMgYnVpbHQgYnkgaW1hZ2UtbGl2ZS5iYmNsYXNzKQogCiBkb19ib290aW1nW2RlcGVuZHNdICs9ICIke01MUFJFRklYfXN5c3RlbWQtYm9vdDpkb19kZXBsb3kiCi1kb19ib290ZGlyZWN0ZGlza1tkZXBlbmRzXSArPSAiJHtNTFBSRUZJWH1zeXN0ZW1kLWJvb3Q6ZG9fZGVwbG95IgogCiBFRklESVIgPSAiL0VGSS9CT09UIgogCkBAIC0xMDAsNiArOTksOCBAQAogICAgICAgICAgICAgYmIuZmF0YWwoJ09WRVJSSURFUyBub3QgZGVmaW5lZCcpCiAKICAgICAgICAgZW50cnlmaWxlID0gIiVzLyVzLmNvbmYiICUgKHMsIGxhYmVsKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocyk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzKQogICAgICAgICBkLmFwcGVuZFZhcigiU1lTVEVNRF9CT09UX0VOVFJJRVMiLCAiICIgKyBlbnRyeWZpbGUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGVudHJ5Y2ZnID0gb3BlbihlbnRyeWZpbGUsICJ3IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLmJiY2xhc3MKaW5kZXggYzRiNGJiOS4uMWIxMzQzMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLmJiY2xhc3MKQEAgLTE1NCw4ICsxNTQsMTAgQEAKICAgICAgICAgICAgICAgICAjIERlYWwgd2l0aCBhZGRpbmcsIGZvciBleGFtcGxlLCAnaWZwbHVnZEBldGgwLnNlcnZpY2UnIGZyb20KICAgICAgICAgICAgICAgICAjICdpZnBsdWdkQC5zZXJ2aWNlJwogICAgICAgICAgICAgICAgIGJhc2UgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgc2VydmljZS5maW5kKCdAJykgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgIGJhc2UgPSByZS5zdWIoJ0BbXi5dKy4nLCAnQC4nLCBzZXJ2aWNlKQorICAgICAgICAgICAgICAgIGF0ID0gc2VydmljZS5maW5kKCdAJykKKyAgICAgICAgICAgICAgICBpZiBhdCAhPSAtMToKKyAgICAgICAgICAgICAgICAgICAgZXh0ID0gc2VydmljZS5yZmluZCgnLicpCisgICAgICAgICAgICAgICAgICAgIGJhc2UgPSBzZXJ2aWNlWzphdF0gKyAnQCcgKyBzZXJ2aWNlW2V4dDpdCiAKICAgICAgICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoczoKICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob2UucGF0aC5qb2luKGQuZ2V0VmFyKCJEIiksIHBhdGgsIHNlcnZpY2UpKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGV4cG9ydC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0ZXhwb3J0LmJiY2xhc3MKaW5kZXggNTZlZGRhOS4uZDA3MGYwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0ZXhwb3J0LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0ZXhwb3J0LmJiY2xhc3MKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgIG9lLnBhdGgucmVtb3ZlKGNhc2VzX3BhdGgpCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKGNhc2VzX3BhdGgpCiAgICAgdGVzdF9wYXRocyA9IGdldF9ydW50aW1lX3BhdGhzKGQpCi0gICAgdGVzdF9tb2R1bGVzID0gZC5nZXRWYXIoJ1RFU1RfU1VJVEVTJykKKyAgICB0ZXN0X21vZHVsZXMgPSBkLmdldFZhcignVEVTVF9TVUlURVMnKS5zcGxpdCgpCiAgICAgdGMubG9hZFRlc3RzKHRlc3RfcGF0aHMsIG1vZHVsZXM9dGVzdF9tb2R1bGVzKQogICAgIGZvciBmIGluIGdldFN1aXRlQ2FzZXNGaWxlcyh0Yy5zdWl0ZXMpOgogICAgICAgICBzaHV0aWwuY29weTIoZiwgY2FzZXNfcGF0aCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCmluZGV4IGZiMjE0NjAuLjQ1YmIyYmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcwpAQCAtNywxMyArNywxMyBAQAogIyBNb3N0IG9mIHRoZSB0ZXN0cyBhcmUgY29tbWFuZHMgcnVuIG9uIHRhcmdldCBpbWFnZSBvdmVyIHNzaC4KICMgVG8gdXNlIGl0IGFkZCB0ZXN0aW1hZ2UgdG8gZ2xvYmFsIGluaGVyaXQgYW5kIGNhbGwgeW91ciB0YXJnZXQgaW1hZ2Ugd2l0aCAtYyB0ZXN0aW1hZ2UKICMgWW91IGNhbiB0cnkgaXQgb3V0IGxpa2UgdGhpczoKLSMgLSBmaXJzdCBidWlsZCBhIHFlbXUgY29yZS1pbWFnZS1zYXRvCi0jIC0gYWRkIElNQUdFX0NMQVNTRVMgKz0gInRlc3RpbWFnZSIgaW4gbG9jYWwuY29uZgorIyAtIGZpcnN0IGFkZCBJTUFHRV9DTEFTU0VTICs9ICJ0ZXN0aW1hZ2UiIGluIGxvY2FsLmNvbmYKKyMgLSBidWlsZCBhIHFlbXUgY29yZS1pbWFnZS1zYXRvCiAjIC0gdGhlbiBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0byAtYyB0ZXN0aW1hZ2UuIFRoYXQgd2lsbCBydW4gYSBzdGFuZGFyZCBzdWl0ZSBvZiB0ZXN0cy4KIAogIyBZb3UgY2FuIHNldCAob3IgYXBwZW5kIHRvKSBURVNUX1NVSVRFUyBpbiBsb2NhbC5jb25mIHRvIHNlbGVjdCB0aGUgdGVzdHMKICMgd2hpY2ggeW91IHdhbnQgdG8gcnVuIGZvciB5b3VyIHRhcmdldC4KLSMgVGhlIHRlc3QgbmFtZXMgYXJlIHRoZSBtb2R1bGUgbmFtZXMgaW4gbWV0YS9saWIvb2VxYS9ydW50aW1lLgorIyBUaGUgdGVzdCBuYW1lcyBhcmUgdGhlIG1vZHVsZSBuYW1lcyBpbiBtZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMuCiAjIEVhY2ggbmFtZSBpbiBURVNUX1NVSVRFUyByZXByZXNlbnRzIGEgcmVxdWlyZWQgdGVzdCBmb3IgdGhlIGltYWdlLiAobm8gc2tpcHBpbmcgYWxsb3dlZCkKICMgQXBwZW5kaW5nICJhdXRvIiBtZWFucyB0aGF0IGl0IHdpbGwgdHJ5IHRvIHJ1biBhbGwgdGVzdHMgdGhhdCBhcmUgc3VpdGFibGUgZm9yIHRoZSBpbWFnZSAoZWFjaCB0ZXN0IGRlY2lkZXMgdGhhdCBvbiBpdCdzIG93bikuCiAjIE5vdGUgdGhhdCBvcmRlciBpbiBURVNUX1NVSVRFUyBpcyByZWxldmFudDogdGVzdHMgYXJlIHJ1biBpbiBhbiBvcmRlciBzdWNoIHRoYXQKQEAgLTQ5LDEwICs0OSwxMCBAQAogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2Utc2F0byA9ICIke05FVFRFU1RTVUlURX0gY29ubm1hbiB4b3JnIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdweXRob24nLCAnJywgZCl9IgotREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXNhdG8tc2RrID0gIiR7TkVUVEVTVFNVSVRFfSBidWlsZGNwaW8gYnVpbGRpcHRhYmxlcyBidWlsZGdhbGN1bGF0b3IgXAorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXNhdG8tc2RrID0gIiR7TkVUVEVTVFNVSVRFfSBidWlsZGNwaW8gYnVpbGRsemlwIGJ1aWxkZ2FsY3VsYXRvciBcCiAgICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBlcmwgcGFyc2Vsb2dzIHB5dGhvbiAke1JQTVRFU1RTVUlURX0geG9yZyIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2ItZGV2ID0gIiR7TkVUVEVTVFNVSVRFfSBwYW0gcGVybCBweXRob24gcGFyc2Vsb2dzICR7UlBNVEVTVFNVSVRFfSIKLURFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2Itc2RrID0gIiR7TkVUVEVTVFNVSVRFfSBidWlsZGNwaW8gYnVpbGRpcHRhYmxlcyBidWlsZGdhbGN1bGF0b3IgXAorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGJ1aWxkY3BpbyBidWlsZGx6aXAgYnVpbGRnYWxjdWxhdG9yIFwKICAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGFtIHBhcnNlbG9ncyBwZXJsIHB5dGhvbiAke1JQTVRFU1RTVUlURX0iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLW1ldGEtdG9vbGNoYWluID0gImF1dG8iCiAKQEAgLTYxLDcgKzYxLDcgQEAKIAogIyBxZW11bWlwcyBpcyBxdWl0ZSBzbG93IGFuZCBoYXMgcmVhY2hlZCB0aGUgdGltZW91dCBsaW1pdCBzZXZlcmFsIHRpbWVzIG9uIHRoZSBZUCBidWlsZCBjbHVzdGVyLAogIyBtaXRpZ2F0ZSB0aGlzIGJ5IHJlbW92aW5nIGJ1aWxkIHRlc3RzIGZvciBxZW11bWlwcyBtYWNoaW5lcy4KLU1JUFNSRU1PVkUgPz89ICJidWlsZGNwaW8gYnVpbGRpcHRhYmxlcyBidWlsZGdhbGN1bGF0b3IiCitNSVBTUkVNT1ZFID8/PSAiYnVpbGRjcGlvIGJ1aWxkbHppcCBidWlsZGdhbGN1bGF0b3IiCiBERUZBVUxUX1RFU1RfU1VJVEVTX3JlbW92ZV9xZW11bWlwcyA9ICIke01JUFNSRU1PVkV9IgogREVGQVVMVF9URVNUX1NVSVRFU19yZW1vdmVfcWVtdW1pcHM2NCA9ICIke01JUFNSRU1PVkV9IgogCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAogICAgICMgdGhlIHJvYm90IGRhbmNlCiAgICAgdGFyZ2V0ID0gT0VSdW50aW1lVGVzdENvbnRleHRFeGVjdXRvci5nZXRUYXJnZXQoCi0gICAgICAgIGQuZ2V0VmFyKCJURVNUX1RBUkdFVCIpLCBOb25lLCBkLmdldFZhcigiVEVTVF9UQVJHRVRfSVAiKSwKKyAgICAgICAgZC5nZXRWYXIoIlRFU1RfVEFSR0VUIiksIGxvZ2dlciwgZC5nZXRWYXIoIlRFU1RfVEFSR0VUX0lQIiksCiAgICAgICAgIGQuZ2V0VmFyKCJURVNUX1NFUlZFUl9JUCIpLCAqKnRhcmdldF9rd2FyZ3MpCiAKICAgICAjIHRlc3QgY29udGV4dApAQCAtMjU3LDcgKzI1Nyw3IEBACiAKICAgICAjIExvYWQgdGVzdHMgYmVmb3JlIHN0YXJ0aW5nIHRoZSB0YXJnZXQKICAgICB0ZXN0X3BhdGhzID0gZ2V0X3J1bnRpbWVfcGF0aHMoZCkKLSAgICB0ZXN0X21vZHVsZXMgPSBkLmdldFZhcignVEVTVF9TVUlURVMnKQorICAgIHRlc3RfbW9kdWxlcyA9IGQuZ2V0VmFyKCdURVNUX1NVSVRFUycpLnNwbGl0KCkKICAgICB0Yy5sb2FkVGVzdHModGVzdF9wYXRocywgbW9kdWxlcz10ZXN0X21vZHVsZXMpCiAKICAgICBpZiBub3QgZ2V0U3VpdGVDYXNlcyh0Yy5zdWl0ZXMpOgpAQCAtMjkxLDExICsyOTEsMTEgQEAKIAogICAgICMgU2hvdyByZXN1bHRzIChpZiB3ZSBoYXZlIHRoZW0pCiAgICAgaWYgbm90IHJlc3VsdHM6Ci0gICAgICAgIGJiLmZhdGFsKCclcyAtIEZBSUxFRCAtIHRlc3RzIHdlcmUgaW50ZXJydXB0ZWQgZHVyaW5nIGV4ZWN1dGlvbicgJSBwbikKLSAgICB0Yy5sb2dTdW1tYXJ5KHJlc3VsdHMsIHBuKQotICAgIHRjLmxvZ0RldGFpbHMoKQorICAgICAgICBiYi5mYXRhbCgnJXMgLSBGQUlMRUQgLSB0ZXN0cyB3ZXJlIGludGVycnVwdGVkIGR1cmluZyBleGVjdXRpb24nICUgcG4sIGZvcmNlbG9nPVRydWUpCisgICAgcmVzdWx0cy5sb2dEZXRhaWxzKCkKKyAgICByZXN1bHRzLmxvZ1N1bW1hcnkocG4pCiAgICAgaWYgbm90IHJlc3VsdHMud2FzU3VjY2Vzc2Z1bCgpOgotICAgICAgICBiYi5mYXRhbCgnJXMgLSBGQUlMRUQgLSBjaGVjayB0aGUgdGFzayBsb2cgYW5kIHRoZSBzc2ggbG9nJyAlIHBuKQorICAgICAgICBiYi5mYXRhbCgnJXMgLSBGQUlMRUQgLSBjaGVjayB0aGUgdGFzayBsb2cgYW5kIHRoZSBzc2ggbG9nJyAlIHBuLCBmb3JjZWxvZz1UcnVlKQogCiBkZWYgZ2V0X3J1bnRpbWVfcGF0aHMoZCk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdHNkay5iYmNsYXNzCmluZGV4IDZhMjAxYWEuLjZiNTFhMzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdHNkay5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdHNkay5iYmNsYXNzCkBAIC0yMSwxMCArMjEsMTEgQEAKICAgICBpbXBvcnQgbG9nZ2luZwogCiAgICAgZnJvbSBiYi51dGlscyBpbXBvcnQgZXhwb3J0X3Byb3hpZXMKLSAgICBmcm9tIG9lcWEuY29yZS5ydW5uZXIgaW1wb3J0IE9FU3RyZWFtTG9nZ2VyCiAgICAgZnJvbSBvZXFhLnNkay5jb250ZXh0IGltcG9ydCBPRVNES1Rlc3RDb250ZXh0LCBPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IKICAgICBmcm9tIG9lcWEudXRpbHMgaW1wb3J0IG1ha2VfbG9nZ2VyX2JpdGJha2VfY29tcGF0aWJsZQogCisgICAgYmIuZXZlbnQuZW5hYmxlX3RocmVhZGxvY2soKQorCiAgICAgcG4gPSBkLmdldFZhcigiUE4iKQogICAgIGxvZ2dlciA9IG1ha2VfbG9nZ2VyX2JpdGJha2VfY29tcGF0aWJsZShsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZSIpKQogCkBAIC03MSw4ICs3Miw4IEBACiAgICAgICAgIGNvbXBvbmVudCA9ICIlcyAlcyIgJSAocG4sIE9FU0RLVGVzdENvbnRleHRFeGVjdXRvci5uYW1lKQogICAgICAgICBjb250ZXh0X21zZyA9ICIlczolcyIgJSAob3MucGF0aC5iYXNlbmFtZSh0Y25hbWUpLCBvcy5wYXRoLmJhc2VuYW1lKHNka19lbnYpKQogCi0gICAgICAgIHRjLmxvZ1N1bW1hcnkocmVzdWx0LCBjb21wb25lbnQsIGNvbnRleHRfbXNnKQotICAgICAgICB0Yy5sb2dEZXRhaWxzKCkKKyAgICAgICAgcmVzdWx0LmxvZ0RldGFpbHMoKQorICAgICAgICByZXN1bHQubG9nU3VtbWFyeShjb21wb25lbnQsIGNvbnRleHRfbXNnKQogCiAgICAgICAgIGlmIG5vdCByZXN1bHQud2FzU3VjY2Vzc2Z1bCgpOgogICAgICAgICAgICAgZmFpbCA9IFRydWUKQEAgLTk4LDYgKzk5LDggQEAKICAgICBmcm9tIG9lcWEudXRpbHMgaW1wb3J0IGF2b2lkX3BhdGhzX2luX2Vudmlyb24sIG1ha2VfbG9nZ2VyX2JpdGJha2VfY29tcGF0aWJsZSwgc3VicHJvY2Vzc3R3ZWFrCiAgICAgZnJvbSBvZXFhLnNka2V4dC5jb250ZXh0IGltcG9ydCBPRVNES0V4dFRlc3RDb250ZXh0LCBPRVNES0V4dFRlc3RDb250ZXh0RXhlY3V0b3IKIAorICAgIGJiLmV2ZW50LmVuYWJsZV90aHJlYWRsb2NrKCkKKwogICAgIHBuID0gZC5nZXRWYXIoIlBOIikKICAgICBsb2dnZXIgPSBtYWtlX2xvZ2dlcl9iaXRiYWtlX2NvbXBhdGlibGUobG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UiKSkKIApAQCAtMTczLDggKzE3Niw4IEBACiAgICAgICAgIGNvbXBvbmVudCA9ICIlcyAlcyIgJSAocG4sIE9FU0RLRXh0VGVzdENvbnRleHRFeGVjdXRvci5uYW1lKQogICAgICAgICBjb250ZXh0X21zZyA9ICIlczolcyIgJSAob3MucGF0aC5iYXNlbmFtZSh0Y25hbWUpLCBvcy5wYXRoLmJhc2VuYW1lKHNka19lbnYpKQogCi0gICAgICAgIHRjLmxvZ1N1bW1hcnkocmVzdWx0LCBjb21wb25lbnQsIGNvbnRleHRfbXNnKQotICAgICAgICB0Yy5sb2dEZXRhaWxzKCkKKyAgICAgICAgcmVzdWx0LmxvZ0RldGFpbHMoKQorICAgICAgICByZXN1bHQubG9nU3VtbWFyeShjb21wb25lbnQsIGNvbnRleHRfbXNnKQogCiAgICAgICAgIGlmIG5vdCByZXN1bHQud2FzU3VjY2Vzc2Z1bCgpOgogICAgICAgICAgICAgZmFpbCA9IFRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcwppbmRleCAyNjBlY2U5Li45YmNmZTcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCkBAIC0zLDcgKzMsNiBAQAogIyBXZSB3YW50IHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBNVUxUSU1BQ0hfVEFSR0VUX1NZUywgYmVjYXVzZSBpdAogIyBkb2Vzbid0IGFsd2F5cyBtYXRjaCBvdXIgZXhwZWN0YXRpb25zLi4uIGJ1dCB3ZSBkZWZhdWx0IHRvIHRoZSBzdG9jayB2YWx1ZQogUkVBTF9NVUxUSU1BQ0hfVEFSR0VUX1NZUyA/PSAiJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU30iCi1UQVJHRVRfQ0NfQVJDSF9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1tdWNsaWJjIgogVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLW1tdXNsIgogCiAjIGRlZmF1bHQgZGVidWcgcHJlZml4IG1hcCBpc24ndCB2YWxpZCBpbiB0aGUgU0RLCkBAIC0yNSw2ICsyNCwyMSBAQAogCXNjcmlwdD0kezE6LSR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9lbnZpcm9ubWVudC1zZXR1cC0kbXVsdGltYWNoX3RhcmdldF9zeXN9CiAJcm0gLWYgJHNjcmlwdAogCXRvdWNoICRzY3JpcHQKKworCWVjaG8gJyMgQ2hlY2sgZm9yIExEX0xJQlJBUllfUEFUSCBiZWluZyBzZXQsIHdoaWNoIGNhbiBicmVhayBTREsgYW5kIGdlbmVyYWxseSBpcyBhIGJhZCBwcmFjdGljZScgPj4gJHNjcmlwdAorCWVjaG8gJyMgaHR0cDovL3RsZHAub3JnL0hPV1RPL1Byb2dyYW0tTGlicmFyeS1IT1dUTy9zaGFyZWQtbGlicmFyaWVzLmh0bWwjQUVOODAnID4+ICRzY3JpcHQKKwllY2hvICcjIGh0dHA6Ly94YWhsZWUuaW5mby9Vbml4UmVzb3VyY2VfZGlyL18vbGRwYXRoLmh0bWwnID4+ICRzY3JpcHQKKwllY2hvICcjIE9ubHkgZGlzYWJsZSB0aGlzIGNoZWNrIGlmIHlvdSBhcmUgYWJzb2x1dGVseSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyEnID4+ICRzY3JpcHQKKwllY2hvICdpZiBbICEgLXogIiRMRF9MSUJSQVJZX1BBVEgiIF07IHRoZW4nID4+ICRzY3JpcHQKKwllY2hvICIgICAgZWNobyBcIllvdXIgZW52aXJvbm1lbnQgaXMgbWlzY29uZmlndXJlZCwgeW91IHByb2JhYmx5IG5lZWQgdG8gJ3Vuc2V0IExEX0xJQlJBUllfUEFUSCdcIiIgPj4gJHNjcmlwdAorCWVjaG8gIiAgICBlY2hvIFwiYnV0IHBsZWFzZSBjaGVjayB3aHkgdGhpcyB3YXMgc2V0IGluIHRoZSBmaXJzdCBwbGFjZSBhbmQgdGhhdCBpdCdzIHNhZmUgdG8gdW5zZXQuXCIiID4+ICRzY3JpcHQKKwllY2hvICcgICAgZWNobyAiVGhlIFNESyB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseSBpbiBtb3N0IGNhc2VzIHdoZW4gTERfTElCUkFSWV9QQVRIIGlzIHNldC4iJyA+PiAkc2NyaXB0CisJZWNobyAnICAgIGVjaG8gIkZvciBtb3JlIHJlZmVyZW5jZXMgc2VlOiInID4+ICRzY3JpcHQKKwllY2hvICcgICAgZWNobyAiICBodHRwOi8vdGxkcC5vcmcvSE9XVE8vUHJvZ3JhbS1MaWJyYXJ5LUhPV1RPL3NoYXJlZC1saWJyYXJpZXMuaHRtbCNBRU44MCInID4+ICRzY3JpcHQKKwllY2hvICcgICAgZWNobyAiICBodHRwOi8veGFobGVlLmluZm8vVW5peFJlc291cmNlX2Rpci9fL2xkcGF0aC5odG1sIicgPj4gJHNjcmlwdAorCWVjaG8gJyAgICByZXR1cm4gMScgPj4gJHNjcmlwdAorCWVjaG8gJ2ZpJyA+PiAkc2NyaXB0CisKIAllY2hvICdleHBvcnQgU0RLVEFSR0VUU1lTUk9PVD0nIiRzeXNyb290IiA+PiAkc2NyaXB0CiAJRVhUUkFQQVRIPSIiCiAJZm9yIGkgaW4gJHtDQU5BRElBTkVYVFJBT1N9OyBkbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MKaW5kZXggMTAwMTNiNy4uNTMzZTE3NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzCkBAIC0yMCwyNCArMjAsMjEgQEAKICAgICB1Ym9vdGJpbmFyaWVzID0gZC5nZXRWYXIoJ1VCT09UX0JJTkFSSUVTJykKICAgICAjIFRoZSAiZG9jIiB2YXJmbGFnIGlzIHNwZWNpYWwsIHdlIGRvbid0IHdhbnQgdG8gc2VlIGl0IGhlcmUKICAgICB1Ym9vdGNvbmZpZ2ZsYWdzLnBvcCgnZG9jJywgTm9uZSkKKyAgICB1Ym9vdGNvbmZpZyA9IChkLmdldFZhcignVUJPT1RfQ09ORklHJykgb3IgIiIpLnNwbGl0KCkKIAotICAgIGlmIG5vdCB1Ym9vdG1hY2hpbmUgYW5kIG5vdCB1Ym9vdGNvbmZpZ2ZsYWdzOgorICAgIGlmIG5vdCB1Ym9vdG1hY2hpbmUgYW5kIG5vdCB1Ym9vdGNvbmZpZzoKICAgICAgICAgUE4gPSBkLmdldFZhcigiUE4iKQogICAgICAgICBGSUxFID0gb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcigiRklMRSIpKQogICAgICAgICBiYi5kZWJ1ZygxLCAiVG8gYnVpbGQgJXMsIHNlZSAlcyBmb3IgaW5zdHJ1Y3Rpb25zIG9uIFwKICAgICAgICAgICAgICAgICAgc2V0dGluZyB1cCB5b3VyIG1hY2hpbmUgY29uZmlnIiAlIChQTiwgRklMRSkpCiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJFaXRoZXIgVUJPT1RfTUFDSElORSBvciBVQk9PVF9DT05GSUcgbXVzdCBiZSBzZXQgaW4gdGhlICVzIG1hY2hpbmUgY29uZmlndXJhdGlvbi4iICUgZC5nZXRWYXIoIk1BQ0hJTkUiKSkKIAotICAgIGlmIHVib290bWFjaGluZSBhbmQgdWJvb3Rjb25maWdmbGFnczoKKyAgICBpZiB1Ym9vdG1hY2hpbmUgYW5kIHVib290Y29uZmlnOgogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiWW91IGNhbm5vdCB1c2UgVUJPT1RfTUFDSElORSBhbmQgVUJPT1RfQ09ORklHIGF0IHRoZSBzYW1lIHRpbWUuIikKIAogICAgIGlmIHVib290Y29uZmlnZmxhZ3MgYW5kIHVib290YmluYXJpZXM6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJZb3UgY2Fubm90IHVzZSBVQk9PVF9CSU5BUklFUyBhcyBpdCBpcyBpbnRlcm5hbCB0byB1Ym9vdF9jb25maWcuYmJjbGFzcy4iKQogCi0gICAgaWYgbm90IHVib290Y29uZmlnZmxhZ3M6Ci0gICAgICAgIHJldHVybgotCi0gICAgdWJvb3Rjb25maWcgPSAoZC5nZXRWYXIoJ1VCT09UX0NPTkZJRycpIG9yICIiKS5zcGxpdCgpCiAgICAgaWYgbGVuKHVib290Y29uZmlnKSA+IDA6CiAgICAgICAgIGZvciBjb25maWcgaW4gdWJvb3Rjb25maWc6CiAgICAgICAgICAgICBmb3IgZiwgdiBpbiB1Ym9vdGNvbmZpZ2ZsYWdzLml0ZW1zKCk6CkBAIC01Nyw2ICs1NCw0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiQXBwZW5kaW5nICclcycgdG8gVUJPT1RfQklOQVJJRVMuIiAlIHVib290YmluYXJ5KQogICAgICAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1VCT09UX0JJTkFSSUVTJywgJyAnICsgdWJvb3RiaW5hcnkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgZWxpZiBsZW4odWJvb3Rjb25maWcpID09IDA6Ci0gICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoJ1lvdSBtdXN0IHNldCBhIGRlZmF1bHQgaW4gVUJPT1RfQ09ORklHLicpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWV4dGxpbnV4LWNvbmZpZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1leHRsaW51eC1jb25maWcuYmJjbGFzcwppbmRleCA4NDQ3YTA0Li42MWRmZjE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWV4dGxpbnV4LWNvbmZpZy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKQEAgLTY4LDcgKzY4LDcgQEAKIAogVUJPT1RfRVhUTElOVVhfQ09ORklHID0gIiR7Qn0vZXh0bGludXguY29uZiIKIAotcHl0aG9uIGNyZWF0ZV9leHRsaW51eF9jb25maWcoKSB7CitweXRob24gZG9fY3JlYXRlX2V4dGxpbnV4X2NvbmZpZygpIHsKICAgICBpZiBkLmdldFZhcigiVUJPT1RfRVhUTElOVVgiKSAhPSAiMSI6CiAgICAgICByZXR1cm4KIApAQCAtMTQ5LDQgKzE0OSw0IEBACiAgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSAoY2ZpbGUpKQogfQogCi1kb19pbnN0YWxsW3ByZWZ1bmNzXSArPSAiY3JlYXRlX2V4dGxpbnV4X2NvbmZpZyIKK2FkZHRhc2sgY3JlYXRlX2V4dGxpbnV4X2NvbmZpZyBiZWZvcmUgZG9faW5zdGFsbCBkb19kZXBsb3kgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKaW5kZXggOGYzNDQ4My4uNjcwZWZhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCkBAIC00OSw2ICs0OSwxMiBAQAogICAgICAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdGSUxFU1BBVEgnLCAiIikKICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0RMX0RJUicsIHRhcmJhbGxkaXIpCisgICAgICAgICAgICAjIE91ciBnYW1lcyB3aXRoIHBhdGggbWFuaXB1bGF0aW9uIG9mIERMX0RJUiBtZWFuIHN0YW5kYXJkIFBSRU1JUlJPUlMgZG9uJ3Qgd29yaworICAgICAgICAgICAgIyBhbmQgd2UgY2FuJ3QgZWFzaWx5IHB1dCAnY2hrc3VtJyBpbnRvIHRoZSB1cmwgcGF0aCBmcm9tIGEgdXJsIHBhcmFtZXRlciB3aXRoCisgICAgICAgICAgICAjIHRoZSBjdXJyZW50IGZldGNoZXIgdXJsIGhhbmRsaW5nCisgICAgICAgICAgICBvd25taXJyb3IgPSBkLmdldFZhcignU09VUkNFX01JUlJPUl9VUkwnKQorICAgICAgICAgICAgaWYgb3dubWlycm9yOgorICAgICAgICAgICAgICAgIGxvY2FsZGF0YS5hcHBlbmRWYXIoIlBSRU1JUlJPUlMiLCAiICR7VU5JTkFUSVZFX1VSTH0ke1VOSU5BVElWRV9UQVJCQUxMfSAke1NPVVJDRV9NSVJST1JfVVJMfS91bmluYXRpdmUvJXMvJHtVTklOQVRJVkVfVEFSQkFMTH0iICUgY2hrc3VtKQogCiAgICAgICAgICAgICBzcmN1cmkgPSBkLmV4cGFuZCgiJHtVTklOQVRJVkVfVVJMfSR7VU5JTkFUSVZFX1RBUkJBTEx9O3NoYTI1NnN1bT0lcyIgJSBjaGtzdW0pCiAgICAgICAgICAgICBiYi5ub3RlKCJGZXRjaGluZyB1bmluYXRpdmUgYmluYXJ5IHNoaW0gZnJvbSAlcyIgJSBzcmN1cmkpCkBAIC01Nyw3ICs2MywxOSBAQAogICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCiAgICAgICAgICAgICBsb2NhbHBhdGggPSBmZXRjaGVyLmxvY2FscGF0aChzcmN1cmkpCiAgICAgICAgICAgICBpZiBsb2NhbHBhdGggIT0gdGFyYmFsbHBhdGggYW5kIG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCkgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyh0YXJiYWxscGF0aCk6CisgICAgICAgICAgICAgICAgIyBGb2xsb3cgdGhlIHN5bWxpbmsgYmVoYXZpb3IgZnJvbSB0aGUgYml0YmFrZSBmZXRjaDIuCisgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgY292ZXIgdGhlIGNhc2Ugd2hlcmUgYW4gZXhpc3Rpbmcgc3ltbGluayBpcyBicm9rZW4KKyAgICAgICAgICAgICAgICAjIGFzIHdlbGwgYXMgaWYgdGhlcmUgYXJlIHR3byBwcm9jZXNzZXMgdHJ5aW5nIHRvIGNyZWF0ZSBpdAorICAgICAgICAgICAgICAgICMgYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayh0YXJiYWxscGF0aCk6CisgICAgICAgICAgICAgICAgICAgICMgQnJva2VuIHN5bWJvbGljIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKHRhcmJhbGxwYXRoKQorCisgICAgICAgICAgICAgICAgIyBEZWFsIHdpdGggdHdvIHByb2Nlc3NlcyB0cnlpbmcgdG8gbWFrZSBzeW1saW5rIGF0IG9uY2UKKyAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsobG9jYWxwYXRoLCB0YXJiYWxscGF0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgY21kID0gZC5leHBhbmQoIlwKIG1rZGlyIC1wICR7VU5JTkFUSVZFX1NUQUdJTkdfRElSfS11bmluYXRpdmU7IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MKaW5kZXggNGJiYTc2Yy4uYWEwMTA1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtYWx0ZXJuYXRpdmVzLmJiY2xhc3MKQEAgLTE0Myw2ICsxNDMsMTAgQEAKICAgICAgICAgICAgIGlmIG5vdCBhbHRfbGluazoKICAgICAgICAgICAgICAgICBhbHRfbGluayA9ICIlcy8lcyIgJSAoZC5nZXRWYXIoJ2JpbmRpcicpLCBhbHRfbmFtZSkKICAgICAgICAgICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIGFsdF9uYW1lLCBhbHRfbGluaykKKyAgICAgICAgICAgIGlmIGFsdF9saW5rLnN0YXJ0c3dpdGgob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdzeXNjb25mZGlyJywgVHJ1ZSksICdpbml0LmQnKSk6CisgICAgICAgICAgICAgICAgIyBNYW5hZ2luZyBpbml0IHNjcmlwdHMgZG9lcyBub3Qgd29yayAoYnVnICMxMDQzMyksIGZvcmVtb3N0CisgICAgICAgICAgICAgICAgIyBiZWNhdXNlIG9mIGEgcmFjZSB3aXRoIHVwZGF0ZS1yYy5kCisgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlVzaW5nIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZm9yIG1hbmFnaW5nIFN5c1YgaW5pdCBzY3JpcHRzIGlzIG5vdCBzdXBwb3J0ZWQiKQogCiAgICAgICAgICAgICBhbHRfdGFyZ2V0ICAgPSBkLmdldFZhckZsYWcoJ0FMVEVSTkFUSVZFX1RBUkdFVF8lcycgJSBwa2csIGFsdF9uYW1lKSBvciBkLmdldFZhckZsYWcoJ0FMVEVSTkFUSVZFX1RBUkdFVCcsIGFsdF9uYW1lKQogICAgICAgICAgICAgYWx0X3RhcmdldCAgID0gYWx0X3RhcmdldCBvciBkLmdldFZhcignQUxURVJOQVRJVkVfVEFSR0VUXyVzJyAlIHBrZykgb3IgZC5nZXRWYXIoJ0FMVEVSTkFUSVZFX1RBUkdFVCcpIG9yIGFsdF9saW5rCkBAIC0yMDEsOCArMjA1LDggQEAKICAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0QnKQogICAgIGZvciBwa2cgaW4gKGQuZ2V0VmFyKCdQQUNLQUdFUycpIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAjIENyZWF0ZSBwb3N0IGluc3RhbGwvcmVtb3ZhbCBzY3JpcHRzCi0gICAgICAgIGFsdF9zZXR1cF9saW5rcyA9ICIjIEJlZ2luIHNlY3Rpb24gdXBkYXRlLWFsdGVybmF0aXZlc1xuIgotICAgICAgICBhbHRfcmVtb3ZlX2xpbmtzID0gIiMgQmVnaW4gc2VjdGlvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzXG4iCisgICAgICAgIGFsdF9zZXR1cF9saW5rcyA9ICIiCisgICAgICAgIGFsdF9yZW1vdmVfbGlua3MgPSAiIgogICAgICAgICBmb3IgYWx0X25hbWUgaW4gKGQuZ2V0VmFyKCdBTFRFUk5BVElWRV8lcycgJSBwa2cpIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAgICAgYWx0X2xpbmsgICAgID0gZC5nZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBhbHRfbmFtZSkKICAgICAgICAgICAgIGFsdF90YXJnZXQgICA9IGQuZ2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUXyVzJyAlIHBrZywgYWx0X25hbWUpIG9yIGQuZ2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUJywgYWx0X25hbWUpCkBAIC0yMjUsMTMgKzIyOSwxMCBAQAogICAgICAgICAgICAgIyBEZWZhdWx0IHRvIGdlbmVyYXRlIHNoZWxsIHNjcmlwdC4uIGV2ZW50dWFsbHkgd2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMuLi4KICAgICAgICAgICAgIGFsdF90YXJnZXQgPSBvcy5wYXRoLm5vcm1wYXRoKGFsdF90YXJnZXQpCiAKLSAgICAgICAgICAgIGFsdF9zZXR1cF9saW5rcyAgKz0gJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1pbnN0YWxsICVzICVzICVzICVzXG4nICUgKGFsdF9saW5rLCBhbHRfbmFtZSwgYWx0X3RhcmdldCwgYWx0X3ByaW9yaXR5KQotICAgICAgICAgICAgYWx0X3JlbW92ZV9saW5rcyArPSAndXBkYXRlLWFsdGVybmF0aXZlcyAtLXJlbW92ZSAgJXMgJXNcbicgJSAoYWx0X25hbWUsIGFsdF90YXJnZXQpCisgICAgICAgICAgICBhbHRfc2V0dXBfbGlua3MgICs9ICdcdHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1pbnN0YWxsICVzICVzICVzICVzXG4nICUgKGFsdF9saW5rLCBhbHRfbmFtZSwgYWx0X3RhcmdldCwgYWx0X3ByaW9yaXR5KQorICAgICAgICAgICAgYWx0X3JlbW92ZV9saW5rcyArPSAnXHR1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tcmVtb3ZlICAlcyAlc1xuJyAlIChhbHRfbmFtZSwgYWx0X3RhcmdldCkKIAotICAgICAgICBhbHRfc2V0dXBfbGlua3MgKz0gIiMgRW5kIHNlY3Rpb24gdXBkYXRlLWFsdGVybmF0aXZlc1xuIgotICAgICAgICBhbHRfcmVtb3ZlX2xpbmtzICs9ICIjIEVuZCBzZWN0aW9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXNcbiIKLQotICAgICAgICBpZiBsZW4oYWx0X3NldHVwX2xpbmtzLnNwbGl0bGluZXMoKSkgPiAyOgorICAgICAgICBpZiBhbHRfc2V0dXBfbGlua3M6CiAgICAgICAgICAgICAjIFJERVBFTkRTIHNldHVwCiAgICAgICAgICAgICBwcm92aWRlciA9IGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlcycpCiAgICAgICAgICAgICBpZiBwcm92aWRlcjoKQEAgLTI0MSwyNCArMjQyLDEyIEBACiAgICAgICAgICAgICBiYi5ub3RlKCdhZGRpbmcgdXBkYXRlLWFsdGVybmF0aXZlcyBjYWxscyB0byBwb3N0aW5zdC9wcmVybSBmb3IgJXMnICUgcGtnKQogICAgICAgICAgICAgYmIubm90ZSgnJXMnICUgYWx0X3NldHVwX2xpbmtzKQogICAgICAgICAgICAgcG9zdGluc3QgPSBkLmdldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZykgb3IgJyMhL2Jpbi9zaFxuJwotICAgICAgICAgICAgcG9zdGluc3QgPSBwb3N0aW5zdC5zcGxpdGxpbmVzKFRydWUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBwb3N0aW5zdC5pbmRleCgnIyBCZWdpbiBzZWN0aW9uIHVwZGF0ZS1yYy5kXG4nKQotICAgICAgICAgICAgICAgIHBvc3RpbnN0Lmluc2VydChpbmRleCwgYWx0X3NldHVwX2xpbmtzKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcG9zdGluc3QuYXBwZW5kKGFsdF9zZXR1cF9saW5rcykKLSAgICAgICAgICAgIHBvc3RpbnN0ID0gJycuam9pbihwb3N0aW5zdCkKKyAgICAgICAgICAgIHBvc3RpbnN0ICs9IGFsdF9zZXR1cF9saW5rcwogICAgICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2csIHBvc3RpbnN0KQogCiAgICAgICAgICAgICBiYi5ub3RlKCclcycgJSBhbHRfcmVtb3ZlX2xpbmtzKQogICAgICAgICAgICAgcHJlcm0gPSBkLmdldFZhcigncGtnX3ByZXJtXyVzJyAlIHBrZykgb3IgJyMhL2Jpbi9zaFxuJwotICAgICAgICAgICAgcHJlcm0gPSBwcmVybS5zcGxpdGxpbmVzKFRydWUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBwcmVybS5pbmRleCgnIyBFbmQgc2VjdGlvbiB1cGRhdGUtcmMuZFxuJykKLSAgICAgICAgICAgICAgICBwcmVybS5pbnNlcnQoaW5kZXggKyAxLCBhbHRfcmVtb3ZlX2xpbmtzKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcHJlcm0uYXBwZW5kKGFsdF9yZW1vdmVfbGlua3MpCi0gICAgICAgICAgICBwcmVybSA9ICcnLmpvaW4ocHJlcm0pCisgICAgICAgICAgICBwcmVybSArPSBhbHRfcmVtb3ZlX2xpbmtzCiAgICAgICAgICAgICBkLnNldFZhcigncGtnX3ByZXJtXyVzJyAlIHBrZywgcHJlcm0pCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLXJjLmQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLXJjLmQuYmJjbGFzcwppbmRleCA5YmEzZGFjLi5lMWUwZTA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtcmMuZC5iYmNsYXNzCkBAIC0zNyw3ICszNyw2IEBACiBQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInVwZGF0ZS1yYy5kLW5hdGl2ZSIKIAogdXBkYXRlcmNkX3Bvc3RpbnN0KCkgewotIyBCZWdpbiBzZWN0aW9uIHVwZGF0ZS1yYy5kCiBpZiAke0B1c2VfdXBkYXRlcmNkKGQpfSAmJiB0eXBlIHVwZGF0ZS1yYy5kID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KIAlpZiBbIC1uICIkRCIgXTsgdGhlbgogCQlPUFQ9Ii1yICREIgpAQCAtNDYsMTUgKzQ1LDEyIEBACiAJZmkKIAl1cGRhdGUtcmMuZCAkT1BUICR7SU5JVFNDUklQVF9OQU1FfSAke0lOSVRTQ1JJUFRfUEFSQU1TfQogZmkKLSMgRW5kIHNlY3Rpb24gdXBkYXRlLXJjLmQKIH0KIAogdXBkYXRlcmNkX3ByZXJtKCkgewotIyBCZWdpbiBzZWN0aW9uIHVwZGF0ZS1yYy5kCiBpZiAke0B1c2VfdXBkYXRlcmNkKGQpfSAmJiBbIC16ICIkRCIgLWEgLXggIiR7SU5JVF9EX0RJUn0vJHtJTklUU0NSSVBUX05BTUV9IiBdOyB0aGVuCiAJJHtJTklUX0RfRElSfS8ke0lOSVRTQ1JJUFRfTkFNRX0gc3RvcCB8fCA6CiBmaQotIyBFbmQgc2VjdGlvbiB1cGRhdGUtcmMuZAogfQogCiB1cGRhdGVyY2RfcG9zdHJtKCkgewpAQCAtOTUsOCArOTEsNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHN0YXRlbWVudCA9ICJncmVwIC1xIC13ICcvZXRjL2luaXQuZC9mdW5jdGlvbnMnICVzIiAlIHBhdGgKICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKHN0YXRlbWVudCwgc2hlbGw9VHJ1ZSkgPT0gMDoKLSAgICAgICAgICAgIG1scHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJykgb3IgIiIKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAnICVzaW5pdHNjcmlwdHMtZnVuY3Rpb25zJyAlIChtbHByZWZpeCkpCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBrZywgJyBpbml0ZC1mdW5jdGlvbnMnKQogCiAgICAgZGVmIHVwZGF0ZV9yY2RfcGFja2FnZShwa2cpOgogICAgICAgICBiYi5kZWJ1ZygxLCAnYWRkaW5nIHVwZGF0ZS1yYy5kIGNhbGxzIHRvIHByZWluc3QvcG9zdGluc3QvcHJlcm0vcG9zdHJtIGZvciAlcycgJSBwa2cpCkBAIC0xMTYsMjUgKzExMSwxMyBAQAogICAgICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnKQogICAgICAgICBpZiBub3QgcG9zdGluc3Q6CiAgICAgICAgICAgICBwb3N0aW5zdCA9ICcjIS9iaW4vc2hcbicKLSAgICAgICAgcG9zdGluc3QgPSBwb3N0aW5zdC5zcGxpdGxpbmVzKFRydWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGluZGV4ID0gcG9zdGluc3QuaW5kZXgoJyMgRW5kIHNlY3Rpb24gdXBkYXRlLWFsdGVybmF0aXZlc1xuJykKLSAgICAgICAgICAgIHBvc3RpbnN0Lmluc2VydChpbmRleCArIDEsIGxvY2FsZGF0YS5nZXRWYXIoJ3VwZGF0ZXJjZF9wb3N0aW5zdCcpKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBvc3RpbnN0LmFwcGVuZChsb2NhbGRhdGEuZ2V0VmFyKCd1cGRhdGVyY2RfcG9zdGluc3QnKSkKLSAgICAgICAgcG9zdGluc3QgPSAnJy5qb2luKHBvc3RpbnN0KQorICAgICAgICBwb3N0aW5zdCArPSBsb2NhbGRhdGEuZ2V0VmFyKCd1cGRhdGVyY2RfcG9zdGluc3QnKQogICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZywgcG9zdGluc3QpCiAKICAgICAgICAgcHJlcm0gPSBkLmdldFZhcigncGtnX3ByZXJtXyVzJyAlIHBrZykKICAgICAgICAgaWYgbm90IHByZXJtOgogICAgICAgICAgICAgcHJlcm0gPSAnIyEvYmluL3NoXG4nCi0gICAgICAgIHByZXJtID0gcHJlcm0uc3BsaXRsaW5lcyhUcnVlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbmRleCA9IHByZXJtLmluZGV4KCcjIEJlZ2luIHNlY3Rpb24gdXBkYXRlLWFsdGVybmF0aXZlc1xuJykKLSAgICAgICAgICAgIHByZXJtLmluc2VydChpbmRleCwgbG9jYWxkYXRhLmdldFZhcigndXBkYXRlcmNkX3ByZXJtJykpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcHJlcm0uYXBwZW5kKGxvY2FsZGF0YS5nZXRWYXIoJ3VwZGF0ZXJjZF9wcmVybScpKQotICAgICAgICBwcmVybSA9ICcnLmpvaW4ocHJlcm0pCisgICAgICAgIHByZXJtICs9IGxvY2FsZGF0YS5nZXRWYXIoJ3VwZGF0ZXJjZF9wcmVybScpCiAgICAgICAgIGQuc2V0VmFyKCdwa2dfcHJlcm1fJXMnICUgcGtnLCBwcmVybSkKIAogICAgICAgICBwb3N0cm0gPSBkLmdldFZhcigncGtnX3Bvc3RybV8lcycgJSBwa2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MKaW5kZXggNmViZjc2MC4uNTg5YTk5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC1zdGF0aWNpZHMuYmJjbGFzcwpAQCAtMSwyMiArMSwxMCBAQAogIyBJbiBvcmRlciB0byBzdXBwb3J0IGEgZGV0ZXJtaW5pc3RpYyBzZXQgb2YgJ2R5bmFtaWMnIHVzZXJzL2dyb3VwcywKICMgd2UgbmVlZCBhIGZ1bmN0aW9uIHRvIHJlZm9ybWF0IHRoZSBwYXJhbXMgYmFzZWQgb24gYSBzdGF0aWMgZmlsZQogZGVmIHVwZGF0ZV91c2VyYWRkX3N0YXRpY19jb25maWcoZCk6Ci0gICAgaW1wb3J0IGFyZ3BhcnNlCiAgICAgaW1wb3J0IGl0ZXJ0b29scwogICAgIGltcG9ydCByZQogICAgIGltcG9ydCBlcnJubwotCi0gICAgY2xhc3MgbXlBcmd1bWVudFBhcnNlciggYXJncGFyc2UuQXJndW1lbnRQYXJzZXIgKToKLSAgICAgICAgZGVmIF9wcmludF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGZpbGU9Tm9uZSk6Ci0gICAgICAgICAgICBiYi53YXJuKCIlcyAtICVzOiAlcyIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgbWVzc2FnZSkpCi0KLSAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQuLi4KLSAgICAgICAgZGVmIGV4aXQoc2VsZiwgc3RhdHVzPTAsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSBvciAoIiVzIC0gJXM6IHVzZXJhZGQuYmJjbGFzczogQXJndW1lbnQgcGFyc2luZyBleGl0ZWQiICUgKGQuZ2V0VmFyKCdQTicpLCBwa2cpKQotICAgICAgICAgICAgZXJyb3IobWVzc2FnZSkKLQotICAgICAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICAgICBiYi5mYXRhbChtZXNzYWdlKQorICAgIGltcG9ydCBvZS51c2VyYWRkCiAKICAgICBkZWYgbGlzdF9leHRlbmQoaXRlcmFibGUsIGxlbmd0aCwgb2JqID0gTm9uZSk6CiAgICAgICAgICIiIkVuc3VyZSB0aGF0IGl0ZXJhYmxlIGlzIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIGJ5IGV4dGVuZGluZyB3aXRoIG9iagpAQCAtNTAsNjIgKzM4LDQ0IEBACiAKICAgICAgICAgcmV0dXJuIGlkX3RhYmxlCiAKLSAgICBkZWYgaGFuZGxlX21pc3NpbmdfaWQoaWQsIHR5cGUsIHBrZyk6CisgICAgZGVmIGhhbmRsZV9taXNzaW5nX2lkKGlkLCB0eXBlLCBwa2csIGZpbGVzLCB2YXIsIHZhbHVlKToKICAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2UgYWNjZXB0ICIxIiBpbiBhZGRpdGlvbiB0byAiZXJyb3IiCi0gICAgICAgIGlmIGQuZ2V0VmFyKCdVU0VSQUREX0VSUk9SX0RZTkFNSUMnKSA9PSAnZXJyb3InIG9yIGQuZ2V0VmFyKCdVU0VSQUREX0VSUk9SX0RZTkFNSUMnKSA9PSAnMSc6Ci0gICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCIlcyAtICVzOiAlc25hbWUgJXMgZG9lcyBub3QgaGF2ZSBhIHN0YXRpYyBJRCBkZWZpbmVkLiBTa2lwcGluZyBpdC4iICUgKGQuZ2V0VmFyKCdQTicpLCBwa2csIHR5cGUsIGlkKSkKLSAgICAgICAgZWxpZiBkLmdldFZhcignVVNFUkFERF9FUlJPUl9EWU5BTUlDJykgPT0gJ3dhcm4nOgotICAgICAgICAgICAgYmIud2FybigiJXMgLSAlczogJXNuYW1lICVzIGRvZXMgbm90IGhhdmUgYSBzdGF0aWMgSUQgZGVmaW5lZC4iICUgKGQuZ2V0VmFyKCdQTicpLCBwa2csIHR5cGUsIGlkKSkKKyAgICAgICAgZXJyb3JfZHluYW1pYyA9IGQuZ2V0VmFyKCdVU0VSQUREX0VSUk9SX0RZTkFNSUMnKQorICAgICAgICBtc2cgPSAiJXMgLSAlczogJXNuYW1lICVzIGRvZXMgbm90IGhhdmUgYSBzdGF0aWMgSUQgZGVmaW5lZC4iICUgKGQuZ2V0VmFyKCdQTicpLCBwa2csIHR5cGUsIGlkKQorICAgICAgICBpZiBmaWxlczoKKyAgICAgICAgICAgIG1zZyArPSAiIEFkZCAlcyB0byBvbmUgb2YgdGhlc2UgZmlsZXM6ICVzIiAlIChpZCwgZmlsZXMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgKz0gIiAlcyBmaWxlKHMpIG5vdCBmb3VuZCBpbiBCQlBBVEg6ICVzIiAlICh2YXIsIHZhbHVlKQorICAgICAgICBpZiBlcnJvcl9keW5hbWljID09ICdlcnJvcicgb3IgZXJyb3JfZHluYW1pYyA9PSAnMSc6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKG1zZykKKyAgICAgICAgZWxpZiBlcnJvcl9keW5hbWljID09ICd3YXJuJzoKKyAgICAgICAgICAgIGJiLndhcm4obXNnKQorICAgICAgICBlbGlmIGVycm9yX2R5bmFtaWMgPT0gJ3NraXAnOgorICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZShtc2cpCisKKyAgICAjIFJldHVybiBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlcyBiYXNlZCBvbiBlaXRoZXIgdGhlIGRlZmF1bHQKKyAgICAjIGZpbGVzL2dyb3VwIG9yIHRoZSBjb250ZW50cyBvZiBVU0VSQUREX0dJRF9UQUJMRVMsIHJlc3AuCisgICAgIyBmaWxlcy9wYXNzd2QgZm9yIFVTRVJBRERfVUlEX1RBQkxFUy4KKyAgICAjIFBhdGhzIGFyZSByZXNvbHZlZCB2aWEgQkJQQVRILgorICAgIGRlZiBnZXRfdGFibGVfbGlzdChkLCB2YXIsIGRlZmF1bHQpOgorICAgICAgICBmaWxlcyA9IFtdCisgICAgICAgIGJicGF0aCA9IGQuZ2V0VmFyKCdCQlBBVEgnLCBUcnVlKQorICAgICAgICB0YWJsZXMgPSBkLmdldFZhcih2YXIsIFRydWUpCisgICAgICAgIGlmIG5vdCB0YWJsZXM6CisgICAgICAgICAgICB0YWJsZXMgPSBkZWZhdWx0CisgICAgICAgIGZvciBjb25mX2ZpbGUgaW4gdGFibGVzLnNwbGl0KCk6CisgICAgICAgICAgICBmaWxlcy5hcHBlbmQoYmIudXRpbHMud2hpY2goYmJwYXRoLCBjb25mX2ZpbGUpKQorICAgICAgICByZXR1cm4gKCcgJy5qb2luKGZpbGVzKSwgdmFyLCBkZWZhdWx0KQogCiAgICAgIyBXZSBwYXJzZSBhbmQgcmV3cml0ZSB0aGUgdXNlcmFkZCBjb21wb25lbnRzCiAgICAgZGVmIHJld3JpdGVfdXNlcmFkZChwYXJhbXMsIGlzX3BrZyk6Ci0gICAgICAgICMgVGhlIGZvbGxvd2luZyBjb21lcyBmcm9tIC0taGVscCBvbiB1c2VyYWRkIGZyb20gc2hhZG93Ci0gICAgICAgIHBhcnNlciA9IG15QXJndW1lbnRQYXJzZXIocHJvZz0ndXNlcmFkZCcpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1iIiwgIi0tYmFzZS1kaXIiLCBtZXRhdmFyPSJCQVNFX0RJUiIsIGhlbHA9ImJhc2UgZGlyZWN0b3J5IGZvciB0aGUgaG9tZSBkaXJlY3Rvcnkgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWMiLCAiLS1jb21tZW50IiwgbWV0YXZhcj0iQ09NTUVOVCIsIGhlbHA9IkdFQ09TIGZpZWxkIG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1kIiwgIi0taG9tZS1kaXIiLCBtZXRhdmFyPSJIT01FX0RJUiIsIGhlbHA9ImhvbWUgZGlyZWN0b3J5IG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1EIiwgIi0tZGVmYXVsdHMiLCBoZWxwPSJwcmludCBvciBjaGFuZ2UgZGVmYXVsdCB1c2VyYWRkIGNvbmZpZ3VyYXRpb24iLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZSIsICItLWV4cGlyZWRhdGUiLCBtZXRhdmFyPSJFWFBJUkVfREFURSIsIGhlbHA9ImV4cGlyYXRpb24gZGF0ZSBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZiIsICItLWluYWN0aXZlIiwgbWV0YXZhcj0iSU5BQ1RJVkUiLCBoZWxwPSJwYXNzd29yZCBpbmFjdGl2aXR5IHBlcmlvZCBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZyIsICItLWdpZCIsIG1ldGF2YXI9IkdST1VQIiwgaGVscD0ibmFtZSBvciBJRCBvZiB0aGUgcHJpbWFyeSBncm91cCBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItRyIsICItLWdyb3VwcyIsIG1ldGF2YXI9IkdST1VQUyIsIGhlbHA9Imxpc3Qgb2Ygc3VwcGxlbWVudGFyeSBncm91cHMgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWsiLCAiLS1za2VsIiwgbWV0YXZhcj0iU0tFTF9ESVIiLCBoZWxwPSJ1c2UgdGhpcyBhbHRlcm5hdGl2ZSBza2VsZXRvbiBkaXJlY3RvcnkiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItSyIsICItLWtleSIsIG1ldGF2YXI9IktFWT1WQUxVRSIsIGhlbHA9Im92ZXJyaWRlIC9ldGMvbG9naW4uZGVmcyBkZWZhdWx0cyIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1sIiwgIi0tbm8tbG9nLWluaXQiLCBoZWxwPSJkbyBub3QgYWRkIHRoZSB1c2VyIHRvIHRoZSBsYXN0bG9nIGFuZCBmYWlsbG9nIGRhdGFiYXNlcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1tIiwgIi0tY3JlYXRlLWhvbWUiLCBoZWxwPSJjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD1UcnVlKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItTSIsICItLW5vLWNyZWF0ZS1ob21lIiwgZGVzdD0iY3JlYXRlX2hvbWUiLCBoZWxwPSJkbyBub3QgY3JlYXRlIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9RmFsc2UpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1OIiwgIi0tbm8tdXNlci1ncm91cCIsIGRlc3Q9InVzZXJfZ3JvdXAiLCBoZWxwPSJkbyBub3QgY3JlYXRlIGEgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PUZhbHNlKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW5vbi11bmlxdWUiLCBoZWxwPSJhbGxvdyB0byBjcmVhdGUgdXNlcnMgd2l0aCBkdXBsaWNhdGUgKG5vbi11bmlxdWUgVUlEKSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1wIiwgIi0tcGFzc3dvcmQiLCBtZXRhdmFyPSJQQVNTV09SRCIsIGhlbHA9ImVuY3J5cHRlZCBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItUCIsICItLWNsZWFyLXBhc3N3b3JkIiwgbWV0YXZhcj0iQ0xFQVJfUEFTU1dPUkQiLCBoZWxwPSJ1c2UgdGhpcyBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVIiLCAiLS1yb290IiwgbWV0YXZhcj0iQ0hST09UX0RJUiIsIGhlbHA9ImRpcmVjdG9yeSB0byBjaHJvb3QgaW50byIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1yIiwgIi0tc3lzdGVtIiwgaGVscD0iY3JlYXRlIGEgc3lzdGVtIGFjY291bnQiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItcyIsICItLXNoZWxsIiwgbWV0YXZhcj0iU0hFTEwiLCBoZWxwPSJsb2dpbiBzaGVsbCBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItdSIsICItLXVpZCIsIG1ldGF2YXI9IlVJRCIsIGhlbHA9InVzZXIgSUQgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVUiLCAiLS11c2VyLWdyb3VwIiwgaGVscD0iY3JlYXRlIGEgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PVRydWUpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIkxPR0lOIiwgaGVscD0iTG9naW4gbmFtZSBvZiB0aGUgbmV3IHVzZXIiKQotCi0gICAgICAgICMgUmV0dXJuIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIGZpbGVzIGJhc2VkIG9uIGVpdGhlciB0aGUgZGVmYXVsdAotICAgICAgICAjIGZpbGVzL3Bhc3N3ZCBvciB0aGUgY29udGVudHMgb2YgVVNFUkFERF9VSURfVEFCTEVTCi0gICAgICAgICMgcGF0aHMgYXJlIHJlc29sdmVkIHZpYSBCQlBBVEgKLSAgICAgICAgZGVmIGdldF9wYXNzd2RfbGlzdChkKToKLSAgICAgICAgICAgIHN0ciA9ICIiCi0gICAgICAgICAgICBiYnBhdGggPSBkLmdldFZhcignQkJQQVRIJykKLSAgICAgICAgICAgIHBhc3N3ZF90YWJsZXMgPSBkLmdldFZhcignVVNFUkFERF9VSURfVEFCTEVTJykKLSAgICAgICAgICAgIGlmIG5vdCBwYXNzd2RfdGFibGVzOgotICAgICAgICAgICAgICAgIHBhc3N3ZF90YWJsZXMgPSAnZmlsZXMvcGFzc3dkJwotICAgICAgICAgICAgZm9yIGNvbmZfZmlsZSBpbiBwYXNzd2RfdGFibGVzLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgc3RyICs9ICIgJXMiICUgYmIudXRpbHMud2hpY2goYmJwYXRoLCBjb25mX2ZpbGUpCi0gICAgICAgICAgICByZXR1cm4gc3RyCisgICAgICAgIHBhcnNlciA9IG9lLnVzZXJhZGQuYnVpbGRfdXNlcmFkZF9wYXJzZXIoKQogCiAgICAgICAgIG5ld3BhcmFtcyA9IFtdCiAgICAgICAgIHVzZXJzID0gTm9uZQotICAgICAgICBmb3IgcGFyYW0gaW4gcmUuc3BsaXQoJycnWyBcdF0qO1sgXHRdKig/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIHBhcmFtcyk6Ci0gICAgICAgICAgICBwYXJhbSA9IHBhcmFtLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBwYXJhbToKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3IgcGFyYW0gaW4gb2UudXNlcmFkZC5zcGxpdF9jb21tYW5kcyhwYXJhbXMpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHVhYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKHJlLnNwbGl0KCcnJ1sgXHRdKyg/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIHBhcmFtKSkKKyAgICAgICAgICAgICAgICB1YWFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhvZS51c2VyYWRkLnNwbGl0X2FyZ3MocGFyYW0pKQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCIlczogVW5hYmxlIHRvIHBhcnNlIGFyZ3VtZW50cyBmb3IgVVNFUkFERF9QQVJBTV8lczogJyVzJyIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgcGFyYW0pKQogCkBAIC0xMjEsMTAgKzkxLDEyIEBACiAgICAgICAgICAgICAjIGFsbCBuZXcgdXNlcnMgZ2V0IHRoZSBkZWZhdWx0ICgnKicgd2hpY2ggcHJldmVudHMgbG9naW4pIHVudGlsIHRoZSB1c2VyIGlzCiAgICAgICAgICAgICAjIHNwZWNpZmljYWxseSBjb25maWd1cmVkIGJ5IHRoZSBzeXN0ZW0gYWRtaW4uCiAgICAgICAgICAgICBpZiBub3QgdXNlcnM6Ci0gICAgICAgICAgICAgICAgdXNlcnMgPSBtZXJnZV9maWxlcyhnZXRfcGFzc3dkX2xpc3QoZCksIDcpCisgICAgICAgICAgICAgICAgZmlsZXMsIHRhYmxlX3ZhciwgdGFibGVfdmFsdWUgPSBnZXRfdGFibGVfbGlzdChkLCAnVVNFUkFERF9VSURfVEFCTEVTJywgJ2ZpbGVzL3Bhc3N3ZCcpCisgICAgICAgICAgICAgICAgdXNlcnMgPSBtZXJnZV9maWxlcyhmaWxlcywgNykKIAorICAgICAgICAgICAgdHlwZSA9ICdzeXN0ZW0gdXNlcicgaWYgdWFhcmdzLnN5c3RlbSBlbHNlICdub3JtYWwgdXNlcicKICAgICAgICAgICAgIGlmIHVhYXJncy5MT0dJTiBub3QgaW4gdXNlcnM6Ci0gICAgICAgICAgICAgICAgaGFuZGxlX21pc3NpbmdfaWQodWFhcmdzLkxPR0lOLCAndXNlcicsIHBrZykKKyAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZCh1YWFyZ3MuTE9HSU4sIHR5cGUsIHBrZywgZmlsZXMsIHRhYmxlX3ZhciwgdGFibGVfdmFsdWUpCiAgICAgICAgICAgICAgICAgbmV3cGFyYW1zLmFwcGVuZChwYXJhbSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCkBAIC0xODIsNyArMTU0LDcgQEAKIAogICAgICAgICAgICAgIyBTaG91bGQgYmUgYW4gZXJyb3IgaWYgYSBzcGVjaWZpYyBvcHRpb24gaXMgc2V0Li4uCiAgICAgICAgICAgICBpZiBub3QgdWFhcmdzLnVpZCBvciBub3QgdWFhcmdzLnVpZC5pc2RpZ2l0KCkgb3Igbm90IHVhYXJncy5naWQ6Ci0gICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKHVhYXJncy5MT0dJTiwgJ3VzZXInLCBwa2cpCisgICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKHVhYXJncy5MT0dJTiwgdHlwZSwgcGtnLCBmaWxlcywgdGFibGVfdmFyLCB0YWJsZV92YWx1ZSkKIAogICAgICAgICAgICAgIyBSZWNvbnN0cnVjdCB0aGUgYXJncy4uLgogICAgICAgICAgICAgbmV3cGFyYW0gID0gWycnLCAnIC0tZGVmYXVsdHMnXVt1YWFyZ3MuZGVmYXVsdHNdCkBAIC0yMTcsNDAgKzE4OSwxNCBAQAogCiAgICAgIyBXZSBwYXJzZSBhbmQgcmV3cml0ZSB0aGUgZ3JvdXBhZGQgY29tcG9uZW50cwogICAgIGRlZiByZXdyaXRlX2dyb3VwYWRkKHBhcmFtcywgaXNfcGtnKToKLSAgICAgICAgIyBUaGUgZm9sbG93aW5nIGNvbWVzIGZyb20gLS1oZWxwIG9uIGdyb3VwYWRkIGZyb20gc2hhZG93Ci0gICAgICAgIHBhcnNlciA9IG15QXJndW1lbnRQYXJzZXIocHJvZz0nZ3JvdXBhZGQnKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZiIsICItLWZvcmNlIiwgaGVscD0iZXhpdCBzdWNjZXNzZnVsbHkgaWYgdGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzLCBhbmQgY2FuY2VsIC1nIGlmIHRoZSBHSUQgaXMgYWxyZWFkeSB1c2VkIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWciLCAiLS1naWQiLCBtZXRhdmFyPSJHSUQiLCBoZWxwPSJ1c2UgR0lEIGZvciB0aGUgbmV3IGdyb3VwIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLUsiLCAiLS1rZXkiLCBtZXRhdmFyPSJLRVk9VkFMVUUiLCBoZWxwPSJvdmVycmlkZSAvZXRjL2xvZ2luLmRlZnMgZGVmYXVsdHMiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW5vbi11bmlxdWUiLCBoZWxwPSJhbGxvdyB0byBjcmVhdGUgZ3JvdXBzIHdpdGggZHVwbGljYXRlIChub24tdW5pcXVlKSBHSUQiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItcCIsICItLXBhc3N3b3JkIiwgbWV0YXZhcj0iUEFTU1dPUkQiLCBoZWxwPSJ1c2UgdGhpcyBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXAiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItUCIsICItLWNsZWFyLXBhc3N3b3JkIiwgbWV0YXZhcj0iQ0xFQVJfUEFTU1dPUkQiLCBoZWxwPSJ1c2UgdGhpcyBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1SIiwgIi0tcm9vdCIsIG1ldGF2YXI9IkNIUk9PVF9ESVIiLCBoZWxwPSJkaXJlY3RvcnkgdG8gY2hyb290IGludG8iKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItciIsICItLXN5c3RlbSIsIGhlbHA9ImNyZWF0ZSBhIHN5c3RlbSBhY2NvdW50IiwgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiR1JPVVAiLCBoZWxwPSJHcm91cCBuYW1lIG9mIHRoZSBuZXcgZ3JvdXAiKQotCi0gICAgICAgICMgUmV0dXJuIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIGZpbGVzIGJhc2VkIG9uIGVpdGhlciB0aGUgZGVmYXVsdAotICAgICAgICAjIGZpbGVzL2dyb3VwIG9yIHRoZSBjb250ZW50cyBvZiBVU0VSQUREX0dJRF9UQUJMRVMKLSAgICAgICAgIyBwYXRocyBhcmUgcmVzb2x2ZWQgdmlhIEJCUEFUSAotICAgICAgICBkZWYgZ2V0X2dyb3VwX2xpc3QoZCk6Ci0gICAgICAgICAgICBzdHIgPSAiIgotICAgICAgICAgICAgYmJwYXRoID0gZC5nZXRWYXIoJ0JCUEFUSCcpCi0gICAgICAgICAgICBncm91cF90YWJsZXMgPSBkLmdldFZhcignVVNFUkFERF9HSURfVEFCTEVTJykKLSAgICAgICAgICAgIGlmIG5vdCBncm91cF90YWJsZXM6Ci0gICAgICAgICAgICAgICAgZ3JvdXBfdGFibGVzID0gJ2ZpbGVzL2dyb3VwJwotICAgICAgICAgICAgZm9yIGNvbmZfZmlsZSBpbiBncm91cF90YWJsZXMuc3BsaXQoKToKLSAgICAgICAgICAgICAgICBzdHIgKz0gIiAlcyIgJSBiYi51dGlscy53aGljaChiYnBhdGgsIGNvbmZfZmlsZSkKLSAgICAgICAgICAgIHJldHVybiBzdHIKKyAgICAgICAgcGFyc2VyID0gb2UudXNlcmFkZC5idWlsZF9ncm91cGFkZF9wYXJzZXIoKQogCiAgICAgICAgIG5ld3BhcmFtcyA9IFtdCiAgICAgICAgIGdyb3VwcyA9IE5vbmUKLSAgICAgICAgZm9yIHBhcmFtIGluIHJlLnNwbGl0KCcnJ1sgXHRdKjtbIFx0XSooPz0oPzpbXiciXXwnW14nXSonfCJbXiJdKiIpKiQpJycnLCBwYXJhbXMpOgotICAgICAgICAgICAgcGFyYW0gPSBwYXJhbS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgcGFyYW06Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIHBhcmFtIGluIG9lLnVzZXJhZGQuc3BsaXRfY29tbWFuZHMocGFyYW1zKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHByb2Nlc3NpbmcgbXVsdGlwbGUgbGluZXMsIHdlIGNvdWxkIGhhdmUgbGVmdCBvdmVyIHZhbHVlcyBoZXJlLi4uCi0gICAgICAgICAgICAgICAgZ2FhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MocmUuc3BsaXQoJycnWyBcdF0rKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgcGFyYW0pKQorICAgICAgICAgICAgICAgIGdhYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKG9lLnVzZXJhZGQuc3BsaXRfYXJncyhwYXJhbSkpCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIiVzOiBVbmFibGUgdG8gcGFyc2UgYXJndW1lbnRzIGZvciBHUk9VUEFERF9QQVJBTV8lczogJyVzJyIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgcGFyYW0pKQogCkBAIC0yNjQsMTAgKzIxMCwxMiBAQAogICAgICAgICAgICAgIyBOb3RlOiBzaW1pbGFyIHRvIHRoZSBwYXNzd2QgZmlsZSwgdGhlICdwYXNzd29yZCcgZmlsZWQgaXMgaWdub3JlZAogICAgICAgICAgICAgIyBOb3RlOiBncm91cF9tZW1iZXJzIGlzIGlnbm9yZWQsIGdyb3VwIG1lbWJlcnMgbXVzdCBiZSBjb25maWd1cmVkIHdpdGggdGhlIEdST1VQTUVNU19QQVJBTQogICAgICAgICAgICAgaWYgbm90IGdyb3VwczoKLSAgICAgICAgICAgICAgICBncm91cHMgPSBtZXJnZV9maWxlcyhnZXRfZ3JvdXBfbGlzdChkKSwgNCkKKyAgICAgICAgICAgICAgICBmaWxlcywgdGFibGVfdmFyLCB0YWJsZV92YWx1ZSA9IGdldF90YWJsZV9saXN0KGQsICdVU0VSQUREX0dJRF9UQUJMRVMnLCAnZmlsZXMvZ3JvdXAnKQorICAgICAgICAgICAgICAgIGdyb3VwcyA9IG1lcmdlX2ZpbGVzKGZpbGVzLCA0KQogCisgICAgICAgICAgICB0eXBlID0gJ3N5c3RlbSBncm91cCcgaWYgZ2FhcmdzLnN5c3RlbSBlbHNlICdub3JtYWwgZ3JvdXAnCiAgICAgICAgICAgICBpZiBnYWFyZ3MuR1JPVVAgbm90IGluIGdyb3VwczoKLSAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZChnYWFyZ3MuR1JPVVAsICdncm91cCcsIHBrZykKKyAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZChnYWFyZ3MuR1JPVVAsIHR5cGUsIHBrZywgZmlsZXMsIHRhYmxlX3ZhciwgdGFibGVfdmFsdWUpCiAgICAgICAgICAgICAgICAgbmV3cGFyYW1zLmFwcGVuZChwYXJhbSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCkBAIC0yNzksNyArMjI3LDcgQEAKICAgICAgICAgICAgICAgICBnYWFyZ3MuZ2lkID0gZmllbGRbMl0KIAogICAgICAgICAgICAgaWYgbm90IGdhYXJncy5naWQgb3Igbm90IGdhYXJncy5naWQuaXNkaWdpdCgpOgotICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKGdhYXJncy5HUk9VUCwgJ2dyb3VwJywgcGtnKQorICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKGdhYXJncy5HUk9VUCwgdHlwZSwgcGtnLCBmaWxlcywgdGFibGVfdmFyLCB0YWJsZV92YWx1ZSkKIAogICAgICAgICAgICAgIyBSZWNvbnN0cnVjdCB0aGUgYXJncy4uLgogICAgICAgICAgICAgbmV3cGFyYW0gID0gWycnLCAnIC0tZm9yY2UnXVtnYWFyZ3MuZm9yY2VdCkBAIC0zMzUsMTEgKzI4Myw3IEBACiAKICAgICAjYmIud2FybigiQmVmb3JlOiAgJ0VYVFJBX1VTRVJTX1BBUkFNUycgLSAnJXMnIiAlIChkLmdldFZhcignRVhUUkFfVVNFUlNfUEFSQU1TJykpKQogICAgIG5ld19leHRyYXVzZXJzID0gW10KLSAgICBmb3IgY21kIGluIHJlLnNwbGl0KCcnJ1sgXHRdKjtbIFx0XSooPz0oPzpbXiciXXwnW14nXSonfCJbXiJdKiIpKiQpJycnLCBleHRyYXVzZXJzKToKLSAgICAgICAgY21kID0gY21kLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IGNtZDoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KKyAgICBmb3IgY21kIGluIG9lLnVzZXJhZGQuc3BsaXRfY29tbWFuZHMoZXh0cmF1c2Vycyk6CiAgICAgICAgIGlmIHJlLm1hdGNoKCcnJ3VzZXJhZGQgKC4qKScnJywgY21kKToKICAgICAgICAgICAgIHVzZXJhZGRfcGFyYW0gPSByZS5tYXRjaCgnJyd1c2VyYWRkICguKiknJycsIGNtZCkuZ3JvdXAoMSkKICAgICAgICAgICAgIHVzZXJhZGRfcGFyYW0gPSByZXdyaXRlX3VzZXJhZGQodXNlcmFkZF9wYXJhbSwgRmFsc2UpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC5iYmNsYXNzCmluZGV4IDBmNTUxYjUuLjEyNGJlY2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC5iYmNsYXNzCkBAIC0xMTgsNiArMTE4LDcgQEAKIAkjIHVzZXJhZGQvZ3JvdXBhZGQgdG9vbHMgYXJlIHVuYXZhaWxhYmxlLiBJZiB0aGVyZSBpcyBubyBkZXBlbmRlbmN5LCB3ZSBhc3N1bWUgd2UgZG9uJ3Qgd2FudCB0bwogCSMgY3JlYXRlIHVzZXJzIGluIHRoZSBzeXNyb290CiAJaWYgISBjb21tYW5kIC12IHVzZXJhZGQ7IHRoZW4KKwkJYmJ3YXJuICJjb21tYW5kIHVzZXJhZGQgbm90IGZvdW5kISIKIAkJZXhpdCAwCiAJZmkKIApAQCAtMTM5LDIyICsxNDAsMTkgQEAKIEVYVFJBX1NUQUdJTkdfRklYTUVTICs9ICJDT01QT05FTlRTX0RJUiBQU0VVRE9fTE9DQUxTVEFURURJUiBMT0dGSUZPIgogCiBweXRob24gdXNlcmFkZF9zeXNyb290X3NzdGF0ZSAoKSB7CisgICAgc2NyaXB0ZmlsZSA9IE5vbmUKICAgICB0YXNrID0gZC5nZXRWYXIoIkJCX0NVUlJFTlRUQVNLIikKICAgICBpZiB0YXNrID09ICJwYWNrYWdlX3NldHNjZW5lIjoKICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJ1c2VyYWRkX3N5c3Jvb3QiLCBkKQogICAgIGVsaWYgdGFzayA9PSAicHJlcGFyZV9yZWNpcGVfc3lzcm9vdCI6CiAgICAgICAgICMgVXNlZCB0byB1cGRhdGUgdGhpcyByZWNpcGUncyBvd24gc3lzcm9vdCBzbyB0aGUgdXNlci9ncm91cHMgYXJlIGF2YWlsYWJsZSB0byBkb19pbnN0YWxsCiAgICAgICAgIHNjcmlwdGZpbGUgPSBkLmV4cGFuZCgiJHtSRUNJUEVfU1lTUk9PVH0ke2JpbmRpcn0vcG9zdGluc3QtdXNlcmFkZC0ke1BOfSIpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoc2NyaXB0ZmlsZSkpCi0gICAgICAgIHdpdGggb3BlbihzY3JpcHRmaWxlLCAndycpIGFzIHNjcmlwdDoKLSAgICAgICAgICAgIHNjcmlwdC53cml0ZSgiIyEvYmluL3NoXG4iKQotICAgICAgICAgICAgYmIuZGF0YS5lbWl0X2Z1bmMoInVzZXJhZGRfc3lzcm9vdCIsIHNjcmlwdCwgZCkKLSAgICAgICAgICAgIHNjcmlwdC53cml0ZSgidXNlcmFkZF9zeXNyb290XG4iKQotICAgICAgICBvcy5jaG1vZChzY3JpcHRmaWxlLCAwbzc1NSkKICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJ1c2VyYWRkX3N5c3Jvb3QiLCBkKQogICAgIGVsaWYgdGFzayA9PSAicG9wdWxhdGVfc3lzcm9vdCI6CiAgICAgICAgICMgVXNlZCB3aGVuIGluc3RhbGxlZCBpbiBkZXBlbmRlbnQgdGFzayBzeXNyb290cwogICAgICAgICBzY3JpcHRmaWxlID0gZC5leHBhbmQoIiR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9wb3N0aW5zdC11c2VyYWRkLSR7UE59IikKKworICAgIGlmIHNjcmlwdGZpbGU6CiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoc2NyaXB0ZmlsZSkpCiAgICAgICAgIHdpdGggb3BlbihzY3JpcHRmaWxlLCAndycpIGFzIHNjcmlwdDoKICAgICAgICAgICAgIHNjcmlwdC53cml0ZSgiIyEvYmluL3NoXG4iKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCmluZGV4IDk2NDYzYWIuLjhlMDdlYWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKQEAgLTMyMCw3ICszMjAsNyBAQAogCiAKIGRlZiBjaGVja19hcHBfZXhpc3RzKGFwcCwgZCk6Ci0gICAgYXBwID0gZC5leHBhbmQoYXBwKS5zdHJpcCgpCisgICAgYXBwID0gZC5leHBhbmQoYXBwKS5zcGxpdCgpWzBdLnN0cmlwKCkKICAgICBwYXRoID0gZC5nZXRWYXIoJ1BBVEgnKQogICAgIHJldHVybiBib29sKGJiLnV0aWxzLndoaWNoKHBhdGgsIGFwcCkpCiAKQEAgLTM2OSw2ICszNjksNyBAQAogICAgIGxvY2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIG92ZXJyaWRlcykKICAgICBsb2NhbGRhdGEuc2V0VmFyKCJNTFBSRUZJWCIsIHZhcmlhbnQgKyAiLSIpCiAgICAgcmV0dXJuIGxvY2FsZGF0YQorZ2V0X211bHRpbGliX2RhdGFzdG9yZVt2YXJkZXBzZXhjbHVkZV0gPSAiT1ZFUlJJREVTIgogCiBkZWYgYWxsX211bHRpbGliX3R1bmVfdmFsdWVzKGQsIHZhciwgdW5pcXVlID0gVHJ1ZSwgbmVlZF9zcGxpdCA9IFRydWUsIGRlbGltID0gJyAnKToKICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgb2YgYWxsICR7dmFyfSBpbiBhbGwgbXVsdGlsaWIgdHVuZSBjb25maWd1cmF0aW9uIiIiCkBAIC00MzEsNiArNDMyLDcgQEAKICAgICAgICAgdmFsdWVzW3ZdLmFwcGVuZChsb2NhbGRhdGEuZ2V0VmFyKHYpKQogICAgICAgICB2YWx1ZXNbJ21sJ10uYXBwZW5kKGl0ZW0pCiAgICAgcmV0dXJuIHZhbHVlcworYWxsX211bHRpbGliX3R1bmVfbGlzdFt2YXJkZXBzZXhjbHVkZV0gPSAiT1ZFUlJJREVTIgogCiAjIElmIHRoZSB1c2VyIGhhc24ndCBzZXQgdXAgdGhlaXIgbmFtZS9lbWFpbCwgc2V0IHNvbWUgZGVmYXVsdHMKIGNoZWNrX2dpdF9jb25maWcoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3dhZi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcwppbmRleCBjNDY5OGU5Li5hY2JkYTI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3dhZi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvd2FmLmJiY2xhc3MKQEAgLTI1LDggKzI1LDIzIEBACiAKICAgICByZXR1cm4gIiIKIAorcHl0aG9uIHdhZl9wcmVjb25maWd1cmUoKSB7CisgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgU3RyaWN0VmVyc2lvbgorICAgIHNyY3N1YmRpciA9IGQuZ2V0VmFyKCdTJykKKyAgICB3YWZiaW4gPSBvcy5wYXRoLmpvaW4oc3Jjc3ViZGlyLCAnd2FmJykKKyAgICBzdGF0dXMsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCh3YWZiaW4gKyAiIC0tdmVyc2lvbiIpCisgICAgaWYgc3RhdHVzICE9IDA6CisgICAgICAgIGJiLndhcm4oIlVuYWJsZSB0byBleGVjdXRlIHdhZiAtLXZlcnNpb24sIGV4aXQgY29kZSAlZC4gQXNzdW1pbmcgd2FmIHZlcnNpb24gd2l0aG91dCBiaW5kaXIvbGliZGlyIHN1cHBvcnQuIiAlIHN0YXR1cykKKyAgICAgICAgcmV0dXJuCisgICAgdmVyc2lvbiA9IHJlc3VsdC5zcGxpdCgpWzFdCisgICAgaWYgU3RyaWN0VmVyc2lvbih2ZXJzaW9uKSA+PSBTdHJpY3RWZXJzaW9uKCIxLjguNyIpOgorICAgICAgICBkLnNldFZhcigiV0FGX0VYVFJBX0NPTkYiLCAiLS1iaW5kaXI9JHtiaW5kaXJ9IC0tbGliZGlyPSR7bGliZGlyfSIpCit9CisKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIndhZl9wcmVjb25maWd1cmUiCisKIHdhZl9kb19jb25maWd1cmUoKSB7Ci0JJHtTfS93YWYgY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAke0VYVFJBX09FQ09ORn0KKwkke1N9L3dhZiBjb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9ICR7V0FGX0VYVFJBX0NPTkZ9ICR7RVhUUkFfT0VDT05GfQogfQogCiB3YWZfZG9fY29tcGlsZSgpICB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCmluZGV4IDJkYWMzYTEuLjk2OTYyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCkBAIC0xNywxMSArMTcsMTMgQEAKIGV4cG9ydCBwcmVmaXggPSAiL3VzciIKIGV4cG9ydCBleGVjX3ByZWZpeCA9ICIke3ByZWZpeH0iCiAKK3Jvb3RfcHJlZml4ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnJHtleGVjX3ByZWZpeH0nLCAnJHtiYXNlX3ByZWZpeH0nLCBkKX0iCisKICMgQmFzZSBwYXRocwotZXhwb3J0IGJhc2VfYmluZGlyID0gIiR7YmFzZV9wcmVmaXh9L2JpbiIKLWV4cG9ydCBiYXNlX3NiaW5kaXIgPSAiJHtiYXNlX3ByZWZpeH0vc2JpbiIKLWV4cG9ydCBiYXNlX2xpYmRpciA9ICIke2Jhc2VfcHJlZml4fS8ke2Jhc2VsaWJ9IgotZXhwb3J0IG5vbmFyY2hfYmFzZV9saWJkaXIgPSAiJHtiYXNlX3ByZWZpeH0vbGliIgorZXhwb3J0IGJhc2VfYmluZGlyID0gIiR7cm9vdF9wcmVmaXh9L2JpbiIKK2V4cG9ydCBiYXNlX3NiaW5kaXIgPSAiJHtyb290X3ByZWZpeH0vc2JpbiIKK2V4cG9ydCBiYXNlX2xpYmRpciA9ICIke3Jvb3RfcHJlZml4fS8ke2Jhc2VsaWJ9IgorZXhwb3J0IG5vbmFyY2hfYmFzZV9saWJkaXIgPSAiJHtyb290X3ByZWZpeH0vbGliIgogCiAjIEFyY2hpdGVjdHVyZSBpbmRlcGVuZGVudCBwYXRocwogZXhwb3J0IHN5c2NvbmZkaXIgPSAiJHtiYXNlX3ByZWZpeH0vZXRjIgpAQCAtODMsNiArODUsMTAgQEAKICMgUm9vdCBob21lIGRpcmVjdG9yeQogUk9PVF9IT01FID8/PSAiL2hvbWUvcm9vdCIKIAorIyBJZiBzZXQgdG8gYm9vbGVhbiB0cnVlICgneWVzJywgJ3knLCAndHJ1ZScsICd0JywgJzEnKSwgL3Zhci9sb2cgbGlua3MgdG8gL3Zhci92b2xhdGlsZS9sb2cuCisjIElmIHNldCB0byBib29sZWFuIGZhbHNlICgnbm8nLCAnbicsICdmYWxzZScsICdmJywgJzAnKSwgL3Zhci9sb2cgaXMgb24gcGVyc2lzdGVudCBzdG9yYWdlLgorVk9MQVRJTEVfTE9HX0RJUiA/PSAieWVzIgorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBidWlsZCB2YXJpYWJsZXMuCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTE3MCw2ICsxNzYsNyBAQAogICAgIGNocnBhdGgtbmF0aXZlIFwKICAgICBmaWxlLW5hdGl2ZSBcCiAgICAgZmluZHV0aWxzLW5hdGl2ZSBcCisgICAgZ2F3ay1uYXRpdmUgXAogICAgIGdpdC1uYXRpdmUgXAogICAgIGdyZXAtbmF0aXZlIFwKICAgICBkaWZmc3RhdC1uYXRpdmUgXApAQCAtMzI0LDYgKzMzMSwxNCBAQAogIyBUaGlzIGRlZmF1bHQgd2FzIG9ubHkgdXNlZCBmb3IgY2hlY2tpbmcKIEZJTEVTRVhUUkFQQVRIUyA/PSAiX19kZWZhdWx0OiIKIAorIyBUaGUgZGVmYXVsdCBsaXN0IG9mIGZzLXBlcm1zIGZpbGVzIHRvIHByb2Nlc3MuICBJZiB0aGUgbGlzdCBpcyBlbXB0eSBvbmx5CisjIHRoZSBidWlsdGluIGRlZmluaXRpb25zIHdpbGwgYmUgdXNlZC4gIEJ1aWx0aW4gZGVmaW5pdGlvbnMgaW5jbHVkZWQ6CisjICBiYXNlX3ByZWZpeCwgcHJlZml4LCBleGVjX3ByZWZpeCwgYmFzZV9iaW5kaXIsIGJhc2Vfc2JpbmRpciwgYmFzZV9saWJkaXIsCisjICBkYXRhZGlyLCBzeXNjb25mZGlyLCBzZXJ2aWNlZGlyLCBzaGFyZWRzdGF0ZWRpciwgbG9jYWxzdGF0ZWRpciwgaW5mb2RpciwKKyMgIG1hbmRpciwgZG9jZGlyLCBiaW5kaXIsIHNiaW5kaXIsIGxpYmV4ZWNkaXIsIGxpYmRpciwgaW5jbHVkZWRpciBhbmQKKyMgIG9sZGluY2x1ZGVkaXIKK0ZJTEVTWVNURU1fUEVSTVNfVEFCTEVTID89ICIke0AnZmlsZXMvZnMtcGVybXMudHh0JyBpZiBvZS50eXBlcy5ib29sZWFuKGQuZ2V0VmFyKCdWT0xBVElMRV9MT0dfRElSJykpIGVsc2UgJ2ZpbGVzL2ZzLXBlcm1zLXBlcnNpc3RlbnQtbG9nLnR4dCd9IgorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgR2VuZXJhbCB3b3JrIGFuZCBvdXRwdXQgZGlyZWN0b3JpZXMgZm9yIHRoZSBidWlsZCBzeXN0ZW0uCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTQ2MSw3ICs0NzYsNyBAQAogICAgIFsgYXIgYXMgYXdrIGJhc2VuYW1lIGJhc2ggYnppcDIgY2F0IGNoZ3JwIGNobW9kIGNob3duIGNocnBhdGggY21wIGNwIGNwaW8gXAogICAgIGNwcCBjdXQgZGF0ZSBkZCBkaWZmIGRpZmZzdGF0IGRpcm5hbWUgZHUgZWNobyBlZ3JlcCBlbnYgZXhwYW5kIGV4cHIgZmFsc2UgXAogICAgIGZncmVwIGZpbGUgZmluZCBmbG9jayBnKysgZ2F3ayBnY2MgZ2V0Y29uZiBnZXRvcHQgZ2l0IGdyZXAgZ3VuemlwIGd6aXAgXAotICAgIGhlYWQgaG9zdG5hbWUgaW5zdGFsbCBsZCBsZGQgbG4gbHMgbWFrZSBtYWtlaW5mbyBtZDVzdW0gbWtkaXIgbWtub2QgXAorICAgIGhlYWQgaG9zdG5hbWUgaWQgaW5zdGFsbCBsZCBsZGQgbG4gbHMgbWFrZSBtYWtlaW5mbyBtZDVzdW0gbWtkaXIgbWtub2QgXAogICAgIG1rdGVtcCBtdiBubSBvYmpjb3B5IG9iamR1bXAgb2QgcGF0Y2ggcGVybCBwb2QybWFuIHByIHByaW50ZiBwd2QgcHl0aG9uIHB5dGhvbjIgXAogICAgIHB5dGhvbjIuNyBweXRob24zIHJhbmxpYiByZWFkZWxmIHJlYWRsaW5rIHJtIHJtZGlyIHJwY2dlbiBzZWQgc2ggc2hhMjU2c3VtIFwKICAgICBzbGVlcCBzb3J0IHNwbGl0IHN0YXQgc3RyaW5ncyBzdHJpcCB0YWlsIHRhciB0ZWUgdGVzdCB0b3VjaCB0ciB0cnVlIHVuYW1lIFwKQEAgLTQ2OSwxMCArNDg0LDEwIEBACiAiCiAKICMgVG9vbHMgbmVlZGVkIHRvIHJ1biB0ZXN0aW1hZ2UgcnVudGltZSBpbWFnZSB0ZXN0aW5nCi1IT1NUVE9PTFMgKz0gImlwIHBpbmcgcHMgc2NwIHNzaCBzdHR5IgorSE9TVFRPT0xTICs9ICIke0BbJycsICdpcCBwaW5nIHBzIHNjcCBzc2ggc3R0eSddW2JiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3Rlc3RpbWFnZScsIGQpXX0iCiAKICMgTGluayB0byB0aGVzZSBpZiBwcmVzZW50Ci1IT1NUVE9PTFNfTk9ORkFUQUwgKz0gImF3cyBjY2FjaGUgZ2NjLWFyIGdwZyBsZC5iZmQgbGQuZ29sZCBuYyBzZnRwIHNvY2F0IHN1ZG8iCitIT1NUVE9PTFNfTk9ORkFUQUwgKz0gImF3cyBjY2FjaGUgZ2NjLWFyIGdwZyBsZC5iZmQgbGQuZ29sZCBuYyBzZnRwIHNvY2F0IHNzaCBzdWRvIgogCiAjIFRlbXBvcmFyeSBhZGQgZmV3IG1vcmUgZGV0ZWN0ZWQgaW4gYml0YmFrZSB3b3JsZAogSE9TVFRPT0xTX05PTkZBVEFMICs9ICJqb2luIG5sIHNpemUgeWVzIHpjYXQiCkBAIC00ODEsOSArNDk2LDYgQEAKIEhPU1RUT09MU19OT05GQVRBTCArPSAiYnpyIgogCiBDQ0FDSEUgPz89ICIiCi0jIERpc2FibGUgY2NhY2hlIGV4cGxpY2l0bHkgaWYgQ0NBQ0hFIGlzIG51bGwgc2luY2UgZ2NjIG1heSBiZSBhIHN5bWxpbmsKLSMgb2YgY2NhY2hlIHNvbWUgZGlzdHJpYnV0aW9ucyAoZS5nLiwgRmVkb3JhIDE3KS4KLWV4cG9ydCBDQ0FDSEVfRElTQUJMRSA/Pz0gIiR7QFswLDFdW2QuZ2V0VmFyKCdDQ0FDSEUnKSA9PSAnJ119IgogIyBjY2FjaGUgPCAzLjEuMTAgd2lsbCBjcmVhdGUgQ0NBQ0hFX0RJUiBvbiBzdGFydHVwIGV2ZW4gaWYgZGlzYWJsZWQsIGFuZAogIyBhdXRvZ2VuIHNldHMgSE9NRT0vZGV2L251bGwgc28gaW4gY2VydGFpbiBzaXR1YXRpb25zIGJ1aWxkcyBjYW4gZmFpbC4KICMgRXhwbGljaXRseSBleHBvcnQgQ0NBQ0hFX0RJUiB1bnRpbCB3ZSBjYW4gYXNzdW1lIGNjYWNoZSA+My4xLjEwIG9uIHRoZSBob3N0LgpAQCAtNTQ2LDYgKzU1OCw3IEBACiBleHBvcnQgVEFSR0VUX0NGTEFHUyA9ICIke1RBUkdFVF9DUFBGTEFHU30gJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgogCiBleHBvcnQgQlVJTERfQ1hYRkxBR1MgPSAiJHtCVUlMRF9DRkxBR1N9IgorQlVJTERTREtfQ1hYRkxBR1MgPSAiJHtCVUlMRFNES19DRkxBR1N9IgogZXhwb3J0IENYWEZMQUdTID0gIiR7VEFSR0VUX0NYWEZMQUdTfSIKIGV4cG9ydCBUQVJHRVRfQ1hYRkxBR1MgPSAiJHtUQVJHRVRfQ0ZMQUdTfSIKIApAQCAtNzE0LDExICs3MjcsOSBAQAogIyBUaGlzIHdvcmtzIGZvciAgZnVuY3Rpb25zIGFzIHdlbGwsIHRoZXkgYXJlIHJlYWxseSBqdXN0IGVudmlyb25tZW50IHZhcmlhYmxlcy4KICMgRGVmYXVsdCBPVkVSUklERVMgdG8gbWFrZSBjb21waWxhdGlvbiBmYWlsIGZhc3QgaW4gY2FzZSBvZiBidWlsZCBzeXN0ZW0gbWlzY29uZmlndXJhdGlvbi4KIE9WRVJSSURFUyA9ICIke1RBUkdFVF9PU306JHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfTpidWlsZC0ke0JVSUxEX09TfTpwbi0ke1BOfToke01BQ0hJTkVPVkVSUklERVN9OiR7RElTVFJPT1ZFUlJJREVTfToke0NMQVNTT1ZFUlJJREV9OmZvcmNldmFyaWFibGUiCi1PVkVSUklERVNbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkVPVkVSUklERVMiCiBDTEFTU09WRVJSSURFID89ICJjbGFzcy10YXJnZXQiCiBESVNUUk9PVkVSUklERVMgPz0gIiR7QGQuZ2V0VmFyKCdESVNUUk8nKSBvciAnJ30iCiBNQUNISU5FT1ZFUlJJREVTID89ICIke01BQ0hJTkV9IgotTUFDSElORU9WRVJSSURFU1t2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKIAogRklMRVNPVkVSUklERVMgPSAiJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfToke01BQ0hJTkVPVkVSUklERVN9OiR7RElTVFJPT1ZFUlJJREVTfSIKIApAQCAtNzMxLDEwICs3NDIsOCBAQAogaW5jbHVkZSBjb25mL2F1dG8uY29uZgogaW5jbHVkZSBjb25mL2xvY2FsLmNvbmYKIHJlcXVpcmUgY29uZi9tdWx0aWNvbmZpZy8ke0JCX0NVUlJFTlRfTUN9LmNvbmYKLWluY2x1ZGUgY29uZi9idWlsZC8ke0JVSUxEX1NZU30uY29uZgogaW5jbHVkZSBjb25mL21hY2hpbmUvJHtNQUNISU5FfS5jb25mCiBpbmNsdWRlIGNvbmYvbWFjaGluZS1zZGsvJHtTREtNQUNISU5FfS5jb25mCi1pbmNsdWRlIGNvbmYvdGFyZ2V0LyR7VEFSR0VUX1NZU30uY29uZgogaW5jbHVkZSBjb25mL2Rpc3Ryby8ke0RJU1RST30uY29uZgogaW5jbHVkZSBjb25mL2Rpc3Ryby9kZWZhdWx0c2V0dXAuY29uZgogaW5jbHVkZSBjb25mL2RvY3VtZW50YXRpb24uY29uZgpAQCAtNzk4LDcgKzgwNyw3IEBACiAKICMgTmF0aXZlIGRpc3RybyBmZWF0dXJlcyAod2lsbCBhbHdheXMgYmUgdXNlZCBmb3IgLW5hdGl2ZSwgZXZlbiBpZiB0aGV5CiAjIGFyZSBub3QgZW5hYmxlZCBmb3IgdGFyZ2V0KQotRElTVFJPX0ZFQVRVUkVTX05BVElWRSA/PSAieDExIgorRElTVFJPX0ZFQVRVUkVTX05BVElWRSA/PSAieDExIGlwdjYiCiBESVNUUk9fRkVBVFVSRVNfTkFUSVZFU0RLID89ICJ4MTEgbGliYy1jaGFyc2V0cyBsaWJjLWxvY2FsZXMgbGliYy1sb2NhbGUtY29kZSIKIAogIyBOb3JtYWxseSB0YXJnZXQgZGlzdHJvIGZlYXR1cmVzIHdpbGwgbm90IGJlIGFwcGxpZWQgdG8gbmF0aXZlIGJ1aWxkczoKQEAgLTg0OCw3ICs4NTcsNyBAQAogICAgIFNTVEFURV9ESVIgVEhJU0RJUiBGSUxFU0VYVFJBUEFUSFMgRklMRV9ESVJOQU1FIEhPTUUgTE9HTkFNRSBTSEVMTCBURVJNIFwKICAgICBVU0VSIEZJTEVTUEFUSCBTVEFHSU5HX0RJUl9IT1NUIFNUQUdJTkdfRElSX1RBUkdFVCBDT1JFQkFTRSBQUlNFUlZfSE9TVCBcCiAgICAgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKLSAgICBDQ0FDSEVfRElSIEVYVEVSTkFMX1RPT0xDSEFJTiBDQ0FDSEUgQ0NBQ0hFX0RJU0FCTEUgTElDRU5TRV9QQVRIIFNES1BLR1NVRkZJWCBcCisgICAgQ0NBQ0hFX0RJUiBFWFRFUk5BTF9UT09MQ0hBSU4gQ0NBQ0hFIENDQUNIRV9OT0hBU0hESVIgTElDRU5TRV9QQVRIIFNES1BLR1NVRkZJWCBcCiAgICAgV0FSTl9RQSBFUlJPUl9RQSBXT1JLRElSIFNUQU1QQ0xFQU4gUEtHREFUQV9ESVIgQlVJTERfQVJDSCBTU1RBVEVfUEtHQVJDSCBcCiAgICAgQkJfV09SS0VSQ09OVEVYVCBCQl9MSU1JVEVEREVQUyBleHRlbmRfcmVjaXBlX3N5c3Jvb3QgREVQTE9ZX0RJUiIKIEJCX0hBU0hDT05GSUdfV0hJVEVMSVNUID89ICIke0JCX0hBU0hCQVNFX1dISVRFTElTVH0gREFURSBUSU1FIFNTSF9BR0VOVF9QSUQgXApAQCAtODU2LDcgKzg2NSw3IEBACiAgICAgUEFSQUxMRUxfTUFLRSBCQl9OVU1CRVJfVEhSRUFEUyBCQl9PUklHRU5WIEJCX0lOVkFMSURDT05GIEJCSU5DTFVERUQgXAogICAgIEdJVF9QUk9YWV9DT01NQU5EIEFMTF9QUk9YWSBhbGxfcHJveHkgTk9fUFJPWFkgbm9fcHJveHkgRlRQX1BST1hZIGZ0cF9wcm94eSBcCiAgICAgSFRUUF9QUk9YWSBodHRwX3Byb3h5IEhUVFBTX1BST1hZIGh0dHBzX3Byb3h5IFNPQ0tTNV9VU0VSIFNPQ0tTNV9QQVNTV0QgXAotICAgIEJCX1NFVFNDRU5FX0VORk9SQ0UiCisgICAgQkJfU0VUU0NFTkVfRU5GT1JDRSBCQl9DTURMSU5FIEJCX1NFUlZFUl9USU1FT1VUIgogQkJfU0lHTkFUVVJFX0VYQ0xVREVfRkxBR1MgPz0gImRvYyBkZXBzIGRlcGVuZHMgXAogICAgIGxvY2tmaWxlcyB0eXBlIHZhcmRlcHNleGNsdWRlIHZhcmRlcHMgdmFyZGVwdmFsdWUgdmFyZGVwdmFsdWVleGNsdWRlIFwKICAgICBmaWxlLWNoZWNrc3VtcyBweXRob24gZnVuYyB0YXNrIGV4cG9ydCB1bmV4cG9ydCBub2V4ZWMgbm9zdGFtcCBkaXJzIGNsZWFuZGlycyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2NvbmYtbm90ZXMudHh0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9jb25mLW5vdGVzLnR4dAppbmRleCAyZjI5MzJiLi5mMWE0ZjRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2NvbmYtbm90ZXMudHh0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvY29uZi1ub3Rlcy50eHQKQEAgLTEsMyArMSw4IEBACisKKyMjIyBTaGVsbCBlbnZpcm9ubWVudCBzZXQgdXAgZm9yIGJ1aWxkcy4gIyMjCisKK1lvdSBjYW4gbm93IHJ1biAnYml0YmFrZSA8dGFyZ2V0PicKKwogQ29tbW9uIHRhcmdldHMgYXJlOgogICAgIGNvcmUtaW1hZ2UtbWluaW1hbAogICAgIGNvcmUtaW1hZ2Utc2F0bwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9hcy1uZWVkZWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9hcy1uZWVkZWQuaW5jCmluZGV4IDExNGQzNzcuLjZhOGFkOWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRlZC5pbmMKQEAgLTgsNyArOCw2IEBACiBBU05FRURFRF9wbi1pY3UgPSAiIgogQVNORUVERURfcG4tcGNpdXRpbHMgPSAiIgogQVNORUVERURfcG4tcHV6emxlcyA9ICIiCi1BU05FRURFRF9wbi1wdWxzZWF1ZGlvID0gIiIKIEFTTkVFREVEX3BuLXJwbSA9ICIiCiAKIFRBUkdFVF9MREZMQUdTICs9ICIke0FTTkVFREVEfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKaW5kZXggZWNlNGQ4Yi4uMmI3NmMzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKQEAgLTQ2LDcgKzQ2LDYgQEAKIFBSRUZFUlJFRF9QUk9WSURFUl9jb25zb2xlLXRvb2xzID89ICJrYmQiCiBQUkVGRVJSRURfUFJPVklERVJfZ3ppcC1uYXRpdmUgPz0gInBpZ3otbmF0aXZlIgogUFJFRkVSUkVEX1BST1ZJREVSX3VkZXYgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZCcsJ2V1ZGV2JyxkKX0iCi1QUkVGRVJSRURfUlBST1ZJREVSX2xpYmFzb3VuZC1tb2R1bGUtYmx1ZXogPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdibHVldG9vdGggYmx1ZXo1JywnYmx1ZXo1JywnYmx1ZXo0JyxkKX0iCiBQUkVGRVJSRURfUlBST1ZJREVSX2JsdWV6LWhjaWR1bXAgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdibHVldG9vdGggYmx1ZXo1JywnYmx1ZXo1JywnYmx1ZXotaGNpZHVtcCcsZCl9IgogIyBBbHRlcm5hdGl2ZSBpcyBsdHAtZGR0IGluIG1ldGEtb2U6IG1ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHAtZGR0L2x0cC1kZHRfMC4wLjQuYmIKIFBSRUZFUlJFRF9QUk9WSURFUl9sdHAgPz0gImx0cCIKQEAgLTU0LDMgKzUzLDcgQEAKIFBSRUZFUlJFRF9QUk9WSURFUl9vcGVuc3NsID89ICJvcGVuc3NsIgogUFJFRkVSUkVEX1BST1ZJREVSX29wZW5zc2wtbmF0aXZlID89ICJvcGVuc3NsLW5hdGl2ZSIKIFBSRUZFUlJFRF9QUk9WSURFUl9uYXRpdmVzZGstb3BlbnNzbCA/PSAibmF0aXZlc2RrLW9wZW5zc2wiCitQUkVGRVJSRURfUFJPVklERVJfcGtnY29uZmlnID89ICJwa2djb25maWciCitQUkVGRVJSRURfUFJPVklERVJfbmF0aXZlc2RrLXBrZ2NvbmZpZyA/PSAibmF0aXZlc2RrLXBrZ2NvbmZpZyIKK1BSRUZFUlJFRF9QUk9WSURFUl9wa2djb25maWctbmF0aXZlID89ICJwa2djb25maWctbmF0aXZlIgorUFJFRkVSUkVEX1JQUk9WSURFUl9pbml0ZC1mdW5jdGlvbnMgPz0gImluaXRzY3JpcHRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC12ZXJzaW9ucy5pbmMKaW5kZXggZDk3NjUwOC4uODY4MDczOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVyc2lvbnMuaW5jCkBAIC0yLDYgKzIsNiBAQAogIyBEZWZhdWx0IHByZWZlcnJlZCB2ZXJzaW9ucwogIwogCi0jIEZvcmNlIHRoZSBvbGRlciB2ZXJzaW9uIG9mIGxpYmVyYXRpb24tZm9udHMgdW50aWwgd2UgZml4IHRoZSBmb250Zm9yZ2UgaXNzdWUKLVBSRUZFUlJFRF9WRVJTSU9OX2xpYmVyYXRpb24tZm9udHMgPz0gIjEuMDQiCi0KK1BSRUZFUlJFRF9WRVJTSU9OX29wZW5zc2wgPSAiMS4wLiUiCitQUkVGRVJSRURfVkVSU0lPTl9vcGVuc3NsLW5hdGl2ZSA9ICIxLjAuJSIKK1BSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1vcGVuc3NsID0gIjEuMC4lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCmluZGV4IDQ4OWY1ZWEuLmY3YzhiNGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKQEAgLTE1LDcgKzE1LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1hdGsgPSAiRmVkb3JhPWF0ayBPcGVuU3VTRT1hdGsiCiBESVNUUk9fUE5fQUxJQVNfcG4tYXZhaGktdWkgPSAiVWJ1bnR1PWF2YWhpLWRpc2NvdmVyIERlYmlhbj1hdmFoaS1kaXNjb3ZlciIKIERJU1RST19QTl9BTElBU19wbi1iYWJlbHRyYWNlID0gIk9TUERUIgotRElTVFJPX1BOX0FMSUFTX3BuLWJkd2djID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWJpZ3JlcXNwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1iaWdyZXFzcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tYmphbSA9ICJPcGVuU3VTRT1ib29zdC1qYW0gRGViaW5hPWJqYW0iCiBESVNUUk9fUE5fQUxJQVNfcG4tYmxrdG9vbCA9ICJEZWJpYW49YmxrdG9vbCBNYW5kcml2YT1ibGt0b29sIgpAQCAtNjMsNiArNjIsNyBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2UtdGVzdG1hc3Rlci1pbml0cmFtZnMgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLXdlc3RvbiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2UteDExID0gIk9FLUNvcmUiCitESVNUUk9fUE5fQUxJQVNfcG4tY3JlYXRlcmVwby1jID0gIkZlZG9yYT1jcmVhdGVyZXBvX2MgQ2xlYXI9Y3JlYXRlcmVwb19jIgogRElTVFJPX1BOX0FMSUFTX3BuLWNyb3NzLWxvY2FsZWRlZiA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1jcnlwdG9kZXYtbGludXggPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jcnlwdG9kZXYtbW9kdWxlID0gIk9FLUNvcmUiCkBAIC0xMjksNiArMTI5LDcgQEAKIERJU1RST19QTl9BTElBU19wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlID0gIkRlYmlhbj1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIFVidW50dT1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgogRElTVFJPX1BOX0FMSUFTX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QgPSAiRGViaWFuPWdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QgVWJ1bnR1PWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKIERJU1RST19QTl9BTElBU19wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiVWJ1bnR1PWdzdHJlYW1lcjAuMTAtcnRzcCBGZWRvcmE9Z3N0cmVhbWVyLXJ0c3AiCitESVNUUk9fUE5fQUxJQVNfcG4tZ3N0cmVhbWVyMS4wLXZhYXBpID0gIkZlZG9yYT1nc3RyZWFtZXIxLXZhYXBpIERlYmlhbj1nc3RyZWFtZXItdmFhcGkgQ2xlYXI9Z3N0cmVhbWVyLXZhYXBpIgogRElTVFJPX1BOX0FMSUFTX3BuLWd0aysgPSAiTWVlZ289Z3RrMiBGZWRvcmE9Z3RrMiBPcGVuU3VTRT1ndGsyIFVidW50dT1ndGsrMi4wIE1hbmRyaXZhPWd0aysyLjAgRGViaWFuPWd0aysyLjAiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ3RrKzMgPSAiVWJ1bnR1PWd0ayszLjAgRGViaWFuPWd0ayszLjAgRmVkb3JhPWd0azMiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ3RrLWRvYyA9ICJGZWRvcmE9Z3RrLWRvYyBVYnVudHU9Z3RrLWRvYyIKQEAgLTE1Myw3ICsxNTQsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWlwcm91dGUyID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWpwZWcgPSAiT3BlblN1U0U9bGlianBlZyBVYnVudHU9bGlianBlZzYyIgogRElTVFJPX1BOX0FMSUFTX3BuLWticHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8ta2Jwcm90byBVYnVudHU9eDExcHJvdG8ta2ItZGV2IERlYmlhbj14MTFwcm90by1rYi1kZXYiCi1ESVNUUk9fUE5fQUxJQVNfcG4ta2NvbmZpZy1mcm9udGVuZHMgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2VybmVsLWRldnNyYyA9ICJEZWJpYW49bGludXgtYmFzZSBVYnVudHU9bGludXgiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2VybmVsc2hhcmsgPSAiTWFuZHJpdmE9a2VybmVsc2hhcmsgVWJ1bnR1PWtlcm5lbHNoYXJrIgogRElTVFJPX1BOX0FMSUFTX3BuLWtlcm4tdG9vbHMtbmF0aXZlID0gIldpbmRyaXZlciIKQEAgLTE5NSw2ICsxOTUsNyBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWxpYm93bCA9ICJEZWJpYW49b3dsIE9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlicGFtID0gIk1lZWdvPXBhbSBGZWRvcmE9cGFtIE9wZW5TdVNFPXBhbSBVYnVudHU9cGFtIE1hbmRyaXZhPXBhbSBEZWJpYW49cGFtIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnBjcmUgPSAiTWFuZHJpdmE9bGlicGNyZTAgRmVkb3JhPXBjcmUiCitESVNUUk9fUE5fQUxJQVNfcG4tbGlicGNyZTIgPSAiRmVkb3JhPXBjcmUyIERlYmlhbj1wY3JlMiBDbGVhcj1wY3JlMiIKIERJU1RST19QTl9BTElBU19wbi1saWJwbmcxMiA9ICJEZWJpYW49bGlicG5nMTItMCBGZWRvcmE9bGlicG5nIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnBvZC1wbGFpbmVyLXBlcmwgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlic2FtcGxlcmF0ZTAgPSAiTWVlZ289bGlic2FtcGxlcmF0ZSBGZWRvcmE9bGlic2FtcGxlcmF0ZSBPcGVuU3VTRT1saWJzYW1wbGVyYXRlIFVidW50dT1saWJzYW1wbGVyYXRlIE1hbmRyaXZhPWxpYnNhbXBsZXJhdGUgRGViaWFuPWxpYnNhbXBsZXJhdGUiCkBAIC0yMDksNiArMjEwLDcgQEAKIERJU1RST19QTl9BTElBU19wbi1saWJ1c2ItY29tcGF0ID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYngxMSA9ICJEZWJpYW49bGlieDExLTYgRmVkb3JhPWxpYlgxMSBVYnVudHU9bGlieDExLTYgT3BlblN1U0U9eG9yZy14MTEtbGliWDExIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnhjYWxpYnJhdGUgPSAiT1NQRFQgdXBzdHJlYW09aHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvbGliL2xpYlhDYWxpYnJhdGUvIgorRElTVFJPX1BOX0FMSUFTX3BuLWxpYnhmb250MiA9ICJGZWRvcmE9bGliWGZvbnQyIENsZWFyPWxpYlhmb250MiIKIERJU1RST19QTl9BTElBU19wbi1saWJ4ZnQgPSAiTWFuZHJpdmE9bGlieGZ0IERlYmlhbj1saWJ4ZnQyIFVidW50dT1saWJ4ZnQyIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnhpID0gIlVidW50dT1saWJ4aSBGZWRvcmE9bGliWGkiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlieGtiY29tbW9uID0gIkZlZG9yYT1saWJ4a2Jjb21tb24gRGViaWFuPWxpYnhrYmNvbW1vbiIKQEAgLTMyNSwxNCArMzI3LDE2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tcHV6emxlcyA9ICJEZWJpYW49c2d0LXB1enpsZXMgRmVkb3JhPXB1enpsZXMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMyA9ICJGZWRvcmE9cHl0aG9uMyBEZWJpYW49cHl0aG9uMy4yIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtZGlzdHJpYnV0ZSA9ICJEZWJpYW49cHl0aG9uMy1zZXR1cHRvb2xzIEZlZG9yYT1weXRob24zLXNldHVwdG9vbHMiCitESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1pbmlwYXJzZSA9ICJGZWRvcmE9cHl0aG9uLWluaXBhcnNlIERlYmlhbj1weXRob24taW5pcGFyc2UiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1waXAgPSAiT3BlblN1U0U9cHl0aG9uMy1waXAgRGViaWFuPXB5dGhvbjMtcGlwIgorRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtcHljdXJsID0gIkZlZG9yYT1weXRob24tcHljdXJsIERlYmlhbj1weWN1cmwiCitESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1weWdwZ21lID0gIkZlZG9yYT1weXRob24tcHlncGdtZSBEZWJpYW49cHlncGdtZSIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zLXNldHVwdG9vbHMgPSAiT3BlblN1U0U9cHl0aG9uMy1zZXR1cHRvb2xzIERlYmlhbj1weXRob24zLXNldHVwdG9vbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLWRidXMgPSAiVWJ1bnR1PXB5dGhvbi1kYnVzIERlYmlhbj1weXRob24tZGJ1cyBNYW5kcml2YT1weXRob24tZGJ1cyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tZGlzdHJpYnV0ZSA9ICJPcGVuc3VzZT1weXRob24tc2V0dXB0b29scyBGZWRvcmE9cHl0aG9uLXNldHVwdG9vbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLWdpdCA9ICJEZWJpYW49cHl0aG9uLWdpdCBGZWRvcmE9R2l0UHl0aG9uIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1tYWtvID0gIkZlZG9yYT1weXRob24tbWFrbyBPcGVuc3VzZT1weXRob24tTWFrbyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tcHljYWlybyA9ICJNZWVnbz1weWNhaXJvIEZlZG9yYT1weWNhaXJvIFVidW50dT1weWNhaXJvIERlYmlhbj1weWNhaXJvIgotRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1weWN1cmwgPSAiRGViaWFuPXB5dGhvbi1weWN1cmwgVWJ1bnR1PXB5dGhvbi1weWN1cmwiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLXB5Z29iamVjdCA9ICJNZWVnbz1weWdvYmplY3QyIEZlZG9yYT1weWdvYmplY3QyIFVidW50dT1weWdvYmplY3QgRGViaWFuPXB5Z29iamVjdCIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tc2NvbnMgPSAiRmVkb3JhPXNjb25zIE9wZW5TdVNFPXNjb25zIFVidW50dT1zY29ucyBNYW5kcml2YT1zY29ucyBEZWJpYW49c2NvbnMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLXNldHVwdG9vbHMgPSAiTWFuZHJpdmE9cHl0aG9uLXNldHVwIE9wZW5TdVNFPXB5dGhvbi1zZXR1cC1naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Nzg5YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwpAQCAtMCwwICsxLDgyNyBAQAorIyBZb2N0byBQcm9qZWN0IC8gT3BlbkVtYmVkZGVkLUNvcmUgKE9FLUNvcmUpIE1haW50YWluZXJzIEZpbGUKKyMKKyMgVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiByZWNpcGUgbWFpbnRhaW5lcnMuCisjCisjIFBsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCByZWNpcGVzIGluIG1ldGEgdG8gdGhlIAorIyBPRS1Db3JlIG1haWwgbGlzdCAob3BlbmVtYmVkZGVkLWNvcmVAbGlzdHMub3BlbmVtYmVkZGVkLm9yZykKKyMgRm9yIHJlY2lwZXMgaW4gbWV0YS15b2N0byBwbGVhc2UgdXNlIHRoZSBQb2t5IGxpc3QgKHBva3lAeW9jdG9wcm9qZWN0Lm9yZykKKyMKKyMgSWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCBvciBxdWVzdGlvbnMgYWJvdXQgYSBwYXJ0aWN1bGFyIHJlY2lwZSwgZmVlbAorIyBmcmVlIHRvIGNvbnRhY3QgdGhlIG1haW50YWluZXIgZGlyZWN0bHkgKGNjOmluZyB0aGUgYXBwcm9wcmlhdGUgbWFpbGluZyBsaXN0CisjIHB1dHMgaXQgaW4gdGhlIGFyY2hpdmUgYW5kIGhlbHBzIG90aGVyIHBlb3BsZSB3aG8gbWlnaHQgaGF2ZSB0aGUgc2FtZQorIyBxdWVzdGlvbnMgaW4gdGhlIGZ1dHVyZSksIGJ1dCBwbGVhc2UgdHJ5IHRvIGRvIHRoZSBmb2xsb3dpbmcgZmlyc3Q6CisjCisjICAtIGxvb2sgaW4gdGhlIFlvY3RvIFByb2plY3QgQnVnemlsbGEKKyMgICAgKGh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLykgdG8gc2VlIGlmIGEgcHJvYmxlbSBoYXMKKyMgICAgYWxyZWFkeSBiZWVuIHJlcG9ydGVkCisjCisjIC0gbG9vayB0aHJvdWdoIHJlY2VudCBlbnRyaWVzIG9mIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nIGxpc3QgYXJjaGl2ZXMKKyMgICAoaHR0cDovL2xpc3RzLmxpbnV4dG9nby5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlIG9yCisjICAgIGh0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9waXBlcm1haWwvcG9reS8pIHRvIHNlZSBpZiBvdGhlcgorIyAgIHBlb3BsZSBoYXZlIHJ1biBpbnRvIHNpbWlsYXIgcHJvYmxlbXMgb3IgaGFkIHNpbWlsYXIgcXVlc3Rpb25zCisjICAgYW5zd2VyZWQuCisjCisjIFRoZSBmb3JtYXQgaXMgYXMgYSBiaXRiYWtlIHZhcmlhYmxlIG92ZXJyaWRlIGZvciBlYWNoIHJlY2lwZQorIworIwlSRUNJUEVfTUFJTlRBSU5FUl9wbi08cmVjaXBlIG5hbWU+ID0gIkZ1bGwgTmFtZSA8YWRkcmVzc0Bkb21haW4+IgorIworIyBQbGVhc2Uga2VlcCB0aGlzIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgorIworUkVDSVBFX01BSU5UQUlORVJfcG4tYWNsID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hY3BpY2EgPSAiRmF0aGkgQm91ZHJhIDxmYXRoaS5ib3VkcmFAbGluYXJvLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hY3BpZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hY3BpdGVzdHMgPSAiRmF0aGkgQm91ZHJhIDxmYXRoaS5ib3VkcmFAbGluYXJvLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hZHdhaXRhLWljb24tdGhlbWUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLWxpYiA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1wbHVnaW5zID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXN0YXRlID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXRvb2xzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXV0aWxzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXV0aWxzLXNjcmlwdHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwbWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXByID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHItdXRpbCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXB0ID0gIkFuw61iYWwgTGltw7NuIDxsaW1vbi5hbmliYWxAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwdC1uYXRpdmUgPSAiQW7DrWJhbCBMaW3Ds24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXJncC1zdGFuZGFsb25lID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXNjaWlkb2MgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzcGVsbCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXNzaW1wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItYXRrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1jb3JlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXR0ciA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYtYXJjaGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvZ2VuLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvbWFrZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdmFoaSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGktdWkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhYmVsdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLWZpbGVzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1wYXNzd2QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoLWNvbXBsZXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmR3Z2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iZWVjcnlwdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaWdyZXFzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmluZCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3MtY2FuYWRpYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zc3NkayA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpc29uID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iamFtLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsa3Rvb2wgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsa3RyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmx1ZXo1ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJtYXAtdG9vbHMgPSAiRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vc3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ib290Y2hhcnQyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnNkLWhlYWRlcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idHJmcy10b29scyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLWFwcGxpYW5jZS1pbWFnZSA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLWNvbXBhcmUgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1zeXNyb290cyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZGVyID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGR0b29scy10YXJiYWxsID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVzeWJveCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ5YWNjID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iemlwMiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhLWNlcnRpZmljYXRlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhaXJvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2FsaWJyYXRlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2FudGFyZWxsLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2NhY2hlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNkcnRvb2xzLW5hdGl2ZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2hrY29uZmlnID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWctYWx0ZXJuYXRpdmVzLW5hdGl2ZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2hycGF0aCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci0xLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWdzdC0zLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWd0ay0xLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNtYWtlLW5hdGl2ZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvZ2wtMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29tcG9zaXRlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbiA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWNvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1nbm9tZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25zb2xlLXRvb2xzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25zb2xla2l0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JldXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNwaW8gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcmFja2xpYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcmVhdGVyZXBvLWMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcm9uaWUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcm9zcy1sb2NhbGVkZWYtbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LWxpbnV4ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyeXB0b2Rldi1tb2R1bGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LXRlc3RzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWN1cHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWN1cmwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3ZlLWNoZWNrLXRvb2wgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jd2F1dG9tYWNyb3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGFtYWdlcHJvdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYiA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy1nbGliID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXRlc3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtd2FpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGViaWFudXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGVwbW9kd3JhcHBlci1jcm9zcyA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRoY3AgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZzdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaWZmdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpcmVjdGZiID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXJlY3RmYi1leGFtcGxlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGlzdGNjID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXN0Y2MtY29uZmlnID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kbWlkZWNvZGUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kbXhwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kbmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kb2Nib29rLXhtbC1kdGQ0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kb2Nib29rLXhzbC1zdHlsZXNoZWV0cyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZG9zZnN0b29scyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZHBrZyA9ICJBbsOtYmFsIExpbcOzbiA8bGltb24uYW5pYmFsQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kcmkycHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZHJpM3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyb3BiZWFyID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kdGMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lMmZzcHJvZ3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZWUtYWNwaS1zY3JpcHRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWZpbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLWZiID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWdsaW5mby14MTEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZmlsaW51eCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVsZnV0aWxzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNoYW50ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY29kaW5ncyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lcGlwaGFueSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWV0aHRvb2wgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZXVkZXYgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZXhwYXQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWV4cGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZmbXBlZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpbGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZmluZHV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1maXhlc3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsYWMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsZXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtYWxpYXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRjb25maWcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250c3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvb21hdGljLWZpbHRlcnMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvcm1mYWN0b3IgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZnJlZXR5cGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mc3Rlc3RzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZnRzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2F3ayA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLWNhbmFkaWFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3NzZGsgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3NzZGstaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1ydW50aW1lID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNhbml0aXplcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjbWFrZWRlcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjb25mID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiLWNyb3NzLWNhbmFkaWFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RibSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkay1waXhidWYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZXR0ZXh0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdldHRleHQtbWluaW1hbC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2hvc3RzY3JpcHQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdpdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGV3ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi0yLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLW5ldHdvcmtpbmcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1sb2NhbGUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1tdHJhY2UgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1zY3JpcHRzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1jb21tb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wLXRlc3RpbmcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wMyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRvYy11dGlscyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLXRoZW1lcy1zdGFuZGFyZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1jb25maWcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWVmaSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnVwZyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ251dGxzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ28tY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nby1kZXAgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nby1oZWxsb3dvcmxkID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ28tbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ29iamVjdC1pbnRyb3NwZWN0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3BlcmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncGdtZSA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3B0ZmRpc2sgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncmVwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3JvZmYgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViLWVmaSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3QtcGxheWVyID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1saWJhdiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtb214ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1tZXRhLWJhc2UgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1weXRob24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC12YWFwaSA9ICJXZWkgVGVlIE5nIDx3ZWkudGVlLm5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKzMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZG9jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWVuZ2luZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstc2F0by1lbmdpbmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndWlsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndWlsdC1uYXRpdmUgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3VtbWlib290ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3ppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWhhcmZidXp6ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWhkcGFybSA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWhlbHAybWFuLW5hdGl2ZSA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taGljb2xvci1pY29uLXRoZW1lID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taG9zdGFwLWNvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taG9zdGFwLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWh3bGF0ZGV0ZWN0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taTJjLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taWNvbi1uYW1pbmctdXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pZnVwZG93biA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0LWlmdXBkb3duID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1ib290ID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWZyYW1ld29yayA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWJvb3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5wdXRwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbnRsdG9vbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwcm91dGUyID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdGFibGVzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdXRpbHMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taXJkYS11dGlscyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pc28tY29kZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pdyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqcGVnLXR1cmJvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWpzb24tYyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tanNvbi1nbGliID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rYmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rYnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtjb25maWctZnJvbnRlbmRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2Vybi10b29scy1uYXRpdmUgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2VybmVsc2hhcmsgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuZWwtZGV2c3JjID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtleGVjLXRvb2xzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtleW1hcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbW9kID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbW9kLW5hdGl2ZSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta21zY3ViZSA9ICJDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbDNhZnBhZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxhbWUgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxhdGVuY3l0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sZGNvbmZpZy1uYXRpdmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sZXNzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmE1MiA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYWNwaSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhaW8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhcmNoaXZlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXJ0LWxncGwgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhc3N1YW4gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXRvbWljLW9wcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhdiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmJzZCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjYXAgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2FwLW5nID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNncm91cCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNoZWNrID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNsYXNzLWlzYS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29tcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjb252ZXJ0LWFzbjEtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNyb2NvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZGFlbW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG14ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRuZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRybSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmR1bXB2YWx1ZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZW52LXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcG94eSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVyYXRpb24tZm9udHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcnJvci1wZXJsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZlbnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJleGlmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmFrZWtleSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZmaSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZpbGUtY2hlY2t0cmVlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtLWV4dHJhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm9udGVuYyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY2MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY2MtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjcnlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2ZvcnRyYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnbGFkZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsdSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdwZy1lcnJvciA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ3VkZXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpMThuLWNvbGxhdGUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljYWwgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljb252ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWQzdGFnID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpbnB1dCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmpzb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJrc2JhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibWF0Y2hib3ggPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtbmwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtcGMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0LXB5dGhvbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmZzaWRtYXAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJub3RpZnkgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuc2wyID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibnNzLW1kbnMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvZ2cgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlib214aWwgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlib3dsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGFtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjYXAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNpYWNjZXNzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNyZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlMiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwZm00ID0gIk1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG5nID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBuZzEyID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBvZC1wbGFpbmVyLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwcm94eSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwdGhyZWFkLXN0dWJzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicmVwbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnJzdmcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzYW1wbGVyYXRlMCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2RsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbDIgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2VjcmV0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic20gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic25kZmlsZTEgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvbHYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic291cC0yLjQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0YXNuMSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aGVvcmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aW1lZGF0ZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGlycGMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLWNyb3NzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVuaXN0cmluZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bndpbmQgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJjdSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyaS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiLWNvbXBhdCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYjEgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2VyID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZhID0gIldlaSBUZWUgTmcgPHdlaS50ZWUubmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZhLXV0aWxzID0gIldlaSBUZWUgTmcgPHdlaS50ZWUubmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZvcmJpcyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlid2VicCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYngxMSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4MTEtZGlldCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4YXUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGNhbGlicmF0ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y2IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGNvbXBvc2l0ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y3Vyc29yID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhkYW1hZ2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGRtY3AgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGV4dCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Zml4ZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZvbnQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZvbnQyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4aSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4aW5lcmFtYSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4a2Jjb21tb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGtiZmlsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXBhcnNlci1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LWJhc2UtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zYXgtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zaW1wbGUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbDIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtdSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cG0gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJhbmRyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZW5kZXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJlcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2NybnNhdmVyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzZXR0aW5ncy1jbGllbnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2htZmVuY2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNsdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh0c3QgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHZtYyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4NmRnYSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4Nm1pc2MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHhmODZ2bSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ5YW1sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlnaHR0cGQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC1kdW1teSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWZpcm13YXJlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgtbGliYy1oZWFkZXJzID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvLWRldiA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by1ydCA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by10aW55ID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxsdm0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sb2dyb3RhdGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHJ6c3ogPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2Jpbml0c2NyaXB0cyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYnRlc3QgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzb2YgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHRwID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHRuZy1tb2R1bGVzID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0dG5nLXRvb2xzID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0dG5nLXVzdCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sejQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sem8gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1semlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHpvcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW00ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW00LW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWlseCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2VkZXBlbmQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZWRldnMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuLXBhZ2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1jb25maWctZ3RrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3Atc2F0byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWtleWJvYXJkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10ZXJtaW5hbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRoZW1lLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC13bSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1jID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1kYWRtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lbnUtY2FjaGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYS1kZW1vcyA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EtZ2wgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWVudmlyb25tZW50ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZW52aXJvbm1lbnQtZXh0c2RrID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZXh0c2RrLXRvb2xjaGFpbiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWlkZS1zdXBwb3J0ID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS10b29sY2hhaW4gPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLXdvcmxkLXBrZ2RhdGEgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWluZ2V0dHkgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaS14LXNlc3Npb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaWNvbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2VsZmltYWdlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250ZGlyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZm9udHNjYWxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rbGlicy1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWt0ZW1wID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1tYy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2R1dGlscy1pbml0c2NyaXB0cyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGVnMmRlYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1wZnIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGcxMjMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tc210cCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZC11dGlscyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW11c2wgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1teC0xLjAgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXNtID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstbGlidG9vbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXFlbXUtaGVscGVyID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5jdXJzZXMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5lYXJkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5lb24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0LXRvb2xzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldGJhc2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0dGxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLWV4cG9ydC1yb290ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5mcy11dGlscyA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5pbmphID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbnB0aCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcy1teWhvc3RuYW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9mb25vID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9oLXB1enpsZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGVuc3NoID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2wgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZy1hcmNoLWNvbmZpZyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2cta2V5cmluZ3MgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnLXV0aWxzID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3Byb2ZpbGUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcmMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3MtcmVsZWFzZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9zc3AtdXVpZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW92bWYgPSAiUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW92bWYtc2hlbGwtaW1hZ2UgPSAiUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXAxMS1raXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYWNrYWdlLWluZGV4ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGFuZ28gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXJ0ZWQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhdGNoID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXRjaGVsZiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBheC11dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGJ6aXAyID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGNpdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWFuZm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21jaWF1dGlscyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJmID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsLW5hdGl2ZSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ2xpdCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ3ogPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpbmVudHJ5ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGl4bWFuID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGl4eiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBrZ2NvbmZpZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wbS11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb2ludGVyY2FsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcG9pbnRlcmNhbC14aW5wdXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb25nLWNsb2NrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcG9wdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcG9ydG1hcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3dlcnRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHBwLWRpYWxpbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHJlbGluayA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHJlc2VudHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXByb2NwcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzZXVkbyA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHNtaXNjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHNwbGFzaCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHRlc3QtcnVubmVyID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHVsc2VhdWRpbyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHVsc2VhdWRpby1jbGllbnQtY29uZi1zYXRvID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdXp6bGVzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1uYXRpdmUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWFzeW5jID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZGlzdHJpYnV0ZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWdpdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWdpdGRiID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24taW1hZ2luZyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW1ha28gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1uYXRpdmUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5vc2UgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1udW1weSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXBleHBlY3QgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1wdHlwcm9jZXNzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHljYWlybyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB5Y3VybCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB5Z3RrID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHlyZXggPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zY29ucyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNjb25zLW5hdGl2ZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNldHVwdG9vbHMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zaXggPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zbWFydHBtID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc21tYXAgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1hc3luYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kYnVzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRpc3RyaWJ1dGUgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZG9jdXRpbHMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdGRiID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWluaXBhcnNlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW1ha28gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbmF0aXZlID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbm9zZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1udW1weSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1waXAgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHljYWlybyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weWdvYmplY3QgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2V0dXB0b29scyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zaXggPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc21tYXAgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11LWhlbHBlci1uYXRpdmUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11d3JhcHBlci1jcm9zcyA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1aWx0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1aWx0LW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xdW90YSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yYW5kcnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlMmMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZWFkbGluZSA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmVjb3JkcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmVtYWtlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlbmRlcnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlc29sdmNvbmYgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlc291cmNlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmdiID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJwY2JpbmQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJuZy10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ycG0gPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJwbXJlc29sdmUgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJzeW5jID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ0LXRlc3RzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnVieSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1bi1wb3N0aW5zdHMgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yeHZ0LXVuaWNvZGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1pY29uLXRoZW1lID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNhdG8tc2NyZWVuc2hvdCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNiYyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2NyZWVuID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNjcm5zYXZlcnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNlZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2VyZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXRzZXJpYWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2V0dGluZ3MtZGFlbW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhZG93ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3ctc2VjdXJldHR5ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3ctc3lzcm9vdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhcmVkLW1pbWUtaW5mbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNodXRkb3duLWRlc2t0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaWduaW5nLWtleXMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2xhbmcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc29jYXQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNvdXJjZS1oaWdobGlnaHQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcGVleCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3BlZXhkc3AgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNxbGl0ZTMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3F1YXNoZnMtdG9vbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3RhcnR1cC1ub3RpZmljYXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJhY2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3RyZXNzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN1YnZlcnNpb24gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3VkbyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3dhYmJlci1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2lnID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzZnN1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lza2xvZ2QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2xpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzcHJvZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3N0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtYm9vdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290Y2hhcnQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtY29tcGF0LXVuaXRzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLXNlcmlhbGdldHR5ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcC11cHJvYmVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdC1pbml0dGFiID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGFnbGliID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRhciA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGNmLWFnZW50ID0gIlJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGNsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjcC13cmFwcGVycyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXN0ZXhwb3J0LXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aTJodG1sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8gPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvLWR1bW15LW5hdGl2ZSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpZmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10aW1lID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpbnktaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyYWNlLWNtZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyZW1vciA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHNsaWIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10dGYtYml0c3RyZWFtLXZlcmEgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10emNvZGUtbmF0aXZlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6ZGF0YSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QtZnctdXRpbHMgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QtbWtpbWFnZSA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVib290Y2hhcnQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11ZGV2LWV4dHJhY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmZzMyA9ICJSYW5keSBXaXR0IDxyYW5keS5lLndpdHRAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuaWZkZWYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmluYXRpdmUtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11bnppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVwZGF0ZS1yYy5kID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdXNiaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYnV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdXRpbC1saW51eCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdXRpbC1tYWNyb3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdjg2ZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZhbGEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12YWxncmluZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZpZGVvcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdm9sYXRpbGUtYmluZHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ0ZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbi1kZW1vcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhZmZsZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhdGNoZG9nID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2F0Y2hkb2ctY29uZmlnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2F5bGFuZCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdheWxhbmQtcHJvdG9jb2xzID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2Via2l0Z3RrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uLWluaXQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13Z2V0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdoaWNoID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2ljLXRvb2xzID0gIkVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpcmVsZXNzLXRvb2xzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdwYS1zdXBwbGljYW50ID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMS1jb21tb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teDExcGVyZiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14MjY0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGF1dGggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLWltYWdlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLWtleXN5bXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwtcmVuZGVydXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC13bSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y21pc2Nwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkZy11dGlscyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkcHlpbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZXh0cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGV5ZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1ldmRldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWtleWJvYXJkID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtbGliaW5wdXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1tb3VzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LXN5bmFwdGljcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LXZtbW91c2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1jaXJydXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1mYmRldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWludGVsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tb21hcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLW9tYXBmYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLXZlc2EgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby12bXdhcmUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4NmRnYXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZkcmlwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2bWlzY3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZ2aWRtb2RlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGhvc3QgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGluZXJhbWFwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5ldGQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGluaXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGlucHV0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbnB1dC1jYWxpYnJhdG9yID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhrYmNvbXAgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGtleWJvYXJkLWNvbmZpZyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14bWx0byA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teG1vZG1hcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14b3JnLW1pbmltYWwtZm9udHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHByb3AgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhyYW5kciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14cmVzdG9wID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXJ2ZXItbm9kbS1pbml0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXJ2ZXIteGY4Ni1jb25maWcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14b3JnID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHRyYW5zID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh0c2NhbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14dXNlci1hY2NvdW50ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aWRlby10ZXN0cyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14dmluZm8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHdpbmluZm8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHogPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi15YXNtID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi16aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi16aXNvZnMtdG9vbHMtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4temxpYiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbm8tc3RhdGljLWxpYnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9uby1zdGF0aWMtbGlicy5pbmMKaW5kZXggZjhkOGMwOS4uN2MxNjVjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9uby1zdGF0aWMtbGlicy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9uby1zdGF0aWMtbGlicy5pbmMKQEAgLTI1LDYgKzI1LDkgQEAKIERJU0FCTEVfU1RBVElDX3BuLW9wZW5zc2wgPSAiIgogRElTQUJMRV9TVEFUSUNfcG4tb3BlbnNzbC1uYXRpdmUgPSAiIgogRElTQUJMRV9TVEFUSUNfcG4tbmF0aXZlc2RrLW9wZW5zc2wgPSAiIgorRElTQUJMRV9TVEFUSUNfcG4tb3BlbnNzbDEwID0gIiIKK0RJU0FCTEVfU1RBVElDX3BuLW9wZW5zc2wxMC1uYXRpdmUgPSAiIgorRElTQUJMRV9TVEFUSUNfcG4tbmF0aXZlc2RrLW9wZW5zc2wxMCA9ICIiCiAjIGxpYnNzcC1zdGF0aWMtZGV2IGluY2x1ZGVkIGluIGJ1aWxkLWFwcGxpYW5jZQogRElTQUJMRV9TVEFUSUNfcG4tZ2NjLXJ1bnRpbWUgPSAiIgogIyBsaWJ1c2IxLW5hdGl2ZSBpcyB1c2VkIHRvIGJ1aWxkIHN0YXRpYyBkZnUtdXRpbC1uYXRpdmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKaW5kZXggZTE2MmFiZS4uYWIyMDYyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKQEAgLTEsMTAgKzEsMTIgQEAKLSMgU2V0dXAgZXh0cmEgQ0ZMQUdTIGFuZCBMREZMQUdTIHdoaWNoIGhhdmUgJ3NlY3VyaXR5JyBiZW5lZml0cy4gVGhlc2UgCisjIFNldHVwIGV4dHJhIENGTEFHUyBhbmQgTERGTEFHUyB3aGljaCBoYXZlICdzZWN1cml0eScgYmVuZWZpdHMuIFRoZXNlCiAjIGRvbid0IHdvcmsgdW5pdmVyc2FsbHksIHRoZXJlIGFyZSByZWNpcGVzIHdoaWNoIGNhbid0IHVzZSBvbmUsIHRoZSBvdGhlcgogIyBvciBib3RoIHNvIGEgYmxhY2tsaXN0IGlzIG1haW50YWluZWQgaGVyZS4gVGhlIGlkZWEgd291bGQgYmUgb3ZlcgogIyB0aW1lIHRvIHJlZHVjZSB0aGlzIGxpc3QgdG8gbm90aGluZy4KICMgRnJvbSBhIFlvY3RvIFByb2plY3QgcGVyc3BlY3RpdmUsIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhbmQgdGVzdGVkCiAjIGluIHRoZSBESVNUUk89InBva3ktbHNiIiBjb25maWd1cmF0aW9uLgogCitHQ0NQSUUgPz0gIi0tZW5hYmxlLWRlZmF1bHQtcGllIgorCiAjIF9GT1JUSUZZX1NPVVJDRSByZXF1aXJlcyAtTzEgb3IgaGlnaGVyLCBzbyBkaXNhYmxlIGluIGRlYnVnIGJ1aWxkcyBhcyB0aGV5IHVzZQogIyAtTzAgd2hpY2ggdGhlbiByZXN1bHRzIGluIGEgY29tcGlsZXIgd2FybmluZy4KIGxjbF9tYXliZV9mb3J0aWZ5ID0gIiR7QGJhc2VfY29uZGl0aW9uYWwoJ0RFQlVHX0JVSUxEJywnMScsJycsJy1EX0ZPUlRJRllfU09VUkNFPTInLGQpfSIKQEAgLTEyLDk2ICsxNCw1MSBAQAogIyBFcnJvciBvbiB1c2Ugb2YgZm9ybWF0IHN0cmluZ3MgdGhhdCByZXByZXNlbnQgcG9zc2libGUgc2VjdXJpdHkgcHJvYmxlbXMKIFNFQ1VSSVRZX1NUUklOR0ZPUk1BVCA/PSAiLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkiCiAKLVNFQ1VSSVRZX0NGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC1waWUgLWZwaWUgJHtsY2xfbWF5YmVfZm9ydGlmeX0gJHtTRUNVUklUWV9TVFJJTkdGT1JNQVR9IgorIyBJbmplY3QgcGllIGZsYWdzIGludG8gY29tcGlsZXIgZmxhZ3MgaWYgbm90IGNvbmZpZ3VyZWQgd2l0aCBnY2MgaXRzZWxmCisjIGVzcGVjaWFsbHkgdXNlZnVsIHdpdGggZXh0ZXJuYWwgdG9vbGNoYWlucworU0VDVVJJVFlfUElFX0NGTEFHUyA/PSAiJHtAJycgaWYgJyR7R0NDUElFfScgZWxzZSAnLXBpZSAtZlBJRSd9IgorCitTRUNVUklUWV9OT1BJRV9DRkxBR1MgPz0gIi1uby1waWUgLWZuby1QSUUiCisKK1NFQ1VSSVRZX0NGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7U0VDVVJJVFlfUElFX0NGTEFHU30gJHtsY2xfbWF5YmVfZm9ydGlmeX0gJHtTRUNVUklUWV9TVFJJTkdGT1JNQVR9IgogU0VDVVJJVFlfTk9fUElFX0NGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfU1RSSU5HRk9STUFUfSIKIAogU0VDVVJJVFlfTERGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC1XbCwteixyZWxybywteixub3ciCiBTRUNVUklUWV9YX0xERkxBR1MgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtV2wsLXoscmVscm8iCiAKICMgcG93ZXJwYyBkb2VzIG5vdCBnZXQgb24gd2l0aCBwaWUgZm9yIHJlYXNvbnMgbm90IGxvb2tlZCBpbnRvIGFzIHlldAotU0VDVVJJVFlfQ0ZMQUdTX3Bvd2VycGMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7bGNsX21heWJlX2ZvcnRpZnl9IgotIyBEZWFsIHdpdGggcHBjIHNwZWNpZmljIGxpbmtlciBmYWlsdXJlcyB3aGVuIHVzaW5nIHRoZSBjZmxhZ3MKLVNFQ1VSSVRZX0NGTEFHU19wbi1kYnVzX3Bvd2VycGMgPSAiIgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWRidXMtcHRlc3RfcG93ZXJwYyA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tbGlibWF0Y2hib3hfcG93ZXJwYyA9ICIiCitTRUNVUklUWV9DRkxBR1NfcG93ZXJwYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgJHtsY2xfbWF5YmVfZm9ydGlmeX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmdjY19wb3dlcnBjID0gIiIKK0dDQ1BJRV9wb3dlcnBjID0gIiIKIAogIyBhcm0gc3BlY2lmaWMgc2VjdXJpdHkgZmxhZyBpc3N1ZXMKLVNFQ1VSSVRZX0NGTEFHU19wbi1sdHRuZy10b29sc19hcm0gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1hc3BlbGwgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1iZWVjcnlwdCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWNvcmV1dGlscyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWN1cHMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1kYiA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWRpcmVjdGZiID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tZ2xpYmMgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdsaWJjLWluaXRpYWwgPSAiIgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWVsZnV0aWxzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZW5jaGFudCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWV4cGVjdCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWZsYWMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nY2MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nY2MtcnVudGltZSA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tZ2NjLXNhbml0aXplcnMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nZGIgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nbXAgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nbnV0bHMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1ncGdtZSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdydWIgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdydWItZWZpID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS1uYXRpdmUgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdydWItZWZpLXg4Ni1uYXRpdmUgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdydWItZWZpLWk1ODYtbmF0aXZlID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS14ODYtNjQtbmF0aXZlID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4taGFyZmJ1enogPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1rZXhlYy10b29scyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWlwdGFibGVzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliYWlvID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliY2FwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliZ2NjID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliaWQzdGFnID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGlibmV3dC1weXRob24gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJnbHUgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJwY2FwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGlicGNyZSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYnByb3h5ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbWVzYSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLW1lc2EtZ2wgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1vcGVuc3NsID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tb3BlbnNwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHBwID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uLXB5Y3VybCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB5dGhvbi1udW1weSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB5dGhvbjMtbnVtcHkgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24zLXB5Y2Fpcm8gPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24zLXB5Y3VybCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB5dGhvbjMtcHlncGdtZSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB5dGhvbjMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1zeXNsaW51eCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXNsYW5nID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tc291cmNlLWhpZ2hsaWdodCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXRjbCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXRpZmYgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi11Y2xpYmMgPSAiIgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXVjbGliYy1pbml0aWFsID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi12YWxncmluZCA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4temxpYiA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgorCitTRUNVUklUWV9DRkxBR1NfcG4tbWtlbGZpbWFnZV94ODYgPSAiIgorCitTRUNVUklUWV9DRkxBR1NfcG4tdmFsZ3JpbmQgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfTERGTEFHU19wbi12YWxncmluZCA9ICIiCitTRUNVUklUWV9DRkxBR1NfcG4tc3lza2xvZ2QgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfTERGTEFHU19wbi1zeXNrbG9nZCA9ICIiCiAKICMgUmVjaXBlcyB3aGljaCBmYWlsIHRvIGNvbXBpbGUgd2hlbiBlbGV2YXRpbmcgLVdmb3JtYXQtc2VjdXJpdHkgdG8gYW4gZXJyb3IKIFNFQ1VSSVRZX1NUUklOR0ZPUk1BVF9wbi1idXN5Ym94ID0gIiIKIFNFQ1VSSVRZX1NUUklOR0ZPUk1BVF9wbi1nY2MgPSAiIgotU0VDVVJJVFlfU1RSSU5HRk9STUFUX3BuLW9oLXB1enpsZXMgPSAiIgogCi1UQVJHRVRfQ0ZMQUdTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfQ0ZMQUdTfSIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfQ0ZMQUdTfSIKIFRBUkdFVF9MREZMQUdTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfTERGTEFHU30iCiAKIFNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLWdjYy1ydW50aW1lID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKIFNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLWdsaWJjID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKIFNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLWdsaWJjLWluaXRpYWwgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgotU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tdWNsaWJjID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKLVNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLXVjbGliYy1pbml0aWFsID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKIFNFQ1VSSVRZX0xERkxBR1NfcG4teGY4Ni12aWRlby1mYmRldiA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCiBTRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8taW50ZWwgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgogU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLW9tYXBmYiA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCkBAIC0xMTAsNCArNjcsNyBAQAogU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLXZtd2FyZSA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCiBTRUNVUklUWV9MREZMQUdTX3BuLXhzZXJ2ZXIteG9yZyA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCiAKLVRBUkdFVF9DQ19BUkNIX2FwcGVuZF9wbi1iaW51dGlscyA9ICIgJHtTRUNVUklUWV9DRkxBR1N9ICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZF9wbi1iaW51dGlscyA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX3BuLWdjYyA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX3BuLWdkYiA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX3BuLXBlcmYgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKaW5kZXggM2QzZjZhYy4uOWFlMmE5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKQEAgLTE0LDYgKzE0LDggQEAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL25hdGl2ZXNkay1saWJpbnRsID89ICJuYXRpdmVzZGstZ2xpYmMiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstbGliaWNvbnYgPz0gIm5hdGl2ZXNkay1nbGliYyIKIAorRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgKz0gImxkY29uZmlnIgorCiAjVVNFX05MUyA/PSAibm8iCiAKIENYWEZMQUdTICs9ICItZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCmluZGV4IDNkYjE2ZTguLjE3ODdhODIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCkBAIC0yMiwxMyArMjIsMTIgQEAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL25hdGl2ZXNkay0ke1NES19QUkVGSVh9bGliYy1pbml0aWFsID89ICJuYXRpdmVzZGstZ2xpYmMtaW5pdGlhbCIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2dldHRleHQgPz89ICJnZXR0ZXh0IgogCi1HQ0NWRVJTSU9OID89ICI2LjMlIgorR0NDVkVSU0lPTiA/PSAiNy4lIgogU0RLR0NDVkVSU0lPTiA/PSAiJHtHQ0NWRVJTSU9OfSIKLUJJTlVWRVJTSU9OID89ICIyLjI4JSIKLUdEQlZFUlNJT04gPz0gIjcuMTIlIgotR0xJQkNWRVJTSU9OID89ICIyLjI1IgotVUNMSUJDVkVSU0lPTiA/PSAiMS4wJSIKLUxJTlVYTElCQ1ZFUlNJT04gPz0gIjQuMTAlIgorQklOVVZFUlNJT04gPz0gIjIuMjklIgorR0RCVkVSU0lPTiA/PSAiOC4wJSIKK0dMSUJDVkVSU0lPTiA/PSAiMi4yNiUiCitMSU5VWExJQkNWRVJTSU9OID89ICI0LjEyJSIKIAogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjID89ICIke0dDQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9ID89ICIke0dDQ1ZFUlNJT059IgpAQCAtNDgsNyArNDcsNyBAQAogUFJFRkVSUkVEX1ZFUlNJT05fYmludXRpbHMgPz0gIiR7QklOVVZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fYmludXRpbHMtbmF0aXZlID89ICIke0JJTlVWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzLWNyb3NzLSR7VEFSR0VUX0FSQ0h9ID89ICIke0JJTlVWRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzLWNyb3Nzc2RrLSR7U0RLX0FSQ0h9ID89ICIke0JJTlVWRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzLWNyb3Nzc2RrLSR7U0RLX1NZU30gPz0gIiR7QklOVVZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fYmludXRpbHMtY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfSA/PSAiJHtCSU5VVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nZGIgPz0gIiR7R0RCVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nZGItY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R0RCVkVSU0lPTn0iCkBAIC02NCw4ICs2Myw2IEBACiBQUkVGRVJSRURfVkVSU0lPTl9nbGliYy1pbml0aWFsICAgICAgICAgICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1nbGliYy1pbml0aWFsICA/PSAiJHtHTElCQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSAgID89ICIke0dMSUJDVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl91Y2xpYmMgICAgICAgICAgICAgICAgICAgPz0gIiR7VUNMSUJDVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl91Y2xpYmMtaW5pdGlhbCAgICAgICAgICAgPz0gIiR7VUNMSUJDVkVSU0lPTn0iCiAjIGRvbid0IHVzZSB2ZXJzaW9uIGVhcmxpZXIgdGhhbiAxLjQgZm9yIGd6aXAtbmF0aXZlLCBhcyBpdCdzIG5lY2Vzc2FyeSBmb3IKICMgc29tZSBwYWNrYWdlcyB1c2luZyBhbiBhcmNoaXZlIGZvcm1hdCBpbmNvbXBhdGlibGUgd2l0aCBlYXJsaWVyIGd6aXAKIFBSRUZFUlJFRF9WRVJTSU9OX2d6aXAtbmF0aXZlID89ICIxLjgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3VuaW5hdGl2ZS1mbGFncy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3VuaW5hdGl2ZS1mbGFncy5pbmMKaW5kZXggYjZhOTQ0ZS4uZmViZjJhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS91bmluYXRpdmUtZmxhZ3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdW5pbmF0aXZlLWZsYWdzLmluYwpAQCAtMSwxMyArMSwzIEBACi0jIGh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL0dDQzUKLSMgV2UgbWF5IHNlZSBiaW5hcmllcyBidWlsdCB3aXRoIGdjYzUgcnVuIG9yIGxpbmtlZCBpbnRvIGdjYzQgZW52aXJvbm1lbnQKLSMgc28gdXNlIHRoZSBvbGRlciBsaWJzdGRjKysgc3RhbmRhcmQgZm9yIG5vdyB1bnRpbCB3ZSBkb24ndCBzdXBwb3J0IGdjYzQKLSMgb24gdGhlIGhvc3Qgc3lzdGVtLgotQlVJTERfQ1hYRkxBR1NfYXBwZW5kID0gIiAtRF9HTElCQ1hYX1VTRV9DWFgxMV9BQkk9MCIKLQotIyBpY3UgY29uZmlndXJlIGRlZmF1bHRzIHRvIENYWDExIGlmIG5vIC1zdGQ9IG9wdGlvbiBpcyBwYXNzZWQgaW4gQ1hYRkxBR1MKLSMgdGhlcmVmb3JlIHBhc3Mgb25lCi1CVUlMRF9DWFhGTEFHU19hcHBlbmRfcG4taWN1LW5hdGl2ZSA9ICIgLXN0ZD1jKys5OCIKLQogIyBTb21lIGRpc3Ryb3MgKHVidW50dSAxNi4xMCwgZGViaWFuLXRlc3RpbmcpIGRlZmF1bHQgdG8gZ2NjIGNvbmZpZ3VyZWQgd2l0aAogIyAtLWVuYWJsZS1kZWZhdWx0LXBpZSAoc2VlIGdjYyAtdikuIFRoaXMgYnJlYWtzIGUuZy4gcHJlbGluay1uYXRpdmUgb24gYSBwaWUKICMgZGVmYXVsdCBzeXN0ZW0gaWYgYmludXRpbHMtbmF0aXZlIHdhcyBidWlsdCBvbiBhIHN5c3RlbSB3aGljaCBpcyBub3QgcGllIGRlZmF1bHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYwppbmRleCBkNGJkZGRmLi40OWU5NTE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3dvcmxkLWJyb2tlbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jCkBAIC03LDI4ICs3LDE0IEBACiAKICMgZXJyb3I6IG5vIG1lbWJlciBuYW1lZCAnc2luX3BvcnQnIGluICdzdHJ1Y3Qgc29ja2FkZHJfaW42JwogIyB0aGlzIGlzIGR1ZSB0byBsaWJ0aXJwYyB1c2luZyBpcHY2IGJ1dCBwb3J0bWFwIHJwYyBleHBlY3RpbmcgaXB2NAotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXBvcnRtYXBfbGliYy1tdXNsID0gIjEiCiBFWENMVURFX0ZST01fV09STERfcG4tdW5mczNfbGliYy1tdXNsID0gIjEiCiAKICMgZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ19TVEFUX1ZFUicKIEVYQ0xVREVfRlJPTV9XT1JMRF9wbi1wc2V1ZG9fbGliYy1tdXNsID0gIjEiCiAKLSMgZXJyb3I6IE5lZWQgdG8gaW1wbGVtZW50IGN1c3RvbSBJL08KLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1saWJzb2x2X2xpYmMtbXVzbCA9ICIxIgotCi0jIHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHB0aHJlYWRfdHJ5am9pbl9ucCcKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1idHJmcy10b29sc19saWJjLW11c2wgPSAiMSIKLQogIyBlcnJvcjogZXJyb3IuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQogRVhDTFVERV9GUk9NX1dPUkxEX3BuLXByZWxpbmtfbGliYy1tdXNsID0gIjEiCiAKLSMgZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ09fQ1JFQVQnCi1FWENMVURFX0ZST01fV09STERfcG4tbGliYnNkX2xpYmMtbXVzbCA9ICIxIgotCi0jIGVycm9yOiBleHBlY3RlZCBkZWNsYXJhdGlvbiBzcGVjaWZpZXJzIGJlZm9yZSAnX19ub25udWxsJwotRVhDTFVERV9GUk9NX1dPUkxEX3BuLWx0dG5nLXVzdF9saWJjLW11c2wgPSAiMSIKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1sdHRuZy10b29sc19saWJjLW11c2wgPSAiMSIKLQogIyBlcnJvcjogb2JzdGFjay5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CiBFWENMVURFX0ZST01fV09STERfcG4tc3lzdGVtdGFwX2xpYmMtbXVzbCA9ICIxIgogRVhDTFVERV9GUk9NX1dPUkxEX3BuLXN5c3RlbXRhcC11cHJvYmVzX2xpYmMtbXVzbCA9ICIxIgpAQCAtMzcsMjAgKzIzLDkgQEAKICMgICAgICAgICAgICB2b2lkICgqX2Z1bmN0aW9uKShzaWd2YWxfdCk7CiBFWENMVURFX0ZST01fV09STERfcG4tcWVtdV9saWJjLW11c2wgPSAiMSIKIAotIyBnbGliYyBzcGVjaWZpYyBmdW5jcmlvbnMKLSMgZXJyb3I6IHN0b3JhZ2Ugc2l6ZSBvZiAnbWknIGlzbid0IGtub3duIHN0cnVjdCBtYWxsaW5mbyBtaQotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXZhbGdyaW5kX2xpYmMtbXVzbCA9ICIxIgotCiAjIGVycm9yOiBmb3JtYXQgJyVzJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2NoYXIgKicsIGJ1dCBhcmd1bWVudCA0IGhhcyB0eXBlICdpbnQnIFstV2Vycm9yPWZvcm1hdD1dCiAjICAgc25wcmludGYoYnVmLCBzaXplLCAiJXMiLCBzdHJlcnJvcl9yKGVyciwgc2J1Ziwgc2l6ZW9mKHNidWYpKSk7CiBFWENMVURFX0ZST01fV09STERfcG4tcGVyZl9saWJjLW11c2wgPSAiMSIKIAogIyBlcnJvcjogJ1JUTERfTkVYVCcgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCiBFWENMVURFX0ZST01fV09STERfcG4tZ2NjLXNhbml0aXplcnNfbGliYy1tdXNsID0gIjEiCi0KLSMgZ2NjIGZhaWxzIHRvIGJ1aWxkIHdoZW4gbGlidXdpbmQgaXMgc3RhZ2VkIGJlZm9yZSBidWlsZGluZyBnY2Mgc2luY2UKLSMgaXQgdGhlbiBmaW5kcyB0aGUgdW53aW5kLmggaGVhZGVyIGZyb20gbGlidW53aW5kIGFuZCBub3QgZnJvbSBsaWJnY2MKLSMgYW5kIG9uIGFybSBzcGVjaWFsbHkgdGhleSBhcmUgZGlmZmVyZW50IHNpbmNlIGxpYmdjYyBkZWZpbmVzIHNvbWUgZnVuY3Rpb25zCi0jIGFzIG1hY3JvcyB3aGljaCBhcmUgZnVuY3Rpb25zIGluIGxpYnVud2luZCBhbmQgaXQgZmFpbHMgZHVyaW5nIGxpbmtpbmcKLSMgbGliYmFja3RyYWNlL2JhY2t0cmFjZS5jOjc2OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfVW53aW5kX0dldElQJwotRVhDTFVERV9GUk9NX1dPUkxEX3BuLWxpYnVud2luZF9saWJjLW11c2xfYXJtID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCmluZGV4IDM1YjkxMDMuLmE1NWUyODMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCkBAIC01Niw3ICs1Niw2IEBACiBkb191Ym9vdF9ta2ltYWdlW2RvY10gPSAiQ3JlYXRlcyBhIHVJbWFnZSBmaWxlIGZyb20gdGhlIGtlcm5lbCBmb3IgdGhlIFUtQm9vdCBib290bG9hZGVyIgogZG9fdW5wYWNrW2RvY10gPSAiVW5wYWNrcyB0aGUgc291cmNlIGNvZGUgaW50byBhIHdvcmtpbmcgZGlyZWN0b3J5IgogZG9fdmFsaWRhdGVfYnJhbmNoZXNbZG9jXSA9ICJFbnN1cmVzIHRoYXQgdGhlIHNvdXJjZS9tZXRhIGJyYW5jaGVzIGFyZSBvbiB0aGUgbG9jYXRpb25zIHNwZWNpZmllZCBieSB0aGVpciBTUkNSRVYgdmFsdWVzIGZvciBhIGxpbnV4LXlvY3RvIHN0eWxlIGtlcm5lbCIKLWRvX3ZtaW1nW2RvY10gPSAiQ3JlYXRlcyBhbiBpbWFnZSBmb3IgdXNlIHdpdGggVk13YXJlIG9yIFZpcnR1YWxCb3ggY29tcGF0aWJsZSB2aXJ0dWFsIG1hY2hpbmUgaG9zdHMgKGJhc2VkIG9uIElNQUdFX0ZTVFlQRVMgZWl0aGVyIC52bWRrIG9yIC52ZGkpIgogCiAjIERFU0NSSVBUSU9OUyBGT1IgVkFSSUFCTEVTICMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mCmluZGV4IGZjMTY1MDIuLjRiYTBiOTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKQEAgLTksNyArOSw5IEBACiAKICMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwotTEFZRVJWRVJTSU9OX2NvcmUgPSAiMTAiCitMQVlFUlZFUlNJT05fY29yZSA9ICIxMSIKKworTEFZRVJTRVJJRVNfQ09SRU5BTUVTID0gInJvY2tvIgogCiBCQkxBWUVSU19MQVlFUklOREVYX05BTUVfY29yZSA9ICJvcGVuZW1iZWRkZWQtY29yZSIKIApAQCAtMzgsNiArNDAsNyBAQAogICBiYXNlLXBhc3N3ZCBcCiAgIG9wa2ctdXRpbHMgXAogICBnc3RyZWFtZXIxLjAtbWV0YS1iYXNlIFwKKyAgY2EtY2VydGlmaWNhdGVzIFwKICIKIAogU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiIFwKQEAgLTQ4LDggKzUxLDE2IEBACiAgIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLT5wZXJsIFwKICAgY2EtY2VydGlmaWNhdGVzLT5vcGVuc3NsIFwKICAgaW5pdHJhbWZzLWZyYW1ld29yay0+JHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gXAotICBpbml0cmFtZnMtZnJhbWV3b3JrLT5zeXN0ZW1kIFwKICAgaW5pdHJhbWZzLWZyYW1ld29yay0+ZXVkZXYgXAorICBpbml0cmFtZnMtZnJhbWV3b3JrLT5zeXN0ZW1kIFwKKyAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaS0+ZG9zZnN0b29scyBcCisgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmktPmUyZnNwcm9ncyBcCisgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmktPnBhcnRlZCBcCisgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmktPnV0aWwtbGludXggXAorICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtPmUyZnNwcm9ncyBcCisgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC0+Z3J1YiBcCisgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC0+cGFydGVkIFwKKyAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLT51dGlsLWxpbnV4IFwKICAgbGliZXJhdGlvbi1mb250cy0+Zm9udGNvbmZpZyBcCiAgIGNhbnRhcmVsbC1mb250cy0+Zm9udGNvbmZpZyBcCiAgIGdub21lLWljb24tdGhlbWUtPmxpYnJzdmcgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mCmluZGV4IGQyMTBhMGUuLjNlMmQyNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYKQEAgLTEwNSw2ICsxMDUsMTAgQEAKIFNQRFhMSUNFTlNFTUFQW0FGTHYyXSA9ICJBRkwtMi4wIgogU1BEWExJQ0VOU0VNQVBbQUZMdjFdID0gIkFGTC0xLjIiCiAKKyNDRERMIHZhcmlhdGlvbnMKK1NQRFhMSUNFTlNFTUFQW0NEREx2MV0gPSAiQ0RETC0xLjAiCitTUERYTElDRU5TRU1BUFtDRERMLTFdID0gIkNEREwtMS4wIgorCiAjT3RoZXIgdmFyaWF0aW9ucwogU1BEWExJQ0VOU0VNQVBbRVBMdjEuMF0gPSAiRVBMLTEuMCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNTg2LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k1ODYuY29uZgppbmRleCA5OTA4M2ZiLi40MWU1ZTE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k1ODYuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k1ODYuY29uZgpAQCAtMSw1ICsxLDQgQEAKIFNES19BUkNIID0gImk1ODYiCiBTREtfQ0NfQVJDSCA9ICItbWFyY2g9aTU4NiIKIEFCSUVYVEVOU0lPTl9jbGFzcy1uYXRpdmVzZGsgPSAiIgotU0RLX09MREVTVF9LRVJORUwgPSAiMi42LjMyIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k2ODYuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTY4Ni5jb25mCmluZGV4IGNmMjI3ODQuLmZlNDA2OTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTY4Ni5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTY4Ni5jb25mCkBAIC0xLDQgKzEsMyBAQAogU0RLX0FSQ0ggPSAiaTY4NiIKIFNES19DQ19BUkNIID0gIi1tYXJjaD1pNjg2IgogQUJJRVhURU5TSU9OX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1TREtfT0xERVNUX0tFUk5FTCA9ICIyLjYuMzIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL3g4Nl82NC5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay94ODZfNjQuY29uZgppbmRleCA3ZDJlNzE3Li42MTQzOWI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL3g4Nl82NC5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsveDg2XzY0LmNvbmYKQEAgLTEsMyArMSwyIEBACiBTREtfQVJDSCA9ICJ4ODZfNjQiCiBBQklFWFRFTlNJT05fY2xhc3MtbmF0aXZlc2RrID0gIiIKLVNES19PTERFU1RfS0VSTkVMID0gIjIuNi4zMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS12ZnAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXZmcC5pbmMKaW5kZXggNjY3YjYwOS4uN2FlNzQ1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXZmcC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXZmcC5pbmMKQEAgLTUsOCArNSw4IEBACiBUVU5FVkFMSURbdmZwXSA9ICJFbmFibGUgVmVjdG9yIEZsb2F0aW5nIFBvaW50ICh2ZnApIHVuaXQuIgogVFVORV9DQ0FSR1NfTUZQVSAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwJywgJyB2ZnAnLCAnJywgZCl9IgogCi1UVU5FX0NDQVJHUyAgLj0gIiR7QCAoJyAtbWZwdT0lcyAnICUgZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKS5zcGxpdCgpWy0xXSkgaWYgKGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykgIT0gJycpIGVsc2UgJyd9IgotQVJNUEtHU0ZYX0ZQVSA9ICIke0AgKCctJXMnICAgICAgICAlIGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykuc3BsaXQoKVstMV0ucmVwbGFjZSgndmZwdjMtZDE2JywgJ3ZmcHYzZDE2JykpIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpICE9ICcnKSBlbHNlICcnfSIKK1RVTkVfQ0NBUkdTICAuPSAiJHtAICgnIC1tZnB1PSVzJyAlIGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykuc3BsaXQoKVstMV0pIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpICE9ICcnKSBlbHNlICcnfSIKK0FSTVBLR1NGWF9GUFUgPSAiJHtAICgnLSVzJyAgICAgICAlIGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykuc3BsaXQoKVstMV0ucmVwbGFjZSgndmZwdjMtZDE2JywgJ3ZmcHYzZDE2JykpIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpICE9ICcnKSBlbHNlICcnfSIKIAogVFVORVZBTElEW2NhbGxjb252ZW50aW9uLWhhcmRdID0gIkVuYWJsZSBFQUJJIGhhcmQgZmxvYXQgY2FsbCBjb252ZW50aW9uLCByZXF1aXJlcyBWRlAuIgogVFVORV9DQ0FSR1NfTUZMT0FUID0gIiR7QCBiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdjYWxsY29udmVudGlvbi1oYXJkJywgJ2hhcmQnLCAnc29mdGZwJywgZCkgaWYgKGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykgIT0gJycpIGVsc2UgJycgfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKaW5kZXggMGU0MTAzYi4uZTY0YjBjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKQEAgLTI1LDYgKzI1LDcgQEAKIAogIyBQcm92aWRlIHRoZSBuZnMgc2VydmVyIGtlcm5lbCBtb2R1bGUgZm9yIGFsbCBxZW11IGltYWdlcwogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0byA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvLXJ0ID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKIAogTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAicm5nLXRvb2xzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCmluZGV4IDBjNjBjZjIuLjdkOWZhNTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCkBAIC00LDUgKzQsNSBAQAogUUJfTUFDSElORSA9ICItbWFjaGluZSBtYWx0YSIKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eVMwIGNvbnNvbGU9dHR5IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQotUUJfT1BUX0FQUEVORCA9ICItdmdhIGNpcnJ1cyAtc2hvdy1jdXJzb3IgLXVzYiAtdXNiZGV2aWNlIHRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgorUUJfT1BUX0FQUEVORCA9ICItdmdhIGNpcnJ1cyAtc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKIFFCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLSR7VFVORV9BUkNIfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jCmluZGV4IGFjZjlkNTUuLjE0NTZiZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYwpAQCAtMTIsOSArMTIsNiBAQAogUUJfQVVESU9fT1BUID0gIi1zb3VuZGh3IGFjOTcsZXMxMzcwIgogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gInZnYT0wIHV2ZXNhZmIubW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSBvcHJvZmlsZS50aW1lcj0xIHV2ZXNhZmIudGFza190aW1lb3V0PS0xIgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQotUUJfT1BUX0FQUEVORCA9ICItdmdhIHZtd2FyZSAtc2hvdy1jdXJzb3IgLXVzYiAtdXNiZGV2aWNlIHRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgorUUJfT1BUX0FQUEVORCA9ICItdmdhIHZtd2FyZSAtc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKIAotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidXZlc2FmYiIKLUtFUk5FTF9NT0RVTEVfUFJPQkVDT05GICs9ICJ1dmVzYWZiIgogVVZFU0FfTU9ERSA/PSAiNjQweDQ4MC0zMiIKLW1vZHVsZV9jb25mX3V2ZXNhZmIgPSAib3B0aW9ucyB1dmVzYWZiIG1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMi5pbmMKaW5kZXggY2UwNDQ1Zi4uYTkwYzBmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMyLmluYwpAQCAtNiw3ICs2LDggQEAKIFRVTkVDT05GTElDVFNbbWlwczMyXSA9ICJuNjQgbjMyIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ21pcHMzMicsICcgLW1hcmNoPW1pcHMzMicsICcnLCBkKX0iCiAKLUFWQUlMVFVORVMgKz0gIm1pcHMzMiBtaXBzMzJlbCBtaXBzMzItbmYgbWlwczMyZWwtbmYiCisjIEJhc2UgVHVuZXMgKEhhcmQgRmxvYXQpCitBVkFJTFRVTkVTICs9ICJtaXBzMzIgbWlwczMyZWwiCiAKIFRVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwc30gbWlwczMyIgogTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMyID0gIm1pcHMzMiIKQEAgLTE2LDYgKzE3LDkgQEAKIE1JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMmVsID0gIm1pcHMzMmVsIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMmVsID0gIm1pcHNlbCBtaXBzMzJlbCIKIAorIyBTb2Z0IEZsb2F0CitBVkFJTFRVTkVTICs9ICJtaXBzMzItbmYgbWlwczMyZWwtbmYiCisKIFRVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzItbmYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwcy1uZn0gbWlwczMyIgogTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMyLW5mID0gIm1pcHMzMiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzItbmYgPSAibWlwcy1uZiBtaXBzMzItbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnIyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCmluZGV4IDVlMzk4Y2IuLjE0NDczY2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCkBAIC02LDcgKzYsNyBAQAogVFVORUNPTkZMSUNUU1ttaXBzMzJyMl0gPSAibjY0IG4zMiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzMzJyMicsICcgLW1hcmNoPW1pcHMzMnIyJywgJycsIGQpfSIKIAotIyBoYXJkIGZsb2F0CisjIEJhc2UgVHVuZXMgKEhhcmQgRmxvYXQpCiBBVkFJTFRVTkVTICs9ICJtaXBzMzJyMiBtaXBzMzJyMmVsIgogCiBUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwc30gbWlwczMycjIiCkBAIC0xNyw3ICsxNyw3IEBACiBNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzMzJyMmVsID0gIm1pcHMzMnIyZWwiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjJlbCA9ICJtaXBzZWwgbWlwczMyZWwgbWlwczMycjJlbCIKIAotIyBzb2Z0IGZsb2F0CisjIFNvZnQgRmxvYXQKIEFWQUlMVFVORVMgKz0gIm1pcHMzMnIyLW5mIG1pcHMzMnIyZWwtbmYiCiAKIFRVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMi1uZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzLW5mfSBtaXBzMzJyMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyNi5pbmMKaW5kZXggZGVhMzNlYS4uNDQzNjljYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyNi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyNi5pbmMKQEAgLTYsNyArNiw3IEBACiBUVU5FQ09ORkxJQ1RTW21pcHNpc2EzMnI2XSA9ICJuNjQgbjMyIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ21pcHNpc2EzMnI2JywgJyAtbWFyY2g9bWlwczMycjYnLCAnJywgZCl9IgogCi0jIEJhc2UgVHVuZXMKKyMgQmFzZSBUdW5lcyAoSGFyZCBGbG9hdCkKIEFWQUlMVFVORVMgKz0gIm1pcHNpc2EzMnI2IG1pcHNpc2EzMnI2ZWwiCiAKIFRVTkVfRkVBVFVSRVNfdHVuZS1taXBzaXNhMzJyNiA9ICJvMzIgYmlnZW5kaWFuIG1pcHNpc2EzMnI2IGZwdS1oYXJkIHI2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCmluZGV4IDczNjU5NTMuLjAyM2ViNWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKQEAgLTEwLDcgKzEwLDggQEAKIAogTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAia2VybmVsLW1vZHVsZXMiCiAKLUlNQUdFX0ZTVFlQRVMgKz0gImxpdmUiCitJTUFHRV9GU1RZUEVTID89ICJsaXZlIgorTk9JU08gPz0gIjEiCiAKIEtFUk5FTF9JTUFHRVRZUEUgPz0gImJ6SW1hZ2UiCiAKQEAgLTIwLDcgKzIxLDcgQEAKICMga2VybmVsLXJlbGF0ZWQgdmFyaWFibGVzCiAjCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz89ICJsaW51eC15b2N0byIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTIlIgogCiAjCiAjIFhTRVJWRVIgc3ViY29tcG9uZW50cywgdXNlZCB0byBidWlsZCB0aGUgWFNFUlZFUiB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2L2FyY2gteDg2LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni9hcmNoLXg4Ni5pbmMKaW5kZXggZTUxZDU5NS4uNzA4MTRiOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2L2FyY2gteDg2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYvYXJjaC14ODYuaW5jCkBAIC0yNiw2ICsyNiw3IEBACiBUVU5FX0FTQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXgzMicsICcteDMyJywgJycsIGQpfSIKICMgdXNlciBtb2RlIHFlbXUgZG9lc24ndCBzdXBwb3J0IHgzMgogTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXgzMicsICdxZW11LXVzZXJtb2RlJywgJycsIGQpfSIKK01BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ214MzInLCAneDg2LXgzMjonLCAnJyAsZCl9IgogCiAjIEVMRjY0IEFCSQogVFVORVZBTElEW202NF0gPSAiSUEzMmUgKHg4Nl82NCkgRUxGNjQgc3RhbmRhcmQgQUJJIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKaW5kZXggNmI4NzVlNC4uYzg5MzJkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCkBAIC0xNSw2ICsxNSw2IEBACiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZlcnNhdGlsZXBiIgogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCwxMTUyMDAgY29uc29sZT10dHkiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5Ci1RQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC11c2JkZXZpY2UgdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTAlIgorUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xMiUiCiBRQl9EVEIgPSAiJHtAYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvJywgJzQuNycsICcnLCAnekltYWdlLXZlcnNhdGlsZS1wYi5kdGInLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXBwYy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVwcGMuY29uZgppbmRleCBhOWVmNjRiLi41MzdiMmY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXBwYy5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cHBjLmNvbmYKQEAgLTE3LDUgKzE3LDUgQEAKIFFCX0NQVSA9ICItY3B1IEc0IgogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5IGNvbnNvbGU9dHR5UzAiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5Ci1RQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC11c2JkZXZpY2UgdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCitRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgogUUJfVEFQX09QVCA9ICItbmV0ZGV2IHRhcCxpZD1uZXQwLGlmbmFtZT1AVEFQQCxzY3JpcHQ9bm8sZG93bnNjcmlwdD1ubyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCmluZGV4IDEwMTg5Y2IuLmZjYzQ0NTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgpAQCAtMjUsOSArMjUsMTMgQEAKICAgICAgICAgICAgeHNlcnZlci14b3JnLW1vZHVsZS1saWJpbnQxMCBcCiAgICAgICAgICAgICIKIAotTUFDSElORV9GRUFUVVJFUyArPSAieDg2IgorTUFDSElORV9GRUFUVVJFUyArPSAieDg2IHBjaSIKIAogTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMgKz0gInY4NmQiCiAKK0tFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInV2ZXNhZmIiCitLRVJORUxfTU9EVUxFX1BST0JFQ09ORiArPSAidXZlc2FmYiIKK21vZHVsZV9jb25mX3V2ZXNhZmIgPSAib3B0aW9ucyB1dmVzYWZiIG1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0iCisKIFdLU19GSUxFID89ICJkaXJlY3RkaXNrLndrcyIKIGRvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAic3lzbGludXg6ZG9fcG9wdWxhdGVfc3lzcm9vdCBzeXNsaW51eC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgZG9zZnN0b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCmluZGV4IGMyNmRkYTIuLmM1M2Y3YTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgpAQCAtMjQsOSArMjQsMTMgQEAKICAgICAgICAgICAgeHNlcnZlci14b3JnLW1vZHVsZS1saWJpbnQxMCBcCiAgICAgICAgICAgICIKIAotTUFDSElORV9GRUFUVVJFUyArPSAieDg2IgorTUFDSElORV9GRUFUVVJFUyArPSAieDg2IHBjaSIKIAogTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMgKz0gInY4NmQiCiAKK0tFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInV2ZXNhZmIiCitLRVJORUxfTU9EVUxFX1BST0JFQ09ORiArPSAidXZlc2FmYiIKK21vZHVsZV9jb25mX3V2ZXNhZmIgPSAib3B0aW9ucyB1dmVzYWZiIG1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0iCisKIFdLU19GSUxFID89ICJkaXJlY3RkaXNrLndrcyIKIGRvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAic3lzbGludXg6ZG9fcG9wdWxhdGVfc3lzcm9vdCBzeXNsaW51eC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgZG9zZnN0b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc2FuaXR5LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3Nhbml0eS5jb25mCmluZGV4IDQ2YmRiZWIuLjM5MGQzNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc2FuaXR5LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZgpAQCAtMyw3ICszLDcgQEAKICMgU2VlIHNhbml0eS5iYmNsYXNzCiAjCiAjIEV4cGVydCB1c2VycyBjYW4gY29uZmlybSB0aGVpciBzYW5pdHkgd2l0aCAidG91Y2ggY29uZi9zYW5pdHkuY29uZiIKLUJCX01JTl9WRVJTSU9OID0gIjEuMzMuNCIKK0JCX01JTl9WRVJTSU9OID0gIjEuMzUuMCIKIAogU0FOSVRZX0FCSUZJTEUgPSAiJHtUTVBESVJ9L2FiaV92ZXJzaW9uIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvcGtnY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9wa2djb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYTUyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvcGtnY29uZgpAQCAtMCwwICsxLDEwIEBACitDb3B5cmlnaHQgKGMpIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYsIDIwMTcKKyAgICBwa2djb25mIGF1dGhvcnMgKHNlZSBBVVRIT1JTIGZpbGUgaW4gc291cmNlIGRpcmVjdG9yeSkuCisKK1Blcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQorY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KKworVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMgaXMnIGFuZCB3aXRob3V0IGFueSB3YXJyYW50eSwgZXhwcmVzcyBvcgoraW1wbGllZC4gIEluIG5vIGV2ZW50IHNoYWxsIHRoZSBhdXRob3JzIGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgYXJpc2luZworZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9mcy1wZXJtcy1wZXJzaXN0ZW50LWxvZy50eHQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9mcy1wZXJtcy1wZXJzaXN0ZW50LWxvZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E3Y2YzYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2ZzLXBlcm1zLXBlcnNpc3RlbnQtbG9nLnR4dApAQCAtMCwwICsxLDY2IEBACisjIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHdpdGgga25vd24gcGVybWlzc2lvbnMuCisjIEl0IGlzIHVzZWQgYnkgdGhlIHBhY2thZ2luZyBjbGFzcyB0byBlbnN1cmUgdGhhdCB0aGUgcGVybWlzc2lvbnMsIG93bmVycyBhbmQKKyMgZ3JvdXAgb2YgbGlzdGVkIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhcmUgaW4gc3luYyBhY3Jvc3MgdGhlIHN5c3RlbS4KKyMKKyMgVGhlIGZvcm1hdCBvZiB0aGlzIGZpbGUgCisjCisjPHBhdGg+CTxtb2RlPgk8dWlkPgk8Z2lkPgk8d2Fsaz4JPGZtb2RlPgk8ZnVpZD4JPGZnaWQ+CisjCisjIG9yCisjCisjPHBhdGg+IGxpbmsgPHRhcmdldD4KKyMKKyMgPHBhdGg+OiBkaXJlY3RvcnkgcGF0aAorIyA8bW9kZT46IG1vZGUgZm9yIGRpcmVjdG9yeQorIyA8dWlkPjogIHVpZCBmb3IgZGlyZWN0b3J5CisjIDxnaWQ+OiAgZ2lkIGZvciBkaXJlY3RvcnkKKyMgPHdhbGs+OiByZWN1cnNpdmVseSB3YWxrIHRoZSBkaXJlY3Rvcnk/ICB0cnVlIG9yIGZhbHNlCisjIDxmbW9kZT46IGlmIHdhbGtpbmcsIG5ldyBtb2RlIGZvciBmaWxlcworIyA8ZnVpZD46ICBpZiB3YWxraW5nLCBuZXcgdWlkIGZvciBmaWxlcworIyA8ZmdpZD46ICBpZiB3YWxraW5nLCBuZXcgZ2lkIGZvciBmaWxlcworIyA8dGFyZ2V0PjogdHVybiB0aGUgZGlyZWN0b3J5IGludG8gYSBzeW1saW5rIHBvaW50IHRvIHRhcmdldAorIworIyBpbiBtb2RlLCB1aWQgb3IgZ2lkLCBhICItIiBtZWFucyBkb24ndCBjaGFuZ2UgYW55IGV4aXN0aW5nIHZhbHVlcworIworIyAvdXNyL3NyYwkJMDc1NQlyb290CXJvb3QJZmFsc2UJLQktCS0KKyMgL3Vzci9zaGFyZS9tYW4JMDc1NQlyb290CXJvb3QJdHJ1ZQkwNjQ0CXJvb3QJcm9vdAorCisjIE5vdGU6IGFsbCBzdGFuZGFyZCBjb25maWcgZGlyZWN0b3JpZXMgYXJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgIjA3NTUgcm9vdCByb290IGZhbHNlIC0gLSAtIgorCisjIERvY3VtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBiZSBjb3JyZWN0ZWQKKyR7bWFuZGlyfQkJMDc1NQlyb290CXJvb3QJdHJ1ZQkwNjQ0CXJvb3QJcm9vdAorJHtpbmZvZGlyfQkJMDc1NQlyb290CXJvb3QJdHJ1ZQkwNjQ0CXJvb3QJcm9vdAorJHtkb2NkaXJ9CQkwNzU1CXJvb3QJcm9vdAl0cnVlCTA2NDQJcm9vdAlyb290Ciske2RhdGFkaXJ9L2d0ay1kb2MJMDc1NQlyb290CXJvb3QJdHJ1ZQkwNjQ0CXJvb3QJcm9vdAorCisjIEZpeHVwIGxvY2FsZXMKKyR7ZGF0YWRpcn0vbG9jYWxlCTA3NTUJcm9vdAlyb290CXRydWUJMDY0NAlyb290CXJvb3QKKworIyBDbGVhbnVwIGhlYWRlcnMKKyR7aW5jbHVkZWRpcn0JCTA3NTUJcm9vdAlyb290CXRydWUJMDY0NAlyb290CXJvb3QKKyR7b2xkaW5jbHVkZWRpcn0JMDc1NQlyb290CXJvb3QJdHJ1ZQkwNjQ0CXJvb3QJcm9vdAorCisjIENsZWFudXAgZGVidWcgc3JjCisvdXNyL3NyYy9kZWJ1ZwkJMDc1NQlyb290CXJvb3QJdHJ1ZQktCXJvb3QJcm9vdAorCisjIEl0ZW1zIGZyb20gYmFzZS1maWxlcworIyBMaW5rcworJHtsb2NhbHN0YXRlZGlyfS9ydW4JbGluawkvcnVuCiske2xvY2Fsc3RhdGVkaXJ9L2xvY2sJbGluawkvcnVuL2xvY2sKKyR7bG9jYWxzdGF0ZWRpcn0vdG1wCWxpbmsJdm9sYXRpbGUvdG1wCisKKy9ob21lCQkJCTA3NTUJcm9vdAlyb290CWZhbHNlIC0gLSAtCisvc3J2CQkJCTA3NTUJcm9vdAlyb290CWZhbHNlIC0gLSAtCiske3ByZWZpeH0vc3JjCQkJMDc1NQlyb290CXJvb3QJZmFsc2UgLSAtIC0KKyR7bG9jYWxzdGF0ZWRpcn0vbG9jYWwJCTA3NTUJcm9vdAlyb290CWZhbHNlIC0gLSAtCisKKyMgU3BlY2lhbCBwZXJtaXNzaW9ucyBmcm9tIGJhc2UtZmlsZXMKKyMgU2V0IDE3NzcKKy90bXAJCQkJMDE3NzcJcm9vdAlyb290CWZhbHNlIC0gLSAtCiske2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3RtcAkwMTc3Nwlyb290CXJvb3QJZmFsc2UgLSAtIC0KKworIyBTZXQgMDcwMAorJHtST09UX0hPTUV9CQkJMDcwMAlyb290CXJvb3QJZmFsc2UgLSAtIC0KKworIyBTZXQgMjc3NS1sc2IKKyR7bG9jYWxzdGF0ZWRpcn0vbWFpbAkJMDI3NzUJcm9vdAltYWlsCWZhbHNlIC0gLSAtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvY3JlYXRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL2NyZWF0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTQxZmUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL2NyZWF0ZS5weQpAQCAtMCwwICsxLDY2IEBACitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgc2h1dGlsCisKK2ltcG9ydCBiYi51dGlscworCitmcm9tIGJibGF5ZXJzLmNvbW1vbiBpbXBvcnQgTGF5ZXJQbHVnaW4KKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2JpdGJha2UtbGF5ZXJzJykKKworZGVmIHBsdWdpbl9pbml0KHBsdWdpbnMpOgorICAgIHJldHVybiBDcmVhdGVQbHVnaW4oKQorCitkZWYgcmVhZF90ZW1wbGF0ZSh0ZW1wbGF0ZSwgdGVtcGxhdGVfZGlyPSd0ZW1wbGF0ZXMnKToKKyAgICBsaW5lcyA9IHN0cigpCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCB0ZW1wbGF0ZV9kaXIsIHRlbXBsYXRlKSkgYXMgZmQ6CisgICAgICAgIGxpbmVzID0gJycuam9pbihmZC5yZWFkbGluZXMoKSkKKyAgICByZXR1cm4gbGluZXMKKworY2xhc3MgQ3JlYXRlUGx1Z2luKExheWVyUGx1Z2luKToKKyAgICBkZWYgZG9fY3JlYXRlX2xheWVyKHNlbGYsIGFyZ3MpOgorICAgICAgICAiIiJDcmVhdGUgYSBiYXNpYyBsYXllciIiIgorICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChhcmdzLmxheWVyZGlyKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsYXllcmRpcik6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTcGVjaWZpZWQgbGF5ZXIgZGlyZWN0b3J5IGV4aXN0c1xuIikKKyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgIyBjcmVhdGUgZGlycworICAgICAgICBjb25mID0gb3MucGF0aC5qb2luKGxheWVyZGlyLCAnY29uZicpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjb25mKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBSRUFETUUgZnJvbSB0ZW1wbGF0ZXMvUkVBRE1FCisgICAgICAgIHJlYWRtZV90ZW1wbGF0ZSA9ICByZWFkX3RlbXBsYXRlKCdSRUFETUUnKSAlIChhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyKQorICAgICAgICByZWFkbWUgPSBvcy5wYXRoLmpvaW4obGF5ZXJkaXIsICdSRUFETUUnKQorICAgICAgICB3aXRoIG9wZW4ocmVhZG1lLCAndycpIGFzIGZkOgorICAgICAgICAgICAgZmQud3JpdGUocmVhZG1lX3RlbXBsYXRlKQorCisgICAgICAgICMgQ29weSB0aGUgTUlUIGxpY2Vuc2UgZnJvbSBtZXRhCisgICAgICAgIGNvcHlpbmcgPSAnQ09QWUlORy5NSVQnCisgICAgICAgIGRuID0gb3MucGF0aC5kaXJuYW1lCisgICAgICAgIGxpY2Vuc2Vfc3JjID0gb3MucGF0aC5qb2luKGRuKGRuKGRuKF9fZmlsZV9fKSkpLCBjb3B5aW5nKQorICAgICAgICBsaWNlbnNlX2RzdCA9IG9zLnBhdGguam9pbihsYXllcmRpciwgY29weWluZykKKyAgICAgICAgc2h1dGlsLmNvcHkobGljZW5zZV9zcmMsIGxpY2Vuc2VfZHN0KQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBsYXllci5jb25mIGZyb20gdGVtcGxhdGVzL2xheWVyLmNvbmYKKyAgICAgICAgbGF5ZXJjb25mX3RlbXBsYXRlID0gcmVhZF90ZW1wbGF0ZSgnbGF5ZXIuY29uZicpICUgKGFyZ3MubGF5ZXJkaXIsIGFyZ3MubGF5ZXJkaXIsIGFyZ3MubGF5ZXJkaXIsIGFyZ3MucHJpb3JpdHkpCisgICAgICAgIGxheWVyY29uZiA9IG9zLnBhdGguam9pbihjb25mLCAnbGF5ZXIuY29uZicpCisgICAgICAgIHdpdGggb3BlbihsYXllcmNvbmYsICd3JykgYXMgZmQ6CisgICAgICAgICAgICBmZC53cml0ZShsYXllcmNvbmZfdGVtcGxhdGUpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGV4YW1wbGUgZnJvbSB0ZW1wbGF0ZXMvZXhhbXBsZS5iYgorICAgICAgICBleGFtcGxlX3RlbXBsYXRlID0gcmVhZF90ZW1wbGF0ZSgnZXhhbXBsZS5iYicpCisgICAgICAgIGV4YW1wbGUgPSBvcy5wYXRoLmpvaW4obGF5ZXJkaXIsICdyZWNpcGVzLScgKyBhcmdzLmV4YW1wbGVyZWNpcGUsIGFyZ3MuZXhhbXBsZXJlY2lwZSkKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGV4YW1wbGUpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZXhhbXBsZSwgYXJncy5leGFtcGxlcmVjaXBlICsgJy5iYicpLCAndycpIGFzIGZkOgorICAgICAgICAgICAgZmQud3JpdGUoZXhhbXBsZV90ZW1wbGF0ZSkKKworICAgICAgICBsb2dnZXIucGxhaW4oJ0FkZCB5b3VyIG5ldyBsYXllciB3aXRoIFwnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzXCcnICUgYXJncy5sYXllcmRpcikKKworICAgIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzZWxmLCBzcCk6CisgICAgICAgIHBhcnNlcl9jcmVhdGVfbGF5ZXIgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnY3JlYXRlLWxheWVyJywgc2VsZi5kb19jcmVhdGVfbGF5ZXIsIHBhcnNlcmVjaXBlcz1GYWxzZSkKKyAgICAgICAgcGFyc2VyX2NyZWF0ZV9sYXllci5hZGRfYXJndW1lbnQoJ2xheWVyZGlyJywgaGVscD0nTGF5ZXIgZGlyZWN0b3J5IHRvIGNyZWF0ZScpCisgICAgICAgIHBhcnNlcl9jcmVhdGVfbGF5ZXIuYWRkX2FyZ3VtZW50KCctLXByaW9yaXR5JywgJy1wJywgZGVmYXVsdD02LCBoZWxwPSdMYXllciBkaXJlY3RvcnkgdG8gY3JlYXRlJykKKyAgICAgICAgcGFyc2VyX2NyZWF0ZV9sYXllci5hZGRfYXJndW1lbnQoJy0tZXhhbXBsZS1yZWNpcGUtbmFtZScsICctZScsIGRlc3Q9J2V4YW1wbGVyZWNpcGUnLCBkZWZhdWx0PSdleGFtcGxlJywgaGVscD0nRmlsZW5hbWUgb2YgdGhlIGV4YW1wbGUgcmVjaXBlJykKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTc3ZjhkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9SRUFETUUKQEAgLTAsMCArMSw0MSBAQAorVGhpcyBSRUFETUUgZmlsZSBjb250YWlucyBpbmZvcm1hdGlvbiBvbiB0aGUgY29udGVudHMgb2YgdGhlICVzIGxheWVyLgorCitQbGVhc2Ugc2VlIHRoZSBjb3JyZXNwb25kaW5nIHNlY3Rpb25zIGJlbG93IGZvciBkZXRhaWxzLgorCitEZXBlbmRlbmNpZXMKKz09PT09PT09PT09PQorCisgIFVSSTogPGZpcnN0IGRlcGVuZGVuY3k+CisgIGJyYW5jaDogPGJyYW5jaCBuYW1lPgorCisgIFVSSTogPHNlY29uZCBkZXBlbmRlbmN5PgorICBicmFuY2g6IDxicmFuY2ggbmFtZT4KKworICAuCisgIC4KKyAgLgorCitQYXRjaGVzCis9PT09PT09CisKK1BsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCB0aGUgJXMgbGF5ZXIgdG8gdGhlIHh4eHggbWFpbGluZyBsaXN0ICh4eHh4QHp6enoub3JnKQorYW5kIGNjOiB0aGUgbWFpbnRhaW5lcjoKKworTWFpbnRhaW5lcjogWFhYIFlZWVlZWSA8eHh4Lnl5eXl5eUB6enp6ei5jb20+CisKK1RhYmxlIG9mIENvbnRlbnRzCis9PT09PT09PT09PT09PT09PQorCisgIEkuIEFkZGluZyB0aGUgJXMgbGF5ZXIgdG8geW91ciBidWlsZAorIElJLiBNaXNjCisKKworSS4gQWRkaW5nIHRoZSAlcyBsYXllciB0byB5b3VyIGJ1aWxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1J1biAnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJworCitJSS4gTWlzYworPT09PT09PT0KKworLS0tIHJlcGxhY2Ugd2l0aCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgJXMgbGF5ZXIgLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2V4YW1wbGUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2V4YW1wbGUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRiODczZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvZXhhbXBsZS5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gImJpdGJha2UtbGF5ZXJzIHJlY2lwZSIKK0RFU0NSSVBUSU9OID0gIlJlY2lwZSBjcmVhdGVkIGJ5IGJpdGJha2UtbGF5ZXJzIgorTElDRU5TRSA9ICJNSVQiCisKK3B5dGhvbiBkb19idWlsZCgpIHsKKyAgICBiYi5wbGFpbigiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiKTsKKyAgICBiYi5wbGFpbigiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiKTsKKyAgICBiYi5wbGFpbigiKiAgRXhhbXBsZSByZWNpcGUgY3JlYXRlZCBieSBiaXRiYWtlLWxheWVycyAgICoiKTsKKyAgICBiYi5wbGFpbigiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiKTsKKyAgICBiYi5wbGFpbigiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiKTsKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvbGF5ZXIuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzAzMDAyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9sYXllci5jb25mCkBAIC0wLDAgKzEsMTAgQEAKKyMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJQQVRICitCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKKworIyBXZSBoYXZlIHJlY2lwZXMtKiBkaXJlY3RvcmllcywgYWRkIHRvIEJCRklMRVMKK0JCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAorICAgICAgICAgICAgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKKworQkJGSUxFX0NPTExFQ1RJT05TICs9ICIlcyIKK0JCRklMRV9QQVRURVJOXyVzID0gIl4ke0xBWUVSRElSfS8iCitCQkZJTEVfUFJJT1JJVFlfJXMgPSAiJXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQppbmRleCAzYTViN2I2Li4zZTg2YTQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKQEAgLTE0MywyMiArMTQzLDI1IEBACiAgICAgICAgICAgICBvdXQgKz0gJ1xuICAnLmpvaW4obGlzdChkaWZmKVsyOl0pCiAgICAgICAgICAgICBvdXQgKz0gJ1xuICAtLScKICAgICAgICAgZWxpZiBzZWxmLmZpZWxkbmFtZSBpbiBpbWdfbW9uaXRvcl9maWxlcyBvciAnL2ltYWdlLWZpbGVzLycgaW4gc2VsZi5wYXRoOgotICAgICAgICAgICAgZmllbGRuYW1lID0gc2VsZi5maWVsZG5hbWUKLSAgICAgICAgICAgIGlmICcvaW1hZ2UtZmlsZXMvJyBpbiBzZWxmLnBhdGg6Ci0gICAgICAgICAgICAgICAgZmllbGRuYW1lID0gb3MucGF0aC5qb2luKCcvJyArIHNlbGYucGF0aC5zcGxpdCgnL2ltYWdlLWZpbGVzLycpWzFdLCBzZWxmLmZpZWxkbmFtZSkKLSAgICAgICAgICAgICAgICBvdXQgPSAnQ2hhbmdlcyB0byAlczpcbiAgJyAlIGZpZWxkbmFtZQorICAgICAgICAgICAgaWYgc2VsZi5maWxlY2hhbmdlcyBvciAoc2VsZi5vbGR2YWx1ZSBhbmQgc2VsZi5uZXd2YWx1ZSk6CisgICAgICAgICAgICAgICAgZmllbGRuYW1lID0gc2VsZi5maWVsZG5hbWUKKyAgICAgICAgICAgICAgICBpZiAnL2ltYWdlLWZpbGVzLycgaW4gc2VsZi5wYXRoOgorICAgICAgICAgICAgICAgICAgICBmaWVsZG5hbWUgPSBvcy5wYXRoLmpvaW4oJy8nICsgc2VsZi5wYXRoLnNwbGl0KCcvaW1hZ2UtZmlsZXMvJylbMV0sIHNlbGYuZmllbGRuYW1lKQorICAgICAgICAgICAgICAgICAgICBvdXQgPSAnQ2hhbmdlcyB0byAlczpcbiAgJyAlIGZpZWxkbmFtZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIG91dGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gJ0NoYW5nZXMgdG8gJXMgJyAlIHNlbGYucGF0aAorICAgICAgICAgICAgICAgICAgICBvdXQgPSAnKCVzKTpcbiAgJyAlIHNlbGYuZmllbGRuYW1lCisgICAgICAgICAgICAgICAgaWYgc2VsZi5maWxlY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdcbiAgJy5qb2luKFsnJXMnICUgaSBmb3IgaSBpbiBzZWxmLmZpbGVjaGFuZ2VzXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBhbGluZXMgPSBzZWxmLm9sZHZhbHVlLnNwbGl0bGluZXMoKQorICAgICAgICAgICAgICAgICAgICBibGluZXMgPSBzZWxmLm5ld3ZhbHVlLnNwbGl0bGluZXMoKQorICAgICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoYWxpbmVzLCBibGluZXMsIGZpZWxkbmFtZSwgZmllbGRuYW1lLCBsaW5ldGVybT0nJykKKyAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdcbiAgJy5qb2luKGxpc3QoZGlmZikpCisgICAgICAgICAgICAgICAgICAgIG91dCArPSAnXG4gIC0tJwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBvdXRlcjoKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gJ0NoYW5nZXMgdG8gJXMgJyAlIHNlbGYucGF0aAotICAgICAgICAgICAgICAgIG91dCA9ICcoJXMpOlxuICAnICUgc2VsZi5maWVsZG5hbWUKLSAgICAgICAgICAgIGlmIHNlbGYuZmlsZWNoYW5nZXM6Ci0gICAgICAgICAgICAgICAgb3V0ICs9ICdcbiAgJy5qb2luKFsnJXMnICUgaSBmb3IgaSBpbiBzZWxmLmZpbGVjaGFuZ2VzXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYWxpbmVzID0gc2VsZi5vbGR2YWx1ZS5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgICAgICBibGluZXMgPSBzZWxmLm5ld3ZhbHVlLnNwbGl0bGluZXMoKQotICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihhbGluZXMsIGJsaW5lcywgZmllbGRuYW1lLCBmaWVsZG5hbWUsIGxpbmV0ZXJtPScnKQotICAgICAgICAgICAgICAgIG91dCArPSAnXG4gICcuam9pbihsaXN0KGRpZmYpKQotICAgICAgICAgICAgICAgIG91dCArPSAnXG4gIC0tJworICAgICAgICAgICAgICAgIG91dCA9ICcnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvdXQgPSAnJXMgY2hhbmdlZCBmcm9tICIlcyIgdG8gIiVzIicgJSAoc2VsZi5maWVsZG5hbWUsIHNlbGYub2xkdmFsdWUsIHNlbGYubmV3dmFsdWUpCiAKQEAgLTE2OSw3ICsxNzIsNyBAQAogICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGNoZy5fc3RyX2ludGVybmFsKEZhbHNlKS5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICAgICAgICAgIG91dCArPSAnXG4gICogJXMnICUgbGluZQogCi0gICAgICAgIHJldHVybiAnJXMlcycgJSAocHJlZml4LCBvdXQpCisgICAgICAgIHJldHVybiAnJXMlcycgJSAocHJlZml4LCBvdXQpIGlmIG91dCBlbHNlICcnCiAKIGNsYXNzIEZpbGVDaGFuZ2U6CiAgICAgY2hhbmdldHlwZV9hZGQgPSAnQScKQEAgLTUwOCw3ICs1MTEsOCBAQAogICAgIHJldHVybiAnXG4nLmpvaW4ob3V0KQogCiAKLWRlZiBwcm9jZXNzX2NoYW5nZXMocmVwb3BhdGgsIHJldmlzaW9uMSwgcmV2aXNpb24yPSdIRUFEJywgcmVwb3J0X2FsbD1GYWxzZSwgcmVwb3J0X3Zlcj1GYWxzZSwgc2lncz1GYWxzZSwgc2lnc2RpZmY9RmFsc2UpOgorZGVmIHByb2Nlc3NfY2hhbmdlcyhyZXBvcGF0aCwgcmV2aXNpb24xLCByZXZpc2lvbjI9J0hFQUQnLCByZXBvcnRfYWxsPUZhbHNlLCByZXBvcnRfdmVyPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICBzaWdzPUZhbHNlLCBzaWdzZGlmZj1GYWxzZSwgZXhjbHVkZV9wYXRoPU5vbmUpOgogICAgIHJlcG8gPSBnaXQuUmVwbyhyZXBvcGF0aCkKICAgICBhc3NlcnQgcmVwby5iYXJlID09IEZhbHNlCiAgICAgY29tbWl0ID0gcmVwby5jb21taXQocmV2aXNpb24xKQpAQCAtNjAxLDYgKzYwNSwxOSBAQAogICAgICAgICAgICAgICAgICAgICBlbGlmIGNoZy5wYXRoID09IGNoZzIucGF0aCBhbmQgY2hnLnBhdGguc3RhcnRzd2l0aCgncGFja2FnZXMvJykgYW5kIGNoZzIuZmllbGRuYW1lIGluIFsnUEUnLCAnUFYnLCAnUFInXToKICAgICAgICAgICAgICAgICAgICAgICAgIGNoZy5yZWxhdGVkLmFwcGVuZChjaGcyKQogCisgICAgIyBmaWx0ZXIgb3V0IHVud2FudGVkIHBhdGhzCisgICAgaWYgZXhjbHVkZV9wYXRoOgorICAgICAgICBmb3IgY2hnIGluIGNoYW5nZXM6CisgICAgICAgICAgICBpZiBjaGcuZmlsZWNoYW5nZXM6CisgICAgICAgICAgICAgICAgZmNoZ3MgPSBbXQorICAgICAgICAgICAgICAgIGZvciBmY2hnIGluIGNoZy5maWxlY2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGVwYXRoIGluIGV4Y2x1ZGVfcGF0aDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZjaGcucGF0aC5zdGFydHN3aXRoKGVwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmY2hncy5hcHBlbmQoZmNoZykKKyAgICAgICAgICAgICAgICBjaGcuZmlsZWNoYW5nZXMgPSBmY2hncworCiAgICAgaWYgcmVwb3J0X2FsbDoKICAgICAgICAgcmV0dXJuIGNoYW5nZXMKICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQppbmRleCBhMzcyOTA0Li5hYzJmYWUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQpAQCAtMzIsNiArMzIsMTAgQEAKIAogICAgICAgICBjb3JlYmFzZSA9IG9zLnBhdGguYWJzcGF0aChzZWxmLmQuZ2V0VmFyKCdDT1JFQkFTRScpKQogICAgICAgICBsYXllcnMuYXBwZW5kKGNvcmViYXNlKQorICAgICAgICAjIFRoZSBiaXRiYWtlIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSBtZXRhLXNrZWxldG9uIGxheWVyIGFzIGEgbGF5b3V0CisgICAgICAgICMgZm9yIGNvbW1vbiByZWNpcGllcywgZS5nOiB0aGUgcmVjaXBldG9vbCBzY3JpcHQgdG8gY3JlYXRlIGtlcm5lbCByZWNpcGllcworICAgICAgICAjIEFkZCB0aGUgbWV0YS1za2VsZXRvbiBsYXllciB0byBiZSBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBlU0RLIGluc3RhbGxhdGlvbgorICAgICAgICBsYXllcnMuYXBwZW5kKG9zLnBhdGguam9pbihjb3JlYmFzZSwgJ21ldGEtc2tlbGV0b24nKSkKIAogICAgICAgICAjIEV4Y2x1ZGUgbGF5ZXJzCiAgICAgICAgIGZvciBsYXllcl9leGNsdWRlIGluIHNlbGYubGF5ZXJzX2V4Y2x1ZGU6CkBAIC03MSw2ICs3NSwxMSBAQAogICAgICAgICAgICAgbGF5ZXJkZXN0cGF0aCA9IGRlc3RkaXIKICAgICAgICAgICAgIGlmIGNvcmViYXNlID09IG9zLnBhdGguZGlybmFtZShsYXllcik6CiAgICAgICAgICAgICAgICAgbGF5ZXJkZXN0cGF0aCArPSAnLycgKyBvcy5wYXRoLmJhc2VuYW1lKGNvcmViYXNlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsYXllcl9yZWxhdGl2ZSA9IG9zLnBhdGguYmFzZW5hbWUoY29yZWJhc2UpICsgJy8nICsgb3MucGF0aC5yZWxwYXRoKGxheWVyLCBjb3JlYmFzZSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmRpcm5hbWUobGF5ZXJfcmVsYXRpdmUpICE9IGxheWVybmV3bmFtZToKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJkZXN0cGF0aCArPSAnLycgKyBvcy5wYXRoLmRpcm5hbWUobGF5ZXJfcmVsYXRpdmUpCisKICAgICAgICAgICAgIGxheWVyZGVzdHBhdGggKz0gJy8nICsgbGF5ZXJuZXduYW1lCiAKICAgICAgICAgICAgIGxheWVyX3JlbGF0aXZlID0gb3MucGF0aC5yZWxwYXRoKGxheWVyZGVzdHBhdGgsCkBAIC0xMjMsNiArMTMyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCd3b3Jrc3BhY2VsYXllcicsIHdvcmtzcGFjZV9uZXduYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShsaW5lKQogCisgICAgICAgICMgbWV0YS1za2VsZXRvbiBsYXllciBpcyBhZGRlZCBhcyBwYXJ0IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgIyBidXQgbm90IGFzIGEgbGF5ZXIgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLCB0aGVyZWZvcmUgaXQgaXMKKyAgICAgICAgIyBub3QgcmVwb3J0ZWQgdG8gdGhlIGZ1bmN0aW9uIGNhbGxlci4KKyAgICAgICAgZm9yIGxheWVyIGluIGxheWVyc19jb3BpZWQ6CisgICAgICAgICAgICBpZiBsYXllci5lbmRzd2l0aCgnL21ldGEtc2tlbGV0b24nKToKKyAgICAgICAgICAgICAgICBsYXllcnNfY29waWVkLnJlbW92ZShsYXllcikKKyAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgIHJldHVybiBsYXllcnNfY29waWVkCiAKIGRlZiBnZW5lcmF0ZV9sb2NrZWRfc2lncyhzaWdmaWxlLCBkKToKQEAgLTIzOSw2ICsyNTYsNyBAQAogICAgIGNtZCA9ICIlc0JCX1NFVFNDRU5FX0VORk9SQ0U9MSBQU0VVRE9fRElTQUJMRUQ9MSBvZS1jaGVjay1zc3RhdGUgJXMgLXMgLW8gJXMgJXMiICUgKGNtZHByZWZpeCwgdGFyZ2V0cywgZmlsdGVyb3V0ZmlsZSwgbG9ncGFyYW0pCiAgICAgZW52ID0gZGljdChkLmdldFZhcignQkJfT1JJR0VOVicsIEZhbHNlKSkKICAgICBlbnYucG9wKCdCVUlMRERJUicsICcnKQorICAgIGVudi5wb3AoJ0JCUEFUSCcsICcnKQogICAgIHBhdGhpdGVtcyA9IGVudlsnUEFUSCddLnNwbGl0KCc6JykKICAgICBlbnZbJ1BBVEgnXSA9ICc6Jy5qb2luKFtpdGVtIGZvciBpdGVtIGluIHBhdGhpdGVtcyBpZiBub3QgaXRlbS5lbmRzd2l0aCgnL2JpdGJha2UvYmluJyldKQogICAgIGJiLnByb2Nlc3MucnVuKGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbnY9ZW52LCBjd2Q9Y3dkLCBleGVjdXRhYmxlPScvYmluL2Jhc2gnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2Rpc3Ryb19jaGVjay5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9kaXN0cm9fY2hlY2sucHkKaW5kZXggMzdmMDRlZC4uZTc3NWMzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2Rpc3Ryb19jaGVjay5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZGlzdHJvX2NoZWNrLnB5CkBAIC03NywxNyArNzcsMTAgQEAKIAogZGVmIGdldF9sYXRlc3RfcmVsZWFzZWRfb3BlbnN1c2Vfc291cmNlX3BhY2thZ2VfbGlzdChkKToKICAgICAiUmV0dXJucyBsaXN0IG9mIGFsbCB0aGUgbmFtZSBvcyBwYWNrYWdlcyBpbiB0aGUgbGF0ZXN0IG9wZW5zdXNlIGRpc3RybyIKLSAgICBsYXRlc3QgPSBmaW5kX2xhdGVzdF9udW1lcmljX3JlbGVhc2UoImh0dHA6Ly9kb3dubG9hZC5vcGVuc3VzZS5vcmcvc291cmNlL2Rpc3RyaWJ1dGlvbi8iLGQpCisgICAgbGF0ZXN0ID0gZmluZF9sYXRlc3RfbnVtZXJpY19yZWxlYXNlKCJodHRwOi8vZG93bmxvYWQub3BlbnN1c2Uub3JnL3NvdXJjZS9kaXN0cmlidXRpb24vbGVhcCIsIGQpCiAKLSAgICBwYWNrYWdlX25hbWVzID0gZ2V0X3NvdXJjZV9wYWNrYWdlX2xpc3RfZnJvbV91cmwoImh0dHA6Ly9kb3dubG9hZC5vcGVuc3VzZS5vcmcvc291cmNlL2Rpc3RyaWJ1dGlvbi8lcy9yZXBvL29zcy9zdXNlL3NyYy8iICUgbGF0ZXN0LCAibWFpbiIsIGQpCi0gICAgcGFja2FnZV9uYW1lcyB8PSBnZXRfc291cmNlX3BhY2thZ2VfbGlzdF9mcm9tX3VybCgiaHR0cDovL2Rvd25sb2FkLm9wZW5zdXNlLm9yZy91cGRhdGUvJXMvc3JjLyIgJSBsYXRlc3QsICJ1cGRhdGVzIiwgZCkKLSAgICByZXR1cm4gbGF0ZXN0LCBwYWNrYWdlX25hbWVzCi0KLWRlZiBnZXRfbGF0ZXN0X3JlbGVhc2VkX21hbmRyaXZhX3NvdXJjZV9wYWNrYWdlX2xpc3QoZCk6Ci0gICAgIlJldHVybnMgbGlzdCBvZiBhbGwgdGhlIG5hbWUgb3MgcGFja2FnZXMgaW4gdGhlIGxhdGVzdCBtYW5kcml2YSBkaXN0cm8iCi0gICAgbGF0ZXN0ID0gZmluZF9sYXRlc3RfbnVtZXJpY19yZWxlYXNlKCJodHRwOi8vZGlzdHJpYi1jb2ZmZWUuaXBzbC5qdXNzaWV1LmZyL3B1Yi9saW51eC9NYW5kcml2YUxpbnV4L29mZmljaWFsLyIsIGQpCi0gICAgcGFja2FnZV9uYW1lcyA9IGdldF9zb3VyY2VfcGFja2FnZV9saXN0X2Zyb21fdXJsKCJodHRwOi8vZGlzdHJpYi1jb2ZmZWUuaXBzbC5qdXNzaWV1LmZyL3B1Yi9saW51eC9NYW5kcml2YUxpbnV4L29mZmljaWFsLyVzL1NSUE1TL21haW4vcmVsZWFzZS8iICUgbGF0ZXN0LCAibWFpbiIsIGQpCi0gICAgcGFja2FnZV9uYW1lcyB8PSBnZXRfc291cmNlX3BhY2thZ2VfbGlzdF9mcm9tX3VybCgiaHR0cDovL2Rpc3RyaWItY29mZmVlLmlwc2wuanVzc2lldS5mci9wdWIvbGludXgvTWFuZHJpdmFMaW51eC9vZmZpY2lhbC8lcy9TUlBNUy9tYWluL3VwZGF0ZXMvIiAlIGxhdGVzdCwgInVwZGF0ZXMiLCBkKQorICAgIHBhY2thZ2VfbmFtZXMgPSBnZXRfc291cmNlX3BhY2thZ2VfbGlzdF9mcm9tX3VybCgiaHR0cDovL2Rvd25sb2FkLm9wZW5zdXNlLm9yZy9zb3VyY2UvZGlzdHJpYnV0aW9uL2xlYXAvJXMvcmVwby9vc3Mvc3VzZS9zcmMvIiAlIGxhdGVzdCwgIm1haW4iLCBkKQorICAgIHBhY2thZ2VfbmFtZXMgfD0gZ2V0X3NvdXJjZV9wYWNrYWdlX2xpc3RfZnJvbV91cmwoImh0dHA6Ly9kb3dubG9hZC5vcGVuc3VzZS5vcmcvdXBkYXRlL2xlYXAvJXMvb3NzL3NyYy8iICUgbGF0ZXN0LCAidXBkYXRlcyIsIGQpCiAgICAgcmV0dXJuIGxhdGVzdCwgcGFja2FnZV9uYW1lcwogCiBkZWYgZ2V0X2xhdGVzdF9yZWxlYXNlZF9jbGVhcl9zb3VyY2VfcGFja2FnZV9saXN0KGQpOgpAQCAtMTYxLDggKzE1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJEZWJpYW4iLCBnZXRfbGF0ZXN0X3JlbGVhc2VkX2RlYmlhbl9zb3VyY2VfcGFja2FnZV9saXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIlVidW50dSIsIGdldF9sYXRlc3RfcmVsZWFzZWRfdWJ1bnR1X3NvdXJjZV9wYWNrYWdlX2xpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiRmVkb3JhIiwgZ2V0X2xhdGVzdF9yZWxlYXNlZF9mZWRvcmFfc291cmNlX3BhY2thZ2VfbGlzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJPcGVuU3VTRSIsIGdldF9sYXRlc3RfcmVsZWFzZWRfb3BlbnN1c2Vfc291cmNlX3BhY2thZ2VfbGlzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJNYW5kcml2YSIsIGdldF9sYXRlc3RfcmVsZWFzZWRfbWFuZHJpdmFfc291cmNlX3BhY2thZ2VfbGlzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJvcGVuU1VTRSIsIGdldF9sYXRlc3RfcmVsZWFzZWRfb3BlbnN1c2Vfc291cmNlX3BhY2thZ2VfbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJDbGVhciIsIGdldF9sYXRlc3RfcmVsZWFzZWRfY2xlYXJfc291cmNlX3BhY2thZ2VfbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQppbmRleCA3Y2U3NjdlLi45Y2M4OGYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CkBAIC0xNSw3ICsxNSw3IEBACiAKICAgICBkZWYgZXhwb3J0X3B1YmtleShzZWxmLCBvdXRwdXRfZmlsZSwga2V5aWQsIGFybW9yPVRydWUpOgogICAgICAgICAiIiJFeHBvcnQgR1BHIHB1YmxpYyBrZXkgdG8gYSBmaWxlIiIiCi0gICAgICAgIGNtZCA9ICclcyAtLWJhdGNoIC0teWVzIC0tZXhwb3J0IC1vICVzICcgJSBcCisgICAgICAgIGNtZCA9ICclcyAtLW5vLXBlcm1pc3Npb24td2FybmluZyAtLWJhdGNoIC0teWVzIC0tZXhwb3J0IC1vICVzICcgJSBcCiAgICAgICAgICAgICAgICAgKHNlbGYuZ3BnX2Jpbiwgb3V0cHV0X2ZpbGUpCiAgICAgICAgIGlmIHNlbGYuZ3BnX3BhdGg6CiAgICAgICAgICAgICBjbWQgKz0gIi0taG9tZWRpciAlcyAiICUgc2VsZi5ncGdfcGF0aApAQCAtMjcsMjIgKzI3LDI3IEBACiAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCdGYWlsZWQgdG8gZXhwb3J0IGdwZyBwdWJsaWMga2V5ICglcyk6ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlpZCwgb3V0cHV0KSkKIAotICAgIGRlZiBzaWduX3JwbXMoc2VsZiwgZmlsZXMsIGtleWlkLCBwYXNzcGhyYXNlKToKKyAgICBkZWYgc2lnbl9ycG1zKHNlbGYsIGZpbGVzLCBrZXlpZCwgcGFzc3BocmFzZSwgZGlnZXN0LCBzaWduX2NodW5rLCBmc2s9Tm9uZSwgZnNrX3Bhc3N3b3JkPU5vbmUpOgogICAgICAgICAiIiJTaWduIFJQTSBmaWxlcyIiIgogCiAgICAgICAgIGNtZCA9IHNlbGYucnBtX2JpbiArICIgLS1hZGRzaWduIC0tZGVmaW5lICdfZ3BnX25hbWUgJXMnICAiICUga2V5aWQKLSAgICAgICAgZ3BnX2FyZ3MgPSAnLS1iYXRjaCAtLXBhc3NwaHJhc2U9JXMnICUgcGFzc3BocmFzZQorICAgICAgICBncGdfYXJncyA9ICctLW5vLXBlcm1pc3Npb24td2FybmluZyAtLWJhdGNoIC0tcGFzc3BocmFzZT0lcycgJSBwYXNzcGhyYXNlCiAgICAgICAgIGlmIHNlbGYuZ3BnX3ZlcnNpb24gPiAoMiwxLCk6CiAgICAgICAgICAgICBncGdfYXJncyArPSAnIC0tcGluZW50cnktbW9kZT1sb29wYmFjaycKICAgICAgICAgY21kICs9ICItLWRlZmluZSAnX2dwZ19zaWduX2NtZF9leHRyYV9hcmdzICVzJyAiICUgZ3BnX2FyZ3MKKyAgICAgICAgY21kICs9ICItLWRlZmluZSAnX2JpbmFyeV9maWxlZGlnZXN0X2FsZ29yaXRobSAlcycgIiAlIGRpZ2VzdAogICAgICAgICBpZiBzZWxmLmdwZ19iaW46Ci0gICAgICAgICAgICBjbWQgKz0gIi0tZGVmaW5lICclJV9fZ3BnICVzJyAiICUgc2VsZi5ncGdfYmluCisgICAgICAgICAgICBjbWQgKz0gIi0tZGVmaW5lICdfX2dwZyAlcycgIiAlIHNlbGYuZ3BnX2JpbgogICAgICAgICBpZiBzZWxmLmdwZ19wYXRoOgogICAgICAgICAgICAgY21kICs9ICItLWRlZmluZSAnX2dwZ19wYXRoICVzJyAiICUgc2VsZi5ncGdfcGF0aAorICAgICAgICBpZiBmc2s6CisgICAgICAgICAgICBjbWQgKz0gIi0tc2lnbmZpbGVzIC0tZnNrcGF0aCAlcyAiICUgZnNrCisgICAgICAgICAgICBpZiBmc2tfcGFzc3dvcmQ6CisgICAgICAgICAgICAgICAgY21kICs9ICItLWRlZmluZSAnX2ZpbGVfc2lnbmluZ19rZXlfcGFzc3dvcmQgJXMnICIgJSBmc2tfcGFzc3dvcmQKIAotICAgICAgICAjIFNpZ24gaW4gY2h1bmtzIG9mIDEwMCBwYWNrYWdlcwotICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZmlsZXMpLCAxMDApOgotICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoY21kICsgJyAnLmpvaW4oZmlsZXNbaTppKzEwMF0pKQorICAgICAgICAjIFNpZ24gaW4gY2h1bmtzCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihmaWxlcyksIHNpZ25fY2h1bmspOgorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoY21kICsgJyAnLmpvaW4oZmlsZXNbaTppK3NpZ25fY2h1bmtdKSkKICAgICAgICAgICAgIGlmIHN0YXR1czoKICAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJGYWlsZWQgdG8gc2lnbiBSUE0gcGFja2FnZXM6ICVzIiAlIG91dHB1dCkKIApAQCAtNTMsOCArNTgsOCBAQAogICAgICAgICBpZiBwYXNzcGhyYXNlX2ZpbGUgYW5kIHBhc3NwaHJhc2U6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIllvdSBzaG91bGQgdXNlIGVpdGhlciBwYXNzcGhyYXNlX2ZpbGUgb2YgcGFzc3BocmFzZSwgbm90IGJvdGgiKQogCi0gICAgICAgIGNtZCA9IFtzZWxmLmdwZ19iaW4sICctLWRldGFjaC1zaWduJywgJy0tYmF0Y2gnLCAnLS1uby10dHknLCAnLS15ZXMnLAotICAgICAgICAgICAgICAgJy0tcGFzc3BocmFzZS1mZCcsICcwJywgJy11Jywga2V5aWRdCisgICAgICAgIGNtZCA9IFtzZWxmLmdwZ19iaW4sICctLWRldGFjaC1zaWduJywgJy0tbm8tcGVybWlzc2lvbi13YXJuaW5nJywgJy0tYmF0Y2gnLAorICAgICAgICAgICAgICAgJy0tbm8tdHR5JywgJy0teWVzJywgJy0tcGFzc3BocmFzZS1mZCcsICcwJywgJy11Jywga2V5aWRdCiAKICAgICAgICAgaWYgc2VsZi5ncGdfcGF0aDoKICAgICAgICAgICAgIGNtZCArPSBbJy0taG9tZWRpcicsIHNlbGYuZ3BnX3BhdGhdCkBAIC05Myw3ICs5OCw3IEBACiAgICAgICAgICIiIlJldHVybiB0aGUgZ3BnIHZlcnNpb24gYXMgYSB0dXBsZSBvZiBpbnRzIiIiCiAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHZlcl9zdHIgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoc2VsZi5ncGdfYmluLCAiLS12ZXJzaW9uIikpLnNwbGl0KClbMl0uZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgICAgICB2ZXJfc3RyID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKHNlbGYuZ3BnX2JpbiwgIi0tdmVyc2lvbiIsICItLW5vLXBlcm1pc3Npb24td2FybmluZyIpKS5zcGxpdCgpWzJdLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgcmV0dXJuIHR1cGxlKFtpbnQoaSkgZm9yIGkgaW4gdmVyX3N0ci5zcGxpdCgnLicpXSkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJDb3VsZCBub3QgZ2V0IGdwZyB2ZXJzaW9uOiAlcyIgJSBlKQpAQCAtMTAxLDcgKzEwNiw3IEBACiAKICAgICBkZWYgdmVyaWZ5KHNlbGYsIHNpZ19maWxlKToKICAgICAgICAgIiIiVmVyaWZ5IHNpZ25hdHVyZSIiIgotICAgICAgICBjbWQgPSBzZWxmLmdwZ19iaW4gKyAiIC0tdmVyaWZ5ICIKKyAgICAgICAgY21kID0gc2VsZi5ncGdfYmluICsgIiAtLXZlcmlmeSAtLW5vLXBlcm1pc3Npb24td2FybmluZyAiCiAgICAgICAgIGlmIHNlbGYuZ3BnX3BhdGg6CiAgICAgICAgICAgICBjbWQgKz0gIi0taG9tZWRpciAlcyAiICUgc2VsZi5ncGdfcGF0aAogICAgICAgICBjbWQgKz0gc2lnX2ZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9saWNlbnNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xpY2Vuc2UucHkKaW5kZXggOGQyZmQxNy4uY2EzODVkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xpY2Vuc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xpY2Vuc2UucHkKQEAgLTEwNiw3ICsxMDYsOCBAQAogICAgIGxpY2Vuc2Ugc3RyaW5nIG1hdGNoZXMgdGhlIHdoaXRlbGlzdCBhbmQgZG9lcyBub3QgbWF0Y2ggdGhlIGJsYWNrbGlzdC4KIAogICAgIFJldHVybnMgYSB0dXBsZSBob2xkaW5nIHRoZSBib29sZWFuIHN0YXRlIGFuZCBhIGxpc3Qgb2YgdGhlIGFwcGxpY2FibGUKLSAgICBsaWNlbnNlcyB3aGljaCB3ZXJlIGV4Y2x1ZGVkIChvciBOb25lLCBpZiB0aGUgc3RhdGUgaXMgVHJ1ZSkKKyAgICBsaWNlbnNlcyB0aGF0IHdlcmUgZXhjbHVkZWQgaWYgc3RhdGUgaXMgRmFsc2UsIG9yIHRoZSBsaWNlbnNlcyB0aGF0IHdlcmUKKyAgICBpbmNsdWRlZCBpZiB0aGUgc3RhdGUgaXMgVHJ1ZS4KICAgICAiIiIKIAogICAgIGRlZiBpbmNsdWRlX2xpY2Vuc2UobGljZW5zZSk6CkBAIC0xMTcsMTAgKzExOCwxNyBAQAogCiAgICAgZGVmIGNob29zZV9saWNlbnNlcyhhbHBoYSwgYmV0YSk6CiAgICAgICAgICIiIlNlbGVjdCB0aGUgb3B0aW9uIGluIGFuIE9SIHdoaWNoIGlzIHRoZSAnYmVzdCcgKGhhcyB0aGUgbW9zdAotICAgICAgICBpbmNsdWRlZCBsaWNlbnNlcykuIiIiCi0gICAgICAgIGFscGhhX3dlaWdodCA9IGxlbihsaXN0KGZpbHRlcihpbmNsdWRlX2xpY2Vuc2UsIGFscGhhKSkpCi0gICAgICAgIGJldGFfd2VpZ2h0ID0gbGVuKGxpc3QoZmlsdGVyKGluY2x1ZGVfbGljZW5zZSwgYmV0YSkpKQotICAgICAgICBpZiBhbHBoYV93ZWlnaHQgPiBiZXRhX3dlaWdodDoKKyAgICAgICAgaW5jbHVkZWQgbGljZW5zZXMgYW5kIG5vIGV4Y2x1ZGVkIGxpY2Vuc2VzKS4iIiIKKyAgICAgICAgIyBUaGUgZmFjdG9yIDEwMDAgYmVsb3cgaXMgYXJiaXRyYXJ5LCBqdXN0IGV4cGVjdGVkIHRvIGJlIG11Y2ggbGFyZ2VyCisgICAgICAgICMgdGhhdCB0aGUgbnVtYmVyIG9mIGxpY2Vuc2VzIGFjdHVhbGx5IHNwZWNpZmllZC4gVGhhdCB3YXkgdGhlIHdlaWdodAorICAgICAgICAjIHdpbGwgYmUgbmVnYXRpdmUgaWYgdGhlIGxpc3Qgb2YgbGljZW5zZXMgY29udGFpbnMgYW4gZXhjbHVkZWQgbGljZW5zZSwKKyAgICAgICAgIyBidXQgc3RpbGwgZ2l2ZXMgYSBoaWdoZXIgd2VpZ2h0IHRvIHRoZSBsaXN0IHdpdGggdGhlIG1vc3QgaW5jbHVkZWQKKyAgICAgICAgIyBsaWNlbnNlcy4KKyAgICAgICAgYWxwaGFfd2VpZ2h0ID0gKGxlbihsaXN0KGZpbHRlcihpbmNsdWRlX2xpY2Vuc2UsIGFscGhhKSkpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAgKiAobGVuKGxpc3QoZmlsdGVyKGV4Y2x1ZGVfbGljZW5zZSwgYWxwaGEpKSkgPiAwKSkKKyAgICAgICAgYmV0YV93ZWlnaHQgPSAobGVuKGxpc3QoZmlsdGVyKGluY2x1ZGVfbGljZW5zZSwgYmV0YSkpKSAtCisgICAgICAgICAgICAgICAgICAgICAgIDEwMDAgKiAobGVuKGxpc3QoZmlsdGVyKGV4Y2x1ZGVfbGljZW5zZSwgYmV0YSkpKSA+IDApKQorICAgICAgICBpZiBhbHBoYV93ZWlnaHQgPj0gYmV0YV93ZWlnaHQ6CiAgICAgICAgICAgICByZXR1cm4gYWxwaGEKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBiZXRhCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbHNiLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xzYi5weQppbmRleCAzYTk0NWUwLi43MWMwOTkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbHNiLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9sc2IucHkKQEAgLTEsMTkgKzEsMjYgQEAKK2RlZiBnZXRfb3NfcmVsZWFzZSgpOgorICAgICIiIkdldCBhbGwga2V5LXZhbHVlIHBhaXJzIGZyb20gL2V0Yy9vcy1yZWxlYXNlIGFzIGEgZGljdCIiIgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CisKKyAgICBkYXRhID0gT3JkZXJlZERpY3QoKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKCcvZXRjL29zLXJlbGVhc2UnKToKKyAgICAgICAgd2l0aCBvcGVuKCcvZXRjL29zLXJlbGVhc2UnKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGtleSwgdmFsID0gbGluZS5yc3RyaXAoKS5zcGxpdCgnPScsIDEpCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZGF0YVtrZXkuc3RyaXAoKV0gPSB2YWwuc3RyaXAoJyInKQorICAgIHJldHVybiBkYXRhCisKIGRlZiByZWxlYXNlX2RpY3Rfb3NyKCk6CiAgICAgIiIiIFBvcHVsYXRlIGEgZGljdCB3aXRoIHBlcnRpbmVudCB2YWx1ZXMgZnJvbSAvZXRjL29zLXJlbGVhc2UgIiIiCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCcvZXRjL29zLXJlbGVhc2UnKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQogICAgIGRhdGEgPSB7fQotICAgIHdpdGggb3BlbignL2V0Yy9vcy1yZWxlYXNlJykgYXMgZjoKLSAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmUucnN0cmlwKCkuc3BsaXQoJz0nLCAxKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGtleSA9PSAnSUQnOgotICAgICAgICAgICAgICAgIGRhdGFbJ0RJU1RSSUJfSUQnXSA9IHZhbC5zdHJpcCgnIicpCi0gICAgICAgICAgICBpZiBrZXkgPT0gJ1ZFUlNJT05fSUQnOgotICAgICAgICAgICAgICAgIGRhdGFbJ0RJU1RSSUJfUkVMRUFTRSddID0gdmFsLnN0cmlwKCciJykKKyAgICBvc19yZWxlYXNlID0gZ2V0X29zX3JlbGVhc2UoKQorICAgIGlmICdJRCcgaW4gb3NfcmVsZWFzZToKKyAgICAgICAgZGF0YVsnRElTVFJJQl9JRCddID0gb3NfcmVsZWFzZVsnSUQnXQorICAgIGlmICdWRVJTSU9OX0lEJyBpbiBvc19yZWxlYXNlOgorICAgICAgICBkYXRhWydESVNUUklCX1JFTEVBU0UnXSA9IG9zX3JlbGVhc2VbJ1ZFUlNJT05fSUQnXQogCiAgICAgcmV0dXJuIGRhdGEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQppbmRleCA0Nzk3ZTdkLi4xZTVjM2FhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQpAQCAtNDUsNiArNDUsMTE1IEBACiAgICAgcmV0dXJuCiAKIAorZGVmIHN0cmlwX2V4ZWNzKHBuLCBkc3RkaXIsIHN0cmlwX2NtZCwgbGliZGlyLCBiYXNlX2xpYmRpciwgcWFfYWxyZWFkeV9zdHJpcHBlZD1GYWxzZSk6CisgICAgIiIiCisgICAgU3RyaXAgZXhlY3V0YWJsZSBjb2RlIChsaWtlIGV4ZWN1dGFibGVzLCBzaGFyZWQgbGlicmFyaWVzKSBfaW5fcGxhY2VfCisgICAgLSBCYXNlZCBvbiBzeXNyb290X3N0cmlwIGluIHN0YWdpbmcuYmJjbGFzcworICAgIDpwYXJhbSBkc3RkaXI6IGRpcmVjdG9yeSBpbiB3aGljaCB0byBzdHJpcCBmaWxlcworICAgIDpwYXJhbSBzdHJpcF9jbWQ6IFN0cmlwIGNvbW1hbmQgKHVzdWFsbHkgJHtTVFJJUH0pCisgICAgOnBhcmFtIGxpYmRpcjogJHtsaWJkaXJ9IC0gc3RyaXAgLnNvIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5CisgICAgOnBhcmFtIGJhc2VfbGliZGlyOiAke2Jhc2VfbGliZGlyfSAtIHN0cmlwIC5zbyBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeQorICAgIDpwYXJhbSBxYV9hbHJlYWR5X3N0cmlwcGVkOiBTZXQgdG8gVHJ1ZSBpZiBhbHJlYWR5LXN0cmlwcGVkJyBpbiAke0lOU0FORV9TS0lQfQorICAgIFRoaXMgaXMgZm9yIHByb3BlciBsb2dnaW5nIGFuZCBtZXNzYWdlcyBvbmx5LgorICAgICIiIgorICAgIGltcG9ydCBzdGF0LCBlcnJubywgb2UucGF0aCwgb2UudXRpbHMsIG1tYXAKKworICAgICMgRGV0ZWN0IC5rbyBtb2R1bGUgYnkgc2VhcmNoaW5nIGZvciAidmVybWFnaWM9IiBzdHJpbmcKKyAgICBkZWYgaXNfa2VybmVsX21vZHVsZShwYXRoKToKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gbW1hcC5tbWFwKGYuZmlsZW5vKCksIDAsIHByb3Q9bW1hcC5QUk9UX1JFQUQpLmZpbmQoYiJ2ZXJtYWdpYz0iKSA+PSAwCisKKyAgICAjIFJldHVybiB0eXBlIChiaXRzKToKKyAgICAjIDAgLSBub3QgZWxmCisgICAgIyAxIC0gRUxGCisgICAgIyAyIC0gc3RyaXBwZWQKKyAgICAjIDQgLSBleGVjdXRhYmxlCisgICAgIyA4IC0gc2hhcmVkIGxpYnJhcnkKKyAgICAjIDE2IC0ga2VybmVsIG1vZHVsZQorICAgIGRlZiBpc19lbGYocGF0aCk6CisgICAgICAgIGV4ZWNfdHlwZSA9IDAKKyAgICAgICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoCisgICAgICAgICAgICAiZmlsZSBcIiVzXCIiICUgcGF0aC5yZXBsYWNlKCJcIiIsICJcXFwiIikpCisKKyAgICAgICAgaWYgcmV0OgorICAgICAgICAgICAgYmIuZXJyb3IoInNwbGl0X2FuZF9zdHJpcF9maWxlczogJ2ZpbGUgJXMnIGZhaWxlZCIgJSBwYXRoKQorICAgICAgICAgICAgcmV0dXJuIGV4ZWNfdHlwZQorCisgICAgICAgIGlmICJFTEYiIGluIHJlc3VsdDoKKyAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSAxCisgICAgICAgICAgICBpZiAibm90IHN0cmlwcGVkIiBub3QgaW4gcmVzdWx0OgorICAgICAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSAyCisgICAgICAgICAgICBpZiAiZXhlY3V0YWJsZSIgaW4gcmVzdWx0OgorICAgICAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSA0CisgICAgICAgICAgICBpZiAic2hhcmVkIiBpbiByZXN1bHQ6CisgICAgICAgICAgICAgICAgZXhlY190eXBlIHw9IDgKKyAgICAgICAgICAgIGlmICJyZWxvY2F0YWJsZSIgaW4gcmVzdWx0IGFuZCBpc19rZXJuZWxfbW9kdWxlKHBhdGgpOgorICAgICAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSAxNgorICAgICAgICByZXR1cm4gZXhlY190eXBlCisKKyAgICBlbGZmaWxlcyA9IHt9CisgICAgaW5vZGVzID0ge30KKyAgICBsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHN0ZGlyICsgb3Muc2VwICsgbGliZGlyKQorICAgIGJhc2VfbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGRzdGRpciArIG9zLnNlcCArIGJhc2VfbGliZGlyKQorICAgIGV4ZWNfbWFzayA9IHN0YXQuU19JWFVTUiB8IHN0YXQuU19JWEdSUCB8IHN0YXQuU19JWE9USAorICAgICMKKyAgICAjIEZpcnN0IGxldHMgZmlndXJlIG91dCBhbGwgb2YgdGhlIGZpbGVzIHdlIG1heSBoYXZlIHRvIHByb2Nlc3MKKyAgICAjCisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZHN0ZGlyKToKKyAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICBmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsdGFyZ2V0ID0gb2UucGF0aC5yZWFscGF0aChmaWxlLCBkc3RkaXIsIEZhbHNlKQorICAgICAgICAgICAgICAgIHMgPSBvcy5sc3RhdChsdGFyZ2V0KQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAoZXJyLCBzdHJlcnJvcikgPSBlLmFyZ3MKKyAgICAgICAgICAgICAgICBpZiBlcnIgIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICMgU2tpcCBicm9rZW4gc3ltbGlua3MKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgQ2hlY2sgaXRzIGFuIGV4Y3V0YWJsZQorICAgICAgICAgICAgaWYgc1tzdGF0LlNUX01PREVdICYgZXhlY19tYXNrIFwKKyAgICAgICAgICAgICAgICAgICAgb3IgKChmaWxlLnN0YXJ0c3dpdGgobGliZGlyKSBvciBmaWxlLnN0YXJ0c3dpdGgoYmFzZV9saWJkaXIpKSBhbmQgIi5zbyIgaW4gZikgXAorICAgICAgICAgICAgICAgICAgICBvciBmaWxlLmVuZHN3aXRoKCcua28nKToKKyAgICAgICAgICAgICAgICAjIElmIGl0J3MgYSBzeW1saW5rLCBhbmQgcG9pbnRzIHRvIGFuIEVMRiBmaWxlLCB3ZSBjYXB0dXJlIHRoZSByZWFkbGluayB0YXJnZXQKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhmaWxlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICMgSXQncyBhIGZpbGUgKG9yIGhhcmRsaW5rKSwgbm90IGEgbGluaworICAgICAgICAgICAgICAgICMgLi4uYnV0IGlzIGl0IEVMRiwgYW5kIGlzIGl0IGFscmVhZHkgc3RyaXBwZWQ/CisgICAgICAgICAgICAgICAgZWxmX2ZpbGUgPSBpc19lbGYoZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDE6CisgICAgICAgICAgICAgICAgICAgIGlmIGVsZl9maWxlICYgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHFhX2FscmVhZHlfc3RyaXBwZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiU2tpcHBpbmcgZmlsZSAlcyBmcm9tICVzIGZvciBhbHJlYWR5LXN0cmlwcGVkIFFBIHRlc3QiICUgKGZpbGVbbGVuKGRzdGRpcik6XSwgcG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJGaWxlICclcycgZnJvbSAlcyB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgdGhpcyB3aWxsIHByZXZlbnQgZnV0dXJlIGRlYnVnZ2luZyEiICUgKGZpbGVbbGVuKGRzdGRpcik6XSwgcG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICBpZiBzLnN0X2lubyBpbiBpbm9kZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoaW5vZGVzW3Muc3RfaW5vXSwgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgaGFyZGxpbmtzIHNvIHRoYXQgd2UgZG8gbm90IHN0cmlwIHRoZSBvcmlnaW5hbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlub2Rlc1tzLnN0X2lub10gPSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb3B5ZmlsZShmaWxlLCBmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxmZmlsZXNbZmlsZV0gPSBlbGZfZmlsZQorCisgICAgIworICAgICMgTm93IHN0cmlwIHRoZW0gKGluIHBhcmFsbGVsKQorICAgICMKKyAgICBzZmlsZXMgPSBbXQorICAgIGZvciBmaWxlIGluIGVsZmZpbGVzOgorICAgICAgICBlbGZfZmlsZSA9IGludChlbGZmaWxlc1tmaWxlXSkKKyAgICAgICAgc2ZpbGVzLmFwcGVuZCgoZmlsZSwgZWxmX2ZpbGUsIHN0cmlwX2NtZCkpCisKKyAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhzZmlsZXMsIHJ1bnN0cmlwKQorCisKKwogZGVmIGZpbGVfdHJhbnNsYXRlKGZpbGUpOgogICAgIGZ0ID0gZmlsZS5yZXBsYWNlKCJAIiwgIkBhdEAiKQogICAgIGZ0ID0gZnQucmVwbGFjZSgiICIsICJAc3BhY2VAIikKQEAgLTY3LDggKzE3Niw3IEBACiAKICAgICBkZWYgcHJvY2Vzc19kZXBzKHBpcGUsIHBrZywgcGtnZGVzdCwgcHJvdmlkZXMsIHJlcXVpcmVzKToKICAgICAgICAgZmlsZSA9IE5vbmUKLSAgICAgICAgZm9yIGxpbmUgaW4gcGlwZToKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLmRlY29kZSgidXRmLTgiKQorICAgICAgICBmb3IgbGluZSBpbiBwaXBlLnNwbGl0KCJcbiIpOgogCiAgICAgICAgICAgICBtID0gZmlsZV9yZS5tYXRjaChsaW5lKQogICAgICAgICAgICAgaWYgbToKQEAgLTExNywxMiArMjI1LDggQEAKIAogICAgICAgICByZXR1cm4gcHJvdmlkZXMsIHJlcXVpcmVzCiAKLSAgICB0cnk6Ci0gICAgICAgIGRlcF9wb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQocnBtZGVwcykgKyBwa2dmaWxlcywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgcHJvdmlkZXMsIHJlcXVpcmVzID0gcHJvY2Vzc19kZXBzKGRlcF9wb3Blbi5zdGRvdXQsIHBrZywgcGtnZGVzdCwgcHJvdmlkZXMsIHJlcXVpcmVzKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgIGJiLmVycm9yKCJycG1kZXBzOiAnJXMnIGNvbW1hbmQgZmFpbGVkLCAnJXMnIiAlIChzaGxleC5zcGxpdChycG1kZXBzKSArIHBrZ2ZpbGVzLCBlKSkKLSAgICAgICAgcmFpc2UgZQorICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNobGV4LnNwbGl0KHJwbWRlcHMpICsgcGtnZmlsZXMsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCisgICAgcHJvdmlkZXMsIHJlcXVpcmVzID0gcHJvY2Vzc19kZXBzKG91dHB1dCwgcGtnLCBwa2dkZXN0LCBwcm92aWRlcywgcmVxdWlyZXMpCiAKICAgICByZXR1cm4gKHBrZywgcHJvdmlkZXMsIHJlcXVpcmVzKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQppbmRleCAzYTJkYWFkLi4wYzVkOTA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKQEAgLTE3LDE4ICsxNywxMSBAQAogZGVmIGNyZWF0ZV9pbmRleChhcmcpOgogICAgIGluZGV4X2NtZCA9IGFyZwogCi0gICAgdHJ5OgotICAgICAgICBiYi5ub3RlKCJFeGVjdXRpbmcgJyVzJyAuLi4iICUgaW5kZXhfY21kKQotICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChpbmRleF9jbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpCi0gICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgIHJldHVybigiSW5kZXggY3JlYXRpb24gY29tbWFuZCAnJXMnIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlICVkOlxuJXMiICUKLSAgICAgICAgICAgICAgIChlLmNtZCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQotCisgICAgYmIubm90ZSgiRXhlY3V0aW5nICclcycgLi4uIiAlIGluZGV4X2NtZCkKKyAgICByZXN1bHQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChpbmRleF9jbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgaWYgcmVzdWx0OgogICAgICAgICBiYi5ub3RlKHJlc3VsdCkKIAotICAgIHJldHVybiBOb25lCi0KICIiIgogVGhpcyBtZXRob2QgcGFyc2UgdGhlIG91dHB1dCBmcm9tIHRoZSBwYWNrYWdlIG1hbmFnZXJhbmQgcmV0dXJuCiBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIHBhY2thZ2VzLiBUaGlzIGlzIHVzZWQKQEAgLTEwNCwxMyArOTcsMjUgQEAKIGNsYXNzIFJwbUluZGV4ZXIoSW5kZXhlcik6CiAgICAgZGVmIHdyaXRlX2luZGV4KHNlbGYpOgogICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfU0lHTicpID09ICcxJzoKLSAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1BhY2thZ2UgZmVlZCBzaWduaW5nIG5vdCB5ZXQgaW1wbGVtZW50ZCBmb3IgcnBtJykKKyAgICAgICAgICAgIHNpZ25lciA9IGdldF9zaWduZXIoc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX0JBQ0tFTkQnKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNpZ25lciA9IE5vbmUKIAogICAgICAgICBjcmVhdGVyZXBvX2MgPSBiYi51dGlscy53aGljaChvcy5lbnZpcm9uWydQQVRIJ10sICJjcmVhdGVyZXBvX2MiKQogICAgICAgICByZXN1bHQgPSBjcmVhdGVfaW5kZXgoIiVzIC0tdXBkYXRlIC1xICVzIiAlIChjcmVhdGVyZXBvX2MsIHNlbGYuZGVwbG95X2RpcikpCiAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgIGJiLmZhdGFsKHJlc3VsdCkKIAorICAgICAgICAjIFNpZ24gcmVwb21kCisgICAgICAgIGlmIHNpZ25lcjoKKyAgICAgICAgICAgIHNpZ190eXBlID0gc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19TSUdOQVRVUkVfVFlQRScpCisgICAgICAgICAgICBpc19hc2NpaV9zaWcgPSAoc2lnX3R5cGUudXBwZXIoKSAhPSAiQklOIikKKyAgICAgICAgICAgIHNpZ25lci5kZXRhY2hfc2lnbihvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCAncmVwb2RhdGEnLCAncmVwb21kLnhtbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9HUEdfTkFNRScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9HUEdfUEFTU1BIUkFTRV9GSUxFJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtb3I9aXNfYXNjaWlfc2lnKQorCisKIGNsYXNzIE9wa2dJbmRleGVyKEluZGV4ZXIpOgogICAgIGRlZiB3cml0ZV9pbmRleChzZWxmKToKICAgICAgICAgYXJjaF92YXJzID0gWyJBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUyIsCkBAIC0xNTIsOSArMTU3LDcgQEAKICAgICAgICAgICAgIGJiLm5vdGUoIlRoZXJlIGFyZSBubyBwYWNrYWdlcyBpbiAlcyEiICUgc2VsZi5kZXBsb3lfZGlyKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgcmVzdWx0ID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoaW5kZXhfY21kcywgY3JlYXRlX2luZGV4KQotICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICBiYi5mYXRhbCgnJXMnICUgKCdcbicuam9pbihyZXN1bHQpKSkKKyAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoaW5kZXhfY21kcywgY3JlYXRlX2luZGV4KQogCiAgICAgICAgIGlmIHNpZ25lcjoKICAgICAgICAgICAgIGZlZWRfc2lnX3R5cGUgPSBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX1NJR05BVFVSRV9UWVBFJykKQEAgLTIyMCw3ICsyMjMsNyBAQAogCiAgICAgICAgICAgICBjbWQgPSAiY2QgJXM7IFBTRVVET19VTkxPQUQ9MSAlcyBwYWNrYWdlcyAuID4gUGFja2FnZXM7IiAlIChhcmNoX2RpciwgYXB0X2Z0cGFyY2hpdmUpCiAKLSAgICAgICAgICAgIGNtZCArPSAiJXMgLWZjIFBhY2thZ2VzID4gUGFja2FnZXMuZ3o7IiAlIGd6aXAKKyAgICAgICAgICAgIGNtZCArPSAiJXMgLWZjbiBQYWNrYWdlcyA+IFBhY2thZ2VzLmd6OyIgJSBnemlwCiAKICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oYXJjaF9kaXIsICJSZWxlYXNlIiksICJ3KyIpIGFzIHJlbGVhc2U6CiAgICAgICAgICAgICAgICAgcmVsZWFzZS53cml0ZSgiTGFiZWw6ICVzXG4iICUgYXJjaCkKQEAgLTIzNSw5ICsyMzgsNyBAQAogICAgICAgICAgICAgYmIubm90ZSgiVGhlcmUgYXJlIG5vIHBhY2thZ2VzIGluICVzIiAlIHNlbGYuZGVwbG95X2RpcikKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIHJlc3VsdCA9IG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKGluZGV4X2NtZHMsIGNyZWF0ZV9pbmRleCkKLSAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgYmIuZmF0YWwoJyVzJyAlICgnXG4nLmpvaW4ocmVzdWx0KSkpCisgICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKGluZGV4X2NtZHMsIGNyZWF0ZV9pbmRleCkKICAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX1NJR04nKSA9PSAnMSc6CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQYWNrYWdlIGZlZWQgc2lnbmluZyBub3QgaW1wbGVtZW50ZCBmb3IgZHBrZycpCiAKQEAgLTU0OCw2ICs1NDksMTQgQEAKICAgICAgICAgaWYgZmVlZF91cmlzID09ICIiOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgZ3BnX29wdHMgPSAnJworICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfU0lHTicpID09ICcxJzoKKyAgICAgICAgICAgIGdwZ19vcHRzICs9ICdyZXBvX2dwZ2NoZWNrPTFcbicKKyAgICAgICAgICAgIGdwZ19vcHRzICs9ICdncGdrZXk9ZmlsZTovLyVzL3BraS9wYWNrYWdlZmVlZC1ncGcvUEFDS0FHRUZFRUQtR1BHLUtFWS0lcy0lc1xuJyAlIChzZWxmLmQuZ2V0VmFyKCdzeXNjb25mZGlyJyksIHNlbGYuZC5nZXRWYXIoJ0RJU1RSTycpLCBzZWxmLmQuZ2V0VmFyKCdESVNUUk9fQ09ERU5BTUUnKSkKKworICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdSUE1fU0lHTl9QQUNLQUdFUycpID09ICcwJzoKKyAgICAgICAgICAgIGdwZ19vcHRzICs9ICdncGdjaGVjaz0wXG4nCisKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsICJldGMiLCAieXVtLnJlcG9zLmQiKSkKICAgICAgICAgcmVtb3RlX3VyaXMgPSBzZWxmLmNvbnN0cnVjdF91cmlzKGZlZWRfdXJpcy5zcGxpdCgpLCBmZWVkX2Jhc2VfcGF0aHMuc3BsaXQoKSkKICAgICAgICAgZm9yIHVyaSBpbiByZW1vdGVfdXJpczoKQEAgLTU1OCwxMiArNTY3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIHJlcG9faWQgICA9ICJvZS1yZW1vdGUtcmVwbyIgICsgIi0iLmpvaW4odXJscGFyc2UocmVwb191cmkpLnBhdGguc3BsaXQoIi8iKSkKICAgICAgICAgICAgICAgICAgICAgcmVwb19uYW1lID0gIk9FIFJlbW90ZSBSZXBvOiIgKyAiICIuam9pbih1cmxwYXJzZShyZXBvX3VyaSkucGF0aC5zcGxpdCgiLyIpKQogICAgICAgICAgICAgICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsICJldGMiLCAieXVtLnJlcG9zLmQiLCByZXBvX2Jhc2UgKyAiLnJlcG8iKSwgJ2EnKS53cml0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlslc11cbm5hbWU9JXNcbmJhc2V1cmw9JXNcblxuIiAlIChyZXBvX2lkLCByZXBvX25hbWUsIHJlcG9fdXJpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlslc11cbm5hbWU9JXNcbmJhc2V1cmw9JXNcbiVzXG4iICUgKHJlcG9faWQsIHJlcG9fbmFtZSwgcmVwb191cmksIGdwZ19vcHRzKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVwb19uYW1lID0gIk9FIFJlbW90ZSBSZXBvOiIgKyAiICIuam9pbih1cmxwYXJzZSh1cmkpLnBhdGguc3BsaXQoIi8iKSkKICAgICAgICAgICAgICAgICByZXBvX3VyaSA9IHVyaQogICAgICAgICAgICAgICAgIG9wZW4ob2UucGF0aC5qb2luKHNlbGYudGFyZ2V0X3Jvb3RmcywgImV0YyIsICJ5dW0ucmVwb3MuZCIsIHJlcG9fYmFzZSArICIucmVwbyIpLCAndycpLndyaXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyVzXVxubmFtZT0lc1xuYmFzZXVybD0lc1xuIiAlIChyZXBvX2Jhc2UsIHJlcG9fbmFtZSwgcmVwb191cmkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyVzXVxubmFtZT0lc1xuYmFzZXVybD0lc1xuJXMiICUgKHJlcG9fYmFzZSwgcmVwb19uYW1lLCByZXBvX3VyaSwgZ3BnX29wdHMpKQogCiAgICAgZGVmIF9wcmVwYXJlX3BrZ190cmFuc2FjdGlvbihzZWxmKToKICAgICAgICAgb3MuZW52aXJvblsnRCddID0gc2VsZi50YXJnZXRfcm9vdGZzCkBAIC02MDgsMTAgKzYxNywxMiBAQAogICAgICAgICAgICAgc2VsZi5faW52b2tlX2RuZihbInJlbW92ZSJdICsgcGtncykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAicnBtIikKLSAgICAgICAgICAgIGFyZ3MgPSBbIi1lIiwgIi0tbm9kZXBzIiwgIi0tcm9vdD0lcyIgJXNlbGYudGFyZ2V0X3Jvb3Rmc10KKyAgICAgICAgICAgIGFyZ3MgPSBbIi1lIiwgIi12IiwgIi0tbm9kZXBzIiwgIi0tcm9vdD0lcyIgJXNlbGYudGFyZ2V0X3Jvb3Rmc10KIAogICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJiLm5vdGUoIlJ1bm5pbmcgJXMiICUgJyAnLmpvaW4oW2NtZF0gKyBhcmdzICsgcGtncykpCiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW2NtZF0gKyBhcmdzICsgcGtncywgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgICAgICBiYi5ub3RlKG91dHB1dCkKICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJDb3VsZCBub3QgaW52b2tlIHJwbS4gQ29tbWFuZCAiCiAgICAgICAgICAgICAgICAgICAgICAiJyVzJyByZXR1cm5lZCAlZDpcbiVzIiAlICgnICcuam9pbihbY21kXSArIGFyZ3MgKyBwa2dzKSwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQpAQCAtNjgyLDcgKzY5Myw3IEBACiAgICAgICAgIHJldHVybiBwYWNrYWdlcwogCiAgICAgZGVmIHVwZGF0ZShzZWxmKToKLSAgICAgICAgc2VsZi5faW52b2tlX2RuZihbIm1ha2VjYWNoZSJdKQorICAgICAgICBzZWxmLl9pbnZva2VfZG5mKFsibWFrZWNhY2hlIiwgIi0tcmVmcmVzaCJdKQogCiAgICAgZGVmIF9pbnZva2VfZG5mKHNlbGYsIGRuZl9hcmdzLCBmYXRhbCA9IFRydWUsIHByaW50X291dHB1dCA9IFRydWUgKToKICAgICAgICAgb3MuZW52aXJvblsnUlBNX0VUQ0NPTkZJR0RJUiddID0gc2VsZi50YXJnZXRfcm9vdGZzCkBAIC0xMTQ1LDcgKzExNTYsNyBAQAogCiAgICAgICAgICMgQ3JlYXRlIGFuIHRlbXAgZGlyIGFzIG9wa2cgcm9vdCBmb3IgZHVtbXkgaW5zdGFsbGF0aW9uCiAgICAgICAgIHRlbXBfcm9vdGZzID0gc2VsZi5kLmV4cGFuZCgnJHtUfS9vcGtnJykKLSAgICAgICAgb3BrZ19saWJfZGlyID0gc2VsZi5kLmdldFZhcignT1BLR0xJQkRJUicsIFRydWUpCisgICAgICAgIG9wa2dfbGliX2RpciA9IHNlbGYuZC5nZXRWYXIoJ09QS0dMSUJESVInKQogICAgICAgICBpZiBvcGtnX2xpYl9kaXJbMF0gPT0gIi8iOgogICAgICAgICAgICAgb3BrZ19saWJfZGlyID0gb3BrZ19saWJfZGlyWzE6XQogICAgICAgICB0ZW1wX29wa2dfZGlyID0gb3MucGF0aC5qb2luKHRlbXBfcm9vdGZzLCBvcGtnX2xpYl9kaXIsICdvcGtnJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQppbmRleCBmMWFiM2RkLi41ODRiZjZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IG9lLnBhdGgKK2ltcG9ydCBvZS50eXBlcwogCiBjbGFzcyBOb3RGb3VuZEVycm9yKGJiLkJCSGFuZGxlZEV4Y2VwdGlvbik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGgucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weQppbmRleCA0NDhhMmI5Li4xZWEwM2Q1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weQpAQCAtOTgsNyArOTgsNyBAQAogICAgIGlmIChvcy5zdGF0KHNyYykuc3RfZGV2ID09ICBvcy5zdGF0KGRzdCkuc3RfZGV2KToKICAgICAgICAgIyBOZWVkIHRvIGNvcHkgZGlyZWN0b3JpZXMgb25seSB3aXRoIHRhciBmaXJzdCBzaW5jZSBjcCB3aWxsIGVycm9yIGlmIHR3byAKICAgICAgICAgIyB3cml0ZXJzIHRyeSBhbmQgY3JlYXRlIGEgZGlyZWN0b3J5IGF0IHRoZSBzYW1lIHRpbWUKLSAgICAgICAgY21kID0gImNkICVzOyBmaW5kIC4gLXR5cGUgZCAtcHJpbnQgfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLWNmIC0gLUMgJXMgLXAgLS1uby1yZWN1cnNpb24gLS1maWxlcy1mcm9tIC0gfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLXhmIC0gLUMgJXMiICUgKHNyYywgc3JjLCBkc3QpCisgICAgICAgIGNtZCA9ICJjZCAlczsgZmluZCAuIC10eXBlIGQgLXByaW50IHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC1jZiAtIC1DICVzIC1wIC0tbm8tcmVjdXJzaW9uIC0tZmlsZXMtZnJvbSAtIHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC14aGYgLSAtQyAlcyIgJSAoc3JjLCBzcmMsIGRzdCkKICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgIHNvdXJjZSA9ICcnCiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQppbmRleCBhN2ZkZDM2Li5jYWI4ZTQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CkBAIC0yLDcgKzIsNyBAQAogIwogIyBTb21lIGNvZGUgYm9ycm93ZWQgZnJvbSB0aGUgT0UgbGF5ZXIgaW5kZXgKICMKLSMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgSW50ZWwgQ29ycG9yYXRpb24KICMKIAogaW1wb3J0IHN5cwpAQCAtMTg4LDYgKzE4OCwxMSBAQAogICAgICAgICAgICAgZm9yIHdyYXBsaW5lIGluIHdyYXBwZWRbOi0xXToKICAgICAgICAgICAgICAgICBhZGRsaW5lcy5hcHBlbmQoJyVzIFxcJXMnICUgKHdyYXBsaW5lLCBuZXdsaW5lKSkKICAgICAgICAgICAgIGFkZGxpbmVzLmFwcGVuZCgnJXMlcycgJSAod3JhcHBlZFstMV0sIG5ld2xpbmUpKQorCisgICAgICAgICMgU3BsaXQgb24gbmV3bGluZXMgLSB0aGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBpZiB5b3UgYXJlIG9ubHkKKyAgICAgICAgIyBnb2luZyB0byB3cml0ZSB0aGUgb3V0cHV0IHRvIGRpc2ssIGJ1dCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIGl0CisgICAgICAgICMgKGFzIHBhdGNoX3JlY2lwZV9maWxlKCkgd2lsbCBkbyBpZiBwYXRjaD1UcnVlKSB0aGVuIGl0J3MgaW1wb3J0YW50LgorICAgICAgICBhZGRsaW5lcyA9IFtsaW5lIGZvciBsIGluIGFkZGxpbmVzIGZvciBsaW5lIGluIGwuc3BsaXRsaW5lcyhUcnVlKV0KICAgICAgICAgaWYgcmV3aW5kY29tbWVudHM6CiAgICAgICAgICAgICAjIEVuc3VyZSB3ZSBpbnNlcnQgdGhlIGxpbmVzIGJlZm9yZSBhbnkgbGVhZGluZyBjb21tZW50cwogICAgICAgICAgICAgIyAodGhhdCB3ZSdkIHdhbnQgdG8gZW5zdXJlIHJlbWFpbiBsZWFkaW5nIHRoZSBuZXh0IHZhbHVlKQpAQCAtMzIwLDcgKzMyNSw3IEBACiAKIAogCi1kZWYgY29weV9yZWNpcGVfZmlsZXMoZCwgdGd0X2Rpciwgd2hvbGVfZGlyPUZhbHNlLCBkb3dubG9hZD1UcnVlKToKK2RlZiBjb3B5X3JlY2lwZV9maWxlcyhkLCB0Z3RfZGlyLCB3aG9sZV9kaXI9RmFsc2UsIGRvd25sb2FkPVRydWUsIGFsbF92YXJpYW50cz1GYWxzZSk6CiAgICAgIiIiQ29weSAobG9jYWwpIHJlY2lwZSBmaWxlcywgaW5jbHVkaW5nIGJvdGggZmlsZXMgaW5jbHVkZWQgdmlhIGluY2x1ZGUvcmVxdWlyZSwKICAgICBhbmQgZmlsZXMgcmVmZXJyZWQgdG8gaW4gdGhlIFNSQ19VUkkgdmFyaWFibGUuIiIiCiAgICAgaW1wb3J0IGJiLmZldGNoMgpAQCAtMzI4LDE4ICszMzMsNDEgQEAKIAogICAgICMgRklYTUUgbmVlZCBhIHdhcm5pbmcgaWYgdGhlIHVuZXhwYW5kZWQgU1JDX1VSSSB2YWx1ZSBjb250YWlucyB2YXJpYWJsZSByZWZlcmVuY2VzCiAKLSAgICB1cmlzID0gKGQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgIiIpLnNwbGl0KCkKLSAgICBmZXRjaCA9IGJiLmZldGNoMi5GZXRjaCh1cmlzLCBkKQotICAgIGlmIGRvd25sb2FkOgotICAgICAgICBmZXRjaC5kb3dubG9hZCgpCisgICAgdXJpX3ZhbHVlcyA9IFtdCisgICAgbG9jYWxwYXRocyA9IFtdCisgICAgZGVmIGZldGNoX3VybHMocmRhdGEpOgorICAgICAgICAjIENvbGxlY3QgdGhlIGxvY2FsIHBhdGhzIGZyb20gU1JDX1VSSQorICAgICAgICBzcmN1cmkgPSByZGF0YS5nZXRWYXIoJ1NSQ19VUkknKSBvciAiIgorICAgICAgICBpZiBzcmN1cmkgbm90IGluIHVyaV92YWx1ZXM6CisgICAgICAgICAgICBmZXRjaCA9IGJiLmZldGNoMi5GZXRjaChzcmN1cmkuc3BsaXQoKSwgcmRhdGEpCisgICAgICAgICAgICBpZiBkb3dubG9hZDoKKyAgICAgICAgICAgICAgICBmZXRjaC5kb3dubG9hZCgpCisgICAgICAgICAgICBmb3IgcHRoIGluIGZldGNoLmxvY2FscGF0aHMoKToKKyAgICAgICAgICAgICAgICBpZiBwdGggbm90IGluIGxvY2FscGF0aHM6CisgICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aHMuYXBwZW5kKHB0aCkKKyAgICAgICAgICAgIHVyaV92YWx1ZXMuYXBwZW5kKHNyY3VyaSkKKworICAgIGZldGNoX3VybHMoZCkKKyAgICBpZiBhbGxfdmFyaWFudHM6CisgICAgICAgICMgR2V0IGZpbGVzIGZvciBvdGhlciB2YXJpYW50cyBlLmcuIGluIHRoZSBjYXNlIG9mIGEgU1JDX1VSSV9hcHBlbmQKKyAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgICAgIHZhcmlhbnRzID0gKGxvY2FsZGF0YS5nZXRWYXIoJ0JCQ0xBU1NFWFRFTkQnKSBvciAnJykuc3BsaXQoKQorICAgICAgICBpZiB2YXJpYW50czoKKyAgICAgICAgICAgICMgRW5zdXJlIHdlIGhhbmRsZSBjbGFzcy10YXJnZXQgaWYgd2UncmUgZGVhbGluZyB3aXRoIG9uZSBvZiB0aGUgdmFyaWFudHMKKyAgICAgICAgICAgIHZhcmlhbnRzLmFwcGVuZCgndGFyZ2V0JykKKyAgICAgICAgICAgIGZvciB2YXJpYW50IGluIHZhcmlhbnRzOgorICAgICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0NMQVNTT1ZFUlJJREUnLCAnY2xhc3MtJXMnICUgdmFyaWFudCkKKyAgICAgICAgICAgICAgICBmZXRjaF91cmxzKGxvY2FsZGF0YSkKIAogICAgICMgQ29weSBsb2NhbCBmaWxlcyB0byB0YXJnZXQgZGlyZWN0b3J5IGFuZCBnYXRoZXIgYW55IHJlbW90ZSBmaWxlcwotICAgIGJiX2RpciA9IG9zLnBhdGguZGlybmFtZShkLmdldFZhcignRklMRScpKSArIG9zLnNlcAorICAgIGJiX2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoZC5nZXRWYXIoJ0ZJTEUnKSkpICsgb3Muc2VwCiAgICAgcmVtb3RlcyA9IFtdCiAgICAgY29waWVkID0gW10KLSAgICBpbmNsdWRlcyA9IFtwYXRoIGZvciBwYXRoIGluIGQuZ2V0VmFyKCdCQklOQ0xVREVEJykuc3BsaXQoKSBpZgotICAgICAgICAgICAgICAgIHBhdGguc3RhcnRzd2l0aChiYl9kaXIpIGFuZCBvcy5wYXRoLmV4aXN0cyhwYXRoKV0KLSAgICBmb3IgcGF0aCBpbiBmZXRjaC5sb2NhbHBhdGhzKCkgKyBpbmNsdWRlczoKKyAgICAjIE5lZWQgdG8gZG8gdGhpcyBpbiB0d28gc3RlcHMgc2luY2Ugd2Ugd2FudCB0byBjaGVjayBhZ2FpbnN0IHRoZSBhYnNvbHV0ZSBwYXRoCisgICAgaW5jbHVkZXMgPSBbb3MucGF0aC5hYnNwYXRoKHBhdGgpIGZvciBwYXRoIGluIGQuZ2V0VmFyKCdCQklOQ0xVREVEJykuc3BsaXQoKSBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKV0KKyAgICAjIFdlIGFsc28gY2hlY2sgdGhpcyBiZWxvdywgYnV0IHdlIGRvbid0IHdhbnQgYW55IGl0ZW1zIGluIHRoaXMgbGlzdCBiZWluZyBjb25zaWRlcmVkIHJlbW90ZXMKKyAgICBpbmNsdWRlcyA9IFtwYXRoIGZvciBwYXRoIGluIGluY2x1ZGVzIGlmIHBhdGguc3RhcnRzd2l0aChiYl9kaXIpXQorICAgIGZvciBwYXRoIGluIGxvY2FscGF0aHMgKyBpbmNsdWRlczoKICAgICAgICAgIyBPbmx5IGltcG9ydCBmaWxlcyB0aGF0IGFyZSB1bmRlciB0aGUgbWV0YSBkaXJlY3RvcnkKICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKGJiX2Rpcik6CiAgICAgICAgICAgICBpZiBub3Qgd2hvbGVfZGlyOgpAQCAtNzc4LDcgKzgwNiw3IEBACiAKIGRlZiBmaW5kX2xheWVyZGlyKGZuKToKICAgICAiIiIgRmlndXJlIG91dCB0aGUgcGF0aCB0byB0aGUgYmFzZSBvZiB0aGUgbGF5ZXIgY29udGFpbmluZyBhIGZpbGUgKGUuZy4gYSByZWNpcGUpIiIiCi0gICAgcHRoID0gZm4KKyAgICBwdGggPSBvcy5wYXRoLmFic3BhdGgoZm4pCiAgICAgbGF5ZXJkaXIgPSAnJwogICAgIHdoaWxlIHB0aDoKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHB0aCwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CmluZGV4IDk2NTkxZjMuLjc1NGVmNTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQpAQCAtMjYxLDE1ICsyNjEsMjIgQEAKICAgICAgICAgICAgICMgUmVtb3ZlIGNvbXBvbmVudHMgdGhhdCB3ZSBkb24ndCBuZWVkIGlmIGl0J3MgYSByZWFkLW9ubHkgcm9vdGZzCiAgICAgICAgICAgICB1bm5lZWRlZF9wa2dzID0gc2VsZi5kLmdldFZhcigiUk9PVEZTX1JPX1VOTkVFREVEIikuc3BsaXQoKQogICAgICAgICAgICAgcGtnc19pbnN0YWxsZWQgPSBpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcyhzZWxmLmQpCi0gICAgICAgICAgICAjIE1ha2Ugc3VyZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIGlzIGxhc3Qgb24gdGhlIGNvbW1hbmQgbGluZSwgc28KLSAgICAgICAgICAgICMgdGhhdCBpdCBpcyByZW1vdmVkIGxhc3QuIFRoaXMgbWFrZXMgc3VyZSB0aGF0IGl0cyBkYXRhYmFzZSBpcwotICAgICAgICAgICAgIyBhdmFpbGFibGUgd2hpbGUgdW5pbnN0YWxsaW5nIHBhY2thZ2VzLCBhbGxvd2luZyBhbHRlcm5hdGl2ZQotICAgICAgICAgICAgIyBzeW1saW5rcyBvZiBwYWNrYWdlcyB0byBiZSB1bmluc3RhbGxlZCB0byBiZSBtYW5hZ2VkIGNvcnJlY3RseS4KKyAgICAgICAgICAgICMgTWFrZSBzdXJlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgaXMgcmVtb3ZlZCBsYXN0LiBUaGlzIGlzCisgICAgICAgICAgICAjIGJlY2F1c2UgaXRzIGRhdGFiYXNlIGhhcyB0byBhdmFpbGFibGUgd2hpbGUgdW5pbnN0YWxsaW5nCisgICAgICAgICAgICAjIG90aGVyIHBhY2thZ2VzLCBhbGxvd2luZyBhbHRlcm5hdGl2ZSBzeW1saW5rcyBvZiBwYWNrYWdlcworICAgICAgICAgICAgIyB0byBiZSB1bmluc3RhbGxlZCBvciB0byBiZSBtYW5hZ2VkIGNvcnJlY3RseSBvdGhlcndpc2UuCiAgICAgICAgICAgICBwcm92aWRlciA9IHNlbGYuZC5nZXRWYXIoIlZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzIikKICAgICAgICAgICAgIHBrZ3NfdG9fcmVtb3ZlID0gc29ydGVkKFtwa2cgZm9yIHBrZyBpbiBwa2dzX2luc3RhbGxlZCBpZiBwa2cgaW4gdW5uZWVkZWRfcGtnc10sIGtleT1sYW1iZGEgeDogeCA9PSBwcm92aWRlcikKIAorICAgICAgICAgICAgIyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHByb3ZpZGVyIGlzIHJlbW92ZWQgaW4gaXRzIG93biByZW1vdmUoKQorICAgICAgICAgICAgIyBjYWxsIGJlY2F1c2UgYWxsIHBhY2thZ2UgbWFuYWdlcnMgZG8gbm90IGd1YXJhbnRlZSB0aGUgcGFja2FnZXMKKyAgICAgICAgICAgICMgYXJlIHJlbW92ZWQgaW4gdGhlIG9yZGVyIHRoZXkgZ2l2ZW4gaW4gdGhlIGxpc3QgKHdoaWNoIGlzCisgICAgICAgICAgICAjIHBhc3NlZCB0byB0aGUgY29tbWFuZCBsaW5lKS4gVGhlIHNvcnRpbmcgZG9uZSBlYXJsaWVyIGlzCisgICAgICAgICAgICAjIHV0aWxpemVkIHRvIGltcGxlbWVudCB0aGUgMi1zdGFnZSByZW1vdmFsLgorICAgICAgICAgICAgaWYgbGVuKHBrZ3NfdG9fcmVtb3ZlKSA+IDE6CisgICAgICAgICAgICAgICAgc2VsZi5wbS5yZW1vdmUocGtnc190b19yZW1vdmVbOi0xXSwgRmFsc2UpCiAgICAgICAgICAgICBpZiBsZW4ocGtnc190b19yZW1vdmUpID4gMDoKLSAgICAgICAgICAgICAgICBzZWxmLnBtLnJlbW92ZShwa2dzX3RvX3JlbW92ZSwgRmFsc2UpCisgICAgICAgICAgICAgICAgc2VsZi5wbS5yZW1vdmUoW3BrZ3NfdG9fcmVtb3ZlWy0xXV0sIEZhbHNlKQogCiAgICAgICAgIGlmIGRlbGF5ZWRfcG9zdGluc3RzOgogICAgICAgICAgICAgc2VsZi5fc2F2ZV9wb3N0aW5zdHMoKQpAQCAtMzAyLDEwICszMDksMTEgQEAKICAgICAgICAgICAgIGJiLm5vdGUoIj4gRXhlY3V0aW5nICVzIGludGVyY2VwdCAuLi4iICUgc2NyaXB0KQogCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoc2NyaXB0X2Z1bGwpCisgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoc2NyaXB0X2Z1bGwsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgICAgICAgICBpZiBvdXRwdXQ6IGJiLm5vdGUob3V0cHV0LmRlY29kZSgidXRmLTgiKSkKICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGJiLndhcm4oIlRoZSBwb3N0aW5zdGFsbCBpbnRlcmNlcHQgaG9vayAnJXMnIGZhaWxlZCAoZXhpdCBjb2RlOiAlZCkhIFNlZSBsb2cgZm9yIGRldGFpbHMhIChPdXRwdXQ6ICVzKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKHNjcmlwdCwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCisgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxsIGludGVyY2VwdCBob29rICclcycgZmFpbGVkLCBkZXRhaWxzIGluIGxvZy5kb19yb290ZnMiICUgc2NyaXB0KQorICAgICAgICAgICAgICAgIGJiLm5vdGUoIkV4aXQgY29kZSAlZC4gT3V0cHV0OlxuJXMiICUgKGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgICAgICAgICAgICAgIHdpdGggb3BlbihzY3JpcHRfZnVsbCkgYXMgaW50ZXJjZXB0OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX3BrZ3MgPSBOb25lCkBAIC01MjQsNyArNTMyLDggQEAKICAgICAgICAgICAgIHNlbGYucG0uc2F2ZV9ycG1wb3N0aW5zdChwa2cpCiAKICAgICBkZWYgX2NsZWFudXAoc2VsZik6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5wbS5faW52b2tlX2RuZihbImNsZWFuIiwgImFsbCJdKQorCiAKIGNsYXNzIERwa2dPcGtnUm9vdGZzKFJvb3Rmcyk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHByb2dyZXNzX3JlcG9ydGVyPU5vbmUsIGxvZ2NhdGNoZXI9Tm9uZSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weQppbmRleCA5ZmUxNjg3Li5hM2E2YzM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKQEAgLTE1Miw2ICsxNTIsOCBAQAogICAgICAgICBwbS5pbnN0YWxsKHBrZ3NfYXR0ZW1wdCwgVHJ1ZSkKIAogICAgIGRlZiBfcG9wdWxhdGUoc2VsZik6CisgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QUkVfVEFSR0VUX0NPTU1BTkQiKSkKKwogICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nIFRBUkdFVCBwYWNrYWdlcyIpCiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi50YXJnZXRfcG0sIHNlbGYudGFyZ2V0X21hbmlmZXN0KQogCkBAIC0yMzMsNiArMjM1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtGYWxzZSwgVHJ1ZV1bcGtnX3R5cGUgPT0gTWFuaWZlc3QuUEtHX1RZUEVfQVRURU1QVF9PTkxZXSkKIAogICAgIGRlZiBfcG9wdWxhdGUoc2VsZik6CisgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QUkVfVEFSR0VUX0NPTU1BTkQiKSkKKwogICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nIFRBUkdFVCBwYWNrYWdlcyIpCiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi50YXJnZXRfcG0sIHNlbGYudGFyZ2V0X21hbmlmZXN0KQogCkBAIC0zMTUsNiArMzE5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtGYWxzZSwgVHJ1ZV1bcGtnX3R5cGUgPT0gTWFuaWZlc3QuUEtHX1RZUEVfQVRURU1QVF9PTkxZXSkKIAogICAgIGRlZiBfcG9wdWxhdGUoc2VsZik6CisgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QUkVfVEFSR0VUX0NPTU1BTkQiKSkKKwogICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nIFRBUkdFVCBwYWNrYWdlcyIpCiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi50YXJnZXRfcG0sIHNlbGYudGFyZ2V0X21hbmlmZXN0KQogCkBAIC0zNzksNSArMzg1LDI0IEBACiAgICAgb3MuZW52aXJvbi5jbGVhcigpCiAgICAgb3MuZW52aXJvbi51cGRhdGUoZW52X2JrcCkKIAorZGVmIGdldF9leHRyYV9zZGtpbmZvKHNzdGF0ZV9kaXIpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgdGFyZ2V0IGFuZCBob3N0IG1hbmlmZXN0IGZpbGVzIHBhY2thZ2VzIG9mIGVTREsuCisgICAgIiIiCisgICAgaW1wb3J0IG1hdGgKKyAgICAKKyAgICBleHRyYV9pbmZvID0ge30KKyAgICBleHRyYV9pbmZvWyd0YXNrc2l6ZXMnXSA9IHt9CisgICAgZXh0cmFfaW5mb1snZmlsZXNpemVzJ10gPSB7fQorICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHNzdGF0ZV9kaXIpOgorICAgICAgICBmb3IgZm4gaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLnRneicpOgorICAgICAgICAgICAgICAgIGZzaXplID0gaW50KG1hdGguY2VpbChmbG9hdChvcy5wYXRoLmdldHNpemUob3MucGF0aC5qb2luKHJvb3QsIGZuKSkpIC8gMTAyNCkpCisgICAgICAgICAgICAgICAgdGFzayA9IGZuLnJzcGxpdCgnOicsMSlbMV0uc3BsaXQoJ18nLDEpWzFdLnNwbGl0KCcsJylbMF0KKyAgICAgICAgICAgICAgICBvcmlndG90YWwgPSBleHRyYV9pbmZvWyd0YXNrc2l6ZXMnXS5nZXQodGFzaywgMCkKKyAgICAgICAgICAgICAgICBleHRyYV9pbmZvWyd0YXNrc2l6ZXMnXVt0YXNrXSA9IG9yaWd0b3RhbCArIGZzaXplCisgICAgICAgICAgICAgICAgZXh0cmFfaW5mb1snZmlsZXNpemVzJ11bZm5dID0gZnNpemUKKyAgICByZXR1cm4gZXh0cmFfaW5mbworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHBhc3MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CmluZGV4IGI4ZGQ0YzguLjNhODc3OGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQpAQCAtMjksNyArMjksNyBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgIyBRdWlsdCAocGF0Y2ggYXBwbGljYXRpb24pIGNoYW5naW5nIGlzbid0IGxpa2VseSB0byBhZmZlY3QgYW55dGhpbmcKLSAgICBleGNsdWRlbGlzdCA9IFsncXVpbHQtbmF0aXZlJywgJ3N1YnZlcnNpb24tbmF0aXZlJywgJ2dpdC1uYXRpdmUnXQorICAgIGV4Y2x1ZGVsaXN0ID0gWydxdWlsdC1uYXRpdmUnLCAnc3VidmVyc2lvbi1uYXRpdmUnLCAnZ2l0LW5hdGl2ZScsICdjY2FjaGUtbmF0aXZlJ10KICAgICBpZiBkZXBuYW1lIGluIGV4Y2x1ZGVsaXN0IGFuZCByZWNpcGVuYW1lICE9IGRlcG5hbWU6CiAgICAgICAgIHJldHVybiBGYWxzZQogCkBAIC0zMjAsNyArMzIwLDcgQEAKIAogICAgIGlmIG5vdCB0YXNraGFzaGxpc3Qgb3IgKGxlbihmaWxlZGF0ZXMpIDwgMiBhbmQgbm90IGZvdW5kYWxsKToKICAgICAgICAgIyBUaGF0IGRpZG4ndCB3b3JrLCBsb29rIGluIHNzdGF0ZS1jYWNoZQotICAgICAgICBoYXNoZXMgPSB0YXNraGFzaGxpc3Qgb3IgWycqJ10KKyAgICAgICAgaGFzaGVzID0gdGFza2hhc2hsaXN0IG9yIFsnPycgKiAzMl0KICAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICAgICAgIGZvciBoYXNodmFsIGluIGhhc2hlczoKICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1BBQ0tBR0VfQVJDSCcsICcqJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXJtaW5hbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXJtaW5hbC5weQppbmRleCAyZjE4ZWMwLi45NGFmZTM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Rlcm1pbmFsLnB5CkBAIC0yOTIsNiArMjkyLDggQEAKICAgICAgICAgICAgIHZlcm51bSA9IHZlci5zcGxpdCgnICcpWy0xXQogICAgICAgICBpZiB2ZXIuc3RhcnRzd2l0aCgnR05PTUUgVGVybWluYWwnKToKICAgICAgICAgICAgIHZlcm51bSA9IHZlci5zcGxpdCgnICcpWy0xXQorICAgICAgICBpZiB2ZXIuc3RhcnRzd2l0aCgnTUFURSBUZXJtaW5hbCcpOgorICAgICAgICAgICAgdmVybnVtID0gdmVyLnNwbGl0KCcgJylbLTFdCiAgICAgICAgIGlmIHZlci5zdGFydHN3aXRoKCd0bXV4Jyk6CiAgICAgICAgICAgICB2ZXJudW0gPSB2ZXIuc3BsaXQoKVstMV0KICAgICByZXR1cm4gdmVybnVtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXNlcmFkZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91c2VyYWRkLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3OWFjNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXNlcmFkZC5weQpAQCAtMCwwICsxLDY4IEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCByZQorCitjbGFzcyBteUFyZ3VtZW50UGFyc2VyKGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKToKKyAgICBkZWYgX3ByaW50X21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZmlsZT1Ob25lKToKKyAgICAgICAgYmIud2FybigiJXMgLSAlczogJXMiICUgKGQuZ2V0VmFyKCdQTicpLCBwa2csIG1lc3NhZ2UpKQorCisgICAgIyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQuLi4KKyAgICBkZWYgZXhpdChzZWxmLCBzdGF0dXM9MCwgbWVzc2FnZT1Ob25lKToKKyAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2Ugb3IgKCIlcyAtICVzOiB1c2VyYWRkLmJiY2xhc3M6IEFyZ3VtZW50IHBhcnNpbmcgZXhpdGVkIiAlIChkLmdldFZhcignUE4nKSwgcGtnKSkKKyAgICAgICAgZXJyb3IobWVzc2FnZSkKKworICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZChtZXNzYWdlKQorCitkZWYgc3BsaXRfY29tbWFuZHMocGFyYW1zKToKKyAgICBwYXJhbXMgPSByZS5zcGxpdCgnJydbIFx0XSo7WyBcdF0qKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgcGFyYW1zLnN0cmlwKCkpCisgICAgIyBSZW1vdmUgYW55IGVtcHR5IGl0ZW1zCisgICAgcmV0dXJuIFt4IGZvciB4IGluIHBhcmFtcyBpZiB4XQorCitkZWYgc3BsaXRfYXJncyhwYXJhbXMpOgorICAgIHBhcmFtcyA9IHJlLnNwbGl0KCcnJ1sgXHRdKyg/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIHBhcmFtcy5zdHJpcCgpKQorICAgICMgUmVtb3ZlIGFueSBlbXB0eSBpdGVtcworICAgIHJldHVybiBbeCBmb3IgeCBpbiBwYXJhbXMgaWYgeF0KKworZGVmIGJ1aWxkX3VzZXJhZGRfcGFyc2VyKCk6CisgICAgIyBUaGUgZm9sbG93aW5nIGNvbWVzIGZyb20gLS1oZWxwIG9uIHVzZXJhZGQgZnJvbSBzaGFkb3cKKyAgICBwYXJzZXIgPSBteUFyZ3VtZW50UGFyc2VyKHByb2c9J3VzZXJhZGQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1iIiwgIi0tYmFzZS1kaXIiLCBtZXRhdmFyPSJCQVNFX0RJUiIsIGhlbHA9ImJhc2UgZGlyZWN0b3J5IGZvciB0aGUgaG9tZSBkaXJlY3Rvcnkgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItYyIsICItLWNvbW1lbnQiLCBtZXRhdmFyPSJDT01NRU5UIiwgaGVscD0iR0VDT1MgZmllbGQgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZCIsICItLWhvbWUtZGlyIiwgbWV0YXZhcj0iSE9NRV9ESVIiLCBoZWxwPSJob21lIGRpcmVjdG9yeSBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1EIiwgIi0tZGVmYXVsdHMiLCBoZWxwPSJwcmludCBvciBjaGFuZ2UgZGVmYXVsdCB1c2VyYWRkIGNvbmZpZ3VyYXRpb24iLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1lIiwgIi0tZXhwaXJlZGF0ZSIsIG1ldGF2YXI9IkVYUElSRV9EQVRFIiwgaGVscD0iZXhwaXJhdGlvbiBkYXRlIG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWYiLCAiLS1pbmFjdGl2ZSIsIG1ldGF2YXI9IklOQUNUSVZFIiwgaGVscD0icGFzc3dvcmQgaW5hY3Rpdml0eSBwZXJpb2Qgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZyIsICItLWdpZCIsIG1ldGF2YXI9IkdST1VQIiwgaGVscD0ibmFtZSBvciBJRCBvZiB0aGUgcHJpbWFyeSBncm91cCBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1HIiwgIi0tZ3JvdXBzIiwgbWV0YXZhcj0iR1JPVVBTIiwgaGVscD0ibGlzdCBvZiBzdXBwbGVtZW50YXJ5IGdyb3VwcyBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1rIiwgIi0tc2tlbCIsIG1ldGF2YXI9IlNLRUxfRElSIiwgaGVscD0idXNlIHRoaXMgYWx0ZXJuYXRpdmUgc2tlbGV0b24gZGlyZWN0b3J5IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItSyIsICItLWtleSIsIG1ldGF2YXI9IktFWT1WQUxVRSIsIGhlbHA9Im92ZXJyaWRlIC9ldGMvbG9naW4uZGVmcyBkZWZhdWx0cyIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWwiLCAiLS1uby1sb2ctaW5pdCIsIGhlbHA9ImRvIG5vdCBhZGQgdGhlIHVzZXIgdG8gdGhlIGxhc3Rsb2cgYW5kIGZhaWxsb2cgZGF0YWJhc2VzIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbSIsICItLWNyZWF0ZS1ob21lIiwgaGVscD0iY3JlYXRlIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9VHJ1ZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItTSIsICItLW5vLWNyZWF0ZS1ob21lIiwgZGVzdD0iY3JlYXRlX2hvbWUiLCBoZWxwPSJkbyBub3QgY3JlYXRlIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLU4iLCAiLS1uby11c2VyLWdyb3VwIiwgZGVzdD0idXNlcl9ncm91cCIsIGhlbHA9ImRvIG5vdCBjcmVhdGUgYSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHVzZXIiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW8iLCAiLS1ub24tdW5pcXVlIiwgaGVscD0iYWxsb3cgdG8gY3JlYXRlIHVzZXJzIHdpdGggZHVwbGljYXRlIChub24tdW5pcXVlIFVJRCkiLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1wIiwgIi0tcGFzc3dvcmQiLCBtZXRhdmFyPSJQQVNTV09SRCIsIGhlbHA9ImVuY3J5cHRlZCBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1QIiwgIi0tY2xlYXItcGFzc3dvcmQiLCBtZXRhdmFyPSJDTEVBUl9QQVNTV09SRCIsIGhlbHA9InVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1SIiwgIi0tcm9vdCIsIG1ldGF2YXI9IkNIUk9PVF9ESVIiLCBoZWxwPSJkaXJlY3RvcnkgdG8gY2hyb290IGludG8iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1yIiwgIi0tc3lzdGVtIiwgaGVscD0iY3JlYXRlIGEgc3lzdGVtIGFjY291bnQiLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1zIiwgIi0tc2hlbGwiLCBtZXRhdmFyPSJTSEVMTCIsIGhlbHA9ImxvZ2luIHNoZWxsIG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXUiLCAiLS11aWQiLCBtZXRhdmFyPSJVSUQiLCBoZWxwPSJ1c2VyIElEIG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVUiLCAiLS11c2VyLWdyb3VwIiwgaGVscD0iY3JlYXRlIGEgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PVRydWUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiTE9HSU4iLCBoZWxwPSJMb2dpbiBuYW1lIG9mIHRoZSBuZXcgdXNlciIpCisKKyAgICByZXR1cm4gcGFyc2VyCisKK2RlZiBidWlsZF9ncm91cGFkZF9wYXJzZXIoKToKKyAgICAjIFRoZSBmb2xsb3dpbmcgY29tZXMgZnJvbSAtLWhlbHAgb24gZ3JvdXBhZGQgZnJvbSBzaGFkb3cKKyAgICBwYXJzZXIgPSBteUFyZ3VtZW50UGFyc2VyKHByb2c9J2dyb3VwYWRkJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZiIsICItLWZvcmNlIiwgaGVscD0iZXhpdCBzdWNjZXNzZnVsbHkgaWYgdGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzLCBhbmQgY2FuY2VsIC1nIGlmIHRoZSBHSUQgaXMgYWxyZWFkeSB1c2VkIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZyIsICItLWdpZCIsIG1ldGF2YXI9IkdJRCIsIGhlbHA9InVzZSBHSUQgZm9yIHRoZSBuZXcgZ3JvdXAiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1LIiwgIi0ta2V5IiwgbWV0YXZhcj0iS0VZPVZBTFVFIiwgaGVscD0ib3ZlcnJpZGUgL2V0Yy9sb2dpbi5kZWZzIGRlZmF1bHRzIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW5vbi11bmlxdWUiLCBoZWxwPSJhbGxvdyB0byBjcmVhdGUgZ3JvdXBzIHdpdGggZHVwbGljYXRlIChub24tdW5pcXVlKSBHSUQiLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1wIiwgIi0tcGFzc3dvcmQiLCBtZXRhdmFyPSJQQVNTV09SRCIsIGhlbHA9InVzZSB0aGlzIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVAiLCAiLS1jbGVhci1wYXNzd29yZCIsIG1ldGF2YXI9IkNMRUFSX1BBU1NXT1JEIiwgaGVscD0idXNlIHRoaXMgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXAiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1SIiwgIi0tcm9vdCIsIG1ldGF2YXI9IkNIUk9PVF9ESVIiLCBoZWxwPSJkaXJlY3RvcnkgdG8gY2hyb290IGludG8iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1yIiwgIi0tc3lzdGVtIiwgaGVscD0iY3JlYXRlIGEgc3lzdGVtIGFjY291bnQiLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIkdST1VQIiwgaGVscD0iR3JvdXAgbmFtZSBvZiB0aGUgbmV3IGdyb3VwIikKKworICAgIHJldHVybiBwYXJzZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQppbmRleCAzMzBhNWZmLi42NDNhYjc4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CkBAIC0xMjYsNiArMTI2LDQ2IEBACiAgICAgaWYgYWRkZmVhdHVyZXM6CiAgICAgICAgIGQuYXBwZW5kVmFyKHZhciwgIiAiICsgIiAiLmpvaW4oYWRkZmVhdHVyZXMpKQogCitkZWYgYWxsX2Rpc3Ryb19mZWF0dXJlcyhkLCBmZWF0dXJlcywgdHJ1ZXZhbHVlPSIxIiwgZmFsc2V2YWx1ZT0iIik6CisgICAgIiIiCisgICAgUmV0dXJucyB0cnVldmFsdWUgaWYgKmFsbCogZ2l2ZW4gZmVhdHVyZXMgYXJlIHNldCBpbiBESVNUUk9fRkVBVFVSRVMsCisgICAgZWxzZSBmYWxzZXZhbHVlLiBUaGUgZmVhdHVyZXMgY2FuIGJlIGdpdmVuIGFzIHNpbmdsZSBzdHJpbmcgb3IgYW55dGhpbmcKKyAgICB0aGF0IGNhbiBiZSB0dXJuZWQgaW50byBhIHNldC4KKworICAgIFRoaXMgaXMgYSBzaG9ydGVyLCBtb3JlIGZsZXhpYmxlIHZlcnNpb24gb2YKKyAgICBiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgZmVhdHVyZXMsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkuCisKKyAgICBXaXRob3V0IGV4cGxpY2l0IHRydWUvZmFsc2UgdmFsdWVzIGl0IGNhbiBiZSB1c2VkIGRpcmVjdGx5IHdoZXJlCisgICAgUHl0aG9uIGV4cGVjdHMgYSBib29sZWFuOgorICAgICAgIGlmIG9lLnV0aWxzLmFsbF9kaXN0cm9fZmVhdHVyZXMoZCwgImZvbyBiYXIiKToKKyAgICAgICAgICAgYmIuZmF0YWwoImZvbyBhbmQgYmFyIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgRElTVFJPX0ZFQVRVUkVTIikKKworICAgIFdpdGgganVzdCBhIHRydWV2YWx1ZSwgaXQgY2FuIGJlIHVzZWQgdG8gaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSBtZWFudCB0byBiZQorICAgIHVzZWQgb25seSB3aGVuIHJlcXVlc3RlZCB2aWEgRElTVFJPX0ZFQVRVUkVTOgorICAgICAgIHJlcXVpcmUgJHtAIG9lLnV0aWxzLmFsbF9kaXN0cm9fZmVhdHVyZXMoZCwgImZvbyBiYXIiLCAiZm9vLWFuZC1iYXIuaW5jIikKKyAgICAiIiIKKyAgICByZXR1cm4gYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsIGZlYXR1cmVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCisKK2RlZiBhbnlfZGlzdHJvX2ZlYXR1cmVzKGQsIGZlYXR1cmVzLCB0cnVldmFsdWU9IjEiLCBmYWxzZXZhbHVlPSIiKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRydWV2YWx1ZSBpZiBhdCBsZWFzdCAqb25lKiBvZiB0aGUgZ2l2ZW4gZmVhdHVyZXMgaXMgc2V0IGluIERJU1RST19GRUFUVVJFUywKKyAgICBlbHNlIGZhbHNldmFsdWUuIFRoZSBmZWF0dXJlcyBjYW4gYmUgZ2l2ZW4gYXMgc2luZ2xlIHN0cmluZyBvciBhbnl0aGluZworICAgIHRoYXQgY2FuIGJlIHR1cm5lZCBpbnRvIGEgc2V0LgorCisgICAgVGhpcyBpcyBhIHNob3J0ZXIsIG1vcmUgZmxleGlibGUgdmVyc2lvbiBvZgorICAgIGJiLnV0aWxzLmNvbnRhaW5zX2FueSgiRElTVFJPX0ZFQVRVUkVTIiwgZmVhdHVyZXMsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkuCisKKyAgICBXaXRob3V0IGV4cGxpY2l0IHRydWUvZmFsc2UgdmFsdWVzIGl0IGNhbiBiZSB1c2VkIGRpcmVjdGx5IHdoZXJlCisgICAgUHl0aG9uIGV4cGVjdHMgYSBib29sZWFuOgorICAgICAgIGlmIG5vdCBvZS51dGlscy5hbnlfZGlzdHJvX2ZlYXR1cmVzKGQsICJmb28gYmFyIik6CisgICAgICAgICAgIGJiLmZhdGFsKCJmb28sIGJhciBvciBib3RoIG11c3QgYmUgc2V0IGluIERJU1RST19GRUFUVVJFUyIpCisKKyAgICBXaXRoIGp1c3QgYSB0cnVldmFsdWUsIGl0IGNhbiBiZSB1c2VkIHRvIGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUgbWVhbnQgdG8gYmUKKyAgICB1c2VkIG9ubHkgd2hlbiByZXF1ZXN0ZWQgdmlhIERJU1RST19GRUFUVVJFUzoKKyAgICAgICByZXF1aXJlICR7QCBvZS51dGlscy5hbnlfZGlzdHJvX2ZlYXR1cmVzKGQsICJmb28gYmFyIiwgImZvby1vci1iYXIuaW5jIikKKworICAgICIiIgorICAgIHJldHVybiBiYi51dGlscy5jb250YWluc19hbnkoIkRJU1RST19GRUFUVVJFUyIsIGZlYXR1cmVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCiAKIGRlZiBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKToKICAgICAiIiIKQEAgLTE4NCwyNSArMjI0LDMwIEBACiAgICAgZGVmIGluaXRfd29ya2VyKCk6CiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc2lnbmFsLlNJR19JR04pCiAKKyAgICBmYWlscyA9IFtdCisKKyAgICBkZWYgZmFpbHVyZXMocmVzKToKKyAgICAgICAgZmFpbHMuYXBwZW5kKHJlcykKKwogICAgIG5wcm9jID0gbWluKG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKSwgbGVuKGNvbW1hbmRzKSkKICAgICBwb29sID0gYmIudXRpbHMubXVsdGlwcm9jZXNzaW5ncG9vbChucHJvYywgaW5pdF93b3JrZXIpCi0gICAgaW1hcCA9IHBvb2wuaW1hcChmdW5jdGlvbiwgY29tbWFuZHMpCiAKICAgICB0cnk6Ci0gICAgICAgIHJlcyA9IGxpc3QoaW1hcCkKKyAgICAgICAgbWFwcmVzdWx0ID0gcG9vbC5tYXBfYXN5bmMoZnVuY3Rpb24sIGNvbW1hbmRzLCBlcnJvcl9jYWxsYmFjaz1mYWlsdXJlcykKKwogICAgICAgICBwb29sLmNsb3NlKCkKICAgICAgICAgcG9vbC5qb2luKCkKLSAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGZvciByZXN1bHQgaW4gcmVzOgotICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQorICAgICAgICByZXN1bHRzID0gbWFwcmVzdWx0LmdldCgpCiAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICBwb29sLnRlcm1pbmF0ZSgpCiAgICAgICAgIHBvb2wuam9pbigpCiAgICAgICAgIHJhaXNlCiAKKyAgICBpZiBmYWlsczoKKyAgICAgICAgcmFpc2UgZmFpbHNbMF0KKworICAgIHJldHVybiByZXN1bHRzCisKIGRlZiBzcXVhc2hzcGFjZXMoc3RyaW5nKToKICAgICBpbXBvcnQgcmUKICAgICByZXR1cm4gcmUuc3ViKCJccysiLCAiICIsIHN0cmluZykuc3RyaXAoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weQppbmRleCA2ZTYyYjI3Li43YjJiNGFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weQpAQCAtNDg1LDYgKzQ4NSw3IEBACiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBzeW5jKCk6CiAgICAgICAgICIiIlN5bmMgYW5kIGRyb3Aga2VybmVsIGNhY2hlcyIiIgorICAgICAgICBydW5DbWQyKCdiaXRiYWtlIC1tJywgaWdub3JlX3N0YXR1cz1UcnVlKQogICAgICAgICBsb2cuZGVidWcoIlN5bmNpbmcgYW5kIGRyb3BwaW5nIGtlcm5lbCBjYWNoZXMiIiIpCiAgICAgICAgIEtlcm5lbERyb3BDYWNoZXMuZHJvcCgpCiAgICAgICAgIG9zLnN5bmMoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL3Rlc3RfYmFzaWMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQppbmRleCBhOWU0YTViLi5hMTkwODlhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQpAQCAtMTIxLDUgKzEyMSw3IEBACiAgICAgICAgIHNlbGYuc3luYygpCiAgICAgICAgIHNlbGYubWVhc3VyZV9jbWRfcmVzb3VyY2VzKFtpbnN0YWxsZXIsICcteScsICctZCcsIGRlcGxveV9kaXJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwbG95JywgJ2VTREsgZGVwbG95JykKKyAgICAgICAgI21ha2Ugc3VyZSBiaXRiYWtlIGlzIHVubG9hZGVkCisgICAgICAgIHNlbGYuc3luYygpCiAgICAgICAgIHNlbGYubWVhc3VyZV9kaXNrX3VzYWdlKGRlcGxveV9kaXIsICdkZXBsb3lfZGlyJywgJ2RlcGxveSBkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBhcmVudF9zaXplPVRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CmluZGV4IDA3NDE4ZmMuLmEyOTEyZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CkBAIC0xMDgsNyArMTA4LDcgQEAKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMTApCiAgICAgICAgICAgICBzZWxmLnBvd2VyX2N0bCgiY3ljbGUiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBjb25uLnJ1bigicmVib290IikKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gY29ubi5ydW4oInN5bmM7IHsgc2xlZXAgMTsgcmVib290OyB9ID4gL2Rldi9udWxsICYiKQogICAgICAgICAgICAgaWYgc3RhdHVzICE9IDA6CiAgICAgICAgICAgICAgICAgYmIuZXJyb3IoIkZhaWxlZCByZWJvb3RpbmcgdGFyZ2V0IGFuZCBubyBwb3dlciBjb250cm9sIGNvbW1hbmQgZGVmaW5lZC4gWW91IG5lZWQgdG8gbWFudWFsbHkgcmVzZXQgdGhlIGRldmljZS5cbiVzIiAlIG91dHB1dCkKIApAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgZGVmIF9kZXBsb3koc2VsZik6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSk6CisgICAgZGVmIHN0YXJ0KHNlbGYsIGV4dHJhX2Jvb3RwYXJhbXM9Tm9uZSk6CiAgICAgICAgIGJiLnBsYWluKCIlcyAtIGJvb3QgdGVzdCBpbWFnZSBvbiB0YXJnZXQiICUgc2VsZi5wbikKICAgICAgICAgc2VsZi5fc3RhcnQoKQogICAgICAgICAjIHNldCB0aGUgc3NoIG9iamVjdCBmb3IgdGhlIHRhcmdldC90ZXN0IGltYWdlCkBAIC0xNTYsNyArMTU2LDcgQEAKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICBiYi5wbGFpbigiJXMgLSByZWJvb3QvcG93ZXJjeWNsZSB0YXJnZXQiICUgc2VsZi5wbikKLSAgICAgICAgc2VsZi5wb3dlcl9jeWNsZShzZWxmLmNvbm5lY3Rpb24pCisgICAgICAgIHNlbGYucG93ZXJfY3ljbGUoc2VsZi5tYXN0ZXIpCiAKIAogY2xhc3MgU3lzdGVtZGJvb3RUYXJnZXQoTWFzdGVySW1hZ2VIYXJkd2FyZVRhcmdldCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL1JFQURNRSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvUkVBRE1FCmluZGV4IDBjODU5ZmQuLmQ0ZmNkYTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvUkVBRE1FCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvUkVBRE1FCkBAIC0xLDM4ICsxLDc2IEBACi09IE9FUUEgRnJhbWV3b3JrID0KKz0gT0VRQSAodjIpIEZyYW1ld29yayA9CiAKID09IEludHJvZHVjdGlvbiA9PQogCi1UaGlzIGlzIHRoZSBuZXcgT0VRQSBmcmFtZXdvcmsgdGhlIGJhc2UgY2xhc2VzIG9mIHRoZSBmcmFtZXdvcmsKLWFyZSBpbiB0aGlzIG1vZHVsZSBvZXFhL2NvcmUgdGhlIHN1YnNlcXVlbnQgY29tcG9uZW50cyBuZWVkcyB0bwotZXh0ZW5kIHRoaXMgY2xhc3Nlcy4KK1RoaXMgaXMgdmVyc2lvbiAyIG9mIHRoZSBPRVFBIGZyYW1ld29yay4gQmFzZSBjbGFzZXMgYXJlIGxvY2F0ZWQgaW4gdGhlCisnb2VxYS9jb3JlJyBkaXJlY3RvcnkgYW5kIHN1YnNlcXVlbnQgY29tcG9uZW50cyBtdXN0IGV4dGVuZCBmcm9tIHRoZXNlLgogCi1BIG5ldy91bmlxdWUgcnVubmVyIHdhcyBjcmVhdGVkIGNhbGxlZCBvZS10ZXN0IGFuZCBpcyB1bmRlciBzY3JpcHRzLwotb2UtdGVzdCwgdGhpcyBuZXcgcnVubmVyIHNjYW5zIG92ZXIgb2VxYSBtb2R1bGUgc2VhcmNoaW5nIGZvciB0ZXN0Ci1jb21wb25lbnRzIHRoYXQgc3VwcG9ydHMgT0VUZXN0Q29udGV4dEV4ZWN1dG9yIGltcGxlbWVudGVkIGluIGNvbnRleHQKLW1vZHVsZSAoaS5lLiBvZXFhL2NvcmUvY29udGV4dC5weSkuCitUaGUgbWFpbiBkZXNpZ24gY29uc2lkZXJhdGlvbiB3YXMgdG8gaW1wbGVtZW50IHRoZSBuZWVkZWQgZnVuY3Rpb25hbGl0eSBvbgordG9wIG9mIHRoZSBQeXRob24gdW5pdHRlc3QgZnJhbWV3b3JrLiBUbyBhY2hpZXZlIHRoaXMgZ29hbCwgdGhlIGZvbGxvd2luZworbW9kdWxlcyBhcmUgdXNlZDoKIAotRm9yIGV4ZWN1dGUgYW4gZXhhbXBsZToKKyAgICAqIG9lcWEvY29yZS9ydW5uZXIucHk6IFByb3ZpZGVzIE9FVGVzdFJlc3VsdCBhbmQgT0VUZXN0UnVubmVyIGJhc2UKKyAgICAgIGNsYXNzZXMgZXh0ZW5kaW5nIHRoZSB1bml0dGVzdCBjbGFzcy4gVGhlc2UgY2xhc3NlcyBzdXBwb3J0IGV4cG9ydGluZworICAgICAgcmVzdWx0cyB0byBkaWZmZXJlbnQgZm9ybWF0czsgY3VycmVudGx5IFJBVyBhbmQgWE1MIHN1cHBvcnQgZXhpc3QuCiAKLSQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52Ci0kIG9lLXRlc3QgY29yZQorICAgICogb2VxYS9jb3JlL2xvYWRlci5weTogUHJvdmlkZXMgT0VUZXN0TG9hZGVyIGV4dGVuZGluZyB0aGUgdW5pdHRlc3QgY2xhc3MuCisgICAgICBJdCBhbHNvIGZlYXR1cmVzIGEgdW5pZmllZCBpbXBsZW1lbnRhdGlvbiBvZiBkZWNvcmF0b3Igc3VwcG9ydCBhbmQKKyAgICAgIGZpbHRlcmluZyB0ZXN0IGNhc2VzLgogCi1Gb3IgbGlzdCBzdXBwb3J0ZWQgY29tcG9uZW50czoKKyAgICAqIG9lcWEvY29yZS9jYXNlLnB5OiBQcm92aWRlcyBPRVRlc3RDYXNlIGJhc2UgY2xhc3MgZXh0ZW5kaW5nCisgICAgICB1bml0dGVzdC5UZXN0Q2FzZSBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBUZXN0IGRhdGEgKHRkKSwgVGVzdCBjb250ZXh0CisgICAgICBhbmQgTG9nZ2VyIGZ1bmN0aW9uYWxpdHkuCiAKLSQgb2UtdGVzdCAtaAorICAgICogb2VxYS9jb3JlL2RlY29yYXRvcjogUHJvdmlkZXMgT0VUZXN0RGVjb3JhdG9yLCBhIG5ldyBjbGFzcyB0byBpbXBsZW1lbnQKKyAgICAgIGRlY29yYXRvcnMgZm9yIFRlc3QgY2FzZXMuCiAKLT09IENyZWF0ZSBuZXcgVGVzdCBjb21wb25lbnQgPT0KKyAgICAqIG9lcWEvY29yZS9jb250ZXh0OiBQcm92aWRlcyBPRVRlc3RDb250ZXh0LCBhIGhpZ2gtbGV2ZWwgQVBJIGZvcgorICAgICAgbG9hZFRlc3RzIGFuZCBydW5UZXN0cyBvZiBjZXJ0YWluIFRlc3QgY29tcG9uZW50IGFuZAorICAgICAgT0VUZXN0Q29udGV4dEV4ZWN1dG9yIGEgYmFzZSBjbGFzcyB0byBlbmFibGUgb2UtdGVzdCB0byBkaXNjb3Zlci91c2UKKyAgICAgIHRoZSBUZXN0IGNvbXBvbmVudC4KIAotVXNhbGx5IGZvciBhZGQgYSBuZXcgVGVzdCBjb21wb25lbnQgdGhlIGRldmVsb3BlciBuZWVkcyB0byBleHRlbmQKLU9FVGVzdENvbnRleHQvT0VUZXN0Q29udGV4dEV4ZWN1dG9yIGluIGNvbnRleHQucHkgYW5kIE9FVGVzdENhc2UgaW4KLWNhc2UucHkuCitBbHNvLCBhIG5ldyAnb2UtdGVzdCcgcnVubmVyIGlzIGxvY2F0ZWQgdW5kZXIgJ3NjcmlwdHMnLCBhbGxvd2luZyBzY2FucyBmb3IgY29tcG9uZW50cwordGhhdCBzdXBwb3J0cyBPRVRlc3RDb250ZXh0RXhlY3V0b3IgKHNlZSBiZWxvdykuCiAKLT09IEhvdyB0byBydW4gdGhlIHRlc3Rpbmcgb2YgdGhlIE9FUUEgZnJhbWV3b3JrID09Cis9PSBUZXJtaW5vbG9neSA9PQorCisgICAgKiBUZXN0IGNvbXBvbmVudDogVGhlIGFyZWEgb2YgdGVzdGluZyBpbiB0aGUgUHJvamVjdCwgZm9yIGV4YW1wbGU6IHJ1bnRpbWUsIFNESywgZVNESywgc2VsZnRlc3QuCisKKyAgICAqIFRlc3QgZGF0YTogRGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIFRlc3QgY29tcG9uZW50LiBDdXJyZW50bHkgd2UgdXNlIGJpdGJha2UgZGF0YXN0b3JlIGFzCisgICAgICBhIFRlc3QgZGF0YSBpbnB1dC4KKworICAgICogVGVzdCBjb250ZXh0OiBBIGNvbnRleHQgb2Ygd2hhdCB0ZXN0cyBuZWVkcyB0byBiZSBydW4gYW5kIGhvdyB0byBkbyBpdDsgdGhpcyBhZGRpdGlvbmFsbHkKKyAgICAgIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVGVzdCBkYXRhIGFuZCBjb3VsZCBoYXZlIGN1c3RvbSBtZXRob2RzIGFuZC9vciBhdHRycy4KKworPT0gb2UtdGVzdCA9PQorCitUaGUgbmV3IHRvb2wsIG9lLXRlc3QsIGhhcyB0aGUgYWJpbGl0eSB0byBzY2FuIHRoZSBjb2RlIGJhc2UgZm9yIHRlc3QgY29tcG9uZW50cyBhbmQgcHJvdmlkZQorYSB1bmlmaWVkIHdheSB0byBydW4gdGVzdCBjYXNlcy4gSW50ZXJuYWxseSBpdCBzY2FucyBmb2xkZXJzIGluc2lkZSBvZXFhIG1vZHVsZSBpbiBvcmRlciB0byBmaW5kCitzcGVjaWZpYyBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IGEgdGVzdCBjb21wb25lbnQuCisKKz09IFVzYWdlID09CisKK0V4ZWN1dGluZyB0aGUgZXhhbXBsZSB0ZXN0IGNvbXBvbmVudAorCisgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKyAgICAkIG9lLXRlc3QgY29yZQorCitHZXR0aW5nIGhlbHAKKworICAgICQgb2UtdGVzdCAtaAorCis9PSBDcmVhdGluZyBuZXcgVGVzdCBDb21wb25lbnQgPT0KKworQWRkaW5nIGEgbmV3IHRlc3QgY29tcG9uZW50IHRoZSBkZXZlbG9wZXIgbmVlZHMgdG8gZXh0ZW5kIE9FVGVzdENvbnRleHQvT0VUZXN0Q29udGV4dEV4ZWN1dG9yCisoZnJvbSBjb250ZXh0LnB5KSBhbmQgT0VUZXN0Q2FzZSAoZnJvbSBjYXNlLnB5KQorCis9PSBTZWxmdGVzdGluZyB0aGUgZnJhbWV3b3JrID09CiAKIFJ1biBhbGwgdGVzdHM6CiAKLSQgUEFUSD0kUEFUSDouLi8uLi8gcHl0aG9uMyAtbSB1bml0dGVzdCBkaXNjb3ZlciAtcyB0ZXN0cworICAgICQgUEFUSD0kUEFUSDouLi8uLi8gcHl0aG9uMyAtbSB1bml0dGVzdCBkaXNjb3ZlciAtcyB0ZXN0cwogCiBSdW4gc29tZSB0ZXN0OgogCi0kIGNkIHRlc3RzLwotJCAuL3Rlc3RfZGF0YS5weQorICAgICQgY2QgdGVzdHMvCisgICAgJCAuL3Rlc3RfZGF0YS5weQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9jYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9jYXNlLnB5CmluZGV4IGQyZGJmMjAuLjkxN2EyYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY2FzZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2Nhc2UucHkKQEAgLTIzLDcgKzIzLDcgQEAKIAogICAgICMgdGRfdmFycyBoYXMgdGhlIHZhcmlhYmxlcyBuZWVkZWQgYnkgYSB0ZXN0IGNsYXNzCiAgICAgIyBvciB0ZXN0IGNhc2UgaW5zdGFuY2UsIGlmIHNvbWUgdmFyIGlzbid0IGludG8gdGQgYQotICAgICMgT0VNaXNzaW5nVmFyaWFibGUgZXhjZXB0aW9uIGlzIHJhaXNlZAorICAgICMgT0VRQU1pc3NpbmdWYXJpYWJsZSBleGNlcHRpb24gaXMgcmFpc2VkCiAgICAgdGRfdmFycyA9IE5vbmUKIAogICAgIEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CmluZGV4IDQ0NzY3NTAuLmFjZDU0NzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKQEAgLTcsMTUgKzcsMTQgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgcmUKIAogZnJvbSBvZXFhLmNvcmUubG9hZGVyIGltcG9ydCBPRVRlc3RMb2FkZXIKLWZyb20gb2VxYS5jb3JlLnJ1bm5lciBpbXBvcnQgT0VUZXN0UnVubmVyLCBPRVN0cmVhbUxvZ2dlciwgeG1sRW5hYmxlZAorZnJvbSBvZXFhLmNvcmUucnVubmVyIGltcG9ydCBPRVRlc3RSdW5uZXIKK2Zyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQU1pc3NpbmdNYW5pZmVzdCwgT0VRQVRlc3ROb3RGb3VuZAogCiBjbGFzcyBPRVRlc3RDb250ZXh0KG9iamVjdCk6CiAgICAgbG9hZGVyQ2xhc3MgPSBPRVRlc3RMb2FkZXIKICAgICBydW5uZXJDbGFzcyA9IE9FVGVzdFJ1bm5lcgotICAgIHN0cmVhbUxvZ2dlckNsYXNzID0gT0VTdHJlYW1Mb2dnZXIKIAogICAgIGZpbGVzX2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKAogICAgICAgICBvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSwgIi4uL2ZpbGVzIikpCkBAIC0zMiw3ICszMSw3IEBACiAKICAgICBkZWYgX3JlYWRfbW9kdWxlc19mcm9tX21hbmlmZXN0KHNlbGYsIG1hbmlmZXN0KToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0KToKLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByYWlzZSBPRVFBTWlzc2luZ01hbmlmZXN0KCJNYW5pZmVzdCBkb2VzIG5vdCBleGlzdCBvbiAlcyIgJSBtYW5pZmVzdCkKIAogICAgICAgICBtb2R1bGVzID0gW10KICAgICAgICAgZm9yIGxpbmUgaW4gb3BlbihtYW5pZmVzdCkucmVhZGxpbmVzKCk6CkBAIC00Miw2ICs0MSwxNCBAQAogCiAgICAgICAgIHJldHVybiBtb2R1bGVzCiAKKyAgICBkZWYgc2tpcFRlc3RzKHNlbGYsIHNraXBzKToKKyAgICAgICAgaWYgbm90IHNraXBzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuc3VpdGVzOgorICAgICAgICAgICAgZm9yIHNraXAgaW4gc2tpcHM6CisgICAgICAgICAgICAgICAgaWYgdGVzdC5pZCgpLnN0YXJ0c3dpdGgoc2tpcCk6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIodGVzdCwgJ3NldFVwJywgbGFtYmRhOiB0ZXN0LnNraXBUZXN0KCdTa2lwIGJ5IHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgIiVzIicgJSBza2lwKSkKKwogICAgIGRlZiBsb2FkVGVzdHMoc2VsZiwgbW9kdWxlX3BhdGhzLCBtb2R1bGVzPVtdLCB0ZXN0cz1bXSwKICAgICAgICAgICAgIG1vZHVsZXNfbWFuaWZlc3Q9IiIsIG1vZHVsZXNfcmVxdWlyZWQ9W10sIGZpbHRlcnM9e30pOgogICAgICAgICBpZiBtb2R1bGVzX21hbmlmZXN0OgpAQCAtNTEsOSArNTgsMTEgQEAKICAgICAgICAgICAgICAgICBtb2R1bGVzX3JlcXVpcmVkLCBmaWx0ZXJzKQogICAgICAgICBzZWxmLnN1aXRlcyA9IHNlbGYubG9hZGVyLmRpc2NvdmVyKCkKIAotICAgIGRlZiBydW5UZXN0cyhzZWxmKToKLSAgICAgICAgc3RyZWFtTG9nZ2VyID0gc2VsZi5zdHJlYW1Mb2dnZXJDbGFzcyhzZWxmLmxvZ2dlcikKLSAgICAgICAgc2VsZi5ydW5uZXIgPSBzZWxmLnJ1bm5lckNsYXNzKHNlbGYsIHN0cmVhbT1zdHJlYW1Mb2dnZXIsIHZlcmJvc2l0eT0yKQorICAgIGRlZiBydW5UZXN0cyhzZWxmLCBza2lwcz1bXSk6CisgICAgICAgIHNlbGYucnVubmVyID0gc2VsZi5ydW5uZXJDbGFzcyhzZWxmLCBkZXNjcmlwdGlvbnM9RmFsc2UsIHZlcmJvc2l0eT0yKQorCisgICAgICAgICMgRGluYW1pY2FsbHkgc2tpcCB0aG9zZSB0ZXN0cyBzcGVjaWZpZWQgdGhvdWdoIGFyZ3VtZW50cworICAgICAgICBzZWxmLnNraXBUZXN0cyhza2lwcykKIAogICAgICAgICBzZWxmLl9ydW5fc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgIHJlc3VsdCA9IHNlbGYucnVubmVyLnJ1bihzZWxmLnN1aXRlcykKQEAgLTYxLDk0ICs3MCwxMyBAQAogCiAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIGRlZiBsb2dTdW1tYXJ5KHNlbGYsIHJlc3VsdCwgY29tcG9uZW50LCBjb250ZXh0X21zZz0nJyk6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlNVTU1BUlk6IikKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiJXMgKCVzKSAtIFJhbiAlZCB0ZXN0JXMgaW4gJS4zZnMiICUgKGNvbXBvbmVudCwKLSAgICAgICAgICAgIGNvbnRleHRfbXNnLCByZXN1bHQudGVzdHNSdW4sIHJlc3VsdC50ZXN0c1J1biAhPSAxIGFuZCAicyIgb3IgIiIsCi0gICAgICAgICAgICAoc2VsZi5fcnVuX2VuZF90aW1lIC0gc2VsZi5fcnVuX3N0YXJ0X3RpbWUpKSkKLQotICAgICAgICBpZiByZXN1bHQud2FzU3VjY2Vzc2Z1bCgpOgotICAgICAgICAgICAgbXNnID0gIiVzIC0gT0sgLSBBbGwgcmVxdWlyZWQgdGVzdHMgcGFzc2VkIiAlIGNvbXBvbmVudAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNnID0gIiVzIC0gRkFJTCAtIFJlcXVpcmVkIHRlc3RzIGZhaWxlZCIgJSBjb21wb25lbnQKLSAgICAgICAgc2tpcHBlZCA9IGxlbihzZWxmLl9yZXN1bHRzWydza2lwcGVkJ10pCi0gICAgICAgIGlmIHNraXBwZWQ6IAotICAgICAgICAgICAgbXNnICs9ICIgKHNraXBwZWQ9JWQpIiAlIHNraXBwZWQKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhtc2cpCi0KLSAgICBkZWYgX2dldERldGFpbHNOb3RQYXNzZWQoc2VsZiwgY2FzZSwgdHlwZSwgZGVzYyk6Ci0gICAgICAgIGZvdW5kID0gRmFsc2UKLQotICAgICAgICBmb3IgKHNjYXNlLCBtc2cpIGluIHNlbGYuX3Jlc3VsdHNbdHlwZV06Ci0gICAgICAgICAgICAjIFhYWDogV2hlbiBYTUwgcmVwb3J0aW5nIGlzIGVuYWJsZWQgc2Nhc2UgaXMKLSAgICAgICAgICAgICMgeG1scnVubmVyLnJlc3VsdC5fVGVzdEluZm8gaW5zdGFuY2UgaW5zdGVhZCBvZgotICAgICAgICAgICAgIyBzdHJpbmcuCi0gICAgICAgICAgICBpZiB4bWxFbmFibGVkOgotICAgICAgICAgICAgICAgIGlmIGNhc2UuaWQoKSA9PSBzY2FzZS50ZXN0X2lkOgotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBzY2FzZV9zdHIgPSBzY2FzZS50ZXN0X2lkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGNhc2UgPT0gc2Nhc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHNjYXNlX3N0ciA9IHN0cihzY2FzZSkKLQotICAgICAgICAgICAgIyBXaGVuIGZhaWxzIGF0IG1vZHVsZSBvciBjbGFzcyBsZXZlbCB0aGUgY2xhc3MgbmFtZSBpcyBwYXNzZWQgYXMgc3RyaW5nCi0gICAgICAgICAgICAjIHNvIGZpZ3VyZSBvdXQgdG8gc2VlIGlmIG1hdGNoCi0gICAgICAgICAgICBtID0gcmUuc2VhcmNoKCJec2V0VXBNb2R1bGUgXCgoP1A8bW9kdWxlX25hbWU+LiopXCkkIiwgc2Nhc2Vfc3RyKQotICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICBpZiBjYXNlLl9fY2xhc3NfXy5fX21vZHVsZV9fID09IG0uZ3JvdXAoJ21vZHVsZV9uYW1lJyk6Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICAgICBtID0gcmUuc2VhcmNoKCJec2V0VXBDbGFzcyBcKCg/UDxjbGFzc19uYW1lPi4qKVwpJCIsIHNjYXNlX3N0cikKLSAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgY2xhc3NfbmFtZSA9ICIlcy4lcyIgJSAoY2FzZS5fX2NsYXNzX18uX19tb2R1bGVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UuX19jbGFzc19fLl9fbmFtZV9fKQotCi0gICAgICAgICAgICAgICAgaWYgY2xhc3NfbmFtZSA9PSBtLmdyb3VwKCdjbGFzc19uYW1lJyk6Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIGZvdW5kOgotICAgICAgICAgICAgcmV0dXJuIChmb3VuZCwgbXNnKQotCi0gICAgICAgIHJldHVybiAoZm91bmQsIE5vbmUpCi0KLSAgICBkZWYgbG9nRGV0YWlscyhzZWxmKToKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUkVTVUxUUzoiKQotICAgICAgICBmb3IgY2FzZV9uYW1lIGluIHNlbGYuX3JlZ2lzdHJ5WydjYXNlcyddOgotICAgICAgICAgICAgY2FzZSA9IHNlbGYuX3JlZ2lzdHJ5WydjYXNlcyddW2Nhc2VfbmFtZV0KLQotICAgICAgICAgICAgcmVzdWx0X3R5cGVzID0gWydmYWlsdXJlcycsICdlcnJvcnMnLCAnc2tpcHBlZCcsICdleHBlY3RlZEZhaWx1cmVzJ10KLSAgICAgICAgICAgIHJlc3VsdF9kZXNjID0gWydGQUlMRUQnLCAnRVJST1InLCAnU0tJUFBFRCcsICdFWFBFQ1RFREZBSUwnXQotCi0gICAgICAgICAgICBmYWlsID0gRmFsc2UKLSAgICAgICAgICAgIGRlc2MgPSBOb25lCi0gICAgICAgICAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShyZXN1bHRfdHlwZXMpOgotICAgICAgICAgICAgICAgIChmYWlsLCBtc2cpID0gc2VsZi5fZ2V0RGV0YWlsc05vdFBhc3NlZChjYXNlLCByZXN1bHRfdHlwZXNbaWR4XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9kZXNjW2lkeF0pCi0gICAgICAgICAgICAgICAgaWYgZmFpbDoKLSAgICAgICAgICAgICAgICAgICAgZGVzYyA9IHJlc3VsdF9kZXNjW2lkeF0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgb2VpZCA9IC0xCi0gICAgICAgICAgICBmb3IgZCBpbiBjYXNlLmRlY29yYXRvcnM6Ci0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihkLCAnb2VpZCcpOgotICAgICAgICAgICAgICAgICAgICBvZWlkID0gZC5vZWlkCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIGZhaWw6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUkVTVUxUUyAtICVzIC0gVGVzdGNhc2UgJXM6ICVzIiAlIChjYXNlLmlkKCksCi0gICAgICAgICAgICAgICAgICAgIG9laWQsIGRlc2MpKQotICAgICAgICAgICAgICAgIGlmIG1zZzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhtc2cpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlJFU1VMVFMgLSAlcyAtIFRlc3RjYXNlICVzOiAlcyIgJSAoY2FzZS5pZCgpLAotICAgICAgICAgICAgICAgICAgICBvZWlkLCAnUEFTU0VEJykpCisgICAgZGVmIGxpc3RUZXN0cyhzZWxmLCBkaXNwbGF5X3R5cGUpOgorICAgICAgICBzZWxmLnJ1bm5lciA9IHNlbGYucnVubmVyQ2xhc3Moc2VsZiwgdmVyYm9zaXR5PTIpCisgICAgICAgIHJldHVybiBzZWxmLnJ1bm5lci5saXN0X3Rlc3RzKHNlbGYuc3VpdGVzLCBkaXNwbGF5X3R5cGUpCiAKIGNsYXNzIE9FVGVzdENvbnRleHRFeGVjdXRvcihvYmplY3QpOgogICAgIF9jb250ZXh0X2NsYXNzID0gT0VUZXN0Q29udGV4dAorICAgIF9zY3JpcHRfZXhlY3V0b3IgPSAnb2UtdGVzdCcKIAogICAgIG5hbWUgPSAnY29yZScKICAgICBoZWxwID0gJ2NvcmUgdGVzdCBjb21wb25lbnQgZXhhbXBsZScKQEAgLTE2OCw5ICs5NiwxNCBAQAogICAgICAgICBzZWxmLnBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0LWxvZycsIGFjdGlvbj0nc3RvcmUnLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9c2VsZi5kZWZhdWx0X291dHB1dF9sb2csCiAgICAgICAgICAgICAgICAgaGVscD0icmVzdWx0cyBvdXRwdXQgbG9nLCBkZWZhdWx0OiAlcyIgJSBzZWxmLmRlZmF1bHRfb3V0cHV0X2xvZykKLSAgICAgICAgc2VsZi5wYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJ1bi10ZXN0cycsIGFjdGlvbj0nc3RvcmUnLAorCisgICAgICAgIGdyb3VwID0gc2VsZi5wYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCisgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1ydW4tdGVzdHMnLCBhY3Rpb249J3N0b3JlJywgbmFyZ3M9JysnLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9c2VsZi5kZWZhdWx0X3Rlc3RzLAotICAgICAgICAgICAgICAgIGhlbHA9InRlc3RzIHRvIHJ1biBpbiA8bW9kdWxlPlsuPGNsYXNzPlsuPG5hbWU+XV0gZm9ybWF0LiBKdXN0IHdvcmtzIGZvciBtb2R1bGVzIG5vdyIpCisgICAgICAgICAgICAgICAgaGVscD0idGVzdHMgdG8gcnVuIGluIDxtb2R1bGU+Wy48Y2xhc3M+Wy48bmFtZT5dXSIpCisgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1saXN0LXRlc3RzJywgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgY2hvaWNlcz0oJ21vZHVsZScsICdjbGFzcycsICduYW1lJyksCisgICAgICAgICAgICAgICAgaGVscD0ibGlzdHMgYXZhaWxhYmxlIHRlc3RzIikKIAogICAgICAgICBpZiBzZWxmLmRlZmF1bHRfdGVzdF9kYXRhOgogICAgICAgICAgICAgc2VsZi5wYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3QtZGF0YS1maWxlJywgYWN0aW9uPSdzdG9yZScsCkBAIC0yMDYsNyArMTM5LDggQEAKICAgICAgICAgc2VsZi50Y19rd2FyZ3MgPSB7fQogICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddID0ge30KICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXSA9IHt9Ci0gICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXSA9IHt9CisgICAgICAgIHNlbGYudGNfa3dhcmdzWydsaXN0J10gPSB7fQorICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ10gID0ge30KIAogICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydsb2dnZXInXSA9IHNlbGYuX3NldHVwX2xvZ2dlcihsb2dnZXIsIGFyZ3MpCiAgICAgICAgIGlmIGFyZ3MudGVzdF9kYXRhX2ZpbGU6CkBAIC0yMTUsMjIgKzE0OSwzNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsndGQnXSA9IHt9CiAKLQogICAgICAgICBpZiBhcmdzLnJ1bl90ZXN0czoKLSAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydsb2FkJ11bJ21vZHVsZXMnXSA9IGFyZ3MucnVuX3Rlc3RzLnNwbGl0KCkKKyAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydsb2FkJ11bJ21vZHVsZXMnXSA9IGFyZ3MucnVuX3Rlc3RzCisgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snbG9hZCddWydtb2R1bGVzX3JlcXVpcmVkJ10gPSBhcmdzLnJ1bl90ZXN0cwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXVsnbW9kdWxlcyddID0gTm9uZQorICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXVsnbW9kdWxlcyddID0gW10KKworICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ3NraXBzJ10gPSBbXQogCiAgICAgICAgIHNlbGYubW9kdWxlX3BhdGhzID0gYXJncy5DQVNFU19QQVRIUwogCisgICAgZGVmIF9wcmVfcnVuKHNlbGYpOgorICAgICAgICBwYXNzCisKICAgICBkZWYgcnVuKHNlbGYsIGxvZ2dlciwgYXJncyk6CiAgICAgICAgIHNlbGYuX3Byb2Nlc3NfYXJncyhsb2dnZXIsIGFyZ3MpCiAKICAgICAgICAgc2VsZi50YyA9IHNlbGYuX2NvbnRleHRfY2xhc3MoKipzZWxmLnRjX2t3YXJnc1snaW5pdCddKQotICAgICAgICBzZWxmLnRjLmxvYWRUZXN0cyhzZWxmLm1vZHVsZV9wYXRocywgKipzZWxmLnRjX2t3YXJnc1snbG9hZCddKQotICAgICAgICByYyA9IHNlbGYudGMucnVuVGVzdHMoKipzZWxmLnRjX2t3YXJnc1sncnVuJ10pCi0gICAgICAgIHNlbGYudGMubG9nU3VtbWFyeShyYywgc2VsZi5uYW1lKQotICAgICAgICBzZWxmLnRjLmxvZ0RldGFpbHMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnRjLmxvYWRUZXN0cyhzZWxmLm1vZHVsZV9wYXRocywgKipzZWxmLnRjX2t3YXJnc1snbG9hZCddKQorICAgICAgICBleGNlcHQgT0VRQVRlc3ROb3RGb3VuZCBhcyBleDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcihleCkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgaWYgYXJncy5saXN0X3Rlc3RzOgorICAgICAgICAgICAgcmMgPSBzZWxmLnRjLmxpc3RUZXN0cyhhcmdzLmxpc3RfdGVzdHMsICoqc2VsZi50Y19rd2FyZ3NbJ2xpc3QnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ByZV9ydW4oKQorICAgICAgICAgICAgcmMgPSBzZWxmLnRjLnJ1blRlc3RzKCoqc2VsZi50Y19rd2FyZ3NbJ3J1biddKQorICAgICAgICAgICAgcmMubG9nRGV0YWlscygpCisgICAgICAgICAgICByYy5sb2dTdW1tYXJ5KHNlbGYubmFtZSkKIAogICAgICAgICBvdXRwdXRfbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYXJncy5vdXRwdXRfbG9nKSwKICAgICAgICAgICAgICAgICAiJXMtcmVzdWx0cy5sb2ciICUgc2VsZi5uYW1lKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGVwZW5kcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL2RlcGVuZHMucHkKaW5kZXggMTk1NzExYy4uYmFhMDQzNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGVwZW5kcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kZXBlbmRzLnB5CkBAIC0zLDYgKzMsNyBAQAogCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBTa2lwVGVzdAogCitmcm9tIG9lcWEuY29yZS50aHJlYWRlZCBpbXBvcnQgT0VUZXN0UnVubmVyVGhyZWFkZWQKIGZyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQURlcGVuZGVuY3kKIAogZnJvbSAuIGltcG9ydCBPRVRlc3REaXNjb3ZlciwgcmVnaXN0ZXJEZWNvcmF0b3IKQEAgLTYzLDcgKzY0LDEyIEBACiAgICAgcmV0dXJuIFtjYXNlc1tjYXNlX2lkXSBmb3IgY2FzZV9pZCBpbiBjYXNlc19vcmRlcmVkXQogCiBkZWYgX3NraXBUZXN0RGVwZW5kZW5jeShjYXNlLCBkZXBlbmRzKToKLSAgICByZXN1bHRzID0gY2FzZS50Yy5fcmVzdWx0cworICAgIGlmIGlzaW5zdGFuY2UoY2FzZS50Yy5ydW5uZXIsIE9FVGVzdFJ1bm5lclRocmVhZGVkKToKKyAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICByZXN1bHRzID0gY2FzZS50Yy5fcmVzdWx0c1t0aHJlYWRpbmcuZ2V0X2lkZW50KCldCisgICAgZWxzZToKKyAgICAgICAgcmVzdWx0cyA9IGNhc2UudGMuX3Jlc3VsdHMKKwogICAgIHNraXBSZWFzb25zID0gWydlcnJvcnMnLCAnZmFpbHVyZXMnLCAnc2tpcHBlZCddCiAKICAgICBmb3IgcmVhc29uIGluIHNraXBSZWFzb25zOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3Ivb2V0aW1lb3V0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3Ivb2V0aW1lb3V0LnB5CmluZGV4IGEyNDc1ODMuLmY4NWU3ZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL29ldGltZW91dC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9vZXRpbWVvdXQucHkKQEAgLTEsOCArMSwxMiBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KICMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCiAKLWltcG9ydCBzaWduYWwKIGZyb20gLiBpbXBvcnQgT0VUZXN0RGVjb3JhdG9yLCByZWdpc3RlckRlY29yYXRvcgorCitpbXBvcnQgc2lnbmFsCitmcm9tIHRocmVhZGluZyBpbXBvcnQgVGltZXIKKworZnJvbSBvZXFhLmNvcmUudGhyZWFkZWQgaW1wb3J0IE9FVGVzdFJ1bm5lclRocmVhZGVkCiBmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFUaW1lb3V0RXJyb3IKIAogQHJlZ2lzdGVyRGVjb3JhdG9yCkBAIC0xMCwxNiArMTQsMzIgQEAKICAgICBhdHRycyA9ICgnb2V0aW1lb3V0JywpCiAKICAgICBkZWYgc2V0VXBEZWNvcmF0b3Ioc2VsZik6Ci0gICAgICAgIHRpbWVvdXQgPSBzZWxmLm9ldGltZW91dAotICAgICAgICBkZWYgX3RpbWVvdXRIYW5kbGVyKHNpZ251bSwgZnJhbWUpOgotICAgICAgICAgICAgcmFpc2UgT0VRQVRpbWVvdXRFcnJvcigiVGltZWQgb3V0IGFmdGVyICVzICIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNldHRpbmcgdXAgYSAlZCBzZWNvbmQocykgdGltZW91dCIgJSBzZWxmLm9ldGltZW91dCkKKworICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY2FzZS50Yy5ydW5uZXIsIE9FVGVzdFJ1bm5lclRocmVhZGVkKToKKyAgICAgICAgICAgIHNlbGYudGltZW91dGVkID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfdGltZW91dEhhbmRsZXIoKToKKyAgICAgICAgICAgICAgICBzZWxmLnRpbWVvdXRlZCA9IFRydWUKKworICAgICAgICAgICAgc2VsZi50aW1lciA9IFRpbWVyKHNlbGYub2V0aW1lb3V0LCBfdGltZW91dEhhbmRsZXIpCisgICAgICAgICAgICBzZWxmLnRpbWVyLnN0YXJ0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLm9ldGltZW91dAorICAgICAgICAgICAgZGVmIF90aW1lb3V0SGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICByYWlzZSBPRVFBVGltZW91dEVycm9yKCJUaW1lZCBvdXQgYWZ0ZXIgJXMgIgogICAgICAgICAgICAgICAgICAgICAic2Vjb25kcyBvZiBleGVjdXRpb24iICUgdGltZW91dCkKIAotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2V0dGluZyB1cCBhICVkIHNlY29uZChzKSB0aW1lb3V0IiAlIHNlbGYub2V0aW1lb3V0KQotICAgICAgICBzZWxmLmFsYXJtU2lnbmFsID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgX3RpbWVvdXRIYW5kbGVyKQotICAgICAgICBzaWduYWwuYWxhcm0oc2VsZi5vZXRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLmFsYXJtU2lnbmFsID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgX3RpbWVvdXRIYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKHNlbGYub2V0aW1lb3V0KQogCiAgICAgZGVmIHRlYXJEb3duRGVjb3JhdG9yKHNlbGYpOgotICAgICAgICBzaWduYWwuYWxhcm0oMCkKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgc2VsZi5hbGFybVNpZ25hbCkKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92ZWQgU0lHQUxSTSBoYW5kbGVyIikKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmNhc2UudGMucnVubmVyLCBPRVRlc3RSdW5uZXJUaHJlYWRlZCk6CisgICAgICAgICAgICBzZWxmLnRpbWVyLmNhbmNlbCgpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZlZCBUaW1lciBoYW5kbGVyIikKKyAgICAgICAgICAgIGlmIHNlbGYudGltZW91dGVkOgorICAgICAgICAgICAgICAgIHJhaXNlIE9FUUFUaW1lb3V0RXJyb3IoIlRpbWVkIG91dCBhZnRlciAlcyAiCisgICAgICAgICAgICAgICAgICAgICJzZWNvbmRzIG9mIGV4ZWN1dGlvbiIgJSBzZWxmLm9ldGltZW91dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgwKQorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgc2VsZi5hbGFybVNpZ25hbCkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmVkIFNJR0FMUk0gaGFuZGxlciIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2V4Y2VwdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZXhjZXB0aW9uLnB5CmluZGV4IDJkZmQ4NDAuLjczMmYyZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZXhjZXB0aW9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZXhjZXB0aW9uLnB5CkBAIC0xMiwzICsxMiwxMiBAQAogCiBjbGFzcyBPRVFBRGVwZW5kZW5jeShPRVFBRXhjZXB0aW9uKToKICAgICBwYXNzCisKK2NsYXNzIE9FUUFNaXNzaW5nTWFuaWZlc3QoT0VRQUV4Y2VwdGlvbik6CisgICAgcGFzcworCitjbGFzcyBPRVFBUHJlUnVuKE9FUUFFeGNlcHRpb24pOgorICAgIHBhc3MKKworY2xhc3MgT0VRQVRlc3ROb3RGb3VuZChPRVFBRXhjZXB0aW9uKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CmluZGV4IDYzYTE3MDMuLjk3NWEwODEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CkBAIC0yLDI1ICsyLDMwIEBACiAjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQogCiBpbXBvcnQgb3MKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW5zcGVjdAogCiBmcm9tIG9lcWEuY29yZS51dGlscy5wYXRoIGltcG9ydCBmaW5kRmlsZQogZnJvbSBvZXFhLmNvcmUudXRpbHMudGVzdCBpbXBvcnQgZ2V0U3VpdGVNb2R1bGVzLCBnZXRDYXNlSUQKIAorZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBVGVzdE5vdEZvdW5kCiBmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IgaW1wb3J0IGRlY29yYXRvckNsYXNzZXMsIE9FVGVzdERlY29yYXRvciwgXAogICAgICAgICBPRVRlc3RGaWx0ZXIsIE9FVGVzdERpc2NvdmVyCiAKLWRlZiBfbWFrZV9mYWlsZWRfdGVzdChjbGFzc25hbWUsIG1ldGhvZG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcyk6Ci0gICAgIiIiCi0gICAgICAgIFdoZW4gbG9hZGluZyB0ZXN0cyB1bml0dGVzdCBmcmFtZXdvcmsgc3RvcmVzIHRoZSBleGNlcHRpb24gaW4gYSBuZXcKLSAgICAgICAgY2xhc3MgY3JlYXRlZCBmb3IgYmUgZGlzcGxheWVkIGludG8gcnVuKCkuCi0KLSAgICAgICAgRm9yIG91ciBwdXJwb3NlcyB3aWxsIGJlIGJldHRlciB0byByYWlzZSB0aGUgZXhjZXB0aW9uIGluIGxvYWRpbmcgCi0gICAgICAgIHN0ZXAgaW5zdGVhZCBvZiB3YWl0IHRvIHJ1biB0aGUgdGVzdCBzdWl0ZS4KLSAgICAiIiIKLSAgICByYWlzZSBleGNlcHRpb24KKyMgV2hlbiBsb2FkaW5nIHRlc3RzLCB0aGUgdW5pdHRlc3QgZnJhbWV3b3JrIHN0b3JlcyBhbnkgZXhjZXB0aW9ucyBhbmQKKyMgZGlzcGxheXMgdGhlbSBvbmx5IHdoZW4gdGhlIHJ1biBtZXRob2QgaXMgY2FsbGVkLgorIworIyBGb3Igb3VyIHB1cnBvc2VzLCBpdCBpcyBiZXR0ZXIgdG8gcmFpc2UgdGhlIGV4Y2VwdGlvbnMgaW4gdGhlIGxvYWRpbmcKKyMgc3RlcCByYXRoZXIgdGhhbiB3YWl0aW5nIHRvIHJ1biB0aGUgdGVzdCBzdWl0ZS4KKyMKKyMgR2VuZXJhdGUgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gYmVjYXVzZSB0aGlzIGRpZmZlciBhY3Jvc3MgcHl0aG9uIHZlcnNpb25zCisjIFB5dGhvbiA+PSAzLjQuNCB1c2VzIHRyZWUgcGFyYW1ldGVycyBpbnN0ZWFkIGZvdXIgYnV0IGZvciBleGFtcGxlIFB5dGhvbiAzLjUuMworIyB1ZXNlcyBmb3VyIHBhcmFtZXRlcnMgc28gaXNuJ3QgaW5jcmVtZW50YWwuCitfZmFpbGVkX3Rlc3RfYXJncyA9IGluc3BlY3QuZ2V0YXJnc3BlYyh1bml0dGVzdC5sb2FkZXIuX21ha2VfZmFpbGVkX3Rlc3QpLmFyZ3MKK2V4ZWMoIiIiZGVmIF9tYWtlX2ZhaWxlZF90ZXN0KCVzKTogcmFpc2UgZXhjZXB0aW9uIiIiICUgJywgJy5qb2luKF9mYWlsZWRfdGVzdF9hcmdzKSkKIHVuaXR0ZXN0LmxvYWRlci5fbWFrZV9mYWlsZWRfdGVzdCA9IF9tYWtlX2ZhaWxlZF90ZXN0CiAKIGRlZiBfZmluZF9kdXBsaWNhdGVkX21vZHVsZXMoc3VpdGUsIGRpcmVjdG9yeSk6CkBAIC0yOSw2ICszNCwyOCBAQAogICAgICAgICBpZiBwYXRoOgogICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkR1cGxpY2F0ZWQgJXMgbW9kdWxlIGZvdW5kIGluICVzIiAlIChtb2R1bGUsIHBhdGgpKQogCitkZWYgX2J1aWx0X21vZHVsZXNfZGljdChtb2R1bGVzKToKKyAgICBtb2R1bGVzX2RpY3QgPSB7fQorCisgICAgaWYgbW9kdWxlcyA9PSBOb25lOgorICAgICAgICByZXR1cm4gbW9kdWxlc19kaWN0CisKKyAgICBmb3IgbW9kdWxlIGluIG1vZHVsZXM6CisgICAgICAgICMgQXNzdW1wdGlvbjogcGFja2FnZSBhbmQgbW9kdWxlIG5hbWVzIGRvIG5vdCBjb250YWluIHVwcGVyIGNhc2UKKyAgICAgICAgIyBjaGFyYWN0ZXJzLCB3aGVyZWFzIGNsYXNzIG5hbWVzIGRvCisgICAgICAgIG0gPSByZS5tYXRjaChyJ14oW15BLVpdKykoPzpcLihbQS1aXVteLl0qKSg/OlwuKFteLl0rKSk/KT8kJywgbW9kdWxlKQorCisgICAgICAgIG1vZHVsZV9uYW1lLCBjbGFzc19uYW1lLCB0ZXN0X25hbWUgPSBtLmdyb3VwcygpCisKKyAgICAgICAgaWYgbW9kdWxlX25hbWUgYW5kIG1vZHVsZV9uYW1lIG5vdCBpbiBtb2R1bGVzX2RpY3Q6CisgICAgICAgICAgICBtb2R1bGVzX2RpY3RbbW9kdWxlX25hbWVdID0ge30KKyAgICAgICAgaWYgY2xhc3NfbmFtZSBhbmQgY2xhc3NfbmFtZSBub3QgaW4gbW9kdWxlc19kaWN0W21vZHVsZV9uYW1lXToKKyAgICAgICAgICAgIG1vZHVsZXNfZGljdFttb2R1bGVfbmFtZV1bY2xhc3NfbmFtZV0gPSBbXQorICAgICAgICBpZiB0ZXN0X25hbWUgYW5kIHRlc3RfbmFtZSBub3QgaW4gbW9kdWxlc19kaWN0W21vZHVsZV9uYW1lXVtjbGFzc19uYW1lXToKKyAgICAgICAgICAgIG1vZHVsZXNfZGljdFttb2R1bGVfbmFtZV1bY2xhc3NfbmFtZV0uYXBwZW5kKHRlc3RfbmFtZSkKKworICAgIHJldHVybiBtb2R1bGVzX2RpY3QKKwogY2xhc3MgT0VUZXN0TG9hZGVyKHVuaXR0ZXN0LlRlc3RMb2FkZXIpOgogICAgIGNhc2VDbGFzcyA9IE9FVGVzdENhc2UKIApAQCAtMzksNyArNjYsOCBAQAogICAgICAgICAgICAgZmlsdGVycywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi50YyA9IHRjCiAKLSAgICAgICAgc2VsZi5tb2R1bGVzID0gbW9kdWxlcworICAgICAgICBzZWxmLm1vZHVsZXMgPSBfYnVpbHRfbW9kdWxlc19kaWN0KG1vZHVsZXMpCisKICAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzCiAgICAgICAgIHNlbGYubW9kdWxlc19yZXF1aXJlZCA9IG1vZHVsZXNfcmVxdWlyZWQKIApAQCAtNjMsNiArOTEsOCBAQAogCiAgICAgICAgIHNlbGYuX3BhdGNoQ2FzZUNsYXNzKHNlbGYuY2FzZUNsYXNzKQogCisgICAgICAgIHN1cGVyKE9FVGVzdExvYWRlciwgc2VsZikuX19pbml0X18oKQorCiAgICAgZGVmIF9wYXRjaENhc2VDbGFzcyhzZWxmLCB0ZXN0Q2FzZUNsYXNzKToKICAgICAgICAgIyBBZGRzIGN1c3RvbSBhdHRyaWJ1dGVzIHRvIHRoZSBPRVRlc3RDYXNlIGNsYXNzCiAgICAgICAgIHNldGF0dHIodGVzdENhc2VDbGFzcywgJ3RjJywgc2VsZi50YykKQEAgLTExNiw3ICsxNDYsMzUgQEAKICAgICAgICAgIiIiCiAgICAgICAgICAgICBSZXR1cm5zIFRydWUgaWYgdGVzdCBjYXNlIG11c3QgYmUgZmlsdGVyZWQsIEZhbHNlIG90aGVyd2lzZS4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuZmlsdGVyczoKKyAgICAgICAgIyBYWFg7IElmIHRoZSBtb2R1bGUgaGFzIG1vcmUgdGhhbiBvbmUgbmFtZXNwYWNlIG9ubHkgdXNlCisgICAgICAgICMgdGhlIGZpcnN0IHRvIHN1cHBvcnQgcnVuIHRoZSB3aG9sZSBtb2R1bGUgc3BlY2lmeWluZyB0aGUKKyAgICAgICAgIyA8bW9kdWxlX25hbWU+Llt0ZXN0X2NsYXNzXS5bdGVzdF9uYW1lXQorICAgICAgICBtb2R1bGVfbmFtZV9zbWFsbCA9IGNhc2UuX19tb2R1bGVfXy5zcGxpdCgnLicpWzBdCisgICAgICAgIG1vZHVsZV9uYW1lID0gY2FzZS5fX21vZHVsZV9fCisKKyAgICAgICAgY2xhc3NfbmFtZSA9IGNhc2UuX19jbGFzc19fLl9fbmFtZV9fCisgICAgICAgIHRlc3RfbmFtZSA9IGNhc2UuX3Rlc3RNZXRob2ROYW1lCisKKyAgICAgICAgaWYgc2VsZi5tb2R1bGVzOgorICAgICAgICAgICAgbW9kdWxlID0gTm9uZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubW9kdWxlc1ttb2R1bGVfbmFtZV9zbWFsbF0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubW9kdWxlc1ttb2R1bGVfbmFtZV0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIGlmIG1vZHVsZToKKyAgICAgICAgICAgICAgICBpZiBub3QgY2xhc3NfbmFtZSBpbiBtb2R1bGU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgICAgICBpZiBtb2R1bGVbY2xhc3NfbmFtZV06CisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3RfbmFtZSBub3QgaW4gbW9kdWxlW2NsYXNzX25hbWVdOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICAjIERlY29yYXRvciBmaWx0ZXJzCisgICAgICAgIGlmIHNlbGYuZmlsdGVycyBhbmQgaXNpbnN0YW5jZShjYXNlLCBPRVRlc3RDYXNlKToKICAgICAgICAgICAgIGZpbHRlcnMgPSBzZWxmLmZpbHRlcnMuY29weSgpCiAgICAgICAgICAgICBjYXNlX2RlY29yYXRvcnMgPSBbY2QgZm9yIGNkIGluIGNhc2UuZGVjb3JhdG9ycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNkLl9fY2xhc3NfXyBpbiBzZWxmLnVzZWRfZmlsdGVyc10KQEAgLTEzNCw3ICsxOTIsOCBAQAogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfZ2V0VGVzdENhc2Uoc2VsZiwgdGVzdENhc2VDbGFzcywgdGNOYW1lKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIodGVzdENhc2VDbGFzcywgJ19fb2VxYV9sb2FkZXInKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIodGVzdENhc2VDbGFzcywgJ19fb2VxYV9sb2FkZXInKSBhbmQgXAorICAgICAgICAgICAgICAgIGlzc3ViY2xhc3ModGVzdENhc2VDbGFzcywgT0VUZXN0Q2FzZSk6CiAgICAgICAgICAgICAjIEluIG9yZGVyIHRvIHN1cHBvcnQgZGF0YV92YXJzIHZhbGlkYXRpb24KICAgICAgICAgICAgICMgbW9ua2V5IHBhdGNoIHRoZSBkZWZhdWx0IHNldFVwL3RlYXJEb3due0NsYXNzfSB0byB1c2UKICAgICAgICAgICAgICMgdGhlIG9uZXMgcHJvdmlkZWQgYnkgT0VUZXN0Q2FzZQpAQCAtMTYxLDcgKzIyMCw4IEBACiAgICAgICAgICAgICBzZXRhdHRyKHRlc3RDYXNlQ2xhc3MsICdfX29lcWFfbG9hZGVyJywgVHJ1ZSkKIAogICAgICAgICBjYXNlID0gdGVzdENhc2VDbGFzcyh0Y05hbWUpCi0gICAgICAgIHNldGF0dHIoY2FzZSwgJ2RlY29yYXRvcnMnLCBbXSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjYXNlLCBPRVRlc3RDYXNlKToKKyAgICAgICAgICAgIHNldGF0dHIoY2FzZSwgJ2RlY29yYXRvcnMnLCBbXSkKIAogICAgICAgICByZXR1cm4gY2FzZQogCkBAIC0xNzMsOSArMjMzLDkgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVGVzdCBjYXNlcyBzaG91bGQgbm90IGJlIGRlcml2ZWQgZnJvbSBUZXN0U3VpdGUuIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgTWF5YmUgeW91IG1lYW50IHRvIGRlcml2ZSAlcyBmcm9tIFRlc3RDYXNlPyIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHRlc3RDYXNlQ2xhc3MuX19uYW1lX18pCi0gICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHRlc3RDYXNlQ2xhc3MsIHNlbGYuY2FzZUNsYXNzKToKKyAgICAgICAgaWYgbm90IGlzc3ViY2xhc3ModGVzdENhc2VDbGFzcywgdW5pdHRlc3QuY2FzZS5UZXN0Q2FzZSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlRlc3QgJXMgaXMgbm90IGRlcml2ZWQgZnJvbSAlcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgICh0ZXN0Q2FzZUNsYXNzLl9fbmFtZV9fLCBzZWxmLmNhc2VDbGFzcy5fX25hbWVfXykpCisgICAgICAgICAgICAgICAgICAgICh0ZXN0Q2FzZUNsYXNzLl9fbmFtZV9fLCB1bml0dGVzdC5jYXNlLlRlc3RDYXNlLl9fbmFtZV9fKSkKIAogICAgICAgICB0ZXN0Q2FzZU5hbWVzID0gc2VsZi5nZXRUZXN0Q2FzZU5hbWVzKHRlc3RDYXNlQ2xhc3MpCiAgICAgICAgIGlmIG5vdCB0ZXN0Q2FzZU5hbWVzIGFuZCBoYXNhdHRyKHRlc3RDYXNlQ2xhc3MsICdydW5UZXN0Jyk6CkBAIC0xOTYsNiArMjU2LDI4IEBACiAKICAgICAgICAgcmV0dXJuIHNlbGYuc3VpdGVDbGFzcyhzdWl0ZSkKIAorICAgIGRlZiBfcmVxdWlyZWRfbW9kdWxlc192YWxpZGF0aW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgICAgIFNlYXJjaCBpbiBUZXN0IGNvbnRleHQgcmVnaXN0cnkgaWYgYSByZXF1aXJlZAorICAgICAgICAgICAgdGVzdCBpcyBmb3VuZCwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gbm90IGZvdW5kLgorICAgICAgICAiIiIKKworICAgICAgICBmb3IgbW9kdWxlIGluIHNlbGYubW9kdWxlc19yZXF1aXJlZDoKKyAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKKworICAgICAgICAgICAgIyBUaGUgbW9kdWxlIG5hbWUgaXMgc3BsaXR0ZWQgdG8gb25seSBjb21wYXJlIHRoZQorICAgICAgICAgICAgIyBmaXJzdCBwYXJ0IG9mIGEgdGVzdCBjYXNlIGlkLgorICAgICAgICAgICAgY29tcF9sZW4gPSBsZW4obW9kdWxlLnNwbGl0KCcuJykpCisgICAgICAgICAgICBmb3IgY2FzZSBpbiBzZWxmLnRjLl9yZWdpc3RyeVsnY2FzZXMnXToKKyAgICAgICAgICAgICAgICBjYXNlX2NvbXAgPSAnLicuam9pbihjYXNlLnNwbGl0KCcuJylbMDpjb21wX2xlbl0pCisgICAgICAgICAgICAgICAgaWYgbW9kdWxlID09IGNhc2VfY29tcDoKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgICAgICAgICAgICByYWlzZSBPRVFBVGVzdE5vdEZvdW5kKCJOb3QgZm91bmQgJXMgaW4gbG9hZGVkIHRlc3QgY2FzZXMiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlKQorCiAgICAgZGVmIGRpc2NvdmVyKHNlbGYpOgogICAgICAgICBiaWdfc3VpdGUgPSBzZWxmLnN1aXRlQ2xhc3MoKQogICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLm1vZHVsZV9wYXRoczoKQEAgLTIxMCw4ICsyOTIsNDEgQEAKICAgICAgICAgZm9yIGNsc3MgaW4gZGlzY292ZXJfY2xhc3NlczoKICAgICAgICAgICAgIGNhc2VzID0gY2xzcy5kaXNjb3ZlcihzZWxmLnRjLl9yZWdpc3RyeSkKIAorICAgICAgICBpZiBzZWxmLm1vZHVsZXNfcmVxdWlyZWQ6CisgICAgICAgICAgICBzZWxmLl9yZXF1aXJlZF9tb2R1bGVzX3ZhbGlkYXRpb24oKQorCiAgICAgICAgIHJldHVybiBzZWxmLnN1aXRlQ2xhc3MoY2FzZXMpIGlmIGNhc2VzIGVsc2UgYmlnX3N1aXRlCiAKKyAgICBkZWYgX2ZpbHRlck1vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICBpZiBtb2R1bGUuX19uYW1lX18gaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgorICAgICAgICAgICAgbXNnID0gJ1RyaWVkIHRvIGltcG9ydCAlcyB0ZXN0IG1vZHVsZSBidXQgaXMgYSBidWlsdC1pbicKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZyAlIG1vZHVsZS5fX25hbWVfXykKKworICAgICAgICAjIFhYWDsgSWYgdGhlIG1vZHVsZSBoYXMgbW9yZSB0aGFuIG9uZSBuYW1lc3BhY2Ugb25seSB1c2UKKyAgICAgICAgIyB0aGUgZmlyc3QgdG8gc3VwcG9ydCBydW4gdGhlIHdob2xlIG1vZHVsZSBzcGVjaWZ5aW5nIHRoZQorICAgICAgICAjIDxtb2R1bGVfbmFtZT4uW3Rlc3RfY2xhc3NdLlt0ZXN0X25hbWVdCisgICAgICAgIG1vZHVsZV9uYW1lX3NtYWxsID0gbW9kdWxlLl9fbmFtZV9fLnNwbGl0KCcuJylbMF0KKyAgICAgICAgbW9kdWxlX25hbWUgPSBtb2R1bGUuX19uYW1lX18KKworICAgICAgICAjIE5vcm1hbCB0ZXN0IG1vZHVsZXMgYXJlIGxvYWRlZCBpZiBubyBtb2R1bGVzIHdlcmUgc3BlY2lmaWVkLAorICAgICAgICAjIGlmIG1vZHVsZSBpcyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBsaXN0IG9yIGlmICdhbGwnIGlzIGluCisgICAgICAgICMgbW9kdWxlIGxpc3QuCisgICAgICAgICMgVW5kZXJzY29yZSBtb2R1bGVzIGFyZSBsb2FkZWQgb25seSBpZiBzcGVjaWZpZWQgaW4gbW9kdWxlIGxpc3QuCisgICAgICAgIGxvYWRfbW9kdWxlID0gVHJ1ZSBpZiBub3QgbW9kdWxlX25hbWUuc3RhcnRzd2l0aCgnXycpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCAobm90IHNlbGYubW9kdWxlcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG1vZHVsZV9uYW1lIGluIHNlbGYubW9kdWxlcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG1vZHVsZV9uYW1lX3NtYWxsIGluIHNlbGYubW9kdWxlcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yICdhbGwnIGluIHNlbGYubW9kdWxlcykgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBGYWxzZQorCisgICAgICAgIGxvYWRfdW5kZXJzY29yZSA9IFRydWUgaWYgbW9kdWxlX25hbWUuc3RhcnRzd2l0aCgnXycpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgKG1vZHVsZV9uYW1lIGluIHNlbGYubW9kdWxlcyBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWVfc21hbGwgaW4gc2VsZi5tb2R1bGVzKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBGYWxzZQorCisgICAgICAgIHJldHVybiAobG9hZF9tb2R1bGUsIGxvYWRfdW5kZXJzY29yZSkKKworCiAgICAgIyBYWFggQWZ0ZXIgUHl0aG9uIDMuNSwgcmVtb3ZlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaGFja3MgZm9yCiAgICAgIyB1c2VfbG9hZF90ZXN0cyBkZXByZWNhdGlvbiB2aWEgKmFyZ3MgYW5kICoqa3dzLiAgU2VlIGlzc3VlIDE2NjYyLgogICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsNSk6CkBAIC0yMTksMjMgKzMzNCw3IEBACiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICAgICBSZXR1cm5zIGEgc3VpdGUgb2YgYWxsIHRlc3RzIGNhc2VzIGNvbnRhaW5lZCBpbiBtb2R1bGUuCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6Ci0gICAgICAgICAgICAgICAgbXNnID0gJ1RyaWVkIHRvIGltcG9ydCAlcyB0ZXN0IG1vZHVsZSBidXQgaXMgYSBidWlsdC1pbicKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cgJSBtb2R1bGUuX19uYW1lX18pCi0KLSAgICAgICAgICAgICMgTm9ybWFsIHRlc3QgbW9kdWxlcyBhcmUgbG9hZGVkIGlmIG5vIG1vZHVsZXMgd2VyZSBzcGVjaWZpZWQsCi0gICAgICAgICAgICAjIGlmIG1vZHVsZSBpcyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBsaXN0IG9yIGlmICdhbGwnIGlzIGluCi0gICAgICAgICAgICAjIG1vZHVsZSBsaXN0LgotICAgICAgICAgICAgIyBVbmRlcnNjb3JlIG1vZHVsZXMgYXJlIGxvYWRlZCBvbmx5IGlmIHNwZWNpZmllZCBpbiBtb2R1bGUgbGlzdC4KLSAgICAgICAgICAgIGxvYWRfbW9kdWxlID0gVHJ1ZSBpZiBub3QgbW9kdWxlLl9fbmFtZV9fLnN0YXJ0c3dpdGgoJ18nKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIChub3Qgc2VsZi5tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG1vZHVsZS5fX25hbWVfXyBpbiBzZWxmLm1vZHVsZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgJ2FsbCcgaW4gc2VsZi5tb2R1bGVzKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBGYWxzZQotCi0gICAgICAgICAgICBsb2FkX3VuZGVyc2NvcmUgPSBUcnVlIGlmIG1vZHVsZS5fX25hbWVfXy5zdGFydHN3aXRoKCdfJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbW9kdWxlLl9fbmFtZV9fIGluIHNlbGYubW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRmFsc2UKKyAgICAgICAgICAgIGxvYWRfbW9kdWxlLCBsb2FkX3VuZGVyc2NvcmUgPSBzZWxmLl9maWx0ZXJNb2R1bGUobW9kdWxlKQogCiAgICAgICAgICAgICBpZiBsb2FkX21vZHVsZSBvciBsb2FkX3VuZGVyc2NvcmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKE9FVGVzdExvYWRlciwgc2VsZikubG9hZFRlc3RzRnJvbU1vZHVsZSgKQEAgLTI0NywyMyArMzQ2LDcgQEAKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgICAgIFJldHVybnMgYSBzdWl0ZSBvZiBhbGwgdGVzdHMgY2FzZXMgY29udGFpbmVkIGluIG1vZHVsZS4KICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaWYgbW9kdWxlLl9fbmFtZV9fIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKLSAgICAgICAgICAgICAgICBtc2cgPSAnVHJpZWQgdG8gaW1wb3J0ICVzIHRlc3QgbW9kdWxlIGJ1dCBpcyBhIGJ1aWx0LWluJwotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZyAlIG1vZHVsZS5fX25hbWVfXykKLQotICAgICAgICAgICAgIyBOb3JtYWwgdGVzdCBtb2R1bGVzIGFyZSBsb2FkZWQgaWYgbm8gbW9kdWxlcyB3ZXJlIHNwZWNpZmllZCwKLSAgICAgICAgICAgICMgaWYgbW9kdWxlIGlzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGxpc3Qgb3IgaWYgJ2FsbCcgaXMgaW4KLSAgICAgICAgICAgICMgbW9kdWxlIGxpc3QuCi0gICAgICAgICAgICAjIFVuZGVyc2NvcmUgbW9kdWxlcyBhcmUgbG9hZGVkIG9ubHkgaWYgc3BlY2lmaWVkIGluIG1vZHVsZSBsaXN0LgotICAgICAgICAgICAgbG9hZF9tb2R1bGUgPSBUcnVlIGlmIG5vdCBtb2R1bGUuX19uYW1lX18uc3RhcnRzd2l0aCgnXycpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgKG5vdCBzZWxmLm1vZHVsZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgbW9kdWxlLl9fbmFtZV9fIGluIHNlbGYubW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciAnYWxsJyBpbiBzZWxmLm1vZHVsZXMpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEZhbHNlCi0KLSAgICAgICAgICAgIGxvYWRfdW5kZXJzY29yZSA9IFRydWUgaWYgbW9kdWxlLl9fbmFtZV9fLnN0YXJ0c3dpdGgoJ18nKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtb2R1bGUuX19uYW1lX18gaW4gc2VsZi5tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBGYWxzZQorICAgICAgICAgICAgbG9hZF9tb2R1bGUsIGxvYWRfdW5kZXJzY29yZSA9IHNlbGYuX2ZpbHRlck1vZHVsZShtb2R1bGUpCiAKICAgICAgICAgICAgIGlmIGxvYWRfbW9kdWxlIG9yIGxvYWRfdW5kZXJzY29yZToKICAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoT0VUZXN0TG9hZGVyLCBzZWxmKS5sb2FkVGVzdHNGcm9tTW9kdWxlKApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQppbmRleCA0NGZmZWNiLi4xM2NkZjViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKIAogeG1sRW5hYmxlZCA9IEZhbHNlCiB0cnk6CkBAIC0yNCwxMCArMjUsMTQgQEAKIAogICAgIGRlZiB3cml0ZShzZWxmLCBtc2cpOgogICAgICAgICBpZiBsZW4obXNnKSA+IDEgYW5kIG1zZ1swXSAhPSAnXG4nOgotICAgICAgICAgICAgc2VsZi5idWZmZXIgKz0gbXNnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5sb2cobG9nZ2luZy5JTkZPLCBzZWxmLmJ1ZmZlci5yc3RyaXAoIlxuIikpCi0gICAgICAgICAgICBzZWxmLmJ1ZmZlciA9ICIiCisgICAgICAgICAgICBpZiAnLi4uJyBpbiBtc2c6CisgICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgKz0gbXNnCisgICAgICAgICAgICBlbGlmIHNlbGYuYnVmZmVyOgorICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyICs9IG1zZworICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmxvZyhsb2dnaW5nLklORk8sIHNlbGYuYnVmZmVyKQorICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gIiIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIubG9nKGxvZ2dpbmcuSU5GTywgbXNnKQogCiAgICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKQEAgLTM4LDIyICs0MywxMjIgQEAKICAgICAgICAgc3VwZXIoT0VUZXN0UmVzdWx0LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCiAKICAgICAgICAgc2VsZi50YyA9IHRjCisgICAgICAgIHNlbGYuX3RjX21hcF9yZXN1bHRzKCkKIAorICAgIGRlZiBzdGFydFRlc3Qoc2VsZiwgdGVzdCk6CisgICAgICAgICMgQWxsb3cgdXMgdG8gdHJpZ2dlciB0aGUgdGVzdGNhc2UgYnVmZmVyIG1vZGUgb24gYSBwZXIgdGVzdCBiYXNpcworICAgICAgICAjIHNvIHN0ZG91dC9zdGRlcnIgYXJlIG9ubHkgcHJpbnRlZCB1cG9uIGZhaWx1cmUuIEVuYWJsZXMgZGVidWdnaW5nCisgICAgICAgICMgYnV0IGNsZWFuIG91dHB1dAorICAgICAgICBpZiBoYXNhdHRyKHRlc3QsICJidWZmZXIiKToKKyAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gdGVzdC5idWZmZXIKKyAgICAgICAgc3VwZXIoT0VUZXN0UmVzdWx0LCBzZWxmKS5zdGFydFRlc3QodGVzdCkKKworICAgIGRlZiBfdGNfbWFwX3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbJ2ZhaWx1cmVzJ10gPSBzZWxmLmZhaWx1cmVzCiAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbJ2Vycm9ycyddID0gc2VsZi5lcnJvcnMKICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1snc2tpcHBlZCddID0gc2VsZi5za2lwcGVkCiAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbJ2V4cGVjdGVkRmFpbHVyZXMnXSA9IHNlbGYuZXhwZWN0ZWRGYWlsdXJlcwogCi0gICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0ZXN0KToKLSAgICAgICAgc3VwZXIoT0VUZXN0UmVzdWx0LCBzZWxmKS5zdGFydFRlc3QodGVzdCkKKyAgICBkZWYgbG9nU3VtbWFyeShzZWxmLCBjb21wb25lbnQsIGNvbnRleHRfbXNnPScnKToKKyAgICAgICAgZWxhcHNlZF90aW1lID0gc2VsZi50Yy5fcnVuX2VuZF90aW1lIC0gc2VsZi50Yy5fcnVuX3N0YXJ0X3RpbWUKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiU1VNTUFSWToiKQorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCIlcyAoJXMpIC0gUmFuICVkIHRlc3QlcyBpbiAlLjNmcyIgJSAoY29tcG9uZW50LAorICAgICAgICAgICAgY29udGV4dF9tc2csIHNlbGYudGVzdHNSdW4sIHNlbGYudGVzdHNSdW4gIT0gMSBhbmQgInMiIG9yICIiLAorICAgICAgICAgICAgZWxhcHNlZF90aW1lKSkKKworICAgICAgICBpZiBzZWxmLndhc1N1Y2Nlc3NmdWwoKToKKyAgICAgICAgICAgIG1zZyA9ICIlcyAtIE9LIC0gQWxsIHJlcXVpcmVkIHRlc3RzIHBhc3NlZCIgJSBjb21wb25lbnQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICIlcyAtIEZBSUwgLSBSZXF1aXJlZCB0ZXN0cyBmYWlsZWQiICUgY29tcG9uZW50CisgICAgICAgIHNraXBwZWQgPSBsZW4oc2VsZi50Yy5fcmVzdWx0c1snc2tpcHBlZCddKQorICAgICAgICBpZiBza2lwcGVkOiAKKyAgICAgICAgICAgIG1zZyArPSAiIChza2lwcGVkPSVkKSIgJSBza2lwcGVkCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8obXNnKQorCisgICAgZGVmIF9nZXREZXRhaWxzTm90UGFzc2VkKHNlbGYsIGNhc2UsIHR5cGUsIGRlc2MpOgorICAgICAgICBmb3VuZCA9IEZhbHNlCisKKyAgICAgICAgZm9yIChzY2FzZSwgbXNnKSBpbiBzZWxmLnRjLl9yZXN1bHRzW3R5cGVdOgorICAgICAgICAgICAgIyBYWFg6IFdoZW4gWE1MIHJlcG9ydGluZyBpcyBlbmFibGVkIHNjYXNlIGlzCisgICAgICAgICAgICAjIHhtbHJ1bm5lci5yZXN1bHQuX1Rlc3RJbmZvIGluc3RhbmNlIGluc3RlYWQgb2YKKyAgICAgICAgICAgICMgc3RyaW5nLgorICAgICAgICAgICAgaWYgeG1sRW5hYmxlZDoKKyAgICAgICAgICAgICAgICBpZiBjYXNlLmlkKCkgPT0gc2Nhc2UudGVzdF9pZDoKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgc2Nhc2Vfc3RyID0gc2Nhc2UudGVzdF9pZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBjYXNlID09IHNjYXNlOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzY2FzZV9zdHIgPSBzdHIoc2Nhc2UpCisKKyAgICAgICAgICAgICMgV2hlbiBmYWlscyBhdCBtb2R1bGUgb3IgY2xhc3MgbGV2ZWwgdGhlIGNsYXNzIG5hbWUgaXMgcGFzc2VkIGFzIHN0cmluZworICAgICAgICAgICAgIyBzbyBmaWd1cmUgb3V0IHRvIHNlZSBpZiBtYXRjaAorICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgiXnNldFVwTW9kdWxlIFwoKD9QPG1vZHVsZV9uYW1lPi4qKVwpJCIsIHNjYXNlX3N0cikKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgaWYgY2FzZS5fX2NsYXNzX18uX19tb2R1bGVfXyA9PSBtLmdyb3VwKCdtb2R1bGVfbmFtZScpOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgiXnNldFVwQ2xhc3MgXCgoP1A8Y2xhc3NfbmFtZT4uKilcKSQiLCBzY2FzZV9zdHIpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGNsYXNzX25hbWUgPSAiJXMuJXMiICUgKGNhc2UuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlLl9fY2xhc3NfXy5fX25hbWVfXykKKworICAgICAgICAgICAgICAgIGlmIGNsYXNzX25hbWUgPT0gbS5ncm91cCgnY2xhc3NfbmFtZScpOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBmb3VuZDoKKyAgICAgICAgICAgIHJldHVybiAoZm91bmQsIG1zZykKKworICAgICAgICByZXR1cm4gKGZvdW5kLCBOb25lKQorCisgICAgZGVmIGxvZ0RldGFpbHMoc2VsZik6CisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlJFU1VMVFM6IikKKyAgICAgICAgZm9yIGNhc2VfbmFtZSBpbiBzZWxmLnRjLl9yZWdpc3RyeVsnY2FzZXMnXToKKyAgICAgICAgICAgIGNhc2UgPSBzZWxmLnRjLl9yZWdpc3RyeVsnY2FzZXMnXVtjYXNlX25hbWVdCisKKyAgICAgICAgICAgIHJlc3VsdF90eXBlcyA9IFsnZmFpbHVyZXMnLCAnZXJyb3JzJywgJ3NraXBwZWQnLCAnZXhwZWN0ZWRGYWlsdXJlcyddCisgICAgICAgICAgICByZXN1bHRfZGVzYyA9IFsnRkFJTEVEJywgJ0VSUk9SJywgJ1NLSVBQRUQnLCAnRVhQRUNURURGQUlMJ10KKworICAgICAgICAgICAgZmFpbCA9IEZhbHNlCisgICAgICAgICAgICBkZXNjID0gTm9uZQorICAgICAgICAgICAgZm9yIGlkeCwgbmFtZSBpbiBlbnVtZXJhdGUocmVzdWx0X3R5cGVzKToKKyAgICAgICAgICAgICAgICAoZmFpbCwgbXNnKSA9IHNlbGYuX2dldERldGFpbHNOb3RQYXNzZWQoY2FzZSwgcmVzdWx0X3R5cGVzW2lkeF0sCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfZGVzY1tpZHhdKQorICAgICAgICAgICAgICAgIGlmIGZhaWw6CisgICAgICAgICAgICAgICAgICAgIGRlc2MgPSByZXN1bHRfZGVzY1tpZHhdCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIG9laWQgPSAtMQorICAgICAgICAgICAgaWYgaGFzYXR0cihjYXNlLCAnZGVjb3JhdG9ycycpOgorICAgICAgICAgICAgICAgIGZvciBkIGluIGNhc2UuZGVjb3JhdG9yczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihkLCAnb2VpZCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgb2VpZCA9IGQub2VpZAorCisgICAgICAgICAgICBpZiBmYWlsOgorICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlJFU1VMVFMgLSAlcyAtIFRlc3RjYXNlICVzOiAlcyIgJSAoY2FzZS5pZCgpLAorICAgICAgICAgICAgICAgICAgICBvZWlkLCBkZXNjKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiUkVTVUxUUyAtICVzIC0gVGVzdGNhc2UgJXM6ICVzIiAlIChjYXNlLmlkKCksCisgICAgICAgICAgICAgICAgICAgIG9laWQsICdQQVNTRUQnKSkKKworY2xhc3MgT0VMaXN0VGVzdHNSZXN1bHQob2JqZWN0KToKKyAgICBkZWYgd2FzU3VjY2Vzc2Z1bChzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKIAogY2xhc3MgT0VUZXN0UnVubmVyKF9UZXN0UnVubmVyKToKKyAgICBzdHJlYW1Mb2dnZXJDbGFzcyA9IE9FU3RyZWFtTG9nZ2VyCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGMsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIHhtbEVuYWJsZWQ6CiAgICAgICAgICAgICBpZiBub3Qga3dhcmdzLmdldCgnb3V0cHV0Jyk6CiAgICAgICAgICAgICAgICAga3dhcmdzWydvdXRwdXQnXSA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0UmVzdWx0c18lc18lcycgJSAodGltZS5zdHJmdGltZSgiJVklbSVkJUglTSVTIiksIG9zLmdldHBpZCgpKSkKIAorICAgICAgICBrd2FyZ3NbJ3N0cmVhbSddID0gc2VsZi5zdHJlYW1Mb2dnZXJDbGFzcyh0Yy5sb2dnZXIpCiAgICAgICAgIHN1cGVyKE9FVGVzdFJ1bm5lciwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLnRjID0gdGMKICAgICAgICAgc2VsZi5yZXN1bHRjbGFzcyA9IE9FVGVzdFJlc3VsdApAQCAtNzQsMyArMTc5LDk5IEBACiAgICAgICAgIGRlZiBfbWFrZVJlc3VsdChzZWxmKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlc3VsdGNsYXNzKHNlbGYudGMsIHNlbGYuc3RyZWFtLCBzZWxmLmRlc2NyaXB0aW9ucywKICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkpCisKKworICAgIGRlZiBfd2Fsa19zdWl0ZShzZWxmLCBzdWl0ZSwgZnVuYyk6CisgICAgICAgIGZvciBvYmogaW4gc3VpdGU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdW5pdHRlc3Quc3VpdGUuVGVzdFN1aXRlKToKKyAgICAgICAgICAgICAgICBpZiBsZW4ob2JqLl90ZXN0cyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dhbGtfc3VpdGUob2JqLCBmdW5jKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgdW5pdHRlc3QuY2FzZS5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZnVuYyhzZWxmLnRjLmxvZ2dlciwgb2JqKQorICAgICAgICAgICAgICAgIHNlbGYuX3dhbGtlZF9jYXNlcyA9IHNlbGYuX3dhbGtlZF9jYXNlcyArIDEKKworICAgIGRlZiBfbGlzdF90ZXN0c19uYW1lKHNlbGYsIHN1aXRlKToKKyAgICAgICAgZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisgICAgICAgIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZXRhZyBpbXBvcnQgT0VUZXN0VGFnCisKKyAgICAgICAgc2VsZi5fd2Fsa2VkX2Nhc2VzID0gMAorCisgICAgICAgIGRlZiBfbGlzdF9jYXNlc193aXRob3V0X2lkKGxvZ2dlciwgY2FzZSk6CisKKyAgICAgICAgICAgIGZvdW5kX2lkID0gRmFsc2UKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoY2FzZSwgJ2RlY29yYXRvcnMnKToKKyAgICAgICAgICAgICAgICBmb3IgZCBpbiBjYXNlLmRlY29yYXRvcnM6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZCwgT0VUZXN0SUQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfaWQgPSBUcnVlCisKKyAgICAgICAgICAgIGlmIG5vdCBmb3VuZF9pZDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnb2VpZCBtaXNzaW5nIGZvciAlcycgJSBjYXNlLmlkKCkpCisKKyAgICAgICAgZGVmIF9saXN0X2Nhc2VzKGxvZ2dlciwgY2FzZSk6CisgICAgICAgICAgICBvZWlkID0gTm9uZQorICAgICAgICAgICAgb2V0YWcgPSBOb25lCisKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoY2FzZSwgJ2RlY29yYXRvcnMnKToKKyAgICAgICAgICAgICAgICBmb3IgZCBpbiBjYXNlLmRlY29yYXRvcnM6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZCwgT0VUZXN0SUQpOgorICAgICAgICAgICAgICAgICAgICAgICAgb2VpZCA9IGQub2VpZAorICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZCwgT0VUZXN0VGFnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9ldGFnID0gZC5vZXRhZworCisgICAgICAgICAgICBsb2dnZXIuaW5mbygiJXNcdCVzXHRcdCVzIiAlIChvZWlkLCBvZXRhZywgY2FzZS5pZCgpKSkKKworICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJMaXN0aW5nIHRlc3QgY2FzZXMgdGhhdCBkb24ndCBoYXZlIG9laWQgLi4uIikKKyAgICAgICAgc2VsZi5fd2Fsa19zdWl0ZShzdWl0ZSwgX2xpc3RfY2FzZXNfd2l0aG91dF9pZCkKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiLSIgKiA4MCkKKworICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJMaXN0aW5nIGFsbCBhdmFpbGFibGUgdGVzdHM6IikKKyAgICAgICAgc2VsZi5fd2Fsa2VkX2Nhc2VzID0gMAorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJpZFx0dGFnXHRcdHRlc3QiKQorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCItIiAqIDgwKQorICAgICAgICBzZWxmLl93YWxrX3N1aXRlKHN1aXRlLCBfbGlzdF9jYXNlcykKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiLSIgKiA4MCkKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiVG90YWwgZm91bmQ6XHQlcyIgJSBzZWxmLl93YWxrZWRfY2FzZXMpCisKKyAgICBkZWYgX2xpc3RfdGVzdHNfY2xhc3Moc2VsZiwgc3VpdGUpOgorICAgICAgICBzZWxmLl93YWxrZWRfY2FzZXMgPSAwCisKKyAgICAgICAgY3VyciA9IHt9CisgICAgICAgIGRlZiBfbGlzdF9jbGFzc2VzKGxvZ2dlciwgY2FzZSk6CisgICAgICAgICAgICBpZiBub3QgJ21vZHVsZScgaW4gY3VyciBvciBjdXJyWydtb2R1bGUnXSAhPSBjYXNlLl9fbW9kdWxlX186CisgICAgICAgICAgICAgICAgY3VyclsnbW9kdWxlJ10gPSBjYXNlLl9fbW9kdWxlX18KKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhjdXJyWydtb2R1bGUnXSkKKworICAgICAgICAgICAgaWYgbm90ICdjbGFzcycgaW4gY3VyciAgb3IgY3VyclsnY2xhc3MnXSAhPSBcCisgICAgICAgICAgICAgICAgICAgIGNhc2UuX19jbGFzc19fLl9fbmFtZV9fOgorICAgICAgICAgICAgICAgIGN1cnJbJ2NsYXNzJ10gPSBjYXNlLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIgLS0gJXMiICUgY3VyclsnY2xhc3MnXSkKKworICAgICAgICAgICAgbG9nZ2VyLmluZm8oIiAtLSAtLSAlcyIgJSBjYXNlLl90ZXN0TWV0aG9kTmFtZSkKKworICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJMaXN0aW5nIGFsbCBhdmFpbGFibGUgdGVzdCBjbGFzc2VzOiIpCisgICAgICAgIHNlbGYuX3dhbGtfc3VpdGUoc3VpdGUsIF9saXN0X2NsYXNzZXMpCisKKyAgICBkZWYgX2xpc3RfdGVzdHNfbW9kdWxlKHNlbGYsIHN1aXRlKToKKyAgICAgICAgc2VsZi5fd2Fsa2VkX2Nhc2VzID0gMAorCisgICAgICAgIGxpc3RlZCA9IFtdCisgICAgICAgIGRlZiBfbGlzdF9tb2R1bGVzKGxvZ2dlciwgY2FzZSk6CisgICAgICAgICAgICBpZiBub3QgY2FzZS5fX21vZHVsZV9fIGluIGxpc3RlZDoKKyAgICAgICAgICAgICAgICBpZiBjYXNlLl9fbW9kdWxlX18uc3RhcnRzd2l0aCgnXycpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiJXMgKGhpZGRlbikiICUgY2FzZS5fX21vZHVsZV9fKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGNhc2UuX19tb2R1bGVfXykKKyAgICAgICAgICAgICAgICBsaXN0ZWQuYXBwZW5kKGNhc2UuX19tb2R1bGVfXykKKworICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJMaXN0aW5nIGFsbCBhdmFpbGFibGUgdGVzdCBtb2R1bGVzOiIpCisgICAgICAgIHNlbGYuX3dhbGtfc3VpdGUoc3VpdGUsIF9saXN0X21vZHVsZXMpCisKKyAgICBkZWYgbGlzdF90ZXN0cyhzZWxmLCBzdWl0ZSwgZGlzcGxheV90eXBlKToKKyAgICAgICAgaWYgZGlzcGxheV90eXBlID09ICduYW1lJzoKKyAgICAgICAgICAgIHNlbGYuX2xpc3RfdGVzdHNfbmFtZShzdWl0ZSkKKyAgICAgICAgZWxpZiBkaXNwbGF5X3R5cGUgPT0gJ2NsYXNzJzoKKyAgICAgICAgICAgIHNlbGYuX2xpc3RfdGVzdHNfY2xhc3Moc3VpdGUpCisgICAgICAgIGVsaWYgZGlzcGxheV90eXBlID09ICdtb2R1bGUnOgorICAgICAgICAgICAgc2VsZi5fbGlzdF90ZXN0c19tb2R1bGUoc3VpdGUpCisKKyAgICAgICAgcmV0dXJuIE9FTGlzdFRlc3RzUmVzdWx0KCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CmluZGV4IDJkYzUyMWMuLmQzNTliZjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQpAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwbG95X2Rpcl9pbWFnZT1kaXJfaW1hZ2UsIGRpc3BsYXk9ZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGU9Ym9vdGxvZywgYm9vdHRpbWU9Ym9vdHRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfa3ZtPWt2bSwgZHVtcF9kaXI9ZHVtcF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcz1kdW1wX2hvc3RfY21kcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaG9zdF9jbWRzPWR1bXBfaG9zdF9jbWRzLCBsb2dnZXI9bG9nZ2VyKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBhcmFtcz1Ob25lLCBleHRyYV9ib290cGFyYW1zPU5vbmUpOgogICAgICAgICBpZiBzZWxmLnJ1bm5lci5zdGFydChwYXJhbXMsIGV4dHJhX2Jvb3RwYXJhbXM9ZXh0cmFfYm9vdHBhcmFtcyk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkKaW5kZXggYjgwOTM5Yy4uMTUxYjk5YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IGNvZGVjcwogCiBmcm9tIC4gaW1wb3J0IE9FVGFyZ2V0CiAKQEAgLTgyLDcgKzgzLDcgQEAKICAgICAgICAgICAgIHByb2Nlc3NUaW1lb3V0ID0gc2VsZi50aW1lb3V0CiAKICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLl9ydW4oc3NoQ21kLCBwcm9jZXNzVGltZW91dCwgVHJ1ZSkKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnXG5Db21tYW5kOiAlc1xuT3V0cHV0OiAgJXNcbicgJSAoY29tbWFuZCwgb3V0cHV0KSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ0NvbW1hbmQ6ICVzXG5PdXRwdXQ6ICAlc1xuJyAlIChjb21tYW5kLCBvdXRwdXQpKQogICAgICAgICByZXR1cm4gKHN0YXR1cywgb3V0cHV0KQogCiAgICAgZGVmIGNvcHlUbyhzZWxmLCBsb2NhbFNyYywgcmVtb3RlRHN0KToKQEAgLTIwNiwxMiArMjA3LDEyIEBACiAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCd0aW1lOiAlcywgZW5kdGltZTogJXMnICUgKHRpbWUudGltZSgpLCBlbmR0aW1lKSkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGVjdC5zZWxlY3QoW3Byb2Nlc3Muc3Rkb3V0XSwgW10sIFtdLCA1KVswXSAhPSBbXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKHByb2Nlc3Muc3Rkb3V0LmZpbGVubygpLCAxMDI0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyID0gY29kZWNzLmdldHJlYWRlcigndXRmLTgnKShwcm9jZXNzLnN0ZG91dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZWFkZXIucmVhZCgxMDI0LCAxMDI0KQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVvZiA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1BhcnRpYWwgZGF0YSBmcm9tIFNTSCBjYWxsOiAlcycgJSBkYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKQEAgLTIzMyw3ICsyMzQsNyBAQAogICAgICAgICAgICAgICAgIG91dHB1dCArPSBsYXN0bGluZQogCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0ncmVwbGFjZScpCiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0RhdGEgZnJvbSBTU0ggY2FsbDogJXMnICUgb3V0cHV0LnJzdHJpcCgpKQogCiAgICAgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlNGNiMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkLnB5CkBAIC0wLDAgKzEsMTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCisKK2NsYXNzIFRocmVhZGVkVGVzdChPRVRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF90aHJlYWRlZF9ub19kZXBlbmRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQorCitjbGFzcyBUaHJlYWRlZFRlc3QyKE9FVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3RocmVhZGVkX3NhbWVfbW9kdWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfYWxvbmUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9hbG9uZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDVmMzk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfYWxvbmUucHkKQEAgLTAsMCArMSw4IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQorCitjbGFzcyBUaHJlYWRlZFRlc3RBbG9uZShPRVRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF90aHJlYWRlZF9hbG9uZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX2RlcGVuZHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9kZXBlbmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMTU4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9kZXBlbmRzLnB5CkBAIC0wLDAgKzEsMTAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcworCitjbGFzcyBUaHJlYWRlZFRlc3QzKE9FVGVzdENhc2UpOgorICAgIEBPRVRlc3REZXBlbmRzKFsndGhyZWFkZWQuVGhyZWFkZWRUZXN0LnRlc3RfdGhyZWFkZWRfbm9fZGVwZW5kcyddKQorICAgIGRlZiB0ZXN0X3RocmVhZGVkX2RlcGVuZHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9tb2R1bGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNkMTdlMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX21vZHVsZS5weQpAQCAtMCwwICsxLDEyIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQorCitjbGFzcyBUaHJlYWRlZFRlc3RNb2R1bGUoT0VUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdGhyZWFkZWRfbW9kdWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQorCitjbGFzcyBUaHJlYWRlZFRlc3RNb2R1bGUyKE9FVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3RocmVhZGVkX21vZHVsZTIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2NvbW1vbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY29tbW9uLnB5CmluZGV4IDUyYjE4YTEuLjE5MzIzMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY29tbW9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY29tbW9uLnB5CkBAIC0zMywzICszMywxMyBAQAogICAgICAgICB0Yy5sb2FkVGVzdHMoc2VsZi5jYXNlc19wYXRoLCBtb2R1bGVzPW1vZHVsZXMsIHRlc3RzPXRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1maWx0ZXJzKQogICAgICAgICByZXR1cm4gdGMKKworICAgIGRlZiBfdGVzdExvYWRlclRocmVhZGVkKHNlbGYsIGQ9e30sIG1vZHVsZXM9W10sCisgICAgICAgICAgICB0ZXN0cz1bXSwgZmlsdGVycz17fSk6CisgICAgICAgIGZyb20gb2VxYS5jb3JlLnRocmVhZGVkIGltcG9ydCBPRVRlc3RDb250ZXh0VGhyZWFkZWQKKworICAgICAgICB0YyA9IE9FVGVzdENvbnRleHRUaHJlYWRlZChkLCBzZWxmLmxvZ2dlcikKKyAgICAgICAgdGMubG9hZFRlc3RzKHNlbGYuY2FzZXNfcGF0aCwgbW9kdWxlcz1tb2R1bGVzLCB0ZXN0cz10ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9ZmlsdGVycykKKworICAgICAgICByZXR1cm4gdGMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kZWNvcmF0b3JzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RlY29yYXRvcnMucHkKaW5kZXggZjdkMTFlOC4uY2Y5OWUwZCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RlY29yYXRvcnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RlY29yYXRvcnMucHkKQEAgLTEzMSw1ICsxMzEsMTcgQEAKICAgICAgICAgbXNnID0gIk9FVGVzdFRpbWVvdXQgZGlkbid0IHJlc3RvcmUgU0lHQUxSTSIKICAgICAgICAgc2VsZi5hc3NlcnRJcyhhbGFybV9zaWduYWwsIHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0FMUk0pLCBtc2c9bXNnKQogCisgICAgZGVmIHRlc3RfdGltZW91dF90aHJlYWQoc2VsZik6CisgICAgICAgIHRlc3RzID0gWyd0aW1lb3V0LlRpbWVvdXRUZXN0LnRlc3RUaW1lb3V0UGFzcyddCisgICAgICAgIG1zZyA9ICdGYWlsZWQgdG8gcnVuIHRlc3QgdXNpbmcgT0VUZXN0VGltZW91dCcKKyAgICAgICAgdGMgPSBzZWxmLl90ZXN0TG9hZGVyVGhyZWFkZWQobW9kdWxlcz1zZWxmLm1vZHVsZXMsIHRlc3RzPXRlc3RzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGMucnVuVGVzdHMoKS53YXNTdWNjZXNzZnVsKCksIG1zZz1tc2cpCisKKyAgICBkZWYgdGVzdF90aW1lb3V0X3RocmVhZGVkX2ZhaWwoc2VsZik6CisgICAgICAgIHRlc3RzID0gWyd0aW1lb3V0LlRpbWVvdXRUZXN0LnRlc3RUaW1lb3V0RmFpbCddCisgICAgICAgIG1zZyA9ICJPRVRlc3RUaW1lb3V0IHRlc3QgZGlkbid0IHRpbWVvdXQgYXMgZXhwZWN0ZWQiCisgICAgICAgIHRjID0gc2VsZi5fdGVzdExvYWRlclRocmVhZGVkKG1vZHVsZXM9c2VsZi5tb2R1bGVzLCB0ZXN0cz10ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0Yy5ydW5UZXN0cygpLndhc1N1Y2Nlc3NmdWwoKSwgbXNnPW1zZykKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9sb2FkZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfbG9hZGVyLnB5CmluZGV4IGI3OWI4YmEuLmUwZDkxN2QgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9sb2FkZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2xvYWRlci5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotIyBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyMgQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgSW50ZWwgQ29ycG9yYXRpb24KICMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCiAKIGltcG9ydCBvcwpAQCAtODIsNSArODIsMzMgQEAKICAgICAgICAgbXNnID0gJ0V4cGVjdGVkIG1vZHVsZXMgZnJvbSB0d28gZGlmZmVyZW50IHBhdGhzJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZXMsIGV4cGVjdGVkX21vZHVsZXMsIG1zZz1tc2cpCiAKKyAgICBkZWYgdGVzdF9sb2FkZXJfdGhyZWFkZWQoc2VsZik6CisgICAgICAgIGNhc2VzX3BhdGggPSBzZWxmLmNhc2VzX3BhdGgKKworICAgICAgICBzZWxmLmNhc2VzX3BhdGggPSBbb3MucGF0aC5qb2luKHNlbGYuY2FzZXNfcGF0aCwgJ2xvYWRlcicsICd0aHJlYWRlZCcpXQorCisgICAgICAgIHRjID0gc2VsZi5fdGVzdExvYWRlclRocmVhZGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGMuc3VpdGVzKSwgMywgIkV4cGVjdGVkIHRvIGJlIDMgc3VpdGVzIikKKworICAgICAgICBjYXNlX2lkcyA9IFsndGhyZWFkZWQuVGhyZWFkZWRUZXN0LnRlc3RfdGhyZWFkZWRfbm9fZGVwZW5kcycsCisgICAgICAgICAgICAgICAgJ3RocmVhZGVkLlRocmVhZGVkVGVzdDIudGVzdF90aHJlYWRlZF9zYW1lX21vZHVsZScsCisgICAgICAgICAgICAgICAgJ3RocmVhZGVkX2RlcGVuZHMuVGhyZWFkZWRUZXN0My50ZXN0X3RocmVhZGVkX2RlcGVuZHMnXQorICAgICAgICBmb3IgY2FzZSBpbiB0Yy5zdWl0ZXNbMF0uX3Rlc3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXNlLmlkKCksCisgICAgICAgICAgICAgICAgICAgIGNhc2VfaWRzW3RjLnN1aXRlc1swXS5fdGVzdHMuaW5kZXgoY2FzZSldKQorCisgICAgICAgIGNhc2VfaWRzID0gWyd0aHJlYWRlZF9hbG9uZS5UaHJlYWRlZFRlc3RBbG9uZS50ZXN0X3RocmVhZGVkX2Fsb25lJ10KKyAgICAgICAgZm9yIGNhc2UgaW4gdGMuc3VpdGVzWzFdLl90ZXN0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FzZS5pZCgpLAorICAgICAgICAgICAgICAgICAgICBjYXNlX2lkc1t0Yy5zdWl0ZXNbMV0uX3Rlc3RzLmluZGV4KGNhc2UpXSkKKworICAgICAgICBjYXNlX2lkcyA9IFsndGhyZWFkZWRfbW9kdWxlLlRocmVhZGVkVGVzdE1vZHVsZS50ZXN0X3RocmVhZGVkX21vZHVsZScsCisgICAgICAgICAgICAgICAgJ3RocmVhZGVkX21vZHVsZS5UaHJlYWRlZFRlc3RNb2R1bGUyLnRlc3RfdGhyZWFkZWRfbW9kdWxlMiddCisgICAgICAgIGZvciBjYXNlIGluIHRjLnN1aXRlc1syXS5fdGVzdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhc2UuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgY2FzZV9pZHNbdGMuc3VpdGVzWzJdLl90ZXN0cy5pbmRleChjYXNlKV0pCisKKyAgICAgICAgc2VsZi5jYXNlc19wYXRoID0gY2FzZXNfcGF0aAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90aHJlYWRlZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGhyZWFkZWQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNhZmUwMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGhyZWFkZWQucHkKQEAgLTAsMCArMSwyNzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCitpbXBvcnQgcXVldWUKK2ltcG9ydCB0aW1lCisKK2Zyb20gdW5pdHRlc3Quc3VpdGUgaW1wb3J0IFRlc3RTdWl0ZQorCitmcm9tIG9lcWEuY29yZS5sb2FkZXIgaW1wb3J0IE9FVGVzdExvYWRlcgorZnJvbSBvZXFhLmNvcmUucnVubmVyIGltcG9ydCBPRVN0cmVhbUxvZ2dlciwgT0VUZXN0UmVzdWx0LCBPRVRlc3RSdW5uZXIKK2Zyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHQKKworY2xhc3MgT0VUZXN0TG9hZGVyVGhyZWFkZWQoT0VUZXN0TG9hZGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGMsIG1vZHVsZV9wYXRocywgbW9kdWxlcywgdGVzdHMsIG1vZHVsZXNfcmVxdWlyZWQsCisgICAgICAgICAgICBmaWx0ZXJzLCBwcm9jZXNzX251bT0wLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihPRVRlc3RMb2FkZXJUaHJlYWRlZCwgc2VsZikuX19pbml0X18odGMsIG1vZHVsZV9wYXRocywgbW9kdWxlcywKKyAgICAgICAgICAgICAgICB0ZXN0cywgbW9kdWxlc19yZXF1aXJlZCwgZmlsdGVycywgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYucHJvY2Vzc19udW0gPSBwcm9jZXNzX251bQorCisgICAgZGVmIGRpc2NvdmVyKHNlbGYpOgorICAgICAgICBzdWl0ZSA9IHN1cGVyKE9FVGVzdExvYWRlclRocmVhZGVkLCBzZWxmKS5kaXNjb3ZlcigpCisKKyAgICAgICAgaWYgc2VsZi5wcm9jZXNzX251bSA8PSAwOgorICAgICAgICAgICAgc2VsZi5wcm9jZXNzX251bSA9IG1pbihtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCksCisgICAgICAgICAgICAgICAgICAgIGxlbihzdWl0ZS5fdGVzdHMpKQorCisgICAgICAgIHN1aXRlcyA9IFtdCisgICAgICAgIGZvciBfIGluIHJhbmdlKHNlbGYucHJvY2Vzc19udW0pOgorICAgICAgICAgICAgc3VpdGVzLmFwcGVuZChzZWxmLnN1aXRlQ2xhc3MoKSkKKworICAgICAgICBkZWYgX3NlYXJjaF9mb3JfbW9kdWxlX2lkeChzdWl0ZXMsIGNhc2UpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgQ2FzZXMgaW4gdGhlIHNhbWUgbW9kdWxlIG5lZWRzIHRvIGJlIHJ1bgorICAgICAgICAgICAgICAgIGluIHRoZSBzYW1lIHRocmVhZCBiZWNhdXNlIFB5VW5pdCBrZWVwcyB0cmFjaworICAgICAgICAgICAgICAgIG9mIHNldFVwe01vZHVsZSwgQ2xhc3MsfSBhbmQgdGVhckRvd257TW9kdWxlLCBDbGFzcyx9LgorICAgICAgICAgICAgIiIiCisKKyAgICAgICAgICAgIGZvciBpZHggaW4gcmFuZ2Uoc2VsZi5wcm9jZXNzX251bSk6CisgICAgICAgICAgICAgICAgc3VpdGUgPSBzdWl0ZXNbaWR4XQorICAgICAgICAgICAgICAgIGZvciBjIGluIHN1aXRlLl90ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgaWYgY2FzZS5fX21vZHVsZV9fID09IGMuX19tb2R1bGVfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZHgKKworICAgICAgICAgICAgcmV0dXJuIC0xCisKKyAgICAgICAgZGVmIF9zZWFyY2hfZm9yX2RlcGVuZF9pZHgoc3VpdGVzLCBkZXBlbmRzKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIERlcGVuZGVuY3kgY2FzZXMgbmVlZHMgdG8gYmUgcnVuIGluIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgdGhyZWFkLCBiZWNhdXNlIE9FUUEgZnJhbWV3b3JrIGxvb2sgYXQgdGhlIHN0YXRlCisgICAgICAgICAgICAgICAgb2YgZGVwZW5kYW50IHRlc3QgdG8gZmlndXJlIG91dCBpZiBza2lwIG9yIG5vdC4KKyAgICAgICAgICAgICIiIgorCisgICAgICAgICAgICBmb3IgaWR4IGluIHJhbmdlKHNlbGYucHJvY2Vzc19udW0pOgorICAgICAgICAgICAgICAgIHN1aXRlID0gc3VpdGVzW2lkeF0KKworICAgICAgICAgICAgICAgIGZvciBjYXNlIGluIHN1aXRlLl90ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgaWYgY2FzZS5pZCgpIGluIGRlcGVuZHM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWR4CisgICAgICAgICAgICByZXR1cm4gLTEKKworICAgICAgICBkZWYgX2dldF9iZXN0X2lkeChzdWl0ZXMpOgorICAgICAgICAgICAgc2l6ZXMgPSBbbGVuKHN1aXRlLl90ZXN0cykgZm9yIHN1aXRlIGluIHN1aXRlc10KKyAgICAgICAgICAgIHJldHVybiBzaXplcy5pbmRleChtaW4oc2l6ZXMpKQorCisgICAgICAgIGRlZiBfZmlsbF9zdWl0ZXMoc3VpdGUpOgorICAgICAgICAgICAgaWR4ID0gLTEKKyAgICAgICAgICAgIGZvciBjYXNlIGluIHN1aXRlOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2FzZSwgVGVzdFN1aXRlKToKKyAgICAgICAgICAgICAgICAgICAgX2ZpbGxfc3VpdGVzKGNhc2UpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWR4ID0gX3NlYXJjaF9mb3JfbW9kdWxlX2lkeChzdWl0ZXMsIGNhc2UpCisKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyA9IHt9CisgICAgICAgICAgICAgICAgICAgIGlmICdkZXBlbmRzJyBpbiBzZWxmLnRjLl9yZWdpc3RyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHMgPSBzZWxmLnRjLl9yZWdpc3RyeVsnZGVwZW5kcyddCisKKyAgICAgICAgICAgICAgICAgICAgaWYgaWR4ID09IC0xIGFuZCBjYXNlLmlkKCkgaW4gZGVwZW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VfZGVwZW5kcyA9IGRlcGVuZHNbY2FzZS5pZCgpXSAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IF9zZWFyY2hfZm9yX2RlcGVuZF9pZHgoc3VpdGVzLCBjYXNlX2RlcGVuZHMpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgaWR4ID09IC0xOgorICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gX2dldF9iZXN0X2lkeChzdWl0ZXMpCisKKyAgICAgICAgICAgICAgICAgICAgc3VpdGVzW2lkeF0uYWRkVGVzdChjYXNlKQorICAgICAgICBfZmlsbF9zdWl0ZXMoc3VpdGUpCisKKyAgICAgICAgc3VpdGVzX3RtcCA9IHN1aXRlcworICAgICAgICBzdWl0ZXMgPSBbXQorICAgICAgICBmb3Igc3VpdGUgaW4gc3VpdGVzX3RtcDoKKyAgICAgICAgICAgIGlmIGxlbihzdWl0ZS5fdGVzdHMpID4gMDoKKyAgICAgICAgICAgICAgICBzdWl0ZXMuYXBwZW5kKHN1aXRlKQorCisgICAgICAgIHJldHVybiBzdWl0ZXMKKworY2xhc3MgT0VTdHJlYW1Mb2dnZXJUaHJlYWRlZChPRVN0cmVhbUxvZ2dlcik6CisgICAgX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgYnVmZmVycyA9IHt9CisKKyAgICBkZWYgd3JpdGUoc2VsZiwgbXNnKToKKyAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCisKKyAgICAgICAgaWYgbm90IHRpZCBpbiBzZWxmLmJ1ZmZlcnM6CisgICAgICAgICAgICBzZWxmLmJ1ZmZlcnNbdGlkXSA9ICIiCisKKyAgICAgICAgaWYgbXNnOgorICAgICAgICAgICAgc2VsZi5idWZmZXJzW3RpZF0gKz0gbXNnCisKKyAgICBkZWYgZmluaXNoKHNlbGYpOgorICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKyAgICAgICAgCisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ1RIUkVBRDogJWQnICUgdGlkKQorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCctJyAqIDcwKQorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmJ1ZmZlcnNbdGlkXS5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8obGluZSkKKyAgICAgICAgc2VsZi5fbG9jay5yZWxlYXNlKCkKKworY2xhc3MgT0VUZXN0UmVzdWx0VGhyZWFkZWRJbnRlcm5hbChPRVRlc3RSZXN1bHQpOgorICAgIGRlZiBfdGNfbWFwX3Jlc3VsdHMoc2VsZik6CisgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQorICAgICAgICAKKyAgICAgICAgIyBQeVVuaXQgZ2VuZXJhdGVzIGEgcmVzdWx0IGZvciBldmVyeSB0ZXN0IG1vZHVsZSBydW4sIHRlc3QKKyAgICAgICAgIyBpZiB0aGUgdGhyZWFkIGFscmVhZHkgaGFzIGFuIGVudHJ5IHRvIGF2b2lkIGxvc2UgdGhlIHByZXZpb3VzCisgICAgICAgICMgdGVzdCBtb2R1bGUgcmVzdWx0cy4KKyAgICAgICAgaWYgbm90IHRpZCBpbiBzZWxmLnRjLl9yZXN1bHRzOgorICAgICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1t0aWRdID0ge30KKyAgICAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbdGlkXVsnZmFpbHVyZXMnXSA9IHNlbGYuZmFpbHVyZXMKKyAgICAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbdGlkXVsnZXJyb3JzJ10gPSBzZWxmLmVycm9ycworICAgICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1t0aWRdWydza2lwcGVkJ10gPSBzZWxmLnNraXBwZWQKKyAgICAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbdGlkXVsnZXhwZWN0ZWRGYWlsdXJlcyddID0gc2VsZi5leHBlY3RlZEZhaWx1cmVzCisKK2NsYXNzIE9FVGVzdFJlc3VsdFRocmVhZGVkKG9iamVjdCk6CisgICAgX3Jlc3VsdHMgPSB7fQorICAgIF9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRjKToKKyAgICAgICAgc2VsZi50YyA9IHRjCisKKyAgICBkZWYgX2ZpbGxfdGNfcmVzdWx0cyhzZWxmKToKKyAgICAgICAgdGlkcyA9IGxpc3Qoc2VsZi50Yy5fcmVzdWx0cy5rZXlzKCkpCisgICAgICAgIGZpZWxkcyA9IFsnZmFpbHVyZXMnLCAnZXJyb3JzJywgJ3NraXBwZWQnLCAnZXhwZWN0ZWRGYWlsdXJlcyddCisKKyAgICAgICAgZm9yIHRpZCBpbiB0aWRzOgorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi50Yy5fcmVzdWx0c1t0aWRdCisgICAgICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBmaWVsZCBpbiBzZWxmLnRjLl9yZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLl9yZXN1bHRzW2ZpZWxkXSA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1tmaWVsZF0uZXh0ZW5kKHJlc3VsdFtmaWVsZF0pCisKKyAgICBkZWYgYWRkUmVzdWx0KHNlbGYsIHJlc3VsdCwgcnVuX3N0YXJ0X3RpbWUsIHJ1bl9lbmRfdGltZSk6CisgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQorCisgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCisgICAgICAgIHNlbGYuX3Jlc3VsdHNbdGlkXSA9IHt9CisgICAgICAgIHNlbGYuX3Jlc3VsdHNbdGlkXVsncmVzdWx0J10gPSByZXN1bHQKKyAgICAgICAgc2VsZi5fcmVzdWx0c1t0aWRdWydydW5fc3RhcnRfdGltZSddID0gcnVuX3N0YXJ0X3RpbWUgCisgICAgICAgIHNlbGYuX3Jlc3VsdHNbdGlkXVsncnVuX2VuZF90aW1lJ10gPSBydW5fZW5kX3RpbWUgCisgICAgICAgIHNlbGYuX3Jlc3VsdHNbdGlkXVsncmVzdWx0J10gPSByZXN1bHQKKyAgICAgICAgc2VsZi5fbG9jay5yZWxlYXNlKCkKKworICAgIGRlZiB3YXNTdWNjZXNzZnVsKHNlbGYpOgorICAgICAgICB3YXNTdWNjZXNzZnVsID0gVHJ1ZQorICAgICAgICBmb3IgdGlkIGluIHNlbGYuX3Jlc3VsdHMua2V5cygpOgorICAgICAgICAgICAgd2FzU3VjY2Vzc2Z1bCA9IHdhc1N1Y2Nlc3NmdWwgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0c1t0aWRdWydyZXN1bHQnXS53YXNTdWNjZXNzZnVsKCkKKyAgICAgICAgcmV0dXJuIHdhc1N1Y2Nlc3NmdWwKKworICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICBmb3IgdGlkIGluIHNlbGYuX3Jlc3VsdHMua2V5cygpOgorICAgICAgICAgICAgc2VsZi5fcmVzdWx0c1t0aWRdWydyZXN1bHQnXS5zdG9wKCkKKworICAgIGRlZiBsb2dTdW1tYXJ5KHNlbGYsIGNvbXBvbmVudCwgY29udGV4dF9tc2c9JycpOgorICAgICAgICBlbGFwc2VkX3RpbWUgPSAoc2VsZi50Yy5fcnVuX2VuZF90aW1lIC0gc2VsZi50Yy5fcnVuX3N0YXJ0X3RpbWUpCisKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiU1VNTUFSWToiKQorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCIlcyAoJXMpIC0gUmFuICVkIHRlc3RzIGluICUuM2ZzIiAlIChjb21wb25lbnQsCisgICAgICAgICAgICBjb250ZXh0X21zZywgbGVuKHNlbGYudGMuX3JlZ2lzdHJ5WydjYXNlcyddKSwgZWxhcHNlZF90aW1lKSkKKyAgICAgICAgaWYgc2VsZi53YXNTdWNjZXNzZnVsKCk6CisgICAgICAgICAgICBtc2cgPSAiJXMgLSBPSyAtIEFsbCByZXF1aXJlZCB0ZXN0cyBwYXNzZWQiICUgY29tcG9uZW50CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAiJXMgLSBGQUlMIC0gUmVxdWlyZWQgdGVzdHMgZmFpbGVkIiAlIGNvbXBvbmVudAorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKG1zZykKKworICAgIGRlZiBsb2dEZXRhaWxzKHNlbGYpOgorICAgICAgICBpZiBsaXN0KHNlbGYuX3Jlc3VsdHMpOgorICAgICAgICAgICAgdGlkID0gbGlzdChzZWxmLl9yZXN1bHRzKVswXQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcmVzdWx0c1t0aWRdWydyZXN1bHQnXQorICAgICAgICAgICAgcmVzdWx0LmxvZ0RldGFpbHMoKQorCitjbGFzcyBfV29ya2VyKHRocmVhZGluZy5UaHJlYWQpOgorICAgICIiIlRocmVhZCBleGVjdXRpbmcgdGFza3MgZnJvbSBhIGdpdmVuIHRhc2tzIHF1ZXVlIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhc2tzLCByZXN1bHQsIHN0cmVhbSk6CisgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi50YXNrcyA9IHRhc2tzCisKKyAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQKKyAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0KKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnVuYywgYXJncywga2FyZ3MgPSBzZWxmLnRhc2tzLmdldChibG9jaz1GYWxzZSkKKyAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcnVuX3N0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgICAgIHJjID0gZnVuYygqYXJncywgKiprYXJncykKKyAgICAgICAgICAgICAgICBydW5fZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0LmFkZFJlc3VsdChyYywgcnVuX3N0YXJ0X3RpbWUsIHJ1bl9lbmRfdGltZSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbS5maW5pc2goKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHByaW50KGUpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYudGFza3MudGFza19kb25lKCkKKworY2xhc3MgX1RocmVhZGVkUG9vbDoKKyAgICAiIiJQb29sIG9mIHRocmVhZHMgY29uc3VtaW5nIHRhc2tzIGZyb20gYSBxdWV1ZSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW1fd29ya2VycywgbnVtX3Rhc2tzLCBzdHJlYW09Tm9uZSwgcmVzdWx0PU5vbmUpOgorICAgICAgICBzZWxmLnRhc2tzID0gcXVldWUuUXVldWUobnVtX3Rhc2tzKQorICAgICAgICBzZWxmLndvcmtlcnMgPSBbXQorCisgICAgICAgIGZvciBfIGluIHJhbmdlKG51bV93b3JrZXJzKToKKyAgICAgICAgICAgIHdvcmtlciA9IF9Xb3JrZXIoc2VsZi50YXNrcywgcmVzdWx0LCBzdHJlYW0pCisgICAgICAgICAgICBzZWxmLndvcmtlcnMuYXBwZW5kKHdvcmtlcikKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgZm9yIHdvcmtlciBpbiBzZWxmLndvcmtlcnM6CisgICAgICAgICAgICB3b3JrZXIuc3RhcnQoKQorCisgICAgZGVmIGFkZF90YXNrKHNlbGYsIGZ1bmMsICphcmdzLCAqKmthcmdzKToKKyAgICAgICAgIiIiQWRkIGEgdGFzayB0byB0aGUgcXVldWUiIiIKKyAgICAgICAgc2VsZi50YXNrcy5wdXQoKGZ1bmMsIGFyZ3MsIGthcmdzKSkKKworICAgIGRlZiB3YWl0X2NvbXBsZXRpb24oc2VsZik6CisgICAgICAgICIiIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYWxsIHRoZSB0YXNrcyBpbiB0aGUgcXVldWUiIiIKKyAgICAgICAgc2VsZi50YXNrcy5qb2luKCkKKyAgICAgICAgZm9yIHdvcmtlciBpbiBzZWxmLndvcmtlcnM6CisgICAgICAgICAgICB3b3JrZXIuam9pbigpCisKK2NsYXNzIE9FVGVzdFJ1bm5lclRocmVhZGVkKE9FVGVzdFJ1bm5lcik6CisgICAgc3RyZWFtTG9nZ2VyQ2xhc3MgPSBPRVN0cmVhbUxvZ2dlclRocmVhZGVkCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKE9FVGVzdFJ1bm5lclRocmVhZGVkLCBzZWxmKS5fX2luaXRfXyh0YywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLnJlc3VsdGNsYXNzID0gT0VUZXN0UmVzdWx0VGhyZWFkZWRJbnRlcm5hbCAjIFhYWDogWE1MIHJlcG9ydGluZyBvdmVycmlkZXMgYXQgX19pbml0X18KKworICAgIGRlZiBydW4oc2VsZiwgc3VpdGVzKToKKyAgICAgICAgcmVzdWx0ID0gT0VUZXN0UmVzdWx0VGhyZWFkZWQoc2VsZi50YykKKworICAgICAgICBwb29sID0gX1RocmVhZGVkUG9vbChsZW4oc3VpdGVzKSwgbGVuKHN1aXRlcyksIHN0cmVhbT1zZWxmLnN0cmVhbSwKKyAgICAgICAgICAgICAgICByZXN1bHQ9cmVzdWx0KQorICAgICAgICBmb3IgcyBpbiBzdWl0ZXM6CisgICAgICAgICAgICBwb29sLmFkZF90YXNrKHN1cGVyKE9FVGVzdFJ1bm5lclRocmVhZGVkLCBzZWxmKS5ydW4sIHMpCisgICAgICAgIHBvb2wuc3RhcnQoKQorICAgICAgICBwb29sLndhaXRfY29tcGxldGlvbigpCisgICAgICAgIHJlc3VsdC5fZmlsbF90Y19yZXN1bHRzKCkKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKK2NsYXNzIE9FVGVzdENvbnRleHRUaHJlYWRlZChPRVRlc3RDb250ZXh0KToKKyAgICBsb2FkZXJDbGFzcyA9IE9FVGVzdExvYWRlclRocmVhZGVkCisgICAgcnVubmVyQ2xhc3MgPSBPRVRlc3RSdW5uZXJUaHJlYWRlZAorCisgICAgZGVmIGxvYWRUZXN0cyhzZWxmLCBtb2R1bGVfcGF0aHMsIG1vZHVsZXM9W10sIHRlc3RzPVtdLAorICAgICAgICAgICAgbW9kdWxlc19tYW5pZmVzdD0iIiwgbW9kdWxlc19yZXF1aXJlZD1bXSwgZmlsdGVycz17fSwgcHJvY2Vzc19udW09MCk6CisgICAgICAgIGlmIG1vZHVsZXNfbWFuaWZlc3Q6CisgICAgICAgICAgICBtb2R1bGVzID0gc2VsZi5fcmVhZF9tb2R1bGVzX2Zyb21fbWFuaWZlc3QobW9kdWxlc19tYW5pZmVzdCkKKworICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubG9hZGVyQ2xhc3Moc2VsZiwgbW9kdWxlX3BhdGhzLCBtb2R1bGVzLCB0ZXN0cywKKyAgICAgICAgICAgICAgICBtb2R1bGVzX3JlcXVpcmVkLCBmaWx0ZXJzLCBwcm9jZXNzX251bSkKKyAgICAgICAgc2VsZi5zdWl0ZXMgPSBzZWxmLmxvYWRlci5kaXNjb3ZlcigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2UucHkKaW5kZXggYzE0ODVjOS4uMmYxOTBhYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZS5weQpAQCAtOCwxMCArOCwxMCBAQAogICAgICMgdGFyZ2V0IGluc3RhbmNlIHNldCBieSBPRVJ1bnRpbWVUZXN0TG9hZGVyLgogICAgIHRhcmdldCA9IE5vbmUKIAotICAgIGRlZiBfb2VTZXRVcChzZWxmKToKLSAgICAgICAgc3VwZXIoT0VSdW50aW1lVGVzdENhc2UsIHNlbGYpLl9vZVNldFVwKCkKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKE9FUnVudGltZVRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCiAgICAgICAgIGluc3RhbGxfcGFja2FnZShzZWxmKQogCi0gICAgZGVmIF9vZVRlYXJEb3duKHNlbGYpOgotICAgICAgICBzdXBlcihPRVJ1bnRpbWVUZXN0Q2FzZSwgc2VsZikuX29lVGVhckRvd24oKQorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3VwZXIoT0VSdW50aW1lVGVzdENhc2UsIHNlbGYpLnRlYXJEb3duKCkKICAgICAgICAgdW5pbnN0YWxsX3BhY2thZ2Uoc2VsZikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvX3B0ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9fcHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZWQ5YTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9fcHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwotCi1mcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKLWZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdERhdGFWYXIsIHNraXBJZk5vdEZlYXR1cmUKLWZyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKLQotZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZXMuZG5mIGltcG9ydCBEbmZUZXN0Ci1mcm9tIG9lcWEudXRpbHMubG9ncGFyc2VyIGltcG9ydCAqCi1mcm9tIG9lcWEudXRpbHMuaHR0cHNlcnZlciBpbXBvcnQgSFRUUFNlcnZpY2UKLQotY2xhc3MgUHRlc3RSdW5uZXJUZXN0KERuZlRlc3QpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgcnBtX2RlcGxveSA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVInXSwgJ3JwbScpCi0gICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHJwbV9kZXBsb3ksIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0b3AoKQotCi0gICAgIyBhIHB0ZXN0IGxvZyBwYXJzZXIKLSAgICBkZWYgcGFyc2VfcHRlc3Qoc2VsZiwgbG9nZmlsZSk6Ci0gICAgICAgIHBhcnNlciA9IExwYXJzZXIodGVzdF8wX3Bhc3NfcmVnZXg9Il5QQVNTOiguKykiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfMF9mYWlsX3JlZ2V4PSJeRkFJTDooLispIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uXzBfYmVnaW5fcmVnZXg9Il5CRUdJTjogLiovKC4rKS9wdGVzdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbl8wX2VuZF9yZWdleD0iXkVORDogLiovKC4rKS9wdGVzdCIpCi0gICAgICAgIHBhcnNlci5pbml0KCkKLSAgICAgICAgcmVzdWx0ID0gUmVzdWx0KCkKLQotICAgICAgICB3aXRoIG9wZW4obG9nZmlsZSwgZXJyb3JzPSdyZXBsYWNlJykgYXMgZjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgcmVzdWx0X3R1cGxlID0gcGFyc2VyLnBhcnNlX2xpbmUobGluZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0X3R1cGxlOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHJlc3VsdF90dXBsZSA9IGxpbmVfdHlwZSwgY2F0ZWdvcnksIHN0YXR1cywgbmFtZSA9IHBhcnNlci5wYXJzZV9saW5lKGxpbmUpCi0KLSAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3NlY3Rpb24nIGFuZCBzdGF0dXMgPT0gJ2JlZ2luJzoKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uID0gbmFtZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICdzZWN0aW9uJyBhbmQgc3RhdHVzID09ICdlbmQnOgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3Rlc3QnIGFuZCBzdGF0dXMgPT0gJ3Bhc3MnOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RvcmUoY3VycmVudF9zZWN0aW9uLCBuYW1lLCBzdGF0dXMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3Rlc3QnIGFuZCBzdGF0dXMgPT0gJ2ZhaWwnOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RvcmUoY3VycmVudF9zZWN0aW9uLCBuYW1lLCBzdGF0dXMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgcmVzdWx0LnNvcnRfdGVzdHMoKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgX2luc3RhbGxfcHRlc3RfcGFja2FnZXMoc2VsZik6Ci0gICAgICAgICMgR2V0IHB0ZXN0IHBhY2thZ2VzIHRoYXQgY2FuIGJlIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UuCi0gICAgICAgIHBhY2thZ2VzX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRjLnRkWydERVBMT1lfRElSJ10sICdycG0nKQotICAgICAgICBwdGVzdF9wa2dzID0gW3BrZ1s6cGtnLmZpbmQoJy1wdGVzdCcpKzZdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBfLCBfLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhwYWNrYWdlc19kaXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwa2cgaW4gZmlsZW5hbWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICdwdGVzdCcgaW4gcGtnCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwa2dbOnBrZy5maW5kKCctcHRlc3QnKV0gaW4gc2VsZi50Yy5pbWFnZV9wYWNrYWdlc10KLQotICAgICAgICByZXBvX3VybCA9ICdodHRwOi8vJXM6JXMnICUgKHNlbGYudGFyZ2V0LnNlcnZlcl9pcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcG9fc2VydmVyLnBvcnQpCi0gICAgICAgIGRuZl9vcHRpb25zID0gKCctLXJlcG9mcm9tcGF0aD1vZS1wdGVzdC1yZXBvLCVzICcKLSAgICAgICAgICAgICAgICAgICAgICAgJy0tbm9ncGdjaGVjayAnCi0gICAgICAgICAgICAgICAgICAgICAgICdpbnN0YWxsIC15JyAlIHJlcG9fdXJsKQotICAgICAgICBzZWxmLmRuZignJXMgJXMgcHRlc3QtcnVubmVyJyAlIChkbmZfb3B0aW9ucywgJyAnLmpvaW4ocHRlc3RfcGtncykpKQotCi0gICAgQHNraXBJZk5vdEZlYXR1cmUoJ3BhY2thZ2UtbWFuYWdlbWVudCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgcmVxdWlyZXMgcGFja2FnZS1tYW5hZ2VtZW50IHRvIGJlIGluIERJU1RST19GRUFUVVJFUycpCi0gICAgQHNraXBJZk5vdEZlYXR1cmUoJ3B0ZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAnVGVzdCByZXF1aXJlcyBwYWNrYWdlLW1hbmFnZW1lbnQgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTJykKLSAgICBAc2tpcElmTm90RGF0YVZhcignSU1BR0VfUEtHVFlQRScsICdycG0nLAotICAgICAgICAgICAgICAgICAgICAgICdSUE0gaXMgbm90IHRoZSBwcmltYXJ5IHBhY2thZ2UgbWFuYWdlcicpCi0gICAgQE9FSGFzUGFja2FnZShbJ2RuZiddKQotICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKLSAgICBkZWYgdGVzdF9wdGVzdHJ1bm5lcihzZWxmKToKLSAgICAgICAgc2VsZi5wdGVzdF9sb2cgPSBvcy5wYXRoLmpvaW4oc2VsZi50Yy50ZFsnVEVTVF9MT0dfRElSJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdGVzdC0lcy5sb2cnICUgc2VsZi50Yy50ZFsnREFURVRJTUUnXSkKLSAgICAgICAgc2VsZi5faW5zdGFsbF9wdGVzdF9wYWNrYWdlcygpCi0KLSAgICAgICAgKHJ1bm5lcnN0YXR1cywgcmVzdWx0KSA9IHNlbGYudGFyZ2V0LnJ1bignL3Vzci9iaW4vcHRlc3QtcnVubmVyID4gL3RtcC9wdGVzdC5sb2cgMj4mMScsIDApCi0gICAgICAgICNleGl0IGNvZGUgaXMgIT0wIGV2ZW4gaWYgcHRlc3QtcnVubmVyIGV4ZWN1dGVzIGJlY2F1c2Ugc29tZSBwdGVzdCB0ZXN0cyBmYWlsLgotICAgICAgICBzZWxmLmFzc2VydFRydWUocnVubmVyc3RhdHVzICE9IDEyNywgbXNnPSJDYW5ub3QgZXhlY3V0ZSBwdGVzdC1ydW5uZXIhIikKLSAgICAgICAgc2VsZi50YXJnZXQuY29weUZyb20oJy90bXAvcHRlc3QubG9nJywgc2VsZi5wdGVzdF9sb2cpCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLnB0ZXN0X2xvZywgInB0ZXN0LmxvZyIpCi0KLSAgICAgICAgcmVzdWx0ID0gc2VsZi5wYXJzZV9wdGVzdCgicHRlc3QubG9nIikKLSAgICAgICAgbG9nX3Jlc3VsdHNfdG9fbG9jYXRpb24gPSAiLi9yZXN1bHRzIgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsb2dfcmVzdWx0c190b19sb2NhdGlvbik6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGxvZ19yZXN1bHRzX3RvX2xvY2F0aW9uKQotICAgICAgICBvcy5tYWtlZGlycyhsb2dfcmVzdWx0c190b19sb2NhdGlvbikKLQotICAgICAgICByZXN1bHQubG9nX2FzX2ZpbGVzKGxvZ19yZXN1bHRzX3RvX2xvY2F0aW9uLCB0ZXN0X3N0YXR1cyA9IFsncGFzcycsJ2ZhaWwnXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkKaW5kZXggNTllZGM5Yy4uNzliMjJkMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkKQEAgLTksOCArOSw3IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICB1cmkgPSAnaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvY3BpbycKLSAgICAgICAgdXJpID0gJyVzL2NwaW8tMi4xMi50YXIuYnoyJyAlIHVyaQorICAgICAgICB1cmkgPSAnaHR0cHM6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9jcGlvLTIuMTIudGFyLmd6JwogICAgICAgICBjbHMucHJvamVjdCA9IFRhcmdldEJ1aWxkUHJvamVjdChjbHMudGMudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRsX2RpciA9IGNscy50Yy50ZFsnRExfRElSJ10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CmluZGV4IDZlOTI5NDYuLjFmMzZjNjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CkBAIC04Niw5ICs4NiwxMSBAQAogICAgICdxZW11bWlwcycgOiBbCiAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBtb2R1bGUgImdseCInLAogICAgICAgICAncGNpIDAwMDA6MDA6MDAuMDogW0Zpcm13YXJlIEJ1Z106IHJlZyAweC4uOiBpbnZhbGlkIEJBUiAoY2FuXCd0IHNpemUpJywKKyAgICAgICAgJ2NhY2hlaW5mbzogRmFpbGVkIHRvIGZpbmQgY3B1MCBkZXZpY2Ugbm9kZScsCiAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAogICAgICdxZW11bWlwczY0JyA6IFsKICAgICAgICAgJ3BjaSAwMDAwOjAwOjAwLjA6IFtGaXJtd2FyZSBCdWddOiByZWcgMHguLjogaW52YWxpZCBCQVIgKGNhblwndCBzaXplKScsCisgICAgICAgICdjYWNoZWluZm86IEZhaWxlZCB0byBmaW5kIGNwdTAgZGV2aWNlIG5vZGUnLAogICAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCiAgICAgJ3FlbXVwcGMnIDogWwogICAgICAgICAnUENJIDAwMDA6MDAgQ2Fubm90IHJlc2VydmUgTGVnYWN5IElPIFtpbyAgMHgwMDAwLTB4MGZmZl0nLApAQCAtMTUxLDYgKzE1Myw4IEBACiAgICAgICAgICdmYWlsZWQgdG8gcmVhZCBvdXQgdGhlcm1hbCB6b25lJywKICAgICAgICAgJ0JsdWV0b290aDogaGNpMDogU2V0dGluZyBJbnRlbCBldmVudCBtYXNrIGZhaWxlZCcsCiAgICAgICAgICd0dHlTMiAtIGZhaWxlZCB0byByZXF1ZXN0IERNQScsCisgICAgICAgICdCbHVldG9vdGg6IGhjaTA6IEZhaWxlZCB0byBzZW5kIGZpcm13YXJlIGRhdGEgKC0zOCknLAorICAgICAgICAnYXRrYmQgc2VyaW8wOiBGYWlsZWQgdG8gZW5hYmxlIGtleWJvYXJkIG9uIGlzYTAwNjAvc2VyaW8wJywKICAgICAgICAgXSArIHg4Nl9jb21tb24sCiAgICAgJ2Nyb3duYmF5JyA6IHg4Nl9jb21tb24sCiAgICAgJ2dlbmVyaWN4ODYnIDogeDg2X2NvbW1vbiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjOGMwMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CkBAIC0wLDAgKzEsODIgQEAKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcworZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RmVhdHVyZQorZnJvbSBvZXFhLnV0aWxzLmxvZ3BhcnNlciBpbXBvcnQgTHBhcnNlciwgUmVzdWx0CisKK2NsYXNzIFB0ZXN0UnVubmVyVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CisKKyAgICAjIGEgcHRlc3QgbG9nIHBhcnNlcgorICAgIGRlZiBwYXJzZV9wdGVzdChzZWxmLCBsb2dmaWxlKToKKyAgICAgICAgcGFyc2VyID0gTHBhcnNlcih0ZXN0XzBfcGFzc19yZWdleD0iXlBBU1M6KC4rKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF8wX2ZhaWxfcmVnZXg9Il5GQUlMOiguKykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfMF9za2lwX3JlZ2V4PSJeU0tJUDooLispIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uXzBfYmVnaW5fcmVnZXg9Il5CRUdJTjogLiovKC4rKS9wdGVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbl8wX2VuZF9yZWdleD0iXkVORDogLiovKC4rKS9wdGVzdCIpCisgICAgICAgIHBhcnNlci5pbml0KCkKKyAgICAgICAgcmVzdWx0ID0gUmVzdWx0KCkKKworICAgICAgICB3aXRoIG9wZW4obG9nZmlsZSwgZXJyb3JzPSdyZXBsYWNlJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgcmVzdWx0X3R1cGxlID0gcGFyc2VyLnBhcnNlX2xpbmUobGluZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0X3R1cGxlOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJlc3VsdF90dXBsZSA9IGxpbmVfdHlwZSwgY2F0ZWdvcnksIHN0YXR1cywgbmFtZSA9IHBhcnNlci5wYXJzZV9saW5lKGxpbmUpCisKKyAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3NlY3Rpb24nIGFuZCBzdGF0dXMgPT0gJ2JlZ2luJzoKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uID0gbmFtZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICdzZWN0aW9uJyBhbmQgc3RhdHVzID09ICdlbmQnOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3Rlc3QnIGFuZCBzdGF0dXMgPT0gJ3Bhc3MnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RvcmUoY3VycmVudF9zZWN0aW9uLCBuYW1lLCBzdGF0dXMpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3Rlc3QnIGFuZCBzdGF0dXMgPT0gJ2ZhaWwnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RvcmUoY3VycmVudF9zZWN0aW9uLCBuYW1lLCBzdGF0dXMpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBsaW5lX3R5cGUgPT0gJ3Rlc3QnIGFuZCBzdGF0dXMgPT0gJ3NraXAnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RvcmUoY3VycmVudF9zZWN0aW9uLCBuYW1lLCBzdGF0dXMpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcmVzdWx0LnNvcnRfdGVzdHMoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBAT0VUZXN0SUQoMTYwMCkKKyAgICBAc2tpcElmTm90RmVhdHVyZSgncHRlc3QnLCAnVGVzdCByZXF1aXJlcyBwdGVzdCB0byBiZSBpbiBESVNUUk9fRkVBVFVSRVMnKQorICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwdGVzdC1wa2dzJywgJ1Rlc3QgcmVxdWlyZXMgcHRlc3QtcGtncyB0byBiZSBpbiBJTUFHRV9GRUFUVVJFUycpCisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIGRlZiB0ZXN0X3B0ZXN0cnVubmVyKHNlbGYpOgorICAgICAgICBpbXBvcnQgZGF0ZXRpbWUKKworICAgICAgICB0ZXN0X2xvZ19kaXIgPSBzZWxmLnRkLmdldCgnVEVTVF9MT0dfRElSJywgJycpCisgICAgICAgICMgVGhlIFRFU1RfTE9HX0RJUiBtYXliZSBOVUxMIHdoZW4gdGVzdGltYWdlIGlzIGFkZGVkIGFmdGVyCisgICAgICAgICMgdGVzdGRhdGEuanNvbiBpcyBnZW5lcmF0ZWQuCisgICAgICAgIGlmIG5vdCB0ZXN0X2xvZ19kaXI6CisgICAgICAgICAgICB0ZXN0X2xvZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZC5nZXQoJ1dPUktESVInLCAnJyksICd0ZXN0aW1hZ2UnKQorICAgICAgICAjIERvbid0IHVzZSBzZWxmLnRkLmdldCgnREFURVRJTUUnKSwgaXQncyBmcm9tIHRlc3RkYXRhLmpzb24sIG5vdAorICAgICAgICAjIHVwLXRvLWRhdGUsIGFuZCBtYXkgY2F1c2UgIkZpbGUgZXhpc3RzIiB3aGVuIHJlLXJldW4uCisgICAgICAgIGRhdGV0aW1lID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0lZCVIJU0lUycpCisgICAgICAgIHB0ZXN0X2xvZ19kaXJfbGluayA9IG9zLnBhdGguam9pbih0ZXN0X2xvZ19kaXIsICdwdGVzdF9sb2cnKQorICAgICAgICBwdGVzdF9sb2dfZGlyID0gJyVzLiVzJyAlIChwdGVzdF9sb2dfZGlyX2xpbmssIGRhdGV0aW1lKQorICAgICAgICBwdGVzdF9ydW5uZXJfbG9nID0gb3MucGF0aC5qb2luKHB0ZXN0X2xvZ19kaXIsICdwdGVzdC1ydW5uZXIubG9nJykKKworICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncHRlc3QtcnVubmVyJywgMCkKKyAgICAgICAgb3MubWFrZWRpcnMocHRlc3RfbG9nX2RpcikKKyAgICAgICAgd2l0aCBvcGVuKHB0ZXN0X3J1bm5lcl9sb2csICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUob3V0cHV0KQorCisgICAgICAgICMgc3RhdHVzICE9IDAgaXMgT0sgc2luY2Ugc29tZSBwdGVzdCB0ZXN0cyBtYXkgZmFpbAorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdHVzICE9IDEyNywgbXNnPSJDYW5ub3QgZXhlY3V0ZSBwdGVzdC1ydW5uZXIhIikKKworICAgICAgICAjIFBhcnNlIGFuZCBzYXZlIHJlc3VsdHMKKyAgICAgICAgcGFyc2VfcmVzdWx0ID0gc2VsZi5wYXJzZV9wdGVzdChwdGVzdF9ydW5uZXJfbG9nKQorICAgICAgICBwYXJzZV9yZXN1bHQubG9nX2FzX2ZpbGVzKHB0ZXN0X2xvZ19kaXIsIHRlc3Rfc3RhdHVzID0gWydwYXNzJywnZmFpbCcsICdza2lwJ10pCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHB0ZXN0X2xvZ19kaXJfbGluayk6CisgICAgICAgICAgICAjIFJlbW92ZSB0aGUgb2xkIGxpbmsgdG8gY3JlYXRlIGEgbmV3IG9uZQorICAgICAgICAgICAgb3MucmVtb3ZlKHB0ZXN0X2xvZ19kaXJfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKHB0ZXN0X2xvZ19kaXIpLCBwdGVzdF9sb2dfZGlyX2xpbmspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKaW5kZXggYzRjZDc2Yy4uMDI5NDAwMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQpAQCAtOTIsNiArOTIsMTIgQEAKICAgICBkZWYgZ2V0VGFyZ2V0KHRhcmdldF90eXBlLCBsb2dnZXIsIHRhcmdldF9pcCwgc2VydmVyX2lwLCAqKmt3YXJncyk6CiAgICAgICAgIHRhcmdldCA9IE5vbmUKIAorICAgICAgICBpZiB0YXJnZXRfaXA6CisgICAgICAgICAgICB0YXJnZXRfaXBfcG9ydCA9IHRhcmdldF9pcC5zcGxpdCgnOicpCisgICAgICAgICAgICBpZiBsZW4odGFyZ2V0X2lwX3BvcnQpID09IDI6CisgICAgICAgICAgICAgICAgdGFyZ2V0X2lwID0gdGFyZ2V0X2lwX3BvcnRbMF0KKyAgICAgICAgICAgICAgICBrd2FyZ3NbJ3BvcnQnXSA9IHRhcmdldF9pcF9wb3J0WzFdCisKICAgICAgICAgaWYgdGFyZ2V0X3R5cGUgPT0gJ3NpbXBsZXJlbW90ZSc6CiAgICAgICAgICAgICB0YXJnZXQgPSBPRVNTSFRhcmdldChsb2dnZXIsIHRhcmdldF9pcCwgc2VydmVyX2lwLCAqKmt3YXJncykKICAgICAgICAgZWxpZiB0YXJnZXRfdHlwZSA9PSAncWVtdSc6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRnYWxjdWxhdG9yLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkZ2FsY3VsYXRvci5weQppbmRleCA0MmU4ZGRiLi43ODBhZmNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRnYWxjdWxhdG9yLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGdhbGN1bGF0b3IucHkKQEAgLTgsNyArOCw3IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLSAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoImd0ayszIikgb3JcCisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJndGtcKzMiKSBvclwKICAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoImxpYmd0ay0zLjAiKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiR2FsY3VsYXRvclRlc3QgY2xhc3M6IFNESyBkb24ndCBzdXBwb3J0IGd0ayszIikKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkbHppcC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGx6aXAucHkKaW5kZXggMmE1M2I3OC4uM2E4OWNlOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkbHppcC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRsemlwLnB5CkBAIC0xNyw3ICsxNyw4IEBACiAKICAgICAgICAgbWFjaGluZSA9IHNlbGYudGQuZ2V0KCJNQUNISU5FIikKIAotICAgICAgICBpZiBub3Qgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSVzIiAlIG1hY2hpbmUpOgorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSVzIiAlIG1hY2hpbmUpIG9yCisgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJnY2MiKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiU0RLIGRvZXNuJ3QgY29udGFpbiBhIGNyb3NzLWNhbmFkaWFuIHRvb2xjaGFpbiIpCiAKICAgICBkZWYgdGVzdF9semlwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2djYy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9nY2MucHkKaW5kZXggNzRhZDJhMi4uZDExZjRiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2djYy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvZ2NjLnB5CkBAIC0xOCw3ICsxOCw4IEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIG1hY2hpbmUgPSBzZWxmLnRkLmdldCgiTUFDSElORSIpCi0gICAgICAgIGlmIG5vdCBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJXMiICUgbWFjaGluZSk6CisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJXMiICUgbWFjaGluZSkgb3IKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoImdjYyIpKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJHY2NDb21waWxlVGVzdCBjbGFzczogU0RLIGRvZXNuJ3QgY29udGFpbiBhIGNyb3NzLWNhbmFkaWFuIHRvb2xjaGFpbiIpCiAKICAgICBkZWYgdGVzdF9nY2NfY29tcGlsZShzZWxmKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9wZXJsLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3BlcmwucHkKaW5kZXggZTFiZGVkMi4uODA4NTY3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3BlcmwucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3BlcmwucHkKQEAgLTgsNyArOCw4IEBACiBjbGFzcyBQZXJsVGVzdChPRVNES1Rlc3RDYXNlKToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIm5hdGl2ZXNkay1wZXJsIik6CisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgibmF0aXZlc2RrLXBlcmwiKSBvcgorICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoInBlcmwtbmF0aXZlIikpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIk5vIHBlcmwgcGFja2FnZSBpbiB0aGUgU0RLIikKIAogICAgICAgICBmb3IgZiBpbiBbJ3Rlc3QucGwnXToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9weXRob24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcHl0aG9uLnB5CmluZGV4IDk0YTI5NmYuLjcyZGZjYzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9weXRob24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbi5weQpAQCAtOCw3ICs4LDggQEAKIGNsYXNzIFB5dGhvblRlc3QoT0VTREtUZXN0Q2FzZSk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJuYXRpdmVzZGstcHl0aG9uIik6CisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgibmF0aXZlc2RrLXB5dGhvbiIpIG9yCisgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicHl0aG9uLW5hdGl2ZSIpKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJObyBweXRob24gcGFja2FnZSBpbiB0aGUgU0RLIikKIAogICAgICAgICBmb3IgZiBpbiBbJ3Rlc3QucHknXToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKaW5kZXggMDE4OWVkOC4uYjNkN2M3NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKQEAgLTYsOSArNiwxMCBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCByZQogCi1mcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0LCBPRVRlc3RDb250ZXh0RXhlY3V0b3IKK2Zyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHRFeGVjdXRvcgorZnJvbSBvZXFhLmNvcmUudGhyZWFkZWQgaW1wb3J0IE9FVGVzdENvbnRleHRUaHJlYWRlZAogCi1jbGFzcyBPRVNES1Rlc3RDb250ZXh0KE9FVGVzdENvbnRleHQpOgorY2xhc3MgT0VTREtUZXN0Q29udGV4dChPRVRlc3RDb250ZXh0VGhyZWFkZWQpOgogICAgIHNka19maWxlc19kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpLCAiZmlsZXMiKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRkPU5vbmUsIGxvZ2dlcj1Ob25lLCBzZGtfZGlyPU5vbmUsIHNka19lbnY9Tm9uZSwKQEAgLTQ0LDggKzQ1LDYgQEAKICAgICBkZWZhdWx0X3Rlc3RfZGF0YSA9IE5vbmUKIAogICAgIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzZWxmLCBsb2dnZXIsIHN1YnBhcnNlcnMpOgotICAgICAgICBpbXBvcnQgYXJncGFyc2Vfb2UKLQogICAgICAgICBzdXBlcihPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IsIHNlbGYpLnJlZ2lzdGVyX2NvbW1hbmRzKGxvZ2dlciwgc3VicGFyc2VycykKIAogICAgICAgICBzZGtfZ3JvdXAgPSBzZWxmLnBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ3NkayBvcHRpb25zJykKQEAgLTEwOSw2ICsxMDgsOCBAQAogICAgICAgICAgICAgbG9nKGVudikKIAogICAgIGRlZiBydW4oc2VsZiwgbG9nZ2VyLCBhcmdzKToKKyAgICAgICAgaW1wb3J0IGFyZ3BhcnNlX29lCisKICAgICAgICAgaWYgbm90IGFyZ3Muc2RrX2RpcjoKICAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlX29lLkFyZ3VtZW50VXNhZ2VFcnJvcigiTm8gU0RLIGRpcmVjdG9yeSAiXAogICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZWQgcGxlYXNlIGRvLCAtLXNkay1kaXIgU0RLX0RJUiIsIHNlbGYubmFtZSkKQEAgLTEyOCw2ICsxMjksNiBAQAogICAgICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudCAoJXMpIHNwZWNpZmllZCIgJSBhcmdzLnNka19lbnYsIHNlbGYubmFtZSkKIAogICAgICAgICBzZWxmLnNka19lbnYgPSBzZGtfZW52c1thcmdzLnNka19lbnZdCi0gICAgICAgIHN1cGVyKE9FU0RLVGVzdENvbnRleHRFeGVjdXRvciwgc2VsZikucnVuKGxvZ2dlciwgYXJncykKKyAgICAgICAgcmV0dXJuIHN1cGVyKE9FU0RLVGVzdENvbnRleHRFeGVjdXRvciwgc2VsZikucnVuKGxvZ2dlciwgYXJncykKIAogX2V4ZWN1dG9yX2NsYXNzID0gT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvZGV2dG9vbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5CmluZGV4IGEwMWJjMGIuLmVhOTA1MTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5CkBAIC0xLDEyICsxLDE0IEBACiAjIENvcHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgogIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKIAoraW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIG9lcWEuc2RrZXh0LmNhc2UgaW1wb3J0IE9FU0RLRXh0VGVzdENhc2UKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS51dGlscy5odHRwc2VydmVyIGltcG9ydCBIVFRQU2VydmljZQogCiBjbGFzcyBEZXZ0b29sVGVzdChPRVNES0V4dFRlc3RDYXNlKToKICAgICBAY2xhc3NtZXRob2QKQEAgLTk1LDMgKzk3LDMzIEBACiAgICAgICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgYnVpbGQgJXMgJyAlIHBhY2thZ2Vfbm9kZWpzKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0ICVzICclIHBhY2thZ2Vfbm9kZWpzKQorCitjbGFzcyBTZGtVcGRhdGVUZXN0KE9FU0RLRXh0VGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLnB1Ymxpc2hfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGMuc2RrX2RpciwgJ2VzZGtfcHVibGlzaCcpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYucHVibGlzaF9kaXIpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnB1Ymxpc2hfZGlyKQorICAgICAgICBvcy5ta2RpcihzZWxmLnB1Ymxpc2hfZGlyKQorCisgICAgICAgIGJhc2VfdGNuYW1lID0gIiVzLyVzIiAlIChzZWxmLnRkLmdldCgiU0RLX0RFUExPWSIsICcnKSwKKyAgICAgICAgICAgIHNlbGYudGQuZ2V0KCJUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRSIsICcnKSkKKyAgICAgICAgdGNuYW1lX25ldyA9ICIlcy1uZXcuc2giICUgYmFzZV90Y25hbWUKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRjbmFtZV9uZXcpOgorICAgICAgICAgICAgdGNuYW1lX25ldyA9ICIlcy5zaCIgJSBiYXNlX3RjbmFtZQorCisgICAgICAgIGNtZCA9ICdvZS1wdWJsaXNoLXNkayAlcyAlcycgJSAodGNuYW1lX25ldywgc2VsZi5wdWJsaXNoX2RpcikKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKQorCisgICAgICAgIHNlbGYuaHR0cF9zZXJ2aWNlID0gSFRUUFNlcnZpY2Uoc2VsZi5wdWJsaXNoX2RpcikKKyAgICAgICAgc2VsZi5odHRwX3NlcnZpY2Uuc3RhcnQoKQorCisgICAgICAgIHNlbGYuaHR0cF91cmwgPSAiaHR0cDovLzEyNy4wLjAuMTolZCIgJSBzZWxmLmh0dHBfc2VydmljZS5wb3J0CisKKyAgICBkZWYgdGVzdF9zZGtfdXBkYXRlX2h0dHAoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bigiZGV2dG9vbCBzZGstdXBkYXRlIFwiJXNcIiIgJSBzZWxmLmh0dHBfdXJsKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuaHR0cF9zZXJ2aWNlLnN0b3AoKQorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucHVibGlzaF9kaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvc2RrX3VwZGF0ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9zZGtfdXBkYXRlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjg1OThiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9zZGtfdXBkYXRlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCi0KLWltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN1YnByb2Nlc3MKLQotZnJvbSBvZXFhLnNka2V4dC5jYXNlIGltcG9ydCBPRVNES0V4dFRlc3RDYXNlCi1mcm9tIG9lcWEudXRpbHMuaHR0cHNlcnZlciBpbXBvcnQgSFRUUFNlcnZpY2UKLQotY2xhc3MgU2RrVXBkYXRlVGVzdChPRVNES0V4dFRlc3RDYXNlKToKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLSAgICAgICAgc2VsZi5wdWJsaXNoX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRjLnNka19kaXIsICdlc2RrX3B1Ymxpc2gnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLnB1Ymxpc2hfZGlyKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5wdWJsaXNoX2RpcikKLSAgICAgICAgb3MubWtkaXIoc2VsZi5wdWJsaXNoX2RpcikKLQotICAgICAgICBiYXNlX3RjbmFtZSA9ICIlcy8lcyIgJSAoc2VsZi50ZC5nZXQoIlNES19ERVBMT1kiLCAnJyksCi0gICAgICAgICAgICBzZWxmLnRkLmdldCgiVE9PTENIQUlORVhUX09VVFBVVE5BTUUiLCAnJykpCi0gICAgICAgIHRjbmFtZV9uZXcgPSAiJXMtbmV3LnNoIiAlIGJhc2VfdGNuYW1lCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0Y25hbWVfbmV3KToKLSAgICAgICAgICAgIHRjbmFtZV9uZXcgPSAiJXMuc2giICUgYmFzZV90Y25hbWUKLQotICAgICAgICBjbWQgPSAnb2UtcHVibGlzaC1zZGsgJXMgJXMnICUgKHRjbmFtZV9uZXcsIHNlbGYucHVibGlzaF9kaXIpCi0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkKLQotICAgICAgICBzZWxmLmh0dHBfc2VydmljZSA9IEhUVFBTZXJ2aWNlKHNlbGYucHVibGlzaF9kaXIpCi0gICAgICAgIHNlbGYuaHR0cF9zZXJ2aWNlLnN0YXJ0KCkKLQotICAgICAgICBzZWxmLmh0dHBfdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6JWQiICUgc2VsZi5odHRwX3NlcnZpY2UucG9ydAotCi0gICAgZGVmIHRlc3Rfc2RrX3VwZGF0ZV9odHRwKHNlbGYpOgotICAgICAgICBvdXRwdXQgPSBzZWxmLl9ydW4oImRldnRvb2wgc2RrLXVwZGF0ZSBcIiVzXCIiICUgc2VsZi5odHRwX3VybCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgotICAgICAgICBzZWxmLmh0dHBfc2VydmljZS5zdG9wKCkKLSAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnB1Ymxpc2hfZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FkOTUxMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZnJvbSBwa2d1dGlsIGltcG9ydCBleHRlbmRfcGF0aAotX19wYXRoX18gPSBleHRlbmRfcGF0aChfX3BhdGhfXywgX19uYW1lX18pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9fc3N0YXRldGVzdHNfbm9hdXRvLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX3NzdGF0ZXRlc3RzX25vYXV0by5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM5YWU3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9fc3N0YXRldGVzdHNfbm9hdXRvLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKLWZyb20gb2VxYS5zZWxmdGVzdC5zc3RhdGUgaW1wb3J0IFNTdGF0ZUJhc2UKLQotCi1jbGFzcyBSZWJ1aWxkRnJvbVNTdGF0ZShTU3RhdGVCYXNlKToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBzZWxmLmJ1aWxkZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpKQotCi0gICAgZGVmIGdldF9kZXBfdGFyZ2V0cyhzZWxmLCBwcmltYXJ5X3RhcmdldHMpOgotICAgICAgICBmb3VuZF90YXJnZXRzID0gW10KLSAgICAgICAgYml0YmFrZSgiLWcgIiArICcgJy5qb2luKG1hcChzdHIsIHByaW1hcnlfdGFyZ2V0cykpKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdwbi1idWlsZGxpc3QnKSwgJ3InKSBhcyBwbmZpbGU6Ci0gICAgICAgICAgICBmb3VuZF90YXJnZXRzID0gcG5maWxlLnJlYWQoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgcmV0dXJuIGZvdW5kX3RhcmdldHMKLQotICAgIGRlZiBjb25maWd1cmVfYnVpbGRkaXIoc2VsZiwgYnVpbGRkaXIpOgotICAgICAgICBvcy5ta2RpcihidWlsZGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChidWlsZGRpcikKLSAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZicpKQotICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpLCAnY29uZi9sb2NhbC5jb25mJyksIG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvbG9jYWwuY29uZicpKQotICAgICAgICBjb25maWcgPSB7fQotICAgICAgICBjb25maWdbJ2RlZmF1bHRfc3N0YXRlX2RpciddID0gIlNTVEFURV9ESVIgPz0gXCIke1RPUERJUn0vc3N0YXRlLWNhY2hlXCIiCi0gICAgICAgIGNvbmZpZ1snbnVsbF9zc3RhdGVfbWlycm9ycyddID0gIlNTVEFURV9NSVJST1JTID0gXCJcIiIKLSAgICAgICAgY29uZmlnWydkZWZhdWx0X3RtcF9kaXInXSA9ICJUTVBESVIgPSBcIiR7VE9QRElSfS90bXBcIiIKLSAgICAgICAgZm9yIGtleSBpbiBjb25maWc6Ci0gICAgICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZi9zZWxmdGVzdC5pbmMnKSwgY29uZmlnW2tleV0pCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJyksICdjb25mL2JibGF5ZXJzLmNvbmYnKSwgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZi9iYmxheWVycy5jb25mJykpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJyksICdjb25mL2F1dG8uY29uZicpLCBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL2F1dG8uY29uZicpKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFyZGxpbmtfdHJlZShzZWxmLCBzcmMsIGRzdCk6Ci0gICAgICAgIG9zLm1rZGlyKGRzdCkKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3QpCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyYyk6Ci0gICAgICAgICAgICBpZiByb290ID09IHNyYzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGRzdCwgcm9vdC5zcGxpdChzcmMpWzFdWzE6XSkpCi0gICAgICAgICAgICBmb3Igc3N0YXRlX2ZpbGUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MubGluayhvcy5wYXRoLmpvaW4ocm9vdCwgc3N0YXRlX2ZpbGUpLCBvcy5wYXRoLmpvaW4oZHN0LCByb290LnNwbGl0KHNyYylbMV1bMTpdLCBzc3RhdGVfZmlsZSkpCi0KLSAgICBkZWYgcnVuX3Rlc3Rfc3N0YXRlX3JlYnVpbGQoc2VsZiwgcHJpbWFyeV90YXJnZXRzLCByZWxvY2F0ZT1GYWxzZSwgcmVidWlsZF9kZXBlbmRlbmNpZXM9RmFsc2UpOgotICAgICAgICBidWlsZEEgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2J1aWxkQScpCi0gICAgICAgIGlmIHJlbG9jYXRlOgotICAgICAgICAgICAgYnVpbGRCID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdidWlsZEInKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnVpbGRCID0gYnVpbGRBCi0KLSAgICAgICAgaWYgcmVidWlsZF9kZXBlbmRlbmNpZXM6Ci0gICAgICAgICAgICByZWJ1aWxkX3RhcmdldHMgPSBzZWxmLmdldF9kZXBfdGFyZ2V0cyhwcmltYXJ5X3RhcmdldHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWJ1aWxkX3RhcmdldHMgPSBwcmltYXJ5X3RhcmdldHMKLQotICAgICAgICBzZWxmLmNvbmZpZ3VyZV9idWlsZGRpcihidWlsZEEpCi0gICAgICAgIHJ1bkNtZCgoIi4gJXMvb2UtaW5pdC1idWlsZC1lbnYgJXMgJiYgIiAlIChnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCBidWlsZEEpKSArICdiaXRiYWtlICAnICsgJyAnLmpvaW4obWFwKHN0ciwgcHJpbWFyeV90YXJnZXRzKSksIHNoZWxsPVRydWUsIGV4ZWN1dGFibGU9Jy9iaW4vYmFzaCcpCi0gICAgICAgIHNlbGYuaGFyZGxpbmtfdHJlZShvcy5wYXRoLmpvaW4oYnVpbGRBLCAnc3N0YXRlLWNhY2hlJyksIG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnc3N0YXRlLWNhY2hlLWJ1aWxkQScpKQotICAgICAgICBzaHV0aWwucm10cmVlKGJ1aWxkQSkKLQotICAgICAgICBmYWlsZWRfcmVidWlsZCA9IFtdCi0gICAgICAgIGZhaWxlZF9jbGVhbnNzdGF0ZSA9IFtdCi0gICAgICAgIGZvciB0YXJnZXQgaW4gcmVidWlsZF90YXJnZXRzOgotICAgICAgICAgICAgc2VsZi5jb25maWd1cmVfYnVpbGRkaXIoYnVpbGRCKQotICAgICAgICAgICAgc2VsZi5oYXJkbGlua190cmVlKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnc3N0YXRlLWNhY2hlLWJ1aWxkQScpLCBvcy5wYXRoLmpvaW4oYnVpbGRCLCAnc3N0YXRlLWNhY2hlJykpCi0KLSAgICAgICAgICAgIHJlc3VsdF9jbGVhbnNzdGF0ZSA9IHJ1bkNtZCgoIi4gJXMvb2UtaW5pdC1idWlsZC1lbnYgJXMgJiYgIiAlIChnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCBidWlsZEIpKSArICdiaXRiYWtlIC1jY2xlYW5zc3RhdGUgJyArIHRhcmdldCwgaWdub3JlX3N0YXR1cz1UcnVlLCBzaGVsbD1UcnVlLCBleGVjdXRhYmxlPScvYmluL2Jhc2gnKQotICAgICAgICAgICAgaWYgbm90IHJlc3VsdF9jbGVhbnNzdGF0ZS5zdGF0dXMgPT0gMDoKLSAgICAgICAgICAgICAgICBmYWlsZWRfY2xlYW5zc3RhdGUuYXBwZW5kKHRhcmdldCkKLSAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGJ1aWxkQikKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICByZXN1bHRfYnVpbGQgPSBydW5DbWQoKCIuICVzL29lLWluaXQtYnVpbGQtZW52ICVzICYmICIgJSAoZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgYnVpbGRCKSkgKyAnYml0YmFrZSAnICsgdGFyZ2V0LCBpZ25vcmVfc3RhdHVzPVRydWUsIHNoZWxsPVRydWUsIGV4ZWN1dGFibGU9Jy9iaW4vYmFzaCcpCi0gICAgICAgICAgICBpZiBub3QgcmVzdWx0X2J1aWxkLnN0YXR1cyA9PSAwOgotICAgICAgICAgICAgICAgIGZhaWxlZF9yZWJ1aWxkLmFwcGVuZCh0YXJnZXQpCi0KLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoYnVpbGRCKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmFpbGVkX3JlYnVpbGQsIG1zZz0iVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgZmFpbGVkIHRvIHJlYnVpbGQ6ICVzIiAlICcgJy5qb2luKG1hcChzdHIsIGZhaWxlZF9yZWJ1aWxkKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmFpbGVkX2NsZWFuc3N0YXRlLCBtc2c9IlRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGZhaWxlZCBjbGVhbnNzdGF0ZShhbGwgb3RoZXJzIGhhdmUgcGFzc2VkIGJvdGggY2xlYW5zc3RhdGUgYW5kIHJlYnVpbGQgZnJvbSBzc3RhdGUgdGVzdHMpOiAlcyIgJSAnICcuam9pbihtYXAoc3RyLCBmYWlsZWRfY2xlYW5zc3RhdGUpKSkKLQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9yZWxvY2F0aW9uKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9yZWJ1aWxkKFsnY29yZS1pbWFnZS1zYXRvLXNkayddLCByZWxvY2F0ZT1UcnVlLCByZWJ1aWxkX2RlcGVuZGVuY2llcz1UcnVlKQotCi0gICAgZGVmIHRlc3Rfc3N0YXRlX3JlYnVpbGQoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX3JlYnVpbGQoWydjb3JlLWltYWdlLXNhdG8tc2RrJ10sIHJlbG9jYXRlPUZhbHNlLCByZWJ1aWxkX2RlcGVuZGVuY2llcz1UcnVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYXJjaGl2ZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9hcmNoaXZlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YwMWMzNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9hcmNoaXZlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycwotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi1pbXBvcnQgZ2xvYgotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi0KLQotY2xhc3MgQXJjaGl2ZXIob2VTZWxmVGVzdCk6Ci0KLSAgICBAdGVzdGNhc2UoMTM0NSkKLSAgICBkZWYgdGVzdF9hcmNoaXZlcl9hbGxvd3NfdG9fZmlsdGVyX29uX3JlY2lwZV9uYW1lKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIFRoZSBhcmNoaXZlciBzaG91bGQgb2ZmZXIgdGhlIHBvc3NpYmlsaXR5IHRvIGZpbHRlciBvbiB0aGUgcmVjaXBlLiAoIzY5MjkpCi0gICAgICAgIEV4cGVjdGVkOiAgICAxLiBJbmNsdWRlZCByZWNpcGUgKGJ1c3lib3gpIHNob3VsZCBiZSBpbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgMi4gRXhjbHVkZWQgcmVjaXBlICh6bGliKSBzaG91bGQgYmUgZXhjbHVkZWQKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaW5jbHVkZV9yZWNpcGUgPSAnYnVzeWJveCcKLSAgICAgICAgZXhjbHVkZV9yZWNpcGUgPSAnemxpYicKLQotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1BOX0lOQ0xVREUgPSAiJXMiXG4nICUgaW5jbHVkZV9yZWNpcGUKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1BOX0VYQ0xVREUgPSAiJXMiXG4nICUgZXhjbHVkZV9yZWNpcGUKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMgJXMnICUgKGluY2x1ZGVfcmVjaXBlLCBleGNsdWRlX3JlY2lwZSkpCi0gICAgICAgIGJpdGJha2UoIi1jIGRlcGxveV9hcmNoaXZlcyAlcyAlcyIgJSAoaW5jbHVkZV9yZWNpcGUsIGV4Y2x1ZGVfcmVjaXBlKSkKLQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJ10pCi0gICAgICAgIHNyY19wYXRoID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSkKLQotICAgICAgICAjIENoZWNrIHRoYXQgaW5jbHVkZV9yZWNpcGUgd2FzIGluY2x1ZGVkCi0gICAgICAgIGluY2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoICsgJy8lcy0qJyAlIGluY2x1ZGVfcmVjaXBlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBpbmNsdWRlZC4nICUgaW5jbHVkZV9yZWNpcGUpCi0KLSAgICAgICAgIyBDaGVjayB0aGF0IGV4Y2x1ZGVfcmVjaXBlIHdhcyBleGNsdWRlZAotICAgICAgICBleGNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aCArICcvJXMtKicgJSBleGNsdWRlX3JlY2lwZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSBleGNsdWRlX3JlY2lwZSkKLQotCi0gICAgZGVmIHRlc3RfYXJjaGl2ZXJfZmlsdGVyc19ieV90eXBlKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIFRoZSBhcmNoaXZlciBpcyBkb2N1bWVudGVkIHRvIGZpbHRlciBvbiB0aGUgcmVjaXBlIHR5cGUuCi0gICAgICAgIEV4cGVjdGVkOiAgICAxLiBpbmNsdWRlZCByZWNpcGUgdHlwZSAodGFyZ2V0KSBzaG91bGQgYmUgaW5jbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgIDIuIG90aGVyIHR5cGVzIHNob3VsZCBiZSBleGNsdWRlZAotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICB0YXJnZXRfcmVjaXBlID0gJ2luaXRzY3JpcHRzJwotICAgICAgICBuYXRpdmVfcmVjaXBlID0gJ3psaWItbmF0aXZlJwotCi0gICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUkVDSVBFX1RZUEVTID0gInRhcmdldCJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMgJXMnICUgKHRhcmdldF9yZWNpcGUsIG5hdGl2ZV9yZWNpcGUpKQotICAgICAgICBiaXRiYWtlKCIlcyAtYyBkZXBsb3lfYXJjaGl2ZXMgJXMiICUgKHRhcmdldF9yZWNpcGUsIG5hdGl2ZV9yZWNpcGUpKQotCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJywgJ1RBUkdFVF9TWVMnLCAnQlVJTERfU1lTJ10pCi0gICAgICAgIHNyY19wYXRoX3RhcmdldCA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10pCi0gICAgICAgIHNyY19wYXRoX25hdGl2ZSA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydCVUlMRF9TWVMnXSkKLQotICAgICAgICAjIENoZWNrIHRoYXQgdGFyZ2V0X3JlY2lwZSB3YXMgaW5jbHVkZWQKLSAgICAgICAgaW5jbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfdGFyZ2V0ICsgJy8lcy0qJyAlIHRhcmdldF9yZWNpcGUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGluY2x1ZGVkLicgJSB0YXJnZXRfcmVjaXBlKQotCi0gICAgICAgICMgQ2hlY2sgdGhhdCBuYXRpdmVfcmVjaXBlIHdhcyBleGNsdWRlZAotICAgICAgICBleGNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF9uYXRpdmUgKyAnLyVzLSonICUgbmF0aXZlX3JlY2lwZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSBuYXRpdmVfcmVjaXBlKQotCi0gICAgZGVmIHRlc3RfYXJjaGl2ZXJfZmlsdGVyc19ieV90eXBlX2FuZF9uYW1lKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgYXJjaGl2ZXMgYnkgcmVjaXBlIHR5cGUsIHRha2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lIGludG8gYWNjb3VudC4KLSAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGluY2x1ZGVkIHJlY2lwZSB0eXBlICh0YXJnZXQpIHNob3VsZCBiZSBpbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgMi4gb3RoZXIgdHlwZXMgc2hvdWxkIGJlIGV4Y2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgICAzLiByZWNpcGUgYnkgbmFtZSBzaG91bGQgYmUgaW5jbHVkZWQgLyBleGNsdWRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRpbmcgcHJldmlvdXMgZGVjaXNpb24gYnkgdHlwZQotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICB0YXJnZXRfcmVjaXBlcyA9IFsgJ2luaXRzY3JpcHRzJywgJ3psaWInIF0KLSAgICAgICAgbmF0aXZlX3JlY2lwZXMgPSBbICd1cGRhdGUtcmMuZC1uYXRpdmUnLCAnemxpYi1uYXRpdmUnIF0KLQotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1JFQ0lQRV9UWVBFUyA9ICJ0YXJnZXQiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9QTl9JTkNMVURFID0gIiVzIlxuJyAlIG5hdGl2ZV9yZWNpcGVzWzFdCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9QTl9FWENMVURFID0gIiVzIlxuJyAlIHRhcmdldF9yZWNpcGVzWzFdCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzICVzJyAlICgnICcuam9pbih0YXJnZXRfcmVjaXBlcyksICcgJy5qb2luKG5hdGl2ZV9yZWNpcGVzKSkpCi0gICAgICAgIGJpdGJha2UoJy1jIGRlcGxveV9hcmNoaXZlcyAlcyAlcycgJSAoJyAnLmpvaW4odGFyZ2V0X3JlY2lwZXMpLCAnICcuam9pbihuYXRpdmVfcmVjaXBlcykpKQotCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJywgJ1RBUkdFVF9TWVMnLCAnQlVJTERfU1lTJ10pCi0gICAgICAgIHNyY19wYXRoX3RhcmdldCA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10pCi0gICAgICAgIHNyY19wYXRoX25hdGl2ZSA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydCVUlMRF9TWVMnXSkKLQotICAgICAgICAjIENoZWNrIHRoYXQgdGFyZ2V0X3JlY2lwZVswXSBhbmQgbmF0aXZlX3JlY2lwZXNbMV0gd2VyZSBpbmNsdWRlZAotICAgICAgICBpbmNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF90YXJnZXQgKyAnLyVzLSonICUgdGFyZ2V0X3JlY2lwZXNbMF0pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGluY2x1ZGVkLicgJSB0YXJnZXRfcmVjaXBlc1swXSkKLQotICAgICAgICBpbmNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF9uYXRpdmUgKyAnLyVzLSonICUgbmF0aXZlX3JlY2lwZXNbMV0pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGluY2x1ZGVkLicgJSBuYXRpdmVfcmVjaXBlc1sxXSkKLQotICAgICAgICAjIENoZWNrIHRoYXQgbmF0aXZlX3JlY2lwZXNbMF0gYW5kIHRhcmdldF9yZWNpcGVzWzFdIHdlcmUgZXhjbHVkZWQKLSAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfbmF0aXZlICsgJy8lcy0qJyAlIG5hdGl2ZV9yZWNpcGVzWzBdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIG5hdGl2ZV9yZWNpcGVzWzBdKQotCi0gICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX3RhcmdldCArICcvJXMtKicgJSB0YXJnZXRfcmVjaXBlc1sxXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSB0YXJnZXRfcmVjaXBlc1sxXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Jhc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYXNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2E4ZWE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24KLSMKLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCi0KLQotIyBERVNDUklQVElPTgotIyBCYXNlIGNsYXNzIGluaGVyaXRlZCBieSB0ZXN0IGNsYXNzZXMgaW4gbWV0YS9saWIvb2VxYS9zZWxmdGVzdAotCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHNodXRpbAotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBlcnJubwotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCBMb2dSZXN1bHRzCi1mcm9tIHJhbmRvbSBpbXBvcnQgY2hvaWNlCi1pbXBvcnQgZ2xvYgotCi1ATG9nUmVzdWx0cwotY2xhc3Mgb2VTZWxmVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigic2VsZnRlc3QuYmFzZSIpCi0gICAgbG9uZ01lc3NhZ2UgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0icnVuVGVzdCIpOgotICAgICAgICBzZWxmLmJ1aWxkZGlyID0gb3MuZW52aXJvbi5nZXQoIkJVSUxERElSIikKLSAgICAgICAgc2VsZi5sb2NhbGNvbmZfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikKLSAgICAgICAgc2VsZi5sb2NhbGNvbmZfYmFja3VwID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJjb25mL2xvY2FsLmJrIikKLSAgICAgICAgc2VsZi50ZXN0aW5jX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvc2VsZnRlc3QuaW5jIikKLSAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKQotICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uZi9iYmxheWVycy5iayIpCi0gICAgICAgIHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmluYyIpCi0gICAgICAgIHNlbGYubWFjaGluZWluY19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJjb25mL21hY2hpbmUuaW5jIikKLSAgICAgICAgc2VsZi50ZXN0bGF5ZXJfcGF0aCA9IG9lU2VsZlRlc3QudGVzdGxheWVyX3BhdGgKLSAgICAgICAgc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzID0gW10KLSAgICAgICAgc2VsZi5fdHJhY2tfZm9yX2NsZWFudXAgPSBbCi0gICAgICAgICAgICBzZWxmLnRlc3RpbmNfcGF0aCwgc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsCi0gICAgICAgICAgICBzZWxmLm1hY2hpbmVpbmNfcGF0aCwgc2VsZi5sb2NhbGNvbmZfYmFja3VwLAotICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXBdCi0gICAgICAgIHN1cGVyKG9lU2VsZlRlc3QsIHNlbGYpLl9faW5pdF9fKG1ldGhvZE5hbWUpCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIG9zLmNoZGlyKHNlbGYuYnVpbGRkaXIpCi0gICAgICAgICMgQ2hlY2sgaWYgbG9jYWwuY29uZiBvciBiYmxheWVycy5jb25mIGZpbGVzIGJhY2t1cCBleGlzdHMKLSAgICAgICAgIyBmcm9tIGEgcHJldmlvdXMgZmFpbGVkIHRlc3QgYW5kIHJlc3RvcmUgdGhlbQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmxvY2FsY29uZl9iYWNrdXApIG9yIG9zLnBhdGguaXNmaWxlKAotICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKToKLSAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJGb3VuZCBhIGxvY2FsLmNvbmYgYW5kL29yIGJibGF5ZXJzLmNvbmYgYmFja3VwIFwKLWZyb20gYSBwcmV2aW91c2x5IGFib3J0ZWQgdGVzdC4gUmVzdG9yaW5nIHRoZXNlIGZpbGVzIG5vdywgYnV0IHRlc3RzIHNob3VsZCBcCi1iZSByZS1leGVjdXRlZCBmcm9tIGEgY2xlYW4gZW52aXJvbm1lbnQgdG8gZW5zdXJlIGFjY3VyYXRlIHJlc3VsdHMuIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbGNvbmZfYmFja3VwLCBzZWxmLmxvY2FsY29uZl9wYXRoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGJhY2t1cCBsb2NhbC5jb25mIGFuZCBiYmxheWVycy5jb25mCi0gICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbGNvbmZfcGF0aCwgc2VsZi5sb2NhbGNvbmZfYmFja3VwKQotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxfYmJsYXllcnNfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCkKLSAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJDcmVhdGluZyBsb2NhbC5jb25mIGFuZCBiYmxheWVycy5jb25mIGJhY2t1cHMuIikKLSAgICAgICAgIyB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHByZXZpb3VzIHRlc3QgbGVmdCBhcm91bmQgaW4gY29uZmlnIG9yIGluYyBmaWxlcwotICAgICAgICAjIGlmIGl0IGZhaWxlZCBzbyB3ZSBuZWVkIGEgZnJlc2ggc3RhcnQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYudGVzdGluY19wYXRoKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoc2VsZi50ZXN0bGF5ZXJfcGF0aCk6Ci0gICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBpZiBmID09ICd0ZXN0X3JlY2lwZS5pbmMnOgotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHJvb3QsIGYpKQotCi0gICAgICAgIGZvciBpbmNsX2ZpbGUgaW4gW3NlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBzZWxmLm1hY2hpbmVpbmNfcGF0aF06Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGluY2xfZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICAgICAgIyBHZXQgQ1VTVE9NTUFDSElORSBmcm9tIGVudiAoc2V0IGJ5IC0tbWFjaGluZSBhcmd1bWVudCB0byBvZS1zZWxmdGVzdCkKLSAgICAgICAgY3VzdG9tbWFjaGluZSA9IG9zLmdldGVudignQ1VTVE9NTUFDSElORScpCi0gICAgICAgIGlmIGN1c3RvbW1hY2hpbmU6Ci0gICAgICAgICAgICBpZiBjdXN0b21tYWNoaW5lID09ICdyYW5kb20nOgotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBnZXRfcmFuZG9tX21hY2hpbmUoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gY3VzdG9tbWFjaGluZQotICAgICAgICAgICAgbWFjaGluZV9jb25mID0gJ01BQ0hJTkUgPz89ICIlcyJcbicgJSBtYWNoaW5lCi0gICAgICAgICAgICBzZWxmLnNldF9tYWNoaW5lX2NvbmZpZyhtYWNoaW5lX2NvbmYpCi0gICAgICAgICAgICBwcmludCgnTUFDSElORTogJXMnICUgbWFjaGluZSkKLQotICAgICAgICAjIHRlc3RzIG1pZ2h0IG5lZWQgdGhlaXIgb3duIHNldHVwCi0gICAgICAgICMgYnV0IGlmIHRoZXkgb3ZlcndyaXRlIHRoaXMgb25lIHRoZXkgaGF2ZSB0byBjYWxsCi0gICAgICAgICMgc3VwZXIgZWFjaCB0aW1lLCBzbyBsZXQncyBnaXZlIHRoZW0gYW4gYWx0ZXJuYXRpdmUKLSAgICAgICAgc2VsZi5zZXRVcExvY2FsKCkKLQotICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kczoKLSAgICAgICAgICAgIGZhaWxlZF9leHRyYV9jb21tYW5kcyA9IFtdCi0gICAgICAgICAgICBmb3IgY29tbWFuZCBpbiBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHM6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNvbW1hbmQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0LnN0YXR1cyA9PSAgMDoKLSAgICAgICAgICAgICAgICAgICAgZmFpbGVkX2V4dHJhX2NvbW1hbmRzLmFwcGVuZChjb21tYW5kKQotICAgICAgICAgICAgaWYgZmFpbGVkX2V4dHJhX2NvbW1hbmRzOgotICAgICAgICAgICAgICAgIHNlbGYubG9nLndhcm5pbmcoInRlYXJEb3duIGNvbW1hbmRzIGhhdmUgZmFpbGVkOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgZmFpbGVkX2V4dHJhX2NvbW1hbmRzKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoIlRyeWluZyB0byBtb3ZlIG9uLiIpCi0gICAgICAgICAgICBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHMgPSBbXQotCi0gICAgICAgIGlmIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwOgotICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5fdHJhY2tfZm9yX2NsZWFudXA6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUocGF0aCkKLSAgICAgICAgICAgIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwID0gW10KLQotICAgICAgICBzZWxmLnRlYXJEb3duTG9jYWwoKQotCi0gICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgICMgYWRkIHRlc3Qgc3BlY2lmaWMgY29tbWFuZHMgdG8gdGhlIHRlYXJEb3duIG1ldGhvZC4KLSAgICBkZWYgYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oc2VsZiwgY29tbWFuZCk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJBZGRpbmcgY29tbWFuZCAnJXMnIHRvIHRlYXJEb3duIGZvciB0aGlzIHRlc3QuIiAlIGNvbW1hbmQpCi0gICAgICAgIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kcy5hcHBlbmQoY29tbWFuZCkKLSAgICAjIGFkZCB0ZXN0IHNwZWNpZmljIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRvIGJlIHJlbW92ZWQgaW4gdGhlIHRlYXJEb3duIG1ldGhvZAotICAgIGRlZiB0cmFja19mb3JfY2xlYW51cChzZWxmLCBwYXRoKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIkFkZGluZyBwYXRoICclcycgdG8gYmUgY2xlYW5lZCB1cCB3aGVuIHRlc3QgaXMgb3ZlciIgJSBwYXRoKQotICAgICAgICBzZWxmLl90cmFja19mb3JfY2xlYW51cC5hcHBlbmQocGF0aCkKLQotICAgICMgd3JpdGUgdG8gPGJ1aWxkZGlyPi9jb25mL3NlbGZ0ZXN0LmluYwotICAgIGRlZiB3cml0ZV9jb25maWcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpKQotICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkKLQotICAgICAgICBjdXN0b21tYWNoaW5lID0gb3MuZ2V0ZW52KCdDVVNUT01NQUNISU5FJykKLSAgICAgICAgaWYgY3VzdG9tbWFjaGluZSBhbmQgJ01BQ0hJTkUnIGluIGRhdGE6Ci0gICAgICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScpCi0gICAgICAgICAgICBzZWxmLmxvZy53YXJuaW5nKCdNQUNISU5FIG92ZXJyaWRkZW46ICVzJyAlIG1hY2hpbmUpCi0KLSAgICAjIGFwcGVuZCB0byA8YnVpbGRkaXI+L2NvbmYvc2VsZnRlc3QuaW5jCi0gICAgZGVmIGFwcGVuZF9jb25maWcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJBcHBlbmRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkpCi0gICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkKLQotICAgICAgICBjdXN0b21tYWNoaW5lID0gb3MuZ2V0ZW52KCdDVVNUT01NQUNISU5FJykKLSAgICAgICAgaWYgY3VzdG9tbWFjaGluZSBhbmQgJ01BQ0hJTkUnIGluIGRhdGE6Ci0gICAgICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScpCi0gICAgICAgICAgICBzZWxmLmxvZy53YXJuaW5nKCdNQUNISU5FIG92ZXJyaWRkZW46ICVzJyAlIG1hY2hpbmUpCi0KLSAgICAjIHJlbW92ZSBkYXRhIGZyb20gPGJ1aWxkZGlyPi9jb25mL3NlbGZ0ZXN0LmluYwotICAgIGRlZiByZW1vdmVfY29uZmlnKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiUmVtb3ZpbmcgZnJvbTogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpCi0KLSAgICAjIHdyaXRlIHRvIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYwotICAgIGRlZiB3cml0ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlLCBkYXRhKToKLSAgICAgICAgaW5jX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZSwgJ3Rlc3RfcmVjaXBlLmluYycpCi0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQotICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShpbmNfZmlsZSwgZGF0YSkKLQotICAgICMgYXBwZW5kIGRhdGEgdG8gbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jCi0gICAgZGVmIGFwcGVuZF9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlLCBkYXRhKToKLSAgICAgICAgaW5jX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZSwgJ3Rlc3RfcmVjaXBlLmluYycpCi0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJBcHBlbmRpbmcgdG86ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCi0gICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShpbmNfZmlsZSwgZGF0YSkKLQotICAgICMgcmVtb3ZlIGRhdGEgZnJvbSBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMKLSAgICBkZWYgcmVtb3ZlX3JlY2lwZWluYyhzZWxmLCByZWNpcGUsIGRhdGEpOgotICAgICAgICBpbmNfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlLCAndGVzdF9yZWNpcGUuaW5jJykKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIlJlbW92aW5nIGZyb206ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCi0gICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKGluY19maWxlLCBkYXRhKQotCi0gICAgIyBkZWxldGUgbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIGZpbGUKLSAgICBkZWYgZGVsZXRlX3JlY2lwZWluYyhzZWxmLCByZWNpcGUpOgotICAgICAgICBpbmNfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlLCAndGVzdF9yZWNpcGUuaW5jJykKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIkRlbGV0aW5nIGZpbGU6ICVzIiAlIGluY19maWxlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoaW5jX2ZpbGUpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICByYWlzZQotCi0gICAgIyB3cml0ZSB0byA8YnVpbGRkaXI+L2NvbmYvYmJsYXllcnMuaW5jCi0gICAgZGVmIHdyaXRlX2JibGF5ZXJzX2NvbmZpZyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkpCi0gICAgICAgIGZ0b29scy53cml0ZV9maWxlKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKQotCi0gICAgIyBhcHBlbmQgdG8gPGJ1aWxkZGlyPi9jb25mL2JibGF5ZXJzLmluYwotICAgIGRlZiBhcHBlbmRfYmJsYXllcnNfY29uZmlnKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiQXBwZW5kaW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpKQotICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpCi0KLSAgICAjIHJlbW92ZSBkYXRhIGZyb20gPGJ1aWxkZGlyPi9jb25mL2JibGF5ZXJzLmluYwotICAgIGRlZiByZW1vdmVfYmJsYXllcnNfY29uZmlnKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiUmVtb3ZpbmcgZnJvbTogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpCi0KLSAgICAjIHdyaXRlIHRvIDxidWlsZGRpcj4vY29uZi9tYWNoaW5lLmluYwotICAgIGRlZiBzZXRfbWFjaGluZV9jb25maWcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi5tYWNoaW5laW5jX3BhdGgsIGRhdGEpKQotICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShzZWxmLm1hY2hpbmVpbmNfcGF0aCwgZGF0YSkKLQotCi1kZWYgZ2V0X2F2YWlsYWJsZV9tYWNoaW5lcygpOgotICAgICMgR2V0IGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIG1hY2hpbmVzCi0gICAgYmJwYXRoID0gZ2V0X2JiX3ZhcignQkJQQVRIJykuc3BsaXQoJzonKQotICAgIG1hY2hpbmVzID0gW10KLQotICAgIGZvciBwYXRoIGluIGJicGF0aDoKLSAgICAgICAgZm91bmRfbWFjaGluZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHBhdGgsICdjb25mJywgJ21hY2hpbmUnLCAnKi5jb25mJykpCi0gICAgICAgIGlmIGZvdW5kX21hY2hpbmVzOgotICAgICAgICAgICAgZm9yIGkgaW4gZm91bmRfbWFjaGluZXM6Ci0gICAgICAgICAgICAgICAgIyBlZzogJy9ob21lLzx1c2VyPi9wb2t5L21ldGEtaW50ZWwvY29uZi9tYWNoaW5lL2ludGVsLWNvcmUyLTMyLmNvbmYnCi0gICAgICAgICAgICAgICAgbWFjaGluZXMuYXBwZW5kKG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShpKSlbMF0pCi0KLSAgICByZXR1cm4gbWFjaGluZXMKLQotCi1kZWYgZ2V0X3JhbmRvbV9tYWNoaW5lKCk6Ci0gICAgIyBHZXQgYSByYW5kb20gbWFjaGluZQotICAgIHJldHVybiBjaG9pY2UoZ2V0X2F2YWlsYWJsZV9tYWNoaW5lcygpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmJsYXllcnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYmxheWVycy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q2NThjNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYmxheWVycy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgZ2V0X2JiX3ZhcgotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIEJpdGJha2VMYXllcnMob2VTZWxmVGVzdCk6Ci0KLSAgICBAdGVzdGNhc2UoNzU2KQotICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd2Nyb3NzZGVwZW5kcyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWNyb3NzLWRlcGVuZHMnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2FzcGVsbCcgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIk5vIGRlcGVuZGVuY2llcyB3ZXJlIHNob3duLiBiaXRiYWtlLWxheWVycyBzaG93LWNyb3NzLWRlcGVuZHMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDgzKQotICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd2xheWVycyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbWV0YS1zZWxmdGVzdCcgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIk5vIGxheWVycyB3ZXJlIHNob3duLiBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoOTMpCi0gICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93YXBwZW5kcyhzZWxmKToKLSAgICAgICAgcmVjaXBlID0gInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUiCi0gICAgICAgIGJiX2ZpbGUgPSBzZWxmLmdldF9yZWNpcGVfYmFzZW5hbWUocmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctYXBwZW5kcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYl9maWxlIGluIHJlc3VsdC5vdXRwdXQsIG1zZz0iJXMgZmlsZSB3YXMgbm90IHJlY29nbmlzZWQuIGJpdGJha2UtbGF5ZXJzIHNob3ctYXBwZW5kcyBvdXRwdXQ6ICVzIiAlIChiYl9maWxlLCByZXN1bHQub3V0cHV0KSkKLQotICAgIEB0ZXN0Y2FzZSg5MCkKLSAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3dvdmVybGF5ZWQoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1vdmVybGF5ZWQnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2FzcGVsbCcgaW4gcmVzdWx0Lm91dHB1dCwgbXNnPSJhc3BlbGwgb3ZlcmxheWVkIHJlY2lwZSB3YXMgbm90IHJlY29nbmlzZWQgYml0YmFrZS1sYXllcnMgc2hvdy1vdmVybGF5ZWQgJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSg5NSkKLSAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX2ZsYXR0ZW4oc2VsZik6Ci0gICAgICAgIHJlY2lwZSA9ICJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIgotICAgICAgICByZWNpcGVfcGF0aCA9ICJyZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUiCi0gICAgICAgIHJlY2lwZV9maWxlID0gc2VsZi5nZXRfcmVjaXBlX2Jhc2VuYW1lKHJlY2lwZSkKLSAgICAgICAgdGVzdG91dGRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAndGVzdF9iaXRiYWtlbGF5ZXJzX2ZsYXR0ZW4nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNkaXIodGVzdG91dGRpciksIG1zZyA9ICJ0ZXN0X2JpdGJha2VsYXllcnNfZmxhdHRlbiBzaG91bGQgbm90IGV4aXN0IGF0IHRoaXMgcG9pbnQgaW4gdGltZSIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVzdG91dGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBmbGF0dGVuICVzJyAlIHRlc3RvdXRkaXIpCi0gICAgICAgIGJiX2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdG91dGRpciwgcmVjaXBlX3BhdGgsIHJlY2lwZV9maWxlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoYmJfZmlsZSksIG1zZyA9ICJDYW5ub3QgZmluZCB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lXzAuMS4xLmJiIGluIHRoZSB0ZXN0X2JpdGJha2VsYXllcnNfZmxhdHRlbiBsb2NhbCBkaXIuIikKLSAgICAgICAgY29udGVudHMgPSBmdG9vbHMucmVhZF9maWxlKGJiX2ZpbGUpCi0gICAgICAgIGZpbmRfaW5fY29udGVudHMgPSByZS5zZWFyY2goIiMjIyMjIGJiYXBwZW5kZWQgZnJvbSBtZXRhLXNlbGZ0ZXN0ICMjIyMjXG4oLipcbikqaW5jbHVkZSB0ZXN0X3JlY2lwZS5pbmMiLCBjb250ZW50cykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfaW5fY29udGVudHMsIG1zZyA9ICJGbGF0dGVuaW5nIGxheWVycyBkaWQgbm90IHdvcmsuIGJpdGJha2UtbGF5ZXJzIGZsYXR0ZW4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExOTUpCi0gICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19hZGRfcmVtb3ZlKHNlbGYpOgotICAgICAgICB0ZXN0X2xheWVyID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksICdtZXRhLXNrZWxldG9uJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCAiVGhpcyB0ZXN0IGNhbm5vdCBydW4gd2l0aCBtZXRhLXNrZWxldG9uIGluIGJibGF5ZXJzLmNvbmYuIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVzdF9sYXllcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCBtc2cgPSAiU29tZXRoaW5nIHdyb25nIGhhcHBlbmVkLiBtZXRhLXNrZWxldG9uIGxheWVyIHdhcyBub3QgYWRkZWQgdG8gY29uZi9iYmxheWVycy5jb25mLiAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSB0ZXN0X2xheWVyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJtZXRhLXNrZWxldG9uIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBhdCB0aGlzIHN0ZXAuICBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlc3RfbGF5ZXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgbXNnID0gIlNvbWV0aGluZyB3cm9uZyBoYXBwZW5lZC4gbWV0YS1za2VsZXRvbiBsYXllciB3YXMgbm90IGFkZGVkIHRvIGNvbmYvYmJsYXllcnMuY29uZi4gIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi9tZXRhLXNrZWxldG9uJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCBtc2cgPSAibWV0YS1za2VsZXRvbiBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYXQgdGhpcyBzdGVwLiAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEzODQpCi0gICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93cmVjaXBlcyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdhc3BlbGw6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbXRkLXV0aWxzOicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvcmUtaW1hZ2UtbWluaW1hbDonLCByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyBtdGQtdXRpbHMnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdtdGQtdXRpbHM6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignYXNwZWxsOicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIGltYWdlJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignY29yZS1pbWFnZS1taW5pbWFsJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbXRkLXV0aWxzOicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIGNtYWtlLHBrZ2NvbmZpZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnByb3h5OicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ210ZC11dGlsczonLCByZXN1bHQub3V0cHV0KSAjIGRvZXNuJ3QgaW5oZXJpdCBlaXRoZXIKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignd2dldDonLCByZXN1bHQub3V0cHV0KSAjIGRvZXNuJ3QgaW5oZXJpdCBjbWFrZQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd3YWZmbGU6JywgcmVzdWx0Lm91dHB1dCkgIyBkb2Vzbid0IGluaGVyaXQgcGtnY29uZmlnCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIG5vbmV4aXN0ZW50Y2xhc3MnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBub25leGlzdGVudGNsYXNzIHNob3VsZCBoYXZlIGZhaWxlZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VSUk9SOicsIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBkZWYgZ2V0X3JlY2lwZV9iYXNlbmFtZShzZWxmLCByZWNpcGUpOgotICAgICAgICByZWNpcGVfZmlsZSA9ICIiCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1mICVzIiAlIHJlY2lwZSkKLSAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBpZiByZWNpcGUgaW4gbGluZToKLSAgICAgICAgICAgICAgICByZWNpcGVfZmlsZSA9IGxpbmUKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVfZmlsZSksIG1zZyA9ICJDYW4ndCBmaW5kIHJlY2lwZSBmaWxlIGZvciAlcyIgJSByZWNpcGUpCi0gICAgICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZV9maWxlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmJ0ZXN0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JidGVzdHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZTA5ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmJ0ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI3OCArMCwwIEBACi1pbXBvcnQgb3MKLWltcG9ydCByZQotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgQml0YmFrZVRlc3RzKG9lU2VsZlRlc3QpOgotCi0gICAgZGVmIGdldGxpbmUoc2VsZiwgcmVzLCBsaW5lKToKLSAgICAgICAgZm9yIGwgaW4gcmVzLm91dHB1dC5zcGxpdCgnXG4nKToKLSAgICAgICAgICAgIGlmIGxpbmUgaW4gbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbAotCi0gICAgQHRlc3RjYXNlKDc4OSkKLSAgICBkZWYgdGVzdF9ydW5fYml0YmFrZV9mcm9tX2Rpcl8xKHNlbGYpOgotICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2NvbmYnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRiYWtlKCctZScpLnN0YXR1cywgMCwgbXNnID0gImJpdGJha2UgY291bGRuJ3QgcnVuIGZyb20gXCJjb25mXCIgZGlyIikKLQotICAgIEB0ZXN0Y2FzZSg3OTApCi0gICAgZGVmIHRlc3RfcnVuX2JpdGJha2VfZnJvbV9kaXJfMihzZWxmKToKLSAgICAgICAgbXlfZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKLSAgICAgICAgbXlfZW52WydCQlBBVEgnXSA9IG15X2VudlsnQlVJTERESVInXQotICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUob3MuZW52aXJvblsnQlVJTERESVInXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYml0YmFrZSgnLWUnLCBlbnY9bXlfZW52KS5zdGF0dXMsIDAsIG1zZyA9ICJiaXRiYWtlIGNvdWxkbid0IHJ1biBmcm9tIGJ1aWxkZGlyIikKLQotICAgIEB0ZXN0Y2FzZSg4MDYpCi0gICAgZGVmIHRlc3RfZXZlbnRfaGFuZGxlcihzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVQgKz0gXCJ0ZXN0X2V2ZW50c1wiIikKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbTQtbmF0aXZlJykKLSAgICAgICAgZmluZF9idWlsZF9zdGFydGVkID0gcmUuc2VhcmNoKCJOT1RFOiBUZXN0IGZvciBiYlwuZXZlbnRcLkJ1aWxkU3RhcnRlZChcbi4qKSpOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MiLCByZXN1bHQub3V0cHV0KQotICAgICAgICBmaW5kX2J1aWxkX2NvbXBsZXRlZCA9IHJlLnNlYXJjaCgiVGFza3MgU3VtbWFyeTouKihcbi4qKSpOT1RFOiBUZXN0IGZvciBiYlwuZXZlbnRcLkJ1aWxkQ29tcGxldGVkIiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfYnVpbGRfc3RhcnRlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9idWlsZF9jb21wbGV0ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdUZXN0IGZvciBiYi5ldmVudC5JbnZhbGlkRXZlbnQnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJcIlRlc3QgZm9yIGJiLmV2ZW50LkludmFsaWRFdmVudFwiIG1lc3NhZ2UgZm91bmQgZHVyaW5nIGJpdGJha2UgcHJvY2Vzcy4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTAzKQotICAgIGRlZiB0ZXN0X2xvY2FsX3NzdGF0ZShzZWxmKToKLSAgICAgICAgYml0YmFrZSgnbTQtbmF0aXZlJykKLSAgICAgICAgYml0YmFrZSgnbTQtbmF0aXZlIC1jY2xlYW4nKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtNC1uYXRpdmUnKQotICAgICAgICBmaW5kX3NldHNjZW5lID0gcmUuc2VhcmNoKCJtNC1uYXRpdmUuKmRvXy4qX3NldHNjZW5lIiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfc2V0c2NlbmUsIG1zZyA9ICJObyBcIm00LW5hdGl2ZS4qZG9fLipfc2V0c2NlbmVcIiBtZXNzYWdlIGZvdW5kIGR1cmluZyBiaXRiYWtlIG00LW5hdGl2ZS4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQgKQotCi0gICAgQHRlc3RjYXNlKDEwNSkKLSAgICBkZWYgdGVzdF9iaXRiYWtlX2ludmFsaWRfcmVjaXBlKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctYiBhc2RmJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoIkVSUk9SOiBVbmFibGUgdG8gZmluZCBhbnkgcmVjaXBlIGZpbGUgbWF0Y2hpbmcgJ2FzZGYnIiBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiVGhvdWdoIGFzZGYgcmVjaXBlIGRvZXNuJ3QgZXhpc3QsIGJpdGJha2UgZGlkbid0IG91dHB1dCBhbnkgZXJyLiBtZXNzYWdlLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMDcpCi0gICAgZGVmIHRlc3RfYml0YmFrZV9pbnZhbGlkX3RhcmdldChzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnYXNkZicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJFUlJPUjogTm90aGluZyBQUk9WSURFUyAnYXNkZiciIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJUaG91Z2ggbm8gJ2FzZGYnIHRhcmdldCBleGlzdHMsIGJpdGJha2UgZGlkbid0IG91dHB1dCBhbnkgZXJyLiBtZXNzYWdlLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMDYpCi0gICAgZGVmIHRlc3Rfd2FybmluZ3NfZXJyb3JzKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctYiBhc2RmJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBmaW5kX3dhcm5pbmdzID0gcmUuc2VhcmNoKCJTdW1tYXJ5OiBUaGVyZSB3LnsyLDN9PyBbMS05XVswLTldKiBXQVJOSU5HIG1lc3NhZ2VzKiBzaG93biIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGZpbmRfZXJyb3JzID0gcmUuc2VhcmNoKCJTdW1tYXJ5OiBUaGVyZSB3LnsyLDN9PyBbMS05XVswLTldKiBFUlJPUiBtZXNzYWdlcyogc2hvd24iLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF93YXJuaW5ncywgbXNnPSJEaWQgbm90IGZpbmQgdGhlIG11bWJlciBvZiB3YXJuaW5ncyBhdCB0aGUgZW5kIG9mIHRoZSBidWlsZDpcbiIgKyByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9lcnJvcnMsIG1zZz0iRGlkIG5vdCBmaW5kIHRoZSBtdW1iZXIgb2YgZXJyb3JzIGF0IHRoZSBlbmQgb2YgdGhlIGJ1aWxkOlxuIiArIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTA4KQotICAgIGRlZiB0ZXN0X2ludmFsaWRfcGF0Y2goc2VsZik6Ci0gICAgICAgICMgVGhpcyBwYXRjaCBhbHJlYWR5IGV4aXN0cyBpbiBTUkNfVVJJIHNvIGFkZGluZyBpdCBhZ2FpbiB3aWxsIGNhdXNlIHRoZQotICAgICAgICAjIHBhdGNoIHRvIGZhaWwuCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCAnU1JDX1VSSSArPSAiZmlsZTovL21hbi0xLjVoMS1tYWtlLnBhdGNoIicpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtYW4gLWMgcGF0Y2gnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbWFuJykKLSAgICAgICAgYml0YmFrZSgnLWNjbGVhbiBtYW4nKQotICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlc3VsdCwgIkZ1bmN0aW9uIGZhaWxlZDogcGF0Y2hfZG9fcGF0Y2giKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnID0gIlJlcGVhdGVkIHBhdGNoIGFwcGxpY2F0aW9uIGRpZG4ndCBmYWlsLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMzU0KQotICAgIGRlZiB0ZXN0X2ZvcmNlX3Rhc2tfMShzZWxmKToKLSAgICAgICAgIyB0ZXN0IDEgZnJvbSBidWcgNTg3NQotICAgICAgICB0ZXN0X3JlY2lwZSA9ICd6bGliJwotICAgICAgICB0ZXN0X2RhdGEgPSAiTWljcm9zb2Z0IE1hZGUgTm8gUHJvZml0IEZyb20gQW55b25lJ3MgWnVuZXMgWW8iCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0QnLCAnUEtHREVTVCcsICdtYW5kaXInXSwgdGVzdF9yZWNpcGUpCi0gICAgICAgIGltYWdlX2RpciA9IGJiX3ZhcnNbJ0QnXQotICAgICAgICBwa2dzcGxpdF9kaXIgPSBiYl92YXJzWydQS0dERVNUJ10KLSAgICAgICAgbWFuX2RpciA9IGJiX3ZhcnNbJ21hbmRpciddCi0KLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCi0gICAgICAgIGJpdGJha2UoJy1jIHBhY2thZ2UgLWYgJXMnICUgdGVzdF9yZWNpcGUpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCi0KLSAgICAgICAgbWFuX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW1hZ2VfZGlyICsgbWFuX2RpciwgJ21hbjMvemxpYi4zJykKLSAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKG1hbl9maWxlLCB0ZXN0X2RhdGEpCi0gICAgICAgIGJpdGJha2UoJy1jIHBhY2thZ2UgLWYgJXMnICUgdGVzdF9yZWNpcGUpCi0KLSAgICAgICAgbWFuX3NwbGl0X2ZpbGUgPSBvcy5wYXRoLmpvaW4ocGtnc3BsaXRfZGlyLCAnemxpYi1kb2MnICsgbWFuX2RpciwgJ21hbjMvemxpYi4zJykKLSAgICAgICAgbWFuX3NwbGl0X2NvbnRlbnQgPSBmdG9vbHMucmVhZF9maWxlKG1hbl9zcGxpdF9maWxlKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RfZGF0YSwgbWFuX3NwbGl0X2NvbnRlbnQsICdUaGUgbWFuIGZpbGUgaGFzIG5vdCBjaGFuZ2VkIGluIHBhY2thZ2VzLXNwbGl0LicpCi0KLSAgICAgICAgcmV0ID0gYml0YmFrZSh0ZXN0X3JlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndGFzayBkb19wYWNrYWdlX3dyaXRlX3JwbTonLCByZXQub3V0cHV0LCAnVGFzayBkb19wYWNrYWdlX3dyaXRlX3JwbSBkaWQgbm90IHJlLWV4ZWN1dGVkLicpCi0KLSAgICBAdGVzdGNhc2UoMTYzKQotICAgIGRlZiB0ZXN0X2ZvcmNlX3Rhc2tfMihzZWxmKToKLSAgICAgICAgIyB0ZXN0IDIgZnJvbSBidWcgNTg3NQotICAgICAgICB0ZXN0X3JlY2lwZSA9ICd6bGliJwotCi0gICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCi0KLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLUMgY29tcGlsZSAlcycgJSB0ZXN0X3JlY2lwZSkKLSAgICAgICAgbG9va19mb3JfdGFza3MgPSBbJ2RvX2NvbXBpbGU6JywgJ2RvX2luc3RhbGw6JywgJ2RvX3BvcHVsYXRlX3N5c3Jvb3Q6JywgJ2RvX3BhY2thZ2U6J10KLSAgICAgICAgZm9yIHRhc2sgaW4gbG9va19mb3JfdGFza3M6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKHRhc2ssIHJlc3VsdC5vdXRwdXQsIG1zZz0iQ291bGRuJ3QgZmluZCAlcyB0YXNrLiIpCi0KLSAgICBAdGVzdGNhc2UoMTY3KQotICAgIGRlZiB0ZXN0X2JpdGJha2VfZyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWcgY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgZm9yIGYgaW4gWydwbi1idWlsZGxpc3QnLCAncmVjaXBlLWRlcGVuZHMuZG90JywgJ3Rhc2stZGVwZW5kcy5kb3QnXToKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIGYpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnVGFzayBkZXBlbmRlbmNpZXMgc2F2ZWQgdG8gXCd0YXNrLWRlcGVuZHMuZG90XCcnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJObyB0YXNrIGRlcGVuZGVuY3kgXCJ0YXNrLWRlcGVuZHMuZG90XCIgZmlsZSB3YXMgZ2VuZXJhdGVkIGZvciB0aGUgZ2l2ZW4gdGFzayB0YXJnZXQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2J1c3lib3gnIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd0YXNrLWRlcGVuZHMuZG90JykpLCBtc2cgPSAiTm8gXCJidXN5Ym94XCIgZGVwZW5kZW5jeSBmb3VuZCBpbiB0YXNrLWRlcGVuZHMuZG90IGZpbGUuIikKLQotICAgIEB0ZXN0Y2FzZSg4OTkpCi0gICAgZGVmIHRlc3RfaW1hZ2VfbWFuaWZlc3Qoc2VsZik6Ci0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbIkRFUExPWV9ESVJfSU1BR0UiLCAiSU1BR0VfTElOS19OQU1FIl0sICJjb3JlLWltYWdlLW1pbmltYWwiKQotICAgICAgICBkZXBsb3lkaXIgPSBiYl92YXJzWyJERVBMT1lfRElSX0lNQUdFIl0KLSAgICAgICAgaW1hZ2VuYW1lID0gYmJfdmFyc1siSU1BR0VfTElOS19OQU1FIl0KLSAgICAgICAgbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCBpbWFnZW5hbWUgKyAiLm1hbmlmZXN0IikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKG1hbmlmZXN0KSwgbXNnPSJObyBtYW5pZmVzdCBmaWxlIGNyZWF0ZWQgZm9yIGltYWdlLiBJdCBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgaW4gJXMiICUgbWFuaWZlc3QpCi0KLSAgICBAdGVzdGNhc2UoMTY4KQotICAgIGRlZiB0ZXN0X2ludmFsaWRfcmVjaXBlX3NyY191cmkoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnU1JDX1VSSSA9ICJmaWxlOi8vaW52YWxpZCInCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCBkYXRhKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiJETF9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCi1TU1RBVEVfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgotSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1zZWxmdGVzdCIpKQotCi0gICAgICAgIGJpdGJha2UoJy1jY2xlYW5hbGwgbWFuJykKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWMgZmV0Y2ggbWFuJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBiaXRiYWtlKCctY2NsZWFuYWxsIG1hbicpCi0gICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbWFuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCBtc2c9IkNvbW1hbmQgc3VjY2VkZWQgd2hlbiBpdCBzaG91bGQgaGF2ZSBmYWlsZWQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ0ZldGNoZXIgZmFpbHVyZTogVW5hYmxlIHRvIGZpbmQgZmlsZSBmaWxlOi8vaW52YWxpZCBhbnl3aGVyZS4gVGhlIHBhdGhzIHRoYXQgd2VyZSBzZWFyY2hlZCB3ZXJlOicgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlwiaW52YWxpZFwiIGZpbGUgXAotZG9lc24ndCBleGlzdCwgeWV0IG5vIGVycm9yIG1lc3NhZ2UgZW5jb3VudGVyZWQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlc3VsdCwgJ0ZldGNoZXIgZmFpbHVyZSBmb3IgVVJMOiBcJ2ZpbGU6Ly9pbnZhbGlkXCcuIFVuYWJsZSB0byBmZXRjaCBVUkwgZnJvbSBhbnkgc291cmNlLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkVSUk9SOiIpLCBtc2cgPSAiXCJpbnZhbGlkXCIgZmlsZSBcCi1kb2Vzbid0IGV4aXN0LCB5ZXQgZmV0Y2hlciBkaWRuJ3QgcmVwb3J0IGFueSBlcnJvci4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTcxKQotICAgIGRlZiB0ZXN0X3JlbmFtZV9kb3dubG9hZGVkX2ZpbGUoc2VsZik6Ci0gICAgICAgICMgVE9ETyB1bmlxdWUgZGxkaXIgaW5zdGVhZCBvZiB1c2luZyBjbGVhbmFsbAotICAgICAgICAjIFRPRE86IG5lZWQgdG8gc2V0IHNzdGF0ZWRpcj8KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiRExfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgotU1NUQVRFX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCi0KLSAgICAgICAgZGF0YSA9ICdTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYXNwZWxsL2FzcGVsbC0ke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT10ZXN0LWFzcGVsbC50YXIuZ3oiJwotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnYXNwZWxsJywgZGF0YSkKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWYgLWMgZmV0Y2ggYXNwZWxsJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ2FzcGVsbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgbXNnID0gIkNvdWxkbid0IGZldGNoIGFzcGVsbC4gJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgZGxfZGlyID0gZ2V0X2JiX3ZhcigiRExfRElSIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkbF9kaXIsICd0ZXN0LWFzcGVsbC50YXIuZ3onKSksIG1zZyA9ICJGaWxlIHJlbmFtZSBmYWlsZWQuIE5vIGNvcnJlc3BvbmRpbmcgdGVzdC1hc3BlbGwudGFyLmd6IGZpbGUgZm91bmQgdW5kZXIgJXMiICUgZGxfZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRsX2RpciwgJ3Rlc3QtYXNwZWxsLnRhci5nei5kb25lJykpLCAiRmlsZSByZW5hbWUgZmFpbGVkLiBObyBjb3JyZXNwb25kaW5nIHRlc3QtYXNwZWxsLnRhci5nei5kb25lIGZpbGUgZm91bmQgdW5kZXIgJXMiICUgZGxfZGlyKQotCi0gICAgQHRlc3RjYXNlKDEwMjgpCi0gICAgZGVmIHRlc3RfZW52aXJvbm1lbnQoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJURVNUX0VOVj1cImxvY2FsY29uZlwiIikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1lIHwgZ3JlcCBURVNUX0VOVj0nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2xvY2FsY29uZicgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gImJpdGJha2UgZGlkbid0IHJlcG9ydCBhbnkgdmFsdWUgZm9yIFRFU1RfRU5WIHZhcmlhYmxlLiBUbyB0ZXN0LCBydW4gJ2JpdGJha2UgLWUgfCBncmVwIFRFU1RfRU5WPSciKQotCi0gICAgQHRlc3RjYXNlKDEwMjkpCi0gICAgZGVmIHRlc3RfZHJ5X3J1bihzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1uIG00LW5hdGl2ZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgImJpdGJha2UgZHJ5IHJ1biBkaWRuJ3QgcnVuIGFzIGV4cGVjdGVkLiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEwMzApCi0gICAgZGVmIHRlc3RfanVzdF9wYXJzZShzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1wJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiZXJyb3JzIGVuY291bnRlcmVkIHdoZW4gcGFyc2luZyByZWNpcGVzLiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEwMzEpCi0gICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1zIHwgZ3JlcCB3Z2V0JykKLSAgICAgICAgZmluZCA9IHJlLnNlYXJjaCgid2dldCAqOihbMC05YS16QS1aXC5cLV0rKSIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kLCAiTm8gdmVyc2lvbiByZXR1cm5lZCBmb3Igc2VhcmNoZWQgcmVjaXBlLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMDMyKQotICAgIGRlZiB0ZXN0X3ByZWZpbGUoc2VsZik6Ci0gICAgICAgIHByZWNvbmYgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2NvbmYvcHJlZmlsZS5jb25mJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChwcmVjb25mKQotICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShwcmVjb25mICwiVEVTVF9QUkVGSUxFPVwicHJlZmlsZVwiIikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1yIGNvbmYvcHJlZmlsZS5jb25mIC1lIHwgZ3JlcCBURVNUX1BSRUZJTEU9JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdwcmVmaWxlJyBpbiByZXN1bHQub3V0cHV0LCAiUHJlY29uZmlndXJlIGZpbGUgXCJwcmVmaWxlLmNvbmZcIndhcyBub3QgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiAiKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiVEVTVF9QUkVGSUxFPVwibG9jYWxjb25mXCIiKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLXIgY29uZi9wcmVmaWxlLmNvbmYgLWUgfCBncmVwIFRFU1RfUFJFRklMRT0nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2xvY2FsY29uZicgaW4gcmVzdWx0Lm91dHB1dCwgIlByZWNvbmZpZ3VyZSBmaWxlIFwicHJlZmlsZS5jb25mXCJ3YXMgbm90IHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4iKQotCi0gICAgQHRlc3RjYXNlKDEwMzMpCi0gICAgZGVmIHRlc3RfcG9zdGZpbGUoc2VsZik6Ci0gICAgICAgIHBvc3Rjb25mID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdjb25mL3Bvc3RmaWxlLmNvbmYnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHBvc3Rjb25mKQotICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShwb3N0Y29uZiAsICJURVNUX1BPU1RGSUxFPVwicG9zdGZpbGVcIiIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJURVNUX1BPU1RGSUxFPVwibG9jYWxjb25mXCIiKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLVIgY29uZi9wb3N0ZmlsZS5jb25mIC1lIHwgZ3JlcCBURVNUX1BPU1RGSUxFPScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncG9zdGZpbGUnIGluIHJlc3VsdC5vdXRwdXQsICJQb3N0Y29uZmlndXJlIGZpbGUgXCJwb3N0ZmlsZS5jb25mXCJ3YXMgbm90IHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4iKQotCi0gICAgQHRlc3RjYXNlKDEwMzQpCi0gICAgZGVmIHRlc3RfY2hlY2t1cmkoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtYyBjaGVja3VyaSBtNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgbXNnID0gIlwiY2hlY2t1cmlcIiB0YXNrIHdhcyBub3QgZXhlY3V0ZWQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEwMzUpCi0gICAgZGVmIHRlc3RfY29udGludWUoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKLVNTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCi1JTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCJcbmRvX2ZhaWxfdGFzayAoKSB7XG5leGl0IDEgXG59XG5cbmFkZHRhc2sgZG9fZmFpbF90YXNrIGJlZm9yZSBkb19mZXRjaFxuIiApCi0gICAgICAgIHJ1bkNtZCgnYml0YmFrZSAtYyBjbGVhbmFsbCBtYW4geGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtYyB1bnBhY2sgLWsgbWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIGVycm9ycG9zID0gcmVzdWx0Lm91dHB1dC5maW5kKCdFUlJPUjogRnVuY3Rpb24gZmFpbGVkOiBkb19mYWlsX3Rhc2snKQotICAgICAgICBtYW52ZXIgPSByZS5zZWFyY2goIk5PVEU6IHJlY2lwZSB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLSguKj8pOiB0YXNrIGRvX3VucGFjazogU3RhcnRlZCIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGNvbnRpbnVlcG9zID0gcmVzdWx0Lm91dHB1dC5maW5kKCdOT1RFOiByZWNpcGUgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS0lczogdGFzayBkb191bnBhY2s6IFN0YXJ0ZWQnICUgbWFudmVyLmdyb3VwKDEpKQotICAgICAgICBzZWxmLmFzc2VydExlc3MoZXJyb3Jwb3MsY29udGludWVwb3MsIG1zZyA9ICJiaXRiYWtlIGRpZG4ndCBwYXNzIGRvX2ZhaWxfdGFzay4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTExOSkKLSAgICBkZWYgdGVzdF9ub25fZ3BsdjMoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTkNPTVBBVElCTEVfTElDRU5TRSA9ICJHUEx2MyInKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdzZWxmdGVzdC1lZCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAiQml0YmFrZSBmYWlsZWQsIGV4aXQgY29kZSAlcywgb3V0cHV0ICVzIiAlIChyZXN1bHQuc3RhdHVzLCByZXN1bHQub3V0cHV0KSkKLSAgICAgICAgbGljX2RpciA9IGdldF9iYl92YXIoJ0xJQ0VOU0VfRElSRUNUT1JZJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGljX2RpciwgJ3NlbGZ0ZXN0LWVkL2dlbmVyaWNfR1BMdjMnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGljX2RpciwgJ3NlbGZ0ZXN0LWVkL2dlbmVyaWNfR1BMdjInKSkpCi0KLSAgICBAdGVzdGNhc2UoMTQyMikKLSAgICBkZWYgdGVzdF9zZXRzY2VuZV9vbmx5KHNlbGYpOgotICAgICAgICAiIiIgQml0YmFrZSBvcHRpb24gdG8gcmVzdG9yZSBmcm9tIHNzdGF0ZSBvbmx5IHdpdGhpbiBhIGJ1aWxkIChpLmUuIGV4ZWN1dGUgbm8gcmVhbCB0YXNrcywgb25seSBzZXRzY2VuZSkiIiIKLSAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCi0KLSAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCi0gICAgICAgIHJldCA9IGJpdGJha2UoJy0tc2V0c2NlbmUtb25seSAlcycgJSB0ZXN0X3JlY2lwZSkKLQotICAgICAgICB0YXNrcyA9IHJlLmZpbmRhbGwocid0YXNrXHMrKGRvX1xTKyk6JywgcmV0Lm91dHB1dCkKLQotICAgICAgICBmb3IgdGFzayBpbiB0YXNrczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19zZXRzY2VuZScsIHRhc2ssICdBIHRhc2sgZGlmZmVyZW50IGZyb20gX3NldHNjZW5lIHJhbjogJXMuXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhlY3V0ZWQgdGFza3Mgd2VyZTogJXMnICUgKHRhc2ssIHN0cih0YXNrcykpKQotCi0gICAgQHRlc3RjYXNlKDE0MjUpCi0gICAgZGVmIHRlc3RfYmJhcHBlbmRfb3JkZXIoc2VsZik6Ci0gICAgICAgICIiIiBCaXRiYWtlIHNob3VsZCBiYmFwcGVuZCB0byByZWNpcGUgaW4gYSBwcmVkaWN0YWJsZSBvcmRlciAiIiIKLSAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NVTU1BUlknLCAnUFYnXSwgdGVzdF9yZWNpcGUpCi0gICAgICAgIHRlc3RfcmVjaXBlX3N1bW1hcnlfYmVmb3JlID0gYmJfdmFyc1snU1VNTUFSWSddCi0gICAgICAgIHRlc3RfcmVjaXBlX3B2ID0gYmJfdmFyc1snUFYnXQotICAgICAgICByZWNpcGVfYXBwZW5kX2ZpbGUgPSB0ZXN0X3JlY2lwZSArICdfJyArIHRlc3RfcmVjaXBlX3B2ICsgJy5iYmFwcGVuZCcKLSAgICAgICAgZXhwZWN0ZWRfcmVjaXBlX3N1bW1hcnkgPSB0ZXN0X3JlY2lwZV9zdW1tYXJ5X2JlZm9yZQotCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgotICAgICAgICAgICAgcmVjaXBlX2FwcGVuZF9kaXIgPSB0ZXN0X3JlY2lwZSArICdfdGVzdF8nICsgc3RyKGkpCi0gICAgICAgICAgICByZWNpcGVfYXBwZW5kX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZV9hcHBlbmRfZGlyLCByZWNpcGVfYXBwZW5kX2ZpbGUpCi0gICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZV9hcHBlbmRfZGlyKSkKLSAgICAgICAgICAgIGZlYXR1cmUgPSAnU1VNTUFSWSArPSAiJXMiXG4nICUgaQotICAgICAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUocmVjaXBlX2FwcGVuZF9wYXRoLCBmZWF0dXJlKQotICAgICAgICAgICAgZXhwZWN0ZWRfcmVjaXBlX3N1bW1hcnkgKz0gJyAlcycgJSBpCi0KLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzJyAlIG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVjaXBlICsgJ190ZXN0XyonKSkKLQotICAgICAgICB0ZXN0X3JlY2lwZV9zdW1tYXJ5X2FmdGVyID0gZ2V0X2JiX3ZhcignU1VNTUFSWScsIHRlc3RfcmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3JlY2lwZV9zdW1tYXJ5LCB0ZXN0X3JlY2lwZV9zdW1tYXJ5X2FmdGVyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYnVpbGRoaXN0b3J5LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYnVpbGRoaXN0b3J5LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDhjMzljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2J1aWxkaGlzdG9yeS5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgZGF0ZXRpbWUKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi0KLWNsYXNzIEJ1aWxkaGlzdG9yeUJhc2Uob2VTZWxmVGVzdCk6Ci0KLSAgICBkZWYgY29uZmlnX2J1aWxkaGlzdG9yeShzZWxmLCB0bXBfYmhfbG9jYXRpb249RmFsc2UpOgotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydVU0VSX0NMQVNTRVMnLCAnSU5IRVJJVCddKQotICAgICAgICBpZiAobm90ICdidWlsZGhpc3RvcnknIGluIGJiX3ZhcnNbJ1VTRVJfQ0xBU1NFUyddKSBhbmQgKG5vdCAnYnVpbGRoaXN0b3J5JyBpbiBiYl92YXJzWydJTkhFUklUJ10pOgotICAgICAgICAgICAgYWRkX2J1aWxkaGlzdG9yeV9jb25maWcgPSAnSU5IRVJJVCArPSAiYnVpbGRoaXN0b3J5IlxuQlVJTERISVNUT1JZX0NPTU1JVCA9ICIxIicKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhhZGRfYnVpbGRoaXN0b3J5X2NvbmZpZykKLQotICAgICAgICBpZiB0bXBfYmhfbG9jYXRpb246Ci0gICAgICAgICAgICAjIFVzaW5nIGEgdGVtcG9yYXJ5IGJ1aWxkaGlzdG9yeSBsb2NhdGlvbiBmb3IgdGVzdGluZwotICAgICAgICAgICAgdG1wX2JoX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAidG1wX2J1aWxkaGlzdG9yeV8lcyIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJUglTSVTJykpCi0gICAgICAgICAgICBidWlsZGhpc3RvcnlfZGlyX2NvbmZpZyA9ICJCVUlMREhJU1RPUllfRElSID0gXCIlc1wiIiAlIHRtcF9iaF9kaXIKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhidWlsZGhpc3RvcnlfZGlyX2NvbmZpZykKLSAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodG1wX2JoX2RpcikKLQotICAgIGRlZiBydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbihzZWxmLCB0YXJnZXQsIGdsb2JhbF9jb25maWc9JycsIHRhcmdldF9jb25maWc9JycsIGNoYW5nZV9iaF9sb2NhdGlvbj1GYWxzZSwgZXhwZWN0X2Vycm9yPUZhbHNlLCBlcnJvcl9yZWdleD0nJyk6Ci0gICAgICAgIGlmIGNoYW5nZV9iaF9sb2NhdGlvbjoKLSAgICAgICAgICAgIHRtcF9iaF9sb2NhdGlvbiA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRtcF9iaF9sb2NhdGlvbiA9IEZhbHNlCi0gICAgICAgIHNlbGYuY29uZmlnX2J1aWxkaGlzdG9yeSh0bXBfYmhfbG9jYXRpb24pCi0KLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGdsb2JhbF9jb25maWcpCi0gICAgICAgIHNlbGYuYXBwZW5kX3JlY2lwZWluYyh0YXJnZXQsIHRhcmdldF9jb25maWcpCi0gICAgICAgIGJpdGJha2UoIi1jY2xlYW4gJXMiICUgdGFyZ2V0KQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKHRhcmdldCwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoZ2xvYmFsX2NvbmZpZykKLSAgICAgICAgc2VsZi5yZW1vdmVfcmVjaXBlaW5jKHRhcmdldCwgdGFyZ2V0X2NvbmZpZykKLQotICAgICAgICBpZiBleHBlY3RfZXJyb3I6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsIG1zZz0iRXJyb3IgZXhwZWN0ZWQgZm9yIGdsb2JhbCBjb25maWcgJyVzJyBhbmQgdGFyZ2V0IGNvbmZpZyAnJXMnIiAlIChnbG9iYWxfY29uZmlnLCB0YXJnZXRfY29uZmlnKSkKLSAgICAgICAgICAgIHNlYXJjaF9mb3JfZXJyb3IgPSByZS5zZWFyY2goZXJyb3JfcmVnZXgsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VhcmNoX2Zvcl9lcnJvciwgbXNnPSJDb3VsZCBub3QgZmluZCBkZXNpcmVkIGVycm9yIGluIG91dHB1dDogJXMgKCVzKSIgJSAoZXJyb3JfcmVnZXgsIHJlc3VsdC5vdXRwdXQpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCBtc2c9IkNvbW1hbmQgJ2JpdGJha2UgJXMnIGhhcyBmYWlsZWQgdW5leHBlY3RlZGx5OiAlcyIgJSAodGFyZ2V0LCByZXN1bHQub3V0cHV0KSkKLQotICAgICMgTm8gdGVzdHMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBiYXNlIGNsYXNzLgotICAgICMgUGxlYXNlIGNyZWF0ZSBhIG5ldyBjbGFzcyB0aGF0IGluaGVyaXQgdGhpcyBvbmUsIG9yIHVzZSBvbmUgb2YgdGhvc2UgYWxyZWFkeSBhdmFpbGFibGUgZm9yIGFkZGluZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2J1aWxkb3B0aW9ucy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2J1aWxkb3B0aW9ucy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZlMDIwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9idWlsZG9wdGlvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBnbG9iIGFzIGcKLWltcG9ydCBzaHV0aWwKLWltcG9ydCB0ZW1wZmlsZQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS5zZWxmdGVzdC5idWlsZGhpc3RvcnkgaW1wb3J0IEJ1aWxkaGlzdG9yeUJhc2UKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIEltYWdlT3B0aW9uc1Rlc3RzKG9lU2VsZlRlc3QpOgotCi0gICAgQHRlc3RjYXNlKDc2MSkKLSAgICBkZWYgdGVzdF9pbmNyZW1lbnRhbF9pbWFnZV9nZW5lcmF0aW9uKHNlbGYpOgotICAgICAgICBpbWFnZV9wa2d0eXBlID0gZ2V0X2JiX3ZhcigiSU1BR0VfUEtHVFlQRSIpCi0gICAgICAgIGlmIGltYWdlX3BrZ3R5cGUgIT0gJ3JwbSc6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdOb3QgdXNpbmcgUlBNIGFzIG1haW4gcGFja2FnZSBmb3JtYXQnKQotICAgICAgICBiaXRiYWtlKCItYyBjbGVhbiBjb3JlLWltYWdlLW1pbmltYWwiKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU5DX1JQTV9JTUFHRV9HRU4gPSAiMSInKQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ0lNQUdFX0ZFQVRVUkVTICs9ICJzc2gtc2VydmVyLW9wZW5zc2giJykKLSAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKLSAgICAgICAgbG9nX2RhdGFfZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJXT1JLRElSIiwgImNvcmUtaW1hZ2UtbWluaW1hbCIpLCAidGVtcC9sb2cuZG9fcm9vdGZzIikKLSAgICAgICAgbG9nX2RhdGFfY3JlYXRlZCA9IGZ0b29scy5yZWFkX2ZpbGUobG9nX2RhdGFfZmlsZSkKLSAgICAgICAgaW5jcmVtZW50YWxfY3JlYXRlZCA9IHJlLnNlYXJjaCgiSW5zdGFsbGluZyAgOiBwYWNrYWdlZ3JvdXAtY29yZS1zc2gtb3BlbnNzaCIsIGxvZ19kYXRhX2NyZWF0ZWQpCi0gICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZygnSU1BR0VfRkVBVFVSRVMgKz0gInNzaC1zZXJ2ZXItb3BlbnNzaCInKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jcmVtZW50YWxfY3JlYXRlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAlIGxvZ19kYXRhX2NyZWF0ZWQpCi0gICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2UtbWluaW1hbCIpCi0gICAgICAgIGxvZ19kYXRhX3JlbW92ZWQgPSBmdG9vbHMucmVhZF9maWxlKGxvZ19kYXRhX2ZpbGUpCi0gICAgICAgIGluY3JlbWVudGFsX3JlbW92ZWQgPSByZS5zZWFyY2goIkVyYXNpbmcgICAgIDogcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2giLCBsb2dfZGF0YV9yZW1vdmVkKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jcmVtZW50YWxfcmVtb3ZlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAlIGxvZ19kYXRhX3JlbW92ZWQpCi0KLSAgICBAdGVzdGNhc2UoMjg2KQotICAgIGRlZiB0ZXN0X2NjYWNoZV90b29sKHNlbGYpOgotICAgICAgICBiaXRiYWtlKCJjY2FjaGUtbmF0aXZlIikKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1lTUk9PVF9ERVNURElSJywgJ2JpbmRpciddLCAnY2NhY2hlLW5hdGl2ZScpCi0gICAgICAgIHAgPSBiYl92YXJzWydTWVNST09UX0RFU1RESVInXSArIGJiX3ZhcnNbJ2JpbmRpciddICsgIi8iICsgImNjYWNoZSIKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHApLCBtc2cgPSAiTm8gY2NhY2hlIGZvdW5kICglcykiICUgcCkKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lOSEVSSVQgKz0gImNjYWNoZSInKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIG00JykKLSAgICAgICAgYml0YmFrZSgibTQgLWYgLWMgY29tcGlsZSIpCi0gICAgICAgIGxvZ19jb21waWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoIldPUktESVIiLCJtNCIpLCAidGVtcC9sb2cuZG9fY29tcGlsZSIpCi0gICAgICAgIHJlcyA9IHJ1bkNtZCgiZ3JlcCBjY2FjaGUgJXMiICUgbG9nX2NvbXBpbGUsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzLCBtc2c9Ik5vIG1hdGNoIGZvciBjY2FjaGUgaW4gbTQgbG9nLmRvX2NvbXBpbGUuIEZvciBmdXJ0aGVyIGRldGFpbHM6ICVzIiAlIGxvZ19jb21waWxlKQotCi0gICAgQHRlc3RjYXNlKDE0MzUpCi0gICAgZGVmIHRlc3RfcmVhZF9vbmx5X2ltYWdlKHNlbGYpOgotICAgICAgICBkaXN0cm9fZmVhdHVyZXMgPSBnZXRfYmJfdmFyKCdESVNUUk9fRkVBVFVSRVMnKQotICAgICAgICBpZiBub3QgKCd4MTEnIGluIGRpc3Ryb19mZWF0dXJlcyBhbmQgJ29wZW5nbCcgaW4gZGlzdHJvX2ZlYXR1cmVzKToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2NvcmUtaW1hZ2Utc2F0byByZXF1aXJlcyB4MTEgYW5kIG9wZW5nbCBpbiBkaXN0cm8gZmVhdHVyZXMnKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU1BR0VfRkVBVFVSRVMgKz0gInJlYWQtb25seS1yb290ZnMiJykKLSAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIikKLSAgICAgICAgIyBkb19pbWFnZSB3aWxsIGZhaWwgaWYgdGhlcmUgYXJlIGFueSBwZW5kaW5nIHBvc3RpbnN0cwotCi1jbGFzcyBEaXNrTW9uVGVzdChvZVNlbGZUZXN0KToKLQotICAgIEB0ZXN0Y2FzZSgyNzcpCi0gICAgZGVmIHRlc3Rfc3RvcHRhc2tfYmVoYXZpb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdCQl9ESVNLTU9OX0RJUlMgPSAiU1RPUFRBU0tTLCR7VE1QRElSfSwxMDAwMDBHLDEwMEsiJykKLSAgICAgICAgcmVzID0gYml0YmFrZSgibTQiLCBpZ25vcmVfc3RhdHVzID0gVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdFUlJPUjogTm8gbmV3IHRhc2tzIGNhbiBiZSBleGVjdXRlZCBzaW5jZSB0aGUgZGlzayBzcGFjZSBtb25pdG9yIGFjdGlvbiBpcyAiU1RPUFRBU0tTIiEnIGluIHJlcy5vdXRwdXQsIG1zZyA9ICJUYXNrcyBzaG91bGQgaGF2ZSBzdG9wcGVkLiBEaXNrIG1vbml0b3IgaXMgc2V0IHRvIFNUT1BUQVNLOiAlcyIgJSByZXMub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDEsIG1zZyA9ICJiaXRiYWtlIHJlcG9ydGVkIGV4aXQgY29kZSAlcy4gSXQgc2hvdWxkIGhhdmUgYmVlbiAxLiBCaXRiYWtlIG91dHB1dDogJXMiICUgKHN0cihyZXMuc3RhdHVzKSwgcmVzLm91dHB1dCkpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdCQl9ESVNLTU9OX0RJUlMgPSAiQUJPUlQsJHtUTVBESVJ9LDEwMDAwMEcsMTAwSyInKQotICAgICAgICByZXMgPSBiaXRiYWtlKCJtNCIsIGlnbm9yZV9zdGF0dXMgPSBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ0VSUk9SOiBJbW1lZGlhdGVseSBhYm9ydCBzaW5jZSB0aGUgZGlzayBzcGFjZSBtb25pdG9yIGFjdGlvbiBpcyAiQUJPUlQiIScgaW4gcmVzLm91dHB1dCwgIlRhc2tzIHNob3VsZCBoYXZlIGJlZW4gYWJvcnRlZCBpbW1lZGlhdGVsbHkuIERpc2sgbW9uaXRvciBpcyBzZXQgdG8gQUJPUlQ6ICVzIiAlIHJlcy5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMSwgbXNnID0gImJpdGJha2UgcmVwb3J0ZWQgZXhpdCBjb2RlICVzLiBJdCBzaG91bGQgaGF2ZSBiZWVuIDEuIEJpdGJha2Ugb3V0cHV0OiAlcyIgJSAoc3RyKHJlcy5zdGF0dXMpLCByZXMub3V0cHV0KSkKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0JCX0RJU0tNT05fRElSUyA9ICJXQVJOLCR7VE1QRElSfSwxMDAwMDBHLDEwMEsiJykKLSAgICAgICAgcmVzID0gYml0YmFrZSgibTQiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dBUk5JTkc6IFRoZSBmcmVlIHNwYWNlJyBpbiByZXMub3V0cHV0LCBtc2cgPSAiQSB3YXJuaW5nIHNob3VsZCBoYXZlIGJlZW4gZGlzcGxheWVkIGZvciBkaXNrIG1vbml0b3IgaXMgc2V0IHRvIFdBUk46ICVzIiAlcmVzLm91dHB1dCkKLQotY2xhc3MgU2FuaXR5T3B0aW9uc1Rlc3Qob2VTZWxmVGVzdCk6Ci0gICAgZGVmIGdldGxpbmUoc2VsZiwgcmVzLCBsaW5lKToKLSAgICAgICAgZm9yIGwgaW4gcmVzLm91dHB1dC5zcGxpdCgnXG4nKToKLSAgICAgICAgICAgIGlmIGxpbmUgaW4gbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbAotCi0gICAgQHRlc3RjYXNlKDkyNykKLSAgICBkZWYgdGVzdF9vcHRpb25zX3dhcm5xYV9lcnJvcnFhX3N3aXRjaChzZWxmKToKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKLSAgICAgICAgaWYgInBhY2thZ2VzLWxpc3QiIG5vdCBpbiBnZXRfYmJfdmFyKCJFUlJPUl9RQSIpOgotICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCJFUlJPUl9RQV9hcHBlbmQgPSBcIiBwYWNrYWdlcy1saXN0XCIiKQotCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ1BBQ0tBR0VTICs9IFwiJHtQTn0tZGJnXCInKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQotICAgICAgICByZXMgPSBiaXRiYWtlKCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIC1mIC1jIHBhY2thZ2UiLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCi0gICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzLCAiUUEgSXNzdWU6IHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtZGJnIGlzIGxpc3RlZCBpbiBQQUNLQUdFUyBtdWx0aXBsZSB0aW1lcywgdGhpcyBsZWFkcyB0byBwYWNrYWdpbmcgZXJyb3JzLiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkVSUk9SOiIpLCBtc2c9cmVzLm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAxLCBtc2cgPSAiYml0YmFrZSByZXBvcnRlZCBleGl0IGNvZGUgJXMuIEl0IHNob3VsZCBoYXZlIGJlZW4gMS4gQml0YmFrZSBvdXRwdXQ6ICVzIiAlIChzdHIocmVzLnN0YXR1cyksIHJlcy5vdXRwdXQpKQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdQQUNLQUdFUyArPSBcIiR7UE59LWRiZ1wiJykKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdFUlJPUl9RQV9yZW1vdmUgPSAicGFja2FnZXMtbGlzdCInKQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ1dBUk5fUUFfYXBwZW5kID0gIiBwYWNrYWdlcy1saXN0IicpCi0gICAgICAgIHJlcyA9IGJpdGJha2UoInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgLWYgLWMgcGFja2FnZSIpCi0gICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCi0gICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzLCAiUUEgSXNzdWU6IHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtZGJnIGlzIGxpc3RlZCBpbiBQQUNLQUdFUyBtdWx0aXBsZSB0aW1lcywgdGhpcyBsZWFkcyB0byBwYWNrYWdpbmcgZXJyb3JzLiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIldBUk5JTkc6IiksIG1zZz1yZXMub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDI3OCkKLSAgICBkZWYgdGVzdF9zYW5pdHlfdW5zYWZlX3NjcmlwdF9yZWZlcmVuY2VzKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnV0FSTl9RQV9hcHBlbmQgPSAiIHVuc2FmZS1yZWZlcmVuY2VzLWluLXNjcmlwdHMiJykKLQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIGd6aXAnKQotICAgICAgICByZXMgPSBiaXRiYWtlKCJnemlwIC1mIC1jIHBhY2thZ2VfcWEiKQotICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlcywgIlFBIElzc3VlOiBnemlwIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsaW5lLCAiV0FSTklORzogUUEgSXNzdWU6IGd6aXAgbWVzc2FnZSBpcyBwcmVzZW50IGluIGJpdGJha2UncyBvdXRwdXQgYW5kIHNob3VsZG4ndCBiZTogJXMiICUgcmVzLm91dHB1dCkKLQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoIiIiCi1kb19pbnN0YWxsX2FwcGVuZF9wbi1nemlwICgpIHsKLQllY2hvICJcbiR7YmluZGlyfS90ZXN0IiA+PiAke0R9JHtiaW5kaXJ9L3pjYXQKLX0KLSIiIikKLSAgICAgICAgcmVzID0gYml0YmFrZSgiZ3ppcCAtZiAtYyBwYWNrYWdlX3FhIikKLSAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXMsICJRQSBJc3N1ZTogZ3ppcCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIldBUk5JTkc6IiksICJXQVJOSU5HOiBRQSBJc3N1ZTogZ3ppcCBtZXNzYWdlIGlzIG5vdCBwcmVzZW50IGluIGJpdGJha2UncyBvdXRwdXQ6ICVzIiAlIHJlcy5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTQyMSkKLSAgICBkZWYgdGVzdF9sYXllcl93aXRob3V0X2dpdF9kaXIoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IGxheWVyIGdpdCByZXZpc2lvbnMgYXJlIGRpc3BsYXllZCBhbmQgZG8gbm90IGZhaWwgd2l0aG91dCBnaXQgcmVwb3NpdG9yeQotICAgICAgICBFeHBlY3RlZDogICAgVGhlIGJ1aWxkIHRvIGJlIHN1Y2Nlc3NmdWwgYW5kIHdpdGhvdXQgImZhdGFsIiBlcnJvcnMKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGlycGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQotCi0gICAgICAgIGR1bW15X2xheWVyX25hbWUgPSAnbWV0YS1kdW1teScKLSAgICAgICAgZHVtbXlfbGF5ZXJfcGF0aCA9IG9zLnBhdGguam9pbihkaXJwYXRoLCBkdW1teV9sYXllcl9uYW1lKQotICAgICAgICBkdW1teV9sYXllcl9jb25mX2RpciA9IG9zLnBhdGguam9pbihkdW1teV9sYXllcl9wYXRoLCAnY29uZicpCi0gICAgICAgIG9zLm1ha2VkaXJzKGR1bW15X2xheWVyX2NvbmZfZGlyKQotICAgICAgICBkdW1teV9sYXllcl9jb25mX3BhdGggPSBvcy5wYXRoLmpvaW4oZHVtbXlfbGF5ZXJfY29uZl9kaXIsICdsYXllci5jb25mJykKLQotICAgICAgICBkdW1teV9sYXllcl9jb250ZW50ID0gJ0JCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IlxuJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIlxuJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJGSUxFX0NPTExFQ1RJT05TICs9ICIlcyJcbicgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCRklMRV9QQVRURVJOXyVzID0gIl4ke0xBWUVSRElSfS8iXG4nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkZJTEVfUFJJT1JJVFlfJXMgPSAiNiJcbicgJSAoZHVtbXlfbGF5ZXJfbmFtZSwgZHVtbXlfbGF5ZXJfbmFtZSwgZHVtbXlfbGF5ZXJfbmFtZSkKLQotICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShkdW1teV9sYXllcl9jb25mX3BhdGgsIGR1bW15X2xheWVyX2NvbnRlbnQpCi0KLSAgICAgICAgYmJsYXllcnNfY29uZiA9ICdCQkxBWUVSUyArPSAiJXMiXG4nICUgZHVtbXlfbGF5ZXJfcGF0aAotICAgICAgICBzZWxmLndyaXRlX2JibGF5ZXJzX2NvbmZpZyhiYmxheWVyc19jb25mKQotCi0gICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJwotCi0gICAgICAgIHJldCA9IGJpdGJha2UoJy1uICVzJyAlIHRlc3RfcmVjaXBlKQotCi0gICAgICAgIGVyciA9ICdmYXRhbDogTm90IGEgZ2l0IHJlcG9zaXRvcnknCi0KLSAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJwYXRoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oZXJyLCByZXQub3V0cHV0KQotCi0KLWNsYXNzIEJ1aWxkaGlzdG9yeVRlc3RzKEJ1aWxkaGlzdG9yeUJhc2UpOgotCi0gICAgQHRlc3RjYXNlKDI5MykKLSAgICBkZWYgdGVzdF9idWlsZGhpc3RvcnlfYmFzaWMoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24oJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihnZXRfYmJfdmFyKCdCVUlMREhJU1RPUllfRElSJykpLCAiYnVpbGRoaXN0b3J5IGRpciB3YXMgbm90IGNyZWF0ZWQuIikKLQotICAgIEB0ZXN0Y2FzZSgyOTQpCi0gICAgZGVmIHRlc3RfYnVpbGRoaXN0b3J5X2J1aWxkdGltZV9wcl9iYWNrd2FyZHMoc2VsZik6Ci0gICAgICAgIHRhcmdldCA9ICd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJwotICAgICAgICBlcnJvciA9ICJFUlJPUjouKlFBIElzc3VlOiBQYWNrYWdlIHZlcnNpb24gZm9yIHBhY2thZ2UgJXMgd2VudCBiYWNrd2FyZHMgd2hpY2ggd291bGQgYnJlYWsgcGFja2FnZSBmZWVkcyBmcm9tICguKi1yMS4qIHRvIC4qLXIwLiopIiAlIHRhcmdldAotICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIxXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249VHJ1ZSkKLSAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMFwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPUZhbHNlLCBleHBlY3RfZXJyb3I9VHJ1ZSwgZXJyb3JfcmVnZXg9ZXJyb3IpCi0KLWNsYXNzIEFyY2hpdmVyVGVzdChvZVNlbGZUZXN0KToKLSAgICBAdGVzdGNhc2UoOTI2KQotICAgIGRlZiB0ZXN0X2FyY2hfd29ya19kaXJfYW5kX2V4cG9ydF9zb3VyY2Uoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IGZvciBhcmNoaXZpbmcgdGhlIHdvcmsgZGlyZWN0b3J5IGFuZCBleHBvcnRpbmcgdGhlIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUICs9IFwiYXJjaGl2ZXJcIlxuQVJDSElWRVJfTU9ERVtzcmNdID0gXCJvcmlnaW5hbFwiXG5BUkNISVZFUl9NT0RFW3NycG1dID0gXCIxXCIiKQotICAgICAgICByZXMgPSBiaXRiYWtlKCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIiwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDAsICJcbkNvdWxkbid0IGJ1aWxkIHhjdXJzb3J0cmFuc3BhcmVudHRoZW1lLlxuYml0YmFrZSBvdXRwdXQgJXMiICUgcmVzLm91dHB1dCkKLSAgICAgICAgZGVwbG95X2Rpcl9zcmMgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX1NSQycpCi0gICAgICAgIHBrZ3NfcGF0aCA9IGcuZ2xvYihzdHIoZGVwbG95X2Rpcl9zcmMpICsgIi9hbGxhcmNoKi94Y3VycyoiKQotICAgICAgICBzcmNfZmlsZV9nbG9iID0gc3RyKHBrZ3NfcGF0aFswXSkgKyAiL3hjdXJzb3IqLnNyYy5ycG0iCi0gICAgICAgIHRhcl9maWxlX2dsb2IgPSBzdHIocGtnc19wYXRoWzBdKSArICIveGN1cnNvcioudGFyLmd6IgotICAgICAgICBzZWxmLmFzc2VydFRydWUoKGcuZ2xvYihzcmNfZmlsZV9nbG9iKSBhbmQgZy5nbG9iKHRhcl9maWxlX2dsb2IpKSwgIkNvdWxkbid0IGZpbmQgLnNyYy5ycG0gYW5kIC50YXIuZ3ogZmlsZXMgdW5kZXIgJXMvYWxsYXJjaCoveGN1cnNvcioiICUgZGVwbG95X2Rpcl9zcmMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDk5MTViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weQpAQCAtMCwwICsxLDI3OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworaW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgZ2xvYgoraW1wb3J0IGVycm5vCitmcm9tIHVuaXR0ZXN0LnV0aWwgaW1wb3J0IHNhZmVfcmVwcgorCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcgorZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQorCitjbGFzcyBPRVNlbGZ0ZXN0VGVzdENhc2UoT0VUZXN0Q2FzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9InJ1blRlc3QiKToKKyAgICAgICAgc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzID0gW10KKyAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDYXNlLCBzZWxmKS5fX2luaXRfXyhtZXRob2ROYW1lKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDYXNlLCBjbHMpLnNldFVwQ2xhc3MoKQorCisgICAgICAgIGNscy50ZXN0bGF5ZXJfcGF0aCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ3Rlc3RsYXllcl9wYXRoJ10KKyAgICAgICAgY2xzLmJ1aWxkZGlyID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snYnVpbGRkaXInXQorCisgICAgICAgIGNscy5sb2NhbGNvbmZfcGF0aCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2xvY2FsY29uZiddCisgICAgICAgIGNscy5sb2NhbGNvbmZfYmFja3VwID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddCisgICAgICAgIGNscy5sb2NhbF9iYmxheWVyc19wYXRoID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snYmJsYXllcnMnXQorICAgICAgICBjbHMubG9jYWxfYmJsYXllcnNfYmFja3VwID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snYmJsYXllcnNfY2xhc3NfYmFja3VwJ10KKworICAgICAgICBjbHMudGVzdGluY19wYXRoID0gb3MucGF0aC5qb2luKGNscy50Yy5jb25maWdfcGF0aHNbJ2J1aWxkZGlyJ10sCisgICAgICAgICAgICAgICAgImNvbmYvc2VsZnRlc3QuaW5jIikKKyAgICAgICAgY2xzLnRlc3RpbmNfYmJsYXllcnNfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGMuY29uZmlnX3BhdGhzWydidWlsZGRpciddLAorICAgICAgICAgICAgICAgICJjb25mL2JibGF5ZXJzLmluYyIpCisgICAgICAgIGNscy5tYWNoaW5laW5jX3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRjLmNvbmZpZ19wYXRoc1snYnVpbGRkaXInXSwKKyAgICAgICAgICAgICAgICAiY29uZi9tYWNoaW5lLmluYyIpCisKKyAgICAgICAgY2xzLl90cmFja19mb3JfY2xlYW51cCA9IFsKKyAgICAgICAgICAgIGNscy50ZXN0aW5jX3BhdGgsIGNscy50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsCisgICAgICAgICAgICBjbHMubWFjaGluZWluY19wYXRoLCBjbHMubG9jYWxjb25mX2JhY2t1cCwKKyAgICAgICAgICAgIGNscy5sb2NhbF9iYmxheWVyc19iYWNrdXBdCisKKyAgICAgICAgY2xzLmFkZF9pbmNsdWRlKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yZW1vdmVfaW5jbHVkZSgpCisgICAgICAgIGNscy5yZW1vdmVfaW5jX2ZpbGVzKCkKKyAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDYXNlLCBjbHMpLnRlYXJEb3duQ2xhc3MoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGFkZF9pbmNsdWRlKGNscyk6CisgICAgICAgIGlmICIjaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdCIgXAorICAgICAgICAgICAgbm90IGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpKToKKyAgICAgICAgICAgICAgICBjbHMubG9nZ2VyLmluZm8oIkFkZGluZzogXCJpbmNsdWRlIHNlbGZ0ZXN0LmluY1wiIGluICVzIiAlIG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSkKKyAgICAgICAgICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiXG4jaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdFxuaW5jbHVkZSBtYWNoaW5lLmluY1xuaW5jbHVkZSBzZWxmdGVzdC5pbmMiKQorCisgICAgICAgIGlmICIjaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdCIgXAorICAgICAgICAgICAgbm90IGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpKToKKyAgICAgICAgICAgICAgICBjbHMubG9nZ2VyLmluZm8oIkFkZGluZzogXCJpbmNsdWRlIGJibGF5ZXJzLmluY1wiIGluIGJibGF5ZXJzLmNvbmYiKQorICAgICAgICAgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIiksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0XG5pbmNsdWRlIGJibGF5ZXJzLmluYyIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcmVtb3ZlX2luY2x1ZGUoY2xzKToKKyAgICAgICAgaWYgIiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0LnB5IiBcCisgICAgICAgICAgICBpbiBmdG9vbHMucmVhZF9maWxlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSk6CisgICAgICAgICAgICAgICAgY2xzLmxvZ2dlci5pbmZvKCJSZW1vdmluZyB0aGUgaW5jbHVkZSBmcm9tIGxvY2FsLmNvbmYiKQorICAgICAgICAgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QucHlcbmluY2x1ZGUgbWFjaGluZS5pbmNcbmluY2x1ZGUgc2VsZnRlc3QuaW5jIikKKworICAgICAgICBpZiAiI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QucHkiIFwKKyAgICAgICAgICAgIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpKToKKyAgICAgICAgICAgICAgICBjbHMubG9nZ2VyLmluZm8oIlJlbW92aW5nIHRoZSBpbmNsdWRlIGZyb20gYmJsYXllcnMuY29uZiIpCisgICAgICAgICAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiXG4jaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weVxuaW5jbHVkZSBiYmxheWVycy5pbmMiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJlbW92ZV9pbmNfZmlsZXMoY2xzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL3NlbGZ0ZXN0LmluYyIpKQorICAgICAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoY2xzLnRlc3RsYXllcl9wYXRoKToKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgZiA9PSAndGVzdF9yZWNpcGUuaW5jJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4ocm9vdCwgZikpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIGluY2xfZmlsZSBpbiBbJ2NvbmYvYmJsYXllcnMuaW5jJywgJ2NvbmYvbWFjaGluZS5pbmMnXToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgaW5jbF9maWxlKSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q2FzZSwgc2VsZikuc2V0VXAoKQorICAgICAgICBvcy5jaGRpcihzZWxmLmJ1aWxkZGlyKQorICAgICAgICAjIENoZWNrIGlmIGxvY2FsLmNvbmYgb3IgYmJsYXllcnMuY29uZiBmaWxlcyBiYWNrdXAgZXhpc3RzCisgICAgICAgICMgZnJvbSBhIHByZXZpb3VzIGZhaWxlZCB0ZXN0IGFuZCByZXN0b3JlIHRoZW0KKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5sb2NhbGNvbmZfYmFja3VwKSBvciBvcy5wYXRoLmlzZmlsZSgKKyAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiXAorRm91bmQgYSBsb2NhbC5jb25mIGFuZC9vciBiYmxheWVycy5jb25mIGJhY2t1cCBmcm9tIGEgcHJldmlvdXNseSBhYm9ydGVkIHRlc3QuXAorUmVzdG9yaW5nIHRoZXNlIGZpbGVzIG5vdywgYnV0IHRlc3RzIHNob3VsZCBiZSByZS1leGVjdXRlZCBmcm9tIGEgY2xlYW4gZW52aXJvbm1lbnRcCit0byBlbnN1cmUgYWNjdXJhdGUgcmVzdWx0cy4iKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsY29uZl9iYWNrdXAsIHNlbGYubG9jYWxjb25mX3BhdGgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgYmFja3VwIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsY29uZl9wYXRoLCBzZWxmLmxvY2FsY29uZl9iYWNrdXApCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoLCBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDcmVhdGluZyBsb2NhbC5jb25mIGFuZCBiYmxheWVycy5jb25mIGJhY2t1cHMuIikKKyAgICAgICAgIyB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHByZXZpb3VzIHRlc3QgbGVmdCBhcm91bmQgaW4gY29uZmlnIG9yIGluYyBmaWxlcworICAgICAgICAjIGlmIGl0IGZhaWxlZCBzbyB3ZSBuZWVkIGEgZnJlc2ggc3RhcnQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYudGVzdGluY19wYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoc2VsZi50ZXN0bGF5ZXJfcGF0aCk6CisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBpZiBmID09ICd0ZXN0X3JlY2lwZS5pbmMnOgorICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHJvb3QsIGYpKQorCisgICAgICAgIGZvciBpbmNsX2ZpbGUgaW4gW3NlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBzZWxmLm1hY2hpbmVpbmNfcGF0aF06CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGluY2xfZmlsZSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgaWYgc2VsZi50Yy5jdXN0b21tYWNoaW5lOgorICAgICAgICAgICAgbWFjaGluZV9jb25mID0gJ01BQ0hJTkUgPz89ICIlcyJcbicgJSBzZWxmLnRjLmN1c3RvbW1hY2hpbmUKKyAgICAgICAgICAgIHNlbGYuc2V0X21hY2hpbmVfY29uZmlnKG1hY2hpbmVfY29uZikKKworICAgICAgICAjIHRlc3RzIG1pZ2h0IG5lZWQgdGhlaXIgb3duIHNldHVwCisgICAgICAgICMgYnV0IGlmIHRoZXkgb3ZlcndyaXRlIHRoaXMgb25lIHRoZXkgaGF2ZSB0byBjYWxsCisgICAgICAgICMgc3VwZXIgZWFjaCB0aW1lLCBzbyBsZXQncyBnaXZlIHRoZW0gYW4gYWx0ZXJuYXRpdmUKKyAgICAgICAgc2VsZi5zZXRVcExvY2FsKCkKKworICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kczoKKyAgICAgICAgICAgIGZhaWxlZF9leHRyYV9jb21tYW5kcyA9IFtdCisgICAgICAgICAgICBmb3IgY29tbWFuZCBpbiBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHM6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNvbW1hbmQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0LnN0YXR1cyA9PSAgMDoKKyAgICAgICAgICAgICAgICAgICAgZmFpbGVkX2V4dHJhX2NvbW1hbmRzLmFwcGVuZChjb21tYW5kKQorICAgICAgICAgICAgaWYgZmFpbGVkX2V4dHJhX2NvbW1hbmRzOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoInRlYXJEb3duIGNvbW1hbmRzIGhhdmUgZmFpbGVkOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgZmFpbGVkX2V4dHJhX2NvbW1hbmRzKSkpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRyeWluZyB0byBtb3ZlIG9uLiIpCisgICAgICAgICAgICBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHMgPSBbXQorCisgICAgICAgIGlmIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5fdHJhY2tfZm9yX2NsZWFudXA6CisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUocGF0aCkKKyAgICAgICAgICAgIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwID0gW10KKworICAgICAgICBzZWxmLnRlYXJEb3duTG9jYWwoKQorICAgICAgICBzdXBlcihPRVNlbGZ0ZXN0VGVzdENhc2UsIHNlbGYpLnRlYXJEb3duKCkKKworICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oc2VsZiwgY29tbWFuZCk6CisgICAgICAgICIiIkFkZCB0ZXN0IHNwZWNpZmljIGNvbW1hbmRzIHRvIHRoZSB0ZWFyRG93biBtZXRob2QiIiIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyBjb21tYW5kICclcycgdG8gdGVhckRvd24gZm9yIHRoaXMgdGVzdC4iICUgY29tbWFuZCkKKyAgICAgICAgc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzLmFwcGVuZChjb21tYW5kKQorCisgICAgZGVmIHRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJBZGQgdGVzdCBzcGVjaWZpYyBmaWxlcyBvciBkaXJlY3RvcmllcyB0byBiZSByZW1vdmVkIGluIHRoZSB0ZWFyRG93biBtZXRob2QiIiIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyBwYXRoICclcycgdG8gYmUgY2xlYW5lZCB1cCB3aGVuIHRlc3QgaXMgb3ZlciIgJSBwYXRoKQorICAgICAgICBzZWxmLl90cmFja19mb3JfY2xlYW51cC5hcHBlbmQocGF0aCkKKworICAgIGRlZiB3cml0ZV9jb25maWcoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIHRvIDxidWlsZGRpcj4vY29uZi9zZWxmdGVzdC5pbmMiIiIKKworICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiV3JpdGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpCisKKyAgICAgICAgaWYgc2VsZi50Yy5jdXN0b21tYWNoaW5lIGFuZCAnTUFDSElORScgaW4gZGF0YToKKyAgICAgICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ01BQ0hJTkUgb3ZlcnJpZGRlbjogJXMnICUgbWFjaGluZSkKKworICAgIGRlZiBhcHBlbmRfY29uZmlnKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJBcHBlbmQgdG8gPGJ1aWxkZGlyPi9jb25mL3NlbGZ0ZXN0LmluYyIiIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQXBwZW5kaW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpKQorICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpCisKKyAgICAgICAgaWYgc2VsZi50Yy5jdXN0b21tYWNoaW5lIGFuZCAnTUFDSElORScgaW4gZGF0YToKKyAgICAgICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ01BQ0hJTkUgb3ZlcnJpZGRlbjogJXMnICUgbWFjaGluZSkKKworICAgIGRlZiByZW1vdmVfY29uZmlnKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJSZW1vdmUgZGF0YSBmcm9tIDxidWlsZGRpcj4vY29uZi9zZWxmdGVzdC5pbmMiIiIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGZyb206ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkpCisgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKQorCisgICAgZGVmIHJlY2lwZWluYyhzZWxmLCByZWNpcGUpOgorICAgICAgICAiIiJSZXR1cm4gYWJzb2x1dGUgcGF0aCBvZiBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlLCAndGVzdF9yZWNpcGUuaW5jJykKKworICAgIGRlZiB3cml0ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgdG8gbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIiIiCisgICAgICAgIGluY19maWxlID0gc2VsZi5yZWNpcGVpbmMocmVjaXBlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiV3JpdGluZyB0bzogJXNcbiVzXG4iICUgKGluY19maWxlLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoaW5jX2ZpbGUsIGRhdGEpCisgICAgICAgIHJldHVybiBpbmNfZmlsZQorCisgICAgZGVmIGFwcGVuZF9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlLCBkYXRhKToKKyAgICAgICAgIiIiQXBwZW5kIGRhdGEgdG8gbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIiIiCisgICAgICAgIGluY19maWxlID0gc2VsZi5yZWNpcGVpbmMocmVjaXBlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQXBwZW5kaW5nIHRvOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQorICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoaW5jX2ZpbGUsIGRhdGEpCisgICAgICAgIHJldHVybiBpbmNfZmlsZQorCisgICAgZGVmIHJlbW92ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlLCBkYXRhKToKKyAgICAgICAgIiIiUmVtb3ZlIGRhdGEgZnJvbSBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKKyAgICAgICAgaW5jX2ZpbGUgPSBzZWxmLnJlY2lwZWluYyhyZWNpcGUpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBmcm9tOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQorICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShpbmNfZmlsZSwgZGF0YSkKKworICAgIGRlZiBkZWxldGVfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSk6CisgICAgICAgICIiIkRlbGV0ZSBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMgZmlsZSIiIgorICAgICAgICBpbmNfZmlsZSA9IHNlbGYucmVjaXBlaW5jKHJlY2lwZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkRlbGV0aW5nIGZpbGU6ICVzIiAlIGluY19maWxlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5yZW1vdmUoaW5jX2ZpbGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgIGRlZiB3cml0ZV9iYmxheWVyc19jb25maWcoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIHRvIDxidWlsZGRpcj4vY29uZi9iYmxheWVycy5pbmMiIiIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkpCisgICAgICAgIGZ0b29scy53cml0ZV9maWxlKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKQorCisgICAgZGVmIGFwcGVuZF9iYmxheWVyc19jb25maWcoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIkFwcGVuZCB0byA8YnVpbGRkaXI+L2NvbmYvYmJsYXllcnMuaW5jIiIiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBcHBlbmRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkpCisgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkKKworICAgIGRlZiByZW1vdmVfYmJsYXllcnNfY29uZmlnKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJSZW1vdmUgZGF0YSBmcm9tIDxidWlsZGRpcj4vY29uZi9iYmxheWVycy5pbmMiIiIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGZyb206ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkpCisgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKQorCisgICAgZGVmIHNldF9tYWNoaW5lX2NvbmZpZyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgdG8gPGJ1aWxkZGlyPi9jb25mL21hY2hpbmUuaW5jIiIiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi5tYWNoaW5laW5jX3BhdGgsIGRhdGEpKQorICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShzZWxmLm1hY2hpbmVpbmNfcGF0aCwgZGF0YSkKKworICAgICMgY2hlY2sgZG9lcyBwYXRoIGV4aXN0CisgICAgZGVmIGFzc2VydEV4aXN0cyhzZWxmLCBleHByLCBtc2c9Tm9uZSk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhleHByKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCAiJXMgZG9lcyBub3QgZXhpc3QiICUgc2FmZV9yZXByKGV4cHIpKQorICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG1zZykKKworICAgICMgY2hlY2sgZG9lcyBwYXRoIG5vdCBleGlzdAorICAgIGRlZiBhc3NlcnROb3RFeGlzdHMoc2VsZiwgZXhwciwgbXNnPU5vbmUpOgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhleHByKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCAiJXMgZXhpc3RzIHdoZW4gaXQgc2hvdWxkIG5vdCIgJSBzYWZlX3JlcHIoZXhwcikpCisgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvX3NzdGF0ZXRlc3RzX25vYXV0by5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL19zc3RhdGV0ZXN0c19ub2F1dG8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU1ODk2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL19zc3RhdGV0ZXN0c19ub2F1dG8ucHkKQEAgLTAsMCArMSw5MiBAQAoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCisKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2VzLnNzdGF0ZSBpbXBvcnQgU1N0YXRlQmFzZQorCisKK2NsYXNzIFJlYnVpbGRGcm9tU1N0YXRlKFNTdGF0ZUJhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CisgICAgICAgIHN1cGVyKFJlYnVpbGRGcm9tU1N0YXRlLCBzZWxmKS5zZXRVcENsYXNzKCkKKyAgICAgICAgc2VsZi5idWlsZGRpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSkKKworICAgIGRlZiBnZXRfZGVwX3RhcmdldHMoc2VsZiwgcHJpbWFyeV90YXJnZXRzKToKKyAgICAgICAgZm91bmRfdGFyZ2V0cyA9IFtdCisgICAgICAgIGJpdGJha2UoIi1nICIgKyAnICcuam9pbihtYXAoc3RyLCBwcmltYXJ5X3RhcmdldHMpKSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAncG4tYnVpbGRsaXN0JyksICdyJykgYXMgcG5maWxlOgorICAgICAgICAgICAgZm91bmRfdGFyZ2V0cyA9IHBuZmlsZS5yZWFkKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHJldHVybiBmb3VuZF90YXJnZXRzCisKKyAgICBkZWYgY29uZmlndXJlX2J1aWxkZGlyKHNlbGYsIGJ1aWxkZGlyKToKKyAgICAgICAgb3MubWtkaXIoYnVpbGRkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoYnVpbGRkaXIpCisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYnKSkKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSwgJ2NvbmYvbG9jYWwuY29uZicpLCBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL2xvY2FsLmNvbmYnKSkKKyAgICAgICAgY29uZmlnID0ge30KKyAgICAgICAgY29uZmlnWydkZWZhdWx0X3NzdGF0ZV9kaXInXSA9ICJTU1RBVEVfRElSID89IFwiJHtUT1BESVJ9L3NzdGF0ZS1jYWNoZVwiIgorICAgICAgICBjb25maWdbJ251bGxfc3N0YXRlX21pcnJvcnMnXSA9ICJTU1RBVEVfTUlSUk9SUyA9IFwiXCIiCisgICAgICAgIGNvbmZpZ1snZGVmYXVsdF90bXBfZGlyJ10gPSAiVE1QRElSID0gXCIke1RPUERJUn0vdG1wXCIiCisgICAgICAgIGZvciBrZXkgaW4gY29uZmlnOgorICAgICAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvc2VsZnRlc3QuaW5jJyksIGNvbmZpZ1trZXldKQorICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpLCAnY29uZi9iYmxheWVycy5jb25mJyksIG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvYmJsYXllcnMuY29uZicpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpLCAnY29uZi9hdXRvLmNvbmYnKSwgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZi9hdXRvLmNvbmYnKSkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIGhhcmRsaW5rX3RyZWUoc2VsZiwgc3JjLCBkc3QpOgorICAgICAgICBvcy5ta2Rpcihkc3QpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0KQorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzcmMpOgorICAgICAgICAgICAgaWYgcm9vdCA9PSBzcmM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkc3QsIHJvb3Quc3BsaXQoc3JjKVsxXVsxOl0pKQorICAgICAgICAgICAgZm9yIHNzdGF0ZV9maWxlIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIG9zLmxpbmsob3MucGF0aC5qb2luKHJvb3QsIHNzdGF0ZV9maWxlKSwgb3MucGF0aC5qb2luKGRzdCwgcm9vdC5zcGxpdChzcmMpWzFdWzE6XSwgc3N0YXRlX2ZpbGUpKQorCisgICAgZGVmIHJ1bl90ZXN0X3NzdGF0ZV9yZWJ1aWxkKHNlbGYsIHByaW1hcnlfdGFyZ2V0cywgcmVsb2NhdGU9RmFsc2UsIHJlYnVpbGRfZGVwZW5kZW5jaWVzPUZhbHNlKToKKyAgICAgICAgYnVpbGRBID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdidWlsZEEnKQorICAgICAgICBpZiByZWxvY2F0ZToKKyAgICAgICAgICAgIGJ1aWxkQiA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnYnVpbGRCJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1aWxkQiA9IGJ1aWxkQQorCisgICAgICAgIGlmIHJlYnVpbGRfZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgcmVidWlsZF90YXJnZXRzID0gc2VsZi5nZXRfZGVwX3RhcmdldHMocHJpbWFyeV90YXJnZXRzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVidWlsZF90YXJnZXRzID0gcHJpbWFyeV90YXJnZXRzCisKKyAgICAgICAgc2VsZi5jb25maWd1cmVfYnVpbGRkaXIoYnVpbGRBKQorICAgICAgICBydW5DbWQoKCIuICVzL29lLWluaXQtYnVpbGQtZW52ICVzICYmICIgJSAoZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgYnVpbGRBKSkgKyAnYml0YmFrZSAgJyArICcgJy5qb2luKG1hcChzdHIsIHByaW1hcnlfdGFyZ2V0cykpLCBzaGVsbD1UcnVlLCBleGVjdXRhYmxlPScvYmluL2Jhc2gnKQorICAgICAgICBzZWxmLmhhcmRsaW5rX3RyZWUob3MucGF0aC5qb2luKGJ1aWxkQSwgJ3NzdGF0ZS1jYWNoZScpLCBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3NzdGF0ZS1jYWNoZS1idWlsZEEnKSkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShidWlsZEEpCisKKyAgICAgICAgZmFpbGVkX3JlYnVpbGQgPSBbXQorICAgICAgICBmYWlsZWRfY2xlYW5zc3RhdGUgPSBbXQorICAgICAgICBmb3IgdGFyZ2V0IGluIHJlYnVpbGRfdGFyZ2V0czoKKyAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX2J1aWxkZGlyKGJ1aWxkQikKKyAgICAgICAgICAgIHNlbGYuaGFyZGxpbmtfdHJlZShvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3NzdGF0ZS1jYWNoZS1idWlsZEEnKSwgb3MucGF0aC5qb2luKGJ1aWxkQiwgJ3NzdGF0ZS1jYWNoZScpKQorCisgICAgICAgICAgICByZXN1bHRfY2xlYW5zc3RhdGUgPSBydW5DbWQoKCIuICVzL29lLWluaXQtYnVpbGQtZW52ICVzICYmICIgJSAoZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgYnVpbGRCKSkgKyAnYml0YmFrZSAtY2NsZWFuc3N0YXRlICcgKyB0YXJnZXQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgc2hlbGw9VHJ1ZSwgZXhlY3V0YWJsZT0nL2Jpbi9iYXNoJykKKyAgICAgICAgICAgIGlmIG5vdCByZXN1bHRfY2xlYW5zc3RhdGUuc3RhdHVzID09IDA6CisgICAgICAgICAgICAgICAgZmFpbGVkX2NsZWFuc3N0YXRlLmFwcGVuZCh0YXJnZXQpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShidWlsZEIpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcmVzdWx0X2J1aWxkID0gcnVuQ21kKCgiLiAlcy9vZS1pbml0LWJ1aWxkLWVudiAlcyAmJiAiICUgKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksIGJ1aWxkQikpICsgJ2JpdGJha2UgJyArIHRhcmdldCwgaWdub3JlX3N0YXR1cz1UcnVlLCBzaGVsbD1UcnVlLCBleGVjdXRhYmxlPScvYmluL2Jhc2gnKQorICAgICAgICAgICAgaWYgbm90IHJlc3VsdF9idWlsZC5zdGF0dXMgPT0gMDoKKyAgICAgICAgICAgICAgICBmYWlsZWRfcmVidWlsZC5hcHBlbmQodGFyZ2V0KQorCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGJ1aWxkQikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhaWxlZF9yZWJ1aWxkLCBtc2c9IlRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGZhaWxlZCB0byByZWJ1aWxkOiAlcyIgJSAnICcuam9pbihtYXAoc3RyLCBmYWlsZWRfcmVidWlsZCkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhaWxlZF9jbGVhbnNzdGF0ZSwgbXNnPSJUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBmYWlsZWQgY2xlYW5zc3RhdGUoYWxsIG90aGVycyBoYXZlIHBhc3NlZCBib3RoIGNsZWFuc3N0YXRlIGFuZCByZWJ1aWxkIGZyb20gc3N0YXRlIHRlc3RzKTogJXMiICUgJyAnLmpvaW4obWFwKHN0ciwgZmFpbGVkX2NsZWFuc3N0YXRlKSkpCisKKyAgICBkZWYgdGVzdF9zc3RhdGVfcmVsb2NhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfcmVidWlsZChbJ2NvcmUtaW1hZ2Utc2F0by1zZGsnXSwgcmVsb2NhdGU9VHJ1ZSwgcmVidWlsZF9kZXBlbmRlbmNpZXM9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3NzdGF0ZV9yZWJ1aWxkKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9yZWJ1aWxkKFsnY29yZS1pbWFnZS1zYXRvLXNkayddLCByZWxvY2F0ZT1GYWxzZSwgcmVidWlsZF9kZXBlbmRlbmNpZXM9VHJ1ZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYxYTUyMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5CkBAIC0wLDAgKzEsMTE4IEBACitpbXBvcnQgb3MKK2ltcG9ydCBnbG9iCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXJzCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgQXJjaGl2ZXIoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBPRVRlc3RJRCgxMzQ1KQorICAgIGRlZiB0ZXN0X2FyY2hpdmVyX2FsbG93c190b19maWx0ZXJfb25fcmVjaXBlX25hbWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGhlIGFyY2hpdmVyIHNob3VsZCBvZmZlciB0aGUgcG9zc2liaWxpdHkgdG8gZmlsdGVyIG9uIHRoZSByZWNpcGUuICgjNjkyOSkKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIEluY2x1ZGVkIHJlY2lwZSAoYnVzeWJveCkgc2hvdWxkIGJlIGluY2x1ZGVkCisgICAgICAgICAgICAgICAgICAgICAyLiBFeGNsdWRlZCByZWNpcGUgKHpsaWIpIHNob3VsZCBiZSBleGNsdWRlZAorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICBpbmNsdWRlX3JlY2lwZSA9ICdidXN5Ym94JworICAgICAgICBleGNsdWRlX3JlY2lwZSA9ICd6bGliJworCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUE5fSU5DTFVERSA9ICIlcyJcbicgJSBpbmNsdWRlX3JlY2lwZQorICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUE5fRVhDTFVERSA9ICIlcyJcbicgJSBleGNsdWRlX3JlY2lwZQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcyAlcycgJSAoaW5jbHVkZV9yZWNpcGUsIGV4Y2x1ZGVfcmVjaXBlKSkKKyAgICAgICAgYml0YmFrZSgiLWMgZGVwbG95X2FyY2hpdmVzICVzICVzIiAlIChpbmNsdWRlX3JlY2lwZSwgZXhjbHVkZV9yZWNpcGUpKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJywgJ1RBUkdFVF9TWVMnXSkKKyAgICAgICAgc3JjX3BhdGggPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snVEFSR0VUX1NZUyddKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBpbmNsdWRlX3JlY2lwZSB3YXMgaW5jbHVkZWQKKyAgICAgICAgaW5jbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGggKyAnLyVzLSonICUgaW5jbHVkZV9yZWNpcGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGluY2x1ZGVkLicgJSBpbmNsdWRlX3JlY2lwZSkKKworICAgICAgICAjIENoZWNrIHRoYXQgZXhjbHVkZV9yZWNpcGUgd2FzIGV4Y2x1ZGVkCisgICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoICsgJy8lcy0qJyAlIGV4Y2x1ZGVfcmVjaXBlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIGV4Y2x1ZGVfcmVjaXBlKQorCisgICAgQE9FVGVzdElEKDE5MDApCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfZmlsdGVyc19ieV90eXBlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIFRoZSBhcmNoaXZlciBpcyBkb2N1bWVudGVkIHRvIGZpbHRlciBvbiB0aGUgcmVjaXBlIHR5cGUuCisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBpbmNsdWRlZCByZWNpcGUgdHlwZSAodGFyZ2V0KSBzaG91bGQgYmUgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgIDIuIG90aGVyIHR5cGVzIHNob3VsZCBiZSBleGNsdWRlZAorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgorICAgICAgICAiIiIKKworICAgICAgICB0YXJnZXRfcmVjaXBlID0gJ2luaXRzY3JpcHRzJworICAgICAgICBuYXRpdmVfcmVjaXBlID0gJ3psaWItbmF0aXZlJworCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUkVDSVBFX1RZUEVTID0gInRhcmdldCJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMgJXMnICUgKHRhcmdldF9yZWNpcGUsIG5hdGl2ZV9yZWNpcGUpKQorICAgICAgICBiaXRiYWtlKCIlcyAtYyBkZXBsb3lfYXJjaGl2ZXMgJXMiICUgKHRhcmdldF9yZWNpcGUsIG5hdGl2ZV9yZWNpcGUpKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJywgJ1RBUkdFVF9TWVMnLCAnQlVJTERfU1lTJ10pCisgICAgICAgIHNyY19wYXRoX3RhcmdldCA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10pCisgICAgICAgIHNyY19wYXRoX25hdGl2ZSA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydCVUlMRF9TWVMnXSkKKworICAgICAgICAjIENoZWNrIHRoYXQgdGFyZ2V0X3JlY2lwZSB3YXMgaW5jbHVkZWQKKyAgICAgICAgaW5jbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfdGFyZ2V0ICsgJy8lcy0qJyAlIHRhcmdldF9yZWNpcGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGluY2x1ZGVkLicgJSB0YXJnZXRfcmVjaXBlKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBuYXRpdmVfcmVjaXBlIHdhcyBleGNsdWRlZAorICAgICAgICBleGNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF9uYXRpdmUgKyAnLyVzLSonICUgbmF0aXZlX3JlY2lwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSBuYXRpdmVfcmVjaXBlKQorCisgICAgQE9FVGVzdElEKDE5MDEpCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfZmlsdGVyc19ieV90eXBlX2FuZF9uYW1lKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgYXJjaGl2ZXMgYnkgcmVjaXBlIHR5cGUsIHRha2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lIGludG8gYWNjb3VudC4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGluY2x1ZGVkIHJlY2lwZSB0eXBlICh0YXJnZXQpIHNob3VsZCBiZSBpbmNsdWRlZAorICAgICAgICAgICAgICAgICAgICAgMi4gb3RoZXIgdHlwZXMgc2hvdWxkIGJlIGV4Y2x1ZGVkCisgICAgICAgICAgICAgICAgICAgICAzLiByZWNpcGUgYnkgbmFtZSBzaG91bGQgYmUgaW5jbHVkZWQgLyBleGNsdWRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRpbmcgcHJldmlvdXMgZGVjaXNpb24gYnkgdHlwZQorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgorICAgICAgICAiIiIKKworICAgICAgICB0YXJnZXRfcmVjaXBlcyA9IFsgJ2luaXRzY3JpcHRzJywgJ3psaWInIF0KKyAgICAgICAgbmF0aXZlX3JlY2lwZXMgPSBbICd1cGRhdGUtcmMuZC1uYXRpdmUnLCAnemxpYi1uYXRpdmUnIF0KKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1JFQ0lQRV9UWVBFUyA9ICJ0YXJnZXQiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9QTl9JTkNMVURFID0gIiVzIlxuJyAlIG5hdGl2ZV9yZWNpcGVzWzFdCisgICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9QTl9FWENMVURFID0gIiVzIlxuJyAlIHRhcmdldF9yZWNpcGVzWzFdCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzICVzJyAlICgnICcuam9pbih0YXJnZXRfcmVjaXBlcyksICcgJy5qb2luKG5hdGl2ZV9yZWNpcGVzKSkpCisgICAgICAgIGJpdGJha2UoJy1jIGRlcGxveV9hcmNoaXZlcyAlcyAlcycgJSAoJyAnLmpvaW4odGFyZ2V0X3JlY2lwZXMpLCAnICcuam9pbihuYXRpdmVfcmVjaXBlcykpKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJywgJ1RBUkdFVF9TWVMnLCAnQlVJTERfU1lTJ10pCisgICAgICAgIHNyY19wYXRoX3RhcmdldCA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10pCisgICAgICAgIHNyY19wYXRoX25hdGl2ZSA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydCVUlMRF9TWVMnXSkKKworICAgICAgICAjIENoZWNrIHRoYXQgdGFyZ2V0X3JlY2lwZVswXSBhbmQgbmF0aXZlX3JlY2lwZXNbMV0gd2VyZSBpbmNsdWRlZAorICAgICAgICBpbmNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF90YXJnZXQgKyAnLyVzLSonICUgdGFyZ2V0X3JlY2lwZXNbMF0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGluY2x1ZGVkLicgJSB0YXJnZXRfcmVjaXBlc1swXSkKKworICAgICAgICBpbmNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF9uYXRpdmUgKyAnLyVzLSonICUgbmF0aXZlX3JlY2lwZXNbMV0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGluY2x1ZGVkLicgJSBuYXRpdmVfcmVjaXBlc1sxXSkKKworICAgICAgICAjIENoZWNrIHRoYXQgbmF0aXZlX3JlY2lwZXNbMF0gYW5kIHRhcmdldF9yZWNpcGVzWzFdIHdlcmUgZXhjbHVkZWQKKyAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfbmF0aXZlICsgJy8lcy0qJyAlIG5hdGl2ZV9yZWNpcGVzWzBdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgZXhjbHVkZWQuJyAlIG5hdGl2ZV9yZWNpcGVzWzBdKQorCisgICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX3RhcmdldCArICcvJXMtKicgJSB0YXJnZXRfcmVjaXBlc1sxXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSB0YXJnZXRfcmVjaXBlc1sxXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JibGF5ZXJzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJsYXllcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBhMjI0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JibGF5ZXJzLnB5CkBAIC0wLDAgKzEsOTcgQEAKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBnZXRfYmJfdmFyCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBCaXRiYWtlTGF5ZXJzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAT0VUZXN0SUQoNzU2KQorICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd2Nyb3NzZGVwZW5kcyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWNyb3NzLWRlcGVuZHMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2FzcGVsbCcgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIk5vIGRlcGVuZGVuY2llcyB3ZXJlIHNob3duLiBiaXRiYWtlLWxheWVycyBzaG93LWNyb3NzLWRlcGVuZHMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDgzKQorICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd2xheWVycyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbWV0YS1zZWxmdGVzdCcgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIk5vIGxheWVycyB3ZXJlIHNob3duLiBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoOTMpCisgICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93YXBwZW5kcyhzZWxmKToKKyAgICAgICAgcmVjaXBlID0gInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUiCisgICAgICAgIGJiX2ZpbGUgPSBzZWxmLmdldF9yZWNpcGVfYmFzZW5hbWUocmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctYXBwZW5kcycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYl9maWxlIGluIHJlc3VsdC5vdXRwdXQsIG1zZz0iJXMgZmlsZSB3YXMgbm90IHJlY29nbmlzZWQuIGJpdGJha2UtbGF5ZXJzIHNob3ctYXBwZW5kcyBvdXRwdXQ6ICVzIiAlIChiYl9maWxlLCByZXN1bHQub3V0cHV0KSkKKworICAgIEBPRVRlc3RJRCg5MCkKKyAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3dvdmVybGF5ZWQoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1vdmVybGF5ZWQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2FzcGVsbCcgaW4gcmVzdWx0Lm91dHB1dCwgbXNnPSJhc3BlbGwgb3ZlcmxheWVkIHJlY2lwZSB3YXMgbm90IHJlY29nbmlzZWQgYml0YmFrZS1sYXllcnMgc2hvdy1vdmVybGF5ZWQgJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCg5NSkKKyAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX2ZsYXR0ZW4oc2VsZik6CisgICAgICAgIHJlY2lwZSA9ICJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIgorICAgICAgICByZWNpcGVfcGF0aCA9ICJyZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUiCisgICAgICAgIHJlY2lwZV9maWxlID0gc2VsZi5nZXRfcmVjaXBlX2Jhc2VuYW1lKHJlY2lwZSkKKyAgICAgICAgdGVzdG91dGRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAndGVzdF9iaXRiYWtlbGF5ZXJzX2ZsYXR0ZW4nKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNkaXIodGVzdG91dGRpciksIG1zZyA9ICJ0ZXN0X2JpdGJha2VsYXllcnNfZmxhdHRlbiBzaG91bGQgbm90IGV4aXN0IGF0IHRoaXMgcG9pbnQgaW4gdGltZSIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVzdG91dGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBmbGF0dGVuICVzJyAlIHRlc3RvdXRkaXIpCisgICAgICAgIGJiX2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdG91dGRpciwgcmVjaXBlX3BhdGgsIHJlY2lwZV9maWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoYmJfZmlsZSksIG1zZyA9ICJDYW5ub3QgZmluZCB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lXzAuMS4xLmJiIGluIHRoZSB0ZXN0X2JpdGJha2VsYXllcnNfZmxhdHRlbiBsb2NhbCBkaXIuIikKKyAgICAgICAgY29udGVudHMgPSBmdG9vbHMucmVhZF9maWxlKGJiX2ZpbGUpCisgICAgICAgIGZpbmRfaW5fY29udGVudHMgPSByZS5zZWFyY2goIiMjIyMjIGJiYXBwZW5kZWQgZnJvbSBtZXRhLXNlbGZ0ZXN0ICMjIyMjXG4oLipcbikqaW5jbHVkZSB0ZXN0X3JlY2lwZS5pbmMiLCBjb250ZW50cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfaW5fY29udGVudHMsIG1zZyA9ICJGbGF0dGVuaW5nIGxheWVycyBkaWQgbm90IHdvcmsuIGJpdGJha2UtbGF5ZXJzIGZsYXR0ZW4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExOTUpCisgICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19hZGRfcmVtb3ZlKHNlbGYpOgorICAgICAgICB0ZXN0X2xheWVyID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksICdtZXRhLXNrZWxldG9uJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCAiVGhpcyB0ZXN0IGNhbm5vdCBydW4gd2l0aCBtZXRhLXNrZWxldG9uIGluIGJibGF5ZXJzLmNvbmYuIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVzdF9sYXllcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCBtc2cgPSAiU29tZXRoaW5nIHdyb25nIGhhcHBlbmVkLiBtZXRhLXNrZWxldG9uIGxheWVyIHdhcyBub3QgYWRkZWQgdG8gY29uZi9iYmxheWVycy5jb25mLiAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSB0ZXN0X2xheWVyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJtZXRhLXNrZWxldG9uIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBhdCB0aGlzIHN0ZXAuICBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlc3RfbGF5ZXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgbXNnID0gIlNvbWV0aGluZyB3cm9uZyBoYXBwZW5lZC4gbWV0YS1za2VsZXRvbiBsYXllciB3YXMgbm90IGFkZGVkIHRvIGNvbmYvYmJsYXllcnMuY29uZi4gIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi9tZXRhLXNrZWxldG9uJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCBtc2cgPSAibWV0YS1za2VsZXRvbiBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYXQgdGhpcyBzdGVwLiAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEzODQpCisgICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93cmVjaXBlcyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdhc3BlbGw6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbXRkLXV0aWxzOicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvcmUtaW1hZ2UtbWluaW1hbDonLCByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyBtdGQtdXRpbHMnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdtdGQtdXRpbHM6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignYXNwZWxsOicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIGltYWdlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29yZS1pbWFnZS1taW5pbWFsJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbXRkLXV0aWxzOicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIGNtYWtlLHBrZ2NvbmZpZycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnByb3h5OicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ210ZC11dGlsczonLCByZXN1bHQub3V0cHV0KSAjIGRvZXNuJ3QgaW5oZXJpdCBlaXRoZXIKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignd2dldDonLCByZXN1bHQub3V0cHV0KSAjIGRvZXNuJ3QgaW5oZXJpdCBjbWFrZQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd3YWZmbGU6JywgcmVzdWx0Lm91dHB1dCkgIyBkb2Vzbid0IGluaGVyaXQgcGtnY29uZmlnCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIG5vbmV4aXN0ZW50Y2xhc3MnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBub25leGlzdGVudGNsYXNzIHNob3VsZCBoYXZlIGZhaWxlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VSUk9SOicsIHJlc3VsdC5vdXRwdXQpCisKKyAgICBkZWYgZ2V0X3JlY2lwZV9iYXNlbmFtZShzZWxmLCByZWNpcGUpOgorICAgICAgICByZWNpcGVfZmlsZSA9ICIiCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1mICVzIiAlIHJlY2lwZSkKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBpZiByZWNpcGUgaW4gbGluZToKKyAgICAgICAgICAgICAgICByZWNpcGVfZmlsZSA9IGxpbmUKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVfZmlsZSksIG1zZyA9ICJDYW4ndCBmaW5kIHJlY2lwZSBmaWxlIGZvciAlcyIgJSByZWNpcGUpCisgICAgICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZV9maWxlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM4MjA0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkKQEAgLTAsMCArMSwyNzkgQEAKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycworCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgQml0YmFrZVRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBkZWYgZ2V0bGluZShzZWxmLCByZXMsIGxpbmUpOgorICAgICAgICBmb3IgbCBpbiByZXMub3V0cHV0LnNwbGl0KCdcbicpOgorICAgICAgICAgICAgaWYgbGluZSBpbiBsOgorICAgICAgICAgICAgICAgIHJldHVybiBsCisKKyAgICBAT0VUZXN0SUQoNzg5KQorICAgIGRlZiB0ZXN0X3J1bl9iaXRiYWtlX2Zyb21fZGlyXzEoc2VsZik6CisgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnY29uZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdGJha2UoJy1lJykuc3RhdHVzLCAwLCBtc2cgPSAiYml0YmFrZSBjb3VsZG4ndCBydW4gZnJvbSBcImNvbmZcIiBkaXIiKQorCisgICAgQE9FVGVzdElEKDc5MCkKKyAgICBkZWYgdGVzdF9ydW5fYml0YmFrZV9mcm9tX2Rpcl8yKHNlbGYpOgorICAgICAgICBteV9lbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBteV9lbnZbJ0JCUEFUSCddID0gbXlfZW52WydCVUlMRERJUiddCisgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguZGlybmFtZShvcy5lbnZpcm9uWydCVUlMRERJUiddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRiYWtlKCctZScsIGVudj1teV9lbnYpLnN0YXR1cywgMCwgbXNnID0gImJpdGJha2UgY291bGRuJ3QgcnVuIGZyb20gYnVpbGRkaXIiKQorCisgICAgQE9FVGVzdElEKDgwNikKKyAgICBkZWYgdGVzdF9ldmVudF9oYW5kbGVyKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVCArPSBcInRlc3RfZXZlbnRzXCIiKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtNC1uYXRpdmUnKQorICAgICAgICBmaW5kX2J1aWxkX3N0YXJ0ZWQgPSByZS5zZWFyY2goIk5PVEU6IFRlc3QgZm9yIGJiXC5ldmVudFwuQnVpbGRTdGFydGVkKFxuLiopKk5PVEU6IEV4ZWN1dGluZyBSdW5RdWV1ZSBUYXNrcyIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGZpbmRfYnVpbGRfY29tcGxldGVkID0gcmUuc2VhcmNoKCJUYXNrcyBTdW1tYXJ5Oi4qKFxuLiopKk5PVEU6IFRlc3QgZm9yIGJiXC5ldmVudFwuQnVpbGRDb21wbGV0ZWQiLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9idWlsZF9zdGFydGVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2J1aWxkX2NvbXBsZXRlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ1Rlc3QgZm9yIGJiLmV2ZW50LkludmFsaWRFdmVudCcgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlwiVGVzdCBmb3IgYmIuZXZlbnQuSW52YWxpZEV2ZW50XCIgbWVzc2FnZSBmb3VuZCBkdXJpbmcgYml0YmFrZSBwcm9jZXNzLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMDMpCisgICAgZGVmIHRlc3RfbG9jYWxfc3N0YXRlKHNlbGYpOgorICAgICAgICBiaXRiYWtlKCdtNC1uYXRpdmUnKQorICAgICAgICBiaXRiYWtlKCdtNC1uYXRpdmUgLWNjbGVhbicpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ200LW5hdGl2ZScpCisgICAgICAgIGZpbmRfc2V0c2NlbmUgPSByZS5zZWFyY2goIm00LW5hdGl2ZS4qZG9fLipfc2V0c2NlbmUiLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9zZXRzY2VuZSwgbXNnID0gIk5vIFwibTQtbmF0aXZlLipkb18uKl9zZXRzY2VuZVwiIG1lc3NhZ2UgZm91bmQgZHVyaW5nIGJpdGJha2UgbTQtbmF0aXZlLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCApCisKKyAgICBAT0VUZXN0SUQoMTA1KQorICAgIGRlZiB0ZXN0X2JpdGJha2VfaW52YWxpZF9yZWNpcGUoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1iIGFzZGYnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiRVJST1I6IFVuYWJsZSB0byBmaW5kIGFueSByZWNpcGUgZmlsZSBtYXRjaGluZyAnYXNkZiciIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJUaG91Z2ggYXNkZiByZWNpcGUgZG9lc24ndCBleGlzdCwgYml0YmFrZSBkaWRuJ3Qgb3V0cHV0IGFueSBlcnIuIG1lc3NhZ2UuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEwNykKKyAgICBkZWYgdGVzdF9iaXRiYWtlX2ludmFsaWRfdGFyZ2V0KHNlbGYpOgorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdhc2RmJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoIkVSUk9SOiBOb3RoaW5nIFBST1ZJREVTICdhc2RmJyIgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlRob3VnaCBubyAnYXNkZicgdGFyZ2V0IGV4aXN0cywgYml0YmFrZSBkaWRuJ3Qgb3V0cHV0IGFueSBlcnIuIG1lc3NhZ2UuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEwNikKKyAgICBkZWYgdGVzdF93YXJuaW5nc19lcnJvcnMoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1iIGFzZGYnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIGZpbmRfd2FybmluZ3MgPSByZS5zZWFyY2goIlN1bW1hcnk6IFRoZXJlIHcuezIsM30/IFsxLTldWzAtOV0qIFdBUk5JTkcgbWVzc2FnZXMqIHNob3duIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgZmluZF9lcnJvcnMgPSByZS5zZWFyY2goIlN1bW1hcnk6IFRoZXJlIHcuezIsM30/IFsxLTldWzAtOV0qIEVSUk9SIG1lc3NhZ2VzKiBzaG93biIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX3dhcm5pbmdzLCBtc2c9IkRpZCBub3QgZmluZCB0aGUgbXVtYmVyIG9mIHdhcm5pbmdzIGF0IHRoZSBlbmQgb2YgdGhlIGJ1aWxkOlxuIiArIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2Vycm9ycywgbXNnPSJEaWQgbm90IGZpbmQgdGhlIG11bWJlciBvZiBlcnJvcnMgYXQgdGhlIGVuZCBvZiB0aGUgYnVpbGQ6XG4iICsgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMDgpCisgICAgZGVmIHRlc3RfaW52YWxpZF9wYXRjaChzZWxmKToKKyAgICAgICAgIyBUaGlzIHBhdGNoIGFscmVhZHkgZXhpc3RzIGluIFNSQ19VUkkgc28gYWRkaW5nIGl0IGFnYWluIHdpbGwgY2F1c2UgdGhlCisgICAgICAgICMgcGF0Y2ggdG8gZmFpbC4KKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbicsICdTUkNfVVJJICs9ICJmaWxlOi8vbWFuLTEuNWgxLW1ha2UucGF0Y2giJykKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIiIpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ21hbiAtYyBwYXRjaCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdtYW4nKQorICAgICAgICBiaXRiYWtlKCctY2NsZWFuIG1hbicpCisgICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzdWx0LCAiRnVuY3Rpb24gZmFpbGVkOiBwYXRjaF9kb19wYXRjaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkVSUk9SOiIpLCBtc2cgPSAiUmVwZWF0ZWQgcGF0Y2ggYXBwbGljYXRpb24gZGlkbid0IGZhaWwuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEzNTQpCisgICAgZGVmIHRlc3RfZm9yY2VfdGFza18xKHNlbGYpOgorICAgICAgICAjIHRlc3QgMSBmcm9tIGJ1ZyA1ODc1CisgICAgICAgIHRlc3RfcmVjaXBlID0gJ3psaWInCisgICAgICAgIHRlc3RfZGF0YSA9ICJNaWNyb3NvZnQgTWFkZSBObyBQcm9maXQgRnJvbSBBbnlvbmUncyBadW5lcyBZbyIKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRCcsICdQS0dERVNUJywgJ21hbmRpciddLCB0ZXN0X3JlY2lwZSkKKyAgICAgICAgaW1hZ2VfZGlyID0gYmJfdmFyc1snRCddCisgICAgICAgIHBrZ3NwbGl0X2RpciA9IGJiX3ZhcnNbJ1BLR0RFU1QnXQorICAgICAgICBtYW5fZGlyID0gYmJfdmFyc1snbWFuZGlyJ10KKworICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKKyAgICAgICAgYml0YmFrZSgnLWMgcGFja2FnZSAtZiAlcycgJSB0ZXN0X3JlY2lwZSkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKKworICAgICAgICBtYW5fZmlsZSA9IG9zLnBhdGguam9pbihpbWFnZV9kaXIgKyBtYW5fZGlyLCAnbWFuMy96bGliLjMnKQorICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUobWFuX2ZpbGUsIHRlc3RfZGF0YSkKKyAgICAgICAgYml0YmFrZSgnLWMgcGFja2FnZSAtZiAlcycgJSB0ZXN0X3JlY2lwZSkKKworICAgICAgICBtYW5fc3BsaXRfZmlsZSA9IG9zLnBhdGguam9pbihwa2dzcGxpdF9kaXIsICd6bGliLWRvYycgKyBtYW5fZGlyLCAnbWFuMy96bGliLjMnKQorICAgICAgICBtYW5fc3BsaXRfY29udGVudCA9IGZ0b29scy5yZWFkX2ZpbGUobWFuX3NwbGl0X2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdF9kYXRhLCBtYW5fc3BsaXRfY29udGVudCwgJ1RoZSBtYW4gZmlsZSBoYXMgbm90IGNoYW5nZWQgaW4gcGFja2FnZXMtc3BsaXQuJykKKworICAgICAgICByZXQgPSBiaXRiYWtlKHRlc3RfcmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEluKCd0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfcnBtOicsIHJldC5vdXRwdXQsICdUYXNrIGRvX3BhY2thZ2Vfd3JpdGVfcnBtIGRpZCBub3QgcmUtZXhlY3V0ZWQuJykKKworICAgIEBPRVRlc3RJRCgxNjMpCisgICAgZGVmIHRlc3RfZm9yY2VfdGFza18yKHNlbGYpOgorICAgICAgICAjIHRlc3QgMiBmcm9tIGJ1ZyA1ODc1CisgICAgICAgIHRlc3RfcmVjaXBlID0gJ3psaWInCisKKyAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKKworICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctQyBjb21waWxlICVzJyAlIHRlc3RfcmVjaXBlKQorICAgICAgICBsb29rX2Zvcl90YXNrcyA9IFsnZG9fY29tcGlsZTonLCAnZG9faW5zdGFsbDonLCAnZG9fcG9wdWxhdGVfc3lzcm9vdDonLCAnZG9fcGFja2FnZTonXQorICAgICAgICBmb3IgdGFzayBpbiBsb29rX2Zvcl90YXNrczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4odGFzaywgcmVzdWx0Lm91dHB1dCwgbXNnPSJDb3VsZG4ndCBmaW5kICVzIHRhc2suIikKKworICAgIEBPRVRlc3RJRCgxNjcpCisgICAgZGVmIHRlc3RfYml0YmFrZV9nKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctZyBjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBmb3IgZiBpbiBbJ3BuLWJ1aWxkbGlzdCcsICdyZWNpcGUtZGVwZW5kcy5kb3QnLCAndGFzay1kZXBlbmRzLmRvdCddOgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnJlbW92ZSwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdUYXNrIGRlcGVuZGVuY2llcyBzYXZlZCB0byBcJ3Rhc2stZGVwZW5kcy5kb3RcJycgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIk5vIHRhc2sgZGVwZW5kZW5jeSBcInRhc2stZGVwZW5kcy5kb3RcIiBmaWxlIHdhcyBnZW5lcmF0ZWQgZm9yIHRoZSBnaXZlbiB0YXNrIHRhcmdldC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYnVzeWJveCcgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3Rhc2stZGVwZW5kcy5kb3QnKSksIG1zZyA9ICJObyBcImJ1c3lib3hcIiBkZXBlbmRlbmN5IGZvdW5kIGluIHRhc2stZGVwZW5kcy5kb3QgZmlsZS4iKQorCisgICAgQE9FVGVzdElEKDg5OSkKKyAgICBkZWYgdGVzdF9pbWFnZV9tYW5pZmVzdChzZWxmKToKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsiREVQTE9ZX0RJUl9JTUFHRSIsICJJTUFHRV9MSU5LX05BTUUiXSwgImNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIGRlcGxveWRpciA9IGJiX3ZhcnNbIkRFUExPWV9ESVJfSU1BR0UiXQorICAgICAgICBpbWFnZW5hbWUgPSBiYl92YXJzWyJJTUFHRV9MSU5LX05BTUUiXQorICAgICAgICBtYW5pZmVzdCA9IG9zLnBhdGguam9pbihkZXBsb3lkaXIsIGltYWdlbmFtZSArICIubWFuaWZlc3QiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsobWFuaWZlc3QpLCBtc2c9Ik5vIG1hbmlmZXN0IGZpbGUgY3JlYXRlZCBmb3IgaW1hZ2UuIEl0IHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBpbiAlcyIgJSBtYW5pZmVzdCkKKworICAgIEBPRVRlc3RJRCgxNjgpCisgICAgZGVmIHRlc3RfaW52YWxpZF9yZWNpcGVfc3JjX3VyaShzZWxmKToKKyAgICAgICAgZGF0YSA9ICdTUkNfVVJJID0gImZpbGU6Ly9pbnZhbGlkIicKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbicsIGRhdGEpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKK1NTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCitJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCisKKyAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4nKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctYyBmZXRjaCBtYW4nLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIGJpdGJha2UoJy1jY2xlYW5hbGwgbWFuJykKKyAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdtYW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsIG1zZz0iQ29tbWFuZCBzdWNjZWRlZCB3aGVuIGl0IHNob3VsZCBoYXZlIGZhaWxlZC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnRmV0Y2hlciBmYWlsdXJlOiBVbmFibGUgdG8gZmluZCBmaWxlIGZpbGU6Ly9pbnZhbGlkIGFueXdoZXJlLiBUaGUgcGF0aHMgdGhhdCB3ZXJlIHNlYXJjaGVkIHdlcmU6JyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiXCJpbnZhbGlkXCIgZmlsZSBcCitkb2Vzbid0IGV4aXN0LCB5ZXQgbm8gZXJyb3IgbWVzc2FnZSBlbmNvdW50ZXJlZC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzdWx0LCAnRmV0Y2hlciBmYWlsdXJlIGZvciBVUkw6IFwnZmlsZTovL2ludmFsaWRcJy4gVW5hYmxlIHRvIGZldGNoIFVSTCBmcm9tIGFueSBzb3VyY2UuJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZyA9ICJcImludmFsaWRcIiBmaWxlIFwKK2RvZXNuJ3QgZXhpc3QsIHlldCBmZXRjaGVyIGRpZG4ndCByZXBvcnQgYW55IGVycm9yLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxNzEpCisgICAgZGVmIHRlc3RfcmVuYW1lX2Rvd25sb2FkZWRfZmlsZShzZWxmKToKKyAgICAgICAgIyBUT0RPIHVuaXF1ZSBkbGRpciBpbnN0ZWFkIG9mIHVzaW5nIGNsZWFuYWxsCisgICAgICAgICMgVE9ETzogbmVlZCB0byBzZXQgc3N0YXRlZGlyPworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiJETF9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCitTU1RBVEVfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtc2VsZnRlc3QiKSkKKworICAgICAgICBkYXRhID0gJ1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hc3BlbGwvYXNwZWxsLSR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPXRlc3QtYXNwZWxsLnRhci5neiInCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdhc3BlbGwnLCBkYXRhKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctZiAtYyBmZXRjaCBhc3BlbGwnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnYXNwZWxsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCBtc2cgPSAiQ291bGRuJ3QgZmV0Y2ggYXNwZWxsLiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBkbF9kaXIgPSBnZXRfYmJfdmFyKCJETF9ESVIiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRsX2RpciwgJ3Rlc3QtYXNwZWxsLnRhci5neicpKSwgbXNnID0gIkZpbGUgcmVuYW1lIGZhaWxlZC4gTm8gY29ycmVzcG9uZGluZyB0ZXN0LWFzcGVsbC50YXIuZ3ogZmlsZSBmb3VuZCB1bmRlciAlcyIgJSBkbF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZGxfZGlyLCAndGVzdC1hc3BlbGwudGFyLmd6LmRvbmUnKSksICJGaWxlIHJlbmFtZSBmYWlsZWQuIE5vIGNvcnJlc3BvbmRpbmcgdGVzdC1hc3BlbGwudGFyLmd6LmRvbmUgZmlsZSBmb3VuZCB1bmRlciAlcyIgJSBkbF9kaXIpCisKKyAgICBAT0VUZXN0SUQoMTAyOCkKKyAgICBkZWYgdGVzdF9lbnZpcm9ubWVudChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIlRFU1RfRU5WPVwibG9jYWxjb25mXCIiKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWUgfCBncmVwIFRFU1RfRU5WPScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbG9jYWxjb25mJyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiYml0YmFrZSBkaWRuJ3QgcmVwb3J0IGFueSB2YWx1ZSBmb3IgVEVTVF9FTlYgdmFyaWFibGUuIFRvIHRlc3QsIHJ1biAnYml0YmFrZSAtZSB8IGdyZXAgVEVTVF9FTlY9JyIpCisKKyAgICBAT0VUZXN0SUQoMTAyOSkKKyAgICBkZWYgdGVzdF9kcnlfcnVuKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLW4gbTQtbmF0aXZlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiYml0YmFrZSBkcnkgcnVuIGRpZG4ndCBydW4gYXMgZXhwZWN0ZWQuICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTAzMCkKKyAgICBkZWYgdGVzdF9qdXN0X3BhcnNlKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJlcnJvcnMgZW5jb3VudGVyZWQgd2hlbiBwYXJzaW5nIHJlY2lwZXMuICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTAzMSkKKyAgICBkZWYgdGVzdF92ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLXMgfCBncmVwIHdnZXQnKQorICAgICAgICBmaW5kID0gcmUuc2VhcmNoKCJ3Z2V0ICo6KFswLTlhLXpBLVpcLlwtXSspIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmQsICJObyB2ZXJzaW9uIHJldHVybmVkIGZvciBzZWFyY2hlZCByZWNpcGUuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEwMzIpCisgICAgZGVmIHRlc3RfcHJlZmlsZShzZWxmKToKKyAgICAgICAgcHJlY29uZiA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnY29uZi9wcmVmaWxlLmNvbmYnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHByZWNvbmYpCisgICAgICAgIGZ0b29scy53cml0ZV9maWxlKHByZWNvbmYgLCJURVNUX1BSRUZJTEU9XCJwcmVmaWxlXCIiKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLXIgY29uZi9wcmVmaWxlLmNvbmYgLWUgfCBncmVwIFRFU1RfUFJFRklMRT0nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3ByZWZpbGUnIGluIHJlc3VsdC5vdXRwdXQsICJQcmVjb25maWd1cmUgZmlsZSBcInByZWZpbGUuY29uZlwid2FzIG5vdCB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uICIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJURVNUX1BSRUZJTEU9XCJsb2NhbGNvbmZcIiIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtciBjb25mL3ByZWZpbGUuY29uZiAtZSB8IGdyZXAgVEVTVF9QUkVGSUxFPScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbG9jYWxjb25mJyBpbiByZXN1bHQub3V0cHV0LCAiUHJlY29uZmlndXJlIGZpbGUgXCJwcmVmaWxlLmNvbmZcIndhcyBub3QgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiIpCisKKyAgICBAT0VUZXN0SUQoMTAzMykKKyAgICBkZWYgdGVzdF9wb3N0ZmlsZShzZWxmKToKKyAgICAgICAgcG9zdGNvbmYgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2NvbmYvcG9zdGZpbGUuY29uZicpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAocG9zdGNvbmYpCisgICAgICAgIGZ0b29scy53cml0ZV9maWxlKHBvc3Rjb25mICwgIlRFU1RfUE9TVEZJTEU9XCJwb3N0ZmlsZVwiIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIlRFU1RfUE9TVEZJTEU9XCJsb2NhbGNvbmZcIiIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtUiBjb25mL3Bvc3RmaWxlLmNvbmYgLWUgfCBncmVwIFRFU1RfUE9TVEZJTEU9JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdwb3N0ZmlsZScgaW4gcmVzdWx0Lm91dHB1dCwgIlBvc3Rjb25maWd1cmUgZmlsZSBcInBvc3RmaWxlLmNvbmZcIndhcyBub3QgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiIpCisKKyAgICBAT0VUZXN0SUQoMTAzNCkKKyAgICBkZWYgdGVzdF9jaGVja3VyaShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1jIGNoZWNrdXJpIG00JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCBtc2cgPSAiXCJjaGVja3VyaVwiIHRhc2sgd2FzIG5vdCBleGVjdXRlZC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTAzNSkKKyAgICBkZWYgdGVzdF9jb250aW51ZShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiRExfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgorU1NUQVRFX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKK0lOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtc2VsZnRlc3QiKSkKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbicsIlxuZG9fZmFpbF90YXNrICgpIHtcbmV4aXQgMSBcbn1cblxuYWRkdGFzayBkb19mYWlsX3Rhc2sgYmVmb3JlIGRvX2ZldGNoXG4iICkKKyAgICAgICAgcnVuQ21kKCdiaXRiYWtlIC1jIGNsZWFuYWxsIG1hbiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1jIHVucGFjayAtayBtYW4geGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgZXJyb3Jwb3MgPSByZXN1bHQub3V0cHV0LmZpbmQoJ0VSUk9SOiBGdW5jdGlvbiBmYWlsZWQ6IGRvX2ZhaWxfdGFzaycpCisgICAgICAgIG1hbnZlciA9IHJlLnNlYXJjaCgiTk9URTogcmVjaXBlIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtKC4qPyk6IHRhc2sgZG9fdW5wYWNrOiBTdGFydGVkIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgY29udGludWVwb3MgPSByZXN1bHQub3V0cHV0LmZpbmQoJ05PVEU6IHJlY2lwZSB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLSVzOiB0YXNrIGRvX3VucGFjazogU3RhcnRlZCcgJSBtYW52ZXIuZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhlcnJvcnBvcyxjb250aW51ZXBvcywgbXNnID0gImJpdGJha2UgZGlkbid0IHBhc3MgZG9fZmFpbF90YXNrLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTE5KQorICAgIGRlZiB0ZXN0X25vbl9ncGx2MyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lOQ09NUEFUSUJMRV9MSUNFTlNFID0gIkdQTHYzIicpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ3NlbGZ0ZXN0LWVkJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICJCaXRiYWtlIGZhaWxlZCwgZXhpdCBjb2RlICVzLCBvdXRwdXQgJXMiICUgKHJlc3VsdC5zdGF0dXMsIHJlc3VsdC5vdXRwdXQpKQorICAgICAgICBsaWNfZGlyID0gZ2V0X2JiX3ZhcignTElDRU5TRV9ESVJFQ1RPUlknKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsaWNfZGlyLCAnc2VsZnRlc3QtZWQvZ2VuZXJpY19HUEx2MycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsaWNfZGlyLCAnc2VsZnRlc3QtZWQvZ2VuZXJpY19HUEx2MicpKSkKKworICAgIEBPRVRlc3RJRCgxNDIyKQorICAgIGRlZiB0ZXN0X3NldHNjZW5lX29ubHkoc2VsZik6CisgICAgICAgICIiIiBCaXRiYWtlIG9wdGlvbiB0byByZXN0b3JlIGZyb20gc3N0YXRlIG9ubHkgd2l0aGluIGEgYnVpbGQgKGkuZS4gZXhlY3V0ZSBubyByZWFsIHRhc2tzLCBvbmx5IHNldHNjZW5lKSIiIgorICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKKworICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQorICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKKyAgICAgICAgcmV0ID0gYml0YmFrZSgnLS1zZXRzY2VuZS1vbmx5ICVzJyAlIHRlc3RfcmVjaXBlKQorCisgICAgICAgIHRhc2tzID0gcmUuZmluZGFsbChyJ3Rhc2tccysoZG9fXFMrKTonLCByZXQub3V0cHV0KQorCisgICAgICAgIGZvciB0YXNrIGluIHRhc2tzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3NldHNjZW5lJywgdGFzaywgJ0EgdGFzayBkaWZmZXJlbnQgZnJvbSBfc2V0c2NlbmUgcmFuOiAlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeGVjdXRlZCB0YXNrcyB3ZXJlOiAlcycgJSAodGFzaywgc3RyKHRhc2tzKSkpCisKKyAgICBAT0VUZXN0SUQoMTQyNSkKKyAgICBkZWYgdGVzdF9iYmFwcGVuZF9vcmRlcihzZWxmKToKKyAgICAgICAgIiIiIEJpdGJha2Ugc2hvdWxkIGJiYXBwZW5kIHRvIHJlY2lwZSBpbiBhIHByZWRpY3RhYmxlIG9yZGVyICIiIgorICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1VNTUFSWScsICdQViddLCB0ZXN0X3JlY2lwZSkKKyAgICAgICAgdGVzdF9yZWNpcGVfc3VtbWFyeV9iZWZvcmUgPSBiYl92YXJzWydTVU1NQVJZJ10KKyAgICAgICAgdGVzdF9yZWNpcGVfcHYgPSBiYl92YXJzWydQViddCisgICAgICAgIHJlY2lwZV9hcHBlbmRfZmlsZSA9IHRlc3RfcmVjaXBlICsgJ18nICsgdGVzdF9yZWNpcGVfcHYgKyAnLmJiYXBwZW5kJworICAgICAgICBleHBlY3RlZF9yZWNpcGVfc3VtbWFyeSA9IHRlc3RfcmVjaXBlX3N1bW1hcnlfYmVmb3JlCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICByZWNpcGVfYXBwZW5kX2RpciA9IHRlc3RfcmVjaXBlICsgJ190ZXN0XycgKyBzdHIoaSkKKyAgICAgICAgICAgIHJlY2lwZV9hcHBlbmRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlX2FwcGVuZF9kaXIsIHJlY2lwZV9hcHBlbmRfZmlsZSkKKyAgICAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlX2FwcGVuZF9kaXIpKQorICAgICAgICAgICAgZmVhdHVyZSA9ICdTVU1NQVJZICs9ICIlcyJcbicgJSBpCisgICAgICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShyZWNpcGVfYXBwZW5kX3BhdGgsIGZlYXR1cmUpCisgICAgICAgICAgICBleHBlY3RlZF9yZWNpcGVfc3VtbWFyeSArPSAnICVzJyAlIGkKKworICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMnICUgb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZWNpcGUgKyAnX3Rlc3RfKicpKQorCisgICAgICAgIHRlc3RfcmVjaXBlX3N1bW1hcnlfYWZ0ZXIgPSBnZXRfYmJfdmFyKCdTVU1NQVJZJywgdGVzdF9yZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfcmVjaXBlX3N1bW1hcnksIHRlc3RfcmVjaXBlX3N1bW1hcnlfYWZ0ZXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZGhpc3RvcnkucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZGhpc3RvcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY3OTJkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkaGlzdG9yeS5weQpAQCAtMCwwICsxLDQ2IEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IGRhdGV0aW1lCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMKKworCitjbGFzcyBCdWlsZGhpc3RvcnlCYXNlKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBkZWYgY29uZmlnX2J1aWxkaGlzdG9yeShzZWxmLCB0bXBfYmhfbG9jYXRpb249RmFsc2UpOgorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydVU0VSX0NMQVNTRVMnLCAnSU5IRVJJVCddKQorICAgICAgICBpZiAobm90ICdidWlsZGhpc3RvcnknIGluIGJiX3ZhcnNbJ1VTRVJfQ0xBU1NFUyddKSBhbmQgKG5vdCAnYnVpbGRoaXN0b3J5JyBpbiBiYl92YXJzWydJTkhFUklUJ10pOgorICAgICAgICAgICAgYWRkX2J1aWxkaGlzdG9yeV9jb25maWcgPSAnSU5IRVJJVCArPSAiYnVpbGRoaXN0b3J5IlxuQlVJTERISVNUT1JZX0NPTU1JVCA9ICIxIicKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhhZGRfYnVpbGRoaXN0b3J5X2NvbmZpZykKKworICAgICAgICBpZiB0bXBfYmhfbG9jYXRpb246CisgICAgICAgICAgICAjIFVzaW5nIGEgdGVtcG9yYXJ5IGJ1aWxkaGlzdG9yeSBsb2NhdGlvbiBmb3IgdGVzdGluZworICAgICAgICAgICAgdG1wX2JoX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAidG1wX2J1aWxkaGlzdG9yeV8lcyIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJUglTSVTJykpCisgICAgICAgICAgICBidWlsZGhpc3RvcnlfZGlyX2NvbmZpZyA9ICJCVUlMREhJU1RPUllfRElSID0gXCIlc1wiIiAlIHRtcF9iaF9kaXIKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhidWlsZGhpc3RvcnlfZGlyX2NvbmZpZykKKyAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodG1wX2JoX2RpcikKKworICAgIGRlZiBydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbihzZWxmLCB0YXJnZXQsIGdsb2JhbF9jb25maWc9JycsIHRhcmdldF9jb25maWc9JycsIGNoYW5nZV9iaF9sb2NhdGlvbj1GYWxzZSwgZXhwZWN0X2Vycm9yPUZhbHNlLCBlcnJvcl9yZWdleD0nJyk6CisgICAgICAgIGlmIGNoYW5nZV9iaF9sb2NhdGlvbjoKKyAgICAgICAgICAgIHRtcF9iaF9sb2NhdGlvbiA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRtcF9iaF9sb2NhdGlvbiA9IEZhbHNlCisgICAgICAgIHNlbGYuY29uZmlnX2J1aWxkaGlzdG9yeSh0bXBfYmhfbG9jYXRpb24pCisKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGdsb2JhbF9jb25maWcpCisgICAgICAgIHNlbGYuYXBwZW5kX3JlY2lwZWluYyh0YXJnZXQsIHRhcmdldF9jb25maWcpCisgICAgICAgIGJpdGJha2UoIi1jY2xlYW4gJXMiICUgdGFyZ2V0KQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKHRhcmdldCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoZ2xvYmFsX2NvbmZpZykKKyAgICAgICAgc2VsZi5yZW1vdmVfcmVjaXBlaW5jKHRhcmdldCwgdGFyZ2V0X2NvbmZpZykKKworICAgICAgICBpZiBleHBlY3RfZXJyb3I6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsIG1zZz0iRXJyb3IgZXhwZWN0ZWQgZm9yIGdsb2JhbCBjb25maWcgJyVzJyBhbmQgdGFyZ2V0IGNvbmZpZyAnJXMnIiAlIChnbG9iYWxfY29uZmlnLCB0YXJnZXRfY29uZmlnKSkKKyAgICAgICAgICAgIHNlYXJjaF9mb3JfZXJyb3IgPSByZS5zZWFyY2goZXJyb3JfcmVnZXgsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VhcmNoX2Zvcl9lcnJvciwgbXNnPSJDb3VsZCBub3QgZmluZCBkZXNpcmVkIGVycm9yIGluIG91dHB1dDogJXMgKCVzKSIgJSAoZXJyb3JfcmVnZXgsIHJlc3VsdC5vdXRwdXQpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCBtc2c9IkNvbW1hbmQgJ2JpdGJha2UgJXMnIGhhcyBmYWlsZWQgdW5leHBlY3RlZGx5OiAlcyIgJSAodGFyZ2V0LCByZXN1bHQub3V0cHV0KSkKKworICAgICMgTm8gdGVzdHMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBiYXNlIGNsYXNzLgorICAgICMgUGxlYXNlIGNyZWF0ZSBhIG5ldyBjbGFzcyB0aGF0IGluaGVyaXQgdGhpcyBvbmUsIG9yIHVzZSBvbmUgb2YgdGhvc2UgYWxyZWFkeSBhdmFpbGFibGUgZm9yIGFkZGluZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjIyMWMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5CkBAIC0wLDAgKzEsMTY2IEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IGdsb2IgYXMgZworaW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZXMuYnVpbGRoaXN0b3J5IGltcG9ydCBCdWlsZGhpc3RvcnlCYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBJbWFnZU9wdGlvbnNUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQE9FVGVzdElEKDc2MSkKKyAgICBkZWYgdGVzdF9pbmNyZW1lbnRhbF9pbWFnZV9nZW5lcmF0aW9uKHNlbGYpOgorICAgICAgICBpbWFnZV9wa2d0eXBlID0gZ2V0X2JiX3ZhcigiSU1BR0VfUEtHVFlQRSIpCisgICAgICAgIGlmIGltYWdlX3BrZ3R5cGUgIT0gJ3JwbSc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdOb3QgdXNpbmcgUlBNIGFzIG1haW4gcGFja2FnZSBmb3JtYXQnKQorICAgICAgICBiaXRiYWtlKCItYyBjbGVhbiBjb3JlLWltYWdlLW1pbmltYWwiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU5DX1JQTV9JTUFHRV9HRU4gPSAiMSInKQorICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ0lNQUdFX0ZFQVRVUkVTICs9ICJzc2gtc2VydmVyLW9wZW5zc2giJykKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKKyAgICAgICAgbG9nX2RhdGFfZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJXT1JLRElSIiwgImNvcmUtaW1hZ2UtbWluaW1hbCIpLCAidGVtcC9sb2cuZG9fcm9vdGZzIikKKyAgICAgICAgbG9nX2RhdGFfY3JlYXRlZCA9IGZ0b29scy5yZWFkX2ZpbGUobG9nX2RhdGFfZmlsZSkKKyAgICAgICAgaW5jcmVtZW50YWxfY3JlYXRlZCA9IHJlLnNlYXJjaChyIkluc3RhbGxpbmdccyo6XHMqcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2giLCBsb2dfZGF0YV9jcmVhdGVkKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoJ0lNQUdFX0ZFQVRVUkVTICs9ICJzc2gtc2VydmVyLW9wZW5zc2giJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY3JlbWVudGFsX2NyZWF0ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgJSBsb2dfZGF0YV9jcmVhdGVkKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQorICAgICAgICBsb2dfZGF0YV9yZW1vdmVkID0gZnRvb2xzLnJlYWRfZmlsZShsb2dfZGF0YV9maWxlKQorICAgICAgICBpbmNyZW1lbnRhbF9yZW1vdmVkID0gcmUuc2VhcmNoKHIiRXJhc2luZ1xzKjpccypwYWNrYWdlZ3JvdXAtY29yZS1zc2gtb3BlbnNzaCIsIGxvZ19kYXRhX3JlbW92ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNyZW1lbnRhbF9yZW1vdmVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICUgbG9nX2RhdGFfcmVtb3ZlZCkKKworICAgIEBPRVRlc3RJRCgyODYpCisgICAgZGVmIHRlc3RfY2NhY2hlX3Rvb2woc2VsZik6CisgICAgICAgIGJpdGJha2UoImNjYWNoZS1uYXRpdmUiKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTWVNST09UX0RFU1RESVInLCAnYmluZGlyJ10sICdjY2FjaGUtbmF0aXZlJykKKyAgICAgICAgcCA9IGJiX3ZhcnNbJ1NZU1JPT1RfREVTVERJUiddICsgYmJfdmFyc1snYmluZGlyJ10gKyAiLyIgKyAiY2NhY2hlIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocCksIG1zZyA9ICJObyBjY2FjaGUgZm91bmQgKCVzKSIgJSBwKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU5IRVJJVCArPSAiY2NhY2hlIicpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gbTQnKQorICAgICAgICBiaXRiYWtlKCJtNCAtZiAtYyBjb21waWxlIikKKyAgICAgICAgbG9nX2NvbXBpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcigiV09SS0RJUiIsIm00IiksICJ0ZW1wL2xvZy5kb19jb21waWxlIikKKyAgICAgICAgcmVzID0gcnVuQ21kKCJncmVwIGNjYWNoZSAlcyIgJSBsb2dfY29tcGlsZSwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMsIG1zZz0iTm8gbWF0Y2ggZm9yIGNjYWNoZSBpbiBtNCBsb2cuZG9fY29tcGlsZS4gRm9yIGZ1cnRoZXIgZGV0YWlsczogJXMiICUgbG9nX2NvbXBpbGUpCisKKyAgICBAT0VUZXN0SUQoMTQzNSkKKyAgICBkZWYgdGVzdF9yZWFkX29ubHlfaW1hZ2Uoc2VsZik6CisgICAgICAgIGRpc3Ryb19mZWF0dXJlcyA9IGdldF9iYl92YXIoJ0RJU1RST19GRUFUVVJFUycpCisgICAgICAgIGlmIG5vdCAoJ3gxMScgaW4gZGlzdHJvX2ZlYXR1cmVzIGFuZCAnb3BlbmdsJyBpbiBkaXN0cm9fZmVhdHVyZXMpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnY29yZS1pbWFnZS1zYXRvIHJlcXVpcmVzIHgxMSBhbmQgb3BlbmdsIGluIGRpc3RybyBmZWF0dXJlcycpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTUFHRV9GRUFUVVJFUyArPSAicmVhZC1vbmx5LXJvb3RmcyInKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8iKQorICAgICAgICAjIGRvX2ltYWdlIHdpbGwgZmFpbCBpZiB0aGVyZSBhcmUgYW55IHBlbmRpbmcgcG9zdGluc3RzCisKK2NsYXNzIERpc2tNb25UZXN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAT0VUZXN0SUQoMjc3KQorICAgIGRlZiB0ZXN0X3N0b3B0YXNrX2JlaGF2aW9yKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnQkJfRElTS01PTl9ESVJTID0gIlNUT1BUQVNLUywke1RNUERJUn0sMTAwMDAwRywxMDBLIicpCisgICAgICAgIHJlcyA9IGJpdGJha2UoIm00IiwgaWdub3JlX3N0YXR1cyA9IFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnRVJST1I6IE5vIG5ldyB0YXNrcyBjYW4gYmUgZXhlY3V0ZWQgc2luY2UgdGhlIGRpc2sgc3BhY2UgbW9uaXRvciBhY3Rpb24gaXMgIlNUT1BUQVNLUyIhJyBpbiByZXMub3V0cHV0LCBtc2cgPSAiVGFza3Mgc2hvdWxkIGhhdmUgc3RvcHBlZC4gRGlzayBtb25pdG9yIGlzIHNldCB0byBTVE9QVEFTSzogJXMiICUgcmVzLm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAxLCBtc2cgPSAiYml0YmFrZSByZXBvcnRlZCBleGl0IGNvZGUgJXMuIEl0IHNob3VsZCBoYXZlIGJlZW4gMS4gQml0YmFrZSBvdXRwdXQ6ICVzIiAlIChzdHIocmVzLnN0YXR1cyksIHJlcy5vdXRwdXQpKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnQkJfRElTS01PTl9ESVJTID0gIkFCT1JULCR7VE1QRElSfSwxMDAwMDBHLDEwMEsiJykKKyAgICAgICAgcmVzID0gYml0YmFrZSgibTQiLCBpZ25vcmVfc3RhdHVzID0gVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdFUlJPUjogSW1tZWRpYXRlbHkgYWJvcnQgc2luY2UgdGhlIGRpc2sgc3BhY2UgbW9uaXRvciBhY3Rpb24gaXMgIkFCT1JUIiEnIGluIHJlcy5vdXRwdXQsICJUYXNrcyBzaG91bGQgaGF2ZSBiZWVuIGFib3J0ZWQgaW1tZWRpYXRlbGx5LiBEaXNrIG1vbml0b3IgaXMgc2V0IHRvIEFCT1JUOiAlcyIgJSByZXMub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDEsIG1zZyA9ICJiaXRiYWtlIHJlcG9ydGVkIGV4aXQgY29kZSAlcy4gSXQgc2hvdWxkIGhhdmUgYmVlbiAxLiBCaXRiYWtlIG91dHB1dDogJXMiICUgKHN0cihyZXMuc3RhdHVzKSwgcmVzLm91dHB1dCkpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdCQl9ESVNLTU9OX0RJUlMgPSAiV0FSTiwke1RNUERJUn0sMTAwMDAwRywxMDBLIicpCisgICAgICAgIHJlcyA9IGJpdGJha2UoIm00IikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdXQVJOSU5HOiBUaGUgZnJlZSBzcGFjZScgaW4gcmVzLm91dHB1dCwgbXNnID0gIkEgd2FybmluZyBzaG91bGQgaGF2ZSBiZWVuIGRpc3BsYXllZCBmb3IgZGlzayBtb25pdG9yIGlzIHNldCB0byBXQVJOOiAlcyIgJXJlcy5vdXRwdXQpCisKK2NsYXNzIFNhbml0eU9wdGlvbnNUZXN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgZGVmIGdldGxpbmUoc2VsZiwgcmVzLCBsaW5lKToKKyAgICAgICAgZm9yIGwgaW4gcmVzLm91dHB1dC5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgIGlmIGxpbmUgaW4gbDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbAorCisgICAgQE9FVGVzdElEKDkyNykKKyAgICBkZWYgdGVzdF9vcHRpb25zX3dhcm5xYV9lcnJvcnFhX3N3aXRjaChzZWxmKToKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKKyAgICAgICAgaWYgInBhY2thZ2VzLWxpc3QiIG5vdCBpbiBnZXRfYmJfdmFyKCJFUlJPUl9RQSIpOgorICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCJFUlJPUl9RQV9hcHBlbmQgPSBcIiBwYWNrYWdlcy1saXN0XCIiKQorCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ1BBQ0tBR0VTICs9IFwiJHtQTn0tZGJnXCInKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQorICAgICAgICByZXMgPSBiaXRiYWtlKCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIC1mIC1jIHBhY2thZ2UiLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCisgICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzLCAiUUEgSXNzdWU6IHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtZGJnIGlzIGxpc3RlZCBpbiBQQUNLQUdFUyBtdWx0aXBsZSB0aW1lcywgdGhpcyBsZWFkcyB0byBwYWNrYWdpbmcgZXJyb3JzLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkVSUk9SOiIpLCBtc2c9cmVzLm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAxLCBtc2cgPSAiYml0YmFrZSByZXBvcnRlZCBleGl0IGNvZGUgJXMuIEl0IHNob3VsZCBoYXZlIGJlZW4gMS4gQml0YmFrZSBvdXRwdXQ6ICVzIiAlIChzdHIocmVzLnN0YXR1cyksIHJlcy5vdXRwdXQpKQorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdQQUNLQUdFUyArPSBcIiR7UE59LWRiZ1wiJykKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdFUlJPUl9RQV9yZW1vdmUgPSAicGFja2FnZXMtbGlzdCInKQorICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ1dBUk5fUUFfYXBwZW5kID0gIiBwYWNrYWdlcy1saXN0IicpCisgICAgICAgIHJlcyA9IGJpdGJha2UoInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgLWYgLWMgcGFja2FnZSIpCisgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCisgICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzLCAiUUEgSXNzdWU6IHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtZGJnIGlzIGxpc3RlZCBpbiBQQUNLQUdFUyBtdWx0aXBsZSB0aW1lcywgdGhpcyBsZWFkcyB0byBwYWNrYWdpbmcgZXJyb3JzLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIldBUk5JTkc6IiksIG1zZz1yZXMub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDE0MjEpCisgICAgZGVmIHRlc3RfbGF5ZXJfd2l0aG91dF9naXRfZGlyKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBsYXllciBnaXQgcmV2aXNpb25zIGFyZSBkaXNwbGF5ZWQgYW5kIGRvIG5vdCBmYWlsIHdpdGhvdXQgZ2l0IHJlcG9zaXRvcnkKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIFRoZSBidWlsZCB0byBiZSBzdWNjZXNzZnVsIGFuZCB3aXRob3V0ICJmYXRhbCIgZXJyb3JzCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGRpcnBhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKworICAgICAgICBkdW1teV9sYXllcl9uYW1lID0gJ21ldGEtZHVtbXknCisgICAgICAgIGR1bW15X2xheWVyX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlycGF0aCwgZHVtbXlfbGF5ZXJfbmFtZSkKKyAgICAgICAgZHVtbXlfbGF5ZXJfY29uZl9kaXIgPSBvcy5wYXRoLmpvaW4oZHVtbXlfbGF5ZXJfcGF0aCwgJ2NvbmYnKQorICAgICAgICBvcy5tYWtlZGlycyhkdW1teV9sYXllcl9jb25mX2RpcikKKyAgICAgICAgZHVtbXlfbGF5ZXJfY29uZl9wYXRoID0gb3MucGF0aC5qb2luKGR1bW15X2xheWVyX2NvbmZfZGlyLCAnbGF5ZXIuY29uZicpCisKKyAgICAgICAgZHVtbXlfbGF5ZXJfY29udGVudCA9ICdCQlBBVEggLj0gIjoke0xBWUVSRElSfSJcbicgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCJcbicgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCRklMRV9DT0xMRUNUSU9OUyArPSAiJXMiXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkZJTEVfUEFUVEVSTl8lcyA9ICJeJHtMQVlFUkRJUn0vIlxuJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJGSUxFX1BSSU9SSVRZXyVzID0gIjYiXG4nICUgKGR1bW15X2xheWVyX25hbWUsIGR1bW15X2xheWVyX25hbWUsIGR1bW15X2xheWVyX25hbWUpCisKKyAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoZHVtbXlfbGF5ZXJfY29uZl9wYXRoLCBkdW1teV9sYXllcl9jb250ZW50KQorCisgICAgICAgIGJibGF5ZXJzX2NvbmYgPSAnQkJMQVlFUlMgKz0gIiVzIlxuJyAlIGR1bW15X2xheWVyX3BhdGgKKyAgICAgICAgc2VsZi53cml0ZV9iYmxheWVyc19jb25maWcoYmJsYXllcnNfY29uZikKKworICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKKworICAgICAgICByZXQgPSBiaXRiYWtlKCctbiAlcycgJSB0ZXN0X3JlY2lwZSkKKworICAgICAgICBlcnIgPSAnZmF0YWw6IE5vdCBhIGdpdCByZXBvc2l0b3J5JworCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlycGF0aCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEluKGVyciwgcmV0Lm91dHB1dCkKKworCitjbGFzcyBCdWlsZGhpc3RvcnlUZXN0cyhCdWlsZGhpc3RvcnlCYXNlKToKKworICAgIEBPRVRlc3RJRCgyOTMpCisgICAgZGVmIHRlc3RfYnVpbGRoaXN0b3J5X2Jhc2ljKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZ2V0X2JiX3ZhcignQlVJTERISVNUT1JZX0RJUicpKSwgImJ1aWxkaGlzdG9yeSBkaXIgd2FzIG5vdCBjcmVhdGVkLiIpCisKKyAgICBAT0VUZXN0SUQoMjk0KQorICAgIGRlZiB0ZXN0X2J1aWxkaGlzdG9yeV9idWlsZHRpbWVfcHJfYmFja3dhcmRzKHNlbGYpOgorICAgICAgICB0YXJnZXQgPSAneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScKKyAgICAgICAgZXJyb3IgPSAiRVJST1I6LipRQSBJc3N1ZTogUGFja2FnZSB2ZXJzaW9uIGZvciBwYWNrYWdlICVzIHdlbnQgYmFja3dhcmRzIHdoaWNoIHdvdWxkIGJyZWFrIHBhY2thZ2UgZmVlZHMgZnJvbSAoLiotcjEuKiB0byAuKi1yMC4qKSIgJSB0YXJnZXQKKyAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMVwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPVRydWUpCisgICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjBcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1GYWxzZSwgZXhwZWN0X2Vycm9yPVRydWUsIGVycm9yX3JlZ2V4PWVycm9yKQorCitjbGFzcyBBcmNoaXZlclRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBAT0VUZXN0SUQoOTI2KQorICAgIGRlZiB0ZXN0X2FyY2hfd29ya19kaXJfYW5kX2V4cG9ydF9zb3VyY2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGZvciBhcmNoaXZpbmcgdGhlIHdvcmsgZGlyZWN0b3J5IGFuZCBleHBvcnRpbmcgdGhlIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUICs9IFwiYXJjaGl2ZXJcIlxuQVJDSElWRVJfTU9ERVtzcmNdID0gXCJvcmlnaW5hbFwiXG5BUkNISVZFUl9NT0RFW3NycG1dID0gXCIxXCIiKQorICAgICAgICByZXMgPSBiaXRiYWtlKCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIiwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDAsICJcbkNvdWxkbid0IGJ1aWxkIHhjdXJzb3J0cmFuc3BhcmVudHRoZW1lLlxuYml0YmFrZSBvdXRwdXQgJXMiICUgcmVzLm91dHB1dCkKKyAgICAgICAgZGVwbG95X2Rpcl9zcmMgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX1NSQycpCisgICAgICAgIHBrZ3NfcGF0aCA9IGcuZ2xvYihzdHIoZGVwbG95X2Rpcl9zcmMpICsgIi9hbGxhcmNoKi94Y3VycyoiKQorICAgICAgICBzcmNfZmlsZV9nbG9iID0gc3RyKHBrZ3NfcGF0aFswXSkgKyAiL3hjdXJzb3IqLnNyYy5ycG0iCisgICAgICAgIHRhcl9maWxlX2dsb2IgPSBzdHIocGtnc19wYXRoWzBdKSArICIveGN1cnNvcioudGFyLmd6IgorICAgICAgICBzZWxmLmFzc2VydFRydWUoKGcuZ2xvYihzcmNfZmlsZV9nbG9iKSBhbmQgZy5nbG9iKHRhcl9maWxlX2dsb2IpKSwgIkNvdWxkbid0IGZpbmQgLnNyYy5ycG0gYW5kIC50YXIuZ3ogZmlsZXMgdW5kZXIgJXMvYWxsYXJjaCoveGN1cnNvcioiICUgZGVwbG95X2Rpcl9zcmMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9jb250YWluZXJpbWFnZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2NvbnRhaW5lcmltYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5YTVjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9jb250YWluZXJpbWFnZS5weQpAQCAtMCwwICsxLDg1IEBACitpbXBvcnQgb3MKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycywgcnVuQ21kCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworIyBUaGlzIHRlc3QgYnVpbGRzIGFuIGltYWdlIHdpdGggdXNpbmcgdGhlICJjb250YWluZXIiIElNQUdFX0ZTVFlQRSwgYW5kCisjIGVuc3VyZXMgdGhhdCB0aGVuIGZpbGVzIGluIHRoZSBpbWFnZSBhcmUgb25seSB0aGUgb25lcyBleHBlY3RlZC4KKyMKKyMgVGhlIG9ubHkgcGFja2FnZSBhZGRlZCB0byB0aGUgaW1hZ2UgaXMgY29udGFpbmVyX2ltYWdlX3Rlc3Rwa2csIHdoaWNoCisjIGNvbnRhaW5zIG9uZSBmaWxlLiBIb3dldmVyLCBkdWUgdG8gc29tZSBvdGhlciB0aGluZ3Mgbm90IGNsZWFuaW5nIHVwIGR1cmluZworIyByb290ZnMgY3JlYXRpb24sIHRoZXJlIGlzIHNvbWUgY3J1ZnQuIElkZWFsbHkgYnVncyB3aWxsIGJlIGZpbGVkIGFuZCB0aGUKKyMgY3J1ZnQgcmVtb3ZlZCwgYnV0IGZvciBub3cgd2Ugd2hpdGVsaXN0IHNvbWUga25vd24gc2V0LgorIworIyBBbHNvIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHdlJ3JlIG9ubHkgY2hlY2tpbmcgdGhlIGNydWZ0IHdoZW4gdXNpbmcgaXBrLgorIyBXaGVuIHVzaW5nIGRlYiwgYW5kIHJwbSBpdCBpcyBhIGJpdCBkaWZmZXJlbnQgYW5kIHdlIGNvdWxkIHRlc3QgYWxsCisjIG9mIHRoZW0sIGJ1dCB0aGlzIHRlc3QgaXMgbW9yZSB0byBjYXRjaCBpZiBvdGhlciBwYWNrYWdlcyBnZXQgYWRkZWQgYnkKKyMgZGVmYXVsdCBvdGhlciB0aGFuIHdoYXQgaXMgaW4gUk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMLgorIworY2xhc3MgQ29udGFpbmVySW1hZ2VUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgIyBWZXJpZnkgdGhhdCB3aGVuIHNwZWNpZnlpbmcgYSBJTUFHRV9UWVBFREVQXyBvZiB0aGUgZm9ybSAiZm9vLmJhciIgdGhhdAorICAgICMgdGhlIGNvbnZlcnNpb24gdHlwZSBiYXIgZ2V0cyBhZGRlZCBhcyBhIGRlcCBhcyB3ZWxsCisgICAgQE9FVGVzdElEKDE2MTkpCisgICAgZGVmIHRlc3RfZXhwZWN0ZWRfZmlsZXMoc2VsZik6CisKKyAgICAgICAgZGVmIGdldF9lYWNoX3BhdGhfcGFydChwYXRoKToKKyAgICAgICAgICAgIGlmIHBhdGg6CisgICAgICAgICAgICAgICAgcGFydCA9IFsgJy4nICsgcGF0aCArICcvJyBdCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2V0X2VhY2hfcGF0aF9wYXJ0KHBhdGgucnNwbGl0KCcvJywgMSlbMF0pCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydCArIHJlc3VsdAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID0gImxpbnV4LWR1bW15IgorSU1BR0VfRlNUWVBFUyA9ICJjb250YWluZXIiCitQQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV9pcGsiCitJTUFHRV9GRUFUVVJFUyA9ICIiCisiIiIpCisKKyAgICAgICAgYmJ2YXJzID0gZ2V0X2JiX3ZhcnMoWydiaW5kaXInLCAnc3lzY29uZmRpcicsICdsb2NhbHN0YXRlZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX0xJTktfTkFNRSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PSdjb250YWluZXItdGVzdC1pbWFnZScpCisgICAgICAgIGV4cGVjdGVkX2ZpbGVzID0gWworICAgICAgICAgICAgICAgICAgICAnLi8nLAorICAgICAgICAgICAgICAgICAgICAnLntiaW5kaXJ9L3RoZWFwcCcsCisgICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L2RlZmF1bHQvJywKKyAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vZGVmYXVsdC9wb3N0aW5zdCcsCisgICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L2xkLnNvLmNhY2hlJywKKyAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vdGltZXN0YW1wJywKKyAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vdmVyc2lvbicsCisgICAgICAgICAgICAgICAgICAgICcuL3J1bi8nLAorICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9jYWNoZS8nLAorICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9jYWNoZS9sZGNvbmZpZy8nLAorICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9jYWNoZS9sZGNvbmZpZy9hdXgtY2FjaGUnLAorICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9jYWNoZS9vcGtnLycsCisgICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2xpYi8nLAorICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9saWIvb3BrZy8nCisgICAgICAgICAgICAgICAgXQorCisgICAgICAgIGV4cGVjdGVkX2ZpbGVzID0gWyB4LmZvcm1hdChiaW5kaXI9YmJ2YXJzWydiaW5kaXInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZkaXI9YmJ2YXJzWydzeXNjb25mZGlyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHN0YXRlZGlyPWJidmFyc1snbG9jYWxzdGF0ZWRpciddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZXhwZWN0ZWRfZmlsZXMgXQorCisgICAgICAgICMgU2luY2UgdGFyIGxpc3RzIGFsbCBkaXJlY3RvcmllcyBpbmRpdmlkdWFsbHksIG1ha2Ugc3VyZSBlYWNoIGVsZW1lbnQKKyAgICAgICAgIyBmcm9tIGJpbmRpciwgc3lzY29uZmRpciwgZXRjIGlzIGFkZGVkCisgICAgICAgIGV4cGVjdGVkX2ZpbGVzICs9IGdldF9lYWNoX3BhdGhfcGFydChiYnZhcnNbJ2JpbmRpciddKQorICAgICAgICBleHBlY3RlZF9maWxlcyArPSBnZXRfZWFjaF9wYXRoX3BhcnQoYmJ2YXJzWydzeXNjb25mZGlyJ10pCisgICAgICAgIGV4cGVjdGVkX2ZpbGVzICs9IGdldF9lYWNoX3BhdGhfcGFydChiYnZhcnNbJ2xvY2Fsc3RhdGVkaXInXSkKKworICAgICAgICBleHBlY3RlZF9maWxlcyA9IHNvcnRlZChleHBlY3RlZF9maWxlcykKKworICAgICAgICAjIEJ1aWxkIHRoZSBpbWFnZSBvZiBjb3Vyc2UKKyAgICAgICAgYml0YmFrZSgnY29udGFpbmVyLXRlc3QtaW1hZ2UnKQorCisgICAgICAgIGltYWdlID0gb3MucGF0aC5qb2luKGJidmFyc1snREVQTE9ZX0RJUl9JTUFHRSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYnZhcnNbJ0lNQUdFX0xJTktfTkFNRSddICsgJy50YXIuYnoyJykKKworICAgICAgICAjIEVuc3VyZSB0aGUgZmlsZXMgaW4gdGhlIGltYWdlIGFyZSB3aGF0IHdlIGV4cGVjdAorICAgICAgICByZXN1bHQgPSBydW5DbWQoInRhciB0ZiB7fSB8IHNvcnQiLmZvcm1hdChpbWFnZSksIHNoZWxsPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSwgZXhwZWN0ZWRfZmlsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzI4MGNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQpAQCAtMCwwICsxLDE3MTEgQEAKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBnbG9iCitpbXBvcnQgZm5tYXRjaAorCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgY3JlYXRlX3RlbXBfbGF5ZXIKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcnMsIHJ1bnFlbXUsIGdldF90ZXN0X2xheWVyCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgRGV2dG9vbEJhc2UoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIGJ1ZmZlciA9IFRydWUKKworICAgIGRlZiBfdGVzdF9yZWNpcGVfY29udGVudHMoc2VsZiwgcmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBjaGVja2luaGVyaXRzKToKKyAgICAgICAgd2l0aCBvcGVuKHJlY2lwZWZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGludmFyID0gTm9uZQorICAgICAgICAgICAgaW52YWx1ZSA9IE5vbmUKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgdmFyID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIGludmFyOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGxpbmUuc3RyaXAoKS5zdHJpcCgnIicpCisgICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlLmVuZHN3aXRoKCdcXCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgaW52YWx1ZSArPSAnICcgKyB2YWx1ZVs6LTFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbHVlICs9ICcgJyArIHZhbHVlLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciA9IGludmFyCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmFyID0gTm9uZQorICAgICAgICAgICAgICAgIGVsaWYgJz0nIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoJz0nLCAxKQorICAgICAgICAgICAgICAgICAgICB2YXIgPSBzcGxpdGxpbmVbMF0ucnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzcGxpdGxpbmVbMV0uc3RyaXAoKS5zdHJpcCgnIicpCisgICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlLmVuZHN3aXRoKCdcXCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgaW52YWx1ZSA9IHZhbHVlWzotMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgaW52YXIgPSB2YXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ2luaGVyaXQgJyk6CisgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzID0gbGluZS5zcGxpdCgpWzE6XQorCisgICAgICAgICAgICAgICAgaWYgdmFyIGFuZCB2YXIgaW4gY2hlY2t2YXJzOgorICAgICAgICAgICAgICAgICAgICBuZWVkdmFsdWUgPSBjaGVja3ZhcnMucG9wKHZhcikKKyAgICAgICAgICAgICAgICAgICAgaWYgbmVlZHZhbHVlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1ZhcmlhYmxlICVzIHNob3VsZCBub3QgYXBwZWFyIGluIHJlY2lwZSwgYnV0IHZhbHVlIGlzIGJlaW5nIHNldCB0byAiJXMiJyAlICh2YXIsIHZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShuZWVkdmFsdWUsIHNldCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB2YXIgPT0gJ0xJQ0VOU0UnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2V0KHZhbHVlLnNwbGl0KCcgJiAnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZXQodmFsdWUuc3BsaXQoKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgbmVlZHZhbHVlLCAndmFsdWVzIGZvciAlcyBkbyBub3QgbWF0Y2gnICUgdmFyKQorCisKKyAgICAgICAgbWlzc2luZ3ZhcnMgPSB7fQorICAgICAgICBmb3IgdmFyLCB2YWx1ZSBpbiBjaGVja3ZhcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG1pc3Npbmd2YXJzW3Zhcl0gPSB2YWx1ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pc3Npbmd2YXJzLCB7fSwgJ1NvbWUgZXhwZWN0ZWQgdmFyaWFibGVzIG5vdCBmb3VuZCBpbiByZWNpcGU6ICVzJyAlIGNoZWNrdmFycykKKworICAgICAgICBmb3IgaW5oZXJpdCBpbiBjaGVja2luaGVyaXRzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihpbmhlcml0LCBpbmhlcml0cywgJ01pc3NpbmcgaW5oZXJpdCBvZiAlcycgJSBpbmhlcml0KQorCisgICAgZGVmIF9jaGVja19iYmFwcGVuZChzZWxmLCB0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBhcHBlbmRkaXIpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctYXBwZW5kcycsIGN3ZD1zZWxmLmJ1aWxkZGlyKQorICAgICAgICByZXN1bHRsaW5lcyA9IHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpCisgICAgICAgIGlucmVjaXBlID0gRmFsc2UKKyAgICAgICAgYmJhcHBlbmRzID0gW10KKyAgICAgICAgYmJhcHBlbmRmaWxlID0gTm9uZQorICAgICAgICBmb3IgbGluZSBpbiByZXN1bHRsaW5lczoKKyAgICAgICAgICAgIGlmIGlucmVjaXBlOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnICcpOgorICAgICAgICAgICAgICAgICAgICBiYmFwcGVuZHMuYXBwZW5kKGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBsaW5lID09ICclczonICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKToKKyAgICAgICAgICAgICAgICBpbnJlY2lwZSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGJiYXBwZW5kcyksIDIsICclcyByZWNpcGUgaXMgYmVpbmcgYmJhcHBlbmRlZCBieSBhbm90aGVyIGxheWVyIC0gYmJhcHBlbmRzIGZvdW5kOlxuICAlcycgJSAodGVzdHJlY2lwZSwgJ1xuICAnLmpvaW4oYmJhcHBlbmRzKSkpCisgICAgICAgIGZvciBiYmFwcGVuZCBpbiBiYmFwcGVuZHM6CisgICAgICAgICAgICBpZiBiYmFwcGVuZC5zdGFydHN3aXRoKGFwcGVuZGRpcik6CisgICAgICAgICAgICAgICAgYmJhcHBlbmRmaWxlID0gYmJhcHBlbmQKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdiYmFwcGVuZCBmb3IgcmVjaXBlICVzIGRvZXMgbm90IHNlZW0gdG8gYmUgY3JlYXRlZCBpbiB0ZXN0IGxheWVyJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHJldHVybiBiYmFwcGVuZGZpbGUKKworICAgIGRlZiBfY3JlYXRlX3RlbXBfbGF5ZXIoc2VsZiwgdGVtcGxheWVyZGlyLCBhZGRsYXllciwgdGVtcGxheWVybmFtZSwgcHJpb3JpdHk9OTk5LCByZWNpcGVwYXRoc3BlYz0ncmVjaXBlcy0qLyonKToKKyAgICAgICAgY3JlYXRlX3RlbXBfbGF5ZXIodGVtcGxheWVyZGlyLCB0ZW1wbGF5ZXJuYW1lLCBwcmlvcml0eSwgcmVjaXBlcGF0aHNwZWMpCisgICAgICAgIGlmIGFkZGxheWVyOgorICAgICAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzIHx8IHRydWUnICUgdGVtcGxheWVyZGlyKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBjd2Q9c2VsZi5idWlsZGRpcikKKworICAgIGRlZiBfcHJvY2Vzc19sc19vdXRwdXQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnZlcnQgbHMgLWwgb3V0cHV0IHRvIGEgZm9ybWF0IHdlIGNhbiByZWFzb25hYmx5IGNvbXBhcmUgZnJvbSBvbmUgY29udGV4dAorICAgICAgICB0byBhbm90aGVyIChlLmcuIGZyb20gaG9zdCB0byB0YXJnZXQpCisgICAgICAgICIiIgorICAgICAgICBmaWxlbGlzdCA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgICAgIGlmIGxlbihzcGxpdGxpbmUpIDwgODoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ19wcm9jZXNzX2xzX291dHB1dDogaW52YWxpZCBvdXRwdXQgbGluZTogJXMnICUgbGluZSkKKyAgICAgICAgICAgICMgUmVtb3ZlIHRyYWlsaW5nIC4gb24gcGVybXMKKyAgICAgICAgICAgIHNwbGl0bGluZVswXSA9IHNwbGl0bGluZVswXS5yc3RyaXAoJy4nKQorICAgICAgICAgICAgIyBSZW1vdmUgbGVhZGluZyAuIG9uIHBhdGhzCisgICAgICAgICAgICBzcGxpdGxpbmVbLTFdID0gc3BsaXRsaW5lWy0xXS5sc3RyaXAoJy4nKQorICAgICAgICAgICAgIyBEcm9wIGZpZWxkcyB3ZSBkb24ndCB3YW50IHRvIGNvbXBhcmUKKyAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbN10KKyAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbNl0KKyAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbNV0KKyAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbNF0KKyAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbMV0KKyAgICAgICAgICAgIGZpbGVsaXN0LmFwcGVuZCgnICcuam9pbihzcGxpdGxpbmUpKQorICAgICAgICByZXR1cm4gZmlsZWxpc3QKKworCitjbGFzcyBEZXZ0b29sVGVzdHMoRGV2dG9vbEJhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoRGV2dG9vbFRlc3RzLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydUT1BESVInLCAnU1NUQVRFX0RJUiddKQorICAgICAgICBjbHMub3JpZ2luYWxfc3N0YXRlID0gYmJfdmFyc1snU1NUQVRFX0RJUiddCisgICAgICAgIGNscy5kZXZ0b29sX3NzdGF0ZSA9IG9zLnBhdGguam9pbihiYl92YXJzWydUT1BESVInXSwgJ3NzdGF0ZV9kZXZ0b29sJykKKyAgICAgICAgY2xzLnNzdGF0ZV9jb25mICA9ICdTU1RBVEVfRElSID0gIiVzIlxuJyAlIGNscy5kZXZ0b29sX3NzdGF0ZQorICAgICAgICBjbHMuc3N0YXRlX2NvbmYgKz0gKCdTU1RBVEVfTUlSUk9SUyArPSAiZmlsZTovLy4qIGZpbGU6Ly8vJXMvUEFUSCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGNscy5vcmlnaW5hbF9zc3RhdGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMubG9nZ2VyLmRlYnVnKCdEZWxldGluZyBkZXZ0b29sIHNzdGF0ZSBjYWNoZSBvbiAlcycgJSBjbHMuZGV2dG9vbF9zc3RhdGUpCisgICAgICAgIHJ1bkNtZCgncm0gLXJmICVzJyAlIGNscy5kZXZ0b29sX3NzdGF0ZSkKKyAgICAgICAgc3VwZXIoRGV2dG9vbFRlc3RzLCBjbHMpLnRlYXJEb3duQ2xhc3MoKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNhc2Ugc2V0dXAgZnVuY3Rpb24iIiIKKyAgICAgICAgc3VwZXIoRGV2dG9vbFRlc3RzLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYud29ya3NwYWNlZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd3b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSAnCisgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhzZWxmLnNzdGF0ZV9jb25mKQorCisgICAgZGVmIF9jaGVja19zcmNfcmVwbyhzZWxmLCByZXBvX2Rpcik6CisgICAgICAgICIiIkNoZWNrIHNyY3RyZWUgZ2l0IHJlcG9zaXRvcnkiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHJlcG9fZGlyLCAnLmdpdCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdnaXQgcmVwb3NpdG9yeSBmb3IgZXh0ZXJuYWwgc291cmNlIHRyZWUgbm90IGZvdW5kJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluJywgY3dkPXJlcG9fZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3RyaXAoKSwgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWF0ZWQgZ2l0IHJlcG8gaXMgbm90IGNsZWFuJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3ltYm9saWMtcmVmIEhFQUQnLCBjd2Q9cmVwb19kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zdHJpcCgpLCAicmVmcy9oZWFkcy9kZXZ0b29sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnV3JvbmcgYnJhbmNoIGluIGdpdCByZXBvJykKKworICAgIGRlZiBfY2hlY2tfcmVwb19zdGF0dXMoc2VsZiwgcmVwb19kaXIsIGV4cGVjdGVkX3N0YXR1cyk6CisgICAgICAgICIiIkNoZWNrIHRoZSB3b3JrdHJlZSBzdGF0dXMgb2YgYSByZXBvc2l0b3J5IiIiCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAuIC0tcG9yY2VsYWluJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1yZXBvX2RpcikKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBmb3IgaW5kLCAoZl9zdGF0dXMsIGZuX3JlKSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfc3RhdHVzKToKKyAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChmbl9yZSwgbGluZVszOl0pOgorICAgICAgICAgICAgICAgICAgICBpZiBmX3N0YXR1cyAhPSBsaW5lWzoyXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBzdGF0dXMgaW4gbGluZTogJXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzLnBvcChpbmQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBtb2RpZmllZCBmaWxlIGluIGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgIGlmIGV4cGVjdGVkX3N0YXR1czoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTWlzc2luZyBmaWxlIGNoYW5nZXM6ICVzJyAlIGV4cGVjdGVkX3N0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMTU4KQorICAgIGRlZiB0ZXN0X2NyZWF0ZV93b3Jrc3BhY2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvd29ya3NwYWNlJyBub3QgaW4gcmVzdWx0Lm91dHB1dCwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgbGF5ZXIgaW4gYmJsYXllcnMuY29uZicpCisgICAgICAgICMgVHJ5IGNyZWF0aW5nIGEgd29ya3NwYWNlIGxheWVyIHdpdGggYSBzcGVjaWZpYyBwYXRoCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgY3JlYXRlLXdvcmtzcGFjZSAlcycgJSB0ZW1wZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHRlbXBkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksIG1zZyA9ICJObyB3b3Jrc3BhY2UgY3JlYXRlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzICIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFRyeSBjcmVhdGluZyBhIHdvcmtzcGFjZSBsYXllciB3aXRoIHRoZSBkZWZhdWx0IHBhdGgKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGNyZWF0ZS13b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCBtc2cgPSAiTm8gd29ya3NwYWNlIGNyZWF0ZWQuIGRldnRvb2wgb3V0cHV0OiAlcyAiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLndvcmtzcGFjZWRpciwgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTU5KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkKHNlbGYpOgorICAgICAgICAjIEZldGNoIHNvdXJjZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgcG4gPSAncHYnCisgICAgICAgIHB2ID0gJzEuNS4zJworICAgICAgICB1cmwgPSAnaHR0cDovL3d3dy5pdmFyY2guY29tL3Byb2dyYW1zL3NvdXJjZXMvcHYtMS41LjMudGFyLmJ6MicKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCd3Z2V0ICVzJyAlIHVybCwgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgndGFyIHhmdiAlcycgJSBvcy5wYXRoLmJhc2VuYW1lKHVybCksIGN3ZD10ZW1wZGlyKQorICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJyVzLSVzJyAlIChwbiwgcHYpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2NvbmZpZ3VyZScpKSwgJ1VuYWJsZSB0byBmaW5kIGNvbmZpZ3VyZSBzY3JpcHQgaW4gc291cmNlIGRpcmVjdG9yeScpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlICVzJyAlIHBuKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzJyAlIChwbiwgc3JjZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICByZWNpcGVwYXRoID0gJyVzL3JlY2lwZXMvJXMvJXNfJXMuYmInICUgKHNlbGYud29ya3NwYWNlZGlyLCBwbiwgcG4sIHB2KQorICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZXBhdGgsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBmaW5kLXJlY2lwZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgLXEgZmluZC1yZWNpcGUgJXMnICUgcG4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlcGF0aCwgcmVzdWx0Lm91dHB1dC5zdHJpcCgpKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBlZGl0LXJlY2lwZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ1ZJU1VBTD0iZWNobyAxMjMiIGRldnRvb2wgLXEgZWRpdC1yZWNpcGUgJXMnICUgcG4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEyMyAlcycgJSByZWNpcGVwYXRoLCByZXN1bHQub3V0cHV0LnN0cmlwKCkpCisgICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUgKGhhdmUgdG8gZG8gdGhpcyAqYWZ0ZXIqIGRldnRvb2wgYWRkIHNpbmNlIHRoZSByZWNpcGUgb25seSBleGlzdHMgdGhlbikKKyAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW5zc3RhdGUnICUgcG4pCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGJ1aWxkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSBwbikKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRCcsICdiaW5kaXInXSwgcG4pCisgICAgICAgIGluc3RhbGxkaXIgPSBiYl92YXJzWydEJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3RhbGxkaXIsICdDb3VsZCBub3QgcXVlcnkgaW5zdGFsbGRpciB2YXJpYWJsZScpCisgICAgICAgIGJpbmRpciA9IGJiX3ZhcnNbJ2JpbmRpciddCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiaW5kaXIsICdDb3VsZCBub3QgcXVlcnkgYmluZGlyIHZhcmlhYmxlJykKKyAgICAgICAgaWYgYmluZGlyWzBdID09ICcvJzoKKyAgICAgICAgICAgIGJpbmRpciA9IGJpbmRpclsxOl0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihpbnN0YWxsZGlyLCBiaW5kaXIsICdwdicpKSwgJ3B2IGJpbmFyeSBub3QgZm91bmQgaW4gRCcpCisKKyAgICBAT0VUZXN0SUQoMTQyMykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9naXRfbG9jYWwoc2VsZik6CisgICAgICAgICMgRmV0Y2ggc291cmNlIGZyb20gYSByZW1vdGUgVVJMLCBidXQgZG8gaXQgb3V0c2lkZSBvZiBkZXZ0b29sCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBwbiA9ICdkYnVzLXdhaXQnCisgICAgICAgIHNyY3JldiA9ICc2Y2M2MDc3YTM2ZmUyNjQ4YTVmOTkzZmU3YzE2Yzk2MzJmOTQ2NTE3JworICAgICAgICAjIFdlIGNob29zZSBhbiBodHRwczovLyBnaXQgVVJMIGhlcmUgdG8gY2hlY2sgcmV3cml0aW5nIHRoZSBVUkwgd29ya3MKKyAgICAgICAgdXJsID0gJ2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZ2l0L2RidXMtd2FpdCcKKyAgICAgICAgIyBGb3JjZSBmZXRjaGluZyB0byAibm9uYW1lIiBzdWJkaXIgc28gd2UgdmVyaWZ5IHdlJ3JlIHBpY2tpbmcgdXAgdGhlIG5hbWUgZnJvbSBhdXRvY29uZgorICAgICAgICAjIGluc3RlYWQgb2YgdGhlIGRpcmVjdG9yeSBuYW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNsb25lICVzIG5vbmFtZScgJSB1cmwsIGN3ZD10ZW1wZGlyKQorICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ25vbmFtZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJlc2V0IC0taGFyZCAlcycgJSBzcmNyZXYsIGN3ZD1zcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnY29uZmlndXJlLmFjJykpLCAnVW5hYmxlIHRvIGZpbmQgY29uZmlndXJlIHNjcmlwdCBpbiBzb3VyY2UgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgRG9uJ3Qgc3BlY2lmeSBhIG5hbWUgc2luY2Ugd2Ugc2hvdWxkIGJlIGFibGUgdG8gYXV0by1kZXRlY3QgaXQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcycgJSBzcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgICMgQ2hlY2sgdGhlIHJlY2lwZSBuYW1lIGlzIGNvcnJlY3QKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCBwbikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignJXNfZ2l0LmJiJyAlIHBuLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQorICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZWZpbGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihwbiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlZmlsZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSAnR1BMdjInCisgICAgICAgIGNoZWNrdmFyc1snTElDX0ZJTEVTX0NIS1NVTSddID0gJ2ZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MycKKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9naXQnCisgICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcwLjErZ2l0JHtTUkNQVn0nCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9kYnVzLXdhaXQ7cHJvdG9jb2w9aHR0cHMnCisgICAgICAgIGNoZWNrdmFyc1snU1JDUkVWJ10gPSBzcmNyZXYKKyAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydkYnVzJ10pCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisKKyAgICBAT0VUZXN0SUQoMTE2MikKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9saWJyYXJ5KHNlbGYpOgorICAgICAgICAjIEZldGNoIHNvdXJjZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgdmVyc2lvbiA9ICcxLjEnCisgICAgICAgIHVybCA9ICdodHRwczovL3d3dy5pbnRyYTJuZXQuY29tL2VuL2RldmVsb3Blci9saWJmdGRpL2Rvd25sb2FkL2xpYmZ0ZGkxLSVzLnRhci5iejInICUgdmVyc2lvbgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3dnZXQgJXMnICUgdXJsLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCd0YXIgeGZ2IGxpYmZ0ZGkxLSVzLnRhci5iejInICUgdmVyc2lvbiwgY3dkPXRlbXBkaXIpCisgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbGliZnRkaTEtJXMnICUgdmVyc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdDTWFrZUxpc3RzLnR4dCcpKSwgJ1VuYWJsZSB0byBmaW5kIENNYWtlTGlzdHMudHh0IGluIHNvdXJjZSBkaXJlY3RvcnknKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQgKGFuZCB1c2UgLVYgc28gd2UgdGVzdCB0aGF0IHRvbykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCBsaWJmdGRpICVzIC1WICVzJyAlIChzcmNkaXIsIHZlcnNpb24pKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYmZ0ZGknLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZSAoaGF2ZSB0byBkbyB0aGlzICphZnRlciogZGV2dG9vbCBhZGQgc2luY2UgdGhlIHJlY2lwZSBvbmx5IGV4aXN0cyB0aGVuKQorICAgICAgICBiaXRiYWtlKCdsaWJmdGRpIC1jIGNsZWFuc3N0YXRlJykKKyAgICAgICAgIyBsaWJmdGRpJ3MgcHl0aG9uL0NNYWtlTGlzdHMudHh0IGlzIGEgYml0IGJyb2tlbiwgc28gbGV0J3MganVzdCBkaXNhYmxlIGl0CisgICAgICAgICMgVGhlcmUncyBhbHNvIHRoZSBtYXR0ZXIgb2YgaXQgaW5zdGFsbGluZyBjbWFrZSBmaWxlcyB0byBhIHBhdGggd2UgZG9uJ3QKKyAgICAgICAgIyBub3JtYWxseSBjb3Zlciwgd2hpY2ggdHJpZ2dlcnMgdGhlIGluc3RhbGxlZC12cy1zaGlwcGVkIFFBIHRlc3Qgd2UgaGF2ZQorICAgICAgICAjIHdpdGhpbiBkb19wYWNrYWdlCisgICAgICAgIHJlY2lwZWZpbGUgPSAnJXMvcmVjaXBlcy9saWJmdGRpL2xpYmZ0ZGlfJXMuYmInICUgKHNlbGYud29ya3NwYWNlZGlyLCB2ZXJzaW9uKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgc2V0dmFyICVzIEVYVFJBX09FQ01BS0UgLS0gXCctRFBZVEhPTl9CSU5ESU5HUz1PRkYgLURMSUJGVERJX0NNQUtFX0NPTkZJR19ESVI9JHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzXCcnICUgcmVjaXBlZmlsZSkKKyAgICAgICAgd2l0aCBvcGVuKHJlY2lwZWZpbGUsICdhJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ1xuRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMiXG4nKQorICAgICAgICAgICAgIyBXZSBkb24ndCBoYXZlIHRoZSBhYmlsaXR5IHRvIHBpY2sgdXAgdGhpcyBkZXBlbmRlbmN5IGF1dG9tYXRpY2FsbHkgeWV0Li4uCisgICAgICAgICAgICBmLndyaXRlKCdcbkRFUEVORFMgKz0gImxpYnVzYjEiXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnXG5URVNUTElCT1VUUFVUID0gIiR7Q09NUE9ORU5UU19ESVJ9LyR7VFVORV9QS0dBUkNIfS8ke1BOfS8ke2xpYmRpcn0iXG4nKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBidWlsZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgbGliZnRkaScpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1RFU1RMSUJPVVRQVVQnLCAnU1RBTVAnXSwgJ2xpYmZ0ZGknKQorICAgICAgICBzdGFnaW5nX2xpYmRpciA9IGJiX3ZhcnNbJ1RFU1RMSUJPVVRQVVQnXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhZ2luZ19saWJkaXIsICdDb3VsZCBub3QgcXVlcnkgVEVTVExJQk9VVFBVVCB2YXJpYWJsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3RhZ2luZ19saWJkaXIsICdsaWJmdGRpMS5zby4yLjEuMCcpKSwgImxpYmZ0ZGkgYmluYXJ5IG5vdCBmb3VuZCBpbiBTVEFHSU5HX0xJQkRJUi4gT3V0cHV0IG9mIGRldnRvb2wgYnVpbGQgbGliZnRkaSAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFRlc3QgZGV2dG9vbCByZXNldAorICAgICAgICBzdGFtcHByZWZpeCA9IGJiX3ZhcnNbJ1NUQU1QJ10KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IGxpYmZ0ZGknKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGliZnRkaScsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFtcHByZWZpeCwgJ1VuYWJsZSB0byBnZXQgU1RBTVAgdmFsdWUgZm9yIHJlY2lwZSBsaWJmdGRpJykKKyAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihzdGFtcHByZWZpeCArICcqJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaGVzLCAnU3RhbXAgZmlsZXMgZXhpc3QgZm9yIHJlY2lwZSBsaWJmdGRpIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3RhZ2luZ19saWJkaXIsICdsaWJmdGRpMS5zby4yLjEuMCcpKSwgJ2xpYmZ0ZGkgYmluYXJ5IHN0aWxsIGZvdW5kIGluIFNUQUdJTkdfTElCRElSIGFmdGVyIGNsZWFuaW5nJykKKworICAgIEBPRVRlc3RJRCgxMTYwKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2ZldGNoKHNlbGYpOgorICAgICAgICAjIEZldGNoIHNvdXJjZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgdGVzdHZlciA9ICcwLjIzJworICAgICAgICB1cmwgPSAnaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL00vTWFya3VwU2FmZS9NYXJrdXBTYWZlLSVzLnRhci5neicgJSB0ZXN0dmVyCisgICAgICAgIHRlc3RyZWNpcGUgPSAncHl0aG9uLW1hcmt1cHNhZmUnCisgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbnNzdGF0ZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzIC1mICVzJyAlICh0ZXN0cmVjaXBlLCBzcmNkaXIsIHVybCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZC4gJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdzZXR1cC5weScpKSwgJ1VuYWJsZSB0byBmaW5kIHNldHVwLnB5IGluIHNvdXJjZSBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc3JjZGlyLCAnLmdpdCcpKSwgJ2dpdCByZXBvc2l0b3J5IGZvciBleHRlcm5hbCBzb3VyY2UgdHJlZSB3YXMgbm90IGNyZWF0ZWQnKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlCisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignJXNfJXMuYmInICUgKHRlc3RyZWNpcGUsIHRlc3R2ZXIpLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L01hcmt1cFNhZmUtJHtQVn0nCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UodGVzdHZlciwgJyR7UFZ9JykKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKyAgICAgICAgIyBUcnkgd2l0aCB2ZXJzaW9uIHNwZWNpZmllZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLW4gJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzcmNkaXIpCisgICAgICAgIGZha2V2ZXIgPSAnMS45JworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzIC1mICVzIC1WICVzJyAlICh0ZXN0cmVjaXBlLCBzcmNkaXIsIHVybCwgZmFrZXZlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnc2V0dXAucHknKSksICdVbmFibGUgdG8gZmluZCBzZXR1cC5weSBpbiBzb3VyY2UgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZQorICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzXyVzLmJiJyAlICh0ZXN0cmVjaXBlLCBmYWtldmVyKSwgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9NYXJrdXBTYWZlLSVzJyAlIHRlc3R2ZXIKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKworICAgIEBPRVRlc3RJRCgxMTYxKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2ZldGNoX2dpdChzZWxmKToKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHVybCA9ICdnaXRzbTovL2dpdC55b2N0b3Byb2plY3Qub3JnL21yYWEnCisgICAgICAgIGNoZWNrcmV2ID0gJ2FlMTI3YjE5YTUwYWE1NDI1NWU0MzMwY2NmZGQ5YTVkMDU4ZTU4MWQnCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbXJhYScKKyAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWEgLWYgJXMnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkOiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2ltcmFhJywgJ2ltcmFhLmMnKSksICdVbmFibGUgdG8gZmluZCBpbXJhYS9pbXJhYS5jIGluIHNvdXJjZSBkaXJlY3RvcnknKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlCisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignX2dpdC5iYicsIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JworICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMS4wK2dpdCR7U1JDUFZ9JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAorICAgICAgICBjaGVja3ZhcnNbJ1NSQ1JFViddID0gJyR7QVVUT1JFVn0nCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisgICAgICAgICMgVHJ5IHdpdGggcmV2aXNpb24gYW5kIHZlcnNpb24gc3BlY2lmaWVkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtbiAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzaHV0aWwucm10cmVlKHNyY2RpcikKKyAgICAgICAgdXJsX3JldiA9ICclcztyZXY9JXMnICUgKHVybCwgY2hlY2tyZXYpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWYgIiVzIiAtViAxLjUnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsX3JldikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnaW1yYWEnLCAnaW1yYWEuYycpKSwgJ1VuYWJsZSB0byBmaW5kIGltcmFhL2ltcmFhLmMgaW4gc291cmNlIGRpcmVjdG9yeScpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEluKCdfZ2l0LmJiJywgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9naXQnCisgICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcxLjUrZ2l0JHtTUkNQVn0nCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCisgICAgICAgIGNoZWNrdmFyc1snU1JDUkVWJ10gPSBjaGVja3JldgorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorCisgICAgQE9FVGVzdElEKDEzOTEpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZmV0Y2hfc2ltcGxlKHNlbGYpOgorICAgICAgICAjIEZldGNoIHNvdXJjZSBmcm9tIGEgcmVtb3RlIFVSTCwgYXV0by1kZXRlY3RpbmcgbmFtZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgdGVzdHZlciA9ICcxLjYuMCcKKyAgICAgICAgdXJsID0gJ2h0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9zb3VyY2VzL3B2LSVzLnRhci5iejInICUgdGVzdHZlcgorICAgICAgICB0ZXN0cmVjaXBlID0gJ3B2JworICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMnICUgdXJsKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQuICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnY29uZmlndXJlJykpLCAnVW5hYmxlIHRvIGZpbmQgY29uZmlndXJlIHNjcmlwdCBpbiBzb3VyY2UgZGlyZWN0b3J5JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNyY2RpciwgJy5naXQnKSksICdnaXQgcmVwb3NpdG9yeSBmb3IgZXh0ZXJuYWwgc291cmNlIHRyZWUgd2FzIG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZQorICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzXyVzLmJiJyAlICh0ZXN0cmVjaXBlLCB0ZXN0dmVyKSwgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSBOb25lCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UodGVzdHZlciwgJyR7UFZ9JykKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKworICAgIEBPRVRlc3RJRCgxMTY0KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5KHNlbGYpOgorICAgICAgICBpbXBvcnQgb2UucGF0aAorCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIG1kYWRtJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSBtZGFkbSAteCAlcycgJSB0ZW1wZGlyKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICdtZGFkbV8qLmJiYXBwZW5kJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVzLCAnYmJhcHBlbmQgbm90IGNyZWF0ZWQgJXMnICUgcmVzdWx0Lm91dHB1dCkKKworICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21kYWRtJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorCisgICAgICAgIGJpdGJha2UoJ21kYWRtIC1DIHVucGFjaycpCisKKyAgICAgICAgZGVmIGNoZWNrX2xpbmUoY2hlY2tmaWxlLCBleHBlY3RlZCwgbWVzc2FnZSwgcHJlc2VudD1UcnVlKToKKyAgICAgICAgICAgICMgQ2hlY2sgZm9yICRleHBlY3RlZCwgb24gYSBsaW5lIG9uIGl0cyBvd24sIGluIGNoZWNrZmlsZS4KKyAgICAgICAgICAgIHdpdGggb3BlbihjaGVja2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICBpZiBwcmVzZW50OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkICsgJ1xuJywgZiwgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGV4cGVjdGVkICsgJ1xuJywgZiwgbWVzc2FnZSkKKworICAgICAgICBtb2RmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdtZGFkbS44LmluJykKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnUEtHRCcsICdtYW5kaXInXSwgJ21kYWRtJykKKyAgICAgICAgcGtnZCA9IGJiX3ZhcnNbJ1BLR0QnXQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGtnZCwgJ0NvdWxkIG5vdCBxdWVyeSBQS0dEIHZhcmlhYmxlJykKKyAgICAgICAgbWFuZGlyID0gYmJfdmFyc1snbWFuZGlyJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hbmRpciwgJ0NvdWxkIG5vdCBxdWVyeSBtYW5kaXIgdmFyaWFibGUnKQorICAgICAgICBtYW5maWxlID0gb2UucGF0aC5qb2luKHBrZ2QsIG1hbmRpciwgJ21hbjgnLCAnbWRhZG0uOCcpCisKKyAgICAgICAgY2hlY2tfbGluZShtb2RmaWxlLCAnTGludXggU29mdHdhcmUgUkFJRCcsICdDb3VsZCBub3QgZmluZCBpbml0aWFsIHN0cmluZycpCisgICAgICAgIGNoZWNrX2xpbmUobW9kZmlsZSwgJ2FudGlxdWUgcGluIHNhcmRpbmUnLCAnVW5leHBlY3RlZGx5IGZvdW5kIHJlcGxhY2VtZW50IHN0cmluZycsIHByZXNlbnQ9RmFsc2UpCisKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJzZWQgLWkgJ3MhXkxpbnV4IFNvZnR3YXJlIFJBSUQkIWFudGlxdWUgcGluIHNhcmRpbmUhJyAlcyIgJSBtb2RmaWxlKQorICAgICAgICBjaGVja19saW5lKG1vZGZpbGUsICdhbnRpcXVlIHBpbiBzYXJkaW5lJywgJ21kYWRtLjguaW4gZmlsZSBub3QgbW9kaWZpZWQgKHNlZCBmYWlsZWQpJykKKworICAgICAgICBiaXRiYWtlKCdtZGFkbSAtYyBwYWNrYWdlJykKKyAgICAgICAgY2hlY2tfbGluZShtYW5maWxlLCAnYW50aXF1ZSBwaW4gc2FyZGluZScsICdtYW4gZmlsZSBub3QgbW9kaWZpZWQuIG1hbiBzZWFyY2hlZCBmaWxlIHBhdGg6ICVzJyAlIG1hbmZpbGUpCisKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY2hlY2tvdXQgLS0gJXMnICUgbW9kZmlsZSwgY3dkPXRlbXBkaXIpCisgICAgICAgIGNoZWNrX2xpbmUobW9kZmlsZSwgJ0xpbnV4IFNvZnR3YXJlIFJBSUQnLCAnbWFuIC5pbiBmaWxlIG5vdCByZXN0b3JlZCAoZ2l0IGZhaWxlZCknKQorCisgICAgICAgIGJpdGJha2UoJ21kYWRtIC1jIHBhY2thZ2UnKQorICAgICAgICBjaGVja19saW5lKG1hbmZpbGUsICdMaW51eCBTb2Z0d2FyZSBSQUlEJywgJ21hbiBmaWxlIG5vdCB1cGRhdGVkLiBtYW4gc2VhcmNoZWQgZmlsZSBwYXRoOiAlcycgJSBtYW5maWxlKQorCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCBtZGFkbScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtZGFkbScsIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTYyMCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkY2xlYW4oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRGaWxlKHBhdGgsICpwYXRocyk6CisgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHBhdGgsICpwYXRocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKGYpCisgICAgICAgIGRlZiBhc3NlcnROb0ZpbGUocGF0aCwgKnBhdGhzKToKKyAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4ocGF0aCwgKnBhdGhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMoZikKKworICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlCisgICAgICAgIGJpdGJha2UoJ21kYWRtIG00IC1jIGNsZWFuc3N0YXRlJykKKyAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCisgICAgICAgIHRlbXBkaXJfbWRhZG0gPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgdGVtcGRpcl9tNCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBidWlsZGRpcl9tNCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXJfbWRhZG0pCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcl9tNCkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChidWlsZGRpcl9tNCkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBtZGFkbSBtNCcpCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtNCcsICdFWFRFUk5BTFNSQ19CVUlMRCA9ICIlcyJcbmRvX2NsZWFuKCkge1xuXHQ6XG59XG4nICUgYnVpbGRkaXJfbTQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgbWRhZG0gLXggJXMnICUgdGVtcGRpcl9tZGFkbSkKKyAgICAgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgbTQgLXggJXMnICUgdGVtcGRpcl9tNCkKKyAgICAgICAgICAgIGFzc2VydE5vRmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQorICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKKyAgICAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ200IC1lJykKKyAgICAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ21kYWRtIG00IC1jIGNvbXBpbGUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwKQorICAgICAgICAgICAgYXNzZXJ0RmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQorICAgICAgICAgICAgYXNzZXJ0RmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCisgICAgICAgICAgICAjIENoZWNrIHRoYXQgYnVpbGRjbGVhbiB0YXNrIGV4aXN0cyBhbmQgZG9lcyBjYWxsIG1ha2UgY2xlYW4KKyAgICAgICAgICAgIGJpdGJha2UoJ21kYWRtIG00IC1jIGJ1aWxkY2xlYW4nKQorICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCisgICAgICAgICAgICBhc3NlcnROb0ZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQorICAgICAgICAgICAgYml0YmFrZSgnbWRhZG0gbTQgLWMgY29tcGlsZScpCisgICAgICAgICAgICBhc3NlcnRGaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCisgICAgICAgICAgICBhc3NlcnRGaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKKyAgICAgICAgICAgIGJpdGJha2UoJ21kYWRtIG00IC1jIGNsZWFuJykKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBidWlsZGNsZWFuIHRhc2sgaXMgcnVuIGJlZm9yZSBjbGVhbiBmb3IgQiA9PSBTCisgICAgICAgICAgICBhc3NlcnROb0ZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBidWlsZGNsZWFuIHRhc2sgaXMgbm90IHJ1biBiZWZvcmUgY2xlYW4gZm9yIEIgIT0gUworICAgICAgICAgICAgYXNzZXJ0RmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ200JykKKworICAgIEBPRVRlc3RJRCgxMTY2KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X2ludmFsaWQoc2VsZik6CisgICAgICAgICMgVHJ5IG1vZGlmeWluZyBzb21lIHJlY2lwZXMKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisKKyAgICAgICAgdGVzdHJlY2lwZXMgPSAncGVyZiBrZXJuZWwtZGV2c3JjIHBhY2thZ2UtaW5kZXggY29yZS1pbWFnZS1taW5pbWFsIG1ldGEtdG9vbGNoYWluIHBhY2thZ2Vncm91cC1jb3JlLXNkayBtZXRhLWlkZS1zdXBwb3J0Jy5zcGxpdCgpCisgICAgICAgICMgRmluZCBhY3R1YWwgbmFtZSBvZiBnY2Mtc291cmNlIHNpbmNlIGl0IG5vdyBpbmNsdWRlcyB0aGUgdmVyc2lvbiAtIGNydWRlLCBidXQgZ29vZCBlbm91Z2ggZm9yIHRoaXMgcHVycG9zZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyBnY2Mtc291cmNlKicpCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgIyBqdXN0IG1hdGNoIHRob3NlIGxpbmVzIHRoYXQgY29udGFpbiBhIHJlYWwgdGFyZ2V0CisgICAgICAgICAgICBtID0gcmUubWF0Y2goJyg/UDxyZWNpcGU+XlthLXpBLVowLTkuLV0rKSg/UDxjb2xvbj46JCknLCBsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICB0ZXN0cmVjaXBlcy5hcHBlbmQobS5ncm91cCgncmVjaXBlJykpCisgICAgICAgIGZvciB0ZXN0cmVjaXBlIGluIHRlc3RyZWNpcGVzOgorICAgICAgICAgICAgIyBDaGVjayBpdCdzIGEgdmFsaWQgcmVjaXBlCisgICAgICAgICAgICBiaXRiYWtlKCclcyAtZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgIyBkZXZ0b29sIGV4dHJhY3Qgc2hvdWxkIGZhaWwKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBleHRyYWN0ICVzICVzJyAlICh0ZXN0cmVjaXBlLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkpLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdkZXZ0b29sIGV4dHJhY3Qgb24gJXMgc2hvdWxkIGhhdmUgZmFpbGVkLiBkZXZ0b29sIG91dHB1dDogJXMnICUgKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignRmV0Y2hpbmcgJywgcmVzdWx0Lm91dHB1dCwgJ2RldnRvb2wgZXh0cmFjdCBvbiAlcyBzaG91bGQgaGF2ZSBlcnJvcmVkIG91dCBiZWZvcmUgdHJ5aW5nIHRvIGZldGNoJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ2RldnRvb2wgZXh0cmFjdCBvbiAlcyBzaG91bGQgaGF2ZSBnaXZlbiBhbiBFUlJPUicgJSB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgIyBkZXZ0b29sIG1vZGlmeSBzaG91bGQgZmFpbAorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpKSwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnZGV2dG9vbCBtb2RpZnkgb24gJXMgc2hvdWxkIGhhdmUgZmFpbGVkLiBkZXZ0b29sIG91dHB1dDogJXMnICUgICh0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnZGV2dG9vbCBtb2RpZnkgb24gJXMgc2hvdWxkIGhhdmUgZ2l2ZW4gYW4gRVJST1InICUgdGVzdHJlY2lwZSkKKworICAgIEBPRVRlc3RJRCgxMzY1KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X25hdGl2ZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgICMgVHJ5IG1vZGlmeWluZyBzb21lIHJlY2lwZXMKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisKKyAgICAgICAgYmJjbGFzc2V4dGVuZGVkID0gRmFsc2UKKyAgICAgICAgaW5oZXJpdG5hdGl2ZSA9IEZhbHNlCisgICAgICAgIHRlc3RyZWNpcGVzID0gJ210b29scy1uYXRpdmUgYXB0LW5hdGl2ZSBkZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlJy5zcGxpdCgpCisgICAgICAgIGZvciB0ZXN0cmVjaXBlIGluIHRlc3RyZWNpcGVzOgorICAgICAgICAgICAgY2hlY2tleHRlbmQgPSAnbmF0aXZlJyBpbiAoZ2V0X2JiX3ZhcignQkJDTEFTU0VYVEVORCcsIHRlc3RyZWNpcGUpIG9yICcnKS5zcGxpdCgpCisgICAgICAgICAgICBpZiBub3QgYmJjbGFzc2V4dGVuZGVkOgorICAgICAgICAgICAgICAgIGJiY2xhc3NleHRlbmRlZCA9IGNoZWNrZXh0ZW5kCisgICAgICAgICAgICBpZiBub3QgaW5oZXJpdG5hdGl2ZToKKyAgICAgICAgICAgICAgICBpbmhlcml0bmF0aXZlID0gbm90IGNoZWNrZXh0ZW5kCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdFUlJPUiBpbiBkZXZ0b29sIG1vZGlmeSBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnRVJST1IgaW4gZGV2dG9vbCBidWlsZCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnRVJST1IgaW4gZGV2dG9vbCByZXNldCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJiY2xhc3NleHRlbmRlZCwgJ05vbmUgb2YgdGhlc2UgcmVjaXBlcyBhcmUgQkJDTEFTU0VYVEVORGVkIHRvIG5hdGl2ZSAtIG5lZWQgdG8gYWRqdXN0IHRlc3RyZWNpcGVzIGxpc3Q6ICVzJyAlICcsICcuam9pbih0ZXN0cmVjaXBlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmhlcml0bmF0aXZlLCAnTm9uZSBvZiB0aGVzZSByZWNpcGVzIGRvICJpbmhlcml0IG5hdGl2ZSIgLSBuZWVkIHRvIGFkanVzdCB0ZXN0cmVjaXBlcyBsaXN0OiAlcycgJSAnLCAnLmpvaW4odGVzdHJlY2lwZXMpKQorCisKKyAgICBAT0VUZXN0SUQoMTE2NSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9naXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICB0ZXN0cmVjaXBlID0gJ21rZWxmaW1hZ2UnCisgICAgICAgIHNyY191cmkgPSBnZXRfYmJfdmFyKCdTUkNfVVJJJywgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUKKyAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW5zc3RhdGUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICdta2VsZmltYWdlXyouYmJhcHBlbmQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCcpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKyAgICAgICAgIyBUcnkgYnVpbGRpbmcKKyAgICAgICAgYml0YmFrZSh0ZXN0cmVjaXBlKQorCisgICAgQE9FVGVzdElEKDExNjcpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfbG9jYWxmaWxlcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbGlnaHR0cGQnCisgICAgICAgIHNyY191cmkgPSAoZ2V0X2JiX3ZhcignU1JDX1VSSScsIHRlc3RyZWNpcGUpIG9yICcnKS5zcGxpdCgpCisgICAgICAgIGZvdW5kbG9jYWwgPSBGYWxzZQorICAgICAgICBmb3IgaXRlbSBpbiBzcmNfdXJpOgorICAgICAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKCdmaWxlOi8vJykgYW5kICcucGF0Y2gnIG5vdCBpbiBpdGVtOgorICAgICAgICAgICAgICAgIGZvdW5kbG9jYWwgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kbG9jYWwsICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGZldGNoIGxvY2FsIGZpbGVzIGFuZCBpdCBzZWVtcyB0aGF0IGl0IG5vIGxvbmdlciBkb2VzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUKKyAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW5zc3RhdGUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2NvbmZpZ3VyZS5hYycpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQorICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnJXNfKi5iYmFwcGVuZCcgJSB0ZXN0cmVjaXBlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCcpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgVHJ5IGJ1aWxkaW5nCisgICAgICAgIGJpdGJha2UodGVzdHJlY2lwZSkKKworICAgIEBPRVRlc3RJRCgxMzc4KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X3ZpcnR1YWwoc2VsZik6CisgICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHZpcnR1YWwgcmVjaXBlCisgICAgICAgIHZpcnRyZWNpcGUgPSAndmlydHVhbC9tYWtlJworICAgICAgICByZWFscmVjaXBlID0gJ21ha2UnCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh2aXJ0cmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZS5hbScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQorICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnJXNfKi5iYmFwcGVuZCcgJSByZWFscmVjaXBlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odmlydHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyZWFscmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIGdpdCByZXBvCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisgICAgICAgICMgVGhpcyBpcyBwcm9iYWJseSBzdWZmaWNpZW50CisKKworICAgIEBPRVRlc3RJRCgxMTY5KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbWluaWNvbScKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KKyAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBOT1QgYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCisgICAgICAgICMgRmlyc3QsIG1vZGlmeSBhIHJlY2lwZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCisgICAgICAgICMgV2UgZG9uJ3QgdXNlIC14IGhlcmUgc28gdGhhdCB3ZSB0ZXN0IHRoZSBiZWhhdmlvdXIgb2YgZGV2dG9vbCBtb2RpZnkgd2l0aG91dCBpdAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgIyBDaGVjayBnaXQgcmVwbworICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorICAgICAgICAjIEFkZCBhIGNvdXBsZSBvZiBjb21taXRzCisgICAgICAgICMgRklYTUU6IHRoaXMgb25seSB0ZXN0cyBhZGRpbmcsIG5lZWQgdG8gYWxzbyB0ZXN0IHVwZGF0ZSBhbmQgcmVtb3ZlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiQWRkaXRpb25hbCBsaW5lIiA+PiBSRUFETUUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJDaGFuZ2UgdGhlIFJFQURNRSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICJBIG5ldyBmaWxlIiA+IGRldnRvb2wtbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgYWRkIGRldnRvb2wtbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgYSBuZXcgZmlsZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtICVzLyoucGF0Y2g7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi8wMDAxLUNoYW5nZS10aGUtUkVBRE1FLnBhdGNoJCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi8wMDAyLUFkZC1hLW5ldy1maWxlLnBhdGNoJCcpXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMTcyKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9naXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICB0ZXN0cmVjaXBlID0gJ210ZC11dGlscycKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KKyAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQorICAgICAgICBzZWxmLmFzc2VydEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgcGF0Y2hlcyA9IFtdCisgICAgICAgIGZvciBlbnRyeSBpbiBzcmNfdXJpLnNwbGl0KCk6CisgICAgICAgICAgICBpZiBlbnRyeS5zdGFydHN3aXRoKCdmaWxlOi8vJykgYW5kIGVudHJ5LmVuZHN3aXRoKCcucGF0Y2gnKToKKyAgICAgICAgICAgICAgICBwYXRjaGVzLmFwcGVuZChlbnRyeVs3Ol0uc3BsaXQoJzsnKVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihwYXRjaGVzKSwgMCwgJ1RoZSAlcyByZWNpcGUgZG9lcyBub3QgYXBwZWFyIHRvIGNvbnRhaW4gYW55IHBhdGNoZXMsIHNvIHRoaXMgdGVzdCB3aWxsIG5vdCBiZSBlZmZlY3RpdmUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKKyAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IGEgcmVjaXBlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKyAgICAgICAgIyBBZGQgYSBjb3VwbGUgb2YgY29tbWl0cworICAgICAgICAjIEZJWE1FOiB0aGlzIG9ubHkgdGVzdHMgYWRkaW5nLCBuZWVkIHRvIGFsc28gdGVzdCB1cGRhdGUgYW5kIHJlbW92ZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIiMgQWRkaXRpb25hbCBsaW5lIiA+PiBNYWtlZmlsZS5hbScsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgTWFrZWZpbGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiQSBuZXcgZmlsZSIgPiBkZXZ0b29sLW5ldy1maWxlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGFkZCBkZXZ0b29sLW5ldy1maWxlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIGEgbmV3IGZpbGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAtcmYgJXM7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKV0gKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJyBEJywgJy4qLyVzJCcgJSBwYXRjaCkgZm9yIHBhdGNoIGluIHBhdGNoZXNdCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGRpZmYgJXMnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSwgY3dkPW9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKKyAgICAgICAgYWRkbGluZXMgPSBbJ1NSQ1JFViA9ICIuKiInLCAnU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy9tdGQtdXRpbHMuZ2l0IiddCisgICAgICAgIHNyY3VyaWxpbmVzID0gc3JjX3VyaS5zcGxpdCgpCisgICAgICAgIHNyY3VyaWxpbmVzWzBdID0gJ1NSQ19VUkkgPSAiJyArIHNyY3VyaWxpbmVzWzBdCisgICAgICAgIHNyY3VyaWxpbmVzLmFwcGVuZCgnIicpCisgICAgICAgIHJlbW92ZWxpbmVzID0gWydTUkNSRVYgPSAiLioiJ10gKyBzcmN1cmlsaW5lcworICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnKysrJykgb3IgbGluZS5zdGFydHN3aXRoKCctLS0nKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJysnKToKKyAgICAgICAgICAgICAgICBtYXRjaGVkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBhZGRsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goaXRlbSwgbGluZVsxOl0uc3RyaXAoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlZCwgJ1VuZXhwZWN0ZWQgZGlmZiBhZGQgbGluZTogJXMnICUgbGluZSkKKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCctJyk6CisgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcmVtb3ZlbGluZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKGl0ZW0sIGxpbmVbMTpdLnN0cmlwKCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZWQsICdVbmV4cGVjdGVkIGRpZmYgcmVtb3ZlIGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgICMgTm93IHRyeSB3aXRoIGF1dG8gbW9kZQorICAgICAgICBydW5DbWQoJ2NkICVzOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSAtLXNob3ctdG9wbGV2ZWwnLCBjd2Q9b3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQorICAgICAgICB0b3BsZXZlbGRpciA9IHJlc3VsdC5vdXRwdXQuc3RyaXAoKQorICAgICAgICByZWxwYXRjaHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdG9wbGV2ZWxkaXIpLCB0ZXN0cmVjaXBlKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsIG9zLnBhdGgucmVscGF0aChyZWNpcGVmaWxlLCB0b3BsZXZlbGRpcikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICclcy8wMDAxLUNoYW5nZS10aGUtTWFrZWZpbGUucGF0Y2gnICUgcmVscGF0Y2hwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnJXMvMDAwMi1BZGQtYS1uZXctZmlsZS5wYXRjaCcgJSByZWxwYXRjaHBhdGgpXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMTcwKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9hcHBlbmQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQorICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIE5PVCBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKKyAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IGEgcmVjaXBlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgdGVtcHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc291cmNlJykKKyAgICAgICAgdGVtcGxheWVyZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdsYXllcicpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBzcmNkaXIpKQorICAgICAgICAjIENoZWNrIGdpdCByZXBvCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBzcmNkaXIpCisgICAgICAgICMgQWRkIGEgY29tbWl0CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgic2VkICdzIVxcKCNkZWZpbmUgVkVSU0lPTlxcVypcIlteXCJdKlxcKVwiIVxcMS1jdXN0b21cIiEnIC1pIFJlYWRNZS5jIiwgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQWRkIG91ciBjdXN0b20gdmVyc2lvbiInLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtIC1mICVzLyoucGF0Y2g7IGdpdCBjaGVja291dCAuJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUpKQorICAgICAgICAjIENyZWF0ZSBhIHRlbXBvcmFyeSBsYXllciBhbmQgYWRkIGl0IHRvIGJibGF5ZXJzLmNvbmYKKyAgICAgICAgc2VsZi5fY3JlYXRlX3RlbXBfbGF5ZXIodGVtcGxheWVyZGlyLCBUcnVlLCAnc2VsZnRlc3R1cGRhdGVyZWNpcGUnKQorICAgICAgICAjIENyZWF0ZSB0aGUgYmJhcHBlbmQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUgaXMgc3RpbGwgY2xlYW4KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKKyAgICAgICAgIyBDaGVjayBiYmFwcGVuZCB3YXMgY3JlYXRlZAorICAgICAgICBzcGxpdHBhdGggPSBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkuc3BsaXQob3Muc2VwKQorICAgICAgICBhcHBlbmRkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCBzcGxpdHBhdGhbLTJdLCBzcGxpdHBhdGhbLTFdKQorICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBhcHBlbmRkaXIpCisgICAgICAgIHBhdGNoZmlsZSA9IG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUsICcwMDAxLUFkZC1vdXItY3VzdG9tLXZlcnNpb24ucGF0Y2gnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhwYXRjaGZpbGUsICdQYXRjaCBmaWxlIG5vdCBjcmVhdGVkJykKKworICAgICAgICAjIENoZWNrIGJiYXBwZW5kIGNvbnRlbnRzCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQWRkLW91ci1jdXN0b20tdmVyc2lvbi5wYXRjaCJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpKQorCisgICAgICAgICMgQ2hlY2sgd2UgY2FuIHJ1biBpdCBhZ2FpbiBhbmQgYmJhcHBlbmQgaXNuJ3QgbW9kaWZpZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCisgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgZi5yZWFkbGluZXMoKSkKKyAgICAgICAgIyBEcm9wIG5ldyBjb21taXQgYW5kIGNoZWNrIHBhdGNoIGdldHMgZGVsZXRlZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCBIRUFEXicsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMocGF0Y2hmaWxlLCAnUGF0Y2ggZmlsZSBub3QgZGVsZXRlZCcpCisgICAgICAgIGV4cGVjdGVkbGluZXMyID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lczIsIGYucmVhZGxpbmVzKCkpCisgICAgICAgICMgUHV0IGNvbW1pdCBiYWNrIGFuZCBjaGVjayB3ZSBjYW4gcnVuIGl0IGlmIGxheWVyIGlzbid0IGluIGJibGF5ZXJzLmNvbmYKKyAgICAgICAgb3MucmVtb3ZlKGJiYXBwZW5kZmlsZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJBZGQgb3VyIGN1c3RvbSB2ZXJzaW9uIicsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV0FSTklORzogU3BlY2lmaWVkIGxheWVyIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCBpbiBiYmxheWVycy5jb25mJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMocGF0Y2hmaWxlLCAnUGF0Y2ggZmlsZSBub3QgY3JlYXRlZCAod2l0aCBkaXNhYmxlZCBsYXllciknKQorICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCkpCisgICAgICAgICMgRGVsZXRpbmcgaXNuJ3QgZXhwZWN0ZWQgdG8gd29yayB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzCisKKyAgICBAT0VUZXN0SUQoMTE3MSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfYXBwZW5kX2dpdChzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbXRkLXV0aWxzJworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQorICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICBmb3IgZW50cnkgaW4gc3JjX3VyaS5zcGxpdCgpOgorICAgICAgICAgICAgaWYgZW50cnkuc3RhcnRzd2l0aCgnZ2l0Oi8vJyk6CisgICAgICAgICAgICAgICAgZ2l0X3VyaSA9IGVudHJ5CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKKyAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IGEgcmVjaXBlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgdGVtcHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc291cmNlJykKKyAgICAgICAgdGVtcGxheWVyZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdsYXllcicpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBzcmNkaXIpKQorICAgICAgICAjIENoZWNrIGdpdCByZXBvCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBzcmNkaXIpCisgICAgICAgICMgQWRkIGEgY29tbWl0CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiIyBBZGRpdGlvbmFsIGxpbmUiID4+IE1ha2VmaWxlLmFtJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQ2hhbmdlIHRoZSBNYWtlZmlsZSInLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtIC1mICVzLyoucGF0Y2g7IGdpdCBjaGVja291dCAuJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUpKQorICAgICAgICAjIENyZWF0ZSBhIHRlbXBvcmFyeSBsYXllcgorICAgICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCAnY29uZicpKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBsYXllcmRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdCQlBBVEggLj0gIjoke0xBWUVSRElSfSJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9DT0xMRUNUSU9OUyArPSAib2VzZWxmdGVzdHRlbXBsYXllciJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIl4ke0xBWUVSRElSfS8iXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BSSU9SSVRZX29lc2VsZnRlc3R0ZW1wbGF5ZXIgPSAiOTk5IlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOX0lHTk9SRV9FTVBUWV9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIjEiXG4nKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMgfHwgdHJ1ZScgJSB0ZW1wbGF5ZXJkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYmFwcGVuZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUgaXMgc3RpbGwgY2xlYW4KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKKyAgICAgICAgIyBDaGVjayBiYmFwcGVuZCB3YXMgY3JlYXRlZAorICAgICAgICBzcGxpdHBhdGggPSBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkuc3BsaXQob3Muc2VwKQorICAgICAgICBhcHBlbmRkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCBzcGxpdHBhdGhbLTJdLCBzcGxpdHBhdGhbLTFdKQorICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBhcHBlbmRkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUpLCAnUGF0Y2ggZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgY3JlYXRlZCcpCisKKyAgICAgICAgIyBDaGVjayBiYmFwcGVuZCBjb250ZW50cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICBleHBlY3RlZGxpbmVzID0gc2V0KFsnU1JDUkVWID0gIiVzIlxuJyAlIHJlc3VsdC5vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQorICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKKworICAgICAgICAjIENoZWNrIHdlIGNhbiBydW4gaXQgYWdhaW4gYW5kIGJiYXBwZW5kIGlzbid0IG1vZGlmaWVkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKKyAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCisgICAgICAgICMgRHJvcCBuZXcgY29tbWl0IGFuZCBjaGVjayBTUkNSRVYgY2hhbmdlcworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCBIRUFEXicsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUpLCAnUGF0Y2ggZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgY3JlYXRlZCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBzZXQoWydTUkNSRVYgPSAiJXMiXG4nICUgcmVzdWx0Lm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAiJXMiXG4nICUgZ2l0X3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10pCisgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgc2V0KGYucmVhZGxpbmVzKCkpKQorICAgICAgICAjIFB1dCBjb21taXQgYmFjayBhbmQgY2hlY2sgd2UgY2FuIHJ1biBpdCBpZiBsYXllciBpc24ndCBpbiBiYmxheWVycy5jb25mCisgICAgICAgIG9zLnJlbW92ZShiYmFwcGVuZGZpbGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQ2hhbmdlIHRoZSBNYWtlZmlsZSInLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBjd2Q9c2VsZi5idWlsZGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdXQVJOSU5HOiBTcGVjaWZpZWQgbGF5ZXIgaXMgbm90IGN1cnJlbnRseSBlbmFibGVkIGluIGJibGF5ZXJzLmNvbmYnLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCB0ZXN0cmVjaXBlKSwgJ1BhdGNoIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIGNyZWF0ZWQnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICBleHBlY3RlZGxpbmVzID0gc2V0KFsnU1JDUkVWID0gIiVzIlxuJyAlIHJlc3VsdC5vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQorICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKKyAgICAgICAgIyBEZWxldGluZyBpc24ndCBleHBlY3RlZCB0byB3b3JrIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMKKworICAgIEBPRVRlc3RJRCgxMzcwKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlcyhzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgdGhhdCBsb2NhbCBzb3VyY2UgZmlsZXMgYXJlIGNvcGllZCBvdmVyIGluc3RlYWQgb2YgcGF0Y2hlZCIiIgorICAgICAgICB0ZXN0cmVjaXBlID0gJ21ha2VkZXZzJworICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgICMgU2V0dXAgc3JjdHJlZSBmb3IgbW9kaWZ5aW5nIHRoZSByZWNpcGUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlCisgICAgICAgICMgYnVpbGRpbmcgaXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICAjIENoZWNrIGdpdCByZXBvCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisgICAgICAgICMgVHJ5IGJ1aWxkaW5nIGp1c3QgdG8gZW5zdXJlIHdlIGhhdmVuJ3QgYnJva2VuIHRoYXQKKyAgICAgICAgYml0YmFrZSgiJXMiICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBFZGl0IC8gY29tbWl0IGxvY2FsIHNvdXJjZQorICAgICAgICBydW5DbWQoJ2VjaG8gIi8qIEZvb2JhciAqLyIgPj4gb2UtbG9jYWwtZmlsZXMvbWFrZWRldnMuYycsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2VjaG8gIkZvbyIgPiBvZS1sb2NhbC1maWxlcy9uZXctbG9jYWwnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdlY2hvICJCYXIiID4gbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG5ldy1maWxlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIG5ldyBmaWxlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgZ2l0IGNsZWFuIC1mZCAuOyBnaXQgY2hlY2tvdXQgLicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKKyAgICAgICAgcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgTScsICcuKi9tYWtlZGV2cy9tYWtlZGV2cy5jJCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi9tYWtlZGV2cy9uZXctbG9jYWwkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qL21ha2VkZXZzLzAwMDEtQWRkLW5ldy1maWxlLnBhdGNoJCcpXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMzcxKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlc18yKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBsb2NhbCBzb3VyY2UgZmlsZXMgc3VwcG9ydCB3aGVuIG9lLWxvY2FsLWZpbGVzIGlzIGluIEdpdCIiIgorICAgICAgICB0ZXN0cmVjaXBlID0gJ2x6bycKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICAjIFNldHVwIHNyY3RyZWUgZm9yIG1vZGlmeWluZyB0aGUgcmVjaXBlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgIyBDaGVjayBnaXQgcmVwbworICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorICAgICAgICAjIEFkZCBvZS1sb2NhbC1maWxlcyB0byBHaXQKKyAgICAgICAgcnVuQ21kKCdybSBvZS1sb2NhbC1maWxlcy8uZ2l0aWdub3JlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBvZS1sb2NhbC1maWxlcycsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBsb2NhbCBzb3VyY2VzIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICAjIEVkaXQgLyBjb21taXQgbG9jYWwgc291cmNlcworICAgICAgICBydW5DbWQoJ2VjaG8gIiMgRm9vYmFyIiA+PiBvZS1sb2NhbC1maWxlcy9hY2luY2x1ZGUubTQnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1hbSAiRWRpdCBleGlzdGluZyBmaWxlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBybSBvZS1sb2NhbC1maWxlcy9ydW4tcHRlc3QnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tIlJlbW92ZSBmaWxlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2VjaG8gIkZvbyIgPiBvZS1sb2NhbC1maWxlcy9uZXctbG9jYWwnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG9lLWxvY2FsLWZpbGVzL25ldy1sb2NhbCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBuZXcgbG9jYWwgZmlsZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdlY2hvICJHYXIiID4gbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG5ldy1maWxlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIG5ldyBmaWxlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgZ2l0IGNsZWFuIC1mZCAuOyBnaXQgY2hlY2tvdXQgLicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKKyAgICAgICAgIyBDaGVja291dCB1bm1vZGlmaWVkIGZpbGUgdG8gd29ya2luZyBjb3B5IC0+IGRldnRvb2wgc2hvdWxkIHN0aWxsIHBpY2sKKyAgICAgICAgIyB0aGUgbW9kaWZpZWQgdmVyc2lvbiBmcm9tIEhFQUQKKyAgICAgICAgcnVuQ21kKCdnaXQgY2hlY2tvdXQgSEVBRF4gLS0gb2UtbG9jYWwtZmlsZXMvYWNpbmNsdWRlLm00JywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIE0nLCAnLiovYWNpbmNsdWRlLm00JCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgRCcsICcuKi9ydW4tcHRlc3QkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qL25ldy1sb2NhbCQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovMDAwMS1BZGQtbmV3LWZpbGUucGF0Y2gkJyldCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE2MjcpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX2ZpbGVzXzMoc2VsZik6CisgICAgICAgICMgRmlyc3QsIG1vZGlmeSB0aGUgcmVjaXBlCisgICAgICAgIHRlc3RyZWNpcGUgPSAnZGV2dG9vbC10ZXN0LWxvY2Fsb25seScKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KKyAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBNb2RpZnkgb25lIGZpbGUKKyAgICAgICAgcnVuQ21kKCdlY2hvICJBbm90aGVyIGxpbmUiID4+IGZpbGUyJywgY3dkPW9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCB0ZXN0cmVjaXBlLCAnb2UtbG9jYWwtZmlsZXMnKSkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtICVzLyo7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMvZmlsZTIkJyAlIHRlc3RyZWNpcGUpXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNjI5KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9wYXRjaF9neihzZWxmKToKKyAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IHRoZSByZWNpcGUKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdkZXZ0b29sLXRlc3QtcGF0Y2gtZ3onCisgICAgICAgIGlmIGdldF9iYl92YXIoJ0RJU1RSTycpID09ICdwb2t5LXRpbnknOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiVGhlIERJU1RSTyAncG9reS10aW55JyBkb2VzIG5vdCBwcm92aWRlIHRoZSBkZXBlbmRlbmNpZXMgbmVlZGVkIGJ5ICVzIiAlIHRlc3RyZWNpcGUpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCisgICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgTW9kaWZ5IG9uZSBmaWxlCisgICAgICAgIHNyY3RyZWUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgdGVzdHJlY2lwZSkKKyAgICAgICAgcnVuQ21kKCdlY2hvICJBbm90aGVyIGxpbmUiID4+IFJFQURNRScsIGN3ZD1zcmN0cmVlKQorICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLWEgLS1hbWVuZCAtLW5vLWVkaXQnLCBjd2Q9c3JjdHJlZSkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtICVzLyo7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMvcmVhZG1lLnBhdGNoLmd6JCcgJSB0ZXN0cmVjaXBlKV0KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCisgICAgICAgIHBhdGNoX2d6ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgJ3JlYWRtZS5wYXRjaC5neicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZmlsZSAlcycgJSBwYXRjaF9neikKKyAgICAgICAgaWYgJ2d6aXAgY29tcHJlc3NlZCBkYXRhJyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTmV3IHBhdGNoIGZpbGUgaXMgbm90IGd6aXBwZWQgLSBmaWxlIHJlcG9ydHM6XG4lcycgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDE2MjgpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX2ZpbGVzX3N1YmRpcihzZWxmKToKKyAgICAgICAgIyBUcnkgZGV2dG9vbCB1cGRhdGUtcmVjaXBlIG9uIGEgcmVjaXBlIHRoYXQgaGFzIGEgZmlsZSB3aXRoIHN1YmRpcj0gc2V0IGluCisgICAgICAgICMgU1JDX1VSSSBzdWNoIHRoYXQgaXQgb3ZlcndyaXRlcyBhIGZpbGUgdGhhdCB3YXMgaW4gYW4gYXJjaGl2ZSB0aGF0CisgICAgICAgICMgd2FzIGFsc28gaW4gU1JDX1VSSQorICAgICAgICAjIEZpcnN0LCBtb2RpZnkgdGhlIHJlY2lwZQorICAgICAgICB0ZXN0cmVjaXBlID0gJ2RldnRvb2wtdGVzdC1zdWJkaXInCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCisgICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHRlc3RmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHRlc3RyZWNpcGUsICd0ZXN0ZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHRlc3RmaWxlLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICB3aXRoIG9wZW4odGVzdGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGNvbnRlbnRzID0gZi5yZWFkKCkucnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50cywgJ01vZGlmaWVkIHZlcnNpb24nLCAnRmlsZSBoYXMgYXBwYXJlbnRseSBub3QgYmVlbiBvdmVyd3JpdHRlbiBhcyBpdCBzaG91bGQgaGF2ZSBiZWVuJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgdXBkYXRlLXJlY2lwZSB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtICVzLyo7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gW10KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTE2MykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2V4dHJhY3Qoc2VsZik6CisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgIyBUcnkgZGV2dG9vbCBleHRyYWN0CisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGV4dHJhY3QgbWF0Y2hib3gtdGVybWluYWwgJXMnICUgdGVtcGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZS5hbScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorCisgICAgQE9FVGVzdElEKDEzNzkpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9leHRyYWN0X3ZpcnR1YWwoc2VsZik6CisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgIyBUcnkgZGV2dG9vbCBleHRyYWN0CisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGV4dHJhY3QgdmlydHVhbC9tYWtlICVzJyAlIHRlbXBkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUuYW0nKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKworICAgIEBPRVRlc3RJRCgxMTY4KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfcmVzZXRfYWxsKHNlbGYpOgorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgdGVzdHJlY2lwZTEgPSAnbWRhZG0nCisgICAgICAgIHRlc3RyZWNpcGUyID0gJ2Nyb25pZScKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAteCAlcyAlcycgJSAodGVzdHJlY2lwZTEsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlMSkpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IC14ICVzICVzJyAlICh0ZXN0cmVjaXBlMiwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUyKSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSB0ZXN0cmVjaXBlMSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHRlc3RyZWNpcGUyKQorICAgICAgICBzdGFtcHByZWZpeDEgPSBnZXRfYmJfdmFyKCdTVEFNUCcsIHRlc3RyZWNpcGUxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhbXBwcmVmaXgxLCAnVW5hYmxlIHRvIGdldCBTVEFNUCB2YWx1ZSBmb3IgcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUxKQorICAgICAgICBzdGFtcHByZWZpeDIgPSBnZXRfYmJfdmFyKCdTVEFNUCcsIHRlc3RyZWNpcGUyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhbXBwcmVmaXgyLCAnVW5hYmxlIHRvIGdldCBTVEFNUCB2YWx1ZSBmb3IgcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLWEnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUxLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUyLCByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbih0ZXN0cmVjaXBlMSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbih0ZXN0cmVjaXBlMiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgbWF0Y2hlczEgPSBnbG9iLmdsb2Ioc3RhbXBwcmVmaXgxICsgJyonKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoZXMxLCAnU3RhbXAgZmlsZXMgZXhpc3QgZm9yIHJlY2lwZSAlcyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCcgJSB0ZXN0cmVjaXBlMSkKKyAgICAgICAgbWF0Y2hlczIgPSBnbG9iLmdsb2Ioc3RhbXBwcmVmaXgyICsgJyonKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoZXMyLCAnU3RhbXAgZmlsZXMgZXhpc3QgZm9yIHJlY2lwZSAlcyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCcgJSB0ZXN0cmVjaXBlMikKKworICAgIEBPRVRlc3RJRCgxMjcyKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfZGVwbG95X3RhcmdldChzZWxmKToKKyAgICAgICAgIyBOT1RFOiBXaGlsc3QgdGhpcyB0ZXN0IHdvdWxkIHNlZW1pbmdseSBiZSBiZXR0ZXIgcGxhY2VkIGFzIGEgcnVudGltZSB0ZXN0LAorICAgICAgICAjIHVuZm9ydHVuYXRlbHkgdGhlIHJ1bnRpbWUgdGVzdHMgcnVuIHVuZGVyIGJpdGJha2UgYW5kIHlvdSBjYW4ndCBydW4KKyAgICAgICAgIyBkZXZ0b29sIHdpdGhpbiBiaXRiYWtlIChzaW5jZSBkZXZ0b29sIG5lZWRzIHRvIHJ1biBiaXRiYWtlIGl0c2VsZikuCisgICAgICAgICMgQWRkaXRpb25hbGx5IHdlIGFyZSB0ZXN0aW5nIGJ1aWxkLXRpbWUgZnVuY3Rpb25hbGl0eSBhcyB3ZWxsLCBzbworICAgICAgICAjIHJlYWxseSB0aGlzIGhhcyB0byBiZSBkb25lIGFzIGFuIG9lLXNlbGZ0ZXN0IHRlc3QuCisgICAgICAgICMKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJykKKyAgICAgICAgaWYgbm90IG1hY2hpbmUuc3RhcnRzd2l0aCgncWVtdScpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGhpcyB0ZXN0IG9ubHkgd29ya3Mgd2l0aCBxZW11IG1hY2hpbmVzJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCcvZXRjL3J1bnFlbXUtbm9zdWRvJyk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdZb3UgbXVzdCBzZXQgdXAgdGFwIGRldmljZXMgd2l0aCBzY3JpcHRzL3J1bnFlbXUtZ2VuLXRhcGRldnMgYmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0JykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdQQVRIPSIkUEFUSDovc2JpbjovdXNyL3NiaW4iIGlwIHR1bnRhcCBzaG93JywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBpZiByZXN1bHQuc3RhdHVzICE9IDA6CisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ1BBVEg9IiRQQVRIOi9zYmluOi91c3Ivc2JpbiIgaWZjb25maWcgLWEnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgICAgICBpZiByZXN1bHQuc3RhdHVzICE9IDA6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnRmFpbGVkIHRvIGRldGVybWluZSBpZiB0YXAgZGV2aWNlcyBleGlzdCB3aXRoIGlmY29uZmlnIG9yIGlwOiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgndGFwJyk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ05vIHRhcCBkZXZpY2VzIGZvdW5kIC0geW91IG11c3Qgc2V0IHVwIHRhcCBkZXZpY2VzIHdpdGggc2NyaXB0cy9ydW5xZW11LWdlbi10YXBkZXZzIGJlZm9yZSBydW5uaW5nIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgICMgRGVmaW5pdGlvbnMKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKKyAgICAgICAgdGVzdGZpbGUgPSAnL3NiaW4vbWRhZG0nCisgICAgICAgIHRlc3RpbWFnZSA9ICdvZS1zZWxmdGVzdC1pbWFnZScKKyAgICAgICAgdGVzdGNvbW1hbmQgPSAnL3NiaW4vbWRhZG0gLS1oZWxwJworICAgICAgICAjIEJ1aWxkIGFuIGltYWdlIHRvIHJ1bgorICAgICAgICBiaXRiYWtlKCIlcyBxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUiICUgdGVzdGltYWdlKQorICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdGltYWdlKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtZiAlcy8lcyonICUgKGRlcGxveV9kaXJfaW1hZ2UsIHRlc3RpbWFnZSkpCisgICAgICAgICMgQ2xlYW4gcmVjaXBlIHNvIHRoZSBmaXJzdCBkZXBsb3kgd2lsbCBmYWlsCisgICAgICAgIGJpdGJha2UoIiVzIC1jIGNsZWFuIiAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgVHJ5IGRldnRvb2wgbW9kaWZ5CisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICAjIFRlc3QgdGhhdCBkZXBsb3ktdGFyZ2V0IGF0IHRoaXMgcG9pbnQgZmFpbHMgKHByb3Blcmx5KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZGVwbG95LXRhcmdldCAtbiAlcyByb290QGxvY2FsaG9zdCcgJSB0ZXN0cmVjaXBlLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0Lm91dHB1dCwgMCwgJ2RldnRvb2wgZGVwbG95LXRhcmdldCBzaG91bGQgaGF2ZSBmYWlsZWQsIG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZXN1bHQub3V0cHV0LCAnVHJhY2ViYWNrJywgJ2RldnRvb2wgZGVwbG95LXRhcmdldCBzaG91bGQgaGF2ZSBmYWlsZWQgd2l0aCBhIHByb3BlciBlcnJvciBub3QgYSB0cmFjZWJhY2ssIG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgRmlyc3QgdHJ5IGEgZHJ5LXJ1biBvZiBkZXBsb3ktdGFyZ2V0CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IC1uICVzIHJvb3RAbG9jYWxob3N0JyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyAgJXMnICUgdGVzdGZpbGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQm9vdCB0aGUgaW1hZ2UKKyAgICAgICAgd2l0aCBydW5xZW11KHRlc3RpbWFnZSkgYXMgcWVtdToKKyAgICAgICAgICAgICMgTm93IHJlYWxseSB0ZXN0IGRlcGxveS10YXJnZXQKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IC1jICVzIHJvb3RAJXMnICUgKHRlc3RyZWNpcGUsIHFlbXUuaXApKQorICAgICAgICAgICAgIyBSdW4gYSB0ZXN0IGNvbW1hbmQgdG8gc2VlIGlmIGl0IHdhcyBpbnN0YWxsZWQgcHJvcGVybHkKKyAgICAgICAgICAgIHNzaGFyZ3MgPSAnLW8gVXNlcktub3duSG9zdHNGaWxlPS9kZXYvbnVsbCAtbyBTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9bm8nCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NzaCAlcyByb290QCVzICVzJyAlIChzc2hhcmdzLCBxZW11LmlwLCB0ZXN0Y29tbWFuZCkpCisgICAgICAgICAgICAjIENoZWNrIGlmIGl0IGRlcGxveWVkIGFsbCBvZiB0aGUgZmlsZXMgd2l0aCB0aGUgcmlnaHQgb3duZXJzaGlwL3Blcm1zCisgICAgICAgICAgICAjIEZpcnN0IGxvb2sgb24gdGhlIGhvc3QgLSBuZWVkIHRvIGRvIHRoaXMgdW5kZXIgcHNldWRvIHRvIGdldCB0aGUgY29ycmVjdCBvd25lcnNoaXAvcGVybXMKKyAgICAgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0QnLCAnRkFLRVJPT1RFTlYnLCAnRkFLRVJPT1RDTUQnXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgIGluc3RhbGxkaXIgPSBiYl92YXJzWydEJ10KKyAgICAgICAgICAgIGZha2Vyb290ZW52ID0gYmJfdmFyc1snRkFLRVJPT1RFTlYnXQorICAgICAgICAgICAgZmFrZXJvb3RjbWQgPSBiYl92YXJzWydGQUtFUk9PVENNRCddCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJyVzICVzIGZpbmQgLiAtdHlwZSBmIC1leGVjIGxzIC1sIHt9IFw7JyAlIChmYWtlcm9vdGVudiwgZmFrZXJvb3RjbWQpLCBjd2Q9aW5zdGFsbGRpcikKKyAgICAgICAgICAgIGZpbGVsaXN0MSA9IHNlbGYuX3Byb2Nlc3NfbHNfb3V0cHV0KHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgICAgICMgTm93IGxvb2sgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgdGVtcGRpcjIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcjIpCisgICAgICAgICAgICB0bXBmaWxlbGlzdCA9IG9zLnBhdGguam9pbih0ZW1wZGlyMiwgJ2ZpbGVzLnR4dCcpCisgICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZWxpc3QsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmaWxlbGlzdDE6CisgICAgICAgICAgICAgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNwbGl0bGluZVstMV0gKyAnXG4nKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdjYXQgJXMgfCBzc2ggLXEgJXMgcm9vdEAlcyBcJ3hhcmdzIGxzIC1sXCcnICUgKHRtcGZpbGVsaXN0LCBzc2hhcmdzLCBxZW11LmlwKSkKKyAgICAgICAgICAgIGZpbGVsaXN0MiA9IHNlbGYuX3Byb2Nlc3NfbHNfb3V0cHV0KHJlc3VsdC5vdXRwdXQpCisgICAgICAgICAgICBmaWxlbGlzdDEuc29ydChrZXk9bGFtYmRhIGl0ZW06IGl0ZW0uc3BsaXQoKVstMV0pCisgICAgICAgICAgICBmaWxlbGlzdDIuc29ydChrZXk9bGFtYmRhIGl0ZW06IGl0ZW0uc3BsaXQoKVstMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVsaXN0MSwgZmlsZWxpc3QyKQorICAgICAgICAgICAgIyBUZXN0IHVuZGVwbG95LXRhcmdldAorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVuZGVwbG95LXRhcmdldCAtYyAlcyByb290QCVzJyAlICh0ZXN0cmVjaXBlLCBxZW11LmlwKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc3NoICVzIHJvb3RAJXMgJXMnICUgKHNzaGFyZ3MsIHFlbXUuaXAsIHRlc3Rjb21tYW5kKSwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQsIDAsICd1bmRlcGxveS10YXJnZXQgZGlkIG5vdCByZW1vdmUgY29tbWFuZCBhcyBpdCBzaG91bGQgaGF2ZScpCisKKyAgICBAT0VUZXN0SUQoMTM2NikKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkX2ltYWdlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGRldnRvb2wgYnVpbGQtaW1hZ2UgcGx1Z2luIiIiCisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgaW1hZ2UpCisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuJyAlIGltYWdlKQorICAgICAgICAjIEFkZCB0YXJnZXQgYW5kIG5hdGl2ZSByZWNpcGVzIHRvIHdvcmtzcGFjZQorICAgICAgICByZWNpcGVzID0gWydtZGFkbScsICdwYXJ0ZWQtbmF0aXZlJ10KKyAgICAgICAgZm9yIHJlY2lwZSBpbiByZWNpcGVzOgorICAgICAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSByZWNpcGUpCisgICAgICAgICAgICBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlIChyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICAjIFRyeSB0byBidWlsZCBpbWFnZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQtaW1hZ2UgJXMnICUgaW1hZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LCAwLCAnZGV2dG9vbCBidWlsZC1pbWFnZSBmYWlsZWQnKQorICAgICAgICAjIENoZWNrIGlmIGltYWdlIGNvbnRhaW5zIGV4cGVjdGVkIHBhY2thZ2VzCisgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKKyAgICAgICAgaW1hZ2VfbGlua19uYW1lID0gZ2V0X2JiX3ZhcignSU1BR0VfTElOS19OQU1FJywgaW1hZ2UpCisgICAgICAgIHJlcXBrZ3MgPSBbaXRlbSBmb3IgaXRlbSBpbiByZWNpcGVzIGlmIG5vdCBpdGVtLmVuZHN3aXRoKCctbmF0aXZlJyldCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9pbWFnZSwgaW1hZ2VfbGlua19uYW1lICsgJy5tYW5pZmVzdCcpLCAncicpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIHNwbGl0dmFsID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICAgICAgaWYgc3BsaXR2YWw6CisgICAgICAgICAgICAgICAgICAgIHBrZyA9IHNwbGl0dmFsWzBdCisgICAgICAgICAgICAgICAgICAgIGlmIHBrZyBpbiByZXFwa2dzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVxcGtncy5yZW1vdmUocGtnKQorICAgICAgICBpZiByZXFwa2dzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdUaGUgZm9sbG93aW5nIHBhY2thZ2VzIHdlcmUgbm90IHByZXNlbnQgaW4gdGhlIGltYWdlIGFzIGV4cGVjdGVkOiAlcycgJSAnLCAnLmpvaW4ocmVxcGtncykpCisKKyAgICBAT0VUZXN0SUQoMTM2NykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZ3JhZGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIENoZWNrIHBhcmFtZXRlcnMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZ3JhZGUgLWgnKQorICAgICAgICBmb3IgcGFyYW0gaW4gJ3JlY2lwZW5hbWUgc3JjdHJlZSAtLXZlcnNpb24gLVYgLS1icmFuY2ggLWIgLS1rZWVwLXRlbXAgLS1uby1wYXRjaCcuc3BsaXQoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGFyYW0sIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgRm9yIHRoZSBtb21lbnQsIHdlIGFyZSB1c2luZyBhIHJlYWwgcmVjaXBlLgorICAgICAgICByZWNpcGUgPSAnZGV2dG9vbC11cGdyYWRlLXRlc3QxJworICAgICAgICB2ZXJzaW9uID0gJzEuNi4wJworICAgICAgICBvbGRyZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHJlY2lwZSkKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgICMgQ2hlY2sgdGhhdCByZWNpcGUgaXMgbm90IGFscmVhZHkgdW5kZXIgZGV2dG9vbCBjb250cm9sCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayB1cGdyYWRlLiBDb2RlIGRvZXMgbm90IGNoZWNrIGlmIG5ldyBQViBpcyBvbGRlciBvciBuZXdlciB0aGF0IGN1cnJlbnQgUFYsIHNvLCBpdCBtYXkgYmUgdGhhdAorICAgICAgICAjIHdlIGFyZSBkb3duZ3JhZGluZyBpbnN0ZWFkIG9mIHVwZ3JhZGluZy4KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZ3JhZGUgJXMgJXMgLVYgJXMnICUgKHJlY2lwZSwgdGVtcGRpciwgdmVyc2lvbikpCisgICAgICAgICMgQ2hlY2sgaWYgc3JjdHJlZSBhdCBsZWFzdCBpcyBwb3B1bGF0ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihvcy5saXN0ZGlyKHRlbXBkaXIpKSA+IDAsICdzcmN0cmVlICglcykgc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIG5ldyAoJXMpIHNvdXJjZSBjb2RlJyAlICh0ZW1wZGlyLCB2ZXJzaW9uKSkKKyAgICAgICAgIyBDaGVjayBuZXcgcmVjaXBlIHN1YmRpcmVjdG9yeSBpcyBwcmVzZW50CisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUsICclcy0lcycgJSAocmVjaXBlLCB2ZXJzaW9uKSksICdSZWNpcGUgZm9sZGVyIHNob3VsZCBleGlzdCcpCisgICAgICAgICMgQ2hlY2sgbmV3IHJlY2lwZSBmaWxlIGlzIHByZXNlbnQKKyAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUsICclc18lcy5iYicgJSAocmVjaXBlLCB2ZXJzaW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMobmV3cmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIHNob3VsZCBleGlzdCBhZnRlciB1cGdyYWRlJykKKyAgICAgICAgIyBDaGVjayBkZXZ0b29sIHN0YXR1cyBhbmQgbWFrZSBzdXJlIHJlY2lwZSBpcyBwcmVzZW50CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZSBnb3QgY2hhbmdlZCBhcyBleHBlY3RlZAorICAgICAgICB3aXRoIG9wZW4ob2xkcmVjaXBlZmlsZSArICcudXBncmFkZWQnLCAncicpIGFzIGY6CisgICAgICAgICAgICBkZXNpcmVkbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggb3BlbihuZXdyZWNpcGVmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBuZXdsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXNpcmVkbGluZXMsIG5ld2xpbmVzKQorICAgICAgICAjIENoZWNrIGRldnRvb2wgcmVzZXQgcmVjaXBlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAlcyAtbicgJSByZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgcmVzZXR0aW5nJykKKworICAgIEBPRVRlc3RJRCgxNDMzKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBncmFkZV9naXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZWNpcGUgPSAnZGV2dG9vbC11cGdyYWRlLXRlc3QyJworICAgICAgICBjb21taXQgPSAnNmNjNjA3N2EzNmZlMjY0OGE1Zjk5M2ZlN2MxNmM5NjMyZjk0NjUxNycKKyAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICAjIENoZWNrIHRoYXQgcmVjaXBlIGlzIG5vdCBhbHJlYWR5IHVuZGVyIGRldnRvb2wgY29udHJvbAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgdXBncmFkZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBncmFkZSAlcyAlcyAtUyAlcycgJSAocmVjaXBlLCB0ZW1wZGlyLCBjb21taXQpKQorICAgICAgICAjIENoZWNrIGlmIHNyY3RyZWUgYXQgbGVhc3QgaXMgcG9wdWxhdGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ob3MubGlzdGRpcih0ZW1wZGlyKSkgPiAwLCAnc3JjdHJlZSAoJXMpIHNob3VsZCBiZSBwb3B1bGF0ZWQgd2l0aCBuZXcgKCVzKSBzb3VyY2UgY29kZScgJSAodGVtcGRpciwgY29tbWl0KSkKKyAgICAgICAgIyBDaGVjayBuZXcgcmVjaXBlIGZpbGUgaXMgcHJlc2VudAorICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShvbGRyZWNpcGVmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMobmV3cmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIHNob3VsZCBleGlzdCBhZnRlciB1cGdyYWRlJykKKyAgICAgICAgIyBDaGVjayBkZXZ0b29sIHN0YXR1cyBhbmQgbWFrZSBzdXJlIHJlY2lwZSBpcyBwcmVzZW50CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZSBnb3QgY2hhbmdlZCBhcyBleHBlY3RlZAorICAgICAgICB3aXRoIG9wZW4ob2xkcmVjaXBlZmlsZSArICcudXBncmFkZWQnLCAncicpIGFzIGY6CisgICAgICAgICAgICBkZXNpcmVkbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggb3BlbihuZXdyZWNpcGVmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBuZXdsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXNpcmVkbGluZXMsIG5ld2xpbmVzKQorICAgICAgICAjIENoZWNrIGRldnRvb2wgcmVzZXQgcmVjaXBlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAlcyAtbicgJSByZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgcmVzZXR0aW5nJykKKworICAgIEBPRVRlc3RJRCgxMzUyKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfbGF5ZXJfcGx1Z2lucyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGRldnRvb2wgY2FuIHVzZSBwbHVnaW5zIGZyb20gb3RoZXIgbGF5ZXJzLgorCisgICAgICAgIFRoaXMgdGVzdCBleGVjdXRlcyB0aGUgc2VsZnRlc3QtcmV2ZXJzZSBjb21tYW5kIGZyb20gbWV0YS1zZWxmdGVzdC4iIiIKKworICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorCisgICAgICAgIHMgPSAiTWljcm9zb2Z0IE1hZGUgTm8gUHJvZml0IEZyb20gQW55b25lJ3MgWnVuZXMgWW8iCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IHNlbGZ0ZXN0LXJldmVyc2UgXCIlc1wiIiAlIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgc1s6Oi0xXSkKKworICAgIGRlZiBfY29weV9maWxlX3dpdGhfY2xlYW51cChzZWxmLCBzcmNmaWxlLCBiYXNlZHN0ZGlyLCAqcGF0aHMpOgorICAgICAgICBkc3RkaXIgPSBiYXNlZHN0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKGRzdGRpcikKKyAgICAgICAgZm9yIHAgaW4gcGF0aHM6CisgICAgICAgICAgICBkc3RkaXIgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBwKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdGRpcik6CisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZHN0ZGlyKQorICAgICAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0ZGlyKQorICAgICAgICBkc3RmaWxlID0gb3MucGF0aC5qb2luKGRzdGRpciwgb3MucGF0aC5iYXNlbmFtZShzcmNmaWxlKSkKKyAgICAgICAgaWYgc3JjZmlsZSAhPSBkc3RmaWxlOgorICAgICAgICAgICAgc2h1dGlsLmNvcHkoc3JjZmlsZSwgZHN0ZmlsZSkKKyAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0ZmlsZSkKKworICAgIEBPRVRlc3RJRCgxNjI1KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfbG9hZF9wbHVnaW4oc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBkZXZ0b29sIGxvYWRzIG9ubHkgdGhlIGZpcnN0IGZvdW5kIHBsdWdpbiBpbiBCQlBBVEguIiIiCisKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKworICAgICAgICBkZXZ0b29sID0gcnVuQ21kKCJ3aGljaCBkZXZ0b29sIikKKyAgICAgICAgZnJvbW5hbWUgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBwbHVnaW5maWxlIikKKyAgICAgICAgc3JjZmlsZSA9IGZyb21uYW1lLm91dHB1dAorICAgICAgICBiYnBhdGggPSBnZXRfYmJfdmFyKCdCQlBBVEgnKQorICAgICAgICBzZWFyY2hwYXRoID0gYmJwYXRoLnNwbGl0KCc6JykgKyBbb3MucGF0aC5kaXJuYW1lKGRldnRvb2wub3V0cHV0KV0KKyAgICAgICAgcGx1Z2luY29udGVudCA9IFtdCisgICAgICAgIHdpdGggb3BlbihzcmNmaWxlKSBhcyBmaDoKKyAgICAgICAgICAgIHBsdWdpbmNvbnRlbnQgPSBmaC5yZWFkbGluZXMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdtZXRhLXNlbGZ0ZXN0Jywgc3JjZmlsZSwgJ3dyb25nIGJicGF0aCBwbHVnaW4gZm91bmQnKQorICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aDoKKyAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aF9jbGVhbnVwKHNyY2ZpbGUsIHBhdGgsICdsaWInLCAnZGV2dG9vbCcpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBjb3VudCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICcxJykKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IG11bHRpbG9hZGVkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgIm5vIikKKyAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGg6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgYmJkaXIiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgcGF0aCkKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHJlc3VsdC5vdXRwdXQsICdsaWInLCAnZGV2dG9vbCcsICdiYnBhdGgucHknKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHdpdGggb3BlbihzcmNmaWxlLCAndycpIGFzIGZoOgorICAgICAgICAgICAgICAgIGZoLndyaXRlbGluZXMocGx1Z2luY29udGVudCkKKworICAgIGRlZiBfc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyBVc2UgYSAicmVhbCIgcmVjaXBlIGZyb20gbWV0YS1zZWxmdGVzdAorICAgICAgICByZWNpcGUgPSAnZGV2dG9vbC11cGdyYWRlLXRlc3QxJworICAgICAgICBvbGR2ZXJzaW9uID0gJzEuNS4zJworICAgICAgICBuZXd2ZXJzaW9uID0gJzEuNi4wJworICAgICAgICBvbGRyZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9sZHJlY2lwZWZpbGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAuJywgY3dkPXJlY2lwZWRpcikKKyAgICAgICAgaWYgcmVzdWx0Lm91dHB1dC5zdHJpcCgpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdSZWNpcGUgZGlyZWN0b3J5IGZvciAlcyBjb250YWlucyB1bmNvbW1pdHRlZCBjaGFuZ2VzJyAlIHJlY2lwZSkKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgICMgQ2hlY2sgdGhhdCByZWNpcGUgaXMgbm90IGFscmVhZHkgdW5kZXIgZGV2dG9vbCBjb250cm9sCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBEbyB0aGUgdXBncmFkZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBncmFkZSAlcyAlcyAtViAlcycgJSAocmVjaXBlLCB0ZW1wZGlyLCBuZXd2ZXJzaW9uKSkKKyAgICAgICAgIyBDaGVjayBkZXZ0b29sIHN0YXR1cyBhbmQgbWFrZSBzdXJlIHJlY2lwZSBpcyBwcmVzZW50CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIE1ha2UgYSBjaGFuZ2UgdG8gdGhlIHNvdXJjZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NlZCAtaSBcJy9eI2luY2x1ZGUgInB2LmgiL2EgXFwvKiBIZXJlIGlzIGEgbmV3IGNvbW1lbnQgKlxcL1wnIHNyYy9wdi9udW1iZXIuYycsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignTSBzcmMvcHYvbnVtYmVyLmMnLCByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgc3JjL3B2L251bWJlci5jIC1tICJBZGQgYSBjb21tZW50IHRvIHRoZSBjb2RlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICAjIENoZWNrIGlmIHBhdGNoIGlzIHRoZXJlCisgICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShvbGRyZWNpcGVmaWxlKQorICAgICAgICBvbGRkaXIgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCByZWNpcGUgKyAnLScgKyBvbGR2ZXJzaW9uKQorICAgICAgICBwYXRjaGZuID0gJzAwMDEtQWRkLWEtbm90ZS1saW5lLXRvLXRoZS1xdWljay1yZWZlcmVuY2UucGF0Y2gnCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihvbGRkaXIsIHBhdGNoZm4pLCAnT3JpZ2luYWwgcGF0Y2ggZmlsZSBkb2VzIG5vdCBleGlzdCcpCisgICAgICAgIHJldHVybiByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgb2xkZGlyLCBuZXd2ZXJzaW9uLCBwYXRjaGZuCisKKyAgICBAT0VUZXN0SUQoMTYyMykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlX29yaWdsYXllcihzZWxmKToKKyAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIG9sZGRpciwgbmV3dmVyc2lvbiwgcGF0Y2hmbiA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZSgpCisgICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLXNlbGZ0ZXN0LycsIHJlY2lwZWRpcikKKyAgICAgICAgIyBUcnkgZmluaXNoIHRvIHRoZSBvcmlnaW5hbCBsYXllcgorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBtZXRhLXNlbGZ0ZXN0JyAlIHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob2xkcmVjaXBlZmlsZSwgJ09sZCByZWNpcGUgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQgYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4ob2xkZGlyLCBwYXRjaGZuKSwgJ09sZCBwYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBidXQgd2FzblwndCcpCisgICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCAnJXNfJXMuYmInICUgKHJlY2lwZSwgbmV3dmVyc2lvbikpCisgICAgICAgIG5ld2RpciA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsIHJlY2lwZSArICctJyArIG5ld3ZlcnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG5ld3JlY2lwZWZpbGUsICdOZXcgcmVjaXBlIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBleGlzdGluZyBsYXllciBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihuZXdkaXIsIHBhdGNoZm4pLCAnUGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIG5ldyBkaXJlY3RvcnkgYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCAnMDAwMi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJyksICdOZXcgcGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IHdhc25cJ3QnKQorCisgICAgQE9FVGVzdElEKDE2MjQpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZV9vdGhlcmxheWVyKHNlbGYpOgorICAgICAgICByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgb2xkZGlyLCBuZXd2ZXJzaW9uLCBwYXRjaGZuID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlKCkKKyAgICAgICAgIyBFbnN1cmUgdGhlIHJlY2lwZSBpcyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUgKHNvIHRoYXQgY2xlYW51cCBkb2Vzbid0IHRyYXNoIHRoaW5ncykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignL21ldGEtc2VsZnRlc3QvJywgcmVjaXBlZGlyKQorICAgICAgICAjIFRyeSBmaW5pc2ggdG8gYSBkaWZmZXJlbnQgbGF5ZXIgLSBzaG91bGQgY3JlYXRlIGEgYmJhcHBlbmQKKyAgICAgICAgIyBUaGlzIGNsZWFudXAgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBkbyBpdCBhbnl3YXkganVzdCBpbiBjYXNlIGl0IGdvZXMgd3JvbmcgYW5kIHdyaXRlcyB0byBoZXJlCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcyA7IGNkICVzIDsgZ2l0IGNoZWNrb3V0ICVzJyAlIChyZWNpcGVkaXIsIG9zLnBhdGguZGlybmFtZShyZWNpcGVkaXIpLCByZWNpcGVkaXIpKQorICAgICAgICBvZV9jb3JlX2RpciA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnbWV0YScpCisgICAgICAgIG5ld3JlY2lwZWRpciA9IG9zLnBhdGguam9pbihvZV9jb3JlX2RpciwgJ3JlY2lwZXMtdGVzdCcsICdkZXZ0b29sJykKKyAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihuZXdyZWNpcGVkaXIsICclc18lcy5iYicgJSAocmVjaXBlLCBuZXd2ZXJzaW9uKSkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChuZXdyZWNpcGVkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgb2UtY29yZScgJSByZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9sZHJlY2lwZWZpbGUsICdPbGQgcmVjaXBlIGZpbGUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZGVsZXRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihvbGRkaXIsIHBhdGNoZm4pLCAnT2xkIHBhdGNoIGZpbGUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZGVsZXRlZCcpCisgICAgICAgIG5ld2RpciA9IG9zLnBhdGguam9pbihuZXdyZWNpcGVkaXIsIHJlY2lwZSArICctJyArIG5ld3ZlcnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG5ld3JlY2lwZWZpbGUsICdOZXcgcmVjaXBlIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBleGlzdGluZyBsYXllciBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihuZXdkaXIsIHBhdGNoZm4pLCAnUGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIG5ldyBkaXJlY3RvcnkgYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCAnMDAwMi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJyksICdOZXcgcGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IHdhc25cJ3QnKQorCisgICAgZGVmIF9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeShzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHJlY2lwZQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICByZWNpcGUgPSAnbWRhZG0nCisgICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQorICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob2xkcmVjaXBlZmlsZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC4nLCBjd2Q9cmVjaXBlZGlyKQorICAgICAgICBpZiByZXN1bHQub3V0cHV0LnN0cmlwKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1JlY2lwZSBkaXJlY3RvcnkgZm9yICVzIGNvbnRhaW5zIHVuY29tbWl0dGVkIGNoYW5nZXMnICUgcmVjaXBlKQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAlcycgJSAocmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgTWFrZSBhIGNoYW5nZSB0byB0aGUgc291cmNlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc2VkIC1pIFwnL14jaW5jbHVkZSAibWRhZG0uaCIvYSBcXC8qIEhlcmUgaXMgYSBuZXcgY29tbWVudCAqXFwvXCcgbWFwcy5jJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBzZWxmLmFzc2VydEluKCdNIG1hcHMuYycsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCBtYXBzLmMgLW0gIkFkZCBhIGNvbW1lbnQgdG8gdGhlIGNvZGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIGZvciBlbnRyeSBpbiBvcy5saXN0ZGlyKHJlY2lwZWRpcik6CisgICAgICAgICAgICBmaWxlc2RpciA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsIGVudHJ5KQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmaWxlc2Rpcik6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIGZpbGVzIGRpcmVjdG9yeSBmb3IgJXMnICUgcmVjaXBlKQorICAgICAgICByZXR1cm4gcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIGZpbGVzZGlyCisKKyAgICBAT0VUZXN0SUQoMTYyMSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnlfb3JpZ2xheWVyKHNlbGYpOgorICAgICAgICByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgZmlsZXNkaXIgPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeSgpCisgICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLycsIHJlY2lwZWRpcikKKyAgICAgICAgIyBUcnkgZmluaXNoIHRvIHRoZSBvcmlnaW5hbCBsYXllcgorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBtZXRhJyAlIHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUob2xkcmVjaXBlZmlsZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi8uKi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJCcpXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhyZWNpcGVkaXIsIGV4cGVjdGVkX3N0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNjIyKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeV9vdGhlcmxheWVyKHNlbGYpOgorICAgICAgICByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgZmlsZXNkaXIgPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeSgpCisgICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLycsIHJlY2lwZWRpcikKKyAgICAgICAgcmVscHRoID0gb3MucGF0aC5yZWxwYXRoKHJlY2lwZWRpciwgb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksICdtZXRhJykpCisgICAgICAgIGFwcGVuZGRpciA9IG9zLnBhdGguam9pbihnZXRfdGVzdF9sYXllcigpLCByZWxwdGgpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoYXBwZW5kZGlyKQorICAgICAgICAjIFRyeSBmaW5pc2ggdG8gdGhlIG9yaWdpbmFsIGxheWVyCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcyA7IGNkICVzIDsgZ2l0IGNoZWNrb3V0ICVzJyAlIChyZWNpcGVkaXIsIG9zLnBhdGguZGlybmFtZShyZWNpcGVkaXIpLCByZWNpcGVkaXIpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG1ldGEtc2VsZnRlc3QnICUgcmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCisgICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1bmV4cGVjdGVkIGNoYW5nZXMgYWZ0ZXIgZmluaXNoOlxuJXMnICUgKHJlY2lwZSwgcmVzdWx0Lm91dHB1dC5zdHJpcCgpKSkKKyAgICAgICAgcmVjaXBlZm4gPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUob2xkcmVjaXBlZmlsZSkpWzBdCisgICAgICAgIHJlY2lwZWZuID0gcmVjaXBlZm4uc3BsaXQoJ18nKVswXSArICdfJScKKyAgICAgICAgYXBwZW5kZmlsZSA9IG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHJlY2lwZWZuICsgJy5iYmFwcGVuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKGFwcGVuZGZpbGUsICdiYmFwcGVuZCAlcyBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IHdhc25cJ3QnICUgYXBwZW5kZmlsZSkKKyAgICAgICAgbmV3ZGlyID0gb3MucGF0aC5qb2luKGFwcGVuZGRpciwgcmVjaXBlKQorICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIobmV3ZGlyKQorICAgICAgICBmb3VuZHBhdGNoID0gTm9uZQorICAgICAgICBmb3IgZm4gaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2goZm4sICcqLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gnKToKKyAgICAgICAgICAgICAgICBmb3VuZHBhdGNoID0gZm4KKyAgICAgICAgaWYgbm90IGZvdW5kcGF0Y2g6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ05vIHBhdGNoIGZpbGUgY3JlYXRlZCBuZXh0IHRvIGJiYXBwZW5kJykKKyAgICAgICAgZmlsZXMucmVtb3ZlKGZvdW5kcGF0Y2gpCisgICAgICAgIGlmIGZpbGVzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGZpbGUocykgY29waWVkIG5leHQgdG8gYmJhcHBlbmQ6ICVzJyAlICcsICcuam9pbihmaWxlcykpCisKKyAgICBAT0VUZXN0SUQoMTYyNikKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3JlbmFtZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisKKyAgICAgICAgIyBGaXJzdCBydW4gZGV2dG9vbCBhZGQKKyAgICAgICAgIyBXZSBhbHJlYWR5IGhhdmUgdGhpcyByZWNpcGUgaW4gT0UtQ29yZSwgYnV0IHRoYXQgZG9lc24ndCBtYXR0ZXIKKyAgICAgICAgcmVjaXBlbmFtZSA9ICdpMmMtdG9vbHMnCisgICAgICAgIHJlY2lwZXZlciA9ICczLjEuMicKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGVuYW1lLCAnJXNfJXMuYmInICUgKHJlY2lwZW5hbWUsIHJlY2lwZXZlcikpCisgICAgICAgIHVybCA9ICdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvaTJjLXRvb2xzLSVzLnRhci5iejInICUgcmVjaXBldmVyCisgICAgICAgIGRlZiBhZGRfcmVjaXBlKCk6CisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzJyAlIHVybCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHJlY2lwZWZpbGUsICdFeHBlY3RlZCByZWNpcGUgZmlsZSBub3QgY3JlYXRlZCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgcmVjaXBlbmFtZSksICdTb3VyY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKKyAgICAgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9IE5vbmUKKyAgICAgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UocmVjaXBldmVyLCAnJHtQVn0nKQorICAgICAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKyAgICAgICAgYWRkX3JlY2lwZSgpCisgICAgICAgICMgTm93IHJlbmFtZSBpdCAtIGNoYW5nZSBib3RoIG5hbWUgYW5kIHZlcnNpb24KKyAgICAgICAgbmV3cmVjaXBlbmFtZSA9ICdteW5ld3JlY2lwZScKKyAgICAgICAgbmV3cmVjaXBldmVyID0gJzQ1NicKKyAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCBuZXdyZWNpcGVuYW1lLCAnJXNfJXMuYmInICUgKG5ld3JlY2lwZW5hbWUsIG5ld3JlY2lwZXZlcikpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZW5hbWUgJXMgJXMgLVYgJXMnICUgKHJlY2lwZW5hbWUsIG5ld3JlY2lwZW5hbWUsIG5ld3JlY2lwZXZlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG5ld3JlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBub3QgcmVuYW1lZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGVuYW1lKSwgJ09sZCByZWNpcGUgZGlyZWN0b3J5IHN0aWxsIGV4aXN0cycpCisgICAgICAgIG5ld3NyY3RyZWUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgbmV3cmVjaXBlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMobmV3c3JjdHJlZSwgJ1NvdXJjZSBkaXJlY3Rvcnkgbm90IHJlbmFtZWQnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9LyVzLSVzJyAlIChyZWNpcGVuYW1lLCByZWNpcGV2ZXIpCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKG5ld3JlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisgICAgICAgICMgVHJ5IGFnYWluIC0gY2hhbmdlIGp1c3QgbmFtZSB0aGlzIHRpbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1uICVzJyAlIG5ld3JlY2lwZW5hbWUpCisgICAgICAgIHNodXRpbC5ybXRyZWUobmV3c3JjdHJlZSkKKyAgICAgICAgYWRkX3JlY2lwZSgpCisgICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgbmV3cmVjaXBlbmFtZSwgJyVzXyVzLmJiJyAlIChuZXdyZWNpcGVuYW1lLCByZWNpcGV2ZXIpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVuYW1lICVzICVzJyAlIChyZWNpcGVuYW1lLCBuZXdyZWNpcGVuYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMobmV3cmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIG5vdCByZW5hbWVkJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZW5hbWUpLCAnT2xkIHJlY2lwZSBkaXJlY3Rvcnkgc3RpbGwgZXhpc3RzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIG5ld3JlY2lwZW5hbWUpLCAnU291cmNlIGRpcmVjdG9yeSBub3QgcmVuYW1lZCcpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vJXMtJHtQVn0nICUgcmVjaXBlbmFtZQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHJlY2lwZXZlciwgJyR7UFZ9JykKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMobmV3cmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKyAgICAgICAgIyBUcnkgYWdhaW4gLSBjaGFuZ2UganVzdCB2ZXJzaW9uIHRoaXMgdGltZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLW4gJXMnICUgbmV3cmVjaXBlbmFtZSkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShuZXdzcmN0cmVlKQorICAgICAgICBhZGRfcmVjaXBlKCkKKyAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGVuYW1lLCAnJXNfJXMuYmInICUgKHJlY2lwZW5hbWUsIG5ld3JlY2lwZXZlcikpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZW5hbWUgJXMgLVYgJXMnICUgKHJlY2lwZW5hbWUsIG5ld3JlY2lwZXZlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG5ld3JlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBub3QgcmVuYW1lZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCByZWNpcGVuYW1lKSwgJ1NvdXJjZSBkaXJlY3Rvcnkgbm8gbG9uZ2VyIGV4aXN0cycpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vJHtCUE59LSVzJyAlIHJlY2lwZXZlcgorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhuZXdyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorCisgICAgQE9FVGVzdElEKDE1NzcpCisgICAgZGVmIHRlc3RfZGV2dG9vbF92aXJ0dWFsX2tlcm5lbF9tb2RpZnkoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGNhc2UgaXMgdG8gdmVyaWZ5IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldnRvb2wgbW9kaWZ5IHdvcmtzIGNvcnJlY3RseSB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsLgorICAgICAgICBEZXBlbmRlbmNpZXM6ICAgTkEKKyAgICAgICAgU3RlcHM6ICAgICAgICAgIDEuIEJ1aWxkIGtlcm5lbCB3aXRoIGJpdGJha2UuCisgICAgICAgICAgICAgICAgICAgICAgICAyLiBTYXZlIHRoZSBjb25maWcgZmlsZSBnZW5lcmF0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAzLiBDbGVhbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA0LiBVc2UgYGRldnRvb2wgbW9kaWZ5IHZpcnR1YWwva2VybmVsYCB0byB2YWxpZGF0ZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjEgVGhlIHNvdXJjZSBpcyBjaGVja2VkIG91dCBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjIgVGhlIHJlc3VsdGluZyBjb25maWd1cmF0aW9uIGlzIHRoZSBzYW1lIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hhdCB3YXMgZ2V0IG9uIHN0ZXAgMi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMyBUaGUgS2VybmVsIGNhbiBiZSBidWlsZCBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQgQ2hhbmdlcyBtYWRlIG9uIHRoZSBzb3VyY2UgYXJlIHJlZmxlY3RlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNSBDaGFuZ2VzIG9uIHRoZSBjb25maWd1cmF0aW9uIGFyZSByZWZsZWN0ZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBidWlsZHMKKyAgICAgICAgIEV4cGVjdGVkOiAgICAgICBkZXZ0b29sIG1vZGlmeSBpcyBhYmxlIHRvIGNoZWNrb3V0IHRoZSBzb3VyY2Ugb2YgdGhlIGtlcm5lbAorICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtb2RpZmljYXRpb24gdG8gdGhlIHNvdXJjZSBhbmQgY29uZmlndXJhdGlvbnMgYXJlIHJlZmxlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgdGhlIGtlcm5lbC4KKyAgICAgICAgICIiIgorICAgICAgICBrZXJuZWxfcHJvdmlkZXIgPSBnZXRfYmJfdmFyKCdQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwnKQorICAgICAgICAjIENsZWFuIHVwIHRoZSBlbnZpcm9tZW50CisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuJyAlIGtlcm5lbF9wcm92aWRlcikKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICB0ZW1wZGlyX2NmZyA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdjb25maWdfcWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcl9jZmcpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUga2VybmVsX3Byb3ZpZGVyKQorICAgICAgICAjU3RlcCAxCisgICAgICAgICNIZXJlIGlzIGp1c3QgZ2VuZXJhdGVkIHRoZSBjb25maWcgZmlsZSBpbnN0ZWFkIG9mIGFsbCB0aGUga2VybmVsIHRvIG9wdGltaXplIHRoZQorICAgICAgICAjdGltZSBvZiBleGVjdXRpbmcgdGhpcyB0ZXN0IGNhc2UuCisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNvbmZpZ3VyZScgJSBrZXJuZWxfcHJvdmlkZXIpCisgICAgICAgIGJiY29uZmlnID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0InLCBrZXJuZWxfcHJvdmlkZXIpLCcuY29uZmlnJykKKyAgICAgICAgI1N0ZXAgMgorICAgICAgICBydW5DbWQoJ2NwICVzICVzJyAlIChiYmNvbmZpZywgdGVtcGRpcl9jZmcpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpcl9jZmcsICcuY29uZmlnJyksICdDb3VsZCBub3QgY29weSAuY29uZmlnIGZpbGUgZnJvbSBrZXJuZWwnKQorCisgICAgICAgIHRtcGNvbmZpZyA9IG9zLnBhdGguam9pbih0ZW1wZGlyX2NmZywgJy5jb25maWcnKQorICAgICAgICAjU3RlcCAzCisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuJyAlIGtlcm5lbF9wcm92aWRlcikKKyAgICAgICAgI1N0ZXAgNC4xCisgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgdmlydHVhbC9rZXJuZWwgLXggJXMnICUgdGVtcGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICAjU3RlcCA0LjIKKyAgICAgICAgY29uZmlnZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCcuY29uZmlnJykKKyAgICAgICAgZGlmZiA9IHJ1bkNtZCgnZGlmZiAlcyAlcycgJSAodG1wY29uZmlnLCBjb25maWdmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLGRpZmYuc3RhdHVzLCdLZXJuZWwgLmNvbmZpZyBmaWxlIGlzIG5vdCB0aGUgc2FtZSB1c2luZyBiaXRiYWtlIGFuZCBkZXZ0b29sJykKKyAgICAgICAgI1N0ZXAgNC4zCisgICAgICAgICNOT1RFOiB2aXJ0dWFsL2tlcm5lbCBpcyBtYXBwZWQgdG8ga2VybmVsX3Byb3ZpZGVyCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSBrZXJuZWxfcHJvdmlkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxyZXN1bHQuc3RhdHVzLCdDYW5ub3QgYnVpbGQga2VybmVsIHVzaW5nIGBkZXZ0b29sIGJ1aWxkYCcpCisgICAgICAgIGtlcm5lbGZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignS0JVSUxEX09VVFBVVCcsIGtlcm5lbF9wcm92aWRlciksICd2bWxpbnV4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMoa2VybmVsZmlsZSwgJ0tlcm5lbCB3YXMgbm90IGJ1aWxkIGNvcnJlY3RseScpCisKKyAgICAgICAgI01vZGlmeSB0aGUga2VybmVsIHNvdXJjZQorICAgICAgICBtb2RmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsJ2FyY2gveDg2L2Jvb3QvaGVhZGVyLlMnKQorICAgICAgICBtb2RzdHJpbmcgPSAiVXNlIGEgYm9vdCBsb2FkZXIuIERldnRvb2wgdGVzdGluZy4iCisgICAgICAgIG1vZGFwcGxpZWQgPSBydW5DbWQoInNlZCAtaSAncy9Vc2UgYSBib290IGxvYWRlci4vJXMvJyAlcyIgJSAobW9kc3RyaW5nLCBtb2RmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLG1vZGFwcGxpZWQuc3RhdHVzLCdNb2RpZmljYXRpb24gdG8gJXMgb24ga2VybmVsIHNvdXJjZSBmYWlsZWQnICUgbW9kZmlsZSkKKyAgICAgICAgI01vZGlmeSB0aGUgY29uZmlndXJhdGlvbgorICAgICAgICBjb2RlY29uZmlnZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCcuY29uZmlnLm5ldycpCisgICAgICAgIG1vZGNvbmZvcHQgPSAiQ09ORklHX1NHX1BPT0w9biIKKyAgICAgICAgbW9kY29uZiA9IHJ1bkNtZCgic2VkIC1pICdzL0NPTkZJR19TR19QT09MPXkvJXMvJyAlcyIgJSAobW9kY29uZm9wdCwgY29kZWNvbmZpZ2ZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsbW9kY29uZi5zdGF0dXMsJ01vZGlmaWNhdGlvbiB0byAlcyBmYWlsZWQnICUgY29kZWNvbmZpZ2ZpbGUpCisgICAgICAgICNCdWlsZCBhZ2FpbiBrZXJuZWwgd2l0aCBkZXZ0b29sCisgICAgICAgIHJlYnVpbGQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUga2VybmVsX3Byb3ZpZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAscmVidWlsZC5zdGF0dXMsJ0ZhaWwgdG8gYnVpbGQga2VybmVsIGFmdGVyIG1vZGlmaWNhdGlvbiBvZiBzb3VyY2UgYW5kIGNvbmZpZycpCisgICAgICAgICNTdGVwIDQuNAorICAgICAgICBiemltYWdlbmFtZSA9ICdiekltYWdlLScgKyBnZXRfYmJfdmFyKCdLRVJORUxfVkVSU0lPTl9OQU1FJywga2VybmVsX3Byb3ZpZGVyKQorICAgICAgICBiemltYWdlZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdEJywga2VybmVsX3Byb3ZpZGVyKSwnYm9vdCcsIGJ6aW1hZ2VuYW1lKQorICAgICAgICBjaGVja21vZGNvZGUgPSBydW5DbWQoImdyZXAgJyVzJyAlcyIgJSAobW9kc3RyaW5nLCBiemltYWdlZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxjaGVja21vZGNvZGUuc3RhdHVzLCdNb2RpZmljYXRpb24gb24ga2VybmVsIHNvdXJjZSBmYWlsZWQnKQorICAgICAgICAjU3RlcCA0LjUKKyAgICAgICAgY2hlY2ttb2Rjb25mZyA9IHJ1bkNtZCgiZ3JlcCAlcyAlcyIgJSAobW9kY29uZm9wdCwgY29kZWNvbmZpZ2ZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsY2hlY2ttb2Rjb25mZy5zdGF0dXMsJ01vZGlmaWNhdGlvbiB0byBjb25maWd1cmF0aW9uIGZpbGUgZmFpbGVkJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNTQwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CkBAIC0wLDAgKzEsNDIgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycworZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCitmcm9tIG9lcWEudXRpbHMuZnRvb2xzIGltcG9ydCB3cml0ZV9maWxlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgRGlzdHJvZGF0YShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoRGlzdHJvZGF0YSwgY2xzKS5zZXRVcENsYXNzKCkKKworICAgIEBPRVRlc3RJRCgxOTAyKQorICAgIGRlZiB0ZXN0X2NoZWNrcGtnKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCB1cHN0cmVhbSB2ZXJzaW9uIGNoZWNrcyBkbyBub3QgcmVncmVzcworICAgICAgICBFeHBlY3RlZDogICAgVXBzdHJlYW0gdmVyc2lvbiBjaGVja3Mgc2hvdWxkIHN1Y2NlZWQgZXhjZXB0IGZvciB0aGUgcmVjaXBlcyBsaXN0ZWQgaW4gdGhlIGV4Y2VwdGlvbiBsaXN0LgorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIGZlYXR1cmUgPSAnSU5IRVJJVCArPSAiZGlzdHJvZGF0YSJcbicKKyAgICAgICAgZmVhdHVyZSArPSAnTElDRU5TRV9GTEFHU19XSElURUxJU1QgKz0gIiBjb21tZXJjaWFsIlxuJworCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCisgICAgICAgIGJpdGJha2UoJy1jIGNoZWNrcGtnIHdvcmxkJykKKyAgICAgICAgY2hlY2twa2dfcmVzdWx0ID0gb3Blbihvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcigiTE9HX0RJUiIpLCAiY2hlY2twa2cuY3N2IikpLnJlYWRsaW5lcygpWzE6XQorICAgICAgICByZWdyZXNzZWRfZmFpbHVyZXMgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBpZiBwa2dfZGF0YVsxMV0gPT0gJ1VOS05PV05fQlJPS0VOJ10KKyAgICAgICAgcmVncmVzc2VkX3N1Y2Nlc3NlcyA9IFtwa2dfZGF0YVswXSBmb3IgcGtnX2RhdGEgaW4gW3BrZ19saW5lLnNwbGl0KCdcdCcpIGZvciBwa2dfbGluZSBpbiBjaGVja3BrZ19yZXN1bHRdIGlmIHBrZ19kYXRhWzExXSA9PSAnS05PV05fQlJPS0VOJ10KKyAgICAgICAgbXNnID0gIiIKKyAgICAgICAgaWYgbGVuKHJlZ3Jlc3NlZF9mYWlsdXJlcykgPiAwOgorICAgICAgICAgICAgbXNnID0gbXNnICsgIiIiCitUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGZhaWxlZCB1cHN0cmVhbSB2ZXJzaW9uIGNoZWNrcy4gUGxlYXNlIGZpeCB0aGVtIHVzaW5nIFVQU1RSRUFNX0NIRUNLX1VSSS9VUFNUUkVBTV9DSEVDS19SRUdFWAorKHdoZW4gdXNpbmcgdGFyYmFsbHMpIG9yIFVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYICh3aGVuIHVzaW5nIGdpdCkuIElmIGFuIHVwc3RyZWFtIHZlcnNpb24gY2hlY2sgY2Fubm90IGJlIHBlcmZvcm1lZAorKGZvciBleGFtcGxlLCBpZiB1cHN0cmVhbSBkb2VzIG5vdCB1c2UgZ2l0IHRhZ3MpLCB5b3UgY2FuIHNldCBVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gdG8gJzEnIGluIHRoZSByZWNpcGUgdG8gYWNrbm93bGVkZ2UKK3RoYXQgdGhlIGNoZWNrIGNhbm5vdCBiZSBwZXJmb3JtZWQuCisiIiIgKyAiXG4iLmpvaW4ocmVncmVzc2VkX2ZhaWx1cmVzKQorICAgICAgICBpZiBsZW4ocmVncmVzc2VkX3N1Y2Nlc3NlcykgPiAwOgorICAgICAgICAgICAgbXNnID0gbXNnICsgIiIiCitUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGhhdmUgYmVlbiBjaGVja2VkIHN1Y2Nlc3NmdWxseSBmb3IgdXBzdHJlYW0gdmVyc2lvbnMsCitidXQgdGhlaXIgcmVjaXBlcyBjbGFpbSBvdGhlcndpc2UgYnkgc2V0dGluZyBVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04uIFBsZWFzZSByZW1vdmUgdGhhdCBsaW5lIGZyb20gdGhlIHJlY2lwZXMuCisiIiIgKyAiXG4iLmpvaW4ocmVncmVzc2VkX3N1Y2Nlc3NlcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihyZWdyZXNzZWRfZmFpbHVyZXMpID09IDAgYW5kIGxlbihyZWdyZXNzZWRfc3VjY2Vzc2VzKSA9PSAwLCBtc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lU0RLLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZVNESy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDMxODhmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZVNESy5weQpAQCAtMCwwICsxLDExMSBAQAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgb3MKK2ltcG9ydCBnbG9iCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycworCitjbGFzcyBvZVNES0V4dFNlbGZUZXN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgIyBCdWd6aWxsYSBUZXN0IFBsYW46IDYwMzMKKyAgICAjIFRoaXMgY29kZSBpcyBwbGFubmVkIHRvIGJlIHBhcnQgb2YgdGhlIGF1dG9tYXRpb24gZm9yIGVTREsgY29udGFpbmlnCisgICAgIyBJbnN0YWxsIGxpYnJhcmllcyBhbmQgaGVhZGVycywgaW1hZ2UgZ2VuZXJhdGlvbiBiaW5hcnkgZmVlZHMsIHNkay11cGRhdGUuCisgICAgIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9lc2RrX2Vudmlyb25tZW50KGVudl9lU0RLLCB0bXBkaXJfZVNES1FBKToKKyAgICAgICAgIyBYWFg6IGF0IHRoaXMgdGltZSB1c2UgdGhlIGZpcnN0IGVudiBuZWVkIHRvIGludmVzdGlnYXRlCisgICAgICAgICMgd2hhdCBlbnZpcm9ubWVudCBsb2FkIG9lLXNlbGZ0ZXN0LCBpNTg2LCB4ODZfNjQKKyAgICAgICAgcGF0dGVybiA9IG9zLnBhdGguam9pbih0bXBkaXJfZVNES1FBLCAnZW52aXJvbm1lbnQtc2V0dXAtKicpCisgICAgICAgIHJldHVybiBnbG9iLmdsb2IocGF0dGVybilbMF0KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcnVuX2VzZGtfY21kKGVudl9lU0RLLCB0bXBkaXJfZVNES1FBLCBjbWQsIHBvc3Rjb25maWc9Tm9uZSwgKipvcHRpb25zKToKKyAgICAgICAgaWYgcG9zdGNvbmZpZzoKKyAgICAgICAgICAgIGVzZGtfY29uZl9maWxlID0gb3MucGF0aC5qb2luKHRtcGRpcl9lU0RLUUEsICdjb25mJywgJ2xvY2FsLmNvbmYnKQorICAgICAgICAgICAgd2l0aCBvcGVuKGVzZGtfY29uZl9maWxlLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocG9zdGNvbmZpZykKKyAgICAgICAgaWYgbm90IG9wdGlvbnM6CisgICAgICAgICAgICBvcHRpb25zID0ge30KKyAgICAgICAgaWYgbm90ICdzaGVsbCcgaW4gb3B0aW9uczoKKyAgICAgICAgICAgIG9wdGlvbnNbJ3NoZWxsJ10gPSBUcnVlCisKKyAgICAgICAgcnVuQ21kKCJjZCAlczsgLiAlczsgJXMiICUgKHRtcGRpcl9lU0RLUUEsIGVudl9lU0RLLCBjbWQpLCAqKm9wdGlvbnMpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdlbmVyYXRlX2VTREsoaW1hZ2UpOgorICAgICAgICBwbl90YXNrID0gJyVzIC1jIHBvcHVsYXRlX3Nka19leHQnICUgaW1hZ2UKKyAgICAgICAgYml0YmFrZShwbl90YXNrKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfZVNES190b29sY2hhaW4oaW1hZ2UpOgorICAgICAgICBwbl90YXNrID0gJyVzIC1jIHBvcHVsYXRlX3Nka19leHQnICUgaW1hZ2UKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTREtfREVQTE9ZJywgJ1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FJ10sIHBuX3Rhc2spCisgICAgICAgIHNka19kZXBsb3kgPSBiYl92YXJzWydTREtfREVQTE9ZJ10KKyAgICAgICAgdG9vbGNoYWluX25hbWUgPSBiYl92YXJzWydUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRSddCisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2RrX2RlcGxveSwgdG9vbGNoYWluX25hbWUgKyAnLnNoJykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgdXBkYXRlX2NvbmZpZ3VyYXRpb24oY2xzLCBpbWFnZSwgdG1wZGlyX2VTREtRQSwgZW52X2VTREssIGV4dF9zZGtfcGF0aCk6CisgICAgICAgIHNzdGF0ZV9kaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnQlVJTERESVInXSwgJ3NzdGF0ZS1jYWNoZScpCisKKyAgICAgICAgb2VTREtFeHRTZWxmVGVzdC5nZW5lcmF0ZV9lU0RLKGNscy5pbWFnZSkKKworICAgICAgICBjbHMuZXh0X3Nka19wYXRoID0gb2VTREtFeHRTZWxmVGVzdC5nZXRfZVNES190b29sY2hhaW4oY2xzLmltYWdlKQorICAgICAgICBydW5DbWQoIiVzIC15IC1kIFwiJXNcIiIgJSAoY2xzLmV4dF9zZGtfcGF0aCwgY2xzLnRtcGRpcl9lU0RLUUEpKQorCisgICAgICAgIGNscy5lbnZfZVNESyA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VzZGtfZW52aXJvbm1lbnQoJycsIGNscy50bXBkaXJfZVNES1FBKQorCisgICAgICAgIHNzdGF0ZV9jb25maWc9IiIiCitTREtfTE9DQUxfQ09ORl9XSElURUxJU1QgPSAiU1NUQVRFX01JUlJPUlMiCitTU1RBVEVfTUlSUk9SUyA9ICAiZmlsZTovLy4qIGZpbGU6Ly8lcy9QQVRIIgorQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMID0gInBlcmwiCisgICAgICAgICIiIiAlIHNzdGF0ZV9kaXIKKworICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNscy50bXBkaXJfZVNES1FBLCAnY29uZicsICdsb2NhbC5jb25mJyksICdhKycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNzdGF0ZV9jb25maWcpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihvZVNES0V4dFNlbGZUZXN0LCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBjbHMudG1wZGlyX2VTREtRQSA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdlU0RLUUEnKQorCisgICAgICAgIHNzdGF0ZV9kaXIgPSBnZXRfYmJfdmFyKCdTU1RBVEVfRElSJykKKworICAgICAgICBjbHMuaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBvZVNES0V4dFNlbGZUZXN0LmdlbmVyYXRlX2VTREsoY2xzLmltYWdlKQorCisgICAgICAgICMgSW5zdGFsbCBlU0RLCisgICAgICAgIGNscy5leHRfc2RrX3BhdGggPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lU0RLX3Rvb2xjaGFpbihjbHMuaW1hZ2UpCisgICAgICAgIHJ1bkNtZCgiJXMgLXkgLWQgXCIlc1wiIiAlIChjbHMuZXh0X3Nka19wYXRoLCBjbHMudG1wZGlyX2VTREtRQSkpCisKKyAgICAgICAgY2xzLmVudl9lU0RLID0gb2VTREtFeHRTZWxmVGVzdC5nZXRfZXNka19lbnZpcm9ubWVudCgnJywgY2xzLnRtcGRpcl9lU0RLUUEpCisKKyAgICAgICAgIyBDb25maWd1cmUgZVNESyB0byB1c2Ugc3N0YXRlIG1pcnJvciBmcm9tIHBva3kKKyAgICAgICAgc3N0YXRlX2NvbmZpZz0iIiIKK1NES19MT0NBTF9DT05GX1dISVRFTElTVCA9ICJTU1RBVEVfTUlSUk9SUyIKK1NTVEFURV9NSVJST1JTID0gICJmaWxlOi8vLiogZmlsZTovLyVzL1BBVEgiCisgICAgICAgICAgICAiIiIgJSBzc3RhdGVfZGlyCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oY2xzLnRtcGRpcl9lU0RLUUEsICdjb25mJywgJ2xvY2FsLmNvbmYnKSwgJ2ErJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc3N0YXRlX2NvbmZpZykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoY2xzLnRtcGRpcl9lU0RLUUEsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKyAgICAgICAgc3VwZXIob2VTREtFeHRTZWxmVGVzdCwgY2xzKS50ZWFyRG93bkNsYXNzKCkKKworICAgIEBPRVRlc3RJRCgxNjAyKQorICAgIGRlZiB0ZXN0X2luc3RhbGxfbGlicmFyaWVzX2hlYWRlcnMoc2VsZik6CisgICAgICAgIHBuX3NzdGF0ZSA9ICdiYycKKyAgICAgICAgYml0YmFrZShwbl9zc3RhdGUpCisgICAgICAgIGNtZCA9ICJkZXZ0b29sIHNkay1pbnN0YWxsICVzICIgJSBwbl9zc3RhdGUKKyAgICAgICAgb2VTREtFeHRTZWxmVGVzdC5ydW5fZXNka19jbWQoc2VsZi5lbnZfZVNESywgc2VsZi50bXBkaXJfZVNES1FBLCBjbWQpCisKKyAgICBAT0VUZXN0SUQoMTYwMykKKyAgICBkZWYgdGVzdF9pbWFnZV9nZW5lcmF0aW9uX2JpbmFyeV9mZWVkcyhzZWxmKToKKyAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBjbWQgPSAiZGV2dG9vbCBidWlsZC1pbWFnZSAlcyIgJSBpbWFnZQorICAgICAgICBvZVNES0V4dFNlbGZUZXN0LnJ1bl9lc2RrX2NtZChzZWxmLmVudl9lU0RLLCBzZWxmLnRtcGRpcl9lU0RLUUEsIGNtZCkKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VfdHlwZWRlcC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlX3R5cGVkZXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY3ODg4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlX3R5cGVkZXAucHkKQEAgLTAsMCArMSw1MyBAQAoraW1wb3J0IG9zCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIEltYWdlVHlwZURlcFRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICAjIFZlcmlmeSB0aGF0IHdoZW4gc3BlY2lmeWluZyBhIElNQUdFX1RZUEVERVBfIG9mIHRoZSBmb3JtICJmb28uYmFyIiB0aGF0CisgICAgIyB0aGUgY29udmVyc2lvbiB0eXBlIGJhciBnZXRzIGFkZGVkIGFzIGEgZGVwIGFzIHdlbGwKKyAgICBAT0VUZXN0SUQoMTYzMykKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9uX3R5cGVkZXBfYWRkZWQoc2VsZik6CisKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ2VtcHR5dGVzdCcsICIiIgorIyBUcnkgdG8gZW1wdHkgb3V0IHRoZSBkZWZhdWx0IGRlcGVuZGVuY3kgbGlzdAorUEFDS0FHRV9JTlNUQUxMID0gIiIKK0RJU1RST19FWFRSQV9SREVQRU5EUz0iIgorCitMSUNFTlNFID0gIk1JVCIKK0lNQUdFX0ZTVFlQRVMgPSAidGVzdGZzdHlwZSIKKworSU1BR0VfVFlQRVNfTUFTS0VEICs9ICJ0ZXN0ZnN0eXBlIgorSU1BR0VfVFlQRURFUF90ZXN0ZnN0eXBlID0gInRhci5iejIiCisKK2luaGVyaXQgaW1hZ2UKKworIiIiKQorICAgICAgICAjIEZpcnN0IGdldCB0aGUgZGVwZW5kZW5jeSB0aGF0IHNob3VsZCBleGlzdCBmb3IgYnoyLCBpdCB3aWxsIGxvb2sKKyAgICAgICAgIyBsaWtlIENPTlZFUlNJT05fREVQRU5EU19iejI9InNvbWVkZXAiCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1lIGVtcHR5dGVzdCcpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnQ09OVkVSU0lPTl9ERVBFTkRTX2J6MicpOgorICAgICAgICAgICAgICAgIGRlcCA9IGxpbmUuc3BsaXQoJz0nKVsxXS5zdHJpcCgnIicpCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAjIE5vdyBnZXQgdGhlIGRlcGVuZGVuY3kgdGFzayBsaXN0IGFuZCBjaGVjayBmb3IgdGhlIGV4cGVjdGVkIHRhc2sKKyAgICAgICAgIyBkZXBlbmRlbmN5CisgICAgICAgIGJpdGJha2UoJy1nIGVtcHR5dGVzdCcpCisKKyAgICAgICAgdGFza2RlcGVuZHNmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd0YXNrLWRlcGVuZHMuZG90JykKKyAgICAgICAgZGVwID0gIGRlcCArICIuZG9fcG9wdWxhdGVfc3lzcm9vdCIKKyAgICAgICAgZGVwZm91bmQgPSBGYWxzZQorICAgICAgICBleHBlY3RlZGxpbmUgPSAnImVtcHR5dGVzdC5kb19yb290ZnMiIC0+ICJ7fSInLmZvcm1hdChkZXApCisKKyAgICAgICAgd2l0aCBvcGVuKHRhc2tkZXBlbmRzZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0cmlwKCkgPT0gZXhwZWN0ZWRsaW5lOgorICAgICAgICAgICAgICAgICAgICBkZXBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBub3QgZGVwZm91bmQ6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiXCJ7fVwiIG5vdCBmb3VuZCIuZm9ybWF0KGV4cGVjdGVkbGluZSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmZiNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQpAQCAtMCwwICsxLDI0MCBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIHJ1bnFlbXUKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLnV0aWxzLnNzaGNvbnRyb2wgaW1wb3J0IFNTSENvbnRyb2wKK2ltcG9ydCBvcworaW1wb3J0IGpzb24KKworY2xhc3MgSW1hZ2VGZWF0dXJlcyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgdGVzdF91c2VyID0gJ3Rlc3RlcicKKyAgICByb290X3VzZXIgPSAncm9vdCcKKworICAgIGJ1ZmZlciA9IFRydWUKKworICAgIEBPRVRlc3RJRCgxMTA3KQorICAgIGRlZiB0ZXN0X25vbl9yb290X3VzZXJfY2FuX2Nvbm5lY3RfdmlhX3NzaF93aXRob3V0X3Bhc3N3b3JkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgaWYgbm9uIHJvb3QgdXNlciBjYW4gY29ubmVjdCB2aWEgc3NoIHdpdGhvdXQgcGFzc3dvcmQKKyAgICAgICAgRXhwZWN0ZWQ6IDEuIENvbm5lY3Rpb24gdG8gdGhlIGltYWdlIHZpYSBzc2ggdXNpbmcgcm9vdCB1c2VyIHdpdGhvdXQgcHJvdmlkaW5nIGEgcGFzc3dvcmQgc2hvdWxkIGJlIGFsbG93ZWQuCisgICAgICAgICAgICAgICAgICAyLiBDb25uZWN0aW9uIHRvIHRoZSBpbWFnZSB2aWEgc3NoIHVzaW5nIHRlc3RlciB1c2VyIHdpdGhvdXQgcHJvdmlkaW5nIGEgcGFzc3dvcmQgc2hvdWxkIGJlIGFsbG93ZWQuCisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBJb251dCBDaGlzYW5vdmljaSA8aW9udXR4LmNoaXNhbm92aWNpQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAic3NoLXNlcnZlci1vcGVuc3NoIGVtcHR5LXJvb3QtcGFzc3dvcmQgYWxsb3ctZW1wdHktcGFzc3dvcmQiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdJTkhFUklUICs9ICJleHRyYXVzZXJzIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnRVhUUkFfVVNFUlNfUEFSQU1TID0gInVzZXJhZGQgLXAgXCdcJyB7fTsgdXNlcm1vZCAtcyAvYmluL3NoIHt9OyInLmZvcm1hdChzZWxmLnRlc3RfdXNlciwgc2VsZi50ZXN0X3VzZXIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKworICAgICAgICB3aXRoIHJ1bnFlbXUoImNvcmUtaW1hZ2UtbWluaW1hbCIpIGFzIHFlbXU6CisgICAgICAgICAgICAjIEF0dGVtcHQgdG8gc3NoIHdpdGggZWFjaCB1c2VyIGludG8gcWVtdSB3aXRoIGVtcHR5IHBhc3N3b3JkCisgICAgICAgICAgICBmb3IgdXNlciBpbiBbc2VsZi5yb290X3VzZXIsIHNlbGYudGVzdF91c2VyXToKKyAgICAgICAgICAgICAgICBzc2ggPSBTU0hDb250cm9sKGlwPXFlbXUuaXAsIGxvZ2ZpbGU9cWVtdS5zc2hsb2csIHVzZXI9dXNlcikKKyAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNzaC5ydW4oInRydWUiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAnc3NoIHRvIHVzZXIgJXMgZmFpbGVkIHdpdGggJXMnICUgKHVzZXIsIG91dHB1dCkpCisKKyAgICBAT0VUZXN0SUQoMTExNSkKKyAgICBkZWYgdGVzdF9hbGxfdXNlcnNfY2FuX2Nvbm5lY3RfdmlhX3NzaF93aXRob3V0X3Bhc3N3b3JkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGlmIGFsbCB1c2VycyBjYW4gY29ubmVjdCB2aWEgc3NoIHdpdGhvdXQgcGFzc3dvcmQKKyAgICAgICAgRXhwZWN0ZWQ6IDEuIENvbm5lY3Rpb24gdG8gdGhlIGltYWdlIHZpYSBzc2ggdXNpbmcgcm9vdCB1c2VyIHdpdGhvdXQgcHJvdmlkaW5nIGEgcGFzc3dvcmQgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLgorICAgICAgICAgICAgICAgICAgMi4gQ29ubmVjdGlvbiB0byB0aGUgaW1hZ2UgdmlhIHNzaCB1c2luZyB0ZXN0ZXIgdXNlciB3aXRob3V0IHByb3ZpZGluZyBhIHBhc3N3b3JkIHNob3VsZCBiZSBhbGxvd2VkLgorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgSW9udXQgQ2hpc2Fub3ZpY2kgPGlvbnV0eC5jaGlzYW5vdmljaUBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInNzaC1zZXJ2ZXItb3BlbnNzaCBhbGxvdy1lbXB0eS1wYXNzd29yZCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0lOSEVSSVQgKz0gImV4dHJhdXNlcnMiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdFWFRSQV9VU0VSU19QQVJBTVMgPSAidXNlcmFkZCAtcCBcJ1wnIHt9OyB1c2VybW9kIC1zIC9iaW4vc2gge307IicuZm9ybWF0KHNlbGYudGVzdF91c2VyLCBzZWxmLnRlc3RfdXNlcikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgIyBCdWlsZCBhIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorCisgICAgICAgIHdpdGggcnVucWVtdSgiY29yZS1pbWFnZS1taW5pbWFsIikgYXMgcWVtdToKKyAgICAgICAgICAgICMgQXR0ZW1wdCB0byBzc2ggd2l0aCBlYWNoIHVzZXIgaW50byBxZW11IHdpdGggZW1wdHkgcGFzc3dvcmQKKyAgICAgICAgICAgIGZvciB1c2VyIGluIFtzZWxmLnJvb3RfdXNlciwgc2VsZi50ZXN0X3VzZXJdOgorICAgICAgICAgICAgICAgIHNzaCA9IFNTSENvbnRyb2woaXA9cWVtdS5pcCwgbG9nZmlsZT1xZW11LnNzaGxvZywgdXNlcj11c2VyKQorICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc3NoLnJ1bigidHJ1ZSIpCisgICAgICAgICAgICAgICAgaWYgdXNlciA9PSAncm9vdCc6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RhdHVzLCAwLCAnc3NoIHRvIHVzZXIgcm9vdCB3YXMgYWxsb3dlZCB3aGVuIGl0IHNob3VsZCBub3QgaGF2ZSBiZWVuJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgJ3NzaCB0byB1c2VyIHRlc3RlciBmYWlsZWQgd2l0aCAlcycgJSBvdXRwdXQpCisKKworICAgIEBPRVRlc3RJRCgxMTE2KQorICAgIGRlZiB0ZXN0X2NsdXR0ZXJfaW1hZ2VfY2FuX2JlX2J1aWx0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGlmIGNsdXR0ZXIgaW1hZ2UgY2FuIGJlIGJ1aWx0CisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBjb3JlLWltYWdlLWNsdXR0ZXIgY2FuIGJlIGJ1aWx0CisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBJb251dCBDaGlzYW5vdmljaSA8aW9udXR4LmNoaXNhbm92aWNpQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBCdWlsZCBhIGNvcmUtaW1hZ2UtY2x1dHRlcgorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLWNsdXR0ZXInKQorCisgICAgQE9FVGVzdElEKDExMTcpCisgICAgZGVmIHRlc3Rfd2F5bGFuZF9zdXBwb3J0X2luX2ltYWdlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIFdheWxhbmQgc3VwcG9ydCBpbiBpbWFnZQorICAgICAgICBFeHBlY3RlZDogICAgMS4gV2F5bGFuZCBpbWFnZSBjYW4gYmUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgIDIuIFdheWxhbmQgZmVhdHVyZSBjYW4gYmUgaW5zdGFsbGVkCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBJb251dCBDaGlzYW5vdmljaSA8aW9udXR4LmNoaXNhbm92aWNpQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGlzdHJvX2ZlYXR1cmVzID0gZ2V0X2JiX3ZhcignRElTVFJPX0ZFQVRVUkVTJykKKyAgICAgICAgaWYgbm90ICgnb3BlbmdsJyBpbiBkaXN0cm9fZmVhdHVyZXMgYW5kICd3YXlsYW5kJyBpbiBkaXN0cm9fZmVhdHVyZXMpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbmVpdGhlciBvcGVuZ2wgbm9yIHdheWxhbmQgcHJlc2VudCBvbiBESVNUUk9fRkVBVFVSRVMgc28gY29yZS1pbWFnZS13ZXN0b24gY2Fubm90IGJlIGJ1aWx0JykKKworICAgICAgICAjIEJ1aWxkIGEgY29yZS1pbWFnZS13ZXN0b24KKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS13ZXN0b24nKQorCisgICAgQE9FVGVzdElEKDE0OTcpCisgICAgZGVmIHRlc3RfYm1hcChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBibWFwIHN1cHBvcnQKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGNvcmUtaW1hZ2UtbWluaW1hbCBjYW4gYmUgYnVpbGQgd2l0aCBibWFwIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgIDIuIGNvcmUtaW1hZ2UtbWluaW1hbCBpcyBzcGFyc2UKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICBmZWF0dXJlcyA9ICdJTUFHRV9GU1RZUEVTICs9ICIgZXh0NCBleHQ0LmJtYXAgZXh0NC5ibWFwLmd6IicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIGJpdGJha2UoaW1hZ2VfbmFtZSkKKworICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCisgICAgICAgIGxpbmtfbmFtZSA9IGdldF9iYl92YXIoJ0lNQUdFX0xJTktfTkFNRScsIGltYWdlX25hbWUpCisgICAgICAgIGltYWdlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9pbWFnZSwgIiVzLmV4dDQiICUgbGlua19uYW1lKQorICAgICAgICBibWFwX3BhdGggPSAiJXMuYm1hcCIgJSBpbWFnZV9wYXRoCisgICAgICAgIGd6aXBfcGF0aCA9ICIlcy5neiIgJSBibWFwX3BhdGgKKworICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpbWFnZSwgYm1hcCBhbmQgYm1hcC5neiBmaWxlcyBhcmUgaW4gZGVwbG95IGRpcmVjdG9yeQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoaW1hZ2VfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhibWFwX3BhdGgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZ3ppcF9wYXRoKSkKKworICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpbWFnZSBpcyBzcGFyc2UKKyAgICAgICAgaW1hZ2Vfc3RhdCA9IG9zLnN0YXQoaW1hZ2VfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGltYWdlX3N0YXQuc3Rfc2l6ZSA+IGltYWdlX3N0YXQuc3RfYmxvY2tzICogNTEyKQorCisgICAgICAgICMgY2hlY2sgaWYgdGhlIHJlc3VsdGluZyBnemlwIGlzIHZhbGlkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydW5DbWQoJ2d6aXAgLXQgJXMnICUgZ3ppcF9wYXRoKSkKKworICAgIEBPRVRlc3RJRCgxOTAzKQorICAgIGRlZiB0ZXN0X2h5cGVydmlzb3JfZm10cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayB2YXJpb3VzIGh5cGVydmlzb3IgZm9ybWF0cworICAgICAgICBFeHBlY3RlZDogICAgMS4gY29yZS1pbWFnZS1taW5pbWFsIGNhbiBiZSBidWlsdCB3aXRoIHZtZGssIHZkaSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHFjb3cyIHN1cHBvcnQuCisgICAgICAgICAgICAgICAgICAgICAyLiBxZW11LWltZyBzYXlzIGVhY2ggaW1hZ2UgaGFzIHRoZSBleHBlY3RlZCBmb3JtYXQKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIFRvbSBSaW5pIDx0cmluaUBrb25zdWxrby5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGltZ190eXBlcyA9IFsgJ3ZtZGsnLCAndmRpJywgJ3Fjb3cyJyBdCisgICAgICAgIGZlYXR1cmVzID0gIiIKKyAgICAgICAgZm9yIGl0eXBlIGluIGltZ190eXBlczoKKyAgICAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GU1RZUEVTICs9ICJ3aWMuJXMiXG4nICUgaXR5cGUKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIGJpdGJha2UoaW1hZ2VfbmFtZSkKKworICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCisgICAgICAgIGxpbmtfbmFtZSA9IGdldF9iYl92YXIoJ0lNQUdFX0xJTktfTkFNRScsIGltYWdlX25hbWUpCisgICAgICAgIGZvciBpdHlwZSBpbiBpbWdfdHlwZXM6CisgICAgICAgICAgICBpbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXJfaW1hZ2UsICIlcy53aWMuJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtfbmFtZSwgaXR5cGUpKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpbWFnZSBmaWxlIGlzIGluIGRlcGxveSBkaXJlY3RvcnkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhpbWFnZV9wYXRoKSkKKworICAgICAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaW1hZ2UgaXMgdm1kaworICAgICAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1NUQUdJTkdfRElSX05BVElWRScsICdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdxZW11LWltZyBpbmZvIC0tb3V0cHV0IGpzb24gJXMnICUgaW1hZ2VfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdD1zeXNyb290KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb24ubG9hZHMocmVzdWx0Lm91dHB1dCkuZ2V0KCdmb3JtYXQnKSA9PSBpdHlwZSkKKworICAgIEBPRVRlc3RJRCgxOTA1KQorICAgIGRlZiB0ZXN0X2xvbmdfY2hhaW5fY29udmVyc2lvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBmb3IgY2hhaW5pbmcgbWFueSBDT05WRVJTSU9OX0NNRHMgdG9nZXRoZXIKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGNvcmUtaW1hZ2UtbWluaW1hbCBjYW4gYmUgYnVpbHQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgZXh0NC5ibWFwLmd6LmJ6Mi5sem8ueHoudS1ib290IGFuZCBhbHNvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaGEyNTZzdW0KKyAgICAgICAgICAgICAgICAgICAgIDIuIFRoZSBhYm92ZSBpbWFnZSBoYXMgYSB2YWxpZCBzaGEyNTZzdW0KKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIFRvbSBSaW5pIDx0cmluaUBrb25zdWxrby5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGNvbnYgPSAiZXh0NC5ibWFwLmd6LmJ6Mi5sem8ueHoudS1ib290IgorICAgICAgICBmZWF0dXJlcyA9ICdJTUFHRV9GU1RZUEVTICs9ICIlcyAlcy5zaGEyNTZzdW0iJyAlIChjb252LCBjb252KQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBpbWFnZV9uYW1lID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgYml0YmFrZShpbWFnZV9uYW1lKQorCisgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKKyAgICAgICAgbGlua19uYW1lID0gZ2V0X2JiX3ZhcignSU1BR0VfTElOS19OQU1FJywgaW1hZ2VfbmFtZSkKKyAgICAgICAgaW1hZ2VfcGF0aCA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyX2ltYWdlLCAiJXMuJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlua19uYW1lLCBjb252KSkKKworICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdGluZyBpbWFnZSBpcyBpbiB0aGUgZGVwbG95IGRpcmVjdG9yeQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoaW1hZ2VfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhpbWFnZV9wYXRoICsgIi5zaGEyNTZzdW0iKSkKKworICAgICAgICAjIGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgc2hhMjU2c3VtIGFncmVlcworICAgICAgICBzZWxmLmFzc2VydFRydWUocnVuQ21kKCdjZCAlcztzaGEyNTZzdW0gLWMgJXMuJXMuc2hhMjU2c3VtJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcGxveV9kaXJfaW1hZ2UsIGxpbmtfbmFtZSwgY29udikpKQorCisgICAgQE9FVGVzdElEKDE5MDQpCisgICAgZGVmIHRlc3RfaW1hZ2VfZnN0eXBlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBpZiBpbWFnZSBvZiBzdXBwb3J0ZWQgaW1hZ2UgZnN0eXBlcyBjYW4gYmUgYnVpbHQKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIGNvcmUtaW1hZ2UtbWluaW1hbCBjYW4gYmUgYnVpbHQgZm9yIHZhcmlvdXMgaW1hZ2UgdHlwZXMKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisKKyAgICAgICAgaW1nX3R5cGVzID0gW2l0eXBlIGZvciBpdHlwZSBpbiBnZXRfYmJfdmFyKCJJTUFHRV9UWVBFUyIsIGltYWdlX25hbWUpLnNwbGl0KCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0eXBlIG5vdCBpbiAoJ2NvbnRhaW5lcicsICdlbGYnLCAnbXVsdGl1YmknKV0KKworICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAiJXMiXG4nXAorICAgICAgICAgICAgICAgICAnTUtVQklGU19BUkdTID89ICItbSAyMDQ4IC1lIDEyOTAyNCAtYyAyMDQ3IlxuJ1wKKyAgICAgICAgICAgICAgICAgJ1VCSU5JWkVfQVJHUyA/PSAiLW0gMjA0OCAtcCAxMjhLaUIgLXMgNTEyIicgJSAnICcuam9pbihpbWdfdHlwZXMpCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnKQorCisgICAgICAgIGJpdGJha2UoaW1hZ2VfbmFtZSkKKworICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCisgICAgICAgIGxpbmtfbmFtZSA9IGdldF9iYl92YXIoJ0lNQUdFX0xJTktfTkFNRScsIGltYWdlX25hbWUpCisgICAgICAgIGZvciBpdHlwZSBpbiBpbWdfdHlwZXM6CisgICAgICAgICAgICBpbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXJfaW1hZ2UsICIlcy4lcyIgJSAobGlua19uYW1lLCBpdHlwZSkpCisgICAgICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpbWFnZSBpcyBpbiBkZXBsb3kgZGlyZWN0b3J5CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoaW1hZ2VfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGltYWdlICVzIGRvZXNuJ3QgZXhpc3QiICUgKGl0eXBlLCBpbWFnZV9wYXRoKSkKKworICAgIGRlZiB0ZXN0X3VzZXJhZGRfc3RhdGljKHNlbGYpOgorICAgICAgICBjb25maWcgPSAiIiIKK1VTRVJBRERFWFRFTlNJT04gPSAidXNlcmFkZC1zdGF0aWNpZHMiCitVU0VSQUREX0VSUk9SX0RZTkFNSUMgPSAic2tpcCIKK1VTRVJBRERfVUlEX1RBQkxFUyArPSAiZmlsZXMvc3RhdGljLXBhc3N3ZCIKK1VTRVJBRERfR0lEX1RBQkxFUyArPSAiZmlsZXMvc3RhdGljLWdyb3VwIgorIiIiCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZykKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1iYXNlIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xheWVyYXBwZW5kLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGF5ZXJhcHBlbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZkNWNkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xheWVyYXBwZW5kLnB5CkBAIC0wLDAgKzEsOTUgQEAKK2ltcG9ydCBvcworCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcgoraW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIExheWVyQXBwZW5kVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBsYXllcmNvbmYgPSAiIiIKKyMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhcHBlbmQgdG8gQkJQQVRICitCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKKworIyBXZSBoYXZlIGEgcmVjaXBlcyBkaXJlY3RvcnksIGFkZCB0byBCQkZJTEVTCitCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzKi8qLmJiICR7TEFZRVJESVJ9L3JlY2lwZXMqLyouYmJhcHBlbmQiCisKK0JCRklMRV9DT0xMRUNUSU9OUyArPSAibWV0YS1sYXllcklOVCIKK0JCRklMRV9QQVRURVJOX21ldGEtbGF5ZXJJTlQgOj0gIl4ke0xBWUVSRElSfS8iCitCQkZJTEVfUFJJT1JJVFlfbWV0YS1sYXllcklOVCA9ICI2IgorIiIiCisgICAgcmVjaXBlID0gIiIiCitMSUNFTlNFPSJDTE9TRUQiCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCitweXRob24gZG9fYnVpbGQoKSB7CisgICAgYmIucGxhaW4oJ0J1aWxkaW5nIC4uLicpCit9CithZGR0YXNrIGJ1aWxkCisiIiIKKyAgICBhcHBlbmQgPSAiIiIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKKworU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9hcHBlbmR0ZXN0LnR4dCIKKworc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vYXBwZW5kdGVzdC50eHQgJHtTWVNST09UX0RFU1RESVJ9LworfQorCisiIiIKKworICAgIGFwcGVuZDIgPSAiIiIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKKworU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9hcHBlbmR0ZXN0LnR4dCIKKyIiIgorICAgIGxheWVyYXBwZW5kID0gJycKKworICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmxheWVyYXBwZW5kOgorICAgICAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoc2VsZi5idWlsZGRpciArICIvY29uZi9iYmxheWVycy5jb25mIiwgc2VsZi5sYXllcmFwcGVuZCkKKyAgICAgICAgc3VwZXIoTGF5ZXJBcHBlbmRUZXN0cywgc2VsZikudGVhckRvd25Mb2NhbCgpCisKKyAgICBAT0VUZXN0SUQoMTE5NikKKyAgICBkZWYgdGVzdF9sYXllcl9hcHBlbmRzKHNlbGYpOgorICAgICAgICBjb3JlYmFzZSA9IGdldF9iYl92YXIoIkNPUkVCQVNFIikKKworICAgICAgICBmb3IgbCBpbiBbIjAiLCAiMSIsICIyIl06CisgICAgICAgICAgICBsYXllciA9IG9zLnBhdGguam9pbihjb3JlYmFzZSwgIm1ldGEtbGF5ZXJ0ZXN0IiArIGwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGxheWVyKSkKKyAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyKQorICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIgKyAiL2NvbmYiKQorICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9jb25mL2xheWVyLmNvbmYiLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLmxheWVyY29uZi5yZXBsYWNlKCJJTlQiLCBsKSkKKyAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyICsgIi9yZWNpcGVzLXRlc3QiKQorICAgICAgICAgICAgaWYgbCA9PSAiMCI6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0LmJiIiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYucmVjaXBlKQorICAgICAgICAgICAgZWxpZiBsID09ICIxIjoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QuYmJhcHBlbmQiLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5hcHBlbmQpCisgICAgICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QiKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC9hcHBlbmR0ZXN0LnR4dCIsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiTGF5ZXIgMSB0ZXN0IikKKyAgICAgICAgICAgIGVsaWYgbCA9PSAiMiI6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0LmJiYXBwZW5kIiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXBwZW5kMikKKyAgICAgICAgICAgICAgICBvcy5ta2RpcihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdCIpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0L2FwcGVuZHRlc3QudHh0IiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJMYXllciAyIHRlc3QiKQorICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChsYXllcikKKworICAgICAgICBzZWxmLmxheWVyYXBwZW5kID0gIkJCTEFZRVJTICs9IFwiezB9L21ldGEtbGF5ZXJ0ZXN0MCB7MH0vbWV0YS1sYXllcnRlc3QxIHswfS9tZXRhLWxheWVydGVzdDJcIiIuZm9ybWF0KGNvcmViYXNlKQorICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoc2VsZi5idWlsZGRpciArICIvY29uZi9iYmxheWVycy5jb25mIiwgc2VsZi5sYXllcmFwcGVuZCkKKyAgICAgICAgc3RhZ2luZ2RpciA9IGdldF9iYl92YXIoIlNZU1JPT1RfREVTVERJUiIsICJsYXllcmFwcGVuZHRlc3QiKQorICAgICAgICBiaXRiYWtlKCJsYXllcmFwcGVuZHRlc3QiKQorICAgICAgICBkYXRhID0gZnRvb2xzLnJlYWRfZmlsZShzdGFnaW5nZGlyICsgIi9hcHBlbmR0ZXN0LnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgIkxheWVyIDIgdGVzdCIpCisgICAgICAgIG9zLnJlbW92ZShjb3JlYmFzZSArICIvbWV0YS1sYXllcnRlc3QyL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QvYXBwZW5kdGVzdC50eHQiKQorICAgICAgICBiaXRiYWtlKCJsYXllcmFwcGVuZHRlc3QiKQorICAgICAgICBkYXRhID0gZnRvb2xzLnJlYWRfZmlsZShzdGFnaW5nZGlyICsgIi9hcHBlbmR0ZXN0LnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgIkxheWVyIDEgdGVzdCIpCisgICAgICAgIHdpdGggb3Blbihjb3JlYmFzZSArICIvbWV0YS1sYXllcnRlc3QyL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QvYXBwZW5kdGVzdC50eHQiLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJMYXllciAyIHRlc3QiKQorICAgICAgICBiaXRiYWtlKCJsYXllcmFwcGVuZHRlc3QiKQorICAgICAgICBkYXRhID0gZnRvb2xzLnJlYWRfZmlsZShzdGFnaW5nZGlyICsgIi9hcHBlbmR0ZXN0LnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgIkxheWVyIDIgdGVzdCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWJvZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xpYm9lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NDYwOTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWJvZS5weQpAQCAtMCwwICsxLDEwMiBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBiaXRiYWtlLCBydW5DbWQKK2ltcG9ydCBvZS5wYXRoCitpbXBvcnQgb3MKKworY2xhc3MgTGliT0UoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKExpYk9FLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBjbHMudG1wX2RpciA9IGdldF9iYl92YXIoJ1RNUERJUicpCisKKyAgICBAT0VUZXN0SUQoMTYzNSkKKyAgICBkZWYgdGVzdF9jb3B5X3RyZWVfc3BlY2lhbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgIG9lLnBhdGguY29weXRyZWUoKSBzaG91bGQgY29weSBmaWxlcyB3aXRoIHNwZWNpYWwgY2hhcmFjdGVyCisgICAgICAgIEV4cGVjdGVkOiAgICd0ZXN0IGZpbGUgd2l0aCBzcMKjYyFhbCBAbmQgc3BhY2VzJyBzaG91bGQgZXhpc3QgaW4KKyAgICAgICAgICAgICAgICAgICAgY29weSBkZXN0aW5hdGlvbgorICAgICAgICBQcm9kdWN0OiAgICBPRS1Db3JlCisgICAgICAgIEF1dGhvcjogICAgIEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIHRlc3Rsb2MgPSBvZS5wYXRoLmpvaW4oc2VsZi50bXBfZGlyLCAnbGlib2V0ZXN0cycpCisgICAgICAgIHNyYyA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnc3JjJykKKyAgICAgICAgZHN0ID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdkc3QnKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodGVzdGxvYykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNyYykKKyAgICAgICAgdGVzdGZpbGVuYW1lID0gJ3Rlc3QgZmlsZSB3aXRoIHNwwqNjIWFsIEBuZCBzcGFjZXMnCisKKyAgICAgICAgIyBjcmVhdGUgdGhlIHRlc3QgZmlsZSBhbmQgY29weSBpdAorICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSksICd3K2InKS5jbG9zZSgpCisgICAgICAgIG9lLnBhdGguY29weXRyZWUoc3JjLCBkc3QpCisKKyAgICAgICAgIyBlbnN1cmUgcGF0aCBleGlzdHMgaW4gZGVzdAorICAgICAgICBmaWxlaW5kc3QgPSBvcy5wYXRoLmlzZmlsZShvZS5wYXRoLmpvaW4oZHN0LCB0ZXN0ZmlsZW5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZWluZHN0LCAiRmlsZSB3aXRoIHNwYWNlcyBkb2Vzbid0IGV4aXN0IGluIGRzdCIpCisKKyAgICAgICAgb2UucGF0aC5yZW1vdmUodGVzdGxvYykKKworICAgIEBPRVRlc3RJRCgxNjM2KQorICAgIGRlZiB0ZXN0X2NvcHlfdHJlZV94YXR0cihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgIG9lLnBhdGguY29weXRyZWUoKSBzaG91bGQgcHJlc2VydmUgeGF0dHIgb24gY29waWVkIGZpbGVzCisgICAgICAgIEV4cGVjdGVkOiAgIHRlc3R4YXR0ciBmaWxlIGluIGRlc3RpbmF0aW9uIHNob3VsZCBoYXZlIHVzZXIub2V0ZXN0CisgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBQcm9kdWN0OiAgICBPRS1Db3JlCisgICAgICAgIEF1dGhvcjogICAgIEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIHRlc3Rsb2MgPSBvZS5wYXRoLmpvaW4oc2VsZi50bXBfZGlyLCAnbGlib2V0ZXN0cycpCisgICAgICAgIHNyYyA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnc3JjJykKKyAgICAgICAgZHN0ID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdkc3QnKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodGVzdGxvYykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNyYykKKyAgICAgICAgdGVzdGZpbGVuYW1lID0gJ3Rlc3R4YXR0cicKKworICAgICAgICAjIGVuc3VyZSB3ZSBoYXZlIHNldGZhdHRyIGF2YWlsYWJsZQorICAgICAgICBiaXRiYWtlKCJhdHRyLW5hdGl2ZSIpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1lTUk9PVF9ERVNURElSJywgJ2JpbmRpciddLCAnYXR0ci1uYXRpdmUnKQorICAgICAgICBkZXN0ZGlyID0gYmJfdmFyc1snU1lTUk9PVF9ERVNURElSJ10KKyAgICAgICAgYmluZGlyID0gYmJfdmFyc1snYmluZGlyJ10KKyAgICAgICAgYmluZGlyID0gZGVzdGRpciArIGJpbmRpcgorCisgICAgICAgICMgY3JlYXRlIGEgZmlsZSB3aXRoIHhhdHRyIGFuZCBjb3B5IGl0CisgICAgICAgIG9wZW4ob2UucGF0aC5qb2luKHNyYywgdGVzdGZpbGVuYW1lKSwgJ3crYicpLmNsb3NlKCkKKyAgICAgICAgcnVuQ21kKCclcy9zZXRmYXR0ciAtbiB1c2VyLm9ldGVzdCAtdiAidGVzdGluZyBsaWJvZSIgJXMnICUgKGJpbmRpciwgb2UucGF0aC5qb2luKHNyYywgdGVzdGZpbGVuYW1lKSkpCisgICAgICAgIG9lLnBhdGguY29weXRyZWUoc3JjLCBkc3QpCisKKyAgICAgICAgIyBlbnN1cmUgZmlsZSBpbiBkZXN0IGhhcyB1c2VyLm9ldGVzdCB4YXR0cgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJyVzL2dldGZhdHRyIC1uIHVzZXIub2V0ZXN0ICVzJyAlIChiaW5kaXIsIG9lLnBhdGguam9pbihkc3QsIHRlc3RmaWxlbmFtZSkpKQorICAgICAgICBzZWxmLmFzc2VydEluKCd1c2VyLm9ldGVzdD0idGVzdGluZyBsaWJvZSInLCByZXN1bHQub3V0cHV0LCAnRXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBzZXJ0IGluIGRzdCcpCisKKyAgICAgICAgb2UucGF0aC5yZW1vdmUodGVzdGxvYykKKworICAgIEBPRVRlc3RJRCgxNjM0KQorICAgIGRlZiB0ZXN0X2NvcHlfaGFyZGxpbmtfdHJlZV9jb3VudChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgIG9lLnBhdGguY29weWhhcmRsaW5rdHJlZSgpIHNob3VsZG4ndCBtaXNzIG91dCBmaWxlcworICAgICAgICBFeHBlY3RlZDogICBzcmMgYW5kIGRzdCBzaG91bGQgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZmlsZXMKKyAgICAgICAgUHJvZHVjdDogICAgT0UtQ29yZQorICAgICAgICBBdXRob3I6ICAgICBKb3NodWEgTG9jayA8am9zaHVhLmcubG9ja0BpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICB0ZXN0bG9jID0gb2UucGF0aC5qb2luKHNlbGYudG1wX2RpciwgJ2xpYm9ldGVzdHMnKQorICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ3NyYycpCisgICAgICAgIGRzdCA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnZHN0JykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRlc3Rsb2MpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmMpCisgICAgICAgIHRlc3RmaWxlcyA9IFsnZm9vJywgJ2JhcicsICcuYmF6JywgJ3F1dXgnXQorCisgICAgICAgIGRlZiB0b3VjaGZpbGUodGYpOgorICAgICAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc3JjLCB0ZiksICd3K2InKS5jbG9zZSgpCisKKyAgICAgICAgZm9yIGYgaW4gdGVzdGZpbGVzOgorICAgICAgICAgICAgdG91Y2hmaWxlKGYpCisKKyAgICAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKHNyYywgZHN0KQorCisgICAgICAgIGRzdGNudCA9IGxlbihvcy5saXN0ZGlyKGRzdCkpCisgICAgICAgIHNyY2NudCA9IGxlbihvcy5saXN0ZGlyKHNyYykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRzdGNudCwgbGVuKHRlc3RmaWxlcyksICJOdW1iZXIgb2YgZmlsZXMgaW4gZHN0ICglcykgZGlmZmVycyBmcm9tIG51bWJlciBvZiBmaWxlcyBpbiBzcmMoJXMpLiIgJSAoZHN0Y250LCBzcmNjbnQpKQorCisgICAgICAgIG9lLnBhdGgucmVtb3ZlKHRlc3Rsb2MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWNfY2hlY2tzdW0ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWNfY2hlY2tzdW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc0MDcxNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xpY19jaGVja3N1bS5weQpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UKK2Zyb20gb2VxYS51dGlscyBpbXBvcnQgQ29tbWFuZEVycm9yCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgTGljZW5zZVRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICAjIFZlcmlmeSB0aGF0IGNoYW5naW5nIGEgbGljZW5zZSBmaWxlIHRoYXQgaGFzIGFuIGFic29sdXRlIHBhdGggY2F1c2VzCisgICAgIyB0aGUgbGljZW5zZSBxYSB0byBmYWlsIGR1ZSB0byBhIG1pc21hdGNoZWQgbWQ1c3VtLgorICAgIEBPRVRlc3RJRCgxMTk3KQorICAgIGRlZiB0ZXN0X25vbm1hdGNoaW5nX2NoZWNrc3VtKHNlbGYpOgorICAgICAgICBiaXRiYWtlX2NtZCA9ICctYyBwb3B1bGF0ZV9saWMgZW1wdHl0ZXN0JworICAgICAgICBlcnJvcl9tc2cgPSAnZW1wdHl0ZXN0OiBUaGUgbmV3IG1kNSBjaGVja3N1bSBpcyA4ZDc3N2YzODVkM2RmZWM4ODE1ZDIwZjc0OTYwMjZkYycKKworICAgICAgICBsaWNfZmlsZSwgbGljX3BhdGggPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgb3MuY2xvc2UobGljX2ZpbGUpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobGljX3BhdGgpCisKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ2VtcHR5dGVzdCcsICIiIgorSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyVzO21kNT1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIKK1NSQ19VUkkgPSAiZmlsZTovLyVzO21kNT1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIKKyIiIiAlIChsaWNfcGF0aCwgbGljX3BhdGgpKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKGJpdGJha2VfY21kKQorCisgICAgICAgIHdpdGggb3BlbihsaWNfcGF0aCwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIiIpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoYml0YmFrZV9jbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgaWYgZXJyb3JfbXNnIG5vdCBpbiByZXN1bHQub3V0cHV0OgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IocmVzdWx0Lm91dHB1dCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21hbmlmZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWFuaWZlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ2MDcxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21hbmlmZXN0LnB5CkBAIC0wLDAgKzEsMTY2IEBACitpbXBvcnQgb3MKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycywgYml0YmFrZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIE1hbmlmZXN0RW50cnk6CisgICAgJycnQSBtYW5pZmVzdCBpdGVtIG9mIGEgY29sbGVjdGlvbiBhYmxlIHRvIGxpc3QgbWlzc2luZyBwYWNrYWdlcycnJworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnRyeSk6CisgICAgICAgIHNlbGYuZmlsZSA9IGVudHJ5CisgICAgICAgIHNlbGYubWlzc2luZyA9IFtdCisKK2NsYXNzIFZlcmlmeU1hbmlmZXN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgJycnVGVzdHMgZm9yIHRoZSBtYW5pZmVzdCBmaWxlcyBhbmQgY29udGVudHMgb2YgYW4gaW1hZ2UnJycKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjaGVja19tYW5pZmVzdF9lbnRyaWVzKHNlbGYsIG1hbmlmZXN0LCBwYXRoKToKKyAgICAgICAgbWFuaWZlc3RfZXJyb3JzID0gW10KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0LCAiciIpIGFzIG1maWxlOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIG1maWxlOgorICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9lbnRyeSA9IG9zLnBhdGguam9pbihwYXRoLCBsaW5lLnNwbGl0KClbMF0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fTogbG9va2luZyBmb3Ige30iXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWFuaWZlc3RfZW50cnkpKQorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFuaWZlc3RfZW50cnkpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZXJyb3JzLmFwcGVuZChtYW5pZmVzdF9lbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fToge30gbm90IGZvdW5kIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1hbmlmZXN0X2VudHJ5KSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fTogY2hlY2tpbmcgb2Yge30gZmFpbGVkIlwKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWFuaWZlc3QpKQorICAgICAgICAgICAgcmFpc2UgZQorCisgICAgICAgIHJldHVybiBtYW5pZmVzdF9lcnJvcnMKKworICAgICN0aGlzIHdpbGwgcG9zc2libHkgbW92ZSBmcm9tIGhlcmUKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X2Rpcl9mcm9tX2JiX3ZhcihzZWxmLCBiYl92YXIsIHRhcmdldCA9IE5vbmUpOgorICAgICAgICB0YXJnZXQgPT0gc2VsZi5idWlsZHRhcmdldCBpZiB0YXJnZXQgPT0gTm9uZSBlbHNlIHRhcmdldAorICAgICAgICBkaXJlY3RvcnkgPSBnZXRfYmJfdmFyKGJiX3ZhciwgdGFyZ2V0KTsKKyAgICAgICAgaWYgbm90IGRpcmVjdG9yeSBvciBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3RvcnkpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiB7fSBwb2ludHMgdG8ge30gd2hlbiB0YXJnZXQgPSB7fSJcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIGJiX3ZhciwgZGlyZWN0b3J5LCB0YXJnZXQpKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcgorICAgICAgICByZXR1cm4gZGlyZWN0b3J5CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKKworICAgICAgICBzdXBlcihWZXJpZnlNYW5pZmVzdCwgc2VsZikuc2V0VXBDbGFzcygpCisgICAgICAgIHNlbGYuYnVpbGR0YXJnZXQgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBzZWxmLmNsYXNzbmFtZSA9ICdWZXJpZnlNYW5pZmVzdCcKKworICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJ7fTogZG9pbmcgYml0YmFrZSB7fSBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgdGVzdCJcCisgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgc2VsZi5idWlsZHRhcmdldCkpCisgICAgICAgIGlmIGJpdGJha2Uoc2VsZi5idWlsZHRhcmdldCkuc3RhdHVzOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9IEZhaWxlZCB0byBzZXR1cCB7fSJcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIHNlbGYuYnVpbGR0YXJnZXQpKQorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgie306IENhbm5vdCBzZXR1cCB0ZXN0aW5nIHNjZW5hcmlvIlwKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSkpCisKKyAgICBAT0VUZXN0SUQoMTM4MCkKKyAgICBkZWYgdGVzdF9TREtfbWFuaWZlc3RfZW50cmllcyhzZWxmKToKKyAgICAgICAgJycnVmVyaWZ5aW5nIHRoZSBTREsgbWFuaWZlc3QgZW50cmllcyBleGlzdCwgdGhpcyBtYXkgdGFrZSBhIGJ1aWxkJycnCisKKyAgICAgICAgIyB0aGUgc2V0dXAgc2hvdWxkIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsIGFuZCBoZXJlIGl0IGlzIHJlcXVpcmVkCisgICAgICAgICMgdG8gZG8gYW4gYWRkaXRpb25hbCBzZXR1cCBmb3IgdGhlIHNkaworICAgICAgICBzZGt0YXNrID0gJy1jIHBvcHVsYXRlX3NkaycKKyAgICAgICAgYmJhcmdzID0gc2RrdGFzayArICcgJyArIHNlbGYuYnVpbGR0YXJnZXQKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiBkb2luZyBiaXRiYWtlIHt9IGFzIGEgcHJlcmVxdWlzaXRlIG9mIHRoZSB0ZXN0IlwKKyAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBiYmFyZ3MpKQorICAgICAgICBpZiBiaXRiYWtlKGJiYXJncykuc3RhdHVzOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9IEZhaWxlZCB0byBiaXRiYWtlIHt9IlwKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgYmJhcmdzKSkKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInt9OiBDYW5ub3Qgc2V0dXAgdGVzdGluZyBzY2VuYXJpbyJcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUpKQorCisKKyAgICAgICAgcGtnZGF0YV9kaXIgPSByZXZlcnNlX2RpciA9IHt9CisgICAgICAgIG1maWxlbmFtZSA9IG1wYXRoID0gbV9lbnRyeSA9IHt9CisgICAgICAgICMgZ2V0IG1hbmlmZXN0IGxvY2F0aW9uIGJhc2VkIG9uIHRhcmdldCB0byBxdWVyeSBhYm91dAorICAgICAgICBkX3RhcmdldD0gZGljdCh0YXJnZXQgPSBzZWxmLmJ1aWxkdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSAnbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1kaXIgPSBzZWxmLmdldF9kaXJfZnJvbV9iYl92YXIoJ1NES19ERVBMT1knLCBzZWxmLmJ1aWxkdGFyZ2V0KQorICAgICAgICAgICAgZm9yIGsgaW4gZF90YXJnZXQua2V5cygpOgorICAgICAgICAgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NES19OQU1FJywgJ1NES19WRVJTSU9OJ10sIHNlbGYuYnVpbGR0YXJnZXQpCisgICAgICAgICAgICAgICAgbWZpbGVuYW1lW2tdID0gInt9LXRvb2xjaGFpbi17fS57fS5tYW5pZmVzdCIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgYmJfdmFyc1snU0RLX05BTUUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiX3ZhcnNbJ1NES19WRVJTSU9OJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBrKQorICAgICAgICAgICAgICAgIG1wYXRoW2tdID0gb3MucGF0aC5qb2luKG1kaXIsIG1maWxlbmFtZVtrXSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobXBhdGhba10pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IHt9IGRvZXMgbm90IGV4aXN0Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzbmFtZSwgbXBhdGhba10pKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCisgICAgICAgICAgICAgICAgbV9lbnRyeVtrXSA9IE1hbmlmZXN0RW50cnkobXBhdGhba10pCisKKyAgICAgICAgICAgICAgICBwa2dkYXRhX2RpcltrXSA9IHNlbGYuZ2V0X2Rpcl9mcm9tX2JiX3ZhcignUEtHREFUQV9ESVInLAorICAgICAgICAgICAgICAgICAgICAgICAgZF90YXJnZXRba10pCisgICAgICAgICAgICAgICAgcmV2ZXJzZV9kaXJba10gPSBvcy5wYXRoLmpvaW4ocGtnZGF0YV9kaXJba10sCisgICAgICAgICAgICAgICAgICAgICAgICAncnVudGltZS1yZXZlcnNlJykKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocmV2ZXJzZV9kaXJba10pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IHt9IGRvZXMgbm90IGV4aXN0Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzbmFtZSwgcmV2ZXJzZV9kaXJba10pKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5za2lwVGVzdCgie306IEVycm9yIGluIG9idGFpbmluZyBtYW5pZmVzdCBkaXJzIlwKKyAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lKSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBtc2cgPSAie306IEVycm9yIGNhbm5vdCBmaW5kIG1hbmlmZXN0cyBpbiB0aGUgc3BlY2lmaWVkIGRpcjpcbnt9IlwKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWRpcikKKyAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCisKKyAgICAgICAgZm9yIGsgaW4gZF90YXJnZXQua2V5cygpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiBDaGVjayBtYW5pZmVzdCB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NuYW1lLCBtX2VudHJ5W2tdLmZpbGUpKQorCisgICAgICAgICAgICBtX2VudHJ5W2tdLm1pc3NpbmcgPSBzZWxmLmNoZWNrX21hbmlmZXN0X2VudHJpZXMoXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VudHJ5W2tdLmZpbGUscmV2ZXJzZV9kaXJba10pCisgICAgICAgICAgICBpZiBtX2VudHJ5W2tdLm1pc3Npbmc6CisgICAgICAgICAgICAgICAgbXNnID0gJ3t9OiB7fSBFcnJvciBoYXMgdGhlIGZvbGxvd2luZyBtaXNzaW5nIGVudHJpZXMnXAorICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbV9lbnRyeVtrXS5maWxlKQorICAgICAgICAgICAgICAgIGxvZ21zZyA9IG1zZysnOlxuJysnXG4nLmpvaW4obV9lbnRyeVtrXS5taXNzaW5nKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKGxvZ21zZykKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwobG9nbXNnKQorCisgICAgQE9FVGVzdElEKDEzODEpCisgICAgZGVmIHRlc3RfaW1hZ2VfbWFuaWZlc3RfZW50cmllcyhzZWxmKToKKyAgICAgICAgJycnVmVyaWZ5aW5nIHRoZSBpbWFnZSBtYW5pZmVzdCBlbnRyaWVzIGV4aXN0JycnCisKKyAgICAgICAgIyBnZXQgbWFuaWZlc3QgbG9jYXRpb24gYmFzZWQgb24gdGFyZ2V0IHRvIHF1ZXJ5IGFib3V0CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1kaXIgPSBzZWxmLmdldF9kaXJfZnJvbV9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWlsZHRhcmdldCkKKyAgICAgICAgICAgIG1maWxlbmFtZSA9IGdldF9iYl92YXIoIklNQUdFX0xJTktfTkFNRSIsIHNlbGYuYnVpbGR0YXJnZXQpXAorICAgICAgICAgICAgICAgICAgICArICIubWFuaWZlc3QiCisgICAgICAgICAgICBtcGF0aCA9IG9zLnBhdGguam9pbihtZGlyLCBtZmlsZW5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobXBhdGgpOiByYWlzZSBJT0Vycm9yCisgICAgICAgICAgICBtX2VudHJ5ID0gTWFuaWZlc3RFbnRyeShtcGF0aCkKKworICAgICAgICAgICAgcGtnZGF0YV9kaXIgPSB7fQorICAgICAgICAgICAgcGtnZGF0YV9kaXIgPSBzZWxmLmdldF9kaXJfZnJvbV9iYl92YXIoJ1BLR0RBVEFfRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVpbGR0YXJnZXQpCisgICAgICAgICAgICByZXZkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGF0YV9kaXIsICdydW50aW1lLXJldmVyc2UnKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJldmRpcik6IHJhaXNlIElPRXJyb3IKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByYWlzZSBzZWxmLnNraXBUZXN0KCJ7fTogRXJyb3IgaW4gb2J0YWluaW5nIG1hbmlmZXN0IGRpcnMiXAorICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUpKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIG1zZyA9ICJ7fTogRXJyb3IgY2Fubm90IGZpbmQgbWFuaWZlc3RzIGluIGRpcjpcbnt9IlwKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWRpcikKKyAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCisKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiBDaGVjayBtYW5pZmVzdCB7fSJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbV9lbnRyeS5maWxlKSkKKyAgICAgICAgbV9lbnRyeS5taXNzaW5nID0gc2VsZi5jaGVja19tYW5pZmVzdF9lbnRyaWVzKFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VudHJ5LmZpbGUsIHJldmRpcikKKyAgICAgICAgaWYgbV9lbnRyeS5taXNzaW5nOgorICAgICAgICAgICAgbXNnID0gJ3t9OiB7fSBFcnJvciBoYXMgdGhlIGZvbGxvd2luZyBtaXNzaW5nIGVudHJpZXMnXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtX2VudHJ5LmZpbGUpCisgICAgICAgICAgICBsb2dtc2cgPSBtc2crJzpcbicrJ1xuJy5qb2luKG1fZW50cnkubWlzc2luZykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKGxvZ21zZykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8obXNnKQorICAgICAgICAgICAgc2VsZi5mYWlsKGxvZ21zZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL19faW5pdF9fLnB5CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvYnVpbGRoaXN0b3J5LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvYnVpbGRoaXN0b3J5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4Njc1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9idWlsZGhpc3RvcnkucHkKQEAgLTAsMCArMSw5OSBAQAoraW1wb3J0IG9zCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIFRlc3RCbG9iUGFyc2luZyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpbXBvcnQgdGltZQorICAgICAgICBzZWxmLnJlcG9fcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdzZWxmdGVzdC1idWlsZGhpc3RvcnknLAorICAgICAgICAgICAgZGlyPWdldF9iYl92YXIoJ1RPUERJUicpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyb20gZ2l0IGltcG9ydCBSZXBvCisgICAgICAgICAgICBzZWxmLnJlcG8gPSBSZXBvLmluaXQoc2VsZi5yZXBvX3BhdGgpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1B5dGhvbiBtb2R1bGUgR2l0UHl0aG9uIGlzIG5vdCBwcmVzZW50JykKKworICAgICAgICBzZWxmLnRlc3RfZmlsZSA9ICJ0ZXN0IgorICAgICAgICBzZWxmLnZhcl9tYXAgPSB7fQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpbXBvcnQgc2h1dGlsCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5yZXBvX3BhdGgpCisKKyAgICBkZWYgY29tbWl0X3ZhcnMoc2VsZiwgdG9fYWRkPXt9LCB0b19yZW1vdmUgPSBbXSwgbXNnPSJBIGNvbW1pdCBtZXNzYWdlIik6CisgICAgICAgIGlmIGxlbih0b19hZGQpID09IDAgYW5kIGxlbih0b19yZW1vdmUpID09IDA6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBmb3IgayBpbiB0b19yZW1vdmU6CisgICAgICAgICAgICBzZWxmLnZhcl9tYXAucG9wKHgsTm9uZSkKKyAgICAgICAgZm9yIGsgaW4gdG9fYWRkOgorICAgICAgICAgICAgc2VsZi52YXJfbWFwW2tdID0gdG9fYWRkW2tdCisKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnJlcG9fcGF0aCwgc2VsZi50ZXN0X2ZpbGUpLCAndycpIGFzIHJlcG9fZmlsZToKKyAgICAgICAgICAgIGZvciBrIGluIHNlbGYudmFyX21hcDoKKyAgICAgICAgICAgICAgICByZXBvX2ZpbGUud3JpdGUoIiVzID0gJXNcbiIgJSAoaywgc2VsZi52YXJfbWFwW2tdKSkKKworICAgICAgICBzZWxmLnJlcG8uZ2l0LmFkZCgiLS1hbGwiKQorICAgICAgICBzZWxmLnJlcG8uZ2l0LmNvbW1pdChtZXNzYWdlPW1zZykKKworICAgIEBPRVRlc3RJRCgxODU5KQorICAgIGRlZiB0ZXN0X2Jsb2JfdG9fZGljdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY29udmVydGlvbiBvZiBnaXQgYmxvYnMgdG8gZGljdGlvbmFyeQorICAgICAgICAiIiIKKyAgICAgICAgZnJvbSBvZS5idWlsZGhpc3RvcnlfYW5hbHlzaXMgaW1wb3J0IGJsb2JfdG9fZGljdAorICAgICAgICB2YWx1ZXNtYXAgPSB7ICJmb28iIDogIjEiLCAiYmFyIiA6ICIyIiB9CisgICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0gdmFsdWVzbWFwKQorCisgICAgICAgIGJsb2IgPSBzZWxmLnJlcG8uaGVhZC5jb21taXQudHJlZS5ibG9ic1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlc21hcCwgYmxvYl90b19kaWN0KGJsb2IpLAorICAgICAgICAgICAgImNvbW1pdCB3YXMgbm90IHRyYW5zbGF0ZWQgY29ycmVjdGx5IHRvIGRpY3Rpb25hcnkiKQorCisgICAgQE9FVGVzdElEKDE4NjApCisgICAgZGVmIHRlc3RfY29tcGFyZV9kaWN0X2Jsb2JzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjb21wYXJpc3NvbiBvZiBkaWN0aW9uYXJpZXMgZXh0cmFjdGVkIGZyb20gZ2l0IGJsb2JzCisgICAgICAgICIiIgorICAgICAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgY29tcGFyZV9kaWN0X2Jsb2JzCisKKyAgICAgICAgY2hhbmdlc21hcCA9IHsgImZvby0yIiA6ICgiMiIsICI4IiksICJiYXIiIDogKCIiLCI0IiksICJiYXItMiIgOiAoIiIsIjUiKX0KKworICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHsgImZvbyIgOiAiMSIsICJmb28tMiIgOiAiMiIsICJmb28tMyIgOiAiMyIgfSkKKyAgICAgICAgYmxvYjEgPSBzZWxmLnJlcG8uaGVhZHMubWFzdGVyLmNvbW1pdC50cmVlLmJsb2JzWzBdCisKKyAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB7ICJmb28tMiIgOiAiOCIsICJiYXIiIDogIjQiLCAiYmFyLTIiIDogIjUiIH0pCisgICAgICAgIGJsb2IyID0gc2VsZi5yZXBvLmhlYWRzLm1hc3Rlci5jb21taXQudHJlZS5ibG9ic1swXQorCisgICAgICAgIGNoYW5nZV9yZWNvcmRzID0gY29tcGFyZV9kaWN0X2Jsb2JzKG9zLnBhdGguam9pbihzZWxmLnJlcG9fcGF0aCwgc2VsZi50ZXN0X2ZpbGUpLAorICAgICAgICAgICAgYmxvYjEsIGJsb2IyLCBGYWxzZSwgRmFsc2UpCisKKyAgICAgICAgdmFyX2NoYW5nZXMgPSB7IHguZmllbGRuYW1lIDogKHgub2xkdmFsdWUsIHgubmV3dmFsdWUpIGZvciB4IGluIGNoYW5nZV9yZWNvcmRzfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXNtYXAsIHZhcl9jaGFuZ2VzLCAiQ2hhbmdlcyBub3QgcmVwb3J0ZWQgY29ycmVjdGx5IikKKworICAgIEBPRVRlc3RJRCgxODYxKQorICAgIGRlZiB0ZXN0X2NvbXBhcmVfZGljdF9ibG9ic19kZWZhdWx0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWZhdWx0IHZhbHVlcyBmb3IgY29tcGFyaXNzb24gb2YgZ2l0IGJsb2IgZGljdGlvbmFyaWVzCisgICAgICAgICIiIgorICAgICAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgY29tcGFyZV9kaWN0X2Jsb2JzCisgICAgICAgIGRlZmF1bHRtYXAgPSB7IHggOiAoImRlZmF1bHQiLCAiMSIpICBmb3IgeCBpbiBbIlBLRyIsICJQS0dFIiwgIlBLR1YiLCAiUEtHUiJdfQorCisgICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0geyAiZm9vIiA6ICIxIiB9KQorICAgICAgICBibG9iMSA9IHNlbGYucmVwby5oZWFkcy5tYXN0ZXIuY29tbWl0LnRyZWUuYmxvYnNbMF0KKworICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHsgIlBLRyIgOiAiMSIsICJQS0dFIiA6ICIxIiwgIlBLR1YiIDogIjEiLCAiUEtHUiIgOiAiMSIgfSkKKyAgICAgICAgYmxvYjIgPSBzZWxmLnJlcG8uaGVhZHMubWFzdGVyLmNvbW1pdC50cmVlLmJsb2JzWzBdCisKKyAgICAgICAgY2hhbmdlX3JlY29yZHMgPSBjb21wYXJlX2RpY3RfYmxvYnMob3MucGF0aC5qb2luKHNlbGYucmVwb19wYXRoLCBzZWxmLnRlc3RfZmlsZSksCisgICAgICAgICAgICBibG9iMSwgYmxvYjIsIEZhbHNlLCBGYWxzZSkKKworICAgICAgICB2YXJfY2hhbmdlcyA9IHt9CisgICAgICAgIGZvciB4IGluIGNoYW5nZV9yZWNvcmRzOgorICAgICAgICAgICAgb2xkdmFsdWUgPSAiZGVmYXVsdCIgaWYgKCJkZWZhdWx0IiBpbiB4Lm9sZHZhbHVlKSBlbHNlIHgub2xkdmFsdWUKKyAgICAgICAgICAgIHZhcl9jaGFuZ2VzW3guZmllbGRuYW1lXSA9IChvbGR2YWx1ZSwgeC5uZXd2YWx1ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRtYXAsIHZhcl9jaGFuZ2VzLCAiRGVmYXVsdHMgbm90IHNldCBwcm9wZXJseSIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9lbGYucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9lbGYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlZTZhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2VsZi5weQpAQCAtMCwwICsxLDIxIEBACitmcm9tIHVuaXR0ZXN0LmNhc2UgaW1wb3J0IFRlc3RDYXNlCitpbXBvcnQgb2UucWEKKworY2xhc3MgVGVzdEVsZihUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbWFjaGluZV9uYW1lKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBlbGZfbWFjaGluZV90b19zdHJpbmcoKQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgwMiksICJTUEFSQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDMpLCAieDg2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgwOCksICJNSVBTIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgxNCksICJQb3dlclBDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgyOCksICJBUk0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDJBKSwgIlN1cGVySCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MzIpLCAiSUEtNjQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDNFKSwgIng4Ni02NCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4QjcpLCAiQUFyY2g2NCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgwMCksICJVbmtub3duICgwKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4REVBREJFRUYpLCAiVW5rbm93biAoMzczNTkyODU1OSkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygiZm9vYmFyIiksICJVbmtub3duICgnZm9vYmFyJykiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvbGljZW5zZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2xpY2Vuc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdmOTFmYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2xpY2Vuc2UucHkKQEAgLTAsMCArMSw5OSBAQAorZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBUZXN0Q2FzZQoraW1wb3J0IG9lLmxpY2Vuc2UKKworY2xhc3MgU2VlblZpc2l0b3Iob2UubGljZW5zZS5MaWNlbnNlVmlzaXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnNlZW4gPSBbXQorICAgICAgICBvZS5saWNlbnNlLkxpY2Vuc2VWaXNpdG9yLl9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgdmlzaXRfU3RyKHNlbGYsIG5vZGUpOgorICAgICAgICBzZWxmLnNlZW4uYXBwZW5kKG5vZGUucykKKworY2xhc3MgVGVzdFNpbmdsZUxpY2Vuc2UoVGVzdENhc2UpOgorICAgIGxpY2Vuc2VzID0gWworICAgICAgICAiR1BMdjIiLAorICAgICAgICAiTEdQTC0yLjAiLAorICAgICAgICAiQXJ0aXN0aWMiLAorICAgICAgICAiTUlUIiwKKyAgICAgICAgIkdQTHYzKyIsCisgICAgICAgICJGT09fQkFSIiwKKyAgICBdCisgICAgaW52YWxpZF9saWNlbnNlcyA9IFsiR1BML0JTRCJdCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHBhcnNlKGxpY2Vuc2VzdHIpOgorICAgICAgICB2aXNpdG9yID0gU2VlblZpc2l0b3IoKQorICAgICAgICB2aXNpdG9yLnZpc2l0X3N0cmluZyhsaWNlbnNlc3RyKQorICAgICAgICByZXR1cm4gdmlzaXRvci5zZWVuCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfbGljZW5zZXMoc2VsZik6CisgICAgICAgIGZvciBsaWNlbnNlIGluIHNlbGYubGljZW5zZXM6CisgICAgICAgICAgICBsaWNlbnNlcyA9IHNlbGYucGFyc2UobGljZW5zZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpY2Vuc2VzLCBbbGljZW5zZV0pCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2xpY2Vuc2VzKHNlbGYpOgorICAgICAgICBmb3IgbGljZW5zZSBpbiBzZWxmLmludmFsaWRfbGljZW5zZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9lLmxpY2Vuc2UuSW52YWxpZExpY2Vuc2UpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYucGFyc2UobGljZW5zZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmxpY2Vuc2UsIGxpY2Vuc2UpCisKK2NsYXNzIFRlc3RTaW1wbGVDb21iaW5hdGlvbnMoVGVzdENhc2UpOgorICAgIHRlc3RzID0geworICAgICAgICAiRk9PJkJBUiI6IFsiRk9PIiwgIkJBUiJdLAorICAgICAgICAiQkFaICYgTU9PIjogWyJCQVoiLCAiTU9PIl0sCisgICAgICAgICJBTFBIQXxCRVRBIjogWyJBTFBIQSJdLAorICAgICAgICAiQkFaJk1PT3xGT08iOiBbIkZPTyJdLAorICAgICAgICAiRk9PJkJBUnxCQVoiOiBbIkZPTyIsICJCQVIiXSwKKyAgICB9CisgICAgcHJlZmVycmVkID0gWyJBTFBIQSIsICJGT08iLCAiQkFSIl0KKworICAgIGRlZiB0ZXN0X3Rlc3RzKHNlbGYpOgorICAgICAgICBkZWYgY2hvb3NlKGEsIGIpOgorICAgICAgICAgICAgaWYgYWxsKGxpYyBpbiBzZWxmLnByZWZlcnJlZCBmb3IgbGljIGluIGIpOgorICAgICAgICAgICAgICAgIHJldHVybiBiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBhCisKKyAgICAgICAgZm9yIGxpY2Vuc2UsIGV4cGVjdGVkIGluIHNlbGYudGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGxpY2Vuc2VzID0gb2UubGljZW5zZS5mbGF0dGVuZWRfbGljZW5zZXMobGljZW5zZSwgY2hvb3NlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGljZW5zZXMsIGV4cGVjdGVkKQorCitjbGFzcyBUZXN0Q29tcGxleENvbWJpbmF0aW9ucyhUZXN0U2ltcGxlQ29tYmluYXRpb25zKToKKyAgICB0ZXN0cyA9IHsKKyAgICAgICAgIkZPTyAmIChCQVIgfCBCQVopJk1PTyI6IFsiRk9PIiwgIkJBUiIsICJNT08iXSwKKyAgICAgICAgIihBTFBIQXwoQkVUQSZUSEVUQSl8T01FR0EpJkRFTFRBIjogWyJPTUVHQSIsICJERUxUQSJdLAorICAgICAgICAiKChBTFBIQXxCRVRBKSZGT08pfEJBWiI6IFsiQkVUQSIsICJGT08iXSwKKyAgICAgICAgIihHUEwtMi4wfFByb3ByaWV0YXJ5KSZCU0QtNC1jbGF1c2UmTUlUIjogWyJHUEwtMi4wIiwgIkJTRC00LWNsYXVzZSIsICJNSVQiXSwKKyAgICB9CisgICAgcHJlZmVycmVkID0gWyJCQVIiLCAiT01FR0EiLCAiQkVUQSIsICJHUEwtMi4wIl0KKworY2xhc3MgVGVzdElzSW5jbHVkZWQoVGVzdENhc2UpOgorICAgIHRlc3RzID0geworICAgICAgICAoIkZPTyB8IEJBUiIsIE5vbmUsIE5vbmUpOgorICAgICAgICAgICAgW1RydWUsIFsiRk9PIl1dLAorICAgICAgICAoIkZPTyB8IEJBUiIsIE5vbmUsICJGT08iKToKKyAgICAgICAgICAgIFtUcnVlLCBbIkJBUiJdXSwKKyAgICAgICAgKCJGT08gfCBCQVIiLCAiQkFSIiwgTm9uZSk6CisgICAgICAgICAgICBbVHJ1ZSwgWyJCQVIiXV0sCisgICAgICAgICgiRk9PIHwgQkFSICYgRk9PQkFSIiwgIipCQVIiLCBOb25lKToKKyAgICAgICAgICAgIFtUcnVlLCBbIkJBUiIsICJGT09CQVIiXV0sCisgICAgICAgICgiRk9PIHwgQkFSICYgRk9PQkFSIiwgTm9uZSwgIkZPTyoiKToKKyAgICAgICAgICAgIFtGYWxzZSwgWyJGT09CQVIiXV0sCisgICAgICAgICgiKEZPTyB8IEJBUikgJiBGT09CQVIgfCBCQVJGT08iLCBOb25lLCAiRk9PIik6CisgICAgICAgICAgICBbVHJ1ZSwgWyJCQVIiLCAiRk9PQkFSIl1dLAorICAgICAgICAoIihGT08gfCBCQVIpICYgRk9PQkFSIHwgQkFaICYgTU9PICYgQkFSRk9PIiwgTm9uZSwgIkZPTyIpOgorICAgICAgICAgICAgW1RydWUsIFsiQkFaIiwgIk1PTyIsICJCQVJGT08iXV0sCisgICAgICAgICgiR1BMLTMuMCAmIEdQTC0yLjAgJiBMR1BMLTIuMSB8IFByb3ByaWV0YXJ5IiwgTm9uZSwgTm9uZSk6CisgICAgICAgICAgICBbVHJ1ZSwgWyJHUEwtMy4wIiwgIkdQTC0yLjAiLCAiTEdQTC0yLjEiXV0sCisgICAgICAgICgiR1BMLTMuMCAmIEdQTC0yLjAgJiBMR1BMLTIuMSB8IFByb3ByaWV0YXJ5IiwgTm9uZSwgIkdQTC0zLjAiKToKKyAgICAgICAgICAgIFtUcnVlLCBbIlByb3ByaWV0YXJ5Il1dLAorICAgICAgICAoIkdQTC0zLjAgJiBHUEwtMi4wICYgTEdQTC0yLjEgfCBQcm9wcmlldGFyeSIsIE5vbmUsICJHUEwtMy4wIFByb3ByaWV0YXJ5Iik6CisgICAgICAgICAgICBbRmFsc2UsIFsiR1BMLTMuMCJdXQorICAgIH0KKworICAgIGRlZiB0ZXN0X3Rlc3RzKHNlbGYpOgorICAgICAgICBmb3IgYXJncywgZXhwZWN0ZWQgaW4gc2VsZi50ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgaXNfaW5jbHVkZWQsIGxpY2Vuc2VzID0gb2UubGljZW5zZS5pc19pbmNsdWRlZCgKKyAgICAgICAgICAgICAgICBhcmdzWzBdLCAoYXJnc1sxXSBvciAnJykuc3BsaXQoKSwgKGFyZ3NbMl0gb3IgJycpLnNwbGl0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlzX2luY2x1ZGVkLCBleHBlY3RlZFswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpY2Vuc2VzLCBleHBlY3RlZFsxXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3BhdGgucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9wYXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YTI3YzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9wYXRoLnB5CkBAIC0wLDAgKzEsODkgQEAKK2Zyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgVGVzdENhc2UKK2ltcG9ydCBvZSwgb2UucGF0aAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgb3MKK2ltcG9ydCBlcnJubworaW1wb3J0IHNodXRpbAorCitjbGFzcyBUZXN0UmVhbFBhdGgoVGVzdENhc2UpOgorICAgIERJUlMgPSBbICJhIiwgImIiLCAiZXRjIiwgInNiaW4iLCAidXNyIiwgInVzci9iaW4iLCAidXNyL2JpblgiLCAidXNyL3NiaW4iLCAidXNyL2luY2x1ZGUiLCAidXNyL2luY2x1ZGUvZ2RibSIgXQorICAgIEZJTEVTID0gWyAiZXRjL3Bhc3N3ZCIsICJiL2ZpbGUiIF0KKyAgICBMSU5LUyA9IFsKKyAgICAgICAgKCAiYmluIiwgICAgICAgICAgICAgIi91c3IvYmluIiwgICAgICAgICAgICAgIi91c3IvYmluIiApLAorICAgICAgICAoICJiaW5YIiwgICAgICAgICAgICAidXNyL2JpblgiLCAgICAgICAgICAgICAiL3Vzci9iaW5YIiApLAorICAgICAgICAoICJjIiwgICAgICAgICAgICAgICAiYnJva2VuIiwgICAgICAgICAgICAgICAiL2Jyb2tlbiIgKSwKKyAgICAgICAgKCAiZXRjL3Bhc3N3ZC0xIiwgICAgInBhc3N3ZCIsICAgICAgICAgICAgICAgIi9ldGMvcGFzc3dkIiApLAorICAgICAgICAoICJldGMvcGFzc3dkLTIiLCAgICAicGFzc3dkLTEiLCAgICAgICAgICAgICAiL2V0Yy9wYXNzd2QiICksCisgICAgICAgICggImV0Yy9wYXNzd2QtMyIsICAgICIvZXRjL3Bhc3N3ZC0xIiwgICAgICAgICIvZXRjL3Bhc3N3ZCIgKSwKKyAgICAgICAgKCAiZXRjL3NoYWRvdy0xIiwgICAgIi9ldGMvc2hhZG93IiwgICAgICAgICAgIi9ldGMvc2hhZG93IiApLAorICAgICAgICAoICJldGMvc2hhZG93LTIiLCAgICAiL2V0Yy9zaGFkb3ctMSIsICAgICAgICAiL2V0Yy9zaGFkb3ciICksCisgICAgICAgICggInByb2ctQSIsICAgICAgICAgICJiaW4vcHJvZy1BIiwgICAgICAgICAgICIvdXNyL2Jpbi9wcm9nLUEiICksCisgICAgICAgICggInByb2ctQiIsICAgICAgICAgICIvYmluL3Byb2ctQiIsICAgICAgICAgICIvdXNyL2Jpbi9wcm9nLUIiICksCisgICAgICAgICggInVzci9iaW4vcHJvZy1DIiwgICIuLi8uLi9zYmluL3Byb2ctQyIsICAgICIvc2Jpbi9wcm9nLUMiICksCisgICAgICAgICggInVzci9iaW4vcHJvZy1EIiwgICIvc2Jpbi9wcm9nLUQiLCAgICAgICAgICIvc2Jpbi9wcm9nLUQiICksCisgICAgICAgICggInVzci9iaW5YL3Byb2ctRSIsICIuLi9zYmluL3Byb2ctRSIsICAgICAgIE5vbmUgKSwKKyAgICAgICAgKCAidXNyL2Jpbi9wcm9nLUYiLCAgIi4uLy4uLy4uL3NiaW4vcHJvZy1GIiwgIi9zYmluL3Byb2ctRiIgKSwKKyAgICAgICAgKCAibG9vcCIsICAgICAgICAgICAgImEvbG9vcCIsICAgICAgICAgICAgICAgTm9uZSApLAorICAgICAgICAoICJhL2xvb3AiLCAgICAgICAgICAiLi4vbG9vcCIsICAgICAgICAgICAgICBOb25lICksCisgICAgICAgICggImIvdGVzdCIsICAgICAgICAgICJmaWxlL2ZvbyIsICAgICAgICAgICAgICIvYi9maWxlL2ZvbyIgKSwKKyAgICBdCisKKyAgICBMSU5LU19QSFlTID0gWworICAgICAgICAoICIuLyIsICAgICAgICAgICIvIiwgICAgICAgICAgICAgICAgIiIgKSwKKyAgICAgICAgKCAiYmluWC9wcm9nLUUiLCAiL3Vzci9zYmluL3Byb2ctRSIsICIvc2Jpbi9wcm9nLUUiICksCisgICAgXQorCisgICAgRVhDRVBUSU9OUyA9IFsKKyAgICAgICAgKCAibG9vcCIsICAgZXJybm8uRUxPT1AgKSwKKyAgICAgICAgKCAiYi90ZXN0IiwgZXJybm8uRU5PRU5UICksCisgICAgXQorCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICNvcy5zeXN0ZW0oInRyZWUgLUYgJXMiICUgc2VsZi50bXBkaXIpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYudG1wZGlyKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudG1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXggPSAib2UtdGVzdF9wYXRoIikKKyAgICAgICAgc2VsZi5yb290ID0gb3MucGF0aC5qb2luKHNlbGYudG1wZGlyLCAiUiIpCisKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYudG1wZGlyLCAiX3JlYWwiKSkKKyAgICAgICAgb3Muc3ltbGluaygiX3JlYWwiLCBzZWxmLnJvb3QpCisKKyAgICAgICAgZm9yIGQgaW4gc2VsZi5ESVJTOgorICAgICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYucm9vdCwgZCkpCisgICAgICAgIGZvciBmIGluIHNlbGYuRklMRVM6CisgICAgICAgICAgICBvcGVuKG9zLnBhdGguam9pbihzZWxmLnJvb3QsIGYpLCAidyIpCisgICAgICAgIGZvciBsIGluIHNlbGYuTElOS1M6CisgICAgICAgICAgICBvcy5zeW1saW5rKGxbMV0sIG9zLnBhdGguam9pbihzZWxmLnJvb3QsIGxbMF0pKQorCisgICAgZGVmIF9fcmVhbHBhdGgoc2VsZiwgZmlsZSwgdXNlX3BoeXNkaXIsIGFzc3VtZV9kaXIgPSBUcnVlKToKKyAgICAgICAgcmV0dXJuIG9lLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKHNlbGYucm9vdCwgZmlsZSksIHNlbGYucm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX3BoeXNkaXIsIGFzc3VtZV9kaXIgPSBhc3N1bWVfZGlyKQorCisgICAgZGVmIHRlc3Rfbm9ybShzZWxmKToKKyAgICAgICAgZm9yIGwgaW4gc2VsZi5MSU5LUzoKKyAgICAgICAgICAgIGlmIGxbMl0gPT0gTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICB0YXJnZXRfcCA9IHNlbGYuX19yZWFscGF0aChsWzBdLCBUcnVlKQorICAgICAgICAgICAgdGFyZ2V0X2wgPSBzZWxmLl9fcmVhbHBhdGgobFswXSwgRmFsc2UpCisKKyAgICAgICAgICAgIGlmIGxbMl0gIT0gRmFsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXJnZXRfcCwgdGFyZ2V0X2wpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzJdLCB0YXJnZXRfcFtsZW4oc2VsZi5yb290KTpdKQorCisgICAgZGVmIHRlc3RfcGh5cyhzZWxmKToKKyAgICAgICAgZm9yIGwgaW4gc2VsZi5MSU5LU19QSFlTOgorICAgICAgICAgICAgdGFyZ2V0X3AgPSBzZWxmLl9fcmVhbHBhdGgobFswXSwgVHJ1ZSkKKyAgICAgICAgICAgIHRhcmdldF9sID0gc2VsZi5fX3JlYWxwYXRoKGxbMF0sIEZhbHNlKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMV0sIHRhcmdldF9wW2xlbihzZWxmLnJvb3QpOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMl0sIHRhcmdldF9sW2xlbihzZWxmLnJvb3QpOl0pCisKKyAgICBkZWYgdGVzdF9sb29wKHNlbGYpOgorICAgICAgICBmb3IgZSBpbiBzZWxmLkVYQ0VQVElPTlM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE9TRXJyb3IsIHInXFtFcnJubyAldVxdJyAlIGVbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fcmVhbHBhdGgsIGVbMF0sIEZhbHNlLCBGYWxzZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3R5cGVzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdHlwZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI1M2FhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3R5cGVzLnB5CkBAIC0wLDAgKzEsNTAgQEAKK2Zyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgVGVzdENhc2UKK2Zyb20gb2UubWFrZXR5cGUgaW1wb3J0IGNyZWF0ZQorCitjbGFzcyBUZXN0Qm9vbGVhblR5cGUoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNyZWF0ZSwgJycsICdib29sZWFuJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3JlYXRlLCAnZm9vJywgJ2Jvb2xlYW4nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNyZWF0ZSwgb2JqZWN0KCksICdib29sZWFuJykKKworICAgIGRlZiB0ZXN0X3RydWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3knLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd5ZXMnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCcxJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgndCcsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3RydWUnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCdUUlVFJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgndHJ1RScsICdib29sZWFuJykpCisKKyAgICBkZWYgdGVzdF9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ24nLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnbm8nLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnMCcsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdmJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ2ZhbHNlJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ0ZBTFNFJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ2ZhTHNlJywgJ2Jvb2xlYW4nKSkKKworICAgIGRlZiB0ZXN0X2Jvb2xfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlKCduJywgJ2Jvb2xlYW4nKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY3JlYXRlKCduJywgJ2Jvb2xlYW4nKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGUoJ3knLCAnYm9vbGVhbicpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNyZWF0ZSgneScsICdib29sZWFuJyksIEZhbHNlKQorCitjbGFzcyBUZXN0TGlzdChUZXN0Q2FzZSk6CisgICAgZGVmIGFzc2VydExpc3RFcXVhbChzZWxmLCB2YWx1ZSwgdmFsaWQsIHNlcD1Ob25lKToKKyAgICAgICAgb2JqID0gY3JlYXRlKHZhbHVlLCAnbGlzdCcsIHNlcGFyYXRvcj1zZXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLCB2YWxpZCkKKyAgICAgICAgaWYgc2VwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouc2VwYXJhdG9yLCBzZXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG9iaiksIG9iai5zZXBhcmF0b3Iuam9pbihvYmopKQorCisgICAgZGVmIHRlc3RfbGlzdF9ub3NlcChzZWxmKToKKyAgICAgICAgdGVzdGxpc3QgPSBbJ2FscGhhJywgJ2JldGEnLCAndGhldGEnXQorICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnYWxwaGEgYmV0YSB0aGV0YScsIHRlc3RsaXN0KQorICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnYWxwaGEgIGJldGFcdHRoZXRhJywgdGVzdGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdhbHBoYScsIFsnYWxwaGEnXSkKKworICAgIGRlZiB0ZXN0X2xpc3RfdXNlcnNlcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2ZvbzpiYXInLCBbJ2ZvbycsICdiYXInXSwgJzonKQorICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnZm9vOmJhcjpiYXonLCBbJ2ZvbycsICdiYXInLCAnYmF6J10sICc6JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3V0aWxzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiNmMxNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3V0aWxzLnB5CkBAIC0wLDAgKzEsNTEgQEAKK2Zyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgVGVzdENhc2UKK2Zyb20gb2UudXRpbHMgaW1wb3J0IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtLCB0cmltX3ZlcnNpb24KKworY2xhc3MgVGVzdFBhY2thZ2VzRmlsdGVyT3V0U3lzdGVtKFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9maWx0ZXIoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgb2UudXRpbHMucGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0gd29ya3MuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgYmIKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ2Fubm90IGltcG9ydCBiYiIpCisKKyAgICAgICAgZCA9IGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0KCkKKyAgICAgICAgZC5zZXRWYXIoIlBOIiwgImZvbyIpCisKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTIiwgImZvbyBmb28tZG9jIGZvby1kZXYiKQorICAgICAgICBwa2dzID0gcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dzLCBbXSkKKworICAgICAgICBkLnNldFZhcigiUEFDS0FHRVMiLCAiZm9vIGZvby1kb2MgZm9vLWRhdGEgZm9vLWRldiIpCisgICAgICAgIHBrZ3MgPSBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ3MsIFsiZm9vLWRhdGEiXSkKKworICAgICAgICBkLnNldFZhcigiUEFDS0FHRVMiLCAiZm9vIGZvby1sb2NhbGUtZW4tZ2IiKQorICAgICAgICBwa2dzID0gcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dzLCBbXSkKKworICAgICAgICBkLnNldFZhcigiUEFDS0FHRVMiLCAiZm9vIGZvby1kYXRhIGZvby1sb2NhbGUtZW4tZ2IiKQorICAgICAgICBwa2dzID0gcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dzLCBbImZvby1kYXRhIl0pCisKKworY2xhc3MgVGVzdFRyaW1WZXJzaW9uKFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF92ZXJzaW9uX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHJpbV92ZXJzaW9uKE5vbmUsIDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHRyaW1fdmVyc2lvbigoMSwgMiwgMyksIDIpCisKKyAgICBkZWYgdGVzdF9udW1fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdHJpbV92ZXJzaW9uKCIxLjIuMyIsIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB0cmltX3ZlcnNpb24oIjEuMi4zIiwgLTEpCisKKyAgICBkZWYgdGVzdF92YWxpZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgMSksICIxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgMiksICIxLjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCAzKSwgIjEuMi4zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgNCksICIxLjIuMyIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVlNzUzNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weQpAQCAtMCwwICsxLDE1IEBACitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZXMuYnVpbGRoaXN0b3J5IGltcG9ydCBCdWlsZGhpc3RvcnlCYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IENvbW1hbmQsIHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBCdWlsZGhpc3RvcnlEaWZmVGVzdHMoQnVpbGRoaXN0b3J5QmFzZSk6CisKKyAgICBAT0VUZXN0SUQoMjk1KQorICAgIGRlZiB0ZXN0X2J1aWxkaGlzdG9yeV9kaWZmKHNlbGYpOgorICAgICAgICB0YXJnZXQgPSAneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScKKyAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMVwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPVRydWUpCisgICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjBcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1GYWxzZSwgZXhwZWN0X2Vycm9yPVRydWUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiYnVpbGRoaXN0b3J5LWRpZmYgLXAgJXMiICUgZ2V0X2JiX3ZhcignQlVJTERISVNUT1JZX0RJUicpKQorICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSAnUFIgY2hhbmdlZCBmcm9tICJyMSIgdG8gInIwIicKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdGVkX291dHB1dCBpbiByZXN1bHQub3V0cHV0LCBtc2c9IkRpZCBub3QgZmluZCBleHBlY3RlZCBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjk2OThmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weQpAQCAtMCwwICsxLDg2IEBACitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMKK2ltcG9ydCBzdWJwcm9jZXNzLCBvcworaW1wb3J0IG9lLnBhdGgKKworY2xhc3MgVmVyc2lvbk9yZGVyaW5nKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIyB2ZXJzaW9uMSwgdmVyc2lvbjIsIHNvcnQgb3JkZXIKKyAgICB0ZXN0cyA9ICgKKyAgICAgICAgKCIxLjAiLCAiMS4wIiwgMCksCisgICAgICAgICgiMS4wIiwgIjIuMCIsIC0xKSwKKyAgICAgICAgKCIyLjAiLCAiMS4wIiwgMSksCisgICAgICAgICgiMi4wLXJjIiwgIjIuMCIsIDEpLAorICAgICAgICAoIjIuMH5yYyIsICIyLjAiLCAtMSksCisgICAgICAgICgiMS4ycmMyIiwgIjEuMi4wIiwgLTEpCisgICAgICAgICkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKCkuc2V0VXBDbGFzcygpCisKKyAgICAgICAgIyBCdWlsZCB0aGUgdG9vbHMgd2UgbmVlZCBhbmQgcG9wdWxhdGUgYSBzeXNyb290CisgICAgICAgIGJpdGJha2UoImRwa2ctbmF0aXZlIG9wa2ctbmF0aXZlIHJwbS1uYXRpdmUgcHl0aG9uMy1uYXRpdmUiKQorICAgICAgICBiaXRiYWtlKCJidWlsZC1zeXNyb290cyAtYyBidWlsZF9uYXRpdmVfc3lzcm9vdCIpCisKKyAgICAgICAgIyBHZXQgdGhlIHBhdGhzIHNvIHdlIGNhbiBwb2ludCBpbnRvIHRoZSBzeXNyb290IGNvcnJlY3RseQorICAgICAgICB2YXJzID0gZ2V0X2JiX3ZhcnMoWyJTVEFHSU5HX0RJUiIsICJCVUlMRF9BUkNIIiwgImJpbmRpcl9uYXRpdmUiLCAibGliZGlyX25hdGl2ZSJdKQorICAgICAgICBjbHMuc3RhZ2luZyA9IG9lLnBhdGguam9pbih2YXJzWyJTVEFHSU5HX0RJUiJdLCB2YXJzWyJCVUlMRF9BUkNIIl0pCisgICAgICAgIGNscy5iaW5kaXIgPSBvZS5wYXRoLmpvaW4oY2xzLnN0YWdpbmcsIHZhcnNbImJpbmRpcl9uYXRpdmUiXSkKKyAgICAgICAgY2xzLmxpYmRpciA9IG9lLnBhdGguam9pbihjbHMuc3RhZ2luZywgdmFyc1sibGliZGlyX25hdGl2ZSJdKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAjIEp1c3QgZm9yIGNvbnZlbmllbmNlCisgICAgICAgIHNlbGYuc3RhZ2luZyA9IHR5cGUoc2VsZikuc3RhZ2luZworICAgICAgICBzZWxmLmJpbmRpciA9IHR5cGUoc2VsZikuYmluZGlyCisgICAgICAgIHNlbGYubGliZGlyID0gdHlwZShzZWxmKS5saWJkaXIKKworICAgIEBPRVRlc3RJRCgxODgwKQorICAgIGRlZiB0ZXN0X2Rwa2coc2VsZik6CisgICAgICAgIGZvciB2ZXIxLCB2ZXIyLCBzb3J0IGluIHNlbGYudGVzdHM6CisgICAgICAgICAgICBvcCA9IHsgLTE6ICI8PCIsIDA6ICI9IiwgMTogIj4+IiB9W3NvcnRdCisgICAgICAgICAgICBzdGF0dXMgPSBzdWJwcm9jZXNzLmNhbGwoKG9lLnBhdGguam9pbihzZWxmLmJpbmRpciwgImRwa2ciKSwgIi0tY29tcGFyZS12ZXJzaW9ucyIsIHZlcjEsIG9wLCB2ZXIyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiJXMgJXMgJXMgZmFpbGVkIiAlICh2ZXIxLCBvcCwgdmVyMikpCisKKyAgICAgICAgICAgICMgTm93IGRvIGl0IGFnYWluIGJ1dCB3aXRoIGluY29ycmVjdCBvcGVyYXRpb25zCisgICAgICAgICAgICBvcCA9IHsgLTE6ICI+PiIsIDA6ICI+PiIsIDE6ICI8PCIgfVtzb3J0XQorICAgICAgICAgICAgc3RhdHVzID0gc3VicHJvY2Vzcy5jYWxsKChvZS5wYXRoLmpvaW4oc2VsZi5iaW5kaXIsICJkcGtnIiksICItLWNvbXBhcmUtdmVyc2lvbnMiLCB2ZXIxLCBvcCwgdmVyMikpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN0YXR1cywgMCwgIiVzICVzICVzIGZhaWxlZCIgJSAodmVyMSwgb3AsIHZlcjIpKQorCisgICAgICAgICAgICAjIE5vdyBkbyBpdCBhZ2FpbiBidXQgd2l0aCBpbmNvcnJlY3Qgb3BlcmF0aW9ucworICAgICAgICAgICAgb3AgPSB7IC0xOiAiPSIsIDA6ICI8PCIsIDE6ICI9IiB9W3NvcnRdCisgICAgICAgICAgICBzdGF0dXMgPSBzdWJwcm9jZXNzLmNhbGwoKG9lLnBhdGguam9pbihzZWxmLmJpbmRpciwgImRwa2ciKSwgIi0tY29tcGFyZS12ZXJzaW9ucyIsIHZlcjEsIG9wLCB2ZXIyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RhdHVzLCAwLCAiJXMgJXMgJXMgZmFpbGVkIiAlICh2ZXIxLCBvcCwgdmVyMikpCisKKyAgICBAT0VUZXN0SUQoMTg4MSkKKyAgICBkZWYgdGVzdF9vcGtnKHNlbGYpOgorICAgICAgICBmb3IgdmVyMSwgdmVyMiwgc29ydCBpbiBzZWxmLnRlc3RzOgorICAgICAgICAgICAgb3AgPSB7IC0xOiAiPDwiLCAwOiAiPSIsIDE6ICI+PiIgfVtzb3J0XQorICAgICAgICAgICAgc3RhdHVzID0gc3VicHJvY2Vzcy5jYWxsKChvZS5wYXRoLmpvaW4oc2VsZi5iaW5kaXIsICJvcGtnIiksICJjb21wYXJlLXZlcnNpb25zIiwgdmVyMSwgb3AsIHZlcjIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICIlcyAlcyAlcyBmYWlsZWQiICUgKHZlcjEsIG9wLCB2ZXIyKSkKKworICAgICAgICAgICAgIyBOb3cgZG8gaXQgYWdhaW4gYnV0IHdpdGggaW5jb3JyZWN0IG9wZXJhdGlvbnMKKyAgICAgICAgICAgIG9wID0geyAtMTogIj4+IiwgMDogIj4+IiwgMTogIjw8IiB9W3NvcnRdCisgICAgICAgICAgICBzdGF0dXMgPSBzdWJwcm9jZXNzLmNhbGwoKG9lLnBhdGguam9pbihzZWxmLmJpbmRpciwgIm9wa2ciKSwgImNvbXBhcmUtdmVyc2lvbnMiLCB2ZXIxLCBvcCwgdmVyMikpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN0YXR1cywgMCwgIiVzICVzICVzIGZhaWxlZCIgJSAodmVyMSwgb3AsIHZlcjIpKQorCisgICAgICAgICAgICAjIE5vdyBkbyBpdCBhZ2FpbiBidXQgd2l0aCBpbmNvcnJlY3Qgb3BlcmF0aW9ucworICAgICAgICAgICAgb3AgPSB7IC0xOiAiPSIsIDA6ICI8PCIsIDE6ICI9IiB9W3NvcnRdCisgICAgICAgICAgICBzdGF0dXMgPSBzdWJwcm9jZXNzLmNhbGwoKG9lLnBhdGguam9pbihzZWxmLmJpbmRpciwgIm9wa2ciKSwgImNvbXBhcmUtdmVyc2lvbnMiLCB2ZXIxLCBvcCwgdmVyMikpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN0YXR1cywgMCwgIiVzICVzICVzIGZhaWxlZCIgJSAodmVyMSwgb3AsIHZlcjIpKQorCisgICAgQE9FVGVzdElEKDE4ODIpCisgICAgZGVmIHRlc3RfcnBtKHNlbGYpOgorICAgICAgICAjIE5lZWQgdG8gdGVsbCB0aGUgUHl0aG9uIGJpbmRpbmdzIHdoZXJlIHRvIGZpbmQgaXRzIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgZW52WyJSUE1fQ09ORklHRElSIl0gPSBvZS5wYXRoLmpvaW4oc2VsZi5saWJkaXIsICJycG0iKQorCisgICAgICAgIGZvciB2ZXIxLCB2ZXIyLCBzb3J0IGluIHNlbGYudGVzdHM6CisgICAgICAgICAgICAjIFRoZSBvbmx5IHdheSB0byB0ZXN0IHJwbSBpcyB2aWEgdGhlIFB5dGhvbiBtb2R1bGUsIHNvIHdlIG5lZWQgdG8KKyAgICAgICAgICAgICMgZXhlY3V0ZSBweXRob24zLW5hdGl2ZS4gIGxhYmVsQ29tcGFyZSByZXR1cm5zIC0xLzAvMSAobGlrZSBzdHJjbXApCisgICAgICAgICAgICAjIHNvIGFkZCAxMDAgYW5kIHVzZSB0aGF0IGFzIHRoZSBleGl0IGNvZGUuCisgICAgICAgICAgICBjb21tYW5kID0gKG9lLnBhdGguam9pbihzZWxmLmJpbmRpciwgInB5dGhvbjMtbmF0aXZlIiwgInB5dGhvbjMiKSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzeXMsIHJwbTsgdjE9KE5vbmUsIFwiJXNcIiwgTm9uZSk7IHYyPShOb25lLCBcIiVzXCIsIE5vbmUpOyBzeXMuZXhpdChycG0ubGFiZWxDb21wYXJlKHYxLCB2MikgKyAxMDApIiAlICh2ZXIxLCB2ZXIyKSkKKyAgICAgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbChjb21tYW5kLCBlbnY9ZW52KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzdGF0dXMsICg5OSwgMTAwLCAxMDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMgLSAxMDAsIHNvcnQsICIlcyAlcyAoJWQpIGZhaWxlZCIgJSAodmVyMSwgdmVyMiwgc29ydCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wa2dkYXRhLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGtnZGF0YS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjRjYWYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGtnZGF0YS5weQpAQCAtMCwwICsxLDIyNCBAQAoraW1wb3J0IG9zCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBmbm1hdGNoCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycworZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIE9lUGtnZGF0YVV0aWxUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoT2VQa2dkYXRhVXRpbFRlc3RzLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICAjIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBkYXRhIGluIHBrZ2RhdGEKKyAgICAgICAgY2xzLmxvZ2dlci5pbmZvKCdSdW5uaW5nIGJpdGJha2UgdG8gZ2VuZXJhdGUgcGtnZGF0YScpCisgICAgICAgIGJpdGJha2UoJ2J1c3lib3ggemxpYiBtNCcpCisKKyAgICBAT0VUZXN0SUQoMTIwMykKKyAgICBkZWYgdGVzdF9sb29rdXBfcGtnKHNlbGYpOgorICAgICAgICAjIEZvcndhcmQgdGVzdHMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyAiemxpYiBidXN5Ym94IicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ2xpYnoxXG5idXN5Ym94JykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyB6bGliLWRldicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ2xpYnotZGV2JykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyBub25leGlzdGVudHBrZycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCAiU3RhdHVzIGRpZmZlcmVudCB0aGFuIDEuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnRVJST1I6IFRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiBub25leGlzdGVudHBrZycpCisgICAgICAgICMgUmV2ZXJzZSB0ZXN0cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIC1yICJsaWJ6MSBidXN5Ym94IicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWJcbmJ1c3lib3gnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIC1yIGxpYnotZGV2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYi1kZXYnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIC1yIG5vbmV4aXN0ZW50cGtnJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsICJTdGF0dXMgZGlmZmVyZW50IHRoYW4gMS4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdFUlJPUjogVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBjb3VsZCBub3QgYmUgZm91bmQ6IG5vbmV4aXN0ZW50cGtnJykKKworICAgIEBPRVRlc3RJRCgxMjA1KQorICAgIGRlZiB0ZXN0X3JlYWRfdmFsdWUoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIHJlYWQtdmFsdWUgUE4gbGliejEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgcmVhZC12YWx1ZSBQS0cgbGliejEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdsaWJ6MScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIHJlYWQtdmFsdWUgUEtHU0laRSBtNCcpCisgICAgICAgIHBrZ3NpemUgPSBpbnQocmVzdWx0Lm91dHB1dC5zdHJpcCgpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIocGtnc2l6ZSwgMSwgIlNpemUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxLiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExOTgpCisgICAgZGVmIHRlc3RfZmluZF9wYXRoKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGggL2xpYi9saWJ6LnNvLjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliOiAvbGliL2xpYnouc28uMScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGZpbmQtcGF0aCAvdXNyL2Jpbi9tNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ200OiAvdXNyL2Jpbi9tNCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGZpbmQtcGF0aCAvbm90L2V4aXN0JywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsICJTdGF0dXMgZGlmZmVyZW50IHRoYW4gMS4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdFUlJPUjogVW5hYmxlIHRvIGZpbmQgYW55IHBhY2thZ2UgcHJvZHVjaW5nIHBhdGggL25vdC9leGlzdCcpCisKKyAgICBAT0VUZXN0SUQoMTIwNCkKKyAgICBkZWYgdGVzdF9sb29rdXBfcmVjaXBlKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlICJsaWJ6LXN0YXRpY2RldiBidXN5Ym94IicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWJcbmJ1c3lib3gnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlIGxpYnotZGJnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1yZWNpcGUgbm9uZXhpc3RlbnRwa2cnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgIlN0YXR1cyBkaWZmZXJlbnQgdGhhbiAxLiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ0VSUk9SOiBUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogbm9uZXhpc3RlbnRwa2cnKQorCisgICAgQE9FVGVzdElEKDEyMDIpCisgICAgZGVmIHRlc3RfbGlzdF9wa2dzKHNlbGYpOgorICAgICAgICAjIE5vIGFyZ3VtZW50cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MnKQorICAgICAgICBwa2dsaXN0ID0gcmVzdWx0Lm91dHB1dC5zcGxpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWInLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgTm8gcGtnc3BlYywgcnVudGltZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXInKQorICAgICAgICBwa2dsaXN0ID0gcmVzdWx0Lm91dHB1dC5zcGxpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWInKQorICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGtnbGlzdC5yZW1vdmUoJ3psaWItcHRlc3QnKSAjIGluIGNhc2UgcHRlc3QgaXMgZGlzYWJsZWQKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtnbGlzdCwgWyd6bGliJywgJ3psaWItZGJnJywgJ3psaWItZGV2JywgJ3psaWItZG9jJywgJ3psaWItc3RhdGljZGV2J10sICJQYWNrYWdlcyBsaXN0ZWQgYWZ0ZXIgcmVtb3ZlOiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCwgcnVudGltZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAtcicpCisgICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwa2dsaXN0LnJlbW92ZSgnbGliei1wdGVzdCcpICMgaW4gY2FzZSBwdGVzdCBpcyBkaXNhYmxlZAorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dsaXN0LCBbJ2xpYnotZGJnJywgJ2xpYnotZGV2JywgJ2xpYnotZG9jJywgJ2xpYnotc3RhdGljZGV2JywgJ2xpYnoxJ10sICJQYWNrYWdlcyBsaXN0ZWQgYWZ0ZXIgcmVtb3ZlOiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCBhbmQgdW5wYWNrYWdlZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAtdScpCisgICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWxvY2FsZScsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkIGFuZCB1bnBhY2thZ2VkLCBydW50aW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliIC11IC1yJykKKyAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotbG9jYWxlJywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQgYW5kIHBrZ3NwZWMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgIiotZCoiJykKKyAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtnbGlzdCwgWyd6bGliLWRiZycsICd6bGliLWRldicsICd6bGliLWRvYyddLCAiUGFja2FnZXMgbGlzdGVkOiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCBhbmQgcGtnc3BlYywgcnVudGltZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAtciAiKi1kKiInKQorICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dsaXN0LCBbJ2xpYnotZGJnJywgJ2xpYnotZGV2JywgJ2xpYnotZG9jJ10sICJQYWNrYWdlcyBsaXN0ZWQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTIwMSkKKyAgICBkZWYgdGVzdF9saXN0X3BrZ19maWxlcyhzZWxmKToKKyAgICAgICAgZGVmIHNwbGl0b3V0cHV0KG91dHB1dCk6CisgICAgICAgICAgICBmaWxlcyA9IHt9CisgICAgICAgICAgICBjdXJwa2cgPSBOb25lCisgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnXHQnKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN1cnBrZywgJ1VuZXhwZWN0ZWQgbm9uLXBhY2thZ2UgbGluZTpcbiVzJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGZpbGVzW2N1cnBrZ10uYXBwZW5kKGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZS5yc3RyaXAoKS5lbmRzd2l0aCgnOicpLCAnSW52YWxpZCBwYWNrYWdlIGxpbmUgaW4gb3V0cHV0OlxuJXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgY3VycGtnID0gbGluZS5zcGxpdCgnOicpWzBdCisgICAgICAgICAgICAgICAgICAgIGZpbGVzW2N1cnBrZ10gPSBbXQorICAgICAgICAgICAgcmV0dXJuIGZpbGVzCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ2Jhc2VfbGliZGlyJywgJ2xpYmRpcicsICdpbmNsdWRlZGlyJywgJ21hbmRpciddKQorICAgICAgICBiYXNlX2xpYmRpciA9IGJiX3ZhcnNbJ2Jhc2VfbGliZGlyJ10KKyAgICAgICAgbGliZGlyID0gYmJfdmFyc1snbGliZGlyJ10KKyAgICAgICAgaW5jbHVkZWRpciA9IGJiX3ZhcnNbJ2luY2x1ZGVkaXInXQorICAgICAgICBtYW5kaXIgPSBiYl92YXJzWydtYW5kaXInXQorICAgICAgICAjIFRlc3QgcmVjaXBlLXNwYWNlIHBhY2thZ2UgbmFtZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyB6bGliLWRldiB6bGliLWRvYycpCisgICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snemxpYi1kZXYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ3psaWItZG9jJ10pCisgICAgICAgICMgVGVzdCBydW50aW1lIHBhY2thZ2UgbmFtZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtciBsaWJ6MSBsaWJ6LWRldicpCisgICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliejEnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlc1snbGliejEnXSksIDEpCisgICAgICAgIGxpYnNwZWMgPSBvcy5wYXRoLmpvaW4oYmFzZV9saWJkaXIsICdsaWJ6LnNvLjEuKicpCisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgZm9yIGZpbGVpdGVtIGluIGZpbGVzWydsaWJ6MSddOgorICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoY2FzZShmaWxlaXRlbSwgbGlic3BlYyk6CisgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAnQ291bGQgbm90IGZpbmQgemxpYiBsaWJyYXJ5IGZpbGUgJXMgaW4gbGliejEgcGFja2FnZSBmaWxlIGxpc3Q6ICVzJyAlIChsaWJzcGVjLCBmaWxlc1snbGliejEnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ2xpYnotZGV2J10pCisgICAgICAgICMgVGVzdCByZWNpcGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYicpCisgICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd6bGliLWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICAjIChpZ25vcmUgcHRlc3QsIG1pZ2h0IG5vdCBiZSB0aGVyZSBkZXBlbmRpbmcgb24gY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWyd6bGliLWRldiddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snemxpYi1kb2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obGliZGlyLCAnbGliei5hJyksIGZpbGVzWyd6bGliLXN0YXRpY2RldiddKQorICAgICAgICAjIFRlc3QgcmVjaXBlLCBydW50aW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWIgLXInKQorICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnoxJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYnotbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ2xpYnotZGV2J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWydsaWJ6LWRvYyddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ2xpYnotc3RhdGljZGV2J10pCisgICAgICAgICMgVGVzdCByZWNpcGUsIHVucGFja2FnZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYiAtdScpCisgICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KSAjIHRoaXMgaXMgdGhlIGtleSBvbmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snemxpYi1kZXYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ3psaWItZG9jJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snemxpYi1zdGF0aWNkZXYnXSkKKyAgICAgICAgIyBUZXN0IHJlY2lwZSwgcnVudGltZSwgdW5wYWNrYWdlZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliIC1yIC11JykKKyAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRiZycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LXN0YXRpY2RldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KSAjIHRoaXMgaXMgdGhlIGtleSBvbmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snbGliei1kZXYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ2xpYnotZG9jJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snbGliei1zdGF0aWNkZXYnXSkKKworICAgIEBPRVRlc3RJRCgxMjAwKQorICAgIGRlZiB0ZXN0X2dsb2Ioc2VsZik6CisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncGtnZGF0YXFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBwa2dsaXN0ZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAncGtnbGlzdCcpCisgICAgICAgIHdpdGggb3Blbihwa2dsaXN0ZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnbGliejFcbicpCisgICAgICAgICAgICBmLndyaXRlKCdidXN5Ym94XG4nKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBnbG9iICVzICIqLWRldiInICUgcGtnbGlzdGZpbGUpCisgICAgICAgIGRlc2lyZWRyZXN1bHQgPSBbJ2xpYnotZGV2JywgJ2J1c3lib3gtZGV2J10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKSwgc29ydGVkKGRlc2lyZWRyZXN1bHQpKQorICAgICAgICAjIFRoZSBmb2xsb3dpbmcgc2hvdWxkIG5vdCBlcnJvciAoYmVjYXVzZSB3aGVuIHdlIHVzZSB0aGlzIGR1cmluZyByb290ZnMgY29uc3RydWN0aW9uLCBzb21ldGltZXMgdGhlIGNvbXBsZW1lbnRhcnkgcGFja2FnZSB3b24ndCBleGlzdCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZ2xvYiAlcyAiKi1ub25leGlzdGVudCInICUgcGtnbGlzdGZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJycpCisgICAgICAgICMgVGVzdCBleGNsdWRlIG9wdGlvbgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBnbG9iICVzICIqLWRldiAqLWRiZyIgLXggIl5saWJ6IicgJSBwa2dsaXN0ZmlsZSkKKyAgICAgICAgcmVzdWx0bGlzdCA9IHJlc3VsdC5vdXRwdXQuc3BsaXQoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsaWJ6LWRldicsIHJlc3VsdGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYnotZGJnJywgcmVzdWx0bGlzdCkKKworICAgIEBPRVRlc3RJRCgxMjA2KQorICAgIGRlZiB0ZXN0X3NwZWNpZnlfcGtnZGF0YWRpcihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgLXAgJXMgbG9va3VwLXBrZyB6bGliJyAlIGdldF9iYl92YXIoJ1BLR0RBVEFfRElSJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ2xpYnoxJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3Byc2VydmljZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3Byc2VydmljZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzllNTIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcHJzZXJ2aWNlLnB5CkBAIC0wLDAgKzEsMTMxIEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IGRhdGV0aW1lCisKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS51dGlscy5uZXR3b3JrIGltcG9ydCBnZXRfZnJlZV9wb3J0CisKK2NsYXNzIEJpdGJha2VQclRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihCaXRiYWtlUHJUZXN0cywgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgY2xzLnBrZ2RhdGFfZGlyID0gZ2V0X2JiX3ZhcignUEtHREFUQV9ESVInKQorCisgICAgZGVmIGdldF9wcl92ZXJzaW9uKHNlbGYsIHBhY2thZ2VfbmFtZSk6CisgICAgICAgIHBhY2thZ2VfZGF0YV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYucGtnZGF0YV9kaXIsICdydW50aW1lJywgcGFja2FnZV9uYW1lKQorICAgICAgICBwYWNrYWdlX2RhdGEgPSBmdG9vbHMucmVhZF9maWxlKHBhY2thZ2VfZGF0YV9maWxlKQorICAgICAgICBmaW5kX3ByID0gcmUuc2VhcmNoKCJQS0dSOiByWzAtOV0rXC4oWzAtOV0rKSIsIHBhY2thZ2VfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfcHIsICJObyBQS0cgcmV2aXNpb24gZm91bmQgaW4gJXMiICUgcGFja2FnZV9kYXRhX2ZpbGUpCisgICAgICAgIHJldHVybiBpbnQoZmluZF9wci5ncm91cCgxKSkKKworICAgIGRlZiBnZXRfdGFza19zdGFtcChzZWxmLCBwYWNrYWdlX25hbWUsIHJlY2lwZV90YXNrKToKKyAgICAgICAgc3RhbXBkYXRhID0gZ2V0X2JiX3ZhcignU1RBTVAnLCB0YXJnZXQ9cGFja2FnZV9uYW1lKS5zcGxpdCgnLycpCisgICAgICAgIHByZWZpeCA9IHN0YW1wZGF0YVstMV0KKyAgICAgICAgcGFja2FnZV9zdGFtcHNfcGF0aCA9ICIvIi5qb2luKHN0YW1wZGF0YVs6LTFdKQorICAgICAgICBzdGFtcHMgPSBbXQorICAgICAgICBmb3Igc3RhbXAgaW4gb3MubGlzdGRpcihwYWNrYWdlX3N0YW1wc19wYXRoKToKKyAgICAgICAgICAgIGZpbmRfc3RhbXAgPSByZS5tYXRjaCgiJXNcLiVzXC4oW2EtejAtOV17MzJ9KSIgJSAocmUuZXNjYXBlKHByZWZpeCksIHJlY2lwZV90YXNrKSwgc3RhbXApCisgICAgICAgICAgICBpZiBmaW5kX3N0YW1wOgorICAgICAgICAgICAgICAgIHN0YW1wcy5hcHBlbmQoZmluZF9zdGFtcC5ncm91cCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oc3RhbXBzKSA9PSAwLCBtc2c9IkNvdW5kIG5vdCBmaW5kIHN0YW1wIGZvciB0YXNrICVzIGZvciByZWNpcGUgJXMiICUgKHJlY2lwZV90YXNrLCBwYWNrYWdlX25hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxlbihzdGFtcHMpID4gMSwgbXNnPSJGb3VuZCBtdWx0aXBsZSAlcyBzdGFtcHMgZm9yIHRoZSAlcyByZWNpcGUgaW4gdGhlICVzIGRpcmVjdG9yeS4iICUgKHJlY2lwZV90YXNrLCBwYWNrYWdlX25hbWUsIHBhY2thZ2Vfc3RhbXBzX3BhdGgpKQorICAgICAgICByZXR1cm4gc3RyKHN0YW1wc1swXSkKKworICAgIGRlZiBpbmNyZW1lbnRfcGFja2FnZV9wcihzZWxmLCBwYWNrYWdlX25hbWUpOgorICAgICAgICBpbmNfZGF0YSA9ICJkb19wYWNrYWdlX2FwcGVuZCgpIHtcbiAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX3Rlc3RfcHJzZXJ2JywgZClcbn1cbmRvX3Rlc3RfcHJzZXJ2KCkge1xuZWNobyBcIlRoZSBjdXJyZW50IGRhdGUgaXM6ICVzXCJcbn0iICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMocGFja2FnZV9uYW1lLCBpbmNfZGF0YSkKKyAgICAgICAgcmVzID0gYml0YmFrZShwYWNrYWdlX25hbWUsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKHBhY2thZ2VfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAwLCBtc2c9cmVzLm91dHB1dCkKKworICAgIGRlZiBjb25maWdfcHJfdGVzdHMoc2VsZiwgcGFja2FnZV9uYW1lLCBwYWNrYWdlX3R5cGU9J3JwbScsIHByX3NvY2tldD0nbG9jYWxob3N0OjAnKToKKyAgICAgICAgY29uZmlnX3BhY2thZ2VfZGF0YSA9ICdQQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV8lcyInICUgcGFja2FnZV90eXBlCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZ19wYWNrYWdlX2RhdGEpCisgICAgICAgIGNvbmZpZ19zZXJ2ZXJfZGF0YSA9ICdQUlNFUlZfSE9TVCA9ICIlcyInICUgcHJfc29ja2V0CisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWdfc2VydmVyX2RhdGEpCisKKyAgICBkZWYgcnVuX3Rlc3RfcHJfc2VydmljZShzZWxmLCBwYWNrYWdlX25hbWUsIHBhY2thZ2VfdHlwZT0ncnBtJywgdHJhY2tfdGFzaz0nZG9fcGFja2FnZScsIHByX3NvY2tldD0nbG9jYWxob3N0OjAnKToKKyAgICAgICAgc2VsZi5jb25maWdfcHJfdGVzdHMocGFja2FnZV9uYW1lLCBwYWNrYWdlX3R5cGUsIHByX3NvY2tldCkKKworICAgICAgICBzZWxmLmluY3JlbWVudF9wYWNrYWdlX3ByKHBhY2thZ2VfbmFtZSkKKyAgICAgICAgcHJfMSA9IHNlbGYuZ2V0X3ByX3ZlcnNpb24ocGFja2FnZV9uYW1lKQorICAgICAgICBzdGFtcF8xID0gc2VsZi5nZXRfdGFza19zdGFtcChwYWNrYWdlX25hbWUsIHRyYWNrX3Rhc2spCisKKyAgICAgICAgc2VsZi5pbmNyZW1lbnRfcGFja2FnZV9wcihwYWNrYWdlX25hbWUpCisgICAgICAgIHByXzIgPSBzZWxmLmdldF9wcl92ZXJzaW9uKHBhY2thZ2VfbmFtZSkKKyAgICAgICAgc3RhbXBfMiA9IHNlbGYuZ2V0X3Rhc2tfc3RhbXAocGFja2FnZV9uYW1lLCB0cmFja190YXNrKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcl8yIC0gcHJfMSA9PSAxLCAiU3RlcCBiZXR3ZWVuIHNhbWUgcGtnLiByZXZpc2lvbiBpcyBncmVhdGVyIHRoYW4gMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFtcF8xICE9IHN0YW1wXzIsICJEaWZmZXJlbnQgcGtnIHJldi4gYnV0IHNhbWUgc3RhbXA6ICVzIiAlIHN0YW1wXzEpCisKKyAgICBkZWYgcnVuX3Rlc3RfcHJfZXhwb3J0X2ltcG9ydChzZWxmLCBwYWNrYWdlX25hbWUsIHJlcGxhY2VfY3VycmVudF9kYj1UcnVlKToKKyAgICAgICAgc2VsZi5jb25maWdfcHJfdGVzdHMocGFja2FnZV9uYW1lKQorCisgICAgICAgIHNlbGYuaW5jcmVtZW50X3BhY2thZ2VfcHIocGFja2FnZV9uYW1lKQorICAgICAgICBwcl8xID0gc2VsZi5nZXRfcHJfdmVyc2lvbihwYWNrYWdlX25hbWUpCisKKyAgICAgICAgZXhwb3J0ZWRfZGJfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnZXhwb3J0LmluYycpCisgICAgICAgIGV4cG9ydF9yZXN1bHQgPSBydW5DbWQoImJpdGJha2UtcHJzZXJ2LXRvb2wgZXhwb3J0ICVzIiAlIGV4cG9ydGVkX2RiX3BhdGgsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBvcnRfcmVzdWx0LnN0YXR1cywgMCwgbXNnPSJQUiBTZXJ2aWNlIGRhdGFiYXNlIGV4cG9ydCBmYWlsZWQ6ICVzIiAlIGV4cG9ydF9yZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZXhwb3J0ZWRfZGJfcGF0aCkpCisKKyAgICAgICAgaWYgcmVwbGFjZV9jdXJyZW50X2RiOgorICAgICAgICAgICAgY3VycmVudF9kYl9wYXRoID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ1BFUlNJU1RFTlRfRElSJyksICdwcnNlcnYuc3FsaXRlMycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoY3VycmVudF9kYl9wYXRoKSwgbXNnPSJQYXRoIHRvIGN1cnJlbnQgUFIgU2VydmljZSBkYXRhYmFzZSBpcyBpbnZhbGlkOiAlcyIgJSBjdXJyZW50X2RiX3BhdGgpCisgICAgICAgICAgICBvcy5yZW1vdmUoY3VycmVudF9kYl9wYXRoKQorCisgICAgICAgIGltcG9ydF9yZXN1bHQgPSBydW5DbWQoImJpdGJha2UtcHJzZXJ2LXRvb2wgaW1wb3J0ICVzIiAlIGV4cG9ydGVkX2RiX3BhdGgsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgb3MucmVtb3ZlKGV4cG9ydGVkX2RiX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wb3J0X3Jlc3VsdC5zdGF0dXMsIDAsIG1zZz0iUFIgU2VydmljZSBkYXRhYmFzZSBpbXBvcnQgZmFpbGVkOiAlcyIgJSBpbXBvcnRfcmVzdWx0Lm91dHB1dCkKKworICAgICAgICBzZWxmLmluY3JlbWVudF9wYWNrYWdlX3ByKHBhY2thZ2VfbmFtZSkKKyAgICAgICAgcHJfMiA9IHNlbGYuZ2V0X3ByX3ZlcnNpb24ocGFja2FnZV9uYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcl8yIC0gcHJfMSA9PSAxLCAiU3RlcCBiZXR3ZWVuIHNhbWUgcGtnLiByZXZpc2lvbiBpcyBncmVhdGVyIHRoYW4gMSIpCisKKyAgICBAT0VUZXN0SUQoOTMwKQorICAgIGRlZiB0ZXN0X2ltcG9ydF9leHBvcnRfcmVwbGFjZV9kYihzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9leHBvcnRfaW1wb3J0KCdtNCcpCisKKyAgICBAT0VUZXN0SUQoOTMxKQorICAgIGRlZiB0ZXN0X2ltcG9ydF9leHBvcnRfb3ZlcnJpZGVfZGIoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfZXhwb3J0X2ltcG9ydCgnbTQnLCByZXBsYWNlX2N1cnJlbnRfZGI9RmFsc2UpCisKKyAgICBAT0VUZXN0SUQoOTMyKQorICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfcnBtX2FyY2hfZGVwKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ200JywgJ3JwbScsICdkb19wYWNrYWdlJykKKworICAgIEBPRVRlc3RJRCg5MzQpCisgICAgZGVmIHRlc3RfcHJfc2VydmljZV9kZWJfYXJjaF9kZXAoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgnbTQnLCAnZGViJywgJ2RvX3BhY2thZ2UnKQorCisgICAgQE9FVGVzdElEKDkzMykKKyAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX2lwa19hcmNoX2RlcChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCdtNCcsICdpcGsnLCAnZG9fcGFja2FnZScpCisKKyAgICBAT0VUZXN0SUQoOTM1KQorICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfcnBtX2FyY2hfaW5kZXAoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdycG0nLCAnZG9fcGFja2FnZScpCisKKyAgICBAT0VUZXN0SUQoOTM3KQorICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfZGViX2FyY2hfaW5kZXAoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdkZWInLCAnZG9fcGFja2FnZScpCisKKyAgICBAT0VUZXN0SUQoOTM2KQorICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfaXBrX2FyY2hfaW5kZXAoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdpcGsnLCAnZG9fcGFja2FnZScpCisKKyAgICBAT0VUZXN0SUQoMTQxOSkKKyAgICBkZWYgdGVzdF9zdG9wcGluZ19wcnNlcnZpY2VfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcG9ydCA9IGdldF9mcmVlX3BvcnQoKQorCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZS1wcnNlcnYgLS1ob3N0IGxvY2FsaG9zdCAtLXBvcnQgJXMgLS1sb2dsZXZlbD1ERUJVRyAtLXN0YXJ0JyAlIHBvcnQpCisgICAgICAgIHJldCA9IHJ1bkNtZCgnYml0YmFrZS1wcnNlcnYgLS1ob3N0IGxvY2FsaG9zdCAtLXBvcnQgJXMgLS1sb2dsZXZlbD1ERUJVRyAtLXN0b3AnICUgcG9ydCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldC5zdGF0dXMsIDApCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NGVhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5CkBAIC0wLDAgKzEsNjk4IEBACitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHVybGxpYi5wYXJzZQorCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcgorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFycywgY3JlYXRlX3RlbXBfbGF5ZXIKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2VzIGltcG9ydCBkZXZ0b29sCisKK3RlbXBsYXllcmRpciA9IE5vbmUKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgZ2xvYmFsIHRlbXBsYXllcmRpcgorICAgIHRlbXBsYXllcmRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29scWEnKQorICAgIGNyZWF0ZV90ZW1wX2xheWVyKHRlbXBsYXllcmRpciwgJ3NlbGZ0ZXN0cmVjaXBldG9vbCcpCisgICAgcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyKQorCisKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgorICAgIHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgIHJ1bkNtZCgncm0gLXJmICVzJyAlIHRlbXBsYXllcmRpcikKKworCitjbGFzcyBSZWNpcGV0b29sQmFzZShkZXZ0b29sLkRldnRvb2xCYXNlKToKKworICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgorICAgICAgICBzdXBlcihSZWNpcGV0b29sQmFzZSwgc2VsZikuc2V0VXBMb2NhbCgpCisgICAgICAgIHNlbGYudGVtcGxheWVyZGlyID0gdGVtcGxheWVyZGlyCisgICAgICAgIHNlbGYudGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudGVtcGRpcikKKyAgICAgICAgc2VsZi50ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICd0ZXN0ZmlsZScpCisgICAgICAgIHdpdGggb3BlbihzZWxmLnRlc3RmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdUZXN0IGZpbGVcbicpCisKKyAgICBkZWYgdGVhckRvd25Mb2NhbChzZWxmKToKKyAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMvcmVjaXBlcy0qJyAlIHNlbGYudGVtcGxheWVyZGlyKQorICAgICAgICBzdXBlcihSZWNpcGV0b29sQmFzZSwgc2VsZikudGVhckRvd25Mb2NhbCgpCisKKyAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZGNtZChzZWxmLCBjbWQsIHRlc3RyZWNpcGUsIGV4cGVjdGVkZmlsZXMsIGV4cGVjdGVkbGluZXM9Tm9uZSk6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgIyBDaGVjayB0aGUgYmJhcHBlbmQgd2FzIGNyZWF0ZWQgYW5kIGFwcGxpZXMgcHJvcGVybHkKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBzZWxmLnRlbXBsYXllcmRpcikKKworICAgICAgICAjIENoZWNrIHRoZSBiYmFwcGVuZCBjb250ZW50cworICAgICAgICBpZiBleHBlY3RlZGxpbmVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgZi5yZWFkbGluZXMoKSwgIkV4cGVjdGVkIGxpbmVzIGFyZSBub3QgcHJlc2VudCBpbiAlcyIgJSBiYmFwcGVuZGZpbGUpCisKKyAgICAgICAgIyBDaGVjayBmaWxlIHdhcyBjb3BpZWQKKyAgICAgICAgZmlsZXNkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGJiYXBwZW5kZmlsZSksIHRlc3RyZWNpcGUpCisgICAgICAgIGZvciBleHBlY3RlZGZpbGUgaW4gZXhwZWN0ZWRmaWxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZmlsZXNkaXIsIGV4cGVjdGVkZmlsZSkpLCAnRXhwZWN0ZWQgZmlsZSAlcyB0byBiZSBjb3BpZWQgbmV4dCB0byBiYmFwcGVuZCwgYnV0IGl0IHdhc25cJ3QnICUgZXhwZWN0ZWRmaWxlKQorCisgICAgICAgICMgQ2hlY2sgbm8gb3RoZXIgZmlsZXMgY3JlYXRlZAorICAgICAgICBjcmVhdGVkZmlsZXMgPSBbXQorICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhmaWxlc2Rpcik6CisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBjcmVhdGVkZmlsZXMuYXBwZW5kKG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4ocm9vdCwgZiksIGZpbGVzZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvcnRlZChjcmVhdGVkZmlsZXMpLCBzb3J0ZWQoZXhwZWN0ZWRmaWxlcykpCisKKyAgICAgICAgcmV0dXJuIGJiYXBwZW5kZmlsZSwgcmVzdWx0Lm91dHB1dAorCisKK2NsYXNzIFJlY2lwZXRvb2xUZXN0cyhSZWNpcGV0b29sQmFzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihSZWNpcGV0b29sVGVzdHMsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgICMgRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGRhdGEgaW4gc2hsaWJzL3BrZ2RhdGEKKyAgICAgICAgY2xzLmxvZ2dlci5pbmZvKCdSdW5uaW5nIGJpdGJha2UgdG8gZ2VuZXJhdGUgcGtnZGF0YScpCisgICAgICAgIGJpdGJha2UoJy1jIHBhY2thZ2VkYXRhIGJhc2UtZmlsZXMgY29yZXV0aWxzIGJ1c3lib3ggc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJykKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnQ09SRUJBU0UnLCAnQkJQQVRIJ10pCisgICAgICAgIGNscy5jb3JlYmFzZSA9IGJiX3ZhcnNbJ0NPUkVCQVNFJ10KKyAgICAgICAgY2xzLmJicGF0aCA9IGJiX3ZhcnNbJ0JCUEFUSCddCisKKyAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoc2VsZiwgdGVzdHJlY2lwZSwgZGVzdGZpbGUsIG5ld2ZpbGUsIG9wdGlvbnMsIGV4cGVjdGVkbGluZXMsIGV4cGVjdGVkZmlsZXMpOgorICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzICVzICVzICVzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgZGVzdGZpbGUsIG5ld2ZpbGUsIG9wdGlvbnMpCisgICAgICAgIHJldHVybiBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRjbWQoY21kLCB0ZXN0cmVjaXBlLCBleHBlY3RlZGZpbGVzLCBleHBlY3RlZGxpbmVzKQorCisgICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoc2VsZiwgZGVzdGZpbGUsIG5ld2ZpbGUsIGNoZWNrZXJyb3IpOgorICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzICVzICVzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgZGVzdGZpbGUsIG5ld2ZpbGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnQ29tbWFuZCAiJXMiIHNob3VsZCBoYXZlIGZhaWxlZCBidXQgZGlkblwndCcgJSBjbWQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGZvciBlcnJvcnN0ciBpbiBjaGVja2Vycm9yOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlcnJvcnN0ciwgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTc3KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9iYXNpYyhzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0CisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdiYXNlLWZpbGVzJywgJy9ldGMvbW90ZCcsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ21vdGQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODMpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ludmFsaWQoc2VsZik6CisgICAgICAgICMgVGVzdCBzb21lIGNvbW1hbmRzIHRoYXQgc2hvdWxkIGVycm9yCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL2V0Yy9wYXNzd2QnLCBzZWxmLnRlc3RmaWxlLCBbJ0VSUk9SOiAvZXRjL3Bhc3N3ZCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIHRvb2wnLCAndXNlcmFkZCcsICdleHRyYXVzZXJzJ10pCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL2V0Yy90aW1lc3RhbXAnLCBzZWxmLnRlc3RmaWxlLCBbJ0VSUk9SOiAvZXRjL3RpbWVzdGFtcCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIHRvb2wnXSkKKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvZGV2L2NvbnNvbGUnLCBzZWxmLnRlc3RmaWxlLCBbJ0VSUk9SOiAvZGV2L2NvbnNvbGUgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyB0b29sJ10pCisKKyAgICBAT0VUZXN0SUQoMTE3NikKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYWx0ZXJuYXRpdmVzKHNlbGYpOgorICAgICAgICAjIE5vdyB0cnkgd2l0aCBhIGZpbGUgd2Uga25vdyBzaG91bGQgYmUgYW4gYWx0ZXJuYXRpdmUKKyAgICAgICAgIyAodGhpcyBpcyB2ZXJ5IG11Y2ggYSBmYWtlIGV4YW1wbGUsIGJ1dCBvbmUgd2Uga25vdyBpcyByZWxpYWJseSBhbiBhbHRlcm5hdGl2ZSkKKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvYmluL2xzJywgc2VsZi50ZXN0ZmlsZSwgWydFUlJPUjogRmlsZSAvYmluL2xzIGlzIGFuIGFsdGVybmF0aXZlIHBvc3NpYmx5IHByb3ZpZGVkIGJ5IHRoZSBmb2xsb3dpbmcgcmVjaXBlczonLCAnY29yZXV0aWxzJywgJ2J1c3lib3gnXSkKKyAgICAgICAgIyBOZWVkIGEgdGVzdCBmaWxlIC0gc2hvdWxkIGJlIGV4ZWN1dGFibGUKKyAgICAgICAgdGVzdGZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYuY29yZWJhc2UsICdvZS1pbml0LWJ1aWxkLWVudicpCisgICAgICAgIHRlc3RmaWxlMm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlMikKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vJXMiXG4nICUgdGVzdGZpbGUybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyVzICR7RH0ke2Jhc2VfYmluZGlyfS9sc1xuJyAlIHRlc3RmaWxlMm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ2NvcmV1dGlscycsICcvYmluL2xzJywgdGVzdGZpbGUyLCAnLXIgY29yZXV0aWxzJywgZXhwZWN0ZWRsaW5lcywgW3Rlc3RmaWxlMm5hbWVdKQorICAgICAgICAjIE5vdyB0cnkgYmJhcHBlbmRpbmcgdGhlIHNhbWUgZmlsZSBhZ2FpbiwgY29udGVudHMgc2hvdWxkIG5vdCBjaGFuZ2UKKyAgICAgICAgYmJhcHBlbmRmaWxlLCBfID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnY29yZXV0aWxzJywgJy9iaW4vbHMnLCBzZWxmLnRlc3RmaWxlLCAnLXIgY29yZXV0aWxzJywgZXhwZWN0ZWRsaW5lcywgW3Rlc3RmaWxlMm5hbWVdKQorICAgICAgICAjIEJ1dCBmaWxlIHNob3VsZCBoYXZlCisgICAgICAgIGNvcGllZGZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGJiYXBwZW5kZmlsZSksICdjb3JldXRpbHMnLCB0ZXN0ZmlsZTJuYW1lKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RpZmYgLXEgJXMgJXMnICUgKHRlc3RmaWxlMiwgY29waWVkZmlsZSksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnTmV3IGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgYnV0IHdhcyBub3QgJXMnICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTc4KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9iaW5hcnkoc2VsZik6CisgICAgICAgICMgVHJ5IGFwcGVuZGluZyBhIGJpbmFyeSBmaWxlCisgICAgICAgICMgL2Jpbi9scyBjYW4gYmUgYSBzeW1saW5rIHRvIC91c3IvYmluL2xzCisgICAgICAgIGxzID0gb3MucGF0aC5yZWFscGF0aCgiL2Jpbi9scyIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzIC9iaW4vbHMgJXMgLXIgY29yZXV0aWxzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgbHMpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdXQVJOSU5HOiAnLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdpcyBhIGJpbmFyeScsIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE3MykKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYWRkKHNlbGYpOgorICAgICAgICAjIFRyeSBhcmJpdHJhcnkgZmlsZSBhZGQgdG8gYSByZWNpcGUKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zb21ldGhpbmdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ25ldGJhc2UnLCAnL3Vzci9zaGFyZS9zb21ldGhpbmcnLCBzZWxmLnRlc3RmaWxlLCAnLXIgbmV0YmFzZScsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKKyAgICAgICAgIyBUcnkgYWRkaW5nIGFub3RoZXIgZmlsZSwgdGhpcyB0aW1lIHdoZXJlIHRoZSBzb3VyY2UgZmlsZSBpcyBleGVjdXRhYmxlCisgICAgICAgICMgKHNvIHdlJ3JlIHRlc3RpbmcgdGhhdCwgcGx1cyBtb2RpZnlpbmcgYW4gZXhpc3RpbmcgYmJhcHBlbmQpCisgICAgICAgIHRlc3RmaWxlMiA9IG9zLnBhdGguam9pbihzZWxmLmNvcmViYXNlLCAnb2UtaW5pdC1idWlsZC1lbnYnKQorICAgICAgICB0ZXN0ZmlsZTJuYW1lID0gb3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZTIpCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIFxcXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBmaWxlOi8vJXMgXFxcbicgJSB0ZXN0ZmlsZTJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zb21ldGhpbmdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS8lcyAke0R9JHtkYXRhZGlyfS9zY3JpcHRuYW1lXG4nICUgdGVzdGZpbGUybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnbmV0YmFzZScsICcvdXNyL3NoYXJlL3NjcmlwdG5hbWUnLCB0ZXN0ZmlsZTIsICctciBuZXRiYXNlJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZScsIHRlc3RmaWxlMm5hbWVdKQorCisgICAgQE9FVGVzdElEKDExNzQpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2FkZF9iaW5kaXIoc2VsZik6CisgICAgICAgICMgVHJ5IGFyYml0cmFyeSBmaWxlIGFkZCB0byBhIHJlY2lwZSwgdGhpcyB0aW1lIHRvIGEgbG9jYXRpb24gc3VjaCB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgYXMgZXhlY3V0YWJsZQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7YmluZGlyfS9zZWxmdGVzdC1yZWNpcGV0b29sLXRlc3RiaW5cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ25ldGJhc2UnLCAnL3Vzci9iaW4vc2VsZnRlc3QtcmVjaXBldG9vbC10ZXN0YmluJywgc2VsZi50ZXN0ZmlsZSwgJy1yIG5ldGJhc2UnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTc1KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9hZGRfbWFjaGluZShzZWxmKToKKyAgICAgICAgIyBUcnkgYXJiaXRyYXJ5IGZpbGUgYWRkIHRvIGEgcmVjaXBlLCB0aGlzIHRpbWUgdG8gYSBsb2NhdGlvbiBzdWNoIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyBleGVjdXRhYmxlCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSV9hcHBlbmRfbXltYWNoaW5lID0gIiBmaWxlOi8vdGVzdGZpbGUiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kX215bWFjaGluZSgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc29tZXRoaW5nXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCduZXRiYXNlJywgJy91c3Ivc2hhcmUvc29tZXRoaW5nJywgc2VsZi50ZXN0ZmlsZSwgJy1yIG5ldGJhc2UgLW0gbXltYWNoaW5lJywgZXhwZWN0ZWRsaW5lcywgWydteW1hY2hpbmUvdGVzdGZpbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODQpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX29yaWcoc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGFuZCBpbiBkb19pbnN0YWxsIHdpdGggdGhlIHNhbWUgbmFtZQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1vcmlnJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLW9yaWcnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExOTEpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3RvZGlyKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBhbmQgaW4gZG9faW5zdGFsbCB3aXRoIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSByYXRoZXIgdGhhbiBmaWxlCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXRvZGlyJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLXRvZGlyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTg3KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9yZW5hbWVkKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSB3aXRoIGEgZGlmZmVyZW50IG5hbWUgdG8gdGhlIGRlc3RpbmF0aW9uIGZpbGUKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtcmVuYW1lZCcsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ2ZpbGUxJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTkwKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9zdWJkaXIoc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGluIGEgc3ViZGlyCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXN1YmRpclxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXN1YmRpcicsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTg5KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9zcmNfZ2xvYihzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgYXMgYSBnbG9iCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXNyYy1nbG9iZmlsZVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXNyYy1nbG9iZmlsZScsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTgxKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9pbnN0X2dsb2Ioc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBkb19pbnN0YWxsIGFzIGEgZ2xvYgorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LWdsb2JmaWxlJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtZ2xvYmZpbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODIpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2luc3RfdG9kaXJfZ2xvYihzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIGRvX2luc3RhbGwgYXMgYSBnbG9iIHdpdGggZGVzdGluYXRpb24gYXMgYSBkaXJlY3RvcnkKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC10b2Rpci1nbG9iZmlsZScsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LXRvZGlyLWdsb2JmaWxlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTg1KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9wYXRjaChzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGFkZGVkIGJ5IGEgcGF0Y2ggaW4gU1JDX1VSSQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke3N5c2NvbmZkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1wYXRjaGVkXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL2V0Yy9zZWxmdGVzdC1yZXBsYWNlbWUtcGF0Y2hlZCcsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCisgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBpZiAnV0FSTklORzogJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2FkZC1maWxlLnBhdGNoJywgbGluZSwgJ1VuZXhwZWN0ZWQgd2FybmluZyBmb3VuZCBpbiBvdXRwdXQ6XG4lcycgJSBsaW5lKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoIHdhcm5pbmcgbm90IGZvdW5kIGluIG91dHB1dDpcbiVzJyAlIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTg4KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9zY3JpcHQoc2VsZik6CisgICAgICAgICMgTm93LCBhIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgYnV0IGluc3RhbGxlZCBieSBhIHNjcmlwdCAoc28gbm8gbWVudGlvbiBpbiBkb19pbnN0YWxsKQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1zY3JpcHRlZFxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXNjcmlwdGVkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODApCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2luc3RfZnVuYyhzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluc3RhbGxlZCBmcm9tIGEgZnVuY3Rpb24gY2FsbGVkIGJ5IGRvX2luc3RhbGwKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC1mdW5jJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtZnVuYyddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4NikKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfcG9zdGluc3RhbGwoc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBjcmVhdGVkIGJ5IGEgcG9zdGluc3RhbGwgc2NyaXB0IChhbmQgZXhwbGljaXRseSBtZW50aW9uZWQgaW4gaXQpCisgICAgICAgICMgRmlyc3QgdHJ5IHdpdGhvdXQgc3BlY2lmeWluZyByZWNpcGUKKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wb3N0aW5zdCcsIHNlbGYudGVzdGZpbGUsIFsnRmlsZSAvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wb3N0aW5zdCBtYXkgYmUgd3JpdHRlbiBvdXQgaW4gYSBwcmUvcG9zdGluc3RhbGwgc2NyaXB0IG9mIHRoZSBmb2xsb3dpbmcgcmVjaXBlczonLCAnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJ10pCisgICAgICAgICMgTm93IHNwZWNpZnkgcmVjaXBlCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXBvc3RpbnN0XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtcG9zdGluc3QnLCBzZWxmLnRlc3RmaWxlLCAnLXIgc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQorCisgICAgQE9FVGVzdElEKDExNzkpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2V4dGxheWVyKHNlbGYpOgorICAgICAgICAjIFRyeSBjcmVhdGluZyBhIGJiYXBwZW5kIGluIGEgbGF5ZXIgdGhhdCdzIG5vdCBpbiBiYmxheWVycy5jb25mIGFuZCBoYXMgYSBkaWZmZXJlbnQgc3RydWN0dXJlCisgICAgICAgIGV4dHRlbXBsYXllcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdleHRsYXllcicpCisgICAgICAgIHNlbGYuX2NyZWF0ZV90ZW1wX2xheWVyKGV4dHRlbXBsYXllcmRpciwgRmFsc2UsICdvZXNlbGZ0ZXN0ZXh0bGF5ZXInLCByZWNpcGVwYXRoc3BlYz0nbWV0YWRhdGEvcmVjaXBlcy9yZWNpcGVzLSovKicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzIC91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLW9yaWcgJXMnICUgKGV4dHRlbXBsYXllcmRpciwgc2VsZi50ZXN0ZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGNyZWF0ZWRmaWxlcyA9IFtdCisgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGV4dHRlbXBsYXllcmRpcik6CisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBjcmVhdGVkZmlsZXMuYXBwZW5kKG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4ocm9vdCwgZiksIGV4dHRlbXBsYXllcmRpcikpCisgICAgICAgIGNyZWF0ZWRmaWxlcy5yZW1vdmUoJ2NvbmYvbGF5ZXIuY29uZicpCisgICAgICAgIGV4cGVjdGVkZmlsZXMgPSBbJ21ldGFkYXRhL3JlY2lwZXMvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZS9zZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUuYmJhcHBlbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdtZXRhZGF0YS9yZWNpcGVzL3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUvc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1vcmlnJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoY3JlYXRlZGZpbGVzKSwgc29ydGVkKGV4cGVjdGVkZmlsZXMpKQorCisgICAgQE9FVGVzdElEKDExOTIpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3dpbGRjYXJkKHNlbGYpOgorCisgICAgICAgIGRlZiB0cnlfYXBwZW5kZmlsZV93YyhvcHRpb25zKToKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzIC9ldGMvcHJvZmlsZSAlcyAlcycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIHNlbGYudGVzdGZpbGUsIG9wdGlvbnMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgICAgIGJiYXBwZW5kZmlsZSA9IE5vbmUKKyAgICAgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYudGVtcGxheWVyZGlyKToKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgnLmJiYXBwZW5kJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBiYmFwcGVuZGZpbGUgPSBmCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgbm90IGJiYXBwZW5kZmlsZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ05vIGJiYXBwZW5kIGZpbGUgY3JlYXRlZCcpCisgICAgICAgICAgICBydW5DbWQoJ3JtIC1yZiAlcy9yZWNpcGVzLSonICUgc2VsZi50ZW1wbGF5ZXJkaXIpCisgICAgICAgICAgICByZXR1cm4gYmJhcHBlbmRmaWxlCisKKyAgICAgICAgIyBDaGVjayB3aXRob3V0IHdpbGRjYXJkIG9wdGlvbgorICAgICAgICByZWNpcGVmbiA9IG9zLnBhdGguYmFzZW5hbWUoZ2V0X2JiX3ZhcignRklMRScsICdiYXNlLWZpbGVzJykpCisgICAgICAgIGZpbGVuYW1lID0gdHJ5X2FwcGVuZGZpbGVfd2MoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW5hbWUsIHJlY2lwZWZuLnJlcGxhY2UoJy5iYicsICcuYmJhcHBlbmQnKSkKKyAgICAgICAgIyBOb3cgY2hlY2sgd2l0aCB3aWxkY2FyZCBvcHRpb24KKyAgICAgICAgZmlsZW5hbWUgPSB0cnlfYXBwZW5kZmlsZV93YygnLXcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVuYW1lLCByZWNpcGVmbi5zcGxpdCgnXycpWzBdICsgJ18lLmJiYXBwZW5kJykKKworICAgIEBPRVRlc3RJRCgxMTkzKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlKHNlbGYpOgorICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKKyAgICAgICAgdGVtcHNyYyA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdzcmN0cmVlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHNyYykKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdsb2dyb3RhdGVfMy4xMi4zLmJiJykKKyAgICAgICAgc3JjdXJpID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzL2Rvd25sb2FkLzMuMTIuMy9sb2dyb3RhdGUtMy4xMi4zLnRhci54eicKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcyAteCAlcycgJSAocmVjaXBlZmlsZSwgc3JjdXJpLCB0ZW1wc3JjKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9ICdHUEx2MicKKyAgICAgICAgY2hlY2t2YXJzWydMSUNfRklMRVNfQ0hLU1VNJ10gPSAnZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzJworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9sb2dyb3RhdGUtJHtQVn0udGFyLnh6JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbbWQ1c3VtXSddID0gJ2E1NjBjNTdmYWM4N2M0NWIyZmMxNzQwNmNkZjc5Mjg4JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbc2hhMjU2c3VtXSddID0gJzJlNmE0MDFjYWM5MDI0ZGIyMjg4Mjk3ZTNiZTFhOGFiNjBlNzQwMWJhOGU5MTIyNTIxOGFhZjRhMjdlODJhMDcnCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisKKyAgICBAT0VUZXN0SUQoMTE5NCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXQoc2VsZik6CisgICAgICAgIGlmICd4MTEnIG5vdCBpbiBnZXRfYmJfdmFyKCdESVNUUk9fRkVBVFVSRVMnKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1Rlc3QgcmVxdWlyZXMgeDExIGFzIGRpc3RybyBmZWF0dXJlJykKKyAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZGF0YSBpbiBzaGxpYnMvcGtnZGF0YQorICAgICAgICBiaXRiYWtlKCdsaWJwbmcgcGFuZ28gbGlieDExIGxpYnhleHQganBlZyBsaWJjaGVjaycpCisgICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQorICAgICAgICB0ZW1wc3JjID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3NyY3RyZWUnKQorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wc3JjKQorICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2xpYm1hdGNoYm94LmJiJykKKyAgICAgICAgc3JjdXJpID0gJ2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpYm1hdGNoYm94JworICAgICAgICByZXN1bHQgPSBydW5DbWQoWydyZWNpcGV0b29sJywgJ2NyZWF0ZScsICctbycsIHJlY2lwZWZpbGUsIHNyY3VyaSArICI7cmV2PTlmN2NmODg5NWFlMmQzOWM0NjVjMDRjYzc4ZTkxOGMxNTc0MjAyNjkiLCAnLXgnLCB0ZW1wc3JjXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpLCAncmVjaXBldG9vbCBkaWQgbm90IGNyZWF0ZSByZWNpcGUgZmlsZTsgb3V0cHV0OlxuJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSAnTEdQTHYyLjEnCisgICAgICAgIGNoZWNrdmFyc1snTElDX0ZJTEVTX0NIS1NVTSddID0gJ2ZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCcKKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9naXQnCisgICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcxLjExK2dpdCR7U1JDUFZ9JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHNyY3VyaQorICAgICAgICBjaGVja3ZhcnNbJ0RFUEVORFMnXSA9IHNldChbJ2xpYmNoZWNrJywgJ2xpYmpwZWctdHVyYm8nLCAnbGlicG5nJywgJ2xpYngxMScsICdsaWJ4ZXh0JywgJ3BhbmdvJ10pCisgICAgICAgIGluaGVyaXRzID0gWydhdXRvdG9vbHMnLCAncGtnY29uZmlnJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKworICAgIEBPRVRlc3RJRCgxMzkyKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX3NpbXBsZShzZWxmKToKKyAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcHYgPSAnMS43LjMuMCcKKyAgICAgICAgc3JjdXJpID0gJ2h0dHA6Ly93d3cuZGVzdC11bnJlYWNoLm9yZy9zb2NhdC9kb3dubG9hZC9zb2NhdC0lcy50YXIuYnoyJyAlIHB2CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgJXMgLW8gJXMnICUgKHNyY3VyaSwgdGVtcHJlY2lwZSkpCisgICAgICAgIGRpcmxpc3QgPSBvcy5saXN0ZGlyKHRlbXByZWNpcGUpCisgICAgICAgIGlmIGxlbihkaXJsaXN0KSA+IDE6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3JlY2lwZXRvb2wgY3JlYXRlZCBtb3JlIHRoYW4ganVzdCBvbmUgZmlsZTsgb3V0cHV0OlxuJXNcbmRpcmxpc3Q6XG4lcycgJSAocmVzdWx0Lm91dHB1dCwgc3RyKGRpcmxpc3QpKSkKKyAgICAgICAgaWYgbGVuKGRpcmxpc3QpIDwgMSBvciBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHRlbXByZWNpcGUsIGRpcmxpc3RbMF0pKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgncmVjaXBldG9vbCBkaWQgbm90IGNyZWF0ZSByZWNpcGUgZmlsZTsgb3V0cHV0OlxuJXNcbmRpcmxpc3Q6XG4lcycgJSAocmVzdWx0Lm91dHB1dCwgc3RyKGRpcmxpc3QpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJsaXN0WzBdLCAnc29jYXRfJXMuYmInICUgcHYsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnVW5rbm93bicsICdHUEx2MiddKQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ19GSUxFU19DSEtTVU0nXSA9IHNldChbJ2ZpbGU6Ly9DT1BZSU5HLk9wZW5TU0w7bWQ1PTVjOWJjY2M3N2Y2N2E4MzI4ZWY0ZWJhZjQ2ODExNmY0JywgJ2ZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyddKQorICAgICAgICAjIFdlIGRvbid0IGNoZWNrIERFUEVORFMgc2luY2UgdGhleSBhcmUgdmFyaWFibGUgZm9yIHRoaXMgcmVjaXBlIGRlcGVuZGluZyBvbiB3aGF0J3MgaW4gdGhlIHN5c3Jvb3QKKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSBOb25lCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gc3JjdXJpLnJlcGxhY2UocHYsICcke1BWfScpCisgICAgICAgIGluaGVyaXRzID0gWydhdXRvdG9vbHMnXQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgZGlybGlzdFswXSksIGNoZWNrdmFycywgaW5oZXJpdHMpCisKKyAgICBAT0VUZXN0SUQoMTQxOCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9jbWFrZShzZWxmKToKKyAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbmF2aXRfMC41LjAuYmInKQorICAgICAgICBzcmN1cmkgPSAnaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9uYXZpdC92MC41LjAvbmF2aXQtMC41LjAudGFyLmd6JworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnVW5rbm93bicsICdHUEx2MicsICdMR1BMdjInXSkKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9uYXZpdC92JHtQVn0vbmF2aXQtJHtQVn0udGFyLmd6JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbbWQ1c3VtXSddID0gJzI0MmYzOThlOTc5YTZiOGMwZjNjODAyYjYzNDM1YjY4JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbc2hhMjU2c3VtXSddID0gJzEzMzUzNDgxZDdmYzAxYTRmNjRlMzg1ZGRhNDYwYjUxNDk2MzY2YmJhMGZkMmNjODVhODlhMDc0NzkxMGU5NGQnCisgICAgICAgIGNoZWNrdmFyc1snREVQRU5EUyddID0gc2V0KFsnZnJlZXR5cGUnLCAnemxpYicsICdvcGVuc3NsJywgJ2dsaWItMi4wJywgJ3ZpcnR1YWwvbGliZ2wnLCAndmlydHVhbC9lZ2wnLCAnZ3RrKycsICdsaWJwbmcnLCAnbGlic2RsJywgJ2ZyZWVnbHV0JywgJ2RidXMtZ2xpYiddKQorICAgICAgICBpbmhlcml0cyA9IFsnY21ha2UnLCAncHl0aG9uLWRpcicsICdnZXR0ZXh0JywgJ3BrZ2NvbmZpZyddCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCisKKyAgICBAT0VUZXN0SUQoMTYzOCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXRodWIoc2VsZik6CisgICAgICAgICMgQmFzaWMgdGVzdCB0byBzZWUgaWYgZ2l0aHViIFVSTCBtYW5nbGluZyB3b3JrcworICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ21lc29uX2dpdC5iYicpCisgICAgICAgIHNyY3VyaSA9ICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbjtyZXY9MC4zMi4wJworICAgICAgICByZXN1bHQgPSBydW5DbWQoWydyZWNpcGV0b29sJywgJ2NyZWF0ZScsICctbycsIHRlbXByZWNpcGUsIHNyY3VyaV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydBcGFjaGUtMi4wJ10pCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2dpdDovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbjtwcm90b2NvbD1odHRwcycKKyAgICAgICAgaW5oZXJpdHMgPSBbJ3NldHVwdG9vbHMnXQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQorCisgICAgQE9FVGVzdElEKDE2MzkpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0aHViX3RhcmJhbGwoc2VsZik6CisgICAgICAgICMgQmFzaWMgdGVzdCB0byBlbnN1cmUgZ2l0aHViIFVSTCBtYW5nbGluZyBkb2Vzbid0IGFwcGx5IHRvIHJlbGVhc2UgdGFyYmFsbHMKKyAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQorICAgICAgICBwdiA9ICcwLjMyLjAnCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ21lc29uXyVzLmJiJyAlIHB2KQorICAgICAgICBzcmN1cmkgPSAnaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcmVsZWFzZXMvZG93bmxvYWQvJXMvbWVzb24tJXMudGFyLmd6JyAlIChwdiwgcHYpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydBcGFjaGUtMi4wJ10pCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L21lc29uLSR7UFZ9LnRhci5neicKKyAgICAgICAgaW5oZXJpdHMgPSBbJ3NldHVwdG9vbHMnXQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQorCisgICAgQE9FVGVzdElEKDE2MzcpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0X2h0dHAoc2VsZik6CisgICAgICAgICMgQmFzaWMgdGVzdCB0byBjaGVjayBodHRwIGdpdCBVUkwgbWFuZ2xpbmcgd29ya3MKKyAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdtYXRjaGJveC10ZXJtaW5hbF9naXQuYmInKQorICAgICAgICBzcmN1cmkgPSAnaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9tYXRjaGJveC10ZXJtaW5hbCcKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcycgJSAodGVtcHJlY2lwZSwgc3JjdXJpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ0dQTHYyJ10pCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9tYXRjaGJveC10ZXJtaW5hbDtwcm90b2NvbD1odHRwJworICAgICAgICBpbmhlcml0cyA9IFsncGtnY29uZmlnJywgJ2F1dG90b29scyddCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCisKKyAgICBkZWYgX2NvcHlfZmlsZV93aXRoX2NsZWFudXAoc2VsZiwgc3JjZmlsZSwgYmFzZWRzdGRpciwgKnBhdGhzKToKKyAgICAgICAgZHN0ZGlyID0gYmFzZWRzdGRpcgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZHN0ZGlyKSkKKyAgICAgICAgZm9yIHAgaW4gcGF0aHM6CisgICAgICAgICAgICBkc3RkaXIgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBwKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdGRpcik6CisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZHN0ZGlyKQorICAgICAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0ZGlyKQorICAgICAgICBkc3RmaWxlID0gb3MucGF0aC5qb2luKGRzdGRpciwgb3MucGF0aC5iYXNlbmFtZShzcmNmaWxlKSkKKyAgICAgICAgaWYgc3JjZmlsZSAhPSBkc3RmaWxlOgorICAgICAgICAgICAgc2h1dGlsLmNvcHkoc3JjZmlsZSwgZHN0ZmlsZSkKKyAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0ZmlsZSkKKworICAgIEBPRVRlc3RJRCgxNjQwKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfbG9hZF9wbHVnaW4oc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCByZWNpcGV0b29sIGxvYWRzIG9ubHkgdGhlIGZpcnN0IGZvdW5kIHBsdWdpbiBpbiBCQlBBVEguIiIiCisKKyAgICAgICAgcmVjaXBldG9vbCA9IHJ1bkNtZCgid2hpY2ggcmVjaXBldG9vbCIpCisgICAgICAgIGZyb21uYW1lID0gcnVuQ21kKCJyZWNpcGV0b29sIC0tcXVpZXQgcGx1Z2luZmlsZSIpCisgICAgICAgIHNyY2ZpbGUgPSBmcm9tbmFtZS5vdXRwdXQKKyAgICAgICAgc2VhcmNocGF0aCA9IHNlbGYuYmJwYXRoLnNwbGl0KCc6JykgKyBbb3MucGF0aC5kaXJuYW1lKHJlY2lwZXRvb2wub3V0cHV0KV0KKyAgICAgICAgcGx1Z2luY29udGVudCA9IFtdCisgICAgICAgIHdpdGggb3BlbihzcmNmaWxlKSBhcyBmaDoKKyAgICAgICAgICAgIHBsdWdpbmNvbnRlbnQgPSBmaC5yZWFkbGluZXMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdtZXRhLXNlbGZ0ZXN0Jywgc3JjZmlsZSwgJ3dyb25nIGJicGF0aCBwbHVnaW4gZm91bmQnKQorICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aDoKKyAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aF9jbGVhbnVwKHNyY2ZpbGUsIHBhdGgsICdsaWInLCAncmVjaXBldG9vbCcpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoInJlY2lwZXRvb2wgLS1xdWlldCBjb3VudCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICcxJykKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgicmVjaXBldG9vbCAtLXF1aWV0IG11bHRpbG9hZGVkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgIm5vIikKKyAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGg6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJyZWNpcGV0b29sIC0tcXVpZXQgYmJkaXIiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgcGF0aCkKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHJlc3VsdC5vdXRwdXQsICdsaWInLCAncmVjaXBldG9vbCcsICdiYnBhdGgucHknKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHdpdGggb3BlbihzcmNmaWxlLCAndycpIGFzIGZoOgorICAgICAgICAgICAgICAgIGZoLndyaXRlbGluZXMocGx1Z2luY29udGVudCkKKworCitjbGFzcyBSZWNpcGV0b29sQXBwZW5kc3JjQmFzZShSZWNpcGV0b29sQmFzZSk6CisgICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlLCBvcHRpb25zLCBleHBlY3RlZGxpbmVzLCBleHBlY3RlZGZpbGVzKToKKyAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kc3JjZmlsZSAlcyAlcyAlcyAlcyAlcycgJSAob3B0aW9ucywgc2VsZi50ZW1wbGF5ZXJkaXIsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlKQorICAgICAgICByZXR1cm4gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kY21kKGNtZCwgdGVzdHJlY2lwZSwgZXhwZWN0ZWRmaWxlcywgZXhwZWN0ZWRsaW5lcykKKworICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXMoc2VsZiwgdGVzdHJlY2lwZSwgbmV3ZmlsZXMsIGV4cGVjdGVkbGluZXM9Tm9uZSwgZXhwZWN0ZWRmaWxlcz1Ob25lLCBkZXN0ZGlyPU5vbmUsIG9wdGlvbnM9JycpOgorCisgICAgICAgIGlmIGRlc3RkaXI6CisgICAgICAgICAgICBvcHRpb25zICs9ICcgLUQgJXMnICUgZGVzdGRpcgorCisgICAgICAgIGlmIGV4cGVjdGVkZmlsZXMgaXMgTm9uZToKKyAgICAgICAgICAgIGV4cGVjdGVkZmlsZXMgPSBbb3MucGF0aC5iYXNlbmFtZShmKSBmb3IgZiBpbiBuZXdmaWxlc10KKworICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRzcmNmaWxlcyAlcyAlcyAlcyAlcycgJSAob3B0aW9ucywgc2VsZi50ZW1wbGF5ZXJkaXIsIHRlc3RyZWNpcGUsICcgJy5qb2luKG5ld2ZpbGVzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGNtZChjbWQsIHRlc3RyZWNpcGUsIGV4cGVjdGVkZmlsZXMsIGV4cGVjdGVkbGluZXMpCisKKyAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfZmFpbChzZWxmLCB0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0ZmlsZSwgY2hlY2tlcnJvcik6CisgICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZHNyY2ZpbGUgJXMgJXMgJXMgJXMnICUgKHNlbGYudGVtcGxheWVyZGlyLCB0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0ZmlsZSBvciAnJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdDb21tYW5kICIlcyIgc2hvdWxkIGhhdmUgZmFpbGVkIGJ1dCBkaWRuXCd0JyAlIGNtZCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgZm9yIGVycm9yc3RyIGluIGNoZWNrZXJyb3I6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVycm9yc3RyLCByZXN1bHQub3V0cHV0KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZ2V0X2ZpcnN0X2ZpbGVfdXJpKHJlY2lwZSk6CisgICAgICAgICcnJ1JldHVybiB0aGUgZmlyc3QgZmlsZTovLyBpbiBTUkNfVVJJIGZvciB0aGUgc3BlY2lmaWVkIHJlY2lwZS4nJycKKyAgICAgICAgc3JjX3VyaSA9IGdldF9iYl92YXIoJ1NSQ19VUkknLCByZWNpcGUpLnNwbGl0KCkKKyAgICAgICAgZm9yIHVyaSBpbiBzcmNfdXJpOgorICAgICAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZSh1cmkpCisgICAgICAgICAgICBpZiBwLnNjaGVtZSA9PSAnZmlsZSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHAubmV0bG9jICsgcC5wYXRoCisKKyAgICBkZWYgX3Rlc3RfYXBwZW5kc3JjZmlsZShzZWxmLCB0ZXN0cmVjaXBlLCBmaWxlbmFtZT1Ob25lLCBkZXN0ZGlyPU5vbmUsIGhhc19zcmNfdXJpPVRydWUsIHNyY2Rpcj1Ob25lLCBuZXdmaWxlPU5vbmUsIG9wdGlvbnM9JycpOgorICAgICAgICBpZiBuZXdmaWxlIGlzIE5vbmU6CisgICAgICAgICAgICBuZXdmaWxlID0gc2VsZi50ZXN0ZmlsZQorCisgICAgICAgIGlmIHNyY2RpcjoKKyAgICAgICAgICAgIGlmIGRlc3RkaXI6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3ViZGlyID0gb3MucGF0aC5qb2luKHNyY2RpciwgZGVzdGRpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3ViZGlyID0gc3JjZGlyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcHRpb25zICs9ICIgLVciCisgICAgICAgICAgICBleHBlY3RlZF9zdWJkaXIgPSBkZXN0ZGlyCisKKyAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICBpZiBkZXN0ZGlyOgorICAgICAgICAgICAgICAgIGRlc3RwYXRoID0gb3MucGF0aC5qb2luKGRlc3RkaXIsIGZpbGVuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZXN0cGF0aCA9IGZpbGVuYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobmV3ZmlsZSkKKyAgICAgICAgICAgIGlmIGRlc3RkaXI6CisgICAgICAgICAgICAgICAgZGVzdHBhdGggPSBkZXN0ZGlyICsgb3Muc2VwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlc3RwYXRoID0gJy4nICsgb3Muc2VwCisKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBpZiBoYXNfc3JjX3VyaToKKyAgICAgICAgICAgIHVyaSA9ICdmaWxlOi8vJXMnICUgZmlsZW5hbWUKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkX3N1YmRpcjoKKyAgICAgICAgICAgICAgICB1cmkgKz0gJztzdWJkaXI9JXMnICUgZXhwZWN0ZWRfc3ViZGlyCisgICAgICAgICAgICBleHBlY3RlZGxpbmVzWzA6MF0gPSBbJ1NSQ19VUkkgKz0gIiVzIlxuJyAlIHVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorCisgICAgICAgIHJldHVybiBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RwYXRoLCBvcHRpb25zLCBleHBlY3RlZGxpbmVzLCBbZmlsZW5hbWVdKQorCisgICAgZGVmIF90ZXN0X2FwcGVuZHNyY2ZpbGVzKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGVzLCBleHBlY3RlZGZpbGVzPU5vbmUsIGRlc3RkaXI9Tm9uZSwgb3B0aW9ucz0nJyk6CisgICAgICAgIGlmIGV4cGVjdGVkZmlsZXMgaXMgTm9uZToKKyAgICAgICAgICAgIGV4cGVjdGVkZmlsZXMgPSBbb3MucGF0aC5iYXNlbmFtZShuKSBmb3IgbiBpbiBuZXdmaWxlc10KKworICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlcyh0ZXN0cmVjaXBlLCBuZXdmaWxlcywgZXhwZWN0ZWRmaWxlcz1leHBlY3RlZGZpbGVzLCBkZXN0ZGlyPWRlc3RkaXIsIG9wdGlvbnM9b3B0aW9ucykKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTUkNfVVJJJywgJ0ZJTEUnLCAnRklMRVNFWFRSQVBBVEhTJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10uc3BsaXQoKQorICAgICAgICBmb3IgZiBpbiBleHBlY3RlZGZpbGVzOgorICAgICAgICAgICAgaWYgZGVzdGRpcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlOi8vJXM7c3ViZGlyPSVzJyAlIChmLCBkZXN0ZGlyKSwgc3JjX3VyaSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZTovLyVzJyAlIGYsIHNyY191cmkpCisKKyAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQorICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBzZWxmLnRlbXBsYXllcmRpcikKKyAgICAgICAgZmlsZXNkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGJiYXBwZW5kZmlsZSksIHRlc3RyZWNpcGUpCisgICAgICAgIGZpbGVzZXh0cmFwYXRocyA9IGJiX3ZhcnNbJ0ZJTEVTRVhUUkFQQVRIUyddLnNwbGl0KCc6JykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihmaWxlc2RpciwgZmlsZXNleHRyYXBhdGhzKQorCisKKworCitjbGFzcyBSZWNpcGV0b29sQXBwZW5kc3JjVGVzdHMoUmVjaXBldG9vbEFwcGVuZHNyY0Jhc2UpOgorCisgICAgQE9FVGVzdElEKDEyNzMpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2Jhc2ljKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUoJ2Jhc2UtZmlsZXMnLCAnYS1maWxlJykKKworICAgIEBPRVRlc3RJRCgxMjc0KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9iYXNpY193aWxkY2FyZChzZWxmKToKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNlLWZpbGVzJworICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgJ2EtZmlsZScsIG9wdGlvbnM9Jy13JykKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBzZWxmLnRlbXBsYXllcmRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKGJiYXBwZW5kZmlsZSksICclc18lJS5iYmFwcGVuZCcgJSB0ZXN0cmVjaXBlKQorCisgICAgQE9FVGVzdElEKDEyODEpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX3N1YmRpcl9iYXNpYyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKCdiYXNlLWZpbGVzJywgJ2EtZmlsZScsICd0bXAnKQorCisgICAgQE9FVGVzdElEKDEyODIpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX3N1YmRpcl9iYXNpY19kaXJkZXN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUoJ2Jhc2UtZmlsZXMnLCBkZXN0ZGlyPSd0bXAnKQorCisgICAgQE9FVGVzdElEKDEyODApCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX3NyY2Rpcl9iYXNpYyhzZWxmKToKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNoJworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTJywgJ1dPUktESVInXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgc3JjZGlyID0gYmJfdmFyc1snUyddCisgICAgICAgIHdvcmtkaXIgPSBiYl92YXJzWydXT1JLRElSJ10KKyAgICAgICAgc3ViZGlyID0gb3MucGF0aC5yZWxwYXRoKHNyY2Rpciwgd29ya2RpcikKKyAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsICdhLWZpbGUnLCBzcmNkaXI9c3ViZGlyKQorCisgICAgQE9FVGVzdElEKDEyNzUpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2V4aXN0aW5nX2luX3NyY191cmkoc2VsZik6CisgICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzZS1maWxlcycKKyAgICAgICAgZmlsZXBhdGggPSBzZWxmLl9nZXRfZmlyc3RfZmlsZV91cmkodGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVwYXRoLCAnVW5hYmxlIHRvIHRlc3QsIG5vIGZpbGU6Ly8gdXJpIGZvdW5kIGluIFNSQ19VUkkgZm9yICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCBmaWxlcGF0aCwgaGFzX3NyY191cmk9RmFsc2UpCisKKyAgICBAT0VUZXN0SUQoMTI3NikKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfZXhpc3RpbmdfaW5fc3JjX3VyaV9kaWZmX3BhcmFtcyhzZWxmKToKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNlLWZpbGVzJworICAgICAgICBzdWJkaXIgPSAndG1wJworICAgICAgICBmaWxlcGF0aCA9IHNlbGYuX2dldF9maXJzdF9maWxlX3VyaSh0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZXBhdGgsICdVbmFibGUgdG8gdGVzdCwgbm8gZmlsZTovLyB1cmkgZm91bmQgaW4gU1JDX1VSSSBmb3IgJXMnICUgdGVzdHJlY2lwZSkKKworICAgICAgICBvdXRwdXQgPSBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgZmlsZXBhdGgsIHN1YmRpciwgaGFzX3NyY191cmk9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoJ3dpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMnIGluIGwgZm9yIGwgaW4gb3V0cHV0KSkKKworICAgIEBPRVRlc3RJRCgxMjc3KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9yZXBsYWNlX2ZpbGVfc3JjZGlyKHNlbGYpOgorICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2gnCisgICAgICAgIGZpbGVwYXRoID0gJ01ha2VmaWxlLmluJworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTJywgJ1dPUktESVInXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgc3JjZGlyID0gYmJfdmFyc1snUyddCisgICAgICAgIHdvcmtkaXIgPSBiYl92YXJzWydXT1JLRElSJ10KKyAgICAgICAgc3ViZGlyID0gb3MucGF0aC5yZWxwYXRoKHNyY2Rpciwgd29ya2RpcikKKworICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgZmlsZXBhdGgsIHNyY2Rpcj1zdWJkaXIpCisgICAgICAgIGJpdGJha2UoJyVzOmRvX3VucGFjaycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW4oc2VsZi50ZXN0ZmlsZSwgJ3InKS5yZWFkKCksIG9wZW4ob3MucGF0aC5qb2luKHNyY2RpciwgZmlsZXBhdGgpLCAncicpLnJlYWQoKSkKKworICAgIEBPRVRlc3RJRCgxMjc4KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXNfYmFzaWMoc2VsZiwgZGVzdGRpcj1Ob25lKToKKyAgICAgICAgbmV3ZmlsZXMgPSBbc2VsZi50ZXN0ZmlsZV0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgNSk6CisgICAgICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICd0ZXN0ZmlsZSVkJyAlIGkpCisgICAgICAgICAgICB3aXRoIG9wZW4odGVzdGZpbGUsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdUZXN0IGZpbGUgJWRcbicgJSBpKQorICAgICAgICAgICAgbmV3ZmlsZXMuYXBwZW5kKHRlc3RmaWxlKQorICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGVzKCdnY2MnLCBuZXdmaWxlcywgZGVzdGRpcj1kZXN0ZGlyLCBvcHRpb25zPSctVycpCisKKyAgICBAT0VUZXN0SUQoMTI3OSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzX2Jhc2ljX3N1YmRpcihzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXNfYmFzaWMoZGVzdGRpcj0ndGVzdGRpcicpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5jbWQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5jbWQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc2ZDcwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bmNtZC5weQpAQCAtMCwwICsxLDEzNCBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQKK2Zyb20gb2VxYS51dGlscyBpbXBvcnQgQ29tbWFuZEVycm9yCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCitpbXBvcnQgc2lnbmFsCisKK2NsYXNzIE1lbUxvZ2dlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5pbmZvX21zZ3MgPSBbXQorICAgICAgICBzZWxmLmVycm9yX21zZ3MgPSBbXQorCisgICAgZGVmIGluZm8oc2VsZiwgbXNnKToKKyAgICAgICAgc2VsZi5pbmZvX21zZ3MuYXBwZW5kKG1zZykKKworICAgIGRlZiBlcnJvcihzZWxmLCBtc2cpOgorICAgICAgICBzZWxmLmVycm9yX21zZ3MuYXBwZW5kKG1zZykKKworY2xhc3MgUnVuQ21kVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAiIiIgQmFzaWMgdGVzdHMgZm9yIHJ1bkNtZCgpIHV0aWxpdHkgZnVuY3Rpb24gIiIiCisKKyAgICAjIFRoZSBkZWx0YSBpcyBpbnRlbnRpb25hbGx5IHNtYWxsZXIgdGhhbiB0aGUgdGltZW91dCwgdG8gZGV0ZWN0IGNhc2VzIHdoZXJlCisgICAgIyB3ZSBpbmNvcnJlY3RseSBhcHBseSB0aGUgdGltZW91dCBtb3JlIHRoYW4gb25jZS4KKyAgICBUSU1FT1VUID0gMgorICAgIERFTFRBID0gMQorCisgICAgQE9FVGVzdElEKDE5MTYpCisgICAgZGVmIHRlc3RfcmVzdWx0X29rYXkoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgidHJ1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCkKKworICAgIEBPRVRlc3RJRCgxOTE1KQorICAgIGRlZiB0ZXN0X3Jlc3VsdF9mYWxzZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJmYWxzZSIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxKQorCisgICAgQE9FVGVzdElEKDE5MTcpCisgICAgZGVmIHRlc3Rfc2hlbGwoc2VsZik6CisgICAgICAgICMgQSBzaGVsbCBpcyB1c2VkIGZvciBhbGwgc3RyaW5nIGNvbW1hbmRzLgorICAgICAgICByZXN1bHQgPSBydW5DbWQoImZhbHNlOyB0cnVlIiwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDApCisKKyAgICBAT0VUZXN0SUQoMTkxMCkKKyAgICBkZWYgdGVzdF9ub19zaGVsbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkNtZCwgImZhbHNlOyB0cnVlIiwgc2hlbGw9RmFsc2UpCisKKyAgICBAT0VUZXN0SUQoMTkwNikKKyAgICBkZWYgdGVzdF9saXN0X25vdF9mb3VuZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkNtZCwgWyJmYWxzZTsgdHJ1ZSJdKQorCisgICAgQE9FVGVzdElEKDE5MDcpCisgICAgZGVmIHRlc3RfbGlzdF9va2F5KHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoWyJ0cnVlIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCkKKworICAgIEBPRVRlc3RJRCgxOTEzKQorICAgIGRlZiB0ZXN0X3Jlc3VsdF9hc3NlcnRpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEFzc2VydGlvbkVycm9yLCAiQ29tbWFuZCAnZWNobyAuKiBmYWxzZScgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgMTpcbmZvb2JhciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkNtZCwgImVjaG8gZm9vYmFyID4mMjsgZmFsc2UiLCBzaGVsbD1UcnVlKQorCisgICAgQE9FVGVzdElEKDE5MTQpCisgICAgZGVmIHRlc3RfcmVzdWx0X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoQ29tbWFuZEVycm9yLCAiQ29tbWFuZCAnZWNobyAuKiBmYWxzZScgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgMSB3aXRoIG91dHB1dDogZm9vYmFyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQ21kLCAiZWNobyBmb29iYXIgPiYyOyBmYWxzZSIsIHNoZWxsPVRydWUsIGFzc2VydF9lcnJvcj1GYWxzZSkKKworICAgIEBPRVRlc3RJRCgxOTExKQorICAgIGRlZiB0ZXN0X291dHB1dChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJlY2hvIHN0ZG91dDsgZWNobyBzdGRlcnIgPiYyIiwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgic3Rkb3V0XG5zdGRlcnIiLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIiLCByZXN1bHQuZXJyb3IpCisKKyAgICBAT0VUZXN0SUQoMTkxMikKKyAgICBkZWYgdGVzdF9vdXRwdXRfc3BsaXQoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZWNobyBzdGRvdXQ7IGVjaG8gc3RkZXJyID4mMiIsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInN0ZG91dCIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInN0ZGVyciIsIHJlc3VsdC5lcnJvcikKKworICAgIEBPRVRlc3RJRCgxOTIwKQorICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIG51bXRocmVhZHMgPSB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICAjIEtpbGxpbmcgYSBoYW5naW5nIHByb2Nlc3Mgb25seSB3b3JrcyB3aGVuIG5vdCB1c2luZyBhIHNoZWxsPyEKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsnc2xlZXAnLCAnNjAnXSwgdGltZW91dD1zZWxmLlRJTUVPVVQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAtc2lnbmFsLlNJR1RFUk0pCisgICAgICAgIGVuZCA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhlbmQgLSBzdGFydCwgc2VsZi5USU1FT1VUICsgc2VsZi5ERUxUQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW10aHJlYWRzLCB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkpCisKKyAgICBAT0VUZXN0SUQoMTkyMSkKKyAgICBkZWYgdGVzdF90aW1lb3V0X3NwbGl0KHNlbGYpOgorICAgICAgICBudW10aHJlYWRzID0gdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgIyBLaWxsaW5nIGEgaGFuZ2luZyBwcm9jZXNzIG9ubHkgd29ya3Mgd2hlbiBub3QgdXNpbmcgYSBzaGVsbD8hCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbJ3NsZWVwJywgJzYwJ10sIHRpbWVvdXQ9c2VsZi5USU1FT1VULCBpZ25vcmVfc3RhdHVzPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgLXNpZ25hbC5TSUdURVJNKQorICAgICAgICBlbmQgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZW5kIC0gc3RhcnQsIHNlbGYuVElNRU9VVCArIHNlbGYuREVMVEEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtdGhyZWFkcywgdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpKQorCisgICAgQE9FVGVzdElEKDE5MTgpCisgICAgZGVmIHRlc3Rfc3RkaW4oc2VsZik6CisgICAgICAgIG51bXRocmVhZHMgPSB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJjYXQiLCBkYXRhPWIiaGVsbG8gd29ybGQiLCB0aW1lb3V0PXNlbGYuVElNRU9VVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaGVsbG8gd29ybGQiLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bXRocmVhZHMsIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSkKKworICAgIEBPRVRlc3RJRCgxOTE5KQorICAgIGRlZiB0ZXN0X3N0ZGluX3RpbWVvdXQoc2VsZik6CisgICAgICAgIG51bXRocmVhZHMgPSB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoWydzbGVlcCcsICc2MCddLCBkYXRhPWIiaGVsbG8gd29ybGQiLCB0aW1lb3V0PXNlbGYuVElNRU9VVCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIC1zaWduYWwuU0lHVEVSTSkKKyAgICAgICAgZW5kID0gdGltZS50aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGVuZCAtIHN0YXJ0LCBzZWxmLlRJTUVPVVQgKyBzZWxmLkRFTFRBKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bXRocmVhZHMsIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSkKKworICAgIEBPRVRlc3RJRCgxOTA4KQorICAgIGRlZiB0ZXN0X2xvZyhzZWxmKToKKyAgICAgICAgbG9nID0gTWVtTG9nZ2VyKCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJlY2hvIHN0ZG91dDsgZWNobyBzdGRlcnIgPiYyIiwgc2hlbGw9VHJ1ZSwgb3V0cHV0X2xvZz1sb2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyJSdW5uaW5nOiBlY2hvIHN0ZG91dDsgZWNobyBzdGRlcnIgPiYyIiwgInN0ZG91dCIsICJzdGRlcnIiXSwgbG9nLmluZm9fbXNncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgbG9nLmVycm9yX21zZ3MpCisKKyAgICBAT0VUZXN0SUQoMTkwOSkKKyAgICBkZWYgdGVzdF9sb2dfc3BsaXQoc2VsZik6CisgICAgICAgIGxvZyA9IE1lbUxvZ2dlcigpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZWNobyBzdGRvdXQ7IGVjaG8gc3RkZXJyID4mMiIsIHNoZWxsPVRydWUsIG91dHB1dF9sb2c9bG9nLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsiUnVubmluZzogZWNobyBzdGRvdXQ7IGVjaG8gc3RkZXJyID4mMiIsICJzdGRvdXQiXSwgbG9nLmluZm9fbXNncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbInN0ZGVyciJdLCBsb2cuZXJyb3JfbXNncykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZDQxZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CkBAIC0wLDAgKzEsMTM4IEBACisjCisjIENvcHlyaWdodCAoYykgMjAxNyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKworaW1wb3J0IHJlCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgcnVucWVtdSwgZ2V0X2JiX3ZhcgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIFJ1bnFlbXVUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICIiIlJ1bnFlbXUgdGVzdCBjbGFzcyIiIgorCisgICAgaW1hZ2VfaXNfcmVhZHkgPSBGYWxzZQorICAgIGRlcGxveV9kaXJfaW1hZ2UgPSAnJworICAgICMgV2Ugb25seSB3YW50IHRvIHByaW50IHJ1bnFlbXUgc3Rkb3V0L3N0ZGVyciBpZiB0aGVyZSBpcyBhIHRlc3QgY2FzZSBmYWlsdXJlCisgICAgYnVmZmVyID0gVHJ1ZQorCisgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CisgICAgICAgIHN1cGVyKFJ1bnFlbXVUZXN0cywgc2VsZikuc2V0VXBMb2NhbCgpCisgICAgICAgIHNlbGYucmVjaXBlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgc2VsZi5tYWNoaW5lID0gICdxZW11eDg2LTY0JworICAgICAgICBzZWxmLmZzdHlwZXMgPSAiZXh0NCBpc28gaGRkaW1nIHdpYy52bWRrIHdpYy5xY293MiB3aWMudmRpIgorICAgICAgICBzZWxmLmNtZF9jb21tb24gPSAicnVucWVtdSBub2dyYXBoaWMiCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoCisiIiIKK01BQ0hJTkUgPSAiJXMiCitJTUFHRV9GU1RZUEVTID0gIiVzIgorIyAxMCBtZWFucyAxIHNlY29uZAorU1lTTElOVVhfVElNRU9VVCA9ICIxMCIKKyIiIgorJSAoc2VsZi5tYWNoaW5lLCBzZWxmLmZzdHlwZXMpCisgICAgICAgICkKKworICAgICAgICBpZiBub3QgUnVucWVtdVRlc3RzLmltYWdlX2lzX3JlYWR5OgorICAgICAgICAgICAgUnVucWVtdVRlc3RzLmRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKKyAgICAgICAgICAgIGJpdGJha2Uoc2VsZi5yZWNpcGUpCisgICAgICAgICAgICBSdW5xZW11VGVzdHMuaW1hZ2VfaXNfcmVhZHkgPSBUcnVlCisKKyAgICBAT0VUZXN0SUQoMjAwMSkKKyAgICBkZWYgdGVzdF9ib290X21hY2hpbmUoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDAyKQorICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZV9leHQ0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSBleHQ0IiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyBleHQ0IiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Jvb3Rmcy5leHQ0JyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDMpCisgICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lX2lzbyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUgaXNvIiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyBpc28iICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbWVkaWE9Y2Ryb20nIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwNCkKKyAgICBkZWYgdGVzdF9ib290X3JlY2lwZV9pbWFnZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IHJlY2lwZS1pbWFnZSIiIgorICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5yZWNpcGUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDA1KQorICAgIGRlZiB0ZXN0X2Jvb3RfcmVjaXBlX2ltYWdlX3ZtZGsoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSByZWNpcGUtaW1hZ2Ugdm1kayIiIgorICAgICAgICBjbWQgPSAiJXMgJXMgd2ljLnZtZGsiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5yZWNpcGUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmb3JtYXQ9dm1kaycgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDA2KQorICAgIGRlZiB0ZXN0X2Jvb3RfcmVjaXBlX2ltYWdlX3ZkaShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IHJlY2lwZS1pbWFnZSB2ZGkiIiIKKyAgICAgICAgY21kID0gIiVzICVzIHdpYy52ZGkiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5yZWNpcGUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmb3JtYXQ9dmRpJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDcpCisgICAgZGVmIHRlc3RfYm9vdF9kZXBsb3koc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSBkZXBsb3lfZGlyX2ltYWdlIiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLmRlcGxveV9kaXJfaW1hZ2UpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDA4KQorICAgIGRlZiB0ZXN0X2Jvb3RfZGVwbG95X2hkZGltZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IGRlcGxveV9kaXJfaW1hZ2UgaGRkaW1nIiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyBoZGRpbWciICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5kZXBsb3lfZGlyX2ltYWdlKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2goJ2ZpbGU9LiouaGRkaW1nJywgZi5yZWFkKCkpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwOSkKKyAgICBkZWYgdGVzdF9ib290X21hY2hpbmVfc2xpcnAoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIHNsaXJwIiIiCisgICAgICAgIGNtZCA9ICIlcyBzbGlycCAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcgLW5ldGRldiB1c2VyJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDkpCisgICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lX3NsaXJwX3Fjb3cyKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSBzbGlycCBxY293MiIiIgorICAgICAgICBjbWQgPSAiJXMgc2xpcnAgd2ljLnFjb3cyICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Zvcm1hdD1xY293MicgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDEwKQorICAgIGRlZiB0ZXN0X2Jvb3RfcWVtdV9ib290KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgL3BhdGgvdG8vaW1hZ2UucWVtdWJvb3QuY29uZiIiIgorICAgICAgICBxZW11Ym9vdF9jb25mID0gIiVzLSVzLnFlbXVib290LmNvbmYiICUgKHNlbGYucmVjaXBlLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHFlbXVib290X2NvbmYgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyX2ltYWdlLCBxZW11Ym9vdF9jb25mKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocWVtdWJvb3RfY29uZik6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIlcyBub3QgZm91bmQiICUgcWVtdWJvb3RfY29uZikKKyAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHFlbXVib290X2NvbmYpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDExKQorICAgIGRlZiB0ZXN0X2Jvb3Rfcm9vdGZzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgL3BhdGgvdG8vcm9vdGZzLmV4dDQiIiIKKyAgICAgICAgcm9vdGZzID0gIiVzLSVzLmV4dDQiICUgKHNlbGYucmVjaXBlLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHJvb3RmcyA9IG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXJfaW1hZ2UsIHJvb3RmcykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJvb3Rmcyk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIlcyBub3QgZm91bmQiICUgcm9vdGZzKQorICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgcm9vdGZzKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUyNzBiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQpAQCAtMCwwICsxLDI2NyBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBydW5xZW11Citmcm9tIG9lcWEudXRpbHMuc3NoY29udHJvbCBpbXBvcnQgU1NIQ29udHJvbAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc2h1dGlsCisKK2NsYXNzIFRlc3RFeHBvcnQoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHJ1bkNtZCgicm0gLXJmIC90bXAvc2RrIikKKyAgICAgICAgc3VwZXIoVGVzdEV4cG9ydCwgY2xzKS50ZWFyRG93bkNsYXNzKCkKKworICAgIEBPRVRlc3RJRCgxNDk5KQorICAgIGRlZiB0ZXN0X3Rlc3RleHBvcnRfYmFzaWMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBDaGVjayBiYXNpYyB0ZXN0ZXhwb3J0IGZ1bmN0aW9uYWxpdHkgd2l0aCBvbmx5IHBpbmcgdGVzdCBlbmFibGVkLgorICAgICAgICBFeHBlY3RlZDogMS4gdGVzdGV4cG9ydCBkaXJlY3RvcnkgbXVzdCBiZSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgMi4gcnVuZXhwb3J0ZWQucHkgbXVzdCBydW4gd2l0aG91dCBhbnkgZXJyb3IvZXhjZXB0aW9uLgorICAgICAgICAgICAgICAgICAgMy4gcGluZyB0ZXN0IG11c3Qgc3VjY2VlZC4KKyAgICAgICAgUHJvZHVjdDogb2UtY29yZQorICAgICAgICBBdXRob3I6IE1hcmlhbm8gTG9wZXogPG1hcmlhbm8ubG9wZXpAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0ZXhwb3J0IlxuJworICAgICAgICAjIFRoZXNlIGFyZW4ndCB0aGUgYWN0dWFsIElQIGFkZHJlc3NlcyBidXQgdGVzdGV4cG9ydCBjbGFzcyBuZWVkcyBzb21ldGhpbmcgZGVmaW5lZAorICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TRVJWRVJfSVAgPSAiMTkyLjE2OC43LjEiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1RBUkdFVF9JUCA9ICIxOTIuMTY4LjcuMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU1VJVEVTID0gInBpbmciXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICMgQnVpbGQgdGVzZXhwb3J0IGZvciBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgYml0YmFrZSgnLWMgdGVzdGV4cG9ydCBjb3JlLWltYWdlLW1pbmltYWwnKQorCisgICAgICAgIHRlc3RleHBvcnRfZGlyID0gZ2V0X2JiX3ZhcignVEVTVF9FWFBPUlRfRElSJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgIyBWZXJpZnkgaWYgVEVTVF9FWFBPUlRfRElSIHdhcyBjcmVhdGVkCisgICAgICAgIGlzZGlyID0gb3MucGF0aC5pc2Rpcih0ZXN0ZXhwb3J0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpc2RpciwgJ0ZhaWxlZCB0byBjcmVhdGUgdGVzdGV4cG9ydCBkaXI6ICVzJyAlIHRlc3RleHBvcnRfZGlyKQorCisgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKKyAgICAgICAgICAgICMgQXR0ZW1wdCB0byBydW4gcnVuZXhwb3J0ZWQucHkgdG8gcGVyZm9ybSBwaW5nIHRlc3QKKyAgICAgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbih0ZXN0ZXhwb3J0X2RpciwgIm9lLXRlc3QiKQorICAgICAgICAgICAgZGF0YV9maWxlID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAnZGF0YScsICd0ZXN0ZGF0YS5qc29uJykKKyAgICAgICAgICAgIG1hbmlmZXN0ID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAnZGF0YScsICdtYW5pZmVzdCcpCisgICAgICAgICAgICBjbWQgPSAoIiVzIHJ1bnRpbWUgLS10ZXN0LWRhdGEtZmlsZSAlcyAtLXBhY2thZ2VzLW1hbmlmZXN0ICVzICIKKyAgICAgICAgICAgICAgICAgICAiLS10YXJnZXQtaXAgJXMgLS1zZXJ2ZXItaXAgJXMgLS1xdWlldCIKKyAgICAgICAgICAgICAgICAgICUgKHRlc3RfcGF0aCwgZGF0YV9maWxlLCBtYW5pZmVzdCwgcWVtdS5pcCwgcWVtdS5zZXJ2ZXJfaXApKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCkKKyAgICAgICAgICAgICMgVmVyaWZ5IHBpbmcgdGVzdCB3YXMgc3VjY2VzZnVsCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICdvZS10ZXN0IHJ1bnRpbWUgcmV0dXJuZWQgYSBub24gMCBzdGF0dXMnKQorCisgICAgQE9FVGVzdElEKDE2NDEpCisgICAgZGVmIHRlc3RfdGVzdGV4cG9ydF9zZGsoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBDaGVjayBzZGsgZnVuY3Rpb25hbGl0eSBmb3IgdGVzdGV4cG9ydC4KKyAgICAgICAgRXhwZWN0ZWQ6IDEuIHRlc3RleHBvcnQgZGlyZWN0b3J5IG11c3QgYmUgY3JlYXRlZC4KKyAgICAgICAgICAgICAgICAgIDIuIFNESyB0YXJiYWxsIG11c3QgZXhpc3RzLgorICAgICAgICAgICAgICAgICAgMy4gVW5jb21wcmVzc2luZyBvZiB0YXJiYWxsIG11c3Qgc3VjY2VlZC4KKyAgICAgICAgICAgICAgICAgIDQuIENoZWNrIGlmIHRoZSBTREsgZGlyZWN0b3J5IGlzIGFkZGVkIHRvIFBBVEguCisgICAgICAgICAgICAgICAgICA1LiBSdW4gdGFyIGZyb20gdGhlIFNESyBkaXJlY3RvcnkuCisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGV4cG9ydCJcbicKKyAgICAgICAgIyBUaGVzZSBhcmVuJ3QgdGhlIGFjdHVhbCBJUCBhZGRyZXNzZXMgYnV0IHRlc3RleHBvcnQgY2xhc3MgbmVlZHMgc29tZXRoaW5nIGRlZmluZWQKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU0VSVkVSX0lQID0gIjE5Mi4xNjguNy4xIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9UQVJHRVRfSVAgPSAiMTkyLjE2OC43LjEiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9FWFBPUlRfU0RLX0VOQUJMRUQgPSAiMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfRVhQT1JUX1NES19QQUNLQUdFUyA9ICJuYXRpdmVzZGstdGFyIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAjIEJ1aWxkIHRlc2V4cG9ydCBmb3IgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGJpdGJha2UoJy1jIHRlc3RleHBvcnQgY29yZS1pbWFnZS1taW5pbWFsJykKKworICAgICAgICBuZWVkZWRfdmFycyA9IFsnVEVTVF9FWFBPUlRfRElSJywgJ1RFU1RfRVhQT1JUX1NES19ESVInLCAnVEVTVF9FWFBPUlRfU0RLX05BTUUnXQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMobmVlZGVkX3ZhcnMsICdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICB0ZXN0ZXhwb3J0X2RpciA9IGJiX3ZhcnNbJ1RFU1RfRVhQT1JUX0RJUiddCisgICAgICAgIHNka19kaXIgPSBiYl92YXJzWydURVNUX0VYUE9SVF9TREtfRElSJ10KKyAgICAgICAgc2RrX25hbWUgPSBiYl92YXJzWydURVNUX0VYUE9SVF9TREtfTkFNRSddCisKKyAgICAgICAgIyBDaGVjayBmb3IgU0RLCisgICAgICAgIHRhcmJhbGxfbmFtZSA9ICIlcy5zaCIgJSBzZGtfbmFtZQorICAgICAgICB0YXJiYWxsX3BhdGggPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsIHNka19kaXIsIHRhcmJhbGxfbmFtZSkKKyAgICAgICAgbXNnID0gIkNvdWxkbid0IGZpbmQgU0RLIHRhcmJhbGw6ICVzIiAlIHRhcmJhbGxfcGF0aAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguaXNmaWxlKHRhcmJhbGxfcGF0aCksIFRydWUsIG1zZykKKworICAgICAgICAjIEV4dHJhY3QgU0RLIGFuZCBydW4gdGFyIGZyb20gU0RLCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiJXMgLXkgLWQgL3RtcC9zZGsiICUgdGFyYmFsbF9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJDb3VsZG4ndCBleHRyYWN0IFNESyIpCisKKyAgICAgICAgZW52X3NjcmlwdCA9IHJlc3VsdC5vdXRwdXQuc3BsaXQoKVstMV0KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCIuICVzOyB3aGljaCB0YXIiICUgZW52X3NjcmlwdCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiQ291bGRuJ3Qgc2V0dXAgU0RLIGVudmlyb25tZW50IikKKyAgICAgICAgaXNfc2RrX3RhciA9IFRydWUgaWYgIi90bXAvc2RrIiBpbiByZXN1bHQub3V0cHV0IGVsc2UgRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3Nka190YXIsICJDb3VsZG4ndCBzZXR1cCBTREsgZW52aXJvbm1lbnQiKQorCisgICAgICAgIHRhcl9zZGsgPSByZXN1bHQub3V0cHV0CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiJXMgLS12ZXJzaW9uIiAlIHRhcl9zZGspCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgIkNvdWxkbid0IHJ1biB0YXIgZnJvbSBTREsiKQorCisKK2NsYXNzIFRlc3RJbWFnZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQE9FVGVzdElEKDE2NDQpCisgICAgZGVmIHRlc3RfdGVzdGltYWdlX2luc3RhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBDaGVjayBpbnN0YWxsIHBhY2thZ2VzIGZ1bmN0aW9uYWxpdHkgZm9yIHRlc3RpbWFnZS90ZXN0ZXhwb3J0LgorICAgICAgICBFeHBlY3RlZDogMS4gSW1wb3J0IHRlc3RzIGZyb20gYSBkaXJlY3Rvcnkgb3RoZXIgdGhhbiBtZXRhLgorICAgICAgICAgICAgICAgICAgMi4gQ2hlY2sgaW5zdGFsbC91bmluc3RhbGwgb2Ygc29jYXQuCisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGdldF9iYl92YXIoJ0RJU1RSTycpID09ICdwb2t5LXRpbnknOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgbm90IGJ1aWxkYWJsZSBmb3IgcG9reS10aW55JykKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIHNzaCBzZWxmdGVzdCJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgIyBCdWlsZCBjb3JlLWltYWdlLXNhdG8gYW5kIHRlc3RpbWFnZQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBzb2NhdCcpCisgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLWZ1bGwtY21kbGluZScpCisKKyAgICBAT0VUZXN0SUQoMTg4MykKKyAgICBkZWYgdGVzdF90ZXN0aW1hZ2VfZG5mKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgcGFja2FnZSBmZWVkcyBmdW5jdGlvbmFsaXR5IGZvciBkbmYKKyAgICAgICAgRXhwZWN0ZWQ6IDEuIENoZWNrIHRoYXQgcmVtb3RlIHBhY2thZ2UgZmVlZHMgY2FuIGJlIGFjY2Vzc2VkCisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZ2V0X2JiX3ZhcignRElTVFJPJykgPT0gJ3Bva3ktdGlueSc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBub3QgYnVpbGRhYmxlIGZvciBwb2t5LXRpbnknKQorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU1VJVEVTID0gInBpbmcgc3NoIGRuZl9ydW50aW1lIGRuZi5EbmZCYXNpY1Rlc3QudGVzdF9kbmZfaGVscCJcbicKKyAgICAgICAgIyBXZSBkb24ndCB5ZXQga25vdyB3aGF0IHRoZSBzZXJ2ZXIgaXAgYW5kIHBvcnQgd2lsbCBiZSAtIHRoZXkgd2lsbCBiZSBwYXRjaGVkCisgICAgICAgICMgaW4gYXQgdGhlIHN0YXJ0IG9mIHRoZSBvbi1pbWFnZSB0ZXN0CisgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0ZFRURfVVJJUyA9ICJodHRwOi8vYm9ndXNfaXA6Ym9ndXNfcG9ydCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTICs9ICJwYWNrYWdlLW1hbmFnZW1lbnQiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV9ycG0iXG4nCisKKyAgICAgICAgIyBFbmFibGUgcGFja2FnZSBmZWVkIHNpZ25pbmcKKyAgICAgICAgc2VsZi5ncGdfaG9tZSA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSJvZXFhLWZlZWQtc2lnbi0iKQorICAgICAgICBzaWduaW5nX2tleV9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ2ZpbGVzJywgJ3NpZ25pbmcnKQorICAgICAgICBydW5DbWQoJ2dwZyAtLWJhdGNoIC0taG9tZWRpciAlcyAtLWltcG9ydCAlcycgJSAoc2VsZi5ncGdfaG9tZSwgb3MucGF0aC5qb2luKHNpZ25pbmdfa2V5X2RpciwgJ2tleS5zZWNyZXQnKSkpCisgICAgICAgIGZlYXR1cmVzICs9ICdJTkhFUklUICs9ICJzaWduX3BhY2thZ2VfZmVlZCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfRkVFRF9HUEdfTkFNRSA9ICJ0ZXN0dXNlciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfRkVFRF9HUEdfUEFTU1BIUkFTRV9GSUxFID0gIiVzIlxuJyAlIG9zLnBhdGguam9pbihzaWduaW5nX2tleV9kaXIsICdrZXkucGFzc3BocmFzZScpCisgICAgICAgIGZlYXR1cmVzICs9ICdHUEdfUEFUSCA9ICIlcyJcbicgJSBzZWxmLmdwZ19ob21lCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICMgQnVpbGQgY29yZS1pbWFnZS1zYXRvIGFuZCB0ZXN0aW1hZ2UKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgc29jYXQnKQorICAgICAgICBiaXRiYWtlKCctYyB0ZXN0aW1hZ2UgY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUnKQorCisgICAgICAgICMgcmVtb3ZlIHRoZSBvZXFhLWZlZWQtc2lnbiB0ZW1wb3JhbCBkaXJlY3RvcnkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmdwZ19ob21lLCBpZ25vcmVfZXJyb3JzPVRydWUpCisKK2NsYXNzIFBvc3RpbnN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgQE9FVGVzdElEKDE1NDApCisgICAgZGVmIHRlc3RfdmVyaWZ5X3Bvc3RpbnN0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGlzIHRvIHZlcmlmeSB0aGUgZXhlY3V0aW9uIG9yZGVyIG9mIHBvc3RpbnN0IEJ1Z3ppbGxhIElEOiBbNTMxOV0KKyAgICAgICAgRXhwZWN0ZWQgOgorICAgICAgICAxLiBDb21waWxlIGEgbWluaW1hbCBpbWFnZS4KKyAgICAgICAgMi4gVGhlIGNvbXBpbGVkIGltYWdlIHdpbGwgYWRkIHRoZSBjcmVhdGVkIGxheWVyIHdpdGggdGhlIHJlY2lwZXMgcG9zdGluc3RbIGFiZHB0XQorICAgICAgICAzLiBSdW4gcWVtdXg4NgorICAgICAgICA0LiBWYWxpZGF0ZSB0aGUgdGFzayBleGVjdXRpb24gb3JkZXIKKyAgICAgICAgQXV0aG9yOiBGcmFuY2lzY28gUGVkcmF6YSA8ZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgKz0gInBvc3RpbnN0LWF0LXJvb3RmcyBcCitwb3N0aW5zdC1kZWxheWVkLWEgXAorcG9zdGluc3QtZGVsYXllZC1iIFwKK3Bvc3RpbnN0LWRlbGF5ZWQtZCBcCitwb3N0aW5zdC1kZWxheWVkLXAgXAorcG9zdGluc3QtZGVsYXllZC10IFwKKyJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIC1mICcpCisKKyAgICAgICAgcG9zdGluc3RfbGlzdCA9IFsnMTAwLXBvc3RpbnN0LWF0LXJvb3RmcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMS1wb3N0aW5zdC1kZWxheWVkLWEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMDItcG9zdGluc3QtZGVsYXllZC1iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTAzLXBvc3RpbnN0LWRlbGF5ZWQtZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEwNC1wb3N0aW5zdC1kZWxheWVkLXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMDUtcG9zdGluc3QtZGVsYXllZC10J10KKyAgICAgICAgcGF0aF93b3JrZGlyID0gZ2V0X2JiX3ZhcignV09SS0RJUicsJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIHdvcmtzcGFjZWRpciA9ICd0ZXN0aW1hZ2UvcWVtdV9ib290X2xvZycKKyAgICAgICAgd29ya3NwYWNlZGlyID0gb3MucGF0aC5qb2luKHBhdGhfd29ya2Rpciwgd29ya3NwYWNlZGlyKQorICAgICAgICByZXhwID0gcmUuY29tcGlsZSgiXlJ1bm5pbmcgcG9zdGluc3QgLiovKD9QPHBvc3RpbnN0Pi4qKVwuXC5cLiQiKQorICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6CisgICAgICAgICAgICB3aXRoIG9wZW4od29ya3NwYWNlZGlyKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgICAgICBpZHggPSAwCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKS5yZXBsYWNlKCJeTSIsIiIpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiAjIFRvIGF2b2lkIGVtcHR5IGxpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBtID0gcmV4cC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zdGluc3RfbGlzdFtpZHhdLCBtLmdyb3VwKCdwb3N0aW5zdCcpLCAiRmFpbCIpCisgICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBpZHgrMQorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGVsaWYgZm91bmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkeCwgbGVuKHBvc3RpbnN0X2xpc3QpLCAiTm90IGZvdW5kIGFsbCBwb3N0aW5zdHMiKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIEBPRVRlc3RJRCgxNTQ1KQorICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgY2FzZSBpcyB0byB2ZXJpZnkgUG9zdC1pbnN0YWxsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMgYXJlIGNhbGxlZCB3aGVuIHJvb3RmcyBpcyBjcmVhdGVkIGFuZCBhbHNvIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2NyaXB0IGNhbiBiZSBkZWxheWVkIHRvIHJ1biBhdCBmaXJzdCBib290LgorICAgICAgICBEZXBlbmRlbmNpZXM6ICAgTkEKKyAgICAgICAgU3RlcHM6ICAgICAgICAgIDEuIEFkZCBwcm9wZXIgY29uZmlndXJhdGlvbiB0byBsb2NhbC5jb25mIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDIuIEJ1aWxkIGEgImNvcmUtaW1hZ2UtbWluaW1hbCIgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDMuIFZlcmlmeSB0aGF0IGZpbGUgY3JlYXRlZCBieSBwb3N0aW5zdF9yb290ZnMgcmVjaXBlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50IG9uIHJvb3RmcyBkaXIuCisgICAgICAgICAgICAgICAgICAgICAgICA0LiBCb290IHRoZSBpbWFnZSBjcmVhdGVkIG9uIHFlbXUgYW5kIHZlcmlmeSB0aGF0IHRoZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IHBvc3RpbnN0X2Jvb3QgcmVjaXBlIGlzIHByZXNlbnQgb24gaW1hZ2UuCisgICAgICAgIEV4cGVjdGVkOiAgICAgICBUaGUgZmlsZXMgYXJlIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGR1cmluZyByb290ZnMgYW5kIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgZm9yIDMgZGlmZmVyZW50IHBhY2thZ2UgbWFuYWdlcnM6IHJwbSxpcGssZGViIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluaXRpYWxpemF0aW9uIG1hbmFnZXJzOiBzeXN2aW5pdCBhbmQgc3lzdGVtZC4KKworICAgICAgICAiIiIKKyAgICAgICAgZmlsZV9yb290ZnNfbmFtZSA9ICJ0aGlzLXdhcy1jcmVhdGVkLWF0LXJvb3Rmc3RpbWUiCisgICAgICAgIGZpbGVib290X25hbWUgPSAidGhpcy13YXMtY3JlYXRlZC1hdC1maXJzdC1ib290IgorICAgICAgICByb290ZnNfcGtnID0gJ3Bvc3RpbnN0LWF0LXJvb3RmcycKKyAgICAgICAgYm9vdF9wa2cgPSAncG9zdGluc3QtZGVsYXllZC1hJworCisgICAgICAgIGZvciBpbml0X21hbmFnZXIgaW4gKCJzeXN2aW5pdCIsICJzeXN0ZW1kIik6CisgICAgICAgICAgICBmb3IgY2xhc3NlcyBpbiAoInBhY2thZ2VfcnBtIiwgInBhY2thZ2VfZGViIiwgInBhY2thZ2VfaXBrIik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaW5pdF9tYW5hZ2VyPWluaXRfbWFuYWdlciwgcGFja2FnZV9jbGFzcz1jbGFzc2VzKToKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAnTUFDSElORSA9ICJxZW11eDg2IlxuJworICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICIlcyAlcyAiXG4nJSAocm9vdGZzX3BrZywgYm9vdF9wa2cpCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GRUFUVVJFUyArPSAicGFja2FnZS1tYW5hZ2VtZW50IGVtcHR5LXJvb3QtcGFzc3dvcmQiXG4nCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAiJXMiXG4nICUgY2xhc3NlcworICAgICAgICAgICAgICAgICAgICBpZiBpbml0X21hbmFnZXIgPT0gInN5c3RlbWQiOgorICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHN5c3RlbWQiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlciA9ICJzeXN0ZW1kIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEID0gInN5c3Zpbml0IlxuJworICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0c2NyaXB0cyA9ICIiXG4nCisgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgICAgICAgICAgICAgZmlsZV9yb290ZnNfY3JlYXRlZCA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdJTUFHRV9ST09URlMnLCAiY29yZS1pbWFnZS1taW5pbWFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9yb290ZnNfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBvcy5wYXRoLmlzZmlsZShmaWxlX3Jvb3Rmc19jcmVhdGVkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJGaWxlICVzIHdhcyBub3QgY3JlYXRlZCBhdCByb290ZnMgdGltZSBieSAlcyIgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZV9yb290ZnNfbmFtZSwgcm9vdGZzX3BrZykpCisKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNvbW1hbmQgPSAnbHMgL2V0Yy8nICsgZmlsZWJvb3RfbmFtZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgiLWYgL2V0Yy8iICsgZmlsZWJvb3RfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAnRmlsZSAlcyB3YXMgbm90IGNyZWF0ZWQgYXQgZmlyc3QgYm9vdCAoJXMpJyAlIChmaWxlYm9vdF9uYW1lLCBvdXRwdXQpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2VsZnRlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zZWxmdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjNjYjE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2VsZnRlc3QucHkKQEAgLTAsMCArMSw1MSBAQAoraW1wb3J0IGltcG9ydGxpYgorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQKK2ltcG9ydCBvZXFhLnNlbGZ0ZXN0Citmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgRXh0ZXJuYWxMYXllcihPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQE9FVGVzdElEKDE4ODUpCisgICAgZGVmIHRlc3RfbGlzdF9pbXBvcnRlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IENoZWNrcyBmdW5jdGlvbmFsaXR5IHRvIGltcG9ydCB0ZXN0cyBmcm9tIG90aGVyIGxheWVycy4KKyAgICAgICAgRXhwZWN0ZWQ6IDEuIEZpbGUgImV4dGVybmFsLWxheWVyLnB5IiBtdXN0IGJlIGluCisgICAgICAgIG9lcWEuc2VsZnRlc3QuX19wYXRoX18KKyAgICAgICAgICAgICAgICAgIDIuIHRlc3RfdW5jb25kaXRpb25hbF9wYXMgbWV0aG9kIG11c3QgZXhpc3RzCisgICAgICAgICAgICAgICAgICAgICBpbiBJbXBvcnRlZFRlc3RzIGNsYXNzCisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9maWxlID0gImV4dGVybmFsLWxheWVyLnB5IgorICAgICAgICB0ZXN0X21vZHVsZSA9ICJvZXFhLnNlbGZ0ZXN0LmNhc2VzLmV4dGVybmFsLWxheWVyIgorICAgICAgICBtZXRob2RfbmFtZSA9ICJ0ZXN0X3VuY29uZGl0aW9uYWxfcGFzcyIKKworICAgICAgICAjIENoZWNrIGlmICJleHRlcm5hbC1sYXllci5weSIgaXMgaW4gb2VxYSBwYXRoCisgICAgICAgIGZvdW5kX2ZpbGUgPSBzZWFyY2hfdGVzdF9maWxlKHRlc3RfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kX2ZpbGUsIG1zZz0iQ2FuJ3QgZmluZCAlcyBpbiB0aGUgb2VxYSBwYXRoIiAlIHRlc3RfZmlsZSkKKworICAgICAgICAjIEltcG9ydCBvZXFhLnNlbGZ0ZXN0LmV4dGVybmFsLWxheWVyIG1vZHVsZSBhbmQgc2VhcmNoIGZvcgorICAgICAgICAjIHRlc3RfdW5jb25kaXRpb25hbF9wYXNzIG1ldGhvZCBvZiBJbXBvcnRlZFRlc3RzIGNsYXNzCisgICAgICAgIGZvdW5kX21ldGhvZCA9IHNlYXJjaF9tZXRob2QodGVzdF9tb2R1bGUsIG1ldGhvZF9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0aG9kX25hbWUsIG1zZz0iQ2FuJ3QgZmluZCAlcyBtZXRob2QiICUgbWV0aG9kX25hbWUpCisKK2RlZiBzZWFyY2hfdGVzdF9maWxlKGZpbGVfbmFtZSk6CisgICAgZm9yIGxheWVyX3BhdGggaW4gb2VxYS5zZWxmdGVzdC5fX3BhdGhfXzoKKyAgICAgICAgZm9yIF8sIF8sIGZpbGVzIGluIG9zLndhbGsobGF5ZXJfcGF0aCk6CisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBpZiBmID09IGZpbGVfbmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIHNlYXJjaF9tZXRob2QobW9kdWxlLCBtZXRob2QpOgorICAgIG1vZGxpYiA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZHVsZSkKKyAgICBmb3IgdmFyIGluIHZhcnMobW9kbGliKToKKyAgICAgICAga2xhc3MgPSB2YXJzKG1vZGxpYilbdmFyXQorICAgICAgICBpZiBpc2luc3RhbmNlKGtsYXNzLCB0eXBlKE9FU2VsZnRlc3RUZXN0Q2FzZSkpIGFuZCBpc3N1YmNsYXNzKGtsYXNzLCBPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICAgICAgICAgZm9yIG0gaW4gZGlyKGtsYXNzKToKKyAgICAgICAgICAgICAgICBpZiBtID09IG1ldGhvZDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNkMWE4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKQEAgLTAsMCArMSwxODcgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycworaW1wb3J0IG9zCitpbXBvcnQgZ2xvYgoraW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLnV0aWxzLmZ0b29scyBpbXBvcnQgd3JpdGVfZmlsZQorCisKK2NsYXNzIFNpZ25pbmcoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIGdwZ19kaXIgPSAiIgorICAgIHB1Yl9rZXlfcGF0aCA9ICIiCisgICAgc2VjcmV0X2tleV9wYXRoID0gIiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKFNpZ25pbmcsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBjYW4gZmluZCB0aGUgZ3BnIGJpbmFyeSBhbmQgZmFpbCBlYXJseSBpZiB3ZSBjYW4ndAorICAgICAgICBpZiBub3Qgc2h1dGlsLndoaWNoKCJncGciKToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJUaGlzIHRlc3QgbmVlZHMgR251UEciKQorCisgICAgICAgIGNscy5ncGdfZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9Im9lcWEtc2lnbmluZy0iKQorCisgICAgICAgIGNscy5wdWJfa2V5X3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRlc3RsYXllcl9wYXRoLCAnZmlsZXMnLCAnc2lnbmluZycsICJrZXkucHViIikKKyAgICAgICAgY2xzLnNlY3JldF9rZXlfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGVzdGxheWVyX3BhdGgsICdmaWxlcycsICdzaWduaW5nJywgImtleS5zZWNyZXQiKQorCisgICAgICAgIHJ1bkNtZCgnZ3BnIC0tYmF0Y2ggLS1ob21lZGlyICVzIC0taW1wb3J0ICVzICVzJyAlIChjbHMuZ3BnX2RpciwgY2xzLnB1Yl9rZXlfcGF0aCwgY2xzLnNlY3JldF9rZXlfcGF0aCkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzaHV0aWwucm10cmVlKGNscy5ncGdfZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCisKKyAgICBAT0VUZXN0SUQoMTM2MikKKyAgICBkZWYgdGVzdF9zaWduaW5nX3BhY2thZ2VzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBwYWNrYWdlcyBjYW4gYmUgc2lnbmVkIGluIHRoZSBwYWNrYWdlIGZlZWQKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIFBhY2thZ2Ugc2hvdWxkIGJlIHNpZ25lZCB3aXRoIHRoZSBjb3JyZWN0IGtleQorICAgICAgICBFeHBlY3RlZDogICAgSW1hZ2VzIGNhbiBiZSBjcmVhdGVkIGZyb20gc2lnbmVkIHBhY2thZ2VzCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgaW1wb3J0IG9lLnBhY2thZ2VkYXRhCisKKyAgICAgICAgcGFja2FnZV9jbGFzc2VzID0gZ2V0X2JiX3ZhcignUEFDS0FHRV9DTEFTU0VTJykKKyAgICAgICAgaWYgJ3BhY2thZ2VfcnBtJyBub3QgaW4gcGFja2FnZV9jbGFzc2VzOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGhpcyB0ZXN0IHJlcXVpcmVzIFJQTSBQYWNrYWdpbmcuJykKKworICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKKworICAgICAgICBmZWF0dXJlID0gJ0lOSEVSSVQgKz0gInNpZ25fcnBtIlxuJworICAgICAgICBmZWF0dXJlICs9ICdSUE1fR1BHX1BBU1NQSFJBU0UgPSAidGVzdDEyMyJcbicKKyAgICAgICAgZmVhdHVyZSArPSAnUlBNX0dQR19OQU1FID0gInRlc3R1c2VyIlxuJworICAgICAgICBmZWF0dXJlICs9ICdHUEdfUEFUSCA9ICIlcyJcbicgJSBzZWxmLmdwZ19kaXIKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQorICAgICAgICBiaXRiYWtlKCctZiAtYyBwYWNrYWdlX3dyaXRlX3JwbSAlcycgJSB0ZXN0X3JlY2lwZSkKKworICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQorCisgICAgICAgIG5lZWRlZF92YXJzID0gWydQS0dEQVRBX0RJUicsICdERVBMT1lfRElSX1JQTScsICdQQUNLQUdFX0FSQ0gnLCAnU1RBR0lOR19CSU5ESVJfTkFUSVZFJ10KKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKG5lZWRlZF92YXJzLCB0ZXN0X3JlY2lwZSkKKyAgICAgICAgcGtnZGF0YWRpciA9IGJiX3ZhcnNbJ1BLR0RBVEFfRElSJ10KKyAgICAgICAgcGtnZGF0YSA9IG9lLnBhY2thZ2VkYXRhLnJlYWRfcGtnZGF0YWZpbGUocGtnZGF0YWRpciArICIvcnVudGltZS9lZCIpCisgICAgICAgIGlmICdQS0dFJyBpbiBwa2dkYXRhOgorICAgICAgICAgICAgcGYgPSBwa2dkYXRhWydQTiddICsgIi0iICsgcGtnZGF0YVsnUEtHRSddICsgcGtnZGF0YVsnUEtHViddICsgJy0nICsgcGtnZGF0YVsnUEtHUiddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwZiA9IHBrZ2RhdGFbJ1BOJ10gKyAiLSIgKyBwa2dkYXRhWydQS0dWJ10gKyAnLScgKyBwa2dkYXRhWydQS0dSJ10KKyAgICAgICAgZGVwbG95X2Rpcl9ycG0gPSBiYl92YXJzWydERVBMT1lfRElSX1JQTSddCisgICAgICAgIHBhY2thZ2VfYXJjaCA9IGJiX3ZhcnNbJ1BBQ0tBR0VfQVJDSCddLnJlcGxhY2UoJy0nLCAnXycpCisgICAgICAgIHN0YWdpbmdfYmluZGlyX25hdGl2ZSA9IGJiX3ZhcnNbJ1NUQUdJTkdfQklORElSX05BVElWRSddCisKKyAgICAgICAgcGtnX2RlcGxveSA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyX3JwbSwgcGFja2FnZV9hcmNoLCAnLicuam9pbigocGYsIHBhY2thZ2VfYXJjaCwgJ3JwbScpKSkKKworICAgICAgICAjIFVzZSBhIHRlbXBvcmFyeSBycG1kYgorICAgICAgICBycG1kYiA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZXFhLXJwbWRiJykKKworICAgICAgICBydW5DbWQoJyVzL3JwbWtleXMgLS1kZWZpbmUgIl9kYnBhdGggJXMiIC0taW1wb3J0ICVzJyAlCisgICAgICAgICAgICAgICAoc3RhZ2luZ19iaW5kaXJfbmF0aXZlLCBycG1kYiwgc2VsZi5wdWJfa2V5X3BhdGgpKQorCisgICAgICAgIHJldCA9IHJ1bkNtZCgnJXMvcnBta2V5cyAtLWRlZmluZSAiX2RicGF0aCAlcyIgLS1jaGVja3NpZyAlcycgJQorICAgICAgICAgICAgICAgICAgICAgKHN0YWdpbmdfYmluZGlyX25hdGl2ZSwgcnBtZGIsIHBrZ19kZXBsb3kpKQorICAgICAgICAjIHRtcC9kZXBsb3kvcnBtL2k1ODYvZWQtMS45LXIwLmk1ODYucnBtOiByc2Egc2hhMSBtZDUgT0sKKyAgICAgICAgc2VsZi5hc3NlcnRJbigncnNhIHNoYTEgKG1kNSkgcGdwIG1kNSBPSycsIHJldC5vdXRwdXQsICdQYWNrYWdlIHNpZ25lZCBpbmNvcnJlY3RseS4nKQorICAgICAgICBzaHV0aWwucm10cmVlKHJwbWRiKQorCisgICAgICAgICNDaGVjayB0aGF0IGFuIGltYWdlIGNhbiBiZSBidWlsdCBmcm9tIHNpZ25lZCBwYWNrYWdlcworICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIGNvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuIGNvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisKKworICAgIEBPRVRlc3RJRCgxMzgyKQorICAgIGRlZiB0ZXN0X3NpZ25pbmdfc3N0YXRlX2FyY2hpdmUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IHNzdGF0ZSBhcmNoaXZlcyBjYW4gYmUgc2lnbmVkCisgICAgICAgIEV4cGVjdGVkOiAgICBQYWNrYWdlIHNob3VsZCBiZSBzaWduZWQgd2l0aCB0aGUgY29ycmVjdCBrZXkKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCisKKyAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKQorICAgICAgICBzc3RhdGVkaXIgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICd0ZXN0LXNzdGF0ZScpCisKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzJyAlIHNzdGF0ZWRpcikKKworICAgICAgICBmZWF0dXJlID0gJ1NTVEFURV9TSUdfS0VZID89ICJ0ZXN0dXNlciJcbicKKyAgICAgICAgZmVhdHVyZSArPSAnU1NUQVRFX1NJR19QQVNTUEhSQVNFID89ICJ0ZXN0MTIzIlxuJworICAgICAgICBmZWF0dXJlICs9ICdTU1RBVEVfVkVSSUZZX1NJRyA/PSAiMSJcbicKKyAgICAgICAgZmVhdHVyZSArPSAnR1BHX1BBVEggPSAiJXMiXG4nICUgc2VsZi5ncGdfZGlyCisgICAgICAgIGZlYXR1cmUgKz0gJ1NTVEFURV9ESVIgPSAiJXMiXG4nICUgc3N0YXRlZGlyCisgICAgICAgICMgQW55IG1pcnJvciBtaWdodCBoYXZlIHBhcnRpYWwgc3N0YXRlIHdpdGhvdXQgLnNpZyBmaWxlcywgdHJpZ2dlcmluZyBmYWlsdXJlcworICAgICAgICBmZWF0dXJlICs9ICdTU1RBVEVfTUlSUk9SU19mb3JjZXZhcmlhYmxlID0gIiJcbicKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQorICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQorCisgICAgICAgIHJlY2lwZV9zaWcgPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyo6ZWQ6Kl9wYWNrYWdlLnRnei5zaWcnKQorICAgICAgICByZWNpcGVfdGd6ID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qOmVkOipfcGFja2FnZS50Z3onKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwZV9zaWcpLCAxLCAnRmFpbGVkIHRvIGZpbmQgLnNpZyBmaWxlLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwZV90Z3opLCAxLCAnRmFpbGVkIHRvIGZpbmQgLnRneiBmaWxlLicpCisKKyAgICAgICAgcmV0ID0gcnVuQ21kKCdncGcgLS1ob21lZGlyICVzIC0tdmVyaWZ5ICVzICVzJyAlIChzZWxmLmdwZ19kaXIsIHJlY2lwZV9zaWdbMF0sIHJlY2lwZV90Z3pbMF0pKQorICAgICAgICAjIGdwZzogU2lnbmF0dXJlIG1hZGUgVGh1IDIyIE9jdCAyMDE1IDAxOjQ1OjA5IFBNIEVFU1QgdXNpbmcgUlNBIGtleSBJRCA2MUVFRkIzMAorICAgICAgICAjIGdwZzogR29vZCBzaWduYXR1cmUgZnJvbSAidGVzdHVzZXIgKG5vY29tbWVudCkgPHRlc3R1c2VyQGVtYWlsLmNvbT4iCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dwZzogR29vZCBzaWduYXR1cmUgZnJvbScsIHJldC5vdXRwdXQsICdQYWNrYWdlIHNpZ25lZCBpbmNvcnJlY3RseS4nKQorCisKK2NsYXNzIExvY2tlZFNpZ25hdHVyZXMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBPRVRlc3RJRCgxNDIwKQorICAgIGRlZiB0ZXN0X2xvY2tlZF9zaWduYXR1cmVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgbG9ja2VkIHNpZ25hdHVyZSBtZWNoYW5pc20KKyAgICAgICAgRXhwZWN0ZWQ6ICAgIExvY2tlZCBzaWduYXR1cmVzIHdpbGwgcHJldmVudCB0YXNrIHRvIHJ1bgorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKKyAgICAgICAgbG9ja2VkX3NpZ3NfZmlsZSA9ICdsb2NrZWQtc2lncy5pbmMnCisKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLWYgJXMnICUgb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsIGxvY2tlZF9zaWdzX2ZpbGUpKQorCisgICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCisgICAgICAgICMgR2VuZXJhdGUgbG9ja2VkIHNpZ3MgaW5jbHVkZSBmaWxlCisgICAgICAgIGJpdGJha2UoJy1TIG5vbmUgJXMnICUgdGVzdF9yZWNpcGUpCisKKyAgICAgICAgZmVhdHVyZSA9ICdyZXF1aXJlICVzXG4nICUgbG9ja2VkX3NpZ3NfZmlsZQorICAgICAgICBmZWF0dXJlICs9ICdTSUdHRU5fTE9DS0VEU0lHU19UQVNLU0lHX0NIRUNLID0gIndhcm4iXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCisKKyAgICAgICAgIyBCdWlsZCBhIGxvY2tlZCByZWNpcGUKKyAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKKworICAgICAgICAjIE1ha2UgYSBjaGFuZ2UgdGhhdCBzaG91bGQgY2F1c2UgdGhlIGxvY2tlZCB0YXNrIHNpZ25hdHVyZSB0byBjaGFuZ2UKKyAgICAgICAgcmVjaXBlX2FwcGVuZF9maWxlID0gdGVzdF9yZWNpcGUgKyAnXycgKyBnZXRfYmJfdmFyKCdQVicsIHRlc3RfcmVjaXBlKSArICcuYmJhcHBlbmQnCisgICAgICAgIHJlY2lwZV9hcHBlbmRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgdGVzdF9yZWNpcGUsIHJlY2lwZV9hcHBlbmRfZmlsZSkKKyAgICAgICAgZmVhdHVyZSA9ICdTVU1NQVJZICs9ICJ0ZXN0IGxvY2tlZCBzaWduYXR1cmUiXG4nCisKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCB0ZXN0X3JlY2lwZSkpCisgICAgICAgIHdyaXRlX2ZpbGUocmVjaXBlX2FwcGVuZF9wYXRoLCBmZWF0dXJlKQorCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcycgJSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHRlc3RfcmVjaXBlKSkKKworICAgICAgICAjIEJ1aWxkIHRoZSByZWNpcGUgYWdhaW4KKyAgICAgICAgcmV0ID0gYml0YmFrZSh0ZXN0X3JlY2lwZSkKKworICAgICAgICAjIFZlcmlmeSB5b3UgZ2V0IHRoZSB3YXJuaW5nIGFuZCB0aGF0IHRoZSByZWFsIHRhc2sgKmlzbid0KiBydW4gKGkuZS4gdGhlIGxvY2tlZCBzaWduYXR1cmUgaGFzIHdvcmtlZCkKKyAgICAgICAgcGF0dCA9IHInV0FSTklORzogVGhlICVzOmRvX3BhY2thZ2Ugc2lnIGlzIGNvbXB1dGVkIHRvIGJlIFxTKywgYnV0IHRoZSBzaWcgaXMgbG9ja2VkIHRvIFxTKyBpbiBTSUdHRU5fTE9DS0VEU0lHU1xTKycgJSB0ZXN0X3JlY2lwZQorICAgICAgICBmb3VuZF93YXJuID0gcmUuc2VhcmNoKHBhdHQsIHJldC5vdXRwdXQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZm91bmRfd2FybiwgIkRpZG4ndCBmaW5kIHRoZSBleHBlY3RlZCB3YXJuaW5nIG1lc3NhZ2UuIE91dHB1dDogJXMiICUgcmV0Lm91dHB1dCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzJmZGJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5CkBAIC0wLDAgKzEsNjMgQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAorCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcnMsIGdldF90ZXN0X2xheWVyCisKKworY2xhc3MgU1N0YXRlQmFzZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CisgICAgICAgIHN1cGVyKFNTdGF0ZUJhc2UsIHNlbGYpLnNldFVwTG9jYWwoKQorICAgICAgICBzZWxmLnRlbXBfc3N0YXRlX2xvY2F0aW9uID0gTm9uZQorICAgICAgICBuZWVkZWRfdmFycyA9IFsnU1NUQVRFX0RJUicsICdOQVRJVkVMU0JTVFJJTkcnLCAnVENMSUJDJywgJ1RVTkVfQVJDSCcsCisgICAgICAgICAgICAgICAgICAgICAgICdUT1BESVInLCAnVEFSR0VUX1ZFTkRPUicsICdUQVJHRVRfT1MnXQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMobmVlZGVkX3ZhcnMpCisgICAgICAgIHNlbGYuc3N0YXRlX3BhdGggPSBiYl92YXJzWydTU1RBVEVfRElSJ10KKyAgICAgICAgc2VsZi5ob3N0ZGlzdHJvID0gYmJfdmFyc1snTkFUSVZFTFNCU1RSSU5HJ10KKyAgICAgICAgc2VsZi50Y2xpYmMgPSBiYl92YXJzWydUQ0xJQkMnXQorICAgICAgICBzZWxmLnR1bmVfYXJjaCA9IGJiX3ZhcnNbJ1RVTkVfQVJDSCddCisgICAgICAgIHNlbGYudG9wZGlyID0gYmJfdmFyc1snVE9QRElSJ10KKyAgICAgICAgc2VsZi50YXJnZXRfdmVuZG9yID0gYmJfdmFyc1snVEFSR0VUX1ZFTkRPUiddCisgICAgICAgIHNlbGYudGFyZ2V0X29zID0gYmJfdmFyc1snVEFSR0VUX09TJ10KKyAgICAgICAgc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlID0gb3MucGF0aC5qb2luKHNlbGYuc3N0YXRlX3BhdGgsIHNlbGYuaG9zdGRpc3RybykKKworICAgICMgQ3JlYXRlcyBhIHNwZWNpYWwgc3N0YXRlIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgb3B0aW9uIHRvIGFkZCBzc3RhdGUgbWlycm9ycworICAgIGRlZiBjb25maWdfc3N0YXRlKHNlbGYsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPUZhbHNlLCBhZGRfbG9jYWxfbWlycm9ycz1bXSk6CisgICAgICAgIHNlbGYudGVtcF9zc3RhdGVfbG9jYXRpb24gPSB0ZW1wX3NzdGF0ZV9sb2NhdGlvbgorCisgICAgICAgIGlmIHNlbGYudGVtcF9zc3RhdGVfbG9jYXRpb246CisgICAgICAgICAgICB0ZW1wX3NzdGF0ZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJ0ZW1wX3NzdGF0ZV8lcyIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJUglTSVTJykpCisgICAgICAgICAgICBjb25maWdfdGVtcF9zc3RhdGUgPSAiU1NUQVRFX0RJUiA9IFwiJXNcIiIgJSB0ZW1wX3NzdGF0ZV9wYXRoCisgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnX3RlbXBfc3N0YXRlKQorICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wX3NzdGF0ZV9wYXRoKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTU1RBVEVfRElSJywgJ05BVElWRUxTQlNUUklORyddKQorICAgICAgICBzZWxmLnNzdGF0ZV9wYXRoID0gYmJfdmFyc1snU1NUQVRFX0RJUiddCisgICAgICAgIHNlbGYuaG9zdGRpc3RybyA9IGJiX3ZhcnNbJ05BVElWRUxTQlNUUklORyddCisgICAgICAgIHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSA9IG9zLnBhdGguam9pbihzZWxmLnNzdGF0ZV9wYXRoLCBzZWxmLmhvc3RkaXN0cm8pCisKKyAgICAgICAgaWYgYWRkX2xvY2FsX21pcnJvcnM6CisgICAgICAgICAgICBjb25maWdfc2V0X3NzdGF0ZV9pZl9ub3Rfc2V0ID0gJ1NTVEFURV9NSVJST1JTID89ICIiJworICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZ19zZXRfc3N0YXRlX2lmX25vdF9zZXQpCisgICAgICAgICAgICBmb3IgbG9jYWxfbWlycm9yIGluIGFkZF9sb2NhbF9taXJyb3JzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5qb2luKGxvY2FsX21pcnJvcikgPT0gb3MucGF0aC5qb2luKHNlbGYuc3N0YXRlX3BhdGgpLCBtc2c9J0Nhbm5vdCBhZGQgdGhlIGN1cnJlbnQgc3N0YXRlIHBhdGggYXMgYSBzc3RhdGUgbWlycm9yJykKKyAgICAgICAgICAgICAgICBjb25maWdfc3N0YXRlX21pcnJvciA9ICJTU1RBVEVfTUlSUk9SUyArPSBcImZpbGU6Ly8uKiBmaWxlOi8vLyVzL1BBVEhcIiIgJSBsb2NhbF9taXJyb3IKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnX3NzdGF0ZV9taXJyb3IpCisKKyAgICAjIFJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgc3N0YXRlIGZpbGVzCisgICAgZGVmIHNlYXJjaF9zc3RhdGUoc2VsZiwgZmlsZW5hbWVfcmVnZXgsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSk6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYuc3N0YXRlX3BhdGgpOgorICAgICAgICAgICAgaWYgZGlzdHJvX3NwZWNpZmljIGFuZCByZS5zZWFyY2goIiVzL1thLXowLTldezJ9JCIgJSBzZWxmLmhvc3RkaXN0cm8sIHJvb3QpOgorICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goZmlsZW5hbWVfcmVnZXgsIGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmKQorICAgICAgICAgICAgaWYgZGlzdHJvX25vbnNwZWNpZmljIGFuZCByZS5zZWFyY2goIiVzL1thLXowLTldezJ9JCIgJSBzZWxmLnNzdGF0ZV9wYXRoLCByb290KToKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGZpbGVuYW1lX3JlZ2V4LCBmKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZikKKyAgICAgICAgcmV0dXJuIHJlc3VsdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzkwMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKQEAgLTAsMCArMSw0OTYgQEAKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IGdsb2IKK2ltcG9ydCBzdWJwcm9jZXNzCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2VzLnNzdGF0ZSBpbXBvcnQgU1N0YXRlQmFzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2ltcG9ydCBiYi5zaWdnZW4KKworY2xhc3MgU1N0YXRlVGVzdHMoU1N0YXRlQmFzZSk6CisKKyAgICAjIFRlc3Qgc3N0YXRlIGZpbGVzIGNyZWF0aW9uIGFuZCB0aGVpciBsb2NhdGlvbgorICAgIGRlZiBydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oc2VsZiwgdGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBzaG91bGRfcGFzcz1UcnVlKToKKyAgICAgICAgc2VsZi5jb25maWdfc3N0YXRlKHRlbXBfc3N0YXRlX2xvY2F0aW9uLCBbc2VsZi5zc3RhdGVfcGF0aF0pCisKKyAgICAgICAgaWYgIHNlbGYudGVtcF9zc3RhdGVfbG9jYXRpb246CisgICAgICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbiddICsgdGFyZ2V0cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJpdGJha2UoWyctY2NsZWFuc3N0YXRlJ10gKyB0YXJnZXRzKQorCisgICAgICAgIGJpdGJha2UodGFyZ2V0cykKKyAgICAgICAgZmlsZV90cmFja2VyID0gW10KKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIGRpc3Ryb19zcGVjaWZpYywgZGlzdHJvX25vbnNwZWNpZmljKQorICAgICAgICBpZiBkaXN0cm9fbm9uc3BlY2lmaWM6CisgICAgICAgICAgICBmb3IgciBpbiByZXN1bHRzOgorICAgICAgICAgICAgICAgIGlmIHIuZW5kc3dpdGgoKCJfcG9wdWxhdGVfbGljLnRneiIsICJfcG9wdWxhdGVfbGljLnRnei5zaWdpbmZvIiwgIl9mZXRjaC50Z3ouc2lnaW5mbyIsICJfdW5wYWNrLnRnei5zaWdpbmZvIiwgIl9wYXRjaC50Z3ouc2lnaW5mbyIpKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBmaWxlX3RyYWNrZXIuYXBwZW5kKHIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlX3RyYWNrZXIgPSByZXN1bHRzCisKKyAgICAgICAgaWYgc2hvdWxkX3Bhc3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZV90cmFja2VyICwgbXNnPSJDb3VsZCBub3QgZmluZCBzc3RhdGUgZmlsZXMgZm9yOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmaWxlX3RyYWNrZXIgLCBtc2c9IkZvdW5kIHNzdGF0ZSBmaWxlcyBpbiB0aGUgd3JvbmcgcGxhY2UgZm9yOiAlcyAoZm91bmQgJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIoZmlsZV90cmFja2VyKSkpCisKKyAgICBAT0VUZXN0SUQoOTc1KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9jcmVhdGlvbl9kaXN0cm9fc3BlY2lmaWNfcGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oWydiaW51dGlscy1jcm9zcy0nKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQorCisgICAgQE9FVGVzdElEKDEzNzQpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2NyZWF0aW9uX2Rpc3Ryb19zcGVjaWZpY19mYWlsKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihbJ2JpbnV0aWxzLWNyb3NzLScrIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10sIGRpc3Ryb19zcGVjaWZpYz1GYWxzZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIHNob3VsZF9wYXNzPUZhbHNlKQorCisgICAgQE9FVGVzdElEKDk3NikKKyAgICBkZWYgdGVzdF9zc3RhdGVfY3JlYXRpb25fZGlzdHJvX25vbnNwZWNpZmljX3Bhc3Moc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKFsnbGludXgtbGliYy1oZWFkZXJzJ10sIGRpc3Ryb19zcGVjaWZpYz1GYWxzZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCisKKyAgICBAT0VUZXN0SUQoMTM3NSkKKyAgICBkZWYgdGVzdF9zc3RhdGVfY3JlYXRpb25fZGlzdHJvX25vbnNwZWNpZmljX2ZhaWwoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKFsnbGludXgtbGliYy1oZWFkZXJzJ10sIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIHNob3VsZF9wYXNzPUZhbHNlKQorCisgICAgIyBUZXN0IHRoZSBzc3RhdGUgZmlsZXMgZGVsZXRpb24gcGFydCBvZiB0aGUgZG9fY2xlYW5zc3RhdGUgdGFzaworICAgIGRlZiBydW5fdGVzdF9jbGVhbnNzdGF0ZV90YXNrKHNlbGYsIHRhcmdldHMsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSk6CisgICAgICAgIHNlbGYuY29uZmlnX3NzdGF0ZSh0ZW1wX3NzdGF0ZV9sb2NhdGlvbiwgW3NlbGYuc3N0YXRlX3BhdGhdKQorCisgICAgICAgIGJpdGJha2UoWyctY2NsZWFuc3N0YXRlJ10gKyB0YXJnZXRzKQorCisgICAgICAgIGJpdGJha2UodGFyZ2V0cykKKyAgICAgICAgdGd6X2NyZWF0ZWQgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWMsIGRpc3Ryb19ub25zcGVjaWZpYykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRnel9jcmVhdGVkLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHNzdGF0ZSAudGd6IGZpbGVzIGZvcjogJXMgKCVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKHRnel9jcmVhdGVkKSkpCisKKyAgICAgICAgc2lnaW5mb19jcmVhdGVkID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wuc2lnaW5mbyQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYywgZGlzdHJvX25vbnNwZWNpZmljKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2lnaW5mb19jcmVhdGVkLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHNzdGF0ZSAuc2lnaW5mbyBmaWxlcyBmb3I6ICVzICglcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cihzaWdpbmZvX2NyZWF0ZWQpKSkKKworICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbnNzdGF0ZSddICsgdGFyZ2V0cykKKyAgICAgICAgdGd6X3JlbW92ZWQgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWMsIGRpc3Ryb19ub25zcGVjaWZpYykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCB0Z3pfcmVtb3ZlZCwgbXNnPSJkb19jbGVhbnNzdGF0ZSBkaWRuJ3QgcmVtb3ZlIC50Z3ogc3N0YXRlIGZpbGVzIGZvcjogJXMgKCVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKHRnel9yZW1vdmVkKSkpCisKKyAgICBAT0VUZXN0SUQoOTc3KQorICAgIGRlZiB0ZXN0X2NsZWFuc3N0YXRlX3Rhc2tfZGlzdHJvX3NwZWNpZmljX25vbnNwZWNpZmljKHNlbGYpOgorICAgICAgICB0YXJnZXRzID0gWydiaW51dGlscy1jcm9zcy0nKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddCisgICAgICAgIHRhcmdldHMuYXBwZW5kKCdsaW51eC1saWJjLWhlYWRlcnMnKQorICAgICAgICBzZWxmLnJ1bl90ZXN0X2NsZWFuc3N0YXRlX3Rhc2sodGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQorCisgICAgQE9FVGVzdElEKDEzNzYpCisgICAgZGVmIHRlc3RfY2xlYW5zc3RhdGVfdGFza19kaXN0cm9fbm9uc3BlY2lmaWMoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfY2xlYW5zc3RhdGVfdGFzayhbJ2xpbnV4LWxpYmMtaGVhZGVycyddLCBkaXN0cm9fc3BlY2lmaWM9RmFsc2UsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQorCisgICAgQE9FVGVzdElEKDEzNzcpCisgICAgZGVmIHRlc3RfY2xlYW5zc3RhdGVfdGFza19kaXN0cm9fc3BlY2lmaWMoc2VsZik6CisgICAgICAgIHRhcmdldHMgPSBbJ2JpbnV0aWxzLWNyb3NzLScrIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10KKyAgICAgICAgdGFyZ2V0cy5hcHBlbmQoJ2xpbnV4LWxpYmMtaGVhZGVycycpCisgICAgICAgIHNlbGYucnVuX3Rlc3RfY2xlYW5zc3RhdGVfdGFzayh0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQorCisKKyAgICAjIFRlc3QgcmVidWlsZGluZyBvZiBkaXN0cm8tc3BlY2lmaWMgc3N0YXRlIGZpbGVzCisgICAgZGVmIHJ1bl90ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZShzZWxmLCB0YXJnZXRzLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKToKKyAgICAgICAgc2VsZi5jb25maWdfc3N0YXRlKHRlbXBfc3N0YXRlX2xvY2F0aW9uLCBbc2VsZi5zc3RhdGVfcGF0aF0pCisKKyAgICAgICAgYml0YmFrZShbJy1jY2xlYW5zc3RhdGUnXSArIHRhcmdldHMpCisKKyAgICAgICAgYml0YmFrZSh0YXJnZXRzKQorICAgICAgICByZXN1bHRzID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljPUZhbHNlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSkKKyAgICAgICAgZmlsdGVyZWRfcmVzdWx0cyA9IFtdCisgICAgICAgIGZvciByIGluIHJlc3VsdHM6CisgICAgICAgICAgICBpZiByLmVuZHN3aXRoKCgiX3BvcHVsYXRlX2xpYy50Z3oiLCAiX3BvcHVsYXRlX2xpYy50Z3ouc2lnaW5mbyIpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmlsdGVyZWRfcmVzdWx0cy5hcHBlbmQocikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbHRlcmVkX3Jlc3VsdHMgPT0gW10sIG1zZz0iRm91bmQgZGlzdHJvIG5vbi1zcGVjaWZpYyBzc3RhdGUgZm9yOiAlcyAoJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIoZmlsdGVyZWRfcmVzdWx0cykpKQorICAgICAgICBmaWxlX3RyYWNrZXJfMSA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZmlsZV90cmFja2VyXzEpID49IGxlbih0YXJnZXRzKSwgbXNnID0gIk5vdCBhbGwgc3N0YXRlIGZpbGVzIHdhcmUgY3JlYXRlZCBmb3I6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSkpCisKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUgKyAiX29sZCIpCisgICAgICAgIHNodXRpbC5jb3B5dHJlZShzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUsIHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSArICJfb2xkIikKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUpCisKKyAgICAgICAgYml0YmFrZShbJy1jY2xlYW4nXSArIHRhcmdldHMpCisgICAgICAgIGJpdGJha2UodGFyZ2V0cykKKyAgICAgICAgZmlsZV90cmFja2VyXzIgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGZpbGVfdHJhY2tlcl8yKSA+PSBsZW4odGFyZ2V0cyksIG1zZyA9ICJOb3QgYWxsIHNzdGF0ZSBmaWxlcyB3YXJlIGNyZWF0ZWQgZm9yOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpKQorCisgICAgICAgIG5vdF9yZWNyZWF0ZWQgPSBbeCBmb3IgeCBpbiBmaWxlX3RyYWNrZXJfMSBpZiB4IG5vdCBpbiBmaWxlX3RyYWNrZXJfMl0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdF9yZWNyZWF0ZWQgPT0gW10sIG1zZz0iVGhlIGZvbGxvd2luZyBzc3RhdGUgZmlsZXMgd2FyZSBub3QgcmVjcmVhdGVkOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgbm90X3JlY3JlYXRlZCkpKQorCisgICAgICAgIGNyZWF0ZWRfb25jZSA9IFt4IGZvciB4IGluIGZpbGVfdHJhY2tlcl8yIGlmIHggbm90IGluIGZpbGVfdHJhY2tlcl8xXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlZF9vbmNlID09IFtdLCBtc2c9IlRoZSBmb2xsb3dpbmcgc3N0YXRlIGZpbGVzIHdhcmUgY3JlYXRlZCBvbmx5IGluIHRoZSBzZWNvbmQgcnVuOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgY3JlYXRlZF9vbmNlKSkpCisKKyAgICBAT0VUZXN0SUQoMTc1KQorICAgIGRlZiB0ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZV9jcm9zc19uYXRpdmVfdGFyZ2V0cyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGUoWydiaW51dGlscy1jcm9zcy0nICsgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKKworICAgIEBPRVRlc3RJRCgxMzcyKQorICAgIGRlZiB0ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZV9jcm9zc190YXJnZXQoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKFsnYmludXRpbHMtY3Jvc3MtJyArIHNlbGYudHVuZV9hcmNoXSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKKworICAgIEBPRVRlc3RJRCgxMzczKQorICAgIGRlZiB0ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZV9uYXRpdmVfdGFyZ2V0KHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZShbJ2JpbnV0aWxzLW5hdGl2ZSddLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQorCisKKyAgICAjIFRlc3QgdGhlIHNzdGF0ZS1jYWNoZS1tYW5hZ2VtZW50IHNjcmlwdC4gRWFjaCBlbGVtZW50IGluIHRoZSBnbG9iYWxfY29uZmlnIGxpc3QgaXMgdXNlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlIHRhcmdldF9jb25maWcgbGlzdAorICAgICMgZ2xvYmFsX2NvbmZpZyBlbGVtZW50cyBhcmUgZXhwZWN0ZWQgdG8gbm90IGdlbmVyYXRlIGFueSBzc3RhdGUgZmlsZXMgdGhhdCB3b3VsZCBiZSByZW1vdmVkIGJ5IHNzdGF0ZS1jYWNoZS1tYW5hZ2VtZW50LnNoIChzdWNoIGFzIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBNQUNISU5FKQorICAgIGRlZiBydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoc2VsZiwgdGFyZ2V0LCBnbG9iYWxfY29uZmlnPVsnJ10sIHRhcmdldF9jb25maWc9WycnXSwgaWdub3JlX3BhdHRlcm5zPVtdKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdsb2JhbF9jb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXRfY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGdsb2JhbF9jb25maWcpID09IGxlbih0YXJnZXRfY29uZmlnKSwgbXNnPSdMaXN0cyBnbG9iYWxfY29uZmlnIGFuZCB0YXJnZXRfY29uZmlnIHNob3VsZCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cycpCisgICAgICAgIHNlbGYuY29uZmlnX3NzdGF0ZSh0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBhZGRfbG9jYWxfbWlycm9ycz1bc2VsZi5zc3RhdGVfcGF0aF0pCisKKyAgICAgICAgIyBJZiBidWlsZGhpc3RvcnkgaXMgZW5hYmxlZCwgd2UgbmVlZCB0byBkaXNhYmxlIHZlcnNpb24tZ29pbmctYmFja3dhcmRzCisgICAgICAgICMgUUEgY2hlY2tzIGZvciB0aGlzIHRlc3QuIEl0IG1heSByZXBvcnQgZXJyb3JzIG90aGVyd2lzZS4KKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdFUlJPUl9RQV9yZW1vdmUgPSAidmVyc2lvbi1nb2luZy1iYWNrd2FyZHMiJykKKworICAgICAgICAjIEZvciBub3QgdGhpcyBvbmx5IGNoZWNrcyBpZiByYW5kb20gc3N0YXRlIHRhc2tzIGFyZSBoYW5kbGVkIGNvcnJlY3RseSBhcyBhIGdyb3VwLgorICAgICAgICAjIEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIGFkZCBjb250cm9sIG92ZXIgd2hhdCB0YXNrcyB3ZSBjaGVjayBmb3IuCisKKyAgICAgICAgc3N0YXRlX2FyY2hzX2xpc3QgPSBbXQorICAgICAgICBleHBlY3RlZF9yZW1haW5pbmdfc3N0YXRlID0gW10KKyAgICAgICAgZm9yIGlkeCBpbiByYW5nZShsZW4odGFyZ2V0X2NvbmZpZykpOgorICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGdsb2JhbF9jb25maWdbaWR4XSkKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kX3JlY2lwZWluYyh0YXJnZXQsIHRhcmdldF9jb25maWdbaWR4XSkKKyAgICAgICAgICAgIHNzdGF0ZV9hcmNoID0gZ2V0X2JiX3ZhcignU1NUQVRFX1BLR0FSQ0gnLCB0YXJnZXQpCisgICAgICAgICAgICBpZiBub3Qgc3N0YXRlX2FyY2ggaW4gc3N0YXRlX2FyY2hzX2xpc3Q6CisgICAgICAgICAgICAgICAgc3N0YXRlX2FyY2hzX2xpc3QuYXBwZW5kKHNzdGF0ZV9hcmNoKQorICAgICAgICAgICAgaWYgdGFyZ2V0X2NvbmZpZ1tpZHhdID09IHRhcmdldF9jb25maWdbLTFdOgorICAgICAgICAgICAgICAgIHRhcmdldF9zc3RhdGVfYmVmb3JlX2J1aWxkID0gc2VsZi5zZWFyY2hfc3N0YXRlKHRhcmdldCArICcuKj9cLnRneiQnKQorICAgICAgICAgICAgYml0YmFrZSgiLWNjbGVhbiAlcyIgJSB0YXJnZXQpCisgICAgICAgICAgICByZXN1bHQgPSBiaXRiYWtlKHRhcmdldCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICAgICAgaWYgdGFyZ2V0X2NvbmZpZ1tpZHhdID09IHRhcmdldF9jb25maWdbLTFdOgorICAgICAgICAgICAgICAgIHRhcmdldF9zc3RhdGVfYWZ0ZXJfYnVpbGQgPSBzZWxmLnNlYXJjaF9zc3RhdGUodGFyZ2V0ICsgJy4qP1wudGd6JCcpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVtYWluaW5nX3NzdGF0ZSArPSBbeCBmb3IgeCBpbiB0YXJnZXRfc3N0YXRlX2FmdGVyX2J1aWxkIGlmIHggbm90IGluIHRhcmdldF9zc3RhdGVfYmVmb3JlX2J1aWxkIGlmIG5vdCBhbnkocGF0dGVybiBpbiB4IGZvciBwYXR0ZXJuIGluIGlnbm9yZV9wYXR0ZXJucyldCisgICAgICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoZ2xvYmFsX2NvbmZpZ1tpZHhdKQorICAgICAgICAgICAgc2VsZi5yZW1vdmVfcmVjaXBlaW5jKHRhcmdldCwgdGFyZ2V0X2NvbmZpZ1tpZHhdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCBtc2cgPSAiYnVpbGQgb2YgJXMgZmFpbGVkIHdpdGggJXMiICUgKHRhcmdldCwgcmVzdWx0Lm91dHB1dCkpCisKKyAgICAgICAgcnVuQ21kKCJzc3RhdGUtY2FjaGUtbWFuYWdlbWVudC5zaCAteSAtLWNhY2hlLWRpcj0lcyAtLXJlbW92ZS1kdXBsaWNhdGVkIC0tZXh0cmEtYXJjaHM9JXMiICUgKHNlbGYuc3N0YXRlX3BhdGgsICcsJy5qb2luKG1hcChzdHIsIHNzdGF0ZV9hcmNoc19saXN0KSkpKQorICAgICAgICBhY3R1YWxfcmVtYWluaW5nX3NzdGF0ZSA9IFt4IGZvciB4IGluIHNlbGYuc2VhcmNoX3NzdGF0ZSh0YXJnZXQgKyAnLio/XC50Z3okJykgaWYgbm90IGFueShwYXR0ZXJuIGluIHggZm9yIHBhdHRlcm4gaW4gaWdub3JlX3BhdHRlcm5zKV0KKworICAgICAgICBhY3R1YWxfbm90X2V4cGVjdGVkID0gW3ggZm9yIHggaW4gYWN0dWFsX3JlbWFpbmluZ19zc3RhdGUgaWYgeCBub3QgaW4gZXhwZWN0ZWRfcmVtYWluaW5nX3NzdGF0ZV0KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhY3R1YWxfbm90X2V4cGVjdGVkLCBtc2c9IkZpbGVzIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBidXQgd2FyZSBub3Q6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCBhY3R1YWxfbm90X2V4cGVjdGVkKSkpCisgICAgICAgIGV4cGVjdGVkX25vdF9hY3R1YWwgPSBbeCBmb3IgeCBpbiBleHBlY3RlZF9yZW1haW5pbmdfc3N0YXRlIGlmIHggbm90IGluIGFjdHVhbF9yZW1haW5pbmdfc3N0YXRlXQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4cGVjdGVkX25vdF9hY3R1YWwsIG1zZz0iRXh0cmEgZmlsZXMgd2FyZSByZW1vdmVkOiAlcyIgJywgJy5qb2luKG1hcChzdHIsIGV4cGVjdGVkX25vdF9hY3R1YWwpKSkKKworICAgIEBPRVRlc3RJRCg5NzMpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0X3VzaW5nX3ByXzEoc2VsZik6CisgICAgICAgIGdsb2JhbF9jb25maWcgPSBbXQorICAgICAgICB0YXJnZXRfY29uZmlnID0gW10KKyAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJycpCisgICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIwIicpCisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KCdtNCcsIGdsb2JhbF9jb25maWcsICB0YXJnZXRfY29uZmlnLCBpZ25vcmVfcGF0dGVybnM9Wydwb3B1bGF0ZV9saWMnXSkKKworICAgIEBPRVRlc3RJRCg5NzgpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0X3VzaW5nX3ByXzIoc2VsZik6CisgICAgICAgIGdsb2JhbF9jb25maWcgPSBbXQorICAgICAgICB0YXJnZXRfY29uZmlnID0gW10KKyAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJycpCisgICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIwIicpCisgICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCcnKQorICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMSInKQorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdCgnbTQnLCBnbG9iYWxfY29uZmlnLCAgdGFyZ2V0X2NvbmZpZywgaWdub3JlX3BhdHRlcm5zPVsncG9wdWxhdGVfbGljJ10pCisKKyAgICBAT0VUZXN0SUQoOTc5KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdF91c2luZ19wcl8zKHNlbGYpOgorICAgICAgICBnbG9iYWxfY29uZmlnID0gW10KKyAgICAgICAgdGFyZ2V0X2NvbmZpZyA9IFtdCisgICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCdNQUNISU5FID0gInFlbXV4ODYtNjQiJykKKyAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjAiJykKKyAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoZ2xvYmFsX2NvbmZpZ1swXSkKKyAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjEiJykKKyAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJ01BQ0hJTkUgPSAicWVtdXg4NiInKQorICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMSInKQorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdCgnbTQnLCBnbG9iYWxfY29uZmlnLCAgdGFyZ2V0X2NvbmZpZywgaWdub3JlX3BhdHRlcm5zPVsncG9wdWxhdGVfbGljJ10pCisKKyAgICBAT0VUZXN0SUQoOTc0KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdF91c2luZ19tYWNoaW5lKHNlbGYpOgorICAgICAgICBnbG9iYWxfY29uZmlnID0gW10KKyAgICAgICAgdGFyZ2V0X2NvbmZpZyA9IFtdCisgICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCdNQUNISU5FID0gInFlbXV4ODYtNjQiJykKKyAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJycpCisgICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCdNQUNISU5FID0gInFlbXV4ODYiJykKKyAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJycpCisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KCdtNCcsIGdsb2JhbF9jb25maWcsICB0YXJnZXRfY29uZmlnLCBpZ25vcmVfcGF0dGVybnM9Wydwb3B1bGF0ZV9saWMnXSkKKworICAgIEBPRVRlc3RJRCgxMjcwKQorICAgIGRlZiB0ZXN0X3NzdGF0ZV8zMl82NF9zYW1lX2hhc2goc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBmb3IgYm90aCBuYXRpdmUgYW5kIHRhcmdldCBzaG91bGQgbm90IHZhcnkgd2hldGhlcgorICAgICAgICB0aGV5J3JlIGJ1aWx0IG9uIGEgMzIgb3IgNjQgYml0IHN5c3RlbS4gUmF0aGVyIHRoYW4gcmVxdWlyaW5nIHR3byBkaWZmZXJlbnQKKyAgICAgICAgYnVpbGQgbWFjaGluZXMgYW5kIHJ1bm5pbmcgYSBidWlsZHMsIG92ZXJyaWRlIHRoZSB2YXJpYWJsZXMgY2FsbGluZyB1bmFtZSgpCisgICAgICAgIG1hbnVhbGx5IGFuZCBjaGVjayB1c2luZyBiaXRiYWtlIC1TLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK01BQ0hJTkUgPSAicWVtdXg4NiIKK1RNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoIgorQlVJTERfQVJDSCA9ICJ4ODZfNjQiCitCVUlMRF9PUyA9ICJsaW51eCIKK1NES01BQ0hJTkUgPSAieDg2XzY0IgorUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfcnBtIHBhY2thZ2VfaXBrIHBhY2thZ2VfZGViIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorTUFDSElORSA9ICJxZW11eDg2IgorVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyIgorQlVJTERfQVJDSCA9ICJpNjg2IgorQlVJTERfT1MgPSAibGludXgiCitTREtNQUNISU5FID0gImk2ODYiCitQQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV9ycG0gcGFja2FnZV9pcGsgcGFja2FnZV9kZWIiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCisKKyAgICAgICAgZGVmIGdldF9maWxlcyhkKToKKyAgICAgICAgICAgIGYgPSBbXQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6CisgICAgICAgICAgICAgICAgaWYgImNvcmUtaW1hZ2Utc2F0byIgaW4gcm9vdDoKKyAgICAgICAgICAgICAgICAgICAgIyBTREtNQUNISU5FIGNoYW5naW5nIHdpbGwgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgICMgZG9fcm9vdGZzL2RvX3Rlc3RpbWFnZS9kb19idWlsZCBzdGFtcHMgb2YgaW1hZ2VzIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICMgaXMgc2FmZSB0byBpZ25vcmUuCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZi5leHRlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpIGZvciBuYW1lIGluIGZpbGVzKQorICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIpCisgICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIikKKyAgICAgICAgZmlsZXMyID0gW3gucmVwbGFjZSgidG1wLXNzdGF0ZXNhbWVoYXNoMiIsICJ0bXAtc3N0YXRlc2FtZWhhc2giKS5yZXBsYWNlKCJpNjg2LWxpbnV4IiwgIng4Nl82NC1saW51eCIpLnJlcGxhY2UoImk2ODYiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi1saW51eCIsICJ4ODZfNjQiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi1saW51eCIsICkgZm9yIHggaW4gZmlsZXMyXQorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKKworCisgICAgQE9FVGVzdElEKDEyNzEpCisgICAgZGVmIHRlc3Rfc3N0YXRlX25hdGl2ZWxzYnN0cmluZ19zYW1lX2hhc2goc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygd2hpY2hldmVyIE5BVElWRUxTQlNUUklORyBpcworICAgICAgICBkZXRlY3RlZC4gUmF0aGVyIHRoYW4gcmVxdWlyaW5nIHR3byBkaWZmZXJlbnQgYnVpbGQgbWFjaGluZXMgYW5kIHJ1bm5pbmcKKyAgICAgICAgYnVpbGRzLCBvdmVycmlkZSB0aGUgdmFyaWFibGVzIG1hbnVhbGx5IGFuZCBjaGVjayB1c2luZyBiaXRiYWtlIC1TLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitOQVRJVkVMU0JTVFJJTkcgPSBcIkRpc3Ryb0FcIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitOQVRJVkVMU0JTVFJJTkcgPSBcIkRpc3Ryb0JcIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQorCisgICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6CisgICAgICAgICAgICBmID0gW10KKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgorICAgICAgICAgICAgICAgIGYuZXh0ZW5kKG9zLnBhdGguam9pbihyb290LCBuYW1lKSBmb3IgbmFtZSBpbiBmaWxlcykKKyAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iKQorICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIpCisgICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UoInRtcC1zc3RhdGVzYW1laGFzaDIiLCAidG1wLXNzdGF0ZXNhbWVoYXNoIikgZm9yIHggaW4gZmlsZXMyXQorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKKworICAgIEBPRVRlc3RJRCgxMzY4KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgYWxsYXJjaCBwYWNrYWdlcyBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygd2hpY2hldmVyCisgICAgICAgIE1BQ0hJTkUgaXMgc2V0LiBDaGVjayB0aGlzIHVzaW5nIGJpdGJha2UgLVMuCisgICAgICAgIEFsc28sIHJhdGhlciB0aGFuIGR1cGxpY2F0ZSB0aGUgdGVzdCwgY2hlY2sgbmF0aXZlc2RrIHN0YW1wcyBhcmUgdGhlIHNhbWUgYmV0d2VlbgorICAgICAgICB0aGUgdHdvIE1BQ0hJTkUgdmFsdWVzLgorICAgICAgICAiIiIKKworICAgICAgICBjb25maWdBID0gIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgorTUFDSElORSA9IFwicWVtdXg4Ni02NFwiCisiIiIKKyAgICAgICAgY29uZmlnQiA9ICIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitNQUNISU5FID0gXCJxZW11YXJtXCIKKyIiIgorICAgICAgICBzZWxmLnNzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKGNvbmZpZ0EsIGNvbmZpZ0IpCisKKyAgICBAT0VUZXN0SUQoMTY0NSkKKyAgICBkZWYgdGVzdF9zc3RhdGVfYWxsYXJjaF9zYW1lc2lnc19tdWx0aWxpYihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIGFsbGFyY2ggbXVsdGlsaWIgcGFja2FnZXMgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHdoaWNoZXZlcgorICAgICAgICBNQUNISU5FIGlzIHNldC4gQ2hlY2sgdGhpcyB1c2luZyBiaXRiYWtlIC1TLgorICAgICAgICBBbHNvLCByYXRoZXIgdGhhbiBkdXBsaWNhdGUgdGhlIHRlc3QsIGNoZWNrIG5hdGl2ZXNkayBzdGFtcHMgYXJlIHRoZSBzYW1lIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBNQUNISU5FIHZhbHVlcy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgY29uZmlnQSA9ICIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKK01BQ0hJTkUgPSBcInFlbXV4ODYtNjRcIgorcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKK01VTFRJTElCUyA9IFwibXVsdGlsaWI6bGliMzJcIgorREVGQVVMVFRVTkVfdmlydGNsYXNzLW11bHRpbGliLWxpYjMyID0gXCJ4ODZcIgorIiIiCisgICAgICAgIGNvbmZpZ0IgPSAiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorTUFDSElORSA9IFwicWVtdWFybVwiCityZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgorTVVMVElMSUJTID0gXCJcIgorIiIiCisgICAgICAgIHNlbGYuc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3MoY29uZmlnQSwgY29uZmlnQikKKworICAgIGRlZiBzc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhzZWxmLCBjb25maWdBLCBjb25maWdCKToKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWdBKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQorICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnQikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCisgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQorCisgICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6CisgICAgICAgICAgICBmID0ge30KKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBpZiAibWV0YS1lbnZpcm9ubWVudCIgaW4gcm9vdCBvciAiY3Jvc3MtY2FuYWRpYW4iIGluIHJvb3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiAiZG9fYnVpbGQiIG5vdCBpbiBuYW1lOgorICAgICAgICAgICAgICAgICAgICAgICAgIyAxLjQuMStnaXRBVVRPSU5DKzMwMmZjYTlmNGMtcjAuZG9fcGFja2FnZV93cml0ZV9pcGsuc2lnZGF0YS5mM2EyYTM4Njk3ZGE3NDNmMGRiZWQ4YjU2YWFmY2Y3OQorICAgICAgICAgICAgICAgICAgICAgICAgKF8sIHRhc2ssIF8sIHNoYXNoKSA9IG5hbWUucnNwbGl0KCIuIiwgMykKKyAgICAgICAgICAgICAgICAgICAgICAgIGZbb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUocm9vdCksIHRhc2spXSA9IHNoYXNoCisgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvYWxsIiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItIiArIHNlbGYudGFyZ2V0X29zKQorICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzL2FsbCIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLSIgKyBzZWxmLnRhcmdldF9vcykKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzMSwgZmlsZXMyKQorCisgICAgICAgIG5hdGl2ZXNka2RpciA9IG9zLnBhdGguYmFzZW5hbWUoZ2xvYi5nbG9iKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyotbmF0aXZlc2RrKi1saW51eCIpWzBdKQorCisgICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iICsgbmF0aXZlc2RrZGlyKQorICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIgKyBuYXRpdmVzZGtkaXIpCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlczEsIGZpbGVzMikKKworICAgIEBPRVRlc3RJRCgxMzY5KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9zYW1ldHVuZV9zYW1lc2lncyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIHR3byBpZGVudGljYWwgbWFjaGluZXMgKHVzaW5nIHRoZSBzYW1lIHR1bmUpIHNob3VsZCBiZSB0aGUKKyAgICAgICAgc2FtZSwgYXBhcnQgZnJvbSBjaGFuZ2VzIHdpdGhpbiB0aGUgbWFjaGluZSBzcGVjaWZpYyBzdGFtcHMgZGlyZWN0b3J5LiBXZSB1c2UgdGhlCisgICAgICAgIHFlbXV4ODZjb3B5IG1hY2hpbmUgdG8gdGVzdCB0aGlzLiBBbHNvIGluY2x1ZGUgbXVsdGlsaWJzIGluIHRoZSB0ZXN0LgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitNQUNISU5FID0gXCJxZW11eDg2XCIKK3JlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCitNVUxUSUxJQlMgPSAibXVsdGlsaWI6bGliMzIiCitERUZBVUxUVFVORV92aXJ0Y2xhc3MtbXVsdGlsaWItbGliMzIgPSAieDg2IgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQorICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKK01BQ0hJTkUgPSBcInFlbXV4ODZjb3B5XCIKK3JlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCitNVUxUSUxJQlMgPSAibXVsdGlsaWI6bGliMzIiCitERUZBVUxUVFVORV92aXJ0Y2xhc3MtbXVsdGlsaWItbGliMzIgPSAieDg2IgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKKyAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCisKKyAgICAgICAgZGVmIGdldF9maWxlcyhkKToKKyAgICAgICAgICAgIGYgPSBbXQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmICJtZXRhLWVudmlyb25tZW50IiBpbiByb290IG9yICJjcm9zcy1jYW5hZGlhbiIgaW4gcm9vdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmICJxZW11eDg2Y29weS0iIGluIHJvb3Qgb3IgInFlbXV4ODYtIiBpbiByb290OgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgImRvX2J1aWxkIiBub3QgaW4gbmFtZSBhbmQgImRvX3BvcHVsYXRlX3NkayIgbm90IGluIG5hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICBmLmFwcGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMiKQorICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzIikKKyAgICAgICAgZmlsZXMyID0gW3gucmVwbGFjZSgidG1wLXNzdGF0ZXNhbWVoYXNoMiIsICJ0bXAtc3N0YXRlc2FtZWhhc2giKSBmb3IgeCBpbiBmaWxlczJdCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQorCisKKyAgICBAT0VUZXN0SUQoMTQ5OCkKKyAgICBkZWYgdGVzdF9zc3RhdGVfbm9vcF9zYW1lc2lncyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIHR3byBidWlsZHMgd2l0aCB0aGVzZSB2YXJpYWJsZXMgY2hhbmdlZCBvcgorICAgICAgICBjbGFzc2VzIGluaGVyaXRzIHNob3VsZCBiZSB0aGUgc2FtZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitUTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaCIKK0JCX05VTUJFUl9USFJFQURTID0gIiR7QG9lLnV0aWxzLmNwdV9jb3VudCgpfSIKK1BBUkFMTEVMX01BS0UgPSAiLWogMSIKK0RMX0RJUiA9ICIke1RPUERJUn0vZG93bmxvYWQxIgorVElNRSA9ICIxMTExMTEiCitEQVRFID0gIjIwMTYxMTExIgorSU5IRVJJVF9yZW1vdmUgPSAiYnVpbGRzdGF0cy1zdW1tYXJ5IGJ1aWxkaGlzdG9yeSB1bmluYXRpdmUiCitodHRwX3Byb3h5ID0gIiIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvZG93bmxvYWQxIikKKyAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyIgorQkJfTlVNQkVSX1RIUkVBRFMgPSAiJHtAb2UudXRpbHMuY3B1X2NvdW50KCkrMX0iCitQQVJBTExFTF9NQUtFID0gIi1qIDIiCitETF9ESVIgPSAiJHtUT1BESVJ9L2Rvd25sb2FkMiIKK1RJTUUgPSAiMjIyMjIyIgorREFURSA9ICIyMDE2MTIxMiIKKyMgQWx3YXlzIHJlbW92ZSB1bmluYXRpdmUgYXMgd2UncmUgY2hhbmdpbmcgcHJveGllcworSU5IRVJJVF9yZW1vdmUgPSAidW5pbmF0aXZlIgorSU5IRVJJVCArPSAiYnVpbGRzdGF0cy1zdW1tYXJ5IGJ1aWxkaGlzdG9yeSIKK2h0dHBfcHJveHkgPSAiaHR0cDovL2V4YW1wbGUuY29tLyIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL2Rvd25sb2FkMiIpCisgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQorCisgICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6CisgICAgICAgICAgICBmID0ge30KKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBuYW1lLCBzaGFzaCA9IG5hbWUucnNwbGl0KCcuJywgMSkKKyAgICAgICAgICAgICAgICAgICAgIyBFeHRyYWN0IGp1c3QgdGhlIG1hY2hpbmUgYW5kIHJlY2lwZSBuYW1lCisgICAgICAgICAgICAgICAgICAgIGJhc2UgPSBvcy5zZXAuam9pbihyb290LnJzcGxpdChvcy5zZXAsIDIpWy0yOl0gKyBbbmFtZV0pCisgICAgICAgICAgICAgICAgICAgIGZbYmFzZV0gPSBzaGFzaAorICAgICAgICAgICAgcmV0dXJuIGYKKworICAgICAgICBkZWYgY29tcGFyZV9zaWdmaWxlcyhmaWxlcywgZmlsZXMxLCBmaWxlczIsIGNvbXBhcmU9RmFsc2UpOgorICAgICAgICAgICAgZm9yIGsgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgaWYgayBpbiBmaWxlczEgYW5kIGsgaW4gZmlsZXMyOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMgZGlmZmVyczoiICUgaykKKyAgICAgICAgICAgICAgICAgICAgaWYgY29tcGFyZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2RhdGFmaWxlMSA9IHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIgKyBrICsgIi4iICsgZmlsZXMxW2tdCisgICAgICAgICAgICAgICAgICAgICAgICBzaWdkYXRhZmlsZTIgPSBzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIiArIGsgKyAiLiIgKyBmaWxlczJba10KKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IGJiLnNpZ2dlbi5jb21wYXJlX3NpZ2ZpbGVzKHNpZ2RhdGFmaWxlMSwgc2lnZGF0YWZpbGUyKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdcbicuam9pbihvdXRwdXQpKQorICAgICAgICAgICAgICAgIGVsaWYgayBpbiBmaWxlczEgYW5kIGsgbm90IGluIGZpbGVzMjoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVzIGluIGZpbGVzMSIgJSBrKQorICAgICAgICAgICAgICAgIGVsaWYgayBub3QgaW4gZmlsZXMxIGFuZCBrIGluIGZpbGVzMjoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVzIGluIGZpbGVzMiIgJSBrKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAic2hvdWxkbid0IHJlYWNoIGhlcmUiCisKKyAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIpCisgICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIikKKyAgICAgICAgIyBSZW1vdmUgaXRlbXMgdGhhdCBhcmUgaWRlbnRpY2FsIGluIGJvdGggc2V0cworICAgICAgICBmb3Igayx2IGluIGZpbGVzMS5pdGVtcygpICYgZmlsZXMyLml0ZW1zKCk6CisgICAgICAgICAgICBkZWwgZmlsZXMxW2tdCisgICAgICAgICAgICBkZWwgZmlsZXMyW2tdCisgICAgICAgIGlmIG5vdCBmaWxlczEgYW5kIG5vdCBmaWxlczI6CisgICAgICAgICAgICAjIE5vIGNoYW5nZXMsIHNvIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGZpbGVzID0gbGlzdChmaWxlczEua2V5cygpIHwgZmlsZXMyLmtleXMoKSkKKyAgICAgICAgIyB0aGlzIGlzIGFuIGV4cGVuc2l2ZSBjb21wdXRhdGlvbiwgdGh1cyBqdXN0IGNvbXBhcmUgdGhlIGZpcnN0ICdtYXhfc2lnZmlsZXNfdG9fY29tcGFyZScgayBmaWxlcworICAgICAgICBtYXhfc2lnZmlsZXNfdG9fY29tcGFyZSA9IDIwCisgICAgICAgIGZpcnN0LCByZXN0ID0gZmlsZXNbOm1heF9zaWdmaWxlc190b19jb21wYXJlXSwgZmlsZXNbbWF4X3NpZ2ZpbGVzX3RvX2NvbXBhcmU6XQorICAgICAgICBjb21wYXJlX3NpZ2ZpbGVzKGZpcnN0LCBmaWxlczEua2V5cygpLCBmaWxlczIua2V5cygpLCBjb21wYXJlPVRydWUpCisgICAgICAgIGNvbXBhcmVfc2lnZmlsZXMocmVzdCwgZmlsZXMxLmtleXMoKSwgZmlsZXMyLmtleXMoKSwgY29tcGFyZT1GYWxzZSkKKworICAgICAgICBzZWxmLmZhaWwoInNzdGF0ZSBoYXNoZXMgbm90IGlkZW50aWNhbC4iKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvdGluZm9pbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg4OWE0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkKQEAgLTAsMCArMSwyMzEgQEAKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgdGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBiYi50aW5mb2lsCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgVGluZm9pbFRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIiIiIEJhc2ljIHRlc3RzIGZvciB0aGUgdGluZm9pbCBBUEkgIiIiCisKKyAgICBAT0VUZXN0SUQoMTU2OCkKKyAgICBkZWYgdGVzdF9nZXR2YXIoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQorICAgICAgICAgICAgbWFjaGluZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdNQUNISU5FJykKKyAgICAgICAgICAgIGlmIG5vdCBtYWNoaW5lOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGdldCBNQUNISU5FIHZhbHVlIC0gcmV0dXJuZWQgJXMnICUgbWFjaGluZSkKKworICAgIEBPRVRlc3RJRCgxNTY5KQorICAgIGRlZiB0ZXN0X2V4cGFuZChzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKFRydWUpCisgICAgICAgICAgICBleHByID0gJyR7QG9zLmdldHBpZCgpfScKKyAgICAgICAgICAgIHBpZCA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZXhwYW5kKGV4cHIpCisgICAgICAgICAgICBpZiBub3QgcGlkOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGV4cGFuZCAiJXMiIC0gcmV0dXJuZWQgJXMnICUgKGV4cHIsIHBpZCkpCisKKyAgICBAT0VUZXN0SUQoMTU3MCkKKyAgICBkZWYgdGVzdF9nZXR2YXJfYmJfb3JpZ2VudihzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKFRydWUpCisgICAgICAgICAgICBvcmlnZW52ID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0JCX09SSUdFTlYnLCBGYWxzZSkKKyAgICAgICAgICAgIGlmIG5vdCBvcmlnZW52OgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGdldCBCQl9PUklHRU5WIHZhbHVlIC0gcmV0dXJuZWQgJXMnICUgb3JpZ2VudikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZ2Vudi5nZXRWYXIoJ0hPTUUnLCBGYWxzZSksIG9zLmVudmlyb25bJ0hPTUUnXSkKKworICAgIEBPRVRlc3RJRCgxNTcxKQorICAgIGRlZiB0ZXN0X3BhcnNlX3JlY2lwZShzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQorICAgICAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKKyAgICAgICAgICAgIGJlc3QgPSB0aW5mb2lsLmZpbmRfYmVzdF9wcm92aWRlcih0ZXN0cmVjaXBlKQorICAgICAgICAgICAgaWYgbm90IGJlc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgcHJvdmlkaW5nICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoYmVzdFszXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHJlY2lwZSwgcmQuZ2V0VmFyKCdQTicpKQorCisgICAgQE9FVGVzdElEKDE1NzIpCisgICAgZGVmIHRlc3RfcGFyc2VfcmVjaXBlX2NvcHlfZXhwYW5kKHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCisgICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJworICAgICAgICAgICAgYmVzdCA9IHRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHRlc3RyZWNpcGUpCisgICAgICAgICAgICBpZiBub3QgYmVzdDoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBwcm92aWRpbmcgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShiZXN0WzNdKQorICAgICAgICAgICAgIyBDaGVjayB3ZSBjYW4gZ2V0IHZhcmlhYmxlIHZhbHVlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cmVjaXBlLCByZC5nZXRWYXIoJ1BOJykpCisgICAgICAgICAgICAjIENoZWNrIHRoYXQgZXhwYW5kaW5nIGEgdmFsdWUgdGhhdCBpbmNsdWRlcyBhIHZhcmlhYmxlIHJlZmVyZW5jZSB3b3JrcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cmVjaXBlLCByZC5nZXRWYXIoJ0JQTicpKQorICAgICAgICAgICAgIyBOb3cgY2hlY2sgdGhhdCBjaGFuZ2luZyB0aGUgcmVmZXJlbmNlZCB2YXJpYWJsZSdzIHZhbHVlIGluIGEgY29weSBnaXZlcyB0aGF0CisgICAgICAgICAgICAjIHZhbHVlIHdoZW4gZXhwYW5kaW5nCisgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkocmQpCisgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQTicsICdoZWxsbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycsIGxvY2FsZGF0YS5nZXRWYXIoJ0JQTicpKQorCisgICAgQE9FVGVzdElEKDE1NzMpCisgICAgZGVmIHRlc3RfcGFyc2VfcmVjaXBlX2luaXRpYWxfZGF0YXN0b3JlKHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCisgICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJworICAgICAgICAgICAgYmVzdCA9IHRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHRlc3RyZWNpcGUpCisgICAgICAgICAgICBpZiBub3QgYmVzdDoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBwcm92aWRpbmcgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgIGRjb3B5ID0gYmIuZGF0YS5jcmVhdGVDb3B5KHRpbmZvaWwuY29uZmlnX2RhdGEpCisgICAgICAgICAgICBkY29weS5zZXRWYXIoJ01ZVkFSSUFCTEUnLCAnc29tZXZhbHVlJykKKyAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShiZXN0WzNdLCBjb25maWdfZGF0YT1kY29weSkKKyAgICAgICAgICAgICMgQ2hlY2sgd2UgY2FuIGdldCB2YXJpYWJsZSB2YWx1ZXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NvbWV2YWx1ZScsIHJkLmdldFZhcignTVlWQVJJQUJMRScpKQorCisgICAgQE9FVGVzdElEKDE1NzQpCisgICAgZGVmIHRlc3RfbGlzdF9yZWNpcGVzKHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCisgICAgICAgICAgICAjIENoZWNrIHBrZ19wbgorICAgICAgICAgICAgY2hlY2twbnMgPSBbJ3RhcicsICdhdXRvbWFrZScsICdjb3JldXRpbHMnLCAnbTQtbmF0aXZlJywgJ25hdGl2ZXNkay1nY2MnXQorICAgICAgICAgICAgcGtnX3BuID0gdGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfcG4KKyAgICAgICAgICAgIGZvciBwbiBpbiBjaGVja3BuczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBuLCBwa2dfcG4pCisgICAgICAgICAgICAjIENoZWNrIHBrZ19mbgorICAgICAgICAgICAgY2hlY2tmbnMgPSB7J25hdGl2ZXNkay1nY2MnOiAnXnZpcnR1YWw6bmF0aXZlc2RrOi4qJywgJ2NvcmV1dGlscyc6ICcuKi9jb3JldXRpbHNfLiouYmInfQorICAgICAgICAgICAgZm9yIGZuLCBwbiBpbiB0aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbJyddLnBrZ19mbi5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIHBuIGluIGNoZWNrcG5zOgorICAgICAgICAgICAgICAgICAgICBpZiBwbiBpbiBjaGVja2ZuczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChjaGVja2Zuc1twbl0sIGZuKSwgJ0VudHJ5IGZvciAlczogJXMgZGlkIG5vdCBtYXRjaCAlcycgJSAocG4sIGZuLCBjaGVja2Zuc1twbl0pKQorICAgICAgICAgICAgICAgICAgICBjaGVja3Bucy5yZW1vdmUocG4pCisgICAgICAgICAgICBpZiBjaGVja3BuczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHBrZ19mbiBlbnRyaWVzIGZvcjogJXMnICUgJywgJy5qb2luKGNoZWNrcG5zKSkKKworICAgIEBPRVRlc3RJRCgxNTc1KQorICAgIGRlZiB0ZXN0X3dhaXRfZXZlbnQoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQorCisgICAgICAgICAgICB0aW5mb2lsLnNldF9ldmVudF9tYXNrKFsnYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kJywgJ2JiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCddKQorCisgICAgICAgICAgICAjIE5lZWQgdG8gZHJhaW4gZXZlbnRzIG90aGVyd2lzZSBldmVudHMgdGhhdCB3ZXJlIG1hc2tlZCBtYXkgc3RpbGwgYmUgaW4gdGhlIHF1ZXVlCisgICAgICAgICAgICB3aGlsZSB0aW5mb2lsLndhaXRfZXZlbnQoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIHBhdHRlcm4gPSAnY29uZicKKyAgICAgICAgICAgIHJlcyA9IHRpbmZvaWwucnVuX2NvbW1hbmQoJ2ZpbmRGaWxlc01hdGNoaW5nSW5EaXInLCBwYXR0ZXJuLCAnY29uZi9tYWNoaW5lJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXMpCisKKyAgICAgICAgICAgIGV2ZW50cmVjZWl2ZWQgPSBGYWxzZQorICAgICAgICAgICAgY29tbWFuZGNvbXBsZXRlID0gRmFsc2UKKyAgICAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgICMgV2FpdCBmb3IgNXMgaW4gdG90YWwgc28gd2UnZCBkZXRlY3Qgc3B1cmlvdXMgaGVhcnRiZWF0IGV2ZW50cyBmb3IgZXhhbXBsZQorICAgICAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgLSBzdGFydCA8IDU6CisgICAgICAgICAgICAgICAgZXZlbnQgPSB0aW5mb2lsLndhaXRfZXZlbnQoMSkKKyAgICAgICAgICAgICAgICBpZiBldmVudDoKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRjb21wbGV0ZSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5GaWxlc01hdGNoaW5nRm91bmQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXR0ZXJuLCBldmVudC5fcGF0dGVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3FlbXVhcm0uY29uZicsIGV2ZW50Ll9tYXRjaGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRyZWNlaXZlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBsb2dnaW5nLkxvZ1JlY29yZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGV2ZW50OiAlcycgJSBldmVudCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbW1hbmRjb21wbGV0ZSwgJ1RpbWVkIG91dCB3YWl0aW5nIGZvciBDb21tYW5kQ29tcGxldGVkIGV2ZW50IGZyb20gYml0YmFrZSBzZXJ2ZXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV2ZW50cmVjZWl2ZWQsICdEaWQgbm90IHJlY2VpdmUgRmlsZXNNYXRjaGluZ0ZvdW5kIGV2ZW50IGZyb20gYml0YmFrZSBzZXJ2ZXInKQorCisgICAgQE9FVGVzdElEKDE1NzYpCisgICAgZGVmIHRlc3Rfc2V0dmFyaWFibGVfY2xlYW4oc2VsZik6CisgICAgICAgICMgRmlyc3QgY2hlY2sgdGhhdCBzZXRWYXJpYWJsZSBhZmZlY3RzIHRoZSBkYXRhc3RvcmUKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCisgICAgICAgICAgICB0aW5mb2lsLnJ1bl9jb21tYW5kKCdzZXRWYXJpYWJsZScsICdURVNUVkFSJywgJ3NwZWNpYWx2YWx1ZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJyksICdzcGVjaWFsdmFsdWUnLCAnVmFsdWUgc2V0IHVzaW5nIHNldFZhcmlhYmxlIGlzIG5vdCByZWZsZWN0ZWQgaW4gY2xpZW50LXNpZGUgZ2V0VmFyKCknKQorCisgICAgICAgICMgTm93IGNoZWNrIHRoYXQgdGhlIHNldFZhcmlhYmxlJ3MgZWZmZWN0cyBhcmUgbm8gbG9uZ2VyIHByZXNlbnQKKyAgICAgICAgIyAodGhpcyBtYXkgbGVnaXRpbWF0ZWx5IGJyZWFrIGluIGZ1dHVyZSBpZiB3ZSBzdG9wIHJlaW5pdGlhbGlzaW5nCisgICAgICAgICMgdGhlIGRhdGFzdG9yZSwgaW4gd2hpY2ggY2FzZSB3ZSdsbCBoYXZlIHRvIHJlY29uc2lkZXIgdXNlIG9mCisgICAgICAgICMgc2V0VmFyaWFibGUgZW50aXJlbHkpCisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpLCAnc3BlY2lhbHZhbHVlJywgJ1ZhbHVlIHNldCB1c2luZyBzZXRWYXJpYWJsZSBpcyBzdGlsbCBwcmVzZW50IScpCisKKyAgICAgICAgIyBOb3cgY2hlY2sgdGhhdCBzZXRWYXIgb24gdGhlIG1haW4gZGF0YXN0b3JlIHdvcmtzICh1c2VzIHNldFZhcmlhYmxlIGludGVybmFsbHkpCisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVInLCAnc3BlY2lhbHZhbHVlJykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0VmFyaWFibGUnLCAnVEVTVFZBUicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnc3BlY2lhbHZhbHVlJywgJ1ZhbHVlIHNldCB1c2luZyBjb25maWdfZGF0YS5zZXRWYXIoKSBpcyBub3QgcmVmbGVjdGVkIGluIGNvbmZpZ19kYXRhLmdldFZhcigpJykKKworICAgIEBPRVRlc3RJRCgxODg0KQorICAgIGRlZiB0ZXN0X2RhdGFzdG9yZV9vcGVyYXRpb25zKHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKKyAgICAgICAgICAgICMgVGVzdCBzZXRWYXJGbGFnKCkgLyBnZXRWYXJGbGFnKCkKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyRmxhZygnVEVTVFZBUicsICdmbGFnbmFtZScsICdmbGFndmFsJykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXJGbGFnKCdURVNUVkFSJywgJ2ZsYWduYW1lJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdmbGFndmFsJywgJ1ZhbHVlIHNldCB1c2luZyBjb25maWdfZGF0YS5zZXRWYXJGbGFnKCkgaXMgbm90IHJlZmxlY3RlZCBpbiBjb25maWdfZGF0YS5nZXRWYXJGbGFnKCknKQorICAgICAgICAgICAgIyBUZXN0IGRlbFZhckZsYWcoKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXJGbGFnKCdURVNUVkFSJywgJ290aGVyZmxhZycsICdvdGhlcnZhbHVlJykKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuZGVsVmFyRmxhZygnVEVTVFZBUicsICdmbGFnbmFtZScpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygnVEVTVFZBUicsICdmbGFnbmFtZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBOb25lLCAnVmFyZmxhZyBkZWxldGVkIHVzaW5nIGNvbmZpZ19kYXRhLmRlbFZhckZsYWcoKSBpcyBub3QgcmVmbGVjdGVkIGluIGNvbmZpZ19kYXRhLmdldFZhckZsYWcoKScpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygnVEVTVFZBUicsICdvdGhlcmZsYWcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ290aGVydmFsdWUnLCAnVmFyZmxhZyBkZWxldGVkIHVzaW5nIGNvbmZpZ19kYXRhLmRlbFZhckZsYWcoKSBjYXVzZWQgdW5yZWxhdGVkIGZsYWcgdG8gYmUgcmVtb3ZlZCcpCisgICAgICAgICAgICAjIFRlc3QgZGVsVmFyKCkKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSJywgJ3ZhcnZhbHVlJykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ3ZhcnZhbHVlJywgJ1ZhbHVlIHNldCB1c2luZyBjb25maWdfZGF0YS5zZXRWYXIoKSBpcyBub3QgcmVmbGVjdGVkIGluIGNvbmZpZ19kYXRhLmdldFZhcigpJykKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuZGVsVmFyKCdURVNUVkFSJykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgTm9uZSwgJ1ZhcmlhYmxlIGRlbGV0ZWQgdXNpbmcgY29uZmlnX2RhdGEuZGVsVmFyKCkgYXBwZWFycyB0byBzdGlsbCBoYXZlIGEgdmFsdWUnKQorICAgICAgICAgICAgIyBUZXN0IHJlbmFtZVZhcigpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUk9MRCcsICdvcmlndmFsdWUnKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5yZW5hbWVWYXIoJ1RFU1RWQVJPTEQnLCAnVEVTVFZBUk5FVycpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFST0xEJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5vbmUsICdWYXJpYWJsZSByZW5hbWVkIHVzaW5nIGNvbmZpZ19kYXRhLnJlbmFtZVZhcigpIHN0aWxsIHNlZW1zIHRvIGV4aXN0JykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVJORVcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ29yaWd2YWx1ZScsICdWYXJpYWJsZSByZW5hbWVkIHVzaW5nIGNvbmZpZ19kYXRhLnJlbmFtZVZhcigpIGRvZXMgbm90IGFwcGVhciB3aXRoIG5ldyBuYW1lJykKKyAgICAgICAgICAgICMgVGVzdCBvdmVycmlkZXMKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSJywgJ29yaWdpbmFsJykKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSX292ZXJyaWRlb25lJywgJ29uZScpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUl9vdmVycmlkZXR3bycsICd0d28nKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5hcHBlbmRWYXIoJ09WRVJSSURFUycsICc6b3ZlcnJpZGVvbmUnKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnb25lJywgJ1ZhcmlhYmxlIG92ZXJyaWRlcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5JykKKworICAgIGRlZiB0ZXN0X3ZhcmlhYmxlX2hpc3Rvcnkoc2VsZik6CisgICAgICAgICMgQmFzaWMgdGVzdCB0byBlbnN1cmUgdGhhdCB2YXJpYWJsZSBoaXN0b3J5IHdvcmtzIHdoZW4gdHJhY2tpbmc9VHJ1ZQorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCh0cmFja2luZz1UcnVlKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQorICAgICAgICAgICAgIyBOb3RlIHRoYXQgX3RyYWNraW5nIGZvciBhbnkgZGF0YXN0b3JlIHdlIGdldCB3aWxsIGJlCisgICAgICAgICAgICAjIGZhbHNlIGhlcmUsIHRoYXQncyBjdXJyZW50bHkgZXhwZWN0ZWQgLSBzbyB3ZSBjYW4ndCBjaGVjaworICAgICAgICAgICAgIyBmb3IgdGhhdAorICAgICAgICAgICAgaGlzdG9yeSA9IHRpbmZvaWwuY29uZmlnX2RhdGEudmFyaGlzdG9yeS52YXJpYWJsZSgnRExfRElSJykKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBoaXN0b3J5OgorICAgICAgICAgICAgICAgIGlmIGVudHJ5WydmaWxlJ10uZW5kc3dpdGgoJy9iaXRiYWtlLmNvbmYnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZW50cnlbJ29wJ10gaW4gWydzZXQnLCAnc2V0PyddOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdEaWQgbm90IGZpbmQgaGlzdG9yeSBlbnRyeSBzZXR0aW5nIERMX0RJUiBpbiBiaXRiYWtlLmNvbmYuIEhpc3Rvcnk6ICVzJyAlIGhpc3RvcnkpCisgICAgICAgICAgICAjIENoZWNrIGl0IHdvcmtzIGZvciByZWNpcGVzIGFzIHdlbGwKKyAgICAgICAgICAgIHRlc3RyZWNpcGUgPSAnemxpYicKKyAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGUodGVzdHJlY2lwZSkKKyAgICAgICAgICAgIGhpc3RvcnkgPSByZC52YXJoaXN0b3J5LnZhcmlhYmxlKCdMSUNFTlNFJykKKyAgICAgICAgICAgIGJiZm91bmQgPSAtMQorICAgICAgICAgICAgcmVjaXBlZm91bmQgPSAtMQorICAgICAgICAgICAgZm9yIGksIGVudHJ5IGluIGVudW1lcmF0ZShoaXN0b3J5KToKKyAgICAgICAgICAgICAgICBpZiBlbnRyeVsnZmlsZSddLmVuZHN3aXRoKCcvYml0YmFrZS5jb25mJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGVudHJ5WydkZXRhaWwnXSA9PSAnSU5WQUxJRCcgYW5kIGVudHJ5WydvcCddIGluIFsnc2V0JywgJ3NldD8nXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiZm91bmQgPSBpCisgICAgICAgICAgICAgICAgZWxpZiBlbnRyeVsnZmlsZSddLmVuZHN3aXRoKCcuYmInKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZW50cnlbJ29wJ10gPT0gJ3NldCc6CisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVmb3VuZCA9IGkKKyAgICAgICAgICAgIGlmIGJiZm91bmQgPT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdEaWQgbm90IGZpbmQgaGlzdG9yeSBlbnRyeSBzZXR0aW5nIExJQ0VOU0UgaW4gYml0YmFrZS5jb25mIHBhcnNpbmcgJXMgcmVjaXBlLiBIaXN0b3J5OiAlcycgJSAodGVzdHJlY2lwZSwgaGlzdG9yeSkpCisgICAgICAgICAgICBpZiByZWNpcGVmb3VuZCA9PSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0RpZCBub3QgZmluZCBoaXN0b3J5IGVudHJ5IHNldHRpbmcgTElDRU5TRSBpbiAlcyByZWNpcGUuIEhpc3Rvcnk6ICVzJyAlICh0ZXN0cmVjaXBlLCBoaXN0b3J5KSkKKyAgICAgICAgICAgIGlmIGJiZm91bmQgPiByZWNpcGVmb3VuZDoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0hpc3RvcnkgZW50cnkgc2V0dGluZyBMSUNFTlNFIGluICVzIHJlY2lwZSBhbmQgaW4gYml0YmFrZS5jb25mIGluIHdyb25nIG9yZGVyLiBIaXN0b3J5OiAlcycgJSAodGVzdHJlY2lwZSwgaGlzdG9yeSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUxZDU3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQpAQCAtMCwwICsxLDEwNjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKKyMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisjCisjIEFVVEhPUlMKKyMgRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisKKyIiIlRlc3QgY2FzZXMgZm9yIHdpYy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBnbG9iIGltcG9ydCBnbG9iCitmcm9tIHNodXRpbCBpbXBvcnQgcm10cmVlLCBjb3B5Citmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMsIGxydV9jYWNoZQorZnJvbSB0ZW1wZmlsZSBpbXBvcnQgTmFtZWRUZW1wb3JhcnlGaWxlCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycywgcnVucWVtdQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKKworQGxydV9jYWNoZShtYXhzaXplPTMyKQorZGVmIGdldF9ob3N0X2FyY2gocmVjaXBlKToKKyAgICAiIiJBIGNhY2hlZCBjYWxsIHRvIGdldF9iYl92YXIoJ0hPU1RfQVJDSCcsIDxyZWNpcGU+KSIiIgorICAgIHJldHVybiBnZXRfYmJfdmFyKCdIT1NUX0FSQ0gnLCByZWNpcGUpCisKKworZGVmIG9ubHlfZm9yX2FyY2goYXJjaHMsIGltYWdlPSdjb3JlLWltYWdlLW1pbmltYWwnKToKKyAgICAiIiJEZWNvcmF0b3IgZm9yIHdyYXBwaW5nIHRlc3QgY2FzZXMgdGhhdCBjYW4gYmUgcnVuIG9ubHkgZm9yIHNwZWNpZmljIHRhcmdldAorICAgIGFyY2hpdGVjdHVyZXMuIEEgbGlzdCBvZiBjb21wYXRpYmxlIGFyY2hpdGVjdHVyZXMgaXMgcGFzc2VkIGluIGBhcmNoc2AuCisgICAgQ3VycmVudCBhcmNoaXRlY3R1cmUgd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHBhcnNpbmcgYml0YmFrZSBvdXRwdXQgZm9yCisgICAgYGltYWdlYCByZWNpcGUuCisgICAgIiIiCisgICAgZGVmIHdyYXBwZXIoZnVuYyk6CisgICAgICAgIEB3cmFwcyhmdW5jKQorICAgICAgICBkZWYgd3JhcHBlZF9mKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBhcmNoID0gZ2V0X2hvc3RfYXJjaChpbWFnZSkKKyAgICAgICAgICAgIGlmIGFyY2hzIGFuZCBhcmNoIG5vdCBpbiBhcmNoczoKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiVGVzdGNhc2UgYXJjaCBkZXBlbmRlbmN5IG5vdCBtZXQ6ICVzIiAlIGFyY2gpCisgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHdyYXBwZWRfZi5fX25hbWVfXyA9IGZ1bmMuX19uYW1lX18KKyAgICAgICAgcmV0dXJuIHdyYXBwZWRfZgorICAgIHJldHVybiB3cmFwcGVyCisKKworY2xhc3MgV2ljKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIiIiV2ljIHRlc3QgY2xhc3MuIiIiCisKKyAgICByZXN1bHRkaXIgPSAiL3Zhci90bXAvd2ljLm9lLXNlbGZ0ZXN0LyIKKyAgICBpbWFnZV9pc19yZWFkeSA9IEZhbHNlCisgICAgbmF0aXZlX3N5c3Jvb3QgPSBOb25lCisgICAgd2ljZW52X2NhY2hlID0ge30KKworICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgorICAgICAgICAiIiJUaGlzIGNvZGUgaXMgZXhlY3V0ZWQgYmVmb3JlIGVhY2ggdGVzdCBtZXRob2QuIiIiCisgICAgICAgIHN1cGVyKFdpYywgc2VsZikuc2V0VXBMb2NhbCgpCisgICAgICAgIGlmIG5vdCBzZWxmLm5hdGl2ZV9zeXNyb290OgorICAgICAgICAgICAgV2ljLm5hdGl2ZV9zeXNyb290ID0gZ2V0X2JiX3ZhcignU1RBR0lOR19ESVJfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgIyBEbyB0aGlzIGhlcmUgaW5zdGVhZCBvZiBpbiBzZXRVcENsYXNzIGFzIHRoZSBiYXNlIHNldFVwIGRvZXMgc29tZQorICAgICAgICAjIGNsZWFuIHVwIHdoaWNoIGNhbiByZXN1bHQgaW4gdGhlIG5hdGl2ZSB0b29scyBidWlsdCBlYXJsaWVyIGluCisgICAgICAgICMgc2V0VXBDbGFzcyBiZWluZyB1bmF2YWlsYWJsZS4KKyAgICAgICAgaWYgbm90IFdpYy5pbWFnZV9pc19yZWFkeToKKyAgICAgICAgICAgIGlmIGdldF9iYl92YXIoJ1VTRV9OTFMnKSA9PSAneWVzJzoKKyAgICAgICAgICAgICAgICBiaXRiYWtlKCd3aWMtdG9vbHMnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd3aWMtdG9vbHMgY2Fubm90IGJlIGJ1aWx0IGR1ZSBpdHMgKGludGx0b29sfGdldHRleHQpLW5hdGl2ZSBkZXBlbmRlbmN5IGFuZCBOTFMgZGlzYWJsZScpCisKKyAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgICAgICBXaWMuaW1hZ2VfaXNfcmVhZHkgPSBUcnVlCisKKyAgICAgICAgcm10cmVlKHNlbGYucmVzdWx0ZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCisKKyAgICBkZWYgdGVhckRvd25Mb2NhbChzZWxmKToKKyAgICAgICAgIiIiUmVtb3ZlIHJlc3VsdGRpciBhcyBpdCBtYXkgY29udGFpbiBpbWFnZXMuIiIiCisgICAgICAgIHJtdHJlZShzZWxmLnJlc3VsdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQorICAgICAgICBzdXBlcihXaWMsIHNlbGYpLnRlYXJEb3duTG9jYWwoKQorCisgICAgQE9FVGVzdElEKDE1NTIpCisgICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgLS12ZXJzaW9uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgLS12ZXJzaW9uJykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMDgpCisgICAgZGVmIHRlc3RfaGVscChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgLS1oZWxwIGFuZCB3aWMgLWgiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyAtLWhlbHAnKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgLWgnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIwOSkKKyAgICBkZWYgdGVzdF9jcmVhdGVoZWxwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBjcmVhdGUgLS1oZWxwIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgY3JlYXRlIC0taGVscCcpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjEwKQorICAgIGRlZiB0ZXN0X2xpc3RoZWxwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBsaXN0IC0taGVscCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3QgLS1oZWxwJykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE1NTMpCisgICAgZGVmIHRlc3RfaGVscF9jcmVhdGUoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgY3JlYXRlIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBjcmVhdGUnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTU1NCkKKyAgICBkZWYgdGVzdF9oZWxwX2xpc3Qoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgbGlzdCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgbGlzdCcpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjE1KQorICAgIGRlZiB0ZXN0X2hlbHBfb3ZlcnZpZXcoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgb3ZlcnZpZXciIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIG92ZXJ2aWV3Jykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMTYpCisgICAgZGVmIHRlc3RfaGVscF9wbHVnaW5zKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIHBsdWdpbnMiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIHBsdWdpbnMnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIxNykKKyAgICBkZWYgdGVzdF9oZWxwX2tpY2tzdGFydChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBraWNrc3RhcnQiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIGtpY2tzdGFydCcpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNTU1KQorICAgIGRlZiB0ZXN0X2xpc3RfaW1hZ2VzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBsaXN0IGltYWdlcyIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3QgaW1hZ2VzJykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE1NTYpCisgICAgZGVmIHRlc3RfbGlzdF9zb3VyY2VfcGx1Z2lucyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgbGlzdCBzb3VyY2UtcGx1Z2lucyIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3Qgc291cmNlLXBsdWdpbnMnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTU1NykKKyAgICBkZWYgdGVzdF9saXN0ZWRfaW1hZ2VzX2hlbHAoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGxpc3RlZCBpbWFnZXMgaGVscCIiIgorICAgICAgICBvdXRwdXQgPSBydW5DbWQoJ3dpYyBsaXN0IGltYWdlcycpLm91dHB1dAorICAgICAgICBpbWFnZWxpc3QgPSBbbGluZS5zcGxpdCgpWzBdIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCldCisgICAgICAgIGZvciBpbWFnZSBpbiBpbWFnZWxpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3QgJXMgaGVscCcgJSBpbWFnZSkuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMTMpCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfc3ViY29tbWFuZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB1bnN1cHBvcnRlZCBzdWJjb21tYW5kIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCd3aWMgdW5zdXBwb3J0ZWQnLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjE0KQorICAgIGRlZiB0ZXN0X25vX2NvbW1hbmQoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIHdpdGhvdXQgY29tbWFuZCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHJ1bkNtZCgnd2ljJywgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIxMSkKKyAgICBkZWYgdGVzdF9idWlsZF9pbWFnZV9uYW1lKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCIiIgorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDExNTcpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3RfZ3B0X2ltYWdlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIGNvcmUtaW1hZ2UtbWluaW1hbCB3aXRoIGdwdCB0YWJsZSBhbmQgVVVJRCBib290IiIiCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIGRpcmVjdGRpc2stZ3B0IC0taW1hZ2UtbmFtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMzQ2KQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X2lzb19pbWFnZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBoeWJyaWQgaXNvIGltYWdlIHdpdGggbGVnYWN5IGFuZCBFRkkgYm9vdCIiIgorICAgICAgICBjb25maWcgPSAnSU5JVFJBTUZTX0lNQUdFID0gImNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiXG4nXAorICAgICAgICAgICAgICAgICAnTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSJcbidcCisgICAgICAgICAgICAgICAgICdERVBFTkRTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCArPSAic3lzbGludXgiXG4nCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIG1raHlicmlkaXNvIC0taW1hZ2UtbmFtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiSFlCUklEX0lTT19JTUctKi5kaXJlY3QiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiSFlCUklEX0lTT19JTUctKi5pc28iKSkpCisKKyAgICBAT0VUZXN0SUQoMTM0OCkKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9xZW11eDg2X2RpcmVjdGRpc2soc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgcWVtdXgtODYtZGlyZWN0ZGlzayBpbWFnZSIiIgorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBxZW11eDg2LWRpcmVjdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInFlbXV4ODYtZGlyZWN0ZGlzay0qZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDEzNTApCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3RfbWtlZmlkaXNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIG1rZWZpZGlzayBpbWFnZSIiIgorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBta2VmaWRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIm1rZWZpZGlzay0qZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDEzODUpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3RfYm9vdGxvYWRlcl9jb25maWcoc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZyBpbWFnZSIiIgorICAgICAgICBjb25maWcgPSAnREVQRU5EU19wbi1jb3JlLWltYWdlLW1pbmltYWwgKz0gInN5c2xpbnV4IlxuJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnLSpkaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTU2MCkKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9zeXN0ZW1kX2Jvb3RkaXNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIHN5c3RlbWQtYm9vdGRpc2sgaW1hZ2UiIiIKKyAgICAgICAgY29uZmlnID0gJ01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiXG4nCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHN5c3RlbWQtYm9vdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInN5c3RlbWQtYm9vdGRpc2stKmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNTYxKQorICAgIGRlZiB0ZXN0X3NkaW1hZ2VfYm9vdHBhcnQoc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2Ygc2RpbWFnZS1ib290cGFydCBpbWFnZSIiIgorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzZGltYWdlLWJvb3RwYXJ0IC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBraW1ndHlwZSA9IGdldF9iYl92YXIoJ0tFUk5FTF9JTUFHRVRZUEUnLCAnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lNQUdFX0JPT1RfRklMRVMgPSAiJXMiXG4nICUga2ltZ3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInNkaW1hZ2UtYm9vdHBhcnQtKmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNTYyKQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X2RlZmF1bHRfb3V0cHV0X2RpcihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBkZWZhdWx0IG91dHB1dCBsb2NhdGlvbiIiIgorICAgICAgICBmb3IgZm5hbWUgaW4gZ2xvYigiZGlyZWN0ZGlzay0qLmRpcmVjdCIpOgorICAgICAgICAgICAgb3MucmVtb3ZlKGZuYW1lKQorICAgICAgICBjb25maWcgPSAnREVQRU5EU19wbi1jb3JlLWltYWdlLW1pbmltYWwgKz0gInN5c2xpbnV4IlxuJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBkaXJlY3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2IoImRpcmVjdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTIxMikKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9idWlsZF9hcnRpZmFjdHMoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGNyZWF0ZSBkaXJlY3RkaXNrIHByb3ZpZGluZyBhbGwgYXJ0aWZhY3RzLiIiIgorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVEFHSU5HX0RBVEFESVInLCAnUkVDSVBFX1NZU1JPT1RfTkFUSVZFJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ljLXRvb2xzJykKKyAgICAgICAgYmJfdmFycy51cGRhdGUoZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX1JPT1RGUyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29yZS1pbWFnZS1taW5pbWFsJykpCisgICAgICAgIGJidmFycyA9IHtrZXkubG93ZXIoKTogdmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gYmJfdmFycy5pdGVtcygpfQorICAgICAgICBiYnZhcnNbJ3Jlc3VsdGRpciddID0gc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc3RhdHVzID0gcnVuQ21kKCJ3aWMgY3JlYXRlIGRpcmVjdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi1iICUoc3RhZ2luZ19kYXRhZGlyKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi1rICUoZGVwbG95X2Rpcl9pbWFnZSlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItbiAlKHJlY2lwZV9zeXNyb290X25hdGl2ZSlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItciAlKGltYWdlX3Jvb3RmcylzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItbyAlKHJlc3VsdGRpcilzIiAlIGJidmFycykuc3RhdHVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTI2NCkKKyAgICBkZWYgdGVzdF9jb21wcmVzc19nemlwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggZ3ppcCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIGd6aXAgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdC5neiIpKSkKKworICAgIEBPRVRlc3RJRCgxMjY1KQorICAgIGRlZiB0ZXN0X2NvbXByZXNzX2J6aXAyKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggYnppcDIiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyBiemlwMiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0LmJ6MiIpKSkKKworICAgIEBPRVRlc3RJRCgxMjY2KQorICAgIGRlZiB0ZXN0X2NvbXByZXNzX3h6KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggeHoiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWNvbXByZXNzLXdpdGg9eHogLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdC54eiIpKSkKKworICAgIEBPRVRlc3RJRCgxMjY3KQorICAgIGRlZiB0ZXN0X3dyb25nX2NvbXByZXNzb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3QgaG93IHdpYyBicmVha3MgaWYgd3JvbmcgY29tcHJlc3NvciBpcyBwcm92aWRlZCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIHdyb25nIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNTU4KQorICAgIGRlZiB0ZXN0X2RlYnVnX3Nob3J0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IC1EIG9wdGlvbiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTY1OCkKKyAgICBkZWYgdGVzdF9kZWJ1Z19sb25nKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0tZGVidWcgb3B0aW9uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1kZWJ1ZyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE1NjMpCisgICAgZGVmIHRlc3Rfc2tpcF9idWlsZF9jaGVja19zaG9ydChzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtcyBvcHRpb24iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE2NzEpCisgICAgZGVmIHRlc3Rfc2tpcF9idWlsZF9jaGVja19sb25nKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0tc2tpcC1idWlsZC1jaGVjayBvcHRpb24iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXNraXAtYnVpbGQtY2hlY2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNTY0KQorICAgIGRlZiB0ZXN0X2J1aWxkX3Jvb3Rmc19zaG9ydChzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtZiBvcHRpb24iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE2NTYpCisgICAgZGVmIHRlc3RfYnVpbGRfcm9vdGZzX2xvbmcoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1idWlsZC1yb290ZnMgb3B0aW9uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1idWlsZC1yb290ZnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMjY4KQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X3Jvb3Rmc19pbmRpcmVjdF9yZWNpcGVzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHVzYWdlIG9mIHJvb3RmcyBwbHVnaW4gd2l0aCByb290ZnMgcmVjaXBlcyIiIgorICAgICAgICBzdGF0dXMgPSBydW5DbWQoIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzIHJvb3RmczE9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3RmcyByb290ZnMyPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDEyNjkpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3Rfcm9vdGZzX2FydGlmYWN0cyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB1c2FnZSBvZiByb290ZnMgcGx1Z2luIHdpdGggcm9vdGZzIHBhdGhzIiIiCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NUQUdJTkdfREFUQURJUicsICdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWMtdG9vbHMnKQorICAgICAgICBiYl92YXJzLnVwZGF0ZShnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfUk9PVEZTJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JlLWltYWdlLW1pbmltYWwnKSkKKyAgICAgICAgYmJ2YXJzID0ge2tleS5sb3dlcigpOiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBiYl92YXJzLml0ZW1zKCl9CisgICAgICAgIGJidmFyc1snd2tzJ10gPSAiZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMiCisgICAgICAgIGJidmFyc1sncmVzdWx0ZGlyJ10gPSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzdGF0dXMgPSBydW5DbWQoIndpYyBjcmVhdGUgJSh3a3MpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1ib290aW1nLWRpcj0lKHN0YWdpbmdfZGF0YWRpcilzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLWtlcm5lbC1kaXI9JShkZXBsb3lfZGlyX2ltYWdlKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tbmF0aXZlLXN5c3Jvb3Q9JShyZWNpcGVfc3lzcm9vdF9uYXRpdmUpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMtZGlyIHJvb3RmczE9JShpbWFnZV9yb290ZnMpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMtZGlyIHJvb3RmczI9JShpbWFnZV9yb290ZnMpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJShyZXN1bHRkaXIpcyIgJSBiYnZhcnMpLnN0YXR1cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICIlKHdrcylzLSouZGlyZWN0IiAlIGJidmFycykpKQorCisgICAgQE9FVGVzdElEKDE2NjEpCisgICAgZGVmIHRlc3RfZXhjbHVkZV9wYXRoKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0tZXhjbHVkZS1wYXRoIHdrcyBvcHRpb24uIiIiCisKKyAgICAgICAgb2xkcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBnZXRfYmJfdmFyKCJQQVRIIiwgIndpYy10b29scyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCisgICAgICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgICAgIHJvb3Rmc19kaXIgPSBnZXRfYmJfdmFyKCdJTUFHRV9ST09URlMnLCAnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgICAgICAgICB3a3Mud3JpdGUoIiIiCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCB1c3IKK3BhcnQgL3VzciAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tcm9vdGZzLWRpciAlcy91c3IKK3BhcnQgL2V0YyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIGJpbi8gLS1yb290ZnMtZGlyICVzL3VzciIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyb290ZnNfZGlyLCByb290ZnNfZGlyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQorCisgICAgICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisgICAgICAgICAgICB3aWNvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgJ3RlbXAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4od2ljb3V0KSkKKworICAgICAgICAgICAgd2ljaW1nID0gd2ljb3V0WzBdCisKKyAgICAgICAgICAgICMgdmVyaWZ5IHBhcnRpdGlvbiBzaXplIHdpdGggd2ljCisgICAgICAgICAgICByZXMgPSBydW5DbWQoInBhcnRlZCAtbSAlcyB1bml0IGIgcCAyPi9kZXYvbnVsbCIgJSB3aWNpbWcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCisKKyAgICAgICAgICAgICMgcGFyc2UgcGFydGVkIG91dHB1dCB3aGljaCBsb29rcyBsaWtlIHRoaXM6CisgICAgICAgICAgICAjIEJZVDtcbgorICAgICAgICAgICAgIyAvdmFyL3RtcC93aWMvYnVpbGQvdG1wZnd2amprZl8tMjAxNjExMTAxMjIyLWhkYS5kaXJlY3Q6MjAwTWlCOmZpbGU6NTEyOjUxMjptc2Rvczo6O1xuCisgICAgICAgICAgICAjIDE6MC4wME1pQjoyMDBNaUI6MjAwTWlCOmV4dDQ6OjtcbgorICAgICAgICAgICAgcGFydGxucyA9IHJlcy5vdXRwdXQuc3BsaXRsaW5lcygpWzI6XQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihwYXJ0bG5zKSkKKworICAgICAgICAgICAgZm9yIHBhcnQgaW4gWzEsIDIsIDNdOgorICAgICAgICAgICAgICAgIHBhcnRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0JWQiICUgcGFydCkKKyAgICAgICAgICAgICAgICBwYXJ0bG4gPSBwYXJ0bG5zW3BhcnQtMV0uc3BsaXQoIjoiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgbGVuKHBhcnRsbikpCisgICAgICAgICAgICAgICAgc3RhcnQgPSBpbnQocGFydGxuWzFdLnJzdHJpcCgiQiIpKSAvIDUxMgorICAgICAgICAgICAgICAgIGxlbmd0aCA9IGludChwYXJ0bG5bM10ucnN0cmlwKCJCIikpIC8gNTEyCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoImRkIGlmPSVzIG9mPSVzIHNraXA9JWQgY291bnQ9JWQiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2ljaW1nLCBwYXJ0X2ZpbGUsIHN0YXJ0LCBsZW5ndGgpKS5zdGF0dXMpCisKKyAgICAgICAgICAgIGRlZiBleHRyYWN0X2ZpbGVzKGRlYnVnZnNfb3V0cHV0KToKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBleHRyYWN0IGZpbGUgbmFtZXMgZnJvbSB0aGUgb3V0cHV0IG9mIGRlYnVnZnMgLVIgJ2xzIC1wJywKKyAgICAgICAgICAgICAgICB3aGljaCBsb29rcyBsaWtlIHRoaXM6CisKKyAgICAgICAgICAgICAgICAgLzIvMDQwNzU1LzAvMC8uLy9cbgorICAgICAgICAgICAgICAgICAvMi8wNDA3NTUvMC8wLy4uLy9cbgorICAgICAgICAgICAgICAgICAvMTEvMDQwNzAwLzAvMC9sb3N0K2ZvdW5kXk0vL1xuCisgICAgICAgICAgICAgICAgIC8xMi8wNDA3NTUvMTAwMi8xMDAyL3J1bi8vXG4KKyAgICAgICAgICAgICAgICAgLzEzLzA0MDc1NS8xMDAyLzEwMDIvc3lzLy9cbgorICAgICAgICAgICAgICAgICAvMTQvMDQwNzU1LzEwMDIvMTAwMi9iaW4vL1xuCisgICAgICAgICAgICAgICAgIC84MC8wNDA3NTUvMTAwMi8xMDAyL3Zhci8vXG4KKyAgICAgICAgICAgICAgICAgLzkyLzA0MDc1NS8xMDAyLzEwMDIvdG1wLy9cbgorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgICMgTk9URSB0aGUgb2NjYXNpb25hbCBeTSBpbiBmaWxlIG5hbWVzCisgICAgICAgICAgICAgICAgcmV0dXJuIFtsaW5lLnNwbGl0KCcvJylbNV0uc3RyaXAoKSBmb3IgbGluZSBpbiBcCisgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2ZzX291dHB1dC5zdHJpcCgpLnNwbGl0KCcvXG4nKV0KKworICAgICAgICAgICAgIyBUZXN0IHBhcnRpdGlvbiAxLCBzaG91bGQgY29udGFpbiB0aGUgbm9ybWFsIHJvb3QgZGlyZWN0b3JpZXMsIGV4Y2VwdAorICAgICAgICAgICAgIyAvdXNyLgorICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDEiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiZXRjIiwgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ1c3IiLCBmaWxlcykKKworICAgICAgICAgICAgIyBQYXJ0aXRpb24gMiwgc2hvdWxkIGNvbnRhaW4gY29tbW9uIGRpcmVjdG9yaWVzIGZvciAvdXNyLCBub3Qgcm9vdAorICAgICAgICAgICAgIyBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQyIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImV0YyIsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigidXNyIiwgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzaGFyZSIsIGZpbGVzKQorCisgICAgICAgICAgICAjIFBhcnRpdGlvbiAzLCBzaG91bGQgY29udGFpbiB0aGUgc2FtZSBhcyBwYXJ0aXRpb24gMiwgaW5jbHVkaW5nIHRoZSBiaW4KKyAgICAgICAgICAgICMgZGlyZWN0b3J5LCBidXQgbm90IHRoZSBmaWxlcyBpbnNpZGUgaXQuCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJldGMiLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInVzciIsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2hhcmUiLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImJpbiIsIGZpbGVzKQorICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCBiaW4nICVzIDI+L2Rldi9udWxsIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQzIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIi4iLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIi4uIiwgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihmaWxlcykpCisKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIFsxLCAyLCAzXToKKyAgICAgICAgICAgICAgICBwYXJ0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydCVkIiAlIHBhcnQpCisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhcnRfZmlsZSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gb2xkcGF0aAorCisgICAgQE9FVGVzdElEKDE2NjIpCisgICAgZGVmIHRlc3RfZXhjbHVkZV9wYXRoX2Vycm9ycyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWV4Y2x1ZGUtcGF0aCB3a3Mgb3B0aW9uIGVycm9yIGhhbmRsaW5nLiIiIgorICAgICAgICB3a3NfZmlsZSA9ICd0ZW1wLndrcycKKworICAgICAgICAjIEFic29sdXRlIGFyZ3VtZW50LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCAvdXNyIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKKyAgICAgICAgIyBBcmd1bWVudCBwb2ludGluZyB0byBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCAuLy4vLi4iKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKworICAgIEBPRVRlc3RJRCgxNDk2KQorICAgIGRlZiB0ZXN0X2JtYXBfc2hvcnQoc2VsZik6CisgICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiAuYm1hcCBmaWxlIC1tIG9wdGlvbiIiIgorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW0gLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc3RhdHVzID0gcnVuQ21kKGNtZCkuc3RhdHVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdC5ibWFwIikpKQorCisgICAgQE9FVGVzdElEKDE2NTUpCisgICAgZGVmIHRlc3RfYm1hcF9sb25nKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgLmJtYXAgZmlsZSAtLWJtYXAgb3B0aW9uIiIiCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtLWJtYXAgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc3RhdHVzID0gcnVuQ21kKGNtZCkuc3RhdHVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdC5ibWFwIikpKQorCisgICAgZGVmIF9nZXRfaW1hZ2VfZW52X3BhdGgoc2VsZiwgaW1hZ2UpOgorICAgICAgICAiIiJHZW5lcmF0ZSBhbmQgb2J0YWluIHRoZSBwYXRoIHRvIDxpbWFnZT4uZW52IiIiCisgICAgICAgIGlmIGltYWdlIG5vdCBpbiBzZWxmLndpY2Vudl9jYWNoZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnJXMgLWMgZG9fcm9vdGZzX3dpY2VudicgJSBpbWFnZSkuc3RhdHVzKQorICAgICAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1RBR0lOR19ESVInLCAnTUFDSElORSddLCBpbWFnZSkKKyAgICAgICAgICAgIHN0ZGlyID0gYmJfdmFyc1snU1RBR0lOR19ESVInXQorICAgICAgICAgICAgbWFjaGluZSA9IGJiX3ZhcnNbJ01BQ0hJTkUnXQorICAgICAgICAgICAgc2VsZi53aWNlbnZfY2FjaGVbaW1hZ2VdID0gb3MucGF0aC5qb2luKHN0ZGlyLCBtYWNoaW5lLCAnaW1nZGF0YScpCisgICAgICAgIHJldHVybiBzZWxmLndpY2Vudl9jYWNoZVtpbWFnZV0KKworICAgIEBPRVRlc3RJRCgxMzQ3KQorICAgIGRlZiB0ZXN0X2ltYWdlX2VudihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBnZW5lcmF0aW9uIG9mIDxpbWFnZT4uZW52IGZpbGVzLiIiIgorICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIGltZ2RhdGFkaXIgPSBzZWxmLl9nZXRfaW1hZ2VfZW52X3BhdGgoaW1hZ2UpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnSU1BR0VfQkFTRU5BTUUnLCAnV0lDVkFSUyddLCBpbWFnZSkKKyAgICAgICAgYmFzZW5hbWUgPSBiYl92YXJzWydJTUFHRV9CQVNFTkFNRSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZW5hbWUsIGltYWdlKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGltZ2RhdGFkaXIsIGJhc2VuYW1lKSArICcuZW52JworICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocGF0aCkpCisKKyAgICAgICAgd2ljdmFycyA9IHNldChiYl92YXJzWydXSUNWQVJTJ10uc3BsaXQoKSkKKyAgICAgICAgIyBmaWx0ZXIgb3V0IG9wdGlvbmFsIHZhcmlhYmxlcworICAgICAgICB3aWN2YXJzID0gd2ljdmFycy5kaWZmZXJlbmNlKCgnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9CT09UX0ZJTEVTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lOSVRSRCcsICdJTklUUkRfTElWRScsICdJU09ESVInKSkKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGVudmZpbGU6CisgICAgICAgICAgICBjb250ZW50ID0gZGljdChsaW5lLnNwbGl0KCI9IiwgMSkgZm9yIGxpbmUgaW4gZW52ZmlsZSkKKyAgICAgICAgICAgICMgdGVzdCBpZiB2YXJpYWJsZXMgdXNlZCBieSB3aWMgcHJlc2VudCBpbiB0aGUgLmVudiBmaWxlCisgICAgICAgICAgICBmb3IgdmFyIGluIHdpY3ZhcnM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZhciBpbiBjb250ZW50LCAiJXMgaXMgbm90IGluIC5lbnYgZmlsZSIgJSB2YXIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRlbnRbdmFyXSkKKworICAgIEBPRVRlc3RJRCgxNTU5KQorICAgIGRlZiB0ZXN0X2ltYWdlX3ZhcnNfZGlyX3Nob3J0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGltYWdlIHZhcnMgZGlyZWN0b3J5IHNlbGVjdGlvbiAtdiBvcHRpb24iIiIKKyAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBpbWdlbnZkaXIgPSBzZWxmLl9nZXRfaW1hZ2VfZW52X3BhdGgoaW1hZ2UpCisgICAgICAgIG5hdGl2ZV9zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgIndpYy10b29scyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPSVzIC12ICVzIC1uICVzIC1vICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbWFnZSwgaW1nZW52ZGlyLCBuYXRpdmVfc3lzcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNjY1KQorICAgIGRlZiB0ZXN0X2ltYWdlX3ZhcnNfZGlyX2xvbmcoc2VsZik6CisgICAgICAgICIiIlRlc3QgaW1hZ2UgdmFycyBkaXJlY3Rvcnkgc2VsZWN0aW9uIC0tdmFycyBvcHRpb24iIiIKKyAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBpbWdlbnZkaXIgPSBzZWxmLl9nZXRfaW1hZ2VfZW52X3BhdGgoaW1hZ2UpCisgICAgICAgIG5hdGl2ZV9zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgIndpYy10b29scyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPSVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tdmFycyAlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW5hdGl2ZS1zeXNyb290ICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbWFnZSwgaW1nZW52ZGlyLCBuYXRpdmVfc3lzcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMzUxKQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X3dpY19pbWFnZV90eXBlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGJ1aWxkaW5nIHdpYyBpbWFnZXMgYnkgYml0YmFrZSIiIgorICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAid2ljIlxuV0tTX0ZJTEUgPSAid2ljLWltYWdlLW1pbmltYWwiXG4nXAorICAgICAgICAgICAgICAgICAnTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSJcbicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCd3aWMtaW1hZ2UtbWluaW1hbCcpLnN0YXR1cykKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX0lNQUdFJywgJ01BQ0hJTkUnXSkKKyAgICAgICAgZGVwbG95X2RpciA9IGJiX3ZhcnNbJ0RFUExPWV9ESVJfSU1BR0UnXQorICAgICAgICBtYWNoaW5lID0gYmJfdmFyc1snTUFDSElORSddCisgICAgICAgIHByZWZpeCA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyLCAnd2ljLWltYWdlLW1pbmltYWwtJXMuJyAlIG1hY2hpbmUpCisgICAgICAgICMgY2hlY2sgaWYgd2UgaGF2ZSByZXN1bHQgaW1hZ2UgYW5kIG1hbmlmZXN0cyBzeW1saW5rcworICAgICAgICAjIHBvaW50aW5nIHRvIGV4aXN0aW5nIGZpbGVzCisgICAgICAgIGZvciBzdWZmaXggaW4gKCd3aWMnLCAnbWFuaWZlc3QnKToKKyAgICAgICAgICAgIHBhdGggPSBwcmVmaXggKyBzdWZmaXgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhwYXRoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLnJlYWxwYXRoKHBhdGgpKSkKKworICAgIEBPRVRlc3RJRCgxNDIyKQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X3FlbXUoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljLWltYWdlLW1pbmltYWwgdW5kZXIgcWVtdSIiIgorICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAid2ljIlxuV0tTX0ZJTEUgPSAid2ljLWltYWdlLW1pbmltYWwiXG4nXAorICAgICAgICAgICAgICAgICAnTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSJcbicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCd3aWMtaW1hZ2UtbWluaW1hbCcpLnN0YXR1cykKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKworICAgICAgICB3aXRoIHJ1bnFlbXUoJ3dpYy1pbWFnZS1taW5pbWFsJywgc3NoPUZhbHNlKSBhcyBxZW11OgorICAgICAgICAgICAgY21kID0gIm1vdW50IHxncmVwICdeL2Rldi8nIHwgY3V0IC1mMSwzIC1kICcgJyIKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJy9kZXYvcm9vdCAvXHJcbi9kZXYvc2RhMSAvYm9vdFxyXG4vZGV2L3NkYTMgL21udCcpCisKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBAT0VUZXN0SUQoMTg1MikKKyAgICBkZWYgdGVzdF9xZW11X2VmaShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjb3JlLWltYWdlLW1pbmltYWwgZWZpIGltYWdlIHVuZGVyIHFlbXUiIiIKKyAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgPSAid2ljIlxuV0tTX0ZJTEUgPSAibWtlZmlkaXNrLndrcyJcbicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwgb3ZtZicpLnN0YXR1cykKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKworICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgIHJ1bnFlbXVwYXJhbXM9J292bWYnLCBpbWFnZV9mc3R5cGU9J3dpYycpIGFzIHFlbXU6CisgICAgICAgICAgICBjbWQgPSAiZ3JlcCBzZGEuIC9wcm9jL3BhcnRpdGlvbnMgIHx3YyAtbCIKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJzMnKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfbWFrZV9maXhlZF9zaXplX3drcyhzaXplKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIHdrcyBvZiBhbiBpbWFnZSB3aXRoIGEgc2luZ2xlIHBhcnRpdGlvbi4gU2l6ZSBvZiB0aGUgcGFydGl0aW9uIGlzIHNldAorICAgICAgICB1c2luZyAtLWZpeGVkLXNpemUgZmxhZy4gUmV0dXJucyBhIHR1cGxlOiAocGF0aCB0byB3a3MgZmlsZSwgd2tzIGltYWdlIG5hbWUpCisgICAgICAgICIiIgorICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIsIGRlbGV0ZT1GYWxzZSkgYXMgdGVtcGY6CisgICAgICAgICAgICB3a3NwYXRoID0gdGVtcGYubmFtZQorICAgICAgICAgICAgdGVtcGYud3JpdGUoInBhcnQgIiBcCisgICAgICAgICAgICAgICAgICAgICAiLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIGhkYSAtLWFsaWduIDQgLS1maXhlZC1zaXplICVkICIKKyAgICAgICAgICAgICAgICAgICAgICItLWZzdHlwZT1leHQ0XG4iICUgc2l6ZSkKKyAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3NwYXRoKSlbMF0KKworICAgICAgICByZXR1cm4gd2tzcGF0aCwgd2tzbmFtZQorCisgICAgQE9FVGVzdElEKDE4NDcpCisgICAgZGVmIHRlc3RfZml4ZWRfc2l6ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY3JlYXRpb24gb2YgYSBzaW1wbGUgaW1hZ2Ugd2l0aCBwYXJ0aXRpb24gc2l6ZSBjb250cm9sbGVkIHRocm91Z2gKKyAgICAgICAgLS1maXhlZC1zaXplIGZsYWcKKyAgICAgICAgIiIiCisgICAgICAgIHdrc3BhdGgsIHdrc25hbWUgPSBXaWMuX21ha2VfZml4ZWRfc2l6ZV93a3MoMjAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NwYXRoLCBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc3BhdGgpCisgICAgICAgIHdpY291dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3aWNvdXQpKQorCisgICAgICAgIHdpY2ltZyA9IHdpY291dFswXQorCisgICAgICAgICMgdmVyaWZ5IHBhcnRpdGlvbiBzaXplIHdpdGggd2ljCisgICAgICAgIHJlcyA9IHJ1bkNtZCgicGFydGVkIC1tICVzIHVuaXQgbWliIHAgMj4vZGV2L251bGwiICUgd2ljaW1nLAorICAgICAgICAgICAgICAgICAgICAgaWdub3JlX3N0YXR1cz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3Q9c2VsZi5uYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQorCisgICAgICAgICMgcGFyc2UgcGFydGVkIG91dHB1dCB3aGljaCBsb29rcyBsaWtlIHRoaXM6CisgICAgICAgICMgQllUO1xuCisgICAgICAgICMgL3Zhci90bXAvd2ljL2J1aWxkL3RtcGZ3dmpqa2ZfLTIwMTYxMTEwMTIyMi1oZGEuZGlyZWN0OjIwME1pQjpmaWxlOjUxMjo1MTI6bXNkb3M6OjtcbgorICAgICAgICAjIDE6MC4wME1pQjoyMDBNaUI6MjAwTWlCOmV4dDQ6OjtcbgorICAgICAgICBwYXJ0bG5zID0gcmVzLm91dHB1dC5zcGxpdGxpbmVzKClbMjpdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocGFydGxucykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjE6MC4wME1pQjoyMDBNaUI6MjAwTWlCOmV4dDQ6OjsiLCBwYXJ0bG5zWzBdKQorCisgICAgQE9FVGVzdElEKDE4NDgpCisgICAgZGVmIHRlc3RfZml4ZWRfc2l6ZV9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY3JlYXRpb24gb2YgYSBzaW1wbGUgaW1hZ2Ugd2l0aCBwYXJ0aXRpb24gc2l6ZSBjb250cm9sbGVkIHRocm91Z2gKKyAgICAgICAgLS1maXhlZC1zaXplIGZsYWcuIFRoZSBzaXplIG9mIHBhcnRpdGlvbiBpcyBpbnRlbnRpb25hbGx5IHNldCB0byAxTWlCCisgICAgICAgIGluIG9yZGVyIHRvIHRyaWdnZXIgYW4gZXJyb3IgaW4gd2ljLgorICAgICAgICAiIiIKKyAgICAgICAgd2tzcGF0aCwgd2tzbmFtZSA9IFdpYy5fbWFrZV9maXhlZF9zaXplX3drcygxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NwYXRoLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzcGF0aCkKKyAgICAgICAgd2ljb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHdpY291dCkpCisKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBAT0VUZXN0SUQoMTg1NCkKKyAgICBkZWYgdGVzdF9yYXdjb3B5X3BsdWdpbl9xZW11KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJhd2NvcHkgcGx1Z2luIGluIHFlbXUiIiIKKyAgICAgICAgIyBidWlsZCBleHQ0IGFuZCB3aWMgaW1hZ2VzCisgICAgICAgIGZvciBmc3R5cGUgaW4gKCJleHQ0IiwgIndpYyIpOgorICAgICAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgPSAiJXMiXG5XS1NfRklMRSA9ICJ0ZXN0X3Jhd2NvcHlfcGx1Z2luLndrcy5pbiJcbicgJSBmc3R5cGUKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpLnN0YXR1cykKKyAgICAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisKKyAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnLCBzc2g9RmFsc2UsIGltYWdlX2ZzdHlwZT0nd2ljJykgYXMgcWVtdToKKyAgICAgICAgICAgIGNtZCA9ICJncmVwIHNkYS4gL3Byb2MvcGFydGl0aW9ucyAgfHdjIC1sIgorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY21kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICdGYWlsZWQgdG8gcnVuIGNvbW1hbmQgIiVzIjogJXMnICUgKGNtZCwgb3V0cHV0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnMicpCisKKyAgICBAT0VUZXN0SUQoMTg1MykKKyAgICBkZWYgdGVzdF9yYXdjb3B5X3BsdWdpbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCByYXdjb3B5IHBsdWdpbiIiIgorICAgICAgICBpbWcgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScsIGltZykKKyAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGVsaW5lcyhbJ3BhcnQgL2Jvb3QgLS1hY3RpdmUgLS1zb3VyY2UgYm9vdGltZy1wY2Jpb3NcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgLyAtLXNvdXJjZSByYXdjb3B5IC0tc291cmNlcGFyYW1zPSJmaWxlPSVzLSVzLmV4dDQiIC0tdXNlLXV1aWRcbidcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGltZywgbWFjaGluZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jvb3Rsb2FkZXIgLS10aW1lb3V0PTAgLS1hcHBlbmQ9ImNvbnNvbGU9dHR5UzAsMTE1MjAwbjgiXG4nXSkKKyAgICAgICAgICAgIHdrcy5mbHVzaCgpCisgICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSAlcyAtbyAlcyIgJSAod2tzLm5hbWUsIGltZywgc2VsZi5yZXN1bHRkaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQorICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQorCisgICAgQE9FVGVzdElEKDE4NDkpCisgICAgZGVmIHRlc3RfZnNfdHlwZXMoc2VsZik6CisgICAgICAgICIiIlRlc3QgZmlsZXN5c3RlbSB0eXBlcyBmb3IgZW1wdHkgYW5kIG5vdCBlbXB0eSBwYXJ0aXRpb25zIiIiCisgICAgICAgIGltZyA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIikgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlbGluZXMoWydwYXJ0IGV4dDIgICAtLWZzdHlwZSBleHQyICAgICAtLXNvdXJjZSByb290ZnNcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgYnRyZnMgIC0tZnN0eXBlIGJ0cmZzICAgIC0tc291cmNlIHJvb3RmcyAtLXNpemUgNDBNXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IHNxdWFzaCAtLWZzdHlwZSBzcXVhc2hmcyAtLXNvdXJjZSByb290ZnNcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgc3dhcCAgIC0tZnN0eXBlIHN3YXAgLS1zaXplIDFNXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5dmZhdCAgIC0tZnN0eXBlIHZmYXQgICAtLXNpemUgMU1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHltc2RvcyAgLS1mc3R5cGUgbXNkb3MgIC0tc2l6ZSAxTVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eWV4dDIgICAtLWZzdHlwZSBleHQyICAgLS1zaXplIDFNXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5YnRyZnMgIC0tZnN0eXBlIGJ0cmZzICAtLXNpemUgMTAwTVxuJ10pCisgICAgICAgICAgICB3a3MuZmx1c2goKQorICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgJXMgLW8gJXMiICUgKHdrcy5uYW1lLCBpbWcsIHNlbGYucmVzdWx0ZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KKyAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKKworICAgIEBPRVRlc3RJRCgxODUxKQorICAgIGRlZiB0ZXN0X2tpY2tzdGFydF9wYXJzZXIoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2tzIHBhcnNlciBvcHRpb25zIiIiCisgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIikgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlbGluZXMoWydwYXJ0IC8gLS1mc3R5cGUgZXh0MyAtLXNvdXJjZSByb290ZnMgLS1zeXN0ZW0taWQgMHhGRiAnXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW92ZXJoZWFkLWZhY3RvciAxLjIgLS1zaXplIDEwMGtcbiddKQorICAgICAgICAgICAgd2tzLmZsdXNoKCkKKyAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSAod2tzLm5hbWUsIHNlbGYucmVzdWx0ZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KKyAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKKworICAgIEBPRVRlc3RJRCgxODUwKQorICAgIGRlZiB0ZXN0X2ltYWdlX2Jvb3RwYXJ0X2dsb2JiZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgZ2xvYmJlZCBzb3VyY2VzIHdpdGggaW1hZ2UtYm9vdHBhcnQgcGx1Z2luIiIiCisgICAgICAgIGltZyA9ICJjb3JlLWltYWdlLW1pbmltYWwiCisgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHNkaW1hZ2UtYm9vdHBhcnQgLWUgJXMgLW8gJXMiICUgKGltZywgc2VsZi5yZXN1bHRkaXIpCisgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9CT09UX0ZJTEVTID0gIiVzKiInICUgZ2V0X2JiX3ZhcignS0VSTkVMX0lNQUdFVFlQRScsIGltZykKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAic2RpbWFnZS1ib290cGFydC0qZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE4NTUpCisgICAgZGVmIHRlc3Rfc3BhcnNlX2NvcHkoc2VsZik6CisgICAgICAgICIiIlRlc3Qgc3BhcnNlX2NvcHkgd2l0aCBGSUVNQVAgYW5kIFNFRUtfSE9MRSBmaWxlbWFwIEFQSXMiIiIKKyAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnc2NyaXB0cycsICdsaWInLCAnd2ljJykKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIGxpYnBhdGgpCisgICAgICAgIGZyb20gIGZpbGVtYXAgaW1wb3J0IEZpbGVtYXBGaWVtYXAsIEZpbGVtYXBTZWVrLCBzcGFyc2VfY29weSwgRXJyb3JOb3RTdXBwCisgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2ljLXNwYXJzZSIpIGFzIHNwYXJzZToKKyAgICAgICAgICAgIHNyY19uYW1lID0gc3BhcnNlLm5hbWUKKyAgICAgICAgICAgIHNyY19zaXplID0gMTAyNCAqIDEwCisgICAgICAgICAgICBzcGFyc2UudHJ1bmNhdGUoc3JjX3NpemUpCisgICAgICAgICAgICAjIHdyaXRlIG9uZSBieXRlIHRvIHRoZSBmaWxlCisgICAgICAgICAgICB3aXRoIG9wZW4oc3JjX25hbWUsICdyK2InKSBhcyBzZmlsZToKKyAgICAgICAgICAgICAgICBzZmlsZS5zZWVrKDEwMjQgKiA0KQorICAgICAgICAgICAgICAgIHNmaWxlLndyaXRlKGInXHgwMCcpCisgICAgICAgICAgICBkZXN0ID0gc3BhcnNlLm5hbWUgKyAnLm91dCcKKyAgICAgICAgICAgICMgY29weSBzcmMgZmlsZSB0byBkZXN0IHVzaW5nIGRpZmZlcmVudCBmaWxlbWFwIEFQSXMKKyAgICAgICAgICAgIGZvciBhcGkgaW4gKEZpbGVtYXBGaWVtYXAsIEZpbGVtYXBTZWVrLCBOb25lKToKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXN0KToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGRlc3QpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzcGFyc2VfY29weShzcGFyc2UubmFtZSwgZGVzdCwgYXBpPWFwaSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXJyb3JOb3RTdXBwOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIHNraXAgdW5zdXBwb3J0ZWQgQVBJCisgICAgICAgICAgICAgICAgZGVzdF9zdGF0ID0gb3Muc3RhdChkZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzdF9zdGF0LnN0X3NpemUsIHNyY19zaXplKQorICAgICAgICAgICAgICAgICMgOCBibG9ja3MgaXMgNEsgKHBoeXNpY2FsIHNlY3RvciBzaXplKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzdF9zdGF0LnN0X2Jsb2NrcywgOCkKKyAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQorCisgICAgQE9FVGVzdElEKDE4NTcpCisgICAgZGVmIHRlc3Rfd2ljX2xzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGxpc3RpbmcgaW1hZ2UgY29udGVudCB1c2luZyAnd2ljIGxzJyIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQorCisgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKworICAgICAgICAjIGxpc3QgcGFydGl0aW9ucworICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlcyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKKworICAgICAgICAjIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIGZpcnN0IHBhcnRpdGlvbgorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKKworICAgIEBPRVRlc3RJRCgxODU2KQorICAgIGRlZiB0ZXN0X3dpY19jcChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUgdGhlIHdpYyBpbWFnZS4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKKworICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBmaXJzdCBwYXJ0aXRpb24KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MS8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg2LCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCisKKyAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53aWMtY3AiKSBhcyB0ZXN0ZmlsZToKKyAgICAgICAgICAgIHRlc3RmaWxlLndyaXRlKCJ0ZXN0IikKKworICAgICAgICAgICAgIyBjb3B5IGZpbGUgdG8gdGhlIHBhcnRpdGlvbgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgY3AgJXMgJXM6MS8gLW4gJXMiICUgKHRlc3RmaWxlLm5hbWUsIGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisKKyAgICAgICAgICAgICMgY2hlY2sgaWYgZmlsZSBpcyB0aGVyZQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MS8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlLm5hbWUpIGluIHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgICAgICMgcHJlcGFyZSBkaXJlY3RvcnkKKyAgICAgICAgICAgIHRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd3aWMtdGVzdC1jcC1kaXInKQorICAgICAgICAgICAgdGVzdHN1YmRpciA9IG9zLnBhdGguam9pbih0ZXN0ZGlyLCAnc3ViZGlyJykKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguam9pbih0ZXN0c3ViZGlyKSkKKyAgICAgICAgICAgIGNvcHkodGVzdGZpbGUubmFtZSwgdGVzdGRpcikKKworICAgICAgICAgICAgIyBjb3B5IGRpcmVjdG9yeSB0byB0aGUgcGFydGl0aW9uCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBjcCAlcyAlczoxLyAtbiAlcyIgJSAodGVzdGRpciwgaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKworICAgICAgICAgICAgIyBjaGVjayBpZiBkaXJlY3RvcnkgaXMgdGhlcmUKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5iYXNlbmFtZSh0ZXN0ZGlyKSBpbiByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDE4NTgpCisgICAgZGVmIHRlc3Rfd2ljX3JtKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJlbW92aW5nIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBmcm9tIHRoZSB0aGUgd2ljIGltYWdlLiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSBta2VmaWRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIm1rZWZpZGlzay0qLmRpcmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCisKKyAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQorCisgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgZmlyc3QgcGFydGl0aW9uCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignXG5CWklNQUdFICAgICAgICAnLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdcbkVGSSAgICAgICAgICA8RElSPiAgICAgJywgcmVzdWx0Lm91dHB1dCkKKworICAgICAgICAjIHJlbW92ZSBmaWxlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIHJtICVzOjEvYnppbWFnZSAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorCisgICAgICAgICMgcmVtb3ZlIGRpcmVjdG9yeQorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBybSAlczoxL2VmaSAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorCisgICAgICAgICMgY2hlY2sgaWYgdGhleSdyZSByZW1vdmVkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignXG5CWklNQUdFICAgICAgICAnLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdcbkVGSSAgICAgICAgICA8RElSPiAgICAgJywgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxOTIyKQorICAgIGRlZiB0ZXN0X21rZnNfZXh0cmFvcHRzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdrcyBvcHRpb24gLS1ta2ZzLWV4dHJhb3B0cyBmb3IgZW1wdHkgYW5kIG5vdCBlbXB0eSBwYXJ0aXRpb25zIiIiCisgICAgICAgIGltZyA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIikgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlbGluZXMoCisgICAgICAgICAgICAgICAgWydwYXJ0IGV4dDIgICAtLWZzdHlwZSBleHQyICAgICAtLXNvdXJjZSByb290ZnMgLS1ta2ZzLWV4dHJhb3B0cyAiLUQgLUYgLWkgODE5MiJcbicsCisgICAgICAgICAgICAgICAgICJwYXJ0IGJ0cmZzICAtLWZzdHlwZSBidHJmcyAgICAtLXNvdXJjZSByb290ZnMgLS1zaXplIDQwTSAtLW1rZnMtZXh0cmFvcHRzPSctLXF1aWV0J1xuIiwKKyAgICAgICAgICAgICAgICAgJ3BhcnQgc3F1YXNoIC0tZnN0eXBlIHNxdWFzaGZzIC0tc291cmNlIHJvb3RmcyAtLW1rZnMtZXh0cmFvcHRzICItbm8tc3BhcnNlIC1iIDQwOTYiXG4nLAorICAgICAgICAgICAgICAgICAncGFydCBlbXB0eXZmYXQgICAtLWZzdHlwZSB2ZmF0ICAgLS1zaXplIDFNIC0tbWtmcy1leHRyYW9wdHMgIi1TIDEwMjQgLXMgNjQiXG4nLAorICAgICAgICAgICAgICAgICAncGFydCBlbXB0eW1zZG9zICAtLWZzdHlwZSBtc2RvcyAgLS1zaXplIDFNIC0tbWtmcy1leHRyYW9wdHMgIi1TIDEwMjQgLXMgNjQiXG4nLAorICAgICAgICAgICAgICAgICAncGFydCBlbXB0eWV4dDIgICAtLWZzdHlwZSBleHQyICAgLS1zaXplIDFNIC0tbWtmcy1leHRyYW9wdHMgIi1EIC1GIC1pIDgxOTIiXG4nLAorICAgICAgICAgICAgICAgICAncGFydCBlbXB0eWJ0cmZzICAtLWZzdHlwZSBidHJmcyAgLS1zaXplIDEwME0gLS1ta2ZzLWV4dHJhb3B0cyAiLS1taXhlZCAtSyJcbiddKQorICAgICAgICAgICAgd2tzLmZsdXNoKCkKKyAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lICVzIC1vICVzIiAlICh3a3MubmFtZSwgaW1nLCBzZWxmLnJlc3VsdGRpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCisgICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCisKKyAgICBkZWYgdGVzdF9leHBhbmRfbWJyX2ltYWdlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyB3cml0ZSAtLWV4cGFuZCBjb21tYW5kIGZvciBtYnIgaW1hZ2UiIiIKKyAgICAgICAgIyBidWlsZCBhbiBpbWFnZQorICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyA9ICJ3aWMiXG5XS1NfRklMRSA9ICJkaXJlY3RkaXNrLndrcyJcbicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKS5zdGF0dXMpCisKKyAgICAgICAgIyBnZXQgcGF0aCB0byB0aGUgaW1hZ2UKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9JTUFHRScsICdNQUNISU5FJ10pCisgICAgICAgIGRlcGxveV9kaXIgPSBiYl92YXJzWydERVBMT1lfRElSX0lNQUdFJ10KKyAgICAgICAgbWFjaGluZSA9IGJiX3ZhcnNbJ01BQ0hJTkUnXQorICAgICAgICBpbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXIsICdjb3JlLWltYWdlLW1pbmltYWwtJXMud2ljJyAlIG1hY2hpbmUpCisKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGV4cGFuZCBpbWFnZSB0byAxRworICAgICAgICAgICAgbmV3X2ltYWdlX3BhdGggPSBOb25lCisgICAgICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3YicsIHN1ZmZpeD0nLndpYy5leHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyPWRlcGxveV9kaXIsIGRlbGV0ZT1GYWxzZSkgYXMgc3BhcnNlOgorICAgICAgICAgICAgICAgIHNwYXJzZS50cnVuY2F0ZSgxMDI0ICoqIDMpCisgICAgICAgICAgICAgICAgbmV3X2ltYWdlX3BhdGggPSBzcGFyc2UubmFtZQorCisgICAgICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisgICAgICAgICAgICBjbWQgPSAid2ljIHdyaXRlIC1uICVzIC0tZXhwYW5kIDE6MCAlcyAlcyIgJSAoc3lzcm9vdCwgaW1hZ2VfcGF0aCwgbmV3X2ltYWdlX3BhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKworICAgICAgICAgICAgIyBjaGVjayBpZiBwYXJ0aXRpb25zIGFyZSBleHBhbmRlZAorICAgICAgICAgICAgb3JpZyA9IHJ1bkNtZCgid2ljIGxzICVzIC1uICVzIiAlIChpbWFnZV9wYXRoLCBzeXNyb290KSkKKyAgICAgICAgICAgIGV4cCA9IHJ1bkNtZCgid2ljIGxzICVzIC1uICVzIiAlIChuZXdfaW1hZ2VfcGF0aCwgc3lzcm9vdCkpCisgICAgICAgICAgICBvcmlnX3NpemVzID0gW2ludChsaW5lLnNwbGl0KClbM10pIGZvciBsaW5lIGluIG9yaWcub3V0cHV0LnNwbGl0KCdcbicpWzE6XV0KKyAgICAgICAgICAgIGV4cF9zaXplcyA9IFtpbnQobGluZS5zcGxpdCgpWzNdKSBmb3IgbGluZSBpbiBleHAub3V0cHV0LnNwbGl0KCdcbicpWzE6XV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZ19zaXplc1swXSwgZXhwX3NpemVzWzBdKSAjIGZpcnN0IHBhcnRpdGlvbiBpcyBub3QgcmVzaXplZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9yaWdfc2l6ZXNbMV0gPCBleHBfc2l6ZXNbMV0pCisKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgYWxsIGZyZWUgc3BhY2UgaXMgcGFydGl0aW9uZWQKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiJXMvdXNyL3NiaW4vc2ZkaXNrIC1GICVzIiAlIChzeXNyb290LCBuZXdfaW1hZ2VfcGF0aCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoIjAgQiwgMCBieXRlcywgMCBzZWN0b3JzIiBpbiByZXN1bHQub3V0cHV0KQorCisgICAgICAgICAgICBvcy5yZW5hbWUoaW1hZ2VfcGF0aCwgaW1hZ2VfcGF0aCArICcuYmFrJykKKyAgICAgICAgICAgIG9zLnJlbmFtZShuZXdfaW1hZ2VfcGF0aCwgaW1hZ2VfcGF0aCkKKworICAgICAgICAgICAgIyBDaGVjayBpZiBpdCBib290cyBpbiBxZW11CisgICAgICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSkgYXMgcWVtdToKKyAgICAgICAgICAgICAgICBjbWQgPSAibHMgL2V0Yy8iCisgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoJ3RydWUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhuZXdfaW1hZ2VfcGF0aCk6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKG5ld19pbWFnZV9wYXRoKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaW1hZ2VfcGF0aCArICcuYmFrJyk6CisgICAgICAgICAgICAgICAgb3MucmVuYW1lKGltYWdlX3BhdGggKyAnLmJhaycsIGltYWdlX3BhdGgpCisKKyAgICBkZWYgdGVzdF93aWNfbHNfZXh0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGxpc3RpbmcgY29udGVudCBvZiB0aGUgZXh0IHBhcnRpdGlvbiB1c2luZyAnd2ljIGxzJyIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQorCisgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKworICAgICAgICAjIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIHNlY29uZCBleHQ0IHBhcnRpdGlvbgorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KFsnYmluJywgJ2hvbWUnLCAncHJvYycsICd1c3InLCAndmFyJywgJ2RldicsICdsaWInLCAnc2JpbiddKS5pc3N1YnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobGluZS5zcGxpdCgpWy0xXSBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpIGlmIGxpbmUpKSkKKworICAgIGRlZiB0ZXN0X3dpY19jcF9leHQoc2VsZik6CisgICAgICAgICIiIlRlc3QgY29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlIGV4dCBwYXJ0aXRpb24uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCisKKyAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQorCisgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgZXh0NCBwYXJ0aXRpb24KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgZGlycyA9IHNldChsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChbJ2JpbicsICdob21lJywgJ3Byb2MnLCAndXNyJywgJ3ZhcicsICdkZXYnLCAnbGliJywgJ3NiaW4nXSkuaXNzdWJzZXQoZGlycykpCisKKyAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53aWMtY3AiKSBhcyB0ZXN0ZmlsZToKKyAgICAgICAgICAgIHRlc3RmaWxlLndyaXRlKCJ0ZXN0IikKKworICAgICAgICAgICAgIyBjb3B5IGZpbGUgdG8gdGhlIHBhcnRpdGlvbgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgY3AgJXMgJXM6Mi8gLW4gJXMiICUgKHRlc3RmaWxlLm5hbWUsIGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisKKyAgICAgICAgICAgICMgY2hlY2sgaWYgZmlsZSBpcyB0aGVyZQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgICAgICBuZXdkaXJzID0gc2V0KGxpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkaXJzLmRpZmZlcmVuY2UoZGlycyksIHNldChbb3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZS5uYW1lKV0pKQorCisgICAgZGVmIHRlc3Rfd2ljX3JtX2V4dChzZWxmKToKKyAgICAgICAgIiIiVGVzdCByZW1vdmluZyBmaWxlcyBmcm9tIHRoZSBleHQgcGFydGl0aW9uLiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSBta2VmaWRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIm1rZWZpZGlzay0qLmRpcmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCisKKyAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQorCisgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgL2V0YyBkaXJlY3Rvcnkgb24gZXh0NCBwYXJ0aXRpb24KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi9ldGMvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZnN0YWInIGluIFtsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZV0pCisKKyAgICAgICAgIyByZW1vdmUgZmlsZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBybSAlczoyL2V0Yy9mc3RhYiAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorCisgICAgICAgICMgY2hlY2sgaWYgaXQncyByZW1vdmVkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvZXRjLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2ZzdGFiJyBub3QgaW4gW2xpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRhaW5lcmltYWdlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGFpbmVyaW1hZ2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZjQ4MWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGFpbmVyaW1hZ2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1pbXBvcnQgb3MKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMsIHJ1bkNtZAotCi0jIFRoaXMgdGVzdCBidWlsZHMgYW4gaW1hZ2Ugd2l0aCB1c2luZyB0aGUgImNvbnRhaW5lciIgSU1BR0VfRlNUWVBFLCBhbmQKLSMgZW5zdXJlcyB0aGF0IHRoZW4gZmlsZXMgaW4gdGhlIGltYWdlIGFyZSBvbmx5IHRoZSBvbmVzIGV4cGVjdGVkLgotIwotIyBUaGUgb25seSBwYWNrYWdlIGFkZGVkIHRvIHRoZSBpbWFnZSBpcyBjb250YWluZXJfaW1hZ2VfdGVzdHBrZywgd2hpY2gKLSMgY29udGFpbnMgb25lIGZpbGUuIEhvd2V2ZXIsIGR1ZSB0byBzb21lIG90aGVyIHRoaW5ncyBub3QgY2xlYW5pbmcgdXAgZHVyaW5nCi0jIHJvb3RmcyBjcmVhdGlvbiwgdGhlcmUgaXMgc29tZSBjcnVmdC4gSWRlYWxseSBidWdzIHdpbGwgYmUgZmlsZWQgYW5kIHRoZQotIyBjcnVmdCByZW1vdmVkLCBidXQgZm9yIG5vdyB3ZSB3aGl0ZWxpc3Qgc29tZSBrbm93biBzZXQuCi0jCi0jIEFsc28gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgd2UncmUgb25seSBjaGVja2luZyB0aGUgY3J1ZnQgd2hlbiB1c2luZyBpcGsuCi0jIFdoZW4gdXNpbmcgZGViLCBhbmQgcnBtIGl0IGlzIGEgYml0IGRpZmZlcmVudCBhbmQgd2UgY291bGQgdGVzdCBhbGwKLSMgb2YgdGhlbSwgYnV0IHRoaXMgdGVzdCBpcyBtb3JlIHRvIGNhdGNoIGlmIG90aGVyIHBhY2thZ2VzIGdldCBhZGRlZCBieQotIyBkZWZhdWx0IG90aGVyIHRoYW4gd2hhdCBpcyBpbiBST09URlNfQk9PVFNUUkFQX0lOU1RBTEwuCi0jCi1jbGFzcyBDb250YWluZXJJbWFnZVRlc3RzKG9lU2VsZlRlc3QpOgotCi0gICAgIyBWZXJpZnkgdGhhdCB3aGVuIHNwZWNpZnlpbmcgYSBJTUFHRV9UWVBFREVQXyBvZiB0aGUgZm9ybSAiZm9vLmJhciIgdGhhdAotICAgICMgdGhlIGNvbnZlcnNpb24gdHlwZSBiYXIgZ2V0cyBhZGRlZCBhcyBhIGRlcCBhcyB3ZWxsCi0gICAgZGVmIHRlc3RfZXhwZWN0ZWRfZmlsZXMoc2VsZik6Ci0KLSAgICAgICAgZGVmIGdldF9lYWNoX3BhdGhfcGFydChwYXRoKToKLSAgICAgICAgICAgIGlmIHBhdGg6Ci0gICAgICAgICAgICAgICAgcGFydCA9IFsgJy4nICsgcGF0aCArICcvJyBdCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2V0X2VhY2hfcGF0aF9wYXJ0KHBhdGgucnNwbGl0KCcvJywgMSlbMF0pCi0gICAgICAgICAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydCArIHJlc3VsdAotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID0gImxpbnV4LWR1bW15IgotSU1BR0VfRlNUWVBFUyA9ICJjb250YWluZXIiCi1QQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV9pcGsiCi1JTUFHRV9GRUFUVVJFUyA9ICIiCi0iIiIpCi0KLSAgICAgICAgYmJ2YXJzID0gZ2V0X2JiX3ZhcnMoWydiaW5kaXInLCAnc3lzY29uZmRpcicsICdsb2NhbHN0YXRlZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX0xJTktfTkFNRSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PSdjb250YWluZXItdGVzdC1pbWFnZScpCi0gICAgICAgIGV4cGVjdGVkX2ZpbGVzID0gWwotICAgICAgICAgICAgICAgICAgICAnLi8nLAotICAgICAgICAgICAgICAgICAgICAnLntiaW5kaXJ9L3RoZWFwcCcsCi0gICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L2RlZmF1bHQvJywKLSAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vZGVmYXVsdC9wb3N0aW5zdCcsCi0gICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L2xkLnNvLmNhY2hlJywKLSAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vdGltZXN0YW1wJywKLSAgICAgICAgICAgICAgICAgICAgJy57c3lzY29uZmRpcn0vdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAgICcuL3J1bi8nLAotICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9jYWNoZS8nLAotICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9jYWNoZS9sZGNvbmZpZy8nLAotICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9jYWNoZS9sZGNvbmZpZy9hdXgtY2FjaGUnLAotICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9jYWNoZS9vcGtnLycsCi0gICAgICAgICAgICAgICAgICAgICcue2xvY2Fsc3RhdGVkaXJ9L2xpYi8nLAotICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9saWIvb3BrZy8nCi0gICAgICAgICAgICAgICAgXQotCi0gICAgICAgIGV4cGVjdGVkX2ZpbGVzID0gWyB4LmZvcm1hdChiaW5kaXI9YmJ2YXJzWydiaW5kaXInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZkaXI9YmJ2YXJzWydzeXNjb25mZGlyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHN0YXRlZGlyPWJidmFyc1snbG9jYWxzdGF0ZWRpciddKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZXhwZWN0ZWRfZmlsZXMgXQotCi0gICAgICAgICMgU2luY2UgdGFyIGxpc3RzIGFsbCBkaXJlY3RvcmllcyBpbmRpdmlkdWFsbHksIG1ha2Ugc3VyZSBlYWNoIGVsZW1lbnQKLSAgICAgICAgIyBmcm9tIGJpbmRpciwgc3lzY29uZmRpciwgZXRjIGlzIGFkZGVkCi0gICAgICAgIGV4cGVjdGVkX2ZpbGVzICs9IGdldF9lYWNoX3BhdGhfcGFydChiYnZhcnNbJ2JpbmRpciddKQotICAgICAgICBleHBlY3RlZF9maWxlcyArPSBnZXRfZWFjaF9wYXRoX3BhcnQoYmJ2YXJzWydzeXNjb25mZGlyJ10pCi0gICAgICAgIGV4cGVjdGVkX2ZpbGVzICs9IGdldF9lYWNoX3BhdGhfcGFydChiYnZhcnNbJ2xvY2Fsc3RhdGVkaXInXSkKLQotICAgICAgICBleHBlY3RlZF9maWxlcyA9IHNvcnRlZChleHBlY3RlZF9maWxlcykKLQotICAgICAgICAjIEJ1aWxkIHRoZSBpbWFnZSBvZiBjb3Vyc2UKLSAgICAgICAgYml0YmFrZSgnY29udGFpbmVyLXRlc3QtaW1hZ2UnKQotCi0gICAgICAgIGltYWdlID0gb3MucGF0aC5qb2luKGJidmFyc1snREVQTE9ZX0RJUl9JTUFHRSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYnZhcnNbJ0lNQUdFX0xJTktfTkFNRSddICsgJy50YXIuYnoyJykKLQotICAgICAgICAjIEVuc3VyZSB0aGUgZmlsZXMgaW4gdGhlIGltYWdlIGFyZSB3aGF0IHdlIGV4cGVjdAotICAgICAgICByZXN1bHQgPSBydW5DbWQoInRhciB0ZiB7fSB8IHNvcnQiLmZvcm1hdChpbWFnZSksIHNoZWxsPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSwgZXhwZWN0ZWRfZmlsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTkwZDNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weQpAQCAtMCwwICsxLDI3OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCBvcworaW1wb3J0IHRpbWUKK2ltcG9ydCBnbG9iCitpbXBvcnQgc3lzCitpbXBvcnQgaW1wCitpbXBvcnQgc2lnbmFsCitmcm9tIHNodXRpbCBpbXBvcnQgY29weWZpbGUKK2Zyb20gcmFuZG9tIGltcG9ydCBjaG9pY2UKKworaW1wb3J0IG9lcWEKKworZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dCwgT0VUZXN0Q29udGV4dEV4ZWN1dG9yCitmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFQcmVSdW4sIE9FUUFUZXN0Tm90Rm91bmQKKworZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGdldF9iYl92YXJzLCBnZXRfdGVzdF9sYXllcgorCitjbGFzcyBPRVNlbGZ0ZXN0VGVzdENvbnRleHQoT0VUZXN0Q29udGV4dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRkPU5vbmUsIGxvZ2dlcj1Ob25lLCBtYWNoaW5lcz1Ob25lLCBjb25maWdfcGF0aHM9Tm9uZSk6CisgICAgICAgIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q29udGV4dCwgc2VsZikuX19pbml0X18odGQsIGxvZ2dlcikKKworICAgICAgICBzZWxmLm1hY2hpbmVzID0gbWFjaGluZXMKKyAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lID0gTm9uZQorICAgICAgICBzZWxmLmNvbmZpZ19wYXRocyA9IGNvbmZpZ19wYXRocworCisgICAgZGVmIHJ1blRlc3RzKHNlbGYsIG1hY2hpbmU9Tm9uZSwgc2tpcHM9W10pOgorICAgICAgICBpZiBtYWNoaW5lOgorICAgICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lID0gbWFjaGluZQorICAgICAgICAgICAgaWYgbWFjaGluZSA9PSAncmFuZG9tJzoKKyAgICAgICAgICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUgPSBjaG9pY2Uoc2VsZi5tYWNoaW5lcykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ1J1biB0ZXN0cyB3aXRoIGN1c3RvbSBNQUNISU5FIHNldCB0bzogJXMnICUgXAorICAgICAgICAgICAgICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUpCisgICAgICAgIHJldHVybiBzdXBlcihPRVNlbGZ0ZXN0VGVzdENvbnRleHQsIHNlbGYpLnJ1blRlc3RzKHNraXBzKQorCisgICAgZGVmIGxpc3RUZXN0cyhzZWxmLCBkaXNwbGF5X3R5cGUsIG1hY2hpbmU9Tm9uZSk6CisgICAgICAgIHJldHVybiBzdXBlcihPRVNlbGZ0ZXN0VGVzdENvbnRleHQsIHNlbGYpLmxpc3RUZXN0cyhkaXNwbGF5X3R5cGUpCisKK2NsYXNzIE9FU2VsZnRlc3RUZXN0Q29udGV4dEV4ZWN1dG9yKE9FVGVzdENvbnRleHRFeGVjdXRvcik6CisgICAgX2NvbnRleHRfY2xhc3MgPSBPRVNlbGZ0ZXN0VGVzdENvbnRleHQKKyAgICBfc2NyaXB0X2V4ZWN1dG9yID0gJ29lLXNlbGZ0ZXN0JworCisgICAgbmFtZSA9ICdvZS1zZWxmdGVzdCcKKyAgICBoZWxwID0gJ29lLXNlbGZ0ZXN0IHRlc3QgY29tcG9uZW50JworICAgIGRlc2NyaXB0aW9uID0gJ0V4ZWN1dGVzIHNlbGZ0ZXN0IHRlc3RzJworCisgICAgZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHNlbGYsIGxvZ2dlciwgcGFyc2VyKToKKyAgICAgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cChyZXF1aXJlZD1UcnVlKQorCisgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1ydW4tYWxsLXRlc3RzJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJydW5fYWxsX3Rlc3RzIiwKKyAgICAgICAgICAgICAgICBoZWxwPSdSdW4gYWxsICh1bmhpZGRlbikgdGVzdHMnKQorICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy1SJywgJy0tc2tpcC10ZXN0cycsIHJlcXVpcmVkPUZhbHNlLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICBuYXJncz0nKycsIGRlc3Q9InNraXBzIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgIGhlbHA9J1J1biBhbGwgKHVuaGlkZGVuKSB0ZXN0cyBleGNlcHQgdGhlIG9uZXMgc3BlY2lmaWVkLiBGb3JtYXQgc2hvdWxkIGJlIDxtb2R1bGU+Wy48Y2xhc3M+Wy48dGVzdF9tZXRob2Q+XV0nKQorICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcnVuLXRlc3RzJywgcmVxdWlyZWQ9RmFsc2UsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgIG5hcmdzPScrJywgZGVzdD0icnVuX3Rlc3RzIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgIGhlbHA9J1NlbGVjdCB3aGF0IHRlc3RzIHRvIHJ1biAobW9kdWxlcywgY2xhc3NlcyBvciB0ZXN0IG1ldGhvZHMpLiBGb3JtYXQgc2hvdWxkIGJlOiA8bW9kdWxlPi48Y2xhc3M+Ljx0ZXN0X21ldGhvZD4nKQorCisgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1saXN0LW1vZHVsZXMnLCByZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgIGhlbHA9J0xpc3QgYWxsIGF2YWlsYWJsZSB0ZXN0IG1vZHVsZXMuJykKKyAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWxpc3QtY2xhc3NlcycsIHJlcXVpcmVkPUZhbHNlLAorICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgaGVscD0nTGlzdCBhbGwgYXZhaWxhYmxlIHRlc3QgY2xhc3Nlcy4nKQorICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy1sJywgJy0tbGlzdC10ZXN0cycsIHJlcXVpcmVkPUZhbHNlLAorICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgaGVscD0nTGlzdCBhbGwgYXZhaWxhYmxlIHRlc3RzLicpCisKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tYWNoaW5lJywgcmVxdWlyZWQ9RmFsc2UsIGNob2ljZXM9WydyYW5kb20nLCAnYWxsJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUnVuIHRlc3RzIG9uIGRpZmZlcmVudCBtYWNoaW5lcyAocmFuZG9tL2FsbCkuJykKKyAgICAgICAgCisgICAgICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZnVuYz1zZWxmLnJ1bikKKworICAgIGRlZiBfZ2V0X2F2YWlsYWJsZV9tYWNoaW5lcyhzZWxmKToKKyAgICAgICAgbWFjaGluZXMgPSBbXQorCisgICAgICAgIGJicGF0aCA9IHNlbGYudGNfa3dhcmdzWydpbml0J11bJ3RkJ11bJ0JCUEFUSCddLnNwbGl0KCc6JykKKyAgICAKKyAgICAgICAgZm9yIHBhdGggaW4gYmJwYXRoOgorICAgICAgICAgICAgZm91bmRfbWFjaGluZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHBhdGgsICdjb25mJywgJ21hY2hpbmUnLCAnKi5jb25mJykpCisgICAgICAgICAgICBpZiBmb3VuZF9tYWNoaW5lczoKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiBmb3VuZF9tYWNoaW5lczoKKyAgICAgICAgICAgICAgICAgICAgIyBlZzogJy9ob21lLzx1c2VyPi9wb2t5L21ldGEtaW50ZWwvY29uZi9tYWNoaW5lL2ludGVsLWNvcmUyLTMyLmNvbmYnCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzLmFwcGVuZChvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoaSkpWzBdKQorICAgIAorICAgICAgICByZXR1cm4gbWFjaGluZXMKKworICAgIGRlZiBfZ2V0X2Nhc2VzX3BhdGhzKHNlbGYsIGJicGF0aCk6CisgICAgICAgIGNhc2VzX3BhdGhzID0gW10KKyAgICAgICAgZm9yIGxheWVyIGluIGJicGF0aDoKKyAgICAgICAgICAgIGNhc2VzX2RpciA9IG9zLnBhdGguam9pbihsYXllciwgJ2xpYicsICdvZXFhJywgJ3NlbGZ0ZXN0JywgJ2Nhc2VzJykKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoY2FzZXNfZGlyKToKKyAgICAgICAgICAgICAgICBjYXNlc19wYXRocy5hcHBlbmQoY2FzZXNfZGlyKQorICAgICAgICByZXR1cm4gY2FzZXNfcGF0aHMKKworICAgIGRlZiBfcHJvY2Vzc19hcmdzKHNlbGYsIGxvZ2dlciwgYXJncyk6CisgICAgICAgIGFyZ3Mub3V0cHV0X2xvZyA9ICclcy1yZXN1bHRzLSVzLmxvZycgJSAoc2VsZi5uYW1lLAorICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoIiVZJW0lZCVIJU0lUyIpKQorICAgICAgICBhcmdzLnRlc3RfZGF0YV9maWxlID0gTm9uZQorICAgICAgICBhcmdzLkNBU0VTX1BBVEhTID0gTm9uZQorCisgICAgICAgIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q29udGV4dEV4ZWN1dG9yLCBzZWxmKS5fcHJvY2Vzc19hcmdzKGxvZ2dlciwgYXJncykKKworICAgICAgICBpZiBhcmdzLmxpc3RfbW9kdWxlczoKKyAgICAgICAgICAgIGFyZ3MubGlzdF90ZXN0cyA9ICdtb2R1bGUnCisgICAgICAgIGVsaWYgYXJncy5saXN0X2NsYXNzZXM6CisgICAgICAgICAgICBhcmdzLmxpc3RfdGVzdHMgPSAnY2xhc3MnCisgICAgICAgIGVsaWYgYXJncy5saXN0X3Rlc3RzOgorICAgICAgICAgICAgYXJncy5saXN0X3Rlc3RzID0gJ25hbWUnCisKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsndGQnXSA9IGdldF9iYl92YXJzKCkKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnbWFjaGluZXMnXSA9IHNlbGYuX2dldF9hdmFpbGFibGVfbWFjaGluZXMoKQorCisgICAgICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvbi5nZXQoIkJVSUxERElSIikKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ10gPSB7fQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsndGVzdGxheWVyX3BhdGgnXSA9IFwKKyAgICAgICAgICAgICAgICBnZXRfdGVzdF9sYXllcigpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydidWlsZGRpciddID0gYnVpbGRkaXIKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZiddID0gXAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmZfYmFja3VwJ10gPSBcCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mLm9yaWciKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddID0gXAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvbG9jYWwuY29uZi5iayIpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVycyddID0gXAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVyc19iYWNrdXAnXSA9IFwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYub3JpZyIpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVyc19jbGFzc19iYWNrdXAnXSA9IFwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYuYmsiKQorCisgICAgICAgIGNvcHlmaWxlKHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmYnXSwKKyAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mX2JhY2t1cCddKQorICAgICAgICBjb3B5ZmlsZShzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnMnXSwgCisgICAgICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzX2JhY2t1cCddKQorCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXVsnc2tpcHMnXSA9IGFyZ3Muc2tpcHMKKworICAgIGRlZiBfcHJlX3J1bihzZWxmKToKKyAgICAgICAgZGVmIF9jaGVja19yZXF1aXJlZF9lbnZfdmFyaWFibGVzKHZhcnMpOgorICAgICAgICAgICAgZm9yIHZhciBpbiB2YXJzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCh2YXIpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5lcnJvcigiJXMgaXMgbm90IHNldC4gRGlkIHlvdSBmb3JnZXQgdG8gc291cmNlIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0PyIgJSB2YXIpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9FUUFQcmVSdW4KKworICAgICAgICBkZWYgX2NoZWNrX3ByZXNlbmNlX21ldGFfc2VsZnRlc3QoKToKKyAgICAgICAgICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvbi5nZXQoIkJVSUxERElSIikKKyAgICAgICAgICAgIGlmIG9zLmdldGN3ZCgpICE9IGJ1aWxkZGlyOgorICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIkNoYW5naW5nIGN3ZCB0byAlcyIgJSBidWlsZGRpcikKKyAgICAgICAgICAgICAgICBvcy5jaGRpcihidWlsZGRpcikKKworICAgICAgICAgICAgaWYgbm90ICJtZXRhLXNlbGZ0ZXN0IiBpbiBzZWxmLnRjLnRkWyJCQkxBWUVSUyJdOgorICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLndhcm4oIm1ldGEtc2VsZnRlc3QgbGF5ZXIgbm90IGZvdW5kIGluIEJCTEFZRVJTLCBhZGRpbmcgaXQiKQorICAgICAgICAgICAgICAgIG1ldGFfc2VsZnRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGMudGRbIkJCTEFZRVJTX0ZFVENIX0RJUiJdLCAnbWV0YS1zZWxmdGVzdCcpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihtZXRhX3NlbGZ0ZXN0ZGlyKToKKyAgICAgICAgICAgICAgICAgICAgcnVuQ21kKCJiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMiICVtZXRhX3NlbGZ0ZXN0ZGlyKQorICAgICAgICAgICAgICAgICAgICAjIHJlbG9hZCBkYXRhIGlzIG5lZWRlZCBiZWNhdXNlIGEgbWV0YS1zZWxmdGVzdCBsYXllciB3YXMgYWRkCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGMudGQgPSBnZXRfYmJfdmFycygpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGMuY29uZmlnX3BhdGhzWyd0ZXN0bGF5ZXJfcGF0aCddID0gZ2V0X3Rlc3RfbGF5ZXIoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmVycm9yKCJjb3VsZCBub3QgbG9jYXRlIG1ldGEtc2VsZnRlc3QgaW46XG4lcyIgJSBtZXRhX3NlbGZ0ZXN0ZGlyKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBPRVFBUHJlUnVuCisKKyAgICAgICAgZGVmIF9hZGRfbGF5ZXJfbGlicygpOgorICAgICAgICAgICAgYmJwYXRoID0gc2VsZi50Yy50ZFsnQkJQQVRIJ10uc3BsaXQoJzonKQorICAgICAgICAgICAgbGF5ZXJfbGliZGlycyA9IFtwIGZvciBwIGluIChvcy5wYXRoLmpvaW4obCwgJ2xpYicpIFwKKyAgICAgICAgICAgICAgICAgICAgZm9yIGwgaW4gYmJwYXRoKSBpZiBvcy5wYXRoLmV4aXN0cyhwKV0KKyAgICAgICAgICAgIGlmIGxheWVyX2xpYmRpcnM6CisgICAgICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiQWRkaW5nIGxheWVyIGxpYnJhcmllczoiKQorICAgICAgICAgICAgICAgIGZvciBsIGluIGxheWVyX2xpYmRpcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlx0JXMiICUgbCkKKworICAgICAgICAgICAgICAgIHN5cy5wYXRoLmV4dGVuZChsYXllcl9saWJkaXJzKQorICAgICAgICAgICAgICAgIGltcC5yZWxvYWQob2VxYS5zZWxmdGVzdCkKKworICAgICAgICBfY2hlY2tfcmVxdWlyZWRfZW52X3ZhcmlhYmxlcyhbIkJVSUxERElSIl0pCisgICAgICAgIF9jaGVja19wcmVzZW5jZV9tZXRhX3NlbGZ0ZXN0KCkKKworICAgICAgICBpZiAiYnVpbGRoaXN0b3J5LmJiY2xhc3MiIGluIHNlbGYudGMudGRbIkJCSU5DTFVERUQiXToKKyAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmVycm9yKCJZb3UgaGF2ZSBidWlsZGhpc3RvcnkgZW5hYmxlZCBhbHJlYWR5IGFuZCB0aGlzIGlzbid0IHJlY29tbWVuZGVkIGZvciBzZWxmdGVzdCwgcGxlYXNlIGRpc2FibGUgaXQgZmlyc3QuIikKKyAgICAgICAgICAgIHJhaXNlIE9FUUFQcmVSdW4KKworICAgICAgICBpZiAiUFJTRVJWX0hPU1QiIGluIHNlbGYudGMudGQ6CisgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5lcnJvcigiUGxlYXNlIHVuc2V0IFBSU0VSVl9IT1NUIGluIG9yZGVyIHRvIHJ1biBvZS1zZWxmdGVzdCIpCisgICAgICAgICAgICByYWlzZSBPRVFBUHJlUnVuCisKKyAgICAgICAgaWYgIlNBTklUWV9URVNURURfRElTVFJPUyIgaW4gc2VsZi50Yy50ZDoKKyAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmVycm9yKCJQbGVhc2UgdW5zZXQgU0FOSVRZX1RFU1RFRF9ESVNUUk9TIGluIG9yZGVyIHRvIHJ1biBvZS1zZWxmdGVzdCIpCisgICAgICAgICAgICByYWlzZSBPRVFBUHJlUnVuCisKKyAgICAgICAgX2FkZF9sYXllcl9saWJzKCkKKworICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJSdW5uaW5nIGJpdGJha2UgLXAiKQorICAgICAgICBydW5DbWQoImJpdGJha2UgLXAiKQorCisgICAgZGVmIF9pbnRlcm5hbF9ydW4oc2VsZiwgbG9nZ2VyLCBhcmdzKToKKyAgICAgICAgc2VsZi5tb2R1bGVfcGF0aHMgPSBzZWxmLl9nZXRfY2FzZXNfcGF0aHMoCisgICAgICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsndGQnXVsnQkJQQVRIJ10uc3BsaXQoJzonKSkKKworICAgICAgICBzZWxmLnRjID0gc2VsZi5fY29udGV4dF9jbGFzcygqKnNlbGYudGNfa3dhcmdzWydpbml0J10pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudGMubG9hZFRlc3RzKHNlbGYubW9kdWxlX3BhdGhzLCAqKnNlbGYudGNfa3dhcmdzWydsb2FkJ10pCisgICAgICAgIGV4Y2VwdCBPRVFBVGVzdE5vdEZvdW5kIGFzIGV4OgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGV4KQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBhcmdzLmxpc3RfdGVzdHM6CisgICAgICAgICAgICByYyA9IHNlbGYudGMubGlzdFRlc3RzKGFyZ3MubGlzdF90ZXN0cywgKipzZWxmLnRjX2t3YXJnc1snbGlzdCddKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcHJlX3J1bigpCisgICAgICAgICAgICByYyA9IHNlbGYudGMucnVuVGVzdHMoKipzZWxmLnRjX2t3YXJnc1sncnVuJ10pCisgICAgICAgICAgICByYy5sb2dEZXRhaWxzKCkKKyAgICAgICAgICAgIHJjLmxvZ1N1bW1hcnkoc2VsZi5uYW1lKQorCisgICAgICAgIHJldHVybiByYworCisgICAgZGVmIF9zaWduYWxfY2xlYW5faGFuZGxlcihzZWxmLCBzaWdudW0sIGZyYW1lKToKKyAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAKKyAgICBkZWYgcnVuKHNlbGYsIGxvZ2dlciwgYXJncyk6CisgICAgICAgIHNlbGYuX3Byb2Nlc3NfYXJncyhsb2dnZXIsIGFyZ3MpCisKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgc2VsZi5fc2lnbmFsX2NsZWFuX2hhbmRsZXIpCisKKyAgICAgICAgcmMgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGFyZ3MubWFjaGluZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQ3VzdG9tIG1hY2hpbmUgbW9kZSBlbmFibGVkLiBNQUNISU5FIHNldCB0byAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5tYWNoaW5lKQorCisgICAgICAgICAgICAgICAgaWYgYXJncy5tYWNoaW5lID09ICdhbGwnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgICAgICAgICAgICAgZm9yIG0gaW4gc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnbWFjaGluZXMnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXVsnbWFjaGluZSddID0gbQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoc2VsZi5faW50ZXJuYWxfcnVuKGxvZ2dlciwgYXJncykpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYOiB0aGUgb2Utc2VsZnRlc3Qgc2NyaXB0IG9ubHkgbmVlZHMgdG8ga25vdyBpZiBvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbWFjaGluZSBydW4gZmFpbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciByIGluIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSByCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHIud2FzU3VjY2Vzc2Z1bCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddWydtYWNoaW5lJ10gPSBhcmdzLm1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVybmFsX3J1bihsb2dnZXIsIGFyZ3MpCisKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddWydtYWNoaW5lJ10gPSBhcmdzLm1hY2hpbmUKKyAgICAgICAgICAgICAgICByYyA9IHNlbGYuX2ludGVybmFsX3J1bihsb2dnZXIsIGFyZ3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBjb25maWdfcGF0aHMgPSBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfYmFja3VwJ10pOgorICAgICAgICAgICAgICAgIGNvcHlmaWxlKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2JhY2t1cCddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGhzWydsb2NhbGNvbmYnXSkKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfYmFja3VwJ10pCisKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfYmFja3VwJ10pOgorICAgICAgICAgICAgICAgIGNvcHlmaWxlKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfYmFja3VwJ10sIAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGhzWydiYmxheWVycyddKQorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2JhY2t1cCddKQorCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXSk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydiYmxheWVyc19jbGFzc19iYWNrdXAnXSk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfY2xhc3NfYmFja3VwJ10pCisKKyAgICAgICAgICAgIG91dHB1dF9saW5rID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShhcmdzLm91dHB1dF9sb2cpLAorICAgICAgICAgICAgICAgICAgICAiJXMtcmVzdWx0cy5sb2ciICUgc2VsZi5uYW1lKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3V0cHV0X2xpbmspOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvdXRwdXRfbGluaykKKyAgICAgICAgICAgIG9zLnN5bWxpbmsoYXJncy5vdXRwdXRfbG9nLCBvdXRwdXRfbGluaykKKworICAgICAgICByZXR1cm4gcmMKKworX2V4ZWN1dG9yX2NsYXNzID0gT0VTZWxmdGVzdFRlc3RDb250ZXh0RXhlY3V0b3IKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2RldnRvb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9kZXZ0b29sLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzA0ODY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2RldnRvb2wucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNjk2ICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBnbG9iCi1pbXBvcnQgZm5tYXRjaAotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGNyZWF0ZV90ZW1wX2xheWVyCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXJzLCBydW5xZW11LCBnZXRfdGVzdF9sYXllcgotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIERldnRvb2xCYXNlKG9lU2VsZlRlc3QpOgotCi0gICAgZGVmIF90ZXN0X3JlY2lwZV9jb250ZW50cyhzZWxmLCByZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGNoZWNraW5oZXJpdHMpOgotICAgICAgICB3aXRoIG9wZW4ocmVjaXBlZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgaW52YXIgPSBOb25lCi0gICAgICAgICAgICBpbnZhbHVlID0gTm9uZQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICB2YXIgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgaW52YXI6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbGluZS5zdHJpcCgpLnN0cmlwKCciJykKLSAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJ1xcJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnZhbHVlICs9ICcgJyArIHZhbHVlWzotMV0uc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGludmFsdWUgKz0gJyAnICsgdmFsdWUuc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgdmFyID0gaW52YXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaW52YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgaW52YXIgPSBOb25lCi0gICAgICAgICAgICAgICAgZWxpZiAnPScgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgnPScsIDEpCi0gICAgICAgICAgICAgICAgICAgIHZhciA9IHNwbGl0bGluZVswXS5yc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNwbGl0bGluZVsxXS5zdHJpcCgpLnN0cmlwKCciJykKLSAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJ1xcJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnZhbHVlID0gdmFsdWVbOi0xXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnZhciA9IHZhcgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnaW5oZXJpdCAnKToKLSAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSBsaW5lLnNwbGl0KClbMTpdCi0KLSAgICAgICAgICAgICAgICBpZiB2YXIgYW5kIHZhciBpbiBjaGVja3ZhcnM6Ci0gICAgICAgICAgICAgICAgICAgIG5lZWR2YWx1ZSA9IGNoZWNrdmFycy5wb3AodmFyKQotICAgICAgICAgICAgICAgICAgICBpZiBuZWVkdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVmFyaWFibGUgJXMgc2hvdWxkIG5vdCBhcHBlYXIgaW4gcmVjaXBlLCBidXQgdmFsdWUgaXMgYmVpbmcgc2V0IHRvICIlcyInICUgKHZhciwgdmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5lZWR2YWx1ZSwgc2V0KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHZhciA9PSAnTElDRU5TRSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZXQodmFsdWUuc3BsaXQoJyAmICcpKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNldCh2YWx1ZS5zcGxpdCgpKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBuZWVkdmFsdWUsICd2YWx1ZXMgZm9yICVzIGRvIG5vdCBtYXRjaCcgJSB2YXIpCi0KLQotICAgICAgICBtaXNzaW5ndmFycyA9IHt9Ci0gICAgICAgIGZvciB2YXIsIHZhbHVlIGluIGNoZWNrdmFycy5pdGVtcygpOgotICAgICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgbWlzc2luZ3ZhcnNbdmFyXSA9IHZhbHVlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWlzc2luZ3ZhcnMsIHt9LCAnU29tZSBleHBlY3RlZCB2YXJpYWJsZXMgbm90IGZvdW5kIGluIHJlY2lwZTogJXMnICUgY2hlY2t2YXJzKQotCi0gICAgICAgIGZvciBpbmhlcml0IGluIGNoZWNraW5oZXJpdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGluaGVyaXQsIGluaGVyaXRzLCAnTWlzc2luZyBpbmhlcml0IG9mICVzJyAlIGluaGVyaXQpCi0KLSAgICBkZWYgX2NoZWNrX2JiYXBwZW5kKHNlbGYsIHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIGFwcGVuZGRpcik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1hcHBlbmRzJywgY3dkPXNlbGYuYnVpbGRkaXIpCi0gICAgICAgIHJlc3VsdGxpbmVzID0gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCkKLSAgICAgICAgaW5yZWNpcGUgPSBGYWxzZQotICAgICAgICBiYmFwcGVuZHMgPSBbXQotICAgICAgICBiYmFwcGVuZGZpbGUgPSBOb25lCi0gICAgICAgIGZvciBsaW5lIGluIHJlc3VsdGxpbmVzOgotICAgICAgICAgICAgaWYgaW5yZWNpcGU6Ci0gICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcgJyk6Ci0gICAgICAgICAgICAgICAgICAgIGJiYXBwZW5kcy5hcHBlbmQobGluZS5zdHJpcCgpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbGlmIGxpbmUgPT0gJyVzOicgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpOgotICAgICAgICAgICAgICAgIGlucmVjaXBlID0gVHJ1ZQotICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYmJhcHBlbmRzKSwgMiwgJyVzIHJlY2lwZSBpcyBiZWluZyBiYmFwcGVuZGVkIGJ5IGFub3RoZXIgbGF5ZXIgLSBiYmFwcGVuZHMgZm91bmQ6XG4gICVzJyAlICh0ZXN0cmVjaXBlLCAnXG4gICcuam9pbihiYmFwcGVuZHMpKSkKLSAgICAgICAgZm9yIGJiYXBwZW5kIGluIGJiYXBwZW5kczoKLSAgICAgICAgICAgIGlmIGJiYXBwZW5kLnN0YXJ0c3dpdGgoYXBwZW5kZGlyKToKLSAgICAgICAgICAgICAgICBiYmFwcGVuZGZpbGUgPSBiYmFwcGVuZAotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ2JiYXBwZW5kIGZvciByZWNpcGUgJXMgZG9lcyBub3Qgc2VlbSB0byBiZSBjcmVhdGVkIGluIHRlc3QgbGF5ZXInICUgdGVzdHJlY2lwZSkKLSAgICAgICAgcmV0dXJuIGJiYXBwZW5kZmlsZQotCi0gICAgZGVmIF9jcmVhdGVfdGVtcF9sYXllcihzZWxmLCB0ZW1wbGF5ZXJkaXIsIGFkZGxheWVyLCB0ZW1wbGF5ZXJuYW1lLCBwcmlvcml0eT05OTksIHJlY2lwZXBhdGhzcGVjPSdyZWNpcGVzLSovKicpOgotICAgICAgICBjcmVhdGVfdGVtcF9sYXllcih0ZW1wbGF5ZXJkaXIsIHRlbXBsYXllcm5hbWUsIHByaW9yaXR5LCByZWNpcGVwYXRoc3BlYykKLSAgICAgICAgaWYgYWRkbGF5ZXI6Ci0gICAgICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMgfHwgdHJ1ZScgJSB0ZW1wbGF5ZXJkaXIpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQotCi0gICAgZGVmIF9wcm9jZXNzX2xzX291dHB1dChzZWxmLCBvdXRwdXQpOgotICAgICAgICAiIiIKLSAgICAgICAgQ29udmVydCBscyAtbCBvdXRwdXQgdG8gYSBmb3JtYXQgd2UgY2FuIHJlYXNvbmFibHkgY29tcGFyZSBmcm9tIG9uZSBjb250ZXh0Ci0gICAgICAgIHRvIGFub3RoZXIgKGUuZy4gZnJvbSBob3N0IHRvIHRhcmdldCkKLSAgICAgICAgIiIiCi0gICAgICAgIGZpbGVsaXN0ID0gW10KLSAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoKQotICAgICAgICAgICAgaWYgbGVuKHNwbGl0bGluZSkgPCA4OgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnX3Byb2Nlc3NfbHNfb3V0cHV0OiBpbnZhbGlkIG91dHB1dCBsaW5lOiAlcycgJSBsaW5lKQotICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgLiBvbiBwZXJtcwotICAgICAgICAgICAgc3BsaXRsaW5lWzBdID0gc3BsaXRsaW5lWzBdLnJzdHJpcCgnLicpCi0gICAgICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIC4gb24gcGF0aHMKLSAgICAgICAgICAgIHNwbGl0bGluZVstMV0gPSBzcGxpdGxpbmVbLTFdLmxzdHJpcCgnLicpCi0gICAgICAgICAgICAjIERyb3AgZmllbGRzIHdlIGRvbid0IHdhbnQgdG8gY29tcGFyZQotICAgICAgICAgICAgZGVsIHNwbGl0bGluZVs3XQotICAgICAgICAgICAgZGVsIHNwbGl0bGluZVs2XQotICAgICAgICAgICAgZGVsIHNwbGl0bGluZVs1XQotICAgICAgICAgICAgZGVsIHNwbGl0bGluZVs0XQotICAgICAgICAgICAgZGVsIHNwbGl0bGluZVsxXQotICAgICAgICAgICAgZmlsZWxpc3QuYXBwZW5kKCcgJy5qb2luKHNwbGl0bGluZSkpCi0gICAgICAgIHJldHVybiBmaWxlbGlzdAotCi0KLWNsYXNzIERldnRvb2xUZXN0cyhEZXZ0b29sQmFzZSk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydUT1BESVInLCAnU1NUQVRFX0RJUiddKQotICAgICAgICBjbHMub3JpZ2luYWxfc3N0YXRlID0gYmJfdmFyc1snU1NUQVRFX0RJUiddCi0gICAgICAgIGNscy5kZXZ0b29sX3NzdGF0ZSA9IG9zLnBhdGguam9pbihiYl92YXJzWydUT1BESVInXSwgJ3NzdGF0ZV9kZXZ0b29sJykKLSAgICAgICAgY2xzLnNzdGF0ZV9jb25mICA9ICdTU1RBVEVfRElSID0gIiVzIlxuJyAlIGNscy5kZXZ0b29sX3NzdGF0ZQotICAgICAgICBjbHMuc3N0YXRlX2NvbmYgKz0gKCdTU1RBVEVfTUlSUk9SUyArPSAiZmlsZTovLy4qIGZpbGU6Ly8vJXMvUEFUSCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGNscy5vcmlnaW5hbF9zc3RhdGUpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBjbHMubG9nLmRlYnVnKCdEZWxldGluZyBkZXZ0b29sIHNzdGF0ZSBjYWNoZSBvbiAlcycgJSBjbHMuZGV2dG9vbF9zc3RhdGUpCi0gICAgICAgIHJ1bkNtZCgncm0gLXJmICVzJyAlIGNscy5kZXZ0b29sX3NzdGF0ZSkKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjYXNlIHNldHVwIGZ1bmN0aW9uIiIiCi0gICAgICAgIHN1cGVyKERldnRvb2xUZXN0cywgc2VsZikuc2V0VXAoKQotICAgICAgICBzZWxmLndvcmtzcGFjZWRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksCi0gICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoc2VsZi5zc3RhdGVfY29uZikKLQotICAgIGRlZiBfY2hlY2tfc3JjX3JlcG8oc2VsZiwgcmVwb19kaXIpOgotICAgICAgICAiIiJDaGVjayBzcmN0cmVlIGdpdCByZXBvc2l0b3J5IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihyZXBvX2RpciwgJy5naXQnKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAnZ2l0IHJlcG9zaXRvcnkgZm9yIGV4dGVybmFsIHNvdXJjZSB0cmVlIG5vdCBmb3VuZCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD1yZXBvX2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnN0cmlwKCksICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVhdGVkIGdpdCByZXBvIGlzIG5vdCBjbGVhbicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN5bWJvbGljLXJlZiBIRUFEJywgY3dkPXJlcG9fZGlyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3RyaXAoKSwgInJlZnMvaGVhZHMvZGV2dG9vbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1dyb25nIGJyYW5jaCBpbiBnaXQgcmVwbycpCi0KLSAgICBkZWYgX2NoZWNrX3JlcG9fc3RhdHVzKHNlbGYsIHJlcG9fZGlyLCBleHBlY3RlZF9zdGF0dXMpOgotICAgICAgICAiIiJDaGVjayB0aGUgd29ya3RyZWUgc3RhdHVzIG9mIGEgcmVwb3NpdG9yeSIiIgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLiAtLXBvcmNlbGFpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICBjd2Q9cmVwb19kaXIpCi0gICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgZm9yIGluZCwgKGZfc3RhdHVzLCBmbl9yZSkgaW4gZW51bWVyYXRlKGV4cGVjdGVkX3N0YXR1cyk6Ci0gICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goZm5fcmUsIGxpbmVbMzpdKToKLSAgICAgICAgICAgICAgICAgICAgaWYgZl9zdGF0dXMgIT0gbGluZVs6Ml06Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgc3RhdHVzIGluIGxpbmU6ICVzJyAlIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0YXR1cy5wb3AoaW5kKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgbW9kaWZpZWQgZmlsZSBpbiBsaW5lOiAlcycgJSBsaW5lKQotICAgICAgICBpZiBleHBlY3RlZF9zdGF0dXM6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ01pc3NpbmcgZmlsZSBjaGFuZ2VzOiAlcycgJSBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTE1OCkKLSAgICBkZWYgdGVzdF9jcmVhdGVfd29ya3NwYWNlKHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3dvcmtzcGFjZScgbm90IGluIHJlc3VsdC5vdXRwdXQsICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGxheWVyIGluIGJibGF5ZXJzLmNvbmYnKQotICAgICAgICAjIFRyeSBjcmVhdGluZyBhIHdvcmtzcGFjZSBsYXllciB3aXRoIGEgc3BlY2lmaWMgcGF0aAotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGNyZWF0ZS13b3Jrc3BhY2UgJXMnICUgdGVtcGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCBtc2cgPSAiTm8gd29ya3NwYWNlIGNyZWF0ZWQuIGRldnRvb2wgb3V0cHV0OiAlcyAiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBUcnkgY3JlYXRpbmcgYSB3b3Jrc3BhY2UgbGF5ZXIgd2l0aCB0aGUgZGVmYXVsdCBwYXRoCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBjcmVhdGUtd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgbXNnID0gIk5vIHdvcmtzcGFjZSBjcmVhdGVkLiBkZXZ0b29sIG91dHB1dDogJXMgIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi53b3Jrc3BhY2VkaXIsIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE1OSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZChzZWxmKToKLSAgICAgICAgIyBGZXRjaCBzb3VyY2UKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHVybCA9ICdodHRwOi8vd3d3Lml2YXJjaC5jb20vcHJvZ3JhbXMvc291cmNlcy9wdi0xLjUuMy50YXIuYnoyJwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3dnZXQgJXMnICUgdXJsLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCd0YXIgeGZ2IHB2LTEuNS4zLnRhci5iejInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdwdi0xLjUuMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnY29uZmlndXJlJykpLCAnVW5hYmxlIHRvIGZpbmQgY29uZmlndXJlIHNjcmlwdCBpbiBzb3VyY2UgZGlyZWN0b3J5JykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW5zc3RhdGUgcHYnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkIHB2ICVzJyAlIHNyY2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3B2JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUgKGhhdmUgdG8gZG8gdGhpcyAqYWZ0ZXIqIGRldnRvb2wgYWRkIHNpbmNlIHRoZSByZWNpcGUgb25seSBleGlzdHMgdGhlbikKLSAgICAgICAgYml0YmFrZSgncHYgLWMgY2xlYW5zc3RhdGUnKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBidWlsZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgcHYnKQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydEJywgJ2JpbmRpciddLCAncHYnKQotICAgICAgICBpbnN0YWxsZGlyID0gYmJfdmFyc1snRCddCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnN0YWxsZGlyLCAnQ291bGQgbm90IHF1ZXJ5IGluc3RhbGxkaXIgdmFyaWFibGUnKQotICAgICAgICBiaW5kaXIgPSBiYl92YXJzWydiaW5kaXInXQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYmluZGlyLCAnQ291bGQgbm90IHF1ZXJ5IGJpbmRpciB2YXJpYWJsZScpCi0gICAgICAgIGlmIGJpbmRpclswXSA9PSAnLyc6Ci0gICAgICAgICAgICBiaW5kaXIgPSBiaW5kaXJbMTpdCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaW5zdGFsbGRpciwgYmluZGlyLCAncHYnKSksICdwdiBiaW5hcnkgbm90IGZvdW5kIGluIEQnKQotCi0gICAgQHRlc3RjYXNlKDE0MjMpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZ2l0X2xvY2FsKHNlbGYpOgotICAgICAgICAjIEZldGNoIHNvdXJjZSBmcm9tIGEgcmVtb3RlIFVSTCwgYnV0IGRvIGl0IG91dHNpZGUgb2YgZGV2dG9vbAotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgcG4gPSAnZGJ1cy13YWl0JwotICAgICAgICBzcmNyZXYgPSAnNmNjNjA3N2EzNmZlMjY0OGE1Zjk5M2ZlN2MxNmM5NjMyZjk0NjUxNycKLSAgICAgICAgIyBXZSBjaG9vc2UgYW4gaHR0cHM6Ly8gZ2l0IFVSTCBoZXJlIHRvIGNoZWNrIHJld3JpdGluZyB0aGUgVVJMIHdvcmtzCi0gICAgICAgIHVybCA9ICdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9kYnVzLXdhaXQnCi0gICAgICAgICMgRm9yY2UgZmV0Y2hpbmcgdG8gIm5vbmFtZSIgc3ViZGlyIHNvIHdlIHZlcmlmeSB3ZSdyZSBwaWNraW5nIHVwIHRoZSBuYW1lIGZyb20gYXV0b2NvbmYKLSAgICAgICAgIyBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkgbmFtZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjbG9uZSAlcyBub25hbWUnICUgdXJsLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdub25hbWUnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCAtLWhhcmQgJXMnICUgc3JjcmV2LCBjd2Q9c3JjZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2NvbmZpZ3VyZS5hYycpKSwgJ1VuYWJsZSB0byBmaW5kIGNvbmZpZ3VyZSBzY3JpcHQgaW4gc291cmNlIGRpcmVjdG9yeScpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIERvbid0IHNwZWNpZnkgYSBuYW1lIHNpbmNlIHdlIHNob3VsZCBiZSBhYmxlIHRvIGF1dG8tZGV0ZWN0IGl0Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMnICUgc3JjZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCi0gICAgICAgICMgQ2hlY2sgdGhlIHJlY2lwZSBuYW1lIGlzIGNvcnJlY3QKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCBwbikKLSAgICAgICAgc2VsZi5hc3NlcnRJbignJXNfZ2l0LmJiJyAlIHBuLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQotICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZWZpbGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihwbiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlZmlsZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSAnR1BMdjInCi0gICAgICAgIGNoZWNrdmFyc1snTElDX0ZJTEVTX0NIS1NVTSddID0gJ2ZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MycKLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9naXQnCi0gICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcwLjErZ2l0JHtTUkNQVn0nCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9kYnVzLXdhaXQ7cHJvdG9jb2w9aHR0cHMnCi0gICAgICAgIGNoZWNrdmFyc1snU1JDUkVWJ10gPSBzcmNyZXYKLSAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydkYnVzJ10pCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0KLSAgICBAdGVzdGNhc2UoMTE2MikKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9saWJyYXJ5KHNlbGYpOgotICAgICAgICAjIEZldGNoIHNvdXJjZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgdmVyc2lvbiA9ICcxLjEnCi0gICAgICAgIHVybCA9ICdodHRwczovL3d3dy5pbnRyYTJuZXQuY29tL2VuL2RldmVsb3Blci9saWJmdGRpL2Rvd25sb2FkL2xpYmZ0ZGkxLSVzLnRhci5iejInICUgdmVyc2lvbgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3dnZXQgJXMnICUgdXJsLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCd0YXIgeGZ2IGxpYmZ0ZGkxLSVzLnRhci5iejInICUgdmVyc2lvbiwgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbGliZnRkaTEtJXMnICUgdmVyc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdDTWFrZUxpc3RzLnR4dCcpKSwgJ1VuYWJsZSB0byBmaW5kIENNYWtlTGlzdHMudHh0IGluIHNvdXJjZSBkaXJlY3RvcnknKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQgKGFuZCB1c2UgLVYgc28gd2UgdGVzdCB0aGF0IHRvbykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCBsaWJmdGRpICVzIC1WICVzJyAlIChzcmNkaXIsIHZlcnNpb24pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliZnRkaScsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlIChoYXZlIHRvIGRvIHRoaXMgKmFmdGVyKiBkZXZ0b29sIGFkZCBzaW5jZSB0aGUgcmVjaXBlIG9ubHkgZXhpc3RzIHRoZW4pCi0gICAgICAgIGJpdGJha2UoJ2xpYmZ0ZGkgLWMgY2xlYW5zc3RhdGUnKQotICAgICAgICAjIGxpYmZ0ZGkncyBweXRob24vQ01ha2VMaXN0cy50eHQgaXMgYSBiaXQgYnJva2VuLCBzbyBsZXQncyBqdXN0IGRpc2FibGUgaXQKLSAgICAgICAgIyBUaGVyZSdzIGFsc28gdGhlIG1hdHRlciBvZiBpdCBpbnN0YWxsaW5nIGNtYWtlIGZpbGVzIHRvIGEgcGF0aCB3ZSBkb24ndAotICAgICAgICAjIG5vcm1hbGx5IGNvdmVyLCB3aGljaCB0cmlnZ2VycyB0aGUgaW5zdGFsbGVkLXZzLXNoaXBwZWQgUUEgdGVzdCB3ZSBoYXZlCi0gICAgICAgICMgd2l0aGluIGRvX3BhY2thZ2UKLSAgICAgICAgcmVjaXBlZmlsZSA9ICclcy9yZWNpcGVzL2xpYmZ0ZGkvbGliZnRkaV8lcy5iYicgJSAoc2VsZi53b3Jrc3BhY2VkaXIsIHZlcnNpb24pCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBzZXR2YXIgJXMgRVhUUkFfT0VDTUFLRSAtLSBcJy1EUFlUSE9OX0JJTkRJTkdTPU9GRiAtRExJQkZURElfQ01BS0VfQ09ORklHX0RJUj0ke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXNcJycgJSByZWNpcGVmaWxlKQotICAgICAgICB3aXRoIG9wZW4ocmVjaXBlZmlsZSwgJ2EnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgnXG5GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcyJcbicpCi0gICAgICAgICAgICAjIFdlIGRvbid0IGhhdmUgdGhlIGFiaWxpdHkgdG8gcGljayB1cCB0aGlzIGRlcGVuZGVuY3kgYXV0b21hdGljYWxseSB5ZXQuLi4KLSAgICAgICAgICAgIGYud3JpdGUoJ1xuREVQRU5EUyArPSAibGlidXNiMSJcbicpCi0gICAgICAgICAgICBmLndyaXRlKCdcblRFU1RMSUJPVVRQVVQgPSAiJHtDT01QT05FTlRTX0RJUn0vJHtUVU5FX1BLR0FSQ0h9LyR7UE59LyR7bGliZGlyfSJcbicpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIGJ1aWxkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCBsaWJmdGRpJykKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnVEVTVExJQk9VVFBVVCcsICdTVEFNUCddLCAnbGliZnRkaScpCi0gICAgICAgIHN0YWdpbmdfbGliZGlyID0gYmJfdmFyc1snVEVTVExJQk9VVFBVVCddCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFnaW5nX2xpYmRpciwgJ0NvdWxkIG5vdCBxdWVyeSBURVNUTElCT1VUUFVUIHZhcmlhYmxlJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzdGFnaW5nX2xpYmRpciwgJ2xpYmZ0ZGkxLnNvLjIuMS4wJykpLCAibGliZnRkaSBiaW5hcnkgbm90IGZvdW5kIGluIFNUQUdJTkdfTElCRElSLiBPdXRwdXQgb2YgZGV2dG9vbCBidWlsZCBsaWJmdGRpICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHJlc2V0Ci0gICAgICAgIHN0YW1wcHJlZml4ID0gYmJfdmFyc1snU1RBTVAnXQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgbGliZnRkaScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsaWJmdGRpJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YW1wcHJlZml4LCAnVW5hYmxlIHRvIGdldCBTVEFNUCB2YWx1ZSBmb3IgcmVjaXBlIGxpYmZ0ZGknKQotICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKHN0YW1wcHJlZml4ICsgJyonKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoZXMsICdTdGFtcCBmaWxlcyBleGlzdCBmb3IgcmVjaXBlIGxpYmZ0ZGkgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzdGFnaW5nX2xpYmRpciwgJ2xpYmZ0ZGkxLnNvLjIuMS4wJykpLCAnbGliZnRkaSBiaW5hcnkgc3RpbGwgZm91bmQgaW4gU1RBR0lOR19MSUJESVIgYWZ0ZXIgY2xlYW5pbmcnKQotCi0gICAgQHRlc3RjYXNlKDExNjApCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZmV0Y2goc2VsZik6Ci0gICAgICAgICMgRmV0Y2ggc291cmNlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICB0ZXN0dmVyID0gJzAuMjMnCi0gICAgICAgIHVybCA9ICdodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvTS9NYXJrdXBTYWZlL01hcmt1cFNhZmUtJXMudGFyLmd6JyAlIHRlc3R2ZXIKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdweXRob24tbWFya3Vwc2FmZScKLSAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWYgJXMnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQuICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnc2V0dXAucHknKSksICdVbmFibGUgdG8gZmluZCBzZXR1cC5weSBpbiBzb3VyY2UgZGlyZWN0b3J5JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNyY2RpciwgJy5naXQnKSksICdnaXQgcmVwb3NpdG9yeSBmb3IgZXh0ZXJuYWwgc291cmNlIHRyZWUgd2FzIG5vdCBjcmVhdGVkJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZQotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzXyVzLmJiJyAlICh0ZXN0cmVjaXBlLCB0ZXN0dmVyKSwgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9NYXJrdXBTYWZlLSR7UFZ9JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHRlc3R2ZXIsICcke1BWfScpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0gICAgICAgICMgVHJ5IHdpdGggdmVyc2lvbiBzcGVjaWZpZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1uICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNodXRpbC5ybXRyZWUoc3JjZGlyKQotICAgICAgICBmYWtldmVyID0gJzEuOScKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtZiAlcyAtViAlcycgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmwsIGZha2V2ZXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ3NldHVwLnB5JykpLCAnVW5hYmxlIHRvIGZpbmQgc2V0dXAucHkgaW4gc291cmNlIGRpcmVjdG9yeScpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEluKCclc18lcy5iYicgJSAodGVzdHJlY2lwZSwgZmFrZXZlciksIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vTWFya3VwU2FmZS0lcycgJSB0ZXN0dmVyCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0KLSAgICBAdGVzdGNhc2UoMTE2MSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9mZXRjaF9naXQoc2VsZik6Ci0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICB1cmwgPSAnZ2l0c206Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tcmFhJwotICAgICAgICBjaGVja3JldiA9ICdhZTEyN2IxOWE1MGFhNTQyNTVlNDMzMGNjZmRkOWE1ZDA1OGU1ODFkJwotICAgICAgICB0ZXN0cmVjaXBlID0gJ21yYWEnCi0gICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbnNzdGF0ZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzIC1hIC1mICVzJyAlICh0ZXN0cmVjaXBlLCBzcmNkaXIsIHVybCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkOiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2ltcmFhJywgJ2ltcmFhLmMnKSksICdVbmFibGUgdG8gZmluZCBpbXJhYS9pbXJhYS5jIGluIHNvdXJjZSBkaXJlY3RvcnknKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlCi0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignX2dpdC5iYicsIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JwotICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMS4wK2dpdCR7U1JDUFZ9JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAotICAgICAgICBjaGVja3ZhcnNbJ1NSQ1JFViddID0gJyR7QVVUT1JFVn0nCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0gICAgICAgICMgVHJ5IHdpdGggcmV2aXNpb24gYW5kIHZlcnNpb24gc3BlY2lmaWVkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtbiAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzaHV0aWwucm10cmVlKHNyY2RpcikKLSAgICAgICAgdXJsX3JldiA9ICclcztyZXY9JXMnICUgKHVybCwgY2hlY2tyZXYpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWYgIiVzIiAtViAxLjUnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsX3JldikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnaW1yYWEnLCAnaW1yYWEuYycpKSwgJ1VuYWJsZSB0byBmaW5kIGltcmFhL2ltcmFhLmMgaW4gc291cmNlIGRpcmVjdG9yeScpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEluKCdfZ2l0LmJiJywgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9naXQnCi0gICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcxLjUrZ2l0JHtTUkNQVn0nCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCi0gICAgICAgIGNoZWNrdmFyc1snU1JDUkVWJ10gPSBjaGVja3JldgotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotCi0gICAgQHRlc3RjYXNlKDEzOTEpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZmV0Y2hfc2ltcGxlKHNlbGYpOgotICAgICAgICAjIEZldGNoIHNvdXJjZSBmcm9tIGEgcmVtb3RlIFVSTCwgYXV0by1kZXRlY3RpbmcgbmFtZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgdGVzdHZlciA9ICcxLjYuMCcKLSAgICAgICAgdXJsID0gJ2h0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9zb3VyY2VzL3B2LSVzLnRhci5iejInICUgdGVzdHZlcgotICAgICAgICB0ZXN0cmVjaXBlID0gJ3B2JwotICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMnICUgdXJsKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZC4gJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUgc2NyaXB0IGluIHNvdXJjZSBkaXJlY3RvcnknKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc3JjZGlyLCAnLmdpdCcpKSwgJ2dpdCByZXBvc2l0b3J5IGZvciBleHRlcm5hbCBzb3VyY2UgdHJlZSB3YXMgbm90IGNyZWF0ZWQnKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlCi0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignJXNfJXMuYmInICUgKHRlc3RyZWNpcGUsIHRlc3R2ZXIpLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9IE5vbmUKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZSh0ZXN0dmVyLCAnJHtQVn0nKQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotCi0gICAgQHRlc3RjYXNlKDExNjQpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnkoc2VsZik6Ci0gICAgICAgIGltcG9ydCBvZS5wYXRoCi0KLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gbWRhZG0nKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IG1kYWRtIC14ICVzJyAlIHRlbXBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlJykpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCi0gICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICdtZGFkbV8qLmJiYXBwZW5kJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVzLCAnYmJhcHBlbmQgbm90IGNyZWF0ZWQgJXMnICUgcmVzdWx0Lm91dHB1dCkKLQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21kYWRtJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotCi0gICAgICAgIGJpdGJha2UoJ21kYWRtIC1DIHVucGFjaycpCi0KLSAgICAgICAgZGVmIGNoZWNrX2xpbmUoY2hlY2tmaWxlLCBleHBlY3RlZCwgbWVzc2FnZSwgcHJlc2VudD1UcnVlKToKLSAgICAgICAgICAgICMgQ2hlY2sgZm9yICRleHBlY3RlZCwgb24gYSBsaW5lIG9uIGl0cyBvd24sIGluIGNoZWNrZmlsZS4KLSAgICAgICAgICAgIHdpdGggb3BlbihjaGVja2ZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICBpZiBwcmVzZW50OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkICsgJ1xuJywgZiwgbWVzc2FnZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGV4cGVjdGVkICsgJ1xuJywgZiwgbWVzc2FnZSkKLQotICAgICAgICBtb2RmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdtZGFkbS44LmluJykKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnUEtHRCcsICdtYW5kaXInXSwgJ21kYWRtJykKLSAgICAgICAgcGtnZCA9IGJiX3ZhcnNbJ1BLR0QnXQotICAgICAgICBzZWxmLmFzc2VydFRydWUocGtnZCwgJ0NvdWxkIG5vdCBxdWVyeSBQS0dEIHZhcmlhYmxlJykKLSAgICAgICAgbWFuZGlyID0gYmJfdmFyc1snbWFuZGlyJ10KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hbmRpciwgJ0NvdWxkIG5vdCBxdWVyeSBtYW5kaXIgdmFyaWFibGUnKQotICAgICAgICBtYW5maWxlID0gb2UucGF0aC5qb2luKHBrZ2QsIG1hbmRpciwgJ21hbjgnLCAnbWRhZG0uOCcpCi0KLSAgICAgICAgY2hlY2tfbGluZShtb2RmaWxlLCAnTGludXggU29mdHdhcmUgUkFJRCcsICdDb3VsZCBub3QgZmluZCBpbml0aWFsIHN0cmluZycpCi0gICAgICAgIGNoZWNrX2xpbmUobW9kZmlsZSwgJ2FudGlxdWUgcGluIHNhcmRpbmUnLCAnVW5leHBlY3RlZGx5IGZvdW5kIHJlcGxhY2VtZW50IHN0cmluZycsIHByZXNlbnQ9RmFsc2UpCi0KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJzZWQgLWkgJ3MhXkxpbnV4IFNvZnR3YXJlIFJBSUQkIWFudGlxdWUgcGluIHNhcmRpbmUhJyAlcyIgJSBtb2RmaWxlKQotICAgICAgICBjaGVja19saW5lKG1vZGZpbGUsICdhbnRpcXVlIHBpbiBzYXJkaW5lJywgJ21kYWRtLjguaW4gZmlsZSBub3QgbW9kaWZpZWQgKHNlZCBmYWlsZWQpJykKLQotICAgICAgICBiaXRiYWtlKCdtZGFkbSAtYyBwYWNrYWdlJykKLSAgICAgICAgY2hlY2tfbGluZShtYW5maWxlLCAnYW50aXF1ZSBwaW4gc2FyZGluZScsICdtYW4gZmlsZSBub3QgbW9kaWZpZWQuIG1hbiBzZWFyY2hlZCBmaWxlIHBhdGg6ICVzJyAlIG1hbmZpbGUpCi0KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY2hlY2tvdXQgLS0gJXMnICUgbW9kZmlsZSwgY3dkPXRlbXBkaXIpCi0gICAgICAgIGNoZWNrX2xpbmUobW9kZmlsZSwgJ0xpbnV4IFNvZnR3YXJlIFJBSUQnLCAnbWFuIC5pbiBmaWxlIG5vdCByZXN0b3JlZCAoZ2l0IGZhaWxlZCknKQotCi0gICAgICAgIGJpdGJha2UoJ21kYWRtIC1jIHBhY2thZ2UnKQotICAgICAgICBjaGVja19saW5lKG1hbmZpbGUsICdMaW51eCBTb2Z0d2FyZSBSQUlEJywgJ21hbiBmaWxlIG5vdCB1cGRhdGVkLiBtYW4gc2VhcmNoZWQgZmlsZSBwYXRoOiAlcycgJSBtYW5maWxlKQotCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCBtZGFkbScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtZGFkbScsIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkY2xlYW4oc2VsZik6Ci0gICAgICAgIGRlZiBhc3NlcnRGaWxlKHBhdGgsICpwYXRocyk6Ci0gICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHBhdGgsICpwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmKSwgIiVyIGRvZXMgbm90IGV4aXN0IiAlIGYpCi0gICAgICAgIGRlZiBhc3NlcnROb0ZpbGUocGF0aCwgKnBhdGhzKToKLSAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4ocGF0aCwgKnBhdGhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZikpLCAiJXIgZXhpc3RzIiAlIGYpCi0KLSAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZQotICAgICAgICBiaXRiYWtlKCdtZGFkbSBtNCAtYyBjbGVhbnNzdGF0ZScpCi0gICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHJlY2lwZQotICAgICAgICB0ZW1wZGlyX21kYWRtID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHRlbXBkaXJfbTQgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgYnVpbGRkaXJfbTQgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyX21kYWRtKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXJfbTQpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoYnVpbGRkaXJfbTQpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gbWRhZG0gbTQnKQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbTQnLCAnRVhURVJOQUxTUkNfQlVJTEQgPSAiJXMiXG5kb19jbGVhbigpIHtcblx0OlxufVxuJyAlIGJ1aWxkZGlyX200KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IG1kYWRtIC14ICVzJyAlIHRlbXBkaXJfbWRhZG0pCi0gICAgICAgICAgICBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IG00IC14ICVzJyAlIHRlbXBkaXJfbTQpCi0gICAgICAgICAgICBhc3NlcnROb0ZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKLSAgICAgICAgICAgIGFzc2VydE5vRmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCi0gICAgICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtNCAtZScpCi0gICAgICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtZGFkbSBtNCAtYyBjb21waWxlJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCkKLSAgICAgICAgICAgIGFzc2VydEZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKLSAgICAgICAgICAgIGFzc2VydEZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQotICAgICAgICAgICAgIyBDaGVjayB0aGF0IGJ1aWxkY2xlYW4gdGFzayBleGlzdHMgYW5kIGRvZXMgY2FsbCBtYWtlIGNsZWFuCi0gICAgICAgICAgICBiaXRiYWtlKCdtZGFkbSBtNCAtYyBidWlsZGNsZWFuJykKLSAgICAgICAgICAgIGFzc2VydE5vRmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQotICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKLSAgICAgICAgICAgIGJpdGJha2UoJ21kYWRtIG00IC1jIGNvbXBpbGUnKQotICAgICAgICAgICAgYXNzZXJ0RmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQotICAgICAgICAgICAgYXNzZXJ0RmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCi0gICAgICAgICAgICBiaXRiYWtlKCdtZGFkbSBtNCAtYyBjbGVhbicpCi0gICAgICAgICAgICAjIENoZWNrIHRoYXQgYnVpbGRjbGVhbiB0YXNrIGlzIHJ1biBiZWZvcmUgY2xlYW4gZm9yIEIgPT0gUwotICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCi0gICAgICAgICAgICAjIENoZWNrIHRoYXQgYnVpbGRjbGVhbiB0YXNrIGlzIG5vdCBydW4gYmVmb3JlIGNsZWFuIGZvciBCICE9IFMKLSAgICAgICAgICAgIGFzc2VydEZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdtNCcpCi0KLSAgICBAdGVzdGNhc2UoMTE2NikKLSAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9pbnZhbGlkKHNlbGYpOgotICAgICAgICAjIFRyeSBtb2RpZnlpbmcgc29tZSByZWNpcGVzCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotCi0gICAgICAgIHRlc3RyZWNpcGVzID0gJ3BlcmYga2VybmVsLWRldnNyYyBwYWNrYWdlLWluZGV4IGNvcmUtaW1hZ2UtbWluaW1hbCBtZXRhLXRvb2xjaGFpbiBwYWNrYWdlZ3JvdXAtY29yZS1zZGsgbWV0YS1pZGUtc3VwcG9ydCcuc3BsaXQoKQotICAgICAgICAjIEZpbmQgYWN0dWFsIG5hbWUgb2YgZ2NjLXNvdXJjZSBzaW5jZSBpdCBub3cgaW5jbHVkZXMgdGhlIHZlcnNpb24gLSBjcnVkZSwgYnV0IGdvb2QgZW5vdWdoIGZvciB0aGlzIHB1cnBvc2UKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgZ2NjLXNvdXJjZSonKQotICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICMganVzdCBtYXRjaCB0aG9zZSBsaW5lcyB0aGF0IGNvbnRhaW4gYSByZWFsIHRhcmdldAotICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCcoP1A8cmVjaXBlPl5bYS16QS1aMC05Li1dKykoP1A8Y29sb24+OiQpJywgbGluZSkKLSAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgdGVzdHJlY2lwZXMuYXBwZW5kKG0uZ3JvdXAoJ3JlY2lwZScpKQotICAgICAgICBmb3IgdGVzdHJlY2lwZSBpbiB0ZXN0cmVjaXBlczoKLSAgICAgICAgICAgICMgQ2hlY2sgaXQncyBhIHZhbGlkIHJlY2lwZQotICAgICAgICAgICAgYml0YmFrZSgnJXMgLWUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgICMgZGV2dG9vbCBleHRyYWN0IHNob3VsZCBmYWlsCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZXh0cmFjdCAlcyAlcycgJSAodGVzdHJlY2lwZSwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpKSwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnZGV2dG9vbCBleHRyYWN0IG9uICVzIHNob3VsZCBoYXZlIGZhaWxlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzJyAlICh0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0ZldGNoaW5nICcsIHJlc3VsdC5vdXRwdXQsICdkZXZ0b29sIGV4dHJhY3Qgb24gJXMgc2hvdWxkIGhhdmUgZXJyb3JlZCBvdXQgYmVmb3JlIHRyeWluZyB0byBmZXRjaCcgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdkZXZ0b29sIGV4dHJhY3Qgb24gJXMgc2hvdWxkIGhhdmUgZ2l2ZW4gYW4gRVJST1InICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgICMgZGV2dG9vbCBtb2RpZnkgc2hvdWxkIGZhaWwKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKSksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ2RldnRvb2wgbW9kaWZ5IG9uICVzIHNob3VsZCBoYXZlIGZhaWxlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzJyAlICAodGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ2RldnRvb2wgbW9kaWZ5IG9uICVzIHNob3VsZCBoYXZlIGdpdmVuIGFuIEVSUk9SJyAlIHRlc3RyZWNpcGUpCi0KLSAgICBAdGVzdGNhc2UoMTM2NSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9uYXRpdmUoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICAjIFRyeSBtb2RpZnlpbmcgc29tZSByZWNpcGVzCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotCi0gICAgICAgIGJiY2xhc3NleHRlbmRlZCA9IEZhbHNlCi0gICAgICAgIGluaGVyaXRuYXRpdmUgPSBGYWxzZQotICAgICAgICB0ZXN0cmVjaXBlcyA9ICdtdG9vbHMtbmF0aXZlIGFwdC1uYXRpdmUgZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZScuc3BsaXQoKQotICAgICAgICBmb3IgdGVzdHJlY2lwZSBpbiB0ZXN0cmVjaXBlczoKLSAgICAgICAgICAgIGNoZWNrZXh0ZW5kID0gJ25hdGl2ZScgaW4gKGdldF9iYl92YXIoJ0JCQ0xBU1NFWFRFTkQnLCB0ZXN0cmVjaXBlKSBvciAnJykuc3BsaXQoKQotICAgICAgICAgICAgaWYgbm90IGJiY2xhc3NleHRlbmRlZDoKLSAgICAgICAgICAgICAgICBiYmNsYXNzZXh0ZW5kZWQgPSBjaGVja2V4dGVuZAotICAgICAgICAgICAgaWYgbm90IGluaGVyaXRuYXRpdmU6Ci0gICAgICAgICAgICAgICAgaW5oZXJpdG5hdGl2ZSA9IG5vdCBjaGVja2V4dGVuZAotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnRVJST1IgaW4gZGV2dG9vbCBtb2RpZnkgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ0VSUk9SIGluIGRldnRvb2wgYnVpbGQgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0ICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ0VSUk9SIGluIGRldnRvb2wgcmVzZXQgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYmNsYXNzZXh0ZW5kZWQsICdOb25lIG9mIHRoZXNlIHJlY2lwZXMgYXJlIEJCQ0xBU1NFWFRFTkRlZCB0byBuYXRpdmUgLSBuZWVkIHRvIGFkanVzdCB0ZXN0cmVjaXBlcyBsaXN0OiAlcycgJSAnLCAnLmpvaW4odGVzdHJlY2lwZXMpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5oZXJpdG5hdGl2ZSwgJ05vbmUgb2YgdGhlc2UgcmVjaXBlcyBkbyAiaW5oZXJpdCBuYXRpdmUiIC0gbmVlZCB0byBhZGp1c3QgdGVzdHJlY2lwZXMgbGlzdDogJXMnICUgJywgJy5qb2luKHRlc3RyZWNpcGVzKSkKLQotCi0gICAgQHRlc3RjYXNlKDExNjUpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfZ2l0KHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdta2VsZmltYWdlJwotICAgICAgICBzcmNfdXJpID0gZ2V0X2JiX3ZhcignU1JDX1VSSScsIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlCi0gICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuc3N0YXRlJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHJlY2lwZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkLiBkZXZ0b29sIG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJ21rZWxmaW1hZ2VfKi5iYmFwcGVuZCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayBnaXQgcmVwbwotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotICAgICAgICAjIFRyeSBidWlsZGluZwotICAgICAgICBiaXRiYWtlKHRlc3RyZWNpcGUpCi0KLSAgICBAdGVzdGNhc2UoMTE2NykKLSAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9sb2NhbGZpbGVzKHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdsaWdodHRwZCcKLSAgICAgICAgc3JjX3VyaSA9IChnZXRfYmJfdmFyKCdTUkNfVVJJJywgdGVzdHJlY2lwZSkgb3IgJycpLnNwbGl0KCkKLSAgICAgICAgZm91bmRsb2NhbCA9IEZhbHNlCi0gICAgICAgIGZvciBpdGVtIGluIHNyY191cmk6Ci0gICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJ2ZpbGU6Ly8nKSBhbmQgJy5wYXRjaCcgbm90IGluIGl0ZW06Ci0gICAgICAgICAgICAgICAgZm91bmRsb2NhbCA9IFRydWUKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmRsb2NhbCwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gZmV0Y2ggbG9jYWwgZmlsZXMgYW5kIGl0IHNlZW1zIHRoYXQgaXQgbm8gbG9uZ2VyIGRvZXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZQotICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbnNzdGF0ZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2NvbmZpZ3VyZS5hYycpKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQotICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnJXNfKi5iYmFwcGVuZCcgJSB0ZXN0cmVjaXBlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCcpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgVHJ5IGJ1aWxkaW5nCi0gICAgICAgIGJpdGJha2UodGVzdHJlY2lwZSkKLQotICAgIEB0ZXN0Y2FzZSgxMzc4KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X3ZpcnR1YWwoc2VsZik6Ci0gICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHZpcnR1YWwgcmVjaXBlCi0gICAgICAgIHZpcnRyZWNpcGUgPSAndmlydHVhbC9tYWtlJwotICAgICAgICByZWFscmVjaXBlID0gJ21ha2UnCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh2aXJ0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUuYW0nKSksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKLSAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJyVzXyouYmJhcHBlbmQnICUgcmVhbHJlY2lwZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVzLCAnYmJhcHBlbmQgbm90IGNyZWF0ZWQgJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHZpcnRyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVhbHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayBnaXQgcmVwbwotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotICAgICAgICAjIFRoaXMgaXMgcHJvYmFibHkgc3VmZmljaWVudAotCi0KLSAgICBAdGVzdGNhc2UoMTE2OSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGUoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ21pbmljb20nCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCi0gICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gTk9UIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQotICAgICAgICAjIEZpcnN0LCBtb2RpZnkgYSByZWNpcGUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQotICAgICAgICAjIFdlIGRvbid0IHVzZSAteCBoZXJlIHNvIHRoYXQgd2UgdGVzdCB0aGUgYmVoYXZpb3VyIG9mIGRldnRvb2wgbW9kaWZ5IHdpdGhvdXQgaXQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLSAgICAgICAgIyBBZGQgYSBjb3VwbGUgb2YgY29tbWl0cwotICAgICAgICAjIEZJWE1FOiB0aGlzIG9ubHkgdGVzdHMgYWRkaW5nLCBuZWVkIHRvIGFsc28gdGVzdCB1cGRhdGUgYW5kIHJlbW92ZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIkFkZGl0aW9uYWwgbGluZSIgPj4gUkVBRE1FJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQ2hhbmdlIHRoZSBSRUFETUUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiQSBuZXcgZmlsZSIgPiBkZXZ0b29sLW5ldy1maWxlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGFkZCBkZXZ0b29sLW5ldy1maWxlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIGEgbmV3IGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAlcy8qLnBhdGNoOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovMDAwMS1DaGFuZ2UtdGhlLVJFQURNRS5wYXRjaCQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovMDAwMi1BZGQtYS1uZXctZmlsZS5wYXRjaCQnKV0KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTE3MikKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfZ2l0KHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdtdGQtdXRpbHMnCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCi0gICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KLSAgICAgICAgc2VsZi5hc3NlcnRJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHBhdGNoZXMgPSBbXQotICAgICAgICBmb3IgZW50cnkgaW4gc3JjX3VyaS5zcGxpdCgpOgotICAgICAgICAgICAgaWYgZW50cnkuc3RhcnRzd2l0aCgnZmlsZTovLycpIGFuZCBlbnRyeS5lbmRzd2l0aCgnLnBhdGNoJyk6Ci0gICAgICAgICAgICAgICAgcGF0Y2hlcy5hcHBlbmQoZW50cnlbNzpdLnNwbGl0KCc7JylbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocGF0Y2hlcyksIDAsICdUaGUgJXMgcmVjaXBlIGRvZXMgbm90IGFwcGVhciB0byBjb250YWluIGFueSBwYXRjaGVzLCBzbyB0aGlzIHRlc3Qgd2lsbCBub3QgYmUgZWZmZWN0aXZlJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCi0gICAgICAgICMgRmlyc3QsIG1vZGlmeSBhIHJlY2lwZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICAjIENoZWNrIGdpdCByZXBvCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0gICAgICAgICMgQWRkIGEgY291cGxlIG9mIGNvbW1pdHMKLSAgICAgICAgIyBGSVhNRTogdGhpcyBvbmx5IHRlc3RzIGFkZGluZywgbmVlZCB0byBhbHNvIHRlc3QgdXBkYXRlIGFuZCByZW1vdmUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICIjIEFkZGl0aW9uYWwgbGluZSIgPj4gTWFrZWZpbGUuYW0nLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJDaGFuZ2UgdGhlIE1ha2VmaWxlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIkEgbmV3IGZpbGUiID4gZGV2dG9vbC1uZXctZmlsZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBhZGQgZGV2dG9vbC1uZXctZmlsZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBhIG5ldyBmaWxlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gLXJmICVzOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSldICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICBbKCcgRCcsICcuKi8lcyQnICUgcGF0Y2gpIGZvciBwYXRjaCBpbiBwYXRjaGVzXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKLQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBkaWZmICVzJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSksIGN3ZD1vcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCi0gICAgICAgIGFkZGxpbmVzID0gWydTUkNSRVYgPSAiLioiJywgJ1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbXRkLXV0aWxzLmdpdCInXQotICAgICAgICBzcmN1cmlsaW5lcyA9IHNyY191cmkuc3BsaXQoKQotICAgICAgICBzcmN1cmlsaW5lc1swXSA9ICdTUkNfVVJJID0gIicgKyBzcmN1cmlsaW5lc1swXQotICAgICAgICBzcmN1cmlsaW5lcy5hcHBlbmQoJyInKQotICAgICAgICByZW1vdmVsaW5lcyA9IFsnU1JDUkVWID0gIi4qIiddICsgc3JjdXJpbGluZXMKLSAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJysrKycpIG9yIGxpbmUuc3RhcnRzd2l0aCgnLS0tJyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCcrJyk6Ci0gICAgICAgICAgICAgICAgbWF0Y2hlZCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gYWRkbGluZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKGl0ZW0sIGxpbmVbMTpdLnN0cmlwKCkpOgotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZWQsICdVbmV4cGVjdGVkIGRpZmYgYWRkIGxpbmU6ICVzJyAlIGxpbmUpCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnLScpOgotICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBGYWxzZQotICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHJlbW92ZWxpbmVzOgotICAgICAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChpdGVtLCBsaW5lWzE6XS5zdHJpcCgpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVkLCAnVW5leHBlY3RlZCBkaWZmIHJlbW92ZSBsaW5lOiAlcycgJSBsaW5lKQotICAgICAgICAjIE5vdyB0cnkgd2l0aCBhdXRvIG1vZGUKLSAgICAgICAgcnVuQ21kKCdjZCAlczsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgLS1zaG93LXRvcGxldmVsJywgY3dkPW9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKLSAgICAgICAgdG9wbGV2ZWxkaXIgPSByZXN1bHQub3V0cHV0LnN0cmlwKCkKLSAgICAgICAgcmVscGF0Y2hwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRvcGxldmVsZGlyKSwgdGVzdHJlY2lwZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCBvcy5wYXRoLnJlbHBhdGgocmVjaXBlZmlsZSwgdG9wbGV2ZWxkaXIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnJXMvMDAwMS1DaGFuZ2UtdGhlLU1ha2VmaWxlLnBhdGNoJyAlIHJlbHBhdGNocGF0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJyVzLzAwMDItQWRkLWEtbmV3LWZpbGUucGF0Y2gnICUgcmVscGF0Y2hwYXRoKV0KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTE3MCkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfYXBwZW5kKHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KLSAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBOT1QgYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCi0gICAgICAgICMgRmlyc3QsIG1vZGlmeSBhIHJlY2lwZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHRlbXBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NvdXJjZScpCi0gICAgICAgIHRlbXBsYXllcmRpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbGF5ZXInKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wc3JjZGlyKSkKLSAgICAgICAgIyBDaGVjayBnaXQgcmVwbwotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wc3JjZGlyKQotICAgICAgICAjIEFkZCBhIGNvbW1pdAotICAgICAgICByZXN1bHQgPSBydW5DbWQoInNlZCAncyFcXCgjZGVmaW5lIFZFUlNJT05cXFcqXCJbXlwiXSpcXClcIiFcXDEtY3VzdG9tXCIhJyAtaSBSZWFkTWUuYyIsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkFkZCBvdXIgY3VzdG9tIHZlcnNpb24iJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAtZiAlcy8qLnBhdGNoOyBnaXQgY2hlY2tvdXQgLicgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlKSkKLSAgICAgICAgIyBDcmVhdGUgYSB0ZW1wb3JhcnkgbGF5ZXIgYW5kIGFkZCBpdCB0byBiYmxheWVycy5jb25mCi0gICAgICAgIHNlbGYuX2NyZWF0ZV90ZW1wX2xheWVyKHRlbXBsYXllcmRpciwgVHJ1ZSwgJ3NlbGZ0ZXN0dXBkYXRlcmVjaXBlJykKLSAgICAgICAgIyBDcmVhdGUgdGhlIGJiYXBwZW5kCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlIGlzIHN0aWxsIGNsZWFuCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCi0gICAgICAgICMgQ2hlY2sgYmJhcHBlbmQgd2FzIGNyZWF0ZWQKLSAgICAgICAgc3BsaXRwYXRoID0gb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLnNwbGl0KG9zLnNlcCkKLSAgICAgICAgYXBwZW5kZGlyID0gb3MucGF0aC5qb2luKHRlbXBsYXllcmRpciwgc3BsaXRwYXRoWy0yXSwgc3BsaXRwYXRoWy0xXSkKLSAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgYXBwZW5kZGlyKQotICAgICAgICBwYXRjaGZpbGUgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCB0ZXN0cmVjaXBlLCAnMDAwMS1BZGQtb3VyLWN1c3RvbS12ZXJzaW9uLnBhdGNoJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHBhdGNoZmlsZSksICdQYXRjaCBmaWxlIG5vdCBjcmVhdGVkJykKLQotICAgICAgICAjIENoZWNrIGJiYXBwZW5kIGNvbnRlbnRzCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQWRkLW91ci1jdXN0b20tdmVyc2lvbi5wYXRjaCJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpKQotCi0gICAgICAgICMgQ2hlY2sgd2UgY2FuIHJ1biBpdCBhZ2FpbiBhbmQgYmJhcHBlbmQgaXNuJ3QgbW9kaWZpZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCi0gICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgZi5yZWFkbGluZXMoKSkKLSAgICAgICAgIyBEcm9wIG5ldyBjb21taXQgYW5kIGNoZWNrIHBhdGNoIGdldHMgZGVsZXRlZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCBIRUFEXicsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhwYXRjaGZpbGUpLCAnUGF0Y2ggZmlsZSBub3QgZGVsZXRlZCcpCi0gICAgICAgIGV4cGVjdGVkbGluZXMyID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lczIsIGYucmVhZGxpbmVzKCkpCi0gICAgICAgICMgUHV0IGNvbW1pdCBiYWNrIGFuZCBjaGVjayB3ZSBjYW4gcnVuIGl0IGlmIGxheWVyIGlzbid0IGluIGJibGF5ZXJzLmNvbmYKLSAgICAgICAgb3MucmVtb3ZlKGJiYXBwZW5kZmlsZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJBZGQgb3VyIGN1c3RvbSB2ZXJzaW9uIicsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignV0FSTklORzogU3BlY2lmaWVkIGxheWVyIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCBpbiBiYmxheWVycy5jb25mJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHBhdGNoZmlsZSksICdQYXRjaCBmaWxlIG5vdCBjcmVhdGVkICh3aXRoIGRpc2FibGVkIGxheWVyKScpCi0gICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgZi5yZWFkbGluZXMoKSkKLSAgICAgICAgIyBEZWxldGluZyBpc24ndCBleHBlY3RlZCB0byB3b3JrIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMKLQotICAgIEB0ZXN0Y2FzZSgxMTcxKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9hcHBlbmRfZ2l0KHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdtdGQtdXRpbHMnCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCi0gICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KLSAgICAgICAgc2VsZi5hc3NlcnRJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGZvciBlbnRyeSBpbiBzcmNfdXJpLnNwbGl0KCk6Ci0gICAgICAgICAgICBpZiBlbnRyeS5zdGFydHN3aXRoKCdnaXQ6Ly8nKToKLSAgICAgICAgICAgICAgICBnaXRfdXJpID0gZW50cnkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQotICAgICAgICAjIEZpcnN0LCBtb2RpZnkgYSByZWNpcGUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICB0ZW1wc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdzb3VyY2UnKQotICAgICAgICB0ZW1wbGF5ZXJkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2xheWVyJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcHNyY2RpcikpCi0gICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcHNyY2RpcikKLSAgICAgICAgIyBBZGQgYSBjb21taXQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICIjIEFkZGl0aW9uYWwgbGluZSIgPj4gTWFrZWZpbGUuYW0nLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJDaGFuZ2UgdGhlIE1ha2VmaWxlIicsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gLWYgJXMvKi5wYXRjaDsgZ2l0IGNoZWNrb3V0IC4nICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSkpCi0gICAgICAgICMgQ3JlYXRlIGEgdGVtcG9yYXJ5IGxheWVyCi0gICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsICdjb25mJykpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoJ0JCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IlxuJykKLSAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiXG4nKQotICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX0NPTExFQ1RJT05TICs9ICJvZXNlbGZ0ZXN0dGVtcGxheWVyIlxuJykKLSAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOX29lc2VsZnRlc3R0ZW1wbGF5ZXIgPSAiXiR7TEFZRVJESVJ9LyJcbicpCi0gICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUFJJT1JJVFlfb2VzZWxmdGVzdHRlbXBsYXllciA9ICI5OTkiXG4nKQotICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BBVFRFUk5fSUdOT1JFX0VNUFRZX29lc2VsZnRlc3R0ZW1wbGF5ZXIgPSAiMSJcbicpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcyB8fCB0cnVlJyAlIHRlbXBsYXllcmRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBjd2Q9c2VsZi5idWlsZGRpcikKLSAgICAgICAgIyBDcmVhdGUgdGhlIGJiYXBwZW5kCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzonLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZSBpcyBzdGlsbCBjbGVhbgotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQotICAgICAgICAjIENoZWNrIGJiYXBwZW5kIHdhcyBjcmVhdGVkCi0gICAgICAgIHNwbGl0cGF0aCA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKS5zcGxpdChvcy5zZXApCi0gICAgICAgIGFwcGVuZGRpciA9IG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsIHNwbGl0cGF0aFstMl0sIHNwbGl0cGF0aFstMV0pCi0gICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIGFwcGVuZGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCB0ZXN0cmVjaXBlKSksICdQYXRjaCBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBiZSBjcmVhdGVkJykKLQotICAgICAgICAjIENoZWNrIGJiYXBwZW5kIGNvbnRlbnRzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBzZXQoWydTUkNSRVYgPSAiJXMiXG4nICUgcmVzdWx0Lm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAiJXMiXG4nICUgZ2l0X3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10pCi0gICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgc2V0KGYucmVhZGxpbmVzKCkpKQotCi0gICAgICAgICMgQ2hlY2sgd2UgY2FuIHJ1biBpdCBhZ2FpbiBhbmQgYmJhcHBlbmQgaXNuJ3QgbW9kaWZpZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQotICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKLSAgICAgICAgIyBEcm9wIG5ldyBjb21taXQgYW5kIGNoZWNrIFNSQ1JFViBjaGFuZ2VzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJlc2V0IEhFQUReJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCB0ZXN0cmVjaXBlKSksICdQYXRjaCBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBiZSBjcmVhdGVkJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IHNldChbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICIlcyJcbicgJSBnaXRfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXSkKLSAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCi0gICAgICAgICMgUHV0IGNvbW1pdCBiYWNrIGFuZCBjaGVjayB3ZSBjYW4gcnVuIGl0IGlmIGxheWVyIGlzbid0IGluIGJibGF5ZXJzLmNvbmYKLSAgICAgICAgb3MucmVtb3ZlKGJiYXBwZW5kZmlsZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJDaGFuZ2UgdGhlIE1ha2VmaWxlIicsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dBUk5JTkc6IFNwZWNpZmllZCBsYXllciBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQgaW4gYmJsYXllcnMuY29uZicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSkpLCAnUGF0Y2ggZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgY3JlYXRlZCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBzZXQoWydTUkNSRVYgPSAiJXMiXG4nICUgcmVzdWx0Lm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAiJXMiXG4nICUgZ2l0X3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10pCi0gICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgc2V0KGYucmVhZGxpbmVzKCkpKQotICAgICAgICAjIERlbGV0aW5nIGlzbid0IGV4cGVjdGVkIHRvIHdvcmsgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcwotCi0gICAgQHRlc3RjYXNlKDEzNzApCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX2ZpbGVzKHNlbGYpOgotICAgICAgICAiIiJDaGVjayB0aGF0IGxvY2FsIHNvdXJjZSBmaWxlcyBhcmUgY29waWVkIG92ZXIgaW5zdGVhZCBvZiBwYXRjaGVkIiIiCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbWFrZWRldnMnCi0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBTZXR1cCBzcmN0cmVlIGZvciBtb2RpZnlpbmcgdGhlIHJlY2lwZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUKLSAgICAgICAgIyBidWlsZGluZyBpdCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLSAgICAgICAgIyBUcnkgYnVpbGRpbmcganVzdCB0byBlbnN1cmUgd2UgaGF2ZW4ndCBicm9rZW4gdGhhdAotICAgICAgICBiaXRiYWtlKCIlcyIgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIEVkaXQgLyBjb21taXQgbG9jYWwgc291cmNlCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiLyogRm9vYmFyICovIiA+PiBvZS1sb2NhbC1maWxlcy9tYWtlZGV2cy5jJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiRm9vIiA+IG9lLWxvY2FsLWZpbGVzL25ldy1sb2NhbCcsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2VjaG8gIkJhciIgPiBuZXctZmlsZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBhZGQgbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbmV3IGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBnaXQgY2xlYW4gLWZkIC47IGdpdCBjaGVja291dCAuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQotICAgICAgICBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBNJywgJy4qL21ha2VkZXZzL21ha2VkZXZzLmMkJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qL21ha2VkZXZzL25ldy1sb2NhbCQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovbWFrZWRldnMvMDAwMS1BZGQtbmV3LWZpbGUucGF0Y2gkJyldCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEzNzEpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX2ZpbGVzXzIoc2VsZik6Ci0gICAgICAgICIiIkNoZWNrIGxvY2FsIHNvdXJjZSBmaWxlcyBzdXBwb3J0IHdoZW4gb2UtbG9jYWwtZmlsZXMgaXMgaW4gR2l0IiIiCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbHpvJwotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgICMgU2V0dXAgc3JjdHJlZSBmb3IgbW9kaWZ5aW5nIHRoZSByZWNpcGUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICAjIENoZWNrIGdpdCByZXBvCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0gICAgICAgICMgQWRkIG9lLWxvY2FsLWZpbGVzIHRvIEdpdAotICAgICAgICBydW5DbWQoJ3JtIG9lLWxvY2FsLWZpbGVzLy5naXRpZ25vcmUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG9lLWxvY2FsLWZpbGVzJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIGxvY2FsIHNvdXJjZXMiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgICMgRWRpdCAvIGNvbW1pdCBsb2NhbCBzb3VyY2VzCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiIyBGb29iYXIiID4+IG9lLWxvY2FsLWZpbGVzL2FjaW5jbHVkZS5tNCcsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLWFtICJFZGl0IGV4aXN0aW5nIGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IHJtIG9lLWxvY2FsLWZpbGVzL3J1bi1wdGVzdCcsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0iUmVtb3ZlIGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiRm9vIiA+IG9lLWxvY2FsLWZpbGVzL25ldy1sb2NhbCcsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBhZGQgb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIG5ldyBsb2NhbCBmaWxlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2VjaG8gIkdhciIgPiBuZXctZmlsZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBhZGQgbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbmV3IGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBnaXQgY2xlYW4gLWZkIC47IGdpdCBjaGVja291dCAuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQotICAgICAgICAjIENoZWNrb3V0IHVubW9kaWZpZWQgZmlsZSB0byB3b3JraW5nIGNvcHkgLT4gZGV2dG9vbCBzaG91bGQgc3RpbGwgcGljawotICAgICAgICAjIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGZyb20gSEVBRAotICAgICAgICBydW5DbWQoJ2dpdCBjaGVja291dCBIRUFEXiAtLSBvZS1sb2NhbC1maWxlcy9hY2luY2x1ZGUubTQnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgTScsICcuKi9hY2luY2x1ZGUubTQkJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBEJywgJy4qL3J1bi1wdGVzdCQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovbmV3LWxvY2FsJCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi8wMDAxLUFkZC1uZXctZmlsZS5wYXRjaCQnKV0KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXNfMyhzZWxmKToKLSAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IHRoZSByZWNpcGUKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdkZXZ0b29sLXRlc3QtbG9jYWxvbmx5JwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQotICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIE1vZGlmeSBvbmUgZmlsZQotICAgICAgICBydW5DbWQoJ2VjaG8gIkFub3RoZXIgbGluZSIgPj4gZmlsZTInLCBjd2Q9b3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHRlc3RyZWNpcGUsICdvZS1sb2NhbC1maWxlcycpKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gJXMvKjsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcy9maWxlMiQnICUgdGVzdHJlY2lwZSldCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX3BhdGNoX2d6KHNlbGYpOgotICAgICAgICAjIEZpcnN0LCBtb2RpZnkgdGhlIHJlY2lwZQotICAgICAgICB0ZXN0cmVjaXBlID0gJ2RldnRvb2wtdGVzdC1wYXRjaC1neicKLSAgICAgICAgaWYgZ2V0X2JiX3ZhcignRElTVFJPJykgPT0gJ3Bva3ktdGlueSc6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUaGUgRElTVFJPICdwb2t5LXRpbnknIGRvZXMgbm90IHByb3ZpZGUgdGhlIGRlcGVuZGVuY2llcyBuZWVkZWQgYnkgJXMiICUgdGVzdHJlY2lwZSkKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KLSAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBNb2RpZnkgb25lIGZpbGUKLSAgICAgICAgc3JjdHJlZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCB0ZXN0cmVjaXBlKQotICAgICAgICBydW5DbWQoJ2VjaG8gIkFub3RoZXIgbGluZSIgPj4gUkVBRE1FJywgY3dkPXNyY3RyZWUpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtLWFtZW5kIC0tbm8tZWRpdCcsIGN3ZD1zcmN0cmVlKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gJXMvKjsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcy9yZWFkbWUucGF0Y2guZ3okJyAlIHRlc3RyZWNpcGUpXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKLSAgICAgICAgcGF0Y2hfZ3ogPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCAncmVhZG1lLnBhdGNoLmd6JykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdmaWxlICVzJyAlIHBhdGNoX2d6KQotICAgICAgICBpZiAnZ3ppcCBjb21wcmVzc2VkIGRhdGEnIG5vdCBpbiByZXN1bHQub3V0cHV0OgotICAgICAgICAgICAgc2VsZi5mYWlsKCdOZXcgcGF0Y2ggZmlsZSBpcyBub3QgZ3ppcHBlZCAtIGZpbGUgcmVwb3J0czpcbiVzJyAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXNfc3ViZGlyKHNlbGYpOgotICAgICAgICAjIFRyeSBkZXZ0b29sIGV4dHJhY3Qgb24gYSByZWNpcGUgdGhhdCBoYXMgYSBmaWxlIHdpdGggc3ViZGlyPSBzZXQgaW4KLSAgICAgICAgIyBTUkNfVVJJIHN1Y2ggdGhhdCBpdCBvdmVyd3JpdGVzIGEgZmlsZSB0aGF0IHdhcyBpbiBhbiBhcmNoaXZlIHRoYXQKLSAgICAgICAgIyB3YXMgYWxzbyBpbiBTUkNfVVJJCi0gICAgICAgICMgRmlyc3QsIG1vZGlmeSB0aGUgcmVjaXBlCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnZGV2dG9vbC10ZXN0LXN1YmRpcicKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KLSAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgdGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgdGVzdHJlY2lwZSwgJ3Rlc3RmaWxlJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRlc3RmaWxlKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgd2l0aCBvcGVuKHRlc3RmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBjb250ZW50cyA9IGYucmVhZCgpLnJzdHJpcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudHMsICdNb2RpZmllZCB2ZXJzaW9uJywgJ0ZpbGUgaGFzIGFwcGFyZW50bHkgbm90IGJlZW4gb3ZlcndyaXR0ZW4gYXMgaXQgc2hvdWxkIGhhdmUgYmVlbicpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAlcy8qOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFtdCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDExNjMpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9leHRyYWN0KHNlbGYpOgotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgICMgVHJ5IGRldnRvb2wgZXh0cmFjdAotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbWFrZSA9ICJyZW1ha2UiJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGV4dHJhY3QgcmVtYWtlICVzJyAlIHRlbXBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlLmFtJykpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICAjIGRldnRvb2wgZXh0cmFjdCBzaG91bGRuJ3QgY3JlYXRlIHRoZSB3b3Jrc3BhY2UKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpcikpCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0KLSAgICBAdGVzdGNhc2UoMTM3OSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2V4dHJhY3RfdmlydHVhbChzZWxmKToKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICAjIFRyeSBkZXZ0b29sIGV4dHJhY3QKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZXh0cmFjdCB2aXJ0dWFsL21ha2UgJXMnICUgdGVtcGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUuYW0nKSksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgICMgZGV2dG9vbCBleHRyYWN0IHNob3VsZG4ndCBjcmVhdGUgdGhlIHdvcmtzcGFjZQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSkKLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLQotICAgIEB0ZXN0Y2FzZSgxMTY4KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfcmVzZXRfYWxsKHNlbGYpOgotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgdGVzdHJlY2lwZTEgPSAnbWRhZG0nCi0gICAgICAgIHRlc3RyZWNpcGUyID0gJ2Nyb25pZScKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAteCAlcyAlcycgJSAodGVzdHJlY2lwZTEsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlMSkpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IC14ICVzICVzJyAlICh0ZXN0cmVjaXBlMiwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUyKSkpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSB0ZXN0cmVjaXBlMSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHRlc3RyZWNpcGUyKQotICAgICAgICBzdGFtcHByZWZpeDEgPSBnZXRfYmJfdmFyKCdTVEFNUCcsIHRlc3RyZWNpcGUxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhbXBwcmVmaXgxLCAnVW5hYmxlIHRvIGdldCBTVEFNUCB2YWx1ZSBmb3IgcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUxKQotICAgICAgICBzdGFtcHByZWZpeDIgPSBnZXRfYmJfdmFyKCdTVEFNUCcsIHRlc3RyZWNpcGUyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhbXBwcmVmaXgyLCAnVW5hYmxlIHRvIGdldCBTVEFNUCB2YWx1ZSBmb3IgcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLWEnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUxLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUyLCByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbih0ZXN0cmVjaXBlMSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbih0ZXN0cmVjaXBlMiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgbWF0Y2hlczEgPSBnbG9iLmdsb2Ioc3RhbXBwcmVmaXgxICsgJyonKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoZXMxLCAnU3RhbXAgZmlsZXMgZXhpc3QgZm9yIHJlY2lwZSAlcyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCcgJSB0ZXN0cmVjaXBlMSkKLSAgICAgICAgbWF0Y2hlczIgPSBnbG9iLmdsb2Ioc3RhbXBwcmVmaXgyICsgJyonKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoZXMyLCAnU3RhbXAgZmlsZXMgZXhpc3QgZm9yIHJlY2lwZSAlcyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCcgJSB0ZXN0cmVjaXBlMikKLQotICAgIEB0ZXN0Y2FzZSgxMjcyKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfZGVwbG95X3RhcmdldChzZWxmKToKLSAgICAgICAgIyBOT1RFOiBXaGlsc3QgdGhpcyB0ZXN0IHdvdWxkIHNlZW1pbmdseSBiZSBiZXR0ZXIgcGxhY2VkIGFzIGEgcnVudGltZSB0ZXN0LAotICAgICAgICAjIHVuZm9ydHVuYXRlbHkgdGhlIHJ1bnRpbWUgdGVzdHMgcnVuIHVuZGVyIGJpdGJha2UgYW5kIHlvdSBjYW4ndCBydW4KLSAgICAgICAgIyBkZXZ0b29sIHdpdGhpbiBiaXRiYWtlIChzaW5jZSBkZXZ0b29sIG5lZWRzIHRvIHJ1biBiaXRiYWtlIGl0c2VsZikuCi0gICAgICAgICMgQWRkaXRpb25hbGx5IHdlIGFyZSB0ZXN0aW5nIGJ1aWxkLXRpbWUgZnVuY3Rpb25hbGl0eSBhcyB3ZWxsLCBzbwotICAgICAgICAjIHJlYWxseSB0aGlzIGhhcyB0byBiZSBkb25lIGFzIGFuIG9lLXNlbGZ0ZXN0IHRlc3QuCi0gICAgICAgICMKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJykKLSAgICAgICAgaWYgbm90IG1hY2hpbmUuc3RhcnRzd2l0aCgncWVtdScpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGhpcyB0ZXN0IG9ubHkgd29ya3Mgd2l0aCBxZW11IG1hY2hpbmVzJykKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCcvZXRjL3J1bnFlbXUtbm9zdWRvJyk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdZb3UgbXVzdCBzZXQgdXAgdGFwIGRldmljZXMgd2l0aCBzY3JpcHRzL3J1bnFlbXUtZ2VuLXRhcGRldnMgYmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0JykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdQQVRIPSIkUEFUSDovc2JpbjovdXNyL3NiaW4iIGlwIHR1bnRhcCBzaG93JywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBpZiByZXN1bHQuc3RhdHVzICE9IDA6Ci0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ1BBVEg9IiRQQVRIOi9zYmluOi91c3Ivc2JpbiIgaWZjb25maWcgLWEnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgICAgICBpZiByZXN1bHQuc3RhdHVzICE9IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnRmFpbGVkIHRvIGRldGVybWluZSBpZiB0YXAgZGV2aWNlcyBleGlzdCB3aXRoIGlmY29uZmlnIG9yIGlwOiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgndGFwJyk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ05vIHRhcCBkZXZpY2VzIGZvdW5kIC0geW91IG11c3Qgc2V0IHVwIHRhcCBkZXZpY2VzIHdpdGggc2NyaXB0cy9ydW5xZW11LWdlbi10YXBkZXZzIGJlZm9yZSBydW5uaW5nIHRoaXMgdGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgICMgRGVmaW5pdGlvbnMKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKLSAgICAgICAgdGVzdGZpbGUgPSAnL3NiaW4vbWRhZG0nCi0gICAgICAgIHRlc3RpbWFnZSA9ICdvZS1zZWxmdGVzdC1pbWFnZScKLSAgICAgICAgdGVzdGNvbW1hbmQgPSAnL3NiaW4vbWRhZG0gLS1oZWxwJwotICAgICAgICAjIEJ1aWxkIGFuIGltYWdlIHRvIHJ1bgotICAgICAgICBiaXRiYWtlKCIlcyBxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUiICUgdGVzdGltYWdlKQotICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdGltYWdlKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtZiAlcy8lcyonICUgKGRlcGxveV9kaXJfaW1hZ2UsIHRlc3RpbWFnZSkpCi0gICAgICAgICMgQ2xlYW4gcmVjaXBlIHNvIHRoZSBmaXJzdCBkZXBsb3kgd2lsbCBmYWlsCi0gICAgICAgIGJpdGJha2UoIiVzIC1jIGNsZWFuIiAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgVHJ5IGRldnRvb2wgbW9kaWZ5Ci0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICAjIFRlc3QgdGhhdCBkZXBsb3ktdGFyZ2V0IGF0IHRoaXMgcG9pbnQgZmFpbHMgKHByb3Blcmx5KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZGVwbG95LXRhcmdldCAtbiAlcyByb290QGxvY2FsaG9zdCcgJSB0ZXN0cmVjaXBlLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0Lm91dHB1dCwgMCwgJ2RldnRvb2wgZGVwbG95LXRhcmdldCBzaG91bGQgaGF2ZSBmYWlsZWQsIG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZXN1bHQub3V0cHV0LCAnVHJhY2ViYWNrJywgJ2RldnRvb2wgZGVwbG95LXRhcmdldCBzaG91bGQgaGF2ZSBmYWlsZWQgd2l0aCBhIHByb3BlciBlcnJvciBub3QgYSB0cmFjZWJhY2ssIG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgRmlyc3QgdHJ5IGEgZHJ5LXJ1biBvZiBkZXBsb3ktdGFyZ2V0Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IC1uICVzIHJvb3RAbG9jYWxob3N0JyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJyAgJXMnICUgdGVzdGZpbGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQm9vdCB0aGUgaW1hZ2UKLSAgICAgICAgd2l0aCBydW5xZW11KHRlc3RpbWFnZSkgYXMgcWVtdToKLSAgICAgICAgICAgICMgTm93IHJlYWxseSB0ZXN0IGRlcGxveS10YXJnZXQKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IC1jICVzIHJvb3RAJXMnICUgKHRlc3RyZWNpcGUsIHFlbXUuaXApKQotICAgICAgICAgICAgIyBSdW4gYSB0ZXN0IGNvbW1hbmQgdG8gc2VlIGlmIGl0IHdhcyBpbnN0YWxsZWQgcHJvcGVybHkKLSAgICAgICAgICAgIHNzaGFyZ3MgPSAnLW8gVXNlcktub3duSG9zdHNGaWxlPS9kZXYvbnVsbCAtbyBTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9bm8nCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NzaCAlcyByb290QCVzICVzJyAlIChzc2hhcmdzLCBxZW11LmlwLCB0ZXN0Y29tbWFuZCkpCi0gICAgICAgICAgICAjIENoZWNrIGlmIGl0IGRlcGxveWVkIGFsbCBvZiB0aGUgZmlsZXMgd2l0aCB0aGUgcmlnaHQgb3duZXJzaGlwL3Blcm1zCi0gICAgICAgICAgICAjIEZpcnN0IGxvb2sgb24gdGhlIGhvc3QgLSBuZWVkIHRvIGRvIHRoaXMgdW5kZXIgcHNldWRvIHRvIGdldCB0aGUgY29ycmVjdCBvd25lcnNoaXAvcGVybXMKLSAgICAgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0QnLCAnRkFLRVJPT1RFTlYnLCAnRkFLRVJPT1RDTUQnXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIGluc3RhbGxkaXIgPSBiYl92YXJzWydEJ10KLSAgICAgICAgICAgIGZha2Vyb290ZW52ID0gYmJfdmFyc1snRkFLRVJPT1RFTlYnXQotICAgICAgICAgICAgZmFrZXJvb3RjbWQgPSBiYl92YXJzWydGQUtFUk9PVENNRCddCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJyVzICVzIGZpbmQgLiAtdHlwZSBmIC1leGVjIGxzIC1sIHt9IFw7JyAlIChmYWtlcm9vdGVudiwgZmFrZXJvb3RjbWQpLCBjd2Q9aW5zdGFsbGRpcikKLSAgICAgICAgICAgIGZpbGVsaXN0MSA9IHNlbGYuX3Byb2Nlc3NfbHNfb3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0KLSAgICAgICAgICAgICMgTm93IGxvb2sgb24gdGhlIHRhcmdldAotICAgICAgICAgICAgdGVtcGRpcjIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcjIpCi0gICAgICAgICAgICB0bXBmaWxlbGlzdCA9IG9zLnBhdGguam9pbih0ZW1wZGlyMiwgJ2ZpbGVzLnR4dCcpCi0gICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZWxpc3QsICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmaWxlbGlzdDE6Ci0gICAgICAgICAgICAgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoKQotICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNwbGl0bGluZVstMV0gKyAnXG4nKQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdjYXQgJXMgfCBzc2ggLXEgJXMgcm9vdEAlcyBcJ3hhcmdzIGxzIC1sXCcnICUgKHRtcGZpbGVsaXN0LCBzc2hhcmdzLCBxZW11LmlwKSkKLSAgICAgICAgICAgIGZpbGVsaXN0MiA9IHNlbGYuX3Byb2Nlc3NfbHNfb3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICAgICBmaWxlbGlzdDEuc29ydChrZXk9bGFtYmRhIGl0ZW06IGl0ZW0uc3BsaXQoKVstMV0pCi0gICAgICAgICAgICBmaWxlbGlzdDIuc29ydChrZXk9bGFtYmRhIGl0ZW06IGl0ZW0uc3BsaXQoKVstMV0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVsaXN0MSwgZmlsZWxpc3QyKQotICAgICAgICAgICAgIyBUZXN0IHVuZGVwbG95LXRhcmdldAotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVuZGVwbG95LXRhcmdldCAtYyAlcyByb290QCVzJyAlICh0ZXN0cmVjaXBlLCBxZW11LmlwKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc3NoICVzIHJvb3RAJXMgJXMnICUgKHNzaGFyZ3MsIHFlbXUuaXAsIHRlc3Rjb21tYW5kKSwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQsIDAsICd1bmRlcGxveS10YXJnZXQgZGlkIG5vdCByZW1vdmUgY29tbWFuZCBhcyBpdCBzaG91bGQgaGF2ZScpCi0KLSAgICBAdGVzdGNhc2UoMTM2NikKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkX2ltYWdlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGRldnRvb2wgYnVpbGQtaW1hZ2UgcGx1Z2luIiIiCi0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgaW1hZ2UpCi0gICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuJyAlIGltYWdlKQotICAgICAgICAjIEFkZCB0YXJnZXQgYW5kIG5hdGl2ZSByZWNpcGVzIHRvIHdvcmtzcGFjZQotICAgICAgICByZWNpcGVzID0gWydtZGFkbScsICdwYXJ0ZWQtbmF0aXZlJ10KLSAgICAgICAgZm9yIHJlY2lwZSBpbiByZWNpcGVzOgotICAgICAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSByZWNpcGUpCi0gICAgICAgICAgICBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlIChyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICAjIFRyeSB0byBidWlsZCBpbWFnZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQtaW1hZ2UgJXMnICUgaW1hZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LCAwLCAnZGV2dG9vbCBidWlsZC1pbWFnZSBmYWlsZWQnKQotICAgICAgICAjIENoZWNrIGlmIGltYWdlIGNvbnRhaW5zIGV4cGVjdGVkIHBhY2thZ2VzCi0gICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKLSAgICAgICAgaW1hZ2VfbGlua19uYW1lID0gZ2V0X2JiX3ZhcignSU1BR0VfTElOS19OQU1FJywgaW1hZ2UpCi0gICAgICAgIHJlcXBrZ3MgPSBbaXRlbSBmb3IgaXRlbSBpbiByZWNpcGVzIGlmIG5vdCBpdGVtLmVuZHN3aXRoKCctbmF0aXZlJyldCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9pbWFnZSwgaW1hZ2VfbGlua19uYW1lICsgJy5tYW5pZmVzdCcpLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgIHNwbGl0dmFsID0gbGluZS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgaWYgc3BsaXR2YWw6Ci0gICAgICAgICAgICAgICAgICAgIHBrZyA9IHNwbGl0dmFsWzBdCi0gICAgICAgICAgICAgICAgICAgIGlmIHBrZyBpbiByZXFwa2dzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVxcGtncy5yZW1vdmUocGtnKQotICAgICAgICBpZiByZXFwa2dzOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdUaGUgZm9sbG93aW5nIHBhY2thZ2VzIHdlcmUgbm90IHByZXNlbnQgaW4gdGhlIGltYWdlIGFzIGV4cGVjdGVkOiAlcycgJSAnLCAnLmpvaW4ocmVxcGtncykpCi0KLSAgICBAdGVzdGNhc2UoMTM2NykKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZ3JhZGUoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIENoZWNrIHBhcmFtZXRlcnMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZ3JhZGUgLWgnKQotICAgICAgICBmb3IgcGFyYW0gaW4gJ3JlY2lwZW5hbWUgc3JjdHJlZSAtLXZlcnNpb24gLVYgLS1icmFuY2ggLWIgLS1rZWVwLXRlbXAgLS1uby1wYXRjaCcuc3BsaXQoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGFyYW0sIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgRm9yIHRoZSBtb21lbnQsIHdlIGFyZSB1c2luZyBhIHJlYWwgcmVjaXBlLgotICAgICAgICByZWNpcGUgPSAnZGV2dG9vbC11cGdyYWRlLXRlc3QxJwotICAgICAgICB2ZXJzaW9uID0gJzEuNi4wJwotICAgICAgICBvbGRyZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHJlY2lwZSkKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgICMgQ2hlY2sgdGhhdCByZWNpcGUgaXMgbm90IGFscmVhZHkgdW5kZXIgZGV2dG9vbCBjb250cm9sCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayB1cGdyYWRlLiBDb2RlIGRvZXMgbm90IGNoZWNrIGlmIG5ldyBQViBpcyBvbGRlciBvciBuZXdlciB0aGF0IGN1cnJlbnQgUFYsIHNvLCBpdCBtYXkgYmUgdGhhdAotICAgICAgICAjIHdlIGFyZSBkb3duZ3JhZGluZyBpbnN0ZWFkIG9mIHVwZ3JhZGluZy4KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZ3JhZGUgJXMgJXMgLVYgJXMnICUgKHJlY2lwZSwgdGVtcGRpciwgdmVyc2lvbikpCi0gICAgICAgICMgQ2hlY2sgaWYgc3JjdHJlZSBhdCBsZWFzdCBpcyBwb3B1bGF0ZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihvcy5saXN0ZGlyKHRlbXBkaXIpKSA+IDAsICdzcmN0cmVlICglcykgc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIG5ldyAoJXMpIHNvdXJjZSBjb2RlJyAlICh0ZW1wZGlyLCB2ZXJzaW9uKSkKLSAgICAgICAgIyBDaGVjayBuZXcgcmVjaXBlIHN1YmRpcmVjdG9yeSBpcyBwcmVzZW50Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlLCAnJXMtJXMnICUgKHJlY2lwZSwgdmVyc2lvbikpKSwgJ1JlY2lwZSBmb2xkZXIgc2hvdWxkIGV4aXN0JykKLSAgICAgICAgIyBDaGVjayBuZXcgcmVjaXBlIGZpbGUgaXMgcHJlc2VudAotICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSwgJyVzXyVzLmJiJyAlIChyZWNpcGUsIHZlcnNpb24pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3cmVjaXBlZmlsZSksICdSZWNpcGUgZmlsZSBzaG91bGQgZXhpc3QgYWZ0ZXIgdXBncmFkZScpCi0gICAgICAgICMgQ2hlY2sgZGV2dG9vbCBzdGF0dXMgYW5kIG1ha2Ugc3VyZSByZWNpcGUgaXMgcHJlc2VudAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUgZ290IGNoYW5nZWQgYXMgZXhwZWN0ZWQKLSAgICAgICAgd2l0aCBvcGVuKG9sZHJlY2lwZWZpbGUgKyAnLnVwZ3JhZGVkJywgJ3InKSBhcyBmOgotICAgICAgICAgICAgZGVzaXJlZGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgICAgICB3aXRoIG9wZW4obmV3cmVjaXBlZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgbmV3bGluZXMgPSBmLnJlYWRsaW5lcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzaXJlZGxpbmVzLCBuZXdsaW5lcykKLSAgICAgICAgIyBDaGVjayBkZXZ0b29sIHJlc2V0IHJlY2lwZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgJXMgLW4nICUgcmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSkpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIHJlc2V0dGluZycpCi0KLSAgICBAdGVzdGNhc2UoMTQzMykKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZ3JhZGVfZ2l0KHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVjaXBlID0gJ2RldnRvb2wtdXBncmFkZS10ZXN0MicKLSAgICAgICAgY29tbWl0ID0gJzZjYzYwNzdhMzZmZTI2NDhhNWY5OTNmZTdjMTZjOTYzMmY5NDY1MTcnCi0gICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpcyBub3QgYWxyZWFkeSB1bmRlciBkZXZ0b29sIGNvbnRyb2wKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHVwZ3JhZGUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZ3JhZGUgJXMgJXMgLVMgJXMnICUgKHJlY2lwZSwgdGVtcGRpciwgY29tbWl0KSkKLSAgICAgICAgIyBDaGVjayBpZiBzcmN0cmVlIGF0IGxlYXN0IGlzIHBvcHVsYXRlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKG9zLmxpc3RkaXIodGVtcGRpcikpID4gMCwgJ3NyY3RyZWUgKCVzKSBzaG91bGQgYmUgcG9wdWxhdGVkIHdpdGggbmV3ICglcykgc291cmNlIGNvZGUnICUgKHRlbXBkaXIsIGNvbW1pdCkpCi0gICAgICAgICMgQ2hlY2sgbmV3IHJlY2lwZSBmaWxlIGlzIHByZXNlbnQKLSAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUob2xkcmVjaXBlZmlsZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhuZXdyZWNpcGVmaWxlKSwgJ1JlY2lwZSBmaWxlIHNob3VsZCBleGlzdCBhZnRlciB1cGdyYWRlJykKLSAgICAgICAgIyBDaGVjayBkZXZ0b29sIHN0YXR1cyBhbmQgbWFrZSBzdXJlIHJlY2lwZSBpcyBwcmVzZW50Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZSBnb3QgY2hhbmdlZCBhcyBleHBlY3RlZAotICAgICAgICB3aXRoIG9wZW4ob2xkcmVjaXBlZmlsZSArICcudXBncmFkZWQnLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBkZXNpcmVkbGluZXMgPSBmLnJlYWRsaW5lcygpCi0gICAgICAgIHdpdGggb3BlbihuZXdyZWNpcGVmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBuZXdsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXNpcmVkbGluZXMsIG5ld2xpbmVzKQotICAgICAgICAjIENoZWNrIGRldnRvb2wgcmVzZXQgcmVjaXBlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAlcyAtbicgJSByZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgcmVzZXR0aW5nJykKLQotICAgIEB0ZXN0Y2FzZSgxMzUyKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfbGF5ZXJfcGx1Z2lucyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB0aGF0IGRldnRvb2wgY2FuIHVzZSBwbHVnaW5zIGZyb20gb3RoZXIgbGF5ZXJzLgotCi0gICAgICAgIFRoaXMgdGVzdCBleGVjdXRlcyB0aGUgc2VsZnRlc3QtcmV2ZXJzZSBjb21tYW5kIGZyb20gbWV0YS1zZWxmdGVzdC4iIiIKLQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotCi0gICAgICAgIHMgPSAiTWljcm9zb2Z0IE1hZGUgTm8gUHJvZml0IEZyb20gQW55b25lJ3MgWnVuZXMgWW8iCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IHNlbGZ0ZXN0LXJldmVyc2UgXCIlc1wiIiAlIHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgc1s6Oi0xXSkKLQotICAgIGRlZiBfY29weV9maWxlX3dpdGhfY2xlYW51cChzZWxmLCBzcmNmaWxlLCBiYXNlZHN0ZGlyLCAqcGF0aHMpOgotICAgICAgICBkc3RkaXIgPSBiYXNlZHN0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkc3RkaXIpKQotICAgICAgICBmb3IgcCBpbiBwYXRoczoKLSAgICAgICAgICAgIGRzdGRpciA9IG9zLnBhdGguam9pbihkc3RkaXIsIHApCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0ZGlyKToKLSAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkc3RkaXIpCi0gICAgICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3RkaXIpCi0gICAgICAgIGRzdGZpbGUgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyY2ZpbGUpKQotICAgICAgICBpZiBzcmNmaWxlICE9IGRzdGZpbGU6Ci0gICAgICAgICAgICBzaHV0aWwuY29weShzcmNmaWxlLCBkc3RmaWxlKQotICAgICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChkc3RmaWxlKQotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9sb2FkX3BsdWdpbihzZWxmKToKLSAgICAgICAgIiIiVGVzdCB0aGF0IGRldnRvb2wgbG9hZHMgb25seSB0aGUgZmlyc3QgZm91bmQgcGx1Z2luIGluIEJCUEFUSC4iIiIKLQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotCi0gICAgICAgIGRldnRvb2wgPSBydW5DbWQoIndoaWNoIGRldnRvb2wiKQotICAgICAgICBmcm9tbmFtZSA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IHBsdWdpbmZpbGUiKQotICAgICAgICBzcmNmaWxlID0gZnJvbW5hbWUub3V0cHV0Ci0gICAgICAgIGJicGF0aCA9IGdldF9iYl92YXIoJ0JCUEFUSCcpCi0gICAgICAgIHNlYXJjaHBhdGggPSBiYnBhdGguc3BsaXQoJzonKSArIFtvcy5wYXRoLmRpcm5hbWUoZGV2dG9vbC5vdXRwdXQpXQotICAgICAgICBwbHVnaW5jb250ZW50ID0gW10KLSAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUpIGFzIGZoOgotICAgICAgICAgICAgcGx1Z2luY29udGVudCA9IGZoLnJlYWRsaW5lcygpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21ldGEtc2VsZnRlc3QnLCBzcmNmaWxlLCAnd3JvbmcgYmJwYXRoIHBsdWdpbiBmb3VuZCcpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoOgotICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfZmlsZV93aXRoX2NsZWFudXAoc3JjZmlsZSwgcGF0aCwgJ2xpYicsICdkZXZ0b29sJykKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IGNvdW50IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJzEnKQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgbXVsdGlsb2FkZWQiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAibm8iKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBiYmRpciIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCBwYXRoKQotICAgICAgICAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4ocmVzdWx0Lm91dHB1dCwgJ2xpYicsICdkZXZ0b29sJywgJ2JicGF0aC5weScpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUsICd3JykgYXMgZmg6Ci0gICAgICAgICAgICAgICAgZmgud3JpdGVsaW5lcyhwbHVnaW5jb250ZW50KQotCi0gICAgZGVmIF9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGUoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIFVzZSBhICJyZWFsIiByZWNpcGUgZnJvbSBtZXRhLXNlbGZ0ZXN0Ci0gICAgICAgIHJlY2lwZSA9ICdkZXZ0b29sLXVwZ3JhZGUtdGVzdDEnCi0gICAgICAgIG9sZHZlcnNpb24gPSAnMS41LjMnCi0gICAgICAgIG5ld3ZlcnNpb24gPSAnMS42LjAnCi0gICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQotICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob2xkcmVjaXBlZmlsZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC4nLCBjd2Q9cmVjaXBlZGlyKQotICAgICAgICBpZiByZXN1bHQub3V0cHV0LnN0cmlwKCk6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ1JlY2lwZSBkaXJlY3RvcnkgZm9yICVzIGNvbnRhaW5zIHVuY29tbWl0dGVkIGNoYW5nZXMnICUgcmVjaXBlKQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpcyBub3QgYWxyZWFkeSB1bmRlciBkZXZ0b29sIGNvbnRyb2wKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIERvIHRoZSB1cGdyYWRlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlICVzICVzIC1WICVzJyAlIChyZWNpcGUsIHRlbXBkaXIsIG5ld3ZlcnNpb24pKQotICAgICAgICAjIENoZWNrIGRldnRvb2wgc3RhdHVzIGFuZCBtYWtlIHN1cmUgcmVjaXBlIGlzIHByZXNlbnQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgTWFrZSBhIGNoYW5nZSB0byB0aGUgc291cmNlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnc2VkIC1pIFwnL14jaW5jbHVkZSAicHYuaCIvYSBcXC8qIEhlcmUgaXMgYSBuZXcgY29tbWVudCAqXFwvXCcgc3JjL3B2L251bWJlci5jJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBzZWxmLmFzc2VydEluKCdNIHNyYy9wdi9udW1iZXIuYycsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCBzcmMvcHYvbnVtYmVyLmMgLW0gIkFkZCBhIGNvbW1lbnQgdG8gdGhlIGNvZGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgICMgQ2hlY2sgaWYgcGF0Y2ggaXMgdGhlcmUKLSAgICAgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9sZHJlY2lwZWZpbGUpCi0gICAgICAgIG9sZGRpciA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsIHJlY2lwZSArICctJyArIG9sZHZlcnNpb24pCi0gICAgICAgIHBhdGNoZm4gPSAnMDAwMS1BZGQtYS1ub3RlLWxpbmUtdG8tdGhlLXF1aWNrLXJlZmVyZW5jZS5wYXRjaCcKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihvbGRkaXIsIHBhdGNoZm4pKSwgJ09yaWdpbmFsIHBhdGNoIGZpbGUgZG9lcyBub3QgZXhpc3QnKQotICAgICAgICByZXR1cm4gcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIG9sZGRpciwgbmV3dmVyc2lvbiwgcGF0Y2hmbgotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZV9vcmlnbGF5ZXIoc2VsZik6Ci0gICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBvbGRkaXIsIG5ld3ZlcnNpb24sIHBhdGNoZm4gPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGUoKQotICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQotICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS1zZWxmdGVzdC8nLCByZWNpcGVkaXIpCi0gICAgICAgICMgVHJ5IGZpbmlzaCB0byB0aGUgb3JpZ2luYWwgbGF5ZXIKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgbWV0YS1zZWxmdGVzdCcgJSByZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSkpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob2xkcmVjaXBlZmlsZSksICdPbGQgcmVjaXBlIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ob2xkZGlyLCBwYXRjaGZuKSksICdPbGQgcGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQgYnV0IHdhc25cJ3QnKQotICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgJyVzXyVzLmJiJyAlIChyZWNpcGUsIG5ld3ZlcnNpb24pKQotICAgICAgICBuZXdkaXIgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCByZWNpcGUgKyAnLScgKyBuZXd2ZXJzaW9uKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3cmVjaXBlZmlsZSksICdOZXcgcmVjaXBlIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBleGlzdGluZyBsYXllciBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCBwYXRjaGZuKSksICdQYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gbmV3IGRpcmVjdG9yeSBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCAnMDAwMi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJykpLCAnTmV3IHBhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ1dCB3YXNuXCd0JykKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGVfb3RoZXJsYXllcihzZWxmKToKLSAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIG9sZGRpciwgbmV3dmVyc2lvbiwgcGF0Y2hmbiA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZSgpCi0gICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLXNlbGZ0ZXN0LycsIHJlY2lwZWRpcikKLSAgICAgICAgIyBUcnkgZmluaXNoIHRvIGEgZGlmZmVyZW50IGxheWVyIC0gc2hvdWxkIGNyZWF0ZSBhIGJiYXBwZW5kCi0gICAgICAgICMgVGhpcyBjbGVhbnVwIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgZG8gaXQgYW55d2F5IGp1c3QgaW4gY2FzZSBpdCBnb2VzIHdyb25nIGFuZCB3cml0ZXMgdG8gaGVyZQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKLSAgICAgICAgb2VfY29yZV9kaXIgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ21ldGEnKQotICAgICAgICBuZXdyZWNpcGVkaXIgPSBvcy5wYXRoLmpvaW4ob2VfY29yZV9kaXIsICdyZWNpcGVzLXRlc3QnLCAnZGV2dG9vbCcpCi0gICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4obmV3cmVjaXBlZGlyLCAnJXNfJXMuYmInICUgKHJlY2lwZSwgbmV3dmVyc2lvbikpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobmV3cmVjaXBlZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG9lLWNvcmUnICUgcmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob2xkcmVjaXBlZmlsZSksICdPbGQgcmVjaXBlIGZpbGUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZGVsZXRlZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ob2xkZGlyLCBwYXRjaGZuKSksICdPbGQgcGF0Y2ggZmlsZSBzaG91bGQgbm90IGhhdmUgYmVlbiBkZWxldGVkJykKLSAgICAgICAgbmV3ZGlyID0gb3MucGF0aC5qb2luKG5ld3JlY2lwZWRpciwgcmVjaXBlICsgJy0nICsgbmV3dmVyc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3JlY2lwZWZpbGUpLCAnTmV3IHJlY2lwZSBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gZXhpc3RpbmcgbGF5ZXIgYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgcGF0Y2hmbikpLCAnUGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIG5ldyBkaXJlY3RvcnkgYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgJzAwMDItQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCcpKSwgJ05ldyBwYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBidXQgd2FzblwndCcpCi0KLSAgICBkZWYgX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5KHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHJlY2lwZSA9ICdtZGFkbScKLSAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCi0gICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShvbGRyZWNpcGVmaWxlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCi0gICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcycgJSByZWNpcGUpCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzICVzJyAlIChyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIE1ha2UgYSBjaGFuZ2UgdG8gdGhlIHNvdXJjZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NlZCAtaSBcJy9eI2luY2x1ZGUgIm1kYWRtLmgiL2EgXFwvKiBIZXJlIGlzIGEgbmV3IGNvbW1lbnQgKlxcL1wnIG1hcHMuYycsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRJbignTSBtYXBzLmMnLCByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgbWFwcy5jIC1tICJBZGQgYSBjb21tZW50IHRvIHRoZSBjb2RlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBmb3IgZW50cnkgaW4gb3MubGlzdGRpcihyZWNpcGVkaXIpOgotICAgICAgICAgICAgZmlsZXNkaXIgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCBlbnRyeSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZXNkaXIpOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBmaWxlcyBkaXJlY3RvcnkgZm9yICVzJyAlIHJlY2lwZSkKLSAgICAgICAgcmV0dXJuIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBmaWxlc2RpcgotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5X29yaWdsYXllcihzZWxmKToKLSAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIGZpbGVzZGlyID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnkoKQotICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQotICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS8nLCByZWNpcGVkaXIpCi0gICAgICAgICMgVHJ5IGZpbmlzaCB0byB0aGUgb3JpZ2luYWwgbGF5ZXIKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgbWV0YScgJSByZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSkpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKG9sZHJlY2lwZWZpbGUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovLiotQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCQnKV0KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMocmVjaXBlZGlyLCBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnlfb3RoZXJsYXllcihzZWxmKToKLSAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIGZpbGVzZGlyID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnkoKQotICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQotICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS8nLCByZWNpcGVkaXIpCi0gICAgICAgIHJlbHB0aCA9IG9zLnBhdGgucmVscGF0aChyZWNpcGVkaXIsIG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnbWV0YScpKQotICAgICAgICBhcHBlbmRkaXIgPSBvcy5wYXRoLmpvaW4oZ2V0X3Rlc3RfbGF5ZXIoKSwgcmVscHRoKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGFwcGVuZGRpcikKLSAgICAgICAgIyBUcnkgZmluaXNoIHRvIHRoZSBvcmlnaW5hbCBsYXllcgotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBtZXRhLXNlbGZ0ZXN0JyAlIHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC4nLCBjd2Q9cmVjaXBlZGlyKQotICAgICAgICBpZiByZXN1bHQub3V0cHV0LnN0cmlwKCk6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ1JlY2lwZSBkaXJlY3RvcnkgZm9yICVzIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdW5leHBlY3RlZCBjaGFuZ2VzIGFmdGVyIGZpbmlzaDpcbiVzJyAlIChyZWNpcGUsIHJlc3VsdC5vdXRwdXQuc3RyaXAoKSkpCi0gICAgICAgIHJlY2lwZWZuID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9sZHJlY2lwZWZpbGUpKVswXQotICAgICAgICByZWNpcGVmbiA9IHJlY2lwZWZuLnNwbGl0KCdfJylbMF0gKyAnXyUnCi0gICAgICAgIGFwcGVuZGZpbGUgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCByZWNpcGVmbiArICcuYmJhcHBlbmQnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoYXBwZW5kZmlsZSksICdiYmFwcGVuZCAlcyBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IHdhc25cJ3QnICUgYXBwZW5kZmlsZSkKLSAgICAgICAgbmV3ZGlyID0gb3MucGF0aC5qb2luKGFwcGVuZGRpciwgcmVjaXBlKQotICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIobmV3ZGlyKQotICAgICAgICBmb3VuZHBhdGNoID0gTm9uZQotICAgICAgICBmb3IgZm4gaW4gZmlsZXM6Ci0gICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2goZm4sICcqLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gnKToKLSAgICAgICAgICAgICAgICBmb3VuZHBhdGNoID0gZm4KLSAgICAgICAgaWYgbm90IGZvdW5kcGF0Y2g6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ05vIHBhdGNoIGZpbGUgY3JlYXRlZCBuZXh0IHRvIGJiYXBwZW5kJykKLSAgICAgICAgZmlsZXMucmVtb3ZlKGZvdW5kcGF0Y2gpCi0gICAgICAgIGlmIGZpbGVzOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGZpbGUocykgY29waWVkIG5leHQgdG8gYmJhcHBlbmQ6ICVzJyAlICcsICcuam9pbihmaWxlcykpCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX3JlbmFtZShzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0KLSAgICAgICAgIyBGaXJzdCBydW4gZGV2dG9vbCBhZGQKLSAgICAgICAgIyBXZSBhbHJlYWR5IGhhdmUgdGhpcyByZWNpcGUgaW4gT0UtQ29yZSwgYnV0IHRoYXQgZG9lc24ndCBtYXR0ZXIKLSAgICAgICAgcmVjaXBlbmFtZSA9ICdpMmMtdG9vbHMnCi0gICAgICAgIHJlY2lwZXZlciA9ICczLjEuMicKLSAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGVuYW1lLCAnJXNfJXMuYmInICUgKHJlY2lwZW5hbWUsIHJlY2lwZXZlcikpCi0gICAgICAgIHVybCA9ICdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvaTJjLXRvb2xzLSVzLnRhci5iejInICUgcmVjaXBldmVyCi0gICAgICAgIGRlZiBhZGRfcmVjaXBlKCk6Ci0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzJyAlIHVybCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZWNpcGVmaWxlKSwgJ0V4cGVjdGVkIHJlY2lwZSBmaWxlIG5vdCBjcmVhdGVkJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgcmVjaXBlbmFtZSkpLCAnU291cmNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCi0gICAgICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICAgICAgY2hlY2t2YXJzWydTJ10gPSBOb25lCi0gICAgICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHJlY2lwZXZlciwgJyR7UFZ9JykKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0gICAgICAgIGFkZF9yZWNpcGUoKQotICAgICAgICAjIE5vdyByZW5hbWUgaXQgLSBjaGFuZ2UgYm90aCBuYW1lIGFuZCB2ZXJzaW9uCi0gICAgICAgIG5ld3JlY2lwZW5hbWUgPSAnbXluZXdyZWNpcGUnCi0gICAgICAgIG5ld3JlY2lwZXZlciA9ICc0NTYnCi0gICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgbmV3cmVjaXBlbmFtZSwgJyVzXyVzLmJiJyAlIChuZXdyZWNpcGVuYW1lLCBuZXdyZWNpcGV2ZXIpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVuYW1lICVzICVzIC1WICVzJyAlIChyZWNpcGVuYW1lLCBuZXdyZWNpcGVuYW1lLCBuZXdyZWNpcGV2ZXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3cmVjaXBlZmlsZSksICdSZWNpcGUgZmlsZSBub3QgcmVuYW1lZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZW5hbWUpKSwgJ09sZCByZWNpcGUgZGlyZWN0b3J5IHN0aWxsIGV4aXN0cycpCi0gICAgICAgIG5ld3NyY3RyZWUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgbmV3cmVjaXBlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3NyY3RyZWUpLCAnU291cmNlIGRpcmVjdG9yeSBub3QgcmVuYW1lZCcpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vJXMtJXMnICUgKHJlY2lwZW5hbWUsIHJlY2lwZXZlcikKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMobmV3cmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLSAgICAgICAgIyBUcnkgYWdhaW4gLSBjaGFuZ2UganVzdCBuYW1lIHRoaXMgdGltZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLW4gJXMnICUgbmV3cmVjaXBlbmFtZSkKLSAgICAgICAgc2h1dGlsLnJtdHJlZShuZXdzcmN0cmVlKQotICAgICAgICBhZGRfcmVjaXBlKCkKLSAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCBuZXdyZWNpcGVuYW1lLCAnJXNfJXMuYmInICUgKG5ld3JlY2lwZW5hbWUsIHJlY2lwZXZlcikpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZW5hbWUgJXMgJXMnICUgKHJlY2lwZW5hbWUsIG5ld3JlY2lwZW5hbWUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3cmVjaXBlZmlsZSksICdSZWNpcGUgZmlsZSBub3QgcmVuYW1lZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZW5hbWUpKSwgJ09sZCByZWNpcGUgZGlyZWN0b3J5IHN0aWxsIGV4aXN0cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgbmV3cmVjaXBlbmFtZSkpLCAnU291cmNlIGRpcmVjdG9yeSBub3QgcmVuYW1lZCcpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vJXMtJHtQVn0nICUgcmVjaXBlbmFtZQotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHJlY2lwZXZlciwgJyR7UFZ9JykKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMobmV3cmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLSAgICAgICAgIyBUcnkgYWdhaW4gLSBjaGFuZ2UganVzdCB2ZXJzaW9uIHRoaXMgdGltZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLW4gJXMnICUgbmV3cmVjaXBlbmFtZSkKLSAgICAgICAgc2h1dGlsLnJtdHJlZShuZXdzcmN0cmVlKQotICAgICAgICBhZGRfcmVjaXBlKCkKLSAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGVuYW1lLCAnJXNfJXMuYmInICUgKHJlY2lwZW5hbWUsIG5ld3JlY2lwZXZlcikpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZW5hbWUgJXMgLVYgJXMnICUgKHJlY2lwZW5hbWUsIG5ld3JlY2lwZXZlcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhuZXdyZWNpcGVmaWxlKSwgJ1JlY2lwZSBmaWxlIG5vdCByZW5hbWVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCByZWNpcGVuYW1lKSksICdTb3VyY2UgZGlyZWN0b3J5IG5vIGxvbmdlciBleGlzdHMnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9LyR7QlBOfS0lcycgJSByZWNpcGV2ZXIKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMobmV3cmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLQotICAgIEB0ZXN0Y2FzZSgxNTc3KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdmlydHVhbF9rZXJuZWxfbW9kaWZ5KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBjYXNlIGlzIHRvIHZlcmlmeSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXZ0b29sIG1vZGlmeSB3b3JrcyBjb3JyZWN0bHkgd2hlbiBidWlsZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbC4KLSAgICAgICAgRGVwZW5kZW5jaWVzOiAgIE5BCi0gICAgICAgIFN0ZXBzOiAgICAgICAgICAxLiBCdWlsZCBrZXJuZWwgd2l0aCBiaXRiYWtlLgotICAgICAgICAgICAgICAgICAgICAgICAgMi4gU2F2ZSB0aGUgY29uZmlnIGZpbGUgZ2VuZXJhdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgMy4gQ2xlYW4gdGhlIGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgNC4gVXNlIGBkZXZ0b29sIG1vZGlmeSB2aXJ0dWFsL2tlcm5lbGAgdG8gdmFsaWRhdGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4xIFRoZSBzb3VyY2UgaXMgY2hlY2tlZCBvdXQgY29ycmVjdGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yIFRoZSByZXN1bHRpbmcgY29uZmlndXJhdGlvbiBpcyB0aGUgc2FtZSBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgd2FzIGdldCBvbiBzdGVwIDIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA0LjMgVGhlIEtlcm5lbCBjYW4gYmUgYnVpbGQgY29ycmVjdGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40IENoYW5nZXMgbWFkZSBvbiB0aGUgc291cmNlIGFyZSByZWZsZWN0ZWQgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBidWlsZHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA0LjUgQ2hhbmdlcyBvbiB0aGUgY29uZmlndXJhdGlvbiBhcmUgcmVmbGVjdGVkIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgYnVpbGRzCi0gICAgICAgICBFeHBlY3RlZDogICAgICAgZGV2dG9vbCBtb2RpZnkgaXMgYWJsZSB0byBjaGVja291dCB0aGUgc291cmNlIG9mIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbW9kaWZpY2F0aW9uIHRvIHRoZSBzb3VyY2UgYW5kIGNvbmZpZ3VyYXRpb25zIGFyZSByZWZsZWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIHRoZSBrZXJuZWwuCi0gICAgICAgICAiIiIKLSAgICAgICAgI1NldCBtYWNoaW5lIHRvIHFlbXh1ODYgdG8gYmUgYWJsZSB0byBtb2RpZnkgdGhlIGtlcm5lbCBhbmQKLSAgICAgICAgI3ZlcmlmeSB0aGUgbW9kaWZpY2F0aW9uLgotICAgICAgICBmZWF0dXJlcyA9ICdNQUNISU5FID0gInFlbXV4ODYiXG4nCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotICAgICAgICBrZXJuZWxfcHJvdmlkZXIgPSBnZXRfYmJfdmFyKCdQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwnKQotICAgICAgICAjIENsZWFuIHVwIHRoZSBlbnZpcm9tZW50Ci0gICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuJyAlIGtlcm5lbF9wcm92aWRlcikKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUga2VybmVsX3Byb3ZpZGVyKQotICAgICAgICAjU3RlcCAxCi0gICAgICAgICNIZXJlIGlzIGp1c3QgZ2VuZXJhdGVkIHRoZSBjb25maWcgZmlsZSBpbnN0ZWFkIG9mIGFsbCB0aGUga2VybmVsIHRvIG9wdGltaXplIHRoZQotICAgICAgICAjdGltZSBvZiBleGVjdXRpbmcgdGhpcyB0ZXN0IGNhc2UuCi0gICAgICAgIGJpdGJha2UoJyVzIC1jIGNvbmZpZ3VyZScgJSBrZXJuZWxfcHJvdmlkZXIpCi0gICAgICAgIGJiY29uZmlnID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0InLCBrZXJuZWxfcHJvdmlkZXIpLCcuY29uZmlnJykKLSAgICAgICAgYnVpbGRpcj0gZ2V0X2JiX3ZhcignVE9QRElSJykKLSAgICAgICAgI1N0ZXAgMgotICAgICAgICBydW5DbWQoJ2NwICVzICVzJyAlIChiYmNvbmZpZywgYnVpbGRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oYnVpbGRpciwgJy5jb25maWcnKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IGNvcHkgLmNvbmZpZyBmaWxlIGZyb20ga2VybmVsJykKLQotICAgICAgICB0bXBjb25maWcgPSBvcy5wYXRoLmpvaW4oYnVpbGRpciwgJy5jb25maWcnKQotICAgICAgICAjU3RlcCAzCi0gICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuJyAlIGtlcm5lbF9wcm92aWRlcikKLSAgICAgICAgI1N0ZXAgNC4xCi0gICAgICAgIHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgdmlydHVhbC9rZXJuZWwgLXggJXMnICUgdGVtcGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICAjU3RlcCA0LjIKLSAgICAgICAgY29uZmlnZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCcuY29uZmlnJykKLSAgICAgICAgZGlmZiA9IHJ1bkNtZCgnZGlmZiAlcyAlcycgJSAodG1wY29uZmlnLCBjb25maWdmaWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLGRpZmYuc3RhdHVzLCdLZXJuZWwgLmNvbmZpZyBmaWxlIGlzIG5vdCB0aGUgc2FtZSB1c2luZyBiaXRiYWtlIGFuZCBkZXZ0b29sJykKLSAgICAgICAgI1N0ZXAgNC4zCi0gICAgICAgICNOT1RFOiB2aXJ0dWFsL2tlcm5lbCBpcyBtYXBwZWQgdG8ga2VybmVsX3Byb3ZpZGVyCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSBrZXJuZWxfcHJvdmlkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxyZXN1bHQuc3RhdHVzLCdDYW5ub3QgYnVpbGQga2VybmVsIHVzaW5nIGBkZXZ0b29sIGJ1aWxkYCcpCi0gICAgICAgIGtlcm5lbGZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignS0JVSUxEX09VVFBVVCcsIGtlcm5lbF9wcm92aWRlciksICd2bWxpbnV4JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGtlcm5lbGZpbGUpLCdLZXJuZWwgd2FzIG5vdCBidWlsZCBjb3JyZWN0bHknKQotCi0gICAgICAgICNNb2RpZnkgdGhlIGtlcm5lbCBzb3VyY2UsIHRoaXMgaXMgc3BlY2lmaWMgZm9yIHFlbXV4ODYKLSAgICAgICAgbW9kZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCdhcmNoL3g4Ni9ib290L2hlYWRlci5TJykKLSAgICAgICAgbW9kc3RyaW5nID0gInVzZSBhIGJvb3QgbG9hZGVyIC0gRGV2dG9vbCBrZXJuZWwgdGVzdGluZyIKLSAgICAgICAgbW9kYXBwbGllZCA9IHJ1bkNtZCgic2VkIC1pICdzL2Jvb3QgbG9hZGVyLyVzLycgJXMiICUgKG1vZHN0cmluZywgbW9kZmlsZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxtb2RhcHBsaWVkLnN0YXR1cywnTW9kaWZpY2F0aW9uIHRvICVzIG9uIGtlcm5lbCBzb3VyY2UgZmFpbGVkJyAlIG1vZGZpbGUpCi0gICAgICAgICNNb2RpZnkgdGhlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgY29kZWNvbmZpZ2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwnLmNvbmZpZy5uZXcnKQotICAgICAgICBtb2Rjb25mb3B0ID0gIkNPTkZJR19TR19QT09MPW4iCi0gICAgICAgIG1vZGNvbmYgPSBydW5DbWQoInNlZCAtaSAncy9DT05GSUdfU0dfUE9PTD15LyVzLycgJXMiICUgKG1vZGNvbmZvcHQsIGNvZGVjb25maWdmaWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLG1vZGNvbmYuc3RhdHVzLCdNb2RpZmljYXRpb24gdG8gJXMgZmFpbGVkJyAlIGNvZGVjb25maWdmaWxlKQotICAgICAgICAjQnVpbGQgYWdhaW4ga2VybmVsIHdpdGggZGV2dG9vbAotICAgICAgICByZWJ1aWxkID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIGtlcm5lbF9wcm92aWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLHJlYnVpbGQuc3RhdHVzLCdGYWlsIHRvIGJ1aWxkIGtlcm5lbCBhZnRlciBtb2RpZmljYXRpb24gb2Ygc291cmNlIGFuZCBjb25maWcnKQotICAgICAgICAjU3RlcCA0LjQKLSAgICAgICAgYnppbWFnZW5hbWUgPSAnYnpJbWFnZS0nICsgZ2V0X2JiX3ZhcignS0VSTkVMX1ZFUlNJT05fTkFNRScsIGtlcm5lbF9wcm92aWRlcikKLSAgICAgICAgYnppbWFnZWZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignRCcsIGtlcm5lbF9wcm92aWRlciksJ2Jvb3QnLCBiemltYWdlbmFtZSkKLSAgICAgICAgY2hlY2ttb2Rjb2RlID0gcnVuQ21kKCJncmVwICclcycgJXMiICUgKG1vZHN0cmluZywgYnppbWFnZWZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsY2hlY2ttb2Rjb2RlLnN0YXR1cywnTW9kaWZpY2F0aW9uIG9uIGtlcm5lbCBzb3VyY2UgZmFpbGVkJykKLSAgICAgICAgI1N0ZXAgNC41Ci0gICAgICAgIGNoZWNrbW9kY29uZmcgPSBydW5DbWQoImdyZXAgJXMgJXMiICUgKG1vZGNvbmZvcHQsIGNvZGVjb25maWdmaWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLGNoZWNrbW9kY29uZmcuc3RhdHVzLCdNb2RpZmljYXRpb24gdG8gY29uZmlndXJhdGlvbiBmaWxlIGZhaWxlZCcpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9lU0RLLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZVNESy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5NmM2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9lU0RLLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgb3MKLWltcG9ydCBnbG9iCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwotCi1jbGFzcyBvZVNES0V4dFNlbGZUZXN0KG9lU2VsZlRlc3QpOgotICAgICIiIgotICAgICMgQnVnemlsbGEgVGVzdCBQbGFuOiA2MDMzCi0gICAgIyBUaGlzIGNvZGUgaXMgcGxhbm5lZCB0byBiZSBwYXJ0IG9mIHRoZSBhdXRvbWF0aW9uIGZvciBlU0RLIGNvbnRhaW5pZwotICAgICMgSW5zdGFsbCBsaWJyYXJpZXMgYW5kIGhlYWRlcnMsIGltYWdlIGdlbmVyYXRpb24gYmluYXJ5IGZlZWRzLCBzZGstdXBkYXRlLgotICAgICIiIgotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBnZXRfZXNka19lbnZpcm9ubWVudChlbnZfZVNESywgdG1wZGlyX2VTREtRQSk6Ci0gICAgICAgICMgWFhYOiBhdCB0aGlzIHRpbWUgdXNlIHRoZSBmaXJzdCBlbnYgbmVlZCB0byBpbnZlc3RpZ2F0ZQotICAgICAgICAjIHdoYXQgZW52aXJvbm1lbnQgbG9hZCBvZS1zZWxmdGVzdCwgaTU4NiwgeDg2XzY0Ci0gICAgICAgIHBhdHRlcm4gPSBvcy5wYXRoLmpvaW4odG1wZGlyX2VTREtRQSwgJ2Vudmlyb25tZW50LXNldHVwLSonKQotICAgICAgICByZXR1cm4gZ2xvYi5nbG9iKHBhdHRlcm4pWzBdCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHJ1bl9lc2RrX2NtZChlbnZfZVNESywgdG1wZGlyX2VTREtRQSwgY21kLCBwb3N0Y29uZmlnPU5vbmUsICoqb3B0aW9ucyk6Ci0gICAgICAgIGlmIHBvc3Rjb25maWc6Ci0gICAgICAgICAgICBlc2RrX2NvbmZfZmlsZSA9IG9zLnBhdGguam9pbih0bXBkaXJfZVNES1FBLCAnY29uZicsICdsb2NhbC5jb25mJykKLSAgICAgICAgICAgIHdpdGggb3Blbihlc2RrX2NvbmZfZmlsZSwgJ2ErJykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHBvc3Rjb25maWcpCi0gICAgICAgIGlmIG5vdCBvcHRpb25zOgotICAgICAgICAgICAgb3B0aW9ucyA9IHt9Ci0gICAgICAgIGlmIG5vdCAnc2hlbGwnIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBvcHRpb25zWydzaGVsbCddID0gVHJ1ZQotCi0gICAgICAgIHJ1bkNtZCgiY2QgJXM7IC4gJXM7ICVzIiAlICh0bXBkaXJfZVNES1FBLCBlbnZfZVNESywgY21kKSwgKipvcHRpb25zKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBnZW5lcmF0ZV9lU0RLKGltYWdlKToKLSAgICAgICAgcG5fdGFzayA9ICclcyAtYyBwb3B1bGF0ZV9zZGtfZXh0JyAlIGltYWdlCi0gICAgICAgIGJpdGJha2UocG5fdGFzaykKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZ2V0X2VTREtfdG9vbGNoYWluKGltYWdlKToKLSAgICAgICAgcG5fdGFzayA9ICclcyAtYyBwb3B1bGF0ZV9zZGtfZXh0JyAlIGltYWdlCi0KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU0RLX0RFUExPWScsICdUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRSddLCBwbl90YXNrKQotICAgICAgICBzZGtfZGVwbG95ID0gYmJfdmFyc1snU0RLX0RFUExPWSddCi0gICAgICAgIHRvb2xjaGFpbl9uYW1lID0gYmJfdmFyc1snVE9PTENIQUlORVhUX09VVFBVVE5BTUUnXQotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNka19kZXBsb3ksIHRvb2xjaGFpbl9uYW1lICsgJy5zaCcpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHVwZGF0ZV9jb25maWd1cmF0aW9uKGNscywgaW1hZ2UsIHRtcGRpcl9lU0RLUUEsIGVudl9lU0RLLCBleHRfc2RrX3BhdGgpOgotICAgICAgICBzc3RhdGVfZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ0JVSUxERElSJ10sICdzc3RhdGUtY2FjaGUnKQotCi0gICAgICAgIG9lU0RLRXh0U2VsZlRlc3QuZ2VuZXJhdGVfZVNESyhjbHMuaW1hZ2UpCi0KLSAgICAgICAgY2xzLmV4dF9zZGtfcGF0aCA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VTREtfdG9vbGNoYWluKGNscy5pbWFnZSkKLSAgICAgICAgcnVuQ21kKCIlcyAteSAtZCBcIiVzXCIiICUgKGNscy5leHRfc2RrX3BhdGgsIGNscy50bXBkaXJfZVNES1FBKSkKLQotICAgICAgICBjbHMuZW52X2VTREsgPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lc2RrX2Vudmlyb25tZW50KCcnLCBjbHMudG1wZGlyX2VTREtRQSkKLQotICAgICAgICBzc3RhdGVfY29uZmlnPSIiIgotU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUID0gIlNTVEFURV9NSVJST1JTIgotU1NUQVRFX01JUlJPUlMgPSAgImZpbGU6Ly8uKiBmaWxlOi8vJXMvUEFUSCIKLUNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCA9ICJwZXJsIgotICAgICAgICAiIiIgJSBzc3RhdGVfZGlyCi0KLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjbHMudG1wZGlyX2VTREtRQSwgJ2NvbmYnLCAnbG9jYWwuY29uZicpLCAnYSsnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShzc3RhdGVfY29uZmlnKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLnRtcGRpcl9lU0RLUUEgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZVNES1FBJykKLQotICAgICAgICBzc3RhdGVfZGlyID0gZ2V0X2JiX3ZhcignU1NUQVRFX0RJUicpCi0KLSAgICAgICAgY2xzLmltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgb2VTREtFeHRTZWxmVGVzdC5nZW5lcmF0ZV9lU0RLKGNscy5pbWFnZSkKLQotICAgICAgICAjIEluc3RhbGwgZVNESwotICAgICAgICBjbHMuZXh0X3Nka19wYXRoID0gb2VTREtFeHRTZWxmVGVzdC5nZXRfZVNES190b29sY2hhaW4oY2xzLmltYWdlKQotICAgICAgICBydW5DbWQoIiVzIC15IC1kIFwiJXNcIiIgJSAoY2xzLmV4dF9zZGtfcGF0aCwgY2xzLnRtcGRpcl9lU0RLUUEpKQotCi0gICAgICAgIGNscy5lbnZfZVNESyA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VzZGtfZW52aXJvbm1lbnQoJycsIGNscy50bXBkaXJfZVNES1FBKQotCi0gICAgICAgICMgQ29uZmlndXJlIGVTREsgdG8gdXNlIHNzdGF0ZSBtaXJyb3IgZnJvbSBwb2t5Ci0gICAgICAgIHNzdGF0ZV9jb25maWc9IiIiCi1TREtfTE9DQUxfQ09ORl9XSElURUxJU1QgPSAiU1NUQVRFX01JUlJPUlMiCi1TU1RBVEVfTUlSUk9SUyA9ICAiZmlsZTovLy4qIGZpbGU6Ly8lcy9QQVRIIgotICAgICAgICAgICAgIiIiICUgc3N0YXRlX2RpcgotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNscy50bXBkaXJfZVNES1FBLCAnY29uZicsICdsb2NhbC5jb25mJyksICdhKycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKHNzdGF0ZV9jb25maWcpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBzaHV0aWwucm10cmVlKGNscy50bXBkaXJfZVNES1FBKQotCi0gICAgQHRlc3RjYXNlICgxNjAyKQotICAgIGRlZiB0ZXN0X2luc3RhbGxfbGlicmFyaWVzX2hlYWRlcnMoc2VsZik6Ci0gICAgICAgIHBuX3NzdGF0ZSA9ICdiYycKLSAgICAgICAgYml0YmFrZShwbl9zc3RhdGUpCi0gICAgICAgIGNtZCA9ICJkZXZ0b29sIHNkay1pbnN0YWxsICVzICIgJSBwbl9zc3RhdGUKLSAgICAgICAgb2VTREtFeHRTZWxmVGVzdC5ydW5fZXNka19jbWQoc2VsZi5lbnZfZVNESywgc2VsZi50bXBkaXJfZVNES1FBLCBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMTYwMykKLSAgICBkZWYgdGVzdF9pbWFnZV9nZW5lcmF0aW9uX2JpbmFyeV9mZWVkcyhzZWxmKToKLSAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBjbWQgPSAiZGV2dG9vbCBidWlsZC1pbWFnZSAlcyIgJSBpbWFnZQotICAgICAgICBvZVNES0V4dFNlbGZUZXN0LnJ1bl9lc2RrX2NtZChzZWxmLmVudl9lU0RLLCBzZWxmLnRtcGRpcl9lU0RLUUEsIGNtZCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2ltYWdlX3R5cGVkZXAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9pbWFnZV90eXBlZGVwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTYxNDJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2ltYWdlX3R5cGVkZXAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1pbXBvcnQgb3MKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZQotCi1jbGFzcyBJbWFnZVR5cGVEZXBUZXN0cyhvZVNlbGZUZXN0KToKLQotICAgICMgVmVyaWZ5IHRoYXQgd2hlbiBzcGVjaWZ5aW5nIGEgSU1BR0VfVFlQRURFUF8gb2YgdGhlIGZvcm0gImZvby5iYXIiIHRoYXQKLSAgICAjIHRoZSBjb252ZXJzaW9uIHR5cGUgYmFyIGdldHMgYWRkZWQgYXMgYSBkZXAgYXMgd2VsbAotICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25fdHlwZWRlcF9hZGRlZChzZWxmKToKLQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnZW1wdHl0ZXN0JywgIiIiCi0jIFRyeSB0byBlbXB0eSBvdXQgdGhlIGRlZmF1bHQgZGVwZW5kZW5jeSBsaXN0Ci1QQUNLQUdFX0lOU1RBTEwgPSAiIgotRElTVFJPX0VYVFJBX1JERVBFTkRTPSIiCi0KLUxJQ0VOU0UgPSAiTUlUIgotSU1BR0VfRlNUWVBFUyA9ICJ0ZXN0ZnN0eXBlIgotCi1JTUFHRV9UWVBFU19NQVNLRUQgKz0gInRlc3Rmc3R5cGUiCi1JTUFHRV9UWVBFREVQX3Rlc3Rmc3R5cGUgPSAidGFyLmJ6MiIKLQotaW5oZXJpdCBpbWFnZQotCi0iIiIpCi0gICAgICAgICMgRmlyc3QgZ2V0IHRoZSBkZXBlbmRlbmN5IHRoYXQgc2hvdWxkIGV4aXN0IGZvciBiejIsIGl0IHdpbGwgbG9vawotICAgICAgICAjIGxpa2UgQ09OVkVSU0lPTl9ERVBFTkRTX2J6Mj0ic29tZWRlcCIKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWUgZW1wdHl0ZXN0JykKLQotICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpOgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdDT05WRVJTSU9OX0RFUEVORFNfYnoyJyk6Ci0gICAgICAgICAgICAgICAgZGVwID0gbGluZS5zcGxpdCgnPScpWzFdLnN0cmlwKCciJykKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICMgTm93IGdldCB0aGUgZGVwZW5kZW5jeSB0YXNrIGxpc3QgYW5kIGNoZWNrIGZvciB0aGUgZXhwZWN0ZWQgdGFzawotICAgICAgICAjIGRlcGVuZGVuY3kKLSAgICAgICAgYml0YmFrZSgnLWcgZW1wdHl0ZXN0JykKLQotICAgICAgICB0YXNrZGVwZW5kc2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3Rhc2stZGVwZW5kcy5kb3QnKQotICAgICAgICBkZXAgPSAgZGVwICsgIi5kb19wb3B1bGF0ZV9zeXNyb290IgotICAgICAgICBkZXBmb3VuZCA9IEZhbHNlCi0gICAgICAgIGV4cGVjdGVkbGluZSA9ICciZW1wdHl0ZXN0LmRvX3Jvb3RmcyIgLT4gInt9IicuZm9ybWF0KGRlcCkKLQotICAgICAgICB3aXRoIG9wZW4odGFza2RlcGVuZHNmaWxlLCAiciIpIGFzIGY6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RyaXAoKSA9PSBleHBlY3RlZGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGRlcGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIG5vdCBkZXBmb3VuZDoKLSAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJcInt9XCIgbm90IGZvdW5kIi5mb3JtYXQoZXhwZWN0ZWRsaW5lKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2ltYWdlZmVhdHVyZXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9pbWFnZWZlYXR1cmVzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Njg5NmM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2ltYWdlZmVhdHVyZXMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBydW5xZW11Ci1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLWZyb20gb2VxYS51dGlscy5zc2hjb250cm9sIGltcG9ydCBTU0hDb250cm9sCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBsb2dnaW5nCi0KLWNsYXNzIEltYWdlRmVhdHVyZXMob2VTZWxmVGVzdCk6Ci0KLSAgICB0ZXN0X3VzZXIgPSAndGVzdGVyJwotICAgIHJvb3RfdXNlciA9ICdyb290JwotCi0gICAgQHRlc3RjYXNlKDExMDcpCi0gICAgZGVmIHRlc3Rfbm9uX3Jvb3RfdXNlcl9jYW5fY29ubmVjdF92aWFfc3NoX3dpdGhvdXRfcGFzc3dvcmQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiBDaGVjayBpZiBub24gcm9vdCB1c2VyIGNhbiBjb25uZWN0IHZpYSBzc2ggd2l0aG91dCBwYXNzd29yZAotICAgICAgICBFeHBlY3RlZDogMS4gQ29ubmVjdGlvbiB0byB0aGUgaW1hZ2UgdmlhIHNzaCB1c2luZyByb290IHVzZXIgd2l0aG91dCBwcm92aWRpbmcgYSBwYXNzd29yZCBzaG91bGQgYmUgYWxsb3dlZC4KLSAgICAgICAgICAgICAgICAgIDIuIENvbm5lY3Rpb24gdG8gdGhlIGltYWdlIHZpYSBzc2ggdXNpbmcgdGVzdGVyIHVzZXIgd2l0aG91dCBwcm92aWRpbmcgYSBwYXNzd29yZCBzaG91bGQgYmUgYWxsb3dlZC4KLSAgICAgICAgUHJvZHVjdDogb2UtY29yZQotICAgICAgICBBdXRob3I6IElvbnV0IENoaXNhbm92aWNpIDxpb251dHguY2hpc2Fub3ZpY2lAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICBmZWF0dXJlcyA9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJzc2gtc2VydmVyLW9wZW5zc2ggZW1wdHktcm9vdC1wYXNzd29yZCBhbGxvdy1lbXB0eS1wYXNzd29yZCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0lOSEVSSVQgKz0gImV4dHJhdXNlcnMiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdFWFRSQV9VU0VSU19QQVJBTVMgPSAidXNlcmFkZCAtcCBcJ1wnIHt9OyB1c2VybW9kIC1zIC9iaW4vc2gge307IicuZm9ybWF0KHNlbGYudGVzdF91c2VyLCBzZWxmLnRlc3RfdXNlcikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgIyBCdWlsZCBhIGNvcmUtaW1hZ2UtbWluaW1hbAotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotCi0gICAgICAgIHdpdGggcnVucWVtdSgiY29yZS1pbWFnZS1taW5pbWFsIikgYXMgcWVtdToKLSAgICAgICAgICAgICMgQXR0ZW1wdCB0byBzc2ggd2l0aCBlYWNoIHVzZXIgaW50byBxZW11IHdpdGggZW1wdHkgcGFzc3dvcmQKLSAgICAgICAgICAgIGZvciB1c2VyIGluIFtzZWxmLnJvb3RfdXNlciwgc2VsZi50ZXN0X3VzZXJdOgotICAgICAgICAgICAgICAgIHNzaCA9IFNTSENvbnRyb2woaXA9cWVtdS5pcCwgbG9nZmlsZT1xZW11LnNzaGxvZywgdXNlcj11c2VyKQotICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc3NoLnJ1bigidHJ1ZSIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICdzc2ggdG8gdXNlciAlcyBmYWlsZWQgd2l0aCAlcycgJSAodXNlciwgb3V0cHV0KSkKLQotICAgIEB0ZXN0Y2FzZSgxMTE1KQotICAgIGRlZiB0ZXN0X2FsbF91c2Vyc19jYW5fY29ubmVjdF92aWFfc3NoX3dpdGhvdXRfcGFzc3dvcmQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgaWYgYWxsIHVzZXJzIGNhbiBjb25uZWN0IHZpYSBzc2ggd2l0aG91dCBwYXNzd29yZAotICAgICAgICBFeHBlY3RlZDogMS4gQ29ubmVjdGlvbiB0byB0aGUgaW1hZ2UgdmlhIHNzaCB1c2luZyByb290IHVzZXIgd2l0aG91dCBwcm92aWRpbmcgYSBwYXNzd29yZCBzaG91bGQgTk9UIGJlIGFsbG93ZWQuCi0gICAgICAgICAgICAgICAgICAyLiBDb25uZWN0aW9uIHRvIHRoZSBpbWFnZSB2aWEgc3NoIHVzaW5nIHRlc3RlciB1c2VyIHdpdGhvdXQgcHJvdmlkaW5nIGEgcGFzc3dvcmQgc2hvdWxkIGJlIGFsbG93ZWQuCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBJb251dCBDaGlzYW5vdmljaSA8aW9udXR4LmNoaXNhbm92aWNpQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAic3NoLXNlcnZlci1vcGVuc3NoIGFsbG93LWVtcHR5LXBhc3N3b3JkIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnSU5IRVJJVCArPSAiZXh0cmF1c2VycyJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0VYVFJBX1VTRVJTX1BBUkFNUyA9ICJ1c2VyYWRkIC1wIFwnXCcge307IHVzZXJtb2QgLXMgL2Jpbi9zaCB7fTsiJy5mb3JtYXQoc2VsZi50ZXN0X3VzZXIsIHNlbGYudGVzdF91c2VyKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICAjIEJ1aWxkIGEgY29yZS1pbWFnZS1taW5pbWFsCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0KLSAgICAgICAgd2l0aCBydW5xZW11KCJjb3JlLWltYWdlLW1pbmltYWwiKSBhcyBxZW11OgotICAgICAgICAgICAgIyBBdHRlbXB0IHRvIHNzaCB3aXRoIGVhY2ggdXNlciBpbnRvIHFlbXUgd2l0aCBlbXB0eSBwYXNzd29yZAotICAgICAgICAgICAgZm9yIHVzZXIgaW4gW3NlbGYucm9vdF91c2VyLCBzZWxmLnRlc3RfdXNlcl06Ci0gICAgICAgICAgICAgICAgc3NoID0gU1NIQ29udHJvbChpcD1xZW11LmlwLCBsb2dmaWxlPXFlbXUuc3NobG9nLCB1c2VyPXVzZXIpCi0gICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzc2gucnVuKCJ0cnVlIikKLSAgICAgICAgICAgICAgICBpZiB1c2VyID09ICdyb290JzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzdGF0dXMsIDAsICdzc2ggdG8gdXNlciByb290IHdhcyBhbGxvd2VkIHdoZW4gaXQgc2hvdWxkIG5vdCBoYXZlIGJlZW4nKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAnc3NoIHRvIHVzZXIgdGVzdGVyIGZhaWxlZCB3aXRoICVzJyAlIG91dHB1dCkKLQotCi0gICAgQHRlc3RjYXNlKDExMTYpCi0gICAgZGVmIHRlc3RfY2x1dHRlcl9pbWFnZV9jYW5fYmVfYnVpbHQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgaWYgY2x1dHRlciBpbWFnZSBjYW4gYmUgYnVpbHQKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGNvcmUtaW1hZ2UtY2x1dHRlciBjYW4gYmUgYnVpbHQKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIElvbnV0IENoaXNhbm92aWNpIDxpb251dHguY2hpc2Fub3ZpY2lAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICAjIEJ1aWxkIGEgY29yZS1pbWFnZS1jbHV0dGVyCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtY2x1dHRlcicpCi0KLSAgICBAdGVzdGNhc2UoMTExNykKLSAgICBkZWYgdGVzdF93YXlsYW5kX3N1cHBvcnRfaW5faW1hZ2Uoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgV2F5bGFuZCBzdXBwb3J0IGluIGltYWdlCi0gICAgICAgIEV4cGVjdGVkOiAgICAxLiBXYXlsYW5kIGltYWdlIGNhbiBiZSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgMi4gV2F5bGFuZCBmZWF0dXJlIGNhbiBiZSBpbnN0YWxsZWQKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIElvbnV0IENoaXNhbm92aWNpIDxpb251dHguY2hpc2Fub3ZpY2lAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICBkaXN0cm9fZmVhdHVyZXMgPSBnZXRfYmJfdmFyKCdESVNUUk9fRkVBVFVSRVMnKQotICAgICAgICBpZiBub3QgKCdvcGVuZ2wnIGluIGRpc3Ryb19mZWF0dXJlcyBhbmQgJ3dheWxhbmQnIGluIGRpc3Ryb19mZWF0dXJlcyk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCduZWl0aGVyIG9wZW5nbCBub3Igd2F5bGFuZCBwcmVzZW50IG9uIERJU1RST19GRUFUVVJFUyBzbyBjb3JlLWltYWdlLXdlc3RvbiBjYW5ub3QgYmUgYnVpbHQnKQotCi0gICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLXdlc3RvbgotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLXdlc3RvbicpCi0KLSAgICBkZWYgdGVzdF9ibWFwKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGJtYXAgc3VwcG9ydAotICAgICAgICBFeHBlY3RlZDogICAgMS4gY29yZS1pbWFnZS1taW5pbWFsIGNhbiBiZSBidWlsZCB3aXRoIGJtYXAgc3VwcG9ydAotICAgICAgICAgICAgICAgICAgICAgMi4gY29yZS1pbWFnZS1taW5pbWFsIGlzIHNwYXJzZQotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIGZlYXR1cmVzID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIiBleHQ0IGV4dDQuYm1hcCInCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgIGltYWdlX25hbWUgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBiaXRiYWtlKGltYWdlX25hbWUpCi0KLSAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQotICAgICAgICBsaW5rX25hbWUgPSBnZXRfYmJfdmFyKCdJTUFHRV9MSU5LX05BTUUnLCBpbWFnZV9uYW1lKQotICAgICAgICBpbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXJfaW1hZ2UsICIlcy5leHQ0IiAlIGxpbmtfbmFtZSkKLSAgICAgICAgYm1hcF9wYXRoID0gIiVzLmJtYXAiICUgaW1hZ2VfcGF0aAotCi0gICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGltYWdlIGFuZCBibWFwIGZpbGUgYXJlIGluIGRlcGxveSBkaXJlY3RvcnkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGltYWdlX3BhdGgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoYm1hcF9wYXRoKSkKLQotICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpbWFnZSBpcyBzcGFyc2UKLSAgICAgICAgaW1hZ2Vfc3RhdCA9IG9zLnN0YXQoaW1hZ2VfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGltYWdlX3N0YXQuc3Rfc2l6ZSA+IGltYWdlX3N0YXQuc3RfYmxvY2tzICogNTEyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGF5ZXJhcHBlbmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9sYXllcmFwcGVuZC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdiYjMyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9sYXllcmFwcGVuZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByZQotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJ1aWxkaGlzdG9yeSBpbXBvcnQgQnVpbGRoaXN0b3J5QmFzZQotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIKLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBMYXllckFwcGVuZFRlc3RzKG9lU2VsZlRlc3QpOgotICAgIGxheWVyY29uZiA9ICIiIgotIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFwcGVuZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgYSByZWNpcGVzIGRpcmVjdG9yeSwgYWRkIHRvIEJCRklMRVMKLUJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMqLyouYmIgJHtMQVlFUkRJUn0vcmVjaXBlcyovKi5iYmFwcGVuZCIKLQotQkJGSUxFX0NPTExFQ1RJT05TICs9ICJtZXRhLWxheWVySU5UIgotQkJGSUxFX1BBVFRFUk5fbWV0YS1sYXllcklOVCA6PSAiXiR7TEFZRVJESVJ9LyIKLUJCRklMRV9QUklPUklUWV9tZXRhLWxheWVySU5UID0gIjYiCi0iIiIKLSAgICByZWNpcGUgPSAiIiIKLUxJQ0VOU0U9IkNMT1NFRCIKLUlOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi0KLXB5dGhvbiBkb19idWlsZCgpIHsKLSAgICBiYi5wbGFpbignQnVpbGRpbmcgLi4uJykKLX0KLWFkZHRhc2sgYnVpbGQKLSIiIgotICAgIGFwcGVuZCA9ICIiIgotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgotCi1TUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2FwcGVuZHRlc3QudHh0IgotCi1zeXNyb290X3N0YWdlX2FsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9hcHBlbmR0ZXN0LnR4dCAke1NZU1JPT1RfREVTVERJUn0vCi19Ci0KLSIiIgotCi0gICAgYXBwZW5kMiA9ICIiIgotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgotCi1TUkNfVVJJX2FwcGVuZCArPSAiZmlsZTovL2FwcGVuZHRlc3QudHh0IgotIiIiCi0gICAgbGF5ZXJhcHBlbmQgPSAnJwotCi0gICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubGF5ZXJhcHBlbmQ6Ci0gICAgICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShzZWxmLmJ1aWxkZGlyICsgIi9jb25mL2JibGF5ZXJzLmNvbmYiLCBzZWxmLmxheWVyYXBwZW5kKQotCi0gICAgQHRlc3RjYXNlKDExOTYpCi0gICAgZGVmIHRlc3RfbGF5ZXJfYXBwZW5kcyhzZWxmKToKLSAgICAgICAgY29yZWJhc2UgPSBnZXRfYmJfdmFyKCJDT1JFQkFTRSIpCi0KLSAgICAgICAgZm9yIGwgaW4gWyIwIiwgIjEiLCAiMiJdOgotICAgICAgICAgICAgbGF5ZXIgPSBvcy5wYXRoLmpvaW4oY29yZWJhc2UsICJtZXRhLWxheWVydGVzdCIgKyBsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhsYXllcikpCi0gICAgICAgICAgICBvcy5ta2RpcihsYXllcikKLSAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyICsgIi9jb25mIikKLSAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvY29uZi9sYXllci5jb25mIiwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5sYXllcmNvbmYucmVwbGFjZSgiSU5UIiwgbCkpCi0gICAgICAgICAgICBvcy5ta2RpcihsYXllciArICIvcmVjaXBlcy10ZXN0IikKLSAgICAgICAgICAgIGlmIGwgPT0gIjAiOgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC5iYiIsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLnJlY2lwZSkKLSAgICAgICAgICAgIGVsaWYgbCA9PSAiMSI6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0LmJiYXBwZW5kIiwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXBwZW5kKQotICAgICAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0IikKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QvYXBwZW5kdGVzdC50eHQiLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIkxheWVyIDEgdGVzdCIpCi0gICAgICAgICAgICBlbGlmIGwgPT0gIjIiOgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC5iYmFwcGVuZCIsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLmFwcGVuZDIpCi0gICAgICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QiKQotICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC9hcHBlbmR0ZXN0LnR4dCIsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiTGF5ZXIgMiB0ZXN0IikKLSAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobGF5ZXIpCi0KLSAgICAgICAgc2VsZi5sYXllcmFwcGVuZCA9ICJCQkxBWUVSUyArPSBcInswfS9tZXRhLWxheWVydGVzdDAgezB9L21ldGEtbGF5ZXJ0ZXN0MSB7MH0vbWV0YS1sYXllcnRlc3QyXCIiLmZvcm1hdChjb3JlYmFzZSkKLSAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKHNlbGYuYnVpbGRkaXIgKyAiL2NvbmYvYmJsYXllcnMuY29uZiIsIHNlbGYubGF5ZXJhcHBlbmQpCi0gICAgICAgIHN0YWdpbmdkaXIgPSBnZXRfYmJfdmFyKCJTWVNST09UX0RFU1RESVIiLCAibGF5ZXJhcHBlbmR0ZXN0IikKLSAgICAgICAgYml0YmFrZSgibGF5ZXJhcHBlbmR0ZXN0IikKLSAgICAgICAgZGF0YSA9IGZ0b29scy5yZWFkX2ZpbGUoc3RhZ2luZ2RpciArICIvYXBwZW5kdGVzdC50eHQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJMYXllciAyIHRlc3QiKQotICAgICAgICBvcy5yZW1vdmUoY29yZWJhc2UgKyAiL21ldGEtbGF5ZXJ0ZXN0Mi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0L2FwcGVuZHRlc3QudHh0IikKLSAgICAgICAgYml0YmFrZSgibGF5ZXJhcHBlbmR0ZXN0IikKLSAgICAgICAgZGF0YSA9IGZ0b29scy5yZWFkX2ZpbGUoc3RhZ2luZ2RpciArICIvYXBwZW5kdGVzdC50eHQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJMYXllciAxIHRlc3QiKQotICAgICAgICB3aXRoIG9wZW4oY29yZWJhc2UgKyAiL21ldGEtbGF5ZXJ0ZXN0Mi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0L2FwcGVuZHRlc3QudHh0IiwgInciKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgiTGF5ZXIgMiB0ZXN0IikKLSAgICAgICAgYml0YmFrZSgibGF5ZXJhcHBlbmR0ZXN0IikKLSAgICAgICAgZGF0YSA9IGZ0b29scy5yZWFkX2ZpbGUoc3RhZ2luZ2RpciArICIvYXBwZW5kdGVzdC50eHQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJMYXllciAyIHRlc3QiKQotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xpYm9lLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGlib2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiMDMwMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGlib2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycywgYml0YmFrZSwgcnVuQ21kCi1pbXBvcnQgb2UucGF0aAotaW1wb3J0IGdsb2IKLWltcG9ydCBvcwotaW1wb3J0IG9zLnBhdGgKLQotY2xhc3MgTGliT0Uob2VTZWxmVGVzdCk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMudG1wX2RpciA9IGdldF9iYl92YXIoJ1RNUERJUicpCi0KLSAgICBkZWYgdGVzdF9jb3B5X3RyZWVfc3BlY2lhbChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgIG9lLnBhdGguY29weXRyZWUoKSBzaG91bGQgY29weSBmaWxlcyB3aXRoIHNwZWNpYWwgY2hhcmFjdGVyCi0gICAgICAgIEV4cGVjdGVkOiAgICd0ZXN0IGZpbGUgd2l0aCBzcMKjYyFhbCBAbmQgc3BhY2VzJyBzaG91bGQgZXhpc3QgaW4KLSAgICAgICAgICAgICAgICAgICAgY29weSBkZXN0aW5hdGlvbgotICAgICAgICBQcm9kdWN0OiAgICBPRS1Db3JlCi0gICAgICAgIEF1dGhvcjogICAgIEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3Rsb2MgPSBvZS5wYXRoLmpvaW4oc2VsZi50bXBfZGlyLCAnbGlib2V0ZXN0cycpCi0gICAgICAgIHNyYyA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnc3JjJykKLSAgICAgICAgZHN0ID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdkc3QnKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodGVzdGxvYykKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNyYykKLSAgICAgICAgdGVzdGZpbGVuYW1lID0gJ3Rlc3QgZmlsZSB3aXRoIHNwwqNjIWFsIEBuZCBzcGFjZXMnCi0KLSAgICAgICAgIyBjcmVhdGUgdGhlIHRlc3QgZmlsZSBhbmQgY29weSBpdAotICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSksICd3K2InKS5jbG9zZSgpCi0gICAgICAgIG9lLnBhdGguY29weXRyZWUoc3JjLCBkc3QpCi0KLSAgICAgICAgIyBlbnN1cmUgcGF0aCBleGlzdHMgaW4gZGVzdAotICAgICAgICBmaWxlaW5kc3QgPSBvcy5wYXRoLmlzZmlsZShvZS5wYXRoLmpvaW4oZHN0LCB0ZXN0ZmlsZW5hbWUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZWluZHN0LCAiRmlsZSB3aXRoIHNwYWNlcyBkb2Vzbid0IGV4aXN0IGluIGRzdCIpCi0KLSAgICAgICAgb2UucGF0aC5yZW1vdmUodGVzdGxvYykKLQotICAgIGRlZiB0ZXN0X2NvcHlfdHJlZV94YXR0cihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgIG9lLnBhdGguY29weXRyZWUoKSBzaG91bGQgcHJlc2VydmUgeGF0dHIgb24gY29waWVkIGZpbGVzCi0gICAgICAgIEV4cGVjdGVkOiAgIHRlc3R4YXR0ciBmaWxlIGluIGRlc3RpbmF0aW9uIHNob3VsZCBoYXZlIHVzZXIub2V0ZXN0Ci0gICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkIGF0dHJpYnV0ZQotICAgICAgICBQcm9kdWN0OiAgICBPRS1Db3JlCi0gICAgICAgIEF1dGhvcjogICAgIEpvc2h1YSBMb2NrIDxqb3NodWEuZy5sb2NrQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3Rsb2MgPSBvZS5wYXRoLmpvaW4oc2VsZi50bXBfZGlyLCAnbGlib2V0ZXN0cycpCi0gICAgICAgIHNyYyA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnc3JjJykKLSAgICAgICAgZHN0ID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdkc3QnKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodGVzdGxvYykKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNyYykKLSAgICAgICAgdGVzdGZpbGVuYW1lID0gJ3Rlc3R4YXR0cicKLQotICAgICAgICAjIGVuc3VyZSB3ZSBoYXZlIHNldGZhdHRyIGF2YWlsYWJsZQotICAgICAgICBiaXRiYWtlKCJhdHRyLW5hdGl2ZSIpCi0KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1lTUk9PVF9ERVNURElSJywgJ2JpbmRpciddLCAnYXR0ci1uYXRpdmUnKQotICAgICAgICBkZXN0ZGlyID0gYmJfdmFyc1snU1lTUk9PVF9ERVNURElSJ10KLSAgICAgICAgYmluZGlyID0gYmJfdmFyc1snYmluZGlyJ10KLSAgICAgICAgYmluZGlyID0gZGVzdGRpciArIGJpbmRpcgotCi0gICAgICAgICMgY3JlYXRlIGEgZmlsZSB3aXRoIHhhdHRyIGFuZCBjb3B5IGl0Ci0gICAgICAgIG9wZW4ob2UucGF0aC5qb2luKHNyYywgdGVzdGZpbGVuYW1lKSwgJ3crYicpLmNsb3NlKCkKLSAgICAgICAgcnVuQ21kKCclcy9zZXRmYXR0ciAtbiB1c2VyLm9ldGVzdCAtdiAidGVzdGluZyBsaWJvZSIgJXMnICUgKGJpbmRpciwgb2UucGF0aC5qb2luKHNyYywgdGVzdGZpbGVuYW1lKSkpCi0gICAgICAgIG9lLnBhdGguY29weXRyZWUoc3JjLCBkc3QpCi0KLSAgICAgICAgIyBlbnN1cmUgZmlsZSBpbiBkZXN0IGhhcyB1c2VyLm9ldGVzdCB4YXR0cgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJyVzL2dldGZhdHRyIC1uIHVzZXIub2V0ZXN0ICVzJyAlIChiaW5kaXIsIG9lLnBhdGguam9pbihkc3QsIHRlc3RmaWxlbmFtZSkpKQotICAgICAgICBzZWxmLmFzc2VydEluKCd1c2VyLm9ldGVzdD0idGVzdGluZyBsaWJvZSInLCByZXN1bHQub3V0cHV0LCAnRXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBzZXJ0IGluIGRzdCcpCi0KLSAgICAgICAgb2UucGF0aC5yZW1vdmUodGVzdGxvYykKLQotICAgIGRlZiB0ZXN0X2NvcHlfaGFyZGxpbmtfdHJlZV9jb3VudChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgIG9lLnBhdGguY29weWhhcmRsaW5rdHJlZSgpIHNob3VsZG4ndCBtaXNzIG91dCBmaWxlcwotICAgICAgICBFeHBlY3RlZDogICBzcmMgYW5kIGRzdCBzaG91bGQgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZmlsZXMKLSAgICAgICAgUHJvZHVjdDogICAgT0UtQ29yZQotICAgICAgICBBdXRob3I6ICAgICBKb3NodWEgTG9jayA8am9zaHVhLmcubG9ja0BpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICB0ZXN0bG9jID0gb2UucGF0aC5qb2luKHNlbGYudG1wX2RpciwgJ2xpYm9ldGVzdHMnKQotICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ3NyYycpCi0gICAgICAgIGRzdCA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnZHN0JykKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRlc3Rsb2MpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmMpCi0gICAgICAgIHRlc3RmaWxlcyA9IFsnZm9vJywgJ2JhcicsICcuYmF6JywgJ3F1dXgnXQotCi0gICAgICAgIGRlZiB0b3VjaGZpbGUodGYpOgotICAgICAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc3JjLCB0ZiksICd3K2InKS5jbG9zZSgpCi0KLSAgICAgICAgZm9yIGYgaW4gdGVzdGZpbGVzOgotICAgICAgICAgICAgdG91Y2hmaWxlKGYpCi0KLSAgICAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKHNyYywgZHN0KQotCi0gICAgICAgIGRzdGNudCA9IGxlbihvcy5saXN0ZGlyKGRzdCkpCi0gICAgICAgIHNyY2NudCA9IGxlbihvcy5saXN0ZGlyKHNyYykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRzdGNudCwgbGVuKHRlc3RmaWxlcyksICJOdW1iZXIgb2YgZmlsZXMgaW4gZHN0ICglcykgZGlmZmVycyBmcm9tIG51bWJlciBvZiBmaWxlcyBpbiBzcmMoJXMpLiIgJSAoZHN0Y250LCBzcmNjbnQpKQotCi0gICAgICAgIG9lLnBhdGgucmVtb3ZlKHRlc3Rsb2MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWMtY2hlY2tzdW0ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWMtY2hlY2tzdW0ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlODEzNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGljLWNoZWNrc3VtLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgdGVtcGZpbGUKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZQotZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBDb21tYW5kRXJyb3IKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBMaWNlbnNlVGVzdHMob2VTZWxmVGVzdCk6Ci0KLSAgICAjIFZlcmlmeSB0aGF0IGNoYW5naW5nIGEgbGljZW5zZSBmaWxlIHRoYXQgaGFzIGFuIGFic29sdXRlIHBhdGggY2F1c2VzCi0gICAgIyB0aGUgbGljZW5zZSBxYSB0byBmYWlsIGR1ZSB0byBhIG1pc21hdGNoZWQgbWQ1c3VtLgotICAgIEB0ZXN0Y2FzZSgxMTk3KQotICAgIGRlZiB0ZXN0X25vbm1hdGNoaW5nX2NoZWNrc3VtKHNlbGYpOgotICAgICAgICBiaXRiYWtlX2NtZCA9ICctYyBwb3B1bGF0ZV9saWMgZW1wdHl0ZXN0JwotICAgICAgICBlcnJvcl9tc2cgPSAnZW1wdHl0ZXN0OiBUaGUgbmV3IG1kNSBjaGVja3N1bSBpcyA4ZDc3N2YzODVkM2RmZWM4ODE1ZDIwZjc0OTYwMjZkYycKLQotICAgICAgICBsaWNfZmlsZSwgbGljX3BhdGggPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKLSAgICAgICAgb3MuY2xvc2UobGljX2ZpbGUpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobGljX3BhdGgpCi0KLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ2VtcHR5dGVzdCcsICIiIgotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyVzO21kNT1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIKLVNSQ19VUkkgPSAiZmlsZTovLyVzO21kNT1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIKLSIiIiAlIChsaWNfcGF0aCwgbGljX3BhdGgpKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKGJpdGJha2VfY21kKQotCi0gICAgICAgIHdpdGggb3BlbihsaWNfcGF0aCwgInciKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIiIpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoYml0YmFrZV9jbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgaWYgZXJyb3JfbXNnIG5vdCBpbiByZXN1bHQub3V0cHV0OgotICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IocmVzdWx0Lm91dHB1dCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L21hbmlmZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbWFuaWZlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNmY5NDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbWFuaWZlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIGJpdGJha2UKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBNYW5pZmVzdEVudHJ5OgotICAgICcnJ0EgbWFuaWZlc3QgaXRlbSBvZiBhIGNvbGxlY3Rpb24gYWJsZSB0byBsaXN0IG1pc3NpbmcgcGFja2FnZXMnJycKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZW50cnkpOgotICAgICAgICBzZWxmLmZpbGUgPSBlbnRyeQotICAgICAgICBzZWxmLm1pc3NpbmcgPSBbXQotCi1jbGFzcyBWZXJpZnlNYW5pZmVzdChvZVNlbGZUZXN0KToKLSAgICAnJydUZXN0cyBmb3IgdGhlIG1hbmlmZXN0IGZpbGVzIGFuZCBjb250ZW50cyBvZiBhbiBpbWFnZScnJwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGNoZWNrX21hbmlmZXN0X2VudHJpZXMoc2VsZiwgbWFuaWZlc3QsIHBhdGgpOgotICAgICAgICBtYW5pZmVzdF9lcnJvcnMgPSBbXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QsICJyIikgYXMgbWZpbGU6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbWZpbGU6Ci0gICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2VudHJ5ID0gb3MucGF0aC5qb2luKHBhdGgsIGxpbmUuc3BsaXQoKVswXSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiBsb29raW5nIGZvciB7fSJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtYW5pZmVzdF9lbnRyeSkpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYW5pZmVzdF9lbnRyeSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9lcnJvcnMuYXBwZW5kKG1hbmlmZXN0X2VudHJ5KQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiB7fSBub3QgZm91bmQiXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWFuaWZlc3RfZW50cnkpKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiBjaGVja2luZyBvZiB7fSBmYWlsZWQiXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtYW5pZmVzdCkpCi0gICAgICAgICAgICByYWlzZSBlCi0KLSAgICAgICAgcmV0dXJuIG1hbmlmZXN0X2Vycm9ycwotCi0gICAgI3RoaXMgd2lsbCBwb3NzaWJseSBtb3ZlIGZyb20gaGVyZQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBnZXRfZGlyX2Zyb21fYmJfdmFyKHNlbGYsIGJiX3ZhciwgdGFyZ2V0ID0gTm9uZSk6Ci0gICAgICAgIHRhcmdldCA9PSBzZWxmLmJ1aWxkdGFyZ2V0IGlmIHRhcmdldCA9PSBOb25lIGVsc2UgdGFyZ2V0Ci0gICAgICAgIGRpcmVjdG9yeSA9IGdldF9iYl92YXIoYmJfdmFyLCB0YXJnZXQpOwotICAgICAgICBpZiBub3QgZGlyZWN0b3J5IG9yIG5vdCBvcy5wYXRoLmlzZGlyKGRpcmVjdG9yeSk6Ci0gICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IHt9IHBvaW50cyB0byB7fSB3aGVuIHRhcmdldCA9IHt9IlwKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgYmJfdmFyLCBkaXJlY3RvcnksIHRhcmdldCkpCi0gICAgICAgICAgICByYWlzZSBPU0Vycm9yCi0gICAgICAgIHJldHVybiBkaXJlY3RvcnkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotCi0gICAgICAgIHNlbGYuYnVpbGR0YXJnZXQgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBzZWxmLmNsYXNzbmFtZSA9ICdWZXJpZnlNYW5pZmVzdCcKLQotICAgICAgICBzZWxmLmxvZy5pbmZvKCJ7fTogZG9pbmcgYml0YmFrZSB7fSBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgdGVzdCJcCi0gICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgc2VsZi5idWlsZHRhcmdldCkpCi0gICAgICAgIGlmIGJpdGJha2Uoc2VsZi5idWlsZHRhcmdldCkuc3RhdHVzOgotICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9IEZhaWxlZCB0byBzZXR1cCB7fSJcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIHNlbGYuYnVpbGR0YXJnZXQpKQotICAgICAgICAgICAgdW5pdHRlc3QuU2tpcFRlc3QoInt9OiBDYW5ub3Qgc2V0dXAgdGVzdGluZyBzY2VuYXJpbyJcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUpKQotCi0gICAgQHRlc3RjYXNlKDEzODApCi0gICAgZGVmIHRlc3RfU0RLX21hbmlmZXN0X2VudHJpZXMoc2VsZik6Ci0gICAgICAgICcnJ1ZlcmlmeWluZyB0aGUgU0RLIG1hbmlmZXN0IGVudHJpZXMgZXhpc3QsIHRoaXMgbWF5IHRha2UgYSBidWlsZCcnJwotCi0gICAgICAgICMgdGhlIHNldHVwIHNob3VsZCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbCBhbmQgaGVyZSBpdCBpcyByZXF1aXJlZAotICAgICAgICAjIHRvIGRvIGFuIGFkZGl0aW9uYWwgc2V0dXAgZm9yIHRoZSBzZGsKLSAgICAgICAgc2RrdGFzayA9ICctYyBwb3B1bGF0ZV9zZGsnCi0gICAgICAgIGJiYXJncyA9IHNka3Rhc2sgKyAnICcgKyBzZWxmLmJ1aWxkdGFyZ2V0Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fTogZG9pbmcgYml0YmFrZSB7fSBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgdGVzdCJcCi0gICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgYmJhcmdzKSkKLSAgICAgICAgaWYgYml0YmFrZShiYmFyZ3MpLnN0YXR1czoKLSAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fSBGYWlsZWQgdG8gYml0YmFrZSB7fSJcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIGJiYXJncykpCi0gICAgICAgICAgICB1bml0dGVzdC5Ta2lwVGVzdCgie306IENhbm5vdCBzZXR1cCB0ZXN0aW5nIHNjZW5hcmlvIlwKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSkpCi0KLQotICAgICAgICBwa2dkYXRhX2RpciA9IHJldmVyc2VfZGlyID0ge30KLSAgICAgICAgbWZpbGVuYW1lID0gbXBhdGggPSBtX2VudHJ5ID0ge30KLSAgICAgICAgIyBnZXQgbWFuaWZlc3QgbG9jYXRpb24gYmFzZWQgb24gdGFyZ2V0IHRvIHF1ZXJ5IGFib3V0Ci0gICAgICAgIGRfdGFyZ2V0PSBkaWN0KHRhcmdldCA9IHNlbGYuYnVpbGR0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCA9ICduYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0JykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWRpciA9IHNlbGYuZ2V0X2Rpcl9mcm9tX2JiX3ZhcignU0RLX0RFUExPWScsIHNlbGYuYnVpbGR0YXJnZXQpCi0gICAgICAgICAgICBmb3IgayBpbiBkX3RhcmdldC5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU0RLX05BTUUnLCAnU0RLX1ZFUlNJT04nXSwgc2VsZi5idWlsZHRhcmdldCkKLSAgICAgICAgICAgICAgICBtZmlsZW5hbWVba10gPSAie30tdG9vbGNoYWluLXt9Lnt9Lm1hbmlmZXN0Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBiYl92YXJzWydTREtfTkFNRSddLAotICAgICAgICAgICAgICAgICAgICAgICAgYmJfdmFyc1snU0RLX1ZFUlNJT04nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGspCi0gICAgICAgICAgICAgICAgbXBhdGhba10gPSBvcy5wYXRoLmpvaW4obWRpciwgbWZpbGVuYW1lW2tdKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtcGF0aFtrXSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fToge30gZG9lcyBub3QgZXhpc3QiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NuYW1lLCBtcGF0aFtrXSkpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKLSAgICAgICAgICAgICAgICBtX2VudHJ5W2tdID0gTWFuaWZlc3RFbnRyeShtcGF0aFtrXSkKLQotICAgICAgICAgICAgICAgIHBrZ2RhdGFfZGlyW2tdID0gc2VsZi5nZXRfZGlyX2Zyb21fYmJfdmFyKCdQS0dEQVRBX0RJUicsCi0gICAgICAgICAgICAgICAgICAgICAgICBkX3RhcmdldFtrXSkKLSAgICAgICAgICAgICAgICByZXZlcnNlX2RpcltrXSA9IG9zLnBhdGguam9pbihwa2dkYXRhX2RpcltrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdydW50aW1lLXJldmVyc2UnKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZXZlcnNlX2RpcltrXSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fToge30gZG9lcyBub3QgZXhpc3QiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NuYW1lLCByZXZlcnNlX2RpcltrXSkpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgie306IEVycm9yIGluIG9idGFpbmluZyBtYW5pZmVzdCBkaXJzIlwKLSAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lKSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICBtc2cgPSAie306IEVycm9yIGNhbm5vdCBmaW5kIG1hbmlmZXN0cyBpbiB0aGUgc3BlY2lmaWVkIGRpcjpcbnt9IlwKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWRpcikKLSAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCi0KLSAgICAgICAgZm9yIGsgaW4gZF90YXJnZXQua2V5cygpOgotICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiBDaGVjayBtYW5pZmVzdCB7fSIuZm9ybWF0KAotICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NuYW1lLCBtX2VudHJ5W2tdLmZpbGUpKQotCi0gICAgICAgICAgICBtX2VudHJ5W2tdLm1pc3NpbmcgPSBzZWxmLmNoZWNrX21hbmlmZXN0X2VudHJpZXMoXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VudHJ5W2tdLmZpbGUscmV2ZXJzZV9kaXJba10pCi0gICAgICAgICAgICBpZiBtX2VudHJ5W2tdLm1pc3Npbmc6Ci0gICAgICAgICAgICAgICAgbXNnID0gJ3t9OiB7fSBFcnJvciBoYXMgdGhlIGZvbGxvd2luZyBtaXNzaW5nIGVudHJpZXMnXAotICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbV9lbnRyeVtrXS5maWxlKQotICAgICAgICAgICAgICAgIGxvZ21zZyA9IG1zZysnOlxuJysnXG4nLmpvaW4obV9lbnRyeVtrXS5taXNzaW5nKQotICAgICAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKGxvZ21zZykKLSAgICAgICAgICAgICAgICBzZWxmLmxvZy5pbmZvKG1zZykKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwobG9nbXNnKQotCi0gICAgQHRlc3RjYXNlKDEzODEpCi0gICAgZGVmIHRlc3RfaW1hZ2VfbWFuaWZlc3RfZW50cmllcyhzZWxmKToKLSAgICAgICAgJycnVmVyaWZ5aW5nIHRoZSBpbWFnZSBtYW5pZmVzdCBlbnRyaWVzIGV4aXN0JycnCi0KLSAgICAgICAgIyBnZXQgbWFuaWZlc3QgbG9jYXRpb24gYmFzZWQgb24gdGFyZ2V0IHRvIHF1ZXJ5IGFib3V0Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1kaXIgPSBzZWxmLmdldF9kaXJfZnJvbV9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWlsZHRhcmdldCkKLSAgICAgICAgICAgIG1maWxlbmFtZSA9IGdldF9iYl92YXIoIklNQUdFX0xJTktfTkFNRSIsIHNlbGYuYnVpbGR0YXJnZXQpXAotICAgICAgICAgICAgICAgICAgICArICIubWFuaWZlc3QiCi0gICAgICAgICAgICBtcGF0aCA9IG9zLnBhdGguam9pbihtZGlyLCBtZmlsZW5hbWUpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobXBhdGgpOiByYWlzZSBJT0Vycm9yCi0gICAgICAgICAgICBtX2VudHJ5ID0gTWFuaWZlc3RFbnRyeShtcGF0aCkKLQotICAgICAgICAgICAgcGtnZGF0YV9kaXIgPSB7fQotICAgICAgICAgICAgcGtnZGF0YV9kaXIgPSBzZWxmLmdldF9kaXJfZnJvbV9iYl92YXIoJ1BLR0RBVEFfRElSJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVpbGR0YXJnZXQpCi0gICAgICAgICAgICByZXZkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGF0YV9kaXIsICdydW50aW1lLXJldmVyc2UnKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJldmRpcik6IHJhaXNlIElPRXJyb3IKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgie306IEVycm9yIGluIG9idGFpbmluZyBtYW5pZmVzdCBkaXJzIlwKLSAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lKSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICBtc2cgPSAie306IEVycm9yIGNhbm5vdCBmaW5kIG1hbmlmZXN0cyBpbiBkaXI6XG57fSJcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1kaXIpCi0gICAgICAgICAgICBzZWxmLmZhaWwobXNnKQotCi0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fTogQ2hlY2sgbWFuaWZlc3Qge30iXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1fZW50cnkuZmlsZSkpCi0gICAgICAgIG1fZW50cnkubWlzc2luZyA9IHNlbGYuY2hlY2tfbWFuaWZlc3RfZW50cmllcyhcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lbnRyeS5maWxlLCByZXZkaXIpCi0gICAgICAgIGlmIG1fZW50cnkubWlzc2luZzoKLSAgICAgICAgICAgIG1zZyA9ICd7fToge30gRXJyb3IgaGFzIHRoZSBmb2xsb3dpbmcgbWlzc2luZyBlbnRyaWVzJ1wKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbV9lbnRyeS5maWxlKQotICAgICAgICAgICAgbG9nbXNnID0gbXNnKyc6XG4nKydcbicuam9pbihtX2VudHJ5Lm1pc3NpbmcpCi0gICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zyhsb2dtc2cpCi0gICAgICAgICAgICBzZWxmLmxvZy5pbmZvKG1zZykKLSAgICAgICAgICAgIHNlbGYuZmFpbChsb2dtc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9idWlsZGhpc3RvcnkucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9idWlsZGhpc3RvcnkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZDRiMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvYnVpbGRoaXN0b3J5LnB5CisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQotZnJvbSBnaXQgaW1wb3J0IFJlcG8KLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcgotZnJvbSBvZS5idWlsZGhpc3RvcnlfYW5hbHlzaXMgaW1wb3J0IGJsb2JfdG9fZGljdCwgY29tcGFyZV9kaWN0X2Jsb2JzCi0KLWNsYXNzIFRlc3RCbG9iUGFyc2luZyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgIHNlbGYucmVwb19wYXRoID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3NlbGZ0ZXN0LWJ1aWxkaGlzdG9yeScsCi0gICAgICAgICAgICBkaXI9Z2V0X2JiX3ZhcignVE9QRElSJykpCi0KLSAgICAgICAgc2VsZi5yZXBvID0gUmVwby5pbml0KHNlbGYucmVwb19wYXRoKQotICAgICAgICBzZWxmLnRlc3RfZmlsZSA9ICJ0ZXN0IgotICAgICAgICBzZWxmLnZhcl9tYXAgPSB7fQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpbXBvcnQgc2h1dGlsCi0gICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5yZXBvX3BhdGgpCi0KLSAgICBkZWYgY29tbWl0X3ZhcnMoc2VsZiwgdG9fYWRkPXt9LCB0b19yZW1vdmUgPSBbXSwgbXNnPSJBIGNvbW1pdCBtZXNzYWdlIik6Ci0gICAgICAgIGlmIGxlbih0b19hZGQpID09IDAgYW5kIGxlbih0b19yZW1vdmUpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmb3IgayBpbiB0b19yZW1vdmU6Ci0gICAgICAgICAgICBzZWxmLnZhcl9tYXAucG9wKHgsTm9uZSkKLSAgICAgICAgZm9yIGsgaW4gdG9fYWRkOgotICAgICAgICAgICAgc2VsZi52YXJfbWFwW2tdID0gdG9fYWRkW2tdCi0KLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnJlcG9fcGF0aCwgc2VsZi50ZXN0X2ZpbGUpLCAndycpIGFzIHJlcG9fZmlsZToKLSAgICAgICAgICAgIGZvciBrIGluIHNlbGYudmFyX21hcDoKLSAgICAgICAgICAgICAgICByZXBvX2ZpbGUud3JpdGUoIiVzID0gJXNcbiIgJSAoaywgc2VsZi52YXJfbWFwW2tdKSkKLQotICAgICAgICBzZWxmLnJlcG8uZ2l0LmFkZCgiLS1hbGwiKQotICAgICAgICBzZWxmLnJlcG8uZ2l0LmNvbW1pdChtZXNzYWdlPW1zZykKLQotICAgIGRlZiB0ZXN0X2Jsb2JfdG9fZGljdChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgY29udmVydGlvbiBvZiBnaXQgYmxvYnMgdG8gZGljdGlvbmFyeQotICAgICAgICAiIiIKLSAgICAgICAgdmFsdWVzbWFwID0geyAiZm9vIiA6ICIxIiwgImJhciIgOiAiMiIgfQotICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHZhbHVlc21hcCkKLQotICAgICAgICBibG9iID0gc2VsZi5yZXBvLmhlYWQuY29tbWl0LnRyZWUuYmxvYnNbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXNtYXAsIGJsb2JfdG9fZGljdChibG9iKSwKLSAgICAgICAgICAgICJjb21taXQgd2FzIG5vdCB0cmFuc2xhdGVkIGNvcnJlY3RseSB0byBkaWN0aW9uYXJ5IikKLQotICAgIGRlZiB0ZXN0X2NvbXBhcmVfZGljdF9ibG9icyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgY29tcGFyaXNzb24gb2YgZGljdGlvbmFyaWVzIGV4dHJhY3RlZCBmcm9tIGdpdCBibG9icwotICAgICAgICAiIiIKLSAgICAgICAgY2hhbmdlc21hcCA9IHsgImZvby0yIiA6ICgiMiIsICI4IiksICJiYXIiIDogKCIiLCI0IiksICJiYXItMiIgOiAoIiIsIjUiKX0KLQotICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHsgImZvbyIgOiAiMSIsICJmb28tMiIgOiAiMiIsICJmb28tMyIgOiAiMyIgfSkKLSAgICAgICAgYmxvYjEgPSBzZWxmLnJlcG8uaGVhZHMubWFzdGVyLmNvbW1pdC50cmVlLmJsb2JzWzBdCi0KLSAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB7ICJmb28tMiIgOiAiOCIsICJiYXIiIDogIjQiLCAiYmFyLTIiIDogIjUiIH0pCi0gICAgICAgIGJsb2IyID0gc2VsZi5yZXBvLmhlYWRzLm1hc3Rlci5jb21taXQudHJlZS5ibG9ic1swXQotCi0gICAgICAgIGNoYW5nZV9yZWNvcmRzID0gY29tcGFyZV9kaWN0X2Jsb2JzKG9zLnBhdGguam9pbihzZWxmLnJlcG9fcGF0aCwgc2VsZi50ZXN0X2ZpbGUpLAotICAgICAgICAgICAgYmxvYjEsIGJsb2IyLCBGYWxzZSwgRmFsc2UpCi0KLSAgICAgICAgdmFyX2NoYW5nZXMgPSB7IHguZmllbGRuYW1lIDogKHgub2xkdmFsdWUsIHgubmV3dmFsdWUpIGZvciB4IGluIGNoYW5nZV9yZWNvcmRzfQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXNtYXAsIHZhcl9jaGFuZ2VzLCAiQ2hhbmdlcyBub3QgcmVwb3J0ZWQgY29ycmVjdGx5IikKLQotICAgIGRlZiB0ZXN0X2NvbXBhcmVfZGljdF9ibG9ic19kZWZhdWx0KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBkZWZhdWx0IHZhbHVlcyBmb3IgY29tcGFyaXNzb24gb2YgZ2l0IGJsb2IgZGljdGlvbmFyaWVzCi0gICAgICAgICIiIgotICAgICAgICBkZWZhdWx0bWFwID0geyB4IDogKCJkZWZhdWx0IiwgIjEiKSAgZm9yIHggaW4gWyJQS0ciLCAiUEtHRSIsICJQS0dWIiwgIlBLR1IiXX0KLQotICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHsgImZvbyIgOiAiMSIgfSkKLSAgICAgICAgYmxvYjEgPSBzZWxmLnJlcG8uaGVhZHMubWFzdGVyLmNvbW1pdC50cmVlLmJsb2JzWzBdCi0KLSAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB7ICJQS0ciIDogIjEiLCAiUEtHRSIgOiAiMSIsICJQS0dWIiA6ICIxIiwgIlBLR1IiIDogIjEiIH0pCi0gICAgICAgIGJsb2IyID0gc2VsZi5yZXBvLmhlYWRzLm1hc3Rlci5jb21taXQudHJlZS5ibG9ic1swXQotCi0gICAgICAgIGNoYW5nZV9yZWNvcmRzID0gY29tcGFyZV9kaWN0X2Jsb2JzKG9zLnBhdGguam9pbihzZWxmLnJlcG9fcGF0aCwgc2VsZi50ZXN0X2ZpbGUpLAotICAgICAgICAgICAgYmxvYjEsIGJsb2IyLCBGYWxzZSwgRmFsc2UpCi0KLSAgICAgICAgdmFyX2NoYW5nZXMgPSB7fQotICAgICAgICBmb3IgeCBpbiBjaGFuZ2VfcmVjb3JkczoKLSAgICAgICAgICAgIG9sZHZhbHVlID0gImRlZmF1bHQiIGlmICgiZGVmYXVsdCIgaW4geC5vbGR2YWx1ZSkgZWxzZSB4Lm9sZHZhbHVlCi0gICAgICAgICAgICB2YXJfY2hhbmdlc1t4LmZpZWxkbmFtZV0gPSAob2xkdmFsdWUsIHgubmV3dmFsdWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0bWFwLCB2YXJfY2hhbmdlcywgIkRlZmF1bHRzIG5vdCBzZXQgcHJvcGVybHkiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvZWxmLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvZWxmLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjU5MDM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2VsZi5weQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9lLnFhCi0KLWNsYXNzIFRlc3RFbGYodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X21hY2hpbmVfbmFtZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgZWxmX21hY2hpbmVfdG9fc3RyaW5nKCkKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDIpLCAiU1BBUkMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDAzKSwgIng4NiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDgpLCAiTUlQUyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MTQpLCAiUG93ZXJQQyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MjgpLCAiQVJNIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgyQSksICJTdXBlckgiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDMyKSwgIklBLTY0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgzRSksICJ4ODYtNjQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweEI3KSwgIkFBcmNoNjQiKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDApLCAiVW5rbm93biAoMCkiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweERFQURCRUVGKSwgIlVua25vd24gKDM3MzU5Mjg1NTkpIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoImZvb2JhciIpLCAiVW5rbm93biAoJ2Zvb2JhcicpIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2xpY2Vuc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9saWNlbnNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzg4ODg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2xpY2Vuc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvZS5saWNlbnNlCi0KLWNsYXNzIFNlZW5WaXNpdG9yKG9lLmxpY2Vuc2UuTGljZW5zZVZpc2l0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zZWVuID0gW10KLSAgICAgICAgb2UubGljZW5zZS5MaWNlbnNlVmlzaXRvci5fX2luaXRfXyhzZWxmKQotCi0gICAgZGVmIHZpc2l0X1N0cihzZWxmLCBub2RlKToKLSAgICAgICAgc2VsZi5zZWVuLmFwcGVuZChub2RlLnMpCi0KLWNsYXNzIFRlc3RTaW5nbGVMaWNlbnNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBsaWNlbnNlcyA9IFsKLSAgICAgICAgIkdQTHYyIiwKLSAgICAgICAgIkxHUEwtMi4wIiwKLSAgICAgICAgIkFydGlzdGljIiwKLSAgICAgICAgIk1JVCIsCi0gICAgICAgICJHUEx2MysiLAotICAgICAgICAiRk9PX0JBUiIsCi0gICAgXQotICAgIGludmFsaWRfbGljZW5zZXMgPSBbIkdQTC9CU0QiXQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBwYXJzZShsaWNlbnNlc3RyKToKLSAgICAgICAgdmlzaXRvciA9IFNlZW5WaXNpdG9yKCkKLSAgICAgICAgdmlzaXRvci52aXNpdF9zdHJpbmcobGljZW5zZXN0cikKLSAgICAgICAgcmV0dXJuIHZpc2l0b3Iuc2VlbgotCi0gICAgZGVmIHRlc3Rfc2luZ2xlX2xpY2Vuc2VzKHNlbGYpOgotICAgICAgICBmb3IgbGljZW5zZSBpbiBzZWxmLmxpY2Vuc2VzOgotICAgICAgICAgICAgbGljZW5zZXMgPSBzZWxmLnBhcnNlKGxpY2Vuc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaWNlbnNlcywgW2xpY2Vuc2VdKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF9saWNlbnNlcyhzZWxmKToKLSAgICAgICAgZm9yIGxpY2Vuc2UgaW4gc2VsZi5pbnZhbGlkX2xpY2Vuc2VzOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvZS5saWNlbnNlLkludmFsaWRMaWNlbnNlKSBhcyBjbToKLSAgICAgICAgICAgICAgICBzZWxmLnBhcnNlKGxpY2Vuc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5saWNlbnNlLCBsaWNlbnNlKQotCi1jbGFzcyBUZXN0U2ltcGxlQ29tYmluYXRpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICB0ZXN0cyA9IHsKLSAgICAgICAgIkZPTyZCQVIiOiBbIkZPTyIsICJCQVIiXSwKLSAgICAgICAgIkJBWiAmIE1PTyI6IFsiQkFaIiwgIk1PTyJdLAotICAgICAgICAiQUxQSEF8QkVUQSI6IFsiQUxQSEEiXSwKLSAgICAgICAgIkJBWiZNT098Rk9PIjogWyJGT08iXSwKLSAgICAgICAgIkZPTyZCQVJ8QkFaIjogWyJGT08iLCAiQkFSIl0sCi0gICAgfQotICAgIHByZWZlcnJlZCA9IFsiQUxQSEEiLCAiRk9PIiwgIkJBUiJdCi0KLSAgICBkZWYgdGVzdF90ZXN0cyhzZWxmKToKLSAgICAgICAgZGVmIGNob29zZShhLCBiKToKLSAgICAgICAgICAgIGlmIGFsbChsaWMgaW4gc2VsZi5wcmVmZXJyZWQgZm9yIGxpYyBpbiBiKToKLSAgICAgICAgICAgICAgICByZXR1cm4gYgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gYQotCi0gICAgICAgIGZvciBsaWNlbnNlLCBleHBlY3RlZCBpbiBzZWxmLnRlc3RzLml0ZW1zKCk6Ci0gICAgICAgICAgICBsaWNlbnNlcyA9IG9lLmxpY2Vuc2UuZmxhdHRlbmVkX2xpY2Vuc2VzKGxpY2Vuc2UsIGNob29zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpY2Vuc2VzLCBleHBlY3RlZCkKLQotY2xhc3MgVGVzdENvbXBsZXhDb21iaW5hdGlvbnMoVGVzdFNpbXBsZUNvbWJpbmF0aW9ucyk6Ci0gICAgdGVzdHMgPSB7Ci0gICAgICAgICJGT08gJiAoQkFSIHwgQkFaKSZNT08iOiBbIkZPTyIsICJCQVIiLCAiTU9PIl0sCi0gICAgICAgICIoQUxQSEF8KEJFVEEmVEhFVEEpfE9NRUdBKSZERUxUQSI6IFsiT01FR0EiLCAiREVMVEEiXSwKLSAgICAgICAgIigoQUxQSEF8QkVUQSkmRk9PKXxCQVoiOiBbIkJFVEEiLCAiRk9PIl0sCi0gICAgICAgICIoR1BMLTIuMHxQcm9wcmlldGFyeSkmQlNELTQtY2xhdXNlJk1JVCI6IFsiR1BMLTIuMCIsICJCU0QtNC1jbGF1c2UiLCAiTUlUIl0sCi0gICAgfQotICAgIHByZWZlcnJlZCA9IFsiQkFSIiwgIk9NRUdBIiwgIkJFVEEiLCAiR1BMLTIuMCJdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9wYXRoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvcGF0aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRkMDY4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9wYXRoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb2UsIG9lLnBhdGgKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IG9zCi1pbXBvcnQgZXJybm8KLWltcG9ydCBzaHV0aWwKLQotY2xhc3MgVGVzdFJlYWxQYXRoKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBESVJTID0gWyAiYSIsICJiIiwgImV0YyIsICJzYmluIiwgInVzciIsICJ1c3IvYmluIiwgInVzci9iaW5YIiwgInVzci9zYmluIiwgInVzci9pbmNsdWRlIiwgInVzci9pbmNsdWRlL2dkYm0iIF0KLSAgICBGSUxFUyA9IFsgImV0Yy9wYXNzd2QiLCAiYi9maWxlIiBdCi0gICAgTElOS1MgPSBbCi0gICAgICAgICggImJpbiIsICAgICAgICAgICAgICIvdXNyL2JpbiIsICAgICAgICAgICAgICIvdXNyL2JpbiIgKSwKLSAgICAgICAgKCAiYmluWCIsICAgICAgICAgICAgInVzci9iaW5YIiwgICAgICAgICAgICAgIi91c3IvYmluWCIgKSwKLSAgICAgICAgKCAiYyIsICAgICAgICAgICAgICAgImJyb2tlbiIsICAgICAgICAgICAgICAgIi9icm9rZW4iICksCi0gICAgICAgICggImV0Yy9wYXNzd2QtMSIsICAgICJwYXNzd2QiLCAgICAgICAgICAgICAgICIvZXRjL3Bhc3N3ZCIgKSwKLSAgICAgICAgKCAiZXRjL3Bhc3N3ZC0yIiwgICAgInBhc3N3ZC0xIiwgICAgICAgICAgICAgIi9ldGMvcGFzc3dkIiApLAotICAgICAgICAoICJldGMvcGFzc3dkLTMiLCAgICAiL2V0Yy9wYXNzd2QtMSIsICAgICAgICAiL2V0Yy9wYXNzd2QiICksCi0gICAgICAgICggImV0Yy9zaGFkb3ctMSIsICAgICIvZXRjL3NoYWRvdyIsICAgICAgICAgICIvZXRjL3NoYWRvdyIgKSwKLSAgICAgICAgKCAiZXRjL3NoYWRvdy0yIiwgICAgIi9ldGMvc2hhZG93LTEiLCAgICAgICAgIi9ldGMvc2hhZG93IiApLAotICAgICAgICAoICJwcm9nLUEiLCAgICAgICAgICAiYmluL3Byb2ctQSIsICAgICAgICAgICAiL3Vzci9iaW4vcHJvZy1BIiApLAotICAgICAgICAoICJwcm9nLUIiLCAgICAgICAgICAiL2Jpbi9wcm9nLUIiLCAgICAgICAgICAiL3Vzci9iaW4vcHJvZy1CIiApLAotICAgICAgICAoICJ1c3IvYmluL3Byb2ctQyIsICAiLi4vLi4vc2Jpbi9wcm9nLUMiLCAgICAiL3NiaW4vcHJvZy1DIiApLAotICAgICAgICAoICJ1c3IvYmluL3Byb2ctRCIsICAiL3NiaW4vcHJvZy1EIiwgICAgICAgICAiL3NiaW4vcHJvZy1EIiApLAotICAgICAgICAoICJ1c3IvYmluWC9wcm9nLUUiLCAiLi4vc2Jpbi9wcm9nLUUiLCAgICAgICBOb25lICksCi0gICAgICAgICggInVzci9iaW4vcHJvZy1GIiwgICIuLi8uLi8uLi9zYmluL3Byb2ctRiIsICIvc2Jpbi9wcm9nLUYiICksCi0gICAgICAgICggImxvb3AiLCAgICAgICAgICAgICJhL2xvb3AiLCAgICAgICAgICAgICAgIE5vbmUgKSwKLSAgICAgICAgKCAiYS9sb29wIiwgICAgICAgICAgIi4uL2xvb3AiLCAgICAgICAgICAgICAgTm9uZSApLAotICAgICAgICAoICJiL3Rlc3QiLCAgICAgICAgICAiZmlsZS9mb28iLCAgICAgICAgICAgICAiL2IvZmlsZS9mb28iICksCi0gICAgXQotCi0gICAgTElOS1NfUEhZUyA9IFsKLSAgICAgICAgKCAiLi8iLCAgICAgICAgICAiLyIsICAgICAgICAgICAgICAgICIiICksCi0gICAgICAgICggImJpblgvcHJvZy1FIiwgIi91c3Ivc2Jpbi9wcm9nLUUiLCAiL3NiaW4vcHJvZy1FIiApLAotICAgIF0KLQotICAgIEVYQ0VQVElPTlMgPSBbCi0gICAgICAgICggImxvb3AiLCAgIGVycm5vLkVMT09QICksCi0gICAgICAgICggImIvdGVzdCIsIGVycm5vLkVOT0VOVCApLAotICAgIF0KLQotICAgIGRlZiBfX2RlbF9fKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjb3Muc3lzdGVtKCJ0cmVlIC1GICVzIiAlIHNlbGYudG1wZGlyKQotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRtcGRpcikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4ID0gIm9lLXRlc3RfcGF0aCIpCi0gICAgICAgIHNlbGYucm9vdCA9IG9zLnBhdGguam9pbihzZWxmLnRtcGRpciwgIlIiKQotCi0gICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnRtcGRpciwgIl9yZWFsIikpCi0gICAgICAgIG9zLnN5bWxpbmsoIl9yZWFsIiwgc2VsZi5yb290KQotCi0gICAgICAgIGZvciBkIGluIHNlbGYuRElSUzoKLSAgICAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnJvb3QsIGQpKQotICAgICAgICBmb3IgZiBpbiBzZWxmLkZJTEVTOgotICAgICAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBmKSwgInciKQotICAgICAgICBmb3IgbCBpbiBzZWxmLkxJTktTOgotICAgICAgICAgICAgb3Muc3ltbGluayhsWzFdLCBvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBsWzBdKSkKLQotICAgIGRlZiBfX3JlYWxwYXRoKHNlbGYsIGZpbGUsIHVzZV9waHlzZGlyLCBhc3N1bWVfZGlyID0gVHJ1ZSk6Ci0gICAgICAgIHJldHVybiBvZS5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihzZWxmLnJvb3QsIGZpbGUpLCBzZWxmLnJvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9waHlzZGlyLCBhc3N1bWVfZGlyID0gYXNzdW1lX2RpcikKLQotICAgIGRlZiB0ZXN0X25vcm0oc2VsZik6Ci0gICAgICAgIGZvciBsIGluIHNlbGYuTElOS1M6Ci0gICAgICAgICAgICBpZiBsWzJdID09IE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgdGFyZ2V0X3AgPSBzZWxmLl9fcmVhbHBhdGgobFswXSwgVHJ1ZSkKLSAgICAgICAgICAgIHRhcmdldF9sID0gc2VsZi5fX3JlYWxwYXRoKGxbMF0sIEZhbHNlKQotCi0gICAgICAgICAgICBpZiBsWzJdICE9IEZhbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFyZ2V0X3AsIHRhcmdldF9sKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFsyXSwgdGFyZ2V0X3BbbGVuKHNlbGYucm9vdCk6XSkKLQotICAgIGRlZiB0ZXN0X3BoeXMoc2VsZik6Ci0gICAgICAgIGZvciBsIGluIHNlbGYuTElOS1NfUEhZUzoKLSAgICAgICAgICAgIHRhcmdldF9wID0gc2VsZi5fX3JlYWxwYXRoKGxbMF0sIFRydWUpCi0gICAgICAgICAgICB0YXJnZXRfbCA9IHNlbGYuX19yZWFscGF0aChsWzBdLCBGYWxzZSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzFdLCB0YXJnZXRfcFtsZW4oc2VsZi5yb290KTpdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzJdLCB0YXJnZXRfbFtsZW4oc2VsZi5yb290KTpdKQotCi0gICAgZGVmIHRlc3RfbG9vcChzZWxmKToKLSAgICAgICAgZm9yIGUgaW4gc2VsZi5FWENFUFRJT05TOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChPU0Vycm9yLCByJ1xbRXJybm8gJXVcXScgJSBlWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3JlYWxwYXRoLCBlWzBdLCBGYWxzZSwgRmFsc2UpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi90eXBlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3R5cGVzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmUyNzQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3R5cGVzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIG9lLm1ha2V0eXBlIGltcG9ydCBjcmVhdGUKLQotY2xhc3MgVGVzdEJvb2xlYW5UeXBlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjcmVhdGUsICcnLCAnYm9vbGVhbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNyZWF0ZSwgJ2ZvbycsICdib29sZWFuJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjcmVhdGUsIG9iamVjdCgpLCAnYm9vbGVhbicpCi0KLSAgICBkZWYgdGVzdF90cnVlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd5JywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgneWVzJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgnMScsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3QnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd0cnVlJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgnVFJVRScsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3RydUUnLCAnYm9vbGVhbicpKQotCi0gICAgZGVmIHRlc3RfZmFsc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCduJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ25vJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJzAnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnZicsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdmYWxzZScsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdGQUxTRScsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdmYUxzZScsICdib29sZWFuJykpCi0KLSAgICBkZWYgdGVzdF9ib29sX2VxdWFsaXR5KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZSgnbicsICdib29sZWFuJyksIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNyZWF0ZSgnbicsICdib29sZWFuJyksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlKCd5JywgJ2Jvb2xlYW4nKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjcmVhdGUoJ3knLCAnYm9vbGVhbicpLCBGYWxzZSkKLQotY2xhc3MgVGVzdExpc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRMaXN0RXF1YWwoc2VsZiwgdmFsdWUsIHZhbGlkLCBzZXA9Tm9uZSk6Ci0gICAgICAgIG9iaiA9IGNyZWF0ZSh2YWx1ZSwgJ2xpc3QnLCBzZXBhcmF0b3I9c2VwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iaiwgdmFsaWQpCi0gICAgICAgIGlmIHNlcCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLnNlcGFyYXRvciwgc2VwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihvYmopLCBvYmouc2VwYXJhdG9yLmpvaW4ob2JqKSkKLQotICAgIGRlZiB0ZXN0X2xpc3Rfbm9zZXAoc2VsZik6Ci0gICAgICAgIHRlc3RsaXN0ID0gWydhbHBoYScsICdiZXRhJywgJ3RoZXRhJ10KLSAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2FscGhhIGJldGEgdGhldGEnLCB0ZXN0bGlzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2FscGhhICBiZXRhXHR0aGV0YScsIHRlc3RsaXN0KQotICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnYWxwaGEnLCBbJ2FscGhhJ10pCi0KLSAgICBkZWYgdGVzdF9saXN0X3VzZXJzZXAoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdmb286YmFyJywgWydmb28nLCAnYmFyJ10sICc6JykKLSAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2ZvbzpiYXI6YmF6JywgWydmb28nLCAnYmFyJywgJ2JheiddLCAnOicpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi91dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3V0aWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGViMTBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3V0aWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIG9lLnV0aWxzIGltcG9ydCBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbSwgdHJpbV92ZXJzaW9uCi0KLWNsYXNzIFRlc3RQYWNrYWdlc0ZpbHRlck91dFN5c3RlbSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCB0aGF0IG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtIHdvcmtzLgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IGJiCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkNhbm5vdCBpbXBvcnQgYmIiKQotCi0gICAgICAgIGQgPSBiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCgpCi0gICAgICAgIGQuc2V0VmFyKCJQTiIsICJmb28iKQotCi0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFUyIsICJmb28gZm9vLWRvYyBmb28tZGV2IikKLSAgICAgICAgcGtncyA9IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtncywgW10pCi0KLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTIiwgImZvbyBmb28tZG9jIGZvby1kYXRhIGZvby1kZXYiKQotICAgICAgICBwa2dzID0gcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dzLCBbImZvby1kYXRhIl0pCi0KLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTIiwgImZvbyBmb28tbG9jYWxlLWVuLWdiIikKLSAgICAgICAgcGtncyA9IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtncywgW10pCi0KLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTIiwgImZvbyBmb28tZGF0YSBmb28tbG9jYWxlLWVuLWdiIikKLSAgICAgICAgcGtncyA9IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtncywgWyJmb28tZGF0YSJdKQotCi0KLWNsYXNzIFRlc3RUcmltVmVyc2lvbih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfdmVyc2lvbl9leGNlcHRpb24oc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIHRyaW1fdmVyc2lvbihOb25lLCAyKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICB0cmltX3ZlcnNpb24oKDEsIDIsIDMpLCAyKQotCi0gICAgZGVmIHRlc3RfbnVtX2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIHRyaW1fdmVyc2lvbigiMS4yLjMiLCAwKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgdHJpbV92ZXJzaW9uKCIxLjIuMyIsIC0xKQotCi0gICAgZGVmIHRlc3RfdmFsaWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDEpLCAiMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDIpLCAiMS4yIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgMyksICIxLjIuMyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDQpLCAiMS4yLjMiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VzY3JpcHRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VzY3JpcHRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTU0N2Y1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lc2NyaXB0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJ1aWxkaGlzdG9yeSBpbXBvcnQgQnVpbGRoaXN0b3J5QmFzZQotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBDb21tYW5kLCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgQnVpbGRoaXN0b3J5RGlmZlRlc3RzKEJ1aWxkaGlzdG9yeUJhc2UpOgotCi0gICAgQHRlc3RjYXNlKDI5NSkKLSAgICBkZWYgdGVzdF9idWlsZGhpc3RvcnlfZGlmZihzZWxmKToKLSAgICAgICAgdGFyZ2V0ID0gJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnCi0gICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjFcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1UcnVlKQotICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIwXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249RmFsc2UsIGV4cGVjdF9lcnJvcj1UcnVlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoImJ1aWxkaGlzdG9yeS1kaWZmIC1wICVzIiAlIGdldF9iYl92YXIoJ0JVSUxESElTVE9SWV9ESVInKSkKLSAgICAgICAgZXhwZWN0ZWRfb3V0cHV0ID0gJ1BSIGNoYW5nZWQgZnJvbSAicjEiIHRvICJyMCInCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZF9vdXRwdXQgaW4gcmVzdWx0Lm91dHB1dCwgbXNnPSJEaWQgbm90IGZpbmQgZXhwZWN0ZWQgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcGtnZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3BrZ2RhdGEucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2OWMzYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcGtnZGF0YS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IGZubWF0Y2gKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIE9lUGtnZGF0YVV0aWxUZXN0cyhvZVNlbGZUZXN0KToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICMgRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGRhdGEgaW4gcGtnZGF0YQotICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigic2VsZnRlc3QiKQotICAgICAgICBsb2dnZXIuaW5mbygnUnVubmluZyBiaXRiYWtlIHRvIGdlbmVyYXRlIHBrZ2RhdGEnKQotICAgICAgICBiaXRiYWtlKCdidXN5Ym94IHpsaWIgbTQnKQotCi0gICAgQHRlc3RjYXNlKDEyMDMpCi0gICAgZGVmIHRlc3RfbG9va3VwX3BrZyhzZWxmKToKLSAgICAgICAgIyBGb3J3YXJkIHRlc3RzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgInpsaWIgYnVzeWJveCInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdsaWJ6MVxuYnVzeWJveCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgemxpYi1kZXYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdsaWJ6LWRldicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgbm9uZXhpc3RlbnRwa2cnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgIlN0YXR1cyBkaWZmZXJlbnQgdGhhbiAxLiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ0VSUk9SOiBUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogbm9uZXhpc3RlbnRwa2cnKQotICAgICAgICAjIFJldmVyc2UgdGVzdHMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyAtciAibGliejEgYnVzeWJveCInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliXG5idXN5Ym94JykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyAtciBsaWJ6LWRldicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWItZGV2JykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyAtciBub25leGlzdGVudHBrZycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCAiU3RhdHVzIGRpZmZlcmVudCB0aGFuIDEuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnRVJST1I6IFRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiBub25leGlzdGVudHBrZycpCi0KLSAgICBAdGVzdGNhc2UoMTIwNSkKLSAgICBkZWYgdGVzdF9yZWFkX3ZhbHVlKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCByZWFkLXZhbHVlIFBOIGxpYnoxJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIHJlYWQtdmFsdWUgUEtHIGxpYnoxJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbGliejEnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCByZWFkLXZhbHVlIFBLR1NJWkUgbTQnKQotICAgICAgICBwa2dzaXplID0gaW50KHJlc3VsdC5vdXRwdXQuc3RyaXAoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHBrZ3NpemUsIDEsICJTaXplIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMS4gJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTk4KQotICAgIGRlZiB0ZXN0X2ZpbmRfcGF0aChzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC9saWIvbGliei5zby4xJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYjogL2xpYi9saWJ6LnNvLjEnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGggL3Vzci9iaW4vbTQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdtNDogL3Vzci9iaW4vbTQnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGggL25vdC9leGlzdCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCAiU3RhdHVzIGRpZmZlcmVudCB0aGFuIDEuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnRVJST1I6IFVuYWJsZSB0byBmaW5kIGFueSBwYWNrYWdlIHByb2R1Y2luZyBwYXRoIC9ub3QvZXhpc3QnKQotCi0gICAgQHRlc3RjYXNlKDEyMDQpCi0gICAgZGVmIHRlc3RfbG9va3VwX3JlY2lwZShzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXJlY2lwZSAibGliei1zdGF0aWNkZXYgYnVzeWJveCInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliXG5idXN5Ym94JykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXJlY2lwZSBsaWJ6LWRiZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWInKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlIG5vbmV4aXN0ZW50cGtnJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsICJTdGF0dXMgZGlmZmVyZW50IHRoYW4gMS4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdFUlJPUjogVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBjb3VsZCBub3QgYmUgZm91bmQ6IG5vbmV4aXN0ZW50cGtnJykKLQotICAgIEB0ZXN0Y2FzZSgxMjAyKQotICAgIGRlZiB0ZXN0X2xpc3RfcGtncyhzZWxmKToKLSAgICAgICAgIyBObyBhcmd1bWVudHMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzJykKLSAgICAgICAgcGtnbGlzdCA9IHJlc3VsdC5vdXRwdXQuc3BsaXQoKQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliJywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIE5vIHBrZ3NwZWMsIHJ1bnRpbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1yJykKLSAgICAgICAgcGtnbGlzdCA9IHJlc3VsdC5vdXRwdXQuc3BsaXQoKQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliJykKLSAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBrZ2xpc3QucmVtb3ZlKCd6bGliLXB0ZXN0JykgIyBpbiBjYXNlIHB0ZXN0IGlzIGRpc2FibGVkCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ2xpc3QsIFsnemxpYicsICd6bGliLWRiZycsICd6bGliLWRldicsICd6bGliLWRvYycsICd6bGliLXN0YXRpY2RldiddLCAiUGFja2FnZXMgbGlzdGVkIGFmdGVyIHJlbW92ZTogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQsIHJ1bnRpbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgLXInKQotICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGtnbGlzdC5yZW1vdmUoJ2xpYnotcHRlc3QnKSAjIGluIGNhc2UgcHRlc3QgaXMgZGlzYWJsZWQKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtnbGlzdCwgWydsaWJ6LWRiZycsICdsaWJ6LWRldicsICdsaWJ6LWRvYycsICdsaWJ6LXN0YXRpY2RldicsICdsaWJ6MSddLCAiUGFja2FnZXMgbGlzdGVkIGFmdGVyIHJlbW92ZTogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQgYW5kIHVucGFja2FnZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgLXUnKQotICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1sb2NhbGUnLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCBhbmQgdW5wYWNrYWdlZCwgcnVudGltZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAtdSAtcicpCi0gICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWxvY2FsZScsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkIGFuZCBwa2dzcGVjCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliICIqLWQqIicpCi0gICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ2xpc3QsIFsnemxpYi1kYmcnLCAnemxpYi1kZXYnLCAnemxpYi1kb2MnXSwgIlBhY2thZ2VzIGxpc3RlZDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQgYW5kIHBrZ3NwZWMsIHJ1bnRpbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgLXIgIiotZCoiJykKLSAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtnbGlzdCwgWydsaWJ6LWRiZycsICdsaWJ6LWRldicsICdsaWJ6LWRvYyddLCAiUGFja2FnZXMgbGlzdGVkOiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEyMDEpCi0gICAgZGVmIHRlc3RfbGlzdF9wa2dfZmlsZXMoc2VsZik6Ci0gICAgICAgIGRlZiBzcGxpdG91dHB1dChvdXRwdXQpOgotICAgICAgICAgICAgZmlsZXMgPSB7fQotICAgICAgICAgICAgY3VycGtnID0gTm9uZQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1x0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdXJwa2csICdVbmV4cGVjdGVkIG5vbi1wYWNrYWdlIGxpbmU6XG4lcycgJSBsaW5lKQotICAgICAgICAgICAgICAgICAgICBmaWxlc1tjdXJwa2ddLmFwcGVuZChsaW5lLnN0cmlwKCkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUucnN0cmlwKCkuZW5kc3dpdGgoJzonKSwgJ0ludmFsaWQgcGFja2FnZSBsaW5lIGluIG91dHB1dDpcbiVzJyAlIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGN1cnBrZyA9IGxpbmUuc3BsaXQoJzonKVswXQotICAgICAgICAgICAgICAgICAgICBmaWxlc1tjdXJwa2ddID0gW10KLSAgICAgICAgICAgIHJldHVybiBmaWxlcwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydiYXNlX2xpYmRpcicsICdsaWJkaXInLCAnaW5jbHVkZWRpcicsICdtYW5kaXInXSkKLSAgICAgICAgYmFzZV9saWJkaXIgPSBiYl92YXJzWydiYXNlX2xpYmRpciddCi0gICAgICAgIGxpYmRpciA9IGJiX3ZhcnNbJ2xpYmRpciddCi0gICAgICAgIGluY2x1ZGVkaXIgPSBiYl92YXJzWydpbmNsdWRlZGlyJ10KLSAgICAgICAgbWFuZGlyID0gYmJfdmFyc1snbWFuZGlyJ10KLSAgICAgICAgIyBUZXN0IHJlY2lwZS1zcGFjZSBwYWNrYWdlIG5hbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgemxpYi1kZXYgemxpYi1kb2MnKQotICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ3psaWItZGV2J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWyd6bGliLWRvYyddKQotICAgICAgICAjIFRlc3QgcnVudGltZSBwYWNrYWdlIG5hbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXIgbGliejEgbGliei1kZXYnKQotICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnoxJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZXNbJ2xpYnoxJ10pLCAxKQotICAgICAgICBsaWJzcGVjID0gb3MucGF0aC5qb2luKGJhc2VfbGliZGlyLCAnbGliei5zby4xLionKQotICAgICAgICBmb3VuZCA9IEZhbHNlCi0gICAgICAgIGZvciBmaWxlaXRlbSBpbiBmaWxlc1snbGliejEnXToKLSAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaGNhc2UoZmlsZWl0ZW0sIGxpYnNwZWMpOgotICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgJ0NvdWxkIG5vdCBmaW5kIHpsaWIgbGlicmFyeSBmaWxlICVzIGluIGxpYnoxIHBhY2thZ2UgZmlsZSBsaXN0OiAlcycgJSAobGlic3BlYywgZmlsZXNbJ2xpYnoxJ10pKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWydsaWJ6LWRldiddKQotICAgICAgICAjIFRlc3QgcmVjaXBlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWInKQotICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWInLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignemxpYi1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyAoaWdub3JlIHB0ZXN0LCBtaWdodCBub3QgYmUgdGhlcmUgZGVwZW5kaW5nIG9uIGNvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snemxpYi1kZXYnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ3psaWItZG9jJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snemxpYi1zdGF0aWNkZXYnXSkKLSAgICAgICAgIyBUZXN0IHJlY2lwZSwgcnVudGltZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliIC1yJykKLSAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRiZycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LXN0YXRpY2RldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsaWJ6LWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWydsaWJ6LWRldiddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snbGliei1kb2MnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obGliZGlyLCAnbGliei5hJyksIGZpbGVzWydsaWJ6LXN0YXRpY2RldiddKQotICAgICAgICAjIFRlc3QgcmVjaXBlLCB1bnBhY2thZ2VkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWIgLXUnKQotICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWInLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkgIyB0aGlzIGlzIHRoZSBrZXkgb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ3psaWItZGV2J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWyd6bGliLWRvYyddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ3psaWItc3RhdGljZGV2J10pCi0gICAgICAgICMgVGVzdCByZWNpcGUsIHJ1bnRpbWUsIHVucGFja2FnZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYiAtciAtdScpCi0gICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliejEnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkgIyB0aGlzIGlzIHRoZSBrZXkgb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ2xpYnotZGV2J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWydsaWJ6LWRvYyddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ2xpYnotc3RhdGljZGV2J10pCi0KLSAgICBAdGVzdGNhc2UoMTIwMCkKLSAgICBkZWYgdGVzdF9nbG9iKHNlbGYpOgotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3BrZ2RhdGFxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgcGtnbGlzdGZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3BrZ2xpc3QnKQotICAgICAgICB3aXRoIG9wZW4ocGtnbGlzdGZpbGUsICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoJ2xpYnoxXG4nKQotICAgICAgICAgICAgZi53cml0ZSgnYnVzeWJveFxuJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZ2xvYiAlcyAiKi1kZXYiJyAlIHBrZ2xpc3RmaWxlKQotICAgICAgICBkZXNpcmVkcmVzdWx0ID0gWydsaWJ6LWRldicsICdidXN5Ym94LWRldiddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSksIHNvcnRlZChkZXNpcmVkcmVzdWx0KSkKLSAgICAgICAgIyBUaGUgZm9sbG93aW5nIHNob3VsZCBub3QgZXJyb3IgKGJlY2F1c2Ugd2hlbiB3ZSB1c2UgdGhpcyBkdXJpbmcgcm9vdGZzIGNvbnN0cnVjdGlvbiwgc29tZXRpbWVzIHRoZSBjb21wbGVtZW50YXJ5IHBhY2thZ2Ugd29uJ3QgZXhpc3QpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGdsb2IgJXMgIiotbm9uZXhpc3RlbnQiJyAlIHBrZ2xpc3RmaWxlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICcnKQotICAgICAgICAjIFRlc3QgZXhjbHVkZSBvcHRpb24KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZ2xvYiAlcyAiKi1kZXYgKi1kYmciIC14ICJebGlieiInICUgcGtnbGlzdGZpbGUpCi0gICAgICAgIHJlc3VsdGxpc3QgPSByZXN1bHQub3V0cHV0LnNwbGl0KCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGliei1kZXYnLCByZXN1bHRsaXN0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsaWJ6LWRiZycsIHJlc3VsdGxpc3QpCi0KLSAgICBAdGVzdGNhc2UoMTIwNikKLSAgICBkZWYgdGVzdF9zcGVjaWZ5X3BrZ2RhdGFkaXIoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIC1wICVzIGxvb2t1cC1wa2cgemxpYicgJSBnZXRfYmJfdmFyKCdQS0dEQVRBX0RJUicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdsaWJ6MScpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9wcnNlcnZpY2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9wcnNlcnZpY2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZDQxOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcHJzZXJ2aWNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgZGF0ZXRpbWUKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLWZyb20gb2VxYS51dGlscy5uZXR3b3JrIGltcG9ydCBnZXRfZnJlZV9wb3J0Ci0KLWNsYXNzIEJpdGJha2VQclRlc3RzKG9lU2VsZlRlc3QpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLnBrZ2RhdGFfZGlyID0gZ2V0X2JiX3ZhcignUEtHREFUQV9ESVInKQotCi0gICAgZGVmIGdldF9wcl92ZXJzaW9uKHNlbGYsIHBhY2thZ2VfbmFtZSk6Ci0gICAgICAgIHBhY2thZ2VfZGF0YV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYucGtnZGF0YV9kaXIsICdydW50aW1lJywgcGFja2FnZV9uYW1lKQotICAgICAgICBwYWNrYWdlX2RhdGEgPSBmdG9vbHMucmVhZF9maWxlKHBhY2thZ2VfZGF0YV9maWxlKQotICAgICAgICBmaW5kX3ByID0gcmUuc2VhcmNoKCJQS0dSOiByWzAtOV0rXC4oWzAtOV0rKSIsIHBhY2thZ2VfZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfcHIsICJObyBQS0cgcmV2aXNpb24gZm91bmQgaW4gJXMiICUgcGFja2FnZV9kYXRhX2ZpbGUpCi0gICAgICAgIHJldHVybiBpbnQoZmluZF9wci5ncm91cCgxKSkKLQotICAgIGRlZiBnZXRfdGFza19zdGFtcChzZWxmLCBwYWNrYWdlX25hbWUsIHJlY2lwZV90YXNrKToKLSAgICAgICAgc3RhbXBkYXRhID0gZ2V0X2JiX3ZhcignU1RBTVAnLCB0YXJnZXQ9cGFja2FnZV9uYW1lKS5zcGxpdCgnLycpCi0gICAgICAgIHByZWZpeCA9IHN0YW1wZGF0YVstMV0KLSAgICAgICAgcGFja2FnZV9zdGFtcHNfcGF0aCA9ICIvIi5qb2luKHN0YW1wZGF0YVs6LTFdKQotICAgICAgICBzdGFtcHMgPSBbXQotICAgICAgICBmb3Igc3RhbXAgaW4gb3MubGlzdGRpcihwYWNrYWdlX3N0YW1wc19wYXRoKToKLSAgICAgICAgICAgIGZpbmRfc3RhbXAgPSByZS5tYXRjaCgiJXNcLiVzXC4oW2EtejAtOV17MzJ9KSIgJSAocmUuZXNjYXBlKHByZWZpeCksIHJlY2lwZV90YXNrKSwgc3RhbXApCi0gICAgICAgICAgICBpZiBmaW5kX3N0YW1wOgotICAgICAgICAgICAgICAgIHN0YW1wcy5hcHBlbmQoZmluZF9zdGFtcC5ncm91cCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oc3RhbXBzKSA9PSAwLCBtc2c9IkNvdW5kIG5vdCBmaW5kIHN0YW1wIGZvciB0YXNrICVzIGZvciByZWNpcGUgJXMiICUgKHJlY2lwZV90YXNrLCBwYWNrYWdlX25hbWUpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxlbihzdGFtcHMpID4gMSwgbXNnPSJGb3VuZCBtdWx0aXBsZSAlcyBzdGFtcHMgZm9yIHRoZSAlcyByZWNpcGUgaW4gdGhlICVzIGRpcmVjdG9yeS4iICUgKHJlY2lwZV90YXNrLCBwYWNrYWdlX25hbWUsIHBhY2thZ2Vfc3RhbXBzX3BhdGgpKQotICAgICAgICByZXR1cm4gc3RyKHN0YW1wc1swXSkKLQotICAgIGRlZiBpbmNyZW1lbnRfcGFja2FnZV9wcihzZWxmLCBwYWNrYWdlX25hbWUpOgotICAgICAgICBpbmNfZGF0YSA9ICJkb19wYWNrYWdlX2FwcGVuZCgpIHtcbiAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX3Rlc3RfcHJzZXJ2JywgZClcbn1cbmRvX3Rlc3RfcHJzZXJ2KCkge1xuZWNobyBcIlRoZSBjdXJyZW50IGRhdGUgaXM6ICVzXCJcbn0iICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMocGFja2FnZV9uYW1lLCBpbmNfZGF0YSkKLSAgICAgICAgcmVzID0gYml0YmFrZShwYWNrYWdlX25hbWUsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKHBhY2thZ2VfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAwLCBtc2c9cmVzLm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJOT1RFOiBTdGFydGVkIFBSU2VydmVyIHdpdGggREJmaWxlIiBpbiByZXMub3V0cHV0LCBtc2c9cmVzLm91dHB1dCkKLQotICAgIGRlZiBjb25maWdfcHJfdGVzdHMoc2VsZiwgcGFja2FnZV9uYW1lLCBwYWNrYWdlX3R5cGU9J3JwbScsIHByX3NvY2tldD0nbG9jYWxob3N0OjAnKToKLSAgICAgICAgY29uZmlnX3BhY2thZ2VfZGF0YSA9ICdQQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV8lcyInICUgcGFja2FnZV90eXBlCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZ19wYWNrYWdlX2RhdGEpCi0gICAgICAgIGNvbmZpZ19zZXJ2ZXJfZGF0YSA9ICdQUlNFUlZfSE9TVCA9ICIlcyInICUgcHJfc29ja2V0Ci0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWdfc2VydmVyX2RhdGEpCi0KLSAgICBkZWYgcnVuX3Rlc3RfcHJfc2VydmljZShzZWxmLCBwYWNrYWdlX25hbWUsIHBhY2thZ2VfdHlwZT0ncnBtJywgdHJhY2tfdGFzaz0nZG9fcGFja2FnZScsIHByX3NvY2tldD0nbG9jYWxob3N0OjAnKToKLSAgICAgICAgc2VsZi5jb25maWdfcHJfdGVzdHMocGFja2FnZV9uYW1lLCBwYWNrYWdlX3R5cGUsIHByX3NvY2tldCkKLQotICAgICAgICBzZWxmLmluY3JlbWVudF9wYWNrYWdlX3ByKHBhY2thZ2VfbmFtZSkKLSAgICAgICAgcHJfMSA9IHNlbGYuZ2V0X3ByX3ZlcnNpb24ocGFja2FnZV9uYW1lKQotICAgICAgICBzdGFtcF8xID0gc2VsZi5nZXRfdGFza19zdGFtcChwYWNrYWdlX25hbWUsIHRyYWNrX3Rhc2spCi0KLSAgICAgICAgc2VsZi5pbmNyZW1lbnRfcGFja2FnZV9wcihwYWNrYWdlX25hbWUpCi0gICAgICAgIHByXzIgPSBzZWxmLmdldF9wcl92ZXJzaW9uKHBhY2thZ2VfbmFtZSkKLSAgICAgICAgc3RhbXBfMiA9IHNlbGYuZ2V0X3Rhc2tfc3RhbXAocGFja2FnZV9uYW1lLCB0cmFja190YXNrKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcl8yIC0gcHJfMSA9PSAxLCAiU3RlcCBiZXR3ZWVuIHNhbWUgcGtnLiByZXZpc2lvbiBpcyBncmVhdGVyIHRoYW4gMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFtcF8xICE9IHN0YW1wXzIsICJEaWZmZXJlbnQgcGtnIHJldi4gYnV0IHNhbWUgc3RhbXA6ICVzIiAlIHN0YW1wXzEpCi0KLSAgICBkZWYgcnVuX3Rlc3RfcHJfZXhwb3J0X2ltcG9ydChzZWxmLCBwYWNrYWdlX25hbWUsIHJlcGxhY2VfY3VycmVudF9kYj1UcnVlKToKLSAgICAgICAgc2VsZi5jb25maWdfcHJfdGVzdHMocGFja2FnZV9uYW1lKQotCi0gICAgICAgIHNlbGYuaW5jcmVtZW50X3BhY2thZ2VfcHIocGFja2FnZV9uYW1lKQotICAgICAgICBwcl8xID0gc2VsZi5nZXRfcHJfdmVyc2lvbihwYWNrYWdlX25hbWUpCi0KLSAgICAgICAgZXhwb3J0ZWRfZGJfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnZXhwb3J0LmluYycpCi0gICAgICAgIGV4cG9ydF9yZXN1bHQgPSBydW5DbWQoImJpdGJha2UtcHJzZXJ2LXRvb2wgZXhwb3J0ICVzIiAlIGV4cG9ydGVkX2RiX3BhdGgsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBvcnRfcmVzdWx0LnN0YXR1cywgMCwgbXNnPSJQUiBTZXJ2aWNlIGRhdGFiYXNlIGV4cG9ydCBmYWlsZWQ6ICVzIiAlIGV4cG9ydF9yZXN1bHQub3V0cHV0KQotCi0gICAgICAgIGlmIHJlcGxhY2VfY3VycmVudF9kYjoKLSAgICAgICAgICAgIGN1cnJlbnRfZGJfcGF0aCA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdQRVJTSVNURU5UX0RJUicpLCAncHJzZXJ2LnNxbGl0ZTMnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGN1cnJlbnRfZGJfcGF0aCksIG1zZz0iUGF0aCB0byBjdXJyZW50IFBSIFNlcnZpY2UgZGF0YWJhc2UgaXMgaW52YWxpZDogJXMiICUgY3VycmVudF9kYl9wYXRoKQotICAgICAgICAgICAgb3MucmVtb3ZlKGN1cnJlbnRfZGJfcGF0aCkKLQotICAgICAgICBpbXBvcnRfcmVzdWx0ID0gcnVuQ21kKCJiaXRiYWtlLXByc2Vydi10b29sIGltcG9ydCAlcyIgJSBleHBvcnRlZF9kYl9wYXRoLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIG9zLnJlbW92ZShleHBvcnRlZF9kYl9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcG9ydF9yZXN1bHQuc3RhdHVzLCAwLCBtc2c9IlBSIFNlcnZpY2UgZGF0YWJhc2UgaW1wb3J0IGZhaWxlZDogJXMiICUgaW1wb3J0X3Jlc3VsdC5vdXRwdXQpCi0KLSAgICAgICAgc2VsZi5pbmNyZW1lbnRfcGFja2FnZV9wcihwYWNrYWdlX25hbWUpCi0gICAgICAgIHByXzIgPSBzZWxmLmdldF9wcl92ZXJzaW9uKHBhY2thZ2VfbmFtZSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUocHJfMiAtIHByXzEgPT0gMSwgIlN0ZXAgYmV0d2VlbiBzYW1lIHBrZy4gcmV2aXNpb24gaXMgZ3JlYXRlciB0aGFuIDEiKQotCi0gICAgQHRlc3RjYXNlKDkzMCkKLSAgICBkZWYgdGVzdF9pbXBvcnRfZXhwb3J0X3JlcGxhY2VfZGIoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfZXhwb3J0X2ltcG9ydCgnbTQnKQotCi0gICAgQHRlc3RjYXNlKDkzMSkKLSAgICBkZWYgdGVzdF9pbXBvcnRfZXhwb3J0X292ZXJyaWRlX2RiKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX2V4cG9ydF9pbXBvcnQoJ200JywgcmVwbGFjZV9jdXJyZW50X2RiPUZhbHNlKQotCi0gICAgQHRlc3RjYXNlKDkzMikKLSAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX3JwbV9hcmNoX2RlcChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCdtNCcsICdycG0nLCAnZG9fcGFja2FnZScpCi0KLSAgICBAdGVzdGNhc2UoOTM0KQotICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfZGViX2FyY2hfZGVwKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ200JywgJ2RlYicsICdkb19wYWNrYWdlJykKLQotICAgIEB0ZXN0Y2FzZSg5MzMpCi0gICAgZGVmIHRlc3RfcHJfc2VydmljZV9pcGtfYXJjaF9kZXAoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgnbTQnLCAnaXBrJywgJ2RvX3BhY2thZ2UnKQotCi0gICAgQHRlc3RjYXNlKDkzNSkKLSAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX3JwbV9hcmNoX2luZGVwKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAncnBtJywgJ2RvX3BhY2thZ2UnKQotCi0gICAgQHRlc3RjYXNlKDkzNykKLSAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX2RlYl9hcmNoX2luZGVwKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAnZGViJywgJ2RvX3BhY2thZ2UnKQotCi0gICAgQHRlc3RjYXNlKDkzNikKLSAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX2lwa19hcmNoX2luZGVwKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAnaXBrJywgJ2RvX3BhY2thZ2UnKQotCi0gICAgQHRlc3RjYXNlKDE0MTkpCi0gICAgZGVmIHRlc3Rfc3RvcHBpbmdfcHJzZXJ2aWNlX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBnZXRfZnJlZV9wb3J0KCkKLQotICAgICAgICBydW5DbWQoJ2JpdGJha2UtcHJzZXJ2IC0taG9zdCBsb2NhbGhvc3QgLS1wb3J0ICVzIC0tbG9nbGV2ZWw9REVCVUcgLS1zdGFydCcgJSBwb3J0KQotICAgICAgICByZXQgPSBydW5DbWQoJ2JpdGJha2UtcHJzZXJ2IC0taG9zdCBsb2NhbGhvc3QgLS1wb3J0ICVzIC0tbG9nbGV2ZWw9REVCVUcgLS1zdG9wJyAlIHBvcnQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQuc3RhdHVzLCAwKQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9yZWNpcGV0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcmVjaXBldG9vbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM1NWE1ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9yZWNpcGV0b29sLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjk1ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzaHV0aWwKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVybGxpYi5wYXJzZQotCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcgotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFycywgY3JlYXRlX3RlbXBfbGF5ZXIKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotZnJvbSBvZXFhLnNlbGZ0ZXN0IGltcG9ydCBkZXZ0b29sCi0KLQotdGVtcGxheWVyZGlyID0gTm9uZQotCi0KLWRlZiBzZXRVcE1vZHVsZSgpOgotICAgIGdsb2JhbCB0ZW1wbGF5ZXJkaXIKLSAgICB0ZW1wbGF5ZXJkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbHFhJykKLSAgICBjcmVhdGVfdGVtcF9sYXllcih0ZW1wbGF5ZXJkaXIsICdzZWxmdGVzdHJlY2lwZXRvb2wnKQotICAgIHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBsYXllcmRpcikKLQotCi1kZWYgdGVhckRvd25Nb2R1bGUoKToKLSAgICBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICBydW5DbWQoJ3JtIC1yZiAlcycgJSB0ZW1wbGF5ZXJkaXIpCi0KLQotY2xhc3MgUmVjaXBldG9vbEJhc2UoZGV2dG9vbC5EZXZ0b29sQmFzZSk6Ci0KLSAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKLSAgICAgICAgc2VsZi50ZW1wbGF5ZXJkaXIgPSB0ZW1wbGF5ZXJkaXIKLSAgICAgICAgc2VsZi50ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3JlY2lwZXRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50ZW1wZGlyKQotICAgICAgICBzZWxmLnRlc3RmaWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3Rlc3RmaWxlJykKLSAgICAgICAgd2l0aCBvcGVuKHNlbGYudGVzdGZpbGUsICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoJ1Rlc3QgZmlsZVxuJykKLQotICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgotICAgICAgICBydW5DbWQoJ3JtIC1yZiAlcy9yZWNpcGVzLSonICUgc2VsZi50ZW1wbGF5ZXJkaXIpCi0KLSAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZGNtZChzZWxmLCBjbWQsIHRlc3RyZWNpcGUsIGV4cGVjdGVkZmlsZXMsIGV4cGVjdGVkbGluZXM9Tm9uZSk6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCi0KLSAgICAgICAgIyBDaGVjayB0aGUgYmJhcHBlbmQgd2FzIGNyZWF0ZWQgYW5kIGFwcGxpZXMgcHJvcGVybHkKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBzZWxmLnRlbXBsYXllcmRpcikKLQotICAgICAgICAjIENoZWNrIHRoZSBiYmFwcGVuZCBjb250ZW50cwotICAgICAgICBpZiBleHBlY3RlZGxpbmVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgZi5yZWFkbGluZXMoKSwgIkV4cGVjdGVkIGxpbmVzIGFyZSBub3QgcHJlc2VudCBpbiAlcyIgJSBiYmFwcGVuZGZpbGUpCi0KLSAgICAgICAgIyBDaGVjayBmaWxlIHdhcyBjb3BpZWQKLSAgICAgICAgZmlsZXNkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGJiYXBwZW5kZmlsZSksIHRlc3RyZWNpcGUpCi0gICAgICAgIGZvciBleHBlY3RlZGZpbGUgaW4gZXhwZWN0ZWRmaWxlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZmlsZXNkaXIsIGV4cGVjdGVkZmlsZSkpLCAnRXhwZWN0ZWQgZmlsZSAlcyB0byBiZSBjb3BpZWQgbmV4dCB0byBiYmFwcGVuZCwgYnV0IGl0IHdhc25cJ3QnICUgZXhwZWN0ZWRmaWxlKQotCi0gICAgICAgICMgQ2hlY2sgbm8gb3RoZXIgZmlsZXMgY3JlYXRlZAotICAgICAgICBjcmVhdGVkZmlsZXMgPSBbXQotICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhmaWxlc2Rpcik6Ci0gICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBjcmVhdGVkZmlsZXMuYXBwZW5kKG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4ocm9vdCwgZiksIGZpbGVzZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvcnRlZChjcmVhdGVkZmlsZXMpLCBzb3J0ZWQoZXhwZWN0ZWRmaWxlcykpCi0KLSAgICAgICAgcmV0dXJuIGJiYXBwZW5kZmlsZSwgcmVzdWx0Lm91dHB1dAotCi0KLWNsYXNzIFJlY2lwZXRvb2xUZXN0cyhSZWNpcGV0b29sQmFzZSk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAjIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBkYXRhIGluIHNobGlicy9wa2dkYXRhCi0gICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJzZWxmdGVzdCIpCi0gICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nIGJpdGJha2UgdG8gZ2VuZXJhdGUgcGtnZGF0YScpCi0gICAgICAgIGJpdGJha2UoJy1jIHBhY2thZ2VkYXRhIGJhc2UtZmlsZXMgY29yZXV0aWxzIGJ1c3lib3ggc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJykKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnQ09SRUJBU0UnLCAnQkJQQVRIJ10pCi0gICAgICAgIGNscy5jb3JlYmFzZSA9IGJiX3ZhcnNbJ0NPUkVCQVNFJ10KLSAgICAgICAgY2xzLmJicGF0aCA9IGJiX3ZhcnNbJ0JCUEFUSCddCi0KLSAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoc2VsZiwgdGVzdHJlY2lwZSwgZGVzdGZpbGUsIG5ld2ZpbGUsIG9wdGlvbnMsIGV4cGVjdGVkbGluZXMsIGV4cGVjdGVkZmlsZXMpOgotICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzICVzICVzICVzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgZGVzdGZpbGUsIG5ld2ZpbGUsIG9wdGlvbnMpCi0gICAgICAgIHJldHVybiBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRjbWQoY21kLCB0ZXN0cmVjaXBlLCBleHBlY3RlZGZpbGVzLCBleHBlY3RlZGxpbmVzKQotCi0gICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoc2VsZiwgZGVzdGZpbGUsIG5ld2ZpbGUsIGNoZWNrZXJyb3IpOgotICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzICVzICVzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgZGVzdGZpbGUsIG5ld2ZpbGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnQ29tbWFuZCAiJXMiIHNob3VsZCBoYXZlIGZhaWxlZCBidXQgZGlkblwndCcgJSBjbWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGZvciBlcnJvcnN0ciBpbiBjaGVja2Vycm9yOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlcnJvcnN0ciwgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTc3KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9iYXNpYyhzZWxmKToKLSAgICAgICAgIyBCYXNpYyB0ZXN0Ci0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdiYXNlLWZpbGVzJywgJy9ldGMvbW90ZCcsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ21vdGQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODMpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ludmFsaWQoc2VsZik6Ci0gICAgICAgICMgVGVzdCBzb21lIGNvbW1hbmRzIHRoYXQgc2hvdWxkIGVycm9yCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL2V0Yy9wYXNzd2QnLCBzZWxmLnRlc3RmaWxlLCBbJ0VSUk9SOiAvZXRjL3Bhc3N3ZCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIHRvb2wnLCAndXNlcmFkZCcsICdleHRyYXVzZXJzJ10pCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL2V0Yy90aW1lc3RhbXAnLCBzZWxmLnRlc3RmaWxlLCBbJ0VSUk9SOiAvZXRjL3RpbWVzdGFtcCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIHRvb2wnXSkKLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvZGV2L2NvbnNvbGUnLCBzZWxmLnRlc3RmaWxlLCBbJ0VSUk9SOiAvZGV2L2NvbnNvbGUgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyB0b29sJ10pCi0KLSAgICBAdGVzdGNhc2UoMTE3NikKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYWx0ZXJuYXRpdmVzKHNlbGYpOgotICAgICAgICAjIE5vdyB0cnkgd2l0aCBhIGZpbGUgd2Uga25vdyBzaG91bGQgYmUgYW4gYWx0ZXJuYXRpdmUKLSAgICAgICAgIyAodGhpcyBpcyB2ZXJ5IG11Y2ggYSBmYWtlIGV4YW1wbGUsIGJ1dCBvbmUgd2Uga25vdyBpcyByZWxpYWJseSBhbiBhbHRlcm5hdGl2ZSkKLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvYmluL2xzJywgc2VsZi50ZXN0ZmlsZSwgWydFUlJPUjogRmlsZSAvYmluL2xzIGlzIGFuIGFsdGVybmF0aXZlIHBvc3NpYmx5IHByb3ZpZGVkIGJ5IHRoZSBmb2xsb3dpbmcgcmVjaXBlczonLCAnY29yZXV0aWxzJywgJ2J1c3lib3gnXSkKLSAgICAgICAgIyBOZWVkIGEgdGVzdCBmaWxlIC0gc2hvdWxkIGJlIGV4ZWN1dGFibGUKLSAgICAgICAgdGVzdGZpbGUyID0gb3MucGF0aC5qb2luKHNlbGYuY29yZWJhc2UsICdvZS1pbml0LWJ1aWxkLWVudicpCi0gICAgICAgIHRlc3RmaWxlMm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlMikKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vJXMiXG4nICUgdGVzdGZpbGUybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyVzICR7RH0ke2Jhc2VfYmluZGlyfS9sc1xuJyAlIHRlc3RmaWxlMm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ2NvcmV1dGlscycsICcvYmluL2xzJywgdGVzdGZpbGUyLCAnLXIgY29yZXV0aWxzJywgZXhwZWN0ZWRsaW5lcywgW3Rlc3RmaWxlMm5hbWVdKQotICAgICAgICAjIE5vdyB0cnkgYmJhcHBlbmRpbmcgdGhlIHNhbWUgZmlsZSBhZ2FpbiwgY29udGVudHMgc2hvdWxkIG5vdCBjaGFuZ2UKLSAgICAgICAgYmJhcHBlbmRmaWxlLCBfID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnY29yZXV0aWxzJywgJy9iaW4vbHMnLCBzZWxmLnRlc3RmaWxlLCAnLXIgY29yZXV0aWxzJywgZXhwZWN0ZWRsaW5lcywgW3Rlc3RmaWxlMm5hbWVdKQotICAgICAgICAjIEJ1dCBmaWxlIHNob3VsZCBoYXZlCi0gICAgICAgIGNvcGllZGZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGJiYXBwZW5kZmlsZSksICdjb3JldXRpbHMnLCB0ZXN0ZmlsZTJuYW1lKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RpZmYgLXEgJXMgJXMnICUgKHRlc3RmaWxlMiwgY29waWVkZmlsZSksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnTmV3IGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgYnV0IHdhcyBub3QgJXMnICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTc4KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9iaW5hcnkoc2VsZik6Ci0gICAgICAgICMgVHJ5IGFwcGVuZGluZyBhIGJpbmFyeSBmaWxlCi0gICAgICAgICMgL2Jpbi9scyBjYW4gYmUgYSBzeW1saW5rIHRvIC91c3IvYmluL2xzCi0gICAgICAgIGxzID0gb3MucGF0aC5yZWFscGF0aCgiL2Jpbi9scyIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzIC9iaW4vbHMgJXMgLXIgY29yZXV0aWxzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgbHMpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdXQVJOSU5HOiAnLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdpcyBhIGJpbmFyeScsIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE3MykKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYWRkKHNlbGYpOgotICAgICAgICAjIFRyeSBhcmJpdHJhcnkgZmlsZSBhZGQgdG8gYSByZWNpcGUKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zb21ldGhpbmdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ25ldGJhc2UnLCAnL3Vzci9zaGFyZS9zb21ldGhpbmcnLCBzZWxmLnRlc3RmaWxlLCAnLXIgbmV0YmFzZScsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKLSAgICAgICAgIyBUcnkgYWRkaW5nIGFub3RoZXIgZmlsZSwgdGhpcyB0aW1lIHdoZXJlIHRoZSBzb3VyY2UgZmlsZSBpcyBleGVjdXRhYmxlCi0gICAgICAgICMgKHNvIHdlJ3JlIHRlc3RpbmcgdGhhdCwgcGx1cyBtb2RpZnlpbmcgYW4gZXhpc3RpbmcgYmJhcHBlbmQpCi0gICAgICAgIHRlc3RmaWxlMiA9IG9zLnBhdGguam9pbihzZWxmLmNvcmViYXNlLCAnb2UtaW5pdC1idWlsZC1lbnYnKQotICAgICAgICB0ZXN0ZmlsZTJuYW1lID0gb3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZTIpCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIFxcXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICBmaWxlOi8vJXMgXFxcbicgJSB0ZXN0ZmlsZTJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zb21ldGhpbmdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS8lcyAke0R9JHtkYXRhZGlyfS9zY3JpcHRuYW1lXG4nICUgdGVzdGZpbGUybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnbmV0YmFzZScsICcvdXNyL3NoYXJlL3NjcmlwdG5hbWUnLCB0ZXN0ZmlsZTIsICctciBuZXRiYXNlJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZScsIHRlc3RmaWxlMm5hbWVdKQotCi0gICAgQHRlc3RjYXNlKDExNzQpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2FkZF9iaW5kaXIoc2VsZik6Ci0gICAgICAgICMgVHJ5IGFyYml0cmFyeSBmaWxlIGFkZCB0byBhIHJlY2lwZSwgdGhpcyB0aW1lIHRvIGEgbG9jYXRpb24gc3VjaCB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgYXMgZXhlY3V0YWJsZQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7YmluZGlyfS9zZWxmdGVzdC1yZWNpcGV0b29sLXRlc3RiaW5cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ25ldGJhc2UnLCAnL3Vzci9iaW4vc2VsZnRlc3QtcmVjaXBldG9vbC10ZXN0YmluJywgc2VsZi50ZXN0ZmlsZSwgJy1yIG5ldGJhc2UnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTc1KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9hZGRfbWFjaGluZShzZWxmKToKLSAgICAgICAgIyBUcnkgYXJiaXRyYXJ5IGZpbGUgYWRkIHRvIGEgcmVjaXBlLCB0aGlzIHRpbWUgdG8gYSBsb2NhdGlvbiBzdWNoIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyBleGVjdXRhYmxlCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSV9hcHBlbmRfbXltYWNoaW5lID0gIiBmaWxlOi8vdGVzdGZpbGUiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kX215bWFjaGluZSgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc29tZXRoaW5nXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCduZXRiYXNlJywgJy91c3Ivc2hhcmUvc29tZXRoaW5nJywgc2VsZi50ZXN0ZmlsZSwgJy1yIG5ldGJhc2UgLW0gbXltYWNoaW5lJywgZXhwZWN0ZWRsaW5lcywgWydteW1hY2hpbmUvdGVzdGZpbGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODQpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX29yaWcoc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGFuZCBpbiBkb19pbnN0YWxsIHdpdGggdGhlIHNhbWUgbmFtZQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1vcmlnJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLW9yaWcnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExOTEpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3RvZGlyKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBhbmQgaW4gZG9faW5zdGFsbCB3aXRoIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSByYXRoZXIgdGhhbiBmaWxlCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXRvZGlyJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLXRvZGlyJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTg3KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9yZW5hbWVkKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSB3aXRoIGEgZGlmZmVyZW50IG5hbWUgdG8gdGhlIGRlc3RpbmF0aW9uIGZpbGUKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtcmVuYW1lZCcsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ2ZpbGUxJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTkwKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9zdWJkaXIoc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGluIGEgc3ViZGlyCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXN1YmRpclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXN1YmRpcicsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTg5KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9zcmNfZ2xvYihzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgYXMgYSBnbG9iCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXNyYy1nbG9iZmlsZVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXNyYy1nbG9iZmlsZScsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTgxKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9pbnN0X2dsb2Ioc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBkb19pbnN0YWxsIGFzIGEgZ2xvYgotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LWdsb2JmaWxlJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtZ2xvYmZpbGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODIpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2luc3RfdG9kaXJfZ2xvYihzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIGRvX2luc3RhbGwgYXMgYSBnbG9iIHdpdGggZGVzdGluYXRpb24gYXMgYSBkaXJlY3RvcnkKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC10b2Rpci1nbG9iZmlsZScsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LXRvZGlyLWdsb2JmaWxlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTg1KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9wYXRjaChzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGFkZGVkIGJ5IGEgcGF0Y2ggaW4gU1JDX1VSSQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke3N5c2NvbmZkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1wYXRjaGVkXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL2V0Yy9zZWxmdGVzdC1yZXBsYWNlbWUtcGF0Y2hlZCcsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCi0gICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBpZiAnV0FSTklORzogJyBpbiBsaW5lOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2FkZC1maWxlLnBhdGNoJywgbGluZSwgJ1VuZXhwZWN0ZWQgd2FybmluZyBmb3VuZCBpbiBvdXRwdXQ6XG4lcycgJSBsaW5lKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoIHdhcm5pbmcgbm90IGZvdW5kIGluIG91dHB1dDpcbiVzJyAlIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTg4KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9zY3JpcHQoc2VsZik6Ci0gICAgICAgICMgTm93LCBhIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgYnV0IGluc3RhbGxlZCBieSBhIHNjcmlwdCAoc28gbm8gbWVudGlvbiBpbiBkb19pbnN0YWxsKQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1zY3JpcHRlZFxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXNjcmlwdGVkJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODApCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2luc3RfZnVuYyhzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluc3RhbGxlZCBmcm9tIGEgZnVuY3Rpb24gY2FsbGVkIGJ5IGRvX2luc3RhbGwKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC1mdW5jJywgc2VsZi50ZXN0ZmlsZSwgJycsIGV4cGVjdGVkbGluZXMsIFsnc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtZnVuYyddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4NikKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfcG9zdGluc3RhbGwoc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBjcmVhdGVkIGJ5IGEgcG9zdGluc3RhbGwgc2NyaXB0IChhbmQgZXhwbGljaXRseSBtZW50aW9uZWQgaW4gaXQpCi0gICAgICAgICMgRmlyc3QgdHJ5IHdpdGhvdXQgc3BlY2lmeWluZyByZWNpcGUKLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKCcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wb3N0aW5zdCcsIHNlbGYudGVzdGZpbGUsIFsnRmlsZSAvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1wb3N0aW5zdCBtYXkgYmUgd3JpdHRlbiBvdXQgaW4gYSBwcmUvcG9zdGluc3RhbGwgc2NyaXB0IG9mIHRoZSBmb2xsb3dpbmcgcmVjaXBlczonLCAnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJ10pCi0gICAgICAgICMgTm93IHNwZWNpZnkgcmVjaXBlCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc2VsZnRlc3QtcmVwbGFjZW1lLXBvc3RpbnN0XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtcG9zdGluc3QnLCBzZWxmLnRlc3RmaWxlLCAnLXIgc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQotCi0gICAgQHRlc3RjYXNlKDExNzkpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2V4dGxheWVyKHNlbGYpOgotICAgICAgICAjIFRyeSBjcmVhdGluZyBhIGJiYXBwZW5kIGluIGEgbGF5ZXIgdGhhdCdzIG5vdCBpbiBiYmxheWVycy5jb25mIGFuZCBoYXMgYSBkaWZmZXJlbnQgc3RydWN0dXJlCi0gICAgICAgIGV4dHRlbXBsYXllcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdleHRsYXllcicpCi0gICAgICAgIHNlbGYuX2NyZWF0ZV90ZW1wX2xheWVyKGV4dHRlbXBsYXllcmRpciwgRmFsc2UsICdvZXNlbGZ0ZXN0ZXh0bGF5ZXInLCByZWNpcGVwYXRoc3BlYz0nbWV0YWRhdGEvcmVjaXBlcy9yZWNpcGVzLSovKicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzIC91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLW9yaWcgJXMnICUgKGV4dHRlbXBsYXllcmRpciwgc2VsZi50ZXN0ZmlsZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGNyZWF0ZWRmaWxlcyA9IFtdCi0gICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGV4dHRlbXBsYXllcmRpcik6Ci0gICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBjcmVhdGVkZmlsZXMuYXBwZW5kKG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4ocm9vdCwgZiksIGV4dHRlbXBsYXllcmRpcikpCi0gICAgICAgIGNyZWF0ZWRmaWxlcy5yZW1vdmUoJ2NvbmYvbGF5ZXIuY29uZicpCi0gICAgICAgIGV4cGVjdGVkZmlsZXMgPSBbJ21ldGFkYXRhL3JlY2lwZXMvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZS9zZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUuYmJhcHBlbmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdtZXRhZGF0YS9yZWNpcGVzL3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUvc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1vcmlnJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoY3JlYXRlZGZpbGVzKSwgc29ydGVkKGV4cGVjdGVkZmlsZXMpKQotCi0gICAgQHRlc3RjYXNlKDExOTIpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3dpbGRjYXJkKHNlbGYpOgotCi0gICAgICAgIGRlZiB0cnlfYXBwZW5kZmlsZV93YyhvcHRpb25zKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBhcHBlbmRmaWxlICVzIC9ldGMvcHJvZmlsZSAlcyAlcycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIHNlbGYudGVzdGZpbGUsIG9wdGlvbnMpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgICAgIGJiYXBwZW5kZmlsZSA9IE5vbmUKLSAgICAgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYudGVtcGxheWVyZGlyKToKLSAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgnLmJiYXBwZW5kJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYmFwcGVuZGZpbGUgPSBmCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgbm90IGJiYXBwZW5kZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ05vIGJiYXBwZW5kIGZpbGUgY3JlYXRlZCcpCi0gICAgICAgICAgICBydW5DbWQoJ3JtIC1yZiAlcy9yZWNpcGVzLSonICUgc2VsZi50ZW1wbGF5ZXJkaXIpCi0gICAgICAgICAgICByZXR1cm4gYmJhcHBlbmRmaWxlCi0KLSAgICAgICAgIyBDaGVjayB3aXRob3V0IHdpbGRjYXJkIG9wdGlvbgotICAgICAgICByZWNpcGVmbiA9IG9zLnBhdGguYmFzZW5hbWUoZ2V0X2JiX3ZhcignRklMRScsICdiYXNlLWZpbGVzJykpCi0gICAgICAgIGZpbGVuYW1lID0gdHJ5X2FwcGVuZGZpbGVfd2MoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW5hbWUsIHJlY2lwZWZuLnJlcGxhY2UoJy5iYicsICcuYmJhcHBlbmQnKSkKLSAgICAgICAgIyBOb3cgY2hlY2sgd2l0aCB3aWxkY2FyZCBvcHRpb24KLSAgICAgICAgZmlsZW5hbWUgPSB0cnlfYXBwZW5kZmlsZV93YygnLXcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVuYW1lLCByZWNpcGVmbi5zcGxpdCgnXycpWzBdICsgJ18lLmJiYXBwZW5kJykKLQotICAgIEB0ZXN0Y2FzZSgxMTkzKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlKHNlbGYpOgotICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKLSAgICAgICAgdGVtcHNyYyA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdzcmN0cmVlJykKLSAgICAgICAgb3MubWFrZWRpcnModGVtcHNyYykKLSAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdsb2dyb3RhdGVfMy4xMi4zLmJiJykKLSAgICAgICAgc3JjdXJpID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzL2Rvd25sb2FkLzMuMTIuMy9sb2dyb3RhdGUtMy4xMi4zLnRhci54eicKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcyAteCAlcycgJSAocmVjaXBlZmlsZSwgc3JjdXJpLCB0ZW1wc3JjKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9ICdHUEx2MicKLSAgICAgICAgY2hlY2t2YXJzWydMSUNfRklMRVNfQ0hLU1VNJ10gPSAnZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzJwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9sb2dyb3RhdGUtJHtQVn0udGFyLnh6JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbbWQ1c3VtXSddID0gJ2E1NjBjNTdmYWM4N2M0NWIyZmMxNzQwNmNkZjc5Mjg4JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbc2hhMjU2c3VtXSddID0gJzJlNmE0MDFjYWM5MDI0ZGIyMjg4Mjk3ZTNiZTFhOGFiNjBlNzQwMWJhOGU5MTIyNTIxOGFhZjRhMjdlODJhMDcnCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0KLSAgICBAdGVzdGNhc2UoMTE5NCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXQoc2VsZik6Ci0gICAgICAgIGlmICd4MTEnIG5vdCBpbiBnZXRfYmJfdmFyKCdESVNUUk9fRkVBVFVSRVMnKToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1Rlc3QgcmVxdWlyZXMgeDExIGFzIGRpc3RybyBmZWF0dXJlJykKLSAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZGF0YSBpbiBzaGxpYnMvcGtnZGF0YQotICAgICAgICBiaXRiYWtlKCdsaWJwbmcgcGFuZ28gbGlieDExIGxpYnhleHQganBlZyBsaWJjaGVjaycpCi0gICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQotICAgICAgICB0ZW1wc3JjID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3NyY3RyZWUnKQotICAgICAgICBvcy5tYWtlZGlycyh0ZW1wc3JjKQotICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2xpYm1hdGNoYm94LmJiJykKLSAgICAgICAgc3JjdXJpID0gJ2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpYm1hdGNoYm94JwotICAgICAgICByZXN1bHQgPSBydW5DbWQoWydyZWNpcGV0b29sJywgJ2NyZWF0ZScsICctbycsIHJlY2lwZWZpbGUsIHNyY3VyaSArICI7cmV2PTlmN2NmODg5NWFlMmQzOWM0NjVjMDRjYzc4ZTkxOGMxNTc0MjAyNjkiLCAnLXgnLCB0ZW1wc3JjXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpLCAncmVjaXBldG9vbCBkaWQgbm90IGNyZWF0ZSByZWNpcGUgZmlsZTsgb3V0cHV0OlxuJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSAnTEdQTHYyLjEnCi0gICAgICAgIGNoZWNrdmFyc1snTElDX0ZJTEVTX0NIS1NVTSddID0gJ2ZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCcKLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9naXQnCi0gICAgICAgIGNoZWNrdmFyc1snUFYnXSA9ICcxLjExK2dpdCR7U1JDUFZ9JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHNyY3VyaQotICAgICAgICBjaGVja3ZhcnNbJ0RFUEVORFMnXSA9IHNldChbJ2xpYmNoZWNrJywgJ2xpYmpwZWctdHVyYm8nLCAnbGlicG5nJywgJ2xpYngxMScsICdsaWJ4ZXh0JywgJ3BhbmdvJ10pCi0gICAgICAgIGluaGVyaXRzID0gWydhdXRvdG9vbHMnLCAncGtnY29uZmlnJ10KLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKLQotICAgIEB0ZXN0Y2FzZSgxMzkyKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX3NpbXBsZShzZWxmKToKLSAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCi0gICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKLSAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKLSAgICAgICAgcHYgPSAnMS43LjMuMCcKLSAgICAgICAgc3JjdXJpID0gJ2h0dHA6Ly93d3cuZGVzdC11bnJlYWNoLm9yZy9zb2NhdC9kb3dubG9hZC9zb2NhdC0lcy50YXIuYnoyJyAlIHB2Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgJXMgLW8gJXMnICUgKHNyY3VyaSwgdGVtcHJlY2lwZSkpCi0gICAgICAgIGRpcmxpc3QgPSBvcy5saXN0ZGlyKHRlbXByZWNpcGUpCi0gICAgICAgIGlmIGxlbihkaXJsaXN0KSA+IDE6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ3JlY2lwZXRvb2wgY3JlYXRlZCBtb3JlIHRoYW4ganVzdCBvbmUgZmlsZTsgb3V0cHV0OlxuJXNcbmRpcmxpc3Q6XG4lcycgJSAocmVzdWx0Lm91dHB1dCwgc3RyKGRpcmxpc3QpKSkKLSAgICAgICAgaWYgbGVuKGRpcmxpc3QpIDwgMSBvciBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHRlbXByZWNpcGUsIGRpcmxpc3RbMF0pKToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgncmVjaXBldG9vbCBkaWQgbm90IGNyZWF0ZSByZWNpcGUgZmlsZTsgb3V0cHV0OlxuJXNcbmRpcmxpc3Q6XG4lcycgJSAocmVzdWx0Lm91dHB1dCwgc3RyKGRpcmxpc3QpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJsaXN0WzBdLCAnc29jYXRfJXMuYmInICUgcHYsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnVW5rbm93bicsICdHUEx2MiddKQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ19GSUxFU19DSEtTVU0nXSA9IHNldChbJ2ZpbGU6Ly9DT1BZSU5HLk9wZW5TU0w7bWQ1PTVjOWJjY2M3N2Y2N2E4MzI4ZWY0ZWJhZjQ2ODExNmY0JywgJ2ZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyddKQotICAgICAgICAjIFdlIGRvbid0IGNoZWNrIERFUEVORFMgc2luY2UgdGhleSBhcmUgdmFyaWFibGUgZm9yIHRoaXMgcmVjaXBlIGRlcGVuZGluZyBvbiB3aGF0J3MgaW4gdGhlIHN5c3Jvb3QKLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSBOb25lCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gc3JjdXJpLnJlcGxhY2UocHYsICcke1BWfScpCi0gICAgICAgIGluaGVyaXRzID0gWydhdXRvdG9vbHMnXQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgZGlybGlzdFswXSksIGNoZWNrdmFycywgaW5oZXJpdHMpCi0KLSAgICBAdGVzdGNhc2UoMTQxOCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9jbWFrZShzZWxmKToKLSAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCi0gICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKLSAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbmF2aXRfMC41LjAuYmInKQotICAgICAgICBzcmN1cmkgPSAnaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9uYXZpdC92MC41LjAvbmF2aXQtMC41LjAudGFyLmd6JwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnVW5rbm93bicsICdHUEx2MicsICdMR1BMdjInXSkKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9uYXZpdC92JHtQVn0vbmF2aXQtJHtQVn0udGFyLmd6JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbbWQ1c3VtXSddID0gJzI0MmYzOThlOTc5YTZiOGMwZjNjODAyYjYzNDM1YjY4JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbc2hhMjU2c3VtXSddID0gJzEzMzUzNDgxZDdmYzAxYTRmNjRlMzg1ZGRhNDYwYjUxNDk2MzY2YmJhMGZkMmNjODVhODlhMDc0NzkxMGU5NGQnCi0gICAgICAgIGNoZWNrdmFyc1snREVQRU5EUyddID0gc2V0KFsnZnJlZXR5cGUnLCAnemxpYicsICdvcGVuc3NsJywgJ2dsaWItMi4wJywgJ3ZpcnR1YWwvbGliZ2wnLCAndmlydHVhbC9lZ2wnLCAnZ3RrKycsICdsaWJwbmcnLCAnbGlic2RsJywgJ2ZyZWVnbHV0JywgJ2RidXMtZ2xpYiddKQotICAgICAgICBpbmhlcml0cyA9IFsnY21ha2UnLCAncHl0aG9uLWRpcicsICdnZXR0ZXh0JywgJ3BrZ2NvbmZpZyddCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCi0KLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXRodWIoc2VsZik6Ci0gICAgICAgICMgQmFzaWMgdGVzdCB0byBzZWUgaWYgZ2l0aHViIFVSTCBtYW5nbGluZyB3b3JrcwotICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCi0gICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ21lc29uX2dpdC5iYicpCi0gICAgICAgIHNyY3VyaSA9ICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbjtyZXY9MC4zMi4wJwotICAgICAgICByZXN1bHQgPSBydW5DbWQoWydyZWNpcGV0b29sJywgJ2NyZWF0ZScsICctbycsIHRlbXByZWNpcGUsIHNyY3VyaV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydBcGFjaGUtMi4wJ10pCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2dpdDovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbjtwcm90b2NvbD1odHRwcycKLSAgICAgICAgaW5oZXJpdHMgPSBbJ3NldHVwdG9vbHMnXQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQotCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0aHViX3RhcmJhbGwoc2VsZik6Ci0gICAgICAgICMgQmFzaWMgdGVzdCB0byBlbnN1cmUgZ2l0aHViIFVSTCBtYW5nbGluZyBkb2Vzbid0IGFwcGx5IHRvIHJlbGVhc2UgdGFyYmFsbHMKLSAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQotICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQotICAgICAgICBwdiA9ICcwLjMyLjAnCi0gICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ21lc29uXyVzLmJiJyAlIHB2KQotICAgICAgICBzcmN1cmkgPSAnaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcmVsZWFzZXMvZG93bmxvYWQvJXMvbWVzb24tJXMudGFyLmd6JyAlIChwdiwgcHYpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydBcGFjaGUtMi4wJ10pCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L21lc29uLSR7UFZ9LnRhci5neicKLSAgICAgICAgaW5oZXJpdHMgPSBbJ3NldHVwdG9vbHMnXQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQotCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0X2h0dHAoc2VsZik6Ci0gICAgICAgICMgQmFzaWMgdGVzdCB0byBjaGVjayBodHRwIGdpdCBVUkwgbWFuZ2xpbmcgd29ya3MKLSAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQotICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdtYXRjaGJveC10ZXJtaW5hbF9naXQuYmInKQotICAgICAgICBzcmN1cmkgPSAnaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9tYXRjaGJveC10ZXJtaW5hbCcKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcycgJSAodGVtcHJlY2lwZSwgc3JjdXJpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ0dQTHYyJ10pCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9tYXRjaGJveC10ZXJtaW5hbDtwcm90b2NvbD1odHRwJwotICAgICAgICBpbmhlcml0cyA9IFsncGtnY29uZmlnJywgJ2F1dG90b29scyddCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCi0KLSAgICBkZWYgX2NvcHlfZmlsZV93aXRoX2NsZWFudXAoc2VsZiwgc3JjZmlsZSwgYmFzZWRzdGRpciwgKnBhdGhzKToKLSAgICAgICAgZHN0ZGlyID0gYmFzZWRzdGRpcgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZHN0ZGlyKSkKLSAgICAgICAgZm9yIHAgaW4gcGF0aHM6Ci0gICAgICAgICAgICBkc3RkaXIgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBwKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdGRpcik6Ci0gICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZHN0ZGlyKQotICAgICAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0ZGlyKQotICAgICAgICBkc3RmaWxlID0gb3MucGF0aC5qb2luKGRzdGRpciwgb3MucGF0aC5iYXNlbmFtZShzcmNmaWxlKSkKLSAgICAgICAgaWYgc3JjZmlsZSAhPSBkc3RmaWxlOgotICAgICAgICAgICAgc2h1dGlsLmNvcHkoc3JjZmlsZSwgZHN0ZmlsZSkKLSAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0ZmlsZSkKLQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfbG9hZF9wbHVnaW4oc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdGhhdCByZWNpcGV0b29sIGxvYWRzIG9ubHkgdGhlIGZpcnN0IGZvdW5kIHBsdWdpbiBpbiBCQlBBVEguIiIiCi0KLSAgICAgICAgcmVjaXBldG9vbCA9IHJ1bkNtZCgid2hpY2ggcmVjaXBldG9vbCIpCi0gICAgICAgIGZyb21uYW1lID0gcnVuQ21kKCJyZWNpcGV0b29sIC0tcXVpZXQgcGx1Z2luZmlsZSIpCi0gICAgICAgIHNyY2ZpbGUgPSBmcm9tbmFtZS5vdXRwdXQKLSAgICAgICAgc2VhcmNocGF0aCA9IHNlbGYuYmJwYXRoLnNwbGl0KCc6JykgKyBbb3MucGF0aC5kaXJuYW1lKHJlY2lwZXRvb2wub3V0cHV0KV0KLSAgICAgICAgcGx1Z2luY29udGVudCA9IFtdCi0gICAgICAgIHdpdGggb3BlbihzcmNmaWxlKSBhcyBmaDoKLSAgICAgICAgICAgIHBsdWdpbmNvbnRlbnQgPSBmaC5yZWFkbGluZXMoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdtZXRhLXNlbGZ0ZXN0Jywgc3JjZmlsZSwgJ3dyb25nIGJicGF0aCBwbHVnaW4gZm91bmQnKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aDoKLSAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aF9jbGVhbnVwKHNyY2ZpbGUsIHBhdGgsICdsaWInLCAncmVjaXBldG9vbCcpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoInJlY2lwZXRvb2wgLS1xdWlldCBjb3VudCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICcxJykKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgicmVjaXBldG9vbCAtLXF1aWV0IG11bHRpbG9hZGVkIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgIm5vIikKLSAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGg6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJyZWNpcGV0b29sIC0tcXVpZXQgYmJkaXIiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgcGF0aCkKLSAgICAgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHJlc3VsdC5vdXRwdXQsICdsaWInLCAncmVjaXBldG9vbCcsICdiYnBhdGgucHknKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHdpdGggb3BlbihzcmNmaWxlLCAndycpIGFzIGZoOgotICAgICAgICAgICAgICAgIGZoLndyaXRlbGluZXMocGx1Z2luY29udGVudCkKLQotCi1jbGFzcyBSZWNpcGV0b29sQXBwZW5kc3JjQmFzZShSZWNpcGV0b29sQmFzZSk6Ci0gICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlLCBvcHRpb25zLCBleHBlY3RlZGxpbmVzLCBleHBlY3RlZGZpbGVzKToKLSAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kc3JjZmlsZSAlcyAlcyAlcyAlcyAlcycgJSAob3B0aW9ucywgc2VsZi50ZW1wbGF5ZXJkaXIsIHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RmaWxlKQotICAgICAgICByZXR1cm4gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kY21kKGNtZCwgdGVzdHJlY2lwZSwgZXhwZWN0ZWRmaWxlcywgZXhwZWN0ZWRsaW5lcykKLQotICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXMoc2VsZiwgdGVzdHJlY2lwZSwgbmV3ZmlsZXMsIGV4cGVjdGVkbGluZXM9Tm9uZSwgZXhwZWN0ZWRmaWxlcz1Ob25lLCBkZXN0ZGlyPU5vbmUsIG9wdGlvbnM9JycpOgotCi0gICAgICAgIGlmIGRlc3RkaXI6Ci0gICAgICAgICAgICBvcHRpb25zICs9ICcgLUQgJXMnICUgZGVzdGRpcgotCi0gICAgICAgIGlmIGV4cGVjdGVkZmlsZXMgaXMgTm9uZToKLSAgICAgICAgICAgIGV4cGVjdGVkZmlsZXMgPSBbb3MucGF0aC5iYXNlbmFtZShmKSBmb3IgZiBpbiBuZXdmaWxlc10KLQotICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRzcmNmaWxlcyAlcyAlcyAlcyAlcycgJSAob3B0aW9ucywgc2VsZi50ZW1wbGF5ZXJkaXIsIHRlc3RyZWNpcGUsICcgJy5qb2luKG5ld2ZpbGVzKSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGNtZChjbWQsIHRlc3RyZWNpcGUsIGV4cGVjdGVkZmlsZXMsIGV4cGVjdGVkbGluZXMpCi0KLSAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfZmFpbChzZWxmLCB0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0ZmlsZSwgY2hlY2tlcnJvcik6Ci0gICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZHNyY2ZpbGUgJXMgJXMgJXMgJXMnICUgKHNlbGYudGVtcGxheWVyZGlyLCB0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0ZmlsZSBvciAnJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdDb21tYW5kICIlcyIgc2hvdWxkIGhhdmUgZmFpbGVkIGJ1dCBkaWRuXCd0JyAlIGNtZCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVHJhY2ViYWNrJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgZm9yIGVycm9yc3RyIGluIGNoZWNrZXJyb3I6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGVycm9yc3RyLCByZXN1bHQub3V0cHV0KQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfZ2V0X2ZpcnN0X2ZpbGVfdXJpKHJlY2lwZSk6Ci0gICAgICAgICcnJ1JldHVybiB0aGUgZmlyc3QgZmlsZTovLyBpbiBTUkNfVVJJIGZvciB0aGUgc3BlY2lmaWVkIHJlY2lwZS4nJycKLSAgICAgICAgc3JjX3VyaSA9IGdldF9iYl92YXIoJ1NSQ19VUkknLCByZWNpcGUpLnNwbGl0KCkKLSAgICAgICAgZm9yIHVyaSBpbiBzcmNfdXJpOgotICAgICAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZSh1cmkpCi0gICAgICAgICAgICBpZiBwLnNjaGVtZSA9PSAnZmlsZSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHAubmV0bG9jICsgcC5wYXRoCi0KLSAgICBkZWYgX3Rlc3RfYXBwZW5kc3JjZmlsZShzZWxmLCB0ZXN0cmVjaXBlLCBmaWxlbmFtZT1Ob25lLCBkZXN0ZGlyPU5vbmUsIGhhc19zcmNfdXJpPVRydWUsIHNyY2Rpcj1Ob25lLCBuZXdmaWxlPU5vbmUsIG9wdGlvbnM9JycpOgotICAgICAgICBpZiBuZXdmaWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICBuZXdmaWxlID0gc2VsZi50ZXN0ZmlsZQotCi0gICAgICAgIGlmIHNyY2RpcjoKLSAgICAgICAgICAgIGlmIGRlc3RkaXI6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3ViZGlyID0gb3MucGF0aC5qb2luKHNyY2RpciwgZGVzdGRpcikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3ViZGlyID0gc3JjZGlyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcHRpb25zICs9ICIgLVciCi0gICAgICAgICAgICBleHBlY3RlZF9zdWJkaXIgPSBkZXN0ZGlyCi0KLSAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICBpZiBkZXN0ZGlyOgotICAgICAgICAgICAgICAgIGRlc3RwYXRoID0gb3MucGF0aC5qb2luKGRlc3RkaXIsIGZpbGVuYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZXN0cGF0aCA9IGZpbGVuYW1lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobmV3ZmlsZSkKLSAgICAgICAgICAgIGlmIGRlc3RkaXI6Ci0gICAgICAgICAgICAgICAgZGVzdHBhdGggPSBkZXN0ZGlyICsgb3Muc2VwCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlc3RwYXRoID0gJy4nICsgb3Muc2VwCi0KLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICBpZiBoYXNfc3JjX3VyaToKLSAgICAgICAgICAgIHVyaSA9ICdmaWxlOi8vJXMnICUgZmlsZW5hbWUKLSAgICAgICAgICAgIGlmIGV4cGVjdGVkX3N1YmRpcjoKLSAgICAgICAgICAgICAgICB1cmkgKz0gJztzdWJkaXI9JXMnICUgZXhwZWN0ZWRfc3ViZGlyCi0gICAgICAgICAgICBleHBlY3RlZGxpbmVzWzA6MF0gPSBbJ1NSQ19VUkkgKz0gIiVzIlxuJyAlIHVyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotCi0gICAgICAgIHJldHVybiBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsIG5ld2ZpbGUsIGRlc3RwYXRoLCBvcHRpb25zLCBleHBlY3RlZGxpbmVzLCBbZmlsZW5hbWVdKQotCi0gICAgZGVmIF90ZXN0X2FwcGVuZHNyY2ZpbGVzKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGVzLCBleHBlY3RlZGZpbGVzPU5vbmUsIGRlc3RkaXI9Tm9uZSwgb3B0aW9ucz0nJyk6Ci0gICAgICAgIGlmIGV4cGVjdGVkZmlsZXMgaXMgTm9uZToKLSAgICAgICAgICAgIGV4cGVjdGVkZmlsZXMgPSBbb3MucGF0aC5iYXNlbmFtZShuKSBmb3IgbiBpbiBuZXdmaWxlc10KLQotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlcyh0ZXN0cmVjaXBlLCBuZXdmaWxlcywgZXhwZWN0ZWRmaWxlcz1leHBlY3RlZGZpbGVzLCBkZXN0ZGlyPWRlc3RkaXIsIG9wdGlvbnM9b3B0aW9ucykKLQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTUkNfVVJJJywgJ0ZJTEUnLCAnRklMRVNFWFRSQVBBVEhTJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10uc3BsaXQoKQotICAgICAgICBmb3IgZiBpbiBleHBlY3RlZGZpbGVzOgotICAgICAgICAgICAgaWYgZGVzdGRpcjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlOi8vJXM7c3ViZGlyPSVzJyAlIChmLCBkZXN0ZGlyKSwgc3JjX3VyaSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZTovLyVzJyAlIGYsIHNyY191cmkpCi0KLSAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQotICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBzZWxmLnRlbXBsYXllcmRpcikKLSAgICAgICAgZmlsZXNkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGJiYXBwZW5kZmlsZSksIHRlc3RyZWNpcGUpCi0gICAgICAgIGZpbGVzZXh0cmFwYXRocyA9IGJiX3ZhcnNbJ0ZJTEVTRVhUUkFQQVRIUyddLnNwbGl0KCc6JykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihmaWxlc2RpciwgZmlsZXNleHRyYXBhdGhzKQotCi0KLQotCi1jbGFzcyBSZWNpcGV0b29sQXBwZW5kc3JjVGVzdHMoUmVjaXBldG9vbEFwcGVuZHNyY0Jhc2UpOgotCi0gICAgQHRlc3RjYXNlKDEyNzMpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2Jhc2ljKHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUoJ2Jhc2UtZmlsZXMnLCAnYS1maWxlJykKLQotICAgIEB0ZXN0Y2FzZSgxMjc0KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9iYXNpY193aWxkY2FyZChzZWxmKToKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNlLWZpbGVzJwotICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgJ2EtZmlsZScsIG9wdGlvbnM9Jy13JykKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBzZWxmLnRlbXBsYXllcmRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKGJiYXBwZW5kZmlsZSksICclc18lJS5iYmFwcGVuZCcgJSB0ZXN0cmVjaXBlKQotCi0gICAgQHRlc3RjYXNlKDEyODEpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX3N1YmRpcl9iYXNpYyhzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKCdiYXNlLWZpbGVzJywgJ2EtZmlsZScsICd0bXAnKQotCi0gICAgQHRlc3RjYXNlKDEyODIpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX3N1YmRpcl9iYXNpY19kaXJkZXN0KHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUoJ2Jhc2UtZmlsZXMnLCBkZXN0ZGlyPSd0bXAnKQotCi0gICAgQHRlc3RjYXNlKDEyODApCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX3NyY2Rpcl9iYXNpYyhzZWxmKToKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNoJwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTJywgJ1dPUktESVInXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgc3JjZGlyID0gYmJfdmFyc1snUyddCi0gICAgICAgIHdvcmtkaXIgPSBiYl92YXJzWydXT1JLRElSJ10KLSAgICAgICAgc3ViZGlyID0gb3MucGF0aC5yZWxwYXRoKHNyY2Rpciwgd29ya2RpcikKLSAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsICdhLWZpbGUnLCBzcmNkaXI9c3ViZGlyKQotCi0gICAgQHRlc3RjYXNlKDEyNzUpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2V4aXN0aW5nX2luX3NyY191cmkoc2VsZik6Ci0gICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzZS1maWxlcycKLSAgICAgICAgZmlsZXBhdGggPSBzZWxmLl9nZXRfZmlyc3RfZmlsZV91cmkodGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVwYXRoLCAnVW5hYmxlIHRvIHRlc3QsIG5vIGZpbGU6Ly8gdXJpIGZvdW5kIGluIFNSQ19VUkkgZm9yICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCBmaWxlcGF0aCwgaGFzX3NyY191cmk9RmFsc2UpCi0KLSAgICBAdGVzdGNhc2UoMTI3NikKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfZXhpc3RpbmdfaW5fc3JjX3VyaV9kaWZmX3BhcmFtcyhzZWxmKToKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNlLWZpbGVzJwotICAgICAgICBzdWJkaXIgPSAndG1wJwotICAgICAgICBmaWxlcGF0aCA9IHNlbGYuX2dldF9maXJzdF9maWxlX3VyaSh0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZXBhdGgsICdVbmFibGUgdG8gdGVzdCwgbm8gZmlsZTovLyB1cmkgZm91bmQgaW4gU1JDX1VSSSBmb3IgJXMnICUgdGVzdHJlY2lwZSkKLQotICAgICAgICBvdXRwdXQgPSBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgZmlsZXBhdGgsIHN1YmRpciwgaGFzX3NyY191cmk9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoJ3dpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMnIGluIGwgZm9yIGwgaW4gb3V0cHV0KSkKLQotICAgIEB0ZXN0Y2FzZSgxMjc3KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9yZXBsYWNlX2ZpbGVfc3JjZGlyKHNlbGYpOgotICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2gnCi0gICAgICAgIGZpbGVwYXRoID0gJ01ha2VmaWxlLmluJwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTJywgJ1dPUktESVInXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgc3JjZGlyID0gYmJfdmFyc1snUyddCi0gICAgICAgIHdvcmtkaXIgPSBiYl92YXJzWydXT1JLRElSJ10KLSAgICAgICAgc3ViZGlyID0gb3MucGF0aC5yZWxwYXRoKHNyY2Rpciwgd29ya2RpcikKLQotICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgZmlsZXBhdGgsIHNyY2Rpcj1zdWJkaXIpCi0gICAgICAgIGJpdGJha2UoJyVzOmRvX3VucGFjaycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW4oc2VsZi50ZXN0ZmlsZSwgJ3InKS5yZWFkKCksIG9wZW4ob3MucGF0aC5qb2luKHNyY2RpciwgZmlsZXBhdGgpLCAncicpLnJlYWQoKSkKLQotICAgIEB0ZXN0Y2FzZSgxMjc4KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXNfYmFzaWMoc2VsZiwgZGVzdGRpcj1Ob25lKToKLSAgICAgICAgbmV3ZmlsZXMgPSBbc2VsZi50ZXN0ZmlsZV0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgNSk6Ci0gICAgICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICd0ZXN0ZmlsZSVkJyAlIGkpCi0gICAgICAgICAgICB3aXRoIG9wZW4odGVzdGZpbGUsICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCdUZXN0IGZpbGUgJWRcbicgJSBpKQotICAgICAgICAgICAgbmV3ZmlsZXMuYXBwZW5kKHRlc3RmaWxlKQotICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGVzKCdnY2MnLCBuZXdmaWxlcywgZGVzdGRpcj1kZXN0ZGlyLCBvcHRpb25zPSctVycpCi0KLSAgICBAdGVzdGNhc2UoMTI3OSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzX2Jhc2ljX3N1YmRpcihzZWxmKToKLSAgICAgICAgc2VsZi50ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXNfYmFzaWMoZGVzdGRpcj0ndGVzdGRpcicpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9ydW5xZW11LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcnVucWVtdS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThjNmY5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9ydW5xZW11LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIwotCi1pbXBvcnQgcmUKLWltcG9ydCBsb2dnaW5nCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIHJ1bnFlbXUsIGdldF9iYl92YXIKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBSdW5xZW11VGVzdHMob2VTZWxmVGVzdCk6Ci0gICAgIiIiUnVucWVtdSB0ZXN0IGNsYXNzIiIiCi0KLSAgICBpbWFnZV9pc19yZWFkeSA9IEZhbHNlCi0gICAgZGVwbG95X2Rpcl9pbWFnZSA9ICcnCi0KLSAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKLSAgICAgICAgc2VsZi5yZWNpcGUgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBzZWxmLm1hY2hpbmUgPSAgJ3FlbXV4ODYtNjQnCi0gICAgICAgIHNlbGYuZnN0eXBlcyA9ICJleHQ0IGlzbyBoZGRpbWcgdm1kayBxY293MiB2ZGkiCi0gICAgICAgIHNlbGYuY21kX2NvbW1vbiA9ICJydW5xZW11IG5vZ3JhcGhpYyIKLQotICAgICAgICAjIEF2b2lkIGVtaXQgdGhlIHNhbWUgcmVjb3JkIG11bHRpcGxlIHRpbWVzLgotICAgICAgICBtYWlubG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuTWFpbiIpCi0gICAgICAgIG1haW5sb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygKLSIiIgotTUFDSElORSA9ICIlcyIKLUlNQUdFX0ZTVFlQRVMgPSAiJXMiCi0jIDEwIG1lYW5zIDEgc2Vjb25kCi1TWVNMSU5VWF9USU1FT1VUID0gIjEwIgotIiIiCi0lIChzZWxmLm1hY2hpbmUsIHNlbGYuZnN0eXBlcykKLSAgICAgICAgKQotCi0gICAgICAgIGlmIG5vdCBSdW5xZW11VGVzdHMuaW1hZ2VfaXNfcmVhZHk6Ci0gICAgICAgICAgICBSdW5xZW11VGVzdHMuZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQotICAgICAgICAgICAgYml0YmFrZShzZWxmLnJlY2lwZSkKLSAgICAgICAgICAgIFJ1bnFlbXVUZXN0cy5pbWFnZV9pc19yZWFkeSA9IFRydWUKLQotICAgIEB0ZXN0Y2FzZSgyMDAxKQotICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUiIiIKLSAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDIpCi0gICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lX2V4dDQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIGV4dDQiIiIKLSAgICAgICAgY21kID0gIiVzICVzIGV4dDQiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncm9vdGZzLmV4dDQnIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwMykKLSAgICBkZWYgdGVzdF9ib290X21hY2hpbmVfaXNvKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSBpc28iIiIKLSAgICAgICAgY21kID0gIiVzICVzIGlzbyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcgLWNkcm9tICcgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDA0KQotICAgIGRlZiB0ZXN0X2Jvb3RfcmVjaXBlX2ltYWdlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgcmVjaXBlLWltYWdlIiIiCi0gICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnJlY2lwZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDUpCi0gICAgZGVmIHRlc3RfYm9vdF9yZWNpcGVfaW1hZ2Vfdm1kayhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IHJlY2lwZS1pbWFnZSB2bWRrIiIiCi0gICAgICAgIGNtZCA9ICIlcyAlcyB2bWRrIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYucmVjaXBlKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9ybWF0PXZtZGsnIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwNikKLSAgICBkZWYgdGVzdF9ib290X3JlY2lwZV9pbWFnZV92ZGkoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSByZWNpcGUtaW1hZ2UgdmRpIiIiCi0gICAgICAgIGNtZCA9ICIlcyAlcyB2ZGkiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5yZWNpcGUpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmb3JtYXQ9dmRpJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDcpCi0gICAgZGVmIHRlc3RfYm9vdF9kZXBsb3koc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSBkZXBsb3lfZGlyX2ltYWdlIiIiCi0gICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLmRlcGxveV9kaXJfaW1hZ2UpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDA4KQotICAgIGRlZiB0ZXN0X2Jvb3RfZGVwbG95X2hkZGltZyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IGRlcGxveV9kaXJfaW1hZ2UgaGRkaW1nIiIiCi0gICAgICAgIGNtZCA9ICIlcyAlcyBoZGRpbWciICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5kZXBsb3lfZGlyX2ltYWdlKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2goJ2ZpbGU9LiouaGRkaW1nJywgZi5yZWFkKCkpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwOSkKLSAgICBkZWYgdGVzdF9ib290X21hY2hpbmVfc2xpcnAoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIHNsaXJwIiIiCi0gICAgICAgIGNtZCA9ICIlcyBzbGlycCAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcgLW5ldGRldiB1c2VyJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDkpCi0gICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lX3NsaXJwX3Fjb3cyKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSBzbGlycCBxY293MiIiIgotICAgICAgICBjbWQgPSAiJXMgc2xpcnAgcWNvdzIgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9ybWF0PXFjb3cyJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMTApCi0gICAgZGVmIHRlc3RfYm9vdF9xZW11X2Jvb3Qoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSAvcGF0aC90by9pbWFnZS5xZW11Ym9vdC5jb25mIiIiCi0gICAgICAgIHFlbXVib290X2NvbmYgPSAiJXMtJXMucWVtdWJvb3QuY29uZiIgJSAoc2VsZi5yZWNpcGUsIHNlbGYubWFjaGluZSkKLSAgICAgICAgcWVtdWJvb3RfY29uZiA9IG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXJfaW1hZ2UsIHFlbXVib290X2NvbmYpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhxZW11Ym9vdF9jb25mKToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIiVzIG5vdCBmb3VuZCIgJSBxZW11Ym9vdF9jb25mKQotICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgcWVtdWJvb3RfY29uZikKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMTEpCi0gICAgZGVmIHRlc3RfYm9vdF9yb290ZnMoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSAvcGF0aC90by9yb290ZnMuZXh0NCIiIgotICAgICAgICByb290ZnMgPSAiJXMtJXMuZXh0NCIgJSAoc2VsZi5yZWNpcGUsIHNlbGYubWFjaGluZSkKLSAgICAgICAgcm9vdGZzID0gb3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2Rpcl9pbWFnZSwgcm9vdGZzKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocm9vdGZzKToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIiVzIG5vdCBmb3VuZCIgJSByb290ZnMpCi0gICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCByb290ZnMpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3J1bnRpbWUtdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3J1bnRpbWUtdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ5OGQwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9ydW50aW1lLXRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMzcgKzAsMCBAQAotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycywgcnVucWVtdQotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi1pbXBvcnQgb3MKLWltcG9ydCByZQotCi1jbGFzcyBUZXN0RXhwb3J0KG9lU2VsZlRlc3QpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgcnVuQ21kKCJybSAtcmYgL3RtcC9zZGsiKQotCi0gICAgZGVmIHRlc3RfdGVzdGV4cG9ydF9iYXNpYyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6IENoZWNrIGJhc2ljIHRlc3RleHBvcnQgZnVuY3Rpb25hbGl0eSB3aXRoIG9ubHkgcGluZyB0ZXN0IGVuYWJsZWQuCi0gICAgICAgIEV4cGVjdGVkOiAxLiB0ZXN0ZXhwb3J0IGRpcmVjdG9yeSBtdXN0IGJlIGNyZWF0ZWQuCi0gICAgICAgICAgICAgICAgICAyLiBydW5leHBvcnRlZC5weSBtdXN0IHJ1biB3aXRob3V0IGFueSBlcnJvci9leGNlcHRpb24uCi0gICAgICAgICAgICAgICAgICAzLiBwaW5nIHRlc3QgbXVzdCBzdWNjZWVkLgotICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RleHBvcnQiXG4nCi0gICAgICAgICMgVGhlc2UgYXJlbid0IHRoZSBhY3R1YWwgSVAgYWRkcmVzc2VzIGJ1dCB0ZXN0ZXhwb3J0IGNsYXNzIG5lZWRzIHNvbWV0aGluZyBkZWZpbmVkCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NFUlZFUl9JUCA9ICIxOTIuMTY4LjcuMSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguNy4xIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgIyBCdWlsZCB0ZXNleHBvcnQgZm9yIGNvcmUtaW1hZ2UtbWluaW1hbAotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBiaXRiYWtlKCctYyB0ZXN0ZXhwb3J0IGNvcmUtaW1hZ2UtbWluaW1hbCcpCi0KLSAgICAgICAgdGVzdGV4cG9ydF9kaXIgPSBnZXRfYmJfdmFyKCdURVNUX0VYUE9SVF9ESVInLCAnY29yZS1pbWFnZS1taW5pbWFsJykKLQotICAgICAgICAjIFZlcmlmeSBpZiBURVNUX0VYUE9SVF9ESVIgd2FzIGNyZWF0ZWQKLSAgICAgICAgaXNkaXIgPSBvcy5wYXRoLmlzZGlyKHRlc3RleHBvcnRfZGlyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlzZGlyLCAnRmFpbGVkIHRvIGNyZWF0ZSB0ZXN0ZXhwb3J0IGRpcjogJXMnICUgdGVzdGV4cG9ydF9kaXIpCi0KLSAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgotICAgICAgICAgICAgIyBBdHRlbXB0IHRvIHJ1biBydW5leHBvcnRlZC5weSB0byBwZXJmb3JtIHBpbmcgdGVzdAotICAgICAgICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAib2UtdGVzdCIpCi0gICAgICAgICAgICBkYXRhX2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsICdkYXRhJywgJ3Rlc3RkYXRhLmpzb24nKQotICAgICAgICAgICAgbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsICdkYXRhJywgJ21hbmlmZXN0JykKLSAgICAgICAgICAgIGNtZCA9ICgiJXMgcnVudGltZSAtLXRlc3QtZGF0YS1maWxlICVzIC0tcGFja2FnZXMtbWFuaWZlc3QgJXMgIgotICAgICAgICAgICAgICAgICAgICItLXRhcmdldC1pcCAlcyAtLXNlcnZlci1pcCAlcyAtLXF1aWV0IgotICAgICAgICAgICAgICAgICAgJSAodGVzdF9wYXRoLCBkYXRhX2ZpbGUsIG1hbmlmZXN0LCBxZW11LmlwLCBxZW11LnNlcnZlcl9pcCkpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kKQotICAgICAgICAgICAgIyBWZXJpZnkgcGluZyB0ZXN0IHdhcyBzdWNjZXNmdWwKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgJ29lLXRlc3QgcnVudGltZSByZXR1cm5lZCBhIG5vbiAwIHN0YXR1cycpCi0KLSAgICBkZWYgdGVzdF90ZXN0ZXhwb3J0X3NkayhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6IENoZWNrIHNkayBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0ZXhwb3J0LgotICAgICAgICBFeHBlY3RlZDogMS4gdGVzdGV4cG9ydCBkaXJlY3RvcnkgbXVzdCBiZSBjcmVhdGVkLgotICAgICAgICAgICAgICAgICAgMi4gU0RLIHRhcmJhbGwgbXVzdCBleGlzdHMuCi0gICAgICAgICAgICAgICAgICAzLiBVbmNvbXByZXNzaW5nIG9mIHRhcmJhbGwgbXVzdCBzdWNjZWVkLgotICAgICAgICAgICAgICAgICAgNC4gQ2hlY2sgaWYgdGhlIFNESyBkaXJlY3RvcnkgaXMgYWRkZWQgdG8gUEFUSC4KLSAgICAgICAgICAgICAgICAgIDUuIFJ1biB0YXIgZnJvbSB0aGUgU0RLIGRpcmVjdG9yeS4KLSAgICAgICAgUHJvZHVjdDogb2UtY29yZQotICAgICAgICBBdXRob3I6IE1hcmlhbm8gTG9wZXogPG1hcmlhbm8ubG9wZXpAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0ZXhwb3J0IlxuJwotICAgICAgICAjIFRoZXNlIGFyZW4ndCB0aGUgYWN0dWFsIElQIGFkZHJlc3NlcyBidXQgdGVzdGV4cG9ydCBjbGFzcyBuZWVkcyBzb21ldGhpbmcgZGVmaW5lZAotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TRVJWRVJfSVAgPSAiMTkyLjE2OC43LjEiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1RBUkdFVF9JUCA9ICIxOTIuMTY4LjcuMSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU1VJVEVTID0gInBpbmciXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX0VYUE9SVF9TREtfRU5BQkxFRCA9ICIxIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9FWFBPUlRfU0RLX1BBQ0tBR0VTID0gIm5hdGl2ZXNkay10YXIiXG4nCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgICMgQnVpbGQgdGVzZXhwb3J0IGZvciBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgYml0YmFrZSgnLWMgdGVzdGV4cG9ydCBjb3JlLWltYWdlLW1pbmltYWwnKQotCi0gICAgICAgIG5lZWRlZF92YXJzID0gWydURVNUX0VYUE9SVF9ESVInLCAnVEVTVF9FWFBPUlRfU0RLX0RJUicsICdURVNUX0VYUE9SVF9TREtfTkFNRSddCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhuZWVkZWRfdmFycywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIHRlc3RleHBvcnRfZGlyID0gYmJfdmFyc1snVEVTVF9FWFBPUlRfRElSJ10KLSAgICAgICAgc2RrX2RpciA9IGJiX3ZhcnNbJ1RFU1RfRVhQT1JUX1NES19ESVInXQotICAgICAgICBzZGtfbmFtZSA9IGJiX3ZhcnNbJ1RFU1RfRVhQT1JUX1NES19OQU1FJ10KLQotICAgICAgICAjIENoZWNrIGZvciBTREsKLSAgICAgICAgdGFyYmFsbF9uYW1lID0gIiVzLnNoIiAlIHNka19uYW1lCi0gICAgICAgIHRhcmJhbGxfcGF0aCA9IG9zLnBhdGguam9pbih0ZXN0ZXhwb3J0X2Rpciwgc2RrX2RpciwgdGFyYmFsbF9uYW1lKQotICAgICAgICBtc2cgPSAiQ291bGRuJ3QgZmluZCBTREsgdGFyYmFsbDogJXMiICUgdGFyYmFsbF9wYXRoCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5pc2ZpbGUodGFyYmFsbF9wYXRoKSwgVHJ1ZSwgbXNnKQotCi0gICAgICAgICMgRXh0cmFjdCBTREsgYW5kIHJ1biB0YXIgZnJvbSBTREsKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCIlcyAteSAtZCAvdG1wL3NkayIgJSB0YXJiYWxsX3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgIkNvdWxkbid0IGV4dHJhY3QgU0RLIikKLQotICAgICAgICBlbnZfc2NyaXB0ID0gcmVzdWx0Lm91dHB1dC5zcGxpdCgpWy0xXQotICAgICAgICByZXN1bHQgPSBydW5DbWQoIi4gJXM7IHdoaWNoIHRhciIgJSBlbnZfc2NyaXB0LCBzaGVsbD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJDb3VsZG4ndCBzZXR1cCBTREsgZW52aXJvbm1lbnQiKQotICAgICAgICBpc19zZGtfdGFyID0gVHJ1ZSBpZiAiL3RtcC9zZGsiIGluIHJlc3VsdC5vdXRwdXQgZWxzZSBGYWxzZQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfc2RrX3RhciwgIkNvdWxkbid0IHNldHVwIFNESyBlbnZpcm9ubWVudCIpCi0KLSAgICAgICAgdGFyX3NkayA9IHJlc3VsdC5vdXRwdXQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCIlcyAtLXZlcnNpb24iICUgdGFyX3NkaykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiQ291bGRuJ3QgcnVuIHRhciBmcm9tIFNESyIpCi0KLQotY2xhc3MgVGVzdEltYWdlKG9lU2VsZlRlc3QpOgotCi0gICAgZGVmIHRlc3RfdGVzdGltYWdlX2luc3RhbGwoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiBDaGVjayBpbnN0YWxsIHBhY2thZ2VzIGZ1bmN0aW9uYWxpdHkgZm9yIHRlc3RpbWFnZS90ZXN0ZXhwb3J0LgotICAgICAgICBFeHBlY3RlZDogMS4gSW1wb3J0IHRlc3RzIGZyb20gYSBkaXJlY3Rvcnkgb3RoZXIgdGhhbiBtZXRhLgotICAgICAgICAgICAgICAgICAgMi4gQ2hlY2sgaW5zdGFsbC91bmluc3RhbGwgb2Ygc29jYXQuCi0gICAgICAgICAgICAgICAgICAzLiBDaGVjayB0aGF0IHJlbW90ZSBwYWNrYWdlIGZlZWRzIGNhbiBiZSBhY2Nlc3NlZAotICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20+Ci0gICAgICAgIEF1dGhvcjogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGdldF9iYl92YXIoJ0RJU1RSTycpID09ICdwb2t5LXRpbnknOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgbm90IGJ1aWxkYWJsZSBmb3IgcG9reS10aW55JykKLQotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIHNzaCBzZWxmdGVzdCJcbicKLSAgICAgICAgIyBXZSBkb24ndCB5ZXQga25vdyB3aGF0IHRoZSBzZXJ2ZXIgaXAgYW5kIHBvcnQgd2lsbCBiZSAtIHRoZXkgd2lsbCBiZSBwYXRjaGVkCi0gICAgICAgICMgaW4gYXQgdGhlIHN0YXJ0IG9mIHRoZSBvbi1pbWFnZSB0ZXN0Ci0gICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0ZFRURfVVJJUyA9ICJodHRwOi8vYm9ndXNfaXA6Ym9ndXNfcG9ydCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTICs9ICJwYWNrYWdlLW1hbmFnZW1lbnQiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV9ycG0iJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICAjIEJ1aWxkIGNvcmUtaW1hZ2Utc2F0byBhbmQgdGVzdGltYWdlCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lIHNvY2F0JykKLSAgICAgICAgYml0YmFrZSgnLWMgdGVzdGltYWdlIGNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lJykKLQotY2xhc3MgUG9zdGluc3Qob2VTZWxmVGVzdCk6Ci0gICAgQHRlc3RjYXNlKDE1NDApCi0gICAgZGVmIHRlc3RfdmVyaWZ5X3Bvc3RpbnN0KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGlzIHRvIHZlcmlmeSB0aGUgZXhlY3V0aW9uIG9yZGVyIG9mIHBvc3RpbnN0IEJ1Z3ppbGxhIElEOiBbNTMxOV0KLSAgICAgICAgRXhwZWN0ZWQgOgotICAgICAgICAxLiBDb21waWxlIGEgbWluaW1hbCBpbWFnZS4KLSAgICAgICAgMi4gVGhlIGNvbXBpbGVkIGltYWdlIHdpbGwgYWRkIHRoZSBjcmVhdGVkIGxheWVyIHdpdGggdGhlIHJlY2lwZXMgcG9zdGluc3RbIGFiZHB0XQotICAgICAgICAzLiBSdW4gcWVtdXg4NgotICAgICAgICA0LiBWYWxpZGF0ZSB0aGUgdGFzayBleGVjdXRpb24gb3JkZXIKLSAgICAgICAgQXV0aG9yOiBGcmFuY2lzY28gUGVkcmF6YSA8ZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgKz0gInBvc3RpbnN0LWF0LXJvb3RmcyBcCi1wb3N0aW5zdC1kZWxheWVkLWEgXAotcG9zdGluc3QtZGVsYXllZC1iIFwKLXBvc3RpbnN0LWRlbGF5ZWQtZCBcCi1wb3N0aW5zdC1kZWxheWVkLXAgXAotcG9zdGluc3QtZGVsYXllZC10IFwKLSJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIC1mICcpCi0KLSAgICAgICAgcG9zdGluc3RfbGlzdCA9IFsnMTAwLXBvc3RpbnN0LWF0LXJvb3RmcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwMS1wb3N0aW5zdC1kZWxheWVkLWEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDItcG9zdGluc3QtZGVsYXllZC1iJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTAzLXBvc3RpbnN0LWRlbGF5ZWQtZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwNC1wb3N0aW5zdC1kZWxheWVkLXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDUtcG9zdGluc3QtZGVsYXllZC10J10KLSAgICAgICAgcGF0aF93b3JrZGlyID0gZ2V0X2JiX3ZhcignV09SS0RJUicsJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIHdvcmtzcGFjZWRpciA9ICd0ZXN0aW1hZ2UvcWVtdV9ib290X2xvZycKLSAgICAgICAgd29ya3NwYWNlZGlyID0gb3MucGF0aC5qb2luKHBhdGhfd29ya2Rpciwgd29ya3NwYWNlZGlyKQotICAgICAgICByZXhwID0gcmUuY29tcGlsZSgiXlJ1bm5pbmcgcG9zdGluc3QgLiovKD9QPHBvc3RpbnN0Pi4qKVwuXC5cLiQiKQotICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4od29ya3NwYWNlZGlyKSBhcyBmOgotICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZHggPSAwCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKS5yZXBsYWNlKCJeTSIsIiIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiAjIFRvIGF2b2lkIGVtcHR5IGxpbmVzCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBtID0gcmV4cC5zZWFyY2gobGluZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zdGluc3RfbGlzdFtpZHhdLCBtLmdyb3VwKCdwb3N0aW5zdCcpLCAiRmFpbCIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBpZHgrMQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZm91bmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkeCwgbGVuKHBvc3RpbnN0X2xpc3QpLCAiTm90IGZvdW5kIGFsbCBwb3N0aW5zdHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgIEB0ZXN0Y2FzZSgxNTQ1KQotICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgY2FzZSBpcyB0byB2ZXJpZnkgUG9zdC1pbnN0YWxsYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMgYXJlIGNhbGxlZCB3aGVuIHJvb3RmcyBpcyBjcmVhdGVkIGFuZCBhbHNvIHRlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2NyaXB0IGNhbiBiZSBkZWxheWVkIHRvIHJ1biBhdCBmaXJzdCBib290LgotICAgICAgICBEZXBlbmRlbmNpZXM6ICAgTkEKLSAgICAgICAgU3RlcHM6ICAgICAgICAgIDEuIEFkZCBwcm9wZXIgY29uZmlndXJhdGlvbiB0byBsb2NhbC5jb25mIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDIuIEJ1aWxkIGEgImNvcmUtaW1hZ2UtbWluaW1hbCIgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDMuIFZlcmlmeSB0aGF0IGZpbGUgY3JlYXRlZCBieSBwb3N0aW5zdF9yb290ZnMgcmVjaXBlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50IG9uIHJvb3RmcyBkaXIuCi0gICAgICAgICAgICAgICAgICAgICAgICA0LiBCb290IHRoZSBpbWFnZSBjcmVhdGVkIG9uIHFlbXUgYW5kIHZlcmlmeSB0aGF0IHRoZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IHBvc3RpbnN0X2Jvb3QgcmVjaXBlIGlzIHByZXNlbnQgb24gaW1hZ2UuCi0gICAgICAgIEV4cGVjdGVkOiAgICAgICBUaGUgZmlsZXMgYXJlIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGR1cmluZyByb290ZnMgYW5kIGJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgZm9yIDMgZGlmZmVyZW50IHBhY2thZ2UgbWFuYWdlcnM6IHJwbSxpcGssZGViIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluaXRpYWxpemF0aW9uIG1hbmFnZXJzOiBzeXN2aW5pdCBhbmQgc3lzdGVtZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgZmlsZV9yb290ZnNfbmFtZSA9ICJ0aGlzLXdhcy1jcmVhdGVkLWF0LXJvb3Rmc3RpbWUiCi0gICAgICAgIGZpbGVib290X25hbWUgPSAidGhpcy13YXMtY3JlYXRlZC1hdC1maXJzdC1ib290IgotICAgICAgICByb290ZnNfcGtnID0gJ3Bvc3RpbnN0LWF0LXJvb3RmcycKLSAgICAgICAgYm9vdF9wa2cgPSAncG9zdGluc3QtZGVsYXllZC1hJwotICAgICAgICAjU3RlcCAxCi0gICAgICAgIGZlYXR1cmVzID0gJ01BQ0hJTkUgPSAicWVtdXg4NiJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAiJXMgJXMgIlxuJyUgKHJvb3Rmc19wa2csIGJvb3RfcGtnKQotICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfRkVBVFVSRVMgKz0gInNzaC1zZXJ2ZXItb3BlbnNzaCJcbicKLSAgICAgICAgZm9yIGluaXRfbWFuYWdlciBpbiAoInN5c3Zpbml0IiwgInN5c3RlbWQiKToKLSAgICAgICAgICAgICNmb3Igc3lzdmluaXQgbm8gZXh0cmEgY29uZmlndXJhdGlvbiBpcyBuZWVkZWQsCi0gICAgICAgICAgICBpZiAoaW5pdF9tYW5hZ2VyIGlzICJzeXN0ZW1kIik6Ci0gICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHN5c3RlbWQiXG4nCi0gICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgPSAic3lzdGVtZCJcbicKLSAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgPSAic3lzdmluaXQiXG4nCi0gICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0c2NyaXB0cyA9ICIiXG4nCi0gICAgICAgICAgICBmb3IgY2xhc3NlcyBpbiAoInBhY2thZ2VfcnBtIHBhY2thZ2VfZGViIHBhY2thZ2VfaXBrIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2FnZV9kZWIgcGFja2FnZV9ycG0gcGFja2FnZV9pcGsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlX2lwayBwYWNrYWdlX2RlYiBwYWNrYWdlX3JwbSIpOgotICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAiJXMiXG4nICUgY2xhc3NlcwotICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgICAgICAgICAgI1N0ZXAgMgotICAgICAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0KLSAgICAgICAgICAgICAgICAjU3RlcCAzCi0gICAgICAgICAgICAgICAgZmlsZV9yb290ZnNfY3JlYXRlZCA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdJTUFHRV9ST09URlMnLCJjb3JlLWltYWdlLW1pbmltYWwiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcm9vdGZzX25hbWUpCi0gICAgICAgICAgICAgICAgZm91bmQgPSBvcy5wYXRoLmlzZmlsZShmaWxlX3Jvb3Rmc19jcmVhdGVkKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgIkZpbGUgJXMgd2FzIG5vdCBjcmVhdGVkIGF0IHJvb3RmcyB0aW1lIGJ5ICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVfcm9vdGZzX25hbWUsIHJvb3Rmc19wa2cpKQotCi0gICAgICAgICAgICAgICAgI1N0ZXAgNAotICAgICAgICAgICAgICAgIHRlc3Rjb21tYW5kID0gJ2xzIC9ldGMvJytmaWxlYm9vdF9uYW1lCi0gICAgICAgICAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgotICAgICAgICAgICAgICAgICAgICBzc2hhcmdzID0gJy1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vJwotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NzaCAlcyByb290QCVzICVzJyAlIChzc2hhcmdzLCBxZW11LmlwLCB0ZXN0Y29tbWFuZCkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ0ZpbGUgJXMgd2FzIG5vdCBjcmVhdGVkIGF0IGZpcnRzIGJvb3QnJSBmaWxlYm9vdF9uYW1lKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc2lnbmluZy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NpZ25pbmcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhYzNkMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc2lnbmluZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCi1pbXBvcnQgb3MKLWltcG9ydCBnbG9iCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCB0ZW1wZmlsZQotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi1mcm9tIG9lcWEudXRpbHMuZnRvb2xzIGltcG9ydCB3cml0ZV9maWxlCi0KLQotY2xhc3MgU2lnbmluZyhvZVNlbGZUZXN0KToKLQotICAgIGdwZ19kaXIgPSAiIgotICAgIHB1Yl9rZXlfcGF0aCA9ICIiCi0gICAgc2VjcmV0X2tleV9wYXRoID0gIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBjYW4gZmluZCB0aGUgZ3BnIGJpbmFyeSBhbmQgZmFpbCBlYXJseSBpZiB3ZSBjYW4ndAotICAgICAgICBpZiBub3Qgc2h1dGlsLndoaWNoKCJncGciKToKLSAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJUaGlzIHRlc3QgbmVlZHMgR251UEciKQotCi0gICAgICAgIGNscy5ncGdfaG9tZV9kaXIgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSJvZXFhLXNpZ25pbmctIikKLSAgICAgICAgY2xzLmdwZ19kaXIgPSBjbHMuZ3BnX2hvbWVfZGlyLm5hbWUKLQotICAgICAgICBjbHMucHViX2tleV9wYXRoID0gb3MucGF0aC5qb2luKGNscy50ZXN0bGF5ZXJfcGF0aCwgJ2ZpbGVzJywgJ3NpZ25pbmcnLCAia2V5LnB1YiIpCi0gICAgICAgIGNscy5zZWNyZXRfa2V5X3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRlc3RsYXllcl9wYXRoLCAnZmlsZXMnLCAnc2lnbmluZycsICJrZXkuc2VjcmV0IikKLQotICAgICAgICBydW5DbWQoJ2dwZyAtLWJhdGNoIC0taG9tZWRpciAlcyAtLWltcG9ydCAlcyAlcycgJSAoY2xzLmdwZ19kaXIsIGNscy5wdWJfa2V5X3BhdGgsIGNscy5zZWNyZXRfa2V5X3BhdGgpKQotCi0gICAgQHRlc3RjYXNlKDEzNjIpCi0gICAgZGVmIHRlc3Rfc2lnbmluZ19wYWNrYWdlcyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgcGFja2FnZXMgY2FuIGJlIHNpZ25lZCBpbiB0aGUgcGFja2FnZSBmZWVkCi0gICAgICAgIEV4cGVjdGVkOiAgICBQYWNrYWdlIHNob3VsZCBiZSBzaWduZWQgd2l0aCB0aGUgY29ycmVjdCBrZXkKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIEltYWdlcyBjYW4gYmUgY3JlYXRlZCBmcm9tIHNpZ25lZCBwYWNrYWdlcwotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCBvZS5wYWNrYWdlZGF0YQotCi0gICAgICAgIHBhY2thZ2VfY2xhc3NlcyA9IGdldF9iYl92YXIoJ1BBQ0tBR0VfQ0xBU1NFUycpCi0gICAgICAgIGlmICdwYWNrYWdlX3JwbScgbm90IGluIHBhY2thZ2VfY2xhc3NlczoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1RoaXMgdGVzdCByZXF1aXJlcyBSUE0gUGFja2FnaW5nLicpCi0KLSAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCi0KLSAgICAgICAgZmVhdHVyZSA9ICdJTkhFUklUICs9ICJzaWduX3JwbSJcbicKLSAgICAgICAgZmVhdHVyZSArPSAnUlBNX0dQR19QQVNTUEhSQVNFID0gInRlc3QxMjMiXG4nCi0gICAgICAgIGZlYXR1cmUgKz0gJ1JQTV9HUEdfTkFNRSA9ICJ0ZXN0dXNlciJcbicKLSAgICAgICAgZmVhdHVyZSArPSAnR1BHX1BBVEggPSAiJXMiXG4nICUgc2VsZi5ncGdfZGlyCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZSkKLQotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKLSAgICAgICAgYml0YmFrZSgnLWYgLWMgcGFja2FnZV93cml0ZV9ycG0gJXMnICUgdGVzdF9yZWNpcGUpCi0KLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKLQotICAgICAgICBuZWVkZWRfdmFycyA9IFsnUEtHREFUQV9ESVInLCAnREVQTE9ZX0RJUl9SUE0nLCAnUEFDS0FHRV9BUkNIJywgJ1NUQUdJTkdfQklORElSX05BVElWRSddCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhuZWVkZWRfdmFycywgdGVzdF9yZWNpcGUpCi0gICAgICAgIHBrZ2RhdGFkaXIgPSBiYl92YXJzWydQS0dEQVRBX0RJUiddCi0gICAgICAgIHBrZ2RhdGEgPSBvZS5wYWNrYWdlZGF0YS5yZWFkX3BrZ2RhdGFmaWxlKHBrZ2RhdGFkaXIgKyAiL3J1bnRpbWUvZWQiKQotICAgICAgICBpZiAnUEtHRScgaW4gcGtnZGF0YToKLSAgICAgICAgICAgIHBmID0gcGtnZGF0YVsnUE4nXSArICItIiArIHBrZ2RhdGFbJ1BLR0UnXSArIHBrZ2RhdGFbJ1BLR1YnXSArICctJyArIHBrZ2RhdGFbJ1BLR1InXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGYgPSBwa2dkYXRhWydQTiddICsgIi0iICsgcGtnZGF0YVsnUEtHViddICsgJy0nICsgcGtnZGF0YVsnUEtHUiddCi0gICAgICAgIGRlcGxveV9kaXJfcnBtID0gYmJfdmFyc1snREVQTE9ZX0RJUl9SUE0nXQotICAgICAgICBwYWNrYWdlX2FyY2ggPSBiYl92YXJzWydQQUNLQUdFX0FSQ0gnXS5yZXBsYWNlKCctJywgJ18nKQotICAgICAgICBzdGFnaW5nX2JpbmRpcl9uYXRpdmUgPSBiYl92YXJzWydTVEFHSU5HX0JJTkRJUl9OQVRJVkUnXQotCi0gICAgICAgIHBrZ19kZXBsb3kgPSBvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9ycG0sIHBhY2thZ2VfYXJjaCwgJy4nLmpvaW4oKHBmLCBwYWNrYWdlX2FyY2gsICdycG0nKSkpCi0KLSAgICAgICAgIyBVc2UgYSB0ZW1wb3JhcnkgcnBtZGIKLSAgICAgICAgcnBtZGIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nb2VxYS1ycG1kYicpCi0KLSAgICAgICAgcnVuQ21kKCclcy9ycG1rZXlzIC0tZGVmaW5lICJfZGJwYXRoICVzIiAtLWltcG9ydCAlcycgJQotICAgICAgICAgICAgICAgKHN0YWdpbmdfYmluZGlyX25hdGl2ZSwgcnBtZGIsIHNlbGYucHViX2tleV9wYXRoKSkKLQotICAgICAgICByZXQgPSBydW5DbWQoJyVzL3JwbWtleXMgLS1kZWZpbmUgIl9kYnBhdGggJXMiIC0tY2hlY2tzaWcgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgIChzdGFnaW5nX2JpbmRpcl9uYXRpdmUsIHJwbWRiLCBwa2dfZGVwbG95KSkKLSAgICAgICAgIyB0bXAvZGVwbG95L3JwbS9pNTg2L2VkLTEuOS1yMC5pNTg2LnJwbTogcnNhIHNoYTEgbWQ1IE9LCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3JzYSBzaGExIChtZDUpIHBncCBtZDUgT0snLCByZXQub3V0cHV0LCAnUGFja2FnZSBzaWduZWQgaW5jb3JyZWN0bHkuJykKLSAgICAgICAgc2h1dGlsLnJtdHJlZShycG1kYikKLQotICAgICAgICAjQ2hlY2sgdGhhdCBhbiBpbWFnZSBjYW4gYmUgYnVpbHQgZnJvbSBzaWduZWQgcGFja2FnZXMKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiBjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotCi0KLSAgICBAdGVzdGNhc2UoMTM4MikKLSAgICBkZWYgdGVzdF9zaWduaW5nX3NzdGF0ZV9hcmNoaXZlKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBzc3RhdGUgYXJjaGl2ZXMgY2FuIGJlIHNpZ25lZAotICAgICAgICBFeHBlY3RlZDogICAgUGFja2FnZSBzaG91bGQgYmUgc2lnbmVkIHdpdGggdGhlIGNvcnJlY3Qga2V5Ci0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJwotCi0gICAgICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJykKLSAgICAgICAgc3N0YXRlZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAndGVzdC1zc3RhdGUnKQotCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcycgJSBzc3RhdGVkaXIpCi0KLSAgICAgICAgZmVhdHVyZSA9ICdTU1RBVEVfU0lHX0tFWSA/PSAidGVzdHVzZXIiXG4nCi0gICAgICAgIGZlYXR1cmUgKz0gJ1NTVEFURV9TSUdfUEFTU1BIUkFTRSA/PSAidGVzdDEyMyJcbicKLSAgICAgICAgZmVhdHVyZSArPSAnU1NUQVRFX1ZFUklGWV9TSUcgPz0gIjEiXG4nCi0gICAgICAgIGZlYXR1cmUgKz0gJ0dQR19QQVRIID0gIiVzIlxuJyAlIHNlbGYuZ3BnX2RpcgotICAgICAgICBmZWF0dXJlICs9ICdTU1RBVEVfRElSID0gIiVzIlxuJyAlIHNzdGF0ZWRpcgotICAgICAgICAjIEFueSBtaXJyb3IgbWlnaHQgaGF2ZSBwYXJ0aWFsIHNzdGF0ZSB3aXRob3V0IC5zaWcgZmlsZXMsIHRyaWdnZXJpbmcgZmFpbHVyZXMKLSAgICAgICAgZmVhdHVyZSArPSAnU1NUQVRFX01JUlJPUlNfZm9yY2V2YXJpYWJsZSA9ICIiXG4nCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZSkKLQotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKLSAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKLQotICAgICAgICByZWNpcGVfc2lnID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qOmVkOipfcGFja2FnZS50Z3ouc2lnJykKLSAgICAgICAgcmVjaXBlX3RneiA9IGdsb2IuZ2xvYihzc3RhdGVkaXIgKyAnLyovKjplZDoqX3BhY2thZ2UudGd6JykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNpcGVfc2lnKSwgMSwgJ0ZhaWxlZCB0byBmaW5kIC5zaWcgZmlsZS4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNpcGVfdGd6KSwgMSwgJ0ZhaWxlZCB0byBmaW5kIC50Z3ogZmlsZS4nKQotCi0gICAgICAgIHJldCA9IHJ1bkNtZCgnZ3BnIC0taG9tZWRpciAlcyAtLXZlcmlmeSAlcyAlcycgJSAoc2VsZi5ncGdfZGlyLCByZWNpcGVfc2lnWzBdLCByZWNpcGVfdGd6WzBdKSkKLSAgICAgICAgIyBncGc6IFNpZ25hdHVyZSBtYWRlIFRodSAyMiBPY3QgMjAxNSAwMTo0NTowOSBQTSBFRVNUIHVzaW5nIFJTQSBrZXkgSUQgNjFFRUZCMzAKLSAgICAgICAgIyBncGc6IEdvb2Qgc2lnbmF0dXJlIGZyb20gInRlc3R1c2VyIChub2NvbW1lbnQpIDx0ZXN0dXNlckBlbWFpbC5jb20+IgotICAgICAgICBzZWxmLmFzc2VydEluKCdncGc6IEdvb2Qgc2lnbmF0dXJlIGZyb20nLCByZXQub3V0cHV0LCAnUGFja2FnZSBzaWduZWQgaW5jb3JyZWN0bHkuJykKLQotCi1jbGFzcyBMb2NrZWRTaWduYXR1cmVzKG9lU2VsZlRlc3QpOgotCi0gICAgQHRlc3RjYXNlKDE0MjApCi0gICAgZGVmIHRlc3RfbG9ja2VkX3NpZ25hdHVyZXMoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCBsb2NrZWQgc2lnbmF0dXJlIG1lY2hhbmlzbQotICAgICAgICBFeHBlY3RlZDogICAgTG9ja2VkIHNpZ25hdHVyZXMgd2lsbCBwcmV2ZW50IHRhc2sgdG8gcnVuCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJwotICAgICAgICBsb2NrZWRfc2lnc19maWxlID0gJ2xvY2tlZC1zaWdzLmluYycKLQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtZiAlcycgJSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgbG9ja2VkX3NpZ3NfZmlsZSkpCi0KLSAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKLSAgICAgICAgIyBHZW5lcmF0ZSBsb2NrZWQgc2lncyBpbmNsdWRlIGZpbGUKLSAgICAgICAgYml0YmFrZSgnLVMgbm9uZSAlcycgJSB0ZXN0X3JlY2lwZSkKLQotICAgICAgICBmZWF0dXJlID0gJ3JlcXVpcmUgJXNcbicgJSBsb2NrZWRfc2lnc19maWxlCi0gICAgICAgIGZlYXR1cmUgKz0gJ1NJR0dFTl9MT0NLRURTSUdTX1RBU0tTSUdfQ0hFQ0sgPSAid2FybiJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZSkKLQotICAgICAgICAjIEJ1aWxkIGEgbG9ja2VkIHJlY2lwZQotICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQotCi0gICAgICAgICMgTWFrZSBhIGNoYW5nZSB0aGF0IHNob3VsZCBjYXVzZSB0aGUgbG9ja2VkIHRhc2sgc2lnbmF0dXJlIHRvIGNoYW5nZQotICAgICAgICByZWNpcGVfYXBwZW5kX2ZpbGUgPSB0ZXN0X3JlY2lwZSArICdfJyArIGdldF9iYl92YXIoJ1BWJywgdGVzdF9yZWNpcGUpICsgJy5iYmFwcGVuZCcKLSAgICAgICAgcmVjaXBlX2FwcGVuZF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCB0ZXN0X3JlY2lwZSwgcmVjaXBlX2FwcGVuZF9maWxlKQotICAgICAgICBmZWF0dXJlID0gJ1NVTU1BUlkgKz0gInRlc3QgbG9ja2VkIHNpZ25hdHVyZSJcbicKLQotICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHRlc3RfcmVjaXBlKSkKLSAgICAgICAgd3JpdGVfZmlsZShyZWNpcGVfYXBwZW5kX3BhdGgsIGZlYXR1cmUpCi0KLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzJyAlIG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgdGVzdF9yZWNpcGUpKQotCi0gICAgICAgICMgQnVpbGQgdGhlIHJlY2lwZSBhZ2FpbgotICAgICAgICByZXQgPSBiaXRiYWtlKHRlc3RfcmVjaXBlKQotCi0gICAgICAgICMgVmVyaWZ5IHlvdSBnZXQgdGhlIHdhcm5pbmcgYW5kIHRoYXQgdGhlIHJlYWwgdGFzayAqaXNuJ3QqIHJ1biAoaS5lLiB0aGUgbG9ja2VkIHNpZ25hdHVyZSBoYXMgd29ya2VkKQotICAgICAgICBwYXR0ID0gcidXQVJOSU5HOiBUaGUgJXM6ZG9fcGFja2FnZSBzaWcgaXMgY29tcHV0ZWQgdG8gYmUgXFMrLCBidXQgdGhlIHNpZyBpcyBsb2NrZWQgdG8gXFMrIGluIFNJR0dFTl9MT0NLRURTSUdTXFMrJyAlIHRlc3RfcmVjaXBlCi0gICAgICAgIGZvdW5kX3dhcm4gPSByZS5zZWFyY2gocGF0dCwgcmV0Lm91dHB1dCkKLQotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmb3VuZF93YXJuLCAiRGlkbid0IGZpbmQgdGhlIGV4cGVjdGVkIHdhcm5pbmcgbWVzc2FnZS4gT3V0cHV0OiAlcyIgJSByZXQub3V0cHV0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTRiYzQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NzdGF0ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXJzLCBnZXRfdGVzdF9sYXllcgotCi0KLWNsYXNzIFNTdGF0ZUJhc2Uob2VTZWxmVGVzdCk6Ci0KLSAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKLSAgICAgICAgc2VsZi50ZW1wX3NzdGF0ZV9sb2NhdGlvbiA9IE5vbmUKLSAgICAgICAgbmVlZGVkX3ZhcnMgPSBbJ1NTVEFURV9ESVInLCAnTkFUSVZFTFNCU1RSSU5HJywgJ1RDTElCQycsICdUVU5FX0FSQ0gnLAotICAgICAgICAgICAgICAgICAgICAgICAnVE9QRElSJywgJ1RBUkdFVF9WRU5ET1InLCAnVEFSR0VUX09TJ10KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKG5lZWRlZF92YXJzKQotICAgICAgICBzZWxmLnNzdGF0ZV9wYXRoID0gYmJfdmFyc1snU1NUQVRFX0RJUiddCi0gICAgICAgIHNlbGYuaG9zdGRpc3RybyA9IGJiX3ZhcnNbJ05BVElWRUxTQlNUUklORyddCi0gICAgICAgIHNlbGYudGNsaWJjID0gYmJfdmFyc1snVENMSUJDJ10KLSAgICAgICAgc2VsZi50dW5lX2FyY2ggPSBiYl92YXJzWydUVU5FX0FSQ0gnXQotICAgICAgICBzZWxmLnRvcGRpciA9IGJiX3ZhcnNbJ1RPUERJUiddCi0gICAgICAgIHNlbGYudGFyZ2V0X3ZlbmRvciA9IGJiX3ZhcnNbJ1RBUkdFVF9WRU5ET1InXQotICAgICAgICBzZWxmLnRhcmdldF9vcyA9IGJiX3ZhcnNbJ1RBUkdFVF9PUyddCi0gICAgICAgIHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSA9IG9zLnBhdGguam9pbihzZWxmLnNzdGF0ZV9wYXRoLCBzZWxmLmhvc3RkaXN0cm8pCi0KLSAgICAjIENyZWF0ZXMgYSBzcGVjaWFsIHNzdGF0ZSBjb25maWd1cmF0aW9uIHdpdGggdGhlIG9wdGlvbiB0byBhZGQgc3N0YXRlIG1pcnJvcnMKLSAgICBkZWYgY29uZmlnX3NzdGF0ZShzZWxmLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1GYWxzZSwgYWRkX2xvY2FsX21pcnJvcnM9W10pOgotICAgICAgICBzZWxmLnRlbXBfc3N0YXRlX2xvY2F0aW9uID0gdGVtcF9zc3RhdGVfbG9jYXRpb24KLQotICAgICAgICBpZiBzZWxmLnRlbXBfc3N0YXRlX2xvY2F0aW9uOgotICAgICAgICAgICAgdGVtcF9zc3RhdGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAidGVtcF9zc3RhdGVfJXMiICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0lZCVIJU0lUycpKQotICAgICAgICAgICAgY29uZmlnX3RlbXBfc3N0YXRlID0gIlNTVEFURV9ESVIgPSBcIiVzXCIiICUgdGVtcF9zc3RhdGVfcGF0aAotICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZ190ZW1wX3NzdGF0ZSkKLSAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcF9zc3RhdGVfcGF0aCkKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1NUQVRFX0RJUicsICdOQVRJVkVMU0JTVFJJTkcnXSkKLSAgICAgICAgc2VsZi5zc3RhdGVfcGF0aCA9IGJiX3ZhcnNbJ1NTVEFURV9ESVInXQotICAgICAgICBzZWxmLmhvc3RkaXN0cm8gPSBiYl92YXJzWydOQVRJVkVMU0JTVFJJTkcnXQotICAgICAgICBzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5zc3RhdGVfcGF0aCwgc2VsZi5ob3N0ZGlzdHJvKQotCi0gICAgICAgIGlmIGFkZF9sb2NhbF9taXJyb3JzOgotICAgICAgICAgICAgY29uZmlnX3NldF9zc3RhdGVfaWZfbm90X3NldCA9ICdTU1RBVEVfTUlSUk9SUyA/PSAiIicKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWdfc2V0X3NzdGF0ZV9pZl9ub3Rfc2V0KQotICAgICAgICAgICAgZm9yIGxvY2FsX21pcnJvciBpbiBhZGRfbG9jYWxfbWlycm9yczoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguam9pbihsb2NhbF9taXJyb3IpID09IG9zLnBhdGguam9pbihzZWxmLnNzdGF0ZV9wYXRoKSwgbXNnPSdDYW5ub3QgYWRkIHRoZSBjdXJyZW50IHNzdGF0ZSBwYXRoIGFzIGEgc3N0YXRlIG1pcnJvcicpCi0gICAgICAgICAgICAgICAgY29uZmlnX3NzdGF0ZV9taXJyb3IgPSAiU1NUQVRFX01JUlJPUlMgKz0gXCJmaWxlOi8vLiogZmlsZTovLy8lcy9QQVRIXCIiICUgbG9jYWxfbWlycm9yCi0gICAgICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZ19zc3RhdGVfbWlycm9yKQotCi0gICAgIyBSZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIHNzdGF0ZSBmaWxlcwotICAgIGRlZiBzZWFyY2hfc3N0YXRlKHNlbGYsIGZpbGVuYW1lX3JlZ2V4LCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUpOgotICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLnNzdGF0ZV9wYXRoKToKLSAgICAgICAgICAgIGlmIGRpc3Ryb19zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKCIlcy9bYS16MC05XXsyfSQiICUgc2VsZi5ob3N0ZGlzdHJvLCByb290KToKLSAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGZpbGVuYW1lX3JlZ2V4LCBmKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZikKLSAgICAgICAgICAgIGlmIGRpc3Ryb19ub25zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKCIlcy9bYS16MC05XXsyfSQiICUgc2VsZi5zc3RhdGVfcGF0aCwgcm9vdCk6Ci0gICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChmaWxlbmFtZV9yZWdleCwgZik6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYpCi0gICAgICAgIHJldHVybiByZXN1bHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NzdGF0ZXRlc3RzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRldGVzdHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNWRkZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvc3N0YXRldGVzdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0ODMgKzAsMCBAQAotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgZ2xvYgotaW1wb3J0IHN1YnByb2Nlc3MKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgotZnJvbSBvZXFhLnNlbGZ0ZXN0LnNzdGF0ZSBpbXBvcnQgU1N0YXRlQmFzZQotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIFNTdGF0ZVRlc3RzKFNTdGF0ZUJhc2UpOgotCi0gICAgIyBUZXN0IHNzdGF0ZSBmaWxlcyBjcmVhdGlvbiBhbmQgdGhlaXIgbG9jYXRpb24KLSAgICBkZWYgcnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKHNlbGYsIHRhcmdldHMsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSwgc2hvdWxkX3Bhc3M9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuY29uZmlnX3NzdGF0ZSh0ZW1wX3NzdGF0ZV9sb2NhdGlvbiwgW3NlbGYuc3N0YXRlX3BhdGhdKQotCi0gICAgICAgIGlmICBzZWxmLnRlbXBfc3N0YXRlX2xvY2F0aW9uOgotICAgICAgICAgICAgYml0YmFrZShbJy1jY2xlYW4nXSArIHRhcmdldHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbnNzdGF0ZSddICsgdGFyZ2V0cykKLQotICAgICAgICBiaXRiYWtlKHRhcmdldHMpCi0gICAgICAgIGZpbGVfdHJhY2tlciA9IFtdCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBkaXN0cm9fc3BlY2lmaWMsIGRpc3Ryb19ub25zcGVjaWZpYykKLSAgICAgICAgaWYgZGlzdHJvX25vbnNwZWNpZmljOgotICAgICAgICAgICAgZm9yIHIgaW4gcmVzdWx0czoKLSAgICAgICAgICAgICAgICBpZiByLmVuZHN3aXRoKCgiX3BvcHVsYXRlX2xpYy50Z3oiLCAiX3BvcHVsYXRlX2xpYy50Z3ouc2lnaW5mbyIsICJfZmV0Y2gudGd6LnNpZ2luZm8iLCAiX3VucGFjay50Z3ouc2lnaW5mbyIsICJfcGF0Y2gudGd6LnNpZ2luZm8iKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZmlsZV90cmFja2VyLmFwcGVuZChyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmlsZV90cmFja2VyID0gcmVzdWx0cwotCi0gICAgICAgIGlmIHNob3VsZF9wYXNzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVfdHJhY2tlciAsIG1zZz0iQ291bGQgbm90IGZpbmQgc3N0YXRlIGZpbGVzIGZvcjogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmlsZV90cmFja2VyICwgbXNnPSJGb3VuZCBzc3RhdGUgZmlsZXMgaW4gdGhlIHdyb25nIHBsYWNlIGZvcjogJXMgKGZvdW5kICVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKGZpbGVfdHJhY2tlcikpKQotCi0gICAgQHRlc3RjYXNlKDk3NSkKLSAgICBkZWYgdGVzdF9zc3RhdGVfY3JlYXRpb25fZGlzdHJvX3NwZWNpZmljX3Bhc3Moc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKFsnYmludXRpbHMtY3Jvc3MtJysgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXSwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKLQotICAgIEB0ZXN0Y2FzZSgxMzc0KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9jcmVhdGlvbl9kaXN0cm9fc3BlY2lmaWNfZmFpbChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oWydiaW51dGlscy1jcm9zcy0nKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddLCBkaXN0cm9fc3BlY2lmaWM9RmFsc2UsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBzaG91bGRfcGFzcz1GYWxzZSkKLQotICAgIEB0ZXN0Y2FzZSg5NzYpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2NyZWF0aW9uX2Rpc3Ryb19ub25zcGVjaWZpY19wYXNzKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihbJ2xpbnV4LWxpYmMtaGVhZGVycyddLCBkaXN0cm9fc3BlY2lmaWM9RmFsc2UsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQotCi0gICAgQHRlc3RjYXNlKDEzNzUpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2NyZWF0aW9uX2Rpc3Ryb19ub25zcGVjaWZpY19mYWlsKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihbJ2xpbnV4LWxpYmMtaGVhZGVycyddLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBzaG91bGRfcGFzcz1GYWxzZSkKLQotICAgICMgVGVzdCB0aGUgc3N0YXRlIGZpbGVzIGRlbGV0aW9uIHBhcnQgb2YgdGhlIGRvX2NsZWFuc3N0YXRlIHRhc2sKLSAgICBkZWYgcnVuX3Rlc3RfY2xlYW5zc3RhdGVfdGFzayhzZWxmLCB0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpOgotICAgICAgICBzZWxmLmNvbmZpZ19zc3RhdGUodGVtcF9zc3RhdGVfbG9jYXRpb24sIFtzZWxmLnNzdGF0ZV9wYXRoXSkKLQotICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbnNzdGF0ZSddICsgdGFyZ2V0cykKLQotICAgICAgICBiaXRiYWtlKHRhcmdldHMpCi0gICAgICAgIHRnel9jcmVhdGVkID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljLCBkaXN0cm9fbm9uc3BlY2lmaWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0Z3pfY3JlYXRlZCwgbXNnPSJDb3VsZCBub3QgZmluZCBzc3RhdGUgLnRneiBmaWxlcyBmb3I6ICVzICglcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cih0Z3pfY3JlYXRlZCkpKQotCi0gICAgICAgIHNpZ2luZm9fY3JlYXRlZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnNpZ2luZm8kJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWMsIGRpc3Ryb19ub25zcGVjaWZpYykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNpZ2luZm9fY3JlYXRlZCwgbXNnPSJDb3VsZCBub3QgZmluZCBzc3RhdGUgLnNpZ2luZm8gZmlsZXMgZm9yOiAlcyAoJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIoc2lnaW5mb19jcmVhdGVkKSkpCi0KLSAgICAgICAgYml0YmFrZShbJy1jY2xlYW5zc3RhdGUnXSArIHRhcmdldHMpCi0gICAgICAgIHRnel9yZW1vdmVkID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljLCBkaXN0cm9fbm9uc3BlY2lmaWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgdGd6X3JlbW92ZWQsIG1zZz0iZG9fY2xlYW5zc3RhdGUgZGlkbid0IHJlbW92ZSAudGd6IHNzdGF0ZSBmaWxlcyBmb3I6ICVzICglcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cih0Z3pfcmVtb3ZlZCkpKQotCi0gICAgQHRlc3RjYXNlKDk3NykKLSAgICBkZWYgdGVzdF9jbGVhbnNzdGF0ZV90YXNrX2Rpc3Ryb19zcGVjaWZpY19ub25zcGVjaWZpYyhzZWxmKToKLSAgICAgICAgdGFyZ2V0cyA9IFsnYmludXRpbHMtY3Jvc3MtJysgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXQotICAgICAgICB0YXJnZXRzLmFwcGVuZCgnbGludXgtbGliYy1oZWFkZXJzJykKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9jbGVhbnNzdGF0ZV90YXNrKHRhcmdldHMsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKLQotICAgIEB0ZXN0Y2FzZSgxMzc2KQotICAgIGRlZiB0ZXN0X2NsZWFuc3N0YXRlX3Rhc2tfZGlzdHJvX25vbnNwZWNpZmljKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X2NsZWFuc3N0YXRlX3Rhc2soWydsaW51eC1saWJjLWhlYWRlcnMnXSwgZGlzdHJvX3NwZWNpZmljPUZhbHNlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKLQotICAgIEB0ZXN0Y2FzZSgxMzc3KQotICAgIGRlZiB0ZXN0X2NsZWFuc3N0YXRlX3Rhc2tfZGlzdHJvX3NwZWNpZmljKHNlbGYpOgotICAgICAgICB0YXJnZXRzID0gWydiaW51dGlscy1jcm9zcy0nKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddCi0gICAgICAgIHRhcmdldHMuYXBwZW5kKCdsaW51eC1saWJjLWhlYWRlcnMnKQotICAgICAgICBzZWxmLnJ1bl90ZXN0X2NsZWFuc3N0YXRlX3Rhc2sodGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKLQotCi0gICAgIyBUZXN0IHJlYnVpbGRpbmcgb2YgZGlzdHJvLXNwZWNpZmljIHNzdGF0ZSBmaWxlcwotICAgIGRlZiBydW5fdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGUoc2VsZiwgdGFyZ2V0cywgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSk6Ci0gICAgICAgIHNlbGYuY29uZmlnX3NzdGF0ZSh0ZW1wX3NzdGF0ZV9sb2NhdGlvbiwgW3NlbGYuc3N0YXRlX3BhdGhdKQotCi0gICAgICAgIGJpdGJha2UoWyctY2NsZWFuc3N0YXRlJ10gKyB0YXJnZXRzKQotCi0gICAgICAgIGJpdGJha2UodGFyZ2V0cykKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYz1GYWxzZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUpCi0gICAgICAgIGZpbHRlcmVkX3Jlc3VsdHMgPSBbXQotICAgICAgICBmb3IgciBpbiByZXN1bHRzOgotICAgICAgICAgICAgaWYgci5lbmRzd2l0aCgoIl9wb3B1bGF0ZV9saWMudGd6IiwgIl9wb3B1bGF0ZV9saWMudGd6LnNpZ2luZm8iKSk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZpbHRlcmVkX3Jlc3VsdHMuYXBwZW5kKHIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWx0ZXJlZF9yZXN1bHRzID09IFtdLCBtc2c9IkZvdW5kIGRpc3RybyBub24tc3BlY2lmaWMgc3N0YXRlIGZvcjogJXMgKCVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKGZpbHRlcmVkX3Jlc3VsdHMpKSkKLSAgICAgICAgZmlsZV90cmFja2VyXzEgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGZpbGVfdHJhY2tlcl8xKSA+PSBsZW4odGFyZ2V0cyksIG1zZyA9ICJOb3QgYWxsIHNzdGF0ZSBmaWxlcyB3YXJlIGNyZWF0ZWQgZm9yOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpKQotCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlICsgIl9vbGQiKQotICAgICAgICBzaHV0aWwuY29weXRyZWUoc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlLCBzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUgKyAiX29sZCIpCi0gICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKQotCi0gICAgICAgIGJpdGJha2UoWyctY2NsZWFuJ10gKyB0YXJnZXRzKQotICAgICAgICBiaXRiYWtlKHRhcmdldHMpCi0gICAgICAgIGZpbGVfdHJhY2tlcl8yID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihmaWxlX3RyYWNrZXJfMikgPj0gbGVuKHRhcmdldHMpLCBtc2cgPSAiTm90IGFsbCBzc3RhdGUgZmlsZXMgd2FyZSBjcmVhdGVkIGZvcjogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSkKLQotICAgICAgICBub3RfcmVjcmVhdGVkID0gW3ggZm9yIHggaW4gZmlsZV90cmFja2VyXzEgaWYgeCBub3QgaW4gZmlsZV90cmFja2VyXzJdCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RfcmVjcmVhdGVkID09IFtdLCBtc2c9IlRoZSBmb2xsb3dpbmcgc3N0YXRlIGZpbGVzIHdhcmUgbm90IHJlY3JlYXRlZDogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIG5vdF9yZWNyZWF0ZWQpKSkKLQotICAgICAgICBjcmVhdGVkX29uY2UgPSBbeCBmb3IgeCBpbiBmaWxlX3RyYWNrZXJfMiBpZiB4IG5vdCBpbiBmaWxlX3RyYWNrZXJfMV0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZWRfb25jZSA9PSBbXSwgbXNnPSJUaGUgZm9sbG93aW5nIHNzdGF0ZSBmaWxlcyB3YXJlIGNyZWF0ZWQgb25seSBpbiB0aGUgc2Vjb25kIHJ1bjogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIGNyZWF0ZWRfb25jZSkpKQotCi0gICAgQHRlc3RjYXNlKDE3NSkKLSAgICBkZWYgdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGVfY3Jvc3NfbmF0aXZlX3RhcmdldHMoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKFsnYmludXRpbHMtY3Jvc3MtJyArIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10sIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCi0KLSAgICBAdGVzdGNhc2UoMTM3MikKLSAgICBkZWYgdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGVfY3Jvc3NfdGFyZ2V0KHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZShbJ2JpbnV0aWxzLWNyb3NzLScgKyBzZWxmLnR1bmVfYXJjaF0sIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCi0KLSAgICBAdGVzdGNhc2UoMTM3MykKLSAgICBkZWYgdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGVfbmF0aXZlX3RhcmdldChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGUoWydiaW51dGlscy1uYXRpdmUnXSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKLQotCi0gICAgIyBUZXN0IHRoZSBzc3RhdGUtY2FjaGUtbWFuYWdlbWVudCBzY3JpcHQuIEVhY2ggZWxlbWVudCBpbiB0aGUgZ2xvYmFsX2NvbmZpZyBsaXN0IGlzIHVzZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSB0YXJnZXRfY29uZmlnIGxpc3QKLSAgICAjIGdsb2JhbF9jb25maWcgZWxlbWVudHMgYXJlIGV4cGVjdGVkIHRvIG5vdCBnZW5lcmF0ZSBhbnkgc3N0YXRlIGZpbGVzIHRoYXQgd291bGQgYmUgcmVtb3ZlZCBieSBzc3RhdGUtY2FjaGUtbWFuYWdlbWVudC5zaCAoc3VjaCBhcyBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgTUFDSElORSkKLSAgICBkZWYgcnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KHNlbGYsIHRhcmdldCwgZ2xvYmFsX2NvbmZpZz1bJyddLCB0YXJnZXRfY29uZmlnPVsnJ10sIGlnbm9yZV9wYXR0ZXJucz1bXSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnbG9iYWxfY29uZmlnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0X2NvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihnbG9iYWxfY29uZmlnKSA9PSBsZW4odGFyZ2V0X2NvbmZpZyksIG1zZz0nTGlzdHMgZ2xvYmFsX2NvbmZpZyBhbmQgdGFyZ2V0X2NvbmZpZyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMnKQotICAgICAgICBzZWxmLmNvbmZpZ19zc3RhdGUodGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSwgYWRkX2xvY2FsX21pcnJvcnM9W3NlbGYuc3N0YXRlX3BhdGhdKQotCi0gICAgICAgICMgSWYgYnVpbGRoaXN0b3J5IGlzIGVuYWJsZWQsIHdlIG5lZWQgdG8gZGlzYWJsZSB2ZXJzaW9uLWdvaW5nLWJhY2t3YXJkcwotICAgICAgICAjIFFBIGNoZWNrcyBmb3IgdGhpcyB0ZXN0LiBJdCBtYXkgcmVwb3J0IGVycm9ycyBvdGhlcndpc2UuCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnRVJST1JfUUFfcmVtb3ZlID0gInZlcnNpb24tZ29pbmctYmFja3dhcmRzIicpCi0KLSAgICAgICAgIyBGb3Igbm90IHRoaXMgb25seSBjaGVja3MgaWYgcmFuZG9tIHNzdGF0ZSB0YXNrcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkgYXMgYSBncm91cC4KLSAgICAgICAgIyBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZCBhZGQgY29udHJvbCBvdmVyIHdoYXQgdGFza3Mgd2UgY2hlY2sgZm9yLgotCi0gICAgICAgIHNzdGF0ZV9hcmNoc19saXN0ID0gW10KLSAgICAgICAgZXhwZWN0ZWRfcmVtYWluaW5nX3NzdGF0ZSA9IFtdCi0gICAgICAgIGZvciBpZHggaW4gcmFuZ2UobGVuKHRhcmdldF9jb25maWcpKToKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhnbG9iYWxfY29uZmlnW2lkeF0pCi0gICAgICAgICAgICBzZWxmLmFwcGVuZF9yZWNpcGVpbmModGFyZ2V0LCB0YXJnZXRfY29uZmlnW2lkeF0pCi0gICAgICAgICAgICBzc3RhdGVfYXJjaCA9IGdldF9iYl92YXIoJ1NTVEFURV9QS0dBUkNIJywgdGFyZ2V0KQotICAgICAgICAgICAgaWYgbm90IHNzdGF0ZV9hcmNoIGluIHNzdGF0ZV9hcmNoc19saXN0OgotICAgICAgICAgICAgICAgIHNzdGF0ZV9hcmNoc19saXN0LmFwcGVuZChzc3RhdGVfYXJjaCkKLSAgICAgICAgICAgIGlmIHRhcmdldF9jb25maWdbaWR4XSA9PSB0YXJnZXRfY29uZmlnWy0xXToKLSAgICAgICAgICAgICAgICB0YXJnZXRfc3N0YXRlX2JlZm9yZV9idWlsZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSh0YXJnZXQgKyAnLio/XC50Z3okJykKLSAgICAgICAgICAgIGJpdGJha2UoIi1jY2xlYW4gJXMiICUgdGFyZ2V0KQotICAgICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSh0YXJnZXQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgICAgIGlmIHRhcmdldF9jb25maWdbaWR4XSA9PSB0YXJnZXRfY29uZmlnWy0xXToKLSAgICAgICAgICAgICAgICB0YXJnZXRfc3N0YXRlX2FmdGVyX2J1aWxkID0gc2VsZi5zZWFyY2hfc3N0YXRlKHRhcmdldCArICcuKj9cLnRneiQnKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlbWFpbmluZ19zc3RhdGUgKz0gW3ggZm9yIHggaW4gdGFyZ2V0X3NzdGF0ZV9hZnRlcl9idWlsZCBpZiB4IG5vdCBpbiB0YXJnZXRfc3N0YXRlX2JlZm9yZV9idWlsZCBpZiBub3QgYW55KHBhdHRlcm4gaW4geCBmb3IgcGF0dGVybiBpbiBpZ25vcmVfcGF0dGVybnMpXQotICAgICAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGdsb2JhbF9jb25maWdbaWR4XSkKLSAgICAgICAgICAgIHNlbGYucmVtb3ZlX3JlY2lwZWluYyh0YXJnZXQsIHRhcmdldF9jb25maWdbaWR4XSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgbXNnID0gImJ1aWxkIG9mICVzIGZhaWxlZCB3aXRoICVzIiAlICh0YXJnZXQsIHJlc3VsdC5vdXRwdXQpKQotCi0gICAgICAgIHJ1bkNtZCgic3N0YXRlLWNhY2hlLW1hbmFnZW1lbnQuc2ggLXkgLS1jYWNoZS1kaXI9JXMgLS1yZW1vdmUtZHVwbGljYXRlZCAtLWV4dHJhLWFyY2hzPSVzIiAlIChzZWxmLnNzdGF0ZV9wYXRoLCAnLCcuam9pbihtYXAoc3RyLCBzc3RhdGVfYXJjaHNfbGlzdCkpKSkKLSAgICAgICAgYWN0dWFsX3JlbWFpbmluZ19zc3RhdGUgPSBbeCBmb3IgeCBpbiBzZWxmLnNlYXJjaF9zc3RhdGUodGFyZ2V0ICsgJy4qP1wudGd6JCcpIGlmIG5vdCBhbnkocGF0dGVybiBpbiB4IGZvciBwYXR0ZXJuIGluIGlnbm9yZV9wYXR0ZXJucyldCi0KLSAgICAgICAgYWN0dWFsX25vdF9leHBlY3RlZCA9IFt4IGZvciB4IGluIGFjdHVhbF9yZW1haW5pbmdfc3N0YXRlIGlmIHggbm90IGluIGV4cGVjdGVkX3JlbWFpbmluZ19zc3RhdGVdCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYWN0dWFsX25vdF9leHBlY3RlZCwgbXNnPSJGaWxlcyBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYnV0IHdhcmUgbm90OiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgYWN0dWFsX25vdF9leHBlY3RlZCkpKQotICAgICAgICBleHBlY3RlZF9ub3RfYWN0dWFsID0gW3ggZm9yIHggaW4gZXhwZWN0ZWRfcmVtYWluaW5nX3NzdGF0ZSBpZiB4IG5vdCBpbiBhY3R1YWxfcmVtYWluaW5nX3NzdGF0ZV0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RlZF9ub3RfYWN0dWFsLCBtc2c9IkV4dHJhIGZpbGVzIHdhcmUgcmVtb3ZlZDogJXMiICcsICcuam9pbihtYXAoc3RyLCBleHBlY3RlZF9ub3RfYWN0dWFsKSkpCi0KLSAgICBAdGVzdGNhc2UoOTczKQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdF91c2luZ19wcl8xKHNlbGYpOgotICAgICAgICBnbG9iYWxfY29uZmlnID0gW10KLSAgICAgICAgdGFyZ2V0X2NvbmZpZyA9IFtdCi0gICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCcnKQotICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMCInKQotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdCgnbTQnLCBnbG9iYWxfY29uZmlnLCAgdGFyZ2V0X2NvbmZpZywgaWdub3JlX3BhdHRlcm5zPVsncG9wdWxhdGVfbGljJ10pCi0KLSAgICBAdGVzdGNhc2UoOTc4KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdF91c2luZ19wcl8yKHNlbGYpOgotICAgICAgICBnbG9iYWxfY29uZmlnID0gW10KLSAgICAgICAgdGFyZ2V0X2NvbmZpZyA9IFtdCi0gICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCcnKQotICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMCInKQotICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnJykKLSAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjEiJykKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoJ200JywgZ2xvYmFsX2NvbmZpZywgIHRhcmdldF9jb25maWcsIGlnbm9yZV9wYXR0ZXJucz1bJ3BvcHVsYXRlX2xpYyddKQotCi0gICAgQHRlc3RjYXNlKDk3OSkKLSAgICBkZWYgdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHRfdXNpbmdfcHJfMyhzZWxmKToKLSAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IFtdCi0gICAgICAgIHRhcmdldF9jb25maWcgPSBbXQotICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnTUFDSElORSA9ICJxZW11eDg2LTY0IicpCi0gICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIwIicpCi0gICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKGdsb2JhbF9jb25maWdbMF0pCi0gICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIxIicpCi0gICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCdNQUNISU5FID0gInFlbXV4ODYiJykKLSAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjEiJykKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoJ200JywgZ2xvYmFsX2NvbmZpZywgIHRhcmdldF9jb25maWcsIGlnbm9yZV9wYXR0ZXJucz1bJ3BvcHVsYXRlX2xpYyddKQotCi0gICAgQHRlc3RjYXNlKDk3NCkKLSAgICBkZWYgdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHRfdXNpbmdfbWFjaGluZShzZWxmKToKLSAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IFtdCi0gICAgICAgIHRhcmdldF9jb25maWcgPSBbXQotICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnTUFDSElORSA9ICJxZW11eDg2LTY0IicpCi0gICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCcnKQotICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnTUFDSElORSA9ICJxZW11eDg2IicpCi0gICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCcnKQotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdCgnbTQnLCBnbG9iYWxfY29uZmlnLCAgdGFyZ2V0X2NvbmZpZywgaWdub3JlX3BhdHRlcm5zPVsncG9wdWxhdGVfbGljJ10pCi0KLSAgICBAdGVzdGNhc2UoMTI3MCkKLSAgICBkZWYgdGVzdF9zc3RhdGVfMzJfNjRfc2FtZV9oYXNoKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgZm9yIGJvdGggbmF0aXZlIGFuZCB0YXJnZXQgc2hvdWxkIG5vdCB2YXJ5IHdoZXRoZXIKLSAgICAgICAgdGhleSdyZSBidWlsdCBvbiBhIDMyIG9yIDY0IGJpdCBzeXN0ZW0uIFJhdGhlciB0aGFuIHJlcXVpcmluZyB0d28gZGlmZmVyZW50Ci0gICAgICAgIGJ1aWxkIG1hY2hpbmVzIGFuZCBydW5uaW5nIGEgYnVpbGRzLCBvdmVycmlkZSB0aGUgdmFyaWFibGVzIGNhbGxpbmcgdW5hbWUoKQotICAgICAgICBtYW51YWxseSBhbmQgY2hlY2sgdXNpbmcgYml0YmFrZSAtUy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1NQUNISU5FID0gInFlbXV4ODYiCi1UTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaCIKLUJVSUxEX0FSQ0ggPSAieDg2XzY0IgotQlVJTERfT1MgPSAibGludXgiCi1TREtNQUNISU5FID0gIng4Nl82NCIKLVBBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX3JwbSBwYWNrYWdlX2lwayBwYWNrYWdlX2RlYiIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKLSAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKLU1BQ0hJTkUgPSAicWVtdXg4NiIKLVRNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMiIKLUJVSUxEX0FSQ0ggPSAiaTY4NiIKLUJVSUxEX09TID0gImxpbnV4IgotU0RLTUFDSElORSA9ICJpNjg2IgotUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfcnBtIHBhY2thZ2VfaXBrIHBhY2thZ2VfZGViIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKLSAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQotCi0gICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6Ci0gICAgICAgICAgICBmID0gW10KLSAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgotICAgICAgICAgICAgICAgIGlmICJjb3JlLWltYWdlLXNhdG8iIGluIHJvb3Q6Ci0gICAgICAgICAgICAgICAgICAgICMgU0RLTUFDSElORSBjaGFuZ2luZyB3aWxsIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICAjIGRvX3Jvb3Rmcy9kb190ZXN0aW1hZ2UvZG9fYnVpbGQgc3RhbXBzIG9mIGltYWdlcyB3aGljaAotICAgICAgICAgICAgICAgICAgICAjIGlzIHNhZmUgdG8gaWdub3JlLgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGYuZXh0ZW5kKG9zLnBhdGguam9pbihyb290LCBuYW1lKSBmb3IgbmFtZSBpbiBmaWxlcykKLSAgICAgICAgICAgIHJldHVybiBmCi0gICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iKQotICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIpCi0gICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UoInRtcC1zc3RhdGVzYW1laGFzaDIiLCAidG1wLXNzdGF0ZXNhbWVoYXNoIikucmVwbGFjZSgiaTY4Ni1saW51eCIsICJ4ODZfNjQtbGludXgiKS5yZXBsYWNlKCJpNjg2IiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItbGludXgiLCAieDg2XzY0IiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItbGludXgiLCApIGZvciB4IGluIGZpbGVzMl0KLSAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmlsZXMxLCBmaWxlczIpCi0KLQotICAgIEB0ZXN0Y2FzZSgxMjcxKQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9uYXRpdmVsc2JzdHJpbmdfc2FtZV9oYXNoKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHdoaWNoZXZlciBOQVRJVkVMU0JTVFJJTkcgaXMKLSAgICAgICAgZGV0ZWN0ZWQuIFJhdGhlciB0aGFuIHJlcXVpcmluZyB0d28gZGlmZmVyZW50IGJ1aWxkIG1hY2hpbmVzIGFuZCBydW5uaW5nCi0gICAgICAgIGJ1aWxkcywgb3ZlcnJpZGUgdGhlIHZhcmlhYmxlcyBtYW51YWxseSBhbmQgY2hlY2sgdXNpbmcgYml0YmFrZSAtUy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgotTkFUSVZFTFNCU1RSSU5HID0gXCJEaXN0cm9BXCIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKLSAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKLVRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgotTkFUSVZFTFNCU1RSSU5HID0gXCJEaXN0cm9CXCIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCi0gICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKLQotICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgotICAgICAgICAgICAgZiA9IFtdCi0gICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKLSAgICAgICAgICAgICAgICBmLmV4dGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkgZm9yIG5hbWUgaW4gZmlsZXMpCi0gICAgICAgICAgICByZXR1cm4gZgotICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIikKLSAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iKQotICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpIGZvciB4IGluIGZpbGVzMl0KLSAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmlsZXMxLCBmaWxlczIpCi0KLSAgICBAdGVzdGNhc2UoMTM2OCkKLSAgICBkZWYgdGVzdF9zc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIGFsbGFyY2ggcGFja2FnZXMgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHdoaWNoZXZlcgotICAgICAgICBNQUNISU5FIGlzIHNldC4gQ2hlY2sgdGhpcyB1c2luZyBiaXRiYWtlIC1TLgotICAgICAgICBBbHNvLCByYXRoZXIgdGhhbiBkdXBsaWNhdGUgdGhlIHRlc3QsIGNoZWNrIG5hdGl2ZXNkayBzdGFtcHMgYXJlIHRoZSBzYW1lIGJldHdlZW4KLSAgICAgICAgdGhlIHR3byBNQUNISU5FIHZhbHVlcy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgY29uZmlnQSA9ICIiIgotVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKLU1BQ0hJTkUgPSBcInFlbXV4ODYtNjRcIgotIiIiCi0gICAgICAgIGNvbmZpZ0IgPSAiIiIKLVRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgotTUFDSElORSA9IFwicWVtdWFybVwiCi0iIiIKLSAgICAgICAgc2VsZi5zc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhjb25maWdBLCBjb25maWdCKQotCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3NfbXVsdGlsaWIoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiBhbGxhcmNoIG11bHRpbGliIHBhY2thZ2VzIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB3aGljaGV2ZXIKLSAgICAgICAgTUFDSElORSBpcyBzZXQuIENoZWNrIHRoaXMgdXNpbmcgYml0YmFrZSAtUy4KLSAgICAgICAgQWxzbywgcmF0aGVyIHRoYW4gZHVwbGljYXRlIHRoZSB0ZXN0LCBjaGVjayBuYXRpdmVzZGsgc3RhbXBzIGFyZSB0aGUgc2FtZSBiZXR3ZWVuCi0gICAgICAgIHRoZSB0d28gTUFDSElORSB2YWx1ZXMuCi0gICAgICAgICIiIgotCi0gICAgICAgIGNvbmZpZ0EgPSAiIiIKLVRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCi1NQUNISU5FID0gXCJxZW11eDg2LTY0XCIKLXJlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCi1NVUxUSUxJQlMgPSBcIm11bHRpbGliOmxpYjMyXCIKLURFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi1saWIzMiA9IFwieDg2XCIKLSIiIgotICAgICAgICBjb25maWdCID0gIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKLU1BQ0hJTkUgPSBcInFlbXVhcm1cIgotcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKLU1VTFRJTElCUyA9IFwiXCIKLSIiIgotICAgICAgICBzZWxmLnNzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKGNvbmZpZ0EsIGNvbmZpZ0IpCi0KLSAgICBkZWYgc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3Moc2VsZiwgY29uZmlnQSwgY29uZmlnQik6Ci0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnQSkKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKLSAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZ0IpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQotICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKLQotICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgotICAgICAgICAgICAgZiA9IHt9Ci0gICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgIm1ldGEtZW52aXJvbm1lbnQiIGluIHJvb3Qgb3IgImNyb3NzLWNhbmFkaWFuIiBpbiByb290OgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgImRvX2J1aWxkIiBub3QgaW4gbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgMS40LjErZ2l0QVVUT0lOQyszMDJmY2E5ZjRjLXIwLmRvX3BhY2thZ2Vfd3JpdGVfaXBrLnNpZ2RhdGEuZjNhMmEzODY5N2RhNzQzZjBkYmVkOGI1NmFhZmNmNzkKLSAgICAgICAgICAgICAgICAgICAgICAgIChfLCB0YXNrLCBfLCBzaGFzaCkgPSBuYW1lLnJzcGxpdCgiLiIsIDMpCi0gICAgICAgICAgICAgICAgICAgICAgICBmW29zLnBhdGguam9pbihvcy5wYXRoLmJhc2VuYW1lKHJvb3QpLCB0YXNrKV0gPSBzaGFzaAotICAgICAgICAgICAgcmV0dXJuIGYKLSAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzL2FsbCIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLSIgKyBzZWxmLnRhcmdldF9vcykKLSAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy9hbGwiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi0iICsgc2VsZi50YXJnZXRfb3MpCi0gICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlczEsIGZpbGVzMikKLQotICAgICAgICBuYXRpdmVzZGtkaXIgPSBvcy5wYXRoLmJhc2VuYW1lKGdsb2IuZ2xvYihzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8qLW5hdGl2ZXNkayotbGludXgiKVswXSkKLQotICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIiArIG5hdGl2ZXNka2RpcikKLSAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iICsgbmF0aXZlc2RrZGlyKQotICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXMxLCBmaWxlczIpCi0KLSAgICBAdGVzdGNhc2UoMTM2OSkKLSAgICBkZWYgdGVzdF9zc3RhdGVfc2FtZXR1bmVfc2FtZXNpZ3Moc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiB0d28gaWRlbnRpY2FsIG1hY2hpbmVzICh1c2luZyB0aGUgc2FtZSB0dW5lKSBzaG91bGQgYmUgdGhlCi0gICAgICAgIHNhbWUsIGFwYXJ0IGZyb20gY2hhbmdlcyB3aXRoaW4gdGhlIG1hY2hpbmUgc3BlY2lmaWMgc3RhbXBzIGRpcmVjdG9yeS4gV2UgdXNlIHRoZQotICAgICAgICBxZW11eDg2Y29weSBtYWNoaW5lIHRvIHRlc3QgdGhpcy4gQWxzbyBpbmNsdWRlIG11bHRpbGlicyBpbiB0aGUgdGVzdC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgotTUFDSElORSA9IFwicWVtdXg4NlwiCi1yZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgotTVVMVElMSUJTID0gIm11bHRpbGliOmxpYjMyIgotREVGQVVMVFRVTkVfdmlydGNsYXNzLW11bHRpbGliLWxpYjMyID0gIng4NiIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKLSAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgotVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCi1NQUNISU5FID0gXCJxZW11eDg2Y29weVwiCi1yZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgotTVVMVElMSUJTID0gIm11bHRpbGliOmxpYjMyIgotREVGQVVMVFRVTkVfdmlydGNsYXNzLW11bHRpbGliLWxpYjMyID0gIng4NiIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCi0gICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQotCi0gICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6Ci0gICAgICAgICAgICBmID0gW10KLSAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgotICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICBpZiAibWV0YS1lbnZpcm9ubWVudCIgaW4gcm9vdCBvciAiY3Jvc3MtY2FuYWRpYW4iIGluIHJvb3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiAicWVtdXg4NmNvcHktIiBpbiByb290IG9yICJxZW11eDg2LSIgaW4gcm9vdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGlmICJkb19idWlsZCIgbm90IGluIG5hbWUgYW5kICJkb19wb3B1bGF0ZV9zZGsiIG5vdCBpbiBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgZi5hcHBlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGYKLSAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzIikKLSAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcyIpCi0gICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UoInRtcC1zc3RhdGVzYW1laGFzaDIiLCAidG1wLXNzdGF0ZXNhbWVoYXNoIikgZm9yIHggaW4gZmlsZXMyXQotICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKLQotCi0gICAgZGVmIHRlc3Rfc3N0YXRlX25vb3Bfc2FtZXNpZ3Moc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiB0d28gYnVpbGRzIHdpdGggdGhlc2UgdmFyaWFibGVzIGNoYW5nZWQgb3IKLSAgICAgICAgY2xhc3NlcyBpbmhlcml0cyBzaG91bGQgYmUgdGhlIHNhbWUuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgotVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2giCi1CQl9OVU1CRVJfVEhSRUFEUyA9ICIxIgotUEFSQUxMRUxfTUFLRSA9ICItaiAxIgotRExfRElSID0gIiR7VE9QRElSfS9kb3dubG9hZDEiCi1USU1FID0gIjExMTExMSIKLURBVEUgPSAiMjAxNjExMTEiCi1JTkhFUklUX3JlbW92ZSA9ICJidWlsZHN0YXRzLXN1bW1hcnkgYnVpbGRoaXN0b3J5IHVuaW5hdGl2ZSIKLWh0dHBfcHJveHkgPSAiIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi9kb3dubG9hZDEiKQotICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1UTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDIiCi1CQl9OVU1CRVJfVEhSRUFEUyA9ICIyIgotUEFSQUxMRUxfTUFLRSA9ICItaiAyIgotRExfRElSID0gIiR7VE9QRElSfS9kb3dubG9hZDIiCi1USU1FID0gIjIyMjIyMiIKLURBVEUgPSAiMjAxNjEyMTIiCi0jIEFsd2F5cyByZW1vdmUgdW5pbmF0aXZlIGFzIHdlJ3JlIGNoYW5naW5nIHByb3hpZXMKLUlOSEVSSVRfcmVtb3ZlID0gInVuaW5hdGl2ZSIKLUlOSEVSSVQgKz0gImJ1aWxkc3RhdHMtc3VtbWFyeSBidWlsZGhpc3RvcnkiCi1odHRwX3Byb3h5ID0gImh0dHA6Ly9leGFtcGxlLmNvbS8iCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi9kb3dubG9hZDIiKQotICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKLQotICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgotICAgICAgICAgICAgZiA9IHt9Ci0gICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2hhc2ggPSBuYW1lLnJzcGxpdCgnLicsIDEpCi0gICAgICAgICAgICAgICAgICAgICMgRXh0cmFjdCBqdXN0IHRoZSBtYWNoaW5lIGFuZCByZWNpcGUgbmFtZQotICAgICAgICAgICAgICAgICAgICBiYXNlID0gb3Muc2VwLmpvaW4ocm9vdC5yc3BsaXQob3Muc2VwLCAyKVstMjpdICsgW25hbWVdKQotICAgICAgICAgICAgICAgICAgICBmW2Jhc2VdID0gc2hhc2gKLSAgICAgICAgICAgIHJldHVybiBmCi0gICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iKQotICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIpCi0gICAgICAgICMgUmVtb3ZlIGl0ZW1zIHRoYXQgYXJlIGlkZW50aWNhbCBpbiBib3RoIHNldHMKLSAgICAgICAgZm9yIGssdiBpbiBmaWxlczEuaXRlbXMoKSAmIGZpbGVzMi5pdGVtcygpOgotICAgICAgICAgICAgZGVsIGZpbGVzMVtrXQotICAgICAgICAgICAgZGVsIGZpbGVzMltrXQotICAgICAgICBpZiBub3QgZmlsZXMxIGFuZCBub3QgZmlsZXMyOgotICAgICAgICAgICAgIyBObyBjaGFuZ2VzLCBzbyB3ZSdyZSBkb25lCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmb3IgayBpbiBmaWxlczEua2V5cygpIHwgZmlsZXMyLmtleXMoKToKLSAgICAgICAgICAgIGlmIGsgaW4gZmlsZXMxIGFuZCBrIGluIGZpbGVzMjoKLSAgICAgICAgICAgICAgICBwcmludCgiJXMgZGlmZmVyczoiICUgaykKLSAgICAgICAgICAgICAgICBwcmludChzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoImJpdGJha2UtZGlmZnNpZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iICsgayArICIuIiArIGZpbGVzMVtrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIgKyBrICsgIi4iICsgZmlsZXMyW2tdKSkpCi0gICAgICAgICAgICBlbGlmIGsgaW4gZmlsZXMxIGFuZCBrIG5vdCBpbiBmaWxlczI6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIiVzIGluIGZpbGVzMSIgJSBrKQotICAgICAgICAgICAgZWxpZiBrIG5vdCBpbiBmaWxlczEgYW5kIGsgaW4gZmlsZXMyOgotICAgICAgICAgICAgICAgIHByaW50KCIlcyBpbiBmaWxlczIiICUgaykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0ICJzaG91bGRuJ3QgcmVhY2ggaGVyZSIKLSAgICAgICAgc2VsZi5mYWlsKCJzc3RhdGUgaGFzaGVzIG5vdCBpZGVudGljYWwuIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3RpbmZvaWwucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC90aW5mb2lsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2EwYzNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3RpbmZvaWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IGJiLnRpbmZvaWwKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgVGluZm9pbFRlc3RzKG9lU2VsZlRlc3QpOgotICAgICIiIiBCYXNpYyB0ZXN0cyBmb3IgdGhlIHRpbmZvaWwgQVBJICIiIgotCi0gICAgQHRlc3RjYXNlKDE1NjgpCi0gICAgZGVmIHRlc3RfZ2V0dmFyKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoVHJ1ZSkKLSAgICAgICAgICAgIG1hY2hpbmUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignTUFDSElORScpCi0gICAgICAgICAgICBpZiBub3QgbWFjaGluZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBnZXQgTUFDSElORSB2YWx1ZSAtIHJldHVybmVkICVzJyAlIG1hY2hpbmUpCi0KLSAgICBAdGVzdGNhc2UoMTU2OSkKLSAgICBkZWYgdGVzdF9leHBhbmQoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQotICAgICAgICAgICAgZXhwciA9ICcke0Bvcy5nZXRwaWQoKX0nCi0gICAgICAgICAgICBwaWQgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmV4cGFuZChleHByKQotICAgICAgICAgICAgaWYgbm90IHBpZDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBleHBhbmQgIiVzIiAtIHJldHVybmVkICVzJyAlIChleHByLCBwaWQpKQotCi0gICAgQHRlc3RjYXNlKDE1NzApCi0gICAgZGVmIHRlc3RfZ2V0dmFyX2JiX29yaWdlbnYoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQotICAgICAgICAgICAgb3JpZ2VudiA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQl9PUklHRU5WJywgRmFsc2UpCi0gICAgICAgICAgICBpZiBub3Qgb3JpZ2VudjoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBnZXQgQkJfT1JJR0VOViB2YWx1ZSAtIHJldHVybmVkICVzJyAlIG9yaWdlbnYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdlbnYuZ2V0VmFyKCdIT01FJywgRmFsc2UpLCBvcy5lbnZpcm9uWydIT01FJ10pCi0KLSAgICBAdGVzdGNhc2UoMTU3MSkKLSAgICBkZWYgdGVzdF9wYXJzZV9yZWNpcGUoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKLSAgICAgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCi0gICAgICAgICAgICBiZXN0ID0gdGluZm9pbC5maW5kX2Jlc3RfcHJvdmlkZXIodGVzdHJlY2lwZSkKLSAgICAgICAgICAgIGlmIG5vdCBiZXN0OgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIHByb3ZpZGluZyAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKGJlc3RbM10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RyZWNpcGUsIHJkLmdldFZhcignUE4nKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTcyKQotICAgIGRlZiB0ZXN0X3BhcnNlX3JlY2lwZV9jb3B5X2V4cGFuZChzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQotICAgICAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKLSAgICAgICAgICAgIGJlc3QgPSB0aW5mb2lsLmZpbmRfYmVzdF9wcm92aWRlcih0ZXN0cmVjaXBlKQotICAgICAgICAgICAgaWYgbm90IGJlc3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgcHJvdmlkaW5nICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoYmVzdFszXSkKLSAgICAgICAgICAgICMgQ2hlY2sgd2UgY2FuIGdldCB2YXJpYWJsZSB2YWx1ZXMKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHJlY2lwZSwgcmQuZ2V0VmFyKCdQTicpKQotICAgICAgICAgICAgIyBDaGVjayB0aGF0IGV4cGFuZGluZyBhIHZhbHVlIHRoYXQgaW5jbHVkZXMgYSB2YXJpYWJsZSByZWZlcmVuY2Ugd29ya3MKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHJlY2lwZSwgcmQuZ2V0VmFyKCdCUE4nKSkKLSAgICAgICAgICAgICMgTm93IGNoZWNrIHRoYXQgY2hhbmdpbmcgdGhlIHJlZmVyZW5jZWQgdmFyaWFibGUncyB2YWx1ZSBpbiBhIGNvcHkgZ2l2ZXMgdGhhdAotICAgICAgICAgICAgIyB2YWx1ZSB3aGVuIGV4cGFuZGluZwotICAgICAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KHJkKQotICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUE4nLCAnaGVsbG8nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLCBsb2NhbGRhdGEuZ2V0VmFyKCdCUE4nKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTczKQotICAgIGRlZiB0ZXN0X3BhcnNlX3JlY2lwZV9pbml0aWFsX2RhdGFzdG9yZShzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQotICAgICAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKLSAgICAgICAgICAgIGJlc3QgPSB0aW5mb2lsLmZpbmRfYmVzdF9wcm92aWRlcih0ZXN0cmVjaXBlKQotICAgICAgICAgICAgaWYgbm90IGJlc3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgcHJvdmlkaW5nICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBkY29weSA9IGJiLmRhdGEuY3JlYXRlQ29weSh0aW5mb2lsLmNvbmZpZ19kYXRhKQotICAgICAgICAgICAgZGNvcHkuc2V0VmFyKCdNWVZBUklBQkxFJywgJ3NvbWV2YWx1ZScpCi0gICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoYmVzdFszXSwgY29uZmlnX2RhdGE9ZGNvcHkpCi0gICAgICAgICAgICAjIENoZWNrIHdlIGNhbiBnZXQgdmFyaWFibGUgdmFsdWVzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzb21ldmFsdWUnLCByZC5nZXRWYXIoJ01ZVkFSSUFCTEUnKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTc0KQotICAgIGRlZiB0ZXN0X2xpc3RfcmVjaXBlcyhzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQotICAgICAgICAgICAgIyBDaGVjayBwa2dfcG4KLSAgICAgICAgICAgIGNoZWNrcG5zID0gWyd0YXInLCAnYXV0b21ha2UnLCAnY29yZXV0aWxzJywgJ200LW5hdGl2ZScsICduYXRpdmVzZGstZ2NjJ10KLSAgICAgICAgICAgIHBrZ19wbiA9IHRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1snJ10ucGtnX3BuCi0gICAgICAgICAgICBmb3IgcG4gaW4gY2hlY2twbnM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwbiwgcGtnX3BuKQotICAgICAgICAgICAgIyBDaGVjayBwa2dfZm4KLSAgICAgICAgICAgIGNoZWNrZm5zID0geyduYXRpdmVzZGstZ2NjJzogJ152aXJ0dWFsOm5hdGl2ZXNkazouKicsICdjb3JldXRpbHMnOiAnLiovY29yZXV0aWxzXy4qLmJiJ30KLSAgICAgICAgICAgIGZvciBmbiwgcG4gaW4gdGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfZm4uaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBwbiBpbiBjaGVja3BuczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcG4gaW4gY2hlY2tmbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goY2hlY2tmbnNbcG5dLCBmbiksICdFbnRyeSBmb3IgJXM6ICVzIGRpZCBub3QgbWF0Y2ggJXMnICUgKHBuLCBmbiwgY2hlY2tmbnNbcG5dKSkKLSAgICAgICAgICAgICAgICAgICAgY2hlY2twbnMucmVtb3ZlKHBuKQotICAgICAgICAgICAgaWYgY2hlY2twbnM6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCBwa2dfZm4gZW50cmllcyBmb3I6ICVzJyAlICcsICcuam9pbihjaGVja3BucykpCi0KLSAgICBAdGVzdGNhc2UoMTU3NSkKLSAgICBkZWYgdGVzdF93YWl0X2V2ZW50KHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKLSAgICAgICAgICAgICMgTmVlZCB0byBkcmFpbiBldmVudHMgb3RoZXJ3aXNlIGV2ZW50cyB0aGF0IHdpbGwgYmUgbWFza2VkIHdpbGwgc3RpbGwgYmUgaW4gdGhlIHF1ZXVlCi0gICAgICAgICAgICB3aGlsZSB0aW5mb2lsLndhaXRfZXZlbnQoMC4yNSk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdGluZm9pbC5zZXRfZXZlbnRfbWFzayhbJ2JiLmV2ZW50LkZpbGVzTWF0Y2hpbmdGb3VuZCcsICdiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQnXSkKLSAgICAgICAgICAgIHBhdHRlcm4gPSAnY29uZicKLSAgICAgICAgICAgIHJlcyA9IHRpbmZvaWwucnVuX2NvbW1hbmQoJ2ZpbmRGaWxlc01hdGNoaW5nSW5EaXInLCBwYXR0ZXJuLCAnY29uZi9tYWNoaW5lJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXMpCi0KLSAgICAgICAgICAgIGV2ZW50cmVjZWl2ZWQgPSBGYWxzZQotICAgICAgICAgICAgd2FpdGNvdW50ID0gNQotICAgICAgICAgICAgd2hpbGUgd2FpdGNvdW50ID4gMDoKLSAgICAgICAgICAgICAgICBldmVudCA9IHRpbmZvaWwud2FpdF9ldmVudCgxKQotICAgICAgICAgICAgICAgIGlmIGV2ZW50OgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5GaWxlc01hdGNoaW5nRm91bmQpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXR0ZXJuLCBldmVudC5fcGF0dGVybikKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3FlbXVhcm0uY29uZicsIGV2ZW50Ll9tYXRjaGVzKQotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRyZWNlaXZlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBldmVudDogJXMnICUgZXZlbnQpCi0KLSAgICAgICAgICAgICAgICB3YWl0Y291bnQgPSB3YWl0Y291bnQgLSAxCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod2FpdGNvdW50LCAwLCAnVGltZWQgb3V0IHdhaXRpbmcgZm9yIENvbW1hbmRDb21wbGV0ZWQgZXZlbnQgZnJvbSBiaXRiYWtlIHNlcnZlcicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXZlbnRyZWNlaXZlZCwgJ0RpZCBub3QgcmVjZWl2ZSBGaWxlc01hdGNoaW5nRm91bmQgZXZlbnQgZnJvbSBiaXRiYWtlIHNlcnZlcicpCi0KLSAgICBAdGVzdGNhc2UoMTU3NikKLSAgICBkZWYgdGVzdF9zZXR2YXJpYWJsZV9jbGVhbihzZWxmKToKLSAgICAgICAgIyBGaXJzdCBjaGVjayB0aGF0IHNldFZhcmlhYmxlIGFmZmVjdHMgdGhlIGRhdGFzdG9yZQotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKLSAgICAgICAgICAgIHRpbmZvaWwucnVuX2NvbW1hbmQoJ3NldFZhcmlhYmxlJywgJ1RFU1RWQVInLCAnc3BlY2lhbHZhbHVlJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKSwgJ3NwZWNpYWx2YWx1ZScsICdWYWx1ZSBzZXQgdXNpbmcgc2V0VmFyaWFibGUgaXMgbm90IHJlZmxlY3RlZCBpbiBjbGllbnQtc2lkZSBnZXRWYXIoKScpCi0KLSAgICAgICAgIyBOb3cgY2hlY2sgdGhhdCB0aGUgc2V0VmFyaWFibGUncyBlZmZlY3RzIGFyZSBubyBsb25nZXIgcHJlc2VudAotICAgICAgICAjICh0aGlzIG1heSBsZWdpdGltYXRlbHkgYnJlYWsgaW4gZnV0dXJlIGlmIHdlIHN0b3AgcmVpbml0aWFsaXNpbmcKLSAgICAgICAgIyB0aGUgZGF0YXN0b3JlLCBpbiB3aGljaCBjYXNlIHdlJ2xsIGhhdmUgdG8gcmVjb25zaWRlciB1c2Ugb2YKLSAgICAgICAgIyBzZXRWYXJpYWJsZSBlbnRpcmVseSkKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJyksICdzcGVjaWFsdmFsdWUnLCAnVmFsdWUgc2V0IHVzaW5nIHNldFZhcmlhYmxlIGlzIHN0aWxsIHByZXNlbnQhJykKLQotICAgICAgICAjIE5vdyBjaGVjayB0aGF0IHNldFZhciBvbiB0aGUgbWFpbiBkYXRhc3RvcmUgd29ya3MgKHVzZXMgc2V0VmFyaWFibGUgaW50ZXJuYWxseSkKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUicsICdzcGVjaWFsdmFsdWUnKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRWYXJpYWJsZScsICdURVNUVkFSJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdzcGVjaWFsdmFsdWUnLCAnVmFsdWUgc2V0IHVzaW5nIGNvbmZpZ19kYXRhLnNldFZhcigpIGlzIG5vdCByZWZsZWN0ZWQgaW4gY29uZmlnX2RhdGEuZ2V0VmFyKCknKQotCi0gICAgZGVmIHRlc3RfZGF0YXN0b3JlX29wZXJhdGlvbnMoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQotICAgICAgICAgICAgIyBUZXN0IHNldFZhckZsYWcoKSAvIGdldFZhckZsYWcoKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXJGbGFnKCdURVNUVkFSJywgJ2ZsYWduYW1lJywgJ2ZsYWd2YWwnKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhckZsYWcoJ1RFU1RWQVInLCAnZmxhZ25hbWUnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ2ZsYWd2YWwnLCAnVmFsdWUgc2V0IHVzaW5nIGNvbmZpZ19kYXRhLnNldFZhckZsYWcoKSBpcyBub3QgcmVmbGVjdGVkIGluIGNvbmZpZ19kYXRhLmdldFZhckZsYWcoKScpCi0gICAgICAgICAgICAjIFRlc3QgZGVsVmFyRmxhZygpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhckZsYWcoJ1RFU1RWQVInLCAnb3RoZXJmbGFnJywgJ290aGVydmFsdWUnKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5kZWxWYXJGbGFnKCdURVNUVkFSJywgJ2ZsYWduYW1lJykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXJGbGFnKCdURVNUVkFSJywgJ2ZsYWduYW1lJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5vbmUsICdWYXJmbGFnIGRlbGV0ZWQgdXNpbmcgY29uZmlnX2RhdGEuZGVsVmFyRmxhZygpIGlzIG5vdCByZWZsZWN0ZWQgaW4gY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygpJykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXJGbGFnKCdURVNUVkFSJywgJ290aGVyZmxhZycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnb3RoZXJ2YWx1ZScsICdWYXJmbGFnIGRlbGV0ZWQgdXNpbmcgY29uZmlnX2RhdGEuZGVsVmFyRmxhZygpIGNhdXNlZCB1bnJlbGF0ZWQgZmxhZyB0byBiZSByZW1vdmVkJykKLSAgICAgICAgICAgICMgVGVzdCBkZWxWYXIoKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVInLCAndmFydmFsdWUnKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAndmFydmFsdWUnLCAnVmFsdWUgc2V0IHVzaW5nIGNvbmZpZ19kYXRhLnNldFZhcigpIGlzIG5vdCByZWZsZWN0ZWQgaW4gY29uZmlnX2RhdGEuZ2V0VmFyKCknKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5kZWxWYXIoJ1RFU1RWQVInKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBOb25lLCAnVmFyaWFibGUgZGVsZXRlZCB1c2luZyBjb25maWdfZGF0YS5kZWxWYXIoKSBhcHBlYXJzIHRvIHN0aWxsIGhhdmUgYSB2YWx1ZScpCi0gICAgICAgICAgICAjIFRlc3QgcmVuYW1lVmFyKCkKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFST0xEJywgJ29yaWd2YWx1ZScpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnJlbmFtZVZhcignVEVTVFZBUk9MRCcsICdURVNUVkFSTkVXJykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVJPTEQnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgTm9uZSwgJ1ZhcmlhYmxlIHJlbmFtZWQgdXNpbmcgY29uZmlnX2RhdGEucmVuYW1lVmFyKCkgc3RpbGwgc2VlbXMgdG8gZXhpc3QnKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUk5FVycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnb3JpZ3ZhbHVlJywgJ1ZhcmlhYmxlIHJlbmFtZWQgdXNpbmcgY29uZmlnX2RhdGEucmVuYW1lVmFyKCkgZG9lcyBub3QgYXBwZWFyIHdpdGggbmV3IG5hbWUnKQotICAgICAgICAgICAgIyBUZXN0IG92ZXJyaWRlcwotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVInLCAnb3JpZ2luYWwnKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVJfb3ZlcnJpZGVvbmUnLCAnb25lJykKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSX292ZXJyaWRldHdvJywgJ3R3bycpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLmFwcGVuZFZhcignT1ZFUlJJREVTJywgJzpvdmVycmlkZW9uZScpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdvbmUnLCAnVmFyaWFibGUgb3ZlcnJpZGVzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHknKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvd2ljLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvd2ljLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjZhZjE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3dpYy5weQorKysgL2Rldi9udWxsCkBAIC0xLDc5MiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBBVVRIT1JTCi0jIEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgotCi0iIiJUZXN0IGNhc2VzIGZvciB3aWMuIiIiCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gZ2xvYiBpbXBvcnQgZ2xvYgotZnJvbSBzaHV0aWwgaW1wb3J0IHJtdHJlZQotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzLCBscnVfY2FjaGUKLWZyb20gdGVtcGZpbGUgaW1wb3J0IE5hbWVkVGVtcG9yYXJ5RmlsZQotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBydW5xZW11Ci1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotCi1AbHJ1X2NhY2hlKG1heHNpemU9MzIpCi1kZWYgZ2V0X2hvc3RfYXJjaChyZWNpcGUpOgotICAgICIiIkEgY2FjaGVkIGNhbGwgdG8gZ2V0X2JiX3ZhcignSE9TVF9BUkNIJywgPHJlY2lwZT4pIiIiCi0gICAgcmV0dXJuIGdldF9iYl92YXIoJ0hPU1RfQVJDSCcsIHJlY2lwZSkKLQotCi1kZWYgb25seV9mb3JfYXJjaChhcmNocywgaW1hZ2U9J2NvcmUtaW1hZ2UtbWluaW1hbCcpOgotICAgICIiIkRlY29yYXRvciBmb3Igd3JhcHBpbmcgdGVzdCBjYXNlcyB0aGF0IGNhbiBiZSBydW4gb25seSBmb3Igc3BlY2lmaWMgdGFyZ2V0Ci0gICAgYXJjaGl0ZWN0dXJlcy4gQSBsaXN0IG9mIGNvbXBhdGlibGUgYXJjaGl0ZWN0dXJlcyBpcyBwYXNzZWQgaW4gYGFyY2hzYC4KLSAgICBDdXJyZW50IGFyY2hpdGVjdHVyZSB3aWxsIGJlIGRldGVybWluZWQgYnkgcGFyc2luZyBiaXRiYWtlIG91dHB1dCBmb3IKLSAgICBgaW1hZ2VgIHJlY2lwZS4KLSAgICAiIiIKLSAgICBkZWYgd3JhcHBlcihmdW5jKToKLSAgICAgICAgQHdyYXBzKGZ1bmMpCi0gICAgICAgIGRlZiB3cmFwcGVkX2YoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgIGFyY2ggPSBnZXRfaG9zdF9hcmNoKGltYWdlKQotICAgICAgICAgICAgaWYgYXJjaHMgYW5kIGFyY2ggbm90IGluIGFyY2hzOgotICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJUZXN0Y2FzZSBhcmNoIGRlcGVuZGVuY3kgbm90IG1ldDogJXMiICUgYXJjaCkKLSAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgd3JhcHBlZF9mLl9fbmFtZV9fID0gZnVuYy5fX25hbWVfXwotICAgICAgICByZXR1cm4gd3JhcHBlZF9mCi0gICAgcmV0dXJuIHdyYXBwZXIKLQotCi1jbGFzcyBXaWMob2VTZWxmVGVzdCk6Ci0gICAgIiIiV2ljIHRlc3QgY2xhc3MuIiIiCi0KLSAgICByZXN1bHRkaXIgPSAiL3Zhci90bXAvd2ljLm9lLXNlbGZ0ZXN0LyIKLSAgICBpbWFnZV9pc19yZWFkeSA9IEZhbHNlCi0gICAgbmF0aXZlX3N5c3Jvb3QgPSBOb25lCi0gICAgd2ljZW52X2NhY2hlID0ge30KLQotICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgotICAgICAgICAiIiJUaGlzIGNvZGUgaXMgZXhlY3V0ZWQgYmVmb3JlIGVhY2ggdGVzdCBtZXRob2QuIiIiCi0gICAgICAgIGlmIG5vdCBzZWxmLm5hdGl2ZV9zeXNyb290OgotICAgICAgICAgICAgV2ljLm5hdGl2ZV9zeXNyb290ID0gZ2V0X2JiX3ZhcignU1RBR0lOR19ESVJfTkFUSVZFJywgJ3dpYy10b29scycpCi0KLSAgICAgICAgIyBEbyB0aGlzIGhlcmUgaW5zdGVhZCBvZiBpbiBzZXRVcENsYXNzIGFzIHRoZSBiYXNlIHNldFVwIGRvZXMgc29tZQotICAgICAgICAjIGNsZWFuIHVwIHdoaWNoIGNhbiByZXN1bHQgaW4gdGhlIG5hdGl2ZSB0b29scyBidWlsdCBlYXJsaWVyIGluCi0gICAgICAgICMgc2V0VXBDbGFzcyBiZWluZyB1bmF2YWlsYWJsZS4KLSAgICAgICAgaWYgbm90IFdpYy5pbWFnZV9pc19yZWFkeToKLSAgICAgICAgICAgIGlmIGdldF9iYl92YXIoJ1VTRV9OTFMnKSA9PSAneWVzJzoKLSAgICAgICAgICAgICAgICBiaXRiYWtlKCd3aWMtdG9vbHMnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd3aWMtdG9vbHMgY2Fubm90IGJlIGJ1aWx0IGR1ZSBpdHMgKGludGx0b29sfGdldHRleHQpLW5hdGl2ZSBkZXBlbmRlbmN5IGFuZCBOTFMgZGlzYWJsZScpCi0KLSAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgICAgICBXaWMuaW1hZ2VfaXNfcmVhZHkgPSBUcnVlCi0KLSAgICAgICAgcm10cmVlKHNlbGYucmVzdWx0ZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCi0KLSAgICBkZWYgdGVhckRvd25Mb2NhbChzZWxmKToKLSAgICAgICAgIiIiUmVtb3ZlIHJlc3VsdGRpciBhcyBpdCBtYXkgY29udGFpbiBpbWFnZXMuIiIiCi0gICAgICAgIHJtdHJlZShzZWxmLnJlc3VsdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQotCi0gICAgQHRlc3RjYXNlKDE1NTIpCi0gICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgLS12ZXJzaW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgLS12ZXJzaW9uJykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMDgpCi0gICAgZGVmIHRlc3RfaGVscChzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgLS1oZWxwIGFuZCB3aWMgLWgiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyAtLWhlbHAnKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgLWgnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIwOSkKLSAgICBkZWYgdGVzdF9jcmVhdGVoZWxwKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBjcmVhdGUgLS1oZWxwIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgY3JlYXRlIC0taGVscCcpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjEwKQotICAgIGRlZiB0ZXN0X2xpc3RoZWxwKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBsaXN0IC0taGVscCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3QgLS1oZWxwJykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDE1NTMpCi0gICAgZGVmIHRlc3RfaGVscF9jcmVhdGUoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgY3JlYXRlIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBjcmVhdGUnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTU1NCkKLSAgICBkZWYgdGVzdF9oZWxwX2xpc3Qoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgbGlzdCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgbGlzdCcpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjE1KQotICAgIGRlZiB0ZXN0X2hlbHBfb3ZlcnZpZXcoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgb3ZlcnZpZXciIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIG92ZXJ2aWV3Jykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMTYpCi0gICAgZGVmIHRlc3RfaGVscF9wbHVnaW5zKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIHBsdWdpbnMiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIHBsdWdpbnMnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIxNykKLSAgICBkZWYgdGVzdF9oZWxwX2tpY2tzdGFydChzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBraWNrc3RhcnQiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIGtpY2tzdGFydCcpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxNTU1KQotICAgIGRlZiB0ZXN0X2xpc3RfaW1hZ2VzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBsaXN0IGltYWdlcyIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3QgaW1hZ2VzJykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDE1NTYpCi0gICAgZGVmIHRlc3RfbGlzdF9zb3VyY2VfcGx1Z2lucyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgbGlzdCBzb3VyY2UtcGx1Z2lucyIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3Qgc291cmNlLXBsdWdpbnMnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTU1NykKLSAgICBkZWYgdGVzdF9saXN0ZWRfaW1hZ2VzX2hlbHAoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGxpc3RlZCBpbWFnZXMgaGVscCIiIgotICAgICAgICBvdXRwdXQgPSBydW5DbWQoJ3dpYyBsaXN0IGltYWdlcycpLm91dHB1dAotICAgICAgICBpbWFnZWxpc3QgPSBbbGluZS5zcGxpdCgpWzBdIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCldCi0gICAgICAgIGZvciBpbWFnZSBpbiBpbWFnZWxpc3Q6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3QgJXMgaGVscCcgJSBpbWFnZSkuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMTMpCi0gICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfc3ViY29tbWFuZChzZWxmKToKLSAgICAgICAgIiIiVGVzdCB1bnN1cHBvcnRlZCBzdWJjb21tYW5kIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcnVuQ21kKCd3aWMgdW5zdXBwb3J0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjE0KQotICAgIGRlZiB0ZXN0X25vX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIHdpdGhvdXQgY29tbWFuZCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHJ1bkNtZCgnd2ljJywgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIxMSkKLSAgICBkZWYgdGVzdF9idWlsZF9pbWFnZV9uYW1lKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCIiIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDExNTcpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfZ3B0X2ltYWdlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIGNvcmUtaW1hZ2UtbWluaW1hbCB3aXRoIGdwdCB0YWJsZSBhbmQgVVVJRCBib290IiIiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIGRpcmVjdGRpc2stZ3B0IC0taW1hZ2UtbmFtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMzQ2KQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X2lzb19pbWFnZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBoeWJyaWQgaXNvIGltYWdlIHdpdGggbGVnYWN5IGFuZCBFRkkgYm9vdCIiIgotICAgICAgICBjb25maWcgPSAnSU5JVFJBTUZTX0lNQUdFID0gImNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiXG4nXAotICAgICAgICAgICAgICAgICAnTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSJcbicKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgbWtoeWJyaWRpc28gLS1pbWFnZS1uYW1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJIWUJSSURfSVNPX0lNRy0qLmRpcmVjdCIpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJIWUJSSURfSVNPX0lNRy0qLmlzbyIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMzQ4KQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X3FlbXV4ODZfZGlyZWN0ZGlzayhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBxZW11eC04Ni1kaXJlY3RkaXNrIGltYWdlIiIiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHFlbXV4ODYtZGlyZWN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAicWVtdXg4Ni1kaXJlY3RkaXNrLSpkaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTM1MCkKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9ta2VmaWRpc2soc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgbWtlZmlkaXNrIGltYWdlIiIiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIG1rZWZpZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAibWtlZmlkaXNrLSpkaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTM4NSkKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9ib290bG9hZGVyX2NvbmZpZyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnIGltYWdlIiIiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIGRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWctKmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTYwKQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X3N5c3RlbWRfYm9vdGRpc2soc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2Ygc3lzdGVtZC1ib290ZGlzayBpbWFnZSIiIgotICAgICAgICBjb25maWcgPSAnTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSJcbicKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgc3lzdGVtZC1ib290ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAic3lzdGVtZC1ib290ZGlzay0qZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDE1NjEpCi0gICAgZGVmIHRlc3Rfc2RpbWFnZV9ib290cGFydChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBzZGltYWdlLWJvb3RwYXJ0IGltYWdlIiIiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHNkaW1hZ2UtYm9vdHBhcnQgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIGtpbWd0eXBlID0gZ2V0X2JiX3ZhcignS0VSTkVMX0lNQUdFVFlQRScsICdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU1BR0VfQk9PVF9GSUxFUyA9ICIlcyJcbicgJSBraW1ndHlwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAic2RpbWFnZS1ib290cGFydC0qZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDE1NjIpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfZGVmYXVsdF9vdXRwdXRfZGlyKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGRlZmF1bHQgb3V0cHV0IGxvY2F0aW9uIiIiCi0gICAgICAgIGZvciBmbmFtZSBpbiBnbG9iKCJkaXJlY3RkaXNrLSouZGlyZWN0Iik6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoZm5hbWUpCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIGRpcmVjdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYigiZGlyZWN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMjEyKQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X2J1aWxkX2FydGlmYWN0cyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgY3JlYXRlIGRpcmVjdGRpc2sgcHJvdmlkaW5nIGFsbCBhcnRpZmFjdHMuIiIiCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NUQUdJTkdfREFUQURJUicsICdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWMtdG9vbHMnKQotICAgICAgICBiYl92YXJzLnVwZGF0ZShnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfUk9PVEZTJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JlLWltYWdlLW1pbmltYWwnKSkKLSAgICAgICAgYmJ2YXJzID0ge2tleS5sb3dlcigpOiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBiYl92YXJzLml0ZW1zKCl9Ci0gICAgICAgIGJidmFyc1sncmVzdWx0ZGlyJ10gPSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzdGF0dXMgPSBydW5DbWQoIndpYyBjcmVhdGUgZGlyZWN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLWIgJShzdGFnaW5nX2RhdGFkaXIpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLWsgJShkZXBsb3lfZGlyX2ltYWdlKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi1uICUocmVjaXBlX3N5c3Jvb3RfbmF0aXZlKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi1yICUoaW1hZ2Vfcm9vdGZzKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi1vICUocmVzdWx0ZGlyKXMiICUgYmJ2YXJzKS5zdGF0dXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMjY0KQotICAgIGRlZiB0ZXN0X2NvbXByZXNzX2d6aXAoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY29tcHJlc3NpbmcgYW4gaW1hZ2Ugd2l0aCBnemlwIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZSBjb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgZ3ppcCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0Lmd6IikpKQotCi0gICAgQHRlc3RjYXNlKDEyNjUpCi0gICAgZGVmIHRlc3RfY29tcHJlc3NfYnppcDIoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY29tcHJlc3NpbmcgYW4gaW1hZ2Ugd2l0aCBiemlwMiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIGJ6aXAyIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QuYnoyIikpKQotCi0gICAgQHRlc3RjYXNlKDEyNjYpCi0gICAgZGVmIHRlc3RfY29tcHJlc3NfeHooc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY29tcHJlc3NpbmcgYW4gaW1hZ2Ugd2l0aCB4eiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tY29tcHJlc3Mtd2l0aD14eiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0Lnh6IikpKQotCi0gICAgQHRlc3RjYXNlKDEyNjcpCi0gICAgZGVmIHRlc3Rfd3JvbmdfY29tcHJlc3NvcihzZWxmKToKLSAgICAgICAgIiIiVGVzdCBob3cgd2ljIGJyZWFrcyBpZiB3cm9uZyBjb21wcmVzc29yIGlzIHByb3ZpZGVkIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgd3JvbmcgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDE1NTgpCi0gICAgZGVmIHRlc3RfZGVidWdfc2hvcnQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgLUQgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIGRlZiB0ZXN0X2RlYnVnX2xvbmcoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgLS1kZWJ1ZyBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWRlYnVnIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTU2MykKLSAgICBkZWYgdGVzdF9za2lwX2J1aWxkX2NoZWNrX3Nob3J0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IC1zIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1zIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBkZWYgdGVzdF9za2lwX2J1aWxkX2NoZWNrX2xvbmcoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgLS1za2lwLWJ1aWxkLWNoZWNrIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tc2tpcC1idWlsZC1jaGVjayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDE1NjQpCi0gICAgZGVmIHRlc3RfYnVpbGRfcm9vdGZzX3Nob3J0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IC1mIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1mIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9yb290ZnNfbG9uZyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCAtLWJ1aWxkLXJvb3RmcyBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWJ1aWxkLXJvb3RmcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDEyNjgpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3Rfcm9vdGZzX2luZGlyZWN0X3JlY2lwZXMoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdXNhZ2Ugb2Ygcm9vdGZzIHBsdWdpbiB3aXRoIHJvb3RmcyByZWNpcGVzIiIiCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMgcm9vdGZzMT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzIHJvb3RmczI9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stbXVsdGktcm9vdGZzKi5kaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTI2OSkKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9yb290ZnNfYXJ0aWZhY3RzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHVzYWdlIG9mIHJvb3RmcyBwbHVnaW4gd2l0aCByb290ZnMgcGF0aHMiIiIKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1RBR0lOR19EQVRBRElSJywgJ1JFQ0lQRV9TWVNST09UX05BVElWRSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpYy10b29scycpCi0gICAgICAgIGJiX3ZhcnMudXBkYXRlKGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9ST09URlMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpKQotICAgICAgICBiYnZhcnMgPSB7a2V5Lmxvd2VyKCk6IHZhbHVlIGZvciBrZXksIHZhbHVlIGluIGJiX3ZhcnMuaXRlbXMoKX0KLSAgICAgICAgYmJ2YXJzWyd3a3MnXSA9ICJkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyIKLSAgICAgICAgYmJ2YXJzWydyZXN1bHRkaXInXSA9IHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSAlKHdrcylzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLWJvb3RpbWctZGlyPSUoc3RhZ2luZ19kYXRhZGlyKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0ta2VybmVsLWRpcj0lKGRlcGxveV9kaXJfaW1hZ2UpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1uYXRpdmUtc3lzcm9vdD0lKHJlY2lwZV9zeXNyb290X25hdGl2ZSlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3Rmcy1kaXIgcm9vdGZzMT0lKGltYWdlX3Jvb3RmcylzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3Rmcy1kaXIgcm9vdGZzMj0lKGltYWdlX3Jvb3RmcylzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlKHJlc3VsdGRpcilzIiAlIGJidmFycykuc3RhdHVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiUod2tzKXMtKi5kaXJlY3QiICUgYmJ2YXJzKSkpCi0KLSAgICBkZWYgdGVzdF9leGNsdWRlX3BhdGgoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgLS1leGNsdWRlLXBhdGggd2tzIG9wdGlvbi4iIiIKLQotICAgICAgICBvbGRwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCi0gICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGdldF9iYl92YXIoIlBBVEgiLCAid2ljLXRvb2xzIikKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3a3NfZmlsZSA9ICd0ZW1wLndrcycKLSAgICAgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6Ci0gICAgICAgICAgICAgICAgcm9vdGZzX2RpciA9IGdldF9iYl92YXIoJ0lNQUdFX1JPT1RGUycsICdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICAgICAgICAgIHdrcy53cml0ZSgiIiIKLXBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIHVzcgotcGFydCAvdXNyIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1yb290ZnMtZGlyICVzL3VzcgotcGFydCAvZXRjIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGggYmluLyAtLXJvb3Rmcy1kaXIgJXMvdXNyIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICUgKHJvb3Rmc19kaXIsIHJvb3Rmc19kaXIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCi0KLSAgICAgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKLSAgICAgICAgICAgIHdpY291dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSAndGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3aWNvdXQpKQotCi0gICAgICAgICAgICB3aWNpbWcgPSB3aWNvdXRbMF0KLQotICAgICAgICAgICAgIyB2ZXJpZnkgcGFydGl0aW9uIHNpemUgd2l0aCB3aWMKLSAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgicGFydGVkIC1tICVzIHVuaXQgYiBwIDI+L2Rldi9udWxsIiAlIHdpY2ltZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKLQotICAgICAgICAgICAgIyBwYXJzZSBwYXJ0ZWQgb3V0cHV0IHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKLSAgICAgICAgICAgICMgQllUO1xuCi0gICAgICAgICAgICAjIC92YXIvdG1wL3dpYy9idWlsZC90bXBmd3ZqamtmXy0yMDE2MTExMDEyMjItaGRhLmRpcmVjdDoyMDBNaUI6ZmlsZTo1MTI6NTEyOm1zZG9zOjo7XG4KLSAgICAgICAgICAgICMgMTowLjAwTWlCOjIwME1pQjoyMDBNaUI6ZXh0NDo6O1xuCi0gICAgICAgICAgICBwYXJ0bG5zID0gcmVzLm91dHB1dC5zcGxpdGxpbmVzKClbMjpdCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKHBhcnRsbnMpKQotCi0gICAgICAgICAgICBmb3IgcGFydCBpbiBbMSwgMiwgM106Ci0gICAgICAgICAgICAgICAgcGFydF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQlZCIgJSBwYXJ0KQotICAgICAgICAgICAgICAgIHBhcnRsbiA9IHBhcnRsbnNbcGFydC0xXS5zcGxpdCgiOiIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBsZW4ocGFydGxuKSkKLSAgICAgICAgICAgICAgICBzdGFydCA9IGludChwYXJ0bG5bMV0ucnN0cmlwKCJCIikpIC8gNTEyCi0gICAgICAgICAgICAgICAgbGVuZ3RoID0gaW50KHBhcnRsblszXS5yc3RyaXAoIkIiKSkgLyA1MTIKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgiZGQgaWY9JXMgb2Y9JXMgc2tpcD0lZCBjb3VudD0lZCIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWNpbWcsIHBhcnRfZmlsZSwgc3RhcnQsIGxlbmd0aCkpLnN0YXR1cykKLQotICAgICAgICAgICAgZGVmIGV4dHJhY3RfZmlsZXMoZGVidWdmc19vdXRwdXQpOgotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgICAgIGV4dHJhY3QgZmlsZSBuYW1lcyBmcm9tIHRoZSBvdXRwdXQgb2YgZGVidWdmcyAtUiAnbHMgLXAnLAotICAgICAgICAgICAgICAgIHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKLQotICAgICAgICAgICAgICAgICAvMi8wNDA3NTUvMC8wLy4vL1xuCi0gICAgICAgICAgICAgICAgIC8yLzA0MDc1NS8wLzAvLi4vL1xuCi0gICAgICAgICAgICAgICAgIC8xMS8wNDA3MDAvMC8wL2xvc3QrZm91bmReTS8vXG4KLSAgICAgICAgICAgICAgICAgLzEyLzA0MDc1NS8xMDAyLzEwMDIvcnVuLy9cbgotICAgICAgICAgICAgICAgICAvMTMvMDQwNzU1LzEwMDIvMTAwMi9zeXMvL1xuCi0gICAgICAgICAgICAgICAgIC8xNC8wNDA3NTUvMTAwMi8xMDAyL2Jpbi8vXG4KLSAgICAgICAgICAgICAgICAgLzgwLzA0MDc1NS8xMDAyLzEwMDIvdmFyLy9cbgotICAgICAgICAgICAgICAgICAvOTIvMDQwNzU1LzEwMDIvMTAwMi90bXAvL1xuCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgIyBOT1RFIHRoZSBvY2Nhc2lvbmFsIF5NIGluIGZpbGUgbmFtZXMKLSAgICAgICAgICAgICAgICByZXR1cm4gW2xpbmUuc3BsaXQoJy8nKVs1XS5zdHJpcCgpIGZvciBsaW5lIGluIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZnNfb3V0cHV0LnN0cmlwKCkuc3BsaXQoJy9cbicpXQotCi0gICAgICAgICAgICAjIFRlc3QgcGFydGl0aW9uIDEsIHNob3VsZCBjb250YWluIHRoZSBub3JtYWwgcm9vdCBkaXJlY3RvcmllcywgZXhjZXB0Ci0gICAgICAgICAgICAjIC91c3IuCi0gICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MSIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQotICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCJldGMiLCBmaWxlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInVzciIsIGZpbGVzKQotCi0gICAgICAgICAgICAjIFBhcnRpdGlvbiAyLCBzaG91bGQgY29udGFpbiBjb21tb24gZGlyZWN0b3JpZXMgZm9yIC91c3IsIG5vdCByb290Ci0gICAgICAgICAgICAjIGRpcmVjdG9yaWVzLgotICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDIiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKLSAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZXRjIiwgZmlsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ1c3IiLCBmaWxlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNoYXJlIiwgZmlsZXMpCi0KLSAgICAgICAgICAgICMgUGFydGl0aW9uIDMsIHNob3VsZCBjb250YWluIHRoZSBzYW1lIGFzIHBhcnRpdGlvbiAyLCBpbmNsdWRpbmcgdGhlIGJpbgotICAgICAgICAgICAgIyBkaXJlY3RvcnksIGJ1dCBub3QgdGhlIGZpbGVzIGluc2lkZSBpdC4KLSAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQzIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCi0gICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImV0YyIsIGZpbGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigidXNyIiwgZmlsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzaGFyZSIsIGZpbGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYmluIiwgZmlsZXMpCi0gICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wIGJpbicgJXMgMj4vZGV2L251bGwiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDMiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKLSAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiLiIsIGZpbGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiLi4iLCBmaWxlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGZpbGVzKSkKLQotICAgICAgICAgICAgZm9yIHBhcnQgaW4gWzEsIDIsIDNdOgotICAgICAgICAgICAgICAgIHBhcnRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0JWQiICUgcGFydCkKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUocGFydF9maWxlKQotCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvbGRwYXRoCi0KLSAgICBkZWYgdGVzdF9leGNsdWRlX3BhdGhfZXJyb3JzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IC0tZXhjbHVkZS1wYXRoIHdrcyBvcHRpb24gZXJyb3IgaGFuZGxpbmcuIiIiCi0gICAgICAgIHdrc19maWxlID0gJ3RlbXAud2tzJwotCi0gICAgICAgICMgQWJzb2x1dGUgYXJndW1lbnQuCi0gICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6Ci0gICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIC91c3IiKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCi0gICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKLQotICAgICAgICAjIEFyZ3VtZW50IHBvaW50aW5nIHRvIHBhcmVudCBkaXJlY3RvcnkuCi0gICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6Ci0gICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIC4vLi8uLiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKLSAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQotCi0gICAgQHRlc3RjYXNlKDE0OTYpCi0gICAgZGVmIHRlc3RfYm1hcF9zaG9ydChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBnZW5lcmF0aW9uIG9mIC5ibWFwIGZpbGUgLW0gb3B0aW9uIiIiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbSAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzdGF0dXMgPSBydW5DbWQoY21kKS5zdGF0dXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0LmJtYXAiKSkpCi0KLSAgICBkZWYgdGVzdF9ibWFwX2xvbmcoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiAuYm1hcCBmaWxlIC0tYm1hcCBvcHRpb24iIiIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC0tYm1hcCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzdGF0dXMgPSBydW5DbWQoY21kKS5zdGF0dXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0LmJtYXAiKSkpCi0KLSAgICBkZWYgX2dldF9pbWFnZV9lbnZfcGF0aChzZWxmLCBpbWFnZSk6Ci0gICAgICAgICIiIkdlbmVyYXRlIGFuZCBvYnRhaW4gdGhlIHBhdGggdG8gPGltYWdlPi5lbnYiIiIKLSAgICAgICAgaWYgaW1hZ2Ugbm90IGluIHNlbGYud2ljZW52X2NhY2hlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCclcyAtYyBkb19yb290ZnNfd2ljZW52JyAlIGltYWdlKS5zdGF0dXMpCi0gICAgICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVEFHSU5HX0RJUicsICdNQUNISU5FJ10sIGltYWdlKQotICAgICAgICAgICAgc3RkaXIgPSBiYl92YXJzWydTVEFHSU5HX0RJUiddCi0gICAgICAgICAgICBtYWNoaW5lID0gYmJfdmFyc1snTUFDSElORSddCi0gICAgICAgICAgICBzZWxmLndpY2Vudl9jYWNoZVtpbWFnZV0gPSBvcy5wYXRoLmpvaW4oc3RkaXIsIG1hY2hpbmUsICdpbWdkYXRhJykKLSAgICAgICAgcmV0dXJuIHNlbGYud2ljZW52X2NhY2hlW2ltYWdlXQotCi0gICAgQHRlc3RjYXNlKDEzNDcpCi0gICAgZGVmIHRlc3RfaW1hZ2VfZW52KHNlbGYpOgotICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgPGltYWdlPi5lbnYgZmlsZXMuIiIiCi0gICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgaW1nZGF0YWRpciA9IHNlbGYuX2dldF9pbWFnZV9lbnZfcGF0aChpbWFnZSkKLQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydJTUFHRV9CQVNFTkFNRScsICdXSUNWQVJTJ10sIGltYWdlKQotICAgICAgICBiYXNlbmFtZSA9IGJiX3ZhcnNbJ0lNQUdFX0JBU0VOQU1FJ10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXNlbmFtZSwgaW1hZ2UpCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oaW1nZGF0YWRpciwgYmFzZW5hbWUpICsgJy5lbnYnCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShwYXRoKSkKLQotICAgICAgICB3aWN2YXJzID0gc2V0KGJiX3ZhcnNbJ1dJQ1ZBUlMnXS5zcGxpdCgpKQotICAgICAgICAjIGZpbHRlciBvdXQgb3B0aW9uYWwgdmFyaWFibGVzCi0gICAgICAgIHdpY3ZhcnMgPSB3aWN2YXJzLmRpZmZlcmVuY2UoKCdERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX0JPT1RfRklMRVMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5JVFJEJywgJ0lOSVRSRF9MSVZFJywgJ0lTT0RJUicpKQotICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZW52ZmlsZToKLSAgICAgICAgICAgIGNvbnRlbnQgPSBkaWN0KGxpbmUuc3BsaXQoIj0iLCAxKSBmb3IgbGluZSBpbiBlbnZmaWxlKQotICAgICAgICAgICAgIyB0ZXN0IGlmIHZhcmlhYmxlcyB1c2VkIGJ5IHdpYyBwcmVzZW50IGluIHRoZSAuZW52IGZpbGUKLSAgICAgICAgICAgIGZvciB2YXIgaW4gd2ljdmFyczoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFyIGluIGNvbnRlbnQsICIlcyBpcyBub3QgaW4gLmVudiBmaWxlIiAlIHZhcikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGVudFt2YXJdKQotCi0gICAgQHRlc3RjYXNlKDE1NTkpCi0gICAgZGVmIHRlc3RfaW1hZ2VfdmFyc19kaXJfc2hvcnQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgaW1hZ2UgdmFycyBkaXJlY3Rvcnkgc2VsZWN0aW9uIC12IG9wdGlvbiIiIgotICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIGltZ2VudmRpciA9IHNlbGYuX2dldF9pbWFnZV9lbnZfcGF0aChpbWFnZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9JXMgLXYgJXMgLW8gJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGltYWdlLCBpbWdlbnZkaXIsIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCi0KLSAgICBkZWYgdGVzdF9pbWFnZV92YXJzX2Rpcl9sb25nKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGltYWdlIHZhcnMgZGlyZWN0b3J5IHNlbGVjdGlvbiAtLXZhcnMgb3B0aW9uIiIiCi0gICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgaW1nZW52ZGlyID0gc2VsZi5fZ2V0X2ltYWdlX2Vudl9wYXRoKGltYWdlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9JXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS12YXJzICVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbWFnZSwgaW1nZW52ZGlyLCBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDEzNTEpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3Rfd2ljX2ltYWdlX3R5cGUoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgYnVpbGRpbmcgd2ljIGltYWdlcyBieSBiaXRiYWtlIiIiCi0gICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTICs9ICJ3aWMiXG5XS1NfRklMRSA9ICJ3aWMtaW1hZ2UtbWluaW1hbCJcbidcCi0gICAgICAgICAgICAgICAgICdNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZWZpIlxuJwotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ3dpYy1pbWFnZS1taW5pbWFsJykuc3RhdHVzKQotICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQotCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfSU1BR0UnLCAnTUFDSElORSddKQotICAgICAgICBkZXBsb3lfZGlyID0gYmJfdmFyc1snREVQTE9ZX0RJUl9JTUFHRSddCi0gICAgICAgIG1hY2hpbmUgPSBiYl92YXJzWydNQUNISU5FJ10KLSAgICAgICAgcHJlZml4ID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXIsICd3aWMtaW1hZ2UtbWluaW1hbC0lcy4nICUgbWFjaGluZSkKLSAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIHJlc3VsdCBpbWFnZSBhbmQgbWFuaWZlc3RzIHN5bWxpbmtzCi0gICAgICAgICMgcG9pbnRpbmcgdG8gZXhpc3RpbmcgZmlsZXMKLSAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJ3dpYycsICdtYW5pZmVzdCcpOgotICAgICAgICAgICAgcGF0aCA9IHByZWZpeCArIHN1ZmZpeAotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKHBhdGgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGgucmVhbHBhdGgocGF0aCkpKQotCi0gICAgQHRlc3RjYXNlKDE0MjIpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfcWVtdShzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMtaW1hZ2UtbWluaW1hbCB1bmRlciBxZW11IiIiCi0gICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTICs9ICJ3aWMiXG5XS1NfRklMRSA9ICJ3aWMtaW1hZ2UtbWluaW1hbCJcbidcCi0gICAgICAgICAgICAgICAgICdNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZWZpIlxuJwotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ3dpYy1pbWFnZS1taW5pbWFsJykuc3RhdHVzKQotICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQotCi0gICAgICAgIHdpdGggcnVucWVtdSgnd2ljLWltYWdlLW1pbmltYWwnLCBzc2g9RmFsc2UpIGFzIHFlbXU6Ci0gICAgICAgICAgICBjbWQgPSAibW91bnQgfGdyZXAgJ14vZGV2LycgfCBjdXQgLWYxLDMgLWQgJyAnIgotICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY21kKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICdGYWlsZWQgdG8gcnVuIGNvbW1hbmQgIiVzIjogJXMnICUgKGNtZCwgb3V0cHV0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnL2Rldi9yb290IC9cclxuL2Rldi9zZGEzIC9tbnQnKQotCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfcWVtdV9lZmkoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY29yZS1pbWFnZS1taW5pbWFsIGVmaSBpbWFnZSB1bmRlciBxZW11IiIiCi0gICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTID0gIndpYyJcbldLU19GSUxFID0gIm1rZWZpZGlzay53a3MiXG4nCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIG92bWYnKS5zdGF0dXMpCi0gICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCi0KLSAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnLCBzc2g9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBydW5xZW11cGFyYW1zPSdvdm1mJywgaW1hZ2VfZnN0eXBlPSd3aWMnKSBhcyBxZW11OgotICAgICAgICAgICAgY21kID0gImdyZXAgc2RhLiAvcHJvYy9wYXJ0aXRpb25zICB8d2MgLWwiCi0gICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbChjbWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHN0YXR1cywgJ0ZhaWxlZCB0byBydW4gY29tbWFuZCAiJXMiOiAlcycgJSAoY21kLCBvdXRwdXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICczJykKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX21ha2VfZml4ZWRfc2l6ZV93a3Moc2l6ZSk6Ci0gICAgICAgICIiIgotICAgICAgICBDcmVhdGUgYSB3a3Mgb2YgYW4gaW1hZ2Ugd2l0aCBhIHNpbmdsZSBwYXJ0aXRpb24uIFNpemUgb2YgdGhlIHBhcnRpdGlvbiBpcyBzZXQKLSAgICAgICAgdXNpbmcgLS1maXhlZC1zaXplIGZsYWcuIFJldHVybnMgYSB0dXBsZTogKHBhdGggdG8gd2tzIGZpbGUsIHdrcyBpbWFnZSBuYW1lKQotICAgICAgICAiIiIKLSAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiLCBkZWxldGU9RmFsc2UpIGFzIHRlbXBmOgotICAgICAgICAgICAgd2tzcGF0aCA9IHRlbXBmLm5hbWUKLSAgICAgICAgICAgIHRlbXBmLndyaXRlKCJwYXJ0ICIgXAotICAgICAgICAgICAgICAgICAgICAgIi0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBoZGEgLS1hbGlnbiA0IC0tZml4ZWQtc2l6ZSAlZCAiCi0gICAgICAgICAgICAgICAgICAgICAiLS1mc3R5cGU9ZXh0NFxuIiAlIHNpemUpCi0gICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzcGF0aCkpWzBdCi0KLSAgICAgICAgcmV0dXJuIHdrc3BhdGgsIHdrc25hbWUKLQotICAgIGRlZiB0ZXN0X2ZpeGVkX3NpemUoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IGNyZWF0aW9uIG9mIGEgc2ltcGxlIGltYWdlIHdpdGggcGFydGl0aW9uIHNpemUgY29udHJvbGxlZCB0aHJvdWdoCi0gICAgICAgIC0tZml4ZWQtc2l6ZSBmbGFnCi0gICAgICAgICIiIgotICAgICAgICB3a3NwYXRoLCB3a3NuYW1lID0gV2ljLl9tYWtlX2ZpeGVkX3NpemVfd2tzKDIwMCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzcGF0aCwgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCi0gICAgICAgIG9zLnJlbW92ZSh3a3NwYXRoKQotICAgICAgICB3aWNvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4od2ljb3V0KSkKLQotICAgICAgICB3aWNpbWcgPSB3aWNvdXRbMF0KLQotICAgICAgICAjIHZlcmlmeSBwYXJ0aXRpb24gc2l6ZSB3aXRoIHdpYwotICAgICAgICByZXMgPSBydW5DbWQoInBhcnRlZCAtbSAlcyB1bml0IG1pYiBwIDI+L2Rldi9udWxsIiAlIHdpY2ltZywKLSAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9zdGF0dXM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290PXNlbGYubmF0aXZlX3N5c3Jvb3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKLQotICAgICAgICAjIHBhcnNlIHBhcnRlZCBvdXRwdXQgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgotICAgICAgICAjIEJZVDtcbgotICAgICAgICAjIC92YXIvdG1wL3dpYy9idWlsZC90bXBmd3ZqamtmXy0yMDE2MTExMDEyMjItaGRhLmRpcmVjdDoyMDBNaUI6ZmlsZTo1MTI6NTEyOm1zZG9zOjo7XG4KLSAgICAgICAgIyAxOjAuMDBNaUI6MjAwTWlCOjIwME1pQjpleHQ0Ojo7XG4KLSAgICAgICAgcGFydGxucyA9IHJlcy5vdXRwdXQuc3BsaXRsaW5lcygpWzI6XQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHBhcnRsbnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIxOjAuMDBNaUI6MjAwTWlCOjIwME1pQjpleHQ0Ojo7IiwgcGFydGxuc1swXSkKLQotICAgIGRlZiB0ZXN0X2ZpeGVkX3NpemVfZXJyb3Ioc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IGNyZWF0aW9uIG9mIGEgc2ltcGxlIGltYWdlIHdpdGggcGFydGl0aW9uIHNpemUgY29udHJvbGxlZCB0aHJvdWdoCi0gICAgICAgIC0tZml4ZWQtc2l6ZSBmbGFnLiBUaGUgc2l6ZSBvZiBwYXJ0aXRpb24gaXMgaW50ZW50aW9uYWxseSBzZXQgdG8gMU1pQgotICAgICAgICBpbiBvcmRlciB0byB0cmlnZ2VyIGFuIGVycm9yIGluIHdpYy4KLSAgICAgICAgIiIiCi0gICAgICAgIHdrc3BhdGgsIHdrc25hbWUgPSBXaWMuX21ha2VfZml4ZWRfc2l6ZV93a3MoMSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzcGF0aCwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKLSAgICAgICAgb3MucmVtb3ZlKHdrc3BhdGgpCi0gICAgICAgIHdpY291dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbih3aWNvdXQpKQotCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfcmF3Y29weV9wbHVnaW5fcWVtdShzZWxmKToKLSAgICAgICAgIiIiVGVzdCByYXdjb3B5IHBsdWdpbiBpbiBxZW11IiIiCi0gICAgICAgICMgYnVpbGQgZXh0NCBhbmQgd2ljIGltYWdlcwotICAgICAgICBmb3IgZnN0eXBlIGluICgiZXh0NCIsICJ3aWMiKToKLSAgICAgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTID0gIiVzIlxuV0tTX0ZJTEUgPSAidGVzdF9yYXdjb3B5X3BsdWdpbi53a3MuaW4iXG4nICUgZnN0eXBlCi0gICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKS5zdGF0dXMpCi0gICAgICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQotCi0gICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJywgc3NoPUZhbHNlLCBpbWFnZV9mc3R5cGU9J3dpYycpIGFzIHFlbXU6Ci0gICAgICAgICAgICBjbWQgPSAiZ3JlcCBzZGEuIC9wcm9jL3BhcnRpdGlvbnMgIHx3YyAtbCIKLSAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJzInKQotCi0gICAgZGVmIHRlc3RfcmF3Y29weV9wbHVnaW4oc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcmF3Y29weSBwbHVnaW4iIiIKLSAgICAgICAgaW1nID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgbWFjaGluZSA9IGdldF9iYl92YXIoJ01BQ0hJTkUnLCBpbWcpCi0gICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIikgYXMgd2tzOgotICAgICAgICAgICAgd2tzLndyaXRlbGluZXMoWydwYXJ0IC9ib290IC0tYWN0aXZlIC0tc291cmNlIGJvb3RpbWctcGNiaW9zXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IC8gLS1zb3VyY2UgcmF3Y29weSAtLXNvdXJjZXBhcmFtcz0iZmlsZT0lcy0lcy5leHQ0IiAtLXVzZS11dWlkXG4nXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbWcsIG1hY2hpbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib290bG9hZGVyIC0tdGltZW91dD0wIC0tYXBwZW5kPSJjb25zb2xlPXR0eVMwLDExNTIwMG44IlxuJ10pCi0gICAgICAgICAgICB3a3MuZmx1c2goKQotICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgJXMgLW8gJXMiICUgKHdrcy5uYW1lLCBpbWcsIHNlbGYucmVzdWx0ZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KLSAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKLQotICAgIGRlZiB0ZXN0X2ZzX3R5cGVzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGZpbGVzeXN0ZW0gdHlwZXMgZm9yIGVtcHR5IGFuZCBub3QgZW1wdHkgcGFydGl0aW9ucyIiIgotICAgICAgICBpbWcgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIpIGFzIHdrczoKLSAgICAgICAgICAgIHdrcy53cml0ZWxpbmVzKFsncGFydCBleHQyICAgLS1mc3R5cGUgZXh0MiAgICAgLS1zb3VyY2Ugcm9vdGZzXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGJ0cmZzICAtLWZzdHlwZSBidHJmcyAgICAtLXNvdXJjZSByb290ZnMgLS1zaXplIDQwTVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBzcXVhc2ggLS1mc3R5cGUgc3F1YXNoZnMgLS1zb3VyY2Ugcm9vdGZzXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IHN3YXAgICAtLWZzdHlwZSBzd2FwIC0tc2l6ZSAxTVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eXZmYXQgICAtLWZzdHlwZSB2ZmF0ICAgLS1zaXplIDFNXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5bXNkb3MgIC0tZnN0eXBlIG1zZG9zICAtLXNpemUgMU1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlleHQyICAgLS1mc3R5cGUgZXh0MiAgIC0tc2l6ZSAxTVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eWJ0cmZzICAtLWZzdHlwZSBidHJmcyAgLS1zaXplIDEwME1cbiddKQotICAgICAgICAgICAgd2tzLmZsdXNoKCkKLSAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lICVzIC1vICVzIiAlICh3a3MubmFtZSwgaW1nLCBzZWxmLnJlc3VsdGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCi0gICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCi0KLSAgICBkZWYgdGVzdF9raWNrc3RhcnRfcGFyc2VyKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdrcyBwYXJzZXIgb3B0aW9ucyIiIgotICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIpIGFzIHdrczoKLSAgICAgICAgICAgIHdrcy53cml0ZWxpbmVzKFsncGFydCAvIC0tZnN0eXBlIGV4dDMgLS1zb3VyY2Ugcm9vdGZzIC0tc3lzdGVtLWlkIDB4RkYgJ1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1vdmVyaGVhZC1mYWN0b3IgMS4yIC0tc2l6ZSAxMDBrXG4nXSkKLSAgICAgICAgICAgIHdrcy5mbHVzaCgpCi0gICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgKHdrcy5uYW1lLCBzZWxmLnJlc3VsdGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCi0gICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCi0KLSAgICBkZWYgdGVzdF9pbWFnZV9ib290cGFydF9nbG9iYmVkKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGdsb2JiZWQgc291cmNlcyB3aXRoIGltYWdlLWJvb3RwYXJ0IHBsdWdpbiIiIgotICAgICAgICBpbWcgPSAiY29yZS1pbWFnZS1taW5pbWFsIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzZGltYWdlLWJvb3RwYXJ0IC1lICVzIC1vICVzIiAlIChpbWcsIHNlbGYucmVzdWx0ZGlyKQotICAgICAgICBjb25maWcgPSAnSU1BR0VfQk9PVF9GSUxFUyA9ICIlcyoiJyAlIGdldF9iYl92YXIoJ0tFUk5FTF9JTUFHRVRZUEUnLCBpbWcpCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInNkaW1hZ2UtYm9vdHBhcnQtKmRpcmVjdCIpKSkKLQotICAgIGRlZiB0ZXN0X3NwYXJzZV9jb3B5KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHNwYXJzZV9jb3B5IHdpdGggRklFTUFQIGFuZCBTRUVLX0hPTEUgZmlsZW1hcCBBUElzIiIiCi0gICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ3NjcmlwdHMnLCAnbGliJywgJ3dpYycpCi0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBsaWJwYXRoKQotICAgICAgICBmcm9tICBmaWxlbWFwIGltcG9ydCBGaWxlbWFwRmllbWFwLCBGaWxlbWFwU2Vlaywgc3BhcnNlX2NvcHksIEVycm9yTm90U3VwcAotICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndpYy1zcGFyc2UiKSBhcyBzcGFyc2U6Ci0gICAgICAgICAgICBzcmNfbmFtZSA9IHNwYXJzZS5uYW1lCi0gICAgICAgICAgICBzcmNfc2l6ZSA9IDEwMjQgKiAxMAotICAgICAgICAgICAgc3BhcnNlLnRydW5jYXRlKHNyY19zaXplKQotICAgICAgICAgICAgIyB3cml0ZSBvbmUgYnl0ZSB0byB0aGUgZmlsZQotICAgICAgICAgICAgd2l0aCBvcGVuKHNyY19uYW1lLCAncitiJykgYXMgc2ZpbGU6Ci0gICAgICAgICAgICAgICAgc2ZpbGUuc2VlaygxMDI0ICogNCkKLSAgICAgICAgICAgICAgICBzZmlsZS53cml0ZShiJ1x4MDAnKQotICAgICAgICAgICAgZGVzdCA9IHNwYXJzZS5uYW1lICsgJy5vdXQnCi0gICAgICAgICAgICAjIGNvcHkgc3JjIGZpbGUgdG8gZGVzdCB1c2luZyBkaWZmZXJlbnQgZmlsZW1hcCBBUElzCi0gICAgICAgICAgICBmb3IgYXBpIGluIChGaWxlbWFwRmllbWFwLCBGaWxlbWFwU2VlaywgTm9uZSk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGVzdCk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc3BhcnNlX2NvcHkoc3BhcnNlLm5hbWUsIGRlc3QsIGFwaT1hcGkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEVycm9yTm90U3VwcDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUgIyBza2lwIHVuc3VwcG9ydGVkIEFQSQotICAgICAgICAgICAgICAgIGRlc3Rfc3RhdCA9IG9zLnN0YXQoZGVzdCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc3Rfc3RhdC5zdF9zaXplLCBzcmNfc2l6ZSkKLSAgICAgICAgICAgICAgICAjIDggYmxvY2tzIGlzIDRLIChwaHlzaWNhbCBzZWN0b3Igc2l6ZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc3Rfc3RhdC5zdF9ibG9ja3MsIDgpCi0gICAgICAgICAgICBvcy51bmxpbmsoZGVzdCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CmluZGV4IDMyNTVlM2EuLmY2MzkzNmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQpAQCAtMTgsNDQgKzE4LDE4IEBACiBmcm9tIG9lcWEuY29udHJvbGxlcnMudGVzdHRhcmdldGxvYWRlciBpbXBvcnQgVGVzdFRhcmdldExvYWRlcgogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiAKLWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLlFlbXVSdW5uZXInKQotCi1kZWYgZ2V0X3RhcmdldF9jb250cm9sbGVyKGQpOgotICAgIHRlc3R0YXJnZXQgPSBkLmdldFZhcigiVEVTVF9UQVJHRVQiKQotICAgICMgb2xkLCBzaW1wbGUgbmFtZXMKLSAgICBpZiB0ZXN0dGFyZ2V0ID09ICJxZW11IjoKLSAgICAgICAgcmV0dXJuIFFlbXVUYXJnZXQoZCkKLSAgICBlbGlmIHRlc3R0YXJnZXQgPT0gInNpbXBsZXJlbW90ZSI6Ci0gICAgICAgIHJldHVybiBTaW1wbGVSZW1vdGVUYXJnZXQoZCkKLSAgICBlbHNlOgotICAgICAgICAjIHVzZSB0aGUgY2xhc3MgbmFtZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIGlzIGl0IGEgY29yZSBjbGFzcyBkZWZpbmVkIGhlcmU/Ci0gICAgICAgICAgICBjb250cm9sbGVyID0gZ2V0YXR0cihzeXMubW9kdWxlc1tfX25hbWVfX10sIHRlc3R0YXJnZXQpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICMgbm9wZSwgcGVyaGFwcyBhIGxheWVyIGRlZmluZWQgb25lCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYmJwYXRoID0gZC5nZXRWYXIoIkJCUEFUSCIpLnNwbGl0KCc6JykKLSAgICAgICAgICAgICAgICB0ZXN0dGFyZ2V0bG9hZGVyID0gVGVzdFRhcmdldExvYWRlcigpCi0gICAgICAgICAgICAgICAgY29udHJvbGxlciA9IHRlc3R0YXJnZXRsb2FkZXIuZ2V0X2NvbnRyb2xsZXJfbW9kdWxlKHRlc3R0YXJnZXQsIGJicGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJGYWlsZWQgdG8gaW1wb3J0IHswfSBmcm9tIGF2YWlsYWJsZSBjb250cm9sbGVyIG1vZHVsZXM6XG57MX0iLmZvcm1hdCh0ZXN0dGFyZ2V0LHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpKQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgYmIuZmF0YWwoIkludmFsaWQgVEVTVF9UQVJHRVQgLSAiICsgc3RyKGUpKQotICAgICAgICByZXR1cm4gY29udHJvbGxlcihkKQotCi0KIGNsYXNzIEJhc2VUYXJnZXQob2JqZWN0LCBtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBzdXBwb3J0ZWRfaW1hZ2VfZnN0eXBlcyA9IFtdCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGxvZ2dlcik6CiAgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IE5vbmUKICAgICAgICAgc2VsZi5pcCA9IE5vbmUKICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBOb25lCiAgICAgICAgIHNlbGYuZGF0ZXRpbWUgPSBkLmdldFZhcignREFURVRJTUUnKQogICAgICAgICBzZWxmLnRlc3RkaXIgPSBkLmdldFZhcigiVEVTVF9MT0dfRElSIikKICAgICAgICAgc2VsZi5wbiA9IGQuZ2V0VmFyKCJQTiIpCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZGVwbG95KHNlbGYpOgpAQCAtNjUsNyArMzksNyBAQAogICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhzc2hsb2dsaW5rKToKICAgICAgICAgICAgIG9zLnVubGluayhzc2hsb2dsaW5rKQogICAgICAgICBvcy5zeW1saW5rKHNlbGYuc3NobG9nLCBzc2hsb2dsaW5rKQotICAgICAgICBsb2dnZXIuaW5mbygiU1NIIGxvZyBmaWxlOiAlcyIgJSAgc2VsZi5zc2hsb2cpCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlNTSCBsb2cgZmlsZTogJXMiICUgIHNlbGYuc3NobG9nKQogCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBhcmFtcz1Ob25lLCBzc2g9VHJ1ZSwgZXh0cmFfYm9vdHBhcmFtcz1Ob25lKToKQEAgLTExNSw5ICs4OSw5IEBACiAKICAgICBzdXBwb3J0ZWRfaW1hZ2VfZnN0eXBlcyA9IFsnZXh0MycsICdleHQ0JywgJ2NwaW8uZ3onLCAnd2ljJ10KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBpbWFnZV9mc3R5cGU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGxvZ2dlciwgaW1hZ2VfZnN0eXBlPU5vbmUpOgogCi0gICAgICAgIHN1cGVyKFFlbXVUYXJnZXQsIHNlbGYpLl9faW5pdF9fKGQpCisgICAgICAgIHN1cGVyKFFlbXVUYXJnZXQsIHNlbGYpLl9faW5pdF9fKGQsIGxvZ2dlcikKIAogICAgICAgICBzZWxmLnJvb3RmcyA9ICcnCiAgICAgICAgIHNlbGYua2VybmVsID0gJycKQEAgLTE0NSw3ICsxMTksNyBAQAogICAgICAgICBzZWxmLnFlbXVydW5uZXJsb2cgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAncWVtdXJ1bm5lcl9sb2cuJXMnICUgc2VsZi5kYXRldGltZSkKICAgICAgICAgbG9nZ2VyaGFuZGxlciA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoc2VsZi5xZW11cnVubmVybG9nKQogICAgICAgICBsb2dnZXJoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcigiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiKSkKLSAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIobG9nZ2VyaGFuZGxlcikKKyAgICAgICAgc2VsZi5sb2dnZXIuYWRkSGFuZGxlcihsb2dnZXJoYW5kbGVyKQogICAgICAgICBvZS5wYXRoLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShzZWxmLnFlbXVydW5uZXJsb2cpLCBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAncWVtdXJ1bm5lcl9sb2cnKSwgZm9yY2U9VHJ1ZSkKIAogICAgICAgICBpZiBkLmdldFZhcigiRElTVFJPIikgPT0gInBva3ktdGlueSI6CkBAIC0xNTYsNyArMTMwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ID0gZC5nZXRWYXIoIkJCX09SSUdFTlYiLCBGYWxzZSkuZ2V0VmFyKCJESVNQTEFZIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZSA9IHNlbGYucWVtdWxvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgPSBzZWxmLmtlcm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290dGltZSA9IGludChkLmdldFZhcigiVEVTVF9RRU1VQk9PVF9USU1FT1VUIikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3R0aW1lID0gaW50KGQuZ2V0VmFyKCJURVNUX1FFTVVCT09UX1RJTUVPVVQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2VyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5ydW5uZXIgPSBRZW11UnVubmVyKG1hY2hpbmU9ZC5nZXRWYXIoIk1BQ0hJTkUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290ZnM9c2VsZi5yb290ZnMsCkBAIC0xNjcsNyArMTQyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290dGltZSA9IGludChkLmdldFZhcigiVEVTVF9RRU1VQk9PVF9USU1FT1VUIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9rdm0gPSB1c2Vfa3ZtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfZGlyID0gZHVtcF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHMgPSBkLmdldFZhcigidGVzdGltYWdlX2R1bXBfaG9zdCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaG9zdF9jbWRzID0gZC5nZXRWYXIoInRlc3RpbWFnZV9kdW1wX2hvc3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnZXIpCiAKICAgICAgICAgc2VsZi50YXJnZXRfZHVtcGVyID0gVGFyZ2V0RHVtcGVyKGR1bXBfdGFyZ2V0X2NtZHMsIGR1bXBfZGlyLCBzZWxmLnJ1bm5lcikKIApAQCAtMTc5LDggKzE1NSw4IEBACiAgICAgICAgICAgICBvcy51bmxpbmsocWVtdWxvZ2xpbmspCiAgICAgICAgIG9zLnN5bWxpbmsoc2VsZi5xZW11bG9nLCBxZW11bG9nbGluaykKIAotICAgICAgICBsb2dnZXIuaW5mbygicm9vdGZzIGZpbGU6ICVzIiAlICBzZWxmLnJvb3RmcykKLSAgICAgICAgbG9nZ2VyLmluZm8oIlFlbXUgbG9nIGZpbGU6ICVzIiAlIHNlbGYucWVtdWxvZykKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygicm9vdGZzIGZpbGU6ICVzIiAlICBzZWxmLnJvb3RmcykKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUWVtdSBsb2cgZmlsZTogJXMiICUgc2VsZi5xZW11bG9nKQogICAgICAgICBzdXBlcihRZW11VGFyZ2V0LCBzZWxmKS5kZXBsb3koKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBhcmFtcz1Ob25lLCBzc2g9VHJ1ZSwgZXh0cmFfYm9vdHBhcmFtcz0nJywgcnVucWVtdXBhcmFtcz0nJywgbGF1bmNoX2NtZD0nJywgZGlzY2FyZF93cml0ZXM9VHJ1ZSk6CkBAIC0yMzIsMTQgKzIwOCwxNCBAQAogICAgICAgICAgICAgc2VsZi5wb3J0ID0gYWRkci5zcGxpdCgiOiIpWzFdCiAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgc2VsZi5wb3J0ID0gTm9uZQotICAgICAgICBsb2dnZXIuaW5mbygiVGFyZ2V0IElQOiAlcyIgJSBzZWxmLmlwKQorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJUYXJnZXQgSVA6ICVzIiAlIHNlbGYuaXApCiAgICAgICAgIHNlbGYuc2VydmVyX2lwID0gZC5nZXRWYXIoIlRFU1RfU0VSVkVSX0lQIikKICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX2lwOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lwID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydpcCcsICdyb3V0ZScsICdnZXQnLCBzZWxmLmlwIF0pLnNwbGl0KCJcbiIpWzBdLnNwbGl0KClbLTFdCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIkZhaWxlZCB0byBkZXRlcm1pbmUgdGhlIGhvc3QgSVAgYWRkcmVzcyAoYWx0ZXJuYXRpdmVseSB5b3UgY2FuIHNldCBURVNUX1NFUlZFUl9JUCB3aXRoIHRoZSBJUCBhZGRyZXNzIG9mIHRoaXMgbWFjaGluZSk6ICVzIiAlIGUpCi0gICAgICAgIGxvZ2dlci5pbmZvKCJTZXJ2ZXIgSVA6ICVzIiAlIHNlbGYuc2VydmVyX2lwKQorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTZXJ2ZXIgSVA6ICVzIiAlIHNlbGYuc2VydmVyX2lwKQogCiAgICAgZGVmIGRlcGxveShzZWxmKToKICAgICAgICAgc3VwZXIoU2ltcGxlUmVtb3RlVGFyZ2V0LCBzZWxmKS5kZXBsb3koKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9fX2luaXRfXy5weQppbmRleCA0ODVkZTAzLi5kMzhhMzIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9fX2luaXRfXy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9fX2luaXRfXy5weQpAQCAtMiw3ICsyLDYgQEAKIGZyb20gcGtndXRpbCBpbXBvcnQgZXh0ZW5kX3BhdGgKIF9fcGF0aF9fID0gZXh0ZW5kX3BhdGgoX19wYXRoX18sIF9fbmFtZV9fKQogCi0KICMgQm9ycm93ZWQgZnJvbSBDYWxsZWRQcm9jZXNzRXJyb3IKIAogY2xhc3MgQ29tbWFuZEVycm9yKEV4Y2VwdGlvbik6CkBAIC02NiwzICs2NSwzOSBAQAogICAgIGxvZ2dlci5pbmZvID0gX2JpdGJha2VfbG9nX2luZm8KIAogICAgIHJldHVybiBsb2dnZXIKKworZGVmIGxvYWRfdGVzdF9jb21wb25lbnRzKGxvZ2dlciwgZXhlY3V0b3IpOgorICAgIGltcG9ydCBzeXMKKyAgICBpbXBvcnQgb3MKKyAgICBpbXBvcnQgaW1wb3J0bGliCisKKyAgICBmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0RXhlY3V0b3IKKworICAgIGNvbXBvbmVudHMgPSB7fQorCisgICAgZm9yIHBhdGggaW4gc3lzLnBhdGg6CisgICAgICAgIGJhc2VfZGlyID0gb3MucGF0aC5qb2luKHBhdGgsICdvZXFhJykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYmFzZV9kaXIpIGFuZCBvcy5wYXRoLmlzZGlyKGJhc2VfZGlyKToKKyAgICAgICAgICAgIGZvciBmaWxlIGluIG9zLmxpc3RkaXIoYmFzZV9kaXIpOgorICAgICAgICAgICAgICAgIGNvbXBfbmFtZSA9IGZpbGUKKyAgICAgICAgICAgICAgICBjb21wX2NvbnRleHQgPSBvcy5wYXRoLmpvaW4oYmFzZV9kaXIsIGZpbGUsICdjb250ZXh0LnB5JykKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb21wX2NvbnRleHQpOgorICAgICAgICAgICAgICAgICAgICBjb21wX3BsdWdpbiA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdvZXFhLiVzLiVzJyAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tcF9uYW1lLCAnY29udGV4dCcpKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhjb21wX3BsdWdpbi5fZXhlY3V0b3JfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9FVGVzdENvbnRleHRFeGVjdXRvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDb21wb25lbnQgJXMgaW4gJXMsIF9leGVjdXRvcl9jbGFzcyAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNuJ3QgZGVyaXZlZCBmcm9tIE9FVGVzdENvbnRleHRFeGVjdXRvci4iXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb21wX25hbWUsIGNvbXBfY29udGV4dCkpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbXBfcGx1Z2luLl9leGVjdXRvcl9jbGFzcy5fc2NyaXB0X2V4ZWN1dG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gZXhlY3V0b3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50c1tjb21wX25hbWVdID0gY29tcF9wbHVnaW4uX2V4ZWN1dG9yX2NsYXNzKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNvbXBvbmVudCAlcyBpbiAlcyBkb24ndCBoYXZlICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfZXhlY3V0b3JfY2xhc3MgZGVmaW5lZC4iICUgKGNvbXBfbmFtZSwgY29tcF9jb250ZXh0KSkKKworICAgIHJldHVybiBjb21wb25lbnRzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9idWlsZHByb2plY3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9idWlsZHByb2plY3QucHkKaW5kZXggNDg3ZjA4Yi4uNzIxZjM1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvYnVpbGRwcm9qZWN0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2J1aWxkcHJvamVjdC5weQpAQCAtNTIsNCArNTIsNCBAQAogCiAgICAgZGVmIGNsZWFuKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW4oJ3JtIC1yZiAlcycgJSBzZWxmLnRhcmdldGRpcikKLSAgICAgICAgc3VicHJvY2Vzcy5jYWxsKCdybSAtZiAlcycgJSBzZWxmLmxvY2FsYXJjaGl2ZSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKCdybSAtZiAlcycgJSBzZWxmLmxvY2FsYXJjaGl2ZSwgc2hlbGw9VHJ1ZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKaW5kZXggNTcyODZmYy4uMGJiOTAwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKQEAgLTEzLDYgKzEzLDcgQEAKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQogaW1wb3J0IGxvZ2dpbmcKIGZyb20gb2VxYS51dGlscyBpbXBvcnQgQ29tbWFuZEVycm9yCiBmcm9tIG9lcWEudXRpbHMgaW1wb3J0IGZ0b29scwpAQCAtMjUsNyArMjYsNyBAQAogICAgIHBhc3MKIAogY2xhc3MgQ29tbWFuZChvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21tYW5kLCBiZz1GYWxzZSwgdGltZW91dD1Ob25lLCBkYXRhPU5vbmUsICoqb3B0aW9ucyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1hbmQsIGJnPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGRhdGE9Tm9uZSwgb3V0cHV0X2xvZz1Ob25lLCAqKm9wdGlvbnMpOgogCiAgICAgICAgIHNlbGYuZGVmYXVsdG9wdHMgPSB7CiAgICAgICAgICAgICAic3Rkb3V0Ijogc3VicHJvY2Vzcy5QSVBFLApAQCAtNDgsNDEgKzQ5LDEwMyBAQAogICAgICAgICBzZWxmLm9wdGlvbnMudXBkYXRlKG9wdGlvbnMpCiAKICAgICAgICAgc2VsZi5zdGF0dXMgPSBOb25lCisgICAgICAgICMgV2UgY29sbGVjdCBjaHVua3Mgb2Ygb3V0cHV0IGJlZm9yZSBqb2luaW5nIHRoZW0gYXQgdGhlIGVuZC4KKyAgICAgICAgc2VsZi5fb3V0cHV0X2NodW5rcyA9IFtdCisgICAgICAgIHNlbGYuX2Vycm9yX2NodW5rcyA9IFtdCiAgICAgICAgIHNlbGYub3V0cHV0ID0gTm9uZQogICAgICAgICBzZWxmLmVycm9yID0gTm9uZQotICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKKyAgICAgICAgc2VsZi50aHJlYWRzID0gW10KIAorICAgICAgICBzZWxmLm91dHB1dF9sb2cgPSBvdXRwdXRfbG9nCiAgICAgICAgIHNlbGYubG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInV0aWxzLmNvbW1hbmRzIikKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHNlbGYucHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5jbWQsICoqc2VsZi5vcHRpb25zKQogCi0gICAgICAgIGRlZiBjb21tVGhyZWFkKCk6Ci0gICAgICAgICAgICBzZWxmLm91dHB1dCwgc2VsZi5lcnJvciA9IHNlbGYucHJvY2Vzcy5jb21tdW5pY2F0ZShzZWxmLmRhdGEpCisgICAgICAgIGRlZiByZWFkVGhyZWFkKG91dHB1dCwgc3RyZWFtLCBsb2dmdW5jKToKKyAgICAgICAgICAgIGlmIGxvZ2Z1bmM6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3RyZWFtOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGxvZ2Z1bmMobGluZS5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSdyZXBsYWNlJykucnN0cmlwKCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoc3RyZWFtLnJlYWQoKSkKIAotICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWNvbW1UaHJlYWQpCi0gICAgICAgIHNlbGYudGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgZGVmIHJlYWRTdGRlcnJUaHJlYWQoKToKKyAgICAgICAgICAgIHJlYWRUaHJlYWQoc2VsZi5fZXJyb3JfY2h1bmtzLCBzZWxmLnByb2Nlc3Muc3RkZXJyLCBzZWxmLm91dHB1dF9sb2cuZXJyb3IgaWYgc2VsZi5vdXRwdXRfbG9nIGVsc2UgTm9uZSkKKworICAgICAgICBkZWYgcmVhZFN0ZG91dFRocmVhZCgpOgorICAgICAgICAgICAgcmVhZFRocmVhZChzZWxmLl9vdXRwdXRfY2h1bmtzLCBzZWxmLnByb2Nlc3Muc3Rkb3V0LCBzZWxmLm91dHB1dF9sb2cuaW5mbyBpZiBzZWxmLm91dHB1dF9sb2cgZWxzZSBOb25lKQorCisgICAgICAgIGRlZiB3cml0ZVRocmVhZCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzcy5zdGRpbi53cml0ZShzZWxmLmRhdGEpCisgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzLnN0ZGluLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4OgorICAgICAgICAgICAgICAgICMgSXQncyBub3QgYW4gZXJyb3Igd2hlbiB0aGUgY29tbWFuZCBkb2VzIG5vdCBjb25zdW1lIGFsbAorICAgICAgICAgICAgICAgICMgb2Ygb3VyIGRhdGEuIHN1YnByb2Nlc3MuY29tbXVuaWNhdGUoKSBhbHNvIGlnbm9yZXMgdGhhdC4KKyAgICAgICAgICAgICAgICBpZiBleC5lcnJubyAhPSBFUElQRToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAjIFdlIHdyaXRlIGluIGEgc2VwYXJhdGUgdGhyZWFkIGJlY2F1c2UgdGhlbiB3ZSBjYW4gcmVhZAorICAgICAgICAjIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgZGVhZGxvY2tzLiBUaGUgYWRkaXRpb25hbCB0aHJlYWQgaXMKKyAgICAgICAgIyBleHBlY3RlZCB0byB0ZXJtaW5hdGUgYnkgaXRzZWxmIGFuZCB3ZSBtYXJrIGl0IGFzIGEgZGFlbW9uLAorICAgICAgICAjIHNvIGV2ZW4gaXQgc2hvdWxkIGhhcHBlbiB0byBub3QgdGVybWluYXRlIGZvciB3aGF0ZXZlcgorICAgICAgICAjIHJlYXNvbiwgdGhlIG1haW4gcHJvY2VzcyB3aWxsIHN0aWxsIGV4aXQsIHdoaWNoIHdpbGwgdGhlbgorICAgICAgICAjIGtpbGwgdGhlIHdyaXRlIHRocmVhZC4KKyAgICAgICAgaWYgc2VsZi5kYXRhOgorICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d3JpdGVUaHJlYWQsIGRhZW1vbj1UcnVlKS5zdGFydCgpCisgICAgICAgIGlmIHNlbGYucHJvY2Vzcy5zdGRlcnI6CisgICAgICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZWFkU3RkZXJyVGhyZWFkKQorICAgICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgIHNlbGYudGhyZWFkcy5hcHBlbmQodGhyZWFkKQorICAgICAgICBpZiBzZWxmLm91dHB1dF9sb2c6CisgICAgICAgICAgICBzZWxmLm91dHB1dF9sb2cuaW5mbygnUnVubmluZzogJXMnICUgc2VsZi5jbWQpCisgICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJlYWRTdGRvdXRUaHJlYWQpCisgICAgICAgIHRocmVhZC5zdGFydCgpCisgICAgICAgIHNlbGYudGhyZWFkcy5hcHBlbmQodGhyZWFkKQogCiAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJSdW5uaW5nIGNvbW1hbmQgJyVzJyIgJSBzZWxmLmNtZCkKIAogICAgICAgICBpZiBub3Qgc2VsZi5iZzoKLSAgICAgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oc2VsZi50aW1lb3V0KQorICAgICAgICAgICAgaWYgc2VsZi50aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZm9yIHRocmVhZCBpbiBzZWxmLnRocmVhZHM6CisgICAgICAgICAgICAgICAgICAgIHRocmVhZC5qb2luKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHNlbGYudGltZW91dAorICAgICAgICAgICAgICAgIGZvciB0aHJlYWQgaW4gc2VsZi50aHJlYWRzOgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKSAKKyAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gMAorICAgICAgICAgICAgICAgICAgICB0aHJlYWQuam9pbih0aW1lb3V0KQogICAgICAgICAgICAgc2VsZi5zdG9wKCkKIAogICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnRocmVhZC5pc0FsaXZlKCk6Ci0gICAgICAgICAgICBzZWxmLnByb2Nlc3MudGVybWluYXRlKCkKKyAgICAgICAgZm9yIHRocmVhZCBpbiBzZWxmLnRocmVhZHM6CisgICAgICAgICAgICBpZiB0aHJlYWQuaXNBbGl2ZSgpOgorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzcy50ZXJtaW5hdGUoKQogICAgICAgICAgICAgIyBsZXQncyBnaXZlIGl0IG1vcmUgdGltZSB0byB0ZXJtaW5hdGUgZ3JhY2VmdWxseSBiZWZvcmUga2lsbGluZyBpdAotICAgICAgICAgICAgc2VsZi50aHJlYWQuam9pbig1KQotICAgICAgICAgICAgaWYgc2VsZi50aHJlYWQuaXNBbGl2ZSgpOgorICAgICAgICAgICAgdGhyZWFkLmpvaW4oNSkKKyAgICAgICAgICAgIGlmIHRocmVhZC5pc0FsaXZlKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzLmtpbGwoKQotICAgICAgICAgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oKQorICAgICAgICAgICAgICAgIHRocmVhZC5qb2luKCkKIAotICAgICAgICBpZiBub3Qgc2VsZi5vdXRwdXQ6Ci0gICAgICAgICAgICBzZWxmLm91dHB1dCA9ICIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm91dHB1dCA9IHNlbGYub3V0cHV0LmRlY29kZSgidXRmLTgiLCBlcnJvcnM9J3JlcGxhY2UnKS5yc3RyaXAoKQotICAgICAgICBzZWxmLnN0YXR1cyA9IHNlbGYucHJvY2Vzcy5wb2xsKCkKKyAgICAgICAgZGVmIGZpbmFsaXplX291dHB1dChkYXRhKToKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGRhdGEgPSAiIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gYiIiLmpvaW4oZGF0YSkKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSdyZXBsYWNlJykucnN0cmlwKCkKKyAgICAgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBmaW5hbGl6ZV9vdXRwdXQoc2VsZi5fb3V0cHV0X2NodW5rcykKKyAgICAgICAgc2VsZi5fb3V0cHV0X2NodW5rcyA9IE5vbmUKKyAgICAgICAgIyBzZWxmLmVycm9yIHVzZWQgdG8gYmUgYSBieXRlIHN0cmluZyBlYXJsaWVyLCBwcm9iYWJseSB1bmludGVudGlvbmFsbHkuCisgICAgICAgICMgTm93IGl0IGlzIGEgbm9ybWFsIHN0cmluZywganVzdCBsaWtlIHNlbGYub3V0cHV0LgorICAgICAgICBzZWxmLmVycm9yID0gZmluYWxpemVfb3V0cHV0KHNlbGYuX2Vycm9yX2NodW5rcykKKyAgICAgICAgc2VsZi5fZXJyb3JfY2h1bmtzID0gTm9uZQorICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHRoZSBwcm9jZXNzIGhhcyBjbG9zZWQgc3Rkb3V0L3N0ZGVyciwgc28KKyAgICAgICAgIyBpdCBpcyBzYWZlIGFuZCBuZWNlc3NhcnkgdG8gd2FpdCBmb3IgdGhlIGFjdHVhbCBwcm9jZXNzIGNvbXBsZXRpb24uCisgICAgICAgIHNlbGYuc3RhdHVzID0gc2VsZi5wcm9jZXNzLndhaXQoKQogCiAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJDb21tYW5kICclcycgcmV0dXJuZWQgJWQgYXMgZXhpdCBjb2RlLiIgJSAoc2VsZi5jbWQsIHNlbGYuc3RhdHVzKSkKICAgICAgICAgIyBsb2dnaW5nIHRoZSBjb21wbGV0ZSBvdXRwdXQgaXMgaW5zYW5lCkBAIC05OCw3ICsxNjEsNyBAQAogCiAKIGRlZiBydW5DbWQoY29tbWFuZCwgaWdub3JlX3N0YXR1cz1GYWxzZSwgdGltZW91dD1Ob25lLCBhc3NlcnRfZXJyb3I9VHJ1ZSwKLSAgICAgICAgICBuYXRpdmVfc3lzcm9vdD1Ob25lLCBsaW1pdF9leGNfb3V0cHV0PTAsICoqb3B0aW9ucyk6CisgICAgICAgICAgbmF0aXZlX3N5c3Jvb3Q9Tm9uZSwgbGltaXRfZXhjX291dHB1dD0wLCBvdXRwdXRfbG9nPU5vbmUsICoqb3B0aW9ucyk6CiAgICAgcmVzdWx0ID0gUmVzdWx0KCkKIAogICAgIGlmIG5hdGl2ZV9zeXNyb290OgpAQCAtMTA4LDcgKzE3MSw3IEBACiAgICAgICAgIG5lbnZbJ1BBVEgnXSA9IGV4dHJhX3BhdGhzICsgJzonICsgbmVudi5nZXQoJ1BBVEgnLCAnJykKICAgICAgICAgb3B0aW9uc1snZW52J10gPSBuZW52CiAKLSAgICBjbWQgPSBDb21tYW5kKGNvbW1hbmQsIHRpbWVvdXQ9dGltZW91dCwgKipvcHRpb25zKQorICAgIGNtZCA9IENvbW1hbmQoY29tbWFuZCwgdGltZW91dD10aW1lb3V0LCBvdXRwdXRfbG9nPW91dHB1dF9sb2csICoqb3B0aW9ucykKICAgICBjbWQucnVuKCkKIAogICAgIHJlc3VsdC5jb21tYW5kID0gY29tbWFuZApAQCAtMTMyLDcgKzE5NSw3IEBACiAgICAgcmV0dXJuIHJlc3VsdAogCiAKLWRlZiBiaXRiYWtlKGNvbW1hbmQsIGlnbm9yZV9zdGF0dXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgcG9zdGNvbmZpZz1Ob25lLCAqKm9wdGlvbnMpOgorZGVmIGJpdGJha2UoY29tbWFuZCwgaWdub3JlX3N0YXR1cz1GYWxzZSwgdGltZW91dD1Ob25lLCBwb3N0Y29uZmlnPU5vbmUsIG91dHB1dF9sb2c9Tm9uZSwgKipvcHRpb25zKToKIAogICAgIGlmIHBvc3Rjb25maWc6CiAgICAgICAgIHBvc3Rjb25maWdfZmlsZSA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSwgJ29lcWEtcG9zdC5jb25mJykKQEAgLTE0Nyw3ICsyMTAsNyBAQAogICAgICAgICBjbWQgPSBbICJiaXRiYWtlIiBdICsgW2EgZm9yIGEgaW4gKGNvbW1hbmQgKyBleHRyYV9hcmdzLnNwbGl0KCIgIikpIGlmIGEgbm90IGluIFsiIl1dCiAKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBydW5DbWQoY21kLCBpZ25vcmVfc3RhdHVzLCB0aW1lb3V0LCAqKm9wdGlvbnMpCisgICAgICAgIHJldHVybiBydW5DbWQoY21kLCBpZ25vcmVfc3RhdHVzLCB0aW1lb3V0LCBvdXRwdXRfbG9nPW91dHB1dF9sb2csICoqb3B0aW9ucykKICAgICBmaW5hbGx5OgogICAgICAgICBpZiBwb3N0Y29uZmlnOgogICAgICAgICAgICAgb3MucmVtb3ZlKHBvc3Rjb25maWdfZmlsZSkKQEAgLTIzMyw2ICsyOTYsMTIgQEAKICAgICBpbXBvcnQgYmIudGluZm9pbAogICAgIGltcG9ydCBiYi5idWlsZAogCisgICAgIyBOZWVkIGEgbm9uLSdCaXRCYWtlJyBsb2dnZXIgdG8gY2FwdHVyZSB0aGUgcnVubmVyIG91dHB1dAorICAgIHRhcmdldGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdUYXJnZXRSdW5uZXInKQorICAgIHRhcmdldGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKKyAgICB0YXJnZXRsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorCiAgICAgdGluZm9pbCA9IGJiLnRpbmZvaWwuVGluZm9pbCgpCiAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD1UcnVlKQogICAgIHRyeToKQEAgLTI1MCwzMSArMzE5LDE1IEBACiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIG92ZXJyaWRlcy5pdGVtcygpOgogICAgICAgICAgICAgcmVjaXBlZGF0YS5zZXRWYXIoa2V5LCB2YWx1ZSkKIAotICAgICAgICAjIFRoZSBRZW11UnVubmVyIGxvZyBpcyBzYXZlZCBvdXQsIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpcyBhdCB0aGUgcmlnaHQKLSAgICAgICAgIyBsb2cgbGV2ZWwgKGFuZCB0aGVuIGVuc3VyZSB0aGF0IHNpbmNlIGl0J3MgYSBjaGlsZCBvZiB0aGUgQml0QmFrZSBsb2dnZXIsCi0gICAgICAgICMgd2UgZGlzYWJsZSBwcm9wYWdhdGlvbiBzbyB3ZSBkb24ndCB0aGVuIHNlZSB0aGUgbG9nIGV2ZW50cyBvbiB0aGUgY29uc29sZSkKLSAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuUWVtdVJ1bm5lcicpCi0gICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQotICAgICAgICBsb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKICAgICAgICAgbG9nZGlyID0gcmVjaXBlZGF0YS5nZXRWYXIoIlRFU1RfTE9HX0RJUiIpCiAKLSAgICAgICAgcWVtdSA9IG9lcWEudGFyZ2V0Y29udHJvbC5RZW11VGFyZ2V0KHJlY2lwZWRhdGEsIGltYWdlX2ZzdHlwZSkKKyAgICAgICAgcWVtdSA9IG9lcWEudGFyZ2V0Y29udHJvbC5RZW11VGFyZ2V0KHJlY2lwZWRhdGEsIHRhcmdldGxvZ2dlciwgaW1hZ2VfZnN0eXBlKQogICAgIGZpbmFsbHk6CiAgICAgICAgICMgV2UgbmVlZCB0byBzaHV0IGRvd24gdGluZm9pbCBlYXJseSBoZXJlIGluIGNhc2Ugd2UgYWN0dWFsbHkgd2FudAogICAgICAgICAjIHRvIHJ1biB0aW5mb2lsLXVzaW5nIHV0aWxpdGllcyB3aXRoIHRoZSBydW5uaW5nIFFFTVUgaW5zdGFuY2UuCiAgICAgICAgICMgTHVja2lseSBRZW11VGFyZ2V0IGRvZXNuJ3QgbmVlZCBpdCBhZnRlciB0aGUgY29uc3RydWN0b3IuCiAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQogCi0gICAgIyBTZXR1cCBiaXRiYWtlIGxvZ2dlciBhcyBjb25zb2xlIGhhbmRsZXIgaXMgcmVtb3ZlZCBieSB0aW5mb2lsLnNodXRkb3duCi0gICAgYmJsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignQml0QmFrZScpCi0gICAgYmJsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQotICAgIGNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKLSAgICBiYmZvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcigiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiKQotICAgIGlmIHN5cy5zdGRvdXQuaXNhdHR5KCk6Ci0gICAgICAgIGJiZm9ybWF0LmVuYWJsZV9jb2xvcigpCi0gICAgY29uc29sZS5zZXRGb3JtYXR0ZXIoYmJmb3JtYXQpCi0gICAgYmJsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlKQotCiAgICAgdHJ5OgogICAgICAgICBxZW11LmRlcGxveSgpCiAgICAgICAgIHRyeToKQEAgLTI4OSw2ICszNDIsNyBAQAogICAgICAgICAgICAgcWVtdS5zdG9wKCkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcGFzcworICAgIHRhcmdldGxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpCiAKIGRlZiB1cGRhdGVFbnYoZW52X2ZpbGUpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZ2l0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZ2l0LnB5CmluZGV4IGUwY2IzZjAuLjc1N2UzZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2dpdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9naXQucHkKQEAgLTY0LDcgKzY0LDcgQEAKICAgICBkZWYgcmV2X3BhcnNlKHNlbGYsIHJldmlzaW9uKToKICAgICAgICAgIiIiRG8gZ2l0IHJldi1wYXJzZSIiIgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5fY21kKFsncmV2LXBhcnNlJywgcmV2aXNpb25dKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NtZChbJ3Jldi1wYXJzZScsICctLXZlcmlmeScsIHJldmlzaW9uXSkKICAgICAgICAgZXhjZXB0IEdpdEVycm9yOgogICAgICAgICAgICAgIyBSZXZpc2lvbiBkb2VzIG5vdCBleGlzdAogICAgICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weQppbmRleCBiMzc3ZGNkLi4wNjcwNjI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5CkBAIC05LDcgKzksNyBAQAogIyBBIHBhcnNlciB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHdlYXRoZXIgYSBsaW5lIGlzIGEgdGVzdCByZXN1bHQgb3IgYSBzZWN0aW9uIHN0YXRlbWVudC4KIGNsYXNzIExwYXJzZXIob2JqZWN0KToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0XzBfcGFzc19yZWdleCwgdGVzdF8wX2ZhaWxfcmVnZXgsIHNlY3Rpb25fMF9iZWdpbl9yZWdleD1Ob25lLCBzZWN0aW9uXzBfZW5kX3JlZ2V4PU5vbmUsICoqa3dhcmdzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF8wX3Bhc3NfcmVnZXgsIHRlc3RfMF9mYWlsX3JlZ2V4LCB0ZXN0XzBfc2tpcF9yZWdleCwgc2VjdGlvbl8wX2JlZ2luX3JlZ2V4PU5vbmUsIHNlY3Rpb25fMF9lbmRfcmVnZXg9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICAjIEluaXRpYWxpemUgdGhlIGFyZ3VtZW50cyBkaWN0aW9uYXJ5CiAgICAgICAgIGlmIGt3YXJnczoKICAgICAgICAgICAgIHNlbGYuYXJncyA9IGt3YXJncwpAQCAtMTksMTIgKzE5LDEzIEBACiAgICAgICAgICMgQWRkIHRoZSBkZWZhdWx0IGFyZ3MgdG8gdGhlIGRpY3Rpb25hcnkKICAgICAgICAgc2VsZi5hcmdzWyd0ZXN0XzBfcGFzc19yZWdleCddID0gdGVzdF8wX3Bhc3NfcmVnZXgKICAgICAgICAgc2VsZi5hcmdzWyd0ZXN0XzBfZmFpbF9yZWdleCddID0gdGVzdF8wX2ZhaWxfcmVnZXgKKyAgICAgICAgc2VsZi5hcmdzWyd0ZXN0XzBfc2tpcF9yZWdleCddID0gdGVzdF8wX3NraXBfcmVnZXgKICAgICAgICAgaWYgc2VjdGlvbl8wX2JlZ2luX3JlZ2V4OgogICAgICAgICAgICAgc2VsZi5hcmdzWydzZWN0aW9uXzBfYmVnaW5fcmVnZXgnXSA9IHNlY3Rpb25fMF9iZWdpbl9yZWdleAogICAgICAgICBpZiBzZWN0aW9uXzBfZW5kX3JlZ2V4OgogICAgICAgICAgICAgc2VsZi5hcmdzWydzZWN0aW9uXzBfZW5kX3JlZ2V4J10gPSBzZWN0aW9uXzBfZW5kX3JlZ2V4CiAKLSAgICAgICAgc2VsZi50ZXN0X3Bvc3NpYmxlX3N0YXR1cyA9IFsncGFzcycsICdmYWlsJywgJ2Vycm9yJ10KKyAgICAgICAgc2VsZi50ZXN0X3Bvc3NpYmxlX3N0YXR1cyA9IFsncGFzcycsICdmYWlsJywgJ2Vycm9yJywgJ3NraXAnXQogICAgICAgICBzZWxmLnNlY3Rpb25fcG9zc2libGVfc3RhdHVzID0gWydiZWdpbicsICdlbmQnXQogCiAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZWQgPSBGYWxzZQpAQCAtMTA4LDcgKzEwOSw3IEBACiAgICAgICAgICAgICBwcmVmaXggPSAnJwogICAgICAgICAgICAgZm9yIHggaW4gdGVzdF9zdGF0dXM6CiAgICAgICAgICAgICAgICAgcHJlZml4ICs9eCsnLicKLSAgICAgICAgICAgIGlmIChzZWN0aW9uICE9ICcnKToKKyAgICAgICAgICAgIGlmIHNlY3Rpb246CiAgICAgICAgICAgICAgICAgcHJlZml4ICs9IHNlY3Rpb24KICAgICAgICAgICAgIHNlY3Rpb25fZmlsZSA9IG9zLnBhdGguam9pbih0YXJnZXRfZGlyLCBwcmVmaXgpCiAgICAgICAgICAgICAjIHB1cmdlIHRoZSBmaWxlIGNvbnRlbnRzIGlmIGl0IGV4aXN0cwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbWV0YWRhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9tZXRhZGF0YS5weQppbmRleCBjYjgxMTU1Li42NWJiZGM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9tZXRhZGF0YS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9tZXRhZGF0YS5weQpAQCAtMTAsMTkgKzEwLDkgQEAKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBwYXJzZVN0cmluZwogZnJvbSB4bWwuZXRyZWUuRWxlbWVudFRyZWUgaW1wb3J0IEVsZW1lbnQsIHRvc3RyaW5nCiAKK2Zyb20gb2UubHNiIGltcG9ydCBnZXRfb3NfcmVsZWFzZQogZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGdldF9iYl92YXJzCiAKLWRlZiBnZXRfb3NfcmVsZWFzZSgpOgotICAgICIiIkdldCBpbmZvIGZyb20gL2V0Yy9vcy1yZWxlYXNlIGFzIGEgZGljdCIiIgotICAgIGRhdGEgPSBPcmRlcmVkRGljdCgpCi0gICAgb3NfcmVsZWFzZV9maWxlID0gJy9ldGMvb3MtcmVsZWFzZScKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3NfcmVsZWFzZV9maWxlKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICB3aXRoIG9wZW4ob3NfcmVsZWFzZV9maWxlKSBhcyBmb2JqOgotICAgICAgICBmb3IgbGluZSBpbiBmb2JqOgotICAgICAgICAgICAga2V5LCB2YWx1ZSA9IGxpbmUuc3BsaXQoJz0nLCAxKQotICAgICAgICAgICAgZGF0YVtrZXkuc3RyaXAoKS5sb3dlcigpXSA9IHZhbHVlLnN0cmlwKCkuc3RyaXAoJyInKQotICAgIHJldHVybiBkYXRhCiAKIGRlZiBtZXRhZGF0YV9mcm9tX2JiKCk6CiAgICAgIiIiIFJldHVybnMgdGVzdCdzIG1ldGFkYXRhIGFzIE9yZGVyZWREaWN0LgpAQCAtNDUsOSArMzUsOSBAQAogICAgIG9zX3JlbGVhc2UgPSBnZXRfb3NfcmVsZWFzZSgpCiAgICAgaWYgb3NfcmVsZWFzZToKICAgICAgICAgaW5mb19kaWN0Wydob3N0X2Rpc3RybyddID0gT3JkZXJlZERpY3QoKQotICAgICAgICBmb3Iga2V5IGluICgnaWQnLCAndmVyc2lvbl9pZCcsICdwcmV0dHlfbmFtZScpOgorICAgICAgICBmb3Iga2V5IGluICgnSUQnLCAnVkVSU0lPTl9JRCcsICdQUkVUVFlfTkFNRScpOgogICAgICAgICAgICAgaWYga2V5IGluIG9zX3JlbGVhc2U6Ci0gICAgICAgICAgICAgICAgaW5mb19kaWN0Wydob3N0X2Rpc3RybyddW2tleV0gPSBvc19yZWxlYXNlW2tleV0KKyAgICAgICAgICAgICAgICBpbmZvX2RpY3RbJ2hvc3RfZGlzdHJvJ11ba2V5Lmxvd2VyKCldID0gb3NfcmVsZWFzZVtrZXldCiAKICAgICBpbmZvX2RpY3RbJ2xheWVycyddID0gZ2V0X2xheWVycyhkYXRhX2RpY3RbJ0JCTEFZRVJTJ10pCiAgICAgaW5mb19kaWN0WydiaXRiYWtlJ10gPSBnaXRfcmV2X2luZm8ob3MucGF0aC5kaXJuYW1lKGJiLl9fZmlsZV9fKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CmluZGV4IGJhNDRiOTYuLjA2MzFkNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQpAQCAtMTcsMTEgKzE3LDggQEAKIGltcG9ydCBzdHJpbmcKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBjb2RlY3MKLWZyb20gb2VxYS51dGlscy5kdW1wIGltcG9ydCBIb3N0RHVtcGVyCi0KIGltcG9ydCBsb2dnaW5nCi1sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5RZW11UnVubmVyIikKLWxvZ2dlci5hZGRIYW5kbGVyKGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpKQorZnJvbSBvZXFhLnV0aWxzLmR1bXAgaW1wb3J0IEhvc3REdW1wZXIKIAogIyBHZXQgVW5pY29kZSBub24gcHJpbnRhYmxlIGNvbnRyb2wgY2hhcnMKIGNvbnRyb2xfcmFuZ2UgPSBsaXN0KHJhbmdlKDAsMzIpKStsaXN0KHJhbmdlKDEyNywxNjApKQpAQCAtMzEsNyArMjgsNyBAQAogCiBjbGFzcyBRZW11UnVubmVyOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hY2hpbmUsIHJvb3RmcywgZGlzcGxheSwgdG1wZGlyLCBkZXBsb3lfZGlyX2ltYWdlLCBsb2dmaWxlLCBib290dGltZSwgZHVtcF9kaXIsIGR1bXBfaG9zdF9jbWRzLCB1c2Vfa3ZtKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFjaGluZSwgcm9vdGZzLCBkaXNwbGF5LCB0bXBkaXIsIGRlcGxveV9kaXJfaW1hZ2UsIGxvZ2ZpbGUsIGJvb3R0aW1lLCBkdW1wX2RpciwgZHVtcF9ob3N0X2NtZHMsIHVzZV9rdm0sIGxvZ2dlcik6CiAKICAgICAgICAgIyBQb3BlbiBvYmplY3QgZm9yIHJ1bnFlbXUKICAgICAgICAgc2VsZi5ydW5xZW11ID0gTm9uZQpAQCAtNTQsMTAgKzUxLDE0IEBACiAgICAgICAgIHNlbGYubG9nZ2VkID0gRmFsc2UKICAgICAgICAgc2VsZi50aHJlYWQgPSBOb25lCiAgICAgICAgIHNlbGYudXNlX2t2bSA9IHVzZV9rdm0KKyAgICAgICAgc2VsZi5tc2cgPSAnJwogCi0gICAgICAgIHNlbGYucnVucWVtdXRpbWUgPSA2MAorICAgICAgICBzZWxmLnJ1bnFlbXV0aW1lID0gMTIwCisgICAgICAgIHNlbGYucWVtdV9waWRmaWxlID0gJ3BpZGZpbGVfJytzdHIob3MuZ2V0cGlkKCkpCiAgICAgICAgIHNlbGYuaG9zdF9kdW1wZXIgPSBIb3N0RHVtcGVyKGR1bXBfaG9zdF9jbWRzLCBkdW1wX2RpcikKIAorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorCiAgICAgZGVmIGNyZWF0ZV9zb2NrZXQoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCkBAIC02NSw3ICs2Niw3IEBACiAgICAgICAgICAgICBzb2NrLmJpbmQoKCIxMjcuMC4wLjEiLDApKQogICAgICAgICAgICAgc29jay5saXN0ZW4oMikKICAgICAgICAgICAgIHBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDcmVhdGVkIGxpc3RlbmluZyBzb2NrZXQgZm9yIHFlbXUgc2VyaWFsIGNvbnNvbGUgb246IDEyNy4wLjAuMTolcyIgJSBwb3J0KQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNyZWF0ZWQgbGlzdGVuaW5nIHNvY2tldCBmb3IgcWVtdSBzZXJpYWwgY29uc29sZSBvbjogMTI3LjAuMC4xOiVzIiAlIHBvcnQpCiAgICAgICAgICAgICByZXR1cm4gKHNvY2ssIHBvcnQpCiAKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKQEAgLTc4LDYgKzc5LDcgQEAKICAgICAgICAgICAgICMgYmVjYXVzZSBpcyBwb3NzaWJsZSB0byBoYXZlIGNvbnRyb2wgY2hhcmFjdGVycwogICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZSgidXRmLTgiLCBlcnJvcnM9J2lnbm9yZScpCiAgICAgICAgICAgICBtc2cgPSByZV9jb250cm9sX2NoYXIuc3ViKCcnLCBtc2cpCisgICAgICAgICAgICBzZWxmLm1zZyArPSBtc2cKICAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oc2VsZi5sb2dmaWxlLCAiYSIsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgiJXMiICUgbXNnKQogCkBAIC05MSw1OCArOTMsNjMgQEAKICAgICBkZWYgaGFuZGxlU0lHQ0hMRChzZWxmLCBzaWdudW0sIGZyYW1lKToKICAgICAgICAgaWYgc2VsZi5ydW5xZW11IGFuZCBzZWxmLnJ1bnFlbXUucG9sbCgpOgogICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnJldHVybmNvZGU6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ3J1bnFlbXUgZXhpdGVkIHdpdGggY29kZSAlZCcgJSBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZSkKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIHNlbGYuZ2V0T3V0cHV0KHNlbGYucnVucWVtdS5zdGRvdXQpKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdydW5xZW11IGV4aXRlZCB3aXRoIGNvZGUgJWQnICUgc2VsZi5ydW5xZW11LnJldHVybmNvZGUpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSBzZWxmLmdldE91dHB1dChzZWxmLnJ1bnFlbXUuc3Rkb3V0KSkKICAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQogICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCiAgICAgICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdAogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHFlbXVwYXJhbXMgPSBOb25lLCBnZXRfaXAgPSBUcnVlLCBleHRyYV9ib290cGFyYW1zID0gTm9uZSwgcnVucWVtdXBhcmFtcz0nJywgbGF1bmNoX2NtZD1Ob25lLCBkaXNjYXJkX3dyaXRlcz1UcnVlKToKKyAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgaWYgc2VsZi5kaXNwbGF5OgotICAgICAgICAgICAgb3MuZW52aXJvblsiRElTUExBWSJdID0gc2VsZi5kaXNwbGF5CisgICAgICAgICAgICBlbnZbIkRJU1BMQVkiXSA9IHNlbGYuZGlzcGxheQogICAgICAgICAgICAgIyBTZXQgdGhpcyBmbGFnIHNvIHRoYXQgUWVtdSBkb2Vzbid0IGRvIGFueSBncmFicyBhcyBTREwgZ3JhYnMKICAgICAgICAgICAgICMgaW50ZXJhY3QgYmFkbHkgd2l0aCBzY3JlZW5zYXZlcnMuCi0gICAgICAgICAgICBvcy5lbnZpcm9uWyJRRU1VX0RPTlRfR1JBQiJdID0gIjEiCisgICAgICAgICAgICBlbnZbIlFFTVVfRE9OVF9HUkFCIl0gPSAiMSIKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucm9vdGZzKToKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiSW52YWxpZCByb290ZnMgJXMiICUgc2VsZi5yb290ZnMpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiSW52YWxpZCByb290ZnMgJXMiICUgc2VsZi5yb290ZnMpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYudG1wZGlyKToKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiSW52YWxpZCBUTVBESVIgcGF0aCAlcyIgJSBzZWxmLnRtcGRpcikKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJJbnZhbGlkIFRNUERJUiBwYXRoICVzIiAlIHNlbGYudG1wZGlyKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWyJPRV9UTVBESVIiXSA9IHNlbGYudG1wZGlyCisgICAgICAgICAgICBlbnZbIk9FX1RNUERJUiJdID0gc2VsZi50bXBkaXIKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZGVwbG95X2Rpcl9pbWFnZSk6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkludmFsaWQgREVQTE9ZX0RJUl9JTUFHRSBwYXRoICVzIiAlIHNlbGYuZGVwbG95X2Rpcl9pbWFnZSkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJJbnZhbGlkIERFUExPWV9ESVJfSU1BR0UgcGF0aCAlcyIgJSBzZWxmLmRlcGxveV9kaXJfaW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLmVudmlyb25bIkRFUExPWV9ESVJfSU1BR0UiXSA9IHNlbGYuZGVwbG95X2Rpcl9pbWFnZQorICAgICAgICAgICAgZW52WyJERVBMT1lfRElSX0lNQUdFIl0gPSBzZWxmLmRlcGxveV9kaXJfaW1hZ2UKIAogICAgICAgICBpZiBub3QgbGF1bmNoX2NtZDoKICAgICAgICAgICAgIGxhdW5jaF9jbWQgPSAncnVucWVtdSAlcyAlcyAnICUgKCdzbmFwc2hvdCcgaWYgZGlzY2FyZF93cml0ZXMgZWxzZSAnJywgcnVucWVtdXBhcmFtcykKICAgICAgICAgICAgIGlmIHNlbGYudXNlX2t2bToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXNpbmcga3ZtIGZvciBydW5xZW11JykKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnVXNpbmcga3ZtIGZvciBydW5xZW11JykKICAgICAgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcga3ZtJwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnTm90IHVzaW5nIGt2bSBmb3IgcnVucWVtdScpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ05vdCB1c2luZyBrdm0gZm9yIHJ1bnFlbXUnKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuZGlzcGxheToKICAgICAgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgbm9ncmFwaGljJwogICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnICVzICVzJyAlIChzZWxmLm1hY2hpbmUsIHNlbGYucm9vdGZzKQogCi0gICAgICAgIHJldHVybiBzZWxmLmxhdW5jaChsYXVuY2hfY21kLCBxZW11cGFyYW1zPXFlbXVwYXJhbXMsIGdldF9pcD1nZXRfaXAsIGV4dHJhX2Jvb3RwYXJhbXM9ZXh0cmFfYm9vdHBhcmFtcykKKyAgICAgICAgcmV0dXJuIHNlbGYubGF1bmNoKGxhdW5jaF9jbWQsIHFlbXVwYXJhbXM9cWVtdXBhcmFtcywgZ2V0X2lwPWdldF9pcCwgZXh0cmFfYm9vdHBhcmFtcz1leHRyYV9ib290cGFyYW1zLCBlbnY9ZW52KQogCi0gICAgZGVmIGxhdW5jaChzZWxmLCBsYXVuY2hfY21kLCBnZXRfaXAgPSBUcnVlLCBxZW11cGFyYW1zID0gTm9uZSwgZXh0cmFfYm9vdHBhcmFtcyA9IE5vbmUpOgorICAgIGRlZiBsYXVuY2goc2VsZiwgbGF1bmNoX2NtZCwgZ2V0X2lwID0gVHJ1ZSwgcWVtdXBhcmFtcyA9IE5vbmUsIGV4dHJhX2Jvb3RwYXJhbXMgPSBOb25lLCBlbnYgPSBOb25lKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGhyZWFkc29jaywgdGhyZWFkcG9ydCA9IHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQsIHNlbGYuc2VydmVycG9ydCA9IHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGxpc3RlbmluZyBzb2NrZXQ6ICVzIiAlIG1zZ1sxXSkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGxpc3RlbmluZyBzb2NrZXQ6ICVzIiAlIG1zZ1sxXSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIGJvb3RwYXJhbXMgPSAnY29uc29sZT10dHkxIGNvbnNvbGU9dHR5UzAsMTE1MjAwbjggcHJpbnRrLnRpbWU9MScKICAgICAgICAgaWYgZXh0cmFfYm9vdHBhcmFtczoKICAgICAgICAgICAgIGJvb3RwYXJhbXMgPSBib290cGFyYW1zICsgJyAnICsgZXh0cmFfYm9vdHBhcmFtcwogCi0gICAgICAgIHNlbGYucWVtdXBhcmFtcyA9ICdib290cGFyYW1zPSJ7MH0iIHFlbXVwYXJhbXM9Ii1zZXJpYWwgdGNwOjEyNy4wLjAuMTp7MX0iJy5mb3JtYXQoYm9vdHBhcmFtcywgdGhyZWFkcG9ydCkKKyAgICAgICAgIyBBc2sgUUVNVSB0byBzdG9yZSB0aGUgUUVNVSBwcm9jZXNzIFBJRCBpbiBmaWxlLCB0aGlzIHdheSB3ZSBkb24ndCBoYXZlIHRvIHBhcnNlIHJ1bm5pbmcgcHJvY2Vzc2VzCisgICAgICAgICMgYW5kIGFuYWx5emUgZGVzY2VuZGVudHMgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGl0LgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLnFlbXVfcGlkZmlsZSk6CisgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5xZW11X3BpZGZpbGUpCisgICAgICAgIHNlbGYucWVtdXBhcmFtcyA9ICdib290cGFyYW1zPSJ7MH0iIHFlbXVwYXJhbXM9Ii1zZXJpYWwgdGNwOjEyNy4wLjAuMTp7MX0gLXBpZGZpbGUgezJ9IicuZm9ybWF0KGJvb3RwYXJhbXMsIHRocmVhZHBvcnQsIHNlbGYucWVtdV9waWRmaWxlKQogICAgICAgICBpZiBxZW11cGFyYW1zOgogICAgICAgICAgICAgc2VsZi5xZW11cGFyYW1zID0gc2VsZi5xZW11cGFyYW1zWzotMV0gKyAiICIgKyBxZW11cGFyYW1zICsgIiAiICsgJ1wiJwogCkBAIC0xNTEsMTMgKzE1OCwxMyBAQAogICAgICAgICBzZWxmLm9yaWdjaGxkaGFuZGxlciA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0NITEQpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0NITEQsIHNlbGYuaGFuZGxlU0lHQ0hMRCkKIAotICAgICAgICBsb2dnZXIuaW5mbygnbGF1bmNoY21kPSVzJyUobGF1bmNoX2NtZCkpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdsYXVuY2hjbWQ9JXMnJShsYXVuY2hfY21kKSkKIAogICAgICAgICAjIEZJWE1FOiBXZSBwYXNzIGluIHN0ZGluPXN1YnByb2Nlc3MuUElQRSBoZXJlIHRvIHdvcmsgYXJvdW5kIHN0dHkKICAgICAgICAgIyBibG9ja2luZyBhdCB0aGUgZW5kIG9mIHRoZSBydW5xZW11IHNjcmlwdCB3aGVuIHVzaW5nIHRoaXMgd2l0aGluCiAgICAgICAgICMgb2Utc2VsZnRlc3QgKHRoaXMgbWFrZXMgc3R0eSBlcnJvciBvdXQgaW1tZWRpYXRlbHkpLiBUaGVyZSBvdWdodAogICAgICAgICAjIHRvIGJlIGEgcHJvcGVyIGZpeCBidXQgdGhpcyB3aWxsIHN1ZmZpY2UgZm9yIG5vdy4KLSAgICAgICAgc2VsZi5ydW5xZW11ID0gc3VicHJvY2Vzcy5Qb3BlbihsYXVuY2hfY21kLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgcHJlZXhlY19mbj1vcy5zZXRwZ3JwKQorICAgICAgICBzZWxmLnJ1bnFlbXUgPSBzdWJwcm9jZXNzLlBvcGVuKGxhdW5jaF9jbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBwcmVleGVjX2ZuPW9zLnNldHBncnAsIGVudj1lbnYpCiAgICAgICAgIG91dHB1dCA9IHNlbGYucnVucWVtdS5zdGRvdXQKIAogICAgICAgICAjCkBAIC0xODYsMTQzICsxOTMsMTQ5IEBACiAgICAgICAgICAgICBvcy5raWxscGcob3MuZ2V0cGdpZChzZWxmLnJ1bnFlbXUucGlkKSwgc2lnbmFsLlNJR1RFUk0pCiAgICAgICAgICAgICBzeXMuZXhpdCgwKQogCi0gICAgICAgIGxvZ2dlci5pbmZvKCJydW5xZW11IHN0YXJ0ZWQsIHBpZCBpcyAlcyIgJSBzZWxmLnJ1bnFlbXUucGlkKQotICAgICAgICBsb2dnZXIuaW5mbygid2FpdGluZyBhdCBtb3N0ICVzIHNlY29uZHMgZm9yIHFlbXUgcGlkIiAlIHNlbGYucnVucWVtdXRpbWUpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJydW5xZW11IHN0YXJ0ZWQsIHBpZCBpcyAlcyIgJSBzZWxmLnJ1bnFlbXUucGlkKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygid2FpdGluZyBhdCBtb3N0ICVzIHNlY29uZHMgZm9yIHFlbXUgcGlkIiAlIHNlbGYucnVucWVtdXRpbWUpCiAgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArIHNlbGYucnVucWVtdXRpbWUKICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfYWxpdmUoKSBhbmQgdGltZS50aW1lKCkgPCBlbmR0aW1lOgogICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnBvbGwoKToKICAgICAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZToKICAgICAgICAgICAgICAgICAgICAgIyBObyBwb2ludCB3YWl0aW5nIGFueSBsb25nZXIKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ3J1bnFlbXUgZXhpdGVkIHdpdGggY29kZSAlZCcgJSBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ3J1bnFlbXUgZXhpdGVkIHdpdGggY29kZSAlZCcgJSBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZHVtcF9ob3N0KCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSBzZWxmLmdldE91dHB1dChvdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjUpCiAKLSAgICAgICAgb3V0ID0gc2VsZi5nZXRPdXRwdXQob3V0cHV0KQotICAgICAgICBuZXRjb25mID0gRmFsc2UgIyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gaXMgbm90IHJlcXVpcmVkIGJ5IGRlZmF1bHQKLSAgICAgICAgaWYgc2VsZi5pc19hbGl2ZSgpOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oInFlbXUgc3RhcnRlZCAtIHFlbXUgcHJvY2NlcyBwaWQgaXMgJXMiICUgc2VsZi5xZW11cGlkKQotICAgICAgICAgICAgaWYgZ2V0X2lwOgotICAgICAgICAgICAgICAgIGNtZGxpbmUgPSAnJwotICAgICAgICAgICAgICAgIHdpdGggb3BlbignL3Byb2MvJXMvY21kbGluZScgJSBzZWxmLnFlbXVwaWQpIGFzIHA6Ci0gICAgICAgICAgICAgICAgICAgIGNtZGxpbmUgPSBwLnJlYWQoKQotICAgICAgICAgICAgICAgICAgICAjIEl0IGlzIG5lZWRlZCB0byBzYW5pdGl6ZSB0aGUgZGF0YSByZWNlaXZlZAotICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaXMgcG9zc2libGUgdG8gaGF2ZSBjb250cm9sIGNoYXJhY3RlcnMKLSAgICAgICAgICAgICAgICAgICAgY21kbGluZSA9IHJlX2NvbnRyb2xfY2hhci5zdWIoJycsIGNtZGxpbmUpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpcHMgPSByZS5maW5kYWxsKCIoKD86WzAtOV17MSwzfVwuKXszfVswLTldezEsM30pIiwgY21kbGluZS5zcGxpdCgiaXA9IilbMV0pCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuaXAgPSBpcHNbMF0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBpcHNbMV0KLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oInFlbXUgY21kbGluZSB1c2VkOlxue30iLmZvcm1hdChjbWRsaW5lKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKEluZGV4RXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAjIFRyeSB0byBnZXQgbmV0d29yayBjb25maWd1cmF0aW9uIGZyb20gcnVucWVtdSBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnLipOZXR3b3JrIGNvbmZpZ3VyYXRpb246IChbMC05Ll0rKTo6KFswLTkuXSspOihbMC05Ll0rKSQuKicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LCByZS5NVUxUSUxJTkV8cmUuRE9UQUxMKQotICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXAsIHNlbGYuc2VydmVyX2lwLCBzZWxmLm5ldG1hc2sgPSBtYXRjaC5ncm91cHMoKQotICAgICAgICAgICAgICAgICAgICAgICAgIyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQgYXMgd2UgY291bGRuJ3QgZ2V0IGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGZyb20gdGhlIHJ1bnFlbXUgY29tbWFuZCBsaW5lLCBzbyBxZW11IGRvZXNuJ3QgcnVuIGtlcm5lbAotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgZ3Vlc3QgbmV0d29ya2luZyBpcyBub3QgY29uZmlndXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgbmV0Y29uZiA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ291bGRuJ3QgZ2V0IGlwIGZyb20gcWVtdSBjb21tYW5kIGxpbmUgYW5kIHJ1bnFlbXUgb3V0cHV0ISAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgdGhlIHFlbXUgY29tbWFuZCBsaW5lIHVzZWQ6XG4lc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgb3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIChjbWRsaW5lLCBvdXQpKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZHVtcF9ob3N0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJUYXJnZXQgSVA6ICVzIiAlIHNlbGYuaXApCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlNlcnZlciBJUDogJXMiICUgc2VsZi5zZXJ2ZXJfaXApCi0KLSAgICAgICAgICAgIHNlbGYudGhyZWFkID0gTG9nZ2luZ1RocmVhZChzZWxmLmxvZywgdGhyZWFkc29jaywgbG9nZ2VyKQotICAgICAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYudGhyZWFkLmNvbm5lY3Rpb25fZXN0YWJsaXNoZWQud2FpdChzZWxmLmJvb3R0aW1lKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkRpZG4ndCByZWNlaXZlIGEgY29uc29sZSBjb25uZWN0aW9uIGZyb20gcWVtdS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGVyZSBpcyB0aGUgcWVtdSBjb21tYW5kIGxpbmUgdXNlZDpcbiVzXG5hbmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIChjbWRsaW5lLCBvdXQpKQotICAgICAgICAgICAgICAgIHNlbGYuc3RvcF90aHJlYWQoKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiwgb3V0KQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIldhaXRpbmcgYXQgbW9zdCAlZCBzZWNvbmRzIGZvciBsb2dpbiBiYW5uZXIiICUgc2VsZi5ib290dGltZSkKLSAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArIHNlbGYuYm9vdHRpbWUKLSAgICAgICAgICAgIHNvY2tsaXN0ID0gW3NlbGYuc2VydmVyX3NvY2tldF0KLSAgICAgICAgICAgIHJlYWNoZWRsb2dpbiA9IEZhbHNlCi0gICAgICAgICAgICBzdG9wcmVhZCA9IEZhbHNlCi0gICAgICAgICAgICBxZW11c29jayA9IE5vbmUKLSAgICAgICAgICAgIGJvb3Rsb2cgPSAnJwotICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgPCBlbmR0aW1lIGFuZCBub3Qgc3RvcHJlYWQ6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzcmVhZCwgc3dyaXRlLCBzZXJyb3IgPSBzZWxlY3Quc2VsZWN0KHNvY2tsaXN0LCBbXSwgW10sIDUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZm9yIHNvY2sgaW4gc3JlYWQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNvY2sgaXMgc2VsZi5zZXJ2ZXJfc29ja2V0OgotICAgICAgICAgICAgICAgICAgICAgICAgcWVtdXNvY2ssIGFkZHIgPSBzZWxmLnNlcnZlcl9zb2NrZXQuYWNjZXB0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHFlbXVzb2NrLnNldGJsb2NraW5nKDApCi0gICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGlzdC5hcHBlbmQocWVtdXNvY2spCi0gICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGlzdC5yZW1vdmUoc2VsZi5zZXJ2ZXJfc29ja2V0KQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNvbm5lY3Rpb24gZnJvbSAlczolcyIgJSBhZGRyKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzb2NrLnJlY3YoMTAyNCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290bG9nICs9IGRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goIi4qIGxvZ2luOiIsIGJvb3Rsb2cpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0ID0gcWVtdXNvY2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZGxvZ2luID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlJlYWNoZWQgbG9naW4gYmFubmVyIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGlzdC5yZW1vdmUoc29jaykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKLQotICAgICAgICAgICAgaWYgbm90IHJlYWNoZWRsb2dpbjoKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVGFyZ2V0IGRpZG4ndCByZWFjaGVkIGxvZ2luIGJvb3QgaW4gJWQgc2Vjb25kcyIgJSBzZWxmLmJvb3R0aW1lKQotICAgICAgICAgICAgICAgIGxpbmVzID0gIlxuIi5qb2luKGJvb3Rsb2cuc3BsaXRsaW5lcygpWy0yNTpdKQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJMYXN0IDI1IGxpbmVzIG9mIHRleHQ6XG4lcyIgJSBsaW5lcykKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ2hlY2sgZnVsbCBib290IGxvZzogJXMiICUgc2VsZi5sb2dmaWxlKQotICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCi0gICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAgICAgIyBJZiB3ZSBhcmUgbm90IGFibGUgdG8gbG9naW4gdGhlIHRlc3RzIGNhbiBjb250aW51ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnJ1bl9zZXJpYWwoInJvb3RcbiIsIHJhdz1UcnVlKQotICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgicm9vdEBbYS16QS1aMC05XC1dKzp+IyIsIG91dHB1dCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiTG9nZ2VkIGFzIHJvb3QgaW4gc2VyaWFsIGNvbnNvbGUiKQotICAgICAgICAgICAgICAgICAgICBpZiBuZXRjb25mOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBjb25maWd1cmUgZ3Vlc3QgbmV0d29ya2luZwotICAgICAgICAgICAgICAgICAgICAgICAgY21kID0gImlmY29uZmlnIGV0aDAgJXMgbmV0bWFzayAlcyB1cFxuIiAlIChzZWxmLmlwLCBzZWxmLm5ldG1hc2spCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9zZXJpYWwoY21kLCByYXc9VHJ1ZSlbMV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgicm9vdEBbYS16QS1aMC05XC1dKzp+IyIsIG91dHB1dCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImNvbmZpZ3VyZWQgaXAgYWRkcmVzcyAlcyIsIHNlbGYuaXApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDb3VsZG4ndCBjb25maWd1cmUgZ3Vlc3QgbmV0d29ya2luZyIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNvdWxkbid0IGxvZ2luIGludG8gc2VyaWFsIGNvbnNvbGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhcyByb290IHVzaW5nIGJsYW5rIHBhc3N3b3JkIikKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU2VyaWFsIGNvbnNvbGUgZmFpbGVkIHdoaWxlIHRyeWluZyB0byBsb2dpbiIpCi0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJRZW11IHBpZCBkaWRuJ3QgYXBwZWFyZWQgaW4gJXMgc2Vjb25kcyIgJSBzZWxmLnJ1bnFlbXV0aW1lKQorICAgICAgICBpZiBub3Qgc2VsZi5pc19hbGl2ZSgpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIlFlbXUgcGlkIGRpZG4ndCBhcHBlYXIgaW4gJXMgc2Vjb25kcyIgJSBzZWxmLnJ1bnFlbXV0aW1lKQorICAgICAgICAgICAgIyBEdW1wIGFsbCBwcm9jZXNzZXMgdG8gaGVscCB1cyB0byBmaWd1cmUgb3V0IHdoYXQgaXMgZ29pbmcgb24uLi4KKyAgICAgICAgICAgIHBzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ3BzJywgJ2F4d3cnLCAnLW8nLCAncGlkLHBwaWQsY29tbWFuZCAnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVswXQorICAgICAgICAgICAgcHJvY2Vzc2VzID0gcHMuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUnVubmluZyBwcm9jZXNzZXM6XG4lcyIgJSBwcm9jZXNzZXMpCiAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQogICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgc2VsZi5nZXRPdXRwdXQob3V0cHV0KSkKKyAgICAgICAgICAgIG9wID0gc2VsZi5nZXRPdXRwdXQob3V0cHV0KQorICAgICAgICAgICAgaWYgb3A6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSBvcCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIk5vIG91dHB1dCBmcm9tIHJ1bnFlbXUuXG4iKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuaXNfYWxpdmUoKQorICAgICAgICAjIFdlIGFyZSBhbGl2ZTogcWVtdSBpcyBydW5uaW5nCisgICAgICAgIG91dCA9IHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkKKyAgICAgICAgbmV0Y29uZiA9IEZhbHNlICMgbmV0d29yayBjb25maWd1cmF0aW9uIGlzIG5vdCByZXF1aXJlZCBieSBkZWZhdWx0CisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJxZW11IHN0YXJ0ZWQgaW4gJXMgc2Vjb25kcyAtIHFlbXUgcHJvY2NlcyBwaWQgaXMgJXMiICUgKHRpbWUudGltZSgpIC0gKGVuZHRpbWUgLSBzZWxmLnJ1bnFlbXV0aW1lKSwgc2VsZi5xZW11cGlkKSkKKyAgICAgICAgaWYgZ2V0X2lwOgorICAgICAgICAgICAgY21kbGluZSA9ICcnCisgICAgICAgICAgICB3aXRoIG9wZW4oJy9wcm9jLyVzL2NtZGxpbmUnICUgc2VsZi5xZW11cGlkKSBhcyBwOgorICAgICAgICAgICAgICAgIGNtZGxpbmUgPSBwLnJlYWQoKQorICAgICAgICAgICAgICAgICMgSXQgaXMgbmVlZGVkIHRvIHNhbml0aXplIHRoZSBkYXRhIHJlY2VpdmVkCisgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGlzIHBvc3NpYmxlIHRvIGhhdmUgY29udHJvbCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgY21kbGluZSA9IHJlX2NvbnRyb2xfY2hhci5zdWIoJyAnLCBjbWRsaW5lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlwcyA9IHJlLmZpbmRhbGwoIigoPzpbMC05XXsxLDN9XC4pezN9WzAtOV17MSwzfSkiLCBjbWRsaW5lLnNwbGl0KCJpcD0iKVsxXSkKKyAgICAgICAgICAgICAgICBzZWxmLmlwID0gaXBzWzBdCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBpcHNbMV0KKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygicWVtdSBjbWRsaW5lIHVzZWQ6XG57fSIuZm9ybWF0KGNtZGxpbmUpKQorICAgICAgICAgICAgZXhjZXB0IChJbmRleEVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAjIFRyeSB0byBnZXQgbmV0d29yayBjb25maWd1cmF0aW9uIGZyb20gcnVucWVtdSBvdXRwdXQKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCcuKk5ldHdvcmsgY29uZmlndXJhdGlvbjogKFswLTkuXSspOjooWzAtOS5dKyk6KFswLTkuXSspJC4qJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCwgcmUuTVVMVElMSU5FfHJlLkRPVEFMTCkKKyAgICAgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pcCwgc2VsZi5zZXJ2ZXJfaXAsIHNlbGYubmV0bWFzayA9IG1hdGNoLmdyb3VwcygpCisgICAgICAgICAgICAgICAgICAgICMgbmV0d29yayBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIGFzIHdlIGNvdWxkbid0IGdldCBpdAorICAgICAgICAgICAgICAgICAgICAjIGZyb20gdGhlIHJ1bnFlbXUgY29tbWFuZCBsaW5lLCBzbyBxZW11IGRvZXNuJ3QgcnVuIGtlcm5lbAorICAgICAgICAgICAgICAgICAgICAjIGFuZCBndWVzdCBuZXR3b3JraW5nIGlzIG5vdCBjb25maWd1cmVkCisgICAgICAgICAgICAgICAgICAgIG5ldGNvbmYgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkNvdWxkbid0IGdldCBpcCBmcm9tIHFlbXUgY29tbWFuZCBsaW5lIGFuZCBydW5xZW11IG91dHB1dCEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgdGhlIHFlbXUgY29tbWFuZCBsaW5lIHVzZWQ6XG4lc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBvdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgKGNtZGxpbmUsIG91dCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcCgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUYXJnZXQgSVA6ICVzIiAlIHNlbGYuaXApCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXJ2ZXIgSVA6ICVzIiAlIHNlbGYuc2VydmVyX2lwKQorCisgICAgICAgIHNlbGYudGhyZWFkID0gTG9nZ2luZ1RocmVhZChzZWxmLmxvZywgdGhyZWFkc29jaywgc2VsZi5sb2dnZXIpCisgICAgICAgIHNlbGYudGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgaWYgbm90IHNlbGYudGhyZWFkLmNvbm5lY3Rpb25fZXN0YWJsaXNoZWQud2FpdChzZWxmLmJvb3R0aW1lKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJEaWRuJ3QgcmVjZWl2ZSBhIGNvbnNvbGUgY29ubmVjdGlvbiBmcm9tIHFlbXUuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSGVyZSBpcyB0aGUgcWVtdSBjb21tYW5kIGxpbmUgdXNlZDpcbiVzXG5hbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgKGNtZGxpbmUsIG91dCkpCisgICAgICAgICAgICBzZWxmLnN0b3BfdGhyZWFkKCkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiLCBvdXQpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXYWl0aW5nIGF0IG1vc3QgJWQgc2Vjb25kcyBmb3IgbG9naW4gYmFubmVyIiAlIHNlbGYuYm9vdHRpbWUpCisgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArIHNlbGYuYm9vdHRpbWUKKyAgICAgICAgc29ja2xpc3QgPSBbc2VsZi5zZXJ2ZXJfc29ja2V0XQorICAgICAgICByZWFjaGVkbG9naW4gPSBGYWxzZQorICAgICAgICBzdG9wcmVhZCA9IEZhbHNlCisgICAgICAgIHFlbXVzb2NrID0gTm9uZQorICAgICAgICBib290bG9nID0gYicnCisgICAgICAgIGRhdGEgPSBiJycKKyAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgPCBlbmR0aW1lIGFuZCBub3Qgc3RvcHJlYWQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3JlYWQsIHN3cml0ZSwgc2Vycm9yID0gc2VsZWN0LnNlbGVjdChzb2NrbGlzdCwgW10sIFtdLCA1KQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZvciBzb2NrIGluIHNyZWFkOgorICAgICAgICAgICAgICAgIGlmIHNvY2sgaXMgc2VsZi5zZXJ2ZXJfc29ja2V0OgorICAgICAgICAgICAgICAgICAgICBxZW11c29jaywgYWRkciA9IHNlbGYuc2VydmVyX3NvY2tldC5hY2NlcHQoKQorICAgICAgICAgICAgICAgICAgICBxZW11c29jay5zZXRibG9ja2luZygwKQorICAgICAgICAgICAgICAgICAgICBzb2NrbGlzdC5hcHBlbmQocWVtdXNvY2spCisgICAgICAgICAgICAgICAgICAgIHNvY2tsaXN0LnJlbW92ZShzZWxmLnNlcnZlcl9zb2NrZXQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDb25uZWN0aW9uIGZyb20gJXM6JXMiICUgYWRkcikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNvY2sucmVjdigxMDI0KQorICAgICAgICAgICAgICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGxvZyArPSBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYicnCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBiJyBsb2dpbjonIGluIGJvb3Rsb2c6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0ID0gcWVtdXNvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkbG9naW4gPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlYWNoZWQgbG9naW4gYmFubmVyIikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsaXN0LnJlbW92ZShzb2NrKQorICAgICAgICAgICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKKworCisgICAgICAgIGlmIG5vdCByZWFjaGVkbG9naW46CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVGFyZ2V0IGRpZG4ndCByZWFjaGVkIGxvZ2luIGJvb3QgaW4gJWQgc2Vjb25kcyIgJSBzZWxmLmJvb3R0aW1lKQorICAgICAgICAgICAgdGFpbCA9IGxhbWJkYSBsOiAiXG4iLmpvaW4obC5zcGxpdGxpbmVzKClbLTI1Ol0pCisgICAgICAgICAgICAjIGluIGNhc2UgYm9vdGxvZyBpcyBlbXB0eSwgdXNlIHRhaWwgcWVtdSBsb2cgc3RvcmUgYXQgc2VsZi5tc2cKKyAgICAgICAgICAgIGxpbmVzID0gdGFpbChib290bG9nIGlmIGJvb3Rsb2cgZWxzZSBzZWxmLm1zZykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJMYXN0IDI1IGxpbmVzIG9mIHRleHQ6XG4lcyIgJSBsaW5lcykKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDaGVjayBmdWxsIGJvb3QgbG9nOiAlcyIgJSBzZWxmLmxvZ2ZpbGUpCisgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQorICAgICAgICAgICAgc2VsZi5zdG9wKCkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgSWYgd2UgYXJlIG5vdCBhYmxlIHRvIGxvZ2luIHRoZSB0ZXN0cyBjYW4gY29udGludWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYucnVuX3NlcmlhbCgicm9vdFxuIiwgcmF3PVRydWUpCisgICAgICAgICAgICBpZiByZS5zZWFyY2goInJvb3RAW2EtekEtWjAtOVwtXSs6fiMiLCBvdXRwdXQpOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJMb2dnZWQgYXMgcm9vdCBpbiBzZXJpYWwgY29uc29sZSIpCisgICAgICAgICAgICAgICAgaWYgbmV0Y29uZjoKKyAgICAgICAgICAgICAgICAgICAgIyBjb25maWd1cmUgZ3Vlc3QgbmV0d29ya2luZworICAgICAgICAgICAgICAgICAgICBjbWQgPSAiaWZjb25maWcgZXRoMCAlcyBuZXRtYXNrICVzIHVwXG4iICUgKHNlbGYuaXAsIHNlbGYubmV0bWFzaykKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fc2VyaWFsKGNtZCwgcmF3PVRydWUpWzFdCisgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgicm9vdEBbYS16QS1aMC05XC1dKzp+IyIsIG91dHB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiY29uZmlndXJlZCBpcCBhZGRyZXNzICVzIiwgc2VsZi5pcCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDb3VsZG4ndCBjb25maWd1cmUgZ3Vlc3QgbmV0d29ya2luZyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDb3VsZG4ndCBsb2dpbiBpbnRvIHNlcmlhbCBjb25zb2xlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYXMgcm9vdCB1c2luZyBibGFuayBwYXNzd29yZCIpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXJpYWwgY29uc29sZSBmYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIGxvZ2luIikKKyAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICBzZWxmLnN0b3BfdGhyZWFkKCkKQEAgLTMzMiw3ICszNDUsNyBAQAogICAgICAgICBpZiBzZWxmLnJ1bnFlbXU6CiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJtb25pdG9ycGlkIik6CiAgICAgICAgICAgICAgICAgb3Mua2lsbChzZWxmLm1vbml0b3JwaWQsIHNpZ25hbC5TSUdLSUxMKQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZW5kaW5nIFNJR1RFUk0gdG8gcnVucWVtdSIpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlbmRpbmcgU0lHVEVSTSB0byBydW5xZW11IikKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG9zLmtpbGxwZyhvcy5nZXRwZ2lkKHNlbGYucnVucWVtdS5waWQpLCBzaWduYWwuU0lHVEVSTSkKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgpAQCAtMzQyLDcgKzM1NSw3IEBACiAgICAgICAgICAgICB3aGlsZSBzZWxmLnJ1bnFlbXUucG9sbCgpIGlzIE5vbmUgYW5kIHRpbWUudGltZSgpIDwgZW5kdGltZToKICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlNlbmRpbmcgU0lHS0lMTCB0byBydW5xZW11IikKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2VuZGluZyBTSUdLSUxMIHRvIHJ1bnFlbXUiKQogICAgICAgICAgICAgICAgIG9zLmtpbGxwZyhvcy5nZXRwZ2lkKHNlbGYucnVucWVtdS5waWQpLCBzaWduYWwuU0lHS0lMTCkKICAgICAgICAgICAgIHNlbGYucnVucWVtdSA9IE5vbmUKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnc2VydmVyX3NvY2tldCcpIGFuZCBzZWxmLnNlcnZlcl9zb2NrZXQ6CkBAIC0zNTAsNiArMzYzLDggQEAKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCA9IE5vbmUKICAgICAgICAgc2VsZi5xZW11cGlkID0gTm9uZQogICAgICAgICBzZWxmLmlwID0gTm9uZQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLnFlbXVfcGlkZmlsZSk6CisgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5xZW11X3BpZGZpbGUpCiAKICAgICBkZWYgc3RvcF9xZW11X3N5c3RlbShzZWxmKToKICAgICAgICAgaWYgc2VsZi5xZW11cGlkOgpAQCAtMzU3LDcgKzM3Miw3IEBACiAgICAgICAgICAgICAgICAgIyBxZW11LXN5c3RlbSBiZWhhdmVzIHdlbGwgYW5kIGEgU0lHVEVSTSBpcyBlbm91Z2gKICAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYucWVtdXBpZCwgc2lnbmFsLlNJR1RFUk0pCiAgICAgICAgICAgICBleGNlcHQgUHJvY2Vzc0xvb2t1cEVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ3FlbXUtc3lzdGVtIGVuZGVkIHVuZXhwZWN0ZWRseScpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybigncWVtdS1zeXN0ZW0gZW5kZWQgdW5leHBlY3RlZGx5JykKIAogICAgIGRlZiBzdG9wX3RocmVhZChzZWxmKToKICAgICAgICAgaWYgc2VsZi50aHJlYWQgYW5kIHNlbGYudGhyZWFkLmlzX2FsaXZlKCk6CkBAIC0zNjUsNyArMzgwLDcgQEAKICAgICAgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oKQogCiAgICAgZGVmIHJlc3RhcnQoc2VsZiwgcWVtdXBhcmFtcyA9IE5vbmUpOgotICAgICAgICBsb2dnZXIuaW5mbygiUmVzdGFydGluZyBxZW11IHByb2Nlc3MiKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVzdGFydGluZyBxZW11IHByb2Nlc3MiKQogICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLnN0b3AoKQogICAgICAgICBpZiBzZWxmLnN0YXJ0KHFlbXVwYXJhbXMpOgpAQCAtMzc1LDU2ICszOTAsMTYgQEAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLnJ1bnFlbXU6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcWVtdV9jaGlsZCA9IHNlbGYuZmluZF9jaGlsZChzdHIoc2VsZi5ydW5xZW11LnBpZCkpCi0gICAgICAgIGlmIHFlbXVfY2hpbGQ6Ci0gICAgICAgICAgICBzZWxmLnFlbXVwaWQgPSBxZW11X2NoaWxkWzBdCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiL3Byb2MvIiArIHN0cihzZWxmLnFlbXVwaWQpKToKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5xZW11X3BpZGZpbGUpOgorICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5xZW11X3BpZGZpbGUsICdyJykKKyAgICAgICAgICAgIHFlbXVfcGlkID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgcWVtdXBpZCA9IGludChxZW11X3BpZCkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIvcHJvYy8iICsgc3RyKHFlbXVwaWQpKToKKyAgICAgICAgICAgICAgICBzZWxmLnFlbXVwaWQgPSBxZW11cGlkCiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgZmluZF9jaGlsZChzZWxmLHBhcmVudF9waWQpOgotICAgICAgICAjCi0gICAgICAgICMgV2FsayB0aGUgcHJvY2VzcyB0cmVlIGZyb20gdGhlIHByb2Nlc3Mgc3BlY2lmaWVkIGxvb2tpbmcgZm9yIGEgcWVtdS1zeXN0ZW0uIFJldHVybiBpdHMgW3BpZCdjbWRdCi0gICAgICAgICMKLSAgICAgICAgcHMgPSBzdWJwcm9jZXNzLlBvcGVuKFsncHMnLCAnYXh3dycsICctbycsICdwaWQscHBpZCxjb21tYW5kJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0KLSAgICAgICAgcHJvY2Vzc2VzID0gcHMuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0KCdcbicpCi0gICAgICAgIG5maWVsZHMgPSBsZW4ocHJvY2Vzc2VzWzBdLnNwbGl0KCkpIC0gMQotICAgICAgICBwaWRzID0ge30KLSAgICAgICAgY29tbWFuZHMgPSB7fQotICAgICAgICBmb3Igcm93IGluIHByb2Nlc3Nlc1sxOl06Ci0gICAgICAgICAgICBkYXRhID0gcm93LnNwbGl0KE5vbmUsIG5maWVsZHMpCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgIT0gMzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZGF0YVsxXSBub3QgaW4gcGlkczoKLSAgICAgICAgICAgICAgICBwaWRzW2RhdGFbMV1dID0gW10KLQotICAgICAgICAgICAgcGlkc1tkYXRhWzFdXS5hcHBlbmQoZGF0YVswXSkKLSAgICAgICAgICAgIGNvbW1hbmRzW2RhdGFbMF1dID0gZGF0YVsyXQotCi0gICAgICAgIGlmIHBhcmVudF9waWQgbm90IGluIHBpZHM6Ci0gICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICBwYXJlbnRzID0gW10KLSAgICAgICAgbmV3cGFyZW50cyA9IHBpZHNbcGFyZW50X3BpZF0KLSAgICAgICAgd2hpbGUgbmV3cGFyZW50czoKLSAgICAgICAgICAgIG5leHQgPSBbXQotICAgICAgICAgICAgZm9yIHAgaW4gbmV3cGFyZW50czoKLSAgICAgICAgICAgICAgICBpZiBwIGluIHBpZHM6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBuIGluIHBpZHNbcF06Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuIG5vdCBpbiBwYXJlbnRzIGFuZCBuIG5vdCBpbiBuZXh0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQuYXBwZW5kKG4pCi0gICAgICAgICAgICAgICAgaWYgcCBub3QgaW4gcGFyZW50czoKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50cy5hcHBlbmQocCkKLSAgICAgICAgICAgICAgICAgICAgbmV3cGFyZW50cyA9IG5leHQKLSAgICAgICAgI3ByaW50KCJDaGlsZHJlbiBtYXRjaGluZyAlczoiICUgc3RyKHBhcmVudHMpKQotICAgICAgICBmb3IgcCBpbiBwYXJlbnRzOgotICAgICAgICAgICAgIyBOZWVkIHRvIGJlIGNhcmVmdWwgaGVyZSBzaW5jZSBydW5xZW11IHJ1bnMgImxkZCBxZW11LXN5c3RlbS14eHh4IgotICAgICAgICAgICAgIyBBbHNvLCBvbGQgdmVyc2lvbnMgb2YgbGRkICgyLjExKSBydW4gIkxEX1hYWFggcWVtdS1zeXN0ZW0teHh4eCIKLSAgICAgICAgICAgIGJhc2VjbWQgPSBjb21tYW5kc1twXS5zcGxpdCgpWzBdCi0gICAgICAgICAgICBiYXNlY21kID0gb3MucGF0aC5iYXNlbmFtZShiYXNlY21kKQotICAgICAgICAgICAgaWYgInFlbXUtc3lzdGVtIiBpbiBiYXNlY21kIGFuZCAiLXNlcmlhbCB0Y3AiIGluIGNvbW1hbmRzW3BdOgotICAgICAgICAgICAgICAgIHJldHVybiBbaW50KHApLGNvbW1hbmRzW3BdXQotCiAgICAgZGVmIHJ1bl9zZXJpYWwoc2VsZiwgY29tbWFuZCwgcmF3PUZhbHNlLCB0aW1lb3V0PTUpOgogICAgICAgICAjIFdlIGFzc3VtZSB0YXJnZXQgc3lzdGVtIGhhdmUgZWNobyB0byBnZXQgY29tbWFuZCBzdGF0dXMKICAgICAgICAgaWYgbm90IHJhdzoKQEAgLTQ3NCw3ICs0NDksNyBAQAogCiAgICAgZGVmIF9kdW1wX2hvc3Qoc2VsZik6CiAgICAgICAgIHNlbGYuaG9zdF9kdW1wZXIuY3JlYXRlX2RpcigicWVtdSIpCi0gICAgICAgIGxvZ2dlci53YXJuKCJRZW11IGVuZGVkIHVuZXhwZWN0ZWRseSwgZHVtcCBkYXRhIGZyb20gaG9zdCIKKyAgICAgICAgc2VsZi5sb2dnZXIud2FybigiUWVtdSBlbmRlZCB1bmV4cGVjdGVkbHksIGR1bXAgZGF0YSBmcm9tIGhvc3QiCiAgICAgICAgICAgICAgICAgIiBpcyBpbiAlcyIgJSBzZWxmLmhvc3RfZHVtcGVyLmR1bXBfZGlyKQogICAgICAgICBzZWxmLmhvc3RfZHVtcGVyLmR1bXBfaG9zdCgpCiAKQEAgLTUwMywxNyArNDc4LDE3IEBACiAgICAgICAgICAgICBzZWxmLnRlYXJkb3duKCkKIAogICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlN0YXJ0aW5nIGxvZ2dpbmcgdGhyZWFkIikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0YXJ0aW5nIGxvZ2dpbmcgdGhyZWFkIikKICAgICAgICAgc2VsZi5yZWFkcGlwZSwgc2VsZi53cml0ZXBpcGUgPSBvcy5waXBlKCkKICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5ydW4oc2VsZikKIAogICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdG9wcGluZyBsb2dnaW5nIHRocmVhZCIpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdG9wcGluZyBsb2dnaW5nIHRocmVhZCIpCiAgICAgICAgIGlmIHNlbGYucnVubmluZzoKICAgICAgICAgICAgIG9zLndyaXRlKHNlbGYud3JpdGVwaXBlLCBieXRlcygic3RvcCIsICJ1dGYtOCIpKQogCiAgICAgZGVmIHRlYXJkb3duKHNlbGYpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJUZWFyaW5nIGRvd24gbG9nZ2luZyB0aHJlYWQiKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVGVhcmluZyBkb3duIGxvZ2dpbmcgdGhyZWFkIikKICAgICAgICAgc2VsZi5jbG9zZV9zb2NrZXQoc2VsZi5zZXJ2ZXJzb2NrKQogCiAgICAgICAgIGlmIHNlbGYucmVhZHNvY2sgaXMgbm90IE5vbmU6CkBAIC01MzEsNyArNTA2LDcgQEAKIAogICAgICAgICBicmVha291dCA9IEZhbHNlCiAgICAgICAgIHNlbGYucnVubmluZyA9IFRydWUKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RhcnRpbmcgdGhyZWFkIGV2ZW50IGxvb3AiKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU3RhcnRpbmcgdGhyZWFkIGV2ZW50IGxvb3AiKQogICAgICAgICB3aGlsZSBub3QgYnJlYWtvdXQ6CiAgICAgICAgICAgICBldmVudHMgPSBwb2xsLnBvbGwoKQogICAgICAgICAgICAgZm9yIGV2ZW50IGluIGV2ZW50czoKQEAgLTU0MSwxOSArNTE2LDE5IEBACiAKICAgICAgICAgICAgICAgICAjIEV2ZW50IHRvIHN0b3AgdGhlIHRocmVhZAogICAgICAgICAgICAgICAgIGlmIHNlbGYucmVhZHBpcGUgPT0gZXZlbnRbMF06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlN0b3AgZXZlbnQgcmVjZWl2ZWQiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU3RvcCBldmVudCByZWNlaXZlZCIpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrb3V0ID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgICAgICAgICAgIyBBIGNvbm5lY3Rpb24gcmVxdWVzdCB3YXMgcmVjZWl2ZWQKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuc2VydmVyc29jay5maWxlbm8oKSA9PSBldmVudFswXToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiQ29ubmVjdGlvbiByZXF1ZXN0IHJlY2VpdmVkIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNvbm5lY3Rpb24gcmVxdWVzdCByZWNlaXZlZCIpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVhZHNvY2ssIF8gPSBzZWxmLnNlcnZlcnNvY2suYWNjZXB0KCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWFkc29jay5zZXRibG9ja2luZygwKQogICAgICAgICAgICAgICAgICAgICBwb2xsLnVucmVnaXN0ZXIoc2VsZi5zZXJ2ZXJzb2NrLmZpbGVubygpKQogICAgICAgICAgICAgICAgICAgICBwb2xsLnJlZ2lzdGVyKHNlbGYucmVhZHNvY2suZmlsZW5vKCksIGV2ZW50X3JlYWRfbWFzaykKIAotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTZXR0aW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQgZXZlbnQiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2V0dGluZyBjb25uZWN0aW9uIGVzdGFibGlzaGVkIGV2ZW50IikKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uX2VzdGFibGlzaGVkLnNldCgpCiAKICAgICAgICAgICAgICAgICAjIEFjdHVhbCBkYXRhIHRvIGJlIGxvZ2dlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXRpbnlydW5uZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11dGlueXJ1bm5lci5weQppbmRleCAxYmY1OTAwLi42M2I1ZDE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11dGlueXJ1bm5lci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11dGlueXJ1bm5lci5weQpAQCAtMTcsNyArMTcsNyBAQAogCiBjbGFzcyBRZW11VGlueVJ1bm5lcihRZW11UnVubmVyKToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYWNoaW5lLCByb290ZnMsIGRpc3BsYXksIHRtcGRpciwgZGVwbG95X2Rpcl9pbWFnZSwgbG9nZmlsZSwga2VybmVsLCBib290dGltZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hY2hpbmUsIHJvb3RmcywgZGlzcGxheSwgdG1wZGlyLCBkZXBsb3lfZGlyX2ltYWdlLCBsb2dmaWxlLCBrZXJuZWwsIGJvb3R0aW1lLCBsb2dnZXIpOgogCiAgICAgICAgICMgUG9wZW4gb2JqZWN0IGZvciBydW5xZW11CiAgICAgICAgIHNlbGYucnVucWVtdSA9IE5vbmUKQEAgLTQwLDYgKzQwLDcgQEAKICAgICAgICAgc2VsZi5zb2NrZXRmaWxlID0gImNvbnNvbGUuc29jayIKICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0ID0gTm9uZQogICAgICAgICBzZWxmLmtlcm5lbCA9IGtlcm5lbAorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogCiAKICAgICBkZWYgY3JlYXRlX3NvY2tldChzZWxmKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5CmluZGV4IDA1ZDY1MDIuLmQyOTI4OTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weQpAQCAtMTUwLDEyICsxNTAsOSBAQAogCiAgICAgZGVmIGNvcHlfdG8oc2VsZiwgbG9jYWxwYXRoLCByZW1vdGVwYXRoKToKICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsobG9jYWxwYXRoKToKLSAgICAgICAgICAgIGxpbmsgPSBvcy5yZWFkbGluayhsb2NhbHBhdGgpCi0gICAgICAgICAgICBkc3RfZGlyLCBkc3RfYmFzZSA9IG9zLnBhdGguc3BsaXQocmVtb3RlcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bigiY2QgJXM7IGxuIC1zICVzICVzIiAlIChkc3RfZGlyLCBsaW5rLCBkc3RfYmFzZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21tYW5kID0gc2VsZi5zY3AgKyBbbG9jYWxwYXRoLCAnJXNAJXM6JXMnICUgKHNlbGYudXNlciwgc2VsZi5pcCwgcmVtb3RlcGF0aCldCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcnVuKGNvbW1hbmQsIGlnbm9yZV9zdGF0dXM9RmFsc2UpCisgICAgICAgICAgICBsb2NhbHBhdGggPSBvcy5wYXRoLmRpcm5hbWUobG9jYWxwYXRoKSArICIvIiArIG9zLnJlYWRsaW5rKGxvY2FscGF0aCkKKyAgICAgICAgY29tbWFuZCA9IHNlbGYuc2NwICsgW2xvY2FscGF0aCwgJyVzQCVzOiVzJyAlIChzZWxmLnVzZXIsIHNlbGYuaXAsIHJlbW90ZXBhdGgpXQorICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcnVuKGNvbW1hbmQsIGlnbm9yZV9zdGF0dXM9RmFsc2UpCiAKICAgICBkZWYgY29weV9mcm9tKHNlbGYsIHJlbW90ZXBhdGgsIGxvY2FscGF0aCk6CiAgICAgICAgIGNvbW1hbmQgPSBzZWxmLnNjcCArIFsnJXNAJXM6JXMnICUgKHNlbGYudXNlciwgc2VsZi5pcCwgcmVtb3RlcGF0aCksIGxvY2FscGF0aF0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3RhcmdldGJ1aWxkLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvdGFyZ2V0YnVpbGQucHkKaW5kZXggOTI0OWZhMi4uMTIwMmQ1NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvdGFyZ2V0YnVpbGQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvdGFyZ2V0YnVpbGQucHkKQEAgLTY5LDcgKzY5LDcgQEAKIAogICAgIGRlZiBjbGVhbihzZWxmKToKICAgICAgICAgc2VsZi5fcnVuKCdybSAtcmYgJXMnICUgc2VsZi50YXJnZXRkaXIpCi0gICAgICAgIHN1YnByb2Nlc3MuY2FsbCgncm0gLWYgJXMnICUgc2VsZi5sb2NhbGFyY2hpdmUsIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCgncm0gLWYgJXMnICUgc2VsZi5sb2NhbGFyY2hpdmUsIHNoZWxsPVRydWUpCiAgICAgICAgIHBhc3MKIAogY2xhc3MgVGFyZ2V0QnVpbGRQcm9qZWN0KEJ1aWxkUHJvamVjdCk6CkBAIC0xMzYsNCArMTM2LDQgQEAKIAogICAgIGRlZiBfcnVuKHNlbGYsIGNtZCk6CiAgICAgICAgIHNlbGYubG9nKCJSdW5uaW5nIC4gJXM7ICIgJSBzZWxmLnNka2VudiArIGNtZCkKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbCgiLiAlczsgIiAlIHNlbGYuc2RrZW52ICsgY21kLCBzaGVsbD1UcnVlKQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19jYWxsKCIuICVzOyAiICUgc2VsZi5zZGtlbnYgKyBjbWQsIHNoZWxsPVRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIKaW5kZXggZDBmN2JiMy4uMDY3MDU1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYgpAQCAtNSw2ICs1LDcgQEAKICMgRmlsZW5hbWU6IGFsc2Etc3RhdGUuYmIKIAogU1VNTUFSWSA9ICJBbHNhIHNjZW5hcmlvIGZpbGVzIHRvIGVuYWJsZSBhbHNhIHN0YXRlIHJlc3RvcmF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnLyIKIERFU0NSSVBUSU9OID0gIkFsc2EgU2NlbmFyaW8gRmlsZXMgLSBhbiBpbml0IHNjcmlwdCBhbmQgc3RhdGUgZmlsZXMgdG8gcmVzdG9yZSBcCiBzb3VuZCBzdGF0ZSBhdCBzeXN0ZW0gYm9vdCBhbmQgc2F2ZSBpdCBhdCBzeXN0ZW0gc2h1dCBkb3duLiIKIExJQ0VOU0UgPSAiTUlUIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpLzAwMDEtTWFyay1vdXItZXhwbGljaXQtZmFsbC10aHJvdWdoLXNvLVdleHRyYS13aWxsLXdvcmstaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS8wMDAxLU1hcmstb3VyLWV4cGxpY2l0LWZhbGwtdGhyb3VnaC1zby1XZXh0cmEtd2lsbC13b3JrLWkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYWViMmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpLzAwMDEtTWFyay1vdXItZXhwbGljaXQtZmFsbC10aHJvdWdoLXNvLVdleHRyYS13aWxsLXdvcmstaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNjc2YThhOTAwMWYwNjgwOGI0ZGJlMGE1NDVkNzZiNWQ5YThlYmY0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMiBGZWIgMjAxNyAxMzo1MToyNyAtMDUwMAotU3ViamVjdDogW1BBVENIXSBNYXJrIG91ciBleHBsaWNpdCBmYWxsIHRocm91Z2ggc28gLVdleHRyYSB3aWxsIHdvcmsgaW4gZ2NjIDcKLQotZ2NjIDcgaW50cm9kdWNlcyBkZXRlY3Rpb24gb2YgZmFsbC10aHJvdWdoIGJlaGF2aW9yIGluIHN3aXRjaC9jYXNlCi1zdGF0ZW1lbnRzLCBhbmQgd2lsbCB3YXJuIGlmIC1XaW1wbGljaXQtZmFsbHRocm91Z2ggaXMgcHJlc2VudCBhbmQgdGhlcmUKLWlzIG5vIGNvbW1lbnQgc3RhdGluZyB0aGF0IHRoZSBmYWxsLXRocm91Z2ggaXMgaW50ZW50aW9uYWwuICBUaGlzIGlzCi1hbHNvIHRyaWdnZXJlZCBieSAtV2V4dHJhLCBhcyBpdCBlbmFibGVzIC1XaW1wbGljaXQtZmFsbHRocm91Z2g9MS4KLQotVGhpcyBwYXRjaCBhZGRzIHRoZSBjb21tZW50IGluIHRoZSBvbmUgcGxhY2Ugd2UgdXNlIGZhbGwtdGhyb3VnaC4KLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGxpYi9wcmludC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWIvcHJpbnQuYyBiL2xpYi9wcmludC5jCi1pbmRleCBiOGE5ZDM4Li5jYjczMmYwIDEwMDY0NAotLS0tIGEvbGliL3ByaW50LmMKLSsrKyBiL2xpYi9wcmludC5jCi1AQCAtMTEzMSw2ICsxMTMxLDcgQEAgUmV0dXJuczoKLSAgICAgICAgICAgICBjYXNlICdYJzoKLSAgICAgICAgICAgICAgICAgSXRlbS5XaWR0aCA9IEl0ZW0uTG9uZyA/IDE2IDogODsKLSAgICAgICAgICAgICAgICAgSXRlbS5QYWQgPSAnMCc7Ci0rCQkvKiBmYWxscyB0aHJvdWdoICovCi0gICAgICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgIFZhbHVlVG9IZXggKAotICAgICAgICAgICAgICAgICAgICAgSXRlbS5TY3JhdGNoLAotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvZ2NjNDYtY29tcGF0aWJpbGl0eS5wYXRjaAppbmRleCAwY2U2ZDdiLi42OWVmZDM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvZ2NjNDYtY29tcGF0aWJpbGl0eS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvZ2NjNDYtY29tcGF0aWJpbGl0eS5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gOGQxNmFlMzc0YzVkNGQ5ZmFjNDVjMDAyNjA1YTY2Y2ZiOGMwOGJlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXZlIExhbmdhc2VrIDxzdGV2ZS5sYW5nYXNla0B1YnVudHUuY29tPgorRGF0ZTogV2VkLCA5IFNlcCAyMDE1IDA4OjI2OjA2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBnbnUtZWZpLCBzeXNsaW51eDogU3VwcG9ydCBnY2MgPCA0LjcKKwogZG9uJ3QgYnJlYWsgd2l0aCBvbGQgY29tcGlsZXJzIGFuZCAtREdOVV9FRklfVVNFX01TX0FCSQogSXQncyBlbnRpcmVseSBsZWdpdGltYXRlIHRvIHJlcXVlc3QgR05VX0VGSV9VU0VfTVNfQUJJIGV2ZW4gaWYgdGhlIGN1cnJlbnQKIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBpdCwgYW5kIGdudS1lZmkgc2hvdWxkIHRyYW5zcGFyZW50bHkgZmFsbCBiYWNrIHRvCkBAIC02LDE2ICsxMSwyNSBAQAogCiBBdXRob3I6IFN0ZXZlIExhbmdhc2VrIDxzdGV2ZS5sYW5nYXNla0B1YnVudHUuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ251LWVmaS0zLjAuMy9pbmMveDg2XzY0L2VmaWJpbmQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdudS1lZmktMy4wLjMub3JpZy9pbmMveDg2XzY0L2VmaWJpbmQuaAotKysrIGdudS1lZmktMy4wLjMvaW5jL3g4Nl82NC9lZmliaW5kLmgKK1tSZWJhc2VkIGZvciAzLjAuNl0KK1NpZ25lZC1vZmYtYnk6IENhbGlmb3JuaWEgU3VsbGl2YW4gPGNhbGlmb3JuaWEubC5zdWxsaXZhbkBpbnRlbC5jb20+CistLS0KKyBpbmMveDg2XzY0L2VmaWJpbmQuaCB8IDIgLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luYy94ODZfNjQvZWZpYmluZC5oIGIvaW5jL3g4Nl82NC9lZmliaW5kLmgKK2luZGV4IDQzMDlmOWYuLjAyYzBhZjEgMTAwNjQ0CistLS0gYS9pbmMveDg2XzY0L2VmaWJpbmQuaAorKysrIGIvaW5jL3g4Nl82NC9lZmliaW5kLmgKIEBAIC0yNSw4ICsyNSw2IEBAIFJldmlzaW9uIEhpc3RvcnkKICAjaWYgZGVmaW5lZChHTlVfRUZJX1VTRV9NU19BQkkpCi0gICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDcpKQorICAgICAjaWYgKGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNykpKXx8KGRlZmluZWQoX19jbGFuZ19fKSAmJiAoX19jbGFuZ19tYWpvcl9fID4gMyB8fCAoX19jbGFuZ19tYWpvcl9fID09IDMgJiYgX19jbGFuZ19taW5vcl9fID49IDIpKSkKICAgICAgICAgICNkZWZpbmUgSEFWRV9VU0VfTVNfQUJJIDEKIC0gICAgI2Vsc2UKIC0gICAgICAgICNlcnJvciBDb21waWxlciBpcyB0b28gb2xkIGZvciBHTlVfRUZJX1VTRV9NU19BQkkKICAgICAgI2VuZGlmCiAgI2VuZGlmCiAgCistLSAKKzIuOS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2gKaW5kZXggZTViNDdjMS4uMDExMDI2MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1GaXggcGFyYWxsZWwgbWFrZSBmYWlsdXJlIGZvciBhcmNoaXZlcworRnJvbSAxNjg2NWRlNjZkYjMzY2E3MDg3MjE5OWU3MGQ5M2VmY2NlY2M4NTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorRGF0ZTogU3VuLCA5IE1hciAyMDE0IDE1OjIyOjE1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBGaXggcGFyYWxsZWwgbWFrZSBmYWlsdXJlIGZvciBhcmNoaXZlcwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIApAQCAtMTIsMzEgKzE1LDE4IEBACiAKIFNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IERhcnJlbiBIYXJ0IDxkdmhhcnRAbGludXguaW50ZWwuY29tPgorW1JlYmFzZWQgZm9yIDMuMC42XQorU2lnbmVkLW9mZi1ieTogQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4KIC0tLQotLS0tCi0gZ251ZWZpL01ha2VmaWxlIHwgICAgMyArKy0KLSBsaWIvTWFrZWZpbGUgICAgfCAgICAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGdudWVmaS9NYWtlZmlsZSB8IDMgKystCisgbGliL01ha2VmaWxlICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogZ251LWVmaS0zLjAvbGliL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251LWVmaS0zLjAub3JpZy9saWIvTWFrZWZpbGUKLSsrKyBnbnUtZWZpLTMuMC9saWIvTWFrZWZpbGUKLUBAIC02Niw3ICs2Niw4IEBAIGFsbDogbGlic3ViZGlycyBsaWJlZmkuYQotIGxpYnN1YmRpcnM6Ci0gCWZvciBzZGlyIGluICQoU1VCRElSUyk7IGRvIG1rZGlyIC1wICQkc2RpcjsgZG9uZQotIAotLWxpYmVmaS5hOiAkKHBhdHN1YnN0ICUsbGliZWZpLmEoJSksJChPQkpTKSkKLStsaWJlZmkuYTogJChPQkpTKQotKwkkKEFSKSBydiAkQCAkKE9CSlMpCi0gCi0gY2xlYW46Ci0gCXJtIC1mIGxpYmVmaS5hICp+ICQoT0JKUykgKi8qLm8KLUluZGV4OiBnbnUtZWZpLTMuMC9nbnVlZmkvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnUtZWZpLTMuMC5vcmlnL2dudWVmaS9NYWtlZmlsZQotKysrIGdudS1lZmktMy4wL2dudWVmaS9NYWtlZmlsZQotQEAgLTUxLDcgKzUxLDggQEAgVEFSR0VUUwk9IGNydDAtZWZpLSQoQVJDSCkubyBsaWJnbnVlZmkuYQorZGlmZiAtLWdpdCBhL2dudWVmaS9NYWtlZmlsZSBiL2dudWVmaS9NYWtlZmlsZQoraW5kZXggMmE2MTY5OS4uMTQ4MTA2ZSAxMDA2NDQKKy0tLSBhL2dudWVmaS9NYWtlZmlsZQorKysrIGIvZ251ZWZpL01ha2VmaWxlCitAQCAtNTQsNyArNTQsOCBAQCBUQVJHRVRTCT0gY3J0MC1lZmktJChBUkNIKS5vIGxpYmdudWVmaS5hCiAgCiAgYWxsOgkkKFRBUkdFVFMpCiAgCkBAIC00NiwzICszNiwxOSBAQAogIAogIGNsZWFuOgogIAlybSAtZiAkKFRBUkdFVFMpICp+ICoubyAkKE9CSlMpCitkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCitpbmRleCBiOGQxY2U3Li42ZWY4MTA3IDEwMDY0NAorLS0tIGEvbGliL01ha2VmaWxlCisrKysgYi9saWIvTWFrZWZpbGUKK0BAIC03NSw3ICs3NSw3IEBAIGxpYnN1YmRpcnM6CisgCWZvciBzZGlyIGluICQoU1VCRElSUyk7IGRvIG1rZGlyIC1wICQkc2RpcjsgZG9uZQorIAorIGxpYmVmaS5hOiAkKE9CSlMpCistCSQoQVIpIHJ2IC1VICRAICReCisrCSQoQVIpIHJ2ICRAICQoT0JKUykKKyAKKyBjbGVhbjoKKyAJcm0gLWYgbGliZWZpLmEgKn4gJChPQkpTKSAqLyoubworLS0gCisyLjkuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZjlmNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJpZXMgZm9yIHByb2R1Y2luZyBFRkkgYmluYXJpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dudS1lZmkvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIrIHwgQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ251ZWZpL2NydDAtZWZpLWFybS5TO2JlZ2lubGluZT00O2VuZGxpbmU9MTY7bWQ1PWU1ODI3NjRhNDc3NmU2MGM5NWJmOWFiNjE3MzQzZDM2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dudWVmaS9jcnQwLWVmaS1hYXJjaDY0LlM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNjttZDU9ZTU4Mjc2NGE0Nzc2ZTYwYzk1YmY5YWI2MTczNDNkMzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jL2VmaXNoZWxsaW50Zi5oO2JlZ2lubGluZT0xMztlbmRsaW5lPTIwO21kNT0yMDI3NjZiNzlkNzA4ZWZmM2NjNzBmY2UxNWZiODBjNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmMvZWZpc2hlbGxwYXJtLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMTttZDU9NDY4YjEyMzFiMDViYmM4NGJhZTNhMGQ1Nzc0ZTNiYjUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FybS9tYXRoLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FybS9pbml0cGxhdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hYXJjaDY0L21hdGguYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYWFyY2g2NC9pbml0cGxhdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliLU1ha2VmaWxlLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nY2M0Ni1jb21wYXRpYmlsaXR5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFyay1vdXItZXhwbGljaXQtZmFsbC10aHJvdWdoLXNvLVdleHRyYS13aWxsLXdvcmstaS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFmNzE5YzljMTM1Nzc4YWE2YjA4N2I4OWExY2MyNDIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkOGZjZDU5MTRmMThmYzBlNGJhOTQ4YWIwM2IwMDAxM2U1Mjg1MDRmNTI5YzYwNzM5Yjc0OGY2ZWYxMzBiMjIiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKiktbGludXgiCi1DT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKLQotZG9fY29uZmlndXJlX2xpbnV4LWdudXgzMl9wcmVwZW5kKCkgewotCWNwICR7U1RBR0lOR19JTkNESVJ9L2dudS9zdHVicy14MzIuaCAke1NUQUdJTkdfSU5DRElSfS9nbnUvc3R1YnMtNjQuaAotCWNwICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtMzIuaCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTY0LmgKLX0KLQotZGVmIGdudV9lZmlfYXJjaChkKToKLSAgICBpbXBvcnQgcmUKLSAgICB0YXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCi0gICAgaWYgcmUubWF0Y2goImlbMzQ1Njc4OV04NiIsIHRhcmNoKToKLSAgICAgICAgcmV0dXJuICJpYTMyIgotICAgIHJldHVybiB0YXJjaAotCi1FWFRSQV9PRU1BS0UgPSAiJ0FSQ0g9JHtAZ251X2VmaV9hcmNoKGQpfScgJ0NDPSR7Q0N9JyAnQVM9JHtBU30nICdMRD0ke0xEfScgJ0FSPSR7QVJ9JyBcCi0gICAgICAgICAgICAgICAgJ1JBTkxJQj0ke1JBTkxJQn0nICdPQkpDT1BZPSR7T0JKQ09QWX0nICdQUkVGSVg9JHtwcmVmaXh9JyAnTElCRElSPSR7bGliZGlyfScgXAotICAgICAgICAgICAgICAgICIKLQotIyBnbnUtZWZpJ3MgTWFrZWZpbGUgdHJlYXRzIHByZWZpeCBhcyB0b29sY2hhaW4gcHJlZml4LCBzbyBkb24ndAotIyBleHBvcnQgaXQuCi1wcmVmaXhbdW5leHBvcnRdID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMUk9PVD0iJHtEfSIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLmxkcyIKLQotIyA2NC1iaXQgYmluYXJpZXMgYXJlIGV4cGVjdGVkIGZvciBFRkkgd2hlbiB0YXJnZXRpbmcgWDMyCi1JTlNBTkVfU0tJUF8ke1BOfS1kZXZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYXJjaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgSXQgZG9lc24ndCBzdXBwb3J0IHNzZSwgaXRzIG1ha2UuZGVmYXVsdHMgc2V0czoKLSMgQ0ZMQUdTICs9IC1tbm8tbW14IC1tbm8tc3NlCi0jIFNvIGFsc28gcmVtb3ZlIC1tZnBtYXRoPXNzZSBmcm9tIFRVTkVfQ0NBUkdTCi1UVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgotCi1weXRob24gKCkgewotICAgIGNjYXJncyA9IGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpLnNwbGl0KCkKLSAgICBpZiAnLW14MzInIGluIGNjYXJnczoKLSAgICAgICAgIyB1c2UgeDg2XzY0IEVGSSBBQkkKLSAgICAgICAgY2NhcmdzLnJlbW92ZSgnLW14MzInKQotICAgICAgICBjY2FyZ3MuYXBwZW5kKCctbTY0JykKLSAgICAgICAgZC5zZXRWYXIoJ1RVTkVfQ0NBUkdTJywgJyAnLmpvaW4oY2NhcmdzKSkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTYwNzE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC42LmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiTGlicmFyaWVzIGZvciBwcm9kdWNpbmcgRUZJIGJpbmFyaWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbnUtZWZpLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYyKyB8IEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dudWVmaS9jcnQwLWVmaS1hcm0uUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYWFyY2g2NC5TO2JlZ2lubGluZT00O2VuZGxpbmU9MTY7bWQ1PWU1ODI3NjRhNDc3NmU2MGM5NWJmOWFiNjE3MzQzZDM2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbGludGYuaDtiZWdpbmxpbmU9MTM7ZW5kbGluZT0yMDttZDU9MjAyNzY2Yjc5ZDcwOGVmZjNjYzcwZmNlMTVmYjgwYzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jL2VmaXNoZWxscGFybS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTE7bWQ1PTQ2OGIxMjMxYjA1YmJjODRiYWUzYTBkNTc3NGUzYmI1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vaW5pdHBsYXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYWFyY2g2NC9tYXRoLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvaW5pdHBsYXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYi1NYWtlZmlsZS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2NjNDYtY29tcGF0aWJpbGl0eS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ2ZjYzMzc1OGE4YTM3ZGI5ZmQ2OTA5ZmUyNzBjMjZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxNTE1OTAyZDgwZmJlYTIzMzI4YTYxZDcwZDNkNTFhNDcyMDRhYmQxNTA3ZWJmYTI3NTUwYTdiOWJmMjJjOTEiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKiktbGludXgiCitDT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKKworZG9fY29uZmlndXJlX2xpbnV4LWdudXgzMl9wcmVwZW5kKCkgeworCWNwICR7U1RBR0lOR19JTkNESVJ9L2dudS9zdHVicy14MzIuaCAke1NUQUdJTkdfSU5DRElSfS9nbnUvc3R1YnMtNjQuaAorCWNwICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtMzIuaCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTY0LmgKK30KKworZGVmIGdudV9lZmlfYXJjaChkKToKKyAgICBpbXBvcnQgcmUKKyAgICB0YXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCisgICAgaWYgcmUubWF0Y2goImlbMzQ1Njc4OV04NiIsIHRhcmNoKToKKyAgICAgICAgcmV0dXJuICJpYTMyIgorICAgIHJldHVybiB0YXJjaAorCitFWFRSQV9PRU1BS0UgPSAiJ0FSQ0g9JHtAZ251X2VmaV9hcmNoKGQpfScgJ0NDPSR7Q0N9JyAnQVM9JHtBU30nICdMRD0ke0xEfScgJ0FSPSR7QVJ9JyBcCisgICAgICAgICAgICAgICAgJ1JBTkxJQj0ke1JBTkxJQn0nICdPQkpDT1BZPSR7T0JKQ09QWX0nICdQUkVGSVg9JHtwcmVmaXh9JyAnTElCRElSPSR7bGliZGlyfScgXAorICAgICAgICAgICAgICAgICIKKworIyBnbnUtZWZpJ3MgTWFrZWZpbGUgdHJlYXRzIHByZWZpeCBhcyB0b29sY2hhaW4gcHJlZml4LCBzbyBkb24ndAorIyBleHBvcnQgaXQuCitwcmVmaXhbdW5leHBvcnRdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMUk9PVD0iJHtEfSIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLmxkcyIKKworIyA2NC1iaXQgYmluYXJpZXMgYXJlIGV4cGVjdGVkIGZvciBFRkkgd2hlbiB0YXJnZXRpbmcgWDMyCitJTlNBTkVfU0tJUF8ke1BOfS1kZXZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYXJjaCIKK0lOU0FORV9TS0lQXyR7UE59LWRldl9hcHBlbmRfbGludXgtbXVzbHgzMiA9ICIgYXJjaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgSXQgZG9lc24ndCBzdXBwb3J0IHNzZSwgaXRzIG1ha2UuZGVmYXVsdHMgc2V0czoKKyMgQ0ZMQUdTICs9IC1tbm8tbW14IC1tbm8tc3NlCisjIFNvIGFsc28gcmVtb3ZlIC1tZnBtYXRoPXNzZSBmcm9tIFRVTkVfQ0NBUkdTCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgorCitweXRob24gKCkgeworICAgIGNjYXJncyA9IGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpLnNwbGl0KCkKKyAgICBpZiAnLW14MzInIGluIGNjYXJnczoKKyAgICAgICAgIyB1c2UgeDg2XzY0IEVGSSBBQkkKKyAgICAgICAgY2NhcmdzLnJlbW92ZSgnLW14MzInKQorICAgICAgICBjY2FyZ3MuYXBwZW5kKCctbTY0JykKKyAgICAgICAgZC5zZXRWYXIoJ1RVTkVfQ0NBUkdTJywgJyAnLmpvaW4oY2NhcmdzKSkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1naXQvMDAwMS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtZGlzYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtRGlzYWJsZS1tZnBtYXRoLXNzZS1hcy13ZWxsLXdoZW4tU1NFLWlzLWRpc2FibGVkLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZ2l0LzAwMDEtRGlzYWJsZS1tZnBtYXRoLXNzZS1hcy13ZWxsLXdoZW4tU1NFLWlzLWRpc2FibGVkLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtRGlzYWJsZS1tZnBtYXRoLXNzZS1hcy13ZWxsLXdoZW4tU1NFLWlzLWRpc2FibGVkLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtRW5mb3JjZS1uby1waWUtaWYtdGhlLWNvbXBpbGVyLXN1cHBvcnRzLWl0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLUVuZm9yY2Utbm8tcGllLWlmLXRoZS1jb21waWxlci1zdXBwb3J0cy1pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NkYmVlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtRW5mb3JjZS1uby1waWUtaWYtdGhlLWNvbXBpbGVyLXN1cHBvcnRzLWl0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA2MTg2YmNmMWJjYWFhMGYxNmU3OTMzOWUwN2M2NGM4NDFkNGQ5NTdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIgRGVjIDIwMTYgMjA6NTI6NDAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRW5mb3JjZSAtbm8tcGllLCBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgaXQuCi0KLUFkZCBhIC1uby1waWUgYXMgcmVjZW50ICgyIERlYyAyMDE2KSBEZWJpYW4gdGVzdGluZyBjb21waWxlcgotc2VlbXMgdG8gZGVmYXVsdCB0byBlbmFibGluZyBQSUUgd2hlbiBsaW5raW5nLiBTZWUKLWh0dHBzOi8vd2lraS51YnVudHUuY29tL1NlY3VyaXR5VGVhbS9QSUUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGFjaW5jbHVkZS5tNCB8IDIgKy0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKLWluZGV4IDE5MjAwYjAuLmE3MTM5MjMgMTAwNjQ0Ci0tLS0gYS9hY2luY2x1ZGUubTQKLSsrKyBiL2FjaW5jbHVkZS5tNAotQEAgLTQxNiw3ICs0MTYsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSBbIyBgJENDIC1jIC1vIC4uLicgbWlnaHQgbm90IGJlIHBvcnRhYmxlLiAgQnV0LCBvaCwgd2VsbC4uLiAgSXMgY2FsbGluZwotICMgYGFjX2NvbXBpbGUnIGxpa2UgdGhpcyBjb3JyZWN0LCBhZnRlciBhbGw/Ci0taWYgZXZhbCAiJGFjX2NvbXBpbGUgLVMgLW8gY29uZnRlc3QucyIgMj4gL2Rldi9udWxsOyB0aGVuXQotK2lmIGV2YWwgIiRhY19jb21waWxlIC1TIC1vIGNvbmZ0ZXN0LnMiIDI+IC9kZXYvbnVsbCAmJiBldmFsICIkQ0MgLWR1bXBzcGVjcyAyPi9kZXYvbnVsbCB8IGdyZXAgLWUgbm8tcGllIiA7IHRoZW5dCi0gICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgWyMgU2hvdWxkIHdlIGNsZWFyIHVwIG90aGVyIGZpbGVzIGFzIHdlbGwsIGhhdmluZyBjYWxsZWQgYEFDX0xBTkdfQ09ORlRFU1QnPwotICAgcm0gLWYgY29uZnRlc3QucwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZGYyMDk5MS4uNTA2YzZiNCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjAzLDcgKzYwMyw3IEBAIGdydWJfQ0hFQ0tfUElFCi0gWyMgTmVlZCB0aGF0LCBiZWNhdXNlIHNvbWUgZGlzdHJpYnV0aW9ucyBzaGlwIGNvbXBpbGVycyB0aGF0IGluY2x1ZGUKLSAjIGAtZlBJRScgaW4gdGhlIGRlZmF1bHQgc3BlY3MuCi0gaWYgWyB4IiRwaWVfcG9zc2libGUiID0geHllcyBdOyB0aGVuCi0tICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtZm5vLVBJRSIKLSsgIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1mbm8tUElFIC1uby1waWUiCi0gZmldCi0gCi0gIyBQb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlLgotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLUZpeC1DVkUtMjAxNS04MzcwLUdydWIyLXVzZXItcGFzcy12dWxuZXJhYmlsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLUZpeC1DVkUtMjAxNS04MzcwLUdydWIyLXVzZXItcGFzcy12dWxuZXJhYmlsaXR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWRkY2FmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1GaXgtQ1ZFLTIwMTUtODM3MC1HcnViMi11c2VyLXBhc3MtdnVsbmVyYWJpbGl0eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLUNWRTogQ1ZFLTIwMTUtODM3MAotU2lnbmVkLW9mZi1ieTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+Ci0KLUZyb20gNDUxZDgwZTUyZDg1MTQzMmUxMDk3NzFiYjhmZWJhZmNhN2E1ZjFmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhlY3RvciBNYXJjby1HaXNiZXJ0IDxoZWNtYXJnaUB1cHYuZXM+Ci1EYXRlOiBXZWQsIDE2IERlYyAyMDE1IDA0OjU3OjE4ICswMDAwCi1TdWJqZWN0OiBGaXggc2VjdXJpdHkgaXNzdWUgd2hlbiByZWFkaW5nIHVzZXJuYW1lIGFuZCBwYXNzd29yZAotCi1UaGlzIHBhdGNoIGZpeGVzIHR3byBpbnRlZ2VyIHVuZGVyZmxvd3MgYXQ6Ci0gICogZ3J1Yi1jb3JlL2xpYi9jcnlwdG8uYwotICAqIGdydWItY29yZS9ub3JtYWwvYXV0aC5jCi0KLUNWRS0yMDE1LTgzNzAKLQotU2lnbmVkLW9mZi1ieTogSGVjdG9yIE1hcmNvLUdpc2JlcnQgPGhlY21hcmdpQHVwdi5lcz4KLVNpZ25lZC1vZmYtYnk6IElzbWFlbCBSaXBvbGwtUmlwb2xsIDxpcmlwb2xsQGRpc2NhLnVwdi5lcz4KLUFsc28tQnk6IEFuZHJleSBCb3J6ZW5rb3YgPGFydmlkamFhckBnbWFpbC5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL2NyeXB0by5jIGIvZ3J1Yi1jb3JlL2xpYi9jcnlwdG8uYwotaW5kZXggMDEwZTU1MC4uNjgzYThhYSAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9saWIvY3J5cHRvLmMKLSsrKyBiL2dydWItY29yZS9saWIvY3J5cHRvLmMKLUBAIC00NzAsNyArNDcwLDggQEAgZ3J1Yl9wYXNzd29yZF9nZXQgKGNoYXIgYnVmW10sIHVuc2lnbmVkIGJ1Zl9zaXplKQotIAotICAgICAgIGlmIChrZXkgPT0gJ1xiJykKLSAJewotLQkgIGN1cl9sZW4tLTsKLSsJICBpZiAoY3VyX2xlbikKLSsJICAgIGN1cl9sZW4tLTsKLSAJICBjb250aW51ZTsKLSAJfQotIAotZGlmZiAtLWdpdCBhL2dydWItY29yZS9ub3JtYWwvYXV0aC5jIGIvZ3J1Yi1jb3JlL25vcm1hbC9hdXRoLmMKLWluZGV4IGM2YmQ5NmUuLjg2MTVjNDggMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUvbm9ybWFsL2F1dGguYwotKysrIGIvZ3J1Yi1jb3JlL25vcm1hbC9hdXRoLmMKLUBAIC0xNzQsOCArMTc0LDExIEBAIGdydWJfdXNlcm5hbWVfZ2V0IChjaGFyIGJ1ZltdLCB1bnNpZ25lZCBidWZfc2l6ZSkKLSAKLSAgICAgICBpZiAoa2V5ID09ICdcYicpCi0gCXsKLS0JICBjdXJfbGVuLS07Ci0tCSAgZ3J1Yl9wcmludGYgKCJcYiIpOwotKwkgIGlmIChjdXJfbGVuKQotKwkgICAgewotKwkgICAgICBjdXJfbGVuLS07Ci0rCSAgICAgIGdydWJfcHJpbnRmICgiXGIiKTsKLSsJICAgIH0KLSAJICBjb250aW51ZTsKLSAJfQotIAotLS0KLWNnaXQgdjAuOS4wLjIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1SZW1vdmUtZGlyZWN0LV9sbHNlZWstY29kZS1hbmQtcmVxdWlyZS1sb25nLWZpbGVzeXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLVJlbW92ZS1kaXJlY3QtX2xsc2Vlay1jb2RlLWFuZC1yZXF1aXJlLWxvbmctZmlsZXN5c3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYWJjZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLVJlbW92ZS1kaXJlY3QtX2xsc2Vlay1jb2RlLWFuZC1yZXF1aXJlLWxvbmctZmlsZXN5c3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1Gcm9tIDNiYWM0Y2FhMmJjNjRkYjMxM2FhZWU1NGZmZmI5MDM4M2UxMTg1MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgotRGF0ZTogVGh1LCAyMiBKYW4gMjAxNSAxOTo1NDozNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgZGlyZWN0IF9sbHNlZWsgY29kZSBhbmQgcmVxdWlyZSBsb25nIGZpbGVzeXN0ZW0gbGliYy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKysrKwotIGdydWItY29yZS9vc2RlcC91bml4L2hvc3RkaXNrLmMgfCAyNCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ3J1Yi0yLjAwL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdydWItMi4wMC9jb25maWd1cmUuYWMKLUBAIC0zMDYsNiArMzA2LDE0IEBAIGlmIHRlc3QgeCRncnViX2N2X2FwcGxlX2NjID0geHllcyA7IHRoZW4KLSAgIEhPU1RfTERGTEFHUz0iJEhPU1RfTERGTEFHUyAtV2wsLWFsbG93X3N0YWNrX2V4ZWN1dGUiCi0gZmkKLSAKLStjYXNlICIkaG9zdF9vcyIgaW4KLSsgIGN5Z3dpbiB8IHdpbmRvd3MqIHwgbWluZ3czMiogfCBhcm9zKikKLSsgICAgIDs7Ci0rICAqKQotKyAgICAgQUNfQ0hFQ0tfU0laRU9GKG9mZl90KQotKyAgICAgdGVzdCB4IiRhY19jdl9zaXplb2Zfb2ZmX3QiID0geDggfHwgQUNfTVNHX0VSUk9SKFtMYXJnZSBmaWxlIHN1cHBvcnQgaXMgcmVxdWlyZWRdKTs7Ci0rZXNhYwotKwotIGlmIHRlc3QgeCRVU0VfTkxTID0geG5vOyB0aGVuCi0gICBIT1NUX0NGTEFHUz0iJEhPU1RfQ0ZMQUdTIC1mbm8tYnVpbHRpbi1nZXR0ZXh0IgotIGZpCi1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZGlzay5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3RkaXNrLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3RkaXNrLmMKLUBAIC00NCwxMSArNDQsNiBAQAotICNpZmRlZiBfX2xpbnV4X18KLSAjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPiAgICAgICAgIC8qIGlvY3RsICovCi0gIyBpbmNsdWRlIDxzeXMvbW91bnQuaD4KLS0jIGlmICFkZWZpbmVkKF9fR0xJQkNfXykgfHwgXAotLSAgICAgICAgKChfX0dMSUJDX18gPCAyKSB8fCAoKF9fR0xJQkNfXyA9PSAyKSAmJiAoX19HTElCQ19NSU5PUl9fIDwgMSkpKQotLS8qIE1heWJlIGxpYmMgZG9lc24ndCBoYXZlIGxhcmdlIGZpbGUgc3VwcG9ydC4gICovCi0tIyAgaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+ICAgICAvKiBfbGxzZWVrICovCi0tIyBlbmRpZiAvKiAoR0xJQkMgPCAyKSB8fCAoKF9fR0xJQkNfXyA9PSAyKSAmJiAoX19HTElCQ19NSU5PUiA8IDEpKSAqLwotICMgaWZuZGVmIEJMS0ZMU0JVRgotICMgIGRlZmluZSBCTEtGTFNCVUYgICAgIF9JTyAoMHgxMiw5NykgICAvKiBmbHVzaCBidWZmZXIgY2FjaGUgKi8KLSAjIGVuZGlmIC8qICEgQkxLRkxTQlVGICovCi1AQCAtNzYxLDI1ICs3NTYsNiBAQCBsaW51eF9maW5kX3BhcnRpdGlvbiAoY2hhciAqZGV2LCBncnViX2RpCi0gfQotICNlbmRpZiAvKiBfX2xpbnV4X18gKi8KLSAKLS0jaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICghZGVmaW5lZChfX0dMSUJDX18pIHx8IFwKLS0gICAgICAgICgoX19HTElCQ19fIDwgMikgfHwgKChfX0dMSUJDX18gPT0gMikgJiYgKF9fR0xJQkNfTUlOT1JfXyA8IDEpKSkpCi0tICAvKiBNYXliZSBsaWJjIGRvZXNuJ3QgaGF2ZSBsYXJnZSBmaWxlIHN1cHBvcnQuICAqLwotLWdydWJfZXJyX3QKLS1ncnViX3V0aWxfZmRfc2VlayAoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lLCBncnViX3VpbnQ2NF90IG9mZikKLS17Ci0tICBsb2ZmX3Qgb2Zmc2V0LCByZXN1bHQ7Ci0tICBzdGF0aWMgaW50IF9sbHNlZWsgKHVpbnQgZmlsZWRlcywgdWxvbmcgaGksIHVsb25nIGxvLAotLQkJICAgICAgbG9mZl90ICpyZXMsIHVpbnQgd2gpOwotLSAgX3N5c2NhbGw1IChpbnQsIF9sbHNlZWssIHVpbnQsIGZpbGVkZXMsIHVsb25nLCBoaSwgdWxvbmcsIGxvLAotLQkgICAgIGxvZmZfdCAqLCByZXMsIHVpbnQsIHdoKTsKLS0KLS0gIG9mZnNldCA9IChsb2ZmX3QpIG9mZjsKLS0gIGlmIChfbGxzZWVrIChmZCwgb2Zmc2V0ID4+IDMyLCBvZmZzZXQgJiAweGZmZmZmZmZmLCAmcmVzdWx0LCBTRUVLX1NFVCkpCi0tICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfREVWSUNFLCBOXygiY2Fubm90IHNlZWsgYCVzJzogJXMiKSwKLS0JCSAgICAgICBuYW1lLCBzdHJlcnJvciAoZXJybm8pKTsKLS0gIHJldHVybiBHUlVCX0VSUl9OT05FOwotLX0KLS0jZWxzZQotIGdydWJfZXJyX3QKLSBncnViX3V0aWxfZmRfc2VlayAoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lLCBncnViX3VpbnQ2NF90IG9mZikKLSB7Ci1AQCAtNzkwLDcgKzc2Niw2IEBAIGdydWJfdXRpbF9mZF9zZWVrIChpbnQgZmQsIGNvbnN0IGNoYXIgKm4KLSAJCSAgICAgICBuYW1lLCBzdHJlcnJvciAoZXJybm8pKTsKLSAgIHJldHVybiAwOwotIH0KLS0jZW5kaWYKLSAKLSBzdGF0aWMgdm9pZAotIGZsdXNoX2luaXRpYWxfYnVmZmVyIChjb25zdCBjaGFyICpvc19kZXYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWJ0cmZzLWF2b2lkLXVzZWQtdW5pbml0aWFsaXplZC1lcnJvci13aXRoLUdDQzcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtYnRyZnMtYXZvaWQtdXNlZC11bmluaXRpYWxpemVkLWVycm9yLXdpdGgtR0NDNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE3YTc3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtYnRyZnMtYXZvaWQtdXNlZC11bmluaXRpYWxpemVkLWVycm9yLXdpdGgtR0NDNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gNmNlZjdmNjA3OTU1MGFmM2JmOTFkYmZmODI0Mzk4ZWFlZjA4YzNjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlaSBCb3J6ZW5rb3YgPGFydmlkamFhckBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDQgQXByIDIwMTcgMTk6MjI6MzIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIGJ0cmZzOiBhdm9pZCAidXNlZCB1bmluaXRpYWxpemVkIiBlcnJvciB3aXRoIEdDQzcKLQotc2Jsb2NrIHdhcyBsb2NhbCBhbmQgc28gY29uc2lkZXJlZCBuZXcgdmFyaWFibGUgb24gZXZlcnkgbG9vcAotaXRlcmF0aW9uLgotCi1DbG9zZXM6IDUwNTk3Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBncnViLWNvcmUvZnMvYnRyZnMuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9mcy9idHJmcy5jIGIvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMKLWluZGV4IDljZmZhOTEuLjQ4NDljMWMgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUvZnMvYnRyZnMuYwotKysrIGIvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMKLUBAIC0yMjcsMTEgKzIyNywxMSBAQCBncnViX2J0cmZzX3JlYWRfbG9naWNhbCAoc3RydWN0IGdydWJfYnRyZnNfZGF0YSAqZGF0YSwKLSBzdGF0aWMgZ3J1Yl9lcnJfdAotIHJlYWRfc2Jsb2NrIChncnViX2Rpc2tfdCBkaXNrLCBzdHJ1Y3QgZ3J1Yl9idHJmc19zdXBlcmJsb2NrICpzYikKLSB7Ci0rICBzdHJ1Y3QgZ3J1Yl9idHJmc19zdXBlcmJsb2NrIHNibG9jazsKLSAgIHVuc2lnbmVkIGk7Ci0gICBncnViX2Vycl90IGVyciA9IEdSVUJfRVJSX05PTkU7Ci0gICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSAoc3VwZXJibG9ja19zZWN0b3JzKTsgaSsrKQotICAgICB7Ci0tICAgICAgc3RydWN0IGdydWJfYnRyZnNfc3VwZXJibG9jayBzYmxvY2s7Ci0gICAgICAgLyogRG9uJ3QgdHJ5IGFkZGl0aW9uYWwgc3VwZXJibG9ja3MgYmV5b25kIGRldmljZSBzaXplLiAgKi8KLSAgICAgICBpZiAoaSAmJiAoZ3J1Yl9sZV90b19jcHU2NCAoc2Jsb2NrLnRoaXNfZGV2aWNlLnNpemUpCi0gCQk+PiBHUlVCX0RJU0tfU0VDVE9SX0JJVFMpIDw9IHN1cGVyYmxvY2tfc2VjdG9yc1tpXSkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWJ1aWxkLVVzZS1BQ19IRUFERVJfTUFKT1ItdG8tZmluZC1kZXZpY2UtbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWJ1aWxkLVVzZS1BQ19IRUFERVJfTUFKT1ItdG8tZmluZC1kZXZpY2UtbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTViOWVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1idWlsZC1Vc2UtQUNfSEVBREVSX01BSk9SLXRvLWZpbmQtZGV2aWNlLW1hY3Jvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLUZyb20gN2E1YjMwMWUzYWRiOGUwNTQyODg1MThhMzI1MTM1YTE4ODNjMWM2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pa2UgR2lsYmVydCA8ZmxvcHB5bUBnZW50b28ub3JnPgotRGF0ZTogVHVlLCAxOSBBcHIgMjAxNiAxNDoyNzoyMiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogVXNlIEFDX0hFQURFUl9NQUpPUiB0byBmaW5kIGRldmljZSBtYWNyb3MKLQotRGVwZW5kaW5nIG9uIHRoZSBPUy9saWJjLCBkZXZpY2UgbWFjcm9zIGFyZSBkZWZpbmVkIGluIGRpZmZlcmVudAotaGVhZGVycy4gVGhpcyBjaGFuZ2UgZW5zdXJlcyB3ZSBpbmNsdWRlIHRoZSByaWdodCBvbmUuCi0KLXN5cy90eXBlcy5oIC0gQlNECi1zeXMvbWtkZXYuaCAtIFN1bgotc3lzL3N5c21hY3Jvcy5oIC0gZ2xpYmMgKExpbnV4KQotCi1nbGliYyBjdXJyZW50bHkgcHVsbHMgc3lzL3N5c21hY3Jvcy5oIGludG8gc3lzL3R5cGVzLmgsIGJ1dCB0aGlzIG1heQotY2hhbmdlIGluIGEgZnV0dXJlIHJlbGVhc2UuCi0KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE1LTExL21zZzAwMjUzLmh0bWwKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyArKy0KLSBncnViLWNvcmUvb3NkZXAvZGV2bWFwcGVyL2dldHJvb3QuYyAgfCA2ICsrKysrKwotIGdydWItY29yZS9vc2RlcC9kZXZtYXBwZXIvaG9zdGRpc2suYyB8IDUgKysrKysKLSBncnViLWNvcmUvb3NkZXAvbGludXgvZ2V0cm9vdC5jICAgICAgfCA2ICsrKysrKwotIGdydWItY29yZS9vc2RlcC91bml4L2dldHJvb3QuYyAgICAgICB8IDQgKysrLQotIDUgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdydWItMi4wMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9jb25maWd1cmUuYWMKLSsrKyBncnViLTIuMDAvY29uZmlndXJlLmFjCi1AQCAtMzI2LDcgKzMyNiw4IEBAIGZpCi0gCi0gIyBDaGVjayBmb3IgZnVuY3Rpb25zIGFuZCBoZWFkZXJzLgotIEFDX0NIRUNLX0ZVTkNTKHBvc2l4X21lbWFsaWduIG1lbWFsaWduIGFzcHJpbnRmIHZhc3ByaW50ZiBnZXRleHRtbnRlbnQpCi0tQUNfQ0hFQ0tfSEVBREVSUyhzeXMvcGFyYW0uaCBzeXMvbW91bnQuaCBzeXMvbW50dGFiLmggc3lzL21rZGV2LmggbGltaXRzLmgpCi0rQUNfQ0hFQ0tfSEVBREVSUyhzeXMvcGFyYW0uaCBzeXMvbW91bnQuaCBzeXMvbW50dGFiLmggbGltaXRzLmgpCi0rQUNfSEVBREVSX01BSk9SCi0gCi0gQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXRmcy5mX2ZzdHlwZW5hbWVdLCwsWyRhY19pbmNsdWRlc19kZWZhdWx0Ci0gI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGRpc2suYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZGlzay5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZGlzay5jCi1AQCAtNDEsNiArNDEsMTIgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0rI2lmIGRlZmluZWQoTUFKT1JfSU5fTUtERVYpCi0rI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgotKyNlbGlmIGRlZmluZWQoTUFKT1JfSU5fU1lTTUFDUk9TKQotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fbGludXhfXwotICMgaW5jbHVkZSA8c3lzL2lvY3RsLmg+ICAgICAgICAgLyogaW9jdGwgKi8KLSAjIGluY2x1ZGUgPHN5cy9tb3VudC5oPgotSW5kZXg6IGdydWItMi4wMC91dGlsL2dldHJvb3QuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL3V0aWwvZ2V0cm9vdC5jCi0rKysgZ3J1Yi0yLjAwL3V0aWwvZ2V0cm9vdC5jCi1AQCAtMzUsNiArMzUsMTMgQEAKLSAjaWZkZWYgSEFWRV9MSU1JVFNfSAotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKLSsjaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0rI2VsaWYgZGVmaW5lZChNQUpPUl9JTl9TWVNNQUNST1MpCi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8Z3J1Yi91dGlsL21pc2MuaD4KLSAjaW5jbHVkZSA8Z3J1Yi91dGlsL2x2bS5oPgotICNpbmNsdWRlIDxncnViL2NyeXB0b2Rpc2suaD4KLUluZGV4OiBncnViLTIuMDAvdXRpbC9yYWlkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy91dGlsL3JhaWQuYwotKysrIGdydWItMi4wMC91dGlsL3JhaWQuYwotQEAgLTI5LDYgKzI5LDEyIEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotKyNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQotKyNpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSsjZWxpZiBkZWZpbmVkKE1BSk9SX0lOX1NZU01BQ1JPUykKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotKwotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotICNpbmNsdWRlIDxsaW51eC9tYWpvci5oPgotICNpbmNsdWRlIDxsaW51eC9yYWlkL21kX3AuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1ncnViLWNvcmUtZ2V0dGV4dC1nZXR0ZXh0LmMtbWFpbl9jb250ZXh0LXNlY29uZGFyeV9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWItY29yZS1nZXR0ZXh0LWdldHRleHQuYy1tYWluX2NvbnRleHQtc2Vjb25kYXJ5X2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlYzIzNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWItY29yZS1nZXR0ZXh0LWdldHRleHQuYy1tYWluX2NvbnRleHQtc2Vjb25kYXJ5X2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIGYzMGM2OTJjMWY5ZWYwZTkzYmVlMmI0MDhhMjRiYWEwMTdmMWNhOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWbGFkaW1pciBTZXJiaW5lbmtvIDxwaGNvZGVyQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNyBOb3YgMjAxMyAwMTowMTo0NyArMDEwMAotU3ViamVjdDogW1BBVENIXSAJKiBncnViLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LmMgKG1haW5fY29udGV4dCksCi0gKHNlY29uZGFyeV9jb250ZXh0KTogCURlZmluZSBhZnRlciBkZWZpbmluZyB0eXBlIGFuZCBub3QgYmVmb3JlLgotCi0tLS0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgfCA1ICsrKysrCi0gZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LmMgYi9ncnViLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LmMKLWluZGV4IGRmNzM1NzAuLjQ4ODBjZWYgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LmMKLSsrKyBiL2dydWItY29yZS9nZXR0ZXh0L2dldHRleHQuYwotQEAgLTM0LDggKzM0LDYgQEAgR1JVQl9NT0RfTElDRU5TRSAoIkdQTHYzKyIpOwotICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi9tYW51YWwvZ2V0dGV4dC9NTy1GaWxlcy5odG1sIC4KLSAqLwotIAotLXN0YXRpYyBzdHJ1Y3QgZ3J1Yl9nZXR0ZXh0X2NvbnRleHQgbWFpbl9jb250ZXh0LCBzZWNvbmRhcnlfY29udGV4dDsKLS0KLSBzdGF0aWMgY29uc3QgY2hhciAqKCpncnViX2dldHRleHRfb3JpZ2luYWwpIChjb25zdCBjaGFyICpzKTsKLSAKLSBzdHJ1Y3QgZ3J1Yl9nZXR0ZXh0X21zZwotQEAgLTY5LDYgKzY3LDggQEAgc3RydWN0IGdydWJfZ2V0dGV4dF9jb250ZXh0Ci0gICBzdHJ1Y3QgZ3J1Yl9nZXR0ZXh0X21zZyAqZ3J1Yl9nZXR0ZXh0X21zZ19saXN0OwotIH07Ci0gCi0rc3RhdGljIHN0cnVjdCBncnViX2dldHRleHRfY29udGV4dCBtYWluX2NvbnRleHQsIHNlY29uZGFyeV9jb250ZXh0OwotKwotICNkZWZpbmUgTU9fTUFHSUNfTlVNQkVSIAkJMHg5NTA0MTJkZQotIAotIHN0YXRpYyBncnViX2Vycl90Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1ncnViLWNvcmUta2Vybi1lZmktbW0uYy1ncnViX2VmaV9maW5pc2hfYm9vdF9zZXJ2aWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWItY29yZS1rZXJuLWVmaS1tbS5jLWdydWJfZWZpX2ZpbmlzaF9ib290X3NlcnZpY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZjA4ZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWItY29yZS1rZXJuLWVmaS1tbS5jLWdydWJfZWZpX2ZpbmlzaF9ib290X3NlcnZpY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1Gcm9tIGIyNTg3NjFkMTE5NDZiMjhhODQ3ZGZmMDc2OGMzZjI3MWUxM2Q2MGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLURhdGU6IFRodSwgOCBEZWMgMjAxNiAxODoyMToxMiArMDUwMAotU3ViamVjdDogW1BBVENIIDEvMl0gKiBncnViLWNvcmUva2Vybi9lZmkvbW0uYwotIChncnViX2VmaV9maW5pc2hfYm9vdF9zZXJ2aWNlcyk6ICBUcnkgdGVybWluYXRpbmcgRUZJIHNlcnZpY2VzIHNldmVyYWwgdGltZXMKLSBkdWUgdG8gcXVpcmtzIGluIHNvbWUgIGltcGxlbWVudGF0aW9ucy4KLQotVXBzdHJlYW0tc3RhdHVzOiBCYWNrcG9ydCBbIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2dydWIuZ2l0L3BhdGNoLz9pZD1lNzVmZGVlNDIwYTdhZDk1ZTlhNDY1Yzk2OTlhZGMyZTJlOTcwNDQwIF0KLQotU2lnbmVkLW9mZi1ieTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+Ci0tLS0KLSBncnViLWNvcmUva2Vybi9lZmkvbW0uYyB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9lZmkvbW0uYyBiL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi1pbmRleCA0NjFkZWIwLi5iMDBlMGJjIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLSsrKyBiL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi1AQCAtMTY3LDI3ICsxNjcsNDEgQEAgZ3J1Yl9lZmlfZmluaXNoX2Jvb3Rfc2VydmljZXMgKGdydWJfZWZpX3VpbnRuX3QgKm91dGJ1Zl9zaXplLCB2b2lkICpvdXRidWYsCi0gCQkJICAgYXBwbGUsIHNpemVvZiAoYXBwbGUpKSA9PSAwKTsKLSAjZW5kaWYKLSAKLS0gIGlmIChncnViX2VmaV9nZXRfbWVtb3J5X21hcCAoJmZpbmlzaF9tbWFwX3NpemUsIGZpbmlzaF9tbWFwX2J1ZiwgJmZpbmlzaF9rZXksCi0tCQkJICAgICAgICZmaW5pc2hfZGVzY19zaXplLCAmZmluaXNoX2Rlc2NfdmVyc2lvbikgPCAwKQotLSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJjb3VsZG4ndCByZXRyaWV2ZSBtZW1vcnkgbWFwIik7Ci0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIGlmIChncnViX2VmaV9nZXRfbWVtb3J5X21hcCAoJmZpbmlzaF9tbWFwX3NpemUsIGZpbmlzaF9tbWFwX2J1ZiwgJmZpbmlzaF9rZXksCi0rCQkJCSAgICZmaW5pc2hfZGVzY19zaXplLCAmZmluaXNoX2Rlc2NfdmVyc2lvbikgPCAwKQotKwlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJjb3VsZG4ndCByZXRyaWV2ZSBtZW1vcnkgbWFwIik7Ci0gCi0tICBpZiAob3V0YnVmICYmICpvdXRidWZfc2l6ZSA8IGZpbmlzaF9tbWFwX3NpemUpCi0tICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgIm1lbW9yeSBtYXAgYnVmZmVyIGlzIHRvbyBzbWFsbCIpOwotKyAgICAgIGlmIChvdXRidWYgJiYgKm91dGJ1Zl9zaXplIDwgZmluaXNoX21tYXBfc2l6ZSkKLSsJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAibWVtb3J5IG1hcCBidWZmZXIgaXMgdG9vIHNtYWxsIik7Ci0gCi0tICBmaW5pc2hfbW1hcF9idWYgPSBncnViX21hbGxvYyAoZmluaXNoX21tYXBfc2l6ZSk7Ci0tICBpZiAoIWZpbmlzaF9tbWFwX2J1ZikKLS0gICAgcmV0dXJuIGdydWJfZXJybm87Ci0rICAgICAgZmluaXNoX21tYXBfYnVmID0gZ3J1Yl9tYWxsb2MgKGZpbmlzaF9tbWFwX3NpemUpOwotKyAgICAgIGlmICghZmluaXNoX21tYXBfYnVmKQotKwlyZXR1cm4gZ3J1Yl9lcnJubzsKLSAKLS0gIGlmIChncnViX2VmaV9nZXRfbWVtb3J5X21hcCAoJmZpbmlzaF9tbWFwX3NpemUsIGZpbmlzaF9tbWFwX2J1ZiwgJmZpbmlzaF9rZXksCi0tCQkJICAgICAgICZmaW5pc2hfZGVzY19zaXplLCAmZmluaXNoX2Rlc2NfdmVyc2lvbikgPD0gMCkKLS0gICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAiY291bGRuJ3QgcmV0cmlldmUgbWVtb3J5IG1hcCIpOwotKyAgICAgIGlmIChncnViX2VmaV9nZXRfbWVtb3J5X21hcCAoJmZpbmlzaF9tbWFwX3NpemUsIGZpbmlzaF9tbWFwX2J1ZiwgJmZpbmlzaF9rZXksCi0rCQkJCSAgICZmaW5pc2hfZGVzY19zaXplLCAmZmluaXNoX2Rlc2NfdmVyc2lvbikgPD0gMCkKLSsJewotKwkgIGdydWJfZnJlZSAoZmluaXNoX21tYXBfYnVmKTsKLSsJICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJjb3VsZG4ndCByZXRyaWV2ZSBtZW1vcnkgbWFwIik7Ci0rCX0KLSAKLS0gIGIgPSBncnViX2VmaV9zeXN0ZW1fdGFibGUtPmJvb3Rfc2VydmljZXM7Ci0tICBzdGF0dXMgPSBlZmlfY2FsbF8yIChiLT5leGl0X2Jvb3Rfc2VydmljZXMsIGdydWJfZWZpX2ltYWdlX2hhbmRsZSwKLS0JCSAgICAgICBmaW5pc2hfa2V5KTsKLS0gIGlmIChzdGF0dXMgIT0gR1JVQl9FRklfU1VDQ0VTUykKLS0gICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAiY291bGRuJ3QgdGVybWluYXRlIEVGSSBzZXJ2aWNlcyIpOwotKyAgICAgIGIgPSBncnViX2VmaV9zeXN0ZW1fdGFibGUtPmJvb3Rfc2VydmljZXM7Ci0rICAgICAgc3RhdHVzID0gZWZpX2NhbGxfMiAoYi0+ZXhpdF9ib290X3NlcnZpY2VzLCBncnViX2VmaV9pbWFnZV9oYW5kbGUsCi0rCQkJICAgZmluaXNoX2tleSk7Ci0rICAgICAgaWYgKHN0YXR1cyA9PSBHUlVCX0VGSV9TVUNDRVNTKQotKwlicmVhazsKLSAKLSsgICAgICBpZiAoc3RhdHVzICE9IEdSVUJfRUZJX0lOVkFMSURfUEFSQU1FVEVSKQotKwl7Ci0rCSAgZ3J1Yl9mcmVlIChmaW5pc2hfbW1hcF9idWYpOwotKwkgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgImNvdWxkbid0IHRlcm1pbmF0ZSBFRkkgc2VydmljZXMiKTsKLSsJfQotKwotKyAgICAgIGdydWJfZnJlZSAoZmluaXNoX21tYXBfYnVmKTsKLSsgICAgICBncnViX3ByaW50ZiAoIlRyeWluZyB0byB0ZXJtaW5hdGUgRUZJIHNlcnZpY2VzIGFnYWluXG4iKTsKLSsgICAgfQotICAgZ3J1Yl9lZmlfaXNfZmluaXNoZWQgPSAxOwotICAgaWYgKG91dGJ1Zl9zaXplKQotICAgICAqb3V0YnVmX3NpemUgPSBmaW5pc2hfbW1hcF9zaXplOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZ2l0LzAwMDEtZ3J1Yi5kLTEwX2xpbnV4LmluLWFkZC1vZS1zLWtlcm5lbC1uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWdpdC8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLXBhcnNlX2RoY3BfdmVuZG9yLUFkZC1taXNzaW5nLWNvbnN0LXF1YWxpZmllcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtcGFyc2VfZGhjcF92ZW5kb3ItQWRkLW1pc3NpbmctY29uc3QtcXVhbGlmaWVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU1ZTNlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtcGFyc2VfZGhjcF92ZW5kb3ItQWRkLW1pc3NpbmctY29uc3QtcXVhbGlmaWVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotT3JpZ2luYWwgY29tbWl0OiBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9ncnViLmdpdC9jb21taXQvZ3J1Yi1jb3JlL25ldC9ib290cC5jP2lkPWYwNmMyMTcyYzBiMzIwNTJmMjJlMzc1MjM0NDVjZjhlN2FmZmFlYTMKLQotRnJvbSAxNDlkMmExNGY0NzIzNzc4Y2VkMjNmNDM5NDg3MjAxY2NiZjFhMmM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjMgQXByIDIwMTUgMDc6MDM6MzQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gcGFyc2VfZGhjcF92ZW5kb3I6IEFkZCBtaXNzaW5nIGNvbnN0IHF1YWxpZmllcnMuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBncnViLWNvcmUvbmV0L2Jvb3RwLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL25ldC9ib290cC5jIGIvZ3J1Yi1jb3JlL25ldC9ib290cC5jCi1pbmRleCBiYzA3ZDUzLi40NDEzMWVkIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL25ldC9ib290cC5jCi0rKysgYi9ncnViLWNvcmUvbmV0L2Jvb3RwLmMKLUBAIC01Miw5ICs1Miw5IEBAIHNldF9lbnZfbGltbl9ybyAoY29uc3QgY2hhciAqaW50ZXJuYW1lLCBjb25zdCBjaGFyICpzdWZmaXgsCi0gfQotIAotIHN0YXRpYyB2b2lkCi0tcGFyc2VfZGhjcF92ZW5kb3IgKGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKnZlbmQsIGludCBsaW1pdCwgaW50ICptYXNrKQotK3BhcnNlX2RoY3BfdmVuZG9yIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICp2ZW5kLCBpbnQgbGltaXQsIGludCAqbWFzaykKLSB7Ci0tICBncnViX3VpbnQ4X3QgKnB0ciwgKnB0cjA7Ci0rICBjb25zdCBncnViX3VpbnQ4X3QgKnB0ciwgKnB0cjA7Ci0gCi0gICBwdHIgPSBwdHIwID0gdmVuZDsKLSAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAyLWdydWItY29yZS1rZXJuLWVmaS1tbS5jLWdydWJfZWZpX2dldF9tZW1vcnlfbWFwLU5ldmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDItZ3J1Yi1jb3JlLWtlcm4tZWZpLW1tLmMtZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAtTmV2ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU3MzVmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDItZ3J1Yi1jb3JlLWtlcm4tZWZpLW1tLmMtZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAtTmV2ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gNjMwZGU0NWYzZDVmOWEyZGRhN2ZhZDk5YWNkMjE0NDliOGM0MTExZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgotRGF0ZTogVGh1LCA4IERlYyAyMDE2IDE4OjI3OjAxICswNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSAqIGdydWItY29yZS9rZXJuL2VmaS9tbS5jIChncnViX2VmaV9nZXRfbWVtb3J5X21hcCk6Ci0gTmV2ZXIgIHJldHVybiBhIGRlc2NyaXB0b3Jfc2l6ZT09MCB0byBhdm9pZCBwb3RlbnRpYWwgZGl2aXNpb25zIGJ5IHplcm8uCi0KLVVwc3RyZWFtLXN0YXR1czogQmFja3BvcnQgWyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9ncnViLmdpdC9jb21taXQvP2lkPTY5YWVlNDNmYTY0NjAxY2FiZjZlZmE5Mjc5YzEwZDY5YjQ2NjY2MmUgXQotCi1TaWduZWQtb2ZmLWJ5OiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLS0tLQotIGdydWItY29yZS9rZXJuL2VmaS9tbS5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL2VmaS9tbS5jIGIvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLWluZGV4IGIwMGUwYmMuLjlmMWQxOTQgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotKysrIGIvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLUBAIC0yMzUsNiArMjM1LDcgQEAgZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAgKGdydWJfZWZpX3VpbnRuX3QgKm1lbW9yeV9tYXBfc2l6ZSwKLSAgIGdydWJfZWZpX2Jvb3Rfc2VydmljZXNfdCAqYjsKLSAgIGdydWJfZWZpX3VpbnRuX3Qga2V5OwotICAgZ3J1Yl9lZmlfdWludDMyX3QgdmVyc2lvbjsKLSsgIGdydWJfZWZpX3VpbnRuX3Qgc2l6ZTsKLSAKLSAgIGlmIChncnViX2VmaV9pc19maW5pc2hlZCkKLSAgICAgewotQEAgLTI2NCwxMCArMjY1LDE0IEBAIGdydWJfZWZpX2dldF9tZW1vcnlfbWFwIChncnViX2VmaV91aW50bl90ICptZW1vcnlfbWFwX3NpemUsCi0gICAgIG1hcF9rZXkgPSAma2V5OwotICAgaWYgKCEgZGVzY3JpcHRvcl92ZXJzaW9uKQotICAgICBkZXNjcmlwdG9yX3ZlcnNpb24gPSAmdmVyc2lvbjsKLSsgIGlmICghIGRlc2NyaXB0b3Jfc2l6ZSkKLSsgICAgZGVzY3JpcHRvcl9zaXplID0gJnNpemU7Ci0gCi0gICBiID0gZ3J1Yl9lZmlfc3lzdGVtX3RhYmxlLT5ib290X3NlcnZpY2VzOwotICAgc3RhdHVzID0gZWZpX2NhbGxfNSAoYi0+Z2V0X21lbW9yeV9tYXAsIG1lbW9yeV9tYXBfc2l6ZSwgbWVtb3J5X21hcCwgbWFwX2tleSwKLSAJCQkgICAgICBkZXNjcmlwdG9yX3NpemUsIGRlc2NyaXB0b3JfdmVyc2lvbik7Ci0rICBpZiAoKmRlc2NyaXB0b3Jfc2l6ZSA9PSAwKQotKyAgICAqZGVzY3JpcHRvcl9zaXplID0gc2l6ZW9mIChncnViX2VmaV9tZW1vcnlfZGVzY3JpcHRvcl90KTsKLSAgIGlmIChzdGF0dXMgPT0gR1JVQl9FRklfU1VDQ0VTUykKLSAgICAgcmV0dXJuIDE7Ci0gICBlbHNlIGlmIChzdGF0dXMgPT0gR1JVQl9FRklfQlVGRkVSX1RPT19TTUFMTCkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAyLWkzODYteDg2XzY0LXBwYy1maXgtc3dpdGNoLWZhbGx0aHJvdWdoLWNhc2VzLXdpdGgtR0MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDItaTM4Ni14ODZfNjQtcHBjLWZpeC1zd2l0Y2gtZmFsbHRocm91Z2gtY2FzZXMtd2l0aC1HQy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRmMDQ4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDItaTM4Ni14ODZfNjQtcHBjLWZpeC1zd2l0Y2gtZmFsbHRocm91Z2gtY2FzZXMtd2l0aC1HQy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0OCArMCwwIEBACi1Gcm9tIDRiZDRhODg3MjU2MDQ0NzFmZGJkODYzMTZjOTE5NjdhN2Y0ZGJhNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWkgQm9yemVua292IDxhcnZpZGphYXJAZ21haWwuY29tPgotRGF0ZTogVHVlLCA0IEFwciAyMDE3IDE5OjIzOjU1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBpMzg2LCB4ODZfNjQsIHBwYzogZml4IHN3aXRjaCBmYWxsdGhyb3VnaCBjYXNlcyB3aXRoIEdDQzcKLQotSW4gdXRpbC9nZXRyb290IGFuZCBlZmlkaXNrIHNsaWdodGx5IG1vZGlmeSBleGl0c2luZyBjb21tZW50IHRvIG1vc3RseQotcmV0YWluIGl0IGJ1dCBzdGlsbCBtYWtlIEdDQzcgY29tcGxpYW50IHdpdGggcmVzcGVjdCB0byBmYWxsIHRocm91Z2gKLWFubm90YXRpb24uCi0KLUluIGdydWItY29yZS9saWIveHplbWJlZC94el9kZWNfbHptYTIuYyBpdCBhZGRzIHNhbWUgY29tbWVudHMgYXMKLXVwc3RyZWFtLgotCi1JbiBncnViLWNvcmUvdGVzdHMvc2V0am1wX3RldHMuYyBkZWNsYXJlIGZ1bmN0aW9ucyBhcyAibm9yZXR1cm4iIHRvCi1zdXBwcmVzcyBHQ0M3IHdhcm5pbmcuCi0KLUluIGdydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jIHVzZSBuZXcgX19hdHRyaWJ1dGVfXywgYmVjYXVzZSBleGlzdGluZwotYW5ub3RhdGlvbiBpcyBub3QgcmVjb2duaXplZCBieSBHQ0M3IHBhcnNlciAod2hpY2ggcmVxdWlyZXMgdGhhdCBjb21tZW50Ci1pbW1lZGlhdGVseSBwcmVjZWRlcyBjYXNlIHN0YXRlbWVudCkuCi0KLU90aGVyd2lzZSBhZGQgRkFMTFRIUk9VR0ggY29tbWVudC4KLQotQ2xvc2VzOiA1MDU5OAotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ3J1Yi1jb3JlL2NvbW1hbmRzL2hkcGFybS5jICAgICAgICAgICB8IDEgKwotIGdydWItY29yZS9jb21tYW5kcy9uYXRpdmVkaXNrLmMgICAgICAgfCAxICsKLSBncnViLWNvcmUvZGlzay9jcnlwdG9kaXNrLmMgICAgICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL2Rpc2svZWZpL2VmaWRpc2suYyAgICAgICAgICB8IDIgKy0KLSBncnViLWNvcmUvZWZpZW11L21tLmMgICAgICAgICAgICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL2dkYi9jc3R1Yi5jICAgICAgICAgICAgICAgICB8IDEgKwotIGdydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jICAgICAgICAgICAgfCAzICsrKwotIGdydWItY29yZS9saWIveHplbWJlZC94el9kZWNfbHptYTIuYyAgfCA0ICsrKysKLSBncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX3N0cmVhbS5jIHwgNiArKysrKysKLSBncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYyAgICAgICAgIHwgMyArKysKLSBncnViLWNvcmUvdGVzdHMvc2V0am1wX3Rlc3QuYyAgICAgICAgIHwgNSArKysrLQotIGdydWItY29yZS92aWRlby9pZWVlMTI3NS5jICAgICAgICAgICAgfCAxICsKLSBncnViLWNvcmUvdmlkZW8vcmVhZGVycy9qcGVnLmMgICAgICAgIHwgMSArCi0gdXRpbC9nZXRyb290LmMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSB1dGlsL2dydWItaW5zdGFsbC5jICAgICAgICAgICAgICAgICAgIHwgMSArCi0gdXRpbC9ncnViLW1raW1hZ2V4eC5jICAgICAgICAgICAgICAgICB8IDEgKwotIHV0aWwvZ3J1Yi1tb3VudC5jICAgICAgICAgICAgICAgICAgICAgfCAxICsKLSAxNyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9jb21tYW5kcy9oZHBhcm0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9jb21tYW5kcy9oZHBhcm0uYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvY29tbWFuZHMvaGRwYXJtLmMKLUBAIC0zMjgsNiArMzI4LDcgQEAgZ3J1Yl9jbWRfaGRwYXJtIChncnViX2V4dGNtZF9jb250ZXh0X3QgYwotIAkgIGF0YSA9ICgoc3RydWN0IGdydWJfc2NzaSAqKSBkaXNrLT5kYXRhKS0+ZGF0YTsKLSAJICBicmVhazsKLSAJfQotKyAgICAgIC8qIEZBTExUSFJPVUdIICovCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAibm90IGFuIEFUQSBkZXZpY2UiKTsKLSAgICAgfQotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvZGlzay9jcnlwdG9kaXNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvZGlzay9jcnlwdG9kaXNrLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jCi1AQCAtMjY4LDYgKzI2OCw3IEBAIGdydWJfY3J5cHRvZGlza19lbmRlY3J5cHQgKHN0cnVjdCBncnViX2MKLSAJICBicmVhazsKLSAJY2FzZSBHUlVCX0NSWVBUT0RJU0tfTU9ERV9JVl9QTEFJTjY0OgotIAkgIGl2WzFdID0gZ3J1Yl9jcHVfdG9fbGUzMiAoc2VjdG9yID4+IDMyKTsKLSsJICAvKiBGQUxMVEhST1VHSCAqLwotIAljYXNlIEdSVUJfQ1JZUFRPRElTS19NT0RFX0lWX1BMQUlOOgotIAkgIGl2WzBdID0gZ3J1Yl9jcHVfdG9fbGUzMiAoc2VjdG9yICYgMHhGRkZGRkZGRik7Ci0gCSAgYnJlYWs7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9kaXNrL2VmaS9lZmlkaXNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvZGlzay9lZmkvZWZpZGlzay5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9kaXNrL2VmaS9lZmlkaXNrLmMKLUBAIC0yNjIsNyArMjYyLDcgQEAgbmFtZV9kZXZpY2VzIChzdHJ1Y3QgZ3J1Yl9lZmlkaXNrX2RhdGEgKgotIAkgICAgewotIAkgICAgY2FzZSBHUlVCX0VGSV9IQVJEX0RSSVZFX0RFVklDRV9QQVRIX1NVQlRZUEU6Ci0gCSAgICAgIGlzX2hhcmRfZHJpdmUgPSAxOwotLQkgICAgICAvKiBGYWxsIHRocm91Z2ggYnkgaW50ZW50aW9uLiAgKi8KLSsJICAgICAgLyogSW50ZW50aW9uYWxseSBmYWxsIHRocm91Z2guICAqLwotIAkgICAgY2FzZSBHUlVCX0VGSV9DRFJPTV9ERVZJQ0VfUEFUSF9TVUJUWVBFOgotIAkgICAgICB7Ci0gCQlzdHJ1Y3QgZ3J1Yl9lZmlkaXNrX2RhdGEgKnBhcmVudCwgKnBhcmVudDI7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9lZmllbXUvbW0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9lZmllbXUvbW0uYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvZWZpZW11L21tLmMKLUBAIC00MTAsNiArNDEwLDcgQEAgZ3J1Yl9lZmllbXVfbW1hcF9maWxsICh2b2lkKQotIAlkZWZhdWx0OgotIAkgIGdydWJfZHByaW50ZiAoImVmaWVtdSIsCi0gCQkJIlVua25vd24gbWVtb3J5IHR5cGUgJWQuIEFzc3VtaW5nIHVudXNhYmxlXG4iLCB0eXBlKTsKLSsJLyogRkFMTFRIUk9VR0ggKi8KLSAJY2FzZSBHUlVCX01FTU9SWV9SRVNFUlZFRDoKLSAJICByZXR1cm4gZ3J1Yl9lZmllbXVfYWRkX3RvX21tYXAgKGFkZHIsIHNpemUsCi0gCQkJCQkgIEdSVUJfRUZJX1VOVVNBQkxFX01FTU9SWSk7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9nZGIvY3N0dWIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9nZGIvY3N0dWIuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvZ2RiL2NzdHViLmMKLUBAIC0zMzYsNiArMzM2LDcgQEAgZ3J1Yl9nZGJfdHJhcCAoaW50IHRyYXBfbm8pCi0gCS8qIHNBQS4uQUE6IFN0ZXAgb25lIGluc3RydWN0aW9uIGZyb20gQUEuLkFBKG9wdGlvbmFsKS4gICovCi0gCWNhc2UgJ3MnOgotIAkgIHN0ZXBwaW5nID0gMTsKLSsJICAvKiBGQUxMVEhST1VHSCAqLwotIAotIAkvKiBjQUEuLkFBOiBDb250aW51ZSBhdCBhZGRyZXNzIEFBLi5BQShvcHRpb25hbCkuICAqLwotIAljYXNlICdjJzoKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYwotQEAgLTQxMDQsNiArNDEwNCw5IEBAIGNoZWNrX25vZGVfYWNjZXB0IChjb25zdCByZV9tYXRjaF9jb250ZXgKLSAgICAgY2FzZSBPUF9VVEY4X1BFUklPRDoKLSAgICAgICBpZiAoY2ggPj0gQVNDSUlfQ0hBUlMpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0rI2lmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPj0gNwotKyAgICAgIF9fYXR0cmlidXRlX18gKChmYWxsdGhyb3VnaCkpOwotKyNlbmRpZgotICAgICAgIC8qIEZBTExUSFJPVUdIICovCi0gI2VuZGlmCi0gICAgIGNhc2UgT1BfUEVSSU9EOgotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX2x6bWEyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX2x6bWEyLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19sem1hMi5jCi1AQCAtMTA0Miw2ICsxMDQyLDggQEAgZW51bSB4el9yZXQgeHpfZGVjX2x6bWEyX3J1bigKLSAKLSAJCQlzLT5sem1hMi5zZXF1ZW5jZSA9IFNFUV9MWk1BX1BSRVBBUkU7Ci0gCi0rCQkvKiBGYWxsIHRocm91Z2ggKi8KLSsKLSAJCWNhc2UgU0VRX0xaTUFfUFJFUEFSRToKLSAJCQlpZiAocy0+bHptYTIuY29tcHJlc3NlZCA8IFJDX0lOSVRfQllURVMpCi0gCQkJCXJldHVybiBYWl9EQVRBX0VSUk9SOwotQEAgLTEwNTIsNiArMTA1NCw4IEBAIGVudW0geHpfcmV0IHh6X2RlY19sem1hMl9ydW4oCi0gCQkJcy0+bHptYTIuY29tcHJlc3NlZCAtPSBSQ19JTklUX0JZVEVTOwotIAkJCXMtPmx6bWEyLnNlcXVlbmNlID0gU0VRX0xaTUFfUlVOOwotIAotKwkJLyogRmFsbCB0aHJvdWdoICovCi0rCi0gCQljYXNlIFNFUV9MWk1BX1JVTjoKLSAJCQkvKgotIAkJCSAqIFNldCBkaWN0aW9uYXJ5IGxpbWl0IHRvIGluZGljYXRlIGhvdyBtdWNoIHdlIHdhbnQKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19zdHJlYW0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9saWIveHplbWJlZC94el9kZWNfc3RyZWFtLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19zdHJlYW0uYwotQEAgLTc0OSw2ICs3NDksNyBAQCBzdGF0aWMgZW51bSB4el9yZXQgZGVjX21haW4oc3RydWN0IHh6X2RlCi0gCi0gCQkJcy0+c2VxdWVuY2UgPSBTRVFfQkxPQ0tfU1RBUlQ7Ci0gCi0rCQkJLyogRkFMTFRIUk9VR0ggKi8KLSAJCWNhc2UgU0VRX0JMT0NLX1NUQVJUOgotIAkJCS8qIFdlIG5lZWQgb25lIGJ5dGUgb2YgaW5wdXQgdG8gY29udGludWUuICovCi0gCQkJaWYgKGItPmluX3BvcyA9PSBiLT5pbl9zaXplKQotQEAgLTc3Miw2ICs3NzMsNyBAQCBzdGF0aWMgZW51bSB4el9yZXQgZGVjX21haW4oc3RydWN0IHh6X2RlCi0gCQkJcy0+dGVtcC5wb3MgPSAwOwotIAkJCXMtPnNlcXVlbmNlID0gU0VRX0JMT0NLX0hFQURFUjsKLSAKLSsJCQkvKiBGQUxMVEhST1VHSCAqLwotIAkJY2FzZSBTRVFfQkxPQ0tfSEVBREVSOgotIAkJCWlmICghZmlsbF90ZW1wKHMsIGIpKQotIAkJCQlyZXR1cm4gWFpfT0s7Ci1AQCAtNzgyLDYgKzc4NCw3IEBAIHN0YXRpYyBlbnVtIHh6X3JldCBkZWNfbWFpbihzdHJ1Y3QgeHpfZGUKLSAKLSAJCQlzLT5zZXF1ZW5jZSA9IFNFUV9CTE9DS19VTkNPTVBSRVNTOwotIAotKwkJCS8qIEZBTExUSFJPVUdIICovCi0gCQljYXNlIFNFUV9CTE9DS19VTkNPTVBSRVNTOgotIAkJCXJldCA9IGRlY19ibG9jayhzLCBiKTsKLSAJCQlpZiAocmV0ICE9IFhaX1NUUkVBTV9FTkQpCi1AQCAtODA5LDYgKzgxMiw3IEBAIHN0YXRpYyBlbnVtIHh6X3JldCBkZWNfbWFpbihzdHJ1Y3QgeHpfZGUKLSAKLSAJCQlzLT5zZXF1ZW5jZSA9IFNFUV9CTE9DS19DSEVDSzsKLSAKLSsJCQkvKiBGQUxMVEhST1VHSCAqLwotIAkJY2FzZSBTRVFfQkxPQ0tfQ0hFQ0s6Ci0gCQkJcmV0ID0gaGFzaF92YWxpZGF0ZShzLCBiLCAwKTsKLSAJCQlpZiAocmV0ICE9IFhaX1NUUkVBTV9FTkQpCi1AQCAtODYzLDYgKzg2Nyw3IEBAIHN0YXRpYyBlbnVtIHh6X3JldCBkZWNfbWFpbihzdHJ1Y3QgeHpfZGUKLSAKLSAJCQlzLT5zZXF1ZW5jZSA9IFNFUV9JTkRFWF9DUkMzMjsKLSAKLSsJCQkvKiBGQUxMVEhST1VHSCAqLwotIAkJY2FzZSBTRVFfSU5ERVhfQ1JDMzI6Ci0gCQkJcmV0ID0gaGFzaF92YWxpZGF0ZShzLCBiLCAxKTsKLSAJCQlpZiAocmV0ICE9IFhaX1NUUkVBTV9FTkQpCi1AQCAtODcxLDYgKzg3Niw3IEBAIHN0YXRpYyBlbnVtIHh6X3JldCBkZWNfbWFpbihzdHJ1Y3QgeHpfZGUKLSAJCQlzLT50ZW1wLnNpemUgPSBTVFJFQU1fSEVBREVSX1NJWkU7Ci0gCQkJcy0+c2VxdWVuY2UgPSBTRVFfU1RSRUFNX0ZPT1RFUjsKLSAKLSsJCQkvKiBGQUxMVEhST1VHSCAqLwotIAkJY2FzZSBTRVFfU1RSRUFNX0ZPT1RFUjoKLSAJCQlpZiAoIWZpbGxfdGVtcChzLCBiKSkKLSAJCQkJcmV0dXJuIFhaX09LOwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jCi1AQCAtOTc3LDEwICs5NzcsMTMgQEAgZ3J1Yl9jbWRfbGludXggKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dAotIAkgICAgICB7Ci0gCSAgICAgIGNhc2UgJ2cnOgotIAkJc2hpZnQgKz0gMTA7Ci0rCQkvKiBGQUxMVEhST1VHSCAqLwotIAkgICAgICBjYXNlICdtJzoKLSAJCXNoaWZ0ICs9IDEwOwotKwkJLyogRkFMTFRIUk9VR0ggKi8KLSAJICAgICAgY2FzZSAnayc6Ci0gCQlzaGlmdCArPSAxMDsKLSsJCS8qIEZBTExUSFJPVUdIICovCi0gCSAgICAgIGRlZmF1bHQ6Ci0gCQlicmVhazsKLSAJICAgICAgfQotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvdmlkZW8vcmVhZGVycy9qcGVnLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvdmlkZW8vcmVhZGVycy9qcGVnLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL3ZpZGVvL3JlYWRlcnMvanBlZy5jCi1AQCAtNzAxLDYgKzcwMSw3IEBAIGdydWJfanBlZ19kZWNvZGVfanBlZyAoc3RydWN0IGdydWJfanBlZ18KLSAJY2FzZSBKUEVHX01BUktFUl9TT1M6CS8qIFN0YXJ0IE9mIFNjYW4uICAqLwotIAkgIGlmIChncnViX2pwZWdfZGVjb2RlX3NvcyAoZGF0YSkpCi0gCSAgICBicmVhazsKLSsJICAvKiBGQUxMVEhST1VHSCAqLwotIAljYXNlIEpQRUdfTUFSS0VSX1JTVDA6CS8qIFJlc3RhcnQuICAqLwotIAljYXNlIEpQRUdfTUFSS0VSX1JTVDE6Ci0gCWNhc2UgSlBFR19NQVJLRVJfUlNUMjoKLUluZGV4OiBncnViLTIuMDAvdXRpbC9ncnViLW1raW1hZ2V4eC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvdXRpbC9ncnViLW1raW1hZ2V4eC5jCi0rKysgZ3J1Yi0yLjAwL3V0aWwvZ3J1Yi1ta2ltYWdleHguYwotQEAgLTQ4NSw2ICs0ODUsNyBAQCBTVUZGSVggKHJlbG9jYXRlX2FkZHJlc3NlcykgKEVsZl9FaGRyICplCi0gCQkJCQkJCQkJICAgICsgc3ltLT5zdF92YWx1ZQotIAkJCQkJCQkJCSAgICAtIGltYWdlX3RhcmdldC0+dmFkZHJfb2Zmc2V0KSk7Ci0gCQkgIH0KLSsJCS8qIEZBTExUSFJPVUdIICovCi0gCQljYXNlIFJfSUE2NF9MVE9GRl9GUFRSMjI6Ci0gCQkgICpncHB0ciA9IGdydWJfaG9zdF90b190YXJnZXQ2NCAoYWRkZW5kICsgc3ltX2FkZHIpOwotIAkJICBhZGRfdmFsdWVfdG9fc2xvdF8yMSAoKGdydWJfYWRkcl90KSB0YXJnZXQsCi1JbmRleDogZ3J1Yi0yLjAwL3V0aWwvZ3J1Yi1tb3VudC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvdXRpbC9ncnViLW1vdW50LmMKLSsrKyBncnViLTIuMDAvdXRpbC9ncnViLW1vdW50LmMKLUBAIC00ODcsNiArNDg3LDcgQEAgYXJncF9wYXJzZXIgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0Ci0gICAgICAgaWYgKGFyZ1swXSAhPSAnLScpCi0gCWJyZWFrOwotIAotKyAgICAvKiBGQUxMVEhST1VHSCAqLwotICAgICBkZWZhdWx0OgotICAgICAgIGlmICghYXJnKQotIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMy1BZGQtZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDMtQWRkLWdudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2ZiZjVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMy1BZGQtZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDAwN2YwYjQwN2Y3MjMxNGVjODMyZDc3ZTE1YjgzZWE0MGIxNjAwMzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWkgQm9yemVua292IDxhcnZpZGphYXJAZ21haWwuY29tPgotRGF0ZTogVHVlLCA0IEFwciAyMDE3IDE5OjM3OjQ3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBBZGQgZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYKLQotQXMgbG9uZyBhcyB0aGUgY29kZSBpcyBub3QgdXBzdHJlYW0sIGFkZCBpdCBhcyBleHBsaWNpdCBwYXRjaCBmb3IgdGhlCi1jYXNlIG9mIGdudWxpYiByZWZyZXNoLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ3J1Yi1jb3JlL2dudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmIHwgMTQgKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBncnViLWNvcmUvZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYKLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZiBiL2dydWItY29yZS9nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjk4MDJlMmQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dydWItY29yZS9nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZgotQEAgLTAsMCArMSwxNCBAQAotK2RpZmYgLS1naXQgZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMgZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMKLStpbmRleCBmNjMyY2Q0Li5hNzc3NmYwIDEwMDY0NAotKy0tLSBncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYwotKysrKyBncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYwotK0BAIC00MDk5LDYgKzQwOTksOSBAQCBjaGVja19ub2RlX2FjY2VwdCAoY29uc3QgcmVfbWF0Y2hfY29udGV4dF90ICptY3R4LCBjb25zdCByZV90b2tlbl90ICpub2RlLAotKyAgICAgY2FzZSBPUF9VVEY4X1BFUklPRDoKLSsgICAgICAgaWYgKGNoID49IEFTQ0lJX0NIQVJTKQotKyAgICAgICAgIHJldHVybiBmYWxzZTsKLSsrI2lmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPj0gNwotKysgICAgICBfX2F0dHJpYnV0ZV9fICgoZmFsbHRocm91Z2gpKTsKLSsrI2VuZGlmCi0rICAgICAgIC8qIEZBTExUSFJPVUdIICovCi0rICNlbmRpZgotKyAgICAgY2FzZSBPUF9QRVJJT0Q6Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwNC1GaXgtcmVtYWluaW5nLWNhc2VzLW9mLWdjYy03LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDQtRml4LXJlbWFpbmluZy1jYXNlcy1vZi1nY2MtNy1mYWxsdGhyb3VnaC13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGE3MGEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwNC1GaXgtcmVtYWluaW5nLWNhc2VzLW9mLWdjYy03LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotRnJvbSBkNDU0NTA5YmI4NjZkNGVhZWZiYjU1OGQ5NGRkMGVmMDIyODgzMGViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmxhZGltaXIgU2VyYmluZW5rbyA8cGhjb2RlckBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEyIEFwciAyMDE3IDAxOjQyOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBGaXggcmVtYWluaW5nIGNhc2VzIG9mIGdjYyA3IGZhbGx0aHJvdWdoIHdhcm5pbmcuCi0KLVRoZXkgYXJlIGFsbCBpbnRlbmRlZCwgc28ganVzdCBhZGQgdGhlIHJlbGV2YW50IGNvbW1lbnQuCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBncnViLWNvcmUva2Vybi9pYTY0L2RsLmMgICAgICAgICAgICAgICAgICAgICB8IDEgKwotIGdydWItY29yZS9rZXJuL21pcHMvZGwuYyAgICAgICAgICAgICAgICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL2tlcm4vc3BhcmM2NC9kbC5jICAgICAgICAgICAgICAgICAgfCAxICsKLSBncnViLWNvcmUvbG9hZGVyL2kzODYvY29yZWJvb3QvY2hhaW5sb2FkZXIuYyB8IDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2tlcm4vaWE2NC9kbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2tlcm4vaWE2NC9kbC5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9rZXJuL2lhNjQvZGwuYwotQEAgLTI1Nyw2ICsyNTcsNyBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90Ci0gCQkgIGNhc2UgUl9JQTY0X0xUT0ZGMjI6Ci0gCQkgICAgaWYgKEVMRl9TVF9UWVBFIChzeW0tPnN0X2luZm8pID09IFNUVF9GVU5DKQotIAkJICAgICAgdmFsdWUgPSAqKGdydWJfdWludDY0X3QgKikgc3ltLT5zdF92YWx1ZSArIHJlbC0+cl9hZGRlbmQ7Ci0rCQkgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAJCSAgY2FzZSBSX0lBNjRfTFRPRkZfRlBUUjIyOgotIAkJICAgICpncHB0ciA9IHZhbHVlOwotIAkJICAgIGFkZF92YWx1ZV90b19zbG90XzIxIChhZGRyLCAoZ3J1Yl9hZGRyX3QpIGdwcHRyIC0gKGdydWJfYWRkcl90KSBncCk7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9kaXNrL2Rpc2tmaWx0ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9kaXNrL2Rpc2tmaWx0ZXIuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvZGlzay9kaXNrZmlsdGVyLmMKLUBAIC03MSwxMCArNzEsMTIgQEAgaXNfbHZfcmVhZGFibGUgKHN0cnVjdCBncnViX2Rpc2tmaWx0ZXJfbAotIAljYXNlIEdSVUJfRElTS0ZJTFRFUl9SQUlENjoKLSAJICBpZiAoIWVhc2lseSkKLSAJICAgIG5lZWQtLTsKLSsJICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCWNhc2UgR1JVQl9ESVNLRklMVEVSX1JBSUQ0OgotIAljYXNlIEdSVUJfRElTS0ZJTFRFUl9SQUlENToKLSAJICBpZiAoIWVhc2lseSkKLSAJICAgIG5lZWQtLTsKLSsJICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCWNhc2UgR1JVQl9ESVNLRklMVEVSX1NUUklQRUQ6Ci0gCSAgYnJlYWs7Ci0gCi1AQCAtNTA3LDYgKzUwOSw3IEBAIHJlYWRfc2VnbWVudCAoc3RydWN0IGdydWJfZGlza2ZpbHRlcl9zZWcKLSAgICAgICBpZiAoc2VnLT5ub2RlX2NvdW50ID09IDEpCi0gCXJldHVybiBncnViX2Rpc2tmaWx0ZXJfcmVhZF9ub2RlICgmc2VnLT5ub2Rlc1swXSwKLSAJCQkJCSAgc2VjdG9yLCBzaXplLCBidWYpOwotKyAgICAvKiBGYWxsdGhyb3VnaC4gICovCi0gICAgIGNhc2UgR1JVQl9ESVNLRklMVEVSX01JUlJPUjoKLSAgICAgY2FzZSBHUlVCX0RJU0tGSUxURVJfUkFJRDEwOgotICAgICAgIHsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2ZvbnQvZm9udC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2ZvbnQvZm9udC5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9mb250L2ZvbnQuYwotQEAgLTEyOTcsNiArMTI5Nyw3IEBAIGJsaXRfY29tYiAoY29uc3Qgc3RydWN0IGdydWJfdW5pY29kZV9nbHkKLSAJICAgIC0gZ3J1Yl9mb250X2dldF94aGVpZ2h0IChjb21iaW5pbmdfZ2x5cGhzW2ldLT5mb250KSAtIDE7Ci0gCSAgaWYgKHNwYWNlIDw9IDApCi0gCSAgICBzcGFjZSA9IDEgKyAoZ3J1Yl9mb250X2dldF94aGVpZ2h0IChtYWluX2dseXBoLT5mb250KSkgLyA4OwotKyAgICAgICAgLyogRmFsbHRocm91Z2guICAqLwotIAotIAljYXNlIEdSVUJfVU5JQ09ERV9TVEFDS19BVFRBQ0hFRF9BQk9WRToKLSAJICBkb19ibGl0IChjb21iaW5pbmdfZ2x5cGhzW2ldLCB0YXJnZXR4LAotQEAgLTEzMzgsNiArMTMzOSw3IEBAIGJsaXRfY29tYiAoY29uc3Qgc3RydWN0IGdydWJfdW5pY29kZV9nbHkKLSAJCSAgICArIGNvbWJpbmluZ19nbHlwaHNbaV0tPmhlaWdodCk7Ci0gCSAgaWYgKHNwYWNlIDw9IDApCi0gCSAgICBzcGFjZSA9IDEgKyAoZ3J1Yl9mb250X2dldF94aGVpZ2h0IChtYWluX2dseXBoLT5mb250KSkgLyA4OwotKyAgICAgICAgLyogRmFsbHRocm91Z2guICAqLwotIAotIAljYXNlIEdSVUJfVU5JQ09ERV9TVEFDS19BVFRBQ0hFRF9CRUxPVzoKLSAJICBkb19ibGl0IChjb21iaW5pbmdfZ2x5cGhzW2ldLCB0YXJnZXR4LCAtKGJvdW5kcy55IC0gc3BhY2UpKTsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2ZzL3VkZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2ZzL3VkZi5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9mcy91ZGYuYwotQEAgLTk3MCw2ICs5NzAsNyBAQCBncnViX3VkZl9yZWFkX3N5bWxpbmsgKGdydWJfZnNoZWxwX25vZGVfCi0gCWNhc2UgMToKLSAJICBpZiAocHRyWzFdKQotIAkgICAgZ290byBmYWlsOwotKwkgIGJyZWFrOwotIAljYXNlIDI6Ci0gCSAgLyogaW4gNCBieXRlcy4gb3V0OiAxIGJ5dGUuICAqLwotIAkgIG9wdHIgPSBvdXQ7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9saWIvbGVnYWN5X3BhcnNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvbGliL2xlZ2FjeV9wYXJzZS5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9saWIvbGVnYWN5X3BhcnNlLmMKLUBAIC02MjYsNiArNjI2LDcgQEAgZ3J1Yl9sZWdhY3lfcGFyc2UgKGNvbnN0IGNoYXIgKmJ1ZiwgY2hhcgotIAkgIHsKLSAJICBjYXNlIFRZUEVfRklMRV9OT19DT05TVU1FOgotIAkgICAgaG9sZF9hcmcgPSAxOwotKwkgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAJICBjYXNlIFRZUEVfUEFSVElUSU9OOgotIAkgIGNhc2UgVFlQRV9GSUxFOgotIAkgICAgYXJnc1tpXSA9IGFkanVzdF9maWxlIChjdXJhcmcsIGN1cmFyZ2xlbik7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9saWIvbGliZ2NyeXB0LWdydWIvY2lwaGVyL3Jpam5kYWVsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci9yaWpuZGFlbC5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9saWIvbGliZ2NyeXB0LWdydWIvY2lwaGVyL3Jpam5kYWVsLmMKLUBAIC05Niw3ICs5Niw4IEBAIGRvX3NldGtleSAoUklKTkRBRUxfY29udGV4dCAqY3R4LCBjb25zdAotICAgc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqc2VsZnRlc3RfZmFpbGVkPTA7Ci0gICBpbnQgUk9VTkRTOwotLSAgaW50IGksaiwgciwgdCwgcmNvbnBvaW50ZXIgPSAwOwotKyAgdW5zaWduZWQgaW50IGksIHQsIHJjb25wb2ludGVyID0gMDsKLSsgIGludCBqLCByOwotICAgaW50IEtDOwotICAgdW5pb24KLSAgIHsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL21tYXAvZWZpL21tYXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9tbWFwL2VmaS9tbWFwLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL21tYXAvZWZpL21tYXAuYwotQEAgLTcyLDYgKzcyLDcgQEAgZ3J1Yl9lZmlfbW1hcF9pdGVyYXRlIChncnViX21lbW9yeV9ob29rXwotIAkJICAgIEdSVUJfTUVNT1JZX0FWQUlMQUJMRSk7Ci0gCSAgICAgIGJyZWFrOwotIAkgICAgfQotKwkgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAJY2FzZSBHUlVCX0VGSV9SVU5USU1FX1NFUlZJQ0VTX0NPREU6Ci0gCSAgaG9vayAoZGVzYy0+cGh5c2ljYWxfc3RhcnQsIGRlc2MtPm51bV9wYWdlcyAqIDQwOTYsCi0gCQlHUlVCX01FTU9SWV9DT0RFKTsKLUBAIC04Niw2ICs4Nyw3IEBAIGdydWJfZWZpX21tYXBfaXRlcmF0ZSAoZ3J1Yl9tZW1vcnlfaG9va18KLSAJICBncnViX3ByaW50ZiAoIlVua25vd24gbWVtb3J5IHR5cGUgJWQsIGNvbnNpZGVyaW5nIHJlc2VydmVkXG4iLAotIAkJICAgICAgIGRlc2MtPnR5cGUpOwotIAotKwkgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAJY2FzZSBHUlVCX0VGSV9CT09UX1NFUlZJQ0VTX0RBVEE6Ci0gCSAgaWYgKCFhdm9pZF9lZmlfYm9vdF9zZXJ2aWNlcykKLSAJICAgIHsKLUBAIC05Myw2ICs5NSw3IEBAIGdydWJfZWZpX21tYXBfaXRlcmF0ZSAoZ3J1Yl9tZW1vcnlfaG9va18KLSAJCSAgICBHUlVCX01FTU9SWV9BVkFJTEFCTEUpOwotIAkgICAgICBicmVhazsKLSAJICAgIH0KLSsJICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCWNhc2UgR1JVQl9FRklfUkVTRVJWRURfTUVNT1JZX1RZUEU6Ci0gCWNhc2UgR1JVQl9FRklfUlVOVElNRV9TRVJWSUNFU19EQVRBOgotIAljYXNlIEdSVUJfRUZJX01FTU9SWV9NQVBQRURfSU86Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9ub3JtYWwvY2hhcnNldC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL25vcm1hbC9jaGFyc2V0LmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL25vcm1hbC9jaGFyc2V0LmMKLUBAIC04NTgsNiArODU4LDcgQEAgZ3J1Yl9iaWRpX2xpbmVfbG9naWNhbF90b192aXN1YWwgKGNvbnN0Ci0gCSAgY2FzZSBHUlVCX0JJRElfVFlQRV9SOgotIAkgIGNhc2UgR1JVQl9CSURJX1RZUEVfQUw6Ci0gCSAgICBiaWRpX25lZWRlZCA9IDE7Ci0rCSAgLyogRmFsbHRocm91Z2guICAqLwotIAkgIGRlZmF1bHQ6Ci0gCSAgICB7Ci0gCSAgICAgIGlmIChqb2luX3N0YXRlID09IEpPSU5fRk9SQ0UpCi1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS92aWRlby9ib2Nocy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL3ZpZGVvL2JvY2hzLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL3ZpZGVvL2JvY2hzLmMKLUBAIC0zNTEsNiArMzUxLDcgQEAgZ3J1Yl92aWRlb19ib2Noc19zZXR1cCAodW5zaWduZWQgaW50IHdpZAotICAgICBjYXNlIDMyOgotICAgICAgIGZyYW1lYnVmZmVyLm1vZGVfaW5mby5yZXNlcnZlZF9tYXNrX3NpemUgPSA4OwotICAgICAgIGZyYW1lYnVmZmVyLm1vZGVfaW5mby5yZXNlcnZlZF9maWVsZF9wb3MgPSAyNDsKLSsgICAgICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCi0gICAgIGNhc2UgMjQ6Ci0gICAgICAgZnJhbWVidWZmZXIubW9kZV9pbmZvLnJlZF9tYXNrX3NpemUgPSA4OwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvdmlkZW8vY2lycnVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvdmlkZW8vY2lycnVzLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL3ZpZGVvL2NpcnJ1cy5jCi1AQCAtNDMxLDYgKzQzMSw3IEBAIGdydWJfdmlkZW9fY2lycnVzX3NldHVwICh1bnNpZ25lZCBpbnQgd2kKLSAgICAgY2FzZSAzMjoKLSAgICAgICBmcmFtZWJ1ZmZlci5tb2RlX2luZm8ucmVzZXJ2ZWRfbWFza19zaXplID0gODsKLSAgICAgICBmcmFtZWJ1ZmZlci5tb2RlX2luZm8ucmVzZXJ2ZWRfZmllbGRfcG9zID0gMjQ7Ci0rICAgICAgLyogRmFsbHRocm91Z2guICAqLwotIAotICAgICBjYXNlIDI0OgotICAgICAgIGZyYW1lYnVmZmVyLm1vZGVfaW5mby5yZWRfbWFza19zaXplID0gODsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi9hdXRvZ2VuLnNoLWV4Y2x1ZGUtcGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViL2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9hdXRvZ2VuLnNoLWV4Y2x1ZGUtcGMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvY2hlY2staWYtbGlibHptYS1pcy1kaXNhYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvY2hlY2staWYtbGlibHptYS1pcy1kaXNhYmxlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVlY2UwOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2NoZWNrLWlmLWxpYmx6bWEtaXMtZGlzYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1EaXNhYmxlIGxpYmx6bWEgaWYgLS1lbmFibGUtbGlibHptYT1ubwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDI5LDEwICsxMDI5LDIwIEBAIGZpCi0gCi0gQUNfU1VCU1QoW0xJQkdFT01dKQotIAotLUFDX0NIRUNLX0xJQihbbHptYV0sIFtsem1hX2NvZGVdLAotLSAgICAgICAgICAgICBbTElCTFpNQT0iLWxsem1hIgotLSAgICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX0xJQkxaTUFdLCBbMV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBMWk1BIGxpYnJhcnkuXSldLCkKLStBQ19BUkdfRU5BQkxFKFtsaWJsem1hXSwKLSsgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtbGlibHptYV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBsaWJsem1hIGludGVncmF0aW9uIChkZWZhdWx0PWd1ZXNzZWQpXSldKQotK2lmIHRlc3QgeCIkZW5hYmxlX2xpYmx6bWEiID0geG5vIDsgdGhlbgotKyAgbGlibHptYV9leGN1c2U9ImV4cGxpY2l0bHkgZGlzYWJsZWQiCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGxpYmx6bWFfZXhjdXNlIiA9IHggOyB0aGVuCi0rICBBQ19DSEVDS19MSUIoW2x6bWFdLCBbbHptYV9jb2RlXSwKLSsgICAgICAgICAgICAgICBbTElCTFpNQT0iLWxsem1hIgotKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfTElCTFpNQV0sIFsxXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgTFpNQSBsaWJyYXJ5Ll0pXSwpCi0rZmkKLSsKLSBBQ19TVUJTVChbTElCTFpNQV0pCi0gCi0gQUNfQVJHX0VOQUJMRShbbGliemZzXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LWVuZGlhbm5lc3MtcHJvYmxlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LWVuZGlhbm5lc3MtcHJvYmxlbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc5OTkyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC1lbmRpYW5uZXNzLXByb2JsZW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1ncnViLWNvcmUvbmV0L3RmdHAuYzogZml4IGVuZGlhbm5lc3MgcHJvYmxlbS4KLQotCSogZ3J1Yi1jb3JlL25ldC90ZnRwLmMgKGFjayk6IEZpeCBlbmRpYW5uZXNzIHByb2JsZW0uCi0JKHRmdHBfcmVjZWl2ZSk6IExpa2V3aXNlLgotCVJlcG9ydGVkIGJ5OiBNaWNoYWVsIERhdmlkc2F2ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggODFiZGFlOS4uYzJmNDJkNSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDEyLTA3LTAyICBWbGFkaW1pciBTZXJiaW5lbmtvICA8cGhjb2RlckBnbWFpbC5jb20+Ci0rCi0rCSogZ3J1Yi1jb3JlL25ldC90ZnRwLmMgKGFjayk6IEZpeCBlbmRpYW5uZXNzIHByb2JsZW0uCi0rCSh0ZnRwX3JlY2VpdmUpOiBMaWtld2lzZS4KLSsJUmVwb3J0ZWQgYnk6IE1pY2hhZWwgRGF2aWRzYXZlci4KLSsKLSAyMDEyLTA2LTI3ICBWbGFkaW1pciBTZXJiaW5lbmtvICA8cGhjb2RlckBnbWFpbC5jb20+Ci0gCi0gCSogY29uZmlndXJlLmFjOiBCdW1wIHZlcnNpb24gdG8gMi4wMC4KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbmV0L3RmdHAuYyBiL2dydWItY29yZS9uZXQvdGZ0cC5jCi1pbmRleCA5YzcwZWZiLi5kMGYzOWVhIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL25ldC90ZnRwLmMKLSsrKyBiL2dydWItY29yZS9uZXQvdGZ0cC5jCi1AQCAtMTQzLDcgKzE0Myw3IEBAIGFjayAodGZ0cF9kYXRhX3QgZGF0YSwgZ3J1Yl91aW50MTZfdCBibG9jaykKLSAKLSAgIHRmdHBoX2FjayA9IChzdHJ1Y3QgdGZ0cGhkciAqKSBuYl9hY2suZGF0YTsKLSAgIHRmdHBoX2Fjay0+b3Bjb2RlID0gZ3J1Yl9jcHVfdG9fYmUxNiAoVEZUUF9BQ0spOwotLSAgdGZ0cGhfYWNrLT51LmFjay5ibG9jayA9IGJsb2NrOwotKyAgdGZ0cGhfYWNrLT51LmFjay5ibG9jayA9IGdydWJfY3B1X3RvX2JlMTYgKGJsb2NrKTsKLSAKLSAgIGVyciA9IGdydWJfbmV0X3NlbmRfdWRwX3BhY2tldCAoZGF0YS0+c29jaywgJm5iX2Fjayk7Ci0gICBpZiAoZXJyKQotQEAgLTIyNSw3ICsyMjUsNyBAQCB0ZnRwX3JlY2VpdmUgKGdydWJfbmV0X3VkcF9zb2NrZXRfdCBzb2NrIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSAJICAgIGdydWJfcHJpb3JpdHlfcXVldWVfcG9wIChkYXRhLT5wcSk7Ci0gCi0gCSAgICBpZiAoZmlsZS0+ZGV2aWNlLT5uZXQtPnBhY2tzLmNvdW50IDwgNTApCi0tCSAgICAgIGVyciA9IGFjayAoZGF0YSwgdGZ0cGgtPnUuZGF0YS5ibG9jayk7Ci0rCSAgICAgIGVyciA9IGFjayAoZGF0YSwgZGF0YS0+YmxvY2sgKyAxKTsKLSAJICAgIGVsc2UKLSAJICAgICAgewotIAkJZmlsZS0+ZGV2aWNlLT5uZXQtPnN0YWxsID0gMTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LWlzc3VlLXdpdGgtZmxleC0yLjUuMzcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC1pc3N1ZS13aXRoLWZsZXgtMi41LjM3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWFlMmY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LWlzc3VlLXdpdGgtZmxleC0yLjUuMzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVRoaXMgZml4ZXMgY29tcGlsYXRpb24gaXNzdWVzIHdoZW4gdXNpbmcgZmxleC0yLjUuMzcuIEl0IHdhcyB0YWtlbiBmcm9tIHVwc3RyZWFtLgotCi1PcmlnaW5hbCBhdXRob3IgaXM6IFZsYWRpbWlyIFNlcmJpbmVua28gIDxwaGNvZGVyQGdtYWlsLmNvbT4KLQotU2lnbmVkLW9mZi1ieTogTGF1cmVudGl1IFBhbGN1IDxsYXVyZW50aXUucGFsY3VAaW50ZWwuY29tPgotCi1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9zY3JpcHQveXlsZXgubAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9zY3JpcHQveXlsZXgubAkyMDEyLTA2LTA4IDIzOjI0OjE1LjAwMDAwMDAwMCArMDMwMAotKysrIGdydWItMi4wMC9ncnViLWNvcmUvc2NyaXB0L3l5bGV4LmwJMjAxMy0wNy0zMSAxNDozNDo0MC43MDgxMDA5ODIgKzAzMDAKLUBAIC0yOSw2ICsyOSw4IEBACi0gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3NpbmctcHJvdG90eXBlcyIKLSAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1kZWNsYXJhdGlvbnMiCi0gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vuc2FmZS1sb29wLW9wdGltaXphdGlvbnMiCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2lnbi1jb21wYXJlIgotIAotICNkZWZpbmUgeXlmcmVlICAgIGdydWJfbGV4ZXJfeXlmcmVlCi0gI2RlZmluZSB5eWFsbG9jICAgZ3J1Yl9sZXhlcl95eWFsbG9jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC10ZXhpbmZvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtdGV4aW5mby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkxMWQ3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC10ZXhpbmZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotVGhlIHRhcmJhbGwgaGFzIGEgdGV4aSBmaWxlIHRoYXQgZG9lc24ndCBwYXJzZSB3aXRoIGN1cnJlbnQgdGV4aW5mbywgc28gaWYgaXQncwotYmVpbmcgcmUtZ2VuZXJhdGVkIHRoZSBidWlsZCB3aWxsIGZhaWwuICBUYWtlIGEgcGF0Y2ggZnJvbSB1cHN0cmVhbSB0byBmaXggdGhlCi10ZXhpLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGQ0YzRiOGUxYTA4NWY5MmFmY2VjMzZmNmU1OTBjNmRmYzUxZDBhMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCcnlhbiBIdW5kdmVuIDxicnlhbmh1bmR2ZW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAwOCBBcHIgMjAxMyAxMzoyMzowNyArMDAwMAotU3ViamVjdDogCSogZG9jcy9ncnViLWRldi50ZXhpOiBNb3ZlIEBpdGVtaXplIGFmdGVyIEBzdWJzZWN0aW9uIHRvIHNhdGlzZnkKLQotCXRleGluZm8tNS4xLgotLS0tCi0obGltaXRlZCB0byAnZG9jcy9ncnViLWRldi50ZXhpJykKLQotZGlmZiAtLWdpdCBhL2RvY3MvZ3J1Yi1kZXYudGV4aSBiL2RvY3MvZ3J1Yi1kZXYudGV4aQotaW5kZXggYTRhMzgyMC4uZjc0Yzk2NiAxMDA2NDQKLS0tLSBhL2RvY3MvZ3J1Yi1kZXYudGV4aQotKysrIGIvZG9jcy9ncnViLWRldi50ZXhpCi1AQCAtMTM5NCw4ICsxMzk0LDggQEAgZ3J1Yl92aWRlb19ibGl0X2dseXBoICgmZ2x5cGgsIGNvbG9yLCAwLCAwKTsKLSAKLSBAbm9kZSBCaXRtYXAgQVBJCi0gQHNlY3Rpb24gQml0bWFwIEFQSQotLUBpdGVtaXplCi0gQHN1YnNlY3Rpb24gZ3J1Yl92aWRlb19iaXRtYXBfY3JlYXRlCi0rQGl0ZW1pemUKLSBAaXRlbSBQcm90b3R5cGU6Ci0gQGV4YW1wbGUKLSBncnViX2Vycl90IGdydWJfdmlkZW9fYml0bWFwX2NyZWF0ZSAoc3RydWN0IGdydWJfdmlkZW9fYml0bWFwICoqYml0bWFwLCB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsIGVudW0gZ3J1Yl92aWRlb19ibGl0X2Zvcm1hdCBibGl0X2Zvcm1hdCkKLS0tCi1jZ2l0IHYwLjkuMC4yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC5idWlsZC53aXRoLmdjYy03LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXguYnVpbGQud2l0aC5nY2MtNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzVkZjk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXguYnVpbGQud2l0aC5nY2MtNy5wYXRjaApAQCAtMCwwICsxLDM5IEBACisqIGUuZy4gd2l0aCBnZW50b28gZ2NjLTcuMSB0aGV5IGRlZmluZSBfRk9SVElGWV9TT1VSQ0UgYnkgZGVmYXVsdCB3aXRoOgorICBodHRwczovL3NvdXJjZXMuZ2VudG9vLm9yZy9jZ2ktYmluL3ZpZXd2Yy5jZ2kvZ2VudG9vL3NyYy9wYXRjaHNldHMvZ2NjLzcuMS4wL2dlbnRvby8xMF9hbGxfZGVmYXVsdC1mb3J0aWZ5LXNvdXJjZS5wYXRjaD92aWV3PW1hcmt1cAorICB3aGljaCByZXN1bHRzIGluIGZvbGxvd2luZyBlcnJvciB3aGlsZSBidWlsZGluZyBncnViLWVmaS1uYXRpdmU6CisgIC4vY29uZmlnLXV0aWwuaDoxNTA0OjQ4OiBlcnJvcjogdGhpcyB1c2Ugb2YgImRlZmluZWQiIG1heSBub3QgYmUgcG9ydGFibGUgWy1XZXJyb3I9ZXhwYW5zaW9uLXRvLWRlZmluZWRdCisgICAgICAgICAgICAgICB8fCAoZGVmaW5lZCBfRk9SVElGWV9TT1VSQ0UgJiYgMCA8IF9GT1JUSUZZX1NPVVJDRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fgorICB0aGlzIHBhcnQgY29tZXMgZnJvbSBnbnVsaWIgYW5kIGl0J3MgdXNlZCBvbmx5IGZvciBBcHBsZSBhbmQgQlNELAorICBzbyB3ZSBjYW4gaWdub3JlIGl0LCBidXQgd2UgY2Fubm90IGFkZCAtV25vLWVycm9yPWV4cGFuc2lvbi10by1kZWZpbmVkCisgIGJlY2F1c2UgdGhpcyB3YXJuaW5nIHdhcyBpbnRyb2R1Y2VkIG9ubHkgaW4gZ2NjLTcgYW5kIG9sZGVyIGdjYworICB3aWxsIGZhaWwgd2l0aDoKKyAgY2MxOiBlcnJvcjogLVdlcnJvcj1leHBhbnNpb24tdG8tZGVmaW5lZDogbm8gb3B0aW9uIC1XZXhwYW5zaW9uLXRvLWRlZmluZWQKKyAgdXNlICNwcmFnbWEgdG8gd29yayBhcm91bmQgdGhpcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgKHNob3VsZCBiZSBmaXhlZCBpbiBnbnVsaWIgd2hpY2ggaXMgdGhlbiByYXJlbHkgdXBkYXRlZCBpbiBncnViKQorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKK2RpZmYgLXVOciBncnViLTIuMDIub2xkL200L2V4dGVybi1pbmxpbmUubTQgZ3J1Yi0yLjAyL200L2V4dGVybi1pbmxpbmUubTQKKy0tLSBncnViLTIuMDIub2xkL200L2V4dGVybi1pbmxpbmUubTQJMjAxNi0wMi0yOCAxNToyMjoyMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBncnViLTIuMDIvbTQvZXh0ZXJuLWlubGluZS5tNAkyMDE3LTA4LTIyIDE5OjI2OjQ1LjIxMzYzNzI3NiArMDIwMAorQEAgLTM5LDYgKzM5LDEwIEBACisgICAgT1MgWCAxMC45IGhhcyBhIG1hY3JvIF9faGVhZGVyX2lubGluZSBpbmRpY2F0aW5nIHRoZSBidWcgaXMgZml4ZWQgZm9yIEMgYW5kCisgICAgZm9yIGNsYW5nIGJ1dCByZW1haW5zIGZvciBnKys7IHNlZSA8aHR0cDovL3RyYWMubWFjcG9ydHMub3JnL3RpY2tldC80MTAzMz4uCisgICAgQXNzdW1lIERyYWdvbkZseSBhbmQgRnJlZUJTRCB3aWxsIGJlIHNpbWlsYXIuICAqLworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNpZiBfX0dOVUNfXyA+PSA3CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4cGFuc2lvbi10by1kZWZpbmVkIgorKyNlbmRpZgorICNpZiAoKChkZWZpbmVkIF9fQVBQTEVfXyAmJiBkZWZpbmVkIF9fTUFDSF9fKSBcCisgICAgICAgfHwgZGVmaW5lZCBfX0RyYWdvbkZseV9fIHx8IGRlZmluZWQgX19GcmVlQlNEX18pIFwKKyAgICAgICYmIChkZWZpbmVkIF9faGVhZGVyX2lubGluZSBcCitAQCAtNTAsNiArNTIsNyBAQAorICAgICAgICAgICAgICAgICAmJiBkZWZpbmVkIF9fR05VQ19fICYmICEgZGVmaW5lZCBfX2NwbHVzcGx1cykpKSkKKyAjIGRlZmluZSBfR0xfRVhURVJOX0lOTElORV9TVERIRUFERVJfQlVHCisgI2VuZGlmCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAjaWYgKChfX0dOVUNfXyBcCisgICAgICAgPyBkZWZpbmVkIF9fR05VQ19TVERDX0lOTElORV9fICYmIF9fR05VQ19TVERDX0lOTElORV9fIFwKKyAgICAgICA6ICgxOTk5MDFMIDw9IF9fU1REQ19WRVJTSU9OX18gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtYWRkLW9lLWtlcm5lbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWFkZC1vZS1rZXJuZWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViODkxNmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtYWRkLW9lLWtlcm5lbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gN2FiNTc2YTdjNjE0MDZiN2U2MzczOWQxYjExMDE3YWUzMzZiOTAwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAzIE1hciAyMDE0IDAzOjM0OjQ4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdydWIuZC8xMF9saW51eC5pbjogYWRkIG9lJ3Mga2VybmVsIG5hbWUKLQotT3VyIGtlcm5lbCdzIG5hbWUgaXMgYnpJbWFnZSwgd2UgbmVlZCBhZGQgaXQgdG8gZ3J1Yi5kLzEwX2xpbnV4LmluIHNvCi10aGF0IHRoZSBncnViLW1rY29uZmlnIGFuZCBncnViLWluc3RhbGwgY2FuIHdvcmsgY29ycmVjdGx5LgotCi1XZSBvbmx5IG5lZWQgYWRkIHRoZSBiekltYWdlIHRvIHV0aWwvZ3J1Yi5kLzEwX2xpbnV4LmluLCBidXQgYWxzbyBhZGQgaXQKLXRvIHV0aWwvZ3J1Yi5kLzIwX2xpbnV4X3hlbi5pbiB0byBrZWVwIGNvbXBhdGliaWxpdHkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdXRpbC9ncnViLmQvMTBfbGludXguaW4gICAgIHwgICAgNCArKy0tCi0gdXRpbC9ncnViLmQvMjBfbGludXhfeGVuLmluIHwgICAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdXRpbC9ncnViLmQvMTBfbGludXguaW4gYi91dGlsL2dydWIuZC8xMF9saW51eC5pbgotaW5kZXggMTQ0MDJlOC4uYzU4ZjQxNyAxMDA2NDQKLS0tLSBhL3V0aWwvZ3J1Yi5kLzEwX2xpbnV4LmluCi0rKysgYi91dGlsL2dydWIuZC8xMF9saW51eC5pbgotQEAgLTE1MywxMSArMTUzLDExIEBAIEVPRgotIG1hY2hpbmU9YHVuYW1lIC1tYAotIGNhc2UgIngkbWFjaGluZSIgaW4KLSAgICAgeGk/ODYgfCB4eDg2XzY0KQotLQlsaXN0PWBmb3IgaSBpbiAvYm9vdC92bWxpbnV6LSogL3ZtbGludXotKiAvYm9vdC9rZXJuZWwtKiA7IGRvCi0rCWxpc3Q9YGZvciBpIGluIC9ib290L2J6SW1hZ2UtKiAvYnpJbWFnZS0qIC9ib290L3ZtbGludXotKiAvdm1saW51ei0qIC9ib290L2tlcm5lbC0qIDsgZG8KLSAgICAgICAgICAgICAgICAgICBpZiBncnViX2ZpbGVfaXNfbm90X2dhcmJhZ2UgIiRpIiA7IHRoZW4gZWNobyAtbiAiJGkgIiA7IGZpCi0gICAgICAgICAgICAgICBkb25lYCA7OwotICAgICAqKSAKLS0JbGlzdD1gZm9yIGkgaW4gL2Jvb3Qvdm1saW51ei0qIC9ib290L3ZtbGludXgtKiAvdm1saW51ei0qIC92bWxpbnV4LSogL2Jvb3Qva2VybmVsLSogOyBkbwotKwlsaXN0PWBmb3IgaSBpbiAvYm9vdC9iekltYWdlLSogL2Jvb3Qvdm1saW51ei0qIC9ib290L3ZtbGludXgtKiAvYnpJbWFnZS0qIC92bWxpbnV6LSogL3ZtbGludXgtKiAvYm9vdC9rZXJuZWwtKiA7IGRvCi0gICAgICAgICAgICAgICAgICAgaWYgZ3J1Yl9maWxlX2lzX25vdF9nYXJiYWdlICIkaSIgOyB0aGVuIGVjaG8gLW4gIiRpICIgOyBmaQotIAkgICAgIGRvbmVgIDs7Ci0gZXNhYwotZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi5kLzIwX2xpbnV4X3hlbi5pbiBiL3V0aWwvZ3J1Yi5kLzIwX2xpbnV4X3hlbi5pbgotaW5kZXggMWQ5NDUwMi4uYjJkZWNmMyAxMDA2NDQKLS0tLSBhL3V0aWwvZ3J1Yi5kLzIwX2xpbnV4X3hlbi5pbgotKysrIGIvdXRpbC9ncnViLmQvMjBfbGludXhfeGVuLmluCi1AQCAtMTM4LDcgKzEzOCw3IEBAIEVPRgotIEVPRgotIH0KLSAKLS1saW51eF9saXN0PWBmb3IgaSBpbiAvYm9vdC92bWxpbnVbeHpdLSogL3ZtbGludVt4el0tKiAvYm9vdC9rZXJuZWwtKjsgZG8KLStsaW51eF9saXN0PWBmb3IgaSBpbiAvYm9vdC9iekltYWdlW3h6XS0qIC9iekltYWdlW3h6XS0qIC9ib290L3ZtbGludVt4el0tKiAvdm1saW51W3h6XS0qIC9ib290L2tlcm5lbC0qOyBkbwotICAgICBpZiBncnViX2ZpbGVfaXNfbm90X2dhcmJhZ2UgIiRpIjsgdGhlbgotICAgICAJYmFzZW5hbWU9JChiYXNlbmFtZSAkaSkKLSAJdmVyc2lvbj0kKGVjaG8gJGJhc2VuYW1lIHwgc2VkIC1lICJzLF5bXjAtOV0qLSwsZyIpCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWZpeC1lbmFibGVfZXhlY3V0ZV9zdGFjay1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWZpeC1lbmFibGVfZXhlY3V0ZV9zdGFjay1jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZmM2MxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1maXgtZW5hYmxlX2V4ZWN1dGVfc3RhY2stY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotCi1UaGlzIHBhdGNoIGF2b2lkcyB0aGlzIGNvbmZpZ3VyZSBmYWlsdXJlCi0KLWNvbmZpZ3VyZToyMDMwNjogY2hlY2tpbmcgd2hldGhlciBgY2NhY2hlIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgICAgLW1hcmNoPWNvcmUyIC1tc3NlMyAtbXR1bmU9Z2VuZXJpYyAtbWZwbWF0aD1zc2UgLS1zeXNyb290PS9idWlsZGRpc2svYnVpbGQvYnVpbGQwL3RtcC9zeXNyb290cy9lbWVubG93JyBnZW5lcmF0ZXMgY2FsbHMgdG8gYF9fZW5hYmxlX2V4ZWN1dGVfc3RhY2soKScKLWNvbmZpZ3VyZToyMDMyMDogY2NhY2hlIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgICAgLW1hcmNoPWNvcmUyIC1tc3NlMyAtbXR1bmU9Z2VuZXJpYyAtbWZwbWF0aD1zc2UgLS1zeXNyb290PS9idWlsZGRpc2svYnVpbGQvYnVpbGQwL3RtcC9zeXNyb290cy9lbWVubG93IC1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLVdhbGwgLVcgLVdzaGFkb3cgLVdwb2ludGVyLWFyaXRoIC1XbWlzc2luZy1wcm90b3R5cGVzIC1XdW5kZWYgLVdzdHJpY3QtcHJvdG90eXBlcyAtZyAtZmFsaWduLWp1bXBzPTEgLWZhbGlnbi1sb29wcz0xIC1mYWxpZ24tZnVuY3Rpb25zPTEgLW1uby1tbXggLW1uby1zc2UgLW1uby1zc2UyIC1tbm8tM2Rub3cgLW1mcG1hdGg9Mzg3IC1mbm8tZHdhcmYyLWNmaS1hc20gLW0zMiAtZm5vLXN0YWNrLXByb3RlY3RvciAtbW5vLXN0YWNrLWFyZy1wcm9iZSAtV2Vycm9yIC1Xbm8tdHJhbXBvbGluZXMgLWZhbGlnbi1sb29wcz0xIC1TIGNvbmZ0ZXN0LmMKLWNvbmZ0ZXN0LmM6MzA4OjY6IGVycm9yOiBubyBwcmV2aW91cyBwcm90b3R5cGUgZm9yICdnJyBbLVdlcnJvcj1taXNzaW5nLXByb3RvdHlwZXNdCi1jYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwotY29uZmlndXJlOjIwMzIzOiAkPyA9IDEKLWNvbmZpZ3VyZToyMDMyNzogZXJyb3I6IGNjYWNoZSBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyICAgIC1tYXJjaD1jb3JlMiAtbXNzZTMgLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9c3NlIC0tc3lzcm9vdD0vYnVpbGRkaXNrL2J1aWxkL2J1aWxkMC90bXAvc3lzcm9vdHMvZW1lbmxvdyBmYWlsZWQgdG8gcHJvZHVjZSBhc3NlbWJseSBjb2RlCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA0LzEzCi0KLUluZGV4OiBncnViLTIuMDAvYWNpbmNsdWRlLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvYWNpbmNsdWRlLm00Ci0rKysgZ3J1Yi0yLjAwL2FjaW5jbHVkZS5tNAotQEAgLTMxNyw2ICszMTcsNyBAQCBkbmwgQ2hlY2sgaWYgdGhlIEMgY29tcGlsZXIgZ2VuZXJhdGVzIGNhCi0gQUNfREVGVU4oW2dydWJfQ0hFQ0tfRU5BQkxFX0VYRUNVVEVfU1RBQ0tdLFsKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgYCRDQycgZ2VuZXJhdGVzIGNhbGxzIHRvIGBfX2VuYWJsZV9leGVjdXRlX3N0YWNrKCknXSkKLSBBQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1NPVVJDRShbWwotK3ZvaWQgZyAoaW50KTsKLSB2b2lkIGYgKGludCAoKnApICh2b2lkKSk7Ci0gdm9pZCBnIChpbnQgaSkKLSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1mcG1hdGgtc3NlLTM4Ny1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1mcG1hdGgtc3NlLTM4Ny1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMzBkOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZnBtYXRoLXNzZS0zODctZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCi0KLVRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBjb25maWd1cmUgaXNzdWUgZm9yIGdydWIgd2hlbiAtbWZwbWF0aD1zc2UgaXMgaW4gdGhlIGdjYyBwYXJhbWV0ZXJzLgotCi1jb25maWd1cmU6MjA1NzQ6IGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgICAgLW1hcmNoPWNvcmUyIC1tc3NlMyAtbXR1bmU9Z2VuZXJpYyAtbWZwbWF0aD1zc2UgLS1zeXNyb290PS91c3IvbG9jYWwvZGV2L3lvY3RvL2dydWJ0ZXN0Mi9idWlsZC90bXAvc3lzcm9vdHMvZW1lbmxvdyAtbyBjb25mdGVzdCAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1XYWxsIC1XIC1Xc2hhZG93IC1XcG9pbnRlci1hcml0aCAtV21pc3NpbmctcHJvdG90eXBlcyAtV3VuZGVmIC1Xc3RyaWN0LXByb3RvdHlwZXMgLWcgLWZhbGlnbi1qdW1wcz0xIC1mYWxpZ24tbG9vcHM9MSAtZmFsaWduLWZ1bmN0aW9ucz0xIC1tbm8tbW14IC1tbm8tc3NlIC1tbm8tc3NlMiAtbW5vLTNkbm93IC1mbm8tZHdhcmYyLWNmaS1hc20gLW0zMiAtZm5vLXN0YWNrLXByb3RlY3RvciAtbW5vLXN0YWNrLWFyZy1wcm9iZSAtV2Vycm9yIC1ub3N0ZGxpYiAtV2wsLS1kZWZzeW0sX19fbWFpbj0weDgxMDAgIC1XYWxsIC1XIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUgIC1ER1JVQl9NQUNISU5FX1BDQklPUz0xIC1ER1JVQl9NQUNISU5FPUkzODZfUEMgLVdsLC1PMSAtV2wsLS1oYXNoLXN0eWxlPWdudSAtV2wsLS1hcy1uZWVkZWQgY29uZnRlc3QuYyAgPiY1Ci1jb25mdGVzdC5jOjE6MDogZXJyb3I6IFNTRSBpbnN0cnVjdGlvbiBzZXQgZGlzYWJsZWQsIHVzaW5nIDM4NyBhcml0aG1ldGljcyBbLVdlcnJvcl0KLWNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA0LzEzCi0KLUluZGV4OiBncnViLTEuOTkvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0xLjk5Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ3J1Yi0xLjk5L2NvbmZpZ3VyZS5hYwotQEAgLTM3OCw3ICszNzgsNyBAQCBpZiB0ZXN0ICJ4JHRhcmdldF9jcHUiID0geGkzODY7IHRoZW4KLSAKLSAgICMgU29tZSB0b29sY2hhaW5zIGVuYWJsZSB0aGVzZSBmZWF0dXJlcyBieSBkZWZhdWx0LCBidXQgdGhleSBuZWVkCi0gICAjIHJlZ2lzdGVycyB0aGF0IGFyZW4ndCBzZXQgdXAgcHJvcGVybHkgaW4gR1JVQi4KLS0gIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1tbm8tbW14IC1tbm8tc3NlIC1tbm8tc3NlMiAtbW5vLTNkbm93IgotKyAgVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgLW1uby1tbXggLW1uby1zc2UgLW1uby1zc2UyIC1tbm8tM2Rub3cgLW1mcG1hdGg9Mzg3IgotIGZpCi0gCi0gIyBCeSBkZWZhdWx0LCBHQ0MgNC40IGdlbmVyYXRlcyAuZWhfZnJhbWUgc2VjdGlvbnMgY29udGFpbmluZyB1bndpbmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1lZmktYWxsb3ctYS1jb21waWxhdGlvbi13aXRob3V0LW1jbW9kZWwtbGFyZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItZWZpLWFsbG93LWEtY29tcGlsYXRpb24td2l0aG91dC1tY21vZGVsLWxhcmdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTg4ZmNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1lZmktYWxsb3ctYS1jb21waWxhdGlvbi13aXRob3V0LW1jbW9kZWwtbGFyZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotQWxsb3cgYSBjb21waWxhdGlvbiB3aXRob3V0IC1tY21vZGVsPWxhcmdlCi0KLUl0J3MgcHJvdmlkZWQgYnkgVmxhZGltaXIgU2VyYmluZW5rbywgYW5kIGhlIHdpbGwgY29tbWl0Ci1pdCB1cHN0cmVhbSBzbyBpdCBzaG91bGQgYmUgYmFja3BvcnQgcGF0Y2guCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDlmOGZiOGEuLjJjNWU2ZWQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTcyMyw5ICs3MjMsNyBAQCBpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSB4ODZfNjQ7IHRoZW4KLSAJCSAgICAgIFtncnViX2N2X2NjX21jbW9kZWw9eWVzXSwKLSAJCSAgICAgIFtncnViX2N2X2NjX21jbW9kZWw9bm9dKQotICAgXSkKLS0gIGlmIHRlc3QgIngkZ3J1Yl9jdl9jY19tY21vZGVsIiA9IHhubzsgdGhlbgotLSAgICBBQ19NU0dfRVJST1IoWy1tY21vZGVsPWxhcmdlIG5vdCBzdXBwb3J0ZWQuIFVwZ3JhZGUgeW91ciBnY2MuXSkKLS0gIGVsc2UKLSsgIGlmIHRlc3QgIngkZ3J1Yl9jdl9jY19tY21vZGVsIiA9IHh5ZXM7IHRoZW4KLSAgICAgVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgLW1jbW9kZWw9bGFyZ2UiCi0gICBmaQotIGZpCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMgYi9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotaW5kZXggMTQwOWI1ZC4uNmU5ZGFjZSAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi0rKysgYi9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotQEAgLTMyLDYgKzMyLDEyIEBACi0gI2RlZmluZSBCWVRFU19UT19QQUdFUyhieXRlcykJKCgoYnl0ZXMpICsgMHhmZmYpID4+IDEyKQotICNkZWZpbmUgUEFHRVNfVE9fQllURVMocGFnZXMpCSgocGFnZXMpIDw8IDEyKQotCi0rI2lmIGRlZmluZWQgKF9fY29kZV9tb2RlbF9sYXJnZV9fKSB8fCAhZGVmaW5lZCAoX194ODZfNjRfXykKLSsjZGVmaW5lIE1BWF9VU0FCTEVfQUREUkVTUyAweGZmZmZmZmZmCi0rI2Vsc2UKLSsjZGVmaW5lIE1BWF9VU0FCTEVfQUREUkVTUyAweDdmZmZmZmZmCi0rI2VuZGlmCi0rCi0gLyogVGhlIHNpemUgb2YgYSBtZW1vcnkgbWFwIG9idGFpbmVkIGZyb20gdGhlIGZpcm13YXJlLiBUaGlzIG11c3QgYmUKLSAgICBhIG11bHRpcGxpZXIgb2YgNEtCLiAgKi8KLSAjZGVmaW5lIE1FTU9SWV9NQVBfU0laRQkweDMwMDAKLUBAIC01OCw3ICs2NCw3IEBAIGdydWJfZWZpX2FsbG9jYXRlX3BhZ2VzIChncnViX2VmaV9waHlzaWNhbF9hZGRyZXNzX3QgYWRkcmVzcywKLQotICNpZiAxCi0gICAvKiBMaW1pdCB0aGUgbWVtb3J5IGFjY2VzcyB0byBsZXNzIHRoYW4gNEdCIGZvciAzMi1iaXQgcGxhdGZvcm1zLiAgKi8KLS0gIGlmIChhZGRyZXNzID4gMHhmZmZmZmZmZikKLSsgIGlmIChhZGRyZXNzID4gTUFYX1VTQUJMRV9BRERSRVNTKQotICAgICByZXR1cm4gMDsKLSAjZW5kaWYKLQotQEAgLTY2LDcgKzcyLDcgQEAgZ3J1Yl9lZmlfYWxsb2NhdGVfcGFnZXMgKGdydWJfZWZpX3BoeXNpY2FsX2FkZHJlc3NfdCBhZGRyZXNzLAotICAgaWYgKGFkZHJlc3MgPT0gMCkKLSAgICAgewotICAgICAgIHR5cGUgPSBHUlVCX0VGSV9BTExPQ0FURV9NQVhfQUREUkVTUzsKLS0gICAgICBhZGRyZXNzID0gMHhmZmZmZmZmZjsKLSsgICAgICBhZGRyZXNzID0gTUFYX1VTQUJMRV9BRERSRVNTOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHR5cGUgPSBHUlVCX0VGSV9BTExPQ0FURV9BRERSRVNTOwotQEAgLTg2LDcgKzkyLDcgQEAgZ3J1Yl9lZmlfYWxsb2NhdGVfcGFnZXMgKGdydWJfZWZpX3BoeXNpY2FsX2FkZHJlc3NfdCBhZGRyZXNzLAotICAgICB7Ci0gICAgICAgLyogVWdnaCwgdGhlIGFkZHJlc3MgMCB3YXMgYWxsb2NhdGVkLi4uIFRoaXMgaXMgdG9vIGFubm95aW5nLAotIAkgc28gcmVhbGxvY2F0ZSBhbm90aGVyIG9uZS4gICovCi0tICAgICAgYWRkcmVzcyA9IDB4ZmZmZmZmZmY7Ci0rICAgICAgYWRkcmVzcyA9IE1BWF9VU0FCTEVfQUREUkVTUzsKLSAgICAgICBzdGF0dXMgPSBlZmlfY2FsbF80IChiLT5hbGxvY2F0ZV9wYWdlcywgdHlwZSwgR1JVQl9FRklfTE9BREVSX0RBVEEsIHBhZ2VzLCAmYWRkcmVzcyk7Ci0gICAgICAgZ3J1Yl9lZmlfZnJlZV9wYWdlcyAoMCwgcGFnZXMpOwotICAgICAgIGlmIChzdGF0dXMgIT0gR1JVQl9FRklfU1VDQ0VTUykKLUBAIC0zMTksNyArMzI1LDcgQEAgZmlsdGVyX21lbW9yeV9tYXAgKGdydWJfZWZpX21lbW9yeV9kZXNjcmlwdG9yX3QgKm1lbW9yeV9tYXAsCi0gICAgIHsKLSAgICAgICBpZiAoZGVzYy0+dHlwZSA9PSBHUlVCX0VGSV9DT05WRU5USU9OQUxfTUVNT1JZCi0gI2lmIDEKLS0JICAmJiBkZXNjLT5waHlzaWNhbF9zdGFydCA8PSAweGZmZmZmZmZmCi0rCSAgJiYgZGVzYy0+cGh5c2ljYWxfc3RhcnQgPD0gTUFYX1VTQUJMRV9BRERSRVNTCi0gI2VuZGlmCi0gCSAgJiYgZGVzYy0+cGh5c2ljYWxfc3RhcnQgKyBQQUdFU19UT19CWVRFUyAoZGVzYy0+bnVtX3BhZ2VzKSA+IDB4MTAwMDAwCi0gCSAgJiYgZGVzYy0+bnVtX3BhZ2VzICE9IDApCi1AQCAtMzM3LDkgKzM0Myw5IEBAIGZpbHRlcl9tZW1vcnlfbWFwIChncnViX2VmaV9tZW1vcnlfZGVzY3JpcHRvcl90ICptZW1vcnlfbWFwLAotICNpZiAxCi0gCSAgaWYgKEJZVEVTX1RPX1BBR0VTIChmaWx0ZXJlZF9kZXNjLT5waHlzaWNhbF9zdGFydCkKLSAJICAgICAgKyBmaWx0ZXJlZF9kZXNjLT5udW1fcGFnZXMKLS0JICAgICAgPiBCWVRFU19UT19QQUdFUyAoMHgxMDAwMDAwMDBMTCkpCi0rCSAgICAgID4gQllURVNfVE9fUEFHRVMgKE1BWF9VU0FCTEVfQUREUkVTUysxTEwpKQotIAkgICAgZmlsdGVyZWRfZGVzYy0+bnVtX3BhZ2VzCi0tCSAgICAgID0gKEJZVEVTX1RPX1BBR0VTICgweDEwMDAwMDAwMExMKQotKwkgICAgICA9IChCWVRFU19UT19QQUdFUyAoTUFYX1VTQUJMRV9BRERSRVNTKzFMTCkKLSAJCSAtIEJZVEVTX1RPX1BBR0VTIChmaWx0ZXJlZF9kZXNjLT5waHlzaWNhbF9zdGFydCkpOwotICNlbmRpZgotCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMgYi9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYwotaW5kZXggNjVmMDllZi4uMTdjMTIxNSAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9rZXJuL3g4Nl82NC9kbC5jCi0rKysgYi9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYwotQEAgLTEwMCwxNCArMTAwLDMyIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyKQotIAkJICAgIGJyZWFrOwotCi0gCQkgIGNhc2UgUl9YODZfNjRfUEMzMjoKLS0JCSAgICAqYWRkcjMyICs9IHJlbC0+cl9hZGRlbmQgKyBzeW0tPnN0X3ZhbHVlIC0KLS0JCSAgICAgICAgICAgICAgKEVsZjY0X1h3b3JkKSBzZWctPmFkZHIgLSByZWwtPnJfb2Zmc2V0OwotKwkJICAgIHsKLSsJCSAgICAgIGdydWJfaW50NjRfdCB2YWx1ZTsKLSsJCSAgICAgIHZhbHVlID0gKChncnViX2ludDMyX3QpICphZGRyMzIpICsgcmVsLT5yX2FkZGVuZCArIHN5bS0+c3RfdmFsdWUgLQotKwkJCShFbGY2NF9Yd29yZCkgc2VnLT5hZGRyIC0gcmVsLT5yX29mZnNldDsKLSsJCSAgICAgIGlmICh2YWx1ZSAhPSAoZ3J1Yl9pbnQzMl90KSB2YWx1ZSkKLSsJCQlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwgInJlbG9jYXRpb24gb3V0IG9mIHJhbmdlIik7Ci0rCQkgICAgICAqYWRkcjMyID0gdmFsdWU7Ci0rCQkgICAgfQotIAkJICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgY2FzZSBSX1g4Nl82NF8zMjoKLSsJCSAgICB7Ci0rCQkgICAgICBncnViX3VpbnQ2NF90IHZhbHVlID0gKmFkZHIzMiArIHJlbC0+cl9hZGRlbmQgKyBzeW0tPnN0X3ZhbHVlOwotKwkJICAgICAgaWYgKHZhbHVlICE9IChncnViX3VpbnQzMl90KSB2YWx1ZSkKLSsJCQlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwgInJlbG9jYXRpb24gb3V0IG9mIHJhbmdlIik7Ci0rCQkgICAgICAqYWRkcjMyID0gdmFsdWU7Ci0rCQkgICAgfQotKwkJICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgIGNhc2UgUl9YODZfNjRfMzJTOgotLSAgICAgICAgICAgICAgICAgICAgKmFkZHIzMiArPSByZWwtPnJfYWRkZW5kICsgc3ltLT5zdF92YWx1ZTsKLS0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKwkJICAgIHsKLSsJCSAgICAgIGdydWJfaW50NjRfdCB2YWx1ZSA9ICgoZ3J1Yl9pbnQzMl90KSAqYWRkcjMyKSArIHJlbC0+cl9hZGRlbmQgKyBzeW0tPnN0X3ZhbHVlOwotKwkJICAgICAgaWYgKHZhbHVlICE9IChncnViX2ludDMyX3QpIHZhbHVlKQotKwkJCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLCAicmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UiKTsKLSsJCSAgICAgICphZGRyMzIgPSB2YWx1ZTsKLSsJCSAgICB9Ci0rCQkgICAgYnJlYWs7Ci0KLSAJCSAgZGVmYXVsdDoKLSAJCSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfTk9UX0lNUExFTUVOVEVEX1lFVCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1lZmktZml4LXdpdGgtZ2xpYmMtMi4yMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1lZmktZml4LXdpdGgtZ2xpYmMtMi4yMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYxMjYyOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItZWZpLWZpeC13aXRoLWdsaWJjLTIuMjAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGViNjM2OGU2NWY2OTg4ZWViYWQyNmNlYmRlYzA1N2Y3OTdiY2ViNDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgOSBTZXAgMjAxNCAwMDowMjozMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBnbGliYyAyLjIwCi0KLSogZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3Rmcy5jOiBzcXVhaGVzIGJlbG93IHdhcm5pbmcKLSAgd2FybmluZzogI3dhcm5pbmcgIl9CU0RfU09VUkNFIGFuZCBfU1ZJRF9TT1VSQ0UgYXJlIGRlcHJlY2F0ZWQsIHVzZSBfREVGQVVMVF9TT1VSQ0UiCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdydWItY29yZS9rZXJuL2VtdS9ob3N0ZnMuYyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZnMuYyBiL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZnMuYwotaW5kZXggM2NiMDg5Yy4uYTUxZWUzMiAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZnMuYwotKysrIGIvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3Rmcy5jCi1AQCAtMTYsNyArMTYsNyBAQAotICAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAqICBhbG9uZyB3aXRoIEdSVUIuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gICovCi0tI2RlZmluZSBfQlNEX1NPVVJDRQotKyNkZWZpbmUgX0RFRkFVTFRfU09VUkNFCi0gI2luY2x1ZGUgPGdydWIvZnMuaD4KLSAjaW5jbHVkZSA8Z3J1Yi9maWxlLmg+Ci0gI2luY2x1ZGUgPGdydWIvZGlzay5oPgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1pbnN0YWxsLmluLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWluc3RhbGwuaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNjk1MWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWluc3RhbGwuaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1PdXIgdXNlIG9mIGdydWItaW5zdGFsbCBkb2Vzbid0IHJlcXVpcmUgdGhlIC14IG9wdGlvbiwgc28gd2Ugc2hvdWxkIGJlCi1iZSBhYmxlIG1ha2UgdXNlIG9mIGdyZXAgdmVyc2lvbnMgdGhhdCBkb24ndCBzdXBwb3J0IGl0LgotCi1TaWduZWQtb2ZmLWJ5OiBUb20gWmFudXNzaSA8dG9tLnphbnVzc2lAaW50ZWwuY29tPgotCi1JbmRleDogZ3J1Yi0xLjk5L3V0aWwvZ3J1Yi1pbnN0YWxsLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0xLjk5Lm9yaWcvdXRpbC9ncnViLWluc3RhbGwuaW4JMjAxMS0wOS0wOSAyMjozNzoyMC4wOTM5MDY2NzkgLTA1MDAKLSsrKyBncnViLTEuOTkvdXRpbC9ncnViLWluc3RhbGwuaW4JMjAxMS0wOS0wOSAyMjozNzozMC44NTQ3Mzc4ODIgLTA1MDAKLUBAIC01MTAsNyArNTEwLDcgQEAKLSAKLSBpZiBbICJ4JHtkZXZhYnN0cmFjdGlvbl9tb2R1bGV9IiA9ICJ4IiBdIDsgdGhlbgotICAgICBpZiBbIHgiJHtpbnN0YWxsX2RldmljZX0iICE9IHggXTsgdGhlbgotLSAgICAgIGlmIGVjaG8gIiR7aW5zdGFsbF9kZXZpY2V9IiB8IGdyZXAgLXF4ICIoLiopIiA7IHRoZW4KLSsgICAgICBpZiBlY2hvICIke2luc3RhbGxfZGV2aWNlfSIgfCBncmVwIC1xICIoLiopIiA7IHRoZW4KLSAgICAgICAgIGluc3RhbGxfZHJpdmU9IiR7aW5zdGFsbF9kZXZpY2V9IgotICAgICAgIGVsc2UKLSAgICAgICAgIGluc3RhbGxfZHJpdmU9ImAiJGdydWJfcHJvYmUiIC0tZGV2aWNlLW1hcD0iJHtkZXZpY2VfbWFwfSIgLS10YXJnZXQ9ZHJpdmUgLS1kZXZpY2UgIiR7aW5zdGFsbF9kZXZpY2V9ImAiIHx8IGV4aXQgMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW5vLXVudXNlZC1yZXN1bHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItbm8tdW51c2VkLXJlc3VsdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNiZDA4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItbm8tdW51c2VkLXJlc3VsdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNpZ25lZC1vZmYtYnk6IFJhZHUgTW9pc2FuIDxyYWR1Lm1vaXNhbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSSBoYWQgYW4gZXJyb3IgYmVjYXVzZSBvZiBhbiB1bnVzZWQgcmV0dXJuIHZhbHVlIGZvciByZWFkKCkuCi1JIGFkZGVkIC1Xbm8tdW51c2VkLXJlc3VsdC4KLQotSW5kZXg6IGdydWItMi4wMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9jb25maWd1cmUuYWMJMjAxMi0wOC0xMyAxNjozMjozMy4wMDAwMDAwMDAgKzAzMDAKLSsrKyBncnViLTIuMDAvY29uZmlndXJlLmFjCTIwMTItMDgtMTMgMTY6Mzg6MjIuMDAwMDAwMDAwICswMzAwCi1AQCAtMzk0LDcgKzM5NCw3IEBACi0gTElCUz0iIgotIAotICMgZGVidWcgZmxhZ3MuCi0tV0FSTl9GTEFHUz0iLVdhbGwgLVcgLVdzaGFkb3cgLVdvbGQtc3R5bGUtZGVmaW5pdGlvbiAtV3BvaW50ZXItYXJpdGggLVd1bmRlZiAtV2V4dHJhIC1XYWRkcmVzcyAtV2F0dHJpYnV0ZXMgLVdjYXN0LWFsaWduIC1XY2hhci1zdWJzY3JpcHRzIC1XY29tbWVudCAtV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1XZGlzYWJsZWQtb3B0aW1pemF0aW9uIC1XZGl2LWJ5LXplcm8gLVdlbXB0eS1ib2R5IC1XZW5kaWYtbGFiZWxzIC1XZmxvYXQtZXF1YWwgLVdmb3JtYXQtZXh0cmEtYXJncyAtV2Zvcm1hdC1zZWN1cml0eSAtV2Zvcm1hdC15MmsgLVdpbXBsaWNpdCAtV2ltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1XaW1wbGljaXQtaW50IC1XaW5pdC1zZWxmIC1XaW50LXRvLXBvaW50ZXItY2FzdCAtV2ludmFsaWQtcGNoIC1XbWFpbiAtV21pc3NpbmctYnJhY2VzIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5vcmV0dXJuIC1XbXVsdGljaGFyIC1Xbm9ubnVsbCAtV292ZXJmbG93IC1XcGFyZW50aGVzZXMgLVdwb2ludGVyLWFyaXRoIC1XcG9pbnRlci10by1pbnQtY2FzdCAtV3JldHVybi10eXBlIC1Xc2VxdWVuY2UtcG9pbnQgLVdzaGFkb3cgLVdzaWduLWNvbXBhcmUgLVdzdHJpY3QtYWxpYXNpbmcgLVdzd2l0Y2ggLVd0cmlncmFwaHMgLVd1bmRlZiAtV3Vua25vd24tcHJhZ21hcyAtV3VudXNlZCAtV3VudXNlZC1mdW5jdGlvbiAtV3VudXNlZC1sYWJlbCAtV3VudXNlZC1wYXJhbWV0ZXIgLVd1bnVzZWQtdmFsdWUgIC1XdW51c2VkLXZhcmlhYmxlIC1XdmFyaWFkaWMtbWFjcm9zIC1Xdm9sYXRpbGUtcmVnaXN0ZXItdmFyIC1Xd3JpdGUtc3RyaW5ncyAtV25lc3RlZC1leHRlcm5zIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdwb2ludGVyLXNpZ24iCi0rV0FSTl9GTEFHUz0iLVdhbGwgLVcgLVdzaGFkb3cgLVdvbGQtc3R5bGUtZGVmaW5pdGlvbiAtV3BvaW50ZXItYXJpdGggLVd1bmRlZiAtV2V4dHJhIC1XYWRkcmVzcyAtV2F0dHJpYnV0ZXMgLVdjYXN0LWFsaWduIC1XY2hhci1zdWJzY3JpcHRzIC1XY29tbWVudCAtV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1XZGlzYWJsZWQtb3B0aW1pemF0aW9uIC1XZGl2LWJ5LXplcm8gLVdlbXB0eS1ib2R5IC1XZW5kaWYtbGFiZWxzIC1XZmxvYXQtZXF1YWwgLVdmb3JtYXQtZXh0cmEtYXJncyAtV2Zvcm1hdC1zZWN1cml0eSAtV2Zvcm1hdC15MmsgLVdpbXBsaWNpdCAtV2ltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1XaW1wbGljaXQtaW50IC1XaW5pdC1zZWxmIC1XaW50LXRvLXBvaW50ZXItY2FzdCAtV2ludmFsaWQtcGNoIC1XbWFpbiAtV21pc3NpbmctYnJhY2VzIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5vcmV0dXJuIC1XbXVsdGljaGFyIC1Xbm9ubnVsbCAtV292ZXJmbG93IC1XcGFyZW50aGVzZXMgLVdwb2ludGVyLWFyaXRoIC1XcG9pbnRlci10by1pbnQtY2FzdCAtV3JldHVybi10eXBlIC1Xc2VxdWVuY2UtcG9pbnQgLVdzaGFkb3cgLVdzaWduLWNvbXBhcmUgLVdzdHJpY3QtYWxpYXNpbmcgLVdzd2l0Y2ggLVd0cmlncmFwaHMgLVd1bmRlZiAtV3Vua25vd24tcHJhZ21hcyAtV3VudXNlZCAtV3VudXNlZC1mdW5jdGlvbiAtV3VudXNlZC1sYWJlbCAtV3VudXNlZC1wYXJhbWV0ZXIgLVd1bnVzZWQtdmFsdWUgIC1XdW51c2VkLXZhcmlhYmxlIC1Xbm8tdW51c2VkLXJlc3VsdCAtV3ZhcmlhZGljLW1hY3JvcyAtV3ZvbGF0aWxlLXJlZ2lzdGVyLXZhciAtV3dyaXRlLXN0cmluZ3MgLVduZXN0ZWQtZXh0ZXJucyAtV3N0cmljdC1wcm90b3R5cGVzIC1XcG9pbnRlci1zaWduIgotIEhPU1RfQ0ZMQUdTPSIkSE9TVF9DRkxBR1MgJFdBUk5fRkxBR1MiCi0gVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgJFdBUk5fRkxBR1MgLWcgLVdyZWR1bmRhbnQtZGVjbHMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyIKLSBUQVJHRVRfQ0NBU0ZMQUdTPSIkVEFSR0VUX0NDQVNGTEFHUyAtZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItZml4LWluaXRyZC1zaXplLWJ1Zy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItZml4LWluaXRyZC1zaXplLWJ1Zy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDExNGY0OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWIyLWZpeC1pbml0cmQtc2l6ZS1idWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDhmYmIxNTBhNTY5NjZlZGRlNGRjMDdiOGQwMWJlNWViMTQ5YjY1YWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDb2xpbiBXYXRzb24gPGNqd2F0c29uQHVidW50dS5jb20+Ci1EYXRlOiBTdW4sIDIwIEphbiAyMDEzIDIzOjAzOjM1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8xXSAqIGdydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jIChncnViX2NtZF9pbml0cmQpOiBEb24ndAotIGFkZCB0aGUgaW5pdHJkIHNpemUgdG8gYWRkcl9taW4sIHNpbmNlIHRoZSBpbml0cmQgd2lsbCBiZSBhbGxvY2F0ZWQgYWZ0ZXIKLSB0aGlzIGFkZHJlc3MuCi0KLWNvbW1pdCA2YTBkZWJiZDkxNjdlOGY3OWNkZWY1NDk3YTczZDIzZTU4MGMwY2Q0IHVwc3RyZWFtCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogU2hhbiBIYWkgPHNoYW4uaGFpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8IDYgKysrKysrCi0gZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMgfCAzICstLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCBjMmY0MmQ1Li40MGNiNTA4IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTMtMDEtMjAgIENvbGluIFdhdHNvbiAgPGNqd2F0c29uQHVidW50dS5jb20+Ci0rCi0rCSogZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMgKGdydWJfY21kX2luaXRyZCk6IERvbid0IGFkZCB0aGUKLSsJaW5pdHJkIHNpemUgdG8gYWRkcl9taW4sIHNpbmNlIHRoZSBpbml0cmQgd2lsbCBiZSBhbGxvY2F0ZWQgYWZ0ZXIKLSsJdGhpcyBhZGRyZXNzLgotKwotIDIwMTItMDctMDIgIFZsYWRpbWlyIFNlcmJpbmVua28gIDxwaGNvZGVyQGdtYWlsLmNvbT4KLSAKLSAJKiBncnViLWNvcmUvbmV0L3RmdHAuYyAoYWNrKTogRml4IGVuZGlhbm5lc3MgcHJvYmxlbS4KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYyBiL2dydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jCi1pbmRleCA2MjA4N2NmLi5lMjQyNWM4IDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMKLSsrKyBiL2dydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jCi1AQCAtMTA5OCw4ICsxMDk4LDcgQEAgZ3J1Yl9jbWRfaW5pdHJkIChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotICAgICAgd29yc2UgdGhhbiB0aGF0IG9mIExpbnV4IDIuMy54eCwgc28gYXZvaWQgdGhlIGxhc3QgNjRrYi4gICovCi0gICBhZGRyX21heCAtPSAweDEwMDAwOwotIAotLSAgYWRkcl9taW4gPSAoZ3J1Yl9hZGRyX3QpIHByb3RfbW9kZV90YXJnZXQgKyBwcm90X2luaXRfc3BhY2UKLS0gICAgICAgICAgICAgKyBwYWdlX2FsaWduIChzaXplKTsKLSsgIGFkZHJfbWluID0gKGdydWJfYWRkcl90KSBwcm90X21vZGVfdGFyZ2V0ICsgcHJvdF9pbml0X3NwYWNlOwotIAotICAgLyogUHV0IHRoZSBpbml0cmQgYXMgaGlnaCBhcyBwb3NzaWJsZSwgNEtpQiBhbGlnbmVkLiAgKi8KLSAgIGFkZHIgPSAoYWRkcl9tYXggLSBzaXplKSAmIH4weEZGRjsKLS0tIAotMS44LjUuMi4yMzMuZzkzMmY3ZTQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViMi1yZW1vdmUtc3BhcmM2NC1zZXR1cC1mcm9tLXg4Ni1idWlsZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWIyLXJlbW92ZS1zcGFyYzY0LXNldHVwLWZyb20teDg2LWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE2OGQzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWIyLXJlbW92ZS1zcGFyYzY0LXNldHVwLWZyb20teDg2LWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gZ3J1YjI6IHJlbW92ZSBncnViLXNwYXJjNjQtc2V0dXAgZnJvbSB4ODYgYnVpbGRzCi0KLSogcmVtb3ZlIHRoZSBncnViLXNwYXJjNjQtc2V0dXAgZmlsZXMgZnJvbSB0aGUgeDg2IGJ1aWxkcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZS51dGlsLmRlZiB8IDE4IC0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLnV0aWwuZGVmIGIvTWFrZWZpbGUudXRpbC5kZWYKLWluZGV4IGI4MDE4N2MuLmE2NzBjZjIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS51dGlsLmRlZgotKysrIGIvTWFrZWZpbGUudXRpbC5kZWYKLUBAIC0zMjEsMjQgKzMyMSw2IEBAIHByb2dyYW0gPSB7Ci0gfTsKLSAKLSBwcm9ncmFtID0gewotLSAgbmFtZSA9IGdydWItc3BhcmM2NC1zZXR1cDsKLS0gIGluc3RhbGxkaXIgPSBzYmluOwotLSAgbWFuc2VjdGlvbiA9IDg7Ci0tICBjb21tb24gPSB1dGlsL2dydWItc2V0dXAuYzsKLS0gIGNvbW1vbiA9IHV0aWwvbHZtLmM7Ci0tICBjb21tb24gPSBncnViLWNvcmUva2Vybi9lbXUvYXJncF9jb21tb24uYzsKLS0gIGNvbW1vbiA9IGdydWItY29yZS9saWIvcmVlZF9zb2xvbW9uLmM7Ci0tICBjb21tb24gPSB1dGlsL2llZWUxMjc1L29mcGF0aC5jOwotLQotLSAgbGRhZGQgPSBsaWJncnVibW9kcy5hOwotLSAgbGRhZGQgPSBsaWJncnVia2Vybi5hOwotLSAgbGRhZGQgPSBsaWJncnViZ2NyeS5hOwotLSAgbGRhZGQgPSBncnViLWNvcmUvZ251bGliL2xpYmdudS5hOwotLSAgbGRhZGQgPSAnJChMSUJJTlRMKSAkKExJQkRFVk1BUFBFUikgJChMSUJVVElMKSAkKExJQlpGUykgJChMSUJOVlBBSVIpICQoTElCR0VPTSknOwotLSAgY3BwZmxhZ3MgPSAnLURHUlVCX1NFVFVQX1NQQVJDNjQ9MSc7Ci0tfTsKLS0KLS1wcm9ncmFtID0gewotICAgbmFtZSA9IGdydWItb2ZwYXRobmFtZTsKLSAgIGluc3RhbGxkaXIgPSBzYmluOwotICAgbWFuc2VjdGlvbiA9IDg7Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvcmVtb3ZlLWdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL3JlbW92ZS1nZXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjNmNzg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvcmVtb3ZlLWdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1JU08gQzExIHJlbW92ZXMgdGhlIHNwZWNpZmljYXRpb24gb2YgZ2V0cygpIGZyb20gdGhlIEMgbGFuZ3VhZ2UsIGVnbGliYyAyLjE2KyByZW1vdmVkIGl0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdydWItMS45OS9ncnViLWNvcmUvZ251bGliL3N0ZGlvLmluLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTEuOTkub3JpZy9ncnViLWNvcmUvZ251bGliL3N0ZGlvLmluLmgJMjAxMC0xMi0wMSAwNjo0NTo0My4wMDAwMDAwMDAgLTA4MDAKLSsrKyBncnViLTEuOTkvZ3J1Yi1jb3JlL2dudWxpYi9zdGRpby5pbi5oCTIwMTItMDctMDQgMTI6MjU6MDIuMDU3MDk5MTA3IC0wNzAwCi1AQCAtMTQwLDggKzE0MCwxMCBAQAotIC8qIEl0IGlzIHZlcnkgcmFyZSB0aGF0IHRoZSBkZXZlbG9wZXIgZXZlciBoYXMgZnVsbCBjb250cm9sIG9mIHN0ZGluLAotICAgIHNvIGFueSB1c2Ugb2YgZ2V0cyB3YXJyYW50cyBhbiB1bmNvbmRpdGlvbmFsIHdhcm5pbmcuICBBc3N1bWUgaXQgaXMKLSAgICBhbHdheXMgZGVjbGFyZWQsIHNpbmNlIGl0IGlzIHJlcXVpcmVkIGJ5IEM4OS4gICovCi0rI2lmIGRlZmluZWQgZ2V0cwotICN1bmRlZiBnZXRzCi0gX0dMX1dBUk5fT05fVVNFIChnZXRzLCAiZ2V0cyBpcyBhIHNlY3VyaXR5IGhvbGUgLSB1c2UgZmdldHMgaW5zdGVhZCIpOwotKyNlbmRpZgotIAotICNpZiBAR05VTElCX0ZPUEVOQAotICMgaWYgQFJFUExBQ0VfRk9QRU5ACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMmYxZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotcmVxdWlyZSBncnViMi5pbmMKLQotREVQRU5EU19jbGFzcy10YXJnZXQgPSAiZ3J1Yi1lZmktbmF0aXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImRpZmZ1dGlscyBmcmVldHlwZSIKLVBSID0gInIzIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vY2ZnIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9ncnViLSR7UFZ9IgotCi0jIERldGVybWluZSB0aGUgdGFyZ2V0IGFyY2ggZm9yIHRoZSBncnViIG1vZHVsZXMKLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgaW1wb3J0IHJlCi0gICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKLSAgICBpZiB0YXJnZXQgPT0gIng4Nl82NCI6Ci0gICAgICAgIGdydWJ0YXJnZXQgPSAneDg2XzY0JwotICAgICAgICBncnViaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdHg2NC5lZmkiCi0gICAgZWxpZiByZS5tYXRjaCgnaS44NicsIHRhcmdldCk6Ci0gICAgICAgIGdydWJ0YXJnZXQgPSAnaTM4NicKLSAgICAgICAgZ3J1YmltYWdlID0gImdydWItZWZpLWJvb3RpYTMyLmVmaSIKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiZ3J1Yi1lZmkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGFyZ2V0ICVzIiAlIHRhcmdldCkKLSAgICBkLnNldFZhcigiR1JVQl9UQVJHRVQiLCBncnVidGFyZ2V0KQotICAgIGQuc2V0VmFyKCJHUlVCX0lNQUdFIiwgZ3J1YmltYWdlKQotfQotCi1pbmhlcml0IGRlcGxveQotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9IRUxQMk1BTj0iCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBsYXRmb3JtPWVmaSAtLWRpc2FibGUtZ3J1Yi1ta2ZvbnQgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVmaWVtdT1ubyAtLXByb2dyYW0tcHJlZml4PScnIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJsem1hPW5vIC0tZW5hYmxlLWRldmljZS1tYXBwZXI9bm8gLS1lbmFibGUtbGliemZzPW5vIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAotIgotCi0jIGxkbS5jOjExNDo3OiBlcnJvcjogdHJhbXBvbGluZSBnZW5lcmF0ZWQgZm9yIG5lc3RlZCBmdW5jdGlvbiAnaG9vaycgWy1XZXJyb3I9dHJhbXBvbGluZXNdCi0jIGFuZCBtYW55IG90aGVyIHBsYWNlcyBpbiB0aGUgZ3J1YiBjb2RlIHdoZW4gY29tcGlsZWQgd2l0aCBzb21lIG5hdGl2ZSBnY2MgY29tcGlsZXJzIChzcGVjaWZpY2FsbHksIGdlbnRvbykKLUNGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtV25vLWVycm9yPXRyYW1wb2xpbmVzIgotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDc1NSBncnViLW1raW1hZ2UgJHtEfSR7YmluZGlyfQotfQotCi1HUlVCX0JVSUxESU4gPz0gImJvb3QgbGludXggZXh0MiBmYXQgc2VyaWFsIHBhcnRfbXNkb3MgcGFydF9ncHQgbm9ybWFsIGVmaV9nb3AgaXNvOTY2MCBzZWFyY2giCi0KLWRvX2RlcGxveSgpIHsKLQkjIFNlYXJjaCBmb3IgdGhlIGdydWIuY2ZnIG9uIHRoZSBsb2NhbCBib290IG1lZGlhIGJ5IHVzaW5nIHRoZQotCSMgYnVpbHQgaW4gY2ZnIGZpbGUgcHJvdmlkZWQgdmlhIHRoaXMgcmVjaXBlCi0JZ3J1Yi1ta2ltYWdlIC1jIC4uL2NmZyAtcCAvRUZJL0JPT1QgLWQgLi9ncnViLWNvcmUvIFwKLQkgICAgICAgICAgICAgICAtTyAke0dSVUJfVEFSR0VUfS1lZmkgLW8gLi8ke0dSVUJfSU1BR0V9IFwKLQkgICAgICAgICAgICAgICAke0dSVUJfQlVJTERJTn0KLQlpbnN0YWxsIC1tIDY0NCAke0J9LyR7R1JVQl9JTUFHRX0gJHtERVBMT1lESVJ9Ci19Ci0KLWRvX2RlcGxveV9jbGFzcy1uYXRpdmUoKSB7Ci0JOgotfQotCi1hZGR0YXNrIGRlcGxveSBhZnRlciBkb19pbnN0YWxsIGJlZm9yZSBkb19idWlsZAotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dydWIvJHtHUlVCX1RBUkdFVH0tZWZpIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dydWIgXAotICAgICAgICAgICAgICAgICIKLQotIyA2NC1iaXQgYmluYXJpZXMgYXJlIGV4cGVjdGVkIGZvciB0aGUgYm9vdGxvYWRlciB3aXRoIGFuIHgzMiB1c2VybGFuZAotSU5TQU5FX1NLSVBfJHtQTn1fYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYXJjaCIKLUlOU0FORV9TS0lQXyR7UE59LWRiZ19hcHBlbmRfbGludXgtZ251eDMyID0gIiBhcmNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjhkYTE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiCkBAIC0wLDAgKzEsODIgQEAKK3JlcXVpcmUgZ3J1YjIuaW5jCisKK0dSVUJQTEFURk9STSA9ICJlZmkiCisKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ3J1Yi1lZmktbmF0aXZlIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImRpZmZ1dGlscyBmcmVldHlwZSIKKworU1JDX1VSSSArPSAiIFwKKyAgICAgICAgICAgZmlsZTovL2NmZyBcCisgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ3J1Yi0ke1BWfSIKKworIyBEZXRlcm1pbmUgdGhlIHRhcmdldCBhcmNoIGZvciB0aGUgZ3J1YiBtb2R1bGVzCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIGltcG9ydCByZQorICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCisgICAgaWYgdGFyZ2V0ID09ICJ4ODZfNjQiOgorICAgICAgICBncnVidGFyZ2V0ID0gJ3g4Nl82NCcKKyAgICAgICAgZ3J1YmltYWdlID0gImdydWItZWZpLWJvb3R4NjQuZWZpIgorICAgIGVsaWYgcmUubWF0Y2goJ2kuODYnLCB0YXJnZXQpOgorICAgICAgICBncnVidGFyZ2V0ID0gJ2kzODYnCisgICAgICAgIGdydWJpbWFnZSA9ICJncnViLWVmaS1ib290aWEzMi5lZmkiCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImdydWItZWZpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRhcmdldCAlcyIgJSB0YXJnZXQpCisgICAgZC5zZXRWYXIoIkdSVUJfVEFSR0VUIiwgZ3J1YnRhcmdldCkKKyAgICBkLnNldFZhcigiR1JVQl9JTUFHRSIsIGdydWJpbWFnZSkKK30KKworaW5oZXJpdCBkZXBsb3kKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfSEVMUDJNQU49IgorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1lZmllbXU9bm8iCisKKyMgbGRtLmM6MTE0Ojc6IGVycm9yOiB0cmFtcG9saW5lIGdlbmVyYXRlZCBmb3IgbmVzdGVkIGZ1bmN0aW9uICdob29rJyBbLVdlcnJvcj10cmFtcG9saW5lc10KKyMgYW5kIG1hbnkgb3RoZXIgcGxhY2VzIGluIHRoZSBncnViIGNvZGUgd2hlbiBjb21waWxlZCB3aXRoIHNvbWUgbmF0aXZlIGdjYyBjb21waWxlcnMgKHNwZWNpZmljYWxseSwgZ2VudG9vKQorQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1Xbm8tZXJyb3I9dHJhbXBvbGluZXMiCisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gNzU1IGdydWItbWtpbWFnZSAke0R9JHtiaW5kaXJ9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMuLi4KKyAgICBmaW5kICIke0R9IiAtbmFtZSBtb2RpbmZvLnNoIC10eXBlIGYgLWV4ZWMgXAorICAgICAgICBzZWQgLWkgXAorICAgICAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisgICAgICAgIHt9ICsKK30KKworR1JVQl9CVUlMRElOID89ICJib290IGxpbnV4IGV4dDIgZmF0IHNlcmlhbCBwYXJ0X21zZG9zIHBhcnRfZ3B0IG5vcm1hbCBcCisgICAgICAgICAgICAgICAgIGVmaV9nb3AgaXNvOTY2MCBzZWFyY2ggbG9hZGVudiB0ZXN0IgorCitkb19kZXBsb3koKSB7CisJIyBTZWFyY2ggZm9yIHRoZSBncnViLmNmZyBvbiB0aGUgbG9jYWwgYm9vdCBtZWRpYSBieSB1c2luZyB0aGUKKwkjIGJ1aWx0IGluIGNmZyBmaWxlIHByb3ZpZGVkIHZpYSB0aGlzIHJlY2lwZQorCWdydWItbWtpbWFnZSAtYyAuLi9jZmcgLXAgL0VGSS9CT09UIC1kIC4vZ3J1Yi1jb3JlLyBcCisJICAgICAgICAgICAgICAgLU8gJHtHUlVCX1RBUkdFVH0tZWZpIC1vIC4vJHtHUlVCX0lNQUdFfSBcCisJICAgICAgICAgICAgICAgJHtHUlVCX0JVSUxESU59CisJaW5zdGFsbCAtbSA2NDQgJHtCfS8ke0dSVUJfSU1BR0V9ICR7REVQTE9ZRElSfQorfQorCitkb19kZXBsb3lfY2xhc3MtbmF0aXZlKCkgeworCToKK30KKworYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9faW5zdGFsbCBiZWZvcmUgZG9fYnVpbGQKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ncnViLyR7R1JVQl9UQVJHRVR9LWVmaSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9ncnViIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgNjQtYml0IGJpbmFyaWVzIGFyZSBleHBlY3RlZCBmb3IgdGhlIGJvb3Rsb2FkZXIgd2l0aCBhbiB4MzIgdXNlcmxhbmQKK0lOU0FORV9TS0lQXyR7UE59X2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCitJTlNBTkVfU0tJUF8ke1BOfS1kYmdfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYXJjaCIKK0lOU0FORV9TS0lQXyR7UE59X2FwcGVuZF9saW51eC1tdXNseDMyID0gIiBhcmNoIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnX2FwcGVuZF9saW51eC1tdXNseDMyID0gIiBhcmNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKaW5kZXggYTkzYzk5ZS4uMjhmOTZiYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKQEAgLTExLDQ2ICsxMSw0MCBAQAogTElDRU5TRSA9ICJHUEx2MyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgogCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5nbnUub3JnL2dudS9ncnViL2dydWItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2dydWItbW9kdWxlLWV4cGxpY2l0bHkta2VlcHMtc3ltYm9sZS0ubW9kdWxlX2xpY2Vuc2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1Yi0yLjAwLWZwbWF0aC1zc2UtMzg3LWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jaGVjay1pZi1saWJsem1hLWlzLWRpc2FibGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1pc3N1ZS13aXRoLWZsZXgtMi41LjM3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWItMi4wMC1hZGQtb2Uta2VybmVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWItaW5zdGFsbC5pbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZW5kaWFubmVzcy1wcm9ibGVtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWIyLXJlbW92ZS1zcGFyYzY0LXNldHVwLWZyb20teDg2LWJ1aWxkcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViLTIuMDAtZml4LWVuYWJsZV9leGVjdXRlX3N0YWNrLWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWItbm8tdW51c2VkLXJlc3VsdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViLWVmaS1hbGxvdy1hLWNvbXBpbGF0aW9uLXdpdGhvdXQtbWNtb2RlbC1sYXJnZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViLWVmaS1maXgtd2l0aC1nbGliYy0yLjIwLnBhdGNoIFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvZ3J1Yi9ncnViLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtbWZwbWF0aC1zc2UtYXMtd2VsbC13aGVuLVNTRS1pcy1kaXNhYmxlZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFyc2VfZGhjcF92ZW5kb3ItQWRkLW1pc3NpbmctY29uc3QtcXVhbGlmaWVycy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViMi1maXgtaW5pdHJkLXNpemUtYnVnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LUNWRS0yMDE1LTgzNzAtR3J1YjItdXNlci1wYXNzLXZ1bG5lcmFiaWxpdHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtZGlyZWN0LV9sbHNlZWstY29kZS1hbmQtcmVxdWlyZS1sb25nLWZpbGVzeXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC10ZXhpbmZvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ3J1Yi1jb3JlLWdldHRleHQtZ2V0dGV4dC5jLW1haW5fY29udGV4dC1zZWNvbmRhcnlfYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2Utbm8tcGllLWlmLXRoZS1jb21waWxlci1zdXBwb3J0cy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdydWItY29yZS1rZXJuLWVmaS1tbS5jLWdydWJfZWZpX2ZpbmlzaF9ib290X3NlcnZpY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1ncnViLWNvcmUta2Vybi1lZmktbW0uYy1ncnViX2VmaV9nZXRfbWVtb3J5X21hcC1OZXZlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtVXNlLUFDX0hFQURFUl9NQUpPUi10by1maW5kLWRldmljZS1tYWNyb3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idHJmcy1hdm9pZC11c2VkLXVuaW5pdGlhbGl6ZWQtZXJyb3Itd2l0aC1HQ0M3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItaTM4Ni14ODZfNjQtcHBjLWZpeC1zd2l0Y2gtZmFsbHRocm91Z2gtY2FzZXMtd2l0aC1HQy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1yZW1haW5pbmctY2FzZXMtb2YtZ2NjLTctZmFsbHRocm91Z2gtd2FybmluZy5wYXRjaCBcCi0gICAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly9hdXRvZ2VuLnNoLWV4Y2x1ZGUtcGMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaCBcCisJICAgZmlsZTovL2ZpeC5idWlsZC53aXRoLmdjYy03LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMTE2ZDFmNjBjODQwZTZkYmQ2N2FiYmM5OWFjYjQ1ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjBlZTEzNmZiY2VlMDg4NTg1MTZlZDRkZTJhZDg3MDY4YmZlMWI2YjhiMzc4OTZjZTM1MjlmZjA1NGE3MjZkIgogCi1ERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBhdXRvZ2VuLW5hdGl2ZSIKK0RFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZTkyNzU0MGI2ZWRhOGIwMjRmYjAzOTFlZWFhNDA5MWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjViMzlhMDU1OGY4YzgwMjIwOWM1NzRmNGQwMmNhMjYzYTgwNGU4YTU2NGJjNmNhZjFjZDBmZDNiM2NjMTFlMyIKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKiktKGxpbnV4Lip8ZnJlZWJzZC4qKScKK0NPTVBBVElCTEVfSE9TVF9hcm12N2EgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9hcm12N3ZlID0gJ251bGwnCiAKLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qKS0obGludXh8ZnJlZWJzZC4qKScKKyMgY29uZmlndXJlLmFjIGhhcyBjb2RlIHRvIHNldCB0aGlzIGF1dG9tYWdpY2FsbHkgZnJvbSB0aGUgdGFyZ2V0IHR1cGxlCisjIGJ1dCB0aGUgT0UgZnJlZWZvcm0gb25lIChjb3JlMi1mb28tYmFyLWxpbnV4KSBkb24ndCB3b3JrIHdpdGggdGhhdC4KKworR1JVQlBMQVRGT1JNX2FybSA9ICJ1Ym9vdCIKK0dSVUJQTEFURk9STV9hYXJjaDY0ID0gImVmaSIKK0dSVUJQTEFURk9STSA/Pz0gInBjIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KIAorRVhUUkFfT0VDT05GID0gIi0td2l0aC1wbGF0Zm9ybT0ke0dSVUJQTEFURk9STX0gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncnViLW1rZm9udCBcCisgICAgICAgICAgICAgICAgLS1wcm9ncmFtLXByZWZpeD0iIiBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibHptYT1ubyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGliemZzPW5vIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAorIgorCiBQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1tncnViLW1vdW50XSA9ICItLWVuYWJsZS1ncnViLW1vdW50LC0tZGlzYWJsZS1ncnViLW1vdW50LGZ1c2UiCiBQQUNLQUdFQ09ORklHW2RldmljZS1tYXBwZXJdID0gIi0tZW5hYmxlLWRldmljZS1tYXBwZXIsLS1kaXNhYmxlLWRldmljZS1tYXBwZXIsbHZtMiIKQEAgLTc2LDMgKzcwLDkgQEAKICMgZ3J1YiBhbmQgZ3J1Yi1lZmkncyBzeXNyb290LyR7ZGF0YWRpcn0vZ3J1Yi9ncnViLW1rY29uZmlnX2xpYiBhcmUKICMgY29uZmxpY3RlZCwgcmVtb3ZlIGl0IHNpbmNlIG5vIG9uZSB1c2VzIGl0LgogU1lTUk9PVF9ESVJTX0JMQUNLTElTVCArPSAiJHtkYXRhZGlyfS9ncnViL2dydWItbWtjb25maWdfbGliIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZWRpdGVudiIKKworRklMRVNfJHtQTn0tZWRpdGVudiA9ICIke2JpbmRpcn0vZ3J1Yi1lZGl0ZW52IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWVkaXRlbnYiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM4MjkzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgZ3J1YjIuaW5jCi0KLVJERVBFTkRTXyR7UE59ID0gImRpZmZ1dGlscyBmcmVldHlwZSBncnViLWVkaXRlbnYiCi1QUiA9ICJyMSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1wbGF0Zm9ybT1wYyAtLWRpc2FibGUtZ3J1Yi1ta2ZvbnQgLS1wcm9ncmFtLXByZWZpeD0iIiBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibHptYT1ubyAtLWVuYWJsZS1kZXZpY2UtbWFwcGVyPW5vIC0tZW5hYmxlLWxpYnpmcz1ubyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKLSIKLQotUEFDS0FHRVMgPSsgImdydWItZWRpdGVudiIKLQotRklMRVNfZ3J1Yi1lZGl0ZW52ID0gIiR7YmluZGlyfS9ncnViLWVkaXRlbnYiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2dydWIuZAotfQotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImFyY2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNjFmNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMi5iYgpAQCAtMCwwICsxLDE3IEBACityZXF1aXJlIGdydWIyLmluYworCitSREVQRU5EU18ke1BOfSArPSAiZGlmZnV0aWxzIGZyZWV0eXBlIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9ncnViLmQKKyAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMuLi4KKyAgICBmaW5kICIke0R9IiAtbmFtZSBtb2RpbmZvLnNoIC10eXBlIGYgLWV4ZWMgXAorICAgICAgICBzZWQgLWkgXAorICAgICAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisgICAgICAgIHt9ICsKK30KKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKK0lOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhODFlNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLXJlcXVpcmUgZ3J1YjIuaW5jCi0KLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLURFRkFVTFRfUFJFRkVSRU5DRV9hcm0gPSAiMSIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ3J1Yi1naXQ6IgotCi1QViA9ICIyLjAwKyR7U1JDUFZ9IgotU1JDUkVWID0gImNlOTU1NDljYzU0YjVkNmY0OTQ2MDhhN2MzOTBkYmEzYWFiNGZiYTciCi1TUkNfVVJJID0gImdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dydWIuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1tZnBtYXRoLXNzZS1hcy13ZWxsLXdoZW4tU1NFLWlzLWRpc2FibGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0LiopLShsaW51eC4qfGZyZWVic2QuKiknCi1DT01QQVRJQkxFX0hPU1RfYXJtdjdhID0gJ251bGwnCi1DT01QQVRJQkxFX0hPU1RfYXJtdjd2ZSA9ICdudWxsJwotCi0jIGNvbmZpZ3VyZS5hYyBoYXMgY29kZSB0byBzZXQgdGhpcyBhdXRvbWFnaWNhbGx5IGZyb20gdGhlIHRhcmdldCB0dXBsZQotIyBidXQgdGhlIE9FIGZyZWVmb3JtIG9uZSAoY29yZTItZm9vLWJhci1saW51eCkgZG9uJ3Qgd29yayB3aXRoIHRoYXQuCi0KLUdSVUJQTEFURk9STV9hcm0gPSAidWJvb3QiCi1HUlVCUExBVEZPUk1fYWFyY2g2NCA9ICJlZmkiCi1HUlVCUExBVEZPUk0gPz89ICJwYyIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1wbGF0Zm9ybT0ke0dSVUJQTEFURk9STX0gLS1kaXNhYmxlLWdydWItbWtmb250IC0tcHJvZ3JhbS1wcmVmaXg9IiIgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYmx6bWE9bm8gLS1lbmFibGUtZGV2aWNlLW1hcHBlcj1ubyAtLWVuYWJsZS1saWJ6ZnM9bm8gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2dydWIuZAotICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKLX0KLQotIyBkZWJ1Z2VkaXQgY2hva2VzIG9uIGJhcmUgbWV0YWwgYmluYXJpZXMKLUlOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgotCi1SREVQRU5EU18ke1BOfSA9ICJkaWZmdXRpbHMgZnJlZXR5cGUiCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAiYXJjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMKaW5kZXggMTQwMzIxZC4uNmQ5OGUzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMKQEAgLTEsMTUgKzEsMTQgQEAKIFNVTU1BUlkgPSAiVXNlciBtb2RlIGhlbHBlcnMgZm9yIHRoZSBob3N0YXAgZHJpdmVyIgogREVTQ1JJUFRJT04gPSAiVGhlIGhvc3RhcCBkcml2ZXIgc3VwcG9ydHMgSG9zdCBBUCBtb2RlLCBpdCBhbGxvd3MgZm9yIElFRUUgODAyLjExIFwKIG1hbmFnZW1lbnQgZnVuY3Rpb25zIG9uIHRoZSBob3N0IGNvbXB1dGVyIGFuZCBhbGxvd3MgdGhlIHN5c3RlbSB0byBhY3QgYXMgYW4gYWNjZXNzIHBvaW50LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9ob3N0YXAuZXBpdGVzdC5maSIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2hvc3RhcC5lcGl0ZXN0LmZpL2J1Z3ovIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93MS5maSIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCiAJCQlmaWxlOi8vdXRpbC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9OTttZDU9ZDNiOTI4MDg1MTMwMmU1YmEzNGU1ZmI3MTc0ODliNmQiCiBTRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKIFBSID0gInI0IgogCi1TUkNfVVJJID0gImh0dHA6Ly9ob3N0YXAuZXBpdGVzdC5maS9yZWxlYXNlcy9ob3N0YXAtdXRpbHMtJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly93MS5maS9yZWxlYXNlcy9ob3N0YXAtdXRpbHMtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2hvc3RhcC1mdy1sb2FkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRGVmaW5lLV91MzItX19zMzItX191MTYtX19zMTYtX191OC1pbi10ZXJtcy1vZi1jOTktdC5wYXRjaCBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKaW5kZXggNjZjOWY5MS4uNTVlZGZlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaApAQCAtMSw0NiArMSwzNiBAQAorVGhpcyBwYXRjaDoKKyogZW5zdXJlcyB3ZSBsaW5rIGNvcnJlY3RseQorKiBhbGxvd3MgdXMgdG8gb3B0aW9uYWxseSBwYXNzIHRhcmdldCBpbmZvcm1hdGlvbiB0byBjb25maWd1cmUgcmF0aGVyIHRoYW4gdXNpbmcgdW5hbWUKKyogc2VsZWN0IGxpbnV4IGFzIHRoZSBwbGF0Zm9ybSBpbiBtb3N0IGNhc2VzIHdlIGNhcmUgYWJvdXQKKworVGhpcyBpcyBhIG1lcmdlIG9mIHZhcmlvdXMgdHdlYWtzIHRvIGFsbG93IHVzIHRvIGJ1aWxkIHBjaXV0aWxzIGluY2x1ZGluZyAKK3dvcmsgZnJvbToKKworNy8zMC8yMDEwIC0gUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+CisxLzIyLzIwMTIgLSBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KK0lvbnV0IFJhZHUgPGlvbnV0eC5yYWR1QGludGVsLmNvbT4KKzIwMTcvNi8xNSAtIFJQIC0gQ2xlYW51cHMgYW5kIG1lcmdpbmcgcGF0Y2hlcworCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCi0jCi0jIFBhdGNoIG1hbmFnZWQgYnkgaHR0cDovL3d3dy5tbi1sb2dpc3Rpay5kZS91bnN1cHBvcnRlZC9weGEyNTAvcGF0Y2hlcgotIwotLS0tCi0KLTcvMzAvMjAxMCAtIHJlYmFzZWQgdG8gMy4xLjUgYnkgUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+Ci0xLzIyLzIwMTIgLSByZWJhc2VkIHRvIDMuMS45IGJ5IFNoYW5lIFdhbmcgPHNoYW5lLndhbmdAaW50ZWwuY29tPgotCi1kaWZmIC1yIGFmMmIxMGNjM2MxNCBNYWtlZmlsZQotLS0tIGEvTWFrZWZpbGUJU3VuIEphbiAyMiAxODozNjozNCAyMDEyICswODAwCi0rKysgYi9NYWtlZmlsZQlTdW4gSmFuIDIyIDE4OjM4OjU0IDIwMTIgKzA4MDAKLUBAIC0zNyw3ICszNyw2IEBACi0gIyBDb21tYW5kcwotIElOU1RBTEw9aW5zdGFsbAotIERJUklOU1RBTEw9aW5zdGFsbCAtZAotLVNUUklQPS1zCi0gQ0M9JChDUk9TU19DT01QSUxFKWdjYwotIEFSPSQoQ1JPU1NfQ09NUElMRSlhcgotIFJBTkxJQj0kKENST1NTX0NPTVBJTEUpcmFubGliCi1AQCAtODYsNyArODUsNyBAQAorSW5kZXg6IHBjaXV0aWxzLTMuNS40L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGNpdXRpbHMtMy41LjQub3JpZy9NYWtlZmlsZQorKysrIHBjaXV0aWxzLTMuNS40L01ha2VmaWxlCitAQCAtOTYsNyArOTUsNyBAQCBleGFtcGxlOiBleGFtcGxlLm8gbGliLyQoUENJTElCKQogIGV4YW1wbGUubzogZXhhbXBsZS5jICQoUENJSU5DKQogIAogICU6ICUubwogLQkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTERMSUJTKSAtbyAkQAotKwkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTElCX0xETElCUykgLW8gJEAKKysJJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAkXiAkKExJQl9MRExJQlMpICQoTERMSUJTKSAtbyAkQAogIAogICUuOCAlLjc6ICUubWFuCiAgCU09YGVjaG8gJChEQVRFKSB8IHNlZCAncy8tMDEtLy1KYW51YXJ5LS87cy8tMDItLy1GZWJydWFyeS0vO3MvLTAzLS8tTWFyY2gtLztzLy0wNC0vLUFwcmlsLS87cy8tMDUtLy1NYXktLztzLy0wNi0vLUp1bmUtLztzLy0wNy0vLUp1bHktLztzLy0wOC0vLUF1Z3VzdC0vO3MvLTA5LS8tU2VwdGVtYmVyLS87cy8tMTAtLy1PY3RvYmVyLS87cy8tMTEtLy1Ob3ZlbWJlci0vO3MvLTEyLS8tRGVjZW1iZXItLztzL1woLipcKS1cKC4qXCktXCguKlwpL1wzIFwyIFwxLydgIDsgc2VkIDwkPCA+JEAgInMvQFRPREFZQC8kJE0vO3MvQFZFUlNJT05AL3BjaXV0aWxzLSQoVkVSU0lPTikvO3MjQElEU0RJUkAjJChJRFNESVIpIyIKLUBAIC0xMDEsNyArMTAwLDcgQEAKLSBpbnN0YWxsOiBhbGwKLSAjIC1jIGlzIGlnbm9yZWQgb24gTGludXgsIGJ1dCByZXF1aXJlZCBvbiBGcmVlQlNECi0gCSQoRElSSU5TVEFMTCkgLW0gNzU1ICQoREVTVERJUikkKFNCSU5ESVIpICQoREVTVERJUikkKElEU0RJUikgJChERVNURElSKSQoTUFORElSKS9tYW44ICQoREVTVERJUikkKE1BTkRJUikvbWFuNwotLQkkKElOU1RBTEwpIC1jIC1tIDc1NSAkKFNUUklQKSBsc3BjaSBzZXRwY2kgJChERVNURElSKSQoU0JJTkRJUikKLSsJJChJTlNUQUxMKSAtYyAtbSA3NTUgbHNwY2kgc2V0cGNpICQoREVTVERJUikkKFNCSU5ESVIpCi0gCSQoSU5TVEFMTCkgLWMgLW0gNzU1IHVwZGF0ZS1wY2lpZHMgJChERVNURElSKSQoU0JJTkRJUikKLSAJJChJTlNUQUxMKSAtYyAtbSA2NDQgJChQQ0lfSURTKSAkKERFU1RESVIpJChJRFNESVIpCi0gCSQoSU5TVEFMTCkgLWMgLW0gNjQ0IGxzcGNpLjggc2V0cGNpLjggdXBkYXRlLXBjaWlkcy44ICQoREVTVERJUikkKE1BTkRJUikvbWFuOAotZGlmZiAtciBhZjJiMTBjYzNjMTQgbGliL2NvbmZpZ3VyZQotLS0tIGEvbGliL2NvbmZpZ3VyZQlTdW4gSmFuIDIyIDE4OjM2OjM0IDIwMTIgKzA4MDAKLSsrKyBiL2xpYi9jb25maWd1cmUJU3VuIEphbiAyMiAxODozODo1NCAyMDEyICswODAwCi1AQCAtMTQsNiArMTQsMTAgQEAKK0luZGV4OiBwY2l1dGlscy0zLjUuNC9saWIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGNpdXRpbHMtMy41LjQub3JpZy9saWIvY29uZmlndXJlCisrKysgcGNpdXRpbHMtMy41LjQvbGliL2NvbmZpZ3VyZQorQEAgLTE0LDYgKzE0LDEwIEBAIGVjaG9fbigpIHsKICAJZmkKICB9CiAgCkBAIC01MSw3ICs0MSw3IEBACiAgaWYgWyAteiAiJFZFUlNJT04iIC1vIC16ICIkSURTRElSIiBdIDsgdGhlbgogIAllY2hvID4mMiAiUGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHNjcmlwdCBmcm9tIHRoZSB0b3AtbGV2ZWwgTWFrZWZpbGUiCiAgCWV4aXQgMQotQEAgLTIxLDggKzI1LDggQEAKK0BAIC0yMSw4ICsyNSw4IEBAIGZpCiAgCiAgZWNob19uICJDb25maWd1cmluZyBsaWJwY2kgZm9yIHlvdXIgc3lzdGVtLi4uIgogIGlmIFsgLXogIiRIT1NUIiBdIDsgdGhlbgpAQCAtNjIsNyArNTIsNyBAQAogIAlyZWFsc3lzPSIkc3lzIgogIAlpZiBbICIkc3lzIiA9ICJBSVgiIC1hIC14IC91c3IvYmluL29zbGV2ZWwgLWEgLXggL3Vzci9zYmluL2xzYXR0ciBdCiAgCXRoZW4KLUBAIC0zMCw3ICszNCw3IEBACitAQCAtMzAsNyArMzQsNyBAQCBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KICAJCXByb2M9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIC1GIG5hbWUgfCBoZWFkIC0xYAogIAkJY3B1PWAvdXNyL3NiaW4vbHNhdHRyIC1GIHZhbHVlIC1sICRwcm9jIC1hIHR5cGUgfCBzZWQgJ3MvXy4qLy8nYAogIAllbHNlCkBAIC03MSw3ICs2MSw3IEBACiAgCWZpCiAgCWlmIFsgIiRzeXMiID0gIkdOVS9rRnJlZUJTRCIgLW8gIiRzeXMiID0gIkRyYWdvbkZseSIgXQogIAl0aGVuCi1AQCAtNDAsNyArNDQsNyBAQAorQEAgLTQwLDcgKzQ0LDcgQEAgaWYgWyAteiAiJEhPU1QiIF0gOyB0aGVuCiAgCXRoZW4KICAJCXN5cz1jeWd3aW4KICAJZmkKQEAgLTgwLDI0ICs3MCwxMSBAQAogIGZpCiAgWyAtbiAiJFJFTEVBU0UiIF0gJiYgcmVsPSIke1JFTEVBU0V9IgogICMgQ0FWRUFUOiB0ciBvbiBTb2xhcmlzIGlzIGEgYml0IHdlaXJkIGFuZCB0aGUgZXh0cmEgW10gaXMgb3RoZXJ3aXNlIGhhcm1sZXNzLgotQEAgLTQ5LDYgKzUzLDIxIEBACitAQCAtNDksNiArNTMsOCBAQCBjcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteCiAgc3lzPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKICBlY2hvICIgJGhvc3QgJHJlbCAkY3B1ICRzeXMiCiAgCi0raWYgWyAiJGhvc3QiID0gImxpbnV4LS1nbnVlYWJpIiBdCi0rdGhlbgotKwlzeXM9bGludXgKLStmaQotKwotK2lmIFsgIiRob3N0IiA9ICJsaW51eC0tdWNsaWJjIiBdCi0rdGhlbgotKwlzeXM9bGludXgKLStmaQotKwotK2lmIFsgIiRob3N0IiA9ICJsaW51eC0tdWNsaWJjZWFiaSIgXQotK3RoZW4KLSsJc3lzPWxpbnV4Ci0rZmkKKyt7IGVjaG8gIiRob3N0IiB8IGdyZXAgbGludXg7IH0gJiYgc3lzPWxpbnV4CiArCiAgYz1jb25maWcuaAogIG09Y29uZmlnLm1rCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9ndWVzcy1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9ndWVzcy1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MGI0YTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvZ3Vlc3MtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotdGhlIG9yaWdpbmFsIGd1ZXNzIGFsZ29yaXRobSBpcyBicm9rZW4gZm9yIG1hbnkgYXJjaHMKLWZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHR3byB3b3VsZCBicmVhazoKLQlhcm0tbGludXgtZ251ZWFiaSAgLS0+IHN5cz1nbnVlYWJpCi0JeDg2XzY0LXVua25vd24tcGMtbGludXgtZ251ICAtLT4gc3lzID0gcGMtbGludXgtZ251Ci0KLXVzZSBhIHNpbXBsZXIgc2NoZW1lIGhlcmUgYW5kIGhvcGUgaXQgd29ya3MgZm9yIGFsbCB0aGUgY2FzZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLTcvMzAvMjAxMCAtIGNyZWF0ZWQgYnkgUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9saWIvY29uZmlndXJlIGIvbGliL2NvbmZpZ3VyZQotaW5kZXggNDMxOGIwNS4uODRmNmFjYiAxMDA3NTUKLS0tLSBhL2xpYi9jb25maWd1cmUKLSsrKyBiL2xpYi9jb25maWd1cmUKLUBAIC01MywyMCArNTMsNyBAQCBjcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotIHN5cz1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0gZWNobyAiICRob3N0ICRyZWwgJGNwdSAkc3lzIgotIAotLWlmIFsgIiRob3N0IiA9ICJsaW51eC0tZ251ZWFiaSIgXQotLXRoZW4KLS0Jc3lzPWxpbnV4Ci0tZmkKLS0KLS1pZiBbICIkaG9zdCIgPSAibGludXgtLXVjbGliYyIgXQotLXRoZW4KLS0Jc3lzPWxpbnV4Ci0tZmkKLS0KLS1pZiBbICIkaG9zdCIgPSAibGludXgtLXVjbGliY2VhYmkiIF0KLS10aGVuCi0tCXN5cz1saW51eAotLWZpCi0reyBlY2hvICIkaG9zdCIgfCBncmVwIGxpbnV4OyB9ICYmIHN5cz1saW51eAotIAotIGM9Y29uZmlnLmgKLSBtPWNvbmZpZy5tawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvbWFrZWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9tYWtlZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNmYmM2Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9tYWtlZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogSW9udXQgUmFkdSA8aW9udXR4LnJhZHVAaW50ZWwuY29tPgotCi1JbmRleDogcGNpdXRpbHMtMy4yLjAvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwY2l1dGlscy0zLjIuMC5vcmlnL01ha2VmaWxlCi0rKysgcGNpdXRpbHMtMy4yLjAvTWFrZWZpbGUKLUBAIC0zNSw3ICszNSw3IEBAIFNIQVJFRElSPSQoUFJFRklYKS9zaGFyZQotIElEU0RJUj0kKFNIQVJFRElSKQotIE1BTkRJUjo9JChzaGVsbCBpZiBbIC1kICQoUFJFRklYKS9zaGFyZS9tYW4gXSA7IHRoZW4gZWNobyAkKFBSRUZJWCkvc2hhcmUvbWFuIDsgZWxzZSBlY2hvICQoUFJFRklYKS9tYW4gOyBmaSkKLSBJTkNESVI9JChQUkVGSVgpL2luY2x1ZGUKLS1MSUJESVI9JChQUkVGSVgpL2xpYgotK0xJQkRJUj0kKGxpYmRpcikKLSBQS0dDRkRJUj0kKExJQkRJUikvcGtnY29uZmlnCi0gCi0gIyBDb21tYW5kcwotQEAgLTk0LDcgKzk0LDcgQEAgZXhhbXBsZTogZXhhbXBsZS5vIGxpYi8kKFBDSUxJQl9ERVYpCi0gZXhhbXBsZS5vOiBleGFtcGxlLmMgJChQQ0lJTkMpCi0gCi0gJTogJS5vCi0tCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJF4gJChMSUJfTERMSUJTKSAtbyAkQAotKwkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTElCX0xETElCUykgJChMRExJQlMpIC1vICRACi0gCi0gJS44ICUuNzogJS5tYW4KLSAJTT1gZWNobyAkKERBVEUpIHwgc2VkICdzLy0wMS0vLUphbnVhcnktLztzLy0wMi0vLUZlYnJ1YXJ5LS87cy8tMDMtLy1NYXJjaC0vO3MvLTA0LS8tQXByaWwtLztzLy0wNS0vLU1heS0vO3MvLTA2LS8tSnVuZS0vO3MvLTA3LS8tSnVseS0vO3MvLTA4LS8tQXVndXN0LS87cy8tMDktLy1TZXB0ZW1iZXItLztzLy0xMC0vLU9jdG9iZXItLztzLy0xMS0vLU5vdmVtYmVyLS87cy8tMTItLy1EZWNlbWJlci0vO3MvXCguKlwpLVwoLipcKS1cKC4qXCkvXDMgXDIgXDEvJ2AgOyBzZWQgPCQ8ID4kQCAicy9AVE9EQVlALyQkTS87cy9AVkVSU0lPTkAvcGNpdXRpbHMtJChWRVJTSU9OKS87cyNASURTRElSQCMkKElEU0RJUikjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3Mjk3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLVNVTU1BUlkgPSAiUENJIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gJ1RoZSBQQ0kgVXRpbGl0aWVzIHBhY2thZ2UgY29udGFpbnMgYSBsaWJyYXJ5IGZvciBwb3J0YWJsZSBhY2Nlc3MgXAotdG8gUENJIGJ1cyBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBzZXZlcmFsIHV0aWxpdGllcyBiYXNlZCBvbiB0aGlzIGxpYnJhcnkuJwotSE9NRVBBR0UgPSAiaHR0cDovL2F0cmV5Lmthcmxpbi5tZmYuY3VuaS5jei9+bWovcGNpdXRpbHMuc2h0bWwiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTID0gInpsaWIga21vZCIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3V0aWxzL3BjaXV0aWxzL3BjaXV0aWxzLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3Vlc3MtZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWJmNWIwNjhiZDlmNzUxMmU4YzY4YjA2MGIyNWExYjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2E5OTE0MWE5ZjQwNTI4ZDBhMDAzNTY2NWEwNmRjMzdkZGIxYWUzNDE2NThlNTFiNTBhNzZlY2Y4NjIzNWVmYyIKLQotaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdod2RiJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaHdkYl0gPSAiSFdEQj15ZXMsSFdEQj1ubyx1ZGV2IgotCi1QQ0lfQ09ORl9GTEFHID0gIlpMSUI9eWVzIEROUz15ZXMgU0hBUkVEPXllcyIKLQotIyBzZWUgY29uZmlndXJlLnBhdGNoCi1kb19jb25maWd1cmUgKCkgewotCSgKLQkgIGNkIGxpYiAmJiBcCi0JICAjIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MgZm9yIHRoaXMgcmVjaXBlIGNvdWxkIG9ubHkgcG9zc2libHkgY29udGFpbiAnSFdEQj15ZXMvbm8nLAotCSAgIyBzbyB3ZSBwdXQgaXQgYmVmb3JlIC4vY29uZmlndXJlCi0JICAke1BDSV9DT05GX0ZMQUd9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLi9jb25maWd1cmUgJHtQVn0gJHtkYXRhZGlyfSAke1RBUkdFVF9PU30gJHtUQVJHRVRfQVJDSH0KLQkpCi19Ci0KLWV4cG9ydCBQUkVGSVggPSAiJHtwcmVmaXh9IgotZXhwb3J0IFNCSU5ESVIgPSAiJHtzYmluZGlyfSIKLWV4cG9ydCBTSEFSRURJUiA9ICIke2RhdGFkaXJ9IgotZXhwb3J0IE1BTkRJUiA9ICIke21hbmRpcn0iCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9ICR7UENJX0NPTkZfRkxBR30iCi0KLSMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnJlYWtzIGlmIHRoZSBIT1NUIHZhcmlhYmxlIGlzIHNldAotSE9TVFt1bmV4cG9ydF0gPSAiMSIKLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCBpbnN0YWxsLWxpYgotCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JbG4gLXMgLi4vc2Jpbi9sc3BjaSAke0R9JHtiaW5kaXJ9L2xzcGNpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcGNpL2NvbmZpZy5oCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1pZHMgbGlicGNpIgotRklMRVNfJHtQTn0taWRzID0gIiR7ZGF0YWRpcn0vcGNpLmlkcyoiCi1GSUxFU19saWJwY2kgPSAiJHtsaWJkaXJ9L2xpYnBjaS5zby4qIgotU1VNTUFSWV8ke1BOfS1pZHMgPSAiUENJIHV0aWxpdGllcyAtIGRldmljZSBJRCBkYXRhYmFzZSIKLURFU0NSSVBUSU9OXyR7UE59LWlkcyA9ICJQYWNrYWdlIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSBJRCBkYXRhYmFzZSBmb3IgcGNpdXRpbHMuIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWlkcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA1MWZkOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS41LmJiCkBAIC0wLDAgKzEsNTggQEAKK1NVTU1BUlkgPSAiUENJIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gJ1RoZSBQQ0kgVXRpbGl0aWVzIHBhY2thZ2UgY29udGFpbnMgYSBsaWJyYXJ5IGZvciBwb3J0YWJsZSBhY2Nlc3MgXAordG8gUENJIGJ1cyBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBzZXZlcmFsIHV0aWxpdGllcyBiYXNlZCBvbiB0aGlzIGxpYnJhcnkuJworSE9NRVBBR0UgPSAiaHR0cDovL2F0cmV5Lmthcmxpbi5tZmYuY3VuaS5jei9+bWovcGNpdXRpbHMuc2h0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitERVBFTkRTID0gInpsaWIga21vZCIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3V0aWxzL3BjaXV0aWxzL3BjaXV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzhkOTk2OWNjMGRlOGI5MTA1ZDk3MjAwN2Q5ZDU0NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZDYyZjhmYTE5MmY5MGU2MWMzNWE2ZmMxNWZmM2NiOWE3YTc5MmY3ODI0MDdhY2M0MmVmNjc4MTdjNTkzOWY1IgorCitpbmhlcml0IG11bHRpbGliX2hlYWRlciBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdod2RiJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaHdkYl0gPSAiSFdEQj15ZXMsSFdEQj1ubyx1ZGV2IgorCitQQ0lfQ09ORl9GTEFHID0gIlpMSUI9eWVzIEROUz15ZXMgU0hBUkVEPXllcyBTVFJJUD0gTElCRElSPSR7bGliZGlyfSIKKworIyBzZWUgY29uZmlndXJlLnBhdGNoCitkb19jb25maWd1cmUgKCkgeworCSgKKwkgIGNkIGxpYiAmJiBcCisJICAjIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MgZm9yIHRoaXMgcmVjaXBlIGNvdWxkIG9ubHkgcG9zc2libHkgY29udGFpbiAnSFdEQj15ZXMvbm8nLAorCSAgIyBzbyB3ZSBwdXQgaXQgYmVmb3JlIC4vY29uZmlndXJlCisJICAke1BDSV9DT05GX0ZMQUd9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLi9jb25maWd1cmUgJHtQVn0gJHtkYXRhZGlyfSAke1RBUkdFVF9PU30gJHtUQVJHRVRfQVJDSH0KKwkpCit9CisKK2V4cG9ydCBQUkVGSVggPSAiJHtwcmVmaXh9IgorZXhwb3J0IFNCSU5ESVIgPSAiJHtzYmluZGlyfSIKK2V4cG9ydCBTSEFSRURJUiA9ICIke2RhdGFkaXJ9IgorZXhwb3J0IE1BTkRJUiA9ICIke21hbmRpcn0iCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9ICR7UENJX0NPTkZfRkxBR30iCisKKyMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnJlYWtzIGlmIHRoZSBIT1NUIHZhcmlhYmxlIGlzIHNldAorSE9TVFt1bmV4cG9ydF0gPSAiMSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCBpbnN0YWxsLWxpYgorCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJbG4gLXMgLi4vc2Jpbi9sc3BjaSAke0R9JHtiaW5kaXJ9L2xzcGNpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcGNpL2NvbmZpZy5oCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1pZHMgbGlicGNpIgorRklMRVNfJHtQTn0taWRzID0gIiR7ZGF0YWRpcn0vcGNpLmlkcyoiCitGSUxFU19saWJwY2kgPSAiJHtsaWJkaXJ9L2xpYnBjaS5zby4qIgorU1VNTUFSWV8ke1BOfS1pZHMgPSAiUENJIHV0aWxpdGllcyAtIGRldmljZSBJRCBkYXRhYmFzZSIKK0RFU0NSSVBUSU9OXyR7UE59LWlkcyA9ICJQYWNrYWdlIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSBJRCBkYXRhYmFzZSBmb3IgcGNpdXRpbHMuIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWlkcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3N5c3RlbWQtYm9vdC9maWxlcy8wMDAxLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3QvZmlsZXMvMDAwMS11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzkyZGI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3N5c3RlbWQtYm9vdC9maWxlcy8wMDAxLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGEzNDgyYzkxNjQyY2Y1NjhiM2FjMjdmYTZjMGNiM2M2YjMwNjY5YjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjMyOjE0IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTldIHVzZSBsbnIgd3JhcHBlciBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIC0tcmVsYXRpdmUKLSBvcHRpb24gZm9yIGxuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSAgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiAtLQotIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZS5hbQotKysrIGdpdC9NYWtlZmlsZS5hbQotQEAgLTMyMCw3ICszMjAsNyBAQCBkZWZpbmUgaW5zdGFsbC1yZWxhdGl2ZS1hbGlhc2VzCi0gCXdoaWxlIFsgLW4gIiQkMSIgXTsgZG8gXAotIAkJJChNS0RJUl9QKSBgZGlybmFtZSAkKERFU1RESVIpJCRkaXIvJCQyYCAmJiBcCi0gCQlybSAtZiAkKERFU1RESVIpJCRkaXIvJCQyICYmIFwKLS0JCSQoTE5fUykgLS1yZWxhdGl2ZSAkKERFU1RESVIpJCQxICQoREVTVERJUikkJGRpci8kJDIgJiYgXAotKwkJbG5yICQoREVTVERJUikkJDEgJChERVNURElSKSQkZGlyLyQkMiAmJiBcCi0gCQlzaGlmdCAyIHx8IGV4aXQgJCQ/OyBcCi0gCWRvbmUKLSBlbmRlZgotSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnaXQvY29uZmlndXJlLmFjCi1AQCAtMTEwLDggKzExMCw2IEBAIEFDX1BBVEhfUFJPRyhbU1VMT0dJTl0sIFtzdWxvZ2luXSwgWy91c3IKLSBBQ19QQVRIX1BST0coW01PVU5UX1BBVEhdLCBbbW91bnRdLCBbL3Vzci9iaW4vbW91bnRdLCBbJFBBVEg6L3Vzci9zYmluOi9zYmluXSkKLSBBQ19QQVRIX1BST0coW1VNT1VOVF9QQVRIXSwgW3Vtb3VudF0sIFsvdXNyL2Jpbi91bW91bnRdLCBbJFBBVEg6L3Vzci9zYmluOi9zYmluXSkKLSAKLS1BU19JRihbISBsbiAtLXJlbGF0aXZlIC0taGVscCA+IC9kZXYvbnVsbCAyPiYxXSwgW0FDX01TR19FUlJPUihbKioqIGxuIGRvZXNuJ3Qgc3VwcG9ydCAtLXJlbGF0aXZlICoqKl0pXSkKLS0KLSBNNF9ERUZJTkVTPQotIAotIEFDX0NIRUNLX1RPT0woT0JKQ09QWSwgb2JqY29weSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3N5c3RlbWQtYm9vdC9zeXN0ZW1kLWJvb3RfMjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avc3lzdGVtZC1ib290L3N5c3RlbWQtYm9vdF8yMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NzFjZTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avc3lzdGVtZC1ib290L3N5c3RlbWQtYm9vdF8yMzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCi0KLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotaW5oZXJpdCBkZXBsb3kKLQotIyBNYW4gcGFnZXMgYXJlIHBhY2thZ2VkIHRocm91Z2ggdGhlIG1haW4gc3lzdGVtZCByZWNpcGUKLUVYVFJBX09FQ09ORiA9ICIgLS1lbmFibGUtZ251ZWZpIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWVmaS1pbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWVmaS1sZHNkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1tYW5wYWdlcyBcCi0gICAgICAgICAgICAgICAiCi0KLSMgSW1wb3J0ZWQgZnJvbSB0aGUgb2xkIGd1bW1pYm9vdCByZWNpcGUKLVRVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWZwbWF0aD1zc2UiCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKiktbGludXgiCi0KLWRvX2NvbXBpbGUoKSB7Ci0JU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJpYTMyIgotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KLQkJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJ4NjQiCi0JZmkKLQotCW9lX3J1bm1ha2Ugc3lzdGVtZC1ib290JHtTWVNURU1EX0JPT1RfRUZJX0FSQ0h9LmVmaQotfQotCi1kb19pbnN0YWxsKCkgewotCSMgQnlwYXNzIHN5c3RlbWQgaW5zdGFsbGF0aW9uIHdpdGggYSBOT1AKLQk6Ci19Ci0KLWRvX2RlcGxveSAoKSB7Ci0JaW5zdGFsbCAke0J9L3N5c3RlbWQtYm9vdCouZWZpICR7REVQTE9ZRElSfQotfQotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8xMG01MC11cGRhdGUtZGV2aWNlLXRyZWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMTBtNTAtdXBkYXRlLWRldmljZS10cmVlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MTk1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMTBtNTAtdXBkYXRlLWRldmljZS10cmVlLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK05pb3MgSUkgZm9yIE1BWDEwIDEwbTUwIGJvYXJkIHJlcXVpcmVzIHVwZGF0ZSB0byAKK2l0cyBkZXZpY2UgdHJlZSB0byBlbmFibGUgQ1BVIGRyaXZlciBkdXJpbmcKK3UtYm9vdCBwcmUtcmVsb2NhdGlvbi4gVGhpcyBwYXRjaCB0YWcgdGhlIENQVSAKK3dpdGggZG0tcHJlLXJlbG9jIGZsYWcuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEdhbiwgWWF1IFdhaSA8eWF1LndhaS5nYW5AaW50ZWwuY29tPgorCistLS0KKyBhcmNoL25pb3MyL2R0cy8xMG01MF9kZXZib2FyZC5kdHMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cyBiL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cworaW5kZXggMDVlYWMzMC4uNDYxYWU2OCAxMDA2NDQKKy0tLSBhL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cworKysrIGIvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzCitAQCAtMTksNiArMTksNyBAQAorIAkJI3NpemUtY2VsbHMgPSA8MD47CisgCisgCQljcHU6IGNwdUAwIHsKKysJCQl1LWJvb3QsZG0tcHJlLXJlbG9jOworIAkJCWRldmljZV90eXBlID0gImNwdSI7CisgCQkJY29tcGF0aWJsZSA9ICJhbHRyLG5pb3MyLTEuMSI7CisgCQkJcmVnID0gPDB4MDAwMDAwMDA+OworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VhNTJiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaApAQCAtMCwwICsxLDE5IEBACitFbmFibGVkIGRoY3AgY2xpZW50IGZ1bmN0aW9uYWxpdHkgZm9yIFlvY3RvIHJlZmVyZW5jZQoraGFyZHdhcmUgTVBDODMxNUUtUkRCLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZyBiL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCitpbmRleCA0ZTJiNzA1Li5iMDJhYjFmIDEwMDY0NAorLS0tIGEvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKKysrKyBiL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCitAQCAtOSw2ICs5LDcgQEAgQ09ORklHX0hVU0hfUEFSU0VSPXkKKyBDT05GSUdfQ01EX0kyQz15CisgQ09ORklHX0NNRF9VU0I9eQorICMgQ09ORklHX0NNRF9TRVRFWFBSIGlzIG5vdCBzZXQKKytDT05GSUdfQ01EX0RIQ1A9eQorIENPTkZJR19DTURfTUlJPXkKKyBDT05GSUdfQ01EX1BJTkc9eQorIENPTkZJR19DTURfRVhUMj15CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvZGVmYXVsdC1nY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvZGVmYXVsdC1nY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MTg0ZGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL2RlZmF1bHQtZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotT0UgbmVlZHMgdG8gYmUgYWJsZSB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgY29tcGlsZXIuIElmIHdlIHBhc3MgaW4gSE9TVENDCi10aHJvdWdoIHRoZSBtYWtlIGNvbW1hbmQsIGl0IG92ZXJ3cml0ZXMgbm90IG9ubHkgdGhpcyBzZXR0aW5nIGJ1dCBhbHNvIHRoZSAKLXNldHRpbmcgaW4gdG9vbHMvTWFrZWZpbGUgd3JhcHBlZCBpbiBpZm5lcSAoJChDUk9TU19CVUlMRF9UT09MUyksKSB3aGljaCAKLWJyZWFrcyB0aGUgYnVpbGQuCi0KLVdlIHRoZXJlZm9yZSB1c2Ugb3ZlcnJpZGUgdG8gZW5zdXJlIHRoZSB2YWx1ZSBvZiBIT1NUQ0MgaXMgb3ZlcndyaXR0ZW4gd2hlbgotbmVlZGVkLgotCi1SUDogVXBkYXRlZCB0aGUgcGF0Y2ggdG8gdGhlIHZlcnNpb24gYmVpbmcgc3VibWl0dGVkIHRvIHVwc3RyZWFtIHUtYm9vdAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZW1haWxlZCB0byBNYXNhaGlybyBZYW1hZGEgZm9yIGRpc2N1c3Npb25dCi1SUCAyMDE3LzMvMTEKLQotSW5kZXg6IGdpdC90b29scy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rvb2xzL01ha2VmaWxlCi0rKysgZ2l0L3Rvb2xzL01ha2VmaWxlCi1AQCAtMjYyLDcgKzI2Miw3IEBAICQoTElDRU5TRV9IKTogJChvYmopL2JpbjJoZWFkZXIgJChzcmN0cmUKLSBzdWJkaXItICs9IGVudgotIAotIGlmbmVxICgkKENST1NTX0JVSUxEX1RPT0xTKSwpCi0tSE9TVENDID0gJChDQykKLStvdmVycmlkZSBIT1NUQ0MgPSAkKENDKQotIAotIHF1aWV0X2NtZF9jcm9zc3Rvb2xzX3N0cmlwID0gU1RSSVAgICAkXgotICAgICAgIGNtZF9jcm9zc3Rvb2xzX3N0cmlwID0gJChTVFJJUCkgJF47IHRvdWNoICRACi1JbmRleDogZ2l0L3Rvb2xzL2Vudi9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rvb2xzL2Vudi9NYWtlZmlsZQotKysrIGdpdC90b29scy9lbnYvTWFrZWZpbGUKLUBAIC04LDcgKzgsNyBAQAotICMgZndfcHJpbnRlbnYgaXMgc3VwcG9zZWQgdG8gcnVuIG9uIHRoZSB0YXJnZXQgc3lzdGVtLCB3aGljaCBtZWFucyBpdCBzaG91bGQgYmUKLSAjIGJ1aWx0IHdpdGggY3Jvc3MgdG9vbHMuIEFsdGhvdWdoIGl0IG1heSBsb29rIHdlaXJkLCB3ZSBvbmx5IHJlcGxhY2UgIkhPU1RDQyIKLSAjIHdpdGggIkNDIiBoZXJlIGZvciB0aGUgbWF4aW11bSBjb2RlIHJldXNlIG9mIHNjcmlwdHMvTWFrZWZpbGUuaG9zdC4KLS1IT1NUQ0MgPSAkKENDKQotK292ZXJyaWRlIEhPU1RDQyA9ICQoQ0MpCi0gCi0gIyBDb21waWxlIGZvciBhIGhvc3RlZCBlbnZpcm9ubWVudCBvbiB0aGUgdGFyZ2V0Ci0gSE9TVF9FWFRSQUNGTEFHUyAgPSAkKHBhdHN1YnN0IC1JJSwtaWRpcmFmdGVyJSwgJChmaWx0ZXIgLUklLCAkKFVCT09USU5DTFVERSkpKSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE3LjAxLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTcuMDEuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjI0Yzg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTcuMDEuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kZW54LmRlL3dpa2kvVS1Cb290L1dlYkhvbWUiCi1TRUNUSU9OID0gImJvb3Rsb2FkZXJzIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2VzL1JFQURNRTttZDU9YTJjNjc4Y2ZkNGE0ZDk3MTM1NTg1Y2FkOTA4NTQxYzYiCi1QRSA9ICIxIgotCi0jIFdlIHVzZSB0aGUgcmV2aXNpb24gaW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5nIHRvIGZldGNoIGl0IGZyb20gdGhlCi0jIHJlcG8gZHVyaW5nIHBhcnNlCi1TUkNSRVYgPSAiYTcwNWViYzgxYjdmOTFiYmQwZWY3YzYzNDI4NDIwODM0MjkwMTE0OSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZGVueC5kZS91LWJvb3QuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wOS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE3LjA5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmU1MTI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wOS5pbmMKQEAgLTAsMCArMSwxNyBAQAorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kZW54LmRlL3dpa2kvVS1Cb290L1dlYkhvbWUiCitTRUNUSU9OID0gImJvb3Rsb2FkZXJzIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2VzL1JFQURNRTttZDU9YTJjNjc4Y2ZkNGE0ZDk3MTM1NTg1Y2FkOTA4NTQxYzYiCitQRSA9ICIxIgorCisjIFdlIHVzZSB0aGUgcmV2aXNpb24gaW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5nIHRvIGZldGNoIGl0IGZyb20gdGhlCisjIHJlcG8gZHVyaW5nIHBhcnNlCitTUkNSRVYgPSAiYzk4YWMzNDg3ZTQxM2M3MWU1ZDM2MzIyZWYzMzI0YjIxYzZmNjBmOSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZGVueC5kZS91LWJvb3QuZ2l0IFwKKyAgICBmaWxlOi8vTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2ggXAorICAgIGZpbGU6Ly8xMG01MC11cGRhdGUtZGV2aWNlLXRyZWUucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE3LjAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE3LjAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjMxNDk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXJlcXVpcmUgdS1ib290LWNvbW1vbl8ke1BWfS5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2RlZmF1bHQtZ2NjLnBhdGNoIgotCi1TVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGZ3X3ByaW50ZW52L3NldGVudiB1dGlsaXRpZXMiCi1ERVBFTkRTID0gIm10ZC11dGlscyIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiYWxyZWFkeS1zdHJpcHBlZCIKLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0ke1RBUkdFVF9QUkVGSVh9IENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLWNyb3NzID0gJ0FSQ0g9JHtUQVJHRVRfQVJDSH0gQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBWPTEnCi0KLWluaGVyaXQgdWJvb3QtY29uZmlnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgJHtVQk9PVF9NQUNISU5FfQotCW9lX3J1bm1ha2UgZW52Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3ByaW50ZW52Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmFzZV9zYmluZGlyfS9md19zZXRlbnYKLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9lbnYvZndfZW52LmNvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9md19lbnYuY29uZmlnCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3NzfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfcHJpbnRlbnYKLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiaW5kaXJfY3Jvc3N9L2Z3X3NldGVudgotfQotCi1TWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLWNyb3NzID0gIiAke2JpbmRpcl9jcm9zc30iCi0KLVBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi1CQkNMQVNTRVhURU5EID0gImNyb3NzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE3LjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE3LjA5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyODg3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTcuMDkuYmIKQEAgLTAsMCArMSwzNCBAQAorcmVxdWlyZSB1LWJvb3QtY29tbW9uXyR7UFZ9LmluYworCitTVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGZ3X3ByaW50ZW52L3NldGVudiB1dGlsaXRpZXMiCitERVBFTkRTID0gIm10ZC11dGlscyIKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiYWxyZWFkeS1zdHJpcHBlZCIKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0ke1RBUkdFVF9QUkVGSVh9IENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLWNyb3NzID0gJ0hPU1RDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIFY9MScKKworaW5oZXJpdCB1Ym9vdC1jb25maWcKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSAke1VCT09UX01BQ0hJTkV9CisJb2VfcnVubWFrZSBlbnZ0b29scworfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmFzZV9zYmluZGlyfS9md19wcmludGVudgorCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfc2V0ZW52CisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vdG9vbHMvZW52L2Z3X2Vudi5jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZndfZW52LmNvbmZpZworfQorCitkb19pbnN0YWxsX2NsYXNzLWNyb3NzICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc30KKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiaW5kaXJfY3Jvc3N9L2Z3X3ByaW50ZW52CisJaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19zZXRlbnYKK30KKworU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy1jcm9zcyA9ICIgJHtiaW5kaXJfY3Jvc3N9IgorCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorQkJDTEFTU0VYVEVORCA9ICJjcm9zcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTcuMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOTk5ZTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTcuMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1yZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kZWZhdWx0LWdjYy5wYXRjaCIKLQotU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciBpbWFnZSBjcmVhdGlvbiB0b29sIgotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gJ0NDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gJ0NST1NTX0NPTVBJTEU9IiR7SE9TVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlIHNhbmRib3hfZGVmY29uZmlnCi0KLQkjIERpc2FibGUgQ09ORklHX0NNRF9MSUNFTlNFLCBsaWNlbnNlLmggaXMgbm90IHVzZWQgYnkgdG9vbHMgYW5kCi0JIyBnZW5lcmF0aW5nIGl0IHJlcXVpcmVzIGJpbjJoZWFkZXIgdG9vbCwgd2hpY2ggZm9yIHRhcmdldCBidWlsZAotCSMgaXMgYnVpbHQgd2l0aCB0YXJnZXQgdG9vbHMgYW5kIHRodXMgY2Fubm90IGJlIGV4ZWN1dGVkIG9uIGhvc3QuCi0Jc2VkIC1pICJzL0NPTkZJR19DTURfTElDRU5TRT0uKi8jIENPTkZJR19DTURfTElDRU5TRSBpcyBub3Qgc2V0LyIgLmNvbmZpZwotCi0Jb2VfcnVubWFrZSBjcm9zc190b29scyBOT19TREw9MQotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvbWtpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LW1raW1hZ2UKLQlsbiAtc2YgdWJvb3QtbWtpbWFnZSAke0R9JHtiaW5kaXJ9L21raW1hZ2UKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTcuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxNy4wOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWZjNTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTcuMDkuYmIKQEAgLTAsMCArMSwyNyBAQAorcmVxdWlyZSB1LWJvb3QtY29tbW9uXyR7UFZ9LmluYworCitTVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGltYWdlIGNyZWF0aW9uIHRvb2wiCitERVBFTkRTID0gIm9wZW5zc2wiCisKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAnQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAnQ1JPU1NfQ09NUElMRT0iJHtIT1NUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2Ugc2FuZGJveF9kZWZjb25maWcKKworCSMgRGlzYWJsZSBDT05GSUdfQ01EX0xJQ0VOU0UsIGxpY2Vuc2UuaCBpcyBub3QgdXNlZCBieSB0b29scyBhbmQKKwkjIGdlbmVyYXRpbmcgaXQgcmVxdWlyZXMgYmluMmhlYWRlciB0b29sLCB3aGljaCBmb3IgdGFyZ2V0IGJ1aWxkCisJIyBpcyBidWlsdCB3aXRoIHRhcmdldCB0b29scyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gaG9zdC4KKwlzZWQgLWkgInMvQ09ORklHX0NNRF9MSUNFTlNFPS4qLyMgQ09ORklHX0NNRF9MSUNFTlNFIGlzIG5vdCBzZXQvIiAuY29uZmlnCisKKwlvZV9ydW5tYWtlIGNyb3NzX3Rvb2xzIE5PX1NETD0xCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQorCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCmluZGV4IGFhMjFjMGUuLmMyYmNmOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCkBAIC0zMDQsNCArMzA0LDQgQEAKICAgICBmaQogfQogCi1hZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9faW5zdGFsbAorYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxNy4wMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxNy4wOS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE3LjAxLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTcuMDkuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYwppbmRleCBmYWE4NzQxLi43ODE0NDY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCkBAIC02MywxMCArNjMsNiBAQAogRVhUUkFfT0VDT05GX1NZU1ZJTklUID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJy0td2l0aC1kaXN0cm89ZGViaWFuJywnLS13aXRoLWRpc3Rybz1ub25lJyxkKX0iCiBFWFRSQV9PRUNPTkZfU1lTVEVNRCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJy0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLycsJy0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcicsZCl9IgogCi0KLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbGludGwiCi1MREZMQUdTX2FwcGVuZF91Y2xpbnV4LXVjbGliYyA9ICIgLWxpbnRsIgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICBzZWQgJ3M6QU1fQ0hFQ0tfUFlNT0Q6ZWNobyAibm8gcHltb2QiICNBTV9DSEVDS19QWU1PRDpnJyAtaSAke1N9L2NvbmZpZ3VyZS5hYwogCkBAIC0xMTEsNyArMTA3LDYgQEAKIAogUkRFUEVORFNfJHtQTn0tZGV2ID0gImF2YWhpLWRhZW1vbiAoPSAke0VYVEVORFBLR1Z9KSBsaWJhdmFoaS1jb3JlICg9ICR7RVhURU5EUEtHVn0pIGxpYmF2YWhpLWNsaWVudCAoPSAke0VYVEVORFBLR1Z9KSIKIAotIyB1Y2xpYmMgaGFzIG5vIG5zcwogUlJFQ09NTUVORFNfYXZhaGktZGFlbW9uX2FwcGVuZF9saWJjLWdsaWJjID0gIiBsaWJuc3MtbWRucyIKIFJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsaWJuc3MtbWRucyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoCmluZGV4IDhjY2VmMDguLjk0MjYwN2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2gKQEAgLTEsMTcgKzEsMTggQEAKLUZyb20gYTU5ZjEzZmFiMzFhNmUyNWJiMDNiMmMyYmMzYWVhNTc2Zjg1N2I2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNmZmMjU1ZWZmNGZlYTYzNTBiNWUwNDYyZmVlMTc2ZmFkYzI2ZmMxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBTdW4sIDEyIEp1biAyMDE2IDE4OjMyOjQ5ICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogaW5zdGFsbCBHdGtCdWlsZGVyIGludGVyZmFjZSBmaWxlcyBmb3IgR1RLKzMKICB0b28KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xhdGhpYXQvYXZhaGkvcHVsbC8xMzBdCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYWViYjcxNi4uNDhiZGY2MyAxMDA2NDQKK2luZGV4IDg3YTlhMTcuLjk4NjBkY2MgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTk2NSw3ICs5NjUsNyBAQCBBQ19TVUJTVChhdmFoaV9zb2NrZXQpCkBAIC0yNCw1ICsyNSw1IEBACiAgCUFDX1NVQlNUKGludGVyZmFjZXNkaXIpCiAgZmkKIC0tIAotMi4xLjQKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJ1aWxkLXVzZS1wa2ctY29uZmlnLXRvLWZpbmQtbGlieG1sMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJ1aWxkLXVzZS1wa2ctY29uZmlnLXRvLWZpbmQtbGlieG1sMi5wYXRjaAppbmRleCA4MDVjYmIzLi4xZTIzYzBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoCkBAIC03LDE1ICs3LDE5IEBACiBVcGRhdGUgY29udGV4dCBmb3IgdmVyc2lvbiA5LjEwLjMtUDIuCiAKIFNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCitVcGRhdGUgY29udGV4dCBmb3IgdmVyc2lvbiA5LjEwLjUtUDMuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgogLS0tCiAgY29uZmlndXJlLmluIHwgMjMgKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggMGRiODI2ZC4uNzU4MTllYiAxMDA2NDQKK2luZGV4IDRkYTczYTQuLjZmMmE3NTQgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuaW4KICsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTIxMDcsMjYgKzIxMDcsOSBAQCBjYXNlICIkdXNlX2xpYnhtbDIiIGluCitAQCAtMjI4MiwyNiArMjI4Miw5IEBAIGNhc2UgIiR1c2VfbGlieG1sMiIgaW4KICAJCURTVF9MSUJYTUwyX0lOQz0iIgogIAkJOzsKICAJYXV0b3x5ZXMpCkBAIC0yNSw3ICsyOSw3IEBACiAtCQkJbGlieG1sMl9jZmxhZ3M9YHhtbDItY29uZmlnIC0tY2ZsYWdzYAogLQkJCTs7CiAtCQkqKQotLQkJCWlmIHRlc3QgIiR1c2VfbGlieG1sMiIgPSAieWVzIiA7IHRoZW4KKy0JCQlpZiB0ZXN0ICJ5ZXMiID0gIiR1c2VfbGlieG1sMiIgOyB0aGVuCiAtCQkJCUFDX01TR19SRVNVTFQobm8pCiAtCQkJCUFDX01TR19FUlJPUihyZXF1aXJlZCBsaWJ4bWwyIHZlcnNpb24gbm90IGF2YWlsYWJsZSkKIC0JCQllbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTQ5YmQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLUZyb20gNzAwMzdlMDQwZTU4NzMyOWNlYzgyMTIzZTEyYjlmNGY3Yzk0NWY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgQW5kcmV3cyA8bWFya2FAaXNjLm9yZz4KLURhdGU6IFRodSwgMTggRmViIDIwMTYgMTI6MTE6MjcgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gNDMxOC4gICBbc2VjdXJpdHldICAgICAgTWFsZm9ybWVkIGNvbnRyb2wgbWVzc2FnZXMgY2FuCi0gdHJpZ2dlciBhc3NlcnRpb25zICAgICAgICAgICAgICAgICAgICAgICAgIGluIG5hbWVkIGFuZCBybmRjLiAoQ1ZFLTIwMTYtMTI4NSkKLSBbUlQgIzQxNjY2XQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBhMmIxNWIzMzA1YWNkNTIxNzllNmYzZGM3ZDA3M2IwN2ZiYzQwYjhlKQotCi1DVkU6IENWRS0yMDE2LTEyODUKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtSZW1vdmVkIGRvYy9hcm0vbm90ZXMueG1sIGNoYW5nZXMgZnJvbSB1cHN0cmVhbSBwYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0tLS0KLSBDSEFOR0VTICAgICAgICAgICAgICAgICB8ICAzICsrKwotIGJpbi9uYW1lZC9jb250cm9sLmMgICAgIHwgIDIgKy0KLSBiaW4vbmFtZWQvY29udHJvbGNvbmYuYyB8ICAyICstCi0gYmluL3JuZGMvcm5kYy5jICAgICAgICAgfCAgOCArKysrLS0tLQotIGRvYy9hcm0vbm90ZXMueG1sICAgICAgIHwgMTEgKysrKysrKysrKysKLSBsaWIvaXNjY2MvY2MuYyAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCi1pbmRleCBiOWJkOWVmLi4yYzcyN2Q1IDEwMDY0NAotLS0tIGEvQ0hBTkdFUwotKysrIGIvQ0hBTkdFUwotQEAgLTEsMyArMSw2IEBACi0rNDMxOC4JW3NlY3VyaXR5XQlNYWxmb3JtZWQgY29udHJvbCBtZXNzYWdlcyBjYW4gdHJpZ2dlciBhc3NlcnRpb25zCi0rCQkJaW4gbmFtZWQgYW5kIHJuZGMuIChDVkUtMjAxNi0xMjg1KSBbUlQgIzQxNjY2XQotKwotIAktLS0gOS4xMC4zLVAzIHJlbGVhc2VkIC0tLQotIAotIDQyODguCVtidWddCQlGaXhlZCBhIHJlZ3Jlc3Npb24gaW4gcmVzb2x2ZXIuYzpwb3NzaWJseV9tYXJrKCkKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY29udHJvbC5jIGIvYmluL25hbWVkL2NvbnRyb2wuYwotaW5kZXggODU1NDMzNS4uODEzNDBjYSAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jb250cm9sLmMKLSsrKyBiL2Jpbi9uYW1lZC9jb250cm9sLmMKLUBAIC02OSw3ICs2OSw3IEBAIG5zX2NvbnRyb2xfZG9jb21tYW5kKGlzY2NjX3NleHByX3QgKm1lc3NhZ2UsIGlzY19idWZmZXJfdCAqdGV4dCkgewotICNlbmRpZgotIAotIAlkYXRhID0gaXNjY2NfYWxpc3RfbG9va3VwKG1lc3NhZ2UsICJfZGF0YSIpOwotLQlpZiAoZGF0YSA9PSBOVUxMKSB7Ci0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKGRhdGEpKSB7Ci0gCQkvKgotIAkJICogTm8gZGF0YSBzZWN0aW9uLgotIAkJICovCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NvbnRyb2xjb25mLmMgYi9iaW4vbmFtZWQvY29udHJvbGNvbmYuYwotaW5kZXggNzY1YWZkZC4uYTM5YWI4YiAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jb250cm9sY29uZi5jCi0rKysgYi9iaW4vbmFtZWQvY29udHJvbGNvbmYuYwotQEAgLTQwMiw3ICs0MDIsNyBAQCBjb250cm9sX3JlY3ZtZXNzYWdlKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkgKiBMaW1pdCBleHBvc3VyZSB0byByZXBsYXkgYXR0YWNrcy4KLSAJICovCi0gCV9jdHJsID0gaXNjY2NfYWxpc3RfbG9va3VwKHJlcXVlc3QsICJfY3RybCIpOwotLQlpZiAoX2N0cmwgPT0gTlVMTCkgewotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChfY3RybCkpIHsKLSAJCWxvZ19pbnZhbGlkKCZjb25uLT5jY21zZywgSVNDX1JfRkFJTFVSRSk7Ci0gCQlnb3RvIGNsZWFudXBfcmVxdWVzdDsKLSAJfQotZGlmZiAtLWdpdCBhL2Jpbi9ybmRjL3JuZGMuYyBiL2Jpbi9ybmRjL3JuZGMuYwotaW5kZXggY2IxNzA1MC4uYjZlMDVjOCAxMDA2NDQKLS0tLSBhL2Jpbi9ybmRjL3JuZGMuYwotKysrIGIvYmluL3JuZGMvcm5kYy5jCi1AQCAtMjU1LDggKzI1NSw4IEBAIHJuZGNfcmVjdmRvbmUoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCSAgIGlzY2NjX2NjX2Zyb213aXJlKCZzb3VyY2UsICZyZXNwb25zZSwgYWxnb3JpdGhtLCAmc2VjcmV0KSk7Ci0gCi0gCWRhdGEgPSBpc2NjY19hbGlzdF9sb29rdXAocmVzcG9uc2UsICJfZGF0YSIpOwotLQlpZiAoZGF0YSA9PSBOVUxMKQotLQkJZmF0YWwoIm5vIGRhdGEgc2VjdGlvbiBpbiByZXNwb25zZSIpOwotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChkYXRhKSkKLSsJCWZhdGFsKCJiYWQgb3IgbWlzc2luZyBkYXRhIHNlY3Rpb24gaW4gcmVzcG9uc2UiKTsKLSAJcmVzdWx0ID0gaXNjY2NfY2NfbG9va3Vwc3RyaW5nKGRhdGEsICJlcnIiLCAmZXJyb3Jtc2cpOwotIAlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpIHsKLSAJCWZhaWxlZCA9IElTQ19UUlVFOwotQEAgLTMyMSw4ICszMjEsOCBAQCBybmRjX3JlY3Zub25jZShpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJICAgaXNjY2NfY2NfZnJvbXdpcmUoJnNvdXJjZSwgJnJlc3BvbnNlLCBhbGdvcml0aG0sICZzZWNyZXQpKTsKLSAKLSAJX2N0cmwgPSBpc2NjY19hbGlzdF9sb29rdXAocmVzcG9uc2UsICJfY3RybCIpOwotLQlpZiAoX2N0cmwgPT0gTlVMTCkKLS0JCWZhdGFsKCJfY3RybCBzZWN0aW9uIG1pc3NpbmciKTsKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoX2N0cmwpKQotKwkJZmF0YWwoImJhZCBvciBtaXNzaW5nIGN0cmwgc2VjdGlvbiBpbiByZXNwb25zZSIpOwotIAlub25jZSA9IDA7Ci0gCWlmIChpc2NjY19jY19sb29rdXB1aW50MzIoX2N0cmwsICJfbm9uY2UiLCAmbm9uY2UpICE9IElTQ19SX1NVQ0NFU1MpCi0gCQlub25jZSA9IDA7Ci1kaWZmIC0tZ2l0IGEvbGliL2lzY2NjL2NjLmMgYi9saWIvaXNjY2MvY2MuYwotaW5kZXggNDdhM2I3NC4uMmJiOTYxZSAxMDA2NDQKLS0tLSBhL2xpYi9pc2NjYy9jYy5jCi0rKysgYi9saWIvaXNjY2MvY2MuYwotQEAgLTQwMywxMyArNDAzLDEzIEBAIHZlcmlmeShpc2NjY19zZXhwcl90ICphbGlzdCwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxlbmd0aCwKLSAJICogRXh0cmFjdCBkaWdlc3QuCi0gCSAqLwotIAlfYXV0aCA9IGlzY2NjX2FsaXN0X2xvb2t1cChhbGlzdCwgIl9hdXRoIik7Ci0tCWlmIChfYXV0aCA9PSBOVUxMKQotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChfYXV0aCkpCi0gCQlyZXR1cm4gKElTQ19SX0ZBSUxVUkUpOwotIAlpZiAoYWxnb3JpdGhtID09IElTQ0NDX0FMR19ITUFDTUQ1KQotIAkJaG1hYyA9IGlzY2NjX2FsaXN0X2xvb2t1cChfYXV0aCwgImhtZDUiKTsKLSAJZWxzZQotIAkJaG1hYyA9IGlzY2NjX2FsaXN0X2xvb2t1cChfYXV0aCwgImhzaGEiKTsKLS0JaWYgKGhtYWMgPT0gTlVMTCkKLSsJaWYgKCFpc2NjY19zZXhwcl9iaW5hcnlwKGhtYWMpKQotIAkJcmV0dXJuIChJU0NfUl9GQUlMVVJFKTsKLSAJLyoKLSAJICogQ29tcHV0ZSBkaWdlc3QuCi1AQCAtNzI4LDcgKzcyOCw3IEBAIGlzY2NjX2NjX2NyZWF0ZWFjayhpc2NjY19zZXhwcl90ICptZXNzYWdlLCBpc2NfYm9vbGVhbl90IG9rLAotIAlSRVFVSVJFKGFja3AgIT0gTlVMTCAmJiAqYWNrcCA9PSBOVUxMKTsKLSAKLSAJX2N0cmwgPSBpc2NjY19hbGlzdF9sb29rdXAobWVzc2FnZSwgIl9jdHJsIik7Ci0tCWlmIChfY3RybCA9PSBOVUxMIHx8Ci0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKF9jdHJsKSB8fAotIAkgICAgaXNjY2NfY2NfbG9va3VwdWludDMyKF9jdHJsLCAiX3NlciIsICZzZXJpYWwpICE9IElTQ19SX1NVQ0NFU1MgfHwKLSAJICAgIGlzY2NjX2NjX2xvb2t1cHVpbnQzMihfY3RybCwgIl90aW0iLCAmdCkgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCXJldHVybiAoSVNDX1JfRkFJTFVSRSk7Ci1AQCAtNzczLDcgKzc3Myw3IEBAIGlzY2NjX2NjX2lzYWNrKGlzY2NjX3NleHByX3QgKm1lc3NhZ2UpCi0gCWlzY2NjX3NleHByX3QgKl9jdHJsOwotIAotIAlfY3RybCA9IGlzY2NjX2FsaXN0X2xvb2t1cChtZXNzYWdlLCAiX2N0cmwiKTsKLS0JaWYgKF9jdHJsID09IE5VTEwpCi0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKF9jdHJsKSkKLSAJCXJldHVybiAoSVNDX0ZBTFNFKTsKLSAJaWYgKGlzY2NjX2NjX2xvb2t1cHN0cmluZyhfY3RybCwgIl9hY2siLCBOVUxMKSA9PSBJU0NfUl9TVUNDRVNTKQotIAkJcmV0dXJuIChJU0NfVFJVRSk7Ci1AQCAtNzg2LDcgKzc4Niw3IEBAIGlzY2NjX2NjX2lzcmVwbHkoaXNjY2Nfc2V4cHJfdCAqbWVzc2FnZSkKLSAJaXNjY2Nfc2V4cHJfdCAqX2N0cmw7Ci0gCi0gCV9jdHJsID0gaXNjY2NfYWxpc3RfbG9va3VwKG1lc3NhZ2UsICJfY3RybCIpOwotLQlpZiAoX2N0cmwgPT0gTlVMTCkKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoX2N0cmwpKQotIAkJcmV0dXJuIChJU0NfRkFMU0UpOwotIAlpZiAoaXNjY2NfY2NfbG9va3Vwc3RyaW5nKF9jdHJsLCAiX3JwbCIsIE5VTEwpID09IElTQ19SX1NVQ0NFU1MpCi0gCQlyZXR1cm4gKElTQ19UUlVFKTsKLUBAIC04MDYsNyArODA2LDcgQEAgaXNjY2NfY2NfY3JlYXRlcmVzcG9uc2UoaXNjY2Nfc2V4cHJfdCAqbWVzc2FnZSwgaXNjY2NfdGltZV90IG5vdywKLSAKLSAJX2N0cmwgPSBpc2NjY19hbGlzdF9sb29rdXAobWVzc2FnZSwgIl9jdHJsIik7Ci0gCV9kYXRhID0gaXNjY2NfYWxpc3RfbG9va3VwKG1lc3NhZ2UsICJfZGF0YSIpOwotLQlpZiAoX2N0cmwgPT0gTlVMTCB8fCBfZGF0YSA9PSBOVUxMIHx8Ci0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKF9jdHJsKSB8fCAhaXNjY2NfYWxpc3RfYWxpc3RwKF9kYXRhKSB8fAotIAkgICAgaXNjY2NfY2NfbG9va3VwdWludDMyKF9jdHJsLCAiX3NlciIsICZzZXJpYWwpICE9IElTQ19SX1NVQ0NFU1MgfHwKLSAJICAgIGlzY2NjX2NjX2xvb2t1cHN0cmluZyhfZGF0YSwgInR5cGUiLCAmdHlwZSkgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCXJldHVybiAoSVNDX1JfRkFJTFVSRSk7Ci1AQCAtOTk1LDcgKzk5NSw3IEBAIGlzY2NjX2NjX2NoZWNrZHVwKGlzY2NjX3N5bXRhYl90ICpzeW10YWIsIGlzY2NjX3NleHByX3QgKm1lc3NhZ2UsCi0gCWlzY2NjX3NleHByX3QgKl9jdHJsOwotIAotIAlfY3RybCA9IGlzY2NjX2FsaXN0X2xvb2t1cChtZXNzYWdlLCAiX2N0cmwiKTsKLS0JaWYgKF9jdHJsID09IE5VTEwgfHwKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoX2N0cmwpIHx8Ci0gCSAgICBpc2NjY19jY19sb29rdXBzdHJpbmcoX2N0cmwsICJfc2VyIiwgJl9zZXIpICE9IElTQ19SX1NVQ0NFU1MgfHwKLSAJICAgIGlzY2NjX2NjX2xvb2t1cHN0cmluZyhfY3RybCwgIl90aW0iLCAmX3RpbSkgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCXJldHVybiAoSVNDX1JfRkFJTFVSRSk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg2XzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4Nl8xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTVjYzQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg2XzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1Gcm9tIGEzZDMyN2JmMWNlYWFlYWJiMjAyMjNkOGRlODUxNjZlOTQwYjlmMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNdWt1bmQgU2l2YXJhbWFuIDxtdWtzQGlzYy5vcmc+Ci1EYXRlOiBNb24sIDIyIEZlYiAyMDE2IDEyOjIyOjQzICswNTMwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCByZXNvbHZlciBhc3NlcnRpb24gZmFpbHVyZSBkdWUgdG8gaW1wcm9wZXIgRE5BTUUgaGFuZGxpbmcKLSAoQ1ZFLTIwMTYtMTI4NikgKCM0MTc1MykKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNTk5NWZlYzUxY2M4YmI3ZTUzODA0ZTQ5MzZlNjBhYTE1MzdmMzY3MykKLQotQ1ZFOiBDVkUtMjAxNi0xMjg2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVtSZW1vdmVkIGRvYy9hcm0vbm90ZXMueG1sIGNoYW5nZXMgZnJvbSB1cHN0cmVhbSBwYXRjaC5dCi0KLVNpZ25lZC1vZmYtYnk6IFNvbmEgU2FybWFkaSA8c29uYS5zYXJtYWRpQGVuZWEuY29tPgotLS0tCi1kaWZmIC1ydU4gYS9DSEFOR0VTIGIvQ0hBTkdFUwotLS0tIGEvQ0hBTkdFUwkyMDE2LTA0LTEzIDA3OjI4OjQ0Ljk0MDg3MzYyOSArMDIwMAotKysrIGIvQ0hBTkdFUwkyMDE2LTA0LTEzIDA3OjM4OjM4LjkyMzE2Nzg1MSArMDIwMAotQEAgLTEsMyArMSw3IEBACi0rNDMxOS4gIFtzZWN1cml0eV0gICAgICBGaXggcmVzb2x2ZXIgYXNzZXJ0aW9uIGZhaWx1cmUgZHVlIHRvIGltcHJvcGVyCi0rICAgICAgICAgICAgICAgICAgICAgICBETkFNRSBoYW5kbGluZyB3aGVuIHBhcnNpbmcgZmV0Y2ggcmVwbHkgbWVzc2FnZXMuCi0rICAgICAgICAgICAgICAgICAgICAgICAoQ1ZFLTIwMTYtMTI4NikgW1JUICM0MTc1M10KLSsKLSA0MzE4Lglbc2VjdXJpdHldCU1hbGZvcm1lZCBjb250cm9sIG1lc3NhZ2VzIGNhbiB0cmlnZ2VyIGFzc2VydGlvbnMKLSAJCQlpbiBuYW1lZCBhbmQgcm5kYy4gKENWRS0yMDE2LTEyODUpIFtSVCAjNDE2NjZdCi0gCi1kaWZmIC1ydU4gYS9saWIvZG5zL3Jlc29sdmVyLmMgYi9saWIvZG5zL3Jlc29sdmVyLmMKLS0tLSBhL2xpYi9kbnMvcmVzb2x2ZXIuYwkyMDE2LTA0LTEzIDA3OjI4OjQzLjA4ODk1Mzc5MCArMDIwMAotKysrIGIvbGliL2Rucy9yZXNvbHZlci5jCTIwMTYtMDQtMTMgMDc6Mzg6MjAuNDExOTY4OTI1ICswMjAwCi1AQCAtNjk2NywyMSArNjk2NywyNiBAQAotIAkJCQlpc2NfYm9vbGVhbl90IGZvdW5kX2RuYW1lID0gSVNDX0ZBTFNFOwotIAkJCQlkbnNfbmFtZV90ICpkbmFtZV9uYW1lOwotIAotKwkJCQkvKgotKwkJCQkgKiBPbmx5IHBhc3MgRE5BTUUgb3IgUlJTSUcoRE5BTUUpLgotKwkJCQkgKi8KLSsJCQkJaWYgKHJkYXRhc2V0LT50eXBlICE9IGRuc19yZGF0YXR5cGVfZG5hbWUgJiYKLSsJCQkJICAgIChyZGF0YXNldC0+dHlwZSAhPSBkbnNfcmRhdGF0eXBlX3Jyc2lnIHx8Ci0rCQkJCSAgICAgcmRhdGFzZXQtPmNvdmVycyAhPSBkbnNfcmRhdGF0eXBlX2RuYW1lKSkKLSsJCQkJCWNvbnRpbnVlOwotKwotKwkJCQkvKgotKwkJCQkgKiBJZiB3ZSdyZSBub3QgY2hhaW5pbmcsIHRoZW4gdGhlIEROQU1FIGFuZAotKwkJCQkgKiBpdHMgc2lnbmF0dXJlIHNob3VsZCBub3QgYmUgZXh0ZXJuYWwuCi0rCQkJCSAqLwotKwkJCQlpZiAoIWNoYWluaW5nICYmIGV4dGVybmFsKSB7Ci0rCQkJCQlsb2dfZm9ybWVycihmY3R4LCAiZXh0ZXJuYWwgRE5BTUUiKTsKLSsJCQkJCXJldHVybiAoRE5TX1JfRk9STUVSUik7Ci0rCQkJCX0KLSsKLSAJCQkJZm91bmQgPSBJU0NfRkFMU0U7Ci0gCQkJCWFmbGFnID0gMDsKLSAJCQkJaWYgKHJkYXRhc2V0LT50eXBlID09IGRuc19yZGF0YXR5cGVfZG5hbWUpIHsKLS0JCQkJCS8qCi0tCQkJCQkgKiBXZSdyZSBsb29raW5nIGZvciBzb21ldGhpbmcgZWxzZSwKLS0JCQkJCSAqIGJ1dCB3ZSBmb3VuZCBhIEROQU1FLgotLQkJCQkJICoKLS0JCQkJCSAqIElmIHdlJ3JlIG5vdCBjaGFpbmluZywgdGhlbiB0aGUKLS0JCQkJCSAqIEROQU1FIHNob3VsZCBub3QgYmUgZXh0ZXJuYWwuCi0tCQkJCQkgKi8KLS0JCQkJCWlmICghY2hhaW5pbmcgJiYgZXh0ZXJuYWwpIHsKLS0JCQkJCQlsb2dfZm9ybWVycihmY3R4LAotLQkJCQkJCQkgICAgImV4dGVybmFsIEROQU1FIik7Ci0tCQkJCQkJcmV0dXJuIChETlNfUl9GT1JNRVJSKTsKLS0JCQkJCX0KLSAJCQkJCWZvdW5kID0gSVNDX1RSVUU7Ci0gCQkJCQl3YW50X2NoYWluaW5nID0gSVNDX1RSVUU7Ci0gCQkJCQlQT1NUKHdhbnRfY2hhaW5pbmcpOwotQEAgLTcwMTAsOSArNzAxNSw3IEBACi0gCQkJCQkJCSZmY3R4LT5kb21haW4pKSB7Ci0gCQkJCQkJcmV0dXJuIChETlNfUl9TRVJWRkFJTCk7Ci0gCQkJCQl9Ci0tCQkJCX0gZWxzZSBpZiAocmRhdGFzZXQtPnR5cGUgPT0gZG5zX3JkYXRhdHlwZV9ycnNpZwotLQkJCQkJICAgJiYgcmRhdGFzZXQtPmNvdmVycyA9PQotLQkJCQkJICAgZG5zX3JkYXRhdHlwZV9kbmFtZSkgewotKwkJCQl9IGVsc2UgewotIAkJCQkJLyoKLSAJCQkJCSAqIFdlJ3ZlIGZvdW5kIGEgc2lnbmF0dXJlIHRoYXQKLSAJCQkJCSAqIGNvdmVycyB0aGUgRE5BTUUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4Nl8yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODZfMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY1Y2IwZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4Nl8yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLUZyb20gNzYwMmJlMjc2YTczYTZlYjU0MzFjNWFjZDk3MThlNjhhNTVlOGI2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgQW5kcmV3cyA8bWFya2FAaXNjLm9yZz4KLURhdGU6IE1vbiwgMjkgRmViIDIwMTYgMDc6MTY6NDggKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gUGFydCAyIG9mOiA0MzE5LiAgIFtzZWN1cml0eV0gICAgICBGaXggcmVzb2x2ZXIgYXNzZXJ0aW9uCi0gZmFpbHVyZSBkdWUgdG8gaW1wcm9wZXIgICAgICAgICAgICAgICAgICAgICAgICAgRE5BTUUgaGFuZGxpbmcgd2hlbiBwYXJzaW5nCi0gZmV0Y2ggcmVwbHkgbWVzc2FnZXMuICAgICAgICAgICAgICAgICAgICAgICAgIChDVkUtMjAxNi0xMjg2KSBbUlQgIzQxNzUzXQotCi1DVkU6IENWRS0yMDE2LTEyODYKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMmRlODllZTlkZThjOGRhOWRjMTUzYTc1NGIwMmRjZGJiN2ZlMjM3NCkKLVNpZ25lZC1vZmYtYnk6IFNvbmEgU2FybWFkaSA8c29uYS5zYXJtYWRpQGVuZWEuY29tPgotLS0tCi0gbGliL2Rucy9yZXNvbHZlci5jIHwgMTkyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9yZXNvbHZlci5jIGIvbGliL2Rucy9yZXNvbHZlci5jCi1pbmRleCA3MGFiYTg3Li40MWU5ZGY0IDEwMDY0NAotLS0tIGEvbGliL2Rucy9yZXNvbHZlci5jCi0rKysgYi9saWIvZG5zL3Jlc29sdmVyLmMKLUBAIC02MDc0LDE0ICs2MDc0LDExIEBAIGNuYW1lX3RhcmdldChkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsIGRuc19uYW1lX3QgKnRuYW1lKSB7Ci0gfQotIAotIHN0YXRpYyBpbmxpbmUgaXNjX3Jlc3VsdF90Ci0tZG5hbWVfdGFyZ2V0KGZldGNoY3R4X3QgKmZjdHgsIGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgZG5zX25hbWVfdCAqcW5hbWUsCi0tCSAgICAgZG5zX25hbWVfdCAqb25hbWUsIGRuc19maXhlZG5hbWVfdCAqZml4ZWRkbmFtZSkKLStkbmFtZV90YXJnZXQoZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCBkbnNfbmFtZV90ICpxbmFtZSwKLSsJICAgICB1bnNpZ25lZCBpbnQgbmxhYmVscywgZG5zX2ZpeGVkbmFtZV90ICpmaXhlZGRuYW1lKQotIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJZG5zX3JkYXRhX3QgcmRhdGEgPSBETlNfUkRBVEFfSU5JVDsKLS0JdW5zaWduZWQgaW50IG5sYWJlbHM7Ci0tCWludCBvcmRlcjsKLS0JZG5zX25hbWVyZWxuX3QgbmFtZXJlbG47Ci0gCWRuc19yZGF0YV9kbmFtZV90IGRuYW1lOwotIAlkbnNfZml4ZWRuYW1lX3QgcHJlZml4OwotIAotQEAgLTYwOTYsMjEgKzYwOTMsNiBAQCBkbmFtZV90YXJnZXQoZmV0Y2hjdHhfdCAqZmN0eCwgZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCBkbnNfbmFtZV90ICpxbmFtZSwKLSAJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJcmV0dXJuIChyZXN1bHQpOwotIAotLQkvKgotLQkgKiBHZXQgdGhlIHByZWZpeCBvZiBxbmFtZS4KLS0JICovCi0tCW5hbWVyZWxuID0gZG5zX25hbWVfZnVsbGNvbXBhcmUocW5hbWUsIG9uYW1lLCAmb3JkZXIsICZubGFiZWxzKTsKLS0JaWYgKG5hbWVyZWxuICE9IGRuc19uYW1lcmVsbl9zdWJkb21haW4pIHsKLS0JCWNoYXIgcWJ1ZltETlNfTkFNRV9GT1JNQVRTSVpFXTsKLS0JCWNoYXIgb2J1ZltETlNfTkFNRV9GT1JNQVRTSVpFXTsKLS0KLS0JCWRuc19yZGF0YV9mcmVlc3RydWN0KCZkbmFtZSk7Ci0tCQlkbnNfbmFtZV9mb3JtYXQocW5hbWUsIHFidWYsIHNpemVvZihxYnVmKSk7Ci0tCQlkbnNfbmFtZV9mb3JtYXQob25hbWUsIG9idWYsIHNpemVvZihvYnVmKSk7Ci0tCQlsb2dfZm9ybWVycihmY3R4LCAidW5yZWxhdGVkIEROQU1FIGluIGFuc3dlcjogIgotLQkJCQkgICAiJXMgaXMgbm90IGluICVzIiwgcWJ1Ziwgb2J1Zik7Ci0tCQlyZXR1cm4gKEROU19SX0ZPUk1FUlIpOwotLQl9Ci0gCWRuc19maXhlZG5hbWVfaW5pdCgmcHJlZml4KTsKLSAJZG5zX25hbWVfc3BsaXQocW5hbWUsIG5sYWJlbHMsIGRuc19maXhlZG5hbWVfbmFtZSgmcHJlZml4KSwgTlVMTCk7Ci0gCWRuc19maXhlZG5hbWVfaW5pdChmaXhlZGRuYW1lKTsKLUBAIC02NzM2LDEzICs2NzE4LDEzIEBAIHN0YXRpYyBpc2NfcmVzdWx0X3QKLSBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAlkbnNfbWVzc2FnZV90ICptZXNzYWdlOwotLQlkbnNfbmFtZV90ICpuYW1lLCAqcW5hbWUsIHRuYW1lLCAqbnNfbmFtZTsKLSsJZG5zX25hbWVfdCAqbmFtZSwgKmRuYW1lLCAqcW5hbWUsIHRuYW1lLCAqbnNfbmFtZTsKLSAJZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCAqbnNfcmRhdGFzZXQ7Ci0gCWlzY19ib29sZWFuX3QgZG9uZSwgZXh0ZXJuYWwsIGNoYWluaW5nLCBhYSwgZm91bmQsIHdhbnRfY2hhaW5pbmc7Ci0gCWlzY19ib29sZWFuX3QgaGF2ZV9hbnN3ZXIsIGZvdW5kX2NuYW1lLCBmb3VuZF90eXBlLCB3YW50ZWRfY2hhaW5pbmc7Ci0gCXVuc2lnbmVkIGludCBhZmxhZzsKLSAJZG5zX3JkYXRhdHlwZV90IHR5cGU7Ci0tCWRuc19maXhlZG5hbWVfdCBkbmFtZSwgZnFuYW1lOwotKwlkbnNfZml4ZWRuYW1lX3QgZmRuYW1lLCBmcW5hbWU7Ci0gCWRuc192aWV3X3QgKnZpZXc7Ci0gCi0gCUZDVFhUUkFDRSgiYW5zd2VyX3Jlc3BvbnNlIik7Ci1AQCAtNjc3MCwxMCArNjc1MiwxNSBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAl2aWV3ID0gZmN0eC0+cmVzLT52aWV3OwotIAlyZXN1bHQgPSBkbnNfbWVzc2FnZV9maXJzdG5hbWUobWVzc2FnZSwgRE5TX1NFQ1RJT05fQU5TV0VSKTsKLSAJd2hpbGUgKCFkb25lICYmIHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKSB7Ci0rCQlkbnNfbmFtZXJlbG5fdCBuYW1lcmVsbjsKLSsJCWludCBvcmRlcjsKLSsJCXVuc2lnbmVkIGludCBubGFiZWxzOwotKwotIAkJbmFtZSA9IE5VTEw7Ci0gCQlkbnNfbWVzc2FnZV9jdXJyZW50bmFtZShtZXNzYWdlLCBETlNfU0VDVElPTl9BTlNXRVIsICZuYW1lKTsKLSAJCWV4dGVybmFsID0gSVNDX1RGKCFkbnNfbmFtZV9pc3N1YmRvbWFpbihuYW1lLCAmZmN0eC0+ZG9tYWluKSk7Ci0tCQlpZiAoZG5zX25hbWVfZXF1YWwobmFtZSwgcW5hbWUpKSB7Ci0rCQluYW1lcmVsbiA9IGRuc19uYW1lX2Z1bGxjb21wYXJlKHFuYW1lLCBuYW1lLCAmb3JkZXIsICZubGFiZWxzKTsKLSsJCWlmIChuYW1lcmVsbiA9PSBkbnNfbmFtZXJlbG5fZXF1YWwpIHsKLSAJCQl3YW50ZWRfY2hhaW5pbmcgPSBJU0NfRkFMU0U7Ci0gCQkJZm9yIChyZGF0YXNldCA9IElTQ19MSVNUX0hFQUQobmFtZS0+bGlzdCk7Ci0gCQkJICAgICByZGF0YXNldCAhPSBOVUxMOwotQEAgLTY4OTgsMTAgKzY4ODUsMTEgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJCQkgKi8KLSAJCQkJCQlJTlNJU1QoIWV4dGVybmFsKTsKLSAJCQkJCQlpZiAoYWZsYWcgPT0KLS0JCQkJCQkgICAgRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVIpCi0rCQkJCQkJICAgIEROU19SREFUQVNFVEFUVFJfQU5TV0VSKSB7Ci0gCQkJCQkJCWhhdmVfYW5zd2VyID0gSVNDX1RSVUU7Ci0tCQkJCQkJbmFtZS0+YXR0cmlidXRlcyB8PQotLQkJCQkJCQlETlNfTkFNRUFUVFJfQU5TV0VSOwotKwkJCQkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9Ci0rCQkJCQkJCQlETlNfTkFNRUFUVFJfQU5TV0VSOwotKwkJCQkJCX0KLSAJCQkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PSBhZmxhZzsKLSAJCQkJCQlpZiAoYWEpCi0gCQkJCQkJCXJkYXRhc2V0LT50cnVzdCA9Ci1AQCAtNjk1Niw2ICs2OTQ0LDggQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQlpZiAod2FudGVkX2NoYWluaW5nKQotIAkJCQljaGFpbmluZyA9IElTQ19UUlVFOwotIAkJfSBlbHNlIHsKLSsJCQlkbnNfcmRhdGFzZXRfdCAqZG5hbWVzZXQgPSBOVUxMOwotKwotIAkJCS8qCi0gCQkJICogTG9vayBmb3IgYSBETkFNRSAob3IgaXRzIFNJRykuICBBbnl0aGluZyBlbHNlIGlzCi0gCQkJICogaWdub3JlZC4KLUBAIC02OTYzLDEwICs2OTUzLDggQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQl3YW50ZWRfY2hhaW5pbmcgPSBJU0NfRkFMU0U7Ci0gCQkJZm9yIChyZGF0YXNldCA9IElTQ19MSVNUX0hFQUQobmFtZS0+bGlzdCk7Ci0gCQkJICAgICByZGF0YXNldCAhPSBOVUxMOwotLQkJCSAgICAgcmRhdGFzZXQgPSBJU0NfTElTVF9ORVhUKHJkYXRhc2V0LCBsaW5rKSkgewotLQkJCQlpc2NfYm9vbGVhbl90IGZvdW5kX2RuYW1lID0gSVNDX0ZBTFNFOwotLQkJCQlkbnNfbmFtZV90ICpkbmFtZV9uYW1lOwotLQotKwkJCSAgICAgcmRhdGFzZXQgPSBJU0NfTElTVF9ORVhUKHJkYXRhc2V0LCBsaW5rKSkKLSsJCQl7Ci0gCQkJCS8qCi0gCQkJCSAqIE9ubHkgcGFzcyBETkFNRSBvciBSUlNJRyhETkFNRSkuCi0gCQkJCSAqLwotQEAgLTY5ODAsMjAgKzY5NjgsNDEgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJICogaXRzIHNpZ25hdHVyZSBzaG91bGQgbm90IGJlIGV4dGVybmFsLgotIAkJCQkgKi8KLSAJCQkJaWYgKCFjaGFpbmluZyAmJiBleHRlcm5hbCkgewotLQkJCQkJbG9nX2Zvcm1lcnIoZmN0eCwgImV4dGVybmFsIEROQU1FIik7Ci0rCQkJCQljaGFyIHFidWZbRE5TX05BTUVfRk9STUFUU0laRV07Ci0rCQkJCQljaGFyIG9idWZbRE5TX05BTUVfRk9STUFUU0laRV07Ci0rCi0rCQkJCQlkbnNfbmFtZV9mb3JtYXQobmFtZSwgcWJ1ZiwKLSsJCQkJCQkJc2l6ZW9mKHFidWYpKTsKLSsJCQkJCWRuc19uYW1lX2Zvcm1hdCgmZmN0eC0+ZG9tYWluLCBvYnVmLAotKwkJCQkJCQlzaXplb2Yob2J1ZikpOwotKwkJCQkJbG9nX2Zvcm1lcnIoZmN0eCwgImV4dGVybmFsIEROQU1FIG9yICIKLSsJCQkJCQkgICAgIlJSU0lHIGNvdmVyaW5nIEROQU1FICIKLSsJCQkJCQkgICAgImluIGFuc3dlcjogJXMgaXMgIgotKwkJCQkJCSAgICAibm90IGluICVzIiwgcWJ1Ziwgb2J1Zik7Ci0rCQkJCQlyZXR1cm4gKEROU19SX0ZPUk1FUlIpOwotKwkJCQl9Ci0rCi0rCQkJCWlmIChuYW1lcmVsbiAhPSBkbnNfbmFtZXJlbG5fc3ViZG9tYWluKSB7Ci0rCQkJCQljaGFyIHFidWZbRE5TX05BTUVfRk9STUFUU0laRV07Ci0rCQkJCQljaGFyIG9idWZbRE5TX05BTUVfRk9STUFUU0laRV07Ci0rCi0rCQkJCQlkbnNfbmFtZV9mb3JtYXQocW5hbWUsIHFidWYsCi0rCQkJCQkJCXNpemVvZihxYnVmKSk7Ci0rCQkJCQlkbnNfbmFtZV9mb3JtYXQobmFtZSwgb2J1ZiwKLSsJCQkJCQkJc2l6ZW9mKG9idWYpKTsKLSsJCQkJCWxvZ19mb3JtZXJyKGZjdHgsICJ1bnJlbGF0ZWQgRE5BTUUgIgotKwkJCQkJCSAgICAiaW4gYW5zd2VyOiAlcyBpcyAiCi0rCQkJCQkJICAgICJub3QgaW4gJXMiLCBxYnVmLCBvYnVmKTsKLSAJCQkJCXJldHVybiAoRE5TX1JfRk9STUVSUik7Ci0gCQkJCX0KLSAKLS0JCQkJZm91bmQgPSBJU0NfRkFMU0U7Ci0gCQkJCWFmbGFnID0gMDsKLSAJCQkJaWYgKHJkYXRhc2V0LT50eXBlID09IGRuc19yZGF0YXR5cGVfZG5hbWUpIHsKLS0JCQkJCWZvdW5kID0gSVNDX1RSVUU7Ci0gCQkJCQl3YW50X2NoYWluaW5nID0gSVNDX1RSVUU7Ci0gCQkJCQlQT1NUKHdhbnRfY2hhaW5pbmcpOwotIAkJCQkJYWZsYWcgPSBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUjsKLS0JCQkJCXJlc3VsdCA9IGRuYW1lX3RhcmdldChmY3R4LCByZGF0YXNldCwKLS0JCQkJCQkJICAgICAgcW5hbWUsIG5hbWUsCi0tCQkJCQkJCSAgICAgICZkbmFtZSk7Ci0rCQkJCQlyZXN1bHQgPSBkbmFtZV90YXJnZXQocmRhdGFzZXQsIHFuYW1lLAotKwkJCQkJCQkgICAgICBubGFiZWxzLCAmZmRuYW1lKTsKLSAJCQkJCWlmIChyZXN1bHQgPT0gSVNDX1JfTk9TUEFDRSkgewotIAkJCQkJCS8qCi0gCQkJCQkJICogV2UgY2FuJ3QgY29uc3RydWN0IHRoZQotQEAgLTcwMDUsMTQgKzcwMTQsMTIgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJCX0gZWxzZSBpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJCQkJcmV0dXJuIChyZXN1bHQpOwotIAkJCQkJZWxzZQotLQkJCQkJCWZvdW5kX2RuYW1lID0gSVNDX1RSVUU7Ci0rCQkJCQkJZG5hbWVzZXQgPSByZGF0YXNldDsKLSAKLS0JCQkJCWRuYW1lX25hbWUgPSBkbnNfZml4ZWRuYW1lX25hbWUoJmRuYW1lKTsKLSsJCQkJCWRuYW1lID0gZG5zX2ZpeGVkbmFtZV9uYW1lKCZmZG5hbWUpOwotIAkJCQkJaWYgKCFpc19hbnN3ZXJ0YXJnZXRfYWxsb3dlZCh2aWV3LAotLQkJCQkJCQlxbmFtZSwKLS0JCQkJCQkJcmRhdGFzZXQtPnR5cGUsCi0tCQkJCQkJCWRuYW1lX25hbWUsCi0tCQkJCQkJCSZmY3R4LT5kb21haW4pKSB7Ci0rCQkJCQkJCXFuYW1lLCByZGF0YXNldC0+dHlwZSwKLSsJCQkJCQkJZG5hbWUsICZmY3R4LT5kb21haW4pKSB7Ci0gCQkJCQkJcmV0dXJuIChETlNfUl9TRVJWRkFJTCk7Ci0gCQkJCQl9Ci0gCQkJCX0gZWxzZSB7Ci1AQCAtNzAyMCw3MyArNzAyNyw2MCBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkJICogV2UndmUgZm91bmQgYSBzaWduYXR1cmUgdGhhdAotIAkJCQkJICogY292ZXJzIHRoZSBETkFNRS4KLSAJCQkJCSAqLwotLQkJCQkJZm91bmQgPSBJU0NfVFJVRTsKLSAJCQkJCWFmbGFnID0gRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVJTSUc7Ci0gCQkJCX0KLSAKLS0JCQkJaWYgKGZvdW5kKSB7Ci0rCQkJCS8qCi0rCQkJCSAqIFdlJ3ZlIGZvdW5kIGFuIGFuc3dlciB0byBvdXIKLSsJCQkJICogcXVlc3Rpb24uCi0rCQkJCSAqLwotKwkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9IEROU19OQU1FQVRUUl9DQUNIRTsKLSsJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0gRE5TX1JEQVRBU0VUQVRUUl9DQUNIRTsKLSsJCQkJcmRhdGFzZXQtPnRydXN0ID0gZG5zX3RydXN0X2Fuc3dlcjsKLSsJCQkJaWYgKCFjaGFpbmluZykgewotIAkJCQkJLyoKLS0JCQkJCSAqIFdlJ3ZlIGZvdW5kIGFuIGFuc3dlciB0byBvdXIKLS0JCQkJCSAqIHF1ZXN0aW9uLgotKwkJCQkJICogVGhpcyBkYXRhIGlzICJ0aGUiIGFuc3dlciB0bwotKwkJCQkJICogb3VyIHF1ZXN0aW9uIG9ubHkgaWYgd2UncmUKLSsJCQkJCSAqIG5vdCBjaGFpbmluZy4KLSAJCQkJCSAqLwotLQkJCQkJbmFtZS0+YXR0cmlidXRlcyB8PQotLQkJCQkJCUROU19OQU1FQVRUUl9DQUNIRTsKLS0JCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9Ci0tCQkJCQkJRE5TX1JEQVRBU0VUQVRUUl9DQUNIRTsKLS0JCQkJCXJkYXRhc2V0LT50cnVzdCA9IGRuc190cnVzdF9hbnN3ZXI7Ci0tCQkJCQlpZiAoIWNoYWluaW5nKSB7Ci0tCQkJCQkJLyoKLS0JCQkJCQkgKiBUaGlzIGRhdGEgaXMgInRoZSIgYW5zd2VyCi0tCQkJCQkJICogdG8gb3VyIHF1ZXN0aW9uIG9ubHkgaWYKLS0JCQkJCQkgKiB3ZSdyZSBub3QgY2hhaW5pbmcuCi0tCQkJCQkJICovCi0tCQkJCQkJSU5TSVNUKCFleHRlcm5hbCk7Ci0tCQkJCQkJaWYgKGFmbGFnID09Ci0tCQkJCQkJICAgIEROU19SREFUQVNFVEFUVFJfQU5TV0VSKQotLQkJCQkJCQloYXZlX2Fuc3dlciA9IElTQ19UUlVFOwotKwkJCQkJSU5TSVNUKCFleHRlcm5hbCk7Ci0rCQkJCQlpZiAoYWZsYWcgPT0gRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVIpIHsKLSsJCQkJCQloYXZlX2Fuc3dlciA9IElTQ19UUlVFOwotIAkJCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0KLSAJCQkJCQkJRE5TX05BTUVBVFRSX0FOU1dFUjsKLS0JCQkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PSBhZmxhZzsKLS0JCQkJCQlpZiAoYWEpCi0tCQkJCQkJCXJkYXRhc2V0LT50cnVzdCA9Ci0tCQkJCQkJCSAgZG5zX3RydXN0X2F1dGhhbnN3ZXI7Ci0tCQkJCQl9IGVsc2UgaWYgKGV4dGVybmFsKSB7Ci0tCQkJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0KLS0JCQkJCQkgICAgRE5TX1JEQVRBU0VUQVRUUl9FWFRFUk5BTDsKLS0JCQkJCX0KLS0KLS0JCQkJCS8qCi0tCQkJCQkgKiBETkFNRSBjaGFpbmluZy4KLS0JCQkJCSAqLwotLQkJCQkJaWYgKGZvdW5kX2RuYW1lKSB7Ci0tCQkJCQkJLyoKLS0JCQkJCQkgKiBDb3B5IHRoZSBkbmFtZSBpbnRvIHRoZQotLQkJCQkJCSAqIHFuYW1lIGZpeGVkIG5hbWUuCi0tCQkJCQkJICoKLS0JCQkJCQkgKiBBbHRob3VnaCB3ZSBjaGVjayBmb3IKLS0JCQkJCQkgKiBmYWlsdXJlIG9mIHRoZSBjb3B5Ci0tCQkJCQkJICogb3BlcmF0aW9uLCBpbiBwcmFjdGljZSBpdAotLQkJCQkJCSAqIHNob3VsZCBuZXZlciBmYWlsIHNpbmNlCi0tCQkJCQkJICogd2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlCi0tCQkJCQkJICogcmVzdWx0IGZpdHMgaW4gYSBmaXhlZG5hbWUuCi0tCQkJCQkJICovCi0tCQkJCQkJZG5zX2ZpeGVkbmFtZV9pbml0KCZmcW5hbWUpOwotLQkJCQkJCXJlc3VsdCA9IGRuc19uYW1lX2NvcHkoCi0tCQkJCQkJICBkbnNfZml4ZWRuYW1lX25hbWUoJmRuYW1lKSwKLS0JCQkJCQkgIGRuc19maXhlZG5hbWVfbmFtZSgmZnFuYW1lKSwKLS0JCQkJCQkgIE5VTEwpOwotLQkJCQkJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLS0JCQkJCQkJcmV0dXJuIChyZXN1bHQpOwotLQkJCQkJCXdhbnRlZF9jaGFpbmluZyA9IElTQ19UUlVFOwotLQkJCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0KLS0JCQkJCQkJRE5TX05BTUVBVFRSX0NIQUlOSU5HOwotLQkJCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9Ci0tCQkJCQkJICAgIEROU19SREFUQVNFVEFUVFJfQ0hBSU5JTkc7Ci0tCQkJCQkJcW5hbWUgPSBkbnNfZml4ZWRuYW1lX25hbWUoCi0tCQkJCQkJCQkgICAmZnFuYW1lKTsKLSAJCQkJCX0KLSsJCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9IGFmbGFnOwotKwkJCQkJaWYgKGFhKQotKwkJCQkJCXJkYXRhc2V0LT50cnVzdCA9Ci0rCQkJCQkJICBkbnNfdHJ1c3RfYXV0aGFuc3dlcjsKLSsJCQkJfSBlbHNlIGlmIChleHRlcm5hbCkgewotKwkJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0KLSsJCQkJCSAgICBETlNfUkRBVEFTRVRBVFRSX0VYVEVSTkFMOwotIAkJCQl9Ci0gCQkJfQotKwotKwkJCS8qCi0rCQkJICogRE5BTUUgY2hhaW5pbmcuCi0rCQkJICovCi0rCQkJaWYgKGRuYW1lc2V0ICE9IE5VTEwpIHsKLSsJCQkJLyoKLSsJCQkJICogQ29weSB0aGUgZG5hbWUgaW50byB0aGUgcW5hbWUgZml4ZWQgbmFtZS4KLSsJCQkJICoKLSsJCQkJICogQWx0aG91Z2ggd2UgY2hlY2sgZm9yIGZhaWx1cmUgb2YgdGhlIGNvcHkKLSsJCQkJICogb3BlcmF0aW9uLCBpbiBwcmFjdGljZSBpdCBzaG91bGQgbmV2ZXIgZmFpbAotKwkJCQkgKiBzaW5jZSB3ZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUgIHJlc3VsdCBmaXRzCi0rCQkJCSAqIGluIGEgZml4ZWRuYW1lLgotKwkJCQkgKi8KLSsJCQkJZG5zX2ZpeGVkbmFtZV9pbml0KCZmcW5hbWUpOwotKwkJCQlxbmFtZSA9IGRuc19maXhlZG5hbWVfbmFtZSgmZnFuYW1lKTsKLSsJCQkJcmVzdWx0ID0gZG5zX25hbWVfY29weShkbmFtZSwgcW5hbWUsIE5VTEwpOwotKwkJCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0rCQkJCQlyZXR1cm4gKHJlc3VsdCk7Ci0rCQkJCXdhbnRlZF9jaGFpbmluZyA9IElTQ19UUlVFOwotKwkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9IEROU19OQU1FQVRUUl9DSEFJTklORzsKLSsJCQkJZG5hbWVzZXQtPmF0dHJpYnV0ZXMgfD0KLSsJCQkJCSAgICBETlNfUkRBVEFTRVRBVFRSX0NIQUlOSU5HOwotKwkJCX0KLSAJCQlpZiAod2FudGVkX2NoYWluaW5nKQotIAkJCQljaGFpbmluZyA9IElTQ19UUlVFOwotIAkJfQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjA4OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yMDg4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjg0ZDQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yMDg4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQ3ICswLDAgQEAKLUNWRS0yMDE2LTIwODgKLQotQmFja3BvcnQgY29tbWl0IGQ3ZmY5YTFjNDFiZjBiYTk3NzNjYjNhZGIwOGI0OGI5ZmQ1N2M5NTYgZnJvbSB0aGUKLXY5XzEwXzNfcGF0Y2ggYnJhbmNoLgotCi1odHRwczovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDE2LTIwODgKLWh0dHBzOi8va2IuaXNjLm9yZy9hcnRpY2xlL0FBLTAxMzUxCi0KLUNWRTogQ1ZFLTIwMTYtMjA4OAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLQotCi1PcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIE1hcmsgQW5kcmV3cyA8bWFya2FAaXNjLm9yZz4gYmVsb3c6Ci0KLTQzMjIuICAgW3NlY3VyaXR5XSAgICAgIER1cGxpY2F0ZSBFRE5TIENPT0tJRSBvcHRpb25zIGluIGEgcmVzcG9uc2UgY291bGQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgYW4gYXNzZXJ0aW9uIGZhaWx1cmUuIChDVkUtMjAxNi0yMDg4KQotICAgICAgICAgICAgICAgICAgICAgICAgW1JUICM0MTgwOV0KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNDU1YzA4NDhmODBhOGFjZGEyN2FhZDE0NjZjNzI5ODdjYWZhYTAyOSkKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDdjZDMwMGFiZDZlZThiOGVlODczMDU5M2RhZjc0MmJhNTNmOTBiYzMpCi0tLS0KLSBDSEFOR0VTICAgICAgICAgICAgfCAgNCArKysrCi0gYmluL2RpZy9kaWdob3N0LmMgIHwgIDkgKysrKysrKysrCi0gYmluL25hbWVkL2NsaWVudC5jIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCi0gZG9jL2FybS9ub3Rlcy54bWwgIHwgIDcgKysrKysrKwotIGxpYi9kbnMvcmVzb2x2ZXIuYyB8IDE0ICsrKysrKysrKysrKystCi0gNSBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCi1pbmRleCBjNWI1ZDJiLi5kMmUzMzYwIDEwMDY0NAotLS0tIGEvQ0hBTkdFUwotKysrIGIvQ0hBTkdFUwotQEAgLTEsMyArMSw3IEBACi0rNDMyMi4gIFtzZWN1cml0eV0gICAgICBEdXBsaWNhdGUgRUROUyBDT09LSUUgb3B0aW9ucyBpbiBhIHJlc3BvbnNlIGNvdWxkCi0rICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIGFuIGFzc2VydGlvbiBmYWlsdXJlLiAoQ1ZFLTIwMTYtMjA4OCkKLSsgICAgICAgICAgICAgICAgICAgICAgIFtSVCAjNDE4MDldCi0rCi0gNDMxOS4gIFtzZWN1cml0eV0gICAgICBGaXggcmVzb2x2ZXIgYXNzZXJ0aW9uIGZhaWx1cmUgZHVlIHRvIGltcHJvcGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBETkFNRSBoYW5kbGluZyB3aGVuIHBhcnNpbmcgZmV0Y2ggcmVwbHkgbWVzc2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAoQ1ZFLTIwMTYtMTI4NikgW1JUICM0MTc1M10KLWRpZmYgLS1naXQgYS9iaW4vZGlnL2RpZ2hvc3QuYyBiL2Jpbi9kaWcvZGlnaG9zdC5jCi1pbmRleCBjYTgyZjhlLi4zNDA5MDRmIDEwMDY0NAotLS0tIGEvYmluL2RpZy9kaWdob3N0LmMKLSsrKyBiL2Jpbi9kaWcvZGlnaG9zdC5jCi1AQCAtMzQ1OCw2ICszNDU4LDcgQEAgcHJvY2Vzc19vcHQoZGlnX2xvb2t1cF90ICpsLCBkbnNfbWVzc2FnZV90ICptc2cpIHsKLSAJaXNjX2J1ZmZlcl90IG9wdGJ1ZjsKLSAJaXNjX3VpbnQxNl90IG9wdGNvZGUsIG9wdGxlbjsKLSAJZG5zX3JkYXRhc2V0X3QgKm9wdCA9IG1zZy0+b3B0OwotKwlpc2NfYm9vbGVhbl90IHNlZW5fY29va2llID0gSVNDX0ZBTFNFOwotIAotIAlyZXN1bHQgPSBkbnNfcmRhdGFzZXRfZmlyc3Qob3B0KTsKLSAJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKSB7Ci1AQCAtMzQ3MCw3ICszNDcxLDE1IEBAIHByb2Nlc3Nfb3B0KGRpZ19sb29rdXBfdCAqbCwgZG5zX21lc3NhZ2VfdCAqbXNnKSB7Ci0gCQkJb3B0bGVuID0gaXNjX2J1ZmZlcl9nZXR1aW50MTYoJm9wdGJ1Zik7Ci0gCQkJc3dpdGNoIChvcHRjb2RlKSB7Ci0gCQkJY2FzZSBETlNfT1BUX0NPT0tJRToKLSsJCQkJLyoKLSsJCQkJICogT25seSBwcm9jZXNzIHRoZSBmaXJzdCBjb29raWUgb3B0aW9uLgotKwkJCQkgKi8KLSsJCQkJaWYgKHNlZW5fY29va2llKSB7Ci0rCQkJCQlpc2NfYnVmZmVyX2ZvcndhcmQoJm9wdGJ1Ziwgb3B0bGVuKTsKLSsJCQkJCWJyZWFrOwotKwkJCQl9Ci0gCQkJCXByb2Nlc3Nfc2l0KGwsIG1zZywgJm9wdGJ1Ziwgb3B0bGVuKTsKLSsJCQkJc2Vlbl9jb29raWUgPSBJU0NfVFJVRTsKLSAJCQkJYnJlYWs7Ci0gCQkJZGVmYXVsdDoKLSAJCQkJaXNjX2J1ZmZlcl9mb3J3YXJkKCZvcHRidWYsIG9wdGxlbik7Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCA2ODMzMDVjLi4wZDczMzFhIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC0xMjAsNyArMTIwLDEwIEBACi0gICovCi0gI2VuZGlmCi0gCi0tI2RlZmluZSBTSVRfU0laRSAyNFUgLyogOCArIDQgKyA0ICsgOCAqLwotKyNkZWZpbmUgQ09PS0lFX1NJWkUgMjRVIC8qIDggKyA0ICsgNCArIDggKi8KLSsKLSsjZGVmaW5lIFdBTlROU0lEKHgpICgoKHgpLT5hdHRyaWJ1dGVzICYgTlNfQ0xJRU5UQVRUUl9XQU5UTlNJRCkgIT0gMCkKLSsjZGVmaW5lIFdBTlRFWFBJUkUoeCkgKCgoeCktPmF0dHJpYnV0ZXMgJiBOU19DTElFTlRBVFRSX1dBTlRFWFBJUkUpICE9IDApCi0gCi0gLyolIG5hbWVzZXJ2ZXIgY2xpZW50IG1hbmFnZXIgc3RydWN0dXJlICovCi0gc3RydWN0IG5zX2NsaWVudG1nciB7Ci1AQCAtMTM5NSw3ICsxMzk4LDcgQEAgbnNfY2xpZW50X2FkZG9wdChuc19jbGllbnRfdCAqY2xpZW50LCBkbnNfbWVzc2FnZV90ICptZXNzYWdlLAotIHsKLSAJY2hhciBuc2lkW0JVRlNJWl0sICpuc2lkcDsKLSAjaWZkZWYgSVNDX1BMQVRGT1JNX1VTRVNJVAotLQl1bnNpZ25lZCBjaGFyIHNpdFtTSVRfU0laRV07Ci0rCXVuc2lnbmVkIGNoYXIgc2l0W0NPT0tJRV9TSVpFXTsKLSAjZW5kaWYKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJZG5zX3ZpZXdfdCAqdmlldzsKLUBAIC0xNDIwLDcgKzE0MjMsNyBAQCBuc19jbGllbnRfYWRkb3B0KG5zX2NsaWVudF90ICpjbGllbnQsIGRuc19tZXNzYWdlX3QgKm1lc3NhZ2UsCi0gCWZsYWdzID0gY2xpZW50LT5leHRmbGFncyAmIEROU19NRVNTQUdFRVhURkxBR19SRVBMWVBSRVNFUlZFOwotIAotIAkvKiBTZXQgRUROUyBvcHRpb25zIGlmIGFwcGxpY2FibGUgKi8KLS0JaWYgKChjbGllbnQtPmF0dHJpYnV0ZXMgJiBOU19DTElFTlRBVFRSX1dBTlROU0lEKSAhPSAwICYmCi0rCWlmIChXQU5UTlNJRChjbGllbnQpICYmCi0gCSAgICAobnNfZ19zZXJ2ZXItPnNlcnZlcl9pZCAhPSBOVUxMIHx8Ci0gCSAgICAgbnNfZ19zZXJ2ZXItPnNlcnZlcl91c2Vob3N0bmFtZSkpIHsKLSAJCWlmIChuc19nX3NlcnZlci0+c2VydmVyX3VzZWhvc3RuYW1lKSB7Ci1AQCAtMTQ1Myw3ICsxNDU2LDcgQEAgbnNfY2xpZW50X2FkZG9wdChuc19jbGllbnRfdCAqY2xpZW50LCBkbnNfbWVzc2FnZV90ICptZXNzYWdlLAotIAotIAkJSU5TSVNUKGNvdW50IDwgRE5TX0VETlNPUFRJT05TKTsKLSAJCWVkbnNvcHRzW2NvdW50XS5jb2RlID0gRE5TX09QVF9DT09LSUU7Ci0tCQllZG5zb3B0c1tjb3VudF0ubGVuZ3RoID0gU0lUX1NJWkU7Ci0rCQllZG5zb3B0c1tjb3VudF0ubGVuZ3RoID0gQ09PS0lFX1NJWkU7Ci0gCQllZG5zb3B0c1tjb3VudF0udmFsdWUgPSBzaXQ7Ci0gCQljb3VudCsrOwotIAl9Ci1AQCAtMTY2MSwxOSArMTY2NCwyNiBAQCBjb21wdXRlX3NpdChuc19jbGllbnRfdCAqY2xpZW50LCBpc2NfdWludDMyX3Qgd2hlbiwgaXNjX3VpbnQzMl90IG5vbmNlLAotIAotIHN0YXRpYyB2b2lkCi0gcHJvY2Vzc19zaXQobnNfY2xpZW50X3QgKmNsaWVudCwgaXNjX2J1ZmZlcl90ICpidWYsIHNpemVfdCBvcHRsZW4pIHsKLS0JdW5zaWduZWQgY2hhciBkYnVmW1NJVF9TSVpFXTsKLSsJdW5zaWduZWQgY2hhciBkYnVmW0NPT0tJRV9TSVpFXTsKLSAJdW5zaWduZWQgY2hhciAqb2xkOwotIAlpc2Nfc3RkdGltZV90IG5vdzsKLSAJaXNjX3VpbnQzMl90IHdoZW47Ci0gCWlzY191aW50MzJfdCBub25jZTsKLSAJaXNjX2J1ZmZlcl90IGRiOwotIAotKwkvKgotKwkgKiBJZiB3ZSBoYXZlIGFscmVhZHkgc2VlbiBhIEVDUyBvcHRpb24gc2tpcCB0aGlzIEVDUyBvcHRpb24uCi0rCSAqLwotKwlpZiAoKGNsaWVudC0+YXR0cmlidXRlcyAmIE5TX0NMSUVOVEFUVFJfV0FOVFNJVCkgIT0gMCkgewotKwkJaXNjX2J1ZmZlcl9mb3J3YXJkKGJ1Ziwgb3B0bGVuKTsKLSsJCXJldHVybjsKLSsJfQotIAljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9XQU5UU0lUOwotIAotIAlpc2Nfc3RhdHNfaW5jcmVtZW50KG5zX2dfc2VydmVyLT5uc3N0YXRzLAotIAkJCSAgICBkbnNfbnNzdGF0c2NvdW50ZXJfc2l0b3B0KTsKLSAKLS0JaWYgKG9wdGxlbiAhPSBTSVRfU0laRSkgewotKwlpZiAob3B0bGVuICE9IENPT0tJRV9TSVpFKSB7Ci0gCQkvKgotIAkJICogTm90IG91ciB0b2tlbi4KLSAJCSAqLwotQEAgLTE3MTcsMTQgKzE3MjcsMTMgQEAgcHJvY2Vzc19zaXQobnNfY2xpZW50X3QgKmNsaWVudCwgaXNjX2J1ZmZlcl90ICpidWYsIHNpemVfdCBvcHRsZW4pIHsKLSAJaXNjX2J1ZmZlcl9pbml0KCZkYiwgZGJ1Ziwgc2l6ZW9mKGRidWYpKTsKLSAJY29tcHV0ZV9zaXQoY2xpZW50LCB3aGVuLCBub25jZSwgJmRiKTsKLSAKLS0JaWYgKCFpc2Nfc2FmZV9tZW1lcXVhbChvbGQsIGRidWYsIFNJVF9TSVpFKSkgewotKwlpZiAoIWlzY19zYWZlX21lbWVxdWFsKG9sZCwgZGJ1ZiwgQ09PS0lFX1NJWkUpKSB7Ci0gCQlpc2Nfc3RhdHNfaW5jcmVtZW50KG5zX2dfc2VydmVyLT5uc3N0YXRzLAotIAkJCQkgICAgZG5zX25zc3RhdHNjb3VudGVyX3NpdG5vbWF0Y2gpOwotIAkJcmV0dXJuOwotIAl9Ci0gCWlzY19zdGF0c19pbmNyZW1lbnQobnNfZ19zZXJ2ZXItPm5zc3RhdHMsCi0gCQkJICAgIGRuc19uc3N0YXRzY291bnRlcl9zaXRtYXRjaCk7Ci0tCi0gCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX0hBVkVTSVQ7Ci0gfQotICNlbmRpZgotQEAgLTE3ODMsNyArMTc5Miw5IEBAIHByb2Nlc3Nfb3B0KG5zX2NsaWVudF90ICpjbGllbnQsIGRuc19yZGF0YXNldF90ICpvcHQpIHsKLSAJCQlvcHRsZW4gPSBpc2NfYnVmZmVyX2dldHVpbnQxNigmb3B0YnVmKTsKLSAJCQlzd2l0Y2ggKG9wdGNvZGUpIHsKLSAJCQljYXNlIEROU19PUFRfTlNJRDoKLS0JCQkJaXNjX3N0YXRzX2luY3JlbWVudChuc19nX3NlcnZlci0+bnNzdGF0cywKLSsJCQkJaWYgKCFXQU5UTlNJRChjbGllbnQpKQotKwkJCQkJaXNjX3N0YXRzX2luY3JlbWVudCgKLSsJCQkJCQkgICAgbnNfZ19zZXJ2ZXItPm5zc3RhdHMsCi0gCQkJCQkJICAgIGRuc19uc3N0YXRzY291bnRlcl9uc2lkb3B0KTsKLSAJCQkJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfV0FOVE5TSUQ7Ci0gCQkJCWlzY19idWZmZXJfZm9yd2FyZCgmb3B0YnVmLCBvcHRsZW4pOwotQEAgLTE3OTQsNyArMTgwNSw5IEBAIHByb2Nlc3Nfb3B0KG5zX2NsaWVudF90ICpjbGllbnQsIGRuc19yZGF0YXNldF90ICpvcHQpIHsKLSAJCQkJYnJlYWs7Ci0gI2VuZGlmCi0gCQkJY2FzZSBETlNfT1BUX0VYUElSRToKLS0JCQkJaXNjX3N0YXRzX2luY3JlbWVudChuc19nX3NlcnZlci0+bnNzdGF0cywKLSsJCQkJaWYgKCFXQU5URVhQSVJFKGNsaWVudCkpCi0rCQkJCQlpc2Nfc3RhdHNfaW5jcmVtZW50KAotKwkJCQkJCSAgbnNfZ19zZXJ2ZXItPm5zc3RhdHMsCi0gCQkJCQkJICBkbnNfbnNzdGF0c2NvdW50ZXJfZXhwaXJlb3B0KTsKLSAJCQkJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfV0FOVEVYUElSRTsKLSAJCQkJaXNjX2J1ZmZlcl9mb3J3YXJkKCZvcHRidWYsIG9wdGxlbik7Ci1kaWZmIC0tZ2l0IGEvZG9jL2FybS9ub3Rlcy54bWwgYi9kb2MvYXJtL25vdGVzLnhtbAotaW5kZXggZWJmNGY1NS4uMDk1ZWI1YiAxMDA2NDQKLS0tLSBhL2RvYy9hcm0vbm90ZXMueG1sCi0rKysgYi9kb2MvYXJtL25vdGVzLnhtbAotQEAgLTUxLDYgKzUxLDEzIEBACi0gICAgIDx0aXRsZT5TZWN1cml0eSBGaXhlczwvdGl0bGU+Ci0gICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgPGxpc3RpdGVtPgotKyAgICAgICA8cGFyYT4KLSsgICAgICAgICBEdXBsaWNhdGUgRUROUyBDT09LSUUgb3B0aW9ucyBpbiBhIHJlc3BvbnNlIGNvdWxkIHRyaWdnZXIKLSsgICAgICAgICBhbiBhc3NlcnRpb24gZmFpbHVyZS4gVGhpcyBmbGF3IGlzIGRpc2Nsb3NlZCBpbiBDVkUtMjAxNi0yMDg4LgotKyAgICAgICAgIFtSVCAjNDE4MDldCi0rICAgICAgIDwvcGFyYT4KLSsgICAgICA8L2xpc3RpdGVtPgotKyAgICAgIDxsaXN0aXRlbT4KLSAJPHBhcmE+Ci0gCSAgU3BlY2lmaWMgQVBMIGRhdGEgY291bGQgdHJpZ2dlciBhbiBJTlNJU1QuICBUaGlzIGZsYXcKLSAJICB3YXMgZGlzY292ZXJlZCBieSBCcmlhbiBNaXRjaGVsbCBhbmQgaXMgZGlzY2xvc2VkIGluCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9yZXNvbHZlci5jIGIvbGliL2Rucy9yZXNvbHZlci5jCi1pbmRleCBhNzk3ZTNmLi5iYTFhZTIzIDEwMDY0NAotLS0tIGEvbGliL2Rucy9yZXNvbHZlci5jCi0rKysgYi9saWIvZG5zL3Jlc29sdmVyLmMKLUBAIC03NTAyLDcgKzc1MDIsOSBAQCBwcm9jZXNzX29wdChyZXNxdWVyeV90ICpxdWVyeSwgZG5zX3JkYXRhc2V0X3QgKm9wdCkgewotIAl1bnNpZ25lZCBjaGFyICpzaXQ7Ci0gCWRuc19hZGJhZGRyaW5mb190ICphZGRyaW5mbzsKLSAJdW5zaWduZWQgY2hhciBjb29raWVbOF07Ci0rCWlzY19ib29sZWFuX3Qgc2Vlbl9jb29raWUgPSBJU0NfRkFMU0U7Ci0gI2VuZGlmCi0rCWlzY19ib29sZWFuX3Qgc2Vlbl9uc2lkID0gSVNDX0ZBTFNFOwotIAotIAlyZXN1bHQgPSBkbnNfcmRhdGFzZXRfZmlyc3Qob3B0KTsKLSAJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKSB7Ci1AQCAtNzUxNiwxNCArNzUxOCwyMyBAQCBwcm9jZXNzX29wdChyZXNxdWVyeV90ICpxdWVyeSwgZG5zX3JkYXRhc2V0X3QgKm9wdCkgewotIAkJCUlOU0lTVChvcHRsZW4gPD0gaXNjX2J1ZmZlcl9yZW1haW5pbmdsZW5ndGgoJm9wdGJ1ZikpOwotIAkJCXN3aXRjaCAob3B0Y29kZSkgewotIAkJCWNhc2UgRE5TX09QVF9OU0lEOgotLQkJCQlpZiAocXVlcnktPm9wdGlvbnMgJiBETlNfRkVUQ0hPUFRfV0FOVE5TSUQpCi0rCQkJCWlmICghc2Vlbl9uc2lkICYmCi0rCQkJCSAgICBxdWVyeS0+b3B0aW9ucyAmIEROU19GRVRDSE9QVF9XQU5UTlNJRCkKLSAJCQkJCWxvZ19uc2lkKCZvcHRidWYsIG9wdGxlbiwgcXVlcnksCi0gCQkJCQkJIElTQ19MT0dfREVCVUcoMyksCi0gCQkJCQkJIHF1ZXJ5LT5mY3R4LT5yZXMtPm1jdHgpOwotIAkJCQlpc2NfYnVmZmVyX2ZvcndhcmQoJm9wdGJ1Ziwgb3B0bGVuKTsKLSsJCQkJc2Vlbl9uc2lkID0gSVNDX1RSVUU7Ci0gCQkJCWJyZWFrOwotICNpZmRlZiBJU0NfUExBVEZPUk1fVVNFU0lUCi0gCQkJY2FzZSBETlNfT1BUX0NPT0tJRToKLSsJCQkJLyoKLSsJCQkJICogT25seSBwcm9jZXNzIHRoZSBmaXJzdCBjb29raWUgb3B0aW9uLgotKwkJCQkgKi8KLSsJCQkJaWYgKHNlZW5fY29va2llKSB7Ci0rCQkJCQlpc2NfYnVmZmVyX2ZvcndhcmQoJm9wdGJ1Ziwgb3B0bGVuKTsKLSsJCQkJCWJyZWFrOwotKwkJCQl9Ci0gCQkJCXNpdCA9IGlzY19idWZmZXJfY3VycmVudCgmb3B0YnVmKTsKLSAJCQkJY29tcHV0ZV9jYyhxdWVyeSwgY29va2llLCBzaXplb2YoY29va2llKSk7Ci0gCQkJCUlOU0lTVChxdWVyeS0+ZmN0eC0+cm1lc3NhZ2UtPnNpdGJhZCA9PSAwICYmCi1AQCAtNzU0MSw2ICs3NTUyLDcgQEAgcHJvY2Vzc19vcHQocmVzcXVlcnlfdCAqcXVlcnksIGRuc19yZGF0YXNldF90ICpvcHQpIHsKLSAJCQkJaXNjX2J1ZmZlcl9mb3J3YXJkKCZvcHRidWYsIG9wdGxlbik7Ci0gCQkJCWluY19zdGF0cyhxdWVyeS0+ZmN0eC0+cmVzLAotIAkJCQkJICBkbnNfcmVzc3RhdHNjb3VudGVyX3NpdGluKTsKLSsJCQkJc2Vlbl9jb29raWUgPSBJU0NfVFJVRTsKLSAJCQkJYnJlYWs7Ci0gI2VuZGlmCi0gCQkJZGVmYXVsdDoKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTI3NzUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjc3NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM5MzA2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjc3NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLUZyb20gOWQ4YWJhOGE3Nzc4NzIxYWUyY2VlNmU0NjcwYThlNmJlNjU5MGIwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgQW5kcmV3cyA8bWFya2FAaXNjLm9yZz4KLURhdGU6IFdlZCwgMTIgT2N0IDIwMTYgMTk6NTI6NTkgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0KLTQ0MDYuICAgW3NlY3VyaXR5XSAgICAgIGdldHJyc2V0YnluYW1lIHdpdGggYSBub24gYWJzb2x1dGUgbmFtZSBjb3VsZAotICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciBhbiBpbmZpbml0ZSByZWN1cnNpb24gYnVnIGluIGx3cmVzZAotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5hbWVkIHdpdGggbHdyZXMgY29uZmlndXJlZCBpZiB3aGVuIGNvbWJpbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEgc2VhcmNoIGxpc3QgZW50cnkgdGhlIHJlc3VsdGluZyBuYW1lIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICB0b28gbG9uZy4gKENWRS0yMDE2LTI3NzUpIFtSVCAjNDI2OTRdCi0KLUJhY2twb3J0IGNvbW1pdCAzOGNjMmQxNGUyMThlNTM2ZTAxMDJmYTcwZGVlZjk5NDYxMzU0MjMyIGZyb20gdGhlCi12OS4xMS4wX3BhdGNoIGJyYW5jaC4KLQotQ1ZFOiBDVkUtMjAxNi0yNzc1Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IHpoZW5ncnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+Ci0KLS0tLQotIENIQU5HRVMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCi0gYmluL25hbWVkL2x3ZGdyYm4uYyAgICAgICAgICAgICAgfCAxNiArKysrKysrKysrLS0tLS0tCi0gYmluL3Rlc3RzL3N5c3RlbS9sd3Jlc2QvbHd0ZXN0LmMgfCAgOSArKysrKysrKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwotaW5kZXggZDJlMzM2MC4uZDBhOWQxMiAxMDA2NDQKLS0tLSBhL0NIQU5HRVMKLSsrKyBiL0NIQU5HRVMKLUBAIC0xLDMgKzEsOSBAQAotKzQ0MDYuICAgW3NlY3VyaXR5XSAgICAgIGdldHJyc2V0YnluYW1lIHdpdGggYSBub24gYWJzb2x1dGUgbmFtZSBjb3VsZAotKyAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGJ1ZyBpbiBsd3Jlc2QKLSsgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmFtZWQgd2l0aCBsd3JlcyBjb25maWd1cmVkIGlmIHdoZW4gY29tYmluZWQKLSsgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEgc2VhcmNoIGxpc3QgZW50cnkgdGhlIHJlc3VsdGluZyBuYW1lIGlzCi0rICAgICAgICAgICAgICAgICAgICAgICAgdG9vIGxvbmcuIChDVkUtMjAxNi0yNzc1KSBbUlQgIzQyNjk0XQotKwotIDQzMjIuICBbc2VjdXJpdHldICAgICAgRHVwbGljYXRlIEVETlMgQ09PS0lFIG9wdGlvbnMgaW4gYSByZXNwb25zZSBjb3VsZAotICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciBhbiBhc3NlcnRpb24gZmFpbHVyZS4gKENWRS0yMDE2LTIwODgpCi0gICAgICAgICAgICAgICAgICAgICAgICBbUlQgIzQxODA5XQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9sd2RncmJuLmMgYi9iaW4vbmFtZWQvbHdkZ3Jibi5jCi1pbmRleCAzZTdiMTViLi5lMWU5YWRjIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2x3ZGdyYm4uYwotKysrIGIvYmluL25hbWVkL2x3ZGdyYm4uYwotQEAgLTQwMywxNCArNDAzLDE4IEBAIHN0YXJ0X2xvb2t1cChuc19sd2RjbGllbnRfdCAqY2xpZW50KSB7Ci0gCUlOU0lTVChjbGllbnQtPmxvb2t1cCA9PSBOVUxMKTsKLSAKLSAJZG5zX2ZpeGVkbmFtZV9pbml0KCZhYnNuYW1lKTsKLS0JcmVzdWx0ID0gbnNfbHdzZWFyY2hjdHhfY3VycmVudCgmY2xpZW50LT5zZWFyY2hjdHgsCi0tCQkJCQlkbnNfZml4ZWRuYW1lX25hbWUoJmFic25hbWUpKTsKLSsKLSAJLyoKLS0JICogVGhpcyB3aWxsIHJldHVybiBmYWlsdXJlIGlmIHJlbGF0aXZlIG5hbWUgKyBzdWZmaXggaXMgdG9vIGxvbmcuCi0tCSAqIEluIHRoaXMgY2FzZSwganVzdCBnbyBvbiB0byB0aGUgbmV4dCBlbnRyeSBpbiB0aGUgc2VhcmNoIHBhdGguCi0rICAgICAgICAgKiBQZXJmb3JtIHNlYXJjaCBhY3Jvc3MgYWxsIHNlYXJjaCBkb21haW5zIHVudGlsIHN1Y2Nlc3MKLSsgICAgICAgICAqIGlzIHJldHVybmVkLiBSZXR1cm4gaW4gY2FzZSBvZiBmYWlsdXJlLgotIAkgKi8KLS0JaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotLQkJc3RhcnRfbG9va3VwKGNsaWVudCk7Ci0rICAgICAgICB3aGlsZSAobnNfbHdzZWFyY2hjdHhfY3VycmVudCgmY2xpZW50LT5zZWFyY2hjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgZG5zX2ZpeGVkbmFtZV9uYW1lKCZhYnNuYW1lKSkgIT0gSVNDX1JfU1VDQ0VTUykgewotKyAgICAgICAgICAgICAgICBpZiAobnNfbHdzZWFyY2hjdHhfbmV4dCgmY2xpZW50LT5zZWFyY2hjdHgpICE9IElTQ19SX1NVQ0NFU1MpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBuc19sd2RjbGllbnRfZXJyb3Jwa3RzZW5kKGNsaWVudCwgTFdSRVNfUl9GQUlMVVJFKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSAKLSAJcmVzdWx0ID0gZG5zX2xvb2t1cF9jcmVhdGUoY20tPm1jdHgsCi0gCQkJCSAgIGRuc19maXhlZG5hbWVfbmFtZSgmYWJzbmFtZSksCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS9sd3Jlc2QvbHd0ZXN0LmMgYi9iaW4vdGVzdHMvc3lzdGVtL2x3cmVzZC9sd3Rlc3QuYwotaW5kZXggYWQ5YjU1MS4uM2ViNGE2NiAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0vbHdyZXNkL2x3dGVzdC5jCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL2x3cmVzZC9sd3Rlc3QuYwotQEAgLTc2OCw3ICs3NjgsMTQgQEAgbWFpbih2b2lkKSB7Ci0gCXRlc3RfZ2V0cnJzZXRieW5hbWUoImUuZXhhbXBsZTEuIiwgMSwgMiwgMSwgMSwgMSk7Ci0gCXRlc3RfZ2V0cnJzZXRieW5hbWUoImUuZXhhbXBsZTEuIiwgMSwgNDYsIDIsIDAsIDEpOwotIAl0ZXN0X2dldHJyc2V0YnluYW1lKCIiLCAxLCAxLCAwLCAwLCAwKTsKLS0KLSsgICAgICAgIHRlc3RfZ2V0cnJzZXRieW5hbWUoIjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LiIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LiIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyMzQ1Njc4OSIsIDEsIDEsIDAsIDAsIDApOwotKyAKLSAJaWYgKGZhaWxzID09IDApCi0gCQlwcmludGYoIkk6b2tcbiIpOwotIAlyZXR1cm4gKGZhaWxzKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTI3NzYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjc3Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM4YmY2MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjc3Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1Gcm9tIDExNzExMTE2NTcwODE5NzA1ODVmOWYwZTAzYjQ3NjM1OGMzM2E2YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+Ci1EYXRlOiBXZWQsIDEyIE9jdCAyMDE2IDIwOjM2OjUyICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIAotNDQ2Ny4gICBbc2VjdXJpdHldICAgICAgSXQgd2FzIHBvc3NpYmxlIHRvIHRyaWdnZXIgYW4gYXNzZXJ0aW9uIHdoZW4gCi0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcgYSBtZXNzYWdlLiAoQ1ZFLTIwMTYtMjc3NikgW1JUICM0MzEzOV0KLQotQmFja3BvcnQgY29tbWl0IDJiZDA5MjJjZjk5NWI5YWMyMDVmYzgzYmFmN2UyMjBiOTVjNmJmMTIgZnJvbSB0aGUKLXY5LjExLjBfcGF0Y2ggYnJhbmNoLgotCi1DVkU6IENWRS0yMDE2LTI3NzYKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogemhlbmdydW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KLQotLS0tCi0gQ0hBTkdFUyAgICAgICAgICAgfCAgMyArKysKLSBsaWIvZG5zL21lc3NhZ2UuYyB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwotaW5kZXggZDBhOWQxMi4uNWM4YzYxYSAxMDA2NDQKLS0tLSBhL0NIQU5HRVMKLSsrKyBiL0NIQU5HRVMKLUBAIC0xLDMgKzEsNiBAQAotKzQ0NjcuICAgW3NlY3VyaXR5XSAgICAgIEl0IHdhcyBwb3NzaWJsZSB0byB0cmlnZ2VyIGFuIGFzc2VydGlvbiB3aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyaW5nIGEgbWVzc2FnZS4gKENWRS0yMDE2LTI3NzYpIFtSVCAjNDMxMzldCi0rCi0gNDQwNi4gICBbc2VjdXJpdHldICAgICAgZ2V0cnJzZXRieW5hbWUgd2l0aCBhIG5vbiBhYnNvbHV0ZSBuYW1lIGNvdWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciBhbiBpbmZpbml0ZSByZWN1cnNpb24gYnVnIGluIGx3cmVzZAotICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuYW1lZCB3aXRoIGx3cmVzIGNvbmZpZ3VyZWQgaWYgd2hlbiBjb21iaW5lZAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvbWVzc2FnZS5jIGIvbGliL2Rucy9tZXNzYWdlLmMKLWluZGV4IDZiNWI0YmIuLmI3NGRjODEgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL21lc3NhZ2UuYwotKysrIGIvbGliL2Rucy9tZXNzYWdlLmMKLUBAIC0xNzU0LDcgKzE3NTQsNyBAQCBkbnNfbWVzc2FnZV9yZW5kZXJiZWdpbihkbnNfbWVzc2FnZV90ICptc2csIGRuc19jb21wcmVzc190ICpjY3R4LAotIAlpZiAoci5sZW5ndGggPCBETlNfTUVTU0FHRV9IRUFERVJMRU4pCi0gCQlyZXR1cm4gKElTQ19SX05PU1BBQ0UpOwotIAotLQlpZiAoci5sZW5ndGggPCBtc2ctPnJlc2VydmVkKQotKyAgICAgICAgaWYgKHIubGVuZ3RoIC0gRE5TX01FU1NBR0VfSEVBREVSTEVOIDwgbXNnLT5yZXNlcnZlZCkKLSAJCXJldHVybiAoSVNDX1JfTk9TUEFDRSk7Ci0gCi0gCS8qCi1AQCAtMTg5NSw4ICsxODk1LDI5IEBAIG5vcmVuZGVyX3JkYXRhc2V0KGNvbnN0IGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgdW5zaWduZWQgaW50IG9wdGlvbnMsCi0gCi0gCXJldHVybiAoSVNDX1RSVUUpOwotIH0KLS0KLSAjZW5kaWYKLSsKLStzdGF0aWMgaXNjX3Jlc3VsdF90Ci0rcmVuZGVyc2V0KGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgZG5zX25hbWVfdCAqb3duZXJfbmFtZSwKLSsgICAgICAgICBkbnNfY29tcHJlc3NfdCAqY2N0eCwgaXNjX2J1ZmZlcl90ICp0YXJnZXQsCi0rICAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkLCB1bnNpZ25lZCBpbnQgb3B0aW9ucywgdW5zaWduZWQgaW50ICpjb3VudHApCi0rewotKyAgICAgICBpc2NfcmVzdWx0X3QgcmVzdWx0OwotKwotKyAgICAgICAvKgotKyAgICAgICAgKiBTaHJpbmsgdGhlIHNwYWNlIGluIHRoZSBidWZmZXIgYnkgdGhlIHJlc2VydmVkIGFtb3VudC4KLSsgICAgICAgICovCi0rICAgICAgIGlmICh0YXJnZXQtPmxlbmd0aCAtIHRhcmdldC0+dXNlZCA8IHJlc2VydmVkKQotKyAgICAgICAgICAgICAgIHJldHVybiAoSVNDX1JfTk9TUEFDRSk7Ci0rCi0rICAgICAgIHRhcmdldC0+bGVuZ3RoIC09IHJlc2VydmVkOwotKyAgICAgICByZXN1bHQgPSBkbnNfcmRhdGFzZXRfdG93aXJlKHJkYXRhc2V0LCBvd25lcl9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjdHgsIHRhcmdldCwgb3B0aW9ucywgY291bnRwKTsKLSsgICAgICAgdGFyZ2V0LT5sZW5ndGggKz0gcmVzZXJ2ZWQ7Ci0rCi0rICAgICAgIHJldHVybiAocmVzdWx0KTsKLSt9Ci0rCi0gaXNjX3Jlc3VsdF90Ci0gZG5zX21lc3NhZ2VfcmVuZGVyc2VjdGlvbihkbnNfbWVzc2FnZV90ICptc2csIGRuc19zZWN0aW9uX3Qgc2VjdGlvbmlkLAotIAkJCSAgdW5zaWduZWQgaW50IG9wdGlvbnMpCi1AQCAtMTkzOSw2ICsxOTYwLDggQEAgZG5zX21lc3NhZ2VfcmVuZGVyc2VjdGlvbihkbnNfbWVzc2FnZV90ICptc2csIGRuc19zZWN0aW9uX3Qgc2VjdGlvbmlkLAotIAkvKgotIAkgKiBTaHJpbmsgdGhlIHNwYWNlIGluIHRoZSBidWZmZXIgYnkgdGhlIHJlc2VydmVkIGFtb3VudC4KLSAJICovCi0rICAgICAgICBpZiAobXNnLT5idWZmZXItPmxlbmd0aCAtIG1zZy0+YnVmZmVyLT51c2VkIDwgbXNnLT5yZXNlcnZlZCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIChJU0NfUl9OT1NQQUNFKTsKLSAJbXNnLT5idWZmZXItPmxlbmd0aCAtPSBtc2ctPnJlc2VydmVkOwotIAotIAl0b3RhbCA9IDA7Ci1AQCAtMjIxNCw5ICsyMjM3LDggQEAgZG5zX21lc3NhZ2VfcmVuZGVyZW5kKGRuc19tZXNzYWdlX3QgKm1zZykgewotIAkJICogUmVuZGVyLgotIAkJICovCi0gCQljb3VudCA9IDA7Ci0tCQlyZXN1bHQgPSBkbnNfcmRhdGFzZXRfdG93aXJlKG1zZy0+b3B0LCBkbnNfcm9vdG5hbWUsCi0tCQkJCQkgICAgIG1zZy0+Y2N0eCwgbXNnLT5idWZmZXIsIDAsCi0tCQkJCQkgICAgICZjb3VudCk7Ci0rICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlbmRlcnNldChtc2ctPm9wdCwgZG5zX3Jvb3RuYW1lLCBtc2ctPmNjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ctPmJ1ZmZlciwgbXNnLT5yZXNlcnZlZCwgMCwgJmNvdW50KTsKLSAJCW1zZy0+Y291bnRzW0ROU19TRUNUSU9OX0FERElUSU9OQUxdICs9IGNvdW50OwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCXJldHVybiAocmVzdWx0KTsKLUBAIC0yMjMyLDkgKzIyNTQsOCBAQCBkbnNfbWVzc2FnZV9yZW5kZXJlbmQoZG5zX21lc3NhZ2VfdCAqbXNnKSB7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJcmV0dXJuIChyZXN1bHQpOwotIAkJY291bnQgPSAwOwotLQkJcmVzdWx0ID0gZG5zX3JkYXRhc2V0X3Rvd2lyZShtc2ctPnRzaWcsIG1zZy0+dHNpZ25hbWUsCi0tCQkJCQkgICAgIG1zZy0+Y2N0eCwgbXNnLT5idWZmZXIsIDAsCi0tCQkJCQkgICAgICZjb3VudCk7Ci0rICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlbmRlcnNldChtc2ctPnRzaWcsIG1zZy0+dHNpZ25hbWUsIG1zZy0+Y2N0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy0+YnVmZmVyLCBtc2ctPnJlc2VydmVkLCAwLCAmY291bnQpOwotIAkJbXNnLT5jb3VudHNbRE5TX1NFQ1RJT05fQURESVRJT05BTF0gKz0gY291bnQ7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJcmV0dXJuIChyZXN1bHQpOwotQEAgLTIyNTUsOSArMjI3Niw4IEBAIGRuc19tZXNzYWdlX3JlbmRlcmVuZChkbnNfbWVzc2FnZV90ICptc2cpIHsKLSAJCSAqIHRoZSBvd25lciBuYW1lIG9mIGEgU0lHKDApIGlzIGlycmVsZXZhbnQsIGFuZCB3aWxsIG5vdAotIAkJICogYmUgc2V0IGluIGEgbWVzc2FnZSBiZWluZyByZW5kZXJlZC4KLSAJCSAqLwotLQkJcmVzdWx0ID0gZG5zX3JkYXRhc2V0X3Rvd2lyZShtc2ctPnNpZzAsIGRuc19yb290bmFtZSwKLS0JCQkJCSAgICAgbXNnLT5jY3R4LCBtc2ctPmJ1ZmZlciwgMCwKLS0JCQkJCSAgICAgJmNvdW50KTsKLSsgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVuZGVyc2V0KG1zZy0+c2lnMCwgZG5zX3Jvb3RuYW1lLCBtc2ctPmNjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ctPmJ1ZmZlciwgbXNnLT5yZXNlcnZlZCwgMCwgJmNvdW50KTsKLSAJCW1zZy0+Y291bnRzW0ROU19TRUNUSU9OX0FERElUSU9OQUxdICs9IGNvdW50OwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCXJldHVybiAocmVzdWx0KTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTYxNzAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtNjE3MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzViYzIxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtNjE3MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOTAgKzAsMCBAQAotRnJvbSAxYmJjZmUyZmM4NGY1N2IxZTRlMDc1ZmIzYmMyYTFkZDBhM2E4NTFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBbmRyZXdzIDxtYXJrYUBpc2Mub3JnPgotRGF0ZTogV2VkLCAyIE5vdiAyMDE2IDE3OjMxOjI3ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIDQ1MDQuIFtzZWN1cml0eV0gQWxsb3cgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlY29yZHMgaW4gYQotIHpvbmUgdG8gYmUgc3BlY2lmaWVkLiBUaGlzIHByb3ZpZGVzIGEgY29udHJvbCBmb3IgaXNzdWVzIHJhaXNlZCBpbgotIENWRS0yMDE2LTYxNzAuIFtSVCAjNDIxNDNdCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDVmODQxMmE0Y2I1ZWUxNGEwZThjZGRkNDEwNzg1NGI0MGVlMzI5MWUpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL3NvdXJjZS5pc2Mub3JnL2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWJpbmQ5LmdpdDthPWNvbW1pdDtoPTFiYmNmZTJmYzg0ZjU3YjFlNGUwNzVmYjNiYzJhMWRkMGEzYTg1MWZdCi0KLUNWRTogQ1ZFLTIwMTYtNjE3MAotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDSEFOR0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwotIGJpbi9uYW1lZC9jb25maWcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gYmluL25hbWVkL25hbWVkLmNvbmYuZG9jYm9vayAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKLSBiaW4vbmFtZWQvdXBkYXRlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKysrCi0gYmluL25hbWVkL3pvbmVjb25mLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsrCi0gYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9jbGVhbi5zaCAgICAgICAgICAgICAgIHwgICAxICsKLSBiaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy9uYW1lZC5jb25mICAgICAgICAgfCAgIDcgKysKLSBiaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy90b28tYmlnLnRlc3QuZGIuaW4gfCAgMTAgKysKLSBiaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3NldHVwLnNoICAgICAgICAgICAgICAgfCAgIDIgKwotIGJpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvdGVzdHMuc2ggICAgICAgICAgICAgICB8ICAxNSArKysKLSBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvY2xlYW4uc2ggICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIGJpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvYXhmci10b28tYmlnLmRiICAgICAgICB8ICAxMCArKwotIGJpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvaXhmci10b28tYmlnLmRiLmluICAgICB8ICAxMyArKysKLSBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL25hbWVkLmNvbmYgICAgICAgICAgICAgfCAgMTEgKysKLSBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnM2L25hbWVkLmNvbmYgICAgICAgICAgICAgfCAgMTQgKysrCi0gYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3NldHVwLnNoICAgICAgICAgICAgICAgICAgIHwgICAyICsKLSBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvdGVzdHMuc2ggICAgICAgICAgICAgICAgICAgfCAgMjYgKysrKysKLSBkb2MvYXJtL0J2OUFSTS1ib29rLnhtbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjEgKysrKwotIGRvYy9hcm0vbm90ZXMueG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArKwotIGxpYi9iaW5kOS9jaGVjay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gbGliL2Rucy9kYi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrKwotIGxpYi9kbnMvZWNkYi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQotIGxpYi9kbnMvaW5jbHVkZS9kbnMvZGIuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArKysrCi0gbGliL2Rucy9pbmNsdWRlL2Rucy9yZGF0YXNsYWIuaCAgICAgICAgICAgICAgICAgIHwgIDEzICsrKwotIGxpYi9kbnMvaW5jbHVkZS9kbnMvcmVzdWx0LmggICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQotIGxpYi9kbnMvaW5jbHVkZS9kbnMvem9uZS5oICAgICAgICAgICAgICAgICAgICAgICB8ICAyOCArKysrLQotIGxpYi9kbnMvcmJ0ZGIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyNyArKysrKysrKysrKysrKysrKysrKystLQotIGxpYi9kbnMvcmRhdGFzbGFiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArKysKLSBsaWIvZG5zL3Jlc3VsdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KLSBsaWIvZG5zL3NkYi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KLSBsaWIvZG5zL3NkbHouYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KLSBsaWIvZG5zL3hmcmluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjIgKysrLQotIGxpYi9kbnMvem9uZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMyArKystCi0gbGliL2lzY2NmZy9uYW1lZGNvbmYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSAzNCBmaWxlcyBjaGFuZ2VkLCA0NDQgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL3Rvby1iaWcudGVzdC5kYi5pbgotIGNyZWF0ZSBtb2RlIDEwMDY0NCBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2F4ZnItdG9vLWJpZy5kYgotIGNyZWF0ZSBtb2RlIDEwMDY0NCBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2l4ZnItdG9vLWJpZy5kYi5pbgotCi1kaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKLWluZGV4IDQxY2ZjZTUuLjk3ZDJlNjAgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VTCi0rKysgYi9DSEFOR0VTCi1AQCAtMSwzICsxLDcgQEAKLSs0NTA0Lglbc2VjdXJpdHldCUFsbG93IHRoZSBtYXhpbXVtIG51bWJlciBvZiByZWNvcmRzIGluIGEgem9uZSB0bwotKwkJCWJlIHNwZWNpZmllZC4gIFRoaXMgcHJvdmlkZXMgYSBjb250cm9sIGZvciBpc3N1ZXMKLSsJCQlyYWlzZWQgaW4gQ1ZFLTIwMTYtNjE3MC4gW1JUICM0MjE0M10KLSsKLSA0NDg5Lglbc2VjdXJpdHldCUl0IHdhcyBwb3NzaWJsZSB0byB0cmlnZ2VyIGFzc2VydGlvbnMgd2hlbiBwcm9jZXNzaW5nCi0gCQkJYSByZXNwb25zZS4gKENWRS0yMDE2LTg4NjQpIFtSVCAjNDM0NjVdCi0gCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NvbmZpZy5jIGIvYmluL25hbWVkL2NvbmZpZy5jCi1pbmRleCBmMDYzNDhjLi5jMjRlMzM0IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NvbmZpZy5jCi0rKysgYi9iaW4vbmFtZWQvY29uZmlnLmMKLUBAIC0yMDksNiArMjA5LDcgQEAgb3B0aW9ucyB7XG5cCi0gCW1heC10cmFuc2Zlci10aW1lLW91dCAxMjA7XG5cCi0gCW1heC10cmFuc2Zlci1pZGxlLWluIDYwO1xuXAotIAltYXgtdHJhbnNmZXItaWRsZS1vdXQgNjA7XG5cCi0rCW1heC1yZWNvcmRzIDA7XG5cCi0gCW1heC1yZXRyeS10aW1lIDEyMDk2MDA7IC8qIDIgd2Vla3MgKi9cblwKLSAJbWluLXJldHJ5LXRpbWUgNTAwO1xuXAotIAltYXgtcmVmcmVzaC10aW1lIDI0MTkyMDA7IC8qIDQgd2Vla3MgKi9cblwKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvbmFtZWQuY29uZi5kb2Nib29rIGIvYmluL25hbWVkL25hbWVkLmNvbmYuZG9jYm9vawotaW5kZXggNGM5OWE2MS4uYzJkMTczYSAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9uYW1lZC5jb25mLmRvY2Jvb2sKLSsrKyBiL2Jpbi9uYW1lZC9uYW1lZC5jb25mLmRvY2Jvb2sKLUBAIC0zMzgsNiArMzM4LDcgQEAgb3B0aW9ucyB7Ci0gCX07Ci0gCi0gCW1heC1qb3VybmFsLXNpemUgPHJlcGxhY2VhYmxlPnNpemVfbm9fZGVmYXVsdDwvcmVwbGFjZWFibGU+OwotKwltYXgtcmVjb3JkcyA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItdGltZS1pbiA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItdGltZS1vdXQgPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLWlkbGUtaW4gPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLUBAIC01MjcsNiArNTI4LDcgQEAgdmlldyA8cmVwbGFjZWFibGU+c3RyaW5nPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPm9wdGlvbmFsX2NsYXNzPC9yZXBsYWNlYWJsZT4KLSAJfTsKLSAKLSAJbWF4LWpvdXJuYWwtc2l6ZSA8cmVwbGFjZWFibGU+c2l6ZV9ub19kZWZhdWx0PC9yZXBsYWNlYWJsZT47Ci0rCW1heC1yZWNvcmRzIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci10aW1lLWluIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci10aW1lLW91dCA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItaWRsZS1pbiA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotQEAgLTYyNCw2ICs2MjYsNyBAQCB6b25lIDxyZXBsYWNlYWJsZT5zdHJpbmc8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+b3B0aW9uYWxfY2xhc3M8L3JlcGxhY2VhYmxlPgotIAl9OwotIAotIAltYXgtam91cm5hbC1zaXplIDxyZXBsYWNlYWJsZT5zaXplX25vX2RlZmF1bHQ8L3JlcGxhY2VhYmxlPjsKLSsJbWF4LXJlY29yZHMgPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLXRpbWUtaW4gPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLXRpbWUtb3V0IDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci1pZGxlLWluIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL3VwZGF0ZS5jIGIvYmluL25hbWVkL3VwZGF0ZS5jCi1pbmRleCA4M2IxYTA1Li5jYzJhNjExIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL3VwZGF0ZS5jCi0rKysgYi9iaW4vbmFtZWQvdXBkYXRlLmMKLUBAIC0yNDU1LDYgKzI0NTUsOCBAQCB1cGRhdGVfYWN0aW9uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAlpc2NfYm9vbGVhbl90IGhhZF9kbnNrZXk7Ci0gCWRuc19yZGF0YXR5cGVfdCBwcml2YXRldHlwZSA9IGRuc196b25lX2dldHByaXZhdGV0eXBlKHpvbmUpOwotIAlkbnNfdHRsX3QgbWF4dHRsID0gMDsKLSsJaXNjX3VpbnQzMl90IG1heHJlY29yZHM7Ci0rCWlzY191aW50NjRfdCByZWNvcmRzOwotIAotIAlJTlNJU1QoZXZlbnQtPmV2X3R5cGUgPT0gRE5TX0VWRU5UX1VQREFURSk7Ci0gCi1AQCAtMzEzOCw2ICszMTQwLDIwIEBAIHVwZGF0ZV9hY3Rpb24oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkJfQotIAkJfQotIAotKwkJbWF4cmVjb3JkcyA9IGRuc196b25lX2dldG1heHJlY29yZHMoem9uZSk7Ci0rCQlpZiAobWF4cmVjb3JkcyAhPSAwVSkgewotKwkJCXJlc3VsdCA9IGRuc19kYl9nZXRzaXplKGRiLCB2ZXIsICZyZWNvcmRzLCBOVUxMKTsKLSsJCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgJiYgcmVjb3JkcyA+IG1heHJlY29yZHMpIHsKLSsJCQkJdXBkYXRlX2xvZyhjbGllbnQsIHpvbmUsIElTQ19MT0dfRVJST1IsCi0rCQkJCQkgICAicmVjb3JkcyBpbiB6b25lICglIgotKwkJCQkJICAgSVNDX1BSSU5UX1FVQURGT1JNQVQKLSsJCQkJCSAgICJ1KSBleGNlZWRzIG1heC1yZWNvcmRzICgldSkiLAotKwkJCQkJICAgcmVjb3JkcywgbWF4cmVjb3Jkcyk7Ci0rCQkJCXJlc3VsdCA9IEROU19SX1RPT01BTllSRUNPUkRTOwotKwkJCQlnb3RvIGZhaWx1cmU7Ci0rCQkJfQotKwkJfQotKwotIAkJam91cm5hbGZpbGUgPSBkbnNfem9uZV9nZXRqb3VybmFsKHpvbmUpOwotIAkJaWYgKGpvdXJuYWxmaWxlICE9IE5VTEwpIHsKLSAJCQl1cGRhdGVfbG9nKGNsaWVudCwgem9uZSwgTE9HTEVWRUxfREVCVUcsCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL3pvbmVjb25mLmMgYi9iaW4vbmFtZWQvem9uZWNvbmYuYwotaW5kZXggNGVlM2RmZS4uMTRkZDhjZSAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC96b25lY29uZi5jCi0rKysgYi9iaW4vbmFtZWQvem9uZWNvbmYuYwotQEAgLTk3OCw2ICs5NzgsMTMgQEAgbnNfem9uZV9jb25maWd1cmUoY29uc3QgY2ZnX29ial90ICpjb25maWcsIGNvbnN0IGNmZ19vYmpfdCAqdmNvbmZpZywKLSAJCQlkbnNfem9uZV9zZXRtYXh0dGwocmF3LCBtYXh0dGwpOwotIAl9Ci0gCi0rCW9iaiA9IE5VTEw7Ci0rCXJlc3VsdCA9IG5zX2NvbmZpZ19nZXQobWFwcywgIm1heC1yZWNvcmRzIiwgJm9iaik7Ci0rCUlOU0lTVChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJiBvYmogIT0gTlVMTCk7Ci0rCWRuc196b25lX3NldG1heHJlY29yZHMobWF5YmVyYXcsIGNmZ19vYmpfYXN1aW50MzIob2JqKSk7Ci0rCWlmICh6b25lICE9IG1heWJlcmF3KQotKwkJZG5zX3pvbmVfc2V0bWF4cmVjb3Jkcyh6b25lLCAwKTsKLSsKLSAJaWYgKHJhdyAhPSBOVUxMICYmIGZpbGVuYW1lICE9IE5VTEwpIHsKLSAjZGVmaW5lIFNJR05FRCAiLnNpZ25lZCIKLSAJCXNpemVfdCBzaWduZWRsZW4gPSBzdHJsZW4oZmlsZW5hbWUpICsgc2l6ZW9mKFNJR05FRCk7Ci1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9jbGVhbi5zaCBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvY2xlYW4uc2gKLWluZGV4IGFhZWZjMDIuLmVhMjU1NDUgMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL2NsZWFuLnNoCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL2NsZWFuLnNoCi1AQCAtMzIsNiArMzIsNyBAQCBybSAtZiBuczMvZXhhbXBsZS5kYi5qbmwgbnMzL2V4YW1wbGUuZGIKLSBybSAtZiBuczMvbnNlYzNwYXJhbS50ZXN0LmRiLnNpZ25lZC5qbmwgbnMzL25zZWMzcGFyYW0udGVzdC5kYiBuczMvbnNlYzNwYXJhbS50ZXN0LmRiLnNpZ25lZCBuczMvZHNzZXQtbnNlYzNwYXJhbS50ZXN0LgotIHJtIC1mIG5zMy9kbnNrZXkudGVzdC5kYi5zaWduZWQuam5sIG5zMy9kbnNrZXkudGVzdC5kYiBuczMvZG5za2V5LnRlc3QuZGIuc2lnbmVkIG5zMy9kc3NldC1kbnNrZXkudGVzdC4KLSBybSAtZiBuczMvSyoKLStybSAtZiBuczMvdG9vLWJpZy50ZXN0LmRiCi0gcm0gLWYgZGlnLm91dC4qCi0gcm0gLWYganAub3V0Lm5zMy4qCi0gcm0gLWYgS3h4eC4qCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvbmFtZWQuY29uZiBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL25hbWVkLmNvbmYKLWluZGV4IDJhYmQ1MjIuLjY4ZmYyN2EgMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy9uYW1lZC5jb25mCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy9uYW1lZC5jb25mCi1AQCAtNjAsMyArNjAsMTAgQEAgem9uZSAiZG5za2V5LnRlc3QiIHsKLSAJYWxsb3ctdXBkYXRlIHsgYW55OyB9OwotIAlmaWxlICJkbnNrZXkudGVzdC5kYi5zaWduZWQiOwotIH07Ci0rCi0rem9uZSAidG9vLWJpZy50ZXN0IiB7Ci0rCXR5cGUgbWFzdGVyOwotKwlhbGxvdy11cGRhdGUgeyBhbnk7IH07Ci0rCW1heC1yZWNvcmRzIDM7Ci0rCWZpbGUgInRvby1iaWcudGVzdC5kYiI7Ci0rfTsKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy90b28tYmlnLnRlc3QuZGIuaW4gYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy90b28tYmlnLnRlc3QuZGIuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43ZmYxZTRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy90b28tYmlnLnRlc3QuZGIuaW4KLUBAIC0wLDAgKzEsMTAgQEAKLSs7IENvcHlyaWdodCAoQykgMjAxNiAgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtLCBJbmMuICgiSVNDIikKLSs7Ci0rOyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0rOyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi0rOyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgotKwotKyRUVEwgMTAKLSt0b28tYmlnLnRlc3QuIElOIFNPQSB0b28tYmlnLnRlc3QuIGhvc3RtYXN0ZXIudG9vLWJpZy50ZXN0LiAxIDM2MDAgOTAwIDI0MTkyMDAgMzYwMAotK3Rvby1iaWcudGVzdC4gSU4gTlMgdG9vLWJpZy50ZXN0LgotK3Rvby1iaWcudGVzdC4gSU4gQSAxMC41My4wLjMKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3NldHVwLnNoIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9zZXR1cC5zaAotaW5kZXggODI4MjU1ZS4uNDNjNDA5NCAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvc2V0dXAuc2gKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvc2V0dXAuc2gKLUBAIC0yNywxMiArMjcsMTQgQEAgdGVzdCAtciAkUkFOREZJTEUgfHwgJEdFTlJBTkRPTSA0MDAgJFJBTkRGSUxFCi0gcm0gLWYgbnMxLyouam5sIG5zMS9leGFtcGxlLmRiIG5zMi8qLmpubCBuczIvZXhhbXBsZS5iawotIHJtIC1mIG5zMi91cGRhdGUuYmsgbnMyL3VwZGF0ZS5hbHQuYmsKLSBybSAtZiBuczMvZXhhbXBsZS5kYi5qbmwKLStybSAtZiBuczMvdG9vLWJpZy50ZXN0LmRiLmpubAotIAotIGNwIC1mIG5zMS9leGFtcGxlMS5kYiBuczEvZXhhbXBsZS5kYgotIHNlZCAncy9leGFtcGxlLm5pbC9vdGhlci5uaWwvZycgbnMxL2V4YW1wbGUxLmRiID4gbnMxL290aGVyLmRiCi0gc2VkICdzL2V4YW1wbGUubmlsL3VuaXh0aW1lLm5pbC9nJyBuczEvZXhhbXBsZTEuZGIgPiBuczEvdW5peHRpbWUuZGIKLSBzZWQgJ3MvZXhhbXBsZS5uaWwva2V5dGVzdHMubmlsL2cnIG5zMS9leGFtcGxlMS5kYiA+IG5zMS9rZXl0ZXN0cy5kYgotIGNwIC1mIG5zMy9leGFtcGxlLmRiLmluIG5zMy9leGFtcGxlLmRiCi0rY3AgLWYgbnMzL3Rvby1iaWcudGVzdC5kYi5pbiBuczMvdG9vLWJpZy50ZXN0LmRiCi0gCi0gIyB1cGRhdGVfdGVzdC5wbCBoYXMgaXRzIG93biB6b25lIGZpbGUgYmVjYXVzZSBpdAotICMgcmVxdWlyZXMgYSBzcGVjaWZpYyBOUyByZWNvcmQgc2V0LgotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvdGVzdHMuc2ggYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3Rlc3RzLnNoCi1pbmRleCA3OGQ1MDFlLi4wYTZiYmQzIDEwMDc1NQotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS90ZXN0cy5zaAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS90ZXN0cy5zaAotQEAgLTU4MSw1ICs1ODEsMjAgQEAgaWYgWyAkcmV0IC1uZSAwIF07IHRoZW4KLSAgICAgc3RhdHVzPTEKLSBmaQotIAotK249YGV4cHIgJG4gKyAxYAotK2VjaG8gIkk6Y2hlY2sgdGhhdCBhZGRpbmcgdG9vIG1hbnkgcmVjb3JkcyBpcyBibG9ja2VkICgkbikiCi0rcmV0PTAKLSskTlNVUERBVEUgLXYgPDwgRU9GID4gbnN1cGRhdGUub3V0LSRuIDI+JjEgJiYgcmV0PTEKLStzZXJ2ZXIgMTAuNTMuMC4zIDUzMDAKLSt6b25lIHRvby1iaWcudGVzdC4KLSt1cGRhdGUgYWRkIHIxLnRvby1iaWcudGVzdCAzNjAwIElOIFRYVCByMS50b28tYmlnLnRlc3QKLStzZW5kCi0rRU9GCi0rZ3JlcCAidXBkYXRlIGZhaWxlZDogU0VSVkZBSUwiIG5zdXBkYXRlLm91dC0kbiA+IC9kZXYvbnVsbCB8fCByZXQ9MQotK0RJRyArdGNwIEAxMC41My4wLjMgLXAgNTMwMCByMS50b28tYmlnLnRlc3QgVFhUID4gZGlnLm91dC5uczMudGVzdCRuCi0rZ3JlcCAic3RhdHVzOiBOWERPTUFJTiIgZGlnLm91dC5uczMudGVzdCRuID4gL2Rldi9udWxsIHx8IHJldD0xCi0rZ3JlcCAicmVjb3JkcyBpbiB6b25lICg0KSBleGNlZWRzIG1heC1yZWNvcmRzICgzKSIgbnMzL25hbWVkLnJ1biA+IC9kZXYvbnVsbCB8fCByZXQ9MQotK1sgJHJldCA9IDAgXSB8fCB7IGVjaG8gSTpmYWlsZWQ7IHN0YXR1cz0xOyB9Ci0rCi0gZWNobyAiSTpleGl0IHN0YXR1czogJHN0YXR1cyIKLSBleGl0ICRzdGF0dXMKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvY2xlYW4uc2ggYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvY2xlYW4uc2gKLWluZGV4IDQ4YWExNTkuLmRhNjJhMzMgMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvY2xlYW4uc2gKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9jbGVhbi5zaAotQEAgLTM2LDMgKzM2LDQgQEAgcm0gLWYgbnM3LyouZGIgbnM3LyouYmsgbnM3Lyouam5sCi0gcm0gLWYgKi9uYW1lZC5tZW1zdGF0cwotIHJtIC1mICovbmFtZWQucnVuCi0gcm0gLWYgKi9hbnMucnVuCi0rcm0gLWYgbnMxL2l4ZnItdG9vLWJpZy5kYiBuczEvaXhmci10b28tYmlnLmRiLmpubAotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvYXhmci10b28tYmlnLmRiIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9heGZyLXRvby1iaWcuZGIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kNDM3NjBkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2F4ZnItdG9vLWJpZy5kYgotQEAgLTAsMCArMSwxMCBAQAotKzsgQ29weXJpZ2h0IChDKSAyMDE2ICBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0sIEluYy4gKCJJU0MiKQotKzsKLSs7IFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKLSs7IExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKLSs7IGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCi0rCi0rJFRUTAkzNjAwCi0rQAlJTglTT0EJLiAuIDAgMCAwIDAgMAotK0AJSU4JTlMJLgotKyRHRU5FUkFURSAxLTI5CWhvc3QkCUEJMS4yLjMuJAotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvaXhmci10b28tYmlnLmRiLmluIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9peGZyLXRvby1iaWcuZGIuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zMThiYjc3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2l4ZnItdG9vLWJpZy5kYi5pbgotQEAgLTAsMCArMSwxMyBAQAotKzsgQ29weXJpZ2h0IChDKSAyMDE2ICBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0sIEluYy4gKCJJU0MiKQotKzsKLSs7IFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKLSs7IExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKLSs7IGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCi0rCi0rJFRUTAkzNjAwCi0rQAlJTglTT0EJLiAuIDAgMCAwIDAgMAotK0AJSU4JTlMJbnMxCi0rQAlJTglOUwluczYKLStuczEJSU4JQQkxMC41My4wLjEKLStuczYJSU4JQQkxMC41My4wLjYKLSskR0VORVJBVEUgMS0yNQlob3N0JAlBCTEuMi4zLiQKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL25hbWVkLmNvbmYgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL25hbWVkLmNvbmYKLWluZGV4IDA3ZGFkODUuLjFkMjkyOTIgMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL25hbWVkLmNvbmYKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvbmFtZWQuY29uZgotQEAgLTQ0LDMgKzQ0LDE0IEBAIHpvbmUgInNsYXZlIiB7Ci0gCXR5cGUgbWFzdGVyOwotIAlmaWxlICJzbGF2ZS5kYiI7Ci0gfTsKLSsKLSt6b25lICJheGZyLXRvby1iaWciIHsKLSsgICAgICAgIHR5cGUgbWFzdGVyOwotKyAgICAgICAgZmlsZSAiYXhmci10b28tYmlnLmRiIjsKLSt9OwotKwotK3pvbmUgIml4ZnItdG9vLWJpZyIgewotKyAgICAgICAgdHlwZSBtYXN0ZXI7Ci0rCWFsbG93LXVwZGF0ZSB7IGFueTsgfTsKLSsgICAgICAgIGZpbGUgIml4ZnItdG9vLWJpZy5kYiI7Ci0rfTsKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnM2L25hbWVkLmNvbmYgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnM2L25hbWVkLmNvbmYKLWluZGV4IGM5NDIxYjEuLmExMmE5MmMgMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnM2L25hbWVkLmNvbmYKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczYvbmFtZWQuY29uZgotQEAgLTUyLDMgKzUyLDE3IEBAIHpvbmUgInNsYXZlIiB7Ci0gCW1hc3RlcnMgeyAxMC41My4wLjE7IH07Ci0gCWZpbGUgInNsYXZlLmJrIjsKLSB9OwotKwotK3pvbmUgImF4ZnItdG9vLWJpZyIgewotKwl0eXBlIHNsYXZlOwotKwltYXgtcmVjb3JkcyAzMDsKLSsJbWFzdGVycyB7IDEwLjUzLjAuMTsgfTsKLSsJZmlsZSAiYXhmci10b28tYmlnLmJrIjsKLSt9OwotKwotK3pvbmUgIml4ZnItdG9vLWJpZyIgewotKwl0eXBlIHNsYXZlOwotKwltYXgtcmVjb3JkcyAzMDsKLSsJbWFzdGVycyB7IDEwLjUzLjAuMTsgfTsKLSsJZmlsZSAiaXhmci10b28tYmlnLmJrIjsKLSt9OwotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9zZXR1cC5zaCBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9zZXR1cC5zaAotaW5kZXggNTZjYTkwMS4uYzU1YWJmOCAxMDA2NDQKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9zZXR1cC5zaAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3NldHVwLnNoCi1AQCAtMzMsMyArMzMsNSBAQCBjcCAtZiBuczQvbmFtZWQuY29uZi5iYXNlIG5zNC9uYW1lZC5jb25mCi0gCi0gY3AgbnMyL3NsYXZlLmRiLmluIG5zMi9zbGF2ZS5kYgotIHRvdWNoIC10IDIwMDEwMTAxMDAwMCBuczIvc2xhdmUuZGIKLSsKLStjcCAtZiBuczEvaXhmci10b28tYmlnLmRiLmluIG5zMS9peGZyLXRvby1iaWcuZGIKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvdGVzdHMuc2ggYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvdGVzdHMuc2gKLWluZGV4IDY3YjJhMWEuLmZlMzNmMGEgMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvdGVzdHMuc2gKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci90ZXN0cy5zaAotQEAgLTM2OCw1ICszNjgsMzEgQEAgJERJR0NNRCBuaWwuIFRYVCB8IGdyZXAgJ2luY29ycmVjdCBrZXkgQVhGUicgPi9kZXYvbnVsbCAmJiB7Ci0gICAgIHN0YXR1cz0xCi0gfQotIAotK249YGV4cHIgJG4gKyAxYAotK2VjaG8gIkk6dGVzdCB0aGF0IGEgem9uZSB3aXRoIHRvbyBtYW55IHJlY29yZHMgaXMgcmVqZWN0ZWQgKEFYRlIpICgkbikiCi0rdG1wPTAKLStncmVwICInYXhmci10b28tYmlnL0lOJy4qOiB0b28gbWFueSByZWNvcmRzIiBuczYvbmFtZWQucnVuID4vZGV2L251bGwgfHwgdG1wPTEKLStpZiB0ZXN0ICR0bXAgIT0gMCA7IHRoZW4gZWNobyAiSTpmYWlsZWQiOyBmaQotK3N0YXR1cz1gZXhwciAkc3RhdHVzICsgJHRtcGAKLSsKLStuPWBleHByICRuICsgMWAKLStlY2hvICJJOnRlc3QgdGhhdCBhIHpvbmUgd2l0aCB0b28gbWFueSByZWNvcmRzIGlzIHJlamVjdGVkIChJWEZSKSAoJG4pIgotK3RtcD0wCi0rZ3JlcCAiJ2l4ZnItdG9vLWJpZy4vSU4uKjogdG9vIG1hbnkgcmVjb3JkcyIgbnM2L25hbWVkLnJ1biA+L2Rldi9udWxsICYmIHRtcD0xCi0rJE5TVVBEQVRFIDw8IEVPRgotK3pvbmUgaXhmci10b28tYmlnCi0rc2VydmVyIDEwLjUzLjAuMSA1MzAwCi0rdXBkYXRlIGFkZCB0aGUtMzFzdC1yZWNvcmQuaXhmci10b28tYmlnIDAgVFhUIHRoaXMgaXMgaXQKLStzZW5kCi0rRU9GCi0rZm9yIGkgaW4gMSAyIDMgNCA1IDYgNyA4Ci0rZG8KLSsgICAgZ3JlcCAiJ2l4ZnItdG9vLWJpZy9JTicuKjogdG9vIG1hbnkgcmVjb3JkcyIgbnM2L25hbWVkLnJ1biA+L2Rldi9udWxsICYmIGJyZWFrCi0rICAgIHNsZWVwIDEKLStkb25lCi0rZ3JlcCAiJ2l4ZnItdG9vLWJpZy9JTicuKjogdG9vIG1hbnkgcmVjb3JkcyIgbnM2L25hbWVkLnJ1biA+L2Rldi9udWxsIHx8IHRtcD0xCi0raWYgdGVzdCAkdG1wICE9IDAgOyB0aGVuIGVjaG8gIkk6ZmFpbGVkIjsgZmkKLStzdGF0dXM9YGV4cHIgJHN0YXR1cyArICR0bXBgCi0rCi0gZWNobyAiSTpleGl0IHN0YXR1czogJHN0YXR1cyIKLSBleGl0ICRzdGF0dXMKLWRpZmYgLS1naXQgYS9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbCBiL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sCi1pbmRleCA4NDhiNTgyLi4wMzY5NTA1IDEwMDY0NAotLS0tIGEvZG9jL2FybS9CdjlBUk0tYm9vay54bWwKLSsrKyBiL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sCi1AQCAtNDg1OCw2ICs0ODU4LDcgQEAgYmFkcmVzcDoxLGFkYmVycjowLGZpbmRmYWlsOjAsdmFsZmFpbDowXQotICAgICA8b3B0aW9uYWw+IHVzZS1xdWVyeXBvcnQtcG9vbCA8cmVwbGFjZWFibGU+eWVzX29yX25vPC9yZXBsYWNlYWJsZT47IDwvb3B0aW9uYWw+Ci0gICAgIDxvcHRpb25hbD4gcXVlcnlwb3J0LXBvb2wtcG9ydHMgPHJlcGxhY2VhYmxlPm51bWJlcjwvcmVwbGFjZWFibGU+OyA8L29wdGlvbmFsPgotICAgICA8b3B0aW9uYWw+IHF1ZXJ5cG9ydC1wb29sLXVwZGF0ZWludGVydmFsIDxyZXBsYWNlYWJsZT5udW1iZXI8L3JlcGxhY2VhYmxlPjsgPC9vcHRpb25hbD4KLSsgICAgPG9wdGlvbmFsPiBtYXgtcmVjb3JkcyA8cmVwbGFjZWFibGU+bnVtYmVyPC9yZXBsYWNlYWJsZT47IDwvb3B0aW9uYWw+Ci0gICAgIDxvcHRpb25hbD4gbWF4LXRyYW5zZmVyLXRpbWUtaW4gPHJlcGxhY2VhYmxlPm51bWJlcjwvcmVwbGFjZWFibGU+OyA8L29wdGlvbmFsPgotICAgICA8b3B0aW9uYWw+IG1heC10cmFuc2Zlci10aW1lLW91dCA8cmVwbGFjZWFibGU+bnVtYmVyPC9yZXBsYWNlYWJsZT47IDwvb3B0aW9uYWw+Ci0gICAgIDxvcHRpb25hbD4gbWF4LXRyYW5zZmVyLWlkbGUtaW4gPHJlcGxhY2VhYmxlPm51bWJlcjwvcmVwbGFjZWFibGU+OyA8L29wdGlvbmFsPgotQEAgLTgxNjQsNiArODE2NSwxNiBAQCBhdm9pZC12Ni11ZHAtcG9ydHMgeyA0MDAwMDsgcmFuZ2UgNTAwMDAgNjAwMDA7IH07Ci0gCSAgICA8L3Zhcmxpc3RlbnRyeT4KLSAKLSAJICAgIDx2YXJsaXN0ZW50cnk+Ci0rCSAgICAgIDx0ZXJtPjxjb21tYW5kPm1heC1yZWNvcmRzPC9jb21tYW5kPjwvdGVybT4KLSsJICAgICAgPGxpc3RpdGVtPgotKwkJPHBhcmE+Ci0rCQkgIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWNvcmRzIHBlcm1pdHRlZCBpbiBhIHpvbmUuCi0rCQkgIFRoZSBkZWZhdWx0IGlzIHplcm8gd2hpY2ggbWVhbnMgdW5saW1pdGVkLgotKwkgCTwvcGFyYT4KLSsJICAgICAgPC9saXN0aXRlbT4KLSsJICAgIDwvdmFybGlzdGVudHJ5PgotKwotKwkgICAgPHZhcmxpc3RlbnRyeT4KLSAJICAgICAgPHRlcm0+PGNvbW1hbmQ+aG9zdC1zdGF0aXN0aWNzLW1heDwvY29tbWFuZD48L3Rlcm0+Ci0gCSAgICAgIDxsaXN0aXRlbT4KLSAJCTxwYXJhPgotQEAgLTEyMDU2LDYgKzEyMDY3LDE2IEBAIHpvbmUgPHJlcGxhY2VhYmxlPnpvbmVfbmFtZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD48cmVwbGFjZWFibGU+Y2xhc3M8L3JlcGxhY2VhCi0gCSAgICAgIDwvdmFybGlzdGVudHJ5PgotIAotIAkgICAgICA8dmFybGlzdGVudHJ5PgotKwkJPHRlcm0+PGNvbW1hbmQ+bWF4LXJlY29yZHM8L2NvbW1hbmQ+PC90ZXJtPgotKwkJPGxpc3RpdGVtPgotKwkJICA8cGFyYT4KLSsJCSAgICBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mCi0rCQkgICAgPGNvbW1hbmQ+bWF4LXJlY29yZHM8L2NvbW1hbmQ+IGluIDx4cmVmIGxpbmtlbmQ9InNlcnZlcl9yZXNvdXJjZV9saW1pdHMiLz4uCi0rCQkgIDwvcGFyYT4KLSsJCTwvbGlzdGl0ZW0+Ci0rCSAgICAgIDwvdmFybGlzdGVudHJ5PgotKwotKwkgICAgICA8dmFybGlzdGVudHJ5PgotIAkJPHRlcm0+PGNvbW1hbmQ+bWF4LXRyYW5zZmVyLXRpbWUtaW48L2NvbW1hbmQ+PC90ZXJtPgotIAkJPGxpc3RpdGVtPgotIAkJICA8cGFyYT4KLWRpZmYgLS1naXQgYS9kb2MvYXJtL25vdGVzLnhtbCBiL2RvYy9hcm0vbm90ZXMueG1sCi1pbmRleCAwOTVlYjViLi4zNjQ5NWU3IDEwMDY0NAotLS0tIGEvZG9jL2FybS9ub3Rlcy54bWwKLSsrKyBiL2RvYy9hcm0vbm90ZXMueG1sCi1AQCAtNTIsNiArNTIsMTUgQEAKLSAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgIDxwYXJhPgotKwkgIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlY29yZHMKLSsJICBwZXJtaXR0ZWQgaW4gYSB6b25lIChtYXgtcmVjb3JkcyAjOykuICBUaGlzIHByb3ZpZGVzIGEgbWVjaGFuaXNtCi0rCSAgdG8gYmxvY2sgb3Zlcmx5IGxhcmdlIHpvbmUgdHJhbnNmZXJzLCB3aGljaCBpcyBhIHBvdGVudGlhbCByaXNrCi0rCSAgd2l0aCBzbGF2ZSB6b25lcyBmcm9tIG90aGVyIHBhcnRpZXMsIGFzIGRlc2NyaWJlZCBpbiBDVkUtMjAxNi02MTcwLgotKwkgIFtSVCAjNDIxNDNdCi0rCTwvcGFyYT4KLSsgICAgICA8L2xpc3RpdGVtPgotKyAgICAgIDxsaXN0aXRlbT4KLSsJPHBhcmE+Ci0gICAgICAgICAgRHVwbGljYXRlIEVETlMgQ09PS0lFIG9wdGlvbnMgaW4gYSByZXNwb25zZSBjb3VsZCB0cmlnZ2VyCi0gICAgICAgICAgYW4gYXNzZXJ0aW9uIGZhaWx1cmUuIFRoaXMgZmxhdyBpcyBkaXNjbG9zZWQgaW4gQ1ZFLTIwMTYtMjA4OC4KLSAgICAgICAgICBbUlQgIzQxODA5XQotZGlmZiAtLWdpdCBhL2xpYi9iaW5kOS9jaGVjay5jIGIvbGliL2JpbmQ5L2NoZWNrLmMKLWluZGV4IGI4YzA1ZGQuLmVkYjc1MzQgMTAwNjQ0Ci0tLS0gYS9saWIvYmluZDkvY2hlY2suYwotKysrIGIvbGliL2JpbmQ5L2NoZWNrLmMKLUBAIC0xNTEwLDYgKzE1MTAsOCBAQCBjaGVja196b25lY29uZihjb25zdCBjZmdfb2JqX3QgKnpjb25maWcsIGNvbnN0IGNmZ19vYmpfdCAqdm9wdGlvbnMsCi0gCSAgUkVESVJFQ1RaT05FIH0sCi0gCXsgIm1hc3RlcnMiLCBTTEFWRVpPTkUgfCBTVFVCWk9ORSB8IFJFRElSRUNUWk9ORSB9LAotIAl7ICJtYXgtaXhmci1sb2ctc2l6ZSIsIE1BU1RFUlpPTkUgfCBTTEFWRVpPTkUgfCBTVFJFRElSRUNUWk9ORSB9LAotKwl7ICJtYXgtcmVjb3JkcyIsIE1BU1RFUlpPTkUgfCBTTEFWRVpPTkUgfCBTVFVCWk9ORSB8IFNUUkVESVJFQ1RaT05FIHwKLSsgICAgICAgICAgU1RBVElDU1RVQlpPTkUgfCBSRURJUkVDVFpPTkUgfSwKLSAJeyAibWF4LXJlZnJlc2gtdGltZSIsIFNMQVZFWk9ORSB8IFNUVUJaT05FIHwgU1RSRURJUkVDVFpPTkUgfSwKLSAJeyAibWF4LXJldHJ5LXRpbWUiLCBTTEFWRVpPTkUgfCBTVFVCWk9ORSB8IFNUUkVESVJFQ1RaT05FIH0sCi0gCXsgIm1heC10cmFuc2Zlci1pZGxlLWluIiwgU0xBVkVaT05FIHwgU1RVQlpPTkUgfCBTVFJFRElSRUNUWk9ORSB9LAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvZGIuYyBiL2xpYi9kbnMvZGIuYwotaW5kZXggN2U0ZjM1Ny4uY2VkOTRhNSAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvZGIuYwotKysrIGIvbGliL2Rucy9kYi5jCi1AQCAtOTk5LDYgKzk5OSwxOSBAQCBkbnNfZGJfZ2V0bnNlYzNwYXJhbWV0ZXJzKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLAotIH0KLSAKLSBpc2NfcmVzdWx0X3QKLStkbnNfZGJfZ2V0c2l6ZShkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwgaXNjX3VpbnQ2NF90ICpyZWNvcmRzLAotKwkgICAgICAgaXNjX3VpbnQ2NF90ICpieXRlcykKLSt7Ci0rCVJFUVVJUkUoRE5TX0RCX1ZBTElEKGRiKSk7Ci0rCVJFUVVJUkUoZG5zX2RiX2lzem9uZShkYikgPT0gSVNDX1RSVUUpOwotKwotKwlpZiAoZGItPm1ldGhvZHMtPmdldHNpemUgIT0gTlVMTCkKLSsJCXJldHVybiAoKGRiLT5tZXRob2RzLT5nZXRzaXplKShkYiwgdmVyc2lvbiwgcmVjb3JkcywgYnl0ZXMpKTsKLSsKLSsJcmV0dXJuIChJU0NfUl9OT1RGT1VORCk7Ci0rfQotKwotK2lzY19yZXN1bHRfdAotIGRuc19kYl9zZXRzaWduaW5ndGltZShkbnNfZGJfdCAqZGIsIGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwKLSAJCSAgICAgIGlzY19zdGR0aW1lX3QgcmVzaWduKQotIHsKLWRpZmYgLS1naXQgYS9saWIvZG5zL2VjZGIuYyBiL2xpYi9kbnMvZWNkYi5jCi1pbmRleCA1NTNhMzM5Li5iNWQwNGQyIDEwMDY0NAotLS0tIGEvbGliL2Rucy9lY2RiLmMKLSsrKyBiL2xpYi9kbnMvZWNkYi5jCi1AQCAtNTg3LDcgKzU4Nyw4IEBAIHN0YXRpYyBkbnNfZGJtZXRob2RzX3QgZWNkYl9tZXRob2RzID0gewotIAlOVUxMLAkJCS8qIGZpbmRub2RlZXh0ICovCi0gCU5VTEwsCQkJLyogZmluZGV4dCAqLwotIAlOVUxMLAkJCS8qIHNldGNhY2hlc3RhdHMgKi8KLS0JTlVMTAkJCS8qIGhhc2hzaXplICovCi0rCU5VTEwsCQkJLyogaGFzaHNpemUgKi8KLSsJTlVMTAkJCS8qIGdldHNpemUgKi8KLSB9OwotIAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLWRpZmYgLS1naXQgYS9saWIvZG5zL2luY2x1ZGUvZG5zL2RiLmggYi9saWIvZG5zL2luY2x1ZGUvZG5zL2RiLmgKLWluZGV4IGE0YTQ0ODIuLmFmZjQyZDYgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL2luY2x1ZGUvZG5zL2RiLmgKLSsrKyBiL2xpYi9kbnMvaW5jbHVkZS9kbnMvZGIuaAotQEAgLTE5NSw2ICsxOTUsOCBAQCB0eXBlZGVmIHN0cnVjdCBkbnNfZGJtZXRob2RzIHsKLSAJCQkJICAgZG5zX3JkYXRhc2V0X3QgKnNpZ3JkYXRhc2V0KTsKLSAJaXNjX3Jlc3VsdF90CSgqc2V0Y2FjaGVzdGF0cykoZG5zX2RiX3QgKmRiLCBpc2Nfc3RhdHNfdCAqc3RhdHMpOwotIAl1bnNpZ25lZCBpbnQJKCpoYXNoc2l6ZSkoZG5zX2RiX3QgKmRiKTsKLSsJaXNjX3Jlc3VsdF90CSgqZ2V0c2l6ZSkoZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sCi0rCQkJCSAgIGlzY191aW50NjRfdCAqcmVjb3JkcywgaXNjX3VpbnQ2NF90ICpieXRlcyk7Ci0gfSBkbnNfZGJtZXRob2RzX3Q7Ci0gCi0gdHlwZWRlZiBpc2NfcmVzdWx0X3QKLUBAIC0xNDg1LDYgKzE0ODcsMjQgQEAgZG5zX2RiX2dldG5zZWMzcGFyYW1ldGVycyhkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwKLSAgKi8KLSAKLSBpc2NfcmVzdWx0X3QKLStkbnNfZGJfZ2V0c2l6ZShkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwgaXNjX3VpbnQ2NF90ICpyZWNvcmRzLAotKyAgICAgICAgICAgICAgIGlzY191aW50NjRfdCAqYnl0ZXMpOwotKy8qJTwKLSsgKiBHZXQgdGhlIG51bWJlciBvZiByZWNvcmRzIGluIHRoZSBnaXZlbiB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSBhcyB3ZWxsCi0rICogYXMgdGhlIG51bWJlciBieXRlcyB1c2VkIHRvIHN0b3JlIHRob3NlIHJlY29yZHMuCi0rICoKLSsgKiBSZXF1aXJlczoKLSsgKiBcbGkJJ2RiJyBpcyBhIHZhbGlkIHpvbmUgZGF0YWJhc2UuCi0rICogXGxpCSd2ZXJzaW9uJyBpcyBOVUxMIG9yIGEgdmFsaWQgdmVyc2lvbi4KLSsgKiBcbGkJJ3JlY29yZHMnIGlzIE5VTEwgb3IgYSBwb2ludGVyIHRvIHJldHVybiB0aGUgcmVjb3JkIGNvdW50IGluLgotKyAqIFxsaQknYnl0ZXMnIGlzIE5VTEwgb3IgYSBwb2ludGVyIHRvIHJldHVybiB0aGUgYnl0ZSBjb3VudCBpbi4KLSsgKgotKyAqIFJldHVybnM6Ci0rICogXGxpCSNJU0NfUl9TVUNDRVNTCi0rICogXGxpCSNJU0NfUl9OT1RJTVBMRU1FTlRFRAotKyAqLwotKwotK2lzY19yZXN1bHRfdAotIGRuc19kYl9maW5kbnNlYzNub2RlKGRuc19kYl90ICpkYiwgZG5zX25hbWVfdCAqbmFtZSwKLSAJCSAgICAgaXNjX2Jvb2xlYW5fdCBjcmVhdGUsIGRuc19kYm5vZGVfdCAqKm5vZGVwKTsKLSAvKiU8Ci1kaWZmIC0tZ2l0IGEvbGliL2Rucy9pbmNsdWRlL2Rucy9yZGF0YXNsYWIuaCBiL2xpYi9kbnMvaW5jbHVkZS9kbnMvcmRhdGFzbGFiLmgKLWluZGV4IDNhYzQ0YjguLjJlMWU3NTkgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL2luY2x1ZGUvZG5zL3JkYXRhc2xhYi5oCi0rKysgYi9saWIvZG5zL2luY2x1ZGUvZG5zL3JkYXRhc2xhYi5oCi1AQCAtMTA0LDYgKzEwNCw3IEBAIGRuc19yZGF0YXNsYWJfdG9yZGF0YXNldCh1bnNpZ25lZCBjaGFyICpzbGFiLCB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWxlbiwKLSAgKiBFbnN1cmVzOgotICAqXGxpCSdyZGF0YXNldCcgaXMgYXNzb2NpYXRlZCBhbmQgcG9pbnRzIHRvIGEgdmFsaWQgcmRhdGFlc3QuCi0gICovCi0rCi0gdW5zaWduZWQgaW50Ci0gZG5zX3JkYXRhc2xhYl9zaXplKHVuc2lnbmVkIGNoYXIgKnNsYWIsIHVuc2lnbmVkIGludCByZXNlcnZlbGVuKTsKLSAvKiU8Ci1AQCAtMTE2LDYgKzExNywxOCBAQCBkbnNfcmRhdGFzbGFiX3NpemUodW5zaWduZWQgY2hhciAqc2xhYiwgdW5zaWduZWQgaW50IHJlc2VydmVsZW4pOwotICAqXGxpCVRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHNsYWIsIGluY2x1ZGluZyB0aGUgcmVzZXJ2ZWxlbi4KLSAgKi8KLSAKLSt1bnNpZ25lZCBpbnQKLStkbnNfcmRhdGFzbGFiX2NvdW50KHVuc2lnbmVkIGNoYXIgKnNsYWIsIHVuc2lnbmVkIGludCByZXNlcnZlbGVuKTsKLSsvKiU8Ci0rICogUmV0dXJuIHRoZSBudW1iZXIgb2YgcmVjb3JkcyBpbiB0aGUgcmRhdGFzbGFiCi0rICoKLSsgKiBSZXF1aXJlczoKLSsgKlxsaQknc2xhYicgcG9pbnRzIHRvIGEgc2xhYi4KLSsgKgotKyAqIFJldHVybnM6Ci0rICpcbGkJVGhlIG51bWJlciBvZiByZWNvcmRzIGluIHRoZSBzbGFiLgotKyAqLwotKwotIGlzY19yZXN1bHRfdAotIGRuc19yZGF0YXNsYWJfbWVyZ2UodW5zaWduZWQgY2hhciAqb3NsYWIsIHVuc2lnbmVkIGNoYXIgKm5zbGFiLAotIAkJICAgIHVuc2lnbmVkIGludCByZXNlcnZlbGVuLCBpc2NfbWVtX3QgKm1jdHgsCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9pbmNsdWRlL2Rucy9yZXN1bHQuaCBiL2xpYi9kbnMvaW5jbHVkZS9kbnMvcmVzdWx0LmgKLWluZGV4IDdkMTFjMmIuLjkzZDFmZDUgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL2luY2x1ZGUvZG5zL3Jlc3VsdC5oCi0rKysgYi9saWIvZG5zL2luY2x1ZGUvZG5zL3Jlc3VsdC5oCi1AQCAtMTU3LDggKzE1NywxMiBAQAotICNkZWZpbmUgRE5TX1JfQkFEQ0RTCQkJKElTQ19SRVNVTFRDTEFTU19ETlMgKyAxMTEpCi0gI2RlZmluZSBETlNfUl9CQURDRE5TS0VZCQkoSVNDX1JFU1VMVENMQVNTX0ROUyArIDExMikKLSAjZGVmaW5lIEROU19SX09QVEVSUgkJCShJU0NfUkVTVUxUQ0xBU1NfRE5TICsgMTEzKQotKyNkZWZpbmUgRE5TX1JfQkFERE5TVEFQCQkJKElTQ19SRVNVTFRDTEFTU19ETlMgKyAxMTQpCi0rI2RlZmluZSBETlNfUl9CQURUU0lHCQkJKElTQ19SRVNVTFRDTEFTU19ETlMgKyAxMTUpCi0rI2RlZmluZSBETlNfUl9CQURTSUcwCQkJKElTQ19SRVNVTFRDTEFTU19ETlMgKyAxMTYpCi0rI2RlZmluZSBETlNfUl9UT09NQU5ZUkVDT1JEUwkJKElTQ19SRVNVTFRDTEFTU19ETlMgKyAxMTcpCi0gCi0tI2RlZmluZSBETlNfUl9OUkVTVUxUUwkJCTExNAkvKiU8IE51bWJlciBvZiByZXN1bHRzICovCi0rI2RlZmluZSBETlNfUl9OUkVTVUxUUwkJCTExOAkvKiU8IE51bWJlciBvZiByZXN1bHRzICovCi0gCi0gLyoKLSAgKiBETlMgd2lyZSBmb3JtYXQgcmNvZGVzLgotZGlmZiAtLWdpdCBhL2xpYi9kbnMvaW5jbHVkZS9kbnMvem9uZS5oIGIvbGliL2Rucy9pbmNsdWRlL2Rucy96b25lLmgKLWluZGV4IGE5MzY3ZjEuLjIyNzU0MGIgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL2luY2x1ZGUvZG5zL3pvbmUuaAotKysrIGIvbGliL2Rucy9pbmNsdWRlL2Rucy96b25lLmgKLUBAIC0yOTYsNiArMjk2LDMyIEBAIGRuc196b25lX2dldGZpbGUoZG5zX3pvbmVfdCAqem9uZSk7Ci0gICovCi0gCi0gdm9pZAotK2Ruc196b25lX3NldG1heHJlY29yZHMoZG5zX3pvbmVfdCAqem9uZSwgaXNjX3VpbnQzMl90IHJlY29yZHMpOwotKy8qJTwKLSsgKiAJU2V0cyB0aGUgbWF4aW1pbSBudW1iZXIgb2YgcmVjb3JkcyBwZXJtaXR0ZWQgaW4gYSB6b25lLgotKyAqCTAgaW1wbGllcyB1bmxpbWl0ZWQuCi0rICoKLSsgKiBSZXF1aXJlczoKLSsgKlxsaQknem9uZScgdG8gYmUgdmFsaWQgaW5pdGlhbGlzZWQgem9uZS4KLSsgKgotKyAqIFJldHVybnM6Ci0rICpcbGkJdm9pZAotKyAqLwotKwotK2lzY191aW50MzJfdAotK2Ruc196b25lX2dldG1heHJlY29yZHMoZG5zX3pvbmVfdCAqem9uZSk7Ci0rLyolPAotKyAqIAlHZXRzIHRoZSBtYXhpbWltIG51bWJlciBvZiByZWNvcmRzIHBlcm1pdHRlZCBpbiBhIHpvbmUuCi0rICoJMCBpbXBsaWVzIHVubGltaXRlZC4KLSsgKgotKyAqIFJlcXVpcmVzOgotKyAqXGxpCSd6b25lJyB0byBiZSB2YWxpZCBpbml0aWFsaXNlZCB6b25lLgotKyAqCi0rICogUmV0dXJuczoKLSsgKlxsaQlpc2NfdWludDMyX3QgbWF4cmVjb3Jkcy4KLSsgKi8KLSsKLSt2b2lkCi0gZG5zX3pvbmVfc2V0bWF4dHRsKGRuc196b25lX3QgKnpvbmUsIGlzY191aW50MzJfdCBtYXh0dGwpOwotIC8qJTwKLSAgKiAJU2V0cyB0aGUgbWF4IHR0bCBvZiB0aGUgem9uZS4KLUBAIC0zMTYsNyArMzQyLDcgQEAgZG5zX3pvbmVfZ2V0bWF4dHRsKGRuc196b25lX3QgKnpvbmUpOwotICAqXGxpCSd6b25lJyB0byBiZSB2YWxpZCBpbml0aWFsaXNlZCB6b25lLgotICAqCi0gICogUmV0dXJuczoKLS0gKlxsaQlpc2NfdWludDMyX3QgbWF4dHRsLgotKyAqXGxpCWRuc190dGxfdCBtYXh0dGwuCi0gICovCi0gCi0gaXNjX3Jlc3VsdF90Ci1kaWZmIC0tZ2l0IGEvbGliL2Rucy9yYnRkYi5jIGIvbGliL2Rucy9yYnRkYi5jCi1pbmRleCA2MmJlY2ZjLi43MmQ3MjJmIDEwMDY0NAotLS0tIGEvbGliL2Rucy9yYnRkYi5jCi0rKysgYi9saWIvZG5zL3JidGRiLmMKLUBAIC0yMDksNiArMjA5LDcgQEAgdHlwZWRlZiBpc2NfdWludDY0X3QgICAgICAgICAgICAgICAgICAgIHJidGRiX3NlcmlhbF90OwotICNkZWZpbmUgZnJlZV9yYnRkYl9jYWxsYmFjayBmcmVlX3JidGRiX2NhbGxiYWNrNjQKLSAjZGVmaW5lIGZyZWVfcmRhdGFzZXQgZnJlZV9yZGF0YXNldDY0Ci0gI2RlZmluZSBnZXRuc2VjM3BhcmFtZXRlcnMgZ2V0bnNlYzNwYXJhbWV0ZXJzNjQKLSsjZGVmaW5lIGdldHNpemUgZ2V0c2l6ZTY0Ci0gI2RlZmluZSBnZXRvcmlnaW5ub2RlIGdldG9yaWdpbm5vZGU2NAotICNkZWZpbmUgZ2V0cnJzZXRzdGF0cyBnZXRycnNldHN0YXRzNjQKLSAjZGVmaW5lIGdldHNpZ25pbmd0aW1lIGdldHNpZ25pbmd0aW1lNjQKLUBAIC01ODksNiArNTkwLDEzIEBAIHR5cGVkZWYgc3RydWN0IHJidGRiX3ZlcnNpb24gewotIAlpc2NfdWludDE2X3QJCQlpdGVyYXRpb25zOwotIAlpc2NfdWludDhfdAkJCXNhbHRfbGVuZ3RoOwotIAl1bnNpZ25lZCBjaGFyCQkJc2FsdFtETlNfTlNFQzNfU0FMVFNJWkVdOwotKwotKwkvKgotKwkgKiByZWNvcmRzIGFuZCBieXRlcyBhcmUgY292ZXJlZCBieSByd2xvY2suCi0rCSAqLwotKwlpc2Nfcndsb2NrX3QgICAgICAgICAgICAgICAgICAgIHJ3bG9jazsKLSsJaXNjX3VpbnQ2NF90CQkJcmVjb3JkczsKLSsJaXNjX3VpbnQ2NF90CQkJYnl0ZXM7Ci0gfSByYnRkYl92ZXJzaW9uX3Q7Ci0gCi0gdHlwZWRlZiBJU0NfTElTVChyYnRkYl92ZXJzaW9uX3QpICAgICAgIHJidGRiX3ZlcnNpb25saXN0X3Q7Ci1AQCAtMTEzMCw2ICsxMTM4LDcgQEAgZnJlZV9yYnRkYihkbnNfcmJ0ZGJfdCAqcmJ0ZGIsIGlzY19ib29sZWFuX3QgbG9nLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCUlOU0lTVChyZWZzID09IDApOwotIAkJVU5MSU5LKHJidGRiLT5vcGVuX3ZlcnNpb25zLCByYnRkYi0+Y3VycmVudF92ZXJzaW9uLCBsaW5rKTsKLSAJCWlzY19yZWZjb3VudF9kZXN0cm95KCZyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yZWZlcmVuY2VzKTsKLSsJCWlzY19yd2xvY2tfZGVzdHJveSgmcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cndsb2NrKTsKLSAJCWlzY19tZW1fcHV0KHJidGRiLT5jb21tb24ubWN0eCwgcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbiwKLSAJCQkgICAgc2l6ZW9mKHJidGRiX3ZlcnNpb25fdCkpOwotIAl9Ci1AQCAtMTM4Myw2ICsxMzkyLDcgQEAgYWxsb2NhdGVfdmVyc2lvbihpc2NfbWVtX3QgKm1jdHgsIHJidGRiX3NlcmlhbF90IHNlcmlhbCwKLSAKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0gbmV3dmVyc2lvbihkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqKnZlcnNpb25wKSB7Ci0rCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCWRuc19yYnRkYl90ICpyYnRkYiA9IChkbnNfcmJ0ZGJfdCAqKWRiOwotIAlyYnRkYl92ZXJzaW9uX3QgKnZlcnNpb247Ci0gCi1AQCAtMTQxNSwxMyArMTQyNSwyOCBAQCBuZXd2ZXJzaW9uKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICoqdmVyc2lvbnApIHsKLSAJCQl2ZXJzaW9uLT5zYWx0X2xlbmd0aCA9IDA7Ci0gCQkJbWVtc2V0KHZlcnNpb24tPnNhbHQsIDAsIHNpemVvZih2ZXJzaW9uLT5zYWx0KSk7Ci0gCQl9Ci0tCQlyYnRkYi0+bmV4dF9zZXJpYWwrKzsKLS0JCXJidGRiLT5mdXR1cmVfdmVyc2lvbiA9IHZlcnNpb247Ci0tCX0KLSsJCXJlc3VsdCA9IGlzY19yd2xvY2tfaW5pdCgmdmVyc2lvbi0+cndsb2NrLCAwLCAwKTsKLSsJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotKwkJCWlzY19yZWZjb3VudF9kZXN0cm95KCZ2ZXJzaW9uLT5yZWZlcmVuY2VzKTsKLSsJCQlpc2NfbWVtX3B1dChyYnRkYi0+Y29tbW9uLm1jdHgsIHZlcnNpb24sCi0rCQkJCSAgICBzaXplb2YoKnZlcnNpb24pKTsKLSsJCQl2ZXJzaW9uID0gTlVMTDsKLSsJCX0gZWxzZSB7Ci0rCQkJUldMT0NLKCZyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yd2xvY2ssCi0rCQkJICAgICAgIGlzY19yd2xvY2t0eXBlX3JlYWQpOwotKwkJCXZlcnNpb24tPnJlY29yZHMgPSByYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yZWNvcmRzOwotKwkJCXZlcnNpb24tPmJ5dGVzID0gcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+Ynl0ZXM7Ci0rCQkJUldVTkxPQ0soJnJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJ3bG9jaywKLSsJCQkJIGlzY19yd2xvY2t0eXBlX3JlYWQpOwotKwkJCXJidGRiLT5uZXh0X3NlcmlhbCsrOwotKwkJCXJidGRiLT5mdXR1cmVfdmVyc2lvbiA9IHZlcnNpb247Ci0rCQl9Ci0rCX0gZWxzZQotKwkJcmVzdWx0ID0gSVNDX1JfTk9NRU1PUlk7Ci0gCVJCVERCX1VOTE9DSygmcmJ0ZGItPmxvY2ssIGlzY19yd2xvY2t0eXBlX3dyaXRlKTsKLSAKLSAJaWYgKHZlcnNpb24gPT0gTlVMTCkKLS0JCXJldHVybiAoSVNDX1JfTk9NRU1PUlkpOwotKwkJcmV0dXJuIChyZXN1bHQpOwotIAotIAkqdmVyc2lvbnAgPSB2ZXJzaW9uOwotIAotQEAgLTI2ODEsNiArMjcwNiw3IEBAIGNsb3NldmVyc2lvbihkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqKnZlcnNpb25wLCBpc2NfYm9vbGVhbl90IGNvbW1pdCkgewotIAotIAlpZiAoY2xlYW51cF92ZXJzaW9uICE9IE5VTEwpIHsKLSAJCUlOU0lTVChFTVBUWShjbGVhbnVwX3ZlcnNpb24tPmNoYW5nZWRfbGlzdCkpOwotKwkJaXNjX3J3bG9ja19kZXN0cm95KCZjbGVhbnVwX3ZlcnNpb24tPnJ3bG9jayk7Ci0gCQlpc2NfbWVtX3B1dChyYnRkYi0+Y29tbW9uLm1jdHgsIGNsZWFudXBfdmVyc2lvbiwKLSAJCQkgICAgc2l6ZW9mKCpjbGVhbnVwX3ZlcnNpb24pKTsKLSAJfQotQEAgLTYyNTQsNiArNjI4MCwyNiBAQCBhZGQzMihkbnNfcmJ0ZGJfdCAqcmJ0ZGIsIGRuc19yYnRub2RlX3QgKnJidG5vZGUsIHJidGRiX3ZlcnNpb25fdCAqcmJ0dmVyc2lvbiwKLSAJCWVsc2UKLSAJCQlyYnRub2RlLT5kYXRhID0gbmV3aGVhZGVyOwotIAkJbmV3aGVhZGVyLT5uZXh0ID0gdG9waGVhZGVyLT5uZXh0OwotKwkJaWYgKHJidHZlcnNpb24gIT0gTlVMTCkKLSsJCQlSV0xPQ0soJnJidHZlcnNpb24tPnJ3bG9jaywgaXNjX3J3bG9ja3R5cGVfd3JpdGUpOwotKwkJaWYgKHJidHZlcnNpb24gIT0gTlVMTCAmJiAhaGVhZGVyX254KSB7Ci0rCQkJcmJ0dmVyc2lvbi0+cmVjb3JkcyAtPQotKwkJCQlkbnNfcmRhdGFzbGFiX2NvdW50KCh1bnNpZ25lZCBjaGFyICopaGVhZGVyLAotKwkJCQkJCSAgICBzaXplb2YoKmhlYWRlcikpOwotKwkJCXJidHZlcnNpb24tPmJ5dGVzIC09Ci0rCQkJCWRuc19yZGF0YXNsYWJfc2l6ZSgodW5zaWduZWQgY2hhciAqKWhlYWRlciwKLSsJCQkJCQkgICBzaXplb2YoKmhlYWRlcikpOwotKwkJfQotKwkJaWYgKHJidHZlcnNpb24gIT0gTlVMTCAmJiAhbmV3aGVhZGVyX254KSB7Ci0rCQkJcmJ0dmVyc2lvbi0+cmVjb3JkcyArPQotKwkJCQlkbnNfcmRhdGFzbGFiX2NvdW50KCh1bnNpZ25lZCBjaGFyICopbmV3aGVhZGVyLAotKwkJCQkJCSAgICBzaXplb2YoKm5ld2hlYWRlcikpOwotKwkJCXJidHZlcnNpb24tPmJ5dGVzICs9Ci0rCQkJCWRuc19yZGF0YXNsYWJfc2l6ZSgodW5zaWduZWQgY2hhciAqKW5ld2hlYWRlciwKLSsJCQkJCQkgICBzaXplb2YoKm5ld2hlYWRlcikpOwotKwkJfQotKwkJaWYgKHJidHZlcnNpb24gIT0gTlVMTCkKLSsJCQlSV1VOTE9DSygmcmJ0dmVyc2lvbi0+cndsb2NrLCBpc2Nfcndsb2NrdHlwZV93cml0ZSk7Ci0gCQlpZiAobG9hZGluZykgewotIAkJCS8qCi0gCQkJICogVGhlcmUgYXJlIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gJ2hlYWRlcicgd2hlbgotQEAgLTYzNTUsNiArNjQwMSwxNiBAQCBhZGQzMihkbnNfcmJ0ZGJfdCAqcmJ0ZGIsIGRuc19yYnRub2RlX3QgKnJidG5vZGUsIHJidGRiX3ZlcnNpb25fdCAqcmJ0dmVyc2lvbiwKLSAJCQluZXdoZWFkZXItPmRvd24gPSBOVUxMOwotIAkJCXJidG5vZGUtPmRhdGEgPSBuZXdoZWFkZXI7Ci0gCQl9Ci0rCQlpZiAocmJ0dmVyc2lvbiAhPSBOVUxMICYmICFuZXdoZWFkZXJfbngpIHsKLSsJCQlSV0xPQ0soJnJidHZlcnNpb24tPnJ3bG9jaywgaXNjX3J3bG9ja3R5cGVfd3JpdGUpOwotKwkJCXJidHZlcnNpb24tPnJlY29yZHMgKz0KLSsJCQkJZG5zX3JkYXRhc2xhYl9jb3VudCgodW5zaWduZWQgY2hhciAqKW5ld2hlYWRlciwKLSsJCQkJCQkgICAgc2l6ZW9mKCpuZXdoZWFkZXIpKTsKLSsJCQlyYnR2ZXJzaW9uLT5ieXRlcyArPQotKwkJCQlkbnNfcmRhdGFzbGFiX3NpemUoKHVuc2lnbmVkIGNoYXIgKiluZXdoZWFkZXIsCi0rCQkJCQkJICAgc2l6ZW9mKCpuZXdoZWFkZXIpKTsKLSsJCQlSV1VOTE9DSygmcmJ0dmVyc2lvbi0+cndsb2NrLCBpc2Nfcndsb2NrdHlwZV93cml0ZSk7Ci0rCQl9Ci0gCQlpZHggPSBuZXdoZWFkZXItPm5vZGUtPmxvY2tudW07Ci0gCQlpZiAoSVNfQ0FDSEUocmJ0ZGIpKSB7Ci0gCQkJSVNDX0xJU1RfUFJFUEVORChyYnRkYi0+cmRhdGFzZXRzW2lkeF0sCi1AQCAtNjgxMSw2ICs2ODY3LDEyIEBAIHN1YnRyYWN0cmRhdGFzZXQoZG5zX2RiX3QgKmRiLCBkbnNfZGJub2RlX3QgKm5vZGUsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwKLSAJCQkgKi8KLSAJCQluZXdoZWFkZXItPmFkZGl0aW9uYWxfYXV0aCA9IE5VTEw7Ci0gCQkJbmV3aGVhZGVyLT5hZGRpdGlvbmFsX2dsdWUgPSBOVUxMOwotKwkJCXJidHZlcnNpb24tPnJlY29yZHMgKz0KLSsJCQkJZG5zX3JkYXRhc2xhYl9jb3VudCgodW5zaWduZWQgY2hhciAqKW5ld2hlYWRlciwKLSsJCQkJCQkgICAgc2l6ZW9mKCpuZXdoZWFkZXIpKTsKLSsJCQlyYnR2ZXJzaW9uLT5ieXRlcyArPQotKwkJCQlkbnNfcmRhdGFzbGFiX3NpemUoKHVuc2lnbmVkIGNoYXIgKiluZXdoZWFkZXIsCi0rCQkJCQkJICAgc2l6ZW9mKCpuZXdoZWFkZXIpKTsKLSAJCX0gZWxzZSBpZiAocmVzdWx0ID09IEROU19SX05YUlJTRVQpIHsKLSAJCQkvKgotIAkJCSAqIFRoaXMgc3VidHJhY3Rpb24gd291bGQgcmVtb3ZlIGFsbCBvZiB0aGUgcmRhdGE7Ci1AQCAtNjg0Niw2ICs2OTA4LDEyIEBAIHN1YnRyYWN0cmRhdGFzZXQoZG5zX2RiX3QgKmRiLCBkbnNfZGJub2RlX3QgKm5vZGUsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwKLSAJCSAqIHRvcGhlYWRlci4KLSAJCSAqLwotIAkJSU5TSVNUKHJidHZlcnNpb24tPnNlcmlhbCA+PSB0b3BoZWFkZXItPnNlcmlhbCk7Ci0rCQlyYnR2ZXJzaW9uLT5yZWNvcmRzIC09Ci0rCQkJCWRuc19yZGF0YXNsYWJfY291bnQoKHVuc2lnbmVkIGNoYXIgKiloZWFkZXIsCi0rCQkJCQkJICAgIHNpemVvZigqaGVhZGVyKSk7Ci0rCQlyYnR2ZXJzaW9uLT5ieXRlcyAtPQotKwkJCQlkbnNfcmRhdGFzbGFiX3NpemUoKHVuc2lnbmVkIGNoYXIgKiloZWFkZXIsCi0rCQkJCQkJICAgc2l6ZW9mKCpoZWFkZXIpKTsKLSAJCWlmICh0b3BoZWFkZXJfcHJldiAhPSBOVUxMKQotIAkJCXRvcGhlYWRlcl9wcmV2LT5uZXh0ID0gbmV3aGVhZGVyOwotIAkJZWxzZQotQEAgLTcxNzIsNiArNzI0MCw3IEBAIHJidF9kYXRhZml4ZXIoZG5zX3JidG5vZGVfdCAqcmJ0bm9kZSwgdm9pZCAqYmFzZSwgc2l6ZV90IGZpbGVzaXplLAotIAl1bnNpZ25lZCBjaGFyICpsaW1pdCA9ICgodW5zaWduZWQgY2hhciAqKSBiYXNlKSArIGZpbGVzaXplOwotIAl1bnNpZ25lZCBjaGFyICpwOwotIAlzaXplX3Qgc2l6ZTsKLSsJdW5zaWduZWQgaW50IGNvdW50OwotIAotIAlSRVFVSVJFKHJidG5vZGUgIT0gTlVMTCk7Ci0gCi1AQCAtNzE3OSw2ICs3MjQ4LDkgQEAgcmJ0X2RhdGFmaXhlcihkbnNfcmJ0bm9kZV90ICpyYnRub2RlLCB2b2lkICpiYXNlLCBzaXplX3QgZmlsZXNpemUsCi0gCQlwID0gKHVuc2lnbmVkIGNoYXIgKikgaGVhZGVyOwotIAotIAkJc2l6ZSA9IGRuc19yZGF0YXNsYWJfc2l6ZShwLCBzaXplb2YoKmhlYWRlcikpOwotKwkJY291bnQgPSBkbnNfcmRhdGFzbGFiX2NvdW50KHAsIHNpemVvZigqaGVhZGVyKSk7OwotKwkJcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cmVjb3JkcyArPSBjb3VudDsKLSsJCXJidGRiLT5jdXJyZW50X3ZlcnNpb24tPmJ5dGVzICs9IHNpemU7Ci0gCQlpc2NfY3JjNjRfdXBkYXRlKGNyYywgcCwgc2l6ZSk7Ci0gI2lmZGVmIERFQlVHCi0gCQloZXhkdW1wKCJoYXNoaW5nIGhlYWRlciIsIHAsIHNpemVvZihyZGF0YXNldGhlYWRlcl90KSk7Ci1AQCAtNzc3Nyw2ICs3ODQ5LDMzIEBAIGdldG5zZWMzcGFyYW1ldGVycyhkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwgZG5zX2hhc2hfdCAqaGFzaCwKLSB9Ci0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotK2dldHNpemUoZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sIGlzY191aW50NjRfdCAqcmVjb3JkcywKLSsgICAgICAgIGlzY191aW50NjRfdCAqYnl0ZXMpCi0rewotKwlkbnNfcmJ0ZGJfdCAqcmJ0ZGI7Ci0rCWlzY19yZXN1bHRfdCByZXN1bHQgPSBJU0NfUl9TVUNDRVNTOwotKwlyYnRkYl92ZXJzaW9uX3QgKnJidHZlcnNpb24gPSB2ZXJzaW9uOwotKwotKwlyYnRkYiA9IChkbnNfcmJ0ZGJfdCAqKWRiOwotKwotKwlSRVFVSVJFKFZBTElEX1JCVERCKHJidGRiKSk7Ci0rCUlOU0lTVChyYnR2ZXJzaW9uID09IE5VTEwgfHwgcmJ0dmVyc2lvbi0+cmJ0ZGIgPT0gcmJ0ZGIpOwotKwotKwlpZiAocmJ0dmVyc2lvbiA9PSBOVUxMKQotKwkJcmJ0dmVyc2lvbiA9IHJidGRiLT5jdXJyZW50X3ZlcnNpb247Ci0rCi0rCVJXTE9DSygmcmJ0dmVyc2lvbi0+cndsb2NrLCBpc2Nfcndsb2NrdHlwZV9yZWFkKTsKLSsJaWYgKHJlY29yZHMgIT0gTlVMTCkKLSsJCSpyZWNvcmRzID0gcmJ0dmVyc2lvbi0+cmVjb3JkczsKLSsKLSsJaWYgKGJ5dGVzICE9IE5VTEwpCi0rCQkqYnl0ZXMgPSByYnR2ZXJzaW9uLT5ieXRlczsKLSsJUldVTkxPQ0soJnJidHZlcnNpb24tPnJ3bG9jaywgaXNjX3J3bG9ja3R5cGVfcmVhZCk7Ci0rCi0rCXJldHVybiAocmVzdWx0KTsKLSt9Ci0rCi0rc3RhdGljIGlzY19yZXN1bHRfdAotIHNldHNpZ25pbmd0aW1lKGRuc19kYl90ICpkYiwgZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCBpc2Nfc3RkdGltZV90IHJlc2lnbikgewotIAlkbnNfcmJ0ZGJfdCAqcmJ0ZGIgPSAoZG5zX3JidGRiX3QgKilkYjsKLSAJaXNjX3N0ZHRpbWVfdCBvbGRyZXNpZ247Ci1AQCAtNzk3Miw3ICs4MDcxLDggQEAgc3RhdGljIGRuc19kYm1ldGhvZHNfdCB6b25lX21ldGhvZHMgPSB7Ci0gCU5VTEwsCi0gCU5VTEwsCi0gCU5VTEwsCi0tCWhhc2hzaXplCi0rCWhhc2hzaXplLAotKwlnZXRzaXplCi0gfTsKLSAKLSBzdGF0aWMgZG5zX2RibWV0aG9kc190IGNhY2hlX21ldGhvZHMgPSB7Ci1AQCAtODAxOCw3ICs4MTE4LDggQEAgc3RhdGljIGRuc19kYm1ldGhvZHNfdCBjYWNoZV9tZXRob2RzID0gewotIAlOVUxMLAotIAlOVUxMLAotIAlzZXRjYWNoZXN0YXRzLAotLQloYXNoc2l6ZQotKwloYXNoc2l6ZSwKLSsJTlVMTAotIH07Ci0gCi0gaXNjX3Jlc3VsdF90Ci1AQCAtODMxMCw2ICs4NDExLDIwIEBAIGRuc19yYnRkYl9jcmVhdGUKLSAJcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+c2FsdF9sZW5ndGggPSAwOwotIAltZW1zZXQocmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+c2FsdCwgMCwKLSAJICAgICAgIHNpemVvZihyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5zYWx0KSk7Ci0rCXJlc3VsdCA9IGlzY19yd2xvY2tfaW5pdCgmcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cndsb2NrLCAwLCAwKTsKLSsJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0rCQlpc2NfcmVmY291bnRfZGVzdHJveSgmcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cmVmZXJlbmNlcyk7Ci0rCQlpc2NfbWVtX3B1dChtY3R4LCByYnRkYi0+Y3VycmVudF92ZXJzaW9uLAotKwkJCSAgICBzaXplb2YoKnJidGRiLT5jdXJyZW50X3ZlcnNpb24pKTsKLSsJCXJidGRiLT5jdXJyZW50X3ZlcnNpb24gPSBOVUxMOwotKwkJaXNjX3JlZmNvdW50X2RlY3JlbWVudCgmcmJ0ZGItPnJlZmVyZW5jZXMsIE5VTEwpOwotKwkJaXNjX3JlZmNvdW50X2Rlc3Ryb3koJnJidGRiLT5yZWZlcmVuY2VzKTsKLSsJCWZyZWVfcmJ0ZGIocmJ0ZGIsIElTQ19GQUxTRSwgTlVMTCk7Ci0rCQlyZXR1cm4gKHJlc3VsdCk7Ci0rCX0KLSsKLSsJcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cmVjb3JkcyA9IDA7Ci0rCXJidGRiLT5jdXJyZW50X3ZlcnNpb24tPmJ5dGVzID0gMDsKLSAJcmJ0ZGItPmZ1dHVyZV92ZXJzaW9uID0gTlVMTDsKLSAJSVNDX0xJU1RfSU5JVChyYnRkYi0+b3Blbl92ZXJzaW9ucyk7Ci0gCS8qCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9yZGF0YXNsYWIuYyBiL2xpYi9kbnMvcmRhdGFzbGFiLmMKLWluZGV4IGUyOWRjODQuLjYzZTM3MjggMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3JkYXRhc2xhYi5jCi0rKysgYi9saWIvZG5zL3JkYXRhc2xhYi5jCi1AQCAtNTIzLDYgKzUyMywxOSBAQCBkbnNfcmRhdGFzbGFiX3NpemUodW5zaWduZWQgY2hhciAqc2xhYiwgdW5zaWduZWQgaW50IHJlc2VydmVsZW4pIHsKLSAJcmV0dXJuICgodW5zaWduZWQgaW50KShjdXJyZW50IC0gc2xhYikpOwotIH0KLSAKLSt1bnNpZ25lZCBpbnQKLStkbnNfcmRhdGFzbGFiX2NvdW50KHVuc2lnbmVkIGNoYXIgKnNsYWIsIHVuc2lnbmVkIGludCByZXNlcnZlbGVuKSB7Ci0rCXVuc2lnbmVkIGludCBjb3VudDsKLSsJdW5zaWduZWQgY2hhciAqY3VycmVudDsKLSsKLSsJUkVRVUlSRShzbGFiICE9IE5VTEwpOwotKwotKwljdXJyZW50ID0gc2xhYiArIHJlc2VydmVsZW47Ci0rCWNvdW50ID0gKmN1cnJlbnQrKyAqIDI1NjsKLSsJY291bnQgKz0gKmN1cnJlbnQrKzsKLSsJcmV0dXJuIChjb3VudCk7Ci0rfQotKwotIC8qCi0gICogTWFrZSB0aGUgZG5zX3JkYXRhX3QgJ3JkYXRhJyByZWZlciB0byB0aGUgc2xhYiBpdGVtCi0gICogYmVnaW5uaW5nIGF0ICcqY3VycmVudCcsIHdoaWNoIGlzIHBhcnQgb2YgYSBzbGFiIG9mIHR5cGUKLWRpZmYgLS1naXQgYS9saWIvZG5zL3Jlc3VsdC5jIGIvbGliL2Rucy9yZXN1bHQuYwotaW5kZXggN2JlNGY1Ny4uYTYyMTkwOSAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvcmVzdWx0LmMKLSsrKyBiL2xpYi9kbnMvcmVzdWx0LmMKLUBAIC0xNjcsMTEgKzE2NywxNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqdGV4dFtETlNfUl9OUkVTVUxUU10gPSB7Ci0gCSJjb3ZlcmVkIGJ5IG5lZ2F0aXZlIHRydXN0IGFuY2hvciIsICAgIC8qJTwgMTEwIEROU19SX05UQUNPVkVSRUQgKi8KLSAJImJhZCBDRFMiLAkJCSAgICAgICAvKiU8IDExMSBETlNfUl9CQURDU0QgKi8KLSAJImJhZCBDRE5TS0VZIiwJCQkgICAgICAgLyolPCAxMTIgRE5TX1JfQkFEQ0ROU0tFWSAqLwotLQkibWFsZm9ybWVkIE9QVCBvcHRpb24iCQkgICAgICAgLyolPCAxMTMgRE5TX1JfT1BURVJSICovCi0rCSJtYWxmb3JtZWQgT1BUIG9wdGlvbiIsCQkgICAgICAgLyolPCAxMTMgRE5TX1JfT1BURVJSICovCi0rCSJtYWxmb3JtZWQgRE5TVEFQIGRhdGEiLAkgICAgICAgLyolPCAxMTQgRE5TX1JfQkFERE5TVEFQICovCi0rCi0rCSJUU0lHIGluIHdyb25nIGxvY2F0aW9uIiwJICAgICAgIC8qJTwgMTE1IEROU19SX0JBRFRTSUcgKi8KLSsJIlNJRygwKSBpbiB3cm9uZyBsb2NhdGlvbiIsCSAgICAgICAvKiU8IDExNiBETlNfUl9CQURTSUcwICovCi0rCSJ0b28gbWFueSByZWNvcmRzIiwJICAgICAgICAgICAgICAgLyolPCAxMTcgRE5TX1JfVE9PTUFOWVJFQ09SRFMgKi8KLSB9OwotIAotIHN0YXRpYyBjb25zdCBjaGFyICpyY29kZV90ZXh0W0ROU19SX05SQ09ERVJFU1VMVFNdID0gewotLQkiTk9FUlJPUiIsCQkJCS8qJTwgMCBETlNfUl9OT0VST1IgKi8KLSsJIk5PRVJST1IiLAkJCQkvKiU8IDAgRE5TX1JfTk9FUlJPUiAqLwotIAkiRk9STUVSUiIsCQkJCS8qJTwgMSBETlNfUl9GT1JNRVJSICovCi0gCSJTRVJWRkFJTCIsCQkJCS8qJTwgMiBETlNfUl9TRVJWRkFJTCAqLwotIAkiTlhET01BSU4iLAkJCQkvKiU8IDMgRE5TX1JfTlhET01BSU4gKi8KLWRpZmYgLS1naXQgYS9saWIvZG5zL3NkYi5jIGIvbGliL2Rucy9zZGIuYwotaW5kZXggYWJmZWViMC4uMTkzOTdlMCAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvc2RiLmMKLSsrKyBiL2xpYi9kbnMvc2RiLmMKLUBAIC0xMjk4LDcgKzEyOTgsOCBAQCBzdGF0aWMgZG5zX2RibWV0aG9kc190IHNkYl9tZXRob2RzID0gewotIAlmaW5kbm9kZWV4dCwKLSAJZmluZGV4dCwKLSAJTlVMTCwJCQkvKiBzZXRjYWNoZXN0YXRzICovCi0tCU5VTEwJCQkvKiBoYXNoc2l6ZSAqLwotKwlOVUxMLAkJCS8qIGhhc2hzaXplICovCi0rCU5VTEwJCQkvKiBnZXRzaXplICovCi0gfTsKLSAKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci1kaWZmIC0tZ2l0IGEvbGliL2Rucy9zZGx6LmMgYi9saWIvZG5zL3NkbHouYwotaW5kZXggYjExOThhNC4uMGUzMTYzZCAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvc2Rsei5jCi0rKysgYi9saWIvZG5zL3NkbHouYwotQEAgLTEyNjksNyArMTI2OSw4IEBAIHN0YXRpYyBkbnNfZGJtZXRob2RzX3Qgc2RsemRiX21ldGhvZHMgPSB7Ci0gCWZpbmRub2RlZXh0LAotIAlmaW5kZXh0LAotIAlOVUxMLAkJCS8qIHNldGNhY2hlc3RhdHMgKi8KLS0JTlVMTAkJCS8qIGhhc2hzaXplICovCi0rCU5VTEwsCQkJLyogaGFzaHNpemUgKi8KLSsJTlVMTAkJCS8qIGdldHNpemUgKi8KLSB9OwotIAotIC8qCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy94ZnJpbi5jIGIvbGliL2Rucy94ZnJpbi5jCi1pbmRleCAyYTZjMWI0Li5hYzU2NmUxIDEwMDY0NAotLS0tIGEvbGliL2Rucy94ZnJpbi5jCi0rKysgYi9saWIvZG5zL3hmcmluLmMKLUBAIC0xNDksNiArMTQ5LDkgQEAgc3RydWN0IGRuc194ZnJpbl9jdHggewotIAl1bnNpZ25lZCBpbnQJCW5yZWNzOwkJLyolPCBOdW1iZXIgb2YgcmVjb3JkcyByZWN2ZCAqLwotIAlpc2NfdWludDY0X3QJCW5ieXRlczsJCS8qJTwgTnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkICovCi0gCi0rCXVuc2lnbmVkIGludAkJbWF4cmVjb3JkczsJLyolPCBUaGUgbWF4aW11bSBudW1iZXIgb2YKLSsJCQkJCQkgICAgIHJlY29yZHMgc2V0IGZvciB0aGUgem9uZSAqLwotKwotIAlpc2NfdGltZV90CQlzdGFydDsJCS8qJTwgU3RhcnQgdGltZSBvZiB0aGUgdHJhbnNmZXIgKi8KLSAJaXNjX3RpbWVfdAkJZW5kOwkJLyolPCBFbmQgdGltZSBvZiB0aGUgdHJhbnNmZXIgKi8KLSAKLUBAIC0zMDksMTAgKzMxMiwxOCBAQCBheGZyX3B1dGRhdGEoZG5zX3hmcmluX2N0eF90ICp4ZnIsIGRuc19kaWZmb3BfdCBvcCwKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0gYXhmcl9hcHBseShkbnNfeGZyaW5fY3R4X3QgKnhmcikgewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotKwlpc2NfdWludDY0X3QgcmVjb3JkczsKLSAKLSAJQ0hFQ0soZG5zX2RpZmZfbG9hZCgmeGZyLT5kaWZmLCB4ZnItPmF4ZnIuYWRkLCB4ZnItPmF4ZnIuYWRkX3ByaXZhdGUpKTsKLSAJeGZyLT5kaWZmbGVuID0gMDsKLSAJZG5zX2RpZmZfY2xlYXIoJnhmci0+ZGlmZik7Ci0rCWlmICh4ZnItPm1heHJlY29yZHMgIT0gMFUpIHsKLSsJCXJlc3VsdCA9IGRuc19kYl9nZXRzaXplKHhmci0+ZGIsIHhmci0+dmVyLCAmcmVjb3JkcywgTlVMTCk7Ci0rCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgJiYgcmVjb3JkcyA+IHhmci0+bWF4cmVjb3JkcykgewotKwkJCXJlc3VsdCA9IEROU19SX1RPT01BTllSRUNPUkRTOwotKwkJCWdvdG8gZmFpbHVyZTsKLSsJCX0KLSsJfQotIAlyZXN1bHQgPSBJU0NfUl9TVUNDRVNTOwotICBmYWlsdXJlOgotIAlyZXR1cm4gKHJlc3VsdCk7Ci1AQCAtMzk2LDYgKzQwNyw3IEBAIGl4ZnJfcHV0ZGF0YShkbnNfeGZyaW5fY3R4X3QgKnhmciwgZG5zX2RpZmZvcF90IG9wLAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLSBpeGZyX2FwcGx5KGRuc194ZnJpbl9jdHhfdCAqeGZyKSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0rCWlzY191aW50NjRfdCByZWNvcmRzOwotIAotIAlpZiAoeGZyLT52ZXIgPT0gTlVMTCkgewotIAkJQ0hFQ0soZG5zX2RiX25ld3ZlcnNpb24oeGZyLT5kYiwgJnhmci0+dmVyKSk7Ci1AQCAtNDAzLDYgKzQxNSwxMyBAQCBpeGZyX2FwcGx5KGRuc194ZnJpbl9jdHhfdCAqeGZyKSB7Ci0gCQkJQ0hFQ0soZG5zX2pvdXJuYWxfYmVnaW5fdHJhbnNhY3Rpb24oeGZyLT5peGZyLmpvdXJuYWwpKTsKLSAJfQotIAlDSEVDSyhkbnNfZGlmZl9hcHBseSgmeGZyLT5kaWZmLCB4ZnItPmRiLCB4ZnItPnZlcikpOwotKwlpZiAoeGZyLT5tYXhyZWNvcmRzICE9IDBVKSB7Ci0rCQlyZXN1bHQgPSBkbnNfZGJfZ2V0c2l6ZSh4ZnItPmRiLCB4ZnItPnZlciwgJnJlY29yZHMsIE5VTEwpOwotKwkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTICYmIHJlY29yZHMgPiB4ZnItPm1heHJlY29yZHMpIHsKLSsJCQlyZXN1bHQgPSBETlNfUl9UT09NQU5ZUkVDT1JEUzsKLSsJCQlnb3RvIGZhaWx1cmU7Ci0rCQl9Ci0rCX0KLSAJaWYgKHhmci0+aXhmci5qb3VybmFsICE9IE5VTEwpIHsKLSAJCXJlc3VsdCA9IGRuc19qb3VybmFsX3dyaXRlZGlmZih4ZnItPml4ZnIuam91cm5hbCwgJnhmci0+ZGlmZik7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi1AQCAtNzU5LDcgKzc3OCw3IEBAIHhmcmluX3Jlc2V0KGRuc194ZnJpbl9jdHhfdCAqeGZyKSB7Ci0gCi0gc3RhdGljIHZvaWQKLSB4ZnJpbl9mYWlsKGRuc194ZnJpbl9jdHhfdCAqeGZyLCBpc2NfcmVzdWx0X3QgcmVzdWx0LCBjb25zdCBjaGFyICptc2cpIHsKLS0JaWYgKHJlc3VsdCAhPSBETlNfUl9VUFRPREFURSkgewotKwlpZiAocmVzdWx0ICE9IEROU19SX1VQVE9EQVRFICYmIHJlc3VsdCAhPSBETlNfUl9UT09NQU5ZUkVDT1JEUykgewotIAkJeGZyaW5fbG9nKHhmciwgSVNDX0xPR19FUlJPUiwgIiVzOiAlcyIsCi0gCQkJICBtc2csIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotIAkJaWYgKHhmci0+aXNfaXhmcikKLUBAIC04NTIsNiArODcxLDcgQEAgeGZyaW5fY3JlYXRlKGlzY19tZW1fdCAqbWN0eCwKLSAJeGZyLT5ubXNnID0gMDsKLSAJeGZyLT5ucmVjcyA9IDA7Ci0gCXhmci0+bmJ5dGVzID0gMDsKLSsJeGZyLT5tYXhyZWNvcmRzID0gZG5zX3pvbmVfZ2V0bWF4cmVjb3Jkcyh6b25lKTsKLSAJaXNjX3RpbWVfbm93KCZ4ZnItPnN0YXJ0KTsKLSAKLSAJeGZyLT50c2lna2V5ID0gTlVMTDsKLWRpZmYgLS1naXQgYS9saWIvZG5zL3pvbmUuYyBiL2xpYi9kbnMvem9uZS5jCi1pbmRleCA5MGU1NThkLi4yYjBkOGU0IDEwMDY0NAotLS0tIGEvbGliL2Rucy96b25lLmMKLSsrKyBiL2xpYi9kbnMvem9uZS5jCi1AQCAtMjUzLDYgKzI1Myw4IEBAIHN0cnVjdCBkbnNfem9uZSB7Ci0gCWlzY191aW50MzJfdAkJbWF4cmV0cnk7Ci0gCWlzY191aW50MzJfdAkJbWlucmV0cnk7Ci0gCi0rCWlzY191aW50MzJfdAkJbWF4cmVjb3JkczsKLSsKLSAJaXNjX3NvY2thZGRyX3QJCSptYXN0ZXJzOwotIAlpc2NfZHNjcF90CQkqbWFzdGVyZHNjcHM7Ci0gCWRuc19uYW1lX3QJCSoqbWFzdGVya2V5bmFtZXM7Ci1AQCAtMTAwODgsNiArMTAwOTAsMjAgQEAgZG5zX3pvbmVfc2V0bWF4cmV0cnl0aW1lKGRuc196b25lX3QgKnpvbmUsIGlzY191aW50MzJfdCB2YWwpIHsKLSAJem9uZS0+bWF4cmV0cnkgPSB2YWw7Ci0gfQotIAotK2lzY191aW50MzJfdAotK2Ruc196b25lX2dldG1heHJlY29yZHMoZG5zX3pvbmVfdCAqem9uZSkgewotKyAgICAgICAgUkVRVUlSRShETlNfWk9ORV9WQUxJRCh6b25lKSk7Ci0rCi0rCXJldHVybiAoem9uZS0+bWF4cmVjb3Jkcyk7Ci0rfQotKwotK3ZvaWQKLStkbnNfem9uZV9zZXRtYXhyZWNvcmRzKGRuc196b25lX3QgKnpvbmUsIGlzY191aW50MzJfdCB2YWwpIHsKLSsgICAgICAgIFJFUVVJUkUoRE5TX1pPTkVfVkFMSUQoem9uZSkpOwotKwotKwl6b25lLT5tYXhyZWNvcmRzID0gdmFsOwotK30KLSsKLSBzdGF0aWMgaXNjX2Jvb2xlYW5fdAotIG5vdGlmeV9pc3F1ZXVlZChkbnNfem9uZV90ICp6b25lLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIGRuc19uYW1lX3QgKm5hbWUsCi0gCQlpc2Nfc29ja2FkZHJfdCAqYWRkciwgZG5zX3RzaWdrZXlfdCAqa2V5KQotQEAgLTE0NDMxLDcgKzE0NDQ3LDcgQEAgem9uZV94ZnJkb25lKGRuc196b25lX3QgKnpvbmUsIGlzY19yZXN1bHRfdCByZXN1bHQpIHsKLSAJRE5TX1pPTkVfQ0xSRkxBRyh6b25lLCBETlNfWk9ORUZMR19TT0FCRUZPUkVBWEZSKTsKLSAKLSAJVElNRV9OT1coJm5vdyk7Ci0tCXN3aXRjaCAocmVzdWx0KSB7Ci0rCXN3aXRjaCAoeGZycmVzdWx0KSB7Ci0gCWNhc2UgSVNDX1JfU1VDQ0VTUzoKLSAJCUROU19aT05FX1NFVEZMQUcoem9uZSwgRE5TX1pPTkVGTEdfTkVFRE5PVElGWSk7Ci0gCQkvKkZBTExUSFJPVUdIKi8KLUBAIC0xNDU1OCw2ICsxNDU3NCwxMSBAQCB6b25lX3hmcmRvbmUoZG5zX3pvbmVfdCAqem9uZSwgaXNjX3Jlc3VsdF90IHJlc3VsdCkgewotIAkJRE5TX1pPTkVfU0VURkxBRyh6b25lLCBETlNfWk9ORUZMQUdfTk9JWEZSKTsKLSAJCWdvdG8gc2FtZV9tYXN0ZXI7Ci0gCi0rCWNhc2UgRE5TX1JfVE9PTUFOWVJFQ09SRFM6Ci0rCQlETlNfWk9ORV9KSVRURVJfQUREKCZub3csIHpvbmUtPnJlZnJlc2gsICZ6b25lLT5yZWZyZXNodGltZSk7Ci0rCQlpbmNfc3RhdHMoem9uZSwgZG5zX3pvbmVzdGF0c2NvdW50ZXJfeGZyZmFpbCk7Ci0rCQlicmVhazsKLSsKLSAJZGVmYXVsdDoKLSAJbmV4dF9tYXN0ZXI6Ci0gCQkvKgotZGlmZiAtLWdpdCBhL2xpYi9pc2NjZmcvbmFtZWRjb25mLmMgYi9saWIvaXNjY2ZnL25hbWVkY29uZi5jCi1pbmRleCA3ODBhYjQ2Li5lN2ZmMWNjIDEwMDY0NAotLS0tIGEvbGliL2lzY2NmZy9uYW1lZGNvbmYuYwotKysrIGIvbGliL2lzY2NmZy9uYW1lZGNvbmYuYwotQEAgLTE2NzksNiArMTY3OSw3IEBAIHpvbmVfY2xhdXNlc1tdID0gewotIAl7ICJtYXN0ZXJmaWxlLWZvcm1hdCIsICZjZmdfdHlwZV9tYXN0ZXJmb3JtYXQsIDAgfSwKLSAJeyAibWF4LWl4ZnItbG9nLXNpemUiLCAmY2ZnX3R5cGVfc2l6ZSwgQ0ZHX0NMQVVTRUZMQUdfT0JTT0xFVEUgfSwKLSAJeyAibWF4LWpvdXJuYWwtc2l6ZSIsICZjZmdfdHlwZV9zaXplbm9kZWZhdWx0LCAwIH0sCi0rCXsgIm1heC1yZWNvcmRzIiwgJmNmZ190eXBlX3VpbnQzMiwgMCB9LAotIAl7ICJtYXgtcmVmcmVzaC10aW1lIiwgJmNmZ190eXBlX3VpbnQzMiwgMCB9LAotIAl7ICJtYXgtcmV0cnktdGltZSIsICZjZmdfdHlwZV91aW50MzIsIDAgfSwKLSAJeyAibWF4LXRyYW5zZmVyLWlkbGUtaW4iLCAmY2ZnX3R5cGVfdWludDMyLCAwIH0sCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi04ODY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTg4NjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MmQ2ODAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTg4NjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTkgKzAsMCBAQAotRnJvbSBjMWQwNTk5YTI0NmY2NDZkMWMyMjAxOGY4ZmEwOTQ1OTI3MGE0NGI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBbmRyZXdzIDxtYXJrYUBpc2Mub3JnPgotRGF0ZTogRnJpLCAyMSBPY3QgMjAxNiAxNDo1NToxMCArMTEwMAotU3ViamVjdDogW1BBVENIXSA0NDg5LiBbc2VjdXJpdHldIEl0IHdhcyBwb3NzaWJsZSB0byB0cmlnZ2VyIGFzc2VydGlvbnMgd2hlbgotIHByb2Nlc3NpbmcgYSByZXNwb25zZS4gKENWRS0yMDE2LTg4NjQpIFtSVCAjNDM0NjVdCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGJkNmYyN2Y1YzM1MzEzM2I1NjNmZTY5MTAwYjJmMTY4YzEyOWYzY2EpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL3NvdXJjZS5pc2Mub3JnL2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWJpbmQ5LmdpdDthPWNvbW1pdDtoPWMxZDA1OTlhMjQ2ZjY0NmQxYzIyMDE4ZjhmYTA5NDU5MjcwYTQ0YjhdCi0KLUNWRTogQ1ZFLTIwMTYtODg2NAotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDSEFOR0VTICAgICAgICAgICAgfCAgMyArKysKLSBsaWIvZG5zL3Jlc29sdmVyLmMgfCA2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKLWluZGV4IDVjOGM2MWEuLjQxY2ZjZTUgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VTCi0rKysgYi9DSEFOR0VTCi1AQCAtMSwzICsxLDYgQEAKLSs0NDg5Lglbc2VjdXJpdHldCUl0IHdhcyBwb3NzaWJsZSB0byB0cmlnZ2VyIGFzc2VydGlvbnMgd2hlbiBwcm9jZXNzaW5nCi0rCQkJYSByZXNwb25zZS4gKENWRS0yMDE2LTg4NjQpIFtSVCAjNDM0NjVdCi0rCi0gNDQ2Ny4gICBbc2VjdXJpdHldICAgICAgSXQgd2FzIHBvc3NpYmxlIHRvIHRyaWdnZXIgYW4gYXNzZXJ0aW9uIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcgYSBtZXNzYWdlLiAoQ1ZFLTIwMTYtMjc3NikgW1JUICM0MzEzOV0KLSAKLWRpZmYgLS1naXQgYS9saWIvZG5zL3Jlc29sdmVyLmMgYi9saWIvZG5zL3Jlc29sdmVyLmMKLWluZGV4IGJhMWFlMjMuLjEzYzhiNDQgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3Jlc29sdmVyLmMKLSsrKyBiL2xpYi9kbnMvcmVzb2x2ZXIuYwotQEAgLTYxMiw3ICs2MTIsOSBAQCB2YWxjcmVhdGUoZmV0Y2hjdHhfdCAqZmN0eCwgZG5zX2FkYmFkZHJpbmZvX3QgKmFkZHJpbmZvLCBkbnNfbmFtZV90ICpuYW1lLAotIAl2YWxhcmctPmFkZHJpbmZvID0gYWRkcmluZm87Ci0gCi0gCWlmICghSVNDX0xJU1RfRU1QVFkoZmN0eC0+dmFsaWRhdG9ycykpCi0tCQlJTlNJU1QoKHZhbG9wdGlvbnMgJiBETlNfVkFMSURBVE9SX0RFRkVSKSAhPSAwKTsKLSsJCXZhbG9wdGlvbnMgfD0gRE5TX1ZBTElEQVRPUl9ERUZFUjsKLSsJZWxzZQotKwkJdmFsb3B0aW9ucyAmPSB+RE5TX1ZBTElEQVRPUl9ERUZFUjsKLSAKLSAJcmVzdWx0ID0gZG5zX3ZhbGlkYXRvcl9jcmVhdGUoZmN0eC0+cmVzLT52aWV3LCBuYW1lLCB0eXBlLCByZGF0YXNldCwKLSAJCQkJICAgICAgc2lncmRhdGFzZXQsIGZjdHgtPnJtZXNzYWdlLAotQEAgLTU1MjYsMTMgKzU1MjgsNiBAQCBjYWNoZV9uYW1lKGZldGNoY3R4X3QgKmZjdHgsIGRuc19uYW1lX3QgKm5hbWUsIGRuc19hZGJhZGRyaW5mb190ICphZGRyaW5mbywKLSAJCQkJCQkJICAgcmRhdGFzZXQsCi0gCQkJCQkJCSAgIHNpZ3JkYXRhc2V0LAotIAkJCQkJCQkgICB2YWxvcHRpb25zLCB0YXNrKTsKLS0JCQkJCS8qCi0tCQkJCQkgKiBEZWZlciBhbnkgZnVydGhlciB2YWxpZGF0aW9ucy4KLS0JCQkJCSAqIFRoaXMgcHJldmVudHMgbXVsdGlwbGUgdmFsaWRhdG9ycwotLQkJCQkJICogZnJvbSBtYW5pcHVsYXRpbmcgZmN0eC0+cm1lc3NhZ2UKLS0JCQkJCSAqIHNpbXVsdGFuZW91c2x5LgotLQkJCQkJICovCi0tCQkJCQl2YWxvcHRpb25zIHw9IEROU19WQUxJREFUT1JfREVGRVI7Ci0gCQkJCX0KLSAJCQl9IGVsc2UgaWYgKENIQUlOSU5HKHJkYXRhc2V0KSkgewotIAkJCQlpZiAocmRhdGFzZXQtPnR5cGUgPT0gZG5zX3JkYXRhdHlwZV9jbmFtZSkKLUBAIC01NjQ3LDYgKzU2NDIsMTEgQEAgY2FjaGVfbmFtZShmZXRjaGN0eF90ICpmY3R4LCBkbnNfbmFtZV90ICpuYW1lLCBkbnNfYWRiYWRkcmluZm9fdCAqYWRkcmluZm8sCi0gCQkJCSAgICAgICBlcmVzdWx0ID09IEROU19SX05DQUNIRU5YUlJTRVQpOwotIAkJCX0KLSAJCQlldmVudC0+cmVzdWx0ID0gZXJlc3VsdDsKLSsJCQlpZiAoYWRicCAhPSBOVUxMICYmICphZGJwICE9IE5VTEwpIHsKLSsJCQkJaWYgKGFub2RlcCAhPSBOVUxMICYmICphbm9kZXAgIT0gTlVMTCkKLSsJCQkJCWRuc19kYl9kZXRhY2hub2RlKCphZGJwLCBhbm9kZXApOwotKwkJCQlkbnNfZGJfZGV0YWNoKGFkYnApOwotKwkJCX0KLSAJCQlkbnNfZGJfYXR0YWNoKGZjdHgtPmNhY2hlLCBhZGJwKTsKLSAJCQlkbnNfZGJfdHJhbnNmZXJub2RlKGZjdHgtPmNhY2hlLCAmbm9kZSwgYW5vZGVwKTsKLSAJCQljbG9uZV9yZXN1bHRzKGZjdHgpOwotQEAgLTU4OTcsNiArNTg5NywxMSBAQCBuY2FjaGVfbWVzc2FnZShmZXRjaGN0eF90ICpmY3R4LCBkbnNfYWRiYWRkcmluZm9fdCAqYWRkcmluZm8sCi0gCQlmY3R4LT5hdHRyaWJ1dGVzIHw9IEZDVFhfQVRUUl9IQVZFQU5TV0VSOwotIAkJaWYgKGV2ZW50ICE9IE5VTEwpIHsKLSAJCQlldmVudC0+cmVzdWx0ID0gZXJlc3VsdDsKLSsJCQlpZiAoYWRicCAhPSBOVUxMICYmICphZGJwICE9IE5VTEwpIHsKLSsJCQkJaWYgKGFub2RlcCAhPSBOVUxMICYmICphbm9kZXAgIT0gTlVMTCkKLSsJCQkJCWRuc19kYl9kZXRhY2hub2RlKCphZGJwLCBhbm9kZXApOwotKwkJCQlkbnNfZGJfZGV0YWNoKGFkYnApOwotKwkJCX0KLSAJCQlkbnNfZGJfYXR0YWNoKGZjdHgtPmNhY2hlLCBhZGJwKTsKLSAJCQlkbnNfZGJfdHJhbnNmZXJub2RlKGZjdHgtPmNhY2hlLCAmbm9kZSwgYW5vZGVwKTsKLSAJCQljbG9uZV9yZXN1bHRzKGZjdHgpOwotQEAgLTY3MTgsMTMgKzY3MjMsMTUgQEAgc3RhdGljIGlzY19yZXN1bHRfdAotIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCWRuc19tZXNzYWdlX3QgKm1lc3NhZ2U7Ci0tCWRuc19uYW1lX3QgKm5hbWUsICpkbmFtZSwgKnFuYW1lLCB0bmFtZSwgKm5zX25hbWU7Ci0rCWRuc19uYW1lX3QgKm5hbWUsICpkbmFtZSA9IE5VTEwsICpxbmFtZSwgKmRxbmFtZSwgdG5hbWUsICpuc19uYW1lOwotKwlkbnNfbmFtZV90ICpjbmFtZSA9IE5VTEw7Ci0gCWRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgKm5zX3JkYXRhc2V0OwotIAlpc2NfYm9vbGVhbl90IGRvbmUsIGV4dGVybmFsLCBjaGFpbmluZywgYWEsIGZvdW5kLCB3YW50X2NoYWluaW5nOwotLQlpc2NfYm9vbGVhbl90IGhhdmVfYW5zd2VyLCBmb3VuZF9jbmFtZSwgZm91bmRfdHlwZSwgd2FudGVkX2NoYWluaW5nOwotKwlpc2NfYm9vbGVhbl90IGhhdmVfYW5zd2VyLCBmb3VuZF9jbmFtZSwgZm91bmRfZG5hbWUsIGZvdW5kX3R5cGU7Ci0rCWlzY19ib29sZWFuX3Qgd2FudGVkX2NoYWluaW5nOwotIAl1bnNpZ25lZCBpbnQgYWZsYWc7Ci0gCWRuc19yZGF0YXR5cGVfdCB0eXBlOwotLQlkbnNfZml4ZWRuYW1lX3QgZmRuYW1lLCBmcW5hbWU7Ci0rCWRuc19maXhlZG5hbWVfdCBmZG5hbWUsIGZxbmFtZSwgZnFkbmFtZTsKLSAJZG5zX3ZpZXdfdCAqdmlldzsKLSAKLSAJRkNUWFRSQUNFKCJhbnN3ZXJfcmVzcG9uc2UiKTsKLUBAIC02NzM4LDYgKzY3NDUsNyBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAotIAlkb25lID0gSVNDX0ZBTFNFOwotIAlmb3VuZF9jbmFtZSA9IElTQ19GQUxTRTsKLSsJZm91bmRfZG5hbWUgPSBJU0NfRkFMU0U7Ci0gCWZvdW5kX3R5cGUgPSBJU0NfRkFMU0U7Ci0gCWNoYWluaW5nID0gSVNDX0ZBTFNFOwotIAloYXZlX2Fuc3dlciA9IElTQ19GQUxTRTsKLUBAIC02NzQ3LDEyICs2NzU1LDEzIEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQlhYSA9IElTQ19UUlVFOwotIAllbHNlCi0gCQlhYSA9IElTQ19GQUxTRTsKLS0JcW5hbWUgPSAmZmN0eC0+bmFtZTsKLSsJZHFuYW1lID0gcW5hbWUgPSAmZmN0eC0+bmFtZTsKLSAJdHlwZSA9IGZjdHgtPnR5cGU7Ci0gCXZpZXcgPSBmY3R4LT5yZXMtPnZpZXc7Ci0rCWRuc19maXhlZG5hbWVfaW5pdCgmZnFkbmFtZSk7Ci0gCXJlc3VsdCA9IGRuc19tZXNzYWdlX2ZpcnN0bmFtZShtZXNzYWdlLCBETlNfU0VDVElPTl9BTlNXRVIpOwotIAl3aGlsZSAoIWRvbmUgJiYgcmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpIHsKLS0JCWRuc19uYW1lcmVsbl90IG5hbWVyZWxuOwotKwkJZG5zX25hbWVyZWxuX3QgbmFtZXJlbG4sIGRuYW1lcmVsbjsKLSAJCWludCBvcmRlcjsKLSAJCXVuc2lnbmVkIGludCBubGFiZWxzOwotIAotQEAgLTY3NjAsNiArNjc2OSw4IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQlkbnNfbWVzc2FnZV9jdXJyZW50bmFtZShtZXNzYWdlLCBETlNfU0VDVElPTl9BTlNXRVIsICZuYW1lKTsKLSAJCWV4dGVybmFsID0gSVNDX1RGKCFkbnNfbmFtZV9pc3N1YmRvbWFpbihuYW1lLCAmZmN0eC0+ZG9tYWluKSk7Ci0gCQluYW1lcmVsbiA9IGRuc19uYW1lX2Z1bGxjb21wYXJlKHFuYW1lLCBuYW1lLCAmb3JkZXIsICZubGFiZWxzKTsKLSsJCWRuYW1lcmVsbiA9IGRuc19uYW1lX2Z1bGxjb21wYXJlKGRxbmFtZSwgbmFtZSwgJm9yZGVyLAotKwkJCQkJCSAmbmxhYmVscyk7Ci0gCQlpZiAobmFtZXJlbG4gPT0gZG5zX25hbWVyZWxuX2VxdWFsKSB7Ci0gCQkJd2FudGVkX2NoYWluaW5nID0gSVNDX0ZBTFNFOwotIAkJCWZvciAocmRhdGFzZXQgPSBJU0NfTElTVF9IRUFEKG5hbWUtPmxpc3QpOwotQEAgLTY4NTQsNyArNjg2NSw3IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCQl9Ci0gCQkJCX0gZWxzZSBpZiAocmRhdGFzZXQtPnR5cGUgPT0gZG5zX3JkYXRhdHlwZV9ycnNpZwotIAkJCQkJICAgJiYgcmRhdGFzZXQtPmNvdmVycyA9PQotLQkJCQkJICAgZG5zX3JkYXRhdHlwZV9jbmFtZQotKwkJCQkJICAgICAgZG5zX3JkYXRhdHlwZV9jbmFtZQotIAkJCQkJICAgJiYgIWZvdW5kX3R5cGUpIHsKLSAJCQkJCS8qCi0gCQkJCQkgKiBXZSdyZSBsb29raW5nIGZvciBzb21ldGhpbmcgZWxzZSwKLUBAIC02ODg0LDExICs2ODk1LDE4IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCQkJICogYSBDTkFNRSBvciBETkFNRSkuCi0gCQkJCQkJICovCi0gCQkJCQkJSU5TSVNUKCFleHRlcm5hbCk7Ci0tCQkJCQkJaWYgKGFmbGFnID09Ci0tCQkJCQkJICAgIEROU19SREFUQVNFVEFUVFJfQU5TV0VSKSB7Ci0rCQkJCQkJaWYgKChyZGF0YXNldC0+dHlwZSAhPQotKwkJCQkJCSAgICAgZG5zX3JkYXRhdHlwZV9jbmFtZSkgfHwKLSsJCQkJCQkgICAgIWZvdW5kX2RuYW1lIHx8Ci0rCQkJCQkJICAgIChhZmxhZyA9PQotKwkJCQkJCSAgICAgRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVIpKQotKwkJCQkJCXsKLSAJCQkJCQkJaGF2ZV9hbnN3ZXIgPSBJU0NfVFJVRTsKLSsJCQkJCQkJaWYgKHJkYXRhc2V0LT50eXBlID09Ci0rCQkJCQkJCSAgICBkbnNfcmRhdGF0eXBlX2NuYW1lKQotKwkJCQkJCQkJY25hbWUgPSBuYW1lOwotIAkJCQkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9Ci0tCQkJCQkJCQlETlNfTkFNRUFUVFJfQU5TV0VSOwotKwkJCQkJCQkgICAgRE5TX05BTUVBVFRSX0FOU1dFUjsKLSAJCQkJCQl9Ci0gCQkJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0gYWZsYWc7Ci0gCQkJCQkJaWYgKGFhKQotQEAgLTY5ODIsMTEgKzcwMDAsMTEgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJCXJldHVybiAoRE5TX1JfRk9STUVSUik7Ci0gCQkJCX0KLSAKLS0JCQkJaWYgKG5hbWVyZWxuICE9IGRuc19uYW1lcmVsbl9zdWJkb21haW4pIHsKLSsJCQkJaWYgKGRuYW1lcmVsbiAhPSBkbnNfbmFtZXJlbG5fc3ViZG9tYWluKSB7Ci0gCQkJCQljaGFyIHFidWZbRE5TX05BTUVfRk9STUFUU0laRV07Ci0gCQkJCQljaGFyIG9idWZbRE5TX05BTUVfRk9STUFUU0laRV07Ci0gCi0tCQkJCQlkbnNfbmFtZV9mb3JtYXQocW5hbWUsIHFidWYsCi0rCQkJCQlkbnNfbmFtZV9mb3JtYXQoZHFuYW1lLCBxYnVmLAotIAkJCQkJCQlzaXplb2YocWJ1ZikpOwotIAkJCQkJZG5zX25hbWVfZm9ybWF0KG5hbWUsIG9idWYsCi0gCQkJCQkJCXNpemVvZihvYnVmKSk7Ci1AQCAtNzAwMSw3ICs3MDE5LDcgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJCXdhbnRfY2hhaW5pbmcgPSBJU0NfVFJVRTsKLSAJCQkJCVBPU1Qod2FudF9jaGFpbmluZyk7Ci0gCQkJCQlhZmxhZyA9IEROU19SREFUQVNFVEFUVFJfQU5TV0VSOwotLQkJCQkJcmVzdWx0ID0gZG5hbWVfdGFyZ2V0KHJkYXRhc2V0LCBxbmFtZSwKLSsJCQkJCXJlc3VsdCA9IGRuYW1lX3RhcmdldChyZGF0YXNldCwgZHFuYW1lLAotIAkJCQkJCQkgICAgICBubGFiZWxzLCAmZmRuYW1lKTsKLSAJCQkJCWlmIChyZXN1bHQgPT0gSVNDX1JfTk9TUEFDRSkgewotIAkJCQkJCS8qCi1AQCAtNzAxOCwxMCArNzAzNiwxMyBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAotIAkJCQkJZG5hbWUgPSBkbnNfZml4ZWRuYW1lX25hbWUoJmZkbmFtZSk7Ci0gCQkJCQlpZiAoIWlzX2Fuc3dlcnRhcmdldF9hbGxvd2VkKHZpZXcsCi0tCQkJCQkJCXFuYW1lLCByZGF0YXNldC0+dHlwZSwKLS0JCQkJCQkJZG5hbWUsICZmY3R4LT5kb21haW4pKSB7Ci0rCQkJCQkJICAgICBkcW5hbWUsIHJkYXRhc2V0LT50eXBlLAotKwkJCQkJCSAgICAgZG5hbWUsICZmY3R4LT5kb21haW4pKQotKwkJCQkJewotIAkJCQkJCXJldHVybiAoRE5TX1JfU0VSVkZBSUwpOwotIAkJCQkJfQotKwkJCQkJZHFuYW1lID0gZG5zX2ZpeGVkbmFtZV9uYW1lKCZmcWRuYW1lKTsKLSsJCQkJCWRuc19uYW1lX2NvcHkoZG5hbWUsIGRxbmFtZSwgTlVMTCk7Ci0gCQkJCX0gZWxzZSB7Ci0gCQkJCQkvKgotIAkJCQkJICogV2UndmUgZm91bmQgYSBzaWduYXR1cmUgdGhhdAotQEAgLTcwNDYsNiArNzA2NywxMCBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkJSU5TSVNUKCFleHRlcm5hbCk7Ci0gCQkJCQlpZiAoYWZsYWcgPT0gRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVIpIHsKLSAJCQkJCQloYXZlX2Fuc3dlciA9IElTQ19UUlVFOwotKwkJCQkJCWZvdW5kX2RuYW1lID0gSVNDX1RSVUU7Ci0rCQkJCQkJaWYgKGNuYW1lICE9IE5VTEwpCi0rCQkJCQkJCWNuYW1lLT5hdHRyaWJ1dGVzICY9Ci0rCQkJCQkJCSAgIH5ETlNfTkFNRUFUVFJfQU5TV0VSOwotIAkJCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0KLSAJCQkJCQkJRE5TX05BTUVBVFRSX0FOU1dFUjsKLSAJCQkJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2gKaW5kZXggMDk2ZDVkOC4uOGJjNGVhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoCkBAIC0xNywyNCArMTcsMjggQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworVXBkYXRlIGNvbnRleHQodHJhaWxpbmcgd2hpdGVzcGFjZSkgZm9yIHZlcnNpb24gOS4xMC41LVAzLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KIC0tLQogIGJpbi9jb25mZ2VuL01ha2VmaWxlLmluIHwgICAgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2Jpbi9jb25mZ2VuL01ha2VmaWxlLmluIGIvYmluL2NvbmZnZW4vTWFrZWZpbGUuaW4KLWluZGV4IDhiM2U1YWEuLjQ4NjhhMjQgMTAwNjQ0CitpbmRleCBkY2EyNzJmLi4wMmJlY2NlIDEwMDY0NAogLS0tIGEvYmluL2NvbmZnZW4vTWFrZWZpbGUuaW4KICsrKyBiL2Jpbi9jb25mZ2VuL01ha2VmaWxlLmluCiBAQCAtNzQsMTEgKzc0LDExIEBAIHJuZGMtY29uZmdlbi5AT0A6IHJuZGMtY29uZmdlbi5jCiAgZGRucy1jb25mZ2VuLkBPQDogZGRucy1jb25mZ2VuLmMKICAJJHtMSUJUT09MX01PREVfQ09NUElMRX0gJHtDQ30gJHtBTExfQ0ZMQUdTfSAtYyAke3NyY2Rpcn0vZGRucy1jb25mZ2VuLmMKICAKLS1ybmRjLWNvbmZnZW5ARVhFRVhUQDogcm5kYy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9ICR7Q09ORkRFUExJQlN9IAorLXJuZGMtY29uZmdlbkBFWEVFWFRAOiBybmRjLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtVT0JKU30gJHtDT05GREVQTElCU30KICtybmRjLWNvbmZnZW5ARVhFRVhUQDogcm5kYy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7Q09ORkRFUExJQlN9ICQoU1VCRElSUykKICAJZXhwb3J0IEJBU0VPQkpTPSJybmRjLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtVT0JKU30iOyBcCiAgCSR7RklOQUxCVUlMRENNRH0KICAKLS1kZG5zLWNvbmZnZW5ARVhFRVhUQDogZGRucy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9ICR7Q09ORkRFUExJQlN9IAorLWRkbnMtY29uZmdlbkBFWEVFWFRAOiBkZG5zLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtVT0JKU30gJHtDT05GREVQTElCU30KICtkZG5zLWNvbmZnZW5ARVhFRVhUQDogZGRucy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7Q09ORkRFUExJQlN9ICQoU1VCRElSUykKICAJZXhwb3J0IEJBU0VPQkpTPSJkZG5zLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtVT0JKU30iOyBcCiAgCSR7RklOQUxCVUlMRENNRH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9nZW5lcmF0ZS1ybmRjLWtleS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9nZW5lcmF0ZS1ybmRjLWtleS5zaAppbmRleCBkYjIwMTI3Li5lZjkxNWMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvZ2VuZXJhdGUtcm5kYy1rZXkuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2dlbmVyYXRlLXJuZGMta2V5LnNoCkBAIC0zLDUgKzMsNiBAQAogaWYgWyAhIC1zIC9ldGMvYmluZC9ybmRjLmtleSBdOyB0aGVuCiAgICAgZWNobyAtbiAiR2VuZXJhdGluZyAvZXRjL2JpbmQvcm5kYy5rZXk6IgogICAgIC91c3Ivc2Jpbi9ybmRjLWNvbmZnZW4gLWEgLWIgNTEyIC1yIC9kZXYvdXJhbmRvbQorICAgIGNob3duIHJvb3Q6YmluZCAvZXRjL2JpbmQvcm5kYy5rZXkKICAgICBjaG1vZCAwNjQwIC9ldGMvYmluZC9ybmRjLmtleQogZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9taXBzMS1ub3Qtc3VwcG9ydC1vcGNvZGUuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9taXBzMS1ub3Qtc3VwcG9ydC1vcGNvZGUuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkzMDc5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvbWlwczEtbm90LXN1cHBvcnQtb3Bjb2RlLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotYmluZDogcG9ydCBhIHBhdGNoIHRvIGZpeCBhIGJ1aWxkIGZhaWx1cmUKLQotbWlwczEgZG9lcyBub3Qgc3VwcG9ydCBsbCBhbmQgc2MgaW5zdHJ1Y3Rpb25zLCBhbmQgbGVhZCB0byBiZWxvdyBlcnJvciwgbm93Ci13ZSBwb3J0IGEgcGF0Y2ggZnJvbSBkZWJpYW4gdG8gZml4IGl0Ci1baHR0cDovL3NlY3VyaXR5LmRlYmlhbi5vcmcvZGViaWFuLXNlY3VyaXR5L3Bvb2wvdXBkYXRlcy9tYWluL2IvYmluZDkvYmluZDlfOS44LjQuZGZzZy5QMS02K25tdTIrZGViN3UxLmRpZmYuZ3pdCi0KLXwge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgotfCB7c3RhbmRhcmQgaW5wdXR9OjQ3OiBFcnJvcjogT3Bjb2RlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwcm9jZXNzb3I6IG1pcHMxIChtaXBzMSkgYGxsICQzLDAoJDYpJwotfCB7c3RhbmRhcmQgaW5wdXR9OjUwOiBFcnJvcjogT3Bjb2RlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwcm9jZXNzb3I6IG1pcHMxIChtaXBzMSkgYHNjICQzLDAoJDYpJwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotCi0tLS0gYmluZDktOS44LjQuZGZzZy5QMS5vcmlnL2xpYi9pc2MvbWlwcy9pbmNsdWRlL2lzYy9hdG9taWMuaAotKysrIGJpbmQ5LTkuOC40LmRmc2cuUDEvbGliL2lzYy9taXBzL2luY2x1ZGUvaXNjL2F0b21pYy5oCi1AQCAtMzEsMTggKzMxLDIwIEBACi0gaXNjX2F0b21pY194YWRkKGlzY19pbnQzMl90ICpwLCBpbnQgdmFsKSB7Ci0gCWlzY19pbnQzMl90IG9yaWc7Ci0gCi0tCS8qIGFkZCBpcyBhIGNoZWF0LCBzaW5jZSBNSVBTIGhhcyBubyBtb3YgaW5zdHJ1Y3Rpb24gKi8KLS0JX19hc21fXyB2b2xhdGlsZSAoCi0tCSAgICAiMToiCi0tCSAgICAibGwgJDMsICUxXG4iCi0tCSAgICAiYWRkICUwLCAkMCwgJDNcbiIKLS0JICAgICJhZGQgJDMsICQzLCAlMlxuIgotLQkgICAgInNjICQzLCAlMVxuIgotLQkgICAgImJlcSAkMywgMCwgMWIiCi0tCSAgICA6ICI9JnIiKG9yaWcpCi0tCSAgICA6ICJtIigqcCksICJyIih2YWwpCi0tCSAgICA6ICJtZW1vcnkiLCAiJDMiCi0tCQkpOwotKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCi0rCSIJLnNldAlwdXNoCQlcbiIKLSsJIgkuc2V0CW1pcHMyCQlcbiIKLSsJIgkuc2V0CW5vcmVvcmRlcglcbiIKLSsJIgkuc2V0CW5vYXQJCVxuIgotKwkiMToJbGwJJDEsICUxCQlcbiIKLSsJIglhZGR1CSUwLCAkMSwgJTIJXG4iCi0rCSIJc2MJJTAsICUxCQlcbiIKLSsJIgliZXF6CSUwLCAxYgkJXG4iCi0rCSIJbW92ZQklMCwgJDEJCVxuIgotKwkiCS5zZXQJcG9wCQlcbiIKLSsJOiAiPSZyIiAob3JpZyksICIrUiIgKCpwKQotKwk6ICJyIiAodmFsKQotKwk6ICJtZW1vcnkiKTsKLSAKLSAJcmV0dXJuIChvcmlnKTsKLSB9Ci1AQCAtNTIsMTYgKzU0LDcgQEAKLSAgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQKLSBpc2NfYXRvbWljX3N0b3JlKGlzY19pbnQzMl90ICpwLCBpc2NfaW50MzJfdCB2YWwpIHsKLS0JX19hc21fXyB2b2xhdGlsZSAoCi0tCSAgICAiMToiCi0tCSAgICAibGwgJDMsICUwXG4iCi0tCSAgICAiYWRkICQzLCAkMCwgJTFcbiIKLS0JICAgICJzYyAkMywgJTBcbiIKLS0JICAgICJiZXEgJDMsIDAsIDFiIgotLQkgICAgOgotLQkgICAgOiAibSIoKnApLCAiciIodmFsKQotLQkgICAgOiAibWVtb3J5IiwgIiQzIgotLQkJKTsKLSsJKnAgPSB2YWw7Ci0gfQotIAotIC8qCi1AQCAtNzIsMjAgKzY1LDIzIEBACi0gc3RhdGljIGlubGluZSBpc2NfaW50MzJfdAotIGlzY19hdG9taWNfY21weGNoZyhpc2NfaW50MzJfdCAqcCwgaW50IGNtcHZhbCwgaW50IHZhbCkgewotIAlpc2NfaW50MzJfdCBvcmlnOwotKwlpc2NfaW50MzJfdCB0bXA7Ci0gCi0tCV9fYXNtX18gdm9sYXRpbGUoCi0tCSAgICAiMToiCi0tCSAgICAibGwgJDMsICUxXG4iCi0tCSAgICAiYWRkICUwLCAkMCwgJDNcbiIKLS0JICAgICJibmUgJDMsICUyLCAyZlxuIgotLQkgICAgImFkZCAkMywgJDAsICUzXG4iCi0tCSAgICAic2MgJDMsICUxXG4iCi0tCSAgICAiYmVxICQzLCAwLCAxYlxuIgotLQkgICAgIjI6IgotLQkgICAgOiAiPSZyIihvcmlnKQotLQkgICAgOiAibSIoKnApLCAiciIoY21wdmFsKSwgInIiKHZhbCkKLS0JICAgIDogIm1lbW9yeSIsICIkMyIKLS0JCSk7Ci0rCV9fYXNtX18gX192b2xhdGlsZV9fICgKLSsJIgkuc2V0CXB1c2gJCVxuIgotKwkiCS5zZXQJbWlwczIJCVxuIgotKwkiCS5zZXQJbm9yZW9yZGVyCVxuIgotKwkiCS5zZXQJbm9hdAkJXG4iCi0rCSIxOglsbAkkMSwgJTEJCVxuIgotKwkiCWJuZQkkMSwgJTMsIDJmCVxuIgotKwkiCW1vdmUJJTIsICU0CQlcbiIKLSsJIglzYwklMiwgJTEJCVxuIgotKwkiCWJlcXoJJTIsIDFiCQlcbiIKLSsJIjI6CW1vdmUJJTAsICQxCQlcbiIKLSsJIgkuc2V0CXBvcAkJXG4iCi0rCTogIj0mciIob3JpZyksICIrUiIgKCpwKSwgIj1yIiAodG1wKQotKwk6ICJyIihjbXB2YWwpLCAiciIodmFsKQotKwk6ICJtZW1vcnkiKTsKLSAKLSAJcmV0dXJuIChvcmlnKTsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL3VzZS1weXRob24zLWFuZC1maXgtaW5zdGFsbC1saWItcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODI5ZjE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL3VzZS1weXRob24zLWFuZC1maXgtaW5zdGFsbC1saWItcGF0aC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitVc2UgcHl0aG9uMyByYXRoZXIgZGVmYXVsdCBweXRob24gd2hpY2ggbWF5YmUgbGlua3MgdG8gcHl0aG9uMiBmb3Igb2UuIEFuZCBhZGQKK29wdGlvbiBmb3Igc2V0dXAucHkgdG8gaW5zdGFsbCBmaWxlcyB0byByaWdodCBkaXJlY3RvcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvYmluL3B5dGhvbi9NYWtlZmlsZS5pbiBiL2Jpbi9weXRob24vTWFrZWZpbGUuaW4KK2luZGV4IGE0M2EzYzEuLjJlNzI3ZjIgMTAwNjQ0CistLS0gYS9iaW4vcHl0aG9uL01ha2VmaWxlLmluCisrKysgYi9iaW4vcHl0aG9uL01ha2VmaWxlLmluCitAQCAtNTUsOSArNTUsOSBAQCBpbnN0YWxsOjogJHtUQVJHRVRTfSBpbnN0YWxsZGlycworIAkke0lOU1RBTExfREFUQX0gJHtzcmNkaXJ9L2Ruc3NlYy1jb3ZlcmFnZS44ICR7REVTVERJUn0ke21hbmRpcn0vbWFuOAorIAlpZiB0ZXN0IC1uICIke1BZVEhPTn0iIDsgdGhlbiBcCisgCQlpZiB0ZXN0IC1uICIke0RFU1RESVJ9IiA7IHRoZW4gXAorLQkJCSR7UFlUSE9OfSAke3NyY2Rpcn0vc2V0dXAucHkgaW5zdGFsbCAtLXJvb3Q9JHtERVNURElSfSAtLXByZWZpeD0ke3ByZWZpeH0gOyBcCisrCQkJJHtQWVRIT059ICR7c3JjZGlyfS9zZXR1cC5weSBpbnN0YWxsIC0tcm9vdD0ke0RFU1RESVJ9IC0tcHJlZml4PSR7cHJlZml4fSAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IDsgXAorIAkJZWxzZSBcCistCQkJJHtQWVRIT059ICR7c3JjZGlyfS9zZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PSR7cHJlZml4fSA7IFwKKysJCQkke1BZVEhPTn0gJHtzcmNkaXJ9L3NldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JHtwcmVmaXh9IC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gOyBcCisgCQlmaSBcCisgCWZpCisgCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCAzMTRiYjkwLi44Njc5MjNlIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0yMjcsNyArMjI3LDcgQEAgQUNfQVJHX1dJVEgocHl0aG9uLAorIFsgIC0td2l0aC1weXRob249UEFUSCAgICAgIHNwZWNpZnkgcGF0aCB0byBweXRob24gaW50ZXJwcmV0ZXJdLAorICAgICB1c2VfcHl0aG9uPSIkd2l0aHZhbCIsIHVzZV9weXRob249InVuc3BlYyIpCisgCistcHl0aG9uPSJweXRob24gcHl0aG9uMyBweXRob24zLjUgcHl0aG9uMy40IHB5dGhvbjMuMyBweXRob24zLjIgcHl0aG9uMiBweXRob24yLjciCisrcHl0aG9uPSJweXRob24zIHB5dGhvbjMuNSBweXRob24zLjQgcHl0aG9uMy4zIHB5dGhvbjMuMiBweXRob24yIHB5dGhvbjIuNyIKKyAKKyB0ZXN0YXJncGFyc2U9J3RyeTogaW1wb3J0IGFyZ3BhcnNlCisgZXhjZXB0OiBleGl0KDEpJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuMy1QMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjMtUDMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MDIyNzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuMy1QMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1TVU1NQVJZID0gIklTQyBJbnRlcm5ldCBEb21haW4gTmFtZSBTZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlzYy5vcmcvc3cvYmluZC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJJU0MgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTBhOTVmNTJhMGFiNmM1ZjUyZGVkYzlhNDVlN2FiYjNmIgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGliY2FwIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZS1ldGMtaW5pdGQtYmluZC1zdG9wLXdvcmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwczEtbm90LXN1cHBvcnQtb3Bjb2RlLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZG9udC10ZXN0LW9uLWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggXAotICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMTI4NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMjg2XzEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMTI4Nl8yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTIwODgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMjc3NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yNzc2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTg4NjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjE3MC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImJjZjdlNzcyYjYxNmY3MjU5NDIwYTNlZGM1ZGYzNTBhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5MDgxMGQxZmJiNzJhZmE2MjllNzQ2MzhkMTljZDQ0ZTI4ZDJiMmU1ZWI2M2Y1NWM3MDVhZDg1ZDFhNGNiODMiCi0KLUVOQUJMRV9JUFY2ID0gIi0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSIKLUVYVFJBX09FQ09ORiA9ICIgJHtFTkFCTEVfSVBWNn0gLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSAtLWRpc2FibGUtdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXZwb2xsIC0tZGlzYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyBcCi0gICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAiCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnCi0KLSMgUEFDS0FHRUNPTkZJR3MgcmVhZGxpbmUgYW5kIGxpYmVkaXQgc2hvdWxkIE5PVCBiZSBzZXQgYXQgc2FtZSB0aW1lCi1QQUNLQUdFQ09ORklHID89ICJyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIC0tbm8tY3JlYXRlLWhvbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYmluZCIKLQotSU5JVFNDUklQVF9OQU1FID0gImJpbmQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5hbWVkLnNlcnZpY2UiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUiCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCi1GSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgotRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2giCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIGNsZWFuIGhvc3QgcGF0aCBpbiBpc2MtY29uZmlnLnNoIGJlZm9yZSB0aGUgaGFyZGxpbmsgY3JlYXRlZAotCSMgYnkgIm1ha2UgaW5zdGFsbCI6Ci0JIyAgIGJpbmQ5LWNvbmZpZyAtPiBpc2MtY29uZmlnLnNoCi0Jc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSwiICR7Qn0vaXNjLWNvbmZpZy5zaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAiJHtEfSR7YmluZGlyfS9uc2xvb2t1cCIKLQlybSAiJHtEfSR7bWFuZGlyfS9tYW4xL25zbG9va3VwLjEiCi0Jcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0JaW5zdGFsbCAtZCAtbyBiaW5kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIgotCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQiCi0JaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgotCWluc3RhbGwgLW0gNjQ0ICR7U30vY29uZi8qICIke0R9JHtzeXNjb25mZGlyfS9iaW5kLyIKLQlpbnN0YWxsIC1tIDc1NSAiJHtTfS9pbml0LmQiICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYmluZCIKLQlzZWQgLWkgLWUgJzFzLCMhLipweXRob24zLCMhIC91c3IvYmluL3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMKLQotCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKLQlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uYW1lZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25hbWVkLnNlcnZpY2UKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JpbmQ5ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLX0KLQotQ09ORkZJTEVTXyR7UE59ID0gIiBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLmxvY2FsIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5vcHRpb25zIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLjEyNyBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLmVtcHR5IFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIubG9jYWwgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5yb290IFwKLQkiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjUtUDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC41LVAzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNzI0YTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC41LVAzLmJiCkBAIC0wLDAgKzEsMTE5IEBACitTVU1NQVJZID0gIklTQyBJbnRlcm5ldCBEb21haW4gTmFtZSBTZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmlzYy5vcmcvc3cvYmluZC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJJU0MgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWRiYTQ2NTA3NDQ2MTk4MTE5YmNkZTMyYTRmZWFhYjQzIgorCitERVBFTkRTID0gIm9wZW5zc2wgbGliY2FwIgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LXRlc3Qtb24taG9zdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKKyAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2ggXAorICAgICAgICAgICAiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj45KFwuXGQrKSsoLVBcZCspKikvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDc5Y2FmYmQ5YWM3NjIzOWVlNTMyZGQ4OWQwNWNjODMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGQ3ZTk2YjViMGJiYWM3YjkwMGQ0YzRiYmI4MmUwOTU2YjRlNTA5NDMzYzVmYTM5MmJiNzJhOTI5Yjk2NjA2YSIKKworRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgorRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtbGlidG9vbCAtLWVuYWJsZS10aHJlYWRzIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldnBvbGwgLS1lbmFibGUtZXBvbGwgLS13aXRoLWdvc3Q9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtZ3NzYXBpPW5vIC0td2l0aC1lY2RzYT15ZXMgXAorICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9iaW5kIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnIHB5dGhvbjMtZGlyCisKK2V4cG9ydCBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUgorCisjIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQorUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKK1BBQ0tBR0VDT05GSUdbdXJhbmRvbV0gPSAiLS13aXRoLXJhbmRvbWRldj0vZGV2L3VyYW5kb20sLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSwsIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYmluZCIKKworSU5JVFNDUklQVF9OQU1FID0gImJpbmQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5hbWVkLnNlcnZpY2UiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUiCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgorRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIGNsZWFuIGhvc3QgcGF0aCBpbiBpc2MtY29uZmlnLnNoIGJlZm9yZSB0aGUgaGFyZGxpbmsgY3JlYXRlZAorCSMgYnkgIm1ha2UgaW5zdGFsbCI6CisJIyAgIGJpbmQ5LWNvbmZpZyAtPiBpc2MtY29uZmlnLnNoCisJc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSwiICR7Qn0vaXNjLWNvbmZpZy5zaAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAiJHtEfSR7YmluZGlyfS9uc2xvb2t1cCIKKwlybSAiJHtEfSR7bWFuZGlyfS9tYW4xL25zbG9va3VwLjEiCisJcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKwlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisJaW5zdGFsbCAtZCAtbyBiaW5kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIgorCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgorCWluc3RhbGwgLW0gNjQ0ICR7U30vY29uZi8qICIke0R9JHtzeXNjb25mZGlyfS9iaW5kLyIKKwlpbnN0YWxsIC1tIDc1NSAiJHtTfS9pbml0LmQiICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYmluZCIKKwlzZWQgLWkgLWUgJzFzLCMhLipweXRob24zLCMhIC91c3IvYmluL3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMKKworCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uYW1lZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25hbWVkLnNlcnZpY2UKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JpbmQ5ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCQllY2hvICJkIC9ydW4vbmFtZWQgMDc1NSBiaW5kIGJpbmQgLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvYmluZC5jb25mCisJZmkKKworICAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9pc2MvKi5weWMKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5vcHRpb25zIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjEyNyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmVtcHR5IFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIubG9jYWwgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5yb290IFwKKwkiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKaW5kZXggODgyODczYS4uMTgwN2FhNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKQEAgLTYsMTYgKzYsNDEgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTliYzU0YjkzY2Q3ZTE3YmYwM2Y1MjUxM2YzOWY5MjZlIgotREVQRU5EUyA9ICJ1ZGV2IGxpYnVzYiBkYnVzLWdsaWIgZ2xpYi0yLjAgbGliY2hlY2siCitERVBFTkRTID0gInVkZXYgZGJ1cy1nbGliIGdsaWItMi4wIGxpYmNoZWNrIgogUFJPVklERVMgKz0gImJsdWV6LWhjaWR1bXAiCiBSUFJPVklERVNfJHtQTn0gKz0gImJsdWV6LWhjaWR1bXAiCiAKIFJDT05GTElDVFNfJHtQTn0gPSAiYmx1ZXo0IgogCi1QQUNLQUdFQ09ORklHID8/PSAib2JleC1wcm9maWxlcyByZWFkbGluZSIKK1BBQ0tBR0VDT05GSUcgPz89ICJvYmV4LXByb2ZpbGVzIFwKKyAgICByZWFkbGluZSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisgICAgYTJkcC1wcm9maWxlcyBcCisgICAgYXZyY3AtcHJvZmlsZXMgXAorICAgIG5ldHdvcmstcHJvZmlsZXMgXAorICAgIGhpZC1wcm9maWxlcyBcCisgICAgaG9nLXByb2ZpbGVzIFwKKyAgICB0b29scyBcCisgICAgZGVwcmVjYXRlZCBcCisiCiBQQUNLQUdFQ09ORklHW29iZXgtcHJvZmlsZXNdID0gIi0tZW5hYmxlLW9iZXgsLS1kaXNhYmxlLW9iZXgsbGliaWNhbCIKLVBBQ0tBR0VDT05GSUdbZXhwZXJpbWVudGFsXSA9ICItLWVuYWJsZS1leHBlcmltZW50YWwsLS1kaXNhYmxlLWV4cGVyaW1lbnRhbCwiCiBQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLWVuYWJsZS1jbGllbnQsLS1kaXNhYmxlLWNsaWVudCxyZWFkbGluZSwiCitQQUNLQUdFQ09ORklHW3Rlc3RpbmddID0gIi0tZW5hYmxlLXRlc3RpbmcsLS1kaXNhYmxlLXRlc3RpbmciCitQQUNLQUdFQ09ORklHW21pZGldID0gIi0tZW5hYmxlLW1pZGksLS1kaXNhYmxlLW1pZGksYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQsLS1kaXNhYmxlLXN5c3RlbWQiCitQQUNLQUdFQ09ORklHW2N1cHNdID0gIi0tZW5hYmxlLWN1cHMsLS1kaXNhYmxlLWN1cHMsLGN1cHMiCitQQUNLQUdFQ09ORklHW25mY10gPSAiLS1lbmFibGUtbmZjLC0tZGlzYWJsZS1uZmMiCitQQUNLQUdFQ09ORklHW3NhcC1wcm9maWxlc10gPSAiLS1lbmFibGUtc2FwLC0tZGlzYWJsZS1zYXAiCitQQUNLQUdFQ09ORklHW2EyZHAtcHJvZmlsZXNdID0gIi0tZW5hYmxlLWEyZHAsLS1kaXNhYmxlLWEyZHAiCitQQUNLQUdFQ09ORklHW2F2cmNwLXByb2ZpbGVzXSA9ICItLWVuYWJsZS1hdnJjcCwtLWRpc2FibGUtYXZyY3AiCitQQUNLQUdFQ09ORklHW25ldHdvcmstcHJvZmlsZXNdID0gIi0tZW5hYmxlLW5ldHdvcmssLS1kaXNhYmxlLW5ldHdvcmsiCitQQUNLQUdFQ09ORklHW2hpZC1wcm9maWxlc10gPSAiLS1lbmFibGUtaGlkLC0tZGlzYWJsZS1oaWQiCitQQUNLQUdFQ09ORklHW2hvZy1wcm9maWxlc10gPSAiLS1lbmFibGUtaG9nLC0tZGlzYWJsZS1ob2ciCitQQUNLQUdFQ09ORklHW2hlYWx0aC1wcm9maWxlc10gPSAiLS1lbmFibGUtaGVhbHRoLC0tZGlzYWJsZS1oZWFsdGgiCitQQUNLQUdFQ09ORklHW3NpeGF4aXNdID0gIi0tZW5hYmxlLXNpeGF4aXMsLS1kaXNhYmxlLXNpeGF4aXMiCitQQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItLWVuYWJsZS10b29scywtLWRpc2FibGUtdG9vbHMiCitQQUNLQUdFQ09ORklHW3RocmVhZHNdID0gIi0tZW5hYmxlLXRocmVhZHMsLS1kaXNhYmxlLXRocmVhZHMiCitQQUNLQUdFQ09ORklHW2RlcHJlY2F0ZWRdID0gIi0tZW5hYmxlLWRlcHJlY2F0ZWQsLS1kaXNhYmxlLWRlcHJlY2F0ZWQiCiAKIFNSQ19VUkkgPSAiXAogICAgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvYmx1ZXRvb3RoL2JsdWV6LSR7UFZ9LnRhci54eiBcCkBAIC0yNCw2ICs0OSw3IEBACiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICdmaWxlOi8vMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoJywgZCl9IFwKICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1oY2lhdHRhY2gtYmNtNDN4eC1maXgtdGhlLWRlbGF5LXRpbWVyLWZvci1maXJtd2FyZS1kLnBhdGNoIFwKICAgICBmaWxlOi8vY3ZlLTIwMTctMTAwMDI1MC5wYXRjaCBcCiAiCiBTID0gIiR7V09SS0RJUn0vYmx1ZXotJHtQVn0iCkBAIC0zMywyMSArNTksMjAgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIGRpc3Ryb19mZWF0dXJlc19jaGVjayBwdGVzdAogCiBFWFRSQV9PRUNPTkYgPSAiXAotICAtLWVuYWJsZS10b29scyBcCi0gIC0tZGlzYWJsZS1jdXBzIFwKICAgLS1lbmFibGUtdGVzdCBcCiAgIC0tZW5hYmxlLWRhdGFmaWxlcyBcCi0gICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLWVuYWJsZS1zeXN0ZW1kJywgJy0tZGlzYWJsZS1zeXN0ZW1kJywgZCl9IFwKICAgLS1lbmFibGUtbGlicmFyeSBcCiAiCiAKICMgYmx1ZXo1IGJ1aWxkcyBhIGxhcmdlIG51bWJlciBvZiB1c2VmdWwgdXRpbGl0aWVzIGJ1dCBkb2VzIG5vdAogIyBpbnN0YWxsIHRoZW0uICBTcGVjaWZ5IHdoaWNoIG9uZXMgd2Ugd2FudCBwdXQgaW50byAke1BOfS1ub2luc3QtdG9vbHMuCiBOT0lOU1RfVE9PTFNfUkVBRExJTkUgPz89ICIiCi1OT0lOU1RfVE9PTFNfRVhQRVJJTUVOVEFMID8/PSAiIgorTk9JTlNUX1RPT0xTX1RFU1RJTkcgPz89ICIiCitOT0lOU1RfVE9PTFNfQlQgPz89ICIiCiBOT0lOU1RfVE9PTFMgPSAiIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZWFkbGluZScsICcke05PSU5TVF9UT09MU19SRUFETElORX0nLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdleHBlcmltZW50YWwnLCAnJHtOT0lOU1RfVE9PTFNfRVhQRVJJTUVOVEFMfScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Rlc3RpbmcnLCAnJHtOT0lOU1RfVE9PTFNfVEVTVElOR30nLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0b29scycsICcke05PSU5TVF9UT09MU19CVH0nLCAnJywgZCl9IFwKICIKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CkBAIC01NSwzOCArODAsMzYgQEAKIAlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke0lOSVRfRF9ESVJ9L2JsdWV0b290aAogCiAJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9ibHVldG9vdGgvCi0JaWYgWyAtZiAke1N9L3Byb2ZpbGVzL2F1ZGlvL2F1ZGlvLmNvbmYgXTsgdGhlbgotCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9wcm9maWxlcy9hdWRpby9hdWRpby5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9ibHVldG9vdGgvCi0JZmkKIAlpZiBbIC1mICR7U30vcHJvZmlsZXMvbmV0d29yay9uZXR3b3JrLmNvbmYgXTsgdGhlbgotCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9wcm9maWxlcy9uZXR3b3JrL25ldHdvcmsuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLworCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9wcm9maWxlcy9uZXR3b3JrL25ldHdvcmsuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLwogCWZpCiAJaWYgWyAtZiAke1N9L3Byb2ZpbGVzL2lucHV0L2lucHV0LmNvbmYgXTsgdGhlbgotCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9wcm9maWxlcy9pbnB1dC9pbnB1dC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9ibHVldG9vdGgvCisJCWluc3RhbGwgLW0gMDY0NCAke1N9L3Byb2ZpbGVzL2lucHV0L2lucHV0LmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2JsdWV0b290aC8KIAlmaQogCi0gIGlmIFsgLWYgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9ibHVldG9vdGggXTsgdGhlbgotICAgIHNlZCAtaSAtZSAncyNATElCRVhFQ0RJUkAjJHtsaWJleGVjZGlyfSNnJyAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2JsdWV0b290aAotICBmaQorCWlmIFsgLWYgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9ibHVldG9vdGggXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3MjQExJQkVYRUNESVJAIyR7bGliZXhlY2Rpcn0jZycgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9ibHVldG9vdGgKKwlmaQogCiAJIyBJbnN0YWxsIGRlc2lyZWQgdG9vbHMgdGhhdCB1cHN0cmVhbSBsZWF2ZXMgaW4gYnVpbGQgYXJlYQotICAgICAgICBmb3IgZiBpbiAke05PSU5TVF9UT09MU30gOyBkbwotCSAgICBpbnN0YWxsIC1tIDc1NSAke0J9LyRmICR7RH0vJHtiaW5kaXJ9CisJZm9yIGYgaW4gJHtOT0lOU1RfVE9PTFN9IDsgZG8KKwkJaW5zdGFsbCAtbSA3NTUgJHtCfS8kZiAke0R9LyR7YmluZGlyfQogCWRvbmUKIAotICAgICAgICAjIFBhdGNoIHB5dGhvbiB0b29scyB0byB1c2UgUHl0aG9uIDM7IHRoZXkgc2hvdWxkIGJlIHNvdXJjZSBjb21wYXRpYmxlLCBidXQKLSAgICAgICAgIyBzdGlsbCByZWZlciB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZwotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7bGliZGlyfS9ibHVlei90ZXN0LyoKKwkjIFBhdGNoIHB5dGhvbiB0b29scyB0byB1c2UgUHl0aG9uIDM7IHRoZXkgc2hvdWxkIGJlIHNvdXJjZSBjb21wYXRpYmxlLCBidXQKKwkjIHN0aWxsIHJlZmVyIHRvIFB5dGhvbiAyIGluIHRoZSBzaGViYW5nCisJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2xpYmRpcn0vYmx1ZXovdGVzdC8qCiB9CiAKLUFMTE9XX0VNUFRZX2xpYmFzb3VuZC1tb2R1bGUtYmx1ZXogPSAiMSIKLVBBQ0tBR0VTID0rICJsaWJhc291bmQtbW9kdWxlLWJsdWV6ICR7UE59LXRlc3R0b29scyAke1BOfS1vYmV4ICR7UE59LW5vaW5zdC10b29scyIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0dG9vbHMgJHtQTn0tb2JleCAke1BOfS1ub2luc3QtdG9vbHMiCiAKLUZJTEVTX2xpYmFzb3VuZC1tb2R1bGUtYmx1ZXogPSAiJHtsaWJkaXJ9L2Fsc2EtbGliL2xpYiouc28gJHtkYXRhZGlyfS9hbHNhIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ibHVldG9vdGgvcGx1Z2lucy8qLnNvICR7c3lzdGVtZF91bml0ZGlyfS8gJHtkYXRhZGlyfS9kYnVzLTEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIlwKLSAgJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zLyoubGEgXAotICAke2xpYmRpcn0vYWxzYS1saWIvKi5sYSBcCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0vYmx1ZXRvb3RoL3BsdWdpbnMvKi5zbyBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgJHtsaWJkaXJ9L2N1cHMgXAorIgorRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorICAgICR7bGliZGlyfS9ibHVldG9vdGgvcGx1Z2lucy8qLmxhIFwKICIKIAogRklMRVNfJHtQTn0tb2JleCA9ICIke2xpYmV4ZWNkaXJ9L2JsdWV0b290aC9vYmV4ZCBcCkBAIC0xMDksMTcgKzEzMiwxNyBAQAogCiBSREVQRU5EU18ke1BOfS10ZXN0dG9vbHMgKz0gInB5dGhvbjMgcHl0aG9uMy1kYnVzIHB5dGhvbjMtcHlnb2JqZWN0IgogCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYmx1ZXRvb3RoLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzdGVtZCcsICdibHVldG9vdGguc2VydmljZScsICcnLCBkKX0iCiBJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgogSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gImJsdWV0b290aCIKIAogRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCiAKIGRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0cworCW9lX3J1bm1ha2UgYnVpbGR0ZXN0cwogfQogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewotICAgICAgICBjcCAtciAke0J9L3VuaXQvICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgIHJtIC1mICR7RH0ke1BURVNUX1BBVEh9L3VuaXQvKi5vCisJY3AgLXIgJHtCfS91bml0LyAke0R9JHtQVEVTVF9QQVRIfQorCXJtIC1mICR7RH0ke1BURVNUX1BBVEh9L3VuaXQvKi5vCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtaGNpYXR0YWNoLWJjbTQzeHgtZml4LXRoZS1kZWxheS10aW1lci1mb3ItZmlybXdhcmUtZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1oY2lhdHRhY2gtYmNtNDN4eC1maXgtdGhlLWRlbGF5LXRpbWVyLWZvci1maXJtd2FyZS1kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Nzk0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtaGNpYXR0YWNoLWJjbTQzeHgtZml4LXRoZS1kZWxheS10aW1lci1mb3ItZmlybXdhcmUtZC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDNiMzQxZmI0MjFlZjYxZGI3NzgyYmYxMzE0ZWM2OTM4Mjg0NjdkZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmR5IER1YW4gPGZ1Z2FuZy5kdWFuQG54cC5jb20+CitEYXRlOiBXZWQsIDIzIE5vdiAyMDE2IDE3OjEyOjEyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGhjaWF0dGFjaDogYmNtNDN4eDogZml4IHRoZSBkZWxheSB0aW1lciBmb3IgZmlybXdhcmUgZG93bmxvYWQKKworRnJvbSB0aGUgbG9nIGluIC5iY200M3h4X2xvYWRfZmlybXdhcmUoKToKKyAgICAgICAgLyogV2FpdCA1MG1zIHRvIGxldCB0aGUgZmlybXdhcmUgcGxhY2VkIGluIGRvd25sb2FkIG1vZGUgKi8KKyAgICAgICAgbmFub3NsZWVwKCZ0bV9tb2RlLCBOVUxMKTsKKworQnV0IHRpbWVzcGVjIHRtX21vZGUgaXMgcmVhbCBpcyA1MHVzLiBDb3JyZWN0IHRoZSBkZWxheWVkIHRpbWVyIGNvdW50LgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vYmx1ZXRvb3RoL2JsdWV6LmdpdC9jb21taXQvP2lkPTc2MjU1ZjczMmQ2OGFlZjJiOTBkMzZkOWM3YmU1MWE5ZTE3MzljZTddCisKK1NpZ25lZC1vZmYtYnk6IEZ1Z2FuZyBEdWFuIDxmdWdhbmcuZHVhbkBueHAuY29tPgorLS0tCisgdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jIGIvdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYworaW5kZXggODFmMzhjYi4uYWMxYjNjMSAxMDA2NDQKKy0tLSBhL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMKKysrKyBiL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMKK0BAIC0yMjgsOCArMjI4LDggQEAgc3RhdGljIGludCBiY200M3h4X3NldF9zcGVlZChpbnQgZmQsIHN0cnVjdCB0ZXJtaW9zICp0aSwgdWludDMyX3Qgc3BlZWQpCisgc3RhdGljIGludCBiY200M3h4X2xvYWRfZmlybXdhcmUoaW50IGZkLCBjb25zdCBjaGFyICpmdykKKyB7CisgCXVuc2lnbmVkIGNoYXIgY21kW10gPSB7IEhDSV9DT01NQU5EX1BLVCwgMHgyZSwgMHhmYywgMHgwMCB9OworLQlzdHJ1Y3QgdGltZXNwZWMgdG1fbW9kZSA9IHsgMCwgNTAwMDAgfTsKKy0Jc3RydWN0IHRpbWVzcGVjIHRtX3JlYWR5ID0geyAwLCAyMDAwMDAwIH07CisrCXN0cnVjdCB0aW1lc3BlYyB0bV9tb2RlID0geyAwLCA1MDAwMDAwMCB9OworKwlzdHJ1Y3QgdGltZXNwZWMgdG1fcmVhZHkgPSB7IDAsIDIwMDAwMDAwMCB9OworIAl1bnNpZ25lZCBjaGFyIHJlc3BbQ0NfTUlOX1NJWkVdOworIAl1bnNpZ25lZCBjaGFyIHR4X2J1ZlsxMDI0XTsKKyAJaW50IGxlbiwgZmRfZncsIG47CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvaW5pdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvaW5pdAppbmRleCA0ODllOWI5Li5kNzk3MmYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2luaXQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9pbml0CkBAIC0yMSwyNSArMjEsMjIgQEAKIAogY2FzZSAkMSBpbgogICBzdGFydCkKLQllY2hvICJTdGFydGluZyAkREVTQyIKLQorCWVjaG8gLW4gIlN0YXJ0aW5nICRERVNDOiAiCiAJaWYgdGVzdCAiJEJMVUVUT09USF9FTkFCTEVEIiA9IDA7IHRoZW4KLQkJZWNobyAiZGlzYWJsZWQuIHNlZSAvZXRjL2RlZmF1bHQvYmx1ZXRvb3RoIgorCQllY2hvICJkaXNhYmxlZCAoc2VlIC9ldGMvZGVmYXVsdC9ibHVldG9vdGgpLiIKIAkJZXhpdCAwCiAJZmkKLQogCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1iYWNrZ3JvdW5kICRTU0RfT1BUSU9OUwotCWVjaG8gIiR7REFFTU9OIyMqL30iCi0KKwllY2hvICIke0RBRU1PTiMjKi99LiIKICAgOzsKICAgc3RvcCkKLQllY2hvICJTdG9wcGluZyAkREVTQyIKKwllY2hvIC1uICJTdG9wcGluZyAkREVTQzogIgogCWlmIHRlc3QgIiRCTFVFVE9PVEhfRU5BQkxFRCIgPSAwOyB0aGVuCi0JCWVjaG8gImRpc2FibGVkLiIKKwkJZWNobyAiZGlzYWJsZWQgKHNlZSAvZXRjL2RlZmF1bHQvYmx1ZXRvb3RoKS4iCiAJCWV4aXQgMAogCWZpCiAJc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wICRTU0RfT1BUSU9OUwotCWVjaG8gIiR7REFFTU9OfSIKKwllY2hvICIke0RBRU1PTiMjKi99LiIKICAgOzsKICAgcmVzdGFydHxmb3JjZS1yZWxvYWQpCiAJJDAgc3RvcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTBiODJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLXJlcXVpcmUgYmx1ZXo1LmluYwotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiYmx1ZXo1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjk4ZGVmODhkZjk2ODQwZGZiYjA4NThiYjZkNzMzNTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTZjOWMwNWQyYTFkYTY0NGNlMzU3MGQ5NzVhZGEzNjQzZDJlNjBjMDA3YTk1NWJhYzA5YzBhMGVmZWI1OGQxNSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAotICAgIGF0dHJpYi9nYXR0dG9vbCBcCi0gICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCi0gICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCi0gICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCi0gICAgdG9vbHMvb2JleGN0bCBcCi0gICAgdG9vbHMvYnRtZ210IFwKLSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gRVhQRVJJTUVOVEFMCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19FWFBFUklNRU5UQUwgPz0gIiBcCi0gICAgZW11bGF0b3IvYnR2aXJ0IFwKLSAgICBlbXVsYXRvci9iMWVlIFwKLSAgICBlbXVsYXRvci9oZnAgXAotICAgIHRvb2xzLzNkc3AgXAotICAgIHRvb2xzL21nbXQtdGVzdGVyIFwKLSAgICB0b29scy9nYXAtdGVzdGVyIFwKLSAgICB0b29scy9sMmNhcC10ZXN0ZXIgXAotICAgIHRvb2xzL3Njby10ZXN0ZXIgXAotICAgIHRvb2xzL3NtcC10ZXN0ZXIgXAotICAgIHRvb2xzL2hjaS10ZXN0ZXIgXAotICAgIHRvb2xzL3JmY29tbS10ZXN0ZXIgXAotICAgIHRvb2xzL2JkYWRkciBcCi0gICAgdG9vbHMvYXZpbmZvIFwKLSAgICB0b29scy9hdnRlc3QgXAotICAgIHRvb2xzL3Njb3Rlc3QgXAotICAgIHRvb2xzL2FtcHRlc3QgXAotICAgIHRvb2xzL2h3ZGIgXAotICAgIHRvb2xzL2hjaWV2ZW50bWFzayBcCi0gICAgdG9vbHMvaGNpc2VjZmlsdGVyIFwKLSAgICB0b29scy9idGluZm8gXAotICAgIHRvb2xzL2J0YXR0YWNoIFwKLSAgICB0b29scy9idHNub29wIFwKLSAgICB0b29scy9idHByb3h5IFwKLSAgICB0b29scy9idGlvdGVzdCBcCi0gICAgdG9vbHMvbWNhcHRlc3QgXAotICAgIHRvb2xzL2NsdGVzdCBcCi0gICAgdG9vbHMvb29idGVzdCBcCi0gICAgdG9vbHMvc2VxMmJzZXEgXAotICAgIHRvb2xzL2liZWFjb24gXAotICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAotICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAotICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCi0gICAgcHJvZmlsZXMvaWFwL2lhcGQgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZjg1ODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDYuYmIKQEAgLTAsMCArMSw2OSBAQAorcmVxdWlyZSBibHVlejUuaW5jCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJibHVlejUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MTNmMzVkNmZhNGNhNTc3MmM1M2FkYjkzNmJmMTk0NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGFiM2QzODM3YzFhZmI4YWUyMjhhOTRiYTE3NzA5YTQ2NTBiZDRkYjI0MjExYjY3NzFhYjczNWM4OTA4ZTI4IgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBSRUFETElORQorIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfUkVBRExJTkUgPz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGVwcmVjYXRlZCcsICdhdHRyaWIvZ2F0dHRvb2wnLCAnJywgZCl9IFwKKyAgICB0b29scy9vYmV4LWNsaWVudC10b29sIFwKKyAgICB0b29scy9vYmV4LXNlcnZlci10b29sIFwKKyAgICB0b29scy9ibHVldG9vdGgtcGxheWVyIFwKKyAgICB0b29scy9vYmV4Y3RsIFwKKyAgICB0b29scy9idG1nbXQgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBURVNUSU5HCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19URVNUSU5HID89ICIgXAorICAgIGVtdWxhdG9yL2J0dmlydCBcCisgICAgZW11bGF0b3IvYjFlZSBcCisgICAgZW11bGF0b3IvaGZwIFwKKyAgICBwZXJpcGhlcmFsL2J0c2Vuc29yIFwKKyAgICB0b29scy8zZHNwIFwKKyAgICB0b29scy9tZ210LXRlc3RlciBcCisgICAgdG9vbHMvZ2FwLXRlc3RlciBcCisgICAgdG9vbHMvbDJjYXAtdGVzdGVyIFwKKyAgICB0b29scy9zY28tdGVzdGVyIFwKKyAgICB0b29scy9zbXAtdGVzdGVyIFwKKyAgICB0b29scy9oY2ktdGVzdGVyIFwKKyAgICB0b29scy9yZmNvbW0tdGVzdGVyIFwKKyAgICB0b29scy9ibmVwLXRlc3RlciBcCisgICAgdG9vbHMvdXNlcmNoYW4tdGVzdGVyIFwKKyIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVE9PTFMKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX0JUID89ICIgXAorICAgIHRvb2xzL2JkYWRkciBcCisgICAgdG9vbHMvYXZpbmZvIFwKKyAgICB0b29scy9hdnRlc3QgXAorICAgIHRvb2xzL3Njb3Rlc3QgXAorICAgIHRvb2xzL2FtcHRlc3QgXAorICAgIHRvb2xzL2h3ZGIgXAorICAgIHRvb2xzL2hjaWV2ZW50bWFzayBcCisgICAgdG9vbHMvaGNpc2VjZmlsdGVyIFwKKyAgICB0b29scy9idGluZm8gXAorICAgIHRvb2xzL2J0c25vb3AgXAorICAgIHRvb2xzL2J0cHJveHkgXAorICAgIHRvb2xzL2J0aW90ZXN0IFwKKyAgICB0b29scy9ibmVwdGVzdCBcCisgICAgdG9vbHMvbWNhcHRlc3QgXAorICAgIHRvb2xzL2NsdGVzdCBcCisgICAgdG9vbHMvb29idGVzdCBcCisgICAgdG9vbHMvYWR2dGVzdCBcCisgICAgdG9vbHMvc2VxMmJzZXEgXAorICAgIHRvb2xzL25va2Z3IFwKKyAgICB0b29scy9jcmVhdGUtaW1hZ2UgXAorICAgIHRvb2xzL2VkZHlzdG9uZSBcCisgICAgdG9vbHMvaWJlYWNvbiBcCisgICAgdG9vbHMvYnRnYXR0LWNsaWVudCBcCisgICAgdG9vbHMvYnRnYXR0LXNlcnZlciBcCisgICAgdG9vbHMvdGVzdC1ydW5uZXIgXAorICAgIHRvb2xzL2NoZWNrLXNlbGZ0ZXN0IFwKKyAgICB0b29scy9nYXR0LXNlcnZpY2UgXAorICAgIHByb2ZpbGVzL2lhcC9pYXBkIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCmluZGV4IDY0YTU0MTguLjJiMDNmOWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYwpAQCAtMTMsOSArMTMsOSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT00ODZhMjc5YTZhYjBjOGQxNTJiY2RhM2E1YjVlZGMzNiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgYmx1ZXRvb3RoCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBibHVldG9vdGggdXBkYXRlLWFsdGVybmF0aXZlcwogCi1ERVBFTkRTICA9ICJkYnVzIGdsaWItMi4wIHBwcCBpcHRhYmxlcyByZWFkbGluZSIKK0RFUEVORFMgID0gImRidXMgZ2xpYi0yLjAgcHBwIHJlYWRsaW5lIgogCiBJTkNfUFIgPSAicjIwIgogCkBAIC0zMyw2ICszMyw3IEBACiBQQUNLQUdFQ09ORklHID8/PSAid2lzcHIgXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJzNnIHN5c3RlbWQgd2lmaScsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBpcHRhYmxlcyBcCiAiCiAKICMgSWYgeW91IHdhbnQgQ29ubk1hbiB0byBzdXBwb3J0IFZQTiwgYWRkIGZvbGxvd2luZyBzdGF0ZW1lbnQgaW50bwpAQCAtNTAsNiArNTEsOCBAQAogUEFDS0FHRUNPTkZJR1twcHRwXSA9ICItLWVuYWJsZS1wcHRwIC0td2l0aC1wcHRwPSR7c2JpbmRpcn0vcHB0cCwtLWRpc2FibGUtcHB0cCwscHB0cC1saW51eCIKICMgV0lTUHIgc3VwcG9ydCBmb3IgbG9nZ2luZyBpbnRvIGhvdHNwb3RzLCByZXF1aXJlcyBUTFMKIFBBQ0tBR0VDT05GSUdbd2lzcHJdID0gIi0tZW5hYmxlLXdpc3ByLC0tZGlzYWJsZS13aXNwcixnbnV0bHMsIgorUEFDS0FHRUNPTkZJR1tuZnRhYmxlc10gPSAiLS13aXRoLWZpcmV3YWxsPW5mdGFibGVzICwsbGlibW5sIGxpYm5mdG5sLCxrZXJuZWwtbW9kdWxlLW5mLXRhYmxlcy1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LWNoYWluLW5hdC1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LWNoYWluLXJvdXRlLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtbWV0YSBrZXJuZWwtbW9kdWxlLW5mdC1tYXNxLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtbmF0IgorUEFDS0FHRUNPTkZJR1tpcHRhYmxlc10gPSAiLS13aXRoLWZpcmV3YWxsPWlwdGFibGVzICwsaXB0YWJsZXMsaXB0YWJsZXMiCiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJjb25ubWFuIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDUgNSAyIDMgLiBzdG9wIDIyIDAgMSA2IC4iCkBAIC02Niw2ICs2OSwxMSBAQAogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXZwbiA9ICJjb25ubWFuLXZwbi5zZXJ2aWNlIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXdhaXQtb25saW5lID0gImNvbm5tYW4td2FpdC1vbmxpbmUuc2VydmljZSIKIAorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCdyZXNvbHYtY29uZicsJycsZCl9IgorQUxURVJOQVRJVkVfVEFSR0VUW3Jlc29sdi1jb25mXSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuY29ubm1hbicsJycsZCl9IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYnLCcnLGQpfSIKKwogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KIAkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKQEAgLTg2LDYgKzk0LDExIEBACiAJIyBBdXRvbWFrZSAxLjEyIHdvbid0IGluc3RhbGwgZW1wdHkgZGlyZWN0b3JpZXMsIGJ1dCB3ZSBuZWVkIHRoZQogCSMgcGx1Z2lucyBkaXJlY3RvcnkgdG8gYmUgcHJlc2VudCBmb3Igb3duZXJzaGlwCiAJbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9jb25ubWFuL3BsdWdpbnMKKworICAgICMgRm9yIHJlYWQtb25seSBmaWxlc3lzdGVtLCBkbyBub3QgY3JlYXRlIGxpbmtzIGR1cmluZyBib290dXAKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGxuIC1zZiAuLi9ydW4vY29ubm1hbi9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5jb25ubWFuCisgICAgZmkKIH0KIAogIyBUaGVzZSB1c2VkIHRvIGJlIHBsdWdpbnMsIGJ1dCBub3cgdGhleSBhcmUgY29yZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtRml4LWNvbXBpbGUtb24tbXVzbC13aXRoLWtlcm5lbC00LjktaGVhZGVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLUZpeC1jb21waWxlLW9uLW11c2wtd2l0aC1rZXJuZWwtNC45LWhlYWRlcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmM2I4NmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtRml4LWNvbXBpbGUtb24tbXVzbC13aXRoLWtlcm5lbC00LjktaGVhZGVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gYzhiZmFkNGVlOWQyYzUwNWMwMGNjYmI4YjIxMzk1NDNiNWFkNmZjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDIzIEphbiAyMDE3IDE3OjQxOjM5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBjb21waWxlIG9uIG11c2wgd2l0aCBrZXJuZWwgNC45IGhlYWRlcnMKLQotS2VybmVsIGhlYWRlcnMgYnJlYWsgd2hlbiBtdXNsIGRlZmluZXMgSUZGX0xPV0VSX1VQLiBXaGlsZQotd2FpdGluZyBmb3IgbW9yZSBwcm9wZXIgZml4IGluIG11c2wsIGFkZCBhIGhhY2sgdG8gY29ubm1hbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtXb3JrYXJvdW5kXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIHNyYy82dG80LmMgICAgIHwgNCArKysrCi0gc3JjL2ZpcmV3YWxsLmMgfCA0ICsrKysKLSBzcmMvaXB0YWJsZXMuYyB8IDQgKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjLzZ0bzQuYyBiL3NyYy82dG80LmMKLWluZGV4IDcxYTI4ODIuLjE5MzhhZmIgMTAwNjQ0Ci0tLS0gYS9zcmMvNnRvNC5jCi0rKysgYi9zcmMvNnRvNC5jCi1AQCAtMjQsNiArMjQsMTAgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0rLyogaGFjayB0byBtYWtlIHN1cmUga2VybmVsIGhlYWRlcnMgdW5kZXJzdGFuZCB0aGF0IGxpYmMgKG11c2wpCi0rICAgZG9lcyBkZWZpbmUgSUZGX0xPV0VSX1VQIGV0IGFsLiAqLwotKyNkZWZpbmUgX19VQVBJX0RFRl9JRl9ORVRfREVWSUNFX0ZMQUdTX0xPV0VSX1VQX0RPUk1BTlRfRUNITyAwCi0rCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL3NyYy9maXJld2FsbC5jIGIvc3JjL2ZpcmV3YWxsLmMKLWluZGV4IGM0NDBkZjYuLmM4M2RlZjkgMTAwNjQ0Ci0tLS0gYS9zcmMvZmlyZXdhbGwuYwotKysrIGIvc3JjL2ZpcmV3YWxsLmMKLUBAIC0yMyw2ICsyMywxMCBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLSsvKiBoYWNrIHRvIG1ha2Ugc3VyZSBrZXJuZWwgaGVhZGVycyB1bmRlcnN0YW5kIHRoYXQgbGliYyAobXVzbCkKLSsgICBkb2VzIGRlZmluZSBJRkZfTE9XRVJfVVAgZXQgYWwuICovCi0rI2RlZmluZSBfX1VBUElfREVGX0lGX05FVF9ERVZJQ0VfRkxBR1NfTE9XRVJfVVBfRE9STUFOVF9FQ0hPIDAKLSsKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLSAjaW5jbHVkZSA8eHRhYmxlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9pcHRhYmxlcy5jIGIvc3JjL2lwdGFibGVzLmMKLWluZGV4IDgyZTNhYzQuLjQ2YWQ5ZTIgMTAwNjQ0Ci0tLS0gYS9zcmMvaXB0YWJsZXMuYwotKysrIGIvc3JjL2lwdGFibGVzLmMKLUBAIC0yMyw2ICsyMywxMCBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLSsvKiBoYWNrIHRvIG1ha2Ugc3VyZSBrZXJuZWwgaGVhZGVycyB1bmRlcnN0YW5kIHRoYXQgbGliYyAobXVzbCkKLSsgICBkb2VzIGRlZmluZSBJRkZfTE9XRVJfVVAgZXQgYWwuICovCi0rI2RlZmluZSBfX1VBUElfREVGX0lGX05FVF9ERVZJQ0VfRkxBR1NfTE9XRVJfVVBfRE9STUFOVF9FQ0hPIDAKLSsKLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1jb25ubWFuLnNlcnZpY2Utc3RvcC1zeXN0ZW1kLXJlc29sdmVkLXdoZW4td2UtdXNlLWNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtY29ubm1hbi5zZXJ2aWNlLXN0b3Atc3lzdGVtZC1yZXNvbHZlZC13aGVuLXdlLXVzZS1jby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTJlMGJkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWNvbm5tYW4uc2VydmljZS1zdG9wLXN5c3RlbWQtcmVzb2x2ZWQtd2hlbi13ZS11c2UtY28ucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA5ZjcwYjk0ZWJmMThmNTJjMTE1NjM0NjQyNjUyODMwZmE3N2YyN2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMTIgSnVuIDIwMTcgMTY6NTI6MzkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29ubm1hbi5zZXJ2aWNlOiBzdG9wIHN5c3RlbWQtcmVzb2x2ZWQgd2hlbiB3ZSB1c2UgY29ubm1hbgorCitTdG9wIHN5c3RlbWQtcmVzb2x2ZWQgc2VydmljZSB3aGVuIHdlIHVzZSBjb25ubWFuIGFzIG5ldHdvcmsgbWFuYWdlci4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIHNyYy9jb25ubWFuLnNlcnZpY2UuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9jb25ubWFuLnNlcnZpY2UuaW4gYi9zcmMvY29ubm1hbi5zZXJ2aWNlLmluCitpbmRleCA5ZjVjMTBmLi5kYWI0OGJjIDEwMDY0NAorLS0tIGEvc3JjL2Nvbm5tYW4uc2VydmljZS5pbgorKysrIGIvc3JjL2Nvbm5tYW4uc2VydmljZS5pbgorQEAgLTYsNiArNiw3IEBAIFJlcXVpcmVzTW91bnRzRm9yPUBsb2NhbHN0YXRlZGlyQC9saWIvY29ubm1hbgorIEFmdGVyPWRidXMuc2VydmljZSBuZXR3b3JrLXByZS50YXJnZXQgc3lzdGVtZC1zeXN1c2Vycy5zZXJ2aWNlCisgQmVmb3JlPW5ldHdvcmsudGFyZ2V0IG11bHRpLXVzZXIudGFyZ2V0IHNodXRkb3duLnRhcmdldAorIFdhbnRzPW5ldHdvcmsudGFyZ2V0CisrQ29uZmxpY3RzPXN5c3RlbWQtcmVzb2x2ZWQuc2VydmljZQorIAorIFtTZXJ2aWNlXQorIFR5cGU9ZGJ1cworLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWZpcmV3YWxsLW5mdGFibGVzLWZpeC1idWlsZC13aXRoLWxpYm5mdG5sLTEuMC43LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYWZiZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaApAQCAtMCwwICsxLDcyIEBACitGcm9tIDQwNThjZTMxODZhOTlmZDVmMDMzNTBmYzExYTdmYzhkMzhiNmEzODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDEwOjUzOjE4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpcmV3YWxsLW5mdGFibGVzOiBmaXggYnVpbGQgd2l0aCBsaWJuZnRubC0xLjAuNworCitXZSBuZWVkIHRoZXNlIHVwZGF0ZXMgdG8gYWNjb21tb2RhdGUgdGhlIGNoYW5nZXMgY2F1c2VkIGJ5IHRoZSBmb2xsb3dpbmcKK2NvbW1pdCBpbiBsaWJuZnRubC0xLjAuNworCitjb21taXQgOTA3YTlmOGU1YTkzZjViY2Q0NDk2NDNlYjM5MTZhNjU2ZDYzNDc1OAorQXV0aG9yOiBQYWJsbyBOZWlyYSBBeXVzbyA8cGFibG9AbmV0ZmlsdGVyLm9yZz4KK0RhdGU6ICAgVHVlIERlYyAyMCAxMzo0NzoxMSAyMDE2ICswMTAwCisKK3NyYzogZ2V0IHJpZCBvZiBhbGlhc2VzIGFuZCBjb21wYXQKKworVGhpcyBtYWNoaW5lcnkgd2FzIGludHJvZHVjZWQgdG8gYXZvaWQgc3VkZGVuIGNvbXBpbGF0aW9uIGJyZWFrYWdlIG9mCitvbGQgbmZ0YWJsZXMgcmVsZWFzZXMuIFdpdGggdGhlIHVwY29taW5nIHJlbGVhc2Ugb2YgMC43IChhbmQgMC42IHdoaWNoCitpcyBub3cgNiBtb250aHMgb2xkKSB0aGlzIGlzIG5vdCByZXF1aXJlZCBhbnltb3JlLgorCitNb3Jlb3ZlciwgdXNlcnMgZ2FpbiBub3RoaW5nIGZyb20gb2xkZXIgcmVsZWFzZXMgc2luY2UgdGhleSBhcmUKK2hhbGYtYm9pbGVkIGFuZCBidWdneS4KKworU28gbGV0J3MgZ2V0IHJpZCBvZiBhbGlhc2VzIG5vdy4gQnVtcCBMSUJWRVJTSU9OIGFuZCB1cGRhdGUgbWFwIGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYyBiL3NyYy9maXJld2FsbC1uZnRhYmxlcy5jCitpbmRleCA1ODNkMWM0Li44M2IxMzdiIDEwMDY0NAorLS0tIGEvc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMKKysrKyBiL3NyYy9maXJld2FsbC1uZnRhYmxlcy5jCitAQCAtMzg3LDkgKzM4Nyw5IEBAIHN0YXRpYyBpbnQgYWRkX2NtcChzdHJ1Y3QgbmZ0bmxfcnVsZSAqcnVsZSwgdWludDMyX3Qgc3JlZywgdWludDMyX3Qgb3AsCisgICAgICAgICBpZiAoIWV4cHIpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworIAorLSAgICAgICAgbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX0NNUF9TUkVHLCBzcmVnKTsKKy0gICAgICAgIG5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9DTVBfT1AsIG9wKTsKKy0gICAgICAgIG5mdG5sX2V4cHJfc2V0KGV4cHIsIE5GVF9FWFBSX0NNUF9EQVRBLCBkYXRhLCBkYXRhX2xlbik7CisrICAgICAgICBuZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9DTVBfU1JFRywgc3JlZyk7CisrICAgICAgICBuZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9DTVBfT1AsIG9wKTsKKysgICAgICAgIG5mdG5sX2V4cHJfc2V0KGV4cHIsIE5GVE5MX0VYUFJfQ01QX0RBVEEsIGRhdGEsIGRhdGFfbGVuKTsKKyAKKyAgICAgICAgIG5mdG5sX3J1bGVfYWRkX2V4cHIocnVsZSwgZXhwcik7CisgCitAQCAtNTc1LDggKzU3NSw4IEBAIHN0YXRpYyBpbnQgYnVpbGRfcnVsZV9uYXQoY29uc3QgY2hhciAqYWRkcmVzcywgdW5zaWduZWQgY2hhciBwcmVmaXhsZW4sCisgCWV4cHIgPSBuZnRubF9leHByX2FsbG9jKCJtZXRhIik7CisgCWlmICghZXhwcikKKyAJCWdvdG8gZXJyOworLQluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfTUVUQV9LRVksIE5GVF9NRVRBX09JRk5BTUUpOworLQluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfTUVUQV9EUkVHLCBORlRfUkVHXzEpOworKwluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9NRVRBX0tFWSwgTkZUX01FVEFfT0lGTkFNRSk7CisrCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX01FVEFfRFJFRywgTkZUX1JFR18xKTsKKyAJbmZ0bmxfcnVsZV9hZGRfZXhwcihydWxlLCBleHByKTsKKyAJZXJyID0gYWRkX2NtcChydWxlLCBORlRfUkVHXzEsIE5GVF9DTVBfRVEsIGludGVyZmFjZSwKKyAJCQlzdHJsZW4oaW50ZXJmYWNlKSArIDEpOworQEAgLTY3Nyw4ICs2NzcsOCBAQCBzdGF0aWMgaW50IGJ1aWxkX3J1bGVfc25hdChpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKmFkZHJlc3MsCisgCWV4cHIgPSBuZnRubF9leHByX2FsbG9jKCJtZXRhIik7CisgCWlmICghZXhwcikKKyAJCWdvdG8gZXJyOworLQluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfTUVUQV9LRVksIE5GVF9NRVRBX09JRik7CistCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9NRVRBX0RSRUcsIE5GVF9SRUdfMSk7CisrCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX01FVEFfS0VZLCBORlRfTUVUQV9PSUYpOworKwluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9NRVRBX0RSRUcsIE5GVF9SRUdfMSk7CisgCW5mdG5sX3J1bGVfYWRkX2V4cHIocnVsZSwgZXhwcik7CisgCWVyciA9IGFkZF9jbXAocnVsZSwgTkZUX1JFR18xLCBORlRfQ01QX0VRLCAmaW5kZXgsIHNpemVvZihpbmRleCkpOworIAlpZiAoZXJyIDwgMCkKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtc3RhdHMtRml4LWJhZC1maWxlLWRlc2NyaXB0b3ItaW5pdGlhbGlzYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1zdGF0cy1GaXgtYmFkLWZpbGUtZGVzY3JpcHRvci1pbml0aWFsaXNhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU0NTgxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1zdGF0cy1GaXgtYmFkLWZpbGUtZGVzY3JpcHRvci1pbml0aWFsaXNhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIGM3ZjQxNTFmYjA1M2IwZDA2OTFkOGYxMGQ3ZTM2OTAyNjVkMjg4ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWthc3ogTm93YWsgPGxub3dha0B0eWNvaW50LmNvbT4KLURhdGU6IFdlZCwgMjYgT2N0IDIwMTYgMTg6MTM6MDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3RhdHM6IEZpeCBiYWQgZmlsZSBkZXNjcmlwdG9yIGluaXRpYWxpc2F0aW9uCi0KLVN0YXRzIGZpbGUgY29kZSBpbml0aWFsaXNlcyBpdHMgZmlsZSBkZXNjcmlwdG9yIGZpZWxkIHRvIDAuICBCdXQgMCBpcwotYSB2YWxpZCBmZCB2YWx1ZS4gLTEgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gIFRoaXMgY2F1c2VzIHByb2JsZW1zCi13aGVuIGFuIGVycm9yIGhhcHBlbnMgYmVmb3JlIGEgc3RhdHMgZmlsZSBpcyBvcGVuIChlLmcuIG1rZGlyCi1mYWlscykuIFRoZSBjbGVhbi11cCBwcm9jZWR1cmUsIHN0YXRzX2ZyZWUoKSBjYWxscyBjbG9zZShmZCkuICBXaGVuIGZkCi1pcyAwLCB0aGlzIGZpcnN0IGNsb3NlcyBzdGRpbiwgYW5kIHRoZW4gYW55IGZpbGVzL3NvY2tldHMgd2hpY2gKLXJlY2VpdmVkIGZkPTAsIHJlLXVzZWQgYnkgdGhlIE9TLgotCi1GaXhlZCBzZXZlcmFsIGluc3RhbmNlcyBvZiBiYWQgZmlsZSBkZXNjcmlwdG9yIGZpZWxkIGhhbmRsaW5nLCBpbiBjYXNlCi1vZiBlcnJvcnMuCi0KLVRoZSBidWcgcmVzdWx0cyB3aXRoIGNvbm5tYW4gZnJlZXppbmcgaWYgdGhlcmUgaXMgbm8gcmVhZC93cml0ZSBzdG9yYWdlCi1kaXJlY3RvcnkgYXZhaWxhYmxlLCBhbmQgdGhlcmUgYXJlIG11bHRpcGxlIGFjdGl2ZSBpbnRlcmZhY2VzCi0oZmQ9MCBnZXRzIHJlLXVzZWQgZm9yIHNvY2tldHMgaW4gdGhhdCBjYXNlKS4KLQotVGhlIHBhdGNoIHdhcyBpbXBvcnRlZCBmcm9tIHRoZSBDb25ubWFuIGdpdCByZXBvc2l0b3J5Ci0oZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4pIGFzIG9mIGNvbW1pdCBpZAotYzdmNDE1MWZiMDUzYjBkMDY5MWQ4ZjEwZDdlMzY5MDI2NWQyODg4OS4gCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLVNpZ25lZC1vZmYtYnk6IEx1a2FzeiBOb3dhayA8bG5vd2FrQHR5Y29pbnQuY29tPgotLS0tCi0gc3JjL3N0YXRzLmMgfCAxNSArKysrKysrKysrKysrKysKLSBzcmMvdXRpbC5jICB8ICA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc3RhdHMuYyBiL3NyYy9zdGF0cy5jCi1pbmRleCAyNjM0M2IxLi5jM2NhNzM4IDEwMDY0NAotLS0tIGEvc3JjL3N0YXRzLmMKLSsrKyBiL3NyYy9zdGF0cy5jCi1AQCAtMzc4LDYgKzM3OCw3IEBAIHN0YXRpYyBpbnQgc3RhdHNfZmlsZV9zZXR1cChzdHJ1Y3Qgc3RhdHNfZmlsZSAqZmlsZSkKLSAJCQlzdHJlcnJvcihlcnJubyksIGZpbGUtPm5hbWUpOwotIAotIAkJVEZSKGNsb3NlKGZpbGUtPmZkKSk7Ci0rCQlmaWxlLT5mZCA9IC0xOwotIAkJZ19mcmVlKGZpbGUtPm5hbWUpOwotIAkJZmlsZS0+bmFtZSA9IE5VTEw7Ci0gCi1AQCAtMzkzLDYgKzM5NCw3IEBAIHN0YXRpYyBpbnQgc3RhdHNfZmlsZV9zZXR1cChzdHJ1Y3Qgc3RhdHNfZmlsZSAqZmlsZSkKLSAJZXJyID0gc3RhdHNfZmlsZV9yZW1hcChmaWxlLCBzaXplKTsKLSAJaWYgKGVyciA8IDApIHsKLSAJCVRGUihjbG9zZShmaWxlLT5mZCkpOwotKwkJZmlsZS0+ZmQgPSAtMTsKLSAJCWdfZnJlZShmaWxlLT5uYW1lKTsKLSAJCWZpbGUtPm5hbWUgPSBOVUxMOwotIAotQEAgLTY0OSw2ICs2NTEsMTMgQEAgc3RhdGljIGludCBzdGF0c19maWxlX2hpc3RvcnlfdXBkYXRlKHN0cnVjdCBzdGF0c19maWxlICpkYXRhX2ZpbGUpCi0gCWJ6ZXJvKGhpc3RvcnlfZmlsZSwgc2l6ZW9mKHN0cnVjdCBzdGF0c19maWxlKSk7Ci0gCWJ6ZXJvKHRlbXBfZmlsZSwgc2l6ZW9mKHN0cnVjdCBzdGF0c19maWxlKSk7Ci0gCi0rCS8qCi0rCSAqIDAgaXMgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IgLSBmZCBuZWVkcyB0byBiZSBpbml0aWFsaXplZAotKwkgKiB0byAtMSB0byBoYW5kbGUgZXJyb3JzIGNvcnJlY3RseQotKwkgKi8KLSsJaGlzdG9yeV9maWxlLT5mZCA9IC0xOwotKwl0ZW1wX2ZpbGUtPmZkID0gLTE7Ci0rCi0gCWVyciA9IHN0YXRzX29wZW4oaGlzdG9yeV9maWxlLCBkYXRhX2ZpbGUtPmhpc3RvcnlfbmFtZSk7Ci0gCWlmIChlcnIgPCAwKQotIAkJcmV0dXJuIGVycjsKLUBAIC02ODIsNiArNjkxLDEyIEBAIGludCBfX2Nvbm5tYW5fc3RhdHNfc2VydmljZV9yZWdpc3RlcihzdHJ1Y3QgY29ubm1hbl9zZXJ2aWNlICpzZXJ2aWNlKQotIAkJaWYgKCFmaWxlKQotIAkJCXJldHVybiAtRU5PTUVNOwotIAotKwkJLyoKLSsJCSAqIDAgaXMgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IgLSBmZCBuZWVkcyB0byBiZSBpbml0aWFsaXplZAotKwkJICogdG8gLTEgdG8gaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkKLSsJCSAqLwotKwkJZmlsZS0+ZmQgPSAtMTsKLSsKLSAJCWdfaGFzaF90YWJsZV9pbnNlcnQoc3RhdHNfaGFzaCwgc2VydmljZSwgZmlsZSk7Ci0gCX0gZWxzZSB7Ci0gCQlyZXR1cm4gLUVBTFJFQURZOwotZGlmZiAtLWdpdCBhL3NyYy91dGlsLmMgYi9zcmMvdXRpbC5jCi1pbmRleCBlNjUzMmM4Li43MzJkNDUxIDEwMDY0NAotLS0tIGEvc3JjL3V0aWwuYwotKysrIGIvc3JjL3V0aWwuYwotQEAgLTYzLDcgKzYzLDcgQEAgaW50IF9fY29ubm1hbl91dGlsX2luaXQodm9pZCkKLSB7Ci0gCWludCByID0gMDsKLSAKLS0JaWYgKGYgPiAwKQotKwlpZiAoZiA+PSAwKQotIAkJcmV0dXJuIDA7Ci0gCi0gCWYgPSBvcGVuKFVSQU5ET00sIE9fUkRPTkxZKTsKLUBAIC04Niw3ICs4Niw3IEBAIGludCBfX2Nvbm5tYW5fdXRpbF9pbml0KHZvaWQpCi0gCi0gdm9pZCBfX2Nvbm5tYW5fdXRpbF9jbGVhbnVwKHZvaWQpCi0gewotLQlpZiAoZiA+IDApCi0rCWlmIChmID49IDApCi0gCQljbG9zZShmKTsKLSAKLSAJZiA9IC0xOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjMzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTA0ZDliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjMzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotcmVxdWlyZSBjb25ubWFuLmluYwotCi1TUkNfVVJJICA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1wbHVnaW4uaC1DaGFuZ2UtdmlzaWJpbGl0eS10by1kZWZhdWx0LWZvci1kZWJ1Zy1zeW1iLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25ubWFuIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uby12ZXJzaW9uLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXN0YXRzLUZpeC1iYWQtZmlsZS1kZXNjcmlwdG9yLWluaXRpYWxpc2F0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMjg2NS5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAyLXJlc29sdmUtbXVzbC1kb2VzLW5vdC1pbXBsZW1lbnQtcmVzX25pbml0LnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWNvbXBpbGUtb24tbXVzbC13aXRoLWtlcm5lbC00LjktaGVhZGVycy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImM1MTkwM2ZkM2U3YTZhMzcxZDEyYWM1ZDcyYTFmYTAxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjODk0NjAzNmZhNzAxMjRkNjYzMTM2ZjlmNmI2MjM4ZDg5N2NhNDgyNzgyZGY5MDdiMDdhNDI4YjA5ZGY1YTAiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImNvbm5tYW4tY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMyYzY4OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM0LmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgY29ubm1hbi5pbmMKKworU1JDX1VSSSAgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtcGx1Z2luLmgtQ2hhbmdlLXZpc2liaWxpdHktdG8tZGVmYXVsdC1mb3ItZGVidWctc3ltYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25ubWFuLnNlcnZpY2Utc3RvcC1zeXN0ZW1kLXJlc29sdmVkLXdoZW4td2UtdXNlLWNvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25ubWFuIFwKKyAgICAgICAgICAgIGZpbGU6Ly9uby12ZXJzaW9uLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMjg2NS5wYXRjaCBcCisgICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAyLXJlc29sdmUtbXVzbC1kb2VzLW5vdC1pbXBsZW1lbnQtcmVzX25pbml0LnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTIwMDAyODcwMmM4MzFkNWY1MzVkMjBkNjFlNjA4ZWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTlhMDgwOGM3MjljMWYzNDhmYzM2ZDhjZWNiNTJkMTliNzJiYzM0Y2I0MTFjNTAyNjA4Y2IwZTAxOTBmYzcxZSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiY29ubm1hbi1jb25mIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKaW5kZXggYWFmZGQwYS4uZTk0MzcwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jCkBAIC0xMiwzMCArMTIsMzMgQEAKIAogREVQRU5EUyA9ICJvcGVuc3NsIGJpbmQiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmlzYy5vcmcvaXNjL2RoY3AvJHtQVn0vZGhjcC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaCBcCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuaXNjLm9yZy9pc2MvZGhjcC8ke1BWfS9kaGNwLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0LXJlbGF5IGZpbGU6Ly9kZWZhdWx0LXJlbGF5IFwKICAgICAgICAgICAgZmlsZTovL2luaXQtc2VydmVyIGZpbGU6Ly9kZWZhdWx0LXNlcnZlciBcCiAgICAgICAgICAgIGZpbGU6Ly9kaGNsaWVudC5jb25mIGZpbGU6Ly9kaGNwZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2RoY2xpZW50LXN5c3RlbWQtd3JhcHBlciBcCisgICAgICAgICAgIGZpbGU6Ly9kaGNsaWVudC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL2RoY3BkLnNlcnZpY2UgZmlsZTovL2RoY3JlbGF5LnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vZGhjcGQ2LnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc2VhcmNoLWZvci1saWJ4bWwyLnBhdGNoICIKLQorICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiZnRwOi8vZnRwLmlzYy5vcmcvaXNjL2RoY3AvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCtcLihcZCs/KSkvIgogCiBpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHVzZXJhZGQgdXBkYXRlLXJjLmQKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1zZXJ2ZXIiCi1VU0VSQUREX1BBUkFNXyR7UE59LXNlcnZlciA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vJHtQTn0gLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCAke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0tc2VydmVyID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi8ke0JQTn0gLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCAke0JQTn0iCiAKLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyICR7UE59LXJlbGF5IgorU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zZXJ2ZXIgJHtQTn0tcmVsYXkgJHtQTn0tY2xpZW50IgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNlcnZlciA9ICJkaGNwZC5zZXJ2aWNlIGRoY3BkNi5zZXJ2aWNlIgogU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zZXJ2ZXIgPSAiZGlzYWJsZSIKIAogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXJlbGF5ID0gImRoY3JlbGF5LnNlcnZpY2UiCiBTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LXJlbGF5ID0gImRpc2FibGUiCiAKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1jbGllbnQgPSAiZGhjbGllbnQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tY2xpZW50ID0gImRpc2FibGUiCisKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiZGhjcC1zZXJ2ZXIiCiBJTklUU0NSSVBUX05BTUVfZGhjcC1zZXJ2ZXIgPSAiZGhjcC1zZXJ2ZXIiCiBJTklUU0NSSVBUX1BBUkFNU19kaGNwLXNlcnZlciA9ICJkZWZhdWx0cyIKQEAgLTQ2LDcgKzQ5LDcgQEAKICAgICAgICAgICAgICAgICAtLXdpdGgtY2xpLWxlYXNlLWZpbGU9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGhjcC9kaGNsaWVudC5sZWFzZXMgXAogICAgICAgICAgICAgICAgIC0td2l0aC1jbGk2LWxlYXNlLWZpbGU9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGhjcC9kaGNsaWVudDYubGVhc2VzIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtbGliYmluZD0ke1NUQUdJTkdfTElCRElSfS8gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBhcmFub2lhIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1wYXJhbm9pYSAtLWRpc2FibGUtc3RhdGljIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tIFwKICAgICAgICAgICAgICAgICIKIApAQCAtNzksMTUgKzgyLDIzIEBACiAJc2VkIC1pIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY3BkKi5zZXJ2aWNlCiAJc2VkIC1pIC1lICdzLEBiYXNlX2JpbmRpckAsJHtiYXNlX2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjcGQqLnNlcnZpY2UKIAlzZWQgLWkgLWUgJ3MsQGxvY2Fsc3RhdGVkaXJALCR7bG9jYWxzdGF0ZWRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjcGQqLnNlcnZpY2UKLSAgICAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjcmVsYXkuc2VydmljZQorCXNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaGNyZWxheS5zZXJ2aWNlCisKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIgJHtEfSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kaGNsaWVudC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY2xpZW50LnNlcnZpY2UKKwlzZWQgLWkgLWUgJ3MsQEJBU0VfU0JJTkRJUkAsJHtiYXNlX3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY2xpZW50LnNlcnZpY2UKIH0KIAotUEFDS0FHRVMgKz0gImRoY3Atc2VydmVyIGRoY3Atc2VydmVyLWNvbmZpZyBkaGNwLWNsaWVudCBkaGNwLXJlbGF5IGRoY3Atb21zaGVsbCIKK1BBQ0tBR0VTICs9ICJkaGNwLWxpYnMgZGhjcC1zZXJ2ZXIgZGhjcC1zZXJ2ZXItY29uZmlnIGRoY3AtY2xpZW50IGRoY3AtcmVsYXkgZGhjcC1vbXNoZWxsIgogCi1GSUxFU18ke1BOfSA9ICIiCitQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0iCiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgogUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiIKIAorRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vbGliZGhjcGN0bC5zby4wKiAke2xpYmRpcn0vbGlib21hcGkuc28uMCoiCisKIEZJTEVTXyR7UE59LXNlcnZlciA9ICIke3NiaW5kaXJ9L2RoY3BkICR7c3lzY29uZmRpcn0vaW5pdC5kL2RoY3Atc2VydmVyIgogUlJFQ09NTUVORFNfJHtQTn0tc2VydmVyID0gImRoY3Atc2VydmVyLWNvbmZpZyIKIApAQCAtOTUsNyArMTA2LDExIEBACiAKIEZJTEVTXyR7UE59LXJlbGF5ID0gIiR7c2JpbmRpcn0vZGhjcmVsYXkgJHtzeXNjb25mZGlyfS9pbml0LmQvZGhjcC1yZWxheSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZGhjcC1yZWxheSIKIAotRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCAke2Jhc2Vfc2JpbmRpcn0vZGhjbGllbnQtc2NyaXB0ICR7c3lzY29uZmRpcn0vZGhjcC9kaGNsaWVudC5jb25mIgorRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2RoY2xpZW50LXNjcmlwdCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kaGNwL2RoY2xpZW50LmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgIgogCiBGSUxFU18ke1BOfS1vbXNoZWxsID0gIiR7YmluZGlyfS9vbXNoZWxsIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWIzY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDdjYzI5MTQ0NTM1YTYyMmZjNjcxZGM4NmViMWRhNjViMDQ3M2E3YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE2OjE0OjIyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTFdIGRlZmluZSBtYWNybyBfUEFUSF9ESENQRF9DT05GIGFuZCBfUEFUSF9ESENMSUVOVF9DT05GCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1JlYmFzZSB0byA0LjMuNgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgaW5jbHVkZXMvc2l0ZS5oIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlcy9zaXRlLmggYi9pbmNsdWRlcy9zaXRlLmgKK2luZGV4IGIyZjdmZDcuLjI4MGZiYjkgMTAwNjQ0CistLS0gYS9pbmNsdWRlcy9zaXRlLmgKKysrKyBiL2luY2x1ZGVzL3NpdGUuaAorQEAgLTE0OSw3ICsxNDksOCBAQAorIC8qIERlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRoZSBkaGNwZC5jb25mIGZpbGUgdG8gZ28gc29tZXdoZXJlIG90aGVyIHRoYW4KKyAgICB0aGUgZGVmYXVsdCBsb2NhdGlvbi4gICBCeSBkZWZhdWx0LCBpdCBnb2VzIGluIC9ldGMvZGhjcGQuY29uZi4gKi8KKyAKKy0vKiAjZGVmaW5lIF9QQVRIX0RIQ1BEX0NPTkYJIi9ldGMvZGhjcGQuY29uZiIgKi8KKysjZGVmaW5lIF9QQVRIX0RIQ1BEX0NPTkYJIi9ldGMvZGhjcC9kaGNwZC5jb25mIgorKyNkZWZpbmUgX1BBVEhfREhDTElFTlRfQ09ORgkiL2V0Yy9kaGNwL2RoY2xpZW50LmNvbmYiCisgCisgLyogTmV0d29yayBBUEkgZGVmaW5pdGlvbnMuICAgWW91IGRvIG5vdCBuZWVkIHRvIGNob29zZSBvbmUgb2YgdGhlc2UgLSBpZgorICAgIHlvdSBkb24ndCBjaG9vc2UsIG9uZSB3aWxsIGJlIGNob3NlbiBmb3IgeW91IGluIHlvdXIgc3lzdGVtJ3MgY29uZmlnCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0NDNhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU3ViamVjdDogW1BBVENIXSBzaXRlLmg6IGVuYWJsZSBnZW50bGUgc2h1dGRvd24KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gaW5jbHVkZXMvc2l0ZS5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvc2l0ZS5oIGIvaW5jbHVkZXMvc2l0ZS5oCi1pbmRleCAxZGQxMjUxLi5hYmI2NmU0IDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvc2l0ZS5oCi0rKysgYi9pbmNsdWRlcy9zaXRlLmgKLUBAIC0yODksNyArMjg5LDcgQEAKLSAgICBzaXR1YXRpb25zLiAgV2UgcGxhbiB0byByZXZpc2l0IHRoaXMgZmVhdHVyZSBhbmQgbWF5Ci0gICAgbWFrZSBub24tYmFja3dhcmRzIGNvbXBhdGlibGUgY2hhbmdlcyBpbmNsdWRpbmcgdGhlCi0gICAgcmVtb3ZhbCBvZiB0aGlzIGRlZmluZS4gIFVzZSBhdCB5b3VyIG93biByaXNrLiAgKi8KLS0vKiAjZGVmaW5lIEVOQUJMRV9HRU5UTEVfU0hVVERPV04gKi8KLSsjZGVmaW5lIEVOQUJMRV9HRU5UTEVfU0hVVERPV04KLSAKLSAvKiBJbmNsdWRlIG9sZCBlcnJvciBjb2Rlcy4gIFRoaXMgaXMgcHJvdmlkZWQgaW4gY2FzZSB5b3UKLSAgICBhcmUgYnVpbGRpbmcgYW4gZXh0ZXJuYWwgcHJvZ3JhbSBzaW1pbGFyIHRvIG9tc2hlbGwgZm9yCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NTlkYzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoCkBAIC0wLDAgKzEsMTE3IEBACitGcm9tIGJlNzU0MGQzMWMzNTZlODBlZTAyZTkwZThiZjE2MmI3YWM2ZTViYTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE0OjU2OjU2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIGRoY2xpZW50IGRidXMKKwordXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCisKK1JlYmFzZSB0byA0LjMuNgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2xpZW50L3NjcmlwdHMvYnNkb3MgICB8IDUgKysrKysKKyBjbGllbnQvc2NyaXB0cy9mcmVlYnNkIHwgNSArKysrKworIGNsaWVudC9zY3JpcHRzL2xpbnV4ICAgfCA1ICsrKysrCisgY2xpZW50L3NjcmlwdHMvbmV0YnNkICB8IDUgKysrKysKKyBjbGllbnQvc2NyaXB0cy9vcGVuYnNkIHwgNSArKysrKworIGNsaWVudC9zY3JpcHRzL3NvbGFyaXMgfCA1ICsrKysrCisgNiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9ic2RvcyBiL2NsaWVudC9zY3JpcHRzL2JzZG9zCitpbmRleCBkNjlkMGQ4Li4wOTViMTQzIDEwMDc1NQorLS0tIGEvY2xpZW50L3NjcmlwdHMvYnNkb3MKKysrKyBiL2NsaWVudC9zY3JpcHRzL2JzZG9zCitAQCAtNDUsNiArNDUsMTEgQEAgZXhpdF93aXRoX2hvb2tzKCkgeworICAgICAuIC9ldGMvZGhjbGllbnQtZXhpdC1ob29rcworICAgZmkKKyAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0CisrICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgorKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCisrICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKKysgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKKysgIGZpCisgICBleGl0ICRleGl0X3N0YXR1cworIH0KKyAKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9mcmVlYnNkIGIvY2xpZW50L3NjcmlwdHMvZnJlZWJzZAoraW5kZXggOGYzZTJhMi4uYWQ3ZmI0NCAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL2ZyZWVic2QKKysrKyBiL2NsaWVudC9zY3JpcHRzL2ZyZWVic2QKK0BAIC04OSw2ICs4OSwxMSBAQCBleGl0X3dpdGhfaG9va3MoKSB7CisgICAgIC4gL2V0Yy9kaGNsaWVudC1leGl0LWhvb2tzCisgICBmaQorICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKKysgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCisrICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKKysgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAorKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgorKyAgZmkKKyAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL2xpbnV4IGIvY2xpZW50L3NjcmlwdHMvbGludXgKK2luZGV4IDVmYjE2MTIuLjNkNDQ3YjYgMTAwNzU1CistLS0gYS9jbGllbnQvc2NyaXB0cy9saW51eAorKysrIGIvY2xpZW50L3NjcmlwdHMvbGludXgKK0BAIC0xNzQsNiArMTc0LDExIEBAIGV4aXRfd2l0aF9ob29rcygpIHsKKyAgICAgICAgIGV4aXRfc3RhdHVzPSQ/CisgICAgIGZpCisgCisrICAgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCisrICAgICAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCisrICAgICAgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAorKyAgICAgICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCisrICAgIGZpCisgICAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL25ldGJzZCBiL2NsaWVudC9zY3JpcHRzL25ldGJzZAoraW5kZXggMDczODNiNy4uYWFiYThlOCAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL25ldGJzZAorKysrIGIvY2xpZW50L3NjcmlwdHMvbmV0YnNkCitAQCAtNDUsNiArNDUsMTEgQEAgZXhpdF93aXRoX2hvb2tzKCkgeworICAgICAuIC9ldGMvZGhjbGllbnQtZXhpdC1ob29rcworICAgZmkKKyAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0CisrICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgorKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCisrICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKKysgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKKysgIGZpCisgICBleGl0ICRleGl0X3N0YXR1cworIH0KKyAKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9vcGVuYnNkIGIvY2xpZW50L3NjcmlwdHMvb3BlbmJzZAoraW5kZXggZTdmNDc0Ni4uNTZiOTgwYyAxMDA2NDQKKy0tLSBhL2NsaWVudC9zY3JpcHRzL29wZW5ic2QKKysrKyBiL2NsaWVudC9zY3JpcHRzL29wZW5ic2QKK0BAIC00NSw2ICs0NSwxMSBAQCBleGl0X3dpdGhfaG9va3MoKSB7CisgICAgIC4gL2V0Yy9kaGNsaWVudC1leGl0LWhvb2tzCisgICBmaQorICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKKysgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCisrICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKKysgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAorKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgorKyAgZmkKKyAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL3NvbGFyaXMgYi9jbGllbnQvc2NyaXB0cy9zb2xhcmlzCitpbmRleCBhZjU1M2I5Li40YTJhYTY5IDEwMDc1NQorLS0tIGEvY2xpZW50L3NjcmlwdHMvc29sYXJpcworKysrIGIvY2xpZW50L3NjcmlwdHMvc29sYXJpcworQEAgLTI2LDYgKzI2LDExIEBAIGV4aXRfd2l0aF9ob29rcygpIHsKKyAgICAgLiAvZXRjL2RoY2xpZW50LWV4aXQtaG9va3MKKyAgIGZpCisgIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAorKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KKysgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAorKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCisrICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCisrICBmaQorICAgZXhpdCAkZXhpdF9zdGF0dXMKKyB9CisgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTBjN2I2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBkODBiZDc5MjMyM2RiZDU2MjY5MzA5Zjg1YjQ1MDZlYjZiMWI2MGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNTowNTo0NyArMDgwMAorU3ViamVjdDogW1BBVENIIDAzLzExXSBsaW5rIHdpdGggbGNyeXB0bworCitGcm9tIDQuMi4wIGZpbmFsIHJlbGVhc2UsIC1sY3J5cHRvIGNoZWNrIHdhcyByZW1vdmVkIGFuZCB3ZSBjb21waWxlCitzdGF0aWMgbGlicmFyaWVzCitmcm9tIGJpbmQgdGhhdCBhcmUgbGlua2VkIHRvIGxpYmNyeXB0by4gVGhpcyBpcyB3aHkgaSBhZGRlZCBhIHBhdGNoIGluCitvcmRlciB0byBhZGQKKy1sY3J5cHRvIHRvIExJQlMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgorCitSZWJhc2UgdG8gNC4zLjYKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggY2RmYTM1Mi4uNDRmYjU3ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTkxLDYgKzU5MSwxMCBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbdm9pZCBmb28oKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOworICMgTG9vayBmb3Igb3B0aW9uYWwgaGVhZGVycy4KKyBBQ19DSEVDS19IRUFERVJTKHN5cy9zb2NrZXQuaCBuZXQvaWZfZGwuaCBuZXQvaWY2LmggcmVnZXguaCkKKyAKKysjIGZpbmQgYW4gTUQ1IGxpYnJhcnkKKytBQ19TRUFSQ0hfTElCUyhNRDVfSW5pdCwgW2NyeXB0b10pCisrQUNfU0VBUkNIX0xJQlMoTUQ1SW5pdCwgW2NyeXB0b10pCisrCisgIyBTb2xhcmlzIG5lZWRzIHNvbWUgbGlicmFyaWVzIGZvciBmdW5jdGlvbnMKKyBBQ19TRUFSQ0hfTElCUyhzb2NrZXQsIFtzb2NrZXRdKQorIEFDX1NFQVJDSF9MSUJTKGluZXRfbnRvYSwgW25zbF0pCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxZDg2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gY2NjZWMwMzQ0ZDY4ZGFjNDEwMGI2ZjI2MGVlMjRlN2MyZGE5ZGZkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTU6MDg6MjIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8xMV0gRml4IG91dCBvZiB0cmVlIGJ1aWxkcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUlAgMjAxMy8wMy8yMQorCitSZWJhc2UgdG8gNC4zLjYKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2xpZW50L01ha2VmaWxlLmFtICB8IDQgKystLQorIGNvbW1vbi9NYWtlZmlsZS5hbSAgfCAzICsrLQorIGRoY3BjdGwvTWFrZWZpbGUuYW0gfCAyICsrCisgb21hcGlwL01ha2VmaWxlLmFtICB8IDEgKworIHJlbGF5L01ha2VmaWxlLmFtICAgfCAyICstCisgc2VydmVyL01ha2VmaWxlLmFtICB8IDIgKy0KKyA2IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9NYWtlZmlsZS5hbSBiL2NsaWVudC9NYWtlZmlsZS5hbQoraW5kZXggMmNiODNkOC4uNDczMGJiMyAxMDA2NDQKKy0tLSBhL2NsaWVudC9NYWtlZmlsZS5hbQorKysrIGIvY2xpZW50L01ha2VmaWxlLmFtCitAQCAtNywxMSArNywxMSBAQCBTVUJESVJTID0gLiB0ZXN0cworIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisgCisgQU1fQ1BQRkxBR1MgPSAtRENMSUVOVF9QQVRIPSciUEFUSD0kKHNiaW5kaXIpOi9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluIicgXAorLQkgICAgICAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicKKysJICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIGRpc3Rfc3lzY29uZl9EQVRBID0gZGhjbGllbnQuY29uZi5leGFtcGxlCisgc2Jpbl9QUk9HUkFNUyA9IGRoY2xpZW50CistZGhjbGllbnRfU09VUkNFUyA9IGNscGFyc2UuYyBkaGNsaWVudC5jIGRoYzYuYyBcCisrZGhjbGllbnRfU09VUkNFUyA9ICQoc3JjZGlyKS9jbHBhcnNlLmMgJChzcmNkaXIpL2RoY2xpZW50LmMgJChzcmNkaXIpL2RoYzYuYyBcCisgCQkgICBzY3JpcHRzL2JzZG9zIHNjcmlwdHMvZnJlZWJzZCBzY3JpcHRzL2xpbnV4IHNjcmlwdHMvbWFjb3MgXAorIAkJICAgc2NyaXB0cy9uZXRic2Qgc2NyaXB0cy9uZXh0c3RlcCBzY3JpcHRzL29wZW5ic2QgXAorIAkJICAgc2NyaXB0cy9zb2xhcmlzIHNjcmlwdHMvb3BlbndydAorZGlmZiAtLWdpdCBhL2NvbW1vbi9NYWtlZmlsZS5hbSBiL2NvbW1vbi9NYWtlZmlsZS5hbQoraW5kZXggMTEzYWVlOC4uMGYyNGZiYiAxMDA2NDQKKy0tLSBhL2NvbW1vbi9NYWtlZmlsZS5hbQorKysrIGIvY29tbW9uL01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDUgQEAKKy1BTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJworK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJworKworIEFNX0NGTEFHUyA9ICQoTERBUF9DRkxBR1MpCisgCisgbm9pbnN0X0xJQlJBUklFUyA9IGxpYmRoY3AuYQorZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCitpbmRleCBjZWIwZGUxLi5iYThkZDhiIDEwMDY0NAorLS0tIGEvZGhjcGN0bC9NYWtlZmlsZS5hbQorKysrIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQorQEAgLTEsNSArMSw3IEBACisgQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKyAKKytBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikKKysKKyBiaW5fUFJPR1JBTVMgPSBvbXNoZWxsCisgbGliX0xJQlJBUklFUyA9IGxpYmRoY3BjdGwuYQorIG5vaW5zdF9QUk9HUkFNUyA9IGNsdGVzdAorZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQoraW5kZXggNDQ2YTU5NC4uZGQxYWZhMCAxMDA2NDQKKy0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQorKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDUgQEAKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCisgbGliX0xJQlJBUklFUyA9IGxpYm9tYXBpLmEKKyBub2luc3RfUFJPR1JBTVMgPSBzdnRlc3QKK2RpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCitpbmRleCAzMDYwZWNhLi42ZDY1MmY2IDEwMDY0NAorLS0tIGEvcmVsYXkvTWFrZWZpbGUuYW0KKysrKyBiL3JlbGF5L01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorIAorLUFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKKytBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQorIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCitkaWZmIC0tZ2l0IGEvc2VydmVyL01ha2VmaWxlLmFtIGIvc2VydmVyL01ha2VmaWxlLmFtCitpbmRleCA1NGZlZWRmLi4zOTkwYjljIDEwMDY0NAorLS0tIGEvc2VydmVyL01ha2VmaWxlLmFtCisrKysgYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK0BAIC02LDcgKzYsNyBAQCBTVUJESVJTID0gLiB0ZXN0cworIAorIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisgCistQU1fQ1BQRkxBR1MgPSAtSS4uIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCisrQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCisgZGlzdF9zeXNjb25mX0RBVEEgPSBkaGNwZC5jb25mLmV4YW1wbGUKKyBzYmluX1BST0dSQU1TID0gZGhjcGQKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNS1kaGNwLWNsaWVudC1maXgtaW52b2tlLWRoY2xpZW50LXNjcmlwdC1mYWlsZWQtb24tUmVhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDUtZGhjcC1jbGllbnQtZml4LWludm9rZS1kaGNsaWVudC1zY3JpcHQtZmFpbGVkLW9uLVJlYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDU2MzgxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDUtZGhjcC1jbGllbnQtZml4LWludm9rZS1kaGNsaWVudC1zY3JpcHQtZmFpbGVkLW9uLVJlYS5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDJlOGZmMGU0ZjZkMzllMzQ2ZWE4NmI4YzUxNGFiNGNjYzc4ZmEzNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE1OjI0OjE0ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIGRoY3AtY2xpZW50OiBmaXggaW52b2tlIGRoY2xpZW50LXNjcmlwdCBmYWlsZWQgb24KKyBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0KKworSW4gcmVhZC1vbmx5IGZpbGUgc3lzdGVtLCAnL2V0YycgaXMgb24gdGhlIHJlYWRvbmx5IHBhcnRpdGlvbiwKK2FuZCAnL2V0Yy9yZXNvbHYuY29uZicgaXMgc3ltbGlua2VkIHRvIGEgc2VwYXJhdGUgd3JpdGFibGUKK3BhcnRpdGlvbi4KKworSW4gdGhpcyBzaXR1YXRpb24sIHdlIGNyZWF0ZSB0ZW1wIGZpbGVzICdyZXNvbHYuY29uZi5kaGNsaWVudC1uZXcnCitpbiAvdG1wIGRpci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9zY3JpcHRzL2xpbnV4IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAoraW5kZXggM2Q0NDdiNi4uMzEyMmE3NSAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL2xpbnV4CisrKysgYi9jbGllbnQvc2NyaXB0cy9saW51eAorQEAgLTQwLDcgKzQwLDcgQEAgbWFrZV9yZXNvbHZfY29uZigpIHsKKyAgICAgIyBESENQdjQKKyAgICAgaWYgWyAtbiAiJG5ld19kb21haW5fc2VhcmNoIiBdIHx8IFsgLW4gIiRuZXdfZG9tYWluX25hbWUiIF0gfHwKKyAgICAgICAgWyAtbiAiJG5ld19kb21haW5fbmFtZV9zZXJ2ZXJzIiBdOyB0aGVuCistICAgICAgICBuZXdfcmVzb2x2X2NvbmY9L2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudC1uZXcKKysgICAgICAgIG5ld19yZXNvbHZfY29uZj0vdG1wL3Jlc29sdi5jb25mLmRoY2xpZW50LW5ldworICAgICAgICAgcm0gLWYgJG5ld19yZXNvbHZfY29uZgorIAorICAgICAgICAgaWYgWyAtbiAiJG5ld19kb21haW5fbmFtZSIgXTsgdGhlbgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYyYjI4MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMDE2NDFkMTQ2ZTRlNmJlYTk1NGU0YTRlZTFmNjIzMGI4MjI2NjViNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTU6Mzc6NDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xMV0gc2l0ZS5oOiBlbmFibGUgZ2VudGxlIHNodXRkb3duCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDQuMy42CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBpbmNsdWRlcy9zaXRlLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlcy9zaXRlLmggYi9pbmNsdWRlcy9zaXRlLmgKK2luZGV4IDI4MGZiYjkuLmU2YzI5NzIgMTAwNjQ0CistLS0gYS9pbmNsdWRlcy9zaXRlLmgKKysrKyBiL2luY2x1ZGVzL3NpdGUuaAorQEAgLTI5Niw3ICsyOTYsNyBAQAorICAgIHNpdHVhdGlvbnMuICBXZSBwbGFuIHRvIHJldmlzaXQgdGhpcyBmZWF0dXJlIGFuZCBtYXkKKyAgICBtYWtlIG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBjaGFuZ2VzIGluY2x1ZGluZyB0aGUKKyAgICByZW1vdmFsIG9mIHRoaXMgZGVmaW5lLiAgVXNlIGF0IHlvdXIgb3duIHJpc2suICAqLworLS8qICNkZWZpbmUgRU5BQkxFX0dFTlRMRV9TSFVURE9XTiAqLworKyNkZWZpbmUgRU5BQkxFX0dFTlRMRV9TSFVURE9XTgorIAorIC8qIEluY2x1ZGUgb2xkIGVycm9yIGNvZGVzLiAgVGhpcyBpcyBwcm92aWRlZCBpbiBjYXNlIHlvdQorICAgIGFyZSBidWlsZGluZyBhbiBleHRlcm5hbCBwcm9ncmFtIHNpbWlsYXIgdG8gb21zaGVsbCBmb3IKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNy1BZGQtY29uZmlndXJlLWFyZ3VtZW50LXRvLW1ha2UtdGhlLWxpYnhtbDItZGVwZW5kZW5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2MyNmVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDcxMDc1MTFmZDIwOWYwOGY5YTk2Zjg5MzgwNDFhZTQ4ZjMyOTU4OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNjoxNzo0OSArMDgwMAorU3ViamVjdDogW1BBVENIIDA3LzExXSBBZGQgY29uZmlndXJlIGFyZ3VtZW50IHRvIG1ha2UgdGhlIGxpYnhtbDIgZGVwZW5kZW5jeQorIGV4cGxpY2l0IGFuZCBkZXRlcm1pbmlzaXRpYy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CisKK1JlYmFzZSB0byA0LjMuNgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDQ0ZmI1N2UuLjhlOWY1MDkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTYxMSw2ICs2MTEsMTcgQEAgQUNfQ0hFQ0tfRlVOQ1Moc3RybGNhdCkKKyAjIEZvciBIUC9VWCB3ZSBuZWVkIC1saXB2NiBmb3IgaWZfbmFtZXRvaW5kZXgsIHBlcmhhcHMgb3RoZXJzLgorIEFDX1NFQVJDSF9MSUJTKGlmX25hbWV0b2luZGV4LCBbaXB2Nl0pCisgCisrQUNfQVJHX1dJVEgobGlieG1sMiwKKysJQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJ4bWwyXSwgW2xpbmsgYWdhaW5zdCBsaWJ4bWwyLiB0aGlzIGlzIG5lZWRlZCBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIHhtbDIgc3VwcG9ydCBlbmFibGVkXSksCisrCXdpdGhfbGlieG1sMj0iJHdpdGh2YWwiLCB3aXRoX2xpYnhtbDI9Im5vIikKKysKKytpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhubzsgdGhlbgorKwlBQ19TRUFSQ0hfTElCUyh4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50LCBbeG1sMl0sCisrCQlbaWYgdGVzdCB4JHdpdGhfbGlieG1sMiAhPSB4YXV0bzsgdGhlbgorKwkJCUFDX01TR19GQUlMVVJFKFsqKiogQ2Fubm90IGZpbmQgeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCB3aXRoIC1seG1sMiBhbmQgbGlieG1sMiB3YXMgcmVxdWVzdGVkXSkKKysJCWZpXSkKKytmaQorKworICMgY2hlY2sgZm9yIC9kZXYvcmFuZG9tIChkZWNsYXJlcyBIQVZFX0RFVl9SQU5ET00pCisgQUNfTVNHX0NIRUNLSU5HKGZvciByYW5kb20gZGV2aWNlKQorIEFDX0FSR19XSVRIKHJhbmRvbWRldiwKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA2ZDE4YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA4LXR3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSA5Mjg3NWY1Y2M0NDkxNDUxNWU1MGMxMWM1MDNhMDljZWM5MDQ5N2IyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjo1MTo0NCAtMDQwMAorU3ViamVjdDogW1BBVENIIDA4LzExXSB0d2VhayB0byBzdXBwb3J0IGV4dGVybmFsIGJpbmQKKworVHdlYWsgdGhlIGV4dGVybmFsIGJpbmQgdG8gb2UtY29yZSdzIHN5c3Jvb3QgcmF0aGVyIHRoYW4KK2V4dGVybmFsIGJpbmQgc291cmNlIGJ1aWxkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgPG9lLWNvcmUgc3BlY2lmaWM+CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KKyBjbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCisgY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIHwgMiArLQorIGRoY3BjdGwvTWFrZWZpbGUuYW0gICAgICB8IDIgKy0KKyBvbWFwaXAvTWFrZWZpbGUuYW0gICAgICAgfCAyICstCisgcmVsYXkvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQorIHNlcnZlci9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KKyBzZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCisgOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KK2luZGV4IDQ3MzBiYjMuLjg0ZDgxMzEgMTAwNjQ0CistLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KKysrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQorQEAgLTQsNyArNCw3IEBACisgIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KKyBTVUJESVJTID0gLiB0ZXN0cworIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKKyAJICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbSBiL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggNTAzMWQwYy4uYThkZmQyNiAxMDA2NDQKKy0tLSBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQorZGlmZiAtLWdpdCBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbSBiL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggZjZhNDNlNC4uMmY5OGQyMiAxMDA2NDQKKy0tLSBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKK2RpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQoraW5kZXggYmE4ZGQ4Yi4uOWIyNDg2ZSAxMDA2NDQKKy0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KKysrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KK0BAIC0xLDQgKzEsNCBAQAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKQorIAorZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQoraW5kZXggZGQxYWZhMC4uZTRhODU5OSAxMDA2NDQKKy0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQorKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDQgQEAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCitkaWZmIC0tZ2l0IGEvcmVsYXkvTWFrZWZpbGUuYW0gYi9yZWxheS9NYWtlZmlsZS5hbQoraW5kZXggNmQ2NTJmNi4uYjNiZjU3OCAxMDA2NDQKKy0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCisrKysgYi9yZWxheS9NYWtlZmlsZS5hbQorQEAgLTEsNCArMSw0IEBACistQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKytCSU5ETElCRElSID0gQEJJTkRESVJACisgCisgQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKK2RpZmYgLS1naXQgYS9zZXJ2ZXIvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK2luZGV4IDM5OTBiOWMuLmI1ZDhjMmQgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvTWFrZWZpbGUuYW0KKysrKyBiL3NlcnZlci9NYWtlZmlsZS5hbQorQEAgLTQsNyArNCw3IEBACisgIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KKyBTVUJESVJTID0gLiB0ZXN0cworIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorZGlmZiAtLWdpdCBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSBiL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggYTg3YzVlNy4uOTgyMTA4MSAxMDA2NDQKKy0tLSBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDktcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEyYjZkNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZjNmOGI3NzI2ZTUwZTI0ZWYzZWRmNWZhNWExN2UzMWQzOTExOGQ3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE1OjQ5OjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTFdIHJlbW92ZSBkaGNsaWVudC1zY3JpcHQgYmFzaCBkZXBlbmRlbmN5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CisKK1JlYmFzZSB0byA0LjMuNgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2xpZW50L3NjcmlwdHMvbGludXggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9saW51eCBiL2NsaWVudC9zY3JpcHRzL2xpbnV4CitpbmRleCAzMTIyYTc1Li4xNzEyZDdkIDEwMDc1NQorLS0tIGEvY2xpZW50L3NjcmlwdHMvbGludXgKKysrKyBiL2NsaWVudC9zY3JpcHRzL2xpbnV4CitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorICMgZGhjbGllbnQtc2NyaXB0IGZvciBMaW51eC4gRGFuIEhhbGJlcnQsIE1hcmNoLCAxOTk3LgorICMgVXBkYXRlZCBmb3IgTGludXggMi5bMTJdIGJ5IEJyaWFuIEouIE11cnJlbGwsIEphbnVhcnkgMTk5OS4KKyAjIE5vIGd1YXJhbnRlZXMgYWJvdXQgdGhpcy4gSSdtIGEgbm92aWNlIGF0IHRoZSBkZXRhaWxzIG9mIExpbnV4CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMC1idWlsZC1zaGFyZWQtbGlicy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTI4NzMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2gKQEAgLTAsMCArMSwyMDggQEAKK0Zyb20gNzZjMzcwYTkyOWU1YWI1ZGJjODFjMmZiY2Y0ZTUwZjRmYmMwOGNlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNTo1MzozNyArMDgwMAorU3ViamVjdDogW1BBVENIIDEwLzExXSBidWlsZCBzaGFyZWQgbGlicworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUG9ydCBwYXRjaGVzIGZyb20gRmVkb3JhIHRvIGJ1aWxkIHNoYXJlZCBsaWJzIHJhdGhlciB0aGFuIHN0YXRpYyBsaWJzLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDQuMy42CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9NYWtlZmlsZS5hbSAgICAgICB8ICA0ICsrLS0KKyBjb21tb24vdGVzdHMvTWFrZWZpbGUuYW0gfCAxMyArKysrKy0tLS0tLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgIHwgMTIgKystLS0tLS0tLS0tCisgZGhjcGN0bC9NYWtlZmlsZS5hbSAgICAgIHwgMTQgKysrKysrLS0tLS0tLS0KKyBvbWFwaXAvTWFrZWZpbGUuYW0gICAgICAgfCAgNyArKystLS0tCisgcmVsYXkvTWFrZWZpbGUuYW0gICAgICAgIHwgIDUgKystLS0KKyBzZXJ2ZXIvTWFrZWZpbGUuYW0gICAgICAgfCAgNyArKystLS0tCisgc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtIHwgIDcgKysrLS0tLQorIDggZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KK2luZGV4IDg0ZDgxMzEuLmU3NzZiZjAgMTAwNjQ0CistLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KKysrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQorQEAgLTE1LDcgKzE1LDcgQEAgZGhjbGllbnRfU09VUkNFUyA9ICQoc3JjZGlyKS9jbHBhcnNlLmMgJChzcmNkaXIpL2RoY2xpZW50LmMgJChzcmNkaXIpL2RoYzYuYyBcCisgCQkgICBzY3JpcHRzL2JzZG9zIHNjcmlwdHMvZnJlZWJzZCBzY3JpcHRzL2xpbnV4IHNjcmlwdHMvbWFjb3MgXAorIAkJICAgc2NyaXB0cy9uZXRic2Qgc2NyaXB0cy9uZXh0c3RlcCBzY3JpcHRzL29wZW5ic2QgXAorIAkJICAgc2NyaXB0cy9zb2xhcmlzIHNjcmlwdHMvb3BlbndydAorLWRoY2xpZW50X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKKy0JCSAkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQorK2RoY2xpZW50X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAorKwkJICAtTCQoQklORExJQkRJUikgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyBtYW5fTUFOUyA9IGRoY2xpZW50LjggZGhjbGllbnQtc2NyaXB0LjggZGhjbGllbnQuY29uZi41IGRoY2xpZW50LmxlYXNlcy41CisgRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCitkaWZmIC0tZ2l0IGEvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAyZjk4ZDIyLi44NzQ1ZTg4IDEwMDY0NAorLS0tIGEvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0xNSwyNiArMTUsMjMgQEAgQVRGX1RFU1RTICs9IGFsbG9jX3VuaXR0ZXN0IGRuc191bml0dGVzdCBtaXNjX3VuaXR0ZXN0IG5zX25hbWVfdW5pdHRlc3QKKyBhbGxvY191bml0dGVzdF9TT1VSQ0VTID0gdGVzdF9hbGxvYy5jICQodG9wX3NyY2RpcikvdGVzdHMvdF9hcGlfZGhjcC5jCisgYWxsb2NfdW5pdHRlc3RfTERBREQgPSAkKEFURl9MREZMQUdTKQorIGFsbG9jX3VuaXR0ZXN0X0xEQUREICs9IC4uL2xpYmRoY3AuYSAgXAorLQkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKKy0JJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCisrCS4uLy4uL29tYXBpcC9saWJvbWFwaS5sYSAtTCQoQklORExJQkRJUikgLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyAKKyBkbnNfdW5pdHRlc3RfU09VUkNFUyA9IGRuc191bml0dGVzdC5jICQodG9wX3NyY2RpcikvdGVzdHMvdF9hcGlfZGhjcC5jCisgZG5zX3VuaXR0ZXN0X0xEQUREID0gJChBVEZfTERGTEFHUykKKyBkbnNfdW5pdHRlc3RfTERBREQgKz0gLi4vbGliZGhjcC5hICBcCistCS4uLy4uL29tYXBpcC9saWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAorLQkkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgICQoQklORExJQkRJUikvbGliaXNjLmEKKysJLi4vLi4vb21hcGlwL2xpYm9tYXBpLmxhIC1MJChCSU5ETElCRElSKSAtbGRucyAtbGlzY2NmZyAtbGlzYworIAorIG1pc2NfdW5pdHRlc3RfU09VUkNFUyA9IG1pc2NfdW5pdHRlc3QuYyAkKHRvcF9zcmNkaXIpL3Rlc3RzL3RfYXBpX2RoY3AuYworIG1pc2NfdW5pdHRlc3RfTERBREQgPSAkKEFURl9MREZMQUdTKQorIG1pc2NfdW5pdHRlc3RfTERBREQgKz0gLi4vbGliZGhjcC5hICBcCistCS4uLy4uL29tYXBpcC9saWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAorLQkkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgICQoQklORExJQkRJUikvbGliaXNjLmEKKysJLi4vLi4vb21hcGlwL2xpYm9tYXBpLmxhIC1MJChCSU5ETElCRElSKSAtbGRucyAtbGlzY2NmZyAtbGlzYworIAorIG5zX25hbWVfdW5pdHRlc3RfU09VUkNFUyA9IG5zX25hbWVfdGVzdC5jICQodG9wX3NyY2RpcikvdGVzdHMvdF9hcGlfZGhjcC5jCisgbnNfbmFtZV91bml0dGVzdF9MREFERCA9ICQoQVRGX0xERkxBR1MpCisgbnNfbmFtZV91bml0dGVzdF9MREFERCArPSAuLi9saWJkaGNwLmEgIFwKKy0JLi4vLi4vb21hcGlwL2xpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCistCSQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAgJChCSU5ETElCRElSKS9saWJpc2MuYQorKwkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAtTCQoQklORExJQkRJUikgXAorKwktbGRucyAtbGlzY2NmZyAtbGlzYworIAorIGNoZWNrOiAkKEFURl9URVNUUykKKyAJQGlmIHRlc3QgJCh0b3Bfc3JjZGlyKSAhPSAke3RvcF9idWlsZGRpcn07IHRoZW4gXAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggOGU5ZjUwOS4uYmZlOTg4YSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDcsMTYgKzQ3LDggQEAgQU1fQ09ORElUSU9OQUwoQ1JPU1NfQ09NUElMSU5HLCB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9ICJ5ZXMiKQorICMgVXNlIHRoaXMgdG8gZGVmaW5lIF9HTlVfU09VUkNFIHRvIHB1bGwgaW4gdGhlIElQdjYgQWR2YW5jZWQgU29ja2V0IEFQSS4KKyBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKKyAKKy1BQ19QUk9HX1JBTkxJQgorLQorLUFDX1BBVEhfUFJPRyhBUiwgYXIpCistQUNfU1VCU1QoQVIpCistCistaWYgdGVzdCAiWCRBUiIgPSAiWCI7IHRoZW4KKy0JQUNfTVNHX0VSUk9SKFsKKy1hciBwcm9ncmFtIG5vdCBmb3VuZC4gIFBsZWFzZSBmaXggeW91ciBQQVRIIHRvIGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBpbgorLXdoaWNoIGFyIHJlc2lkZXMsIG9yIHNldCBBUiBpbiB0aGUgZW52aXJvbm1lbnQgd2l0aCB0aGUgZnVsbCBwYXRoIHRvIGFyLl0pCistZmkKKysjIFVzZSBsaWJ0b29sIHRvIHNpbXBsaWZ5IGJ1aWxkaW5nIG9mIHNoYXJlZCBsaWJyYXJpZXMKKytBQ19QUk9HX0xJQlRPT0wKKyAKKyBBQ19DT05GSUdfSEVBREVSUyhbaW5jbHVkZXMvY29uZmlnLmhdKQorIAorZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCitpbmRleCA5YjI0ODZlLi43ODRjZGY3IDEwMDY0NAorLS0tIGEvZGhjcGN0bC9NYWtlZmlsZS5hbQorKysrIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQorQEAgLTMsMTkgKzMsMTcgQEAgQklORExJQkRJUiA9IEBCSU5ERElSQAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKQorIAorIGJpbl9QUk9HUkFNUyA9IG9tc2hlbGwKKy1saWJfTElCUkFSSUVTID0gbGliZGhjcGN0bC5hCisrbGliX0xUTElCUkFSSUVTID0gbGliZGhjcGN0bC5sYQorIG5vaW5zdF9QUk9HUkFNUyA9IGNsdGVzdAorIG1hbl9NQU5TID0gb21zaGVsbC4xIGRoY3BjdGwuMworIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQorIAorIG9tc2hlbGxfU09VUkNFUyA9IG9tc2hlbGwuYworLW9tc2hlbGxfTERBREQgPSBsaWJkaGNwY3RsLmEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCistCSAgICAgICAgJChCSU5ETElCRElSKS9saWJpcnMuYSAkKEJJTkRMSUJESVIpL2xpYmRucy5hIFwKKy0JICAgICAgICAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICQoQklORExJQkRJUikvbGliaXNjLmEKKytvbXNoZWxsX0xEQUREID0gbGliZGhjcGN0bC5sYSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCisrCSAgICAgICAgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCisgCistbGliZGhjcGN0bF9hX1NPVVJDRVMgPSBkaGNwY3RsLmMgY2FsbGJhY2suYyByZW1vdGUuYworK2xpYmRoY3BjdGxfbGFfU09VUkNFUyA9IGRoY3BjdGwuYyBjYWxsYmFjay5jIHJlbW90ZS5jCisgCisgY2x0ZXN0X1NPVVJDRVMgPSBjbHRlc3QuYworLWNsdGVzdF9MREFERCA9IGxpYmRoY3BjdGwuYSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKKy0JICAgICAgICQoQklORExJQkRJUikvbGliaXJzLmEgJChCSU5ETElCRElSKS9saWJkbnMuYSBcCistICAgICAgICAgICAgICAgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCisrY2x0ZXN0X0xEQUREID0gbGliZGhjcGN0bC5sYSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCisrCSAgICAgICAtTCQoQklORExJQkRJUikgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MKK2RpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KK2luZGV4IGU0YTg1OTkuLmMwYzdhMWUgMTAwNjQ0CistLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KKysrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQorQEAgLTEsMTAgKzEsMTAgQEAKKyBCSU5ETElCRElSID0gQEJJTkRESVJACisgQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKy1saWJfTElCUkFSSUVTID0gbGlib21hcGkuYQorK2xpYl9MVExJQlJBUklFUyA9IGxpYm9tYXBpLmxhCisgbm9pbnN0X1BST0dSQU1TID0gc3Z0ZXN0CisgCistbGlib21hcGlfYV9TT1VSQ0VTID0gcHJvdG9jb2wuYyBidWZmZXIuYyBhbGxvYy5jIHJlc3VsdC5jIGNvbm5lY3Rpb24uYyBcCisrbGlib21hcGlfbGFfU09VUkNFUyA9IHByb3RvY29sLmMgYnVmZmVyLmMgYWxsb2MuYyByZXN1bHQuYyBjb25uZWN0aW9uLmMgXAorIAkJICAgICBlcnJ3YXJuLmMgbGlzdGVuZXIuYyBkaXNwYXRjaC5jIGdlbmVyaWMuYyBzdXBwb3J0LmMgXAorIAkJICAgICBoYW5kbGUuYyBtZXNzYWdlLmMgY29udmVydC5jIGhhc2guYyBhdXRoLmMgaW5ldF9hZGRyLmMgXAorIAkJICAgICBhcnJheS5jIHRyYWNlLmMgdG9pc2MuYyBpc2NwcmludC5jIGlzY2xpYi5jCitAQCAtMTMsNiArMTMsNSBAQCBtYW5fTUFOUyA9IG9tYXBpLjMKKyBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKKyAKKyBzdnRlc3RfU09VUkNFUyA9IHRlc3QuYworLXN2dGVzdF9MREFERCA9IGxpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSAkKEJJTkRMSUJESVIpL2xpYmRucy5hIFwKKy0JCSQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQorK3N2dGVzdF9MREFERCA9IGxpYm9tYXBpLmxhIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYworIAorZGlmZiAtLWdpdCBhL3JlbGF5L01ha2VmaWxlLmFtIGIvcmVsYXkvTWFrZWZpbGUuYW0KK2luZGV4IGIzYmY1NzguLmY0NzAwOWYgMTAwNjQ0CistLS0gYS9yZWxheS9NYWtlZmlsZS5hbQorKysrIGIvcmVsYXkvTWFrZWZpbGUuYW0KK0BAIC00LDkgKzQsOCBAQCBBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQorIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCistZGhjcmVsYXlfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKKy0JCSAkKEJJTkRMSUJESVIpL2xpYmlycy5hICQoQklORExJQkRJUikvbGliZG5zLmEgXAorLQkJICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQorK2RoY3JlbGF5X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAorKwkJIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYworIG1hbl9NQU5TID0gZGhjcmVsYXkuOAorIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQorIAorZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5hbSBiL3NlcnZlci9NYWtlZmlsZS5hbQoraW5kZXggYjVkOGMyZC4uZDdmODc2ZCAxMDA2NDQKKy0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQorKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCitAQCAtMTUsMTAgKzE1LDkgQEAgZGhjcGRfU09VUkNFUyA9IGRoY3BkLmMgZGhjcC5jIGJvb3RwLmMgY29uZnBhcnMuYyBkYi5jIGNsYXNzLmMgZmFpbG92ZXIuYyBcCisgCQlkaGNwdjYuYyBtZGI2LmMgbGRhcC5jIGxkYXBfY2FzYS5jIGxlYXNlY2hhaW4uYyBsZGFwX2tyYl9oZWxwZXIuYworIAorIGRoY3BkX0NGTEFHUyA9ICQoTERBUF9DRkxBR1MpCistZGhjcGRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKKy0JICAgICAgLi4vZGhjcGN0bC9saWJkaGNwY3RsLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCistCSAgICAgICQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSBcCistCSAgICAgICQoQklORExJQkRJUikvbGliaXNjLmEgJChMREFQX0xJQlMpCisrZGhjcGRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCisrCSAgICAgIC4uL2RoY3BjdGwvbGliZGhjcGN0bC5sYSAtTCQoQklORExJQkRJUikgXAorKwkgICAgICAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYyAkKExEQVBfTElCUykKKyAKKyBtYW5fTUFOUyA9IGRoY3BkLjggZGhjcGQuY29uZi41IGRoY3BkLmxlYXNlcy41CisgRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCitkaWZmIC0tZ2l0IGEvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA5ODIxMDgxLi5kZTk1ODcyIDEwMDY0NAorLS0tIGEvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0xOSwxMCArMTksOSBAQCBESENQU1JDID0gLi4vZGhjcC5jIC4uL2Jvb3RwLmMgLi4vY29uZnBhcnMuYyAuLi9kYi5jIC4uL2NsYXNzLmMgICAgICBcCisgICAgICAgICAgIC4uL2RkbnMuYyAuLi9kaGNwbGVhc2VxdWVyeS5jIC4uL2RoY3B2Ni5jIC4uL21kYjYuYyAgICAgICAgXAorICAgICAgICAgICAuLi9sZGFwLmMgLi4vbGRhcF9jYXNhLmMgLi4vZGhjcGQuYyAuLi9sZWFzZWNoYWluLmMKKyAKKy1ESENQTElCUyA9ICQodG9wX2J1aWxkZGlyKS9jb21tb24vbGliZGhjcC5hICQodG9wX2J1aWxkZGlyKS9vbWFwaXAvbGlib21hcGkuYSBcCistICAgICAgICAgICQodG9wX2J1aWxkZGlyKS9kaGNwY3RsL2xpYmRoY3BjdGwuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKKy0JICAkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgXAorLQkgICQoQklORExJQkRJUikvbGliaXNjLmEKKytESENQTElCUyA9ICQodG9wX2J1aWxkZGlyKS9jb21tb24vbGliZGhjcC5hICQodG9wX2J1aWxkZGlyKS9vbWFwaXAvbGlib21hcGkubGEgXAorKyAgICAgICAgICAkKHRvcF9idWlsZGRpcikvZGhjcGN0bC9saWJkaGNwY3RsLmxhIFwKKysgICAgICAgICAgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCisgCisgQVRGX1RFU1RTID0KKyBpZiBIQVZFX0FURgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMS1Nb3ZlZC10aGUtY2FsbC10by1pc2NfYXBwX2N0eHN0YXJ0LXRvLW5vdC1nZXQtc2lnbmFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YmI0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMS1Nb3ZlZC10aGUtY2FsbC10by1pc2NfYXBwX2N0eHN0YXJ0LXRvLW5vdC1nZXQtc2lnbmFsLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gMzc3MjVmM2UyMmVkYjUwZTBjYTJkMWZmZjk3MTMyMWE1YTRkNTExMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMDM6MDU6MTMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xMV0gTW92ZWQgdGhlIGNhbGwgdG8gaXNjX2FwcF9jdHhzdGFydCgpIHRvIG5vdCBnZXQgc2lnbmFsCisgYmxvY2sgYnkgYWxsIHRocmVhZHMKKworU2lnbmVkLW9mZi1ieTogRnJhbmNpcyBEdXBvbnQgPGZkdXBvbnRAaXNjLm9yZz4KKworSW4gaHR0cHM6Ly9zb3VyY2UuaXNjLm9yZy9naXQvYmluZDkuZ2l0LCBzaW5jZSB0aGUgZm9sbG93aW5nCitjb21taXQgYXBwbGllZDoKKy4uLgorY29tbWl0IGI5OWJmYTE4NGJjOTM3NTQyMWI1ZGY5MTVlZWE3ZGZhYzZhNjhhOTkKK0F1dGhvcjogRXZhbiBIdW50IDxlYWNoQGlzYy5vcmc+CitEYXRlOiAgIFdlZCBBcHIgMTAgMTM6NDk6NTcgMjAxMyAtMDcwMAorCisgICAgW21hc3Rlcl0gdW5pZnkgaW50ZXJuYWwgYW5kIGV4cG9ydCBsaWJyYXJpZXMKKworICAgIDM1NTAuICAgICAgIFtmdW5jXSAgICAgICAgICBVbmlmaWVkIHRoZSBpbnRlcm5hbCBhbmQgZXhwb3J0IHZlcnNpb25zIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgQklORCBsaWJyYXJpZXMsIGFsbG93aW5nIGV4dGVybmFsIGNsaWVudHMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBsaWJyYXJpZXMgYXMgQklORC4gW1JUICMzMzEzMV0KKy4uLgorKGdpdCBzaG93IGI5OWJmYTE4NGJjOTM3NTQyMWI1ZGY5MTVlZWE3ZGZhYzZhNjhhOTkgLS0gLi9saWIvaXNjL3VuaXgvYXBwLmMpCisKK0luIHRoaXMgY29tbWl0LCBpZiBiaW5kOSBlbmFibGUgdGhyZWFkcyhJU0NfUExBVEZPUk1fVVNFVEhSRUFEUyksCitpdCBibG9ja3Mgc2lnbmFsIFNJR0hVUCwgU0lHSU5UIGFuZCBTSUdURVJNIGluIGlzY19fYXBwX2N0eHN0YXJ0LgorV2hpY2ggY2F1c2VkIGRoY2xpZW50L2RoY3BkIGNvdWxkIG5vdCBiZSBzdG9wcGVkIGJ5IFNJR1RFUk0uCisKK0l0IGNhdXNlZCBzeXN0ZW1kJ3MgcmVib290IGh1bmcgd2hpY2ggc2VuZCBTSUdURVJNIGJ5IGRlZmF1bHQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNlLmlzYy5vcmcvZ2l0L2RoY3AuZ2l0XQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgb21hcGlwL2lzY2xpYi5jIHwgMjUgKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL29tYXBpcC9pc2NsaWIuYyBiL29tYXBpcC9pc2NsaWIuYworaW5kZXggY2U4NjQ5MC4uNmEwNDM0NSAxMDA2NDQKKy0tLSBhL29tYXBpcC9pc2NsaWIuYworKysrIGIvb21hcGlwL2lzY2xpYi5jCitAQCAtMTg1LDE2ICsxODUsNiBAQCBkaGNwX2NvbnRleHRfY3JlYXRlKGludCBmbGFncywKKyAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKKyAJCQlnb3RvIGNsZWFudXA7CisgCistCQlyZXN1bHQgPSBpc2NfYXBwX2N0eHN0YXJ0KGRoY3BfZ2JsX2N0eC5hY3R4KTsKKy0JCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKKy0JCQlyZXR1cm4gKHJlc3VsdCk7CistCQlkaGNwX2dibF9jdHguYWN0eF9zdGFydGVkID0gSVNDX1RSVUU7CistCistCQkvKiBOb3QgYWxsIE9TcyBzdXBwb3J0IHN1cHByZXNzaW5nIFNJR1BJUEUgdGhyb3VnaCBzb2NrZXQKKy0JCSAqIG9wdGlvbnMsIHNvIHNldCB0aGUgc2lnYWwgYWN0aW9uIHRvIGJlIGlnbm9yZS4gIFRoaXMgYWxsb3dzCistCQkgKiBicm9rZW4gY29ubmVjdGlvbnMgdG8gZmFpbCBncmFjZWZ1bGx5IHdpdGggRVBJUEUgb24gd3JpdGVzICovCistCQloYW5kbGVfc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOworLQorIAkJcmVzdWx0ID0gaXNjX3Rhc2ttZ3JfY3JlYXRlaW5jdHgoZGhjcF9nYmxfY3R4Lm1jdHgsCisgCQkJCQkJIGRoY3BfZ2JsX2N0eC5hY3R4LAorIAkJCQkJCSAxLCAwLAorQEAgLTIxNyw2ICsyMDcsMjEgQEAgZGhjcF9jb250ZXh0X2NyZWF0ZShpbnQgZmxhZ3MsCisgCQlyZXN1bHQgPSBpc2NfdGFza19jcmVhdGUoZGhjcF9nYmxfY3R4LnRhc2ttZ3IsIDAsICZkaGNwX2dibF9jdHgudGFzayk7CisgCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCisgCQkJZ290byBjbGVhbnVwOworKworKwkJcmVzdWx0ID0gaXNjX2FwcF9jdHhzdGFydChkaGNwX2dibF9jdHguYWN0eCk7CisrCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCisrCQkJcmV0dXJuIChyZXN1bHQpOworKwkJZGhjcF9nYmxfY3R4LmFjdHhfc3RhcnRlZCA9IElTQ19UUlVFOworKworKwkJLyogTm90IGFsbCBPU3Mgc3VwcG9ydCBzdXBwcmVzc2luZyBTSUdQSVBFIHRocm91Z2ggc29ja2V0CisrCQkgKiBvcHRpb25zLCBzbyBzZXQgdGhlIHNpZ2FsIGFjdGlvbiB0byBiZSBpZ25vcmUuICBUaGlzIGFsbG93cworKwkJICogYnJva2VuIGNvbm5lY3Rpb25zIHRvIGZhaWwgZ3JhY2VmdWxseSB3aXRoIEVQSVBFIG9uIHdyaXRlcyAqLworKwkJaGFuZGxlX3NpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKKysKKysJCS8qIFJlc2V0IGhhbmRsZXJzIGluc3RhbGxlZCBieSBpc2NfYXBwX2N0eHN0YXJ0KCkKKysJCSAqIHRvIGRlZmF1bHQgZm9yIGNvbnRyb2wtYyBhbmQga2lsbCAqLworKwkJaGFuZGxlX3NpZ25hbChTSUdJTlQsIFNJR19ERkwpOworKwkJaGFuZGxlX3NpZ25hbChTSUdURVJNLCBTSUdfREZMKTsKKyAJfQorIAorICNpZiBkZWZpbmVkIChOU1VQREFURSkKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDNhZjlkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDUwMTU0M2IzZWY3MTU0ODhhMTQyZTNkMzAxZmYyNzMzYWEzM2VlYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KK0RhdGU6IFdlZCwgMjUgT2N0IDIwMTcgMjE6MDA6MDUgKzA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZGhjcDogY29ycmVjdCB0aGUgaW50ZW50aW9uIGZvciB4bWwyIGxpYiBzZWFyY2gKKworQSBtaXNzaW5nIGNhc2UgYnJlYWtzIHRoZSBidWlsZCB3aGVuIGxpYnhtbDIgaXMKK3JlcXVpcmVkIGFuZCBmb3VuZCBhcHByb3ByaWF0ZWx5LiBUaGUgdGhpcmQgYXJndW1lbnQKK3RvIHRoZSBmdW5jdGlvbiBBQ19TRUFSQ0hfTElCIGlzIGFjdGlvbi1pZi1mb3VuZCB3aGljaAord2FzIG1pc3Rha2VubHkgYmVlbiB1c2VkIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgbGlicmFyeQoraXMgbm90IGZvdW5kIGFuZCBoZW5jZSBicmVha3MgdGhlIGNvbmZpZ3VyZSBwaGFzZQord2hlcmUgaXQgc2hvdWQgYWN0dWFsbHkgcGFzcy4KK1dlIG5vdyBwYXNzIG9uIHNpbGVudGx5IHdoZW4gYWN0aW9uLWlmLWZvdW5kIGlzCitleGVjdXRlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiZmU5ODhhLi5mMDQ1OWU2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02MDgsNyArNjA4LDcgQEAgQUNfQVJHX1dJVEgobGlieG1sMiwKKyAJd2l0aF9saWJ4bWwyPSIkd2l0aHZhbCIsIHdpdGhfbGlieG1sMj0ibm8iKQorIAorIGlmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geG5vOyB0aGVuCistCUFDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwKKysJQUNfU0VBUkNIX0xJQlMoeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCwgW3htbDJdLCwKKyAJCVtpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhhdXRvOyB0aGVuCisgCQkJQUNfTVNHX0ZBSUxVUkUoWyoqKiBDYW5ub3QgZmluZCB4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50IHdpdGggLWx4bWwyIGFuZCBsaWJ4bWwyIHdhcyByZXF1ZXN0ZWRdKQorIAkJZmldKQorLS0gCisyLjExLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJiZGFmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWRlZmluZSBtYWNybyBfUEFUSF9ESENQRF9DT05GIGFuZCBfUEFUSF9ESENMSUVOVF9DT05GCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGluY2x1ZGVzL3NpdGUuaCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvc2l0ZS5oIGIvaW5jbHVkZXMvc2l0ZS5oCi1pbmRleCBkODdiMzA5Li4xN2JjNDBkIDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvc2l0ZS5oCi0rKysgYi9pbmNsdWRlcy9zaXRlLmgKLUBAIC0xMzksNyArMTM5LDggQEAKLSAvKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0aGUgZGhjcGQuY29uZiBmaWxlIHRvIGdvIHNvbWV3aGVyZSBvdGhlciB0aGFuCi0gICAgdGhlIGRlZmF1bHQgbG9jYXRpb24uICAgQnkgZGVmYXVsdCwgaXQgZ29lcyBpbiAvZXRjL2RoY3BkLmNvbmYuICovCi0gCi0tLyogI2RlZmluZSBfUEFUSF9ESENQRF9DT05GCSIvZXRjL2RoY3BkLmNvbmYiICovCi0rI2RlZmluZSBfUEFUSF9ESENQRF9DT05GCSIvZXRjL2RoY3AvZGhjcGQuY29uZiIKLSsjZGVmaW5lIF9QQVRIX0RIQ0xJRU5UX0NPTkYJIi9ldGMvZGhjcC9kaGNsaWVudC5jb25mIgotIAotIC8qIE5ldHdvcmsgQVBJIGRlZmluaXRpb25zLiAgIFlvdSBkbyBub3QgbmVlZCB0byBjaG9vc2Ugb25lIG9mIHRoZXNlIC0gaWYKLSAgICB5b3UgZG9uJ3QgY2hvb3NlLCBvbmUgd2lsbCBiZSBjaG9zZW4gZm9yIHlvdSBpbiB5b3VyIHN5c3RlbSdzIGNvbmZpZwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjbGllbnQtc2NyaXB0LWRyb3AtcmVzb2x2LmNvbmYuZGhjbGllbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjbGllbnQtc2NyaXB0LWRyb3AtcmVzb2x2LmNvbmYuZGhjbGllbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MDk1YTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY2xpZW50LXNjcmlwdC1kcm9wLXJlc29sdi5jb25mLmRoY2xpZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotZGhjcC1jbGllbnQ6IGZpeCBpbnZva2UgZGhjbGllbnQtc2NyaXB0IGZhaWxlZCBvbiBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0KLQotSW4gcmVhZC1vbmx5IGZpbGUgc3lzdGVtLCAnL2V0YycgaXMgb24gdGhlIHJlYWRvbmx5IHBhcnRpdGlvbiwKLWFuZCAnL2V0Yy9yZXNvbHYuY29uZicgaXMgc3ltbGlua2VkIHRvIGEgc2VwYXJhdGUgd3JpdGFibGUKLXBhcnRpdGlvbi4KLQotSW4gdGhpcyBzaXR1YXRpb24sIHdlIHNob3VsZCB1c2Ugc2hlbGwgdmFyaWFibGUgdG8gaW5zdGVhZCBvZgotdGVtcCBmaWxlcyAnL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudCcgYW5kICcvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NicuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2xpZW50L3NjcmlwdHMvbGludXggfCAyMCArKysrKysrKystLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAotLS0tIGEvY2xpZW50L3NjcmlwdHMvbGludXgKLSsrKyBiL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci1AQCAtMjcsMjcgKzI3LDI1IEBAIGlwPS9zYmluL2lwCi0gCi0gbWFrZV9yZXNvbHZfY29uZigpIHsKLSAgIGlmIFsgeCIkbmV3X2RvbWFpbl9uYW1lX3NlcnZlcnMiICE9IHggXTsgdGhlbgotLSAgICBjYXQgL2Rldi9udWxsID4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotLSAgICBjaG1vZCA2NDQgL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotKyAgICByZXNvbHZfY29uZj0iIgotICAgICBpZiBbIHgiJG5ld19kb21haW5fc2VhcmNoIiAhPSB4IF07IHRoZW4KLS0gICAgICBlY2hvIHNlYXJjaCAkbmV3X2RvbWFpbl9zZWFyY2ggPj4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotKyAgICAgIHJlc29sdl9jb25mPSJzZWFyY2ggJHtuZXdfZG9tYWluX3NlYXJjaH1cbiIKLSAgICAgZWxpZiBbIHgiJG5ld19kb21haW5fbmFtZSIgIT0geCBdOyB0aGVuCi0gICAgICAgIyBOb3RlIHRoYXQgdGhlIERIQ1AgJ0RvbWFpbiBOYW1lIE9wdGlvbicgaXMgcmVhbGx5IGp1c3QgYSBkb21haW4KLSAgICAgICAjIG5hbWUsIGFuZCB0aGF0IHRoaXMgcHJhY3RpY2Ugb2YgdXNpbmcgdGhlIGRvbWFpbiBuYW1lIG9wdGlvbiBhcwotICAgICAgICMgYSBzZWFyY2ggcGF0aCBpcyBib3RoIG5vbnN0YW5kYXJkIGFuZCBkZXByZWNhdGVkLgotLSAgICAgIGVjaG8gc2VhcmNoICRuZXdfZG9tYWluX25hbWUgPj4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotKyAgICAgIHJlc29sdl9jb25mPSJzZWFyY2ggJHtuZXdfZG9tYWluX25hbWV9XG4iCi0gICAgIGZpCi0gICAgIGZvciBuYW1lc2VydmVyIGluICRuZXdfZG9tYWluX25hbWVfc2VydmVyczsgZG8KLS0gICAgICBlY2hvIG5hbWVzZXJ2ZXIgJG5hbWVzZXJ2ZXIgPj4vZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50Ci0rICAgICAgcmVzb2x2X2NvbmY9IiR7cmVzb2x2X2NvbmZ9bmFtZXNlcnZlciAke25hbWVzZXJ2ZXJ9XG4iCi0gICAgIGRvbmUKLSAKLS0gICAgbXYgL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudCAvZXRjL3Jlc29sdi5jb25mCi0rICAgIGVjaG8gLWUgIiR7cmVzb2x2X2NvbmZ9IiA+IC9ldGMvcmVzb2x2LmNvbmYKLSAgIGVsaWYgWyAieCR7bmV3X2RoY3A2X25hbWVfc2VydmVyc30iICE9IHggXSA7IHRoZW4KLS0gICAgY2F0IC9kZXYvbnVsbCA+IC9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQ2Ci0tICAgIGNobW9kIDY0NCAvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NgotKyAgICByZXNvbHZfY29uZj0iIgotIAotICAgICBpZiBbICJ4JHtuZXdfZGhjcDZfZG9tYWluX3NlYXJjaH0iICE9IHggXSA7IHRoZW4KLS0gICAgICBlY2hvIHNlYXJjaCAke25ld19kaGNwNl9kb21haW5fc2VhcmNofSA+PiAvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NgotKyAgICAgIHJlc29sdl9jb25mPSJzZWFyY2ggJHtuZXdfZGhjcDZfZG9tYWluX3NlYXJjaH1cbiIKLSAgICAgZmkKLSAgICAgc2hvcHQgLXMgbm9jYXNlbWF0Y2ggCi0gICAgIGZvciBuYW1lc2VydmVyIGluICR7bmV3X2RoY3A2X25hbWVfc2VydmVyc30gOyBkbwotQEAgLTU5LDExICs1NywxMSBAQCBtYWtlX3Jlc29sdl9jb25mKCkgewotICAgICAgIGVsc2UKLSAJem9uZV9pZD0KLSAgICAgICBmaQotLSAgICAgIGVjaG8gbmFtZXNlcnZlciAke25hbWVzZXJ2ZXJ9JHpvbmVfaWQgPj4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudDYKLSsgICAgICByZXNvbHZfY29uZj0iJHtyZXNvbHZfY29uZn1uYW1lc2VydmVyICR7bmFtZXNlcnZlcn0kem9uZV9pZFxuIgotICAgICBkb25lCi0gICAgIHNob3B0IC11IG5vY2FzZW1hdGNoIAotIAotLSAgICBtdiAvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NiAvZXRjL3Jlc29sdi5jb25mCi0rICAgIGVjaG8gLWUgIiR7cmVzb2x2X2NvbmZ9IiA+IC9ldGMvcmVzb2x2LmNvbmYKLSAgIGZpCi0gfQotIAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjcC0zLjAuMy1kaGNsaWVudC1kYnVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY3AtMy4wLjMtZGhjbGllbnQtZGJ1cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRhNjY2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjcC0zLjAuMy1kaGNsaWVudC1kYnVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCi0KLS0tLSBjbGllbnQvc2NyaXB0cy9ic2RvcwotKysrIGNsaWVudC9zY3JpcHRzL2JzZG9zCi1AQCAtNDcsNiArNDcsMTEgQEAKLSAgICAgLiAvZXRjL2RoY3AvZGhjbGllbnQtZXhpdC1ob29rcwotICAgZmkKLSAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0Ci0rICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgotKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCi0rICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKLSsgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKLSsgIGZpCi0gICBleGl0ICRleGl0X3N0YXR1cwotIH0KLSAKLS0tLSBjbGllbnQvc2NyaXB0cy9mcmVlYnNkCi0rKysgY2xpZW50L3NjcmlwdHMvZnJlZWJzZAotQEAgLTU3LDYgKzU3LDExIEBACi0gICAgIC4gL2V0Yy9kaGNwL2RoY2xpZW50LWV4aXQtaG9va3MKLSAgIGZpCi0gIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAotKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KLSsgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAotKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCi0rICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCi0rICBmaQotICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0tLS0gY2xpZW50L3NjcmlwdHMvbGludXgKLSsrKyBjbGllbnQvc2NyaXB0cy9saW51eAotQEAgLTY5LDYgKzY5LDExIEBACi0gICAgIC4gL2V0Yy9kaGNwL2RoY2xpZW50LWV4aXQtaG9va3MKLSAgIGZpCi0gIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAotKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KLSsgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAotKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCi0rICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCi0rICBmaQotICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0tLS0gY2xpZW50L3NjcmlwdHMvbmV0YnNkCi0rKysgY2xpZW50L3NjcmlwdHMvbmV0YnNkCi1AQCAtNDcsNiArNDcsMTEgQEAKLSAgICAgLiAvZXRjL2RoY3AvZGhjbGllbnQtZXhpdC1ob29rcwotICAgZmkKLSAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0Ci0rICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgotKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCi0rICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKLSsgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKLSsgIGZpCi0gICBleGl0ICRleGl0X3N0YXR1cwotIH0KLSAKLS0tLSBjbGllbnQvc2NyaXB0cy9vcGVuYnNkCi0rKysgY2xpZW50L3NjcmlwdHMvb3BlbmJzZAotQEAgLTQ3LDYgKzQ3LDExIEBACi0gICAgIC4gL2V0Yy9kaGNwL2RoY2xpZW50LWV4aXQtaG9va3MKLSAgIGZpCi0gIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAotKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KLSsgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAotKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCi0rICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCi0rICBmaQotICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0tLS0gY2xpZW50L3NjcmlwdHMvc29sYXJpcwotKysrIGNsaWVudC9zY3JpcHRzL3NvbGFyaXMKLUBAIC00Nyw2ICs0NywxMSBAQAotICAgICAuIC9ldGMvZGhjcC9kaGNsaWVudC1leGl0LWhvb2tzCi0gICBmaQotICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKLSsgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCi0rICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKLSsgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAotKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgotKyAgZmkKLSAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gfQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2ZpeHNlcGJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2ZpeHNlcGJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjQ0MTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9maXhzZXBidWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLUZpeCBvdXQgb2YgdHJlZSBidWlsZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVJQIDIwMTMvMDMvMjEKLQotUmViYXNlIHRvIDQuMy40Ci0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNsaWVudC9NYWtlZmlsZS5hbSAgfCA0ICsrLS0KLSBjb21tb24vTWFrZWZpbGUuYW0gIHwgMyArKy0KLSBkaGNwY3RsL01ha2VmaWxlLmFtIHwgMiArKwotIG9tYXBpcC9NYWtlZmlsZS5hbSAgfCAxICsKLSByZWxheS9NYWtlZmlsZS5hbSAgIHwgMiArLQotIHNlcnZlci9NYWtlZmlsZS5hbSAgfCAyICstCi0gNiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KLWluZGV4IDJjYjgzZDguLjQ3MzBiYjMgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KLSsrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQotQEAgLTcsMTEgKzcsMTEgQEAgU1VCRElSUyA9IC4gdGVzdHMKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotIAotIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKLS0JICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInCi0rCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLSBkaXN0X3N5c2NvbmZfREFUQSA9IGRoY2xpZW50LmNvbmYuZXhhbXBsZQotIHNiaW5fUFJPR1JBTVMgPSBkaGNsaWVudAotLWRoY2xpZW50X1NPVVJDRVMgPSBjbHBhcnNlLmMgZGhjbGllbnQuYyBkaGM2LmMgXAotK2RoY2xpZW50X1NPVVJDRVMgPSAkKHNyY2RpcikvY2xwYXJzZS5jICQoc3JjZGlyKS9kaGNsaWVudC5jICQoc3JjZGlyKS9kaGM2LmMgXAotIAkJICAgc2NyaXB0cy9ic2RvcyBzY3JpcHRzL2ZyZWVic2Qgc2NyaXB0cy9saW51eCBzY3JpcHRzL21hY29zIFwKLSAJCSAgIHNjcmlwdHMvbmV0YnNkIHNjcmlwdHMvbmV4dHN0ZXAgc2NyaXB0cy9vcGVuYnNkIFwKLSAJCSAgIHNjcmlwdHMvc29sYXJpcyBzY3JpcHRzL29wZW53cnQKLWRpZmYgLS1naXQgYS9jb21tb24vTWFrZWZpbGUuYW0gYi9jb21tb24vTWFrZWZpbGUuYW0KLWluZGV4IDExM2FlZTguLjBmMjRmYmIgMTAwNjQ0Ci0tLS0gYS9jb21tb24vTWFrZWZpbGUuYW0KLSsrKyBiL2NvbW1vbi9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw1IEBACi0tQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKLStBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKLSsKLSBBTV9DRkxBR1MgPSAkKExEQVBfQ0ZMQUdTKQotIAotIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJkaGNwLmEKLWRpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQotaW5kZXggY2ViMGRlMS4uYmE4ZGQ4YiAxMDA2NDQKLS0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KLSsrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KLUBAIC0xLDUgKzEsNyBAQAotIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0gCi0rQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpCi0rCi0gYmluX1BST0dSQU1TID0gb21zaGVsbAotIGxpYl9MSUJSQVJJRVMgPSBsaWJkaGNwY3RsLmEKLSBub2luc3RfUFJPR1JBTVMgPSBjbHRlc3QKLWRpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KLWluZGV4IDQ0NmE1OTQuLmRkMWFmYTAgMTAwNjQ0Ci0tLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KLSsrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw1IEBACi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCi0gbm9pbnN0X1BST0dSQU1TID0gc3Z0ZXN0Ci1kaWZmIC0tZ2l0IGEvcmVsYXkvTWFrZWZpbGUuYW0gYi9yZWxheS9NYWtlZmlsZS5hbQotaW5kZXggMzA2MGVjYS4uNmQ2NTJmNiAxMDA2NDQKLS0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCi0rKysgYi9yZWxheS9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw2IEBACi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLSAKLS1BTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCi0rQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLSBzYmluX1BST0dSQU1TID0gZGhjcmVsYXkKLSBkaGNyZWxheV9TT1VSQ0VTID0gZGhjcmVsYXkuYwotZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5hbSBiL3NlcnZlci9NYWtlZmlsZS5hbQotaW5kZXggNTRmZWVkZi4uMzk5MGI5YyAxMDA2NDQKLS0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQotKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCi1AQCAtNiw3ICs2LDcgQEAgU1VCRElSUyA9IC4gdGVzdHMKLSAKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotIAotLUFNX0NQUEZMQUdTID0gLUkuLiAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJwotK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotIGRpc3Rfc3lzY29uZl9EQVRBID0gZGhjcGQuY29uZi5leGFtcGxlCi0gc2Jpbl9QUk9HUkFNUyA9IGRoY3BkCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saWJ4bWwyLWNvbmZpZ3VyZS1hcmd1bWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saWJ4bWwyLWNvbmZpZ3VyZS1hcmd1bWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQzNTY2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvbGlieG1sMi1jb25maWd1cmUtYXJndW1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1BZGQgY29uZmlndXJlIGFyZ3VtZW50IHRvIG1ha2UgdGhlIGxpYnhtbDIgZGVwZW5kZW5jeSBleHBsaWNpdCBhbmQKLWRldGVybWluaXNpdGljLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLQotUmViYXNlIHRvIDQuMy40Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDcyNmM4OGUuLjE2ODRkZjEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTcxOCw3ICs3MTgsMTYgQEAgQUNfU1VCU1QoQklORFNSQ0RJUikKLSAKLSAjIFdlIG5lZWQgdG8gZmluZCBsaWJ4bWwyIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBlbmFibGVkCi0gIyBvdGhlcndpc2Ugd2UnbGwgZmFpbCB0byBidWlsZCBvbWFwaXAvdGVzdC5jCi0tQUNfU0VBUkNIX0xJQlMoeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCwgW3htbDJdLCkKLStBQ19BUkdfV0lUSChsaWJ4bWwyLAotKwlBU19IRUxQX1NUUklORyhbLS13aXRoLWxpYnhtbDJdLCBbbGluayBhZ2FpbnN0IGxpYnhtbDIuIHRoaXMgaXMgbmVlZGVkIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggeG1sMiBzdXBwb3J0IGVuYWJsZWRdKSwKLSsJd2l0aF9saWJ4bWwyPSIkd2l0aHZhbCIsIHdpdGhfbGlieG1sMj0ibm8iKQotKwotK2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geG5vOyB0aGVuCi0rICAgIEFDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwKLSsgICAgICAgICAgICAgICAgICAgW2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geGF1dG87IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfRkFJTFVSRShbKioqIENhbm5vdCBmaW5kIHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQgd2l0aCAtbHhtbDIgYW5kIGxpYnhtbDIgd2FzIHJlcXVlc3RlZF0pCi0rICAgICAgICAgICAgICAgICAgICBmaV0pCi0rZmkKLSAKLSAjIE9wZW5MREFQIHN1cHBvcnQuCi0gQUNfQVJHX1dJVEgobGRhcCwKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2xpbmstd2l0aC1sY3J5cHRvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2xpbmstd2l0aC1sY3J5cHRvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDBlMGRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saW5rLXdpdGgtbGNyeXB0by5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUF1dGhvcjogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgotRGF0ZTogICBUaHUgRmViIDIgMjM6NTk6MTEgMjAxMiArMDIwMAotCi1Gcm9tIDQuMi4wIGZpbmFsIHJlbGVhc2UsIC1sY3J5cHRvIGNoZWNrIHdhcyByZW1vdmVkIGFuZCB3ZSBjb21waWxlIHN0YXRpYyBsaWJyYXJpZXMKLWZyb20gYmluZCB0aGF0IGFyZSBsaW5rZWQgdG8gbGliY3J5cHRvLiBUaGlzIGlzIHdoeSBpIGFkZGVkIGEgcGF0Y2ggaW4gb3JkZXIgdG8gYWRkCi0tbGNyeXB0byB0byBMSUJTLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLQotUmViYXNlIHRvIDQuMy40Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDA5N2IwYzMuLjcyNmM4OGUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTU4NCw2ICs1ODQsMTAgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW3ZvaWQgZm9vKCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKLSAjIExvb2sgZm9yIG9wdGlvbmFsIGhlYWRlcnMuCi0gQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc29ja2V0LmggbmV0L2lmX2RsLmggbmV0L2lmNi5oIHJlZ2V4LmgpCi0gCi0rIyBmaW5kIGFuIE1ENSBsaWJyYXJ5Ci0rQUNfU0VBUkNIX0xJQlMoTUQ1X0luaXQsIFtjcnlwdG9dKQotK0FDX1NFQVJDSF9MSUJTKE1ENUluaXQsIFtjcnlwdG9dKQotKwotICMgU29sYXJpcyBuZWVkcyBzb21lIGxpYnJhcmllcyBmb3IgZnVuY3Rpb25zCi0gQUNfU0VBUkNIX0xJQlMoc29ja2V0LCBbc29ja2V0XSkKLSBBQ19TRUFSQ0hfTElCUyhpbmV0X250b2EsIFtuc2xdKQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5N2I5ZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3JlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSA4YWVkMmE5ZmYwOWNiMGQ1ODRhZDBhNzM0MGZlM2E1OTY4NzlkOWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjEgSnVsIDIwMTYgMTk6MDc6MDIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIGRoY2xpZW50LXNjcmlwdCBiYXNoIGRlcGVuZGVuY3kKLQotVGFrZSB0aGUgZGFzaCBjb21wYXRpYmxlIElQdjYgbGluay1sb2NhbCBhZGRyZXNzIHRlc3QgZnJvbSB0aGUgRGViaWFuCi12ZXJzaW9uIG9mIGRoY2xpZW50LXNjcmlwdC4KLQotTm90ZSB0aGF0IGFsdGhvdWdoICJlY2hvIC1lIiBpbiB0aGUgT0UgdmVyc2lvbiBvZiBkaGNsaWVudC1zY3JpcHQgaXMKLXRlY2huaWNhbGx5IGJhc2ggc3BlY2lmaWMgdG9vLCBpdCBpcyBzdXBwb3J0ZWQgYnkgQnVzeWJveCBlY2hvIHdoZW4KLUJ1c3lib3ggaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19GRUFUVVJFX0ZBTkNZX0VDSE8gZW5hYmxlZCAod2hpY2gKLWlzIHRoZSBkZWZhdWx0IGluIHRoZSBPRSBCdXN5Ym94IGRlZmNvbmZpZykgdGhlcmVmb3JlIGxlYXZlIGFzLWlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gY2xpZW50L3NjcmlwdHMvbGludXggfCA3ICsrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAotaW5kZXggMjMyYTBhYS4uMTM4M2Y0NiAxMDA3NTUKLS0tLSBhL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci0rKysgYi9jbGllbnQvc2NyaXB0cy9saW51eAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjIGRoY2xpZW50LXNjcmlwdCBmb3IgTGludXguIERhbiBIYWxiZXJ0LCBNYXJjaCwgMTk5Ny4KLSAjIFVwZGF0ZWQgZm9yIExpbnV4IDIuWzEyXSBieSBCcmlhbiBKLiBNdXJyZWxsLCBKYW51YXJ5IDE5OTkuCi0gIyBObyBndWFyYW50ZWVzIGFib3V0IHRoaXMuIEknbSBhIG5vdmljZSBhdCB0aGUgZGV0YWlscyBvZiBMaW51eAotQEAgLTQ3LDExICs0NywxMSBAQCBtYWtlX3Jlc29sdl9jb25mKCkgewotICAgICBpZiBbICJ4JHtuZXdfZGhjcDZfZG9tYWluX3NlYXJjaH0iICE9IHggXSA7IHRoZW4KLSAgICAgICByZXNvbHZfY29uZj0ic2VhcmNoICR7bmV3X2RoY3A2X2RvbWFpbl9zZWFyY2h9XG4iCi0gICAgIGZpCi0tICAgIHNob3B0IC1zIG5vY2FzZW1hdGNoIAotICAgICBmb3IgbmFtZXNlcnZlciBpbiAke25ld19kaGNwNl9uYW1lX3NlcnZlcnN9IDsgZG8KLSAgICAgICAjIElmIHRoZSBuYW1lc2VydmVyIGhhcyBhIGxpbmstbG9jYWwgYWRkcmVzcwotICAgICAgICMgYWRkIGEgPHpvbmVfaWQ+IChpbnRlcmZhY2UgbmFtZSkgdG8gaXQuCi0tICAgICAgaWYgIFtbICIkbmFtZXNlcnZlciIgPX4gXmZlODA6OiBdXQotKyAgICAgIGlmIFsgIiR7bmFtZXNlcnZlciMjZmU4MDo6fSIgIT0gIiRuYW1lc2VydmVyIiBdIHx8Ci0rICAgICAgICAgWyAiJHtuYW1lc2VydmVyIyNGRTgwOjp9IiAhPSAiJG5hbWVzZXJ2ZXIiIF0KLSAgICAgICB0aGVuCi0gCXpvbmVfaWQ9IiUkaW50ZXJmYWNlIgotICAgICAgIGVsc2UKLUBAIC01OSw3ICs1OSw2IEBAIG1ha2VfcmVzb2x2X2NvbmYoKSB7Ci0gICAgICAgZmkKLSAgICAgICByZXNvbHZfY29uZj0iJHtyZXNvbHZfY29uZn1uYW1lc2VydmVyICR7bmFtZXNlcnZlcn0kem9uZV9pZFxuIgotICAgICBkb25lCi0tICAgIHNob3B0IC11IG5vY2FzZW1hdGNoIAotIAotICAgICBlY2hvIC1lICIke3Jlc29sdl9jb25mfSIgPiAvZXRjL3Jlc29sdi5jb25mCi0gICBmaQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVwbGFjZS1pZmNvbmZpZy1yb3V0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODRkZjVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLUZvdW5kIHRoaXMgcGF0Y2ggaGVyZToKLWh0dHBzOi8vbGlzdHMuaXNjLm9yZy9waXBlcm1haWwvZGhjcC11c2Vycy8yMDExLUphbnVhcnkvMDEyOTEwLmh0bWwKLQotYW5kIG1hZGUgc29tZSBhZGp1c3RtZW50cy91cGRhdGVzIHRvIG1ha2UgaXQgd29yayB3aXRoIHRoaXMgdmVyc2lvbi4KLVdhc24ndCBhYmxlIHRvIGZpbmQgdGhhdCB3aHkgdGhpcyBwYXRjaCB3YXMgbm90IGFjY2VwdGVkIGJ5IElTQyBESENQIGRldmVsb3BlcnMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNdWhhbW1hZCBTaGFrZWVsIDxtdWhhbW1hZF9zaGFrZWVsQG1lbnRvci5jb20+Ci0KLVJlYmFzZSB0byA0LjMuNAotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjbGllbnQvc2NyaXB0cy9saW51eCB8IDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9saW51eCBiL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci1pbmRleCBhMDJjZmQ5Li4yMzJhMGFhIDEwMDc1NQotLS0tIGEvY2xpZW50L3NjcmlwdHMvbGludXgKLSsrKyBiL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci1AQCAtMTAxLDE3ICsxMDEsMTEgQEAgZmkKLSBpZiBbIHgkb2xkX2Jyb2FkY2FzdF9hZGRyZXNzICE9IHggXTsgdGhlbgotICAgb2xkX2Jyb2FkY2FzdF9hcmc9ImJyb2FkY2FzdCAkb2xkX2Jyb2FkY2FzdF9hZGRyZXNzIgotIGZpCi0taWYgWyB4JG5ld19zdWJuZXRfbWFzayAhPSB4IF07IHRoZW4KLS0gIG5ld19zdWJuZXRfYXJnPSJuZXRtYXNrICRuZXdfc3VibmV0X21hc2siCi0raWYgWyAtbiAiJG5ld19zdWJuZXRfbWFzayIgXTsgdGhlbgotKyAgICBuZXdfbWFzaz0iLyRuZXdfc3VibmV0X21hc2siCi0gZmkKLS1pZiBbIHgkb2xkX3N1Ym5ldF9tYXNrICE9IHggXTsgdGhlbgotLSAgb2xkX3N1Ym5ldF9hcmc9Im5ldG1hc2sgJG9sZF9zdWJuZXRfbWFzayIKLS1maQotLWlmIFsgeCRhbGlhc19zdWJuZXRfbWFzayAhPSB4IF07IHRoZW4KLS0gIGFsaWFzX3N1Ym5ldF9hcmc9Im5ldG1hc2sgJGFsaWFzX3N1Ym5ldF9tYXNrIgotLWZpCi0taWYgWyB4JG5ld19pbnRlcmZhY2VfbXR1ICE9IHggXTsgdGhlbgotLSAgbXR1X2FyZz0ibXR1ICRuZXdfaW50ZXJmYWNlX210dSIKLStpZiBbIC1uICIkYWxpYXNfc3VibmV0X21hc2siIF07IHRoZW4KLSsgICAgYWxpYXNfbWFzaz0iLyRhbGlhc19zdWJuZXRfbWFzayIKLSBmaQotIGlmIFsgeCRJRl9NRVRSSUMgIT0geCBdOyB0aGVuCi0gICBtZXRyaWNfYXJnPSJtZXRyaWMgJElGX01FVFJJQyIKLUBAIC0xMjUsOSArMTE5LDkgQEAgZmkKLSBpZiBbIHgkcmVhc29uID0geFBSRUlOSVQgXTsgdGhlbgotICAgaWYgWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCi0gICAgICMgQnJpbmcgZG93biBhbGlhcyBpbnRlcmZhY2UuIEl0cyByb3V0ZXMgd2lsbCBkaXNhcHBlYXIgdG9vLgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAtIGluZXQgMAotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSAgIGZpCi0tICBpZmNvbmZpZyAkaW50ZXJmYWNlIDAgdXAKLSsgICR7aXB9IGxpbmsgc2V0IGRldiAke2ludGVyZmFjZX0gdXAKLSAKLSAgICMgV2UgbmVlZCB0byBnaXZlIHRoZSBrZXJuZWwgc29tZSB0aW1lIHRvIGdldCB0aGUgaW50ZXJmYWNlIHVwLgotICAgc2xlZXAgMQotQEAgLTE1NCwyNSArMTQ4LDMwIEBAIGlmIFsgeCRyZWFzb24gPSB4Qk9VTkQgXSB8fCBbIHgkcmVhc29uID0geFJFTkVXIF0gfHwgXAotICAgaWYgWyB4JG9sZF9pcF9hZGRyZXNzICE9IHggXSAmJiBbIHgkYWxpYXNfaXBfYWRkcmVzcyAhPSB4IF0gJiYgXAotIAkJWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCRvbGRfaXBfYWRkcmVzcyBdOyB0aGVuCi0gICAgICMgUG9zc2libGUgbmV3IGFsaWFzLiBSZW1vdmUgb2xkIGFsaWFzLgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAtIGluZXQgMAotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSAgIGZpCi0gICBpZiBbIHgkb2xkX2lwX2FkZHJlc3MgIT0geCBdICYmIFsgeCRvbGRfaXBfYWRkcmVzcyAhPSB4JG5ld19pcF9hZGRyZXNzIF07IHRoZW4KLSAgICAgIyBJUCBhZGRyZXNzIGNoYW5nZWQuIEJyaW5naW5nIGRvd24gdGhlIGludGVyZmFjZSB3aWxsIGRlbGV0ZSBhbGwgcm91dGVzLAotICAgICAjIGFuZCBjbGVhciB0aGUgQVJQIGNhY2hlLgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlIGluZXQgMCBkb3duCi0rICAgICR7aXB9IC00IGFkZHIgZmx1c2ggZGV2ICR7aW50ZXJmYWNlfSBsYWJlbCAke2ludGVyZmFjZX0KLSAKLSAgIGZpCi0gICBpZiBbIHgkb2xkX2lwX2FkZHJlc3MgPSB4IF0gfHwgWyB4JG9sZF9pcF9hZGRyZXNzICE9IHgkbmV3X2lwX2FkZHJlc3MgXSB8fCBcCi0gICAgICBbIHgkcmVhc29uID0geEJPVU5EIF0gfHwgWyB4JHJlYXNvbiA9IHhSRUJPT1QgXTsgdGhlbgotIAotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlIGluZXQgJG5ld19pcF9hZGRyZXNzICRuZXdfc3VibmV0X2FyZyBcCi0tCQkJCQkkbmV3X2Jyb2FkY2FzdF9hcmcgJG10dV9hcmcKLSsgICAgJHtpcH0gLTQgYWRkciBhZGQgJHtuZXdfaXBfYWRkcmVzc30ke25ld19tYXNrfSAke25ld19icm9hZGNhc3RfYXJnfSBcCi0rICAgICAgICAgICAgICAgIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9Ci0rICAgIGlmIFsgLW4gIiRuZXdfaW50ZXJmYWNlX210dSIgXTsgdGhlbgotKyAgICAgICMgc2V0IE1UVQotKyAgICAgICR7aXB9IGxpbmsgc2V0IGRldiAke2ludGVyZmFjZX0gbXR1ICR7bmV3X2ludGVyZmFjZV9tdHV9Ci0rICAgIGZpCi0gICAgICMgQWRkIGEgbmV0d29yayByb3V0ZSB0byB0aGUgY29tcHV0ZWQgbmV0d29yayBhZGRyZXNzLgotICAgICBmb3Igcm91dGVyIGluICRuZXdfcm91dGVyczsgZG8KLSAgICAgICBpZiBbICJ4JG5ld19zdWJuZXRfbWFzayIgPSAieDI1NS4yNTUuMjU1LjI1NSIgXSA7IHRoZW4KLS0Jcm91dGUgYWRkIC1ob3N0ICRyb3V0ZXIgZGV2ICRpbnRlcmZhY2UKLSsgICAgICAgICR7aXB9IC00IHJvdXRlIGFkZCAke3JvdXRlcn0gZGV2ICRpbnRlcmZhY2UgPi9kZXYvbnVsbCAyPiYxCi0gICAgICAgZmkKLS0gICAgICByb3V0ZSBhZGQgZGVmYXVsdCBndyAkcm91dGVyICRtZXRyaWNfYXJnIGRldiAkaW50ZXJmYWNlCi0rICAgICAgJHtpcH0gLTQgcm91dGUgYWRkIGRlZmF1bHQgdmlhICR7cm91dGVyfSBkZXYgJHtpbnRlcmZhY2V9IFwKLSsgICAgICAgICR7bWV0cmljX2FyZ30gPi9kZXYvbnVsbCAyPiYxCi0gICAgIGRvbmUKLSAgIGVsc2UKLSAgICAgIyB3ZSBoYXZlbid0IGNoYW5nZWQgdGhlIGFkZHJlc3MsIGhhdmUgd2UgY2hhbmdlZCBvdGhlciBvcHRpb25zICAgICAgICAgICAKLUBAIC0xODAsMjEgKzE3OSwyMyBAQCBpZiBbIHgkcmVhc29uID0geEJPVU5EIF0gfHwgWyB4JHJlYXNvbiA9IHhSRU5FVyBdIHx8IFwKLSAgICAgaWYgWyB4JG5ld19yb3V0ZXJzICE9IHggXSAmJiBbIHgkbmV3X3JvdXRlcnMgIT0geCRvbGRfcm91dGVycyBdIDsgdGhlbgotICAgICAgICMgaWYgd2UndmUgY2hhbmdlZCByb3V0ZXJzIGRlbGV0ZSB0aGUgb2xkIGFuZCBhZGQgdGhlIG5ldy4KLSAgICAgICBmb3Igcm91dGVyIGluICRvbGRfcm91dGVyczsgZG8KLS0gICAgICAgIHJvdXRlIGRlbCBkZWZhdWx0IGd3ICRyb3V0ZXIKLSsgICAgICAgICR7aXB9IC00IHJvdXRlIGRlbGV0ZSBkZWZhdWx0IHZpYSAke3JvdXRlcn0KLSAgICAgICBkb25lCi0gICAgICAgZm9yIHJvdXRlciBpbiAkbmV3X3JvdXRlcnM7IGRvCi0gICAgICAgICBpZiBbICJ4JG5ld19zdWJuZXRfbWFzayIgPSAieDI1NS4yNTUuMjU1LjI1NSIgXSA7IHRoZW4KLS0JICByb3V0ZSBhZGQgLWhvc3QgJHJvdXRlciBkZXYgJGludGVyZmFjZQotLQlmaQotLQlyb3V0ZSBhZGQgZGVmYXVsdCBndyAkcm91dGVyICRtZXRyaWNfYXJnIGRldiAkaW50ZXJmYWNlCi0rCSAgICAgICR7aXB9IC00IHJvdXRlIGFkZCAke3JvdXRlcn0gZGV2ICRpbnRlcmZhY2UgPi9kZXYvbnVsbCAyPiYxCi0rCSAgICBmaQotKyAgICAgICAgJHtpcH0gLTQgcm91dGUgYWRkIGRlZmF1bHQgdmlhICR7cm91dGVyfSBkZXYgJHtpbnRlcmZhY2V9IFwKLSsgICAgICAgICAgJHttZXRyaWNfYXJnfSA+L2Rldi9udWxsIDI+JjEKLSAgICAgICBkb25lCi0gICAgIGZpCi0gICBmaQotICAgaWYgWyB4JG5ld19pcF9hZGRyZXNzICE9IHgkYWxpYXNfaXBfYWRkcmVzcyBdICYmIFsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHggXTsKLSAgICB0aGVuCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MC0gaW5ldCAwCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MCBpbmV0ICRhbGlhc19pcF9hZGRyZXNzICRhbGlhc19zdWJuZXRfYXJnCi0tICAgIHJvdXRlIGFkZCAtaG9zdCAkYWxpYXNfaXBfYWRkcmVzcyAkaW50ZXJmYWNlOjAKLSsgICAgJHtpcH0gLTQgYWRkciBmbHVzaCBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0rICAgICR7aXB9IC00IGFkZHIgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30ke2FsaWFzX21hc2t9IFwKLSsgICAgICAgIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSsgICAgJHtpcH0gLTQgcm91dGUgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30gZGV2ICR7aW50ZXJmYWNlfSA+L2Rldi9udWxsIDI+JjEKLSAgIGZpCi0gICBtYWtlX3Jlc29sdl9jb25mCi0gICBleGl0X3dpdGhfaG9va3MgMAotQEAgLTIwNCw0MiArMjA1LDQ5IEBAIGlmIFsgeCRyZWFzb24gPSB4RVhQSVJFIF0gfHwgWyB4JHJlYXNvbiA9IHhGQUlMIF0gfHwgWyB4JHJlYXNvbiA9IHhSRUxFQVNFIF0gXAotICAgIHx8IFsgeCRyZWFzb24gPSB4U1RPUCBdOyB0aGVuCi0gICBpZiBbIHgkYWxpYXNfaXBfYWRkcmVzcyAhPSB4IF07IHRoZW4KLSAgICAgIyBUdXJuIG9mZiBhbGlhcyBpbnRlcmZhY2UuCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MC0gaW5ldCAwCi0rICAgICR7aXB9IC00IGFkZHIgZmx1c2ggZGV2ICR7aW50ZXJmYWNlfSBsYWJlbCAke2ludGVyZmFjZX06MAotICAgZmkKLSAgIGlmIFsgeCRvbGRfaXBfYWRkcmVzcyAhPSB4IF07IHRoZW4KLSAgICAgIyBTaHV0IGRvd24gaW50ZXJmYWNlLCB3aGljaCB3aWxsIGRlbGV0ZSByb3V0ZXMgYW5kIGNsZWFyIGFycCBjYWNoZS4KLS0gICAgaWZjb25maWcgJGludGVyZmFjZSBpbmV0IDAgZG93bgotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9Ci0gICBmaQotICAgaWYgWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MCBpbmV0ICRhbGlhc19pcF9hZGRyZXNzICRhbGlhc19zdWJuZXRfYXJnCi0tICAgIHJvdXRlIGFkZCAtaG9zdCAkYWxpYXNfaXBfYWRkcmVzcyAkaW50ZXJmYWNlOjAKLSsgICAgJHtpcH0gLTQgYWRkciBhZGQgJHthbGlhc19pcF9hZGRyZXNzfSR7YWxpYXNfbmV0d29ya19hcmd9IFwKLSsgICAgICAgIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSsgICAgJHtpcH0gLTQgcm91dGUgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30gZGV2ICR7aW50ZXJmYWNlfSA+L2Rldi9udWxsIDI+JjEKLSAgIGZpCi0gICBleGl0X3dpdGhfaG9va3MgMAotIGZpCi0gCi0gaWYgWyB4JHJlYXNvbiA9IHhUSU1FT1VUIF07IHRoZW4KLSAgIGlmIFsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHggXTsgdGhlbgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAtIGluZXQgMAotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSsgIGZpCi0rICAke2lwfSAtNCBhZGRyIGFkZCAke25ld19pcF9hZGRyZXNzfSR7bmV3X21hc2t9ICR7bmV3X2Jyb2FkY2FzdF9hcmd9IFwKLSsgICAgICAgICAgICBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfQotKyAgaWYgWyAtbiAiJG5ld19pbnRlcmZhY2VfbXR1IiBdOyB0aGVuCi0rICAgICMgc2V0IE1UVQotKyAgICBpcCBsaW5rIHNldCBkZXYgJHtpbnRlcmZhY2V9IG10dSAke25ld19pbnRlcmZhY2VfbXR1fQotICAgZmkKLS0gIGlmY29uZmlnICRpbnRlcmZhY2UgaW5ldCAkbmV3X2lwX2FkZHJlc3MgJG5ld19zdWJuZXRfYXJnIFwKLS0JCQkJCSRuZXdfYnJvYWRjYXN0X2FyZyAkbXR1X2FyZwotICAgc2V0ICRuZXdfcm91dGVycwotICAgaWYgcGluZyAtcSAtYyAxICQxOyB0aGVuCi0gICAgIGlmIFsgeCRuZXdfaXBfYWRkcmVzcyAhPSB4JGFsaWFzX2lwX2FkZHJlc3MgXSAmJiBcCi0gCQkJWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCi0tICAgICAgaWZjb25maWcgJGludGVyZmFjZTowIGluZXQgJGFsaWFzX2lwX2FkZHJlc3MgJGFsaWFzX3N1Ym5ldF9hcmcKLS0gICAgICByb3V0ZSBhZGQgLWhvc3QgJGFsaWFzX2lwX2FkZHJlc3MgZGV2ICRpbnRlcmZhY2U6MAotKyAgICAgICR7aXB9IC00IGFkZHIgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30ke2FsaWFzX21hc2t9IFwKLSsgICAgICAgICAgICBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0rICAgICAgJHtpcH0gLTQgcm91dGUgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30gZGV2ICR7aW50ZXJmYWNlfSA+L2Rldi9udWxsIDI+JjEKLSAgICAgZmkKLSAgICAgZm9yIHJvdXRlciBpbiAkbmV3X3JvdXRlcnM7IGRvCi0gICAgICAgaWYgWyAieCRuZXdfc3VibmV0X21hc2siID0gIngyNTUuMjU1LjI1NS4yNTUiIF0gOyB0aGVuCi0tCXJvdXRlIGFkZCAtaG9zdCAkcm91dGVyIGRldiAkaW50ZXJmYWNlCi0rCSAgICAke2lwfSAtNCByb3V0ZSBhZGQgJHtyb3V0ZXJ9IGRldiAkaW50ZXJmYWNlID4vZGV2L251bGwgMj4mMQotICAgICAgIGZpCi0tICAgICAgcm91dGUgYWRkIGRlZmF1bHQgZ3cgJHJvdXRlciAkbWV0cmljX2FyZyBkZXYgJGludGVyZmFjZQotKyAgICAgICR7aXB9IC00IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAke3JvdXRlcn0gZGV2ICR7aW50ZXJmYWNlfSBcCi0rICAgICAgICAke21ldHJpY19hcmd9ID4vZGV2L251bGwgMj4mMQotICAgICBkb25lCi0gICAgIG1ha2VfcmVzb2x2X2NvbmYKLSAgICAgZXhpdF93aXRoX2hvb2tzIDAKLSAgIGZpCi0tICBpZmNvbmZpZyAkaW50ZXJmYWNlIGluZXQgMCBkb3duCi0rICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0KLSAgIGV4aXRfd2l0aF9ob29rcyAxCi0gZmkKLSAKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3NlYXJjaC1mb3ItbGlieG1sMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9zZWFyY2gtZm9yLWxpYnhtbDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOGE1YjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3NlYXJjaC1mb3ItbGlieG1sMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLWxpYmRucyByZXF1aXJlcyBsaWJ4bWwyIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggbGlieG1sMiBzdXBwb3J0Ci1lbmFibGVkLiBDb21waWxhdGlvbiB3aWxsIGZhaWwgZm9yIG9tYXBpcC90ZXN0LmMgaW4gY2FzZQotbHhtbDIgaXNuJ3QgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLiBTbywgd2UgYWRkIGxvc2VseSBjb3VwbGVkCi1zZWFyY2ggcGF0aCB3aGljaCB3aWxsIHBpY2sgdXAgdGhlIGxpYiBpZiBpdCBpcyBwcmVzZW50LgotCi1TaWduZWQtb2ZmLWJ5OiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjOWRjOGI1Li44NWY1OWJlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MDIsNiArNjAyLDEwIEBAIG5vKQotIGVzYWMKLSBBQ19TVUJTVChbbGliYmluZF0pCi0gCi0rIyBXZSBuZWVkIHRvIGZpbmQgbGlieG1sMiBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZW5hYmxlZAotKyMgb3RoZXJ3aXNlIHdlJ2xsIGZhaWwgdG8gYnVpbGQgb21hcGlwL3Rlc3QuYwotK0FDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwpCi0rCi0gIyBPcGVuTERBUCBzdXBwb3J0LgotIEFDX0FSR19XSVRIKGxkYXAsCi0gICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtbGRhcF0sW2VuYWJsZSBPcGVuTERBUCBzdXBwb3J0IGluIGRoY3BkIChkZWZhdWx0IGlzIG5vKV0pLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3R3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC90d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzZhYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3R3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi1Gcm9tIGFkN2JiNDAxZjQ3NzE0ZmMzMGM0MDg4NTNiNzk2Y2UwZjFjN2U2NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTYXQsIDExIEp1biAyMDE2IDIyOjUxOjQ0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHR3ZWFrIHRvIHN1cHBvcnQgZXh0ZXJuYWwgYmluZAotCi1Ud2VhayB0aGUgZXh0ZXJuYWwgYmluZCB0byBvZS1jb3JlJ3Mgc3lzcm9vdCByYXRoZXIgdGhhbgotZXh0ZXJuYWwgYmluZCBzb3VyY2UgYnVpbGQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSA8b2UtY29yZSBzcGVjaWZpYz4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2xpZW50L01ha2VmaWxlLmFtICAgICAgIHwgMiArLQotIGNsaWVudC90ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KLSBjb21tb24vdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCi0gZGhjcGN0bC9NYWtlZmlsZS5hbSAgICAgIHwgMiArLQotIG9tYXBpcC9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KLSByZWxheS9NYWtlZmlsZS5hbSAgICAgICAgfCAyICstCi0gc2VydmVyL01ha2VmaWxlLmFtICAgICAgIHwgMiArLQotIHNlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KLSA4IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC9NYWtlZmlsZS5hbSBiL2NsaWVudC9NYWtlZmlsZS5hbQotaW5kZXggNDczMGJiMy4uODRkODEzMSAxMDA2NDQKLS0tLSBhL2NsaWVudC9NYWtlZmlsZS5hbQotKysrIGIvY2xpZW50L01ha2VmaWxlLmFtCi1AQCAtNCw3ICs0LDcgQEAKLSAjIHByb2R1Y3Rpb24gY29kZS4gU2FkbHksIHdlIGFyZSBub3QgdGhlcmUgeWV0LgotIFNVQkRJUlMgPSAuIHRlc3RzCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAtRENMSUVOVF9QQVRIPSciUEFUSD0kKHNiaW5kaXIpOi9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluIicgXAotIAkgICAgICAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtIGIvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCBkYTY5ZWE5Li5mZTM1ZTU3IDEwMDY0NAotLS0tIGEvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9jbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotIFNVQkRJUlMgPSAuCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1EVU5JVF9URVNUIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIEFNX0NQUEZMQUdTICs9IC1JQEJJTkRESVJAL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpCi1kaWZmIC0tZ2l0IGEvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCBmOGQ2YjBlLi4wNWNkOWMxIDEwMDY0NAotLS0tIGEvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotIFNVQkRJUlMgPSAuCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCi1pbmRleCBiYThkZDhiLi45YjI0ODZlIDEwMDY0NAotLS0tIGEvZGhjcGN0bC9NYWtlZmlsZS5hbQotKysrIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpCi0gCi1kaWZmIC0tZ2l0IGEvb21hcGlwL01ha2VmaWxlLmFtIGIvb21hcGlwL01ha2VmaWxlLmFtCi1pbmRleCBkZDFhZmEwLi5lNGE4NTk5IDEwMDY0NAotLS0tIGEvb21hcGlwL01ha2VmaWxlLmFtCi0rKysgYi9vbWFwaXAvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAotLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQklORExJQkRJUiA9IEBCSU5ERElSQAotIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCi0gbGliX0xJQlJBUklFUyA9IGxpYm9tYXBpLmEKLWRpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCi1pbmRleCA2ZDY1MmY2Li5iM2JmNTc4IDEwMDY0NAotLS0tIGEvcmVsYXkvTWFrZWZpbGUuYW0KLSsrKyBiL3JlbGF5L01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKLS1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotK0JJTkRMSUJESVIgPSBAQklORERJUkAKLSAKLSBBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5hbSBiL3NlcnZlci9NYWtlZmlsZS5hbQotaW5kZXggMzk5MGI5Yy4uYjVkOGMyZCAxMDA2NDQKLS0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQotKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCi1AQCAtNCw3ICs0LDcgQEAKLSAjIHByb2R1Y3Rpb24gY29kZS4gU2FkbHksIHdlIGFyZSBub3QgdGhlcmUgeWV0LgotIFNVQkRJUlMgPSAuIHRlc3RzCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCi1kaWZmIC0tZ2l0IGEvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA2NWE5Zjc0Li4yODkyMzA5IDEwMDY0NAotLS0tIGEvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotIFNVQkRJUlMgPSAuCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1EVU5JVF9URVNUIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIEFNX0NQUEZMQUdTICs9IC1JQEJJTkRESVJAL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc4YzI5YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGRoY3AuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kaGNwLTMuMC4zLWRoY2xpZW50LWRidXMucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgIGZpbGU6Ly9saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZml4c2VwYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RoY2xpZW50LXNjcmlwdC1kcm9wLXJlc29sdi5jb25mLmRoY2xpZW50LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLWNvbmZpZ3VyZS1hcmd1bWVudC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJiNWU1YjJmYTMxYzJlMjdlNDg3MDM5ZDg2ZjgzZDNmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImViOTU5MzZiZjE1ZDIzOTNjNTVkZDUwNWJjNTI3ZDFkNDQwODI4OWNlYzVhOWZhOGFiYjk5Zjc1NzdlN2Y5NTQiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYxNWFlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNi5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGRoY3AuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDktcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTEtTW92ZWQtdGhlLWNhbGwtdG8taXNjX2FwcF9jdHhzdGFydC10by1ub3QtZ2V0LXNpZ25hbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWZhNmU5YjNlYjc1MzllYTA0ODQyMWE4MmM2NjhhZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQxZWFmNjM2NGYxMzc3ZmUwNjVkMzU2NzFkOWNmODJiYmJjOGYyMTIwNzgxOWIyYjlmMzNmNjUyYWVjNmYxYiIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tiaW5kLWh0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9maWxlcy9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwZTIyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyCkBAIC0wLDAgKzEsMzkgQEAKKyMhL2Jpbi9zaAorCisjIEluIGNhc2UgdGhlIGludGVyZmFjZSBpcyB1c2VkIGZvciBuZnMsIHNraXAgaXQuCituZnNyb290PTAKK2ludGVyZmFjZXM9IiIKK2V4ZWMgOTwmMCA8IC9wcm9jL21vdW50cword2hpbGUgcmVhZCBkZXYgbXRwdCBmc3R5cGUgcmVzdDsgZG8KKyAgICBpZiB0ZXN0ICRtdHB0ID0gIi8iIDsgdGhlbgorICAgICAgICBjYXNlICRmc3R5cGUgaW4KKyAgICAgICAgICAgIG5mcyB8IG5mczQpCisgICAgICAgICAgICAgICAgbmZzcm9vdD0xCisgICAgICAgICAgICAgICAgbmZzX2FkZHI9YGVjaG8gJHJlc3QgfCBzZWQgLWUgJ3MvXi4qYWRkcj1cKFswLTkuXSpcKS4qJC9cMS8nYAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgIGZpCitkb25lCitleGVjIDA8JjkgOTwmLQorCitpZiBbICRuZnNyb290IC1lcSAwIF07IHRoZW4KKyAgICBpbnRlcmZhY2VzPSIkSU5URVJGQUNFUyIKK2Vsc2UKKyAgICBpZiBbIC14IC9iaW4vaXAgLW8gLXggL3NiaW4vaXAgXSA7IHRoZW4KKwluZnNfaWZhY2U9YGlwIHJvdXRlIGdldCAkbmZzX2FkZHIgfCBncmVwIGRldiB8IHNlZCAtZSAncy9eLipkZXYgXChbLWEtejAtOS5dKlwpLiokL1wxLydgCisgICAgZmkKKyAgICBmb3IgaSBpbiAkSU5URVJGQUNFUzsgZG8KKwlpZiB0ZXN0ICJ4JGkiID0gIngkbmZzX2lmYWNlIjsgdGhlbgorICAgICAgICAgICAgZWNobyAiZGhjbGllbnQgc2tpcHBpbmcgbmZzcm9vdCBpbnRlcmZhY2UgJGkiCisJZWxzZQorCSAgICBpbnRlcmZhY2VzPSIkaW50ZXJmYWNlcyAkaSIKKwlmaQorICAgIGRvbmUKK2ZpCisKK2lmIHRlc3QgIngkaW50ZXJmYWNlcyIgIT0gIngiOyB0aGVuCisgICAgL3NiaW4vZGhjbGllbnQgLWQgLWNmIC9ldGMvZGhjcC9kaGNsaWVudC5jb25mIC1xIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LmxlYXNlcyAkaW50ZXJmYWNlcworZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQuc2VydmljZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGRiNGQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9maWxlcy9kaGNsaWVudC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTMgQEAKK1tVbml0XQorRGVzY3JpcHRpb249RHluYW1pYyBIb3N0IENvbmZpZ3VyYXRpb24gUHJvdG9jb2wgKERIQ1ApCitXYW50cz1uZXR3b3JrLnRhcmdldAorQmVmb3JlPW5ldHdvcmsudGFyZ2V0CitBZnRlcj1zeXN0ZW1kLXVkZXZkLnNlcnZpY2UKKworW1NlcnZpY2VdCitFbnZpcm9ubWVudEZpbGU9LUBTWVNDT05GRElSQC9kZWZhdWx0L2RoY3AtY2xpZW50CitFeGVjU3RhcnQ9QEJBU0VfU0JJTkRJUkAvZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwppbmRleCBjZTY0ODg4Li5hNTc4ZWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCkBAIC0xMyw3ICsxMywxMCBAQAogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgYmFzaC1jb21wbGV0aW9uIHBrZ2NvbmZpZwogCi1FWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBLRVJORUxfSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSBET0NESVI9JHtkb2NkaXJ9L2lwcm91dGUyIFNVQkRJUlM9J2xpYiB0YyBpcCBicmlkZ2UgbWlzYyBnZW5sJyBTQklORElSPScke2Jhc2Vfc2JpbmRpcn0nIExJQkRJUj0nJHtsaWJkaXJ9JyIKK1BBQ0tBR0VDT05GSUcgPz89ICJ0aXBjIgorUEFDS0FHRUNPTkZJR1t0aXBjXSA9ICIsLGxpYm1ubCwiCisKK0VYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIEtFUk5FTF9JTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9IERPQ0RJUj0ke2RvY2Rpcn0vaXByb3V0ZTIgU1VCRElSUz0nbGliIHRjIGlwIGJyaWRnZSBtaXNjIGdlbmwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGlwYycsICd0aXBjJywgJycsIGQpfScgU0JJTkRJUj0nJHtiYXNlX3NiaW5kaXJ9JyBMSUJESVI9JyR7bGliZGlyfSciCiAKIGRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewogICAgIHNoIGNvbmZpZ3VyZSAke1NUQUdJTkdfSU5DRElSfQpAQCAtMzIsNyArMzUsNyBAQAogIyBUaGUgLnNvIGZpbGVzIGluIGlwcm91dGUyLXRjIGFyZSBtb2R1bGVzLCBub3QgdHJhZGl0aW9uYWwgbGlicmFyaWVzCiBJTlNBTkVfU0tJUF8ke1BOfS10YyA9ICJkZXYtc28iCiAKLVBBQ0tBR0VTID0rICIke1BOfS10YyAke1BOfS1sbnN0YXQgJHtQTn0taWZzdGF0ICR7UE59LWdlbmwgJHtQTn0tcnRhY2N0ICR7UE59LW5zdGF0ICR7UE59LXNzIgorUEFDS0FHRVMgPSsgIiR7UE59LXRjICR7UE59LWxuc3RhdCAke1BOfS1pZnN0YXQgJHtQTn0tZ2VubCAke1BOfS1ydGFjY3QgJHtQTn0tbnN0YXQgJHtQTn0tc3MgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGlwYycsICcke1BOfS10aXBjJywgJycsIGQpfSIKIEZJTEVTXyR7UE59LXRjID0gIiR7YmFzZV9zYmluZGlyfS90YyogXAogICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3RjLyouc28iCiBGSUxFU18ke1BOfS1sbnN0YXQgPSAiJHtiYXNlX3NiaW5kaXJ9L2xuc3RhdCAke2Jhc2Vfc2JpbmRpcn0vY3RzdGF0ICR7YmFzZV9zYmluZGlyfS9ydHN0YXQiCkBAIC00MSw2ICs0NCw3IEBACiBGSUxFU18ke1BOfS1ydGFjY3QgPSAiJHtiYXNlX3NiaW5kaXJ9L3J0YWNjdCIKIEZJTEVTXyR7UE59LW5zdGF0ID0gIiR7YmFzZV9zYmluZGlyfS9uc3RhdCIKIEZJTEVTXyR7UE59LXNzID0gIiR7YmFzZV9zYmluZGlyfS9zcyIKK0ZJTEVTXyR7UE59LXRpcGMgPSAiJHtiYXNlX3NiaW5kaXJ9L3RpcGMiCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImlwIgogQUxURVJOQVRJVkVfVEFSR0VUW2lwXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaXAuJHtCUE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZXhwbGljaXRseS1mb3ItVUlOVDE2X01BWC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjBjMGFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAzYzg4NWQ4N2JlZmM3MDZiYjkyMzkzM2I5ODE5ZGU2ZmUyZGU4OTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjAgTWF5IDIwMTcgMTQ6MDM6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRpbnQuaCBleHBsaWNpdGx5IGZvciBVSU5UMTZfTUFYKQorCitGaXhlcworfCB0Y19jb3JlLmM6MTkwOjI5OiBlcnJvcjogJ1VJTlQxNl9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdfX0lOVDE2X01BWF9fJz8KK3wgICAgaWYgKChzeiA+PiBzLT5zaXplX2xvZykgPiBVSU5UMTZfTUFYKSB7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHRjL3RjX2NvcmUuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdGMvdGNfY29yZS5jIGIvdGMvdGNfY29yZS5jCitpbmRleCA3YmJlMGQ3Li44MjFiNzQxIDEwMDY0NAorLS0tIGEvdGMvdGNfY29yZS5jCisrKysgYi90Yy90Y19jb3JlLmMKK0BAIC0xMiw2ICsxMiw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5c2xvZy5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlmOGRiNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBmNThmYzk5Yzg4YTU0MTM1ZTU1YTZlMDk1NmNlOGFlNzEwNzhkMWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTIgSnVuIDIwMTcgMDQ6Mjk6MDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gaXA6IFJlbW92ZSB1bm5lZWQgaGVhZGVyCisKK0ZpeCByZWRlZmluaXRpb24gb2Ygc3RydWN0IGV0aGhkciB3aXRoIGEgc3VpdGFibHkgcGF0Y2hlZCBtdXNsIGxpYmMKK3RoYXQgc3VwcHJlc3NlcyB0aGUga2VybmVsIGlmX2V0aGVyLmguCisKK1NpZ25lZC1vZmYtYnk6IENoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtuZXRkZXZAdmdlci5rZXJuZWwub3JnXQorLS0tCisgaXAvaXBsaW5rX2JyaWRnZS5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2lwL2lwbGlua19icmlkZ2UuYyBiL2lwL2lwbGlua19icmlkZ2UuYworaW5kZXggODE4YjQzYy4uZjA2NWIyMiAxMDA2NDQKKy0tLSBhL2lwL2lwbGlua19icmlkZ2UuYworKysrIGIvaXAvaXBsaW5rX2JyaWRnZS5jCitAQCAtMTUsNyArMTUsNiBAQAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2xpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+CistI2luY2x1ZGUgPG5ldGluZXQvZXRoZXIuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgCisgI2luY2x1ZGUgInJ0X25hbWVzLmgiCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA1MGU4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIGlwcm91dGUyLmluYwotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiOTRhMmIwZWRlZmFlYWMxMjRkYzhmNWQwMDY5MzFiOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMmIxZTFjMWZjNzA0YWQzNTgzN2U1YTY2MTAzNzM5NzI3YjhiNDhhYzkwYjQ4YzEzZjc5YjczNjdmZjBhOWE4IgotCi0jIENGTEFHUyBhcmUgY29tcHV0ZWQgaW4gTWFrZWZpbGUgYW5kIHJlZmVyZW5jZSBDQ09QVFMKLSMKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiIENDT1BUUz0nJHtDRkxBR1N9JyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmQwNTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xMS4wLmJiCkBAIC0wLDAgKzEsMTYgQEAKK3JlcXVpcmUgaXByb3V0ZTIuaW5jCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2E5NDk4ZGU4OGJjY2E5NWMzMDVkZjYxMDhhZTE5N2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzI2NzEwMjhiZGE2OTZkMGNiOGY0OGVjOGU3MDI1ODFjM2E1MDFjYWVlZDMzZWVjM2E4MWQ3MDQxY2JjODAyNiIKKworIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCisjCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJwY2FwL2xpYnBjYXAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicGNhcC9saWJwY2FwLmluYwppbmRleCA2NjM1Nzc5Li5lNTdlYTg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJwY2FwL2xpYnBjYXAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnBjYXAvbGlicGNhcC5pbmMKQEAgLTM4LDMgKzM4LDUgQEAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKICAgICBzZWQgLWkgLWUncyxeVl9SUEFUSF9PUFQ9LiokLFZfUlBBVEhfT1BUPSwnICR7U30vcGNhcC1jb25maWcuaW4KIH0KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiCmluZGV4IGJkNDg4ZWIuLmRiYzU3OGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiCkBAIC0xLDkgKzEsMTAgQEAKIFNVTU1BUlkgPSAiTW9iaWxlIEJyb2FkYmFuZCBTZXJ2aWNlIFByb3ZpZGVyIERhdGFiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL05ldHdvcmtNYW5hZ2VyL01vYmlsZUJyb2FkYmFuZC9TZXJ2aWNlUHJvdmlkZXJzIgogU0VDVElPTiA9ICJuZXR3b3JrIgogTElDRU5TRSA9ICJQRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3OTY0NTc5YjJhOGVjZTRiYzY3NDRkMmRjOWE4YjA0IgotU1JDUkVWID0gIjUxOTQ2NTc2NmZhYmM4NWI5ZmRlYTVmMmI1ZWUzZDA4YzJiMWY3MGQiCi1QViA9ICIyMDE1MTIxNCIKK1NSQ1JFViA9ICJiZWZjYmJjOTg2N2U3NDJhYzE2NDE1NjYwYjBiNzUyMTIxOGE1MzBjIgorUFYgPSAiMjAxNzAzMTAiCiBQRSA9ICIxIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5nbm9tZS5vcmcvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVVJTlQxNl9NQVgtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1YTJjNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSAzNmI0ODA1N2JjZTc2ZGNlZDMzNWQ2N2EyODk0YTQyMDk2NzgxMWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjAgTWF5IDIwMTcgMTQ6MDc6NTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRpbnQuaCBmb3IgVUlOVDE2X01BWCBkZWZpbml0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3VwcG9ydC9uc20vcnBjLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3N1cHBvcnQvbnNtL3JwYy5jIGIvc3VwcG9ydC9uc20vcnBjLmMKK2luZGV4IDRlNWY0MGUuLmQ5MWM2ZWEgMTAwNjQ0CistLS0gYS9zdXBwb3J0L25zbS9ycGMuYworKysrIGIvc3VwcG9ydC9uc20vcnBjLmMKK0BAIC00MCw2ICs0MCw3IEBACisgCisgI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18xLjMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMS4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYTlhYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18xLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi1TVU1NQVJZID0gInVzZXJzcGFjZSB1dGlsaXRpZXMgZm9yIGtlcm5lbCBuZnMiCi1ERVNDUklQVElPTiA9ICJUaGUgbmZzLXV0aWxzIHBhY2thZ2UgcHJvdmlkZXMgYSBkYWVtb24gZm9yIHRoZSBrZXJuZWwgXAotTkZTIHNlcnZlciBhbmQgcmVsYXRlZCB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJNSVQgJiBHUEx2MisgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NWYzYTkzYTVjM2M3ODg4ZGU2MjNiNDZlYTA4NWE4NCIKLQotIyB1dGlsLWxpbnV4IGZvciBsaWJibGtpZAotREVQRU5EUyA9ICJsaWJjYXAgbGlibmZzaWRtYXAgbGliZXZlbnQgdXRpbC1saW51eCBzcWxpdGUzIGxpYnRpcnBjIgotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50IGJhc2giCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW5mc2QiCi0KLWluaGVyaXQgdXNlcmFkZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWNsaWVudCIKLVVTRVJBRERfUEFSQU1fJHtQTn0tY2xpZW50ID0gIi0tc3lzdGVtICAtLWhvbWUtZGlyIC92YXIvbGliL25mcyBcCi0JCQkgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJwY3VzZXIiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZnMtdXRpbHMvJHtQVn0vbmZzLXV0aWxzLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnNzZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8vbmZzY29tbW9uIFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1zZXJ2ZXIuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtbW91bnRkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXN0YXRkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vcHJvYy1mcy1uZnNkLm1vdW50IFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1Eby1ub3QtcGFzcy1DRkxBR1MtdG8tZ2NjLXdoaWxlLWJ1aWxkaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTRlNDExOTA0M2VjODUwN2EyYTBlMDU0Y2YyODg5YTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQyYTViYzBhOGQ4MGQwNDY1MDAzMGNlYjlhMTFmMDhmNGFjZmJjYjFlZTI5N2Y2NTdmYjk0ZTMzOWM0NTk3NSIKLQotIyBPbmx5IGtlcm5lbC1tb2R1bGUtbmZzZCBpcyByZXF1aXJlZCBoZXJlIChidXQgY2FuIGJlIGJ1aWx0LWluKSAgLSB0aGUgbmZzZCBtb2R1bGUgd2lsbAotIyBwdWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGRlcGVuZGVuY2llcy4KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCi1JTklUU0NSSVBUX05BTUUgPSAibmZzc2VydmVyIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tY2xpZW50ID0gIm5mc2NvbW1vbiIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWNsaWVudCA9ICJkZWZhdWx0cyAxOSAyMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5mcy1zZXJ2ZXIuc2VydmljZSBuZnMtbW91bnRkLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gIm5mcy1zdGF0ZC5zZXJ2aWNlIgotCi0jIC0tZW5hYmxlLXV1aWQgaXMgbmVlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnN2NDEgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN0YXRkcGF0aD0vdmFyL2xpYi9uZnMvc3RhdGQgXAotICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMiCi1QQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbbmZzaWRtYXBdID0gIi0tZW5hYmxlLW5mc2lkbWFwLC0tZGlzYWJsZS1uZnNpZG1hcCxrZXl1dGlscyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1jbGllbnQgJHtQTn0tbW91bnQgJHtQTn0tc3RhdHMiCi0KLUNPTkZGSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ldGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ybXRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMveHRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUgXAotCQkJICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIgotCi1GSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8qc3RhdGQgXAotCQkgICAgICAke3NiaW5kaXJ9L3JwYy5pZG1hcGQgJHtzYmluZGlyfS9zbS1ub3RpZnkgXAotCQkgICAgICAke3NiaW5kaXJ9L3Nob3dtb3VudCAke3NiaW5kaXJ9L25mc3N0YXQgXAotCQkgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L25mcy11dGlscy5jb25mIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKLQkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKLVJERVBFTkRTXyR7UE59LWNsaWVudCA9ICIke1BOfS1tb3VudCBycGNiaW5kIgotCi1GSUxFU18ke1BOfS1tb3VudCA9ICIke2Jhc2Vfc2JpbmRpcn0vKm1vdW50Lm5mcyoiCi0KLUZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKLVJERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgICAgICAke1N9L3V0aWxzL21vdW50L01ha2VmaWxlLmFtCi0KLSAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgICR7U30vdXRpbHMvb3NkX2xvZ2luL01ha2VmaWxlLmFtCi19Ci0KLSMgTWFrZSBjbGVhbiBuZWVkZWQgYmVjYXVzZSB0aGUgcGFja2FnZSBjb21lcyB3aXRoCi0jIHByZWNvbXBpbGVkIDY0LWJpdCBvYmplY3RzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JbWFrZSBjbGVhbgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc3NlcnZlcgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc2NvbW1vbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uCi0KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnMtdXRpbHMuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke1N9L3V0aWxzL21vdW50L25mc21vdW50LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLW1vdW50ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zdGF0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvCi0JICAgIGxuIC1zZiAuLi9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvcHJvYy1mcy1uZnNkLm1vdW50Ci0JZmkKLQotCSMga2VybmVsIGNvZGUgYXMgb2YgMy44IGhhcmQtY29kZXMgdGhpcyBwYXRoIGFzIGEgZGVmYXVsdAotCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL25mcy92NHJlY292ZXJ5Ci0KLQkjIGNob3duIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKLQljaG93biAtUiBycGN1c2VyOnJwY3VzZXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZAotCWNobW9kIDA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZQotCi0JIyB0aGUgZm9sbG93aW5nIGFyZSBidWlsdCBieSBDQ19GT1JfQlVJTEQKLQlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNkZWJ1ZwotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L3JwY2dlbgotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2xvY2t0ZXN0Ci0KLSAgICAgICAgIyBNYWtlIHB5dGhvbiB0b29scyB1c2UgcHl0aG9uIDMKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtEfSR7c2JpbmRpcn0vbmZzaW9zdGF0Ci0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MTdjNGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCkBAIC0wLDAgKzEsMTQ5IEBACitTVU1NQVJZID0gInVzZXJzcGFjZSB1dGlsaXRpZXMgZm9yIGtlcm5lbCBuZnMiCitERVNDUklQVElPTiA9ICJUaGUgbmZzLXV0aWxzIHBhY2thZ2UgcHJvdmlkZXMgYSBkYWVtb24gZm9yIHRoZSBrZXJuZWwgXAorTkZTIHNlcnZlciBhbmQgcmVsYXRlZCB0b29scy4iCitIT01FUEFHRSA9ICJodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJNSVQgJiBHUEx2MisgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NWYzYTkzYTVjM2M3ODg4ZGU2MjNiNDZlYTA4NWE4NCIKKworIyB1dGlsLWxpbnV4IGZvciBsaWJibGtpZAorREVQRU5EUyA9ICJsaWJjYXAgbGlibmZzaWRtYXAgbGliZXZlbnQgdXRpbC1saW51eCBzcWxpdGUzIGxpYnRpcnBjIgorUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50IGJhc2giCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW5mc2QiCisKK2luaGVyaXQgdXNlcmFkZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWNsaWVudCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tY2xpZW50ID0gIi0tc3lzdGVtICAtLWhvbWUtZGlyIC92YXIvbGliL25mcyBcCisJCQkgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJwY3VzZXIiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZnMtdXRpbHMvJHtQVn0vbmZzLXV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnNzZXJ2ZXIgXAorICAgICAgICAgICBmaWxlOi8vbmZzY29tbW9uIFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1zZXJ2ZXIuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtbW91bnRkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXN0YXRkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vcHJvYy1mcy1uZnNkLm1vdW50IFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1Eby1ub3QtcGFzcy1DRkxBR1MtdG8tZ2NjLXdoaWxlLWJ1aWxkaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTlkZmNiMmU2MjU0YjEyOWY5MDFmNDBjODYwODZiMTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZhZWI1NGM3MGI4NGU2YmQzYjliNjkwMTU0NGIxZjZhZGQ4ZDI0NmYzNWMxNjgzZTQwMmRhZjRlMGM3MTllZiIKKworIyBPbmx5IGtlcm5lbC1tb2R1bGUtbmZzZCBpcyByZXF1aXJlZCBoZXJlIChidXQgY2FuIGJlIGJ1aWx0LWluKSAgLSB0aGUgbmZzZCBtb2R1bGUgd2lsbAorIyBwdWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGRlcGVuZGVuY2llcy4KKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCitJTklUU0NSSVBUX05BTUUgPSAibmZzc2VydmVyIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tY2xpZW50ID0gIm5mc2NvbW1vbiIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWNsaWVudCA9ICJkZWZhdWx0cyAxOSAyMSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5mcy1zZXJ2ZXIuc2VydmljZSBuZnMtbW91bnRkLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gIm5mcy1zdGF0ZC5zZXJ2aWNlIgorCisjIC0tZW5hYmxlLXV1aWQgaXMgbmVlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnN2NDEgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN0YXRkcGF0aD0vdmFyL2xpYi9uZnMvc3RhdGQgXAorICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbbmZzaWRtYXBdID0gIi0tZW5hYmxlLW5mc2lkbWFwLC0tZGlzYWJsZS1uZnNpZG1hcCxrZXl1dGlscyIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jbGllbnQgJHtQTn0tbW91bnQgJHtQTn0tc3RhdHMiCisKK0NPTkZGSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ldGFiIFwKKwkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ybXRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMveHRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUgXAorCQkJICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIgorCitGSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8qc3RhdGQgXAorCQkgICAgICAke3NiaW5kaXJ9L3JwYy5pZG1hcGQgJHtzYmluZGlyfS9zbS1ub3RpZnkgXAorCQkgICAgICAke3NiaW5kaXJ9L3Nob3dtb3VudCAke3NiaW5kaXJ9L25mc3N0YXQgXAorCQkgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMgXAorCQkgICAgICAke3N5c2NvbmZkaXJ9L25mcy11dGlscy5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKKwkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICIke1BOfS1tb3VudCBycGNiaW5kIgorCitGSUxFU18ke1BOfS1tb3VudCA9ICIke2Jhc2Vfc2JpbmRpcn0vKm1vdW50Lm5mcyoiCisKK0ZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKK1JERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgICAgICAke1N9L3V0aWxzL21vdW50L01ha2VmaWxlLmFtCisKKyAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgICR7U30vdXRpbHMvb3NkX2xvZ2luL01ha2VmaWxlLmFtCit9CisKKyMgTWFrZSBjbGVhbiBuZWVkZWQgYmVjYXVzZSB0aGUgcGFja2FnZSBjb21lcyB3aXRoCisjIHByZWNvbXBpbGVkIDY0LWJpdCBvYmplY3RzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJbWFrZSBjbGVhbgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc3NlcnZlcgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc2NvbW1vbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uCisKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnMtdXRpbHMuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke1N9L3V0aWxzL21vdW50L25mc21vdW50LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLW1vdW50ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zdGF0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvCisJICAgIGxuIC1zZiAuLi9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvcHJvYy1mcy1uZnNkLm1vdW50CisJZmkKKworCSMga2VybmVsIGNvZGUgYXMgb2YgMy44IGhhcmQtY29kZXMgdGhpcyBwYXRoIGFzIGEgZGVmYXVsdAorCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL25mcy92NHJlY292ZXJ5CisKKwkjIGNob3duIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKKwljaG93biAtUiBycGN1c2VyOnJwY3VzZXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZAorCWNobW9kIDA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZQorCisJIyB0aGUgZm9sbG93aW5nIGFyZSBidWlsdCBieSBDQ19GT1JfQlVJTEQKKwlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNkZWJ1ZworCXJtIC1mICR7RH0ke3NiaW5kaXJ9L3JwY2dlbgorCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2xvY2t0ZXN0CisKKyAgICAgICAgIyBNYWtlIHB5dGhvbiB0b29scyB1c2UgcHl0aG9uIDMKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtEfSR7c2JpbmRpcn0vbmZzaW9zdGF0CisKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGViZDcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIG9mb25vLmluYwotCi1TUkNfVVJJICA9ICJcCi0gICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgZmlsZTovL29mb25vIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhNWY4ODAzYWNlMTEwNTExYjZmZjVhMmIzOTc4MmU4YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMGUwOWJkZDhiNTNiOGQyZTRiNTRmMTg2M2VjZDlhZWJlNDc4NjQ3N2E2Y2JmOGY2NTU0OTZlOGVkYjMxYzgxIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtRF9HTlVfU09VUkNFIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThmOTgzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjAuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIG9mb25vLmluYworCitTUkNfVVJJICA9ICJcCisgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgZmlsZTovL29mb25vIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmYWQwNjMwZmNlNmE5YWVjZGI3ZGIzN2JjMWYxZGI3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDdiYThmNDgxYTc3MTVkMDEzYTc5ZjhkNjQ3N2ViODlkOGFhYWUzOTkzOTVkNWQwMDhhMTMxN2MzNGEzMWQ1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWFmYjc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgb2Zvbm8uaW5jCi0KLVMJID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gIjE0NTQ0ZDU5OTY4MzZmNjI4NjEzYzJjZTU0NDM4MGVlNmZjOGY1MTQiCi1QVgkgPSAiMC4xMi1naXQke1NSQ1BWfSIKLVBSID0gInI1IgotCi1TUkNfVVJJICA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvb2Zvbm8vb2Zvbm8uZ2l0IFwKLQkgICAgZmlsZTovL29mb25vIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICR7U30vYm9vdHN0cmFwCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOWUyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYTdlMzU5ZDRiYTM0NWFhMmExM2MwN2YxMDU3MTg0ZTliNGU1OThhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyMiBBdWcgMjAxNyAxMToxOTo0OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBvcGVuc3NoOiBGaXggc3ludGF4IGVycm9yIG9uIHgzMgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitUaGlzIGJ1ZyBoYXMgYmVlbiBmaXhlZCBpbiB2XzcuNSBicmFuY2ggaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvCitvcGVuc3NoLXBvcnRhYmxlL3RyZWUvVl83XzUgYW5kIG1hc3RlciBicmFuY2ggaHR0cHM6Ly9naXRodWIuY29tLworb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3RyZWUvbWFzdGVyLgorCitGaXggY29tcGlsYXRpb24gZXJyb3IgZHVyaW5nIG9wZW5zc2ggeDMyIGJ1aWxkIGR1ZSB0byBzeW50YXggZXJyb3IuCisKK1NpZ25lZC1vZmYtYnk6IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorLS0tCisgc2FuZGJveC1zZWNjb21wLWZpbHRlci5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jIGIvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCitpbmRleCAzYTFhZWRjLi5hOGQ0NzJhIDEwMDY0NAorLS0tIGEvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCisrKysgYi9zYW5kYm94LXNlY2NvbXAtZmlsdGVyLmMKK0BAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzb2NrX2ZpbHRlciBwcmVhdXRoX2luc25zW10gPSB7CisgCSAqIHg4Ni02NCBzeXNjYWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcywgZS5nLgorIAkgKiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy84NDk5MjMKKyAJICovCistCVNDX0FMTE9XKF9fTlJfY2xvY2tfZ2V0dGltZSAmIH5fX1gzMl9TWVNDQUxMX0JJVCk7CisrCVNDX0FMTE9XKF9fTlJfY2xvY2tfZ2V0dGltZSAmIH5fX1gzMl9TWVNDQUxMX0JJVCksCisgI2VuZGlmCisgCisgCS8qIERlZmF1bHQgZGVueSAqLworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaAppbmRleCBkZjY0YTE0Li43ZTA0M2EyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2gKQEAgLTgsNyArOCw3IEBACiBJbiBjYXNlIG9mIGNvbXBpbGF0aW9uIGJ5IGdjYyBvciBjbGFuZyB3aXRoIC1mdHJhcHYgb3B0aW9uLCB0aGUgb3ZlcmZsb3cKIHdvdWxkIGxlYWQgdG8gcHJvZ3JhbSBhYm9ydC4KIAotVXBzdHJlYW0tc3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHA6Ly9idWd6aWxsYS5taW5kcm90Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwOF0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vYnVnemlsbGEubWluZHJvdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDhdCiAKIFNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY2hlY2tfa2V5cyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NoZWNrX2tleXMKaW5kZXggZjViYmE1My4uNTQ2M2IxYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY2hlY2tfa2V5cworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jaGVja19rZXlzCkBAIC0xLDUgKzEsMzUgQEAKICMhIC9iaW4vc2gKIAorZ2VuZXJhdGVfa2V5KCkgeworICAgIGxvY2FsIEZJTEU9JDEKKyAgICBsb2NhbCBUWVBFPSQyCisgICAgbG9jYWwgRElSPSIkKGRpcm5hbWUgIiRGSUxFIikiCisKKyAgICBta2RpciAtcCAiJERJUiIKKyAgICBzc2gta2V5Z2VuIC1xIC1mICIke0ZJTEV9LnRtcCIgLU4gJycgLXQgJFRZUEUKKworICAgICMgQXRvbWljYWxseSByZW5hbWUgZmlsZSBwdWJsaWMga2V5CisgICAgbXYgLWYgIiR7RklMRX0udG1wLnB1YiIgIiR7RklMRX0ucHViIgorCisgICAgIyBUaGlzIHN5bmMgZG9lcyBkb3VibGUgZHV0eTogRW5zdXJpbmcgdGhhdCB0aGUgZGF0YSBpbiB0aGUgdGVtcG9yYXJ5CisgICAgIyBwcml2YXRlIGtleSBmaWxlIGlzIG9uIGRpc2sgYmVmb3JlIHRoZSByZW5hbWUsIGFuZCBlbnN1cmluZyB0aGF0IHRoZQorICAgICMgcHVibGljIGtleSByZW5hbWUgaXMgY29tcGxldGVkIGJlZm9yZSB0aGUgcHJpdmF0ZSBrZXkgcmVuYW1lLCBzaW5jZSB3ZQorICAgICMgc3dpdGNoIG9uIHRoZSBleGlzdGVuY2Ugb2YgdGhlIHByaXZhdGUga2V5IHRvIHRyaWdnZXIga2V5IGdlbmVyYXRpb24uCisgICAgIyBUaGlzIGRvZXMgbWVhbiBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHB1YmxpYyBrZXkgdG8gZXhpc3QsIGJ1dCBiZSBnYXJiYWdlCisgICAgIyBidXQgdGhpcyBpcyBPSyBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcHJpdmF0ZSBrZXkgd29uJ3QgZXhpc3QgYW5kIHRoZQorICAgICMga2V5cyB3aWxsIGJlIHJlZ2VuZXJhdGVkLgorICAgICMKKyAgICAjIEluIHRoZSBldmVudCB0aGF0IHN5bmMgdW5kZXJzdGFuZHMgYXJndW1lbnRzIHRoYXQgbGltaXQgd2hhdCBpdCB0cmllcyB0bworICAgICMgZnN5bmMoKSwgd2UgcHJvdmlkZWQgdGhlbS4gSWYgaXQgZG9lcyBub3QsIGl0IHdpbGwgc2ltcGx5IGNhbGwgc3luYygpCisgICAgIyB3aGljaCBpcyBqdXN0IGFzIHdlbGwKKyAgICBzeW5jICIke0ZJTEV9LnB1YiIgIiRESVIiICIke0ZJTEV9LnRtcCIKKworICAgIG12ICIke0ZJTEV9LnRtcCIgIiRGSUxFIgorCisgICAgIyBzeW5jIHRvIGVuc3VyZSB0aGUgYXRvbWljIHJlbmFtZSBpcyBjb21taXR0ZWQKKyAgICBzeW5jICIkRElSIgorfQorCiAjIC9ldGMvZGVmYXVsdC9zc2ggbWF5IHNldCBTWVNDT05GRElSIGFuZCBTU0hEX09QVFMKIGlmIHRlc3QgLWYgL2V0Yy9kZWZhdWx0L3NzaDsgdGhlbgogICAgIC4gL2V0Yy9kZWZhdWx0L3NzaApAQCAtNDMsMjIgKzczLDE4IEBACiAjIGNyZWF0ZSBrZXlzIGlmIG5lY2Vzc2FyeQogaWYgWyAhIC1mICRIT1NUX0tFWV9SU0EgXTsgdGhlbgogICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggUlNBIGtleS4uLiIKLSAgICBta2RpciAtcCAkKGRpcm5hbWUgJEhPU1RfS0VZX1JTQSkKLSAgICBzc2gta2V5Z2VuIC1xIC1mICRIT1NUX0tFWV9SU0EgLU4gJycgLXQgcnNhCisgICAgZ2VuZXJhdGVfa2V5ICRIT1NUX0tFWV9SU0EgcnNhCiBmaQogaWYgWyAhIC1mICRIT1NUX0tFWV9FQ0RTQSBdOyB0aGVuCiAgICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBFQ0RTQSBrZXkuLi4iCi0gICAgbWtkaXIgLXAgJChkaXJuYW1lICRIT1NUX0tFWV9FQ0RTQSkKLSAgICBzc2gta2V5Z2VuIC1xIC1mICRIT1NUX0tFWV9FQ0RTQSAtTiAnJyAtdCBlY2RzYQorICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfRUNEU0EgZWNkc2EKIGZpCiBpZiBbICEgLWYgJEhPU1RfS0VZX0RTQSBdOyB0aGVuCiAgICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBEU0Ega2V5Li4uIgotICAgIG1rZGlyIC1wICQoZGlybmFtZSAkSE9TVF9LRVlfRFNBKQotICAgIHNzaC1rZXlnZW4gLXEgLWYgJEhPU1RfS0VZX0RTQSAtTiAnJyAtdCBkc2EKKyAgICBnZW5lcmF0ZV9rZXkgJEhPU1RfS0VZX0RTQSBkc2EKIGZpCiBpZiBbICEgLWYgJEhPU1RfS0VZX0VEMjU1MTkgXTsgdGhlbgogICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggRUQyNTUxOSBrZXkuLi4iCi0gICAgbWtkaXIgLXAgJChkaXJuYW1lICRIT1NUX0tFWV9FRDI1NTE5KQotICAgIHNzaC1rZXlnZW4gLXEgLWYgJEhPU1RfS0VZX0VEMjU1MTkgLU4gJycgLXQgZWQyNTUxOQorICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfRUQyNTUxOSBlZDI1NTE5CiBmaQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jb25maWcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jb25maWcKaW5kZXggZDQ4YmQyYi4uMzFmZTVkOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY29uZmlnCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NvbmZpZwpAQCAtMTA3LDcgKzEwNyw2IEBACiAjUHJpbnRMYXN0TG9nIHllcwogI1RDUEtlZXBBbGl2ZSB5ZXMKICNVc2VMb2dpbiBubwotVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiBzYW5kYm94ICMgRGVmYXVsdCBmb3IgbmV3IGluc3RhbGxhdGlvbnMuCiAjUGVybWl0VXNlckVudmlyb25tZW50IG5vCiBDb21wcmVzc2lvbiBubwogQ2xpZW50QWxpdmVJbnRlcnZhbCAxNQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNHAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNHAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTAxZWFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjRwMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi1TVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCi10aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCi1Tc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCi1hbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWUzMjYwNDU2NTdlODQyNTQxZDNmMzVhYWRhNDQyNTA3IgotCi1ERVBFTkRTID0gInpsaWIgb3BlbnNzbCIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAotICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1jaXBoZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1wa2NzMTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3NzaGQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmRiMmE4M2NhZjY2YTIwOGJiNzhkNmQyODdjZGFhMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjFmYzRhMTRlMjAyNDI5MzE4MTkyNGVkMjQ4NzJlNmYyZTA2MjkzZjNlODkyNmEzNzZiOGFlYzQ4MWYxOWQxIgotCi1pbmhlcml0IHVzZXJhZGQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLVVTRVJBRERfUEFSQU1fJHtQTn0tc3NoZCA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3NoZCAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHNzaGQiCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tc3NoZCA9ICJzc2hkIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc3NoZCA9ICJkZWZhdWx0cyA5IgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3NoZCA9ICJzc2hkLnNvY2tldCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0Ci0KLSMgTEZTIHN1cHBvcnQ6Ci1DRkxBR1MgKz0gIi1EX19GSUxFX09GRlNFVF9CSVRTPTY0IgotCi0jIGxvZ2luIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUVYVFJBX09FQ09ORiA9ICInTE9HSU5fUFJPR1JBTT0ke2Jhc2VfYmluZGlyfS9sb2dpbicgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXpsaWItdmVyc2lvbi1jaGVjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtcGF0aD0vdmFyL3J1bi9zc2hkIFwKLSAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9zc2ggXAotICAgICAgICAgICAgICAgIC0td2l0aC14YXV0aD0vdXNyL2Jpbi94YXV0aCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0cmlwIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgU2luY2Ugd2UgZG8gbm90IGRlcGVuZCBvbiBsaWJic2QsIHdlIGRvIG5vdCB3YW50IGNvbmZpZ3VyZSB0byB1c2UgaXQKLSMganVzdCBiZWNhdXNlIGl0IGZpbmRzIGxpYnV0aWwuaC4gIEJ1dCwgc3BlY2lmeWluZyAtLWRpc2FibGUtbGlidXRpbAotIyBjYXVzZXMgY29tcGlsZSBlcnJvcnMsIHNvLi4uCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gYWNfY3ZfaGVhZGVyX2xpYnV0aWxfaD1ubyIKLQotIyBwYXNzd2QgcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEFUSF9QQVNTV0RfUFJPRz0ke2JpbmRpcn0vcGFzc3dkIgotCi0jIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGxpYmJsb2NrZmlsZQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9tYWlsbG9ja19oPW5vIgotCi0jIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB1Y2xpYmMgYmVjYXVzZSBpbmNsdWRpbmcgc3RkaW8uaAotIyBwdWxscyBpbiBwdGhyZWFkcy5oIGFuZCBjYXVzZXMgY29uZmxpY3RzIGluIGZ1bmN0aW9uIHByb3RvdHlwZXMuCi0jIFRoaXMgcmVzdWx0cyBpbiBjb21waWxhdGlvbiBmYWlsdXJlLCBzbyB1bmxlc3MgdGhpcyBpcyBmaXhlZCwKLSMgZGlzYWJsZSBwYW0gZm9yIHVjbGliYy4KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmM9IiAtLXdpdGhvdXQtcGFtIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JZXhwb3J0IExEPSIke0NDfSIKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkX2NvbmZpZyAke0J9LwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaF9jb25maWcgJHtCfS8KLQlpZiBbICEgLWUgYWNpbmNsdWRlLm00IC1hIC1lIGFjbG9jYWwubTQgXTsgdGhlbgotCQljcCBhY2xvY2FsLm00IGFjaW5jbHVkZS5tNAotCWZpCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCi0gICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCi0gICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKLQkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KLQlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KLQotCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCi0JaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAotCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQotCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCi0JaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0Jc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCi0JY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCi1GSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLUZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgotRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgotRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKLUZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKLUZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCi1SREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgotCi1SUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKLVJQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LWtleWdlbiA9ICJzc2gta2V5Z2VuIgotCi1DT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKLUNPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCi1BTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgotQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNXAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNXAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Y2E2ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy41cDEuYmIKQEAgLTAsMCArMSwxNjggQEAKK1NVTU1BUlkgPSAiQSBzdWl0ZSBvZiBzZWN1cml0eS1yZWxhdGVkIG5ldHdvcmsgdXRpbGl0aWVzIGJhc2VkIG9uIFwKK3RoZSBTU0ggcHJvdG9jb2wgaW5jbHVkaW5nIHRoZSBzc2ggY2xpZW50IGFuZCBzc2hkIHNlcnZlciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBybG9naW4vcnNoL3JjcC90ZWxuZXQgcmVwbGFjZW1lbnQgKE9wZW5TU0gpIFwKK1NzaCAoU2VjdXJlIFNoZWxsKSBpcyBhIHByb2dyYW0gZm9yIGxvZ2dpbmcgaW50byBhIHJlbW90ZSBtYWNoaW5lIFwKK2FuZCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIG9uIGEgcmVtb3RlIG1hY2hpbmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NoLmNvbS8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZTMyNjA0NTY1N2U4NDI1NDFkM2YzNWFhZGE0NDI1MDciCisKKyMgb3BlbnNzbCAxLjEgcGF0Y2hlcyBhcmUgcHJvcG9zZWQgYXQgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS9wdWxsLzQ4CitERVBFTkRTID0gInpsaWIgb3BlbnNzbDEwIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm9wZW5ic2Qub3JnL3B1Yi9PcGVuQlNEL09wZW5TU0gvcG9ydGFibGUvb3BlbnNzaC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vc3NoX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGQuc29ja2V0IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRALnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc3NoZGdlbmtleXMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfc3NoZCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLWNpcGhlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLXBrY3MxMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3NzaGQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NTJmZGM3ZDgzOTJmMTEyYmVmMTFjYWNmN2U2OWUyMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODQ2ZTNjNWZhYjlmMDU0NzQwMGI0ZDJjMDE3OTkyZjkxNDIyMmIzZmQxZjhlZWU2YzdkYzZiYzVlNTlmOWYwIgorCitpbmhlcml0IHVzZXJhZGQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tc3NoZCA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3NoZCAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHNzaGQiCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tc3NoZCA9ICJzc2hkIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc3NoZCA9ICJkZWZhdWx0cyA5IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3NoZCA9ICJzc2hkLnNvY2tldCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CisKKyMgTEZTIHN1cHBvcnQ6CitDRkxBR1MgKz0gIi1EX19GSUxFX09GRlNFVF9CSVRTPTY0IgorCisjIGxvZ2luIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0VYVFJBX09FQ09ORiA9ICInTE9HSU5fUFJPR1JBTT0ke2Jhc2VfYmluZGlyfS9sb2dpbicgXAorICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXpsaWItdmVyc2lvbi1jaGVjayBcCisgICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtcGF0aD0vdmFyL3J1bi9zc2hkIFwKKyAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9zc2ggXAorICAgICAgICAgICAgICAgIC0td2l0aC14YXV0aD0vdXNyL2Jpbi94YXV0aCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0cmlwIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgU2luY2Ugd2UgZG8gbm90IGRlcGVuZCBvbiBsaWJic2QsIHdlIGRvIG5vdCB3YW50IGNvbmZpZ3VyZSB0byB1c2UgaXQKKyMganVzdCBiZWNhdXNlIGl0IGZpbmRzIGxpYnV0aWwuaC4gIEJ1dCwgc3BlY2lmeWluZyAtLWRpc2FibGUtbGlidXRpbAorIyBjYXVzZXMgY29tcGlsZSBlcnJvcnMsIHNvLi4uCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gYWNfY3ZfaGVhZGVyX2xpYnV0aWxfaD1ubyIKKworIyBwYXNzd2QgcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEFUSF9QQVNTV0RfUFJPRz0ke2JpbmRpcn0vcGFzc3dkIgorCisjIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGxpYmJsb2NrZmlsZQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9tYWlsbG9ja19oPW5vIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJZXhwb3J0IExEPSIke0NDfSIKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkX2NvbmZpZyAke0J9LworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaF9jb25maWcgJHtCfS8KKwlpZiBbICEgLWUgYWNpbmNsdWRlLm00IC1hIC1lIGFjbG9jYWwubTQgXTsgdGhlbgorCQljcCBhY2xvY2FsLm00IGFjaW5jbHVkZS5tNAorCWZpCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCisgICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCisgICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKKwkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KKwlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KKworCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCisJaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCisJY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCitGSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKK0ZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgorRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKK0ZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKK0ZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCitSREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgorCitSUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKK1JQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LWtleWdlbiA9ICJzc2gta2V5Z2VuIgorCitDT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKK0NPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCitBTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgorQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybS9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJtL2RlYmlhbi92ZXJzaW9uLXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTc0MzRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybS9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2gKQEAgLTAsMCArMSw0NjY2IEBACisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUub3JpZy9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNjUxLDYgKzE2NTEsOCBAQAorIAkJfQorIAl9CisgCisrJHNoYXJlZF9sZGZsYWcgLj0gIiAtV2wsLS12ZXJzaW9uLXNjcmlwdD1vcGVuc3NsLmxkIjsKKysKKyBvcGVuKElOLCc8TWFrZWZpbGUub3JnJykgfHwgZGllICJ1bmFibGUgdG8gcmVhZCBNYWtlZmlsZS5vcmc6JCFcbiI7CisgdW5saW5rKCIkTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gcmVtb3ZlIG9sZCAkTWFrZWZpbGUubmV3OiQhXG4iIGlmIC1lICIkTWFrZWZpbGUubmV3IjsKKyBvcGVuKE9VVCwiPiRNYWtlZmlsZS5uZXciKSB8fCBkaWUgInVuYWJsZSB0byBjcmVhdGUgJE1ha2VmaWxlLm5ldzokIVxuIjsKK0luZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIyOjE5OjA4LjYwMTgyNzI2NiArMDEwMAorQEAgLTAsMCArMSw0NjE1IEBACisrT1BFTlNTTF8xLjAuMCB7CisrCWdsb2JhbDoKKysJCUJJT19mX3NzbDsKKysJCUJJT19uZXdfYnVmZmVyX3NzbF9jb25uZWN0OworKwkJQklPX25ld19zc2w7CisrCQlCSU9fbmV3X3NzbF9jb25uZWN0OworKwkJQklPX3Byb3h5X3NzbF9jb3B5X3Nlc3Npb25faWQ7CisrCQlCSU9fc3NsX2NvcHlfc2Vzc2lvbl9pZDsKKysJCUJJT19zc2xfc2h1dGRvd247CisrCQlkMmlfU1NMX1NFU1NJT047CisrCQlEVExTdjFfY2xpZW50X21ldGhvZDsKKysJCURUTFN2MV9tZXRob2Q7CisrCQlEVExTdjFfc2VydmVyX21ldGhvZDsKKysJCUVSUl9sb2FkX1NTTF9zdHJpbmdzOworKwkJaTJkX1NTTF9TRVNTSU9OOworKwkJa3NzbF9idWlsZF9wcmluY2lwYWxfMjsKKysJCWtzc2xfY2dldF90a3Q7CisrCQlrc3NsX2NoZWNrX2F1dGhlbnQ7CisrCQlrc3NsX2N0eF9mcmVlOworKwkJa3NzbF9jdHhfbmV3OworKwkJa3NzbF9jdHhfc2V0a2V5OworKwkJa3NzbF9jdHhfc2V0cHJpbmM7CisrCQlrc3NsX2N0eF9zZXRzdHJpbmc7CisrCQlrc3NsX2N0eF9zaG93OworKwkJa3NzbF9lcnJfc2V0OworKwkJa3NzbF9rcmI1X2ZyZWVfZGF0YV9jb250ZW50czsKKysJCWtzc2xfc2dldF90a3Q7CisrCQlrc3NsX3NraXBfY29uZm91bmQ7CisrCQlrc3NsX3ZhbGlkYXRlX3RpbWVzOworKwkJUEVNX3JlYWRfYmlvX1NTTF9TRVNTSU9OOworKwkJUEVNX3JlYWRfU1NMX1NFU1NJT047CisrCQlQRU1fd3JpdGVfYmlvX1NTTF9TRVNTSU9OOworKwkJUEVNX3dyaXRlX1NTTF9TRVNTSU9OOworKwkJU1NMX2FjY2VwdDsKKysJCVNTTF9hZGRfY2xpZW50X0NBOworKwkJU1NMX2FkZF9kaXJfY2VydF9zdWJqZWN0c190b19zdGFjazsKKysJCVNTTF9hZGRfZGlyX2NlcnRfc3VianNfdG9fc3RrOworKwkJU1NMX2FkZF9maWxlX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7CisrCQlTU0xfYWRkX2ZpbGVfY2VydF9zdWJqc190b19zdGs7CisrCQlTU0xfYWxlcnRfZGVzY19zdHJpbmc7CisrCQlTU0xfYWxlcnRfZGVzY19zdHJpbmdfbG9uZzsKKysJCVNTTF9hbGVydF90eXBlX3N0cmluZzsKKysJCVNTTF9hbGVydF90eXBlX3N0cmluZ19sb25nOworKwkJU1NMX2NhbGxiYWNrX2N0cmw7CisrCQlTU0xfY2hlY2tfcHJpdmF0ZV9rZXk7CisrCQlTU0xfQ0lQSEVSX2Rlc2NyaXB0aW9uOworKwkJU1NMX0NJUEhFUl9nZXRfYml0czsKKysJCVNTTF9DSVBIRVJfZ2V0X25hbWU7CisrCQlTU0xfQ0lQSEVSX2dldF92ZXJzaW9uOworKwkJU1NMX2NsZWFyOworKwkJU1NMX0NPTVBfYWRkX2NvbXByZXNzaW9uX21ldGhvZDsKKysJCVNTTF9DT01QX2dldF9jb21wcmVzc2lvbl9tZXRob2RzOworKwkJU1NMX0NPTVBfZ2V0X2NvbXByZXNzX21ldGhvZHM7CisrCQlTU0xfQ09NUF9nZXRfbmFtZTsKKysJCVNTTF9jb25uZWN0OworKwkJU1NMX2NvcHlfc2Vzc2lvbl9pZDsKKysJCVNTTF9jdHJsOworKwkJU1NMX0NUWF9hZGRfY2xpZW50X0NBOworKwkJU1NMX0NUWF9hZGRfc2Vzc2lvbjsKKysJCVNTTF9DVFhfY2FsbGJhY2tfY3RybDsKKysJCVNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXk7CisrCQlTU0xfQ1RYX2N0cmw7CisrCQlTU0xfQ1RYX2ZsdXNoX3Nlc3Npb25zOworKwkJU1NMX0NUWF9mcmVlOworKwkJU1NMX0NUWF9nZXRfY2VydF9zdG9yZTsKKysJCVNTTF9DVFhfZ2V0X2NsaWVudF9DQV9saXN0OworKwkJU1NMX0NUWF9nZXRfY2xpZW50X2NlcnRfY2I7CisrCQlTU0xfQ1RYX2dldF9leF9kYXRhOworKwkJU1NMX0NUWF9nZXRfZXhfbmV3X2luZGV4OworKwkJU1NMX0NUWF9nZXRfaW5mb19jYWxsYmFjazsKKysJCVNTTF9DVFhfZ2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX0NUWF9nZXRfdGltZW91dDsKKysJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9jYWxsYmFjazsKKysJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9tb2RlOworKwkJU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnM7CisrCQlTU0xfQ1RYX25ldzsKKysJCVNTTF9DVFhfcmVtb3ZlX3Nlc3Npb247CisrCQlTU0xfQ1RYX3Nlc3NfZ2V0X2dldF9jYjsKKysJCVNTTF9DVFhfc2Vzc19nZXRfbmV3X2NiOworKwkJU1NMX0NUWF9zZXNzX2dldF9yZW1vdmVfY2I7CisrCQlTU0xfQ1RYX3Nlc3Npb25zOworKwkJU1NMX0NUWF9zZXNzX3NldF9nZXRfY2I7CisrCQlTU0xfQ1RYX3Nlc3Nfc2V0X25ld19jYjsKKysJCVNTTF9DVFhfc2Vzc19zZXRfcmVtb3ZlX2NiOworKwkJU1NMX0NUWF9zZXQxX3BhcmFtOworKwkJU1NMX0NUWF9zZXRfY2VydF9zdG9yZTsKKysJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2I7CisrCQlTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdDsKKysJCVNTTF9DVFhfc2V0X2NsaWVudF9DQV9saXN0OworKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfY2I7CisrCQlTU0xfQ1RYX3NldF9jbGllbnRfY2VydF9lbmdpbmU7CisrCQlTU0xfQ1RYX3NldF9jb29raWVfZ2VuZXJhdGVfY2I7CisrCQlTU0xfQ1RYX3NldF9jb29raWVfdmVyaWZ5X2NiOworKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2I7CisrCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YTsKKysJCVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzOworKwkJU1NMX0NUWF9zZXRfZGVmX3Bhc3N3ZF9jYl91ZDsKKysJCVNTTF9DVFhfc2V0X2RlZl92ZXJpZnlfcGF0aHM7CisrCQlTU0xfQ1RYX3NldF9leF9kYXRhOworKwkJU1NMX0NUWF9zZXRfZ2VuZXJhdGVfc2Vzc2lvbl9pZDsKKysJCVNTTF9DVFhfc2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9tc2dfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9wc2tfY2xpZW50X2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfcHNrX3NlcnZlcl9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3B1cnBvc2U7CisrCQlTU0xfQ1RYX3NldF9xdWlldF9zaHV0ZG93bjsKKysJCVNTTF9DVFhfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKKysJCVNTTF9DVFhfc2V0X3NzbF92ZXJzaW9uOworKwkJU1NMX0NUWF9zZXRfdGltZW91dDsKKysJCVNTTF9DVFhfc2V0X3RtcF9kaF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3RtcF9lY2RoX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3RydXN0OworKwkJU1NMX0NUWF9zZXRfdmVyaWZ5OworKwkJU1NMX0NUWF9zZXRfdmVyaWZ5X2RlcHRoOworKwkJU1NMX0NUWF91c2VfY2VydF9jaGFpbl9maWxlOworKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGU7CisrCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9BU04xOworKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2ZpbGU7CisrCQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5OworKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9BU04xOworKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlOworKwkJU1NMX0NUWF91c2VfcHNrX2lkZW50aXR5X2hpbnQ7CisrCQlTU0xfQ1RYX3VzZV9SU0FQcml2YXRlS2V5OworKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleV9BU04xOworKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleV9maWxlOworKwkJU1NMX2RvX2hhbmRzaGFrZTsKKysJCVNTTF9kdXA7CisrCQlTU0xfZHVwX0NBX2xpc3Q7CisrCQlTU0xlYXlfYWRkX3NzbF9hbGdvcml0aG1zOworKwkJU1NMX2ZyZWU7CisrCQlTU0xfZ2V0MV9zZXNzaW9uOworKwkJU1NMX2dldF9jZXJ0aWZpY2F0ZTsKKysJCVNTTF9nZXRfY2lwaGVyX2xpc3Q7CisrCQlTU0xfZ2V0X2NpcGhlcnM7CisrCQlTU0xfZ2V0X2NsaWVudF9DQV9saXN0OworKwkJU1NMX2dldF9jdXJyZW50X2NpcGhlcjsKKysJCVNTTF9nZXRfY3VycmVudF9jb21wcmVzc2lvbjsKKysJCVNTTF9nZXRfY3VycmVudF9leHBhbnNpb247CisrCQlTU0xfZ2V0X2RlZmF1bHRfdGltZW91dDsKKysJCVNTTF9nZXRfZXJyb3I7CisrCQlTU0xfZ2V0X2V4X2RhdGE7CisrCQlTU0xfZ2V0X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4OworKwkJU1NMX2dldF9leF9kX1g1MDlfU1RPUkVfQ1RYX2lkeDsKKysJCVNTTF9nZXRfZXhfbmV3X2luZGV4OworKwkJU1NMX2dldF9mZDsKKysJCVNTTF9nZXRfZmluaXNoZWQ7CisrCQlTU0xfZ2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbjsKKysJCVNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZTsKKysJCVNTTF9nZXRfcGVlcl9maW5pc2hlZDsKKysJCVNTTF9nZXRfcHJpdmF0ZWtleTsKKysJCVNTTF9nZXRfcHNrX2lkZW50aXR5OworKwkJU1NMX2dldF9wc2tfaWRlbnRpdHlfaGludDsKKysJCVNTTF9nZXRfcXVpZXRfc2h1dGRvd247CisrCQlTU0xfZ2V0X3JiaW87CisrCQlTU0xfZ2V0X3JlYWRfYWhlYWQ7CisrCQlTU0xfZ2V0X3JmZDsKKysJCVNTTF9nZXRfc2VydmVybmFtZTsKKysJCVNTTF9nZXRfc2VydmVybmFtZV90eXBlOworKwkJU1NMX2dldF9zZXNzaW9uOworKwkJU1NMX2dldF9zaGFyZWRfY2lwaGVyczsKKysJCVNTTF9nZXRfc2h1dGRvd247CisrCQlTU0xfZ2V0X1NTTF9DVFg7CisrCQlTU0xfZ2V0X3NzbF9tZXRob2Q7CisrCQlTU0xfZ2V0X3ZlcmlmeV9jYWxsYmFjazsKKysJCVNTTF9nZXRfdmVyaWZ5X2RlcHRoOworKwkJU1NMX2dldF92ZXJpZnlfbW9kZTsKKysJCVNTTF9nZXRfdmVyaWZ5X3Jlc3VsdDsKKysJCVNTTF9nZXRfdmVyc2lvbjsKKysJCVNTTF9nZXRfd2JpbzsKKysJCVNTTF9nZXRfd2ZkOworKwkJU1NMX2hhc19tYXRjaGluZ19zZXNzaW9uX2lkOworKwkJU1NMX2xpYnJhcnlfaW5pdDsKKysJCVNTTF9sb2FkX2NsaWVudF9DQV9maWxlOworKwkJU1NMX2xvYWRfZXJyb3Jfc3RyaW5nczsKKysJCVNTTF9uZXc7CisrCQlTU0xfcGVlazsKKysJCVNTTF9wZW5kaW5nOworKwkJU1NMX3JlYWQ7CisrCQlTU0xfcmVuZWdvdGlhdGU7CisrCQlTU0xfcmVuZWdvdGlhdGVfcGVuZGluZzsKKysJCVNTTF9yc3RhdGVfc3RyaW5nOworKwkJU1NMX3JzdGF0ZV9zdHJpbmdfbG9uZzsKKysJCVNTTF9TRVNTSU9OX2NtcDsKKysJCVNTTF9TRVNTSU9OX2ZyZWU7CisrCQlTU0xfU0VTU0lPTl9nZXRfZXhfZGF0YTsKKysJCVNTTF9TRVNTSU9OX2dldF9leF9uZXdfaW5kZXg7CisrCQlTU0xfU0VTU0lPTl9nZXRfaWQ7CisrCQlTU0xfU0VTU0lPTl9nZXRfdGltZTsKKysJCVNTTF9TRVNTSU9OX2dldF90aW1lb3V0OworKwkJU1NMX1NFU1NJT05faGFzaDsKKysJCVNTTF9TRVNTSU9OX25ldzsKKysJCVNTTF9TRVNTSU9OX3ByaW50OworKwkJU1NMX1NFU1NJT05fcHJpbnRfZnA7CisrCQlTU0xfU0VTU0lPTl9zZXRfZXhfZGF0YTsKKysJCVNTTF9TRVNTSU9OX3NldF90aW1lOworKwkJU1NMX1NFU1NJT05fc2V0X3RpbWVvdXQ7CisrCQlTU0xfc2V0MV9wYXJhbTsKKysJCVNTTF9zZXRfYWNjZXB0X3N0YXRlOworKwkJU1NMX3NldF9iaW87CisrCQlTU0xfc2V0X2NpcGhlcl9saXN0OworKwkJU1NMX3NldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9zZXRfY29ubmVjdF9zdGF0ZTsKKysJCVNTTF9zZXRfZXhfZGF0YTsKKysJCVNTTF9zZXRfZmQ7CisrCQlTU0xfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7CisrCQlTU0xfc2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfc2V0X21zZ19jYWxsYmFjazsKKysJCVNTTF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKKysJCVNTTF9zZXRfcHNrX3NlcnZlcl9jYWxsYmFjazsKKysJCVNTTF9zZXRfcHVycG9zZTsKKysJCVNTTF9zZXRfcXVpZXRfc2h1dGRvd247CisrCQlTU0xfc2V0X3JlYWRfYWhlYWQ7CisrCQlTU0xfc2V0X3JmZDsKKysJCVNTTF9zZXRfc2Vzc2lvbjsKKysJCVNTTF9zZXRfc2Vzc2lvbl9pZF9jb250ZXh0OworKwkJU1NMX3NldF9zZXNzaW9uX3NlY3JldF9jYjsKKysJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0OworKwkJU1NMX3NldF9zZXNzaW9uX3RpY2tldF9leHRfY2I7CisrCQlTU0xfc2V0X3NodXRkb3duOworKwkJU1NMX3NldF9TU0xfQ1RYOworKwkJU1NMX3NldF9zc2xfbWV0aG9kOworKwkJU1NMX3NldF90bXBfZGhfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3RtcF9lY2RoX2NhbGxiYWNrOworKwkJU1NMX3NldF90bXBfcnNhX2NhbGxiYWNrOworKwkJU1NMX3NldF90cnVzdDsKKysJCVNTTF9zZXRfdmVyaWZ5OworKwkJU1NMX3NldF92ZXJpZnlfZGVwdGg7CisrCQlTU0xfc2V0X3ZlcmlmeV9yZXN1bHQ7CisrCQlTU0xfc2V0X3dmZDsKKysJCVNTTF9zaHV0ZG93bjsKKysJCVNTTF9zdGF0ZTsKKysJCVNTTF9zdGF0ZV9zdHJpbmc7CisrCQlTU0xfc3RhdGVfc3RyaW5nX2xvbmc7CisrCQlTU0xfdXNlX2NlcnRpZmljYXRlOworKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZV9BU04xOworKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOworKwkJU1NMX3VzZV9Qcml2YXRlS2V5OworKwkJU1NMX3VzZV9Qcml2YXRlS2V5X0FTTjE7CisrCQlTU0xfdXNlX1ByaXZhdGVLZXlfZmlsZTsKKysJCVNTTF91c2VfcHNrX2lkZW50aXR5X2hpbnQ7CisrCQlTU0xfdXNlX1JTQVByaXZhdGVLZXk7CisrCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF91c2VfUlNBUHJpdmF0ZUtleV9maWxlOworKwkJU1NMdjIzX2NsaWVudF9tZXRob2Q7CisrCQlTU0x2MjNfbWV0aG9kOworKwkJU1NMdjIzX3NlcnZlcl9tZXRob2Q7CisrCQlTU0x2Ml9jbGllbnRfbWV0aG9kOworKwkJU1NMdjJfbWV0aG9kOworKwkJU1NMdjJfc2VydmVyX21ldGhvZDsKKysJCVNTTHYzX2NsaWVudF9tZXRob2Q7CisrCQlTU0x2M19tZXRob2Q7CisrCQlTU0x2M19zZXJ2ZXJfbWV0aG9kOworKwkJU1NMX3ZlcnNpb247CisrCQlTU0xfd2FudDsKKysJCVNTTF93cml0ZTsKKysJCVRMU3YxX2NsaWVudF9tZXRob2Q7CisrCQlUTFN2MV9tZXRob2Q7CisrCQlUTFN2MV9zZXJ2ZXJfbWV0aG9kOworKworKworKwkJU1NMZWF5OworKwkJU1NMZWF5X3ZlcnNpb247CisrCQlBU04xX0JJVF9TVFJJTkdfYXNuMV9tZXRoOworKwkJQVNOMV9IRUFERVJfZnJlZTsKKysJCUFTTjFfSEVBREVSX25ldzsKKysJCUFTTjFfSUE1U1RSSU5HX2FzbjFfbWV0aDsKKysJCUFTTjFfSU5URUdFUl9nZXQ7CisrCQlBU04xX0lOVEVHRVJfc2V0OworKwkJQVNOMV9JTlRFR0VSX3RvX0JOOworKwkJQVNOMV9PQkpFQ1RfY3JlYXRlOworKwkJQVNOMV9PQkpFQ1RfZnJlZTsKKysJCUFTTjFfT0JKRUNUX25ldzsKKysJCUFTTjFfUFJJTlRBQkxFX3R5cGU7CisrCQlBU04xX1NUUklOR19jbXA7CisrCQlBU04xX1NUUklOR19kdXA7CisrCQlBU04xX1NUUklOR19mcmVlOworKwkJQVNOMV9TVFJJTkdfbmV3OworKwkJQVNOMV9TVFJJTkdfcHJpbnQ7CisrCQlBU04xX1NUUklOR19zZXQ7CisrCQlBU04xX1NUUklOR190eXBlX25ldzsKKysJCUFTTjFfVFlQRV9mcmVlOworKwkJQVNOMV9UWVBFX25ldzsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX3RvX3N0cmluZzsKKysJCUFTTjFfVVRDVElNRV9jaGVjazsKKysJCUFTTjFfVVRDVElNRV9wcmludDsKKysJCUFTTjFfVVRDVElNRV9zZXQ7CisrCQlBU04xX2NoZWNrX2luZmluaXRlX2VuZDsKKysJCUFTTjFfZDJpX2JpbzsKKysJCUFTTjFfZDJpX2ZwOworKwkJQVNOMV9kaWdlc3Q7CisrCQlBU04xX2R1cDsKKysJCUFTTjFfZ2V0X29iamVjdDsKKysJCUFTTjFfaTJkX2JpbzsKKysJCUFTTjFfaTJkX2ZwOworKwkJQVNOMV9vYmplY3Rfc2l6ZTsKKysJCUFTTjFfcGFyc2U7CisrCQlBU04xX3B1dF9vYmplY3Q7CisrCQlBU04xX3NpZ247CisrCQlBU04xX3ZlcmlmeTsKKysJCUJGX2NiY19lbmNyeXB0OworKwkJQkZfY2ZiNjRfZW5jcnlwdDsKKysJCUJGX2VjYl9lbmNyeXB0OworKwkJQkZfZW5jcnlwdDsKKysJCUJGX29mYjY0X2VuY3J5cHQ7CisrCQlCRl9vcHRpb25zOworKwkJQkZfc2V0X2tleTsKKysJCUJJT19DT05ORUNUX2ZyZWU7CisrCQlCSU9fQ09OTkVDVF9uZXc7CisrCQlCSU9fYWNjZXB0OworKwkJQklPX2N0cmw7CisrCQlCSU9faW50X2N0cmw7CisrCQlCSU9fZGVidWdfY2FsbGJhY2s7CisrCQlCSU9fZHVtcDsKKysJCUJJT19kdXBfY2hhaW47CisrCQlCSU9fZl9iYXNlNjQ7CisrCQlCSU9fZl9idWZmZXI7CisrCQlCSU9fZl9jaXBoZXI7CisrCQlCSU9fZl9tZDsKKysJCUJJT19mX251bGw7CisrCQlCSU9fZl9wcm94eV9zZXJ2ZXI7CisrCQlCSU9fZmRfbm9uX2ZhdGFsX2Vycm9yOworKwkJQklPX2ZkX3Nob3VsZF9yZXRyeTsKKysJCUJJT19maW5kX3R5cGU7CisrCQlCSU9fZnJlZTsKKysJCUJJT19mcmVlX2FsbDsKKysJCUJJT19nZXRfYWNjZXB0X3NvY2tldDsKKysJCUJJT19nZXRfZmlsdGVyX2JpbzsKKysJCUJJT19nZXRfaG9zdF9pcDsKKysJCUJJT19nZXRfcG9ydDsKKysJCUJJT19nZXRfcmV0cnlfQklPOworKwkJQklPX2dldF9yZXRyeV9yZWFzb247CisrCQlCSU9fZ2V0aG9zdGJ5bmFtZTsKKysJCUJJT19nZXRzOworKwkJQklPX25ldzsKKysJCUJJT19uZXdfYWNjZXB0OworKwkJQklPX25ld19jb25uZWN0OworKwkJQklPX25ld19mZDsKKysJCUJJT19uZXdfZmlsZTsKKysJCUJJT19uZXdfZnA7CisrCQlCSU9fbmV3X3NvY2tldDsKKysJCUJJT19wb3A7CisrCQlCSU9fcHJpbnRmOworKwkJQklPX3B1c2g7CisrCQlCSU9fcHV0czsKKysJCUJJT19yZWFkOworKwkJQklPX3NfYWNjZXB0OworKwkJQklPX3NfY29ubmVjdDsKKysJCUJJT19zX2ZkOworKwkJQklPX3NfZmlsZTsKKysJCUJJT19zX21lbTsKKysJCUJJT19zX251bGw7CisrCQlCSU9fc19wcm94eV9jbGllbnQ7CisrCQlCSU9fc19zb2NrZXQ7CisrCQlCSU9fc2V0OworKwkJQklPX3NldF9jaXBoZXI7CisrCQlCSU9fc2V0X3RjcF9uZGVsYXk7CisrCQlCSU9fc29ja19jbGVhbnVwOworKwkJQklPX3NvY2tfZXJyb3I7CisrCQlCSU9fc29ja19pbml0OworKwkJQklPX3NvY2tfbm9uX2ZhdGFsX2Vycm9yOworKwkJQklPX3NvY2tfc2hvdWxkX3JldHJ5OworKwkJQklPX3NvY2tldF9pb2N0bDsKKysJCUJJT193cml0ZTsKKysJCUJOX0NUWF9mcmVlOworKwkJQk5fQ1RYX25ldzsKKysJCUJOX01PTlRfQ1RYX2ZyZWU7CisrCQlCTl9NT05UX0NUWF9uZXc7CisrCQlCTl9NT05UX0NUWF9zZXQ7CisrCQlCTl9hZGQ7CisrCQlCTl9hZGRfd29yZDsKKysJCUJOX2hleDJibjsKKysJCUJOX2JpbjJibjsKKysJCUJOX2JuMmhleDsKKysJCUJOX2JuMmJpbjsKKysJCUJOX2NsZWFyOworKwkJQk5fY2xlYXJfYml0OworKwkJQk5fY2xlYXJfZnJlZTsKKysJCUJOX2NtcDsKKysJCUJOX2NvcHk7CisrCQlCTl9kaXY7CisrCQlCTl9kaXZfd29yZDsKKysJCUJOX2R1cDsKKysJCUJOX2ZyZWU7CisrCQlCTl9mcm9tX21vbnRnb21lcnk7CisrCQlCTl9nY2Q7CisrCQlCTl9nZW5lcmF0ZV9wcmltZTsKKysJCUJOX2dldF93b3JkOworKwkJQk5faXNfYml0X3NldDsKKysJCUJOX2lzX3ByaW1lOworKwkJQk5fbHNoaWZ0OworKwkJQk5fbHNoaWZ0MTsKKysJCUJOX21hc2tfYml0czsKKysJCUJOX21vZDsKKysJCUJOX21vZF9leHA7CisrCQlCTl9tb2RfZXhwX21vbnQ7CisrCQlCTl9tb2RfZXhwX3NpbXBsZTsKKysJCUJOX21vZF9pbnZlcnNlOworKwkJQk5fbW9kX211bDsKKysJCUJOX21vZF9tdWxfbW9udGdvbWVyeTsKKysJCUJOX21vZF93b3JkOworKwkJQk5fbXVsOworKwkJQk5fbmV3OworKwkJQk5fbnVtX2JpdHM7CisrCQlCTl9udW1fYml0c193b3JkOworKwkJQk5fb3B0aW9uczsKKysJCUJOX3ByaW50OworKwkJQk5fcHJpbnRfZnA7CisrCQlCTl9yYW5kOworKwkJQk5fcmVjaXByb2NhbDsKKysJCUJOX3JzaGlmdDsKKysJCUJOX3JzaGlmdDE7CisrCQlCTl9zZXRfYml0OworKwkJQk5fc2V0X3dvcmQ7CisrCQlCTl9zcXI7CisrCQlCTl9zdWI7CisrCQlCTl90b19BU04xX0lOVEVHRVI7CisrCQlCTl91Y21wOworKwkJQk5fdmFsdWVfb25lOworKwkJQlVGX01FTV9mcmVlOworKwkJQlVGX01FTV9ncm93OworKwkJQlVGX01FTV9uZXc7CisrCQlCVUZfc3RyZHVwOworKwkJQ09ORl9mcmVlOworKwkJQ09ORl9nZXRfbnVtYmVyOworKwkJQ09ORl9nZXRfc2VjdGlvbjsKKysJCUNPTkZfZ2V0X3N0cmluZzsKKysJCUNPTkZfbG9hZDsKKysJCUNSWVBUT19hZGRfbG9jazsKKysJCUNSWVBUT19kYmdfZnJlZTsKKysJCUNSWVBUT19kYmdfbWFsbG9jOworKwkJQ1JZUFRPX2RiZ19yZWFsbG9jOworKwkJQ1JZUFRPX2RiZ19yZW1hbGxvYzsKKysJCUNSWVBUT19mcmVlOworKwkJQ1JZUFRPX2dldF9hZGRfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfaWRfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2xvY2tfbmFtZTsKKysJCUNSWVBUT19nZXRfbG9ja2luZ19jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfbWVtX2Z1bmN0aW9uczsKKysJCUNSWVBUT19sb2NrOworKwkJQ1JZUFRPX21hbGxvYzsKKysJCUNSWVBUT19tZW1fY3RybDsKKysJCUNSWVBUT19tZW1fbGVha3M7CisrCQlDUllQVE9fbWVtX2xlYWtzX2NiOworKwkJQ1JZUFRPX21lbV9sZWFrc19mcDsKKysJCUNSWVBUT19yZWFsbG9jOworKwkJQ1JZUFRPX3JlbWFsbG9jOworKwkJQ1JZUFRPX3NldF9hZGRfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfaWRfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2xvY2tpbmdfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X21lbV9mdW5jdGlvbnM7CisrCQlDUllQVE9fdGhyZWFkX2lkOworKwkJREhfY2hlY2s7CisrCQlESF9jb21wdXRlX2tleTsKKysJCURIX2ZyZWU7CisrCQlESF9nZW5lcmF0ZV9rZXk7CisrCQlESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzOworKwkJREhfbmV3OworKwkJREhfc2l6ZTsKKysJCURIcGFyYW1zX3ByaW50OworKwkJREhwYXJhbXNfcHJpbnRfZnA7CisrCQlEU0FfZnJlZTsKKysJCURTQV9nZW5lcmF0ZV9rZXk7CisrCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyczsKKysJCURTQV9pc19wcmltZTsKKysJCURTQV9uZXc7CisrCQlEU0FfcHJpbnQ7CisrCQlEU0FfcHJpbnRfZnA7CisrCQlEU0Ffc2lnbjsKKysJCURTQV9zaWduX3NldHVwOworKwkJRFNBX3NpemU7CisrCQlEU0FfdmVyaWZ5OworKwkJRFNBcGFyYW1zX3ByaW50OworKwkJRFNBcGFyYW1zX3ByaW50X2ZwOworKwkJRVJSX2NsZWFyX2Vycm9yOworKwkJRVJSX2Vycm9yX3N0cmluZzsKKysJCUVSUl9mcmVlX3N0cmluZ3M7CisrCQlFUlJfZnVuY19lcnJvcl9zdHJpbmc7CisrCQlFUlJfZ2V0X2Vycl9zdGF0ZV90YWJsZTsKKysJCUVSUl9nZXRfZXJyb3I7CisrCQlFUlJfZ2V0X2Vycm9yX2xpbmU7CisrCQlFUlJfZ2V0X3N0YXRlOworKwkJRVJSX2dldF9zdHJpbmdfdGFibGU7CisrCQlFUlJfbGliX2Vycm9yX3N0cmluZzsKKysJCUVSUl9sb2FkX0FTTjFfc3RyaW5nczsKKysJCUVSUl9sb2FkX0JJT19zdHJpbmdzOworKwkJRVJSX2xvYWRfQk5fc3RyaW5nczsKKysJCUVSUl9sb2FkX0JVRl9zdHJpbmdzOworKwkJRVJSX2xvYWRfQ09ORl9zdHJpbmdzOworKwkJRVJSX2xvYWRfREhfc3RyaW5nczsKKysJCUVSUl9sb2FkX0RTQV9zdHJpbmdzOworKwkJRVJSX2xvYWRfRVJSX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9FVlBfc3RyaW5nczsKKysJCUVSUl9sb2FkX09CSl9zdHJpbmdzOworKwkJRVJSX2xvYWRfUEVNX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9QUk9YWV9zdHJpbmdzOworKwkJRVJSX2xvYWRfUlNBX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9YNTA5X3N0cmluZ3M7CisrCQlFUlJfbG9hZF9jcnlwdG9fc3RyaW5nczsKKysJCUVSUl9sb2FkX3N0cmluZ3M7CisrCQlFUlJfcGVla19lcnJvcjsKKysJCUVSUl9wZWVrX2Vycm9yX2xpbmU7CisrCQlFUlJfcHJpbnRfZXJyb3JzOworKwkJRVJSX3ByaW50X2Vycm9yc19mcDsKKysJCUVSUl9wdXRfZXJyb3I7CisrCQlFUlJfcmVhc29uX2Vycm9yX3N0cmluZzsKKysJCUVSUl9yZW1vdmVfc3RhdGU7CisrCQlFVlBfQnl0ZXNUb0tleTsKKysJCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXA7CisrCQlFVlBfQ2lwaGVyRmluYWw7CisrCQlFVlBfQ2lwaGVySW5pdDsKKysJCUVWUF9DaXBoZXJVcGRhdGU7CisrCQlFVlBfRGVjb2RlQmxvY2s7CisrCQlFVlBfRGVjb2RlRmluYWw7CisrCQlFVlBfRGVjb2RlSW5pdDsKKysJCUVWUF9EZWNvZGVVcGRhdGU7CisrCQlFVlBfRGVjcnlwdEZpbmFsOworKwkJRVZQX0RlY3J5cHRJbml0OworKwkJRVZQX0RlY3J5cHRVcGRhdGU7CisrCQlFVlBfRGlnZXN0RmluYWw7CisrCQlFVlBfRGlnZXN0SW5pdDsKKysJCUVWUF9EaWdlc3RVcGRhdGU7CisrCQlFVlBfRW5jb2RlQmxvY2s7CisrCQlFVlBfRW5jb2RlRmluYWw7CisrCQlFVlBfRW5jb2RlSW5pdDsKKysJCUVWUF9FbmNvZGVVcGRhdGU7CisrCQlFVlBfRW5jcnlwdEZpbmFsOworKwkJRVZQX0VuY3J5cHRJbml0OworKwkJRVZQX0VuY3J5cHRVcGRhdGU7CisrCQlFVlBfT3BlbkZpbmFsOworKwkJRVZQX09wZW5Jbml0OworKwkJRVZQX1BLRVlfYXNzaWduOworKwkJRVZQX1BLRVlfY29weV9wYXJhbWV0ZXJzOworKwkJRVZQX1BLRVlfZnJlZTsKKysJCUVWUF9QS0VZX21pc3NpbmdfcGFyYW1ldGVyczsKKysJCUVWUF9QS0VZX25ldzsKKysJCUVWUF9QS0VZX3NhdmVfcGFyYW1ldGVyczsKKysJCUVWUF9QS0VZX3NpemU7CisrCQlFVlBfUEtFWV90eXBlOworKwkJRVZQX1NlYWxGaW5hbDsKKysJCUVWUF9TZWFsSW5pdDsKKysJCUVWUF9TaWduRmluYWw7CisrCQlFVlBfVmVyaWZ5RmluYWw7CisrCQlFVlBfYWRkX2FsaWFzOworKwkJRVZQX2FkZF9jaXBoZXI7CisrCQlFVlBfYWRkX2RpZ2VzdDsKKysJCUVWUF9iZl9jYmM7CisrCQlFVlBfYmZfY2ZiNjQ7CisrCQlFVlBfYmZfZWNiOworKwkJRVZQX2JmX29mYjsKKysJCUVWUF9jbGVhbnVwOworKwkJRVZQX2Rlc19jYmM7CisrCQlFVlBfZGVzX2NmYjY0OworKwkJRVZQX2Rlc19lY2I7CisrCQlFVlBfZGVzX2VkZTsKKysJCUVWUF9kZXNfZWRlMzsKKysJCUVWUF9kZXNfZWRlM19jYmM7CisrCQlFVlBfZGVzX2VkZTNfY2ZiNjQ7CisrCQlFVlBfZGVzX2VkZTNfb2ZiOworKwkJRVZQX2Rlc19lZGVfY2JjOworKwkJRVZQX2Rlc19lZGVfY2ZiNjQ7CisrCQlFVlBfZGVzX2VkZV9vZmI7CisrCQlFVlBfZGVzX29mYjsKKysJCUVWUF9kZXN4X2NiYzsKKysJCUVWUF9kc3M7CisrCQlFVlBfZHNzMTsKKysJCUVWUF9lbmNfbnVsbDsKKysJCUVWUF9nZXRfY2lwaGVyYnluYW1lOworKwkJRVZQX2dldF9kaWdlc3RieW5hbWU7CisrCQlFVlBfZ2V0X3B3X3Byb21wdDsKKysJCUVWUF9pZGVhX2NiYzsKKysJCUVWUF9pZGVhX2NmYjY0OworKwkJRVZQX2lkZWFfZWNiOworKwkJRVZQX2lkZWFfb2ZiOworKwkJRVZQX21kMjsKKysJCUVWUF9tZDU7CisrCQlFVlBfbWRfbnVsbDsKKysJCUVWUF9yYzJfY2JjOworKwkJRVZQX3JjMl9jZmI2NDsKKysJCUVWUF9yYzJfZWNiOworKwkJRVZQX3JjMl9vZmI7CisrCQlFVlBfcmM0OworKwkJRVZQX3JlYWRfcHdfc3RyaW5nOworKwkJRVZQX3NldF9wd19wcm9tcHQ7CisrCQlFVlBfc2hhOworKwkJRVZQX3NoYTE7CisrCQlNRDI7CisrCQlNRDJfRmluYWw7CisrCQlNRDJfSW5pdDsKKysJCU1EMl9VcGRhdGU7CisrCQlNRDJfb3B0aW9uczsKKysJCU1ENTsKKysJCU1ENV9GaW5hbDsKKysJCU1ENV9Jbml0OworKwkJTUQ1X1VwZGF0ZTsKKysJCU1EQzI7CisrCQlNREMyX0ZpbmFsOworKwkJTURDMl9Jbml0OworKwkJTURDMl9VcGRhdGU7CisrCQlORVRTQ0FQRV9TUEtBQ19mcmVlOworKwkJTkVUU0NBUEVfU1BLQUNfbmV3OworKwkJTkVUU0NBUEVfU1BLSV9mcmVlOworKwkJTkVUU0NBUEVfU1BLSV9uZXc7CisrCQlORVRTQ0FQRV9TUEtJX3NpZ247CisrCQlORVRTQ0FQRV9TUEtJX3ZlcmlmeTsKKysJCU9CSl9hZGRfb2JqZWN0OworKwkJT0JKX2JzZWFyY2g7CisrCQlPQkpfY2xlYW51cDsKKysJCU9CSl9jbXA7CisrCQlPQkpfY3JlYXRlOworKwkJT0JKX2R1cDsKKysJCU9CSl9sbjJuaWQ7CisrCQlPQkpfbmV3X25pZDsKKysJCU9CSl9uaWQybG47CisrCQlPQkpfbmlkMm9iajsKKysJCU9CSl9uaWQyc247CisrCQlPQkpfb2JqMm5pZDsKKysJCU9CSl9zbjJuaWQ7CisrCQlPQkpfdHh0Mm5pZDsKKysJCVBFTV9BU04xX3JlYWQ7CisrCQlQRU1fQVNOMV9yZWFkX2JpbzsKKysJCVBFTV9BU04xX3dyaXRlOworKwkJUEVNX0FTTjFfd3JpdGVfYmlvOworKwkJUEVNX1NlYWxGaW5hbDsKKysJCVBFTV9TZWFsSW5pdDsKKysJCVBFTV9TZWFsVXBkYXRlOworKwkJUEVNX1NpZ25GaW5hbDsKKysJCVBFTV9TaWduSW5pdDsKKysJCVBFTV9TaWduVXBkYXRlOworKwkJUEVNX1g1MDlfSU5GT19yZWFkOworKwkJUEVNX1g1MDlfSU5GT19yZWFkX2JpbzsKKysJCVBFTV9YNTA5X0lORk9fd3JpdGVfYmlvOworKwkJUEVNX2Rla19pbmZvOworKwkJUEVNX2RvX2hlYWRlcjsKKysJCVBFTV9nZXRfRVZQX0NJUEhFUl9JTkZPOworKwkJUEVNX3Byb2NfdHlwZTsKKysJCVBFTV9yZWFkOworKwkJUEVNX3JlYWRfREhwYXJhbXM7CisrCQlQRU1fcmVhZF9EU0FQcml2YXRlS2V5OworKwkJUEVNX3JlYWRfRFNBcGFyYW1zOworKwkJUEVNX3JlYWRfUEtDUzc7CisrCQlQRU1fcmVhZF9Qcml2YXRlS2V5OworKwkJUEVNX3JlYWRfUlNBUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX1g1MDk7CisrCQlQRU1fcmVhZF9YNTA5X0NSTDsKKysJCVBFTV9yZWFkX1g1MDlfUkVROworKwkJUEVNX3JlYWRfYmlvOworKwkJUEVNX3JlYWRfYmlvX0RIcGFyYW1zOworKwkJUEVNX3JlYWRfYmlvX0RTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9iaW9fRFNBcGFyYW1zOworKwkJUEVNX3JlYWRfYmlvX1BLQ1M3OworKwkJUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9iaW9fUlNBUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX2Jpb19YNTA5OworKwkJUEVNX3JlYWRfYmlvX1g1MDlfQ1JMOworKwkJUEVNX3JlYWRfYmlvX1g1MDlfUkVROworKwkJUEVNX3dyaXRlOworKwkJUEVNX3dyaXRlX0RIcGFyYW1zOworKwkJUEVNX3dyaXRlX0RTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfRFNBcGFyYW1zOworKwkJUEVNX3dyaXRlX1BLQ1M3OworKwkJUEVNX3dyaXRlX1ByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfUlNBUHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9YNTA5OworKwkJUEVNX3dyaXRlX1g1MDlfQ1JMOworKwkJUEVNX3dyaXRlX1g1MDlfUkVROworKwkJUEVNX3dyaXRlX2JpbzsKKysJCVBFTV93cml0ZV9iaW9fREhwYXJhbXM7CisrCQlQRU1fd3JpdGVfYmlvX0RTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfYmlvX0RTQXBhcmFtczsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzc7CisrCQlQRU1fd3JpdGVfYmlvX1ByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfYmlvX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDk7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ1JMOworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X1JFUTsKKysJCVBLQ1M3X0RJR0VTVF9mcmVlOworKwkJUEtDUzdfRElHRVNUX25ldzsKKysJCVBLQ1M3X0VOQ1JZUFRfZnJlZTsKKysJCVBLQ1M3X0VOQ1JZUFRfbmV3OworKwkJUEtDUzdfRU5DX0NPTlRFTlRfZnJlZTsKKysJCVBLQ1M3X0VOQ19DT05URU5UX25ldzsKKysJCVBLQ1M3X0VOVkVMT1BFX2ZyZWU7CisrCQlQS0NTN19FTlZFTE9QRV9uZXc7CisrCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9kaWdlc3Q7CisrCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9mcmVlOworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfbmV3OworKwkJUEtDUzdfUkVDSVBfSU5GT19mcmVlOworKwkJUEtDUzdfUkVDSVBfSU5GT19uZXc7CisrCQlQS0NTN19TSUdORURfZnJlZTsKKysJCVBLQ1M3X1NJR05FRF9uZXc7CisrCQlQS0NTN19TSUdORVJfSU5GT19mcmVlOworKwkJUEtDUzdfU0lHTkVSX0lORk9fbmV3OworKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9mcmVlOworKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9uZXc7CisrCQlQS0NTN19kdXA7CisrCQlQS0NTN19mcmVlOworKwkJUEtDUzdfbmV3OworKwkJUFJPWFlfRU5UUllfYWRkX25vcHJveHk7CisrCQlQUk9YWV9FTlRSWV9jbGVhcl9ub3Byb3h5OworKwkJUFJPWFlfRU5UUllfZnJlZTsKKysJCVBST1hZX0VOVFJZX2dldF9ub3Byb3h5OworKwkJUFJPWFlfRU5UUllfbmV3OworKwkJUFJPWFlfRU5UUllfc2V0X3NlcnZlcjsKKysJCVBST1hZX2FkZF9ub3Byb3h5OworKwkJUFJPWFlfYWRkX3NlcnZlcjsKKysJCVBST1hZX2NoZWNrX2J5X2hvc3Q7CisrCQlQUk9YWV9jaGVja191cmw7CisrCQlQUk9YWV9jbGVhcl9ub3Byb3h5OworKwkJUFJPWFlfZnJlZTsKKysJCVBST1hZX2dldF9ub3Byb3h5OworKwkJUFJPWFlfZ2V0X3Byb3hpZXM7CisrCQlQUk9YWV9nZXRfcHJveHlfZW50cnk7CisrCQlQUk9YWV9sb2FkX2NvbmY7CisrCQlQUk9YWV9uZXc7CisrCQlQUk9YWV9wcmludDsKKysJCVJBTkRfYnl0ZXM7CisrCQlSQU5EX2NsZWFudXA7CisrCQlSQU5EX2ZpbGVfbmFtZTsKKysJCVJBTkRfbG9hZF9maWxlOworKwkJUkFORF9zY3JlZW47CisrCQlSQU5EX3NlZWQ7CisrCQlSQU5EX3dyaXRlX2ZpbGU7CisrCQlSQzJfY2JjX2VuY3J5cHQ7CisrCQlSQzJfY2ZiNjRfZW5jcnlwdDsKKysJCVJDMl9lY2JfZW5jcnlwdDsKKysJCVJDMl9lbmNyeXB0OworKwkJUkMyX29mYjY0X2VuY3J5cHQ7CisrCQlSQzJfc2V0X2tleTsKKysJCVJDNDsKKysJCVJDNF9vcHRpb25zOworKwkJUkM0X3NldF9rZXk7CisrCQlSU0FQcml2YXRlS2V5X2FzbjFfbWV0aDsKKysJCVJTQVByaXZhdGVLZXlfZHVwOworKwkJUlNBUHVibGljS2V5X2R1cDsKKysJCVJTQV9QS0NTMV9TU0xlYXk7CisrCQlSU0FfZnJlZTsKKysJCVJTQV9nZW5lcmF0ZV9rZXk7CisrCQlSU0FfbmV3OworKwkJUlNBX25ld19tZXRob2Q7CisrCQlSU0FfcHJpbnQ7CisrCQlSU0FfcHJpbnRfZnA7CisrCQlSU0FfcHJpdmF0ZV9kZWNyeXB0OworKwkJUlNBX3ByaXZhdGVfZW5jcnlwdDsKKysJCVJTQV9wdWJsaWNfZGVjcnlwdDsKKysJCVJTQV9wdWJsaWNfZW5jcnlwdDsKKysJCVJTQV9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlSU0Ffc2lnbjsKKysJCVJTQV9zaWduX0FTTjFfT0NURVRfU1RSSU5HOworKwkJUlNBX3NpemU7CisrCQlSU0FfdmVyaWZ5OworKwkJUlNBX3ZlcmlmeV9BU04xX09DVEVUX1NUUklORzsKKysJCVNIQTsKKysJCVNIQTE7CisrCQlTSEExX0ZpbmFsOworKwkJU0hBMV9Jbml0OworKwkJU0hBMV9VcGRhdGU7CisrCQlTSEFfRmluYWw7CisrCQlTSEFfSW5pdDsKKysJCVNIQV9VcGRhdGU7CisrCQlPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtczsKKysJCU9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzOworKwkJT3BlblNTTF9hZGRfYWxsX2RpZ2VzdHM7CisrCQlUWFRfREJfY3JlYXRlX2luZGV4OworKwkJVFhUX0RCX2ZyZWU7CisrCQlUWFRfREJfZ2V0X2J5X2luZGV4OworKwkJVFhUX0RCX2luc2VydDsKKysJCVRYVF9EQl9yZWFkOworKwkJVFhUX0RCX3dyaXRlOworKwkJWDUwOV9BTEdPUl9mcmVlOworKwkJWDUwOV9BTEdPUl9uZXc7CisrCQlYNTA5X0FUVFJJQlVURV9mcmVlOworKwkJWDUwOV9BVFRSSUJVVEVfbmV3OworKwkJWDUwOV9DSU5GX2ZyZWU7CisrCQlYNTA5X0NJTkZfbmV3OworKwkJWDUwOV9DUkxfSU5GT19mcmVlOworKwkJWDUwOV9DUkxfSU5GT19uZXc7CisrCQlYNTA5X0NSTF9hZGRfZXh0OworKwkJWDUwOV9DUkxfY21wOworKwkJWDUwOV9DUkxfZGVsZXRlX2V4dDsKKysJCVg1MDlfQ1JMX2R1cDsKKysJCVg1MDlfQ1JMX2ZyZWU7CisrCQlYNTA5X0NSTF9nZXRfZXh0OworKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2J5X09CSjsKKysJCVg1MDlfQ1JMX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2NvdW50OworKwkJWDUwOV9DUkxfbmV3OworKwkJWDUwOV9DUkxfc2lnbjsKKysJCVg1MDlfQ1JMX3ZlcmlmeTsKKysJCVg1MDlfRVhURU5TSU9OX2NyZWF0ZV9ieV9OSUQ7CisrCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfT0JKOworKwkJWDUwOV9FWFRFTlNJT05fZHVwOworKwkJWDUwOV9FWFRFTlNJT05fZnJlZTsKKysJCVg1MDlfRVhURU5TSU9OX2dldF9jcml0aWNhbDsKKysJCVg1MDlfRVhURU5TSU9OX2dldF9kYXRhOworKwkJWDUwOV9FWFRFTlNJT05fZ2V0X29iamVjdDsKKysJCVg1MDlfRVhURU5TSU9OX25ldzsKKysJCVg1MDlfRVhURU5TSU9OX3NldF9jcml0aWNhbDsKKysJCVg1MDlfRVhURU5TSU9OX3NldF9kYXRhOworKwkJWDUwOV9FWFRFTlNJT05fc2V0X29iamVjdDsKKysJCVg1MDlfSU5GT19mcmVlOworKwkJWDUwOV9JTkZPX25ldzsKKysJCVg1MDlfTE9PS1VQX2J5X2FsaWFzOworKwkJWDUwOV9MT09LVVBfYnlfZmluZ2VycHJpbnQ7CisrCQlYNTA5X0xPT0tVUF9ieV9pc3N1ZXJfc2VyaWFsOworKwkJWDUwOV9MT09LVVBfYnlfc3ViamVjdDsKKysJCVg1MDlfTE9PS1VQX2N0cmw7CisrCQlYNTA5X0xPT0tVUF9maWxlOworKwkJWDUwOV9MT09LVVBfZnJlZTsKKysJCVg1MDlfTE9PS1VQX2hhc2hfZGlyOworKwkJWDUwOV9MT09LVVBfaW5pdDsKKysJCVg1MDlfTE9PS1VQX25ldzsKKysJCVg1MDlfTE9PS1VQX3NodXRkb3duOworKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9OSUQ7CisrCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X09CSjsKKysJCVg1MDlfTkFNRV9FTlRSWV9kdXA7CisrCQlYNTA5X05BTUVfRU5UUllfZnJlZTsKKysJCVg1MDlfTkFNRV9FTlRSWV9nZXRfZGF0YTsKKysJCVg1MDlfTkFNRV9FTlRSWV9nZXRfb2JqZWN0OworKwkJWDUwOV9OQU1FX0VOVFJZX25ldzsKKysJCVg1MDlfTkFNRV9FTlRSWV9zZXRfZGF0YTsKKysJCVg1MDlfTkFNRV9FTlRSWV9zZXRfb2JqZWN0OworKwkJWDUwOV9OQU1FX2FkZF9lbnRyeTsKKysJCVg1MDlfTkFNRV9jbXA7CisrCQlYNTA5X05BTUVfZGVsZXRlX2VudHJ5OworKwkJWDUwOV9OQU1FX2RpZ2VzdDsKKysJCVg1MDlfTkFNRV9kdXA7CisrCQlYNTA5X05BTUVfZW50cnlfY291bnQ7CisrCQlYNTA5X05BTUVfZnJlZTsKKysJCVg1MDlfTkFNRV9nZXRfZW50cnk7CisrCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X05JRDsKKysJCVg1MDlfTkFNRV9nZXRfaW5kZXhfYnlfT0JKOworKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5X05JRDsKKysJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9PQko7CisrCQlYNTA5X05BTUVfaGFzaDsKKysJCVg1MDlfTkFNRV9uZXc7CisrCQlYNTA5X05BTUVfb25lbGluZTsKKysJCVg1MDlfTkFNRV9wcmludDsKKysJCVg1MDlfTkFNRV9zZXQ7CisrCQlYNTA5X09CSkVDVF9mcmVlX2NvbnRlbnRzOworKwkJWDUwOV9PQkpFQ1RfcmV0cmlldmVfYnlfc3ViamVjdDsKKysJCVg1MDlfT0JKRUNUX3VwX3JlZl9jb3VudDsKKysJCVg1MDlfUEtFWV9mcmVlOworKwkJWDUwOV9QS0VZX25ldzsKKysJCVg1MDlfUFVCS0VZX2ZyZWU7CisrCQlYNTA5X1BVQktFWV9nZXQ7CisrCQlYNTA5X1BVQktFWV9uZXc7CisrCQlYNTA5X1BVQktFWV9zZXQ7CisrCQlYNTA5X1JFUV9JTkZPX2ZyZWU7CisrCQlYNTA5X1JFUV9JTkZPX25ldzsKKysJCVg1MDlfUkVRX2R1cDsKKysJCVg1MDlfUkVRX2ZyZWU7CisrCQlYNTA5X1JFUV9nZXRfcHVia2V5OworKwkJWDUwOV9SRVFfbmV3OworKwkJWDUwOV9SRVFfcHJpbnQ7CisrCQlYNTA5X1JFUV9wcmludF9mcDsKKysJCVg1MDlfUkVRX3NldF9wdWJrZXk7CisrCQlYNTA5X1JFUV9zZXRfc3ViamVjdF9uYW1lOworKwkJWDUwOV9SRVFfc2V0X3ZlcnNpb247CisrCQlYNTA5X1JFUV9zaWduOworKwkJWDUwOV9SRVFfdG9fWDUwOTsKKysJCVg1MDlfUkVRX3ZlcmlmeTsKKysJCVg1MDlfUkVWT0tFRF9hZGRfZXh0OworKwkJWDUwOV9SRVZPS0VEX2RlbGV0ZV9leHQ7CisrCQlYNTA5X1JFVk9LRURfZnJlZTsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0OworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfTklEOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfT0JKOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9jcml0aWM7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9jb3VudDsKKysJCVg1MDlfUkVWT0tFRF9uZXc7CisrCQlYNTA5X1NJR19mcmVlOworKwkJWDUwOV9TSUdfbmV3OworKwkJWDUwOV9TVE9SRV9DVFhfY2xlYW51cDsKKysJCVg1MDlfU1RPUkVfQ1RYX2luaXQ7CisrCQlYNTA5X1NUT1JFX2FkZF9jZXJ0OworKwkJWDUwOV9TVE9SRV9hZGRfbG9va3VwOworKwkJWDUwOV9TVE9SRV9mcmVlOworKwkJWDUwOV9TVE9SRV9nZXRfYnlfc3ViamVjdDsKKysJCVg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnM7CisrCQlYNTA5X1NUT1JFX25ldzsKKysJCVg1MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHM7CisrCQlYNTA5X1ZBTF9mcmVlOworKwkJWDUwOV9WQUxfbmV3OworKwkJWDUwOV9hZGRfZXh0OworKwkJWDUwOV9hc24xX21ldGg7CisrCQlYNTA5X2NlcnRpZmljYXRlX3R5cGU7CisrCQlYNTA5X2NoZWNrX3ByaXZhdGVfa2V5OworKwkJWDUwOV9jbXBfY3VycmVudF90aW1lOworKwkJWDUwOV9kZWxldGVfZXh0OworKwkJWDUwOV9kaWdlc3Q7CisrCQlYNTA5X2R1cDsKKysJCVg1MDlfZnJlZTsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9hcmVhOworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2RpcjsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXJfZW52OworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGU7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZmlsZV9lbnY7CisrCQlYNTA5X2dldF9kZWZhdWx0X3ByaXZhdGVfZGlyOworKwkJWDUwOV9nZXRfZXh0OworKwkJWDUwOV9nZXRfZXh0X2J5X05JRDsKKysJCVg1MDlfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5X2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlYNTA5X2dldF9leHRfY291bnQ7CisrCQlYNTA5X2dldF9pc3N1ZXJfbmFtZTsKKysJCVg1MDlfZ2V0X3B1YmtleTsKKysJCVg1MDlfZ2V0X3B1YmtleV9wYXJhbWV0ZXJzOworKwkJWDUwOV9nZXRfc2VyaWFsTnVtYmVyOworKwkJWDUwOV9nZXRfc3ViamVjdF9uYW1lOworKwkJWDUwOV9nbXRpbWVfYWRqOworKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9jbXA7CisrCQlYNTA5X2lzc3Vlcl9hbmRfc2VyaWFsX2hhc2g7CisrCQlYNTA5X2lzc3Vlcl9uYW1lX2NtcDsKKysJCVg1MDlfaXNzdWVyX25hbWVfaGFzaDsKKysJCVg1MDlfbG9hZF9jZXJ0X2ZpbGU7CisrCQlYNTA5X25ldzsKKysJCVg1MDlfcHJpbnQ7CisrCQlYNTA5X3ByaW50X2ZwOworKwkJWDUwOV9zZXRfaXNzdWVyX25hbWU7CisrCQlYNTA5X3NldF9ub3RBZnRlcjsKKysJCVg1MDlfc2V0X25vdEJlZm9yZTsKKysJCVg1MDlfc2V0X3B1YmtleTsKKysJCVg1MDlfc2V0X3NlcmlhbE51bWJlcjsKKysJCVg1MDlfc2V0X3N1YmplY3RfbmFtZTsKKysJCVg1MDlfc2V0X3ZlcnNpb247CisrCQlYNTA5X3NpZ247CisrCQlYNTA5X3N1YmplY3RfbmFtZV9jbXA7CisrCQlYNTA5X3N1YmplY3RfbmFtZV9oYXNoOworKwkJWDUwOV90b19YNTA5X1JFUTsKKysJCVg1MDlfdmVyaWZ5OworKwkJWDUwOV92ZXJpZnlfY2VydDsKKysJCVg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nOworKwkJWDUwOXYzX2FkZF9leHQ7CisrCQlYNTA5djNfYWRkX2V4dGVuc2lvbjsKKysJCVg1MDl2M19hZGRfbmV0c2NhcGVfZXh0ZW5zaW9uczsKKysJCVg1MDl2M19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKKysJCVg1MDl2M19jbGVhbnVwX2V4dGVuc2lvbnM7CisrCQlYNTA5djNfZGF0YV90eXBlX2J5X05JRDsKKysJCVg1MDl2M19kYXRhX3R5cGVfYnlfT0JKOworKwkJWDUwOXYzX2RlbGV0ZV9leHQ7CisrCQlYNTA5djNfZ2V0X2V4dDsKKysJCVg1MDl2M19nZXRfZXh0X2J5X05JRDsKKysJCVg1MDl2M19nZXRfZXh0X2J5X09CSjsKKysJCVg1MDl2M19nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOXYzX2dldF9leHRfY291bnQ7CisrCQlYNTA5djNfcGFja19zdHJpbmc7CisrCQlYNTA5djNfcGFja190eXBlX2J5X05JRDsKKysJCVg1MDl2M19wYWNrX3R5cGVfYnlfT0JKOworKwkJWDUwOXYzX3VucGFja19zdHJpbmc7CisrCQlfZGVzX2NyeXB0OworKwkJYTJkX0FTTjFfT0JKRUNUOworKwkJYTJpX0FTTjFfSU5URUdFUjsKKysJCWEyaV9BU04xX1NUUklORzsKKysJCWFzbjFfRmluaXNoOworKwkJYXNuMV9HZXRTZXF1ZW5jZTsKKysJCWJuX2Rpdl93b3JkczsKKysJCWJuX2V4cGFuZDI7CisrCQlibl9tdWxfYWRkX3dvcmRzOworKwkJYm5fbXVsX3dvcmRzOworKwkJQk5fdWFkZDsKKysJCUJOX3VzdWI7CisrCQlibl9zcXJfd29yZHM7CisrCQlfb3NzbF9vbGRfY3J5cHQ7CisrCQlkMmlfQVNOMV9CSVRfU1RSSU5HOworKwkJZDJpX0FTTjFfQk9PTEVBTjsKKysJCWQyaV9BU04xX0hFQURFUjsKKysJCWQyaV9BU04xX0lBNVNUUklORzsKKysJCWQyaV9BU04xX0lOVEVHRVI7CisrCQlkMmlfQVNOMV9PQkpFQ1Q7CisrCQlkMmlfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlkMmlfQVNOMV9QUklOVEFCTEU7CisrCQlkMmlfQVNOMV9QUklOVEFCTEVTVFJJTkc7CisrCQlkMmlfQVNOMV9TRVQ7CisrCQlkMmlfQVNOMV9UNjFTVFJJTkc7CisrCQlkMmlfQVNOMV9UWVBFOworKwkJZDJpX0FTTjFfVVRDVElNRTsKKysJCWQyaV9BU04xX2J5dGVzOworKwkJZDJpX0FTTjFfdHlwZV9ieXRlczsKKysJCWQyaV9ESHBhcmFtczsKKysJCWQyaV9EU0FQcml2YXRlS2V5OworKwkJZDJpX0RTQVByaXZhdGVLZXlfYmlvOworKwkJZDJpX0RTQVByaXZhdGVLZXlfZnA7CisrCQlkMmlfRFNBUHVibGljS2V5OworKwkJZDJpX0RTQXBhcmFtczsKKysJCWQyaV9ORVRTQ0FQRV9TUEtBQzsKKysJCWQyaV9ORVRTQ0FQRV9TUEtJOworKwkJZDJpX05ldHNjYXBlX1JTQTsKKysJCWQyaV9QS0NTNzsKKysJCWQyaV9QS0NTN19ESUdFU1Q7CisrCQlkMmlfUEtDUzdfRU5DUllQVDsKKysJCWQyaV9QS0NTN19FTkNfQ09OVEVOVDsKKysJCWQyaV9QS0NTN19FTlZFTE9QRTsKKysJCWQyaV9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKKysJCWQyaV9QS0NTN19SRUNJUF9JTkZPOworKwkJZDJpX1BLQ1M3X1NJR05FRDsKKysJCWQyaV9QS0NTN19TSUdORVJfSU5GTzsKKysJCWQyaV9QS0NTN19TSUdOX0VOVkVMT1BFOworKwkJZDJpX1BLQ1M3X2JpbzsKKysJCWQyaV9QS0NTN19mcDsKKysJCWQyaV9Qcml2YXRlS2V5OworKwkJZDJpX1B1YmxpY0tleTsKKysJCWQyaV9SU0FQcml2YXRlS2V5OworKwkJZDJpX1JTQVByaXZhdGVLZXlfYmlvOworKwkJZDJpX1JTQVByaXZhdGVLZXlfZnA7CisrCQlkMmlfUlNBUHVibGljS2V5OworKwkJZDJpX1g1MDk7CisrCQlkMmlfWDUwOV9BTEdPUjsKKysJCWQyaV9YNTA5X0FUVFJJQlVURTsKKysJCWQyaV9YNTA5X0NJTkY7CisrCQlkMmlfWDUwOV9DUkw7CisrCQlkMmlfWDUwOV9DUkxfSU5GTzsKKysJCWQyaV9YNTA5X0NSTF9iaW87CisrCQlkMmlfWDUwOV9DUkxfZnA7CisrCQlkMmlfWDUwOV9FWFRFTlNJT047CisrCQlkMmlfWDUwOV9OQU1FOworKwkJZDJpX1g1MDlfTkFNRV9FTlRSWTsKKysJCWQyaV9YNTA5X1BLRVk7CisrCQlkMmlfWDUwOV9QVUJLRVk7CisrCQlkMmlfWDUwOV9SRVE7CisrCQlkMmlfWDUwOV9SRVFfSU5GTzsKKysJCWQyaV9YNTA5X1JFUV9iaW87CisrCQlkMmlfWDUwOV9SRVFfZnA7CisrCQlkMmlfWDUwOV9SRVZPS0VEOworKwkJZDJpX1g1MDlfU0lHOworKwkJZDJpX1g1MDlfVkFMOworKwkJZDJpX1g1MDlfYmlvOworKwkJZDJpX1g1MDlfZnA7CisrCQlERVNfY2JjX2Nrc3VtOworKwkJREVTX2NiY19lbmNyeXB0OworKwkJREVTX2NibG9ja19wcmludF9maWxlOworKwkJREVTX2NmYjY0X2VuY3J5cHQ7CisrCQlERVNfY2ZiX2VuY3J5cHQ7CisrCQlERVNfZGVjcnlwdDM7CisrCQlERVNfZWNiM19lbmNyeXB0OworKwkJREVTX2VjYl9lbmNyeXB0OworKwkJREVTX2VkZTNfY2JjX2VuY3J5cHQ7CisrCQlERVNfZWRlM19jZmI2NF9lbmNyeXB0OworKwkJREVTX2VkZTNfb2ZiNjRfZW5jcnlwdDsKKysJCURFU19lbmNfcmVhZDsKKysJCURFU19lbmNfd3JpdGU7CisrCQlERVNfZW5jcnlwdDE7CisrCQlERVNfZW5jcnlwdDI7CisrCQlERVNfZW5jcnlwdDM7CisrCQlERVNfZmNyeXB0OworKwkJREVTX2lzX3dlYWtfa2V5OworKwkJREVTX2tleV9zY2hlZDsKKysJCURFU19uY2JjX2VuY3J5cHQ7CisrCQlERVNfb2ZiNjRfZW5jcnlwdDsKKysJCURFU19vZmJfZW5jcnlwdDsKKysJCURFU19vcHRpb25zOworKwkJREVTX3BjYmNfZW5jcnlwdDsKKysJCURFU19xdWFkX2Nrc3VtOworKwkJREVTX3JhbmRvbV9rZXk7CisrCQlfb3NzbF9vbGRfZGVzX3JhbmRvbV9zZWVkOworKwkJX29zc2xfb2xkX2Rlc19yZWFkXzJwYXNzd29yZHM7CisrCQlfb3NzbF9vbGRfZGVzX3JlYWRfcGFzc3dvcmQ7CisrCQlfb3NzbF9vbGRfZGVzX3JlYWRfcHc7CisrCQlfb3NzbF9vbGRfZGVzX3JlYWRfcHdfc3RyaW5nOworKwkJREVTX3NldF9rZXk7CisrCQlERVNfc2V0X29kZF9wYXJpdHk7CisrCQlERVNfc3RyaW5nX3RvXzJrZXlzOworKwkJREVTX3N0cmluZ190b19rZXk7CisrCQlERVNfeGNiY19lbmNyeXB0OworKwkJREVTX3h3aGl0ZV9pbjJvdXQ7CisrCQlmY3J5cHRfYm9keTsKKysJCWkyYV9BU04xX0lOVEVHRVI7CisrCQlpMmFfQVNOMV9PQkpFQ1Q7CisrCQlpMmFfQVNOMV9TVFJJTkc7CisrCQlpMmRfQVNOMV9CSVRfU1RSSU5HOworKwkJaTJkX0FTTjFfQk9PTEVBTjsKKysJCWkyZF9BU04xX0hFQURFUjsKKysJCWkyZF9BU04xX0lBNVNUUklORzsKKysJCWkyZF9BU04xX0lOVEVHRVI7CisrCQlpMmRfQVNOMV9PQkpFQ1Q7CisrCQlpMmRfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlpMmRfQVNOMV9QUklOVEFCTEU7CisrCQlpMmRfQVNOMV9TRVQ7CisrCQlpMmRfQVNOMV9UWVBFOworKwkJaTJkX0FTTjFfVVRDVElNRTsKKysJCWkyZF9BU04xX2J5dGVzOworKwkJaTJkX0RIcGFyYW1zOworKwkJaTJkX0RTQVByaXZhdGVLZXk7CisrCQlpMmRfRFNBUHJpdmF0ZUtleV9iaW87CisrCQlpMmRfRFNBUHJpdmF0ZUtleV9mcDsKKysJCWkyZF9EU0FQdWJsaWNLZXk7CisrCQlpMmRfRFNBcGFyYW1zOworKwkJaTJkX05FVFNDQVBFX1NQS0FDOworKwkJaTJkX05FVFNDQVBFX1NQS0k7CisrCQlpMmRfTmV0c2NhcGVfUlNBOworKwkJaTJkX1BLQ1M3OworKwkJaTJkX1BLQ1M3X0RJR0VTVDsKKysJCWkyZF9QS0NTN19FTkNSWVBUOworKwkJaTJkX1BLQ1M3X0VOQ19DT05URU5UOworKwkJaTJkX1BLQ1M3X0VOVkVMT1BFOworKwkJaTJkX1BLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMOworKwkJaTJkX1BLQ1M3X1JFQ0lQX0lORk87CisrCQlpMmRfUEtDUzdfU0lHTkVEOworKwkJaTJkX1BLQ1M3X1NJR05FUl9JTkZPOworKwkJaTJkX1BLQ1M3X1NJR05fRU5WRUxPUEU7CisrCQlpMmRfUEtDUzdfYmlvOworKwkJaTJkX1BLQ1M3X2ZwOworKwkJaTJkX1ByaXZhdGVLZXk7CisrCQlpMmRfUHVibGljS2V5OworKwkJaTJkX1JTQVByaXZhdGVLZXk7CisrCQlpMmRfUlNBUHJpdmF0ZUtleV9iaW87CisrCQlpMmRfUlNBUHJpdmF0ZUtleV9mcDsKKysJCWkyZF9SU0FQdWJsaWNLZXk7CisrCQlpMmRfWDUwOTsKKysJCWkyZF9YNTA5X0FMR09SOworKwkJaTJkX1g1MDlfQVRUUklCVVRFOworKwkJaTJkX1g1MDlfQ0lORjsKKysJCWkyZF9YNTA5X0NSTDsKKysJCWkyZF9YNTA5X0NSTF9JTkZPOworKwkJaTJkX1g1MDlfQ1JMX2JpbzsKKysJCWkyZF9YNTA5X0NSTF9mcDsKKysJCWkyZF9YNTA5X0VYVEVOU0lPTjsKKysJCWkyZF9YNTA5X05BTUU7CisrCQlpMmRfWDUwOV9OQU1FX0VOVFJZOworKwkJaTJkX1g1MDlfUEtFWTsKKysJCWkyZF9YNTA5X1BVQktFWTsKKysJCWkyZF9YNTA5X1JFUTsKKysJCWkyZF9YNTA5X1JFUV9JTkZPOworKwkJaTJkX1g1MDlfUkVRX2JpbzsKKysJCWkyZF9YNTA5X1JFUV9mcDsKKysJCWkyZF9YNTA5X1JFVk9LRUQ7CisrCQlpMmRfWDUwOV9TSUc7CisrCQlpMmRfWDUwOV9WQUw7CisrCQlpMmRfWDUwOV9iaW87CisrCQlpMmRfWDUwOV9mcDsKKysJCWlkZWFfY2JjX2VuY3J5cHQ7CisrCQlpZGVhX2NmYjY0X2VuY3J5cHQ7CisrCQlpZGVhX2VjYl9lbmNyeXB0OworKwkJaWRlYV9lbmNyeXB0OworKwkJaWRlYV9vZmI2NF9lbmNyeXB0OworKwkJaWRlYV9vcHRpb25zOworKwkJaWRlYV9zZXRfZGVjcnlwdF9rZXk7CisrCQlpZGVhX3NldF9lbmNyeXB0X2tleTsKKysJCWxoX2RlbGV0ZTsKKysJCWxoX2RvYWxsOworKwkJbGhfZG9hbGxfYXJnOworKwkJbGhfZnJlZTsKKysJCWxoX2luc2VydDsKKysJCWxoX25ldzsKKysJCWxoX25vZGVfc3RhdHM7CisrCQlsaF9ub2RlX3N0YXRzX2JpbzsKKysJCWxoX25vZGVfdXNhZ2Vfc3RhdHM7CisrCQlsaF9ub2RlX3VzYWdlX3N0YXRzX2JpbzsKKysJCWxoX3JldHJpZXZlOworKwkJbGhfc3RhdHM7CisrCQlsaF9zdGF0c19iaW87CisrCQlsaF9zdHJoYXNoOworKwkJc2tfZGVsZXRlOworKwkJc2tfZGVsZXRlX3B0cjsKKysJCXNrX2R1cDsKKysJCXNrX2ZpbmQ7CisrCQlza19mcmVlOworKwkJc2tfaW5zZXJ0OworKwkJc2tfbmV3OworKwkJc2tfcG9wOworKwkJc2tfcG9wX2ZyZWU7CisrCQlza19wdXNoOworKwkJc2tfc2V0X2NtcF9mdW5jOworKwkJc2tfc2hpZnQ7CisrCQlza191bnNoaWZ0OworKwkJc2tfemVybzsKKysJCUJJT19mX25iaW9fdGVzdDsKKysJCUFTTjFfVFlQRV9nZXQ7CisrCQlBU04xX1RZUEVfc2V0OworKwkJUEtDUzdfY29udGVudF9mcmVlOworKwkJRVJSX2xvYWRfUEtDUzdfc3RyaW5nczsKKysJCVg1MDlfZmluZF9ieV9pc3N1ZXJfYW5kX3NlcmlhbDsKKysJCVg1MDlfZmluZF9ieV9zdWJqZWN0OworKwkJUEtDUzdfY3RybDsKKysJCVBLQ1M3X3NldF90eXBlOworKwkJUEtDUzdfc2V0X2NvbnRlbnQ7CisrCQlQS0NTN19TSUdORVJfSU5GT19zZXQ7CisrCQlQS0NTN19hZGRfc2lnbmVyOworKwkJUEtDUzdfYWRkX2NlcnRpZmljYXRlOworKwkJUEtDUzdfYWRkX2NybDsKKysJCVBLQ1M3X2NvbnRlbnRfbmV3OworKwkJUEtDUzdfZGF0YVNpZ247CisrCQlQS0NTN19kYXRhVmVyaWZ5OworKwkJUEtDUzdfZGF0YUluaXQ7CisrCQlQS0NTN19hZGRfc2lnbmF0dXJlOworKwkJUEtDUzdfY2VydF9mcm9tX3NpZ25lcl9pbmZvOworKwkJUEtDUzdfZ2V0X3NpZ25lcl9pbmZvOworKwkJRVZQX2RlbGV0ZV9hbGlhczsKKysJCUVWUF9tZGMyOworKwkJUEVNX3JlYWRfYmlvX1JTQVB1YmxpY0tleTsKKysJCVBFTV93cml0ZV9iaW9fUlNBUHVibGljS2V5OworKwkJZDJpX1JTQVB1YmxpY0tleV9iaW87CisrCQlpMmRfUlNBUHVibGljS2V5X2JpbzsKKysJCVBFTV9yZWFkX1JTQVB1YmxpY0tleTsKKysJCVBFTV93cml0ZV9SU0FQdWJsaWNLZXk7CisrCQlkMmlfUlNBUHVibGljS2V5X2ZwOworKwkJaTJkX1JTQVB1YmxpY0tleV9mcDsKKysJCUJJT19jb3B5X25leHRfcmV0cnk7CisrCQlSU0FfZmxhZ3M7CisrCQlYNTA5X1NUT1JFX2FkZF9jcmw7CisrCQlYNTA5X2xvYWRfY3JsX2ZpbGU7CisrCQlFVlBfcmMyXzQwX2NiYzsKKysJCUVWUF9yYzRfNDA7CisrCQlFVlBfQ0lQSEVSX0NUWF9pbml0OworKwkJSE1BQzsKKysJCUhNQUNfSW5pdDsKKysJCUhNQUNfVXBkYXRlOworKwkJSE1BQ19GaW5hbDsKKysJCUVSUl9nZXRfbmV4dF9lcnJvcl9saWJyYXJ5OworKwkJRVZQX1BLRVlfY21wX3BhcmFtZXRlcnM7CisrCQlITUFDX2NsZWFudXA7CisrCQlCSU9fcHRyX2N0cmw7CisrCQlCSU9fbmV3X2ZpbGVfaW50ZXJuYWw7CisrCQlCSU9fbmV3X2ZwX2ludGVybmFsOworKwkJQklPX3NfZmlsZV9pbnRlcm5hbDsKKysJCUJOX0JMSU5ESU5HX2NvbnZlcnQ7CisrCQlCTl9CTElORElOR19pbnZlcnQ7CisrCQlCTl9CTElORElOR191cGRhdGU7CisrCQlSU0FfYmxpbmRpbmdfb247CisrCQlSU0FfYmxpbmRpbmdfb2ZmOworKwkJaTJ0X0FTTjFfT0JKRUNUOworKwkJQk5fQkxJTkRJTkdfbmV3OworKwkJQk5fQkxJTkRJTkdfZnJlZTsKKysJCUVWUF9jYXN0NV9jYmM7CisrCQlFVlBfY2FzdDVfY2ZiNjQ7CisrCQlFVlBfY2FzdDVfZWNiOworKwkJRVZQX2Nhc3Q1X29mYjsKKysJCUJGX2RlY3J5cHQ7CisrCQlDQVNUX3NldF9rZXk7CisrCQlDQVNUX2VuY3J5cHQ7CisrCQlDQVNUX2RlY3J5cHQ7CisrCQlDQVNUX2VjYl9lbmNyeXB0OworKwkJQ0FTVF9jYmNfZW5jcnlwdDsKKysJCUNBU1RfY2ZiNjRfZW5jcnlwdDsKKysJCUNBU1Rfb2ZiNjRfZW5jcnlwdDsKKysJCVJDMl9kZWNyeXB0OworKwkJT0JKX2NyZWF0ZV9vYmplY3RzOworKwkJQk5fZXhwOworKwkJQk5fbXVsX3dvcmQ7CisrCQlCTl9zdWJfd29yZDsKKysJCUJOX2RlYzJibjsKKysJCUJOX2JuMmRlYzsKKysJCUJJT19naGJuX2N0cmw7CisrCQlDUllQVE9fZnJlZV9leF9kYXRhOworKwkJQ1JZUFRPX2dldF9leF9kYXRhOworKwkJQ1JZUFRPX3NldF9leF9kYXRhOworKwkJRVJSX2xvYWRfQ1JZUFRPX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9DUllQVE9saWJfc3RyaW5nczsKKysJCUVWUF9QS0VZX2JpdHM7CisrCQlNRDVfVHJhbnNmb3JtOworKwkJU0hBMV9UcmFuc2Zvcm07CisrCQlTSEFfVHJhbnNmb3JtOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2NoYWluOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NlcnQ7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfY2hhaW47CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZXJyb3I7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZXhfZGF0YTsKKysJCUNSWVBUT19kdXBfZXhfZGF0YTsKKysJCUNSWVBUT19nZXRfbmV3X2xvY2tpZDsKKysJCUNSWVBUT19uZXdfZXhfZGF0YTsKKysJCVJTQV9zZXRfZXhfZGF0YTsKKysJCVJTQV9nZXRfZXhfZGF0YTsKKysJCVJTQV9nZXRfZXhfbmV3X2luZGV4OworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMTsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzI7CisrCQlSU0FfcGFkZGluZ19hZGRfU1NMdjIzOworKwkJUlNBX3BhZGRpbmdfYWRkX25vbmU7CisrCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzE7CisrCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzI7CisrCQlSU0FfcGFkZGluZ19jaGVja19TU0x2MjM7CisrCQlSU0FfcGFkZGluZ19jaGVja19ub25lOworKwkJYm5fYWRkX3dvcmRzOworKwkJZDJpX05ldHNjYXBlX1JTQV8yOworKwkJQ1JZUFRPX2dldF9leF9uZXdfaW5kZXg7CisrCQlSSVBFTUQxNjBfSW5pdDsKKysJCVJJUEVNRDE2MF9VcGRhdGU7CisrCQlSSVBFTUQxNjBfRmluYWw7CisrCQlSSVBFTUQxNjA7CisrCQlSSVBFTUQxNjBfVHJhbnNmb3JtOworKwkJUkM1XzMyX3NldF9rZXk7CisrCQlSQzVfMzJfZWNiX2VuY3J5cHQ7CisrCQlSQzVfMzJfZW5jcnlwdDsKKysJCVJDNV8zMl9kZWNyeXB0OworKwkJUkM1XzMyX2NiY19lbmNyeXB0OworKwkJUkM1XzMyX2NmYjY0X2VuY3J5cHQ7CisrCQlSQzVfMzJfb2ZiNjRfZW5jcnlwdDsKKysJCUJOX2JuMm1waTsKKysJCUJOX21waTJibjsKKysJCUFTTjFfQklUX1NUUklOR19nZXRfYml0OworKwkJQVNOMV9CSVRfU1RSSU5HX3NldF9iaXQ7CisrCQlCSU9fZ2V0X2V4X2RhdGE7CisrCQlCSU9fZ2V0X2V4X25ld19pbmRleDsKKysJCUJJT19zZXRfZXhfZGF0YTsKKysJCVg1MDl2M19nZXRfa2V5X3VzYWdlOworKwkJWDUwOXYzX3NldF9rZXlfdXNhZ2U7CisrCQlhMmlfWDUwOXYzX2tleV91c2FnZTsKKysJCWkyYV9YNTA5djNfa2V5X3VzYWdlOworKwkJRVZQX1BLRVlfZGVjcnlwdDsKKysJCUVWUF9QS0VZX2VuY3J5cHQ7CisrCQlQS0NTN19SRUNJUF9JTkZPX3NldDsKKysJCVBLQ1M3X2FkZF9yZWNpcGllbnQ7CisrCQlQS0NTN19hZGRfcmVjaXBpZW50X2luZm87CisrCQlQS0NTN19zZXRfY2lwaGVyOworKwkJQVNOMV9UWVBFX2dldF9pbnRfb2N0ZXRzdHJpbmc7CisrCQlBU04xX1RZUEVfZ2V0X29jdGV0c3RyaW5nOworKwkJQVNOMV9UWVBFX3NldF9pbnRfb2N0ZXRzdHJpbmc7CisrCQlBU04xX1RZUEVfc2V0X29jdGV0c3RyaW5nOworKwkJQVNOMV9VVENUSU1FX3NldF9zdHJpbmc7CisrCQlFUlJfYWRkX2Vycm9yX2RhdGE7CisrCQlFUlJfc2V0X2Vycm9yX2RhdGE7CisrCQlFVlBfQ0lQSEVSX2FzbjFfdG9fcGFyYW07CisrCQlFVlBfQ0lQSEVSX3BhcmFtX3RvX2FzbjE7CisrCQlFVlBfQ0lQSEVSX2dldF9hc24xX2l2OworKwkJRVZQX0NJUEhFUl9zZXRfYXNuMV9pdjsKKysJCUVWUF9yYzVfMzJfMTJfMTZfY2JjOworKwkJRVZQX3JjNV8zMl8xMl8xNl9jZmI2NDsKKysJCUVWUF9yYzVfMzJfMTJfMTZfZWNiOworKwkJRVZQX3JjNV8zMl8xMl8xNl9vZmI7CisrCQlhc24xX2FkZF9lcnJvcjsKKysJCWQyaV9BU04xX0JNUFNUUklORzsKKysJCWkyZF9BU04xX0JNUFNUUklORzsKKysJCUJJT19mX2JlcjsKKysJCUJOX2luaXQ7CisrCQlDT01QX0NUWF9uZXc7CisrCQlDT01QX0NUWF9mcmVlOworKwkJQ09NUF9DVFhfY29tcHJlc3NfYmxvY2s7CisrCQlDT01QX0NUWF9leHBhbmRfYmxvY2s7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfbmV3X2luZGV4OworKwkJT0JKX05BTUVfYWRkOworKwkJQklPX3NvY2tldF9uYmlvOworKwkJRVZQX3JjMl82NF9jYmM7CisrCQlPQkpfTkFNRV9jbGVhbnVwOworKwkJT0JKX05BTUVfZ2V0OworKwkJT0JKX05BTUVfaW5pdDsKKysJCU9CSl9OQU1FX25ld19pbmRleDsKKysJCU9CSl9OQU1FX3JlbW92ZTsKKysJCUJOX01PTlRfQ1RYX2NvcHk7CisrCQlCSU9fbmV3X3NvY2tzNGFfY29ubmVjdDsKKysJCUJJT19zX3NvY2tzNGFfY29ubmVjdDsKKysJCVBST1hZX3NldF9jb25uZWN0X21vZGU7CisrCQlSQU5EX1NTTGVheTsKKysJCVJBTkRfc2V0X3JhbmRfbWV0aG9kOworKwkJUlNBX21lbW9yeV9sb2NrOworKwkJYm5fc3ViX3dvcmRzOworKwkJYm5fbXVsX25vcm1hbDsKKysJCWJuX211bF9jb21iYTg7CisrCQlibl9tdWxfY29tYmE0OworKwkJYm5fc3FyX25vcm1hbDsKKysJCWJuX3Nxcl9jb21iYTg7CisrCQlibl9zcXJfY29tYmE0OworKwkJYm5fY21wX3dvcmRzOworKwkJYm5fbXVsX3JlY3Vyc2l2ZTsKKysJCWJuX211bF9wYXJ0X3JlY3Vyc2l2ZTsKKysJCWJuX3Nxcl9yZWN1cnNpdmU7CisrCQlibl9tdWxfbG93X25vcm1hbDsKKysJCUJOX1JFQ1BfQ1RYX2luaXQ7CisrCQlCTl9SRUNQX0NUWF9uZXc7CisrCQlCTl9SRUNQX0NUWF9mcmVlOworKwkJQk5fUkVDUF9DVFhfc2V0OworKwkJQk5fbW9kX211bF9yZWNpcHJvY2FsOworKwkJQk5fbW9kX2V4cF9yZWNwOworKwkJQk5fZGl2X3JlY3A7CisrCQlCTl9DVFhfaW5pdDsKKysJCUJOX01PTlRfQ1RYX2luaXQ7CisrCQlSQU5EX2dldF9yYW5kX21ldGhvZDsKKysJCVBLQ1M3X2FkZF9hdHRyaWJ1dGU7CisrCQlQS0NTN19hZGRfc2lnbmVkX2F0dHJpYnV0ZTsKKysJCVBLQ1M3X2RpZ2VzdF9mcm9tX2F0dHJpYnV0ZXM7CisrCQlQS0NTN19nZXRfYXR0cmlidXRlOworKwkJUEtDUzdfZ2V0X2lzc3Vlcl9hbmRfc2VyaWFsOworKwkJUEtDUzdfZ2V0X3NpZ25lZF9hdHRyaWJ1dGU7CisrCQlDT01QX2NvbXByZXNzX2Jsb2NrOworKwkJQ09NUF9leHBhbmRfYmxvY2s7CisrCQlDT01QX3JsZTsKKysJCUNPTVBfemxpYjsKKysJCW1zX3RpbWVfZGlmZjsKKysJCW1zX3RpbWVfbmV3OworKwkJbXNfdGltZV9mcmVlOworKwkJbXNfdGltZV9jbXA7CisrCQltc190aW1lX2dldDsKKysJCVBLQ1M3X3NldF9hdHRyaWJ1dGVzOworKwkJUEtDUzdfc2V0X3NpZ25lZF9hdHRyaWJ1dGVzOworKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlOworKwkJWDUwOV9BVFRSSUJVVEVfZHVwOworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfY2hlY2s7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9wcmludDsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX3NldDsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX3NldF9zdHJpbmc7CisrCQlBU04xX1RJTUVfcHJpbnQ7CisrCQlCQVNJQ19DT05TVFJBSU5UU19mcmVlOworKwkJQkFTSUNfQ09OU1RSQUlOVFNfbmV3OworKwkJRVJSX2xvYWRfWDUwOVYzX3N0cmluZ3M7CisrCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX2ZyZWU7CisrCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX25ldzsKKysJCU9CSl90eHQyb2JqOworKwkJUEVNX3JlYWRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCVBFTV9yZWFkX05TX0NFUlRfU0VROworKwkJUEVNX3JlYWRfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fcmVhZF9iaW9fTlNfQ0VSVF9TRVE7CisrCQlQRU1fd3JpdGVfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCVBFTV93cml0ZV9OU19DRVJUX1NFUTsKKysJCVBFTV93cml0ZV9iaW9fTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCVBFTV93cml0ZV9iaW9fTlNfQ0VSVF9TRVE7CisrCQlYNTA5VjNfRVhUX2FkZDsKKysJCVg1MDlWM19FWFRfYWRkX2FsaWFzOworKwkJWDUwOVYzX0VYVF9hZGRfY29uZjsKKysJCVg1MDlWM19FWFRfY2xlYW51cDsKKysJCVg1MDlWM19FWFRfY29uZjsKKysJCVg1MDlWM19FWFRfY29uZl9uaWQ7CisrCQlYNTA5VjNfRVhUX2dldDsKKysJCVg1MDlWM19FWFRfZ2V0X25pZDsKKysJCVg1MDlWM19FWFRfcHJpbnQ7CisrCQlYNTA5VjNfRVhUX3ByaW50X2ZwOworKwkJWDUwOVYzX2FkZF9zdGFuZGFyZF9leHRlbnNpb25zOworKwkJWDUwOVYzX2FkZF92YWx1ZTsKKysJCVg1MDlWM19hZGRfdmFsdWVfYm9vbDsKKysJCVg1MDlWM19hZGRfdmFsdWVfaW50OworKwkJWDUwOVYzX2NvbmZfZnJlZTsKKysJCVg1MDlWM19nZXRfdmFsdWVfYm9vbDsKKysJCVg1MDlWM19nZXRfdmFsdWVfaW50OworKwkJWDUwOVYzX3BhcnNlX2xpc3Q7CisrCQlkMmlfQVNOMV9HRU5FUkFMSVpFRFRJTUU7CisrCQlkMmlfQVNOMV9USU1FOworKwkJZDJpX0JBU0lDX0NPTlNUUkFJTlRTOworKwkJZDJpX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlkMmlfZXh0X2t1OworKwkJZXh0X2t1X2ZyZWU7CisrCQlleHRfa3VfbmV3OworKwkJaTJkX0FTTjFfR0VORVJBTElaRURUSU1FOworKwkJaTJkX0FTTjFfVElNRTsKKysJCWkyZF9CQVNJQ19DT05TVFJBSU5UUzsKKysJCWkyZF9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJaTJkX2V4dF9rdTsKKysJCUVWUF9NRF9DVFhfY29weTsKKysJCWkyZF9BU04xX0VOVU1FUkFURUQ7CisrCQlkMmlfQVNOMV9FTlVNRVJBVEVEOworKwkJQVNOMV9FTlVNRVJBVEVEX3NldDsKKysJCUFTTjFfRU5VTUVSQVRFRF9nZXQ7CisrCQlCTl90b19BU04xX0VOVU1FUkFURUQ7CisrCQlBU04xX0VOVU1FUkFURURfdG9fQk47CisrCQlpMmFfQVNOMV9FTlVNRVJBVEVEOworKwkJYTJpX0FTTjFfRU5VTUVSQVRFRDsKKysJCWkyZF9HRU5FUkFMX05BTUU7CisrCQlkMmlfR0VORVJBTF9OQU1FOworKwkJR0VORVJBTF9OQU1FX25ldzsKKysJCUdFTkVSQUxfTkFNRV9mcmVlOworKwkJR0VORVJBTF9OQU1FU19uZXc7CisrCQlHRU5FUkFMX05BTUVTX2ZyZWU7CisrCQlkMmlfR0VORVJBTF9OQU1FUzsKKysJCWkyZF9HRU5FUkFMX05BTUVTOworKwkJaTJ2X0dFTkVSQUxfTkFNRVM7CisrCQlpMnNfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlzMmlfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlYNTA5VjNfRVhUX2NoZWNrX2NvbmY7CisrCQloZXhfdG9fc3RyaW5nOworKwkJc3RyaW5nX3RvX2hleDsKKysJCURFU19lZGUzX2NiY21fZW5jcnlwdDsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FFUDsKKysJCVg1MDlfQ1JMX3ByaW50X2ZwOworKwkJWDUwOV9DUkxfcHJpbnQ7CisrCQlpMnZfR0VORVJBTF9OQU1FOworKwkJdjJpX0dFTkVSQUxfTkFNRTsKKysJCWkyZF9QS0VZX1VTQUdFX1BFUklPRDsKKysJCWQyaV9QS0VZX1VTQUdFX1BFUklPRDsKKysJCVBLRVlfVVNBR0VfUEVSSU9EX25ldzsKKysJCVBLRVlfVVNBR0VfUEVSSU9EX2ZyZWU7CisrCQl2MmlfR0VORVJBTF9OQU1FUzsKKysJCWkyc19BU04xX0lOVEVHRVI7CisrCQlYNTA5VjNfRVhUX2QyaTsKKysJCW5hbWVfY21wOworKwkJc3RyX2R1cDsKKysJCWkyc19BU04xX0VOVU1FUkFURUQ7CisrCQlpMnNfQVNOMV9FTlVNRVJBVEVEX1RBQkxFOworKwkJQklPX3NfbG9nOworKwkJQklPX2ZfcmVsaWFibGU7CisrCQlQS0NTN19kYXRhRmluYWw7CisrCQlQS0NTN19kYXRhRGVjb2RlOworKwkJWDUwOVYzX0VYVF9DUkxfYWRkX2NvbmY7CisrCQlCTl9zZXRfcGFyYW1zOworKwkJQk5fZ2V0X3BhcmFtczsKKysJCUJJT19nZXRfZXhfbnVtOworKwkJQklPX3NldF9leF9mcmVlX2Z1bmM7CisrCQlFVlBfcmlwZW1kMTYwOworKwkJQVNOMV9USU1FX3NldDsKKysJCWkyZF9BVVRIT1JJVFlfS0VZSUQ7CisrCQlkMmlfQVVUSE9SSVRZX0tFWUlEOworKwkJQVVUSE9SSVRZX0tFWUlEX25ldzsKKysJCUFVVEhPUklUWV9LRVlJRF9mcmVlOworKwkJQVNOMV9zZXFfdW5wYWNrOworKwkJQVNOMV9zZXFfcGFjazsKKysJCUFTTjFfdW5wYWNrX3N0cmluZzsKKysJCUFTTjFfcGFja19zdHJpbmc7CisrCQlQS0NTMTJfcGFja19zYWZlYmFnOworKwkJUEtDUzEyX01BS0VfS0VZQkFHOworKwkJUEtDUzhfZW5jcnlwdDsKKysJCVBLQ1MxMl9NQUtFX1NIS0VZQkFHOworKwkJUEtDUzEyX3BhY2tfcDdkYXRhOworKwkJUEtDUzEyX3BhY2tfcDdlbmNkYXRhOworKwkJUEtDUzEyX2FkZF9sb2NhbGtleWlkOworKwkJUEtDUzEyX2FkZF9mcmllbmRseW5hbWVfYXNjOworKwkJUEtDUzEyX2FkZF9mcmllbmRseW5hbWVfdW5pOworKwkJUEtDUzEyX2dldF9mcmllbmRseW5hbWU7CisrCQlQS0NTMTJfcGJlX2NyeXB0OworKwkJUEtDUzEyX2RlY3J5cHRfZDJpOworKwkJUEtDUzEyX2kyZF9lbmNyeXB0OworKwkJUEtDUzEyX2luaXQ7CisrCQlQS0NTMTJfa2V5X2dlbl9hc2M7CisrCQlQS0NTMTJfa2V5X2dlbl91bmk7CisrCQlQS0NTMTJfZ2VuX21hYzsKKysJCVBLQ1MxMl92ZXJpZnlfbWFjOworKwkJUEtDUzEyX3NldF9tYWM7CisrCQlQS0NTMTJfc2V0dXBfbWFjOworKwkJT1BFTlNTTF9hc2MydW5pOworKwkJT1BFTlNTTF91bmkyYXNjOworKwkJaTJkX1BLQ1MxMl9CQUdTOworKwkJUEtDUzEyX0JBR1NfbmV3OworKwkJZDJpX1BLQ1MxMl9CQUdTOworKwkJUEtDUzEyX0JBR1NfZnJlZTsKKysJCWkyZF9QS0NTMTI7CisrCQlkMmlfUEtDUzEyOworKwkJUEtDUzEyX25ldzsKKysJCVBLQ1MxMl9mcmVlOworKwkJaTJkX1BLQ1MxMl9NQUNfREFUQTsKKysJCVBLQ1MxMl9NQUNfREFUQV9uZXc7CisrCQlkMmlfUEtDUzEyX01BQ19EQVRBOworKwkJUEtDUzEyX01BQ19EQVRBX2ZyZWU7CisrCQlpMmRfUEtDUzEyX1NBRkVCQUc7CisrCQlQS0NTMTJfU0FGRUJBR19uZXc7CisrCQlkMmlfUEtDUzEyX1NBRkVCQUc7CisrCQlQS0NTMTJfU0FGRUJBR19mcmVlOworKwkJRVJSX2xvYWRfUEtDUzEyX3N0cmluZ3M7CisrCQlQS0NTMTJfUEJFX2FkZDsKKysJCVBLQ1M4X2FkZF9rZXl1c2FnZTsKKysJCVBLQ1MxMl9nZXRfYXR0cl9nZW47CisrCQlQS0NTMTJfcGFyc2U7CisrCQlQS0NTMTJfY3JlYXRlOworKwkJaTJkX1BLQ1MxMl9iaW87CisrCQlpMmRfUEtDUzEyX2ZwOworKwkJZDJpX1BLQ1MxMl9iaW87CisrCQlkMmlfUEtDUzEyX2ZwOworKwkJaTJkX1BCRVBBUkFNOworKwkJUEJFUEFSQU1fbmV3OworKwkJZDJpX1BCRVBBUkFNOworKwkJUEJFUEFSQU1fZnJlZTsKKysJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEtDUzhfUFJJVl9LRVlfSU5GT19uZXc7CisrCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBLQ1M4X1BSSVZfS0VZX0lORk9fZnJlZTsKKysJCUVWUF9QS0NTODJQS0VZOworKwkJRVZQX1BLRVkyUEtDUzg7CisrCQlQS0NTOF9zZXRfYnJva2VuOworKwkJRVZQX1BCRV9BTEdPUl9DaXBoZXJJbml0OworKwkJRVZQX1BCRV9hbGdfYWRkOworKwkJUEtDUzVfcGJlX3NldDsKKysJCUVWUF9QQkVfY2xlYW51cDsKKysJCWkyZF9TWE5FVDsKKysJCWQyaV9TWE5FVDsKKysJCVNYTkVUX25ldzsKKysJCVNYTkVUX2ZyZWU7CisrCQlpMmRfU1hORVRJRDsKKysJCWQyaV9TWE5FVElEOworKwkJU1hORVRJRF9uZXc7CisrCQlTWE5FVElEX2ZyZWU7CisrCQlEU0FfU0lHX25ldzsKKysJCURTQV9TSUdfZnJlZTsKKysJCURTQV9kb19zaWduOworKwkJRFNBX2RvX3ZlcmlmeTsKKysJCWQyaV9EU0FfU0lHOworKwkJaTJkX0RTQV9TSUc7CisrCQlpMmRfQVNOMV9WSVNJQkxFU1RSSU5HOworKwkJZDJpX0FTTjFfVklTSUJMRVNUUklORzsKKysJCWkyZF9BU04xX1VURjhTVFJJTkc7CisrCQlkMmlfQVNOMV9VVEY4U1RSSU5HOworKwkJaTJkX0RJUkVDVE9SWVNUUklORzsKKysJCWQyaV9ESVJFQ1RPUllTVFJJTkc7CisrCQlpMmRfRElTUExBWVRFWFQ7CisrCQlkMmlfRElTUExBWVRFWFQ7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOTsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5OworKwkJaTJkX1BCS0RGMlBBUkFNOworKwkJUEJLREYyUEFSQU1fbmV3OworKwkJZDJpX1BCS0RGMlBBUkFNOworKwkJUEJLREYyUEFSQU1fZnJlZTsKKysJCWkyZF9QQkUyUEFSQU07CisrCQlQQkUyUEFSQU1fbmV3OworKwkJZDJpX1BCRTJQQVJBTTsKKysJCVBCRTJQQVJBTV9mcmVlOworKwkJZDJpX0FTTjFfU0VUX09GX0dFTkVSQUxfTkFNRTsKKysJCWkyZF9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7CisrCQlkMmlfQVNOMV9TRVRfT0ZfU1hORVRJRDsKKysJCWkyZF9BU04xX1NFVF9PRl9TWE5FVElEOworKwkJZDJpX0FTTjFfU0VUX09GX1BPTElDWVFVQUxJTkZPOworKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWVFVQUxJTkZPOworKwkJZDJpX0FTTjFfU0VUX09GX1BPTElDWUlORk87CisrCQlpMmRfQVNOMV9TRVRfT0ZfUE9MSUNZSU5GTzsKKysJCVNYTkVUX2FkZF9pZF9hc2M7CisrCQlTWE5FVF9hZGRfaWRfdWxvbmc7CisrCQlTWE5FVF9hZGRfaWRfSU5URUdFUjsKKysJCVNYTkVUX2dldF9pZF9hc2M7CisrCQlTWE5FVF9nZXRfaWRfdWxvbmc7CisrCQlTWE5FVF9nZXRfaWRfSU5URUdFUjsKKysJCVg1MDlWM19zZXRfY29uZl9saGFzaDsKKysJCWkyZF9DRVJUSUZJQ0FURVBPTElDSUVTOworKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19uZXc7CisrCQlDRVJUSUZJQ0FURVBPTElDSUVTX2ZyZWU7CisrCQlkMmlfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKKysJCWkyZF9QT0xJQ1lJTkZPOworKwkJUE9MSUNZSU5GT19uZXc7CisrCQlkMmlfUE9MSUNZSU5GTzsKKysJCVBPTElDWUlORk9fZnJlZTsKKysJCWkyZF9QT0xJQ1lRVUFMSU5GTzsKKysJCVBPTElDWVFVQUxJTkZPX25ldzsKKysJCWQyaV9QT0xJQ1lRVUFMSU5GTzsKKysJCVBPTElDWVFVQUxJTkZPX2ZyZWU7CisrCQlpMmRfVVNFUk5PVElDRTsKKysJCVVTRVJOT1RJQ0VfbmV3OworKwkJZDJpX1VTRVJOT1RJQ0U7CisrCQlVU0VSTk9USUNFX2ZyZWU7CisrCQlpMmRfTk9USUNFUkVGOworKwkJTk9USUNFUkVGX25ldzsKKysJCWQyaV9OT1RJQ0VSRUY7CisrCQlOT1RJQ0VSRUZfZnJlZTsKKysJCVg1MDlWM19nZXRfc3RyaW5nOworKwkJWDUwOVYzX2dldF9zZWN0aW9uOworKwkJWDUwOVYzX3N0cmluZ19mcmVlOworKwkJWDUwOVYzX3NlY3Rpb25fZnJlZTsKKysJCVg1MDlWM19zZXRfY3R4OworKwkJczJpX0FTTjFfSU5URUdFUjsKKysJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9mdW5jdGlvbnM7CisrCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX21hbGxvY19sb2NrZWQ7CisrCQlDUllQVE9fZnJlZV9sb2NrZWQ7CisrCQlCTl9tb2RfZXhwMl9tb250OworKwkJRVJSX2dldF9lcnJvcl9saW5lX2RhdGE7CisrCQlFUlJfcGVla19lcnJvcl9saW5lX2RhdGE7CisrCQlQS0NTMTJfUEJFX2tleWl2Z2VuOworKwkJWDUwOV9BTEdPUl9kdXA7CisrCQlkMmlfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKKysJCWkyZF9BU04xX1NFVF9PRl9ESVNUX1BPSU5UOworKwkJaTJkX0NSTF9ESVNUX1BPSU5UUzsKKysJCUNSTF9ESVNUX1BPSU5UU19uZXc7CisrCQlDUkxfRElTVF9QT0lOVFNfZnJlZTsKKysJCWQyaV9DUkxfRElTVF9QT0lOVFM7CisrCQlpMmRfRElTVF9QT0lOVDsKKysJCURJU1RfUE9JTlRfbmV3OworKwkJZDJpX0RJU1RfUE9JTlQ7CisrCQlESVNUX1BPSU5UX2ZyZWU7CisrCQlpMmRfRElTVF9QT0lOVF9OQU1FOworKwkJRElTVF9QT0lOVF9OQU1FX25ldzsKKysJCURJU1RfUE9JTlRfTkFNRV9mcmVlOworKwkJZDJpX0RJU1RfUE9JTlRfTkFNRTsKKysJCVg1MDlWM19hZGRfdmFsdWVfdWNoYXI7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9BVFRSSUJVVEU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKKysJCWQyaV9BU04xX1NFVF9PRl9BU04xX1RZUEU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BVFRSSUJVVEU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9FWFRFTlNJT047CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9OQU1FX0VOVFJZOworKwkJWDUwOVYzX0VYVF9pMmQ7CisrCQlYNTA5VjNfRVhUX3ZhbF9wcm47CisrCQlYNTA5VjNfRVhUX2FkZF9saXN0OworKwkJRVZQX0NJUEhFUl90eXBlOworKwkJRVZQX1BCRV9DaXBoZXJJbml0OworKwkJWDUwOVYzX2FkZF92YWx1ZV9ib29sX25mOworKwkJZDJpX0FTTjFfVUlOVEVHRVI7CisrCQlza192YWx1ZTsKKysJCXNrX251bTsKKysJCXNrX3NldDsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7CisrCQlza19zb3J0OworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfUkVWT0tFRDsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0FMR09SOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQ1JMOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQUxHT1I7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9DUkw7CisrCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87CisrCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTN19TSUdORVJfSU5GTzsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTN19SRUNJUF9JTkZPOworKwkJUEtDUzVfUEJFX2FkZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzg7CisrCQlpMmRfUEtDUzhfZnA7CisrCQlQRU1fcmVhZF9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX2Jpb19QOF9QUklWX0tFWV9JTkZPOworKwkJZDJpX1BLQ1M4X2JpbzsKKysJCWQyaV9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3dyaXRlX2Jpb19QOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3JlYWRfUEtDUzg7CisrCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19iaW87CisrCQlkMmlfUEtDUzhfZnA7CisrCQlQRU1fd3JpdGVfUEtDUzg7CisrCQlQRU1fcmVhZF9QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3JlYWRfUDhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX2Jpb19QS0NTODsKKysJCVBFTV93cml0ZV9QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3dyaXRlX1A4X1BSSVZfS0VZX0lORk87CisrCQlQS0NTNV9QQkVfa2V5aXZnZW47CisrCQlpMmRfUEtDUzhfYmlvOworKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fZnA7CisrCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GT19iaW87CisrCQlCSU9fc19iaW87CisrCQlQS0NTNV9wYmUyX3NldDsKKysJCVBLQ1M1X1BCS0RGMl9ITUFDX1NIQTE7CisrCQlQS0NTNV92Ml9QQkVfa2V5aXZnZW47CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M4UHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9QS0NTOFByaXZhdGVLZXk7CisrCQlCSU9fY3RybF9nZXRfcmVhZF9yZXF1ZXN0OworKwkJQklPX2N0cmxfcGVuZGluZzsKKysJCUJJT19jdHJsX3dwZW5kaW5nOworKwkJQklPX25ld19iaW9fcGFpcjsKKysJCUJJT19jdHJsX2dldF93cml0ZV9ndWFyYW50ZWU7CisrCQlDUllQVE9fbnVtX2xvY2tzOworKwkJQ09ORl9sb2FkX2JpbzsKKysJCUNPTkZfbG9hZF9mcDsKKysJCWkyZF9BU04xX1NFVF9PRl9BU04xX09CSkVDVDsKKysJCWQyaV9BU04xX1NFVF9PRl9BU04xX09CSkVDVDsKKysJCVBLQ1M3X3NpZ25hdHVyZVZlcmlmeTsKKysJCVJTQV9zZXRfbWV0aG9kOworKwkJUlNBX2dldF9tZXRob2Q7CisrCQlSU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUlNBX2NoZWNrX2tleTsKKysJCU9CSl9vYmoydHh0OworKwkJRFNBX2R1cF9ESDsKKysJCVg1MDlfUkVRX2dldF9leHRlbnNpb25zOworKwkJWDUwOV9SRVFfc2V0X2V4dGVuc2lvbl9uaWRzOworKwkJQklPX253cml0ZTsKKysJCVg1MDlfUkVRX2V4dGVuc2lvbl9uaWQ7CisrCQlCSU9fbnJlYWQ7CisrCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uX25pZHM7CisrCQlCSU9fbndyaXRlMDsKKysJCVg1MDlfUkVRX2FkZF9leHRlbnNpb25zX25pZDsKKysJCUJJT19ucmVhZDA7CisrCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uczsKKysJCUJJT19uZXdfbWVtX2J1ZjsKKysJCURIX3NldF9leF9kYXRhOworKwkJREhfc2V0X21ldGhvZDsKKysJCURTQV9PcGVuU1NMOworKwkJREhfZ2V0X2V4X2RhdGE7CisrCQlESF9nZXRfZXhfbmV3X2luZGV4OworKwkJRFNBX25ld19tZXRob2Q7CisrCQlESF9uZXdfbWV0aG9kOworKwkJREhfT3BlblNTTDsKKysJCURTQV9nZXRfZXhfbmV3X2luZGV4OworKwkJREhfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNBX3NldF9leF9kYXRhOworKwkJREhfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNBX2dldF9leF9kYXRhOworKwkJWDUwOVYzX0VYVF9SRVFfYWRkX2NvbmY7CisrCQlORVRTQ0FQRV9TUEtJX3ByaW50OworKwkJTkVUU0NBUEVfU1BLSV9zZXRfcHVia2V5OworKwkJTkVUU0NBUEVfU1BLSV9iNjRfZW5jb2RlOworKwkJTkVUU0NBUEVfU1BLSV9nZXRfcHVia2V5OworKwkJTkVUU0NBUEVfU1BLSV9iNjRfZGVjb2RlOworKwkJVVRGOF9wdXRjOworKwkJVVRGOF9nZXRjOworKwkJUlNBX251bGxfbWV0aG9kOworKwkJQVNOMV90YWcyc3RyOworKwkJQklPX2N0cmxfcmVzZXRfcmVhZF9yZXF1ZXN0OworKwkJRElTUExBWVRFWFRfbmV3OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfZnJlZTsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2QyaTsKKysJCVg1MDlfc2V0X2V4X2RhdGE7CisrCQlYNTA5X3JlamVjdF9zZXRfYml0X2FzYzsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfdHh0OworKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9OSUQ7CisrCQlYNTA5X1BVUlBPU0VfZ2V0MDsKKysJCVBFTV9yZWFkX1g1MDlfQVVYOworKwkJZDJpX0FVVEhPUklUWV9JTkZPX0FDQ0VTUzsKKysJCVBFTV93cml0ZV9QVUJLRVk7CisrCQlBQ0NFU1NfREVTQ1JJUFRJT05fbmV3OworKwkJWDUwOV9DRVJUX0FVWF9mcmVlOworKwkJZDJpX0FDQ0VTU19ERVNDUklQVElPTjsKKysJCVg1MDlfdHJ1c3RfY2xlYXI7CisrCQlYNTA5X1RSVVNUX2FkZDsKKysJCUFTTjFfVklTSUJMRVNUUklOR19uZXc7CisrCQlYNTA5X2FsaWFzX3NldDE7CisrCQlBU04xX1BSSU5UQUJMRVNUUklOR19mcmVlOworKwkJRVZQX1BLRVlfZ2V0MV9EU0E7CisrCQlBU04xX0JNUFNUUklOR19uZXc7CisrCQlBU04xX21ic3RyaW5nX2NvcHk7CisrCQlBU04xX1VURjhTVFJJTkdfbmV3OworKwkJRFNBX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCWkyZF9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlBU04xX1Q2MVNUUklOR19mcmVlOworKwkJRFNBX3NldF9tZXRob2Q7CisrCQlYNTA5X2dldF9leF9kYXRhOworKwkJQVNOMV9TVFJJTkdfdHlwZTsKKysJCVg1MDlfUFVSUE9TRV9nZXRfYnlfc25hbWU7CisrCQlBU04xX1RJTUVfZnJlZTsKKysJCUFTTjFfT0NURVRfU1RSSU5HX2NtcDsKKysJCUFTTjFfQklUX1NUUklOR19uZXc7CisrCQlYNTA5X2dldF9leHRfZDJpOworKwkJUEVNX3JlYWRfYmlvX1g1MDlfQVVYOworKwkJQVNOMV9TVFJJTkdfc2V0X2RlZmF1bHRfbWFza19hc2M7CisrCQlBU04xX1NUUklOR19zZXRfZGVmX21hc2tfYXNjOworKwkJUEVNX3dyaXRlX2Jpb19SU0FfUFVCS0VZOworKwkJQVNOMV9JTlRFR0VSX2NtcDsKKysJCWQyaV9SU0FfUFVCS0VZX2ZwOworKwkJWDUwOV90cnVzdF9zZXRfYml0X2FzYzsKKysJCVBFTV93cml0ZV9iaW9fRFNBX1BVQktFWTsKKysJCVg1MDlfU1RPUkVfQ1RYX2ZyZWU7CisrCQlFVlBfUEtFWV9zZXQxX0RTQTsKKysJCWkyZF9EU0FfUFVCS0VZX2ZwOworKwkJWDUwOV9sb2FkX2NlcnRfY3JsX2ZpbGU7CisrCQlBU04xX1RJTUVfbmV3OworKwkJaTJkX1JTQV9QVUJLRVk7CisrCQlYNTA5X1NUT1JFX0NUWF9wdXJwb3NlX2luaGVyaXQ7CisrCQlQRU1fcmVhZF9SU0FfUFVCS0VZOworKwkJZDJpX1g1MDlfQVVYOworKwkJaTJkX0RTQV9QVUJLRVk7CisrCQlYNTA5X0NFUlRfQVVYX3ByaW50OworKwkJUEVNX3JlYWRfRFNBX1BVQktFWTsKKysJCWkyZF9SU0FfUFVCS0VZX2JpbzsKKysJCUFTTjFfQklUX1NUUklOR19udW1fYXNjOworKwkJaTJkX1BVQktFWTsKKysJCUFTTjFfVVRDVElNRV9mcmVlOworKwkJRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCVg1MDlfUFVSUE9TRV9nZXRfYnlfaWQ7CisrCQlBQ0NFU1NfREVTQ1JJUFRJT05fZnJlZTsKKysJCVBFTV9yZWFkX2Jpb19QVUJLRVk7CisrCQlBU04xX1NUUklOR19zZXRfYnlfTklEOworKwkJWDUwOV9QVVJQT1NFX2dldF9pZDsKKysJCURJU1BMQVlURVhUX2ZyZWU7CisrCQlPVEhFUk5BTUVfbmV3OworKwkJWDUwOV9DRVJUX0FVWF9uZXc7CisrCQlYNTA5X1RSVVNUX2NsZWFudXA7CisrCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X09CSjsKKysJCVg1MDlfQ1JMX2dldF9leHRfZDJpOworKwkJWDUwOV9QVVJQT1NFX2dldDBfbmFtZTsKKysJCVBFTV9yZWFkX1BVQktFWTsKKysJCWkyZF9EU0FfUFVCS0VZX2JpbzsKKysJCWkyZF9PVEhFUk5BTUU7CisrCQlBU04xX09DVEVUX1NUUklOR19mcmVlOworKwkJQVNOMV9CSVRfU1RSSU5HX3NldF9hc2M7CisrCQlYNTA5X2dldF9leF9uZXdfaW5kZXg7CisrCQlBU04xX1NUUklOR19UQUJMRV9jbGVhbnVwOworKwkJWDUwOV9UUlVTVF9nZXRfYnlfaWQ7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X3RydXN0OworKwkJQVNOMV9TVFJJTkdfbGVuZ3RoOworKwkJZDJpX0FTTjFfU0VUX09GX0FDQ0VTU19ERVNDUklQVElPTjsKKysJCUFTTjFfUFJJTlRBQkxFU1RSSU5HX25ldzsKKysJCVg1MDlWM19nZXRfZDJpOworKwkJQVNOMV9FTlVNRVJBVEVEX2ZyZWU7CisrCQlpMmRfWDUwOV9DRVJUX0FVWDsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF90cnVzdDsKKysJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2s7CisrCQlYNTA5X1NUT1JFX0NUWF9uZXc7CisrCQlFVlBfUEtFWV9nZXQxX1JTQTsKKysJCURJUkVDVE9SWVNUUklOR19mcmVlOworKwkJUEVNX3dyaXRlX1g1MDlfQVVYOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfc2V0OworKwkJZDJpX0RTQV9QVUJLRVlfZnA7CisrCQlkMmlfUlNBX1BVQktFWTsKKysJCVg1MDlfVFJVU1RfZ2V0MF9uYW1lOworKwkJWDUwOV9UUlVTVF9nZXQwOworKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2ZyZWU7CisrCQlBU04xX0lBNVNUUklOR19uZXc7CisrCQlkMmlfRFNBX1BVQktFWTsKKysJCVg1MDlfY2hlY2tfcHVycG9zZTsKKysJCUFTTjFfRU5VTUVSQVRFRF9uZXc7CisrCQlkMmlfUlNBX1BVQktFWV9iaW87CisrCQlkMmlfUFVCS0VZOworKwkJWDUwOV9UUlVTVF9nZXRfdHJ1c3Q7CisrCQlYNTA5X1RSVVNUX2dldF9mbGFnczsKKysJCUFTTjFfQk1QU1RSSU5HX2ZyZWU7CisrCQlBU04xX1Q2MVNUUklOR19uZXc7CisrCQlBU04xX1VUQ1RJTUVfbmV3OworKwkJaTJkX0FVVEhPUklUWV9JTkZPX0FDQ0VTUzsKKysJCUVWUF9QS0VZX3NldDFfUlNBOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3B1cnBvc2U7CisrCQlBU04xX0lBNVNUUklOR19mcmVlOworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0FVWDsKKysJCVg1MDlfUFVSUE9TRV9nZXRfY291bnQ7CisrCQlDUllQVE9fYWRkX2luZm87CisrCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X3R4dDsKKysJCUFTTjFfU1RSSU5HX2dldF9kZWZhdWx0X21hc2s7CisrCQlYNTA5X2FsaWFzX2dldDA7CisrCQlBU04xX1NUUklOR19kYXRhOworKwkJaTJkX0FDQ0VTU19ERVNDUklQVElPTjsKKysJCVg1MDlfdHJ1c3Rfc2V0X2JpdDsKKysJCUFTTjFfQklUX1NUUklOR19mcmVlOworKwkJUEVNX3JlYWRfYmlvX1JTQV9QVUJLRVk7CisrCQlYNTA5X2FkZDFfcmVqZWN0X29iamVjdDsKKysJCVg1MDlfY2hlY2tfdHJ1c3Q7CisrCQlQRU1fcmVhZF9iaW9fRFNBX1BVQktFWTsKKysJCVg1MDlfUFVSUE9TRV9hZGQ7CisrCQlBU04xX1NUUklOR19UQUJMRV9nZXQ7CisrCQlBU04xX1VURjhTVFJJTkdfZnJlZTsKKysJCWQyaV9EU0FfUFVCS0VZX2JpbzsKKysJCVBFTV93cml0ZV9SU0FfUFVCS0VZOworKwkJZDJpX09USEVSTkFNRTsKKysJCVg1MDlfcmVqZWN0X3NldF9iaXQ7CisrCQlQRU1fd3JpdGVfRFNBX1BVQktFWTsKKysJCVg1MDlfUFVSUE9TRV9nZXQwX3NuYW1lOworKwkJRVZQX1BLRVlfc2V0MV9ESDsKKysJCUFTTjFfT0NURVRfU1RSSU5HX2R1cDsKKysJCUFTTjFfQklUX1NUUklOR19zZXQ7CisrCQlYNTA5X1RSVVNUX2dldF9jb3VudDsKKysJCUFTTjFfSU5URUdFUl9mcmVlOworKwkJT1RIRVJOQU1FX2ZyZWU7CisrCQlpMmRfUlNBX1BVQktFWV9mcDsKKysJCUFTTjFfSU5URUdFUl9kdXA7CisrCQlkMmlfWDUwOV9DRVJUX0FVWDsKKysJCVBFTV93cml0ZV9iaW9fUFVCS0VZOworKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2ZyZWU7CisrCQlYNTA5X1BVUlBPU0VfY2xlYW51cDsKKysJCUFTTjFfbWJzdHJpbmdfbmNvcHk7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9uZXc7CisrCQlFVlBfUEtFWV9nZXQxX0RIOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfbmV3OworKwkJQVNOMV9JTlRFR0VSX25ldzsKKysJCWkyZF9YNTA5X0FVWDsKKysJCUFTTjFfQklUX1NUUklOR19uYW1lX3ByaW50OworKwkJWDUwOV9jbXA7CisrCQlBU04xX1NUUklOR19sZW5ndGhfc2V0OworKwkJRElSRUNUT1JZU1RSSU5HX25ldzsKKysJCVg1MDlfYWRkMV90cnVzdF9vYmplY3Q7CisrCQlQS0NTMTJfbmV3cGFzczsKKysJCVNNSU1FX3dyaXRlX1BLQ1M3OworKwkJU01JTUVfcmVhZF9QS0NTNzsKKysJCURFU19zZXRfa2V5X2NoZWNrZWQ7CisrCQlQS0NTN192ZXJpZnk7CisrCQlQS0NTN19lbmNyeXB0OworKwkJREVTX3NldF9rZXlfdW5jaGVja2VkOworKwkJU01JTUVfY3JsZl9jb3B5OworKwkJaTJkX0FTTjFfUFJJTlRBQkxFU1RSSU5HOworKwkJUEtDUzdfZ2V0MF9zaWduZXJzOworKwkJUEtDUzdfZGVjcnlwdDsKKysJCVNNSU1FX3RleHQ7CisrCQlQS0NTN19zaW1wbGVfc21pbWVjYXA7CisrCQlQS0NTN19nZXRfc21pbWVjYXA7CisrCQlQS0NTN19zaWduOworKwkJUEtDUzdfYWRkX2F0dHJpYl9zbWltZWNhcDsKKysJCUNSWVBUT19kYmdfc2V0X29wdGlvbnM7CisrCQlDUllQVE9fcmVtb3ZlX2FsbF9pbmZvOworKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfZnVuY3Rpb25zOworKwkJQ1JZUFRPX2lzX21lbV9jaGVja19vbjsKKysJCUNSWVBUT19zZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKKysJCUNSWVBUT19wb3BfaW5mbzsKKysJCUNSWVBUT19wdXNoX2luZm9fOworKwkJQ1JZUFRPX3NldF9tZW1fZGVidWdfb3B0aW9uczsKKysJCVBFTV93cml0ZV9QS0NTOFByaXZhdGVLZXlfbmlkOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXlfbmlkOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZLZXlfbmlkOworKwkJZDJpX1BLQ1M4UHJpdmF0ZUtleV9iaW87CisrCQlBU04xX05VTExfZnJlZTsKKysJCWQyaV9BU04xX05VTEw7CisrCQlBU04xX05VTExfbmV3OworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9iaW87CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X2ZwOworKwkJaTJkX0FTTjFfTlVMTDsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlfbmlkX2ZwOworKwkJZDJpX1BLQ1M4UHJpdmF0ZUtleV9mcDsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlfbmlkX2JpbzsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2ZwOworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleUluZm9fYmlvOworKwkJUEVNX2NiOworKwkJaTJkX1ByaXZhdGVLZXlfZnA7CisrCQlkMmlfUHJpdmF0ZUtleV9iaW87CisrCQlkMmlfUHJpdmF0ZUtleV9mcDsKKysJCWkyZF9Qcml2YXRlS2V5X2JpbzsKKysJCVg1MDlfcmVqZWN0X2NsZWFyOworKwkJWDUwOV9UUlVTVF9zZXRfZGVmYXVsdDsKKysJCWQyaV9BdXRvUHJpdmF0ZUtleTsKKysJCVg1MDlfQVRUUklCVVRFX2dldDBfdHlwZTsKKysJCVg1MDlfQVRUUklCVVRFX3NldDFfZGF0YTsKKysJCVg1MDlhdF9nZXRfYXR0cjsKKysJCVg1MDlhdF9nZXRfYXR0cl9jb3VudDsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9OSUQ7CisrCQlYNTA5X0FUVFJJQlVURV9zZXQxX29iamVjdDsKKysJCVg1MDlfQVRUUklCVVRFX2NvdW50OworKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X09CSjsKKysJCVg1MDlfQVRUUklCVVRFX2dldDBfb2JqZWN0OworKwkJWDUwOWF0X2dldF9hdHRyX2J5X05JRDsKKysJCVg1MDlhdF9hZGQxX2F0dHI7CisrCQlYNTA5X0FUVFJJQlVURV9nZXQwX2RhdGE7CisrCQlYNTA5YXRfZGVsZXRlX2F0dHI7CisrCQlYNTA5YXRfZ2V0X2F0dHJfYnlfT0JKOworKwkJUkFORF9hZGQ7CisrCQlCSU9fbnVtYmVyX3dyaXR0ZW47CisrCQlCSU9fbnVtYmVyX3JlYWQ7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQxX2NoYWluOworKwkJRVJSX2xvYWRfUkFORF9zdHJpbmdzOworKwkJUkFORF9wc2V1ZG9fYnl0ZXM7CisrCQlYNTA5X1JFUV9nZXRfYXR0cl9ieV9OSUQ7CisrCQlYNTA5X1JFUV9nZXRfYXR0cjsKKysJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlYNTA5X1JFUV9nZXRfYXR0cl9ieV9PQko7CisrCQlYNTA5YXRfYWRkMV9hdHRyX2J5X05JRDsKKysJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV9PQko7CisrCQlYNTA5X1JFUV9nZXRfYXR0cl9jb3VudDsKKysJCVg1MDlfUkVRX2FkZDFfYXR0cjsKKysJCVg1MDlfUkVRX2RlbGV0ZV9hdHRyOworKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9PQko7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfdHh0OworKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X3R4dDsKKysJCVg1MDlhdF9hZGQxX2F0dHJfYnlfdHh0OworKwkJQk5fcHNldWRvX3JhbmQ7CisrCQlCTl9pc19wcmltZV9mYXN0dGVzdDsKKysJCUJOX0NUWF9lbmQ7CisrCQlCTl9DVFhfc3RhcnQ7CisrCQlCTl9DVFhfZ2V0OworKwkJRVZQX1BLRVkyUEtDUzhfYnJva2VuOworKwkJQVNOMV9TVFJJTkdfVEFCTEVfYWRkOworKwkJQ1JZUFRPX2RiZ19nZXRfb3B0aW9uczsKKysJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19uZXc7CisrCQlDUllQVE9fZ2V0X21lbV9kZWJ1Z19vcHRpb25zOworKwkJREVTX2NyeXB0OworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X1JFUV9ORVc7CisrCQlQRU1fd3JpdGVfWDUwOV9SRVFfTkVXOworKwkJQklPX2NhbGxiYWNrX2N0cmw7CisrCQlSQU5EX2VnZDsKKysJCVJBTkRfc3RhdHVzOworKwkJYm5fZHVtcDE7CisrCQlERVNfY2hlY2tfa2V5X3Bhcml0eTsKKysJCWxoX251bV9pdGVtczsKKysJCVJBTkRfZXZlbnQ7CisrCQlEU09fbmV3OworKwkJRFNPX25ld19tZXRob2Q7CisrCQlEU09fZnJlZTsKKysJCURTT19mbGFnczsKKysJCURTT191cDsKKysJCURTT19zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlEU09fZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNPX2dldF9tZXRob2Q7CisrCQlEU09fc2V0X21ldGhvZDsKKysJCURTT19sb2FkOworKwkJRFNPX2JpbmRfdmFyOworKwkJRFNPX01FVEhPRF9udWxsOworKwkJRFNPX01FVEhPRF9vcGVuc3NsOworKwkJRFNPX01FVEhPRF9kbGZjbjsKKysJCURTT19NRVRIT0Rfd2luMzI7CisrCQlFUlJfbG9hZF9EU09fc3RyaW5nczsKKysJCURTT19NRVRIT0RfZGw7CisrCQlOQ09ORl9sb2FkOworKwkJTkNPTkZfbG9hZF9mcDsKKysJCU5DT05GX25ldzsKKysJCU5DT05GX2dldF9zdHJpbmc7CisrCQlOQ09ORl9mcmVlOworKwkJTkNPTkZfZ2V0X251bWJlcjsKKysJCUNPTkZfZHVtcF9mcDsKKysJCU5DT05GX2xvYWRfYmlvOworKwkJTkNPTkZfZHVtcF9mcDsKKysJCU5DT05GX2dldF9zZWN0aW9uOworKwkJTkNPTkZfZHVtcF9iaW87CisrCQlDT05GX2R1bXBfYmlvOworKwkJTkNPTkZfZnJlZV9kYXRhOworKwkJQ09ORl9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlFUlJfZXJyb3Jfc3RyaW5nX247CisrCQlCSU9fc25wcmludGY7CisrCQlEU09fY3RybDsKKysJCWkyZF9BU04xX1NFVF9PRl9BU04xX0lOVEVHRVI7CisrCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzEyX1NBRkVCQUc7CisrCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzc7CisrCQlCSU9fdmZyZWU7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOworKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOworKwkJQVNOMV9VVENUSU1FX2dldDsKKysJCVg1MDlfUkVRX2RpZ2VzdDsKKysJCVg1MDlfQ1JMX2RpZ2VzdDsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTNzsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVuZ3RoOworKwkJRVZQX0NJUEhFUl9DVFhfY3RybDsKKysJCUJOX21vZF9leHBfbW9udF93b3JkOworKwkJUkFORF9lZ2RfYnl0ZXM7CisrCQlYNTA5X1JFUV9nZXQxX2VtYWlsOworKwkJWDUwOV9nZXQxX2VtYWlsOworKwkJWDUwOV9lbWFpbF9mcmVlOworKwkJaTJkX1JTQV9ORVQ7CisrCQlkMmlfUlNBX05FVF8yOworKwkJZDJpX1JTQV9ORVQ7CisrCQlEU09fYmluZF9mdW5jOworKwkJQ1JZUFRPX2dldF9uZXdfZHlubG9ja2lkOworKwkJc2tfbmV3X251bGw7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfZHlubG9ja19kZXN0cm95X2NiOworKwkJQ1JZUFRPX2Rlc3Ryb3lfZHlubG9ja2lkOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX3NpemU7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYjsKKysJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2xvY2tfY2I7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfZHlubG9ja19sb2NrX2NiOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKKysJCUNSWVBUT19nZXRfZHlubG9ja192YWx1ZTsKKysJCUNSWVBUT19nZXRfZHlubG9ja19jcmVhdGVfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NiOworKwkJYzJpX0FTTjFfQklUX1NUUklORzsKKysJCWkyY19BU04xX0JJVF9TVFJJTkc7CisrCQlSQU5EX3BvbGw7CisrCQljMmlfQVNOMV9JTlRFR0VSOworKwkJaTJjX0FTTjFfSU5URUdFUjsKKysJCUJJT19kdW1wX2luZGVudDsKKysJCUFTTjFfcGFyc2VfZHVtcDsKKysJCWMyaV9BU04xX09CSkVDVDsKKysJCVg1MDlfTkFNRV9wcmludF9leF9mcDsKKysJCUFTTjFfU1RSSU5HX3ByaW50X2V4X2ZwOworKwkJWDUwOV9OQU1FX3ByaW50X2V4OworKwkJQVNOMV9TVFJJTkdfcHJpbnRfZXg7CisrCQlNRDQ7CisrCQlNRDRfVHJhbnNmb3JtOworKwkJTUQ0X0ZpbmFsOworKwkJTUQ0X1VwZGF0ZTsKKysJCU1ENF9Jbml0OworKwkJRVZQX21kNDsKKysJCWkyZF9QVUJLRVlfYmlvOworKwkJaTJkX1BVQktFWV9mcDsKKysJCWQyaV9QVUJLRVlfYmlvOworKwkJQVNOMV9TVFJJTkdfdG9fVVRGODsKKysJCUJJT192cHJpbnRmOworKwkJQklPX3ZzbnByaW50ZjsKKysJCWQyaV9QVUJLRVlfZnA7CisrCQlYNTA5X2NtcF90aW1lOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3RpbWU7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQxX2lzc3VlcjsKKysJCVg1MDlfT0JKRUNUX3JldHJpZXZlX21hdGNoOworKwkJWDUwOV9PQkpFQ1RfaWR4X2J5X3N1YmplY3Q7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZmxhZ3M7CisrCQlYNTA5X1NUT1JFX0NUWF90cnVzdGVkX3N0YWNrOworKwkJWDUwOV90aW1lX2FkajsKKysJCVg1MDlfY2hlY2tfaXNzdWVkOworKwkJQVNOMV9VVENUSU1FX2NtcF90aW1lX3Q7CisrCQlERVNfc2V0X3dlYWtfa2V5X2ZsYWc7CisrCQlERVNfY2hlY2tfa2V5OworKwkJREVTX3J3X21vZGU7CisrCQlSU0FfUEtDUzFfUlNBcmVmOworKwkJWDUwOV9rZXlpZF9zZXQxOworKwkJQklPX25leHQ7CisrCQlEU09fTUVUSE9EX3ZtczsKKysJCUJJT19mX2xpbmVidWZmZXI7CisrCQlCTl9ibnRlc3RfcmFuZDsKKysJCU9QRU5TU0xfaXNzZXR1Z2lkOworKwkJQk5fcmFuZF9yYW5nZTsKKysJCUVSUl9sb2FkX0VOR0lORV9zdHJpbmdzOworKwkJRU5HSU5FX3NldF9EU0E7CisrCQlFTkdJTkVfZ2V0X2ZpbmlzaF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9SU0E7CisrCQlFTkdJTkVfZ2V0X0JOX21vZF9leHA7CisrCQlEU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfc2V0X0RIOworKwkJRU5HSU5FX3NldF9kZWZfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfaW5pdDsKKysJCURIX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJUlNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX2ZpbmlzaDsKKysJCUVOR0lORV9sb2FkX3B1YmxpY19rZXk7CisrCQlFTkdJTkVfZ2V0X0RIOworKwkJRU5HSU5FX2N0cmw7CisrCQlFTkdJTkVfZ2V0X2luaXRfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2luaXRfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfRFNBOworKwkJRU5HSU5FX2dldF9uYW1lOworKwkJRU5HSU5FX2dldF9sYXN0OworKwkJRU5HSU5FX2dldF9wcmV2OworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RIOworKwkJRU5HSU5FX2dldF9SU0E7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHQ7CisrCQlFTkdJTkVfZ2V0X1JBTkQ7CisrCQlFTkdJTkVfZ2V0X2ZpcnN0OworKwkJRU5HSU5FX2J5X2lkOworKwkJRU5HSU5FX3NldF9maW5pc2hfZnVuY3Rpb247CisrCQlFTkdJTkVfZ2V0X2RlZl9CTl9tb2RfZXhwX2NydDsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9CTl9tb2RfZXhwX2NydDsKKysJCVJTQV9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCUVOR0lORV9zZXRfUlNBOworKwkJRU5HSU5FX2xvYWRfcHJpdmF0ZV9rZXk7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfUkFORDsKKysJCUVOR0lORV9zZXRfQk5fbW9kX2V4cDsKKysJCUVOR0lORV9yZW1vdmU7CisrCQlFTkdJTkVfZnJlZTsKKysJCUVOR0lORV9nZXRfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfZ2V0X25leHQ7CisrCQlFTkdJTkVfc2V0X25hbWU7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRFNBOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHA7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfUlNBOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X1JBTkQ7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cDsKKysJCUVOR0lORV9zZXRfUkFORDsKKysJCUVOR0lORV9zZXRfaWQ7CisrCQlFTkdJTkVfc2V0X0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RIOworKwkJRU5HSU5FX25ldzsKKysJCUVOR0lORV9nZXRfaWQ7CisrCQlEU0Ffc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfYWRkOworKwkJREhfc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfZ2V0X0RTQTsKKysJCUVOR0lORV9nZXRfY3RybF9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfY3RybF9mdW5jdGlvbjsKKysJCUJOX3BzZXVkb19yYW5kX3JhbmdlOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3ZlcmlmeV9jYjsKKysJCUVSUl9sb2FkX0NPTVBfc3RyaW5nczsKKysJCVBLQ1MxMl9pdGVtX2RlY3J5cHRfZDJpOworKwkJQVNOMV9VVEY4U1RSSU5HX2l0OworKwkJRU5HSU5FX3VucmVnaXN0ZXJfY2lwaGVyczsKKysJCUVOR0lORV9nZXRfY2lwaGVyczsKKysJCWQyaV9PQ1NQX0JBU0lDUkVTUDsKKysJCUtSQjVfQ0hFQ0tTVU1faXQ7CisrCQlFQ19QT0lOVF9hZGQ7CisrCQlBU04xX2l0ZW1fZXhfaTJkOworKwkJT0NTUF9DRVJUSURfaXQ7CisrCQlkMmlfT0NTUF9SRVNQQllURVM7CisrCQlYNTA5VjNfYWRkMV9pMmQ7CisrCQlQS0NTN19FTlZFTE9QRV9pdDsKKysJCVVJX2FkZF9pbnB1dF9ib29sZWFuOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfUlNBOworKwkJWDUwOVYzX0VYVF9uY29uZjsKKysJCUFTTjFfR0VORVJBTFNUUklOR19mcmVlOworKwkJZDJpX09DU1BfQ0VSVFNUQVRVUzsKKysJCVg1MDlfUkVWT0tFRF9zZXRfc2VyaWFsTnVtYmVyOworKwkJWDUwOV9wcmludF9leDsKKysJCU9DU1BfT05FUkVRX2dldDFfZXh0X2QyaTsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfUkFORDsKKysJCUVOR0lORV9sb2FkX2R5bmFtaWM7CisrCQlQQktERjJQQVJBTV9pdDsKKysJCUVYVEVOREVEX0tFWV9VU0FHRV9uZXc7CisrCQlFQ19HUk9VUF9jbGVhcl9mcmVlOworKwkJT0NTUF9zZW5kcmVxX2JpbzsKKysJCUFTTjFfaXRlbV9kaWdlc3Q7CisrCQlPQ1NQX0JBU0lDUkVTUF9kZWxldGVfZXh0OworKwkJT0NTUF9TSUdOQVRVUkVfaXQ7CisrCQlYNTA5X0NSTF9pdDsKKysJCU9DU1BfQkFTSUNSRVNQX2FkZF9leHQ7CisrCQlLUkI1X0VOQ0tFWV9pdDsKKysJCVVJX21ldGhvZF9zZXRfY2xvc2VyOworKwkJWDUwOV9TVE9SRV9zZXRfcHVycG9zZTsKKysJCWkyZF9BU04xX0dFTkVSQUxTVFJJTkc7CisrCQlPQ1NQX3Jlc3BvbnNlX3N0YXR1czsKKysJCWkyZF9PQ1NQX1NFUlZJQ0VMT0M7CisrCQlFTkdJTkVfZ2V0X2RpZ2VzdF9lbmdpbmU7CisrCQlFQ19HUk9VUF9zZXRfY3VydmVfR0ZwOworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfT0JKOworKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fa2V5OworKwkJQVNOMV9UNjFTVFJJTkdfaXQ7CisrCQlFQ19HUk9VUF9tZXRob2Rfb2Y7CisrCQlpMmRfS1JCNV9BUFJFUTsKKysJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDsKKysJCUFTTjFfUFJJTlRBQkxFX25ldzsKKysJCUhNQUNfSW5pdF9leDsKKysJCWQyaV9LUkI1X0FVVEhFTlQ7CisrCQlPQ1NQX2FyY2hpdmVfY3V0b2ZmX25ldzsKKysJCUVDX1BPSU5UX3NldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnA7CisrCQlFQ19QT0lOVF9zZXRfSnByb2pfY29vcmRzX0dGcDsKKysJCV9vc3NsX29sZF9kZXNfaXNfd2Vha19rZXk7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X09CSjsKKysJCUVDX1BPSU5UX29jdDJwb2ludDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2NvdW50OworKwkJVUlfY3RybDsKKysJCV9zaGFkb3dfREVTX3J3X21vZGU7CisrCQlhc24xX2RvX2FkYjsKKysJCUFTTjFfdGVtcGxhdGVfaTJkOworKwkJRU5HSU5FX3JlZ2lzdGVyX0RIOworKwkJVUlfY29uc3RydWN0X3Byb21wdDsKKysJCVg1MDlfU1RPUkVfc2V0X3RydXN0OworKwkJVUlfZHVwX2lucHV0X3N0cmluZzsKKysJCWQyaV9LUkI1X0FQUkVROworKwkJRVZQX01EX0NUWF9jb3B5X2V4OworKwkJT0NTUF9yZXF1ZXN0X2lzX3NpZ25lZDsKKysJCWkyZF9PQ1NQX1JFUUlORk87CisrCQlLUkI1X0VOQ0tFWV9mcmVlOworKwkJT0NTUF9yZXNwX2dldDA7CisrCQlHRU5FUkFMX05BTUVfaXQ7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9pdDsKKysJCVg1MDlfU1RPUkVfc2V0X2ZsYWdzOworKwkJRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfc2V0X2NvbXByX2Nvb3Jkc19HRnA7CisrCQlPQ1NQX3Jlc3BvbnNlX3N0YXR1c19zdHI7CisrCQlkMmlfT0NTUF9SRVZPS0VESU5GTzsKKysJCU9DU1BfYmFzaWNfYWRkMV9jZXJ0OworKwkJRVJSX2dldF9pbXBsZW1lbnRhdGlvbjsKKysJCUVWUF9DaXBoZXJGaW5hbF9leDsKKysJCU9DU1BfQ0VSVFNUQVRVU19uZXc7CisrCQlDUllQVE9fY2xlYW51cF9hbGxfZXhfZGF0YTsKKysJCU9DU1BfcmVzcF9maW5kOworKwkJQk5fbm5tb2Q7CisrCQlYNTA5X0NSTF9zb3J0OworKwkJWDUwOV9SRVZPS0VEX3NldF9yZXZvY2F0aW9uRGF0ZTsKKysJCUVOR0lORV9yZWdpc3Rlcl9SQU5EOworKwkJT0NTUF9TRVJWSUNFTE9DX25ldzsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZHNfR0ZwOworKwkJX29zc2xfb2xkX2Rlc19vcHRpb25zOworKwkJU1hORVRfaXQ7CisrCQlVSV9kdXBfaW5wdXRfYm9vbGVhbjsKKysJCVBLQ1MxMl9hZGRfQ1NQTmFtZV9hc2M7CisrCQlFQ19QT0lOVF9pc19hdF9pbmZpbml0eTsKKysJCUVOR0lORV9sb2FkX2NyeXB0b2RldjsKKysJCURTT19jb252ZXJ0X2ZpbGVuYW1lOworKwkJUE9MSUNZUVVBTElORk9faXQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfY2lwaGVyczsKKysJCUJOX21vZF9sc2hpZnRfcXVpY2s7CisrCQlEU09fc2V0X2ZpbGVuYW1lOworKwkJQVNOMV9pdGVtX2ZyZWU7CisrCQlLUkI1X1RLVEJPRFlfZnJlZTsKKysJCUFVVEhPUklUWV9LRVlJRF9pdDsKKysJCUtSQjVfQVBSRVFCT0RZX25ldzsKKysJCVg1MDlWM19FWFRfUkVRX2FkZF9uY29uZjsKKysJCUVOR0lORV9jdHJsX2NtZF9zdHJpbmc7CisrCQlpMmRfT0NTUF9SRVNQREFUQTsKKysJCUVWUF9NRF9DVFhfaW5pdDsKKysJCUVYVEVOREVEX0tFWV9VU0FHRV9mcmVlOworKwkJUEtDUzdfQVRUUl9TSUdOX2l0OworKwkJVUlfYWRkX2Vycm9yX3N0cmluZzsKKysJCUtSQjVfQ0hFQ0tTVU1fZnJlZTsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0OworKwkJRU5HSU5FX2xvYWRfdWJzZWM7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2RpZ2VzdHM7CisrCQlQS0VZX1VTQUdFX1BFUklPRF9pdDsKKysJCVBLQ1MxMl91bnBhY2tfYXV0aHNhZmVzOworKwkJQVNOMV9pdGVtX3VucGFjazsKKysJCU5FVFNDQVBFX1NQS0FDX2l0OworKwkJWDUwOV9SRVZPS0VEX2l0OworKwkJQVNOMV9TVFJJTkdfZW5jb2RlOworKwkJRVZQX2Flc18xMjhfZWNiOworKwkJS1JCNV9BVVRIRU5UX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0OworKwkJT0NTUF9jZXJ0X3N0YXR1c19zdHI7CisrCQlkMmlfT0NTUF9SRVFVRVNUOworKwkJVUlfZHVwX2luZm9fc3RyaW5nOworKwkJX29zc2xfb2xkX2Rlc194d2hpdGVfaW4yb3V0OworKwkJUEtDUzEyX2l0OworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9jcml0OworKwkJT0NTUF9DRVJUU1RBVFVTX2ZyZWU7CisrCQlfb3NzbF9vbGRfZGVzX2NyeXB0OworKwkJQVNOMV9pdGVtX2kyZDsKKysJCUVWUF9EZWNyeXB0RmluYWxfZXg7CisrCQlFTkdJTkVfbG9hZF9vcGVuc3NsOworKwkJRU5HSU5FX2dldF9jbWRfZGVmbnM7CisrCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfbG9hZF9wcml2a2V5X2ZuOworKwkJRVZQX0VuY3J5cHRGaW5hbF9leDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9kaWdlc3RzOworKwkJWDUwOV9nZXQwX3B1YmtleV9iaXRzdHI7CisrCQlhc24xX2V4X2kyYzsKKysJCUVOR0lORV9yZWdpc3Rlcl9SU0E7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9EU0E7CisrCQlfb3NzbF9vbGRfZGVzX2tleV9zY2hlZDsKKysJCVg1MDlfRVhURU5TSU9OX2l0OworKwkJaTJkX0tSQjVfQVVUSEVOVDsKKysJCVNYTkVUSURfaXQ7CisrCQlkMmlfT0NTUF9TSU5HTEVSRVNQOworKwkJRURJUEFSVFlOQU1FX25ldzsKKysJCVBLQ1MxMl9jZXJ0YmFnMng1MDk7CisrCQlfb3NzbF9vbGRfZGVzX29mYjY0X2VuY3J5cHQ7CisrCQlkMmlfRVhURU5ERURfS0VZX1VTQUdFOworKwkJRVJSX3ByaW50X2Vycm9yc19jYjsKKysJCUVOR0lORV9zZXRfY2lwaGVyczsKKysJCWQyaV9LUkI1X0FQUkVRQk9EWTsKKysJCVVJX21ldGhvZF9nZXRfZmx1c2hlcjsKKysJCVg1MDlfUFVCS0VZX2l0OworKwkJX29zc2xfb2xkX2Rlc19lbmNfcmVhZDsKKysJCVBLQ1M3X0VOQ1JZUFRfaXQ7CisrCQlpMmRfT0NTUF9SRVNQT05TRTsKKysJCUVDX0dST1VQX2dldF9jb2ZhY3RvcjsKKysJCVBLQ1MxMl91bnBhY2tfcDdkYXRhOworKwkJZDJpX0tSQjVfQVVUSERBVEE7CisrCQlPQ1NQX2NvcHlfbm9uY2U7CisrCQlLUkI1X0FVVEhEQVRBX25ldzsKKysJCU9DU1BfUkVTUERBVEFfbmV3OworKwkJRUNfR0ZwX21vbnRfbWV0aG9kOworKwkJT0NTUF9SRVZPS0VESU5GT19mcmVlOworKwkJVUlfZ2V0X2V4X2RhdGE7CisrCQlLUkI1X0FQUkVRQk9EWV9mcmVlOworKwkJRUNfR1JPVVBfZ2V0MF9nZW5lcmF0b3I7CisrCQlVSV9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlYNTA5VjNfc2V0X25jb25mOworKwkJUEtDUzEyX2l0ZW1faTJkX2VuY3J5cHQ7CisrCQlYNTA5X2FkZDFfZXh0X2kyZDsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX2l0OworKwkJS1JCNV9QUklOQ05BTUVfbmV3OworKwkJUEtDUzEyX1NBRkVCQUdfaXQ7CisrCQlFQ19HUk9VUF9nZXRfb3JkZXI7CisrCQlkMmlfT0NTUF9SRVNQSUQ7CisrCQlPQ1NQX3JlcXVlc3RfdmVyaWZ5OworKwkJTkNPTkZfZ2V0X251bWJlcl9lOworKwkJX29zc2xfb2xkX2Rlc19kZWNyeXB0MzsKKysJCVg1MDlfc2lnbmF0dXJlX3ByaW50OworKwkJT0NTUF9TSU5HTEVSRVNQX2ZyZWU7CisrCQlFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXM7CisrCQlpMmRfT0NTUF9PTkVSRVE7CisrCQlPQ1NQX1JFUVVFU1RfYWRkX2V4dDsKKysJCU9DU1BfUkVTUEJZVEVTX25ldzsKKysJCUVWUF9NRF9DVFhfY3JlYXRlOworKwkJT0NTUF9yZXNwX2ZpbmRfc3RhdHVzOworKwkJWDUwOV9BTEdPUl9pdDsKKysJCUFTTjFfVElNRV9pdDsKKysJCU9DU1BfcmVxdWVzdF9zZXQxX25hbWU7CisrCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2NvdW50OworKwkJVUlfZ2V0MF9yZXN1bHQ7CisrCQlQS0NTMTJfQVVUSFNBRkVTX2l0OworKwkJRVZQX2Flc18yNTZfZWNiOworKwkJUEtDUzEyX3BhY2tfYXV0aHNhZmVzOworKwkJQVNOMV9JQTVTVFJJTkdfaXQ7CisrCQlVSV9nZXRfaW5wdXRfZmxhZ3M7CisrCQlFQ19HUk9VUF9zZXRfZ2VuZXJhdG9yOworKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fMmtleXM7CisrCQlPQ1NQX0NFUlRJRF9mcmVlOworKwkJWDUwOV9DRVJUX0FVWF9pdDsKKysJCUNFUlRJRklDQVRFUE9MSUNJRVNfaXQ7CisrCQlfb3NzbF9vbGRfZGVzX2VkZTNfY2JjX2VuY3J5cHQ7CisrCQlSQU5EX3NldF9yYW5kX2VuZ2luZTsKKysJCURTT19nZXRfbG9hZGVkX2ZpbGVuYW1lOworKwkJWDUwOV9BVFRSSUJVVEVfaXQ7CisrCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2J5X05JRDsKKysJCVBLQ1MxMl9kZWNyeXB0X3NrZXk7CisrCQlLUkI1X0FVVEhFTlRfaXQ7CisrCQlVSV9kdXBfZXJyb3Jfc3RyaW5nOworKwkJUlNBUHVibGljS2V5X2l0OworKwkJaTJkX09DU1BfUkVRVUVTVDsKKysJCVBLQ1MxMl94NTA5Y3JsMmNlcnRiYWc7CisrCQlPQ1NQX1NFUlZJQ0VMT0NfaXQ7CisrCQlBU04xX2l0ZW1fc2lnbjsKKysJCVg1MDlfQ1JMX3NldF9pc3N1ZXJfbmFtZTsKKysJCU9CSl9OQU1FX2RvX2FsbF9zb3J0ZWQ7CisrCQlpMmRfT0NTUF9CQVNJQ1JFU1A7CisrCQlpMmRfT0NTUF9SRVNQQllURVM7CisrCQlQS0NTMTJfdW5wYWNrX3A3ZW5jZGF0YTsKKysJCUhNQUNfQ1RYX2luaXQ7CisrCQlFTkdJTkVfZ2V0X2RpZ2VzdDsKKysJCU9DU1BfUkVTUE9OU0VfcHJpbnQ7CisrCQlLUkI1X1RLVEJPRFlfaXQ7CisrCQlBQ0NFU1NfREVTQ1JJUFRJT05faXQ7CisrCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9pdDsKKysJCVBCRTJQQVJBTV9pdDsKKysJCVBLQ1MxMl9jZXJ0YmFnMng1MDljcmw7CisrCQlQS0NTN19TSUdORURfaXQ7CisrCQlFTkdJTkVfZ2V0X2NpcGhlcjsKKysJCWkyZF9PQ1NQX0NSTElEOworKwkJT0NTUF9TSU5HTEVSRVNQX25ldzsKKysJCUVOR0lORV9jbWRfaXNfZXhlY3V0YWJsZTsKKysJCVJTQV91cF9yZWY7CisrCQlBU04xX0dFTkVSQUxTVFJJTkdfaXQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfRFNBOworKwkJWDUwOVYzX0VYVF9hZGRfbmNvbmZfc2s7CisrCQlFTkdJTkVfc2V0X2xvYWRfcHVia2V5X2Z1bmN0aW9uOworKwkJUEtDUzhfZGVjcnlwdDsKKysJCVBFTV9ieXRlc19yZWFkX2JpbzsKKysJCURJUkVDVE9SWVNUUklOR19pdDsKKysJCWQyaV9PQ1NQX0NSTElEOworKwkJRUNfUE9JTlRfaXNfb25fY3VydmU7CisrCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOworKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOworKwkJZDJpX0tSQjVfQ0hFQ0tTVU07CisrCQlBU04xX2l0ZW1fZHVwOworKwkJWDUwOV9pdDsKKysJCUJOX21vZF9hZGQ7CisrCQlLUkI1X0FVVEhEQVRBX2ZyZWU7CisrCQlfb3NzbF9vbGRfZGVzX2NiY19ja3N1bTsKKysJCUFTTjFfaXRlbV92ZXJpZnk7CisrCQlDUllQVE9fc2V0X21lbV9leF9mdW5jdGlvbnM7CisrCQlFQ19QT0lOVF9nZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfZ2V0X0pwcm9qX2Nvb3Jkc19HRnA7CisrCQlaTE9OR19pdDsKKysJCUNSWVBUT19nZXRfbG9ja2VkX21lbV9leF9mdW5jdGlvbnM7CisrCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3M7CisrCQlBU04xX1RJTUVfY2hlY2s7CisrCQlVSV9nZXQwX3VzZXJfZGF0YTsKKysJCUhNQUNfQ1RYX2NsZWFudXA7CisrCQlEU0FfdXBfcmVmOworKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7CisrCQlfb3NzbF9vZGVzX2VkZTNfY2ZiNjRfZW5jcnlwdDsKKysJCUFTTjFfQk1QU1RSSU5HX2l0OworKwkJQVNOMV90YWcyYml0OworKwkJVUlfbWV0aG9kX3NldF9mbHVzaGVyOworKwkJWDUwOV9vY3NwaWRfcHJpbnQ7CisrCQlLUkI1X0VOQ0RBVEFfaXQ7CisrCQlFTkdJTkVfZ2V0X2xvYWRfcHVia2V5X2Z1bmN0aW9uOworKwkJVUlfYWRkX3VzZXJfZGF0YTsKKysJCU9DU1BfUkVRVUVTVF9kZWxldGVfZXh0OworKwkJVUlfZ2V0X21ldGhvZDsKKysJCU9DU1BfT05FUkVRX2ZyZWU7CisrCQlBU04xX1BSSU5UQUJMRVNUUklOR19pdDsKKysJCVg1MDlfQ1JMX3NldF9uZXh0VXBkYXRlOworKwkJT0NTUF9SRVFVRVNUX2l0OworKwkJT0NTUF9CQVNJQ1JFU1BfaXQ7CisrCQlBRVNfZWNiX2VuY3J5cHQ7CisrCQlCTl9tb2Rfc3FyOworKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9pdDsKKysJCUdFTkVSQUxfTkFNRVNfaXQ7CisrCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfaXQ7CisrCQlBU04xX0ZCT09MRUFOX2l0OworKwkJVUlfc2V0X2V4X2RhdGE7CisrCQlfb3NzbF9vbGRfZGVzX3N0cmluZ190b19rZXk7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JTQTsKKysJCWQyaV9LUkI1X1BSSU5DTkFNRTsKKysJCU9DU1BfUkVTUEJZVEVTX2l0OworKwkJWDUwOV9DSU5GX2l0OworKwkJRU5HSU5FX3VucmVnaXN0ZXJfZGlnZXN0czsKKysJCWQyaV9FRElQQVJUWU5BTUU7CisrCQlkMmlfT0NTUF9TRVJWSUNFTE9DOworKwkJRU5HSU5FX2dldF9kaWdlc3RzOworKwkJX29zc2xfb2xkX2Rlc19zZXRfb2RkX3Bhcml0eTsKKysJCU9DU1BfUkVTUERBVEFfZnJlZTsKKysJCWQyaV9LUkI1X1RJQ0tFVDsKKysJCU9USEVSTkFNRV9pdDsKKysJCUVWUF9NRF9DVFhfY2xlYW51cDsKKysJCWQyaV9BU04xX0dFTkVSQUxTVFJJTkc7CisrCQlYNTA5X0NSTF9zZXRfdmVyc2lvbjsKKysJCUJOX21vZF9zdWI7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9OSUQ7CisrCQlFTkdJTkVfZ2V0X2V4X25ld19pbmRleDsKKysJCU9DU1BfUkVRVUVTVF9mcmVlOworKwkJT0NTUF9SRVFVRVNUX2FkZDFfZXh0X2kyZDsKKysJCVg1MDlfVkFMX2l0OworKwkJRUNfUE9JTlRzX21ha2VfYWZmaW5lOworKwkJRUNfUE9JTlRfbXVsOworKwkJWDUwOVYzX0VYVF9hZGRfbmNvbmY7CisrCQlYNTA5X1RSVVNUX3NldDsKKysJCVg1MDlfQ1JMX2FkZDFfZXh0X2kyZDsKKysJCV9vc3NsX29sZF9kZXNfZmNyeXB0OworKwkJRElTUExBWVRFWFRfaXQ7CisrCQlYNTA5X0NSTF9zZXRfbGFzdFVwZGF0ZTsKKysJCU9DU1BfQkFTSUNSRVNQX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9hZGQxX2V4dF9pMmQ7CisrCQlkMmlfS1JCNV9BVVRIRU5UQk9EWTsKKysJCUNSWVBUT19zZXRfZXhfZGF0YV9pbXBsZW1lbnRhdGlvbjsKKysJCUNSWVBUT19zZXRfZXhfZGF0YV9pbXBsOworKwkJS1JCNV9FTkNEQVRBX25ldzsKKysJCURTT191cF9yZWY7CisrCQlPQ1NQX2NybF9yZWFzb25fc3RyOworKwkJVUlfZ2V0MF9yZXN1bHRfc3RyaW5nOworKwkJQVNOMV9HRU5FUkFMU1RSSU5HX25ldzsKKysJCVg1MDlfU0lHX2l0OworKwkJRVJSX3NldF9pbXBsZW1lbnRhdGlvbjsKKysJCUVSUl9sb2FkX0VDX3N0cmluZ3M7CisrCQlVSV9nZXQwX2FjdGlvbl9zdHJpbmc7CisrCQlPQ1NQX09ORVJFUV9nZXRfZXh0OworKwkJRUNfUE9JTlRfbWV0aG9kX29mOworKwkJaTJkX0tSQjVfQVBSRVFCT0RZOworKwkJX29zc2xfb2xkX2Rlc19lY2IzX2VuY3J5cHQ7CisrCQlDUllQVE9fZ2V0X21lbV9leF9mdW5jdGlvbnM7CisrCQlFTkdJTkVfZ2V0X2V4X2RhdGE7CisrCQlVSV9kZXN0cm95X21ldGhvZDsKKysJCUFTTjFfaXRlbV9pMmRfYmlvOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9PQko7CisrCQlBU04xX3ByaW1pdGl2ZV9uZXc7CisrCQlBU04xX1BSSU5UQUJMRV9pdDsKKysJCUVWUF9hZXNfMTkyX2VjYjsKKysJCU9DU1BfU0lHTkFUVVJFX25ldzsKKysJCUxPTkdfaXQ7CisrCQlBU04xX1ZJU0lCTEVTVFJJTkdfaXQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfYWRkMV9leHRfaTJkOworKwkJZDJpX09DU1BfQ0VSVElEOworKwkJQVNOMV9pdGVtX2QyaV9mcDsKKysJCUNSTF9ESVNUX1BPSU5UU19pdDsKKysJCUdFTkVSQUxfTkFNRV9wcmludDsKKysJCU9DU1BfU0lOR0xFUkVTUF9kZWxldGVfZXh0OworKwkJUEtDUzEyX1NBRkVCQUdTX2l0OworKwkJZDJpX09DU1BfU0lHTkFUVVJFOworKwkJT0NTUF9yZXF1ZXN0X2FkZDFfbm9uY2U7CisrCQlFTkdJTkVfc2V0X2NtZF9kZWZuczsKKysJCU9DU1BfU0VSVklDRUxPQ19mcmVlOworKwkJRUNfR1JPVVBfZnJlZTsKKysJCUFTTjFfQklUX1NUUklOR19pdDsKKysJCVg1MDlfUkVRX2l0OworKwkJX29zc2xfb2xkX2Rlc19jYmNfZW5jcnlwdDsKKysJCUVSUl91bmxvYWRfc3RyaW5nczsKKysJCVBLQ1M3X1NJR05fRU5WRUxPUEVfaXQ7CisrCQlFRElQQVJUWU5BTUVfZnJlZTsKKysJCU9DU1BfUkVRSU5GT19mcmVlOworKwkJRUNfR1JPVVBfbmV3X2N1cnZlX0dGcDsKKysJCU9DU1BfUkVRVUVTVF9nZXQxX2V4dF9kMmk7CisrCQlQS0NTMTJfaXRlbV9wYWNrX3NhZmViYWc7CisrCQlhc24xX2V4X2MyaTsKKysJCUVOR0lORV9yZWdpc3Rlcl9kaWdlc3RzOworKwkJaTJkX09DU1BfUkVWT0tFRElORk87CisrCQlhc24xX2VuY19yZXN0b3JlOworKwkJVUlfZnJlZTsKKysJCVVJX25ld19tZXRob2Q7CisrCQlFVlBfRW5jcnlwdEluaXRfZXg7CisrCQlYNTA5X3B1YmtleV9kaWdlc3Q7CisrCQlFQ19QT0lOVF9pbnZlcnQ7CisrCQlPQ1NQX2Jhc2ljX3NpZ247CisrCQlpMmRfT0NTUF9SRVNQSUQ7CisrCQlPQ1NQX2NoZWNrX25vbmNlOworKwkJRU5HSU5FX2N0cmxfY21kOworKwkJZDJpX0tSQjVfRU5DS0VZOworKwkJT0NTUF9wYXJzZV91cmw7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dDsKKysJCU9DU1BfQ1JMSURfZnJlZTsKKysJCU9DU1BfQkFTSUNSRVNQX2dldDFfZXh0X2QyaTsKKysJCVJTQVByaXZhdGVLZXlfaXQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RIOworKwkJaTJkX0VESVBBUlRZTkFNRTsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZHNfR0ZwOworKwkJT0NTUF9DUkxJRF9uZXc7CisrCQlFTkdJTkVfZ2V0X2ZsYWdzOworKwkJT0NTUF9PTkVSRVFfaXQ7CisrCQlVSV9wcm9jZXNzOworKwkJQVNOMV9JTlRFR0VSX2l0OworKwkJRVZQX0NpcGhlckluaXRfZXg7CisrCQlVSV9nZXRfc3RyaW5nX3R5cGU7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9ESDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRFNBOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCWJuX2R1cF9leHBhbmQ7CisrCQlPQ1NQX2NlcnRfaWRfbmV3OworKwkJQkFTSUNfQ09OU1RSQUlOVFNfaXQ7CisrCQlCTl9tb2RfYWRkX3F1aWNrOworKwkJRUNfUE9JTlRfbmV3OworKwkJRVZQX01EX0NUWF9kZXN0cm95OworKwkJT0NTUF9SRVNQQllURVNfZnJlZTsKKysJCUVWUF9hZXNfMTI4X2NiYzsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXQxX2V4dF9kMmk7CisrCQlFQ19QT0lOVF9mcmVlOworKwkJREhfdXBfcmVmOworKwkJWDUwOV9OQU1FX0VOVFJZX2l0OworKwkJVUlfZ2V0X2V4X25ld19pbmRleDsKKysJCUJOX21vZF9zdWJfcXVpY2s7CisrCQlPQ1NQX09ORVJFUV9hZGRfZXh0OworKwkJT0NTUF9yZXF1ZXN0X3NpZ247CisrCQlFVlBfRGlnZXN0RmluYWxfZXg7CisrCQlFTkdJTkVfc2V0X2RpZ2VzdHM7CisrCQlPQ1NQX2lkX2lzc3Vlcl9jbXA7CisrCQlPQkpfTkFNRV9kb19hbGw7CisrCQlFQ19QT0lOVHNfbXVsOworKwkJRU5HSU5FX3JlZ2lzdGVyX2NvbXBsZXRlOworKwkJWDUwOVYzX0VYVF9uY29uZl9uaWQ7CisrCQlBU04xX1NFUVVFTkNFX2l0OworKwkJVUlfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUkFORF9xdWVyeV9lZ2RfYnl0ZXM7CisrCQlVSV9tZXRob2RfZ2V0X3dyaXRlcjsKKysJCVVJX09wZW5TU0w7CisrCQlQRU1fZGVmX2NhbGxiYWNrOworKwkJRU5HSU5FX2NsZWFudXA7CisrCQlESVNUX1BPSU5UX2l0OworKwkJT0NTUF9TSU5HTEVSRVNQX2l0OworKwkJZDJpX0tSQjVfVEtUQk9EWTsKKysJCUVDX1BPSU5UX2NtcDsKKysJCU9DU1BfUkVWT0tFRElORk9fbmV3OworKwkJaTJkX09DU1BfQ0VSVFNUQVRVUzsKKysJCU9DU1BfYmFzaWNfYWRkMV9ub25jZTsKKysJCUFTTjFfaXRlbV9leF9kMmk7CisrCQlCTl9tb2RfbHNoaWZ0MV9xdWljazsKKysJCVVJX3NldF9tZXRob2Q7CisrCQlPQ1NQX2lkX2dldDBfaW5mbzsKKysJCUJOX21vZF9zcXJ0OworKwkJRUNfR1JPVVBfY29weTsKKysJCUtSQjVfRU5DREFUQV9mcmVlOworKwkJX29zc2xfb2xkX2Rlc19jZmJfZW5jcnlwdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X09CSjsKKysJCU9DU1BfY2VydF90b19pZDsKKysJCU9DU1BfUkVTUElEX25ldzsKKysJCU9DU1BfUkVTUERBVEFfaXQ7CisrCQlkMmlfT0NTUF9SRVNQREFUQTsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfY29tcGxldGU7CisrCQlPQ1NQX2NoZWNrX3ZhbGlkaXR5OworKwkJUEtDUzEyX0JBR1NfaXQ7CisrCQlPQ1NQX3VybF9zdmNsb2NfbmV3OworKwkJQVNOMV90ZW1wbGF0ZV9mcmVlOworKwkJT0NTUF9TSU5HTEVSRVNQX2FkZF9leHQ7CisrCQlLUkI1X0FVVEhFTlRCT0RZX2l0OworKwkJWDUwOV9zdXBwb3J0ZWRfZXh0ZW5zaW9uOworKwkJaTJkX0tSQjVfQVVUSERBVEE7CisrCQlVSV9tZXRob2RfZ2V0X29wZW5lcjsKKysJCUVOR0lORV9zZXRfZXhfZGF0YTsKKysJCU9DU1BfUkVRVUVTVF9wcmludDsKKysJCUNCSUdOVU1faXQ7CisrCQlLUkI1X1RJQ0tFVF9uZXc7CisrCQlLUkI1X0FQUkVRX25ldzsKKysJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRnA7CisrCQlLUkI1X0VOQ0tFWV9uZXc7CisrCQlBU04xX3RlbXBsYXRlX2QyaTsKKysJCV9vc3NsX29sZF9kZXNfcXVhZF9ja3N1bTsKKysJCU9DU1Bfc2luZ2xlX2dldDBfc3RhdHVzOworKwkJQk5fc3dhcDsKKysJCVBPTElDWUlORk9faXQ7CisrCQlFTkdJTkVfc2V0X2Rlc3Ryb3lfZnVuY3Rpb247CisrCQlhc24xX2VuY19mcmVlOworKwkJT0NTUF9SRVNQSURfaXQ7CisrCQlFQ19HUk9VUF9uZXc7CisrCQlFVlBfYWVzXzI1Nl9jYmM7CisrCQlpMmRfS1JCNV9QUklOQ05BTUU7CisrCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQyOworKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MzsKKysJCVBLQ1M4X1BSSVZfS0VZX0lORk9faXQ7CisrCQlPQ1NQX1JFUUlORk9faXQ7CisrCQlQQkVQQVJBTV9pdDsKKysJCUtSQjVfQVVUSEVOVEJPRFlfbmV3OworKwkJWDUwOV9DUkxfYWRkMF9yZXZva2VkOworKwkJRURJUEFSVFlOQU1FX2l0OworKwkJTkVUU0NBUEVfU1BLSV9pdDsKKysJCVVJX2dldDBfdGVzdF9zdHJpbmc7CisrCQlFTkdJTkVfZ2V0X2NpcGhlcl9lbmdpbmU7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NpcGhlcnM7CisrCQlFQ19QT0lOVF9jb3B5OworKwkJQk5fa3JvbmVja2VyOworKwkJX29zc2xfb2xkX2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7CisrCQlfb3NzbF9vZGVzX2VkZTNfb2ZiNjRfZW5jcnlwdDsKKysJCVVJX21ldGhvZF9nZXRfcmVhZGVyOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9jb3VudDsKKysJCUFTTjFfRU5VTUVSQVRFRF9pdDsKKysJCVVJX3NldF9yZXN1bHQ7CisrCQlpMmRfS1JCNV9USUNLRVQ7CisrCQlYNTA5X3ByaW50X2V4X2ZwOworKwkJRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmc7CisrCQlkMmlfT0NTUF9SRVNQT05TRTsKKysJCUFTTjFfVVRDVElNRV9pdDsKKysJCV9vc3NsX29sZF9kZXNfZW5jX3dyaXRlOworKwkJT0NTUF9SRVNQT05TRV9uZXc7CisrCQlBRVNfc2V0X2VuY3J5cHRfa2V5OworKwkJT0NTUF9yZXNwX2NvdW50OworKwkJS1JCNV9DSEVDS1NVTV9uZXc7CisrCQlFTkdJTkVfbG9hZF9jc3dpZnQ7CisrCQlPQ1NQX29uZXJlcV9nZXQwX2lkOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X2NpcGhlcnM7CisrCQlOT1RJQ0VSRUZfaXQ7CisrCQlYNTA5VjNfRVhUX0NSTF9hZGRfbmNvbmY7CisrCQlPQ1NQX1JFVk9LRURJTkZPX2l0OworKwkJQUVTX2VuY3J5cHQ7CisrCQlPQ1NQX1JFUVVFU1RfbmV3OworKwkJQVNOMV9BTllfaXQ7CisrCQlDUllQVE9fZXhfZGF0YV9uZXdfY2xhc3M7CisrCQlfb3NzbF9vbGRfZGVzX25jYmNfZW5jcnlwdDsKKysJCWkyZF9LUkI1X1RLVEJPRFk7CisrCQlFQ19QT0lOVF9jbGVhcl9mcmVlOworKwkJQUVTX2RlY3J5cHQ7CisrCQlhc24xX2VuY19pbml0OworKwkJVUlfZ2V0X3Jlc3VsdF9tYXhzaXplOworKwkJT0NTUF9DRVJUSURfbmV3OworKwkJRU5HSU5FX3VucmVnaXN0ZXJfUkFORDsKKysJCVVJX21ldGhvZF9nZXRfY2xvc2VyOworKwkJZDJpX0tSQjVfRU5DREFUQTsKKysJCU9DU1BfcmVxdWVzdF9vbmVyZXFfY291bnQ7CisrCQlPQ1NQX2Jhc2ljX3ZlcmlmeTsKKysJCUtSQjVfQVVUSEVOVEJPRFlfZnJlZTsKKysJCUFTTjFfaXRlbV9kMmk7CisrCQlBU04xX3ByaW1pdGl2ZV9mcmVlOworKwkJaTJkX0VYVEVOREVEX0tFWV9VU0FHRTsKKysJCWkyZF9PQ1NQX1NJR05BVFVSRTsKKysJCWFzbjFfZW5jX3NhdmU7CisrCQlFTkdJTkVfbG9hZF9udXJvbjsKKysJCV9vc3NsX29sZF9kZXNfcGNiY19lbmNyeXB0OworKwkJUEtDUzEyX01BQ19EQVRBX2l0OworKwkJT0NTUF9hY2NlcHRfcmVzcG9uc2VzX25ldzsKKysJCWFzbjFfZG9fbG9jazsKKysJCVBLQ1M3X0FUVFJfVkVSSUZZX2l0OworKwkJS1JCNV9BUFJFUUJPRFlfaXQ7CisrCQlpMmRfT0NTUF9TSU5HTEVSRVNQOworKwkJQVNOMV9pdGVtX2V4X25ldzsKKysJCVVJX2FkZF92ZXJpZnlfc3RyaW5nOworKwkJX29zc2xfb2xkX2Rlc19zZXRfa2V5OworKwkJS1JCNV9QUklOQ05BTUVfaXQ7CisrCQlFVlBfRGVjcnlwdEluaXRfZXg7CisrCQlpMmRfT0NTUF9DRVJUSUQ7CisrCQlBU04xX2l0ZW1fZDJpX2JpbzsKKysJCUVDX1BPSU5UX2RibDsKKysJCWFzbjFfZ2V0X2Nob2ljZV9zZWxlY3RvcjsKKysJCWkyZF9LUkI1X0NIRUNLU1VNOworKwkJRU5HSU5FX3NldF90YWJsZV9mbGFnczsKKysJCUFFU19vcHRpb25zOworKwkJRU5HSU5FX2xvYWRfY2hpbDsKKysJCU9DU1BfaWRfY21wOworKwkJT0NTUF9CQVNJQ1JFU1BfbmV3OworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfTklEOworKwkJS1JCNV9BUFJFUV9pdDsKKysJCUVOR0lORV9nZXRfZGVzdHJveV9mdW5jdGlvbjsKKysJCUNPTkZfc2V0X25jb25mOworKwkJQVNOMV9QUklOVEFCTEVfZnJlZTsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfTklEOworKwkJRElTVF9QT0lOVF9OQU1FX2l0OworKwkJWDUwOVYzX2V4dGVuc2lvbnNfcHJpbnQ7CisrCQlfb3NzbF9vbGRfZGVzX2NmYjY0X2VuY3J5cHQ7CisrCQlYNTA5X1JFVk9LRURfYWRkMV9leHRfaTJkOworKwkJX29zc2xfb2xkX2Rlc19vZmJfZW5jcnlwdDsKKysJCUtSQjVfVEtUQk9EWV9uZXc7CisrCQlBU04xX09DVEVUX1NUUklOR19pdDsKKysJCUVSUl9sb2FkX1VJX3N0cmluZ3M7CisrCQlpMmRfS1JCNV9FTkNLRVk7CisrCQlBU04xX3RlbXBsYXRlX25ldzsKKysJCU9DU1BfU0lHTkFUVVJFX2ZyZWU7CisrCQlBU04xX2l0ZW1faTJkX2ZwOworKwkJS1JCNV9QUklOQ05BTUVfZnJlZTsKKysJCVBLQ1M3X1JFQ0lQX0lORk9faXQ7CisrCQlFWFRFTkRFRF9LRVlfVVNBR0VfaXQ7CisrCQlFQ19HRnBfc2ltcGxlX21ldGhvZDsKKysJCUVDX0dST1VQX3ByZWNvbXB1dGVfbXVsdDsKKysJCU9DU1BfcmVxdWVzdF9vbmVyZXFfZ2V0MDsKKysJCVVJX21ldGhvZF9zZXRfd3JpdGVyOworKwkJS1JCNV9BVVRIRU5UX25ldzsKKysJCVg1MDlfQ1JMX0lORk9faXQ7CisrCQlEU09fc2V0X25hbWVfY29udmVydGVyOworKwkJQUVTX3NldF9kZWNyeXB0X2tleTsKKysJCVBLQ1M3X0RJR0VTVF9pdDsKKysJCVBLQ1MxMl94NTA5MmNlcnRiYWc7CisrCQlFVlBfRGlnZXN0SW5pdF9leDsKKysJCWkyYV9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlPQ1NQX1JFU1BPTlNFX2l0OworKwkJUEtDUzdfRU5DX0NPTlRFTlRfaXQ7CisrCQlPQ1NQX3JlcXVlc3RfYWRkMF9pZDsKKysJCUVDX1BPSU5UX21ha2VfYWZmaW5lOworKwkJRFNPX2dldF9maWxlbmFtZTsKKysJCU9DU1BfQ0VSVFNUQVRVU19pdDsKKysJCU9DU1BfcmVxdWVzdF9hZGQxX2NlcnQ7CisrCQlVSV9nZXQwX291dHB1dF9zdHJpbmc7CisrCQlVSV9kdXBfdmVyaWZ5X3N0cmluZzsKKysJCUJOX21vZF9sc2hpZnQ7CisrCQlLUkI1X0FVVEhEQVRBX2l0OworKwkJYXNuMV9zZXRfY2hvaWNlX3NlbGVjdG9yOworKwkJT0NTUF9iYXNpY19hZGQxX3N0YXR1czsKKysJCU9DU1BfUkVTUElEX2ZyZWU7CisrCQlhc24xX2dldF9maWVsZF9wdHI7CisrCQlVSV9hZGRfaW5wdXRfc3RyaW5nOworKwkJT0NTUF9DUkxJRF9pdDsKKysJCWkyZF9LUkI1X0FVVEhFTlRCT0RZOworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfY291bnQ7CisrCQlFTkdJTkVfbG9hZF9hdGFsbGE7CisrCQlYNTA5X05BTUVfaXQ7CisrCQlVU0VSTk9USUNFX2l0OworKwkJT0NTUF9SRVFJTkZPX25ldzsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHQ7CisrCQlDUllQVE9fZ2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247CisrCQlDUllQVE9fZ2V0X2V4X2RhdGFfaW1wbDsKKysJCUFTTjFfaXRlbV9wYWNrOworKwkJaTJkX0tSQjVfRU5DREFUQTsKKysJCVg1MDlfUFVSUE9TRV9zZXQ7CisrCQlYNTA5X1JFUV9JTkZPX2l0OworKwkJVUlfbWV0aG9kX3NldF9vcGVuZXI7CisrCQlBU04xX2l0ZW1fZXhfZnJlZTsKKysJCUFTTjFfQk9PTEVBTl9pdDsKKysJCUVOR0lORV9nZXRfdGFibGVfZmxhZ3M7CisrCQlVSV9jcmVhdGVfbWV0aG9kOworKwkJT0NTUF9PTkVSRVFfYWRkMV9leHRfaTJkOworKwkJX3NoYWRvd19ERVNfY2hlY2tfa2V5OworKwkJZDJpX09DU1BfUkVRSU5GTzsKKysJCVVJX2FkZF9pbmZvX3N0cmluZzsKKysJCVVJX2dldF9yZXN1bHRfbWluc2l6ZTsKKysJCUFTTjFfTlVMTF9pdDsKKysJCUJOX21vZF9sc2hpZnQxOworKwkJZDJpX09DU1BfT05FUkVROworKwkJT0NTUF9PTkVSRVFfbmV3OworKwkJS1JCNV9USUNLRVRfaXQ7CisrCQlFVlBfYWVzXzE5Ml9jYmM7CisrCQlLUkI1X1RJQ0tFVF9mcmVlOworKwkJVUlfbmV3OworKwkJT0NTUF9yZXNwb25zZV9jcmVhdGU7CisrCQlfb3NzbF9vbGRfZGVzX3hjYmNfZW5jcnlwdDsKKysJCVBLQ1M3X2l0OworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9jcml0OworKwkJRU5HSU5FX3NldF9mbGFnczsKKysJCV9vc3NsX29sZF9kZXNfZWNiX2VuY3J5cHQ7CisrCQlPQ1NQX3Jlc3BvbnNlX2dldDFfYmFzaWM7CisrCQlFVlBfRGlnZXN0OworKwkJT0NTUF9PTkVSRVFfZGVsZXRlX2V4dDsKKysJCUFTTjFfVEJPT0xFQU5faXQ7CisrCQlBU04xX2l0ZW1fbmV3OworKwkJQVNOMV9USU1FX3RvX2dlbmVyYWxpemVkdGltZTsKKysJCUJJR05VTV9pdDsKKysJCUFFU19jYmNfZW5jcnlwdDsKKysJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9sb2FkX3ByaXZrZXlfZm47CisrCQlPQ1NQX1JFU1BPTlNFX2ZyZWU7CisrCQlVSV9tZXRob2Rfc2V0X3JlYWRlcjsKKysJCWkyZF9BU04xX1Q2MVNUUklORzsKKysJCUVDX1BPSU5UX3NldF90b19pbmZpbml0eTsKKysJCUVSUl9sb2FkX09DU1Bfc3RyaW5nczsKKysJCUVDX1BPSU5UX3BvaW50Mm9jdDsKKysJCUtSQjVfQVBSRVFfZnJlZTsKKysJCUFTTjFfT0JKRUNUX2l0OworKwkJT0NTUF9jcmxJRF9uZXc7CisrCQlPQ1NQX2NybElEMl9uZXc7CisrCQlDT05GX21vZHVsZXNfbG9hZF9maWxlOworKwkJQ09ORl9pbW9kdWxlX3NldF91c3JfZGF0YTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9zdHJpbmc7CisrCQlDT05GX21vZHVsZV9nZXRfdXNyX2RhdGE7CisrCQlBU04xX2FkZF9vaWRfbW9kdWxlOworKwkJQ09ORl9tb2R1bGVzX2ZpbmlzaDsKKysJCU9QRU5TU0xfY29uZmlnOworKwkJQ09ORl9tb2R1bGVzX3VubG9hZDsKKysJCUNPTkZfaW1vZHVsZV9nZXRfdmFsdWU7CisrCQlDT05GX21vZHVsZV9zZXRfdXNyX2RhdGE7CisrCQlDT05GX3BhcnNlX2xpc3Q7CisrCQlDT05GX21vZHVsZV9hZGQ7CisrCQlDT05GX2dldDFfZGVmYXVsdF9jb25maWdfZmlsZTsKKysJCUNPTkZfaW1vZHVsZV9nZXRfZmxhZ3M7CisrCQlDT05GX2ltb2R1bGVfZ2V0X21vZHVsZTsKKysJCUNPTkZfbW9kdWxlc19sb2FkOworKwkJQ09ORl9pbW9kdWxlX2dldF9uYW1lOworKwkJRVJSX3BlZWtfdG9wX2Vycm9yOworKwkJQ09ORl9pbW9kdWxlX2dldF91c3JfZGF0YTsKKysJCUNPTkZfaW1vZHVsZV9zZXRfZmxhZ3M7CisrCQlFTkdJTkVfYWRkX2NvbmZfbW9kdWxlOworKwkJRVJSX3BlZWtfbGFzdF9lcnJvcl9saW5lOworKwkJRVJSX3BlZWtfbGFzdF9lcnJvcl9saW5lX2RhdGE7CisrCQlFUlJfcGVla19sYXN0X2Vycm9yOworKwkJREVTX3JlYWRfMnBhc3N3b3JkczsKKysJCURFU19yZWFkX3Bhc3N3b3JkOworKwkJVUlfVVRJTF9yZWFkX3B3OworKwkJVUlfVVRJTF9yZWFkX3B3X3N0cmluZzsKKysJCUVOR0lORV9sb2FkX2FlcDsKKysJCUVOR0lORV9sb2FkX3N1cmV3YXJlOworKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfbm9jb25mOworKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29fbm9jb25mOworKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfY29uZjsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX2NvbmY7CisrCQlPUEVOU1NMX2xvYWRfYnVpbHRpbl9tb2R1bGVzOworKwkJQUVTX29mYjEyOF9lbmNyeXB0OworKwkJQUVTX2N0cjEyOF9lbmNyeXB0OworKwkJQUVTX2NmYjEyOF9lbmNyeXB0OworKwkJRU5HSU5FX2xvYWRfNDc1OGNjYTsKKysJCV9vc3NsXzA5Nl9kZXNfcmFuZG9tX3NlZWQ7CisrCQlFVlBfYWVzXzI1Nl9vZmI7CisrCQlFVlBfYWVzXzE5Ml9vZmI7CisrCQlFVlBfYWVzXzEyOF9jZmIxMjg7CisrCQlFVlBfYWVzXzI1Nl9jZmIxMjg7CisrCQlFVlBfYWVzXzEyOF9vZmI7CisrCQlFVlBfYWVzXzE5Ml9jZmIxMjg7CisrCQlDT05GX21vZHVsZXNfZnJlZTsKKysJCU5DT05GX2RlZmF1bHQ7CisrCQlPUEVOU1NMX25vX2NvbmZpZzsKKysJCU5DT05GX1dJTjMyOworKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfbmV3OworKwkJRVZQX2Rlc19lZGVfZWNiOworKwkJaTJkX0FTTjFfVU5JVkVSU0FMU1RSSU5HOworKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfZnJlZTsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2l0OworKwkJZDJpX0FTTjFfVU5JVkVSU0FMU1RSSU5HOworKwkJRVZQX2Rlc19lZGUzX2VjYjsKKysJCVg1MDlfUkVRX3ByaW50X2V4OworKwkJRU5HSU5FX3VwX3JlZjsKKysJCUJVRl9NRU1fZ3Jvd19jbGVhbjsKKysJCUNSWVBUT19yZWFsbG9jX2NsZWFuOworKwkJQlVGX3N0cmxjYXQ7CisrCQlCSU9faW5kZW50OworKwkJQlVGX3N0cmxjcHk7CisrCQlPcGVuU1NMRGllOworKwkJT1BFTlNTTF9jbGVhbnNlOworKwkJRU5HSU5FX3NldHVwX2JzZF9jcnlwdG9kZXY7CisrCQlFUlJfcmVsZWFzZV9lcnJfc3RhdGVfdGFibGU7CisrCQlFVlBfYWVzXzEyOF9jZmI4OworKwkJRklQU19jb3JydXB0X3JzYTsKKysJCUZJUFNfc2VsZnRlc3RfZGVzOworKwkJRVZQX2Flc18xMjhfY2ZiMTsKKysJCUVWUF9hZXNfMTkyX2NmYjg7CisrCQlGSVBTX21vZGVfc2V0OworKwkJRklQU19zZWxmdGVzdF9kc2E7CisrCQlFVlBfYWVzXzI1Nl9jZmI4OworKwkJRklQU19hbGxvd19tZDU7CisrCQlERVNfZWRlM19jZmJfZW5jcnlwdDsKKysJCUVWUF9kZXNfZWRlM19jZmI4OworKwkJRklQU19yYW5kX3NlZWRlZDsKKysJCUFFU19jZmJyX2VuY3J5cHRfYmxvY2s7CisrCQlBRVNfY2ZiOF9lbmNyeXB0OworKwkJRklQU19yYW5kX3NlZWQ7CisrCQlGSVBTX2NvcnJ1cHRfZGVzOworKwkJRVZQX2Flc18xOTJfY2ZiMTsKKysJCUZJUFNfc2VsZnRlc3RfYWVzOworKwkJRklQU19zZXRfcHJuZ19rZXk7CisrCQlFVlBfZGVzX2NmYjg7CisrCQlGSVBTX2NvcnJ1cHRfZHNhOworKwkJRklQU190ZXN0X21vZGU7CisrCQlGSVBTX3JhbmRfbWV0aG9kOworKwkJRVZQX2Flc18yNTZfY2ZiMTsKKysJCUVSUl9sb2FkX0ZJUFNfc3RyaW5nczsKKysJCUZJUFNfY29ycnVwdF9hZXM7CisrCQlGSVBTX3NlbGZ0ZXN0X3NoYTE7CisrCQlGSVBTX3NlbGZ0ZXN0X3JzYTsKKysJCUZJUFNfY29ycnVwdF9zaGExOworKwkJRVZQX2Rlc19jZmIxOworKwkJRklQU19kc2FfY2hlY2s7CisrCQlBRVNfY2ZiMV9lbmNyeXB0OworKwkJRVZQX2Rlc19lZGUzX2NmYjE7CisrCQlGSVBTX3JhbmRfY2hlY2s7CisrCQlGSVBTX21kNV9hbGxvd2VkOworKwkJRklQU19tb2RlOworKwkJRklQU19zZWxmdGVzdF9mYWlsZWQ7CisrCQlza19pc19zb3J0ZWQ7CisrCQlYNTA5X2NoZWNrX2NhOworKwkJSE1BQ19DVFhfc2V0X2ZsYWdzOworKwkJZDJpX1BST1hZX0NFUlRfSU5GT19FWFRFTlNJT047CisrCQlQUk9YWV9QT0xJQ1lfaXQ7CisrCQlpMmRfUFJPWFlfUE9MSUNZOworKwkJaTJkX1BST1hZX0NFUlRfSU5GT19FWFRFTlNJT047CisrCQlkMmlfUFJPWFlfUE9MSUNZOworKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9uZXc7CisrCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX2ZyZWU7CisrCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX2l0OworKwkJUFJPWFlfUE9MSUNZX2ZyZWU7CisrCQlQUk9YWV9QT0xJQ1lfbmV3OworKwkJQk5fTU9OVF9DVFhfc2V0X2xvY2tlZDsKKysJCUZJUFNfc2VsZnRlc3Rfcm5nOworKwkJRVZQX3NoYTM4NDsKKysJCUVWUF9zaGE1MTI7CisrCQlFVlBfc2hhMjI0OworKwkJRVZQX3NoYTI1NjsKKysJCUZJUFNfc2VsZnRlc3RfaG1hYzsKKysJCUZJUFNfY29ycnVwdF9ybmc7CisrCQlCTl9tb2RfZXhwX21vbnRfY29uc3R0aW1lOworKwkJUlNBX1g5MzFfaGFzaF9pZDsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1g5MzE7CisrCQlSU0FfdmVyaWZ5X1BLQ1MxX1BTUzsKKysJCVJTQV9wYWRkaW5nX2FkZF9YOTMxOworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX1BTUzsKKysJCVBLQ1MxX01HRjE7CisrCQlCTl9YOTMxX2dlbmVyYXRlX1hwcTsKKysJCVJTQV9YOTMxX2dlbmVyYXRlX2tleTsKKysJCUJOX1g5MzFfZGVyaXZlX3ByaW1lOworKwkJQk5fWDkzMV9nZW5lcmF0ZV9wcmltZTsKKysJCVJTQV9YOTMxX2Rlcml2ZTsKKysJCUJJT19uZXdfZGdyYW07CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMzg0OworKwkJRVJSX3NldF9tYXJrOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9jcmxzOworKwkJRU5HSU5FX3NldF9TVE9SRTsKKysJCUVOR0lORV9yZWdpc3Rlcl9FQ0RTQTsKKysJCVNUT1JFX21ldGhfc2V0X2xpc3Rfc3RhcnRfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3Rfc3RhcnRfZnVuY3Rpb247CisrCQlCTl9CTElORElOR19pbnZlcnRfZXg7CisrCQlOQU1FX0NPTlNUUkFJTlRTX2ZyZWU7CisrCQlTVE9SRV9BVFRSX0lORk9fc2V0X251bWJlcjsKKysJCUJOX0JMSU5ESU5HX2dldF90aHJlYWRfaWQ7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXQwX3BhcmFtOworKwkJUE9MSUNZX01BUFBJTkdfaXQ7CisrCQlTVE9SRV9wYXJzZV9hdHRyc19zdGFydDsKKysJCVBPTElDWV9DT05TVFJBSU5UU19mcmVlOworKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X05JRDsKKysJCUJOX25pc3RfbW9kXzE5MjsKKysJCUVDX0dST1VQX2dldF90cmlub21pYWxfYmFzaXM7CisrCQlTVE9SRV9zZXRfbWV0aG9kOworKwkJR0VORVJBTF9TVUJUUkVFX2ZyZWU7CisrCQlOQU1FX0NPTlNUUkFJTlRTX2l0OworKwkJRUNESF9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlQS0NTMTJfYWRkX3NhZmU7CisrCQlFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWU7CisrCQlTVE9SRV9tZXRoX2dldF91cGRhdGVfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X3VwZGF0ZV9zdG9yZV9mdW5jdGlvbjsKKysJCUVOR0lORV9yZWdpc3Rlcl9FQ0RIOworKwkJU0hBNTEyX1VwZGF0ZTsKKysJCWkyZF9FQ1ByaXZhdGVLZXk7CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMTkyOworKwkJU1RPUkVfbW9kaWZ5X2NlcnRpZmljYXRlOworKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtOworKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZHNfR0YybTsKKysJCUJOX0dGMm1fbW9kX2V4cF9hcnI7CisrCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X251bWJlcjsKKysJCVg1MDlfa2V5aWRfZ2V0MDsKKysJCUVOR0lORV9sb2FkX2dtcDsKKysJCXBpdGVtX25ldzsKKysJCUJOX0dGMm1fbW9kX211bF9hcnI7CisrCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfZW5kcDsKKysJCW8yaV9FQ1B1YmxpY0tleTsKKysJCUVDX0tFWV9jb3B5OworKwkJQklPX2R1bXBfZnA7CisrCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcGFyZW50OworKwkJRUNfR1JPVVBfY2hlY2tfZGlzY3JpbWluYW50OworKwkJaTJvX0VDUHVibGljS2V5OworKwkJRUNfS0VZX3ByZWNvbXB1dGVfbXVsdDsKKysJCWEyaV9JUEFERFJFU1M7CisrCQlTVE9SRV9tZXRoX3NldF9pbml0aWFsaXNlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9pbml0aWFsaXNlX2Z1bmN0aW9uOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2RlcHRoOworKwkJWDUwOV9WRVJJRllfUEFSQU1faW5oZXJpdDsKKysJCUVDX1BPSU5UX3BvaW50MmJuOworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9kbjsKKysJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF9wb2xpY2llczsKKysJCUVDX0dST1VQX25ld19jdXJ2ZV9HRjJtOworKwkJU1RPUkVfZGVzdHJveV9tZXRob2Q7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9TVE9SRTsKKysJCUVWUF9QS0VZX2dldDFfRUNfS0VZOworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfbnVtYmVyOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDREg7CisrCQlFQ19LRVlfZ2V0X2NvbnZfZm9ybTsKKysJCUFTTjFfT0NURVRfU1RSSU5HX05ERUZfaXQ7CisrCQlTVE9SRV9kZWxldGVfcHVibGljX2tleTsKKysJCVNUT1JFX2dldF9wdWJsaWNfa2V5OworKwkJU1RPUkVfbW9kaWZ5X2FyYml0cmFyeTsKKysJCUVOR0lORV9nZXRfc3RhdGljX3N0YXRlOworKwkJcHF1ZXVlX2l0ZXJhdG9yOworKwkJRUNEU0FfU0lHX25ldzsKKysJCU9QRU5TU0xfRElSX2VuZDsKKysJCUJOX0dGMm1fbW9kX3NxcjsKKysJCUVDX1BPSU5UX2JuMnBvaW50OworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2RlcHRoOworKwkJRUNfS0VZX3NldF9hc24xX2ZsYWc7CisrCQlTVE9SRV9nZXRfbWV0aG9kOworKwkJRUNfS0VZX2dldF9rZXlfbWV0aG9kX2RhdGE7CisrCQlFQ0RTQV9zaWduX2V4OworKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kOworKwkJRUNfR1JPVVBfZ2V0X3BvaW50X2NvbnZlcnNpb25fZm9ybTsKKysJCUVDX0dST1VQX2dldF9wb2ludF9jb252X2Zvcm07CisrCQlTVE9SRV9tZXRob2Rfc2V0X3N0b3JlX2Z1bmN0aW9uOworKwkJU1RPUkVfQVRUUl9JTkZPX2luOworKwkJUEVNX3JlYWRfYmlvX0VDUEtQYXJhbWV0ZXJzOworKwkJRUNfR1JPVVBfZ2V0X3BlbnRhbm9taWFsX2Jhc2lzOworKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X3R4dDsKKysJCUJOX0JMSU5ESU5HX3NldF9mbGFnczsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfcG9saWNpZXM7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX25hbWU7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfcHVycG9zZTsKKysJCVNUT1JFX2dldF9udW1iZXI7CisrCQlFQ0RTQV9zaWduX3NldHVwOworKwkJQk5fR0YybV9tb2Rfc29sdmVfcXVhZF9hcnI7CisrCQlFQ19LRVlfdXBfcmVmOworKwkJUE9MSUNZX01BUFBJTkdfZnJlZTsKKysJCUJOX0dGMm1fbW9kX2RpdjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9mbGFnczsKKysJCUVDX0tFWV9mcmVlOworKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9uZXh0X2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X25leHRfZnVuY3Rpb247CisrCQlQRU1fd3JpdGVfYmlvX0VDUHJpdmF0ZUtleTsKKysJCWQyaV9FQ19QVUJLRVk7CisrCQlTVE9SRV9tZXRoX2dldF9nZW5lcmF0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfZ2VuZXJhdGVfZnVuY3Rpb247CisrCQlTVE9SRV9tZXRoX3NldF9saXN0X2VuZF9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9lbmRfZnVuY3Rpb247CisrCQlwcXVldWVfcHJpbnQ7CisrCQlFQ19HUk9VUF9oYXZlX3ByZWNvbXB1dGVfbXVsdDsKKysJCUVDX0tFWV9wcmludF9mcDsKKysJCUJOX0dGMm1fbW9kX2FycjsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9DRVJUX1BBSVI7CisrCQlFVlBfUEtFWV9jbXA7CisrCQlYNTA5X3BvbGljeV9sZXZlbF9ub2RlX2NvdW50OworKwkJU1RPUkVfbmV3X2VuZ2luZTsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9zdGFydDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX25ldzsKKysJCUVDREhfZ2V0X2V4X2RhdGE7CisrCQlFVlBfUEtFWV9nZXRfYXR0cjsKKysJCUVDRFNBX2RvX3NpZ247CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9FQ0RIOworKwkJRUNESF9PcGVuU1NMOworKwkJRUNfS0VZX3NldF9jb252X2Zvcm07CisrCQlFQ19QT0lOVF9kdXA7CisrCQlHRU5FUkFMX1NVQlRSRUVfbmV3OworKwkJU1RPUkVfbGlzdF9jcmxfZW5kcDsKKysJCUVDX2dldF9idWlsdGluX2N1cnZlczsKKysJCVg1MDlfcG9saWN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOworKwkJWDUwOV9wY3lfbm9kZV9nZXQwX3F1YWxpZmllcnM7CisrCQlTVE9SRV9saXN0X2NybF9lbmQ7CisrCQlFVlBfUEtFWV9zZXQxX0VDX0tFWTsKKysJCUJOX0dGMm1fbW9kX3NxcnRfYXJyOworKwkJaTJkX0VDUHJpdmF0ZUtleV9iaW87CisrCQlFQ1BLUGFyYW1ldGVyc19wcmludF9mcDsKKysJCXBxdWV1ZV9maW5kOworKwkJRUNEU0FfU0lHX2ZyZWU7CisrCQlQRU1fd3JpdGVfYmlvX0VDUEtQYXJhbWV0ZXJzOworKwkJU1RPUkVfbWV0aG9kX3NldF9jdHJsX2Z1bmN0aW9uOworKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZDsKKysJCUVDX0tFWV9zZXRfcHJpdmF0ZV9rZXk7CisrCQlwcXVldWVfcGVlazsKKysJCVNUT1JFX2dldF9hcmJpdHJhcnk7CisrCQlTVE9SRV9zdG9yZV9jcmw7CisrCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcG9saWN5OworKwkJUEtDUzEyX2FkZF9zYWZlczsKKysJCUJOX0JMSU5ESU5HX2NvbnZlcnRfZXg7CisrCQlYNTA5X3BvbGljeV90cmVlX2ZyZWU7CisrCQlPUEVOU1NMX2lhMzJjYXBfbG9jOworKwkJQk5fR0YybV9wb2x5MmFycjsKKysJCVNUT1JFX2N0cmw7CisrCQlTVE9SRV9BVFRSX0lORk9fY29tcGFyZTsKKysJCUJOX2dldDBfbmlzdF9wcmltZV8yMjQ7CisrCQlpMmRfRUNQYXJhbWV0ZXJzOworKwkJaTJkX0VDUEtQYXJhbWV0ZXJzOworKwkJQk5fR0VOQ0JfY2FsbDsKKysJCWQyaV9FQ1BLUGFyYW1ldGVyczsKKysJCVNUT1JFX21ldGhfc2V0X2dlbmVyYXRlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9nZW5lcmF0ZV9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfRUNESDsKKysJCU5BTUVfQ09OU1RSQUlOVFNfbmV3OworKwkJU0hBMjU2X0luaXQ7CisrCQlFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5OworKwkJUEVNX3dyaXRlX2Jpb19FQ19QVUJLRVk7CisrCQlTVE9SRV9BVFRSX0lORk9fc2V0X2NzdHI7CisrCQlTVE9SRV9saXN0X2NybF9uZXh0OworKwkJU1RPUkVfQVRUUl9JTkZPX2luX3JhbmdlOworKwkJRUNQYXJhbWV0ZXJzX3ByaW50OworKwkJU1RPUkVfbWV0aF9zZXRfZGVsZXRlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9kZWxldGVfZnVuY3Rpb247CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX25leHQ7CisrCQlBU04xX2dlbmVyYXRlX25jb25mOworKwkJQlVGX21lbWR1cDsKKysJCUJOX0dGMm1fbW9kX211bDsKKysJCVNUT1JFX21ldGhfZ2V0X2xpc3RfbmV4dF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfZG47CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X25leHQ7CisrCQlFQ19HUk9VUF9zZXRfc2VlZDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF90cnVzdDsKKysJCVNUT1JFX0FUVFJfSU5GT19mcmVlOworKwkJU1RPUkVfZ2V0X3ByaXZhdGVfa2V5OworKwkJRVZQX1BLRVlfZ2V0X2F0dHJfY291bnQ7CisrCQlTVE9SRV9BVFRSX0lORk9fbmV3OworKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX0dGMm07CisrCQlTVE9SRV9tZXRoX3NldF9yZXZva2VfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X3Jldm9rZV9mdW5jdGlvbjsKKysJCVNUT1JFX3N0b3JlX251bWJlcjsKKysJCUJOX2lzX3ByaW1lX2V4OworKwkJU1RPUkVfcmV2b2tlX3B1YmxpY19rZXk7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmFtOworKwkJU1RPUkVfZGVsZXRlX2FyYml0cmFyeTsKKysJCVBFTV9yZWFkX1g1MDlfQ0VSVF9QQUlSOworKwkJWDUwOV9TVE9SRV9zZXRfZGVwdGg7CisrCQlFQ0RTQV9nZXRfZXhfZGF0YTsKKysJCVNIQTIyNDsKKysJCUJJT19kdW1wX2luZGVudF9mcDsKKysJCUVDX0tFWV9zZXRfZ3JvdXA7CisrCQlCVUZfc3RybmR1cDsKKysJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfc3RhcnQ7CisrCQlCTl9HRjJtX21vZDsKKysJCVg1MDlfUkVRX2NoZWNrX3ByaXZhdGVfa2V5OworKwkJRUNfR1JPVVBfZ2V0X3NlZWRfbGVuOworKwkJRVJSX2xvYWRfU1RPUkVfc3RyaW5nczsKKysJCVBFTV9yZWFkX2Jpb19FQ19QVUJLRVk7CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZDsKKysJCWkyZF9FQ19QVUJLRVk7CisrCQlFQ0RTQV9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlBU04xX3B1dF9lb2M7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhwbGljaXRfcG9saWN5OworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxfcG9saWN5OworKwkJWDUwOV9WRVJJRllfUEFSQU1fdGFibGVfY2xlYW51cDsKKysJCVNUT1JFX21vZGlmeV9wcml2YXRlX2tleTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2ZyZWU7CisrCQlFQ19NRVRIT0RfZ2V0X2ZpZWxkX3R5cGU7CisrCQlFQ19HRnBfbmlzdF9tZXRob2Q7CisrCQlTVE9SRV9tZXRoX3NldF9tb2RpZnlfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X21vZGlmeV9mdW5jdGlvbjsKKysJCVNUT1JFX3BhcnNlX2F0dHJzX25leHQ7CisrCQlFTkdJTkVfbG9hZF9wYWRsb2NrOworKwkJRUNfR1JPVVBfc2V0X2N1cnZlX25hbWU7CisrCQlYNTA5X0NFUlRfUEFJUl9pdDsKKysJCVNUT1JFX21ldGhfZ2V0X3Jldm9rZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfcmV2b2tlX2Z1bmN0aW9uOworKwkJU1RPUkVfbWV0aG9kX3NldF9nZXRfZnVuY3Rpb247CisrCQlTVE9SRV9tb2RpZnlfbnVtYmVyOworKwkJU1RPUkVfbWV0aG9kX2dldF9zdG9yZV9mdW5jdGlvbjsKKysJCVNUT1JFX3N0b3JlX3ByaXZhdGVfa2V5OworKwkJQk5fR0YybV9tb2Rfc3FyX2FycjsKKysJCVJTQV9zZXR1cF9ibGluZGluZzsKKysJCUJJT19zX2RhdGFncmFtOworKwkJU1RPUkVfTWVtb3J5OworKwkJc2tfZmluZF9leDsKKysJCUVDX0dST1VQX3NldF9jdXJ2ZV9HRjJtOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0VDRFNBOworKwkJUE9MSUNZX0NPTlNUUkFJTlRTX25ldzsKKysJCUJOX0dGMm1fbW9kX3NxcnQ7CisrCQlFQ0RIX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCUVDX0tFWV9nZW5lcmF0ZV9rZXk7CisrCQlTSEEzODRfVXBkYXRlOworKwkJQk5fR0YybV9hcnIycG9seTsKKysJCVNUT1JFX21ldGhvZF9nZXRfZ2V0X2Z1bmN0aW9uOworKwkJU1RPUkVfbWV0aF9zZXRfY2xlYW51cF9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfY2xlYW51cF9mdW5jdGlvbjsKKysJCUVDX0dST1VQX2NoZWNrOworKwkJZDJpX0VDUHJpdmF0ZUtleV9iaW87CisrCQlFQ19LRVlfaW5zZXJ0X2tleV9tZXRob2RfZGF0YTsKKysJCVNUT1JFX21ldGhfZ2V0X2xvY2tfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2xvY2tfc3RvcmVfZnVuY3Rpb247CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZGVwdGg7CisrCQlTSEEyMjRfRmluYWw7CisrCQlTVE9SRV9tZXRoX3NldF91cGRhdGVfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X3VwZGF0ZV9zdG9yZV9mdW5jdGlvbjsKKysJCVNIQTIyNF9VcGRhdGU7CisrCQlkMmlfRUNQcml2YXRlS2V5OworKwkJQVNOMV9pdGVtX25kZWZfaTJkOworKwkJU1RPUkVfZGVsZXRlX3ByaXZhdGVfa2V5OworKwkJRVJSX3BvcF90b19tYXJrOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9TVE9SRTsKKysJCVg1MDlfcG9saWN5X2xldmVsX2dldDBfbm9kZTsKKysJCWkyZF9QS0NTN19OREVGOworKwkJRUNfR1JPVVBfZ2V0X2RlZ3JlZTsKKysJCUFTTjFfZ2VuZXJhdGVfdjM7CisrCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X2NzdHI7CisrCQlYNTA5X3BvbGljeV90cmVlX2xldmVsX2NvdW50OworKwkJQk5fR0YybV9hZGQ7CisrCQlFQ19LRVlfZ2V0MF9ncm91cDsKKysJCVNUT1JFX2dlbmVyYXRlX2NybDsKKysJCVNUT1JFX3N0b3JlX3B1YmxpY19rZXk7CisrCQlYNTA5X0NFUlRfUEFJUl9mcmVlOworKwkJU1RPUkVfcmV2b2tlX3ByaXZhdGVfa2V5OworKwkJQk5fbmlzdF9tb2RfMjI0OworKwkJU0hBNTEyX0ZpbmFsOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9kbjsKKysJCVNUT1JFX21ldGhfZ2V0X2luaXRpYWxpc2VfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2luaXRpYWxpc2VfZnVuY3Rpb247CisrCQlTVE9SRV9kZWxldGVfbnVtYmVyOworKwkJaTJkX0VDX1BVQktFWV9iaW87CisrCQlCSU9fZGdyYW1fbm9uX2ZhdGFsX2Vycm9yOworKwkJRUNfR1JPVVBfZ2V0X2FzbjFfZmxhZzsKKysJCVNUT1JFX0FUVFJfSU5GT19pbl9leDsKKysJCVNUT1JFX2xpc3RfY3JsX3N0YXJ0OworKwkJRUNESF9nZXRfZXhfbmV3X2luZGV4OworKwkJU1RPUkVfbWV0aF9nZXRfbW9kaWZ5X2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9tb2RpZnlfZnVuY3Rpb247CisrCQl2MmlfQVNOMV9CSVRfU1RSSU5HOworKwkJU1RPUkVfc3RvcmVfY2VydGlmaWNhdGU7CisrCQlPQkpfYnNlYXJjaF9leDsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZWZhdWx0OworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9zaGExc3RyOworKwkJQk5fR0YybV9tb2RfaW52OworKwkJQk5fR0YybV9tb2RfZXhwOworKwkJU1RPUkVfbW9kaWZ5X3B1YmxpY19rZXk7CisrCQlTVE9SRV9tZXRoX2dldF9saXN0X3N0YXJ0X2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOworKwkJRUNfR1JPVVBfZ2V0MF9zZWVkOworKwkJU1RPUkVfc3RvcmVfYXJiaXRyYXJ5OworKwkJU1RPUkVfbWV0aF9zZXRfdW5sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF91bmxvY2tfc3RvcmVfZnVuY3Rpb247CisrCQlCTl9HRjJtX21vZF9kaXZfYXJyOworKwkJRU5HSU5FX3NldF9FQ0RTQTsKKysJCVNUT1JFX2NyZWF0ZV9tZXRob2Q7CisrCQlFQ1BLUGFyYW1ldGVyc19wcmludDsKKysJCUVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5OworKwkJUEVNX3dyaXRlX0VDX1BVQktFWTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDE7CisrCQlFQ0RIX3NldF9tZXRob2Q7CisrCQl2MmlfR0VORVJBTF9OQU1FX2V4OworKwkJRUNESF9zZXRfZXhfZGF0YTsKKysJCVNUT1JFX2dlbmVyYXRlX2tleTsKKysJCUJOX25pc3RfbW9kXzUyMTsKKysJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF9sZXZlbDsKKysJCUVDX0dST1VQX3NldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07CisrCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udl9mb3JtOworKwkJUEVNX3JlYWRfRUNfUFVCS0VZOworKwkJaTJkX0VDRFNBX1NJRzsKKysJCUVDRFNBX09wZW5TU0w7CisrCQlTVE9SRV9kZWxldGVfY3JsOworKwkJRUNfS0VZX2dldF9lbmNfZmxhZ3M7CisrCQlBU04xX2NvbnN0X2NoZWNrX2luZmluaXRlX2VuZDsKKysJCUVWUF9QS0VZX2RlbGV0ZV9hdHRyOworKwkJRUNEU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNfR0YybTsKKysJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0YybTsKKysJCUVDX0dST1VQX2NtcDsKKysJCVNUT1JFX3Jldm9rZV9jZXJ0aWZpY2F0ZTsKKysJCUJOX2dldDBfbmlzdF9wcmltZV8yNTY7CisrCQlTVE9SRV9tZXRoX2dldF9kZWxldGVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2RlbGV0ZV9mdW5jdGlvbjsKKysJCVNIQTIyNF9Jbml0OworKwkJUEVNX3JlYWRfRUNQcml2YXRlS2V5OworKwkJU0hBNTEyX0luaXQ7CisrCQlTVE9SRV9wYXJzZV9hdHRyc19lbmRwOworKwkJQk5fc2V0X25lZ2F0aXZlOworKwkJRVJSX2xvYWRfRUNEU0Ffc3RyaW5nczsKKysJCUVDX0dST1VQX2dldF9iYXNpc190eXBlOworKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X25leHQ7CisrCQlpMnZfQVNOMV9CSVRfU1RSSU5HOworKwkJU1RPUkVfT0JKRUNUX2ZyZWU7CisrCQlCTl9uaXN0X21vZF8zODQ7CisrCQlpMmRfWDUwOV9DRVJUX1BBSVI7CisrCQlQRU1fd3JpdGVfRUNQS1BhcmFtZXRlcnM7CisrCQlFQ0RIX2NvbXB1dGVfa2V5OworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfc2hhMXN0cjsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNESDsKKysJCXBxdWV1ZV9wb3A7CisrCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9jc3RyOworKwkJUE9MSUNZX0NPTlNUUkFJTlRTX2l0OworKwkJU1RPUkVfZ2V0X2V4X25ld19pbmRleDsKKysJCUVWUF9QS0VZX2dldF9hdHRyX2J5X09CSjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDBfcG9saWN5OworKwkJQk5fR0YybV9tb2Rfc29sdmVfcXVhZDsKKysJCVNIQTI1NjsKKysJCWkyZF9FQ1ByaXZhdGVLZXlfZnA7CisrCQlYNTA5X3BvbGljeV90cmVlX2dldDBfdXNlcl9wb2xpY2llczsKKysJCVg1MDlfcGN5X3RyZWVfZ2V0MF91c3JfcG9saWNpZXM7CisrCQlPUEVOU1NMX0RJUl9yZWFkOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9FQ0RTQTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2xvb2t1cDsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGMm07CisrCQlFQ19HUk9VUF9kdXA7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRUNEU0E7CisrCQlFQ19LRVlfbmV3OworKwkJU0hBMjU2X1RyYW5zZm9ybTsKKysJCUVDX0tFWV9zZXRfZW5jX2ZsYWdzOworKwkJRUNEU0FfdmVyaWZ5OworKwkJRUNfUE9JTlRfcG9pbnQyaGV4OworKwkJRU5HSU5FX2dldF9TVE9SRTsKKysJCVNIQTUxMjsKKysJCVNUT1JFX2dldF9jZXJ0aWZpY2F0ZTsKKysJCUVDRFNBX2RvX3NpZ25fZXg7CisrCQlFQ0RTQV9kb192ZXJpZnk7CisrCQlkMmlfRUNQcml2YXRlS2V5X2ZwOworKwkJU1RPUkVfZGVsZXRlX2NlcnRpZmljYXRlOworKwkJU0hBNTEyX1RyYW5zZm9ybTsKKysJCVg1MDlfU1RPUkVfc2V0MV9wYXJhbTsKKysJCVNUT1JFX21ldGhvZF9nZXRfY3RybF9mdW5jdGlvbjsKKysJCVNUT1JFX2ZyZWU7CisrCQlQRU1fd3JpdGVfRUNQcml2YXRlS2V5OworKwkJU1RPUkVfbWV0aF9nZXRfdW5sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF91bmxvY2tfc3RvcmVfZnVuY3Rpb247CisrCQlTVE9SRV9nZXRfZXhfZGF0YTsKKysJCUVDX0tFWV9zZXRfcHVibGljX2tleTsKKysJCVBFTV9yZWFkX0VDUEtQYXJhbWV0ZXJzOworKwkJWDUwOV9DRVJUX1BBSVJfbmV3OworKwkJRU5HSU5FX3JlZ2lzdGVyX1NUT1JFOworKwkJUlNBX2dlbmVyYXRlX2tleV9leDsKKysJCURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4OworKwkJRUNQYXJhbWV0ZXJzX3ByaW50X2ZwOworKwkJWDUwOVYzX05BTUVfZnJvbV9zZWN0aW9uOworKwkJRVZQX1BLRVlfYWRkMV9hdHRyOworKwkJU1RPUkVfbW9kaWZ5X2NybDsKKysJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfc3RhcnQ7CisrCQlQT0xJQ1lfTUFQUElOR1NfaXQ7CisrCQlHRU5FUkFMX1NVQlRSRUVfaXQ7CisrCQlFQ19HUk9VUF9nZXRfY3VydmVfbmFtZTsKKysJCVBFTV93cml0ZV9YNTA5X0NFUlRfUEFJUjsKKysJCUJJT19kdW1wX2luZGVudF9jYjsKKysJCWQyaV9YNTA5X0NFUlRfUEFJUjsKKysJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfZW5kcDsKKysJCWFzbjFfY29uc3RfRmluaXNoOworKwkJaTJkX0VDX1BVQktFWV9mcDsKKysJCUJOX25pc3RfbW9kXzI1NjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDBfdGFibGU7CisrCQlwcXVldWVfZnJlZTsKKysJCUJOX0JMSU5ESU5HX2NyZWF0ZV9wYXJhbTsKKysJCUVDRFNBX3NpemU7CisrCQlkMmlfRUNfUFVCS0VZX2JpbzsKKysJCUJOX2dldDBfbmlzdF9wcmltZV81MjE7CisrCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X3NoYTFzdHI7CisrCQlCTl9nZW5lcmF0ZV9wcmltZV9leDsKKysJCUVDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1lOworKwkJU0hBMjU2X0ZpbmFsOworKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKKysJCVBFTV9yZWFkX2Jpb19FQ1ByaXZhdGVLZXk7CisrCQlTVE9SRV9tZXRoX2dldF9jbGVhbnVwX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9jbGVhbnVwX2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9FQ0RIOworKwkJZDJpX0VDRFNBX1NJRzsKKysJCUJOX2lzX3ByaW1lX2Zhc3R0ZXN0X2V4OworKwkJRUNEU0Ffc2lnbjsKKysJCVg1MDlfcG9saWN5X2NoZWNrOworKwkJRVZQX1BLRVlfZ2V0X2F0dHJfYnlfTklEOworKwkJU1RPUkVfc2V0X2V4X2RhdGE7CisrCQlFTkdJTkVfZ2V0X0VDRFNBOworKwkJRVZQX2VjZHNhOworKwkJQk5fQkxJTkRJTkdfZ2V0X2ZsYWdzOworKwkJUEtDUzEyX2FkZF9jZXJ0OworKwkJU1RPUkVfT0JKRUNUX25ldzsKKysJCUVSUl9sb2FkX0VDREhfc3RyaW5nczsKKysJCUVDX0tFWV9kdXA7CisrCQlFVlBfQ0lQSEVSX0NUWF9yYW5kX2tleTsKKysJCUVDRFNBX3NldF9tZXRob2Q7CisrCQlhMmlfSVBBRERSRVNTX05DOworKwkJZDJpX0VDUGFyYW1ldGVyczsKKysJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kOworKwkJU1RPUkVfZ2V0X2NybDsKKysJCVg1MDlfUE9MSUNZX05PREVfcHJpbnQ7CisrCQlTSEEzODRfSW5pdDsKKysJCUVDX0dGMm1fc2ltcGxlX21ldGhvZDsKKysJCUVDRFNBX3NldF9leF9kYXRhOworKwkJU0hBMzg0X0ZpbmFsOworKwkJUEtDUzdfc2V0X2RpZ2VzdDsKKysJCUVDX0tFWV9wcmludDsKKysJCVNUT1JFX21ldGhfc2V0X2xvY2tfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2xvY2tfc3RvcmVfZnVuY3Rpb247CisrCQlFQ0RTQV9nZXRfZXhfbmV3X2luZGV4OworKwkJU0hBMzg0OworKwkJUE9MSUNZX01BUFBJTkdfbmV3OworKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9lbmRwOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wb2xpY3lfdHJlZTsKKysJCUVDX0dST1VQX3NldF9hc24xX2ZsYWc7CisrCQlFQ19LRVlfY2hlY2tfa2V5OworKwkJZDJpX0VDX1BVQktFWV9mcDsKKysJCVBLQ1M3X3NldDBfdHlwZV9vdGhlcjsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X0NFUlRfUEFJUjsKKysJCXBxdWV1ZV9uZXh0OworKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9lbmRfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfZW5kX2Z1bmN0aW9uOworKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X09CSjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF90aW1lOworKwkJcHF1ZXVlX25ldzsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RIOworKwkJU1RPUkVfbmV3X21ldGhvZDsKKysJCVBLQ1MxMl9hZGRfa2V5OworKwkJRFNPX21lcmdlOworKwkJRUNfUE9JTlRfaGV4MnBvaW50OworKwkJQklPX2R1bXBfY2I7CisrCQlTSEEyNTZfVXBkYXRlOworKwkJcHF1ZXVlX2luc2VydDsKKysJCXBpdGVtX2ZyZWU7CisrCQlCTl9HRjJtX21vZF9pbnZfYXJyOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNEU0E7CisrCQlCTl9CTElORElOR19zZXRfdGhyZWFkX2lkOworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfODE5MjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2NsZWFyX2ZsYWdzOworKwkJZ2V0X3JmYzI0MDlfcHJpbWVfMTAyNDsKKysJCURIX2NoZWNrX3B1Yl9rZXk7CisrCQlnZXRfcmZjMzUyNl9wcmltZV8yMDQ4OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfNjE0NDsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzE1MzY7CisrCQlnZXRfcmZjMzUyNl9wcmltZV8zMDcyOworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfNDA5NjsKKysJCWdldF9yZmMyNDA5X3ByaW1lXzc2ODsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9mbGFnczsKKysJCUVWUF9DSVBIRVJfQ1RYX25ldzsKKysJCUVWUF9DSVBIRVJfQ1RYX2ZyZWU7CisrCQlDYW1lbGxpYV9jYmNfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYjEyOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY2ZiMV9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY2ZiOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY3RyMTI4X2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9jZmJyX2VuY3J5cHRfYmxvY2s7CisrCQlDYW1lbGxpYV9kZWNyeXB0OworKwkJQ2FtZWxsaWFfZWNiX2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9lbmNyeXB0OworKwkJQ2FtZWxsaWFfb2ZiMTI4X2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9zZXRfa2V5OworKwkJRVZQX2NhbWVsbGlhXzEyOF9jYmM7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjEyODsKKysJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiMTsKKysJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiODsKKysJCUVWUF9jYW1lbGxpYV8xMjhfZWNiOworKwkJRVZQX2NhbWVsbGlhXzEyOF9vZmI7CisrCQlFVlBfY2FtZWxsaWFfMTkyX2NiYzsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTI4OworKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmIxOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmI4OworKwkJRVZQX2NhbWVsbGlhXzE5Ml9lY2I7CisrCQlFVlBfY2FtZWxsaWFfMTkyX29mYjsKKysJCUVWUF9jYW1lbGxpYV8yNTZfY2JjOworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxMjg7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjE7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjg7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2VjYjsKKysJCUVWUF9jYW1lbGxpYV8yNTZfb2ZiOworKwkJYTJpX2lwYWRkOworKwkJQVNJZGVudGlmaWVyc19mcmVlOworKwkJaTJkX0FTSWRPclJhbmdlOworKwkJRVZQX0NJUEhFUl9ibG9ja19zaXplOworKwkJdjNfYXNpZF9pc19jYW5vbmljYWw7CisrCQlJUEFkZHJlc3NDaG9pY2VfZnJlZTsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9hcHBfZGF0YTsKKysJCUJJT19zZXRfY2FsbGJhY2tfYXJnOworKwkJdjNfYWRkcl9hZGRfcHJlZml4OworKwkJSVBBZGRyZXNzT3JSYW5nZV9pdDsKKysJCUJJT19zZXRfZmxhZ3M7CisrCQlBU0lkZW50aWZpZXJzX2l0OworKwkJdjNfYWRkcl9nZXRfcmFuZ2U7CisrCQlCSU9fbWV0aG9kX3R5cGU7CisrCQl2M19hZGRyX2luaGVyaXRzOworKwkJSVBBZGRyZXNzQ2hvaWNlX2l0OworKwkJQUVTX2lnZV9lbmNyeXB0OworKwkJdjNfYWRkcl9hZGRfcmFuZ2U7CisrCQlFVlBfQ0lQSEVSX0NUWF9uaWQ7CisrCQlkMmlfQVNSYW5nZTsKKysJCXYzX2FkZHJfYWRkX2luaGVyaXQ7CisrCQl2M19hc2lkX2FkZF9pZF9vcl9yYW5nZTsKKysJCXYzX2FkZHJfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OworKwkJRVZQX0NJUEhFUl9pdl9sZW5ndGg7CisrCQlFVlBfTURfdHlwZTsKKysJCXYzX2FzaWRfY2Fub25pemU7CisrCQlJUEFkZHJlc3NSYW5nZV9mcmVlOworKwkJdjNfYXNpZF9hZGRfaW5oZXJpdDsKKysJCUVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGg7CisrCQlJUEFkZHJlc3NSYW5nZV9uZXc7CisrCQlBU0lkT3JSYW5nZV9uZXc7CisrCQlFVlBfTURfc2l6ZTsKKysJCUVWUF9NRF9DVFhfdGVzdF9mbGFnczsKKysJCUJJT19jbGVhcl9mbGFnczsKKysJCWkyZF9BU1JhbmdlOworKwkJSVBBZGRyZXNzUmFuZ2VfaXQ7CisrCQlJUEFkZHJlc3NDaG9pY2VfbmV3OworKwkJQVNJZGVudGlmaWVyQ2hvaWNlX25ldzsKKysJCUFTUmFuZ2VfZnJlZTsKKysJCUVWUF9NRF9wa2V5X3R5cGU7CisrCQlFVlBfTURfQ1RYX2NsZWFyX2ZsYWdzOworKwkJSVBBZGRyZXNzRmFtaWx5X2ZyZWU7CisrCQlpMmRfSVBBZGRyZXNzRmFtaWx5OworKwkJSVBBZGRyZXNzT3JSYW5nZV9uZXc7CisrCQlFVlBfQ0lQSEVSX2ZsYWdzOworKwkJdjNfYXNpZF92YWxpZGF0ZV9yZXNvdXJjZV9zZXQ7CisrCQlkMmlfSVBBZGRyZXNzUmFuZ2U7CisrCQlBRVNfYmlfaWdlX2VuY3J5cHQ7CisrCQlCSU9fZ2V0X2NhbGxiYWNrOworKwkJSVBBZGRyZXNzT3JSYW5nZV9mcmVlOworKwkJdjNfYWRkcl9zdWJzZXQ7CisrCQlkMmlfSVBBZGRyZXNzRmFtaWx5OworKwkJdjNfYXNpZF9zdWJzZXQ7CisrCQlCSU9fdGVzdF9mbGFnczsKKysJCWkyZF9BU0lkZW50aWZpZXJDaG9pY2U7CisrCQlBU1JhbmdlX2l0OworKwkJZDJpX0FTSWRlbnRpZmllcnM7CisrCQlBU1JhbmdlX25ldzsKKysJCWQyaV9JUEFkZHJlc3NDaG9pY2U7CisrCQl2M19hZGRyX2dldF9hZmk7CisrCQlFVlBfQ0lQSEVSX2tleV9sZW5ndGg7CisrCQlFVlBfQ2lwaGVyOworKwkJaTJkX0lQQWRkcmVzc09yUmFuZ2U7CisrCQlBU0lkT3JSYW5nZV9pdDsKKysJCUVWUF9DSVBIRVJfbmlkOworKwkJaTJkX0lQQWRkcmVzc0Nob2ljZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2Jsb2NrX3NpemU7CisrCQlBU0lkZW50aWZpZXJzX25ldzsKKysJCXYzX2FkZHJfdmFsaWRhdGVfcGF0aDsKKysJCUlQQWRkcmVzc0ZhbWlseV9uZXc7CisrCQlFVlBfTURfQ1RYX3NldF9mbGFnczsKKysJCXYzX2FkZHJfaXNfY2Fub25pY2FsOworKwkJaTJkX0lQQWRkcmVzc1JhbmdlOworKwkJSVBBZGRyZXNzRmFtaWx5X2l0OworKwkJdjNfYXNpZF9pbmhlcml0czsKKysJCUVWUF9DSVBIRVJfQ1RYX2NpcGhlcjsKKysJCUVWUF9DSVBIRVJfQ1RYX2dldF9hcHBfZGF0YTsKKysJCUVWUF9NRF9ibG9ja19zaXplOworKwkJRVZQX0NJUEhFUl9DVFhfZmxhZ3M7CisrCQl2M19hc2lkX3ZhbGlkYXRlX3BhdGg7CisrCQlkMmlfSVBBZGRyZXNzT3JSYW5nZTsKKysJCXYzX2FkZHJfY2Fub25pemU7CisrCQlBU0lkZW50aWZpZXJDaG9pY2VfaXQ7CisrCQlFVlBfTURfQ1RYX21kOworKwkJZDJpX0FTSWRlbnRpZmllckNob2ljZTsKKysJCUJJT19tZXRob2RfbmFtZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2l2X2xlbmd0aDsKKysJCUFTSWRPclJhbmdlX2ZyZWU7CisrCQlBU0lkZW50aWZpZXJDaG9pY2VfZnJlZTsKKysJCUJJT19nZXRfY2FsbGJhY2tfYXJnOworKwkJQklPX3NldF9jYWxsYmFjazsKKysJCWQyaV9BU0lkT3JSYW5nZTsKKysJCWkyZF9BU0lkZW50aWZpZXJzOworKwkJU0VFRF9kZWNyeXB0OworKwkJU0VFRF9lbmNyeXB0OworKwkJU0VFRF9jYmNfZW5jcnlwdDsKKysJCUVWUF9zZWVkX29mYjsKKysJCVNFRURfY2ZiMTI4X2VuY3J5cHQ7CisrCQlTRUVEX29mYjEyOF9lbmNyeXB0OworKwkJRVZQX3NlZWRfY2JjOworKwkJU0VFRF9lY2JfZW5jcnlwdDsKKysJCUVWUF9zZWVkX2VjYjsKKysJCVNFRURfc2V0X2tleTsKKysJCUVWUF9zZWVkX2NmYjEyODsKKysJCVg1MDlfRVhURU5TSU9OU19pdDsKKysJCVg1MDlfZ2V0MV9vY3NwOworKwkJT0NTUF9SRVFfQ1RYX2ZyZWU7CisrCQlpMmRfWDUwOV9FWFRFTlNJT05TOworKwkJT0NTUF9zZW5kcmVxX25iaW87CisrCQlPQ1NQX3NlbmRyZXFfbmV3OworKwkJZDJpX1g1MDlfRVhURU5TSU9OUzsKKysJCVg1MDlfQUxHT1JTX2l0OworKwkJWDUwOV9BTEdPUl9nZXQwOworKwkJWDUwOV9BTEdPUl9zZXQwOworKwkJQUVTX3Vud3JhcF9rZXk7CisrCQlBRVNfd3JhcF9rZXk7CisrCQlYNTA5YXRfZ2V0MF9kYXRhX2J5X09CSjsKKysJCUFTTjFfVFlQRV9zZXQxOworKwkJQVNOMV9TVFJJTkdfc2V0MDsKKysJCWkyZF9YNTA5X0FMR09SUzsKKysJCUJJT19mX3psaWI7CisrCQlDT01QX3psaWJfY2xlYW51cDsKKysJCWQyaV9YNTA5X0FMR09SUzsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9mcmVlOworKwkJUEVNX3dyaXRlX0NNUzsKKysJCUNNU19hZGQwX0NlcnRpZmljYXRlQ2hvaWNlczsKKysJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfT0JKOworKwkJRVJSX2xvYWRfQ01TX3N0cmluZ3M7CisrCQlDTVNfc2lnbl9yZWNlaXB0OworKwkJaTJkX0NNU19Db250ZW50SW5mbzsKKysJCUNNU19zaWduZWRfZGVsZXRlX2F0dHI7CisrCQlkMmlfQ01TX2JpbzsKKysJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7CisrCQlDTVNfdmVyaWZ5OworKwkJU01JTUVfcmVhZF9DTVM7CisrCQlDTVNfZGVjcnlwdF9zZXQxX2tleTsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfYWxnczsKKysJCUNNU19hZGQxX2NlcnQ7CisrCQlDTVNfc2V0X2RldGFjaGVkOworKwkJQ01TX2VuY3J5cHQ7CisrCQlDTVNfRW52ZWxvcGVkRGF0YV9jcmVhdGU7CisrCQlDTVNfdW5jb21wcmVzczsKKysJCUNNU19hZGQwX2NybDsKKysJCUNNU19TaWduZXJJbmZvX3ZlcmlmeV9jb250ZW50OworKwkJQ01TX3Vuc2lnbmVkX2dldDBfZGF0YV9ieV9PQko7CisrCQlQRU1fd3JpdGVfYmlvX0NNUzsKKysJCUNNU191bnNpZ25lZF9nZXRfYXR0cjsKKysJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfY2VydF9jbXA7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2dldDBfYWxnczsKKysJCUNNU19SZWNpcEluZm9fa3RyaV9nZXQwX2FsZ3M7CisrCQlDTVNfQ29udGVudEluZm9fZnJlZTsKKysJCUNNU19maW5hbDsKKysJCUNNU19hZGRfc2ltcGxlX3NtaW1lY2FwOworKwkJQ01TX1NpZ25lckluZm9fdmVyaWZ5OworKwkJQ01TX2RhdGE7CisrCQlDTVNfQ29udGVudEluZm9faXQ7CisrCQlkMmlfQ01TX1JlY2VpcHRSZXF1ZXN0OworKwkJQ01TX2NvbXByZXNzOworKwkJQ01TX2RpZ2VzdF9jcmVhdGU7CisrCQlDTVNfU2lnbmVySW5mb19jZXJ0X2NtcDsKKysJCUNNU19TaWduZXJJbmZvX3NpZ247CisrCQlDTVNfZGF0YV9jcmVhdGU7CisrCQlpMmRfQ01TX2JpbzsKKysJCUNNU19FbmNyeXB0ZWREYXRhX3NldDFfa2V5OworKwkJQ01TX2RlY3J5cHQ7CisrCQlpbnRfc21pbWVfd3JpdGVfQVNOMTsKKysJCUNNU191bnNpZ25lZF9kZWxldGVfYXR0cjsKKysJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9jb3VudDsKKysJCUNNU19hZGRfc21pbWVjYXA7CisrCQlQRU1fcmVhZF9DTVM7CisrCQlDTVNfc2lnbmVkX2dldF9hdHRyX2J5X09CSjsKKysJCWQyaV9DTVNfQ29udGVudEluZm87CisrCQlDTVNfYWRkX3N0YW5kYXJkX3NtaW1lY2FwOworKwkJQ01TX0NvbnRlbnRJbmZvX25ldzsKKysJCUNNU19SZWNpcGllbnRJbmZvX3R5cGU7CisrCQlDTVNfZ2V0MF90eXBlOworKwkJQ01TX2lzX2RldGFjaGVkOworKwkJQ01TX3NpZ247CisrCQlDTVNfc2lnbmVkX2FkZDFfYXR0cjsKKysJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9ieV9PQko7CisrCQlTTUlNRV93cml0ZV9DTVM7CisrCQlDTVNfRW5jcnlwdGVkRGF0YV9kZWNyeXB0OworKwkJQ01TX2dldDBfUmVjaXBpZW50SW5mb3M7CisrCQlDTVNfYWRkMF9SZXZvY2F0aW9uSW5mb0Nob2ljZTsKKysJCUNNU19kZWNyeXB0X3NldDFfcGtleTsKKysJCUNNU19TaWduZXJJbmZvX3NldDFfc2lnbmVyX2NlcnQ7CisrCQlDTVNfZ2V0MF9zaWduZXJzOworKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2dldDBfdmFsdWVzOworKwkJQ01TX3NpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOworKwkJQ01TX2dldDBfU2lnbmVySW5mb3M7CisrCQlDTVNfYWRkMF9jZXJ0OworKwkJQ01TX0VuY3J5cHRlZERhdGFfZW5jcnlwdDsKKysJCUNNU19kaWdlc3RfdmVyaWZ5OworKwkJQ01TX3NldDFfc2lnbmVyc19jZXJ0czsKKysJCUNNU19zaWduZWRfZ2V0X2F0dHI7CisrCQlDTVNfUmVjaXBpZW50SW5mb19zZXQwX2tleTsKKysJCUNNU19TaWduZWREYXRhX2luaXQ7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9nZXQwX2lkOworKwkJQ01TX3ZlcmlmeV9yZWNlaXB0OworKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2l0OworKwkJUEVNX3JlYWRfYmlvX0NNUzsKKysJCUNNU19nZXQxX2NybHM7CisrCQlDTVNfYWRkMF9yZWNpcGllbnRfa2V5OworKwkJU01JTUVfcmVhZF9BU04xOworKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X25ldzsKKysJCUNNU19nZXQwX2NvbnRlbnQ7CisrCQlDTVNfZ2V0MV9SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKKysJCUNNU19SZWNpcGllbnRJbmZvX2tla3JpX2lkX2NtcDsKKysJCUNNU19hZGQxX1JlY2VpcHRSZXF1ZXN0OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduZXJfaWQ7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKKysJCUNNU191bnNpZ25lZF9hZGQxX2F0dHI7CisrCQlDTVNfc2lnbmVkX2dldF9hdHRyX2J5X05JRDsKKysJCUNNU19nZXQxX2NlcnRzOworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfTklEOworKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV90eHQ7CisrCQlDTVNfZGF0YUZpbmFsOworKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX3NpZ25lcl9pZDsKKysJCUNNU19SZWNpcEluZm9fa3RyaV9nZXQwX3NpZ3JfaWQ7CisrCQlpMmRfQ01TX1JlY2VpcHRSZXF1ZXN0OworKwkJQ01TX2FkZDFfcmVjaXBpZW50X2NlcnQ7CisrCQlDTVNfZGF0YUluaXQ7CisrCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV90eHQ7CisrCQlDTVNfUmVjaXBpZW50SW5mb19kZWNyeXB0OworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9jb3VudDsKKysJCUNNU19nZXQwX2VDb250ZW50VHlwZTsKKysJCUNNU19zZXQxX2VDb250ZW50VHlwZTsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9jcmVhdGUwOworKwkJQ01TX2FkZDFfc2lnbmVyOworKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9wa2V5OworKwkJRU5HSU5FX3NldF9sb2FkX3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfbGRfc3NsX2NsbnRfY2VydF9mbjsKKysJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9zc2xfY2xpZW50X2NlcnRfZm47CisrCQlFTkdJTkVfbG9hZF9zc2xfY2xpZW50X2NlcnQ7CisrCQlFTkdJTkVfbG9hZF9jYXBpOworKwkJT1BFTlNTTF9pc3NlcnZpY2U7CisrCQlGSVBTX2RzYV9zaWdfZGVjb2RlOworKwkJRVZQX0NJUEhFUl9DVFhfY2xlYXJfZmxhZ3M7CisrCQlGSVBTX3JhbmRfc3RhdHVzOworKwkJRklQU19yYW5kX3NldF9rZXk7CisrCQlDUllQVE9fc2V0X21lbV9pbmZvX2Z1bmN0aW9uczsKKysJCVJTQV9YOTMxX2dlbmVyYXRlX2tleV9leDsKKysJCWludF9FUlJfc2V0X3N0YXRlX2Z1bmM7CisrCQlpbnRfRVZQX01EX3NldF9lbmdpbmVfY2FsbGJhY2tzOworKwkJaW50X0NSWVBUT19zZXRfZG9fZHlubG9ja19jYWxsYmFjazsKKysJCUZJUFNfcm5nX3N0aWNrOworKwkJRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdzOworKwkJQk5fWDkzMV9nZW5lcmF0ZV9wcmltZV9leDsKKysJCUZJUFNfc2VsZnRlc3RfY2hlY2s7CisrCQlGSVBTX3JhbmRfc2V0X2R0OworKwkJQ1JZUFRPX2RiZ19wb3BfaW5mbzsKKysJCUZJUFNfZHNhX2ZyZWU7CisrCQlSU0FfWDkzMV9kZXJpdmVfZXg7CisrCQlGSVBTX3JzYV9uZXc7CisrCQlGSVBTX3JhbmRfYnl0ZXM7CisrCQlmaXBzX2NpcGhlcl90ZXN0OworKwkJRVZQX0NJUEhFUl9DVFhfdGVzdF9mbGFnczsKKysJCUNSWVBUT19tYWxsb2NfZGVidWdfaW5pdDsKKysJCUNSWVBUT19kYmdfcHVzaF9pbmZvOworKwkJRklQU19jb3JydXB0X3JzYV9rZXlnZW47CisrCQlGSVBTX2RoX25ldzsKKysJCUZJUFNfY29ycnVwdF9kc2Ffa2V5Z2VuOworKwkJRklQU19kaF9mcmVlOworKwkJZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0OworKwkJRVZQX2FkZF9hbGdfbW9kdWxlOworKwkJaW50X1JBTkRfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOworKwkJaW50X0VWUF9DSVBIRVJfc2V0X2VuZ2luZV9jYWxsYmFja3M7CisrCQlpbnRfRVZQX01EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKKysJCUZJUFNfcmFuZF90ZXN0X21vZGU7CisrCQlGSVBTX3JhbmRfcmVzZXQ7CisrCQlGSVBTX2RzYV9uZXc7CisrCQlpbnRfUkFORF9zZXRfY2FsbGJhY2tzOworKwkJQk5fWDkzMV9kZXJpdmVfcHJpbWVfZXg7CisrCQlpbnRfRVJSX2xpYl9pbml0OworKwkJaW50X0VWUF9DSVBIRVJfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOworKwkJRklQU19yc2FfZnJlZTsKKysJCUZJUFNfZHNhX3NpZ19lbmNvZGU7CisrCQlDUllQVE9fZGJnX3JlbW92ZV9hbGxfaW5mbzsKKysJCU9QRU5TU0xfaW5pdDsKKysJCUNSWVBUT19zdHJkdXA7CisrCQlKUEFLRV9TVEVQM0FfcHJvY2VzczsKKysJCUpQQUtFX1NURVAxX3JlbGVhc2U7CisrCQlKUEFLRV9nZXRfc2hhcmVkX2tleTsKKysJCUpQQUtFX1NURVAzQl9pbml0OworKwkJSlBBS0VfU1RFUDFfZ2VuZXJhdGU7CisrCQlKUEFLRV9TVEVQMV9pbml0OworKwkJSlBBS0VfU1RFUDNCX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQMl9nZW5lcmF0ZTsKKysJCUpQQUtFX0NUWF9uZXc7CisrCQlKUEFLRV9DVFhfZnJlZTsKKysJCUpQQUtFX1NURVAzQl9yZWxlYXNlOworKwkJSlBBS0VfU1RFUDNBX3JlbGVhc2U7CisrCQlKUEFLRV9TVEVQMl9wcm9jZXNzOworKwkJSlBBS0VfU1RFUDNCX2dlbmVyYXRlOworKwkJSlBBS0VfU1RFUDFfcHJvY2VzczsKKysJCUpQQUtFX1NURVAzQV9nZW5lcmF0ZTsKKysJCUpQQUtFX1NURVAyX3JlbGVhc2U7CisrCQlKUEFLRV9TVEVQM0FfaW5pdDsKKysJCUVSUl9sb2FkX0pQQUtFX3N0cmluZ3M7CisrCQlKUEFLRV9TVEVQMl9pbml0OworKwkJcHF1ZXVlX3NpemU7CisrCQlpMmRfVFNfQUNDVVJBQ1k7CisrCQlpMmRfVFNfTVNHX0lNUFJJTlRfZnA7CisrCQlpMmRfVFNfTVNHX0lNUFJJTlQ7CisrCQlFVlBfUEtFWV9wcmludF9wdWJsaWM7CisrCQlFVlBfUEtFWV9DVFhfbmV3OworKwkJaTJkX1RTX1RTVF9JTkZPOworKwkJRVZQX1BLRVlfYXNuMV9maW5kOworKwkJRFNPX01FVEhPRF9iZW9zOworKwkJVFNfQ09ORl9sb2FkX2NlcnQ7CisrCQlUU19SRVFfZ2V0X2V4dDsKKysJCUVWUF9QS0VZX3NpZ25faW5pdDsKKysJCUFTTjFfaXRlbV9wcmludDsKKysJCVRTX1RTVF9JTkZPX3NldF9ub25jZTsKKysJCVRTX1JFU1BfZHVwOworKwkJRU5HSU5FX3JlZ2lzdGVyX3BrZXlfbWV0aHM7CisrCQlFVlBfUEtFWV9hc24xX2FkZDA7CisrCQlQS0NTN19hZGQwX2F0dHJpYl9zaWduaW5nX3RpbWU7CisrCQlpMmRfVFNfVFNUX0lORk9fZnA7CisrCQlCSU9fYXNuMV9nZXRfcHJlZml4OworKwkJVFNfVFNUX0lORk9fc2V0X3RpbWU7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9kZWNyeXB0OworKwkJRVZQX1BLRVlfc2V0X3R5cGVfc3RyOworKwkJRVZQX1BLRVlfQ1RYX2dldF9rZXlnZW5faW5mbzsKKysJCVRTX1JFUV9zZXRfcG9saWN5X2lkOworKwkJZDJpX1RTX1JFU1BfZnA7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZ2luZTsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfZW5nOworKwkJV0hJUkxQT09MX0luaXQ7CisrCQlUU19SRVNQX3NldF9zdGF0dXNfaW5mbzsKKysJCUVWUF9QS0VZX2tleWdlbjsKKysJCUVWUF9EaWdlc3RTaWduSW5pdDsKKysJCVRTX0FDQ1VSQUNZX3NldF9taWxsaXM7CisrCQlUU19SRVFfZHVwOworKwkJR0VORVJBTF9OQU1FX2R1cDsKKysJCUFTTjFfU0VRVUVOQ0VfQU5ZX2l0OworKwkJV0hJUkxQT09MOworKwkJWDUwOV9TVE9SRV9nZXQxX2NybHM7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoOworKwkJRVZQX1BLRVlfYXNuMV9uZXc7CisrCQlCSU9fbmV3X05ERUY7CisrCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aDsKKysJCVRTX01TR19JTVBSSU5UX3NldF9hbGdvOworKwkJaTJkX1RTX1RTVF9JTkZPX2JpbzsKKysJCVRTX1RTVF9JTkZPX3NldF9vcmRlcmluZzsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfT0JKOworKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9wb2ludGVyOworKwkJVFNfQ09ORl9nZXRfdHNhX3NlY3Rpb247CisrCQlTTUlNRV93cml0ZV9BU04xOworKwkJVFNfUkVTUF9DVFhfc2V0X3NpZ25lcl9rZXk7CisrCQlFVlBfUEtFWV9lbmNyeXB0X29sZDsKKysJCUVWUF9QS0VZX2VuY3J5cHRfaW5pdDsKKysJCUNSWVBUT19USFJFQURJRF9jcHk7CisrCQlBU04xX1BDVFhfZ2V0X2NlcnRfZmxhZ3M7CisrCQlpMmRfRVNTX1NJR05JTkdfQ0VSVDsKKysJCVRTX0NPTkZfbG9hZF9rZXk7CisrCQlpMmRfQVNOMV9TRVFVRU5DRV9BTlk7CisrCQlkMmlfVFNfTVNHX0lNUFJJTlRfYmlvOworKwkJRVZQX1BLRVlfYXNuMV9zZXRfcHVibGljOworKwkJYjJpX1B1YmxpY0tleV9iaW87CisrCQlCSU9fYXNuMV9zZXRfcHJlZml4OworKwkJRVZQX1BLRVlfbmV3X21hY19rZXk7CisrCQlCSU9fbmV3X0NNUzsKKysJCUNSWVBUT19USFJFQURJRF9jbXA7CisrCQlUU19SRVFfZXh0X2ZyZWU7CisrCQlFVlBfUEtFWV9hc24xX3NldF9mcmVlOworKwkJRVZQX1BLRVlfZ2V0MF9hc24xOworKwkJZDJpX05FVFNDQVBFX1g1MDk7CisrCQlFVlBfUEtFWV92ZXJpZnlfcmVjb3Zlcl9pbml0OworKwkJRVZQX1BLRVlfQ1RYX3NldF9kYXRhOworKwkJRVZQX1BLRVlfa2V5Z2VuX2luaXQ7CisrCQlUU19SRVNQX0NUWF9zZXRfc3RhdHVzX2luZm87CisrCQlUU19NU0dfSU1QUklOVF9nZXRfYWxnbzsKKysJCVRTX1JFUV9wcmludF9iaW87CisrCQlFVlBfUEtFWV9DVFhfY3RybF9zdHI7CisrCQlFVlBfUEtFWV9nZXRfZGVmYXVsdF9kaWdlc3RfbmlkOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTN19zdHJlYW07CisrCQlUU19NU0dfSU1QUklOVF9wcmludF9iaW87CisrCQlCTl9hc2MyYm47CisrCQlUU19SRVFfZ2V0X3BvbGljeV9pZDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9wa2V5X2FzbjFfbWV0aHM7CisrCQlFTkdJTkVfc2V0X2RlZl9wa2V5X2FzbjFfbWV0aHM7CisrCQlkMmlfVFNfQUNDVVJBQ1k7CisrCQlEU09fZ2xvYmFsX2xvb2t1cDsKKysJCVRTX0NPTkZfc2V0X3RzYV9uYW1lOworKwkJaTJkX0FTTjFfU0VUX0FOWTsKKysJCUVOR0lORV9sb2FkX2dvc3Q7CisrCQlXSElSTFBPT0xfQml0VXBkYXRlOworKwkJQVNOMV9QQ1RYX2dldF9mbGFnczsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfTklEOworKwkJVFNfUkVTUF9uZXc7CisrCQlFU1NfQ0VSVF9JRF9kdXA7CisrCQlUU19TVEFUVVNfSU5GT19kdXA7CisrCQlUU19SRVFfZGVsZXRlX2V4dDsKKysJCUVWUF9EaWdlc3RWZXJpZnlGaW5hbDsKKysJCUVWUF9QS0VZX3ByaW50X3BhcmFtczsKKysJCWkyZF9DTVNfYmlvX3N0cmVhbTsKKysJCVRTX1JFUV9nZXRfbXNnX2ltcHJpbnQ7CisrCQlPQkpfZmluZF9zaWdpZF9ieV9hbGdzOworKwkJVFNfVFNUX0lORk9fZ2V0X3NlcmlhbDsKKysJCVRTX1JFUV9nZXRfbm9uY2U7CisrCQlYNTA5X1BVQktFWV9zZXQwX3BhcmFtOworKwkJRVZQX1BLRVlfQ1RYX3NldDBfa2V5Z2VuX2luZm87CisrCQlESVNUX1BPSU5UX3NldF9kcG5hbWU7CisrCQlpMmRfSVNTVUlOR19ESVNUX1BPSU5UOworKwkJQVNOMV9TRVRfQU5ZX2l0OworKwkJRVZQX1BLRVlfQ1RYX2dldF9kYXRhOworKwkJVFNfU1RBVFVTX0lORk9fcHJpbnRfYmlvOworKwkJRVZQX1BLRVlfZGVyaXZlX2luaXQ7CisrCQlkMmlfVFNfVFNUX0lORk87CisrCQlFVlBfUEtFWV9hc24xX2FkZF9hbGlhczsKKysJCWQyaV9UU19SRVNQX2JpbzsKKysJCU9USEVSTkFNRV9jbXA7CisrCQlHRU5FUkFMX05BTUVfc2V0MF92YWx1ZTsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fZ2V0MF9hbGc7CisrCQlUU19SRVNQX0NUWF9uZXc7CisrCQlUU19SRVNQX3NldF90c3RfaW5mbzsKKysJCVBLQ1M3X2ZpbmFsOworKwkJRVZQX1BLRVlfYmFzZV9pZDsKKysJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfY2VydDsKKysJCVRTX1JFUV9zZXRfbXNnX2ltcHJpbnQ7CisrCQlFVlBfUEtFWV9DVFhfY3RybDsKKysJCVRTX0NPTkZfc2V0X2RpZ2VzdHM7CisrCQlkMmlfVFNfTVNHX0lNUFJJTlQ7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9jdHJsOworKwkJVFNfUkVRX2dldF9leHRfYnlfTklEOworKwkJUEtDUzVfcGJlX3NldDBfYWxnb3I7CisrCQlCTl9CTElORElOR190aHJlYWRfaWQ7CisrCQlUU19BQ0NVUkFDWV9uZXc7CisrCQlYNTA5X0NSTF9NRVRIT0RfZnJlZTsKKysJCUFTTjFfUENUWF9nZXRfbm1fZmxhZ3M7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9zaWduOworKwkJQ1JZUFRPX1RIUkVBRElEX2N1cnJlbnQ7CisrCQlFVlBfUEtFWV9kZWNyeXB0X2luaXQ7CisrCQlORVRTQ0FQRV9YNTA5X2ZyZWU7CisrCQlpMmJfUFZLX2JpbzsKKysJCUVWUF9QS0VZX3ByaW50X3ByaXZhdGU7CisrCQlHRU5FUkFMX05BTUVfZ2V0MF92YWx1ZTsKKysJCWIyaV9QVktfYmlvOworKwkJQVNOMV9VVENUSU1FX2FkajsKKysJCVRTX1RTVF9JTkZPX25ldzsKKysJCUVWUF9NRF9kb19hbGxfc29ydGVkOworKwkJVFNfQ09ORl9zZXRfZGVmYXVsdF9lbmdpbmU7CisrCQlUU19BQ0NVUkFDWV9zZXRfc2Vjb25kczsKKysJCVRTX1RTVF9JTkZPX2dldF90aW1lOworKwkJUEtDUzhfcGtleV9nZXQwOworKwkJRVZQX1BLRVlfYXNuMV9nZXQwOworKwkJT0JKX2FkZF9zaWdpZDsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX3NpZ247CisrCQlFVlBfUEtFWV9wYXJhbWdlbl9pbml0OworKwkJRVZQX1BLRVlfc2lnbjsKKysJCU9CSl9zaWdpZF9mcmVlOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfaW5pdDsKKysJCWQyaV9FU1NfSVNTVUVSX1NFUklBTDsKKysJCUlTU1VJTkdfRElTVF9QT0lOVF9uZXc7CisrCQlBU04xX1RJTUVfYWRqOworKwkJVFNfT0JKX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3ZlcmlmeV9yZWNvdmVyOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdnJmeV9yZWNvdmVyOworKwkJVFNfUkVTUF9nZXRfc3RhdHVzX2luZm87CisrCQlDTVNfc3RyZWFtOworKwkJRVZQX1BLRVlfQ1RYX3NldF9jYjsKKysJCVBLQ1M3X3RvX1RTX1RTVF9JTkZPOworKwkJQVNOMV9QQ1RYX2dldF9vaWRfZmxhZ3M7CisrCQlUU19UU1RfSU5GT19hZGRfZXh0OworKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVyaXZlOworKwkJaTJkX1RTX1JFU1BfZnA7CisrCQlpMmRfVFNfTVNHX0lNUFJJTlRfYmlvOworKwkJVFNfUkVTUF9DVFhfc2V0X2FjY3VyYWN5OworKwkJVFNfUkVRX3NldF9ub25jZTsKKysJCUVTU19DRVJUX0lEX25ldzsKKysJCUVOR0lORV9wa2V5X2FzbjFfZmluZF9zdHI7CisrCQlUU19SRVFfZ2V0X2V4dF9jb3VudDsKKysJCUJVRl9yZXZlcnNlOworKwkJVFNfVFNUX0lORk9fcHJpbnRfYmlvOworKwkJZDJpX0lTU1VJTkdfRElTVF9QT0lOVDsKKysJCUVOR0lORV9nZXRfcGtleV9tZXRoczsKKysJCWkyYl9Qcml2YXRlS2V5X2JpbzsKKysJCWkyZF9UU19SRVNQOworKwkJYjJpX1B1YmxpY0tleTsKKysJCVRTX1ZFUklGWV9DVFhfY2xlYW51cDsKKysJCVRTX1NUQVRVU19JTkZPX2ZyZWU7CisrCQlUU19SRVNQX3ZlcmlmeV90b2tlbjsKKysJCU9CSl9ic2VhcmNoX2V4XzsKKysJCUFTTjFfYm5fcHJpbnQ7CisrCQlFVlBfUEtFWV9hc24xX2dldF9jb3VudDsKKysJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X2FzbjFfbWV0aHM7CisrCQlBU04xX1BDVFhfc2V0X25tX2ZsYWdzOworKwkJRVZQX0RpZ2VzdFZlcmlmeUluaXQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9tZXRoczsKKysJCVRTX1RTVF9JTkZPX2dldF9wb2xpY3lfaWQ7CisrCQlUU19SRVFfZ2V0X2NlcnRfcmVxOworKwkJWDUwOV9DUkxfc2V0X21ldGhfZGF0YTsKKysJCVBLQ1M4X3BrZXlfc2V0MDsKKysJCUFTTjFfU1RSSU5HX2NvcHk7CisrCQlkMmlfVFNfVFNUX0lORk9fZnA7CisrCQlYNTA5X0NSTF9tYXRjaDsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X3ByaXZhdGU7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2QyaTsKKysJCVRTX1JFU1BfQ1RYX2FkZF9wb2xpY3k7CisrCQlkMmlfVFNfUkVTUDsKKysJCVRTX0NPTkZfbG9hZF9jZXJ0czsKKysJCVRTX1RTVF9JTkZPX2dldF9tc2dfaW1wcmludDsKKysJCUVSUl9sb2FkX1RTX3N0cmluZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfdmVyc2lvbjsKKysJCUVWUF9QS0VZX0NUWF9kdXA7CisrCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnk7CisrCQlpMmJfUHVibGljS2V5X2JpbzsKKysJCVRTX0NPTkZfc2V0X2NlcnRzOworKwkJRVZQX1BLRVlfYXNuMV9nZXQwX2luZm87CisrCQlUU19WRVJJRllfQ1RYX2ZyZWU7CisrCQlUU19SRVFfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCVRTX1JFU1BfQ1RYX3NldF9zZXJpYWxfY2I7CisrCQlYNTA5X0NSTF9nZXRfbWV0aF9kYXRhOworKwkJVFNfUkVTUF9DVFhfc2V0X3RpbWVfY2I7CisrCQlUU19NU0dfSU1QUklOVF9nZXRfbXNnOworKwkJVFNfVFNUX0lORk9fZXh0X2ZyZWU7CisrCQlUU19SRVFfZ2V0X3ZlcnNpb247CisrCQlUU19SRVFfYWRkX2V4dDsKKysJCUVWUF9QS0VZX0NUWF9zZXRfYXBwX2RhdGE7CisrCQlPQkpfYnNlYXJjaF87CisrCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnljdHg7CisrCQlpMmRfUEtDUzdfYmlvX3N0cmVhbTsKKysJCUNSWVBUT19USFJFQURJRF9zZXRfbnVtZXJpYzsKKysJCVBLQ1M3X3NpZ25fYWRkX3NpZ25lcjsKKysJCWQyaV9UU19UU1RfSU5GT19iaW87CisrCQlUU19UU1RfSU5GT19nZXRfb3JkZXJpbmc7CisrCQlUU19SRVNQX3ByaW50X2JpbzsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRzOworKwkJSE1BQ19DVFhfY29weTsKKysJCVBLQ1M1X3BiZTJfc2V0X2l2OworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aHM7CisrCQliMmlfUHJpdmF0ZUtleTsKKysJCUVWUF9QS0VZX0NUWF9nZXRfYXBwX2RhdGE7CisrCQlUU19SRVFfc2V0X2NlcnRfcmVxOworKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9jYWxsYmFjazsKKysJCVRTX0NPTkZfc2V0X3NlcmlhbDsKKysJCVRTX1RTVF9JTkZPX2ZyZWU7CisrCQlkMmlfVFNfUkVRX2ZwOworKwkJVFNfUkVTUF92ZXJpZnlfcmVzcG9uc2U7CisrCQlpMmRfRVNTX0lTU1VFUl9TRVJJQUw7CisrCQlUU19BQ0NVUkFDWV9nZXRfc2Vjb25kczsKKysJCUVWUF9DSVBIRVJfZG9fYWxsOworKwkJYjJpX1ByaXZhdGVLZXlfYmlvOworKwkJT0NTUF9DRVJUSURfZHVwOworKwkJWDUwOV9QVUJLRVlfZ2V0MF9wYXJhbTsKKysJCVRTX01TR19JTVBSSU5UX2R1cDsKKysJCVBLQ1M3X3ByaW50X2N0eDsKKysJCWkyZF9UU19SRVFfYmlvOworKwkJRVZQX3doaXJscG9vbDsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X3BhcmFtOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfZW5jcnlwdDsKKysJCUFTTjFfUENUWF9zZXRfZmxhZ3M7CisrCQlpMmRfRVNTX0NFUlRfSUQ7CisrCQlUU19WRVJJRllfQ1RYX25ldzsKKysJCVRTX1JFU1BfQ1RYX3NldF9leHRlbnNpb25fY2I7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX3BrZXlfbWV0aHM7CisrCQlUU19SRVNQX0NUWF9zZXRfc3RhdHVzX2luZm9fY29uZDsKKysJCVRTX1JFU1BfQ1RYX3NldF9zdGF0X2luZm9fY29uZDsKKysJCUVWUF9QS0VZX3ZlcmlmeTsKKysJCVdISVJMUE9PTF9GaW5hbDsKKysJCVg1MDlfQ1JMX01FVEhPRF9uZXc7CisrCQlFVlBfRGlnZXN0U2lnbkZpbmFsOworKwkJVFNfUkVTUF9DVFhfc2V0X2RlZl9wb2xpY3k7CisrCQlORVRTQ0FQRV9YNTA5X2l0OworKwkJVFNfUkVTUF9jcmVhdGVfcmVzcG9uc2U7CisrCQlQS0NTN19TSUdORVJfSU5GT19nZXQwX2FsZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfbm9uY2U7CisrCQlFVlBfUEtFWV9kZWNyeXB0X29sZDsKKysJCVRTX1RTVF9JTkZPX3NldF9wb2xpY3lfaWQ7CisrCQlUU19DT05GX3NldF9lc3NfY2VydF9pZF9jaGFpbjsKKysJCUVWUF9QS0VZX0NUWF9nZXQwX3BrZXk7CisrCQlkMmlfVFNfUkVROworKwkJRVZQX1BLRVlfYXNuMV9maW5kX3N0cjsKKysJCUJJT19mX2FzbjE7CisrCQlFU1NfU0lHTklOR19DRVJUX25ldzsKKysJCUVWUF9QQkVfZmluZDsKKysJCVg1MDlfQ1JMX2dldDBfYnlfY2VydDsKKysJCUVWUF9QS0VZX2Rlcml2ZTsKKysJCWkyZF9UU19SRVE7CisrCQlUU19UU1RfSU5GT19kZWxldGVfZXh0OworKwkJRVNTX0lTU1VFUl9TRVJJQUxfZnJlZTsKKysJCUFTTjFfUENUWF9zZXRfc3RyX2ZsYWdzOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9zdHI7CisrCQlUU19DT05GX3NldF9zaWduZXJfa2V5OworKwkJVFNfQUNDVVJBQ1lfZ2V0X21pbGxpczsKKysJCVRTX1JFU1BfZ2V0X3Rva2VuOworKwkJVFNfQUNDVVJBQ1lfZHVwOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X2FzbjFfbWV0aHM7CisrCQlFTkdJTkVfcmVnX2FsbF9wa2V5X2FzbjFfbWV0aHM7CisrCQlYNTA5X0NSTF9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlDUllQVE9fVEhSRUFESURfaGFzaDsKKysJCUNNU19Db250ZW50SW5mb19wcmludF9jdHg7CisrCQlUU19SRVNQX2ZyZWU7CisrCQlJU1NVSU5HX0RJU1RfUE9JTlRfZnJlZTsKKysJCUVTU19JU1NVRVJfU0VSSUFMX25ldzsKKysJCUNNU19hZGQxX2NybDsKKysJCVBLQ1M3X2FkZDFfYXR0cmliX2RpZ2VzdDsKKysJCVRTX1JFU1BfQ1RYX2FkZF9tZDsKKysJCVRTX1RTVF9JTkZPX2R1cDsKKysJCUVOR0lORV9zZXRfcGtleV9hc24xX21ldGhzOworKwkJUEVNX3dyaXRlX2Jpb19QYXJhbWV0ZXJzOworKwkJVFNfVFNUX0lORk9fZ2V0X2FjY3VyYWN5OworKwkJWDUwOV9DUkxfZ2V0MF9ieV9zZXJpYWw7CisrCQlUU19UU1RfSU5GT19zZXRfdmVyc2lvbjsKKysJCVRTX1JFU1BfQ1RYX2dldF90c3RfaW5mbzsKKysJCVRTX1JFU1BfdmVyaWZ5X3NpZ25hdHVyZTsKKysJCUNSWVBUT19USFJFQURJRF9nZXRfY2FsbGJhY2s7CisrCQlUU19UU1RfSU5GT19nZXRfdHNhOworKwkJVFNfU1RBVFVTX0lORk9fbmV3OworKwkJRVZQX1BLRVlfQ1RYX2dldF9jYjsKKysJCVRTX1JFUV9nZXRfZXh0X2QyaTsKKysJCUdFTkVSQUxfTkFNRV9zZXQwX290aGVybmFtZTsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfY291bnQ7CisrCQlUU19SRVNQX0NUWF9nZXRfcmVxdWVzdDsKKysJCWkyZF9ORVRTQ0FQRV9YNTA5OworKwkJRU5HSU5FX2dldF9wa2V5X21ldGhfZW5naW5lOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbmN0eDsKKysJCUVWUF9QS0VZX2FzbjFfY29weTsKKysJCUFTTjFfVFlQRV9jbXA7CisrCQlFVlBfQ0lQSEVSX2RvX2FsbF9zb3J0ZWQ7CisrCQlFVlBfUEtFWV9DVFhfZnJlZTsKKysJCUlTU1VJTkdfRElTVF9QT0lOVF9pdDsKKysJCWQyaV9UU19NU0dfSU1QUklOVF9mcDsKKysJCVg1MDlfU1RPUkVfZ2V0MV9jZXJ0czsKKysJCUVWUF9QS0VZX0NUWF9nZXRfb3BlcmF0aW9uOworKwkJZDJpX0VTU19TSUdOSU5HX0NFUlQ7CisrCQlUU19DT05GX3NldF9vcmRlcmluZzsKKysJCUVWUF9QQkVfYWxnX2FkZF90eXBlOworKwkJVFNfUkVRX3NldF92ZXJzaW9uOworKwkJRVZQX1BLRVlfZ2V0MDsKKysJCUJJT19hc24xX3NldF9zdWZmaXg7CisrCQlpMmRfVFNfU1RBVFVTX0lORk87CisrCQlFVlBfTURfZG9fYWxsOworKwkJVFNfVFNUX0lORk9fc2V0X2FjY3VyYWN5OworKwkJUEtDUzdfYWRkX2F0dHJpYl9jb250ZW50X3R5cGU7CisrCQlFUlJfcmVtb3ZlX3RocmVhZF9zdGF0ZTsKKysJCUVWUF9QS0VZX21ldGhfYWRkMDsKKysJCVRTX1RTVF9JTkZPX3NldF90c2E7CisrCQlFVlBfUEtFWV9tZXRoX25ldzsKKysJCVdISVJMUE9PTF9VcGRhdGU7CisrCQlUU19DT05GX3NldF9hY2N1cmFjeTsKKysJCUFTTjFfUENUWF9zZXRfb2lkX2ZsYWdzOworKwkJRVNTX1NJR05JTkdfQ0VSVF9kdXA7CisrCQlkMmlfVFNfUkVRX2JpbzsKKysJCVg1MDlfdGltZV9hZGpfZXg7CisrCQlUU19SRVNQX0NUWF9hZGRfZmxhZ3M7CisrCQlkMmlfVFNfU1RBVFVTX0lORk87CisrCQlUU19NU0dfSU1QUklOVF9zZXRfbXNnOworKwkJQklPX2FzbjFfZ2V0X3N1ZmZpeDsKKysJCVRTX1JFUV9mcmVlOworKwkJRVZQX1BLRVlfbWV0aF9mcmVlOworKwkJVFNfUkVRX2dldF9leHRzOworKwkJVFNfUkVTUF9DVFhfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7CisrCQlUU19SRVNQX0NUWF9zZXRfY2xrX3ByZWNfZGlnaXRzOworKwkJVFNfUkVTUF9DVFhfYWRkX2ZhaWx1cmVfaW5mbzsKKysJCWkyZF9UU19SRVNQX2JpbzsKKysJCUVWUF9QS0VZX0NUWF9nZXQwX3BlZXJrZXk7CisrCQlQRU1fd3JpdGVfYmlvX0NNU19zdHJlYW07CisrCQlUU19SRVFfbmV3OworKwkJVFNfTVNHX0lNUFJJTlRfbmV3OworKwkJRVZQX1BLRVlfbWV0aF9maW5kOworKwkJRVZQX1BLRVlfaWQ7CisrCQlUU19UU1RfSU5GT19zZXRfc2VyaWFsOworKwkJYTJpX0dFTkVSQUxfTkFNRTsKKysJCVRTX0NPTkZfc2V0X2NyeXB0b19kZXZpY2U7CisrCQlFVlBfUEtFWV92ZXJpZnlfaW5pdDsKKysJCVRTX0NPTkZfc2V0X3BvbGljaWVzOworKwkJQVNOMV9QQ1RYX25ldzsKKysJCUVTU19DRVJUX0lEX2ZyZWU7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9wa2V5X21ldGhzOworKwkJVFNfTVNHX0lNUFJJTlRfZnJlZTsKKysJCVRTX1ZFUklGWV9DVFhfaW5pdDsKKysJCVBLQ1M3X3N0cmVhbTsKKysJCVRTX1JFU1BfQ1RYX3NldF9jZXJ0czsKKysJCVRTX0NPTkZfc2V0X2RlZl9wb2xpY3k7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9hZGo7CisrCQlORVRTQ0FQRV9YNTA5X25ldzsKKysJCVRTX0FDQ1VSQUNZX2ZyZWU7CisrCQlUU19SRVNQX2dldF90c3RfaW5mbzsKKysJCUVWUF9QS0VZX2Rlcml2ZV9zZXRfcGVlcjsKKysJCVBFTV9yZWFkX2Jpb19QYXJhbWV0ZXJzOworKwkJVFNfQ09ORl9zZXRfY2xvY2tfcHJlY2lzaW9uX2RpZ2l0czsKKysJCVRTX0NPTkZfc2V0X2Nsa19wcmVjX2RpZ2l0czsKKysJCUVTU19JU1NVRVJfU0VSSUFMX2R1cDsKKysJCVRTX0FDQ1VSQUNZX2dldF9taWNyb3M7CisrCQlBU04xX1BDVFhfZ2V0X3N0cl9mbGFnczsKKysJCU5BTUVfQ09OU1RSQUlOVFNfY2hlY2s7CisrCQlBU04xX0JJVF9TVFJJTkdfY2hlY2s7CisrCQlYNTA5X2NoZWNrX2FraWQ7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9wa2V5X2FzbjFfbWV0aHM7CisrCQlFTkdJTkVfdW5yZWdfcGtleV9hc24xX21ldGhzOworKwkJQVNOMV9QQ1RYX2ZyZWU7CisrCQlQRU1fd3JpdGVfYmlvX0FTTjFfc3RyZWFtOworKwkJaTJkX0FTTjFfYmlvX3N0cmVhbTsKKysJCVRTX1g1MDlfQUxHT1JfcHJpbnRfYmlvOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfY2xlYW51cDsKKysJCUVWUF9QS0VZX2FzbjFfZnJlZTsKKysJCUVTU19TSUdOSU5HX0NFUlRfZnJlZTsKKysJCVRTX1RTVF9JTkZPX3NldF9tc2dfaW1wcmludDsKKysJCUdFTkVSQUxfTkFNRV9jbXA7CisrCQlkMmlfQVNOMV9TRVRfQU5ZOworKwkJRU5HSU5FX3NldF9wa2V5X21ldGhzOworKwkJaTJkX1RTX1JFUV9mcDsKKysJCWQyaV9BU04xX1NFUVVFTkNFX0FOWTsKKysJCUdFTkVSQUxfTkFNRV9nZXQwX290aGVyTmFtZTsKKysJCWQyaV9FU1NfQ0VSVF9JRDsKKysJCU9CSl9maW5kX3NpZ2lkX2FsZ3M7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9rZXlnZW47CisrCQlQS0NTNV9QQktERjJfSE1BQzsKKysJCUVWUF9QS0VZX3BhcmFtZ2VuOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfcGFyYW1nZW47CisrCQlCSU9fbmV3X1BLQ1M3OworKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXI7CisrCQlUU19leHRfcHJpbnRfYmlvOworKwkJVFNfQVNOMV9JTlRFR0VSX3ByaW50X2JpbzsKKysJCWNoZWNrX2RlZmVyOworKwkJRFNPX3BhdGhieWFkZHI7CisrCQlFVlBfUEtFWV9zZXRfdHlwZTsKKysJCVRTX0FDQ1VSQUNZX3NldF9taWNyb3M7CisrCQlUU19SRVFfdG9fVFNfVkVSSUZZX0NUWDsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2NvcHk7CisrCQlBU04xX1BDVFhfc2V0X2NlcnRfZmxhZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0OworKwkJRVZQX1BLRVlfYXNuMV9zZXRfY3RybDsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlFVlBfUEtFWV9DVFhfbmV3X2lkOworKwkJVFNfUkVRX2dldF9leHRfYnlfT0JKOworKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2NlcnQ7CisrCQlYNTA5X05BTUVfaGFzaF9vbGQ7CisrCQlBU04xX1RJTUVfc2V0X3N0cmluZzsKKysJCUVWUF9NRF9mbGFnczsKKysJCVRTX1JFU1BfQ1RYX2ZyZWU7CisrCQlEU0FwYXJhbXNfZHVwOworKwkJREhwYXJhbXNfZHVwOworKwkJT0NTUF9SRVFfQ1RYX2FkZDFfaGVhZGVyOworKwkJT0NTUF9SRVFfQ1RYX3NldDFfcmVxOworKwkJWDUwOV9TVE9SRV9zZXRfdmVyaWZ5X2NiOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJyZW50X2NybDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcGFyZW50X2N0eDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9pc3N1ZXI7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cl9pc3N1ZXI7CisrCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2hfb2xkOworKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaF9vbGQ7CisrCQlFVlBfQ0lQSEVSX0NUWF9jb3B5OworKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0b3I7CisrCQlVSV9tZXRob2RfZ2V0X3Byb21wdF9jb25zdHJ1Y3RyOworKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0b3I7CisrCQlVSV9tZXRob2Rfc2V0X3Byb21wdF9jb25zdHJ1Y3RyOworKwkJRVZQX3JlYWRfcHdfc3RyaW5nX21pbjsKKysJCUNSWVBUT19jdHMxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jdHMxMjhfZGVjcnlwdF9ibG9jazsKKysJCUNSWVBUT19jZmIxMjhfMV9lbmNyeXB0OworKwkJQ1JZUFRPX2NiYzEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2N0cjEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX29mYjEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2N0czEyOF9kZWNyeXB0OworKwkJQ1JZUFRPX2N0czEyOF9lbmNyeXB0X2Jsb2NrOworKwkJQ1JZUFRPX2NiYzEyOF9kZWNyeXB0OworKwkJQ1JZUFRPX2NmYjEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2NmYjEyOF84X2VuY3J5cHQ7CisrCisrCWxvY2FsOgorKwkJKjsKKyt9OworKworKworK09QRU5TU0xfMS4wLjEgeworKwlnbG9iYWw6CisrCQlTU0xfcmVuZWdvdGlhdGVfYWJicmV2aWF0ZWQ7CisrCQlUTFN2MV8xX21ldGhvZDsKKysJCVRMU3YxXzFfY2xpZW50X21ldGhvZDsKKysJCVRMU3YxXzFfc2VydmVyX21ldGhvZDsKKysJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfc3JwX2NsaWVudF9wd2RfY2I7CisrCQlTU0xfZ2V0X3NycF9nOworKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfc3JwX3VuX2NiOworKwkJU1NMX2dldF9zcnBfdXNlcmluZm87CisrCQlTU0xfc2V0X3NycF9zZXJ2ZXJfcGFyYW07CisrCQlTU0xfc2V0X3NycF9zZXJ2ZXJfcGFyYW1fcHc7CisrCQlTU0xfZ2V0X3NycF9OOworKwkJU1NMX2dldF9zcnBfdXNlcm5hbWU7CisrCQlTU0xfQ1RYX3NldF9zcnBfcGFzc3dvcmQ7CisrCQlTU0xfQ1RYX3NldF9zcnBfc3RyZW5ndGg7CisrCQlTU0xfQ1RYX3NldF9zcnBfdmVyaWZ5X3BhcmFtX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfc3JwX3ZmeV9wYXJhbV9jYjsKKysJCVNTTF9DVFhfc2V0X3NycF9jYl9hcmc7CisrCQlTU0xfQ1RYX3NldF9zcnBfdXNlcm5hbWU7CisrCQlTU0xfQ1RYX1NSUF9DVFhfaW5pdDsKKysJCVNTTF9TUlBfQ1RYX2luaXQ7CisrCQlTUlBfQ2FsY19BX3BhcmFtOworKwkJU1JQX2dlbmVyYXRlX3NlcnZlcl9tYXN0ZXJfc2VjcmV0OworKwkJU1JQX2dlbl9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKKysJCVNTTF9DVFhfU1JQX0NUWF9mcmVlOworKwkJU1JQX2dlbmVyYXRlX2NsaWVudF9tYXN0ZXJfc2VjcmV0OworKwkJU1JQX2dlbl9jbGllbnRfbWFzdGVyX3NlY3JldDsKKysJCVNTTF9zcnBfc2VydmVyX3BhcmFtX3dpdGhfdXNlcm5hbWU7CisrCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VuOworKwkJU1NMX1NSUF9DVFhfZnJlZTsKKysJCVNTTF9zZXRfZGVidWc7CisrCQlTU0xfU0VTU0lPTl9nZXQwX3BlZXI7CisrCQlUTFN2MV8yX2NsaWVudF9tZXRob2Q7CisrCQlTU0xfU0VTU0lPTl9zZXQxX2lkX2NvbnRleHQ7CisrCQlUTFN2MV8yX3NlcnZlcl9tZXRob2Q7CisrCQlTU0xfY2FjaGVfaGl0OworKwkJU1NMX2dldDBfa3NzbF9jdHg7CisrCQlTU0xfc2V0MF9rc3NsX2N0eDsKKysJCVNTTF9zZXRfc3RhdGU7CisrCQlTU0xfQ0lQSEVSX2dldF9pZDsKKysJCVRMU3YxXzJfbWV0aG9kOworKwkJa3NzbF9jdHhfZ2V0MF9jbGllbnRfcHJpbmM7CisrCQlTU0xfZXhwb3J0X2tleWluZ19tYXRlcmlhbDsKKysJCVNTTF9zZXRfdGxzZXh0X3VzZV9zcnRwOworKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2ZXJ0aXNlZF9jYjsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2Fkdl9jYjsKKysJCVNTTF9nZXQwX25leHRfcHJvdG9fbmVnb3RpYXRlZDsKKysJCVNTTF9nZXRfc2VsZWN0ZWRfc3J0cF9wcm9maWxlOworKwkJU1NMX0NUWF9zZXRfdGxzZXh0X3VzZV9zcnRwOworKwkJU1NMX3NlbGVjdF9uZXh0X3Byb3RvOworKwkJU1NMX2dldF9zcnRwX3Byb2ZpbGVzOworKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2I7CisrCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbF9jYjsKKysJCVNTTF9TRVNTSU9OX2dldF9jb21wcmVzc19pZDsKKysKKysJCVNSUF9WQkFTRV9nZXRfYnlfdXNlcjsKKysJCVNSUF9DYWxjX3NlcnZlcl9rZXk7CisrCQlTUlBfY3JlYXRlX3ZlcmlmaWVyOworKwkJU1JQX2NyZWF0ZV92ZXJpZmllcl9CTjsKKysJCVNSUF9DYWxjX3U7CisrCQlTUlBfVkJBU0VfZnJlZTsKKysJCVNSUF9DYWxjX2NsaWVudF9rZXk7CisrCQlTUlBfZ2V0X2RlZmF1bHRfZ047CisrCQlTUlBfQ2FsY194OworKwkJU1JQX0NhbGNfQjsKKysJCVNSUF9WQkFTRV9uZXc7CisrCQlTUlBfY2hlY2tfa25vd25fZ05fcGFyYW07CisrCQlTUlBfQ2FsY19BOworKwkJU1JQX1ZlcmlmeV9BX21vZF9OOworKwkJU1JQX1ZCQVNFX2luaXQ7CisrCQlTUlBfVmVyaWZ5X0JfbW9kX047CisrCQlFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW5hdGVzOworKwkJRUNfS0VZX3NldF9wdWJfa2V5X2FmZl9jb29yZHM7CisrCQlFVlBfYWVzXzE5Ml9jdHI7CisrCQlFVlBfUEtFWV9tZXRoX2dldDBfaW5mbzsKKysJCUVWUF9QS0VZX21ldGhfY29weTsKKysJCUVSUl9hZGRfZXJyb3JfdmRhdGE7CisrCQlFVlBfYWVzXzEyOF9jdHI7CisrCQlFVlBfYWVzXzI1Nl9jdHI7CisrCQlFQ19HRnBfbmlzdHAyMjRfbWV0aG9kOworKwkJRUNfS0VZX2dldF9mbGFnczsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1NfbWdmMTsKKysJCUVWUF9hZXNfMTI4X3h0czsKKysJCUVWUF9hZXNfMjU2X3h0czsKKysJCUVWUF9hZXNfMTI4X2djbTsKKysJCUVDX0tFWV9jbGVhcl9mbGFnczsKKysJCUVDX0tFWV9zZXRfZmxhZ3M7CisrCQlFVlBfYWVzXzI1Nl9jY207CisrCQlSU0FfdmVyaWZ5X1BLQ1MxX1BTU19tZ2YxOworKwkJRVZQX2Flc18xMjhfY2NtOworKwkJRVZQX2Flc18xOTJfZ2NtOworKwkJWDUwOV9BTEdPUl9zZXRfbWQ7CisrCQlSQU5EX2luaXRfZmlwczsKKysJCUVWUF9hZXNfMjU2X2djbTsKKysJCUVWUF9hZXNfMTkyX2NjbTsKKysJCUNNQUNfQ1RYX2NvcHk7CisrCQlDTUFDX0NUWF9mcmVlOworKwkJQ01BQ19DVFhfZ2V0MF9jaXBoZXJfY3R4OworKwkJQ01BQ19DVFhfY2xlYW51cDsKKysJCUNNQUNfSW5pdDsKKysJCUNNQUNfVXBkYXRlOworKwkJQ01BQ19yZXN1bWU7CisrCQlDTUFDX0NUWF9uZXc7CisrCQlDTUFDX0ZpbmFsOworKwkJQ1JZUFRPX2N0cjEyOF9lbmNyeXB0X2N0cjMyOworKwkJQ1JZUFRPX2djbTEyOF9yZWxlYXNlOworKwkJQ1JZUFRPX2NjbTEyOF9kZWNyeXB0X2NjbTY0OworKwkJQ1JZUFRPX2NjbTEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2djbTEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX3h0czEyOF9lbmNyeXB0OworKwkJRVZQX3JjNF9obWFjX21kNTsKKysJCUNSWVBUT19uaXN0Y3RzMTI4X2RlY3J5cHRfYmxvY2s7CisrCQlDUllQVE9fZ2NtMTI4X3NldGl2OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdDsKKysJCUVWUF9hZXNfMTI4X2NiY19obWFjX3NoYTE7CisrCQlDUllQVE9fZ2NtMTI4X3RhZzsKKysJCUNSWVBUT19jY20xMjhfZW5jcnlwdF9jY202NDsKKysJCUVOR0lORV9sb2FkX3JkcmFuZDsKKysJCUNSWVBUT19jY20xMjhfc2V0aXY7CisrCQlDUllQVE9fbmlzdGN0czEyOF9lbmNyeXB0X2Jsb2NrOworKwkJQ1JZUFRPX2djbTEyOF9hYWQ7CisrCQlDUllQVE9fY2NtMTI4X2luaXQ7CisrCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0OworKwkJQ1JZUFRPX2djbTEyOF9uZXc7CisrCQlDUllQVE9fY2NtMTI4X3RhZzsKKysJCUNSWVBUT19jY20xMjhfZGVjcnlwdDsKKysJCUNSWVBUT19jY20xMjhfYWFkOworKwkJQ1JZUFRPX2djbTEyOF9pbml0OworKwkJQ1JZUFRPX2djbTEyOF9kZWNyeXB0OworKwkJRU5HSU5FX2xvYWRfcnNheDsKKysJCUNSWVBUT19nY20xMjhfZGVjcnlwdF9jdHIzMjsKKysJCUNSWVBUT19nY20xMjhfZW5jcnlwdF9jdHIzMjsKKysJCUNSWVBUT19nY20xMjhfZmluaXNoOworKwkJRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMTsKKysJCVBLQ1M1X3Bia2RmMl9zZXQ7CisrCQlDTVNfYWRkMF9yZWNpcGllbnRfcGFzc3dvcmQ7CisrCQlDTVNfZGVjcnlwdF9zZXQxX3Bhc3N3b3JkOworKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9wYXNzd29yZDsKKysJCVJBTkRfc2V0X2ZpcHNfZHJiZ190eXBlOworKwkJWDUwOV9SRVFfc2lnbl9jdHg7CisrCQlSU0FfUFNTX1BBUkFNU19uZXc7CisrCQlYNTA5X0NSTF9zaWduX2N0eDsKKysJCVg1MDlfc2lnbmF0dXJlX2R1bXA7CisrCQlkMmlfUlNBX1BTU19QQVJBTVM7CisrCQlSU0FfUFNTX1BBUkFNU19pdDsKKysJCVJTQV9QU1NfUEFSQU1TX2ZyZWU7CisrCQlYNTA5X3NpZ25fY3R4OworKwkJaTJkX1JTQV9QU1NfUEFSQU1TOworKwkJQVNOMV9pdGVtX3NpZ25fY3R4OworKwkJRUNfR0ZwX25pc3RwNTIxX21ldGhvZDsKKysJCUVDX0dGcF9uaXN0cDI1Nl9tZXRob2Q7CisrCQlPUEVOU1NMX3N0ZGVycjsKKysJCU9QRU5TU0xfY3B1aWRfc2V0dXA7CisrCQlPUEVOU1NMX3Nob3dmYXRhbDsKKysJCUJJT19uZXdfZGdyYW1fc2N0cDsKKysJCUJJT19kZ3JhbV9zY3RwX21zZ193YWl0aW5nOworKwkJQklPX2RncmFtX3NjdHBfd2FpdF9mb3JfZHJ5OworKwkJQklPX3NfZGF0YWdyYW1fc2N0cDsKKysJCUJJT19kZ3JhbV9pc19zY3RwOworKwkJQklPX2RncmFtX3NjdHBfbm90aWZpY2F0aW9uX2NiOworK30gT1BFTlNTTF8xLjAuMDsKKysKKytPUEVOU1NMXzEuMC4xZCB7CisrCWdsb2JhbDoKKysJCUNSWVBUT19tZW1jbXA7CisrfSBPUEVOU1NMXzEuMC4xOworKworK09QRU5TU0xfMS4wLjIgeworKwlnbG9iYWw6CisrCQlTU0xfQ1RYX3NldF9hbHBuX3Byb3RvczsKKysJCVNTTF9zZXRfYWxwbl9wcm90b3M7CisrCQlTU0xfQ1RYX3NldF9hbHBuX3NlbGVjdF9jYjsKKysJCVNTTF9nZXQwX2FscG5fc2VsZWN0ZWQ7CisrCQlTU0xfQ1RYX3NldF9jdXN0b21fY2xpX2V4dDsKKysJCVNTTF9DVFhfc2V0X2N1c3RvbV9zcnZfZXh0OworKwkJU1NMX0NUWF9zZXRfc3J2X3N1cHBfZGF0YTsKKysJCVNTTF9DVFhfc2V0X2NsaV9zdXBwX2RhdGE7CisrCQlTU0xfc2V0X2NlcnRfY2I7CisrCQlTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvOworKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mb19maWxlOworKwkJU1NMX0NUWF9zZXRfY2VydF9jYjsKKysJCVNTTF9DVFhfZ2V0MF9wYXJhbTsKKysJCVNTTF9nZXQwX3BhcmFtOworKwkJU1NMX2NlcnRzX2NsZWFyOworKwkJRFRMU3YxXzJfbWV0aG9kOworKwkJRFRMU3YxXzJfc2VydmVyX21ldGhvZDsKKysJCURUTFN2MV8yX2NsaWVudF9tZXRob2Q7CisrCQlEVExTX21ldGhvZDsKKysJCURUTFNfc2VydmVyX21ldGhvZDsKKysJCURUTFNfY2xpZW50X21ldGhvZDsKKysJCVNTTF9DVFhfZ2V0X3NzbF9tZXRob2Q7CisrCQlTU0xfQ1RYX2dldDBfY2VydGlmaWNhdGU7CisrCQlTU0xfQ1RYX2dldDBfcHJpdmF0ZWtleTsKKysJCVNTTF9DT01QX3NldDBfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DT01QX2ZyZWVfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DSVBIRVJfZmluZDsKKysJCVNTTF9pc19zZXJ2ZXI7CisrCQlTU0xfQ09ORl9DVFhfbmV3OworKwkJU1NMX0NPTkZfQ1RYX2ZpbmlzaDsKKysJCVNTTF9DT05GX0NUWF9mcmVlOworKwkJU1NMX0NPTkZfQ1RYX3NldF9mbGFnczsKKysJCVNTTF9DT05GX0NUWF9jbGVhcl9mbGFnczsKKysJCVNTTF9DT05GX0NUWF9zZXQxX3ByZWZpeDsKKysJCVNTTF9DT05GX0NUWF9zZXRfc3NsOworKwkJU1NMX0NPTkZfQ1RYX3NldF9zc2xfY3R4OworKwkJU1NMX0NPTkZfY21kOworKwkJU1NMX0NPTkZfY21kX2FyZ3Y7CisrCQlTU0xfQ09ORl9jbWRfdmFsdWVfdHlwZTsKKysJCVNTTF90cmFjZTsKKysJCVNTTF9DSVBIRVJfc3RhbmRhcmRfbmFtZTsKKysJCVNTTF9nZXRfdGxzYV9yZWNvcmRfYnluYW1lOworKwkJQVNOMV9USU1FX2RpZmY7CisrCQlCSU9faGV4X3N0cmluZzsKKysJCUNNU19SZWNpcGllbnRJbmZvX2dldDBfcGtleV9jdHg7CisrCQlDTVNfUmVjaXBpZW50SW5mb19lbmNyeXB0OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9wa2V5X2N0eDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfbWRfY3R4OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduYXR1cmU7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfYWxnOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX3Jla3M7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfb3JpZ19pZDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfb3JpZ19pZF9jbXA7CisrCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2dldDBfaWQ7CisrCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2NlcnRfY21wOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9zZXQwX3BrZXk7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfY3R4OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9kZWNyeXB0OworKwkJQ01TX1NoYXJlZEluZm9fZW5jb2RlOworKwkJREhfY29tcHV0ZV9rZXlfcGFkZGVkOworKwkJZDJpX0RIeHBhcmFtczsKKysJCWkyZF9ESHhwYXJhbXM7CisrCQlESF9nZXRfMTAyNF8xNjA7CisrCQlESF9nZXRfMjA0OF8yMjQ7CisrCQlESF9nZXRfMjA0OF8yNTY7CisrCQlESF9LREZfWDlfNDI7CisrCQlFQ0RIX0tERl9YOV82MjsKKysJCUVDRFNBX01FVEhPRF9uZXc7CisrCQlFQ0RTQV9NRVRIT0RfZnJlZTsKKysJCUVDRFNBX01FVEhPRF9zZXRfYXBwX2RhdGE7CisrCQlFQ0RTQV9NRVRIT0RfZ2V0X2FwcF9kYXRhOworKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduOworKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduX3NldHVwOworKwkJRUNEU0FfTUVUSE9EX3NldF92ZXJpZnk7CisrCQlFQ0RTQV9NRVRIT0Rfc2V0X2ZsYWdzOworKwkJRUNEU0FfTUVUSE9EX3NldF9uYW1lOworKwkJRVZQX2Rlc19lZGUzX3dyYXA7CisrCQlFVlBfYWVzXzEyOF93cmFwOworKwkJRVZQX2Flc18xOTJfd3JhcDsKKysJCUVWUF9hZXNfMjU2X3dyYXA7CisrCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGEyNTY7CisrCQlFVlBfYWVzXzI1Nl9jYmNfaG1hY19zaGEyNTY7CisrCQlDUllQVE9fMTI4X3dyYXA7CisrCQlDUllQVE9fMTI4X3Vud3JhcDsKKysJCU9DU1BfUkVRX0NUWF9uYmlvOworKwkJT0NTUF9SRVFfQ1RYX25ldzsKKysJCU9DU1Bfc2V0X21heF9yZXNwb25zZV9sZW5ndGg7CisrCQlPQ1NQX1JFUV9DVFhfaTJkOworKwkJT0NTUF9SRVFfQ1RYX25iaW9fZDJpOworKwkJT0NTUF9SRVFfQ1RYX2dldDBfbWVtX2JpbzsKKysJCU9DU1BfUkVRX0NUWF9odHRwOworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVBfbWdmMTsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVBfbWdmMTsKKysJCVJTQV9PQUVQX1BBUkFNU19mcmVlOworKwkJUlNBX09BRVBfUEFSQU1TX2l0OworKwkJUlNBX09BRVBfUEFSQU1TX25ldzsKKysJCVNTTF9nZXRfc2lnYWxnczsKKysJCVNTTF9nZXRfc2hhcmVkX3NpZ2FsZ3M7CisrCQlTU0xfY2hlY2tfY2hhaW47CisrCQlYNTA5X2NoYWluX3VwX3JlZjsKKysJCVg1MDlfaHR0cF9uYmlvOworKwkJWDUwOV9DUkxfaHR0cF9uYmlvOworKwkJWDUwOV9SRVZPS0VEX2R1cDsKKysJCWkyZF9yZV9YNTA5X3RiczsKKysJCVg1MDlfZ2V0MF9zaWduYXR1cmU7CisrCQlYNTA5X2dldF9zaWduYXR1cmVfbmlkOworKwkJWDUwOV9DUkxfZGlmZjsKKysJCVg1MDlfY2hhaW5fY2hlY2tfc3VpdGViOworKwkJWDUwOV9DUkxfY2hlY2tfc3VpdGViOworKwkJWDUwOV9jaGVja19ob3N0OworKwkJWDUwOV9jaGVja19lbWFpbDsKKysJCVg1MDlfY2hlY2tfaXA7CisrCQlYNTA5X2NoZWNrX2lwX2FzYzsKKysJCVg1MDlfU1RPUkVfc2V0X2xvb2t1cF9jcmxzX2NiOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9zdG9yZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaG9zdDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDFfaG9zdDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9ob3N0ZmxhZ3M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX3BlZXJuYW1lOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9lbWFpbDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaXA7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwX2FzYzsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDBfbmFtZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9jb3VudDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDA7CisrCQlYNTA5VjNfRVhUX2ZyZWU7CisrCQlFQ19HUk9VUF9nZXRfbW9udF9kYXRhOworKwkJRUNfY3VydmVfbmlkMm5pc3Q7CisrCQlFQ19jdXJ2ZV9uaXN0Mm5pZDsKKysJCVBFTV93cml0ZV9iaW9fREh4cGFyYW1zOworKwkJUEVNX3dyaXRlX0RIeHBhcmFtczsKKysJCVNTTF9DVFhfYWRkX2NsaWVudF9jdXN0b21fZXh0OworKwkJU1NMX0NUWF9hZGRfc2VydmVyX2N1c3RvbV9leHQ7CisrCQlTU0xfZXh0ZW5zaW9uX3N1cHBvcnRlZDsKKysJCUJVRl9zdHJubGVuOworKwkJc2tfZGVlcF9jb3B5OworKwkJU1NMX3Rlc3RfZnVuY3Rpb25zOworK30gT1BFTlNTTF8xLjAuMWQ7CisrCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDEwIEBACisrT1BFTlNTTF8xLjAuMCB7CisrCWdsb2JhbDoKKysJCWJpbmRfZW5naW5lOworKwkJdl9jaGVjazsKKysJCU9QRU5TU0xfaW5pdDsKKysJCU9QRU5TU0xfZmluaXNoOworKwlsb2NhbDoKKysJCSo7CisrfTsKKysKK0luZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL2NjZ29zdC9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwxMCBAQAorK09QRU5TU0xfMS4wLjAgeworKwlnbG9iYWw6CisrCQliaW5kX2VuZ2luZTsKKysJCXZfY2hlY2s7CisrCQlPUEVOU1NMX2luaXQ7CisrCQlPUEVOU1NMX2ZpbmlzaDsKKysJbG9jYWw6CisrCQkqOworK307CisrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMWE5YjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gM2Q5MTk5NDIzZDQ4NzY2NjQ5YTJiMmViYjM5MjRlODkyZWQxNmZhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJhbmR5IE1hY0xlb2QgPFJhbmR5Lk1hY0xlb2RAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjAgSnVuIDIwMTcgMTU6MzI6MDggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gb3BlbnNzbDogRm9yY2Ugc29mdCBsaW5rIHRvIGF2b2lkIHJhcmUgcmFjZQorCitUaGlzIHBhdGNoIHdvcmtzIGFyb3VuZCBhIHJhcmUgcGFyYWxsZWwgYnVpbGQgcmFjZSBjb25kaXRpb24uIAorVGhlIGVycm9yIHNlZW4gaXM6CisKK2xuOiBmYWlsZWQgdG8gY3JlYXRlIHN5bWJvbGljIGxpbmsgJ2xpYnNzbC5zbyc6IEZpbGUgZXhpc3RzCittYWtlWzRdOiAqKiogW01ha2VmaWxlLnNoYXJlZDoxNzE6IGxpbmtfYS5nbnVdIEVycm9yIDEKK21ha2VbNF06IExlYXZpbmcgZGlyZWN0b3J5CisnLy4uLi9idWlsZC90bXAtZ2xpYmMvd29yay94ODZfNjQtbGludXgvb3BlbnNzbC1uYXRpdmUvMS4wLjJrLXIwL29wZW5zc2wtMS4wLjJrJworCitUaGUgb3BlbnNzbCB0ZWFtIGlzIHJld3JpdGluZyB0aGVpciBidWlsZCBmaWxlcyBzbyBpdCdzIG5vdAorYXBwcm9wcmlhdGUgZm9yIG9wZW5zc2wgdXBzdHJlYW0gYW5kIGZpeGluZyB0aGUgcm9vdCBjYXVzZSBvZgordGhlIE1ha2VmaWxlIHJhY2UgY29uZGl0aW9uIHdhcyBhbHNvIG5vdCBwdXJzdWVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2J1aWxkIHJ1bGVzIHJld3JpdGUgaW4gcHJvZ3Jlc3NdCitTaWduZWQtb2ZmLWJ5OiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5zaGFyZWQgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuc2hhcmVkIGIvTWFrZWZpbGUuc2hhcmVkCitpbmRleCBlOGQyMjJhLi4xYmZmOTJmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuc2hhcmVkCisrKysgYi9NYWtlZmlsZS5zaGFyZWQKK0BAIC0xMTgsMTQgKzExOCwxNCBAQAorIAkJaWYgWyAtbiAiJCRTSExJQl9DT01QQVQiIF07IHRoZW4gXAorIAkJCWZvciB4IGluICQkU0hMSUJfQ09NUEFUOyBkbyBcCisgCQkJCSggJChTRVRfWCk7IHJtIC1mICQkU0hMSUIkJHgkJFNITElCX1NVRkZJWDsgXAorLQkJCQkgIGxuIC1zICQkcHJldiAkJFNITElCJCR4JCRTSExJQl9TVUZGSVggKTsgXAorKwkJCQkgIGxuIC1zZiAkJHByZXYgJCRTSExJQiQkeCQkU0hMSUJfU1VGRklYICk7IFwKKyAJCQkJcHJldj0kJFNITElCJCR4JCRTSExJQl9TVUZGSVg7IFwKKyAJCQlkb25lOyBcCisgCQlmaTsgXAorIAkJaWYgWyAtbiAiJCRTSExJQl9TT1ZFUiIgXTsgdGhlbiBcCisgCQkJWyAtZSAiJCRTSExJQiQkU0hMSUJfU1VGRklYIiBdIHx8IFwKKyAJCQkoICQoU0VUX1gpOyBybSAtZiAkJFNITElCJCRTSExJQl9TVUZGSVg7IFwKKy0JCQkgIGxuIC1zICQkcHJldiAkJFNITElCJCRTSExJQl9TVUZGSVggKTsgXAorKwkJCSAgbG4gLXNmICQkcHJldiAkJFNITElCJCRTSExJQl9TVUZGSVggKTsgXAorIAkJZmk7IFwKKyAJZmkKKyAKKy0tIAorMi45LjMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9NYWtlZmlsZXMtcHRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEyMmZhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCkBAIC0wLDAgKzEsOTMgQEAKK0Zyb20gYTE3NmM2OWY0ZmRmYmZhN2U0Y2NiNzlkOTFjM2I2NjAyZGE3ZTY5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZGVycyBSb3hlbGwgPGFuZGVycy5yb3hlbGxAZW5lYS5jb20+CitEYXRlOiBUaHUsIDI0IEFwciAyMDE0IDE5OjI4OjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMTkvMjhdIG9wZW5zc2w6IGVuYWJsZSBwdGVzdCBzdXBwb3J0CisKK0FkZCAnYnVpbGR0ZXN0JyBhbmQgJ3J1bnRlc3QnIHRhcmdldHMgdG8gTWFrZWZpbGUsIHRvIGJ1aWxkIGFuZCBydW4gdGVzdHMKK2Nyb3NzLWNvbXBpbGVkLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRlcnMgUm94ZWxsIDxhbmRlcnMucm94ZWxsQGVuZWEuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBlbmVhLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBNYWtlZmlsZS5vcmcgICAgICAgfCAgMTAgKy0KKyBNYWtlZmlsZS5vcmcub3JpZyAgfCAgIDcgKy0KKyB0ZXN0L01ha2VmaWxlICAgICAgfCAgMTMgKy0KKyB0ZXN0L01ha2VmaWxlLm9yaWcgfCA5ODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDEwMDkgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9NYWtlZmlsZS5vcmlnCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5vcmcgYi9NYWtlZmlsZS5vcmcKK2luZGV4IDExMWZiYmEuLjhlNzkzNmMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5vcmcKKysrKyBiL01ha2VmaWxlLm9yZworQEAgLTQ2OCw4ICs0NjgsMTYgQEAgcmVoYXNoLnRpbWU6IGNlcnRzIGFwcHMKKyB0ZXN0OiAgIHRlc3RzCisgCisgdGVzdHM6IHJlaGFzaAorKwkkKE1BS0UpIGJ1aWxkdGVzdAorKwkkKE1BS0UpIHJ1bnRlc3QKKysKKytidWlsZHRlc3Q6CisrCUAoY2QgdGVzdCAmJiBcCisrCSQoQ0xFQVJFTlYpICYmICQoTUFLRSkgLWUgJChCVUlMREVOVikgVE9QPS4uIFRFU1RTPSckKFRFU1RTKScgT1BFTlNTTF9ERUJVR19NRU1PUlk9b24gT1BFTlNTTF9DT05GPS4uL2FwcHMvb3BlbnNzbC5jbmYgZXhlIGFwcHMpOworKworK3J1bnRlc3Q6CisgCUAoY2QgdGVzdCAmJiBlY2hvICJ0ZXN0aW5nLi4uIiAmJiBcCistCSQoQ0xFQVJFTlYpICYmICQoTUFLRSkgLWUgJChCVUlMREVOVikgVE9QPS4uIFRFU1RTPSckKFRFU1RTKScgT1BFTlNTTF9ERUJVR19NRU1PUlk9b24gT1BFTlNTTF9DT05GPS4uL2FwcHMvb3BlbnNzbC5jbmYgdGVzdHMgKTsKKysJJChDTEVBUkVOVikgJiYgJChNQUtFKSAtZSAkKEJVSUxERU5WKSBUT1A9Li4gVEVTVFM9JyQoVEVTVFMpJyBPUEVOU1NMX0RFQlVHX01FTU9SWT1vbiBPUEVOU1NMX0NPTkY9Li4vYXBwcy9vcGVuc3NsLmNuZiBhbGx0ZXN0cyApOworIAlPUEVOU1NMX0NPTkY9YXBwcy9vcGVuc3NsLmNuZiB1dGlsL29wZW5zc2x3cmFwLnNoIHZlcnNpb24gLWEKKyAKKyByZXBvcnQ6CitkaWZmIC0tZ2l0IGEvdGVzdC9NYWtlZmlsZSBiL3Rlc3QvTWFrZWZpbGUKK2luZGV4IGExZjdlZWIuLmIyOTg0YzQgMTAwNjQ0CistLS0gYS90ZXN0L01ha2VmaWxlCisrKysgYi90ZXN0L01ha2VmaWxlCitAQCAtMTUwLDcgKzE1MCw3IEBAIHRlc3RzOglleGUgYXBwcyAkKFRFU1RTKQorIGFwcHM6CisgCUAoY2QgLi47ICQoTUFLRSkgRElSUz1hcHBzIGFsbCkKKyAKKy1hbGx0ZXN0czogXAorK2FsbC10ZXN0cz0gXAorIAl0ZXN0X2RlcyB0ZXN0X2lkZWEgdGVzdF9zaGEgdGVzdF9tZDQgdGVzdF9tZDUgdGVzdF9obWFjIFwKKyAJdGVzdF9tZDIgdGVzdF9tZGMyIHRlc3Rfd3AgXAorIAl0ZXN0X3JtZCB0ZXN0X3JjMiB0ZXN0X3JjNCB0ZXN0X3JjNSB0ZXN0X2JmIHRlc3RfY2FzdCB0ZXN0X2FlcyBcCitAQCAtMTYyLDYgKzE2MiwxMSBAQCBhbGx0ZXN0czogXAorIAl0ZXN0X2NvbnN0YW50X3RpbWUgdGVzdF92ZXJpZnlfZXh0cmEgdGVzdF9jbGllbnRoZWxsbyB0ZXN0X3NzbHYyY29uZnRlc3QgXAorIAl0ZXN0X2R0bHMgdGVzdF9iYWRfZHRscyB0ZXN0X2ZhdGFsZXJyCisgCisrYWxsdGVzdHM6CisrCUAoZm9yIGkgaW4gJChhbGwtdGVzdHMpOyBkbyBcCisrCSggJChNQUtFKSAkJGkgJiYgZWNobyAiUEFTUzogJCRpIiApIHx8IGVjaG8gIkZBSUw6ICQkaSI7IFwKKysJZG9uZSkKKysKKyB0ZXN0X2V2cDogJChFVlBURVNUKSQoRVhFX0VYVCkgZXZwdGVzdHMudHh0CisgCS4uL3V0aWwvc2hsaWJfd3JhcC5zaCAuLyQoRVZQVEVTVCkgZXZwdGVzdHMudHh0CisgCitAQCAtMjMwLDcgKzIzNSw3IEBAIHRlc3RfeDUwOTogLi4vYXBwcy9vcGVuc3NsJChFWEVfRVhUKSB0eDUwOSB0ZXN0eDUwOS5wZW0gdjMtY2VydDEucGVtIHYzLWNlcnQyLnBlCisgCWVjaG8gdGVzdCBzZWNvbmQgeDUwOXYzIGNlcnRpZmljYXRlCisgCXNoIC4vdHg1MDkgdjMtY2VydDIucGVtIDI+L2Rldi9udWxsCisgCistdGVzdF9yc2E6ICQoUlNBVEVTVCkkKEVYRV9FWFQpIC4uL2FwcHMvb3BlbnNzbCQoRVhFX0VYVCkgdHJzYSB0ZXN0cnNhLnBlbQorK3Rlc3RfcnNhOiAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHRyc2EgdGVzdHJzYS5wZW0KKyAJQHNoIC4vdHJzYSAyPi9kZXYvbnVsbAorIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKFJTQVRFU1QpCisgCitAQCAtMzMxLDExICszMzYsMTEgQEAgdGVzdF90c2E6IC4uL2FwcHMvb3BlbnNzbCQoRVhFX0VYVCkgdGVzdHRzYSBDQXRzYS5jbmYgLi4vdXRpbC9zaGxpYl93cmFwLnNoCisgCSAgc2ggLi90ZXN0dHNhOyBcCisgCWZpCisgCistdGVzdF9pZ2U6ICQoSUdFVEVTVCkkKEVYRV9FWFQpCisrdGVzdF9pZ2U6CisgCUBlY2hvICJUZXN0IElHRSBtb2RlIgorIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKElHRVRFU1QpCisgCistdGVzdF9qcGFrZTogJChKUEFLRVRFU1QpJChFWEVfRVhUKQorK3Rlc3RfanBha2U6CisgCUBlY2hvICJUZXN0IEpQQUtFIgorIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKEpQQUtFVEVTVCkKKyAKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM1N2IzZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0FkZCBtdXNsIHRyaXBsZXQgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4yYS5vcmlnL0NvbmZpZ3VyZQorKysrIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQorQEAgLTQzMSw3ICs0MzEsNyBAQCBteSAldGFibGU9KAorICMKKyAjICAgICAgIC4vQ29uZmlndXJlIGxpbnV4LWFybXY0IC1tYXJjaD1hcm12NiAtRF9fQVJNX01BWF9BUkNIX189OAorICMKKy0ibGludXgtYXJtdjQiLAkiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWFybXY0IiwgImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorICJsaW51eC1hYXJjaDY0IiwiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YWFyY2g2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisgIyBDb25maWd1cmUgc2NyaXB0IGFkZHMgbWluaW1hbGx5IHJlcXVpcmVkIC1tYXJjaCBmb3IgYXNzZW1ibHkgc3VwcG9ydCwKKyAjIGlmIG5vIC1tYXJjaCB3YXMgc3BlY2lmaWVkIGF0IGNvbW1hbmQgbGluZS4gbWlwczMyIGFuZCBtaXBzNjQgYmVsb3cKK0BAIC01MDQsNCArNTA0LDYgQEAgbXkgJXRhYmxlPSgKKyAibGludXgtZ251ZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1tdXNsZWFiaS1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtbXVzbGVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKyAKKyAibGludXgtYXZyMzIiLCIkRU5WeydDQyd9Oi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLiIsCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTAxNTg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitUaGUgbnVtYmVyIG9mIGNvbG9ucyBhcmUgaW1wb3J0YW50IDopCisKKworLS0tCisgQ29uZmlndXJlIHwgICAxNiArKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKKworSW5kZXg6IG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5zc2wtMS4wLjJhLm9yaWcvQ29uZmlndXJlCisrKysgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCitAQCAtNDQzLDYgKzQ0MywyMSBAQCBteSAldGFibGU9KAorICJsaW51eC1hbHBoYS1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCisgImxpbnV4LWFscGhhK2J3eC1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCisgCisrIAorKyMgTGludXggb24gQVJNCisrImxpbnV4LWVsZi1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtZWxmLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWdudWVhYmktYXJtIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWdudWVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysKKysibGludXgtYXZyMzIiLCIkRU5WeydDQyd9Oi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLiIsCisrCisrIyMjIyBMaW51eCBvbiBNSVBTL01JUFM2NAorKyJsaW51eC1taXBzIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtbWlwczY0IiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1tYWJpPTY0IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1taXBzNjRlbCIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtbWFiaT02NCAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtbWlwc2VsIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysKKyAjIEFuZHJvaWQ6IGxpbnV4LSogYnV0IHdpdGhvdXQgcG9pbnRlcnMgdG8gaGVhZGVycyBhbmQgbGlicy4KKyAiYW5kcm9pZCIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorICJhbmRyb2lkLXg4NiIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiIuZXZhbHtteSAkYXNtPSR7eDg2X2VsZl9hc219OyRhc209fnMvOmVsZi86YW5kcm9pZC87JGFzbX0uIjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2NhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY2EucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vY2EucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NhLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL21hbi1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL21hbi1kaXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL21hbi1kaXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbm8tcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9uby1ycGF0aC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9uby1ycGF0aC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vcGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vcGljLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL3BpYy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vcGljLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlkZDllYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitJbmRleDogb3BlbnNzbC0xLjAuMmQvY3J5cHRvL29wZW5zc2x2LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4yZC5vcmlnL2NyeXB0by9vcGVuc3Nsdi5oCisrKysgb3BlbnNzbC0xLjAuMmQvY3J5cHRvL29wZW5zc2x2LmgKK0BAIC04OCw3ICs4OCw3IEBAIGV4dGVybiAiQyIgeworICAqIHNob3VsZCBvbmx5IGtlZXAgdGhlIHZlcnNpb25zIHRoYXQgYXJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQuCisgICovCisgIyBkZWZpbmUgU0hMSUJfVkVSU0lPTl9ISVNUT1JZICIiCistIyBkZWZpbmUgU0hMSUJfVkVSU0lPTl9OVU1CRVIgIjEuMC4wIgorKyMgZGVmaW5lIFNITElCX1ZFUlNJT05fTlVNQkVSICIxLjAuMiIKKyAKKyAKKyAjaWZkZWYgIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDA0ZWUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApAQCAtMCwwICsxLDQ2NTggQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUub3JpZy9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNjUxLDYgKzE2NTEsOCBAQAorIAkJfQorIAl9CisgCisrJHNoYXJlZF9sZGZsYWcgLj0gIiAtV2wsLS12ZXJzaW9uLXNjcmlwdD1vcGVuc3NsLmxkIjsKKysKKyBvcGVuKElOLCc8TWFrZWZpbGUub3JnJykgfHwgZGllICJ1bmFibGUgdG8gcmVhZCBNYWtlZmlsZS5vcmc6JCFcbiI7CisgdW5saW5rKCIkTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gcmVtb3ZlIG9sZCAkTWFrZWZpbGUubmV3OiQhXG4iIGlmIC1lICIkTWFrZWZpbGUubmV3IjsKKyBvcGVuKE9VVCwiPiRNYWtlZmlsZS5uZXciKSB8fCBkaWUgInVuYWJsZSB0byBjcmVhdGUgJE1ha2VmaWxlLm5ldzokIVxuIjsKK0luZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIyOjE5OjA4LjYwMTgyNzI2NiArMDEwMAorQEAgLTAsMCArMSw0NjA4IEBACisrT1BFTlNTTF8xLjAuMmQgeworKwlnbG9iYWw6CisrCQlCSU9fZl9zc2w7CisrCQlCSU9fbmV3X2J1ZmZlcl9zc2xfY29ubmVjdDsKKysJCUJJT19uZXdfc3NsOworKwkJQklPX25ld19zc2xfY29ubmVjdDsKKysJCUJJT19wcm94eV9zc2xfY29weV9zZXNzaW9uX2lkOworKwkJQklPX3NzbF9jb3B5X3Nlc3Npb25faWQ7CisrCQlCSU9fc3NsX3NodXRkb3duOworKwkJZDJpX1NTTF9TRVNTSU9OOworKwkJRFRMU3YxX2NsaWVudF9tZXRob2Q7CisrCQlEVExTdjFfbWV0aG9kOworKwkJRFRMU3YxX3NlcnZlcl9tZXRob2Q7CisrCQlFUlJfbG9hZF9TU0xfc3RyaW5nczsKKysJCWkyZF9TU0xfU0VTU0lPTjsKKysJCWtzc2xfYnVpbGRfcHJpbmNpcGFsXzI7CisrCQlrc3NsX2NnZXRfdGt0OworKwkJa3NzbF9jaGVja19hdXRoZW50OworKwkJa3NzbF9jdHhfZnJlZTsKKysJCWtzc2xfY3R4X25ldzsKKysJCWtzc2xfY3R4X3NldGtleTsKKysJCWtzc2xfY3R4X3NldHByaW5jOworKwkJa3NzbF9jdHhfc2V0c3RyaW5nOworKwkJa3NzbF9jdHhfc2hvdzsKKysJCWtzc2xfZXJyX3NldDsKKysJCWtzc2xfa3JiNV9mcmVlX2RhdGFfY29udGVudHM7CisrCQlrc3NsX3NnZXRfdGt0OworKwkJa3NzbF9za2lwX2NvbmZvdW5kOworKwkJa3NzbF92YWxpZGF0ZV90aW1lczsKKysJCVBFTV9yZWFkX2Jpb19TU0xfU0VTU0lPTjsKKysJCVBFTV9yZWFkX1NTTF9TRVNTSU9OOworKwkJUEVNX3dyaXRlX2Jpb19TU0xfU0VTU0lPTjsKKysJCVBFTV93cml0ZV9TU0xfU0VTU0lPTjsKKysJCVNTTF9hY2NlcHQ7CisrCQlTU0xfYWRkX2NsaWVudF9DQTsKKysJCVNTTF9hZGRfZGlyX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7CisrCQlTU0xfYWRkX2Rpcl9jZXJ0X3N1YmpzX3RvX3N0azsKKysJCVNTTF9hZGRfZmlsZV9jZXJ0X3N1YmplY3RzX3RvX3N0YWNrOworKwkJU1NMX2FkZF9maWxlX2NlcnRfc3VianNfdG9fc3RrOworKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nOworKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmc7CisrCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmc7CisrCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmdfbG9uZzsKKysJCVNTTF9jYWxsYmFja19jdHJsOworKwkJU1NMX2NoZWNrX3ByaXZhdGVfa2V5OworKwkJU1NMX0NJUEhFUl9kZXNjcmlwdGlvbjsKKysJCVNTTF9DSVBIRVJfZ2V0X2JpdHM7CisrCQlTU0xfQ0lQSEVSX2dldF9uYW1lOworKwkJU1NMX0NJUEhFUl9nZXRfdmVyc2lvbjsKKysJCVNTTF9jbGVhcjsKKysJCVNTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2Q7CisrCQlTU0xfQ09NUF9nZXRfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DT01QX2dldF9jb21wcmVzc19tZXRob2RzOworKwkJU1NMX0NPTVBfZ2V0X25hbWU7CisrCQlTU0xfY29ubmVjdDsKKysJCVNTTF9jb3B5X3Nlc3Npb25faWQ7CisrCQlTU0xfY3RybDsKKysJCVNTTF9DVFhfYWRkX2NsaWVudF9DQTsKKysJCVNTTF9DVFhfYWRkX3Nlc3Npb247CisrCQlTU0xfQ1RYX2NhbGxiYWNrX2N0cmw7CisrCQlTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5OworKwkJU1NMX0NUWF9jdHJsOworKwkJU1NMX0NUWF9mbHVzaF9zZXNzaW9uczsKKysJCVNTTF9DVFhfZnJlZTsKKysJCVNTTF9DVFhfZ2V0X2NlcnRfc3RvcmU7CisrCQlTU0xfQ1RYX2dldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9DVFhfZ2V0X2NsaWVudF9jZXJ0X2NiOworKwkJU1NMX0NUWF9nZXRfZXhfZGF0YTsKKysJCVNTTF9DVFhfZ2V0X2V4X25ld19pbmRleDsKKysJCVNTTF9DVFhfZ2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfQ1RYX2dldF9xdWlldF9zaHV0ZG93bjsKKysJCVNTTF9DVFhfZ2V0X3RpbWVvdXQ7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfZGVwdGg7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfbW9kZTsKKysJCVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zOworKwkJU1NMX0NUWF9uZXc7CisrCQlTU0xfQ1RYX3JlbW92ZV9zZXNzaW9uOworKwkJU1NMX0NUWF9zZXNzX2dldF9nZXRfY2I7CisrCQlTU0xfQ1RYX3Nlc3NfZ2V0X25ld19jYjsKKysJCVNTTF9DVFhfc2Vzc19nZXRfcmVtb3ZlX2NiOworKwkJU1NMX0NUWF9zZXNzaW9uczsKKysJCVNTTF9DVFhfc2Vzc19zZXRfZ2V0X2NiOworKwkJU1NMX0NUWF9zZXNzX3NldF9uZXdfY2I7CisrCQlTU0xfQ1RYX3Nlc3Nfc2V0X3JlbW92ZV9jYjsKKysJCVNTTF9DVFhfc2V0MV9wYXJhbTsKKysJCVNTTF9DVFhfc2V0X2NlcnRfc3RvcmU7CisrCQlTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NiOworKwkJU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Q7CisrCQlTU0xfQ1RYX3NldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2NiOworKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfZW5naW5lOworKwkJU1NMX0NUWF9zZXRfY29va2llX2dlbmVyYXRlX2NiOworKwkJU1NMX0NUWF9zZXRfY29va2llX3ZlcmlmeV9jYjsKKysJCVNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiOworKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGE7CisrCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoczsKKysJCVNTTF9DVFhfc2V0X2RlZl9wYXNzd2RfY2JfdWQ7CisrCQlTU0xfQ1RYX3NldF9kZWZfdmVyaWZ5X3BhdGhzOworKwkJU1NMX0NUWF9zZXRfZXhfZGF0YTsKKysJCVNTTF9DVFhfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7CisrCQlTU0xfQ1RYX3NldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfbXNnX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9wdXJwb3NlOworKwkJU1NMX0NUWF9zZXRfcXVpZXRfc2h1dGRvd247CisrCQlTU0xfQ1RYX3NldF9zZXNzaW9uX2lkX2NvbnRleHQ7CisrCQlTU0xfQ1RYX3NldF9zc2xfdmVyc2lvbjsKKysJCVNTTF9DVFhfc2V0X3RpbWVvdXQ7CisrCQlTU0xfQ1RYX3NldF90bXBfZGhfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF90bXBfZWNkaF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3RtcF9yc2FfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF90cnVzdDsKKysJCVNTTF9DVFhfc2V0X3ZlcmlmeTsKKysJCVNTTF9DVFhfc2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9DVFhfdXNlX2NlcnRfY2hhaW5fZmlsZTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlOworKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfQVNOMTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGU7CisrCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOworKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleTsKKysJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZTsKKysJCVNTTF9DVFhfdXNlX3Bza19pZGVudGl0eV9oaW50OworKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleTsKKysJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKKysJCVNTTF9kb19oYW5kc2hha2U7CisrCQlTU0xfZHVwOworKwkJU1NMX2R1cF9DQV9saXN0OworKwkJU1NMZWF5X2FkZF9zc2xfYWxnb3JpdGhtczsKKysJCVNTTF9mcmVlOworKwkJU1NMX2dldDFfc2Vzc2lvbjsKKysJCVNTTF9nZXRfY2VydGlmaWNhdGU7CisrCQlTU0xfZ2V0X2NpcGhlcl9saXN0OworKwkJU1NMX2dldF9jaXBoZXJzOworKwkJU1NMX2dldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9nZXRfY3VycmVudF9jaXBoZXI7CisrCQlTU0xfZ2V0X2N1cnJlbnRfY29tcHJlc3Npb247CisrCQlTU0xfZ2V0X2N1cnJlbnRfZXhwYW5zaW9uOworKwkJU1NMX2dldF9kZWZhdWx0X3RpbWVvdXQ7CisrCQlTU0xfZ2V0X2Vycm9yOworKwkJU1NMX2dldF9leF9kYXRhOworKwkJU1NMX2dldF9leF9kYXRhX1g1MDlfU1RPUkVfQ1RYX2lkeDsKKysJCVNTTF9nZXRfZXhfZF9YNTA5X1NUT1JFX0NUWF9pZHg7CisrCQlTU0xfZ2V0X2V4X25ld19pbmRleDsKKysJCVNTTF9nZXRfZmQ7CisrCQlTU0xfZ2V0X2ZpbmlzaGVkOworKwkJU1NMX2dldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX2dldF9wZWVyX2NlcnRfY2hhaW47CisrCQlTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGU7CisrCQlTU0xfZ2V0X3BlZXJfZmluaXNoZWQ7CisrCQlTU0xfZ2V0X3ByaXZhdGVrZXk7CisrCQlTU0xfZ2V0X3Bza19pZGVudGl0eTsKKysJCVNTTF9nZXRfcHNrX2lkZW50aXR5X2hpbnQ7CisrCQlTU0xfZ2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX2dldF9yYmlvOworKwkJU1NMX2dldF9yZWFkX2FoZWFkOworKwkJU1NMX2dldF9yZmQ7CisrCQlTU0xfZ2V0X3NlcnZlcm5hbWU7CisrCQlTU0xfZ2V0X3NlcnZlcm5hbWVfdHlwZTsKKysJCVNTTF9nZXRfc2Vzc2lvbjsKKysJCVNTTF9nZXRfc2hhcmVkX2NpcGhlcnM7CisrCQlTU0xfZ2V0X3NodXRkb3duOworKwkJU1NMX2dldF9TU0xfQ1RYOworKwkJU1NMX2dldF9zc2xfbWV0aG9kOworKwkJU1NMX2dldF92ZXJpZnlfY2FsbGJhY2s7CisrCQlTU0xfZ2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9nZXRfdmVyaWZ5X21vZGU7CisrCQlTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQ7CisrCQlTU0xfZ2V0X3ZlcnNpb247CisrCQlTU0xfZ2V0X3diaW87CisrCQlTU0xfZ2V0X3dmZDsKKysJCVNTTF9oYXNfbWF0Y2hpbmdfc2Vzc2lvbl9pZDsKKysJCVNTTF9saWJyYXJ5X2luaXQ7CisrCQlTU0xfbG9hZF9jbGllbnRfQ0FfZmlsZTsKKysJCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3M7CisrCQlTU0xfbmV3OworKwkJU1NMX3BlZWs7CisrCQlTU0xfcGVuZGluZzsKKysJCVNTTF9yZWFkOworKwkJU1NMX3JlbmVnb3RpYXRlOworKwkJU1NMX3JlbmVnb3RpYXRlX3BlbmRpbmc7CisrCQlTU0xfcnN0YXRlX3N0cmluZzsKKysJCVNTTF9yc3RhdGVfc3RyaW5nX2xvbmc7CisrCQlTU0xfU0VTU0lPTl9jbXA7CisrCQlTU0xfU0VTU0lPTl9mcmVlOworKwkJU1NMX1NFU1NJT05fZ2V0X2V4X2RhdGE7CisrCQlTU0xfU0VTU0lPTl9nZXRfZXhfbmV3X2luZGV4OworKwkJU1NMX1NFU1NJT05fZ2V0X2lkOworKwkJU1NMX1NFU1NJT05fZ2V0X3RpbWU7CisrCQlTU0xfU0VTU0lPTl9nZXRfdGltZW91dDsKKysJCVNTTF9TRVNTSU9OX2hhc2g7CisrCQlTU0xfU0VTU0lPTl9uZXc7CisrCQlTU0xfU0VTU0lPTl9wcmludDsKKysJCVNTTF9TRVNTSU9OX3ByaW50X2ZwOworKwkJU1NMX1NFU1NJT05fc2V0X2V4X2RhdGE7CisrCQlTU0xfU0VTU0lPTl9zZXRfdGltZTsKKysJCVNTTF9TRVNTSU9OX3NldF90aW1lb3V0OworKwkJU1NMX3NldDFfcGFyYW07CisrCQlTU0xfc2V0X2FjY2VwdF9zdGF0ZTsKKysJCVNTTF9zZXRfYmlvOworKwkJU1NMX3NldF9jaXBoZXJfbGlzdDsKKysJCVNTTF9zZXRfY2xpZW50X0NBX2xpc3Q7CisrCQlTU0xfc2V0X2Nvbm5lY3Rfc3RhdGU7CisrCQlTU0xfc2V0X2V4X2RhdGE7CisrCQlTU0xfc2V0X2ZkOworKwkJU1NMX3NldF9nZW5lcmF0ZV9zZXNzaW9uX2lkOworKwkJU1NMX3NldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX3NldF9tc2dfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3Bza19jbGllbnRfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3B1cnBvc2U7CisrCQlTU0xfc2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX3NldF9yZWFkX2FoZWFkOworKwkJU1NMX3NldF9yZmQ7CisrCQlTU0xfc2V0X3Nlc3Npb247CisrCQlTU0xfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKKysJCVNTTF9zZXRfc2Vzc2lvbl9zZWNyZXRfY2I7CisrCQlTU0xfc2V0X3Nlc3Npb25fdGlja2V0X2V4dDsKKysJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0X2NiOworKwkJU1NMX3NldF9zaHV0ZG93bjsKKysJCVNTTF9zZXRfU1NMX0NUWDsKKysJCVNTTF9zZXRfc3NsX21ldGhvZDsKKysJCVNTTF9zZXRfdG1wX2RoX2NhbGxiYWNrOworKwkJU1NMX3NldF90bXBfZWNkaF9jYWxsYmFjazsKKysJCVNTTF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKKysJCVNTTF9zZXRfdHJ1c3Q7CisrCQlTU0xfc2V0X3ZlcmlmeTsKKysJCVNTTF9zZXRfdmVyaWZ5X2RlcHRoOworKwkJU1NMX3NldF92ZXJpZnlfcmVzdWx0OworKwkJU1NMX3NldF93ZmQ7CisrCQlTU0xfc2h1dGRvd247CisrCQlTU0xfc3RhdGU7CisrCQlTU0xfc3RhdGVfc3RyaW5nOworKwkJU1NMX3N0YXRlX3N0cmluZ19sb25nOworKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZTsKKysJCVNTTF91c2VfY2VydGlmaWNhdGVfQVNOMTsKKysJCVNTTF91c2VfY2VydGlmaWNhdGVfZmlsZTsKKysJCVNTTF91c2VfUHJpdmF0ZUtleTsKKysJCVNTTF91c2VfUHJpdmF0ZUtleV9BU04xOworKwkJU1NMX3VzZV9Qcml2YXRlS2V5X2ZpbGU7CisrCQlTU0xfdXNlX3Bza19pZGVudGl0eV9oaW50OworKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5OworKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5X0FTTjE7CisrCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKKysJCVNTTHYyM19jbGllbnRfbWV0aG9kOworKwkJU1NMdjIzX21ldGhvZDsKKysJCVNTTHYyM19zZXJ2ZXJfbWV0aG9kOworKwkJU1NMdjJfY2xpZW50X21ldGhvZDsKKysJCVNTTHYyX21ldGhvZDsKKysJCVNTTHYyX3NlcnZlcl9tZXRob2Q7CisrCQlTU0x2M19jbGllbnRfbWV0aG9kOworKwkJU1NMdjNfbWV0aG9kOworKwkJU1NMdjNfc2VydmVyX21ldGhvZDsKKysJCVNTTF92ZXJzaW9uOworKwkJU1NMX3dhbnQ7CisrCQlTU0xfd3JpdGU7CisrCQlUTFN2MV9jbGllbnRfbWV0aG9kOworKwkJVExTdjFfbWV0aG9kOworKwkJVExTdjFfc2VydmVyX21ldGhvZDsKKysKKysKKysJCVNTTGVheTsKKysJCVNTTGVheV92ZXJzaW9uOworKwkJQVNOMV9CSVRfU1RSSU5HX2FzbjFfbWV0aDsKKysJCUFTTjFfSEVBREVSX2ZyZWU7CisrCQlBU04xX0hFQURFUl9uZXc7CisrCQlBU04xX0lBNVNUUklOR19hc24xX21ldGg7CisrCQlBU04xX0lOVEVHRVJfZ2V0OworKwkJQVNOMV9JTlRFR0VSX3NldDsKKysJCUFTTjFfSU5URUdFUl90b19CTjsKKysJCUFTTjFfT0JKRUNUX2NyZWF0ZTsKKysJCUFTTjFfT0JKRUNUX2ZyZWU7CisrCQlBU04xX09CSkVDVF9uZXc7CisrCQlBU04xX1BSSU5UQUJMRV90eXBlOworKwkJQVNOMV9TVFJJTkdfY21wOworKwkJQVNOMV9TVFJJTkdfZHVwOworKwkJQVNOMV9TVFJJTkdfZnJlZTsKKysJCUFTTjFfU1RSSU5HX25ldzsKKysJCUFTTjFfU1RSSU5HX3ByaW50OworKwkJQVNOMV9TVFJJTkdfc2V0OworKwkJQVNOMV9TVFJJTkdfdHlwZV9uZXc7CisrCQlBU04xX1RZUEVfZnJlZTsKKysJCUFTTjFfVFlQRV9uZXc7CisrCQlBU04xX1VOSVZFUlNBTFNUUklOR190b19zdHJpbmc7CisrCQlBU04xX1VUQ1RJTUVfY2hlY2s7CisrCQlBU04xX1VUQ1RJTUVfcHJpbnQ7CisrCQlBU04xX1VUQ1RJTUVfc2V0OworKwkJQVNOMV9jaGVja19pbmZpbml0ZV9lbmQ7CisrCQlBU04xX2QyaV9iaW87CisrCQlBU04xX2QyaV9mcDsKKysJCUFTTjFfZGlnZXN0OworKwkJQVNOMV9kdXA7CisrCQlBU04xX2dldF9vYmplY3Q7CisrCQlBU04xX2kyZF9iaW87CisrCQlBU04xX2kyZF9mcDsKKysJCUFTTjFfb2JqZWN0X3NpemU7CisrCQlBU04xX3BhcnNlOworKwkJQVNOMV9wdXRfb2JqZWN0OworKwkJQVNOMV9zaWduOworKwkJQVNOMV92ZXJpZnk7CisrCQlCRl9jYmNfZW5jcnlwdDsKKysJCUJGX2NmYjY0X2VuY3J5cHQ7CisrCQlCRl9lY2JfZW5jcnlwdDsKKysJCUJGX2VuY3J5cHQ7CisrCQlCRl9vZmI2NF9lbmNyeXB0OworKwkJQkZfb3B0aW9uczsKKysJCUJGX3NldF9rZXk7CisrCQlCSU9fQ09OTkVDVF9mcmVlOworKwkJQklPX0NPTk5FQ1RfbmV3OworKwkJQklPX2FjY2VwdDsKKysJCUJJT19jdHJsOworKwkJQklPX2ludF9jdHJsOworKwkJQklPX2RlYnVnX2NhbGxiYWNrOworKwkJQklPX2R1bXA7CisrCQlCSU9fZHVwX2NoYWluOworKwkJQklPX2ZfYmFzZTY0OworKwkJQklPX2ZfYnVmZmVyOworKwkJQklPX2ZfY2lwaGVyOworKwkJQklPX2ZfbWQ7CisrCQlCSU9fZl9udWxsOworKwkJQklPX2ZfcHJveHlfc2VydmVyOworKwkJQklPX2ZkX25vbl9mYXRhbF9lcnJvcjsKKysJCUJJT19mZF9zaG91bGRfcmV0cnk7CisrCQlCSU9fZmluZF90eXBlOworKwkJQklPX2ZyZWU7CisrCQlCSU9fZnJlZV9hbGw7CisrCQlCSU9fZ2V0X2FjY2VwdF9zb2NrZXQ7CisrCQlCSU9fZ2V0X2ZpbHRlcl9iaW87CisrCQlCSU9fZ2V0X2hvc3RfaXA7CisrCQlCSU9fZ2V0X3BvcnQ7CisrCQlCSU9fZ2V0X3JldHJ5X0JJTzsKKysJCUJJT19nZXRfcmV0cnlfcmVhc29uOworKwkJQklPX2dldGhvc3RieW5hbWU7CisrCQlCSU9fZ2V0czsKKysJCUJJT19uZXc7CisrCQlCSU9fbmV3X2FjY2VwdDsKKysJCUJJT19uZXdfY29ubmVjdDsKKysJCUJJT19uZXdfZmQ7CisrCQlCSU9fbmV3X2ZpbGU7CisrCQlCSU9fbmV3X2ZwOworKwkJQklPX25ld19zb2NrZXQ7CisrCQlCSU9fcG9wOworKwkJQklPX3ByaW50ZjsKKysJCUJJT19wdXNoOworKwkJQklPX3B1dHM7CisrCQlCSU9fcmVhZDsKKysJCUJJT19zX2FjY2VwdDsKKysJCUJJT19zX2Nvbm5lY3Q7CisrCQlCSU9fc19mZDsKKysJCUJJT19zX2ZpbGU7CisrCQlCSU9fc19tZW07CisrCQlCSU9fc19udWxsOworKwkJQklPX3NfcHJveHlfY2xpZW50OworKwkJQklPX3Nfc29ja2V0OworKwkJQklPX3NldDsKKysJCUJJT19zZXRfY2lwaGVyOworKwkJQklPX3NldF90Y3BfbmRlbGF5OworKwkJQklPX3NvY2tfY2xlYW51cDsKKysJCUJJT19zb2NrX2Vycm9yOworKwkJQklPX3NvY2tfaW5pdDsKKysJCUJJT19zb2NrX25vbl9mYXRhbF9lcnJvcjsKKysJCUJJT19zb2NrX3Nob3VsZF9yZXRyeTsKKysJCUJJT19zb2NrZXRfaW9jdGw7CisrCQlCSU9fd3JpdGU7CisrCQlCTl9DVFhfZnJlZTsKKysJCUJOX0NUWF9uZXc7CisrCQlCTl9NT05UX0NUWF9mcmVlOworKwkJQk5fTU9OVF9DVFhfbmV3OworKwkJQk5fTU9OVF9DVFhfc2V0OworKwkJQk5fYWRkOworKwkJQk5fYWRkX3dvcmQ7CisrCQlCTl9oZXgyYm47CisrCQlCTl9iaW4yYm47CisrCQlCTl9ibjJoZXg7CisrCQlCTl9ibjJiaW47CisrCQlCTl9jbGVhcjsKKysJCUJOX2NsZWFyX2JpdDsKKysJCUJOX2NsZWFyX2ZyZWU7CisrCQlCTl9jbXA7CisrCQlCTl9jb3B5OworKwkJQk5fZGl2OworKwkJQk5fZGl2X3dvcmQ7CisrCQlCTl9kdXA7CisrCQlCTl9mcmVlOworKwkJQk5fZnJvbV9tb250Z29tZXJ5OworKwkJQk5fZ2NkOworKwkJQk5fZ2VuZXJhdGVfcHJpbWU7CisrCQlCTl9nZXRfd29yZDsKKysJCUJOX2lzX2JpdF9zZXQ7CisrCQlCTl9pc19wcmltZTsKKysJCUJOX2xzaGlmdDsKKysJCUJOX2xzaGlmdDE7CisrCQlCTl9tYXNrX2JpdHM7CisrCQlCTl9tb2Q7CisrCQlCTl9tb2RfZXhwOworKwkJQk5fbW9kX2V4cF9tb250OworKwkJQk5fbW9kX2V4cF9zaW1wbGU7CisrCQlCTl9tb2RfaW52ZXJzZTsKKysJCUJOX21vZF9tdWw7CisrCQlCTl9tb2RfbXVsX21vbnRnb21lcnk7CisrCQlCTl9tb2Rfd29yZDsKKysJCUJOX211bDsKKysJCUJOX25ldzsKKysJCUJOX251bV9iaXRzOworKwkJQk5fbnVtX2JpdHNfd29yZDsKKysJCUJOX29wdGlvbnM7CisrCQlCTl9wcmludDsKKysJCUJOX3ByaW50X2ZwOworKwkJQk5fcmFuZDsKKysJCUJOX3JlY2lwcm9jYWw7CisrCQlCTl9yc2hpZnQ7CisrCQlCTl9yc2hpZnQxOworKwkJQk5fc2V0X2JpdDsKKysJCUJOX3NldF93b3JkOworKwkJQk5fc3FyOworKwkJQk5fc3ViOworKwkJQk5fdG9fQVNOMV9JTlRFR0VSOworKwkJQk5fdWNtcDsKKysJCUJOX3ZhbHVlX29uZTsKKysJCUJVRl9NRU1fZnJlZTsKKysJCUJVRl9NRU1fZ3JvdzsKKysJCUJVRl9NRU1fbmV3OworKwkJQlVGX3N0cmR1cDsKKysJCUNPTkZfZnJlZTsKKysJCUNPTkZfZ2V0X251bWJlcjsKKysJCUNPTkZfZ2V0X3NlY3Rpb247CisrCQlDT05GX2dldF9zdHJpbmc7CisrCQlDT05GX2xvYWQ7CisrCQlDUllQVE9fYWRkX2xvY2s7CisrCQlDUllQVE9fZGJnX2ZyZWU7CisrCQlDUllQVE9fZGJnX21hbGxvYzsKKysJCUNSWVBUT19kYmdfcmVhbGxvYzsKKysJCUNSWVBUT19kYmdfcmVtYWxsb2M7CisrCQlDUllQVE9fZnJlZTsKKysJCUNSWVBUT19nZXRfYWRkX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2lkX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9sb2NrX25hbWU7CisrCQlDUllQVE9fZ2V0X2xvY2tpbmdfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X21lbV9mdW5jdGlvbnM7CisrCQlDUllQVE9fbG9jazsKKysJCUNSWVBUT19tYWxsb2M7CisrCQlDUllQVE9fbWVtX2N0cmw7CisrCQlDUllQVE9fbWVtX2xlYWtzOworKwkJQ1JZUFRPX21lbV9sZWFrc19jYjsKKysJCUNSWVBUT19tZW1fbGVha3NfZnA7CisrCQlDUllQVE9fcmVhbGxvYzsKKysJCUNSWVBUT19yZW1hbGxvYzsKKysJCUNSWVBUT19zZXRfYWRkX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2lkX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9sb2NraW5nX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX3RocmVhZF9pZDsKKysJCURIX2NoZWNrOworKwkJREhfY29tcHV0ZV9rZXk7CisrCQlESF9mcmVlOworKwkJREhfZ2VuZXJhdGVfa2V5OworKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyczsKKysJCURIX25ldzsKKysJCURIX3NpemU7CisrCQlESHBhcmFtc19wcmludDsKKysJCURIcGFyYW1zX3ByaW50X2ZwOworKwkJRFNBX2ZyZWU7CisrCQlEU0FfZ2VuZXJhdGVfa2V5OworKwkJRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnM7CisrCQlEU0FfaXNfcHJpbWU7CisrCQlEU0FfbmV3OworKwkJRFNBX3ByaW50OworKwkJRFNBX3ByaW50X2ZwOworKwkJRFNBX3NpZ247CisrCQlEU0Ffc2lnbl9zZXR1cDsKKysJCURTQV9zaXplOworKwkJRFNBX3ZlcmlmeTsKKysJCURTQXBhcmFtc19wcmludDsKKysJCURTQXBhcmFtc19wcmludF9mcDsKKysJCUVSUl9jbGVhcl9lcnJvcjsKKysJCUVSUl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfZnJlZV9zdHJpbmdzOworKwkJRVJSX2Z1bmNfZXJyb3Jfc3RyaW5nOworKwkJRVJSX2dldF9lcnJfc3RhdGVfdGFibGU7CisrCQlFUlJfZ2V0X2Vycm9yOworKwkJRVJSX2dldF9lcnJvcl9saW5lOworKwkJRVJSX2dldF9zdGF0ZTsKKysJCUVSUl9nZXRfc3RyaW5nX3RhYmxlOworKwkJRVJSX2xpYl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfbG9hZF9BU04xX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9CSU9fc3RyaW5nczsKKysJCUVSUl9sb2FkX0JOX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9CVUZfc3RyaW5nczsKKysJCUVSUl9sb2FkX0NPTkZfc3RyaW5nczsKKysJCUVSUl9sb2FkX0RIX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9EU0Ffc3RyaW5nczsKKysJCUVSUl9sb2FkX0VSUl9zdHJpbmdzOworKwkJRVJSX2xvYWRfRVZQX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9PQkpfc3RyaW5nczsKKysJCUVSUl9sb2FkX1BFTV9zdHJpbmdzOworKwkJRVJSX2xvYWRfUFJPWFlfc3RyaW5nczsKKysJCUVSUl9sb2FkX1JTQV9zdHJpbmdzOworKwkJRVJSX2xvYWRfWDUwOV9zdHJpbmdzOworKwkJRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9zdHJpbmdzOworKwkJRVJSX3BlZWtfZXJyb3I7CisrCQlFUlJfcGVla19lcnJvcl9saW5lOworKwkJRVJSX3ByaW50X2Vycm9yczsKKysJCUVSUl9wcmludF9lcnJvcnNfZnA7CisrCQlFUlJfcHV0X2Vycm9yOworKwkJRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfcmVtb3ZlX3N0YXRlOworKwkJRVZQX0J5dGVzVG9LZXk7CisrCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwOworKwkJRVZQX0NpcGhlckZpbmFsOworKwkJRVZQX0NpcGhlckluaXQ7CisrCQlFVlBfQ2lwaGVyVXBkYXRlOworKwkJRVZQX0RlY29kZUJsb2NrOworKwkJRVZQX0RlY29kZUZpbmFsOworKwkJRVZQX0RlY29kZUluaXQ7CisrCQlFVlBfRGVjb2RlVXBkYXRlOworKwkJRVZQX0RlY3J5cHRGaW5hbDsKKysJCUVWUF9EZWNyeXB0SW5pdDsKKysJCUVWUF9EZWNyeXB0VXBkYXRlOworKwkJRVZQX0RpZ2VzdEZpbmFsOworKwkJRVZQX0RpZ2VzdEluaXQ7CisrCQlFVlBfRGlnZXN0VXBkYXRlOworKwkJRVZQX0VuY29kZUJsb2NrOworKwkJRVZQX0VuY29kZUZpbmFsOworKwkJRVZQX0VuY29kZUluaXQ7CisrCQlFVlBfRW5jb2RlVXBkYXRlOworKwkJRVZQX0VuY3J5cHRGaW5hbDsKKysJCUVWUF9FbmNyeXB0SW5pdDsKKysJCUVWUF9FbmNyeXB0VXBkYXRlOworKwkJRVZQX09wZW5GaW5hbDsKKysJCUVWUF9PcGVuSW5pdDsKKysJCUVWUF9QS0VZX2Fzc2lnbjsKKysJCUVWUF9QS0VZX2NvcHlfcGFyYW1ldGVyczsKKysJCUVWUF9QS0VZX2ZyZWU7CisrCQlFVlBfUEtFWV9taXNzaW5nX3BhcmFtZXRlcnM7CisrCQlFVlBfUEtFWV9uZXc7CisrCQlFVlBfUEtFWV9zYXZlX3BhcmFtZXRlcnM7CisrCQlFVlBfUEtFWV9zaXplOworKwkJRVZQX1BLRVlfdHlwZTsKKysJCUVWUF9TZWFsRmluYWw7CisrCQlFVlBfU2VhbEluaXQ7CisrCQlFVlBfU2lnbkZpbmFsOworKwkJRVZQX1ZlcmlmeUZpbmFsOworKwkJRVZQX2FkZF9hbGlhczsKKysJCUVWUF9hZGRfY2lwaGVyOworKwkJRVZQX2FkZF9kaWdlc3Q7CisrCQlFVlBfYmZfY2JjOworKwkJRVZQX2JmX2NmYjY0OworKwkJRVZQX2JmX2VjYjsKKysJCUVWUF9iZl9vZmI7CisrCQlFVlBfY2xlYW51cDsKKysJCUVWUF9kZXNfY2JjOworKwkJRVZQX2Rlc19jZmI2NDsKKysJCUVWUF9kZXNfZWNiOworKwkJRVZQX2Rlc19lZGU7CisrCQlFVlBfZGVzX2VkZTM7CisrCQlFVlBfZGVzX2VkZTNfY2JjOworKwkJRVZQX2Rlc19lZGUzX2NmYjY0OworKwkJRVZQX2Rlc19lZGUzX29mYjsKKysJCUVWUF9kZXNfZWRlX2NiYzsKKysJCUVWUF9kZXNfZWRlX2NmYjY0OworKwkJRVZQX2Rlc19lZGVfb2ZiOworKwkJRVZQX2Rlc19vZmI7CisrCQlFVlBfZGVzeF9jYmM7CisrCQlFVlBfZHNzOworKwkJRVZQX2RzczE7CisrCQlFVlBfZW5jX251bGw7CisrCQlFVlBfZ2V0X2NpcGhlcmJ5bmFtZTsKKysJCUVWUF9nZXRfZGlnZXN0YnluYW1lOworKwkJRVZQX2dldF9wd19wcm9tcHQ7CisrCQlFVlBfaWRlYV9jYmM7CisrCQlFVlBfaWRlYV9jZmI2NDsKKysJCUVWUF9pZGVhX2VjYjsKKysJCUVWUF9pZGVhX29mYjsKKysJCUVWUF9tZDI7CisrCQlFVlBfbWQ1OworKwkJRVZQX21kX251bGw7CisrCQlFVlBfcmMyX2NiYzsKKysJCUVWUF9yYzJfY2ZiNjQ7CisrCQlFVlBfcmMyX2VjYjsKKysJCUVWUF9yYzJfb2ZiOworKwkJRVZQX3JjNDsKKysJCUVWUF9yZWFkX3B3X3N0cmluZzsKKysJCUVWUF9zZXRfcHdfcHJvbXB0OworKwkJRVZQX3NoYTsKKysJCUVWUF9zaGExOworKwkJTUQyOworKwkJTUQyX0ZpbmFsOworKwkJTUQyX0luaXQ7CisrCQlNRDJfVXBkYXRlOworKwkJTUQyX29wdGlvbnM7CisrCQlNRDU7CisrCQlNRDVfRmluYWw7CisrCQlNRDVfSW5pdDsKKysJCU1ENV9VcGRhdGU7CisrCQlNREMyOworKwkJTURDMl9GaW5hbDsKKysJCU1EQzJfSW5pdDsKKysJCU1EQzJfVXBkYXRlOworKwkJTkVUU0NBUEVfU1BLQUNfZnJlZTsKKysJCU5FVFNDQVBFX1NQS0FDX25ldzsKKysJCU5FVFNDQVBFX1NQS0lfZnJlZTsKKysJCU5FVFNDQVBFX1NQS0lfbmV3OworKwkJTkVUU0NBUEVfU1BLSV9zaWduOworKwkJTkVUU0NBUEVfU1BLSV92ZXJpZnk7CisrCQlPQkpfYWRkX29iamVjdDsKKysJCU9CSl9ic2VhcmNoOworKwkJT0JKX2NsZWFudXA7CisrCQlPQkpfY21wOworKwkJT0JKX2NyZWF0ZTsKKysJCU9CSl9kdXA7CisrCQlPQkpfbG4ybmlkOworKwkJT0JKX25ld19uaWQ7CisrCQlPQkpfbmlkMmxuOworKwkJT0JKX25pZDJvYmo7CisrCQlPQkpfbmlkMnNuOworKwkJT0JKX29iajJuaWQ7CisrCQlPQkpfc24ybmlkOworKwkJT0JKX3R4dDJuaWQ7CisrCQlQRU1fQVNOMV9yZWFkOworKwkJUEVNX0FTTjFfcmVhZF9iaW87CisrCQlQRU1fQVNOMV93cml0ZTsKKysJCVBFTV9BU04xX3dyaXRlX2JpbzsKKysJCVBFTV9TZWFsRmluYWw7CisrCQlQRU1fU2VhbEluaXQ7CisrCQlQRU1fU2VhbFVwZGF0ZTsKKysJCVBFTV9TaWduRmluYWw7CisrCQlQRU1fU2lnbkluaXQ7CisrCQlQRU1fU2lnblVwZGF0ZTsKKysJCVBFTV9YNTA5X0lORk9fcmVhZDsKKysJCVBFTV9YNTA5X0lORk9fcmVhZF9iaW87CisrCQlQRU1fWDUwOV9JTkZPX3dyaXRlX2JpbzsKKysJCVBFTV9kZWtfaW5mbzsKKysJCVBFTV9kb19oZWFkZXI7CisrCQlQRU1fZ2V0X0VWUF9DSVBIRVJfSU5GTzsKKysJCVBFTV9wcm9jX3R5cGU7CisrCQlQRU1fcmVhZDsKKysJCVBFTV9yZWFkX0RIcGFyYW1zOworKwkJUEVNX3JlYWRfRFNBUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX0RTQXBhcmFtczsKKysJCVBFTV9yZWFkX1BLQ1M3OworKwkJUEVNX3JlYWRfUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9YNTA5OworKwkJUEVNX3JlYWRfWDUwOV9DUkw7CisrCQlQRU1fcmVhZF9YNTA5X1JFUTsKKysJCVBFTV9yZWFkX2JpbzsKKysJCVBFTV9yZWFkX2Jpb19ESHBhcmFtczsKKysJCVBFTV9yZWFkX2Jpb19EU0FQcml2YXRlS2V5OworKwkJUEVNX3JlYWRfYmlvX0RTQXBhcmFtczsKKysJCVBFTV9yZWFkX2Jpb19QS0NTNzsKKysJCVBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5OworKwkJUEVNX3JlYWRfYmlvX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9iaW9fWDUwOTsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X0NSTDsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X1JFUTsKKysJCVBFTV93cml0ZTsKKysJCVBFTV93cml0ZV9ESHBhcmFtczsKKysJCVBFTV93cml0ZV9EU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX0RTQXBhcmFtczsKKysJCVBFTV93cml0ZV9QS0NTNzsKKysJCVBFTV93cml0ZV9Qcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfWDUwOTsKKysJCVBFTV93cml0ZV9YNTA5X0NSTDsKKysJCVBFTV93cml0ZV9YNTA5X1JFUTsKKysJCVBFTV93cml0ZV9iaW87CisrCQlQRU1fd3JpdGVfYmlvX0RIcGFyYW1zOworKwkJUEVNX3dyaXRlX2Jpb19EU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19EU0FwYXJhbXM7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M3OworKwkJUEVNX3dyaXRlX2Jpb19Qcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19SU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19YNTA5OworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0NSTDsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVE7CisrCQlQS0NTN19ESUdFU1RfZnJlZTsKKysJCVBLQ1M3X0RJR0VTVF9uZXc7CisrCQlQS0NTN19FTkNSWVBUX2ZyZWU7CisrCQlQS0NTN19FTkNSWVBUX25ldzsKKysJCVBLQ1M3X0VOQ19DT05URU5UX2ZyZWU7CisrCQlQS0NTN19FTkNfQ09OVEVOVF9uZXc7CisrCQlQS0NTN19FTlZFTE9QRV9mcmVlOworKwkJUEtDUzdfRU5WRUxPUEVfbmV3OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZGlnZXN0OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZnJlZTsKKysJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX25ldzsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fZnJlZTsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fbmV3OworKwkJUEtDUzdfU0lHTkVEX2ZyZWU7CisrCQlQS0NTN19TSUdORURfbmV3OworKwkJUEtDUzdfU0lHTkVSX0lORk9fZnJlZTsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX25ldzsKKysJCVBLQ1M3X1NJR05fRU5WRUxPUEVfZnJlZTsKKysJCVBLQ1M3X1NJR05fRU5WRUxPUEVfbmV3OworKwkJUEtDUzdfZHVwOworKwkJUEtDUzdfZnJlZTsKKysJCVBLQ1M3X25ldzsKKysJCVBST1hZX0VOVFJZX2FkZF9ub3Byb3h5OworKwkJUFJPWFlfRU5UUllfY2xlYXJfbm9wcm94eTsKKysJCVBST1hZX0VOVFJZX2ZyZWU7CisrCQlQUk9YWV9FTlRSWV9nZXRfbm9wcm94eTsKKysJCVBST1hZX0VOVFJZX25ldzsKKysJCVBST1hZX0VOVFJZX3NldF9zZXJ2ZXI7CisrCQlQUk9YWV9hZGRfbm9wcm94eTsKKysJCVBST1hZX2FkZF9zZXJ2ZXI7CisrCQlQUk9YWV9jaGVja19ieV9ob3N0OworKwkJUFJPWFlfY2hlY2tfdXJsOworKwkJUFJPWFlfY2xlYXJfbm9wcm94eTsKKysJCVBST1hZX2ZyZWU7CisrCQlQUk9YWV9nZXRfbm9wcm94eTsKKysJCVBST1hZX2dldF9wcm94aWVzOworKwkJUFJPWFlfZ2V0X3Byb3h5X2VudHJ5OworKwkJUFJPWFlfbG9hZF9jb25mOworKwkJUFJPWFlfbmV3OworKwkJUFJPWFlfcHJpbnQ7CisrCQlSQU5EX2J5dGVzOworKwkJUkFORF9jbGVhbnVwOworKwkJUkFORF9maWxlX25hbWU7CisrCQlSQU5EX2xvYWRfZmlsZTsKKysJCVJBTkRfc2NyZWVuOworKwkJUkFORF9zZWVkOworKwkJUkFORF93cml0ZV9maWxlOworKwkJUkMyX2NiY19lbmNyeXB0OworKwkJUkMyX2NmYjY0X2VuY3J5cHQ7CisrCQlSQzJfZWNiX2VuY3J5cHQ7CisrCQlSQzJfZW5jcnlwdDsKKysJCVJDMl9vZmI2NF9lbmNyeXB0OworKwkJUkMyX3NldF9rZXk7CisrCQlSQzQ7CisrCQlSQzRfb3B0aW9uczsKKysJCVJDNF9zZXRfa2V5OworKwkJUlNBUHJpdmF0ZUtleV9hc24xX21ldGg7CisrCQlSU0FQcml2YXRlS2V5X2R1cDsKKysJCVJTQVB1YmxpY0tleV9kdXA7CisrCQlSU0FfUEtDUzFfU1NMZWF5OworKwkJUlNBX2ZyZWU7CisrCQlSU0FfZ2VuZXJhdGVfa2V5OworKwkJUlNBX25ldzsKKysJCVJTQV9uZXdfbWV0aG9kOworKwkJUlNBX3ByaW50OworKwkJUlNBX3ByaW50X2ZwOworKwkJUlNBX3ByaXZhdGVfZGVjcnlwdDsKKysJCVJTQV9wcml2YXRlX2VuY3J5cHQ7CisrCQlSU0FfcHVibGljX2RlY3J5cHQ7CisrCQlSU0FfcHVibGljX2VuY3J5cHQ7CisrCQlSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUlNBX3NpZ247CisrCQlSU0Ffc2lnbl9BU04xX09DVEVUX1NUUklORzsKKysJCVJTQV9zaXplOworKwkJUlNBX3ZlcmlmeTsKKysJCVJTQV92ZXJpZnlfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlTSEE7CisrCQlTSEExOworKwkJU0hBMV9GaW5hbDsKKysJCVNIQTFfSW5pdDsKKysJCVNIQTFfVXBkYXRlOworKwkJU0hBX0ZpbmFsOworKwkJU0hBX0luaXQ7CisrCQlTSEFfVXBkYXRlOworKwkJT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXM7CisrCQlPcGVuU1NMX2FkZF9hbGxfY2lwaGVyczsKKysJCU9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzOworKwkJVFhUX0RCX2NyZWF0ZV9pbmRleDsKKysJCVRYVF9EQl9mcmVlOworKwkJVFhUX0RCX2dldF9ieV9pbmRleDsKKysJCVRYVF9EQl9pbnNlcnQ7CisrCQlUWFRfREJfcmVhZDsKKysJCVRYVF9EQl93cml0ZTsKKysJCVg1MDlfQUxHT1JfZnJlZTsKKysJCVg1MDlfQUxHT1JfbmV3OworKwkJWDUwOV9BVFRSSUJVVEVfZnJlZTsKKysJCVg1MDlfQVRUUklCVVRFX25ldzsKKysJCVg1MDlfQ0lORl9mcmVlOworKwkJWDUwOV9DSU5GX25ldzsKKysJCVg1MDlfQ1JMX0lORk9fZnJlZTsKKysJCVg1MDlfQ1JMX0lORk9fbmV3OworKwkJWDUwOV9DUkxfYWRkX2V4dDsKKysJCVg1MDlfQ1JMX2NtcDsKKysJCVg1MDlfQ1JMX2RlbGV0ZV9leHQ7CisrCQlYNTA5X0NSTF9kdXA7CisrCQlYNTA5X0NSTF9mcmVlOworKwkJWDUwOV9DUkxfZ2V0X2V4dDsKKysJCVg1MDlfQ1JMX2dldF9leHRfYnlfTklEOworKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9DUkxfZ2V0X2V4dF9jb3VudDsKKysJCVg1MDlfQ1JMX25ldzsKKysJCVg1MDlfQ1JMX3NpZ247CisrCQlYNTA5X0NSTF92ZXJpZnk7CisrCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9FWFRFTlNJT05fY3JlYXRlX2J5X09CSjsKKysJCVg1MDlfRVhURU5TSU9OX2R1cDsKKysJCVg1MDlfRVhURU5TSU9OX2ZyZWU7CisrCQlYNTA5X0VYVEVOU0lPTl9nZXRfY3JpdGljYWw7CisrCQlYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YTsKKysJCVg1MDlfRVhURU5TSU9OX2dldF9vYmplY3Q7CisrCQlYNTA5X0VYVEVOU0lPTl9uZXc7CisrCQlYNTA5X0VYVEVOU0lPTl9zZXRfY3JpdGljYWw7CisrCQlYNTA5X0VYVEVOU0lPTl9zZXRfZGF0YTsKKysJCVg1MDlfRVhURU5TSU9OX3NldF9vYmplY3Q7CisrCQlYNTA5X0lORk9fZnJlZTsKKysJCVg1MDlfSU5GT19uZXc7CisrCQlYNTA5X0xPT0tVUF9ieV9hbGlhczsKKysJCVg1MDlfTE9PS1VQX2J5X2ZpbmdlcnByaW50OworKwkJWDUwOV9MT09LVVBfYnlfaXNzdWVyX3NlcmlhbDsKKysJCVg1MDlfTE9PS1VQX2J5X3N1YmplY3Q7CisrCQlYNTA5X0xPT0tVUF9jdHJsOworKwkJWDUwOV9MT09LVVBfZmlsZTsKKysJCVg1MDlfTE9PS1VQX2ZyZWU7CisrCQlYNTA5X0xPT0tVUF9oYXNoX2RpcjsKKysJCVg1MDlfTE9PS1VQX2luaXQ7CisrCQlYNTA5X0xPT0tVUF9uZXc7CisrCQlYNTA5X0xPT0tVUF9zaHV0ZG93bjsKKysJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9PQko7CisrCQlYNTA5X05BTUVfRU5UUllfZHVwOworKwkJWDUwOV9OQU1FX0VOVFJZX2ZyZWU7CisrCQlYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGE7CisrCQlYNTA5X05BTUVfRU5UUllfZ2V0X29iamVjdDsKKysJCVg1MDlfTkFNRV9FTlRSWV9uZXc7CisrCQlYNTA5X05BTUVfRU5UUllfc2V0X2RhdGE7CisrCQlYNTA5X05BTUVfRU5UUllfc2V0X29iamVjdDsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnk7CisrCQlYNTA5X05BTUVfY21wOworKwkJWDUwOV9OQU1FX2RlbGV0ZV9lbnRyeTsKKysJCVg1MDlfTkFNRV9kaWdlc3Q7CisrCQlYNTA5X05BTUVfZHVwOworKwkJWDUwOV9OQU1FX2VudHJ5X2NvdW50OworKwkJWDUwOV9OQU1FX2ZyZWU7CisrCQlYNTA5X05BTUVfZ2V0X2VudHJ5OworKwkJWDUwOV9OQU1FX2dldF9pbmRleF9ieV9OSUQ7CisrCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X09CSjsKKysJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9OSUQ7CisrCQlYNTA5X05BTUVfZ2V0X3RleHRfYnlfT0JKOworKwkJWDUwOV9OQU1FX2hhc2g7CisrCQlYNTA5X05BTUVfbmV3OworKwkJWDUwOV9OQU1FX29uZWxpbmU7CisrCQlYNTA5X05BTUVfcHJpbnQ7CisrCQlYNTA5X05BTUVfc2V0OworKwkJWDUwOV9PQkpFQ1RfZnJlZV9jb250ZW50czsKKysJCVg1MDlfT0JKRUNUX3JldHJpZXZlX2J5X3N1YmplY3Q7CisrCQlYNTA5X09CSkVDVF91cF9yZWZfY291bnQ7CisrCQlYNTA5X1BLRVlfZnJlZTsKKysJCVg1MDlfUEtFWV9uZXc7CisrCQlYNTA5X1BVQktFWV9mcmVlOworKwkJWDUwOV9QVUJLRVlfZ2V0OworKwkJWDUwOV9QVUJLRVlfbmV3OworKwkJWDUwOV9QVUJLRVlfc2V0OworKwkJWDUwOV9SRVFfSU5GT19mcmVlOworKwkJWDUwOV9SRVFfSU5GT19uZXc7CisrCQlYNTA5X1JFUV9kdXA7CisrCQlYNTA5X1JFUV9mcmVlOworKwkJWDUwOV9SRVFfZ2V0X3B1YmtleTsKKysJCVg1MDlfUkVRX25ldzsKKysJCVg1MDlfUkVRX3ByaW50OworKwkJWDUwOV9SRVFfcHJpbnRfZnA7CisrCQlYNTA5X1JFUV9zZXRfcHVia2V5OworKwkJWDUwOV9SRVFfc2V0X3N1YmplY3RfbmFtZTsKKysJCVg1MDlfUkVRX3NldF92ZXJzaW9uOworKwkJWDUwOV9SRVFfc2lnbjsKKysJCVg1MDlfUkVRX3RvX1g1MDk7CisrCQlYNTA5X1JFUV92ZXJpZnk7CisrCQlYNTA5X1JFVk9LRURfYWRkX2V4dDsKKysJCVg1MDlfUkVWT0tFRF9kZWxldGVfZXh0OworKwkJWDUwOV9SRVZPS0VEX2ZyZWU7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dDsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X05JRDsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X09CSjsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfY291bnQ7CisrCQlYNTA5X1JFVk9LRURfbmV3OworKwkJWDUwOV9TSUdfZnJlZTsKKysJCVg1MDlfU0lHX25ldzsKKysJCVg1MDlfU1RPUkVfQ1RYX2NsZWFudXA7CisrCQlYNTA5X1NUT1JFX0NUWF9pbml0OworKwkJWDUwOV9TVE9SRV9hZGRfY2VydDsKKysJCVg1MDlfU1RPUkVfYWRkX2xvb2t1cDsKKysJCVg1MDlfU1RPUkVfZnJlZTsKKysJCVg1MDlfU1RPUkVfZ2V0X2J5X3N1YmplY3Q7CisrCQlYNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zOworKwkJWDUwOV9TVE9SRV9uZXc7CisrCQlYNTA5X1NUT1JFX3NldF9kZWZhdWx0X3BhdGhzOworKwkJWDUwOV9WQUxfZnJlZTsKKysJCVg1MDlfVkFMX25ldzsKKysJCVg1MDlfYWRkX2V4dDsKKysJCVg1MDlfYXNuMV9tZXRoOworKwkJWDUwOV9jZXJ0aWZpY2F0ZV90eXBlOworKwkJWDUwOV9jaGVja19wcml2YXRlX2tleTsKKysJCVg1MDlfY21wX2N1cnJlbnRfdGltZTsKKysJCVg1MDlfZGVsZXRlX2V4dDsKKysJCVg1MDlfZGlnZXN0OworKwkJWDUwOV9kdXA7CisrCQlYNTA5X2ZyZWU7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfYXJlYTsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXI7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyX2VudjsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlOworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW52OworKwkJWDUwOV9nZXRfZGVmYXVsdF9wcml2YXRlX2RpcjsKKysJCVg1MDlfZ2V0X2V4dDsKKysJCVg1MDlfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5X2dldF9leHRfYnlfT0JKOworKwkJWDUwOV9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9nZXRfZXh0X2NvdW50OworKwkJWDUwOV9nZXRfaXNzdWVyX25hbWU7CisrCQlYNTA5X2dldF9wdWJrZXk7CisrCQlYNTA5X2dldF9wdWJrZXlfcGFyYW1ldGVyczsKKysJCVg1MDlfZ2V0X3NlcmlhbE51bWJlcjsKKysJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZTsKKysJCVg1MDlfZ210aW1lX2FkajsKKysJCVg1MDlfaXNzdWVyX2FuZF9zZXJpYWxfY21wOworKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXNoOworKwkJWDUwOV9pc3N1ZXJfbmFtZV9jbXA7CisrCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2g7CisrCQlYNTA5X2xvYWRfY2VydF9maWxlOworKwkJWDUwOV9uZXc7CisrCQlYNTA5X3ByaW50OworKwkJWDUwOV9wcmludF9mcDsKKysJCVg1MDlfc2V0X2lzc3Vlcl9uYW1lOworKwkJWDUwOV9zZXRfbm90QWZ0ZXI7CisrCQlYNTA5X3NldF9ub3RCZWZvcmU7CisrCQlYNTA5X3NldF9wdWJrZXk7CisrCQlYNTA5X3NldF9zZXJpYWxOdW1iZXI7CisrCQlYNTA5X3NldF9zdWJqZWN0X25hbWU7CisrCQlYNTA5X3NldF92ZXJzaW9uOworKwkJWDUwOV9zaWduOworKwkJWDUwOV9zdWJqZWN0X25hbWVfY21wOworKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaDsKKysJCVg1MDlfdG9fWDUwOV9SRVE7CisrCQlYNTA5X3ZlcmlmeTsKKysJCVg1MDlfdmVyaWZ5X2NlcnQ7CisrCQlYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZzsKKysJCVg1MDl2M19hZGRfZXh0OworKwkJWDUwOXYzX2FkZF9leHRlbnNpb247CisrCQlYNTA5djNfYWRkX25ldHNjYXBlX2V4dGVuc2lvbnM7CisrCQlYNTA5djNfYWRkX3N0YW5kYXJkX2V4dGVuc2lvbnM7CisrCQlYNTA5djNfY2xlYW51cF9leHRlbnNpb25zOworKwkJWDUwOXYzX2RhdGFfdHlwZV9ieV9OSUQ7CisrCQlYNTA5djNfZGF0YV90eXBlX2J5X09CSjsKKysJCVg1MDl2M19kZWxldGVfZXh0OworKwkJWDUwOXYzX2dldF9leHQ7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCVg1MDl2M19nZXRfZXh0X2NvdW50OworKwkJWDUwOXYzX3BhY2tfc3RyaW5nOworKwkJWDUwOXYzX3BhY2tfdHlwZV9ieV9OSUQ7CisrCQlYNTA5djNfcGFja190eXBlX2J5X09CSjsKKysJCVg1MDl2M191bnBhY2tfc3RyaW5nOworKwkJX2Rlc19jcnlwdDsKKysJCWEyZF9BU04xX09CSkVDVDsKKysJCWEyaV9BU04xX0lOVEVHRVI7CisrCQlhMmlfQVNOMV9TVFJJTkc7CisrCQlhc24xX0ZpbmlzaDsKKysJCWFzbjFfR2V0U2VxdWVuY2U7CisrCQlibl9kaXZfd29yZHM7CisrCQlibl9leHBhbmQyOworKwkJYm5fbXVsX2FkZF93b3JkczsKKysJCWJuX211bF93b3JkczsKKysJCUJOX3VhZGQ7CisrCQlCTl91c3ViOworKwkJYm5fc3FyX3dvcmRzOworKwkJX29zc2xfb2xkX2NyeXB0OworKwkJZDJpX0FTTjFfQklUX1NUUklORzsKKysJCWQyaV9BU04xX0JPT0xFQU47CisrCQlkMmlfQVNOMV9IRUFERVI7CisrCQlkMmlfQVNOMV9JQTVTVFJJTkc7CisrCQlkMmlfQVNOMV9JTlRFR0VSOworKwkJZDJpX0FTTjFfT0JKRUNUOworKwkJZDJpX0FTTjFfT0NURVRfU1RSSU5HOworKwkJZDJpX0FTTjFfUFJJTlRBQkxFOworKwkJZDJpX0FTTjFfUFJJTlRBQkxFU1RSSU5HOworKwkJZDJpX0FTTjFfU0VUOworKwkJZDJpX0FTTjFfVDYxU1RSSU5HOworKwkJZDJpX0FTTjFfVFlQRTsKKysJCWQyaV9BU04xX1VUQ1RJTUU7CisrCQlkMmlfQVNOMV9ieXRlczsKKysJCWQyaV9BU04xX3R5cGVfYnl0ZXM7CisrCQlkMmlfREhwYXJhbXM7CisrCQlkMmlfRFNBUHJpdmF0ZUtleTsKKysJCWQyaV9EU0FQcml2YXRlS2V5X2JpbzsKKysJCWQyaV9EU0FQcml2YXRlS2V5X2ZwOworKwkJZDJpX0RTQVB1YmxpY0tleTsKKysJCWQyaV9EU0FwYXJhbXM7CisrCQlkMmlfTkVUU0NBUEVfU1BLQUM7CisrCQlkMmlfTkVUU0NBUEVfU1BLSTsKKysJCWQyaV9OZXRzY2FwZV9SU0E7CisrCQlkMmlfUEtDUzc7CisrCQlkMmlfUEtDUzdfRElHRVNUOworKwkJZDJpX1BLQ1M3X0VOQ1JZUFQ7CisrCQlkMmlfUEtDUzdfRU5DX0NPTlRFTlQ7CisrCQlkMmlfUEtDUzdfRU5WRUxPUEU7CisrCQlkMmlfUEtDUzdfSVNTVUVSX0FORF9TRVJJQUw7CisrCQlkMmlfUEtDUzdfUkVDSVBfSU5GTzsKKysJCWQyaV9QS0NTN19TSUdORUQ7CisrCQlkMmlfUEtDUzdfU0lHTkVSX0lORk87CisrCQlkMmlfUEtDUzdfU0lHTl9FTlZFTE9QRTsKKysJCWQyaV9QS0NTN19iaW87CisrCQlkMmlfUEtDUzdfZnA7CisrCQlkMmlfUHJpdmF0ZUtleTsKKysJCWQyaV9QdWJsaWNLZXk7CisrCQlkMmlfUlNBUHJpdmF0ZUtleTsKKysJCWQyaV9SU0FQcml2YXRlS2V5X2JpbzsKKysJCWQyaV9SU0FQcml2YXRlS2V5X2ZwOworKwkJZDJpX1JTQVB1YmxpY0tleTsKKysJCWQyaV9YNTA5OworKwkJZDJpX1g1MDlfQUxHT1I7CisrCQlkMmlfWDUwOV9BVFRSSUJVVEU7CisrCQlkMmlfWDUwOV9DSU5GOworKwkJZDJpX1g1MDlfQ1JMOworKwkJZDJpX1g1MDlfQ1JMX0lORk87CisrCQlkMmlfWDUwOV9DUkxfYmlvOworKwkJZDJpX1g1MDlfQ1JMX2ZwOworKwkJZDJpX1g1MDlfRVhURU5TSU9OOworKwkJZDJpX1g1MDlfTkFNRTsKKysJCWQyaV9YNTA5X05BTUVfRU5UUlk7CisrCQlkMmlfWDUwOV9QS0VZOworKwkJZDJpX1g1MDlfUFVCS0VZOworKwkJZDJpX1g1MDlfUkVROworKwkJZDJpX1g1MDlfUkVRX0lORk87CisrCQlkMmlfWDUwOV9SRVFfYmlvOworKwkJZDJpX1g1MDlfUkVRX2ZwOworKwkJZDJpX1g1MDlfUkVWT0tFRDsKKysJCWQyaV9YNTA5X1NJRzsKKysJCWQyaV9YNTA5X1ZBTDsKKysJCWQyaV9YNTA5X2JpbzsKKysJCWQyaV9YNTA5X2ZwOworKwkJREVTX2NiY19ja3N1bTsKKysJCURFU19jYmNfZW5jcnlwdDsKKysJCURFU19jYmxvY2tfcHJpbnRfZmlsZTsKKysJCURFU19jZmI2NF9lbmNyeXB0OworKwkJREVTX2NmYl9lbmNyeXB0OworKwkJREVTX2RlY3J5cHQzOworKwkJREVTX2VjYjNfZW5jcnlwdDsKKysJCURFU19lY2JfZW5jcnlwdDsKKysJCURFU19lZGUzX2NiY19lbmNyeXB0OworKwkJREVTX2VkZTNfY2ZiNjRfZW5jcnlwdDsKKysJCURFU19lZGUzX29mYjY0X2VuY3J5cHQ7CisrCQlERVNfZW5jX3JlYWQ7CisrCQlERVNfZW5jX3dyaXRlOworKwkJREVTX2VuY3J5cHQxOworKwkJREVTX2VuY3J5cHQyOworKwkJREVTX2VuY3J5cHQzOworKwkJREVTX2ZjcnlwdDsKKysJCURFU19pc193ZWFrX2tleTsKKysJCURFU19rZXlfc2NoZWQ7CisrCQlERVNfbmNiY19lbmNyeXB0OworKwkJREVTX29mYjY0X2VuY3J5cHQ7CisrCQlERVNfb2ZiX2VuY3J5cHQ7CisrCQlERVNfb3B0aW9uczsKKysJCURFU19wY2JjX2VuY3J5cHQ7CisrCQlERVNfcXVhZF9ja3N1bTsKKysJCURFU19yYW5kb21fa2V5OworKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fc2VlZDsKKysJCV9vc3NsX29sZF9kZXNfcmVhZF8ycGFzc3dvcmRzOworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3Bhc3N3b3JkOworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3OworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3X3N0cmluZzsKKysJCURFU19zZXRfa2V5OworKwkJREVTX3NldF9vZGRfcGFyaXR5OworKwkJREVTX3N0cmluZ190b18ya2V5czsKKysJCURFU19zdHJpbmdfdG9fa2V5OworKwkJREVTX3hjYmNfZW5jcnlwdDsKKysJCURFU194d2hpdGVfaW4yb3V0OworKwkJZmNyeXB0X2JvZHk7CisrCQlpMmFfQVNOMV9JTlRFR0VSOworKwkJaTJhX0FTTjFfT0JKRUNUOworKwkJaTJhX0FTTjFfU1RSSU5HOworKwkJaTJkX0FTTjFfQklUX1NUUklORzsKKysJCWkyZF9BU04xX0JPT0xFQU47CisrCQlpMmRfQVNOMV9IRUFERVI7CisrCQlpMmRfQVNOMV9JQTVTVFJJTkc7CisrCQlpMmRfQVNOMV9JTlRFR0VSOworKwkJaTJkX0FTTjFfT0JKRUNUOworKwkJaTJkX0FTTjFfT0NURVRfU1RSSU5HOworKwkJaTJkX0FTTjFfUFJJTlRBQkxFOworKwkJaTJkX0FTTjFfU0VUOworKwkJaTJkX0FTTjFfVFlQRTsKKysJCWkyZF9BU04xX1VUQ1RJTUU7CisrCQlpMmRfQVNOMV9ieXRlczsKKysJCWkyZF9ESHBhcmFtczsKKysJCWkyZF9EU0FQcml2YXRlS2V5OworKwkJaTJkX0RTQVByaXZhdGVLZXlfYmlvOworKwkJaTJkX0RTQVByaXZhdGVLZXlfZnA7CisrCQlpMmRfRFNBUHVibGljS2V5OworKwkJaTJkX0RTQXBhcmFtczsKKysJCWkyZF9ORVRTQ0FQRV9TUEtBQzsKKysJCWkyZF9ORVRTQ0FQRV9TUEtJOworKwkJaTJkX05ldHNjYXBlX1JTQTsKKysJCWkyZF9QS0NTNzsKKysJCWkyZF9QS0NTN19ESUdFU1Q7CisrCQlpMmRfUEtDUzdfRU5DUllQVDsKKysJCWkyZF9QS0NTN19FTkNfQ09OVEVOVDsKKysJCWkyZF9QS0NTN19FTlZFTE9QRTsKKysJCWkyZF9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKKysJCWkyZF9QS0NTN19SRUNJUF9JTkZPOworKwkJaTJkX1BLQ1M3X1NJR05FRDsKKysJCWkyZF9QS0NTN19TSUdORVJfSU5GTzsKKysJCWkyZF9QS0NTN19TSUdOX0VOVkVMT1BFOworKwkJaTJkX1BLQ1M3X2JpbzsKKysJCWkyZF9QS0NTN19mcDsKKysJCWkyZF9Qcml2YXRlS2V5OworKwkJaTJkX1B1YmxpY0tleTsKKysJCWkyZF9SU0FQcml2YXRlS2V5OworKwkJaTJkX1JTQVByaXZhdGVLZXlfYmlvOworKwkJaTJkX1JTQVByaXZhdGVLZXlfZnA7CisrCQlpMmRfUlNBUHVibGljS2V5OworKwkJaTJkX1g1MDk7CisrCQlpMmRfWDUwOV9BTEdPUjsKKysJCWkyZF9YNTA5X0FUVFJJQlVURTsKKysJCWkyZF9YNTA5X0NJTkY7CisrCQlpMmRfWDUwOV9DUkw7CisrCQlpMmRfWDUwOV9DUkxfSU5GTzsKKysJCWkyZF9YNTA5X0NSTF9iaW87CisrCQlpMmRfWDUwOV9DUkxfZnA7CisrCQlpMmRfWDUwOV9FWFRFTlNJT047CisrCQlpMmRfWDUwOV9OQU1FOworKwkJaTJkX1g1MDlfTkFNRV9FTlRSWTsKKysJCWkyZF9YNTA5X1BLRVk7CisrCQlpMmRfWDUwOV9QVUJLRVk7CisrCQlpMmRfWDUwOV9SRVE7CisrCQlpMmRfWDUwOV9SRVFfSU5GTzsKKysJCWkyZF9YNTA5X1JFUV9iaW87CisrCQlpMmRfWDUwOV9SRVFfZnA7CisrCQlpMmRfWDUwOV9SRVZPS0VEOworKwkJaTJkX1g1MDlfU0lHOworKwkJaTJkX1g1MDlfVkFMOworKwkJaTJkX1g1MDlfYmlvOworKwkJaTJkX1g1MDlfZnA7CisrCQlpZGVhX2NiY19lbmNyeXB0OworKwkJaWRlYV9jZmI2NF9lbmNyeXB0OworKwkJaWRlYV9lY2JfZW5jcnlwdDsKKysJCWlkZWFfZW5jcnlwdDsKKysJCWlkZWFfb2ZiNjRfZW5jcnlwdDsKKysJCWlkZWFfb3B0aW9uczsKKysJCWlkZWFfc2V0X2RlY3J5cHRfa2V5OworKwkJaWRlYV9zZXRfZW5jcnlwdF9rZXk7CisrCQlsaF9kZWxldGU7CisrCQlsaF9kb2FsbDsKKysJCWxoX2RvYWxsX2FyZzsKKysJCWxoX2ZyZWU7CisrCQlsaF9pbnNlcnQ7CisrCQlsaF9uZXc7CisrCQlsaF9ub2RlX3N0YXRzOworKwkJbGhfbm9kZV9zdGF0c19iaW87CisrCQlsaF9ub2RlX3VzYWdlX3N0YXRzOworKwkJbGhfbm9kZV91c2FnZV9zdGF0c19iaW87CisrCQlsaF9yZXRyaWV2ZTsKKysJCWxoX3N0YXRzOworKwkJbGhfc3RhdHNfYmlvOworKwkJbGhfc3RyaGFzaDsKKysJCXNrX2RlbGV0ZTsKKysJCXNrX2RlbGV0ZV9wdHI7CisrCQlza19kdXA7CisrCQlza19maW5kOworKwkJc2tfZnJlZTsKKysJCXNrX2luc2VydDsKKysJCXNrX25ldzsKKysJCXNrX3BvcDsKKysJCXNrX3BvcF9mcmVlOworKwkJc2tfcHVzaDsKKysJCXNrX3NldF9jbXBfZnVuYzsKKysJCXNrX3NoaWZ0OworKwkJc2tfdW5zaGlmdDsKKysJCXNrX3plcm87CisrCQlCSU9fZl9uYmlvX3Rlc3Q7CisrCQlBU04xX1RZUEVfZ2V0OworKwkJQVNOMV9UWVBFX3NldDsKKysJCVBLQ1M3X2NvbnRlbnRfZnJlZTsKKysJCUVSUl9sb2FkX1BLQ1M3X3N0cmluZ3M7CisrCQlYNTA5X2ZpbmRfYnlfaXNzdWVyX2FuZF9zZXJpYWw7CisrCQlYNTA5X2ZpbmRfYnlfc3ViamVjdDsKKysJCVBLQ1M3X2N0cmw7CisrCQlQS0NTN19zZXRfdHlwZTsKKysJCVBLQ1M3X3NldF9jb250ZW50OworKwkJUEtDUzdfU0lHTkVSX0lORk9fc2V0OworKwkJUEtDUzdfYWRkX3NpZ25lcjsKKysJCVBLQ1M3X2FkZF9jZXJ0aWZpY2F0ZTsKKysJCVBLQ1M3X2FkZF9jcmw7CisrCQlQS0NTN19jb250ZW50X25ldzsKKysJCVBLQ1M3X2RhdGFTaWduOworKwkJUEtDUzdfZGF0YVZlcmlmeTsKKysJCVBLQ1M3X2RhdGFJbml0OworKwkJUEtDUzdfYWRkX3NpZ25hdHVyZTsKKysJCVBLQ1M3X2NlcnRfZnJvbV9zaWduZXJfaW5mbzsKKysJCVBLQ1M3X2dldF9zaWduZXJfaW5mbzsKKysJCUVWUF9kZWxldGVfYWxpYXM7CisrCQlFVlBfbWRjMjsKKysJCVBFTV9yZWFkX2Jpb19SU0FQdWJsaWNLZXk7CisrCQlQRU1fd3JpdGVfYmlvX1JTQVB1YmxpY0tleTsKKysJCWQyaV9SU0FQdWJsaWNLZXlfYmlvOworKwkJaTJkX1JTQVB1YmxpY0tleV9iaW87CisrCQlQRU1fcmVhZF9SU0FQdWJsaWNLZXk7CisrCQlQRU1fd3JpdGVfUlNBUHVibGljS2V5OworKwkJZDJpX1JTQVB1YmxpY0tleV9mcDsKKysJCWkyZF9SU0FQdWJsaWNLZXlfZnA7CisrCQlCSU9fY29weV9uZXh0X3JldHJ5OworKwkJUlNBX2ZsYWdzOworKwkJWDUwOV9TVE9SRV9hZGRfY3JsOworKwkJWDUwOV9sb2FkX2NybF9maWxlOworKwkJRVZQX3JjMl80MF9jYmM7CisrCQlFVlBfcmM0XzQwOworKwkJRVZQX0NJUEhFUl9DVFhfaW5pdDsKKysJCUhNQUM7CisrCQlITUFDX0luaXQ7CisrCQlITUFDX1VwZGF0ZTsKKysJCUhNQUNfRmluYWw7CisrCQlFUlJfZ2V0X25leHRfZXJyb3JfbGlicmFyeTsKKysJCUVWUF9QS0VZX2NtcF9wYXJhbWV0ZXJzOworKwkJSE1BQ19jbGVhbnVwOworKwkJQklPX3B0cl9jdHJsOworKwkJQklPX25ld19maWxlX2ludGVybmFsOworKwkJQklPX25ld19mcF9pbnRlcm5hbDsKKysJCUJJT19zX2ZpbGVfaW50ZXJuYWw7CisrCQlCTl9CTElORElOR19jb252ZXJ0OworKwkJQk5fQkxJTkRJTkdfaW52ZXJ0OworKwkJQk5fQkxJTkRJTkdfdXBkYXRlOworKwkJUlNBX2JsaW5kaW5nX29uOworKwkJUlNBX2JsaW5kaW5nX29mZjsKKysJCWkydF9BU04xX09CSkVDVDsKKysJCUJOX0JMSU5ESU5HX25ldzsKKysJCUJOX0JMSU5ESU5HX2ZyZWU7CisrCQlFVlBfY2FzdDVfY2JjOworKwkJRVZQX2Nhc3Q1X2NmYjY0OworKwkJRVZQX2Nhc3Q1X2VjYjsKKysJCUVWUF9jYXN0NV9vZmI7CisrCQlCRl9kZWNyeXB0OworKwkJQ0FTVF9zZXRfa2V5OworKwkJQ0FTVF9lbmNyeXB0OworKwkJQ0FTVF9kZWNyeXB0OworKwkJQ0FTVF9lY2JfZW5jcnlwdDsKKysJCUNBU1RfY2JjX2VuY3J5cHQ7CisrCQlDQVNUX2NmYjY0X2VuY3J5cHQ7CisrCQlDQVNUX29mYjY0X2VuY3J5cHQ7CisrCQlSQzJfZGVjcnlwdDsKKysJCU9CSl9jcmVhdGVfb2JqZWN0czsKKysJCUJOX2V4cDsKKysJCUJOX211bF93b3JkOworKwkJQk5fc3ViX3dvcmQ7CisrCQlCTl9kZWMyYm47CisrCQlCTl9ibjJkZWM7CisrCQlCSU9fZ2hibl9jdHJsOworKwkJQ1JZUFRPX2ZyZWVfZXhfZGF0YTsKKysJCUNSWVBUT19nZXRfZXhfZGF0YTsKKysJCUNSWVBUT19zZXRfZXhfZGF0YTsKKysJCUVSUl9sb2FkX0NSWVBUT19zdHJpbmdzOworKwkJRVJSX2xvYWRfQ1JZUFRPbGliX3N0cmluZ3M7CisrCQlFVlBfUEtFWV9iaXRzOworKwkJTUQ1X1RyYW5zZm9ybTsKKysJCVNIQTFfVHJhbnNmb3JtOworKwkJU0hBX1RyYW5zZm9ybTsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9jaGFpbjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQ7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3I7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3JfZGVwdGg7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9jZXJ0OworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NoYWluOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2Vycm9yOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2V4X2RhdGE7CisrCQlDUllQVE9fZHVwX2V4X2RhdGE7CisrCQlDUllQVE9fZ2V0X25ld19sb2NraWQ7CisrCQlDUllQVE9fbmV3X2V4X2RhdGE7CisrCQlSU0Ffc2V0X2V4X2RhdGE7CisrCQlSU0FfZ2V0X2V4X2RhdGE7CisrCQlSU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzE7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8yOworKwkJUlNBX3BhZGRpbmdfYWRkX1NTTHYyMzsKKysJCVJTQV9wYWRkaW5nX2FkZF9ub25lOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8xOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfbm9uZTsKKysJCWJuX2FkZF93b3JkczsKKysJCWQyaV9OZXRzY2FwZV9SU0FfMjsKKysJCUNSWVBUT19nZXRfZXhfbmV3X2luZGV4OworKwkJUklQRU1EMTYwX0luaXQ7CisrCQlSSVBFTUQxNjBfVXBkYXRlOworKwkJUklQRU1EMTYwX0ZpbmFsOworKwkJUklQRU1EMTYwOworKwkJUklQRU1EMTYwX1RyYW5zZm9ybTsKKysJCVJDNV8zMl9zZXRfa2V5OworKwkJUkM1XzMyX2VjYl9lbmNyeXB0OworKwkJUkM1XzMyX2VuY3J5cHQ7CisrCQlSQzVfMzJfZGVjcnlwdDsKKysJCVJDNV8zMl9jYmNfZW5jcnlwdDsKKysJCVJDNV8zMl9jZmI2NF9lbmNyeXB0OworKwkJUkM1XzMyX29mYjY0X2VuY3J5cHQ7CisrCQlCTl9ibjJtcGk7CisrCQlCTl9tcGkyYm47CisrCQlBU04xX0JJVF9TVFJJTkdfZ2V0X2JpdDsKKysJCUFTTjFfQklUX1NUUklOR19zZXRfYml0OworKwkJQklPX2dldF9leF9kYXRhOworKwkJQklPX2dldF9leF9uZXdfaW5kZXg7CisrCQlCSU9fc2V0X2V4X2RhdGE7CisrCQlYNTA5djNfZ2V0X2tleV91c2FnZTsKKysJCVg1MDl2M19zZXRfa2V5X3VzYWdlOworKwkJYTJpX1g1MDl2M19rZXlfdXNhZ2U7CisrCQlpMmFfWDUwOXYzX2tleV91c2FnZTsKKysJCUVWUF9QS0VZX2RlY3J5cHQ7CisrCQlFVlBfUEtFWV9lbmNyeXB0OworKwkJUEtDUzdfUkVDSVBfSU5GT19zZXQ7CisrCQlQS0NTN19hZGRfcmVjaXBpZW50OworKwkJUEtDUzdfYWRkX3JlY2lwaWVudF9pbmZvOworKwkJUEtDUzdfc2V0X2NpcGhlcjsKKysJCUFTTjFfVFlQRV9nZXRfaW50X29jdGV0c3RyaW5nOworKwkJQVNOMV9UWVBFX2dldF9vY3RldHN0cmluZzsKKysJCUFTTjFfVFlQRV9zZXRfaW50X29jdGV0c3RyaW5nOworKwkJQVNOMV9UWVBFX3NldF9vY3RldHN0cmluZzsKKysJCUFTTjFfVVRDVElNRV9zZXRfc3RyaW5nOworKwkJRVJSX2FkZF9lcnJvcl9kYXRhOworKwkJRVJSX3NldF9lcnJvcl9kYXRhOworKwkJRVZQX0NJUEhFUl9hc24xX3RvX3BhcmFtOworKwkJRVZQX0NJUEhFUl9wYXJhbV90b19hc24xOworKwkJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdjsKKysJCUVWUF9DSVBIRVJfc2V0X2FzbjFfaXY7CisrCQlFVlBfcmM1XzMyXzEyXzE2X2NiYzsKKysJCUVWUF9yYzVfMzJfMTJfMTZfY2ZiNjQ7CisrCQlFVlBfcmM1XzMyXzEyXzE2X2VjYjsKKysJCUVWUF9yYzVfMzJfMTJfMTZfb2ZiOworKwkJYXNuMV9hZGRfZXJyb3I7CisrCQlkMmlfQVNOMV9CTVBTVFJJTkc7CisrCQlpMmRfQVNOMV9CTVBTVFJJTkc7CisrCQlCSU9fZl9iZXI7CisrCQlCTl9pbml0OworKwkJQ09NUF9DVFhfbmV3OworKwkJQ09NUF9DVFhfZnJlZTsKKysJCUNPTVBfQ1RYX2NvbXByZXNzX2Jsb2NrOworKwkJQ09NUF9DVFhfZXhwYW5kX2Jsb2NrOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X25ld19pbmRleDsKKysJCU9CSl9OQU1FX2FkZDsKKysJCUJJT19zb2NrZXRfbmJpbzsKKysJCUVWUF9yYzJfNjRfY2JjOworKwkJT0JKX05BTUVfY2xlYW51cDsKKysJCU9CSl9OQU1FX2dldDsKKysJCU9CSl9OQU1FX2luaXQ7CisrCQlPQkpfTkFNRV9uZXdfaW5kZXg7CisrCQlPQkpfTkFNRV9yZW1vdmU7CisrCQlCTl9NT05UX0NUWF9jb3B5OworKwkJQklPX25ld19zb2NrczRhX2Nvbm5lY3Q7CisrCQlCSU9fc19zb2NrczRhX2Nvbm5lY3Q7CisrCQlQUk9YWV9zZXRfY29ubmVjdF9tb2RlOworKwkJUkFORF9TU0xlYXk7CisrCQlSQU5EX3NldF9yYW5kX21ldGhvZDsKKysJCVJTQV9tZW1vcnlfbG9jazsKKysJCWJuX3N1Yl93b3JkczsKKysJCWJuX211bF9ub3JtYWw7CisrCQlibl9tdWxfY29tYmE4OworKwkJYm5fbXVsX2NvbWJhNDsKKysJCWJuX3Nxcl9ub3JtYWw7CisrCQlibl9zcXJfY29tYmE4OworKwkJYm5fc3FyX2NvbWJhNDsKKysJCWJuX2NtcF93b3JkczsKKysJCWJuX211bF9yZWN1cnNpdmU7CisrCQlibl9tdWxfcGFydF9yZWN1cnNpdmU7CisrCQlibl9zcXJfcmVjdXJzaXZlOworKwkJYm5fbXVsX2xvd19ub3JtYWw7CisrCQlCTl9SRUNQX0NUWF9pbml0OworKwkJQk5fUkVDUF9DVFhfbmV3OworKwkJQk5fUkVDUF9DVFhfZnJlZTsKKysJCUJOX1JFQ1BfQ1RYX3NldDsKKysJCUJOX21vZF9tdWxfcmVjaXByb2NhbDsKKysJCUJOX21vZF9leHBfcmVjcDsKKysJCUJOX2Rpdl9yZWNwOworKwkJQk5fQ1RYX2luaXQ7CisrCQlCTl9NT05UX0NUWF9pbml0OworKwkJUkFORF9nZXRfcmFuZF9tZXRob2Q7CisrCQlQS0NTN19hZGRfYXR0cmlidXRlOworKwkJUEtDUzdfYWRkX3NpZ25lZF9hdHRyaWJ1dGU7CisrCQlQS0NTN19kaWdlc3RfZnJvbV9hdHRyaWJ1dGVzOworKwkJUEtDUzdfZ2V0X2F0dHJpYnV0ZTsKKysJCVBLQ1M3X2dldF9pc3N1ZXJfYW5kX3NlcmlhbDsKKysJCVBLQ1M3X2dldF9zaWduZWRfYXR0cmlidXRlOworKwkJQ09NUF9jb21wcmVzc19ibG9jazsKKysJCUNPTVBfZXhwYW5kX2Jsb2NrOworKwkJQ09NUF9ybGU7CisrCQlDT01QX3psaWI7CisrCQltc190aW1lX2RpZmY7CisrCQltc190aW1lX25ldzsKKysJCW1zX3RpbWVfZnJlZTsKKysJCW1zX3RpbWVfY21wOworKwkJbXNfdGltZV9nZXQ7CisrCQlQS0NTN19zZXRfYXR0cmlidXRlczsKKysJCVBLQ1M3X3NldF9zaWduZWRfYXR0cmlidXRlczsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZTsKKysJCVg1MDlfQVRUUklCVVRFX2R1cDsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX2NoZWNrOworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfcHJpbnQ7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXQ7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXRfc3RyaW5nOworKwkJQVNOMV9USU1FX3ByaW50OworKwkJQkFTSUNfQ09OU1RSQUlOVFNfZnJlZTsKKysJCUJBU0lDX0NPTlNUUkFJTlRTX25ldzsKKysJCUVSUl9sb2FkX1g1MDlWM19zdHJpbmdzOworKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9mcmVlOworKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9uZXc7CisrCQlPQkpfdHh0Mm9iajsKKysJCVBFTV9yZWFkX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fcmVhZF9OU19DRVJUX1NFUTsKKysJCVBFTV9yZWFkX2Jpb19ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJUEVNX3JlYWRfYmlvX05TX0NFUlRfU0VROworKwkJUEVNX3dyaXRlX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fd3JpdGVfTlNfQ0VSVF9TRVE7CisrCQlQRU1fd3JpdGVfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fd3JpdGVfYmlvX05TX0NFUlRfU0VROworKwkJWDUwOVYzX0VYVF9hZGQ7CisrCQlYNTA5VjNfRVhUX2FkZF9hbGlhczsKKysJCVg1MDlWM19FWFRfYWRkX2NvbmY7CisrCQlYNTA5VjNfRVhUX2NsZWFudXA7CisrCQlYNTA5VjNfRVhUX2NvbmY7CisrCQlYNTA5VjNfRVhUX2NvbmZfbmlkOworKwkJWDUwOVYzX0VYVF9nZXQ7CisrCQlYNTA5VjNfRVhUX2dldF9uaWQ7CisrCQlYNTA5VjNfRVhUX3ByaW50OworKwkJWDUwOVYzX0VYVF9wcmludF9mcDsKKysJCVg1MDlWM19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKKysJCVg1MDlWM19hZGRfdmFsdWU7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX2Jvb2w7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX2ludDsKKysJCVg1MDlWM19jb25mX2ZyZWU7CisrCQlYNTA5VjNfZ2V0X3ZhbHVlX2Jvb2w7CisrCQlYNTA5VjNfZ2V0X3ZhbHVlX2ludDsKKysJCVg1MDlWM19wYXJzZV9saXN0OworKwkJZDJpX0FTTjFfR0VORVJBTElaRURUSU1FOworKwkJZDJpX0FTTjFfVElNRTsKKysJCWQyaV9CQVNJQ19DT05TVFJBSU5UUzsKKysJCWQyaV9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJZDJpX2V4dF9rdTsKKysJCWV4dF9rdV9mcmVlOworKwkJZXh0X2t1X25ldzsKKysJCWkyZF9BU04xX0dFTkVSQUxJWkVEVElNRTsKKysJCWkyZF9BU04xX1RJTUU7CisrCQlpMmRfQkFTSUNfQ09OU1RSQUlOVFM7CisrCQlpMmRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCWkyZF9leHRfa3U7CisrCQlFVlBfTURfQ1RYX2NvcHk7CisrCQlpMmRfQVNOMV9FTlVNRVJBVEVEOworKwkJZDJpX0FTTjFfRU5VTUVSQVRFRDsKKysJCUFTTjFfRU5VTUVSQVRFRF9zZXQ7CisrCQlBU04xX0VOVU1FUkFURURfZ2V0OworKwkJQk5fdG9fQVNOMV9FTlVNRVJBVEVEOworKwkJQVNOMV9FTlVNRVJBVEVEX3RvX0JOOworKwkJaTJhX0FTTjFfRU5VTUVSQVRFRDsKKysJCWEyaV9BU04xX0VOVU1FUkFURUQ7CisrCQlpMmRfR0VORVJBTF9OQU1FOworKwkJZDJpX0dFTkVSQUxfTkFNRTsKKysJCUdFTkVSQUxfTkFNRV9uZXc7CisrCQlHRU5FUkFMX05BTUVfZnJlZTsKKysJCUdFTkVSQUxfTkFNRVNfbmV3OworKwkJR0VORVJBTF9OQU1FU19mcmVlOworKwkJZDJpX0dFTkVSQUxfTkFNRVM7CisrCQlpMmRfR0VORVJBTF9OQU1FUzsKKysJCWkydl9HRU5FUkFMX05BTUVTOworKwkJaTJzX0FTTjFfT0NURVRfU1RSSU5HOworKwkJczJpX0FTTjFfT0NURVRfU1RSSU5HOworKwkJWDUwOVYzX0VYVF9jaGVja19jb25mOworKwkJaGV4X3RvX3N0cmluZzsKKysJCXN0cmluZ190b19oZXg7CisrCQlERVNfZWRlM19jYmNtX2VuY3J5cHQ7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUDsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVA7CisrCQlYNTA5X0NSTF9wcmludF9mcDsKKysJCVg1MDlfQ1JMX3ByaW50OworKwkJaTJ2X0dFTkVSQUxfTkFNRTsKKysJCXYyaV9HRU5FUkFMX05BTUU7CisrCQlpMmRfUEtFWV9VU0FHRV9QRVJJT0Q7CisrCQlkMmlfUEtFWV9VU0FHRV9QRVJJT0Q7CisrCQlQS0VZX1VTQUdFX1BFUklPRF9uZXc7CisrCQlQS0VZX1VTQUdFX1BFUklPRF9mcmVlOworKwkJdjJpX0dFTkVSQUxfTkFNRVM7CisrCQlpMnNfQVNOMV9JTlRFR0VSOworKwkJWDUwOVYzX0VYVF9kMmk7CisrCQluYW1lX2NtcDsKKysJCXN0cl9kdXA7CisrCQlpMnNfQVNOMV9FTlVNRVJBVEVEOworKwkJaTJzX0FTTjFfRU5VTUVSQVRFRF9UQUJMRTsKKysJCUJJT19zX2xvZzsKKysJCUJJT19mX3JlbGlhYmxlOworKwkJUEtDUzdfZGF0YUZpbmFsOworKwkJUEtDUzdfZGF0YURlY29kZTsKKysJCVg1MDlWM19FWFRfQ1JMX2FkZF9jb25mOworKwkJQk5fc2V0X3BhcmFtczsKKysJCUJOX2dldF9wYXJhbXM7CisrCQlCSU9fZ2V0X2V4X251bTsKKysJCUJJT19zZXRfZXhfZnJlZV9mdW5jOworKwkJRVZQX3JpcGVtZDE2MDsKKysJCUFTTjFfVElNRV9zZXQ7CisrCQlpMmRfQVVUSE9SSVRZX0tFWUlEOworKwkJZDJpX0FVVEhPUklUWV9LRVlJRDsKKysJCUFVVEhPUklUWV9LRVlJRF9uZXc7CisrCQlBVVRIT1JJVFlfS0VZSURfZnJlZTsKKysJCUFTTjFfc2VxX3VucGFjazsKKysJCUFTTjFfc2VxX3BhY2s7CisrCQlBU04xX3VucGFja19zdHJpbmc7CisrCQlBU04xX3BhY2tfc3RyaW5nOworKwkJUEtDUzEyX3BhY2tfc2FmZWJhZzsKKysJCVBLQ1MxMl9NQUtFX0tFWUJBRzsKKysJCVBLQ1M4X2VuY3J5cHQ7CisrCQlQS0NTMTJfTUFLRV9TSEtFWUJBRzsKKysJCVBLQ1MxMl9wYWNrX3A3ZGF0YTsKKysJCVBLQ1MxMl9wYWNrX3A3ZW5jZGF0YTsKKysJCVBLQ1MxMl9hZGRfbG9jYWxrZXlpZDsKKysJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX2FzYzsKKysJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX3VuaTsKKysJCVBLQ1MxMl9nZXRfZnJpZW5kbHluYW1lOworKwkJUEtDUzEyX3BiZV9jcnlwdDsKKysJCVBLQ1MxMl9kZWNyeXB0X2QyaTsKKysJCVBLQ1MxMl9pMmRfZW5jcnlwdDsKKysJCVBLQ1MxMl9pbml0OworKwkJUEtDUzEyX2tleV9nZW5fYXNjOworKwkJUEtDUzEyX2tleV9nZW5fdW5pOworKwkJUEtDUzEyX2dlbl9tYWM7CisrCQlQS0NTMTJfdmVyaWZ5X21hYzsKKysJCVBLQ1MxMl9zZXRfbWFjOworKwkJUEtDUzEyX3NldHVwX21hYzsKKysJCU9QRU5TU0xfYXNjMnVuaTsKKysJCU9QRU5TU0xfdW5pMmFzYzsKKysJCWkyZF9QS0NTMTJfQkFHUzsKKysJCVBLQ1MxMl9CQUdTX25ldzsKKysJCWQyaV9QS0NTMTJfQkFHUzsKKysJCVBLQ1MxMl9CQUdTX2ZyZWU7CisrCQlpMmRfUEtDUzEyOworKwkJZDJpX1BLQ1MxMjsKKysJCVBLQ1MxMl9uZXc7CisrCQlQS0NTMTJfZnJlZTsKKysJCWkyZF9QS0NTMTJfTUFDX0RBVEE7CisrCQlQS0NTMTJfTUFDX0RBVEFfbmV3OworKwkJZDJpX1BLQ1MxMl9NQUNfREFUQTsKKysJCVBLQ1MxMl9NQUNfREFUQV9mcmVlOworKwkJaTJkX1BLQ1MxMl9TQUZFQkFHOworKwkJUEtDUzEyX1NBRkVCQUdfbmV3OworKwkJZDJpX1BLQ1MxMl9TQUZFQkFHOworKwkJUEtDUzEyX1NBRkVCQUdfZnJlZTsKKysJCUVSUl9sb2FkX1BLQ1MxMl9zdHJpbmdzOworKwkJUEtDUzEyX1BCRV9hZGQ7CisrCQlQS0NTOF9hZGRfa2V5dXNhZ2U7CisrCQlQS0NTMTJfZ2V0X2F0dHJfZ2VuOworKwkJUEtDUzEyX3BhcnNlOworKwkJUEtDUzEyX2NyZWF0ZTsKKysJCWkyZF9QS0NTMTJfYmlvOworKwkJaTJkX1BLQ1MxMl9mcDsKKysJCWQyaV9QS0NTMTJfYmlvOworKwkJZDJpX1BLQ1MxMl9mcDsKKysJCWkyZF9QQkVQQVJBTTsKKysJCVBCRVBBUkFNX25ldzsKKysJCWQyaV9QQkVQQVJBTTsKKysJCVBCRVBBUkFNX2ZyZWU7CisrCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBLQ1M4X1BSSVZfS0VZX0lORk9fbmV3OworKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQS0NTOF9QUklWX0tFWV9JTkZPX2ZyZWU7CisrCQlFVlBfUEtDUzgyUEtFWTsKKysJCUVWUF9QS0VZMlBLQ1M4OworKwkJUEtDUzhfc2V0X2Jyb2tlbjsKKysJCUVWUF9QQkVfQUxHT1JfQ2lwaGVySW5pdDsKKysJCUVWUF9QQkVfYWxnX2FkZDsKKysJCVBLQ1M1X3BiZV9zZXQ7CisrCQlFVlBfUEJFX2NsZWFudXA7CisrCQlpMmRfU1hORVQ7CisrCQlkMmlfU1hORVQ7CisrCQlTWE5FVF9uZXc7CisrCQlTWE5FVF9mcmVlOworKwkJaTJkX1NYTkVUSUQ7CisrCQlkMmlfU1hORVRJRDsKKysJCVNYTkVUSURfbmV3OworKwkJU1hORVRJRF9mcmVlOworKwkJRFNBX1NJR19uZXc7CisrCQlEU0FfU0lHX2ZyZWU7CisrCQlEU0FfZG9fc2lnbjsKKysJCURTQV9kb192ZXJpZnk7CisrCQlkMmlfRFNBX1NJRzsKKysJCWkyZF9EU0FfU0lHOworKwkJaTJkX0FTTjFfVklTSUJMRVNUUklORzsKKysJCWQyaV9BU04xX1ZJU0lCTEVTVFJJTkc7CisrCQlpMmRfQVNOMV9VVEY4U1RSSU5HOworKwkJZDJpX0FTTjFfVVRGOFNUUklORzsKKysJCWkyZF9ESVJFQ1RPUllTVFJJTkc7CisrCQlkMmlfRElSRUNUT1JZU1RSSU5HOworKwkJaTJkX0RJU1BMQVlURVhUOworKwkJZDJpX0RJU1BMQVlURVhUOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDk7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOTsKKysJCWkyZF9QQktERjJQQVJBTTsKKysJCVBCS0RGMlBBUkFNX25ldzsKKysJCWQyaV9QQktERjJQQVJBTTsKKysJCVBCS0RGMlBBUkFNX2ZyZWU7CisrCQlpMmRfUEJFMlBBUkFNOworKwkJUEJFMlBBUkFNX25ldzsKKysJCWQyaV9QQkUyUEFSQU07CisrCQlQQkUyUEFSQU1fZnJlZTsKKysJCWQyaV9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfR0VORVJBTF9OQU1FOworKwkJZDJpX0FTTjFfU0VUX09GX1NYTkVUSUQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfU1hORVRJRDsKKysJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKKysJCWkyZF9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKKysJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lJTkZPOworKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWUlORk87CisrCQlTWE5FVF9hZGRfaWRfYXNjOworKwkJU1hORVRfYWRkX2lkX3Vsb25nOworKwkJU1hORVRfYWRkX2lkX0lOVEVHRVI7CisrCQlTWE5FVF9nZXRfaWRfYXNjOworKwkJU1hORVRfZ2V0X2lkX3Vsb25nOworKwkJU1hORVRfZ2V0X2lkX0lOVEVHRVI7CisrCQlYNTA5VjNfc2V0X2NvbmZfbGhhc2g7CisrCQlpMmRfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKKysJCUNFUlRJRklDQVRFUE9MSUNJRVNfbmV3OworKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19mcmVlOworKwkJZDJpX0NFUlRJRklDQVRFUE9MSUNJRVM7CisrCQlpMmRfUE9MSUNZSU5GTzsKKysJCVBPTElDWUlORk9fbmV3OworKwkJZDJpX1BPTElDWUlORk87CisrCQlQT0xJQ1lJTkZPX2ZyZWU7CisrCQlpMmRfUE9MSUNZUVVBTElORk87CisrCQlQT0xJQ1lRVUFMSU5GT19uZXc7CisrCQlkMmlfUE9MSUNZUVVBTElORk87CisrCQlQT0xJQ1lRVUFMSU5GT19mcmVlOworKwkJaTJkX1VTRVJOT1RJQ0U7CisrCQlVU0VSTk9USUNFX25ldzsKKysJCWQyaV9VU0VSTk9USUNFOworKwkJVVNFUk5PVElDRV9mcmVlOworKwkJaTJkX05PVElDRVJFRjsKKysJCU5PVElDRVJFRl9uZXc7CisrCQlkMmlfTk9USUNFUkVGOworKwkJTk9USUNFUkVGX2ZyZWU7CisrCQlYNTA5VjNfZ2V0X3N0cmluZzsKKysJCVg1MDlWM19nZXRfc2VjdGlvbjsKKysJCVg1MDlWM19zdHJpbmdfZnJlZTsKKysJCVg1MDlWM19zZWN0aW9uX2ZyZWU7CisrCQlYNTA5VjNfc2V0X2N0eDsKKysJCXMyaV9BU04xX0lOVEVHRVI7CisrCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2Z1bmN0aW9uczsKKysJCUNSWVBUT19tYWxsb2NfbG9ja2VkOworKwkJQ1JZUFRPX2ZyZWVfbG9ja2VkOworKwkJQk5fbW9kX2V4cDJfbW9udDsKKysJCUVSUl9nZXRfZXJyb3JfbGluZV9kYXRhOworKwkJRVJSX3BlZWtfZXJyb3JfbGluZV9kYXRhOworKwkJUEtDUzEyX1BCRV9rZXlpdmdlbjsKKysJCVg1MDlfQUxHT1JfZHVwOworKwkJZDJpX0FTTjFfU0VUX09GX0RJU1RfUE9JTlQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKKysJCWkyZF9DUkxfRElTVF9QT0lOVFM7CisrCQlDUkxfRElTVF9QT0lOVFNfbmV3OworKwkJQ1JMX0RJU1RfUE9JTlRTX2ZyZWU7CisrCQlkMmlfQ1JMX0RJU1RfUE9JTlRTOworKwkJaTJkX0RJU1RfUE9JTlQ7CisrCQlESVNUX1BPSU5UX25ldzsKKysJCWQyaV9ESVNUX1BPSU5UOworKwkJRElTVF9QT0lOVF9mcmVlOworKwkJaTJkX0RJU1RfUE9JTlRfTkFNRTsKKysJCURJU1RfUE9JTlRfTkFNRV9uZXc7CisrCQlESVNUX1BPSU5UX05BTUVfZnJlZTsKKysJCWQyaV9ESVNUX1BPSU5UX05BTUU7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX3VjaGFyOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOworKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfVFlQRTsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0VYVEVOU0lPTjsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X05BTUVfRU5UUlk7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKKysJCVg1MDlWM19FWFRfaTJkOworKwkJWDUwOVYzX0VYVF92YWxfcHJuOworKwkJWDUwOVYzX0VYVF9hZGRfbGlzdDsKKysJCUVWUF9DSVBIRVJfdHlwZTsKKysJCUVWUF9QQkVfQ2lwaGVySW5pdDsKKysJCVg1MDlWM19hZGRfdmFsdWVfYm9vbF9uZjsKKysJCWQyaV9BU04xX1VJTlRFR0VSOworKwkJc2tfdmFsdWU7CisrCQlza19udW07CisrCQlza19zZXQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9SRVZPS0VEOworKwkJc2tfc29ydDsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BTEdPUjsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0NSTDsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0FMR09SOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQ1JMOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1NJR05FUl9JTkZPOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1JFQ0lQX0lORk87CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKKysJCVBLQ1M1X1BCRV9hZGQ7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M4OworKwkJaTJkX1BLQ1M4X2ZwOworKwkJUEVNX3JlYWRfYmlvX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fcmVhZF9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKKysJCWQyaV9QS0NTOF9iaW87CisrCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19mcDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV93cml0ZV9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX1BLQ1M4OworKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOworKwkJZDJpX1BLQ1M4X2ZwOworKwkJUEVNX3dyaXRlX1BLQ1M4OworKwkJUEVNX3JlYWRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX1A4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fcmVhZF9iaW9fUEtDUzg7CisrCQlQRU1fd3JpdGVfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV93cml0ZV9QOF9QUklWX0tFWV9JTkZPOworKwkJUEtDUzVfUEJFX2tleWl2Z2VuOworKwkJaTJkX1BLQ1M4X2JpbzsKKysJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOworKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOworKwkJQklPX3NfYmlvOworKwkJUEtDUzVfcGJlMl9zZXQ7CisrCQlQS0NTNV9QQktERjJfSE1BQ19TSEExOworKwkJUEtDUzVfdjJfUEJFX2tleWl2Z2VuOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5OworKwkJQklPX2N0cmxfZ2V0X3JlYWRfcmVxdWVzdDsKKysJCUJJT19jdHJsX3BlbmRpbmc7CisrCQlCSU9fY3RybF93cGVuZGluZzsKKysJCUJJT19uZXdfYmlvX3BhaXI7CisrCQlCSU9fY3RybF9nZXRfd3JpdGVfZ3VhcmFudGVlOworKwkJQ1JZUFRPX251bV9sb2NrczsKKysJCUNPTkZfbG9hZF9iaW87CisrCQlDT05GX2xvYWRfZnA7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7CisrCQlQS0NTN19zaWduYXR1cmVWZXJpZnk7CisrCQlSU0Ffc2V0X21ldGhvZDsKKysJCVJTQV9nZXRfbWV0aG9kOworKwkJUlNBX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCVJTQV9jaGVja19rZXk7CisrCQlPQkpfb2JqMnR4dDsKKysJCURTQV9kdXBfREg7CisrCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uczsKKysJCVg1MDlfUkVRX3NldF9leHRlbnNpb25fbmlkczsKKysJCUJJT19ud3JpdGU7CisrCQlYNTA5X1JFUV9leHRlbnNpb25fbmlkOworKwkJQklPX25yZWFkOworKwkJWDUwOV9SRVFfZ2V0X2V4dGVuc2lvbl9uaWRzOworKwkJQklPX253cml0ZTA7CisrCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uc19uaWQ7CisrCQlCSU9fbnJlYWQwOworKwkJWDUwOV9SRVFfYWRkX2V4dGVuc2lvbnM7CisrCQlCSU9fbmV3X21lbV9idWY7CisrCQlESF9zZXRfZXhfZGF0YTsKKysJCURIX3NldF9tZXRob2Q7CisrCQlEU0FfT3BlblNTTDsKKysJCURIX2dldF9leF9kYXRhOworKwkJREhfZ2V0X2V4X25ld19pbmRleDsKKysJCURTQV9uZXdfbWV0aG9kOworKwkJREhfbmV3X21ldGhvZDsKKysJCURIX09wZW5TU0w7CisrCQlEU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCURIX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCURTQV9zZXRfZXhfZGF0YTsKKysJCURIX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCURTQV9nZXRfZXhfZGF0YTsKKysJCVg1MDlWM19FWFRfUkVRX2FkZF9jb25mOworKwkJTkVUU0NBUEVfU1BLSV9wcmludDsKKysJCU5FVFNDQVBFX1NQS0lfc2V0X3B1YmtleTsKKysJCU5FVFNDQVBFX1NQS0lfYjY0X2VuY29kZTsKKysJCU5FVFNDQVBFX1NQS0lfZ2V0X3B1YmtleTsKKysJCU5FVFNDQVBFX1NQS0lfYjY0X2RlY29kZTsKKysJCVVURjhfcHV0YzsKKysJCVVURjhfZ2V0YzsKKysJCVJTQV9udWxsX21ldGhvZDsKKysJCUFTTjFfdGFnMnN0cjsKKysJCUJJT19jdHJsX3Jlc2V0X3JlYWRfcmVxdWVzdDsKKysJCURJU1BMQVlURVhUX25ldzsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX2ZyZWU7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9kMmk7CisrCQlYNTA5X3NldF9leF9kYXRhOworKwkJWDUwOV9yZWplY3Rfc2V0X2JpdF9hc2M7CisrCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X3R4dDsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfTklEOworKwkJWDUwOV9QVVJQT1NFX2dldDA7CisrCQlQRU1fcmVhZF9YNTA5X0FVWDsKKysJCWQyaV9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7CisrCQlQRU1fd3JpdGVfUFVCS0VZOworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX25ldzsKKysJCVg1MDlfQ0VSVF9BVVhfZnJlZTsKKysJCWQyaV9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlYNTA5X3RydXN0X2NsZWFyOworKwkJWDUwOV9UUlVTVF9hZGQ7CisrCQlBU04xX1ZJU0lCTEVTVFJJTkdfbmV3OworKwkJWDUwOV9hbGlhc19zZXQxOworKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfZnJlZTsKKysJCUVWUF9QS0VZX2dldDFfRFNBOworKwkJQVNOMV9CTVBTVFJJTkdfbmV3OworKwkJQVNOMV9tYnN0cmluZ19jb3B5OworKwkJQVNOMV9VVEY4U1RSSU5HX25ldzsKKysJCURTQV9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJQVNOMV9UNjFTVFJJTkdfZnJlZTsKKysJCURTQV9zZXRfbWV0aG9kOworKwkJWDUwOV9nZXRfZXhfZGF0YTsKKysJCUFTTjFfU1RSSU5HX3R5cGU7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X3NuYW1lOworKwkJQVNOMV9USU1FX2ZyZWU7CisrCQlBU04xX09DVEVUX1NUUklOR19jbXA7CisrCQlBU04xX0JJVF9TVFJJTkdfbmV3OworKwkJWDUwOV9nZXRfZXh0X2QyaTsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X0FVWDsKKysJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2tfYXNjOworKwkJQVNOMV9TVFJJTkdfc2V0X2RlZl9tYXNrX2FzYzsKKysJCVBFTV93cml0ZV9iaW9fUlNBX1BVQktFWTsKKysJCUFTTjFfSU5URUdFUl9jbXA7CisrCQlkMmlfUlNBX1BVQktFWV9mcDsKKysJCVg1MDlfdHJ1c3Rfc2V0X2JpdF9hc2M7CisrCQlQRU1fd3JpdGVfYmlvX0RTQV9QVUJLRVk7CisrCQlYNTA5X1NUT1JFX0NUWF9mcmVlOworKwkJRVZQX1BLRVlfc2V0MV9EU0E7CisrCQlpMmRfRFNBX1BVQktFWV9mcDsKKysJCVg1MDlfbG9hZF9jZXJ0X2NybF9maWxlOworKwkJQVNOMV9USU1FX25ldzsKKysJCWkyZF9SU0FfUFVCS0VZOworKwkJWDUwOV9TVE9SRV9DVFhfcHVycG9zZV9pbmhlcml0OworKwkJUEVNX3JlYWRfUlNBX1BVQktFWTsKKysJCWQyaV9YNTA5X0FVWDsKKysJCWkyZF9EU0FfUFVCS0VZOworKwkJWDUwOV9DRVJUX0FVWF9wcmludDsKKysJCVBFTV9yZWFkX0RTQV9QVUJLRVk7CisrCQlpMmRfUlNBX1BVQktFWV9iaW87CisrCQlBU04xX0JJVF9TVFJJTkdfbnVtX2FzYzsKKysJCWkyZF9QVUJLRVk7CisrCQlBU04xX1VUQ1RJTUVfZnJlZTsKKysJCURTQV9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X2lkOworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2ZyZWU7CisrCQlQRU1fcmVhZF9iaW9fUFVCS0VZOworKwkJQVNOMV9TVFJJTkdfc2V0X2J5X05JRDsKKysJCVg1MDlfUFVSUE9TRV9nZXRfaWQ7CisrCQlESVNQTEFZVEVYVF9mcmVlOworKwkJT1RIRVJOQU1FX25ldzsKKysJCVg1MDlfQ0VSVF9BVVhfbmV3OworKwkJWDUwOV9UUlVTVF9jbGVhbnVwOworKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9PQko7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2QyaTsKKysJCVg1MDlfUFVSUE9TRV9nZXQwX25hbWU7CisrCQlQRU1fcmVhZF9QVUJLRVk7CisrCQlpMmRfRFNBX1BVQktFWV9iaW87CisrCQlpMmRfT1RIRVJOQU1FOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZTsKKysJCUFTTjFfQklUX1NUUklOR19zZXRfYXNjOworKwkJWDUwOV9nZXRfZXhfbmV3X2luZGV4OworKwkJQVNOMV9TVFJJTkdfVEFCTEVfY2xlYW51cDsKKysJCVg1MDlfVFJVU1RfZ2V0X2J5X2lkOworKwkJWDUwOV9QVVJQT1NFX2dldF90cnVzdDsKKysJCUFTTjFfU1RSSU5HX2xlbmd0aDsKKysJCWQyaV9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlBU04xX1BSSU5UQUJMRVNUUklOR19uZXc7CisrCQlYNTA5VjNfZ2V0X2QyaTsKKysJCUFTTjFfRU5VTUVSQVRFRF9mcmVlOworKwkJaTJkX1g1MDlfQ0VSVF9BVVg7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfdHJ1c3Q7CisrCQlBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrOworKwkJWDUwOV9TVE9SRV9DVFhfbmV3OworKwkJRVZQX1BLRVlfZ2V0MV9SU0E7CisrCQlESVJFQ1RPUllTVFJJTkdfZnJlZTsKKysJCVBFTV93cml0ZV9YNTA5X0FVWDsKKysJCUFTTjFfT0NURVRfU1RSSU5HX3NldDsKKysJCWQyaV9EU0FfUFVCS0VZX2ZwOworKwkJZDJpX1JTQV9QVUJLRVk7CisrCQlYNTA5X1RSVVNUX2dldDBfbmFtZTsKKysJCVg1MDlfVFJVU1RfZ2V0MDsKKysJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19mcmVlOworKwkJQVNOMV9JQTVTVFJJTkdfbmV3OworKwkJZDJpX0RTQV9QVUJLRVk7CisrCQlYNTA5X2NoZWNrX3B1cnBvc2U7CisrCQlBU04xX0VOVU1FUkFURURfbmV3OworKwkJZDJpX1JTQV9QVUJLRVlfYmlvOworKwkJZDJpX1BVQktFWTsKKysJCVg1MDlfVFJVU1RfZ2V0X3RydXN0OworKwkJWDUwOV9UUlVTVF9nZXRfZmxhZ3M7CisrCQlBU04xX0JNUFNUUklOR19mcmVlOworKwkJQVNOMV9UNjFTVFJJTkdfbmV3OworKwkJQVNOMV9VVENUSU1FX25ldzsKKysJCWkyZF9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7CisrCQlFVlBfUEtFWV9zZXQxX1JTQTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9wdXJwb3NlOworKwkJQVNOMV9JQTVTVFJJTkdfZnJlZTsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9BVVg7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2NvdW50OworKwkJQ1JZUFRPX2FkZF9pbmZvOworKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV90eHQ7CisrCQlBU04xX1NUUklOR19nZXRfZGVmYXVsdF9tYXNrOworKwkJWDUwOV9hbGlhc19nZXQwOworKwkJQVNOMV9TVFJJTkdfZGF0YTsKKysJCWkyZF9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlYNTA5X3RydXN0X3NldF9iaXQ7CisrCQlBU04xX0JJVF9TVFJJTkdfZnJlZTsKKysJCVBFTV9yZWFkX2Jpb19SU0FfUFVCS0VZOworKwkJWDUwOV9hZGQxX3JlamVjdF9vYmplY3Q7CisrCQlYNTA5X2NoZWNrX3RydXN0OworKwkJUEVNX3JlYWRfYmlvX0RTQV9QVUJLRVk7CisrCQlYNTA5X1BVUlBPU0VfYWRkOworKwkJQVNOMV9TVFJJTkdfVEFCTEVfZ2V0OworKwkJQVNOMV9VVEY4U1RSSU5HX2ZyZWU7CisrCQlkMmlfRFNBX1BVQktFWV9iaW87CisrCQlQRU1fd3JpdGVfUlNBX1BVQktFWTsKKysJCWQyaV9PVEhFUk5BTUU7CisrCQlYNTA5X3JlamVjdF9zZXRfYml0OworKwkJUEVNX3dyaXRlX0RTQV9QVUJLRVk7CisrCQlYNTA5X1BVUlBPU0VfZ2V0MF9zbmFtZTsKKysJCUVWUF9QS0VZX3NldDFfREg7CisrCQlBU04xX09DVEVUX1NUUklOR19kdXA7CisrCQlBU04xX0JJVF9TVFJJTkdfc2V0OworKwkJWDUwOV9UUlVTVF9nZXRfY291bnQ7CisrCQlBU04xX0lOVEVHRVJfZnJlZTsKKysJCU9USEVSTkFNRV9mcmVlOworKwkJaTJkX1JTQV9QVUJLRVlfZnA7CisrCQlBU04xX0lOVEVHRVJfZHVwOworKwkJZDJpX1g1MDlfQ0VSVF9BVVg7CisrCQlQRU1fd3JpdGVfYmlvX1BVQktFWTsKKysJCUFTTjFfVklTSUJMRVNUUklOR19mcmVlOworKwkJWDUwOV9QVVJQT1NFX2NsZWFudXA7CisrCQlBU04xX21ic3RyaW5nX25jb3B5OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfbmV3OworKwkJRVZQX1BLRVlfZ2V0MV9ESDsKKysJCUFTTjFfT0NURVRfU1RSSU5HX25ldzsKKysJCUFTTjFfSU5URUdFUl9uZXc7CisrCQlpMmRfWDUwOV9BVVg7CisrCQlBU04xX0JJVF9TVFJJTkdfbmFtZV9wcmludDsKKysJCVg1MDlfY21wOworKwkJQVNOMV9TVFJJTkdfbGVuZ3RoX3NldDsKKysJCURJUkVDVE9SWVNUUklOR19uZXc7CisrCQlYNTA5X2FkZDFfdHJ1c3Rfb2JqZWN0OworKwkJUEtDUzEyX25ld3Bhc3M7CisrCQlTTUlNRV93cml0ZV9QS0NTNzsKKysJCVNNSU1FX3JlYWRfUEtDUzc7CisrCQlERVNfc2V0X2tleV9jaGVja2VkOworKwkJUEtDUzdfdmVyaWZ5OworKwkJUEtDUzdfZW5jcnlwdDsKKysJCURFU19zZXRfa2V5X3VuY2hlY2tlZDsKKysJCVNNSU1FX2NybGZfY29weTsKKysJCWkyZF9BU04xX1BSSU5UQUJMRVNUUklORzsKKysJCVBLQ1M3X2dldDBfc2lnbmVyczsKKysJCVBLQ1M3X2RlY3J5cHQ7CisrCQlTTUlNRV90ZXh0OworKwkJUEtDUzdfc2ltcGxlX3NtaW1lY2FwOworKwkJUEtDUzdfZ2V0X3NtaW1lY2FwOworKwkJUEtDUzdfc2lnbjsKKysJCVBLQ1M3X2FkZF9hdHRyaWJfc21pbWVjYXA7CisrCQlDUllQVE9fZGJnX3NldF9vcHRpb25zOworKwkJQ1JZUFRPX3JlbW92ZV9hbGxfaW5mbzsKKysJCUNSWVBUT19nZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKKysJCUNSWVBUT19pc19tZW1fY2hlY2tfb247CisrCQlDUllQVE9fc2V0X21lbV9kZWJ1Z19mdW5jdGlvbnM7CisrCQlDUllQVE9fcG9wX2luZm87CisrCQlDUllQVE9fcHVzaF9pbmZvXzsKKysJCUNSWVBUT19zZXRfbWVtX2RlYnVnX29wdGlvbnM7CisrCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2YXRlS2V5X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2S2V5X25pZDsKKysJCWQyaV9QS0NTOFByaXZhdGVLZXlfYmlvOworKwkJQVNOMV9OVUxMX2ZyZWU7CisrCQlkMmlfQVNOMV9OVUxMOworKwkJQVNOMV9OVUxMX25ldzsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlfYmlvOworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9mcDsKKysJCWkyZF9BU04xX05VTEw7CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9mcDsKKysJCWQyaV9QS0NTOFByaXZhdGVLZXlfZnA7CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9iaW87CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5SW5mb19mcDsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2JpbzsKKysJCVBFTV9jYjsKKysJCWkyZF9Qcml2YXRlS2V5X2ZwOworKwkJZDJpX1ByaXZhdGVLZXlfYmlvOworKwkJZDJpX1ByaXZhdGVLZXlfZnA7CisrCQlpMmRfUHJpdmF0ZUtleV9iaW87CisrCQlYNTA5X3JlamVjdF9jbGVhcjsKKysJCVg1MDlfVFJVU1Rfc2V0X2RlZmF1bHQ7CisrCQlkMmlfQXV0b1ByaXZhdGVLZXk7CisrCQlYNTA5X0FUVFJJQlVURV9nZXQwX3R5cGU7CisrCQlYNTA5X0FUVFJJQlVURV9zZXQxX2RhdGE7CisrCQlYNTA5YXRfZ2V0X2F0dHI7CisrCQlYNTA5YXRfZ2V0X2F0dHJfY291bnQ7CisrCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9BVFRSSUJVVEVfc2V0MV9vYmplY3Q7CisrCQlYNTA5X0FUVFJJQlVURV9jb3VudDsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9PQko7CisrCQlYNTA5X0FUVFJJQlVURV9nZXQwX29iamVjdDsKKysJCVg1MDlhdF9nZXRfYXR0cl9ieV9OSUQ7CisrCQlYNTA5YXRfYWRkMV9hdHRyOworKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF9kYXRhOworKwkJWDUwOWF0X2RlbGV0ZV9hdHRyOworKwkJWDUwOWF0X2dldF9hdHRyX2J5X09CSjsKKysJCVJBTkRfYWRkOworKwkJQklPX251bWJlcl93cml0dGVuOworKwkJQklPX251bWJlcl9yZWFkOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9jaGFpbjsKKysJCUVSUl9sb2FkX1JBTkRfc3RyaW5nczsKKysJCVJBTkRfcHNldWRvX2J5dGVzOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfTklEOworKwkJWDUwOV9SRVFfZ2V0X2F0dHI7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfTklEOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfT0JKOworKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfT0JKOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfY291bnQ7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHI7CisrCQlYNTA5X1JFUV9kZWxldGVfYXR0cjsKKysJCVg1MDlhdF9hZGQxX2F0dHJfYnlfT0JKOworKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X3R4dDsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV90eHQ7CisrCQlYNTA5YXRfYWRkMV9hdHRyX2J5X3R4dDsKKysJCUJOX3BzZXVkb19yYW5kOworKwkJQk5faXNfcHJpbWVfZmFzdHRlc3Q7CisrCQlCTl9DVFhfZW5kOworKwkJQk5fQ1RYX3N0YXJ0OworKwkJQk5fQ1RYX2dldDsKKysJCUVWUF9QS0VZMlBLQ1M4X2Jyb2tlbjsKKysJCUFTTjFfU1RSSU5HX1RBQkxFX2FkZDsKKysJCUNSWVBUT19kYmdfZ2V0X29wdGlvbnM7CisrCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfbmV3OworKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfb3B0aW9uczsKKysJCURFU19jcnlwdDsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVFfTkVXOworKwkJUEVNX3dyaXRlX1g1MDlfUkVRX05FVzsKKysJCUJJT19jYWxsYmFja19jdHJsOworKwkJUkFORF9lZ2Q7CisrCQlSQU5EX3N0YXR1czsKKysJCWJuX2R1bXAxOworKwkJREVTX2NoZWNrX2tleV9wYXJpdHk7CisrCQlsaF9udW1faXRlbXM7CisrCQlSQU5EX2V2ZW50OworKwkJRFNPX25ldzsKKysJCURTT19uZXdfbWV0aG9kOworKwkJRFNPX2ZyZWU7CisrCQlEU09fZmxhZ3M7CisrCQlEU09fdXA7CisrCQlEU09fc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNPX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCURTT19nZXRfbWV0aG9kOworKwkJRFNPX3NldF9tZXRob2Q7CisrCQlEU09fbG9hZDsKKysJCURTT19iaW5kX3ZhcjsKKysJCURTT19NRVRIT0RfbnVsbDsKKysJCURTT19NRVRIT0Rfb3BlbnNzbDsKKysJCURTT19NRVRIT0RfZGxmY247CisrCQlEU09fTUVUSE9EX3dpbjMyOworKwkJRVJSX2xvYWRfRFNPX3N0cmluZ3M7CisrCQlEU09fTUVUSE9EX2RsOworKwkJTkNPTkZfbG9hZDsKKysJCU5DT05GX2xvYWRfZnA7CisrCQlOQ09ORl9uZXc7CisrCQlOQ09ORl9nZXRfc3RyaW5nOworKwkJTkNPTkZfZnJlZTsKKysJCU5DT05GX2dldF9udW1iZXI7CisrCQlDT05GX2R1bXBfZnA7CisrCQlOQ09ORl9sb2FkX2JpbzsKKysJCU5DT05GX2R1bXBfZnA7CisrCQlOQ09ORl9nZXRfc2VjdGlvbjsKKysJCU5DT05GX2R1bXBfYmlvOworKwkJQ09ORl9kdW1wX2JpbzsKKysJCU5DT05GX2ZyZWVfZGF0YTsKKysJCUNPTkZfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRVJSX2Vycm9yX3N0cmluZ19uOworKwkJQklPX3NucHJpbnRmOworKwkJRFNPX2N0cmw7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3OworKwkJQklPX3ZmcmVlOworKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfSU5URUdFUjsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTMTJfU0FGRUJBRzsKKysJCUFTTjFfVVRDVElNRV9nZXQ7CisrCQlYNTA5X1JFUV9kaWdlc3Q7CisrCQlYNTA5X0NSTF9kaWdlc3Q7CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzc7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aDsKKysJCUVWUF9DSVBIRVJfQ1RYX2N0cmw7CisrCQlCTl9tb2RfZXhwX21vbnRfd29yZDsKKysJCVJBTkRfZWdkX2J5dGVzOworKwkJWDUwOV9SRVFfZ2V0MV9lbWFpbDsKKysJCVg1MDlfZ2V0MV9lbWFpbDsKKysJCVg1MDlfZW1haWxfZnJlZTsKKysJCWkyZF9SU0FfTkVUOworKwkJZDJpX1JTQV9ORVRfMjsKKysJCWQyaV9SU0FfTkVUOworKwkJRFNPX2JpbmRfZnVuYzsKKysJCUNSWVBUT19nZXRfbmV3X2R5bmxvY2tpZDsKKysJCXNrX25ld19udWxsOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKKysJCUNSWVBUT19kZXN0cm95X2R5bmxvY2tpZDsKKysJCUNSWVBUT19zZXRfZHlubG9ja19zaXplOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfZHlubG9ja19jcmVhdGVfY2I7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NiOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYjsKKysJCUNSWVBUT19nZXRfZHlubG9ja19kZXN0cm95X2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2I7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfdmFsdWU7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2NyZWF0ZV9jYjsKKysJCWMyaV9BU04xX0JJVF9TVFJJTkc7CisrCQlpMmNfQVNOMV9CSVRfU1RSSU5HOworKwkJUkFORF9wb2xsOworKwkJYzJpX0FTTjFfSU5URUdFUjsKKysJCWkyY19BU04xX0lOVEVHRVI7CisrCQlCSU9fZHVtcF9pbmRlbnQ7CisrCQlBU04xX3BhcnNlX2R1bXA7CisrCQljMmlfQVNOMV9PQkpFQ1Q7CisrCQlYNTA5X05BTUVfcHJpbnRfZXhfZnA7CisrCQlBU04xX1NUUklOR19wcmludF9leF9mcDsKKysJCVg1MDlfTkFNRV9wcmludF9leDsKKysJCUFTTjFfU1RSSU5HX3ByaW50X2V4OworKwkJTUQ0OworKwkJTUQ0X1RyYW5zZm9ybTsKKysJCU1ENF9GaW5hbDsKKysJCU1ENF9VcGRhdGU7CisrCQlNRDRfSW5pdDsKKysJCUVWUF9tZDQ7CisrCQlpMmRfUFVCS0VZX2JpbzsKKysJCWkyZF9QVUJLRVlfZnA7CisrCQlkMmlfUFVCS0VZX2JpbzsKKysJCUFTTjFfU1RSSU5HX3RvX1VURjg7CisrCQlCSU9fdnByaW50ZjsKKysJCUJJT192c25wcmludGY7CisrCQlkMmlfUFVCS0VZX2ZwOworKwkJWDUwOV9jbXBfdGltZTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF90aW1lOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9pc3N1ZXI7CisrCQlYNTA5X09CSkVDVF9yZXRyaWV2ZV9tYXRjaDsKKysJCVg1MDlfT0JKRUNUX2lkeF9ieV9zdWJqZWN0OworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2ZsYWdzOworKwkJWDUwOV9TVE9SRV9DVFhfdHJ1c3RlZF9zdGFjazsKKysJCVg1MDlfdGltZV9hZGo7CisrCQlYNTA5X2NoZWNrX2lzc3VlZDsKKysJCUFTTjFfVVRDVElNRV9jbXBfdGltZV90OworKwkJREVTX3NldF93ZWFrX2tleV9mbGFnOworKwkJREVTX2NoZWNrX2tleTsKKysJCURFU19yd19tb2RlOworKwkJUlNBX1BLQ1MxX1JTQXJlZjsKKysJCVg1MDlfa2V5aWRfc2V0MTsKKysJCUJJT19uZXh0OworKwkJRFNPX01FVEhPRF92bXM7CisrCQlCSU9fZl9saW5lYnVmZmVyOworKwkJQk5fYm50ZXN0X3JhbmQ7CisrCQlPUEVOU1NMX2lzc2V0dWdpZDsKKysJCUJOX3JhbmRfcmFuZ2U7CisrCQlFUlJfbG9hZF9FTkdJTkVfc3RyaW5nczsKKysJCUVOR0lORV9zZXRfRFNBOworKwkJRU5HSU5FX2dldF9maW5pc2hfZnVuY3Rpb247CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfUlNBOworKwkJRU5HSU5FX2dldF9CTl9tb2RfZXhwOworKwkJRFNBX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX3NldF9ESDsKKysJCUVOR0lORV9zZXRfZGVmX0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX2luaXQ7CisrCQlESF9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCVJTQV9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCUVOR0lORV9maW5pc2g7CisrCQlFTkdJTkVfbG9hZF9wdWJsaWNfa2V5OworKwkJRU5HSU5FX2dldF9ESDsKKysJCUVOR0lORV9jdHJsOworKwkJRU5HSU5FX2dldF9pbml0X2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9pbml0X2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RTQTsKKysJCUVOR0lORV9nZXRfbmFtZTsKKysJCUVOR0lORV9nZXRfbGFzdDsKKysJCUVOR0lORV9nZXRfcHJldjsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9ESDsKKysJCUVOR0lORV9nZXRfUlNBOworKwkJRU5HSU5FX3NldF9kZWZhdWx0OworKwkJRU5HSU5FX2dldF9SQU5EOworKwkJRU5HSU5FX2dldF9maXJzdDsKKysJCUVOR0lORV9ieV9pZDsKKysJCUVOR0lORV9zZXRfZmluaXNoX2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9kZWZfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7CisrCQlSU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfc2V0X1JTQTsKKysJCUVOR0lORV9sb2FkX3ByaXZhdGVfa2V5OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JBTkQ7CisrCQlFTkdJTkVfc2V0X0JOX21vZF9leHA7CisrCQlFTkdJTkVfcmVtb3ZlOworKwkJRU5HSU5FX2ZyZWU7CisrCQlFTkdJTkVfZ2V0X0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX2dldF9uZXh0OworKwkJRU5HSU5FX3NldF9uYW1lOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RTQTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9CTl9tb2RfZXhwOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JTQTsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9SQU5EOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0JOX21vZF9leHA7CisrCQlFTkdJTkVfc2V0X1JBTkQ7CisrCQlFTkdJTkVfc2V0X2lkOworKwkJRU5HSU5FX3NldF9CTl9tb2RfZXhwX2NydDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9ESDsKKysJCUVOR0lORV9uZXc7CisrCQlFTkdJTkVfZ2V0X2lkOworKwkJRFNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX2FkZDsKKysJCURIX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX2dldF9EU0E7CisrCQlFTkdJTkVfZ2V0X2N0cmxfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2N0cmxfZnVuY3Rpb247CisrCQlCTl9wc2V1ZG9fcmFuZF9yYW5nZTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF92ZXJpZnlfY2I7CisrCQlFUlJfbG9hZF9DT01QX3N0cmluZ3M7CisrCQlQS0NTMTJfaXRlbV9kZWNyeXB0X2QyaTsKKysJCUFTTjFfVVRGOFNUUklOR19pdDsKKysJCUVOR0lORV91bnJlZ2lzdGVyX2NpcGhlcnM7CisrCQlFTkdJTkVfZ2V0X2NpcGhlcnM7CisrCQlkMmlfT0NTUF9CQVNJQ1JFU1A7CisrCQlLUkI1X0NIRUNLU1VNX2l0OworKwkJRUNfUE9JTlRfYWRkOworKwkJQVNOMV9pdGVtX2V4X2kyZDsKKysJCU9DU1BfQ0VSVElEX2l0OworKwkJZDJpX09DU1BfUkVTUEJZVEVTOworKwkJWDUwOVYzX2FkZDFfaTJkOworKwkJUEtDUzdfRU5WRUxPUEVfaXQ7CisrCQlVSV9hZGRfaW5wdXRfYm9vbGVhbjsKKysJCUVOR0lORV91bnJlZ2lzdGVyX1JTQTsKKysJCVg1MDlWM19FWFRfbmNvbmY7CisrCQlBU04xX0dFTkVSQUxTVFJJTkdfZnJlZTsKKysJCWQyaV9PQ1NQX0NFUlRTVEFUVVM7CisrCQlYNTA5X1JFVk9LRURfc2V0X3NlcmlhbE51bWJlcjsKKysJCVg1MDlfcHJpbnRfZXg7CisrCQlPQ1NQX09ORVJFUV9nZXQxX2V4dF9kMmk7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JBTkQ7CisrCQlFTkdJTkVfbG9hZF9keW5hbWljOworKwkJUEJLREYyUEFSQU1faXQ7CisrCQlFWFRFTkRFRF9LRVlfVVNBR0VfbmV3OworKwkJRUNfR1JPVVBfY2xlYXJfZnJlZTsKKysJCU9DU1Bfc2VuZHJlcV9iaW87CisrCQlBU04xX2l0ZW1fZGlnZXN0OworKwkJT0NTUF9CQVNJQ1JFU1BfZGVsZXRlX2V4dDsKKysJCU9DU1BfU0lHTkFUVVJFX2l0OworKwkJWDUwOV9DUkxfaXQ7CisrCQlPQ1NQX0JBU0lDUkVTUF9hZGRfZXh0OworKwkJS1JCNV9FTkNLRVlfaXQ7CisrCQlVSV9tZXRob2Rfc2V0X2Nsb3NlcjsKKysJCVg1MDlfU1RPUkVfc2V0X3B1cnBvc2U7CisrCQlpMmRfQVNOMV9HRU5FUkFMU1RSSU5HOworKwkJT0NTUF9yZXNwb25zZV9zdGF0dXM7CisrCQlpMmRfT0NTUF9TRVJWSUNFTE9DOworKwkJRU5HSU5FX2dldF9kaWdlc3RfZW5naW5lOworKwkJRUNfR1JPVVBfc2V0X2N1cnZlX0dGcDsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X09CSjsKKysJCV9vc3NsX29sZF9kZXNfcmFuZG9tX2tleTsKKysJCUFTTjFfVDYxU1RSSU5HX2l0OworKwkJRUNfR1JPVVBfbWV0aG9kX29mOworKwkJaTJkX0tSQjVfQVBSRVE7CisrCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQ7CisrCQlBU04xX1BSSU5UQUJMRV9uZXc7CisrCQlITUFDX0luaXRfZXg7CisrCQlkMmlfS1JCNV9BVVRIRU5UOworKwkJT0NTUF9hcmNoaXZlX2N1dG9mZl9uZXc7CisrCQlFQ19QT0lOVF9zZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfc2V0X0pwcm9qX2Nvb3Jkc19HRnA7CisrCQlfb3NzbF9vbGRfZGVzX2lzX3dlYWtfa2V5OworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9PQko7CisrCQlFQ19QT0lOVF9vY3QycG9pbnQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9jb3VudDsKKysJCVVJX2N0cmw7CisrCQlfc2hhZG93X0RFU19yd19tb2RlOworKwkJYXNuMV9kb19hZGI7CisrCQlBU04xX3RlbXBsYXRlX2kyZDsKKysJCUVOR0lORV9yZWdpc3Rlcl9ESDsKKysJCVVJX2NvbnN0cnVjdF9wcm9tcHQ7CisrCQlYNTA5X1NUT1JFX3NldF90cnVzdDsKKysJCVVJX2R1cF9pbnB1dF9zdHJpbmc7CisrCQlkMmlfS1JCNV9BUFJFUTsKKysJCUVWUF9NRF9DVFhfY29weV9leDsKKysJCU9DU1BfcmVxdWVzdF9pc19zaWduZWQ7CisrCQlpMmRfT0NTUF9SRVFJTkZPOworKwkJS1JCNV9FTkNLRVlfZnJlZTsKKysJCU9DU1BfcmVzcF9nZXQwOworKwkJR0VORVJBTF9OQU1FX2l0OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfaXQ7CisrCQlYNTA5X1NUT1JFX3NldF9mbGFnczsKKysJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0ZwOworKwkJT0NTUF9yZXNwb25zZV9zdGF0dXNfc3RyOworKwkJZDJpX09DU1BfUkVWT0tFRElORk87CisrCQlPQ1NQX2Jhc2ljX2FkZDFfY2VydDsKKysJCUVSUl9nZXRfaW1wbGVtZW50YXRpb247CisrCQlFVlBfQ2lwaGVyRmluYWxfZXg7CisrCQlPQ1NQX0NFUlRTVEFUVVNfbmV3OworKwkJQ1JZUFRPX2NsZWFudXBfYWxsX2V4X2RhdGE7CisrCQlPQ1NQX3Jlc3BfZmluZDsKKysJCUJOX25ubW9kOworKwkJWDUwOV9DUkxfc29ydDsKKysJCVg1MDlfUkVWT0tFRF9zZXRfcmV2b2NhdGlvbkRhdGU7CisrCQlFTkdJTkVfcmVnaXN0ZXJfUkFORDsKKysJCU9DU1BfU0VSVklDRUxPQ19uZXc7CisrCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGcDsKKysJCV9vc3NsX29sZF9kZXNfb3B0aW9uczsKKysJCVNYTkVUX2l0OworKwkJVUlfZHVwX2lucHV0X2Jvb2xlYW47CisrCQlQS0NTMTJfYWRkX0NTUE5hbWVfYXNjOworKwkJRUNfUE9JTlRfaXNfYXRfaW5maW5pdHk7CisrCQlFTkdJTkVfbG9hZF9jcnlwdG9kZXY7CisrCQlEU09fY29udmVydF9maWxlbmFtZTsKKysJCVBPTElDWVFVQUxJTkZPX2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX2NpcGhlcnM7CisrCQlCTl9tb2RfbHNoaWZ0X3F1aWNrOworKwkJRFNPX3NldF9maWxlbmFtZTsKKysJCUFTTjFfaXRlbV9mcmVlOworKwkJS1JCNV9US1RCT0RZX2ZyZWU7CisrCQlBVVRIT1JJVFlfS0VZSURfaXQ7CisrCQlLUkI1X0FQUkVRQk9EWV9uZXc7CisrCQlYNTA5VjNfRVhUX1JFUV9hZGRfbmNvbmY7CisrCQlFTkdJTkVfY3RybF9jbWRfc3RyaW5nOworKwkJaTJkX09DU1BfUkVTUERBVEE7CisrCQlFVlBfTURfQ1RYX2luaXQ7CisrCQlFWFRFTkRFRF9LRVlfVVNBR0VfZnJlZTsKKysJCVBLQ1M3X0FUVFJfU0lHTl9pdDsKKysJCVVJX2FkZF9lcnJvcl9zdHJpbmc7CisrCQlLUkI1X0NIRUNLU1VNX2ZyZWU7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dDsKKysJCUVOR0lORV9sb2FkX3Vic2VjOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9kaWdlc3RzOworKwkJUEtFWV9VU0FHRV9QRVJJT0RfaXQ7CisrCQlQS0NTMTJfdW5wYWNrX2F1dGhzYWZlczsKKysJCUFTTjFfaXRlbV91bnBhY2s7CisrCQlORVRTQ0FQRV9TUEtBQ19pdDsKKysJCVg1MDlfUkVWT0tFRF9pdDsKKysJCUFTTjFfU1RSSU5HX2VuY29kZTsKKysJCUVWUF9hZXNfMTI4X2VjYjsKKysJCUtSQjVfQVVUSEVOVF9mcmVlOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfY3JpdDsKKysJCU9DU1BfY2VydF9zdGF0dXNfc3RyOworKwkJZDJpX09DU1BfUkVRVUVTVDsKKysJCVVJX2R1cF9pbmZvX3N0cmluZzsKKysJCV9vc3NsX29sZF9kZXNfeHdoaXRlX2luMm91dDsKKysJCVBLQ1MxMl9pdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdDsKKysJCU9DU1BfQ0VSVFNUQVRVU19mcmVlOworKwkJX29zc2xfb2xkX2Rlc19jcnlwdDsKKysJCUFTTjFfaXRlbV9pMmQ7CisrCQlFVlBfRGVjcnlwdEZpbmFsX2V4OworKwkJRU5HSU5FX2xvYWRfb3BlbnNzbDsKKysJCUVOR0lORV9nZXRfY21kX2RlZm5zOworKwkJRU5HSU5FX3NldF9sb2FkX3ByaXZrZXlfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mbjsKKysJCUVWUF9FbmNyeXB0RmluYWxfZXg7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfZGlnZXN0czsKKysJCVg1MDlfZ2V0MF9wdWJrZXlfYml0c3RyOworKwkJYXNuMV9leF9pMmM7CisrCQlFTkdJTkVfcmVnaXN0ZXJfUlNBOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfRFNBOworKwkJX29zc2xfb2xkX2Rlc19rZXlfc2NoZWQ7CisrCQlYNTA5X0VYVEVOU0lPTl9pdDsKKysJCWkyZF9LUkI1X0FVVEhFTlQ7CisrCQlTWE5FVElEX2l0OworKwkJZDJpX09DU1BfU0lOR0xFUkVTUDsKKysJCUVESVBBUlRZTkFNRV9uZXc7CisrCQlQS0NTMTJfY2VydGJhZzJ4NTA5OworKwkJX29zc2xfb2xkX2Rlc19vZmI2NF9lbmNyeXB0OworKwkJZDJpX0VYVEVOREVEX0tFWV9VU0FHRTsKKysJCUVSUl9wcmludF9lcnJvcnNfY2I7CisrCQlFTkdJTkVfc2V0X2NpcGhlcnM7CisrCQlkMmlfS1JCNV9BUFJFUUJPRFk7CisrCQlVSV9tZXRob2RfZ2V0X2ZsdXNoZXI7CisrCQlYNTA5X1BVQktFWV9pdDsKKysJCV9vc3NsX29sZF9kZXNfZW5jX3JlYWQ7CisrCQlQS0NTN19FTkNSWVBUX2l0OworKwkJaTJkX09DU1BfUkVTUE9OU0U7CisrCQlFQ19HUk9VUF9nZXRfY29mYWN0b3I7CisrCQlQS0NTMTJfdW5wYWNrX3A3ZGF0YTsKKysJCWQyaV9LUkI1X0FVVEhEQVRBOworKwkJT0NTUF9jb3B5X25vbmNlOworKwkJS1JCNV9BVVRIREFUQV9uZXc7CisrCQlPQ1NQX1JFU1BEQVRBX25ldzsKKysJCUVDX0dGcF9tb250X21ldGhvZDsKKysJCU9DU1BfUkVWT0tFRElORk9fZnJlZTsKKysJCVVJX2dldF9leF9kYXRhOworKwkJS1JCNV9BUFJFUUJPRFlfZnJlZTsKKysJCUVDX0dST1VQX2dldDBfZ2VuZXJhdG9yOworKwkJVUlfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJWDUwOVYzX3NldF9uY29uZjsKKysJCVBLQ1MxMl9pdGVtX2kyZF9lbmNyeXB0OworKwkJWDUwOV9hZGQxX2V4dF9pMmQ7CisrCQlQS0NTN19TSUdORVJfSU5GT19pdDsKKysJCUtSQjVfUFJJTkNOQU1FX25ldzsKKysJCVBLQ1MxMl9TQUZFQkFHX2l0OworKwkJRUNfR1JPVVBfZ2V0X29yZGVyOworKwkJZDJpX09DU1BfUkVTUElEOworKwkJT0NTUF9yZXF1ZXN0X3ZlcmlmeTsKKysJCU5DT05GX2dldF9udW1iZXJfZTsKKysJCV9vc3NsX29sZF9kZXNfZGVjcnlwdDM7CisrCQlYNTA5X3NpZ25hdHVyZV9wcmludDsKKysJCU9DU1BfU0lOR0xFUkVTUF9mcmVlOworKwkJRU5HSU5FX2xvYWRfYnVpbHRpbl9lbmdpbmVzOworKwkJaTJkX09DU1BfT05FUkVROworKwkJT0NTUF9SRVFVRVNUX2FkZF9leHQ7CisrCQlPQ1NQX1JFU1BCWVRFU19uZXc7CisrCQlFVlBfTURfQ1RYX2NyZWF0ZTsKKysJCU9DU1BfcmVzcF9maW5kX3N0YXR1czsKKysJCVg1MDlfQUxHT1JfaXQ7CisrCQlBU04xX1RJTUVfaXQ7CisrCQlPQ1NQX3JlcXVlc3Rfc2V0MV9uYW1lOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9jb3VudDsKKysJCVVJX2dldDBfcmVzdWx0OworKwkJUEtDUzEyX0FVVEhTQUZFU19pdDsKKysJCUVWUF9hZXNfMjU2X2VjYjsKKysJCVBLQ1MxMl9wYWNrX2F1dGhzYWZlczsKKysJCUFTTjFfSUE1U1RSSU5HX2l0OworKwkJVUlfZ2V0X2lucHV0X2ZsYWdzOworKwkJRUNfR1JPVVBfc2V0X2dlbmVyYXRvcjsKKysJCV9vc3NsX29sZF9kZXNfc3RyaW5nX3RvXzJrZXlzOworKwkJT0NTUF9DRVJUSURfZnJlZTsKKysJCVg1MDlfQ0VSVF9BVVhfaXQ7CisrCQlDRVJUSUZJQ0FURVBPTElDSUVTX2l0OworKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NiY19lbmNyeXB0OworKwkJUkFORF9zZXRfcmFuZF9lbmdpbmU7CisrCQlEU09fZ2V0X2xvYWRlZF9maWxlbmFtZTsKKysJCVg1MDlfQVRUUklCVVRFX2l0OworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9OSUQ7CisrCQlQS0NTMTJfZGVjcnlwdF9za2V5OworKwkJS1JCNV9BVVRIRU5UX2l0OworKwkJVUlfZHVwX2Vycm9yX3N0cmluZzsKKysJCVJTQVB1YmxpY0tleV9pdDsKKysJCWkyZF9PQ1NQX1JFUVVFU1Q7CisrCQlQS0NTMTJfeDUwOWNybDJjZXJ0YmFnOworKwkJT0NTUF9TRVJWSUNFTE9DX2l0OworKwkJQVNOMV9pdGVtX3NpZ247CisrCQlYNTA5X0NSTF9zZXRfaXNzdWVyX25hbWU7CisrCQlPQkpfTkFNRV9kb19hbGxfc29ydGVkOworKwkJaTJkX09DU1BfQkFTSUNSRVNQOworKwkJaTJkX09DU1BfUkVTUEJZVEVTOworKwkJUEtDUzEyX3VucGFja19wN2VuY2RhdGE7CisrCQlITUFDX0NUWF9pbml0OworKwkJRU5HSU5FX2dldF9kaWdlc3Q7CisrCQlPQ1NQX1JFU1BPTlNFX3ByaW50OworKwkJS1JCNV9US1RCT0RZX2l0OworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2l0OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfaXQ7CisrCQlQQkUyUEFSQU1faXQ7CisrCQlQS0NTMTJfY2VydGJhZzJ4NTA5Y3JsOworKwkJUEtDUzdfU0lHTkVEX2l0OworKwkJRU5HSU5FX2dldF9jaXBoZXI7CisrCQlpMmRfT0NTUF9DUkxJRDsKKysJCU9DU1BfU0lOR0xFUkVTUF9uZXc7CisrCQlFTkdJTkVfY21kX2lzX2V4ZWN1dGFibGU7CisrCQlSU0FfdXBfcmVmOworKwkJQVNOMV9HRU5FUkFMU1RSSU5HX2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX0RTQTsKKysJCVg1MDlWM19FWFRfYWRkX25jb25mX3NrOworKwkJRU5HSU5FX3NldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKKysJCVBLQ1M4X2RlY3J5cHQ7CisrCQlQRU1fYnl0ZXNfcmVhZF9iaW87CisrCQlESVJFQ1RPUllTVFJJTkdfaXQ7CisrCQlkMmlfT0NTUF9DUkxJRDsKKysJCUVDX1BPSU5UX2lzX29uX2N1cnZlOworKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmN0aW9uczsKKysJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9leF9mdW5jczsKKysJCWQyaV9LUkI1X0NIRUNLU1VNOworKwkJQVNOMV9pdGVtX2R1cDsKKysJCVg1MDlfaXQ7CisrCQlCTl9tb2RfYWRkOworKwkJS1JCNV9BVVRIREFUQV9mcmVlOworKwkJX29zc2xfb2xkX2Rlc19jYmNfY2tzdW07CisrCQlBU04xX2l0ZW1fdmVyaWZ5OworKwkJQ1JZUFRPX3NldF9tZW1fZXhfZnVuY3Rpb25zOworKwkJRUNfUE9JTlRfZ2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX2dldF9KcHJval9jb29yZHNfR0ZwOworKwkJWkxPTkdfaXQ7CisrCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOworKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOworKwkJQVNOMV9USU1FX2NoZWNrOworKwkJVUlfZ2V0MF91c2VyX2RhdGE7CisrCQlITUFDX0NUWF9jbGVhbnVwOworKwkJRFNBX3VwX3JlZjsKKysJCV9vc3NsX29sZF9kZXNfZWRlM19jZmI2NF9lbmNyeXB0OworKwkJX29zc2xfb2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7CisrCQlBU04xX0JNUFNUUklOR19pdDsKKysJCUFTTjFfdGFnMmJpdDsKKysJCVVJX21ldGhvZF9zZXRfZmx1c2hlcjsKKysJCVg1MDlfb2NzcGlkX3ByaW50OworKwkJS1JCNV9FTkNEQVRBX2l0OworKwkJRU5HSU5FX2dldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKKysJCVVJX2FkZF91c2VyX2RhdGE7CisrCQlPQ1NQX1JFUVVFU1RfZGVsZXRlX2V4dDsKKysJCVVJX2dldF9tZXRob2Q7CisrCQlPQ1NQX09ORVJFUV9mcmVlOworKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfaXQ7CisrCQlYNTA5X0NSTF9zZXRfbmV4dFVwZGF0ZTsKKysJCU9DU1BfUkVRVUVTVF9pdDsKKysJCU9DU1BfQkFTSUNSRVNQX2l0OworKwkJQUVTX2VjYl9lbmNyeXB0OworKwkJQk5fbW9kX3NxcjsKKysJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfaXQ7CisrCQlHRU5FUkFMX05BTUVTX2l0OworKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2l0OworKwkJQVNOMV9GQk9PTEVBTl9pdDsKKysJCVVJX3NldF9leF9kYXRhOworKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fa2V5OworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9SU0E7CisrCQlkMmlfS1JCNV9QUklOQ05BTUU7CisrCQlPQ1NQX1JFU1BCWVRFU19pdDsKKysJCVg1MDlfQ0lORl9pdDsKKysJCUVOR0lORV91bnJlZ2lzdGVyX2RpZ2VzdHM7CisrCQlkMmlfRURJUEFSVFlOQU1FOworKwkJZDJpX09DU1BfU0VSVklDRUxPQzsKKysJCUVOR0lORV9nZXRfZGlnZXN0czsKKysJCV9vc3NsX29sZF9kZXNfc2V0X29kZF9wYXJpdHk7CisrCQlPQ1NQX1JFU1BEQVRBX2ZyZWU7CisrCQlkMmlfS1JCNV9USUNLRVQ7CisrCQlPVEhFUk5BTUVfaXQ7CisrCQlFVlBfTURfQ1RYX2NsZWFudXA7CisrCQlkMmlfQVNOMV9HRU5FUkFMU1RSSU5HOworKwkJWDUwOV9DUkxfc2V0X3ZlcnNpb247CisrCQlCTl9tb2Rfc3ViOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfTklEOworKwkJRU5HSU5FX2dldF9leF9uZXdfaW5kZXg7CisrCQlPQ1NQX1JFUVVFU1RfZnJlZTsKKysJCU9DU1BfUkVRVUVTVF9hZGQxX2V4dF9pMmQ7CisrCQlYNTA5X1ZBTF9pdDsKKysJCUVDX1BPSU5Uc19tYWtlX2FmZmluZTsKKysJCUVDX1BPSU5UX211bDsKKysJCVg1MDlWM19FWFRfYWRkX25jb25mOworKwkJWDUwOV9UUlVTVF9zZXQ7CisrCQlYNTA5X0NSTF9hZGQxX2V4dF9pMmQ7CisrCQlfb3NzbF9vbGRfZGVzX2ZjcnlwdDsKKysJCURJU1BMQVlURVhUX2l0OworKwkJWDUwOV9DUkxfc2V0X2xhc3RVcGRhdGU7CisrCQlPQ1NQX0JBU0lDUkVTUF9mcmVlOworKwkJT0NTUF9CQVNJQ1JFU1BfYWRkMV9leHRfaTJkOworKwkJZDJpX0tSQjVfQVVUSEVOVEJPRFk7CisrCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247CisrCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbDsKKysJCUtSQjVfRU5DREFUQV9uZXc7CisrCQlEU09fdXBfcmVmOworKwkJT0NTUF9jcmxfcmVhc29uX3N0cjsKKysJCVVJX2dldDBfcmVzdWx0X3N0cmluZzsKKysJCUFTTjFfR0VORVJBTFNUUklOR19uZXc7CisrCQlYNTA5X1NJR19pdDsKKysJCUVSUl9zZXRfaW1wbGVtZW50YXRpb247CisrCQlFUlJfbG9hZF9FQ19zdHJpbmdzOworKwkJVUlfZ2V0MF9hY3Rpb25fc3RyaW5nOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dDsKKysJCUVDX1BPSU5UX21ldGhvZF9vZjsKKysJCWkyZF9LUkI1X0FQUkVRQk9EWTsKKysJCV9vc3NsX29sZF9kZXNfZWNiM19lbmNyeXB0OworKwkJQ1JZUFRPX2dldF9tZW1fZXhfZnVuY3Rpb25zOworKwkJRU5HSU5FX2dldF9leF9kYXRhOworKwkJVUlfZGVzdHJveV9tZXRob2Q7CisrCQlBU04xX2l0ZW1faTJkX2JpbzsKKysJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfT0JKOworKwkJQVNOMV9wcmltaXRpdmVfbmV3OworKwkJQVNOMV9QUklOVEFCTEVfaXQ7CisrCQlFVlBfYWVzXzE5Ml9lY2I7CisrCQlPQ1NQX1NJR05BVFVSRV9uZXc7CisrCQlMT05HX2l0OworKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2l0OworKwkJT0NTUF9TSU5HTEVSRVNQX2FkZDFfZXh0X2kyZDsKKysJCWQyaV9PQ1NQX0NFUlRJRDsKKysJCUFTTjFfaXRlbV9kMmlfZnA7CisrCQlDUkxfRElTVF9QT0lOVFNfaXQ7CisrCQlHRU5FUkFMX05BTUVfcHJpbnQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZGVsZXRlX2V4dDsKKysJCVBLQ1MxMl9TQUZFQkFHU19pdDsKKysJCWQyaV9PQ1NQX1NJR05BVFVSRTsKKysJCU9DU1BfcmVxdWVzdF9hZGQxX25vbmNlOworKwkJRU5HSU5FX3NldF9jbWRfZGVmbnM7CisrCQlPQ1NQX1NFUlZJQ0VMT0NfZnJlZTsKKysJCUVDX0dST1VQX2ZyZWU7CisrCQlBU04xX0JJVF9TVFJJTkdfaXQ7CisrCQlYNTA5X1JFUV9pdDsKKysJCV9vc3NsX29sZF9kZXNfY2JjX2VuY3J5cHQ7CisrCQlFUlJfdW5sb2FkX3N0cmluZ3M7CisrCQlQS0NTN19TSUdOX0VOVkVMT1BFX2l0OworKwkJRURJUEFSVFlOQU1FX2ZyZWU7CisrCQlPQ1NQX1JFUUlORk9fZnJlZTsKKysJCUVDX0dST1VQX25ld19jdXJ2ZV9HRnA7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0MV9leHRfZDJpOworKwkJUEtDUzEyX2l0ZW1fcGFja19zYWZlYmFnOworKwkJYXNuMV9leF9jMmk7CisrCQlFTkdJTkVfcmVnaXN0ZXJfZGlnZXN0czsKKysJCWkyZF9PQ1NQX1JFVk9LRURJTkZPOworKwkJYXNuMV9lbmNfcmVzdG9yZTsKKysJCVVJX2ZyZWU7CisrCQlVSV9uZXdfbWV0aG9kOworKwkJRVZQX0VuY3J5cHRJbml0X2V4OworKwkJWDUwOV9wdWJrZXlfZGlnZXN0OworKwkJRUNfUE9JTlRfaW52ZXJ0OworKwkJT0NTUF9iYXNpY19zaWduOworKwkJaTJkX09DU1BfUkVTUElEOworKwkJT0NTUF9jaGVja19ub25jZTsKKysJCUVOR0lORV9jdHJsX2NtZDsKKysJCWQyaV9LUkI1X0VOQ0tFWTsKKysJCU9DU1BfcGFyc2VfdXJsOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHQ7CisrCQlPQ1NQX0NSTElEX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXQxX2V4dF9kMmk7CisrCQlSU0FQcml2YXRlS2V5X2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9ESDsKKysJCWkyZF9FRElQQVJUWU5BTUU7CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGcDsKKysJCU9DU1BfQ1JMSURfbmV3OworKwkJRU5HSU5FX2dldF9mbGFnczsKKysJCU9DU1BfT05FUkVRX2l0OworKwkJVUlfcHJvY2VzczsKKysJCUFTTjFfSU5URUdFUl9pdDsKKysJCUVWUF9DaXBoZXJJbml0X2V4OworKwkJVUlfZ2V0X3N0cmluZ190eXBlOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfREg7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RTQTsKKysJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlibl9kdXBfZXhwYW5kOworKwkJT0NTUF9jZXJ0X2lkX25ldzsKKysJCUJBU0lDX0NPTlNUUkFJTlRTX2l0OworKwkJQk5fbW9kX2FkZF9xdWljazsKKysJCUVDX1BPSU5UX25ldzsKKysJCUVWUF9NRF9DVFhfZGVzdHJveTsKKysJCU9DU1BfUkVTUEJZVEVTX2ZyZWU7CisrCQlFVlBfYWVzXzEyOF9jYmM7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0MV9leHRfZDJpOworKwkJRUNfUE9JTlRfZnJlZTsKKysJCURIX3VwX3JlZjsKKysJCVg1MDlfTkFNRV9FTlRSWV9pdDsKKysJCVVJX2dldF9leF9uZXdfaW5kZXg7CisrCQlCTl9tb2Rfc3ViX3F1aWNrOworKwkJT0NTUF9PTkVSRVFfYWRkX2V4dDsKKysJCU9DU1BfcmVxdWVzdF9zaWduOworKwkJRVZQX0RpZ2VzdEZpbmFsX2V4OworKwkJRU5HSU5FX3NldF9kaWdlc3RzOworKwkJT0NTUF9pZF9pc3N1ZXJfY21wOworKwkJT0JKX05BTUVfZG9fYWxsOworKwkJRUNfUE9JTlRzX211bDsKKysJCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0ZTsKKysJCVg1MDlWM19FWFRfbmNvbmZfbmlkOworKwkJQVNOMV9TRVFVRU5DRV9pdDsKKysJCVVJX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCVJBTkRfcXVlcnlfZWdkX2J5dGVzOworKwkJVUlfbWV0aG9kX2dldF93cml0ZXI7CisrCQlVSV9PcGVuU1NMOworKwkJUEVNX2RlZl9jYWxsYmFjazsKKysJCUVOR0lORV9jbGVhbnVwOworKwkJRElTVF9QT0lOVF9pdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9pdDsKKysJCWQyaV9LUkI1X1RLVEJPRFk7CisrCQlFQ19QT0lOVF9jbXA7CisrCQlPQ1NQX1JFVk9LRURJTkZPX25ldzsKKysJCWkyZF9PQ1NQX0NFUlRTVEFUVVM7CisrCQlPQ1NQX2Jhc2ljX2FkZDFfbm9uY2U7CisrCQlBU04xX2l0ZW1fZXhfZDJpOworKwkJQk5fbW9kX2xzaGlmdDFfcXVpY2s7CisrCQlVSV9zZXRfbWV0aG9kOworKwkJT0NTUF9pZF9nZXQwX2luZm87CisrCQlCTl9tb2Rfc3FydDsKKysJCUVDX0dST1VQX2NvcHk7CisrCQlLUkI1X0VOQ0RBVEFfZnJlZTsKKysJCV9vc3NsX29sZF9kZXNfY2ZiX2VuY3J5cHQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9PQko7CisrCQlPQ1NQX2NlcnRfdG9faWQ7CisrCQlPQ1NQX1JFU1BJRF9uZXc7CisrCQlPQ1NQX1JFU1BEQVRBX2l0OworKwkJZDJpX09DU1BfUkVTUERBVEE7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NvbXBsZXRlOworKwkJT0NTUF9jaGVja192YWxpZGl0eTsKKysJCVBLQ1MxMl9CQUdTX2l0OworKwkJT0NTUF91cmxfc3ZjbG9jX25ldzsKKysJCUFTTjFfdGVtcGxhdGVfZnJlZTsKKysJCU9DU1BfU0lOR0xFUkVTUF9hZGRfZXh0OworKwkJS1JCNV9BVVRIRU5UQk9EWV9pdDsKKysJCVg1MDlfc3VwcG9ydGVkX2V4dGVuc2lvbjsKKysJCWkyZF9LUkI1X0FVVEhEQVRBOworKwkJVUlfbWV0aG9kX2dldF9vcGVuZXI7CisrCQlFTkdJTkVfc2V0X2V4X2RhdGE7CisrCQlPQ1NQX1JFUVVFU1RfcHJpbnQ7CisrCQlDQklHTlVNX2l0OworKwkJS1JCNV9USUNLRVRfbmV3OworKwkJS1JCNV9BUFJFUV9uZXc7CisrCQlFQ19HUk9VUF9nZXRfY3VydmVfR0ZwOworKwkJS1JCNV9FTkNLRVlfbmV3OworKwkJQVNOMV90ZW1wbGF0ZV9kMmk7CisrCQlfb3NzbF9vbGRfZGVzX3F1YWRfY2tzdW07CisrCQlPQ1NQX3NpbmdsZV9nZXQwX3N0YXR1czsKKysJCUJOX3N3YXA7CisrCQlQT0xJQ1lJTkZPX2l0OworKwkJRU5HSU5FX3NldF9kZXN0cm95X2Z1bmN0aW9uOworKwkJYXNuMV9lbmNfZnJlZTsKKysJCU9DU1BfUkVTUElEX2l0OworKwkJRUNfR1JPVVBfbmV3OworKwkJRVZQX2Flc18yNTZfY2JjOworKwkJaTJkX0tSQjVfUFJJTkNOQU1FOworKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MjsKKysJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDM7CisrCQlQS0NTOF9QUklWX0tFWV9JTkZPX2l0OworKwkJT0NTUF9SRVFJTkZPX2l0OworKwkJUEJFUEFSQU1faXQ7CisrCQlLUkI1X0FVVEhFTlRCT0RZX25ldzsKKysJCVg1MDlfQ1JMX2FkZDBfcmV2b2tlZDsKKysJCUVESVBBUlRZTkFNRV9pdDsKKysJCU5FVFNDQVBFX1NQS0lfaXQ7CisrCQlVSV9nZXQwX3Rlc3Rfc3RyaW5nOworKwkJRU5HSU5FX2dldF9jaXBoZXJfZW5naW5lOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jaXBoZXJzOworKwkJRUNfUE9JTlRfY29weTsKKysJCUJOX2tyb25lY2tlcjsKKysJCV9vc3NsX29sZF9kZXNfZWRlM19vZmI2NF9lbmNyeXB0OworKwkJX29zc2xfb2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7CisrCQlVSV9tZXRob2RfZ2V0X3JlYWRlcjsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfY291bnQ7CisrCQlBU04xX0VOVU1FUkFURURfaXQ7CisrCQlVSV9zZXRfcmVzdWx0OworKwkJaTJkX0tSQjVfVElDS0VUOworKwkJWDUwOV9wcmludF9leF9mcDsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nOworKwkJZDJpX09DU1BfUkVTUE9OU0U7CisrCQlBU04xX1VUQ1RJTUVfaXQ7CisrCQlfb3NzbF9vbGRfZGVzX2VuY193cml0ZTsKKysJCU9DU1BfUkVTUE9OU0VfbmV3OworKwkJQUVTX3NldF9lbmNyeXB0X2tleTsKKysJCU9DU1BfcmVzcF9jb3VudDsKKysJCUtSQjVfQ0hFQ0tTVU1fbmV3OworKwkJRU5HSU5FX2xvYWRfY3N3aWZ0OworKwkJT0NTUF9vbmVyZXFfZ2V0MF9pZDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9jaXBoZXJzOworKwkJTk9USUNFUkVGX2l0OworKwkJWDUwOVYzX0VYVF9DUkxfYWRkX25jb25mOworKwkJT0NTUF9SRVZPS0VESU5GT19pdDsKKysJCUFFU19lbmNyeXB0OworKwkJT0NTUF9SRVFVRVNUX25ldzsKKysJCUFTTjFfQU5ZX2l0OworKwkJQ1JZUFRPX2V4X2RhdGFfbmV3X2NsYXNzOworKwkJX29zc2xfb2xkX2Rlc19uY2JjX2VuY3J5cHQ7CisrCQlpMmRfS1JCNV9US1RCT0RZOworKwkJRUNfUE9JTlRfY2xlYXJfZnJlZTsKKysJCUFFU19kZWNyeXB0OworKwkJYXNuMV9lbmNfaW5pdDsKKysJCVVJX2dldF9yZXN1bHRfbWF4c2l6ZTsKKysJCU9DU1BfQ0VSVElEX25ldzsKKysJCUVOR0lORV91bnJlZ2lzdGVyX1JBTkQ7CisrCQlVSV9tZXRob2RfZ2V0X2Nsb3NlcjsKKysJCWQyaV9LUkI1X0VOQ0RBVEE7CisrCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2NvdW50OworKwkJT0NTUF9iYXNpY192ZXJpZnk7CisrCQlLUkI1X0FVVEhFTlRCT0RZX2ZyZWU7CisrCQlBU04xX2l0ZW1fZDJpOworKwkJQVNOMV9wcmltaXRpdmVfZnJlZTsKKysJCWkyZF9FWFRFTkRFRF9LRVlfVVNBR0U7CisrCQlpMmRfT0NTUF9TSUdOQVRVUkU7CisrCQlhc24xX2VuY19zYXZlOworKwkJRU5HSU5FX2xvYWRfbnVyb247CisrCQlfb3NzbF9vbGRfZGVzX3BjYmNfZW5jcnlwdDsKKysJCVBLQ1MxMl9NQUNfREFUQV9pdDsKKysJCU9DU1BfYWNjZXB0X3Jlc3BvbnNlc19uZXc7CisrCQlhc24xX2RvX2xvY2s7CisrCQlQS0NTN19BVFRSX1ZFUklGWV9pdDsKKysJCUtSQjVfQVBSRVFCT0RZX2l0OworKwkJaTJkX09DU1BfU0lOR0xFUkVTUDsKKysJCUFTTjFfaXRlbV9leF9uZXc7CisrCQlVSV9hZGRfdmVyaWZ5X3N0cmluZzsKKysJCV9vc3NsX29sZF9kZXNfc2V0X2tleTsKKysJCUtSQjVfUFJJTkNOQU1FX2l0OworKwkJRVZQX0RlY3J5cHRJbml0X2V4OworKwkJaTJkX09DU1BfQ0VSVElEOworKwkJQVNOMV9pdGVtX2QyaV9iaW87CisrCQlFQ19QT0lOVF9kYmw7CisrCQlhc24xX2dldF9jaG9pY2Vfc2VsZWN0b3I7CisrCQlpMmRfS1JCNV9DSEVDS1NVTTsKKysJCUVOR0lORV9zZXRfdGFibGVfZmxhZ3M7CisrCQlBRVNfb3B0aW9uczsKKysJCUVOR0lORV9sb2FkX2NoaWw7CisrCQlPQ1NQX2lkX2NtcDsKKysJCU9DU1BfQkFTSUNSRVNQX25ldzsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X05JRDsKKysJCUtSQjVfQVBSRVFfaXQ7CisrCQlFTkdJTkVfZ2V0X2Rlc3Ryb3lfZnVuY3Rpb247CisrCQlDT05GX3NldF9uY29uZjsKKysJCUFTTjFfUFJJTlRBQkxFX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X05JRDsKKysJCURJU1RfUE9JTlRfTkFNRV9pdDsKKysJCVg1MDlWM19leHRlbnNpb25zX3ByaW50OworKwkJX29zc2xfb2xkX2Rlc19jZmI2NF9lbmNyeXB0OworKwkJWDUwOV9SRVZPS0VEX2FkZDFfZXh0X2kyZDsKKysJCV9vc3NsX29sZF9kZXNfb2ZiX2VuY3J5cHQ7CisrCQlLUkI1X1RLVEJPRFlfbmV3OworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfaXQ7CisrCQlFUlJfbG9hZF9VSV9zdHJpbmdzOworKwkJaTJkX0tSQjVfRU5DS0VZOworKwkJQVNOMV90ZW1wbGF0ZV9uZXc7CisrCQlPQ1NQX1NJR05BVFVSRV9mcmVlOworKwkJQVNOMV9pdGVtX2kyZF9mcDsKKysJCUtSQjVfUFJJTkNOQU1FX2ZyZWU7CisrCQlQS0NTN19SRUNJUF9JTkZPX2l0OworKwkJRVhURU5ERURfS0VZX1VTQUdFX2l0OworKwkJRUNfR0ZwX3NpbXBsZV9tZXRob2Q7CisrCQlFQ19HUk9VUF9wcmVjb21wdXRlX211bHQ7CisrCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2dldDA7CisrCQlVSV9tZXRob2Rfc2V0X3dyaXRlcjsKKysJCUtSQjVfQVVUSEVOVF9uZXc7CisrCQlYNTA5X0NSTF9JTkZPX2l0OworKwkJRFNPX3NldF9uYW1lX2NvbnZlcnRlcjsKKysJCUFFU19zZXRfZGVjcnlwdF9rZXk7CisrCQlQS0NTN19ESUdFU1RfaXQ7CisrCQlQS0NTMTJfeDUwOTJjZXJ0YmFnOworKwkJRVZQX0RpZ2VzdEluaXRfZXg7CisrCQlpMmFfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJT0NTUF9SRVNQT05TRV9pdDsKKysJCVBLQ1M3X0VOQ19DT05URU5UX2l0OworKwkJT0NTUF9yZXF1ZXN0X2FkZDBfaWQ7CisrCQlFQ19QT0lOVF9tYWtlX2FmZmluZTsKKysJCURTT19nZXRfZmlsZW5hbWU7CisrCQlPQ1NQX0NFUlRTVEFUVVNfaXQ7CisrCQlPQ1NQX3JlcXVlc3RfYWRkMV9jZXJ0OworKwkJVUlfZ2V0MF9vdXRwdXRfc3RyaW5nOworKwkJVUlfZHVwX3ZlcmlmeV9zdHJpbmc7CisrCQlCTl9tb2RfbHNoaWZ0OworKwkJS1JCNV9BVVRIREFUQV9pdDsKKysJCWFzbjFfc2V0X2Nob2ljZV9zZWxlY3RvcjsKKysJCU9DU1BfYmFzaWNfYWRkMV9zdGF0dXM7CisrCQlPQ1NQX1JFU1BJRF9mcmVlOworKwkJYXNuMV9nZXRfZmllbGRfcHRyOworKwkJVUlfYWRkX2lucHV0X3N0cmluZzsKKysJCU9DU1BfQ1JMSURfaXQ7CisrCQlpMmRfS1JCNV9BVVRIRU5UQk9EWTsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2NvdW50OworKwkJRU5HSU5FX2xvYWRfYXRhbGxhOworKwkJWDUwOV9OQU1FX2l0OworKwkJVVNFUk5PVElDRV9pdDsKKysJCU9DU1BfUkVRSU5GT19uZXc7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0OworKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGxlbWVudGF0aW9uOworKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGw7CisrCQlBU04xX2l0ZW1fcGFjazsKKysJCWkyZF9LUkI1X0VOQ0RBVEE7CisrCQlYNTA5X1BVUlBPU0Vfc2V0OworKwkJWDUwOV9SRVFfSU5GT19pdDsKKysJCVVJX21ldGhvZF9zZXRfb3BlbmVyOworKwkJQVNOMV9pdGVtX2V4X2ZyZWU7CisrCQlBU04xX0JPT0xFQU5faXQ7CisrCQlFTkdJTkVfZ2V0X3RhYmxlX2ZsYWdzOworKwkJVUlfY3JlYXRlX21ldGhvZDsKKysJCU9DU1BfT05FUkVRX2FkZDFfZXh0X2kyZDsKKysJCV9zaGFkb3dfREVTX2NoZWNrX2tleTsKKysJCWQyaV9PQ1NQX1JFUUlORk87CisrCQlVSV9hZGRfaW5mb19zdHJpbmc7CisrCQlVSV9nZXRfcmVzdWx0X21pbnNpemU7CisrCQlBU04xX05VTExfaXQ7CisrCQlCTl9tb2RfbHNoaWZ0MTsKKysJCWQyaV9PQ1NQX09ORVJFUTsKKysJCU9DU1BfT05FUkVRX25ldzsKKysJCUtSQjVfVElDS0VUX2l0OworKwkJRVZQX2Flc18xOTJfY2JjOworKwkJS1JCNV9USUNLRVRfZnJlZTsKKysJCVVJX25ldzsKKysJCU9DU1BfcmVzcG9uc2VfY3JlYXRlOworKwkJX29zc2xfb2xkX2Rlc194Y2JjX2VuY3J5cHQ7CisrCQlQS0NTN19pdDsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdDsKKysJCUVOR0lORV9zZXRfZmxhZ3M7CisrCQlfb3NzbF9vbGRfZGVzX2VjYl9lbmNyeXB0OworKwkJT0NTUF9yZXNwb25zZV9nZXQxX2Jhc2ljOworKwkJRVZQX0RpZ2VzdDsKKysJCU9DU1BfT05FUkVRX2RlbGV0ZV9leHQ7CisrCQlBU04xX1RCT09MRUFOX2l0OworKwkJQVNOMV9pdGVtX25ldzsKKysJCUFTTjFfVElNRV90b19nZW5lcmFsaXplZHRpbWU7CisrCQlCSUdOVU1faXQ7CisrCQlBRVNfY2JjX2VuY3J5cHQ7CisrCQlFTkdJTkVfZ2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2ZuOworKwkJT0NTUF9SRVNQT05TRV9mcmVlOworKwkJVUlfbWV0aG9kX3NldF9yZWFkZXI7CisrCQlpMmRfQVNOMV9UNjFTVFJJTkc7CisrCQlFQ19QT0lOVF9zZXRfdG9faW5maW5pdHk7CisrCQlFUlJfbG9hZF9PQ1NQX3N0cmluZ3M7CisrCQlFQ19QT0lOVF9wb2ludDJvY3Q7CisrCQlLUkI1X0FQUkVRX2ZyZWU7CisrCQlBU04xX09CSkVDVF9pdDsKKysJCU9DU1BfY3JsSURfbmV3OworKwkJT0NTUF9jcmxJRDJfbmV3OworKwkJQ09ORl9tb2R1bGVzX2xvYWRfZmlsZTsKKysJCUNPTkZfaW1vZHVsZV9zZXRfdXNyX2RhdGE7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfc3RyaW5nOworKwkJQ09ORl9tb2R1bGVfZ2V0X3Vzcl9kYXRhOworKwkJQVNOMV9hZGRfb2lkX21vZHVsZTsKKysJCUNPTkZfbW9kdWxlc19maW5pc2g7CisrCQlPUEVOU1NMX2NvbmZpZzsKKysJCUNPTkZfbW9kdWxlc191bmxvYWQ7CisrCQlDT05GX2ltb2R1bGVfZ2V0X3ZhbHVlOworKwkJQ09ORl9tb2R1bGVfc2V0X3Vzcl9kYXRhOworKwkJQ09ORl9wYXJzZV9saXN0OworKwkJQ09ORl9tb2R1bGVfYWRkOworKwkJQ09ORl9nZXQxX2RlZmF1bHRfY29uZmlnX2ZpbGU7CisrCQlDT05GX2ltb2R1bGVfZ2V0X2ZsYWdzOworKwkJQ09ORl9pbW9kdWxlX2dldF9tb2R1bGU7CisrCQlDT05GX21vZHVsZXNfbG9hZDsKKysJCUNPTkZfaW1vZHVsZV9nZXRfbmFtZTsKKysJCUVSUl9wZWVrX3RvcF9lcnJvcjsKKysJCUNPTkZfaW1vZHVsZV9nZXRfdXNyX2RhdGE7CisrCQlDT05GX2ltb2R1bGVfc2V0X2ZsYWdzOworKwkJRU5HSU5FX2FkZF9jb25mX21vZHVsZTsKKysJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZTsKKysJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZV9kYXRhOworKwkJRVJSX3BlZWtfbGFzdF9lcnJvcjsKKysJCURFU19yZWFkXzJwYXNzd29yZHM7CisrCQlERVNfcmVhZF9wYXNzd29yZDsKKysJCVVJX1VUSUxfcmVhZF9wdzsKKysJCVVJX1VUSUxfcmVhZF9wd19zdHJpbmc7CisrCQlFTkdJTkVfbG9hZF9hZXA7CisrCQlFTkdJTkVfbG9hZF9zdXJld2FyZTsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX25vY29uZjsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX25vY29uZjsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX2NvbmY7CisrCQlPUEVOU1NMX2FkZF9hbGxfYWxnb19jb25mOworKwkJT1BFTlNTTF9sb2FkX2J1aWx0aW5fbW9kdWxlczsKKysJCUFFU19vZmIxMjhfZW5jcnlwdDsKKysJCUFFU19jdHIxMjhfZW5jcnlwdDsKKysJCUFFU19jZmIxMjhfZW5jcnlwdDsKKysJCUVOR0lORV9sb2FkXzQ3NThjY2E7CisrCQlfb3NzbF8wOTZfZGVzX3JhbmRvbV9zZWVkOworKwkJRVZQX2Flc18yNTZfb2ZiOworKwkJRVZQX2Flc18xOTJfb2ZiOworKwkJRVZQX2Flc18xMjhfY2ZiMTI4OworKwkJRVZQX2Flc18yNTZfY2ZiMTI4OworKwkJRVZQX2Flc18xMjhfb2ZiOworKwkJRVZQX2Flc18xOTJfY2ZiMTI4OworKwkJQ09ORl9tb2R1bGVzX2ZyZWU7CisrCQlOQ09ORl9kZWZhdWx0OworKwkJT1BFTlNTTF9ub19jb25maWc7CisrCQlOQ09ORl9XSU4zMjsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX25ldzsKKysJCUVWUF9kZXNfZWRlX2VjYjsKKysJCWkyZF9BU04xX1VOSVZFUlNBTFNUUklORzsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2ZyZWU7CisrCQlBU04xX1VOSVZFUlNBTFNUUklOR19pdDsKKysJCWQyaV9BU04xX1VOSVZFUlNBTFNUUklORzsKKysJCUVWUF9kZXNfZWRlM19lY2I7CisrCQlYNTA5X1JFUV9wcmludF9leDsKKysJCUVOR0lORV91cF9yZWY7CisrCQlCVUZfTUVNX2dyb3dfY2xlYW47CisrCQlDUllQVE9fcmVhbGxvY19jbGVhbjsKKysJCUJVRl9zdHJsY2F0OworKwkJQklPX2luZGVudDsKKysJCUJVRl9zdHJsY3B5OworKwkJT3BlblNTTERpZTsKKysJCU9QRU5TU0xfY2xlYW5zZTsKKysJCUVOR0lORV9zZXR1cF9ic2RfY3J5cHRvZGV2OworKwkJRVJSX3JlbGVhc2VfZXJyX3N0YXRlX3RhYmxlOworKwkJRVZQX2Flc18xMjhfY2ZiODsKKysJCUZJUFNfY29ycnVwdF9yc2E7CisrCQlGSVBTX3NlbGZ0ZXN0X2RlczsKKysJCUVWUF9hZXNfMTI4X2NmYjE7CisrCQlFVlBfYWVzXzE5Ml9jZmI4OworKwkJRklQU19tb2RlX3NldDsKKysJCUZJUFNfc2VsZnRlc3RfZHNhOworKwkJRVZQX2Flc18yNTZfY2ZiODsKKysJCUZJUFNfYWxsb3dfbWQ1OworKwkJREVTX2VkZTNfY2ZiX2VuY3J5cHQ7CisrCQlFVlBfZGVzX2VkZTNfY2ZiODsKKysJCUZJUFNfcmFuZF9zZWVkZWQ7CisrCQlBRVNfY2Zicl9lbmNyeXB0X2Jsb2NrOworKwkJQUVTX2NmYjhfZW5jcnlwdDsKKysJCUZJUFNfcmFuZF9zZWVkOworKwkJRklQU19jb3JydXB0X2RlczsKKysJCUVWUF9hZXNfMTkyX2NmYjE7CisrCQlGSVBTX3NlbGZ0ZXN0X2FlczsKKysJCUZJUFNfc2V0X3Bybmdfa2V5OworKwkJRVZQX2Rlc19jZmI4OworKwkJRklQU19jb3JydXB0X2RzYTsKKysJCUZJUFNfdGVzdF9tb2RlOworKwkJRklQU19yYW5kX21ldGhvZDsKKysJCUVWUF9hZXNfMjU2X2NmYjE7CisrCQlFUlJfbG9hZF9GSVBTX3N0cmluZ3M7CisrCQlGSVBTX2NvcnJ1cHRfYWVzOworKwkJRklQU19zZWxmdGVzdF9zaGExOworKwkJRklQU19zZWxmdGVzdF9yc2E7CisrCQlGSVBTX2NvcnJ1cHRfc2hhMTsKKysJCUVWUF9kZXNfY2ZiMTsKKysJCUZJUFNfZHNhX2NoZWNrOworKwkJQUVTX2NmYjFfZW5jcnlwdDsKKysJCUVWUF9kZXNfZWRlM19jZmIxOworKwkJRklQU19yYW5kX2NoZWNrOworKwkJRklQU19tZDVfYWxsb3dlZDsKKysJCUZJUFNfbW9kZTsKKysJCUZJUFNfc2VsZnRlc3RfZmFpbGVkOworKwkJc2tfaXNfc29ydGVkOworKwkJWDUwOV9jaGVja19jYTsKKysJCUhNQUNfQ1RYX3NldF9mbGFnczsKKysJCWQyaV9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOworKwkJUFJPWFlfUE9MSUNZX2l0OworKwkJaTJkX1BST1hZX1BPTElDWTsKKysJCWkyZF9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOworKwkJZDJpX1BST1hZX1BPTElDWTsKKysJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05fbmV3OworKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9mcmVlOworKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9pdDsKKysJCVBST1hZX1BPTElDWV9mcmVlOworKwkJUFJPWFlfUE9MSUNZX25ldzsKKysJCUJOX01PTlRfQ1RYX3NldF9sb2NrZWQ7CisrCQlGSVBTX3NlbGZ0ZXN0X3JuZzsKKysJCUVWUF9zaGEzODQ7CisrCQlFVlBfc2hhNTEyOworKwkJRVZQX3NoYTIyNDsKKysJCUVWUF9zaGEyNTY7CisrCQlGSVBTX3NlbGZ0ZXN0X2htYWM7CisrCQlGSVBTX2NvcnJ1cHRfcm5nOworKwkJQk5fbW9kX2V4cF9tb250X2NvbnN0dGltZTsKKysJCVJTQV9YOTMxX2hhc2hfaWQ7CisrCQlSU0FfcGFkZGluZ19jaGVja19YOTMxOworKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1M7CisrCQlSU0FfcGFkZGluZ19hZGRfWDkzMTsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1M7CisrCQlQS0NTMV9NR0YxOworKwkJQk5fWDkzMV9nZW5lcmF0ZV9YcHE7CisrCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXk7CisrCQlCTl9YOTMxX2Rlcml2ZV9wcmltZTsKKysJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWU7CisrCQlSU0FfWDkzMV9kZXJpdmU7CisrCQlCSU9fbmV3X2RncmFtOworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzM4NDsKKysJCUVSUl9zZXRfbWFyazsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldDBfY3JsczsKKysJCUVOR0lORV9zZXRfU1RPUkU7CisrCQlFTkdJTkVfcmVnaXN0ZXJfRUNEU0E7CisrCQlTVE9SRV9tZXRoX3NldF9saXN0X3N0YXJ0X2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOworKwkJQk5fQkxJTkRJTkdfaW52ZXJ0X2V4OworKwkJTkFNRV9DT05TVFJBSU5UU19mcmVlOworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9udW1iZXI7CisrCQlCTl9CTElORElOR19nZXRfdGhyZWFkX2lkOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9wYXJhbTsKKysJCVBPTElDWV9NQVBQSU5HX2l0OworKwkJU1RPUkVfcGFyc2VfYXR0cnNfc3RhcnQ7CisrCQlQT0xJQ1lfQ09OU1RSQUlOVFNfZnJlZTsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlCTl9uaXN0X21vZF8xOTI7CisrCQlFQ19HUk9VUF9nZXRfdHJpbm9taWFsX2Jhc2lzOworKwkJU1RPUkVfc2V0X21ldGhvZDsKKysJCUdFTkVSQUxfU1VCVFJFRV9mcmVlOworKwkJTkFNRV9DT05TVFJBSU5UU19pdDsKKysJCUVDREhfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUEtDUzEyX2FkZF9zYWZlOworKwkJRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lOworKwkJU1RPUkVfbWV0aF9nZXRfdXBkYXRlX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247CisrCQlFTkdJTkVfcmVnaXN0ZXJfRUNESDsKKysJCVNIQTUxMl9VcGRhdGU7CisrCQlpMmRfRUNQcml2YXRlS2V5OworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzE5MjsKKysJCVNUT1JFX21vZGlmeV9jZXJ0aWZpY2F0ZTsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGMm07CisrCQlCTl9HRjJtX21vZF9leHBfYXJyOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9udW1iZXI7CisrCQlYNTA5X2tleWlkX2dldDA7CisrCQlFTkdJTkVfbG9hZF9nbXA7CisrCQlwaXRlbV9uZXc7CisrCQlCTl9HRjJtX21vZF9tdWxfYXJyOworKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZHA7CisrCQlvMmlfRUNQdWJsaWNLZXk7CisrCQlFQ19LRVlfY29weTsKKysJCUJJT19kdW1wX2ZwOworKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BhcmVudDsKKysJCUVDX0dST1VQX2NoZWNrX2Rpc2NyaW1pbmFudDsKKysJCWkyb19FQ1B1YmxpY0tleTsKKysJCUVDX0tFWV9wcmVjb21wdXRlX211bHQ7CisrCQlhMmlfSVBBRERSRVNTOworKwkJU1RPUkVfbWV0aF9zZXRfaW5pdGlhbGlzZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfaW5pdGlhbGlzZV9mdW5jdGlvbjsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZXB0aDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2luaGVyaXQ7CisrCQlFQ19QT0lOVF9wb2ludDJibjsKKysJCVNUT1JFX0FUVFJfSU5GT19zZXRfZG47CisrCQlYNTA5X3BvbGljeV90cmVlX2dldDBfcG9saWNpZXM7CisrCQlFQ19HUk9VUF9uZXdfY3VydmVfR0YybTsKKysJCVNUT1JFX2Rlc3Ryb3lfbWV0aG9kOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfU1RPUkU7CisrCQlFVlBfUEtFWV9nZXQxX0VDX0tFWTsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX251bWJlcjsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9FQ0RIOworKwkJRUNfS0VZX2dldF9jb252X2Zvcm07CisrCQlBU04xX09DVEVUX1NUUklOR19OREVGX2l0OworKwkJU1RPUkVfZGVsZXRlX3B1YmxpY19rZXk7CisrCQlTVE9SRV9nZXRfcHVibGljX2tleTsKKysJCVNUT1JFX21vZGlmeV9hcmJpdHJhcnk7CisrCQlFTkdJTkVfZ2V0X3N0YXRpY19zdGF0ZTsKKysJCXBxdWV1ZV9pdGVyYXRvcjsKKysJCUVDRFNBX1NJR19uZXc7CisrCQlPUEVOU1NMX0RJUl9lbmQ7CisrCQlCTl9HRjJtX21vZF9zcXI7CisrCQlFQ19QT0lOVF9ibjJwb2ludDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9kZXB0aDsKKysJCUVDX0tFWV9zZXRfYXNuMV9mbGFnOworKwkJU1RPUkVfZ2V0X21ldGhvZDsKKysJCUVDX0tFWV9nZXRfa2V5X21ldGhvZF9kYXRhOworKwkJRUNEU0Ffc2lnbl9leDsKKysJCVNUT1JFX3BhcnNlX2F0dHJzX2VuZDsKKysJCUVDX0dST1VQX2dldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07CisrCQlFQ19HUk9VUF9nZXRfcG9pbnRfY29udl9mb3JtOworKwkJU1RPUkVfbWV0aG9kX3NldF9zdG9yZV9mdW5jdGlvbjsKKysJCVNUT1JFX0FUVFJfSU5GT19pbjsKKysJCVBFTV9yZWFkX2Jpb19FQ1BLUGFyYW1ldGVyczsKKysJCUVDX0dST1VQX2dldF9wZW50YW5vbWlhbF9iYXNpczsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV90eHQ7CisrCQlCTl9CTElORElOR19zZXRfZmxhZ3M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX3BvbGljaWVzOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9uYW1lOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3B1cnBvc2U7CisrCQlTVE9SRV9nZXRfbnVtYmVyOworKwkJRUNEU0Ffc2lnbl9zZXR1cDsKKysJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWRfYXJyOworKwkJRUNfS0VZX3VwX3JlZjsKKysJCVBPTElDWV9NQVBQSU5HX2ZyZWU7CisrCQlCTl9HRjJtX21vZF9kaXY7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3M7CisrCQlFQ19LRVlfZnJlZTsKKysJCVNUT1JFX21ldGhfc2V0X2xpc3RfbmV4dF9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOworKwkJUEVNX3dyaXRlX2Jpb19FQ1ByaXZhdGVLZXk7CisrCQlkMmlfRUNfUFVCS0VZOworKwkJU1RPUkVfbWV0aF9nZXRfZ2VuZXJhdGVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2dlbmVyYXRlX2Z1bmN0aW9uOworKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9lbmRfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3RfZW5kX2Z1bmN0aW9uOworKwkJcHF1ZXVlX3ByaW50OworKwkJRUNfR1JPVVBfaGF2ZV9wcmVjb21wdXRlX211bHQ7CisrCQlFQ19LRVlfcHJpbnRfZnA7CisrCQlCTl9HRjJtX21vZF9hcnI7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ0VSVF9QQUlSOworKwkJRVZQX1BLRVlfY21wOworKwkJWDUwOV9wb2xpY3lfbGV2ZWxfbm9kZV9jb3VudDsKKysJCVNUT1JFX25ld19lbmdpbmU7CisrCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfc3RhcnQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9uZXc7CisrCQlFQ0RIX2dldF9leF9kYXRhOworKwkJRVZQX1BLRVlfZ2V0X2F0dHI7CisrCQlFQ0RTQV9kb19zaWduOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNESDsKKysJCUVDREhfT3BlblNTTDsKKysJCUVDX0tFWV9zZXRfY29udl9mb3JtOworKwkJRUNfUE9JTlRfZHVwOworKwkJR0VORVJBTF9TVUJUUkVFX25ldzsKKysJCVNUT1JFX2xpc3RfY3JsX2VuZHA7CisrCQlFQ19nZXRfYnVpbHRpbl9jdXJ2ZXM7CisrCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcXVhbGlmaWVyczsKKysJCVg1MDlfcGN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOworKwkJU1RPUkVfbGlzdF9jcmxfZW5kOworKwkJRVZQX1BLRVlfc2V0MV9FQ19LRVk7CisrCQlCTl9HRjJtX21vZF9zcXJ0X2FycjsKKysJCWkyZF9FQ1ByaXZhdGVLZXlfYmlvOworKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnRfZnA7CisrCQlwcXVldWVfZmluZDsKKysJCUVDRFNBX1NJR19mcmVlOworKwkJUEVNX3dyaXRlX2Jpb19FQ1BLUGFyYW1ldGVyczsKKysJCVNUT1JFX21ldGhvZF9zZXRfY3RybF9mdW5jdGlvbjsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9lbmQ7CisrCQlFQ19LRVlfc2V0X3ByaXZhdGVfa2V5OworKwkJcHF1ZXVlX3BlZWs7CisrCQlTVE9SRV9nZXRfYXJiaXRyYXJ5OworKwkJU1RPUkVfc3RvcmVfY3JsOworKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BvbGljeTsKKysJCVBLQ1MxMl9hZGRfc2FmZXM7CisrCQlCTl9CTElORElOR19jb252ZXJ0X2V4OworKwkJWDUwOV9wb2xpY3lfdHJlZV9mcmVlOworKwkJT1BFTlNTTF9pYTMyY2FwX2xvYzsKKysJCUJOX0dGMm1fcG9seTJhcnI7CisrCQlTVE9SRV9jdHJsOworKwkJU1RPUkVfQVRUUl9JTkZPX2NvbXBhcmU7CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMjI0OworKwkJaTJkX0VDUGFyYW1ldGVyczsKKysJCWkyZF9FQ1BLUGFyYW1ldGVyczsKKysJCUJOX0dFTkNCX2NhbGw7CisrCQlkMmlfRUNQS1BhcmFtZXRlcnM7CisrCQlTVE9SRV9tZXRoX3NldF9nZW5lcmF0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZ2VuZXJhdGVfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X0VDREg7CisrCQlOQU1FX0NPTlNUUkFJTlRTX25ldzsKKysJCVNIQTI1Nl9Jbml0OworKwkJRUNfS0VZX2dldDBfcHVibGljX2tleTsKKysJCVBFTV93cml0ZV9iaW9fRUNfUFVCS0VZOworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9jc3RyOworKwkJU1RPUkVfbGlzdF9jcmxfbmV4dDsKKysJCVNUT1JFX0FUVFJfSU5GT19pbl9yYW5nZTsKKysJCUVDUGFyYW1ldGVyc19wcmludDsKKysJCVNUT1JFX21ldGhfc2V0X2RlbGV0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZGVsZXRlX2Z1bmN0aW9uOworKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9uZXh0OworKwkJQVNOMV9nZW5lcmF0ZV9uY29uZjsKKysJCUJVRl9tZW1kdXA7CisrCQlCTl9HRjJtX21vZF9tdWw7CisrCQlTVE9SRV9tZXRoX2dldF9saXN0X25leHRfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfbmV4dF9mdW5jdGlvbjsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX2RuOworKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9uZXh0OworKwkJRUNfR1JPVVBfc2V0X3NlZWQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdHJ1c3Q7CisrCQlTVE9SRV9BVFRSX0lORk9fZnJlZTsKKysJCVNUT1JFX2dldF9wcml2YXRlX2tleTsKKysJCUVWUF9QS0VZX2dldF9hdHRyX2NvdW50OworKwkJU1RPUkVfQVRUUl9JTkZPX25ldzsKKysJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRjJtOworKwkJU1RPUkVfbWV0aF9zZXRfcmV2b2tlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9yZXZva2VfZnVuY3Rpb247CisrCQlTVE9SRV9zdG9yZV9udW1iZXI7CisrCQlCTl9pc19wcmltZV9leDsKKysJCVNUT1JFX3Jldm9rZV9wdWJsaWNfa2V5OworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wYXJhbTsKKysJCVNUT1JFX2RlbGV0ZV9hcmJpdHJhcnk7CisrCQlQRU1fcmVhZF9YNTA5X0NFUlRfUEFJUjsKKysJCVg1MDlfU1RPUkVfc2V0X2RlcHRoOworKwkJRUNEU0FfZ2V0X2V4X2RhdGE7CisrCQlTSEEyMjQ7CisrCQlCSU9fZHVtcF9pbmRlbnRfZnA7CisrCQlFQ19LRVlfc2V0X2dyb3VwOworKwkJQlVGX3N0cm5kdXA7CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX3N0YXJ0OworKwkJQk5fR0YybV9tb2Q7CisrCQlYNTA5X1JFUV9jaGVja19wcml2YXRlX2tleTsKKysJCUVDX0dST1VQX2dldF9zZWVkX2xlbjsKKysJCUVSUl9sb2FkX1NUT1JFX3N0cmluZ3M7CisrCQlQRU1fcmVhZF9iaW9fRUNfUFVCS0VZOworKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9lbmQ7CisrCQlpMmRfRUNfUFVCS0VZOworKwkJRUNEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJQVNOMV9wdXRfZW9jOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxpY2l0X3BvbGljeTsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9leHBsX3BvbGljeTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3RhYmxlX2NsZWFudXA7CisrCQlTVE9SRV9tb2RpZnlfcHJpdmF0ZV9rZXk7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9mcmVlOworKwkJRUNfTUVUSE9EX2dldF9maWVsZF90eXBlOworKwkJRUNfR0ZwX25pc3RfbWV0aG9kOworKwkJU1RPUkVfbWV0aF9zZXRfbW9kaWZ5X2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9tb2RpZnlfZnVuY3Rpb247CisrCQlTVE9SRV9wYXJzZV9hdHRyc19uZXh0OworKwkJRU5HSU5FX2xvYWRfcGFkbG9jazsKKysJCUVDX0dST1VQX3NldF9jdXJ2ZV9uYW1lOworKwkJWDUwOV9DRVJUX1BBSVJfaXQ7CisrCQlTVE9SRV9tZXRoX2dldF9yZXZva2VfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X3Jldm9rZV9mdW5jdGlvbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZ2V0X2Z1bmN0aW9uOworKwkJU1RPUkVfbW9kaWZ5X251bWJlcjsKKysJCVNUT1JFX21ldGhvZF9nZXRfc3RvcmVfZnVuY3Rpb247CisrCQlTVE9SRV9zdG9yZV9wcml2YXRlX2tleTsKKysJCUJOX0dGMm1fbW9kX3Nxcl9hcnI7CisrCQlSU0Ffc2V0dXBfYmxpbmRpbmc7CisrCQlCSU9fc19kYXRhZ3JhbTsKKysJCVNUT1JFX01lbW9yeTsKKysJCXNrX2ZpbmRfZXg7CisrCQlFQ19HUk9VUF9zZXRfY3VydmVfR0YybTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RTQTsKKysJCVBPTElDWV9DT05TVFJBSU5UU19uZXc7CisrCQlCTl9HRjJtX21vZF9zcXJ0OworKwkJRUNESF9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlFQ19LRVlfZ2VuZXJhdGVfa2V5OworKwkJU0hBMzg0X1VwZGF0ZTsKKysJCUJOX0dGMm1fYXJyMnBvbHk7CisrCQlTVE9SRV9tZXRob2RfZ2V0X2dldF9mdW5jdGlvbjsKKysJCVNUT1JFX21ldGhfc2V0X2NsZWFudXBfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2NsZWFudXBfZnVuY3Rpb247CisrCQlFQ19HUk9VUF9jaGVjazsKKysJCWQyaV9FQ1ByaXZhdGVLZXlfYmlvOworKwkJRUNfS0VZX2luc2VydF9rZXlfbWV0aG9kX2RhdGE7CisrCQlTVE9SRV9tZXRoX2dldF9sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2RlcHRoOworKwkJU0hBMjI0X0ZpbmFsOworKwkJU1RPUkVfbWV0aF9zZXRfdXBkYXRlX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247CisrCQlTSEEyMjRfVXBkYXRlOworKwkJZDJpX0VDUHJpdmF0ZUtleTsKKysJCUFTTjFfaXRlbV9uZGVmX2kyZDsKKysJCVNUT1JFX2RlbGV0ZV9wcml2YXRlX2tleTsKKysJCUVSUl9wb3BfdG9fbWFyazsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfU1RPUkU7CisrCQlYNTA5X3BvbGljeV9sZXZlbF9nZXQwX25vZGU7CisrCQlpMmRfUEtDUzdfTkRFRjsKKysJCUVDX0dST1VQX2dldF9kZWdyZWU7CisrCQlBU04xX2dlbmVyYXRlX3YzOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9jc3RyOworKwkJWDUwOV9wb2xpY3lfdHJlZV9sZXZlbF9jb3VudDsKKysJCUJOX0dGMm1fYWRkOworKwkJRUNfS0VZX2dldDBfZ3JvdXA7CisrCQlTVE9SRV9nZW5lcmF0ZV9jcmw7CisrCQlTVE9SRV9zdG9yZV9wdWJsaWNfa2V5OworKwkJWDUwOV9DRVJUX1BBSVJfZnJlZTsKKysJCVNUT1JFX3Jldm9rZV9wcml2YXRlX2tleTsKKysJCUJOX25pc3RfbW9kXzIyNDsKKysJCVNIQTUxMl9GaW5hbDsKKysJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfZG47CisrCQlTVE9SRV9tZXRoX2dldF9pbml0aWFsaXNlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9pbml0aWFsaXNlX2Z1bmN0aW9uOworKwkJU1RPUkVfZGVsZXRlX251bWJlcjsKKysJCWkyZF9FQ19QVUJLRVlfYmlvOworKwkJQklPX2RncmFtX25vbl9mYXRhbF9lcnJvcjsKKysJCUVDX0dST1VQX2dldF9hc24xX2ZsYWc7CisrCQlTVE9SRV9BVFRSX0lORk9faW5fZXg7CisrCQlTVE9SRV9saXN0X2NybF9zdGFydDsKKysJCUVDREhfZ2V0X2V4X25ld19pbmRleDsKKysJCVNUT1JFX21ldGhfZ2V0X21vZGlmeV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbW9kaWZ5X2Z1bmN0aW9uOworKwkJdjJpX0FTTjFfQklUX1NUUklORzsKKysJCVNUT1JFX3N0b3JlX2NlcnRpZmljYXRlOworKwkJT0JKX2JzZWFyY2hfZXg7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZGVmYXVsdDsKKysJCVNUT1JFX0FUVFJfSU5GT19zZXRfc2hhMXN0cjsKKysJCUJOX0dGMm1fbW9kX2ludjsKKysJCUJOX0dGMm1fbW9kX2V4cDsKKysJCVNUT1JFX21vZGlmeV9wdWJsaWNfa2V5OworKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9zdGFydF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9zdGFydF9mdW5jdGlvbjsKKysJCUVDX0dST1VQX2dldDBfc2VlZDsKKysJCVNUT1JFX3N0b3JlX2FyYml0cmFyeTsKKysJCVNUT1JFX21ldGhfc2V0X3VubG9ja19zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJQk5fR0YybV9tb2RfZGl2X2FycjsKKysJCUVOR0lORV9zZXRfRUNEU0E7CisrCQlTVE9SRV9jcmVhdGVfbWV0aG9kOworKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnQ7CisrCQlFQ19LRVlfZ2V0MF9wcml2YXRlX2tleTsKKysJCVBFTV93cml0ZV9FQ19QVUJLRVk7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxOworKwkJRUNESF9zZXRfbWV0aG9kOworKwkJdjJpX0dFTkVSQUxfTkFNRV9leDsKKysJCUVDREhfc2V0X2V4X2RhdGE7CisrCQlTVE9SRV9nZW5lcmF0ZV9rZXk7CisrCQlCTl9uaXN0X21vZF81MjE7CisrCQlYNTA5X3BvbGljeV90cmVlX2dldDBfbGV2ZWw7CisrCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udmVyc2lvbl9mb3JtOworKwkJRUNfR1JPVVBfc2V0X3BvaW50X2NvbnZfZm9ybTsKKysJCVBFTV9yZWFkX0VDX1BVQktFWTsKKysJCWkyZF9FQ0RTQV9TSUc7CisrCQlFQ0RTQV9PcGVuU1NMOworKwkJU1RPUkVfZGVsZXRlX2NybDsKKysJCUVDX0tFWV9nZXRfZW5jX2ZsYWdzOworKwkJQVNOMV9jb25zdF9jaGVja19pbmZpbml0ZV9lbmQ7CisrCQlFVlBfUEtFWV9kZWxldGVfYXR0cjsKKysJCUVDRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGMm07CisrCQlFQ19QT0lOVF9zZXRfY29tcHJfY29vcmRzX0dGMm07CisrCQlFQ19HUk9VUF9jbXA7CisrCQlTVE9SRV9yZXZva2VfY2VydGlmaWNhdGU7CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMjU2OworKwkJU1RPUkVfbWV0aF9nZXRfZGVsZXRlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9kZWxldGVfZnVuY3Rpb247CisrCQlTSEEyMjRfSW5pdDsKKysJCVBFTV9yZWFkX0VDUHJpdmF0ZUtleTsKKysJCVNIQTUxMl9Jbml0OworKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kcDsKKysJCUJOX3NldF9uZWdhdGl2ZTsKKysJCUVSUl9sb2FkX0VDRFNBX3N0cmluZ3M7CisrCQlFQ19HUk9VUF9nZXRfYmFzaXNfdHlwZTsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9uZXh0OworKwkJaTJ2X0FTTjFfQklUX1NUUklORzsKKysJCVNUT1JFX09CSkVDVF9mcmVlOworKwkJQk5fbmlzdF9tb2RfMzg0OworKwkJaTJkX1g1MDlfQ0VSVF9QQUlSOworKwkJUEVNX3dyaXRlX0VDUEtQYXJhbWV0ZXJzOworKwkJRUNESF9jb21wdXRlX2tleTsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX3NoYTFzdHI7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0VDREg7CisrCQlwcXVldWVfcG9wOworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfY3N0cjsKKysJCVBPTElDWV9DT05TVFJBSU5UU19pdDsKKysJCVNUT1JFX2dldF9leF9uZXdfaW5kZXg7CisrCQlFVlBfUEtFWV9nZXRfYXR0cl9ieV9PQko7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3BvbGljeTsKKysJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWQ7CisrCQlTSEEyNTY7CisrCQlpMmRfRUNQcml2YXRlS2V5X2ZwOworKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX3VzZXJfcG9saWNpZXM7CisrCQlYNTA5X3BjeV90cmVlX2dldDBfdXNyX3BvbGljaWVzOworKwkJT1BFTlNTTF9ESVJfcmVhZDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNEU0E7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9sb29rdXA7CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm07CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jkc19HRjJtOworKwkJRUNfR1JPVVBfZHVwOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDRFNBOworKwkJRUNfS0VZX25ldzsKKysJCVNIQTI1Nl9UcmFuc2Zvcm07CisrCQlFQ19LRVlfc2V0X2VuY19mbGFnczsKKysJCUVDRFNBX3ZlcmlmeTsKKysJCUVDX1BPSU5UX3BvaW50MmhleDsKKysJCUVOR0lORV9nZXRfU1RPUkU7CisrCQlTSEE1MTI7CisrCQlTVE9SRV9nZXRfY2VydGlmaWNhdGU7CisrCQlFQ0RTQV9kb19zaWduX2V4OworKwkJRUNEU0FfZG9fdmVyaWZ5OworKwkJZDJpX0VDUHJpdmF0ZUtleV9mcDsKKysJCVNUT1JFX2RlbGV0ZV9jZXJ0aWZpY2F0ZTsKKysJCVNIQTUxMl9UcmFuc2Zvcm07CisrCQlYNTA5X1NUT1JFX3NldDFfcGFyYW07CisrCQlTVE9SRV9tZXRob2RfZ2V0X2N0cmxfZnVuY3Rpb247CisrCQlTVE9SRV9mcmVlOworKwkJUEVNX3dyaXRlX0VDUHJpdmF0ZUtleTsKKysJCVNUT1JFX21ldGhfZ2V0X3VubG9ja19zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJU1RPUkVfZ2V0X2V4X2RhdGE7CisrCQlFQ19LRVlfc2V0X3B1YmxpY19rZXk7CisrCQlQRU1fcmVhZF9FQ1BLUGFyYW1ldGVyczsKKysJCVg1MDlfQ0VSVF9QQUlSX25ldzsKKysJCUVOR0lORV9yZWdpc3Rlcl9TVE9SRTsKKysJCVJTQV9nZW5lcmF0ZV9rZXlfZXg7CisrCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKKysJCUVDUGFyYW1ldGVyc19wcmludF9mcDsKKysJCVg1MDlWM19OQU1FX2Zyb21fc2VjdGlvbjsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cjsKKysJCVNUT1JFX21vZGlmeV9jcmw7CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X3N0YXJ0OworKwkJUE9MSUNZX01BUFBJTkdTX2l0OworKwkJR0VORVJBTF9TVUJUUkVFX2l0OworKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX25hbWU7CisrCQlQRU1fd3JpdGVfWDUwOV9DRVJUX1BBSVI7CisrCQlCSU9fZHVtcF9pbmRlbnRfY2I7CisrCQlkMmlfWDUwOV9DRVJUX1BBSVI7CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZHA7CisrCQlhc24xX2NvbnN0X0ZpbmlzaDsKKysJCWkyZF9FQ19QVUJLRVlfZnA7CisrCQlCTl9uaXN0X21vZF8yNTY7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3RhYmxlOworKwkJcHF1ZXVlX2ZyZWU7CisrCQlCTl9CTElORElOR19jcmVhdGVfcGFyYW07CisrCQlFQ0RTQV9zaXplOworKwkJZDJpX0VDX1BVQktFWV9iaW87CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfNTIxOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9zaGExc3RyOworKwkJQk5fZ2VuZXJhdGVfcHJpbWVfZXg7CisrCQlFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZTsKKysJCVNIQTI1Nl9GaW5hbDsKKysJCURIX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXg7CisrCQlQRU1fcmVhZF9iaW9fRUNQcml2YXRlS2V5OworKwkJU1RPUkVfbWV0aF9nZXRfY2xlYW51cF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfY2xlYW51cF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfRUNESDsKKysJCWQyaV9FQ0RTQV9TSUc7CisrCQlCTl9pc19wcmltZV9mYXN0dGVzdF9leDsKKysJCUVDRFNBX3NpZ247CisrCQlYNTA5X3BvbGljeV9jaGVjazsKKysJCUVWUF9QS0VZX2dldF9hdHRyX2J5X05JRDsKKysJCVNUT1JFX3NldF9leF9kYXRhOworKwkJRU5HSU5FX2dldF9FQ0RTQTsKKysJCUVWUF9lY2RzYTsKKysJCUJOX0JMSU5ESU5HX2dldF9mbGFnczsKKysJCVBLQ1MxMl9hZGRfY2VydDsKKysJCVNUT1JFX09CSkVDVF9uZXc7CisrCQlFUlJfbG9hZF9FQ0RIX3N0cmluZ3M7CisrCQlFQ19LRVlfZHVwOworKwkJRVZQX0NJUEhFUl9DVFhfcmFuZF9rZXk7CisrCQlFQ0RTQV9zZXRfbWV0aG9kOworKwkJYTJpX0lQQUREUkVTU19OQzsKKysJCWQyaV9FQ1BhcmFtZXRlcnM7CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX2VuZDsKKysJCVNUT1JFX2dldF9jcmw7CisrCQlYNTA5X1BPTElDWV9OT0RFX3ByaW50OworKwkJU0hBMzg0X0luaXQ7CisrCQlFQ19HRjJtX3NpbXBsZV9tZXRob2Q7CisrCQlFQ0RTQV9zZXRfZXhfZGF0YTsKKysJCVNIQTM4NF9GaW5hbDsKKysJCVBLQ1M3X3NldF9kaWdlc3Q7CisrCQlFQ19LRVlfcHJpbnQ7CisrCQlTVE9SRV9tZXRoX3NldF9sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJRUNEU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCVNIQTM4NDsKKysJCVBPTElDWV9NQVBQSU5HX25ldzsKKysJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kcDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcG9saWN5X3RyZWU7CisrCQlFQ19HUk9VUF9zZXRfYXNuMV9mbGFnOworKwkJRUNfS0VZX2NoZWNrX2tleTsKKysJCWQyaV9FQ19QVUJLRVlfZnA7CisrCQlQS0NTN19zZXQwX3R5cGVfb3RoZXI7CisrCQlQRU1fcmVhZF9iaW9fWDUwOV9DRVJUX1BBSVI7CisrCQlwcXVldWVfbmV4dDsKKysJCVNUT1JFX21ldGhfZ2V0X2xpc3RfZW5kX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X2VuZF9mdW5jdGlvbjsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9PQko7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdGltZTsKKysJCXBxdWV1ZV9uZXc7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfRUNESDsKKysJCVNUT1JFX25ld19tZXRob2Q7CisrCQlQS0NTMTJfYWRkX2tleTsKKysJCURTT19tZXJnZTsKKysJCUVDX1BPSU5UX2hleDJwb2ludDsKKysJCUJJT19kdW1wX2NiOworKwkJU0hBMjU2X1VwZGF0ZTsKKysJCXBxdWV1ZV9pbnNlcnQ7CisrCQlwaXRlbV9mcmVlOworKwkJQk5fR0YybV9tb2RfaW52X2FycjsKKysJCUVOR0lORV91bnJlZ2lzdGVyX0VDRFNBOworKwkJQk5fQkxJTkRJTkdfc2V0X3RocmVhZF9pZDsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzgxOTI7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9jbGVhcl9mbGFnczsKKysJCWdldF9yZmMyNDA5X3ByaW1lXzEwMjQ7CisrCQlESF9jaGVja19wdWJfa2V5OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMjA0ODsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzYxNDQ7CisrCQlnZXRfcmZjMzUyNl9wcmltZV8xNTM2OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMzA3MjsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzQwOTY7CisrCQlnZXRfcmZjMjQwOV9wcmltZV83Njg7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZmxhZ3M7CisrCQlFVlBfQ0lQSEVSX0NUWF9uZXc7CisrCQlFVlBfQ0lQSEVSX0NUWF9mcmVlOworKwkJQ2FtZWxsaWFfY2JjX2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9jZmIxMjhfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYjFfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYjhfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2N0cjEyOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY2Zicl9lbmNyeXB0X2Jsb2NrOworKwkJQ2FtZWxsaWFfZGVjcnlwdDsKKysJCUNhbWVsbGlhX2VjYl9lbmNyeXB0OworKwkJQ2FtZWxsaWFfZW5jcnlwdDsKKysJCUNhbWVsbGlhX29mYjEyOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfc2V0X2tleTsKKysJCUVWUF9jYW1lbGxpYV8xMjhfY2JjOworKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmIxMjg7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjE7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjg7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2VjYjsKKysJCUVWUF9jYW1lbGxpYV8xMjhfb2ZiOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9jYmM7CisrCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjEyODsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiODsKKysJCUVWUF9jYW1lbGxpYV8xOTJfZWNiOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9vZmI7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2NiYzsKKysJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiMTI4OworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxOworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmI4OworKwkJRVZQX2NhbWVsbGlhXzI1Nl9lY2I7CisrCQlFVlBfY2FtZWxsaWFfMjU2X29mYjsKKysJCWEyaV9pcGFkZDsKKysJCUFTSWRlbnRpZmllcnNfZnJlZTsKKysJCWkyZF9BU0lkT3JSYW5nZTsKKysJCUVWUF9DSVBIRVJfYmxvY2tfc2l6ZTsKKysJCXYzX2FzaWRfaXNfY2Fub25pY2FsOworKwkJSVBBZGRyZXNzQ2hvaWNlX2ZyZWU7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfYXBwX2RhdGE7CisrCQlCSU9fc2V0X2NhbGxiYWNrX2FyZzsKKysJCXYzX2FkZHJfYWRkX3ByZWZpeDsKKysJCUlQQWRkcmVzc09yUmFuZ2VfaXQ7CisrCQlCSU9fc2V0X2ZsYWdzOworKwkJQVNJZGVudGlmaWVyc19pdDsKKysJCXYzX2FkZHJfZ2V0X3JhbmdlOworKwkJQklPX21ldGhvZF90eXBlOworKwkJdjNfYWRkcl9pbmhlcml0czsKKysJCUlQQWRkcmVzc0Nob2ljZV9pdDsKKysJCUFFU19pZ2VfZW5jcnlwdDsKKysJCXYzX2FkZHJfYWRkX3JhbmdlOworKwkJRVZQX0NJUEhFUl9DVFhfbmlkOworKwkJZDJpX0FTUmFuZ2U7CisrCQl2M19hZGRyX2FkZF9pbmhlcml0OworKwkJdjNfYXNpZF9hZGRfaWRfb3JfcmFuZ2U7CisrCQl2M19hZGRyX3ZhbGlkYXRlX3Jlc291cmNlX3NldDsKKysJCUVWUF9DSVBIRVJfaXZfbGVuZ3RoOworKwkJRVZQX01EX3R5cGU7CisrCQl2M19hc2lkX2Nhbm9uaXplOworKwkJSVBBZGRyZXNzUmFuZ2VfZnJlZTsKKysJCXYzX2FzaWRfYWRkX2luaGVyaXQ7CisrCQlFVlBfQ0lQSEVSX0NUWF9rZXlfbGVuZ3RoOworKwkJSVBBZGRyZXNzUmFuZ2VfbmV3OworKwkJQVNJZE9yUmFuZ2VfbmV3OworKwkJRVZQX01EX3NpemU7CisrCQlFVlBfTURfQ1RYX3Rlc3RfZmxhZ3M7CisrCQlCSU9fY2xlYXJfZmxhZ3M7CisrCQlpMmRfQVNSYW5nZTsKKysJCUlQQWRkcmVzc1JhbmdlX2l0OworKwkJSVBBZGRyZXNzQ2hvaWNlX25ldzsKKysJCUFTSWRlbnRpZmllckNob2ljZV9uZXc7CisrCQlBU1JhbmdlX2ZyZWU7CisrCQlFVlBfTURfcGtleV90eXBlOworKwkJRVZQX01EX0NUWF9jbGVhcl9mbGFnczsKKysJCUlQQWRkcmVzc0ZhbWlseV9mcmVlOworKwkJaTJkX0lQQWRkcmVzc0ZhbWlseTsKKysJCUlQQWRkcmVzc09yUmFuZ2VfbmV3OworKwkJRVZQX0NJUEhFUl9mbGFnczsKKysJCXYzX2FzaWRfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OworKwkJZDJpX0lQQWRkcmVzc1JhbmdlOworKwkJQUVTX2JpX2lnZV9lbmNyeXB0OworKwkJQklPX2dldF9jYWxsYmFjazsKKysJCUlQQWRkcmVzc09yUmFuZ2VfZnJlZTsKKysJCXYzX2FkZHJfc3Vic2V0OworKwkJZDJpX0lQQWRkcmVzc0ZhbWlseTsKKysJCXYzX2FzaWRfc3Vic2V0OworKwkJQklPX3Rlc3RfZmxhZ3M7CisrCQlpMmRfQVNJZGVudGlmaWVyQ2hvaWNlOworKwkJQVNSYW5nZV9pdDsKKysJCWQyaV9BU0lkZW50aWZpZXJzOworKwkJQVNSYW5nZV9uZXc7CisrCQlkMmlfSVBBZGRyZXNzQ2hvaWNlOworKwkJdjNfYWRkcl9nZXRfYWZpOworKwkJRVZQX0NJUEhFUl9rZXlfbGVuZ3RoOworKwkJRVZQX0NpcGhlcjsKKysJCWkyZF9JUEFkZHJlc3NPclJhbmdlOworKwkJQVNJZE9yUmFuZ2VfaXQ7CisrCQlFVlBfQ0lQSEVSX25pZDsKKysJCWkyZF9JUEFkZHJlc3NDaG9pY2U7CisrCQlFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplOworKwkJQVNJZGVudGlmaWVyc19uZXc7CisrCQl2M19hZGRyX3ZhbGlkYXRlX3BhdGg7CisrCQlJUEFkZHJlc3NGYW1pbHlfbmV3OworKwkJRVZQX01EX0NUWF9zZXRfZmxhZ3M7CisrCQl2M19hZGRyX2lzX2Nhbm9uaWNhbDsKKysJCWkyZF9JUEFkZHJlc3NSYW5nZTsKKysJCUlQQWRkcmVzc0ZhbWlseV9pdDsKKysJCXYzX2FzaWRfaW5oZXJpdHM7CisrCQlFVlBfQ0lQSEVSX0NUWF9jaXBoZXI7CisrCQlFVlBfQ0lQSEVSX0NUWF9nZXRfYXBwX2RhdGE7CisrCQlFVlBfTURfYmxvY2tfc2l6ZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2ZsYWdzOworKwkJdjNfYXNpZF92YWxpZGF0ZV9wYXRoOworKwkJZDJpX0lQQWRkcmVzc09yUmFuZ2U7CisrCQl2M19hZGRyX2Nhbm9uaXplOworKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2l0OworKwkJRVZQX01EX0NUWF9tZDsKKysJCWQyaV9BU0lkZW50aWZpZXJDaG9pY2U7CisrCQlCSU9fbWV0aG9kX25hbWU7CisrCQlFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGg7CisrCQlBU0lkT3JSYW5nZV9mcmVlOworKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2ZyZWU7CisrCQlCSU9fZ2V0X2NhbGxiYWNrX2FyZzsKKysJCUJJT19zZXRfY2FsbGJhY2s7CisrCQlkMmlfQVNJZE9yUmFuZ2U7CisrCQlpMmRfQVNJZGVudGlmaWVyczsKKysJCVNFRURfZGVjcnlwdDsKKysJCVNFRURfZW5jcnlwdDsKKysJCVNFRURfY2JjX2VuY3J5cHQ7CisrCQlFVlBfc2VlZF9vZmI7CisrCQlTRUVEX2NmYjEyOF9lbmNyeXB0OworKwkJU0VFRF9vZmIxMjhfZW5jcnlwdDsKKysJCUVWUF9zZWVkX2NiYzsKKysJCVNFRURfZWNiX2VuY3J5cHQ7CisrCQlFVlBfc2VlZF9lY2I7CisrCQlTRUVEX3NldF9rZXk7CisrCQlFVlBfc2VlZF9jZmIxMjg7CisrCQlYNTA5X0VYVEVOU0lPTlNfaXQ7CisrCQlYNTA5X2dldDFfb2NzcDsKKysJCU9DU1BfUkVRX0NUWF9mcmVlOworKwkJaTJkX1g1MDlfRVhURU5TSU9OUzsKKysJCU9DU1Bfc2VuZHJlcV9uYmlvOworKwkJT0NTUF9zZW5kcmVxX25ldzsKKysJCWQyaV9YNTA5X0VYVEVOU0lPTlM7CisrCQlYNTA5X0FMR09SU19pdDsKKysJCVg1MDlfQUxHT1JfZ2V0MDsKKysJCVg1MDlfQUxHT1Jfc2V0MDsKKysJCUFFU191bndyYXBfa2V5OworKwkJQUVTX3dyYXBfa2V5OworKwkJWDUwOWF0X2dldDBfZGF0YV9ieV9PQko7CisrCQlBU04xX1RZUEVfc2V0MTsKKysJCUFTTjFfU1RSSU5HX3NldDA7CisrCQlpMmRfWDUwOV9BTEdPUlM7CisrCQlCSU9fZl96bGliOworKwkJQ09NUF96bGliX2NsZWFudXA7CisrCQlkMmlfWDUwOV9BTEdPUlM7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfZnJlZTsKKysJCVBFTV93cml0ZV9DTVM7CisrCQlDTVNfYWRkMF9DZXJ0aWZpY2F0ZUNob2ljZXM7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKKysJCUVSUl9sb2FkX0NNU19zdHJpbmdzOworKwkJQ01TX3NpZ25fcmVjZWlwdDsKKysJCWkyZF9DTVNfQ29udGVudEluZm87CisrCQlDTVNfc2lnbmVkX2RlbGV0ZV9hdHRyOworKwkJZDJpX0NNU19iaW87CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfTklEOworKwkJQ01TX3ZlcmlmeTsKKysJCVNNSU1FX3JlYWRfQ01TOworKwkJQ01TX2RlY3J5cHRfc2V0MV9rZXk7CisrCQlDTVNfU2lnbmVySW5mb19nZXQwX2FsZ3M7CisrCQlDTVNfYWRkMV9jZXJ0OworKwkJQ01TX3NldF9kZXRhY2hlZDsKKysJCUNNU19lbmNyeXB0OworKwkJQ01TX0VudmVsb3BlZERhdGFfY3JlYXRlOworKwkJQ01TX3VuY29tcHJlc3M7CisrCQlDTVNfYWRkMF9jcmw7CisrCQlDTVNfU2lnbmVySW5mb192ZXJpZnlfY29udGVudDsKKysJCUNNU191bnNpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOworKwkJUEVNX3dyaXRlX2Jpb19DTVM7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHI7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2NlcnRfY21wOworKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX2FsZ3M7CisrCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9hbGdzOworKwkJQ01TX0NvbnRlbnRJbmZvX2ZyZWU7CisrCQlDTVNfZmluYWw7CisrCQlDTVNfYWRkX3NpbXBsZV9zbWltZWNhcDsKKysJCUNNU19TaWduZXJJbmZvX3ZlcmlmeTsKKysJCUNNU19kYXRhOworKwkJQ01TX0NvbnRlbnRJbmZvX2l0OworKwkJZDJpX0NNU19SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19jb21wcmVzczsKKysJCUNNU19kaWdlc3RfY3JlYXRlOworKwkJQ01TX1NpZ25lckluZm9fY2VydF9jbXA7CisrCQlDTVNfU2lnbmVySW5mb19zaWduOworKwkJQ01TX2RhdGFfY3JlYXRlOworKwkJaTJkX0NNU19iaW87CisrCQlDTVNfRW5jcnlwdGVkRGF0YV9zZXQxX2tleTsKKysJCUNNU19kZWNyeXB0OworKwkJaW50X3NtaW1lX3dyaXRlX0FTTjE7CisrCQlDTVNfdW5zaWduZWRfZGVsZXRlX2F0dHI7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfY291bnQ7CisrCQlDTVNfYWRkX3NtaW1lY2FwOworKwkJUEVNX3JlYWRfQ01TOworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9PQko7CisrCQlkMmlfQ01TX0NvbnRlbnRJbmZvOworKwkJQ01TX2FkZF9zdGFuZGFyZF9zbWltZWNhcDsKKysJCUNNU19Db250ZW50SW5mb19uZXc7CisrCQlDTVNfUmVjaXBpZW50SW5mb190eXBlOworKwkJQ01TX2dldDBfdHlwZTsKKysJCUNNU19pc19kZXRhY2hlZDsKKysJCUNNU19zaWduOworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHI7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfT0JKOworKwkJU01JTUVfd3JpdGVfQ01TOworKwkJQ01TX0VuY3J5cHRlZERhdGFfZGVjcnlwdDsKKysJCUNNU19nZXQwX1JlY2lwaWVudEluZm9zOworKwkJQ01TX2FkZDBfUmV2b2NhdGlvbkluZm9DaG9pY2U7CisrCQlDTVNfZGVjcnlwdF9zZXQxX3BrZXk7CisrCQlDTVNfU2lnbmVySW5mb19zZXQxX3NpZ25lcl9jZXJ0OworKwkJQ01TX2dldDBfc2lnbmVyczsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9nZXQwX3ZhbHVlczsKKysJCUNNU19zaWduZWRfZ2V0MF9kYXRhX2J5X09CSjsKKysJCUNNU19nZXQwX1NpZ25lckluZm9zOworKwkJQ01TX2FkZDBfY2VydDsKKysJCUNNU19FbmNyeXB0ZWREYXRhX2VuY3J5cHQ7CisrCQlDTVNfZGlnZXN0X3ZlcmlmeTsKKysJCUNNU19zZXQxX3NpZ25lcnNfY2VydHM7CisrCQlDTVNfc2lnbmVkX2dldF9hdHRyOworKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9rZXk7CisrCQlDTVNfU2lnbmVkRGF0YV9pbml0OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2VrcmlfZ2V0MF9pZDsKKysJCUNNU192ZXJpZnlfcmVjZWlwdDsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9pdDsKKysJCVBFTV9yZWFkX2Jpb19DTVM7CisrCQlDTVNfZ2V0MV9jcmxzOworKwkJQ01TX2FkZDBfcmVjaXBpZW50X2tleTsKKysJCVNNSU1FX3JlYWRfQVNOMTsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9uZXc7CisrCQlDTVNfZ2V0MF9jb250ZW50OworKwkJQ01TX2dldDFfUmVjZWlwdFJlcXVlc3Q7CisrCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV9PQko7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9pZF9jbXA7CisrCQlDTVNfYWRkMV9SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmVyX2lkOworKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyOworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7CisrCQlDTVNfZ2V0MV9jZXJ0czsKKysJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKKysJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OworKwkJQ01TX2RhdGFGaW5hbDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfZ2V0MF9zaWduZXJfaWQ7CisrCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9zaWdyX2lkOworKwkJaTJkX0NNU19SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19hZGQxX3JlY2lwaWVudF9jZXJ0OworKwkJQ01TX2RhdGFJbml0OworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OworKwkJQ01TX1JlY2lwaWVudEluZm9fZGVjcnlwdDsKKysJCUNNU19zaWduZWRfZ2V0X2F0dHJfY291bnQ7CisrCQlDTVNfZ2V0MF9lQ29udGVudFR5cGU7CisrCQlDTVNfc2V0MV9lQ29udGVudFR5cGU7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfY3JlYXRlMDsKKysJCUNNU19hZGQxX3NpZ25lcjsKKysJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGtleTsKKysJCUVOR0lORV9zZXRfbG9hZF9zc2xfY2xpZW50X2NlcnRfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2xkX3NzbF9jbG50X2NlcnRfZm47CisrCQlFTkdJTkVfZ2V0X3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2ZuOworKwkJRU5HSU5FX2xvYWRfc3NsX2NsaWVudF9jZXJ0OworKwkJRU5HSU5FX2xvYWRfY2FwaTsKKysJCU9QRU5TU0xfaXNzZXJ2aWNlOworKwkJRklQU19kc2Ffc2lnX2RlY29kZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2NsZWFyX2ZsYWdzOworKwkJRklQU19yYW5kX3N0YXR1czsKKysJCUZJUFNfcmFuZF9zZXRfa2V5OworKwkJQ1JZUFRPX3NldF9tZW1faW5mb19mdW5jdGlvbnM7CisrCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXlfZXg7CisrCQlpbnRfRVJSX3NldF9zdGF0ZV9mdW5jOworKwkJaW50X0VWUF9NRF9zZXRfZW5naW5lX2NhbGxiYWNrczsKKysJCWludF9DUllQVE9fc2V0X2RvX2R5bmxvY2tfY2FsbGJhY2s7CisrCQlGSVBTX3JuZ19zdGljazsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9mbGFnczsKKysJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXg7CisrCQlGSVBTX3NlbGZ0ZXN0X2NoZWNrOworKwkJRklQU19yYW5kX3NldF9kdDsKKysJCUNSWVBUT19kYmdfcG9wX2luZm87CisrCQlGSVBTX2RzYV9mcmVlOworKwkJUlNBX1g5MzFfZGVyaXZlX2V4OworKwkJRklQU19yc2FfbmV3OworKwkJRklQU19yYW5kX2J5dGVzOworKwkJZmlwc19jaXBoZXJfdGVzdDsKKysJCUVWUF9DSVBIRVJfQ1RYX3Rlc3RfZmxhZ3M7CisrCQlDUllQVE9fbWFsbG9jX2RlYnVnX2luaXQ7CisrCQlDUllQVE9fZGJnX3B1c2hfaW5mbzsKKysJCUZJUFNfY29ycnVwdF9yc2Ffa2V5Z2VuOworKwkJRklQU19kaF9uZXc7CisrCQlGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbjsKKysJCUZJUFNfZGhfZnJlZTsKKysJCWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdDsKKysJCUVWUF9hZGRfYWxnX21vZHVsZTsKKysJCWludF9SQU5EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKKysJCWludF9FVlBfQ0lQSEVSX3NldF9lbmdpbmVfY2FsbGJhY2tzOworKwkJaW50X0VWUF9NRF9pbml0X2VuZ2luZV9jYWxsYmFja3M7CisrCQlGSVBTX3JhbmRfdGVzdF9tb2RlOworKwkJRklQU19yYW5kX3Jlc2V0OworKwkJRklQU19kc2FfbmV3OworKwkJaW50X1JBTkRfc2V0X2NhbGxiYWNrczsKKysJCUJOX1g5MzFfZGVyaXZlX3ByaW1lX2V4OworKwkJaW50X0VSUl9saWJfaW5pdDsKKysJCWludF9FVlBfQ0lQSEVSX2luaXRfZW5naW5lX2NhbGxiYWNrczsKKysJCUZJUFNfcnNhX2ZyZWU7CisrCQlGSVBTX2RzYV9zaWdfZW5jb2RlOworKwkJQ1JZUFRPX2RiZ19yZW1vdmVfYWxsX2luZm87CisrCQlPUEVOU1NMX2luaXQ7CisrCQlDUllQVE9fc3RyZHVwOworKwkJSlBBS0VfU1RFUDNBX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQMV9yZWxlYXNlOworKwkJSlBBS0VfZ2V0X3NoYXJlZF9rZXk7CisrCQlKUEFLRV9TVEVQM0JfaW5pdDsKKysJCUpQQUtFX1NURVAxX2dlbmVyYXRlOworKwkJSlBBS0VfU1RFUDFfaW5pdDsKKysJCUpQQUtFX1NURVAzQl9wcm9jZXNzOworKwkJSlBBS0VfU1RFUDJfZ2VuZXJhdGU7CisrCQlKUEFLRV9DVFhfbmV3OworKwkJSlBBS0VfQ1RYX2ZyZWU7CisrCQlKUEFLRV9TVEVQM0JfcmVsZWFzZTsKKysJCUpQQUtFX1NURVAzQV9yZWxlYXNlOworKwkJSlBBS0VfU1RFUDJfcHJvY2VzczsKKysJCUpQQUtFX1NURVAzQl9nZW5lcmF0ZTsKKysJCUpQQUtFX1NURVAxX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQM0FfZ2VuZXJhdGU7CisrCQlKUEFLRV9TVEVQMl9yZWxlYXNlOworKwkJSlBBS0VfU1RFUDNBX2luaXQ7CisrCQlFUlJfbG9hZF9KUEFLRV9zdHJpbmdzOworKwkJSlBBS0VfU1RFUDJfaW5pdDsKKysJCXBxdWV1ZV9zaXplOworKwkJaTJkX1RTX0FDQ1VSQUNZOworKwkJaTJkX1RTX01TR19JTVBSSU5UX2ZwOworKwkJaTJkX1RTX01TR19JTVBSSU5UOworKwkJRVZQX1BLRVlfcHJpbnRfcHVibGljOworKwkJRVZQX1BLRVlfQ1RYX25ldzsKKysJCWkyZF9UU19UU1RfSU5GTzsKKysJCUVWUF9QS0VZX2FzbjFfZmluZDsKKysJCURTT19NRVRIT0RfYmVvczsKKysJCVRTX0NPTkZfbG9hZF9jZXJ0OworKwkJVFNfUkVRX2dldF9leHQ7CisrCQlFVlBfUEtFWV9zaWduX2luaXQ7CisrCQlBU04xX2l0ZW1fcHJpbnQ7CisrCQlUU19UU1RfSU5GT19zZXRfbm9uY2U7CisrCQlUU19SRVNQX2R1cDsKKysJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X21ldGhzOworKwkJRVZQX1BLRVlfYXNuMV9hZGQwOworKwkJUEtDUzdfYWRkMF9hdHRyaWJfc2lnbmluZ190aW1lOworKwkJaTJkX1RTX1RTVF9JTkZPX2ZwOworKwkJQklPX2FzbjFfZ2V0X3ByZWZpeDsKKysJCVRTX1RTVF9JTkZPX3NldF90aW1lOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVjcnlwdDsKKysJCUVWUF9QS0VZX3NldF90eXBlX3N0cjsKKysJCUVWUF9QS0VZX0NUWF9nZXRfa2V5Z2VuX2luZm87CisrCQlUU19SRVFfc2V0X3BvbGljeV9pZDsKKysJCWQyaV9UU19SRVNQX2ZwOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9lbmdpbmU7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZzsKKysJCVdISVJMUE9PTF9Jbml0OworKwkJVFNfUkVTUF9zZXRfc3RhdHVzX2luZm87CisrCQlFVlBfUEtFWV9rZXlnZW47CisrCQlFVlBfRGlnZXN0U2lnbkluaXQ7CisrCQlUU19BQ0NVUkFDWV9zZXRfbWlsbGlzOworKwkJVFNfUkVRX2R1cDsKKysJCUdFTkVSQUxfTkFNRV9kdXA7CisrCQlBU04xX1NFUVVFTkNFX0FOWV9pdDsKKysJCVdISVJMUE9PTDsKKysJCVg1MDlfU1RPUkVfZ2V0MV9jcmxzOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aDsKKysJCUVWUF9QS0VZX2FzbjFfbmV3OworKwkJQklPX25ld19OREVGOworKwkJRU5HSU5FX2dldF9wa2V5X21ldGg7CisrCQlUU19NU0dfSU1QUklOVF9zZXRfYWxnbzsKKysJCWkyZF9UU19UU1RfSU5GT19iaW87CisrCQlUU19UU1RfSU5GT19zZXRfb3JkZXJpbmc7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X09CSjsKKysJCUNSWVBUT19USFJFQURJRF9zZXRfcG9pbnRlcjsKKysJCVRTX0NPTkZfZ2V0X3RzYV9zZWN0aW9uOworKwkJU01JTUVfd3JpdGVfQVNOMTsKKysJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfa2V5OworKwkJRVZQX1BLRVlfZW5jcnlwdF9vbGQ7CisrCQlFVlBfUEtFWV9lbmNyeXB0X2luaXQ7CisrCQlDUllQVE9fVEhSRUFESURfY3B5OworKwkJQVNOMV9QQ1RYX2dldF9jZXJ0X2ZsYWdzOworKwkJaTJkX0VTU19TSUdOSU5HX0NFUlQ7CisrCQlUU19DT05GX2xvYWRfa2V5OworKwkJaTJkX0FTTjFfU0VRVUVOQ0VfQU5ZOworKwkJZDJpX1RTX01TR19JTVBSSU5UX2JpbzsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X3B1YmxpYzsKKysJCWIyaV9QdWJsaWNLZXlfYmlvOworKwkJQklPX2FzbjFfc2V0X3ByZWZpeDsKKysJCUVWUF9QS0VZX25ld19tYWNfa2V5OworKwkJQklPX25ld19DTVM7CisrCQlDUllQVE9fVEhSRUFESURfY21wOworKwkJVFNfUkVRX2V4dF9mcmVlOworKwkJRVZQX1BLRVlfYXNuMV9zZXRfZnJlZTsKKysJCUVWUF9QS0VZX2dldDBfYXNuMTsKKysJCWQyaV9ORVRTQ0FQRV9YNTA5OworKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXJfaW5pdDsKKysJCUVWUF9QS0VZX0NUWF9zZXRfZGF0YTsKKysJCUVWUF9QS0VZX2tleWdlbl9pbml0OworKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvOworKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X2FsZ287CisrCQlUU19SRVFfcHJpbnRfYmlvOworKwkJRVZQX1BLRVlfQ1RYX2N0cmxfc3RyOworKwkJRVZQX1BLRVlfZ2V0X2RlZmF1bHRfZGlnZXN0X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzdfc3RyZWFtOworKwkJVFNfTVNHX0lNUFJJTlRfcHJpbnRfYmlvOworKwkJQk5fYXNjMmJuOworKwkJVFNfUkVRX2dldF9wb2xpY3lfaWQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3NldF9kZWZfcGtleV9hc24xX21ldGhzOworKwkJZDJpX1RTX0FDQ1VSQUNZOworKwkJRFNPX2dsb2JhbF9sb29rdXA7CisrCQlUU19DT05GX3NldF90c2FfbmFtZTsKKysJCWkyZF9BU04xX1NFVF9BTlk7CisrCQlFTkdJTkVfbG9hZF9nb3N0OworKwkJV0hJUkxQT09MX0JpdFVwZGF0ZTsKKysJCUFTTjFfUENUWF9nZXRfZmxhZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X05JRDsKKysJCVRTX1JFU1BfbmV3OworKwkJRVNTX0NFUlRfSURfZHVwOworKwkJVFNfU1RBVFVTX0lORk9fZHVwOworKwkJVFNfUkVRX2RlbGV0ZV9leHQ7CisrCQlFVlBfRGlnZXN0VmVyaWZ5RmluYWw7CisrCQlFVlBfUEtFWV9wcmludF9wYXJhbXM7CisrCQlpMmRfQ01TX2Jpb19zdHJlYW07CisrCQlUU19SRVFfZ2V0X21zZ19pbXByaW50OworKwkJT0JKX2ZpbmRfc2lnaWRfYnlfYWxnczsKKysJCVRTX1RTVF9JTkZPX2dldF9zZXJpYWw7CisrCQlUU19SRVFfZ2V0X25vbmNlOworKwkJWDUwOV9QVUJLRVlfc2V0MF9wYXJhbTsKKysJCUVWUF9QS0VZX0NUWF9zZXQwX2tleWdlbl9pbmZvOworKwkJRElTVF9QT0lOVF9zZXRfZHBuYW1lOworKwkJaTJkX0lTU1VJTkdfRElTVF9QT0lOVDsKKysJCUFTTjFfU0VUX0FOWV9pdDsKKysJCUVWUF9QS0VZX0NUWF9nZXRfZGF0YTsKKysJCVRTX1NUQVRVU19JTkZPX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX2Rlcml2ZV9pbml0OworKwkJZDJpX1RTX1RTVF9JTkZPOworKwkJRVZQX1BLRVlfYXNuMV9hZGRfYWxpYXM7CisrCQlkMmlfVFNfUkVTUF9iaW87CisrCQlPVEhFUk5BTUVfY21wOworKwkJR0VORVJBTF9OQU1FX3NldDBfdmFsdWU7CisrCQlQS0NTN19SRUNJUF9JTkZPX2dldDBfYWxnOworKwkJVFNfUkVTUF9DVFhfbmV3OworKwkJVFNfUkVTUF9zZXRfdHN0X2luZm87CisrCQlQS0NTN19maW5hbDsKKysJCUVWUF9QS0VZX2Jhc2VfaWQ7CisrCQlUU19SRVNQX0NUWF9zZXRfc2lnbmVyX2NlcnQ7CisrCQlUU19SRVFfc2V0X21zZ19pbXByaW50OworKwkJRVZQX1BLRVlfQ1RYX2N0cmw7CisrCQlUU19DT05GX3NldF9kaWdlc3RzOworKwkJZDJpX1RTX01TR19JTVBSSU5UOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfY3RybDsKKysJCVRTX1JFUV9nZXRfZXh0X2J5X05JRDsKKysJCVBLQ1M1X3BiZV9zZXQwX2FsZ29yOworKwkJQk5fQkxJTkRJTkdfdGhyZWFkX2lkOworKwkJVFNfQUNDVVJBQ1lfbmV3OworKwkJWDUwOV9DUkxfTUVUSE9EX2ZyZWU7CisrCQlBU04xX1BDVFhfZ2V0X25tX2ZsYWdzOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbjsKKysJCUNSWVBUT19USFJFQURJRF9jdXJyZW50OworKwkJRVZQX1BLRVlfZGVjcnlwdF9pbml0OworKwkJTkVUU0NBUEVfWDUwOV9mcmVlOworKwkJaTJiX1BWS19iaW87CisrCQlFVlBfUEtFWV9wcmludF9wcml2YXRlOworKwkJR0VORVJBTF9OQU1FX2dldDBfdmFsdWU7CisrCQliMmlfUFZLX2JpbzsKKysJCUFTTjFfVVRDVElNRV9hZGo7CisrCQlUU19UU1RfSU5GT19uZXc7CisrCQlFVlBfTURfZG9fYWxsX3NvcnRlZDsKKysJCVRTX0NPTkZfc2V0X2RlZmF1bHRfZW5naW5lOworKwkJVFNfQUNDVVJBQ1lfc2V0X3NlY29uZHM7CisrCQlUU19UU1RfSU5GT19nZXRfdGltZTsKKysJCVBLQ1M4X3BrZXlfZ2V0MDsKKysJCUVWUF9QS0VZX2FzbjFfZ2V0MDsKKysJCU9CSl9hZGRfc2lnaWQ7CisrCQlQS0NTN19TSUdORVJfSU5GT19zaWduOworKwkJRVZQX1BLRVlfcGFyYW1nZW5faW5pdDsKKysJCUVWUF9QS0VZX3NpZ247CisrCQlPQkpfc2lnaWRfZnJlZTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2luaXQ7CisrCQlkMmlfRVNTX0lTU1VFUl9TRVJJQUw7CisrCQlJU1NVSU5HX0RJU1RfUE9JTlRfbmV3OworKwkJQVNOMV9USU1FX2FkajsKKysJCVRTX09CSl9wcmludF9iaW87CisrCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnlfcmVjb3ZlcjsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3ZyZnlfcmVjb3ZlcjsKKysJCVRTX1JFU1BfZ2V0X3N0YXR1c19pbmZvOworKwkJQ01TX3N0cmVhbTsKKysJCUVWUF9QS0VZX0NUWF9zZXRfY2I7CisrCQlQS0NTN190b19UU19UU1RfSU5GTzsKKysJCUFTTjFfUENUWF9nZXRfb2lkX2ZsYWdzOworKwkJVFNfVFNUX0lORk9fYWRkX2V4dDsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2Rlcml2ZTsKKysJCWkyZF9UU19SRVNQX2ZwOworKwkJaTJkX1RTX01TR19JTVBSSU5UX2JpbzsKKysJCVRTX1JFU1BfQ1RYX3NldF9hY2N1cmFjeTsKKysJCVRTX1JFUV9zZXRfbm9uY2U7CisrCQlFU1NfQ0VSVF9JRF9uZXc7CisrCQlFTkdJTkVfcGtleV9hc24xX2ZpbmRfc3RyOworKwkJVFNfUkVRX2dldF9leHRfY291bnQ7CisrCQlCVUZfcmV2ZXJzZTsKKysJCVRTX1RTVF9JTkZPX3ByaW50X2JpbzsKKysJCWQyaV9JU1NVSU5HX0RJU1RfUE9JTlQ7CisrCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aHM7CisrCQlpMmJfUHJpdmF0ZUtleV9iaW87CisrCQlpMmRfVFNfUkVTUDsKKysJCWIyaV9QdWJsaWNLZXk7CisrCQlUU19WRVJJRllfQ1RYX2NsZWFudXA7CisrCQlUU19TVEFUVVNfSU5GT19mcmVlOworKwkJVFNfUkVTUF92ZXJpZnlfdG9rZW47CisrCQlPQkpfYnNlYXJjaF9leF87CisrCQlBU04xX2JuX3ByaW50OworKwkJRVZQX1BLRVlfYXNuMV9nZXRfY291bnQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOworKwkJQVNOMV9QQ1RYX3NldF9ubV9mbGFnczsKKysJCUVWUF9EaWdlc3RWZXJpZnlJbml0OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X3BrZXlfbWV0aHM7CisrCQlUU19UU1RfSU5GT19nZXRfcG9saWN5X2lkOworKwkJVFNfUkVRX2dldF9jZXJ0X3JlcTsKKysJCVg1MDlfQ1JMX3NldF9tZXRoX2RhdGE7CisrCQlQS0NTOF9wa2V5X3NldDA7CisrCQlBU04xX1NUUklOR19jb3B5OworKwkJZDJpX1RTX1RTVF9JTkZPX2ZwOworKwkJWDUwOV9DUkxfbWF0Y2g7CisrCQlFVlBfUEtFWV9hc24xX3NldF9wcml2YXRlOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9kMmk7CisrCQlUU19SRVNQX0NUWF9hZGRfcG9saWN5OworKwkJZDJpX1RTX1JFU1A7CisrCQlUU19DT05GX2xvYWRfY2VydHM7CisrCQlUU19UU1RfSU5GT19nZXRfbXNnX2ltcHJpbnQ7CisrCQlFUlJfbG9hZF9UU19zdHJpbmdzOworKwkJVFNfVFNUX0lORk9fZ2V0X3ZlcnNpb247CisrCQlFVlBfUEtFWV9DVFhfZHVwOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5OworKwkJaTJiX1B1YmxpY0tleV9iaW87CisrCQlUU19DT05GX3NldF9jZXJ0czsKKysJCUVWUF9QS0VZX2FzbjFfZ2V0MF9pbmZvOworKwkJVFNfVkVSSUZZX0NUWF9mcmVlOworKwkJVFNfUkVRX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlUU19SRVNQX0NUWF9zZXRfc2VyaWFsX2NiOworKwkJWDUwOV9DUkxfZ2V0X21ldGhfZGF0YTsKKysJCVRTX1JFU1BfQ1RYX3NldF90aW1lX2NiOworKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X21zZzsKKysJCVRTX1RTVF9JTkZPX2V4dF9mcmVlOworKwkJVFNfUkVRX2dldF92ZXJzaW9uOworKwkJVFNfUkVRX2FkZF9leHQ7CisrCQlFVlBfUEtFWV9DVFhfc2V0X2FwcF9kYXRhOworKwkJT0JKX2JzZWFyY2hfOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5Y3R4OworKwkJaTJkX1BLQ1M3X2Jpb19zdHJlYW07CisrCQlDUllQVE9fVEhSRUFESURfc2V0X251bWVyaWM7CisrCQlQS0NTN19zaWduX2FkZF9zaWduZXI7CisrCQlkMmlfVFNfVFNUX0lORk9fYmlvOworKwkJVFNfVFNUX0lORk9fZ2V0X29yZGVyaW5nOworKwkJVFNfUkVTUF9wcmludF9iaW87CisrCQlUU19UU1RfSU5GT19nZXRfZXh0czsKKysJCUhNQUNfQ1RYX2NvcHk7CisrCQlQS0NTNV9wYmUyX3NldF9pdjsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhzOworKwkJYjJpX1ByaXZhdGVLZXk7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X2FwcF9kYXRhOworKwkJVFNfUkVRX3NldF9jZXJ0X3JlcTsKKysJCUNSWVBUT19USFJFQURJRF9zZXRfY2FsbGJhY2s7CisrCQlUU19DT05GX3NldF9zZXJpYWw7CisrCQlUU19UU1RfSU5GT19mcmVlOworKwkJZDJpX1RTX1JFUV9mcDsKKysJCVRTX1JFU1BfdmVyaWZ5X3Jlc3BvbnNlOworKwkJaTJkX0VTU19JU1NVRVJfU0VSSUFMOworKwkJVFNfQUNDVVJBQ1lfZ2V0X3NlY29uZHM7CisrCQlFVlBfQ0lQSEVSX2RvX2FsbDsKKysJCWIyaV9Qcml2YXRlS2V5X2JpbzsKKysJCU9DU1BfQ0VSVElEX2R1cDsKKysJCVg1MDlfUFVCS0VZX2dldDBfcGFyYW07CisrCQlUU19NU0dfSU1QUklOVF9kdXA7CisrCQlQS0NTN19wcmludF9jdHg7CisrCQlpMmRfVFNfUkVRX2JpbzsKKysJCUVWUF93aGlybHBvb2w7CisrCQlFVlBfUEtFWV9hc24xX3NldF9wYXJhbTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2VuY3J5cHQ7CisrCQlBU04xX1BDVFhfc2V0X2ZsYWdzOworKwkJaTJkX0VTU19DRVJUX0lEOworKwkJVFNfVkVSSUZZX0NUWF9uZXc7CisrCQlUU19SRVNQX0NUWF9zZXRfZXh0ZW5zaW9uX2NiOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X21ldGhzOworKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvX2NvbmQ7CisrCQlUU19SRVNQX0NUWF9zZXRfc3RhdF9pbmZvX2NvbmQ7CisrCQlFVlBfUEtFWV92ZXJpZnk7CisrCQlXSElSTFBPT0xfRmluYWw7CisrCQlYNTA5X0NSTF9NRVRIT0RfbmV3OworKwkJRVZQX0RpZ2VzdFNpZ25GaW5hbDsKKysJCVRTX1JFU1BfQ1RYX3NldF9kZWZfcG9saWN5OworKwkJTkVUU0NBUEVfWDUwOV9pdDsKKysJCVRTX1JFU1BfY3JlYXRlX3Jlc3BvbnNlOworKwkJUEtDUzdfU0lHTkVSX0lORk9fZ2V0MF9hbGdzOworKwkJVFNfVFNUX0lORk9fZ2V0X25vbmNlOworKwkJRVZQX1BLRVlfZGVjcnlwdF9vbGQ7CisrCQlUU19UU1RfSU5GT19zZXRfcG9saWN5X2lkOworKwkJVFNfQ09ORl9zZXRfZXNzX2NlcnRfaWRfY2hhaW47CisrCQlFVlBfUEtFWV9DVFhfZ2V0MF9wa2V5OworKwkJZDJpX1RTX1JFUTsKKysJCUVWUF9QS0VZX2FzbjFfZmluZF9zdHI7CisrCQlCSU9fZl9hc24xOworKwkJRVNTX1NJR05JTkdfQ0VSVF9uZXc7CisrCQlFVlBfUEJFX2ZpbmQ7CisrCQlYNTA5X0NSTF9nZXQwX2J5X2NlcnQ7CisrCQlFVlBfUEtFWV9kZXJpdmU7CisrCQlpMmRfVFNfUkVROworKwkJVFNfVFNUX0lORk9fZGVsZXRlX2V4dDsKKysJCUVTU19JU1NVRVJfU0VSSUFMX2ZyZWU7CisrCQlBU04xX1BDVFhfc2V0X3N0cl9mbGFnczsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfc3RyOworKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2tleTsKKysJCVRTX0FDQ1VSQUNZX2dldF9taWxsaXM7CisrCQlUU19SRVNQX2dldF90b2tlbjsKKysJCVRTX0FDQ1VSQUNZX2R1cDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3JlZ19hbGxfcGtleV9hc24xX21ldGhzOworKwkJWDUwOV9DUkxfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJQ1JZUFRPX1RIUkVBRElEX2hhc2g7CisrCQlDTVNfQ29udGVudEluZm9fcHJpbnRfY3R4OworKwkJVFNfUkVTUF9mcmVlOworKwkJSVNTVUlOR19ESVNUX1BPSU5UX2ZyZWU7CisrCQlFU1NfSVNTVUVSX1NFUklBTF9uZXc7CisrCQlDTVNfYWRkMV9jcmw7CisrCQlQS0NTN19hZGQxX2F0dHJpYl9kaWdlc3Q7CisrCQlUU19SRVNQX0NUWF9hZGRfbWQ7CisrCQlUU19UU1RfSU5GT19kdXA7CisrCQlFTkdJTkVfc2V0X3BrZXlfYXNuMV9tZXRoczsKKysJCVBFTV93cml0ZV9iaW9fUGFyYW1ldGVyczsKKysJCVRTX1RTVF9JTkZPX2dldF9hY2N1cmFjeTsKKysJCVg1MDlfQ1JMX2dldDBfYnlfc2VyaWFsOworKwkJVFNfVFNUX0lORk9fc2V0X3ZlcnNpb247CisrCQlUU19SRVNQX0NUWF9nZXRfdHN0X2luZm87CisrCQlUU19SRVNQX3ZlcmlmeV9zaWduYXR1cmU7CisrCQlDUllQVE9fVEhSRUFESURfZ2V0X2NhbGxiYWNrOworKwkJVFNfVFNUX0lORk9fZ2V0X3RzYTsKKysJCVRTX1NUQVRVU19JTkZPX25ldzsKKysJCUVWUF9QS0VZX0NUWF9nZXRfY2I7CisrCQlUU19SRVFfZ2V0X2V4dF9kMmk7CisrCQlHRU5FUkFMX05BTUVfc2V0MF9vdGhlcm5hbWU7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2NvdW50OworKwkJVFNfUkVTUF9DVFhfZ2V0X3JlcXVlc3Q7CisrCQlpMmRfTkVUU0NBUEVfWDUwOTsKKysJCUVOR0lORV9nZXRfcGtleV9tZXRoX2VuZ2luZTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3NpZ25jdHg7CisrCQlFVlBfUEtFWV9hc24xX2NvcHk7CisrCQlBU04xX1RZUEVfY21wOworKwkJRVZQX0NJUEhFUl9kb19hbGxfc29ydGVkOworKwkJRVZQX1BLRVlfQ1RYX2ZyZWU7CisrCQlJU1NVSU5HX0RJU1RfUE9JTlRfaXQ7CisrCQlkMmlfVFNfTVNHX0lNUFJJTlRfZnA7CisrCQlYNTA5X1NUT1JFX2dldDFfY2VydHM7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X29wZXJhdGlvbjsKKysJCWQyaV9FU1NfU0lHTklOR19DRVJUOworKwkJVFNfQ09ORl9zZXRfb3JkZXJpbmc7CisrCQlFVlBfUEJFX2FsZ19hZGRfdHlwZTsKKysJCVRTX1JFUV9zZXRfdmVyc2lvbjsKKysJCUVWUF9QS0VZX2dldDA7CisrCQlCSU9fYXNuMV9zZXRfc3VmZml4OworKwkJaTJkX1RTX1NUQVRVU19JTkZPOworKwkJRVZQX01EX2RvX2FsbDsKKysJCVRTX1RTVF9JTkZPX3NldF9hY2N1cmFjeTsKKysJCVBLQ1M3X2FkZF9hdHRyaWJfY29udGVudF90eXBlOworKwkJRVJSX3JlbW92ZV90aHJlYWRfc3RhdGU7CisrCQlFVlBfUEtFWV9tZXRoX2FkZDA7CisrCQlUU19UU1RfSU5GT19zZXRfdHNhOworKwkJRVZQX1BLRVlfbWV0aF9uZXc7CisrCQlXSElSTFBPT0xfVXBkYXRlOworKwkJVFNfQ09ORl9zZXRfYWNjdXJhY3k7CisrCQlBU04xX1BDVFhfc2V0X29pZF9mbGFnczsKKysJCUVTU19TSUdOSU5HX0NFUlRfZHVwOworKwkJZDJpX1RTX1JFUV9iaW87CisrCQlYNTA5X3RpbWVfYWRqX2V4OworKwkJVFNfUkVTUF9DVFhfYWRkX2ZsYWdzOworKwkJZDJpX1RTX1NUQVRVU19JTkZPOworKwkJVFNfTVNHX0lNUFJJTlRfc2V0X21zZzsKKysJCUJJT19hc24xX2dldF9zdWZmaXg7CisrCQlUU19SRVFfZnJlZTsKKysJCUVWUF9QS0VZX21ldGhfZnJlZTsKKysJCVRTX1JFUV9nZXRfZXh0czsKKysJCVRTX1JFU1BfQ1RYX3NldF9jbG9ja19wcmVjaXNpb25fZGlnaXRzOworKwkJVFNfUkVTUF9DVFhfc2V0X2Nsa19wcmVjX2RpZ2l0czsKKysJCVRTX1JFU1BfQ1RYX2FkZF9mYWlsdXJlX2luZm87CisrCQlpMmRfVFNfUkVTUF9iaW87CisrCQlFVlBfUEtFWV9DVFhfZ2V0MF9wZWVya2V5OworKwkJUEVNX3dyaXRlX2Jpb19DTVNfc3RyZWFtOworKwkJVFNfUkVRX25ldzsKKysJCVRTX01TR19JTVBSSU5UX25ldzsKKysJCUVWUF9QS0VZX21ldGhfZmluZDsKKysJCUVWUF9QS0VZX2lkOworKwkJVFNfVFNUX0lORk9fc2V0X3NlcmlhbDsKKysJCWEyaV9HRU5FUkFMX05BTUU7CisrCQlUU19DT05GX3NldF9jcnlwdG9fZGV2aWNlOworKwkJRVZQX1BLRVlfdmVyaWZ5X2luaXQ7CisrCQlUU19DT05GX3NldF9wb2xpY2llczsKKysJCUFTTjFfUENUWF9uZXc7CisrCQlFU1NfQ0VSVF9JRF9mcmVlOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9tZXRoczsKKysJCVRTX01TR19JTVBSSU5UX2ZyZWU7CisrCQlUU19WRVJJRllfQ1RYX2luaXQ7CisrCQlQS0NTN19zdHJlYW07CisrCQlUU19SRVNQX0NUWF9zZXRfY2VydHM7CisrCQlUU19DT05GX3NldF9kZWZfcG9saWN5OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfYWRqOworKwkJTkVUU0NBUEVfWDUwOV9uZXc7CisrCQlUU19BQ0NVUkFDWV9mcmVlOworKwkJVFNfUkVTUF9nZXRfdHN0X2luZm87CisrCQlFVlBfUEtFWV9kZXJpdmVfc2V0X3BlZXI7CisrCQlQRU1fcmVhZF9iaW9fUGFyYW1ldGVyczsKKysJCVRTX0NPTkZfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7CisrCQlUU19DT05GX3NldF9jbGtfcHJlY19kaWdpdHM7CisrCQlFU1NfSVNTVUVSX1NFUklBTF9kdXA7CisrCQlUU19BQ0NVUkFDWV9nZXRfbWljcm9zOworKwkJQVNOMV9QQ1RYX2dldF9zdHJfZmxhZ3M7CisrCQlOQU1FX0NPTlNUUkFJTlRTX2NoZWNrOworKwkJQVNOMV9CSVRfU1RSSU5HX2NoZWNrOworKwkJWDUwOV9jaGVja19ha2lkOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3VucmVnX3BrZXlfYXNuMV9tZXRoczsKKysJCUFTTjFfUENUWF9mcmVlOworKwkJUEVNX3dyaXRlX2Jpb19BU04xX3N0cmVhbTsKKysJCWkyZF9BU04xX2Jpb19zdHJlYW07CisrCQlUU19YNTA5X0FMR09SX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2NsZWFudXA7CisrCQlFVlBfUEtFWV9hc24xX2ZyZWU7CisrCQlFU1NfU0lHTklOR19DRVJUX2ZyZWU7CisrCQlUU19UU1RfSU5GT19zZXRfbXNnX2ltcHJpbnQ7CisrCQlHRU5FUkFMX05BTUVfY21wOworKwkJZDJpX0FTTjFfU0VUX0FOWTsKKysJCUVOR0lORV9zZXRfcGtleV9tZXRoczsKKysJCWkyZF9UU19SRVFfZnA7CisrCQlkMmlfQVNOMV9TRVFVRU5DRV9BTlk7CisrCQlHRU5FUkFMX05BTUVfZ2V0MF9vdGhlck5hbWU7CisrCQlkMmlfRVNTX0NFUlRfSUQ7CisrCQlPQkpfZmluZF9zaWdpZF9hbGdzOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfa2V5Z2VuOworKwkJUEtDUzVfUEJLREYyX0hNQUM7CisrCQlFVlBfUEtFWV9wYXJhbWdlbjsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3BhcmFtZ2VuOworKwkJQklPX25ld19QS0NTNzsKKysJCUVWUF9QS0VZX3ZlcmlmeV9yZWNvdmVyOworKwkJVFNfZXh0X3ByaW50X2JpbzsKKysJCVRTX0FTTjFfSU5URUdFUl9wcmludF9iaW87CisrCQljaGVja19kZWZlcjsKKysJCURTT19wYXRoYnlhZGRyOworKwkJRVZQX1BLRVlfc2V0X3R5cGU7CisrCQlUU19BQ0NVUkFDWV9zZXRfbWljcm9zOworKwkJVFNfUkVRX3RvX1RTX1ZFUklGWV9DVFg7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9jb3B5OworKwkJQVNOMV9QQ1RYX3NldF9jZXJ0X2ZsYWdzOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dDsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X2N0cmw7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJRVZQX1BLRVlfQ1RYX25ld19pZDsKKysJCVRTX1JFUV9nZXRfZXh0X2J5X09CSjsKKysJCVRTX0NPTkZfc2V0X3NpZ25lcl9jZXJ0OworKwkJWDUwOV9OQU1FX2hhc2hfb2xkOworKwkJQVNOMV9USU1FX3NldF9zdHJpbmc7CisrCQlFVlBfTURfZmxhZ3M7CisrCQlUU19SRVNQX0NUWF9mcmVlOworKwkJRFNBcGFyYW1zX2R1cDsKKysJCURIcGFyYW1zX2R1cDsKKysJCU9DU1BfUkVRX0NUWF9hZGQxX2hlYWRlcjsKKysJCU9DU1BfUkVRX0NUWF9zZXQxX3JlcTsKKysJCVg1MDlfU1RPUkVfc2V0X3ZlcmlmeV9jYjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9jcmw7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmVudF9jdHg7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cnJlbnRfaXNzdWVyOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJfaXNzdWVyOworKwkJWDUwOV9pc3N1ZXJfbmFtZV9oYXNoX29sZDsKKysJCVg1MDlfc3ViamVjdF9uYW1lX2hhc2hfb2xkOworKwkJRVZQX0NJUEhFUl9DVFhfY29weTsKKysJCVVJX21ldGhvZF9nZXRfcHJvbXB0X2NvbnN0cnVjdG9yOworKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0cjsKKysJCVVJX21ldGhvZF9zZXRfcHJvbXB0X2NvbnN0cnVjdG9yOworKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0cjsKKysJCUVWUF9yZWFkX3B3X3N0cmluZ19taW47CisrCQlDUllQVE9fY3RzMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9fY3RzMTI4X2RlY3J5cHRfYmxvY2s7CisrCQlDUllQVE9fY2ZiMTI4XzFfZW5jcnlwdDsKKysJCUNSWVBUT19jYmMxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jdHIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19vZmIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jdHMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19jdHMxMjhfZW5jcnlwdF9ibG9jazsKKysJCUNSWVBUT19jYmMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19jZmIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jZmIxMjhfOF9lbmNyeXB0OworKwkJU1NMX3JlbmVnb3RpYXRlX2FiYnJldmlhdGVkOworKwkJVExTdjFfMV9tZXRob2Q7CisrCQlUTFN2MV8xX2NsaWVudF9tZXRob2Q7CisrCQlUTFN2MV8xX3NlcnZlcl9tZXRob2Q7CisrCQlTU0xfQ1RYX3NldF9zcnBfY2xpZW50X3B3ZF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NiOworKwkJU1NMX2dldF9zcnBfZzsKKysJCVNTTF9DVFhfc2V0X3NycF91c2VybmFtZV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF91bl9jYjsKKysJCVNTTF9nZXRfc3JwX3VzZXJpbmZvOworKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtOworKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtX3B3OworKwkJU1NMX2dldF9zcnBfTjsKKysJCVNTTF9nZXRfc3JwX3VzZXJuYW1lOworKwkJU1NMX0NUWF9zZXRfc3JwX3Bhc3N3b3JkOworKwkJU1NMX0NUWF9zZXRfc3JwX3N0cmVuZ3RoOworKwkJU1NMX0NUWF9zZXRfc3JwX3ZlcmlmeV9wYXJhbV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF92ZnlfcGFyYW1fY2I7CisrCQlTU0xfQ1RYX3NldF9zcnBfY2JfYXJnOworKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lOworKwkJU1NMX0NUWF9TUlBfQ1RYX2luaXQ7CisrCQlTU0xfU1JQX0NUWF9pbml0OworKwkJU1JQX0NhbGNfQV9wYXJhbTsKKysJCVNSUF9nZW5lcmF0ZV9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKKysJCVNSUF9nZW5fc2VydmVyX21hc3Rlcl9zZWNyZXQ7CisrCQlTU0xfQ1RYX1NSUF9DVFhfZnJlZTsKKysJCVNSUF9nZW5lcmF0ZV9jbGllbnRfbWFzdGVyX3NlY3JldDsKKysJCVNSUF9nZW5fY2xpZW50X21hc3Rlcl9zZWNyZXQ7CisrCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VzZXJuYW1lOworKwkJU1NMX3NycF9zZXJ2ZXJfcGFyYW1fd2l0aF91bjsKKysJCVNTTF9TUlBfQ1RYX2ZyZWU7CisrCQlTU0xfc2V0X2RlYnVnOworKwkJU1NMX1NFU1NJT05fZ2V0MF9wZWVyOworKwkJVExTdjFfMl9jbGllbnRfbWV0aG9kOworKwkJU1NMX1NFU1NJT05fc2V0MV9pZF9jb250ZXh0OworKwkJVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOworKwkJU1NMX2NhY2hlX2hpdDsKKysJCVNTTF9nZXQwX2tzc2xfY3R4OworKwkJU1NMX3NldDBfa3NzbF9jdHg7CisrCQlTU0xfc2V0X3N0YXRlOworKwkJU1NMX0NJUEhFUl9nZXRfaWQ7CisrCQlUTFN2MV8yX21ldGhvZDsKKysJCWtzc2xfY3R4X2dldDBfY2xpZW50X3ByaW5jOworKwkJU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWw7CisrCQlTU0xfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2I7CisrCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZfY2I7CisrCQlTU0xfZ2V0MF9uZXh0X3Byb3RvX25lZ290aWF0ZWQ7CisrCQlTU0xfZ2V0X3NlbGVjdGVkX3NydHBfcHJvZmlsZTsKKysJCVNTTF9DVFhfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKKysJCVNTTF9zZWxlY3RfbmV4dF9wcm90bzsKKysJCVNTTF9nZXRfc3J0cF9wcm9maWxlczsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiOworKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxfY2I7CisrCQlTU0xfU0VTU0lPTl9nZXRfY29tcHJlc3NfaWQ7CisrCisrCQlTUlBfVkJBU0VfZ2V0X2J5X3VzZXI7CisrCQlTUlBfQ2FsY19zZXJ2ZXJfa2V5OworKwkJU1JQX2NyZWF0ZV92ZXJpZmllcjsKKysJCVNSUF9jcmVhdGVfdmVyaWZpZXJfQk47CisrCQlTUlBfQ2FsY191OworKwkJU1JQX1ZCQVNFX2ZyZWU7CisrCQlTUlBfQ2FsY19jbGllbnRfa2V5OworKwkJU1JQX2dldF9kZWZhdWx0X2dOOworKwkJU1JQX0NhbGNfeDsKKysJCVNSUF9DYWxjX0I7CisrCQlTUlBfVkJBU0VfbmV3OworKwkJU1JQX2NoZWNrX2tub3duX2dOX3BhcmFtOworKwkJU1JQX0NhbGNfQTsKKysJCVNSUF9WZXJpZnlfQV9tb2RfTjsKKysJCVNSUF9WQkFTRV9pbml0OworKwkJU1JQX1ZlcmlmeV9CX21vZF9OOworKwkJRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlczsKKysJCUVDX0tFWV9zZXRfcHViX2tleV9hZmZfY29vcmRzOworKwkJRVZQX2Flc18xOTJfY3RyOworKwkJRVZQX1BLRVlfbWV0aF9nZXQwX2luZm87CisrCQlFVlBfUEtFWV9tZXRoX2NvcHk7CisrCQlFUlJfYWRkX2Vycm9yX3ZkYXRhOworKwkJRVZQX2Flc18xMjhfY3RyOworKwkJRVZQX2Flc18yNTZfY3RyOworKwkJRUNfR0ZwX25pc3RwMjI0X21ldGhvZDsKKysJCUVDX0tFWV9nZXRfZmxhZ3M7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTX21nZjE7CisrCQlFVlBfYWVzXzEyOF94dHM7CisrCQlFVlBfYWVzXzI1Nl94dHM7CisrCQlFVlBfYWVzXzEyOF9nY207CisrCQlFQ19LRVlfY2xlYXJfZmxhZ3M7CisrCQlFQ19LRVlfc2V0X2ZsYWdzOworKwkJRVZQX2Flc18yNTZfY2NtOworKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1NfbWdmMTsKKysJCUVWUF9hZXNfMTI4X2NjbTsKKysJCUVWUF9hZXNfMTkyX2djbTsKKysJCVg1MDlfQUxHT1Jfc2V0X21kOworKwkJUkFORF9pbml0X2ZpcHM7CisrCQlFVlBfYWVzXzI1Nl9nY207CisrCQlFVlBfYWVzXzE5Ml9jY207CisrCQlDTUFDX0NUWF9jb3B5OworKwkJQ01BQ19DVFhfZnJlZTsKKysJCUNNQUNfQ1RYX2dldDBfY2lwaGVyX2N0eDsKKysJCUNNQUNfQ1RYX2NsZWFudXA7CisrCQlDTUFDX0luaXQ7CisrCQlDTUFDX1VwZGF0ZTsKKysJCUNNQUNfcmVzdW1lOworKwkJQ01BQ19DVFhfbmV3OworKwkJQ01BQ19GaW5hbDsKKysJCUNSWVBUT19jdHIxMjhfZW5jcnlwdF9jdHIzMjsKKysJCUNSWVBUT19nY20xMjhfcmVsZWFzZTsKKysJCUNSWVBUT19jY20xMjhfZGVjcnlwdF9jY202NDsKKysJCUNSWVBUT19jY20xMjhfZW5jcnlwdDsKKysJCUNSWVBUT19nY20xMjhfZW5jcnlwdDsKKysJCUNSWVBUT194dHMxMjhfZW5jcnlwdDsKKysJCUVWUF9yYzRfaG1hY19tZDU7CisrCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0X2Jsb2NrOworKwkJQ1JZUFRPX2djbTEyOF9zZXRpdjsKKysJCUNSWVBUT19uaXN0Y3RzMTI4X2VuY3J5cHQ7CisrCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGExOworKwkJQ1JZUFRPX2djbTEyOF90YWc7CisrCQlDUllQVE9fY2NtMTI4X2VuY3J5cHRfY2NtNjQ7CisrCQlFTkdJTkVfbG9hZF9yZHJhbmQ7CisrCQlDUllQVE9fY2NtMTI4X3NldGl2OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdF9ibG9jazsKKysJCUNSWVBUT19nY20xMjhfYWFkOworKwkJQ1JZUFRPX2NjbTEyOF9pbml0OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19nY20xMjhfbmV3OworKwkJQ1JZUFRPX2NjbTEyOF90YWc7CisrCQlDUllQVE9fY2NtMTI4X2RlY3J5cHQ7CisrCQlDUllQVE9fY2NtMTI4X2FhZDsKKysJCUNSWVBUT19nY20xMjhfaW5pdDsKKysJCUNSWVBUT19nY20xMjhfZGVjcnlwdDsKKysJCUVOR0lORV9sb2FkX3JzYXg7CisrCQlDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzI7CisrCQlDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzI7CisrCQlDUllQVE9fZ2NtMTI4X2ZpbmlzaDsKKysJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTE7CisrCQlQS0NTNV9wYmtkZjJfc2V0OworKwkJQ01TX2FkZDBfcmVjaXBpZW50X3Bhc3N3b3JkOworKwkJQ01TX2RlY3J5cHRfc2V0MV9wYXNzd29yZDsKKysJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGFzc3dvcmQ7CisrCQlSQU5EX3NldF9maXBzX2RyYmdfdHlwZTsKKysJCVg1MDlfUkVRX3NpZ25fY3R4OworKwkJUlNBX1BTU19QQVJBTVNfbmV3OworKwkJWDUwOV9DUkxfc2lnbl9jdHg7CisrCQlYNTA5X3NpZ25hdHVyZV9kdW1wOworKwkJZDJpX1JTQV9QU1NfUEFSQU1TOworKwkJUlNBX1BTU19QQVJBTVNfaXQ7CisrCQlSU0FfUFNTX1BBUkFNU19mcmVlOworKwkJWDUwOV9zaWduX2N0eDsKKysJCWkyZF9SU0FfUFNTX1BBUkFNUzsKKysJCUFTTjFfaXRlbV9zaWduX2N0eDsKKysJCUVDX0dGcF9uaXN0cDUyMV9tZXRob2Q7CisrCQlFQ19HRnBfbmlzdHAyNTZfbWV0aG9kOworKwkJT1BFTlNTTF9zdGRlcnI7CisrCQlPUEVOU1NMX2NwdWlkX3NldHVwOworKwkJT1BFTlNTTF9zaG93ZmF0YWw7CisrCQlCSU9fbmV3X2RncmFtX3NjdHA7CisrCQlCSU9fZGdyYW1fc2N0cF9tc2dfd2FpdGluZzsKKysJCUJJT19kZ3JhbV9zY3RwX3dhaXRfZm9yX2RyeTsKKysJCUJJT19zX2RhdGFncmFtX3NjdHA7CisrCQlCSU9fZGdyYW1faXNfc2N0cDsKKysJCUJJT19kZ3JhbV9zY3RwX25vdGlmaWNhdGlvbl9jYjsKKysJCUNSWVBUT19tZW1jbXA7CisrCQlTU0xfQ1RYX3NldF9hbHBuX3Byb3RvczsKKysJCVNTTF9zZXRfYWxwbl9wcm90b3M7CisrCQlTU0xfQ1RYX3NldF9hbHBuX3NlbGVjdF9jYjsKKysJCVNTTF9nZXQwX2FscG5fc2VsZWN0ZWQ7CisrCQlTU0xfQ1RYX3NldF9jdXN0b21fY2xpX2V4dDsKKysJCVNTTF9DVFhfc2V0X2N1c3RvbV9zcnZfZXh0OworKwkJU1NMX0NUWF9zZXRfc3J2X3N1cHBfZGF0YTsKKysJCVNTTF9DVFhfc2V0X2NsaV9zdXBwX2RhdGE7CisrCQlTU0xfc2V0X2NlcnRfY2I7CisrCQlTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvOworKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mb19maWxlOworKwkJU1NMX0NUWF9zZXRfY2VydF9jYjsKKysJCVNTTF9DVFhfZ2V0MF9wYXJhbTsKKysJCVNTTF9nZXQwX3BhcmFtOworKwkJU1NMX2NlcnRzX2NsZWFyOworKwkJRFRMU3YxXzJfbWV0aG9kOworKwkJRFRMU3YxXzJfc2VydmVyX21ldGhvZDsKKysJCURUTFN2MV8yX2NsaWVudF9tZXRob2Q7CisrCQlEVExTX21ldGhvZDsKKysJCURUTFNfc2VydmVyX21ldGhvZDsKKysJCURUTFNfY2xpZW50X21ldGhvZDsKKysJCVNTTF9DVFhfZ2V0X3NzbF9tZXRob2Q7CisrCQlTU0xfQ1RYX2dldDBfY2VydGlmaWNhdGU7CisrCQlTU0xfQ1RYX2dldDBfcHJpdmF0ZWtleTsKKysJCVNTTF9DT01QX3NldDBfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DT01QX2ZyZWVfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DSVBIRVJfZmluZDsKKysJCVNTTF9pc19zZXJ2ZXI7CisrCQlTU0xfQ09ORl9DVFhfbmV3OworKwkJU1NMX0NPTkZfQ1RYX2ZpbmlzaDsKKysJCVNTTF9DT05GX0NUWF9mcmVlOworKwkJU1NMX0NPTkZfQ1RYX3NldF9mbGFnczsKKysJCVNTTF9DT05GX0NUWF9jbGVhcl9mbGFnczsKKysJCVNTTF9DT05GX0NUWF9zZXQxX3ByZWZpeDsKKysJCVNTTF9DT05GX0NUWF9zZXRfc3NsOworKwkJU1NMX0NPTkZfQ1RYX3NldF9zc2xfY3R4OworKwkJU1NMX0NPTkZfY21kOworKwkJU1NMX0NPTkZfY21kX2FyZ3Y7CisrCQlTU0xfQ09ORl9jbWRfdmFsdWVfdHlwZTsKKysJCVNTTF90cmFjZTsKKysJCVNTTF9DSVBIRVJfc3RhbmRhcmRfbmFtZTsKKysJCVNTTF9nZXRfdGxzYV9yZWNvcmRfYnluYW1lOworKwkJQVNOMV9USU1FX2RpZmY7CisrCQlCSU9faGV4X3N0cmluZzsKKysJCUNNU19SZWNpcGllbnRJbmZvX2dldDBfcGtleV9jdHg7CisrCQlDTVNfUmVjaXBpZW50SW5mb19lbmNyeXB0OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9wa2V5X2N0eDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfbWRfY3R4OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduYXR1cmU7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfYWxnOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX3Jla3M7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfb3JpZ19pZDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfb3JpZ19pZF9jbXA7CisrCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2dldDBfaWQ7CisrCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2NlcnRfY21wOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9zZXQwX3BrZXk7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfY3R4OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9kZWNyeXB0OworKwkJQ01TX1NoYXJlZEluZm9fZW5jb2RlOworKwkJREhfY29tcHV0ZV9rZXlfcGFkZGVkOworKwkJZDJpX0RIeHBhcmFtczsKKysJCWkyZF9ESHhwYXJhbXM7CisrCQlESF9nZXRfMTAyNF8xNjA7CisrCQlESF9nZXRfMjA0OF8yMjQ7CisrCQlESF9nZXRfMjA0OF8yNTY7CisrCQlESF9LREZfWDlfNDI7CisrCQlFQ0RIX0tERl9YOV82MjsKKysJCUVDRFNBX01FVEhPRF9uZXc7CisrCQlFQ0RTQV9NRVRIT0RfZnJlZTsKKysJCUVDRFNBX01FVEhPRF9zZXRfYXBwX2RhdGE7CisrCQlFQ0RTQV9NRVRIT0RfZ2V0X2FwcF9kYXRhOworKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduOworKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduX3NldHVwOworKwkJRUNEU0FfTUVUSE9EX3NldF92ZXJpZnk7CisrCQlFQ0RTQV9NRVRIT0Rfc2V0X2ZsYWdzOworKwkJRUNEU0FfTUVUSE9EX3NldF9uYW1lOworKwkJRVZQX2Rlc19lZGUzX3dyYXA7CisrCQlFVlBfYWVzXzEyOF93cmFwOworKwkJRVZQX2Flc18xOTJfd3JhcDsKKysJCUVWUF9hZXNfMjU2X3dyYXA7CisrCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGEyNTY7CisrCQlFVlBfYWVzXzI1Nl9jYmNfaG1hY19zaGEyNTY7CisrCQlDUllQVE9fMTI4X3dyYXA7CisrCQlDUllQVE9fMTI4X3Vud3JhcDsKKysJCU9DU1BfUkVRX0NUWF9uYmlvOworKwkJT0NTUF9SRVFfQ1RYX25ldzsKKysJCU9DU1Bfc2V0X21heF9yZXNwb25zZV9sZW5ndGg7CisrCQlPQ1NQX1JFUV9DVFhfaTJkOworKwkJT0NTUF9SRVFfQ1RYX25iaW9fZDJpOworKwkJT0NTUF9SRVFfQ1RYX2dldDBfbWVtX2JpbzsKKysJCU9DU1BfUkVRX0NUWF9odHRwOworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVBfbWdmMTsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVBfbWdmMTsKKysJCVJTQV9PQUVQX1BBUkFNU19mcmVlOworKwkJUlNBX09BRVBfUEFSQU1TX2l0OworKwkJUlNBX09BRVBfUEFSQU1TX25ldzsKKysJCVNTTF9nZXRfc2lnYWxnczsKKysJCVNTTF9nZXRfc2hhcmVkX3NpZ2FsZ3M7CisrCQlTU0xfY2hlY2tfY2hhaW47CisrCQlYNTA5X2NoYWluX3VwX3JlZjsKKysJCVg1MDlfaHR0cF9uYmlvOworKwkJWDUwOV9DUkxfaHR0cF9uYmlvOworKwkJWDUwOV9SRVZPS0VEX2R1cDsKKysJCWkyZF9yZV9YNTA5X3RiczsKKysJCVg1MDlfZ2V0MF9zaWduYXR1cmU7CisrCQlYNTA5X2dldF9zaWduYXR1cmVfbmlkOworKwkJWDUwOV9DUkxfZGlmZjsKKysJCVg1MDlfY2hhaW5fY2hlY2tfc3VpdGViOworKwkJWDUwOV9DUkxfY2hlY2tfc3VpdGViOworKwkJWDUwOV9jaGVja19ob3N0OworKwkJWDUwOV9jaGVja19lbWFpbDsKKysJCVg1MDlfY2hlY2tfaXA7CisrCQlYNTA5X2NoZWNrX2lwX2FzYzsKKysJCVg1MDlfU1RPUkVfc2V0X2xvb2t1cF9jcmxzX2NiOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9zdG9yZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaG9zdDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDFfaG9zdDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9ob3N0ZmxhZ3M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX3BlZXJuYW1lOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9lbWFpbDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaXA7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwX2FzYzsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDBfbmFtZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9jb3VudDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDA7CisrCQlYNTA5VjNfRVhUX2ZyZWU7CisrCQlFQ19HUk9VUF9nZXRfbW9udF9kYXRhOworKwkJRUNfY3VydmVfbmlkMm5pc3Q7CisrCQlFQ19jdXJ2ZV9uaXN0Mm5pZDsKKysJCVBFTV93cml0ZV9iaW9fREh4cGFyYW1zOworKwkJUEVNX3dyaXRlX0RIeHBhcmFtczsKKysJCVNTTF9DVFhfYWRkX2NsaWVudF9jdXN0b21fZXh0OworKwkJU1NMX0NUWF9hZGRfc2VydmVyX2N1c3RvbV9leHQ7CisrCQlTU0xfZXh0ZW5zaW9uX3N1cHBvcnRlZDsKKysJCUJVRl9zdHJubGVuOworKwkJc2tfZGVlcF9jb3B5OworKwkJU1NMX3Rlc3RfZnVuY3Rpb25zOworKworKwlsb2NhbDoKKysJCSo7CisrfTsKKysKKytPUEVOU1NMXzEuMC4yZyB7CisrICAgICAgIGdsb2JhbDoKKysgICAgICAgICAgICAgICBTUlBfVkJBU0VfZ2V0MV9ieV91c2VyOworKyAgICAgICAgICAgICAgIFNSUF91c2VyX3B3ZF9mcmVlOworK30gT1BFTlNTTF8xLjAuMmQ7CisrCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDEwIEBACisrT1BFTlNTTF8xLjAuMiB7CisrCWdsb2JhbDoKKysJCWJpbmRfZW5naW5lOworKwkJdl9jaGVjazsKKysJCU9QRU5TU0xfaW5pdDsKKysJCU9QRU5TU0xfZmluaXNoOworKwlsb2NhbDoKKysJCSo7CisrfTsKKysKK0luZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL2NjZ29zdC9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwxMCBAQAorK09QRU5TU0xfMS4wLjIgeworKwlnbG9iYWw6CisrCQliaW5kX2VuZ2luZTsKKysJCXZfY2hlY2s7CisrCQlPUEVOU1NMX2luaXQ7CisrCQlPUEVOU1NMX2ZpbmlzaDsKKysJbG9jYWw6CisrCQkqOworK307CisrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9maW5kLnBsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9maW5kLnBsCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZmluZC5wbApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9maW5kLnBsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb2UtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb2UtbGRmbGFncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29lLWxkZmxhZ3MucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb2UtbGRmbGFncy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1jX3JlaGFzaC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1jX3JlaGFzaC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjIwZmRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWNfcmVoYXNoLnNoCkBAIC0wLDAgKzEsMjIyIEBACisjIS9iaW4vc2gKKyMKKyMgQmVuIFNlY3Jlc3QgPGJsc2VjcmVzQGdtYWlsLmNvbT4KKyMKKyMgc2ggY19yZWhhc2ggc2NyaXB0LCBzY2FuIGFsbCBmaWxlcyBpbiBhIGRpcmVjdG9yeQorIyBhbmQgYWRkIHN5bWJvbGljIGxpbmtzIHRvIHRoZWlyIGhhc2ggdmFsdWVzLgorIworIyBiYXNlZCBvbiB0aGUgY19yZWhhc2ggcGVybCBzY3JpcHQgZGlzdHJpYnV0ZWQgd2l0aCBvcGVuc3NsCisjCisjIExJQ0VOU0U6IFNlZSBPcGVuU1NMIGxpY2Vuc2UKKyMgXl5hY2NlcHRhYmxlP15eCisjCisKKyMgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBsb2NhdGlvbgorRElSPS9ldGMvb3BlbnNzbAorCisjIGZvciBmaWxldHlwZSBiaXRmaWVsZAorSVNfQ0VSVD0kKCggMSA8PCAwICkpCitJU19DUkw9JCgoIDEgPDwgMSApKQorCisKKyMgY2hlY2sgdG8gc2VlIGlmIGEgZmlsZSBpcyBhIGNlcnRpZmljYXRlIGZpbGUgb3IgYSBDUkwgZmlsZQorIyBhcmd1bWVudHM6CisjICAgICAgIDEuIHRoZSBmaWxlbmFtZSB0byBiZSBzY2FubmVkCisjIHJldHVybnM6CisjICAgICAgIGJpdGZpZWxkIG9mIGZpbGUgdHlwZTsgdXNlcyAke0lTX0NFUlR9IGFuZCAke0lTX0NSTH0KKyMKK2NoZWNrX2ZpbGUoKQoreworICAgIGxvY2FsIElTX1RZUEU9MAorCisgICAgIyBtYWtlIElGUyBhIG5ld2xpbmUgc28gd2UgY2FuIHByb2Nlc3MgZ3JlcCBvdXRwdXQgbGluZSBieSBsaW5lCisgICAgbG9jYWwgT0xESUZTPSR7SUZTfQorICAgIElGUz0kKCBwcmludGYgIlxuIiApCisKKyAgICAjIFhYWDogY291bGQgYmUgbW9yZSBlZmZpY2llbnQgdG8gaGF2ZSB0d28gJ2dyZXAgLW0nIGJ1dCBpcyAtbSBwb3J0YWJsZT8KKyAgICBmb3IgTElORSBpbiAkKCBncmVwICdeLS0tLS1CRUdJTiAuKi0tLS0tJyAkezF9ICkKKyAgICBkbworCWlmIGVjaG8gJHtMSU5FfSBcCisJICAgIHwgZ3JlcCAtcSAtRSAnXi0tLS0tQkVHSU4gKFg1MDkgfFRSVVNURUQgKT9DRVJUSUZJQ0FURS0tLS0tJworCXRoZW4KKwkgICAgSVNfVFlQRT0kKCggJHtJU19UWVBFfSB8ICR7SVNfQ0VSVH0gKSkKKworCSAgICBpZiBbICQoKCAke0lTX1RZUEV9ICYgJHtJU19DUkx9ICkpIC1uZSAwIF0KKwkgICAgdGhlbgorCSAgICAJYnJlYWsKKwkgICAgZmkKKwllbGlmIGVjaG8gJHtMSU5FfSB8IGdyZXAgLXEgJ14tLS0tLUJFR0lOIFg1MDkgQ1JMLS0tLS0nCisJdGhlbgorCSAgICBJU19UWVBFPSQoKCAke0lTX1RZUEV9IHwgJHtJU19DUkx9ICkpCisKKwkgICAgaWYgWyAkKCggJHtJU19UWVBFfSAmICR7SVNfQ0VSVH0gKSkgLW5lIDAgXQorCSAgICB0aGVuCisJICAgIAlicmVhaworCSAgICBmaQorCWZpCisgICAgZG9uZQorCisgICAgIyByZXN0b3JlIElGUworICAgIElGUz0ke09MRElGU30KKworICAgIHJldHVybiAke0lTX1RZUEV9Cit9CisKKworIworIyB1c2Ugb3BlbnNzbCB0byBmaW5nZXJwcmludCBhIGZpbGUKKyMgICAgYXJndW1lbnRzOgorIwkxLiB0aGUgZmlsZW5hbWUgdG8gZmluZ2VycHJpbnQKKyMJMi4gdGhlIG1ldGhvZCB0byB1c2UgKHg1MDksIGNybCkKKyMgICAgcmV0dXJuczoKKyMJbm9uZQorIyAgICBhc3N1bXB0aW9uczoKKyMJdXNlciB3aWxsIGNhcHR1cmUgb3V0cHV0IGZyb20gbGFzdCBzdGFnZSBvZiBwaXBlbGluZQorIworZmluZ2VycHJpbnQoKQoreworICAgICR7U1NMX0NNRH0gJHsyfSAtZmluZ2VycHJpbnQgLW5vb3V0IC1pbiAkezF9IHwgc2VkICdzL14uKj0vLycgfCB0ciAtZCAnOicKK30KKworCisjCisjIGxpbmtfaGFzaCAtIGNyZWF0ZSBsaW5rcyB0byBjZXJ0aWZpY2F0ZSBmaWxlcworIyAgICBhcmd1bWVudHM6CisjICAgICAgIDEuIHRoZSBmaWxlbmFtZSB0byBjcmVhdGUgYSBsaW5rIGZvcgorIwkyLiB0aGUgdHlwZSBvZiBjZXJ0aWZpY2F0ZSBiZWluZyBsaW5rZWQgKHg1MDksIGNybCkKKyMgICAgcmV0dXJuczoKKyMJMCBvbiBzdWNjZXNzLCAxIG90aGVyd2lzZQorIworbGlua19oYXNoKCkKK3sKKyAgICBsb2NhbCBGSU5HRVJQUklOVD0kKCBmaW5nZXJwcmludCAkezF9ICR7Mn0gKQorICAgIGxvY2FsIEhBU0g9JCggJHtTU0xfQ01EfSAkezJ9IC1oYXNoIC1ub291dCAtaW4gJHsxfSApCisgICAgbG9jYWwgU1VGRklYPTAKKyAgICBsb2NhbCBMSU5LRklMRT0nJworICAgIGxvY2FsIFRBRz0nJworCisgICAgaWYgWyAkezJ9ID0gImNybCIgXQorICAgIHRoZW4KKyAgICAJVEFHPSdyJworICAgIGZpCisKKyAgICBMSU5LRklMRT0ke0hBU0h9LiR7VEFHfSR7U1VGRklYfQorCisgICAgd2hpbGUgWyAtZiAke0xJTktGSUxFfSBdCisgICAgZG8KKwlpZiBbICR7RklOR0VSUFJJTlR9ID0gJCggZmluZ2VycHJpbnQgJHtMSU5LRklMRX0gJHsyfSApIF0KKwl0aGVuCisJICAgIGVjaG8gIk5PVEU6IFNraXBwaW5nIGR1cGxpY2F0ZSBmaWxlICR7MX0iID4mMgorCSAgICByZXR1cm4gMQorCWZpCQorCisJU1VGRklYPSQoKCAke1NVRkZJWH0gKyAxICkpCisJTElOS0ZJTEU9JHtIQVNIfS4ke1RBR30ke1NVRkZJWH0KKyAgICBkb25lCisKKyAgICBlY2hvICIkezN9ID0+ICR7TElOS0ZJTEV9IgorCisgICAgIyBhc3N1bWUgYW55IHN5c3RlbSB3aXRoIGEgUE9TSVggc2hlbGwgd2lsbCBlaXRoZXIgc3VwcG9ydCBzeW1saW5rcyBvcgorICAgICMgZG8gc29tZXRoaW5nIHRvIGhhbmRsZSB0aGlzIGdyYWNlZnVsbHkKKyAgICBsbiAtcyAkezN9ICR7TElOS0ZJTEV9CisKKyAgICByZXR1cm4gMAorfQorCisKKyMgaGFzaF9kaXIgY3JlYXRlIGhhc2ggbGlua3MgaW4gYSBnaXZlbiBkaXJlY3RvcnkKK2hhc2hfZGlyKCkKK3sKKyAgICBlY2hvICJEb2luZyAkezF9IgorCisgICAgY2QgJHsxfQorCisgICAgbHMgLTEgKiAyPi9kZXYvbnVsbCB8IHdoaWxlIHJlYWQgRklMRQorICAgIGRvCisgICAgICAgIGlmIGVjaG8gJHtGSUxFfSB8IGdyZXAgLXEgLUUgJ15bWzp4ZGlnaXQ6XV17OH1cLnI/W1s6ZGlnaXQ6XV0rJCcgXAorCSAgICAJJiYgWyAtaCAiJHtGSUxFfSIgXQorICAgICAgICB0aGVuCisgICAgICAgICAgICBybSAke0ZJTEV9CisgICAgICAgIGZpCisgICAgZG9uZQorCisgICAgbHMgLTEgKi5wZW0gKi5jZXIgKi5jcnQgKi5jcmwgMj4vZGV2L251bGwgfCB3aGlsZSByZWFkIEZJTEUKKyAgICBkbworCVJFQUxfRklMRT0ke0ZJTEV9CisJIyBpZiB3ZSBydW4gb24gYnVpbGQgaG9zdCB0aGVuIGdldCB0byB0aGUgcmVhbCBmaWxlcyBpbiByb290ZnMKKwlpZiBbIC1uICIke1NZU1JPT1R9IiAtYSAtaCAke0ZJTEV9IF0KKwl0aGVuCisJICAgIEZJTEU9JCggcmVhZGxpbmsgJHtGSUxFfSApCisJICAgICMgY2hlY2sgdGhlIHN5bWxpbmsgaXMgYWJzb2x1dGUgKG9yIGRhbmdsaW5nIGluIG90aGVyIHdvcmQpCisJICAgIGlmIFsgIngvIiA9ICJ4JCggZWNobyAke0ZJTEV9IHwgY3V0IC1jMSAtKSIgXQorCSAgICB0aGVuCisJCVJFQUxfRklMRT0ke1NZU1JPT1R9LyR7RklMRX0KKwkgICAgZmkKKwlmaQorCisJY2hlY2tfZmlsZSAke1JFQUxfRklMRX0KKyAgICAgICAgbG9jYWwgRklMRV9UWVBFPSR7P30KKwlsb2NhbCBUWVBFX1NUUj0nJworCisgICAgICAgIGlmIFsgJCgoICR7RklMRV9UWVBFfSAmICR7SVNfQ0VSVH0gKSkgLW5lIDAgXQorICAgICAgICB0aGVuCisgICAgICAgICAgICBUWVBFX1NUUj0neDUwOScKKyAgICAgICAgZWxpZiBbICQoKCAke0ZJTEVfVFlQRX0gJiAke0lTX0NSTH0gKSkgLW5lIDAgXQorICAgICAgICB0aGVuCisgICAgICAgICAgICBUWVBFX1NUUj0nY3JsJworICAgICAgICBlbHNlCisgICAgICAgICAgICBlY2hvICJOT1RFOiAke0ZJTEV9IGRvZXMgbm90IGNvbnRhaW4gYSBjZXJ0aWZpY2F0ZSBvciBDUkw6IHNraXBwaW5nIiA+JjIKKwkgICAgY29udGludWUKKyAgICAgICAgZmkKKworCWxpbmtfaGFzaCAke1JFQUxfRklMRX0gJHtUWVBFX1NUUn0gJHtGSUxFfQorICAgIGRvbmUKK30KKworCisjIGNob29zZSB0aGUgbmFtZSBvZiBhbiBzc2wgYXBwbGljYXRpb24KK2lmIFsgLW4gIiR7T1BFTlNTTH0iIF0KK3RoZW4KKyAgICBTU0xfQ01EPSQod2hpY2ggJHtPUEVOU1NMfSAyPi9kZXYvbnVsbCkKK2Vsc2UKKyAgICBTU0xfQ01EPS91c3IvYmluL29wZW5zc2wKKyAgICBPUEVOU1NMPSR7U1NMX0NNRH0KKyAgICBleHBvcnQgT1BFTlNTTAorZmkKKworIyBmaXggcGF0aHMKK1BBVEg9JHtQQVRIfToke0RJUn0vYmluCitleHBvcnQgUEFUSAorCisjIGNvbmZpcm0gZXhpc3RhbmNlL2V4ZWN1dGFiaWxpdHkgb2Ygc3NsIGNvbW1hbmQKK2lmICEgWyAteCAke1NTTF9DTUR9IF0KK3RoZW4KKyAgICBlY2hvICIkezB9OiByZWhhc2hpbmcgc2tpcHBlZCAoJ29wZW5zc2wnIHByb2dyYW0gbm90IGF2YWlsYWJsZSkiID4mMgorICAgIGV4aXQgMAorZmkKKworIyBkZXRlcm1pbmUgd2hpY2ggZGlyZWN0b3JpZXMgdG8gcHJvY2Vzcworb2xkX0lGUz0kSUZTCitpZiBbICR7I30gLWd0IDAgXQordGhlbgorICAgIElGUz0nOicKKyAgICBESVJMSVNUPSR7Kn0KK2VsaWYgWyAtbiAiJHtTU0xfQ0VSVF9ESVJ9IiBdCit0aGVuCisgICAgRElSTElTVD0kU1NMX0NFUlRfRElSCitlbHNlCisgICAgRElSTElTVD0ke0RJUn0vY2VydHMKK2ZpCisKK0lGUz0nOicKKworIyBwcm9jZXNzIGRpcmVjdG9yaWVzCitmb3IgQ0VSVF9ESVIgaW4gJHtESVJMSVNUfQorZG8KKyAgICBpZiBbIC1kICR7Q0VSVF9ESVJ9IC1hIC13ICR7Q0VSVF9ESVJ9IF0KKyAgICB0aGVuCisgICAgICAgIElGUz0kb2xkX0lGUworICAgICAgICBoYXNoX2RpciAke0NFUlRfRElSfQorICAgICAgICBJRlM9JzonCisgICAgZmkKK2RvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcGFyYWxsZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3BhcmFsbGVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDEzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3BhcmFsbGVsLnBhdGNoCkBAIC0wLDAgKzEsMzcwIEBACitGcm9tIDdmYjExOTJmMTEyYzE5MjBiZmQzOWY0MTg1ZjM0ZTlhZmZmM2NmZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogU2F0LCA1IE1hciAyMDE2IDAwOjEyOjAyICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvMjhdIEZpeCB0aGUgcGFyYWxsZWwgcmFjZXMgaW4gdGhlIE1ha2VmaWxlcy4KKworVGhpcyBwYXRjaCB3YXMgdGFrZW4gZnJvbSB0aGUgR2VudG9vIHBhY2thZ2luZzoKK2h0dHBzOi8vZ2l0d2ViLmdlbnRvby5vcmcvcmVwby9nZW50b28uZ2l0L3BsYWluL2Rldi1saWJzL29wZW5zc2wvZmlsZXMvb3BlbnNzbC0xLjAuMmctcGFyYWxsZWwtYnVpbGQucGF0Y2gKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitSZWZyZXNoZWQgZm9yIDEuMC4yaQorU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgorCistLS0KKyBNYWtlZmlsZS5vcmcgICAgICAgICAgfCAgMTQgKy0KKyBNYWtlZmlsZS5vcmcub3JpZyAgICAgfCAgMTAgKy0KKyBNYWtlZmlsZS5zaGFyZWQgICAgICAgfCAgIDIgKworIE1ha2VmaWxlLnNoYXJlZC5vcmlnICB8IDY1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGNyeXB0by9NYWtlZmlsZSAgICAgICB8ICAxMCArLQorIGVuZ2luZXMvTWFrZWZpbGUgICAgICB8ICAgNiArLQorIGVuZ2luZXMvTWFrZWZpbGUub3JpZyB8IDMzOCArKysrKysrKysrKysrKysrKysrKysrKysrKworIHRlc3QvTWFrZWZpbGUgICAgICAgICB8ICA5MiArKystLS0tCisgdGVzdC9NYWtlZmlsZS5vcmlnICAgIHwgIDg4ICsrKystLS0KKyA5IGZpbGVzIGNoYW5nZWQsIDExMDggaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS5zaGFyZWQub3JpZworIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbmdpbmVzL01ha2VmaWxlLm9yaWcKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLm9yZyBiL01ha2VmaWxlLm9yZworaW5kZXggOGU3OTM2Yy4uZWQ5OGQyYSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLm9yZworKysrIGIvTWFrZWZpbGUub3JnCitAQCAtMjgzLDE3ICsyODMsMTcgQEAgYnVpbGRfbGliY3J5cHRvOiBidWlsZF9jcnlwdG8gYnVpbGRfZW5naW5lcyBsaWJjcnlwdG8ucGMKKyBidWlsZF9saWJzc2w6IGJ1aWxkX3NzbCBsaWJzc2wucGMKKyAKKyBidWlsZF9jcnlwdG86CistCUBkaXI9Y3J5cHRvOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPWNyeXB0bzsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorIGJ1aWxkX3NzbDogYnVpbGRfY3J5cHRvCistCUBkaXI9c3NsOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPXNzbDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorIGJ1aWxkX2VuZ2luZXM6IGJ1aWxkX2NyeXB0bworLQlAZGlyPWVuZ2luZXM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKysJK0BkaXI9ZW5naW5lczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorIGJ1aWxkX2FwcHM6IGJ1aWxkX2xpYnMKKy0JQGRpcj1hcHBzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPWFwcHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKyBidWlsZF90ZXN0czogYnVpbGRfbGlicworLQlAZGlyPXRlc3Q7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKysJK0BkaXI9dGVzdDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorIGJ1aWxkX3Rvb2xzOiBidWlsZF9saWJzCistCUBkaXI9dG9vbHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKysJK0BkaXI9dG9vbHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKyAKKyBhbGxfdGVzdGFwcHM6IGJ1aWxkX2xpYnMgYnVpbGRfdGVzdGFwcHMKKyBidWlsZF90ZXN0YXBwczoKK0BAIC01NjUsNyArNTY1LDcgQEAgaW5zdGFsbF9zdzoKKyAJKGNwICQkaSAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaTsgXAorIAljaG1vZCA2NDQgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2luY2x1ZGUvb3BlbnNzbC8kJGkgKTsgXAorIAlkb25lOworLQlAc2V0IC1lOyB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfQlVJTERfQ01EKQorKwkrQHNldCAtZTsgdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX0JVSUxEX0NNRCkKKyAJQHNldCAtZTsgbGlibGlzdD0iJChMSUJTKSI7IGZvciBpIGluICQkbGlibGlzdCA7XAorIAlkbyBcCisgCQlpZiBbIC1mICIkJGkiIF07IHRoZW4gXAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLnNoYXJlZCBiL01ha2VmaWxlLnNoYXJlZAoraW5kZXggZjZmOTJlNy4uODE2NDE4NiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnNoYXJlZAorKysrIGIvTWFrZWZpbGUuc2hhcmVkCitAQCAtMTA1LDYgKzEwNSw3IEBAIExJTktfU089CVwKKyAgICAgU0hBUkVERkxBR1M9IiQoT0VfTERGTEFHUykgJCR7U0hBUkVERkxBR1M6LSQoQ0ZMQUdTKSAkKFNIQVJFRF9MREZMQUdTKX0iOyBcCisgICAgIExJQlBBVEg9YGZvciB4IGluICQkTElCREVQUzsgZG8gZWNobyAkJHg7IGRvbmUgfCBzZWQgLWUgJ3MvXiAqLUwvLzt0JyAtZSBkIHwgdW5pcWA7IFwKKyAgICAgTElCUEFUSD1gZWNobyAkJExJQlBBVEggfCBzZWQgLWUgJ3MvIC86L2cnYDsgXAorKyAgICBbIC1lICQkU0hMSUIkJFNITElCX1NPVkVSJCRTSExJQl9TVUZGSVggXSAmJiBleGl0IDA7IFwKKyAgICAgTERfTElCUkFSWV9QQVRIPSQkTElCUEFUSDokJExEX0xJQlJBUllfUEFUSCBcCisgICAgICQke1NIQVJFRENNRH0gJCR7U0hBUkVERkxBR1N9IFwKKyAJLW8gJCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCBcCitAQCAtMTIyLDYgKzEyMyw3IEBAIFNZTUxJTktfU089CVwKKyAJCQlkb25lOyBcCisgCQlmaTsgXAorIAkJaWYgWyAtbiAiJCRTSExJQl9TT1ZFUiIgXTsgdGhlbiBcCisrCQkJWyAtZSAiJCRTSExJQiQkU0hMSUJfU1VGRklYIiBdIHx8IFwKKyAJCQkoICQoU0VUX1gpOyBybSAtZiAkJFNITElCJCRTSExJQl9TVUZGSVg7IFwKKyAJCQkgIGxuIC1zICQkcHJldiAkJFNITElCJCRTSExJQl9TVUZGSVggKTsgXAorIAkJZmk7IFwKK2RpZmYgLS1naXQgYS9jcnlwdG8vTWFrZWZpbGUgYi9jcnlwdG8vTWFrZWZpbGUKK2luZGV4IDE3YTg3ZjguLjI5YzJkY2YgMTAwNjQ0CistLS0gYS9jcnlwdG8vTWFrZWZpbGUKKysrKyBiL2NyeXB0by9NYWtlZmlsZQorQEAgLTg1LDExICs4NSwxMSBAQCB0ZXN0YXBwczoKKyAJQGlmIFsgLXogIiQoVEhJUykiIF07IHRoZW4gJChNQUtFKSAtZiAkKFRPUCkvTWFrZWZpbGUgcmVmbGVjdCBUSElTPSRAOyBmaQorIAorIHN1YmRpcnM6CistCUB0YXJnZXQ9YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCisgCisgZmlsZXM6CisgCSQoUEVSTCkgJChUT1ApL3V0aWwvZmlsZXMucGwgIkNQVUlEX09CSj0kKENQVUlEX09CSikiIE1ha2VmaWxlID4+ICQoVE9QKS9NSU5GTworLQlAdGFyZ2V0PWZpbGVzOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1maWxlczsgJChSRUNVUlNJVkVfTUFLRSkKKyAKKyBsaW5rczoKKyAJQCQoUEVSTCkgJChUT1ApL3V0aWwvbWtsaW5rLnBsIC4uL2luY2x1ZGUvb3BlbnNzbCAkKEVYSEVBREVSKQorQEAgLTEwMCw3ICsxMDAsNyBAQCBsaW5rczoKKyAjIGxpYjogJChMSUIpOiBhcmUgc3BsaXR0ZWQgdG8gYXZvaWQgZW5kLWxlc3MgbG9vcAorIGxpYjoJJChMSUIpCisgCUB0b3VjaCBsaWIKKy0kKExJQik6CSQoTElCT0JKKQorKyQoTElCKToJJChMSUJPQkopIHwgc3ViZGlycworIAkkKEFSKSAkKExJQikgJChMSUJPQkopCisgCXRlc3QgLXogIiQoRklQU0xJQkRJUikiIHx8ICQoQVIpICQoTElCKSAkKEZJUFNMSUJESVIpZmlwc2NhbmlzdGVyLm8KKyAJJChSQU5MSUIpICQoTElCKSB8fCBlY2hvIE5ldmVyIG1pbmQuCitAQCAtMTExLDcgKzExMSw3IEBAIHNoYXJlZDogYnVpbGRpbmYuaCBsaWIgc3ViZGlycworIAlmaQorIAorIGxpYnM6CistCUB0YXJnZXQ9bGliOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1saWI7ICQoUkVDVVJTSVZFX01BS0UpCisgCisgaW5zdGFsbDoKKyAJQFsgLW4gIiQoSU5TVEFMTFRPUCkiIF0gIyBzaG91bGQgYmUgc2V0IGJ5IHRvcCBNYWtlZmlsZS4uLgorQEAgLTEyMCw3ICsxMjAsNyBAQCBpbnN0YWxsOgorIAkoY3AgJCRpICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpOyBcCisgCWNobW9kIDY0NCAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaSApOyBcCisgCWRvbmU7CistCUB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKysJK0B0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKyAKKyBsaW50OgorIAlAdGFyZ2V0PWxpbnQ7ICQoUkVDVVJTSVZFX01BS0UpCitkaWZmIC0tZ2l0IGEvZW5naW5lcy9NYWtlZmlsZSBiL2VuZ2luZXMvTWFrZWZpbGUKK2luZGV4IGZlOGU5Y2EuLmE0M2QyMWIgMTAwNjQ0CistLS0gYS9lbmdpbmVzL01ha2VmaWxlCisrKysgYi9lbmdpbmVzL01ha2VmaWxlCitAQCAtNzIsNyArNzIsNyBAQCB0b3A6CisgCisgYWxsOglsaWIgc3ViZGlycworIAorLWxpYjoJJChMSUJPQkopCisrbGliOgkkKExJQk9CSikgfCBzdWJkaXJzCisgCUBpZiBbIC1uICIkKFNIQVJFRF9MSUJTKSIgXTsgdGhlbiBcCisgCQlzZXQgLWU7IFwKKyAJCWZvciBsIGluICQoTElCTkFNRVMpOyBkbyBcCitAQCAtODksNyArODksNyBAQCBsaWI6CSQoTElCT0JKKQorIAorIHN1YmRpcnM6CisgCWVjaG8gJChFRElSUykKKy0JQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCisrCStAdGFyZ2V0PWFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKyAKKyBmaWxlczoKKyAJJChQRVJMKSAkKFRPUCkvdXRpbC9maWxlcy5wbCBNYWtlZmlsZSA+PiAkKFRPUCkvTUlORk8KK0BAIC0xMjgsNyArMTI4LDcgQEAgaW5zdGFsbDoKKyAJCQkgIG12IC1mICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS8kKExJQkRJUikvc3NsL2VuZ2luZXMvJCRwZngkJGwkJHNmeC5uZXcgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApLyQoTElCRElSKS9zc2wvZW5naW5lcy8kJHBmeCQkbCQkc2Z4ICk7IFwKKyAJCWRvbmU7IFwKKyAJZmkKKy0JQHRhcmdldD1pbnN0YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1pbnN0YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQorIAorIHRhZ3M6CisgCWN0YWdzICQoU1JDKQorZGlmZiAtLWdpdCBhL3Rlc3QvTWFrZWZpbGUgYi90ZXN0L01ha2VmaWxlCitpbmRleCA0MGFiZDYwLi43OGQzNzg4IDEwMDY0NAorLS0tIGEvdGVzdC9NYWtlZmlsZQorKysrIGIvdGVzdC9NYWtlZmlsZQorQEAgLTE0NSw3ICsxNDUsNyBAQCBpbnN0YWxsOgorIHRhZ3M6CisgCWN0YWdzICQoU1JDKQorIAorLXRlc3RzOglleGUgYXBwcyAkKFRFU1RTKQorK3Rlc3RzOglleGUgJChURVNUUykKKyAKKyBhcHBzOgorIAlAKGNkIC4uOyAkKE1BS0UpIERJUlM9YXBwcyBhbGwpCitAQCAtNDQ0LDEzOSArNDQ0LDEzOSBAQCBCVUlMRF9DTURfU1RBVElDPXNobGliX3RhcmdldD07IFwKKyAJCWxpbmtfYXBwLiQke3NobGliX3RhcmdldH0KKyAKKyAkKFJTQVRFU1QpJChFWEVfRVhUKTogJChSU0FURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFJTQVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChSU0FURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChCTlRFU1QpJChFWEVfRVhUKTogJChCTlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoQk5URVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQk5URVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFQ1RFU1QpJChFWEVfRVhUKTogJChFQ1RFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRUNURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRUNURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFWFBURVNUKSQoRVhFX0VYVCk6ICQoRVhQVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChFWFBURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRVhQVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoSURFQVRFU1QpJChFWEVfRVhUKTogJChJREVBVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChJREVBVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKElERUFURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChNRDJURVNUKSQoRVhFX0VYVCk6ICQoTUQyVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChNRDJURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoTUQyVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoU0hBVEVTVCkkKEVYRV9FWFQpOiAkKFNIQVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoU0hBVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFNIQVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNIQTFURVNUKSQoRVhFX0VYVCk6ICQoU0hBMVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoU0hBMVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTSEExVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoU0hBMjU2VEVTVCkkKEVYRV9FWFQpOiAkKFNIQTI1NlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoU0hBMjU2VEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFNIQTI1NlRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNIQTUxMlRFU1QpJChFWEVfRVhUKTogJChTSEE1MTJURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNIQTUxMlRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTSEE1MTJURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChSTURURVNUKSQoRVhFX0VYVCk6ICQoUk1EVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChSTURURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoUk1EVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoTURDMlRFU1QpJChFWEVfRVhUKTogJChNREMyVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChNREMyVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKE1EQzJURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChNRDRURVNUKSQoRVhFX0VYVCk6ICQoTUQ0VEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChNRDRURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoTUQ0VEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoTUQ1VEVTVCkkKEVYRV9FWFQpOiAkKE1ENVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoTUQ1VEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKE1ENVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKEhNQUNURVNUKSQoRVhFX0VYVCk6ICQoSE1BQ1RFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoSE1BQ1RFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChITUFDVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoV1BURVNUKSQoRVhFX0VYVCk6ICQoV1BURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFdQVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFdQVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoUkMyVEVTVCkkKEVYRV9FWFQpOiAkKFJDMlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoUkMyVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFJDMlRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKEJGVEVTVCkkKEVYRV9FWFQpOiAkKEJGVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChCRlRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChCRlRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKENBU1RURVNUKSQoRVhFX0VYVCk6ICQoQ0FTVFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoQ0FTVFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChDQVNUVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoUkM0VEVTVCkkKEVYRV9FWFQpOiAkKFJDNFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoUkM0VEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFJDNFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFJDNVRFU1QpJChFWEVfRVhUKTogJChSQzVURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFJDNVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChSQzVURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChERVNURVNUKSQoRVhFX0VYVCk6ICQoREVTVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChERVNURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoREVTVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoUkFORFRFU1QpJChFWEVfRVhUKTogJChSQU5EVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChSQU5EVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFJBTkRURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChESFRFU1QpJChFWEVfRVhUKTogJChESFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoREhURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoREhURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChEU0FURVNUKSQoRVhFX0VYVCk6ICQoRFNBVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChEU0FURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRFNBVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoTUVUSFRFU1QpJChFWEVfRVhUKTogJChNRVRIVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChNRVRIVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKE1FVEhURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChTU0xURVNUKSQoRVhFX0VYVCk6ICQoU1NMVEVTVCkubyAkKERMSUJTU0wpICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNTTFRFU1QpOyAkKEZJUFNfQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFNTTFRFU1QpOyAkKEZJUFNfQlVJTERfQ01EKQorIAorICQoRU5HSU5FVEVTVCkkKEVYRV9FWFQpOiAkKEVOR0lORVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRU5HSU5FVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEVOR0lORVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKEVWUFRFU1QpJChFWEVfRVhUKTogJChFVlBURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEVWUFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChFVlBURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFVlBFWFRSQVRFU1QpJChFWEVfRVhUKTogJChFVlBFWFRSQVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRVZQRVhUUkFURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRVZQRVhUUkFURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFQ0RTQVRFU1QpJChFWEVfRVhUKTogJChFQ0RTQVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRUNEU0FURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRUNEU0FURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFQ0RIVEVTVCkkKEVYRV9FWFQpOiAkKEVDREhURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEVDREhURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRUNESFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKElHRVRFU1QpJChFWEVfRVhUKTogJChJR0VURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKElHRVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChJR0VURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChKUEFLRVRFU1QpJChFWEVfRVhUKTogJChKUEFLRVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoSlBBS0VURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoSlBBS0VURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChBU04xVEVTVCkkKEVYRV9FWFQpOiAkKEFTTjFURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEFTTjFURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQVNOMVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNSUFRFU1QpJChFWEVfRVhUKTogJChTUlBURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNSUFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTUlBURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChWM05BTUVURVNUKSQoRVhFX0VYVCk6ICQoVjNOQU1FVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChWM05BTUVURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoVjNOQU1FVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoSEVBUlRCRUFUVEVTVCkkKEVYRV9FWFQpOiAkKEhFQVJUQkVBVFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoSEVBUlRCRUFUVEVTVCk7ICQoQlVJTERfQ01EX1NUQVRJQykKKysJK0B0YXJnZXQ9JChIRUFSVEJFQVRURVNUKTsgJChCVUlMRF9DTURfU1RBVElDKQorIAorICQoQ09OU1RUSU1FVEVTVCkkKEVYRV9FWFQpOiAkKENPTlNUVElNRVRFU1QpLm8KKy0JQHRhcmdldD0kKENPTlNUVElNRVRFU1QpICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKENPTlNUVElNRVRFU1QpICQoQlVJTERfQ01EKQorIAorICQoVkVSSUZZRVhUUkFURVNUKSQoRVhFX0VYVCk6ICQoVkVSSUZZRVhUUkFURVNUKS5vCistCUB0YXJnZXQ9JChWRVJJRllFWFRSQVRFU1QpICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFZFUklGWUVYVFJBVEVTVCkgJChCVUlMRF9DTUQpCisgCisgJChDTElFTlRIRUxMT1RFU1QpJChFWEVfRVhUKTogJChDTElFTlRIRUxMT1RFU1QpLm8KKy0JQHRhcmdldD0kKENMSUVOVEhFTExPVEVTVCkgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQ0xJRU5USEVMTE9URVNUKSAkKEJVSUxEX0NNRCkKKyAKKyAkKEJBRERUTFNURVNUKSQoRVhFX0VYVCk6ICQoQkFERFRMU1RFU1QpLm8KKy0JQHRhcmdldD0kKEJBRERUTFNURVNUKSAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChCQUREVExTVEVTVCkgJChCVUlMRF9DTUQpCisgCisgJChGQVRBTEVSUlRFU1QpJChFWEVfRVhUKTogJChGQVRBTEVSUlRFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQorIAlAdGFyZ2V0PSQoRkFUQUxFUlJURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNTTFYyQ09ORlRFU1QpJChFWEVfRVhUKTogJChTU0xWMkNPTkZURVNUKS5vCistCUB0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKKyAKKyAkKERUTFNURVNUKSQoRVhFX0VYVCk6ICQoRFRMU1RFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRFRMU1RFU1QpOyBleG9iaj1zc2x0ZXN0bGliLm87ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKERUTFNURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKKyAKKyAjJChBRVNURVNUKS5vOiAkKEFFU1RFU1QpLmMKKyAjCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtRElOVEVSTUVESUFURV9WQUxVRV9LQVQgLURUUkFDRV9LQVRfTUNUICQoQUVTVEVTVCkuYworQEAgLTU4OSw3ICs1ODksNyBAQCAkKERUTFNURVNUKSQoRVhFX0VYVCk6ICQoRFRMU1RFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQorICMJZmkKKyAKKyBkdW1teXRlc3QkKEVYRV9FWFQpOiBkdW1teXRlc3QubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9ZHVtbXl0ZXN0OyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9ZHVtbXl0ZXN0OyAkKEJVSUxEX0NNRCkKKyAKKyAjIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCisgCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcHRlc3QtZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3QtZGVwcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3B0ZXN0LWRlcHMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3QtZGVwcy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2IyMGZjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoCittYWtlIC1rIHJ1bnRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9zaGFyZWQtbGlicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vc2hhcmVkLWxpYnMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9zaGFyZWQtbGlicy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9zaGFyZWQtbGlicy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMmE3OTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI1MiArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotIyAib3BlbnNzbCB8IFNTTGVheSIgZHVhbCBsaWNlbnNlCi1MSUNFTlNFID0gIm9wZW5zc2wiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mOWE4Zjk2ODEwNzM0NWUwYjc1YWE4YzJlY2FhN2VjOCIKLQotREVQRU5EUyA9ICJtYWtlZGVwZW5kLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICIKLVMgPSAiJHtXT1JLRElSfS9vcGVuc3NsLSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHW3BlcmxdID0gIiwsLCIKLQotVEVSTUlPX2xpYmMtbXVzbCA9ICItRFRFUk1JT1MiCi1URVJNSU8gPz0gIi1EVEVSTUlPIgotIyBBdm9pZCBiaW5hcmllcyBiZWluZyBtYXJrZWQgYXMgcmVxdWlyaW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sgc2luY2UgaXQgCi0jIGRvZXNuJ3Qod2hpY2ggY2F1c2VzIGFuZCB0aGlzIGNhdXNlcyBpc3N1ZXMgd2l0aCBTRUxpbnV4Ci1DRkxBRyA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1ETF9FTkRJQU4nLCAnLURCX0VORElBTicsIGQpfSBcCi0JICR7VEVSTUlPfSAke0NGTEFHU30gLVdhbGwgLVdhLC0tbm9leGVjc3RhY2siCi0KLWV4cG9ydCBESVJTID0gImNyeXB0byBzc2wgYXBwcyIKLWV4cG9ydCBFWF9MSUJTID0gIi1sZ2NjIC1sZGwiCi1leHBvcnQgQVMgPSAiJHtDQ30gLWMiCi0KLWluaGVyaXQgcGtnY29uZmlnIHNpdGVpbmZvIG11bHRpbGliX2hlYWRlciBwdGVzdCByZWxhdGl2ZV9zeW1saW5rcwotCi1QQUNLQUdFUyA9KyAibGliY3J5cHRvIGxpYnNzbCAke1BOfS1taXNjIG9wZW5zc2wtY29uZiIKLUZJTEVTX2xpYmNyeXB0byA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgotRklMRVNfbGlic3NsID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCi1GSUxFU18ke1BOfSA9KyAiICR7bGliZGlyfS9zc2wvKiIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC9taXNjIgotUkRFUEVORFNfJHtQTn0tbWlzYyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIKLQotUFJPVklERVMgKz0gIm9wZW5zc2wxMCIKLQotIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiAgTWFrZSB0aGUgbGliY3J5cHRvCi0jIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiAgVGhpcyB3aWxsIGVuYWJsZSB0aGUgY29uZmlndXJhdGlvbgotIyBmaWxlIHRvIGJlIGluc3RhbGxlZCBmb3IgYm90aCB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgYW5kIHRoZSBsaWJjcnlwdG8KLSMgcGFja2FnZSBzaW5jZSB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCi1GSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCi1DT05GRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgotUlJFQ09NTUVORFNfbGliY3J5cHRvICs9ICJvcGVuc3NsLWNvbmYiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbWlzYyBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBiYyIKLQotIyBSZW1vdmUgdGhpcyB0byBlbmFibGUgU1NMdjMuIFNTTHYzIGlzIGRlZmF1bHRlZCB0byBkaXNhYmxlZCBkdWUgdG8gdGhlIFBPT0RMRQotIyB2dWxuZXJhYmlsaXR5Ci1FWFRSQV9PRUNPTkYgPSAiIC1uby1zc2wzIgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9kYXJ3aW4gKCkgewotCXNlZCAtaSAtZSAnL3ZlcnNpb24tc2NyaXB0PW9wZW5zc2xcLmxkL2QnIENvbmZpZ3VyZQotfQotCi1kb19jb25maWd1cmUgKCkgewotCWNkIHV0aWwKLQlwZXJsIHBlcmxwYXRoLnBsICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNkIC4uCi0JbG4gLXNmIGFwcHMvb3BlbnNzbC5wb2QgY3J5cHRvL2NyeXB0by5wb2Qgc3NsL3NzbC5wb2QgZG9jLwotCi0Jb3M9JHtIT1NUX09TfQotCWNhc2UgJG9zIGluCi0JbGludXgtdWNsaWJjIHxcCi0JbGludXgtdWNsaWJjZWFiaSB8XAotCWxpbnV4LWdudWVhYmkgfFwKLQlsaW51eC11Y2xpYmNzcGUgfFwKLQlsaW51eC1nbnVzcGUgfFwKLQlsaW51eC1tdXNsKikKLQkJb3M9bGludXgKLQkJOzsKLQkJKikKLQkJOzsKLQllc2FjCi0JdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgotCWNhc2UgJHRhcmdldCBpbgotCWxpbnV4LWFybSkKLQkJdGFyZ2V0PWxpbnV4LWFybXY0Ci0JCTs7Ci0JbGludXgtYXJtZWIpCi0JCXRhcmdldD1saW51eC1lbGYtYXJtZWIKLQkJOzsKLQlsaW51eC1hYXJjaDY0KikKLQkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKLQkJOzsKLQlsaW51eC1zaDMpCi0JCXRhcmdldD1kZWJpYW4tc2gzCi0JCTs7Ci0JbGludXgtc2g0KQotCQl0YXJnZXQ9ZGViaWFuLXNoNAotCQk7OwotCWxpbnV4LWk0ODYpCi0JCXRhcmdldD1kZWJpYW4taTM4Ni1pNDg2Ci0JCTs7Ci0JbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQotCQl0YXJnZXQ9ZGViaWFuLWkzODYtaTU4NgotCQk7OwotCWxpbnV4LWk2ODYpCi0JCXRhcmdldD1kZWJpYW4taTM4Ni1pNjg2L2Ntb3YKLQkJOzsKLQlsaW51eC1nbnV4MzIteDg2XzY0KQotCQl0YXJnZXQ9bGludXgteDMyCi0JCTs7Ci0JbGludXgtZ251NjQteDg2XzY0KQotCQl0YXJnZXQ9bGludXgteDg2XzY0Ci0JCTs7Ci0JbGludXgtZ251bjMyLW1pcHMqZWwpCi0JCXRhcmdldD1kZWJpYW4tbWlwc24zMmVsCi0JCTs7Ci0JbGludXgtZ251bjMyLW1pcHMqKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHNuMzIKLQkJOzsKLQlsaW51eC1taXBzKjY0KmVsKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHM2NGVsCi0JCTs7Ci0JbGludXgtbWlwcyo2NCopCi0JCXRhcmdldD1kZWJpYW4tbWlwczY0Ci0JCTs7Ci0JbGludXgtbWlwcyplbCkKLQkJdGFyZ2V0PWRlYmlhbi1taXBzZWwKLQkJOzsKLQlsaW51eC1taXBzKikKLQkJdGFyZ2V0PWRlYmlhbi1taXBzCi0JCTs7Ci0JbGludXgtbWljcm9ibGF6ZSp8bGludXgtbmlvczIqKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcG93ZXJwYykKLQkJdGFyZ2V0PWxpbnV4LXBwYwotCQk7OwotCWxpbnV4LXBvd2VycGM2NCkKLQkJdGFyZ2V0PWxpbnV4LXBwYzY0Ci0JCTs7Ci0JbGludXgtc3VwZXJzcGFyYykKLQkJdGFyZ2V0PWxpbnV4LXNwYXJjdjgKLQkJOzsKLQlsaW51eC1zcGFyYykKLQkJdGFyZ2V0PWxpbnV4LXNwYXJjdjgKLQkJOzsKLQlkYXJ3aW4taTM4NikKLQkJdGFyZ2V0PWRhcndpbi1pMzg2LWNjCi0JCTs7Ci0JZXNhYwotCSMgaW5qZWN0IG1hY2hpbmUtc3BlY2lmaWMgZmxhZ3MKLQlzZWQgLWkgLWUgInN8XlwoXCIkdGFyZ2V0XCIsXHMqXCJbXjpdXCtcKTpcKFteOl1cK1wpfFwxOiR7Q0ZMQUd9fGciIENvbmZpZ3VyZQotICAgICAgICB1c2VwcmVmaXg9JHtwcmVmaXh9Ci0gICAgICAgIGlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgdXNlcHJlZml4PS8KLSAgICAgICAgZmkgICAgICAgIAotCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9IHNoYXJlZCAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsIC0tbGliZGlyPWBiYXNlbmFtZSAke2xpYmRpcn1gICR0YXJnZXQKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgc2VkIC1pICdzL1woKE9QRU5TU0w9XCkiLioiL1wxIm9wZW5zc2wiLycgTWFrZWZpbGUKLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSBkZXBlbmQKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QgKCkgewotCSMgYnVpbGQgZGVwZW5kZW5jaWVzIGZvciB0ZXN0IGRpcmVjdG9yeSB0b28KLQlleHBvcnQgRElSUz0iJERJUlMgdGVzdCIKLQlvZV9ydW5tYWtlIGRlcGVuZAotCW9lX3J1bm1ha2UgYnVpbGR0ZXN0Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCSMgQ3JlYXRlICR7RH0vJHtwcmVmaXh9IHRvIGZpeCBwYXJhbGxlbCBpc3N1ZXMKLQlta2RpciAtcCAke0R9LyR7cHJlZml4fS8KLQotCW9lX3J1bm1ha2UgSU5TVEFMTF9QUkVGSVg9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBpbnN0YWxsCi0KLQlvZV9saWJpbnN0YWxsIC1zbyBsaWJjcnlwdG8gJHtEfSR7bGliZGlyfQotCW9lX2xpYmluc3RhbGwgLXNvIGxpYnNzbCAke0R9JHtsaWJkaXJ9Ci0KLQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0JY3AgLS1kZXJlZmVyZW5jZSAtUiBpbmNsdWRlL29wZW5zc2wgJHtEfSR7aW5jbHVkZWRpcn0KLQotCWluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLQlzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLQotCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbAotCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy90c2dldAotCWVsc2UKLQkJcm0gLWYgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbCAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0Ci0JZmkKLQotCSMgQ3JlYXRlIFNTTCBzdHJ1Y3R1cmUKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KLQltdiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiBcCi0JICAgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMgXAotCSAgICR7RH0ke2xpYmRpcn0vc3NsL3ByaXZhdGUgXAotCSAgIFwKLQkgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvCi0JbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL2NlcnRzICR7RH0ke2xpYmRpcn0vc3NsL2NlcnRzCi0JbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZQotCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZgotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQljcCAtciAtTCBNYWtlZmlsZS5vcmcgTWFrZWZpbGUgdGVzdCAke0R9JHtQVEVTVF9QQVRIfQotCi0gICAgICAgICMgUmVwbGFjZSB0aGUgcGF0aCB0byBuYXRpdmUgcGVybCB3aXRoIHRoZSBwYXRoIHRvIHRhcmdldCBwZXJsCi0gICAgICAgIHNlZCAtaSAncyxeUEVSTD0uKixQRVJMPSR7YmluZGlyfS9wZXJsLCcgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLQotCWNwIENvbmZpZ3VyZSBjb25maWcgZV9vcy5oICR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgLXIgLUwgaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfQotCWxuIC1zZiAke2xpYmRpcn0vbGliY3J5cHRvLmEgJHtEfSR7UFRFU1RfUEFUSH0KLQlsbiAtc2YgJHtsaWJkaXJ9L2xpYnNzbC5hICR7RH0ke1BURVNUX1BBVEh9Ci0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vY3J5cHRvCi0JY3AgY3J5cHRvL2NvbnN0YW50X3RpbWVfbG9jbC5oICR7RH0ke1BURVNUX1BBVEh9L2NyeXB0bwotCWNwIC1yIGNlcnRzICR7RH0ke1BURVNUX1BBVEh9Ci0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zZiAke2xpYmRpcn0vc3NsL21pc2MvQ0Euc2ggICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zZiAke2JpbmRpcn0vb3BlbnNzbCAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQljcCBhcHBzL3NlcnZlci5wZW0gICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQljcCBhcHBzL3NlcnZlcjIucGVtICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS91dGlsCi0JaW5zdGFsbCB1dGlsL29wZW5zc2x3cmFwLnNoICAgICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKLQlpbnN0YWxsIHV0aWwvc2hsaWJfd3JhcC5zaCAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAotCSMgVGltZSBzdGFtcHMgYXJlIHJlbGV2YW50IGZvciAibWFrZSBhbGx0ZXN0cyIsIG90aGVyd2lzZQotCSMgbWFrZSBtYXkgdHJ5IHRvIHJlY29tcGlsZSBiaW5hcmllcy4gTm90IG9ubHkgbXVzdCB0aGUKLQkjIGJpbmFyeSBmaWxlcyBiZSBuZXdlciB0aGFuIHRoZSBzb3VyY2VzLCB0aGV5IGFsc28gbXVzdAotCSMgYmUgbW9yZSByZWNlbnQgdGhhbiB0aGUgaGVhZGVyIGZpbGVzIGluIC91c3IvaW5jbHVkZS4KLQkjCi0JIyBVc2luZyAiY3AgLWEiIGlzIG5vdCBzdWZmaWNpZW50LCBiZWNhdXNlIGRvX2luc3RhbGwKLQkjIGRvZXMgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCB0aW1lIHN0YW1wcy4KLQkjCi0JIyBTbyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvcmlnaW5hbCBmaWxlIHN0YW1wcywgd2Ugc2V0Ci0JIyB0aGUgY3VycmVudCB0aW1lIGZvciBhbGwgZmlsZXMuIEJpbmFyaWVzIHdpbGwgZ2V0Ci0JIyBtb2RpZmllZCBhZ2FpbiBsYXRlciB3aGVuIHN0cmlwcGluZyB0aGVtLCBidXQgdGhhdCdzIG9rYXkuCi0JdG91Y2ggJHtEfSR7UFRFU1RfUEFUSH0KLQlmaW5kICR7RH0ke1BURVNUX1BBVEh9IC10eXBlIGYgLXByaW50MCB8IHhhcmdzIC0tdmVyYm9zZSAtMCB0b3VjaCAtciAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9vcGVuc3NsIFwKLQkgICAgT1BFTlNTTF9DT05GPSR7bGliZGlyfS9zc2wvb3BlbnNzbC5jbmYgXAotCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCi0JICAgIFNTTF9DRVJUX0ZJTEU9JHtsaWJkaXJ9L3NzbC9jZXJ0LnBlbSBcCi0JICAgIE9QRU5TU0xfRU5HSU5FUz0ke2xpYmRpcn0vc3NsL2VuZ2luZXMKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmJiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1SZW1vdmUtdGVzdC10aGF0LXJlcXVpcmVzLXJ1bm5pbmctYXMtbm9uLXJvb3QucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSAzZmRiMWUyYTE2ZWE0MDVjNjczMTQ0N2E4OTk0ZjIyMjgwOGVmN2U2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDcgQXByIDIwMTcgMTg6MDE6NTIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHRlc3QgdGhhdCByZXF1aXJlcyBydW5uaW5nIGFzIG5vbi1yb290CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQgfCAxNyArLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudCBiL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50CitpbmRleCBmOTAyYzIzLi5jNzU2N2MxIDEwMDY0NAorLS0tIGEvdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQKKysrKyBiL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50CitAQCAtMjMsNyArMjMsNyBAQCBzZXR1cCgidGVzdF9yZWhhc2giKTsKKyBwbGFuIHNraXBfYWxsID0+ICJ0ZXN0X3JlaGFzaCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iCisgICAgIHVubGVzcyBydW4oYXBwKFsib3BlbnNzbCIsICJyZWhhc2giLCAiLWhlbHAiXSkpOworIAorLXBsYW4gdGVzdHMgPT4gNTsKKytwbGFuIHRlc3RzID0+IDM7CisgCisgaW5kaXIgInJlaGFzaC4kJCIgPT4gc3ViIHsKKyAgICAgcHJlcGFyZSgpOworQEAgLTQyLDIxICs0Miw2IEBAIGluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7CisgICAgICAgICdUZXN0aW5nIHJlaGFzaCBvcGVyYXRpb25zIG9uIGVtcHR5IGRpcmVjdG9yeScpOworIH0sIGNyZWF0ZSA9PiAxLCBjbGVhbnVwID0+IDE7CisgCistaW5kaXIgInJlaGFzaC4kJCIgPT4gc3ViIHsKKy0gICAgcHJlcGFyZSgpOworLSAgICBjaG1vZCAwNTAwLCBjdXJkaXIoKTsKKy0gIFNLSVA6IHsKKy0gICAgICBpZiAoIW9rKCFvcGVuKEZPTywgIj51bndyaXRhYmxlLnR4dCIpLAorLSAgICAgICAgICAgICAgIlRlc3RpbmcgdGhhdCB3ZSBhcmVuJ3QgcnVubmluZyBhcyBhIHByaXZpbGVnZWQgdXNlciwgc3VjaCBhcyByb290IikpIHsKKy0gICAgICAgICAgY2xvc2UgRk9POworLSAgICAgICAgICBza2lwICJJdCdzIHBvaW50bGVzcyB0byBydW4gdGhlIG5leHQgdGVzdCBhcyByb290IiwgMTsKKy0gICAgICB9CistICAgICAgaXNudChydW4oYXBwKFsib3BlbnNzbCIsICJyZWhhc2giLCBjdXJkaXIoKV0pKSwgMSwKKy0gICAgICAgICAgICdUZXN0aW5nIHJlaGFzaCBvcGVyYXRpb25zIG9uIHJlYWRvbmx5IGRpcmVjdG9yeScpOworLSAgICB9CistICAgIGNobW9kIDA3MDAsIGN1cmRpcigpOyAgICAgICAjIG1ha2UgaXQgd3JpdGFibGUgYWdhaW4sIHNvIGNsZWFudXAgd29ya3MKKy19LCBjcmVhdGUgPT4gMSwgY2xlYW51cCA9PiAxOworLQorIHN1YiBwcmVwYXJlIHsKKyAgICAgbXkgQHBlbXNvdXJjZWZpbGVzID0gc29ydCBnbG9iKHNyY3RvcF9maWxlKCd0ZXN0JywgIioucGVtIikpOworICAgICBteSBAZGVzdGZpbGVzID0gKCk7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlNGU0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLVRha2UtbGlua2luZy1mbGFncy1mcm9tLUxERkxBR1MtZW52LXZhci5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDA4ZmFjZTQzNTNkODAxMTE5NzNhYmE5YzEzMDRjOTIxNThjZmFkMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggTWFyIDIwMTcgMTY6NDA6MTIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gVGFrZSBsaW5raW5nIGZsYWdzIGZyb20gTERGTEFHUyBlbnYgdmFyCisKK1RoaXMgZml4ZXMgIk5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5IiBpc3N1ZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsIHwgMiArLQorIENvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbCBiL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAoraW5kZXggYzAyOTgxNy4uNDNiNzY5YiAxMDA2NDQKKy0tLSBhL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAorKysrIGIvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsCitAQCAtMTczLDcgKzE3Myw3IEBAIENST1NTX0NPTVBJTEU9IHstICRjb25maWd7Y3Jvc3NfY29tcGlsZV9wcmVmaXh9IC19CisgQ0M9ICQoQ1JPU1NfQ09NUElMRSl7LSAkdGFyZ2V0e2NjfSAtfQorIENGTEFHUz17LSBvdXIgJGNmbGFnczIgPSBqb2luKCIgIiwobWFwIHsgIi1EIi4kX30gQHskdGFyZ2V0e2RlZmluZXN9fSwgQHskY29uZmlne2RlZmluZXN9fSksIi1ET1BFTlNTTERJUj1cIlxcXCJcJChPUEVOU1NMRElSKVxcXCJcIiIsIi1ERU5HSU5FU0RJUj1cIlxcXCJcJChFTkdJTkVTRElSKVxcXCJcIiIpIC19IHstICR0YXJnZXR7Y2ZsYWdzfSAtfSB7LSAkY29uZmlne2NmbGFnc30gLX0KKyBDRkxBR1NfUT17LSAkY2ZsYWdzMiA9fiBzfChbXFwiXSl8XFwkMXxnOyAkY2ZsYWdzMiAtfSB7LSAkY29uZmlne2NmbGFnc30gLX0KKy1MREZMQUdTPSB7LSAkdGFyZ2V0e2xmbGFnc30gLX0KKytMREZMQUdTPSB7LSAkdGFyZ2V0e2xmbGFnc30uIiAiLiRFTlZ7J0xERkxBR1MnfSAtfQorIFBMSUJfTERGTEFHUz0gey0gJHRhcmdldHtwbGliX2xmbGFnc30gLX0KKyBFWF9MSUJTPSB7LSAkdGFyZ2V0e2V4X2xpYnN9IC19IHstICRjb25maWd7ZXhfbGlic30gLX0KKyBMSUJfQ0ZMQUdTPXstICR0YXJnZXR7c2hhcmVkX2NmbGFnfSB8fCAiIiAtfQorZGlmZiAtLWdpdCBhL0NvbmZpZ3VyZSBiL0NvbmZpZ3VyZQoraW5kZXggYWVlN2NjMy4uMjc0ZDIzNiAxMDA3NTUKKy0tLSBhL0NvbmZpZ3VyZQorKysrIGIvQ29uZmlndXJlCitAQCAtOTc5LDcgKzk3OSw3IEBAICRjb25maWd7YnVpbGRfZmlsZX0gPSAkdGFyZ2V0e2J1aWxkX2ZpbGV9OworICRjb25maWd7ZGVmaW5lc30gPSBbXTsKKyAkY29uZmlne2NmbGFnc30gPSAiIjsKKyAkY29uZmlne2V4X2xpYnN9ID0gIiI7CistJGNvbmZpZ3tzaGFyZWRfbGRmbGFnfSA9ICIiOworKyRjb25maWd7c2hhcmVkX2xkZmxhZ30gPSAkRU5WeydMREZMQUdTJ307CisgCisgIyBNYWtlIHN1cmUgYnVpbGRfc2NoZW1lIGlzIGNvbnNpc3RlbnQuCisgJHRhcmdldHtidWlsZF9zY2hlbWV9ID0gWyAkdGFyZ2V0e2J1aWxkX3NjaGVtZX0gXQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIwYTE2OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2gKQEAgLTAsMCArMSw4OCBAQAorRnJvbSBiY2MwOTZhNTA4MTFiZjBmMGM0ZmQzNGIyOTkzZmVkN2E3MDE1OTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+CitEYXRlOiBGcmksIDMgTm92IDIwMTcgMjM6MzA6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWVzL2FzbS97YWVzLWFybXY0fGJzYWVzLWFybXY3fS5wbDogbWFrZSBpdCB3b3JrIHdpdGgKKyBiaW51dGlscy0yLjI5LgorCitJdCdzIG5vdCBjbGVhciBpZiBpdCdzIGEgZmVhdHVyZSBvciBidWcsIGJ1dCBiaW51dGlscy0yLjI5Wy4xXQoraW50ZXJwcmV0cyAnYWRyJyBpbnN0cnVjdGlvbiB3aXRoIFRodW1iMiBjb2RlIHJlZmVyZW5jZSBkaWZmZXJlbnRseSwKK2luIGEgd2F5IHRoYXQgYWZmZWN0cyBjYWxjdWxhdGlvbiBvZiBhZGRyZXNzZXMgb2YgY29uc3RhbnRzJyB0YWJsZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworUmV2aWV3ZWQtYnk6IFRpbSBIdWRzb24gPHRqaEBvcGVuc3NsLm9yZz4KK1Jldmlld2VkLWJ5OiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KK1NpZ25lZC1vZmYtYnk6IFN0ZWZhbiBBZ25lciA8c3RlZmFuLmFnbmVyQHRvcmFkZXguY29tPgorKE1lcmdlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvcHVsbC80NjY5KQorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBiODJhY2MzYzFhN2YzMDRjOWRmMzE4NDE3NTNhMGZhNzZiNWIzY2RhKQorLS0tCisgY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsICAgfCA2ICsrKy0tLQorIGNyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsIHwgNiArKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbCBiL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAoraW5kZXggMTZkNzlhYWU1My4uYzY0NzRiOGFhZCAxMDA2NDQKKy0tLSBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAorKysrIGIvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsCitAQCAtMjAwLDcgKzIwMCw3IEBAIEFFU19lbmNyeXB0OgorICNpZm5kZWYJX190aHVtYjJfXworIAlzdWIJcjMscGMsIzgJCUAgQUVTX2VuY3J5cHQKKyAjZWxzZQorLQlhZHIJcjMsQUVTX2VuY3J5cHQKKysJYWRyCXIzLC4KKyAjZW5kaWYKKyAJc3RtZGIgICBzcCEse3IxLHI0LXIxMixscn0KKyAjaWZkZWYJX19BUFBMRV9fCitAQCAtNDUwLDcgKzQ1MCw3IEBAIF9hcm12NF9BRVNfc2V0X2VuY3J5cHRfa2V5OgorICNpZm5kZWYJX190aHVtYjJfXworIAlzdWIJcjMscGMsIzgJCUAgQUVTX3NldF9lbmNyeXB0X2tleQorICNlbHNlCistCWFkcglyMyxBRVNfc2V0X2VuY3J5cHRfa2V5CisrCWFkcglyMywuCisgI2VuZGlmCisgCXRlcQlyMCwjMAorICNpZmRlZglfX3RodW1iMl9fCitAQCAtOTc2LDcgKzk3Niw3IEBAIEFFU19kZWNyeXB0OgorICNpZm5kZWYJX190aHVtYjJfXworIAlzdWIJcjMscGMsIzgJCUAgQUVTX2RlY3J5cHQKKyAjZWxzZQorLQlhZHIJcjMsQUVTX2RlY3J5cHQKKysJYWRyCXIzLC4KKyAjZW5kaWYKKyAJc3RtZGIgICBzcCEse3IxLHI0LXIxMixscn0KKyAjaWZkZWYJX19BUFBMRV9fCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwgYi9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAoraW5kZXggOWYyODg2NjBlZi4uYTI3YmI0YTE3OSAxMDA2NDQKKy0tLSBhL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsCisrKysgYi9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAorQEAgLTc0NCw3ICs3NDQsNyBAQCAkY29kZS49PDxfX187CisgLnR5cGUJX2JzYWVzX2RlY3J5cHQ4LCVmdW5jdGlvbgorIC5hbGlnbgk0CisgX2JzYWVzX2RlY3J5cHQ4OgorLQlhZHIJJGNvbnN0LF9ic2Flc19kZWNyeXB0OAorKwlhZHIJJGNvbnN0LC4KKyAJdmxkbWlhCSRrZXkhLCB7QFhNTVs5XX0JCUAgcm91bmQgMCBrZXkKKyAjaWZkZWYJX19BUFBMRV9fCisgCWFkcgkkY29uc3QsLkxNMElTUgorQEAgLTg0Myw3ICs4NDMsNyBAQCBfYnNhZXNfY29uc3Q6CisgLnR5cGUJX2JzYWVzX2VuY3J5cHQ4LCVmdW5jdGlvbgorIC5hbGlnbgk0CisgX2JzYWVzX2VuY3J5cHQ4OgorLQlhZHIJJGNvbnN0LF9ic2Flc19lbmNyeXB0OAorKwlhZHIJJGNvbnN0LC4KKyAJdmxkbWlhCSRrZXkhLCB7QFhNTVs5XX0JCUAgcm91bmQgMCBrZXkKKyAjaWZkZWYJX19BUFBMRV9fCisgCWFkcgkkY29uc3QsLkxNMFNSCitAQCAtOTUxLDcgKzk1MSw3IEBAICRjb2RlLj08PF9fXzsKKyAudHlwZQlfYnNhZXNfa2V5X2NvbnZlcnQsJWZ1bmN0aW9uCisgLmFsaWduCTQKKyBfYnNhZXNfa2V5X2NvbnZlcnQ6CistCWFkcgkkY29uc3QsX2JzYWVzX2tleV9jb252ZXJ0CisrCWFkcgkkY29uc3QsLgorIAl2bGQxLjgJe0BYTU1bN119LCAgWyRpbnBdIQkJQCBsb2FkIHJvdW5kIDAga2V5CisgI2lmZGVmCV9fQVBQTEVfXworIAlhZHIJJGNvbnN0LC5MTTAKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9NYWtlZmlsZXMtcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDk0NDZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9NYWtlZmlsZXMtcHRlc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1BZGQgJ2J1aWxkdGVzdCcgYW5kICdydW50ZXN0JyB0YXJnZXRzIHRvIE1ha2VmaWxlLCB0byBidWlsZCBhbmQgcnVuIHRlc3RzCi1jcm9zcy1jb21waWxlZC4KLQotU2lnbmVkLW9mZi1ieTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBlbmVhLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AZW5lYS5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotSW5kZXg6IG9wZW5zc2wtMS4wLjIvTWFrZWZpbGUub3JnCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzbC0xLjAuMi5vcmlnL01ha2VmaWxlLm9yZwotKysrIG9wZW5zc2wtMS4wLjIvTWFrZWZpbGUub3JnCi1AQCAtNDUxLDggKzQ1MSwxNiBAQCByZWhhc2gudGltZTogY2VydHMgYXBwcwotIHRlc3Q6ICAgdGVzdHMKLSAKLSB0ZXN0czogcmVoYXNoCi0rCSQoTUFLRSkgYnVpbGR0ZXN0Ci0rCSQoTUFLRSkgcnVudGVzdAotKwotK2J1aWxkdGVzdDoKLSsJQChjZCB0ZXN0ICYmIFwKLSsJJChDTEVBUkVOVikgJiYgJChNQUtFKSAtZSAkKEJVSUxERU5WKSBUT1A9Li4gVEVTVFM9JyQoVEVTVFMpJyBPUEVOU1NMX0RFQlVHX01FTU9SWT1vbiBPUEVOU1NMX0NPTkY9Li4vYXBwcy9vcGVuc3NsLmNuZiBleGUgYXBwcyk7Ci0rCi0rcnVudGVzdDoKLSAJQChjZCB0ZXN0ICYmIGVjaG8gInRlc3RpbmcuLi4iICYmIFwKLS0JJChDTEVBUkVOVikgJiYgJChNQUtFKSAtZSAkKEJVSUxERU5WKSBUT1A9Li4gVEVTVFM9JyQoVEVTVFMpJyBPUEVOU1NMX0RFQlVHX01FTU9SWT1vbiBPUEVOU1NMX0NPTkY9Li4vYXBwcy9vcGVuc3NsLmNuZiB0ZXN0cyApOwotKwkkKENMRUFSRU5WKSAmJiAkKE1BS0UpIC1lICQoQlVJTERFTlYpIFRPUD0uLiBURVNUUz0nJChURVNUUyknIE9QRU5TU0xfREVCVUdfTUVNT1JZPW9uIE9QRU5TU0xfQ09ORj0uLi9hcHBzL29wZW5zc2wuY25mIGFsbHRlc3RzICk7Ci0gCU9QRU5TU0xfQ09ORj1hcHBzL29wZW5zc2wuY25mIHV0aWwvb3BlbnNzbHdyYXAuc2ggdmVyc2lvbiAtYQotIAotIHJlcG9ydDoKLUluZGV4OiBvcGVuc3NsLTEuMC4yL3Rlc3QvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yLm9yaWcvdGVzdC9NYWtlZmlsZQotKysrIG9wZW5zc2wtMS4wLjIvdGVzdC9NYWtlZmlsZQotQEAgLTEzNyw3ICsxMzcsNyBAQCB0ZXN0czoJZXhlIGFwcHMgJChURVNUUykKLSBhcHBzOgotIAlAKGNkIC4uOyAkKE1BS0UpIERJUlM9YXBwcyBhbGwpCi0gCi0tYWxsdGVzdHM6IFwKLSthbGwtdGVzdHM9IFwKLSAJdGVzdF9kZXMgdGVzdF9pZGVhIHRlc3Rfc2hhIHRlc3RfbWQ0IHRlc3RfbWQ1IHRlc3RfaG1hYyBcCi0gCXRlc3RfbWQyIHRlc3RfbWRjMiB0ZXN0X3dwIFwKLSAJdGVzdF9ybWQgdGVzdF9yYzIgdGVzdF9yYzQgdGVzdF9yYzUgdGVzdF9iZiB0ZXN0X2Nhc3QgdGVzdF9hZXMgXAotQEAgLTE0OCw2ICsxNDgsMTEgQEAgYWxsdGVzdHM6IFwKLSAJdGVzdF9qcGFrZSB0ZXN0X3NycCB0ZXN0X2NtcyB0ZXN0X29jc3AgdGVzdF92M25hbWUgdGVzdF9oZWFydGJlYXQgXAotIAl0ZXN0X2NvbnN0YW50X3RpbWUKLSAKLSthbGx0ZXN0czoKLSsJQChmb3IgaSBpbiAkKGFsbC10ZXN0cyk7IGRvIFwKLSsJKCAkKE1BS0UpICQkaSAmJiBlY2hvICJQQVNTOiAkJGkiICkgfHwgZWNobyAiRkFJTDogJCRpIjsgXAotKwlkb25lKQotKwotIHRlc3RfZXZwOiAkKEVWUFRFU1QpJChFWEVfRVhUKSBldnB0ZXN0cy50eHQKLSAJLi4vdXRpbC9zaGxpYl93cmFwLnNoIC4vJChFVlBURVNUKSBldnB0ZXN0cy50eHQKLSAKLUBAIC0yMTMsNyArMjE4LDcgQEAgdGVzdF94NTA5OiAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHR4NQotIAllY2hvIHRlc3Qgc2Vjb25kIHg1MDl2MyBjZXJ0aWZpY2F0ZQotIAlzaCAuL3R4NTA5IHYzLWNlcnQyLnBlbSAyPi9kZXYvbnVsbAotIAotLXRlc3RfcnNhOiAkKFJTQVRFU1QpJChFWEVfRVhUKSAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHRyc2EgdGVzdHJzYS5wZW0KLSt0ZXN0X3JzYTogLi4vYXBwcy9vcGVuc3NsJChFWEVfRVhUKSB0cnNhIHRlc3Ryc2EucGVtCi0gCUBzaCAuL3Ryc2EgMj4vZGV2L251bGwKLSAJLi4vdXRpbC9zaGxpYl93cmFwLnNoIC4vJChSU0FURVNUKQotIAotQEAgLTMxMywxMSArMzE4LDExIEBAIHRlc3RfdHNhOiAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHRlc3QKLSAJICBzaCAuL3Rlc3R0c2E7IFwKLSAJZmkKLSAKLS10ZXN0X2lnZTogJChJR0VURVNUKSQoRVhFX0VYVCkKLSt0ZXN0X2lnZToKLSAJQGVjaG8gIlRlc3QgSUdFIG1vZGUiCi0gCS4uL3V0aWwvc2hsaWJfd3JhcC5zaCAuLyQoSUdFVEVTVCkKLSAKLS10ZXN0X2pwYWtlOiAkKEpQQUtFVEVTVCkkKEVYRV9FWFQpCi0rdGVzdF9qcGFrZToKLSAJQGVjaG8gIlRlc3QgSlBBS0UiCi0gCS4uL3V0aWwvc2hsaWJfd3JhcC5zaCAuLyQoSlBBS0VURVNUKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxM2RjN2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUFkZCBtdXNsIHRyaXBsZXQgc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yYS5vcmlnL0NvbmZpZ3VyZQotKysrIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQotQEAgLTQzMSw3ICs0MzEsNyBAQCBteSAldGFibGU9KAotICMKLSAjICAgICAgIC4vQ29uZmlndXJlIGxpbnV4LWFybXY0IC1tYXJjaD1hcm12NiAtRF9fQVJNX01BWF9BUkNIX189OAotICMKLS0ibGludXgtYXJtdjQiLAkiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWFybXY0IiwgImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotICJsaW51eC1hYXJjaDY0IiwiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YWFyY2g2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0gIyBDb25maWd1cmUgc2NyaXB0IGFkZHMgbWluaW1hbGx5IHJlcXVpcmVkIC1tYXJjaCBmb3IgYXNzZW1ibHkgc3VwcG9ydCwKLSAjIGlmIG5vIC1tYXJjaCB3YXMgc3BlY2lmaWVkIGF0IGNvbW1hbmQgbGluZS4gbWlwczMyIGFuZCBtaXBzNjQgYmVsb3cKLUBAIC01MDQsNiArNTA0LDggQEAgbXkgJXRhYmxlPSgKLSAibGludXgtZ251ZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotICJsaW51eC11Y2xpYmNlYWJpLWFybSIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotICJsaW51eC11Y2xpYmNlYWJpLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LW11c2xlYWJpLWFybSIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1tdXNsZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotIAotICJsaW51eC1hdnIzMiIsIiRFTlZ7J0NDJ306LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuIiwKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkxZTc0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvY29uZmlndXJlLXRhcmdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1UaGUgbnVtYmVyIG9mIGNvbG9ucyBhcmUgaW1wb3J0YW50IDopCi0KLQotLS0tCi0gQ29uZmlndXJlIHwgICAxNiArKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKLQotSW5kZXg6IG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjJhLm9yaWcvQ29uZmlndXJlCi0rKysgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCi1AQCAtNDQzLDYgKzQ0MywyMyBAQCBteSAldGFibGU9KAotICJsaW51eC1hbHBoYS1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCi0gImxpbnV4LWFscGhhK2J3eC1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCi0gCi0rIAotKyMgTGludXggb24gQVJNCi0rImxpbnV4LWVsZi1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtZWxmLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWdudWVhYmktYXJtIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWdudWVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtdWNsaWJjZWFiaS1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtdWNsaWJjZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKwotKyJsaW51eC1hdnIzMiIsIiRFTlZ7J0NDJ306LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuIiwKLSsKLSsjIyMjIExpbnV4IG9uIE1JUFMvTUlQUzY0Ci0rImxpbnV4LW1pcHMiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1taXBzNjQiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLW1hYmk9NjQgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LW1pcHM2NGVsIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1tYWJpPTY0IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1taXBzZWwiLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKwotICMgQW5kcm9pZDogbGludXgtKiBidXQgd2l0aG91dCBwb2ludGVycyB0byBoZWFkZXJzIGFuZCBsaWJzLgotICJhbmRyb2lkIiwiZ2NjOi1tYW5kcm9pZCAtSVwkKEFORFJPSURfREVWKS9pbmNsdWRlIC1CXCQoQU5EUk9JRF9ERVYpL2xpYiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0gImFuZHJvaWQteDg2IiwiZ2NjOi1tYW5kcm9pZCAtSVwkKEFORFJPSURfREVWKS9pbmNsdWRlIC1CXCQoQU5EUk9JRF9ERVYpL2xpYiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306Ii5ldmFse215ICRhc209JHt4ODZfZWxmX2FzbX07JGFzbT1+cy86ZWxmLzphbmRyb2lkLzskYXNtfS4iOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyNDkxODAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi92ZXJzaW9uLXNjcmlwdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2NjMgKzAsMCBAQAotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L0NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1Lm9yaWcvQ29uZmlndXJlCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMTY1MSw2ICsxNjUxLDggQEAKLSAJCX0KLSAJfQotIAotKyRzaGFyZWRfbGRmbGFnIC49ICIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9b3BlbnNzbC5sZCI7Ci0rCi0gb3BlbihJTiwnPE1ha2VmaWxlLm9yZycpIHx8IGRpZSAidW5hYmxlIHRvIHJlYWQgTWFrZWZpbGUub3JnOiQhXG4iOwotIHVubGluaygiJE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIHJlbW92ZSBvbGQgJE1ha2VmaWxlLm5ldzokIVxuIiBpZiAtZSAiJE1ha2VmaWxlLm5ldyI7Ci0gb3BlbihPVVQsIj4kTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gY3JlYXRlICRNYWtlZmlsZS5uZXc6JCFcbiI7Ci1JbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMjoxOTowOC42MDE4MjcyNjYgKzAxMDAKLUBAIC0wLDAgKzEsNDYxNSBAQAotK09QRU5TU0xfMS4wLjAgewotKwlnbG9iYWw6Ci0rCQlCSU9fZl9zc2w7Ci0rCQlCSU9fbmV3X2J1ZmZlcl9zc2xfY29ubmVjdDsKLSsJCUJJT19uZXdfc3NsOwotKwkJQklPX25ld19zc2xfY29ubmVjdDsKLSsJCUJJT19wcm94eV9zc2xfY29weV9zZXNzaW9uX2lkOwotKwkJQklPX3NzbF9jb3B5X3Nlc3Npb25faWQ7Ci0rCQlCSU9fc3NsX3NodXRkb3duOwotKwkJZDJpX1NTTF9TRVNTSU9OOwotKwkJRFRMU3YxX2NsaWVudF9tZXRob2Q7Ci0rCQlEVExTdjFfbWV0aG9kOwotKwkJRFRMU3YxX3NlcnZlcl9tZXRob2Q7Ci0rCQlFUlJfbG9hZF9TU0xfc3RyaW5nczsKLSsJCWkyZF9TU0xfU0VTU0lPTjsKLSsJCWtzc2xfYnVpbGRfcHJpbmNpcGFsXzI7Ci0rCQlrc3NsX2NnZXRfdGt0OwotKwkJa3NzbF9jaGVja19hdXRoZW50OwotKwkJa3NzbF9jdHhfZnJlZTsKLSsJCWtzc2xfY3R4X25ldzsKLSsJCWtzc2xfY3R4X3NldGtleTsKLSsJCWtzc2xfY3R4X3NldHByaW5jOwotKwkJa3NzbF9jdHhfc2V0c3RyaW5nOwotKwkJa3NzbF9jdHhfc2hvdzsKLSsJCWtzc2xfZXJyX3NldDsKLSsJCWtzc2xfa3JiNV9mcmVlX2RhdGFfY29udGVudHM7Ci0rCQlrc3NsX3NnZXRfdGt0OwotKwkJa3NzbF9za2lwX2NvbmZvdW5kOwotKwkJa3NzbF92YWxpZGF0ZV90aW1lczsKLSsJCVBFTV9yZWFkX2Jpb19TU0xfU0VTU0lPTjsKLSsJCVBFTV9yZWFkX1NTTF9TRVNTSU9OOwotKwkJUEVNX3dyaXRlX2Jpb19TU0xfU0VTU0lPTjsKLSsJCVBFTV93cml0ZV9TU0xfU0VTU0lPTjsKLSsJCVNTTF9hY2NlcHQ7Ci0rCQlTU0xfYWRkX2NsaWVudF9DQTsKLSsJCVNTTF9hZGRfZGlyX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7Ci0rCQlTU0xfYWRkX2Rpcl9jZXJ0X3N1YmpzX3RvX3N0azsKLSsJCVNTTF9hZGRfZmlsZV9jZXJ0X3N1YmplY3RzX3RvX3N0YWNrOwotKwkJU1NMX2FkZF9maWxlX2NlcnRfc3VianNfdG9fc3RrOwotKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nOwotKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmc7Ci0rCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmdfbG9uZzsKLSsJCVNTTF9jYWxsYmFja19jdHJsOwotKwkJU1NMX2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJU1NMX0NJUEhFUl9kZXNjcmlwdGlvbjsKLSsJCVNTTF9DSVBIRVJfZ2V0X2JpdHM7Ci0rCQlTU0xfQ0lQSEVSX2dldF9uYW1lOwotKwkJU1NMX0NJUEhFUl9nZXRfdmVyc2lvbjsKLSsJCVNTTF9jbGVhcjsKLSsJCVNTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2Q7Ci0rCQlTU0xfQ09NUF9nZXRfY29tcHJlc3Npb25fbWV0aG9kczsKLSsJCVNTTF9DT01QX2dldF9jb21wcmVzc19tZXRob2RzOwotKwkJU1NMX0NPTVBfZ2V0X25hbWU7Ci0rCQlTU0xfY29ubmVjdDsKLSsJCVNTTF9jb3B5X3Nlc3Npb25faWQ7Ci0rCQlTU0xfY3RybDsKLSsJCVNTTF9DVFhfYWRkX2NsaWVudF9DQTsKLSsJCVNTTF9DVFhfYWRkX3Nlc3Npb247Ci0rCQlTU0xfQ1RYX2NhbGxiYWNrX2N0cmw7Ci0rCQlTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJU1NMX0NUWF9jdHJsOwotKwkJU1NMX0NUWF9mbHVzaF9zZXNzaW9uczsKLSsJCVNTTF9DVFhfZnJlZTsKLSsJCVNTTF9DVFhfZ2V0X2NlcnRfc3RvcmU7Ci0rCQlTU0xfQ1RYX2dldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9DVFhfZ2V0X2NsaWVudF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9nZXRfZXhfZGF0YTsKLSsJCVNTTF9DVFhfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNTTF9DVFhfZ2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX2dldF9xdWlldF9zaHV0ZG93bjsKLSsJCVNTTF9DVFhfZ2V0X3RpbWVvdXQ7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfZGVwdGg7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfbW9kZTsKLSsJCVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zOwotKwkJU1NMX0NUWF9uZXc7Ci0rCQlTU0xfQ1RYX3JlbW92ZV9zZXNzaW9uOwotKwkJU1NMX0NUWF9zZXNzX2dldF9nZXRfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3NfZ2V0X25ld19jYjsKLSsJCVNTTF9DVFhfc2Vzc19nZXRfcmVtb3ZlX2NiOwotKwkJU1NMX0NUWF9zZXNzaW9uczsKLSsJCVNTTF9DVFhfc2Vzc19zZXRfZ2V0X2NiOwotKwkJU1NMX0NUWF9zZXNzX3NldF9uZXdfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3Nfc2V0X3JlbW92ZV9jYjsKLSsJCVNTTF9DVFhfc2V0MV9wYXJhbTsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfc3RvcmU7Ci0rCQlTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NiOwotKwkJU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Q7Ci0rCQlTU0xfQ1RYX3NldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfZW5naW5lOwotKwkJU1NMX0NUWF9zZXRfY29va2llX2dlbmVyYXRlX2NiOwotKwkJU1NMX0NUWF9zZXRfY29va2llX3ZlcmlmeV9jYjsKLSsJCVNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiOwotKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGE7Ci0rCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoczsKLSsJCVNTTF9DVFhfc2V0X2RlZl9wYXNzd2RfY2JfdWQ7Ci0rCQlTU0xfQ1RYX3NldF9kZWZfdmVyaWZ5X3BhdGhzOwotKwkJU1NMX0NUWF9zZXRfZXhfZGF0YTsKLSsJCVNTTF9DVFhfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7Ci0rCQlTU0xfQ1RYX3NldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfbXNnX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9wdXJwb3NlOwotKwkJU1NMX0NUWF9zZXRfcXVpZXRfc2h1dGRvd247Ci0rCQlTU0xfQ1RYX3NldF9zZXNzaW9uX2lkX2NvbnRleHQ7Ci0rCQlTU0xfQ1RYX3NldF9zc2xfdmVyc2lvbjsKLSsJCVNTTF9DVFhfc2V0X3RpbWVvdXQ7Ci0rCQlTU0xfQ1RYX3NldF90bXBfZGhfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF90bXBfZWNkaF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3RtcF9yc2FfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF90cnVzdDsKLSsJCVNTTF9DVFhfc2V0X3ZlcmlmeTsKLSsJCVNTTF9DVFhfc2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9DVFhfdXNlX2NlcnRfY2hhaW5fZmlsZTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlOwotKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGU7Ci0rCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOwotKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleTsKLSsJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTF9DVFhfdXNlX3Bza19pZGVudGl0eV9oaW50OwotKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleTsKLSsJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTF9kb19oYW5kc2hha2U7Ci0rCQlTU0xfZHVwOwotKwkJU1NMX2R1cF9DQV9saXN0OwotKwkJU1NMZWF5X2FkZF9zc2xfYWxnb3JpdGhtczsKLSsJCVNTTF9mcmVlOwotKwkJU1NMX2dldDFfc2Vzc2lvbjsKLSsJCVNTTF9nZXRfY2VydGlmaWNhdGU7Ci0rCQlTU0xfZ2V0X2NpcGhlcl9saXN0OwotKwkJU1NMX2dldF9jaXBoZXJzOwotKwkJU1NMX2dldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9nZXRfY3VycmVudF9jaXBoZXI7Ci0rCQlTU0xfZ2V0X2N1cnJlbnRfY29tcHJlc3Npb247Ci0rCQlTU0xfZ2V0X2N1cnJlbnRfZXhwYW5zaW9uOwotKwkJU1NMX2dldF9kZWZhdWx0X3RpbWVvdXQ7Ci0rCQlTU0xfZ2V0X2Vycm9yOwotKwkJU1NMX2dldF9leF9kYXRhOwotKwkJU1NMX2dldF9leF9kYXRhX1g1MDlfU1RPUkVfQ1RYX2lkeDsKLSsJCVNTTF9nZXRfZXhfZF9YNTA5X1NUT1JFX0NUWF9pZHg7Ci0rCQlTU0xfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNTTF9nZXRfZmQ7Ci0rCQlTU0xfZ2V0X2ZpbmlzaGVkOwotKwkJU1NMX2dldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX2dldF9wZWVyX2NlcnRfY2hhaW47Ci0rCQlTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGU7Ci0rCQlTU0xfZ2V0X3BlZXJfZmluaXNoZWQ7Ci0rCQlTU0xfZ2V0X3ByaXZhdGVrZXk7Ci0rCQlTU0xfZ2V0X3Bza19pZGVudGl0eTsKLSsJCVNTTF9nZXRfcHNrX2lkZW50aXR5X2hpbnQ7Ci0rCQlTU0xfZ2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX2dldF9yYmlvOwotKwkJU1NMX2dldF9yZWFkX2FoZWFkOwotKwkJU1NMX2dldF9yZmQ7Ci0rCQlTU0xfZ2V0X3NlcnZlcm5hbWU7Ci0rCQlTU0xfZ2V0X3NlcnZlcm5hbWVfdHlwZTsKLSsJCVNTTF9nZXRfc2Vzc2lvbjsKLSsJCVNTTF9nZXRfc2hhcmVkX2NpcGhlcnM7Ci0rCQlTU0xfZ2V0X3NodXRkb3duOwotKwkJU1NMX2dldF9TU0xfQ1RYOwotKwkJU1NMX2dldF9zc2xfbWV0aG9kOwotKwkJU1NMX2dldF92ZXJpZnlfY2FsbGJhY2s7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9nZXRfdmVyaWZ5X21vZGU7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQ7Ci0rCQlTU0xfZ2V0X3ZlcnNpb247Ci0rCQlTU0xfZ2V0X3diaW87Ci0rCQlTU0xfZ2V0X3dmZDsKLSsJCVNTTF9oYXNfbWF0Y2hpbmdfc2Vzc2lvbl9pZDsKLSsJCVNTTF9saWJyYXJ5X2luaXQ7Ci0rCQlTU0xfbG9hZF9jbGllbnRfQ0FfZmlsZTsKLSsJCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3M7Ci0rCQlTU0xfbmV3OwotKwkJU1NMX3BlZWs7Ci0rCQlTU0xfcGVuZGluZzsKLSsJCVNTTF9yZWFkOwotKwkJU1NMX3JlbmVnb3RpYXRlOwotKwkJU1NMX3JlbmVnb3RpYXRlX3BlbmRpbmc7Ci0rCQlTU0xfcnN0YXRlX3N0cmluZzsKLSsJCVNTTF9yc3RhdGVfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfU0VTU0lPTl9jbXA7Ci0rCQlTU0xfU0VTU0lPTl9mcmVlOwotKwkJU1NMX1NFU1NJT05fZ2V0X2V4X2RhdGE7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1NMX1NFU1NJT05fZ2V0X2lkOwotKwkJU1NMX1NFU1NJT05fZ2V0X3RpbWU7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfdGltZW91dDsKLSsJCVNTTF9TRVNTSU9OX2hhc2g7Ci0rCQlTU0xfU0VTU0lPTl9uZXc7Ci0rCQlTU0xfU0VTU0lPTl9wcmludDsKLSsJCVNTTF9TRVNTSU9OX3ByaW50X2ZwOwotKwkJU1NMX1NFU1NJT05fc2V0X2V4X2RhdGE7Ci0rCQlTU0xfU0VTU0lPTl9zZXRfdGltZTsKLSsJCVNTTF9TRVNTSU9OX3NldF90aW1lb3V0OwotKwkJU1NMX3NldDFfcGFyYW07Ci0rCQlTU0xfc2V0X2FjY2VwdF9zdGF0ZTsKLSsJCVNTTF9zZXRfYmlvOwotKwkJU1NMX3NldF9jaXBoZXJfbGlzdDsKLSsJCVNTTF9zZXRfY2xpZW50X0NBX2xpc3Q7Ci0rCQlTU0xfc2V0X2Nvbm5lY3Rfc3RhdGU7Ci0rCQlTU0xfc2V0X2V4X2RhdGE7Ci0rCQlTU0xfc2V0X2ZkOwotKwkJU1NMX3NldF9nZW5lcmF0ZV9zZXNzaW9uX2lkOwotKwkJU1NMX3NldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX3NldF9tc2dfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3Bza19jbGllbnRfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3B1cnBvc2U7Ci0rCQlTU0xfc2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX3NldF9yZWFkX2FoZWFkOwotKwkJU1NMX3NldF9yZmQ7Ci0rCQlTU0xfc2V0X3Nlc3Npb247Ci0rCQlTU0xfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKLSsJCVNTTF9zZXRfc2Vzc2lvbl9zZWNyZXRfY2I7Ci0rCQlTU0xfc2V0X3Nlc3Npb25fdGlja2V0X2V4dDsKLSsJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0X2NiOwotKwkJU1NMX3NldF9zaHV0ZG93bjsKLSsJCVNTTF9zZXRfU1NMX0NUWDsKLSsJCVNTTF9zZXRfc3NsX21ldGhvZDsKLSsJCVNTTF9zZXRfdG1wX2RoX2NhbGxiYWNrOwotKwkJU1NMX3NldF90bXBfZWNkaF9jYWxsYmFjazsKLSsJCVNTTF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKLSsJCVNTTF9zZXRfdHJ1c3Q7Ci0rCQlTU0xfc2V0X3ZlcmlmeTsKLSsJCVNTTF9zZXRfdmVyaWZ5X2RlcHRoOwotKwkJU1NMX3NldF92ZXJpZnlfcmVzdWx0OwotKwkJU1NMX3NldF93ZmQ7Ci0rCQlTU0xfc2h1dGRvd247Ci0rCQlTU0xfc3RhdGU7Ci0rCQlTU0xfc3RhdGVfc3RyaW5nOwotKwkJU1NMX3N0YXRlX3N0cmluZ19sb25nOwotKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF91c2VfY2VydGlmaWNhdGVfQVNOMTsKLSsJCVNTTF91c2VfY2VydGlmaWNhdGVfZmlsZTsKLSsJCVNTTF91c2VfUHJpdmF0ZUtleTsKLSsJCVNTTF91c2VfUHJpdmF0ZUtleV9BU04xOwotKwkJU1NMX3VzZV9Qcml2YXRlS2V5X2ZpbGU7Ci0rCQlTU0xfdXNlX3Bza19pZGVudGl0eV9oaW50OwotKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5OwotKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5X0FTTjE7Ci0rCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTHYyM19jbGllbnRfbWV0aG9kOwotKwkJU1NMdjIzX21ldGhvZDsKLSsJCVNTTHYyM19zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMdjJfY2xpZW50X21ldGhvZDsKLSsJCVNTTHYyX21ldGhvZDsKLSsJCVNTTHYyX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0x2M19jbGllbnRfbWV0aG9kOwotKwkJU1NMdjNfbWV0aG9kOwotKwkJU1NMdjNfc2VydmVyX21ldGhvZDsKLSsJCVNTTF92ZXJzaW9uOwotKwkJU1NMX3dhbnQ7Ci0rCQlTU0xfd3JpdGU7Ci0rCQlUTFN2MV9jbGllbnRfbWV0aG9kOwotKwkJVExTdjFfbWV0aG9kOwotKwkJVExTdjFfc2VydmVyX21ldGhvZDsKLSsKLSsKLSsJCVNTTGVheTsKLSsJCVNTTGVheV92ZXJzaW9uOwotKwkJQVNOMV9CSVRfU1RSSU5HX2FzbjFfbWV0aDsKLSsJCUFTTjFfSEVBREVSX2ZyZWU7Ci0rCQlBU04xX0hFQURFUl9uZXc7Ci0rCQlBU04xX0lBNVNUUklOR19hc24xX21ldGg7Ci0rCQlBU04xX0lOVEVHRVJfZ2V0OwotKwkJQVNOMV9JTlRFR0VSX3NldDsKLSsJCUFTTjFfSU5URUdFUl90b19CTjsKLSsJCUFTTjFfT0JKRUNUX2NyZWF0ZTsKLSsJCUFTTjFfT0JKRUNUX2ZyZWU7Ci0rCQlBU04xX09CSkVDVF9uZXc7Ci0rCQlBU04xX1BSSU5UQUJMRV90eXBlOwotKwkJQVNOMV9TVFJJTkdfY21wOwotKwkJQVNOMV9TVFJJTkdfZHVwOwotKwkJQVNOMV9TVFJJTkdfZnJlZTsKLSsJCUFTTjFfU1RSSU5HX25ldzsKLSsJCUFTTjFfU1RSSU5HX3ByaW50OwotKwkJQVNOMV9TVFJJTkdfc2V0OwotKwkJQVNOMV9TVFJJTkdfdHlwZV9uZXc7Ci0rCQlBU04xX1RZUEVfZnJlZTsKLSsJCUFTTjFfVFlQRV9uZXc7Ci0rCQlBU04xX1VOSVZFUlNBTFNUUklOR190b19zdHJpbmc7Ci0rCQlBU04xX1VUQ1RJTUVfY2hlY2s7Ci0rCQlBU04xX1VUQ1RJTUVfcHJpbnQ7Ci0rCQlBU04xX1VUQ1RJTUVfc2V0OwotKwkJQVNOMV9jaGVja19pbmZpbml0ZV9lbmQ7Ci0rCQlBU04xX2QyaV9iaW87Ci0rCQlBU04xX2QyaV9mcDsKLSsJCUFTTjFfZGlnZXN0OwotKwkJQVNOMV9kdXA7Ci0rCQlBU04xX2dldF9vYmplY3Q7Ci0rCQlBU04xX2kyZF9iaW87Ci0rCQlBU04xX2kyZF9mcDsKLSsJCUFTTjFfb2JqZWN0X3NpemU7Ci0rCQlBU04xX3BhcnNlOwotKwkJQVNOMV9wdXRfb2JqZWN0OwotKwkJQVNOMV9zaWduOwotKwkJQVNOMV92ZXJpZnk7Ci0rCQlCRl9jYmNfZW5jcnlwdDsKLSsJCUJGX2NmYjY0X2VuY3J5cHQ7Ci0rCQlCRl9lY2JfZW5jcnlwdDsKLSsJCUJGX2VuY3J5cHQ7Ci0rCQlCRl9vZmI2NF9lbmNyeXB0OwotKwkJQkZfb3B0aW9uczsKLSsJCUJGX3NldF9rZXk7Ci0rCQlCSU9fQ09OTkVDVF9mcmVlOwotKwkJQklPX0NPTk5FQ1RfbmV3OwotKwkJQklPX2FjY2VwdDsKLSsJCUJJT19jdHJsOwotKwkJQklPX2ludF9jdHJsOwotKwkJQklPX2RlYnVnX2NhbGxiYWNrOwotKwkJQklPX2R1bXA7Ci0rCQlCSU9fZHVwX2NoYWluOwotKwkJQklPX2ZfYmFzZTY0OwotKwkJQklPX2ZfYnVmZmVyOwotKwkJQklPX2ZfY2lwaGVyOwotKwkJQklPX2ZfbWQ7Ci0rCQlCSU9fZl9udWxsOwotKwkJQklPX2ZfcHJveHlfc2VydmVyOwotKwkJQklPX2ZkX25vbl9mYXRhbF9lcnJvcjsKLSsJCUJJT19mZF9zaG91bGRfcmV0cnk7Ci0rCQlCSU9fZmluZF90eXBlOwotKwkJQklPX2ZyZWU7Ci0rCQlCSU9fZnJlZV9hbGw7Ci0rCQlCSU9fZ2V0X2FjY2VwdF9zb2NrZXQ7Ci0rCQlCSU9fZ2V0X2ZpbHRlcl9iaW87Ci0rCQlCSU9fZ2V0X2hvc3RfaXA7Ci0rCQlCSU9fZ2V0X3BvcnQ7Ci0rCQlCSU9fZ2V0X3JldHJ5X0JJTzsKLSsJCUJJT19nZXRfcmV0cnlfcmVhc29uOwotKwkJQklPX2dldGhvc3RieW5hbWU7Ci0rCQlCSU9fZ2V0czsKLSsJCUJJT19uZXc7Ci0rCQlCSU9fbmV3X2FjY2VwdDsKLSsJCUJJT19uZXdfY29ubmVjdDsKLSsJCUJJT19uZXdfZmQ7Ci0rCQlCSU9fbmV3X2ZpbGU7Ci0rCQlCSU9fbmV3X2ZwOwotKwkJQklPX25ld19zb2NrZXQ7Ci0rCQlCSU9fcG9wOwotKwkJQklPX3ByaW50ZjsKLSsJCUJJT19wdXNoOwotKwkJQklPX3B1dHM7Ci0rCQlCSU9fcmVhZDsKLSsJCUJJT19zX2FjY2VwdDsKLSsJCUJJT19zX2Nvbm5lY3Q7Ci0rCQlCSU9fc19mZDsKLSsJCUJJT19zX2ZpbGU7Ci0rCQlCSU9fc19tZW07Ci0rCQlCSU9fc19udWxsOwotKwkJQklPX3NfcHJveHlfY2xpZW50OwotKwkJQklPX3Nfc29ja2V0OwotKwkJQklPX3NldDsKLSsJCUJJT19zZXRfY2lwaGVyOwotKwkJQklPX3NldF90Y3BfbmRlbGF5OwotKwkJQklPX3NvY2tfY2xlYW51cDsKLSsJCUJJT19zb2NrX2Vycm9yOwotKwkJQklPX3NvY2tfaW5pdDsKLSsJCUJJT19zb2NrX25vbl9mYXRhbF9lcnJvcjsKLSsJCUJJT19zb2NrX3Nob3VsZF9yZXRyeTsKLSsJCUJJT19zb2NrZXRfaW9jdGw7Ci0rCQlCSU9fd3JpdGU7Ci0rCQlCTl9DVFhfZnJlZTsKLSsJCUJOX0NUWF9uZXc7Ci0rCQlCTl9NT05UX0NUWF9mcmVlOwotKwkJQk5fTU9OVF9DVFhfbmV3OwotKwkJQk5fTU9OVF9DVFhfc2V0OwotKwkJQk5fYWRkOwotKwkJQk5fYWRkX3dvcmQ7Ci0rCQlCTl9oZXgyYm47Ci0rCQlCTl9iaW4yYm47Ci0rCQlCTl9ibjJoZXg7Ci0rCQlCTl9ibjJiaW47Ci0rCQlCTl9jbGVhcjsKLSsJCUJOX2NsZWFyX2JpdDsKLSsJCUJOX2NsZWFyX2ZyZWU7Ci0rCQlCTl9jbXA7Ci0rCQlCTl9jb3B5OwotKwkJQk5fZGl2OwotKwkJQk5fZGl2X3dvcmQ7Ci0rCQlCTl9kdXA7Ci0rCQlCTl9mcmVlOwotKwkJQk5fZnJvbV9tb250Z29tZXJ5OwotKwkJQk5fZ2NkOwotKwkJQk5fZ2VuZXJhdGVfcHJpbWU7Ci0rCQlCTl9nZXRfd29yZDsKLSsJCUJOX2lzX2JpdF9zZXQ7Ci0rCQlCTl9pc19wcmltZTsKLSsJCUJOX2xzaGlmdDsKLSsJCUJOX2xzaGlmdDE7Ci0rCQlCTl9tYXNrX2JpdHM7Ci0rCQlCTl9tb2Q7Ci0rCQlCTl9tb2RfZXhwOwotKwkJQk5fbW9kX2V4cF9tb250OwotKwkJQk5fbW9kX2V4cF9zaW1wbGU7Ci0rCQlCTl9tb2RfaW52ZXJzZTsKLSsJCUJOX21vZF9tdWw7Ci0rCQlCTl9tb2RfbXVsX21vbnRnb21lcnk7Ci0rCQlCTl9tb2Rfd29yZDsKLSsJCUJOX211bDsKLSsJCUJOX25ldzsKLSsJCUJOX251bV9iaXRzOwotKwkJQk5fbnVtX2JpdHNfd29yZDsKLSsJCUJOX29wdGlvbnM7Ci0rCQlCTl9wcmludDsKLSsJCUJOX3ByaW50X2ZwOwotKwkJQk5fcmFuZDsKLSsJCUJOX3JlY2lwcm9jYWw7Ci0rCQlCTl9yc2hpZnQ7Ci0rCQlCTl9yc2hpZnQxOwotKwkJQk5fc2V0X2JpdDsKLSsJCUJOX3NldF93b3JkOwotKwkJQk5fc3FyOwotKwkJQk5fc3ViOwotKwkJQk5fdG9fQVNOMV9JTlRFR0VSOwotKwkJQk5fdWNtcDsKLSsJCUJOX3ZhbHVlX29uZTsKLSsJCUJVRl9NRU1fZnJlZTsKLSsJCUJVRl9NRU1fZ3JvdzsKLSsJCUJVRl9NRU1fbmV3OwotKwkJQlVGX3N0cmR1cDsKLSsJCUNPTkZfZnJlZTsKLSsJCUNPTkZfZ2V0X251bWJlcjsKLSsJCUNPTkZfZ2V0X3NlY3Rpb247Ci0rCQlDT05GX2dldF9zdHJpbmc7Ci0rCQlDT05GX2xvYWQ7Ci0rCQlDUllQVE9fYWRkX2xvY2s7Ci0rCQlDUllQVE9fZGJnX2ZyZWU7Ci0rCQlDUllQVE9fZGJnX21hbGxvYzsKLSsJCUNSWVBUT19kYmdfcmVhbGxvYzsKLSsJCUNSWVBUT19kYmdfcmVtYWxsb2M7Ci0rCQlDUllQVE9fZnJlZTsKLSsJCUNSWVBUT19nZXRfYWRkX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2lkX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9sb2NrX25hbWU7Ci0rCQlDUllQVE9fZ2V0X2xvY2tpbmdfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X21lbV9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fbG9jazsKLSsJCUNSWVBUT19tYWxsb2M7Ci0rCQlDUllQVE9fbWVtX2N0cmw7Ci0rCQlDUllQVE9fbWVtX2xlYWtzOwotKwkJQ1JZUFRPX21lbV9sZWFrc19jYjsKLSsJCUNSWVBUT19tZW1fbGVha3NfZnA7Ci0rCQlDUllQVE9fcmVhbGxvYzsKLSsJCUNSWVBUT19yZW1hbGxvYzsKLSsJCUNSWVBUT19zZXRfYWRkX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2lkX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9sb2NraW5nX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX3RocmVhZF9pZDsKLSsJCURIX2NoZWNrOwotKwkJREhfY29tcHV0ZV9rZXk7Ci0rCQlESF9mcmVlOwotKwkJREhfZ2VuZXJhdGVfa2V5OwotKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyczsKLSsJCURIX25ldzsKLSsJCURIX3NpemU7Ci0rCQlESHBhcmFtc19wcmludDsKLSsJCURIcGFyYW1zX3ByaW50X2ZwOwotKwkJRFNBX2ZyZWU7Ci0rCQlEU0FfZ2VuZXJhdGVfa2V5OwotKwkJRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnM7Ci0rCQlEU0FfaXNfcHJpbWU7Ci0rCQlEU0FfbmV3OwotKwkJRFNBX3ByaW50OwotKwkJRFNBX3ByaW50X2ZwOwotKwkJRFNBX3NpZ247Ci0rCQlEU0Ffc2lnbl9zZXR1cDsKLSsJCURTQV9zaXplOwotKwkJRFNBX3ZlcmlmeTsKLSsJCURTQXBhcmFtc19wcmludDsKLSsJCURTQXBhcmFtc19wcmludF9mcDsKLSsJCUVSUl9jbGVhcl9lcnJvcjsKLSsJCUVSUl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfZnJlZV9zdHJpbmdzOwotKwkJRVJSX2Z1bmNfZXJyb3Jfc3RyaW5nOwotKwkJRVJSX2dldF9lcnJfc3RhdGVfdGFibGU7Ci0rCQlFUlJfZ2V0X2Vycm9yOwotKwkJRVJSX2dldF9lcnJvcl9saW5lOwotKwkJRVJSX2dldF9zdGF0ZTsKLSsJCUVSUl9nZXRfc3RyaW5nX3RhYmxlOwotKwkJRVJSX2xpYl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfbG9hZF9BU04xX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9CSU9fc3RyaW5nczsKLSsJCUVSUl9sb2FkX0JOX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9CVUZfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0NPTkZfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0RIX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9EU0Ffc3RyaW5nczsKLSsJCUVSUl9sb2FkX0VSUl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfRVZQX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9PQkpfc3RyaW5nczsKLSsJCUVSUl9sb2FkX1BFTV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfUFJPWFlfc3RyaW5nczsKLSsJCUVSUl9sb2FkX1JTQV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfWDUwOV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9zdHJpbmdzOwotKwkJRVJSX3BlZWtfZXJyb3I7Ci0rCQlFUlJfcGVla19lcnJvcl9saW5lOwotKwkJRVJSX3ByaW50X2Vycm9yczsKLSsJCUVSUl9wcmludF9lcnJvcnNfZnA7Ci0rCQlFUlJfcHV0X2Vycm9yOwotKwkJRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfcmVtb3ZlX3N0YXRlOwotKwkJRVZQX0J5dGVzVG9LZXk7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwOwotKwkJRVZQX0NpcGhlckZpbmFsOwotKwkJRVZQX0NpcGhlckluaXQ7Ci0rCQlFVlBfQ2lwaGVyVXBkYXRlOwotKwkJRVZQX0RlY29kZUJsb2NrOwotKwkJRVZQX0RlY29kZUZpbmFsOwotKwkJRVZQX0RlY29kZUluaXQ7Ci0rCQlFVlBfRGVjb2RlVXBkYXRlOwotKwkJRVZQX0RlY3J5cHRGaW5hbDsKLSsJCUVWUF9EZWNyeXB0SW5pdDsKLSsJCUVWUF9EZWNyeXB0VXBkYXRlOwotKwkJRVZQX0RpZ2VzdEZpbmFsOwotKwkJRVZQX0RpZ2VzdEluaXQ7Ci0rCQlFVlBfRGlnZXN0VXBkYXRlOwotKwkJRVZQX0VuY29kZUJsb2NrOwotKwkJRVZQX0VuY29kZUZpbmFsOwotKwkJRVZQX0VuY29kZUluaXQ7Ci0rCQlFVlBfRW5jb2RlVXBkYXRlOwotKwkJRVZQX0VuY3J5cHRGaW5hbDsKLSsJCUVWUF9FbmNyeXB0SW5pdDsKLSsJCUVWUF9FbmNyeXB0VXBkYXRlOwotKwkJRVZQX09wZW5GaW5hbDsKLSsJCUVWUF9PcGVuSW5pdDsKLSsJCUVWUF9QS0VZX2Fzc2lnbjsKLSsJCUVWUF9QS0VZX2NvcHlfcGFyYW1ldGVyczsKLSsJCUVWUF9QS0VZX2ZyZWU7Ci0rCQlFVlBfUEtFWV9taXNzaW5nX3BhcmFtZXRlcnM7Ci0rCQlFVlBfUEtFWV9uZXc7Ci0rCQlFVlBfUEtFWV9zYXZlX3BhcmFtZXRlcnM7Ci0rCQlFVlBfUEtFWV9zaXplOwotKwkJRVZQX1BLRVlfdHlwZTsKLSsJCUVWUF9TZWFsRmluYWw7Ci0rCQlFVlBfU2VhbEluaXQ7Ci0rCQlFVlBfU2lnbkZpbmFsOwotKwkJRVZQX1ZlcmlmeUZpbmFsOwotKwkJRVZQX2FkZF9hbGlhczsKLSsJCUVWUF9hZGRfY2lwaGVyOwotKwkJRVZQX2FkZF9kaWdlc3Q7Ci0rCQlFVlBfYmZfY2JjOwotKwkJRVZQX2JmX2NmYjY0OwotKwkJRVZQX2JmX2VjYjsKLSsJCUVWUF9iZl9vZmI7Ci0rCQlFVlBfY2xlYW51cDsKLSsJCUVWUF9kZXNfY2JjOwotKwkJRVZQX2Rlc19jZmI2NDsKLSsJCUVWUF9kZXNfZWNiOwotKwkJRVZQX2Rlc19lZGU7Ci0rCQlFVlBfZGVzX2VkZTM7Ci0rCQlFVlBfZGVzX2VkZTNfY2JjOwotKwkJRVZQX2Rlc19lZGUzX2NmYjY0OwotKwkJRVZQX2Rlc19lZGUzX29mYjsKLSsJCUVWUF9kZXNfZWRlX2NiYzsKLSsJCUVWUF9kZXNfZWRlX2NmYjY0OwotKwkJRVZQX2Rlc19lZGVfb2ZiOwotKwkJRVZQX2Rlc19vZmI7Ci0rCQlFVlBfZGVzeF9jYmM7Ci0rCQlFVlBfZHNzOwotKwkJRVZQX2RzczE7Ci0rCQlFVlBfZW5jX251bGw7Ci0rCQlFVlBfZ2V0X2NpcGhlcmJ5bmFtZTsKLSsJCUVWUF9nZXRfZGlnZXN0YnluYW1lOwotKwkJRVZQX2dldF9wd19wcm9tcHQ7Ci0rCQlFVlBfaWRlYV9jYmM7Ci0rCQlFVlBfaWRlYV9jZmI2NDsKLSsJCUVWUF9pZGVhX2VjYjsKLSsJCUVWUF9pZGVhX29mYjsKLSsJCUVWUF9tZDI7Ci0rCQlFVlBfbWQ1OwotKwkJRVZQX21kX251bGw7Ci0rCQlFVlBfcmMyX2NiYzsKLSsJCUVWUF9yYzJfY2ZiNjQ7Ci0rCQlFVlBfcmMyX2VjYjsKLSsJCUVWUF9yYzJfb2ZiOwotKwkJRVZQX3JjNDsKLSsJCUVWUF9yZWFkX3B3X3N0cmluZzsKLSsJCUVWUF9zZXRfcHdfcHJvbXB0OwotKwkJRVZQX3NoYTsKLSsJCUVWUF9zaGExOwotKwkJTUQyOwotKwkJTUQyX0ZpbmFsOwotKwkJTUQyX0luaXQ7Ci0rCQlNRDJfVXBkYXRlOwotKwkJTUQyX29wdGlvbnM7Ci0rCQlNRDU7Ci0rCQlNRDVfRmluYWw7Ci0rCQlNRDVfSW5pdDsKLSsJCU1ENV9VcGRhdGU7Ci0rCQlNREMyOwotKwkJTURDMl9GaW5hbDsKLSsJCU1EQzJfSW5pdDsKLSsJCU1EQzJfVXBkYXRlOwotKwkJTkVUU0NBUEVfU1BLQUNfZnJlZTsKLSsJCU5FVFNDQVBFX1NQS0FDX25ldzsKLSsJCU5FVFNDQVBFX1NQS0lfZnJlZTsKLSsJCU5FVFNDQVBFX1NQS0lfbmV3OwotKwkJTkVUU0NBUEVfU1BLSV9zaWduOwotKwkJTkVUU0NBUEVfU1BLSV92ZXJpZnk7Ci0rCQlPQkpfYWRkX29iamVjdDsKLSsJCU9CSl9ic2VhcmNoOwotKwkJT0JKX2NsZWFudXA7Ci0rCQlPQkpfY21wOwotKwkJT0JKX2NyZWF0ZTsKLSsJCU9CSl9kdXA7Ci0rCQlPQkpfbG4ybmlkOwotKwkJT0JKX25ld19uaWQ7Ci0rCQlPQkpfbmlkMmxuOwotKwkJT0JKX25pZDJvYmo7Ci0rCQlPQkpfbmlkMnNuOwotKwkJT0JKX29iajJuaWQ7Ci0rCQlPQkpfc24ybmlkOwotKwkJT0JKX3R4dDJuaWQ7Ci0rCQlQRU1fQVNOMV9yZWFkOwotKwkJUEVNX0FTTjFfcmVhZF9iaW87Ci0rCQlQRU1fQVNOMV93cml0ZTsKLSsJCVBFTV9BU04xX3dyaXRlX2JpbzsKLSsJCVBFTV9TZWFsRmluYWw7Ci0rCQlQRU1fU2VhbEluaXQ7Ci0rCQlQRU1fU2VhbFVwZGF0ZTsKLSsJCVBFTV9TaWduRmluYWw7Ci0rCQlQRU1fU2lnbkluaXQ7Ci0rCQlQRU1fU2lnblVwZGF0ZTsKLSsJCVBFTV9YNTA5X0lORk9fcmVhZDsKLSsJCVBFTV9YNTA5X0lORk9fcmVhZF9iaW87Ci0rCQlQRU1fWDUwOV9JTkZPX3dyaXRlX2JpbzsKLSsJCVBFTV9kZWtfaW5mbzsKLSsJCVBFTV9kb19oZWFkZXI7Ci0rCQlQRU1fZ2V0X0VWUF9DSVBIRVJfSU5GTzsKLSsJCVBFTV9wcm9jX3R5cGU7Ci0rCQlQRU1fcmVhZDsKLSsJCVBFTV9yZWFkX0RIcGFyYW1zOwotKwkJUEVNX3JlYWRfRFNBUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX0RTQXBhcmFtczsKLSsJCVBFTV9yZWFkX1BLQ1M3OwotKwkJUEVNX3JlYWRfUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9YNTA5OwotKwkJUEVNX3JlYWRfWDUwOV9DUkw7Ci0rCQlQRU1fcmVhZF9YNTA5X1JFUTsKLSsJCVBFTV9yZWFkX2JpbzsKLSsJCVBFTV9yZWFkX2Jpb19ESHBhcmFtczsKLSsJCVBFTV9yZWFkX2Jpb19EU0FQcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfYmlvX0RTQXBhcmFtczsKLSsJCVBFTV9yZWFkX2Jpb19QS0NTNzsKLSsJCVBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfYmlvX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOTsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X0NSTDsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X1JFUTsKLSsJCVBFTV93cml0ZTsKLSsJCVBFTV93cml0ZV9ESHBhcmFtczsKLSsJCVBFTV93cml0ZV9EU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX0RTQXBhcmFtczsKLSsJCVBFTV93cml0ZV9QS0NTNzsKLSsJCVBFTV93cml0ZV9Qcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfWDUwOTsKLSsJCVBFTV93cml0ZV9YNTA5X0NSTDsKLSsJCVBFTV93cml0ZV9YNTA5X1JFUTsKLSsJCVBFTV93cml0ZV9iaW87Ci0rCQlQRU1fd3JpdGVfYmlvX0RIcGFyYW1zOwotKwkJUEVNX3dyaXRlX2Jpb19EU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19EU0FwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M3OwotKwkJUEVNX3dyaXRlX2Jpb19Qcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19SU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5OwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0NSTDsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVE7Ci0rCQlQS0NTN19ESUdFU1RfZnJlZTsKLSsJCVBLQ1M3X0RJR0VTVF9uZXc7Ci0rCQlQS0NTN19FTkNSWVBUX2ZyZWU7Ci0rCQlQS0NTN19FTkNSWVBUX25ldzsKLSsJCVBLQ1M3X0VOQ19DT05URU5UX2ZyZWU7Ci0rCQlQS0NTN19FTkNfQ09OVEVOVF9uZXc7Ci0rCQlQS0NTN19FTlZFTE9QRV9mcmVlOwotKwkJUEtDUzdfRU5WRUxPUEVfbmV3OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZGlnZXN0OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZnJlZTsKLSsJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX25ldzsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fZnJlZTsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fbmV3OwotKwkJUEtDUzdfU0lHTkVEX2ZyZWU7Ci0rCQlQS0NTN19TSUdORURfbmV3OwotKwkJUEtDUzdfU0lHTkVSX0lORk9fZnJlZTsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX25ldzsKLSsJCVBLQ1M3X1NJR05fRU5WRUxPUEVfZnJlZTsKLSsJCVBLQ1M3X1NJR05fRU5WRUxPUEVfbmV3OwotKwkJUEtDUzdfZHVwOwotKwkJUEtDUzdfZnJlZTsKLSsJCVBLQ1M3X25ldzsKLSsJCVBST1hZX0VOVFJZX2FkZF9ub3Byb3h5OwotKwkJUFJPWFlfRU5UUllfY2xlYXJfbm9wcm94eTsKLSsJCVBST1hZX0VOVFJZX2ZyZWU7Ci0rCQlQUk9YWV9FTlRSWV9nZXRfbm9wcm94eTsKLSsJCVBST1hZX0VOVFJZX25ldzsKLSsJCVBST1hZX0VOVFJZX3NldF9zZXJ2ZXI7Ci0rCQlQUk9YWV9hZGRfbm9wcm94eTsKLSsJCVBST1hZX2FkZF9zZXJ2ZXI7Ci0rCQlQUk9YWV9jaGVja19ieV9ob3N0OwotKwkJUFJPWFlfY2hlY2tfdXJsOwotKwkJUFJPWFlfY2xlYXJfbm9wcm94eTsKLSsJCVBST1hZX2ZyZWU7Ci0rCQlQUk9YWV9nZXRfbm9wcm94eTsKLSsJCVBST1hZX2dldF9wcm94aWVzOwotKwkJUFJPWFlfZ2V0X3Byb3h5X2VudHJ5OwotKwkJUFJPWFlfbG9hZF9jb25mOwotKwkJUFJPWFlfbmV3OwotKwkJUFJPWFlfcHJpbnQ7Ci0rCQlSQU5EX2J5dGVzOwotKwkJUkFORF9jbGVhbnVwOwotKwkJUkFORF9maWxlX25hbWU7Ci0rCQlSQU5EX2xvYWRfZmlsZTsKLSsJCVJBTkRfc2NyZWVuOwotKwkJUkFORF9zZWVkOwotKwkJUkFORF93cml0ZV9maWxlOwotKwkJUkMyX2NiY19lbmNyeXB0OwotKwkJUkMyX2NmYjY0X2VuY3J5cHQ7Ci0rCQlSQzJfZWNiX2VuY3J5cHQ7Ci0rCQlSQzJfZW5jcnlwdDsKLSsJCVJDMl9vZmI2NF9lbmNyeXB0OwotKwkJUkMyX3NldF9rZXk7Ci0rCQlSQzQ7Ci0rCQlSQzRfb3B0aW9uczsKLSsJCVJDNF9zZXRfa2V5OwotKwkJUlNBUHJpdmF0ZUtleV9hc24xX21ldGg7Ci0rCQlSU0FQcml2YXRlS2V5X2R1cDsKLSsJCVJTQVB1YmxpY0tleV9kdXA7Ci0rCQlSU0FfUEtDUzFfU1NMZWF5OwotKwkJUlNBX2ZyZWU7Ci0rCQlSU0FfZ2VuZXJhdGVfa2V5OwotKwkJUlNBX25ldzsKLSsJCVJTQV9uZXdfbWV0aG9kOwotKwkJUlNBX3ByaW50OwotKwkJUlNBX3ByaW50X2ZwOwotKwkJUlNBX3ByaXZhdGVfZGVjcnlwdDsKLSsJCVJTQV9wcml2YXRlX2VuY3J5cHQ7Ci0rCQlSU0FfcHVibGljX2RlY3J5cHQ7Ci0rCQlSU0FfcHVibGljX2VuY3J5cHQ7Ci0rCQlSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUlNBX3NpZ247Ci0rCQlSU0Ffc2lnbl9BU04xX09DVEVUX1NUUklORzsKLSsJCVJTQV9zaXplOwotKwkJUlNBX3ZlcmlmeTsKLSsJCVJTQV92ZXJpZnlfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlTSEE7Ci0rCQlTSEExOwotKwkJU0hBMV9GaW5hbDsKLSsJCVNIQTFfSW5pdDsKLSsJCVNIQTFfVXBkYXRlOwotKwkJU0hBX0ZpbmFsOwotKwkJU0hBX0luaXQ7Ci0rCQlTSEFfVXBkYXRlOwotKwkJT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXM7Ci0rCQlPcGVuU1NMX2FkZF9hbGxfY2lwaGVyczsKLSsJCU9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzOwotKwkJVFhUX0RCX2NyZWF0ZV9pbmRleDsKLSsJCVRYVF9EQl9mcmVlOwotKwkJVFhUX0RCX2dldF9ieV9pbmRleDsKLSsJCVRYVF9EQl9pbnNlcnQ7Ci0rCQlUWFRfREJfcmVhZDsKLSsJCVRYVF9EQl93cml0ZTsKLSsJCVg1MDlfQUxHT1JfZnJlZTsKLSsJCVg1MDlfQUxHT1JfbmV3OwotKwkJWDUwOV9BVFRSSUJVVEVfZnJlZTsKLSsJCVg1MDlfQVRUUklCVVRFX25ldzsKLSsJCVg1MDlfQ0lORl9mcmVlOwotKwkJWDUwOV9DSU5GX25ldzsKLSsJCVg1MDlfQ1JMX0lORk9fZnJlZTsKLSsJCVg1MDlfQ1JMX0lORk9fbmV3OwotKwkJWDUwOV9DUkxfYWRkX2V4dDsKLSsJCVg1MDlfQ1JMX2NtcDsKLSsJCVg1MDlfQ1JMX2RlbGV0ZV9leHQ7Ci0rCQlYNTA5X0NSTF9kdXA7Ci0rCQlYNTA5X0NSTF9mcmVlOwotKwkJWDUwOV9DUkxfZ2V0X2V4dDsKLSsJCVg1MDlfQ1JMX2dldF9leHRfYnlfTklEOwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9jb3VudDsKLSsJCVg1MDlfQ1JMX25ldzsKLSsJCVg1MDlfQ1JMX3NpZ247Ci0rCQlYNTA5X0NSTF92ZXJpZnk7Ci0rCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9FWFRFTlNJT05fY3JlYXRlX2J5X09CSjsKLSsJCVg1MDlfRVhURU5TSU9OX2R1cDsKLSsJCVg1MDlfRVhURU5TSU9OX2ZyZWU7Ci0rCQlYNTA5X0VYVEVOU0lPTl9nZXRfY3JpdGljYWw7Ci0rCQlYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YTsKLSsJCVg1MDlfRVhURU5TSU9OX2dldF9vYmplY3Q7Ci0rCQlYNTA5X0VYVEVOU0lPTl9uZXc7Ci0rCQlYNTA5X0VYVEVOU0lPTl9zZXRfY3JpdGljYWw7Ci0rCQlYNTA5X0VYVEVOU0lPTl9zZXRfZGF0YTsKLSsJCVg1MDlfRVhURU5TSU9OX3NldF9vYmplY3Q7Ci0rCQlYNTA5X0lORk9fZnJlZTsKLSsJCVg1MDlfSU5GT19uZXc7Ci0rCQlYNTA5X0xPT0tVUF9ieV9hbGlhczsKLSsJCVg1MDlfTE9PS1VQX2J5X2ZpbmdlcnByaW50OwotKwkJWDUwOV9MT09LVVBfYnlfaXNzdWVyX3NlcmlhbDsKLSsJCVg1MDlfTE9PS1VQX2J5X3N1YmplY3Q7Ci0rCQlYNTA5X0xPT0tVUF9jdHJsOwotKwkJWDUwOV9MT09LVVBfZmlsZTsKLSsJCVg1MDlfTE9PS1VQX2ZyZWU7Ci0rCQlYNTA5X0xPT0tVUF9oYXNoX2RpcjsKLSsJCVg1MDlfTE9PS1VQX2luaXQ7Ci0rCQlYNTA5X0xPT0tVUF9uZXc7Ci0rCQlYNTA5X0xPT0tVUF9zaHV0ZG93bjsKLSsJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9PQko7Ci0rCQlYNTA5X05BTUVfRU5UUllfZHVwOwotKwkJWDUwOV9OQU1FX0VOVFJZX2ZyZWU7Ci0rCQlYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGE7Ci0rCQlYNTA5X05BTUVfRU5UUllfZ2V0X29iamVjdDsKLSsJCVg1MDlfTkFNRV9FTlRSWV9uZXc7Ci0rCQlYNTA5X05BTUVfRU5UUllfc2V0X2RhdGE7Ci0rCQlYNTA5X05BTUVfRU5UUllfc2V0X29iamVjdDsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnk7Ci0rCQlYNTA5X05BTUVfY21wOwotKwkJWDUwOV9OQU1FX2RlbGV0ZV9lbnRyeTsKLSsJCVg1MDlfTkFNRV9kaWdlc3Q7Ci0rCQlYNTA5X05BTUVfZHVwOwotKwkJWDUwOV9OQU1FX2VudHJ5X2NvdW50OwotKwkJWDUwOV9OQU1FX2ZyZWU7Ci0rCQlYNTA5X05BTUVfZ2V0X2VudHJ5OwotKwkJWDUwOV9OQU1FX2dldF9pbmRleF9ieV9OSUQ7Ci0rCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X09CSjsKLSsJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9OSUQ7Ci0rCQlYNTA5X05BTUVfZ2V0X3RleHRfYnlfT0JKOwotKwkJWDUwOV9OQU1FX2hhc2g7Ci0rCQlYNTA5X05BTUVfbmV3OwotKwkJWDUwOV9OQU1FX29uZWxpbmU7Ci0rCQlYNTA5X05BTUVfcHJpbnQ7Ci0rCQlYNTA5X05BTUVfc2V0OwotKwkJWDUwOV9PQkpFQ1RfZnJlZV9jb250ZW50czsKLSsJCVg1MDlfT0JKRUNUX3JldHJpZXZlX2J5X3N1YmplY3Q7Ci0rCQlYNTA5X09CSkVDVF91cF9yZWZfY291bnQ7Ci0rCQlYNTA5X1BLRVlfZnJlZTsKLSsJCVg1MDlfUEtFWV9uZXc7Ci0rCQlYNTA5X1BVQktFWV9mcmVlOwotKwkJWDUwOV9QVUJLRVlfZ2V0OwotKwkJWDUwOV9QVUJLRVlfbmV3OwotKwkJWDUwOV9QVUJLRVlfc2V0OwotKwkJWDUwOV9SRVFfSU5GT19mcmVlOwotKwkJWDUwOV9SRVFfSU5GT19uZXc7Ci0rCQlYNTA5X1JFUV9kdXA7Ci0rCQlYNTA5X1JFUV9mcmVlOwotKwkJWDUwOV9SRVFfZ2V0X3B1YmtleTsKLSsJCVg1MDlfUkVRX25ldzsKLSsJCVg1MDlfUkVRX3ByaW50OwotKwkJWDUwOV9SRVFfcHJpbnRfZnA7Ci0rCQlYNTA5X1JFUV9zZXRfcHVia2V5OwotKwkJWDUwOV9SRVFfc2V0X3N1YmplY3RfbmFtZTsKLSsJCVg1MDlfUkVRX3NldF92ZXJzaW9uOwotKwkJWDUwOV9SRVFfc2lnbjsKLSsJCVg1MDlfUkVRX3RvX1g1MDk7Ci0rCQlYNTA5X1JFUV92ZXJpZnk7Ci0rCQlYNTA5X1JFVk9LRURfYWRkX2V4dDsKLSsJCVg1MDlfUkVWT0tFRF9kZWxldGVfZXh0OwotKwkJWDUwOV9SRVZPS0VEX2ZyZWU7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dDsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X05JRDsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X09CSjsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfY291bnQ7Ci0rCQlYNTA5X1JFVk9LRURfbmV3OwotKwkJWDUwOV9TSUdfZnJlZTsKLSsJCVg1MDlfU0lHX25ldzsKLSsJCVg1MDlfU1RPUkVfQ1RYX2NsZWFudXA7Ci0rCQlYNTA5X1NUT1JFX0NUWF9pbml0OwotKwkJWDUwOV9TVE9SRV9hZGRfY2VydDsKLSsJCVg1MDlfU1RPUkVfYWRkX2xvb2t1cDsKLSsJCVg1MDlfU1RPUkVfZnJlZTsKLSsJCVg1MDlfU1RPUkVfZ2V0X2J5X3N1YmplY3Q7Ci0rCQlYNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zOwotKwkJWDUwOV9TVE9SRV9uZXc7Ci0rCQlYNTA5X1NUT1JFX3NldF9kZWZhdWx0X3BhdGhzOwotKwkJWDUwOV9WQUxfZnJlZTsKLSsJCVg1MDlfVkFMX25ldzsKLSsJCVg1MDlfYWRkX2V4dDsKLSsJCVg1MDlfYXNuMV9tZXRoOwotKwkJWDUwOV9jZXJ0aWZpY2F0ZV90eXBlOwotKwkJWDUwOV9jaGVja19wcml2YXRlX2tleTsKLSsJCVg1MDlfY21wX2N1cnJlbnRfdGltZTsKLSsJCVg1MDlfZGVsZXRlX2V4dDsKLSsJCVg1MDlfZGlnZXN0OwotKwkJWDUwOV9kdXA7Ci0rCQlYNTA5X2ZyZWU7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfYXJlYTsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXI7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyX2VudjsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlOwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW52OwotKwkJWDUwOV9nZXRfZGVmYXVsdF9wcml2YXRlX2RpcjsKLSsJCVg1MDlfZ2V0X2V4dDsKLSsJCVg1MDlfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5X2dldF9leHRfYnlfT0JKOwotKwkJWDUwOV9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9nZXRfZXh0X2NvdW50OwotKwkJWDUwOV9nZXRfaXNzdWVyX25hbWU7Ci0rCQlYNTA5X2dldF9wdWJrZXk7Ci0rCQlYNTA5X2dldF9wdWJrZXlfcGFyYW1ldGVyczsKLSsJCVg1MDlfZ2V0X3NlcmlhbE51bWJlcjsKLSsJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZTsKLSsJCVg1MDlfZ210aW1lX2FkajsKLSsJCVg1MDlfaXNzdWVyX2FuZF9zZXJpYWxfY21wOwotKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXNoOwotKwkJWDUwOV9pc3N1ZXJfbmFtZV9jbXA7Ci0rCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2g7Ci0rCQlYNTA5X2xvYWRfY2VydF9maWxlOwotKwkJWDUwOV9uZXc7Ci0rCQlYNTA5X3ByaW50OwotKwkJWDUwOV9wcmludF9mcDsKLSsJCVg1MDlfc2V0X2lzc3Vlcl9uYW1lOwotKwkJWDUwOV9zZXRfbm90QWZ0ZXI7Ci0rCQlYNTA5X3NldF9ub3RCZWZvcmU7Ci0rCQlYNTA5X3NldF9wdWJrZXk7Ci0rCQlYNTA5X3NldF9zZXJpYWxOdW1iZXI7Ci0rCQlYNTA5X3NldF9zdWJqZWN0X25hbWU7Ci0rCQlYNTA5X3NldF92ZXJzaW9uOwotKwkJWDUwOV9zaWduOwotKwkJWDUwOV9zdWJqZWN0X25hbWVfY21wOwotKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaDsKLSsJCVg1MDlfdG9fWDUwOV9SRVE7Ci0rCQlYNTA5X3ZlcmlmeTsKLSsJCVg1MDlfdmVyaWZ5X2NlcnQ7Ci0rCQlYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZzsKLSsJCVg1MDl2M19hZGRfZXh0OwotKwkJWDUwOXYzX2FkZF9leHRlbnNpb247Ci0rCQlYNTA5djNfYWRkX25ldHNjYXBlX2V4dGVuc2lvbnM7Ci0rCQlYNTA5djNfYWRkX3N0YW5kYXJkX2V4dGVuc2lvbnM7Ci0rCQlYNTA5djNfY2xlYW51cF9leHRlbnNpb25zOwotKwkJWDUwOXYzX2RhdGFfdHlwZV9ieV9OSUQ7Ci0rCQlYNTA5djNfZGF0YV90eXBlX2J5X09CSjsKLSsJCVg1MDl2M19kZWxldGVfZXh0OwotKwkJWDUwOXYzX2dldF9leHQ7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCVg1MDl2M19nZXRfZXh0X2NvdW50OwotKwkJWDUwOXYzX3BhY2tfc3RyaW5nOwotKwkJWDUwOXYzX3BhY2tfdHlwZV9ieV9OSUQ7Ci0rCQlYNTA5djNfcGFja190eXBlX2J5X09CSjsKLSsJCVg1MDl2M191bnBhY2tfc3RyaW5nOwotKwkJX2Rlc19jcnlwdDsKLSsJCWEyZF9BU04xX09CSkVDVDsKLSsJCWEyaV9BU04xX0lOVEVHRVI7Ci0rCQlhMmlfQVNOMV9TVFJJTkc7Ci0rCQlhc24xX0ZpbmlzaDsKLSsJCWFzbjFfR2V0U2VxdWVuY2U7Ci0rCQlibl9kaXZfd29yZHM7Ci0rCQlibl9leHBhbmQyOwotKwkJYm5fbXVsX2FkZF93b3JkczsKLSsJCWJuX211bF93b3JkczsKLSsJCUJOX3VhZGQ7Ci0rCQlCTl91c3ViOwotKwkJYm5fc3FyX3dvcmRzOwotKwkJX29zc2xfb2xkX2NyeXB0OwotKwkJZDJpX0FTTjFfQklUX1NUUklORzsKLSsJCWQyaV9BU04xX0JPT0xFQU47Ci0rCQlkMmlfQVNOMV9IRUFERVI7Ci0rCQlkMmlfQVNOMV9JQTVTVFJJTkc7Ci0rCQlkMmlfQVNOMV9JTlRFR0VSOwotKwkJZDJpX0FTTjFfT0JKRUNUOwotKwkJZDJpX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJZDJpX0FTTjFfUFJJTlRBQkxFOwotKwkJZDJpX0FTTjFfUFJJTlRBQkxFU1RSSU5HOwotKwkJZDJpX0FTTjFfU0VUOwotKwkJZDJpX0FTTjFfVDYxU1RSSU5HOwotKwkJZDJpX0FTTjFfVFlQRTsKLSsJCWQyaV9BU04xX1VUQ1RJTUU7Ci0rCQlkMmlfQVNOMV9ieXRlczsKLSsJCWQyaV9BU04xX3R5cGVfYnl0ZXM7Ci0rCQlkMmlfREhwYXJhbXM7Ci0rCQlkMmlfRFNBUHJpdmF0ZUtleTsKLSsJCWQyaV9EU0FQcml2YXRlS2V5X2JpbzsKLSsJCWQyaV9EU0FQcml2YXRlS2V5X2ZwOwotKwkJZDJpX0RTQVB1YmxpY0tleTsKLSsJCWQyaV9EU0FwYXJhbXM7Ci0rCQlkMmlfTkVUU0NBUEVfU1BLQUM7Ci0rCQlkMmlfTkVUU0NBUEVfU1BLSTsKLSsJCWQyaV9OZXRzY2FwZV9SU0E7Ci0rCQlkMmlfUEtDUzc7Ci0rCQlkMmlfUEtDUzdfRElHRVNUOwotKwkJZDJpX1BLQ1M3X0VOQ1JZUFQ7Ci0rCQlkMmlfUEtDUzdfRU5DX0NPTlRFTlQ7Ci0rCQlkMmlfUEtDUzdfRU5WRUxPUEU7Ci0rCQlkMmlfUEtDUzdfSVNTVUVSX0FORF9TRVJJQUw7Ci0rCQlkMmlfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCWQyaV9QS0NTN19TSUdORUQ7Ci0rCQlkMmlfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlkMmlfUEtDUzdfU0lHTl9FTlZFTE9QRTsKLSsJCWQyaV9QS0NTN19iaW87Ci0rCQlkMmlfUEtDUzdfZnA7Ci0rCQlkMmlfUHJpdmF0ZUtleTsKLSsJCWQyaV9QdWJsaWNLZXk7Ci0rCQlkMmlfUlNBUHJpdmF0ZUtleTsKLSsJCWQyaV9SU0FQcml2YXRlS2V5X2JpbzsKLSsJCWQyaV9SU0FQcml2YXRlS2V5X2ZwOwotKwkJZDJpX1JTQVB1YmxpY0tleTsKLSsJCWQyaV9YNTA5OwotKwkJZDJpX1g1MDlfQUxHT1I7Ci0rCQlkMmlfWDUwOV9BVFRSSUJVVEU7Ci0rCQlkMmlfWDUwOV9DSU5GOwotKwkJZDJpX1g1MDlfQ1JMOwotKwkJZDJpX1g1MDlfQ1JMX0lORk87Ci0rCQlkMmlfWDUwOV9DUkxfYmlvOwotKwkJZDJpX1g1MDlfQ1JMX2ZwOwotKwkJZDJpX1g1MDlfRVhURU5TSU9OOwotKwkJZDJpX1g1MDlfTkFNRTsKLSsJCWQyaV9YNTA5X05BTUVfRU5UUlk7Ci0rCQlkMmlfWDUwOV9QS0VZOwotKwkJZDJpX1g1MDlfUFVCS0VZOwotKwkJZDJpX1g1MDlfUkVROwotKwkJZDJpX1g1MDlfUkVRX0lORk87Ci0rCQlkMmlfWDUwOV9SRVFfYmlvOwotKwkJZDJpX1g1MDlfUkVRX2ZwOwotKwkJZDJpX1g1MDlfUkVWT0tFRDsKLSsJCWQyaV9YNTA5X1NJRzsKLSsJCWQyaV9YNTA5X1ZBTDsKLSsJCWQyaV9YNTA5X2JpbzsKLSsJCWQyaV9YNTA5X2ZwOwotKwkJREVTX2NiY19ja3N1bTsKLSsJCURFU19jYmNfZW5jcnlwdDsKLSsJCURFU19jYmxvY2tfcHJpbnRfZmlsZTsKLSsJCURFU19jZmI2NF9lbmNyeXB0OwotKwkJREVTX2NmYl9lbmNyeXB0OwotKwkJREVTX2RlY3J5cHQzOwotKwkJREVTX2VjYjNfZW5jcnlwdDsKLSsJCURFU19lY2JfZW5jcnlwdDsKLSsJCURFU19lZGUzX2NiY19lbmNyeXB0OwotKwkJREVTX2VkZTNfY2ZiNjRfZW5jcnlwdDsKLSsJCURFU19lZGUzX29mYjY0X2VuY3J5cHQ7Ci0rCQlERVNfZW5jX3JlYWQ7Ci0rCQlERVNfZW5jX3dyaXRlOwotKwkJREVTX2VuY3J5cHQxOwotKwkJREVTX2VuY3J5cHQyOwotKwkJREVTX2VuY3J5cHQzOwotKwkJREVTX2ZjcnlwdDsKLSsJCURFU19pc193ZWFrX2tleTsKLSsJCURFU19rZXlfc2NoZWQ7Ci0rCQlERVNfbmNiY19lbmNyeXB0OwotKwkJREVTX29mYjY0X2VuY3J5cHQ7Ci0rCQlERVNfb2ZiX2VuY3J5cHQ7Ci0rCQlERVNfb3B0aW9uczsKLSsJCURFU19wY2JjX2VuY3J5cHQ7Ci0rCQlERVNfcXVhZF9ja3N1bTsKLSsJCURFU19yYW5kb21fa2V5OwotKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fc2VlZDsKLSsJCV9vc3NsX29sZF9kZXNfcmVhZF8ycGFzc3dvcmRzOwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3Bhc3N3b3JkOwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3OwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3X3N0cmluZzsKLSsJCURFU19zZXRfa2V5OwotKwkJREVTX3NldF9vZGRfcGFyaXR5OwotKwkJREVTX3N0cmluZ190b18ya2V5czsKLSsJCURFU19zdHJpbmdfdG9fa2V5OwotKwkJREVTX3hjYmNfZW5jcnlwdDsKLSsJCURFU194d2hpdGVfaW4yb3V0OwotKwkJZmNyeXB0X2JvZHk7Ci0rCQlpMmFfQVNOMV9JTlRFR0VSOwotKwkJaTJhX0FTTjFfT0JKRUNUOwotKwkJaTJhX0FTTjFfU1RSSU5HOwotKwkJaTJkX0FTTjFfQklUX1NUUklORzsKLSsJCWkyZF9BU04xX0JPT0xFQU47Ci0rCQlpMmRfQVNOMV9IRUFERVI7Ci0rCQlpMmRfQVNOMV9JQTVTVFJJTkc7Ci0rCQlpMmRfQVNOMV9JTlRFR0VSOwotKwkJaTJkX0FTTjFfT0JKRUNUOwotKwkJaTJkX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJaTJkX0FTTjFfUFJJTlRBQkxFOwotKwkJaTJkX0FTTjFfU0VUOwotKwkJaTJkX0FTTjFfVFlQRTsKLSsJCWkyZF9BU04xX1VUQ1RJTUU7Ci0rCQlpMmRfQVNOMV9ieXRlczsKLSsJCWkyZF9ESHBhcmFtczsKLSsJCWkyZF9EU0FQcml2YXRlS2V5OwotKwkJaTJkX0RTQVByaXZhdGVLZXlfYmlvOwotKwkJaTJkX0RTQVByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfRFNBUHVibGljS2V5OwotKwkJaTJkX0RTQXBhcmFtczsKLSsJCWkyZF9ORVRTQ0FQRV9TUEtBQzsKLSsJCWkyZF9ORVRTQ0FQRV9TUEtJOwotKwkJaTJkX05ldHNjYXBlX1JTQTsKLSsJCWkyZF9QS0NTNzsKLSsJCWkyZF9QS0NTN19ESUdFU1Q7Ci0rCQlpMmRfUEtDUzdfRU5DUllQVDsKLSsJCWkyZF9QS0NTN19FTkNfQ09OVEVOVDsKLSsJCWkyZF9QS0NTN19FTlZFTE9QRTsKLSsJCWkyZF9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKLSsJCWkyZF9QS0NTN19SRUNJUF9JTkZPOwotKwkJaTJkX1BLQ1M3X1NJR05FRDsKLSsJCWkyZF9QS0NTN19TSUdORVJfSU5GTzsKLSsJCWkyZF9QS0NTN19TSUdOX0VOVkVMT1BFOwotKwkJaTJkX1BLQ1M3X2JpbzsKLSsJCWkyZF9QS0NTN19mcDsKLSsJCWkyZF9Qcml2YXRlS2V5OwotKwkJaTJkX1B1YmxpY0tleTsKLSsJCWkyZF9SU0FQcml2YXRlS2V5OwotKwkJaTJkX1JTQVByaXZhdGVLZXlfYmlvOwotKwkJaTJkX1JTQVByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUlNBUHVibGljS2V5OwotKwkJaTJkX1g1MDk7Ci0rCQlpMmRfWDUwOV9BTEdPUjsKLSsJCWkyZF9YNTA5X0FUVFJJQlVURTsKLSsJCWkyZF9YNTA5X0NJTkY7Ci0rCQlpMmRfWDUwOV9DUkw7Ci0rCQlpMmRfWDUwOV9DUkxfSU5GTzsKLSsJCWkyZF9YNTA5X0NSTF9iaW87Ci0rCQlpMmRfWDUwOV9DUkxfZnA7Ci0rCQlpMmRfWDUwOV9FWFRFTlNJT047Ci0rCQlpMmRfWDUwOV9OQU1FOwotKwkJaTJkX1g1MDlfTkFNRV9FTlRSWTsKLSsJCWkyZF9YNTA5X1BLRVk7Ci0rCQlpMmRfWDUwOV9QVUJLRVk7Ci0rCQlpMmRfWDUwOV9SRVE7Ci0rCQlpMmRfWDUwOV9SRVFfSU5GTzsKLSsJCWkyZF9YNTA5X1JFUV9iaW87Ci0rCQlpMmRfWDUwOV9SRVFfZnA7Ci0rCQlpMmRfWDUwOV9SRVZPS0VEOwotKwkJaTJkX1g1MDlfU0lHOwotKwkJaTJkX1g1MDlfVkFMOwotKwkJaTJkX1g1MDlfYmlvOwotKwkJaTJkX1g1MDlfZnA7Ci0rCQlpZGVhX2NiY19lbmNyeXB0OwotKwkJaWRlYV9jZmI2NF9lbmNyeXB0OwotKwkJaWRlYV9lY2JfZW5jcnlwdDsKLSsJCWlkZWFfZW5jcnlwdDsKLSsJCWlkZWFfb2ZiNjRfZW5jcnlwdDsKLSsJCWlkZWFfb3B0aW9uczsKLSsJCWlkZWFfc2V0X2RlY3J5cHRfa2V5OwotKwkJaWRlYV9zZXRfZW5jcnlwdF9rZXk7Ci0rCQlsaF9kZWxldGU7Ci0rCQlsaF9kb2FsbDsKLSsJCWxoX2RvYWxsX2FyZzsKLSsJCWxoX2ZyZWU7Ci0rCQlsaF9pbnNlcnQ7Ci0rCQlsaF9uZXc7Ci0rCQlsaF9ub2RlX3N0YXRzOwotKwkJbGhfbm9kZV9zdGF0c19iaW87Ci0rCQlsaF9ub2RlX3VzYWdlX3N0YXRzOwotKwkJbGhfbm9kZV91c2FnZV9zdGF0c19iaW87Ci0rCQlsaF9yZXRyaWV2ZTsKLSsJCWxoX3N0YXRzOwotKwkJbGhfc3RhdHNfYmlvOwotKwkJbGhfc3RyaGFzaDsKLSsJCXNrX2RlbGV0ZTsKLSsJCXNrX2RlbGV0ZV9wdHI7Ci0rCQlza19kdXA7Ci0rCQlza19maW5kOwotKwkJc2tfZnJlZTsKLSsJCXNrX2luc2VydDsKLSsJCXNrX25ldzsKLSsJCXNrX3BvcDsKLSsJCXNrX3BvcF9mcmVlOwotKwkJc2tfcHVzaDsKLSsJCXNrX3NldF9jbXBfZnVuYzsKLSsJCXNrX3NoaWZ0OwotKwkJc2tfdW5zaGlmdDsKLSsJCXNrX3plcm87Ci0rCQlCSU9fZl9uYmlvX3Rlc3Q7Ci0rCQlBU04xX1RZUEVfZ2V0OwotKwkJQVNOMV9UWVBFX3NldDsKLSsJCVBLQ1M3X2NvbnRlbnRfZnJlZTsKLSsJCUVSUl9sb2FkX1BLQ1M3X3N0cmluZ3M7Ci0rCQlYNTA5X2ZpbmRfYnlfaXNzdWVyX2FuZF9zZXJpYWw7Ci0rCQlYNTA5X2ZpbmRfYnlfc3ViamVjdDsKLSsJCVBLQ1M3X2N0cmw7Ci0rCQlQS0NTN19zZXRfdHlwZTsKLSsJCVBLQ1M3X3NldF9jb250ZW50OwotKwkJUEtDUzdfU0lHTkVSX0lORk9fc2V0OwotKwkJUEtDUzdfYWRkX3NpZ25lcjsKLSsJCVBLQ1M3X2FkZF9jZXJ0aWZpY2F0ZTsKLSsJCVBLQ1M3X2FkZF9jcmw7Ci0rCQlQS0NTN19jb250ZW50X25ldzsKLSsJCVBLQ1M3X2RhdGFTaWduOwotKwkJUEtDUzdfZGF0YVZlcmlmeTsKLSsJCVBLQ1M3X2RhdGFJbml0OwotKwkJUEtDUzdfYWRkX3NpZ25hdHVyZTsKLSsJCVBLQ1M3X2NlcnRfZnJvbV9zaWduZXJfaW5mbzsKLSsJCVBLQ1M3X2dldF9zaWduZXJfaW5mbzsKLSsJCUVWUF9kZWxldGVfYWxpYXM7Ci0rCQlFVlBfbWRjMjsKLSsJCVBFTV9yZWFkX2Jpb19SU0FQdWJsaWNLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX1JTQVB1YmxpY0tleTsKLSsJCWQyaV9SU0FQdWJsaWNLZXlfYmlvOwotKwkJaTJkX1JTQVB1YmxpY0tleV9iaW87Ci0rCQlQRU1fcmVhZF9SU0FQdWJsaWNLZXk7Ci0rCQlQRU1fd3JpdGVfUlNBUHVibGljS2V5OwotKwkJZDJpX1JTQVB1YmxpY0tleV9mcDsKLSsJCWkyZF9SU0FQdWJsaWNLZXlfZnA7Ci0rCQlCSU9fY29weV9uZXh0X3JldHJ5OwotKwkJUlNBX2ZsYWdzOwotKwkJWDUwOV9TVE9SRV9hZGRfY3JsOwotKwkJWDUwOV9sb2FkX2NybF9maWxlOwotKwkJRVZQX3JjMl80MF9jYmM7Ci0rCQlFVlBfcmM0XzQwOwotKwkJRVZQX0NJUEhFUl9DVFhfaW5pdDsKLSsJCUhNQUM7Ci0rCQlITUFDX0luaXQ7Ci0rCQlITUFDX1VwZGF0ZTsKLSsJCUhNQUNfRmluYWw7Ci0rCQlFUlJfZ2V0X25leHRfZXJyb3JfbGlicmFyeTsKLSsJCUVWUF9QS0VZX2NtcF9wYXJhbWV0ZXJzOwotKwkJSE1BQ19jbGVhbnVwOwotKwkJQklPX3B0cl9jdHJsOwotKwkJQklPX25ld19maWxlX2ludGVybmFsOwotKwkJQklPX25ld19mcF9pbnRlcm5hbDsKLSsJCUJJT19zX2ZpbGVfaW50ZXJuYWw7Ci0rCQlCTl9CTElORElOR19jb252ZXJ0OwotKwkJQk5fQkxJTkRJTkdfaW52ZXJ0OwotKwkJQk5fQkxJTkRJTkdfdXBkYXRlOwotKwkJUlNBX2JsaW5kaW5nX29uOwotKwkJUlNBX2JsaW5kaW5nX29mZjsKLSsJCWkydF9BU04xX09CSkVDVDsKLSsJCUJOX0JMSU5ESU5HX25ldzsKLSsJCUJOX0JMSU5ESU5HX2ZyZWU7Ci0rCQlFVlBfY2FzdDVfY2JjOwotKwkJRVZQX2Nhc3Q1X2NmYjY0OwotKwkJRVZQX2Nhc3Q1X2VjYjsKLSsJCUVWUF9jYXN0NV9vZmI7Ci0rCQlCRl9kZWNyeXB0OwotKwkJQ0FTVF9zZXRfa2V5OwotKwkJQ0FTVF9lbmNyeXB0OwotKwkJQ0FTVF9kZWNyeXB0OwotKwkJQ0FTVF9lY2JfZW5jcnlwdDsKLSsJCUNBU1RfY2JjX2VuY3J5cHQ7Ci0rCQlDQVNUX2NmYjY0X2VuY3J5cHQ7Ci0rCQlDQVNUX29mYjY0X2VuY3J5cHQ7Ci0rCQlSQzJfZGVjcnlwdDsKLSsJCU9CSl9jcmVhdGVfb2JqZWN0czsKLSsJCUJOX2V4cDsKLSsJCUJOX211bF93b3JkOwotKwkJQk5fc3ViX3dvcmQ7Ci0rCQlCTl9kZWMyYm47Ci0rCQlCTl9ibjJkZWM7Ci0rCQlCSU9fZ2hibl9jdHJsOwotKwkJQ1JZUFRPX2ZyZWVfZXhfZGF0YTsKLSsJCUNSWVBUT19nZXRfZXhfZGF0YTsKLSsJCUNSWVBUT19zZXRfZXhfZGF0YTsKLSsJCUVSUl9sb2FkX0NSWVBUT19zdHJpbmdzOwotKwkJRVJSX2xvYWRfQ1JZUFRPbGliX3N0cmluZ3M7Ci0rCQlFVlBfUEtFWV9iaXRzOwotKwkJTUQ1X1RyYW5zZm9ybTsKLSsJCVNIQTFfVHJhbnNmb3JtOwotKwkJU0hBX1RyYW5zZm9ybTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9jaGFpbjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3JfZGVwdGg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9jZXJ0OwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NoYWluOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2Vycm9yOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2V4X2RhdGE7Ci0rCQlDUllQVE9fZHVwX2V4X2RhdGE7Ci0rCQlDUllQVE9fZ2V0X25ld19sb2NraWQ7Ci0rCQlDUllQVE9fbmV3X2V4X2RhdGE7Ci0rCQlSU0Ffc2V0X2V4X2RhdGE7Ci0rCQlSU0FfZ2V0X2V4X2RhdGE7Ci0rCQlSU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzE7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8yOwotKwkJUlNBX3BhZGRpbmdfYWRkX1NTTHYyMzsKLSsJCVJTQV9wYWRkaW5nX2FkZF9ub25lOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8xOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfbm9uZTsKLSsJCWJuX2FkZF93b3JkczsKLSsJCWQyaV9OZXRzY2FwZV9SU0FfMjsKLSsJCUNSWVBUT19nZXRfZXhfbmV3X2luZGV4OwotKwkJUklQRU1EMTYwX0luaXQ7Ci0rCQlSSVBFTUQxNjBfVXBkYXRlOwotKwkJUklQRU1EMTYwX0ZpbmFsOwotKwkJUklQRU1EMTYwOwotKwkJUklQRU1EMTYwX1RyYW5zZm9ybTsKLSsJCVJDNV8zMl9zZXRfa2V5OwotKwkJUkM1XzMyX2VjYl9lbmNyeXB0OwotKwkJUkM1XzMyX2VuY3J5cHQ7Ci0rCQlSQzVfMzJfZGVjcnlwdDsKLSsJCVJDNV8zMl9jYmNfZW5jcnlwdDsKLSsJCVJDNV8zMl9jZmI2NF9lbmNyeXB0OwotKwkJUkM1XzMyX29mYjY0X2VuY3J5cHQ7Ci0rCQlCTl9ibjJtcGk7Ci0rCQlCTl9tcGkyYm47Ci0rCQlBU04xX0JJVF9TVFJJTkdfZ2V0X2JpdDsKLSsJCUFTTjFfQklUX1NUUklOR19zZXRfYml0OwotKwkJQklPX2dldF9leF9kYXRhOwotKwkJQklPX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlCSU9fc2V0X2V4X2RhdGE7Ci0rCQlYNTA5djNfZ2V0X2tleV91c2FnZTsKLSsJCVg1MDl2M19zZXRfa2V5X3VzYWdlOwotKwkJYTJpX1g1MDl2M19rZXlfdXNhZ2U7Ci0rCQlpMmFfWDUwOXYzX2tleV91c2FnZTsKLSsJCUVWUF9QS0VZX2RlY3J5cHQ7Ci0rCQlFVlBfUEtFWV9lbmNyeXB0OwotKwkJUEtDUzdfUkVDSVBfSU5GT19zZXQ7Ci0rCQlQS0NTN19hZGRfcmVjaXBpZW50OwotKwkJUEtDUzdfYWRkX3JlY2lwaWVudF9pbmZvOwotKwkJUEtDUzdfc2V0X2NpcGhlcjsKLSsJCUFTTjFfVFlQRV9nZXRfaW50X29jdGV0c3RyaW5nOwotKwkJQVNOMV9UWVBFX2dldF9vY3RldHN0cmluZzsKLSsJCUFTTjFfVFlQRV9zZXRfaW50X29jdGV0c3RyaW5nOwotKwkJQVNOMV9UWVBFX3NldF9vY3RldHN0cmluZzsKLSsJCUFTTjFfVVRDVElNRV9zZXRfc3RyaW5nOwotKwkJRVJSX2FkZF9lcnJvcl9kYXRhOwotKwkJRVJSX3NldF9lcnJvcl9kYXRhOwotKwkJRVZQX0NJUEhFUl9hc24xX3RvX3BhcmFtOwotKwkJRVZQX0NJUEhFUl9wYXJhbV90b19hc24xOwotKwkJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdjsKLSsJCUVWUF9DSVBIRVJfc2V0X2FzbjFfaXY7Ci0rCQlFVlBfcmM1XzMyXzEyXzE2X2NiYzsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfY2ZiNjQ7Ci0rCQlFVlBfcmM1XzMyXzEyXzE2X2VjYjsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfb2ZiOwotKwkJYXNuMV9hZGRfZXJyb3I7Ci0rCQlkMmlfQVNOMV9CTVBTVFJJTkc7Ci0rCQlpMmRfQVNOMV9CTVBTVFJJTkc7Ci0rCQlCSU9fZl9iZXI7Ci0rCQlCTl9pbml0OwotKwkJQ09NUF9DVFhfbmV3OwotKwkJQ09NUF9DVFhfZnJlZTsKLSsJCUNPTVBfQ1RYX2NvbXByZXNzX2Jsb2NrOwotKwkJQ09NUF9DVFhfZXhwYW5kX2Jsb2NrOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X25ld19pbmRleDsKLSsJCU9CSl9OQU1FX2FkZDsKLSsJCUJJT19zb2NrZXRfbmJpbzsKLSsJCUVWUF9yYzJfNjRfY2JjOwotKwkJT0JKX05BTUVfY2xlYW51cDsKLSsJCU9CSl9OQU1FX2dldDsKLSsJCU9CSl9OQU1FX2luaXQ7Ci0rCQlPQkpfTkFNRV9uZXdfaW5kZXg7Ci0rCQlPQkpfTkFNRV9yZW1vdmU7Ci0rCQlCTl9NT05UX0NUWF9jb3B5OwotKwkJQklPX25ld19zb2NrczRhX2Nvbm5lY3Q7Ci0rCQlCSU9fc19zb2NrczRhX2Nvbm5lY3Q7Ci0rCQlQUk9YWV9zZXRfY29ubmVjdF9tb2RlOwotKwkJUkFORF9TU0xlYXk7Ci0rCQlSQU5EX3NldF9yYW5kX21ldGhvZDsKLSsJCVJTQV9tZW1vcnlfbG9jazsKLSsJCWJuX3N1Yl93b3JkczsKLSsJCWJuX211bF9ub3JtYWw7Ci0rCQlibl9tdWxfY29tYmE4OwotKwkJYm5fbXVsX2NvbWJhNDsKLSsJCWJuX3Nxcl9ub3JtYWw7Ci0rCQlibl9zcXJfY29tYmE4OwotKwkJYm5fc3FyX2NvbWJhNDsKLSsJCWJuX2NtcF93b3JkczsKLSsJCWJuX211bF9yZWN1cnNpdmU7Ci0rCQlibl9tdWxfcGFydF9yZWN1cnNpdmU7Ci0rCQlibl9zcXJfcmVjdXJzaXZlOwotKwkJYm5fbXVsX2xvd19ub3JtYWw7Ci0rCQlCTl9SRUNQX0NUWF9pbml0OwotKwkJQk5fUkVDUF9DVFhfbmV3OwotKwkJQk5fUkVDUF9DVFhfZnJlZTsKLSsJCUJOX1JFQ1BfQ1RYX3NldDsKLSsJCUJOX21vZF9tdWxfcmVjaXByb2NhbDsKLSsJCUJOX21vZF9leHBfcmVjcDsKLSsJCUJOX2Rpdl9yZWNwOwotKwkJQk5fQ1RYX2luaXQ7Ci0rCQlCTl9NT05UX0NUWF9pbml0OwotKwkJUkFORF9nZXRfcmFuZF9tZXRob2Q7Ci0rCQlQS0NTN19hZGRfYXR0cmlidXRlOwotKwkJUEtDUzdfYWRkX3NpZ25lZF9hdHRyaWJ1dGU7Ci0rCQlQS0NTN19kaWdlc3RfZnJvbV9hdHRyaWJ1dGVzOwotKwkJUEtDUzdfZ2V0X2F0dHJpYnV0ZTsKLSsJCVBLQ1M3X2dldF9pc3N1ZXJfYW5kX3NlcmlhbDsKLSsJCVBLQ1M3X2dldF9zaWduZWRfYXR0cmlidXRlOwotKwkJQ09NUF9jb21wcmVzc19ibG9jazsKLSsJCUNPTVBfZXhwYW5kX2Jsb2NrOwotKwkJQ09NUF9ybGU7Ci0rCQlDT01QX3psaWI7Ci0rCQltc190aW1lX2RpZmY7Ci0rCQltc190aW1lX25ldzsKLSsJCW1zX3RpbWVfZnJlZTsKLSsJCW1zX3RpbWVfY21wOwotKwkJbXNfdGltZV9nZXQ7Ci0rCQlQS0NTN19zZXRfYXR0cmlidXRlczsKLSsJCVBLQ1M3X3NldF9zaWduZWRfYXR0cmlidXRlczsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZTsKLSsJCVg1MDlfQVRUUklCVVRFX2R1cDsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX2NoZWNrOwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfcHJpbnQ7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXQ7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXRfc3RyaW5nOwotKwkJQVNOMV9USU1FX3ByaW50OwotKwkJQkFTSUNfQ09OU1RSQUlOVFNfZnJlZTsKLSsJCUJBU0lDX0NPTlNUUkFJTlRTX25ldzsKLSsJCUVSUl9sb2FkX1g1MDlWM19zdHJpbmdzOwotKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9mcmVlOwotKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9uZXc7Ci0rCQlPQkpfdHh0Mm9iajsKLSsJCVBFTV9yZWFkX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fcmVhZF9OU19DRVJUX1NFUTsKLSsJCVBFTV9yZWFkX2Jpb19ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJUEVNX3JlYWRfYmlvX05TX0NFUlRfU0VROwotKwkJUEVNX3dyaXRlX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fd3JpdGVfTlNfQ0VSVF9TRVE7Ci0rCQlQRU1fd3JpdGVfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fd3JpdGVfYmlvX05TX0NFUlRfU0VROwotKwkJWDUwOVYzX0VYVF9hZGQ7Ci0rCQlYNTA5VjNfRVhUX2FkZF9hbGlhczsKLSsJCVg1MDlWM19FWFRfYWRkX2NvbmY7Ci0rCQlYNTA5VjNfRVhUX2NsZWFudXA7Ci0rCQlYNTA5VjNfRVhUX2NvbmY7Ci0rCQlYNTA5VjNfRVhUX2NvbmZfbmlkOwotKwkJWDUwOVYzX0VYVF9nZXQ7Ci0rCQlYNTA5VjNfRVhUX2dldF9uaWQ7Ci0rCQlYNTA5VjNfRVhUX3ByaW50OwotKwkJWDUwOVYzX0VYVF9wcmludF9mcDsKLSsJCVg1MDlWM19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKLSsJCVg1MDlWM19hZGRfdmFsdWU7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX2Jvb2w7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX2ludDsKLSsJCVg1MDlWM19jb25mX2ZyZWU7Ci0rCQlYNTA5VjNfZ2V0X3ZhbHVlX2Jvb2w7Ci0rCQlYNTA5VjNfZ2V0X3ZhbHVlX2ludDsKLSsJCVg1MDlWM19wYXJzZV9saXN0OwotKwkJZDJpX0FTTjFfR0VORVJBTElaRURUSU1FOwotKwkJZDJpX0FTTjFfVElNRTsKLSsJCWQyaV9CQVNJQ19DT05TVFJBSU5UUzsKLSsJCWQyaV9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJZDJpX2V4dF9rdTsKLSsJCWV4dF9rdV9mcmVlOwotKwkJZXh0X2t1X25ldzsKLSsJCWkyZF9BU04xX0dFTkVSQUxJWkVEVElNRTsKLSsJCWkyZF9BU04xX1RJTUU7Ci0rCQlpMmRfQkFTSUNfQ09OU1RSQUlOVFM7Ci0rCQlpMmRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCWkyZF9leHRfa3U7Ci0rCQlFVlBfTURfQ1RYX2NvcHk7Ci0rCQlpMmRfQVNOMV9FTlVNRVJBVEVEOwotKwkJZDJpX0FTTjFfRU5VTUVSQVRFRDsKLSsJCUFTTjFfRU5VTUVSQVRFRF9zZXQ7Ci0rCQlBU04xX0VOVU1FUkFURURfZ2V0OwotKwkJQk5fdG9fQVNOMV9FTlVNRVJBVEVEOwotKwkJQVNOMV9FTlVNRVJBVEVEX3RvX0JOOwotKwkJaTJhX0FTTjFfRU5VTUVSQVRFRDsKLSsJCWEyaV9BU04xX0VOVU1FUkFURUQ7Ci0rCQlpMmRfR0VORVJBTF9OQU1FOwotKwkJZDJpX0dFTkVSQUxfTkFNRTsKLSsJCUdFTkVSQUxfTkFNRV9uZXc7Ci0rCQlHRU5FUkFMX05BTUVfZnJlZTsKLSsJCUdFTkVSQUxfTkFNRVNfbmV3OwotKwkJR0VORVJBTF9OQU1FU19mcmVlOwotKwkJZDJpX0dFTkVSQUxfTkFNRVM7Ci0rCQlpMmRfR0VORVJBTF9OQU1FUzsKLSsJCWkydl9HRU5FUkFMX05BTUVTOwotKwkJaTJzX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJczJpX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJWDUwOVYzX0VYVF9jaGVja19jb25mOwotKwkJaGV4X3RvX3N0cmluZzsKLSsJCXN0cmluZ190b19oZXg7Ci0rCQlERVNfZWRlM19jYmNtX2VuY3J5cHQ7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUDsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVA7Ci0rCQlYNTA5X0NSTF9wcmludF9mcDsKLSsJCVg1MDlfQ1JMX3ByaW50OwotKwkJaTJ2X0dFTkVSQUxfTkFNRTsKLSsJCXYyaV9HRU5FUkFMX05BTUU7Ci0rCQlpMmRfUEtFWV9VU0FHRV9QRVJJT0Q7Ci0rCQlkMmlfUEtFWV9VU0FHRV9QRVJJT0Q7Ci0rCQlQS0VZX1VTQUdFX1BFUklPRF9uZXc7Ci0rCQlQS0VZX1VTQUdFX1BFUklPRF9mcmVlOwotKwkJdjJpX0dFTkVSQUxfTkFNRVM7Ci0rCQlpMnNfQVNOMV9JTlRFR0VSOwotKwkJWDUwOVYzX0VYVF9kMmk7Ci0rCQluYW1lX2NtcDsKLSsJCXN0cl9kdXA7Ci0rCQlpMnNfQVNOMV9FTlVNRVJBVEVEOwotKwkJaTJzX0FTTjFfRU5VTUVSQVRFRF9UQUJMRTsKLSsJCUJJT19zX2xvZzsKLSsJCUJJT19mX3JlbGlhYmxlOwotKwkJUEtDUzdfZGF0YUZpbmFsOwotKwkJUEtDUzdfZGF0YURlY29kZTsKLSsJCVg1MDlWM19FWFRfQ1JMX2FkZF9jb25mOwotKwkJQk5fc2V0X3BhcmFtczsKLSsJCUJOX2dldF9wYXJhbXM7Ci0rCQlCSU9fZ2V0X2V4X251bTsKLSsJCUJJT19zZXRfZXhfZnJlZV9mdW5jOwotKwkJRVZQX3JpcGVtZDE2MDsKLSsJCUFTTjFfVElNRV9zZXQ7Ci0rCQlpMmRfQVVUSE9SSVRZX0tFWUlEOwotKwkJZDJpX0FVVEhPUklUWV9LRVlJRDsKLSsJCUFVVEhPUklUWV9LRVlJRF9uZXc7Ci0rCQlBVVRIT1JJVFlfS0VZSURfZnJlZTsKLSsJCUFTTjFfc2VxX3VucGFjazsKLSsJCUFTTjFfc2VxX3BhY2s7Ci0rCQlBU04xX3VucGFja19zdHJpbmc7Ci0rCQlBU04xX3BhY2tfc3RyaW5nOwotKwkJUEtDUzEyX3BhY2tfc2FmZWJhZzsKLSsJCVBLQ1MxMl9NQUtFX0tFWUJBRzsKLSsJCVBLQ1M4X2VuY3J5cHQ7Ci0rCQlQS0NTMTJfTUFLRV9TSEtFWUJBRzsKLSsJCVBLQ1MxMl9wYWNrX3A3ZGF0YTsKLSsJCVBLQ1MxMl9wYWNrX3A3ZW5jZGF0YTsKLSsJCVBLQ1MxMl9hZGRfbG9jYWxrZXlpZDsKLSsJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX2FzYzsKLSsJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX3VuaTsKLSsJCVBLQ1MxMl9nZXRfZnJpZW5kbHluYW1lOwotKwkJUEtDUzEyX3BiZV9jcnlwdDsKLSsJCVBLQ1MxMl9kZWNyeXB0X2QyaTsKLSsJCVBLQ1MxMl9pMmRfZW5jcnlwdDsKLSsJCVBLQ1MxMl9pbml0OwotKwkJUEtDUzEyX2tleV9nZW5fYXNjOwotKwkJUEtDUzEyX2tleV9nZW5fdW5pOwotKwkJUEtDUzEyX2dlbl9tYWM7Ci0rCQlQS0NTMTJfdmVyaWZ5X21hYzsKLSsJCVBLQ1MxMl9zZXRfbWFjOwotKwkJUEtDUzEyX3NldHVwX21hYzsKLSsJCU9QRU5TU0xfYXNjMnVuaTsKLSsJCU9QRU5TU0xfdW5pMmFzYzsKLSsJCWkyZF9QS0NTMTJfQkFHUzsKLSsJCVBLQ1MxMl9CQUdTX25ldzsKLSsJCWQyaV9QS0NTMTJfQkFHUzsKLSsJCVBLQ1MxMl9CQUdTX2ZyZWU7Ci0rCQlpMmRfUEtDUzEyOwotKwkJZDJpX1BLQ1MxMjsKLSsJCVBLQ1MxMl9uZXc7Ci0rCQlQS0NTMTJfZnJlZTsKLSsJCWkyZF9QS0NTMTJfTUFDX0RBVEE7Ci0rCQlQS0NTMTJfTUFDX0RBVEFfbmV3OwotKwkJZDJpX1BLQ1MxMl9NQUNfREFUQTsKLSsJCVBLQ1MxMl9NQUNfREFUQV9mcmVlOwotKwkJaTJkX1BLQ1MxMl9TQUZFQkFHOwotKwkJUEtDUzEyX1NBRkVCQUdfbmV3OwotKwkJZDJpX1BLQ1MxMl9TQUZFQkFHOwotKwkJUEtDUzEyX1NBRkVCQUdfZnJlZTsKLSsJCUVSUl9sb2FkX1BLQ1MxMl9zdHJpbmdzOwotKwkJUEtDUzEyX1BCRV9hZGQ7Ci0rCQlQS0NTOF9hZGRfa2V5dXNhZ2U7Ci0rCQlQS0NTMTJfZ2V0X2F0dHJfZ2VuOwotKwkJUEtDUzEyX3BhcnNlOwotKwkJUEtDUzEyX2NyZWF0ZTsKLSsJCWkyZF9QS0NTMTJfYmlvOwotKwkJaTJkX1BLQ1MxMl9mcDsKLSsJCWQyaV9QS0NTMTJfYmlvOwotKwkJZDJpX1BLQ1MxMl9mcDsKLSsJCWkyZF9QQkVQQVJBTTsKLSsJCVBCRVBBUkFNX25ldzsKLSsJCWQyaV9QQkVQQVJBTTsKLSsJCVBCRVBBUkFNX2ZyZWU7Ci0rCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBLQ1M4X1BSSVZfS0VZX0lORk9fbmV3OwotKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQS0NTOF9QUklWX0tFWV9JTkZPX2ZyZWU7Ci0rCQlFVlBfUEtDUzgyUEtFWTsKLSsJCUVWUF9QS0VZMlBLQ1M4OwotKwkJUEtDUzhfc2V0X2Jyb2tlbjsKLSsJCUVWUF9QQkVfQUxHT1JfQ2lwaGVySW5pdDsKLSsJCUVWUF9QQkVfYWxnX2FkZDsKLSsJCVBLQ1M1X3BiZV9zZXQ7Ci0rCQlFVlBfUEJFX2NsZWFudXA7Ci0rCQlpMmRfU1hORVQ7Ci0rCQlkMmlfU1hORVQ7Ci0rCQlTWE5FVF9uZXc7Ci0rCQlTWE5FVF9mcmVlOwotKwkJaTJkX1NYTkVUSUQ7Ci0rCQlkMmlfU1hORVRJRDsKLSsJCVNYTkVUSURfbmV3OwotKwkJU1hORVRJRF9mcmVlOwotKwkJRFNBX1NJR19uZXc7Ci0rCQlEU0FfU0lHX2ZyZWU7Ci0rCQlEU0FfZG9fc2lnbjsKLSsJCURTQV9kb192ZXJpZnk7Ci0rCQlkMmlfRFNBX1NJRzsKLSsJCWkyZF9EU0FfU0lHOwotKwkJaTJkX0FTTjFfVklTSUJMRVNUUklORzsKLSsJCWQyaV9BU04xX1ZJU0lCTEVTVFJJTkc7Ci0rCQlpMmRfQVNOMV9VVEY4U1RSSU5HOwotKwkJZDJpX0FTTjFfVVRGOFNUUklORzsKLSsJCWkyZF9ESVJFQ1RPUllTVFJJTkc7Ci0rCQlkMmlfRElSRUNUT1JZU1RSSU5HOwotKwkJaTJkX0RJU1BMQVlURVhUOwotKwkJZDJpX0RJU1BMQVlURVhUOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDk7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOTsKLSsJCWkyZF9QQktERjJQQVJBTTsKLSsJCVBCS0RGMlBBUkFNX25ldzsKLSsJCWQyaV9QQktERjJQQVJBTTsKLSsJCVBCS0RGMlBBUkFNX2ZyZWU7Ci0rCQlpMmRfUEJFMlBBUkFNOwotKwkJUEJFMlBBUkFNX25ldzsKLSsJCWQyaV9QQkUyUEFSQU07Ci0rCQlQQkUyUEFSQU1fZnJlZTsKLSsJCWQyaV9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfR0VORVJBTF9OQU1FOwotKwkJZDJpX0FTTjFfU0VUX09GX1NYTkVUSUQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfU1hORVRJRDsKLSsJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKLSsJCWkyZF9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKLSsJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lJTkZPOwotKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWUlORk87Ci0rCQlTWE5FVF9hZGRfaWRfYXNjOwotKwkJU1hORVRfYWRkX2lkX3Vsb25nOwotKwkJU1hORVRfYWRkX2lkX0lOVEVHRVI7Ci0rCQlTWE5FVF9nZXRfaWRfYXNjOwotKwkJU1hORVRfZ2V0X2lkX3Vsb25nOwotKwkJU1hORVRfZ2V0X2lkX0lOVEVHRVI7Ci0rCQlYNTA5VjNfc2V0X2NvbmZfbGhhc2g7Ci0rCQlpMmRfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKLSsJCUNFUlRJRklDQVRFUE9MSUNJRVNfbmV3OwotKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19mcmVlOwotKwkJZDJpX0NFUlRJRklDQVRFUE9MSUNJRVM7Ci0rCQlpMmRfUE9MSUNZSU5GTzsKLSsJCVBPTElDWUlORk9fbmV3OwotKwkJZDJpX1BPTElDWUlORk87Ci0rCQlQT0xJQ1lJTkZPX2ZyZWU7Ci0rCQlpMmRfUE9MSUNZUVVBTElORk87Ci0rCQlQT0xJQ1lRVUFMSU5GT19uZXc7Ci0rCQlkMmlfUE9MSUNZUVVBTElORk87Ci0rCQlQT0xJQ1lRVUFMSU5GT19mcmVlOwotKwkJaTJkX1VTRVJOT1RJQ0U7Ci0rCQlVU0VSTk9USUNFX25ldzsKLSsJCWQyaV9VU0VSTk9USUNFOwotKwkJVVNFUk5PVElDRV9mcmVlOwotKwkJaTJkX05PVElDRVJFRjsKLSsJCU5PVElDRVJFRl9uZXc7Ci0rCQlkMmlfTk9USUNFUkVGOwotKwkJTk9USUNFUkVGX2ZyZWU7Ci0rCQlYNTA5VjNfZ2V0X3N0cmluZzsKLSsJCVg1MDlWM19nZXRfc2VjdGlvbjsKLSsJCVg1MDlWM19zdHJpbmdfZnJlZTsKLSsJCVg1MDlWM19zZWN0aW9uX2ZyZWU7Ci0rCQlYNTA5VjNfc2V0X2N0eDsKLSsJCXMyaV9BU04xX0lOVEVHRVI7Ci0rCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19tYWxsb2NfbG9ja2VkOwotKwkJQ1JZUFRPX2ZyZWVfbG9ja2VkOwotKwkJQk5fbW9kX2V4cDJfbW9udDsKLSsJCUVSUl9nZXRfZXJyb3JfbGluZV9kYXRhOwotKwkJRVJSX3BlZWtfZXJyb3JfbGluZV9kYXRhOwotKwkJUEtDUzEyX1BCRV9rZXlpdmdlbjsKLSsJCVg1MDlfQUxHT1JfZHVwOwotKwkJZDJpX0FTTjFfU0VUX09GX0RJU1RfUE9JTlQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKLSsJCWkyZF9DUkxfRElTVF9QT0lOVFM7Ci0rCQlDUkxfRElTVF9QT0lOVFNfbmV3OwotKwkJQ1JMX0RJU1RfUE9JTlRTX2ZyZWU7Ci0rCQlkMmlfQ1JMX0RJU1RfUE9JTlRTOwotKwkJaTJkX0RJU1RfUE9JTlQ7Ci0rCQlESVNUX1BPSU5UX25ldzsKLSsJCWQyaV9ESVNUX1BPSU5UOwotKwkJRElTVF9QT0lOVF9mcmVlOwotKwkJaTJkX0RJU1RfUE9JTlRfTkFNRTsKLSsJCURJU1RfUE9JTlRfTkFNRV9uZXc7Ci0rCQlESVNUX1BPSU5UX05BTUVfZnJlZTsKLSsJCWQyaV9ESVNUX1BPSU5UX05BTUU7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX3VjaGFyOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOwotKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfVFlQRTsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0VYVEVOU0lPTjsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X05BTUVfRU5UUlk7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKLSsJCVg1MDlWM19FWFRfaTJkOwotKwkJWDUwOVYzX0VYVF92YWxfcHJuOwotKwkJWDUwOVYzX0VYVF9hZGRfbGlzdDsKLSsJCUVWUF9DSVBIRVJfdHlwZTsKLSsJCUVWUF9QQkVfQ2lwaGVySW5pdDsKLSsJCVg1MDlWM19hZGRfdmFsdWVfYm9vbF9uZjsKLSsJCWQyaV9BU04xX1VJTlRFR0VSOwotKwkJc2tfdmFsdWU7Ci0rCQlza19udW07Ci0rCQlza19zZXQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9SRVZPS0VEOwotKwkJc2tfc29ydDsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BTEdPUjsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0NSTDsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0FMR09SOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQ1JMOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1NJR05FUl9JTkZPOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1JFQ0lQX0lORk87Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCVBLQ1M1X1BCRV9hZGQ7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M4OwotKwkJaTJkX1BLQ1M4X2ZwOwotKwkJUEVNX3JlYWRfYmlvX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fcmVhZF9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKLSsJCWQyaV9QS0NTOF9iaW87Ci0rCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19mcDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV93cml0ZV9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX1BLQ1M4OwotKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOwotKwkJZDJpX1BLQ1M4X2ZwOwotKwkJUEVNX3dyaXRlX1BLQ1M4OwotKwkJUEVNX3JlYWRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX1A4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fcmVhZF9iaW9fUEtDUzg7Ci0rCQlQRU1fd3JpdGVfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV93cml0ZV9QOF9QUklWX0tFWV9JTkZPOwotKwkJUEtDUzVfUEJFX2tleWl2Z2VuOwotKwkJaTJkX1BLQ1M4X2JpbzsKLSsJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOwotKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOwotKwkJQklPX3NfYmlvOwotKwkJUEtDUzVfcGJlMl9zZXQ7Ci0rCQlQS0NTNV9QQktERjJfSE1BQ19TSEExOwotKwkJUEtDUzVfdjJfUEJFX2tleWl2Z2VuOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5OwotKwkJQklPX2N0cmxfZ2V0X3JlYWRfcmVxdWVzdDsKLSsJCUJJT19jdHJsX3BlbmRpbmc7Ci0rCQlCSU9fY3RybF93cGVuZGluZzsKLSsJCUJJT19uZXdfYmlvX3BhaXI7Ci0rCQlCSU9fY3RybF9nZXRfd3JpdGVfZ3VhcmFudGVlOwotKwkJQ1JZUFRPX251bV9sb2NrczsKLSsJCUNPTkZfbG9hZF9iaW87Ci0rCQlDT05GX2xvYWRfZnA7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7Ci0rCQlQS0NTN19zaWduYXR1cmVWZXJpZnk7Ci0rCQlSU0Ffc2V0X21ldGhvZDsKLSsJCVJTQV9nZXRfbWV0aG9kOwotKwkJUlNBX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCVJTQV9jaGVja19rZXk7Ci0rCQlPQkpfb2JqMnR4dDsKLSsJCURTQV9kdXBfREg7Ci0rCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uczsKLSsJCVg1MDlfUkVRX3NldF9leHRlbnNpb25fbmlkczsKLSsJCUJJT19ud3JpdGU7Ci0rCQlYNTA5X1JFUV9leHRlbnNpb25fbmlkOwotKwkJQklPX25yZWFkOwotKwkJWDUwOV9SRVFfZ2V0X2V4dGVuc2lvbl9uaWRzOwotKwkJQklPX253cml0ZTA7Ci0rCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uc19uaWQ7Ci0rCQlCSU9fbnJlYWQwOwotKwkJWDUwOV9SRVFfYWRkX2V4dGVuc2lvbnM7Ci0rCQlCSU9fbmV3X21lbV9idWY7Ci0rCQlESF9zZXRfZXhfZGF0YTsKLSsJCURIX3NldF9tZXRob2Q7Ci0rCQlEU0FfT3BlblNTTDsKLSsJCURIX2dldF9leF9kYXRhOwotKwkJREhfZ2V0X2V4X25ld19pbmRleDsKLSsJCURTQV9uZXdfbWV0aG9kOwotKwkJREhfbmV3X21ldGhvZDsKLSsJCURIX09wZW5TU0w7Ci0rCQlEU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCURIX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTQV9zZXRfZXhfZGF0YTsKLSsJCURIX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTQV9nZXRfZXhfZGF0YTsKLSsJCVg1MDlWM19FWFRfUkVRX2FkZF9jb25mOwotKwkJTkVUU0NBUEVfU1BLSV9wcmludDsKLSsJCU5FVFNDQVBFX1NQS0lfc2V0X3B1YmtleTsKLSsJCU5FVFNDQVBFX1NQS0lfYjY0X2VuY29kZTsKLSsJCU5FVFNDQVBFX1NQS0lfZ2V0X3B1YmtleTsKLSsJCU5FVFNDQVBFX1NQS0lfYjY0X2RlY29kZTsKLSsJCVVURjhfcHV0YzsKLSsJCVVURjhfZ2V0YzsKLSsJCVJTQV9udWxsX21ldGhvZDsKLSsJCUFTTjFfdGFnMnN0cjsKLSsJCUJJT19jdHJsX3Jlc2V0X3JlYWRfcmVxdWVzdDsKLSsJCURJU1BMQVlURVhUX25ldzsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX2ZyZWU7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9kMmk7Ci0rCQlYNTA5X3NldF9leF9kYXRhOwotKwkJWDUwOV9yZWplY3Rfc2V0X2JpdF9hc2M7Ci0rCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X3R4dDsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfTklEOwotKwkJWDUwOV9QVVJQT1NFX2dldDA7Ci0rCQlQRU1fcmVhZF9YNTA5X0FVWDsKLSsJCWQyaV9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7Ci0rCQlQRU1fd3JpdGVfUFVCS0VZOwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX25ldzsKLSsJCVg1MDlfQ0VSVF9BVVhfZnJlZTsKLSsJCWQyaV9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlYNTA5X3RydXN0X2NsZWFyOwotKwkJWDUwOV9UUlVTVF9hZGQ7Ci0rCQlBU04xX1ZJU0lCTEVTVFJJTkdfbmV3OwotKwkJWDUwOV9hbGlhc19zZXQxOwotKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfZnJlZTsKLSsJCUVWUF9QS0VZX2dldDFfRFNBOwotKwkJQVNOMV9CTVBTVFJJTkdfbmV3OwotKwkJQVNOMV9tYnN0cmluZ19jb3B5OwotKwkJQVNOMV9VVEY4U1RSSU5HX25ldzsKLSsJCURTQV9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJQVNOMV9UNjFTVFJJTkdfZnJlZTsKLSsJCURTQV9zZXRfbWV0aG9kOwotKwkJWDUwOV9nZXRfZXhfZGF0YTsKLSsJCUFTTjFfU1RSSU5HX3R5cGU7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X3NuYW1lOwotKwkJQVNOMV9USU1FX2ZyZWU7Ci0rCQlBU04xX09DVEVUX1NUUklOR19jbXA7Ci0rCQlBU04xX0JJVF9TVFJJTkdfbmV3OwotKwkJWDUwOV9nZXRfZXh0X2QyaTsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X0FVWDsKLSsJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2tfYXNjOwotKwkJQVNOMV9TVFJJTkdfc2V0X2RlZl9tYXNrX2FzYzsKLSsJCVBFTV93cml0ZV9iaW9fUlNBX1BVQktFWTsKLSsJCUFTTjFfSU5URUdFUl9jbXA7Ci0rCQlkMmlfUlNBX1BVQktFWV9mcDsKLSsJCVg1MDlfdHJ1c3Rfc2V0X2JpdF9hc2M7Ci0rCQlQRU1fd3JpdGVfYmlvX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1NUT1JFX0NUWF9mcmVlOwotKwkJRVZQX1BLRVlfc2V0MV9EU0E7Ci0rCQlpMmRfRFNBX1BVQktFWV9mcDsKLSsJCVg1MDlfbG9hZF9jZXJ0X2NybF9maWxlOwotKwkJQVNOMV9USU1FX25ldzsKLSsJCWkyZF9SU0FfUFVCS0VZOwotKwkJWDUwOV9TVE9SRV9DVFhfcHVycG9zZV9pbmhlcml0OwotKwkJUEVNX3JlYWRfUlNBX1BVQktFWTsKLSsJCWQyaV9YNTA5X0FVWDsKLSsJCWkyZF9EU0FfUFVCS0VZOwotKwkJWDUwOV9DRVJUX0FVWF9wcmludDsKLSsJCVBFTV9yZWFkX0RTQV9QVUJLRVk7Ci0rCQlpMmRfUlNBX1BVQktFWV9iaW87Ci0rCQlBU04xX0JJVF9TVFJJTkdfbnVtX2FzYzsKLSsJCWkyZF9QVUJLRVk7Ci0rCQlBU04xX1VUQ1RJTUVfZnJlZTsKLSsJCURTQV9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X2lkOwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2ZyZWU7Ci0rCQlQRU1fcmVhZF9iaW9fUFVCS0VZOwotKwkJQVNOMV9TVFJJTkdfc2V0X2J5X05JRDsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfaWQ7Ci0rCQlESVNQTEFZVEVYVF9mcmVlOwotKwkJT1RIRVJOQU1FX25ldzsKLSsJCVg1MDlfQ0VSVF9BVVhfbmV3OwotKwkJWDUwOV9UUlVTVF9jbGVhbnVwOwotKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9PQko7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2QyaTsKLSsJCVg1MDlfUFVSUE9TRV9nZXQwX25hbWU7Ci0rCQlQRU1fcmVhZF9QVUJLRVk7Ci0rCQlpMmRfRFNBX1BVQktFWV9iaW87Ci0rCQlpMmRfT1RIRVJOQU1FOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZTsKLSsJCUFTTjFfQklUX1NUUklOR19zZXRfYXNjOwotKwkJWDUwOV9nZXRfZXhfbmV3X2luZGV4OwotKwkJQVNOMV9TVFJJTkdfVEFCTEVfY2xlYW51cDsKLSsJCVg1MDlfVFJVU1RfZ2V0X2J5X2lkOwotKwkJWDUwOV9QVVJQT1NFX2dldF90cnVzdDsKLSsJCUFTTjFfU1RSSU5HX2xlbmd0aDsKLSsJCWQyaV9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlBU04xX1BSSU5UQUJMRVNUUklOR19uZXc7Ci0rCQlYNTA5VjNfZ2V0X2QyaTsKLSsJCUFTTjFfRU5VTUVSQVRFRF9mcmVlOwotKwkJaTJkX1g1MDlfQ0VSVF9BVVg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfdHJ1c3Q7Ci0rCQlBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrOwotKwkJWDUwOV9TVE9SRV9DVFhfbmV3OwotKwkJRVZQX1BLRVlfZ2V0MV9SU0E7Ci0rCQlESVJFQ1RPUllTVFJJTkdfZnJlZTsKLSsJCVBFTV93cml0ZV9YNTA5X0FVWDsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX3NldDsKLSsJCWQyaV9EU0FfUFVCS0VZX2ZwOwotKwkJZDJpX1JTQV9QVUJLRVk7Ci0rCQlYNTA5X1RSVVNUX2dldDBfbmFtZTsKLSsJCVg1MDlfVFJVU1RfZ2V0MDsKLSsJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19mcmVlOwotKwkJQVNOMV9JQTVTVFJJTkdfbmV3OwotKwkJZDJpX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X2NoZWNrX3B1cnBvc2U7Ci0rCQlBU04xX0VOVU1FUkFURURfbmV3OwotKwkJZDJpX1JTQV9QVUJLRVlfYmlvOwotKwkJZDJpX1BVQktFWTsKLSsJCVg1MDlfVFJVU1RfZ2V0X3RydXN0OwotKwkJWDUwOV9UUlVTVF9nZXRfZmxhZ3M7Ci0rCQlBU04xX0JNUFNUUklOR19mcmVlOwotKwkJQVNOMV9UNjFTVFJJTkdfbmV3OwotKwkJQVNOMV9VVENUSU1FX25ldzsKLSsJCWkyZF9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7Ci0rCQlFVlBfUEtFWV9zZXQxX1JTQTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9wdXJwb3NlOwotKwkJQVNOMV9JQTVTVFJJTkdfZnJlZTsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9BVVg7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2NvdW50OwotKwkJQ1JZUFRPX2FkZF9pbmZvOwotKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV90eHQ7Ci0rCQlBU04xX1NUUklOR19nZXRfZGVmYXVsdF9tYXNrOwotKwkJWDUwOV9hbGlhc19nZXQwOwotKwkJQVNOMV9TVFJJTkdfZGF0YTsKLSsJCWkyZF9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlYNTA5X3RydXN0X3NldF9iaXQ7Ci0rCQlBU04xX0JJVF9TVFJJTkdfZnJlZTsKLSsJCVBFTV9yZWFkX2Jpb19SU0FfUFVCS0VZOwotKwkJWDUwOV9hZGQxX3JlamVjdF9vYmplY3Q7Ci0rCQlYNTA5X2NoZWNrX3RydXN0OwotKwkJUEVNX3JlYWRfYmlvX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1BVUlBPU0VfYWRkOwotKwkJQVNOMV9TVFJJTkdfVEFCTEVfZ2V0OwotKwkJQVNOMV9VVEY4U1RSSU5HX2ZyZWU7Ci0rCQlkMmlfRFNBX1BVQktFWV9iaW87Ci0rCQlQRU1fd3JpdGVfUlNBX1BVQktFWTsKLSsJCWQyaV9PVEhFUk5BTUU7Ci0rCQlYNTA5X3JlamVjdF9zZXRfYml0OwotKwkJUEVNX3dyaXRlX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0MF9zbmFtZTsKLSsJCUVWUF9QS0VZX3NldDFfREg7Ci0rCQlBU04xX09DVEVUX1NUUklOR19kdXA7Ci0rCQlBU04xX0JJVF9TVFJJTkdfc2V0OwotKwkJWDUwOV9UUlVTVF9nZXRfY291bnQ7Ci0rCQlBU04xX0lOVEVHRVJfZnJlZTsKLSsJCU9USEVSTkFNRV9mcmVlOwotKwkJaTJkX1JTQV9QVUJLRVlfZnA7Ci0rCQlBU04xX0lOVEVHRVJfZHVwOwotKwkJZDJpX1g1MDlfQ0VSVF9BVVg7Ci0rCQlQRU1fd3JpdGVfYmlvX1BVQktFWTsKLSsJCUFTTjFfVklTSUJMRVNUUklOR19mcmVlOwotKwkJWDUwOV9QVVJQT1NFX2NsZWFudXA7Ci0rCQlBU04xX21ic3RyaW5nX25jb3B5OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfbmV3OwotKwkJRVZQX1BLRVlfZ2V0MV9ESDsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX25ldzsKLSsJCUFTTjFfSU5URUdFUl9uZXc7Ci0rCQlpMmRfWDUwOV9BVVg7Ci0rCQlBU04xX0JJVF9TVFJJTkdfbmFtZV9wcmludDsKLSsJCVg1MDlfY21wOwotKwkJQVNOMV9TVFJJTkdfbGVuZ3RoX3NldDsKLSsJCURJUkVDVE9SWVNUUklOR19uZXc7Ci0rCQlYNTA5X2FkZDFfdHJ1c3Rfb2JqZWN0OwotKwkJUEtDUzEyX25ld3Bhc3M7Ci0rCQlTTUlNRV93cml0ZV9QS0NTNzsKLSsJCVNNSU1FX3JlYWRfUEtDUzc7Ci0rCQlERVNfc2V0X2tleV9jaGVja2VkOwotKwkJUEtDUzdfdmVyaWZ5OwotKwkJUEtDUzdfZW5jcnlwdDsKLSsJCURFU19zZXRfa2V5X3VuY2hlY2tlZDsKLSsJCVNNSU1FX2NybGZfY29weTsKLSsJCWkyZF9BU04xX1BSSU5UQUJMRVNUUklORzsKLSsJCVBLQ1M3X2dldDBfc2lnbmVyczsKLSsJCVBLQ1M3X2RlY3J5cHQ7Ci0rCQlTTUlNRV90ZXh0OwotKwkJUEtDUzdfc2ltcGxlX3NtaW1lY2FwOwotKwkJUEtDUzdfZ2V0X3NtaW1lY2FwOwotKwkJUEtDUzdfc2lnbjsKLSsJCVBLQ1M3X2FkZF9hdHRyaWJfc21pbWVjYXA7Ci0rCQlDUllQVE9fZGJnX3NldF9vcHRpb25zOwotKwkJQ1JZUFRPX3JlbW92ZV9hbGxfaW5mbzsKLSsJCUNSWVBUT19nZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19pc19tZW1fY2hlY2tfb247Ci0rCQlDUllQVE9fc2V0X21lbV9kZWJ1Z19mdW5jdGlvbnM7Ci0rCQlDUllQVE9fcG9wX2luZm87Ci0rCQlDUllQVE9fcHVzaF9pbmZvXzsKLSsJCUNSWVBUT19zZXRfbWVtX2RlYnVnX29wdGlvbnM7Ci0rCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2YXRlS2V5X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2S2V5X25pZDsKLSsJCWQyaV9QS0NTOFByaXZhdGVLZXlfYmlvOwotKwkJQVNOMV9OVUxMX2ZyZWU7Ci0rCQlkMmlfQVNOMV9OVUxMOwotKwkJQVNOMV9OVUxMX25ldzsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlfYmlvOwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9BU04xX05VTEw7Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9mcDsKLSsJCWQyaV9QS0NTOFByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9iaW87Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5SW5mb19mcDsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2JpbzsKLSsJCVBFTV9jYjsKLSsJCWkyZF9Qcml2YXRlS2V5X2ZwOwotKwkJZDJpX1ByaXZhdGVLZXlfYmlvOwotKwkJZDJpX1ByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUHJpdmF0ZUtleV9iaW87Ci0rCQlYNTA5X3JlamVjdF9jbGVhcjsKLSsJCVg1MDlfVFJVU1Rfc2V0X2RlZmF1bHQ7Ci0rCQlkMmlfQXV0b1ByaXZhdGVLZXk7Ci0rCQlYNTA5X0FUVFJJQlVURV9nZXQwX3R5cGU7Ci0rCQlYNTA5X0FUVFJJQlVURV9zZXQxX2RhdGE7Ci0rCQlYNTA5YXRfZ2V0X2F0dHI7Ci0rCQlYNTA5YXRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9BVFRSSUJVVEVfc2V0MV9vYmplY3Q7Ci0rCQlYNTA5X0FUVFJJQlVURV9jb3VudDsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9PQko7Ci0rCQlYNTA5X0FUVFJJQlVURV9nZXQwX29iamVjdDsKLSsJCVg1MDlhdF9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyOwotKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF9kYXRhOwotKwkJWDUwOWF0X2RlbGV0ZV9hdHRyOwotKwkJWDUwOWF0X2dldF9hdHRyX2J5X09CSjsKLSsJCVJBTkRfYWRkOwotKwkJQklPX251bWJlcl93cml0dGVuOwotKwkJQklPX251bWJlcl9yZWFkOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9jaGFpbjsKLSsJCUVSUl9sb2FkX1JBTkRfc3RyaW5nczsKLSsJCVJBTkRfcHNldWRvX2J5dGVzOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfTklEOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHI7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfTklEOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfT0JKOwotKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfT0JKOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfY291bnQ7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHI7Ci0rCQlYNTA5X1JFUV9kZWxldGVfYXR0cjsKLSsJCVg1MDlhdF9hZGQxX2F0dHJfYnlfT0JKOwotKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV90eHQ7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCUJOX3BzZXVkb19yYW5kOwotKwkJQk5faXNfcHJpbWVfZmFzdHRlc3Q7Ci0rCQlCTl9DVFhfZW5kOwotKwkJQk5fQ1RYX3N0YXJ0OwotKwkJQk5fQ1RYX2dldDsKLSsJCUVWUF9QS0VZMlBLQ1M4X2Jyb2tlbjsKLSsJCUFTTjFfU1RSSU5HX1RBQkxFX2FkZDsKLSsJCUNSWVBUT19kYmdfZ2V0X29wdGlvbnM7Ci0rCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfbmV3OwotKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfb3B0aW9uczsKLSsJCURFU19jcnlwdDsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVFfTkVXOwotKwkJUEVNX3dyaXRlX1g1MDlfUkVRX05FVzsKLSsJCUJJT19jYWxsYmFja19jdHJsOwotKwkJUkFORF9lZ2Q7Ci0rCQlSQU5EX3N0YXR1czsKLSsJCWJuX2R1bXAxOwotKwkJREVTX2NoZWNrX2tleV9wYXJpdHk7Ci0rCQlsaF9udW1faXRlbXM7Ci0rCQlSQU5EX2V2ZW50OwotKwkJRFNPX25ldzsKLSsJCURTT19uZXdfbWV0aG9kOwotKwkJRFNPX2ZyZWU7Ci0rCQlEU09fZmxhZ3M7Ci0rCQlEU09fdXA7Ci0rCQlEU09fc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNPX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTT19nZXRfbWV0aG9kOwotKwkJRFNPX3NldF9tZXRob2Q7Ci0rCQlEU09fbG9hZDsKLSsJCURTT19iaW5kX3ZhcjsKLSsJCURTT19NRVRIT0RfbnVsbDsKLSsJCURTT19NRVRIT0Rfb3BlbnNzbDsKLSsJCURTT19NRVRIT0RfZGxmY247Ci0rCQlEU09fTUVUSE9EX3dpbjMyOwotKwkJRVJSX2xvYWRfRFNPX3N0cmluZ3M7Ci0rCQlEU09fTUVUSE9EX2RsOwotKwkJTkNPTkZfbG9hZDsKLSsJCU5DT05GX2xvYWRfZnA7Ci0rCQlOQ09ORl9uZXc7Ci0rCQlOQ09ORl9nZXRfc3RyaW5nOwotKwkJTkNPTkZfZnJlZTsKLSsJCU5DT05GX2dldF9udW1iZXI7Ci0rCQlDT05GX2R1bXBfZnA7Ci0rCQlOQ09ORl9sb2FkX2JpbzsKLSsJCU5DT05GX2R1bXBfZnA7Ci0rCQlOQ09ORl9nZXRfc2VjdGlvbjsKLSsJCU5DT05GX2R1bXBfYmlvOwotKwkJQ09ORl9kdW1wX2JpbzsKLSsJCU5DT05GX2ZyZWVfZGF0YTsKLSsJCUNPTkZfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRVJSX2Vycm9yX3N0cmluZ19uOwotKwkJQklPX3NucHJpbnRmOwotKwkJRFNPX2N0cmw7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3OwotKwkJQklPX3ZmcmVlOwotKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfSU5URUdFUjsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTMTJfU0FGRUJBRzsKLSsJCUFTTjFfVVRDVElNRV9nZXQ7Ci0rCQlYNTA5X1JFUV9kaWdlc3Q7Ci0rCQlYNTA5X0NSTF9kaWdlc3Q7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzc7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aDsKLSsJCUVWUF9DSVBIRVJfQ1RYX2N0cmw7Ci0rCQlCTl9tb2RfZXhwX21vbnRfd29yZDsKLSsJCVJBTkRfZWdkX2J5dGVzOwotKwkJWDUwOV9SRVFfZ2V0MV9lbWFpbDsKLSsJCVg1MDlfZ2V0MV9lbWFpbDsKLSsJCVg1MDlfZW1haWxfZnJlZTsKLSsJCWkyZF9SU0FfTkVUOwotKwkJZDJpX1JTQV9ORVRfMjsKLSsJCWQyaV9SU0FfTkVUOwotKwkJRFNPX2JpbmRfZnVuYzsKLSsJCUNSWVBUT19nZXRfbmV3X2R5bmxvY2tpZDsKLSsJCXNrX25ld19udWxsOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKLSsJCUNSWVBUT19kZXN0cm95X2R5bmxvY2tpZDsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19zaXplOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19jcmVhdGVfY2I7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NiOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYjsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19kZXN0cm95X2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2I7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfdmFsdWU7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2NyZWF0ZV9jYjsKLSsJCWMyaV9BU04xX0JJVF9TVFJJTkc7Ci0rCQlpMmNfQVNOMV9CSVRfU1RSSU5HOwotKwkJUkFORF9wb2xsOwotKwkJYzJpX0FTTjFfSU5URUdFUjsKLSsJCWkyY19BU04xX0lOVEVHRVI7Ci0rCQlCSU9fZHVtcF9pbmRlbnQ7Ci0rCQlBU04xX3BhcnNlX2R1bXA7Ci0rCQljMmlfQVNOMV9PQkpFQ1Q7Ci0rCQlYNTA5X05BTUVfcHJpbnRfZXhfZnA7Ci0rCQlBU04xX1NUUklOR19wcmludF9leF9mcDsKLSsJCVg1MDlfTkFNRV9wcmludF9leDsKLSsJCUFTTjFfU1RSSU5HX3ByaW50X2V4OwotKwkJTUQ0OwotKwkJTUQ0X1RyYW5zZm9ybTsKLSsJCU1ENF9GaW5hbDsKLSsJCU1ENF9VcGRhdGU7Ci0rCQlNRDRfSW5pdDsKLSsJCUVWUF9tZDQ7Ci0rCQlpMmRfUFVCS0VZX2JpbzsKLSsJCWkyZF9QVUJLRVlfZnA7Ci0rCQlkMmlfUFVCS0VZX2JpbzsKLSsJCUFTTjFfU1RSSU5HX3RvX1VURjg7Ci0rCQlCSU9fdnByaW50ZjsKLSsJCUJJT192c25wcmludGY7Ci0rCQlkMmlfUFVCS0VZX2ZwOwotKwkJWDUwOV9jbXBfdGltZTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF90aW1lOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9pc3N1ZXI7Ci0rCQlYNTA5X09CSkVDVF9yZXRyaWV2ZV9tYXRjaDsKLSsJCVg1MDlfT0JKRUNUX2lkeF9ieV9zdWJqZWN0OwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2ZsYWdzOwotKwkJWDUwOV9TVE9SRV9DVFhfdHJ1c3RlZF9zdGFjazsKLSsJCVg1MDlfdGltZV9hZGo7Ci0rCQlYNTA5X2NoZWNrX2lzc3VlZDsKLSsJCUFTTjFfVVRDVElNRV9jbXBfdGltZV90OwotKwkJREVTX3NldF93ZWFrX2tleV9mbGFnOwotKwkJREVTX2NoZWNrX2tleTsKLSsJCURFU19yd19tb2RlOwotKwkJUlNBX1BLQ1MxX1JTQXJlZjsKLSsJCVg1MDlfa2V5aWRfc2V0MTsKLSsJCUJJT19uZXh0OwotKwkJRFNPX01FVEhPRF92bXM7Ci0rCQlCSU9fZl9saW5lYnVmZmVyOwotKwkJQk5fYm50ZXN0X3JhbmQ7Ci0rCQlPUEVOU1NMX2lzc2V0dWdpZDsKLSsJCUJOX3JhbmRfcmFuZ2U7Ci0rCQlFUlJfbG9hZF9FTkdJTkVfc3RyaW5nczsKLSsJCUVOR0lORV9zZXRfRFNBOwotKwkJRU5HSU5FX2dldF9maW5pc2hfZnVuY3Rpb247Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfUlNBOwotKwkJRU5HSU5FX2dldF9CTl9tb2RfZXhwOwotKwkJRFNBX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX3NldF9ESDsKLSsJCUVOR0lORV9zZXRfZGVmX0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX2luaXQ7Ci0rCQlESF9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCVJTQV9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCUVOR0lORV9maW5pc2g7Ci0rCQlFTkdJTkVfbG9hZF9wdWJsaWNfa2V5OwotKwkJRU5HSU5FX2dldF9ESDsKLSsJCUVOR0lORV9jdHJsOwotKwkJRU5HSU5FX2dldF9pbml0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9pbml0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RTQTsKLSsJCUVOR0lORV9nZXRfbmFtZTsKLSsJCUVOR0lORV9nZXRfbGFzdDsKLSsJCUVOR0lORV9nZXRfcHJldjsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9ESDsKLSsJCUVOR0lORV9nZXRfUlNBOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0OwotKwkJRU5HSU5FX2dldF9SQU5EOwotKwkJRU5HSU5FX2dldF9maXJzdDsKLSsJCUVOR0lORV9ieV9pZDsKLSsJCUVOR0lORV9zZXRfZmluaXNoX2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9kZWZfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlSU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfc2V0X1JTQTsKLSsJCUVOR0lORV9sb2FkX3ByaXZhdGVfa2V5OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JBTkQ7Ci0rCQlFTkdJTkVfc2V0X0JOX21vZF9leHA7Ci0rCQlFTkdJTkVfcmVtb3ZlOwotKwkJRU5HSU5FX2ZyZWU7Ci0rCQlFTkdJTkVfZ2V0X0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX2dldF9uZXh0OwotKwkJRU5HSU5FX3NldF9uYW1lOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RTQTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9CTl9tb2RfZXhwOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JTQTsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9SQU5EOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0JOX21vZF9leHA7Ci0rCQlFTkdJTkVfc2V0X1JBTkQ7Ci0rCQlFTkdJTkVfc2V0X2lkOwotKwkJRU5HSU5FX3NldF9CTl9tb2RfZXhwX2NydDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9ESDsKLSsJCUVOR0lORV9uZXc7Ci0rCQlFTkdJTkVfZ2V0X2lkOwotKwkJRFNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX2FkZDsKLSsJCURIX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX2dldF9EU0E7Ci0rCQlFTkdJTkVfZ2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlCTl9wc2V1ZG9fcmFuZF9yYW5nZTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF92ZXJpZnlfY2I7Ci0rCQlFUlJfbG9hZF9DT01QX3N0cmluZ3M7Ci0rCQlQS0NTMTJfaXRlbV9kZWNyeXB0X2QyaTsKLSsJCUFTTjFfVVRGOFNUUklOR19pdDsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX2NpcGhlcnM7Ci0rCQlFTkdJTkVfZ2V0X2NpcGhlcnM7Ci0rCQlkMmlfT0NTUF9CQVNJQ1JFU1A7Ci0rCQlLUkI1X0NIRUNLU1VNX2l0OwotKwkJRUNfUE9JTlRfYWRkOwotKwkJQVNOMV9pdGVtX2V4X2kyZDsKLSsJCU9DU1BfQ0VSVElEX2l0OwotKwkJZDJpX09DU1BfUkVTUEJZVEVTOwotKwkJWDUwOVYzX2FkZDFfaTJkOwotKwkJUEtDUzdfRU5WRUxPUEVfaXQ7Ci0rCQlVSV9hZGRfaW5wdXRfYm9vbGVhbjsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX1JTQTsKLSsJCVg1MDlWM19FWFRfbmNvbmY7Ci0rCQlBU04xX0dFTkVSQUxTVFJJTkdfZnJlZTsKLSsJCWQyaV9PQ1NQX0NFUlRTVEFUVVM7Ci0rCQlYNTA5X1JFVk9LRURfc2V0X3NlcmlhbE51bWJlcjsKLSsJCVg1MDlfcHJpbnRfZXg7Ci0rCQlPQ1NQX09ORVJFUV9nZXQxX2V4dF9kMmk7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JBTkQ7Ci0rCQlFTkdJTkVfbG9hZF9keW5hbWljOwotKwkJUEJLREYyUEFSQU1faXQ7Ci0rCQlFWFRFTkRFRF9LRVlfVVNBR0VfbmV3OwotKwkJRUNfR1JPVVBfY2xlYXJfZnJlZTsKLSsJCU9DU1Bfc2VuZHJlcV9iaW87Ci0rCQlBU04xX2l0ZW1fZGlnZXN0OwotKwkJT0NTUF9CQVNJQ1JFU1BfZGVsZXRlX2V4dDsKLSsJCU9DU1BfU0lHTkFUVVJFX2l0OwotKwkJWDUwOV9DUkxfaXQ7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9hZGRfZXh0OwotKwkJS1JCNV9FTkNLRVlfaXQ7Ci0rCQlVSV9tZXRob2Rfc2V0X2Nsb3NlcjsKLSsJCVg1MDlfU1RPUkVfc2V0X3B1cnBvc2U7Ci0rCQlpMmRfQVNOMV9HRU5FUkFMU1RSSU5HOwotKwkJT0NTUF9yZXNwb25zZV9zdGF0dXM7Ci0rCQlpMmRfT0NTUF9TRVJWSUNFTE9DOwotKwkJRU5HSU5FX2dldF9kaWdlc3RfZW5naW5lOwotKwkJRUNfR1JPVVBfc2V0X2N1cnZlX0dGcDsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X09CSjsKLSsJCV9vc3NsX29sZF9kZXNfcmFuZG9tX2tleTsKLSsJCUFTTjFfVDYxU1RSSU5HX2l0OwotKwkJRUNfR1JPVVBfbWV0aG9kX29mOwotKwkJaTJkX0tSQjVfQVBSRVE7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQ7Ci0rCQlBU04xX1BSSU5UQUJMRV9uZXc7Ci0rCQlITUFDX0luaXRfZXg7Ci0rCQlkMmlfS1JCNV9BVVRIRU5UOwotKwkJT0NTUF9hcmNoaXZlX2N1dG9mZl9uZXc7Ci0rCQlFQ19QT0lOVF9zZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfc2V0X0pwcm9qX2Nvb3Jkc19HRnA7Ci0rCQlfb3NzbF9vbGRfZGVzX2lzX3dlYWtfa2V5OwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9PQko7Ci0rCQlFQ19QT0lOVF9vY3QycG9pbnQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9jb3VudDsKLSsJCVVJX2N0cmw7Ci0rCQlfc2hhZG93X0RFU19yd19tb2RlOwotKwkJYXNuMV9kb19hZGI7Ci0rCQlBU04xX3RlbXBsYXRlX2kyZDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9ESDsKLSsJCVVJX2NvbnN0cnVjdF9wcm9tcHQ7Ci0rCQlYNTA5X1NUT1JFX3NldF90cnVzdDsKLSsJCVVJX2R1cF9pbnB1dF9zdHJpbmc7Ci0rCQlkMmlfS1JCNV9BUFJFUTsKLSsJCUVWUF9NRF9DVFhfY29weV9leDsKLSsJCU9DU1BfcmVxdWVzdF9pc19zaWduZWQ7Ci0rCQlpMmRfT0NTUF9SRVFJTkZPOwotKwkJS1JCNV9FTkNLRVlfZnJlZTsKLSsJCU9DU1BfcmVzcF9nZXQwOwotKwkJR0VORVJBTF9OQU1FX2l0OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfaXQ7Ci0rCQlYNTA5X1NUT1JFX3NldF9mbGFnczsKLSsJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0ZwOwotKwkJT0NTUF9yZXNwb25zZV9zdGF0dXNfc3RyOwotKwkJZDJpX09DU1BfUkVWT0tFRElORk87Ci0rCQlPQ1NQX2Jhc2ljX2FkZDFfY2VydDsKLSsJCUVSUl9nZXRfaW1wbGVtZW50YXRpb247Ci0rCQlFVlBfQ2lwaGVyRmluYWxfZXg7Ci0rCQlPQ1NQX0NFUlRTVEFUVVNfbmV3OwotKwkJQ1JZUFRPX2NsZWFudXBfYWxsX2V4X2RhdGE7Ci0rCQlPQ1NQX3Jlc3BfZmluZDsKLSsJCUJOX25ubW9kOwotKwkJWDUwOV9DUkxfc29ydDsKLSsJCVg1MDlfUkVWT0tFRF9zZXRfcmV2b2NhdGlvbkRhdGU7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfUkFORDsKLSsJCU9DU1BfU0VSVklDRUxPQ19uZXc7Ci0rCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGcDsKLSsJCV9vc3NsX29sZF9kZXNfb3B0aW9uczsKLSsJCVNYTkVUX2l0OwotKwkJVUlfZHVwX2lucHV0X2Jvb2xlYW47Ci0rCQlQS0NTMTJfYWRkX0NTUE5hbWVfYXNjOwotKwkJRUNfUE9JTlRfaXNfYXRfaW5maW5pdHk7Ci0rCQlFTkdJTkVfbG9hZF9jcnlwdG9kZXY7Ci0rCQlEU09fY29udmVydF9maWxlbmFtZTsKLSsJCVBPTElDWVFVQUxJTkZPX2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2NpcGhlcnM7Ci0rCQlCTl9tb2RfbHNoaWZ0X3F1aWNrOwotKwkJRFNPX3NldF9maWxlbmFtZTsKLSsJCUFTTjFfaXRlbV9mcmVlOwotKwkJS1JCNV9US1RCT0RZX2ZyZWU7Ci0rCQlBVVRIT1JJVFlfS0VZSURfaXQ7Ci0rCQlLUkI1X0FQUkVRQk9EWV9uZXc7Ci0rCQlYNTA5VjNfRVhUX1JFUV9hZGRfbmNvbmY7Ci0rCQlFTkdJTkVfY3RybF9jbWRfc3RyaW5nOwotKwkJaTJkX09DU1BfUkVTUERBVEE7Ci0rCQlFVlBfTURfQ1RYX2luaXQ7Ci0rCQlFWFRFTkRFRF9LRVlfVVNBR0VfZnJlZTsKLSsJCVBLQ1M3X0FUVFJfU0lHTl9pdDsKLSsJCVVJX2FkZF9lcnJvcl9zdHJpbmc7Ci0rCQlLUkI1X0NIRUNLU1VNX2ZyZWU7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dDsKLSsJCUVOR0lORV9sb2FkX3Vic2VjOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9kaWdlc3RzOwotKwkJUEtFWV9VU0FHRV9QRVJJT0RfaXQ7Ci0rCQlQS0NTMTJfdW5wYWNrX2F1dGhzYWZlczsKLSsJCUFTTjFfaXRlbV91bnBhY2s7Ci0rCQlORVRTQ0FQRV9TUEtBQ19pdDsKLSsJCVg1MDlfUkVWT0tFRF9pdDsKLSsJCUFTTjFfU1RSSU5HX2VuY29kZTsKLSsJCUVWUF9hZXNfMTI4X2VjYjsKLSsJCUtSQjVfQVVUSEVOVF9mcmVlOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfY3JpdDsKLSsJCU9DU1BfY2VydF9zdGF0dXNfc3RyOwotKwkJZDJpX09DU1BfUkVRVUVTVDsKLSsJCVVJX2R1cF9pbmZvX3N0cmluZzsKLSsJCV9vc3NsX29sZF9kZXNfeHdoaXRlX2luMm91dDsKLSsJCVBLQ1MxMl9pdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdDsKLSsJCU9DU1BfQ0VSVFNUQVRVU19mcmVlOwotKwkJX29zc2xfb2xkX2Rlc19jcnlwdDsKLSsJCUFTTjFfaXRlbV9pMmQ7Ci0rCQlFVlBfRGVjcnlwdEZpbmFsX2V4OwotKwkJRU5HSU5FX2xvYWRfb3BlbnNzbDsKLSsJCUVOR0lORV9nZXRfY21kX2RlZm5zOwotKwkJRU5HSU5FX3NldF9sb2FkX3ByaXZrZXlfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mbjsKLSsJCUVWUF9FbmNyeXB0RmluYWxfZXg7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfZGlnZXN0czsKLSsJCVg1MDlfZ2V0MF9wdWJrZXlfYml0c3RyOwotKwkJYXNuMV9leF9pMmM7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfUlNBOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfRFNBOwotKwkJX29zc2xfb2xkX2Rlc19rZXlfc2NoZWQ7Ci0rCQlYNTA5X0VYVEVOU0lPTl9pdDsKLSsJCWkyZF9LUkI1X0FVVEhFTlQ7Ci0rCQlTWE5FVElEX2l0OwotKwkJZDJpX09DU1BfU0lOR0xFUkVTUDsKLSsJCUVESVBBUlRZTkFNRV9uZXc7Ci0rCQlQS0NTMTJfY2VydGJhZzJ4NTA5OwotKwkJX29zc2xfb2xkX2Rlc19vZmI2NF9lbmNyeXB0OwotKwkJZDJpX0VYVEVOREVEX0tFWV9VU0FHRTsKLSsJCUVSUl9wcmludF9lcnJvcnNfY2I7Ci0rCQlFTkdJTkVfc2V0X2NpcGhlcnM7Ci0rCQlkMmlfS1JCNV9BUFJFUUJPRFk7Ci0rCQlVSV9tZXRob2RfZ2V0X2ZsdXNoZXI7Ci0rCQlYNTA5X1BVQktFWV9pdDsKLSsJCV9vc3NsX29sZF9kZXNfZW5jX3JlYWQ7Ci0rCQlQS0NTN19FTkNSWVBUX2l0OwotKwkJaTJkX09DU1BfUkVTUE9OU0U7Ci0rCQlFQ19HUk9VUF9nZXRfY29mYWN0b3I7Ci0rCQlQS0NTMTJfdW5wYWNrX3A3ZGF0YTsKLSsJCWQyaV9LUkI1X0FVVEhEQVRBOwotKwkJT0NTUF9jb3B5X25vbmNlOwotKwkJS1JCNV9BVVRIREFUQV9uZXc7Ci0rCQlPQ1NQX1JFU1BEQVRBX25ldzsKLSsJCUVDX0dGcF9tb250X21ldGhvZDsKLSsJCU9DU1BfUkVWT0tFRElORk9fZnJlZTsKLSsJCVVJX2dldF9leF9kYXRhOwotKwkJS1JCNV9BUFJFUUJPRFlfZnJlZTsKLSsJCUVDX0dST1VQX2dldDBfZ2VuZXJhdG9yOwotKwkJVUlfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJWDUwOVYzX3NldF9uY29uZjsKLSsJCVBLQ1MxMl9pdGVtX2kyZF9lbmNyeXB0OwotKwkJWDUwOV9hZGQxX2V4dF9pMmQ7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19pdDsKLSsJCUtSQjVfUFJJTkNOQU1FX25ldzsKLSsJCVBLQ1MxMl9TQUZFQkFHX2l0OwotKwkJRUNfR1JPVVBfZ2V0X29yZGVyOwotKwkJZDJpX09DU1BfUkVTUElEOwotKwkJT0NTUF9yZXF1ZXN0X3ZlcmlmeTsKLSsJCU5DT05GX2dldF9udW1iZXJfZTsKLSsJCV9vc3NsX29sZF9kZXNfZGVjcnlwdDM7Ci0rCQlYNTA5X3NpZ25hdHVyZV9wcmludDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9mcmVlOwotKwkJRU5HSU5FX2xvYWRfYnVpbHRpbl9lbmdpbmVzOwotKwkJaTJkX09DU1BfT05FUkVROwotKwkJT0NTUF9SRVFVRVNUX2FkZF9leHQ7Ci0rCQlPQ1NQX1JFU1BCWVRFU19uZXc7Ci0rCQlFVlBfTURfQ1RYX2NyZWF0ZTsKLSsJCU9DU1BfcmVzcF9maW5kX3N0YXR1czsKLSsJCVg1MDlfQUxHT1JfaXQ7Ci0rCQlBU04xX1RJTUVfaXQ7Ci0rCQlPQ1NQX3JlcXVlc3Rfc2V0MV9uYW1lOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9jb3VudDsKLSsJCVVJX2dldDBfcmVzdWx0OwotKwkJUEtDUzEyX0FVVEhTQUZFU19pdDsKLSsJCUVWUF9hZXNfMjU2X2VjYjsKLSsJCVBLQ1MxMl9wYWNrX2F1dGhzYWZlczsKLSsJCUFTTjFfSUE1U1RSSU5HX2l0OwotKwkJVUlfZ2V0X2lucHV0X2ZsYWdzOwotKwkJRUNfR1JPVVBfc2V0X2dlbmVyYXRvcjsKLSsJCV9vc3NsX29sZF9kZXNfc3RyaW5nX3RvXzJrZXlzOwotKwkJT0NTUF9DRVJUSURfZnJlZTsKLSsJCVg1MDlfQ0VSVF9BVVhfaXQ7Ci0rCQlDRVJUSUZJQ0FURVBPTElDSUVTX2l0OwotKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NiY19lbmNyeXB0OwotKwkJUkFORF9zZXRfcmFuZF9lbmdpbmU7Ci0rCQlEU09fZ2V0X2xvYWRlZF9maWxlbmFtZTsKLSsJCVg1MDlfQVRUUklCVVRFX2l0OwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlQS0NTMTJfZGVjcnlwdF9za2V5OwotKwkJS1JCNV9BVVRIRU5UX2l0OwotKwkJVUlfZHVwX2Vycm9yX3N0cmluZzsKLSsJCVJTQVB1YmxpY0tleV9pdDsKLSsJCWkyZF9PQ1NQX1JFUVVFU1Q7Ci0rCQlQS0NTMTJfeDUwOWNybDJjZXJ0YmFnOwotKwkJT0NTUF9TRVJWSUNFTE9DX2l0OwotKwkJQVNOMV9pdGVtX3NpZ247Ci0rCQlYNTA5X0NSTF9zZXRfaXNzdWVyX25hbWU7Ci0rCQlPQkpfTkFNRV9kb19hbGxfc29ydGVkOwotKwkJaTJkX09DU1BfQkFTSUNSRVNQOwotKwkJaTJkX09DU1BfUkVTUEJZVEVTOwotKwkJUEtDUzEyX3VucGFja19wN2VuY2RhdGE7Ci0rCQlITUFDX0NUWF9pbml0OwotKwkJRU5HSU5FX2dldF9kaWdlc3Q7Ci0rCQlPQ1NQX1JFU1BPTlNFX3ByaW50OwotKwkJS1JCNV9US1RCT0RZX2l0OwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2l0OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfaXQ7Ci0rCQlQQkUyUEFSQU1faXQ7Ci0rCQlQS0NTMTJfY2VydGJhZzJ4NTA5Y3JsOwotKwkJUEtDUzdfU0lHTkVEX2l0OwotKwkJRU5HSU5FX2dldF9jaXBoZXI7Ci0rCQlpMmRfT0NTUF9DUkxJRDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9uZXc7Ci0rCQlFTkdJTkVfY21kX2lzX2V4ZWN1dGFibGU7Ci0rCQlSU0FfdXBfcmVmOwotKwkJQVNOMV9HRU5FUkFMU1RSSU5HX2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX0RTQTsKLSsJCVg1MDlWM19FWFRfYWRkX25jb25mX3NrOwotKwkJRU5HSU5FX3NldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKLSsJCVBLQ1M4X2RlY3J5cHQ7Ci0rCQlQRU1fYnl0ZXNfcmVhZF9iaW87Ci0rCQlESVJFQ1RPUllTVFJJTkdfaXQ7Ci0rCQlkMmlfT0NTUF9DUkxJRDsKLSsJCUVDX1BPSU5UX2lzX29uX2N1cnZlOwotKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmN0aW9uczsKLSsJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9leF9mdW5jczsKLSsJCWQyaV9LUkI1X0NIRUNLU1VNOwotKwkJQVNOMV9pdGVtX2R1cDsKLSsJCVg1MDlfaXQ7Ci0rCQlCTl9tb2RfYWRkOwotKwkJS1JCNV9BVVRIREFUQV9mcmVlOwotKwkJX29zc2xfb2xkX2Rlc19jYmNfY2tzdW07Ci0rCQlBU04xX2l0ZW1fdmVyaWZ5OwotKwkJQ1JZUFRPX3NldF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJRUNfUE9JTlRfZ2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX2dldF9KcHJval9jb29yZHNfR0ZwOwotKwkJWkxPTkdfaXQ7Ci0rCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOwotKwkJQVNOMV9USU1FX2NoZWNrOwotKwkJVUlfZ2V0MF91c2VyX2RhdGE7Ci0rCQlITUFDX0NUWF9jbGVhbnVwOwotKwkJRFNBX3VwX3JlZjsKLSsJCV9vc3NsX29sZF9kZXNfZWRlM19jZmI2NF9lbmNyeXB0OwotKwkJX29zc2xfb2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7Ci0rCQlBU04xX0JNUFNUUklOR19pdDsKLSsJCUFTTjFfdGFnMmJpdDsKLSsJCVVJX21ldGhvZF9zZXRfZmx1c2hlcjsKLSsJCVg1MDlfb2NzcGlkX3ByaW50OwotKwkJS1JCNV9FTkNEQVRBX2l0OwotKwkJRU5HSU5FX2dldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKLSsJCVVJX2FkZF91c2VyX2RhdGE7Ci0rCQlPQ1NQX1JFUVVFU1RfZGVsZXRlX2V4dDsKLSsJCVVJX2dldF9tZXRob2Q7Ci0rCQlPQ1NQX09ORVJFUV9mcmVlOwotKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfaXQ7Ci0rCQlYNTA5X0NSTF9zZXRfbmV4dFVwZGF0ZTsKLSsJCU9DU1BfUkVRVUVTVF9pdDsKLSsJCU9DU1BfQkFTSUNSRVNQX2l0OwotKwkJQUVTX2VjYl9lbmNyeXB0OwotKwkJQk5fbW9kX3NxcjsKLSsJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfaXQ7Ci0rCQlHRU5FUkFMX05BTUVTX2l0OwotKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2l0OwotKwkJQVNOMV9GQk9PTEVBTl9pdDsKLSsJCVVJX3NldF9leF9kYXRhOwotKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fa2V5OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9SU0E7Ci0rCQlkMmlfS1JCNV9QUklOQ05BTUU7Ci0rCQlPQ1NQX1JFU1BCWVRFU19pdDsKLSsJCVg1MDlfQ0lORl9pdDsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX2RpZ2VzdHM7Ci0rCQlkMmlfRURJUEFSVFlOQU1FOwotKwkJZDJpX09DU1BfU0VSVklDRUxPQzsKLSsJCUVOR0lORV9nZXRfZGlnZXN0czsKLSsJCV9vc3NsX29sZF9kZXNfc2V0X29kZF9wYXJpdHk7Ci0rCQlPQ1NQX1JFU1BEQVRBX2ZyZWU7Ci0rCQlkMmlfS1JCNV9USUNLRVQ7Ci0rCQlPVEhFUk5BTUVfaXQ7Ci0rCQlFVlBfTURfQ1RYX2NsZWFudXA7Ci0rCQlkMmlfQVNOMV9HRU5FUkFMU1RSSU5HOwotKwkJWDUwOV9DUkxfc2V0X3ZlcnNpb247Ci0rCQlCTl9tb2Rfc3ViOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfTklEOwotKwkJRU5HSU5FX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlPQ1NQX1JFUVVFU1RfZnJlZTsKLSsJCU9DU1BfUkVRVUVTVF9hZGQxX2V4dF9pMmQ7Ci0rCQlYNTA5X1ZBTF9pdDsKLSsJCUVDX1BPSU5Uc19tYWtlX2FmZmluZTsKLSsJCUVDX1BPSU5UX211bDsKLSsJCVg1MDlWM19FWFRfYWRkX25jb25mOwotKwkJWDUwOV9UUlVTVF9zZXQ7Ci0rCQlYNTA5X0NSTF9hZGQxX2V4dF9pMmQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2ZjcnlwdDsKLSsJCURJU1BMQVlURVhUX2l0OwotKwkJWDUwOV9DUkxfc2V0X2xhc3RVcGRhdGU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9mcmVlOwotKwkJT0NTUF9CQVNJQ1JFU1BfYWRkMV9leHRfaTJkOwotKwkJZDJpX0tSQjVfQVVUSEVOVEJPRFk7Ci0rCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247Ci0rCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbDsKLSsJCUtSQjVfRU5DREFUQV9uZXc7Ci0rCQlEU09fdXBfcmVmOwotKwkJT0NTUF9jcmxfcmVhc29uX3N0cjsKLSsJCVVJX2dldDBfcmVzdWx0X3N0cmluZzsKLSsJCUFTTjFfR0VORVJBTFNUUklOR19uZXc7Ci0rCQlYNTA5X1NJR19pdDsKLSsJCUVSUl9zZXRfaW1wbGVtZW50YXRpb247Ci0rCQlFUlJfbG9hZF9FQ19zdHJpbmdzOwotKwkJVUlfZ2V0MF9hY3Rpb25fc3RyaW5nOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dDsKLSsJCUVDX1BPSU5UX21ldGhvZF9vZjsKLSsJCWkyZF9LUkI1X0FQUkVRQk9EWTsKLSsJCV9vc3NsX29sZF9kZXNfZWNiM19lbmNyeXB0OwotKwkJQ1JZUFRPX2dldF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJRU5HSU5FX2dldF9leF9kYXRhOwotKwkJVUlfZGVzdHJveV9tZXRob2Q7Ci0rCQlBU04xX2l0ZW1faTJkX2JpbzsKLSsJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfT0JKOwotKwkJQVNOMV9wcmltaXRpdmVfbmV3OwotKwkJQVNOMV9QUklOVEFCTEVfaXQ7Ci0rCQlFVlBfYWVzXzE5Ml9lY2I7Ci0rCQlPQ1NQX1NJR05BVFVSRV9uZXc7Ci0rCQlMT05HX2l0OwotKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2l0OwotKwkJT0NTUF9TSU5HTEVSRVNQX2FkZDFfZXh0X2kyZDsKLSsJCWQyaV9PQ1NQX0NFUlRJRDsKLSsJCUFTTjFfaXRlbV9kMmlfZnA7Ci0rCQlDUkxfRElTVF9QT0lOVFNfaXQ7Ci0rCQlHRU5FUkFMX05BTUVfcHJpbnQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZGVsZXRlX2V4dDsKLSsJCVBLQ1MxMl9TQUZFQkFHU19pdDsKLSsJCWQyaV9PQ1NQX1NJR05BVFVSRTsKLSsJCU9DU1BfcmVxdWVzdF9hZGQxX25vbmNlOwotKwkJRU5HSU5FX3NldF9jbWRfZGVmbnM7Ci0rCQlPQ1NQX1NFUlZJQ0VMT0NfZnJlZTsKLSsJCUVDX0dST1VQX2ZyZWU7Ci0rCQlBU04xX0JJVF9TVFJJTkdfaXQ7Ci0rCQlYNTA5X1JFUV9pdDsKLSsJCV9vc3NsX29sZF9kZXNfY2JjX2VuY3J5cHQ7Ci0rCQlFUlJfdW5sb2FkX3N0cmluZ3M7Ci0rCQlQS0NTN19TSUdOX0VOVkVMT1BFX2l0OwotKwkJRURJUEFSVFlOQU1FX2ZyZWU7Ci0rCQlPQ1NQX1JFUUlORk9fZnJlZTsKLSsJCUVDX0dST1VQX25ld19jdXJ2ZV9HRnA7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0MV9leHRfZDJpOwotKwkJUEtDUzEyX2l0ZW1fcGFja19zYWZlYmFnOwotKwkJYXNuMV9leF9jMmk7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfZGlnZXN0czsKLSsJCWkyZF9PQ1NQX1JFVk9LRURJTkZPOwotKwkJYXNuMV9lbmNfcmVzdG9yZTsKLSsJCVVJX2ZyZWU7Ci0rCQlVSV9uZXdfbWV0aG9kOwotKwkJRVZQX0VuY3J5cHRJbml0X2V4OwotKwkJWDUwOV9wdWJrZXlfZGlnZXN0OwotKwkJRUNfUE9JTlRfaW52ZXJ0OwotKwkJT0NTUF9iYXNpY19zaWduOwotKwkJaTJkX09DU1BfUkVTUElEOwotKwkJT0NTUF9jaGVja19ub25jZTsKLSsJCUVOR0lORV9jdHJsX2NtZDsKLSsJCWQyaV9LUkI1X0VOQ0tFWTsKLSsJCU9DU1BfcGFyc2VfdXJsOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHQ7Ci0rCQlPQ1NQX0NSTElEX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXQxX2V4dF9kMmk7Ci0rCQlSU0FQcml2YXRlS2V5X2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9ESDsKLSsJCWkyZF9FRElQQVJUWU5BTUU7Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGcDsKLSsJCU9DU1BfQ1JMSURfbmV3OwotKwkJRU5HSU5FX2dldF9mbGFnczsKLSsJCU9DU1BfT05FUkVRX2l0OwotKwkJVUlfcHJvY2VzczsKLSsJCUFTTjFfSU5URUdFUl9pdDsKLSsJCUVWUF9DaXBoZXJJbml0X2V4OwotKwkJVUlfZ2V0X3N0cmluZ190eXBlOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfREg7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RTQTsKLSsJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlibl9kdXBfZXhwYW5kOwotKwkJT0NTUF9jZXJ0X2lkX25ldzsKLSsJCUJBU0lDX0NPTlNUUkFJTlRTX2l0OwotKwkJQk5fbW9kX2FkZF9xdWljazsKLSsJCUVDX1BPSU5UX25ldzsKLSsJCUVWUF9NRF9DVFhfZGVzdHJveTsKLSsJCU9DU1BfUkVTUEJZVEVTX2ZyZWU7Ci0rCQlFVlBfYWVzXzEyOF9jYmM7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0MV9leHRfZDJpOwotKwkJRUNfUE9JTlRfZnJlZTsKLSsJCURIX3VwX3JlZjsKLSsJCVg1MDlfTkFNRV9FTlRSWV9pdDsKLSsJCVVJX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlCTl9tb2Rfc3ViX3F1aWNrOwotKwkJT0NTUF9PTkVSRVFfYWRkX2V4dDsKLSsJCU9DU1BfcmVxdWVzdF9zaWduOwotKwkJRVZQX0RpZ2VzdEZpbmFsX2V4OwotKwkJRU5HSU5FX3NldF9kaWdlc3RzOwotKwkJT0NTUF9pZF9pc3N1ZXJfY21wOwotKwkJT0JKX05BTUVfZG9fYWxsOwotKwkJRUNfUE9JTlRzX211bDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0ZTsKLSsJCVg1MDlWM19FWFRfbmNvbmZfbmlkOwotKwkJQVNOMV9TRVFVRU5DRV9pdDsKLSsJCVVJX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCVJBTkRfcXVlcnlfZWdkX2J5dGVzOwotKwkJVUlfbWV0aG9kX2dldF93cml0ZXI7Ci0rCQlVSV9PcGVuU1NMOwotKwkJUEVNX2RlZl9jYWxsYmFjazsKLSsJCUVOR0lORV9jbGVhbnVwOwotKwkJRElTVF9QT0lOVF9pdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9pdDsKLSsJCWQyaV9LUkI1X1RLVEJPRFk7Ci0rCQlFQ19QT0lOVF9jbXA7Ci0rCQlPQ1NQX1JFVk9LRURJTkZPX25ldzsKLSsJCWkyZF9PQ1NQX0NFUlRTVEFUVVM7Ci0rCQlPQ1NQX2Jhc2ljX2FkZDFfbm9uY2U7Ci0rCQlBU04xX2l0ZW1fZXhfZDJpOwotKwkJQk5fbW9kX2xzaGlmdDFfcXVpY2s7Ci0rCQlVSV9zZXRfbWV0aG9kOwotKwkJT0NTUF9pZF9nZXQwX2luZm87Ci0rCQlCTl9tb2Rfc3FydDsKLSsJCUVDX0dST1VQX2NvcHk7Ci0rCQlLUkI1X0VOQ0RBVEFfZnJlZTsKLSsJCV9vc3NsX29sZF9kZXNfY2ZiX2VuY3J5cHQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9PQko7Ci0rCQlPQ1NQX2NlcnRfdG9faWQ7Ci0rCQlPQ1NQX1JFU1BJRF9uZXc7Ci0rCQlPQ1NQX1JFU1BEQVRBX2l0OwotKwkJZDJpX09DU1BfUkVTUERBVEE7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NvbXBsZXRlOwotKwkJT0NTUF9jaGVja192YWxpZGl0eTsKLSsJCVBLQ1MxMl9CQUdTX2l0OwotKwkJT0NTUF91cmxfc3ZjbG9jX25ldzsKLSsJCUFTTjFfdGVtcGxhdGVfZnJlZTsKLSsJCU9DU1BfU0lOR0xFUkVTUF9hZGRfZXh0OwotKwkJS1JCNV9BVVRIRU5UQk9EWV9pdDsKLSsJCVg1MDlfc3VwcG9ydGVkX2V4dGVuc2lvbjsKLSsJCWkyZF9LUkI1X0FVVEhEQVRBOwotKwkJVUlfbWV0aG9kX2dldF9vcGVuZXI7Ci0rCQlFTkdJTkVfc2V0X2V4X2RhdGE7Ci0rCQlPQ1NQX1JFUVVFU1RfcHJpbnQ7Ci0rCQlDQklHTlVNX2l0OwotKwkJS1JCNV9USUNLRVRfbmV3OwotKwkJS1JCNV9BUFJFUV9uZXc7Ci0rCQlFQ19HUk9VUF9nZXRfY3VydmVfR0ZwOwotKwkJS1JCNV9FTkNLRVlfbmV3OwotKwkJQVNOMV90ZW1wbGF0ZV9kMmk7Ci0rCQlfb3NzbF9vbGRfZGVzX3F1YWRfY2tzdW07Ci0rCQlPQ1NQX3NpbmdsZV9nZXQwX3N0YXR1czsKLSsJCUJOX3N3YXA7Ci0rCQlQT0xJQ1lJTkZPX2l0OwotKwkJRU5HSU5FX3NldF9kZXN0cm95X2Z1bmN0aW9uOwotKwkJYXNuMV9lbmNfZnJlZTsKLSsJCU9DU1BfUkVTUElEX2l0OwotKwkJRUNfR1JPVVBfbmV3OwotKwkJRVZQX2Flc18yNTZfY2JjOwotKwkJaTJkX0tSQjVfUFJJTkNOQU1FOwotKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MjsKLSsJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDM7Ci0rCQlQS0NTOF9QUklWX0tFWV9JTkZPX2l0OwotKwkJT0NTUF9SRVFJTkZPX2l0OwotKwkJUEJFUEFSQU1faXQ7Ci0rCQlLUkI1X0FVVEhFTlRCT0RZX25ldzsKLSsJCVg1MDlfQ1JMX2FkZDBfcmV2b2tlZDsKLSsJCUVESVBBUlRZTkFNRV9pdDsKLSsJCU5FVFNDQVBFX1NQS0lfaXQ7Ci0rCQlVSV9nZXQwX3Rlc3Rfc3RyaW5nOwotKwkJRU5HSU5FX2dldF9jaXBoZXJfZW5naW5lOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jaXBoZXJzOwotKwkJRUNfUE9JTlRfY29weTsKLSsJCUJOX2tyb25lY2tlcjsKLSsJCV9vc3NsX29sZF9kZXNfZWRlM19vZmI2NF9lbmNyeXB0OwotKwkJX29zc2xfb2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7Ci0rCQlVSV9tZXRob2RfZ2V0X3JlYWRlcjsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfY291bnQ7Ci0rCQlBU04xX0VOVU1FUkFURURfaXQ7Ci0rCQlVSV9zZXRfcmVzdWx0OwotKwkJaTJkX0tSQjVfVElDS0VUOwotKwkJWDUwOV9wcmludF9leF9mcDsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nOwotKwkJZDJpX09DU1BfUkVTUE9OU0U7Ci0rCQlBU04xX1VUQ1RJTUVfaXQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY193cml0ZTsKLSsJCU9DU1BfUkVTUE9OU0VfbmV3OwotKwkJQUVTX3NldF9lbmNyeXB0X2tleTsKLSsJCU9DU1BfcmVzcF9jb3VudDsKLSsJCUtSQjVfQ0hFQ0tTVU1fbmV3OwotKwkJRU5HSU5FX2xvYWRfY3N3aWZ0OwotKwkJT0NTUF9vbmVyZXFfZ2V0MF9pZDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9jaXBoZXJzOwotKwkJTk9USUNFUkVGX2l0OwotKwkJWDUwOVYzX0VYVF9DUkxfYWRkX25jb25mOwotKwkJT0NTUF9SRVZPS0VESU5GT19pdDsKLSsJCUFFU19lbmNyeXB0OwotKwkJT0NTUF9SRVFVRVNUX25ldzsKLSsJCUFTTjFfQU5ZX2l0OwotKwkJQ1JZUFRPX2V4X2RhdGFfbmV3X2NsYXNzOwotKwkJX29zc2xfb2xkX2Rlc19uY2JjX2VuY3J5cHQ7Ci0rCQlpMmRfS1JCNV9US1RCT0RZOwotKwkJRUNfUE9JTlRfY2xlYXJfZnJlZTsKLSsJCUFFU19kZWNyeXB0OwotKwkJYXNuMV9lbmNfaW5pdDsKLSsJCVVJX2dldF9yZXN1bHRfbWF4c2l6ZTsKLSsJCU9DU1BfQ0VSVElEX25ldzsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX1JBTkQ7Ci0rCQlVSV9tZXRob2RfZ2V0X2Nsb3NlcjsKLSsJCWQyaV9LUkI1X0VOQ0RBVEE7Ci0rCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2NvdW50OwotKwkJT0NTUF9iYXNpY192ZXJpZnk7Ci0rCQlLUkI1X0FVVEhFTlRCT0RZX2ZyZWU7Ci0rCQlBU04xX2l0ZW1fZDJpOwotKwkJQVNOMV9wcmltaXRpdmVfZnJlZTsKLSsJCWkyZF9FWFRFTkRFRF9LRVlfVVNBR0U7Ci0rCQlpMmRfT0NTUF9TSUdOQVRVUkU7Ci0rCQlhc24xX2VuY19zYXZlOwotKwkJRU5HSU5FX2xvYWRfbnVyb247Ci0rCQlfb3NzbF9vbGRfZGVzX3BjYmNfZW5jcnlwdDsKLSsJCVBLQ1MxMl9NQUNfREFUQV9pdDsKLSsJCU9DU1BfYWNjZXB0X3Jlc3BvbnNlc19uZXc7Ci0rCQlhc24xX2RvX2xvY2s7Ci0rCQlQS0NTN19BVFRSX1ZFUklGWV9pdDsKLSsJCUtSQjVfQVBSRVFCT0RZX2l0OwotKwkJaTJkX09DU1BfU0lOR0xFUkVTUDsKLSsJCUFTTjFfaXRlbV9leF9uZXc7Ci0rCQlVSV9hZGRfdmVyaWZ5X3N0cmluZzsKLSsJCV9vc3NsX29sZF9kZXNfc2V0X2tleTsKLSsJCUtSQjVfUFJJTkNOQU1FX2l0OwotKwkJRVZQX0RlY3J5cHRJbml0X2V4OwotKwkJaTJkX09DU1BfQ0VSVElEOwotKwkJQVNOMV9pdGVtX2QyaV9iaW87Ci0rCQlFQ19QT0lOVF9kYmw7Ci0rCQlhc24xX2dldF9jaG9pY2Vfc2VsZWN0b3I7Ci0rCQlpMmRfS1JCNV9DSEVDS1NVTTsKLSsJCUVOR0lORV9zZXRfdGFibGVfZmxhZ3M7Ci0rCQlBRVNfb3B0aW9uczsKLSsJCUVOR0lORV9sb2FkX2NoaWw7Ci0rCQlPQ1NQX2lkX2NtcDsKLSsJCU9DU1BfQkFTSUNSRVNQX25ldzsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X05JRDsKLSsJCUtSQjVfQVBSRVFfaXQ7Ci0rCQlFTkdJTkVfZ2V0X2Rlc3Ryb3lfZnVuY3Rpb247Ci0rCQlDT05GX3NldF9uY29uZjsKLSsJCUFTTjFfUFJJTlRBQkxFX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X05JRDsKLSsJCURJU1RfUE9JTlRfTkFNRV9pdDsKLSsJCVg1MDlWM19leHRlbnNpb25zX3ByaW50OwotKwkJX29zc2xfb2xkX2Rlc19jZmI2NF9lbmNyeXB0OwotKwkJWDUwOV9SRVZPS0VEX2FkZDFfZXh0X2kyZDsKLSsJCV9vc3NsX29sZF9kZXNfb2ZiX2VuY3J5cHQ7Ci0rCQlLUkI1X1RLVEJPRFlfbmV3OwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfaXQ7Ci0rCQlFUlJfbG9hZF9VSV9zdHJpbmdzOwotKwkJaTJkX0tSQjVfRU5DS0VZOwotKwkJQVNOMV90ZW1wbGF0ZV9uZXc7Ci0rCQlPQ1NQX1NJR05BVFVSRV9mcmVlOwotKwkJQVNOMV9pdGVtX2kyZF9mcDsKLSsJCUtSQjVfUFJJTkNOQU1FX2ZyZWU7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX2l0OwotKwkJRVhURU5ERURfS0VZX1VTQUdFX2l0OwotKwkJRUNfR0ZwX3NpbXBsZV9tZXRob2Q7Ci0rCQlFQ19HUk9VUF9wcmVjb21wdXRlX211bHQ7Ci0rCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2dldDA7Ci0rCQlVSV9tZXRob2Rfc2V0X3dyaXRlcjsKLSsJCUtSQjVfQVVUSEVOVF9uZXc7Ci0rCQlYNTA5X0NSTF9JTkZPX2l0OwotKwkJRFNPX3NldF9uYW1lX2NvbnZlcnRlcjsKLSsJCUFFU19zZXRfZGVjcnlwdF9rZXk7Ci0rCQlQS0NTN19ESUdFU1RfaXQ7Ci0rCQlQS0NTMTJfeDUwOTJjZXJ0YmFnOwotKwkJRVZQX0RpZ2VzdEluaXRfZXg7Ci0rCQlpMmFfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJT0NTUF9SRVNQT05TRV9pdDsKLSsJCVBLQ1M3X0VOQ19DT05URU5UX2l0OwotKwkJT0NTUF9yZXF1ZXN0X2FkZDBfaWQ7Ci0rCQlFQ19QT0lOVF9tYWtlX2FmZmluZTsKLSsJCURTT19nZXRfZmlsZW5hbWU7Ci0rCQlPQ1NQX0NFUlRTVEFUVVNfaXQ7Ci0rCQlPQ1NQX3JlcXVlc3RfYWRkMV9jZXJ0OwotKwkJVUlfZ2V0MF9vdXRwdXRfc3RyaW5nOwotKwkJVUlfZHVwX3ZlcmlmeV9zdHJpbmc7Ci0rCQlCTl9tb2RfbHNoaWZ0OwotKwkJS1JCNV9BVVRIREFUQV9pdDsKLSsJCWFzbjFfc2V0X2Nob2ljZV9zZWxlY3RvcjsKLSsJCU9DU1BfYmFzaWNfYWRkMV9zdGF0dXM7Ci0rCQlPQ1NQX1JFU1BJRF9mcmVlOwotKwkJYXNuMV9nZXRfZmllbGRfcHRyOwotKwkJVUlfYWRkX2lucHV0X3N0cmluZzsKLSsJCU9DU1BfQ1JMSURfaXQ7Ci0rCQlpMmRfS1JCNV9BVVRIRU5UQk9EWTsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2NvdW50OwotKwkJRU5HSU5FX2xvYWRfYXRhbGxhOwotKwkJWDUwOV9OQU1FX2l0OwotKwkJVVNFUk5PVElDRV9pdDsKLSsJCU9DU1BfUkVRSU5GT19uZXc7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0OwotKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGxlbWVudGF0aW9uOwotKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGw7Ci0rCQlBU04xX2l0ZW1fcGFjazsKLSsJCWkyZF9LUkI1X0VOQ0RBVEE7Ci0rCQlYNTA5X1BVUlBPU0Vfc2V0OwotKwkJWDUwOV9SRVFfSU5GT19pdDsKLSsJCVVJX21ldGhvZF9zZXRfb3BlbmVyOwotKwkJQVNOMV9pdGVtX2V4X2ZyZWU7Ci0rCQlBU04xX0JPT0xFQU5faXQ7Ci0rCQlFTkdJTkVfZ2V0X3RhYmxlX2ZsYWdzOwotKwkJVUlfY3JlYXRlX21ldGhvZDsKLSsJCU9DU1BfT05FUkVRX2FkZDFfZXh0X2kyZDsKLSsJCV9zaGFkb3dfREVTX2NoZWNrX2tleTsKLSsJCWQyaV9PQ1NQX1JFUUlORk87Ci0rCQlVSV9hZGRfaW5mb19zdHJpbmc7Ci0rCQlVSV9nZXRfcmVzdWx0X21pbnNpemU7Ci0rCQlBU04xX05VTExfaXQ7Ci0rCQlCTl9tb2RfbHNoaWZ0MTsKLSsJCWQyaV9PQ1NQX09ORVJFUTsKLSsJCU9DU1BfT05FUkVRX25ldzsKLSsJCUtSQjVfVElDS0VUX2l0OwotKwkJRVZQX2Flc18xOTJfY2JjOwotKwkJS1JCNV9USUNLRVRfZnJlZTsKLSsJCVVJX25ldzsKLSsJCU9DU1BfcmVzcG9uc2VfY3JlYXRlOwotKwkJX29zc2xfb2xkX2Rlc194Y2JjX2VuY3J5cHQ7Ci0rCQlQS0NTN19pdDsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdDsKLSsJCUVOR0lORV9zZXRfZmxhZ3M7Ci0rCQlfb3NzbF9vbGRfZGVzX2VjYl9lbmNyeXB0OwotKwkJT0NTUF9yZXNwb25zZV9nZXQxX2Jhc2ljOwotKwkJRVZQX0RpZ2VzdDsKLSsJCU9DU1BfT05FUkVRX2RlbGV0ZV9leHQ7Ci0rCQlBU04xX1RCT09MRUFOX2l0OwotKwkJQVNOMV9pdGVtX25ldzsKLSsJCUFTTjFfVElNRV90b19nZW5lcmFsaXplZHRpbWU7Ci0rCQlCSUdOVU1faXQ7Ci0rCQlBRVNfY2JjX2VuY3J5cHQ7Ci0rCQlFTkdJTkVfZ2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2ZuOwotKwkJT0NTUF9SRVNQT05TRV9mcmVlOwotKwkJVUlfbWV0aG9kX3NldF9yZWFkZXI7Ci0rCQlpMmRfQVNOMV9UNjFTVFJJTkc7Ci0rCQlFQ19QT0lOVF9zZXRfdG9faW5maW5pdHk7Ci0rCQlFUlJfbG9hZF9PQ1NQX3N0cmluZ3M7Ci0rCQlFQ19QT0lOVF9wb2ludDJvY3Q7Ci0rCQlLUkI1X0FQUkVRX2ZyZWU7Ci0rCQlBU04xX09CSkVDVF9pdDsKLSsJCU9DU1BfY3JsSURfbmV3OwotKwkJT0NTUF9jcmxJRDJfbmV3OwotKwkJQ09ORl9tb2R1bGVzX2xvYWRfZmlsZTsKLSsJCUNPTkZfaW1vZHVsZV9zZXRfdXNyX2RhdGE7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfc3RyaW5nOwotKwkJQ09ORl9tb2R1bGVfZ2V0X3Vzcl9kYXRhOwotKwkJQVNOMV9hZGRfb2lkX21vZHVsZTsKLSsJCUNPTkZfbW9kdWxlc19maW5pc2g7Ci0rCQlPUEVOU1NMX2NvbmZpZzsKLSsJCUNPTkZfbW9kdWxlc191bmxvYWQ7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X3ZhbHVlOwotKwkJQ09ORl9tb2R1bGVfc2V0X3Vzcl9kYXRhOwotKwkJQ09ORl9wYXJzZV9saXN0OwotKwkJQ09ORl9tb2R1bGVfYWRkOwotKwkJQ09ORl9nZXQxX2RlZmF1bHRfY29uZmlnX2ZpbGU7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X2ZsYWdzOwotKwkJQ09ORl9pbW9kdWxlX2dldF9tb2R1bGU7Ci0rCQlDT05GX21vZHVsZXNfbG9hZDsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfbmFtZTsKLSsJCUVSUl9wZWVrX3RvcF9lcnJvcjsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfdXNyX2RhdGE7Ci0rCQlDT05GX2ltb2R1bGVfc2V0X2ZsYWdzOwotKwkJRU5HSU5FX2FkZF9jb25mX21vZHVsZTsKLSsJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZTsKLSsJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZV9kYXRhOwotKwkJRVJSX3BlZWtfbGFzdF9lcnJvcjsKLSsJCURFU19yZWFkXzJwYXNzd29yZHM7Ci0rCQlERVNfcmVhZF9wYXNzd29yZDsKLSsJCVVJX1VUSUxfcmVhZF9wdzsKLSsJCVVJX1VUSUxfcmVhZF9wd19zdHJpbmc7Ci0rCQlFTkdJTkVfbG9hZF9hZXA7Ci0rCQlFTkdJTkVfbG9hZF9zdXJld2FyZTsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX25vY29uZjsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX25vY29uZjsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX2NvbmY7Ci0rCQlPUEVOU1NMX2FkZF9hbGxfYWxnb19jb25mOwotKwkJT1BFTlNTTF9sb2FkX2J1aWx0aW5fbW9kdWxlczsKLSsJCUFFU19vZmIxMjhfZW5jcnlwdDsKLSsJCUFFU19jdHIxMjhfZW5jcnlwdDsKLSsJCUFFU19jZmIxMjhfZW5jcnlwdDsKLSsJCUVOR0lORV9sb2FkXzQ3NThjY2E7Ci0rCQlfb3NzbF8wOTZfZGVzX3JhbmRvbV9zZWVkOwotKwkJRVZQX2Flc18yNTZfb2ZiOwotKwkJRVZQX2Flc18xOTJfb2ZiOwotKwkJRVZQX2Flc18xMjhfY2ZiMTI4OwotKwkJRVZQX2Flc18yNTZfY2ZiMTI4OwotKwkJRVZQX2Flc18xMjhfb2ZiOwotKwkJRVZQX2Flc18xOTJfY2ZiMTI4OwotKwkJQ09ORl9tb2R1bGVzX2ZyZWU7Ci0rCQlOQ09ORl9kZWZhdWx0OwotKwkJT1BFTlNTTF9ub19jb25maWc7Ci0rCQlOQ09ORl9XSU4zMjsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX25ldzsKLSsJCUVWUF9kZXNfZWRlX2VjYjsKLSsJCWkyZF9BU04xX1VOSVZFUlNBTFNUUklORzsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2ZyZWU7Ci0rCQlBU04xX1VOSVZFUlNBTFNUUklOR19pdDsKLSsJCWQyaV9BU04xX1VOSVZFUlNBTFNUUklORzsKLSsJCUVWUF9kZXNfZWRlM19lY2I7Ci0rCQlYNTA5X1JFUV9wcmludF9leDsKLSsJCUVOR0lORV91cF9yZWY7Ci0rCQlCVUZfTUVNX2dyb3dfY2xlYW47Ci0rCQlDUllQVE9fcmVhbGxvY19jbGVhbjsKLSsJCUJVRl9zdHJsY2F0OwotKwkJQklPX2luZGVudDsKLSsJCUJVRl9zdHJsY3B5OwotKwkJT3BlblNTTERpZTsKLSsJCU9QRU5TU0xfY2xlYW5zZTsKLSsJCUVOR0lORV9zZXR1cF9ic2RfY3J5cHRvZGV2OwotKwkJRVJSX3JlbGVhc2VfZXJyX3N0YXRlX3RhYmxlOwotKwkJRVZQX2Flc18xMjhfY2ZiODsKLSsJCUZJUFNfY29ycnVwdF9yc2E7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2RlczsKLSsJCUVWUF9hZXNfMTI4X2NmYjE7Ci0rCQlFVlBfYWVzXzE5Ml9jZmI4OwotKwkJRklQU19tb2RlX3NldDsKLSsJCUZJUFNfc2VsZnRlc3RfZHNhOwotKwkJRVZQX2Flc18yNTZfY2ZiODsKLSsJCUZJUFNfYWxsb3dfbWQ1OwotKwkJREVTX2VkZTNfY2ZiX2VuY3J5cHQ7Ci0rCQlFVlBfZGVzX2VkZTNfY2ZiODsKLSsJCUZJUFNfcmFuZF9zZWVkZWQ7Ci0rCQlBRVNfY2Zicl9lbmNyeXB0X2Jsb2NrOwotKwkJQUVTX2NmYjhfZW5jcnlwdDsKLSsJCUZJUFNfcmFuZF9zZWVkOwotKwkJRklQU19jb3JydXB0X2RlczsKLSsJCUVWUF9hZXNfMTkyX2NmYjE7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2FlczsKLSsJCUZJUFNfc2V0X3Bybmdfa2V5OwotKwkJRVZQX2Rlc19jZmI4OwotKwkJRklQU19jb3JydXB0X2RzYTsKLSsJCUZJUFNfdGVzdF9tb2RlOwotKwkJRklQU19yYW5kX21ldGhvZDsKLSsJCUVWUF9hZXNfMjU2X2NmYjE7Ci0rCQlFUlJfbG9hZF9GSVBTX3N0cmluZ3M7Ci0rCQlGSVBTX2NvcnJ1cHRfYWVzOwotKwkJRklQU19zZWxmdGVzdF9zaGExOwotKwkJRklQU19zZWxmdGVzdF9yc2E7Ci0rCQlGSVBTX2NvcnJ1cHRfc2hhMTsKLSsJCUVWUF9kZXNfY2ZiMTsKLSsJCUZJUFNfZHNhX2NoZWNrOwotKwkJQUVTX2NmYjFfZW5jcnlwdDsKLSsJCUVWUF9kZXNfZWRlM19jZmIxOwotKwkJRklQU19yYW5kX2NoZWNrOwotKwkJRklQU19tZDVfYWxsb3dlZDsKLSsJCUZJUFNfbW9kZTsKLSsJCUZJUFNfc2VsZnRlc3RfZmFpbGVkOwotKwkJc2tfaXNfc29ydGVkOwotKwkJWDUwOV9jaGVja19jYTsKLSsJCUhNQUNfQ1RYX3NldF9mbGFnczsKLSsJCWQyaV9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOwotKwkJUFJPWFlfUE9MSUNZX2l0OwotKwkJaTJkX1BST1hZX1BPTElDWTsKLSsJCWkyZF9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOwotKwkJZDJpX1BST1hZX1BPTElDWTsKLSsJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05fbmV3OwotKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9mcmVlOwotKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9pdDsKLSsJCVBST1hZX1BPTElDWV9mcmVlOwotKwkJUFJPWFlfUE9MSUNZX25ldzsKLSsJCUJOX01PTlRfQ1RYX3NldF9sb2NrZWQ7Ci0rCQlGSVBTX3NlbGZ0ZXN0X3JuZzsKLSsJCUVWUF9zaGEzODQ7Ci0rCQlFVlBfc2hhNTEyOwotKwkJRVZQX3NoYTIyNDsKLSsJCUVWUF9zaGEyNTY7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2htYWM7Ci0rCQlGSVBTX2NvcnJ1cHRfcm5nOwotKwkJQk5fbW9kX2V4cF9tb250X2NvbnN0dGltZTsKLSsJCVJTQV9YOTMxX2hhc2hfaWQ7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19YOTMxOwotKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1M7Ci0rCQlSU0FfcGFkZGluZ19hZGRfWDkzMTsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1M7Ci0rCQlQS0NTMV9NR0YxOwotKwkJQk5fWDkzMV9nZW5lcmF0ZV9YcHE7Ci0rCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXk7Ci0rCQlCTl9YOTMxX2Rlcml2ZV9wcmltZTsKLSsJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWU7Ci0rCQlSU0FfWDkzMV9kZXJpdmU7Ci0rCQlCSU9fbmV3X2RncmFtOwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzM4NDsKLSsJCUVSUl9zZXRfbWFyazsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldDBfY3JsczsKLSsJCUVOR0lORV9zZXRfU1RPUkU7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfRUNEU0E7Ci0rCQlTVE9SRV9tZXRoX3NldF9saXN0X3N0YXJ0X2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOwotKwkJQk5fQkxJTkRJTkdfaW52ZXJ0X2V4OwotKwkJTkFNRV9DT05TVFJBSU5UU19mcmVlOwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9udW1iZXI7Ci0rCQlCTl9CTElORElOR19nZXRfdGhyZWFkX2lkOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9wYXJhbTsKLSsJCVBPTElDWV9NQVBQSU5HX2l0OwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfc3RhcnQ7Ci0rCQlQT0xJQ1lfQ09OU1RSQUlOVFNfZnJlZTsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlCTl9uaXN0X21vZF8xOTI7Ci0rCQlFQ19HUk9VUF9nZXRfdHJpbm9taWFsX2Jhc2lzOwotKwkJU1RPUkVfc2V0X21ldGhvZDsKLSsJCUdFTkVSQUxfU1VCVFJFRV9mcmVlOwotKwkJTkFNRV9DT05TVFJBSU5UU19pdDsKLSsJCUVDREhfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUEtDUzEyX2FkZF9zYWZlOwotKwkJRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lOwotKwkJU1RPUkVfbWV0aF9nZXRfdXBkYXRlX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfRUNESDsKLSsJCVNIQTUxMl9VcGRhdGU7Ci0rCQlpMmRfRUNQcml2YXRlS2V5OwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzE5MjsKLSsJCVNUT1JFX21vZGlmeV9jZXJ0aWZpY2F0ZTsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGMm07Ci0rCQlCTl9HRjJtX21vZF9leHBfYXJyOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9udW1iZXI7Ci0rCQlYNTA5X2tleWlkX2dldDA7Ci0rCQlFTkdJTkVfbG9hZF9nbXA7Ci0rCQlwaXRlbV9uZXc7Ci0rCQlCTl9HRjJtX21vZF9tdWxfYXJyOwotKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZHA7Ci0rCQlvMmlfRUNQdWJsaWNLZXk7Ci0rCQlFQ19LRVlfY29weTsKLSsJCUJJT19kdW1wX2ZwOwotKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BhcmVudDsKLSsJCUVDX0dST1VQX2NoZWNrX2Rpc2NyaW1pbmFudDsKLSsJCWkyb19FQ1B1YmxpY0tleTsKLSsJCUVDX0tFWV9wcmVjb21wdXRlX211bHQ7Ci0rCQlhMmlfSVBBRERSRVNTOwotKwkJU1RPUkVfbWV0aF9zZXRfaW5pdGlhbGlzZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfaW5pdGlhbGlzZV9mdW5jdGlvbjsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZXB0aDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2luaGVyaXQ7Ci0rCQlFQ19QT0lOVF9wb2ludDJibjsKLSsJCVNUT1JFX0FUVFJfSU5GT19zZXRfZG47Ci0rCQlYNTA5X3BvbGljeV90cmVlX2dldDBfcG9saWNpZXM7Ci0rCQlFQ19HUk9VUF9uZXdfY3VydmVfR0YybTsKLSsJCVNUT1JFX2Rlc3Ryb3lfbWV0aG9kOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfU1RPUkU7Ci0rCQlFVlBfUEtFWV9nZXQxX0VDX0tFWTsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX251bWJlcjsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9FQ0RIOwotKwkJRUNfS0VZX2dldF9jb252X2Zvcm07Ci0rCQlBU04xX09DVEVUX1NUUklOR19OREVGX2l0OwotKwkJU1RPUkVfZGVsZXRlX3B1YmxpY19rZXk7Ci0rCQlTVE9SRV9nZXRfcHVibGljX2tleTsKLSsJCVNUT1JFX21vZGlmeV9hcmJpdHJhcnk7Ci0rCQlFTkdJTkVfZ2V0X3N0YXRpY19zdGF0ZTsKLSsJCXBxdWV1ZV9pdGVyYXRvcjsKLSsJCUVDRFNBX1NJR19uZXc7Ci0rCQlPUEVOU1NMX0RJUl9lbmQ7Ci0rCQlCTl9HRjJtX21vZF9zcXI7Ci0rCQlFQ19QT0lOVF9ibjJwb2ludDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9kZXB0aDsKLSsJCUVDX0tFWV9zZXRfYXNuMV9mbGFnOwotKwkJU1RPUkVfZ2V0X21ldGhvZDsKLSsJCUVDX0tFWV9nZXRfa2V5X21ldGhvZF9kYXRhOwotKwkJRUNEU0Ffc2lnbl9leDsKLSsJCVNUT1JFX3BhcnNlX2F0dHJzX2VuZDsKLSsJCUVDX0dST1VQX2dldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07Ci0rCQlFQ19HUk9VUF9nZXRfcG9pbnRfY29udl9mb3JtOwotKwkJU1RPUkVfbWV0aG9kX3NldF9zdG9yZV9mdW5jdGlvbjsKLSsJCVNUT1JFX0FUVFJfSU5GT19pbjsKLSsJCVBFTV9yZWFkX2Jpb19FQ1BLUGFyYW1ldGVyczsKLSsJCUVDX0dST1VQX2dldF9wZW50YW5vbWlhbF9iYXNpczsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlCTl9CTElORElOR19zZXRfZmxhZ3M7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX3BvbGljaWVzOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9uYW1lOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3B1cnBvc2U7Ci0rCQlTVE9SRV9nZXRfbnVtYmVyOwotKwkJRUNEU0Ffc2lnbl9zZXR1cDsKLSsJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWRfYXJyOwotKwkJRUNfS0VZX3VwX3JlZjsKLSsJCVBPTElDWV9NQVBQSU5HX2ZyZWU7Ci0rCQlCTl9HRjJtX21vZF9kaXY7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3M7Ci0rCQlFQ19LRVlfZnJlZTsKLSsJCVNUT1JFX21ldGhfc2V0X2xpc3RfbmV4dF9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOwotKwkJUEVNX3dyaXRlX2Jpb19FQ1ByaXZhdGVLZXk7Ci0rCQlkMmlfRUNfUFVCS0VZOwotKwkJU1RPUkVfbWV0aF9nZXRfZ2VuZXJhdGVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2dlbmVyYXRlX2Z1bmN0aW9uOwotKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9lbmRfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3RfZW5kX2Z1bmN0aW9uOwotKwkJcHF1ZXVlX3ByaW50OwotKwkJRUNfR1JPVVBfaGF2ZV9wcmVjb21wdXRlX211bHQ7Ci0rCQlFQ19LRVlfcHJpbnRfZnA7Ci0rCQlCTl9HRjJtX21vZF9hcnI7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ0VSVF9QQUlSOwotKwkJRVZQX1BLRVlfY21wOwotKwkJWDUwOV9wb2xpY3lfbGV2ZWxfbm9kZV9jb3VudDsKLSsJCVNUT1JFX25ld19lbmdpbmU7Ci0rCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfc3RhcnQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9uZXc7Ci0rCQlFQ0RIX2dldF9leF9kYXRhOwotKwkJRVZQX1BLRVlfZ2V0X2F0dHI7Ci0rCQlFQ0RTQV9kb19zaWduOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNESDsKLSsJCUVDREhfT3BlblNTTDsKLSsJCUVDX0tFWV9zZXRfY29udl9mb3JtOwotKwkJRUNfUE9JTlRfZHVwOwotKwkJR0VORVJBTF9TVUJUUkVFX25ldzsKLSsJCVNUT1JFX2xpc3RfY3JsX2VuZHA7Ci0rCQlFQ19nZXRfYnVpbHRpbl9jdXJ2ZXM7Ci0rCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcXVhbGlmaWVyczsKLSsJCVg1MDlfcGN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOwotKwkJU1RPUkVfbGlzdF9jcmxfZW5kOwotKwkJRVZQX1BLRVlfc2V0MV9FQ19LRVk7Ci0rCQlCTl9HRjJtX21vZF9zcXJ0X2FycjsKLSsJCWkyZF9FQ1ByaXZhdGVLZXlfYmlvOwotKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnRfZnA7Ci0rCQlwcXVldWVfZmluZDsKLSsJCUVDRFNBX1NJR19mcmVlOwotKwkJUEVNX3dyaXRlX2Jpb19FQ1BLUGFyYW1ldGVyczsKLSsJCVNUT1JFX21ldGhvZF9zZXRfY3RybF9mdW5jdGlvbjsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9lbmQ7Ci0rCQlFQ19LRVlfc2V0X3ByaXZhdGVfa2V5OwotKwkJcHF1ZXVlX3BlZWs7Ci0rCQlTVE9SRV9nZXRfYXJiaXRyYXJ5OwotKwkJU1RPUkVfc3RvcmVfY3JsOwotKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BvbGljeTsKLSsJCVBLQ1MxMl9hZGRfc2FmZXM7Ci0rCQlCTl9CTElORElOR19jb252ZXJ0X2V4OwotKwkJWDUwOV9wb2xpY3lfdHJlZV9mcmVlOwotKwkJT1BFTlNTTF9pYTMyY2FwX2xvYzsKLSsJCUJOX0dGMm1fcG9seTJhcnI7Ci0rCQlTVE9SRV9jdHJsOwotKwkJU1RPUkVfQVRUUl9JTkZPX2NvbXBhcmU7Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMjI0OwotKwkJaTJkX0VDUGFyYW1ldGVyczsKLSsJCWkyZF9FQ1BLUGFyYW1ldGVyczsKLSsJCUJOX0dFTkNCX2NhbGw7Ci0rCQlkMmlfRUNQS1BhcmFtZXRlcnM7Ci0rCQlTVE9SRV9tZXRoX3NldF9nZW5lcmF0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZ2VuZXJhdGVfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X0VDREg7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX25ldzsKLSsJCVNIQTI1Nl9Jbml0OwotKwkJRUNfS0VZX2dldDBfcHVibGljX2tleTsKLSsJCVBFTV93cml0ZV9iaW9fRUNfUFVCS0VZOwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9jc3RyOwotKwkJU1RPUkVfbGlzdF9jcmxfbmV4dDsKLSsJCVNUT1JFX0FUVFJfSU5GT19pbl9yYW5nZTsKLSsJCUVDUGFyYW1ldGVyc19wcmludDsKLSsJCVNUT1JFX21ldGhfc2V0X2RlbGV0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZGVsZXRlX2Z1bmN0aW9uOwotKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9uZXh0OwotKwkJQVNOMV9nZW5lcmF0ZV9uY29uZjsKLSsJCUJVRl9tZW1kdXA7Ci0rCQlCTl9HRjJtX21vZF9tdWw7Ci0rCQlTVE9SRV9tZXRoX2dldF9saXN0X25leHRfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfbmV4dF9mdW5jdGlvbjsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX2RuOwotKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9uZXh0OwotKwkJRUNfR1JPVVBfc2V0X3NlZWQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdHJ1c3Q7Ci0rCQlTVE9SRV9BVFRSX0lORk9fZnJlZTsKLSsJCVNUT1JFX2dldF9wcml2YXRlX2tleTsKLSsJCUVWUF9QS0VZX2dldF9hdHRyX2NvdW50OwotKwkJU1RPUkVfQVRUUl9JTkZPX25ldzsKLSsJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRjJtOwotKwkJU1RPUkVfbWV0aF9zZXRfcmV2b2tlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9yZXZva2VfZnVuY3Rpb247Ci0rCQlTVE9SRV9zdG9yZV9udW1iZXI7Ci0rCQlCTl9pc19wcmltZV9leDsKLSsJCVNUT1JFX3Jldm9rZV9wdWJsaWNfa2V5OwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wYXJhbTsKLSsJCVNUT1JFX2RlbGV0ZV9hcmJpdHJhcnk7Ci0rCQlQRU1fcmVhZF9YNTA5X0NFUlRfUEFJUjsKLSsJCVg1MDlfU1RPUkVfc2V0X2RlcHRoOwotKwkJRUNEU0FfZ2V0X2V4X2RhdGE7Ci0rCQlTSEEyMjQ7Ci0rCQlCSU9fZHVtcF9pbmRlbnRfZnA7Ci0rCQlFQ19LRVlfc2V0X2dyb3VwOwotKwkJQlVGX3N0cm5kdXA7Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX3N0YXJ0OwotKwkJQk5fR0YybV9tb2Q7Ci0rCQlYNTA5X1JFUV9jaGVja19wcml2YXRlX2tleTsKLSsJCUVDX0dST1VQX2dldF9zZWVkX2xlbjsKLSsJCUVSUl9sb2FkX1NUT1JFX3N0cmluZ3M7Ci0rCQlQRU1fcmVhZF9iaW9fRUNfUFVCS0VZOwotKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9lbmQ7Ci0rCQlpMmRfRUNfUFVCS0VZOwotKwkJRUNEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJQVNOMV9wdXRfZW9jOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxpY2l0X3BvbGljeTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9leHBsX3BvbGljeTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3RhYmxlX2NsZWFudXA7Ci0rCQlTVE9SRV9tb2RpZnlfcHJpdmF0ZV9rZXk7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9mcmVlOwotKwkJRUNfTUVUSE9EX2dldF9maWVsZF90eXBlOwotKwkJRUNfR0ZwX25pc3RfbWV0aG9kOwotKwkJU1RPUkVfbWV0aF9zZXRfbW9kaWZ5X2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9tb2RpZnlfZnVuY3Rpb247Ci0rCQlTVE9SRV9wYXJzZV9hdHRyc19uZXh0OwotKwkJRU5HSU5FX2xvYWRfcGFkbG9jazsKLSsJCUVDX0dST1VQX3NldF9jdXJ2ZV9uYW1lOwotKwkJWDUwOV9DRVJUX1BBSVJfaXQ7Ci0rCQlTVE9SRV9tZXRoX2dldF9yZXZva2VfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X3Jldm9rZV9mdW5jdGlvbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZ2V0X2Z1bmN0aW9uOwotKwkJU1RPUkVfbW9kaWZ5X251bWJlcjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfc3RvcmVfZnVuY3Rpb247Ci0rCQlTVE9SRV9zdG9yZV9wcml2YXRlX2tleTsKLSsJCUJOX0dGMm1fbW9kX3Nxcl9hcnI7Ci0rCQlSU0Ffc2V0dXBfYmxpbmRpbmc7Ci0rCQlCSU9fc19kYXRhZ3JhbTsKLSsJCVNUT1JFX01lbW9yeTsKLSsJCXNrX2ZpbmRfZXg7Ci0rCQlFQ19HUk9VUF9zZXRfY3VydmVfR0YybTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RTQTsKLSsJCVBPTElDWV9DT05TVFJBSU5UU19uZXc7Ci0rCQlCTl9HRjJtX21vZF9zcXJ0OwotKwkJRUNESF9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlFQ19LRVlfZ2VuZXJhdGVfa2V5OwotKwkJU0hBMzg0X1VwZGF0ZTsKLSsJCUJOX0dGMm1fYXJyMnBvbHk7Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2dldF9mdW5jdGlvbjsKLSsJCVNUT1JFX21ldGhfc2V0X2NsZWFudXBfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2NsZWFudXBfZnVuY3Rpb247Ci0rCQlFQ19HUk9VUF9jaGVjazsKLSsJCWQyaV9FQ1ByaXZhdGVLZXlfYmlvOwotKwkJRUNfS0VZX2luc2VydF9rZXlfbWV0aG9kX2RhdGE7Ci0rCQlTVE9SRV9tZXRoX2dldF9sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2RlcHRoOwotKwkJU0hBMjI0X0ZpbmFsOwotKwkJU1RPUkVfbWV0aF9zZXRfdXBkYXRlX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247Ci0rCQlTSEEyMjRfVXBkYXRlOwotKwkJZDJpX0VDUHJpdmF0ZUtleTsKLSsJCUFTTjFfaXRlbV9uZGVmX2kyZDsKLSsJCVNUT1JFX2RlbGV0ZV9wcml2YXRlX2tleTsKLSsJCUVSUl9wb3BfdG9fbWFyazsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfU1RPUkU7Ci0rCQlYNTA5X3BvbGljeV9sZXZlbF9nZXQwX25vZGU7Ci0rCQlpMmRfUEtDUzdfTkRFRjsKLSsJCUVDX0dST1VQX2dldF9kZWdyZWU7Ci0rCQlBU04xX2dlbmVyYXRlX3YzOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9jc3RyOwotKwkJWDUwOV9wb2xpY3lfdHJlZV9sZXZlbF9jb3VudDsKLSsJCUJOX0dGMm1fYWRkOwotKwkJRUNfS0VZX2dldDBfZ3JvdXA7Ci0rCQlTVE9SRV9nZW5lcmF0ZV9jcmw7Ci0rCQlTVE9SRV9zdG9yZV9wdWJsaWNfa2V5OwotKwkJWDUwOV9DRVJUX1BBSVJfZnJlZTsKLSsJCVNUT1JFX3Jldm9rZV9wcml2YXRlX2tleTsKLSsJCUJOX25pc3RfbW9kXzIyNDsKLSsJCVNIQTUxMl9GaW5hbDsKLSsJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfZG47Ci0rCQlTVE9SRV9tZXRoX2dldF9pbml0aWFsaXNlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9pbml0aWFsaXNlX2Z1bmN0aW9uOwotKwkJU1RPUkVfZGVsZXRlX251bWJlcjsKLSsJCWkyZF9FQ19QVUJLRVlfYmlvOwotKwkJQklPX2RncmFtX25vbl9mYXRhbF9lcnJvcjsKLSsJCUVDX0dST1VQX2dldF9hc24xX2ZsYWc7Ci0rCQlTVE9SRV9BVFRSX0lORk9faW5fZXg7Ci0rCQlTVE9SRV9saXN0X2NybF9zdGFydDsKLSsJCUVDREhfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNUT1JFX21ldGhfZ2V0X21vZGlmeV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbW9kaWZ5X2Z1bmN0aW9uOwotKwkJdjJpX0FTTjFfQklUX1NUUklORzsKLSsJCVNUT1JFX3N0b3JlX2NlcnRpZmljYXRlOwotKwkJT0JKX2JzZWFyY2hfZXg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZGVmYXVsdDsKLSsJCVNUT1JFX0FUVFJfSU5GT19zZXRfc2hhMXN0cjsKLSsJCUJOX0dGMm1fbW9kX2ludjsKLSsJCUJOX0dGMm1fbW9kX2V4cDsKLSsJCVNUT1JFX21vZGlmeV9wdWJsaWNfa2V5OwotKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9zdGFydF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9zdGFydF9mdW5jdGlvbjsKLSsJCUVDX0dST1VQX2dldDBfc2VlZDsKLSsJCVNUT1JFX3N0b3JlX2FyYml0cmFyeTsKLSsJCVNUT1JFX21ldGhfc2V0X3VubG9ja19zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJQk5fR0YybV9tb2RfZGl2X2FycjsKLSsJCUVOR0lORV9zZXRfRUNEU0E7Ci0rCQlTVE9SRV9jcmVhdGVfbWV0aG9kOwotKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnQ7Ci0rCQlFQ19LRVlfZ2V0MF9wcml2YXRlX2tleTsKLSsJCVBFTV93cml0ZV9FQ19QVUJLRVk7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxOwotKwkJRUNESF9zZXRfbWV0aG9kOwotKwkJdjJpX0dFTkVSQUxfTkFNRV9leDsKLSsJCUVDREhfc2V0X2V4X2RhdGE7Ci0rCQlTVE9SRV9nZW5lcmF0ZV9rZXk7Ci0rCQlCTl9uaXN0X21vZF81MjE7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2dldDBfbGV2ZWw7Ci0rCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udmVyc2lvbl9mb3JtOwotKwkJRUNfR1JPVVBfc2V0X3BvaW50X2NvbnZfZm9ybTsKLSsJCVBFTV9yZWFkX0VDX1BVQktFWTsKLSsJCWkyZF9FQ0RTQV9TSUc7Ci0rCQlFQ0RTQV9PcGVuU1NMOwotKwkJU1RPUkVfZGVsZXRlX2NybDsKLSsJCUVDX0tFWV9nZXRfZW5jX2ZsYWdzOwotKwkJQVNOMV9jb25zdF9jaGVja19pbmZpbml0ZV9lbmQ7Ci0rCQlFVlBfUEtFWV9kZWxldGVfYXR0cjsKLSsJCUVDRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGMm07Ci0rCQlFQ19QT0lOVF9zZXRfY29tcHJfY29vcmRzX0dGMm07Ci0rCQlFQ19HUk9VUF9jbXA7Ci0rCQlTVE9SRV9yZXZva2VfY2VydGlmaWNhdGU7Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMjU2OwotKwkJU1RPUkVfbWV0aF9nZXRfZGVsZXRlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9kZWxldGVfZnVuY3Rpb247Ci0rCQlTSEEyMjRfSW5pdDsKLSsJCVBFTV9yZWFkX0VDUHJpdmF0ZUtleTsKLSsJCVNIQTUxMl9Jbml0OwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kcDsKLSsJCUJOX3NldF9uZWdhdGl2ZTsKLSsJCUVSUl9sb2FkX0VDRFNBX3N0cmluZ3M7Ci0rCQlFQ19HUk9VUF9nZXRfYmFzaXNfdHlwZTsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9uZXh0OwotKwkJaTJ2X0FTTjFfQklUX1NUUklORzsKLSsJCVNUT1JFX09CSkVDVF9mcmVlOwotKwkJQk5fbmlzdF9tb2RfMzg0OwotKwkJaTJkX1g1MDlfQ0VSVF9QQUlSOwotKwkJUEVNX3dyaXRlX0VDUEtQYXJhbWV0ZXJzOwotKwkJRUNESF9jb21wdXRlX2tleTsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX3NoYTFzdHI7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0VDREg7Ci0rCQlwcXVldWVfcG9wOwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfY3N0cjsKLSsJCVBPTElDWV9DT05TVFJBSU5UU19pdDsKLSsJCVNUT1JFX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlFVlBfUEtFWV9nZXRfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3BvbGljeTsKLSsJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWQ7Ci0rCQlTSEEyNTY7Ci0rCQlpMmRfRUNQcml2YXRlS2V5X2ZwOwotKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX3VzZXJfcG9saWNpZXM7Ci0rCQlYNTA5X3BjeV90cmVlX2dldDBfdXNyX3BvbGljaWVzOwotKwkJT1BFTlNTTF9ESVJfcmVhZDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNEU0E7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9sb29rdXA7Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm07Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jkc19HRjJtOwotKwkJRUNfR1JPVVBfZHVwOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDRFNBOwotKwkJRUNfS0VZX25ldzsKLSsJCVNIQTI1Nl9UcmFuc2Zvcm07Ci0rCQlFQ19LRVlfc2V0X2VuY19mbGFnczsKLSsJCUVDRFNBX3ZlcmlmeTsKLSsJCUVDX1BPSU5UX3BvaW50MmhleDsKLSsJCUVOR0lORV9nZXRfU1RPUkU7Ci0rCQlTSEE1MTI7Ci0rCQlTVE9SRV9nZXRfY2VydGlmaWNhdGU7Ci0rCQlFQ0RTQV9kb19zaWduX2V4OwotKwkJRUNEU0FfZG9fdmVyaWZ5OwotKwkJZDJpX0VDUHJpdmF0ZUtleV9mcDsKLSsJCVNUT1JFX2RlbGV0ZV9jZXJ0aWZpY2F0ZTsKLSsJCVNIQTUxMl9UcmFuc2Zvcm07Ci0rCQlYNTA5X1NUT1JFX3NldDFfcGFyYW07Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlTVE9SRV9mcmVlOwotKwkJUEVNX3dyaXRlX0VDUHJpdmF0ZUtleTsKLSsJCVNUT1JFX21ldGhfZ2V0X3VubG9ja19zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJU1RPUkVfZ2V0X2V4X2RhdGE7Ci0rCQlFQ19LRVlfc2V0X3B1YmxpY19rZXk7Ci0rCQlQRU1fcmVhZF9FQ1BLUGFyYW1ldGVyczsKLSsJCVg1MDlfQ0VSVF9QQUlSX25ldzsKLSsJCUVOR0lORV9yZWdpc3Rlcl9TVE9SRTsKLSsJCVJTQV9nZW5lcmF0ZV9rZXlfZXg7Ci0rCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKLSsJCUVDUGFyYW1ldGVyc19wcmludF9mcDsKLSsJCVg1MDlWM19OQU1FX2Zyb21fc2VjdGlvbjsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cjsKLSsJCVNUT1JFX21vZGlmeV9jcmw7Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X3N0YXJ0OwotKwkJUE9MSUNZX01BUFBJTkdTX2l0OwotKwkJR0VORVJBTF9TVUJUUkVFX2l0OwotKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX25hbWU7Ci0rCQlQRU1fd3JpdGVfWDUwOV9DRVJUX1BBSVI7Ci0rCQlCSU9fZHVtcF9pbmRlbnRfY2I7Ci0rCQlkMmlfWDUwOV9DRVJUX1BBSVI7Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZHA7Ci0rCQlhc24xX2NvbnN0X0ZpbmlzaDsKLSsJCWkyZF9FQ19QVUJLRVlfZnA7Ci0rCQlCTl9uaXN0X21vZF8yNTY7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3RhYmxlOwotKwkJcHF1ZXVlX2ZyZWU7Ci0rCQlCTl9CTElORElOR19jcmVhdGVfcGFyYW07Ci0rCQlFQ0RTQV9zaXplOwotKwkJZDJpX0VDX1BVQktFWV9iaW87Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfNTIxOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9zaGExc3RyOwotKwkJQk5fZ2VuZXJhdGVfcHJpbWVfZXg7Ci0rCQlFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZTsKLSsJCVNIQTI1Nl9GaW5hbDsKLSsJCURIX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXg7Ci0rCQlQRU1fcmVhZF9iaW9fRUNQcml2YXRlS2V5OwotKwkJU1RPUkVfbWV0aF9nZXRfY2xlYW51cF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfY2xlYW51cF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfRUNESDsKLSsJCWQyaV9FQ0RTQV9TSUc7Ci0rCQlCTl9pc19wcmltZV9mYXN0dGVzdF9leDsKLSsJCUVDRFNBX3NpZ247Ci0rCQlYNTA5X3BvbGljeV9jaGVjazsKLSsJCUVWUF9QS0VZX2dldF9hdHRyX2J5X05JRDsKLSsJCVNUT1JFX3NldF9leF9kYXRhOwotKwkJRU5HSU5FX2dldF9FQ0RTQTsKLSsJCUVWUF9lY2RzYTsKLSsJCUJOX0JMSU5ESU5HX2dldF9mbGFnczsKLSsJCVBLQ1MxMl9hZGRfY2VydDsKLSsJCVNUT1JFX09CSkVDVF9uZXc7Ci0rCQlFUlJfbG9hZF9FQ0RIX3N0cmluZ3M7Ci0rCQlFQ19LRVlfZHVwOwotKwkJRVZQX0NJUEhFUl9DVFhfcmFuZF9rZXk7Ci0rCQlFQ0RTQV9zZXRfbWV0aG9kOwotKwkJYTJpX0lQQUREUkVTU19OQzsKLSsJCWQyaV9FQ1BhcmFtZXRlcnM7Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX2VuZDsKLSsJCVNUT1JFX2dldF9jcmw7Ci0rCQlYNTA5X1BPTElDWV9OT0RFX3ByaW50OwotKwkJU0hBMzg0X0luaXQ7Ci0rCQlFQ19HRjJtX3NpbXBsZV9tZXRob2Q7Ci0rCQlFQ0RTQV9zZXRfZXhfZGF0YTsKLSsJCVNIQTM4NF9GaW5hbDsKLSsJCVBLQ1M3X3NldF9kaWdlc3Q7Ci0rCQlFQ19LRVlfcHJpbnQ7Ci0rCQlTVE9SRV9tZXRoX3NldF9sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJRUNEU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNIQTM4NDsKLSsJCVBPTElDWV9NQVBQSU5HX25ldzsKLSsJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kcDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcG9saWN5X3RyZWU7Ci0rCQlFQ19HUk9VUF9zZXRfYXNuMV9mbGFnOwotKwkJRUNfS0VZX2NoZWNrX2tleTsKLSsJCWQyaV9FQ19QVUJLRVlfZnA7Ci0rCQlQS0NTN19zZXQwX3R5cGVfb3RoZXI7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOV9DRVJUX1BBSVI7Ci0rCQlwcXVldWVfbmV4dDsKLSsJCVNUT1JFX21ldGhfZ2V0X2xpc3RfZW5kX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X2VuZF9mdW5jdGlvbjsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdGltZTsKLSsJCXBxdWV1ZV9uZXc7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfRUNESDsKLSsJCVNUT1JFX25ld19tZXRob2Q7Ci0rCQlQS0NTMTJfYWRkX2tleTsKLSsJCURTT19tZXJnZTsKLSsJCUVDX1BPSU5UX2hleDJwb2ludDsKLSsJCUJJT19kdW1wX2NiOwotKwkJU0hBMjU2X1VwZGF0ZTsKLSsJCXBxdWV1ZV9pbnNlcnQ7Ci0rCQlwaXRlbV9mcmVlOwotKwkJQk5fR0YybV9tb2RfaW52X2FycjsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX0VDRFNBOwotKwkJQk5fQkxJTkRJTkdfc2V0X3RocmVhZF9pZDsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzgxOTI7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9jbGVhcl9mbGFnczsKLSsJCWdldF9yZmMyNDA5X3ByaW1lXzEwMjQ7Ci0rCQlESF9jaGVja19wdWJfa2V5OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMjA0ODsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzYxNDQ7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV8xNTM2OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMzA3MjsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzQwOTY7Ci0rCQlnZXRfcmZjMjQwOV9wcmltZV83Njg7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZmxhZ3M7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9uZXc7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9mcmVlOwotKwkJQ2FtZWxsaWFfY2JjX2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9jZmIxMjhfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYjFfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYjhfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2N0cjEyOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY2Zicl9lbmNyeXB0X2Jsb2NrOwotKwkJQ2FtZWxsaWFfZGVjcnlwdDsKLSsJCUNhbWVsbGlhX2VjYl9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX29mYjEyOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfc2V0X2tleTsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfY2JjOwotKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmIxMjg7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjE7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjg7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2VjYjsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfb2ZiOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9jYmM7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjEyODsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiODsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfZWNiOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9vZmI7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2NiYzsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiMTI4OwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxOwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmI4OwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9lY2I7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X29mYjsKLSsJCWEyaV9pcGFkZDsKLSsJCUFTSWRlbnRpZmllcnNfZnJlZTsKLSsJCWkyZF9BU0lkT3JSYW5nZTsKLSsJCUVWUF9DSVBIRVJfYmxvY2tfc2l6ZTsKLSsJCXYzX2FzaWRfaXNfY2Fub25pY2FsOwotKwkJSVBBZGRyZXNzQ2hvaWNlX2ZyZWU7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9zZXRfYXBwX2RhdGE7Ci0rCQlCSU9fc2V0X2NhbGxiYWNrX2FyZzsKLSsJCXYzX2FkZHJfYWRkX3ByZWZpeDsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfaXQ7Ci0rCQlCSU9fc2V0X2ZsYWdzOwotKwkJQVNJZGVudGlmaWVyc19pdDsKLSsJCXYzX2FkZHJfZ2V0X3JhbmdlOwotKwkJQklPX21ldGhvZF90eXBlOwotKwkJdjNfYWRkcl9pbmhlcml0czsKLSsJCUlQQWRkcmVzc0Nob2ljZV9pdDsKLSsJCUFFU19pZ2VfZW5jcnlwdDsKLSsJCXYzX2FkZHJfYWRkX3JhbmdlOwotKwkJRVZQX0NJUEhFUl9DVFhfbmlkOwotKwkJZDJpX0FTUmFuZ2U7Ci0rCQl2M19hZGRyX2FkZF9pbmhlcml0OwotKwkJdjNfYXNpZF9hZGRfaWRfb3JfcmFuZ2U7Ci0rCQl2M19hZGRyX3ZhbGlkYXRlX3Jlc291cmNlX3NldDsKLSsJCUVWUF9DSVBIRVJfaXZfbGVuZ3RoOwotKwkJRVZQX01EX3R5cGU7Ci0rCQl2M19hc2lkX2Nhbm9uaXplOwotKwkJSVBBZGRyZXNzUmFuZ2VfZnJlZTsKLSsJCXYzX2FzaWRfYWRkX2luaGVyaXQ7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9rZXlfbGVuZ3RoOwotKwkJSVBBZGRyZXNzUmFuZ2VfbmV3OwotKwkJQVNJZE9yUmFuZ2VfbmV3OwotKwkJRVZQX01EX3NpemU7Ci0rCQlFVlBfTURfQ1RYX3Rlc3RfZmxhZ3M7Ci0rCQlCSU9fY2xlYXJfZmxhZ3M7Ci0rCQlpMmRfQVNSYW5nZTsKLSsJCUlQQWRkcmVzc1JhbmdlX2l0OwotKwkJSVBBZGRyZXNzQ2hvaWNlX25ldzsKLSsJCUFTSWRlbnRpZmllckNob2ljZV9uZXc7Ci0rCQlBU1JhbmdlX2ZyZWU7Ci0rCQlFVlBfTURfcGtleV90eXBlOwotKwkJRVZQX01EX0NUWF9jbGVhcl9mbGFnczsKLSsJCUlQQWRkcmVzc0ZhbWlseV9mcmVlOwotKwkJaTJkX0lQQWRkcmVzc0ZhbWlseTsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfbmV3OwotKwkJRVZQX0NJUEhFUl9mbGFnczsKLSsJCXYzX2FzaWRfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OwotKwkJZDJpX0lQQWRkcmVzc1JhbmdlOwotKwkJQUVTX2JpX2lnZV9lbmNyeXB0OwotKwkJQklPX2dldF9jYWxsYmFjazsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfZnJlZTsKLSsJCXYzX2FkZHJfc3Vic2V0OwotKwkJZDJpX0lQQWRkcmVzc0ZhbWlseTsKLSsJCXYzX2FzaWRfc3Vic2V0OwotKwkJQklPX3Rlc3RfZmxhZ3M7Ci0rCQlpMmRfQVNJZGVudGlmaWVyQ2hvaWNlOwotKwkJQVNSYW5nZV9pdDsKLSsJCWQyaV9BU0lkZW50aWZpZXJzOwotKwkJQVNSYW5nZV9uZXc7Ci0rCQlkMmlfSVBBZGRyZXNzQ2hvaWNlOwotKwkJdjNfYWRkcl9nZXRfYWZpOwotKwkJRVZQX0NJUEhFUl9rZXlfbGVuZ3RoOwotKwkJRVZQX0NpcGhlcjsKLSsJCWkyZF9JUEFkZHJlc3NPclJhbmdlOwotKwkJQVNJZE9yUmFuZ2VfaXQ7Ci0rCQlFVlBfQ0lQSEVSX25pZDsKLSsJCWkyZF9JUEFkZHJlc3NDaG9pY2U7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplOwotKwkJQVNJZGVudGlmaWVyc19uZXc7Ci0rCQl2M19hZGRyX3ZhbGlkYXRlX3BhdGg7Ci0rCQlJUEFkZHJlc3NGYW1pbHlfbmV3OwotKwkJRVZQX01EX0NUWF9zZXRfZmxhZ3M7Ci0rCQl2M19hZGRyX2lzX2Nhbm9uaWNhbDsKLSsJCWkyZF9JUEFkZHJlc3NSYW5nZTsKLSsJCUlQQWRkcmVzc0ZhbWlseV9pdDsKLSsJCXYzX2FzaWRfaW5oZXJpdHM7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jaXBoZXI7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9nZXRfYXBwX2RhdGE7Ci0rCQlFVlBfTURfYmxvY2tfc2l6ZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2ZsYWdzOwotKwkJdjNfYXNpZF92YWxpZGF0ZV9wYXRoOwotKwkJZDJpX0lQQWRkcmVzc09yUmFuZ2U7Ci0rCQl2M19hZGRyX2Nhbm9uaXplOwotKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2l0OwotKwkJRVZQX01EX0NUWF9tZDsKLSsJCWQyaV9BU0lkZW50aWZpZXJDaG9pY2U7Ci0rCQlCSU9fbWV0aG9kX25hbWU7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGg7Ci0rCQlBU0lkT3JSYW5nZV9mcmVlOwotKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2ZyZWU7Ci0rCQlCSU9fZ2V0X2NhbGxiYWNrX2FyZzsKLSsJCUJJT19zZXRfY2FsbGJhY2s7Ci0rCQlkMmlfQVNJZE9yUmFuZ2U7Ci0rCQlpMmRfQVNJZGVudGlmaWVyczsKLSsJCVNFRURfZGVjcnlwdDsKLSsJCVNFRURfZW5jcnlwdDsKLSsJCVNFRURfY2JjX2VuY3J5cHQ7Ci0rCQlFVlBfc2VlZF9vZmI7Ci0rCQlTRUVEX2NmYjEyOF9lbmNyeXB0OwotKwkJU0VFRF9vZmIxMjhfZW5jcnlwdDsKLSsJCUVWUF9zZWVkX2NiYzsKLSsJCVNFRURfZWNiX2VuY3J5cHQ7Ci0rCQlFVlBfc2VlZF9lY2I7Ci0rCQlTRUVEX3NldF9rZXk7Ci0rCQlFVlBfc2VlZF9jZmIxMjg7Ci0rCQlYNTA5X0VYVEVOU0lPTlNfaXQ7Ci0rCQlYNTA5X2dldDFfb2NzcDsKLSsJCU9DU1BfUkVRX0NUWF9mcmVlOwotKwkJaTJkX1g1MDlfRVhURU5TSU9OUzsKLSsJCU9DU1Bfc2VuZHJlcV9uYmlvOwotKwkJT0NTUF9zZW5kcmVxX25ldzsKLSsJCWQyaV9YNTA5X0VYVEVOU0lPTlM7Ci0rCQlYNTA5X0FMR09SU19pdDsKLSsJCVg1MDlfQUxHT1JfZ2V0MDsKLSsJCVg1MDlfQUxHT1Jfc2V0MDsKLSsJCUFFU191bndyYXBfa2V5OwotKwkJQUVTX3dyYXBfa2V5OwotKwkJWDUwOWF0X2dldDBfZGF0YV9ieV9PQko7Ci0rCQlBU04xX1RZUEVfc2V0MTsKLSsJCUFTTjFfU1RSSU5HX3NldDA7Ci0rCQlpMmRfWDUwOV9BTEdPUlM7Ci0rCQlCSU9fZl96bGliOwotKwkJQ09NUF96bGliX2NsZWFudXA7Ci0rCQlkMmlfWDUwOV9BTEdPUlM7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfZnJlZTsKLSsJCVBFTV93cml0ZV9DTVM7Ci0rCQlDTVNfYWRkMF9DZXJ0aWZpY2F0ZUNob2ljZXM7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKLSsJCUVSUl9sb2FkX0NNU19zdHJpbmdzOwotKwkJQ01TX3NpZ25fcmVjZWlwdDsKLSsJCWkyZF9DTVNfQ29udGVudEluZm87Ci0rCQlDTVNfc2lnbmVkX2RlbGV0ZV9hdHRyOwotKwkJZDJpX0NNU19iaW87Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfTklEOwotKwkJQ01TX3ZlcmlmeTsKLSsJCVNNSU1FX3JlYWRfQ01TOwotKwkJQ01TX2RlY3J5cHRfc2V0MV9rZXk7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX2FsZ3M7Ci0rCQlDTVNfYWRkMV9jZXJ0OwotKwkJQ01TX3NldF9kZXRhY2hlZDsKLSsJCUNNU19lbmNyeXB0OwotKwkJQ01TX0VudmVsb3BlZERhdGFfY3JlYXRlOwotKwkJQ01TX3VuY29tcHJlc3M7Ci0rCQlDTVNfYWRkMF9jcmw7Ci0rCQlDTVNfU2lnbmVySW5mb192ZXJpZnlfY29udGVudDsKLSsJCUNNU191bnNpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOwotKwkJUEVNX3dyaXRlX2Jpb19DTVM7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHI7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2NlcnRfY21wOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX2FsZ3M7Ci0rCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9hbGdzOwotKwkJQ01TX0NvbnRlbnRJbmZvX2ZyZWU7Ci0rCQlDTVNfZmluYWw7Ci0rCQlDTVNfYWRkX3NpbXBsZV9zbWltZWNhcDsKLSsJCUNNU19TaWduZXJJbmZvX3ZlcmlmeTsKLSsJCUNNU19kYXRhOwotKwkJQ01TX0NvbnRlbnRJbmZvX2l0OwotKwkJZDJpX0NNU19SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19jb21wcmVzczsKLSsJCUNNU19kaWdlc3RfY3JlYXRlOwotKwkJQ01TX1NpZ25lckluZm9fY2VydF9jbXA7Ci0rCQlDTVNfU2lnbmVySW5mb19zaWduOwotKwkJQ01TX2RhdGFfY3JlYXRlOwotKwkJaTJkX0NNU19iaW87Ci0rCQlDTVNfRW5jcnlwdGVkRGF0YV9zZXQxX2tleTsKLSsJCUNNU19kZWNyeXB0OwotKwkJaW50X3NtaW1lX3dyaXRlX0FTTjE7Ci0rCQlDTVNfdW5zaWduZWRfZGVsZXRlX2F0dHI7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlDTVNfYWRkX3NtaW1lY2FwOwotKwkJUEVNX3JlYWRfQ01TOwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9PQko7Ci0rCQlkMmlfQ01TX0NvbnRlbnRJbmZvOwotKwkJQ01TX2FkZF9zdGFuZGFyZF9zbWltZWNhcDsKLSsJCUNNU19Db250ZW50SW5mb19uZXc7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb190eXBlOwotKwkJQ01TX2dldDBfdHlwZTsKLSsJCUNNU19pc19kZXRhY2hlZDsKLSsJCUNNU19zaWduOwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHI7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfT0JKOwotKwkJU01JTUVfd3JpdGVfQ01TOwotKwkJQ01TX0VuY3J5cHRlZERhdGFfZGVjcnlwdDsKLSsJCUNNU19nZXQwX1JlY2lwaWVudEluZm9zOwotKwkJQ01TX2FkZDBfUmV2b2NhdGlvbkluZm9DaG9pY2U7Ci0rCQlDTVNfZGVjcnlwdF9zZXQxX3BrZXk7Ci0rCQlDTVNfU2lnbmVySW5mb19zZXQxX3NpZ25lcl9jZXJ0OwotKwkJQ01TX2dldDBfc2lnbmVyczsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9nZXQwX3ZhbHVlczsKLSsJCUNNU19zaWduZWRfZ2V0MF9kYXRhX2J5X09CSjsKLSsJCUNNU19nZXQwX1NpZ25lckluZm9zOwotKwkJQ01TX2FkZDBfY2VydDsKLSsJCUNNU19FbmNyeXB0ZWREYXRhX2VuY3J5cHQ7Ci0rCQlDTVNfZGlnZXN0X3ZlcmlmeTsKLSsJCUNNU19zZXQxX3NpZ25lcnNfY2VydHM7Ci0rCQlDTVNfc2lnbmVkX2dldF9hdHRyOwotKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9rZXk7Ci0rCQlDTVNfU2lnbmVkRGF0YV9pbml0OwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2VrcmlfZ2V0MF9pZDsKLSsJCUNNU192ZXJpZnlfcmVjZWlwdDsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9pdDsKLSsJCVBFTV9yZWFkX2Jpb19DTVM7Ci0rCQlDTVNfZ2V0MV9jcmxzOwotKwkJQ01TX2FkZDBfcmVjaXBpZW50X2tleTsKLSsJCVNNSU1FX3JlYWRfQVNOMTsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9uZXc7Ci0rCQlDTVNfZ2V0MF9jb250ZW50OwotKwkJQ01TX2dldDFfUmVjZWlwdFJlcXVlc3Q7Ci0rCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9pZF9jbXA7Ci0rCQlDTVNfYWRkMV9SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmVyX2lkOwotKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyOwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfZ2V0MV9jZXJ0czsKLSsJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKLSsJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQ01TX2RhdGFGaW5hbDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfZ2V0MF9zaWduZXJfaWQ7Ci0rCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9zaWdyX2lkOwotKwkJaTJkX0NNU19SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19hZGQxX3JlY2lwaWVudF9jZXJ0OwotKwkJQ01TX2RhdGFJbml0OwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQ01TX1JlY2lwaWVudEluZm9fZGVjcnlwdDsKLSsJCUNNU19zaWduZWRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlDTVNfZ2V0MF9lQ29udGVudFR5cGU7Ci0rCQlDTVNfc2V0MV9lQ29udGVudFR5cGU7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfY3JlYXRlMDsKLSsJCUNNU19hZGQxX3NpZ25lcjsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGtleTsKLSsJCUVOR0lORV9zZXRfbG9hZF9zc2xfY2xpZW50X2NlcnRfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2xkX3NzbF9jbG50X2NlcnRfZm47Ci0rCQlFTkdJTkVfZ2V0X3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2ZuOwotKwkJRU5HSU5FX2xvYWRfc3NsX2NsaWVudF9jZXJ0OwotKwkJRU5HSU5FX2xvYWRfY2FwaTsKLSsJCU9QRU5TU0xfaXNzZXJ2aWNlOwotKwkJRklQU19kc2Ffc2lnX2RlY29kZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2NsZWFyX2ZsYWdzOwotKwkJRklQU19yYW5kX3N0YXR1czsKLSsJCUZJUFNfcmFuZF9zZXRfa2V5OwotKwkJQ1JZUFRPX3NldF9tZW1faW5mb19mdW5jdGlvbnM7Ci0rCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXlfZXg7Ci0rCQlpbnRfRVJSX3NldF9zdGF0ZV9mdW5jOwotKwkJaW50X0VWUF9NRF9zZXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCWludF9DUllQVE9fc2V0X2RvX2R5bmxvY2tfY2FsbGJhY2s7Ci0rCQlGSVBTX3JuZ19zdGljazsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9mbGFnczsKLSsJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXg7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2NoZWNrOwotKwkJRklQU19yYW5kX3NldF9kdDsKLSsJCUNSWVBUT19kYmdfcG9wX2luZm87Ci0rCQlGSVBTX2RzYV9mcmVlOwotKwkJUlNBX1g5MzFfZGVyaXZlX2V4OwotKwkJRklQU19yc2FfbmV3OwotKwkJRklQU19yYW5kX2J5dGVzOwotKwkJZmlwc19jaXBoZXJfdGVzdDsKLSsJCUVWUF9DSVBIRVJfQ1RYX3Rlc3RfZmxhZ3M7Ci0rCQlDUllQVE9fbWFsbG9jX2RlYnVnX2luaXQ7Ci0rCQlDUllQVE9fZGJnX3B1c2hfaW5mbzsKLSsJCUZJUFNfY29ycnVwdF9yc2Ffa2V5Z2VuOwotKwkJRklQU19kaF9uZXc7Ci0rCQlGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbjsKLSsJCUZJUFNfZGhfZnJlZTsKLSsJCWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdDsKLSsJCUVWUF9hZGRfYWxnX21vZHVsZTsKLSsJCWludF9SQU5EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCWludF9FVlBfQ0lQSEVSX3NldF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJaW50X0VWUF9NRF9pbml0X2VuZ2luZV9jYWxsYmFja3M7Ci0rCQlGSVBTX3JhbmRfdGVzdF9tb2RlOwotKwkJRklQU19yYW5kX3Jlc2V0OwotKwkJRklQU19kc2FfbmV3OwotKwkJaW50X1JBTkRfc2V0X2NhbGxiYWNrczsKLSsJCUJOX1g5MzFfZGVyaXZlX3ByaW1lX2V4OwotKwkJaW50X0VSUl9saWJfaW5pdDsKLSsJCWludF9FVlBfQ0lQSEVSX2luaXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCUZJUFNfcnNhX2ZyZWU7Ci0rCQlGSVBTX2RzYV9zaWdfZW5jb2RlOwotKwkJQ1JZUFRPX2RiZ19yZW1vdmVfYWxsX2luZm87Ci0rCQlPUEVOU1NMX2luaXQ7Ci0rCQlDUllQVE9fc3RyZHVwOwotKwkJSlBBS0VfU1RFUDNBX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQMV9yZWxlYXNlOwotKwkJSlBBS0VfZ2V0X3NoYXJlZF9rZXk7Ci0rCQlKUEFLRV9TVEVQM0JfaW5pdDsKLSsJCUpQQUtFX1NURVAxX2dlbmVyYXRlOwotKwkJSlBBS0VfU1RFUDFfaW5pdDsKLSsJCUpQQUtFX1NURVAzQl9wcm9jZXNzOwotKwkJSlBBS0VfU1RFUDJfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9DVFhfbmV3OwotKwkJSlBBS0VfQ1RYX2ZyZWU7Ci0rCQlKUEFLRV9TVEVQM0JfcmVsZWFzZTsKLSsJCUpQQUtFX1NURVAzQV9yZWxlYXNlOwotKwkJSlBBS0VfU1RFUDJfcHJvY2VzczsKLSsJCUpQQUtFX1NURVAzQl9nZW5lcmF0ZTsKLSsJCUpQQUtFX1NURVAxX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQM0FfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9TVEVQMl9yZWxlYXNlOwotKwkJSlBBS0VfU1RFUDNBX2luaXQ7Ci0rCQlFUlJfbG9hZF9KUEFLRV9zdHJpbmdzOwotKwkJSlBBS0VfU1RFUDJfaW5pdDsKLSsJCXBxdWV1ZV9zaXplOwotKwkJaTJkX1RTX0FDQ1VSQUNZOwotKwkJaTJkX1RTX01TR19JTVBSSU5UX2ZwOwotKwkJaTJkX1RTX01TR19JTVBSSU5UOwotKwkJRVZQX1BLRVlfcHJpbnRfcHVibGljOwotKwkJRVZQX1BLRVlfQ1RYX25ldzsKLSsJCWkyZF9UU19UU1RfSU5GTzsKLSsJCUVWUF9QS0VZX2FzbjFfZmluZDsKLSsJCURTT19NRVRIT0RfYmVvczsKLSsJCVRTX0NPTkZfbG9hZF9jZXJ0OwotKwkJVFNfUkVRX2dldF9leHQ7Ci0rCQlFVlBfUEtFWV9zaWduX2luaXQ7Ci0rCQlBU04xX2l0ZW1fcHJpbnQ7Ci0rCQlUU19UU1RfSU5GT19zZXRfbm9uY2U7Ci0rCQlUU19SRVNQX2R1cDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X21ldGhzOwotKwkJRVZQX1BLRVlfYXNuMV9hZGQwOwotKwkJUEtDUzdfYWRkMF9hdHRyaWJfc2lnbmluZ190aW1lOwotKwkJaTJkX1RTX1RTVF9JTkZPX2ZwOwotKwkJQklPX2FzbjFfZ2V0X3ByZWZpeDsKLSsJCVRTX1RTVF9JTkZPX3NldF90aW1lOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVjcnlwdDsKLSsJCUVWUF9QS0VZX3NldF90eXBlX3N0cjsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfa2V5Z2VuX2luZm87Ci0rCQlUU19SRVFfc2V0X3BvbGljeV9pZDsKLSsJCWQyaV9UU19SRVNQX2ZwOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9lbmdpbmU7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZzsKLSsJCVdISVJMUE9PTF9Jbml0OwotKwkJVFNfUkVTUF9zZXRfc3RhdHVzX2luZm87Ci0rCQlFVlBfUEtFWV9rZXlnZW47Ci0rCQlFVlBfRGlnZXN0U2lnbkluaXQ7Ci0rCQlUU19BQ0NVUkFDWV9zZXRfbWlsbGlzOwotKwkJVFNfUkVRX2R1cDsKLSsJCUdFTkVSQUxfTkFNRV9kdXA7Ci0rCQlBU04xX1NFUVVFTkNFX0FOWV9pdDsKLSsJCVdISVJMUE9PTDsKLSsJCVg1MDlfU1RPUkVfZ2V0MV9jcmxzOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aDsKLSsJCUVWUF9QS0VZX2FzbjFfbmV3OwotKwkJQklPX25ld19OREVGOwotKwkJRU5HSU5FX2dldF9wa2V5X21ldGg7Ci0rCQlUU19NU0dfSU1QUklOVF9zZXRfYWxnbzsKLSsJCWkyZF9UU19UU1RfSU5GT19iaW87Ci0rCQlUU19UU1RfSU5GT19zZXRfb3JkZXJpbmc7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X09CSjsKLSsJCUNSWVBUT19USFJFQURJRF9zZXRfcG9pbnRlcjsKLSsJCVRTX0NPTkZfZ2V0X3RzYV9zZWN0aW9uOwotKwkJU01JTUVfd3JpdGVfQVNOMTsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfa2V5OwotKwkJRVZQX1BLRVlfZW5jcnlwdF9vbGQ7Ci0rCQlFVlBfUEtFWV9lbmNyeXB0X2luaXQ7Ci0rCQlDUllQVE9fVEhSRUFESURfY3B5OwotKwkJQVNOMV9QQ1RYX2dldF9jZXJ0X2ZsYWdzOwotKwkJaTJkX0VTU19TSUdOSU5HX0NFUlQ7Ci0rCQlUU19DT05GX2xvYWRfa2V5OwotKwkJaTJkX0FTTjFfU0VRVUVOQ0VfQU5ZOwotKwkJZDJpX1RTX01TR19JTVBSSU5UX2JpbzsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X3B1YmxpYzsKLSsJCWIyaV9QdWJsaWNLZXlfYmlvOwotKwkJQklPX2FzbjFfc2V0X3ByZWZpeDsKLSsJCUVWUF9QS0VZX25ld19tYWNfa2V5OwotKwkJQklPX25ld19DTVM7Ci0rCQlDUllQVE9fVEhSRUFESURfY21wOwotKwkJVFNfUkVRX2V4dF9mcmVlOwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfZnJlZTsKLSsJCUVWUF9QS0VZX2dldDBfYXNuMTsKLSsJCWQyaV9ORVRTQ0FQRV9YNTA5OwotKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXJfaW5pdDsKLSsJCUVWUF9QS0VZX0NUWF9zZXRfZGF0YTsKLSsJCUVWUF9QS0VZX2tleWdlbl9pbml0OwotKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvOwotKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X2FsZ287Ci0rCQlUU19SRVFfcHJpbnRfYmlvOwotKwkJRVZQX1BLRVlfQ1RYX2N0cmxfc3RyOwotKwkJRVZQX1BLRVlfZ2V0X2RlZmF1bHRfZGlnZXN0X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzdfc3RyZWFtOwotKwkJVFNfTVNHX0lNUFJJTlRfcHJpbnRfYmlvOwotKwkJQk5fYXNjMmJuOwotKwkJVFNfUkVRX2dldF9wb2xpY3lfaWQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3NldF9kZWZfcGtleV9hc24xX21ldGhzOwotKwkJZDJpX1RTX0FDQ1VSQUNZOwotKwkJRFNPX2dsb2JhbF9sb29rdXA7Ci0rCQlUU19DT05GX3NldF90c2FfbmFtZTsKLSsJCWkyZF9BU04xX1NFVF9BTlk7Ci0rCQlFTkdJTkVfbG9hZF9nb3N0OwotKwkJV0hJUkxQT09MX0JpdFVwZGF0ZTsKLSsJCUFTTjFfUENUWF9nZXRfZmxhZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X05JRDsKLSsJCVRTX1JFU1BfbmV3OwotKwkJRVNTX0NFUlRfSURfZHVwOwotKwkJVFNfU1RBVFVTX0lORk9fZHVwOwotKwkJVFNfUkVRX2RlbGV0ZV9leHQ7Ci0rCQlFVlBfRGlnZXN0VmVyaWZ5RmluYWw7Ci0rCQlFVlBfUEtFWV9wcmludF9wYXJhbXM7Ci0rCQlpMmRfQ01TX2Jpb19zdHJlYW07Ci0rCQlUU19SRVFfZ2V0X21zZ19pbXByaW50OwotKwkJT0JKX2ZpbmRfc2lnaWRfYnlfYWxnczsKLSsJCVRTX1RTVF9JTkZPX2dldF9zZXJpYWw7Ci0rCQlUU19SRVFfZ2V0X25vbmNlOwotKwkJWDUwOV9QVUJLRVlfc2V0MF9wYXJhbTsKLSsJCUVWUF9QS0VZX0NUWF9zZXQwX2tleWdlbl9pbmZvOwotKwkJRElTVF9QT0lOVF9zZXRfZHBuYW1lOwotKwkJaTJkX0lTU1VJTkdfRElTVF9QT0lOVDsKLSsJCUFTTjFfU0VUX0FOWV9pdDsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfZGF0YTsKLSsJCVRTX1NUQVRVU19JTkZPX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX2Rlcml2ZV9pbml0OwotKwkJZDJpX1RTX1RTVF9JTkZPOwotKwkJRVZQX1BLRVlfYXNuMV9hZGRfYWxpYXM7Ci0rCQlkMmlfVFNfUkVTUF9iaW87Ci0rCQlPVEhFUk5BTUVfY21wOwotKwkJR0VORVJBTF9OQU1FX3NldDBfdmFsdWU7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX2dldDBfYWxnOwotKwkJVFNfUkVTUF9DVFhfbmV3OwotKwkJVFNfUkVTUF9zZXRfdHN0X2luZm87Ci0rCQlQS0NTN19maW5hbDsKLSsJCUVWUF9QS0VZX2Jhc2VfaWQ7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc2lnbmVyX2NlcnQ7Ci0rCQlUU19SRVFfc2V0X21zZ19pbXByaW50OwotKwkJRVZQX1BLRVlfQ1RYX2N0cmw7Ci0rCQlUU19DT05GX3NldF9kaWdlc3RzOwotKwkJZDJpX1RTX01TR19JTVBSSU5UOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfY3RybDsKLSsJCVRTX1JFUV9nZXRfZXh0X2J5X05JRDsKLSsJCVBLQ1M1X3BiZV9zZXQwX2FsZ29yOwotKwkJQk5fQkxJTkRJTkdfdGhyZWFkX2lkOwotKwkJVFNfQUNDVVJBQ1lfbmV3OwotKwkJWDUwOV9DUkxfTUVUSE9EX2ZyZWU7Ci0rCQlBU04xX1BDVFhfZ2V0X25tX2ZsYWdzOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbjsKLSsJCUNSWVBUT19USFJFQURJRF9jdXJyZW50OwotKwkJRVZQX1BLRVlfZGVjcnlwdF9pbml0OwotKwkJTkVUU0NBUEVfWDUwOV9mcmVlOwotKwkJaTJiX1BWS19iaW87Ci0rCQlFVlBfUEtFWV9wcmludF9wcml2YXRlOwotKwkJR0VORVJBTF9OQU1FX2dldDBfdmFsdWU7Ci0rCQliMmlfUFZLX2JpbzsKLSsJCUFTTjFfVVRDVElNRV9hZGo7Ci0rCQlUU19UU1RfSU5GT19uZXc7Ci0rCQlFVlBfTURfZG9fYWxsX3NvcnRlZDsKLSsJCVRTX0NPTkZfc2V0X2RlZmF1bHRfZW5naW5lOwotKwkJVFNfQUNDVVJBQ1lfc2V0X3NlY29uZHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfdGltZTsKLSsJCVBLQ1M4X3BrZXlfZ2V0MDsKLSsJCUVWUF9QS0VZX2FzbjFfZ2V0MDsKLSsJCU9CSl9hZGRfc2lnaWQ7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19zaWduOwotKwkJRVZQX1BLRVlfcGFyYW1nZW5faW5pdDsKLSsJCUVWUF9QS0VZX3NpZ247Ci0rCQlPQkpfc2lnaWRfZnJlZTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2luaXQ7Ci0rCQlkMmlfRVNTX0lTU1VFUl9TRVJJQUw7Ci0rCQlJU1NVSU5HX0RJU1RfUE9JTlRfbmV3OwotKwkJQVNOMV9USU1FX2FkajsKLSsJCVRTX09CSl9wcmludF9iaW87Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnlfcmVjb3ZlcjsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3ZyZnlfcmVjb3ZlcjsKLSsJCVRTX1JFU1BfZ2V0X3N0YXR1c19pbmZvOwotKwkJQ01TX3N0cmVhbTsKLSsJCUVWUF9QS0VZX0NUWF9zZXRfY2I7Ci0rCQlQS0NTN190b19UU19UU1RfSU5GTzsKLSsJCUFTTjFfUENUWF9nZXRfb2lkX2ZsYWdzOwotKwkJVFNfVFNUX0lORk9fYWRkX2V4dDsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2Rlcml2ZTsKLSsJCWkyZF9UU19SRVNQX2ZwOwotKwkJaTJkX1RTX01TR19JTVBSSU5UX2JpbzsKLSsJCVRTX1JFU1BfQ1RYX3NldF9hY2N1cmFjeTsKLSsJCVRTX1JFUV9zZXRfbm9uY2U7Ci0rCQlFU1NfQ0VSVF9JRF9uZXc7Ci0rCQlFTkdJTkVfcGtleV9hc24xX2ZpbmRfc3RyOwotKwkJVFNfUkVRX2dldF9leHRfY291bnQ7Ci0rCQlCVUZfcmV2ZXJzZTsKLSsJCVRTX1RTVF9JTkZPX3ByaW50X2JpbzsKLSsJCWQyaV9JU1NVSU5HX0RJU1RfUE9JTlQ7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aHM7Ci0rCQlpMmJfUHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfVFNfUkVTUDsKLSsJCWIyaV9QdWJsaWNLZXk7Ci0rCQlUU19WRVJJRllfQ1RYX2NsZWFudXA7Ci0rCQlUU19TVEFUVVNfSU5GT19mcmVlOwotKwkJVFNfUkVTUF92ZXJpZnlfdG9rZW47Ci0rCQlPQkpfYnNlYXJjaF9leF87Ci0rCQlBU04xX2JuX3ByaW50OwotKwkJRVZQX1BLRVlfYXNuMV9nZXRfY291bnQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOwotKwkJQVNOMV9QQ1RYX3NldF9ubV9mbGFnczsKLSsJCUVWUF9EaWdlc3RWZXJpZnlJbml0OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X3BrZXlfbWV0aHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfcG9saWN5X2lkOwotKwkJVFNfUkVRX2dldF9jZXJ0X3JlcTsKLSsJCVg1MDlfQ1JMX3NldF9tZXRoX2RhdGE7Ci0rCQlQS0NTOF9wa2V5X3NldDA7Ci0rCQlBU04xX1NUUklOR19jb3B5OwotKwkJZDJpX1RTX1RTVF9JTkZPX2ZwOwotKwkJWDUwOV9DUkxfbWF0Y2g7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9wcml2YXRlOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9kMmk7Ci0rCQlUU19SRVNQX0NUWF9hZGRfcG9saWN5OwotKwkJZDJpX1RTX1JFU1A7Ci0rCQlUU19DT05GX2xvYWRfY2VydHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfbXNnX2ltcHJpbnQ7Ci0rCQlFUlJfbG9hZF9UU19zdHJpbmdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X3ZlcnNpb247Ci0rCQlFVlBfUEtFWV9DVFhfZHVwOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5OwotKwkJaTJiX1B1YmxpY0tleV9iaW87Ci0rCQlUU19DT05GX3NldF9jZXJ0czsKLSsJCUVWUF9QS0VZX2FzbjFfZ2V0MF9pbmZvOwotKwkJVFNfVkVSSUZZX0NUWF9mcmVlOwotKwkJVFNfUkVRX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc2VyaWFsX2NiOwotKwkJWDUwOV9DUkxfZ2V0X21ldGhfZGF0YTsKLSsJCVRTX1JFU1BfQ1RYX3NldF90aW1lX2NiOwotKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X21zZzsKLSsJCVRTX1RTVF9JTkZPX2V4dF9mcmVlOwotKwkJVFNfUkVRX2dldF92ZXJzaW9uOwotKwkJVFNfUkVRX2FkZF9leHQ7Ci0rCQlFVlBfUEtFWV9DVFhfc2V0X2FwcF9kYXRhOwotKwkJT0JKX2JzZWFyY2hfOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5Y3R4OwotKwkJaTJkX1BLQ1M3X2Jpb19zdHJlYW07Ci0rCQlDUllQVE9fVEhSRUFESURfc2V0X251bWVyaWM7Ci0rCQlQS0NTN19zaWduX2FkZF9zaWduZXI7Ci0rCQlkMmlfVFNfVFNUX0lORk9fYmlvOwotKwkJVFNfVFNUX0lORk9fZ2V0X29yZGVyaW5nOwotKwkJVFNfUkVTUF9wcmludF9iaW87Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0czsKLSsJCUhNQUNfQ1RYX2NvcHk7Ci0rCQlQS0NTNV9wYmUyX3NldF9pdjsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhzOwotKwkJYjJpX1ByaXZhdGVLZXk7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X2FwcF9kYXRhOwotKwkJVFNfUkVRX3NldF9jZXJ0X3JlcTsKLSsJCUNSWVBUT19USFJFQURJRF9zZXRfY2FsbGJhY2s7Ci0rCQlUU19DT05GX3NldF9zZXJpYWw7Ci0rCQlUU19UU1RfSU5GT19mcmVlOwotKwkJZDJpX1RTX1JFUV9mcDsKLSsJCVRTX1JFU1BfdmVyaWZ5X3Jlc3BvbnNlOwotKwkJaTJkX0VTU19JU1NVRVJfU0VSSUFMOwotKwkJVFNfQUNDVVJBQ1lfZ2V0X3NlY29uZHM7Ci0rCQlFVlBfQ0lQSEVSX2RvX2FsbDsKLSsJCWIyaV9Qcml2YXRlS2V5X2JpbzsKLSsJCU9DU1BfQ0VSVElEX2R1cDsKLSsJCVg1MDlfUFVCS0VZX2dldDBfcGFyYW07Ci0rCQlUU19NU0dfSU1QUklOVF9kdXA7Ci0rCQlQS0NTN19wcmludF9jdHg7Ci0rCQlpMmRfVFNfUkVRX2JpbzsKLSsJCUVWUF93aGlybHBvb2w7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9wYXJhbTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2VuY3J5cHQ7Ci0rCQlBU04xX1BDVFhfc2V0X2ZsYWdzOwotKwkJaTJkX0VTU19DRVJUX0lEOwotKwkJVFNfVkVSSUZZX0NUWF9uZXc7Ci0rCQlUU19SRVNQX0NUWF9zZXRfZXh0ZW5zaW9uX2NiOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X21ldGhzOwotKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvX2NvbmQ7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc3RhdF9pbmZvX2NvbmQ7Ci0rCQlFVlBfUEtFWV92ZXJpZnk7Ci0rCQlXSElSTFBPT0xfRmluYWw7Ci0rCQlYNTA5X0NSTF9NRVRIT0RfbmV3OwotKwkJRVZQX0RpZ2VzdFNpZ25GaW5hbDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9kZWZfcG9saWN5OwotKwkJTkVUU0NBUEVfWDUwOV9pdDsKLSsJCVRTX1JFU1BfY3JlYXRlX3Jlc3BvbnNlOwotKwkJUEtDUzdfU0lHTkVSX0lORk9fZ2V0MF9hbGdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X25vbmNlOwotKwkJRVZQX1BLRVlfZGVjcnlwdF9vbGQ7Ci0rCQlUU19UU1RfSU5GT19zZXRfcG9saWN5X2lkOwotKwkJVFNfQ09ORl9zZXRfZXNzX2NlcnRfaWRfY2hhaW47Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0MF9wa2V5OwotKwkJZDJpX1RTX1JFUTsKLSsJCUVWUF9QS0VZX2FzbjFfZmluZF9zdHI7Ci0rCQlCSU9fZl9hc24xOwotKwkJRVNTX1NJR05JTkdfQ0VSVF9uZXc7Ci0rCQlFVlBfUEJFX2ZpbmQ7Ci0rCQlYNTA5X0NSTF9nZXQwX2J5X2NlcnQ7Ci0rCQlFVlBfUEtFWV9kZXJpdmU7Ci0rCQlpMmRfVFNfUkVROwotKwkJVFNfVFNUX0lORk9fZGVsZXRlX2V4dDsKLSsJCUVTU19JU1NVRVJfU0VSSUFMX2ZyZWU7Ci0rCQlBU04xX1BDVFhfc2V0X3N0cl9mbGFnczsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfc3RyOwotKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2tleTsKLSsJCVRTX0FDQ1VSQUNZX2dldF9taWxsaXM7Ci0rCQlUU19SRVNQX2dldF90b2tlbjsKLSsJCVRTX0FDQ1VSQUNZX2R1cDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3JlZ19hbGxfcGtleV9hc24xX21ldGhzOwotKwkJWDUwOV9DUkxfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJQ1JZUFRPX1RIUkVBRElEX2hhc2g7Ci0rCQlDTVNfQ29udGVudEluZm9fcHJpbnRfY3R4OwotKwkJVFNfUkVTUF9mcmVlOwotKwkJSVNTVUlOR19ESVNUX1BPSU5UX2ZyZWU7Ci0rCQlFU1NfSVNTVUVSX1NFUklBTF9uZXc7Ci0rCQlDTVNfYWRkMV9jcmw7Ci0rCQlQS0NTN19hZGQxX2F0dHJpYl9kaWdlc3Q7Ci0rCQlUU19SRVNQX0NUWF9hZGRfbWQ7Ci0rCQlUU19UU1RfSU5GT19kdXA7Ci0rCQlFTkdJTkVfc2V0X3BrZXlfYXNuMV9tZXRoczsKLSsJCVBFTV93cml0ZV9iaW9fUGFyYW1ldGVyczsKLSsJCVRTX1RTVF9JTkZPX2dldF9hY2N1cmFjeTsKLSsJCVg1MDlfQ1JMX2dldDBfYnlfc2VyaWFsOwotKwkJVFNfVFNUX0lORk9fc2V0X3ZlcnNpb247Ci0rCQlUU19SRVNQX0NUWF9nZXRfdHN0X2luZm87Ci0rCQlUU19SRVNQX3ZlcmlmeV9zaWduYXR1cmU7Ci0rCQlDUllQVE9fVEhSRUFESURfZ2V0X2NhbGxiYWNrOwotKwkJVFNfVFNUX0lORk9fZ2V0X3RzYTsKLSsJCVRTX1NUQVRVU19JTkZPX25ldzsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfY2I7Ci0rCQlUU19SRVFfZ2V0X2V4dF9kMmk7Ci0rCQlHRU5FUkFMX05BTUVfc2V0MF9vdGhlcm5hbWU7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2NvdW50OwotKwkJVFNfUkVTUF9DVFhfZ2V0X3JlcXVlc3Q7Ci0rCQlpMmRfTkVUU0NBUEVfWDUwOTsKLSsJCUVOR0lORV9nZXRfcGtleV9tZXRoX2VuZ2luZTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3NpZ25jdHg7Ci0rCQlFVlBfUEtFWV9hc24xX2NvcHk7Ci0rCQlBU04xX1RZUEVfY21wOwotKwkJRVZQX0NJUEhFUl9kb19hbGxfc29ydGVkOwotKwkJRVZQX1BLRVlfQ1RYX2ZyZWU7Ci0rCQlJU1NVSU5HX0RJU1RfUE9JTlRfaXQ7Ci0rCQlkMmlfVFNfTVNHX0lNUFJJTlRfZnA7Ci0rCQlYNTA5X1NUT1JFX2dldDFfY2VydHM7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X29wZXJhdGlvbjsKLSsJCWQyaV9FU1NfU0lHTklOR19DRVJUOwotKwkJVFNfQ09ORl9zZXRfb3JkZXJpbmc7Ci0rCQlFVlBfUEJFX2FsZ19hZGRfdHlwZTsKLSsJCVRTX1JFUV9zZXRfdmVyc2lvbjsKLSsJCUVWUF9QS0VZX2dldDA7Ci0rCQlCSU9fYXNuMV9zZXRfc3VmZml4OwotKwkJaTJkX1RTX1NUQVRVU19JTkZPOwotKwkJRVZQX01EX2RvX2FsbDsKLSsJCVRTX1RTVF9JTkZPX3NldF9hY2N1cmFjeTsKLSsJCVBLQ1M3X2FkZF9hdHRyaWJfY29udGVudF90eXBlOwotKwkJRVJSX3JlbW92ZV90aHJlYWRfc3RhdGU7Ci0rCQlFVlBfUEtFWV9tZXRoX2FkZDA7Ci0rCQlUU19UU1RfSU5GT19zZXRfdHNhOwotKwkJRVZQX1BLRVlfbWV0aF9uZXc7Ci0rCQlXSElSTFBPT0xfVXBkYXRlOwotKwkJVFNfQ09ORl9zZXRfYWNjdXJhY3k7Ci0rCQlBU04xX1BDVFhfc2V0X29pZF9mbGFnczsKLSsJCUVTU19TSUdOSU5HX0NFUlRfZHVwOwotKwkJZDJpX1RTX1JFUV9iaW87Ci0rCQlYNTA5X3RpbWVfYWRqX2V4OwotKwkJVFNfUkVTUF9DVFhfYWRkX2ZsYWdzOwotKwkJZDJpX1RTX1NUQVRVU19JTkZPOwotKwkJVFNfTVNHX0lNUFJJTlRfc2V0X21zZzsKLSsJCUJJT19hc24xX2dldF9zdWZmaXg7Ci0rCQlUU19SRVFfZnJlZTsKLSsJCUVWUF9QS0VZX21ldGhfZnJlZTsKLSsJCVRTX1JFUV9nZXRfZXh0czsKLSsJCVRTX1JFU1BfQ1RYX3NldF9jbG9ja19wcmVjaXNpb25fZGlnaXRzOwotKwkJVFNfUkVTUF9DVFhfc2V0X2Nsa19wcmVjX2RpZ2l0czsKLSsJCVRTX1JFU1BfQ1RYX2FkZF9mYWlsdXJlX2luZm87Ci0rCQlpMmRfVFNfUkVTUF9iaW87Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0MF9wZWVya2V5OwotKwkJUEVNX3dyaXRlX2Jpb19DTVNfc3RyZWFtOwotKwkJVFNfUkVRX25ldzsKLSsJCVRTX01TR19JTVBSSU5UX25ldzsKLSsJCUVWUF9QS0VZX21ldGhfZmluZDsKLSsJCUVWUF9QS0VZX2lkOwotKwkJVFNfVFNUX0lORk9fc2V0X3NlcmlhbDsKLSsJCWEyaV9HRU5FUkFMX05BTUU7Ci0rCQlUU19DT05GX3NldF9jcnlwdG9fZGV2aWNlOwotKwkJRVZQX1BLRVlfdmVyaWZ5X2luaXQ7Ci0rCQlUU19DT05GX3NldF9wb2xpY2llczsKLSsJCUFTTjFfUENUWF9uZXc7Ci0rCQlFU1NfQ0VSVF9JRF9mcmVlOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9tZXRoczsKLSsJCVRTX01TR19JTVBSSU5UX2ZyZWU7Ci0rCQlUU19WRVJJRllfQ1RYX2luaXQ7Ci0rCQlQS0NTN19zdHJlYW07Ci0rCQlUU19SRVNQX0NUWF9zZXRfY2VydHM7Ci0rCQlUU19DT05GX3NldF9kZWZfcG9saWN5OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfYWRqOwotKwkJTkVUU0NBUEVfWDUwOV9uZXc7Ci0rCQlUU19BQ0NVUkFDWV9mcmVlOwotKwkJVFNfUkVTUF9nZXRfdHN0X2luZm87Ci0rCQlFVlBfUEtFWV9kZXJpdmVfc2V0X3BlZXI7Ci0rCQlQRU1fcmVhZF9iaW9fUGFyYW1ldGVyczsKLSsJCVRTX0NPTkZfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7Ci0rCQlUU19DT05GX3NldF9jbGtfcHJlY19kaWdpdHM7Ci0rCQlFU1NfSVNTVUVSX1NFUklBTF9kdXA7Ci0rCQlUU19BQ0NVUkFDWV9nZXRfbWljcm9zOwotKwkJQVNOMV9QQ1RYX2dldF9zdHJfZmxhZ3M7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX2NoZWNrOwotKwkJQVNOMV9CSVRfU1RSSU5HX2NoZWNrOwotKwkJWDUwOV9jaGVja19ha2lkOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3VucmVnX3BrZXlfYXNuMV9tZXRoczsKLSsJCUFTTjFfUENUWF9mcmVlOwotKwkJUEVNX3dyaXRlX2Jpb19BU04xX3N0cmVhbTsKLSsJCWkyZF9BU04xX2Jpb19zdHJlYW07Ci0rCQlUU19YNTA5X0FMR09SX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2NsZWFudXA7Ci0rCQlFVlBfUEtFWV9hc24xX2ZyZWU7Ci0rCQlFU1NfU0lHTklOR19DRVJUX2ZyZWU7Ci0rCQlUU19UU1RfSU5GT19zZXRfbXNnX2ltcHJpbnQ7Ci0rCQlHRU5FUkFMX05BTUVfY21wOwotKwkJZDJpX0FTTjFfU0VUX0FOWTsKLSsJCUVOR0lORV9zZXRfcGtleV9tZXRoczsKLSsJCWkyZF9UU19SRVFfZnA7Ci0rCQlkMmlfQVNOMV9TRVFVRU5DRV9BTlk7Ci0rCQlHRU5FUkFMX05BTUVfZ2V0MF9vdGhlck5hbWU7Ci0rCQlkMmlfRVNTX0NFUlRfSUQ7Ci0rCQlPQkpfZmluZF9zaWdpZF9hbGdzOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfa2V5Z2VuOwotKwkJUEtDUzVfUEJLREYyX0hNQUM7Ci0rCQlFVlBfUEtFWV9wYXJhbWdlbjsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3BhcmFtZ2VuOwotKwkJQklPX25ld19QS0NTNzsKLSsJCUVWUF9QS0VZX3ZlcmlmeV9yZWNvdmVyOwotKwkJVFNfZXh0X3ByaW50X2JpbzsKLSsJCVRTX0FTTjFfSU5URUdFUl9wcmludF9iaW87Ci0rCQljaGVja19kZWZlcjsKLSsJCURTT19wYXRoYnlhZGRyOwotKwkJRVZQX1BLRVlfc2V0X3R5cGU7Ci0rCQlUU19BQ0NVUkFDWV9zZXRfbWljcm9zOwotKwkJVFNfUkVRX3RvX1RTX1ZFUklGWV9DVFg7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9jb3B5OwotKwkJQVNOMV9QQ1RYX3NldF9jZXJ0X2ZsYWdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dDsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X2N0cmw7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJRVZQX1BLRVlfQ1RYX25ld19pZDsKLSsJCVRTX1JFUV9nZXRfZXh0X2J5X09CSjsKLSsJCVRTX0NPTkZfc2V0X3NpZ25lcl9jZXJ0OwotKwkJWDUwOV9OQU1FX2hhc2hfb2xkOwotKwkJQVNOMV9USU1FX3NldF9zdHJpbmc7Ci0rCQlFVlBfTURfZmxhZ3M7Ci0rCQlUU19SRVNQX0NUWF9mcmVlOwotKwkJRFNBcGFyYW1zX2R1cDsKLSsJCURIcGFyYW1zX2R1cDsKLSsJCU9DU1BfUkVRX0NUWF9hZGQxX2hlYWRlcjsKLSsJCU9DU1BfUkVRX0NUWF9zZXQxX3JlcTsKLSsJCVg1MDlfU1RPUkVfc2V0X3ZlcmlmeV9jYjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9jcmw7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmVudF9jdHg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cnJlbnRfaXNzdWVyOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJfaXNzdWVyOwotKwkJWDUwOV9pc3N1ZXJfbmFtZV9oYXNoX29sZDsKLSsJCVg1MDlfc3ViamVjdF9uYW1lX2hhc2hfb2xkOwotKwkJRVZQX0NJUEhFUl9DVFhfY29weTsKLSsJCVVJX21ldGhvZF9nZXRfcHJvbXB0X2NvbnN0cnVjdG9yOwotKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0cjsKLSsJCVVJX21ldGhvZF9zZXRfcHJvbXB0X2NvbnN0cnVjdG9yOwotKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0cjsKLSsJCUVWUF9yZWFkX3B3X3N0cmluZ19taW47Ci0rCQlDUllQVE9fY3RzMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9fY3RzMTI4X2RlY3J5cHRfYmxvY2s7Ci0rCQlDUllQVE9fY2ZiMTI4XzFfZW5jcnlwdDsKLSsJCUNSWVBUT19jYmMxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jdHIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19vZmIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jdHMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19jdHMxMjhfZW5jcnlwdF9ibG9jazsKLSsJCUNSWVBUT19jYmMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19jZmIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jZmIxMjhfOF9lbmNyeXB0OwotKwotKwlsb2NhbDoKLSsJCSo7Ci0rfTsKLSsKLSsKLStPUEVOU1NMXzEuMC4xIHsKLSsJZ2xvYmFsOgotKwkJU1NMX3JlbmVnb3RpYXRlX2FiYnJldmlhdGVkOwotKwkJVExTdjFfMV9tZXRob2Q7Ci0rCQlUTFN2MV8xX2NsaWVudF9tZXRob2Q7Ci0rCQlUTFN2MV8xX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfY2xpZW50X3B3ZF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NiOwotKwkJU1NMX2dldF9zcnBfZzsKLSsJCVNTTF9DVFhfc2V0X3NycF91c2VybmFtZV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF91bl9jYjsKLSsJCVNTTF9nZXRfc3JwX3VzZXJpbmZvOwotKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtOwotKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtX3B3OwotKwkJU1NMX2dldF9zcnBfTjsKLSsJCVNTTF9nZXRfc3JwX3VzZXJuYW1lOwotKwkJU1NMX0NUWF9zZXRfc3JwX3Bhc3N3b3JkOwotKwkJU1NMX0NUWF9zZXRfc3JwX3N0cmVuZ3RoOwotKwkJU1NMX0NUWF9zZXRfc3JwX3ZlcmlmeV9wYXJhbV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF92ZnlfcGFyYW1fY2I7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfY2JfYXJnOwotKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lOwotKwkJU1NMX0NUWF9TUlBfQ1RYX2luaXQ7Ci0rCQlTU0xfU1JQX0NUWF9pbml0OwotKwkJU1JQX0NhbGNfQV9wYXJhbTsKLSsJCVNSUF9nZW5lcmF0ZV9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKLSsJCVNSUF9nZW5fc2VydmVyX21hc3Rlcl9zZWNyZXQ7Ci0rCQlTU0xfQ1RYX1NSUF9DVFhfZnJlZTsKLSsJCVNSUF9nZW5lcmF0ZV9jbGllbnRfbWFzdGVyX3NlY3JldDsKLSsJCVNSUF9nZW5fY2xpZW50X21hc3Rlcl9zZWNyZXQ7Ci0rCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VzZXJuYW1lOwotKwkJU1NMX3NycF9zZXJ2ZXJfcGFyYW1fd2l0aF91bjsKLSsJCVNTTF9TUlBfQ1RYX2ZyZWU7Ci0rCQlTU0xfc2V0X2RlYnVnOwotKwkJU1NMX1NFU1NJT05fZ2V0MF9wZWVyOwotKwkJVExTdjFfMl9jbGllbnRfbWV0aG9kOwotKwkJU1NMX1NFU1NJT05fc2V0MV9pZF9jb250ZXh0OwotKwkJVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMX2NhY2hlX2hpdDsKLSsJCVNTTF9nZXQwX2tzc2xfY3R4OwotKwkJU1NMX3NldDBfa3NzbF9jdHg7Ci0rCQlTU0xfc2V0X3N0YXRlOwotKwkJU1NMX0NJUEhFUl9nZXRfaWQ7Ci0rCQlUTFN2MV8yX21ldGhvZDsKLSsJCWtzc2xfY3R4X2dldDBfY2xpZW50X3ByaW5jOwotKwkJU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWw7Ci0rCQlTU0xfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2I7Ci0rCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZfY2I7Ci0rCQlTU0xfZ2V0MF9uZXh0X3Byb3RvX25lZ290aWF0ZWQ7Ci0rCQlTU0xfZ2V0X3NlbGVjdGVkX3NydHBfcHJvZmlsZTsKLSsJCVNTTF9DVFhfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKLSsJCVNTTF9zZWxlY3RfbmV4dF9wcm90bzsKLSsJCVNTTF9nZXRfc3J0cF9wcm9maWxlczsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiOwotKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxfY2I7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfY29tcHJlc3NfaWQ7Ci0rCi0rCQlTUlBfVkJBU0VfZ2V0X2J5X3VzZXI7Ci0rCQlTUlBfQ2FsY19zZXJ2ZXJfa2V5OwotKwkJU1JQX2NyZWF0ZV92ZXJpZmllcjsKLSsJCVNSUF9jcmVhdGVfdmVyaWZpZXJfQk47Ci0rCQlTUlBfQ2FsY191OwotKwkJU1JQX1ZCQVNFX2ZyZWU7Ci0rCQlTUlBfQ2FsY19jbGllbnRfa2V5OwotKwkJU1JQX2dldF9kZWZhdWx0X2dOOwotKwkJU1JQX0NhbGNfeDsKLSsJCVNSUF9DYWxjX0I7Ci0rCQlTUlBfVkJBU0VfbmV3OwotKwkJU1JQX2NoZWNrX2tub3duX2dOX3BhcmFtOwotKwkJU1JQX0NhbGNfQTsKLSsJCVNSUF9WZXJpZnlfQV9tb2RfTjsKLSsJCVNSUF9WQkFTRV9pbml0OwotKwkJU1JQX1ZlcmlmeV9CX21vZF9OOwotKwkJRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlczsKLSsJCUVDX0tFWV9zZXRfcHViX2tleV9hZmZfY29vcmRzOwotKwkJRVZQX2Flc18xOTJfY3RyOwotKwkJRVZQX1BLRVlfbWV0aF9nZXQwX2luZm87Ci0rCQlFVlBfUEtFWV9tZXRoX2NvcHk7Ci0rCQlFUlJfYWRkX2Vycm9yX3ZkYXRhOwotKwkJRVZQX2Flc18xMjhfY3RyOwotKwkJRVZQX2Flc18yNTZfY3RyOwotKwkJRUNfR0ZwX25pc3RwMjI0X21ldGhvZDsKLSsJCUVDX0tFWV9nZXRfZmxhZ3M7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTX21nZjE7Ci0rCQlFVlBfYWVzXzEyOF94dHM7Ci0rCQlFVlBfYWVzXzI1Nl94dHM7Ci0rCQlFVlBfYWVzXzEyOF9nY207Ci0rCQlFQ19LRVlfY2xlYXJfZmxhZ3M7Ci0rCQlFQ19LRVlfc2V0X2ZsYWdzOwotKwkJRVZQX2Flc18yNTZfY2NtOwotKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1NfbWdmMTsKLSsJCUVWUF9hZXNfMTI4X2NjbTsKLSsJCUVWUF9hZXNfMTkyX2djbTsKLSsJCVg1MDlfQUxHT1Jfc2V0X21kOwotKwkJUkFORF9pbml0X2ZpcHM7Ci0rCQlFVlBfYWVzXzI1Nl9nY207Ci0rCQlFVlBfYWVzXzE5Ml9jY207Ci0rCQlDTUFDX0NUWF9jb3B5OwotKwkJQ01BQ19DVFhfZnJlZTsKLSsJCUNNQUNfQ1RYX2dldDBfY2lwaGVyX2N0eDsKLSsJCUNNQUNfQ1RYX2NsZWFudXA7Ci0rCQlDTUFDX0luaXQ7Ci0rCQlDTUFDX1VwZGF0ZTsKLSsJCUNNQUNfcmVzdW1lOwotKwkJQ01BQ19DVFhfbmV3OwotKwkJQ01BQ19GaW5hbDsKLSsJCUNSWVBUT19jdHIxMjhfZW5jcnlwdF9jdHIzMjsKLSsJCUNSWVBUT19nY20xMjhfcmVsZWFzZTsKLSsJCUNSWVBUT19jY20xMjhfZGVjcnlwdF9jY202NDsKLSsJCUNSWVBUT19jY20xMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19nY20xMjhfZW5jcnlwdDsKLSsJCUNSWVBUT194dHMxMjhfZW5jcnlwdDsKLSsJCUVWUF9yYzRfaG1hY19tZDU7Ci0rCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0X2Jsb2NrOwotKwkJQ1JZUFRPX2djbTEyOF9zZXRpdjsKLSsJCUNSWVBUT19uaXN0Y3RzMTI4X2VuY3J5cHQ7Ci0rCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGExOwotKwkJQ1JZUFRPX2djbTEyOF90YWc7Ci0rCQlDUllQVE9fY2NtMTI4X2VuY3J5cHRfY2NtNjQ7Ci0rCQlFTkdJTkVfbG9hZF9yZHJhbmQ7Ci0rCQlDUllQVE9fY2NtMTI4X3NldGl2OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdF9ibG9jazsKLSsJCUNSWVBUT19nY20xMjhfYWFkOwotKwkJQ1JZUFRPX2NjbTEyOF9pbml0OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19nY20xMjhfbmV3OwotKwkJQ1JZUFRPX2NjbTEyOF90YWc7Ci0rCQlDUllQVE9fY2NtMTI4X2RlY3J5cHQ7Ci0rCQlDUllQVE9fY2NtMTI4X2FhZDsKLSsJCUNSWVBUT19nY20xMjhfaW5pdDsKLSsJCUNSWVBUT19nY20xMjhfZGVjcnlwdDsKLSsJCUVOR0lORV9sb2FkX3JzYXg7Ci0rCQlDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzI7Ci0rCQlDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzI7Ci0rCQlDUllQVE9fZ2NtMTI4X2ZpbmlzaDsKLSsJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTE7Ci0rCQlQS0NTNV9wYmtkZjJfc2V0OwotKwkJQ01TX2FkZDBfcmVjaXBpZW50X3Bhc3N3b3JkOwotKwkJQ01TX2RlY3J5cHRfc2V0MV9wYXNzd29yZDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGFzc3dvcmQ7Ci0rCQlSQU5EX3NldF9maXBzX2RyYmdfdHlwZTsKLSsJCVg1MDlfUkVRX3NpZ25fY3R4OwotKwkJUlNBX1BTU19QQVJBTVNfbmV3OwotKwkJWDUwOV9DUkxfc2lnbl9jdHg7Ci0rCQlYNTA5X3NpZ25hdHVyZV9kdW1wOwotKwkJZDJpX1JTQV9QU1NfUEFSQU1TOwotKwkJUlNBX1BTU19QQVJBTVNfaXQ7Ci0rCQlSU0FfUFNTX1BBUkFNU19mcmVlOwotKwkJWDUwOV9zaWduX2N0eDsKLSsJCWkyZF9SU0FfUFNTX1BBUkFNUzsKLSsJCUFTTjFfaXRlbV9zaWduX2N0eDsKLSsJCUVDX0dGcF9uaXN0cDUyMV9tZXRob2Q7Ci0rCQlFQ19HRnBfbmlzdHAyNTZfbWV0aG9kOwotKwkJT1BFTlNTTF9zdGRlcnI7Ci0rCQlPUEVOU1NMX2NwdWlkX3NldHVwOwotKwkJT1BFTlNTTF9zaG93ZmF0YWw7Ci0rCQlCSU9fbmV3X2RncmFtX3NjdHA7Ci0rCQlCSU9fZGdyYW1fc2N0cF9tc2dfd2FpdGluZzsKLSsJCUJJT19kZ3JhbV9zY3RwX3dhaXRfZm9yX2RyeTsKLSsJCUJJT19zX2RhdGFncmFtX3NjdHA7Ci0rCQlCSU9fZGdyYW1faXNfc2N0cDsKLSsJCUJJT19kZ3JhbV9zY3RwX25vdGlmaWNhdGlvbl9jYjsKLSt9IE9QRU5TU0xfMS4wLjA7Ci0rCi0rT1BFTlNTTF8xLjAuMWQgewotKwlnbG9iYWw6Ci0rCQlDUllQVE9fbWVtY21wOwotK30gT1BFTlNTTF8xLjAuMTsKLSsKLStPUEVOU1NMXzEuMC4yIHsKLSsJZ2xvYmFsOgotKwkJU1NMX0NUWF9zZXRfYWxwbl9wcm90b3M7Ci0rCQlTU0xfc2V0X2FscG5fcHJvdG9zOwotKwkJU1NMX0NUWF9zZXRfYWxwbl9zZWxlY3RfY2I7Ci0rCQlTU0xfZ2V0MF9hbHBuX3NlbGVjdGVkOwotKwkJU1NMX0NUWF9zZXRfY3VzdG9tX2NsaV9leHQ7Ci0rCQlTU0xfQ1RYX3NldF9jdXN0b21fc3J2X2V4dDsKLSsJCVNTTF9DVFhfc2V0X3Nydl9zdXBwX2RhdGE7Ci0rCQlTU0xfQ1RYX3NldF9jbGlfc3VwcF9kYXRhOwotKwkJU1NMX3NldF9jZXJ0X2NiOwotKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mbzsKLSsJCVNTTF9DVFhfdXNlX3NlcnZlcmluZm9fZmlsZTsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfY2I7Ci0rCQlTU0xfQ1RYX2dldDBfcGFyYW07Ci0rCQlTU0xfZ2V0MF9wYXJhbTsKLSsJCVNTTF9jZXJ0c19jbGVhcjsKLSsJCURUTFN2MV8yX21ldGhvZDsKLSsJCURUTFN2MV8yX3NlcnZlcl9tZXRob2Q7Ci0rCQlEVExTdjFfMl9jbGllbnRfbWV0aG9kOwotKwkJRFRMU19tZXRob2Q7Ci0rCQlEVExTX3NlcnZlcl9tZXRob2Q7Ci0rCQlEVExTX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0xfQ1RYX2dldF9zc2xfbWV0aG9kOwotKwkJU1NMX0NUWF9nZXQwX2NlcnRpZmljYXRlOwotKwkJU1NMX0NUWF9nZXQwX3ByaXZhdGVrZXk7Ci0rCQlTU0xfQ09NUF9zZXQwX2NvbXByZXNzaW9uX21ldGhvZHM7Ci0rCQlTU0xfQ09NUF9mcmVlX2NvbXByZXNzaW9uX21ldGhvZHM7Ci0rCQlTU0xfQ0lQSEVSX2ZpbmQ7Ci0rCQlTU0xfaXNfc2VydmVyOwotKwkJU1NMX0NPTkZfQ1RYX25ldzsKLSsJCVNTTF9DT05GX0NUWF9maW5pc2g7Ci0rCQlTU0xfQ09ORl9DVFhfZnJlZTsKLSsJCVNTTF9DT05GX0NUWF9zZXRfZmxhZ3M7Ci0rCQlTU0xfQ09ORl9DVFhfY2xlYXJfZmxhZ3M7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0MV9wcmVmaXg7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0X3NzbDsKLSsJCVNTTF9DT05GX0NUWF9zZXRfc3NsX2N0eDsKLSsJCVNTTF9DT05GX2NtZDsKLSsJCVNTTF9DT05GX2NtZF9hcmd2OwotKwkJU1NMX0NPTkZfY21kX3ZhbHVlX3R5cGU7Ci0rCQlTU0xfdHJhY2U7Ci0rCQlTU0xfQ0lQSEVSX3N0YW5kYXJkX25hbWU7Ci0rCQlTU0xfZ2V0X3Rsc2FfcmVjb3JkX2J5bmFtZTsKLSsJCUFTTjFfVElNRV9kaWZmOwotKwkJQklPX2hleF9zdHJpbmc7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19nZXQwX3BrZXlfY3R4OwotKwkJQ01TX1JlY2lwaWVudEluZm9fZW5jcnlwdDsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfcGtleV9jdHg7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX21kX2N0eDsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmF0dXJlOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX2FsZzsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9yZWtzOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX29yaWdfaWQ7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX29yaWdfaWRfY21wOwotKwkJQ01TX1JlY2lwaWVudEVuY3J5cHRlZEtleV9nZXQwX2lkOwotKwkJQ01TX1JlY2lwaWVudEVuY3J5cHRlZEtleV9jZXJ0X2NtcDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfc2V0MF9wa2V5OwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX2N0eDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZGVjcnlwdDsKLSsJCUNNU19TaGFyZWRJbmZvX2VuY29kZTsKLSsJCURIX2NvbXB1dGVfa2V5X3BhZGRlZDsKLSsJCWQyaV9ESHhwYXJhbXM7Ci0rCQlpMmRfREh4cGFyYW1zOwotKwkJREhfZ2V0XzEwMjRfMTYwOwotKwkJREhfZ2V0XzIwNDhfMjI0OwotKwkJREhfZ2V0XzIwNDhfMjU2OwotKwkJREhfS0RGX1g5XzQyOwotKwkJRUNESF9LREZfWDlfNjI7Ci0rCQlFQ0RTQV9NRVRIT0RfbmV3OwotKwkJRUNEU0FfTUVUSE9EX2ZyZWU7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X2FwcF9kYXRhOwotKwkJRUNEU0FfTUVUSE9EX2dldF9hcHBfZGF0YTsKLSsJCUVDRFNBX01FVEhPRF9zZXRfc2lnbjsKLSsJCUVDRFNBX01FVEhPRF9zZXRfc2lnbl9zZXR1cDsKLSsJCUVDRFNBX01FVEhPRF9zZXRfdmVyaWZ5OwotKwkJRUNEU0FfTUVUSE9EX3NldF9mbGFnczsKLSsJCUVDRFNBX01FVEhPRF9zZXRfbmFtZTsKLSsJCUVWUF9kZXNfZWRlM193cmFwOwotKwkJRVZQX2Flc18xMjhfd3JhcDsKLSsJCUVWUF9hZXNfMTkyX3dyYXA7Ci0rCQlFVlBfYWVzXzI1Nl93cmFwOwotKwkJRVZQX2Flc18xMjhfY2JjX2htYWNfc2hhMjU2OwotKwkJRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMjU2OwotKwkJQ1JZUFRPXzEyOF93cmFwOwotKwkJQ1JZUFRPXzEyOF91bndyYXA7Ci0rCQlPQ1NQX1JFUV9DVFhfbmJpbzsKLSsJCU9DU1BfUkVRX0NUWF9uZXc7Ci0rCQlPQ1NQX3NldF9tYXhfcmVzcG9uc2VfbGVuZ3RoOwotKwkJT0NTUF9SRVFfQ1RYX2kyZDsKLSsJCU9DU1BfUkVRX0NUWF9uYmlvX2QyaTsKLSsJCU9DU1BfUkVRX0NUWF9nZXQwX21lbV9iaW87Ci0rCQlPQ1NQX1JFUV9DVFhfaHR0cDsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQX21nZjE7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQX21nZjE7Ci0rCQlSU0FfT0FFUF9QQVJBTVNfZnJlZTsKLSsJCVJTQV9PQUVQX1BBUkFNU19pdDsKLSsJCVJTQV9PQUVQX1BBUkFNU19uZXc7Ci0rCQlTU0xfZ2V0X3NpZ2FsZ3M7Ci0rCQlTU0xfZ2V0X3NoYXJlZF9zaWdhbGdzOwotKwkJU1NMX2NoZWNrX2NoYWluOwotKwkJWDUwOV9jaGFpbl91cF9yZWY7Ci0rCQlYNTA5X2h0dHBfbmJpbzsKLSsJCVg1MDlfQ1JMX2h0dHBfbmJpbzsKLSsJCVg1MDlfUkVWT0tFRF9kdXA7Ci0rCQlpMmRfcmVfWDUwOV90YnM7Ci0rCQlYNTA5X2dldDBfc2lnbmF0dXJlOwotKwkJWDUwOV9nZXRfc2lnbmF0dXJlX25pZDsKLSsJCVg1MDlfQ1JMX2RpZmY7Ci0rCQlYNTA5X2NoYWluX2NoZWNrX3N1aXRlYjsKLSsJCVg1MDlfQ1JMX2NoZWNrX3N1aXRlYjsKLSsJCVg1MDlfY2hlY2tfaG9zdDsKLSsJCVg1MDlfY2hlY2tfZW1haWw7Ci0rCQlYNTA5X2NoZWNrX2lwOwotKwkJWDUwOV9jaGVja19pcF9hc2M7Ci0rCQlYNTA5X1NUT1JFX3NldF9sb29rdXBfY3Jsc19jYjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfc3RvcmU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2hvc3Q7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQxX2hvc3Q7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfaG9zdGZsYWdzOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MF9wZWVybmFtZTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfZW1haWw7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9pcF9hc2M7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX25hbWU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfY291bnQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwOwotKwkJWDUwOVYzX0VYVF9mcmVlOwotKwkJRUNfR1JPVVBfZ2V0X21vbnRfZGF0YTsKLSsJCUVDX2N1cnZlX25pZDJuaXN0OwotKwkJRUNfY3VydmVfbmlzdDJuaWQ7Ci0rCQlQRU1fd3JpdGVfYmlvX0RIeHBhcmFtczsKLSsJCVBFTV93cml0ZV9ESHhwYXJhbXM7Ci0rCQlTU0xfQ1RYX2FkZF9jbGllbnRfY3VzdG9tX2V4dDsKLSsJCVNTTF9DVFhfYWRkX3NlcnZlcl9jdXN0b21fZXh0OwotKwkJU1NMX2V4dGVuc2lvbl9zdXBwb3J0ZWQ7Ci0rCQlCVUZfc3RybmxlbjsKLSsJCXNrX2RlZXBfY29weTsKLSsJCVNTTF90ZXN0X2Z1bmN0aW9uczsKLSt9IE9QRU5TU0xfMS4wLjFkOwotKwotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvb3BlbnNzbC5sZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMCBAQAotK09QRU5TU0xfMS4wLjAgewotKwlnbG9iYWw6Ci0rCQliaW5kX2VuZ2luZTsKLSsJCXZfY2hlY2s7Ci0rCQlPUEVOU1NMX2luaXQ7Ci0rCQlPUEVOU1NMX2ZpbmlzaDsKLSsJbG9jYWw6Ci0rCQkqOwotK307Ci0rCi1JbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvY2Nnb3N0L29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTAgQEAKLStPUEVOU1NMXzEuMC4wIHsKLSsJZ2xvYmFsOgotKwkJYmluZF9lbmdpbmU7Ci0rCQl2X2NoZWNrOwotKwkJT1BFTlNTTF9pbml0OwotKwkJT1BFTlNTTF9maW5pc2g7Ci0rCWxvY2FsOgotKwkJKjsKLSt9OwotKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5Y2RmZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBvcGVuc3NsLTEuMC4yZC9jcnlwdG8vb3BlbnNzbHYuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjJkLm9yaWcvY3J5cHRvL29wZW5zc2x2LmgKLSsrKyBvcGVuc3NsLTEuMC4yZC9jcnlwdG8vb3BlbnNzbHYuaAotQEAgLTg4LDcgKzg4LDcgQEAgZXh0ZXJuICJDIiB7Ci0gICogc2hvdWxkIG9ubHkga2VlcCB0aGUgdmVyc2lvbnMgdGhhdCBhcmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudC4KLSAgKi8KLSAjIGRlZmluZSBTSExJQl9WRVJTSU9OX0hJU1RPUlkgIiIKLS0jIGRlZmluZSBTSExJQl9WRVJTSU9OX05VTUJFUiAiMS4wLjAiCi0rIyBkZWZpbmUgU0hMSUJfVkVSU0lPTl9OVU1CRVIgIjEuMC4yIgotIAotIAotICNpZmRlZiAgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlmMTFhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NjU2ICswLDAgQEAKLUluZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS5vcmlnL0NvbmZpZ3VyZQkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L0NvbmZpZ3VyZQkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotQEAgLTE2NTEsNiArMTY1MSw4IEBACi0gCQl9Ci0gCX0KLSAKLSskc2hhcmVkX2xkZmxhZyAuPSAiIC1XbCwtLXZlcnNpb24tc2NyaXB0PW9wZW5zc2wubGQiOwotKwotIG9wZW4oSU4sJzxNYWtlZmlsZS5vcmcnKSB8fCBkaWUgInVuYWJsZSB0byByZWFkIE1ha2VmaWxlLm9yZzokIVxuIjsKLSB1bmxpbmsoIiRNYWtlZmlsZS5uZXciKSB8fCBkaWUgInVuYWJsZSB0byByZW1vdmUgb2xkICRNYWtlZmlsZS5uZXc6JCFcbiIgaWYgLWUgIiRNYWtlZmlsZS5uZXciOwotIG9wZW4oT1VULCI+JE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIGNyZWF0ZSAkTWFrZWZpbGUubmV3OiQhXG4iOwotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjI6MTk6MDguNjAxODI3MjY2ICswMTAwCi1AQCAtMCwwICsxLDQ2MDggQEAKLStPUEVOU1NMXzEuMC4yZCB7Ci0rCWdsb2JhbDoKLSsJCUJJT19mX3NzbDsKLSsJCUJJT19uZXdfYnVmZmVyX3NzbF9jb25uZWN0OwotKwkJQklPX25ld19zc2w7Ci0rCQlCSU9fbmV3X3NzbF9jb25uZWN0OwotKwkJQklPX3Byb3h5X3NzbF9jb3B5X3Nlc3Npb25faWQ7Ci0rCQlCSU9fc3NsX2NvcHlfc2Vzc2lvbl9pZDsKLSsJCUJJT19zc2xfc2h1dGRvd247Ci0rCQlkMmlfU1NMX1NFU1NJT047Ci0rCQlEVExTdjFfY2xpZW50X21ldGhvZDsKLSsJCURUTFN2MV9tZXRob2Q7Ci0rCQlEVExTdjFfc2VydmVyX21ldGhvZDsKLSsJCUVSUl9sb2FkX1NTTF9zdHJpbmdzOwotKwkJaTJkX1NTTF9TRVNTSU9OOwotKwkJa3NzbF9idWlsZF9wcmluY2lwYWxfMjsKLSsJCWtzc2xfY2dldF90a3Q7Ci0rCQlrc3NsX2NoZWNrX2F1dGhlbnQ7Ci0rCQlrc3NsX2N0eF9mcmVlOwotKwkJa3NzbF9jdHhfbmV3OwotKwkJa3NzbF9jdHhfc2V0a2V5OwotKwkJa3NzbF9jdHhfc2V0cHJpbmM7Ci0rCQlrc3NsX2N0eF9zZXRzdHJpbmc7Ci0rCQlrc3NsX2N0eF9zaG93OwotKwkJa3NzbF9lcnJfc2V0OwotKwkJa3NzbF9rcmI1X2ZyZWVfZGF0YV9jb250ZW50czsKLSsJCWtzc2xfc2dldF90a3Q7Ci0rCQlrc3NsX3NraXBfY29uZm91bmQ7Ci0rCQlrc3NsX3ZhbGlkYXRlX3RpbWVzOwotKwkJUEVNX3JlYWRfYmlvX1NTTF9TRVNTSU9OOwotKwkJUEVNX3JlYWRfU1NMX1NFU1NJT047Ci0rCQlQRU1fd3JpdGVfYmlvX1NTTF9TRVNTSU9OOwotKwkJUEVNX3dyaXRlX1NTTF9TRVNTSU9OOwotKwkJU1NMX2FjY2VwdDsKLSsJCVNTTF9hZGRfY2xpZW50X0NBOwotKwkJU1NMX2FkZF9kaXJfY2VydF9zdWJqZWN0c190b19zdGFjazsKLSsJCVNTTF9hZGRfZGlyX2NlcnRfc3VianNfdG9fc3RrOwotKwkJU1NMX2FkZF9maWxlX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7Ci0rCQlTU0xfYWRkX2ZpbGVfY2VydF9zdWJqc190b19zdGs7Ci0rCQlTU0xfYWxlcnRfZGVzY19zdHJpbmc7Ci0rCQlTU0xfYWxlcnRfZGVzY19zdHJpbmdfbG9uZzsKLSsJCVNTTF9hbGVydF90eXBlX3N0cmluZzsKLSsJCVNTTF9hbGVydF90eXBlX3N0cmluZ19sb25nOwotKwkJU1NMX2NhbGxiYWNrX2N0cmw7Ci0rCQlTU0xfY2hlY2tfcHJpdmF0ZV9rZXk7Ci0rCQlTU0xfQ0lQSEVSX2Rlc2NyaXB0aW9uOwotKwkJU1NMX0NJUEhFUl9nZXRfYml0czsKLSsJCVNTTF9DSVBIRVJfZ2V0X25hbWU7Ci0rCQlTU0xfQ0lQSEVSX2dldF92ZXJzaW9uOwotKwkJU1NMX2NsZWFyOwotKwkJU1NMX0NPTVBfYWRkX2NvbXByZXNzaW9uX21ldGhvZDsKLSsJCVNTTF9DT01QX2dldF9jb21wcmVzc2lvbl9tZXRob2RzOwotKwkJU1NMX0NPTVBfZ2V0X2NvbXByZXNzX21ldGhvZHM7Ci0rCQlTU0xfQ09NUF9nZXRfbmFtZTsKLSsJCVNTTF9jb25uZWN0OwotKwkJU1NMX2NvcHlfc2Vzc2lvbl9pZDsKLSsJCVNTTF9jdHJsOwotKwkJU1NMX0NUWF9hZGRfY2xpZW50X0NBOwotKwkJU1NMX0NUWF9hZGRfc2Vzc2lvbjsKLSsJCVNTTF9DVFhfY2FsbGJhY2tfY3RybDsKLSsJCVNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXk7Ci0rCQlTU0xfQ1RYX2N0cmw7Ci0rCQlTU0xfQ1RYX2ZsdXNoX3Nlc3Npb25zOwotKwkJU1NMX0NUWF9mcmVlOwotKwkJU1NMX0NUWF9nZXRfY2VydF9zdG9yZTsKLSsJCVNTTF9DVFhfZ2V0X2NsaWVudF9DQV9saXN0OwotKwkJU1NMX0NUWF9nZXRfY2xpZW50X2NlcnRfY2I7Ci0rCQlTU0xfQ1RYX2dldF9leF9kYXRhOwotKwkJU1NMX0NUWF9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1NMX0NUWF9nZXRfaW5mb19jYWxsYmFjazsKLSsJCVNTTF9DVFhfZ2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX0NUWF9nZXRfdGltZW91dDsKLSsJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9tb2RlOwotKwkJU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnM7Ci0rCQlTU0xfQ1RYX25ldzsKLSsJCVNTTF9DVFhfcmVtb3ZlX3Nlc3Npb247Ci0rCQlTU0xfQ1RYX3Nlc3NfZ2V0X2dldF9jYjsKLSsJCVNTTF9DVFhfc2Vzc19nZXRfbmV3X2NiOwotKwkJU1NMX0NUWF9zZXNzX2dldF9yZW1vdmVfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3Npb25zOwotKwkJU1NMX0NUWF9zZXNzX3NldF9nZXRfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3Nfc2V0X25ld19jYjsKLSsJCVNTTF9DVFhfc2Vzc19zZXRfcmVtb3ZlX2NiOwotKwkJU1NMX0NUWF9zZXQxX3BhcmFtOwotKwkJU1NMX0NUWF9zZXRfY2VydF9zdG9yZTsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2I7Ci0rCQlTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdDsKLSsJCVNTTF9DVFhfc2V0X2NsaWVudF9DQV9saXN0OwotKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfY2I7Ci0rCQlTU0xfQ1RYX3NldF9jbGllbnRfY2VydF9lbmdpbmU7Ci0rCQlTU0xfQ1RYX3NldF9jb29raWVfZ2VuZXJhdGVfY2I7Ci0rCQlTU0xfQ1RYX3NldF9jb29raWVfdmVyaWZ5X2NiOwotKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2I7Ci0rCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YTsKLSsJCVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzOwotKwkJU1NMX0NUWF9zZXRfZGVmX3Bhc3N3ZF9jYl91ZDsKLSsJCVNTTF9DVFhfc2V0X2RlZl92ZXJpZnlfcGF0aHM7Ci0rCQlTU0xfQ1RYX3NldF9leF9kYXRhOwotKwkJU1NMX0NUWF9zZXRfZ2VuZXJhdGVfc2Vzc2lvbl9pZDsKLSsJCVNTTF9DVFhfc2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9tc2dfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9wc2tfY2xpZW50X2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfcHNrX3NlcnZlcl9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3B1cnBvc2U7Ci0rCQlTU0xfQ1RYX3NldF9xdWlldF9zaHV0ZG93bjsKLSsJCVNTTF9DVFhfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKLSsJCVNTTF9DVFhfc2V0X3NzbF92ZXJzaW9uOwotKwkJU1NMX0NUWF9zZXRfdGltZW91dDsKLSsJCVNTTF9DVFhfc2V0X3RtcF9kaF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3RtcF9lY2RoX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3RydXN0OwotKwkJU1NMX0NUWF9zZXRfdmVyaWZ5OwotKwkJU1NMX0NUWF9zZXRfdmVyaWZ5X2RlcHRoOwotKwkJU1NMX0NUWF91c2VfY2VydF9jaGFpbl9maWxlOwotKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGU7Ci0rCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9BU04xOwotKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2ZpbGU7Ci0rCQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5OwotKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9BU04xOwotKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlOwotKwkJU1NMX0NUWF91c2VfcHNrX2lkZW50aXR5X2hpbnQ7Ci0rCQlTU0xfQ1RYX3VzZV9SU0FQcml2YXRlS2V5OwotKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleV9BU04xOwotKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleV9maWxlOwotKwkJU1NMX2RvX2hhbmRzaGFrZTsKLSsJCVNTTF9kdXA7Ci0rCQlTU0xfZHVwX0NBX2xpc3Q7Ci0rCQlTU0xlYXlfYWRkX3NzbF9hbGdvcml0aG1zOwotKwkJU1NMX2ZyZWU7Ci0rCQlTU0xfZ2V0MV9zZXNzaW9uOwotKwkJU1NMX2dldF9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF9nZXRfY2lwaGVyX2xpc3Q7Ci0rCQlTU0xfZ2V0X2NpcGhlcnM7Ci0rCQlTU0xfZ2V0X2NsaWVudF9DQV9saXN0OwotKwkJU1NMX2dldF9jdXJyZW50X2NpcGhlcjsKLSsJCVNTTF9nZXRfY3VycmVudF9jb21wcmVzc2lvbjsKLSsJCVNTTF9nZXRfY3VycmVudF9leHBhbnNpb247Ci0rCQlTU0xfZ2V0X2RlZmF1bHRfdGltZW91dDsKLSsJCVNTTF9nZXRfZXJyb3I7Ci0rCQlTU0xfZ2V0X2V4X2RhdGE7Ci0rCQlTU0xfZ2V0X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4OwotKwkJU1NMX2dldF9leF9kX1g1MDlfU1RPUkVfQ1RYX2lkeDsKLSsJCVNTTF9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1NMX2dldF9mZDsKLSsJCVNTTF9nZXRfZmluaXNoZWQ7Ci0rCQlTU0xfZ2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbjsKLSsJCVNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF9nZXRfcGVlcl9maW5pc2hlZDsKLSsJCVNTTF9nZXRfcHJpdmF0ZWtleTsKLSsJCVNTTF9nZXRfcHNrX2lkZW50aXR5OwotKwkJU1NMX2dldF9wc2tfaWRlbnRpdHlfaGludDsKLSsJCVNTTF9nZXRfcXVpZXRfc2h1dGRvd247Ci0rCQlTU0xfZ2V0X3JiaW87Ci0rCQlTU0xfZ2V0X3JlYWRfYWhlYWQ7Ci0rCQlTU0xfZ2V0X3JmZDsKLSsJCVNTTF9nZXRfc2VydmVybmFtZTsKLSsJCVNTTF9nZXRfc2VydmVybmFtZV90eXBlOwotKwkJU1NMX2dldF9zZXNzaW9uOwotKwkJU1NMX2dldF9zaGFyZWRfY2lwaGVyczsKLSsJCVNTTF9nZXRfc2h1dGRvd247Ci0rCQlTU0xfZ2V0X1NTTF9DVFg7Ci0rCQlTU0xfZ2V0X3NzbF9tZXRob2Q7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9jYWxsYmFjazsKLSsJCVNTTF9nZXRfdmVyaWZ5X2RlcHRoOwotKwkJU1NMX2dldF92ZXJpZnlfbW9kZTsKLSsJCVNTTF9nZXRfdmVyaWZ5X3Jlc3VsdDsKLSsJCVNTTF9nZXRfdmVyc2lvbjsKLSsJCVNTTF9nZXRfd2JpbzsKLSsJCVNTTF9nZXRfd2ZkOwotKwkJU1NMX2hhc19tYXRjaGluZ19zZXNzaW9uX2lkOwotKwkJU1NMX2xpYnJhcnlfaW5pdDsKLSsJCVNTTF9sb2FkX2NsaWVudF9DQV9maWxlOwotKwkJU1NMX2xvYWRfZXJyb3Jfc3RyaW5nczsKLSsJCVNTTF9uZXc7Ci0rCQlTU0xfcGVlazsKLSsJCVNTTF9wZW5kaW5nOwotKwkJU1NMX3JlYWQ7Ci0rCQlTU0xfcmVuZWdvdGlhdGU7Ci0rCQlTU0xfcmVuZWdvdGlhdGVfcGVuZGluZzsKLSsJCVNTTF9yc3RhdGVfc3RyaW5nOwotKwkJU1NMX3JzdGF0ZV9zdHJpbmdfbG9uZzsKLSsJCVNTTF9TRVNTSU9OX2NtcDsKLSsJCVNTTF9TRVNTSU9OX2ZyZWU7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfZXhfZGF0YTsKLSsJCVNTTF9TRVNTSU9OX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfaWQ7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfdGltZTsKLSsJCVNTTF9TRVNTSU9OX2dldF90aW1lb3V0OwotKwkJU1NMX1NFU1NJT05faGFzaDsKLSsJCVNTTF9TRVNTSU9OX25ldzsKLSsJCVNTTF9TRVNTSU9OX3ByaW50OwotKwkJU1NMX1NFU1NJT05fcHJpbnRfZnA7Ci0rCQlTU0xfU0VTU0lPTl9zZXRfZXhfZGF0YTsKLSsJCVNTTF9TRVNTSU9OX3NldF90aW1lOwotKwkJU1NMX1NFU1NJT05fc2V0X3RpbWVvdXQ7Ci0rCQlTU0xfc2V0MV9wYXJhbTsKLSsJCVNTTF9zZXRfYWNjZXB0X3N0YXRlOwotKwkJU1NMX3NldF9iaW87Ci0rCQlTU0xfc2V0X2NpcGhlcl9saXN0OwotKwkJU1NMX3NldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9zZXRfY29ubmVjdF9zdGF0ZTsKLSsJCVNTTF9zZXRfZXhfZGF0YTsKLSsJCVNTTF9zZXRfZmQ7Ci0rCQlTU0xfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7Ci0rCQlTU0xfc2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X21zZ19jYWxsYmFjazsKLSsJCVNTTF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKLSsJCVNTTF9zZXRfcHNrX3NlcnZlcl9jYWxsYmFjazsKLSsJCVNTTF9zZXRfcHVycG9zZTsKLSsJCVNTTF9zZXRfcXVpZXRfc2h1dGRvd247Ci0rCQlTU0xfc2V0X3JlYWRfYWhlYWQ7Ci0rCQlTU0xfc2V0X3JmZDsKLSsJCVNTTF9zZXRfc2Vzc2lvbjsKLSsJCVNTTF9zZXRfc2Vzc2lvbl9pZF9jb250ZXh0OwotKwkJU1NMX3NldF9zZXNzaW9uX3NlY3JldF9jYjsKLSsJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0OwotKwkJU1NMX3NldF9zZXNzaW9uX3RpY2tldF9leHRfY2I7Ci0rCQlTU0xfc2V0X3NodXRkb3duOwotKwkJU1NMX3NldF9TU0xfQ1RYOwotKwkJU1NMX3NldF9zc2xfbWV0aG9kOwotKwkJU1NMX3NldF90bXBfZGhfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3RtcF9lY2RoX2NhbGxiYWNrOwotKwkJU1NMX3NldF90bXBfcnNhX2NhbGxiYWNrOwotKwkJU1NMX3NldF90cnVzdDsKLSsJCVNTTF9zZXRfdmVyaWZ5OwotKwkJU1NMX3NldF92ZXJpZnlfZGVwdGg7Ci0rCQlTU0xfc2V0X3ZlcmlmeV9yZXN1bHQ7Ci0rCQlTU0xfc2V0X3dmZDsKLSsJCVNTTF9zaHV0ZG93bjsKLSsJCVNTTF9zdGF0ZTsKLSsJCVNTTF9zdGF0ZV9zdHJpbmc7Ci0rCQlTU0xfc3RhdGVfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfdXNlX2NlcnRpZmljYXRlOwotKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZV9BU04xOwotKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOwotKwkJU1NMX3VzZV9Qcml2YXRlS2V5OwotKwkJU1NMX3VzZV9Qcml2YXRlS2V5X0FTTjE7Ci0rCQlTU0xfdXNlX1ByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTF91c2VfcHNrX2lkZW50aXR5X2hpbnQ7Ci0rCQlTU0xfdXNlX1JTQVByaXZhdGVLZXk7Ci0rCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF91c2VfUlNBUHJpdmF0ZUtleV9maWxlOwotKwkJU1NMdjIzX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0x2MjNfbWV0aG9kOwotKwkJU1NMdjIzX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0x2Ml9jbGllbnRfbWV0aG9kOwotKwkJU1NMdjJfbWV0aG9kOwotKwkJU1NMdjJfc2VydmVyX21ldGhvZDsKLSsJCVNTTHYzX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0x2M19tZXRob2Q7Ci0rCQlTU0x2M19zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMX3ZlcnNpb247Ci0rCQlTU0xfd2FudDsKLSsJCVNTTF93cml0ZTsKLSsJCVRMU3YxX2NsaWVudF9tZXRob2Q7Ci0rCQlUTFN2MV9tZXRob2Q7Ci0rCQlUTFN2MV9zZXJ2ZXJfbWV0aG9kOwotKwotKwotKwkJU1NMZWF5OwotKwkJU1NMZWF5X3ZlcnNpb247Ci0rCQlBU04xX0JJVF9TVFJJTkdfYXNuMV9tZXRoOwotKwkJQVNOMV9IRUFERVJfZnJlZTsKLSsJCUFTTjFfSEVBREVSX25ldzsKLSsJCUFTTjFfSUE1U1RSSU5HX2FzbjFfbWV0aDsKLSsJCUFTTjFfSU5URUdFUl9nZXQ7Ci0rCQlBU04xX0lOVEVHRVJfc2V0OwotKwkJQVNOMV9JTlRFR0VSX3RvX0JOOwotKwkJQVNOMV9PQkpFQ1RfY3JlYXRlOwotKwkJQVNOMV9PQkpFQ1RfZnJlZTsKLSsJCUFTTjFfT0JKRUNUX25ldzsKLSsJCUFTTjFfUFJJTlRBQkxFX3R5cGU7Ci0rCQlBU04xX1NUUklOR19jbXA7Ci0rCQlBU04xX1NUUklOR19kdXA7Ci0rCQlBU04xX1NUUklOR19mcmVlOwotKwkJQVNOMV9TVFJJTkdfbmV3OwotKwkJQVNOMV9TVFJJTkdfcHJpbnQ7Ci0rCQlBU04xX1NUUklOR19zZXQ7Ci0rCQlBU04xX1NUUklOR190eXBlX25ldzsKLSsJCUFTTjFfVFlQRV9mcmVlOwotKwkJQVNOMV9UWVBFX25ldzsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX3RvX3N0cmluZzsKLSsJCUFTTjFfVVRDVElNRV9jaGVjazsKLSsJCUFTTjFfVVRDVElNRV9wcmludDsKLSsJCUFTTjFfVVRDVElNRV9zZXQ7Ci0rCQlBU04xX2NoZWNrX2luZmluaXRlX2VuZDsKLSsJCUFTTjFfZDJpX2JpbzsKLSsJCUFTTjFfZDJpX2ZwOwotKwkJQVNOMV9kaWdlc3Q7Ci0rCQlBU04xX2R1cDsKLSsJCUFTTjFfZ2V0X29iamVjdDsKLSsJCUFTTjFfaTJkX2JpbzsKLSsJCUFTTjFfaTJkX2ZwOwotKwkJQVNOMV9vYmplY3Rfc2l6ZTsKLSsJCUFTTjFfcGFyc2U7Ci0rCQlBU04xX3B1dF9vYmplY3Q7Ci0rCQlBU04xX3NpZ247Ci0rCQlBU04xX3ZlcmlmeTsKLSsJCUJGX2NiY19lbmNyeXB0OwotKwkJQkZfY2ZiNjRfZW5jcnlwdDsKLSsJCUJGX2VjYl9lbmNyeXB0OwotKwkJQkZfZW5jcnlwdDsKLSsJCUJGX29mYjY0X2VuY3J5cHQ7Ci0rCQlCRl9vcHRpb25zOwotKwkJQkZfc2V0X2tleTsKLSsJCUJJT19DT05ORUNUX2ZyZWU7Ci0rCQlCSU9fQ09OTkVDVF9uZXc7Ci0rCQlCSU9fYWNjZXB0OwotKwkJQklPX2N0cmw7Ci0rCQlCSU9faW50X2N0cmw7Ci0rCQlCSU9fZGVidWdfY2FsbGJhY2s7Ci0rCQlCSU9fZHVtcDsKLSsJCUJJT19kdXBfY2hhaW47Ci0rCQlCSU9fZl9iYXNlNjQ7Ci0rCQlCSU9fZl9idWZmZXI7Ci0rCQlCSU9fZl9jaXBoZXI7Ci0rCQlCSU9fZl9tZDsKLSsJCUJJT19mX251bGw7Ci0rCQlCSU9fZl9wcm94eV9zZXJ2ZXI7Ci0rCQlCSU9fZmRfbm9uX2ZhdGFsX2Vycm9yOwotKwkJQklPX2ZkX3Nob3VsZF9yZXRyeTsKLSsJCUJJT19maW5kX3R5cGU7Ci0rCQlCSU9fZnJlZTsKLSsJCUJJT19mcmVlX2FsbDsKLSsJCUJJT19nZXRfYWNjZXB0X3NvY2tldDsKLSsJCUJJT19nZXRfZmlsdGVyX2JpbzsKLSsJCUJJT19nZXRfaG9zdF9pcDsKLSsJCUJJT19nZXRfcG9ydDsKLSsJCUJJT19nZXRfcmV0cnlfQklPOwotKwkJQklPX2dldF9yZXRyeV9yZWFzb247Ci0rCQlCSU9fZ2V0aG9zdGJ5bmFtZTsKLSsJCUJJT19nZXRzOwotKwkJQklPX25ldzsKLSsJCUJJT19uZXdfYWNjZXB0OwotKwkJQklPX25ld19jb25uZWN0OwotKwkJQklPX25ld19mZDsKLSsJCUJJT19uZXdfZmlsZTsKLSsJCUJJT19uZXdfZnA7Ci0rCQlCSU9fbmV3X3NvY2tldDsKLSsJCUJJT19wb3A7Ci0rCQlCSU9fcHJpbnRmOwotKwkJQklPX3B1c2g7Ci0rCQlCSU9fcHV0czsKLSsJCUJJT19yZWFkOwotKwkJQklPX3NfYWNjZXB0OwotKwkJQklPX3NfY29ubmVjdDsKLSsJCUJJT19zX2ZkOwotKwkJQklPX3NfZmlsZTsKLSsJCUJJT19zX21lbTsKLSsJCUJJT19zX251bGw7Ci0rCQlCSU9fc19wcm94eV9jbGllbnQ7Ci0rCQlCSU9fc19zb2NrZXQ7Ci0rCQlCSU9fc2V0OwotKwkJQklPX3NldF9jaXBoZXI7Ci0rCQlCSU9fc2V0X3RjcF9uZGVsYXk7Ci0rCQlCSU9fc29ja19jbGVhbnVwOwotKwkJQklPX3NvY2tfZXJyb3I7Ci0rCQlCSU9fc29ja19pbml0OwotKwkJQklPX3NvY2tfbm9uX2ZhdGFsX2Vycm9yOwotKwkJQklPX3NvY2tfc2hvdWxkX3JldHJ5OwotKwkJQklPX3NvY2tldF9pb2N0bDsKLSsJCUJJT193cml0ZTsKLSsJCUJOX0NUWF9mcmVlOwotKwkJQk5fQ1RYX25ldzsKLSsJCUJOX01PTlRfQ1RYX2ZyZWU7Ci0rCQlCTl9NT05UX0NUWF9uZXc7Ci0rCQlCTl9NT05UX0NUWF9zZXQ7Ci0rCQlCTl9hZGQ7Ci0rCQlCTl9hZGRfd29yZDsKLSsJCUJOX2hleDJibjsKLSsJCUJOX2JpbjJibjsKLSsJCUJOX2JuMmhleDsKLSsJCUJOX2JuMmJpbjsKLSsJCUJOX2NsZWFyOwotKwkJQk5fY2xlYXJfYml0OwotKwkJQk5fY2xlYXJfZnJlZTsKLSsJCUJOX2NtcDsKLSsJCUJOX2NvcHk7Ci0rCQlCTl9kaXY7Ci0rCQlCTl9kaXZfd29yZDsKLSsJCUJOX2R1cDsKLSsJCUJOX2ZyZWU7Ci0rCQlCTl9mcm9tX21vbnRnb21lcnk7Ci0rCQlCTl9nY2Q7Ci0rCQlCTl9nZW5lcmF0ZV9wcmltZTsKLSsJCUJOX2dldF93b3JkOwotKwkJQk5faXNfYml0X3NldDsKLSsJCUJOX2lzX3ByaW1lOwotKwkJQk5fbHNoaWZ0OwotKwkJQk5fbHNoaWZ0MTsKLSsJCUJOX21hc2tfYml0czsKLSsJCUJOX21vZDsKLSsJCUJOX21vZF9leHA7Ci0rCQlCTl9tb2RfZXhwX21vbnQ7Ci0rCQlCTl9tb2RfZXhwX3NpbXBsZTsKLSsJCUJOX21vZF9pbnZlcnNlOwotKwkJQk5fbW9kX211bDsKLSsJCUJOX21vZF9tdWxfbW9udGdvbWVyeTsKLSsJCUJOX21vZF93b3JkOwotKwkJQk5fbXVsOwotKwkJQk5fbmV3OwotKwkJQk5fbnVtX2JpdHM7Ci0rCQlCTl9udW1fYml0c193b3JkOwotKwkJQk5fb3B0aW9uczsKLSsJCUJOX3ByaW50OwotKwkJQk5fcHJpbnRfZnA7Ci0rCQlCTl9yYW5kOwotKwkJQk5fcmVjaXByb2NhbDsKLSsJCUJOX3JzaGlmdDsKLSsJCUJOX3JzaGlmdDE7Ci0rCQlCTl9zZXRfYml0OwotKwkJQk5fc2V0X3dvcmQ7Ci0rCQlCTl9zcXI7Ci0rCQlCTl9zdWI7Ci0rCQlCTl90b19BU04xX0lOVEVHRVI7Ci0rCQlCTl91Y21wOwotKwkJQk5fdmFsdWVfb25lOwotKwkJQlVGX01FTV9mcmVlOwotKwkJQlVGX01FTV9ncm93OwotKwkJQlVGX01FTV9uZXc7Ci0rCQlCVUZfc3RyZHVwOwotKwkJQ09ORl9mcmVlOwotKwkJQ09ORl9nZXRfbnVtYmVyOwotKwkJQ09ORl9nZXRfc2VjdGlvbjsKLSsJCUNPTkZfZ2V0X3N0cmluZzsKLSsJCUNPTkZfbG9hZDsKLSsJCUNSWVBUT19hZGRfbG9jazsKLSsJCUNSWVBUT19kYmdfZnJlZTsKLSsJCUNSWVBUT19kYmdfbWFsbG9jOwotKwkJQ1JZUFRPX2RiZ19yZWFsbG9jOwotKwkJQ1JZUFRPX2RiZ19yZW1hbGxvYzsKLSsJCUNSWVBUT19mcmVlOwotKwkJQ1JZUFRPX2dldF9hZGRfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfaWRfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2xvY2tfbmFtZTsKLSsJCUNSWVBUT19nZXRfbG9ja2luZ19jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfbWVtX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19sb2NrOwotKwkJQ1JZUFRPX21hbGxvYzsKLSsJCUNSWVBUT19tZW1fY3RybDsKLSsJCUNSWVBUT19tZW1fbGVha3M7Ci0rCQlDUllQVE9fbWVtX2xlYWtzX2NiOwotKwkJQ1JZUFRPX21lbV9sZWFrc19mcDsKLSsJCUNSWVBUT19yZWFsbG9jOwotKwkJQ1JZUFRPX3JlbWFsbG9jOwotKwkJQ1JZUFRPX3NldF9hZGRfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfaWRfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2xvY2tpbmdfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X21lbV9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fdGhyZWFkX2lkOwotKwkJREhfY2hlY2s7Ci0rCQlESF9jb21wdXRlX2tleTsKLSsJCURIX2ZyZWU7Ci0rCQlESF9nZW5lcmF0ZV9rZXk7Ci0rCQlESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzOwotKwkJREhfbmV3OwotKwkJREhfc2l6ZTsKLSsJCURIcGFyYW1zX3ByaW50OwotKwkJREhwYXJhbXNfcHJpbnRfZnA7Ci0rCQlEU0FfZnJlZTsKLSsJCURTQV9nZW5lcmF0ZV9rZXk7Ci0rCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyczsKLSsJCURTQV9pc19wcmltZTsKLSsJCURTQV9uZXc7Ci0rCQlEU0FfcHJpbnQ7Ci0rCQlEU0FfcHJpbnRfZnA7Ci0rCQlEU0Ffc2lnbjsKLSsJCURTQV9zaWduX3NldHVwOwotKwkJRFNBX3NpemU7Ci0rCQlEU0FfdmVyaWZ5OwotKwkJRFNBcGFyYW1zX3ByaW50OwotKwkJRFNBcGFyYW1zX3ByaW50X2ZwOwotKwkJRVJSX2NsZWFyX2Vycm9yOwotKwkJRVJSX2Vycm9yX3N0cmluZzsKLSsJCUVSUl9mcmVlX3N0cmluZ3M7Ci0rCQlFUlJfZnVuY19lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfZ2V0X2Vycl9zdGF0ZV90YWJsZTsKLSsJCUVSUl9nZXRfZXJyb3I7Ci0rCQlFUlJfZ2V0X2Vycm9yX2xpbmU7Ci0rCQlFUlJfZ2V0X3N0YXRlOwotKwkJRVJSX2dldF9zdHJpbmdfdGFibGU7Ci0rCQlFUlJfbGliX2Vycm9yX3N0cmluZzsKLSsJCUVSUl9sb2FkX0FTTjFfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0JJT19zdHJpbmdzOwotKwkJRVJSX2xvYWRfQk5fc3RyaW5nczsKLSsJCUVSUl9sb2FkX0JVRl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfQ09ORl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfREhfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0RTQV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfRVJSX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9FVlBfc3RyaW5nczsKLSsJCUVSUl9sb2FkX09CSl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfUEVNX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9QUk9YWV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfUlNBX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9YNTA5X3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9jcnlwdG9fc3RyaW5nczsKLSsJCUVSUl9sb2FkX3N0cmluZ3M7Ci0rCQlFUlJfcGVla19lcnJvcjsKLSsJCUVSUl9wZWVrX2Vycm9yX2xpbmU7Ci0rCQlFUlJfcHJpbnRfZXJyb3JzOwotKwkJRVJSX3ByaW50X2Vycm9yc19mcDsKLSsJCUVSUl9wdXRfZXJyb3I7Ci0rCQlFUlJfcmVhc29uX2Vycm9yX3N0cmluZzsKLSsJCUVSUl9yZW1vdmVfc3RhdGU7Ci0rCQlFVlBfQnl0ZXNUb0tleTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXA7Ci0rCQlFVlBfQ2lwaGVyRmluYWw7Ci0rCQlFVlBfQ2lwaGVySW5pdDsKLSsJCUVWUF9DaXBoZXJVcGRhdGU7Ci0rCQlFVlBfRGVjb2RlQmxvY2s7Ci0rCQlFVlBfRGVjb2RlRmluYWw7Ci0rCQlFVlBfRGVjb2RlSW5pdDsKLSsJCUVWUF9EZWNvZGVVcGRhdGU7Ci0rCQlFVlBfRGVjcnlwdEZpbmFsOwotKwkJRVZQX0RlY3J5cHRJbml0OwotKwkJRVZQX0RlY3J5cHRVcGRhdGU7Ci0rCQlFVlBfRGlnZXN0RmluYWw7Ci0rCQlFVlBfRGlnZXN0SW5pdDsKLSsJCUVWUF9EaWdlc3RVcGRhdGU7Ci0rCQlFVlBfRW5jb2RlQmxvY2s7Ci0rCQlFVlBfRW5jb2RlRmluYWw7Ci0rCQlFVlBfRW5jb2RlSW5pdDsKLSsJCUVWUF9FbmNvZGVVcGRhdGU7Ci0rCQlFVlBfRW5jcnlwdEZpbmFsOwotKwkJRVZQX0VuY3J5cHRJbml0OwotKwkJRVZQX0VuY3J5cHRVcGRhdGU7Ci0rCQlFVlBfT3BlbkZpbmFsOwotKwkJRVZQX09wZW5Jbml0OwotKwkJRVZQX1BLRVlfYXNzaWduOwotKwkJRVZQX1BLRVlfY29weV9wYXJhbWV0ZXJzOwotKwkJRVZQX1BLRVlfZnJlZTsKLSsJCUVWUF9QS0VZX21pc3NpbmdfcGFyYW1ldGVyczsKLSsJCUVWUF9QS0VZX25ldzsKLSsJCUVWUF9QS0VZX3NhdmVfcGFyYW1ldGVyczsKLSsJCUVWUF9QS0VZX3NpemU7Ci0rCQlFVlBfUEtFWV90eXBlOwotKwkJRVZQX1NlYWxGaW5hbDsKLSsJCUVWUF9TZWFsSW5pdDsKLSsJCUVWUF9TaWduRmluYWw7Ci0rCQlFVlBfVmVyaWZ5RmluYWw7Ci0rCQlFVlBfYWRkX2FsaWFzOwotKwkJRVZQX2FkZF9jaXBoZXI7Ci0rCQlFVlBfYWRkX2RpZ2VzdDsKLSsJCUVWUF9iZl9jYmM7Ci0rCQlFVlBfYmZfY2ZiNjQ7Ci0rCQlFVlBfYmZfZWNiOwotKwkJRVZQX2JmX29mYjsKLSsJCUVWUF9jbGVhbnVwOwotKwkJRVZQX2Rlc19jYmM7Ci0rCQlFVlBfZGVzX2NmYjY0OwotKwkJRVZQX2Rlc19lY2I7Ci0rCQlFVlBfZGVzX2VkZTsKLSsJCUVWUF9kZXNfZWRlMzsKLSsJCUVWUF9kZXNfZWRlM19jYmM7Ci0rCQlFVlBfZGVzX2VkZTNfY2ZiNjQ7Ci0rCQlFVlBfZGVzX2VkZTNfb2ZiOwotKwkJRVZQX2Rlc19lZGVfY2JjOwotKwkJRVZQX2Rlc19lZGVfY2ZiNjQ7Ci0rCQlFVlBfZGVzX2VkZV9vZmI7Ci0rCQlFVlBfZGVzX29mYjsKLSsJCUVWUF9kZXN4X2NiYzsKLSsJCUVWUF9kc3M7Ci0rCQlFVlBfZHNzMTsKLSsJCUVWUF9lbmNfbnVsbDsKLSsJCUVWUF9nZXRfY2lwaGVyYnluYW1lOwotKwkJRVZQX2dldF9kaWdlc3RieW5hbWU7Ci0rCQlFVlBfZ2V0X3B3X3Byb21wdDsKLSsJCUVWUF9pZGVhX2NiYzsKLSsJCUVWUF9pZGVhX2NmYjY0OwotKwkJRVZQX2lkZWFfZWNiOwotKwkJRVZQX2lkZWFfb2ZiOwotKwkJRVZQX21kMjsKLSsJCUVWUF9tZDU7Ci0rCQlFVlBfbWRfbnVsbDsKLSsJCUVWUF9yYzJfY2JjOwotKwkJRVZQX3JjMl9jZmI2NDsKLSsJCUVWUF9yYzJfZWNiOwotKwkJRVZQX3JjMl9vZmI7Ci0rCQlFVlBfcmM0OwotKwkJRVZQX3JlYWRfcHdfc3RyaW5nOwotKwkJRVZQX3NldF9wd19wcm9tcHQ7Ci0rCQlFVlBfc2hhOwotKwkJRVZQX3NoYTE7Ci0rCQlNRDI7Ci0rCQlNRDJfRmluYWw7Ci0rCQlNRDJfSW5pdDsKLSsJCU1EMl9VcGRhdGU7Ci0rCQlNRDJfb3B0aW9uczsKLSsJCU1ENTsKLSsJCU1ENV9GaW5hbDsKLSsJCU1ENV9Jbml0OwotKwkJTUQ1X1VwZGF0ZTsKLSsJCU1EQzI7Ci0rCQlNREMyX0ZpbmFsOwotKwkJTURDMl9Jbml0OwotKwkJTURDMl9VcGRhdGU7Ci0rCQlORVRTQ0FQRV9TUEtBQ19mcmVlOwotKwkJTkVUU0NBUEVfU1BLQUNfbmV3OwotKwkJTkVUU0NBUEVfU1BLSV9mcmVlOwotKwkJTkVUU0NBUEVfU1BLSV9uZXc7Ci0rCQlORVRTQ0FQRV9TUEtJX3NpZ247Ci0rCQlORVRTQ0FQRV9TUEtJX3ZlcmlmeTsKLSsJCU9CSl9hZGRfb2JqZWN0OwotKwkJT0JKX2JzZWFyY2g7Ci0rCQlPQkpfY2xlYW51cDsKLSsJCU9CSl9jbXA7Ci0rCQlPQkpfY3JlYXRlOwotKwkJT0JKX2R1cDsKLSsJCU9CSl9sbjJuaWQ7Ci0rCQlPQkpfbmV3X25pZDsKLSsJCU9CSl9uaWQybG47Ci0rCQlPQkpfbmlkMm9iajsKLSsJCU9CSl9uaWQyc247Ci0rCQlPQkpfb2JqMm5pZDsKLSsJCU9CSl9zbjJuaWQ7Ci0rCQlPQkpfdHh0Mm5pZDsKLSsJCVBFTV9BU04xX3JlYWQ7Ci0rCQlQRU1fQVNOMV9yZWFkX2JpbzsKLSsJCVBFTV9BU04xX3dyaXRlOwotKwkJUEVNX0FTTjFfd3JpdGVfYmlvOwotKwkJUEVNX1NlYWxGaW5hbDsKLSsJCVBFTV9TZWFsSW5pdDsKLSsJCVBFTV9TZWFsVXBkYXRlOwotKwkJUEVNX1NpZ25GaW5hbDsKLSsJCVBFTV9TaWduSW5pdDsKLSsJCVBFTV9TaWduVXBkYXRlOwotKwkJUEVNX1g1MDlfSU5GT19yZWFkOwotKwkJUEVNX1g1MDlfSU5GT19yZWFkX2JpbzsKLSsJCVBFTV9YNTA5X0lORk9fd3JpdGVfYmlvOwotKwkJUEVNX2Rla19pbmZvOwotKwkJUEVNX2RvX2hlYWRlcjsKLSsJCVBFTV9nZXRfRVZQX0NJUEhFUl9JTkZPOwotKwkJUEVNX3Byb2NfdHlwZTsKLSsJCVBFTV9yZWFkOwotKwkJUEVNX3JlYWRfREhwYXJhbXM7Ci0rCQlQRU1fcmVhZF9EU0FQcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfRFNBcGFyYW1zOwotKwkJUEVNX3JlYWRfUEtDUzc7Ci0rCQlQRU1fcmVhZF9Qcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfUlNBUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX1g1MDk7Ci0rCQlQRU1fcmVhZF9YNTA5X0NSTDsKLSsJCVBFTV9yZWFkX1g1MDlfUkVROwotKwkJUEVNX3JlYWRfYmlvOwotKwkJUEVNX3JlYWRfYmlvX0RIcGFyYW1zOwotKwkJUEVNX3JlYWRfYmlvX0RTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9iaW9fRFNBcGFyYW1zOwotKwkJUEVNX3JlYWRfYmlvX1BLQ1M3OwotKwkJUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9iaW9fUlNBUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5OwotKwkJUEVNX3JlYWRfYmlvX1g1MDlfQ1JMOwotKwkJUEVNX3JlYWRfYmlvX1g1MDlfUkVROwotKwkJUEVNX3dyaXRlOwotKwkJUEVNX3dyaXRlX0RIcGFyYW1zOwotKwkJUEVNX3dyaXRlX0RTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfRFNBcGFyYW1zOwotKwkJUEVNX3dyaXRlX1BLQ1M3OwotKwkJUEVNX3dyaXRlX1ByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfUlNBUHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9YNTA5OwotKwkJUEVNX3dyaXRlX1g1MDlfQ1JMOwotKwkJUEVNX3dyaXRlX1g1MDlfUkVROwotKwkJUEVNX3dyaXRlX2JpbzsKLSsJCVBFTV93cml0ZV9iaW9fREhwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfYmlvX0RTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX0RTQXBhcmFtczsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzc7Ci0rCQlQRU1fd3JpdGVfYmlvX1ByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDk7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ1JMOwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X1JFUTsKLSsJCVBLQ1M3X0RJR0VTVF9mcmVlOwotKwkJUEtDUzdfRElHRVNUX25ldzsKLSsJCVBLQ1M3X0VOQ1JZUFRfZnJlZTsKLSsJCVBLQ1M3X0VOQ1JZUFRfbmV3OwotKwkJUEtDUzdfRU5DX0NPTlRFTlRfZnJlZTsKLSsJCVBLQ1M3X0VOQ19DT05URU5UX25ldzsKLSsJCVBLQ1M3X0VOVkVMT1BFX2ZyZWU7Ci0rCQlQS0NTN19FTlZFTE9QRV9uZXc7Ci0rCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9kaWdlc3Q7Ci0rCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9mcmVlOwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfbmV3OwotKwkJUEtDUzdfUkVDSVBfSU5GT19mcmVlOwotKwkJUEtDUzdfUkVDSVBfSU5GT19uZXc7Ci0rCQlQS0NTN19TSUdORURfZnJlZTsKLSsJCVBLQ1M3X1NJR05FRF9uZXc7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19mcmVlOwotKwkJUEtDUzdfU0lHTkVSX0lORk9fbmV3OwotKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9mcmVlOwotKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9uZXc7Ci0rCQlQS0NTN19kdXA7Ci0rCQlQS0NTN19mcmVlOwotKwkJUEtDUzdfbmV3OwotKwkJUFJPWFlfRU5UUllfYWRkX25vcHJveHk7Ci0rCQlQUk9YWV9FTlRSWV9jbGVhcl9ub3Byb3h5OwotKwkJUFJPWFlfRU5UUllfZnJlZTsKLSsJCVBST1hZX0VOVFJZX2dldF9ub3Byb3h5OwotKwkJUFJPWFlfRU5UUllfbmV3OwotKwkJUFJPWFlfRU5UUllfc2V0X3NlcnZlcjsKLSsJCVBST1hZX2FkZF9ub3Byb3h5OwotKwkJUFJPWFlfYWRkX3NlcnZlcjsKLSsJCVBST1hZX2NoZWNrX2J5X2hvc3Q7Ci0rCQlQUk9YWV9jaGVja191cmw7Ci0rCQlQUk9YWV9jbGVhcl9ub3Byb3h5OwotKwkJUFJPWFlfZnJlZTsKLSsJCVBST1hZX2dldF9ub3Byb3h5OwotKwkJUFJPWFlfZ2V0X3Byb3hpZXM7Ci0rCQlQUk9YWV9nZXRfcHJveHlfZW50cnk7Ci0rCQlQUk9YWV9sb2FkX2NvbmY7Ci0rCQlQUk9YWV9uZXc7Ci0rCQlQUk9YWV9wcmludDsKLSsJCVJBTkRfYnl0ZXM7Ci0rCQlSQU5EX2NsZWFudXA7Ci0rCQlSQU5EX2ZpbGVfbmFtZTsKLSsJCVJBTkRfbG9hZF9maWxlOwotKwkJUkFORF9zY3JlZW47Ci0rCQlSQU5EX3NlZWQ7Ci0rCQlSQU5EX3dyaXRlX2ZpbGU7Ci0rCQlSQzJfY2JjX2VuY3J5cHQ7Ci0rCQlSQzJfY2ZiNjRfZW5jcnlwdDsKLSsJCVJDMl9lY2JfZW5jcnlwdDsKLSsJCVJDMl9lbmNyeXB0OwotKwkJUkMyX29mYjY0X2VuY3J5cHQ7Ci0rCQlSQzJfc2V0X2tleTsKLSsJCVJDNDsKLSsJCVJDNF9vcHRpb25zOwotKwkJUkM0X3NldF9rZXk7Ci0rCQlSU0FQcml2YXRlS2V5X2FzbjFfbWV0aDsKLSsJCVJTQVByaXZhdGVLZXlfZHVwOwotKwkJUlNBUHVibGljS2V5X2R1cDsKLSsJCVJTQV9QS0NTMV9TU0xlYXk7Ci0rCQlSU0FfZnJlZTsKLSsJCVJTQV9nZW5lcmF0ZV9rZXk7Ci0rCQlSU0FfbmV3OwotKwkJUlNBX25ld19tZXRob2Q7Ci0rCQlSU0FfcHJpbnQ7Ci0rCQlSU0FfcHJpbnRfZnA7Ci0rCQlSU0FfcHJpdmF0ZV9kZWNyeXB0OwotKwkJUlNBX3ByaXZhdGVfZW5jcnlwdDsKLSsJCVJTQV9wdWJsaWNfZGVjcnlwdDsKLSsJCVJTQV9wdWJsaWNfZW5jcnlwdDsKLSsJCVJTQV9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlSU0Ffc2lnbjsKLSsJCVJTQV9zaWduX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJUlNBX3NpemU7Ci0rCQlSU0FfdmVyaWZ5OwotKwkJUlNBX3ZlcmlmeV9BU04xX09DVEVUX1NUUklORzsKLSsJCVNIQTsKLSsJCVNIQTE7Ci0rCQlTSEExX0ZpbmFsOwotKwkJU0hBMV9Jbml0OwotKwkJU0hBMV9VcGRhdGU7Ci0rCQlTSEFfRmluYWw7Ci0rCQlTSEFfSW5pdDsKLSsJCVNIQV9VcGRhdGU7Ci0rCQlPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtczsKLSsJCU9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzOwotKwkJT3BlblNTTF9hZGRfYWxsX2RpZ2VzdHM7Ci0rCQlUWFRfREJfY3JlYXRlX2luZGV4OwotKwkJVFhUX0RCX2ZyZWU7Ci0rCQlUWFRfREJfZ2V0X2J5X2luZGV4OwotKwkJVFhUX0RCX2luc2VydDsKLSsJCVRYVF9EQl9yZWFkOwotKwkJVFhUX0RCX3dyaXRlOwotKwkJWDUwOV9BTEdPUl9mcmVlOwotKwkJWDUwOV9BTEdPUl9uZXc7Ci0rCQlYNTA5X0FUVFJJQlVURV9mcmVlOwotKwkJWDUwOV9BVFRSSUJVVEVfbmV3OwotKwkJWDUwOV9DSU5GX2ZyZWU7Ci0rCQlYNTA5X0NJTkZfbmV3OwotKwkJWDUwOV9DUkxfSU5GT19mcmVlOwotKwkJWDUwOV9DUkxfSU5GT19uZXc7Ci0rCQlYNTA5X0NSTF9hZGRfZXh0OwotKwkJWDUwOV9DUkxfY21wOwotKwkJWDUwOV9DUkxfZGVsZXRlX2V4dDsKLSsJCVg1MDlfQ1JMX2R1cDsKLSsJCVg1MDlfQ1JMX2ZyZWU7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0OwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2J5X09CSjsKLSsJCVg1MDlfQ1JMX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2NvdW50OwotKwkJWDUwOV9DUkxfbmV3OwotKwkJWDUwOV9DUkxfc2lnbjsKLSsJCVg1MDlfQ1JMX3ZlcmlmeTsKLSsJCVg1MDlfRVhURU5TSU9OX2NyZWF0ZV9ieV9OSUQ7Ci0rCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfT0JKOwotKwkJWDUwOV9FWFRFTlNJT05fZHVwOwotKwkJWDUwOV9FWFRFTlNJT05fZnJlZTsKLSsJCVg1MDlfRVhURU5TSU9OX2dldF9jcml0aWNhbDsKLSsJCVg1MDlfRVhURU5TSU9OX2dldF9kYXRhOwotKwkJWDUwOV9FWFRFTlNJT05fZ2V0X29iamVjdDsKLSsJCVg1MDlfRVhURU5TSU9OX25ldzsKLSsJCVg1MDlfRVhURU5TSU9OX3NldF9jcml0aWNhbDsKLSsJCVg1MDlfRVhURU5TSU9OX3NldF9kYXRhOwotKwkJWDUwOV9FWFRFTlNJT05fc2V0X29iamVjdDsKLSsJCVg1MDlfSU5GT19mcmVlOwotKwkJWDUwOV9JTkZPX25ldzsKLSsJCVg1MDlfTE9PS1VQX2J5X2FsaWFzOwotKwkJWDUwOV9MT09LVVBfYnlfZmluZ2VycHJpbnQ7Ci0rCQlYNTA5X0xPT0tVUF9ieV9pc3N1ZXJfc2VyaWFsOwotKwkJWDUwOV9MT09LVVBfYnlfc3ViamVjdDsKLSsJCVg1MDlfTE9PS1VQX2N0cmw7Ci0rCQlYNTA5X0xPT0tVUF9maWxlOwotKwkJWDUwOV9MT09LVVBfZnJlZTsKLSsJCVg1MDlfTE9PS1VQX2hhc2hfZGlyOwotKwkJWDUwOV9MT09LVVBfaW5pdDsKLSsJCVg1MDlfTE9PS1VQX25ldzsKLSsJCVg1MDlfTE9PS1VQX3NodXRkb3duOwotKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9OSUQ7Ci0rCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X09CSjsKLSsJCVg1MDlfTkFNRV9FTlRSWV9kdXA7Ci0rCQlYNTA5X05BTUVfRU5UUllfZnJlZTsKLSsJCVg1MDlfTkFNRV9FTlRSWV9nZXRfZGF0YTsKLSsJCVg1MDlfTkFNRV9FTlRSWV9nZXRfb2JqZWN0OwotKwkJWDUwOV9OQU1FX0VOVFJZX25ldzsKLSsJCVg1MDlfTkFNRV9FTlRSWV9zZXRfZGF0YTsKLSsJCVg1MDlfTkFNRV9FTlRSWV9zZXRfb2JqZWN0OwotKwkJWDUwOV9OQU1FX2FkZF9lbnRyeTsKLSsJCVg1MDlfTkFNRV9jbXA7Ci0rCQlYNTA5X05BTUVfZGVsZXRlX2VudHJ5OwotKwkJWDUwOV9OQU1FX2RpZ2VzdDsKLSsJCVg1MDlfTkFNRV9kdXA7Ci0rCQlYNTA5X05BTUVfZW50cnlfY291bnQ7Ci0rCQlYNTA5X05BTUVfZnJlZTsKLSsJCVg1MDlfTkFNRV9nZXRfZW50cnk7Ci0rCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X05JRDsKLSsJCVg1MDlfTkFNRV9nZXRfaW5kZXhfYnlfT0JKOwotKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5X05JRDsKLSsJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9PQko7Ci0rCQlYNTA5X05BTUVfaGFzaDsKLSsJCVg1MDlfTkFNRV9uZXc7Ci0rCQlYNTA5X05BTUVfb25lbGluZTsKLSsJCVg1MDlfTkFNRV9wcmludDsKLSsJCVg1MDlfTkFNRV9zZXQ7Ci0rCQlYNTA5X09CSkVDVF9mcmVlX2NvbnRlbnRzOwotKwkJWDUwOV9PQkpFQ1RfcmV0cmlldmVfYnlfc3ViamVjdDsKLSsJCVg1MDlfT0JKRUNUX3VwX3JlZl9jb3VudDsKLSsJCVg1MDlfUEtFWV9mcmVlOwotKwkJWDUwOV9QS0VZX25ldzsKLSsJCVg1MDlfUFVCS0VZX2ZyZWU7Ci0rCQlYNTA5X1BVQktFWV9nZXQ7Ci0rCQlYNTA5X1BVQktFWV9uZXc7Ci0rCQlYNTA5X1BVQktFWV9zZXQ7Ci0rCQlYNTA5X1JFUV9JTkZPX2ZyZWU7Ci0rCQlYNTA5X1JFUV9JTkZPX25ldzsKLSsJCVg1MDlfUkVRX2R1cDsKLSsJCVg1MDlfUkVRX2ZyZWU7Ci0rCQlYNTA5X1JFUV9nZXRfcHVia2V5OwotKwkJWDUwOV9SRVFfbmV3OwotKwkJWDUwOV9SRVFfcHJpbnQ7Ci0rCQlYNTA5X1JFUV9wcmludF9mcDsKLSsJCVg1MDlfUkVRX3NldF9wdWJrZXk7Ci0rCQlYNTA5X1JFUV9zZXRfc3ViamVjdF9uYW1lOwotKwkJWDUwOV9SRVFfc2V0X3ZlcnNpb247Ci0rCQlYNTA5X1JFUV9zaWduOwotKwkJWDUwOV9SRVFfdG9fWDUwOTsKLSsJCVg1MDlfUkVRX3ZlcmlmeTsKLSsJCVg1MDlfUkVWT0tFRF9hZGRfZXh0OwotKwkJWDUwOV9SRVZPS0VEX2RlbGV0ZV9leHQ7Ci0rCQlYNTA5X1JFVk9LRURfZnJlZTsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0OwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfTklEOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfT0JKOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9jcml0aWM7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9jb3VudDsKLSsJCVg1MDlfUkVWT0tFRF9uZXc7Ci0rCQlYNTA5X1NJR19mcmVlOwotKwkJWDUwOV9TSUdfbmV3OwotKwkJWDUwOV9TVE9SRV9DVFhfY2xlYW51cDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2luaXQ7Ci0rCQlYNTA5X1NUT1JFX2FkZF9jZXJ0OwotKwkJWDUwOV9TVE9SRV9hZGRfbG9va3VwOwotKwkJWDUwOV9TVE9SRV9mcmVlOwotKwkJWDUwOV9TVE9SRV9nZXRfYnlfc3ViamVjdDsKLSsJCVg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnM7Ci0rCQlYNTA5X1NUT1JFX25ldzsKLSsJCVg1MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHM7Ci0rCQlYNTA5X1ZBTF9mcmVlOwotKwkJWDUwOV9WQUxfbmV3OwotKwkJWDUwOV9hZGRfZXh0OwotKwkJWDUwOV9hc24xX21ldGg7Ci0rCQlYNTA5X2NlcnRpZmljYXRlX3R5cGU7Ci0rCQlYNTA5X2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJWDUwOV9jbXBfY3VycmVudF90aW1lOwotKwkJWDUwOV9kZWxldGVfZXh0OwotKwkJWDUwOV9kaWdlc3Q7Ci0rCQlYNTA5X2R1cDsKLSsJCVg1MDlfZnJlZTsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9hcmVhOwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2RpcjsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXJfZW52OwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGU7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZmlsZV9lbnY7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X3ByaXZhdGVfZGlyOwotKwkJWDUwOV9nZXRfZXh0OwotKwkJWDUwOV9nZXRfZXh0X2J5X05JRDsKLSsJCVg1MDlfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5X2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlYNTA5X2dldF9leHRfY291bnQ7Ci0rCQlYNTA5X2dldF9pc3N1ZXJfbmFtZTsKLSsJCVg1MDlfZ2V0X3B1YmtleTsKLSsJCVg1MDlfZ2V0X3B1YmtleV9wYXJhbWV0ZXJzOwotKwkJWDUwOV9nZXRfc2VyaWFsTnVtYmVyOwotKwkJWDUwOV9nZXRfc3ViamVjdF9uYW1lOwotKwkJWDUwOV9nbXRpbWVfYWRqOwotKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9jbXA7Ci0rCQlYNTA5X2lzc3Vlcl9hbmRfc2VyaWFsX2hhc2g7Ci0rCQlYNTA5X2lzc3Vlcl9uYW1lX2NtcDsKLSsJCVg1MDlfaXNzdWVyX25hbWVfaGFzaDsKLSsJCVg1MDlfbG9hZF9jZXJ0X2ZpbGU7Ci0rCQlYNTA5X25ldzsKLSsJCVg1MDlfcHJpbnQ7Ci0rCQlYNTA5X3ByaW50X2ZwOwotKwkJWDUwOV9zZXRfaXNzdWVyX25hbWU7Ci0rCQlYNTA5X3NldF9ub3RBZnRlcjsKLSsJCVg1MDlfc2V0X25vdEJlZm9yZTsKLSsJCVg1MDlfc2V0X3B1YmtleTsKLSsJCVg1MDlfc2V0X3NlcmlhbE51bWJlcjsKLSsJCVg1MDlfc2V0X3N1YmplY3RfbmFtZTsKLSsJCVg1MDlfc2V0X3ZlcnNpb247Ci0rCQlYNTA5X3NpZ247Ci0rCQlYNTA5X3N1YmplY3RfbmFtZV9jbXA7Ci0rCQlYNTA5X3N1YmplY3RfbmFtZV9oYXNoOwotKwkJWDUwOV90b19YNTA5X1JFUTsKLSsJCVg1MDlfdmVyaWZ5OwotKwkJWDUwOV92ZXJpZnlfY2VydDsKLSsJCVg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nOwotKwkJWDUwOXYzX2FkZF9leHQ7Ci0rCQlYNTA5djNfYWRkX2V4dGVuc2lvbjsKLSsJCVg1MDl2M19hZGRfbmV0c2NhcGVfZXh0ZW5zaW9uczsKLSsJCVg1MDl2M19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKLSsJCVg1MDl2M19jbGVhbnVwX2V4dGVuc2lvbnM7Ci0rCQlYNTA5djNfZGF0YV90eXBlX2J5X05JRDsKLSsJCVg1MDl2M19kYXRhX3R5cGVfYnlfT0JKOwotKwkJWDUwOXYzX2RlbGV0ZV9leHQ7Ci0rCQlYNTA5djNfZ2V0X2V4dDsKLSsJCVg1MDl2M19nZXRfZXh0X2J5X05JRDsKLSsJCVg1MDl2M19nZXRfZXh0X2J5X09CSjsKLSsJCVg1MDl2M19nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOXYzX2dldF9leHRfY291bnQ7Ci0rCQlYNTA5djNfcGFja19zdHJpbmc7Ci0rCQlYNTA5djNfcGFja190eXBlX2J5X05JRDsKLSsJCVg1MDl2M19wYWNrX3R5cGVfYnlfT0JKOwotKwkJWDUwOXYzX3VucGFja19zdHJpbmc7Ci0rCQlfZGVzX2NyeXB0OwotKwkJYTJkX0FTTjFfT0JKRUNUOwotKwkJYTJpX0FTTjFfSU5URUdFUjsKLSsJCWEyaV9BU04xX1NUUklORzsKLSsJCWFzbjFfRmluaXNoOwotKwkJYXNuMV9HZXRTZXF1ZW5jZTsKLSsJCWJuX2Rpdl93b3JkczsKLSsJCWJuX2V4cGFuZDI7Ci0rCQlibl9tdWxfYWRkX3dvcmRzOwotKwkJYm5fbXVsX3dvcmRzOwotKwkJQk5fdWFkZDsKLSsJCUJOX3VzdWI7Ci0rCQlibl9zcXJfd29yZHM7Ci0rCQlfb3NzbF9vbGRfY3J5cHQ7Ci0rCQlkMmlfQVNOMV9CSVRfU1RSSU5HOwotKwkJZDJpX0FTTjFfQk9PTEVBTjsKLSsJCWQyaV9BU04xX0hFQURFUjsKLSsJCWQyaV9BU04xX0lBNVNUUklORzsKLSsJCWQyaV9BU04xX0lOVEVHRVI7Ci0rCQlkMmlfQVNOMV9PQkpFQ1Q7Ci0rCQlkMmlfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlkMmlfQVNOMV9QUklOVEFCTEU7Ci0rCQlkMmlfQVNOMV9QUklOVEFCTEVTVFJJTkc7Ci0rCQlkMmlfQVNOMV9TRVQ7Ci0rCQlkMmlfQVNOMV9UNjFTVFJJTkc7Ci0rCQlkMmlfQVNOMV9UWVBFOwotKwkJZDJpX0FTTjFfVVRDVElNRTsKLSsJCWQyaV9BU04xX2J5dGVzOwotKwkJZDJpX0FTTjFfdHlwZV9ieXRlczsKLSsJCWQyaV9ESHBhcmFtczsKLSsJCWQyaV9EU0FQcml2YXRlS2V5OwotKwkJZDJpX0RTQVByaXZhdGVLZXlfYmlvOwotKwkJZDJpX0RTQVByaXZhdGVLZXlfZnA7Ci0rCQlkMmlfRFNBUHVibGljS2V5OwotKwkJZDJpX0RTQXBhcmFtczsKLSsJCWQyaV9ORVRTQ0FQRV9TUEtBQzsKLSsJCWQyaV9ORVRTQ0FQRV9TUEtJOwotKwkJZDJpX05ldHNjYXBlX1JTQTsKLSsJCWQyaV9QS0NTNzsKLSsJCWQyaV9QS0NTN19ESUdFU1Q7Ci0rCQlkMmlfUEtDUzdfRU5DUllQVDsKLSsJCWQyaV9QS0NTN19FTkNfQ09OVEVOVDsKLSsJCWQyaV9QS0NTN19FTlZFTE9QRTsKLSsJCWQyaV9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKLSsJCWQyaV9QS0NTN19SRUNJUF9JTkZPOwotKwkJZDJpX1BLQ1M3X1NJR05FRDsKLSsJCWQyaV9QS0NTN19TSUdORVJfSU5GTzsKLSsJCWQyaV9QS0NTN19TSUdOX0VOVkVMT1BFOwotKwkJZDJpX1BLQ1M3X2JpbzsKLSsJCWQyaV9QS0NTN19mcDsKLSsJCWQyaV9Qcml2YXRlS2V5OwotKwkJZDJpX1B1YmxpY0tleTsKLSsJCWQyaV9SU0FQcml2YXRlS2V5OwotKwkJZDJpX1JTQVByaXZhdGVLZXlfYmlvOwotKwkJZDJpX1JTQVByaXZhdGVLZXlfZnA7Ci0rCQlkMmlfUlNBUHVibGljS2V5OwotKwkJZDJpX1g1MDk7Ci0rCQlkMmlfWDUwOV9BTEdPUjsKLSsJCWQyaV9YNTA5X0FUVFJJQlVURTsKLSsJCWQyaV9YNTA5X0NJTkY7Ci0rCQlkMmlfWDUwOV9DUkw7Ci0rCQlkMmlfWDUwOV9DUkxfSU5GTzsKLSsJCWQyaV9YNTA5X0NSTF9iaW87Ci0rCQlkMmlfWDUwOV9DUkxfZnA7Ci0rCQlkMmlfWDUwOV9FWFRFTlNJT047Ci0rCQlkMmlfWDUwOV9OQU1FOwotKwkJZDJpX1g1MDlfTkFNRV9FTlRSWTsKLSsJCWQyaV9YNTA5X1BLRVk7Ci0rCQlkMmlfWDUwOV9QVUJLRVk7Ci0rCQlkMmlfWDUwOV9SRVE7Ci0rCQlkMmlfWDUwOV9SRVFfSU5GTzsKLSsJCWQyaV9YNTA5X1JFUV9iaW87Ci0rCQlkMmlfWDUwOV9SRVFfZnA7Ci0rCQlkMmlfWDUwOV9SRVZPS0VEOwotKwkJZDJpX1g1MDlfU0lHOwotKwkJZDJpX1g1MDlfVkFMOwotKwkJZDJpX1g1MDlfYmlvOwotKwkJZDJpX1g1MDlfZnA7Ci0rCQlERVNfY2JjX2Nrc3VtOwotKwkJREVTX2NiY19lbmNyeXB0OwotKwkJREVTX2NibG9ja19wcmludF9maWxlOwotKwkJREVTX2NmYjY0X2VuY3J5cHQ7Ci0rCQlERVNfY2ZiX2VuY3J5cHQ7Ci0rCQlERVNfZGVjcnlwdDM7Ci0rCQlERVNfZWNiM19lbmNyeXB0OwotKwkJREVTX2VjYl9lbmNyeXB0OwotKwkJREVTX2VkZTNfY2JjX2VuY3J5cHQ7Ci0rCQlERVNfZWRlM19jZmI2NF9lbmNyeXB0OwotKwkJREVTX2VkZTNfb2ZiNjRfZW5jcnlwdDsKLSsJCURFU19lbmNfcmVhZDsKLSsJCURFU19lbmNfd3JpdGU7Ci0rCQlERVNfZW5jcnlwdDE7Ci0rCQlERVNfZW5jcnlwdDI7Ci0rCQlERVNfZW5jcnlwdDM7Ci0rCQlERVNfZmNyeXB0OwotKwkJREVTX2lzX3dlYWtfa2V5OwotKwkJREVTX2tleV9zY2hlZDsKLSsJCURFU19uY2JjX2VuY3J5cHQ7Ci0rCQlERVNfb2ZiNjRfZW5jcnlwdDsKLSsJCURFU19vZmJfZW5jcnlwdDsKLSsJCURFU19vcHRpb25zOwotKwkJREVTX3BjYmNfZW5jcnlwdDsKLSsJCURFU19xdWFkX2Nrc3VtOwotKwkJREVTX3JhbmRvbV9rZXk7Ci0rCQlfb3NzbF9vbGRfZGVzX3JhbmRvbV9zZWVkOwotKwkJX29zc2xfb2xkX2Rlc19yZWFkXzJwYXNzd29yZHM7Ci0rCQlfb3NzbF9vbGRfZGVzX3JlYWRfcGFzc3dvcmQ7Ci0rCQlfb3NzbF9vbGRfZGVzX3JlYWRfcHc7Ci0rCQlfb3NzbF9vbGRfZGVzX3JlYWRfcHdfc3RyaW5nOwotKwkJREVTX3NldF9rZXk7Ci0rCQlERVNfc2V0X29kZF9wYXJpdHk7Ci0rCQlERVNfc3RyaW5nX3RvXzJrZXlzOwotKwkJREVTX3N0cmluZ190b19rZXk7Ci0rCQlERVNfeGNiY19lbmNyeXB0OwotKwkJREVTX3h3aGl0ZV9pbjJvdXQ7Ci0rCQlmY3J5cHRfYm9keTsKLSsJCWkyYV9BU04xX0lOVEVHRVI7Ci0rCQlpMmFfQVNOMV9PQkpFQ1Q7Ci0rCQlpMmFfQVNOMV9TVFJJTkc7Ci0rCQlpMmRfQVNOMV9CSVRfU1RSSU5HOwotKwkJaTJkX0FTTjFfQk9PTEVBTjsKLSsJCWkyZF9BU04xX0hFQURFUjsKLSsJCWkyZF9BU04xX0lBNVNUUklORzsKLSsJCWkyZF9BU04xX0lOVEVHRVI7Ci0rCQlpMmRfQVNOMV9PQkpFQ1Q7Ci0rCQlpMmRfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlpMmRfQVNOMV9QUklOVEFCTEU7Ci0rCQlpMmRfQVNOMV9TRVQ7Ci0rCQlpMmRfQVNOMV9UWVBFOwotKwkJaTJkX0FTTjFfVVRDVElNRTsKLSsJCWkyZF9BU04xX2J5dGVzOwotKwkJaTJkX0RIcGFyYW1zOwotKwkJaTJkX0RTQVByaXZhdGVLZXk7Ci0rCQlpMmRfRFNBUHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfRFNBUHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9EU0FQdWJsaWNLZXk7Ci0rCQlpMmRfRFNBcGFyYW1zOwotKwkJaTJkX05FVFNDQVBFX1NQS0FDOwotKwkJaTJkX05FVFNDQVBFX1NQS0k7Ci0rCQlpMmRfTmV0c2NhcGVfUlNBOwotKwkJaTJkX1BLQ1M3OwotKwkJaTJkX1BLQ1M3X0RJR0VTVDsKLSsJCWkyZF9QS0NTN19FTkNSWVBUOwotKwkJaTJkX1BLQ1M3X0VOQ19DT05URU5UOwotKwkJaTJkX1BLQ1M3X0VOVkVMT1BFOwotKwkJaTJkX1BLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMOwotKwkJaTJkX1BLQ1M3X1JFQ0lQX0lORk87Ci0rCQlpMmRfUEtDUzdfU0lHTkVEOwotKwkJaTJkX1BLQ1M3X1NJR05FUl9JTkZPOwotKwkJaTJkX1BLQ1M3X1NJR05fRU5WRUxPUEU7Ci0rCQlpMmRfUEtDUzdfYmlvOwotKwkJaTJkX1BLQ1M3X2ZwOwotKwkJaTJkX1ByaXZhdGVLZXk7Ci0rCQlpMmRfUHVibGljS2V5OwotKwkJaTJkX1JTQVByaXZhdGVLZXk7Ci0rCQlpMmRfUlNBUHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfUlNBUHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9SU0FQdWJsaWNLZXk7Ci0rCQlpMmRfWDUwOTsKLSsJCWkyZF9YNTA5X0FMR09SOwotKwkJaTJkX1g1MDlfQVRUUklCVVRFOwotKwkJaTJkX1g1MDlfQ0lORjsKLSsJCWkyZF9YNTA5X0NSTDsKLSsJCWkyZF9YNTA5X0NSTF9JTkZPOwotKwkJaTJkX1g1MDlfQ1JMX2JpbzsKLSsJCWkyZF9YNTA5X0NSTF9mcDsKLSsJCWkyZF9YNTA5X0VYVEVOU0lPTjsKLSsJCWkyZF9YNTA5X05BTUU7Ci0rCQlpMmRfWDUwOV9OQU1FX0VOVFJZOwotKwkJaTJkX1g1MDlfUEtFWTsKLSsJCWkyZF9YNTA5X1BVQktFWTsKLSsJCWkyZF9YNTA5X1JFUTsKLSsJCWkyZF9YNTA5X1JFUV9JTkZPOwotKwkJaTJkX1g1MDlfUkVRX2JpbzsKLSsJCWkyZF9YNTA5X1JFUV9mcDsKLSsJCWkyZF9YNTA5X1JFVk9LRUQ7Ci0rCQlpMmRfWDUwOV9TSUc7Ci0rCQlpMmRfWDUwOV9WQUw7Ci0rCQlpMmRfWDUwOV9iaW87Ci0rCQlpMmRfWDUwOV9mcDsKLSsJCWlkZWFfY2JjX2VuY3J5cHQ7Ci0rCQlpZGVhX2NmYjY0X2VuY3J5cHQ7Ci0rCQlpZGVhX2VjYl9lbmNyeXB0OwotKwkJaWRlYV9lbmNyeXB0OwotKwkJaWRlYV9vZmI2NF9lbmNyeXB0OwotKwkJaWRlYV9vcHRpb25zOwotKwkJaWRlYV9zZXRfZGVjcnlwdF9rZXk7Ci0rCQlpZGVhX3NldF9lbmNyeXB0X2tleTsKLSsJCWxoX2RlbGV0ZTsKLSsJCWxoX2RvYWxsOwotKwkJbGhfZG9hbGxfYXJnOwotKwkJbGhfZnJlZTsKLSsJCWxoX2luc2VydDsKLSsJCWxoX25ldzsKLSsJCWxoX25vZGVfc3RhdHM7Ci0rCQlsaF9ub2RlX3N0YXRzX2JpbzsKLSsJCWxoX25vZGVfdXNhZ2Vfc3RhdHM7Ci0rCQlsaF9ub2RlX3VzYWdlX3N0YXRzX2JpbzsKLSsJCWxoX3JldHJpZXZlOwotKwkJbGhfc3RhdHM7Ci0rCQlsaF9zdGF0c19iaW87Ci0rCQlsaF9zdHJoYXNoOwotKwkJc2tfZGVsZXRlOwotKwkJc2tfZGVsZXRlX3B0cjsKLSsJCXNrX2R1cDsKLSsJCXNrX2ZpbmQ7Ci0rCQlza19mcmVlOwotKwkJc2tfaW5zZXJ0OwotKwkJc2tfbmV3OwotKwkJc2tfcG9wOwotKwkJc2tfcG9wX2ZyZWU7Ci0rCQlza19wdXNoOwotKwkJc2tfc2V0X2NtcF9mdW5jOwotKwkJc2tfc2hpZnQ7Ci0rCQlza191bnNoaWZ0OwotKwkJc2tfemVybzsKLSsJCUJJT19mX25iaW9fdGVzdDsKLSsJCUFTTjFfVFlQRV9nZXQ7Ci0rCQlBU04xX1RZUEVfc2V0OwotKwkJUEtDUzdfY29udGVudF9mcmVlOwotKwkJRVJSX2xvYWRfUEtDUzdfc3RyaW5nczsKLSsJCVg1MDlfZmluZF9ieV9pc3N1ZXJfYW5kX3NlcmlhbDsKLSsJCVg1MDlfZmluZF9ieV9zdWJqZWN0OwotKwkJUEtDUzdfY3RybDsKLSsJCVBLQ1M3X3NldF90eXBlOwotKwkJUEtDUzdfc2V0X2NvbnRlbnQ7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19zZXQ7Ci0rCQlQS0NTN19hZGRfc2lnbmVyOwotKwkJUEtDUzdfYWRkX2NlcnRpZmljYXRlOwotKwkJUEtDUzdfYWRkX2NybDsKLSsJCVBLQ1M3X2NvbnRlbnRfbmV3OwotKwkJUEtDUzdfZGF0YVNpZ247Ci0rCQlQS0NTN19kYXRhVmVyaWZ5OwotKwkJUEtDUzdfZGF0YUluaXQ7Ci0rCQlQS0NTN19hZGRfc2lnbmF0dXJlOwotKwkJUEtDUzdfY2VydF9mcm9tX3NpZ25lcl9pbmZvOwotKwkJUEtDUzdfZ2V0X3NpZ25lcl9pbmZvOwotKwkJRVZQX2RlbGV0ZV9hbGlhczsKLSsJCUVWUF9tZGMyOwotKwkJUEVNX3JlYWRfYmlvX1JTQVB1YmxpY0tleTsKLSsJCVBFTV93cml0ZV9iaW9fUlNBUHVibGljS2V5OwotKwkJZDJpX1JTQVB1YmxpY0tleV9iaW87Ci0rCQlpMmRfUlNBUHVibGljS2V5X2JpbzsKLSsJCVBFTV9yZWFkX1JTQVB1YmxpY0tleTsKLSsJCVBFTV93cml0ZV9SU0FQdWJsaWNLZXk7Ci0rCQlkMmlfUlNBUHVibGljS2V5X2ZwOwotKwkJaTJkX1JTQVB1YmxpY0tleV9mcDsKLSsJCUJJT19jb3B5X25leHRfcmV0cnk7Ci0rCQlSU0FfZmxhZ3M7Ci0rCQlYNTA5X1NUT1JFX2FkZF9jcmw7Ci0rCQlYNTA5X2xvYWRfY3JsX2ZpbGU7Ci0rCQlFVlBfcmMyXzQwX2NiYzsKLSsJCUVWUF9yYzRfNDA7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9pbml0OwotKwkJSE1BQzsKLSsJCUhNQUNfSW5pdDsKLSsJCUhNQUNfVXBkYXRlOwotKwkJSE1BQ19GaW5hbDsKLSsJCUVSUl9nZXRfbmV4dF9lcnJvcl9saWJyYXJ5OwotKwkJRVZQX1BLRVlfY21wX3BhcmFtZXRlcnM7Ci0rCQlITUFDX2NsZWFudXA7Ci0rCQlCSU9fcHRyX2N0cmw7Ci0rCQlCSU9fbmV3X2ZpbGVfaW50ZXJuYWw7Ci0rCQlCSU9fbmV3X2ZwX2ludGVybmFsOwotKwkJQklPX3NfZmlsZV9pbnRlcm5hbDsKLSsJCUJOX0JMSU5ESU5HX2NvbnZlcnQ7Ci0rCQlCTl9CTElORElOR19pbnZlcnQ7Ci0rCQlCTl9CTElORElOR191cGRhdGU7Ci0rCQlSU0FfYmxpbmRpbmdfb247Ci0rCQlSU0FfYmxpbmRpbmdfb2ZmOwotKwkJaTJ0X0FTTjFfT0JKRUNUOwotKwkJQk5fQkxJTkRJTkdfbmV3OwotKwkJQk5fQkxJTkRJTkdfZnJlZTsKLSsJCUVWUF9jYXN0NV9jYmM7Ci0rCQlFVlBfY2FzdDVfY2ZiNjQ7Ci0rCQlFVlBfY2FzdDVfZWNiOwotKwkJRVZQX2Nhc3Q1X29mYjsKLSsJCUJGX2RlY3J5cHQ7Ci0rCQlDQVNUX3NldF9rZXk7Ci0rCQlDQVNUX2VuY3J5cHQ7Ci0rCQlDQVNUX2RlY3J5cHQ7Ci0rCQlDQVNUX2VjYl9lbmNyeXB0OwotKwkJQ0FTVF9jYmNfZW5jcnlwdDsKLSsJCUNBU1RfY2ZiNjRfZW5jcnlwdDsKLSsJCUNBU1Rfb2ZiNjRfZW5jcnlwdDsKLSsJCVJDMl9kZWNyeXB0OwotKwkJT0JKX2NyZWF0ZV9vYmplY3RzOwotKwkJQk5fZXhwOwotKwkJQk5fbXVsX3dvcmQ7Ci0rCQlCTl9zdWJfd29yZDsKLSsJCUJOX2RlYzJibjsKLSsJCUJOX2JuMmRlYzsKLSsJCUJJT19naGJuX2N0cmw7Ci0rCQlDUllQVE9fZnJlZV9leF9kYXRhOwotKwkJQ1JZUFRPX2dldF9leF9kYXRhOwotKwkJQ1JZUFRPX3NldF9leF9kYXRhOwotKwkJRVJSX2xvYWRfQ1JZUFRPX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9DUllQVE9saWJfc3RyaW5nczsKLSsJCUVWUF9QS0VZX2JpdHM7Ci0rCQlNRDVfVHJhbnNmb3JtOwotKwkJU0hBMV9UcmFuc2Zvcm07Ci0rCQlTSEFfVHJhbnNmb3JtOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2NoYWluOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NlcnQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfY2hhaW47Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZXJyb3I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZXhfZGF0YTsKLSsJCUNSWVBUT19kdXBfZXhfZGF0YTsKLSsJCUNSWVBUT19nZXRfbmV3X2xvY2tpZDsKLSsJCUNSWVBUT19uZXdfZXhfZGF0YTsKLSsJCVJTQV9zZXRfZXhfZGF0YTsKLSsJCVJTQV9nZXRfZXhfZGF0YTsKLSsJCVJTQV9nZXRfZXhfbmV3X2luZGV4OwotKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMTsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzI7Ci0rCQlSU0FfcGFkZGluZ19hZGRfU1NMdjIzOwotKwkJUlNBX3BhZGRpbmdfYWRkX25vbmU7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzE7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzI7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19TU0x2MjM7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19ub25lOwotKwkJYm5fYWRkX3dvcmRzOwotKwkJZDJpX05ldHNjYXBlX1JTQV8yOwotKwkJQ1JZUFRPX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlSSVBFTUQxNjBfSW5pdDsKLSsJCVJJUEVNRDE2MF9VcGRhdGU7Ci0rCQlSSVBFTUQxNjBfRmluYWw7Ci0rCQlSSVBFTUQxNjA7Ci0rCQlSSVBFTUQxNjBfVHJhbnNmb3JtOwotKwkJUkM1XzMyX3NldF9rZXk7Ci0rCQlSQzVfMzJfZWNiX2VuY3J5cHQ7Ci0rCQlSQzVfMzJfZW5jcnlwdDsKLSsJCVJDNV8zMl9kZWNyeXB0OwotKwkJUkM1XzMyX2NiY19lbmNyeXB0OwotKwkJUkM1XzMyX2NmYjY0X2VuY3J5cHQ7Ci0rCQlSQzVfMzJfb2ZiNjRfZW5jcnlwdDsKLSsJCUJOX2JuMm1waTsKLSsJCUJOX21waTJibjsKLSsJCUFTTjFfQklUX1NUUklOR19nZXRfYml0OwotKwkJQVNOMV9CSVRfU1RSSU5HX3NldF9iaXQ7Ci0rCQlCSU9fZ2V0X2V4X2RhdGE7Ci0rCQlCSU9fZ2V0X2V4X25ld19pbmRleDsKLSsJCUJJT19zZXRfZXhfZGF0YTsKLSsJCVg1MDl2M19nZXRfa2V5X3VzYWdlOwotKwkJWDUwOXYzX3NldF9rZXlfdXNhZ2U7Ci0rCQlhMmlfWDUwOXYzX2tleV91c2FnZTsKLSsJCWkyYV9YNTA5djNfa2V5X3VzYWdlOwotKwkJRVZQX1BLRVlfZGVjcnlwdDsKLSsJCUVWUF9QS0VZX2VuY3J5cHQ7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX3NldDsKLSsJCVBLQ1M3X2FkZF9yZWNpcGllbnQ7Ci0rCQlQS0NTN19hZGRfcmVjaXBpZW50X2luZm87Ci0rCQlQS0NTN19zZXRfY2lwaGVyOwotKwkJQVNOMV9UWVBFX2dldF9pbnRfb2N0ZXRzdHJpbmc7Ci0rCQlBU04xX1RZUEVfZ2V0X29jdGV0c3RyaW5nOwotKwkJQVNOMV9UWVBFX3NldF9pbnRfb2N0ZXRzdHJpbmc7Ci0rCQlBU04xX1RZUEVfc2V0X29jdGV0c3RyaW5nOwotKwkJQVNOMV9VVENUSU1FX3NldF9zdHJpbmc7Ci0rCQlFUlJfYWRkX2Vycm9yX2RhdGE7Ci0rCQlFUlJfc2V0X2Vycm9yX2RhdGE7Ci0rCQlFVlBfQ0lQSEVSX2FzbjFfdG9fcGFyYW07Ci0rCQlFVlBfQ0lQSEVSX3BhcmFtX3RvX2FzbjE7Ci0rCQlFVlBfQ0lQSEVSX2dldF9hc24xX2l2OwotKwkJRVZQX0NJUEhFUl9zZXRfYXNuMV9pdjsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfY2JjOwotKwkJRVZQX3JjNV8zMl8xMl8xNl9jZmI2NDsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfZWNiOwotKwkJRVZQX3JjNV8zMl8xMl8xNl9vZmI7Ci0rCQlhc24xX2FkZF9lcnJvcjsKLSsJCWQyaV9BU04xX0JNUFNUUklORzsKLSsJCWkyZF9BU04xX0JNUFNUUklORzsKLSsJCUJJT19mX2JlcjsKLSsJCUJOX2luaXQ7Ci0rCQlDT01QX0NUWF9uZXc7Ci0rCQlDT01QX0NUWF9mcmVlOwotKwkJQ09NUF9DVFhfY29tcHJlc3NfYmxvY2s7Ci0rCQlDT01QX0NUWF9leHBhbmRfYmxvY2s7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfbmV3X2luZGV4OwotKwkJT0JKX05BTUVfYWRkOwotKwkJQklPX3NvY2tldF9uYmlvOwotKwkJRVZQX3JjMl82NF9jYmM7Ci0rCQlPQkpfTkFNRV9jbGVhbnVwOwotKwkJT0JKX05BTUVfZ2V0OwotKwkJT0JKX05BTUVfaW5pdDsKLSsJCU9CSl9OQU1FX25ld19pbmRleDsKLSsJCU9CSl9OQU1FX3JlbW92ZTsKLSsJCUJOX01PTlRfQ1RYX2NvcHk7Ci0rCQlCSU9fbmV3X3NvY2tzNGFfY29ubmVjdDsKLSsJCUJJT19zX3NvY2tzNGFfY29ubmVjdDsKLSsJCVBST1hZX3NldF9jb25uZWN0X21vZGU7Ci0rCQlSQU5EX1NTTGVheTsKLSsJCVJBTkRfc2V0X3JhbmRfbWV0aG9kOwotKwkJUlNBX21lbW9yeV9sb2NrOwotKwkJYm5fc3ViX3dvcmRzOwotKwkJYm5fbXVsX25vcm1hbDsKLSsJCWJuX211bF9jb21iYTg7Ci0rCQlibl9tdWxfY29tYmE0OwotKwkJYm5fc3FyX25vcm1hbDsKLSsJCWJuX3Nxcl9jb21iYTg7Ci0rCQlibl9zcXJfY29tYmE0OwotKwkJYm5fY21wX3dvcmRzOwotKwkJYm5fbXVsX3JlY3Vyc2l2ZTsKLSsJCWJuX211bF9wYXJ0X3JlY3Vyc2l2ZTsKLSsJCWJuX3Nxcl9yZWN1cnNpdmU7Ci0rCQlibl9tdWxfbG93X25vcm1hbDsKLSsJCUJOX1JFQ1BfQ1RYX2luaXQ7Ci0rCQlCTl9SRUNQX0NUWF9uZXc7Ci0rCQlCTl9SRUNQX0NUWF9mcmVlOwotKwkJQk5fUkVDUF9DVFhfc2V0OwotKwkJQk5fbW9kX211bF9yZWNpcHJvY2FsOwotKwkJQk5fbW9kX2V4cF9yZWNwOwotKwkJQk5fZGl2X3JlY3A7Ci0rCQlCTl9DVFhfaW5pdDsKLSsJCUJOX01PTlRfQ1RYX2luaXQ7Ci0rCQlSQU5EX2dldF9yYW5kX21ldGhvZDsKLSsJCVBLQ1M3X2FkZF9hdHRyaWJ1dGU7Ci0rCQlQS0NTN19hZGRfc2lnbmVkX2F0dHJpYnV0ZTsKLSsJCVBLQ1M3X2RpZ2VzdF9mcm9tX2F0dHJpYnV0ZXM7Ci0rCQlQS0NTN19nZXRfYXR0cmlidXRlOwotKwkJUEtDUzdfZ2V0X2lzc3Vlcl9hbmRfc2VyaWFsOwotKwkJUEtDUzdfZ2V0X3NpZ25lZF9hdHRyaWJ1dGU7Ci0rCQlDT01QX2NvbXByZXNzX2Jsb2NrOwotKwkJQ09NUF9leHBhbmRfYmxvY2s7Ci0rCQlDT01QX3JsZTsKLSsJCUNPTVBfemxpYjsKLSsJCW1zX3RpbWVfZGlmZjsKLSsJCW1zX3RpbWVfbmV3OwotKwkJbXNfdGltZV9mcmVlOwotKwkJbXNfdGltZV9jbXA7Ci0rCQltc190aW1lX2dldDsKLSsJCVBLQ1M3X3NldF9hdHRyaWJ1dGVzOwotKwkJUEtDUzdfc2V0X3NpZ25lZF9hdHRyaWJ1dGVzOwotKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlOwotKwkJWDUwOV9BVFRSSUJVVEVfZHVwOwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfY2hlY2s7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9wcmludDsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX3NldDsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX3NldF9zdHJpbmc7Ci0rCQlBU04xX1RJTUVfcHJpbnQ7Ci0rCQlCQVNJQ19DT05TVFJBSU5UU19mcmVlOwotKwkJQkFTSUNfQ09OU1RSQUlOVFNfbmV3OwotKwkJRVJSX2xvYWRfWDUwOVYzX3N0cmluZ3M7Ci0rCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX2ZyZWU7Ci0rCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX25ldzsKLSsJCU9CSl90eHQyb2JqOwotKwkJUEVNX3JlYWRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCVBFTV9yZWFkX05TX0NFUlRfU0VROwotKwkJUEVNX3JlYWRfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fcmVhZF9iaW9fTlNfQ0VSVF9TRVE7Ci0rCQlQRU1fd3JpdGVfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCVBFTV93cml0ZV9OU19DRVJUX1NFUTsKLSsJCVBFTV93cml0ZV9iaW9fTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCVBFTV93cml0ZV9iaW9fTlNfQ0VSVF9TRVE7Ci0rCQlYNTA5VjNfRVhUX2FkZDsKLSsJCVg1MDlWM19FWFRfYWRkX2FsaWFzOwotKwkJWDUwOVYzX0VYVF9hZGRfY29uZjsKLSsJCVg1MDlWM19FWFRfY2xlYW51cDsKLSsJCVg1MDlWM19FWFRfY29uZjsKLSsJCVg1MDlWM19FWFRfY29uZl9uaWQ7Ci0rCQlYNTA5VjNfRVhUX2dldDsKLSsJCVg1MDlWM19FWFRfZ2V0X25pZDsKLSsJCVg1MDlWM19FWFRfcHJpbnQ7Ci0rCQlYNTA5VjNfRVhUX3ByaW50X2ZwOwotKwkJWDUwOVYzX2FkZF9zdGFuZGFyZF9leHRlbnNpb25zOwotKwkJWDUwOVYzX2FkZF92YWx1ZTsKLSsJCVg1MDlWM19hZGRfdmFsdWVfYm9vbDsKLSsJCVg1MDlWM19hZGRfdmFsdWVfaW50OwotKwkJWDUwOVYzX2NvbmZfZnJlZTsKLSsJCVg1MDlWM19nZXRfdmFsdWVfYm9vbDsKLSsJCVg1MDlWM19nZXRfdmFsdWVfaW50OwotKwkJWDUwOVYzX3BhcnNlX2xpc3Q7Ci0rCQlkMmlfQVNOMV9HRU5FUkFMSVpFRFRJTUU7Ci0rCQlkMmlfQVNOMV9USU1FOwotKwkJZDJpX0JBU0lDX0NPTlNUUkFJTlRTOwotKwkJZDJpX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlkMmlfZXh0X2t1OwotKwkJZXh0X2t1X2ZyZWU7Ci0rCQlleHRfa3VfbmV3OwotKwkJaTJkX0FTTjFfR0VORVJBTElaRURUSU1FOwotKwkJaTJkX0FTTjFfVElNRTsKLSsJCWkyZF9CQVNJQ19DT05TVFJBSU5UUzsKLSsJCWkyZF9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJaTJkX2V4dF9rdTsKLSsJCUVWUF9NRF9DVFhfY29weTsKLSsJCWkyZF9BU04xX0VOVU1FUkFURUQ7Ci0rCQlkMmlfQVNOMV9FTlVNRVJBVEVEOwotKwkJQVNOMV9FTlVNRVJBVEVEX3NldDsKLSsJCUFTTjFfRU5VTUVSQVRFRF9nZXQ7Ci0rCQlCTl90b19BU04xX0VOVU1FUkFURUQ7Ci0rCQlBU04xX0VOVU1FUkFURURfdG9fQk47Ci0rCQlpMmFfQVNOMV9FTlVNRVJBVEVEOwotKwkJYTJpX0FTTjFfRU5VTUVSQVRFRDsKLSsJCWkyZF9HRU5FUkFMX05BTUU7Ci0rCQlkMmlfR0VORVJBTF9OQU1FOwotKwkJR0VORVJBTF9OQU1FX25ldzsKLSsJCUdFTkVSQUxfTkFNRV9mcmVlOwotKwkJR0VORVJBTF9OQU1FU19uZXc7Ci0rCQlHRU5FUkFMX05BTUVTX2ZyZWU7Ci0rCQlkMmlfR0VORVJBTF9OQU1FUzsKLSsJCWkyZF9HRU5FUkFMX05BTUVTOwotKwkJaTJ2X0dFTkVSQUxfTkFNRVM7Ci0rCQlpMnNfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlzMmlfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlYNTA5VjNfRVhUX2NoZWNrX2NvbmY7Ci0rCQloZXhfdG9fc3RyaW5nOwotKwkJc3RyaW5nX3RvX2hleDsKLSsJCURFU19lZGUzX2NiY21fZW5jcnlwdDsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FFUDsKLSsJCVg1MDlfQ1JMX3ByaW50X2ZwOwotKwkJWDUwOV9DUkxfcHJpbnQ7Ci0rCQlpMnZfR0VORVJBTF9OQU1FOwotKwkJdjJpX0dFTkVSQUxfTkFNRTsKLSsJCWkyZF9QS0VZX1VTQUdFX1BFUklPRDsKLSsJCWQyaV9QS0VZX1VTQUdFX1BFUklPRDsKLSsJCVBLRVlfVVNBR0VfUEVSSU9EX25ldzsKLSsJCVBLRVlfVVNBR0VfUEVSSU9EX2ZyZWU7Ci0rCQl2MmlfR0VORVJBTF9OQU1FUzsKLSsJCWkyc19BU04xX0lOVEVHRVI7Ci0rCQlYNTA5VjNfRVhUX2QyaTsKLSsJCW5hbWVfY21wOwotKwkJc3RyX2R1cDsKLSsJCWkyc19BU04xX0VOVU1FUkFURUQ7Ci0rCQlpMnNfQVNOMV9FTlVNRVJBVEVEX1RBQkxFOwotKwkJQklPX3NfbG9nOwotKwkJQklPX2ZfcmVsaWFibGU7Ci0rCQlQS0NTN19kYXRhRmluYWw7Ci0rCQlQS0NTN19kYXRhRGVjb2RlOwotKwkJWDUwOVYzX0VYVF9DUkxfYWRkX2NvbmY7Ci0rCQlCTl9zZXRfcGFyYW1zOwotKwkJQk5fZ2V0X3BhcmFtczsKLSsJCUJJT19nZXRfZXhfbnVtOwotKwkJQklPX3NldF9leF9mcmVlX2Z1bmM7Ci0rCQlFVlBfcmlwZW1kMTYwOwotKwkJQVNOMV9USU1FX3NldDsKLSsJCWkyZF9BVVRIT1JJVFlfS0VZSUQ7Ci0rCQlkMmlfQVVUSE9SSVRZX0tFWUlEOwotKwkJQVVUSE9SSVRZX0tFWUlEX25ldzsKLSsJCUFVVEhPUklUWV9LRVlJRF9mcmVlOwotKwkJQVNOMV9zZXFfdW5wYWNrOwotKwkJQVNOMV9zZXFfcGFjazsKLSsJCUFTTjFfdW5wYWNrX3N0cmluZzsKLSsJCUFTTjFfcGFja19zdHJpbmc7Ci0rCQlQS0NTMTJfcGFja19zYWZlYmFnOwotKwkJUEtDUzEyX01BS0VfS0VZQkFHOwotKwkJUEtDUzhfZW5jcnlwdDsKLSsJCVBLQ1MxMl9NQUtFX1NIS0VZQkFHOwotKwkJUEtDUzEyX3BhY2tfcDdkYXRhOwotKwkJUEtDUzEyX3BhY2tfcDdlbmNkYXRhOwotKwkJUEtDUzEyX2FkZF9sb2NhbGtleWlkOwotKwkJUEtDUzEyX2FkZF9mcmllbmRseW5hbWVfYXNjOwotKwkJUEtDUzEyX2FkZF9mcmllbmRseW5hbWVfdW5pOwotKwkJUEtDUzEyX2dldF9mcmllbmRseW5hbWU7Ci0rCQlQS0NTMTJfcGJlX2NyeXB0OwotKwkJUEtDUzEyX2RlY3J5cHRfZDJpOwotKwkJUEtDUzEyX2kyZF9lbmNyeXB0OwotKwkJUEtDUzEyX2luaXQ7Ci0rCQlQS0NTMTJfa2V5X2dlbl9hc2M7Ci0rCQlQS0NTMTJfa2V5X2dlbl91bmk7Ci0rCQlQS0NTMTJfZ2VuX21hYzsKLSsJCVBLQ1MxMl92ZXJpZnlfbWFjOwotKwkJUEtDUzEyX3NldF9tYWM7Ci0rCQlQS0NTMTJfc2V0dXBfbWFjOwotKwkJT1BFTlNTTF9hc2MydW5pOwotKwkJT1BFTlNTTF91bmkyYXNjOwotKwkJaTJkX1BLQ1MxMl9CQUdTOwotKwkJUEtDUzEyX0JBR1NfbmV3OwotKwkJZDJpX1BLQ1MxMl9CQUdTOwotKwkJUEtDUzEyX0JBR1NfZnJlZTsKLSsJCWkyZF9QS0NTMTI7Ci0rCQlkMmlfUEtDUzEyOwotKwkJUEtDUzEyX25ldzsKLSsJCVBLQ1MxMl9mcmVlOwotKwkJaTJkX1BLQ1MxMl9NQUNfREFUQTsKLSsJCVBLQ1MxMl9NQUNfREFUQV9uZXc7Ci0rCQlkMmlfUEtDUzEyX01BQ19EQVRBOwotKwkJUEtDUzEyX01BQ19EQVRBX2ZyZWU7Ci0rCQlpMmRfUEtDUzEyX1NBRkVCQUc7Ci0rCQlQS0NTMTJfU0FGRUJBR19uZXc7Ci0rCQlkMmlfUEtDUzEyX1NBRkVCQUc7Ci0rCQlQS0NTMTJfU0FGRUJBR19mcmVlOwotKwkJRVJSX2xvYWRfUEtDUzEyX3N0cmluZ3M7Ci0rCQlQS0NTMTJfUEJFX2FkZDsKLSsJCVBLQ1M4X2FkZF9rZXl1c2FnZTsKLSsJCVBLQ1MxMl9nZXRfYXR0cl9nZW47Ci0rCQlQS0NTMTJfcGFyc2U7Ci0rCQlQS0NTMTJfY3JlYXRlOwotKwkJaTJkX1BLQ1MxMl9iaW87Ci0rCQlpMmRfUEtDUzEyX2ZwOwotKwkJZDJpX1BLQ1MxMl9iaW87Ci0rCQlkMmlfUEtDUzEyX2ZwOwotKwkJaTJkX1BCRVBBUkFNOwotKwkJUEJFUEFSQU1fbmV3OwotKwkJZDJpX1BCRVBBUkFNOwotKwkJUEJFUEFSQU1fZnJlZTsKLSsJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEtDUzhfUFJJVl9LRVlfSU5GT19uZXc7Ci0rCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBLQ1M4X1BSSVZfS0VZX0lORk9fZnJlZTsKLSsJCUVWUF9QS0NTODJQS0VZOwotKwkJRVZQX1BLRVkyUEtDUzg7Ci0rCQlQS0NTOF9zZXRfYnJva2VuOwotKwkJRVZQX1BCRV9BTEdPUl9DaXBoZXJJbml0OwotKwkJRVZQX1BCRV9hbGdfYWRkOwotKwkJUEtDUzVfcGJlX3NldDsKLSsJCUVWUF9QQkVfY2xlYW51cDsKLSsJCWkyZF9TWE5FVDsKLSsJCWQyaV9TWE5FVDsKLSsJCVNYTkVUX25ldzsKLSsJCVNYTkVUX2ZyZWU7Ci0rCQlpMmRfU1hORVRJRDsKLSsJCWQyaV9TWE5FVElEOwotKwkJU1hORVRJRF9uZXc7Ci0rCQlTWE5FVElEX2ZyZWU7Ci0rCQlEU0FfU0lHX25ldzsKLSsJCURTQV9TSUdfZnJlZTsKLSsJCURTQV9kb19zaWduOwotKwkJRFNBX2RvX3ZlcmlmeTsKLSsJCWQyaV9EU0FfU0lHOwotKwkJaTJkX0RTQV9TSUc7Ci0rCQlpMmRfQVNOMV9WSVNJQkxFU1RSSU5HOwotKwkJZDJpX0FTTjFfVklTSUJMRVNUUklORzsKLSsJCWkyZF9BU04xX1VURjhTVFJJTkc7Ci0rCQlkMmlfQVNOMV9VVEY4U1RSSU5HOwotKwkJaTJkX0RJUkVDVE9SWVNUUklORzsKLSsJCWQyaV9ESVJFQ1RPUllTVFJJTkc7Ci0rCQlpMmRfRElTUExBWVRFWFQ7Ci0rCQlkMmlfRElTUExBWVRFWFQ7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOTsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5OwotKwkJaTJkX1BCS0RGMlBBUkFNOwotKwkJUEJLREYyUEFSQU1fbmV3OwotKwkJZDJpX1BCS0RGMlBBUkFNOwotKwkJUEJLREYyUEFSQU1fZnJlZTsKLSsJCWkyZF9QQkUyUEFSQU07Ci0rCQlQQkUyUEFSQU1fbmV3OwotKwkJZDJpX1BCRTJQQVJBTTsKLSsJCVBCRTJQQVJBTV9mcmVlOwotKwkJZDJpX0FTTjFfU0VUX09GX0dFTkVSQUxfTkFNRTsKLSsJCWkyZF9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfU1hORVRJRDsKLSsJCWkyZF9BU04xX1NFVF9PRl9TWE5FVElEOwotKwkJZDJpX0FTTjFfU0VUX09GX1BPTElDWVFVQUxJTkZPOwotKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWVFVQUxJTkZPOwotKwkJZDJpX0FTTjFfU0VUX09GX1BPTElDWUlORk87Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUE9MSUNZSU5GTzsKLSsJCVNYTkVUX2FkZF9pZF9hc2M7Ci0rCQlTWE5FVF9hZGRfaWRfdWxvbmc7Ci0rCQlTWE5FVF9hZGRfaWRfSU5URUdFUjsKLSsJCVNYTkVUX2dldF9pZF9hc2M7Ci0rCQlTWE5FVF9nZXRfaWRfdWxvbmc7Ci0rCQlTWE5FVF9nZXRfaWRfSU5URUdFUjsKLSsJCVg1MDlWM19zZXRfY29uZl9saGFzaDsKLSsJCWkyZF9DRVJUSUZJQ0FURVBPTElDSUVTOwotKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19uZXc7Ci0rCQlDRVJUSUZJQ0FURVBPTElDSUVTX2ZyZWU7Ci0rCQlkMmlfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKLSsJCWkyZF9QT0xJQ1lJTkZPOwotKwkJUE9MSUNZSU5GT19uZXc7Ci0rCQlkMmlfUE9MSUNZSU5GTzsKLSsJCVBPTElDWUlORk9fZnJlZTsKLSsJCWkyZF9QT0xJQ1lRVUFMSU5GTzsKLSsJCVBPTElDWVFVQUxJTkZPX25ldzsKLSsJCWQyaV9QT0xJQ1lRVUFMSU5GTzsKLSsJCVBPTElDWVFVQUxJTkZPX2ZyZWU7Ci0rCQlpMmRfVVNFUk5PVElDRTsKLSsJCVVTRVJOT1RJQ0VfbmV3OwotKwkJZDJpX1VTRVJOT1RJQ0U7Ci0rCQlVU0VSTk9USUNFX2ZyZWU7Ci0rCQlpMmRfTk9USUNFUkVGOwotKwkJTk9USUNFUkVGX25ldzsKLSsJCWQyaV9OT1RJQ0VSRUY7Ci0rCQlOT1RJQ0VSRUZfZnJlZTsKLSsJCVg1MDlWM19nZXRfc3RyaW5nOwotKwkJWDUwOVYzX2dldF9zZWN0aW9uOwotKwkJWDUwOVYzX3N0cmluZ19mcmVlOwotKwkJWDUwOVYzX3NlY3Rpb25fZnJlZTsKLSsJCVg1MDlWM19zZXRfY3R4OwotKwkJczJpX0FTTjFfSU5URUdFUjsKLSsJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX21hbGxvY19sb2NrZWQ7Ci0rCQlDUllQVE9fZnJlZV9sb2NrZWQ7Ci0rCQlCTl9tb2RfZXhwMl9tb250OwotKwkJRVJSX2dldF9lcnJvcl9saW5lX2RhdGE7Ci0rCQlFUlJfcGVla19lcnJvcl9saW5lX2RhdGE7Ci0rCQlQS0NTMTJfUEJFX2tleWl2Z2VuOwotKwkJWDUwOV9BTEdPUl9kdXA7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKLSsJCWkyZF9BU04xX1NFVF9PRl9ESVNUX1BPSU5UOwotKwkJaTJkX0NSTF9ESVNUX1BPSU5UUzsKLSsJCUNSTF9ESVNUX1BPSU5UU19uZXc7Ci0rCQlDUkxfRElTVF9QT0lOVFNfZnJlZTsKLSsJCWQyaV9DUkxfRElTVF9QT0lOVFM7Ci0rCQlpMmRfRElTVF9QT0lOVDsKLSsJCURJU1RfUE9JTlRfbmV3OwotKwkJZDJpX0RJU1RfUE9JTlQ7Ci0rCQlESVNUX1BPSU5UX2ZyZWU7Ci0rCQlpMmRfRElTVF9QT0lOVF9OQU1FOwotKwkJRElTVF9QT0lOVF9OQU1FX25ldzsKLSsJCURJU1RfUE9JTlRfTkFNRV9mcmVlOwotKwkJZDJpX0RJU1RfUE9JTlRfTkFNRTsKLSsJCVg1MDlWM19hZGRfdmFsdWVfdWNoYXI7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9BVFRSSUJVVEU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKLSsJCWQyaV9BU04xX1NFVF9PRl9BU04xX1RZUEU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BVFRSSUJVVEU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9FWFRFTlNJT047Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9OQU1FX0VOVFJZOwotKwkJWDUwOVYzX0VYVF9pMmQ7Ci0rCQlYNTA5VjNfRVhUX3ZhbF9wcm47Ci0rCQlYNTA5VjNfRVhUX2FkZF9saXN0OwotKwkJRVZQX0NJUEhFUl90eXBlOwotKwkJRVZQX1BCRV9DaXBoZXJJbml0OwotKwkJWDUwOVYzX2FkZF92YWx1ZV9ib29sX25mOwotKwkJZDJpX0FTTjFfVUlOVEVHRVI7Ci0rCQlza192YWx1ZTsKLSsJCXNrX251bTsKLSsJCXNrX3NldDsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7Ci0rCQlza19zb3J0OwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfUkVWT0tFRDsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0FMR09SOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQ1JMOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQUxHT1I7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9DUkw7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTN19TSUdORVJfSU5GTzsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTN19SRUNJUF9JTkZPOwotKwkJUEtDUzVfUEJFX2FkZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzg7Ci0rCQlpMmRfUEtDUzhfZnA7Ci0rCQlQRU1fcmVhZF9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX2Jpb19QOF9QUklWX0tFWV9JTkZPOwotKwkJZDJpX1BLQ1M4X2JpbzsKLSsJCWQyaV9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3dyaXRlX2Jpb19QOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3JlYWRfUEtDUzg7Ci0rCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19iaW87Ci0rCQlkMmlfUEtDUzhfZnA7Ci0rCQlQRU1fd3JpdGVfUEtDUzg7Ci0rCQlQRU1fcmVhZF9QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3JlYWRfUDhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX2Jpb19QS0NTODsKLSsJCVBFTV93cml0ZV9QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3dyaXRlX1A4X1BSSVZfS0VZX0lORk87Ci0rCQlQS0NTNV9QQkVfa2V5aXZnZW47Ci0rCQlpMmRfUEtDUzhfYmlvOwotKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fZnA7Ci0rCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GT19iaW87Ci0rCQlCSU9fc19iaW87Ci0rCQlQS0NTNV9wYmUyX3NldDsKLSsJCVBLQ1M1X1BCS0RGMl9ITUFDX1NIQTE7Ci0rCQlQS0NTNV92Ml9QQkVfa2V5aXZnZW47Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M4UHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9QS0NTOFByaXZhdGVLZXk7Ci0rCQlCSU9fY3RybF9nZXRfcmVhZF9yZXF1ZXN0OwotKwkJQklPX2N0cmxfcGVuZGluZzsKLSsJCUJJT19jdHJsX3dwZW5kaW5nOwotKwkJQklPX25ld19iaW9fcGFpcjsKLSsJCUJJT19jdHJsX2dldF93cml0ZV9ndWFyYW50ZWU7Ci0rCQlDUllQVE9fbnVtX2xvY2tzOwotKwkJQ09ORl9sb2FkX2JpbzsKLSsJCUNPTkZfbG9hZF9mcDsKLSsJCWkyZF9BU04xX1NFVF9PRl9BU04xX09CSkVDVDsKLSsJCWQyaV9BU04xX1NFVF9PRl9BU04xX09CSkVDVDsKLSsJCVBLQ1M3X3NpZ25hdHVyZVZlcmlmeTsKLSsJCVJTQV9zZXRfbWV0aG9kOwotKwkJUlNBX2dldF9tZXRob2Q7Ci0rCQlSU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUlNBX2NoZWNrX2tleTsKLSsJCU9CSl9vYmoydHh0OwotKwkJRFNBX2R1cF9ESDsKLSsJCVg1MDlfUkVRX2dldF9leHRlbnNpb25zOwotKwkJWDUwOV9SRVFfc2V0X2V4dGVuc2lvbl9uaWRzOwotKwkJQklPX253cml0ZTsKLSsJCVg1MDlfUkVRX2V4dGVuc2lvbl9uaWQ7Ci0rCQlCSU9fbnJlYWQ7Ci0rCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uX25pZHM7Ci0rCQlCSU9fbndyaXRlMDsKLSsJCVg1MDlfUkVRX2FkZF9leHRlbnNpb25zX25pZDsKLSsJCUJJT19ucmVhZDA7Ci0rCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uczsKLSsJCUJJT19uZXdfbWVtX2J1ZjsKLSsJCURIX3NldF9leF9kYXRhOwotKwkJREhfc2V0X21ldGhvZDsKLSsJCURTQV9PcGVuU1NMOwotKwkJREhfZ2V0X2V4X2RhdGE7Ci0rCQlESF9nZXRfZXhfbmV3X2luZGV4OwotKwkJRFNBX25ld19tZXRob2Q7Ci0rCQlESF9uZXdfbWV0aG9kOwotKwkJREhfT3BlblNTTDsKLSsJCURTQV9nZXRfZXhfbmV3X2luZGV4OwotKwkJREhfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNBX3NldF9leF9kYXRhOwotKwkJREhfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNBX2dldF9leF9kYXRhOwotKwkJWDUwOVYzX0VYVF9SRVFfYWRkX2NvbmY7Ci0rCQlORVRTQ0FQRV9TUEtJX3ByaW50OwotKwkJTkVUU0NBUEVfU1BLSV9zZXRfcHVia2V5OwotKwkJTkVUU0NBUEVfU1BLSV9iNjRfZW5jb2RlOwotKwkJTkVUU0NBUEVfU1BLSV9nZXRfcHVia2V5OwotKwkJTkVUU0NBUEVfU1BLSV9iNjRfZGVjb2RlOwotKwkJVVRGOF9wdXRjOwotKwkJVVRGOF9nZXRjOwotKwkJUlNBX251bGxfbWV0aG9kOwotKwkJQVNOMV90YWcyc3RyOwotKwkJQklPX2N0cmxfcmVzZXRfcmVhZF9yZXF1ZXN0OwotKwkJRElTUExBWVRFWFRfbmV3OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfZnJlZTsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2QyaTsKLSsJCVg1MDlfc2V0X2V4X2RhdGE7Ci0rCQlYNTA5X3JlamVjdF9zZXRfYml0X2FzYzsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfdHh0OwotKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9OSUQ7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0MDsKLSsJCVBFTV9yZWFkX1g1MDlfQVVYOwotKwkJZDJpX0FVVEhPUklUWV9JTkZPX0FDQ0VTUzsKLSsJCVBFTV93cml0ZV9QVUJLRVk7Ci0rCQlBQ0NFU1NfREVTQ1JJUFRJT05fbmV3OwotKwkJWDUwOV9DRVJUX0FVWF9mcmVlOwotKwkJZDJpX0FDQ0VTU19ERVNDUklQVElPTjsKLSsJCVg1MDlfdHJ1c3RfY2xlYXI7Ci0rCQlYNTA5X1RSVVNUX2FkZDsKLSsJCUFTTjFfVklTSUJMRVNUUklOR19uZXc7Ci0rCQlYNTA5X2FsaWFzX3NldDE7Ci0rCQlBU04xX1BSSU5UQUJMRVNUUklOR19mcmVlOwotKwkJRVZQX1BLRVlfZ2V0MV9EU0E7Ci0rCQlBU04xX0JNUFNUUklOR19uZXc7Ci0rCQlBU04xX21ic3RyaW5nX2NvcHk7Ci0rCQlBU04xX1VURjhTVFJJTkdfbmV3OwotKwkJRFNBX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCWkyZF9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlBU04xX1Q2MVNUUklOR19mcmVlOwotKwkJRFNBX3NldF9tZXRob2Q7Ci0rCQlYNTA5X2dldF9leF9kYXRhOwotKwkJQVNOMV9TVFJJTkdfdHlwZTsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfYnlfc25hbWU7Ci0rCQlBU04xX1RJTUVfZnJlZTsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX2NtcDsKLSsJCUFTTjFfQklUX1NUUklOR19uZXc7Ci0rCQlYNTA5X2dldF9leHRfZDJpOwotKwkJUEVNX3JlYWRfYmlvX1g1MDlfQVVYOwotKwkJQVNOMV9TVFJJTkdfc2V0X2RlZmF1bHRfbWFza19hc2M7Ci0rCQlBU04xX1NUUklOR19zZXRfZGVmX21hc2tfYXNjOwotKwkJUEVNX3dyaXRlX2Jpb19SU0FfUFVCS0VZOwotKwkJQVNOMV9JTlRFR0VSX2NtcDsKLSsJCWQyaV9SU0FfUFVCS0VZX2ZwOwotKwkJWDUwOV90cnVzdF9zZXRfYml0X2FzYzsKLSsJCVBFTV93cml0ZV9iaW9fRFNBX1BVQktFWTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2ZyZWU7Ci0rCQlFVlBfUEtFWV9zZXQxX0RTQTsKLSsJCWkyZF9EU0FfUFVCS0VZX2ZwOwotKwkJWDUwOV9sb2FkX2NlcnRfY3JsX2ZpbGU7Ci0rCQlBU04xX1RJTUVfbmV3OwotKwkJaTJkX1JTQV9QVUJLRVk7Ci0rCQlYNTA5X1NUT1JFX0NUWF9wdXJwb3NlX2luaGVyaXQ7Ci0rCQlQRU1fcmVhZF9SU0FfUFVCS0VZOwotKwkJZDJpX1g1MDlfQVVYOwotKwkJaTJkX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X0NFUlRfQVVYX3ByaW50OwotKwkJUEVNX3JlYWRfRFNBX1BVQktFWTsKLSsJCWkyZF9SU0FfUFVCS0VZX2JpbzsKLSsJCUFTTjFfQklUX1NUUklOR19udW1fYXNjOwotKwkJaTJkX1BVQktFWTsKLSsJCUFTTjFfVVRDVElNRV9mcmVlOwotKwkJRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfYnlfaWQ7Ci0rCQlBQ0NFU1NfREVTQ1JJUFRJT05fZnJlZTsKLSsJCVBFTV9yZWFkX2Jpb19QVUJLRVk7Ci0rCQlBU04xX1NUUklOR19zZXRfYnlfTklEOwotKwkJWDUwOV9QVVJQT1NFX2dldF9pZDsKLSsJCURJU1BMQVlURVhUX2ZyZWU7Ci0rCQlPVEhFUk5BTUVfbmV3OwotKwkJWDUwOV9DRVJUX0FVWF9uZXc7Ci0rCQlYNTA5X1RSVVNUX2NsZWFudXA7Ci0rCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X09CSjsKLSsJCVg1MDlfQ1JMX2dldF9leHRfZDJpOwotKwkJWDUwOV9QVVJQT1NFX2dldDBfbmFtZTsKLSsJCVBFTV9yZWFkX1BVQktFWTsKLSsJCWkyZF9EU0FfUFVCS0VZX2JpbzsKLSsJCWkyZF9PVEhFUk5BTUU7Ci0rCQlBU04xX09DVEVUX1NUUklOR19mcmVlOwotKwkJQVNOMV9CSVRfU1RSSU5HX3NldF9hc2M7Ci0rCQlYNTA5X2dldF9leF9uZXdfaW5kZXg7Ci0rCQlBU04xX1NUUklOR19UQUJMRV9jbGVhbnVwOwotKwkJWDUwOV9UUlVTVF9nZXRfYnlfaWQ7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X3RydXN0OwotKwkJQVNOMV9TVFJJTkdfbGVuZ3RoOwotKwkJZDJpX0FTTjFfU0VUX09GX0FDQ0VTU19ERVNDUklQVElPTjsKLSsJCUFTTjFfUFJJTlRBQkxFU1RSSU5HX25ldzsKLSsJCVg1MDlWM19nZXRfZDJpOwotKwkJQVNOMV9FTlVNRVJBVEVEX2ZyZWU7Ci0rCQlpMmRfWDUwOV9DRVJUX0FVWDsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF90cnVzdDsKLSsJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2s7Ci0rCQlYNTA5X1NUT1JFX0NUWF9uZXc7Ci0rCQlFVlBfUEtFWV9nZXQxX1JTQTsKLSsJCURJUkVDVE9SWVNUUklOR19mcmVlOwotKwkJUEVNX3dyaXRlX1g1MDlfQVVYOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfc2V0OwotKwkJZDJpX0RTQV9QVUJLRVlfZnA7Ci0rCQlkMmlfUlNBX1BVQktFWTsKLSsJCVg1MDlfVFJVU1RfZ2V0MF9uYW1lOwotKwkJWDUwOV9UUlVTVF9nZXQwOwotKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2ZyZWU7Ci0rCQlBU04xX0lBNVNUUklOR19uZXc7Ci0rCQlkMmlfRFNBX1BVQktFWTsKLSsJCVg1MDlfY2hlY2tfcHVycG9zZTsKLSsJCUFTTjFfRU5VTUVSQVRFRF9uZXc7Ci0rCQlkMmlfUlNBX1BVQktFWV9iaW87Ci0rCQlkMmlfUFVCS0VZOwotKwkJWDUwOV9UUlVTVF9nZXRfdHJ1c3Q7Ci0rCQlYNTA5X1RSVVNUX2dldF9mbGFnczsKLSsJCUFTTjFfQk1QU1RSSU5HX2ZyZWU7Ci0rCQlBU04xX1Q2MVNUUklOR19uZXc7Ci0rCQlBU04xX1VUQ1RJTUVfbmV3OwotKwkJaTJkX0FVVEhPUklUWV9JTkZPX0FDQ0VTUzsKLSsJCUVWUF9QS0VZX3NldDFfUlNBOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3B1cnBvc2U7Ci0rCQlBU04xX0lBNVNUUklOR19mcmVlOwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0FVWDsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfY291bnQ7Ci0rCQlDUllQVE9fYWRkX2luZm87Ci0rCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X3R4dDsKLSsJCUFTTjFfU1RSSU5HX2dldF9kZWZhdWx0X21hc2s7Ci0rCQlYNTA5X2FsaWFzX2dldDA7Ci0rCQlBU04xX1NUUklOR19kYXRhOwotKwkJaTJkX0FDQ0VTU19ERVNDUklQVElPTjsKLSsJCVg1MDlfdHJ1c3Rfc2V0X2JpdDsKLSsJCUFTTjFfQklUX1NUUklOR19mcmVlOwotKwkJUEVNX3JlYWRfYmlvX1JTQV9QVUJLRVk7Ci0rCQlYNTA5X2FkZDFfcmVqZWN0X29iamVjdDsKLSsJCVg1MDlfY2hlY2tfdHJ1c3Q7Ci0rCQlQRU1fcmVhZF9iaW9fRFNBX1BVQktFWTsKLSsJCVg1MDlfUFVSUE9TRV9hZGQ7Ci0rCQlBU04xX1NUUklOR19UQUJMRV9nZXQ7Ci0rCQlBU04xX1VURjhTVFJJTkdfZnJlZTsKLSsJCWQyaV9EU0FfUFVCS0VZX2JpbzsKLSsJCVBFTV93cml0ZV9SU0FfUFVCS0VZOwotKwkJZDJpX09USEVSTkFNRTsKLSsJCVg1MDlfcmVqZWN0X3NldF9iaXQ7Ci0rCQlQRU1fd3JpdGVfRFNBX1BVQktFWTsKLSsJCVg1MDlfUFVSUE9TRV9nZXQwX3NuYW1lOwotKwkJRVZQX1BLRVlfc2V0MV9ESDsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX2R1cDsKLSsJCUFTTjFfQklUX1NUUklOR19zZXQ7Ci0rCQlYNTA5X1RSVVNUX2dldF9jb3VudDsKLSsJCUFTTjFfSU5URUdFUl9mcmVlOwotKwkJT1RIRVJOQU1FX2ZyZWU7Ci0rCQlpMmRfUlNBX1BVQktFWV9mcDsKLSsJCUFTTjFfSU5URUdFUl9kdXA7Ci0rCQlkMmlfWDUwOV9DRVJUX0FVWDsKLSsJCVBFTV93cml0ZV9iaW9fUFVCS0VZOwotKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2ZyZWU7Ci0rCQlYNTA5X1BVUlBPU0VfY2xlYW51cDsKLSsJCUFTTjFfbWJzdHJpbmdfbmNvcHk7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9uZXc7Ci0rCQlFVlBfUEtFWV9nZXQxX0RIOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfbmV3OwotKwkJQVNOMV9JTlRFR0VSX25ldzsKLSsJCWkyZF9YNTA5X0FVWDsKLSsJCUFTTjFfQklUX1NUUklOR19uYW1lX3ByaW50OwotKwkJWDUwOV9jbXA7Ci0rCQlBU04xX1NUUklOR19sZW5ndGhfc2V0OwotKwkJRElSRUNUT1JZU1RSSU5HX25ldzsKLSsJCVg1MDlfYWRkMV90cnVzdF9vYmplY3Q7Ci0rCQlQS0NTMTJfbmV3cGFzczsKLSsJCVNNSU1FX3dyaXRlX1BLQ1M3OwotKwkJU01JTUVfcmVhZF9QS0NTNzsKLSsJCURFU19zZXRfa2V5X2NoZWNrZWQ7Ci0rCQlQS0NTN192ZXJpZnk7Ci0rCQlQS0NTN19lbmNyeXB0OwotKwkJREVTX3NldF9rZXlfdW5jaGVja2VkOwotKwkJU01JTUVfY3JsZl9jb3B5OwotKwkJaTJkX0FTTjFfUFJJTlRBQkxFU1RSSU5HOwotKwkJUEtDUzdfZ2V0MF9zaWduZXJzOwotKwkJUEtDUzdfZGVjcnlwdDsKLSsJCVNNSU1FX3RleHQ7Ci0rCQlQS0NTN19zaW1wbGVfc21pbWVjYXA7Ci0rCQlQS0NTN19nZXRfc21pbWVjYXA7Ci0rCQlQS0NTN19zaWduOwotKwkJUEtDUzdfYWRkX2F0dHJpYl9zbWltZWNhcDsKLSsJCUNSWVBUT19kYmdfc2V0X29wdGlvbnM7Ci0rCQlDUllQVE9fcmVtb3ZlX2FsbF9pbmZvOwotKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2lzX21lbV9jaGVja19vbjsKLSsJCUNSWVBUT19zZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19wb3BfaW5mbzsKLSsJCUNSWVBUT19wdXNoX2luZm9fOwotKwkJQ1JZUFRPX3NldF9tZW1fZGVidWdfb3B0aW9uczsKLSsJCVBFTV93cml0ZV9QS0NTOFByaXZhdGVLZXlfbmlkOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXlfbmlkOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZLZXlfbmlkOwotKwkJZDJpX1BLQ1M4UHJpdmF0ZUtleV9iaW87Ci0rCQlBU04xX05VTExfZnJlZTsKLSsJCWQyaV9BU04xX05VTEw7Ci0rCQlBU04xX05VTExfbmV3OwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X2ZwOwotKwkJaTJkX0FTTjFfTlVMTDsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlfbmlkX2ZwOwotKwkJZDJpX1BLQ1M4UHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlfbmlkX2JpbzsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2ZwOwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleUluZm9fYmlvOwotKwkJUEVNX2NiOwotKwkJaTJkX1ByaXZhdGVLZXlfZnA7Ci0rCQlkMmlfUHJpdmF0ZUtleV9iaW87Ci0rCQlkMmlfUHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9Qcml2YXRlS2V5X2JpbzsKLSsJCVg1MDlfcmVqZWN0X2NsZWFyOwotKwkJWDUwOV9UUlVTVF9zZXRfZGVmYXVsdDsKLSsJCWQyaV9BdXRvUHJpdmF0ZUtleTsKLSsJCVg1MDlfQVRUUklCVVRFX2dldDBfdHlwZTsKLSsJCVg1MDlfQVRUUklCVVRFX3NldDFfZGF0YTsKLSsJCVg1MDlhdF9nZXRfYXR0cjsKLSsJCVg1MDlhdF9nZXRfYXR0cl9jb3VudDsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9OSUQ7Ci0rCQlYNTA5X0FUVFJJQlVURV9zZXQxX29iamVjdDsKLSsJCVg1MDlfQVRUUklCVVRFX2NvdW50OwotKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X09CSjsKLSsJCVg1MDlfQVRUUklCVVRFX2dldDBfb2JqZWN0OwotKwkJWDUwOWF0X2dldF9hdHRyX2J5X05JRDsKLSsJCVg1MDlhdF9hZGQxX2F0dHI7Ci0rCQlYNTA5X0FUVFJJQlVURV9nZXQwX2RhdGE7Ci0rCQlYNTA5YXRfZGVsZXRlX2F0dHI7Ci0rCQlYNTA5YXRfZ2V0X2F0dHJfYnlfT0JKOwotKwkJUkFORF9hZGQ7Ci0rCQlCSU9fbnVtYmVyX3dyaXR0ZW47Ci0rCQlCSU9fbnVtYmVyX3JlYWQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQxX2NoYWluOwotKwkJRVJSX2xvYWRfUkFORF9zdHJpbmdzOwotKwkJUkFORF9wc2V1ZG9fYnl0ZXM7Ci0rCQlYNTA5X1JFUV9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5X1JFUV9nZXRfYXR0cjsKLSsJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5X1JFUV9nZXRfYXR0cl9ieV9PQko7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyX2J5X05JRDsKLSsJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1JFUV9nZXRfYXR0cl9jb3VudDsKLSsJCVg1MDlfUkVRX2FkZDFfYXR0cjsKLSsJCVg1MDlfUkVRX2RlbGV0ZV9hdHRyOwotKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfdHh0OwotKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X3R4dDsKLSsJCVg1MDlhdF9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQk5fcHNldWRvX3JhbmQ7Ci0rCQlCTl9pc19wcmltZV9mYXN0dGVzdDsKLSsJCUJOX0NUWF9lbmQ7Ci0rCQlCTl9DVFhfc3RhcnQ7Ci0rCQlCTl9DVFhfZ2V0OwotKwkJRVZQX1BLRVkyUEtDUzhfYnJva2VuOwotKwkJQVNOMV9TVFJJTkdfVEFCTEVfYWRkOwotKwkJQ1JZUFRPX2RiZ19nZXRfb3B0aW9uczsKLSsJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19uZXc7Ci0rCQlDUllQVE9fZ2V0X21lbV9kZWJ1Z19vcHRpb25zOwotKwkJREVTX2NyeXB0OwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X1JFUV9ORVc7Ci0rCQlQRU1fd3JpdGVfWDUwOV9SRVFfTkVXOwotKwkJQklPX2NhbGxiYWNrX2N0cmw7Ci0rCQlSQU5EX2VnZDsKLSsJCVJBTkRfc3RhdHVzOwotKwkJYm5fZHVtcDE7Ci0rCQlERVNfY2hlY2tfa2V5X3Bhcml0eTsKLSsJCWxoX251bV9pdGVtczsKLSsJCVJBTkRfZXZlbnQ7Ci0rCQlEU09fbmV3OwotKwkJRFNPX25ld19tZXRob2Q7Ci0rCQlEU09fZnJlZTsKLSsJCURTT19mbGFnczsKLSsJCURTT191cDsKLSsJCURTT19zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlEU09fZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNPX2dldF9tZXRob2Q7Ci0rCQlEU09fc2V0X21ldGhvZDsKLSsJCURTT19sb2FkOwotKwkJRFNPX2JpbmRfdmFyOwotKwkJRFNPX01FVEhPRF9udWxsOwotKwkJRFNPX01FVEhPRF9vcGVuc3NsOwotKwkJRFNPX01FVEhPRF9kbGZjbjsKLSsJCURTT19NRVRIT0Rfd2luMzI7Ci0rCQlFUlJfbG9hZF9EU09fc3RyaW5nczsKLSsJCURTT19NRVRIT0RfZGw7Ci0rCQlOQ09ORl9sb2FkOwotKwkJTkNPTkZfbG9hZF9mcDsKLSsJCU5DT05GX25ldzsKLSsJCU5DT05GX2dldF9zdHJpbmc7Ci0rCQlOQ09ORl9mcmVlOwotKwkJTkNPTkZfZ2V0X251bWJlcjsKLSsJCUNPTkZfZHVtcF9mcDsKLSsJCU5DT05GX2xvYWRfYmlvOwotKwkJTkNPTkZfZHVtcF9mcDsKLSsJCU5DT05GX2dldF9zZWN0aW9uOwotKwkJTkNPTkZfZHVtcF9iaW87Ci0rCQlDT05GX2R1bXBfYmlvOwotKwkJTkNPTkZfZnJlZV9kYXRhOwotKwkJQ09ORl9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlFUlJfZXJyb3Jfc3RyaW5nX247Ci0rCQlCSU9fc25wcmludGY7Ci0rCQlEU09fY3RybDsKLSsJCWkyZF9BU04xX1NFVF9PRl9BU04xX0lOVEVHRVI7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzEyX1NBRkVCQUc7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzc7Ci0rCQlCSU9fdmZyZWU7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOwotKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOwotKwkJQVNOMV9VVENUSU1FX2dldDsKLSsJCVg1MDlfUkVRX2RpZ2VzdDsKLSsJCVg1MDlfQ1JMX2RpZ2VzdDsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTNzsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVuZ3RoOwotKwkJRVZQX0NJUEhFUl9DVFhfY3RybDsKLSsJCUJOX21vZF9leHBfbW9udF93b3JkOwotKwkJUkFORF9lZ2RfYnl0ZXM7Ci0rCQlYNTA5X1JFUV9nZXQxX2VtYWlsOwotKwkJWDUwOV9nZXQxX2VtYWlsOwotKwkJWDUwOV9lbWFpbF9mcmVlOwotKwkJaTJkX1JTQV9ORVQ7Ci0rCQlkMmlfUlNBX05FVF8yOwotKwkJZDJpX1JTQV9ORVQ7Ci0rCQlEU09fYmluZF9mdW5jOwotKwkJQ1JZUFRPX2dldF9uZXdfZHlubG9ja2lkOwotKwkJc2tfbmV3X251bGw7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19kZXN0cm95X2NiOwotKwkJQ1JZUFRPX2Rlc3Ryb3lfZHlubG9ja2lkOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX3NpemU7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYjsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2xvY2tfY2I7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19sb2NrX2NiOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKLSsJCUNSWVBUT19nZXRfZHlubG9ja192YWx1ZTsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19jcmVhdGVfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NiOwotKwkJYzJpX0FTTjFfQklUX1NUUklORzsKLSsJCWkyY19BU04xX0JJVF9TVFJJTkc7Ci0rCQlSQU5EX3BvbGw7Ci0rCQljMmlfQVNOMV9JTlRFR0VSOwotKwkJaTJjX0FTTjFfSU5URUdFUjsKLSsJCUJJT19kdW1wX2luZGVudDsKLSsJCUFTTjFfcGFyc2VfZHVtcDsKLSsJCWMyaV9BU04xX09CSkVDVDsKLSsJCVg1MDlfTkFNRV9wcmludF9leF9mcDsKLSsJCUFTTjFfU1RSSU5HX3ByaW50X2V4X2ZwOwotKwkJWDUwOV9OQU1FX3ByaW50X2V4OwotKwkJQVNOMV9TVFJJTkdfcHJpbnRfZXg7Ci0rCQlNRDQ7Ci0rCQlNRDRfVHJhbnNmb3JtOwotKwkJTUQ0X0ZpbmFsOwotKwkJTUQ0X1VwZGF0ZTsKLSsJCU1ENF9Jbml0OwotKwkJRVZQX21kNDsKLSsJCWkyZF9QVUJLRVlfYmlvOwotKwkJaTJkX1BVQktFWV9mcDsKLSsJCWQyaV9QVUJLRVlfYmlvOwotKwkJQVNOMV9TVFJJTkdfdG9fVVRGODsKLSsJCUJJT192cHJpbnRmOwotKwkJQklPX3ZzbnByaW50ZjsKLSsJCWQyaV9QVUJLRVlfZnA7Ci0rCQlYNTA5X2NtcF90aW1lOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3RpbWU7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQxX2lzc3VlcjsKLSsJCVg1MDlfT0JKRUNUX3JldHJpZXZlX21hdGNoOwotKwkJWDUwOV9PQkpFQ1RfaWR4X2J5X3N1YmplY3Q7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZmxhZ3M7Ci0rCQlYNTA5X1NUT1JFX0NUWF90cnVzdGVkX3N0YWNrOwotKwkJWDUwOV90aW1lX2FkajsKLSsJCVg1MDlfY2hlY2tfaXNzdWVkOwotKwkJQVNOMV9VVENUSU1FX2NtcF90aW1lX3Q7Ci0rCQlERVNfc2V0X3dlYWtfa2V5X2ZsYWc7Ci0rCQlERVNfY2hlY2tfa2V5OwotKwkJREVTX3J3X21vZGU7Ci0rCQlSU0FfUEtDUzFfUlNBcmVmOwotKwkJWDUwOV9rZXlpZF9zZXQxOwotKwkJQklPX25leHQ7Ci0rCQlEU09fTUVUSE9EX3ZtczsKLSsJCUJJT19mX2xpbmVidWZmZXI7Ci0rCQlCTl9ibnRlc3RfcmFuZDsKLSsJCU9QRU5TU0xfaXNzZXR1Z2lkOwotKwkJQk5fcmFuZF9yYW5nZTsKLSsJCUVSUl9sb2FkX0VOR0lORV9zdHJpbmdzOwotKwkJRU5HSU5FX3NldF9EU0E7Ci0rCQlFTkdJTkVfZ2V0X2ZpbmlzaF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9SU0E7Ci0rCQlFTkdJTkVfZ2V0X0JOX21vZF9leHA7Ci0rCQlEU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfc2V0X0RIOwotKwkJRU5HSU5FX3NldF9kZWZfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfaW5pdDsKLSsJCURIX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJUlNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX2ZpbmlzaDsKLSsJCUVOR0lORV9sb2FkX3B1YmxpY19rZXk7Ci0rCQlFTkdJTkVfZ2V0X0RIOwotKwkJRU5HSU5FX2N0cmw7Ci0rCQlFTkdJTkVfZ2V0X2luaXRfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2luaXRfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfRFNBOwotKwkJRU5HSU5FX2dldF9uYW1lOwotKwkJRU5HSU5FX2dldF9sYXN0OwotKwkJRU5HSU5FX2dldF9wcmV2OwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RIOwotKwkJRU5HSU5FX2dldF9SU0E7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHQ7Ci0rCQlFTkdJTkVfZ2V0X1JBTkQ7Ci0rCQlFTkdJTkVfZ2V0X2ZpcnN0OwotKwkJRU5HSU5FX2J5X2lkOwotKwkJRU5HSU5FX3NldF9maW5pc2hfZnVuY3Rpb247Ci0rCQlFTkdJTkVfZ2V0X2RlZl9CTl9tb2RfZXhwX2NydDsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9CTl9tb2RfZXhwX2NydDsKLSsJCVJTQV9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCUVOR0lORV9zZXRfUlNBOwotKwkJRU5HSU5FX2xvYWRfcHJpdmF0ZV9rZXk7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfUkFORDsKLSsJCUVOR0lORV9zZXRfQk5fbW9kX2V4cDsKLSsJCUVOR0lORV9yZW1vdmU7Ci0rCQlFTkdJTkVfZnJlZTsKLSsJCUVOR0lORV9nZXRfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfZ2V0X25leHQ7Ci0rCQlFTkdJTkVfc2V0X25hbWU7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRFNBOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHA7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfUlNBOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X1JBTkQ7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cDsKLSsJCUVOR0lORV9zZXRfUkFORDsKLSsJCUVOR0lORV9zZXRfaWQ7Ci0rCQlFTkdJTkVfc2V0X0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RIOwotKwkJRU5HSU5FX25ldzsKLSsJCUVOR0lORV9nZXRfaWQ7Ci0rCQlEU0Ffc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfYWRkOwotKwkJREhfc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfZ2V0X0RTQTsKLSsJCUVOR0lORV9nZXRfY3RybF9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfY3RybF9mdW5jdGlvbjsKLSsJCUJOX3BzZXVkb19yYW5kX3JhbmdlOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3ZlcmlmeV9jYjsKLSsJCUVSUl9sb2FkX0NPTVBfc3RyaW5nczsKLSsJCVBLQ1MxMl9pdGVtX2RlY3J5cHRfZDJpOwotKwkJQVNOMV9VVEY4U1RSSU5HX2l0OwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfY2lwaGVyczsKLSsJCUVOR0lORV9nZXRfY2lwaGVyczsKLSsJCWQyaV9PQ1NQX0JBU0lDUkVTUDsKLSsJCUtSQjVfQ0hFQ0tTVU1faXQ7Ci0rCQlFQ19QT0lOVF9hZGQ7Ci0rCQlBU04xX2l0ZW1fZXhfaTJkOwotKwkJT0NTUF9DRVJUSURfaXQ7Ci0rCQlkMmlfT0NTUF9SRVNQQllURVM7Ci0rCQlYNTA5VjNfYWRkMV9pMmQ7Ci0rCQlQS0NTN19FTlZFTE9QRV9pdDsKLSsJCVVJX2FkZF9pbnB1dF9ib29sZWFuOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfUlNBOwotKwkJWDUwOVYzX0VYVF9uY29uZjsKLSsJCUFTTjFfR0VORVJBTFNUUklOR19mcmVlOwotKwkJZDJpX09DU1BfQ0VSVFNUQVRVUzsKLSsJCVg1MDlfUkVWT0tFRF9zZXRfc2VyaWFsTnVtYmVyOwotKwkJWDUwOV9wcmludF9leDsKLSsJCU9DU1BfT05FUkVRX2dldDFfZXh0X2QyaTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfUkFORDsKLSsJCUVOR0lORV9sb2FkX2R5bmFtaWM7Ci0rCQlQQktERjJQQVJBTV9pdDsKLSsJCUVYVEVOREVEX0tFWV9VU0FHRV9uZXc7Ci0rCQlFQ19HUk9VUF9jbGVhcl9mcmVlOwotKwkJT0NTUF9zZW5kcmVxX2JpbzsKLSsJCUFTTjFfaXRlbV9kaWdlc3Q7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9kZWxldGVfZXh0OwotKwkJT0NTUF9TSUdOQVRVUkVfaXQ7Ci0rCQlYNTA5X0NSTF9pdDsKLSsJCU9DU1BfQkFTSUNSRVNQX2FkZF9leHQ7Ci0rCQlLUkI1X0VOQ0tFWV9pdDsKLSsJCVVJX21ldGhvZF9zZXRfY2xvc2VyOwotKwkJWDUwOV9TVE9SRV9zZXRfcHVycG9zZTsKLSsJCWkyZF9BU04xX0dFTkVSQUxTVFJJTkc7Ci0rCQlPQ1NQX3Jlc3BvbnNlX3N0YXR1czsKLSsJCWkyZF9PQ1NQX1NFUlZJQ0VMT0M7Ci0rCQlFTkdJTkVfZ2V0X2RpZ2VzdF9lbmdpbmU7Ci0rCQlFQ19HUk9VUF9zZXRfY3VydmVfR0ZwOwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfT0JKOwotKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fa2V5OwotKwkJQVNOMV9UNjFTVFJJTkdfaXQ7Ci0rCQlFQ19HUk9VUF9tZXRob2Rfb2Y7Ci0rCQlpMmRfS1JCNV9BUFJFUTsKLSsJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDsKLSsJCUFTTjFfUFJJTlRBQkxFX25ldzsKLSsJCUhNQUNfSW5pdF9leDsKLSsJCWQyaV9LUkI1X0FVVEhFTlQ7Ci0rCQlPQ1NQX2FyY2hpdmVfY3V0b2ZmX25ldzsKLSsJCUVDX1BPSU5UX3NldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnA7Ci0rCQlFQ19QT0lOVF9zZXRfSnByb2pfY29vcmRzX0dGcDsKLSsJCV9vc3NsX29sZF9kZXNfaXNfd2Vha19rZXk7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X09CSjsKLSsJCUVDX1BPSU5UX29jdDJwb2ludDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2NvdW50OwotKwkJVUlfY3RybDsKLSsJCV9zaGFkb3dfREVTX3J3X21vZGU7Ci0rCQlhc24xX2RvX2FkYjsKLSsJCUFTTjFfdGVtcGxhdGVfaTJkOwotKwkJRU5HSU5FX3JlZ2lzdGVyX0RIOwotKwkJVUlfY29uc3RydWN0X3Byb21wdDsKLSsJCVg1MDlfU1RPUkVfc2V0X3RydXN0OwotKwkJVUlfZHVwX2lucHV0X3N0cmluZzsKLSsJCWQyaV9LUkI1X0FQUkVROwotKwkJRVZQX01EX0NUWF9jb3B5X2V4OwotKwkJT0NTUF9yZXF1ZXN0X2lzX3NpZ25lZDsKLSsJCWkyZF9PQ1NQX1JFUUlORk87Ci0rCQlLUkI1X0VOQ0tFWV9mcmVlOwotKwkJT0NTUF9yZXNwX2dldDA7Ci0rCQlHRU5FUkFMX05BTUVfaXQ7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9pdDsKLSsJCVg1MDlfU1RPUkVfc2V0X2ZsYWdzOwotKwkJRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfc2V0X2NvbXByX2Nvb3Jkc19HRnA7Ci0rCQlPQ1NQX3Jlc3BvbnNlX3N0YXR1c19zdHI7Ci0rCQlkMmlfT0NTUF9SRVZPS0VESU5GTzsKLSsJCU9DU1BfYmFzaWNfYWRkMV9jZXJ0OwotKwkJRVJSX2dldF9pbXBsZW1lbnRhdGlvbjsKLSsJCUVWUF9DaXBoZXJGaW5hbF9leDsKLSsJCU9DU1BfQ0VSVFNUQVRVU19uZXc7Ci0rCQlDUllQVE9fY2xlYW51cF9hbGxfZXhfZGF0YTsKLSsJCU9DU1BfcmVzcF9maW5kOwotKwkJQk5fbm5tb2Q7Ci0rCQlYNTA5X0NSTF9zb3J0OwotKwkJWDUwOV9SRVZPS0VEX3NldF9yZXZvY2F0aW9uRGF0ZTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9SQU5EOwotKwkJT0NTUF9TRVJWSUNFTE9DX25ldzsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZHNfR0ZwOwotKwkJX29zc2xfb2xkX2Rlc19vcHRpb25zOwotKwkJU1hORVRfaXQ7Ci0rCQlVSV9kdXBfaW5wdXRfYm9vbGVhbjsKLSsJCVBLQ1MxMl9hZGRfQ1NQTmFtZV9hc2M7Ci0rCQlFQ19QT0lOVF9pc19hdF9pbmZpbml0eTsKLSsJCUVOR0lORV9sb2FkX2NyeXB0b2RldjsKLSsJCURTT19jb252ZXJ0X2ZpbGVuYW1lOwotKwkJUE9MSUNZUVVBTElORk9faXQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfY2lwaGVyczsKLSsJCUJOX21vZF9sc2hpZnRfcXVpY2s7Ci0rCQlEU09fc2V0X2ZpbGVuYW1lOwotKwkJQVNOMV9pdGVtX2ZyZWU7Ci0rCQlLUkI1X1RLVEJPRFlfZnJlZTsKLSsJCUFVVEhPUklUWV9LRVlJRF9pdDsKLSsJCUtSQjVfQVBSRVFCT0RZX25ldzsKLSsJCVg1MDlWM19FWFRfUkVRX2FkZF9uY29uZjsKLSsJCUVOR0lORV9jdHJsX2NtZF9zdHJpbmc7Ci0rCQlpMmRfT0NTUF9SRVNQREFUQTsKLSsJCUVWUF9NRF9DVFhfaW5pdDsKLSsJCUVYVEVOREVEX0tFWV9VU0FHRV9mcmVlOwotKwkJUEtDUzdfQVRUUl9TSUdOX2l0OwotKwkJVUlfYWRkX2Vycm9yX3N0cmluZzsKLSsJCUtSQjVfQ0hFQ0tTVU1fZnJlZTsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0OwotKwkJRU5HSU5FX2xvYWRfdWJzZWM7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2RpZ2VzdHM7Ci0rCQlQS0VZX1VTQUdFX1BFUklPRF9pdDsKLSsJCVBLQ1MxMl91bnBhY2tfYXV0aHNhZmVzOwotKwkJQVNOMV9pdGVtX3VucGFjazsKLSsJCU5FVFNDQVBFX1NQS0FDX2l0OwotKwkJWDUwOV9SRVZPS0VEX2l0OwotKwkJQVNOMV9TVFJJTkdfZW5jb2RlOwotKwkJRVZQX2Flc18xMjhfZWNiOwotKwkJS1JCNV9BVVRIRU5UX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0OwotKwkJT0NTUF9jZXJ0X3N0YXR1c19zdHI7Ci0rCQlkMmlfT0NTUF9SRVFVRVNUOwotKwkJVUlfZHVwX2luZm9fc3RyaW5nOwotKwkJX29zc2xfb2xkX2Rlc194d2hpdGVfaW4yb3V0OwotKwkJUEtDUzEyX2l0OwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9jcml0OwotKwkJT0NTUF9DRVJUU1RBVFVTX2ZyZWU7Ci0rCQlfb3NzbF9vbGRfZGVzX2NyeXB0OwotKwkJQVNOMV9pdGVtX2kyZDsKLSsJCUVWUF9EZWNyeXB0RmluYWxfZXg7Ci0rCQlFTkdJTkVfbG9hZF9vcGVuc3NsOwotKwkJRU5HSU5FX2dldF9jbWRfZGVmbnM7Ci0rCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfbG9hZF9wcml2a2V5X2ZuOwotKwkJRVZQX0VuY3J5cHRGaW5hbF9leDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9kaWdlc3RzOwotKwkJWDUwOV9nZXQwX3B1YmtleV9iaXRzdHI7Ci0rCQlhc24xX2V4X2kyYzsKLSsJCUVOR0lORV9yZWdpc3Rlcl9SU0E7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9EU0E7Ci0rCQlfb3NzbF9vbGRfZGVzX2tleV9zY2hlZDsKLSsJCVg1MDlfRVhURU5TSU9OX2l0OwotKwkJaTJkX0tSQjVfQVVUSEVOVDsKLSsJCVNYTkVUSURfaXQ7Ci0rCQlkMmlfT0NTUF9TSU5HTEVSRVNQOwotKwkJRURJUEFSVFlOQU1FX25ldzsKLSsJCVBLQ1MxMl9jZXJ0YmFnMng1MDk7Ci0rCQlfb3NzbF9vbGRfZGVzX29mYjY0X2VuY3J5cHQ7Ci0rCQlkMmlfRVhURU5ERURfS0VZX1VTQUdFOwotKwkJRVJSX3ByaW50X2Vycm9yc19jYjsKLSsJCUVOR0lORV9zZXRfY2lwaGVyczsKLSsJCWQyaV9LUkI1X0FQUkVRQk9EWTsKLSsJCVVJX21ldGhvZF9nZXRfZmx1c2hlcjsKLSsJCVg1MDlfUFVCS0VZX2l0OwotKwkJX29zc2xfb2xkX2Rlc19lbmNfcmVhZDsKLSsJCVBLQ1M3X0VOQ1JZUFRfaXQ7Ci0rCQlpMmRfT0NTUF9SRVNQT05TRTsKLSsJCUVDX0dST1VQX2dldF9jb2ZhY3RvcjsKLSsJCVBLQ1MxMl91bnBhY2tfcDdkYXRhOwotKwkJZDJpX0tSQjVfQVVUSERBVEE7Ci0rCQlPQ1NQX2NvcHlfbm9uY2U7Ci0rCQlLUkI1X0FVVEhEQVRBX25ldzsKLSsJCU9DU1BfUkVTUERBVEFfbmV3OwotKwkJRUNfR0ZwX21vbnRfbWV0aG9kOwotKwkJT0NTUF9SRVZPS0VESU5GT19mcmVlOwotKwkJVUlfZ2V0X2V4X2RhdGE7Ci0rCQlLUkI1X0FQUkVRQk9EWV9mcmVlOwotKwkJRUNfR1JPVVBfZ2V0MF9nZW5lcmF0b3I7Ci0rCQlVSV9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlYNTA5VjNfc2V0X25jb25mOwotKwkJUEtDUzEyX2l0ZW1faTJkX2VuY3J5cHQ7Ci0rCQlYNTA5X2FkZDFfZXh0X2kyZDsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX2l0OwotKwkJS1JCNV9QUklOQ05BTUVfbmV3OwotKwkJUEtDUzEyX1NBRkVCQUdfaXQ7Ci0rCQlFQ19HUk9VUF9nZXRfb3JkZXI7Ci0rCQlkMmlfT0NTUF9SRVNQSUQ7Ci0rCQlPQ1NQX3JlcXVlc3RfdmVyaWZ5OwotKwkJTkNPTkZfZ2V0X251bWJlcl9lOwotKwkJX29zc2xfb2xkX2Rlc19kZWNyeXB0MzsKLSsJCVg1MDlfc2lnbmF0dXJlX3ByaW50OwotKwkJT0NTUF9TSU5HTEVSRVNQX2ZyZWU7Ci0rCQlFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXM7Ci0rCQlpMmRfT0NTUF9PTkVSRVE7Ci0rCQlPQ1NQX1JFUVVFU1RfYWRkX2V4dDsKLSsJCU9DU1BfUkVTUEJZVEVTX25ldzsKLSsJCUVWUF9NRF9DVFhfY3JlYXRlOwotKwkJT0NTUF9yZXNwX2ZpbmRfc3RhdHVzOwotKwkJWDUwOV9BTEdPUl9pdDsKLSsJCUFTTjFfVElNRV9pdDsKLSsJCU9DU1BfcmVxdWVzdF9zZXQxX25hbWU7Ci0rCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2NvdW50OwotKwkJVUlfZ2V0MF9yZXN1bHQ7Ci0rCQlQS0NTMTJfQVVUSFNBRkVTX2l0OwotKwkJRVZQX2Flc18yNTZfZWNiOwotKwkJUEtDUzEyX3BhY2tfYXV0aHNhZmVzOwotKwkJQVNOMV9JQTVTVFJJTkdfaXQ7Ci0rCQlVSV9nZXRfaW5wdXRfZmxhZ3M7Ci0rCQlFQ19HUk9VUF9zZXRfZ2VuZXJhdG9yOwotKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fMmtleXM7Ci0rCQlPQ1NQX0NFUlRJRF9mcmVlOwotKwkJWDUwOV9DRVJUX0FVWF9pdDsKLSsJCUNFUlRJRklDQVRFUE9MSUNJRVNfaXQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2VkZTNfY2JjX2VuY3J5cHQ7Ci0rCQlSQU5EX3NldF9yYW5kX2VuZ2luZTsKLSsJCURTT19nZXRfbG9hZGVkX2ZpbGVuYW1lOwotKwkJWDUwOV9BVFRSSUJVVEVfaXQ7Ci0rCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2J5X05JRDsKLSsJCVBLQ1MxMl9kZWNyeXB0X3NrZXk7Ci0rCQlLUkI1X0FVVEhFTlRfaXQ7Ci0rCQlVSV9kdXBfZXJyb3Jfc3RyaW5nOwotKwkJUlNBUHVibGljS2V5X2l0OwotKwkJaTJkX09DU1BfUkVRVUVTVDsKLSsJCVBLQ1MxMl94NTA5Y3JsMmNlcnRiYWc7Ci0rCQlPQ1NQX1NFUlZJQ0VMT0NfaXQ7Ci0rCQlBU04xX2l0ZW1fc2lnbjsKLSsJCVg1MDlfQ1JMX3NldF9pc3N1ZXJfbmFtZTsKLSsJCU9CSl9OQU1FX2RvX2FsbF9zb3J0ZWQ7Ci0rCQlpMmRfT0NTUF9CQVNJQ1JFU1A7Ci0rCQlpMmRfT0NTUF9SRVNQQllURVM7Ci0rCQlQS0NTMTJfdW5wYWNrX3A3ZW5jZGF0YTsKLSsJCUhNQUNfQ1RYX2luaXQ7Ci0rCQlFTkdJTkVfZ2V0X2RpZ2VzdDsKLSsJCU9DU1BfUkVTUE9OU0VfcHJpbnQ7Ci0rCQlLUkI1X1RLVEJPRFlfaXQ7Ci0rCQlBQ0NFU1NfREVTQ1JJUFRJT05faXQ7Ci0rCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9pdDsKLSsJCVBCRTJQQVJBTV9pdDsKLSsJCVBLQ1MxMl9jZXJ0YmFnMng1MDljcmw7Ci0rCQlQS0NTN19TSUdORURfaXQ7Ci0rCQlFTkdJTkVfZ2V0X2NpcGhlcjsKLSsJCWkyZF9PQ1NQX0NSTElEOwotKwkJT0NTUF9TSU5HTEVSRVNQX25ldzsKLSsJCUVOR0lORV9jbWRfaXNfZXhlY3V0YWJsZTsKLSsJCVJTQV91cF9yZWY7Ci0rCQlBU04xX0dFTkVSQUxTVFJJTkdfaXQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfRFNBOwotKwkJWDUwOVYzX0VYVF9hZGRfbmNvbmZfc2s7Ci0rCQlFTkdJTkVfc2V0X2xvYWRfcHVia2V5X2Z1bmN0aW9uOwotKwkJUEtDUzhfZGVjcnlwdDsKLSsJCVBFTV9ieXRlc19yZWFkX2JpbzsKLSsJCURJUkVDVE9SWVNUUklOR19pdDsKLSsJCWQyaV9PQ1NQX0NSTElEOwotKwkJRUNfUE9JTlRfaXNfb25fY3VydmU7Ci0rCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOwotKwkJZDJpX0tSQjVfQ0hFQ0tTVU07Ci0rCQlBU04xX2l0ZW1fZHVwOwotKwkJWDUwOV9pdDsKLSsJCUJOX21vZF9hZGQ7Ci0rCQlLUkI1X0FVVEhEQVRBX2ZyZWU7Ci0rCQlfb3NzbF9vbGRfZGVzX2NiY19ja3N1bTsKLSsJCUFTTjFfaXRlbV92ZXJpZnk7Ci0rCQlDUllQVE9fc2V0X21lbV9leF9mdW5jdGlvbnM7Ci0rCQlFQ19QT0lOVF9nZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfZ2V0X0pwcm9qX2Nvb3Jkc19HRnA7Ci0rCQlaTE9OR19pdDsKLSsJCUNSWVBUT19nZXRfbG9ja2VkX21lbV9leF9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3M7Ci0rCQlBU04xX1RJTUVfY2hlY2s7Ci0rCQlVSV9nZXQwX3VzZXJfZGF0YTsKLSsJCUhNQUNfQ1RYX2NsZWFudXA7Ci0rCQlEU0FfdXBfcmVmOwotKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7Ci0rCQlfb3NzbF9vZGVzX2VkZTNfY2ZiNjRfZW5jcnlwdDsKLSsJCUFTTjFfQk1QU1RSSU5HX2l0OwotKwkJQVNOMV90YWcyYml0OwotKwkJVUlfbWV0aG9kX3NldF9mbHVzaGVyOwotKwkJWDUwOV9vY3NwaWRfcHJpbnQ7Ci0rCQlLUkI1X0VOQ0RBVEFfaXQ7Ci0rCQlFTkdJTkVfZ2V0X2xvYWRfcHVia2V5X2Z1bmN0aW9uOwotKwkJVUlfYWRkX3VzZXJfZGF0YTsKLSsJCU9DU1BfUkVRVUVTVF9kZWxldGVfZXh0OwotKwkJVUlfZ2V0X21ldGhvZDsKLSsJCU9DU1BfT05FUkVRX2ZyZWU7Ci0rCQlBU04xX1BSSU5UQUJMRVNUUklOR19pdDsKLSsJCVg1MDlfQ1JMX3NldF9uZXh0VXBkYXRlOwotKwkJT0NTUF9SRVFVRVNUX2l0OwotKwkJT0NTUF9CQVNJQ1JFU1BfaXQ7Ci0rCQlBRVNfZWNiX2VuY3J5cHQ7Ci0rCQlCTl9tb2Rfc3FyOwotKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9pdDsKLSsJCUdFTkVSQUxfTkFNRVNfaXQ7Ci0rCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfaXQ7Ci0rCQlBU04xX0ZCT09MRUFOX2l0OwotKwkJVUlfc2V0X2V4X2RhdGE7Ci0rCQlfb3NzbF9vbGRfZGVzX3N0cmluZ190b19rZXk7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JTQTsKLSsJCWQyaV9LUkI1X1BSSU5DTkFNRTsKLSsJCU9DU1BfUkVTUEJZVEVTX2l0OwotKwkJWDUwOV9DSU5GX2l0OwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfZGlnZXN0czsKLSsJCWQyaV9FRElQQVJUWU5BTUU7Ci0rCQlkMmlfT0NTUF9TRVJWSUNFTE9DOwotKwkJRU5HSU5FX2dldF9kaWdlc3RzOwotKwkJX29zc2xfb2xkX2Rlc19zZXRfb2RkX3Bhcml0eTsKLSsJCU9DU1BfUkVTUERBVEFfZnJlZTsKLSsJCWQyaV9LUkI1X1RJQ0tFVDsKLSsJCU9USEVSTkFNRV9pdDsKLSsJCUVWUF9NRF9DVFhfY2xlYW51cDsKLSsJCWQyaV9BU04xX0dFTkVSQUxTVFJJTkc7Ci0rCQlYNTA5X0NSTF9zZXRfdmVyc2lvbjsKLSsJCUJOX21vZF9zdWI7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlFTkdJTkVfZ2V0X2V4X25ld19pbmRleDsKLSsJCU9DU1BfUkVRVUVTVF9mcmVlOwotKwkJT0NTUF9SRVFVRVNUX2FkZDFfZXh0X2kyZDsKLSsJCVg1MDlfVkFMX2l0OwotKwkJRUNfUE9JTlRzX21ha2VfYWZmaW5lOwotKwkJRUNfUE9JTlRfbXVsOwotKwkJWDUwOVYzX0VYVF9hZGRfbmNvbmY7Ci0rCQlYNTA5X1RSVVNUX3NldDsKLSsJCVg1MDlfQ1JMX2FkZDFfZXh0X2kyZDsKLSsJCV9vc3NsX29sZF9kZXNfZmNyeXB0OwotKwkJRElTUExBWVRFWFRfaXQ7Ci0rCQlYNTA5X0NSTF9zZXRfbGFzdFVwZGF0ZTsKLSsJCU9DU1BfQkFTSUNSRVNQX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9hZGQxX2V4dF9pMmQ7Ci0rCQlkMmlfS1JCNV9BVVRIRU5UQk9EWTsKLSsJCUNSWVBUT19zZXRfZXhfZGF0YV9pbXBsZW1lbnRhdGlvbjsKLSsJCUNSWVBUT19zZXRfZXhfZGF0YV9pbXBsOwotKwkJS1JCNV9FTkNEQVRBX25ldzsKLSsJCURTT191cF9yZWY7Ci0rCQlPQ1NQX2NybF9yZWFzb25fc3RyOwotKwkJVUlfZ2V0MF9yZXN1bHRfc3RyaW5nOwotKwkJQVNOMV9HRU5FUkFMU1RSSU5HX25ldzsKLSsJCVg1MDlfU0lHX2l0OwotKwkJRVJSX3NldF9pbXBsZW1lbnRhdGlvbjsKLSsJCUVSUl9sb2FkX0VDX3N0cmluZ3M7Ci0rCQlVSV9nZXQwX2FjdGlvbl9zdHJpbmc7Ci0rCQlPQ1NQX09ORVJFUV9nZXRfZXh0OwotKwkJRUNfUE9JTlRfbWV0aG9kX29mOwotKwkJaTJkX0tSQjVfQVBSRVFCT0RZOwotKwkJX29zc2xfb2xkX2Rlc19lY2IzX2VuY3J5cHQ7Ci0rCQlDUllQVE9fZ2V0X21lbV9leF9mdW5jdGlvbnM7Ci0rCQlFTkdJTkVfZ2V0X2V4X2RhdGE7Ci0rCQlVSV9kZXN0cm95X21ldGhvZDsKLSsJCUFTTjFfaXRlbV9pMmRfYmlvOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9PQko7Ci0rCQlBU04xX3ByaW1pdGl2ZV9uZXc7Ci0rCQlBU04xX1BSSU5UQUJMRV9pdDsKLSsJCUVWUF9hZXNfMTkyX2VjYjsKLSsJCU9DU1BfU0lHTkFUVVJFX25ldzsKLSsJCUxPTkdfaXQ7Ci0rCQlBU04xX1ZJU0lCTEVTVFJJTkdfaXQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfYWRkMV9leHRfaTJkOwotKwkJZDJpX09DU1BfQ0VSVElEOwotKwkJQVNOMV9pdGVtX2QyaV9mcDsKLSsJCUNSTF9ESVNUX1BPSU5UU19pdDsKLSsJCUdFTkVSQUxfTkFNRV9wcmludDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9kZWxldGVfZXh0OwotKwkJUEtDUzEyX1NBRkVCQUdTX2l0OwotKwkJZDJpX09DU1BfU0lHTkFUVVJFOwotKwkJT0NTUF9yZXF1ZXN0X2FkZDFfbm9uY2U7Ci0rCQlFTkdJTkVfc2V0X2NtZF9kZWZuczsKLSsJCU9DU1BfU0VSVklDRUxPQ19mcmVlOwotKwkJRUNfR1JPVVBfZnJlZTsKLSsJCUFTTjFfQklUX1NUUklOR19pdDsKLSsJCVg1MDlfUkVRX2l0OwotKwkJX29zc2xfb2xkX2Rlc19jYmNfZW5jcnlwdDsKLSsJCUVSUl91bmxvYWRfc3RyaW5nczsKLSsJCVBLQ1M3X1NJR05fRU5WRUxPUEVfaXQ7Ci0rCQlFRElQQVJUWU5BTUVfZnJlZTsKLSsJCU9DU1BfUkVRSU5GT19mcmVlOwotKwkJRUNfR1JPVVBfbmV3X2N1cnZlX0dGcDsKLSsJCU9DU1BfUkVRVUVTVF9nZXQxX2V4dF9kMmk7Ci0rCQlQS0NTMTJfaXRlbV9wYWNrX3NhZmViYWc7Ci0rCQlhc24xX2V4X2MyaTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9kaWdlc3RzOwotKwkJaTJkX09DU1BfUkVWT0tFRElORk87Ci0rCQlhc24xX2VuY19yZXN0b3JlOwotKwkJVUlfZnJlZTsKLSsJCVVJX25ld19tZXRob2Q7Ci0rCQlFVlBfRW5jcnlwdEluaXRfZXg7Ci0rCQlYNTA5X3B1YmtleV9kaWdlc3Q7Ci0rCQlFQ19QT0lOVF9pbnZlcnQ7Ci0rCQlPQ1NQX2Jhc2ljX3NpZ247Ci0rCQlpMmRfT0NTUF9SRVNQSUQ7Ci0rCQlPQ1NQX2NoZWNrX25vbmNlOwotKwkJRU5HSU5FX2N0cmxfY21kOwotKwkJZDJpX0tSQjVfRU5DS0VZOwotKwkJT0NTUF9wYXJzZV91cmw7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dDsKLSsJCU9DU1BfQ1JMSURfZnJlZTsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldDFfZXh0X2QyaTsKLSsJCVJTQVByaXZhdGVLZXlfaXQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RIOwotKwkJaTJkX0VESVBBUlRZTkFNRTsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZHNfR0ZwOwotKwkJT0NTUF9DUkxJRF9uZXc7Ci0rCQlFTkdJTkVfZ2V0X2ZsYWdzOwotKwkJT0NTUF9PTkVSRVFfaXQ7Ci0rCQlVSV9wcm9jZXNzOwotKwkJQVNOMV9JTlRFR0VSX2l0OwotKwkJRVZQX0NpcGhlckluaXRfZXg7Ci0rCQlVSV9nZXRfc3RyaW5nX3R5cGU7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9ESDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRFNBOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCWJuX2R1cF9leHBhbmQ7Ci0rCQlPQ1NQX2NlcnRfaWRfbmV3OwotKwkJQkFTSUNfQ09OU1RSQUlOVFNfaXQ7Ci0rCQlCTl9tb2RfYWRkX3F1aWNrOwotKwkJRUNfUE9JTlRfbmV3OwotKwkJRVZQX01EX0NUWF9kZXN0cm95OwotKwkJT0NTUF9SRVNQQllURVNfZnJlZTsKLSsJCUVWUF9hZXNfMTI4X2NiYzsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXQxX2V4dF9kMmk7Ci0rCQlFQ19QT0lOVF9mcmVlOwotKwkJREhfdXBfcmVmOwotKwkJWDUwOV9OQU1FX0VOVFJZX2l0OwotKwkJVUlfZ2V0X2V4X25ld19pbmRleDsKLSsJCUJOX21vZF9zdWJfcXVpY2s7Ci0rCQlPQ1NQX09ORVJFUV9hZGRfZXh0OwotKwkJT0NTUF9yZXF1ZXN0X3NpZ247Ci0rCQlFVlBfRGlnZXN0RmluYWxfZXg7Ci0rCQlFTkdJTkVfc2V0X2RpZ2VzdHM7Ci0rCQlPQ1NQX2lkX2lzc3Vlcl9jbXA7Ci0rCQlPQkpfTkFNRV9kb19hbGw7Ci0rCQlFQ19QT0lOVHNfbXVsOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2NvbXBsZXRlOwotKwkJWDUwOVYzX0VYVF9uY29uZl9uaWQ7Ci0rCQlBU04xX1NFUVVFTkNFX2l0OwotKwkJVUlfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUkFORF9xdWVyeV9lZ2RfYnl0ZXM7Ci0rCQlVSV9tZXRob2RfZ2V0X3dyaXRlcjsKLSsJCVVJX09wZW5TU0w7Ci0rCQlQRU1fZGVmX2NhbGxiYWNrOwotKwkJRU5HSU5FX2NsZWFudXA7Ci0rCQlESVNUX1BPSU5UX2l0OwotKwkJT0NTUF9TSU5HTEVSRVNQX2l0OwotKwkJZDJpX0tSQjVfVEtUQk9EWTsKLSsJCUVDX1BPSU5UX2NtcDsKLSsJCU9DU1BfUkVWT0tFRElORk9fbmV3OwotKwkJaTJkX09DU1BfQ0VSVFNUQVRVUzsKLSsJCU9DU1BfYmFzaWNfYWRkMV9ub25jZTsKLSsJCUFTTjFfaXRlbV9leF9kMmk7Ci0rCQlCTl9tb2RfbHNoaWZ0MV9xdWljazsKLSsJCVVJX3NldF9tZXRob2Q7Ci0rCQlPQ1NQX2lkX2dldDBfaW5mbzsKLSsJCUJOX21vZF9zcXJ0OwotKwkJRUNfR1JPVVBfY29weTsKLSsJCUtSQjVfRU5DREFUQV9mcmVlOwotKwkJX29zc2xfb2xkX2Rlc19jZmJfZW5jcnlwdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X09CSjsKLSsJCU9DU1BfY2VydF90b19pZDsKLSsJCU9DU1BfUkVTUElEX25ldzsKLSsJCU9DU1BfUkVTUERBVEFfaXQ7Ci0rCQlkMmlfT0NTUF9SRVNQREFUQTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfY29tcGxldGU7Ci0rCQlPQ1NQX2NoZWNrX3ZhbGlkaXR5OwotKwkJUEtDUzEyX0JBR1NfaXQ7Ci0rCQlPQ1NQX3VybF9zdmNsb2NfbmV3OwotKwkJQVNOMV90ZW1wbGF0ZV9mcmVlOwotKwkJT0NTUF9TSU5HTEVSRVNQX2FkZF9leHQ7Ci0rCQlLUkI1X0FVVEhFTlRCT0RZX2l0OwotKwkJWDUwOV9zdXBwb3J0ZWRfZXh0ZW5zaW9uOwotKwkJaTJkX0tSQjVfQVVUSERBVEE7Ci0rCQlVSV9tZXRob2RfZ2V0X29wZW5lcjsKLSsJCUVOR0lORV9zZXRfZXhfZGF0YTsKLSsJCU9DU1BfUkVRVUVTVF9wcmludDsKLSsJCUNCSUdOVU1faXQ7Ci0rCQlLUkI1X1RJQ0tFVF9uZXc7Ci0rCQlLUkI1X0FQUkVRX25ldzsKLSsJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRnA7Ci0rCQlLUkI1X0VOQ0tFWV9uZXc7Ci0rCQlBU04xX3RlbXBsYXRlX2QyaTsKLSsJCV9vc3NsX29sZF9kZXNfcXVhZF9ja3N1bTsKLSsJCU9DU1Bfc2luZ2xlX2dldDBfc3RhdHVzOwotKwkJQk5fc3dhcDsKLSsJCVBPTElDWUlORk9faXQ7Ci0rCQlFTkdJTkVfc2V0X2Rlc3Ryb3lfZnVuY3Rpb247Ci0rCQlhc24xX2VuY19mcmVlOwotKwkJT0NTUF9SRVNQSURfaXQ7Ci0rCQlFQ19HUk9VUF9uZXc7Ci0rCQlFVlBfYWVzXzI1Nl9jYmM7Ci0rCQlpMmRfS1JCNV9QUklOQ05BTUU7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQyOwotKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MzsKLSsJCVBLQ1M4X1BSSVZfS0VZX0lORk9faXQ7Ci0rCQlPQ1NQX1JFUUlORk9faXQ7Ci0rCQlQQkVQQVJBTV9pdDsKLSsJCUtSQjVfQVVUSEVOVEJPRFlfbmV3OwotKwkJWDUwOV9DUkxfYWRkMF9yZXZva2VkOwotKwkJRURJUEFSVFlOQU1FX2l0OwotKwkJTkVUU0NBUEVfU1BLSV9pdDsKLSsJCVVJX2dldDBfdGVzdF9zdHJpbmc7Ci0rCQlFTkdJTkVfZ2V0X2NpcGhlcl9lbmdpbmU7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NpcGhlcnM7Ci0rCQlFQ19QT0lOVF9jb3B5OwotKwkJQk5fa3JvbmVja2VyOwotKwkJX29zc2xfb2xkX2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7Ci0rCQlfb3NzbF9vZGVzX2VkZTNfb2ZiNjRfZW5jcnlwdDsKLSsJCVVJX21ldGhvZF9nZXRfcmVhZGVyOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9jb3VudDsKLSsJCUFTTjFfRU5VTUVSQVRFRF9pdDsKLSsJCVVJX3NldF9yZXN1bHQ7Ci0rCQlpMmRfS1JCNV9USUNLRVQ7Ci0rCQlYNTA5X3ByaW50X2V4X2ZwOwotKwkJRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmc7Ci0rCQlkMmlfT0NTUF9SRVNQT05TRTsKLSsJCUFTTjFfVVRDVElNRV9pdDsKLSsJCV9vc3NsX29sZF9kZXNfZW5jX3dyaXRlOwotKwkJT0NTUF9SRVNQT05TRV9uZXc7Ci0rCQlBRVNfc2V0X2VuY3J5cHRfa2V5OwotKwkJT0NTUF9yZXNwX2NvdW50OwotKwkJS1JCNV9DSEVDS1NVTV9uZXc7Ci0rCQlFTkdJTkVfbG9hZF9jc3dpZnQ7Ci0rCQlPQ1NQX29uZXJlcV9nZXQwX2lkOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X2NpcGhlcnM7Ci0rCQlOT1RJQ0VSRUZfaXQ7Ci0rCQlYNTA5VjNfRVhUX0NSTF9hZGRfbmNvbmY7Ci0rCQlPQ1NQX1JFVk9LRURJTkZPX2l0OwotKwkJQUVTX2VuY3J5cHQ7Ci0rCQlPQ1NQX1JFUVVFU1RfbmV3OwotKwkJQVNOMV9BTllfaXQ7Ci0rCQlDUllQVE9fZXhfZGF0YV9uZXdfY2xhc3M7Ci0rCQlfb3NzbF9vbGRfZGVzX25jYmNfZW5jcnlwdDsKLSsJCWkyZF9LUkI1X1RLVEJPRFk7Ci0rCQlFQ19QT0lOVF9jbGVhcl9mcmVlOwotKwkJQUVTX2RlY3J5cHQ7Ci0rCQlhc24xX2VuY19pbml0OwotKwkJVUlfZ2V0X3Jlc3VsdF9tYXhzaXplOwotKwkJT0NTUF9DRVJUSURfbmV3OwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfUkFORDsKLSsJCVVJX21ldGhvZF9nZXRfY2xvc2VyOwotKwkJZDJpX0tSQjVfRU5DREFUQTsKLSsJCU9DU1BfcmVxdWVzdF9vbmVyZXFfY291bnQ7Ci0rCQlPQ1NQX2Jhc2ljX3ZlcmlmeTsKLSsJCUtSQjVfQVVUSEVOVEJPRFlfZnJlZTsKLSsJCUFTTjFfaXRlbV9kMmk7Ci0rCQlBU04xX3ByaW1pdGl2ZV9mcmVlOwotKwkJaTJkX0VYVEVOREVEX0tFWV9VU0FHRTsKLSsJCWkyZF9PQ1NQX1NJR05BVFVSRTsKLSsJCWFzbjFfZW5jX3NhdmU7Ci0rCQlFTkdJTkVfbG9hZF9udXJvbjsKLSsJCV9vc3NsX29sZF9kZXNfcGNiY19lbmNyeXB0OwotKwkJUEtDUzEyX01BQ19EQVRBX2l0OwotKwkJT0NTUF9hY2NlcHRfcmVzcG9uc2VzX25ldzsKLSsJCWFzbjFfZG9fbG9jazsKLSsJCVBLQ1M3X0FUVFJfVkVSSUZZX2l0OwotKwkJS1JCNV9BUFJFUUJPRFlfaXQ7Ci0rCQlpMmRfT0NTUF9TSU5HTEVSRVNQOwotKwkJQVNOMV9pdGVtX2V4X25ldzsKLSsJCVVJX2FkZF92ZXJpZnlfc3RyaW5nOwotKwkJX29zc2xfb2xkX2Rlc19zZXRfa2V5OwotKwkJS1JCNV9QUklOQ05BTUVfaXQ7Ci0rCQlFVlBfRGVjcnlwdEluaXRfZXg7Ci0rCQlpMmRfT0NTUF9DRVJUSUQ7Ci0rCQlBU04xX2l0ZW1fZDJpX2JpbzsKLSsJCUVDX1BPSU5UX2RibDsKLSsJCWFzbjFfZ2V0X2Nob2ljZV9zZWxlY3RvcjsKLSsJCWkyZF9LUkI1X0NIRUNLU1VNOwotKwkJRU5HSU5FX3NldF90YWJsZV9mbGFnczsKLSsJCUFFU19vcHRpb25zOwotKwkJRU5HSU5FX2xvYWRfY2hpbDsKLSsJCU9DU1BfaWRfY21wOwotKwkJT0NTUF9CQVNJQ1JFU1BfbmV3OwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfTklEOwotKwkJS1JCNV9BUFJFUV9pdDsKLSsJCUVOR0lORV9nZXRfZGVzdHJveV9mdW5jdGlvbjsKLSsJCUNPTkZfc2V0X25jb25mOwotKwkJQVNOMV9QUklOVEFCTEVfZnJlZTsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfTklEOwotKwkJRElTVF9QT0lOVF9OQU1FX2l0OwotKwkJWDUwOVYzX2V4dGVuc2lvbnNfcHJpbnQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2NmYjY0X2VuY3J5cHQ7Ci0rCQlYNTA5X1JFVk9LRURfYWRkMV9leHRfaTJkOwotKwkJX29zc2xfb2xkX2Rlc19vZmJfZW5jcnlwdDsKLSsJCUtSQjVfVEtUQk9EWV9uZXc7Ci0rCQlBU04xX09DVEVUX1NUUklOR19pdDsKLSsJCUVSUl9sb2FkX1VJX3N0cmluZ3M7Ci0rCQlpMmRfS1JCNV9FTkNLRVk7Ci0rCQlBU04xX3RlbXBsYXRlX25ldzsKLSsJCU9DU1BfU0lHTkFUVVJFX2ZyZWU7Ci0rCQlBU04xX2l0ZW1faTJkX2ZwOwotKwkJS1JCNV9QUklOQ05BTUVfZnJlZTsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9faXQ7Ci0rCQlFWFRFTkRFRF9LRVlfVVNBR0VfaXQ7Ci0rCQlFQ19HRnBfc2ltcGxlX21ldGhvZDsKLSsJCUVDX0dST1VQX3ByZWNvbXB1dGVfbXVsdDsKLSsJCU9DU1BfcmVxdWVzdF9vbmVyZXFfZ2V0MDsKLSsJCVVJX21ldGhvZF9zZXRfd3JpdGVyOwotKwkJS1JCNV9BVVRIRU5UX25ldzsKLSsJCVg1MDlfQ1JMX0lORk9faXQ7Ci0rCQlEU09fc2V0X25hbWVfY29udmVydGVyOwotKwkJQUVTX3NldF9kZWNyeXB0X2tleTsKLSsJCVBLQ1M3X0RJR0VTVF9pdDsKLSsJCVBLQ1MxMl94NTA5MmNlcnRiYWc7Ci0rCQlFVlBfRGlnZXN0SW5pdF9leDsKLSsJCWkyYV9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlPQ1NQX1JFU1BPTlNFX2l0OwotKwkJUEtDUzdfRU5DX0NPTlRFTlRfaXQ7Ci0rCQlPQ1NQX3JlcXVlc3RfYWRkMF9pZDsKLSsJCUVDX1BPSU5UX21ha2VfYWZmaW5lOwotKwkJRFNPX2dldF9maWxlbmFtZTsKLSsJCU9DU1BfQ0VSVFNUQVRVU19pdDsKLSsJCU9DU1BfcmVxdWVzdF9hZGQxX2NlcnQ7Ci0rCQlVSV9nZXQwX291dHB1dF9zdHJpbmc7Ci0rCQlVSV9kdXBfdmVyaWZ5X3N0cmluZzsKLSsJCUJOX21vZF9sc2hpZnQ7Ci0rCQlLUkI1X0FVVEhEQVRBX2l0OwotKwkJYXNuMV9zZXRfY2hvaWNlX3NlbGVjdG9yOwotKwkJT0NTUF9iYXNpY19hZGQxX3N0YXR1czsKLSsJCU9DU1BfUkVTUElEX2ZyZWU7Ci0rCQlhc24xX2dldF9maWVsZF9wdHI7Ci0rCQlVSV9hZGRfaW5wdXRfc3RyaW5nOwotKwkJT0NTUF9DUkxJRF9pdDsKLSsJCWkyZF9LUkI1X0FVVEhFTlRCT0RZOwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfY291bnQ7Ci0rCQlFTkdJTkVfbG9hZF9hdGFsbGE7Ci0rCQlYNTA5X05BTUVfaXQ7Ci0rCQlVU0VSTk9USUNFX2l0OwotKwkJT0NTUF9SRVFJTkZPX25ldzsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHQ7Ci0rCQlDUllQVE9fZ2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247Ci0rCQlDUllQVE9fZ2V0X2V4X2RhdGFfaW1wbDsKLSsJCUFTTjFfaXRlbV9wYWNrOwotKwkJaTJkX0tSQjVfRU5DREFUQTsKLSsJCVg1MDlfUFVSUE9TRV9zZXQ7Ci0rCQlYNTA5X1JFUV9JTkZPX2l0OwotKwkJVUlfbWV0aG9kX3NldF9vcGVuZXI7Ci0rCQlBU04xX2l0ZW1fZXhfZnJlZTsKLSsJCUFTTjFfQk9PTEVBTl9pdDsKLSsJCUVOR0lORV9nZXRfdGFibGVfZmxhZ3M7Ci0rCQlVSV9jcmVhdGVfbWV0aG9kOwotKwkJT0NTUF9PTkVSRVFfYWRkMV9leHRfaTJkOwotKwkJX3NoYWRvd19ERVNfY2hlY2tfa2V5OwotKwkJZDJpX09DU1BfUkVRSU5GTzsKLSsJCVVJX2FkZF9pbmZvX3N0cmluZzsKLSsJCVVJX2dldF9yZXN1bHRfbWluc2l6ZTsKLSsJCUFTTjFfTlVMTF9pdDsKLSsJCUJOX21vZF9sc2hpZnQxOwotKwkJZDJpX09DU1BfT05FUkVROwotKwkJT0NTUF9PTkVSRVFfbmV3OwotKwkJS1JCNV9USUNLRVRfaXQ7Ci0rCQlFVlBfYWVzXzE5Ml9jYmM7Ci0rCQlLUkI1X1RJQ0tFVF9mcmVlOwotKwkJVUlfbmV3OwotKwkJT0NTUF9yZXNwb25zZV9jcmVhdGU7Ci0rCQlfb3NzbF9vbGRfZGVzX3hjYmNfZW5jcnlwdDsKLSsJCVBLQ1M3X2l0OwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9jcml0OwotKwkJRU5HSU5FX3NldF9mbGFnczsKLSsJCV9vc3NsX29sZF9kZXNfZWNiX2VuY3J5cHQ7Ci0rCQlPQ1NQX3Jlc3BvbnNlX2dldDFfYmFzaWM7Ci0rCQlFVlBfRGlnZXN0OwotKwkJT0NTUF9PTkVSRVFfZGVsZXRlX2V4dDsKLSsJCUFTTjFfVEJPT0xFQU5faXQ7Ci0rCQlBU04xX2l0ZW1fbmV3OwotKwkJQVNOMV9USU1FX3RvX2dlbmVyYWxpemVkdGltZTsKLSsJCUJJR05VTV9pdDsKLSsJCUFFU19jYmNfZW5jcnlwdDsKLSsJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9sb2FkX3ByaXZrZXlfZm47Ci0rCQlPQ1NQX1JFU1BPTlNFX2ZyZWU7Ci0rCQlVSV9tZXRob2Rfc2V0X3JlYWRlcjsKLSsJCWkyZF9BU04xX1Q2MVNUUklORzsKLSsJCUVDX1BPSU5UX3NldF90b19pbmZpbml0eTsKLSsJCUVSUl9sb2FkX09DU1Bfc3RyaW5nczsKLSsJCUVDX1BPSU5UX3BvaW50Mm9jdDsKLSsJCUtSQjVfQVBSRVFfZnJlZTsKLSsJCUFTTjFfT0JKRUNUX2l0OwotKwkJT0NTUF9jcmxJRF9uZXc7Ci0rCQlPQ1NQX2NybElEMl9uZXc7Ci0rCQlDT05GX21vZHVsZXNfbG9hZF9maWxlOwotKwkJQ09ORl9pbW9kdWxlX3NldF91c3JfZGF0YTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9zdHJpbmc7Ci0rCQlDT05GX21vZHVsZV9nZXRfdXNyX2RhdGE7Ci0rCQlBU04xX2FkZF9vaWRfbW9kdWxlOwotKwkJQ09ORl9tb2R1bGVzX2ZpbmlzaDsKLSsJCU9QRU5TU0xfY29uZmlnOwotKwkJQ09ORl9tb2R1bGVzX3VubG9hZDsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfdmFsdWU7Ci0rCQlDT05GX21vZHVsZV9zZXRfdXNyX2RhdGE7Ci0rCQlDT05GX3BhcnNlX2xpc3Q7Ci0rCQlDT05GX21vZHVsZV9hZGQ7Ci0rCQlDT05GX2dldDFfZGVmYXVsdF9jb25maWdfZmlsZTsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfZmxhZ3M7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X21vZHVsZTsKLSsJCUNPTkZfbW9kdWxlc19sb2FkOwotKwkJQ09ORl9pbW9kdWxlX2dldF9uYW1lOwotKwkJRVJSX3BlZWtfdG9wX2Vycm9yOwotKwkJQ09ORl9pbW9kdWxlX2dldF91c3JfZGF0YTsKLSsJCUNPTkZfaW1vZHVsZV9zZXRfZmxhZ3M7Ci0rCQlFTkdJTkVfYWRkX2NvbmZfbW9kdWxlOwotKwkJRVJSX3BlZWtfbGFzdF9lcnJvcl9saW5lOwotKwkJRVJSX3BlZWtfbGFzdF9lcnJvcl9saW5lX2RhdGE7Ci0rCQlFUlJfcGVla19sYXN0X2Vycm9yOwotKwkJREVTX3JlYWRfMnBhc3N3b3JkczsKLSsJCURFU19yZWFkX3Bhc3N3b3JkOwotKwkJVUlfVVRJTF9yZWFkX3B3OwotKwkJVUlfVVRJTF9yZWFkX3B3X3N0cmluZzsKLSsJCUVOR0lORV9sb2FkX2FlcDsKLSsJCUVOR0lORV9sb2FkX3N1cmV3YXJlOwotKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfbm9jb25mOwotKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29fbm9jb25mOwotKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfY29uZjsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX2NvbmY7Ci0rCQlPUEVOU1NMX2xvYWRfYnVpbHRpbl9tb2R1bGVzOwotKwkJQUVTX29mYjEyOF9lbmNyeXB0OwotKwkJQUVTX2N0cjEyOF9lbmNyeXB0OwotKwkJQUVTX2NmYjEyOF9lbmNyeXB0OwotKwkJRU5HSU5FX2xvYWRfNDc1OGNjYTsKLSsJCV9vc3NsXzA5Nl9kZXNfcmFuZG9tX3NlZWQ7Ci0rCQlFVlBfYWVzXzI1Nl9vZmI7Ci0rCQlFVlBfYWVzXzE5Ml9vZmI7Ci0rCQlFVlBfYWVzXzEyOF9jZmIxMjg7Ci0rCQlFVlBfYWVzXzI1Nl9jZmIxMjg7Ci0rCQlFVlBfYWVzXzEyOF9vZmI7Ci0rCQlFVlBfYWVzXzE5Ml9jZmIxMjg7Ci0rCQlDT05GX21vZHVsZXNfZnJlZTsKLSsJCU5DT05GX2RlZmF1bHQ7Ci0rCQlPUEVOU1NMX25vX2NvbmZpZzsKLSsJCU5DT05GX1dJTjMyOwotKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfbmV3OwotKwkJRVZQX2Rlc19lZGVfZWNiOwotKwkJaTJkX0FTTjFfVU5JVkVSU0FMU1RSSU5HOwotKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfZnJlZTsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2l0OwotKwkJZDJpX0FTTjFfVU5JVkVSU0FMU1RSSU5HOwotKwkJRVZQX2Rlc19lZGUzX2VjYjsKLSsJCVg1MDlfUkVRX3ByaW50X2V4OwotKwkJRU5HSU5FX3VwX3JlZjsKLSsJCUJVRl9NRU1fZ3Jvd19jbGVhbjsKLSsJCUNSWVBUT19yZWFsbG9jX2NsZWFuOwotKwkJQlVGX3N0cmxjYXQ7Ci0rCQlCSU9faW5kZW50OwotKwkJQlVGX3N0cmxjcHk7Ci0rCQlPcGVuU1NMRGllOwotKwkJT1BFTlNTTF9jbGVhbnNlOwotKwkJRU5HSU5FX3NldHVwX2JzZF9jcnlwdG9kZXY7Ci0rCQlFUlJfcmVsZWFzZV9lcnJfc3RhdGVfdGFibGU7Ci0rCQlFVlBfYWVzXzEyOF9jZmI4OwotKwkJRklQU19jb3JydXB0X3JzYTsKLSsJCUZJUFNfc2VsZnRlc3RfZGVzOwotKwkJRVZQX2Flc18xMjhfY2ZiMTsKLSsJCUVWUF9hZXNfMTkyX2NmYjg7Ci0rCQlGSVBTX21vZGVfc2V0OwotKwkJRklQU19zZWxmdGVzdF9kc2E7Ci0rCQlFVlBfYWVzXzI1Nl9jZmI4OwotKwkJRklQU19hbGxvd19tZDU7Ci0rCQlERVNfZWRlM19jZmJfZW5jcnlwdDsKLSsJCUVWUF9kZXNfZWRlM19jZmI4OwotKwkJRklQU19yYW5kX3NlZWRlZDsKLSsJCUFFU19jZmJyX2VuY3J5cHRfYmxvY2s7Ci0rCQlBRVNfY2ZiOF9lbmNyeXB0OwotKwkJRklQU19yYW5kX3NlZWQ7Ci0rCQlGSVBTX2NvcnJ1cHRfZGVzOwotKwkJRVZQX2Flc18xOTJfY2ZiMTsKLSsJCUZJUFNfc2VsZnRlc3RfYWVzOwotKwkJRklQU19zZXRfcHJuZ19rZXk7Ci0rCQlFVlBfZGVzX2NmYjg7Ci0rCQlGSVBTX2NvcnJ1cHRfZHNhOwotKwkJRklQU190ZXN0X21vZGU7Ci0rCQlGSVBTX3JhbmRfbWV0aG9kOwotKwkJRVZQX2Flc18yNTZfY2ZiMTsKLSsJCUVSUl9sb2FkX0ZJUFNfc3RyaW5nczsKLSsJCUZJUFNfY29ycnVwdF9hZXM7Ci0rCQlGSVBTX3NlbGZ0ZXN0X3NoYTE7Ci0rCQlGSVBTX3NlbGZ0ZXN0X3JzYTsKLSsJCUZJUFNfY29ycnVwdF9zaGExOwotKwkJRVZQX2Rlc19jZmIxOwotKwkJRklQU19kc2FfY2hlY2s7Ci0rCQlBRVNfY2ZiMV9lbmNyeXB0OwotKwkJRVZQX2Rlc19lZGUzX2NmYjE7Ci0rCQlGSVBTX3JhbmRfY2hlY2s7Ci0rCQlGSVBTX21kNV9hbGxvd2VkOwotKwkJRklQU19tb2RlOwotKwkJRklQU19zZWxmdGVzdF9mYWlsZWQ7Ci0rCQlza19pc19zb3J0ZWQ7Ci0rCQlYNTA5X2NoZWNrX2NhOwotKwkJSE1BQ19DVFhfc2V0X2ZsYWdzOwotKwkJZDJpX1BST1hZX0NFUlRfSU5GT19FWFRFTlNJT047Ci0rCQlQUk9YWV9QT0xJQ1lfaXQ7Ci0rCQlpMmRfUFJPWFlfUE9MSUNZOwotKwkJaTJkX1BST1hZX0NFUlRfSU5GT19FWFRFTlNJT047Ci0rCQlkMmlfUFJPWFlfUE9MSUNZOwotKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9uZXc7Ci0rCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX2ZyZWU7Ci0rCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX2l0OwotKwkJUFJPWFlfUE9MSUNZX2ZyZWU7Ci0rCQlQUk9YWV9QT0xJQ1lfbmV3OwotKwkJQk5fTU9OVF9DVFhfc2V0X2xvY2tlZDsKLSsJCUZJUFNfc2VsZnRlc3Rfcm5nOwotKwkJRVZQX3NoYTM4NDsKLSsJCUVWUF9zaGE1MTI7Ci0rCQlFVlBfc2hhMjI0OwotKwkJRVZQX3NoYTI1NjsKLSsJCUZJUFNfc2VsZnRlc3RfaG1hYzsKLSsJCUZJUFNfY29ycnVwdF9ybmc7Ci0rCQlCTl9tb2RfZXhwX21vbnRfY29uc3R0aW1lOwotKwkJUlNBX1g5MzFfaGFzaF9pZDsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1g5MzE7Ci0rCQlSU0FfdmVyaWZ5X1BLQ1MxX1BTUzsKLSsJCVJTQV9wYWRkaW5nX2FkZF9YOTMxOwotKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX1BTUzsKLSsJCVBLQ1MxX01HRjE7Ci0rCQlCTl9YOTMxX2dlbmVyYXRlX1hwcTsKLSsJCVJTQV9YOTMxX2dlbmVyYXRlX2tleTsKLSsJCUJOX1g5MzFfZGVyaXZlX3ByaW1lOwotKwkJQk5fWDkzMV9nZW5lcmF0ZV9wcmltZTsKLSsJCVJTQV9YOTMxX2Rlcml2ZTsKLSsJCUJJT19uZXdfZGdyYW07Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMzg0OwotKwkJRVJSX3NldF9tYXJrOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9jcmxzOwotKwkJRU5HSU5FX3NldF9TVE9SRTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9FQ0RTQTsKLSsJCVNUT1JFX21ldGhfc2V0X2xpc3Rfc3RhcnRfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3Rfc3RhcnRfZnVuY3Rpb247Ci0rCQlCTl9CTElORElOR19pbnZlcnRfZXg7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX2ZyZWU7Ci0rCQlTVE9SRV9BVFRSX0lORk9fc2V0X251bWJlcjsKLSsJCUJOX0JMSU5ESU5HX2dldF90aHJlYWRfaWQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXQwX3BhcmFtOwotKwkJUE9MSUNZX01BUFBJTkdfaXQ7Ci0rCQlTVE9SRV9wYXJzZV9hdHRyc19zdGFydDsKLSsJCVBPTElDWV9DT05TVFJBSU5UU19mcmVlOwotKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X05JRDsKLSsJCUJOX25pc3RfbW9kXzE5MjsKLSsJCUVDX0dST1VQX2dldF90cmlub21pYWxfYmFzaXM7Ci0rCQlTVE9SRV9zZXRfbWV0aG9kOwotKwkJR0VORVJBTF9TVUJUUkVFX2ZyZWU7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX2l0OwotKwkJRUNESF9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlQS0NTMTJfYWRkX3NhZmU7Ci0rCQlFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWU7Ci0rCQlTVE9SRV9tZXRoX2dldF91cGRhdGVfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X3VwZGF0ZV9zdG9yZV9mdW5jdGlvbjsKLSsJCUVOR0lORV9yZWdpc3Rlcl9FQ0RIOwotKwkJU0hBNTEyX1VwZGF0ZTsKLSsJCWkyZF9FQ1ByaXZhdGVLZXk7Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMTkyOwotKwkJU1RPUkVfbW9kaWZ5X2NlcnRpZmljYXRlOwotKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtOwotKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZHNfR0YybTsKLSsJCUJOX0dGMm1fbW9kX2V4cF9hcnI7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X251bWJlcjsKLSsJCVg1MDlfa2V5aWRfZ2V0MDsKLSsJCUVOR0lORV9sb2FkX2dtcDsKLSsJCXBpdGVtX25ldzsKLSsJCUJOX0dGMm1fbW9kX211bF9hcnI7Ci0rCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfZW5kcDsKLSsJCW8yaV9FQ1B1YmxpY0tleTsKLSsJCUVDX0tFWV9jb3B5OwotKwkJQklPX2R1bXBfZnA7Ci0rCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcGFyZW50OwotKwkJRUNfR1JPVVBfY2hlY2tfZGlzY3JpbWluYW50OwotKwkJaTJvX0VDUHVibGljS2V5OwotKwkJRUNfS0VZX3ByZWNvbXB1dGVfbXVsdDsKLSsJCWEyaV9JUEFERFJFU1M7Ci0rCQlTVE9SRV9tZXRoX3NldF9pbml0aWFsaXNlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9pbml0aWFsaXNlX2Z1bmN0aW9uOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2RlcHRoOwotKwkJWDUwOV9WRVJJRllfUEFSQU1faW5oZXJpdDsKLSsJCUVDX1BPSU5UX3BvaW50MmJuOwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9kbjsKLSsJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF9wb2xpY2llczsKLSsJCUVDX0dST1VQX25ld19jdXJ2ZV9HRjJtOwotKwkJU1RPUkVfZGVzdHJveV9tZXRob2Q7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9TVE9SRTsKLSsJCUVWUF9QS0VZX2dldDFfRUNfS0VZOwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfbnVtYmVyOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDREg7Ci0rCQlFQ19LRVlfZ2V0X2NvbnZfZm9ybTsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX05ERUZfaXQ7Ci0rCQlTVE9SRV9kZWxldGVfcHVibGljX2tleTsKLSsJCVNUT1JFX2dldF9wdWJsaWNfa2V5OwotKwkJU1RPUkVfbW9kaWZ5X2FyYml0cmFyeTsKLSsJCUVOR0lORV9nZXRfc3RhdGljX3N0YXRlOwotKwkJcHF1ZXVlX2l0ZXJhdG9yOwotKwkJRUNEU0FfU0lHX25ldzsKLSsJCU9QRU5TU0xfRElSX2VuZDsKLSsJCUJOX0dGMm1fbW9kX3NxcjsKLSsJCUVDX1BPSU5UX2JuMnBvaW50OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2RlcHRoOwotKwkJRUNfS0VZX3NldF9hc24xX2ZsYWc7Ci0rCQlTVE9SRV9nZXRfbWV0aG9kOwotKwkJRUNfS0VZX2dldF9rZXlfbWV0aG9kX2RhdGE7Ci0rCQlFQ0RTQV9zaWduX2V4OwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kOwotKwkJRUNfR1JPVVBfZ2V0X3BvaW50X2NvbnZlcnNpb25fZm9ybTsKLSsJCUVDX0dST1VQX2dldF9wb2ludF9jb252X2Zvcm07Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X3N0b3JlX2Z1bmN0aW9uOwotKwkJU1RPUkVfQVRUUl9JTkZPX2luOwotKwkJUEVNX3JlYWRfYmlvX0VDUEtQYXJhbWV0ZXJzOwotKwkJRUNfR1JPVVBfZ2V0X3BlbnRhbm9taWFsX2Jhc2lzOwotKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCUJOX0JMSU5ESU5HX3NldF9mbGFnczsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfcG9saWNpZXM7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX25hbWU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfcHVycG9zZTsKLSsJCVNUT1JFX2dldF9udW1iZXI7Ci0rCQlFQ0RTQV9zaWduX3NldHVwOwotKwkJQk5fR0YybV9tb2Rfc29sdmVfcXVhZF9hcnI7Ci0rCQlFQ19LRVlfdXBfcmVmOwotKwkJUE9MSUNZX01BUFBJTkdfZnJlZTsKLSsJCUJOX0dGMm1fbW9kX2RpdjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9mbGFnczsKLSsJCUVDX0tFWV9mcmVlOwotKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9uZXh0X2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X25leHRfZnVuY3Rpb247Ci0rCQlQRU1fd3JpdGVfYmlvX0VDUHJpdmF0ZUtleTsKLSsJCWQyaV9FQ19QVUJLRVk7Ci0rCQlTVE9SRV9tZXRoX2dldF9nZW5lcmF0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfZ2VuZXJhdGVfZnVuY3Rpb247Ci0rCQlTVE9SRV9tZXRoX3NldF9saXN0X2VuZF9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9lbmRfZnVuY3Rpb247Ci0rCQlwcXVldWVfcHJpbnQ7Ci0rCQlFQ19HUk9VUF9oYXZlX3ByZWNvbXB1dGVfbXVsdDsKLSsJCUVDX0tFWV9wcmludF9mcDsKLSsJCUJOX0dGMm1fbW9kX2FycjsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9DRVJUX1BBSVI7Ci0rCQlFVlBfUEtFWV9jbXA7Ci0rCQlYNTA5X3BvbGljeV9sZXZlbF9ub2RlX2NvdW50OwotKwkJU1RPUkVfbmV3X2VuZ2luZTsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9zdGFydDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX25ldzsKLSsJCUVDREhfZ2V0X2V4X2RhdGE7Ci0rCQlFVlBfUEtFWV9nZXRfYXR0cjsKLSsJCUVDRFNBX2RvX3NpZ247Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9FQ0RIOwotKwkJRUNESF9PcGVuU1NMOwotKwkJRUNfS0VZX3NldF9jb252X2Zvcm07Ci0rCQlFQ19QT0lOVF9kdXA7Ci0rCQlHRU5FUkFMX1NVQlRSRUVfbmV3OwotKwkJU1RPUkVfbGlzdF9jcmxfZW5kcDsKLSsJCUVDX2dldF9idWlsdGluX2N1cnZlczsKLSsJCVg1MDlfcG9saWN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOwotKwkJWDUwOV9wY3lfbm9kZV9nZXQwX3F1YWxpZmllcnM7Ci0rCQlTVE9SRV9saXN0X2NybF9lbmQ7Ci0rCQlFVlBfUEtFWV9zZXQxX0VDX0tFWTsKLSsJCUJOX0dGMm1fbW9kX3NxcnRfYXJyOwotKwkJaTJkX0VDUHJpdmF0ZUtleV9iaW87Ci0rCQlFQ1BLUGFyYW1ldGVyc19wcmludF9mcDsKLSsJCXBxdWV1ZV9maW5kOwotKwkJRUNEU0FfU0lHX2ZyZWU7Ci0rCQlQRU1fd3JpdGVfYmlvX0VDUEtQYXJhbWV0ZXJzOwotKwkJU1RPUkVfbWV0aG9kX3NldF9jdHJsX2Z1bmN0aW9uOwotKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZDsKLSsJCUVDX0tFWV9zZXRfcHJpdmF0ZV9rZXk7Ci0rCQlwcXVldWVfcGVlazsKLSsJCVNUT1JFX2dldF9hcmJpdHJhcnk7Ci0rCQlTVE9SRV9zdG9yZV9jcmw7Ci0rCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcG9saWN5OwotKwkJUEtDUzEyX2FkZF9zYWZlczsKLSsJCUJOX0JMSU5ESU5HX2NvbnZlcnRfZXg7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2ZyZWU7Ci0rCQlPUEVOU1NMX2lhMzJjYXBfbG9jOwotKwkJQk5fR0YybV9wb2x5MmFycjsKLSsJCVNUT1JFX2N0cmw7Ci0rCQlTVE9SRV9BVFRSX0lORk9fY29tcGFyZTsKLSsJCUJOX2dldDBfbmlzdF9wcmltZV8yMjQ7Ci0rCQlpMmRfRUNQYXJhbWV0ZXJzOwotKwkJaTJkX0VDUEtQYXJhbWV0ZXJzOwotKwkJQk5fR0VOQ0JfY2FsbDsKLSsJCWQyaV9FQ1BLUGFyYW1ldGVyczsKLSsJCVNUT1JFX21ldGhfc2V0X2dlbmVyYXRlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9nZW5lcmF0ZV9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfRUNESDsKLSsJCU5BTUVfQ09OU1RSQUlOVFNfbmV3OwotKwkJU0hBMjU2X0luaXQ7Ci0rCQlFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5OwotKwkJUEVNX3dyaXRlX2Jpb19FQ19QVUJLRVk7Ci0rCQlTVE9SRV9BVFRSX0lORk9fc2V0X2NzdHI7Ci0rCQlTVE9SRV9saXN0X2NybF9uZXh0OwotKwkJU1RPUkVfQVRUUl9JTkZPX2luX3JhbmdlOwotKwkJRUNQYXJhbWV0ZXJzX3ByaW50OwotKwkJU1RPUkVfbWV0aF9zZXRfZGVsZXRlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9kZWxldGVfZnVuY3Rpb247Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX25leHQ7Ci0rCQlBU04xX2dlbmVyYXRlX25jb25mOwotKwkJQlVGX21lbWR1cDsKLSsJCUJOX0dGMm1fbW9kX211bDsKLSsJCVNUT1JFX21ldGhfZ2V0X2xpc3RfbmV4dF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfZG47Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X25leHQ7Ci0rCQlFQ19HUk9VUF9zZXRfc2VlZDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF90cnVzdDsKLSsJCVNUT1JFX0FUVFJfSU5GT19mcmVlOwotKwkJU1RPUkVfZ2V0X3ByaXZhdGVfa2V5OwotKwkJRVZQX1BLRVlfZ2V0X2F0dHJfY291bnQ7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbmV3OwotKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX0dGMm07Ci0rCQlTVE9SRV9tZXRoX3NldF9yZXZva2VfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X3Jldm9rZV9mdW5jdGlvbjsKLSsJCVNUT1JFX3N0b3JlX251bWJlcjsKLSsJCUJOX2lzX3ByaW1lX2V4OwotKwkJU1RPUkVfcmV2b2tlX3B1YmxpY19rZXk7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmFtOwotKwkJU1RPUkVfZGVsZXRlX2FyYml0cmFyeTsKLSsJCVBFTV9yZWFkX1g1MDlfQ0VSVF9QQUlSOwotKwkJWDUwOV9TVE9SRV9zZXRfZGVwdGg7Ci0rCQlFQ0RTQV9nZXRfZXhfZGF0YTsKLSsJCVNIQTIyNDsKLSsJCUJJT19kdW1wX2luZGVudF9mcDsKLSsJCUVDX0tFWV9zZXRfZ3JvdXA7Ci0rCQlCVUZfc3RybmR1cDsKLSsJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfc3RhcnQ7Ci0rCQlCTl9HRjJtX21vZDsKLSsJCVg1MDlfUkVRX2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJRUNfR1JPVVBfZ2V0X3NlZWRfbGVuOwotKwkJRVJSX2xvYWRfU1RPUkVfc3RyaW5nczsKLSsJCVBFTV9yZWFkX2Jpb19FQ19QVUJLRVk7Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZDsKLSsJCWkyZF9FQ19QVUJLRVk7Ci0rCQlFQ0RTQV9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlBU04xX3B1dF9lb2M7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhwbGljaXRfcG9saWN5OwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxfcG9saWN5OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fdGFibGVfY2xlYW51cDsKLSsJCVNUT1JFX21vZGlmeV9wcml2YXRlX2tleTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2ZyZWU7Ci0rCQlFQ19NRVRIT0RfZ2V0X2ZpZWxkX3R5cGU7Ci0rCQlFQ19HRnBfbmlzdF9tZXRob2Q7Ci0rCQlTVE9SRV9tZXRoX3NldF9tb2RpZnlfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X21vZGlmeV9mdW5jdGlvbjsKLSsJCVNUT1JFX3BhcnNlX2F0dHJzX25leHQ7Ci0rCQlFTkdJTkVfbG9hZF9wYWRsb2NrOwotKwkJRUNfR1JPVVBfc2V0X2N1cnZlX25hbWU7Ci0rCQlYNTA5X0NFUlRfUEFJUl9pdDsKLSsJCVNUT1JFX21ldGhfZ2V0X3Jldm9rZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfcmV2b2tlX2Z1bmN0aW9uOwotKwkJU1RPUkVfbWV0aG9kX3NldF9nZXRfZnVuY3Rpb247Ci0rCQlTVE9SRV9tb2RpZnlfbnVtYmVyOwotKwkJU1RPUkVfbWV0aG9kX2dldF9zdG9yZV9mdW5jdGlvbjsKLSsJCVNUT1JFX3N0b3JlX3ByaXZhdGVfa2V5OwotKwkJQk5fR0YybV9tb2Rfc3FyX2FycjsKLSsJCVJTQV9zZXR1cF9ibGluZGluZzsKLSsJCUJJT19zX2RhdGFncmFtOwotKwkJU1RPUkVfTWVtb3J5OwotKwkJc2tfZmluZF9leDsKLSsJCUVDX0dST1VQX3NldF9jdXJ2ZV9HRjJtOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0VDRFNBOwotKwkJUE9MSUNZX0NPTlNUUkFJTlRTX25ldzsKLSsJCUJOX0dGMm1fbW9kX3NxcnQ7Ci0rCQlFQ0RIX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCUVDX0tFWV9nZW5lcmF0ZV9rZXk7Ci0rCQlTSEEzODRfVXBkYXRlOwotKwkJQk5fR0YybV9hcnIycG9seTsKLSsJCVNUT1JFX21ldGhvZF9nZXRfZ2V0X2Z1bmN0aW9uOwotKwkJU1RPUkVfbWV0aF9zZXRfY2xlYW51cF9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfY2xlYW51cF9mdW5jdGlvbjsKLSsJCUVDX0dST1VQX2NoZWNrOwotKwkJZDJpX0VDUHJpdmF0ZUtleV9iaW87Ci0rCQlFQ19LRVlfaW5zZXJ0X2tleV9tZXRob2RfZGF0YTsKLSsJCVNUT1JFX21ldGhfZ2V0X2xvY2tfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2xvY2tfc3RvcmVfZnVuY3Rpb247Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZGVwdGg7Ci0rCQlTSEEyMjRfRmluYWw7Ci0rCQlTVE9SRV9tZXRoX3NldF91cGRhdGVfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X3VwZGF0ZV9zdG9yZV9mdW5jdGlvbjsKLSsJCVNIQTIyNF9VcGRhdGU7Ci0rCQlkMmlfRUNQcml2YXRlS2V5OwotKwkJQVNOMV9pdGVtX25kZWZfaTJkOwotKwkJU1RPUkVfZGVsZXRlX3ByaXZhdGVfa2V5OwotKwkJRVJSX3BvcF90b19tYXJrOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9TVE9SRTsKLSsJCVg1MDlfcG9saWN5X2xldmVsX2dldDBfbm9kZTsKLSsJCWkyZF9QS0NTN19OREVGOwotKwkJRUNfR1JPVVBfZ2V0X2RlZ3JlZTsKLSsJCUFTTjFfZ2VuZXJhdGVfdjM7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X2NzdHI7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2xldmVsX2NvdW50OwotKwkJQk5fR0YybV9hZGQ7Ci0rCQlFQ19LRVlfZ2V0MF9ncm91cDsKLSsJCVNUT1JFX2dlbmVyYXRlX2NybDsKLSsJCVNUT1JFX3N0b3JlX3B1YmxpY19rZXk7Ci0rCQlYNTA5X0NFUlRfUEFJUl9mcmVlOwotKwkJU1RPUkVfcmV2b2tlX3ByaXZhdGVfa2V5OwotKwkJQk5fbmlzdF9tb2RfMjI0OwotKwkJU0hBNTEyX0ZpbmFsOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9kbjsKLSsJCVNUT1JFX21ldGhfZ2V0X2luaXRpYWxpc2VfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2luaXRpYWxpc2VfZnVuY3Rpb247Ci0rCQlTVE9SRV9kZWxldGVfbnVtYmVyOwotKwkJaTJkX0VDX1BVQktFWV9iaW87Ci0rCQlCSU9fZGdyYW1fbm9uX2ZhdGFsX2Vycm9yOwotKwkJRUNfR1JPVVBfZ2V0X2FzbjFfZmxhZzsKLSsJCVNUT1JFX0FUVFJfSU5GT19pbl9leDsKLSsJCVNUT1JFX2xpc3RfY3JsX3N0YXJ0OwotKwkJRUNESF9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1RPUkVfbWV0aF9nZXRfbW9kaWZ5X2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9tb2RpZnlfZnVuY3Rpb247Ci0rCQl2MmlfQVNOMV9CSVRfU1RSSU5HOwotKwkJU1RPUkVfc3RvcmVfY2VydGlmaWNhdGU7Ci0rCQlPQkpfYnNlYXJjaF9leDsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZWZhdWx0OwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9zaGExc3RyOwotKwkJQk5fR0YybV9tb2RfaW52OwotKwkJQk5fR0YybV9tb2RfZXhwOwotKwkJU1RPUkVfbW9kaWZ5X3B1YmxpY19rZXk7Ci0rCQlTVE9SRV9tZXRoX2dldF9saXN0X3N0YXJ0X2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOwotKwkJRUNfR1JPVVBfZ2V0MF9zZWVkOwotKwkJU1RPUkVfc3RvcmVfYXJiaXRyYXJ5OwotKwkJU1RPUkVfbWV0aF9zZXRfdW5sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF91bmxvY2tfc3RvcmVfZnVuY3Rpb247Ci0rCQlCTl9HRjJtX21vZF9kaXZfYXJyOwotKwkJRU5HSU5FX3NldF9FQ0RTQTsKLSsJCVNUT1JFX2NyZWF0ZV9tZXRob2Q7Ci0rCQlFQ1BLUGFyYW1ldGVyc19wcmludDsKLSsJCUVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5OwotKwkJUEVNX3dyaXRlX0VDX1BVQktFWTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDE7Ci0rCQlFQ0RIX3NldF9tZXRob2Q7Ci0rCQl2MmlfR0VORVJBTF9OQU1FX2V4OwotKwkJRUNESF9zZXRfZXhfZGF0YTsKLSsJCVNUT1JFX2dlbmVyYXRlX2tleTsKLSsJCUJOX25pc3RfbW9kXzUyMTsKLSsJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF9sZXZlbDsKLSsJCUVDX0dST1VQX3NldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07Ci0rCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udl9mb3JtOwotKwkJUEVNX3JlYWRfRUNfUFVCS0VZOwotKwkJaTJkX0VDRFNBX1NJRzsKLSsJCUVDRFNBX09wZW5TU0w7Ci0rCQlTVE9SRV9kZWxldGVfY3JsOwotKwkJRUNfS0VZX2dldF9lbmNfZmxhZ3M7Ci0rCQlBU04xX2NvbnN0X2NoZWNrX2luZmluaXRlX2VuZDsKLSsJCUVWUF9QS0VZX2RlbGV0ZV9hdHRyOwotKwkJRUNEU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNfR0YybTsKLSsJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0YybTsKLSsJCUVDX0dST1VQX2NtcDsKLSsJCVNUT1JFX3Jldm9rZV9jZXJ0aWZpY2F0ZTsKLSsJCUJOX2dldDBfbmlzdF9wcmltZV8yNTY7Ci0rCQlTVE9SRV9tZXRoX2dldF9kZWxldGVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2RlbGV0ZV9mdW5jdGlvbjsKLSsJCVNIQTIyNF9Jbml0OwotKwkJUEVNX3JlYWRfRUNQcml2YXRlS2V5OwotKwkJU0hBNTEyX0luaXQ7Ci0rCQlTVE9SRV9wYXJzZV9hdHRyc19lbmRwOwotKwkJQk5fc2V0X25lZ2F0aXZlOwotKwkJRVJSX2xvYWRfRUNEU0Ffc3RyaW5nczsKLSsJCUVDX0dST1VQX2dldF9iYXNpc190eXBlOwotKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X25leHQ7Ci0rCQlpMnZfQVNOMV9CSVRfU1RSSU5HOwotKwkJU1RPUkVfT0JKRUNUX2ZyZWU7Ci0rCQlCTl9uaXN0X21vZF8zODQ7Ci0rCQlpMmRfWDUwOV9DRVJUX1BBSVI7Ci0rCQlQRU1fd3JpdGVfRUNQS1BhcmFtZXRlcnM7Ci0rCQlFQ0RIX2NvbXB1dGVfa2V5OwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfc2hhMXN0cjsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNESDsKLSsJCXBxdWV1ZV9wb3A7Ci0rCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9jc3RyOwotKwkJUE9MSUNZX0NPTlNUUkFJTlRTX2l0OwotKwkJU1RPUkVfZ2V0X2V4X25ld19pbmRleDsKLSsJCUVWUF9QS0VZX2dldF9hdHRyX2J5X09CSjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDBfcG9saWN5OwotKwkJQk5fR0YybV9tb2Rfc29sdmVfcXVhZDsKLSsJCVNIQTI1NjsKLSsJCWkyZF9FQ1ByaXZhdGVLZXlfZnA7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2dldDBfdXNlcl9wb2xpY2llczsKLSsJCVg1MDlfcGN5X3RyZWVfZ2V0MF91c3JfcG9saWNpZXM7Ci0rCQlPUEVOU1NMX0RJUl9yZWFkOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9FQ0RTQTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2xvb2t1cDsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGMm07Ci0rCQlFQ19HUk9VUF9kdXA7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRUNEU0E7Ci0rCQlFQ19LRVlfbmV3OwotKwkJU0hBMjU2X1RyYW5zZm9ybTsKLSsJCUVDX0tFWV9zZXRfZW5jX2ZsYWdzOwotKwkJRUNEU0FfdmVyaWZ5OwotKwkJRUNfUE9JTlRfcG9pbnQyaGV4OwotKwkJRU5HSU5FX2dldF9TVE9SRTsKLSsJCVNIQTUxMjsKLSsJCVNUT1JFX2dldF9jZXJ0aWZpY2F0ZTsKLSsJCUVDRFNBX2RvX3NpZ25fZXg7Ci0rCQlFQ0RTQV9kb192ZXJpZnk7Ci0rCQlkMmlfRUNQcml2YXRlS2V5X2ZwOwotKwkJU1RPUkVfZGVsZXRlX2NlcnRpZmljYXRlOwotKwkJU0hBNTEyX1RyYW5zZm9ybTsKLSsJCVg1MDlfU1RPUkVfc2V0MV9wYXJhbTsKLSsJCVNUT1JFX21ldGhvZF9nZXRfY3RybF9mdW5jdGlvbjsKLSsJCVNUT1JFX2ZyZWU7Ci0rCQlQRU1fd3JpdGVfRUNQcml2YXRlS2V5OwotKwkJU1RPUkVfbWV0aF9nZXRfdW5sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF91bmxvY2tfc3RvcmVfZnVuY3Rpb247Ci0rCQlTVE9SRV9nZXRfZXhfZGF0YTsKLSsJCUVDX0tFWV9zZXRfcHVibGljX2tleTsKLSsJCVBFTV9yZWFkX0VDUEtQYXJhbWV0ZXJzOwotKwkJWDUwOV9DRVJUX1BBSVJfbmV3OwotKwkJRU5HSU5FX3JlZ2lzdGVyX1NUT1JFOwotKwkJUlNBX2dlbmVyYXRlX2tleV9leDsKLSsJCURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4OwotKwkJRUNQYXJhbWV0ZXJzX3ByaW50X2ZwOwotKwkJWDUwOVYzX05BTUVfZnJvbV9zZWN0aW9uOwotKwkJRVZQX1BLRVlfYWRkMV9hdHRyOwotKwkJU1RPUkVfbW9kaWZ5X2NybDsKLSsJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfc3RhcnQ7Ci0rCQlQT0xJQ1lfTUFQUElOR1NfaXQ7Ci0rCQlHRU5FUkFMX1NVQlRSRUVfaXQ7Ci0rCQlFQ19HUk9VUF9nZXRfY3VydmVfbmFtZTsKLSsJCVBFTV93cml0ZV9YNTA5X0NFUlRfUEFJUjsKLSsJCUJJT19kdW1wX2luZGVudF9jYjsKLSsJCWQyaV9YNTA5X0NFUlRfUEFJUjsKLSsJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfZW5kcDsKLSsJCWFzbjFfY29uc3RfRmluaXNoOwotKwkJaTJkX0VDX1BVQktFWV9mcDsKLSsJCUJOX25pc3RfbW9kXzI1NjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDBfdGFibGU7Ci0rCQlwcXVldWVfZnJlZTsKLSsJCUJOX0JMSU5ESU5HX2NyZWF0ZV9wYXJhbTsKLSsJCUVDRFNBX3NpemU7Ci0rCQlkMmlfRUNfUFVCS0VZX2JpbzsKLSsJCUJOX2dldDBfbmlzdF9wcmltZV81MjE7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X3NoYTFzdHI7Ci0rCQlCTl9nZW5lcmF0ZV9wcmltZV9leDsKLSsJCUVDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1lOwotKwkJU0hBMjU2X0ZpbmFsOwotKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKLSsJCVBFTV9yZWFkX2Jpb19FQ1ByaXZhdGVLZXk7Ci0rCQlTVE9SRV9tZXRoX2dldF9jbGVhbnVwX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9jbGVhbnVwX2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9FQ0RIOwotKwkJZDJpX0VDRFNBX1NJRzsKLSsJCUJOX2lzX3ByaW1lX2Zhc3R0ZXN0X2V4OwotKwkJRUNEU0Ffc2lnbjsKLSsJCVg1MDlfcG9saWN5X2NoZWNrOwotKwkJRVZQX1BLRVlfZ2V0X2F0dHJfYnlfTklEOwotKwkJU1RPUkVfc2V0X2V4X2RhdGE7Ci0rCQlFTkdJTkVfZ2V0X0VDRFNBOwotKwkJRVZQX2VjZHNhOwotKwkJQk5fQkxJTkRJTkdfZ2V0X2ZsYWdzOwotKwkJUEtDUzEyX2FkZF9jZXJ0OwotKwkJU1RPUkVfT0JKRUNUX25ldzsKLSsJCUVSUl9sb2FkX0VDREhfc3RyaW5nczsKLSsJCUVDX0tFWV9kdXA7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9yYW5kX2tleTsKLSsJCUVDRFNBX3NldF9tZXRob2Q7Ci0rCQlhMmlfSVBBRERSRVNTX05DOwotKwkJZDJpX0VDUGFyYW1ldGVyczsKLSsJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kOwotKwkJU1RPUkVfZ2V0X2NybDsKLSsJCVg1MDlfUE9MSUNZX05PREVfcHJpbnQ7Ci0rCQlTSEEzODRfSW5pdDsKLSsJCUVDX0dGMm1fc2ltcGxlX21ldGhvZDsKLSsJCUVDRFNBX3NldF9leF9kYXRhOwotKwkJU0hBMzg0X0ZpbmFsOwotKwkJUEtDUzdfc2V0X2RpZ2VzdDsKLSsJCUVDX0tFWV9wcmludDsKLSsJCVNUT1JFX21ldGhfc2V0X2xvY2tfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2xvY2tfc3RvcmVfZnVuY3Rpb247Ci0rCQlFQ0RTQV9nZXRfZXhfbmV3X2luZGV4OwotKwkJU0hBMzg0OwotKwkJUE9MSUNZX01BUFBJTkdfbmV3OwotKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9lbmRwOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wb2xpY3lfdHJlZTsKLSsJCUVDX0dST1VQX3NldF9hc24xX2ZsYWc7Ci0rCQlFQ19LRVlfY2hlY2tfa2V5OwotKwkJZDJpX0VDX1BVQktFWV9mcDsKLSsJCVBLQ1M3X3NldDBfdHlwZV9vdGhlcjsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X0NFUlRfUEFJUjsKLSsJCXBxdWV1ZV9uZXh0OwotKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9lbmRfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfZW5kX2Z1bmN0aW9uOwotKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X09CSjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF90aW1lOwotKwkJcHF1ZXVlX25ldzsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RIOwotKwkJU1RPUkVfbmV3X21ldGhvZDsKLSsJCVBLQ1MxMl9hZGRfa2V5OwotKwkJRFNPX21lcmdlOwotKwkJRUNfUE9JTlRfaGV4MnBvaW50OwotKwkJQklPX2R1bXBfY2I7Ci0rCQlTSEEyNTZfVXBkYXRlOwotKwkJcHF1ZXVlX2luc2VydDsKLSsJCXBpdGVtX2ZyZWU7Ci0rCQlCTl9HRjJtX21vZF9pbnZfYXJyOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNEU0E7Ci0rCQlCTl9CTElORElOR19zZXRfdGhyZWFkX2lkOwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfODE5MjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2NsZWFyX2ZsYWdzOwotKwkJZ2V0X3JmYzI0MDlfcHJpbWVfMTAyNDsKLSsJCURIX2NoZWNrX3B1Yl9rZXk7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV8yMDQ4OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfNjE0NDsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzE1MzY7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV8zMDcyOwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfNDA5NjsKLSsJCWdldF9yZmMyNDA5X3ByaW1lXzc2ODsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9mbGFnczsKLSsJCUVWUF9DSVBIRVJfQ1RYX25ldzsKLSsJCUVWUF9DSVBIRVJfQ1RYX2ZyZWU7Ci0rCQlDYW1lbGxpYV9jYmNfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYjEyOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY2ZiMV9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY2ZiOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY3RyMTI4X2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9jZmJyX2VuY3J5cHRfYmxvY2s7Ci0rCQlDYW1lbGxpYV9kZWNyeXB0OwotKwkJQ2FtZWxsaWFfZWNiX2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfb2ZiMTI4X2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9zZXRfa2V5OwotKwkJRVZQX2NhbWVsbGlhXzEyOF9jYmM7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjEyODsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiMTsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiODsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfZWNiOwotKwkJRVZQX2NhbWVsbGlhXzEyOF9vZmI7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX2NiYzsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTI4OwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmIxOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmI4OwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9lY2I7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX29mYjsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfY2JjOwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxMjg7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjE7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjg7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2VjYjsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfb2ZiOwotKwkJYTJpX2lwYWRkOwotKwkJQVNJZGVudGlmaWVyc19mcmVlOwotKwkJaTJkX0FTSWRPclJhbmdlOwotKwkJRVZQX0NJUEhFUl9ibG9ja19zaXplOwotKwkJdjNfYXNpZF9pc19jYW5vbmljYWw7Ci0rCQlJUEFkZHJlc3NDaG9pY2VfZnJlZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9hcHBfZGF0YTsKLSsJCUJJT19zZXRfY2FsbGJhY2tfYXJnOwotKwkJdjNfYWRkcl9hZGRfcHJlZml4OwotKwkJSVBBZGRyZXNzT3JSYW5nZV9pdDsKLSsJCUJJT19zZXRfZmxhZ3M7Ci0rCQlBU0lkZW50aWZpZXJzX2l0OwotKwkJdjNfYWRkcl9nZXRfcmFuZ2U7Ci0rCQlCSU9fbWV0aG9kX3R5cGU7Ci0rCQl2M19hZGRyX2luaGVyaXRzOwotKwkJSVBBZGRyZXNzQ2hvaWNlX2l0OwotKwkJQUVTX2lnZV9lbmNyeXB0OwotKwkJdjNfYWRkcl9hZGRfcmFuZ2U7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9uaWQ7Ci0rCQlkMmlfQVNSYW5nZTsKLSsJCXYzX2FkZHJfYWRkX2luaGVyaXQ7Ci0rCQl2M19hc2lkX2FkZF9pZF9vcl9yYW5nZTsKLSsJCXYzX2FkZHJfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OwotKwkJRVZQX0NJUEhFUl9pdl9sZW5ndGg7Ci0rCQlFVlBfTURfdHlwZTsKLSsJCXYzX2FzaWRfY2Fub25pemU7Ci0rCQlJUEFkZHJlc3NSYW5nZV9mcmVlOwotKwkJdjNfYXNpZF9hZGRfaW5oZXJpdDsKLSsJCUVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGg7Ci0rCQlJUEFkZHJlc3NSYW5nZV9uZXc7Ci0rCQlBU0lkT3JSYW5nZV9uZXc7Ci0rCQlFVlBfTURfc2l6ZTsKLSsJCUVWUF9NRF9DVFhfdGVzdF9mbGFnczsKLSsJCUJJT19jbGVhcl9mbGFnczsKLSsJCWkyZF9BU1JhbmdlOwotKwkJSVBBZGRyZXNzUmFuZ2VfaXQ7Ci0rCQlJUEFkZHJlc3NDaG9pY2VfbmV3OwotKwkJQVNJZGVudGlmaWVyQ2hvaWNlX25ldzsKLSsJCUFTUmFuZ2VfZnJlZTsKLSsJCUVWUF9NRF9wa2V5X3R5cGU7Ci0rCQlFVlBfTURfQ1RYX2NsZWFyX2ZsYWdzOwotKwkJSVBBZGRyZXNzRmFtaWx5X2ZyZWU7Ci0rCQlpMmRfSVBBZGRyZXNzRmFtaWx5OwotKwkJSVBBZGRyZXNzT3JSYW5nZV9uZXc7Ci0rCQlFVlBfQ0lQSEVSX2ZsYWdzOwotKwkJdjNfYXNpZF92YWxpZGF0ZV9yZXNvdXJjZV9zZXQ7Ci0rCQlkMmlfSVBBZGRyZXNzUmFuZ2U7Ci0rCQlBRVNfYmlfaWdlX2VuY3J5cHQ7Ci0rCQlCSU9fZ2V0X2NhbGxiYWNrOwotKwkJSVBBZGRyZXNzT3JSYW5nZV9mcmVlOwotKwkJdjNfYWRkcl9zdWJzZXQ7Ci0rCQlkMmlfSVBBZGRyZXNzRmFtaWx5OwotKwkJdjNfYXNpZF9zdWJzZXQ7Ci0rCQlCSU9fdGVzdF9mbGFnczsKLSsJCWkyZF9BU0lkZW50aWZpZXJDaG9pY2U7Ci0rCQlBU1JhbmdlX2l0OwotKwkJZDJpX0FTSWRlbnRpZmllcnM7Ci0rCQlBU1JhbmdlX25ldzsKLSsJCWQyaV9JUEFkZHJlc3NDaG9pY2U7Ci0rCQl2M19hZGRyX2dldF9hZmk7Ci0rCQlFVlBfQ0lQSEVSX2tleV9sZW5ndGg7Ci0rCQlFVlBfQ2lwaGVyOwotKwkJaTJkX0lQQWRkcmVzc09yUmFuZ2U7Ci0rCQlBU0lkT3JSYW5nZV9pdDsKLSsJCUVWUF9DSVBIRVJfbmlkOwotKwkJaTJkX0lQQWRkcmVzc0Nob2ljZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2Jsb2NrX3NpemU7Ci0rCQlBU0lkZW50aWZpZXJzX25ldzsKLSsJCXYzX2FkZHJfdmFsaWRhdGVfcGF0aDsKLSsJCUlQQWRkcmVzc0ZhbWlseV9uZXc7Ci0rCQlFVlBfTURfQ1RYX3NldF9mbGFnczsKLSsJCXYzX2FkZHJfaXNfY2Fub25pY2FsOwotKwkJaTJkX0lQQWRkcmVzc1JhbmdlOwotKwkJSVBBZGRyZXNzRmFtaWx5X2l0OwotKwkJdjNfYXNpZF9pbmhlcml0czsKLSsJCUVWUF9DSVBIRVJfQ1RYX2NpcGhlcjsKLSsJCUVWUF9DSVBIRVJfQ1RYX2dldF9hcHBfZGF0YTsKLSsJCUVWUF9NRF9ibG9ja19zaXplOwotKwkJRVZQX0NJUEhFUl9DVFhfZmxhZ3M7Ci0rCQl2M19hc2lkX3ZhbGlkYXRlX3BhdGg7Ci0rCQlkMmlfSVBBZGRyZXNzT3JSYW5nZTsKLSsJCXYzX2FkZHJfY2Fub25pemU7Ci0rCQlBU0lkZW50aWZpZXJDaG9pY2VfaXQ7Ci0rCQlFVlBfTURfQ1RYX21kOwotKwkJZDJpX0FTSWRlbnRpZmllckNob2ljZTsKLSsJCUJJT19tZXRob2RfbmFtZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2l2X2xlbmd0aDsKLSsJCUFTSWRPclJhbmdlX2ZyZWU7Ci0rCQlBU0lkZW50aWZpZXJDaG9pY2VfZnJlZTsKLSsJCUJJT19nZXRfY2FsbGJhY2tfYXJnOwotKwkJQklPX3NldF9jYWxsYmFjazsKLSsJCWQyaV9BU0lkT3JSYW5nZTsKLSsJCWkyZF9BU0lkZW50aWZpZXJzOwotKwkJU0VFRF9kZWNyeXB0OwotKwkJU0VFRF9lbmNyeXB0OwotKwkJU0VFRF9jYmNfZW5jcnlwdDsKLSsJCUVWUF9zZWVkX29mYjsKLSsJCVNFRURfY2ZiMTI4X2VuY3J5cHQ7Ci0rCQlTRUVEX29mYjEyOF9lbmNyeXB0OwotKwkJRVZQX3NlZWRfY2JjOwotKwkJU0VFRF9lY2JfZW5jcnlwdDsKLSsJCUVWUF9zZWVkX2VjYjsKLSsJCVNFRURfc2V0X2tleTsKLSsJCUVWUF9zZWVkX2NmYjEyODsKLSsJCVg1MDlfRVhURU5TSU9OU19pdDsKLSsJCVg1MDlfZ2V0MV9vY3NwOwotKwkJT0NTUF9SRVFfQ1RYX2ZyZWU7Ci0rCQlpMmRfWDUwOV9FWFRFTlNJT05TOwotKwkJT0NTUF9zZW5kcmVxX25iaW87Ci0rCQlPQ1NQX3NlbmRyZXFfbmV3OwotKwkJZDJpX1g1MDlfRVhURU5TSU9OUzsKLSsJCVg1MDlfQUxHT1JTX2l0OwotKwkJWDUwOV9BTEdPUl9nZXQwOwotKwkJWDUwOV9BTEdPUl9zZXQwOwotKwkJQUVTX3Vud3JhcF9rZXk7Ci0rCQlBRVNfd3JhcF9rZXk7Ci0rCQlYNTA5YXRfZ2V0MF9kYXRhX2J5X09CSjsKLSsJCUFTTjFfVFlQRV9zZXQxOwotKwkJQVNOMV9TVFJJTkdfc2V0MDsKLSsJCWkyZF9YNTA5X0FMR09SUzsKLSsJCUJJT19mX3psaWI7Ci0rCQlDT01QX3psaWJfY2xlYW51cDsKLSsJCWQyaV9YNTA5X0FMR09SUzsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9mcmVlOwotKwkJUEVNX3dyaXRlX0NNUzsKLSsJCUNNU19hZGQwX0NlcnRpZmljYXRlQ2hvaWNlczsKLSsJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfT0JKOwotKwkJRVJSX2xvYWRfQ01TX3N0cmluZ3M7Ci0rCQlDTVNfc2lnbl9yZWNlaXB0OwotKwkJaTJkX0NNU19Db250ZW50SW5mbzsKLSsJCUNNU19zaWduZWRfZGVsZXRlX2F0dHI7Ci0rCQlkMmlfQ01TX2JpbzsKLSsJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfdmVyaWZ5OwotKwkJU01JTUVfcmVhZF9DTVM7Ci0rCQlDTVNfZGVjcnlwdF9zZXQxX2tleTsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfYWxnczsKLSsJCUNNU19hZGQxX2NlcnQ7Ci0rCQlDTVNfc2V0X2RldGFjaGVkOwotKwkJQ01TX2VuY3J5cHQ7Ci0rCQlDTVNfRW52ZWxvcGVkRGF0YV9jcmVhdGU7Ci0rCQlDTVNfdW5jb21wcmVzczsKLSsJCUNNU19hZGQwX2NybDsKLSsJCUNNU19TaWduZXJJbmZvX3ZlcmlmeV9jb250ZW50OwotKwkJQ01TX3Vuc2lnbmVkX2dldDBfZGF0YV9ieV9PQko7Ci0rCQlQRU1fd3JpdGVfYmlvX0NNUzsKLSsJCUNNU191bnNpZ25lZF9nZXRfYXR0cjsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfY2VydF9jbXA7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2dldDBfYWxnczsKLSsJCUNNU19SZWNpcEluZm9fa3RyaV9nZXQwX2FsZ3M7Ci0rCQlDTVNfQ29udGVudEluZm9fZnJlZTsKLSsJCUNNU19maW5hbDsKLSsJCUNNU19hZGRfc2ltcGxlX3NtaW1lY2FwOwotKwkJQ01TX1NpZ25lckluZm9fdmVyaWZ5OwotKwkJQ01TX2RhdGE7Ci0rCQlDTVNfQ29udGVudEluZm9faXQ7Ci0rCQlkMmlfQ01TX1JlY2VpcHRSZXF1ZXN0OwotKwkJQ01TX2NvbXByZXNzOwotKwkJQ01TX2RpZ2VzdF9jcmVhdGU7Ci0rCQlDTVNfU2lnbmVySW5mb19jZXJ0X2NtcDsKLSsJCUNNU19TaWduZXJJbmZvX3NpZ247Ci0rCQlDTVNfZGF0YV9jcmVhdGU7Ci0rCQlpMmRfQ01TX2JpbzsKLSsJCUNNU19FbmNyeXB0ZWREYXRhX3NldDFfa2V5OwotKwkJQ01TX2RlY3J5cHQ7Ci0rCQlpbnRfc21pbWVfd3JpdGVfQVNOMTsKLSsJCUNNU191bnNpZ25lZF9kZWxldGVfYXR0cjsKLSsJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9jb3VudDsKLSsJCUNNU19hZGRfc21pbWVjYXA7Ci0rCQlQRU1fcmVhZF9DTVM7Ci0rCQlDTVNfc2lnbmVkX2dldF9hdHRyX2J5X09CSjsKLSsJCWQyaV9DTVNfQ29udGVudEluZm87Ci0rCQlDTVNfYWRkX3N0YW5kYXJkX3NtaW1lY2FwOwotKwkJQ01TX0NvbnRlbnRJbmZvX25ldzsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3R5cGU7Ci0rCQlDTVNfZ2V0MF90eXBlOwotKwkJQ01TX2lzX2RldGFjaGVkOwotKwkJQ01TX3NpZ247Ci0rCQlDTVNfc2lnbmVkX2FkZDFfYXR0cjsKLSsJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9ieV9PQko7Ci0rCQlTTUlNRV93cml0ZV9DTVM7Ci0rCQlDTVNfRW5jcnlwdGVkRGF0YV9kZWNyeXB0OwotKwkJQ01TX2dldDBfUmVjaXBpZW50SW5mb3M7Ci0rCQlDTVNfYWRkMF9SZXZvY2F0aW9uSW5mb0Nob2ljZTsKLSsJCUNNU19kZWNyeXB0X3NldDFfcGtleTsKLSsJCUNNU19TaWduZXJJbmZvX3NldDFfc2lnbmVyX2NlcnQ7Ci0rCQlDTVNfZ2V0MF9zaWduZXJzOwotKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2dldDBfdmFsdWVzOwotKwkJQ01TX3NpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOwotKwkJQ01TX2dldDBfU2lnbmVySW5mb3M7Ci0rCQlDTVNfYWRkMF9jZXJ0OwotKwkJQ01TX0VuY3J5cHRlZERhdGFfZW5jcnlwdDsKLSsJCUNNU19kaWdlc3RfdmVyaWZ5OwotKwkJQ01TX3NldDFfc2lnbmVyc19jZXJ0czsKLSsJCUNNU19zaWduZWRfZ2V0X2F0dHI7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19zZXQwX2tleTsKLSsJCUNNU19TaWduZWREYXRhX2luaXQ7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9nZXQwX2lkOwotKwkJQ01TX3ZlcmlmeV9yZWNlaXB0OwotKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2l0OwotKwkJUEVNX3JlYWRfYmlvX0NNUzsKLSsJCUNNU19nZXQxX2NybHM7Ci0rCQlDTVNfYWRkMF9yZWNpcGllbnRfa2V5OwotKwkJU01JTUVfcmVhZF9BU04xOwotKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X25ldzsKLSsJCUNNU19nZXQwX2NvbnRlbnQ7Ci0rCQlDTVNfZ2V0MV9SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2tla3JpX2lkX2NtcDsKLSsJCUNNU19hZGQxX1JlY2VpcHRSZXF1ZXN0OwotKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduZXJfaWQ7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKLSsJCUNNU191bnNpZ25lZF9hZGQxX2F0dHI7Ci0rCQlDTVNfc2lnbmVkX2dldF9hdHRyX2J5X05JRDsKLSsJCUNNU19nZXQxX2NlcnRzOwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfTklEOwotKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlDTVNfZGF0YUZpbmFsOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX3NpZ25lcl9pZDsKLSsJCUNNU19SZWNpcEluZm9fa3RyaV9nZXQwX3NpZ3JfaWQ7Ci0rCQlpMmRfQ01TX1JlY2VpcHRSZXF1ZXN0OwotKwkJQ01TX2FkZDFfcmVjaXBpZW50X2NlcnQ7Ci0rCQlDTVNfZGF0YUluaXQ7Ci0rCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19kZWNyeXB0OwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9jb3VudDsKLSsJCUNNU19nZXQwX2VDb250ZW50VHlwZTsKLSsJCUNNU19zZXQxX2VDb250ZW50VHlwZTsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9jcmVhdGUwOwotKwkJQ01TX2FkZDFfc2lnbmVyOwotKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9wa2V5OwotKwkJRU5HSU5FX3NldF9sb2FkX3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfbGRfc3NsX2NsbnRfY2VydF9mbjsKLSsJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9zc2xfY2xpZW50X2NlcnRfZm47Ci0rCQlFTkdJTkVfbG9hZF9zc2xfY2xpZW50X2NlcnQ7Ci0rCQlFTkdJTkVfbG9hZF9jYXBpOwotKwkJT1BFTlNTTF9pc3NlcnZpY2U7Ci0rCQlGSVBTX2RzYV9zaWdfZGVjb2RlOwotKwkJRVZQX0NJUEhFUl9DVFhfY2xlYXJfZmxhZ3M7Ci0rCQlGSVBTX3JhbmRfc3RhdHVzOwotKwkJRklQU19yYW5kX3NldF9rZXk7Ci0rCQlDUllQVE9fc2V0X21lbV9pbmZvX2Z1bmN0aW9uczsKLSsJCVJTQV9YOTMxX2dlbmVyYXRlX2tleV9leDsKLSsJCWludF9FUlJfc2V0X3N0YXRlX2Z1bmM7Ci0rCQlpbnRfRVZQX01EX3NldF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJaW50X0NSWVBUT19zZXRfZG9fZHlubG9ja19jYWxsYmFjazsKLSsJCUZJUFNfcm5nX3N0aWNrOwotKwkJRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdzOwotKwkJQk5fWDkzMV9nZW5lcmF0ZV9wcmltZV9leDsKLSsJCUZJUFNfc2VsZnRlc3RfY2hlY2s7Ci0rCQlGSVBTX3JhbmRfc2V0X2R0OwotKwkJQ1JZUFRPX2RiZ19wb3BfaW5mbzsKLSsJCUZJUFNfZHNhX2ZyZWU7Ci0rCQlSU0FfWDkzMV9kZXJpdmVfZXg7Ci0rCQlGSVBTX3JzYV9uZXc7Ci0rCQlGSVBTX3JhbmRfYnl0ZXM7Ci0rCQlmaXBzX2NpcGhlcl90ZXN0OwotKwkJRVZQX0NJUEhFUl9DVFhfdGVzdF9mbGFnczsKLSsJCUNSWVBUT19tYWxsb2NfZGVidWdfaW5pdDsKLSsJCUNSWVBUT19kYmdfcHVzaF9pbmZvOwotKwkJRklQU19jb3JydXB0X3JzYV9rZXlnZW47Ci0rCQlGSVBTX2RoX25ldzsKLSsJCUZJUFNfY29ycnVwdF9kc2Ffa2V5Z2VuOwotKwkJRklQU19kaF9mcmVlOwotKwkJZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0OwotKwkJRVZQX2FkZF9hbGdfbW9kdWxlOwotKwkJaW50X1JBTkRfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJaW50X0VWUF9DSVBIRVJfc2V0X2VuZ2luZV9jYWxsYmFja3M7Ci0rCQlpbnRfRVZQX01EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCUZJUFNfcmFuZF90ZXN0X21vZGU7Ci0rCQlGSVBTX3JhbmRfcmVzZXQ7Ci0rCQlGSVBTX2RzYV9uZXc7Ci0rCQlpbnRfUkFORF9zZXRfY2FsbGJhY2tzOwotKwkJQk5fWDkzMV9kZXJpdmVfcHJpbWVfZXg7Ci0rCQlpbnRfRVJSX2xpYl9pbml0OwotKwkJaW50X0VWUF9DSVBIRVJfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJRklQU19yc2FfZnJlZTsKLSsJCUZJUFNfZHNhX3NpZ19lbmNvZGU7Ci0rCQlDUllQVE9fZGJnX3JlbW92ZV9hbGxfaW5mbzsKLSsJCU9QRU5TU0xfaW5pdDsKLSsJCUNSWVBUT19zdHJkdXA7Ci0rCQlKUEFLRV9TVEVQM0FfcHJvY2VzczsKLSsJCUpQQUtFX1NURVAxX3JlbGVhc2U7Ci0rCQlKUEFLRV9nZXRfc2hhcmVkX2tleTsKLSsJCUpQQUtFX1NURVAzQl9pbml0OwotKwkJSlBBS0VfU1RFUDFfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9TVEVQMV9pbml0OwotKwkJSlBBS0VfU1RFUDNCX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQMl9nZW5lcmF0ZTsKLSsJCUpQQUtFX0NUWF9uZXc7Ci0rCQlKUEFLRV9DVFhfZnJlZTsKLSsJCUpQQUtFX1NURVAzQl9yZWxlYXNlOwotKwkJSlBBS0VfU1RFUDNBX3JlbGVhc2U7Ci0rCQlKUEFLRV9TVEVQMl9wcm9jZXNzOwotKwkJSlBBS0VfU1RFUDNCX2dlbmVyYXRlOwotKwkJSlBBS0VfU1RFUDFfcHJvY2VzczsKLSsJCUpQQUtFX1NURVAzQV9nZW5lcmF0ZTsKLSsJCUpQQUtFX1NURVAyX3JlbGVhc2U7Ci0rCQlKUEFLRV9TVEVQM0FfaW5pdDsKLSsJCUVSUl9sb2FkX0pQQUtFX3N0cmluZ3M7Ci0rCQlKUEFLRV9TVEVQMl9pbml0OwotKwkJcHF1ZXVlX3NpemU7Ci0rCQlpMmRfVFNfQUNDVVJBQ1k7Ci0rCQlpMmRfVFNfTVNHX0lNUFJJTlRfZnA7Ci0rCQlpMmRfVFNfTVNHX0lNUFJJTlQ7Ci0rCQlFVlBfUEtFWV9wcmludF9wdWJsaWM7Ci0rCQlFVlBfUEtFWV9DVFhfbmV3OwotKwkJaTJkX1RTX1RTVF9JTkZPOwotKwkJRVZQX1BLRVlfYXNuMV9maW5kOwotKwkJRFNPX01FVEhPRF9iZW9zOwotKwkJVFNfQ09ORl9sb2FkX2NlcnQ7Ci0rCQlUU19SRVFfZ2V0X2V4dDsKLSsJCUVWUF9QS0VZX3NpZ25faW5pdDsKLSsJCUFTTjFfaXRlbV9wcmludDsKLSsJCVRTX1RTVF9JTkZPX3NldF9ub25jZTsKLSsJCVRTX1JFU1BfZHVwOwotKwkJRU5HSU5FX3JlZ2lzdGVyX3BrZXlfbWV0aHM7Ci0rCQlFVlBfUEtFWV9hc24xX2FkZDA7Ci0rCQlQS0NTN19hZGQwX2F0dHJpYl9zaWduaW5nX3RpbWU7Ci0rCQlpMmRfVFNfVFNUX0lORk9fZnA7Ci0rCQlCSU9fYXNuMV9nZXRfcHJlZml4OwotKwkJVFNfVFNUX0lORk9fc2V0X3RpbWU7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9kZWNyeXB0OwotKwkJRVZQX1BLRVlfc2V0X3R5cGVfc3RyOwotKwkJRVZQX1BLRVlfQ1RYX2dldF9rZXlnZW5faW5mbzsKLSsJCVRTX1JFUV9zZXRfcG9saWN5X2lkOwotKwkJZDJpX1RTX1JFU1BfZnA7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZ2luZTsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfZW5nOwotKwkJV0hJUkxQT09MX0luaXQ7Ci0rCQlUU19SRVNQX3NldF9zdGF0dXNfaW5mbzsKLSsJCUVWUF9QS0VZX2tleWdlbjsKLSsJCUVWUF9EaWdlc3RTaWduSW5pdDsKLSsJCVRTX0FDQ1VSQUNZX3NldF9taWxsaXM7Ci0rCQlUU19SRVFfZHVwOwotKwkJR0VORVJBTF9OQU1FX2R1cDsKLSsJCUFTTjFfU0VRVUVOQ0VfQU5ZX2l0OwotKwkJV0hJUkxQT09MOwotKwkJWDUwOV9TVE9SRV9nZXQxX2NybHM7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoOwotKwkJRVZQX1BLRVlfYXNuMV9uZXc7Ci0rCQlCSU9fbmV3X05ERUY7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aDsKLSsJCVRTX01TR19JTVBSSU5UX3NldF9hbGdvOwotKwkJaTJkX1RTX1RTVF9JTkZPX2JpbzsKLSsJCVRTX1RTVF9JTkZPX3NldF9vcmRlcmluZzsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfT0JKOwotKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9wb2ludGVyOwotKwkJVFNfQ09ORl9nZXRfdHNhX3NlY3Rpb247Ci0rCQlTTUlNRV93cml0ZV9BU04xOwotKwkJVFNfUkVTUF9DVFhfc2V0X3NpZ25lcl9rZXk7Ci0rCQlFVlBfUEtFWV9lbmNyeXB0X29sZDsKLSsJCUVWUF9QS0VZX2VuY3J5cHRfaW5pdDsKLSsJCUNSWVBUT19USFJFQURJRF9jcHk7Ci0rCQlBU04xX1BDVFhfZ2V0X2NlcnRfZmxhZ3M7Ci0rCQlpMmRfRVNTX1NJR05JTkdfQ0VSVDsKLSsJCVRTX0NPTkZfbG9hZF9rZXk7Ci0rCQlpMmRfQVNOMV9TRVFVRU5DRV9BTlk7Ci0rCQlkMmlfVFNfTVNHX0lNUFJJTlRfYmlvOwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfcHVibGljOwotKwkJYjJpX1B1YmxpY0tleV9iaW87Ci0rCQlCSU9fYXNuMV9zZXRfcHJlZml4OwotKwkJRVZQX1BLRVlfbmV3X21hY19rZXk7Ci0rCQlCSU9fbmV3X0NNUzsKLSsJCUNSWVBUT19USFJFQURJRF9jbXA7Ci0rCQlUU19SRVFfZXh0X2ZyZWU7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9mcmVlOwotKwkJRVZQX1BLRVlfZ2V0MF9hc24xOwotKwkJZDJpX05FVFNDQVBFX1g1MDk7Ci0rCQlFVlBfUEtFWV92ZXJpZnlfcmVjb3Zlcl9pbml0OwotKwkJRVZQX1BLRVlfQ1RYX3NldF9kYXRhOwotKwkJRVZQX1BLRVlfa2V5Z2VuX2luaXQ7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc3RhdHVzX2luZm87Ci0rCQlUU19NU0dfSU1QUklOVF9nZXRfYWxnbzsKLSsJCVRTX1JFUV9wcmludF9iaW87Ci0rCQlFVlBfUEtFWV9DVFhfY3RybF9zdHI7Ci0rCQlFVlBfUEtFWV9nZXRfZGVmYXVsdF9kaWdlc3RfbmlkOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTN19zdHJlYW07Ci0rCQlUU19NU0dfSU1QUklOVF9wcmludF9iaW87Ci0rCQlCTl9hc2MyYm47Ci0rCQlUU19SRVFfZ2V0X3BvbGljeV9pZDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlFTkdJTkVfc2V0X2RlZl9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlkMmlfVFNfQUNDVVJBQ1k7Ci0rCQlEU09fZ2xvYmFsX2xvb2t1cDsKLSsJCVRTX0NPTkZfc2V0X3RzYV9uYW1lOwotKwkJaTJkX0FTTjFfU0VUX0FOWTsKLSsJCUVOR0lORV9sb2FkX2dvc3Q7Ci0rCQlXSElSTFBPT0xfQml0VXBkYXRlOwotKwkJQVNOMV9QQ1RYX2dldF9mbGFnczsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfTklEOwotKwkJVFNfUkVTUF9uZXc7Ci0rCQlFU1NfQ0VSVF9JRF9kdXA7Ci0rCQlUU19TVEFUVVNfSU5GT19kdXA7Ci0rCQlUU19SRVFfZGVsZXRlX2V4dDsKLSsJCUVWUF9EaWdlc3RWZXJpZnlGaW5hbDsKLSsJCUVWUF9QS0VZX3ByaW50X3BhcmFtczsKLSsJCWkyZF9DTVNfYmlvX3N0cmVhbTsKLSsJCVRTX1JFUV9nZXRfbXNnX2ltcHJpbnQ7Ci0rCQlPQkpfZmluZF9zaWdpZF9ieV9hbGdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X3NlcmlhbDsKLSsJCVRTX1JFUV9nZXRfbm9uY2U7Ci0rCQlYNTA5X1BVQktFWV9zZXQwX3BhcmFtOwotKwkJRVZQX1BLRVlfQ1RYX3NldDBfa2V5Z2VuX2luZm87Ci0rCQlESVNUX1BPSU5UX3NldF9kcG5hbWU7Ci0rCQlpMmRfSVNTVUlOR19ESVNUX1BPSU5UOwotKwkJQVNOMV9TRVRfQU5ZX2l0OwotKwkJRVZQX1BLRVlfQ1RYX2dldF9kYXRhOwotKwkJVFNfU1RBVFVTX0lORk9fcHJpbnRfYmlvOwotKwkJRVZQX1BLRVlfZGVyaXZlX2luaXQ7Ci0rCQlkMmlfVFNfVFNUX0lORk87Ci0rCQlFVlBfUEtFWV9hc24xX2FkZF9hbGlhczsKLSsJCWQyaV9UU19SRVNQX2JpbzsKLSsJCU9USEVSTkFNRV9jbXA7Ci0rCQlHRU5FUkFMX05BTUVfc2V0MF92YWx1ZTsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fZ2V0MF9hbGc7Ci0rCQlUU19SRVNQX0NUWF9uZXc7Ci0rCQlUU19SRVNQX3NldF90c3RfaW5mbzsKLSsJCVBLQ1M3X2ZpbmFsOwotKwkJRVZQX1BLRVlfYmFzZV9pZDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfY2VydDsKLSsJCVRTX1JFUV9zZXRfbXNnX2ltcHJpbnQ7Ci0rCQlFVlBfUEtFWV9DVFhfY3RybDsKLSsJCVRTX0NPTkZfc2V0X2RpZ2VzdHM7Ci0rCQlkMmlfVFNfTVNHX0lNUFJJTlQ7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9jdHJsOwotKwkJVFNfUkVRX2dldF9leHRfYnlfTklEOwotKwkJUEtDUzVfcGJlX3NldDBfYWxnb3I7Ci0rCQlCTl9CTElORElOR190aHJlYWRfaWQ7Ci0rCQlUU19BQ0NVUkFDWV9uZXc7Ci0rCQlYNTA5X0NSTF9NRVRIT0RfZnJlZTsKLSsJCUFTTjFfUENUWF9nZXRfbm1fZmxhZ3M7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9zaWduOwotKwkJQ1JZUFRPX1RIUkVBRElEX2N1cnJlbnQ7Ci0rCQlFVlBfUEtFWV9kZWNyeXB0X2luaXQ7Ci0rCQlORVRTQ0FQRV9YNTA5X2ZyZWU7Ci0rCQlpMmJfUFZLX2JpbzsKLSsJCUVWUF9QS0VZX3ByaW50X3ByaXZhdGU7Ci0rCQlHRU5FUkFMX05BTUVfZ2V0MF92YWx1ZTsKLSsJCWIyaV9QVktfYmlvOwotKwkJQVNOMV9VVENUSU1FX2FkajsKLSsJCVRTX1RTVF9JTkZPX25ldzsKLSsJCUVWUF9NRF9kb19hbGxfc29ydGVkOwotKwkJVFNfQ09ORl9zZXRfZGVmYXVsdF9lbmdpbmU7Ci0rCQlUU19BQ0NVUkFDWV9zZXRfc2Vjb25kczsKLSsJCVRTX1RTVF9JTkZPX2dldF90aW1lOwotKwkJUEtDUzhfcGtleV9nZXQwOwotKwkJRVZQX1BLRVlfYXNuMV9nZXQwOwotKwkJT0JKX2FkZF9zaWdpZDsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX3NpZ247Ci0rCQlFVlBfUEtFWV9wYXJhbWdlbl9pbml0OwotKwkJRVZQX1BLRVlfc2lnbjsKLSsJCU9CSl9zaWdpZF9mcmVlOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfaW5pdDsKLSsJCWQyaV9FU1NfSVNTVUVSX1NFUklBTDsKLSsJCUlTU1VJTkdfRElTVF9QT0lOVF9uZXc7Ci0rCQlBU04xX1RJTUVfYWRqOwotKwkJVFNfT0JKX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3ZlcmlmeV9yZWNvdmVyOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdnJmeV9yZWNvdmVyOwotKwkJVFNfUkVTUF9nZXRfc3RhdHVzX2luZm87Ci0rCQlDTVNfc3RyZWFtOwotKwkJRVZQX1BLRVlfQ1RYX3NldF9jYjsKLSsJCVBLQ1M3X3RvX1RTX1RTVF9JTkZPOwotKwkJQVNOMV9QQ1RYX2dldF9vaWRfZmxhZ3M7Ci0rCQlUU19UU1RfSU5GT19hZGRfZXh0OwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVyaXZlOwotKwkJaTJkX1RTX1JFU1BfZnA7Ci0rCQlpMmRfVFNfTVNHX0lNUFJJTlRfYmlvOwotKwkJVFNfUkVTUF9DVFhfc2V0X2FjY3VyYWN5OwotKwkJVFNfUkVRX3NldF9ub25jZTsKLSsJCUVTU19DRVJUX0lEX25ldzsKLSsJCUVOR0lORV9wa2V5X2FzbjFfZmluZF9zdHI7Ci0rCQlUU19SRVFfZ2V0X2V4dF9jb3VudDsKLSsJCUJVRl9yZXZlcnNlOwotKwkJVFNfVFNUX0lORk9fcHJpbnRfYmlvOwotKwkJZDJpX0lTU1VJTkdfRElTVF9QT0lOVDsKLSsJCUVOR0lORV9nZXRfcGtleV9tZXRoczsKLSsJCWkyYl9Qcml2YXRlS2V5X2JpbzsKLSsJCWkyZF9UU19SRVNQOwotKwkJYjJpX1B1YmxpY0tleTsKLSsJCVRTX1ZFUklGWV9DVFhfY2xlYW51cDsKLSsJCVRTX1NUQVRVU19JTkZPX2ZyZWU7Ci0rCQlUU19SRVNQX3ZlcmlmeV90b2tlbjsKLSsJCU9CSl9ic2VhcmNoX2V4XzsKLSsJCUFTTjFfYm5fcHJpbnQ7Ci0rCQlFVlBfUEtFWV9hc24xX2dldF9jb3VudDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlBU04xX1BDVFhfc2V0X25tX2ZsYWdzOwotKwkJRVZQX0RpZ2VzdFZlcmlmeUluaXQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9tZXRoczsKLSsJCVRTX1RTVF9JTkZPX2dldF9wb2xpY3lfaWQ7Ci0rCQlUU19SRVFfZ2V0X2NlcnRfcmVxOwotKwkJWDUwOV9DUkxfc2V0X21ldGhfZGF0YTsKLSsJCVBLQ1M4X3BrZXlfc2V0MDsKLSsJCUFTTjFfU1RSSU5HX2NvcHk7Ci0rCQlkMmlfVFNfVFNUX0lORk9fZnA7Ci0rCQlYNTA5X0NSTF9tYXRjaDsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X3ByaXZhdGU7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2QyaTsKLSsJCVRTX1JFU1BfQ1RYX2FkZF9wb2xpY3k7Ci0rCQlkMmlfVFNfUkVTUDsKLSsJCVRTX0NPTkZfbG9hZF9jZXJ0czsKLSsJCVRTX1RTVF9JTkZPX2dldF9tc2dfaW1wcmludDsKLSsJCUVSUl9sb2FkX1RTX3N0cmluZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfdmVyc2lvbjsKLSsJCUVWUF9QS0VZX0NUWF9kdXA7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnk7Ci0rCQlpMmJfUHVibGljS2V5X2JpbzsKLSsJCVRTX0NPTkZfc2V0X2NlcnRzOwotKwkJRVZQX1BLRVlfYXNuMV9nZXQwX2luZm87Ci0rCQlUU19WRVJJRllfQ1RYX2ZyZWU7Ci0rCQlUU19SRVFfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zZXJpYWxfY2I7Ci0rCQlYNTA5X0NSTF9nZXRfbWV0aF9kYXRhOwotKwkJVFNfUkVTUF9DVFhfc2V0X3RpbWVfY2I7Ci0rCQlUU19NU0dfSU1QUklOVF9nZXRfbXNnOwotKwkJVFNfVFNUX0lORk9fZXh0X2ZyZWU7Ci0rCQlUU19SRVFfZ2V0X3ZlcnNpb247Ci0rCQlUU19SRVFfYWRkX2V4dDsKLSsJCUVWUF9QS0VZX0NUWF9zZXRfYXBwX2RhdGE7Ci0rCQlPQkpfYnNlYXJjaF87Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnljdHg7Ci0rCQlpMmRfUEtDUzdfYmlvX3N0cmVhbTsKLSsJCUNSWVBUT19USFJFQURJRF9zZXRfbnVtZXJpYzsKLSsJCVBLQ1M3X3NpZ25fYWRkX3NpZ25lcjsKLSsJCWQyaV9UU19UU1RfSU5GT19iaW87Ci0rCQlUU19UU1RfSU5GT19nZXRfb3JkZXJpbmc7Ci0rCQlUU19SRVNQX3ByaW50X2JpbzsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRzOwotKwkJSE1BQ19DVFhfY29weTsKLSsJCVBLQ1M1X3BiZTJfc2V0X2l2OwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQliMmlfUHJpdmF0ZUtleTsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfYXBwX2RhdGE7Ci0rCQlUU19SRVFfc2V0X2NlcnRfcmVxOwotKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9jYWxsYmFjazsKLSsJCVRTX0NPTkZfc2V0X3NlcmlhbDsKLSsJCVRTX1RTVF9JTkZPX2ZyZWU7Ci0rCQlkMmlfVFNfUkVRX2ZwOwotKwkJVFNfUkVTUF92ZXJpZnlfcmVzcG9uc2U7Ci0rCQlpMmRfRVNTX0lTU1VFUl9TRVJJQUw7Ci0rCQlUU19BQ0NVUkFDWV9nZXRfc2Vjb25kczsKLSsJCUVWUF9DSVBIRVJfZG9fYWxsOwotKwkJYjJpX1ByaXZhdGVLZXlfYmlvOwotKwkJT0NTUF9DRVJUSURfZHVwOwotKwkJWDUwOV9QVUJLRVlfZ2V0MF9wYXJhbTsKLSsJCVRTX01TR19JTVBSSU5UX2R1cDsKLSsJCVBLQ1M3X3ByaW50X2N0eDsKLSsJCWkyZF9UU19SRVFfYmlvOwotKwkJRVZQX3doaXJscG9vbDsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X3BhcmFtOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfZW5jcnlwdDsKLSsJCUFTTjFfUENUWF9zZXRfZmxhZ3M7Ci0rCQlpMmRfRVNTX0NFUlRfSUQ7Ci0rCQlUU19WRVJJRllfQ1RYX25ldzsKLSsJCVRTX1JFU1BfQ1RYX3NldF9leHRlbnNpb25fY2I7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX3BrZXlfbWV0aHM7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc3RhdHVzX2luZm9fY29uZDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zdGF0X2luZm9fY29uZDsKLSsJCUVWUF9QS0VZX3ZlcmlmeTsKLSsJCVdISVJMUE9PTF9GaW5hbDsKLSsJCVg1MDlfQ1JMX01FVEhPRF9uZXc7Ci0rCQlFVlBfRGlnZXN0U2lnbkZpbmFsOwotKwkJVFNfUkVTUF9DVFhfc2V0X2RlZl9wb2xpY3k7Ci0rCQlORVRTQ0FQRV9YNTA5X2l0OwotKwkJVFNfUkVTUF9jcmVhdGVfcmVzcG9uc2U7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19nZXQwX2FsZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfbm9uY2U7Ci0rCQlFVlBfUEtFWV9kZWNyeXB0X29sZDsKLSsJCVRTX1RTVF9JTkZPX3NldF9wb2xpY3lfaWQ7Ci0rCQlUU19DT05GX3NldF9lc3NfY2VydF9pZF9jaGFpbjsKLSsJCUVWUF9QS0VZX0NUWF9nZXQwX3BrZXk7Ci0rCQlkMmlfVFNfUkVROwotKwkJRVZQX1BLRVlfYXNuMV9maW5kX3N0cjsKLSsJCUJJT19mX2FzbjE7Ci0rCQlFU1NfU0lHTklOR19DRVJUX25ldzsKLSsJCUVWUF9QQkVfZmluZDsKLSsJCVg1MDlfQ1JMX2dldDBfYnlfY2VydDsKLSsJCUVWUF9QS0VZX2Rlcml2ZTsKLSsJCWkyZF9UU19SRVE7Ci0rCQlUU19UU1RfSU5GT19kZWxldGVfZXh0OwotKwkJRVNTX0lTU1VFUl9TRVJJQUxfZnJlZTsKLSsJCUFTTjFfUENUWF9zZXRfc3RyX2ZsYWdzOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9zdHI7Ci0rCQlUU19DT05GX3NldF9zaWduZXJfa2V5OwotKwkJVFNfQUNDVVJBQ1lfZ2V0X21pbGxpczsKLSsJCVRTX1JFU1BfZ2V0X3Rva2VuOwotKwkJVFNfQUNDVVJBQ1lfZHVwOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlFTkdJTkVfcmVnX2FsbF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlYNTA5X0NSTF9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlDUllQVE9fVEhSRUFESURfaGFzaDsKLSsJCUNNU19Db250ZW50SW5mb19wcmludF9jdHg7Ci0rCQlUU19SRVNQX2ZyZWU7Ci0rCQlJU1NVSU5HX0RJU1RfUE9JTlRfZnJlZTsKLSsJCUVTU19JU1NVRVJfU0VSSUFMX25ldzsKLSsJCUNNU19hZGQxX2NybDsKLSsJCVBLQ1M3X2FkZDFfYXR0cmliX2RpZ2VzdDsKLSsJCVRTX1JFU1BfQ1RYX2FkZF9tZDsKLSsJCVRTX1RTVF9JTkZPX2R1cDsKLSsJCUVOR0lORV9zZXRfcGtleV9hc24xX21ldGhzOwotKwkJUEVNX3dyaXRlX2Jpb19QYXJhbWV0ZXJzOwotKwkJVFNfVFNUX0lORk9fZ2V0X2FjY3VyYWN5OwotKwkJWDUwOV9DUkxfZ2V0MF9ieV9zZXJpYWw7Ci0rCQlUU19UU1RfSU5GT19zZXRfdmVyc2lvbjsKLSsJCVRTX1JFU1BfQ1RYX2dldF90c3RfaW5mbzsKLSsJCVRTX1JFU1BfdmVyaWZ5X3NpZ25hdHVyZTsKLSsJCUNSWVBUT19USFJFQURJRF9nZXRfY2FsbGJhY2s7Ci0rCQlUU19UU1RfSU5GT19nZXRfdHNhOwotKwkJVFNfU1RBVFVTX0lORk9fbmV3OwotKwkJRVZQX1BLRVlfQ1RYX2dldF9jYjsKLSsJCVRTX1JFUV9nZXRfZXh0X2QyaTsKLSsJCUdFTkVSQUxfTkFNRV9zZXQwX290aGVybmFtZTsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfY291bnQ7Ci0rCQlUU19SRVNQX0NUWF9nZXRfcmVxdWVzdDsKLSsJCWkyZF9ORVRTQ0FQRV9YNTA5OwotKwkJRU5HSU5FX2dldF9wa2V5X21ldGhfZW5naW5lOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbmN0eDsKLSsJCUVWUF9QS0VZX2FzbjFfY29weTsKLSsJCUFTTjFfVFlQRV9jbXA7Ci0rCQlFVlBfQ0lQSEVSX2RvX2FsbF9zb3J0ZWQ7Ci0rCQlFVlBfUEtFWV9DVFhfZnJlZTsKLSsJCUlTU1VJTkdfRElTVF9QT0lOVF9pdDsKLSsJCWQyaV9UU19NU0dfSU1QUklOVF9mcDsKLSsJCVg1MDlfU1RPUkVfZ2V0MV9jZXJ0czsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfb3BlcmF0aW9uOwotKwkJZDJpX0VTU19TSUdOSU5HX0NFUlQ7Ci0rCQlUU19DT05GX3NldF9vcmRlcmluZzsKLSsJCUVWUF9QQkVfYWxnX2FkZF90eXBlOwotKwkJVFNfUkVRX3NldF92ZXJzaW9uOwotKwkJRVZQX1BLRVlfZ2V0MDsKLSsJCUJJT19hc24xX3NldF9zdWZmaXg7Ci0rCQlpMmRfVFNfU1RBVFVTX0lORk87Ci0rCQlFVlBfTURfZG9fYWxsOwotKwkJVFNfVFNUX0lORk9fc2V0X2FjY3VyYWN5OwotKwkJUEtDUzdfYWRkX2F0dHJpYl9jb250ZW50X3R5cGU7Ci0rCQlFUlJfcmVtb3ZlX3RocmVhZF9zdGF0ZTsKLSsJCUVWUF9QS0VZX21ldGhfYWRkMDsKLSsJCVRTX1RTVF9JTkZPX3NldF90c2E7Ci0rCQlFVlBfUEtFWV9tZXRoX25ldzsKLSsJCVdISVJMUE9PTF9VcGRhdGU7Ci0rCQlUU19DT05GX3NldF9hY2N1cmFjeTsKLSsJCUFTTjFfUENUWF9zZXRfb2lkX2ZsYWdzOwotKwkJRVNTX1NJR05JTkdfQ0VSVF9kdXA7Ci0rCQlkMmlfVFNfUkVRX2JpbzsKLSsJCVg1MDlfdGltZV9hZGpfZXg7Ci0rCQlUU19SRVNQX0NUWF9hZGRfZmxhZ3M7Ci0rCQlkMmlfVFNfU1RBVFVTX0lORk87Ci0rCQlUU19NU0dfSU1QUklOVF9zZXRfbXNnOwotKwkJQklPX2FzbjFfZ2V0X3N1ZmZpeDsKLSsJCVRTX1JFUV9mcmVlOwotKwkJRVZQX1BLRVlfbWV0aF9mcmVlOwotKwkJVFNfUkVRX2dldF9leHRzOwotKwkJVFNfUkVTUF9DVFhfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7Ci0rCQlUU19SRVNQX0NUWF9zZXRfY2xrX3ByZWNfZGlnaXRzOwotKwkJVFNfUkVTUF9DVFhfYWRkX2ZhaWx1cmVfaW5mbzsKLSsJCWkyZF9UU19SRVNQX2JpbzsKLSsJCUVWUF9QS0VZX0NUWF9nZXQwX3BlZXJrZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX0NNU19zdHJlYW07Ci0rCQlUU19SRVFfbmV3OwotKwkJVFNfTVNHX0lNUFJJTlRfbmV3OwotKwkJRVZQX1BLRVlfbWV0aF9maW5kOwotKwkJRVZQX1BLRVlfaWQ7Ci0rCQlUU19UU1RfSU5GT19zZXRfc2VyaWFsOwotKwkJYTJpX0dFTkVSQUxfTkFNRTsKLSsJCVRTX0NPTkZfc2V0X2NyeXB0b19kZXZpY2U7Ci0rCQlFVlBfUEtFWV92ZXJpZnlfaW5pdDsKLSsJCVRTX0NPTkZfc2V0X3BvbGljaWVzOwotKwkJQVNOMV9QQ1RYX25ldzsKLSsJCUVTU19DRVJUX0lEX2ZyZWU7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9wa2V5X21ldGhzOwotKwkJVFNfTVNHX0lNUFJJTlRfZnJlZTsKLSsJCVRTX1ZFUklGWV9DVFhfaW5pdDsKLSsJCVBLQ1M3X3N0cmVhbTsKLSsJCVRTX1JFU1BfQ1RYX3NldF9jZXJ0czsKLSsJCVRTX0NPTkZfc2V0X2RlZl9wb2xpY3k7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9hZGo7Ci0rCQlORVRTQ0FQRV9YNTA5X25ldzsKLSsJCVRTX0FDQ1VSQUNZX2ZyZWU7Ci0rCQlUU19SRVNQX2dldF90c3RfaW5mbzsKLSsJCUVWUF9QS0VZX2Rlcml2ZV9zZXRfcGVlcjsKLSsJCVBFTV9yZWFkX2Jpb19QYXJhbWV0ZXJzOwotKwkJVFNfQ09ORl9zZXRfY2xvY2tfcHJlY2lzaW9uX2RpZ2l0czsKLSsJCVRTX0NPTkZfc2V0X2Nsa19wcmVjX2RpZ2l0czsKLSsJCUVTU19JU1NVRVJfU0VSSUFMX2R1cDsKLSsJCVRTX0FDQ1VSQUNZX2dldF9taWNyb3M7Ci0rCQlBU04xX1BDVFhfZ2V0X3N0cl9mbGFnczsKLSsJCU5BTUVfQ09OU1RSQUlOVFNfY2hlY2s7Ci0rCQlBU04xX0JJVF9TVFJJTkdfY2hlY2s7Ci0rCQlYNTA5X2NoZWNrX2FraWQ7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlFTkdJTkVfdW5yZWdfcGtleV9hc24xX21ldGhzOwotKwkJQVNOMV9QQ1RYX2ZyZWU7Ci0rCQlQRU1fd3JpdGVfYmlvX0FTTjFfc3RyZWFtOwotKwkJaTJkX0FTTjFfYmlvX3N0cmVhbTsKLSsJCVRTX1g1MDlfQUxHT1JfcHJpbnRfYmlvOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfY2xlYW51cDsKLSsJCUVWUF9QS0VZX2FzbjFfZnJlZTsKLSsJCUVTU19TSUdOSU5HX0NFUlRfZnJlZTsKLSsJCVRTX1RTVF9JTkZPX3NldF9tc2dfaW1wcmludDsKLSsJCUdFTkVSQUxfTkFNRV9jbXA7Ci0rCQlkMmlfQVNOMV9TRVRfQU5ZOwotKwkJRU5HSU5FX3NldF9wa2V5X21ldGhzOwotKwkJaTJkX1RTX1JFUV9mcDsKLSsJCWQyaV9BU04xX1NFUVVFTkNFX0FOWTsKLSsJCUdFTkVSQUxfTkFNRV9nZXQwX290aGVyTmFtZTsKLSsJCWQyaV9FU1NfQ0VSVF9JRDsKLSsJCU9CSl9maW5kX3NpZ2lkX2FsZ3M7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9rZXlnZW47Ci0rCQlQS0NTNV9QQktERjJfSE1BQzsKLSsJCUVWUF9QS0VZX3BhcmFtZ2VuOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfcGFyYW1nZW47Ci0rCQlCSU9fbmV3X1BLQ1M3OwotKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXI7Ci0rCQlUU19leHRfcHJpbnRfYmlvOwotKwkJVFNfQVNOMV9JTlRFR0VSX3ByaW50X2JpbzsKLSsJCWNoZWNrX2RlZmVyOwotKwkJRFNPX3BhdGhieWFkZHI7Ci0rCQlFVlBfUEtFWV9zZXRfdHlwZTsKLSsJCVRTX0FDQ1VSQUNZX3NldF9taWNyb3M7Ci0rCQlUU19SRVFfdG9fVFNfVkVSSUZZX0NUWDsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2NvcHk7Ci0rCQlBU04xX1BDVFhfc2V0X2NlcnRfZmxhZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0OwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfY3RybDsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlFVlBfUEtFWV9DVFhfbmV3X2lkOwotKwkJVFNfUkVRX2dldF9leHRfYnlfT0JKOwotKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2NlcnQ7Ci0rCQlYNTA5X05BTUVfaGFzaF9vbGQ7Ci0rCQlBU04xX1RJTUVfc2V0X3N0cmluZzsKLSsJCUVWUF9NRF9mbGFnczsKLSsJCVRTX1JFU1BfQ1RYX2ZyZWU7Ci0rCQlEU0FwYXJhbXNfZHVwOwotKwkJREhwYXJhbXNfZHVwOwotKwkJT0NTUF9SRVFfQ1RYX2FkZDFfaGVhZGVyOwotKwkJT0NTUF9SRVFfQ1RYX3NldDFfcmVxOwotKwkJWDUwOV9TVE9SRV9zZXRfdmVyaWZ5X2NiOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJyZW50X2NybDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcGFyZW50X2N0eDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9pc3N1ZXI7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cl9pc3N1ZXI7Ci0rCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2hfb2xkOwotKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaF9vbGQ7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jb3B5OwotKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0b3I7Ci0rCQlVSV9tZXRob2RfZ2V0X3Byb21wdF9jb25zdHJ1Y3RyOwotKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0b3I7Ci0rCQlVSV9tZXRob2Rfc2V0X3Byb21wdF9jb25zdHJ1Y3RyOwotKwkJRVZQX3JlYWRfcHdfc3RyaW5nX21pbjsKLSsJCUNSWVBUT19jdHMxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jdHMxMjhfZGVjcnlwdF9ibG9jazsKLSsJCUNSWVBUT19jZmIxMjhfMV9lbmNyeXB0OwotKwkJQ1JZUFRPX2NiYzEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2N0cjEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX29mYjEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2N0czEyOF9kZWNyeXB0OwotKwkJQ1JZUFRPX2N0czEyOF9lbmNyeXB0X2Jsb2NrOwotKwkJQ1JZUFRPX2NiYzEyOF9kZWNyeXB0OwotKwkJQ1JZUFRPX2NmYjEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2NmYjEyOF84X2VuY3J5cHQ7Ci0rCQlTU0xfcmVuZWdvdGlhdGVfYWJicmV2aWF0ZWQ7Ci0rCQlUTFN2MV8xX21ldGhvZDsKLSsJCVRMU3YxXzFfY2xpZW50X21ldGhvZDsKLSsJCVRMU3YxXzFfc2VydmVyX21ldGhvZDsKLSsJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfc3JwX2NsaWVudF9wd2RfY2I7Ci0rCQlTU0xfZ2V0X3NycF9nOwotKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfc3JwX3VuX2NiOwotKwkJU1NMX2dldF9zcnBfdXNlcmluZm87Ci0rCQlTU0xfc2V0X3NycF9zZXJ2ZXJfcGFyYW07Ci0rCQlTU0xfc2V0X3NycF9zZXJ2ZXJfcGFyYW1fcHc7Ci0rCQlTU0xfZ2V0X3NycF9OOwotKwkJU1NMX2dldF9zcnBfdXNlcm5hbWU7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfcGFzc3dvcmQ7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfc3RyZW5ndGg7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfdmVyaWZ5X3BhcmFtX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfc3JwX3ZmeV9wYXJhbV9jYjsKLSsJCVNTTF9DVFhfc2V0X3NycF9jYl9hcmc7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfdXNlcm5hbWU7Ci0rCQlTU0xfQ1RYX1NSUF9DVFhfaW5pdDsKLSsJCVNTTF9TUlBfQ1RYX2luaXQ7Ci0rCQlTUlBfQ2FsY19BX3BhcmFtOwotKwkJU1JQX2dlbmVyYXRlX3NlcnZlcl9tYXN0ZXJfc2VjcmV0OwotKwkJU1JQX2dlbl9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKLSsJCVNTTF9DVFhfU1JQX0NUWF9mcmVlOwotKwkJU1JQX2dlbmVyYXRlX2NsaWVudF9tYXN0ZXJfc2VjcmV0OwotKwkJU1JQX2dlbl9jbGllbnRfbWFzdGVyX3NlY3JldDsKLSsJCVNTTF9zcnBfc2VydmVyX3BhcmFtX3dpdGhfdXNlcm5hbWU7Ci0rCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VuOwotKwkJU1NMX1NSUF9DVFhfZnJlZTsKLSsJCVNTTF9zZXRfZGVidWc7Ci0rCQlTU0xfU0VTU0lPTl9nZXQwX3BlZXI7Ci0rCQlUTFN2MV8yX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0xfU0VTU0lPTl9zZXQxX2lkX2NvbnRleHQ7Ci0rCQlUTFN2MV8yX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0xfY2FjaGVfaGl0OwotKwkJU1NMX2dldDBfa3NzbF9jdHg7Ci0rCQlTU0xfc2V0MF9rc3NsX2N0eDsKLSsJCVNTTF9zZXRfc3RhdGU7Ci0rCQlTU0xfQ0lQSEVSX2dldF9pZDsKLSsJCVRMU3YxXzJfbWV0aG9kOwotKwkJa3NzbF9jdHhfZ2V0MF9jbGllbnRfcHJpbmM7Ci0rCQlTU0xfZXhwb3J0X2tleWluZ19tYXRlcmlhbDsKLSsJCVNTTF9zZXRfdGxzZXh0X3VzZV9zcnRwOwotKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2ZXJ0aXNlZF9jYjsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2Fkdl9jYjsKLSsJCVNTTF9nZXQwX25leHRfcHJvdG9fbmVnb3RpYXRlZDsKLSsJCVNTTF9nZXRfc2VsZWN0ZWRfc3J0cF9wcm9maWxlOwotKwkJU1NMX0NUWF9zZXRfdGxzZXh0X3VzZV9zcnRwOwotKwkJU1NMX3NlbGVjdF9uZXh0X3Byb3RvOwotKwkJU1NMX2dldF9zcnRwX3Byb2ZpbGVzOwotKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2I7Ci0rCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbF9jYjsKLSsJCVNTTF9TRVNTSU9OX2dldF9jb21wcmVzc19pZDsKLSsKLSsJCVNSUF9WQkFTRV9nZXRfYnlfdXNlcjsKLSsJCVNSUF9DYWxjX3NlcnZlcl9rZXk7Ci0rCQlTUlBfY3JlYXRlX3ZlcmlmaWVyOwotKwkJU1JQX2NyZWF0ZV92ZXJpZmllcl9CTjsKLSsJCVNSUF9DYWxjX3U7Ci0rCQlTUlBfVkJBU0VfZnJlZTsKLSsJCVNSUF9DYWxjX2NsaWVudF9rZXk7Ci0rCQlTUlBfZ2V0X2RlZmF1bHRfZ047Ci0rCQlTUlBfQ2FsY194OwotKwkJU1JQX0NhbGNfQjsKLSsJCVNSUF9WQkFTRV9uZXc7Ci0rCQlTUlBfY2hlY2tfa25vd25fZ05fcGFyYW07Ci0rCQlTUlBfQ2FsY19BOwotKwkJU1JQX1ZlcmlmeV9BX21vZF9OOwotKwkJU1JQX1ZCQVNFX2luaXQ7Ci0rCQlTUlBfVmVyaWZ5X0JfbW9kX047Ci0rCQlFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW5hdGVzOwotKwkJRUNfS0VZX3NldF9wdWJfa2V5X2FmZl9jb29yZHM7Ci0rCQlFVlBfYWVzXzE5Ml9jdHI7Ci0rCQlFVlBfUEtFWV9tZXRoX2dldDBfaW5mbzsKLSsJCUVWUF9QS0VZX21ldGhfY29weTsKLSsJCUVSUl9hZGRfZXJyb3JfdmRhdGE7Ci0rCQlFVlBfYWVzXzEyOF9jdHI7Ci0rCQlFVlBfYWVzXzI1Nl9jdHI7Ci0rCQlFQ19HRnBfbmlzdHAyMjRfbWV0aG9kOwotKwkJRUNfS0VZX2dldF9mbGFnczsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1NfbWdmMTsKLSsJCUVWUF9hZXNfMTI4X3h0czsKLSsJCUVWUF9hZXNfMjU2X3h0czsKLSsJCUVWUF9hZXNfMTI4X2djbTsKLSsJCUVDX0tFWV9jbGVhcl9mbGFnczsKLSsJCUVDX0tFWV9zZXRfZmxhZ3M7Ci0rCQlFVlBfYWVzXzI1Nl9jY207Ci0rCQlSU0FfdmVyaWZ5X1BLQ1MxX1BTU19tZ2YxOwotKwkJRVZQX2Flc18xMjhfY2NtOwotKwkJRVZQX2Flc18xOTJfZ2NtOwotKwkJWDUwOV9BTEdPUl9zZXRfbWQ7Ci0rCQlSQU5EX2luaXRfZmlwczsKLSsJCUVWUF9hZXNfMjU2X2djbTsKLSsJCUVWUF9hZXNfMTkyX2NjbTsKLSsJCUNNQUNfQ1RYX2NvcHk7Ci0rCQlDTUFDX0NUWF9mcmVlOwotKwkJQ01BQ19DVFhfZ2V0MF9jaXBoZXJfY3R4OwotKwkJQ01BQ19DVFhfY2xlYW51cDsKLSsJCUNNQUNfSW5pdDsKLSsJCUNNQUNfVXBkYXRlOwotKwkJQ01BQ19yZXN1bWU7Ci0rCQlDTUFDX0NUWF9uZXc7Ci0rCQlDTUFDX0ZpbmFsOwotKwkJQ1JZUFRPX2N0cjEyOF9lbmNyeXB0X2N0cjMyOwotKwkJQ1JZUFRPX2djbTEyOF9yZWxlYXNlOwotKwkJQ1JZUFRPX2NjbTEyOF9kZWNyeXB0X2NjbTY0OwotKwkJQ1JZUFRPX2NjbTEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2djbTEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX3h0czEyOF9lbmNyeXB0OwotKwkJRVZQX3JjNF9obWFjX21kNTsKLSsJCUNSWVBUT19uaXN0Y3RzMTI4X2RlY3J5cHRfYmxvY2s7Ci0rCQlDUllQVE9fZ2NtMTI4X3NldGl2OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdDsKLSsJCUVWUF9hZXNfMTI4X2NiY19obWFjX3NoYTE7Ci0rCQlDUllQVE9fZ2NtMTI4X3RhZzsKLSsJCUNSWVBUT19jY20xMjhfZW5jcnlwdF9jY202NDsKLSsJCUVOR0lORV9sb2FkX3JkcmFuZDsKLSsJCUNSWVBUT19jY20xMjhfc2V0aXY7Ci0rCQlDUllQVE9fbmlzdGN0czEyOF9lbmNyeXB0X2Jsb2NrOwotKwkJQ1JZUFRPX2djbTEyOF9hYWQ7Ci0rCQlDUllQVE9fY2NtMTI4X2luaXQ7Ci0rCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0OwotKwkJQ1JZUFRPX2djbTEyOF9uZXc7Ci0rCQlDUllQVE9fY2NtMTI4X3RhZzsKLSsJCUNSWVBUT19jY20xMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19jY20xMjhfYWFkOwotKwkJQ1JZUFRPX2djbTEyOF9pbml0OwotKwkJQ1JZUFRPX2djbTEyOF9kZWNyeXB0OwotKwkJRU5HSU5FX2xvYWRfcnNheDsKLSsJCUNSWVBUT19nY20xMjhfZGVjcnlwdF9jdHIzMjsKLSsJCUNSWVBUT19nY20xMjhfZW5jcnlwdF9jdHIzMjsKLSsJCUNSWVBUT19nY20xMjhfZmluaXNoOwotKwkJRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMTsKLSsJCVBLQ1M1X3Bia2RmMl9zZXQ7Ci0rCQlDTVNfYWRkMF9yZWNpcGllbnRfcGFzc3dvcmQ7Ci0rCQlDTVNfZGVjcnlwdF9zZXQxX3Bhc3N3b3JkOwotKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9wYXNzd29yZDsKLSsJCVJBTkRfc2V0X2ZpcHNfZHJiZ190eXBlOwotKwkJWDUwOV9SRVFfc2lnbl9jdHg7Ci0rCQlSU0FfUFNTX1BBUkFNU19uZXc7Ci0rCQlYNTA5X0NSTF9zaWduX2N0eDsKLSsJCVg1MDlfc2lnbmF0dXJlX2R1bXA7Ci0rCQlkMmlfUlNBX1BTU19QQVJBTVM7Ci0rCQlSU0FfUFNTX1BBUkFNU19pdDsKLSsJCVJTQV9QU1NfUEFSQU1TX2ZyZWU7Ci0rCQlYNTA5X3NpZ25fY3R4OwotKwkJaTJkX1JTQV9QU1NfUEFSQU1TOwotKwkJQVNOMV9pdGVtX3NpZ25fY3R4OwotKwkJRUNfR0ZwX25pc3RwNTIxX21ldGhvZDsKLSsJCUVDX0dGcF9uaXN0cDI1Nl9tZXRob2Q7Ci0rCQlPUEVOU1NMX3N0ZGVycjsKLSsJCU9QRU5TU0xfY3B1aWRfc2V0dXA7Ci0rCQlPUEVOU1NMX3Nob3dmYXRhbDsKLSsJCUJJT19uZXdfZGdyYW1fc2N0cDsKLSsJCUJJT19kZ3JhbV9zY3RwX21zZ193YWl0aW5nOwotKwkJQklPX2RncmFtX3NjdHBfd2FpdF9mb3JfZHJ5OwotKwkJQklPX3NfZGF0YWdyYW1fc2N0cDsKLSsJCUJJT19kZ3JhbV9pc19zY3RwOwotKwkJQklPX2RncmFtX3NjdHBfbm90aWZpY2F0aW9uX2NiOwotKwkJQ1JZUFRPX21lbWNtcDsKLSsJCVNTTF9DVFhfc2V0X2FscG5fcHJvdG9zOwotKwkJU1NMX3NldF9hbHBuX3Byb3RvczsKLSsJCVNTTF9DVFhfc2V0X2FscG5fc2VsZWN0X2NiOwotKwkJU1NMX2dldDBfYWxwbl9zZWxlY3RlZDsKLSsJCVNTTF9DVFhfc2V0X2N1c3RvbV9jbGlfZXh0OwotKwkJU1NMX0NUWF9zZXRfY3VzdG9tX3Nydl9leHQ7Ci0rCQlTU0xfQ1RYX3NldF9zcnZfc3VwcF9kYXRhOwotKwkJU1NMX0NUWF9zZXRfY2xpX3N1cHBfZGF0YTsKLSsJCVNTTF9zZXRfY2VydF9jYjsKLSsJCVNTTF9DVFhfdXNlX3NlcnZlcmluZm87Ci0rCQlTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvX2ZpbGU7Ci0rCQlTU0xfQ1RYX3NldF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9nZXQwX3BhcmFtOwotKwkJU1NMX2dldDBfcGFyYW07Ci0rCQlTU0xfY2VydHNfY2xlYXI7Ci0rCQlEVExTdjFfMl9tZXRob2Q7Ci0rCQlEVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOwotKwkJRFRMU3YxXzJfY2xpZW50X21ldGhvZDsKLSsJCURUTFNfbWV0aG9kOwotKwkJRFRMU19zZXJ2ZXJfbWV0aG9kOwotKwkJRFRMU19jbGllbnRfbWV0aG9kOwotKwkJU1NMX0NUWF9nZXRfc3NsX21ldGhvZDsKLSsJCVNTTF9DVFhfZ2V0MF9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF9DVFhfZ2V0MF9wcml2YXRla2V5OwotKwkJU1NMX0NPTVBfc2V0MF9jb21wcmVzc2lvbl9tZXRob2RzOwotKwkJU1NMX0NPTVBfZnJlZV9jb21wcmVzc2lvbl9tZXRob2RzOwotKwkJU1NMX0NJUEhFUl9maW5kOwotKwkJU1NMX2lzX3NlcnZlcjsKLSsJCVNTTF9DT05GX0NUWF9uZXc7Ci0rCQlTU0xfQ09ORl9DVFhfZmluaXNoOwotKwkJU1NMX0NPTkZfQ1RYX2ZyZWU7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0X2ZsYWdzOwotKwkJU1NMX0NPTkZfQ1RYX2NsZWFyX2ZsYWdzOwotKwkJU1NMX0NPTkZfQ1RYX3NldDFfcHJlZml4OwotKwkJU1NMX0NPTkZfQ1RYX3NldF9zc2w7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0X3NzbF9jdHg7Ci0rCQlTU0xfQ09ORl9jbWQ7Ci0rCQlTU0xfQ09ORl9jbWRfYXJndjsKLSsJCVNTTF9DT05GX2NtZF92YWx1ZV90eXBlOwotKwkJU1NMX3RyYWNlOwotKwkJU1NMX0NJUEhFUl9zdGFuZGFyZF9uYW1lOwotKwkJU1NMX2dldF90bHNhX3JlY29yZF9ieW5hbWU7Ci0rCQlBU04xX1RJTUVfZGlmZjsKLSsJCUJJT19oZXhfc3RyaW5nOwotKwkJQ01TX1JlY2lwaWVudEluZm9fZ2V0MF9wa2V5X2N0eDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2VuY3J5cHQ7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX3BrZXlfY3R4OwotKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9tZF9jdHg7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX3NpZ25hdHVyZTsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9hbGc7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfcmVrczsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9vcmlnX2lkOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9vcmlnX2lkX2NtcDsKLSsJCUNNU19SZWNpcGllbnRFbmNyeXB0ZWRLZXlfZ2V0MF9pZDsKLSsJCUNNU19SZWNpcGllbnRFbmNyeXB0ZWRLZXlfY2VydF9jbXA7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX3NldDBfcGtleTsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9jdHg7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2RlY3J5cHQ7Ci0rCQlDTVNfU2hhcmVkSW5mb19lbmNvZGU7Ci0rCQlESF9jb21wdXRlX2tleV9wYWRkZWQ7Ci0rCQlkMmlfREh4cGFyYW1zOwotKwkJaTJkX0RIeHBhcmFtczsKLSsJCURIX2dldF8xMDI0XzE2MDsKLSsJCURIX2dldF8yMDQ4XzIyNDsKLSsJCURIX2dldF8yMDQ4XzI1NjsKLSsJCURIX0tERl9YOV80MjsKLSsJCUVDREhfS0RGX1g5XzYyOwotKwkJRUNEU0FfTUVUSE9EX25ldzsKLSsJCUVDRFNBX01FVEhPRF9mcmVlOwotKwkJRUNEU0FfTUVUSE9EX3NldF9hcHBfZGF0YTsKLSsJCUVDRFNBX01FVEhPRF9nZXRfYXBwX2RhdGE7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3NpZ247Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3NpZ25fc2V0dXA7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3ZlcmlmeTsKLSsJCUVDRFNBX01FVEhPRF9zZXRfZmxhZ3M7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X25hbWU7Ci0rCQlFVlBfZGVzX2VkZTNfd3JhcDsKLSsJCUVWUF9hZXNfMTI4X3dyYXA7Ci0rCQlFVlBfYWVzXzE5Ml93cmFwOwotKwkJRVZQX2Flc18yNTZfd3JhcDsKLSsJCUVWUF9hZXNfMTI4X2NiY19obWFjX3NoYTI1NjsKLSsJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTI1NjsKLSsJCUNSWVBUT18xMjhfd3JhcDsKLSsJCUNSWVBUT18xMjhfdW53cmFwOwotKwkJT0NTUF9SRVFfQ1RYX25iaW87Ci0rCQlPQ1NQX1JFUV9DVFhfbmV3OwotKwkJT0NTUF9zZXRfbWF4X3Jlc3BvbnNlX2xlbmd0aDsKLSsJCU9DU1BfUkVRX0NUWF9pMmQ7Ci0rCQlPQ1NQX1JFUV9DVFhfbmJpb19kMmk7Ci0rCQlPQ1NQX1JFUV9DVFhfZ2V0MF9tZW1fYmlvOwotKwkJT0NTUF9SRVFfQ1RYX2h0dHA7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUF9tZ2YxOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FFUF9tZ2YxOwotKwkJUlNBX09BRVBfUEFSQU1TX2ZyZWU7Ci0rCQlSU0FfT0FFUF9QQVJBTVNfaXQ7Ci0rCQlSU0FfT0FFUF9QQVJBTVNfbmV3OwotKwkJU1NMX2dldF9zaWdhbGdzOwotKwkJU1NMX2dldF9zaGFyZWRfc2lnYWxnczsKLSsJCVNTTF9jaGVja19jaGFpbjsKLSsJCVg1MDlfY2hhaW5fdXBfcmVmOwotKwkJWDUwOV9odHRwX25iaW87Ci0rCQlYNTA5X0NSTF9odHRwX25iaW87Ci0rCQlYNTA5X1JFVk9LRURfZHVwOwotKwkJaTJkX3JlX1g1MDlfdGJzOwotKwkJWDUwOV9nZXQwX3NpZ25hdHVyZTsKLSsJCVg1MDlfZ2V0X3NpZ25hdHVyZV9uaWQ7Ci0rCQlYNTA5X0NSTF9kaWZmOwotKwkJWDUwOV9jaGFpbl9jaGVja19zdWl0ZWI7Ci0rCQlYNTA5X0NSTF9jaGVja19zdWl0ZWI7Ci0rCQlYNTA5X2NoZWNrX2hvc3Q7Ci0rCQlYNTA5X2NoZWNrX2VtYWlsOwotKwkJWDUwOV9jaGVja19pcDsKLSsJCVg1MDlfY2hlY2tfaXBfYXNjOwotKwkJWDUwOV9TVE9SRV9zZXRfbG9va3VwX2NybHNfY2I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3N0b3JlOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9ob3N0OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fYWRkMV9ob3N0OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2hvc3RmbGFnczsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDBfcGVlcm5hbWU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2VtYWlsOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9pcDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaXBfYXNjOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MF9uYW1lOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2NvdW50OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MDsKLSsJCVg1MDlWM19FWFRfZnJlZTsKLSsJCUVDX0dST1VQX2dldF9tb250X2RhdGE7Ci0rCQlFQ19jdXJ2ZV9uaWQybmlzdDsKLSsJCUVDX2N1cnZlX25pc3QybmlkOwotKwkJUEVNX3dyaXRlX2Jpb19ESHhwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfREh4cGFyYW1zOwotKwkJU1NMX0NUWF9hZGRfY2xpZW50X2N1c3RvbV9leHQ7Ci0rCQlTU0xfQ1RYX2FkZF9zZXJ2ZXJfY3VzdG9tX2V4dDsKLSsJCVNTTF9leHRlbnNpb25fc3VwcG9ydGVkOwotKwkJQlVGX3N0cm5sZW47Ci0rCQlza19kZWVwX2NvcHk7Ci0rCQlTU0xfdGVzdF9mdW5jdGlvbnM7Ci0rCi0rCWxvY2FsOgotKwkJKjsKLSt9OwotKwotK09QRU5TU0xfMS4wLjJnIHsKLSsgICAgICAgZ2xvYmFsOgotKyAgICAgICAgICAgICAgIFNSUF9WQkFTRV9nZXQxX2J5X3VzZXI7Ci0rICAgICAgICAgICAgICAgU1JQX3VzZXJfcHdkX2ZyZWU7Ci0rfSBPUEVOU1NMXzEuMC4yZDsKLSsKLUluZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTAgQEAKLStPUEVOU1NMXzEuMC4yIHsKLSsJZ2xvYmFsOgotKwkJYmluZF9lbmdpbmU7Ci0rCQl2X2NoZWNrOwotKwkJT1BFTlNTTF9pbml0OwotKwkJT1BFTlNTTF9maW5pc2g7Ci0rCWxvY2FsOgotKwkJKjsKLSt9OwotKwotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvY2Nnb3N0L29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL2NjZ29zdC9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDEwIEBACi0rT1BFTlNTTF8xLjAuMiB7Ci0rCWdsb2JhbDoKLSsJCWJpbmRfZW5naW5lOwotKwkJdl9jaGVjazsKLSsJCU9QRU5TU0xfaW5pdDsKLSsJCU9QRU5TU0xfZmluaXNoOwotKwlsb2NhbDoKLSsJCSo7Ci0rfTsKLSsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9maXgtY2lwaGVyLWRlcy1lZGUzLWNmYjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZml4LWNpcGhlci1kZXMtZWRlMy1jZmIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTMxOGE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9maXgtY2lwaGVyLWRlcy1lZGUzLWNmYjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1UaGlzIHBhdGNoIGFkZHMgdGhlIGZpeCBmb3Igb25lIG9mIHRoZSBjaXBoZXJzIHVzZWQgaW4gb3BlbnNzbCwgbmFtZWx5Ci10aGUgY2lwaGVyIGRlcy1lZGUzLWNmYjEuIENvbXBsZXRlIGJ1ZyBsb2cgYW5kIHBhdGNoIGlzIHByZXNlbnQgaGVyZToKLWh0dHA6Ly9ydC5vcGVuc3NsLm9yZy9UaWNrZXQvRGlzcGxheS5odG1sP2lkPTI4NjcKLQotU2lnbmVkLW9mZi1ieTogTXVoYW1tYWQgU2hha2VlbCA8bXVoYW1tYWRfc2hha2VlbEBtZW50b3IuY29tPgotCi1JbmRleDogb3BlbnNzbC0xLjAuMi9jcnlwdG8vZXZwL2VfZGVzMy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzbC0xLjAuMi5vcmlnL2NyeXB0by9ldnAvZV9kZXMzLmMKLSsrKyBvcGVuc3NsLTEuMC4yL2NyeXB0by9ldnAvZV9kZXMzLmMKLUBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIGludCBkZXNfZWRlM19jZmIxX2NpcGhlcihFVlBfQ0lQSAotICAgICBzaXplX3QgbjsKLSAgICAgdW5zaWduZWQgY2hhciBjWzFdLCBkWzFdOwotIAotLSAgICBmb3IgKG4gPSAwOyBuIDwgaW5sOyArK24pIHsKLSsgICAgZm9yIChuID0gMDsgbiAqIDggPCBpbmw7ICsrbikgewotICAgICAgICAgY1swXSA9IChpbltuIC8gOF0gJiAoMSA8PCAoNyAtIG4gJSA4KSkpID8gMHg4MCA6IDA7Ci0gICAgICAgICBERVNfZWRlM19jZmJfZW5jcnlwdChjLCBkLCAxLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEoY3R4KS0+a3MxLCAmZGF0YShjdHgpLT5rczIsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1hdm9pZC1OVUxMLXBvaW50ZXItZGVyZWZlcmVuY2UtaW4tRVZQX0RpZ2VzdEluaXRfZXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1hdm9pZC1OVUxMLXBvaW50ZXItZGVyZWZlcmVuY2UtaW4tRVZQX0RpZ2VzdEluaXRfZXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MzZlNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtYXZvaWQtTlVMTC1wb2ludGVyLWRlcmVmZXJlbmNlLWluLUVWUF9EaWdlc3RJbml0X2V4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotb3BlbnNzbDogYXZvaWQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIEVWUF9EaWdlc3RJbml0X2V4KCkKLQotV2Ugc2hvdWxkIGF2b2lkIGFjY2Vzc2luZyB0aGUgdHlwZSBwb2ludGVyIGlmIGl0J3MgTlVMTCwKLXRoaXMgY291bGQgaGFwcGVuIGlmIGN0eC0+ZGlnZXN0IGlzIG5vdCBOVUxMLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL29wZW5zc2wtZGV2QG9wZW5zc2wub3JnL21zZzMyODYwLmh0bWwKLQotU2lnbmVkLW9mZi1ieTogWHVmZW5nIFpoYW5nIDx4dWZlbmcuemhhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotSW5kZXg6IG9wZW5zc2wtMS4wLjJoL2NyeXB0by9ldnAvZGlnZXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yaC5vcmlnL2NyeXB0by9ldnAvZGlnZXN0LmMKLSsrKyBvcGVuc3NsLTEuMC4yaC9jcnlwdG8vZXZwL2RpZ2VzdC5jCi1AQCAtMjExLDcgKzIxMSw3IEBAIGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKLSAgICAgICAgIHR5cGUgPSBjdHgtPmRpZ2VzdDsKLSAgICAgfQotICNlbmRpZgotLSAgICBpZiAoY3R4LT5kaWdlc3QgIT0gdHlwZSkgewotKyAgICBpZiAodHlwZSAmJiAoY3R4LT5kaWdlc3QgIT0gdHlwZSkpIHsKLSAgICAgICAgIGlmIChjdHgtPmRpZ2VzdCAmJiBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpIHsKLSAgICAgICAgICAgICBPUEVOU1NMX2ZyZWUoY3R4LT5tZF9kYXRhKTsKLSAgICAgICAgICAgICBjdHgtPm1kX2RhdGEgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3BhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3BhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2Y0Yzk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wYXJhbGxlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzNyArMCwwIEBACi1GaXggdGhlIHBhcmFsbGVsIHJhY2VzIGluIHRoZSBNYWtlZmlsZXMuCi0KLVRoaXMgcGF0Y2ggd2FzIHRha2VuIGZyb20gdGhlIEdlbnRvbyBwYWNrYWdpbmc6Ci1odHRwczovL2dpdHdlYi5nZW50b28ub3JnL3JlcG8vZ2VudG9vLmdpdC9wbGFpbi9kZXYtbGlicy9vcGVuc3NsL2ZpbGVzL29wZW5zc2wtMS4wLjJnLXBhcmFsbGVsLWJ1aWxkLnBhdGNoCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotUmVmcmVzaGVkIGZvciAxLjAuMmkKLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLQotLS0tIG9wZW5zc2wtMS4wLjJnL2NyeXB0by9NYWtlZmlsZQotKysrIG9wZW5zc2wtMS4wLjJnL2NyeXB0by9NYWtlZmlsZQotQEAgLTg1LDExICs4NSwxMSBAQAotIAlAaWYgWyAteiAiJChUSElTKSIgXTsgdGhlbiAkKE1BS0UpIC1mICQoVE9QKS9NYWtlZmlsZSByZWZsZWN0IFRISVM9JEA7IGZpCi0gCi0gc3ViZGlyczoKLS0JQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0rCStAdGFyZ2V0PWFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSBmaWxlczoKLSAJJChQRVJMKSAkKFRPUCkvdXRpbC9maWxlcy5wbCAiQ1BVSURfT0JKPSQoQ1BVSURfT0JKKSIgTWFrZWZpbGUgPj4gJChUT1ApL01JTkZPCi0tCUB0YXJnZXQ9ZmlsZXM7ICQoUkVDVVJTSVZFX01BS0UpCi0rCStAdGFyZ2V0PWZpbGVzOyAkKFJFQ1VSU0lWRV9NQUtFKQotIAotIGxpbmtzOgotIAlAJChQRVJMKSAkKFRPUCkvdXRpbC9ta2xpbmsucGwgLi4vaW5jbHVkZS9vcGVuc3NsICQoRVhIRUFERVIpCi1AQCAtMTAwLDcgKzEwMCw3IEBACi0gIyBsaWI6ICQoTElCKTogYXJlIHNwbGl0dGVkIHRvIGF2b2lkIGVuZC1sZXNzIGxvb3AKLSBsaWI6CSQoTElCKQotIAlAdG91Y2ggbGliCi0tJChMSUIpOgkkKExJQk9CSikKLSskKExJQik6CSQoTElCT0JKKSB8IHN1YmRpcnMKLSAJJChBUikgJChMSUIpICQoTElCT0JKKQotIAl0ZXN0IC16ICIkKEZJUFNMSUJESVIpIiB8fCAkKEFSKSAkKExJQikgJChGSVBTTElCRElSKWZpcHNjYW5pc3Rlci5vCi0gCSQoUkFOTElCKSAkKExJQikgfHwgZWNobyBOZXZlciBtaW5kLgotQEAgLTExMSw3ICsxMTEsNyBAQAotIAlmaQotIAotIGxpYnM6Ci0tCUB0YXJnZXQ9bGliOyAkKFJFQ1VSU0lWRV9NQUtFKQotKwkrQHRhcmdldD1saWI7ICQoUkVDVVJTSVZFX01BS0UpCi0gCi0gaW5zdGFsbDoKLSAJQFsgLW4gIiQoSU5TVEFMTFRPUCkiIF0gIyBzaG91bGQgYmUgc2V0IGJ5IHRvcCBNYWtlZmlsZS4uLgotQEAgLTEyMCw3ICsxMjAsNyBAQAotIAkoY3AgJCRpICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpOyBcCi0gCWNobW9kIDY0NCAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaSApOyBcCi0gCWRvbmU7Ci0tCUB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSsJK0B0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSBsaW50OgotIAlAdGFyZ2V0PWxpbnQ7ICQoUkVDVVJTSVZFX01BS0UpCi0tLS0gb3BlbnNzbC0xLjAuMmcvZW5naW5lcy9NYWtlZmlsZQotKysrIG9wZW5zc2wtMS4wLjJnL2VuZ2luZXMvTWFrZWZpbGUKLUBAIC03Miw3ICs3Miw3IEBACi0gCi0gYWxsOglsaWIgc3ViZGlycwotIAotLWxpYjoJJChMSUJPQkopCi0rbGliOgkkKExJQk9CSikgfCBzdWJkaXJzCi0gCUBpZiBbIC1uICIkKFNIQVJFRF9MSUJTKSIgXTsgdGhlbiBcCi0gCQlzZXQgLWU7IFwKLSAJCWZvciBsIGluICQoTElCTkFNRVMpOyBkbyBcCi1AQCAtODksNyArODksNyBAQAotIAotIHN1YmRpcnM6Ci0gCWVjaG8gJChFRElSUykKLS0JQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0rCStAdGFyZ2V0PWFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSBmaWxlczoKLSAJJChQRVJMKSAkKFRPUCkvdXRpbC9maWxlcy5wbCBNYWtlZmlsZSA+PiAkKFRPUCkvTUlORk8KLUBAIC0xMjgsNyArMTI4LDcgQEAKLSAJCQkgIG12IC1mICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS8kKExJQkRJUikvZW5naW5lcy8kJHBmeCQkbCQkc2Z4Lm5ldyAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvJChMSUJESVIpL2VuZ2luZXMvJCRwZngkJGwkJHNmeCApOyBcCi0gCQlkb25lOyBcCi0gCWZpCi0tCUB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSsJK0B0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSB0YWdzOgotIAljdGFncyAkKFNSQykKLS0tLSBvcGVuc3NsLTEuMC4yZy9NYWtlZmlsZS5vcmcKLSsrKyBvcGVuc3NsLTEuMC4yZy9NYWtlZmlsZS5vcmcKLUBAIC0yNzksMTcgKzI3OSwxNyBAQAotIGJ1aWxkX2xpYnNzbDogYnVpbGRfc3NsIGxpYnNzbC5wYwotIAotIGJ1aWxkX2NyeXB0bzoKLS0JQGRpcj1jcnlwdG87IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9Y3J5cHRvOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0gYnVpbGRfc3NsOiBidWlsZF9jcnlwdG8KLS0JQGRpcj1zc2w7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9c3NsOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0gYnVpbGRfZW5naW5lczogYnVpbGRfY3J5cHRvCi0tCUBkaXI9ZW5naW5lczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotKwkrQGRpcj1lbmdpbmVzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0gYnVpbGRfYXBwczogYnVpbGRfbGlicwotLQlAZGlyPWFwcHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9YXBwczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotIGJ1aWxkX3Rlc3RzOiBidWlsZF9saWJzCi0tCUBkaXI9dGVzdDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotKwkrQGRpcj10ZXN0OyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0gYnVpbGRfdG9vbHM6IGJ1aWxkX2xpYnMKLS0JQGRpcj10b29sczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotKwkrQGRpcj10b29sczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotIAotIGFsbF90ZXN0YXBwczogYnVpbGRfbGlicyBidWlsZF90ZXN0YXBwcwotIGJ1aWxkX3Rlc3RhcHBzOgotQEAgLTU0NCw3ICs1NDQsNyBAQAotIAkoY3AgJCRpICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpOyBcCi0gCWNobW9kIDY0NCAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaSApOyBcCi0gCWRvbmU7Ci0tCUBzZXQgLWU7IHRhcmdldD1pbnN0YWxsOyAkKFJFQ1VSU0lWRV9CVUlMRF9DTUQpCi0rCStAc2V0IC1lOyB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfQlVJTERfQ01EKQotIAlAc2V0IC1lOyBsaWJsaXN0PSIkKExJQlMpIjsgZm9yIGkgaW4gJCRsaWJsaXN0IDtcCi0gCWRvIFwKLSAJCWlmIFsgLWYgIiQkaSIgXTsgdGhlbiBcCi0tLS0gb3BlbnNzbC0xLjAuMmcvTWFrZWZpbGUuc2hhcmVkCi0rKysgb3BlbnNzbC0xLjAuMmcvTWFrZWZpbGUuc2hhcmVkCi1AQCAtMTA1LDYgKzEwNSw3IEBACi0gICAgIFNIQVJFREZMQUdTPSIkJHtTSEFSRURGTEFHUzotJChDRkxBR1MpICQoU0hBUkVEX0xERkxBR1MpfSI7IFwKLSAgICAgTElCUEFUSD1gZm9yIHggaW4gJCRMSUJERVBTOyBkbyBlY2hvICQkeDsgZG9uZSB8IHNlZCAtZSAncy9eICotTC8vO3QnIC1lIGQgfCB1bmlxYDsgXAotICAgICBMSUJQQVRIPWBlY2hvICQkTElCUEFUSCB8IHNlZCAtZSAncy8gLzovZydgOyBcCi0rICAgIFsgLWUgJCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCBdICYmIGV4aXQgMDsgXAotICAgICBMRF9MSUJSQVJZX1BBVEg9JCRMSUJQQVRIOiQkTERfTElCUkFSWV9QQVRIIFwKLSAgICAgJCR7U0hBUkVEQ01EfSAkJHtTSEFSRURGTEFHU30gXAotIAktbyAkJFNITElCJCRTSExJQl9TT1ZFUiQkU0hMSUJfU1VGRklYIFwKLUBAIC0xMjIsNiArMTIzLDcgQEAKLSAJCQlkb25lOyBcCi0gCQlmaTsgXAotIAkJaWYgWyAtbiAiJCRTSExJQl9TT1ZFUiIgXTsgdGhlbiBcCi0rCQkJWyAtZSAiJCRTSExJQiQkU0hMSUJfU1VGRklYIiBdIHx8IFwKLSAJCQkoICQoU0VUX1gpOyBybSAtZiAkJFNITElCJCRTSExJQl9TVUZGSVg7IFwKLSAJCQkgIGxuIC1zICQkcHJldiAkJFNITElCJCRTSExJQl9TVUZGSVggKTsgXAotIAkJZmk7IFwKLS0tLSBvcGVuc3NsLTEuMC4yZy90ZXN0L01ha2VmaWxlCi0rKysgb3BlbnNzbC0xLjAuMmcvdGVzdC9NYWtlZmlsZQotQEAgLTE0NCw3ICsxNDQsNyBAQAotIHRhZ3M6Ci0gCWN0YWdzICQoU1JDKQotIAotLXRlc3RzOglleGUgYXBwcyAkKFRFU1RTKQotK3Rlc3RzOglleGUgJChURVNUUykKLSAKLSBhcHBzOgotIAlAKGNkIC4uOyAkKE1BS0UpIERJUlM9YXBwcyBhbGwpCi1AQCAtNDM4LDEzNiArNDM4LDEzNiBAQAotIAkJbGlua19hcHAuJCR7c2hsaWJfdGFyZ2V0fQotIAotICQoUlNBVEVTVCkkKEVYRV9FWFQpOiAkKFJTQVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoUlNBVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFJTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEJOVEVTVCkkKEVYRV9FWFQpOiAkKEJOVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChCTlRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChCTlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVDVEVTVCkkKEVYRV9FWFQpOiAkKEVDVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFQ1RFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFQ1RFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVYUFRFU1QpJChFWEVfRVhUKTogJChFWFBURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKEVYUFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFWFBURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChJREVBVEVTVCkkKEVYRV9FWFQpOiAkKElERUFURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKElERUFURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoSURFQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKE1EMlRFU1QpJChFWEVfRVhUKTogJChNRDJURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKE1EMlRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChNRDJURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChTSEFURVNUKSQoRVhFX0VYVCk6ICQoU0hBVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChTSEFURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoU0hBVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoU0hBMVRFU1QpJChFWEVfRVhUKTogJChTSEExVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChTSEExVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNIQTFURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChTSEEyNTZURVNUKSQoRVhFX0VYVCk6ICQoU0hBMjU2VEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChTSEEyNTZURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoU0hBMjU2VEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoU0hBNTEyVEVTVCkkKEVYRV9FWFQpOiAkKFNIQTUxMlRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU0hBNTEyVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNIQTUxMlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFJNRFRFU1QpJChFWEVfRVhUKTogJChSTURURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFJNRFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChSTURURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChNREMyVEVTVCkkKEVYRV9FWFQpOiAkKE1EQzJURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKE1EQzJURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoTURDMlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKE1ENFRFU1QpJChFWEVfRVhUKTogJChNRDRURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKE1ENFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChNRDRURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChNRDVURVNUKSQoRVhFX0VYVCk6ICQoTUQ1VEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChNRDVURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoTUQ1VEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoSE1BQ1RFU1QpJChFWEVfRVhUKTogJChITUFDVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChITUFDVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEhNQUNURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChXUFRFU1QpJChFWEVfRVhUKTogJChXUFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoV1BURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoV1BURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChSQzJURVNUKSQoRVhFX0VYVCk6ICQoUkMyVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChSQzJURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoUkMyVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoQkZURVNUKSQoRVhFX0VYVCk6ICQoQkZURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKEJGVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEJGVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoQ0FTVFRFU1QpJChFWEVfRVhUKTogJChDQVNUVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChDQVNUVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKENBU1RURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChSQzRURVNUKSQoRVhFX0VYVCk6ICQoUkM0VEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChSQzRURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoUkM0VEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoUkM1VEVTVCkkKEVYRV9FWFQpOiAkKFJDNVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoUkM1VEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFJDNVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKERFU1RFU1QpJChFWEVfRVhUKTogJChERVNURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKERFU1RFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChERVNURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChSQU5EVEVTVCkkKEVYRV9FWFQpOiAkKFJBTkRURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFJBTkRURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoUkFORFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKERIVEVTVCkkKEVYRV9FWFQpOiAkKERIVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChESFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChESFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKERTQVRFU1QpJChFWEVfRVhUKTogJChEU0FURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKERTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChEU0FURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChNRVRIVEVTVCkkKEVYRV9FWFQpOiAkKE1FVEhURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKE1FVEhURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoTUVUSFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFNTTFRFU1QpJChFWEVfRVhUKTogJChTU0xURVNUKS5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU1NMVEVTVCk7ICQoRklQU19CVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoU1NMVEVTVCk7ICQoRklQU19CVUlMRF9DTUQpCi0gCi0gJChFTkdJTkVURVNUKSQoRVhFX0VYVCk6ICQoRU5HSU5FVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFTkdJTkVURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoRU5HSU5FVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoRVZQVEVTVCkkKEVYRV9FWFQpOiAkKEVWUFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRVZQVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEVWUFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVWUEVYVFJBVEVTVCkkKEVYRV9FWFQpOiAkKEVWUEVYVFJBVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFVlBFWFRSQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFVlBFWFRSQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVDRFNBVEVTVCkkKEVYRV9FWFQpOiAkKEVDRFNBVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFQ0RTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFQ0RTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVDREhURVNUKSQoRVhFX0VYVCk6ICQoRUNESFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRUNESFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFQ0RIVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoSUdFVEVTVCkkKEVYRV9FWFQpOiAkKElHRVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoSUdFVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKElHRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEpQQUtFVEVTVCkkKEVYRV9FWFQpOiAkKEpQQUtFVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChKUEFLRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChKUEFLRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEFTTjFURVNUKSQoRVhFX0VYVCk6ICQoQVNOMVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoQVNOMVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChBU04xVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoU1JQVEVTVCkkKEVYRV9FWFQpOiAkKFNSUFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU1JQVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNSUFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFYzTkFNRVRFU1QpJChFWEVfRVhUKTogJChWM05BTUVURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFYzTkFNRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChWM05BTUVURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChIRUFSVEJFQVRURVNUKSQoRVhFX0VYVCk6ICQoSEVBUlRCRUFUVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChIRUFSVEJFQVRURVNUKTsgJChCVUlMRF9DTURfU1RBVElDKQotKwkrQHRhcmdldD0kKEhFQVJUQkVBVFRFU1QpOyAkKEJVSUxEX0NNRF9TVEFUSUMpCi0gCi0gJChDT05TVFRJTUVURVNUKSQoRVhFX0VYVCk6ICQoQ09OU1RUSU1FVEVTVCkubwotLQlAdGFyZ2V0PSQoQ09OU1RUSU1FVEVTVCkgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoQ09OU1RUSU1FVEVTVCkgJChCVUlMRF9DTUQpCi0gCi0gJChWRVJJRllFWFRSQVRFU1QpJChFWEVfRVhUKTogJChWRVJJRllFWFRSQVRFU1QpLm8KLS0JQHRhcmdldD0kKFZFUklGWUVYVFJBVEVTVCkgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoVkVSSUZZRVhUUkFURVNUKSAkKEJVSUxEX0NNRCkKLSAKLSAkKENMSUVOVEhFTExPVEVTVCkkKEVYRV9FWFQpOiAkKENMSUVOVEhFTExPVEVTVCkubwotLQlAdGFyZ2V0PSQoQ0xJRU5USEVMTE9URVNUKSAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChDTElFTlRIRUxMT1RFU1QpICQoQlVJTERfQ01EKQotIAotICQoQkFERFRMU1RFU1QpJChFWEVfRVhUKTogJChCQUREVExTVEVTVCkubwotLQlAdGFyZ2V0PSQoQkFERFRMU1RFU1QpICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEJBRERUTFNURVNUKSAkKEJVSUxEX0NNRCkKLSAKLSAkKFNTTFYyQ09ORlRFU1QpJChFWEVfRVhUKTogJChTU0xWMkNPTkZURVNUKS5vCi0tCUB0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKLSAKLSAkKERUTFNURVNUKSQoRVhFX0VYVCk6ICQoRFRMU1RFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRFRMU1RFU1QpOyBleG9iaj1zc2x0ZXN0bGliLm87ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKERUTFNURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKLSAKLSAjJChBRVNURVNUKS5vOiAkKEFFU1RFU1QpLmMKLSAjCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtRElOVEVSTUVESUFURV9WQUxVRV9LQVQgLURUUkFDRV9LQVRfTUNUICQoQUVTVEVTVCkuYwotQEAgLTU4MCw2ICs1ODAsNiBAQAotICMJZmkKLSAKLSBkdW1teXRlc3QkKEVYRV9FWFQpOiBkdW1teXRlc3QubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9ZHVtbXl0ZXN0OyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9ZHVtbXl0ZXN0OyAkKEJVSUxEX0NNRCkKLSAKLSAjIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCi0gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAzYjIwZmNlLi42NWM2Y2M3Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3J1bi1wdGVzdApAQCAtMSwyICsxLDQgQEAKICMhL2Jpbi9zaAotbWFrZSAtayBydW50ZXN0CitjZCB0ZXN0CitPUEVOU1NMX0VOR0lORVM9Li4vZW5naW5lcyBCTERUT1A9Li4gU1JDVE9QPS4uIHBlcmwgcnVuX3Rlc3RzLnBsCitjZCAuLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZjk3ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC5pbmMKQEAgLTAsMCArMSwyNzUgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIHwgU1NMZWF5IiBkdWFsIGxpY2Vuc2UKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY5YThmOTY4MTA3MzQ1ZTBiNzVhYThjMmVjYWE3ZWM4IgorCitERVBFTkRTID0gIm1ha2VkZXBlbmQtbmF0aXZlIGhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBvcGVuc3NsLW5hdGl2ZSIKKworUFJPVklERVMgKz0gIm9wZW5zc2wxMCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L29wZW5zc2wtJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz0gImNyeXB0b2Rldi1saW51eCIKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSAiLCwsIgorUEFDS0FHRUNPTkZJR1tjcnlwdG9kZXYtbGludXhdID0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMsLGNyeXB0b2Rldi1saW51eCIKKworVEVSTUlPX2xpYmMtbXVzbCA9ICItRFRFUk1JT1MiCitURVJNSU8gPz0gIi1EVEVSTUlPIgorIyBBdm9pZCBiaW5hcmllcyBiZWluZyBtYXJrZWQgYXMgcmVxdWlyaW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sgc2luY2UgaXQgCisjIGRvZXNuJ3Qod2hpY2ggY2F1c2VzIGFuZCB0aGlzIGNhdXNlcyBpc3N1ZXMgd2l0aCBTRUxpbnV4CitDRkxBRyA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1ETF9FTkRJQU4nLCAnLURCX0VORElBTicsIGQpfSBcCisJICR7VEVSTUlPfSAke0NGTEFHU30gLVdhbGwgLVdhLC0tbm9leGVjc3RhY2siCisKK2V4cG9ydCBESVJTID0gImNyeXB0byBzc2wgYXBwcyIKK2V4cG9ydCBFWF9MSUJTID0gIi1sZ2NjIC1sZGwiCitleHBvcnQgQVMgPSAiJHtDQ30gLWMiCisKK2luaGVyaXQgcGtnY29uZmlnIHNpdGVpbmZvIG11bHRpbGliX2hlYWRlciBwdGVzdCByZWxhdGl2ZV9zeW1saW5rcworCitQQUNLQUdFUyA9KyAibGliY3J5cHRvIGxpYnNzbCAke1BOfS1taXNjIG9wZW5zc2wtY29uZiIKK0ZJTEVTX2xpYmNyeXB0byA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgorRklMRVNfbGlic3NsID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCitGSUxFU18ke1BOfSA9KyAiICR7bGliZGlyfS9zc2wvKiIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC9taXNjIgorUkRFUEVORFNfJHtQTn0tbWlzYyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIKKworIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiAgTWFrZSB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiAgVGhpcyB3aWxsIGVuYWJsZSB0aGUgY29uZmlndXJhdGlvbgorIyBmaWxlIHRvIGJlIGluc3RhbGxlZCBmb3IgYm90aCB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgYW5kIHRoZSBsaWJjcnlwdG8KKyMgcGFja2FnZSBzaW5jZSB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCitGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCitDT05GRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorUlJFQ09NTUVORFNfbGliY3J5cHRvICs9ICJvcGVuc3NsLWNvbmYiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbWlzYyBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBiYyIKKworIyBSZW1vdmUgdGhpcyB0byBlbmFibGUgU1NMdjMuIFNTTHYzIGlzIGRlZmF1bHRlZCB0byBkaXNhYmxlZCBkdWUgdG8gdGhlIFBPT0RMRQorIyB2dWxuZXJhYmlsaXR5CitFWFRSQV9PRUNPTkYgPSAiIC1uby1zc2wzIgorCitkb19jb25maWd1cmVfcHJlcGVuZF9kYXJ3aW4gKCkgeworCXNlZCAtaSAtZSAnL3ZlcnNpb24tc2NyaXB0PW9wZW5zc2xcLmxkL2QnIENvbmZpZ3VyZQorfQorCitkb19jb25maWd1cmUgKCkgeworCWNkIHV0aWwKKwlwZXJsIHBlcmxwYXRoLnBsICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQorCWNkIC4uCisJbG4gLXNmIGFwcHMvb3BlbnNzbC5wb2QgY3J5cHRvL2NyeXB0by5wb2Qgc3NsL3NzbC5wb2QgZG9jLworCisJb3M9JHtIT1NUX09TfQorCWNhc2UgJG9zIGluCisJbGludXgtZ251ZWFiaSB8XAorCWxpbnV4LWdudXNwZSB8XAorCWxpbnV4LW11c2xlYWJpIHxcCisJbGludXgtbXVzbHNwZSB8XAorCWxpbnV4LW11c2wgKQorCQlvcz1saW51eAorCQk7OworCQkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hcm1lYikKKwkJdGFyZ2V0PWxpbnV4LWVsZi1hcm1lYgorCQk7OworCWxpbnV4LWFhcmNoNjQqKQorCQl0YXJnZXQ9bGludXgtYWFyY2g2NAorCQk7OworCWxpbnV4LXNoMykKKwkJdGFyZ2V0PWRlYmlhbi1zaDMKKwkJOzsKKwlsaW51eC1zaDQpCisJCXRhcmdldD1kZWJpYW4tc2g0CisJCTs7CisJbGludXgtaTQ4NikKKwkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk0ODYKKwkJOzsKKwlsaW51eC1pNTg2IHwgbGludXgtdmlhYzMpCisJCXRhcmdldD1kZWJpYW4taTM4Ni1pNTg2CisJCTs7CisJbGludXgtaTY4NikKKwkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk2ODYvY21vdgorCQk7OworCWxpbnV4LWdudXgzMi14ODZfNjQgfCBsaW51eC1tdXNseDMyLXg4Nl82NCApCisJCXRhcmdldD1saW51eC14MzIKKwkJOzsKKwlsaW51eC1nbnU2NC14ODZfNjQpCisJCXRhcmdldD1saW51eC14ODZfNjQKKwkJOzsKKwlsaW51eC1nbnVuMzItbWlwcyplbCkKKwkJdGFyZ2V0PWRlYmlhbi1taXBzbjMyZWwKKwkJOzsKKwlsaW51eC1nbnVuMzItbWlwcyopCisJCXRhcmdldD1kZWJpYW4tbWlwc24zMgorCQk7OworCWxpbnV4LW1pcHMqNjQqZWwpCisJCXRhcmdldD1kZWJpYW4tbWlwczY0ZWwKKwkJOzsKKwlsaW51eC1taXBzKjY0KikKKwkJdGFyZ2V0PWRlYmlhbi1taXBzNjQKKwkJOzsKKwlsaW51eC1taXBzKmVsKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHNlbAorCQk7OworCWxpbnV4LW1pcHMqKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHMKKwkJOzsKKwlsaW51eC1taWNyb2JsYXplKnxsaW51eC1uaW9zMip8bGludXgtZ251KmlscDMyKiopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1zdXBlcnNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OAorCQk7OworCWxpbnV4LXNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OAorCQk7OworCWRhcndpbi1pMzg2KQorCQl0YXJnZXQ9ZGFyd2luLWkzODYtY2MKKwkJOzsKKwllc2FjCisJIyBpbmplY3QgbWFjaGluZS1zcGVjaWZpYyBmbGFncworCXNlZCAtaSAtZSAic3xeXChcIiR0YXJnZXRcIixccypcIlteOl1cK1wpOlwoW146XVwrXCl8XDE6JHtDRkxBR318ZyIgQ29uZmlndXJlCisgICAgICAgIHVzZXByZWZpeD0ke3ByZWZpeH0KKyAgICAgICAgaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KKyAgICAgICAgICAgICAgICB1c2VwcmVmaXg9LworICAgICAgICBmaSAgICAgICAgCisJcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gc2hhcmVkIC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wgLS1saWJkaXI9YGJhc2VuYW1lICR7bGliZGlyfWAgJHRhcmdldAorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICBzZWQgLWkgJ3MvXCgoT1BFTlNTTD1cKSIuKiIvXDEib3BlbnNzbCIvJyBNYWtlZmlsZQorfQorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIGRlcGVuZAorCW9lX3J1bm1ha2UKK30KKworZG9fY29tcGlsZV9wdGVzdCAoKSB7CisJIyBidWlsZCBkZXBlbmRlbmNpZXMgZm9yIHRlc3QgZGlyZWN0b3J5IHRvbworCWV4cG9ydCBESVJTPSIkRElSUyB0ZXN0IgorCW9lX3J1bm1ha2UgZGVwZW5kCisJb2VfcnVubWFrZSBidWlsZHRlc3QKK30KKworZG9faW5zdGFsbCAoKSB7CisJIyBDcmVhdGUgJHtEfS8ke3ByZWZpeH0gdG8gZml4IHBhcmFsbGVsIGlzc3VlcworCW1rZGlyIC1wICR7RH0vJHtwcmVmaXh9LworCisJb2VfcnVubWFrZSBJTlNUQUxMX1BSRUZJWD0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIGluc3RhbGwKKworCW9lX2xpYmluc3RhbGwgLXNvIGxpYmNyeXB0byAke0R9JHtsaWJkaXJ9CisJb2VfbGliaW5zdGFsbCAtc28gbGlic3NsICR7RH0ke2xpYmRpcn0KKworCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKwljcCAtLWRlcmVmZXJlbmNlIC1SIGluY2x1ZGUvb3BlbnNzbCAke0R9JHtpbmNsdWRlZGlyfQorCisJaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorCXNlZCAtaSAtZSAncywvZXRjL29wZW5zc2wsJHtzeXNjb25mZGlyfS9zc2wsZycgJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorCisJb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdwZXJsJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL0NBLnBsCisJCXNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0CisJZWxzZQorCQlybSAtZiAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL0NBLnBsICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvdHNnZXQKKwlmaQorCisJIyBDcmVhdGUgU1NMIHN0cnVjdHVyZQorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NsLworCW12ICR7RH0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mIFwKKwkgICAke0R9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZSBcCisJICAgXAorCSAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KKwlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvY2VydHMgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMKKwlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvcHJpdmF0ZSAke0R9JHtsaWJkaXJ9L3NzbC9wcml2YXRlCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mICR7RH0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mCisKKwkjIFJlbmFtZSBtYW4gcGFnZXMgdG8gcHJlZml4IG9wZW5zc2wxMC0qCisJZm9yIGYgaW4gYGZpbmQgJHtEfSR7bWFuZGlyfSAtdHlwZSBmYDsgZG8KKwkgICAgbXYgJGYgJChkaXJuYW1lICRmKS9vcGVuc3NsMTAtJChiYXNlbmFtZSAkZikKKwlkb25lCisJZm9yIGYgaW4gYGZpbmQgJHtEfSR7bWFuZGlyfSAtdHlwZSBsYDsgZG8KKwkgICAgbG5fZj1gcmVhZGxpbmsgJGZgCisJICAgIHJtIC1mICRmCisJICAgIGxuIC1zIG9wZW5zc2wxMC0kbG5fZiAkKGRpcm5hbWUgJGYpL29wZW5zc2wxMC0kKGJhc2VuYW1lICRmKQorCWRvbmUKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLXIgLUwgTWFrZWZpbGUub3JnIE1ha2VmaWxlIHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICAgICAjIFJlcGxhY2UgdGhlIHBhdGggdG8gbmF0aXZlIHBlcmwgd2l0aCB0aGUgcGF0aCB0byB0YXJnZXQgcGVybAorICAgICAgICBzZWQgLWkgJ3MsXlBFUkw9LiosUEVSTD0ke2JpbmRpcn0vcGVybCwnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisKKwljcCBDb25maWd1cmUgY29uZmlnIGVfb3MuaCAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yIC1MIGluY2x1ZGUgJHtEfSR7UFRFU1RfUEFUSH0KKwlsbiAtc2YgJHtsaWJkaXJ9L2xpYmNyeXB0by5hICR7RH0ke1BURVNUX1BBVEh9CisJbG4gLXNmICR7bGliZGlyfS9saWJzc2wuYSAke0R9JHtQVEVTVF9QQVRIfQorCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2NyeXB0bworCWNwIGNyeXB0by9jb25zdGFudF90aW1lX2xvY2wuaCAke0R9JHtQVEVTVF9QQVRIfS9jcnlwdG8KKwljcCAtciBjZXJ0cyAke0R9JHtQVEVTVF9QQVRIfQorCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlsbiAtc2YgJHtsaWJkaXJ9L3NzbC9taXNjL0NBLnNoICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlsbiAtc2YgJHtiaW5kaXJ9L29wZW5zc2wgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJY3AgYXBwcy9zZXJ2ZXIucGVtICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJY3AgYXBwcy9zZXJ2ZXIyLnBlbSAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAorCWluc3RhbGwgdXRpbC9vcGVuc3Nsd3JhcC5zaCAgICAke0R9JHtQVEVTVF9QQVRIfS91dGlsCisJaW5zdGFsbCB1dGlsL3NobGliX3dyYXAuc2ggICAgICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKKwkjIFRpbWUgc3RhbXBzIGFyZSByZWxldmFudCBmb3IgIm1ha2UgYWxsdGVzdHMiLCBvdGhlcndpc2UKKwkjIG1ha2UgbWF5IHRyeSB0byByZWNvbXBpbGUgYmluYXJpZXMuIE5vdCBvbmx5IG11c3QgdGhlCisJIyBiaW5hcnkgZmlsZXMgYmUgbmV3ZXIgdGhhbiB0aGUgc291cmNlcywgdGhleSBhbHNvIG11c3QKKwkjIGJlIG1vcmUgcmVjZW50IHRoYW4gdGhlIGhlYWRlciBmaWxlcyBpbiAvdXNyL2luY2x1ZGUuCisJIworCSMgVXNpbmcgImNwIC1hIiBpcyBub3Qgc3VmZmljaWVudCwgYmVjYXVzZSBkb19pbnN0YWxsCisJIyBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgdGltZSBzdGFtcHMuCisJIworCSMgU28gaW5zdGVhZCBvZiB1c2luZyB0aGUgb3JpZ2luYWwgZmlsZSBzdGFtcHMsIHdlIHNldAorCSMgdGhlIGN1cnJlbnQgdGltZSBmb3IgYWxsIGZpbGVzLiBCaW5hcmllcyB3aWxsIGdldAorCSMgbW9kaWZpZWQgYWdhaW4gbGF0ZXIgd2hlbiBzdHJpcHBpbmcgdGhlbSwgYnV0IHRoYXQncyBva2F5LgorCXRvdWNoICR7RH0ke1BURVNUX1BBVEh9CisJZmluZCAke0R9JHtQVEVTVF9QQVRIfSAtdHlwZSBmIC1wcmludDAgfCB4YXJncyAtLXZlcmJvc2UgLTAgdG91Y2ggLXIgJHtEfSR7UFRFU1RfUEFUSH0KKworCSMgZXhjbHVkZSBiaW5hcnkgZmlsZXMgb3IgdGhlIHBhY2thZ2Ugd29uJ3QgaW5zdGFsbAorCWZvciBkIGluIHNzbHRlc3Rfb2xkIHYzZXh0IHg1MDlhdXg7IGRvCisJCXJtIC1yZiAke0R9JHtsaWJkaXJ9LyR7QlBOfS9wdGVzdC90ZXN0LyRkCisJZG9uZQorCisJIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzCisJc2VkIC1pIFwKKyAgICAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L0NvbmZpZ3VyZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9vcGVuc3NsIFwKKwkgICAgT1BFTlNTTF9DT05GPSR7bGliZGlyfS9zc2wvb3BlbnNzbC5jbmYgXAorCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCisJICAgIFNTTF9DRVJUX0ZJTEU9JHtsaWJkaXJ9L3NzbC9jZXJ0LnBlbSBcCisJICAgIE9QRU5TU0xfRU5HSU5FUz0ke2xpYmRpcn0vc3NsL2VuZ2luZXMKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJrLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yay5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNkMWE1MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJrLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotcmVxdWlyZSBvcGVuc3NsLmluYwotCi0jIEZvciB0YXJnZXQgc2lkZSB2ZXJzaW9ucyBvZiBvcGVuc3NsIGVuYWJsZSBzdXBwb3J0IGZvciBPQ0YgTGludXggZHJpdmVyCi0jIGlmIHRoZXkgYXJlIGF2YWlsYWJsZS4KLURFUEVORFMgKz0gImNyeXB0b2Rldi1saW51eCIKLQotQ0ZMQUcgKz0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMiCi1DRkxBR19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtZlBJQyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjdmZmE1ZDc0YmI1YTMzNzA1NmMxNGIyZWY5M2ZiZjYiCi0KLWV4cG9ydCBESVJTID0gImNyeXB0byBzc2wgYXBwcyBlbmdpbmVzIgotZXhwb3J0IE9FX0xERkxBR1M9IiR7TERGTEFHU30iCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9maW5kLnBsO3N1YmRpcj0ke0JQfS91dGlsLyBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWNfcmVoYXNoLnNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2hhcmVkLWxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29lLWxkZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY2EucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1kaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9waWMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpeC1jaXBoZXItZGVzLWVkZTMtY2ZiMS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1hdm9pZC1OVUxMLXBvaW50ZXItZGVyZWZlcmVuY2UtaW4tRVZQX0RpZ2VzdEluaXRfZXgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QtZGVwcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC0xLjAuMmEteDMyLWFzbS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjk2NWZjMGJmMDFiZjg4MmIzMTMxNGI2MTM5MWFlNjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmIzOTc3YzYxZjJhZWRmMGY5NjM2N2RjZmI1YzZlNTc4Y2YzN2U3YjhkOTEzYjRlY2I2NjQzYzNjYjg4ZDhjMCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWVuZ2luZXMiCi1GSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9zc2wvZW5naW5lcy8qLnNvICR7bGliZGlyfS9lbmdpbmVzIgotCi0jIFRoZSBjcnlwdG9fdXNlX2JpZ2ludCBwYXRjaCBtZWFucyB0aGF0IHBlcmwncyBiaWdudW0gbW9kdWxlIG5lZWRzIHRvIGJlCi0jIGluc3RhbGxlZCwgYnV0IHNvbWUgZGlzdHJpYnV0aW9ucyAoZm9yIGV4YW1wbGUgRmVkb3JhIDIzKSBkb24ndCBzaGlwIGl0IGJ5Ci0jIGRlZmF1bHQuICBBcyB0aGUgcmVzdWx0aW5nIGVycm9yIGlzIHZlcnkgbWlzbGVhZGluZyBjaGVjayBmb3IgYmlnbnVtIGJlZm9yZQotIyBidWlsZGluZy4KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWlmICEgcGVybCAtTWJpZ2ludCAtZSB0cnVlOyB0aGVuCi0JCWJiZmF0YWwgIlRoZSBwZXJsIG1vZHVsZSAnYmlnbnVtJyB3YXMgbm90IGZvdW5kIGJ1dCB0aGlzIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG9wZW5zc2wuICBQbGVhc2UgaW5zdGFsbCB0aGlzIG1vZHVsZSAob2Z0ZW4gcGFja2FnZWQgYXMgcGVybC1iaWdudW0pIGFuZCByZS1ydW4gYml0YmFrZS4iCi0JZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMm4uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNDQ0YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiCkBAIC0wLDAgKzEsNjAgQEAKK3JlcXVpcmUgb3BlbnNzbDEwLmluYworCisjIEZvciB0YXJnZXQgc2lkZSB2ZXJzaW9ucyBvZiBvcGVuc3NsIGVuYWJsZSBzdXBwb3J0IGZvciBPQ0YgTGludXggZHJpdmVyCisjIGlmIHRoZXkgYXJlIGF2YWlsYWJsZS4KKworQ0ZMQUcgKz0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMiCitDRkxBR19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtZlBJQyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDU3ZDkyMThjNjE4MGUxZDllZTQwNzU3MmIyZGQyMjUiCisKK2V4cG9ydCBESVJTID0gImNyeXB0byBzc2wgYXBwcyBlbmdpbmVzIgorZXhwb3J0IE9FX0xERkxBR1M9IiR7TERGTEFHU30iCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9maW5kLnBsO3N1YmRpcj1vcGVuc3NsLSR7UFZ9L3V0aWwvIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWNfcmVoYXNoLnNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NoYXJlZC1saWJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29lLWxkZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vcGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LWRlcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC0xLjAuMmEteDMyLWFzbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxM2JkYzFiMWQxZmYzOWI2ZmQ0MmEyNTVlNzQ2NzZhNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzBiYWJiNzVmMjc4YzM5ZTBjNTBlOGM0ZTc0OTNiYzBmMThkYjY4Njc0NzgzNDFhODMyYTk4MmZkMTVhOGZlIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCisKKyMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKKyMgaW5zdGFsbGVkLCBidXQgc29tZSBkaXN0cmlidXRpb25zIChmb3IgZXhhbXBsZSBGZWRvcmEgMjMpIGRvbid0IHNoaXAgaXQgYnkKKyMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCisjIGJ1aWxkaW5nLgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJaWYgISBwZXJsIC1NYmlnaW50IC1lIHRydWU7IHRoZW4KKwkJYmJmYXRhbCAiVGhlIHBlcmwgbW9kdWxlICdiaWdudW0nIHdhcyBub3QgZm91bmQgYnV0IHRoaXMgaXMgcmVxdWlyZWQgdG8gYnVpbGQgb3BlbnNzbC4gIFBsZWFzZSBpbnN0YWxsIHRoaXMgbW9kdWxlIChvZnRlbiBwYWNrYWdlZCBhcyBwZXJsLWJpZ251bSkgYW5kIHJlLXJ1biBiaXRiYWtlLiIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4wZy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0OWJmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIKQEAgLTAsMCArMSwxNTYgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIHwgU1NMZWF5IiBkdWFsIGxpY2Vuc2UKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNhZTZkYTEwZjRmZmQ5NzAzMjE0Nzc2ZDJhYWJjZTMyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYTVmMWI4YjgzNWI4OGNhZGJjZTliMzVlZDk1MzFhNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTRkNTAxMjY3ZGEzOTMxMDkwNWNiNmRjOGM2MTIxZjdhMmNhZDQ1YTc3MDdmNzZkZjgyOGZlMWI4NTA3M2FmIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWNfcmVoYXNoLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaCBcCisgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vb3BlbnNzbC0ke1BWfSIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworZG9fY29uZmlndXJlICgpIHsKKwlvcz0ke0hPU1RfT1N9CisJY2FzZSAkb3MgaW4KKwlsaW51eC11Y2xpYmMgfFwKKwlsaW51eC11Y2xpYmNlYWJpIHxcCisJbGludXgtZ251ZWFiaSB8XAorCWxpbnV4LXVjbGliY3NwZSB8XAorCWxpbnV4LWdudXNwZSB8XAorCWxpbnV4LW11c2wqKQorCQlvcz1saW51eAorCQk7OworCQkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hcm1lYikKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYWFyY2g2NCopCisJCXRhcmdldD1saW51eC1hYXJjaDY0CisJCTs7CisJbGludXgtc2gzKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtc2g0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtaTQ4NikKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWk1ODYgfCBsaW51eC12aWFjMykKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWk2ODYpCisJCXRhcmdldD1saW51eC1lbGYKKwkJOzsKKwlsaW51eC1nbnV4MzIteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDMyCisJCTs7CisJbGludXgtZ251NjQteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDg2XzY0CisJCTs7CisJbGludXgtbWlwcykKKyAgICAgICAgICAgICAgICAjIHNwZWNpZnlpbmcgVEFSR0VUX0NDX0FSQ0ggcHJldmVudHMgb3BlbnNzbCBmcm9tIChpbmNvcnJlY3RseSkgYWRkaW5nIHRhcmdldCBhcmNoaXRlY3R1cmUgZmxhZ3MKKwkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCisJCTs7CisJbGludXgtbWlwc2VsKQorCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKKwkJOzsKKyAgICAgICAgbGludXgtZ251bjMyLW1pcHMqKQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4LW1pcHM2NAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0KQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKwlsaW51eC1taWNyb2JsYXplKnxsaW51eC1uaW9zMiopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1zdXBlcnNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OQorCQk7OworCWxpbnV4LXNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OQorCQk7OworCWRhcndpbi1pMzg2KQorCQl0YXJnZXQ9ZGFyd2luLWkzODYtY2MKKwkJOzsKKwllc2FjCisgICAgICAgIHVzZXByZWZpeD0ke3ByZWZpeH0KKyAgICAgICAgaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KKyAgICAgICAgICAgICAgICB1c2VwcmVmaXg9LworICAgICAgICBmaQorCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9IC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wtMS4xIC0tbGliZGlyPWBiYXNlbmFtZSAke2xpYmRpcn1gICR0YXJnZXQKK30KKworI3wgZW5naW5lcy9hZmFsZy9lX2FmYWxnLmM6IEluIGZ1bmN0aW9uICdldmVudGZkJzoKKyN8IGVuZ2luZXMvYWZhbGcvZV9hZmFsZy5jOjExMDoyMDogZXJyb3I6ICdfX05SX2V2ZW50ZmQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorI3wgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2V2ZW50ZmQsIG4pOworI3wgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn4KK0VYVFJBX09FQ09ORl9hYXJjaDY0ICs9ICJuby1hZmFsZ2VuZyIKKworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2V0Y29udGV4dCcKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWtlY29udGV4dCcKK0VYVFJBX09FQ09ORl9saWJjLW11c2wgKz0gIi1ET1BFTlNTTF9OT19BU1lOQyIKKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIE1BTlNVRkZJWD1zc2wgaW5zdGFsbAorICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgICAgICMgSW5zdGFsbCBhIGN1c3RvbSB2ZXJzaW9uIG9mIGNfcmVoYXNoIHRoYXQgY2FuIGhhbmRsZSBzeXNyb290cyBwcm9wZXJseS4KKyAgICAgICAgIyBUaGlzIHZlcnNpb24gaXMgdXNlZCBmb3IgZXhhbXBsZSB3aGVuIGluc3RhbGxpbmcgY2EtY2VydGlmaWNhdGVzIGR1cmluZworICAgICAgICAjIGltYWdlIGNyZWF0aW9uLgorICAgICAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vb3BlbnNzbC1jX3JlaGFzaC5zaCAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCisgICAgICAgIHNlZCAtaSAtZSAncywvZXRjL29wZW5zc2wsJHtzeXNjb25mZGlyfS9zc2wsZycgJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICAgICBjcCAtciAqICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAgICAgIyBQdXR0aW5nIC5zbyBmaWxlcyBpbiBwdGVzdCBwYWNrYWdlIHdpbGwgbWVzcyB1cCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBtYWluIG9wZW5zc2wgcGFja2FnZQorICAgICAgICAjIHNvIHdlIHJlbmFtZSB0aGVtIHRvIC5zby5wdGVzdCBhbmQgcGF0Y2ggdGhlIHRlc3QgYWNjb3JkaW5nbHkKKyAgICAgICAgbXYgJHtEfSR7UFRFU1RfUEFUSH0vbGliY3J5cHRvLnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zby5wdGVzdAorICAgICAgICBtdiAke0R9JHtQVEVTVF9QQVRIfS9saWJzc2wuc28gJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvLnB0ZXN0CisgICAgICAgIHNlZCAtaSAncy8kdGFyZ2V0e3NoYXJlZF9leHRlbnNpb25fc2ltcGxlfS8iLnNvLnB0ZXN0Ii8nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvcmVjaXBlcy85MC10ZXN0X3NobGlibG9hZC50Cit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1maWxlLXNwZWMtZnVuY3Rpb25zIGJhc2ggcHl0aG9uIgorCitGSUxFU18ke1BOfSA9KyAiICR7bGliZGlyfS9zc2wtMS4xLyoiCisKK1BBQ0tBR0VTID0rICIke1BOfS1lbmdpbmVzIgorRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vZW5naW5lcy0xLjEiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzhhZjMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlJQQyBwcm9ncmFtIG51bWJlciBtYXBwZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vbmVpbC5icm93bi5uYW1lL3BvcnRtYXAvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BvcnRtYXAuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTMxO21kNT01MWZmNjdlNjZlYzg0YjIwMDliMDE3YjFmOTRhZmJmNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9mcm9tX2xvY2FsLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zNTttZDU9MWJlYzkzOGEyMjY4YjhiNDIzYzU4ODAxYWNlM2FkYzEiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJwb3J0bWFwIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMTAgMiAzIDQgNSAuIHN0b3AgMzIgMCAxIDYgLiIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwb3J0bWFwLnNlcnZpY2UiCi0KLVBBQ0tBR0VTID0rICJwb3J0bWFwLXV0aWxzIgotRklMRVNfcG9ydG1hcC11dGlscyA9ICIke2Jhc2Vfc2JpbmRpcn0vcG1hcF9zZXQgJHtiYXNlX3NiaW5kaXJ9L3BtYXBfZHVtcCIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkb2NkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL2Rlc3RkaXItbm8tc3RyaXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvZGVzdGRpci1uby1zdHJpcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZiZjc4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvZGVzdGRpci1uby1zdHJpcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRnJvbTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZTogU3VuLCAxMyBNYXkgMjAwNyAyMToxNToxMiArMDAwMCAoLTA0MDApCi1TdWJqZWN0OiByZXNwZWN0IERFU1RESVIgYW5kIGRvbnQgdXNlIC1zIHdpdGggaW5zdGFsbAotWC1HaXQtVXJsOiBodHRwOi8vbmVpbC5icm93bi5uYW1lL2dpdD9wPXBvcnRtYXA7YT1jb21taXRkaWZmX3BsYWluO2g9NjAzYzU5Yjk3OGMwNGRmMjM1NGY2OGQ0YTJkYzY3NmE3NThmZjQ2ZAotCi1yZXNwZWN0IERFU1RESVIgYW5kIGRvbnQgdXNlIC1zIHdpdGggaW5zdGFsbAotCi0kKERFU1RESVIpIGlzIHRoZSBzdGFuZGFyZCBmb3IgaW5zdGFsbGluZyBpbnRvIG90aGVyIHRyZWVzLCBub3QgJChCQVNFRElSKSAuLi4KLXNvIEkndmUgY29udmVydGVkIHRoZSBNYWtlZmlsZSB0byB1c2UgdGhhdC4gIEkndmUgYWxzbyBsZWZ0IGluICQoQkFTRURJUikgYXMgYQotZGVmYXVsdCB0byBzdXBwb3J0IG9sZCBpbnN0YWxsczsgbm90IHN1cmUgaWYgeW91J2QganVzdCBjdXQgaXQuCi0KLVN0cmlwcGluZyBzaG91bGQgYmUgbGVmdCB0byB0aGUgcGVyc29uIHRvIGhhbmRsZSwgbm90IGF1dG9tYXRpY2FsbHkgZG9uZSBieQotdGhlIGluc3RhbGwgc3RlcC4gIEFsc28sIGBpbnN0YWxsIC1zYCBhbHdheXMgY2FsbHMgYHN0cmlwYCB3aGljaCBpcwotd3JvbmcvdW5kZXNpcmVkIGluIGNyb3NzLWNvbXBpbGluZyBzY2VuYXJpb3MuCi0KLVNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLVNpZ25lZC1vZmYtYnk6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+Ci0tLS0KLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDllOWE0YjQuLjUzNDM0MjggMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0xMzUsMTMgKzEzNSwxNCBAQCBmcm9tX2xvY2FsOiBDUFBGTEFHUyArPSAtRFRFU1QKLSBwb3J0bWFwLm1hbiA6IHBvcnRtYXAuOAotIAlzZWQgJChNQU5fU0VEKSA8IHBvcnRtYXAuOCA+IHBvcnRtYXAubWFuCi0gCi0rREVTVERJUiA9ICQoQkFTRURJUikKLSBpbnN0YWxsOiBhbGwKLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSAtcyBwb3J0bWFwICR7QkFTRURJUn0vc2JpbgotLQlpbnN0YWxsIC1vIHJvb3QgLWcgcm9vdCAtbSAwNzU1IC1zIHBtYXBfZHVtcCAke0JBU0VESVJ9L3NiaW4KLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSAtcyBwbWFwX3NldCAke0JBU0VESVJ9L3NiaW4KLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwb3J0bWFwLm1hbiAke0JBU0VESVJ9L3Vzci9zaGFyZS9tYW4vbWFuOC9wb3J0bWFwLjgKLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwbWFwX2R1bXAuOCAke0JBU0VESVJ9L3Vzci9zaGFyZS9tYW4vbWFuOAotLQlpbnN0YWxsIC1vIHJvb3QgLWcgcm9vdCAtbSAwNjQ0IHBtYXBfc2V0LjggJHtCQVNFRElSfS91c3Ivc2hhcmUvbWFuL21hbjgKLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSBwb3J0bWFwICQoREVTVERJUikvc2JpbgotKwlpbnN0YWxsIC1vIHJvb3QgLWcgcm9vdCAtbSAwNzU1IHBtYXBfZHVtcCAkKERFU1RESVIpL3NiaW4KLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSBwbWFwX3NldCAkKERFU1RESVIpL3NiaW4KLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwb3J0bWFwLm1hbiAkKERFU1RESVIpL3Vzci9zaGFyZS9tYW4vbWFuOC9wb3J0bWFwLjgKLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwbWFwX2R1bXAuOCAkKERFU1RESVIpL3Vzci9zaGFyZS9tYW4vbWFuOAotKwlpbnN0YWxsIC1vIHJvb3QgLWcgcm9vdCAtbSAwNjQ0IHBtYXBfc2V0LjggJChERVNURElSKS91c3Ivc2hhcmUvbWFuL21hbjgKLSAKLSBjbGVhbjoKLSAJcm0gLWYgKi5vIHBvcnRtYXAgcG1hcF9kdW1wIHBtYXBfc2V0IGZyb21fbG9jYWwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3BvcnRtYXAuaW5pdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC9wb3J0bWFwLmluaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYyMWFhMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3BvcnRtYXAuaW5pdAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyMjIEJFR0lOIElOSVQgSU5GTwotIyBQcm92aWRlczogICAgICAgICAgcG9ydG1hcAotIyBSZXF1aXJlZC1TdGFydDogICAgJG5ldHdvcmsKLSMgUmVxdWlyZWQtU3RvcDogICAgICRuZXR3b3JrCi0jIERlZmF1bHQtU3RhcnQ6ICAgICBTIDIgMyA0IDUKLSMgRGVmYXVsdC1TdG9wOiAgICAgIDAgMSA2Ci0jIFNob3J0LURlc2NyaXB0aW9uOiBUaGUgUlBDIHBvcnRtYXBwZXIKLSMgRGVzY3JpcHRpb246ICAgICAgIFBvcnRtYXAgaXMgYSBzZXJ2ZXIgdGhhdCBjb252ZXJ0cyBSUEMgKFJlbW90ZQotIyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlIENhbGwpIHByb2dyYW0gbnVtYmVycyBpbnRvIERBUlBBCi0jICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCBwb3J0IG51bWJlcnMuIEl0IG11c3QgYmUgcnVubmluZyBpbgotIyAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gbWFrZSBSUEMgY2FsbHMuIFNlcnZpY2VzIHRoYXQgdXNlCi0jICAgICAgICAgICAgICAgICAgICBSUEMgaW5jbHVkZSBORlMgYW5kIE5JUy4KLSMjIyBFTkQgSU5JVCBJTkZPCi0KLXRlc3QgLWYgL3NiaW4vcG9ydG1hcCB8fCBleGl0IDAKLQotY2FzZSAiJDEiIGluCi0gICAgc3RhcnQpCi0JZWNobyAiU3RhcnRpbmcgcG9ydG1hcCBkYWVtb24uLi4iCi0gICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLWV4ZWMgL3NiaW4vcG9ydG1hcAotCi0JaWYgWyAtZiAvdmFyL3J1bi9wb3J0bWFwLnVwZ3JhZGUtc3RhdGUgXTsgdGhlbgotICAgICAgICAgIGVjaG8gIlJlc3RvcmluZyBvbGQgUlBDIHNlcnZpY2UgaW5mb3JtYXRpb24uLi4iCi0gICAgICAgICAgc2xlZXAgMSAjIG5lZWRzIGEgc2hvcnQgcGF1c2Ugb3IgcG1hcF9zZXQgd29uJ3Qgd29yay4gOigKLQkgIHBtYXBfc2V0IDwvdmFyL3J1bi9wb3J0bWFwLnVwZ3JhZGUtc3RhdGUKLQkgIHJtIC1mIC92YXIvcnVuL3BvcnRtYXAudXBncmFkZS1zdGF0ZQotICAgICAgICAgIGVjaG8gImRvbmUuIgotICAgICAgICBmaQotCi0JOzsKLSAgICBzdG9wKQotICAgICAgICBlY2hvICJTdG9wcGluZyBwb3J0bWFwIGRhZW1vbi4uLiIKLSAgICAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1leGVjIC9zYmluL3BvcnRtYXAKLQk7OwotICAgIHJlbG9hZCkKLQk7OwotICAgIGZvcmNlLXJlbG9hZCkKLSAgICAgICAgJDAgcmVzdGFydAotCTs7Ci0gICAgcmVzdGFydCkKLQkjIHBtYXBfZHVtcCBhbmQgcG1hcF9zZXQgbWF5IGJlIGluIGEgZGlmZmVyZW50IHBhY2thZ2UgYW5kIG5vdCBpbnN0YWxsZWQuLi4KLQlpZiBbIC1mIC9zYmluL3BtYXBfZHVtcCAtYSAtZiAvc2Jpbi9wbWFwX3NldCBdOyB0aGVuCi0JCWRvX3N0YXRlPTEKLQllbHNlCi0JCWRvX3N0YXRlPTAKLQlmaQotCVsgJGRvX3N0YXRlIC1lcSAxIF0gJiYgcG1hcF9kdW1wID4vdmFyL3J1bi9wb3J0bWFwLnN0YXRlCi0gICAgICAgICQwIHN0b3AKLSAgICAgICAgJDAgc3RhcnQKLQlpZiBbICRkb19zdGF0ZSAtZXEgMSBdOyB0aGVuCi0JICBpZiBbICEgLWYgL3Zhci9ydW4vcG9ydG1hcC51cGdyYWRlLXN0YXRlIF07IHRoZW4KLSAgICAgICAgICAgIHNsZWVwIDEKLQkgICAgcG1hcF9zZXQgPC92YXIvcnVuL3BvcnRtYXAuc3RhdGUKLQkgIGZpCi0JICBybSAtZiAvdmFyL3J1bi9wb3J0bWFwLnN0YXRlCi0JZmkKLQk7OwotICAgICopCi0JZWNobyAiVXNhZ2U6IC9ldGMvaW5pdC5kL3BvcnRtYXAge3N0YXJ0fHN0b3B8cmVsb2FkfHJlc3RhcnR9IgotCWV4aXQgMQotCTs7Ci1lc2FjCi0KLWV4aXQgMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvcG9ydG1hcC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3BvcnRtYXAuc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VmOWQ3Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvcG9ydG1hcC5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1UaGUgUlBDIHBvcnRtYXBwZXIKLUFmdGVyPW5ldHdvcmsudGFyZ2V0Ci0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FeGVjU3RhcnQ9QEJBU0VfU0JJTkRJUkAvcG9ydG1hcAotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvdGNwZC1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvdGNwZC1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMjUwNTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3RjcGQtY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gcm9tOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOiBTdW4sIDEzIE1heSAyMDA3IDIxOjE3OjMyICswMDAwICgtMDQwMCkKLVN1YmplY3Q6IGZpeCBidWlsZGluZyB3aXRoIHRjcGQgc3VwcG9ydCBkaXNhYmxlZAotWC1HaXQtVXJsOiBodHRwOi8vbmVpbC5icm93bi5uYW1lL2dpdD9wPXBvcnRtYXA7YT1jb21taXRkaWZmX3BsYWluO2g9Nzg0NzIwN2FlZDFiNDRmYWYwNzdlZWQxNGE5YWM5YzY4MjQ0ZWJhNQotCi1maXggYnVpbGRpbmcgd2l0aCB0Y3BkIHN1cHBvcnQgZGlzYWJsZWQKLQotTWFrZSBzdXJlIHBtYXBfY2hlY2suYyBvbmx5IGluY2x1ZGVzIHRjcGQuaCB3aGVuIEhPU1RTX0FDQ0VTUyBpcyBkZWZpbmVkLgotCi1TaWduZWQtb2ZmLWJ5OiBUaW1vdGh5IFJlZGFlbGxpIDxkcml6enRAZ2VudG9vLm9yZz4KLVNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLVNpZ25lZC1vZmYtYnk6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+Ci0tLS0KLQotZGlmZiAtLWdpdCBhL3BtYXBfY2hlY2suYyBiL3BtYXBfY2hlY2suYwotaW5kZXggODRmMmMxMi4uNDQzYTgyMiAxMDA2NDQKLS0tLSBhL3BtYXBfY2hlY2suYwotKysrIGIvcG1hcF9jaGVjay5jCi1AQCAtNDQsNyArNDQsOSBAQAotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPHJwYy9ycGNlbnQuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSE9TVFNfQUNDRVNTCi0gI2luY2x1ZGUgPHRjcGQuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0gI2luY2x1ZGUgPGdycC5oPgotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwXzYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcF82LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NzAwOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwXzYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLXJlcXVpcmUgcG9ydG1hcC5pbmMKLQotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyAiCi0KLVBSID0gInI5IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYy9vbGQvcG9ydG1hcC02LjAudGd6IFwKLSAgICAgICAgICAgZmlsZTovL2Rlc3RkaXItbm8tc3RyaXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGNwZC1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcG9ydG1hcC5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL3BvcnRtYXAuc2VydmljZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImFjMTA4YWI2OGJmMGYzNDQ3N2Y4MzE3NzkxYWFmMWZmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyYzgyMGQzOWYzZTZlNzI5ZDFiZWEzMjg3YTJkOGE2YzY4NGYxMDA2ZmI5NjEyZjk3ZGNhZDRhMjgxZDQxZGUiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vIgotCi1QQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIiwsdGNwLXdyYXBwZXJzIgotCi1DUFBGTEFHUyArPSAiLURGQUNJTElUWT1MT0dfREFFTU9OIC1ERU5BQkxFX0ROUyAtREhPU1RTX0FDQ0VTUyIKLUNGTEFHUyArPSAiLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcyAtZlBJQyIKLUVYVFJBX09FTUFLRSArPSAiJ05PX1RDUF9XUkFQUEVSPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RjcC13cmFwcGVycycsICcnLCAnMScsIGQpfSciCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyAiCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMgIgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44LyAke0R9JHtiYXNlX3NiaW5kaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3BvcnRtYXAuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcG9ydG1hcAotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wb3J0bWFwLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgJ3MsQEJBU0VfU0JJTkRJUkAsJHtiYXNlX3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3BvcnRtYXAuc2VydmljZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC5zaAppbmRleCA1YzllNWQzLi4zNWExYWE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC5zaApAQCAtNCw2ICs0LDcgQEAKIFdQQV9TVVBfQklOPSIvdXNyL3NiaW4vd3BhX3N1cHBsaWNhbnQiCiBXUEFfU1VQX1BOQU1FPSJ3cGFfc3VwcGxpY2FudCIKIFdQQV9TVVBfUElERklMRT0iL3Zhci9ydW4vd3BhX3N1cHBsaWNhbnQuJElGQUNFLnBpZCIKK1dQQV9DT01NT05fQ1RSTF9JRkFDRT0iL3Zhci9ydW4vd3BhX3N1cHBsaWNhbnQiCiBXUEFfU1VQX09QVElPTlM9Ii1CIC1QICRXUEFfU1VQX1BJREZJTEUgLWkgJElGQUNFIgogCiBWRVJCT1NJVFk9MApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9wcm9maWxlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9wcm9maWxlCmluZGV4IGNlYWYxNWYuLmEwNjIwMjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3Byb2ZpbGUKQEAgLTMsMTUgKzMsMTMgQEAKIAogUEFUSD0iL3Vzci9sb2NhbC9iaW46L3Vzci9iaW46L2JpbiIKIEVESVRPUj0idmkiCQkJIyBuZWVkZWQgZm9yIHBhY2thZ2VzIGxpa2UgY3JvbiwgZ2l0LWNvbW1pdAotdGVzdCAteiAiJFRFUk0iICYmIFRFUk09InZ0MTAwIgkjIEJhc2ljIHRlcm1pbmFsIGNhcGFiLiBGb3Igc2NyZWVuIGV0Yy4KK1sgIiRURVJNIiBdIHx8IFRFUk09InZ0MTAwIgkjIEJhc2ljIHRlcm1pbmFsIGNhcGFiLiBGb3Igc2NyZWVuIGV0Yy4KIAotaWYgWyAiJEhPTUUiID0gIlJPT1RIT01FIiBdOyB0aGVuCi0JUEFUSD0kUEFUSDovdXNyL2xvY2FsL3NiaW46L3Vzci9zYmluOi9zYmluCi1maQotaWYgWyAiJFBTMSIgXTsgdGhlbgotCSMgd29ya3MgZm9yIGJhc2ggYW5kIGFzaCAobm8gb3RoZXIgc2hlbGxzIGtub3duIHRvIGJlIGluIHVzZSBoZXJlKQotCVBTMT0nXHVAXGg6XHdcJCAnCi1maQorIyBBZGQgL3NiaW4gJiBjbyB0byAkUEFUSCBmb3IgdGhlIHJvb3QgdXNlcgorWyAiJEhPTUUiICE9ICJST09USE9NRSIgXSB8fCBQQVRIPSRQQVRIOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW46L3NiaW4KKworIyBTZXQgdGhlIHByb21wdCBmb3IgYmFzaCBhbmQgYXNoIChubyBvdGhlciBzaGVsbHMga25vd24gdG8gYmUgaW4gdXNlIGhlcmUpCitbIC16ICIkUFMxIiBdIHx8IFBTMT0nXHVAXGg6XHdcJCAnCiAKIGlmIFsgLWQgL2V0Yy9wcm9maWxlLmQgXTsgdGhlbgogCWZvciBpIGluIC9ldGMvcHJvZmlsZS5kLyouc2g7IGRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3NoYXJlL2RvdC5wcm9maWxlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9zaGFyZS9kb3QucHJvZmlsZQppbmRleCA5Nzk3OTNlLi5hODczMTYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3NoYXJlL2RvdC5wcm9maWxlCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvc2hhcmUvZG90LnByb2ZpbGUKQEAgLTcsNCArNyw1IEBACiAjIHBhdGggc2V0IGJ5IC9ldGMvcHJvZmlsZQogIyBleHBvcnQgUEFUSAogCi1tZXNnIG4KKyMgTWlnaHQgZmFpbCBhZnRlciAic3UgLSBteXVzZXIiIHdoZW4gL2Rldi90dHkqIGlzIG5vdCB3cml0YWJsZSBieSAibXl1c2VyIi4KK21lc2cgbiAyPi9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgppbmRleCBjYTdiZjA2Li4xYzA4NjNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgpAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2JhY2t1cHMgJHtsb2NhbHN0YXRlZGlyfS9saWIgXAogICAgICAgICAgICAvc3lzICR7bG9jYWxzdGF0ZWRpcn0vbGliL21pc2MgJHtsb2NhbHN0YXRlZGlyfS9zcG9vbCBcCiAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vdm9sYXRpbGUgXAotICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL2xvZyBcCisgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vJHtAJ3ZvbGF0aWxlLycgaWYgb2UudHlwZXMuYm9vbGVhbignJHtWT0xBVElMRV9MT0dfRElSfScpIGVsc2UgJyd9bG9nIFwKICAgICAgICAgICAgL2hvbWUgJHtwcmVmaXh9L3NyYyAke2xvY2Fsc3RhdGVkaXJ9L2xvY2FsIFwKICAgICAgICAgICAgL21lZGlhIgogCkBAIC01Myw3ICs1Myw3IEBACiAgICAgICAgICAgICAgICAke3ByZWZpeH0vbGliL2xvY2FsZSIKIGRpcnMyNzc1LWxzYiA9ICIvdmFyL21haWwiCiAKLXZvbGF0aWxlcyA9ICJsb2cgdG1wIgordm9sYXRpbGVzID0gIiR7QCdsb2cnIGlmIG9lLnR5cGVzLmJvb2xlYW4oJyR7Vk9MQVRJTEVfTE9HX0RJUn0nKSBlbHNlICcnfSB0bXAiCiBjb25mZmlsZXMgPSAiJHtzeXNjb25mZGlyfS9kZWJpYW5fdmVyc2lvbiAke3N5c2NvbmZkaXJ9L2hvc3QuY29uZiBcCiAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pc3N1ZSAvJHtzeXNjb25mZGlyfS9pc3N1ZS5uZXQgXAogICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZiAke3N5c2NvbmZkaXJ9L3Byb2ZpbGUgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYwppbmRleCBhZGM2ZTlhLi40ODkxMGNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYwpAQCAtMzksOSArMzksMTEgQEAKIElOSVRTQ1JJUFRfTkFNRV8ke1BOfS11ZGhjcGQgPSAiYnVzeWJveC11ZGhjcGQiCiAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3lzbG9nIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXN5c2xvZyA9ICJidXN5Ym94LXN5c2xvZy5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXN5c2xvZyA9ICIke0BiYi51dGlscy5jb250YWlucygnU1JDX1VSSScsICdmaWxlOi8vc3lzbG9nLmNmZycsICdidXN5Ym94LXN5c2xvZy5zZXJ2aWNlJywgJycsIGQpfSIKIAotQ09ORkZJTEVTXyR7UE59LXN5c2xvZyA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYuJHtCUE59IgorQ09ORkZJTEVTXyR7UE59LXN5c2xvZyA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYiCitSQ09ORkxJQ1RTXyR7UE59LXN5c2xvZyA9ICJyc3lzbG9nIHN5c2tsb2dkIHN5c2xvZy1uZyIKKwogQ09ORkZJTEVTXyR7UE59LW1kZXYgPSAiJHtzeXNjb25mZGlyfS9tZGV2LmNvbmYiCiAKIFJSRUNPTU1FTkRTXyR7UE59ID0gIiR7UE59LXN5c2xvZyAke1BOfS11ZGhjcGMiCkBAIC03MSw3ICs3Myw3IEBACiAJYnVzeWJveF9jZmcoYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCBUcnVlLCBGYWxzZSwgZCksICdDT05GSUdfUkZLSUxMJywgY25mLCByZW0pCiAJcmV0dXJuICJcbiIuam9pbihjbmYpLCAiXG4iLmpvaW4ocmVtKQogCi0jIFgsIFkgPSAke0BmZWF0dXJlc190b191Y2xpYmNfc2V0dGluZ3MoZCl9CisjIFgsIFkgPSAke0BmZWF0dXJlc190b19idXN5Ym94X3NldHRpbmdzKGQpfQogIyB1bmZvcnR1bmF0ZWx5IGRvZXNuJ3Qgc2VlbSB0byB3b3JrIHdpdGggYml0YmFrZSwgd29ya2Fyb3VuZDoKIGRlZiBmZWF0dXJlc190b19idXN5Ym94X2NvbmYoZCk6CiAJY25mLCByZW0gPSBmZWF0dXJlc190b19idXN5Ym94X3NldHRpbmdzKGQpCkBAIC0xMDIsNiArMTA0LDkgQEAKIH0KIAogZG9fcHJlcGFyZV9jb25maWcgKCkgeworCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwkJZXhwb3J0IEtDT05GSUdfTk9USU1FU1RBTVA9MQorCWZpCiAJc2VkIC1lICcvQ09ORklHX1NUQVRJQy9kJyBcCiAJCTwgJHtXT1JLRElSfS9kZWZjb25maWcgPiAke1N9Ly5jb25maWcKIAllY2hvICIjIENPTkZJR19TVEFUSUMgaXMgbm90IHNldCIgPj4gLmNvbmZpZwpAQCAtMTE4LDYgKzEyMyw3IEBACiAJCSAgJHtTfS8uY29uZmlnLm9lLXRtcCA+ICR7U30vLmNvbmZpZwogCWZpCiAJc2VkIC1pICdzL0NPTkZJR19JRlVQRE9XTl9VREhDUENfQ01EX09QVElPTlM9Ii1SIC1uIi9DT05GSUdfSUZVUERPV05fVURIQ1BDX0NNRF9PUFRJT05TPSItUiAtYiIvJyAke1N9Ly5jb25maWcKKwlzZWQgLWkgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgJHtTfS8uY29uZmlnCiB9CiAKICMgcmV0dXJucyBhbGwgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNyYyB1cmkgdGhhdCBhcmUgLmNmZyBmaWxlcwpAQCAtMTM4LDYgKzE0NCw5IEBACiAKIGRvX2NvbXBpbGUoKSB7CiAJdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MKKwlpZiBbICIkQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTIiA9ICIxIiBdOyB0aGVuCisJCWV4cG9ydCBLQ09ORklHX05PVElNRVNUQU1QPTEKKwlmaQogCWlmIFsgIiR7QlVTWUJPWF9TUExJVF9TVUlEfSIgPSAiMSIgLWEgeGBncmVwICJDT05GSUdfRkVBVFVSRV9JTkRJVklEVUFMPXkiIC5jb25maWdgID0geCBdOyB0aGVuCiAJIyBzcGxpdCB0aGUgLmNvbmZpZyBpbnRvIHR3byBwYXJ0cywgYW5kIG1ha2UgdHdvIGJ1c3lib3ggYmluYXJpZXMKIAkJaWYgWyAtZSAuY29uZmlnLm9yaWcgXTsgdGhlbgpAQCAtMjQxLDkgKzI1MCw5IEBACiAJZmkKIAogCWlmIGdyZXAgLXEgIkNPTkZJR19TWVNMT0dEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgotCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zeXNsb2cgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZy4ke0JQTn0KLQkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2ctc3RhcnR1cC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYuJHtCUE59Ci0JCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYuJHtCUE59CisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3N5c2xvZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nCisJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLXN0YXJ0dXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mCisJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYKIAlmaQogCWlmIGdyZXAgIkNPTkZJR19DUk9ORD15IiAke0J9Ly5jb25maWc7IHRoZW4KIAkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vYnVzeWJveC1jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KQEAgLTMwNCw3ICszMTMsNiBAQAogCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKIAkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2J1c3lib3gtc3lzbG9nCiAgICAgICAgICAgICBmaQotICAgICAgICAgICAgbG4gLXNmIC9kZXYvbnVsbCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNsb2cuc2VydmljZQogICAgICAgICBmaQogICAgICAgICBpZiBncmVwIC1xICJDT05GSUdfS0xPR0Q9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCkBAIC0zMTUsNyArMzIzLDcgQEAKIAogICAgICMgUmVtb3ZlIHRoZSBzeXN2aW5pdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHN5c3RlbWQgc3lzdGVtcyB0byBhdm9pZCBjb25mdXNpb24KICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KLQlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mLiR7QlBOfQorCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYKICAgICBmaQogfQogCkBAIC0zMjksMjAgKzMzNyw2IEBACiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjUwIgogCi1BTFRFUk5BVElWRV8ke1BOfS1zeXNsb2cgKz0gInN5c2xvZy1jb25mIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N5c2xvZy1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mIgotCi1weXRob24gKCkgewotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ0FMVEVSTkFUSVZFXyVzLXN5c2xvZycgJSAocG4pLCAnIHN5c2xvZy1pbml0JykKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCAnc3lzbG9nLWluaXQnLCAnJXMvaW5pdC5kL3N5c2xvZycgJSAoZC5nZXRWYXIoJ3N5c2NvbmZkaXInKSkpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUJywgJ3N5c2xvZy1pbml0JywgJyVzL2luaXQuZC9zeXNsb2cuJXMnICUgKGQuZ2V0VmFyKCdzeXNjb25mZGlyJyksIGQuZ2V0VmFyKCdCUE4nKSkpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdBTFRFUk5BVElWRV8lcy1zeXNsb2cnICUgKHBuKSwgJyBzeXNsb2ctc3RhcnR1cC1jb25mJykKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCAnc3lzbG9nLXN0YXJ0dXAtY29uZicsICclcy9zeXNsb2ctc3RhcnR1cC5jb25mJyAlIChkLmdldFZhcignc3lzY29uZmRpcicpKSkKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9UQVJHRVQnLCAnc3lzbG9nLXN0YXJ0dXAtY29uZicsICclcy9zeXNsb2ctc3RhcnR1cC5jb25mLiVzJyAlIChkLmdldFZhcignc3lzY29uZmRpcicpLCBkLmdldFZhcignQlBOJykpKQotfQotCiBweXRob24gZG9fcGFja2FnZV9wcmVwZW5kICgpIHsKICAgICAjIFdlIG5lZWQgdG8gbG9hZCB0aGUgZnVsbCBzZXQgb2YgYnVzeWJveCBwcm92aWRlcyBmcm9tIHRoZSAvZXRjL2J1c3lib3gubGlua3MKICAgICAjIFVzZSB0aGlzIHRvIHNlZSB0aGUgdXBkYXRlLWFsdGVybmF0aXZlcyB3aXRoIHRoZSByaWdodCBpbmZvcm1hdGlvbgpAQCAtNDM5LDMgKzQzMyw1IEBACiAJCWZpCiAJZmkKIH0KKworUlBST1ZJREVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJy9iaW4vc2gnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwppbmRleCA4ODAzYjUyLi5jYzY4YmVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwpAQCAtODIwLDkgKzgyMCw5IEBACiAjIENPTkZJR19JRlBMVUdEIGlzIG5vdCBzZXQKIENPTkZJR19JRlVQRE9XTj15CiBDT05GSUdfSUZVUERPV05fSUZTVEFURV9QQVRIPSIvdmFyL3J1bi9pZnN0YXRlIgotIyBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQX0JVSUxUSU4gaXMgbm90IHNldAotQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSUZDT05GSUdfQlVJTFRJTj15CitDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUD15CitDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUF9CVUlMVElOPXkKKyMgQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSUZDT05GSUdfQlVJTFRJTiBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUFY0PXkKIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQVjY9eQogQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fTUFQUElORz15CkBAIC0xMDUzLDE3ICsxMDUzLDE1IEBACiAjCiAjIFN5c3RlbSBMb2dnaW5nIFV0aWxpdGllcwogIwotQ09ORklHX1NZU0xPR0Q9eQotQ09ORklHX0ZFQVRVUkVfUk9UQVRFX0xPR0ZJTEU9eQotQ09ORklHX0ZFQVRVUkVfUkVNT1RFX0xPRz15Ci1DT05GSUdfRkVBVFVSRV9TWVNMT0dEX0RVUD15Ci1DT05GSUdfRkVBVFVSRV9TWVNMT0dEX0NGRz15Ci1DT05GSUdfRkVBVFVSRV9TWVNMT0dEX1JFQURfQlVGRkVSX1NJWkU9MjU2Ci1DT05GSUdfRkVBVFVSRV9JUENfU1lTTE9HPXkKLUNPTkZJR19GRUFUVVJFX0lQQ19TWVNMT0dfQlVGRkVSX1NJWkU9NjQKLUNPTkZJR19MT0dSRUFEPXkKLUNPTkZJR19GRUFUVVJFX0xPR1JFQURfUkVEVUNFRF9MT0NLSU5HPXkKLUNPTkZJR19GRUFUVVJFX0tNU0dfU1lTTE9HPXkKKyMgQ09ORklHX1NZU0xPR0QgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9ST1RBVEVfTE9HRklMRSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1JFTU9URV9MT0cgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TWVNMT0dEX0RVUCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1NZU0xPR0RfQ0ZHIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSVBDX1NZU0xPRyBpcyBub3Qgc2V0CisjIENPTkZJR19MT0dSRUFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfTE9HUkVBRF9SRURVQ0VEX0xPQ0tJTkcgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9LTVNHX1NZU0xPRyBpcyBub3Qgc2V0CiBDT05GSUdfS0xPR0Q9eQogCiAjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L3N5c2xvZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L3N5c2xvZy5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0MjVlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvc3lzbG9nLmNmZwpAQCAtMCwwICsxLDExIEBACitDT05GSUdfU1lTTE9HRD15CitDT05GSUdfRkVBVFVSRV9ST1RBVEVfTE9HRklMRT15CitDT05GSUdfRkVBVFVSRV9SRU1PVEVfTE9HPXkKK0NPTkZJR19GRUFUVVJFX1NZU0xPR0RfRFVQPXkKK0NPTkZJR19GRUFUVVJFX1NZU0xPR0RfQ0ZHPXkKK0NPTkZJR19GRUFUVVJFX1NZU0xPR0RfUkVBRF9CVUZGRVJfU0laRT0yNTYKK0NPTkZJR19GRUFUVVJFX0lQQ19TWVNMT0c9eQorQ09ORklHX0ZFQVRVUkVfSVBDX1NZU0xPR19CVUZGRVJfU0laRT02NAorQ09ORklHX0xPR1JFQUQ9eQorQ09ORklHX0ZFQVRVUkVfTE9HUkVBRF9SRURVQ0VEX0xPQ0tJTkc9eQorQ09ORklHX0ZFQVRVUkVfS01TR19TWVNMT0c9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjQuMS5iYgppbmRleCA2Y2NiZmZkLi4xYzg1ODA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjQuMS5iYgpAQCAtNDAsNiArNDAsNyBAQAogICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCiAgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCiAgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0dGFiIFwKICAgICAgICAgICAgZmlsZTovL3JjUyBcCiAgICAgICAgICAgIGZpbGU6Ly9yY0sgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2LzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2LzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2L2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2L2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvZml4LXNlbGludXgtZmxhc2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9maXgtc2VsaW51eC1mbGFzay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi9maXgtc2VsaW51eC1mbGFzay5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvZml4LXNlbGludXgtZmxhc2sucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZWYxMDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBtYW5pcHVsYXRpb24gdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiVGhlIEdOVSBDb3JlIFV0aWxpdGllcyBwcm92aWRlIHRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBcCi1tYW5pcHVsYXRpb24gdXRpbGl0aWVzLiBUaGVzZSBhcmUgdGhlIGNvcmUgdXRpbGl0aWVzIHdoaWNoIGFyZSBleHBlY3RlZCB0byBleGlzdCBvbiBcCi1ldmVyeSBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NvcmV1dGlscy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9kZWJidWdzLmdudS5vcmcvY29yZXV0aWxzIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTY7bWQ1PTM4Yjc5Nzg1Y2E4ODUzN2I3NTg3MTc4MmEyYTNjNmI4IgotREVQRU5EUyA9ICJnbXAgbGliY2FwIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NvcmV1dGlscy8ke0JQfS50YXIueHo7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgaHR0cDovL2Rpc3RmaWxlcy5nZW50b28ub3JnL2Rpc3RmaWxlcy8ke0JQfS1tYW4udGFyLnh6O25hbWU9bWFucGFnZXMgXAotICAgICAgICAgICBmaWxlOi8vbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc2VsaW51eC1mbGFzay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiZDVhYTIwNzJmNjYyZDQxMThiOWY0YzYzYjk0NjAxYTYiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICIxNTVlOTRkNzQ4ZjhlMmJjMzI3YzY2ZTBjYmViZGI4ZDZhYjI2NWQyZjM3YzNjOTI4ZjdiZjZjM2JlYmE5YThlIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gImI1ODEwN2Y1MzJmN2JlZmZjYjJmMzhlMmFjMWYyZGEzIgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gIjkzMjRlYzQxMmZmY2EzYjA0MzFlNjI5OTcyMGMzM2FjOThlNzQ5ZTQzMGY3MmE3YzZlNjVmMzYzNWM4NmFhMjkiCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWdtcCIKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2ggLS1saWJleGVjZGlyPSR7bGliZGlyfSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2giCi0KLSMgYWNsIGFuZCB4YXR0ciBhcmUgbm90IGRlZmF1bHQgZmVhdHVyZXMKLSMKLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCi0iCi0KLSMgVGhlIGxpYi9vZS9wYXRoLnB5IHJlcXVpcmVzIHhhdHRyCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gInhhdHRyIgotCi0jIHdpdGgsIHdpdGhvdXQsIGRlcGVuZHMsIHJkZXBlbmRzCi0jCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKLVBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKLQotIyBbIGRmIG1rdGVtcCBiYXNlNjQgZ2V0cyBhIHNwZWNpYWwgdHJlYXRtZW50IGFuZCBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcwotYmluZGlyX3Byb2dzID0gImFyY2ggYmFzZW5hbWUgY2hjb24gY2tzdW0gY29tbSBjc3BsaXQgY3V0IGRpciBkaXJjb2xvcnMgZGlybmFtZSBkdSBcCi0gICAgICAgICAgICAgICAgZW52IGV4cGFuZCBleHByIGZhY3RvciBmbXQgZm9sZCBncm91cHMgaGVhZCBob3N0aWQgaWQgaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgam9pbiBsaW5rIGxvZ25hbWUgbWQ1c3VtIG1rZmlmbyBuaWNlIG5sIG5vaHVwIG5wcm9jIG9kIHBhc3RlIHBhdGhjaGsgXAotICAgICAgICAgICAgICAgIHBpbmt5IHByIHByaW50ZW52IHByaW50ZiBwdHggcmVhZGxpbmsgcmVhbHBhdGggcnVuY29uIHNlcSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gXAotICAgICAgICAgICAgICAgIHNoYTM4NHN1bSBzaGE1MTJzdW0gc2hyZWQgc2h1ZiBzb3J0IHNwbGl0IHN0ZGJ1ZiBzdW0gdGFjIHRhaWwgdGVlIHRlc3QgdGltZW91dFwKLSAgICAgICAgICAgICAgICB0ciB0cnVuY2F0ZSB0c29ydCB0dHkgdW5leHBhbmQgdW5pcSB1bmxpbmsgdXB0aW1lIHVzZXJzIHZkaXIgd2Mgd2hvIHdob2FtaSB5ZXMiCi0KLSMgaG9zdG5hbWUgZ2V0cyBhIHNwZWNpYWwgdHJlYXRtZW50IGFuZCBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcwotYmFzZV9iaW5kaXJfcHJvZ3MgPSAiY2F0IGNoZ3JwIGNobW9kIGNob3duIGNwIGRhdGUgZGQgZWNobyBmYWxzZSBraWxsIGxuIGxzIG1rZGlyIFwKLSAgICAgICAgICAgICAgICAgICAgIG1rbm9kIG12IHB3ZCBybSBybWRpciBzbGVlcCBzdHR5IHN5bmMgdG91Y2ggdHJ1ZSB1bmFtZSBzdGF0IgotCi1zYmluZGlyX3Byb2dzPSAiY2hyb290IgotCi0jIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCi0jIGFic29sdXRlIHNpbmNlIGNvcmV1dGlscyBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAotIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcAotIyBkaXJlY3RvcnkuCi1hY3BhdGhzID0gIi1JIC4vbTQiCi0KLSMgRGVhbCB3aXRoIGEgc2VwYXJhdGUgYnVpbGRkaXIgZmFpbHVyZSBpZiBzcmMgZG9lc24ndCBleGlzdCB3aGVuIGNyZWF0aW5nIHZlcnNpb24uYy92ZXJzaW9uLmgKLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0JbWtkaXIgLXAgJHtCfS9zcmMKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQkjIHJlbW92ZSBncm91cHMgdG8gZml4IGNvbmZsaWN0IHdpdGggc2hhZG93LW5hdGl2ZQotCXJtIC1mICR7RH0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZ3JvdXBzCi0JIyBUaGUgcmV0dXJuIGlzIGEgbXVzdCBzaW5jZSBuYXRpdmUgZG9lc24ndCBuZWVkIHRoZQotCSMgZG9faW5zdGFsbF9hcHBlbmQoKSBpbiB0aGUgYmVsb3cuCi0JcmV0dXJuCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWZvciBpIGluIGRmIG1rdGVtcCBiYXNlNjQ7IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmluZGlyfS8kaS4ke0JQTn07IGRvbmUKLQotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCVsgIiR7c2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtzYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtzYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKLQotCSMgWyByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nIGJlY2F1c2UgWy5jb3JldXRpbHMgd2lsbCBjYXVzZSB0aGUgc2VkIHN0dWZmCi0JIyBpbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIHRvIGZhaWwsIHRoZXJlZm9yZSB1c2UgbGJyYWNrZXQgLSB0aGUgbmFtZSB1c2VkCi0JIyBmb3IgdGhlIGFjdHVhbCBzb3VyY2UgZmlsZS4KLQltdiAke0R9JHtiaW5kaXJ9L1sgJHtEfSR7YmluZGlyfS9sYnJhY2tldC4ke0JQTn0KLQotCSMgcHJlYnVpbHQgbWFuIHBhZ2VzCi0JaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW4xCi0JaW5zdGFsbCAtdCAke0R9LyR7bWFuZGlyfS9tYW4xICR7U30vbWFuLyouMQotCSMgcHJlYnVpbHQgbWFuIHBhZ2VzIGRvbid0IGRvIGEgc2VwYXJhdGUgbWFuIHBhZ2UgZm9yIFsgdnMgdGVzdC4KLQkjIHNlZSBjb21tZW50IGFib3ZlIHIuZS4gc2VkIGFuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0JY3AgLWEgJHtEfSR7bWFuZGlyfS9tYW4xL3Rlc3QuMSAke0R9JHttYW5kaXJ9L21hbjEvbGJyYWNrZXQuMS4ke0JQTn0KLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImxicmFja2V0ICR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke3NiaW5kaXJfcHJvZ3N9IGJhc2U2NCBta3RlbXAgZGYiCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYmFzZTY0LjEgbWt0ZW1wLjEgZGYuMSBsYnJhY2tldC4xIGdyb3Vwcy4xIGtpbGwuMSB1cHRpbWUuMSBzdGF0LjEgIGhvc3RuYW1lLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtob3N0bmFtZS4xXSA9ICIke21hbmRpcn0vbWFuMS9ob3N0bmFtZS4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0XSA9ICIke2Jhc2VfYmluZGlyfS9iYXNlNjQiCi1BTFRFUk5BVElWRV9UQVJHRVRbYmFzZTY0XSA9ICIke2JpbmRpcn0vYmFzZTY0LiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtiYXNlNjQuMV0gPSAiJHttYW5kaXJ9L21hbjEvYmFzZTY0LjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXBdID0gIiR7YmFzZV9iaW5kaXJ9L21rdGVtcCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtta3RlbXBdID0gIiR7YmluZGlyfS9ta3RlbXAuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcC4xXSA9ICIke21hbmRpcn0vbWFuMS9ta3RlbXAuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2RmXSA9ICIke2Jhc2VfYmluZGlyfS9kZiIKLUFMVEVSTkFUSVZFX1RBUkdFVFtkZl0gPSAiJHtiaW5kaXJ9L2RmLiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtkZi4xXSA9ICIke21hbmRpcn0vbWFuMS9kZi4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbGJyYWNrZXRdID0gIiR7YmluZGlyfS9bIgotQUxURVJOQVRJVkVfVEFSR0VUW2xicmFja2V0XSA9ICIke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2xicmFja2V0LjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncm91cHMuMV0gPSAiJHttYW5kaXJ9L21hbjEvZ3JvdXBzLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N0YXQuMV0gPSAiJHttYW5kaXJ9L21hbjEvc3RhdC4xIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0JZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLQkJZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicpLCBwcm9nKSkKLQotCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdzYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLQkJZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdzYmluZGlyJyksIHByb2cpKQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTg3NDBhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNy5iYgpAQCAtMCwwICsxLDE0MiBAQAorU1VNTUFSWSA9ICJUaGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgbWFuaXB1bGF0aW9uIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBHTlUgQ29yZSBVdGlsaXRpZXMgcHJvdmlkZSB0aGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgXAorbWFuaXB1bGF0aW9uIHV0aWxpdGllcy4gVGhlc2UgYXJlIHRoZSBjb3JlIHV0aWxpdGllcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gZXhpc3Qgb24gXAorZXZlcnkgc3lzdGVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jb3JldXRpbHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vZGViYnVncy5nbnUub3JnL2NvcmV1dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbHMuYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE2O21kNT0zOGI3OTc4NWNhODg1MzdiNzU4NzE3ODJhMmEzYzZiOCIKK0RFUEVORFMgPSAiZ21wIGxpYmNhcCIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9jb3JldXRpbHMvJHtCUH0udGFyLnh6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGh0dHA6Ly9kaXN0ZmlsZXMuZ2VudG9vLm9yZy9kaXN0ZmlsZXMvJHtCUH0tbWFuLnRhci54ejtuYW1lPW1hbnBhZ2VzIFwKKyAgICAgICAgICAgZmlsZTovL21hbi1kZWNvdXBsZS1tYW5wYWdlcy1mcm9tLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXNlbGludXgtZmxhc2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjUwMjc5NTc5MmMyMTI5MzIzNjVlMDc3OTQ2ZDM1M2FlIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiODg5MWQzNDllZTg3YjlmZjc4NzBmNTJiNmQ5MzEyYTlkYjY3MmQyNDM5ZDI4OWJjNTcwODQ3NzFjYTIxNjU2YiIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICIxYjMxYTY4OGQwNjc2NGUwZTk0YWEyMGI3ZWEwODIyMiIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICIxZjYxNTgxOWU5MTY3NjQ2YzczMTYzNmI2YzVlY2JlNzk4MzdlODJhMTg2NjZiYWNjODJjM2ZiMWRmY2ZhZWEzIgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1nbXAiCitFWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0iCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoIgorCisjIGFjbCBhbmQgeGF0dHIgYXJlIG5vdCBkZWZhdWx0IGZlYXR1cmVzCisjCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAorIgorCisjIFRoZSBsaWIvb2UvcGF0aC5weSByZXF1aXJlcyB4YXR0cgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICJ4YXR0ciIKKworIyB3aXRoLCB3aXRob3V0LCBkZXBlbmRzLCByZGVwZW5kcworIworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCitQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCisKKyMgWyBkZiBta3RlbXAgYmFzZTY0IGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKK2JpbmRpcl9wcm9ncyA9ICJhcmNoIGJhc2VuYW1lIGNoY29uIGNrc3VtIGNvbW0gY3NwbGl0IGN1dCBkaXIgZGlyY29sb3JzIGRpcm5hbWUgZHUgXAorICAgICAgICAgICAgICAgIGVudiBleHBhbmQgZXhwciBmYWN0b3IgZm10IGZvbGQgZ3JvdXBzIGhlYWQgaG9zdGlkIGlkIGluc3RhbGwgXAorICAgICAgICAgICAgICAgIGpvaW4gbGluayBsb2duYW1lIG1kNXN1bSBta2ZpZm8gbmljZSBubCBub2h1cCBucHJvYyBvZCBwYXN0ZSBwYXRoY2hrIFwKKyAgICAgICAgICAgICAgICBwaW5reSBwciBwcmludGVudiBwcmludGYgcHR4IHJlYWRsaW5rIHJlYWxwYXRoIHJ1bmNvbiBzZXEgc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIFwKKyAgICAgICAgICAgICAgICBzaGEzODRzdW0gc2hhNTEyc3VtIHNocmVkIHNodWYgc29ydCBzcGxpdCBzdGRidWYgc3VtIHRhYyB0YWlsIHRlZSB0ZXN0IHRpbWVvdXRcCisgICAgICAgICAgICAgICAgdHIgdHJ1bmNhdGUgdHNvcnQgdHR5IHVuZXhwYW5kIHVuaXEgdW5saW5rIHVwdGltZSB1c2VycyB2ZGlyIHdjIHdobyB3aG9hbWkgeWVzIgorCisjIGhvc3RuYW1lIGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKK2Jhc2VfYmluZGlyX3Byb2dzID0gImNhdCBjaGdycCBjaG1vZCBjaG93biBjcCBkYXRlIGRkIGVjaG8gZmFsc2Uga2lsbCBsbiBscyBta2RpciBcCisgICAgICAgICAgICAgICAgICAgICBta25vZCBtdiBwd2Qgcm0gcm1kaXIgc2xlZXAgc3R0eSBzeW5jIHRvdWNoIHRydWUgdW5hbWUgc3RhdCIKKworc2JpbmRpcl9wcm9ncz0gImNocm9vdCIKKworIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuIHRoZQorIyBhYnNvbHV0ZSBzaW5jZSBjb3JldXRpbHMgaGFzIGEgbG90IG9mIG00IGZpbGVzLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQKKyMgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gaXQgaXMgYnVpbHQgaW4gYSBsb25nL2RlZXAKKyMgZGlyZWN0b3J5LgorYWNwYXRocyA9ICItSSAuL200IgorCisjIERlYWwgd2l0aCBhIHNlcGFyYXRlIGJ1aWxkZGlyIGZhaWx1cmUgaWYgc3JjIGRvZXNuJ3QgZXhpc3Qgd2hlbiBjcmVhdGluZyB2ZXJzaW9uLmMvdmVyc2lvbi5oCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworCW1rZGlyIC1wICR7Qn0vc3JjCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJIyByZW1vdmUgZ3JvdXBzIHRvIGZpeCBjb25mbGljdCB3aXRoIHNoYWRvdy1uYXRpdmUKKwlybSAtZiAke0R9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dyb3VwcworCSMgVGhlIHJldHVybiBpcyBhIG11c3Qgc2luY2UgbmF0aXZlIGRvZXNuJ3QgbmVlZCB0aGUKKwkjIGRvX2luc3RhbGxfYXBwZW5kKCkgaW4gdGhlIGJlbG93LgorCXJldHVybgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlmb3IgaSBpbiBkZiBta3RlbXAgYmFzZTY0OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCVsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKKworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlbICIke3NiaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7c2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7c2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwkjIFsgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyBiZWNhdXNlIFsuY29yZXV0aWxzIHdpbGwgY2F1c2UgdGhlIHNlZCBzdHVmZgorCSMgaW4gdXBkYXRlLWFsdGVybmF0aXZlcyB0byBmYWlsLCB0aGVyZWZvcmUgdXNlIGxicmFja2V0IC0gdGhlIG5hbWUgdXNlZAorCSMgZm9yIHRoZSBhY3R1YWwgc291cmNlIGZpbGUuCisJbXYgJHtEfSR7YmluZGlyfS9bICR7RH0ke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59CisKKwkjIHByZWJ1aWx0IG1hbiBwYWdlcworCWluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuMQorCWluc3RhbGwgLXQgJHtEfS8ke21hbmRpcn0vbWFuMSAke1N9L21hbi8qLjEKKwkjIHByZWJ1aWx0IG1hbiBwYWdlcyBkb24ndCBkbyBhIHNlcGFyYXRlIG1hbiBwYWdlIGZvciBbIHZzIHRlc3QuCisJIyBzZWUgY29tbWVudCBhYm92ZSByLmUuIHNlZCBhbmQgdXBkYXRlLWFsdGVybmF0aXZlcworCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7RH0ke21hbmRpcn0vbWFuMS90ZXN0LjEgJHtEfSR7bWFuZGlyfS9tYW4xL2xicmFja2V0LjEuJHtCUE59Cit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJsYnJhY2tldCAke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtzYmluZGlyX3Byb2dzfSBiYXNlNjQgbWt0ZW1wIGRmIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImJhc2U2NC4xIG1rdGVtcC4xIGRmLjEgbGJyYWNrZXQuMSBncm91cHMuMSBraWxsLjEgdXB0aW1lLjEgc3RhdC4xICBob3N0bmFtZS4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NF0gPSAiJHtiYXNlX2JpbmRpcn0vYmFzZTY0IgorQUxURVJOQVRJVkVfVEFSR0VUW2Jhc2U2NF0gPSAiJHtiaW5kaXJ9L2Jhc2U2NC4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Jhc2U2NC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCitBTFRFUk5BVElWRV9UQVJHRVRbbWt0ZW1wXSA9ICIke2JpbmRpcn0vbWt0ZW1wLiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkZl0gPSAiJHtiYXNlX2JpbmRpcn0vZGYiCitBTFRFUk5BVElWRV9UQVJHRVRbZGZdID0gIiR7YmluZGlyfS9kZi4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGYuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGYuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0XSA9ICIke2JpbmRpcn0vWyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsYnJhY2tldC4xXSA9ICIke21hbmRpcn0vbWFuMS9sYnJhY2tldC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3JvdXBzLjFdID0gIiR7bWFuZGlyfS9tYW4xL2dyb3Vwcy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzdGF0LjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0YXQuMSIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisJCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCisKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignc2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisJCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignc2JpbmRpcicpLCBwcm9nKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiCmluZGV4IDY5MWRjODYuLjRhZmI5MGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy13YWl0L2RidXMtd2FpdF9naXQuYmIKQEAgLTExLDYgKzExLDcgQEAKIFBSID0gInIyIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mzk0ODE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJELUJ1cyB0ZXN0IHBhY2thZ2UgKGZvciBELWJ1cyBmdW5jdGlvbmFsaXR5IHRlc3Rpbmcgb25seSkiCi1IT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm1ha2UiCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNmN2IwMTNjZThmNjQxY2Q0Yzg5N2FjZGEwZWYzNDY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMjM4ZjcwMzUzZTM4Y2U1Y2ExODNlYmM5NTI1YzBkOTdhYzAwZWY2NDBhZDI5Y2Y3OTQ3ODJhZjZlNmEwODMiCi0KLVM9IiR7V09SS0RJUn0vZGJ1cy0ke1BWfSIKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2RidXM6IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwdGVzdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotRVhUUkFfT0VDT05GX1ggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnLS13aXRoLXgnLCAnLS13aXRob3V0LXgnLCBkKX0iCi1FWFRSQV9PRUNPTkZfWF9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXgiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxhci10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbGVkLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1jaGVja3MgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFzc2VydHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXZlcmJvc2UtbW9kZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLXRlc3QtZGlyPSR7UFRFU1RfUEFUSH0gXAotICAgICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1h9IgotCi1kb19pbnN0YWxsKCkgewotICAgIDoKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlsPSJzaGVsbCBwcmludGYgcmVmcyBzeXNsb2cgbWFyc2hhbCBzeW50YXggY29ycnVwdCBkYnVzLWRhZW1vbiBkYnVzLWRhZW1vbi1lYXZlc2Ryb3AgbG9vcGJhY2sgcmVsYXkiCi0JZm9yIGkgaW4gJGw7IGRvIGluc3RhbGwgJHtCfS90ZXN0Ly5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCWw9ImJ1cyBidXMtc3lzdGVtIGJ1cy1sYXVuY2gtaGVscGVyIgotCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vYnVzLy5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCWluc3RhbGwgJHtCfS9kYnVzLy5saWJzL3Rlc3QtZGJ1cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JY3AgLXIgJHtCfS90ZXN0L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotfQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYWRiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4yMC5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIkQtQnVzIHRlc3QgcGFja2FnZSAoZm9yIEQtYnVzIGZ1bmN0aW9uYWxpdHkgdGVzdGluZyBvbmx5KSIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgorCitSREVQRU5EU18ke1BOfSArPSAibWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTRjOTkxZTc2M2Q0ZjlmMTM2OTA0MTZiMmRjZDk0MTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTU3NGI5NzgwYjU0MjVmZGU0ZDk3M2JiNTk2ZTdlYTBmMDllMDBmZTJlZGQ2NjJkYTkwMTZlOTc2YzQ2MGI0OCIKKworUz0iJHtXT1JLRElSfS9kYnVzLSR7UFZ9IgorRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZGJ1czoiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHB0ZXN0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitFWFRSQV9PRUNPTkZfWCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctLXdpdGgteCcsICctLXdpdGhvdXQteCcsIGQpfSIKK0VYVFJBX09FQ09ORl9YX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGFyLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsZWQtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNoZWNrcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYXNzZXJ0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdmVyYm9zZS1tb2RlIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN5c3RlbWQgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpciBcCisgICAgICAgICAgICAgICAgLS13aXRoLWRidXMtdGVzdC1kaXI9JHtQVEVTVF9QQVRIfSBcCisgICAgICAgICAgICAgICAgJHtFWFRSQV9PRUNPTkZfWH0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgOgorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWw9InNoZWxsIHByaW50ZiByZWZzIHN5c2xvZyBtYXJzaGFsIHN5bnRheCBjb3JydXB0IGRidXMtZGFlbW9uIGRidXMtZGFlbW9uLWVhdmVzZHJvcCBsb29wYmFjayByZWxheSIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L3Rlc3QvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCisJbD0iYnVzIGJ1cy1zeXN0ZW0gYnVzLWxhdW5jaC1oZWxwZXIiCisJZm9yIGkgaW4gJGw7IGRvIGluc3RhbGwgJHtCfS9idXMvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCisJaW5zdGFsbCAke0J9L2RidXMvLmxpYnMvdGVzdC1kYnVzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtciAke0J9L3Rlc3QvZGF0YSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Cit9CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFkNzM1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotU1VNTUFSWSA9ICJELUJ1cyBtZXNzYWdlIGJ1cyIKLURFU0NSSVBUSU9OID0gIkQtQnVzIGlzIGEgbWVzc2FnZSBidXMgc3lzdGVtLCBhIHNpbXBsZSB3YXkgZm9yIGFwcGxpY2F0aW9ucyB0byB0YWxrIHRvIG9uZSBhbm90aGVyLiBJbiBhZGRpdGlvbiB0byBpbnRlcnByb2Nlc3MgY29tbXVuaWNhdGlvbiwgRC1CdXMgaGVscHMgY29vcmRpbmF0ZSBwcm9jZXNzIGxpZmVjeWNsZTsgaXQgbWFrZXMgaXQgc2ltcGxlIGFuZCByZWxpYWJsZSB0byBjb2RlIGEgXCJzaW5nbGUgaW5zdGFuY2VcIiBhcHBsaWNhdGlvbiBvciBkYWVtb24sIGFuZCB0byBsYXVuY2ggYXBwbGljYXRpb25zIGFuZCBkYWVtb25zIG9uIGRlbWFuZCB3aGVuIHRoZWlyIHNlcnZpY2VzIGFyZSBuZWVkZWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgotREVQRU5EUyA9ICJleHBhdCB2aXJ0dWFsL2xpYmludGwiCi1SREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICcke1BOfS1wdGVzdCcsICcnLCBkKX0iCi1BTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCi1SREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL29zLXRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2Y3YjAxM2NlOGY2NDFjZDRjODk3YWNkYTBlZjM0NjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjMyMzhmNzAzNTNlMzhjZTVjYTE4M2ViYzk1MjVjMGQ5N2FjMDBlZjY0MGFkMjljZjc5NDc4MmFmNmU2YTA4MyIKLQotaW5oZXJpdCB1c2VyYWRkIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB1cGRhdGUtcmMuZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotSU5JVFNDUklQVF9OQU1FID0gImRidXMtMSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAyIDUgMyAyIC4gc3RvcCAyMCAwIDEgNiAuIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQotfQotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbmV0ZGV2IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cyBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIG1lc3NhZ2VidXMiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiAke3N5c2NvbmZkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYiCi0KLURFQklBTk5BTUVfJHtQTn0gPSAiZGJ1cy0xIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbGliIgotCi1PTERQS0dOQU1FID0gImRidXMteDExIgotT0xEUEtHTkFNRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi0jIGZvciBjb21wYXRpYmlsaXR5Ci1SUFJPVklERVNfJHtQTn0gPSAiJHtPTERQS0dOQU1FfSIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtPTERQS0dOQU1FfSIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2RidXMtZGFlbW9uKiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11dWlkZ2VuIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWNsZWFudXAtc29ja2V0cyBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1zZW5kIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLW1vbml0b3IgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbGF1bmNoIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXJ1bi1zZXNzaW9uIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXVwZGF0ZS1hY3RpdmF0aW9uLWVudmlyb25tZW50IFwKLSAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vZGJ1cyogXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmQgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotIgotRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1SUkVDT01NRU5EU18ke1BOfS1saWIgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7YmluZGlyfS9kYnVzLXRlc3QtdG9vbCIKLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3N5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZScsJycsZCl9IgotcGtnX3Bvc3RpbnN0X2RidXMoKSB7Ci0JIyBJZiBib3RoIHN5c3RlbWQgYW5kIHN5c3Zpbml0IGFyZSBlbmFibGVkLCBtYXNrIHRoZSBkYnVzLTEgaW5pdCBzY3JpcHQKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCQlpZiBbIC1uICIkRCIgXTsgdGhlbgotCQkJT1BUUz0iLS1yb290PSREIgotCQlmaQotCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBkYnVzLTEuc2VydmljZQotCWZpCi0KLQlpZiBbIC16ICIkRCIgXSAmJiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCi0JCS9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQotCWZpCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1kaXNhYmxlLXNlbGludXgiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCi1QQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCXNlZCAnczpAYmluZGlyQDoke2JpbmRpcn06JyA8ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQgPiR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2gKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RidXMtMQotCWZpCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlmb3IgaSBpbiBkYnVzLnRhcmdldC53YW50cyBzb2NrZXRzLnRhcmdldC53YW50cyBtdWx0aS11c2VyLnRhcmdldC53YW50czsgZG8gXAotCQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8kaTsgZG9uZQotCQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9idXMvZGJ1cy5zZXJ2aWNlICR7Qn0vYnVzL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LwotCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKLQkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0Ci0JCWxuIC1mcyAuLi9kYnVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbXVsdGktdXNlci50YXJnZXQud2FudHMvZGJ1cy5zZXJ2aWNlCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQllY2hvICJkIG1lc3NhZ2VidXMgbWVzc2FnZWJ1cyAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vcnVuL2RidXMgbm9uZSIgXAotCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9kYnVzCi0KLQotCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCi0KLQljaG93biBtZXNzYWdlYnVzOm1lc3NhZ2VidXMgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKLQotCWNob3duIHJvb3Q6bWVzc2FnZWJ1cyAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCi0JY2htb2QgNDc1NSAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCi0KLQkjIFJlbW92ZSBSZWQgSGF0IGluaXRzY3JpcHQKLQlybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZAotCi0JIyBSZW1vdmUgZW1wdHkgdGVzdGV4ZWMgZGlyZWN0b3J5IGFzIHdlIGRvbid0IGJ1aWxkIHRlc3RzCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vZGJ1cy0xLjAvdGVzdAotCi0JIyBSZW1vdmUgL3Zhci9ydW4gYXMgaXQgaXMgY3JlYXRlZCBvbiBzdGFydHVwCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBmb3IgZGJ1cy1nbGliLW5hdGl2ZSBpbnRyb3NwZWN0aW9uIGdlbmVyYXRpb24KLQlpbnN0YWxsIC1kICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvCi0JIyBOLkIuIGlzIGJlbG93IGluc3RhbGwgYWN0dWFsbHkgcmVxdWlyZWQ/Ci0JaW5zdGFsbCAtbSAwNjQ0IGJ1cy9zZXNzaW9uLmNvbmYgJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9zZXNzaW9uLmNvbmYKLQotCSMgZGJ1cy1nbGliLW5hdGl2ZSBhbmQgZGJ1cy1nbGliIG5lZWQgdGhpcyB4bWwgZmlsZQotCS4vYnVzL2RidXMtZGFlbW9uIC0taW50cm9zcGVjdCA+ICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvZGJ1cy1idXMtaW50cm9zcGVjdC54bWwKLQkKLQkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0Ci0JIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgotCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKLQkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCi0Jcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAotCi0JIyBSZW1vdmUgL3Zhci9ydW4gdG8gYXZvaWQgUUEgZXJyb3IKLQlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJidWlsZC1kZXBzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZGVkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMjAuYmIKQEAgLTAsMCArMSwxODAgQEAKK1NVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCitERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKK0RFUEVORFMgPSAiZXhwYXQgdmlydHVhbC9saWJpbnRsIgorUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmVzZGsgPSAiIgorUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnJHtQTn0tcHRlc3QnLCAnJywgZCl9IgorQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgorUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgorCitTUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcy10ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjk0Yzk5MWU3NjNkNGY5ZjEzNjkwNDE2YjJkY2Q5NDExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU1NzRiOTc4MGI1NDI1ZmRlNGQ5NzNiYjU5NmU3ZWEwZjA5ZTAwZmUyZWRkNjYyZGE5MDE2ZTk3NmM0NjBiNDgiCisKK2luaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJkYnVzLTEiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKK30KKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMgXAorICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtZXNzYWdlYnVzIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgJHtzeXNjb25mZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIgorCitERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKKworT0xEUEtHTkFNRSA9ICJkYnVzLXgxMSIKK09MRFBLR05BTUVfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworIyBmb3IgY29tcGF0aWJpbGl0eQorUlBST1ZJREVTXyR7UE59ID0gIiR7T0xEUEtHTkFNRX0iCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7T0xEUEtHTkFNRX0iCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9kYnVzLWRhZW1vbiogXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXVpZGdlbiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1jbGVhbnVwLXNvY2tldHMgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtc2VuZCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1tb25pdG9yIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWxhdW5jaCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1ydW4tc2Vzc2lvbiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11cGRhdGUtYWN0aXZhdGlvbi1lbnZpcm9ubWVudCBcCisgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2RidXMqIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5kIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyIKK0ZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGliKi5zby4qIgorUlJFQ09NTUVORFNfJHtQTn0tbGliID0gIiR7UE59IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZGJ1cy0xLjAvaW5jbHVkZSAke2JpbmRpcn0vZGJ1cy10ZXN0LXRvb2wiCisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKK3BrZ19wb3N0aW5zdF9kYnVzKCkgeworCSMgSWYgYm90aCBzeXN0ZW1kIGFuZCBzeXN2aW5pdCBhcmUgZW5hYmxlZCwgbWFzayB0aGUgZGJ1cy0xIGluaXQgc2NyaXB0CisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaWYgWyAtbiAiJEQiIF07IHRoZW4KKwkJCU9QVFM9Ii0tcm9vdD0kRCIKKwkJZmkKKwkJc3lzdGVtY3RsICRPUFRTIG1hc2sgZGJ1cy0xLnNlcnZpY2UKKwlmaQorCisJaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgorCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKKwlmaQorfQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1DVEw9JHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgorUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKKwlmaQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKKwkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KKwkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0CisJCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAorCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQorCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKKwkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cworCisKKwlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cworCisJY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCisKKwljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCisJIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0CisJcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKKworCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cworCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKKworCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAorCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZm9yIGRidXMtZ2xpYi1uYXRpdmUgaW50cm9zcGVjdGlvbiBnZW5lcmF0aW9uCisJaW5zdGFsbCAtZCAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzLworCSMgTi5CLiBpcyBiZWxvdyBpbnN0YWxsIGFjdHVhbGx5IHJlcXVpcmVkPworCWluc3RhbGwgLW0gMDY0NCBidXMvc2Vzc2lvbi5jb25mICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvc2Vzc2lvbi5jb25mCisKKwkjIGRidXMtZ2xpYi1uYXRpdmUgYW5kIGRidXMtZ2xpYiBuZWVkIHRoaXMgeG1sIGZpbGUKKwkuL2J1cy9kYnVzLWRhZW1vbiAtLWludHJvc3BlY3QgPiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sCisJCisJIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAorCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KKwlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlc2RrKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0CisJIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgorCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKKworCSMgUmVtb3ZlIC92YXIvcnVuIHRvIGF2b2lkIFFBIGVycm9yCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorfQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiYnVpbGQtZGVwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAzLWNvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAzLWNvbmZpZ3VyZS5wYXRjaAppbmRleCBjNTNhYjAxLi44NDY5YTUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMy1jb25maWd1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDMtY29uZmlndXJlLnBhdGNoCkBAIC0xLDE5ICsxLDIwIEBACi1Gcm9tIGM1ZjVjNTA1NGMxYjE1NTM5ZGNjZjg2NmUyYzNmYWJhN2VkNjg0NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU4ZGQyNGE4MGNhMGY0MDBkMDc2MWFmZDljZTJiN2Y2ODRmYzkxMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/RXJpYz0yMEI9QzM9QTluYXJkPz0gPGVyaWNAZXVrcmVhLmNvbT4KIERhdGU6IFRodSwgMjUgQXByIDIwMTMgMDA6Mjc6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzZdIGNvbmZpZ3VyZTogYWRkIGEgdmFyaWFibGUgdG8gYWxsb3cgb3BlbnB0eSBjaGVjayB0byBiZSBjYWNoZWQKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBhZGQgYSB2YXJpYWJsZSB0byBhbGxvdyBvcGVucHR5IGNoZWNrIHRvIGJlIGNhY2hlZAogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9naXRodWIuY29tL21rai9kcm9wYmVhci9wdWxsLzQ4IF0KIAorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDExICsrKysrKysrLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMDU0NjFmMy4uOWMxNmQ5MCAxMDA2NDQKK2luZGV4IDg5M2I5MDQuLjI0NTQwOGQgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE2NiwxNSArMTY2LDIwIEBAIEFDX0FSR19FTkFCTEUob3BlbnB0eSwKK0BAIC0xNzcsMTUgKzE3NywyMCBAQCBBQ19BUkdfRU5BQkxFKG9wZW5wdHksCiAgCQkJQUNfTVNHX05PVElDRShOb3QgdXNpbmcgb3BlbnB0eSkKICAJCWVsc2UKICAJCQlBQ19NU0dfTk9USUNFKFVzaW5nIG9wZW5wdHkgaWYgYXZhaWxhYmxlKQpAQCAtMzgsNSArMzksNSBAQAogIEFDX0FSR19FTkFCTEUoc3lzbG9nLAogIAlbICAtLWRpc2FibGUtc3lzbG9nICAgICAgICBEb24ndCBpbmNsdWRlIHN5c2xvZyBzdXBwb3J0XSwKIC0tIAotMS43LjExLjcKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9maXgtbGlidG9tY3J5cHQtbGlidG9tbWF0aC1vcmRlcmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9maXgtbGlidG9tY3J5cHQtbGlidG9tbWF0aC1vcmRlcmluZy5wYXRjaAppbmRleCBkZTkzMGYyLi4yYjA1ZTE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZml4LWxpYnRvbWNyeXB0LWxpYnRvbW1hdGgtb3JkZXJpbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL2ZpeC1saWJ0b21jcnlwdC1saWJ0b21tYXRoLW9yZGVyaW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZmQ4ZDJhZWRhZDBjNTBjZGYxZTQzZWRkMjM4Nzg3NGI3MjBhZDRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmMzdmYTlhNDFmMjQ4ZmE0MWRkNzRhNDFjNjZjYjQxYTI5MWMwM2QyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTYgU2VwIDIwMTYgMTI6MTg6MjMgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gZml4IGxpYnRvbWNyeXB0L2xpYnRvbW1hdGggb3JkZXJpbmcKQEAgLTExLDE4ICsxMSwxOSBAQAogTm90ZSB0aGF0IExJQlRPTV9MSUJTIGlzIG5vdCB1c2VkIHdoZW4gbGlua2luZyB3aXRoIHRoZSBidW5kbGVkCiBsaWJ0b20gbGlicy4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsgaHR0cHM6Ly9naXRodWIuY29tL21rai9kcm9wYmVhci9jb21taXQvZjllNmJjMmFlY2FiMGY0YjViNTI5ZTA3YTkyY2M2M2M4YTY2Y2Q0YiBdCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgogLS0tCiAgY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGI2YWJlNGMuLjg1YmI4YmMgMTAwNjQ0CitpbmRleCAyNDU0MDhkLi5kNjI0ODUzIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zOTAsMTYgKzM5MCwxNiBAQCBBQ19BUkdfRU5BQkxFKGJ1bmRsZWQtbGlidG9tLAorQEAgLTM5MywxNiArMzkzLDE2IEBAIEFDX0FSR19FTkFCTEUoYnVuZGxlZC1saWJ0b20sCiAgCQkJQUNfTVNHX05PVElDRShGb3JjaW5nIGJ1bmRsZWQgbGlidG9tKikKICAJCWVsc2UKICAJCQlCVU5ETEVEX0xJQlRPTT0wCkBAIC00NCw1ICs0NSw1IEBACiAgKQogIAogLS0gCi0xLjkuMQorMi44LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL3N1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL3N1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjZlZmI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb206ID0/VVRGLTg/cT9IZW5yaWs9MjBOb3Jkc3RyPUMzPUI2bT89IDxoZW5yaWtAa25jLm51PgotRGF0ZTogV2VkLCAxMSBNYXkgMjAxNiAxMjozNTowNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IG91dC1vZi10cmVlIGJ1aWxkcyB1c2lnbiBidW5kbGVkIGxpYnRvbQotCi1XaGVuIGJ1aWxkaW5nIG91dC1vZi10cmVlIHdlIG5lZWQgYm90aCBzb3VyY2UgYW5kIGdlbmVyYXRlZAotZm9sZGVycyBpbiBpbmNsdWRlIHBhdGhzIHRvIGZpbmQgYm90aCBkaXN0cmlidXRlZCBhbmQgZ2VuZXJhdGVkCi1oZWFkZXJzLgotCi0KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQotIGxpYnRvbWNyeXB0L01ha2VmaWxlLmluIHwgMiArLQotIGxpYnRvbW1hdGgvTWFrZWZpbGUuaW4gIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlidG9tY3J5cHQvTWFrZWZpbGUuaW4gYi9saWJ0b21jcnlwdC9NYWtlZmlsZS5pbgotaW5kZXggMzA1NmVmMC4uNzk3MDcwMCAxMDA2NDQKLS0tLSBhL2xpYnRvbWNyeXB0L01ha2VmaWxlLmluCi0rKysgYi9saWJ0b21jcnlwdC9NYWtlZmlsZS5pbgotQEAgLTE5LDcgKzE5LDcgQEAgc3JjZGlyPUBzcmNkaXJACi0gCi0gIyBDb21waWxhdGlvbiBmbGFncy4gTm90ZSB0aGUgKz0gZG9lcyBub3Qgd3JpdGUgb3ZlciB0aGUgdXNlcidzIENGTEFHUyEKLSAjIFRoZSByZXN0IG9mIHRoZSBmbGFncyBjb21lIGZyb20gdGhlIHBhcmVudCBEcm9wYmVhciBtYWtlZmlsZQotLUNGTEFHUyArPSAtYyAtSSQoc3JjZGlyKS9zcmMvaGVhZGVycy8gLUkkKHNyY2RpcikvLi4vIC1ETFRDX1NPVVJDRSAtSSQoc3JjZGlyKS8uLi9saWJ0b21tYXRoLwotK0NGTEFHUyArPSAtYyAtSXNyYy9oZWFkZXJzLyAtSSQoc3JjZGlyKS9zcmMvaGVhZGVycy8gLUkuLi8gLUkkKHNyY2RpcikvLi4vIC1ETFRDX1NPVVJDRSAtSS4uL2xpYnRvbW1hdGgvIC1JJChzcmNkaXIpLy4uL2xpYnRvbW1hdGgvCi0gCi0gIyBhZGRpdGlvbmFsIHdhcm5pbmdzIChuZXdlciBHQ0MgMy40IGFuZCBoaWdoZXIpCi0gaWZkZWYgR0NDXzM0Ci1kaWZmIC0tZ2l0IGEvbGlidG9tbWF0aC9NYWtlZmlsZS5pbiBiL2xpYnRvbW1hdGgvTWFrZWZpbGUuaW4KLWluZGV4IDA2YWJhNjguLjAxOWM1MGIgMTAwNjQ0Ci0tLS0gYS9saWJ0b21tYXRoL01ha2VmaWxlLmluCi0rKysgYi9saWJ0b21tYXRoL01ha2VmaWxlLmluCi1AQCAtOSw3ICs5LDcgQEAgVlBBVEg9QHNyY2RpckAKLSBzcmNkaXI9QHNyY2RpckAKLSAKLSAjIFNvIHRoYXQgbGlidG9tbWF0aCBjYW4gaW5jbHVkZSBEcm9wYmVhciBoZWFkZXJzIGZvciBvcHRpb25zIGFuZCBtX2J1cm4oKQotLUNGTEFHUyArPSAtSSQoc3JjZGlyKS8uLi9saWJ0b21jcnlwdC9zcmMvaGVhZGVycy8gLUkkKHNyY2RpcikvLi4vCi0rQ0ZMQUdTICs9IC1JLiAtSSQoc3JjZGlyKSAtSS4uL2xpYnRvbWNyeXB0L3NyYy9oZWFkZXJzLyAtSSQoc3JjZGlyKS8uLi9saWJ0b21jcnlwdC9zcmMvaGVhZGVycy8gLUkuLi8gLUkkKHNyY2RpcikvLi4vCi0gCi0gaWZuZGVmIElHTk9SRV9TUEVFRAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTYuNzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNi43NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTcwMjA5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNi43NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBkcm9wYmVhci5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL3N1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWFkMDE3MjczMWUwZjE2NjIzOTM3ODA0NjQzYjViZDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjcyMGVhNTRlZDAwOWFmODEyNzAxYmNjMjkwYTJhNjAxZDVjMTA3ZDEyOTkzZTVkOTJjMGY1ZjgxZjcxODg5MSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTcuNzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNy43NS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmIwZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTcuNzUuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIGRyb3BiZWFyLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiZTU3ZTliOWQyNTcwNWRjYjA3M2JhMTVjNDE2NDI0ZmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmNiYzFkY2IxYzk3MDlkMjI2ZGZmNjY5ZTU2MDQxNzJhMThjZjVkYmY5YTIwMTQ3NGQ1NjE4YWU0NDY1MDk4YyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC5pbmMKaW5kZXggOWZhMGNhMi4uMGVlNmMyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jCkBAIC02LDcgKzYsMTEgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZXhwYXQvZXhwYXQtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9hdXRvdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlidG9vbC10YWcucGF0Y2ggXAogCSAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9ub19nZXRyYW5kb20ucGF0Y2giCisKIGluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCiAKICMgVGhpcyBwYWNrYWdlIHVzZXMgYW4gYXJjaGl2ZSBmb3JtYXQga25vd24gdG8gaGF2ZSBpc3N1ZSB3aXRoIHNvbWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWY0MTk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2xpYnRvb2wtdGFnLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK0FkZCBDQyB0YWcgdG8gYnVpbGQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogZXhwYXQtMi4yLjIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBleHBhdC0yLjIuMi5vcmlnL01ha2VmaWxlLmluCisrKysgZXhwYXQtMi4yLjIvTWFrZWZpbGUuaW4KK0BAIC0xMDksNyArMTA5LDcgQEAgbWtkaXItaW5pdDoKKyAKKyBDQyA9IEBDQ0AKKyBDWFggPSBAQ1hYQAorLUxJQlRPT0wgPSBATElCVE9PTEAKKytMSUJUT09MID0gQExJQlRPT0xAIC0tdGFnIENDCisgCisgSU5DTFVERVMgPSAtSSQoc3JjZGlyKS9saWIgLUkuCisgTERGTEFHUyA9IEBMREZMQUdTQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L25vX2dldHJhbmRvbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9ub19nZXRyYW5kb20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0ZjFiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9ub19nZXRyYW5kb20ucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorVGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIGV4cGF0IG1heSBiZSB1c2VkIG9uIG9sZGVyIHN5c3RlbXMgd2hpY2ggZG9udCBoYXZlIGdsaWJjIDIuMjUKK2FuZCBoZW5jZSBkb24ndCBoYXZlIGdldHJhbmRvbSgpIHRoYW5rcyB0byB1bmluYXRpdmUuIERpc2FibGUgdGhlIGxpYmMgY2FsbCBhbmQKK3VzZSB0aGUgc3lzY2FsbCBpbnN0ZWFkIHRvIGF2b2lkIGEgY29tcGF0aWJpbGl0eSBpc3N1ZSB1bnRpbCB3ZSBoYXZlIDIuMjUgZXZlcnl3aGVyZQord2Ugc3VwcG9ydCB3aXRoIHVuaW5hdGl2ZS4KKworUlAKKzIwMTcvOC8xNAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworSW5kZXg6IGV4cGF0LTIuMi4zL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGV4cGF0LTIuMi4zLm9yaWcvY29uZmlndXJlLmFjCisrKysgZXhwYXQtMi4yLjMvY29uZmlndXJlLmFjCitAQCAtMTUxLDcgKzE1MSw3IEBAIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCisgICAjaW5jbHVkZSA8c3RkbGliLmg+ICAvKiBmb3IgTlVMTCAqLworICAgI2luY2x1ZGUgPHN5cy9yYW5kb20uaD4KKyAgIGludCBtYWluKCkgeworLSAgICByZXR1cm4gZ2V0cmFuZG9tKE5VTEwsIDBVLCAwVSk7CisrICAgIHJldHVybiBnZXRyYW5kb21CUkVBS01FKE5VTEwsIDBVLCAwVSk7CisgICB9CisgXSldLCBbCisgICAgIEFDX0RFRklORShbSEFWRV9HRVRSQU5ET01dLCBbMV0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMjFhMTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIGV4cGF0LmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWMzZWU1NTljNmY5ZGNlZTEwNDNlYWQxMTIxMzlmNGYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZjQ3ODQxYzgyOWZhY2IzNDZlYjZlM2ZhYjUyMTJlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOWU1MGZmMmQxOWIzNTM4YmQyMTI3OTAyYTg5OTg3NDc0ZTFhNGRiOGU0M2E2NmE0ZDFhNzEyYWI5YTUwNGZmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZjg0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjMuYmIKQEAgLTAsMCArMSw0IEBACityZXF1aXJlIGV4cGF0LmluYworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIwZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiCitTUkNfVVJJW21kNXN1bV0gPSAiZjA1M2FmNjNlZjVmMzliZDliNzhkMDFmYmMyMDMzMzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMxODkwZmIwMmY4NWMwMDJhNjc0OTE5MjNmODliZGE1MDI4YTg4MGZkNmMzNzRmNzA3MTkzYWQ4MWFhY2U1ZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMuYmIKaW5kZXggZGU5Mjk3ZS4uMDJmNTQwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMuYmIKQEAgLTMsMzggKzMsMTggQEAKIAogU1VNTUFSWSA9ICJQT1NJWCBmaWxlIHRyZWUgc3RyZWFtIG9wZXJhdGlvbnMgbGlicmFyeSIKIEhPTUVQQUdFID0gImh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL2Jvc3RpYy5jb20va2VpdGhib3N0aWMiCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2Z0cy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MzY7bWQ1PTI1MzJlZGRiM2QxYTIxOTA1NzIzYTQwMTFlYzRlMDg1IgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZmZlMzU4MTc0YWFkMzgzZjFiNjljZTNiNTNkYTk4MiIKIFNFQ1RJT04gPSAibGlicyIKIAotU1JDX1VSSSA9ICJodHRwczovL3NpdGVzLmdvb2dsZS5jb20vYS9ib3N0aWMuY29tL2tlaXRoYm9zdGljL2ZpbGVzL2Z0cy50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZnRzLWhlYWRlci1jb3JyZWN0bmVzcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9mdHMtdWNsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZV9jZGVmcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdGRpbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2NjNS5wYXRjaCBcCitTUkNSRVYgPSAiOTQ0MzMzYWVkOWRjMjRjZmE3NmNjNjRiZmU3MGM3NWQyNTY1Mjc1MyIKK1BWID0gIjEuMitnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZvaWRsaW51eC9tdXNsLWZ0cyBcCiAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMTIwYzE0NzE1NDg1ZWM2Y2VkMTRmNDk0ZDA1OWQyMGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RmOWI5YjVhNDVhZWFmMTZmMzNiYjg0ZTY5MmExMGRjNjYyZTIyZWM4YTUxNzQ4Zjk4NzY3ZDY3ZmI2ZjM0MiIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotSEFTSFNUWUxFX21pcHNhcmNoID0gInN5c3YiCi1IQVNIU1RZTEUgPSAiZ251IgotCi1WRVIgPSAiMCIKLWRvX2NvbXBpbGUgKCkgewotICAgICR7Q0N9IC1JJHtTfSAtZlBJQyAtc2hhcmVkIC1XbCwtLWhhc2gtc3R5bGU9JHtIQVNIU1RZTEV9IC1vIGxpYmZ0cy5zby4ke1ZFUn0gLVdsLC1zb25hbWUsbGliZnRzLnNvLiR7VkVSfSAke1N9L2Z0cy5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtRG03NTUgJHtCfS9saWJmdHMuc28uJHtWRVJ9ICR7RH0ke2xpYmRpcn0vbGliZnRzLnNvLiR7VkVSfQotICAgIGxuIC1zZiBsaWJmdHMuc28uJHtWRVJ9ICR7RH0ke2xpYmRpcn0vbGliZnRzLnNvCi0gICAgaW5zdGFsbCAtRG02NDQgJHtTfS9mdHMuaCAke0R9JHtpbmNsdWRlZGlyfS9mdHMuaAotfQoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAjCiAjIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGZvciBub24tbXVzbCBzeXN0ZW1zCiAjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9mdHMtaGVhZGVyLWNvcnJlY3RuZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZnRzLWhlYWRlci1jb3JyZWN0bmVzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzczZGRjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9mdHMtaGVhZGVyLWNvcnJlY3RuZXNzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotSW5jbHVkZWQgbmVlZGVkIGhlYWRlcnMgZm9yIGNvbXBpbGluZyB3aXRoIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi0tLS0gZnRzLm9yaWcvZnRzLmgKLSsrKyBmdHMvZnRzLmgKLUBAIC0zOCw2ICszOCwxNyBAQAotICNpZm5kZWYJX0ZUU19IXwotICNkZWZpbmUJX0ZUU19IXwotIAotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0rCi0rI2luY2x1ZGUgPGRpcmVudC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKwotIHR5cGVkZWYgc3RydWN0IHsKLSAJc3RydWN0IF9mdHNlbnQgKmZ0c19jdXI7CS8qIGN1cnJlbnQgbm9kZSAqLwotIAlzdHJ1Y3QgX2Z0c2VudCAqZnRzX2NoaWxkOwkvKiBsaW5rZWQgbGlzdCBvZiBjaGlsZHJlbiAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZnRzLXVjbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL2Z0cy11Y2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NzY1NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZnRzLXVjbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUFkZCBtaXNzaW5nIGRlZmluZXMgZm9yIHVjbGliYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLS0tLSBmdHMub3JpZy9mdHMuYwotKysrIGZ0cy9mdHMuYwotQEAgLTMxLDYgKzMxLDEwIEBACi0gICogU1VDSCBEQU1BR0UuCi0gICovCi0gCi0rI2RlZmluZQlhbGlnbm9mKFRZUEUpICAgKChpbnQpICYoKHN0cnVjdCB7IGNoYXIgZHVtbXkxOyBUWVBFIGR1bW15MjsgfSAqKSAwKS0+ZHVtbXkyKQotKyNkZWZpbmUJQUxJR05CWVRFUwkoYWxpZ25vZihsb25nIGRvdWJsZSkgLSAxKQotKyNkZWZpbmUJQUxJR04ocCkJKCgodWludHB0cl90KShwKSArIEFMSUdOQllURVMpICYgfkFMSUdOQllURVMpIAotKwotICNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKLSBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpZnRzLmMJOC42IChCZXJrZWxleSkgOC8xNC85NCI7Ci0gI2VuZGlmIC8qIExJQkNfU0NDUyBhbmQgbm90IGxpbnQgKi8KLUBAIC02NTIsMTAgKzY1NiwxMCBAQAotIAkJaWYgKCFJU1NFVChGVFNfU0VFRE9UKSAmJiBJU0RPVChkcC0+ZF9uYW1lKSkKLSAJCQljb250aW51ZTsKLSAKLS0JCWlmICgocCA9IGZ0c19hbGxvYyhzcCwgZHAtPmRfbmFtZSwgKGludClkcC0+ZF9uYW1sZW4pKSA9PSBOVUxMKQotKwkJaWYgKChwID0gZnRzX2FsbG9jKHNwLCBkcC0+ZF9uYW1lLCAoaW50KWRwLT5kX3JlY2xlbikpID09IE5VTEwpCi0gCQkJZ290byBtZW0xOwotLQkJaWYgKGRwLT5kX25hbWxlbiA+IG1heGxlbikgewotLQkJCWlmIChmdHNfcGFsbG9jKHNwLCAoc2l6ZV90KWRwLT5kX25hbWxlbikpIHsKLSsJCWlmIChkcC0+ZF9yZWNsZW4gPiBtYXhsZW4pIHsKLSsJCQlpZiAoZnRzX3BhbGxvYyhzcCwgKHNpemVfdClkcC0+ZF9yZWNsZW4pKSB7Ci0gCQkJCS8qCi0gCQkJCSAqIE5vIG1vcmUgbWVtb3J5IGZvciBwYXRoIG9yIHN0cnVjdHVyZXMuICBTYXZlCi0gCQkJCSAqIGVycm5vLCBmcmVlIHVwIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBhbmQgdGhlCi1AQCAtNjc1LDcgKzY3OSw3IEBACi0gCQkJbWF4bGVuID0gc3AtPmZ0c19wYXRobGVuIC0gc3AtPmZ0c19jdXItPmZ0c19wYXRobGVuIC0gMTsKLSAJCX0KLSAKLS0JCXAtPmZ0c19wYXRobGVuID0gbGVuICsgZHAtPmRfbmFtbGVuICsgMTsKLSsJCXAtPmZ0c19wYXRobGVuID0gbGVuICsgZHAtPmRfcmVjbGVuICsgMTsKLSAJCXAtPmZ0c19wYXJlbnQgPSBzcC0+ZnRzX2N1cjsKLSAJCXAtPmZ0c19sZXZlbCA9IGxldmVsOwotIAotQEAgLTc4NCw3ICs3ODgsNyBAQAotIAkvKiBJZiB1c2VyIG5lZWRzIHN0YXQgaW5mbywgc3RhdCBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQuICovCi0gCXNicCA9IElTU0VUKEZUU19OT1NUQVQpID8gJnNiIDogcC0+ZnRzX3N0YXRwOwotIAotLSNpZmRlZiBEVF9XSFQKLSsjaWZkZWYgU19JRldIVAotIAkvKgotIAkgKiBXaGl0ZWQtb3V0IGZpbGVzIGRvbid0IHJlYWxseSBleGlzdC4gIEhvd2V2ZXIsIHRoZXJlJ3Mgc3RhdCgyKSBmaWxlCi0gCSAqIG1hc2sgZm9yIHRoZW0sIHNvIHdlIHNldCBpdCBzbyB0aGF0IHByb2dyYW1zIChpLmUuLCBmaW5kKSBkb24ndCBoYXZlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9nY2M1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZ2NjNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjViOTQ4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9nY2M1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM2OCArMCwwIEBACi1Gb3J3YXJkIHBvcnQgdGhlIHNvdXJjZXMgdG8gYmUgYWJsZSB0byBjb21waWxlIHdpdGggYzk5L2djYzUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1JbmRleDogZnRzL2Z0cy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZnRzLm9yaWcvZnRzLmMKLSsrKyBmdHMvZnRzLmMKLUBAIC01MSwxNiArNTEsNiBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpZnRzLmMJOC42IChCCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLS1zdGF0aWMgRlRTRU5UCSpmdHNfYWxsb2MgX19QKEZUUyAqLCBjaGFyICosIGludCk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX2J1aWxkIF9fUChGVFMgKiwgaW50KTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xmcmVlIF9fUChGVFNFTlQgKik7Ci0tc3RhdGljIHZvaWQJIGZ0c19sb2FkIF9fUChGVFMgKiwgRlRTRU5UICopOwotLXN0YXRpYyBzaXplX3QJIGZ0c19tYXhhcmdsZW4gX19QKGNoYXIgKiBjb25zdCAqKTsKLS1zdGF0aWMgdm9pZAkgZnRzX3BhZGp1c3QgX19QKEZUUyAqLCB2b2lkICopOwotLXN0YXRpYyBpbnQJIGZ0c19wYWxsb2MgX19QKEZUUyAqLCBzaXplX3QpOwotLXN0YXRpYyBGVFNFTlQJKmZ0c19zb3J0IF9fUChGVFMgKiwgRlRTRU5UICosIGludCk7Ci0tc3RhdGljIHVfc2hvcnQJIGZ0c19zdGF0IF9fUChGVFMgKiwgc3RydWN0IGRpcmVudCAqLCBGVFNFTlQgKiwgaW50KTsKLS0KLSAjZGVmaW5lCUlTRE9UKGEpCShhWzBdID09ICcuJyAmJiAoIWFbMV0gfHwgYVsxXSA9PSAnLicgJiYgIWFbMl0pKQotIAotICNkZWZpbmUJSVNTRVQob3B0KQkoc3AtPmZ0c19vcHRpb25zICYgb3B0KQotQEAgLTczLDExOSArNjMsMTYgQEAgc3RhdGljIHVfc2hvcnQJIGZ0c19zdGF0IF9fUChGVFMgKiwgc3RydQotICNkZWZpbmUJQkNISUxECQkxCQkvKiBmdHNfY2hpbGRyZW4gKi8KLSAjZGVmaW5lCUJOQU1FUwkJMgkJLyogZnRzX2NoaWxkcmVuLCBuYW1lcyBvbmx5ICovCi0gI2RlZmluZQlCUkVBRAkJMwkJLyogZnRzX3JlYWQgKi8KLS0KLS1GVFMgKgotLWZ0c19vcGVuKGFyZ3YsIG9wdGlvbnMsIGNvbXBhcikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLQlyZWdpc3RlciBpbnQgb3B0aW9uczsKLS0JaW50ICgqY29tcGFyKSgpOwotLXsKLS0JcmVnaXN0ZXIgRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqcm9vdDsKLS0JcmVnaXN0ZXIgaW50IG5pdGVtczsKLS0JRlRTRU5UICpwYXJlbnQsICp0bXA7Ci0tCWludCBsZW47Ci0tCi0tCS8qIE9wdGlvbnMgY2hlY2suICovCi0tCWlmIChvcHRpb25zICYgfkZUU19PUFRJT05NQVNLKSB7Ci0tCQllcnJubyA9IEVJTlZBTDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSB0aGUgc3RyZWFtICovCi0tCWlmICgoc3AgPSBtYWxsb2MoKHVfaW50KXNpemVvZihGVFMpKSkgPT0gTlVMTCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCW1lbXNldChzcCwgMCwgc2l6ZW9mKEZUUykpOwotLQlzcC0+ZnRzX2NvbXBhciA9IGNvbXBhcjsKLS0Jc3AtPmZ0c19vcHRpb25zID0gb3B0aW9uczsKLS0KLS0JLyogTG9naWNhbCB3YWxrcyB0dXJuIG9uIE5PQ0hESVI7IHN5bWJvbGljIGxpbmtzIGFyZSB0b28gaGFyZC4gKi8KLS0JaWYgKElTU0VUKEZUU19MT0dJQ0FMKSkKLS0JCVNFVChGVFNfTk9DSERJUik7Ci0tCi0tCS8qCi0tCSAqIFN0YXJ0IG91dCB3aXRoIDFLIG9mIHBhdGggc3BhY2UsIGFuZCBlbm91Z2gsIGluIGFueSBjYXNlLAotLQkgKiB0byBob2xkIHRoZSB1c2VyJ3MgcGF0aHMuCi0tCSAqLwotLQlpZiAoZnRzX3BhbGxvYyhzcCwgTUFYKGZ0c19tYXhhcmdsZW4oYXJndiksIE1BWFBBVEhMRU4pKSkKLS0JCWdvdG8gbWVtMTsKLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSByb290J3MgcGFyZW50LiAqLwotLQlpZiAoKHBhcmVudCA9IGZ0c19hbGxvYyhzcCwgIiIsIDApKSA9PSBOVUxMKQotLQkJZ290byBtZW0yOwotLQlwYXJlbnQtPmZ0c19sZXZlbCA9IEZUU19ST09UUEFSRU5UTEVWRUw7Ci0tCi0tCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgcm9vdChzKS4gKi8KLS0JZm9yIChyb290ID0gTlVMTCwgbml0ZW1zID0gMDsgKmFyZ3Y7ICsrYXJndiwgKytuaXRlbXMpIHsKLS0JCS8qIERvbid0IGFsbG93IHplcm8tbGVuZ3RoIHBhdGhzLiAqLwotLQkJaWYgKChsZW4gPSBzdHJsZW4oKmFyZ3YpKSA9PSAwKSB7Ci0tCQkJZXJybm8gPSBFSU5WQUw7Ci0tCQkJZ290byBtZW0zOwotLQkJfQotLQotLQkJcCA9IGZ0c19hbGxvYyhzcCwgKmFyZ3YsIGxlbik7Ci0tCQlwLT5mdHNfbGV2ZWwgPSBGVFNfUk9PVExFVkVMOwotLQkJcC0+ZnRzX3BhcmVudCA9IHBhcmVudDsKLS0JCXAtPmZ0c19hY2NwYXRoID0gcC0+ZnRzX25hbWU7Ci0tCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCBJU1NFVChGVFNfQ09NRk9MTE9XKSk7Ci0tCi0tCQkvKiBDb21tYW5kLWxpbmUgIi4iIGFuZCAiLi4iIGFyZSByZWFsIGRpcmVjdG9yaWVzLiAqLwotLQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19ET1QpCi0tCQkJcC0+ZnRzX2luZm8gPSBGVFNfRDsKLS0KLS0JCS8qCi0tCQkgKiBJZiBjb21wYXJpc29uIHJvdXRpbmUgc3VwcGxpZWQsIHRyYXZlcnNlIGluIHNvcnRlZAotLQkJICogb3JkZXI7IG90aGVyd2lzZSB0cmF2ZXJzZSBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkLgotLQkJICovCi0tCQlpZiAoY29tcGFyKSB7Ci0tCQkJcC0+ZnRzX2xpbmsgPSByb290OwotLQkJCXJvb3QgPSBwOwotLQkJfSBlbHNlIHsKLS0JCQlwLT5mdHNfbGluayA9IE5VTEw7Ci0tCQkJaWYgKHJvb3QgPT0gTlVMTCkKLS0JCQkJdG1wID0gcm9vdCA9IHA7Ci0tCQkJZWxzZSB7Ci0tCQkJCXRtcC0+ZnRzX2xpbmsgPSBwOwotLQkJCQl0bXAgPSBwOwotLQkJCX0KLS0JCX0KLS0JfQotLQlpZiAoY29tcGFyICYmIG5pdGVtcyA+IDEpCi0tCQlyb290ID0gZnRzX3NvcnQoc3AsIHJvb3QsIG5pdGVtcyk7Ci0tCi0tCS8qCi0tCSAqIEFsbG9jYXRlIGEgZHVtbXkgcG9pbnRlciBhbmQgbWFrZSBmdHNfcmVhZCB0aGluayB0aGF0IHdlJ3ZlIGp1c3QKLS0JICogZmluaXNoZWQgdGhlIG5vZGUgYmVmb3JlIHRoZSByb290KHMpOyBzZXQgcC0+ZnRzX2luZm8gdG8gRlRTX0lOSVQKLS0JICogc28gdGhhdCBldmVyeXRoaW5nIGFib3V0IHRoZSAiY3VycmVudCIgbm9kZSBpcyBpZ25vcmVkLgotLQkgKi8KLS0JaWYgKChzcC0+ZnRzX2N1ciA9IGZ0c19hbGxvYyhzcCwgIiIsIDApKSA9PSBOVUxMKQotLQkJZ290byBtZW0zOwotLQlzcC0+ZnRzX2N1ci0+ZnRzX2xpbmsgPSByb290OwotLQlzcC0+ZnRzX2N1ci0+ZnRzX2luZm8gPSBGVFNfSU5JVDsKLS0KLS0JLyoKLS0JICogSWYgdXNpbmcgY2hkaXIoMiksIGdyYWIgYSBmaWxlIGRlc2NyaXB0b3IgcG9pbnRpbmcgdG8gZG90IHRvIGluc3VyZQotLQkgKiB0aGF0IHdlIGNhbiBnZXQgYmFjayBoZXJlOyB0aGlzIGNvdWxkIGJlIGF2b2lkZWQgZm9yIHNvbWUgcGF0aHMsCi0tCSAqIGJ1dCBhbG1vc3QgY2VydGFpbmx5IG5vdCB3b3J0aCB0aGUgZWZmb3J0LiAgU2xhc2hlcywgc3ltYm9saWMgbGlua3MsCi0tCSAqIGFuZCAiLi4iIGFyZSBhbGwgZmFpcmx5IG5hc3R5IHByb2JsZW1zLiAgTm90ZSwgaWYgd2UgY2FuJ3QgZ2V0IHRoZQotLQkgKiBkZXNjcmlwdG9yIHdlIHJ1biBhbnl3YXksIGp1c3QgbW9yZSBzbG93bHkuCi0tCSAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiAoc3AtPmZ0c19yZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQlyZXR1cm4gKHNwKTsKLS0KLS1tZW0zOglmdHNfbGZyZWUocm9vdCk7Ci0tCWZyZWUocGFyZW50KTsKLS1tZW0yOglmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tbWVtMToJZnJlZShzcCk7Ci0tCXJldHVybiAoTlVMTCk7Ci0tfQotKy8qCi0rICogU3BlY2lhbCBjYXNlIGEgcm9vdCBvZiAiLyIgc28gdGhhdCBzbGFzaGVzIGFyZW4ndCBhcHBlbmRlZCB3aGljaCB3b3VsZAotKyAqIGNhdXNlIHBhdGhzIHRvIGJlIHdyaXR0ZW4gYXMgIi8vZm9vIi4KLSsgKi8KLSsjZGVmaW5lCU5BUFBFTkQocCkJCQkJCQkJXAotKwkocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwgJiYgcC0+ZnRzX3BhdGhsZW4gPT0gMSAmJglcCi0rCSAgICBwLT5mdHNfcGF0aFswXSA9PSAnLycgPyAwIDogcC0+ZnRzX3BhdGhsZW4pCi0gCi0gc3RhdGljIHZvaWQKLS1mdHNfbG9hZChzcCwgcCkKLS0JRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotK2Z0c19sb2FkKEZUUyAqc3AsIHJlZ2lzdGVyIEZUU0VOVCAqcCkKLSB7Ci0gCXJlZ2lzdGVyIGludCBsZW47Ci0gCXJlZ2lzdGVyIGNoYXIgKmNwOwotQEAgLTIwOCwzMzIgKzk1LDIxNCBAQCBmdHNfbG9hZChzcCwgcCkKLSAJc3AtPmZ0c19kZXYgPSBwLT5mdHNfZGV2OwotIH0KLSAKLS1pbnQKLS1mdHNfY2xvc2Uoc3ApCi0tCUZUUyAqc3A7Ci0rc3RhdGljIHZvaWQKLStmdHNfbGZyZWUocmVnaXN0ZXIgRlRTRU5UICpoZWFkKQotIHsKLS0JcmVnaXN0ZXIgRlRTRU5UICpmcmVlcCwgKnA7Ci0tCWludCBzYXZlZF9lcnJubzsKLSsJcmVnaXN0ZXIgRlRTRU5UICpwOwotIAotLQkvKgotLQkgKiBUaGlzIHN0aWxsIHdvcmtzIGlmIHdlIGhhdmVuJ3QgcmVhZCBhbnl0aGluZyAtLSB0aGUgZHVtbXkgc3RydWN0dXJlCi0tCSAqIHBvaW50cyB0byB0aGUgcm9vdCBsaXN0LCBzbyB3ZSBzdGVwIHRocm91Z2ggdG8gdGhlIGVuZCBvZiB0aGUgcm9vdAotLQkgKiBsaXN0IHdoaWNoIGhhcyBhIHZhbGlkIHBhcmVudCBwb2ludGVyLgotLQkgKi8KLS0JaWYgKHNwLT5mdHNfY3VyKSB7Ci0tCQlmb3IgKHAgPSBzcC0+ZnRzX2N1cjsgcC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7KSB7Ci0tCQkJZnJlZXAgPSBwOwotLQkJCXAgPSBwLT5mdHNfbGluayA/IHAtPmZ0c19saW5rIDogcC0+ZnRzX3BhcmVudDsKLS0JCQlmcmVlKGZyZWVwKTsKLS0JCX0KLSsJLyogRnJlZSBhIGxpbmtlZCBsaXN0IG9mIHN0cnVjdHVyZXMuICovCi0rCXdoaWxlIChwID0gaGVhZCkgewotKwkJaGVhZCA9IGhlYWQtPmZ0c19saW5rOwotIAkJZnJlZShwKTsKLSAJfQotK30KLSAKLS0JLyogRnJlZSB1cCBjaGlsZCBsaW5rZWQgbGlzdCwgc29ydCBhcnJheSwgcGF0aCBidWZmZXIuICovCi0tCWlmIChzcC0+ZnRzX2NoaWxkKQotLQkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotLQlpZiAoc3AtPmZ0c19hcnJheSkKLS0JCWZyZWUoc3AtPmZ0c19hcnJheSk7Ci0tCWZyZWUoc3AtPmZ0c19wYXRoKTsKLStzdGF0aWMgc2l6ZV90Ci0rZnRzX21heGFyZ2xlbihjaGFyICogY29uc3QgKmFyZ3YpCi0rewotKwlzaXplX3QgbGVuLCBtYXg7Ci0gCi0tCS8qIFJldHVybiB0byBvcmlnaW5hbCBkaXJlY3RvcnksIHNhdmUgZXJybm8gaWYgbmVjZXNzYXJ5LiAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSkgewotLQkJc2F2ZWRfZXJybm8gPSBmY2hkaXIoc3AtPmZ0c19yZmQpID8gZXJybm8gOiAwOwotLQkJKHZvaWQpY2xvc2Uoc3AtPmZ0c19yZmQpOwotLQl9Ci0rCWZvciAobWF4ID0gMDsgKmFyZ3Y7ICsrYXJndikKLSsJCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPiBtYXgpCi0rCQkJbWF4ID0gbGVuOwotKwlyZXR1cm4gKG1heCk7Ci0rfQotIAotLQkvKiBGcmVlIHVwIHRoZSBzdHJlYW0gcG9pbnRlci4gKi8KLS0JZnJlZShzcCk7Ci0gCi0tCS8qIFNldCBlcnJubyBhbmQgcmV0dXJuLiAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiBzYXZlZF9lcnJubykgewotLQkJZXJybm8gPSBzYXZlZF9lcnJubzsKLS0JCXJldHVybiAoLTEpOwotKy8qCi0rICogV2hlbiB0aGUgcGF0aCBpcyByZWFsbG9jJ2QsIGhhdmUgdG8gZml4IGFsbCBvZiB0aGUgcG9pbnRlcnMgaW4gc3RydWN0dXJlcwotKyAqIGFscmVhZHkgcmV0dXJuZWQuCi0rICovCi0rc3RhdGljIHZvaWQKLStmdHNfcGFkanVzdChGVFMgKnNwLCB2b2lkICphZGRyKQotK3sKLSsJRlRTRU5UICpwOwotKwotKyNkZWZpbmUJQURKVVNUKHApIHsJCQkJCQkJXAotKwkocCktPmZ0c19hY2NwYXRoID0JCQkJCQlcCi0rCSAgICAoY2hhciAqKWFkZHIgKyAoKHApLT5mdHNfYWNjcGF0aCAtIChwKS0+ZnRzX3BhdGgpOwkJXAotKwkocCktPmZ0c19wYXRoID0gYWRkcjsJCQkJCQlcCi0rfQotKwkvKiBBZGp1c3QgdGhlIGN1cnJlbnQgc2V0IG9mIGNoaWxkcmVuLiAqLwotKwlmb3IgKHAgPSBzcC0+ZnRzX2NoaWxkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0rCQlBREpVU1QocCk7Ci0rCi0rCS8qIEFkanVzdCB0aGUgcmVzdCBvZiB0aGUgdHJlZS4gKi8KLSsJZm9yIChwID0gc3AtPmZ0c19jdXI7IHAtPmZ0c19sZXZlbCA+PSBGVFNfUk9PVExFVkVMOykgewotKwkJQURKVVNUKHApOwotKwkJcCA9IHAtPmZ0c19saW5rID8gcC0+ZnRzX2xpbmsgOiBwLT5mdHNfcGFyZW50OwotIAl9Ci0tCXJldHVybiAoMCk7Ci0gfQotIAotIC8qCi0tICogU3BlY2lhbCBjYXNlIGEgcm9vdCBvZiAiLyIgc28gdGhhdCBzbGFzaGVzIGFyZW4ndCBhcHBlbmRlZCB3aGljaCB3b3VsZAotLSAqIGNhdXNlIHBhdGhzIHRvIGJlIHdyaXR0ZW4gYXMgIi8vZm9vIi4KLSsgKiBBbGxvdyBlc3NlbnRpYWxseSB1bmxpbWl0ZWQgcGF0aHM7IGZpbmQsIHJtLCBscyBzaG91bGQgYWxsIHdvcmsgb24gYW55IHRyZWUuCi0rICogTW9zdCBzeXN0ZW1zIHdpbGwgYWxsb3cgY3JlYXRpb24gb2YgcGF0aHMgbXVjaCBsb25nZXIgdGhhbiBNQVhQQVRITEVOLCBldmVuCi0rICogdGhvdWdoIHRoZSBrZXJuZWwgd29uJ3QgcmVzb2x2ZSB0aGVtLiAgQWRkIHRoZSBzaXplIChub3QganVzdCB3aGF0J3MgbmVlZGVkKQotKyAqIHBsdXMgMjU2IGJ5dGVzIHNvIGRvbid0IHJlYWxsb2MgdGhlIHBhdGggMiBieXRlcyBhdCBhIHRpbWUuCi0gICovCi0tI2RlZmluZQlOQVBQRU5EKHApCQkJCQkJCVwKLS0JKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMICYmIHAtPmZ0c19wYXRobGVuID09IDEgJiYJXAotLQkgICAgcC0+ZnRzX3BhdGhbMF0gPT0gJy8nID8gMCA6IHAtPmZ0c19wYXRobGVuKQotK3N0YXRpYyBpbnQKLStmdHNfcGFsbG9jKEZUUyAqc3AsIHNpemVfdCBtb3JlKQotK3sKLSsJc3AtPmZ0c19wYXRobGVuICs9IG1vcmUgKyAyNTY7Ci0rCXNwLT5mdHNfcGF0aCA9IHJlYWxsb2Moc3AtPmZ0c19wYXRoLCAoc2l6ZV90KXNwLT5mdHNfcGF0aGxlbik7Ci0rCXJldHVybiAoc3AtPmZ0c19wYXRoID09IE5VTEwpOwotK30KLSAKLS1GVFNFTlQgKgotLWZ0c19yZWFkKHNwKQotLQlyZWdpc3RlciBGVFMgKnNwOwotK3N0YXRpYyBGVFNFTlQgKgotK2Z0c19hbGxvYyhGVFMgKnNwLCBjaGFyICpuYW1lLCByZWdpc3RlciBpbnQgbmFtZWxlbikKLSB7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcCwgKnRtcDsKLS0JcmVnaXN0ZXIgaW50IGluc3RyOwotLQlyZWdpc3RlciBjaGFyICp0OwotLQlpbnQgc2F2ZWRfZXJybm87Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLSsJc2l6ZV90IGxlbjsKLSAKLS0JLyogSWYgZmluaXNoZWQgb3IgdW5yZWNvdmVyYWJsZSBlcnJvciwgcmV0dXJuIE5VTEwuICovCi0tCWlmIChzcC0+ZnRzX2N1ciA9PSBOVUxMIHx8IElTU0VUKEZUU19TVE9QKSkKLSsJLyoKLSsJICogVGhlIGZpbGUgbmFtZSBpcyBhIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBhbmQgbm8gc3RhdCBzdHJ1Y3R1cmUgaXMKLSsJICogbmVjZXNzYXJ5IGlmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIG5vc3RhdCBiaXQuICBBbGxvY2F0ZSB0aGUgRlRTRU5UCi0rCSAqIHN0cnVjdHVyZSwgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIHN0YXQgc3RydWN0dXJlIGluIG9uZSBjaHVuaywgYnV0Ci0rCSAqIGJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaXMgcmVhc29uYWJseSBhbGlnbmVkLiAgU2luY2UgdGhlCi0rCSAqIGZ0c19uYW1lIGZpZWxkIGlzIGRlY2xhcmVkIHRvIGJlIG9mIHNpemUgMSwgdGhlIGZ0c19uYW1lIHBvaW50ZXIgaXMKLSsJICogbmFtZWxlbiArIDIgYmVmb3JlIHRoZSBmaXJzdCBwb3NzaWJsZSBhZGRyZXNzIG9mIHRoZSBzdGF0IHN0cnVjdHVyZS4KLSsJICovCi0rCWxlbiA9IHNpemVvZihGVFNFTlQpICsgbmFtZWxlbjsKLSsJaWYgKCFJU1NFVChGVFNfTk9TVEFUKSkKLSsJCWxlbiArPSBzaXplb2Yoc3RydWN0IHN0YXQpICsgQUxJR05CWVRFUzsKLSsJaWYgKChwID0gbWFsbG9jKGxlbikpID09IE5VTEwpCi0gCQlyZXR1cm4gKE5VTEwpOwotIAotLQkvKiBTZXQgY3VycmVudCBub2RlIHBvaW50ZXIuICovCi0tCXAgPSBzcC0+ZnRzX2N1cjsKLSsJLyogQ29weSB0aGUgbmFtZSBwbHVzIHRoZSB0cmFpbGluZyBOVUxMLiAqLwotKwltZW1tb3ZlKHAtPmZ0c19uYW1lLCBuYW1lLCBuYW1lbGVuICsgMSk7Ci0gCi0tCS8qIFNhdmUgYW5kIHplcm8gb3V0IHVzZXIgaW5zdHJ1Y3Rpb25zLiAqLwotLQlpbnN0ciA9IHAtPmZ0c19pbnN0cjsKLSsJaWYgKCFJU1NFVChGVFNfTk9TVEFUKSkKLSsJCXAtPmZ0c19zdGF0cCA9IChzdHJ1Y3Qgc3RhdCAqKUFMSUdOKHAtPmZ0c19uYW1lICsgbmFtZWxlbiArIDIpOwotKwlwLT5mdHNfbmFtZWxlbiA9IG5hbWVsZW47Ci0rCXAtPmZ0c19wYXRoID0gc3AtPmZ0c19wYXRoOwotKwlwLT5mdHNfZXJybm8gPSAwOwotKwlwLT5mdHNfZmxhZ3MgPSAwOwotIAlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLSsJcC0+ZnRzX251bWJlciA9IDA7Ci0rCXAtPmZ0c19wb2ludGVyID0gTlVMTDsKLSsJcmV0dXJuIChwKTsKLSt9Ci0gCi0tCS8qIEFueSB0eXBlIG9mIGZpbGUgbWF5IGJlIHJlLXZpc2l0ZWQ7IHJlLXN0YXQgYW5kIHJlLXR1cm4uICovCi0tCWlmIChpbnN0ciA9PSBGVFNfQUdBSU4pIHsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIE5VTEwsIHAsIDApOwotLQkJcmV0dXJuIChwKTsKLS0JfQotIAotK3N0YXRpYyB1X3Nob3J0Ci0rZnRzX3N0YXQoRlRTICpzcCwgcmVnaXN0ZXIgRlRTRU5UICpwLCBzdHJ1Y3QgZGlyZW50ICpkcCwgaW50IGZvbGxvdykKLSt7Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqdDsKLSsJcmVnaXN0ZXIgZGV2X3QgZGV2OwotKwlyZWdpc3RlciBpbm9fdCBpbm87Ci0rCXN0cnVjdCBzdGF0ICpzYnAsIHNiOwotKwlpbnQgc2F2ZWRfZXJybm87Ci0rCi0rCS8qIElmIHVzZXIgbmVlZHMgc3RhdCBpbmZvLCBzdGF0IGJ1ZmZlciBhbHJlYWR5IGFsbG9jYXRlZC4gKi8KLSsJc2JwID0gSVNTRVQoRlRTX05PU1RBVCkgPyAmc2IgOiBwLT5mdHNfc3RhdHA7Ci0rCi0rI2lmZGVmIFNfSUZXSFQKLSAJLyoKLS0JICogRm9sbG93aW5nIGEgc3ltbGluayAtLSBTTE5PTkUgdGVzdCBhbGxvd3MgYXBwbGljYXRpb24gdG8gc2VlCi0tCSAqIFNMTk9ORSBhbmQgcmVjb3Zlci4gIElmIGluZGlyZWN0aW5nIHRocm91Z2ggYSBzeW1saW5rLCBoYXZlCi0tCSAqIGtlZXAgYSBwb2ludGVyIHRvIGN1cnJlbnQgbG9jYXRpb24uICBJZiB1bmFibGUgdG8gZ2V0IHRoYXQKLS0JICogcG9pbnRlciwgZm9sbG93IGZhaWxzLgotLQkgKi8KLS0JaWYgKGluc3RyID09IEZUU19GT0xMT1cgJiYKLS0JICAgIChwLT5mdHNfaW5mbyA9PSBGVFNfU0wgfHwgcC0+ZnRzX2luZm8gPT0gRlRTX1NMTk9ORSkpIHsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIE5VTEwsIHAsIDEpOwotLQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpCi0tCQkJaWYgKChwLT5mdHNfc3ltZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApIHsKLS0JCQkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQl9IGVsc2UKLS0JCQkJcC0+ZnRzX2ZsYWdzIHw9IEZUU19TWU1GT0xMT1c7Ci0tCQlyZXR1cm4gKHApOwotKwkgKiBXaGl0ZWQtb3V0IGZpbGVzIGRvbid0IHJlYWxseSBleGlzdC4gIEhvd2V2ZXIsIHRoZXJlJ3Mgc3RhdCgyKSBmaWxlCi0rCSAqIG1hc2sgZm9yIHRoZW0sIHNvIHdlIHNldCBpdCBzbyB0aGF0IHByb2dyYW1zIChpLmUuLCBmaW5kKSBkb24ndCBoYXZlCi0rCSAqIHRvIHRlc3QgRlRTX1cgc2VwYXJhdGVseSBmcm9tIG90aGVyIGZpbGUgdHlwZXMuCi0rCSAqLwotKwlpZiAoZHAgIT0gTlVMTCAmJiBkcC0+ZF90eXBlID09IERUX1dIVCkgewotKwkJbWVtc2V0KHNicCwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7Ci0rCQlzYnAtPnN0X21vZGUgPSBTX0lGV0hUOwotKwkJcmV0dXJuIChGVFNfVyk7Ci0gCX0KLS0KLS0JLyogRGlyZWN0b3J5IGluIHByZS1vcmRlci4gKi8KLS0JaWYgKHAtPmZ0c19pbmZvID09IEZUU19EKSB7Ci0tCQkvKiBJZiBza2lwcGVkIG9yIGNyb3NzZWQgbW91bnQgcG9pbnQsIGRvIHBvc3Qtb3JkZXIgdmlzaXQuICovCi0tCQlpZiAoaW5zdHIgPT0gRlRTX1NLSVAgfHwKLS0JCSAgICBJU1NFVChGVFNfWERFVikgJiYgcC0+ZnRzX2RldiAhPSBzcC0+ZnRzX2RldikgewotLQkJCWlmIChwLT5mdHNfZmxhZ3MgJiBGVFNfU1lNRk9MTE9XKQotLQkJCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotLQkJCWlmIChzcC0+ZnRzX2NoaWxkKSB7Ci0tCQkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0tCQkJfQotLQkJCXAtPmZ0c19pbmZvID0gRlRTX0RQOwotLQkJCXJldHVybiAocCk7Ci0tCQl9IAotLQotLQkJLyogUmVidWlsZCBpZiBvbmx5IHJlYWQgdGhlIG5hbWVzIGFuZCBub3cgdHJhdmVyc2luZy4gKi8KLS0JCWlmIChzcC0+ZnRzX2NoaWxkICYmIHNwLT5mdHNfb3B0aW9ucyAmIEZUU19OQU1FT05MWSkgewotLQkJCXNwLT5mdHNfb3B0aW9ucyAmPSB+RlRTX05BTUVPTkxZOwotLQkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLS0JCX0KLS0KLS0JCS8qCi0tCQkgKiBDZCB0byB0aGUgc3ViZGlyZWN0b3J5LgotLQkJICoKLS0JCSAqIElmIGhhdmUgYWxyZWFkeSByZWFkIGFuZCBub3cgZmFpbCB0byBjaGRpciwgd2hhY2sgdGhlIGxpc3QKLS0JCSAqIHRvIG1ha2UgdGhlIG5hbWVzIGNvbWUgb3V0IHJpZ2h0LCBhbmQgc2V0IHRoZSBwYXJlbnQgZXJybm8KLS0JCSAqIHNvIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGV2ZW50dWFsbHkgZ2V0IGFuIGVycm9yIGNvbmRpdGlvbi4KLS0JCSAqIFNldCB0aGUgRlRTX0RPTlRDSERJUiBmbGFnIHNvIHRoYXQgd2hlbiB3ZSBsb2dpY2FsbHkgY2hhbmdlCi0tCQkgKiBkaXJlY3RvcmllcyBiYWNrIHRvIHRoZSBwYXJlbnQgd2UgZG9uJ3QgZG8gYSBjaGRpci4KLS0JCSAqCi0tCQkgKiBJZiBoYXZlbid0IHJlYWQgZG8gc28uICBJZiB0aGUgcmVhZCBmYWlscywgZnRzX2J1aWxkIHNldHMKLS0JCSAqIEZUU19TVE9QIG9yIHRoZSBmdHNfaW5mbyBmaWVsZCBvZiB0aGUgbm9kZS4KLS0JCSAqLwotLQkJaWYgKHNwLT5mdHNfY2hpbGQpIHsKLS0JCQlpZiAoQ0hESVIoc3AsIHAtPmZ0c19hY2NwYXRoKSkgewotLQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJcC0+ZnRzX2ZsYWdzIHw9IEZUU19ET05UQ0hESVI7Ci0tCQkJCWZvciAocCA9IHNwLT5mdHNfY2hpbGQ7IHA7IHAgPSBwLT5mdHNfbGluaykKLS0JCQkJCXAtPmZ0c19hY2NwYXRoID0KLS0JCQkJCSAgICBwLT5mdHNfcGFyZW50LT5mdHNfYWNjcGF0aDsKLS0JCQl9Ci0tCQl9IGVsc2UgaWYgKChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBCUkVBRCkpID09IE5VTEwpIHsKLS0JCQlpZiAoSVNTRVQoRlRTX1NUT1ApKQotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCXJldHVybiAocCk7Ci0rI2VuZGlmCi0rCi0rCS8qCi0rCSAqIElmIGRvaW5nIGEgbG9naWNhbCB3YWxrLCBvciBhcHBsaWNhdGlvbiByZXF1ZXN0ZWQgRlRTX0ZPTExPVywgZG8KLSsJICogYSBzdGF0KDIpLiAgSWYgdGhhdCBmYWlscywgY2hlY2sgZm9yIGEgbm9uLWV4aXN0ZW50IHN5bWxpbmsuICBJZgotKwkgKiBmYWlsLCBzZXQgdGhlIGVycm5vIGZyb20gdGhlIHN0YXQgY2FsbC4KLSsJICovCi0rCWlmIChJU1NFVChGVFNfTE9HSUNBTCkgfHwgZm9sbG93KSB7Ci0rCQlpZiAoc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotKwkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0rCQkJaWYgKCFsc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotKwkJCQllcnJubyA9IDA7Ci0rCQkJCXJldHVybiAoRlRTX1NMTk9ORSk7Ci0rCQkJfQotKwkJCXAtPmZ0c19lcnJubyA9IHNhdmVkX2Vycm5vOwotKwkJCWdvdG8gZXJyOwotIAkJfQotLQkJcCA9IHNwLT5mdHNfY2hpbGQ7Ci0tCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLS0JCWdvdG8gbmFtZTsKLSsJfSBlbHNlIGlmIChsc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotKwkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0rZXJyOgkJbWVtc2V0KHNicCwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7Ci0rCQlyZXR1cm4gKEZUU19OUyk7Ci0gCX0KLSAKLS0JLyogTW92ZSB0byB0aGUgbmV4dCBub2RlIG9uIHRoaXMgbGV2ZWwuICovCi0tbmV4dDoJdG1wID0gcDsKLS0JaWYgKHAgPSBwLT5mdHNfbGluaykgewotLQkJZnJlZSh0bXApOwotLQotLQkJLyoKLS0JCSAqIElmIHJlYWNoZWQgdGhlIHRvcCwgcmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBkaXJlY3RvcnksIGFuZAotLQkJICogbG9hZCB0aGUgcGF0aHMgZm9yIHRoZSBuZXh0IHJvb3QuCi0tCQkgKi8KLS0JCWlmIChwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RMRVZFTCkgewotLQkJCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpKSB7Ci0tCQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJCXJldHVybiAoTlVMTCk7Ci0tCQkJfQotLQkJCWZ0c19sb2FkKHNwLCBwKTsKLS0JCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tCQl9Ci0tCi0rCWlmIChTX0lTRElSKHNicC0+c3RfbW9kZSkpIHsKLSAJCS8qCi0tCQkgKiBVc2VyIG1heSBoYXZlIGNhbGxlZCBmdHNfc2V0IG9uIHRoZSBub2RlLiAgSWYgc2tpcHBlZCwKLS0JCSAqIGlnbm9yZS4gIElmIGZvbGxvd2VkLCBnZXQgYSBmaWxlIGRlc2NyaXB0b3Igc28gd2UgY2FuCi0tCQkgKiBnZXQgYmFjayBpZiBuZWNlc3NhcnkuCi0rCQkgKiBTZXQgdGhlIGRldmljZS9pbm9kZS4gIFVzZWQgdG8gZmluZCBjeWNsZXMgYW5kIGNoZWNrIGZvcgotKwkJICogY3Jvc3NpbmcgbW91bnQgcG9pbnRzLiAgQWxzbyByZW1lbWJlciB0aGUgbGluayBjb3VudCwgdXNlZAotKwkJICogaW4gZnRzX2J1aWxkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygc3RhdCBjYWxscy4gIEl0IGlzCi0rCQkgKiB1bmRlcnN0b29kIHRoYXQgdGhlc2UgZmllbGRzIGFyZSBvbmx5IHJlZmVyZW5jZWQgaWYgZnRzX2luZm8KLSsJCSAqIGlzIHNldCB0byBGVFNfRC4KLSAJCSAqLwotLQkJaWYgKHAtPmZ0c19pbnN0ciA9PSBGVFNfU0tJUCkKLS0JCQlnb3RvIG5leHQ7Ci0tCQlpZiAocC0+ZnRzX2luc3RyID09IEZUU19GT0xMT1cpIHsKLS0JCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCAxKTsKLS0JCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgJiYgIUlTU0VUKEZUU19OT0NIRElSKSkKLS0JCQkJaWYgKChwLT5mdHNfc3ltZmQgPQotLQkJCQkgICAgb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKSB7Ci0tCQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQkJfSBlbHNlCi0tCQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLS0JCQlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLS0JCX0KLS0KLS1uYW1lOgkJdCA9IHNwLT5mdHNfcGF0aCArIE5BUFBFTkQocC0+ZnRzX3BhcmVudCk7Ci0tCQkqdCsrID0gJy8nOwotLQkJbWVtbW92ZSh0LCBwLT5mdHNfbmFtZSwgcC0+ZnRzX25hbWVsZW4gKyAxKTsKLS0JCXJldHVybiAoc3AtPmZ0c19jdXIgPSBwKTsKLS0JfQotKwkJZGV2ID0gcC0+ZnRzX2RldiA9IHNicC0+c3RfZGV2OwotKwkJaW5vID0gcC0+ZnRzX2lubyA9IHNicC0+c3RfaW5vOwotKwkJcC0+ZnRzX25saW5rID0gc2JwLT5zdF9ubGluazsKLSAKLS0JLyogTW92ZSB1cCB0byB0aGUgcGFyZW50IG5vZGUuICovCi0tCXAgPSB0bXAtPmZ0c19wYXJlbnQ7Ci0tCWZyZWUodG1wKTsKLSsJCWlmIChJU0RPVChwLT5mdHNfbmFtZSkpCi0rCQkJcmV0dXJuIChGVFNfRE9UKTsKLSAKLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVFBBUkVOVExFVkVMKSB7Ci0gCQkvKgotLQkJICogRG9uZTsgZnJlZSBldmVyeXRoaW5nIHVwIGFuZCBzZXQgZXJybm8gdG8gMCBzbyB0aGUgdXNlcgotLQkJICogY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJyb3IgYW5kIEVPRi4KLSsJCSAqIEN5Y2xlIGRldGVjdGlvbiBpcyBkb25lIGJ5IGJydXRlIGZvcmNlIHdoZW4gdGhlIGRpcmVjdG9yeQotKwkJICogaXMgZmlyc3QgZW5jb3VudGVyZWQuICBJZiB0aGUgdHJlZSBnZXRzIGRlZXAgZW5vdWdoIG9yIHRoZQotKwkJICogbnVtYmVyIG9mIHN5bWJvbGljIGxpbmtzIHRvIGRpcmVjdG9yaWVzIGlzIGhpZ2ggZW5vdWdoLAotKwkJICogc29tZXRoaW5nIGZhc3RlciBtaWdodCBiZSB3b3J0aHdoaWxlLgotIAkJICovCi0tCQlmcmVlKHApOwotLQkJZXJybm8gPSAwOwotLQkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IE5VTEwpOwotLQl9Ci0tCi0tCS8qIE51bCB0ZXJtaW5hdGUgdGhlIHBhdGhuYW1lLiAqLwotLQlzcC0+ZnRzX3BhdGhbcC0+ZnRzX3BhdGhsZW5dID0gJ1wwJzsKLS0KLS0JLyoKLS0JICogUmV0dXJuIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAgSWYgYXQgYSByb290IG5vZGUgb3IgY2FtZSB0aHJvdWdoCi0tCSAqIGEgc3ltbGluaywgZ28gYmFjayB0aHJvdWdoIHRoZSBmaWxlIGRlc2NyaXB0b3IuICBPdGhlcndpc2UsIGNkIHVwCi0tCSAqIG9uZSBkaXJlY3RvcnkuCi0tCSAqLwotLQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLS0JCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpKSB7Ci0tCQkJU0VUKEZUU19TVE9QKTsKLS0JCQlyZXR1cm4gKE5VTEwpOwotLQkJfQotLQl9IGVsc2UgaWYgKHAtPmZ0c19mbGFncyAmIEZUU19TWU1GT0xMT1cpIHsKLS0JCWlmIChGQ0hESVIoc3AsIHAtPmZ0c19zeW1mZCkpIHsKLS0JCQlzYXZlZF9lcnJubyA9IGVycm5vOwotLQkJCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0tCQkJZXJybm8gPSBzYXZlZF9lcnJubzsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotLQl9IGVsc2UgaWYgKCEocC0+ZnRzX2ZsYWdzICYgRlRTX0RPTlRDSERJUikpIHsKLS0JCWlmIChDSERJUihzcCwgIi4uIikpIHsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCX0KLS0JcC0+ZnRzX2luZm8gPSBwLT5mdHNfZXJybm8gPyBGVFNfRVJSIDogRlRTX0RQOwotLQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tfQotLQotLS8qCi0tICogRnRzX3NldCB0YWtlcyB0aGUgc3RyZWFtIGFzIGFuIGFyZ3VtZW50IGFsdGhvdWdoIGl0J3Mgbm90IHVzZWQgaW4gdGhpcwotLSAqIGltcGxlbWVudGF0aW9uOyBpdCB3b3VsZCBiZSBuZWNlc3NhcnkgaWYgYW55b25lIHdhbnRlZCB0byBhZGQgZ2xvYmFsCi0tICogc2VtYW50aWNzIHRvIGZ0cyB1c2luZyBmdHNfc2V0LiAgQW4gZXJyb3IgcmV0dXJuIGlzIGFsbG93ZWQgZm9yIHNpbWlsYXIKLS0gKiByZWFzb25zLgotLSAqLwotLS8qIEFSR1NVU0VEICovCi0taW50Ci0tZnRzX3NldChzcCwgcCwgaW5zdHIpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqcDsKLS0JaW50IGluc3RyOwotLXsKLS0JaWYgKGluc3RyICYmIGluc3RyICE9IEZUU19BR0FJTiAmJiBpbnN0ciAhPSBGVFNfRk9MTE9XICYmCi0tCSAgICBpbnN0ciAhPSBGVFNfTk9JTlNUUiAmJiBpbnN0ciAhPSBGVFNfU0tJUCkgewotLQkJZXJybm8gPSBFSU5WQUw7Ci0tCQlyZXR1cm4gKDEpOwotKwkJZm9yICh0ID0gcC0+ZnRzX3BhcmVudDsKLSsJCSAgICB0LT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDsgdCA9IHQtPmZ0c19wYXJlbnQpCi0rCQkJaWYgKGlubyA9PSB0LT5mdHNfaW5vICYmIGRldiA9PSB0LT5mdHNfZGV2KSB7Ci0rCQkJCXAtPmZ0c19jeWNsZSA9IHQ7Ci0rCQkJCXJldHVybiAoRlRTX0RDKTsKLSsJCQl9Ci0rCQlyZXR1cm4gKEZUU19EKTsKLSAJfQotLQlwLT5mdHNfaW5zdHIgPSBpbnN0cjsKLS0JcmV0dXJuICgwKTsKLSsJaWYgKFNfSVNMTksoc2JwLT5zdF9tb2RlKSkKLSsJCXJldHVybiAoRlRTX1NMKTsKLSsJaWYgKFNfSVNSRUcoc2JwLT5zdF9tb2RlKSkKLSsJCXJldHVybiAoRlRTX0YpOwotKwlyZXR1cm4gKEZUU19ERUZBVUxUKTsKLSB9Ci0gCi0tRlRTRU5UICoKLS1mdHNfY2hpbGRyZW4oc3AsIGluc3RyKQotLQlyZWdpc3RlciBGVFMgKnNwOwotLQlpbnQgaW5zdHI7Ci0rc3RhdGljIEZUU0VOVCAqCi0rZnRzX3NvcnQoRlRTICpzcCwgRlRTRU5UICpoZWFkLCByZWdpc3RlciBpbnQgbml0ZW1zKQotIHsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQlpbnQgZmQ7Ci0tCi0tCWlmIChpbnN0ciAmJiBpbnN0ciAhPSBGVFNfTkFNRU9OTFkpIHsKLS0JCWVycm5vID0gRUlOVkFMOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotLQotLQkvKiBTZXQgY3VycmVudCBub2RlIHBvaW50ZXIuICovCi0tCXAgPSBzcC0+ZnRzX2N1cjsKLS0KLS0JLyoKLS0JICogRXJybm8gc2V0IHRvIDAgc28gdXNlciBjYW4gZGlzdGluZ3Vpc2ggZW1wdHkgZGlyZWN0b3J5IGZyb20KLS0JICogYW4gZXJyb3IuCi0tCSAqLwotLQllcnJubyA9IDA7Ci0tCi0tCS8qIEZhdGFsIGVycm9ycyBzdG9wIGhlcmUuICovCi0tCWlmIChJU1NFVChGVFNfU1RPUCkpCi0tCQlyZXR1cm4gKE5VTEwpOwotLQotLQkvKiBSZXR1cm4gbG9naWNhbCBoaWVyYXJjaHkgb2YgdXNlcidzIGFyZ3VtZW50cy4gKi8KLS0JaWYgKHAtPmZ0c19pbmZvID09IEZUU19JTklUKQotLQkJcmV0dXJuIChwLT5mdHNfbGluayk7Ci0tCi0tCS8qCi0tCSAqIElmIG5vdCBhIGRpcmVjdG9yeSBiZWluZyB2aXNpdGVkIGluIHByZS1vcmRlciwgc3RvcCBoZXJlLiAgQ291bGQKLS0JICogYWxsb3cgRlRTX0ROUiwgYXNzdW1pbmcgdGhlIHVzZXIgaGFzIGZpeGVkIHRoZSBwcm9ibGVtLCBidXQgdGhlCi0tCSAqIHNhbWUgZWZmZWN0IGlzIGF2YWlsYWJsZSB3aXRoIEZUU19BR0FJTi4KLS0JICovCi0tCWlmIChwLT5mdHNfaW5mbyAhPSBGVFNfRCAvKiAmJiBwLT5mdHNfaW5mbyAhPSBGVFNfRE5SICovKQotLQkJcmV0dXJuIChOVUxMKTsKLS0KLS0JLyogRnJlZSB1cCBhbnkgcHJldmlvdXMgY2hpbGQgbGlzdC4gKi8KLS0JaWYgKHNwLT5mdHNfY2hpbGQpCi0tCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0tCi0tCWlmIChpbnN0ciA9PSBGVFNfTkFNRU9OTFkpIHsKLS0JCXNwLT5mdHNfb3B0aW9ucyB8PSBGVFNfTkFNRU9OTFk7Ci0tCQlpbnN0ciA9IEJOQU1FUzsKLS0JfSBlbHNlIAotLQkJaW5zdHIgPSBCQ0hJTEQ7Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqKmFwLCAqcDsKLSAKLSAJLyoKLS0JICogSWYgdXNpbmcgY2hkaXIgb24gYSByZWxhdGl2ZSBwYXRoIGFuZCBjYWxsZWQgQkVGT1JFIGZ0c19yZWFkIGRvZXMKLS0JICogaXRzIGNoZGlyIHRvIHRoZSByb290IG9mIGEgdHJhdmVyc2FsLCB3ZSBjYW4gbG9zZSAtLSB3ZSBuZWVkIHRvCi0tCSAqIGNoZGlyIGludG8gdGhlIHN1YmRpcmVjdG9yeSwgYW5kIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIGN1cnJlbnQKLS0JICogZGlyZWN0b3J5IGlzLCBzbyB3ZSBjYW4ndCBnZXQgYmFjayBzbyB0aGF0IHRoZSB1cGNvbWluZyBjaGRpciBieQotLQkgKiBmdHNfcmVhZCB3aWxsIHdvcmsuCi0rCSAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiBwb2ludGVycyB0byB0aGUgc3RydWN0dXJlcyBhbmQgY2FsbCBxc29ydCgzKS4KLSsJICogUmVhc3NlbWJsZSB0aGUgYXJyYXkgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHFzb3J0LiAgSWYgdW5hYmxlIHRvCi0rCSAqIHNvcnQgZm9yIG1lbW9yeSByZWFzb25zLCByZXR1cm4gdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGluIHRoZWlyCi0rCSAqIGN1cnJlbnQgb3JkZXIuICBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBjdXJyZW50IG5lZWRzIHBsdXMKLSsJICogNDAgc28gZG9uJ3QgcmVhbGxvYyBvbmUgZW50cnkgYXQgYSB0aW1lLgotIAkgKi8KLS0JaWYgKHAtPmZ0c19sZXZlbCAhPSBGVFNfUk9PVExFVkVMIHx8IHAtPmZ0c19hY2NwYXRoWzBdID09ICcvJyB8fAotLQkgICAgSVNTRVQoRlRTX05PQ0hESVIpKQotLQkJcmV0dXJuIChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBpbnN0cikpOwotLQotLQlpZiAoKGZkID0gb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKQotLQkJcmV0dXJuIChOVUxMKTsKLS0Jc3AtPmZ0c19jaGlsZCA9IGZ0c19idWlsZChzcCwgaW5zdHIpOwotLQlpZiAoZmNoZGlyKGZkKSkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCSh2b2lkKWNsb3NlKGZkKTsKLS0JcmV0dXJuIChzcC0+ZnRzX2NoaWxkKTsKLSsJaWYgKG5pdGVtcyA+IHNwLT5mdHNfbml0ZW1zKSB7Ci0rCQlzcC0+ZnRzX25pdGVtcyA9IG5pdGVtcyArIDQwOwotKwkJaWYgKChzcC0+ZnRzX2FycmF5ID0gcmVhbGxvYyhzcC0+ZnRzX2FycmF5LAotKwkJICAgIChzaXplX3QpKHNwLT5mdHNfbml0ZW1zICogc2l6ZW9mKEZUU0VOVCAqKSkpKSA9PSBOVUxMKSB7Ci0rCQkJc3AtPmZ0c19uaXRlbXMgPSAwOwotKwkJCXJldHVybiAoaGVhZCk7Ci0rCQl9Ci0rCX0KLSsJZm9yIChhcCA9IHNwLT5mdHNfYXJyYXksIHAgPSBoZWFkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0rCQkqYXArKyA9IHA7Ci0rCXFzb3J0KCh2b2lkICopc3AtPmZ0c19hcnJheSwgbml0ZW1zLCBzaXplb2YoRlRTRU5UICopLCBzcC0+ZnRzX2NvbXBhcik7Ci0rCWZvciAoaGVhZCA9ICooYXAgPSBzcC0+ZnRzX2FycmF5KTsgLS1uaXRlbXM7ICsrYXApCi0rCQlhcFswXS0+ZnRzX2xpbmsgPSBhcFsxXTsKLSsJYXBbMF0tPmZ0c19saW5rID0gTlVMTDsKLSsJcmV0dXJuIChoZWFkKTsKLSB9Ci0gCi0gLyoKLUBAIC01NTEsOSArMzIwLDcgQEAgZnRzX2NoaWxkcmVuKHNwLCBpbnN0cikKLSAgKiBiZWVuIGZvdW5kLCBjdXR0aW5nIHRoZSBzdGF0IGNhbGxzIGJ5IGFib3V0IDIvMy4KLSAgKi8KLSBzdGF0aWMgRlRTRU5UICoKLS1mdHNfYnVpbGQoc3AsIHR5cGUpCi0tCXJlZ2lzdGVyIEZUUyAqc3A7Ci0tCWludCB0eXBlOwotK2Z0c19idWlsZChyZWdpc3RlciBGVFMgKnNwLCBpbnQgdHlwZSkKLSB7Ci0gCXJlZ2lzdGVyIHN0cnVjdCBkaXJlbnQgKmRwOwotIAlyZWdpc3RlciBGVFNFTlQgKnAsICpoZWFkOwotQEAgLTcxNiwyODMgKzQ4Myw0NzkgQEAgbWVtMToJCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKLSAJCQkJLS1ubGlua3M7Ci0gCQl9Ci0gCi0tCQkvKiBXZSB3YWxrIGluIGRpcmVjdG9yeSBvcmRlciBzbyAibHMgLWYiIGRvZXNuJ3QgZ2V0IHVwc2V0LiAqLwotLQkJcC0+ZnRzX2xpbmsgPSBOVUxMOwotLQkJaWYgKGhlYWQgPT0gTlVMTCkKLS0JCQloZWFkID0gdGFpbCA9IHA7Ci0tCQllbHNlIHsKLS0JCQl0YWlsLT5mdHNfbGluayA9IHA7Ci0tCQkJdGFpbCA9IHA7Ci0rCQkvKiBXZSB3YWxrIGluIGRpcmVjdG9yeSBvcmRlciBzbyAibHMgLWYiIGRvZXNuJ3QgZ2V0IHVwc2V0LiAqLwotKwkJcC0+ZnRzX2xpbmsgPSBOVUxMOwotKwkJaWYgKGhlYWQgPT0gTlVMTCkKLSsJCQloZWFkID0gdGFpbCA9IHA7Ci0rCQllbHNlIHsKLSsJCQl0YWlsLT5mdHNfbGluayA9IHA7Ci0rCQkJdGFpbCA9IHA7Ci0rCQl9Ci0rCQkrK25pdGVtczsKLSsJfQotKwkodm9pZCljbG9zZWRpcihkaXJwKTsKLSsKLSsJLyoKLSsJICogSWYgaGFkIHRvIHJlYWxsb2MgdGhlIHBhdGgsIGFkanVzdCB0aGUgYWRkcmVzc2VzIGZvciB0aGUgcmVzdAotKwkgKiBvZiB0aGUgdHJlZS4KLSsJICovCi0rCWlmIChhZGphZGRyKQotKwkJZnRzX3BhZGp1c3Qoc3AsIGFkamFkZHIpOwotKwotKwkvKgotKwkgKiBJZiBub3QgY2hhbmdpbmcgZGlyZWN0b3JpZXMsIHJlc2V0IHRoZSBwYXRoIGJhY2sgdG8gb3JpZ2luYWwKLSsJICogc3RhdGUuCi0rCSAqLwotKwlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0rCQlpZiAoY3AgLSAxID4gc3AtPmZ0c19wYXRoKQotKwkJCS0tY3A7Ci0rCQkqY3AgPSAnXDAnOwotKwl9Ci0rCi0rCS8qCi0rCSAqIElmIGRlc2NlbmRlZCBhZnRlciBjYWxsZWQgZnJvbSBmdHNfY2hpbGRyZW4gb3IgYWZ0ZXIgY2FsbGVkIGZyb20KLSsJICogZnRzX3JlYWQgYW5kIG5vdGhpbmcgZm91bmQsIGdldCBiYWNrLiAgQXQgdGhlIHJvb3QgbGV2ZWwgd2UgdXNlCi0rCSAqIHRoZSBzYXZlZCBmZDsgaWYgb25lIG9mIGZ0c19vcGVuKCkncyBhcmd1bWVudHMgaXMgYSByZWxhdGl2ZSBwYXRoCi0rCSAqIHRvIGFuIGVtcHR5IGRpcmVjdG9yeSwgd2Ugd2luZCB1cCBoZXJlIHdpdGggbm8gb3RoZXIgd2F5IGJhY2suICBJZgotKwkgKiBjYW4ndCBnZXQgYmFjaywgd2UncmUgZG9uZS4KLSsJICovCi0rCWlmIChkZXNjZW5kICYmICh0eXBlID09IEJDSElMRCB8fCAhbml0ZW1zKSAmJgotKwkgICAgKGN1ci0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwgPwotKwkgICAgRkNIRElSKHNwLCBzcC0+ZnRzX3JmZCkgOiBDSERJUihzcCwgIi4uIikpKSB7Ci0rCQljdXItPmZ0c19pbmZvID0gRlRTX0VSUjsKLSsJCVNFVChGVFNfU1RPUCk7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0rCi0rCS8qIElmIGRpZG4ndCBmaW5kIGFueXRoaW5nLCByZXR1cm4gTlVMTC4gKi8KLSsJaWYgKCFuaXRlbXMpIHsKLSsJCWlmICh0eXBlID09IEJSRUFEKQotKwkJCWN1ci0+ZnRzX2luZm8gPSBGVFNfRFA7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0rCi0rCS8qIFNvcnQgdGhlIGVudHJpZXMuICovCi0rCWlmIChzcC0+ZnRzX2NvbXBhciAmJiBuaXRlbXMgPiAxKQotKwkJaGVhZCA9IGZ0c19zb3J0KHNwLCBoZWFkLCBuaXRlbXMpOwotKwlyZXR1cm4gKGhlYWQpOwotK30KLSsKLSsKLStGVFMgKgotK2Z0c19vcGVuKGNoYXIgKiBjb25zdCAqYXJndiwgcmVnaXN0ZXIgaW50IG9wdGlvbnMsIGludCAoKmNvbXBhcikoKSkKLSt7Ci0rCXJlZ2lzdGVyIEZUUyAqc3A7Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqcCwgKnJvb3Q7Ci0rCXJlZ2lzdGVyIGludCBuaXRlbXM7Ci0rCUZUU0VOVCAqcGFyZW50LCAqdG1wOwotKwlpbnQgbGVuOwotKwotKwkvKiBPcHRpb25zIGNoZWNrLiAqLwotKwlpZiAob3B0aW9ucyAmIH5GVFNfT1BUSU9OTUFTSykgewotKwkJZXJybm8gPSBFSU5WQUw7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0rCi0rCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgdGhlIHN0cmVhbSAqLwotKwlpZiAoKHNwID0gbWFsbG9jKCh1X2ludClzaXplb2YoRlRTKSkpID09IE5VTEwpCi0rCQlyZXR1cm4gKE5VTEwpOwotKwltZW1zZXQoc3AsIDAsIHNpemVvZihGVFMpKTsKLSsJc3AtPmZ0c19jb21wYXIgPSBjb21wYXI7Ci0rCXNwLT5mdHNfb3B0aW9ucyA9IG9wdGlvbnM7Ci0rCi0rCS8qIExvZ2ljYWwgd2Fsa3MgdHVybiBvbiBOT0NIRElSOyBzeW1ib2xpYyBsaW5rcyBhcmUgdG9vIGhhcmQuICovCi0rCWlmIChJU1NFVChGVFNfTE9HSUNBTCkpCi0rCQlTRVQoRlRTX05PQ0hESVIpOwotKwotKwkvKgotKwkgKiBTdGFydCBvdXQgd2l0aCAxSyBvZiBwYXRoIHNwYWNlLCBhbmQgZW5vdWdoLCBpbiBhbnkgY2FzZSwKLSsJICogdG8gaG9sZCB0aGUgdXNlcidzIHBhdGhzLgotKwkgKi8KLSsJaWYgKGZ0c19wYWxsb2Moc3AsIE1BWChmdHNfbWF4YXJnbGVuKGFyZ3YpLCBNQVhQQVRITEVOKSkpCi0rCQlnb3RvIG1lbTE7Ci0rCi0rCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgcm9vdCdzIHBhcmVudC4gKi8KLSsJaWYgKChwYXJlbnQgPSBmdHNfYWxsb2Moc3AsICIiLCAwKSkgPT0gTlVMTCkKLSsJCWdvdG8gbWVtMjsKLSsJcGFyZW50LT5mdHNfbGV2ZWwgPSBGVFNfUk9PVFBBUkVOVExFVkVMOwotKwotKwkvKiBBbGxvY2F0ZS9pbml0aWFsaXplIHJvb3QocykuICovCi0rCWZvciAocm9vdCA9IE5VTEwsIG5pdGVtcyA9IDA7ICphcmd2OyArK2FyZ3YsICsrbml0ZW1zKSB7Ci0rCQkvKiBEb24ndCBhbGxvdyB6ZXJvLWxlbmd0aCBwYXRocy4gKi8KLSsJCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPT0gMCkgewotKwkJCWVycm5vID0gRUlOVkFMOwotKwkJCWdvdG8gbWVtMzsKLSsJCX0KLSsKLSsJCXAgPSBmdHNfYWxsb2Moc3AsICphcmd2LCBsZW4pOwotKwkJcC0+ZnRzX2xldmVsID0gRlRTX1JPT1RMRVZFTDsKLSsJCXAtPmZ0c19wYXJlbnQgPSBwYXJlbnQ7Ci0rCQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19uYW1lOwotKwkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgTlVMTCwgcCwgSVNTRVQoRlRTX0NPTUZPTExPVykpOwotKwotKwkJLyogQ29tbWFuZC1saW5lICIuIiBhbmQgIi4uIiBhcmUgcmVhbCBkaXJlY3Rvcmllcy4gKi8KLSsJCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRE9UKQotKwkJCXAtPmZ0c19pbmZvID0gRlRTX0Q7Ci0rCi0rCQkvKgotKwkJICogSWYgY29tcGFyaXNvbiByb3V0aW5lIHN1cHBsaWVkLCB0cmF2ZXJzZSBpbiBzb3J0ZWQKLSsJCSAqIG9yZGVyOyBvdGhlcndpc2UgdHJhdmVyc2UgaW4gdGhlIG9yZGVyIHNwZWNpZmllZC4KLSsJCSAqLwotKwkJaWYgKGNvbXBhcikgewotKwkJCXAtPmZ0c19saW5rID0gcm9vdDsKLSsJCQlyb290ID0gcDsKLSsJCX0gZWxzZSB7Ci0rCQkJcC0+ZnRzX2xpbmsgPSBOVUxMOwotKwkJCWlmIChyb290ID09IE5VTEwpCi0rCQkJCXRtcCA9IHJvb3QgPSBwOwotKwkJCWVsc2UgewotKwkJCQl0bXAtPmZ0c19saW5rID0gcDsKLSsJCQkJdG1wID0gcDsKLSsJCQl9Ci0gCQl9Ci0tCQkrK25pdGVtczsKLSAJfQotLQkodm9pZCljbG9zZWRpcihkaXJwKTsKLS0KLS0JLyoKLS0JICogSWYgaGFkIHRvIHJlYWxsb2MgdGhlIHBhdGgsIGFkanVzdCB0aGUgYWRkcmVzc2VzIGZvciB0aGUgcmVzdAotLQkgKiBvZiB0aGUgdHJlZS4KLS0JICovCi0tCWlmIChhZGphZGRyKQotLQkJZnRzX3BhZGp1c3Qoc3AsIGFkamFkZHIpOwotKwlpZiAoY29tcGFyICYmIG5pdGVtcyA+IDEpCi0rCQlyb290ID0gZnRzX3NvcnQoc3AsIHJvb3QsIG5pdGVtcyk7Ci0gCi0gCS8qCi0tCSAqIElmIG5vdCBjaGFuZ2luZyBkaXJlY3RvcmllcywgcmVzZXQgdGhlIHBhdGggYmFjayB0byBvcmlnaW5hbAotLQkgKiBzdGF0ZS4KLSsJICogQWxsb2NhdGUgYSBkdW1teSBwb2ludGVyIGFuZCBtYWtlIGZ0c19yZWFkIHRoaW5rIHRoYXQgd2UndmUganVzdAotKwkgKiBmaW5pc2hlZCB0aGUgbm9kZSBiZWZvcmUgdGhlIHJvb3Qocyk7IHNldCBwLT5mdHNfaW5mbyB0byBGVFNfSU5JVAotKwkgKiBzbyB0aGF0IGV2ZXJ5dGhpbmcgYWJvdXQgdGhlICJjdXJyZW50IiBub2RlIGlzIGlnbm9yZWQuCi0gCSAqLwotLQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0tCQlpZiAoY3AgLSAxID4gc3AtPmZ0c19wYXRoKQotLQkJCS0tY3A7Ci0tCQkqY3AgPSAnXDAnOwotLQl9Ci0rCWlmICgoc3AtPmZ0c19jdXIgPSBmdHNfYWxsb2Moc3AsICIiLCAwKSkgPT0gTlVMTCkKLSsJCWdvdG8gbWVtMzsKLSsJc3AtPmZ0c19jdXItPmZ0c19saW5rID0gcm9vdDsKLSsJc3AtPmZ0c19jdXItPmZ0c19pbmZvID0gRlRTX0lOSVQ7Ci0gCi0gCS8qCi0tCSAqIElmIGRlc2NlbmRlZCBhZnRlciBjYWxsZWQgZnJvbSBmdHNfY2hpbGRyZW4gb3IgYWZ0ZXIgY2FsbGVkIGZyb20KLS0JICogZnRzX3JlYWQgYW5kIG5vdGhpbmcgZm91bmQsIGdldCBiYWNrLiAgQXQgdGhlIHJvb3QgbGV2ZWwgd2UgdXNlCi0tCSAqIHRoZSBzYXZlZCBmZDsgaWYgb25lIG9mIGZ0c19vcGVuKCkncyBhcmd1bWVudHMgaXMgYSByZWxhdGl2ZSBwYXRoCi0tCSAqIHRvIGFuIGVtcHR5IGRpcmVjdG9yeSwgd2Ugd2luZCB1cCBoZXJlIHdpdGggbm8gb3RoZXIgd2F5IGJhY2suICBJZgotLQkgKiBjYW4ndCBnZXQgYmFjaywgd2UncmUgZG9uZS4KLSsJICogSWYgdXNpbmcgY2hkaXIoMiksIGdyYWIgYSBmaWxlIGRlc2NyaXB0b3IgcG9pbnRpbmcgdG8gZG90IHRvIGluc3VyZQotKwkgKiB0aGF0IHdlIGNhbiBnZXQgYmFjayBoZXJlOyB0aGlzIGNvdWxkIGJlIGF2b2lkZWQgZm9yIHNvbWUgcGF0aHMsCi0rCSAqIGJ1dCBhbG1vc3QgY2VydGFpbmx5IG5vdCB3b3J0aCB0aGUgZWZmb3J0LiAgU2xhc2hlcywgc3ltYm9saWMgbGlua3MsCi0rCSAqIGFuZCAiLi4iIGFyZSBhbGwgZmFpcmx5IG5hc3R5IHByb2JsZW1zLiAgTm90ZSwgaWYgd2UgY2FuJ3QgZ2V0IHRoZQotKwkgKiBkZXNjcmlwdG9yIHdlIHJ1biBhbnl3YXksIGp1c3QgbW9yZSBzbG93bHkuCi0gCSAqLwotLQlpZiAoZGVzY2VuZCAmJiAodHlwZSA9PSBCQ0hJTEQgfHwgIW5pdGVtcykgJiYKLS0JICAgIChjdXItPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMID8KLS0JICAgIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpIDogQ0hESVIoc3AsICIuLiIpKSkgewotLQkJY3VyLT5mdHNfaW5mbyA9IEZUU19FUlI7Ci0tCQlTRVQoRlRTX1NUT1ApOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotKwlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiAoc3AtPmZ0c19yZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0rCQlTRVQoRlRTX05PQ0hESVIpOwotIAotLQkvKiBJZiBkaWRuJ3QgZmluZCBhbnl0aGluZywgcmV0dXJuIE5VTEwuICovCi0tCWlmICghbml0ZW1zKSB7Ci0tCQlpZiAodHlwZSA9PSBCUkVBRCkKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0RQOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotKwlyZXR1cm4gKHNwKTsKLSAKLS0JLyogU29ydCB0aGUgZW50cmllcy4gKi8KLS0JaWYgKHNwLT5mdHNfY29tcGFyICYmIG5pdGVtcyA+IDEpCi0tCQloZWFkID0gZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcyk7Ci0tCXJldHVybiAoaGVhZCk7Ci0rbWVtMzoJZnRzX2xmcmVlKHJvb3QpOwotKwlmcmVlKHBhcmVudCk7Ci0rbWVtMjoJZnJlZShzcC0+ZnRzX3BhdGgpOwotK21lbTE6CWZyZWUoc3ApOwotKwlyZXR1cm4gKE5VTEwpOwotIH0KLSAKLS1zdGF0aWMgdV9zaG9ydAotLWZ0c19zdGF0KHNwLCBkcCwgcCwgZm9sbG93KQotLQlGVFMgKnNwOwotLQlyZWdpc3RlciBGVFNFTlQgKnA7Ci0tCXN0cnVjdCBkaXJlbnQgKmRwOwotLQlpbnQgZm9sbG93OwotK0ZUU0VOVCAqCi0rZnRzX3JlYWQocmVnaXN0ZXIgRlRTICpzcCkKLSB7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqdDsKLS0JcmVnaXN0ZXIgZGV2X3QgZGV2OwotLQlyZWdpc3RlciBpbm9fdCBpbm87Ci0tCXN0cnVjdCBzdGF0ICpzYnAsIHNiOwotKwlyZWdpc3RlciBGVFNFTlQgKnAsICp0bXA7Ci0rCXJlZ2lzdGVyIGludCBpbnN0cjsKLSsJcmVnaXN0ZXIgY2hhciAqdDsKLSAJaW50IHNhdmVkX2Vycm5vOwotIAotLQkvKiBJZiB1c2VyIG5lZWRzIHN0YXQgaW5mbywgc3RhdCBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQuICovCi0tCXNicCA9IElTU0VUKEZUU19OT1NUQVQpID8gJnNiIDogcC0+ZnRzX3N0YXRwOwotKwkvKiBJZiBmaW5pc2hlZCBvciB1bnJlY292ZXJhYmxlIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KLSsJaWYgKHNwLT5mdHNfY3VyID09IE5VTEwgfHwgSVNTRVQoRlRTX1NUT1ApKQotKwkJcmV0dXJuIChOVUxMKTsKLSAKLS0jaWZkZWYgU19JRldIVAotLQkvKgotLQkgKiBXaGl0ZWQtb3V0IGZpbGVzIGRvbid0IHJlYWxseSBleGlzdC4gIEhvd2V2ZXIsIHRoZXJlJ3Mgc3RhdCgyKSBmaWxlCi0tCSAqIG1hc2sgZm9yIHRoZW0sIHNvIHdlIHNldCBpdCBzbyB0aGF0IHByb2dyYW1zIChpLmUuLCBmaW5kKSBkb24ndCBoYXZlCi0tCSAqIHRvIHRlc3QgRlRTX1cgc2VwYXJhdGVseSBmcm9tIG90aGVyIGZpbGUgdHlwZXMuCi0tCSAqLwotLQlpZiAoZHAgIT0gTlVMTCAmJiBkcC0+ZF90eXBlID09IERUX1dIVCkgewotLQkJbWVtc2V0KHNicCwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7Ci0tCQlzYnAtPnN0X21vZGUgPSBTX0lGV0hUOwotLQkJcmV0dXJuIChGVFNfVyk7Ci0rCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLSsJcCA9IHNwLT5mdHNfY3VyOwotKwotKwkvKiBTYXZlIGFuZCB6ZXJvIG91dCB1c2VyIGluc3RydWN0aW9ucy4gKi8KLSsJaW5zdHIgPSBwLT5mdHNfaW5zdHI7Ci0rCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotKwotKwkvKiBBbnkgdHlwZSBvZiBmaWxlIG1heSBiZSByZS12aXNpdGVkOyByZS1zdGF0IGFuZCByZS10dXJuLiAqLwotKwlpZiAoaW5zdHIgPT0gRlRTX0FHQUlOKSB7Ci0rCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCAwKTsKLSsJCXJldHVybiAocCk7Ci0gCX0KLS0jZW5kaWYKLS0JCi0rCi0gCS8qCi0tCSAqIElmIGRvaW5nIGEgbG9naWNhbCB3YWxrLCBvciBhcHBsaWNhdGlvbiByZXF1ZXN0ZWQgRlRTX0ZPTExPVywgZG8KLS0JICogYSBzdGF0KDIpLiAgSWYgdGhhdCBmYWlscywgY2hlY2sgZm9yIGEgbm9uLWV4aXN0ZW50IHN5bWxpbmsuICBJZgotLQkgKiBmYWlsLCBzZXQgdGhlIGVycm5vIGZyb20gdGhlIHN0YXQgY2FsbC4KLSsJICogRm9sbG93aW5nIGEgc3ltbGluayAtLSBTTE5PTkUgdGVzdCBhbGxvd3MgYXBwbGljYXRpb24gdG8gc2VlCi0rCSAqIFNMTk9ORSBhbmQgcmVjb3Zlci4gIElmIGluZGlyZWN0aW5nIHRocm91Z2ggYSBzeW1saW5rLCBoYXZlCi0rCSAqIGtlZXAgYSBwb2ludGVyIHRvIGN1cnJlbnQgbG9jYXRpb24uICBJZiB1bmFibGUgdG8gZ2V0IHRoYXQKLSsJICogcG9pbnRlciwgZm9sbG93IGZhaWxzLgotIAkgKi8KLS0JaWYgKElTU0VUKEZUU19MT0dJQ0FMKSB8fCBmb2xsb3cpIHsKLS0JCWlmIChzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKLS0JCQlpZiAoIWxzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQkJCWVycm5vID0gMDsKLS0JCQkJcmV0dXJuIChGVFNfU0xOT05FKTsKLS0JCQl9IAotLQkJCXAtPmZ0c19lcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCWdvdG8gZXJyOwotKwlpZiAoaW5zdHIgPT0gRlRTX0ZPTExPVyAmJgotKwkgICAgKHAtPmZ0c19pbmZvID09IEZUU19TTCB8fCBwLT5mdHNfaW5mbyA9PSBGVFNfU0xOT05FKSkgewotKwkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgTlVMTCwgcCwgMSk7Ci0rCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgJiYgIUlTU0VUKEZUU19OT0NIRElSKSkKLSsJCQlpZiAoKHAtPmZ0c19zeW1mZCA9IG9wZW4oIi4iLCBPX1JET05MWSwgMCkpIDwgMCkgewotKwkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLSsJCQkJcC0+ZnRzX2luZm8gPSBGVFNfRVJSOwotKwkJCX0gZWxzZQotKwkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLSsJCXJldHVybiAocCk7Ci0rCX0KLSsKLSsJLyogRGlyZWN0b3J5IGluIHByZS1vcmRlci4gKi8KLSsJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EKSB7Ci0rCQkvKiBJZiBza2lwcGVkIG9yIGNyb3NzZWQgbW91bnQgcG9pbnQsIGRvIHBvc3Qtb3JkZXIgdmlzaXQuICovCi0rCQlpZiAoaW5zdHIgPT0gRlRTX1NLSVAgfHwKLSsJCSAgICBJU1NFVChGVFNfWERFVikgJiYgcC0+ZnRzX2RldiAhPSBzcC0+ZnRzX2RldikgewotKwkJCWlmIChwLT5mdHNfZmxhZ3MgJiBGVFNfU1lNRk9MTE9XKQotKwkJCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotKwkJCWlmIChzcC0+ZnRzX2NoaWxkKSB7Ci0rCQkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLSsJCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0rCQkJfQotKwkJCXAtPmZ0c19pbmZvID0gRlRTX0RQOwotKwkJCXJldHVybiAocCk7Ci0gCQl9Ci0tCX0gZWxzZSBpZiAobHN0YXQocC0+ZnRzX2FjY3BhdGgsIHNicCkpIHsKLS0JCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLWVycjoJCW1lbXNldChzYnAsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwotLQkJcmV0dXJuIChGVFNfTlMpOwotKwotKwkJLyogUmVidWlsZCBpZiBvbmx5IHJlYWQgdGhlIG5hbWVzIGFuZCBub3cgdHJhdmVyc2luZy4gKi8KLSsJCWlmIChzcC0+ZnRzX2NoaWxkICYmIHNwLT5mdHNfb3B0aW9ucyAmIEZUU19OQU1FT05MWSkgewotKwkJCXNwLT5mdHNfb3B0aW9ucyAmPSB+RlRTX05BTUVPTkxZOwotKwkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLSsJCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLSsJCX0KLSsKLSsJCS8qCi0rCQkgKiBDZCB0byB0aGUgc3ViZGlyZWN0b3J5LgotKwkJICoKLSsJCSAqIElmIGhhdmUgYWxyZWFkeSByZWFkIGFuZCBub3cgZmFpbCB0byBjaGRpciwgd2hhY2sgdGhlIGxpc3QKLSsJCSAqIHRvIG1ha2UgdGhlIG5hbWVzIGNvbWUgb3V0IHJpZ2h0LCBhbmQgc2V0IHRoZSBwYXJlbnQgZXJybm8KLSsJCSAqIHNvIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGV2ZW50dWFsbHkgZ2V0IGFuIGVycm9yIGNvbmRpdGlvbi4KLSsJCSAqIFNldCB0aGUgRlRTX0RPTlRDSERJUiBmbGFnIHNvIHRoYXQgd2hlbiB3ZSBsb2dpY2FsbHkgY2hhbmdlCi0rCQkgKiBkaXJlY3RvcmllcyBiYWNrIHRvIHRoZSBwYXJlbnQgd2UgZG9uJ3QgZG8gYSBjaGRpci4KLSsJCSAqCi0rCQkgKiBJZiBoYXZlbid0IHJlYWQgZG8gc28uICBJZiB0aGUgcmVhZCBmYWlscywgZnRzX2J1aWxkIHNldHMKLSsJCSAqIEZUU19TVE9QIG9yIHRoZSBmdHNfaW5mbyBmaWVsZCBvZiB0aGUgbm9kZS4KLSsJCSAqLwotKwkJaWYgKHNwLT5mdHNfY2hpbGQpIHsKLSsJCQlpZiAoQ0hESVIoc3AsIHAtPmZ0c19hY2NwYXRoKSkgewotKwkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLSsJCQkJcC0+ZnRzX2ZsYWdzIHw9IEZUU19ET05UQ0hESVI7Ci0rCQkJCWZvciAocCA9IHNwLT5mdHNfY2hpbGQ7IHA7IHAgPSBwLT5mdHNfbGluaykKLSsJCQkJCXAtPmZ0c19hY2NwYXRoID0KLSsJCQkJCSAgICBwLT5mdHNfcGFyZW50LT5mdHNfYWNjcGF0aDsKLSsJCQl9Ci0rCQl9IGVsc2UgaWYgKChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBCUkVBRCkpID09IE5VTEwpIHsKLSsJCQlpZiAoSVNTRVQoRlRTX1NUT1ApKQotKwkJCQlyZXR1cm4gKE5VTEwpOwotKwkJCXJldHVybiAocCk7Ci0rCQl9Ci0rCQlwID0gc3AtPmZ0c19jaGlsZDsKLSsJCXNwLT5mdHNfY2hpbGQgPSBOVUxMOwotKwkJZ290byBuYW1lOwotIAl9Ci0gCi0tCWlmIChTX0lTRElSKHNicC0+c3RfbW9kZSkpIHsKLSsJLyogTW92ZSB0byB0aGUgbmV4dCBub2RlIG9uIHRoaXMgbGV2ZWwuICovCi0rbmV4dDoJdG1wID0gcDsKLSsJaWYgKHAgPSBwLT5mdHNfbGluaykgewotKwkJZnJlZSh0bXApOwotKwotIAkJLyoKLS0JCSAqIFNldCB0aGUgZGV2aWNlL2lub2RlLiAgVXNlZCB0byBmaW5kIGN5Y2xlcyBhbmQgY2hlY2sgZm9yCi0tCQkgKiBjcm9zc2luZyBtb3VudCBwb2ludHMuICBBbHNvIHJlbWVtYmVyIHRoZSBsaW5rIGNvdW50LCB1c2VkCi0tCQkgKiBpbiBmdHNfYnVpbGQgdG8gbGltaXQgdGhlIG51bWJlciBvZiBzdGF0IGNhbGxzLiAgSXQgaXMKLS0JCSAqIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSBmaWVsZHMgYXJlIG9ubHkgcmVmZXJlbmNlZCBpZiBmdHNfaW5mbwotLQkJICogaXMgc2V0IHRvIEZUU19ELgotKwkJICogSWYgcmVhY2hlZCB0aGUgdG9wLCByZXR1cm4gdG8gdGhlIG9yaWdpbmFsIGRpcmVjdG9yeSwgYW5kCi0rCQkgKiBsb2FkIHRoZSBwYXRocyBmb3IgdGhlIG5leHQgcm9vdC4KLSAJCSAqLwotLQkJZGV2ID0gcC0+ZnRzX2RldiA9IHNicC0+c3RfZGV2OwotLQkJaW5vID0gcC0+ZnRzX2lubyA9IHNicC0+c3RfaW5vOwotLQkJcC0+ZnRzX25saW5rID0gc2JwLT5zdF9ubGluazsKLSsJCWlmIChwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RMRVZFTCkgewotKwkJCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpKSB7Ci0rCQkJCVNFVChGVFNfU1RPUCk7Ci0rCQkJCXJldHVybiAoTlVMTCk7Ci0rCQkJfQotKwkJCWZ0c19sb2FkKHNwLCBwKTsKLSsJCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0rCQl9Ci0rCi0rCQkvKgotKwkJICogVXNlciBtYXkgaGF2ZSBjYWxsZWQgZnRzX3NldCBvbiB0aGUgbm9kZS4gIElmIHNraXBwZWQsCi0rCQkgKiBpZ25vcmUuICBJZiBmb2xsb3dlZCwgZ2V0IGEgZmlsZSBkZXNjcmlwdG9yIHNvIHdlIGNhbgotKwkJICogZ2V0IGJhY2sgaWYgbmVjZXNzYXJ5LgotKwkJICovCi0rCQlpZiAocC0+ZnRzX2luc3RyID09IEZUU19TS0lQKQotKwkJCWdvdG8gbmV4dDsKLSsJCWlmIChwLT5mdHNfaW5zdHIgPT0gRlRTX0ZPTExPVykgewotKwkJCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIE5VTEwsIHAsIDEpOwotKwkJCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRCAmJiAhSVNTRVQoRlRTX05PQ0hESVIpKQotKwkJCQlpZiAoKHAtPmZ0c19zeW1mZCA9Ci0rCQkJCSAgICBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApIHsKLSsJCQkJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotKwkJCQkJcC0+ZnRzX2luZm8gPSBGVFNfRVJSOwotKwkJCQl9IGVsc2UKLSsJCQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfU1lNRk9MTE9XOwotKwkJCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotKwkJfQotIAotLQkJaWYgKElTRE9UKHAtPmZ0c19uYW1lKSkKLS0JCQlyZXR1cm4gKEZUU19ET1QpOwotK25hbWU6CQl0ID0gc3AtPmZ0c19wYXRoICsgTkFQUEVORChwLT5mdHNfcGFyZW50KTsKLSsJCSp0KysgPSAnLyc7Ci0rCQltZW1tb3ZlKHQsIHAtPmZ0c19uYW1lLCBwLT5mdHNfbmFtZWxlbiArIDEpOwotKwkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotKwl9Ci0gCi0rCS8qIE1vdmUgdXAgdG8gdGhlIHBhcmVudCBub2RlLiAqLwotKwlwID0gdG1wLT5mdHNfcGFyZW50OwotKwlmcmVlKHRtcCk7Ci0rCi0rCWlmIChwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RQQVJFTlRMRVZFTCkgewotIAkJLyoKLS0JCSAqIEN5Y2xlIGRldGVjdGlvbiBpcyBkb25lIGJ5IGJydXRlIGZvcmNlIHdoZW4gdGhlIGRpcmVjdG9yeQotLQkJICogaXMgZmlyc3QgZW5jb3VudGVyZWQuICBJZiB0aGUgdHJlZSBnZXRzIGRlZXAgZW5vdWdoIG9yIHRoZQotLQkJICogbnVtYmVyIG9mIHN5bWJvbGljIGxpbmtzIHRvIGRpcmVjdG9yaWVzIGlzIGhpZ2ggZW5vdWdoLAotLQkJICogc29tZXRoaW5nIGZhc3RlciBtaWdodCBiZSB3b3J0aHdoaWxlLgotKwkJICogRG9uZTsgZnJlZSBldmVyeXRoaW5nIHVwIGFuZCBzZXQgZXJybm8gdG8gMCBzbyB0aGUgdXNlcgotKwkJICogY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJyb3IgYW5kIEVPRi4KLSAJCSAqLwotLQkJZm9yICh0ID0gcC0+ZnRzX3BhcmVudDsKLS0JCSAgICB0LT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDsgdCA9IHQtPmZ0c19wYXJlbnQpCi0tCQkJaWYgKGlubyA9PSB0LT5mdHNfaW5vICYmIGRldiA9PSB0LT5mdHNfZGV2KSB7Ci0tCQkJCXAtPmZ0c19jeWNsZSA9IHQ7Ci0tCQkJCXJldHVybiAoRlRTX0RDKTsKLS0JCQl9Ci0tCQlyZXR1cm4gKEZUU19EKTsKLSsJCWZyZWUocCk7Ci0rCQllcnJubyA9IDA7Ci0rCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gTlVMTCk7Ci0gCX0KLS0JaWYgKFNfSVNMTksoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX1NMKTsKLS0JaWYgKFNfSVNSRUcoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX0YpOwotLQlyZXR1cm4gKEZUU19ERUZBVUxUKTsKLS19Ci0gCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcykKLS0JRlRTICpzcDsKLS0JRlRTRU5UICpoZWFkOwotLQlyZWdpc3RlciBpbnQgbml0ZW1zOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICoqYXAsICpwOwotKwkvKiBOdWwgdGVybWluYXRlIHRoZSBwYXRobmFtZS4gKi8KLSsJc3AtPmZ0c19wYXRoW3AtPmZ0c19wYXRobGVuXSA9ICdcMCc7Ci0gCi0gCS8qCi0tCSAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiBwb2ludGVycyB0byB0aGUgc3RydWN0dXJlcyBhbmQgY2FsbCBxc29ydCgzKS4KLS0JICogUmVhc3NlbWJsZSB0aGUgYXJyYXkgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHFzb3J0LiAgSWYgdW5hYmxlIHRvCi0tCSAqIHNvcnQgZm9yIG1lbW9yeSByZWFzb25zLCByZXR1cm4gdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGluIHRoZWlyCi0tCSAqIGN1cnJlbnQgb3JkZXIuICBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBjdXJyZW50IG5lZWRzIHBsdXMKLS0JICogNDAgc28gZG9uJ3QgcmVhbGxvYyBvbmUgZW50cnkgYXQgYSB0aW1lLgotKwkgKiBSZXR1cm4gdG8gdGhlIHBhcmVudCBkaXJlY3RvcnkuICBJZiBhdCBhIHJvb3Qgbm9kZSBvciBjYW1lIHRocm91Z2gKLSsJICogYSBzeW1saW5rLCBnbyBiYWNrIHRocm91Z2ggdGhlIGZpbGUgZGVzY3JpcHRvci4gIE90aGVyd2lzZSwgY2QgdXAKLSsJICogb25lIGRpcmVjdG9yeS4KLSAJICovCi0tCWlmIChuaXRlbXMgPiBzcC0+ZnRzX25pdGVtcykgewotLQkJc3AtPmZ0c19uaXRlbXMgPSBuaXRlbXMgKyA0MDsKLS0JCWlmICgoc3AtPmZ0c19hcnJheSA9IHJlYWxsb2Moc3AtPmZ0c19hcnJheSwKLS0JCSAgICAoc2l6ZV90KShzcC0+ZnRzX25pdGVtcyAqIHNpemVvZihGVFNFTlQgKikpKSkgPT0gTlVMTCkgewotLQkJCXNwLT5mdHNfbml0ZW1zID0gMDsKLS0JCQlyZXR1cm4gKGhlYWQpOwotKwlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLSsJCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpKSB7Ci0rCQkJU0VUKEZUU19TVE9QKTsKLSsJCQlyZXR1cm4gKE5VTEwpOwotKwkJfQotKwl9IGVsc2UgaWYgKHAtPmZ0c19mbGFncyAmIEZUU19TWU1GT0xMT1cpIHsKLSsJCWlmIChGQ0hESVIoc3AsIHAtPmZ0c19zeW1mZCkpIHsKLSsJCQlzYXZlZF9lcnJubyA9IGVycm5vOwotKwkJCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0rCQkJZXJybm8gPSBzYXZlZF9lcnJubzsKLSsJCQlTRVQoRlRTX1NUT1ApOwotKwkJCXJldHVybiAoTlVMTCk7Ci0rCQl9Ci0rCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotKwl9IGVsc2UgaWYgKCEocC0+ZnRzX2ZsYWdzICYgRlRTX0RPTlRDSERJUikpIHsKLSsJCWlmIChDSERJUihzcCwgIi4uIikpIHsKLSsJCQlTRVQoRlRTX1NUT1ApOwotKwkJCXJldHVybiAoTlVMTCk7Ci0gCQl9Ci0gCX0KLS0JZm9yIChhcCA9IHNwLT5mdHNfYXJyYXksIHAgPSBoZWFkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0tCQkqYXArKyA9IHA7Ci0tCXFzb3J0KCh2b2lkICopc3AtPmZ0c19hcnJheSwgbml0ZW1zLCBzaXplb2YoRlRTRU5UICopLCBzcC0+ZnRzX2NvbXBhcik7Ci0tCWZvciAoaGVhZCA9ICooYXAgPSBzcC0+ZnRzX2FycmF5KTsgLS1uaXRlbXM7ICsrYXApCi0tCQlhcFswXS0+ZnRzX2xpbmsgPSBhcFsxXTsKLS0JYXBbMF0tPmZ0c19saW5rID0gTlVMTDsKLS0JcmV0dXJuIChoZWFkKTsKLSsJcC0+ZnRzX2luZm8gPSBwLT5mdHNfZXJybm8gPyBGVFNfRVJSIDogRlRTX0RQOwotKwlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0gfQotIAotLXN0YXRpYyBGVFNFTlQgKgotLWZ0c19hbGxvYyhzcCwgbmFtZSwgbmFtZWxlbikKLS0JRlRTICpzcDsKLS0JY2hhciAqbmFtZTsKLS0JcmVnaXN0ZXIgaW50IG5hbWVsZW47Ci0rLyoKLSsgKiBGdHNfc2V0IHRha2VzIHRoZSBzdHJlYW0gYXMgYW4gYXJndW1lbnQgYWx0aG91Z2ggaXQncyBub3QgdXNlZCBpbiB0aGlzCi0rICogaW1wbGVtZW50YXRpb247IGl0IHdvdWxkIGJlIG5lY2Vzc2FyeSBpZiBhbnlvbmUgd2FudGVkIHRvIGFkZCBnbG9iYWwKLSsgKiBzZW1hbnRpY3MgdG8gZnRzIHVzaW5nIGZ0c19zZXQuICBBbiBlcnJvciByZXR1cm4gaXMgYWxsb3dlZCBmb3Igc2ltaWxhcgotKyAqIHJlYXNvbnMuCi0rICovCi0rLyogQVJHU1VTRUQgKi8KLStpbnQKLStmdHNfc2V0KEZUUyAqc3AsIEZUU0VOVCAqcCwgaW50IGluc3RyKQotK3sKLSsJaWYgKGluc3RyICYmIGluc3RyICE9IEZUU19BR0FJTiAmJiBpbnN0ciAhPSBGVFNfRk9MTE9XICYmCi0rCSAgICBpbnN0ciAhPSBGVFNfTk9JTlNUUiAmJiBpbnN0ciAhPSBGVFNfU0tJUCkgewotKwkJZXJybm8gPSBFSU5WQUw7Ci0rCQlyZXR1cm4gKDEpOwotKwl9Ci0rCXAtPmZ0c19pbnN0ciA9IGluc3RyOwotKwlyZXR1cm4gKDApOwotK30KLSsKLStGVFNFTlQgKgotK2Z0c19jaGlsZHJlbihyZWdpc3RlciBGVFMgKnNwLCBpbnQgaW5zdHIpCi0gewotIAlyZWdpc3RlciBGVFNFTlQgKnA7Ci0tCXNpemVfdCBsZW47Ci0rCWludCBmZDsKLSsKLSsJaWYgKGluc3RyICYmIGluc3RyICE9IEZUU19OQU1FT05MWSkgewotKwkJZXJybm8gPSBFSU5WQUw7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0rCi0rCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLSsJcCA9IHNwLT5mdHNfY3VyOwotIAotIAkvKgotLQkgKiBUaGUgZmlsZSBuYW1lIGlzIGEgdmFyaWFibGUgbGVuZ3RoIGFycmF5IGFuZCBubyBzdGF0IHN0cnVjdHVyZSBpcwotLQkgKiBuZWNlc3NhcnkgaWYgdGhlIHVzZXIgaGFzIHNldCB0aGUgbm9zdGF0IGJpdC4gIEFsbG9jYXRlIHRoZSBGVFNFTlQKLS0JICogc3RydWN0dXJlLCB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaW4gb25lIGNodW5rLCBidXQKLS0JICogYmUgY2FyZWZ1bCB0aGF0IHRoZSBzdGF0IHN0cnVjdHVyZSBpcyByZWFzb25hYmx5IGFsaWduZWQuICBTaW5jZSB0aGUKLS0JICogZnRzX25hbWUgZmllbGQgaXMgZGVjbGFyZWQgdG8gYmUgb2Ygc2l6ZSAxLCB0aGUgZnRzX25hbWUgcG9pbnRlciBpcwotLQkgKiBuYW1lbGVuICsgMiBiZWZvcmUgdGhlIGZpcnN0IHBvc3NpYmxlIGFkZHJlc3Mgb2YgdGhlIHN0YXQgc3RydWN0dXJlLgotKwkgKiBFcnJubyBzZXQgdG8gMCBzbyB1c2VyIGNhbiBkaXN0aW5ndWlzaCBlbXB0eSBkaXJlY3RvcnkgZnJvbQotKwkgKiBhbiBlcnJvci4KLSAJICovCi0tCWxlbiA9IHNpemVvZihGVFNFTlQpICsgbmFtZWxlbjsKLS0JaWYgKCFJU1NFVChGVFNfTk9TVEFUKSkKLS0JCWxlbiArPSBzaXplb2Yoc3RydWN0IHN0YXQpICsgQUxJR05CWVRFUzsKLS0JaWYgKChwID0gbWFsbG9jKGxlbikpID09IE5VTEwpCi0rCWVycm5vID0gMDsKLSsKLSsJLyogRmF0YWwgZXJyb3JzIHN0b3AgaGVyZS4gKi8KLSsJaWYgKElTU0VUKEZUU19TVE9QKSkKLSAJCXJldHVybiAoTlVMTCk7Ci0gCi0tCS8qIENvcHkgdGhlIG5hbWUgcGx1cyB0aGUgdHJhaWxpbmcgTlVMTC4gKi8KLS0JbWVtbW92ZShwLT5mdHNfbmFtZSwgbmFtZSwgbmFtZWxlbiArIDEpOwotKwkvKiBSZXR1cm4gbG9naWNhbCBoaWVyYXJjaHkgb2YgdXNlcidzIGFyZ3VtZW50cy4gKi8KLSsJaWYgKHAtPmZ0c19pbmZvID09IEZUU19JTklUKQotKwkJcmV0dXJuIChwLT5mdHNfbGluayk7Ci0gCi0tCWlmICghSVNTRVQoRlRTX05PU1RBVCkpCi0tCQlwLT5mdHNfc3RhdHAgPSAoc3RydWN0IHN0YXQgKilBTElHTihwLT5mdHNfbmFtZSArIG5hbWVsZW4gKyAyKTsKLS0JcC0+ZnRzX25hbWVsZW4gPSBuYW1lbGVuOwotLQlwLT5mdHNfcGF0aCA9IHNwLT5mdHNfcGF0aDsKLS0JcC0+ZnRzX2Vycm5vID0gMDsKLS0JcC0+ZnRzX2ZsYWdzID0gMDsKLS0JcC0+ZnRzX2luc3RyID0gRlRTX05PSU5TVFI7Ci0tCXAtPmZ0c19udW1iZXIgPSAwOwotLQlwLT5mdHNfcG9pbnRlciA9IE5VTEw7Ci0tCXJldHVybiAocCk7Ci0rCS8qCi0rCSAqIElmIG5vdCBhIGRpcmVjdG9yeSBiZWluZyB2aXNpdGVkIGluIHByZS1vcmRlciwgc3RvcCBoZXJlLiAgQ291bGQKLSsJICogYWxsb3cgRlRTX0ROUiwgYXNzdW1pbmcgdGhlIHVzZXIgaGFzIGZpeGVkIHRoZSBwcm9ibGVtLCBidXQgdGhlCi0rCSAqIHNhbWUgZWZmZWN0IGlzIGF2YWlsYWJsZSB3aXRoIEZUU19BR0FJTi4KLSsJICovCi0rCWlmIChwLT5mdHNfaW5mbyAhPSBGVFNfRCAvKiAmJiBwLT5mdHNfaW5mbyAhPSBGVFNfRE5SICovKQotKwkJcmV0dXJuIChOVUxMKTsKLSsKLSsJLyogRnJlZSB1cCBhbnkgcHJldmlvdXMgY2hpbGQgbGlzdC4gKi8KLSsJaWYgKHNwLT5mdHNfY2hpbGQpCi0rCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0rCi0rCWlmIChpbnN0ciA9PSBGVFNfTkFNRU9OTFkpIHsKLSsJCXNwLT5mdHNfb3B0aW9ucyB8PSBGVFNfTkFNRU9OTFk7Ci0rCQlpbnN0ciA9IEJOQU1FUzsKLSsJfSBlbHNlCi0rCQlpbnN0ciA9IEJDSElMRDsKLSsKLSsJLyoKLSsJICogSWYgdXNpbmcgY2hkaXIgb24gYSByZWxhdGl2ZSBwYXRoIGFuZCBjYWxsZWQgQkVGT1JFIGZ0c19yZWFkIGRvZXMKLSsJICogaXRzIGNoZGlyIHRvIHRoZSByb290IG9mIGEgdHJhdmVyc2FsLCB3ZSBjYW4gbG9zZSAtLSB3ZSBuZWVkIHRvCi0rCSAqIGNoZGlyIGludG8gdGhlIHN1YmRpcmVjdG9yeSwgYW5kIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIGN1cnJlbnQKLSsJICogZGlyZWN0b3J5IGlzLCBzbyB3ZSBjYW4ndCBnZXQgYmFjayBzbyB0aGF0IHRoZSB1cGNvbWluZyBjaGRpciBieQotKwkgKiBmdHNfcmVhZCB3aWxsIHdvcmsuCi0rCSAqLwotKwlpZiAocC0+ZnRzX2xldmVsICE9IEZUU19ST09UTEVWRUwgfHwgcC0+ZnRzX2FjY3BhdGhbMF0gPT0gJy8nIHx8Ci0rCSAgICBJU1NFVChGVFNfTk9DSERJUikpCi0rCQlyZXR1cm4gKHNwLT5mdHNfY2hpbGQgPSBmdHNfYnVpbGQoc3AsIGluc3RyKSk7Ci0rCi0rCWlmICgoZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0rCQlyZXR1cm4gKE5VTEwpOwotKwlzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBpbnN0cik7Ci0rCWlmIChmY2hkaXIoZmQpKQotKwkJcmV0dXJuIChOVUxMKTsKLSsJKHZvaWQpY2xvc2UoZmQpOwotKwlyZXR1cm4gKHNwLT5mdHNfY2hpbGQpOwotIH0KLSAKLS1zdGF0aWMgdm9pZAotLWZ0c19sZnJlZShoZWFkKQotLQlyZWdpc3RlciBGVFNFTlQgKmhlYWQ7Ci0raW50Ci0rZnRzX2Nsb3NlKEZUUyAqc3ApCi0gewotLQlyZWdpc3RlciBGVFNFTlQgKnA7Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqZnJlZXAsICpwOwotKwlpbnQgc2F2ZWRfZXJybm87Ci0gCi0tCS8qIEZyZWUgYSBsaW5rZWQgbGlzdCBvZiBzdHJ1Y3R1cmVzLiAqLwotLQl3aGlsZSAocCA9IGhlYWQpIHsKLS0JCWhlYWQgPSBoZWFkLT5mdHNfbGluazsKLSsJLyoKLSsJICogVGhpcyBzdGlsbCB3b3JrcyBpZiB3ZSBoYXZlbid0IHJlYWQgYW55dGhpbmcgLS0gdGhlIGR1bW15IHN0cnVjdHVyZQotKwkgKiBwb2ludHMgdG8gdGhlIHJvb3QgbGlzdCwgc28gd2Ugc3RlcCB0aHJvdWdoIHRvIHRoZSBlbmQgb2YgdGhlIHJvb3QKLSsJICogbGlzdCB3aGljaCBoYXMgYSB2YWxpZCBwYXJlbnQgcG9pbnRlci4KLSsJICovCi0rCWlmIChzcC0+ZnRzX2N1cikgewotKwkJZm9yIChwID0gc3AtPmZ0c19jdXI7IHAtPmZ0c19sZXZlbCA+PSBGVFNfUk9PVExFVkVMOykgewotKwkJCWZyZWVwID0gcDsKLSsJCQlwID0gcC0+ZnRzX2xpbmsgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0rCQkJZnJlZShmcmVlcCk7Ci0rCQl9Ci0gCQlmcmVlKHApOwotIAl9Ci0tfQotIAotLS8qCi0tICogQWxsb3cgZXNzZW50aWFsbHkgdW5saW1pdGVkIHBhdGhzOyBmaW5kLCBybSwgbHMgc2hvdWxkIGFsbCB3b3JrIG9uIGFueSB0cmVlLgotLSAqIE1vc3Qgc3lzdGVtcyB3aWxsIGFsbG93IGNyZWF0aW9uIG9mIHBhdGhzIG11Y2ggbG9uZ2VyIHRoYW4gTUFYUEFUSExFTiwgZXZlbgotLSAqIHRob3VnaCB0aGUga2VybmVsIHdvbid0IHJlc29sdmUgdGhlbS4gIEFkZCB0aGUgc2l6ZSAobm90IGp1c3Qgd2hhdCdzIG5lZWRlZCkKLS0gKiBwbHVzIDI1NiBieXRlcyBzbyBkb24ndCByZWFsbG9jIHRoZSBwYXRoIDIgYnl0ZXMgYXQgYSB0aW1lLiAKLS0gKi8KLS1zdGF0aWMgaW50Ci0tZnRzX3BhbGxvYyhzcCwgbW9yZSkKLS0JRlRTICpzcDsKLS0Jc2l6ZV90IG1vcmU7Ci0tewotLQlzcC0+ZnRzX3BhdGhsZW4gKz0gbW9yZSArIDI1NjsKLS0Jc3AtPmZ0c19wYXRoID0gcmVhbGxvYyhzcC0+ZnRzX3BhdGgsIChzaXplX3Qpc3AtPmZ0c19wYXRobGVuKTsKLS0JcmV0dXJuIChzcC0+ZnRzX3BhdGggPT0gTlVMTCk7Ci0tfQotKwkvKiBGcmVlIHVwIGNoaWxkIGxpbmtlZCBsaXN0LCBzb3J0IGFycmF5LCBwYXRoIGJ1ZmZlci4gKi8KLSsJaWYgKHNwLT5mdHNfY2hpbGQpCi0rCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0rCWlmIChzcC0+ZnRzX2FycmF5KQotKwkJZnJlZShzcC0+ZnRzX2FycmF5KTsKLSsJZnJlZShzcC0+ZnRzX3BhdGgpOwotIAotLS8qCi0tICogV2hlbiB0aGUgcGF0aCBpcyByZWFsbG9jJ2QsIGhhdmUgdG8gZml4IGFsbCBvZiB0aGUgcG9pbnRlcnMgaW4gc3RydWN0dXJlcwotLSAqIGFscmVhZHkgcmV0dXJuZWQuCi0tICovCi0tc3RhdGljIHZvaWQKLS1mdHNfcGFkanVzdChzcCwgYWRkcikKLS0JRlRTICpzcDsKLS0Jdm9pZCAqYWRkcjsKLS17Ci0tCUZUU0VOVCAqcDsKLSsJLyogUmV0dXJuIHRvIG9yaWdpbmFsIGRpcmVjdG9yeSwgc2F2ZSBlcnJubyBpZiBuZWNlc3NhcnkuICovCi0rCWlmICghSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0rCQlzYXZlZF9lcnJubyA9IGZjaGRpcihzcC0+ZnRzX3JmZCkgPyBlcnJubyA6IDA7Ci0rCQkodm9pZCljbG9zZShzcC0+ZnRzX3JmZCk7Ci0rCX0KLSAKLS0jZGVmaW5lCUFESlVTVChwKSB7CQkJCQkJCVwKLS0JKHApLT5mdHNfYWNjcGF0aCA9CQkJCQkJXAotLQkgICAgKGNoYXIgKilhZGRyICsgKChwKS0+ZnRzX2FjY3BhdGggLSAocCktPmZ0c19wYXRoKTsJCVwKLS0JKHApLT5mdHNfcGF0aCA9IGFkZHI7CQkJCQkJXAotLX0KLS0JLyogQWRqdXN0IHRoZSBjdXJyZW50IHNldCBvZiBjaGlsZHJlbi4gKi8KLS0JZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcDsgcCA9IHAtPmZ0c19saW5rKQotLQkJQURKVVNUKHApOwotKwkvKiBGcmVlIHVwIHRoZSBzdHJlYW0gcG9pbnRlci4gKi8KLSsJZnJlZShzcCk7Ci0gCi0tCS8qIEFkanVzdCB0aGUgcmVzdCBvZiB0aGUgdHJlZS4gKi8KLS0JZm9yIChwID0gc3AtPmZ0c19jdXI7IHAtPmZ0c19sZXZlbCA+PSBGVFNfUk9PVExFVkVMOykgewotLQkJQURKVVNUKHApOwotLQkJcCA9IHAtPmZ0c19saW5rID8gcC0+ZnRzX2xpbmsgOiBwLT5mdHNfcGFyZW50OwotKwkvKiBTZXQgZXJybm8gYW5kIHJldHVybi4gKi8KLSsJaWYgKCFJU1NFVChGVFNfTk9DSERJUikgJiYgc2F2ZWRfZXJybm8pIHsKLSsJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0rCQlyZXR1cm4gKC0xKTsKLSAJfQotKwlyZXR1cm4gKDApOwotIH0KLSAKLS1zdGF0aWMgc2l6ZV90Ci0tZnRzX21heGFyZ2xlbihhcmd2KQotLQljaGFyICogY29uc3QgKmFyZ3Y7Ci0tewotLQlzaXplX3QgbGVuLCBtYXg7Ci0tCi0tCWZvciAobWF4ID0gMDsgKmFyZ3Y7ICsrYXJndikKLS0JCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPiBtYXgpCi0tCQkJbWF4ID0gbGVuOwotLQlyZXR1cm4gKG1heCk7Ci0tfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvcmVtb3ZlX2NkZWZzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvcmVtb3ZlX2NkZWZzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTUyNzA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL3JlbW92ZV9jZGVmcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVJlcGxhY2UgdXNlIG9mIG1hY3JvcyBmcm9tIHN5cy9jZGVmcy5oIHNpbmNlIGNkZWZzLmggaXMgbWlzc2luZyBvbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotSW5kZXg6IGZ0cy9mdHMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZ0cy5vcmlnL2Z0cy5oCi0rKysgZnRzL2Z0cy5oCi1AQCAtMTI2LDE1ICsxMjYsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgX2Z0c2VudCB7Ci0gCWNoYXIgZnRzX25hbWVbMV07CQkvKiBmaWxlIG5hbWUgKi8KLSB9IEZUU0VOVDsKLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0tX19CRUdJTl9ERUNMUwotLUZUU0VOVAkqZnRzX2NoaWxkcmVuIF9fUCgoRlRTICosIGludCkpOwotLWludAkgZnRzX2Nsb3NlIF9fUCgoRlRTICopKTsKLS1GVFMJKmZ0c19vcGVuIF9fUCgoY2hhciAqIGNvbnN0ICosIGludCwKLS0JICAgIGludCAoKikoY29uc3QgRlRTRU5UICoqLCBjb25zdCBGVFNFTlQgKiopKSk7Ci0tRlRTRU5UCSpmdHNfcmVhZCBfX1AoKEZUUyAqKSk7Ci0taW50CSBmdHNfc2V0IF9fUCgoRlRTICosIEZUU0VOVCAqLCBpbnQpKTsKLS1fX0VORF9ERUNMUwotKyNpZm5kZWYgX19QCi0rI2RlZmluZSBfX1AKLSsjZW5kaWYKLStGVFNFTlQJKmZ0c19jaGlsZHJlbiAoRlRTICpwLCBpbnQgb3B0cyk7Ci0raW50CSBmdHNfY2xvc2UgKEZUUyAqcCk7Ci0rRlRTCSpmdHNfb3BlbiAoY2hhciAqIGNvbnN0ICogcGF0aCwgaW50IG9wdHMsCi0rCSAgICBpbnQgKCpjb21wZm4pKGNvbnN0IEZUU0VOVCAqKiwgY29uc3QgRlRTRU5UICoqKSk7Ci0rRlRTRU5UCSpmdHNfcmVhZCAoRlRTICpwKTsKLStpbnQJIGZ0c19zZXQgKEZUUyAqcCwgRlRTRU5UICpmLCBpbnQgb3B0cyk7Ci0gCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotICNlbmRpZiAvKiAhX0ZUU19IXyAqLwotSW5kZXg6IGZ0cy9mdHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZ0cy5vcmlnL2Z0cy5jCi0rKysgZnRzL2Z0cy5jCi1AQCAtNTAsMTUgKzUwLDE1IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylmdHMuYwk4LjYgKEIKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotLXN0YXRpYyBGVFNFTlQJKmZ0c19hbGxvYyBfX1AoKEZUUyAqLCBjaGFyICosIGludCkpOwotLXN0YXRpYyBGVFNFTlQJKmZ0c19idWlsZCBfX1AoKEZUUyAqLCBpbnQpKTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xmcmVlIF9fUCgoRlRTRU5UICopKTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xvYWQgX19QKChGVFMgKiwgRlRTRU5UICopKTsKLS1zdGF0aWMgc2l6ZV90CSBmdHNfbWF4YXJnbGVuIF9fUCgoY2hhciAqIGNvbnN0ICopKTsKLS1zdGF0aWMgdm9pZAkgZnRzX3BhZGp1c3QgX19QKChGVFMgKiwgdm9pZCAqKSk7Ci0tc3RhdGljIGludAkgZnRzX3BhbGxvYyBfX1AoKEZUUyAqLCBzaXplX3QpKTsKLS1zdGF0aWMgRlRTRU5UCSpmdHNfc29ydCBfX1AoKEZUUyAqLCBGVFNFTlQgKiwgaW50KSk7Ci0tc3RhdGljIHVfc2hvcnQJIGZ0c19zdGF0IF9fUCgoRlRTICosIHN0cnVjdCBkaXJlbnQgKiwgRlRTRU5UICosIGludCkpOwotK3N0YXRpYyBGVFNFTlQJKmZ0c19hbGxvYyBfX1AoRlRTICosIGNoYXIgKiwgaW50KTsKLStzdGF0aWMgRlRTRU5UCSpmdHNfYnVpbGQgX19QKEZUUyAqLCBpbnQpOwotK3N0YXRpYyB2b2lkCSBmdHNfbGZyZWUgX19QKEZUU0VOVCAqKTsKLStzdGF0aWMgdm9pZAkgZnRzX2xvYWQgX19QKEZUUyAqLCBGVFNFTlQgKik7Ci0rc3RhdGljIHNpemVfdAkgZnRzX21heGFyZ2xlbiBfX1AoY2hhciAqIGNvbnN0ICopOwotK3N0YXRpYyB2b2lkCSBmdHNfcGFkanVzdCBfX1AoRlRTICosIHZvaWQgKik7Ci0rc3RhdGljIGludAkgZnRzX3BhbGxvYyBfX1AoRlRTICosIHNpemVfdCk7Ci0rc3RhdGljIEZUU0VOVAkqZnRzX3NvcnQgX19QKEZUUyAqLCBGVFNFTlQgKiwgaW50KTsKLStzdGF0aWMgdV9zaG9ydAkgZnRzX3N0YXQgX19QKEZUUyAqLCBzdHJ1Y3QgZGlyZW50ICosIEZUU0VOVCAqLCBpbnQpOwotIAotICNkZWZpbmUJSVNET1QoYSkJKGFbMF0gPT0gJy4nICYmICghYVsxXSB8fCBhWzFdID09ICcuJyAmJiAhYVsyXSkpCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9zdGRpbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9zdGRpbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZTYwOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvc3RkaW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotSW5jbHVkZSBzdGRpbnQuaCBmb3IgdV8qIHR5cGVkZWZzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotLS0tIC4vZnRzLmMub3JpZwotKysrIC4vZnRzLmMKLUBAIC00Niw2ICs0Niw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGZ0cy5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCmluZGV4IDgzZWRmZmUuLmMyMDU5ZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgpAQCAtMjQsOCArMjQsNiBAQAogCiBQQUNLQUdFQ09ORklHW21zZ2NhdC1jdXJzZXNdID0gIi0td2l0aC1saWJuY3Vyc2VzLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsIgogCi1MREZMQUdTX3ByZXBlbmRfbGliYy11Y2xpYmMgPSAiIC1scnQgLWxwdGhyZWFkICIKLQogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwogCiBFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saXNwZGlyIFwKQEAgLTg2LDE1ICs4NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLnNvKiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0dOVS5HZXR0ZXh0LmRsbCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWVfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAke2xpYmRpcn0vbGliaW50bC5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jaGFyc2V0LmFsaWFzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiBGSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZGV2ICs9ICIke2xpYmRpcn0vbGliYXNwcmludGYuYSBcCiAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9hdXRvc3ByaW50Zi5oIFwKICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTX2dldHRleHQtcnVudGltZS1kZXZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAke2xpYmRpcn0vbGliaW50bC5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJpbnRsLmggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiBGSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZG9jID0gIiR7bWFuZGlyfS9tYW4xL2dldHRleHQuKiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL25nZXR0ZXh0LiogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9lbnZzdWJzdC4qIFwKQEAgLTExOSw2ICsxMTEsMTAgQEAKIAlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aAogCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4KIAlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4KKworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L21zZ2ZtdCBcCisgICAgICAgICAgICAgICAgR0VUVEVYVERBVEFESVI9IiR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC0wLjE5LjgvIgorCiB9CiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9maXgtY29uZmxpY3RpbmctcmFuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9maXgtY29uZmxpY3RpbmctcmFuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU3MTExMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZml4LWNvbmZsaWN0aW5nLXJhbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1SZW5hbWUgJ3JhbmQnIHZhcmlhYmxlIHRvIGF2b2lkIGNvbmZsaWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEJqw7ZybiBTdGVuYmVyZyA8YmpzdEBlbmVhLmNvbT4KLQotZGlmZiAtdSBnbGliLTIuMzQuMy90ZXN0cy9yZWZjb3VudC9zaWduYWxzLmN+IGdsaWItMi4zNC4zL3Rlc3RzL3JlZmNvdW50L3NpZ25hbHMuYwotLS0tIGdsaWItMi4zNC4zL3Rlc3RzL3JlZmNvdW50L3NpZ25hbHMuYwkyMDEyLTExLTI2IDE3OjUyOjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdsaWItMi4zNC4zL3Rlc3RzL3JlZmNvdW50L3NpZ25hbHMuYwkyMDEzLTAyLTA4IDE0OjI0OjEwLjA1MjQ3NzU0NiArMDEwMAotQEAgLTksNyArOSw3IEBACi0gI2RlZmluZSBNWV9JU19URVNUX0NMQVNTKHRjbGFzcykgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKCh0Y2xhc3MpLCBHX1RZUEVfVEVTVCkpCi0gI2RlZmluZSBNWV9URVNUX0dFVF9DTEFTUyh0ZXN0KSAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKHRlc3QpLCBHX1RZUEVfVEVTVCwgR1Rlc3RDbGFzcykpCi0gCi0tc3RhdGljIEdSYW5kICpyYW5kOwotK3N0YXRpYyBHUmFuZCAqZ3JhbmQ7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgX0dUZXN0IEdUZXN0OwotIHR5cGVkZWYgc3RydWN0IF9HVGVzdENsYXNzIEdUZXN0Q2xhc3M7Ci1AQCAtODQsNyArODQsNyBAQAotICAgICAgIE5VTEwKLSAgICAgfTsKLSAKLS0gICAgcmFuZCA9IGdfcmFuZF9uZXcoKTsKLSsgICAgZ3JhbmQgPSBnX3JhbmRfbmV3KCk7Ci0gCi0gICAgIHRlc3RfdHlwZSA9IGdfdHlwZV9yZWdpc3Rlcl9zdGF0aWMgKEdfVFlQRV9PQkpFQ1QsICJHVGVzdCIsCi0gICAgICAgICAmdGVzdF9pbmZvLCAwKTsKLUBAIC0yMTgsNyArMjE4LDcgQEAKLSBzdGF0aWMgdm9pZAotIG15X3Rlc3RfZG9fcHJvcCAoR1Rlc3QgKiB0ZXN0KQotIHsKLS0gIHRlc3QtPnZhbHVlID0gZ19yYW5kX2ludCAocmFuZCk7Ci0rICB0ZXN0LT52YWx1ZSA9IGdfcmFuZF9pbnQgKGdyYW5kKTsKLSAgIGdfb2JqZWN0X25vdGlmeSAoR19PQkpFQ1QgKHRlc3QpLCAidGVzdC1wcm9wIik7Ci0gfQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItZ2V0dGV4dGl6ZS1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi1nZXR0ZXh0aXplLWRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU0MzUxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi1nZXR0ZXh0aXplLWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSMgYW4gdmVyeSBvbGQgcGF0Y2ggY2hlcnJ5LXBpY2tlZCBpbiBldmVyeSBnbGliLTIuMCBwYXRjaCBkaXJlY3RvcnkuIFRoZSBlYXJsaWVzdCBjb250YWluZXIKLSMgZm9yIGl0IGlzIDIuNi41IGluIE9FLiBUaGUgZWFybGllc3QgY29tbWl0IGZvciBpdCBpcyBjOGU1NzAyMTI3ZTUwN2U4MmU2ZjY4YTRiOGM1NDY4MDNhY2NlYTlkCi0jIGluIE9FIHNpZGUgd2hpY2ggcG9ydHMgZnJvbSBwcmV2aW91cyBiaXRrZWVwZXIgU0NNLiBJbiBPRSBzaWRlIGl0J3Mgb25seSB1c2VkIHRpbCAyLjEyLjQuCi0jCi0jIGtlZXAgaXQgc2luY2UgaXQncyBhbHdheXMgY2xlYW5lciB0byBub3QgaGFyZGNvZGUgZGVzdGluYXRpb24gcGF0aC4gVXNlIEBkYXRhZGlyQCBpcyBtb3JlCi0jIHBvcnRhYmxlIGhlcmUuIG1hcmsgZm9yIHVwc3RyZWFtCi0jCi0jIGJ5IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPiwgMDYvMjUvMjAxMAotIyBSZWJhc2VkIGJ5IERvbmd4aWFvIFh1IDxkb25neGlhby54dUBpbnRlbC5jb20+LCAxMS8xNi8yMDEwCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotZGlmZiAtcnVOIGdsaWItMi4yNy4zLW9yaWcvZ2xpYi1nZXR0ZXh0aXplLmluIGdsaWItMi4yNy4zL2dsaWItZ2V0dGV4dGl6ZS5pbgotLS0tIGdsaWItMi4yNy4zLW9yaWcvZ2xpYi1nZXR0ZXh0aXplLmluCTIwMDktMDQtMDEgMDc6MDQ6MjAuMDAwMDAwMDAwICswODAwCi0rKysgZ2xpYi0yLjI3LjMvZ2xpYi1nZXR0ZXh0aXplLmluCTIwMTAtMTEtMTYgMTI6NTU6MDYuODc0NjA1OTE2ICswODAwCi1AQCAtNTIsNyArNTIsNyBAQAotIGRhdGFkaXI9QGRhdGFkaXJACi0gZGF0YXJvb3RkaXI9QGRhdGFyb290ZGlyQAotIAotLWdldHRleHRfZGlyPSRwcmVmaXgvc2hhcmUvZ2xpYi0yLjAvZ2V0dGV4dAotK2dldHRleHRfZGlyPUBkYXRhZGlyQC9nbGliLTIuMC9nZXR0ZXh0Ci0gCi0gd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KLSAgIGNhc2UgIiQxIiBpbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZWEzNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLXJlcXVpcmUgZ2xpYi5pbmMKLQotUEUgPSAiMSIKLQotU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtY29uZmxpY3RpbmctcmFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjX211c2xfdHJhbnNsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9nbGliLWdldHRleHRpemUtZGlyLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzODFhYjIyOTM0ZjI5Njc1MGQwMzZhYTU1YTM5N2RlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmVlOTRiZjRjMDE0NTliNmIwMGNiOWRiMDU0NWMyMjM3OTIxZTMwNjBjMGI3NGNmZjEzZmJjMDIwY2ZkOTk5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUyLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmZTYwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUyLjMuYmIKQEAgLTAsMCArMSwyMyBAQAorcmVxdWlyZSBnbGliLmluYworCitQRSA9ICIxIgorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91Y2xpYmNfbXVzbF90cmFuc2xhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbGxvdy1ydW4tbWVkaWEtc2RYLWRyaXZlLW1vdW50LWlmLXVzZXJuYW1lLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRlc3QtZm9yLXB0aHJlYWRfZ2V0bmFtZV9ucC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OTI2NWQwMjg5YTQzNmU5OWNhZDU0NDkxZWIyMWVmNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNWVlNzYzNWE3YzBmY2Q0ZWM5MWNiYzNhZTA3YzdmOGY1Y2U2MjFkODE4MzUxMWY0MTRkZWQwOWU3ZTRlMTI4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCmluZGV4IDJiMzBlMzcuLjRjZGYxNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKQEAgLTQ1LDcgKzQ1LDYgQEAKIFBSSU5URl9taW5ndzMyID0gIi0tZW5hYmxlLWluY2x1ZGVkLXByaW50Zj15ZXMiCiBFWFRSQV9PRUNPTkYgPSAiJHtQUklOVEZ9ICR7Q09SRUNPTkZ9IgogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke0NPUkVDT05GfSAtLWRpc2FibGUtc2VsaW51eCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC0td2l0aC1saWJpY29udj1nbnUiCiAKICMgVGVsbCBjb25maWd1cmUgdGhhdCB3ZSdsbCBoYXZlIGRidXMtZGFlbW9uIG9uIHRoZSB0YXJnZXQgZm9yIHRoZSB0ZXN0cwogRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnIGFjX2N2X3Byb2dfREJVU19EQUVNT049ZGJ1cy1kYWVtb24nLCAnJywgZCl9IgpAQCAtNjcsMTIgKzY2LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWNvbXBpbGUtcmVzb3VyY2VzIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9zY2hlbWFzL2dzY2hlbWEuZHRkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC92YWxncmluZC9nbGliLnN1cHAgXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dldHRleHQvaXRzIgogRklMRVNfJHtQTn0tZGJnICs9ICIke2RhdGFkaXJ9L2dsaWItMi4wL2dkYiAke2RhdGFkaXJ9L2dkYiIKIEZJTEVTXyR7UE59LWNvZGVnZW4gPSAiJHtkYXRhZGlyfS9nbGliLTIuMC9jb2RlZ2VuLyoucHkgXAogICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2RidXMtY29kZWdlbiIKIEZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgogCitSUkVDT01NRU5EU18ke1BOfSArPSAic2hhcmVkLW1pbWUtaW5mbyIKKyMgV2hlbiBjcm9zcyBjb21waWxpbmcgZm9yIFdpbmRvd3Mgd2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoaXMKK1JSRUNPTU1FTkRTXyR7UE59X3JlbW92ZV9taW5ndzMyID0gInNoYXJlZC1taW1lLWluZm8iCisKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCiAjIFZhbGdyaW5kIHJ1bnRpbWUgZGV0ZWN0aW9uIHdvcmtzIHVzaW5nIGhhbmQtd3JpdHRlbiBhc3NlbWJseSwgd2hpY2gKQEAgLTExNyw2ICsxMjEsMTIgQEAKIAlmaQogfQogCitSREVQRU5EU18ke1BOfS1jb2RlZ2VuICs9ICJcCisgICAgICAgICAgICBweXRob24zIFwKKyAgICAgICAgICAgIHB5dGhvbjMtZGlzdHV0aWxzIFwKKyAgICAgICAgICAgIHB5dGhvbjMteG1sIFwKKyAgICAgICAgICAgIgorCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiXAogICAgICAgICAgICAgZGJ1cyBcCiAgICAgICAgICAgICBnbm9tZS1kZXNrdG9wLXRlc3RpbmcgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZTg2ODMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi0jIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQotIwotQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgotCi1pbmhlcml0IG5hdGl2ZQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKLQotU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKLUdMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKLQotU1JDUkVWX2dsaWJjID89ICJkYjAyNDJlMzAyMzQzNjc1N2JiYzdjNDg4YTc3OWU2ZTMzNDNkYjA0IgotU1JDUkVWX2xvY2FsZWRlZiA/PSAiMjk4NjliNmRjMTE0MjdjNWJhYjgzOWJkYjE1NWM4NWE3YzY0NGM3MSIKLQotU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAotICAgICAgICAgICBmaWxlOi8vMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWxvY2FsZV90LmgtY29tcGF0aWJpbGl0eS1oZWFkZXIucGF0Y2ggXAotIgotIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KLSMKLVNSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCi1DRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNWQ3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI2LmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAorICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCisgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCisjIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQorIworQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgorCitpbmhlcml0IG5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKKworU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKK0dMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKKworU1JDUkVWX2dsaWJjID89ICIxYzlhNWMyNzBkOGI2NmYzMGRjZmFmMWNiMmQ2Y2YzOWQzZTE4MzY5IgorU1JDUkVWX2xvY2FsZWRlZiA/PSAiZGZiNGFmZTU1MWM2YzZlOTRmOWNjODU0MTdiZDFmNTgyMTY4Yzg0MyIKKworU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAorICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisiCisjIE1ha2VzIGZvciBhIHJhdGhlciBsb25nIHJldiAoMjIgY2hhcmFjdGVycyksIGJ1dC4uLgorIworU1JDUkVWX0ZPUk1BVCA9ICJnbGliY19sb2NhbGVkZWYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2xpYmM9JHtTfSIKK0NGTEFHUyArPSAiLWZnbnU4OS1pbmxpbmUgLXN0ZD1nbnU5OSAtRElTX0lOXCh4XCk9JzAnIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2xvY2FsZWRlZiAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jCmluZGV4IDM3ZjI3Y2EuLmRlODU5ZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29sbGF0ZXJhbC5pbmMKQEAgLTE4LDUgKzE4LDQgQEAKIGRvX2luc3RhbGxbZGVwZW5kc10gKz0gInZpcnR1YWwvJHtNTFBSRUZJWH1saWJjOmRvX3N0YXNoX2xvY2FsZSIKIAogQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9saWJjLXVjbGliY19jbGFzcy10YXJnZXQgPSAibnVsbCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMKaW5kZXggNzVhYmFiZS4uYjNjYjEwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMKQEAgLTEyLDcgKzEyLDcgQEAKIEJJTlVUSUxTREVQX2NsYXNzLW5hdGl2ZXNkayA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscy1jcm9zc3Nkazpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fcGFja2FnZVtkZXBlbmRzXSArPSAiJHtCSU5VVElMU0RFUH0iCiAKLSMgbG9jYWxlZGVmIGxpbmtzIHdpdGggbGliYy5zbyBhbmQgZ2xpYmMtY29sbGF0ZXJhbC5pbmNpbmhpYml0cyBhbGwgZGVmYXVsdCBkZXBzCisjIGxvY2FsZWRlZiBsaW5rcyB3aXRoIGxpYmMuc28gYW5kIGdsaWJjLWNvbGxhdGVyYWwuaW5jIGluaGliaXRzIGFsbCBkZWZhdWx0IGRlcHMKICMgY2Fubm90IGFkZCB2aXJ0dWFsL2xpYmMgdG8gREVQRU5EUywgYmVjYXVzZSBpdCB3b3VsZCBjb25mbGljdCB3aXRoIGxpYmMtaW5pdGlhbCBpbiBSU1MKIFJERVBFTkRTX2xvY2FsZWRlZiArPSAiZ2xpYmMiCiAKQEAgLTM5LDcgKzM5LDYgQEAKIAogUEFDS0FHRVNfRFlOQU1JQyA9ICJebG9jYWxlLWJhc2UtLiogXAogICAgICAgICAgICAgICAgICAgICBeZ2xpYmMtZ2NvbnYtLiogXmdsaWJjLWNoYXJtYXAtLiogXmdsaWJjLWxvY2FsZWRhdGEtLiogXmdsaWJjLWJpbmFyeS1sb2NhbGVkYXRhLS4qIFwKLSAgICAgICAgICAgICAgICAgICAgXmdsaWJjLWdjb252LS4qICBeZ2xpYmMtY2hhcm1hcC0uKiAgXmdsaWJjLWxvY2FsZWRhdGEtLiogIF5nbGliYy1iaW5hcnktbG9jYWxlZGF0YS0uKiBcCiAgICAgICAgICAgICAgICAgICAgIF4ke01MUFJFRklYfWdsaWJjLWdjb252JCIKIAogIyBDcmVhdGUgYSBnbGliYy1iaW5hcmllcyBwYWNrYWdlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4yNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI2LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI2LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKaW5kZXggOWY3ZmE2Mi4uZGYzZGIyYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYwpAQCAtMSwxOSArMSwzIEBACi0jCi0jIEZvciBub3csIHdlIHdpbGwgc2tpcCBidWlsZGluZyBvZiBhIGdjYyBwYWNrYWdlIGlmIGl0IGlzIGEgdWNsaWJjIG9uZQotIyBhbmQgb3VyIGJ1aWxkIGlzIG5vdCBhIHVjbGliYyBvbmUsIGFuZCB3ZSBza2lwIGEgZ2xpYmMgb25lIGlmIG91ciBidWlsZAotIyBpcyBhIHVjbGliYyBidWlsZC4KLSMKLSMgU2VlIHRoZSBub3RlIGluIGdjYy9nY2NfMy40LjAub2UKLSMKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBpbXBvcnQgYmIsIHJlCi0gICAgdWNfb3MgPSAocmUubWF0Y2goJy4qdWNsaWJjKicsIGQuZ2V0VmFyKCdUQVJHRVRfT1MnKSkgIT0gTm9uZSkKLSAgICBpZiB1Y19vczoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImluY29tcGF0aWJsZSB3aXRoIHRhcmdldCAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVEFSR0VUX09TJykpCi19Ci0KIElOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgogCiBQQUNLQUdFUyA9ICIke1BOfS1kYmcgY2F0Y2hzZWd2IHNsbiBuc2NkIGxkZCB0emNvZGUgZ2xpYmMtdGhyZWFkLWRiICR7UE59LXBpYyBsaWJjaWRuIGxpYm1lbXVzYWdlIGxpYnNlZ2ZhdWx0ICR7UE59LXBjcHJvZmlsZSBsaWJzb3RydXNzICR7UE59ICR7UE59LXV0aWxzIGdsaWJjLWV4dHJhLW5zcyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyIKQEAgLTE0NywxMSArMTMxLDE1IEBACiAJZG9faW5zdGFsbF9hcm1tdWx0aWxpYgogfQogCitkb19pbnN0YWxsX2FwcGVuZF9hcm1lYiAoKSB7CisJZG9faW5zdGFsbF9hcm1tdWx0aWxpYgorfQorCiBkb19pbnN0YWxsX2FybW11bHRpbGliICgpIHsKIAogCW9lX211bHRpbGliX2hlYWRlciBiaXRzL2VuZGlhbi5oIGJpdHMvZmNudGwuaCBiaXRzL2ZlbnYuaCBiaXRzL2ZwLWZhc3QuaCBiaXRzL2h3Y2FwLmggYml0cy9pcGMuaCBiaXRzL2xpbmsuaCBiaXRzL3dvcmRzaXplLmgKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9sb2NhbF9saW0uaCBiaXRzL21tYW4uaCBiaXRzL21zcS5oIGJpdHMvcHRocmVhZHR5cGVzLmggIGJpdHMvc2VtLmggIGJpdHMvc2VtYXBob3JlLmggYml0cy9zZXRqbXAuaAotCW9lX211bHRpbGliX2hlYWRlciBiaXRzL3NobS5oIGJpdHMvc2lnc3RhY2suaCBiaXRzL3N0YXQuaCBiaXRzL3N0YXRmcy5oIGJpdHMvc3RyaW5nLmggYml0cy90eXBlc2l6ZXMuaAorCW9lX211bHRpbGliX2hlYWRlciBiaXRzL2xvY2FsX2xpbS5oIGJpdHMvbW1hbi5oIGJpdHMvbXNxLmggYml0cy9wdGhyZWFkdHlwZXMuaCBiaXRzL3B0aHJlYWR0eXBlcy1hcmNoLmggIGJpdHMvc2VtLmggIGJpdHMvc2VtYXBob3JlLmggYml0cy9zZXRqbXAuaAorCW9lX211bHRpbGliX2hlYWRlciBiaXRzL3NobS5oIGJpdHMvc2lnc3RhY2suaCBiaXRzL3N0YXQuaCBiaXRzL3N0YXRmcy5oIGJpdHMvdHlwZXNpemVzLmgKIAogCW9lX211bHRpbGliX2hlYWRlciBmcHVfY29udHJvbC5oIGdudS9saWItbmFtZXMuaCBnbnUvc3R1YnMuaCBpZWVlNzU0LmgKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLUluY2x1ZGUtbG9jYWxlX3QuaC1jb21wYXRpYmlsaXR5LWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLUluY2x1ZGUtbG9jYWxlX3QuaC1jb21wYXRpYmlsaXR5LWhlYWRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEzYzQyOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1JbmNsdWRlLWxvY2FsZV90LmgtY29tcGF0aWJpbGl0eS1oZWFkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGFiZmViMGNmNGUzMjYxYTY2YTdhMjNhYmM5YWVkMzNjMDM0Yzg1MGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb3NodWEgV2F0dCA8Sm9zaHVhLldhdHRAZ2FybWluLmNvbT4KLURhdGU6IFdlZCwgNiBEZWMgMjAxNyAxMzoyNjoxOSAtMDYwMAotU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIGxvY2FsZV90LmggY29tcGF0aWJpbGl0eSBoZWFkZXIKLQotTmV3ZXIgdmVyc2lvbnMgb2YgZ2xpYmMgKHNpbmNlIDIuMjYpIG1vdmVkIHRoZSBsb2NhbGUgdHlwZWRlZnMgZnJvbQoteGxvY2FsZS5oIHRvIGJpdHMvdHlwZXMvbG9jYWxlX3QuaC4gQ3JlYXRlIGEgY29tcGF0aWJpbGl0eSBoZWFkZXIgZm9yCi10aGVzZSBuZXdlciB2ZXJzaW9ucyBvZiBnbGliYwotCi1TZWUgZjBiZTI1YjYzMzZkYjc0OTJlNDdkMmU4ZTcyZWI4YWY1M2I1NTA2ZCBpbiBnbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgY29tcGF0aWJpbGl0eSB3aXRoIG5ld2VyIGhvc3QgZ2xpYmMKLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLQotLS0tCi0gbG9jYWxlL2JpdHMvdHlwZXMvbG9jYWxlX3QuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvYml0cy90eXBlcy9sb2NhbGVfdC5oCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvYml0cy90eXBlcy9sb2NhbGVfdC5oIGIvbG9jYWxlL2JpdHMvdHlwZXMvbG9jYWxlX3QuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmI1MTlhNmM1ZjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xvY2FsZS9iaXRzL3R5cGVzL2xvY2FsZV90LmgKLUBAIC0wLDAgKzEgQEAKLSsjaW5jbHVkZSA8eGxvY2FsZS5oPgotLS0gCi0yLjE0LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKaW5kZXggMDU1M2Y4YS4uMTljMWQ5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAyNzI3ZTU4ZDFkMjY5OTk0ZGUxN2NhZGIxMjE5NTAwMWIxNDU4NWU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MTM0NmIyZjc3MzU2OTgwNzhkNWJmOTE5YTc4YjZjMDI2OWQ2ZmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NDg6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8yNl0gbmF0aXZlc2RrLWdsaWJjOiBMb29rIGZvciBob3N0IHN5c3RlbSBsZC5zby5jYWNoZSBhcworU3ViamVjdDogW1BBVENIIDAxLzI1XSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzCiAgd2VsbAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQpAQCAtMzEsNyArMzEsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggNTFmYjBkMC4uZjUwM2RiYyAxMDA2NDQKK2luZGV4IGMxYjZkNGJhMGYuLmQ3YWY5ZWJjYmMgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCiBAQCAtMjA1NCw2ICsyMDU0LDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKQEAgLTY1LDUgKzY1LDUgQEAKICAgICAgICBpZiAoX19nbGliY191bmxpa2VseSAoR0xSTyhkbF9kZWJ1Z19tYXNrKSAmIERMX0RFQlVHX0xJQlMpKQogIAlfZGxfZGVidWdfcHJpbnRmICgiXG4iKTsKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKaW5kZXggZTVlZjM0MS4uMmNlMjQwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxNTc4ZjUyNjQ3ZWM4ODA0MTg2ZDE5NDRkNGNkMjA5NTEzMmVmYzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MmYyZTkxMGVjMGUyZGU2YTllMmIwMDc4MjViZGRmYzU4NTA1NzVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTA6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8yNl0gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAorU3ViamVjdDogW1BBVENIIDAyLzI1XSBuYXRpdmVzZGstZ2xpYmM6IEZpeCBidWZmZXIgb3ZlcnJ1biB3aXRoIGEgcmVsb2NhdGVkCiAgU0RLCiAKIFdoZW4gbGQtbGludXgtKi5zby4yIGlzIHJlbG9jYXRlZCB0byBhIHBhdGggdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUKQEAgLTIyLDcgKzIyLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IGY1MDNkYmMuLjNhM2QxMTIgMTAwNjQ0CitpbmRleCBkN2FmOWViY2JjLi4xOWMxZGI5OTQ4IDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwogQEAgLTE3NTMsNyArMTc1MywxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKQEAgLTQ2LDUgKzQ2LDUgQEAKICAgICAgewogICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCmluZGV4IDllMjA3ZTQuLjM5N2U4YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZTUzOTY4ZDYxODA0YjZiYWIzMmVjNmUxM2NjMGIzY2Q1NzIxNDc5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDkwYTBlYjRkYTFhZjcyNmVhNWQ2OGUzZWZjMGQxOGJhOTRjNDA1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUxOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMjZdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKK1N1YmplY3Q6IFtQQVRDSCAwMy8yNV0gbmF0aXZlc2RrLWdsaWJjOiBSYWlzZSB0aGUgc2l6ZSBvZiBhcnJheXMgY29udGFpbmluZyBkbAogIHBhdGhzCiAKIFRoaXMgcGF0Y2ggcHV0cyB0aGUgZHluYW1pYyBsb2FkZXIgcGF0aCBpbiB0aGUgYmluYXJpZXMsIFNZU1RFTV9ESVJTIHN0cmluZ3MKQEAgLTI2LDEwICsyNiwxMCBAQAogIDcgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtY2FjaGUuYyBiL2VsZi9kbC1jYWNoZS5jCi1pbmRleCBjZmEzMzVlLi5kYWExMmVjIDEwMDY0NAoraW5kZXggZTk2MzJkYTBiMy4uNGRlNTI5ZDJjZiAxMDA2NDQKIC0tLSBhL2VsZi9kbC1jYWNoZS5jCiArKysgYi9lbGYvZGwtY2FjaGUuYwotQEAgLTEzMiw2ICsxMzIsMTAgQEAgZG8JCQkJCQkJCQkgICAgICBcCitAQCAtMTMzLDYgKzEzMywxMCBAQCBkbwkJCQkJCQkJCSAgICAgIFwKICB3aGlsZSAoMCkKICAKICAKQEAgLTQxLDcgKzQxLDcgQEAKICBpbnRlcm5hbF9mdW5jdGlvbgogIF9kbF9jYWNoZV9saWJjbXAgKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMikKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggM2EzZDExMi4uYTE0MTBlNCAxMDA2NDQKK2luZGV4IDE5YzFkYjk5NDguLjcwYzI1OWI0MDAgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCiBAQCAtMTA2LDggKzEwNiw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87CkBAIC01Niw3ICs1Niw3IEBACiAgICBTWVNURU1fRElSU19MRU4KICB9OwogZGlmZiAtLWdpdCBhL2VsZi9pbnRlcnAuYyBiL2VsZi9pbnRlcnAuYwotaW5kZXggOTQ0ODgwMi4uZTdlOGM3MCAxMDA2NDQKK2luZGV4IGI2ZThmMDQ0NDQuLjQ3YzIwNDE1YmMgMTAwNjQ0CiAtLS0gYS9lbGYvaW50ZXJwLmMKICsrKyBiL2VsZi9pbnRlcnAuYwogQEAgLTE4LDUgKzE4LDUgQEAKQEAgLTY3LDcgKzY3LDcgQEAKICtjb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQogICAgPSBSVU5USU1FX0xJTktFUjsKIGRpZmYgLS1naXQgYS9lbGYvbGRjb25maWcuYyBiL2VsZi9sZGNvbmZpZy5jCi1pbmRleCA0NjdjYTgyLi42MzFhMmE5IDEwMDY0NAoraW5kZXggOTljYWY5ZTliYi4uMzZlYTVkZjVmMSAxMDA2NDQKIC0tLSBhL2VsZi9sZGNvbmZpZy5jCiArKysgYi9lbGYvbGRjb25maWcuYwogQEAgLTE2OCw2ICsxNjgsOSBAQCBzdGF0aWMgc3RydWN0IGFyZ3AgYXJncCA9CkBAIC04MSwxOCArODEsMTggQEAKICAgICBhIHBsYXRmb3JtLiAgKi8KICBzdGF0aWMgaW50CiBkaWZmIC0tZ2l0IGEvZWxmL3J0bGQuYyBiL2VsZi9ydGxkLmMKLWluZGV4IDRlYzI1ZDcuLmUxNTljMTIgMTAwNjQ0CitpbmRleCA2NTY0N2ZiMWM4Li5jZDgzODFjYjMzIDEwMDY0NAogLS0tIGEvZWxmL3J0bGQuYwogKysrIGIvZWxmL3J0bGQuYwotQEAgLTk5LDYgKzk5LDcgQEAgdWludHB0cl90IF9fcG9pbnRlcl9jaGtfZ3VhcmRfbG9jYWwKLSBzdHJvbmdfYWxpYXMgKF9fcG9pbnRlcl9jaGtfZ3VhcmRfbG9jYWwsIF9fcG9pbnRlcl9jaGtfZ3VhcmQpCi0gI2VuZGlmCi0gCitAQCAtMTI4LDYgKzEyOCw3IEBAIGRzb19uYW1lX3ZhbGlkX2Zvcl9zdWlkIChjb25zdCBjaGFyICpwKQorICAgICB9CisgICByZXR1cm4gKnAgIT0gJ1wwJzsKKyB9CiArZXh0ZXJuIGNvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKTsKICAKLSAvKiBMaXN0IG9mIGF1ZGl0aW5nIERTT3MuICAqLwotIHN0YXRpYyBzdHJ1Y3QgYXVkaXRfbGlzdAotQEAgLTg1NCwxMiArODU1LDEyIEBAIG9mIHRoaXMgaGVscGVyIHByb2dyYW07IGNoYW5jZXMgYXJlIHlvdSBkaWQgbm90IGludGVuZCB0byBydW4gdGhpcyBwcm9ncmFtLlxuXAorIC8qIExEX0FVRElUIHZhcmlhYmxlIGNvbnRlbnRzLiAgTXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRoZQorICAgIGF1ZGl0X2xpc3QgYmVsb3cuICAqLworQEAgLTk5OSwxMiArMTAwMCwxMiBAQCBvZiB0aGlzIGhlbHBlciBwcm9ncmFtOyBjaGFuY2VzIGFyZSB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcnVuIHRoaXMgcHJvZ3JhbS5cblwKICAgIC0tbGlzdCAgICAgICAgICAgICAgICBsaXN0IGFsbCBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGFyZSByZXNvbHZlZFxuXAogICAgLS12ZXJpZnkgICAgICAgICAgICAgIHZlcmlmeSB0aGF0IGdpdmVuIG9iamVjdCByZWFsbHkgaXMgYSBkeW5hbWljYWxseSBsaW5rZWRcblwKICAJCQlvYmplY3Qgd2UgY2FuIGhhbmRsZVxuXApAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgKytfZGxfc2tpcF9hcmdzOwogICAgICAgIC0tX2RsX2FyZ2M7CiBkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY29uZi5jIGIvaWNvbnYvZ2NvbnZfY29uZi5jCi1pbmRleCBlMjM1MTg4Li41NjlmNzJlIDEwMDY0NAoraW5kZXggNWFhMDU1ZGU2ZS4uYjlhMTRiOWJkMyAxMDA2NDQKIC0tLSBhL2ljb252L2djb252X2NvbmYuYwogKysrIGIvaWNvbnYvZ2NvbnZfY29uZi5jCiBAQCAtMzYsNyArMzYsNyBAQApAQCAtMTIxLDcgKzEyMSw3IEBACiAgLyogVGhlIHBhdGggZWxlbWVudHMsIGFzIGRldGVybWluZWQgYnkgdGhlIF9fZ2NvbnZfZ2V0X3BhdGggZnVuY3Rpb24uCiAgICAgQWxsIHBhdGggZWxlbWVudHMgZW5kIGluIGEgc2xhc2guICAqLwogZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKLWluZGV4IGViMmY5MDAuLjUwNTgwNGUgMTAwNjQ0CitpbmRleCAxZjBiOGY2MjlkLi5hY2JlNjgzOTlkIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKICsrKyBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCiBAQCAtMjcsMTAgKzI3LDYgQEAKQEAgLTEzNiw1ICsxMzYsNSBAQAogICMgZGVmaW5lIGFkZF9zeXN0ZW1fZGlyKGRpcikgYWRkX2RpciAoZGlyKQogICNlbmRpZgogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCmluZGV4IGI5ODFmN2IuLjhkYjQ3YmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCkBAIC0xLDEyICsxLDE0IEBACi1Gcm9tIDBiOTVmMzQyMDdmZmVkM2FhNTNmYTk0OTY2MmJmYmNjYzdjODY0YTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhmZTFiNTYxODBjMzBkMjM3Y2MyYWI5YTVhOWM5N2EwMzExZjQxZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozNTozNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA0LzI2XSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKK1N1YmplY3Q6IFtQQVRDSCAwNC8yNV0gbmF0aXZlc2RrLWdsaWJjOiBBbGxvdyA2NCBiaXQgYXRvbWljcyBmb3IgeDg2CiAKIFRoZSBmaXggY29uc2lzdCBvZiBhbGxvd2luZyA2NGJpdCBhdG9taWMgb3BzIGZvciB4ODYuCiBUaGlzIHNob3VsZCBiZSBzYWZlIGZvciBpNTg2IGFuZCBuZXdlciBDUFVzLgogSXQgYWxzbyBtYWtlcyB0aGUgc3luY2hyb25pemF0aW9uIG1vcmUgZWZmaWNpZW50LgogCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCiBTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgpAQCAtMTUsNyArMTcsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmggYi9zeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaAotaW5kZXggY2U2MmIzMy4uNGZlNDRlYSAxMDA2NDQKK2luZGV4IDBlMjQyMDA2MTcuLjE1MzJmNTJkZWMgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaAogKysrIGIvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmgKIEBAIC01NCw3ICs1NCw3IEBAIHR5cGVkZWYgdWludG1heF90IHVhdG9taWNfbWF4X3Q7CkBAIC0yNSw4ICsyNyw4IEBACiAtI2RlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MgMAogKyNkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTIDEKICAjZGVmaW5lIFVTRV9BVE9NSUNfQ09NUElMRVJfQlVJTFRJTlMgMAotIAorICNkZWZpbmUgQVRPTUlDX0VYQ0hBTkdFX1VTRVNfQ0FTIDAKICAKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggZWU1MDAwMC4uOTU2YjJhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3N2E3NDk1Mzc2YzdkMGM1NTA3YzBlYzk5YmYxNTY4MTUwMzM5ZWY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiOWVkY2M4NDU2NDE5NTZiNzI4NmM2MGM4MzNmMDVhOWY3MGNmYWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8yNl0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgorU3ViamVjdDogW1BBVENIIDA1LzI1XSBmc2wgZTUwMC9lNTUwMC9lNjUwMC82MDNlIGZzcXJ0IGltcGxlbWVudGF0aW9uCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogRWRtYXIgV2llbnNrb3NraSA8ZWRtYXJAZnJlZXNjYWxlLmNvbT4KQEAgLTQ5LDcgKzQ5LDcgQEAKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwogQEAgLTAsMCArMSwxMzQgQEAKQEAgLTE4OSw3ICsxODksNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC0yOTYsNyArMjk2LDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCiBAQCAtMCwwICsxLDEzNCBAQApAQCAtNDM2LDcgKzQzNiw3IEBACiArfQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogQEAgLTAsMCArMSwxMDEgQEAKQEAgLTU0Myw3ICs1NDMsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0wLDAgKzEsMTM0IEBACkBAIC02ODMsNyArNjgzLDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMCwwICsxLDEwMSBAQApAQCAtNzkwLDcgKzc5MCw3IEBACiArfQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MWU1MTZkCitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTAsMCArMSwxMzQgQEAKQEAgLTkzMCw3ICs5MzAsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNmZhMDY3CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC0xMDM3LDcgKzEwMzcsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0wLDAgKzEsMTM0IEBACkBAIC0xMTc3LDcgKzExNzcsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNmZhMDY3CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC0xMjg0LDcgKzEyODQsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0wLDAgKzEsMTM0IEBACkBAIC0xNDI0LDcgKzE0MjQsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNmZhMDY3CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC0xNTMxLDE0ICsxNTMxLDE0IEBACiArfQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjEwM2I0ZAoraW5kZXggMDAwMDAwMDAwMC4uYjEwM2I0ZGVhNQogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwogQEAgLTAsMCArMSBAQAogK3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjRkYjE3ZgoraW5kZXggMDAwMDAwMDAwMC4uNjRkYjE3ZmFkYQogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCiBAQCAtMCwwICsxLDIgQEAKQEAgLTE1NDYsMzkgKzE1NDYsMzkgQEAKICtwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjdlYWM1ZmMKK2luZGV4IDAwMDAwMDAwMDAuLjdlYWM1ZmNmMDIKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwogQEAgLTAsMCArMSBAQAogK3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjY0YjJhNworaW5kZXggMDAwMDAwMDAwMC4uMjY0YjJhNzcwMAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYTI1OTM0NAoraW5kZXggMDAwMDAwMDAwMC4uYTI1OTM0NDY3YgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYTdiYzg1NAoraW5kZXggMDAwMDAwMDAwMC4uYTdiYzg1NGJlOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDRmZjhjYworaW5kZXggMDAwMDAwMDAwMC4uMDRmZjhjYzE4MQogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKaW5kZXggOTA4OGQyOS4uYzc0ZmVhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1MjBjYjllNzQ2YWY2MzdjZjAxZmVhMzg1YjdmNGVlNGFhZGJkZmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzMjQyMDI0ODhhMWMyNDM5YmUzNDU3NDU3MjJmNWNiMDRjMGUwODQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTE6MjIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8yNl0gcmVhZGxpYjogQWRkIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyB0byBrbm93bgorU3ViamVjdDogW1BBVENIIDA2LzI1XSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duCiAgbmFtZXMKIAogVGhpcyBib2x0cyBpbiBhIGhvb2sgZm9yIE9FIHRvIHBhc3MgaXRzIG93biB2ZXJzaW9uIG9mIGludGVycHJldGVyCkBAIC0xNyw3ICsxNyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9lbGYvcmVhZGxpYi5jIGIvZWxmL3JlYWRsaWIuYwotaW5kZXggOGE2NmZmZS4uMDhkNTZmYyAxMDA2NDQKK2luZGV4IGQyNzhhMTg5YjIuLmE4NGNiODUxNTggMTAwNjQ0CiAtLS0gYS9lbGYvcmVhZGxpYi5jCiArKysgYi9lbGYvcmVhZGxpYi5jCiBAQCAtNTEsNiArNTEsNyBAQCBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGludGVycHJldGVyc1tdID0KQEAgLTI5LDUgKzI5LDUgQEAKICAKICBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGtub3duX2xpYnNbXSA9CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCmluZGV4IGYzM2RlZmUuLmI2NDMyNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNjQxMzAyNjI3ODdkNTRlMmU2Njk1YWU0ZWQ4NzgzYmZlYzE0ZmZlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2YwMGJmOWRlODEyODE3MWU3OWEwMTlkZTgwOWUzNWYzYWVlZDI4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE1OjA3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMjZdIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKK1N1YmplY3Q6IFtQQVRDSCAwNy8yNV0gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwogCiBvbiBwcGMgZml4ZXMgdGhlIGVycm9ycyBsaWtlIGJlbG93CiB8IC4vLmxpYnMvbGlicHVsc2Vjb3JlLTEuMS5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKQEAgLTM2LDcgKzM2LDcgQEAKICAxMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi4xNzk1ZmQ2IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKIEBAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTYwLDcgKzYwLDcgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3Li5hOTE3ZjMxIDEwMDY0NAoraW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwogQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC04NCw3ICs4NCw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQuLmZjNGE3NDkgMTAwNjQ0CitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKIEBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCkBAIC05Myw3ICs5Myw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjcuLjlkMTc1MTIgMTAwNjQ0CitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi5mYzRhNzQ5IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKQEAgLTExMSw3ICsxMTEsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2Ny4uOWQxNzUxMiAxMDA2NDQKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQpAQCAtMTIwLDcgKzEyMCw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi5mYzRhNzQ5IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKQEAgLTEyOSw3ICsxMjksNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2Ny4uOWQxNzUxMiAxMDA2NDQKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQpAQCAtMTM4LDcgKzEzOCw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi4xNzk1ZmQ2IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwpAQCAtMTYyLDcgKzE2Miw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3Li5hOTE3ZjMxIDEwMDY0NAoraW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTE4Niw3ICsxODYsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZC4uZmM0YTc0OSAxMDA2NDQKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCkBAIC0xOTUsNyArMTk1LDcgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjcuLjlkMTc1MTIgMTAwNjQ0CitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKQEAgLTIwNCw1ICsyMDQsNSBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCmluZGV4IDI2ZjY1YzUuLjNhZWVjNTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNWFmYjAxNDdlM2U0OWMzYjQ3NDQwNDUyNDAxNGVmZTUxYjJiY2E1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmFiZTMxMWRlY2E5ZWUyNzMwMjc4ZjEzYjA2MWI5MTRiNTI4NmRjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE2OjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjZdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKK1N1YmplY3Q6IFtQQVRDSCAwOC8yNV0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAogIG91dCBfX3Nsb3cgdmVyc2lvbnMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC0yMyw3ICsyMyw3IEBACiAgMTIgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLWluZGV4IDE3OTVmZDYuLmRhYTgzZjMgMTAwNjQ0CitpbmRleCAxNzk1ZmQ2YzNlLi5kYWE4M2YzZmU4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwogQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CkBAIC01OCw3ICs1OCw3IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1pbmRleCBhOTE3ZjMxLi5iODEyY2YxIDEwMDY0NAoraW5kZXggYTkxN2YzMTNhYi4uYjgxMmNmMTcwNSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwogQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTgyLDcgKzgyLDcgQEAKICt9CiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotaW5kZXggZmM0YTc0OS4uNzAzOGE3MCAxMDA2NDQKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwogQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTEyMSw3ICsxMjEsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIuLjEwZGUxZjAgMTAwNjQ0CitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwpAQCAtMTUxLDcgKzE1MSw3IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDkuLjcwMzhhNzAgMTAwNjQ0CitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCiBAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwpAQCAtMTkwLDcgKzE5MCw3IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIuLjEwZGUxZjAgMTAwNjQ0CitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTIyMCw3ICsyMjAsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5Li4xYzM0MjQ0IDEwMDY0NAoraW5kZXggZmM0YTc0OTkwZS4uMWMzNDI0NGJkOCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCkBAIC0yMzcsNyArMjM3LDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMi4uODEyNjUzNSAxMDA2NDQKK2luZGV4IDlkMTc1MTIyYTguLjgxMjY1MzU1OGYgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKQEAgLTI1NCw3ICsyNTQsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2Li4xM2E4MTk3IDEwMDY0NAoraW5kZXggMTc5NWZkNmMzZS4uMTNhODE5NzNlMyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CkBAIC0yODksNyArMjg5LDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggYTkxN2YzMS4uZmFlMmQ4MSAxMDA2NDQKK2luZGV4IGE5MTdmMzEzYWIuLmZhZTJkODEyMTAgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTMxNCw3ICszMTQsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5Li43MDM4YTcwIDEwMDY0NAoraW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTM1Myw3ICszNTMsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyLi4xMGRlMWYwIDEwMDY0NAoraW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC0zODMsNSArMzgzLDUgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCmluZGV4IGQ0MTZhY2QuLjdkNWMyZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZGRkNTFiYjRlMDA1NDMyY2IzYzBmOGYzMzgyMjk1NDQwOGE5ZmVlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTNiNWQ2YmVkMTk5MzkwMzkwMzFjNDViNzc3ZDI5NjE5ZGIwNjE4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjIwOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMjZdIFF1b3RlIGZyb20gYnVnIDE0NDMgd2hpY2ggZXhwbGFpbnMgd2hhdCB0aGUgcGF0Y2ggZG9lcworU3ViamVjdDogW1BBVENIIDA5LzI1XSBRdW90ZSBmcm9tIGJ1ZyAxNDQzIHdoaWNoIGV4cGxhaW5zIHdoYXQgdGhlIHBhdGNoIGRvZXMKICA6CiAKICAgV2UgYnVpbGQgc29tZSByYW5kb20gcHJvZ3JhbSBhbmQgbGluayBpdCB3aXRoIC1sdXN0LiAgV2hlbiB3ZSBydW4gaXQsCkBAIC00NSwxMCArNDUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotaW5kZXggNjBlZWUwMC4uN2Q1NGQ1ZSAxMDA2NDQKK2luZGV4IDcwNTNlYWQxNmUuLjBiMWUxNzE2YjAgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKICsrKyBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotQEAgLTQ5OSw3ICs0OTksNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAorQEAgLTUwMCw3ICs1MDAsNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAogIAogIAljYXNlIFJfQVJNX1RMU19EVFBPRkYzMjoKICAJICBpZiAoc3ltICE9IE5VTEwpCkBAIC01OCw1ICs1OCw1IEBACiAgCiAgCWNhc2UgUl9BUk1fVExTX1RQT0ZGMzI6CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKaW5kZXggMjc2ZjFmYS4uNzI3NWMzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQ3ZTc0NjcwODI1MzMwZjU0MjFhNTVmNWFhMmExY2U2ZmRhN2Q3ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFhNmUwZjRlZTg1ODRiMDQyMjYxNTZkZjFhM2RlM2U0NjdmMGVmNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+CiBEYXRlOiBXZWQsIDE5IERlYyAyMDEyIDA0OjM5OjU3IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMjZdIGVnbGliYzogcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMgaW4gJHtTfQorU3ViamVjdDogW1BBVENIIDEwLzI1XSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KIAogbGlibS1lcnItdGFiLnBsIHdpbGwgcGFyc2UgYWxsIHRoZSBmaWxlcyBuYW1lZCAibGlibS10ZXN0LXVscHMiCiBpbiB0aGUgZ2l2ZW4gZGlyIHJlY3Vyc2l2ZWx5LiBUbyBhdm9pZCBwYXJzaW5nIHRoZSBvbmUgaW4KQEAgLTE4LDcgKzE4LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9tYW51YWwvTWFrZWZpbGUgYi9tYW51YWwvTWFrZWZpbGUKLWluZGV4IGYyZjY5NGYuLmUwNjI4MzMgMTAwNjQ0CitpbmRleCA0ZWQ2M2E4ZWYzLi5lODk5MTllYjE5IDEwMDY0NAogLS0tIGEvbWFudWFsL01ha2VmaWxlCiArKysgYi9tYW51YWwvTWFrZWZpbGUKIEBAIC0xMDUsNyArMTA1LDggQEAgJChvYmpwZngpbGlibS1lcnIudGV4aTogJChvYmpwZngpc3RhbXAtbGlibS1lcnIKQEAgLTMyLDUgKzMyLDUgQEAKICAJdG91Y2ggJEAKICAKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKaW5kZXggMDk2ZGFiNS4uODRmMmNhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBkNmUyMDc2NTcxMjYzZTQ1YzQ4ODg5ODk2ZDNkOTRmZjU3NmRmMmJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5YjJhZjZjYmY2OGQzMzUzZDcyNTE5ZTdmNmM0NmJlY2I3YmQxZDBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjQ6NDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8yNl0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAorU3ViamVjdDogW1BBVENIIDExLzI1XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCiAgb3V0IF9fc2xvdyB2ZXJzaW9ucwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTE0LDcgKzE0LDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDFjMzQyNDQuLjcwMzhhNzAgMTAwNjQ0CitpbmRleCAxYzM0MjQ0YmQ4Li43MDM4YTcwYjQ3IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCiBAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwpAQCAtNDAsNyArNDAsNyBAQAogICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA4MTI2NTM1Li4xMGRlMWYwIDEwMDY0NAoraW5kZXggODEyNjUzNTU4Zi4uMTBkZTFmMGNjMyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC01Nyw1ICs1Nyw1IEBACiAgI2VuZGlmCiAgewogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1NYWtlLWxkLXZlcnNpb24tb3V0cHV0LW1hdGNoaW5nLWdyb2stZ29sZC1zLW91dHB1dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLU1ha2UtbGQtdmVyc2lvbi1vdXRwdXQtbWF0Y2hpbmctZ3Jvay1nb2xkLXMtb3V0cHV0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzI4YzYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLU1ha2UtbGQtdmVyc2lvbi1vdXRwdXQtbWF0Y2hpbmctZ3Jvay1nb2xkLXMtb3V0cHV0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSBjMDk3NGM3NDZlMDI2NjUwYmVmNWQxOTQwZWIzZjUxOTc2NWM3N2FmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjU6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8yNl0gTWFrZSBsZCAtLXZlcnNpb24gb3V0cHV0IG1hdGNoaW5nIGdyb2sgZ29sZCdzIG91dHB1dAotCi1hZGFwdGVkIGZyb20gZnJvbSB1cHN0cmVhbSBicmFuY2ggcm9sYW5kL2dvbGQtdnMtbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUgICAgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA1Y2YzMjMwLi4zOTFmMjlkIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC00NTU1LDcgKzQ1NTUsNyBAQCBlbHNlCi0gICAjIEZvdW5kIGl0LCBub3cgY2hlY2sgdGhlIHZlcnNpb24uCi0gICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHZlcnNpb24gb2YgJExEIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyB2ZXJzaW9uIG9mICRMRC4uLiAiID4mNjsgfQotLSAgYWNfcHJvZ192ZXJzaW9uPWAkTEQgLS12ZXJzaW9uIDI+JjEgfCBzZWQgLW4gJ3MvXi4qR05VIGxkLiogXChbMC05XVswLTldKlwuWzAtOS5dKlwpLiokL1wxL3AnYAotKyAgYWNfcHJvZ192ZXJzaW9uPWAkTEQgLS12ZXJzaW9uIDI+JjEgfCBzZWQgLW4gJ3MvXi4qR05VIFtCYmludXRpbHNkXVteLl0qIFwoWzAtOV1bMC05XSpcLlswLTkuXSpcKS4qJC9cMS9wJ2AKLSAgIGNhc2UgJGFjX3Byb2dfdmVyc2lvbiBpbgotICAgICAnJykgYWNfcHJvZ192ZXJzaW9uPSJ2LiA/Lj8/LCBiYWQiOyBhY192ZXJjX2ZhaWw9eWVzOzsKLSAgICAgMi4xWzAtOV1bMC05XSp8Mi4yWzItOV0qfDIuWzMtOV1bMC05XSp8WzMtOV0uKnxbMS05XVswLTldKikKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGQ3MTlmYWQuLjViNTg3N2MgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk5MCw3ICs5OTAsNyBAQCBBQ19DSEVDS19QUk9HX1ZFUihBUywgJEFTLCAtLXZlcnNpb24sCi0gCQkgIFsyLjFbMC05XVswLTldKnwyLjJbMi05XSp8Mi5bMy05XVswLTldKnxbMy05XS4qfFsxLTldWzAtOV0qXSwKLSAJCSAgQVM9OiBjcml0aWNfbWlzc2luZz0iJGNyaXRpY19taXNzaW5nIGFzIikKLSBBQ19DSEVDS19QUk9HX1ZFUihMRCwgJExELCAtLXZlcnNpb24sCi0tCQkgIFtHTlUgbGQuKiBcKFswLTldWzAtOV0qXC5bMC05Ll0qXCldLAotKwkJICBbR05VIFtCYmludXRpbHNkXVteLl0qIFwoWzAtOV1bMC05XSpcLlswLTkuXSpcKV0sCi0gCQkgIFsyLjFbMC05XVswLTldKnwyLjJbMi05XSp8Mi5bMy05XVswLTldKnxbMy05XS4qfFsxLTldWzAtOV0qXSwKLSAJCSAgTEQ9OiBjcml0aWNfbWlzc2luZz0iJGNyaXRpY19taXNzaW5nIGxkIikKLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZjZiMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZmZkM2M1YTA0ZDhmMmYyNmZlYTcxZmVkNGNlNDFlODhiNmY1MTA4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI3OjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMjVdIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQorICRsaWJjX2N2X3Jvb3RzYmluZGlyCisKK1Vwc3RyZWFtLVN0YXR1czpQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoaWV1IENyYXBldCA8TWF0dGhpZXUuQ3JhcGV0QGluZ2VuaWNvLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2dudS9jb25maWd1cmUgICAgfCAyICstCisgc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCitpbmRleCA3MTI0M2FkMGM2Li5mNTc4MTg3NTc2IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKK0BAIC0zMiw2ICszMiw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCisgICBlbHNlCisgICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgorICAgIGZpCistICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisrICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorICAgOzsKKyBlc2FjCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCitpbmRleCA2MzRmZTRkZTJhLi4zZGIxNjk3ZjRmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKK0BAIC0yMSw2ICsyMSw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCisgICBlbHNlCisgICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgorICAgIGZpCistICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisrICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorICAgOzsKKyBlc2FjCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OWZlNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDA0OWNjZTgyZjM1ZTBkODY0ZDk4MDc1YjgzODg4ZGJiYTRkNjhhZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAorU3ViamVjdDogW1BBVENIIDEzLzI1XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQorCitIZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgorYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKKworICAgICAgICAqIGljb252L2djb252X2NoYXJzZXQuaCAoc3RyaXApOgorICAgICAgICBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpY29udi9nY29udl9jaGFyc2V0LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pY29udi9nY29udl9jaGFyc2V0LmggYi9pY29udi9nY29udl9jaGFyc2V0LmgKK2luZGV4IDE4ZDhiZDZhZTcuLmViNzI5ZGE1ZDMgMTAwNjQ0CistLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKKysrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgCistc3RhdGljIHZvaWQKKytzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBzdHJpcCAoY2hhciAqd3AsIGNvbnN0IGNoYXIgKnMpCisgeworICAgaW50IHNsYXNoX2NvdW50ID0gMDsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzgxYzcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDJhMTJlYWRmZDc5NDBiNmIwOTEzZGU4ZTk1ZDg1MTI1NGNjZTc5NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzI2XSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKLSAkbGliY19jdl9yb290c2JpbmRpcgotCi1VcHN0cmVhbS1TdGF0dXM6UGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9nbnUvY29uZmlndXJlICAgIHwgMiArLQotIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZSBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotaW5kZXggNzEyNDNhZC4uZjU3ODE4NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCi1AQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgotICAgZWxzZQotICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKLSAgICBmaQotLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSAgIDs7Ci0gZXNhYwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotaW5kZXggNjM0ZmU0ZC4uM2RiMTY5NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCi1AQCAtMjEsNiArMjEsNiBAQCBjYXNlICIkcHJlZml4IiBpbgotICAgZWxzZQotICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKLSAgICBmaQotLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSAgIDs7Ci0gZXNhYwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIzZTEwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gZWM0Zjc3NjNiMzA2MDNiN2JhMGI3MGJkNzc1MGUzNGQ0NDI4MjFiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI4OjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjZdIEFkZCB1bnVzZWQgYXR0cmlidXRlCi0KLUhlbHBzIGluIGF2b2lkaW5nIGdjYyB3YXJuaW5nIHdoZW4gaGVhZGVyIGlzIGlzIGluY2x1ZGVkIGluCi1hIHNvdXJjZSBmaWxlIHdoaWNoIGRvZXMgbm90IHVzZSBib3RoIGZ1bmN0aW9ucwotCi0gICAgICAgICogaWNvbnYvZ2NvbnZfY2hhcnNldC5oIChzdHJpcCk6Ci0gICAgICAgIEFkZCB1bnVzZWQgYXR0cmlidXRlLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGljb252L2djb252X2NoYXJzZXQuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NoYXJzZXQuaCBiL2ljb252L2djb252X2NoYXJzZXQuaAotaW5kZXggOTVjYmNlNy4uMTkxYTBkZCAxMDA2NDQKLS0tLSBhL2ljb252L2djb252X2NoYXJzZXQuaAotKysrIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSAKLS1zdGF0aWMgdm9pZAotK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIHN0cmlwIChjaGFyICp3cCwgY29uc3QgY2hhciAqcykKLSB7Ci0gICBpbnQgc2xhc2hfY291bnQgPSAwOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGM3MGUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKQEAgLTAsMCArMSwyNjMgQEAKK0Zyb20gM2I5MDRiZWU4MWExY2ZlODFlM2Y0MzdiNWYzMjk2ZWZkNTRhNTFhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMxOjA2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTQvMjVdICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKKworSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgorYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKK2ZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgd2l0aCB0aGUgcGF0aCBpdCBpcyBjb25maWd1cmVkIGludG8uCisKK1RoZSBjaGFuZ2UgaXMgdG8gdXNlIGEgbW9yZSBlbGFib3JhdGVkIHN0cmluZyB0byBncmVwIGZvci4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIEVzcXVpdmVsIDxiZW5qYW1pbi5lc3F1aXZlbEBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hcm0vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlICAgIHwgOCArKysrLS0tLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCitpbmRleCA1YmQzNTVhNjkxLi4zYmM1NTM3YmMwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQorQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fQUFSQ0g2NEVCX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAiaXNfYWFyY2g2NF9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X2FhcmNoNjRfYmU9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworaW5kZXggNzg1MWRkNGRhYy4uNmU5MjM4MTcxZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKK0BAIC0xMCw4ICsxMCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCisgIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KKyBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAorICAgW2xpYmNfY3ZfYWFyY2g2NF9iZV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKGlzX2FhcmNoNjRfYmUsWyNpZmRlZiBfX0FBUkNINjRFQl9fCisrICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMsIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfYWFyY2g2NF9iZSA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZSBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQoraW5kZXggNDMxZTg0M2IyYi4uZTE1MjQ2MTEzOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCitAQCAtMTUxLDEyICsxNTEsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19BUk1fUENTX1ZGUAorLQkJICAgICAgeWVzCisrCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKKyAJCSAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9hcm1fcGNzX3ZmcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzCisgZWxzZQorICAgbGliY19jdl9hcm1fcGNzX3ZmcD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworaW5kZXggOTBjZGQ2OWM3NS4uMDVhMjYyYmEwMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCitAQCAtMTUsOCArMTUsOCBAQCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCisgIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIEFSTSBoYXJkLWZsb2F0IEFCSV0sCisgICBbbGliY19jdl9hcm1fcGNzX3ZmcF0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQVJNX1BDU19WRlAKKy0JCSAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUCh1c2VfYXJtX3Bjc192ZnAsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCisrCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKKyAJCSAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X2FybV9wY3NfdmZwPXllcywgbGliY19jdl9hcm1fcGNzX3ZmcD1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfYXJtX3Bjc192ZnAgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQoraW5kZXggNGUxMzI0OGMwMy4uZjE0YWY5NTJkMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKK0BAIC0xNDMsMTEgKzE0MywxMSBAQCBlbHNlCisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIGRubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWYKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKK2luZGV4IGJjYmRhZmZkOWYuLmFkMzA1N2Y0Y2MgMTAwNjQ0CistLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCitAQCAtNiw5ICs2LDkgQEAgZG5sIHBvc2l0aW9uIGluZGVwZW5kZW50IHdheS4KKyBkbmwgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQorIAorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAorLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCisrICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKKyBpZiB0ZXN0IHgkbGliY19jdl9taXBzX25hbjIwMDggPSB4eWVzOyB0aGVuCisgICBBQ19ERUZJTkUoSEFWRV9NSVBTX05BTjIwMDgpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQoraW5kZXggMTRjOGEzYTAxNC4uZGRlMzgxNGVmMiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQorQEAgLTE0MiwxMiArMTQyLDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19uaW9zMl9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbmlvczJfYmU9eWVzCisgZWxzZQorICAgbGliY19jdl9uaW9zMl9iZT1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKK2luZGV4IGYwNWY0MzgwMmIuLmRjODYzOTkwMmQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKK0BAIC00LDggKzQsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgorICMgTmlvcyBJSSBiaWcgZW5kaWFuIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgorIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCisgICBbbGliY19jdl9uaW9zMl9iZV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUChpc19uaW9zMl9iZSxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCisrICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X25pb3MyX2JlPXllcywgbGliY19jdl9uaW9zMl9iZT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfbmlvczJfYmUgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCitpbmRleCBhNTUxM2ZhZDQ4Li4yODNiMjkzZmYzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCitAQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyBkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKK2luZGV4IDkxNDdhYTQ1ODIuLjc4OThlMjQ3MzggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKK0BAIC0xMDUsOSArMTA1LDkgQEAgQUNfQ09NUElMRV9JRkVMU0UoCisgTElCQ19DT05GSUdfVkFSKFttaXBzLW1vZGUtc3dpdGNoXSxbJHtsaWJjX21pcHNfbW9kZV9zd2l0Y2h9XSkKKyAKKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKKy0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAorKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCisgCisgbGliY19taXBzX25hbj0KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKK2luZGV4IDRlN2ZjZjFkOTcuLjQ0YTljYjM3OTEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQorQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmIF9DQUxMX0VMRiA9PSAyCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfcHBjX2VsZnYyX2FiaSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vCitAQCAtMTg4LDEyICsxODgsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX0NBTExfRUxGCistICAgICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKKyAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19kZWZfY2FsbF9lbGYiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMKKyBlbHNlCisgICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworaW5kZXggZjljYmE2ZTE1ZC4uYjIxZjcyZjFlNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCitAQCAtNiw4ICs2LDggQEAgTElCQ19TTElCRElSX1JUTERESVIoW2xpYjY0XSwgW2xpYjY0XSkKKyAjIERlZmluZSBkZWZhdWx0LWFiaSBhY2NvcmRpbmcgdG8gY29tcGlsZXIgZmxhZ3MuCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBQb3dlclBDNjQgRUxGdjIgQUJJXSwKKyAgIFtsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmIF9DQUxMX0VMRiA9PSAyCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUCh1c2VfcHBjX2VsZnYyX2FiaSxbI2lmIF9DQUxMX0VMRiA9PSAyCisrICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMsIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmkgPSB5ZXM7IHRoZW4KK0BAIC0xOSw4ICsxOSw4IEBAIGVsc2UKKyAgICMgQ29tcGlsZXIgdGhhdCBkbyBub3Qgc3VwcG9ydCBFTEZ2MiBBQkkgZG9lcyBub3QgZGVmaW5lIF9DQUxMX0VMRgorICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGRlZmluZXMgX0NBTExfRUxGXSwKKyAgICAgW2xpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmXSwKKy0gICAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfQ0FMTF9FTEYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgIFtBQ19FR1JFUF9DUFAoaXNfZGVmX2NhbGxfZWxmLFsjaWZkZWYgX0NBTExfRUxGCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgIF0sIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcywgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8pXSkKKyAgIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmID0gbm87IHRoZW4KKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZmVmZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYjhjYjhjYjI0MmNiNzUxZDg4OGZlYjFhZGE1YzRkMGYwNWNiYzFkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMzOjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMjVdIHRpbWV6b25lOiByZS13cml0dGVuIHR6c2VsZWN0IGFzIHBvc2l4IHNoCisKK1RvIGF2b2lkIHRoZSBiYXNoIGRlcGVuZGVuY3kuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdGltZXpvbmUvTWFrZWZpbGUgICAgIHwgMiArLQorIHRpbWV6b25lL3R6c2VsZWN0LmtzaCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3RpbWV6b25lL01ha2VmaWxlIGIvdGltZXpvbmUvTWFrZWZpbGUKK2luZGV4IGQ2Y2M3YmEzNTcuLmU0ZWFkNmUxYTcgMTAwNjQ0CistLS0gYS90aW1lem9uZS9NYWtlZmlsZQorKysrIGIvdGltZXpvbmUvTWFrZWZpbGUKK0BAIC0xMjIsNyArMTIyLDcgQEAgJCh0ZXN0ZGF0YSkvWFQlOiB0ZXN0ZGF0YS9YVCUKKyAJY3AgJDwgJEAKKyAKKyAkKG9ianBmeCl0enNlbGVjdDogdHpzZWxlY3Qua3NoICQoY29tbW9uLW9ianBmeCljb25maWcubWFrZQorLQlzZWQgLWUgJ3N8L2Jpbi9iYXNofCQoQkFTSCl8JyBcCisrCXNlZCAtZSAnc3wvYmluL2Jhc2h8L2Jpbi9zaHwnIFwKKyAJICAgIC1lICdzfFRaRElSPVtefV0qfFRaRElSPSQoem9uZWRpcil8JyBcCisgCSAgICAtZSAnL1RaVkVSU0lPTj0vc3xzZWVfTWFrZWZpbGV8IiQodmVyc2lvbikifCcgXAorIAkgICAgLWUgJy9QS0dWRVJTSU9OPS9zfD0uKnw9IiQoUEtHVkVSU0lPTikifCcgXAorZGlmZiAtLWdpdCBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaCBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAoraW5kZXggZDJjM2E2ZDFkZC4uMDg5Njc5ZjMwNiAxMDA3NTUKKy0tLSBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaAorKysrIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCitAQCAtMzUsNyArMzUsNyBAQCBSRVBPUlRfQlVHU19UTz10ekBpYW5hLm9yZworIAorICMgU3BlY2lmeSBkZWZhdWx0IHZhbHVlcyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlmIHRoZXkgYXJlIHVuc2V0LgorIDogJHtBV0s9YXdrfQorLTogJHtUWkRJUj1gcHdkYH0KKys6ICR7VFpESVI9JChwd2QpfQorIAorICMgT3V0cHV0IG9uZSBhcmd1bWVudCBhcy1pcyB0byBzdGFuZGFyZCBvdXRwdXQuCisgIyBTYWZlciB0aGFuICdlY2hvJywgd2hpY2ggY2FuIG1pc2hhbmRsZSAnXCcgb3IgbGVhZGluZyAnLScuCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ0MjVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLUZyb20gMThkNjQ5NTFjYmI2OGQ4ZDc1ZThlZjM0N2NiZDBlMGE1YzE0NjA0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMxOjA2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMjZdICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKLQotSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgotYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKLWZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgd2l0aCB0aGUgcGF0aCBpdCBpcyBjb25maWd1cmVkIGludG8uCi0KLVRoZSBjaGFuZ2UgaXMgdG8gdXNlIGEgbW9yZSBlbGFib3JhdGVkIHN0cmluZyB0byBncmVwIGZvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEVzcXVpdmVsIDxiZW5qYW1pbi5lc3F1aXZlbEBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hcm0vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlICAgIHwgOCArKysrLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCi1pbmRleCA1YmQzNTVhLi4zYmM1NTM3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fQUFSQ0g2NEVCX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfYWFyY2g2NF9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X2FhcmNoNjRfYmU9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYwotaW5kZXggNzg1MWRkNC4uNmU5MjM4MSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLUBAIC0xMCw4ICsxMCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCi0gIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KLSBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAotICAgW2xpYmNfY3ZfYWFyY2g2NF9iZV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKGlzX2FhcmNoNjRfYmUsWyNpZmRlZiBfX0FBUkNINjRFQl9fCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMsIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfYWFyY2g2NF9iZSA9IHllczsgdGhlbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZSBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotaW5kZXggNDMxZTg0My4uZTE1MjQ2MSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCi1AQCAtMTUxLDEyICsxNTEsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX19BUk1fUENTX1ZGUAotLQkJICAgICAgeWVzCi0rCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKLSAJCSAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9hcm1fcGNzX3ZmcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzCi0gZWxzZQotICAgbGliY19jdl9hcm1fcGNzX3ZmcD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotaW5kZXggOTBjZGQ2OS4uMDVhMjYyYiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCi1AQCAtMTUsOCArMTUsOCBAQCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCi0gIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIEFSTSBoYXJkLWZsb2F0IEFCSV0sCi0gICBbbGliY19jdl9hcm1fcGNzX3ZmcF0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQVJNX1BDU19WRlAKLS0JCSAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUCh1c2VfYXJtX3Bjc192ZnAsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0rCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKLSAJCSAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X2FybV9wY3NfdmZwPXllcywgbGliY19jdl9hcm1fcGNzX3ZmcD1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfYXJtX3Bjc192ZnAgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQotaW5kZXggNGUxMzI0OC4uZjE0YWY5NSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLUBAIC0xNDMsMTEgKzE0MywxMSBAQCBlbHNlCi0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIGRubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWYKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKLWluZGV4IGJjYmRhZmYuLmFkMzA1N2YgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi1AQCAtNiw5ICs2LDkgQEAgZG5sIHBvc2l0aW9uIGluZGVwZW5kZW50IHdheS4KLSBkbmwgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQotIAotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAotLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCi0rICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKLSBpZiB0ZXN0IHgkbGliY19jdl9taXBzX25hbjIwMDggPSB4eWVzOyB0aGVuCi0gICBBQ19ERUZJTkUoSEFWRV9NSVBTX05BTjIwMDgpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotaW5kZXggMTRjOGEzYS4uZGRlMzgxNCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotQEAgLTE0MiwxMiArMTQyLDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19uaW9zMl9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbmlvczJfYmU9eWVzCi0gZWxzZQotICAgbGliY19jdl9uaW9zMl9iZT1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLWluZGV4IGYwNWY0MzguLmRjODYzOTkgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLUBAIC00LDggKzQsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotICMgTmlvcyBJSSBiaWcgZW5kaWFuIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgotIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCi0gICBbbGliY19jdl9uaW9zMl9iZV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUChpc19uaW9zMl9iZSxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X25pb3MyX2JlPXllcywgbGliY19jdl9uaW9zMl9iZT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfbmlvczJfYmUgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi1pbmRleCBhNTUxM2ZhLi4yODNiMjkzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi1AQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSBkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLWluZGV4IDkxNDdhYTQuLjc4OThlMjQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLUBAIC0xMDUsOSArMTA1LDkgQEAgQUNfQ09NUElMRV9JRkVMU0UoCi0gTElCQ19DT05GSUdfVkFSKFttaXBzLW1vZGUtc3dpdGNoXSxbJHtsaWJjX21pcHNfbW9kZV9zd2l0Y2h9XSkKLSAKLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKLS0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAotKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCi0gCi0gbGliY19taXBzX25hbj0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLWluZGV4IGFmMDY5NzAuLjI3YjhjMWIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmIF9DQUxMX0VMRiA9PSAyCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfcHBjX2VsZnYyX2FiaSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vCi1AQCAtMTg4LDEyICsxODgsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX0NBTExfRUxGCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19kZWZfY2FsbF9lbGYiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotaW5kZXggMDgyMjkxNS4uOWEzMmZkZCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCi1AQCAtNiw4ICs2LDggQEAgTElCQ19TTElCRElSX1JUTERESVIoW2xpYjY0XSwgW2xpYjY0XSkKLSAjIERlZmluZSBkZWZhdWx0LWFiaSBhY2NvcmRpbmcgdG8gY29tcGlsZXIgZmxhZ3MuCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBQb3dlclBDNjQgRUxGdjIgQUJJXSwKLSAgIFtsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmIF9DQUxMX0VMRiA9PSAyCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUCh1c2VfcHBjX2VsZnYyX2FiaSxbI2lmIF9DQUxMX0VMRiA9PSAyCi0rICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMsIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmkgPSB5ZXM7IHRoZW4KLUBAIC0xOSw4ICsxOSw4IEBAIGVsc2UKLSAgICMgQ29tcGlsZXIgdGhhdCBkbyBub3Qgc3VwcG9ydCBFTEZ2MiBBQkkgZG9lcyBub3QgZGVmaW5lIF9DQUxMX0VMRgotICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGRlZmluZXMgX0NBTExfRUxGXSwKLSAgICAgW2xpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmXSwKLS0gICAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfQ0FMTF9FTEYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgIFtBQ19FR1JFUF9DUFAoaXNfZGVmX2NhbGxfZWxmLFsjaWZkZWYgX0NBTExfRUxGCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgIF0sIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcywgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8pXSkKLSAgIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmID0gbm87IHRoZW4KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOTk4M2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK0Zyb20gNjlkMzc4MDAxYWRmZTlhMzU5ZDJmNGIwNjljMWVkMmQzNmRlNDQ4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMTYvMjVdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKKworVGhlIG5zY2QgaW5pdCBzY3JpcHQgdXNlcyAjISAvYmluL2Jhc2ggYnV0IG9ubHkgcmVhbGx5IHVzZXMgb25lIGJhc2hpc20KKyh0cmFuc2xhdGVkIHN0cmluZ3MpLCBzbyByZW1vdmUgdGhlbSBhbmQgc3dpdGNoIHRoZSBzaGVsbCB0byAjIS9iaW4vc2guCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAoraW5kZXggYTg4MmRhN2Q4Yi4uYjAyOTg2ZWMxNSAxMDA2NDQKKy0tLSBhL25zY2QvbnNjZC5pbml0CisrKysgYi9uc2NkL25zY2QuaW5pdAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAjCisgIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KKyAjCitAQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKKyBzdGFydCAoKSB7CisgICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKKyAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKKy0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCisgICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAorICAgICBSRVRWQUw9JD8KKyAgICAgZWNobworQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgeworIH0KKyAKKyBzdG9wICgpIHsKKy0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCisgICAgIC91c3Ivc2Jpbi9uc2NkIC1LCisgICAgIFJFVFZBTD0kPworICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgorQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7CisgCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCisgCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKKyAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKKy0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKKysJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCisgICAgIGVsc2UKKy0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKKysJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCisgICAgIGZpCisgICAgIGVjaG8KKyAgICAgcmV0dXJuICRSRVRWQUwKK0BAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KKyAJUkVUVkFMPSQ/CisgCTs7CisgICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKKy0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKKysJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCisgCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKKyAJUkVUVkFMPSQ/CisgCWVjaG8KKyAJOzsKKyAgICAgKikKKy0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgorKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKKyAJUkVUVkFMPTEKKyAJOzsKKyBlc2FjCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI2YTJjMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSAyYmVkNTE1YjlmOWY2MTNhZTBkYjliOTYwN2Q4ZmE2MGE0YWZjYTViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzM6MDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8yNl0gdGltZXpvbmU6IHJlLXdyaXR0ZW4gdHpzZWxlY3QgYXMgcG9zaXggc2gKLQotVG8gYXZvaWQgdGhlIGJhc2ggZGVwZW5kZW5jeS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB0aW1lem9uZS9NYWtlZmlsZSAgICAgfCAyICstCi0gdGltZXpvbmUvdHpzZWxlY3Qua3NoIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGltZXpvbmUvTWFrZWZpbGUgYi90aW1lem9uZS9NYWtlZmlsZQotaW5kZXggZGVlNzU2OC4uNjZhNTBiZSAxMDA2NDQKLS0tLSBhL3RpbWV6b25lL01ha2VmaWxlCi0rKysgYi90aW1lem9uZS9NYWtlZmlsZQotQEAgLTEyMCw3ICsxMjAsNyBAQCAkKHRlc3RkYXRhKS9YVCU6IHRlc3RkYXRhL1hUJQotIAljcCAkPCAkQAotIAotICQob2JqcGZ4KXR6c2VsZWN0OiB0enNlbGVjdC5rc2ggJChjb21tb24tb2JqcGZ4KWNvbmZpZy5tYWtlCi0tCXNlZCAtZSAnc3wvYmluL2Jhc2h8JChCQVNIKXwnIFwKLSsJc2VkIC1lICdzfC9iaW4vYmFzaHwvYmluL3NofCcgXAotIAkgICAgLWUgJ3N8VFpESVI9W159XSp8VFpESVI9JCh6b25lZGlyKXwnIFwKLSAJICAgIC1lICcvVFpWRVJTSU9OPS9zfHNlZV9NYWtlZmlsZXwiJCh2ZXJzaW9uKSJ8JyBcCi0gCSAgICAtZSAnL1BLR1ZFUlNJT049L3N8PS4qfD0iJChQS0dWRVJTSU9OKSJ8JyBcCi1kaWZmIC0tZ2l0IGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi1pbmRleCAyYzNiMmY0Li4wYzA0YTYxIDEwMDc1NQotLS0tIGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi0rKysgYi90aW1lem9uZS90enNlbGVjdC5rc2gKLUBAIC0zNSw3ICszNSw3IEBAIFJFUE9SVF9CVUdTX1RPPXR6QGlhbmEub3JnCi0gCi0gIyBTcGVjaWZ5IGRlZmF1bHQgdmFsdWVzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaWYgdGhleSBhcmUgdW5zZXQuCi0gOiAke0FXSz1hd2t9Ci0tOiAke1RaRElSPWBwd2RgfQotKzogJHtUWkRJUj0kKHB3ZCl9Ci0gCi0gIyBPdXRwdXQgb25lIGFyZ3VtZW50IGFzLWlzIHRvIHN0YW5kYXJkIG91dHB1dC4KLSAjIFNhZmVyIHRoYW4gJ2VjaG8nLCB3aGljaCBjYW4gbWlzaGFuZGxlICdcJyBvciBsZWFkaW5nICctJy4KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzI1MDZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1Gcm9tIGM4ODE0ODc1YjM2MmVmYmZkNzc4MzQ1ZDBkMjc3NzQ3OGJmMTFhMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozMzowMiAtMDgwMAotU3ViamVjdDogW1BBVENIIDE3LzI2XSBSZW1vdmUgYmFzaCBkZXBlbmRlbmN5IGZvciBuc2NkIGluaXQgc2NyaXB0Ci0KLVRoZSBuc2NkIGluaXQgc2NyaXB0IHVzZXMgIyEgL2Jpbi9iYXNoIGJ1dCBvbmx5IHJlYWxseSB1c2VzIG9uZSBiYXNoaXNtCi0odHJhbnNsYXRlZCBzdHJpbmdzKSwgc28gcmVtb3ZlIHRoZW0gYW5kIHN3aXRjaCB0aGUgc2hlbGwgdG8gIyEvYmluL3NoLgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAotaW5kZXggYTg4MmRhNy4uYjAyOTg2ZSAxMDA2NDQKLS0tLSBhL25zY2QvbnNjZC5pbml0Ci0rKysgYi9uc2NkL25zY2QuaW5pdAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjCi0gIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KLSAjCi1AQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKLSBzdGFydCAoKSB7Ci0gICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKLSAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKLS0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCi0gICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAotICAgICBSRVRWQUw9JD8KLSAgICAgZWNobwotQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgewotIH0KLSAKLSBzdG9wICgpIHsKLS0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCi0gICAgIC91c3Ivc2Jpbi9uc2NkIC1LCi0gICAgIFJFVFZBTD0kPwotICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgotQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7Ci0gCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCi0gCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKLSAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKLS0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKLSsJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCi0gICAgIGVsc2UKLS0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKLSsJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCi0gICAgIGZpCi0gICAgIGVjaG8KLSAgICAgcmV0dXJuICRSRVRWQUwKLUBAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KLSAJUkVUVkFMPSQ/Ci0gCTs7Ci0gICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKLS0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKLSsJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCi0gCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKLSAJUkVUVkFMPSQ/Ci0gCWVjaG8KLSAJOzsKLSAgICAgKikKLS0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgotKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKLSAJUkVUVkFMPTEKLSAJOzsKLSBlc2FjCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTM5ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApAQCAtMCwwICsxLDYxOSBAQAorRnJvbSBjZGM4OGRmZmEyMjY4MTVlM2EyMTg2MDQ2NTU0NTllMzNkYzg2NDgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxNy8yNV0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKKworUG9ydGVkIGZyb20gZWdsaWJjCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIEdMSUJDLmNyb3NzLWJ1aWxkaW5nIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNTg4IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtYnVpbGRpbmcKKyBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtdGVzdGluZworCitkaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtYnVpbGRpbmcgYi9HTElCQy5jcm9zcy1idWlsZGluZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmU2ZTBkYTFhYWYKKy0tLSAvZGV2L251bGwKKysrKyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCitAQCAtMCwwICsxLDM4MyBAQAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCisrCisrICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtQ29tcGlsaW5nIEdMSUJDCisrICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgorKworKworK0ludHJvZHVjdGlvbgorKworK01vc3QgR05VIHRvb2xzIGhhdmUgYSBzaW1wbGUgYnVpbGQgcHJvY2VkdXJlOiB5b3UgcnVuIHRoZWlyCisrJ2NvbmZpZ3VyZScgc2NyaXB0LCBhbmQgdGhlbiB5b3UgcnVuICdtYWtlJy4gIFVuZm9ydHVuYXRlbHksIHRoZQorK3Byb2Nlc3Mgb2YgY3Jvc3MtY29tcGlsaW5nIHRoZSBHTlUgQyBsaWJyYXJ5IGlzIHF1aXRlIGEgYml0IG1vcmUKKytpbnZvbHZlZDoKKysKKysxKSBCdWlsZCBhIGNyb3NzLWNvbXBpbGVyLCB3aXRoIGNlcnRhaW4gZmFjaWxpdGllcyBkaXNhYmxlZC4KKysKKysyKSBDb25maWd1cmUgdGhlIEMgbGlicmFyeSB1c2luZyB0aGUgY29tcGlsZXIgeW91IGJ1aWx0IGluIHN0ZXAgMSkuCisrICAgQnVpbGQgYSBmZXcgb2YgdGhlIEMgcnVuLXRpbWUgb2JqZWN0IGZpbGVzLCBidXQgbm90IHRoZSByZXN0IG9mIHRoZQorKyAgIGxpYnJhcnkuICBJbnN0YWxsIHRoZSBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGFuZCB0aGUgcnVuLXRpbWUKKysgICBvYmplY3QgZmlsZXMsIGFuZCBjcmVhdGUgYSBkdW1teSBsaWJjLnNvLgorKworKzMpIEJ1aWxkIGEgc2Vjb25kIGNyb3NzLWNvbXBpbGVyLCB1c2luZyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBvYmplY3QKKysgICBmaWxlcyB5b3UgaW5zdGFsbGVkIGluIHN0ZXAgMi4KKysKKys0KSBDb25maWd1cmUsIGJ1aWxkLCBhbmQgaW5zdGFsbCBhIGZyZXNoIEMgbGlicmFyeSwgdXNpbmcgdGhlIGNvbXBpbGVyCisrICAgYnVpbHQgaW4gc3RlcCAzLgorKworKzUpIEJ1aWxkIGEgdGhpcmQgY3Jvc3MtY29tcGlsZXIsIGJhc2VkIG9uIHRoZSBDIGxpYnJhcnkgYnVpbHQgaW4gc3RlcCA0LgorKworK1RoZSByZWFzb24gZm9yIHRoaXMgY29tcGxleGl0eSBpcyB0aGF0LCBhbHRob3VnaCBHQ0MgYW5kIHRoZSBHTlUgQworK2xpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHksIHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbmRlcGVuZGVudAorK29mIGVhY2ggb3RoZXI6IEdDQyByZXF1aXJlcyB0aGUgQyBsaWJyYXJ5J3MgaGVhZGVycyBhbmQgc29tZSBvYmplY3QKKytmaWxlcyB0byBjb21waWxlIGl0cyBvd24gbGlicmFyaWVzLCB3aGlsZSB0aGUgQyBsaWJyYXJ5IGRlcGVuZHMgb24KKytHQ0MncyBsaWJyYXJpZXMuICBHTElCQyBpbmNsdWRlcyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzIHRvIHRoZSBzdG9jaworK0dOVSBDIGxpYnJhcnkgdGhhdCBzaW1wbGlmeSB0aGlzIHByb2Nlc3MsIGJ1dCB0aGUgZnVuZGFtZW50YWwKKytpbnRlcmRlcGVuZGVuY3kgc3RhbmRzLgorKworK0luIHRoaXMgZG9jdW1lbnQsIHdlIGV4cGxhaW4gaG93IHRvIGNyb3NzLWNvbXBpbGUgYW4gR0xJQkMvR0NDIHBhaXIKKytmcm9tIHNvdXJjZS4gIE91ciBpbnRlbmRlZCBhdWRpZW5jZSBpcyBkZXZlbG9wZXJzIHdobyBhcmUgYWxyZWFkeQorK2ZhbWlsaWFyIHdpdGggdGhlIEdOVSB0b29sY2hhaW4gYW5kIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAorK2Nyb3NzLWRldmVsb3BtZW50IHRvb2xzLiAgV2hpbGUgd2UgZG8gcHJlc2VudCBhIHdvcmtlZCBleGFtcGxlIHRvCisrYWNjb21wYW55IHRoZSBleHBsYW5hdGlvbiwgZm9yIGNsYXJpdHkncyBzYWtlIHdlIGRvIG5vdCBjb3ZlciBtYW55IG9mCisrdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNyb3NzLXRvb2xjaGFpbiB1c2Vycy4KKysKKysKKytQcmVwYXJhdGlvbgorKworK0dMSUJDIHJlcXVpcmVzIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR05VIGJpbnV0aWxzLCBHQ0MsIGFuZCB0aGUKKytMaW51eCBrZXJuZWwuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9wcmVyZXF1aXNpdGVzPgorK2RvY3VtZW50cyB0aGUgY3VycmVudCByZXF1aXJlbWVudHMsIGFuZCBsaXN0cyBwYXRjaGVzIG5lZWRlZCBmb3IKKytjZXJ0YWluIHRhcmdldCBhcmNoaXRlY3R1cmVzLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGVzZSBidWlsZAorK2luc3RydWN0aW9ucyBoYXZlIGJlZW4gdGVzdGVkIHdpdGggYmludXRpbHMgMi4yMi41MSwgR0NDIDQuNi4yLAorK2FuZCBMaW51eCAzLjEuCisrCisrRmlyc3QsIGxldCdzIHNldCBzb21lIHZhcmlhYmxlcywgdG8gc2ltcGxpZnkgbGF0ZXIgY29tbWFuZHMuICBXZSdsbAorK2J1aWxkIEdMSUJDIGFuZCBHQ0MgZm9yIGFuIEFSTSB0YXJnZXQsIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwKKythcyAnYXJtJywgYW5kIHdlJ2xsIGRvIHRoZSBidWlsZCBvbiBhbiBJbnRlbCB4ODZfNjQgTGludXggYm94OgorKworKyAgICAkIGJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUKKysgICAgJCBob3N0PSRidWlsZAorKyAgICAkIHRhcmdldD1hcm0tbm9uZS1saW51eC1nbnVlYWJpCisrICAgICQgbGludXhfYXJjaD1hcm0KKysKKytXZSdyZSB1c2luZyB0aGUgYWZvcmVtZW50aW9uZWQgdmVyc2lvbnMgb2YgQmludXRpbHMsIEdDQywgYW5kIExpbnV4OgorKworKyAgICAkIGJpbnV0aWxzdj1iaW51dGlscy0yLjIyLjUxCisrICAgICQgZ2Njdj1nY2MtNC42LjIKKysgICAgJCBsaW51eHY9bGludXgtMy4xCisrCisrV2UncmUgY2Fycnlpbmcgb3V0IHRoZSBlbnRpcmUgcHJvY2VzcyB1bmRlciAnfi9jcm9zcy1idWlsZCcsIHdoaWNoCisrY29udGFpbnMgdW5wYWNrZWQgc291cmNlIHRyZWVzIGZvciBiaW51dGlscywgZ2NjLCBhbmQgbGludXgga2VybmVsLAorK2Fsb25nIHdpdGggR0xJQkMgc3ZuIHRydW5rICh3aGljaCBjYW4gYmUgY2hlY2tlZC1vdXQgd2l0aAorKydzdm4gY28gaHR0cDovL3d3dy5lZ2xpYmMub3JnL3N2bi90cnVuayBlZ2xpYmMnKToKKysKKysgICAgJCB0b3A9JEhPTUUvY3Jvc3MtYnVpbGQvJHRhcmdldAorKyAgICAkIHNyYz0kSE9NRS9jcm9zcy1idWlsZC9zcmMKKysgICAgJCBscyAkc3JjCisrICAgIGJpbnV0aWxzLTIuMjIuNTEgIGdsaWJjICBnY2MtNC42LjIgIGxpbnV4LTMuMQorKworK1dlJ3JlIGdvaW5nIHRvIHBsYWNlIG91ciBidWlsZCBkaXJlY3RvcmllcyBpbiBhIHN1YmRpcmVjdG9yeSAnb2JqJywKKyt3ZSdsbCBpbnN0YWxsIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW4gJ3Rvb2xzJywgYW5kIHdlJ2xsCisrcGxhY2Ugb3VyIHN5c3Jvb3QgKGNvbnRhaW5pbmcgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQKKytzeXN0ZW0pIGluICdzeXNyb290JzoKKysKKysgICAgJCBvYmo9JHRvcC9vYmoKKysgICAgJCB0b29scz0kdG9wL3Rvb2xzCisrICAgICQgc3lzcm9vdD0kdG9wL3N5c3Jvb3QKKysKKysKKytCaW51dGlscworKworK0NvbmZpZ3VyaW5nIGFuZCBidWlsZGluZyBiaW51dGlscyBmb3IgdGhlIHRhcmdldCBpcyBzdHJhaWdodGZvcndhcmQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9iaW51dGlscworKyAgICAkIGNkICRvYmovYmludXRpbHMKKysgICAgJCAkc3JjLyRiaW51dGlsc3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290CisrICAgICQgbWFrZQorKyAgICAkIG1ha2UgaW5zdGFsbAorKworKworK1RoZSBGaXJzdCBHQ0MKKysKKytGb3Igb3VyIHdvcmssIHdlIG5lZWQgYSBjcm9zcy1jb21waWxlciB0YXJnZXRpbmcgYW4gQVJNIExpbnV4Cisrc3lzdGVtLiAgSG93ZXZlciwgdGhhdCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSBzaGFyZWQgbGlicmFyeQorKydsaWJnY2Nfcy5zbycsIHdoaWNoIGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIEdMSUJDIGhlYWRlcnMgKHdoaWNoIHdlCisraGF2ZW4ndCBpbnN0YWxsZWQgeWV0KSBhbmQgbGlua2VkIGFnYWluc3QgJ2xpYmMuc28nICh3aGljaCB3ZSBoYXZlbid0CisrYnVpbHQgeWV0KS4KKysKKytGb3J0dW5hdGVseSwgdGhlcmUgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgR0NDIHdoaWNoIHRlbGwgaXQgbm90CisrdG8gYnVpbGQgJ2xpYmdjY19zLnNvJy4gIFRoZSAnLS13aXRob3V0LWhlYWRlcnMnIG9wdGlvbiBpcyBzdXBwb3NlZCB0bworK3Rha2UgY2FyZSBvZiB0aGlzLCBidXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxldGUsIHNvIHlvdSBtdXN0CisrYWxzbyBjb25maWd1cmUgd2l0aCB0aGUgJy0td2l0aC1uZXdsaWInIG9wdGlvbi4gIFdoaWxlICctLXdpdGgtbmV3bGliJworK2FwcGVhcnMgdG8gbWVhbiAiVXNlIHRoZSBOZXdsaWIgQyBsaWJyYXJ5IiwgaXRzIGVmZmVjdCBpcyB0byB0ZWxsIHRoZQorK0dDQyBidWlsZCBtYWNoaW5lcnksICJEb24ndCBhc3N1bWUgdGhlcmUgaXMgYSBDIGxpYnJhcnkgYXZhaWxhYmxlLiIKKysKKytXZSBhbHNvIG5lZWQgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQorK2J1aWx0IGFsb25nIHdpdGggR0NDLCBhbmQgc3BlY2lmeSB0aGF0IG9ubHkgdGhlIGNvbXBpbGVyIGZvciB0aGUgQworK2xhbmd1YWdlIGlzIG5lZWRlZC4KKysKKytTbywgd2UgY3JlYXRlIGEgYnVpbGQgZGlyZWN0b3J5LCBjb25maWd1cmUsIG1ha2UsIGFuZCBpbnN0YWxsLgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMQorKyAgICAkIGNkICRvYmovZ2NjMQorKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIgXAorKyAgICA+ICAgICAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1saWJzc3AgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorKyAgICA+ICAgICAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAtLWRpc2FibGUtbGliZmZpIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKysKKytMaW51eCBLZXJuZWwgSGVhZGVycworKworK1RvIGNvbmZpZ3VyZSBHTElCQywgd2UgYWxzbyBuZWVkIExpbnV4IGtlcm5lbCBoZWFkZXJzIGluIHBsYWNlLgorK0ZvcnR1bmF0ZWx5LCB0aGUgTGludXggbWFrZWZpbGVzIGhhdmUgYSB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGVtIGZvcgorK3VzLiAgU2luY2UgdGhlIHByb2Nlc3MgZG9lcyBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGEgYml0LCB3ZSBtYWtlIGEKKytjb3B5IGZpcnN0OgorKworKyAgICAkIGNwIC1yICRzcmMvJGxpbnV4diAkb2JqL2xpbnV4CisrICAgICQgY2QgJG9iai9saW51eAorKworK05vdyB3ZSdyZSByZWFkeSB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGludG8gdGhlIHN5c3Jvb3Q6CisrCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIFwKKysgICAgPiBtYWtlIGhlYWRlcnNfaW5zdGFsbCBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKyAgICA+ICAgICAgSU5TVEFMTF9IRFJfUEFUSD0kc3lzcm9vdC91c3IKKysKKysKKytHTElCQyBIZWFkZXJzIGFuZCBQcmVsaW1pbmFyeSBPYmplY3RzCisrCisrVXNpbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHdlJ3ZlIGp1c3QgYnVpbHQsIHdlIGNhbiBub3cgY29uZmlndXJlIEdMSUJDCisrd2VsbCBlbm91Z2ggdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBhbmQgYnVpbGQgdGhlIG9iamVjdCBmaWxlcyB0aGF0IHRoZQorK2Z1bGwgY3Jvc3MtY29tcGlsZXIgd2lsbCBuZWVkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMtaGVhZGVycworKyAgICAkIGNkICRvYmovZ2xpYmMtaGVhZGVycworKyAgICAkIEJVSUxEX0NDPWdjYyBcCisrICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCisrICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAorKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCisrICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAorKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKKysgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAorKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCisrICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAorKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCisrCisrVGhlIG9wdGlvbiAnLS1wcmVmaXg9L3VzcicgbWF5IGxvb2sgc3RyYW5nZSwgYnV0IHlvdSBzaG91bGQgbmV2ZXIKKytjb25maWd1cmUgR0xJQkMgd2l0aCBhIHByZWZpeCBvdGhlciB0aGFuICcvdXNyJzogaW4gdmFyaW91cyBwbGFjZXMsCisrR0xJQkMncyBidWlsZCBzeXN0ZW0gY2hlY2tzIHdoZXRoZXIgdGhlIHByZWZpeCBpcyAnL3VzcicsIGFuZCBkb2VzCisrc3BlY2lhbCBoYW5kbGluZyBvbmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICBVbmxlc3MgeW91IHVzZSB0aGlzCisrcHJlZml4LCB5b3Ugd2lsbCBnZXQgYSBzeXNyb290IHRoYXQgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBMaW51eAorK2RpcmVjdG9yeSBsYXlvdXRzIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgcm9vdAorK2ZpbGVzeXN0ZW0gb24geW91ciB0YXJnZXQgc3lzdGVtIGNvbXBhdGlibHkgd2l0aCBub3JtYWwgR0xJQkMKKytpbnN0YWxsYXRpb25zLgorKworK1RoZSAnLS13aXRoLWhlYWRlcnMnIG9wdGlvbiB0ZWxscyBHTElCQyB3aGVyZSB0aGUgTGludXggaGVhZGVycyBoYXZlCisrYmVlbiBpbnN0YWxsZWQuCisrCisrVGhlICctLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzJyBvcHRpb24gdGVsbHMgR0xJQkMgdG8gbG9vaworK2ZvciB0aGUgbGlzdGVkIGdsaWJjIGFkZC1vbnMuIE1vc3Qgbm90YWJseSB0aGUgcG9ydHMgYWRkLW9uIChsb2NhdGVkCisranVzdCBhYm92ZSB0aGUgbGliYyBzb3VyY2VzIGluIHRoZSBHTElCQyBzdm4gdHJlZSkgaXMgcmVxdWlyZWQgdG8KKytzdXBwb3J0IEFSTSB0YXJnZXRzLgorKworK1dlIGNhbiBub3cgdXNlIHRoZSAnaW5zdGFsbC1oZWFkZXJzJyBtYWtlZmlsZSB0YXJnZXQgdG8gaW5zdGFsbCB0aGUKKytoZWFkZXJzOgorKworKyAgICAkIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGxfcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKKysKKytUaGUgJ2luc3RhbGxfcm9vdCcgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXJlIHRoZSBmaWxlcyBzaG91bGQgYWN0dWFsbHkKKytiZSBpbnN0YWxsZWQ7IGl0cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlICctLXByZWZpeCcKKytkaXJlY3Rvcnkgd2UgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGUgaGVhZGVycyB3aWxsIGdvIGluCisrJyRzeXNyb290L3Vzci9pbmNsdWRlJy4gIFRoZSAnaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycycgdmFyaWFibGUKKytyZXF1ZXN0cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjZXJ0YWluIHRyaWNreSBoZWFkZXIgZmlsZXMuCisrCisrTmV4dCwgdGhlcmUgYXJlIGEgZmV3IG9iamVjdCBmaWxlcyBuZWVkZWQgdG8gbGluayBzaGFyZWQgbGlicmFyaWVzLAorK3doaWNoIHdlIGJ1aWxkIGFuZCBpbnN0YWxsIGJ5IGhhbmQ6CisrCisrICAgICQgbWtkaXIgLXAgJHN5c3Jvb3QvdXNyL2xpYgorKyAgICAkIG1ha2UgY3N1L3N1YmRpcl9saWIKKysgICAgJCBjcCBjc3UvY3J0MS5vIGNzdS9jcnRpLm8gY3N1L2NydG4ubyAkc3lzcm9vdC91c3IvbGliCisrCisrRmluYWxseSwgJ2xpYmdjY19zLnNvJyByZXF1aXJlcyBhICdsaWJjLnNvJyB0byBsaW5rIGFnYWluc3QuICBIb3dldmVyLAorK3NpbmNlIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgZXhlY3V0ZSBpdHMgY29kZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdAorK2l0IGNvbnRhaW5zLiAgU28sIHRyZWF0aW5nICcvZGV2L251bGwnIGFzIGEgQyBzb3VyY2UgZmlsZSwgd2UgcHJvZHVjZQorK2EgZHVtbXkgJ2xpYmMuc28nIGluIG9uZSBzdGVwOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLXNoYXJlZCAteCBjIC9kZXYvbnVsbCBcCisrICAgID4gICAgICAgICAgICAgICAgICAgICAgICAtbyAkc3lzcm9vdC91c3IvbGliL2xpYmMuc28KKysKKysKKytUaGUgU2Vjb25kIEdDQworKworK1dpdGggdGhlIEdMSUJDIGhlYWRlcnMgYW5kIHNlbGVjdGVkIG9iamVjdCBmaWxlcyBpbnN0YWxsZWQsIHdlIGNhbgorK25vdyBidWlsZCBhIEdDQyB0aGF0IGlzIGNhcGFibGUgb2YgY29tcGlsaW5nIEdMSUJDLiAgV2UgY29uZmlndXJlLAorK2J1aWxkLCBhbmQgaW5zdGFsbCB0aGUgc2Vjb25kIEdDQywgYWdhaW4gYnVpbGRpbmcgb25seSB0aGUgQyBjb21waWxlciwKKythbmQgYXZvaWRpbmcgbGlicmFyaWVzIHdlIHdvbid0IHVzZToKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzIKKysgICAgJCBjZCAkb2JqL2djYzIKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGliZmZpIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrCisrR0xJQkMsIENvbXBsZXRlCisrCisrV2l0aCB0aGUgc2Vjb25kIGNvbXBpbGVyIGJ1aWx0IGFuZCBpbnN0YWxsZWQsIHdlJ3JlIG5vdyByZWFkeSBmb3IgdGhlCisrZnVsbCBHTElCQyBidWlsZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjCisrICAgICQgY2QgJG9iai9nbGliYworKyAgICAkIEJVSUxEX0NDPWdjYyBcCisrICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCisrICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAorKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCisrICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAorKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKKysgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAorKyAgICA+ICAgICAtLXdpdGgta2NvbmZpZz0kb2JqL2xpbnV4L3NjcmlwdHMva2NvbmZpZyBcCisrICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKKysgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCisrICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKKysKKytOb3RlIHRoZSBhZGRpdGlvbmFsICctLXdpdGgta2NvbmZpZycgb3B0aW9uLiBUaGlzIHRlbGxzIEdMSUJDIHdoZXJlIHRvCisrZmluZCB0aGUgaG9zdCBjb25maWcgdG9vbHMgdXNlZCBieSB0aGUga2VybmVsICdtYWtlIGNvbmZpZycgYW5kICdtYWtlCisrbWVudWNvbmZpZycuICBUaGVzZSB0b29scyBjYW4gYmUgcmUtdXNlZCBieSBHTElCQyBmb3IgaXRzIG93biAnbWFrZQorKypjb25maWcnIHN1cHBvcnQsIHdoaWNoIHdpbGwgY3JlYXRlICdvcHRpb24tZ3JvdXBzLmNvbmZpZycgZm9yIHlvdS4KKytCdXQgZmlyc3QgbWFrZSBzdXJlIHRob3NlIHRvb2xzIGhhdmUgYmVlbiBidWlsdCBieSBydW5uaW5nIHNvbWUKKytkdW1teSAnbWFrZSAqY29uZmlnJyBjYWxscyBpbiB0aGUga2VybmVsIGRpcmVjdG9yeToKKysKKysgICAgJCBjZCAkb2JqL2xpbnV4CisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgY29uZmlnIFwKKysgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZyBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKworK05vdyB3ZSBjYW4gY29uZmlndXJlIGFuZCBidWlsZCB0aGUgZnVsbCBHTElCQzoKKysKKysgICAgJCBjZCAkb2JqL2dsaWJjCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgZGVmY29uZmlnCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbCBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QKKysKKytBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgY29tcGxldGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCcsCisrd2l0aCBoZWFkZXIgZmlsZXMsIGxpYnJhcnkgZmlsZXMsIGFuZCBtb3N0IG9mIHRoZSBDIHJ1bnRpbWUgc3RhcnR1cAorK2ZpbGVzIGluIHBsYWNlLgorKworKworK1RoZSBUaGlyZCBHQ0MKKysKKytGaW5hbGx5LCB3ZSByZWNvbXBpbGUgR0NDIGFnYWluc3QgdGhpcyBmdWxsIGluc3RhbGxhdGlvbiwgZW5hYmxpbmcKKyt3aGF0ZXZlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcyB3ZSB3b3VsZCBsaWtlIHRvIHVzZToKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzMKKysgICAgJCBjZCAkb2JqL2djYzMKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKysKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKytUaGUgJy0tZW5hYmxlLV9fY3hhX2F0ZXhpdCcgb3B0aW9uIHRlbGxzIEdDQyB3aGF0IHNvcnQgb2YgQysrCisrZGVzdHJ1Y3RvciBzdXBwb3J0IHRvIGV4cGVjdCBmcm9tIHRoZSBDIGxpYnJhcnk7IGl0J3MgcmVxdWlyZWQgd2l0aAorK0dMSUJDLgorKworK0FuZCBzaW5jZSBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VzcyBpc24ndCBkZXNpZ25lZCB0byBoZWxwIGNvbnN0cnVjdAorK3N5c3Jvb3QgdHJlZXMsIHdlIG11c3QgbWFudWFsbHkgY29weSBjZXJ0YWluIGxpYnJhcmllcyBpbnRvIHBsYWNlIGluCisrdGhlIHN5c3Jvb3QuCisrCisrICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYmdjY19zLnNvKiAkc3lzcm9vdC9saWIKKysgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGlic3RkYysrLnNvKiAkc3lzcm9vdC91c3IvbGliCisrCisrCisrVHJ5aW5nIFRoaW5ncyBPdXQKKysKKytBdCB0aGlzIHBvaW50LCAnJHRvb2xzJyBjb250YWlucyBhIGNyb3NzIHRvb2xjaGFpbiByZWFkeSB0byB1c2UKKyt0aGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCc6CisrCisrICAgICQgY2F0ID4gaGVsbG8uYyA8PEVPRgorKyAgICA+ICNpbmNsdWRlIDxzdGRpby5oPgorKyAgICA+IGludAorKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKysgICAgPiB7CisrICAgID4gICBwdXRzICgiSGVsbG8sIHdvcmxkISIpOworKyAgICA+ICAgcmV0dXJuIDA7CisrICAgID4gfQorKyAgICA+IEVPRgorKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLVdhbGwgaGVsbG8uYyAtbyBoZWxsbworKyAgICAkIGNhdCA+IGMrKy1oZWxsby5jYyA8PEVPRgorKyAgICA+ICNpbmNsdWRlIDxpb3N0cmVhbT4KKysgICAgPiBpbnQKKysgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrICAgID4geworKyAgICA+ICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgQysrIHdvcmxkISIgPDwgc3RkOjplbmRsOworKyAgICA+ICAgcmV0dXJuIDA7CisrICAgID4gfQorKyAgICA+IEVPRgorKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nKysgLVdhbGwgYysrLWhlbGxvLmNjIC1vIGMrKy1oZWxsbworKworKworK1dlIGNhbiB1c2UgJ3JlYWRlbGYnIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSBpbmRlZWQgZXhlY3V0YWJsZXMgZm9yCisrb3VyIHRhcmdldCwgdXNpbmcgb3VyIGR5bmFtaWMgbGlua2VyOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1obCBoZWxsbworKyAgICBFTEYgSGVhZGVyOgorKyAgICAuLi4KKysgICAgICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKKysgICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSTQorKworKyAgICAuLi4KKysgICAgUHJvZ3JhbSBIZWFkZXJzOgorKyAgICAgIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCisrICAgICAgUEhEUiAgICAgICAgICAgMHgwMDAwMzQgMHgxMDAwMDAzNCAweDEwMDAwMDM0IDB4MDAxMDAgMHgwMDEwMCBSIEUgMHg0CisrICAgICAgSU5URVJQICAgICAgICAgMHgwMDAxMzQgMHgwMDAwODEzNCAweDAwMDA4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCisrICAgICAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IC9saWIvbGQtbGludXguc28uM10KKysgICAgICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDA4MDAwIDB4MDAwMDgwMDAgMHgwMDQyYyAweDAwNDJjIFIgRSAweDgwMDAKKysgICAgLi4uCisrCisrTG9va2luZyBhdCB0aGUgZHluYW1pYyBzZWN0aW9uIG9mIHRoZSBpbnN0YWxsZWQgJ2xpYmdjY19zLnNvJywgd2Ugc2VlCisrdGhhdCB0aGUgJ05FRURFRCcgZW50cnkgZm9yIHRoZSBDIGxpYnJhcnkgZG9lcyBpbmNsdWRlIHRoZSAnLjYnCisrc3VmZml4LCBpbmRpY2F0aW5nIHRoYXQgd2FzIGxpbmtlZCBhZ2FpbnN0IG91ciBmdWxseSBidWlsZCBHTElCQywgYW5kCisrbm90IG91ciBkdW1teSAnbGliYy5zbyc6CisrCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWQgJHN5c3Jvb3QvbGliL2xpYmdjY19zLnNvLjEKKysgICAgRHluYW1pYyBzZWN0aW9uIGF0IG9mZnNldCAweDEwODNjIGNvbnRhaW5zIDI0IGVudHJpZXM6CisrICAgICAgVGFnICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUvVmFsdWUKKysgICAgIDB4MDAwMDAwMDEgKE5FRURFRCkgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgbGlicmFyeTogW2xpYmMuc28uNl0KKysgICAgIDB4MDAwMDAwMGUgKFNPTkFNRSkgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IHNvbmFtZTogW2xpYmdjY19zLnNvLjFdCisrICAgIC4uLgorKworKworK0FuZCBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUsIHdlIGNhbiBydW4gb3VyIHByb2dyYW1zOgorKworKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKKysgICAgPiAuL2hlbGxvCisrICAgIEhlbGxvLCB3b3JsZCEKKysgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCisrICAgID4gLi9jKystaGVsbG8KKysgICAgSGVsbG8sIEMrKyB3b3JsZCEKK2RpZmYgLS1naXQgYS9HTElCQy5jcm9zcy10ZXN0aW5nIGIvR0xJQkMuY3Jvc3MtdGVzdGluZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmI2N2I0Njg0NjYKKy0tLSAvZGV2L251bGwKKysrKyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKK0BAIC0wLDAgKzEsMjA1IEBACisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KKysKKysgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtVGVzdGluZyBXaXRoIEdMSUJDCisrICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgorKworKworK0ludHJvZHVjdGlvbgorKworK0RldmVsb3BlcnMgd3JpdGluZyBzb2Z0d2FyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcyBvZnRlbiB1c2UgYSBkZXNrdG9wCisrb3Igb3RoZXIgc2ltaWxhcmx5IGNhcGFibGUgY29tcHV0ZXIgZm9yIGRldmVsb3BtZW50LCBidXQgbmVlZCB0byBydW4KKyt0ZXN0cyBvbiB0aGUgZW1iZWRkZWQgc3lzdGVtLCBvciBwZXJoYXBzIG9uIGEgc2ltdWxhdG9yLiAgV2hlbgorK2NvbmZpZ3VyZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSBzaW1wbHkKKytkaXNhYmxlcyBydW5uaW5nIHRlc3RzIGFsdG9nZXRoZXI6IHRoZSBjb21tYW5kICdtYWtlIHRlc3RzJyBidWlsZHMKKyt0ZXN0IHByb2dyYW1zLCBidXQgZG9lcyBub3QgcnVuIHRoZW0uICBHTElCQywgaG93ZXZlciwgcHJvdmlkZXMKKytmYWNpbGl0aWVzIGZvciBjb21waWxpbmcgdGVzdHMgYW5kIGdlbmVyYXRpbmcgZGF0YSBmaWxlcyBvbiB0aGUgYnVpbGQKKytzeXN0ZW0sIGJ1dCBydW5uaW5nIHRoZSB0ZXN0IHByb2dyYW1zIHRoZW1zZWx2ZXMgb24gYSByZW1vdGUgc3lzdGVtIG9yCisrc2ltdWxhdG9yLgorKworKworK1Rlc3QgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzCisrCisrVGhlIHRlc3QgZW52aXJvbm1lbnQgbXVzdCBtZWV0IGNlcnRhaW4gY29uZGl0aW9ucyBmb3IgR0xJQkMncworK2Nyb3NzLXRlc3RpbmcgZmFjaWxpdGllcyB0byB3b3JrOgorKworKy0gU2hhcmVkIGZpbGVzeXN0ZW1zLiAgVGhlICdidWlsZCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgY29uZmlndXJlIGFuZAorKyAgY29tcGlsZSBHTElCQywgYW5kIHRoZSAnaG9zdCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgaW50ZW5kIHRvIHJ1bgorKyAgR0xJQkMsIG11c3Qgc2hhcmUgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIEdMSUJDIGJ1aWxkIGFuZAorKyAgc291cmNlIHRyZWVzLiAgRmlsZXMgbXVzdCBhcHBlYXIgYXQgdGhlIHNhbWUgcGF0aHMgb24gYm90aCBzeXN0ZW1zLgorKworKy0gUmVtb3RlLXNoZWxsIGxpa2UgaW52b2NhdGlvbi4gIFRoZXJlIG11c3QgYmUgYSB3YXkgdG8gcnVuIGEgcHJvZ3JhbQorKyAgb24gdGhlIGhvc3Qgc3lzdGVtIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgcGFzc2luZyBpdCBwcm9wZXJseSBxdW90ZWQKKysgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQKKysgIGluaGVyaXRpbmcgdGhlIGNhbGxlcidzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCisrCisrCisrVXNhZ2UKKysKKytUbyB1c2UgR0xJQkMncyBjcm9zcy10ZXN0aW5nIHN1cHBvcnQsIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUKKytmb2xsb3dpbmcgTWFrZSB2YXJpYWJsZXMgd2hlbiB5b3UgaW52b2tlICdtYWtlJzoKKysKKystIGNyb3NzLXRlc3Qtd3JhcHBlcgorKworKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciBjb21tYW5kLCBhbG9uZworKyAgd2l0aCBhbnkgYXJndW1lbnRzLgorKworKy0gY3Jvc3MtbG9jYWxlZGVmCisrCisrICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIGNyb3NzLWNhcGFibGUgbG9jYWxlZGVmIHByb2dyYW0sIGxpa2UKKysgIHRoYXQgaW5jbHVkZWQgaW4gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSwgYWxvbmcgd2l0aCBhbnkKKysgIGFyZ3VtZW50cyBuZWVkZWQuCisrCisrVGhlc2UgYXJlIGVhY2ggZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdy4KKysKKysKKytUaGUgQ3Jvc3MtVGVzdGluZyBXcmFwcGVyCisrCisrVG8gcnVuIHRlc3QgcHJvZ3JhbXMgcmVsaWFibHksIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHRha2VzIGNhcmUgdG8KKytlbnN1cmUgdGhhdCB0ZXN0IHByb2dyYW1zIHVzZSB0aGUgbmV3bHkgY29tcGlsZWQgZHluYW1pYyBsaW5rZXIgYW5kCisrc2hhcmVkIGxpYnJhcmllcywgYW5kIG5ldmVyIHRoZSBob3N0IHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuICBUbworK2FjY29tcGxpc2ggdGhpcywgaXQgcnVucyB0aGUgdGVzdHMgYnkgZXhwbGljaXRseSBpbnZva2luZyB0aGUgZHluYW1pYworK2xpbmtlciBmcm9tIHRoZSBidWlsZCB0cmVlLCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBidWlsZCB0cmVlCisrZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBzaGFyZWQgbGlicmFyaWVzLCBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZgorK3RoZSBleGVjdXRhYmxlIHRvIHJ1biBhbmQgaXRzIGFyZ3VtZW50cy4KKysKKytGb3IgZXhhbXBsZSwgd2hlcmUgb25lIG1pZ2h0IG5vcm1hbGx5IHJ1biBhIHRlc3QgcHJvZ3JhbSBsaWtlIHRoaXM6CisrCisrICAgICQgLi90c3QtZm9vIGFyZzEgYXJnMgorKworK3RoZSBHTlUgQyBsaWJyYXJ5IG1pZ2h0IHJ1biB0aGF0IHByb2dyYW0gbGlrZSB0aGlzOgorKworKyAgICAkICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyh3aGVyZSAkb2JqZGlyIGlzIHRoZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIGJ1aWxkIHRyZWUsIGFuZCB0aGUKKyt0cmFpbGluZyBiYWNrc2xhc2ggaW5kaWNhdGVzIGEgY29udGludWF0aW9uIG9mIHRoZSBjb21tYW5kKS4gIEluIG90aGVyCisrd29yZHMsIGVhY2ggdGVzdCBwcm9ncmFtIGludm9jYXRpb24gaXMgJ3dyYXBwZWQgdXAnIGluc2lkZSBhbiBleHBsaWNpdAorK2ludm9jYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB3aGljaCBtdXN0IGl0c2VsZiBleGVjdXRlIHRoZSB0ZXN0CisrcHJvZ3JhbSwgaGF2aW5nIGxvYWRlZCBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCisrZGlyZWN0b3JpZXMuCisrCisrVG8gc3VwcG9ydCBjcm9zcy10ZXN0aW5nLCBHTElCQyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBvcHRpb25hbGx5Cisrc2V0IHRoZSAnY3Jvc3MtdGVzdC13cmFwcGVyJyBNYWtlIHZhcmlhYmxlIHRvIGFub3RoZXIgd3JhcHBlciBjb21tYW5kLAorK3RvIHdoaWNoIGl0IHBhc3NlcyB0aGUgZW50aXJlIGR5bmFtaWMgbGlua2VyIGludm9jYXRpb24gc2hvd24gYWJvdmUgYXMKKythcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGRldmVsb3BlciBzdXBwbGllcyBhIHdyYXBwZXIgb2YKKysnbXktd3JhcHBlciBob3N0bmFtZScsIHRoZW4gR0xJQkMgd291bGQgcnVuIHRoZSB0ZXN0IGFib3ZlIGFzCisrZm9sbG93czoKKysKKysgICAgJCBteS13cmFwcGVyIGhvc3RuYW1lIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKytUaGUgJ215LXdyYXBwZXInIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyB0aGUgY29tbWFuZAorK2dpdmVuIG9uIHRoZSBob3N0IHN5c3RlbS4KKysKKytTaW5jZSB0ZXN0cyBhcmUgcnVuIGluIHZhcnlpbmcgZGlyZWN0b3JpZXMsIHRoZSB3cmFwcGVyIHNob3VsZCBlaXRoZXIKKytiZSBpbiB5b3VyIGNvbW1hbmQgc2VhcmNoIHBhdGgsIG9yICdjcm9zcy10ZXN0LXdyYXBwZXInIHNob3VsZCBnaXZlIGFuCisrYWJzb2x1dGUgcGF0aCBmb3IgdGhlIHdyYXBwZXIuCisrCisrVGhlIHdyYXBwZXIgbXVzdCBtZWV0IHNldmVyYWwgcmVxdWlyZW1lbnRzOgorKworKy0gSXQgbXVzdCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBBcyBleHBsYWluZWQgYWJvdmUsIHRoZQorKyAgYnVpbGQgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSB2aXNpYmxlIG9uIGJvdGggdGhlIGJ1aWxkIGFuZCBob3N0CisrICBzeXN0ZW1zLCBhdCB0aGUgc2FtZSBwYXRoLiAgVGhlIHRlc3Qgd3JhcHBlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQorKyAgY3VycmVudCBkaXJlY3RvcnkgaXQgaW5oZXJpdHMgaXMgYWxzbyBpbmhlcml0ZWQgYnkgdGhlIGR5bmFtaWMKKysgIGxpbmtlciAoYW5kIHRodXMgdGhlIHRlc3QgcHJvZ3JhbSBpdHNlbGYpLgorKworKy0gSXQgbXVzdCBwcmVzZXJ2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMnIHZhbHVlcy4gIE1hbnkgR0xJQkMgdGVzdHMKKysgIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3QgcnVuczsgaW4gbmF0aXZlIHRlc3RpbmcsIGl0CisrICBpbnZva2VzIHByb2dyYW1zIGxpa2UgdGhpczoKKysKKysgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysgIFdpdGggdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciwgdGhhdCBpbnZvY2F0aW9uIGJlY29tZXM6CisrCisrICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCisrICAgICAgbXktd3JhcHBlciBob3N0bmFtZSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrICBIZXJlLCAnbXktd3JhcHBlcicgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXQgc2VlcyBmb3IKKysgICdHQ09OVl9QQVRIJyB3aWxsIGJlIHNlZW4gYnkgdGhlIGR5bmFtaWMgbGlua2VyLCBhbmQgdGh1cyAndHN0LWZvbycKKysgIGl0c2VsZi4gIChUaGUgd3JhcHBlciBzdXBwbGllZCB3aXRoIEdMSUJDIHNpbXBseSBwcmVzZXJ2ZXMgdGhlCisrICB2YWx1ZXMgb2YgKmFsbCogZW52aXJvbWVudCB2YXJpYWJsZXMsIHdpdGggYSBmaXhlZCBzZXQgb2YKKysgIGV4Y2VwdGlvbnMuKQorKworKyAgSWYgeW91ciB3cmFwcGVyIGlzIGEgc2hlbGwgc2NyaXB0LCB0YWtlIGNhcmUgdG8gY29ycmVjdGx5IHByb3BhZ2F0ZQorKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdob3NlIHZhbHVlcyBjb250YWluIHNwYWNlcyBhbmQgc2hlbGwKKysgIG1ldGFjaGFyYWN0ZXJzLgorKworKy0gSXQgbXVzdCBwYXNzIHRoZSBjb21tYW5kJ3MgYXJndW1lbnRzLCB1bm1vZGlmaWVkLiAgVGhlIGFyZ3VtZW50cworKyAgc2VlbiBieSB0aGUgdGVzdCBwcm9ncmFtIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHNlZW4gYnkgdGhlIHdyYXBwZXIKKysgIChhZnRlciB3aGF0ZXZlciBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIHRoZSB3cmFwcGVyIGl0c2VsZikuICBUaGUKKysgIEdMSUJDIHRlc3QgZnJhbWV3b3JrIHBlcmZvcm1zIGFsbCBuZWVkZWQgc2hlbGwgd29yZCBzcGxpdHRpbmcgYW5kCisrICBleHBhbnNpb24gKHdpbGRjYXJkIGV4cGFuc2lvbiwgcGFyYW1ldGVyIHN1YnN0aXR1dGlvbiwgYW5kIHNvIG9uKQorKyAgYmVmb3JlIGludm9raW5nIHRoZSB3cmFwcGVyOyBmdXJ0aGVyIGV4cGFuc2lvbiBtYXkgYnJlYWsgdGhlIHRlc3RzLgorKworKworK1RoZSAnY3Jvc3MtdGVzdC1zc2guc2gnIHNjcmlwdAorKworK0lmIHlvdSB3YW50IHRvIHVzZSAnc3NoJyAob3Igc29tZXRoaW5nIHN1ZmZpY2llbnRseSBzaW1pbGFyKSB0byBydW4KKyt0ZXN0IHByb2dyYW1zIG9uIHlvdXIgaG9zdCBzeXN0ZW0sIEdMSUJDIGluY2x1ZGVzIGEgc2hlbGwgc2NyaXB0LAorKydzY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoJywgd2hpY2ggeW91IGNhbiB1c2UgYXMgeW91ciB3cmFwcGVyCisrY29tbWFuZC4gIFRoaXMgc2NyaXB0IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgdGVzdCBjb21tYW5kJ3MgY3VycmVudAorK2RpcmVjdG9yeSwgcHJvcGFnYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLCBhbmQgY2FycnlpbmcKKytjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBhbGwgYWNyb3NzIGFuICdzc2gnIGNvbm5lY3Rpb24uICBZb3UgbWF5IGV2ZW4KKytzdXBwbHkgYW4gYWx0ZXJuYXRpdmUgdG8gJ3NzaCcgb24gdGhlIGNvbW1hbmQgbGluZSwgaWYgbmVlZGVkLgorKworK0ZvciBtb3JlIGRldGFpbHMsIHBhc3MgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyB0aGUgJy0taGVscCcgb3B0aW9uLgorKworKworK1RoZSBDcm9zcy1Db21waWxpbmcgTG9jYWxlIERlZmluaXRpb24gQ29tbWFuZAorKworK1NvbWUgR0xJQkMgdGVzdHMgcmVseSBvbiBsb2NhbGVzIGdlbmVyYXRlZCBlc3BlY2lhbGx5IGZvciB0aGUgdGVzdAorK3Byb2Nlc3MuICBJbiBhIG5hdGl2ZSBjb25maWd1cmF0aW9uLCB0aGVzZSB0ZXN0cyBzaW1wbHkgcnVuIHRoZQorKydsb2NhbGVkZWYnIGNvbW1hbmQgYnVpbHQgYnkgdGhlIG5vcm1hbCBHTElCQyBidWlsZCBwcm9jZXNzLAorKydsb2NhbGUvbG9jYWxlZGVmJywgdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGVpciBsb2NhbGVzLiAgSG93ZXZlciwgaW4KKythIGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmF0aW9uLCB0aGlzICdsb2NhbGVkZWYnIGlzIGJ1aWx0IGZvciB0aGUKKytob3N0IHN5c3RlbSwgbm90IHRoZSBidWlsZCBzeXN0ZW0sIGFuZCBzaW5jZSBpdCByZXF1aXJlcyBxdWl0ZSBhIGJpdAorK29mIG1lbW9yeSB0byBydW4gKHdlIGhhdmUgc2VlbiBpdCBmYWlsIG9uIHN5c3RlbXMgd2l0aCA2NE1pQiBvZgorK21lbW9yeSksIGl0IG1heSBub3QgYmUgcHJhY3RpY2FsIHRvIHJ1biBpdCBvbiB0aGUgaG9zdCBzeXN0ZW0uCisrCisrSWYgc2V0LCBHTElCQyB1c2VzIHRoZSAnY3Jvc3MtbG9jYWxlZGVmJyBNYWtlIHZhcmlhYmxlIGFzIHRoZSBjb21tYW5kCisrdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCBsb2NhbGVzLiAgVGhlCisrbG9jYWxlZGVmIHByb2dyYW0gYnVpbHQgZnJvbSB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlIGlzCisrc3VpdGFibGUuCisrCisrVGhlIHZhbHVlIG9mICdjcm9zcy1sb2NhbGVkZWYnIG1heSBhbHNvIGluY2x1ZGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cworK3RvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbTsgaWYgeW91IGFyZSB1c2luZyBHTElCQydzICdsb2NhbGVkZWYnLAorK3lvdSBtYXkgaW5jbHVkZSBlbmRpYW5uZXNzIGFuZCAndWludDMyX3QnIGFsaWdubWVudCBhcmd1bWVudHMgaGVyZS4KKysKKysKKytFeGFtcGxlCisrCisrSW4gZGV2ZWxvcGluZyBHTElCQydzIGNyb3NzLXRlc3RpbmcgZmFjaWxpdHksIHdlIGludm9rZWQgJ21ha2UnIHdpdGgKKyt0aGUgZm9sbG93aW5nIHNjcmlwdDoKKysKKysgICAgIyEvYmluL3NoCisrCisrICAgIHNyY2Rpcj0uLi4KKysgICAgdGVzdF9ob3N0bmFtZT0uLi4KKysgICAgbG9jYWxlZGVmZGlyPS4uLgorKyAgICBjcm9zc19neHg9Li4uLWcrKworKworKyAgICB3cmFwcGVyPSIkc3JjZGlyL3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggJHRlc3RfaG9zdG5hbWUiCisrICAgIGxvY2FsZWRlZj0iJGxvY2FsZWRlZmRpci9sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCisrCisrICAgIG1ha2UgY3Jvc3MtdGVzdC13cmFwcGVyPSIkd3JhcHBlciIgXAorKyAgICAgICAgIGNyb3NzLWxvY2FsZWRlZj0iJGxvY2FsZWRlZiIgXAorKyAgICAgICAgIENYWD0iJGNyb3NzX2d4eCIgXAorKyAgICAgICAgICIkQCIKKysKKysKKytPdGhlciBDcm9zcy1UZXN0aW5nIENvbmNlcm5zCisrCisrSGVyZSBhcmUgbm90ZXMgb24gc29tZSBvdGhlciBpc3N1ZXMgd2hpY2ggeW91IG1heSBlbmNvdW50ZXIgaW4gcnVubmluZworK3RoZSBHTElCQyB0ZXN0cyBpbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudDoKKysKKystIFNvbWUgdGVzdHMgcmVxdWlyZSBhIEMrKyBjcm9zcy1jb21waWxlcjsgeW91IHNob3VsZCBzZXQgdGhlICdDWFgnCisrICBNYWtlIHZhcmlhYmxlIHRvIHRoZSBuYW1lIG9mIGFuIGFwcHJvcHJpYXRlIGNyb3NzLWNvbXBpbGVyLgorKworKy0gU29tZSB0ZXN0cyByZXF1aXJlIGFjY2VzcyB0byBsaWJzdGRjKysuc28uNiBhbmQgbGliZ2NjX3Muc28uMTsgd2UKKysgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKKysgIGRpcmVjdG9yeS4KKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWMwMWYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MTkgKzAsMCBAQAotRnJvbSBkZjk2ZDZiNjFiYjYwZjEzY2QzZDQ5ODlkMWFmYzU2ZDcwNWY0YTMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yNl0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKLQotUG9ydGVkIGZyb20gZWdsaWJjCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIEdMSUJDLmNyb3NzLWJ1aWxkaW5nIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTg4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLSBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtdGVzdGluZwotCi1kaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtYnVpbGRpbmcgYi9HTElCQy5jcm9zcy1idWlsZGluZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU2ZTBkYTEKLS0tLSAvZGV2L251bGwKLSsrKyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCi1AQCAtMCwwICsxLDM4MyBAQAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCi0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtQ29tcGlsaW5nIEdMSUJDCi0rICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgotKwotKwotK0ludHJvZHVjdGlvbgotKwotK01vc3QgR05VIHRvb2xzIGhhdmUgYSBzaW1wbGUgYnVpbGQgcHJvY2VkdXJlOiB5b3UgcnVuIHRoZWlyCi0rJ2NvbmZpZ3VyZScgc2NyaXB0LCBhbmQgdGhlbiB5b3UgcnVuICdtYWtlJy4gIFVuZm9ydHVuYXRlbHksIHRoZQotK3Byb2Nlc3Mgb2YgY3Jvc3MtY29tcGlsaW5nIHRoZSBHTlUgQyBsaWJyYXJ5IGlzIHF1aXRlIGEgYml0IG1vcmUKLStpbnZvbHZlZDoKLSsKLSsxKSBCdWlsZCBhIGNyb3NzLWNvbXBpbGVyLCB3aXRoIGNlcnRhaW4gZmFjaWxpdGllcyBkaXNhYmxlZC4KLSsKLSsyKSBDb25maWd1cmUgdGhlIEMgbGlicmFyeSB1c2luZyB0aGUgY29tcGlsZXIgeW91IGJ1aWx0IGluIHN0ZXAgMSkuCi0rICAgQnVpbGQgYSBmZXcgb2YgdGhlIEMgcnVuLXRpbWUgb2JqZWN0IGZpbGVzLCBidXQgbm90IHRoZSByZXN0IG9mIHRoZQotKyAgIGxpYnJhcnkuICBJbnN0YWxsIHRoZSBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGFuZCB0aGUgcnVuLXRpbWUKLSsgICBvYmplY3QgZmlsZXMsIGFuZCBjcmVhdGUgYSBkdW1teSBsaWJjLnNvLgotKwotKzMpIEJ1aWxkIGEgc2Vjb25kIGNyb3NzLWNvbXBpbGVyLCB1c2luZyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBvYmplY3QKLSsgICBmaWxlcyB5b3UgaW5zdGFsbGVkIGluIHN0ZXAgMi4KLSsKLSs0KSBDb25maWd1cmUsIGJ1aWxkLCBhbmQgaW5zdGFsbCBhIGZyZXNoIEMgbGlicmFyeSwgdXNpbmcgdGhlIGNvbXBpbGVyCi0rICAgYnVpbHQgaW4gc3RlcCAzLgotKwotKzUpIEJ1aWxkIGEgdGhpcmQgY3Jvc3MtY29tcGlsZXIsIGJhc2VkIG9uIHRoZSBDIGxpYnJhcnkgYnVpbHQgaW4gc3RlcCA0LgotKwotK1RoZSByZWFzb24gZm9yIHRoaXMgY29tcGxleGl0eSBpcyB0aGF0LCBhbHRob3VnaCBHQ0MgYW5kIHRoZSBHTlUgQwotK2xpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHksIHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbmRlcGVuZGVudAotK29mIGVhY2ggb3RoZXI6IEdDQyByZXF1aXJlcyB0aGUgQyBsaWJyYXJ5J3MgaGVhZGVycyBhbmQgc29tZSBvYmplY3QKLStmaWxlcyB0byBjb21waWxlIGl0cyBvd24gbGlicmFyaWVzLCB3aGlsZSB0aGUgQyBsaWJyYXJ5IGRlcGVuZHMgb24KLStHQ0MncyBsaWJyYXJpZXMuICBHTElCQyBpbmNsdWRlcyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzIHRvIHRoZSBzdG9jawotK0dOVSBDIGxpYnJhcnkgdGhhdCBzaW1wbGlmeSB0aGlzIHByb2Nlc3MsIGJ1dCB0aGUgZnVuZGFtZW50YWwKLStpbnRlcmRlcGVuZGVuY3kgc3RhbmRzLgotKwotK0luIHRoaXMgZG9jdW1lbnQsIHdlIGV4cGxhaW4gaG93IHRvIGNyb3NzLWNvbXBpbGUgYW4gR0xJQkMvR0NDIHBhaXIKLStmcm9tIHNvdXJjZS4gIE91ciBpbnRlbmRlZCBhdWRpZW5jZSBpcyBkZXZlbG9wZXJzIHdobyBhcmUgYWxyZWFkeQotK2ZhbWlsaWFyIHdpdGggdGhlIEdOVSB0b29sY2hhaW4gYW5kIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAotK2Nyb3NzLWRldmVsb3BtZW50IHRvb2xzLiAgV2hpbGUgd2UgZG8gcHJlc2VudCBhIHdvcmtlZCBleGFtcGxlIHRvCi0rYWNjb21wYW55IHRoZSBleHBsYW5hdGlvbiwgZm9yIGNsYXJpdHkncyBzYWtlIHdlIGRvIG5vdCBjb3ZlciBtYW55IG9mCi0rdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNyb3NzLXRvb2xjaGFpbiB1c2Vycy4KLSsKLSsKLStQcmVwYXJhdGlvbgotKwotK0dMSUJDIHJlcXVpcmVzIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR05VIGJpbnV0aWxzLCBHQ0MsIGFuZCB0aGUKLStMaW51eCBrZXJuZWwuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9wcmVyZXF1aXNpdGVzPgotK2RvY3VtZW50cyB0aGUgY3VycmVudCByZXF1aXJlbWVudHMsIGFuZCBsaXN0cyBwYXRjaGVzIG5lZWRlZCBmb3IKLStjZXJ0YWluIHRhcmdldCBhcmNoaXRlY3R1cmVzLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGVzZSBidWlsZAotK2luc3RydWN0aW9ucyBoYXZlIGJlZW4gdGVzdGVkIHdpdGggYmludXRpbHMgMi4yMi41MSwgR0NDIDQuNi4yLAotK2FuZCBMaW51eCAzLjEuCi0rCi0rRmlyc3QsIGxldCdzIHNldCBzb21lIHZhcmlhYmxlcywgdG8gc2ltcGxpZnkgbGF0ZXIgY29tbWFuZHMuICBXZSdsbAotK2J1aWxkIEdMSUJDIGFuZCBHQ0MgZm9yIGFuIEFSTSB0YXJnZXQsIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwKLSthcyAnYXJtJywgYW5kIHdlJ2xsIGRvIHRoZSBidWlsZCBvbiBhbiBJbnRlbCB4ODZfNjQgTGludXggYm94OgotKwotKyAgICAkIGJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUKLSsgICAgJCBob3N0PSRidWlsZAotKyAgICAkIHRhcmdldD1hcm0tbm9uZS1saW51eC1nbnVlYWJpCi0rICAgICQgbGludXhfYXJjaD1hcm0KLSsKLStXZSdyZSB1c2luZyB0aGUgYWZvcmVtZW50aW9uZWQgdmVyc2lvbnMgb2YgQmludXRpbHMsIEdDQywgYW5kIExpbnV4OgotKwotKyAgICAkIGJpbnV0aWxzdj1iaW51dGlscy0yLjIyLjUxCi0rICAgICQgZ2Njdj1nY2MtNC42LjIKLSsgICAgJCBsaW51eHY9bGludXgtMy4xCi0rCi0rV2UncmUgY2Fycnlpbmcgb3V0IHRoZSBlbnRpcmUgcHJvY2VzcyB1bmRlciAnfi9jcm9zcy1idWlsZCcsIHdoaWNoCi0rY29udGFpbnMgdW5wYWNrZWQgc291cmNlIHRyZWVzIGZvciBiaW51dGlscywgZ2NjLCBhbmQgbGludXgga2VybmVsLAotK2Fsb25nIHdpdGggR0xJQkMgc3ZuIHRydW5rICh3aGljaCBjYW4gYmUgY2hlY2tlZC1vdXQgd2l0aAotKydzdm4gY28gaHR0cDovL3d3dy5lZ2xpYmMub3JnL3N2bi90cnVuayBlZ2xpYmMnKToKLSsKLSsgICAgJCB0b3A9JEhPTUUvY3Jvc3MtYnVpbGQvJHRhcmdldAotKyAgICAkIHNyYz0kSE9NRS9jcm9zcy1idWlsZC9zcmMKLSsgICAgJCBscyAkc3JjCi0rICAgIGJpbnV0aWxzLTIuMjIuNTEgIGdsaWJjICBnY2MtNC42LjIgIGxpbnV4LTMuMQotKwotK1dlJ3JlIGdvaW5nIHRvIHBsYWNlIG91ciBidWlsZCBkaXJlY3RvcmllcyBpbiBhIHN1YmRpcmVjdG9yeSAnb2JqJywKLSt3ZSdsbCBpbnN0YWxsIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW4gJ3Rvb2xzJywgYW5kIHdlJ2xsCi0rcGxhY2Ugb3VyIHN5c3Jvb3QgKGNvbnRhaW5pbmcgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQKLStzeXN0ZW0pIGluICdzeXNyb290JzoKLSsKLSsgICAgJCBvYmo9JHRvcC9vYmoKLSsgICAgJCB0b29scz0kdG9wL3Rvb2xzCi0rICAgICQgc3lzcm9vdD0kdG9wL3N5c3Jvb3QKLSsKLSsKLStCaW51dGlscwotKwotK0NvbmZpZ3VyaW5nIGFuZCBidWlsZGluZyBiaW51dGlscyBmb3IgdGhlIHRhcmdldCBpcyBzdHJhaWdodGZvcndhcmQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9iaW51dGlscwotKyAgICAkIGNkICRvYmovYmludXRpbHMKLSsgICAgJCAkc3JjLyRiaW51dGlsc3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290Ci0rICAgICQgbWFrZQotKyAgICAkIG1ha2UgaW5zdGFsbAotKwotKwotK1RoZSBGaXJzdCBHQ0MKLSsKLStGb3Igb3VyIHdvcmssIHdlIG5lZWQgYSBjcm9zcy1jb21waWxlciB0YXJnZXRpbmcgYW4gQVJNIExpbnV4Ci0rc3lzdGVtLiAgSG93ZXZlciwgdGhhdCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSBzaGFyZWQgbGlicmFyeQotKydsaWJnY2Nfcy5zbycsIHdoaWNoIGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIEdMSUJDIGhlYWRlcnMgKHdoaWNoIHdlCi0raGF2ZW4ndCBpbnN0YWxsZWQgeWV0KSBhbmQgbGlua2VkIGFnYWluc3QgJ2xpYmMuc28nICh3aGljaCB3ZSBoYXZlbid0Ci0rYnVpbHQgeWV0KS4KLSsKLStGb3J0dW5hdGVseSwgdGhlcmUgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgR0NDIHdoaWNoIHRlbGwgaXQgbm90Ci0rdG8gYnVpbGQgJ2xpYmdjY19zLnNvJy4gIFRoZSAnLS13aXRob3V0LWhlYWRlcnMnIG9wdGlvbiBpcyBzdXBwb3NlZCB0bwotK3Rha2UgY2FyZSBvZiB0aGlzLCBidXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxldGUsIHNvIHlvdSBtdXN0Ci0rYWxzbyBjb25maWd1cmUgd2l0aCB0aGUgJy0td2l0aC1uZXdsaWInIG9wdGlvbi4gIFdoaWxlICctLXdpdGgtbmV3bGliJwotK2FwcGVhcnMgdG8gbWVhbiAiVXNlIHRoZSBOZXdsaWIgQyBsaWJyYXJ5IiwgaXRzIGVmZmVjdCBpcyB0byB0ZWxsIHRoZQotK0dDQyBidWlsZCBtYWNoaW5lcnksICJEb24ndCBhc3N1bWUgdGhlcmUgaXMgYSBDIGxpYnJhcnkgYXZhaWxhYmxlLiIKLSsKLStXZSBhbHNvIG5lZWQgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQotK2J1aWx0IGFsb25nIHdpdGggR0NDLCBhbmQgc3BlY2lmeSB0aGF0IG9ubHkgdGhlIGNvbXBpbGVyIGZvciB0aGUgQwotK2xhbmd1YWdlIGlzIG5lZWRlZC4KLSsKLStTbywgd2UgY3JlYXRlIGEgYnVpbGQgZGlyZWN0b3J5LCBjb25maWd1cmUsIG1ha2UsIGFuZCBpbnN0YWxsLgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMQotKyAgICAkIGNkICRvYmovZ2NjMQotKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIgXAotKyAgICA+ICAgICAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1saWJzc3AgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCAtLWRpc2FibGUtbGlicXVhZG1hdGggXAotKyAgICA+ICAgICAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAtLWRpc2FibGUtbGliZmZpIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLSsKLStMaW51eCBLZXJuZWwgSGVhZGVycwotKwotK1RvIGNvbmZpZ3VyZSBHTElCQywgd2UgYWxzbyBuZWVkIExpbnV4IGtlcm5lbCBoZWFkZXJzIGluIHBsYWNlLgotK0ZvcnR1bmF0ZWx5LCB0aGUgTGludXggbWFrZWZpbGVzIGhhdmUgYSB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGVtIGZvcgotK3VzLiAgU2luY2UgdGhlIHByb2Nlc3MgZG9lcyBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGEgYml0LCB3ZSBtYWtlIGEKLStjb3B5IGZpcnN0OgotKwotKyAgICAkIGNwIC1yICRzcmMvJGxpbnV4diAkb2JqL2xpbnV4Ci0rICAgICQgY2QgJG9iai9saW51eAotKwotK05vdyB3ZSdyZSByZWFkeSB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGludG8gdGhlIHN5c3Jvb3Q6Ci0rCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIFwKLSsgICAgPiBtYWtlIGhlYWRlcnNfaW5zdGFsbCBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKyAgICA+ICAgICAgSU5TVEFMTF9IRFJfUEFUSD0kc3lzcm9vdC91c3IKLSsKLSsKLStHTElCQyBIZWFkZXJzIGFuZCBQcmVsaW1pbmFyeSBPYmplY3RzCi0rCi0rVXNpbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHdlJ3ZlIGp1c3QgYnVpbHQsIHdlIGNhbiBub3cgY29uZmlndXJlIEdMSUJDCi0rd2VsbCBlbm91Z2ggdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBhbmQgYnVpbGQgdGhlIG9iamVjdCBmaWxlcyB0aGF0IHRoZQotK2Z1bGwgY3Jvc3MtY29tcGlsZXIgd2lsbCBuZWVkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMtaGVhZGVycwotKyAgICAkIGNkICRvYmovZ2xpYmMtaGVhZGVycwotKyAgICAkIEJVSUxEX0NDPWdjYyBcCi0rICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCi0rICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAotKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCi0rICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAotKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKLSsgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAotKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCi0rICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAotKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCi0rCi0rVGhlIG9wdGlvbiAnLS1wcmVmaXg9L3VzcicgbWF5IGxvb2sgc3RyYW5nZSwgYnV0IHlvdSBzaG91bGQgbmV2ZXIKLStjb25maWd1cmUgR0xJQkMgd2l0aCBhIHByZWZpeCBvdGhlciB0aGFuICcvdXNyJzogaW4gdmFyaW91cyBwbGFjZXMsCi0rR0xJQkMncyBidWlsZCBzeXN0ZW0gY2hlY2tzIHdoZXRoZXIgdGhlIHByZWZpeCBpcyAnL3VzcicsIGFuZCBkb2VzCi0rc3BlY2lhbCBoYW5kbGluZyBvbmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICBVbmxlc3MgeW91IHVzZSB0aGlzCi0rcHJlZml4LCB5b3Ugd2lsbCBnZXQgYSBzeXNyb290IHRoYXQgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBMaW51eAotK2RpcmVjdG9yeSBsYXlvdXRzIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgcm9vdAotK2ZpbGVzeXN0ZW0gb24geW91ciB0YXJnZXQgc3lzdGVtIGNvbXBhdGlibHkgd2l0aCBub3JtYWwgR0xJQkMKLStpbnN0YWxsYXRpb25zLgotKwotK1RoZSAnLS13aXRoLWhlYWRlcnMnIG9wdGlvbiB0ZWxscyBHTElCQyB3aGVyZSB0aGUgTGludXggaGVhZGVycyBoYXZlCi0rYmVlbiBpbnN0YWxsZWQuCi0rCi0rVGhlICctLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzJyBvcHRpb24gdGVsbHMgR0xJQkMgdG8gbG9vawotK2ZvciB0aGUgbGlzdGVkIGdsaWJjIGFkZC1vbnMuIE1vc3Qgbm90YWJseSB0aGUgcG9ydHMgYWRkLW9uIChsb2NhdGVkCi0ranVzdCBhYm92ZSB0aGUgbGliYyBzb3VyY2VzIGluIHRoZSBHTElCQyBzdm4gdHJlZSkgaXMgcmVxdWlyZWQgdG8KLStzdXBwb3J0IEFSTSB0YXJnZXRzLgotKwotK1dlIGNhbiBub3cgdXNlIHRoZSAnaW5zdGFsbC1oZWFkZXJzJyBtYWtlZmlsZSB0YXJnZXQgdG8gaW5zdGFsbCB0aGUKLStoZWFkZXJzOgotKwotKyAgICAkIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGxfcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKLSsKLStUaGUgJ2luc3RhbGxfcm9vdCcgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXJlIHRoZSBmaWxlcyBzaG91bGQgYWN0dWFsbHkKLStiZSBpbnN0YWxsZWQ7IGl0cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlICctLXByZWZpeCcKLStkaXJlY3Rvcnkgd2UgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGUgaGVhZGVycyB3aWxsIGdvIGluCi0rJyRzeXNyb290L3Vzci9pbmNsdWRlJy4gIFRoZSAnaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycycgdmFyaWFibGUKLStyZXF1ZXN0cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjZXJ0YWluIHRyaWNreSBoZWFkZXIgZmlsZXMuCi0rCi0rTmV4dCwgdGhlcmUgYXJlIGEgZmV3IG9iamVjdCBmaWxlcyBuZWVkZWQgdG8gbGluayBzaGFyZWQgbGlicmFyaWVzLAotK3doaWNoIHdlIGJ1aWxkIGFuZCBpbnN0YWxsIGJ5IGhhbmQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJHN5c3Jvb3QvdXNyL2xpYgotKyAgICAkIG1ha2UgY3N1L3N1YmRpcl9saWIKLSsgICAgJCBjcCBjc3UvY3J0MS5vIGNzdS9jcnRpLm8gY3N1L2NydG4ubyAkc3lzcm9vdC91c3IvbGliCi0rCi0rRmluYWxseSwgJ2xpYmdjY19zLnNvJyByZXF1aXJlcyBhICdsaWJjLnNvJyB0byBsaW5rIGFnYWluc3QuICBIb3dldmVyLAotK3NpbmNlIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgZXhlY3V0ZSBpdHMgY29kZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdAotK2l0IGNvbnRhaW5zLiAgU28sIHRyZWF0aW5nICcvZGV2L251bGwnIGFzIGEgQyBzb3VyY2UgZmlsZSwgd2UgcHJvZHVjZQotK2EgZHVtbXkgJ2xpYmMuc28nIGluIG9uZSBzdGVwOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLXNoYXJlZCAteCBjIC9kZXYvbnVsbCBcCi0rICAgID4gICAgICAgICAgICAgICAgICAgICAgICAtbyAkc3lzcm9vdC91c3IvbGliL2xpYmMuc28KLSsKLSsKLStUaGUgU2Vjb25kIEdDQwotKwotK1dpdGggdGhlIEdMSUJDIGhlYWRlcnMgYW5kIHNlbGVjdGVkIG9iamVjdCBmaWxlcyBpbnN0YWxsZWQsIHdlIGNhbgotK25vdyBidWlsZCBhIEdDQyB0aGF0IGlzIGNhcGFibGUgb2YgY29tcGlsaW5nIEdMSUJDLiAgV2UgY29uZmlndXJlLAotK2J1aWxkLCBhbmQgaW5zdGFsbCB0aGUgc2Vjb25kIEdDQywgYWdhaW4gYnVpbGRpbmcgb25seSB0aGUgQyBjb21waWxlciwKLSthbmQgYXZvaWRpbmcgbGlicmFyaWVzIHdlIHdvbid0IHVzZToKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzIKLSsgICAgJCBjZCAkb2JqL2djYzIKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGliZmZpIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rCi0rR0xJQkMsIENvbXBsZXRlCi0rCi0rV2l0aCB0aGUgc2Vjb25kIGNvbXBpbGVyIGJ1aWx0IGFuZCBpbnN0YWxsZWQsIHdlJ3JlIG5vdyByZWFkeSBmb3IgdGhlCi0rZnVsbCBHTElCQyBidWlsZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjCi0rICAgICQgY2QgJG9iai9nbGliYwotKyAgICAkIEJVSUxEX0NDPWdjYyBcCi0rICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCi0rICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAotKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCi0rICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAotKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKLSsgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAotKyAgICA+ICAgICAtLXdpdGgta2NvbmZpZz0kb2JqL2xpbnV4L3NjcmlwdHMva2NvbmZpZyBcCi0rICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKLSsgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCi0rICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKLSsKLStOb3RlIHRoZSBhZGRpdGlvbmFsICctLXdpdGgta2NvbmZpZycgb3B0aW9uLiBUaGlzIHRlbGxzIEdMSUJDIHdoZXJlIHRvCi0rZmluZCB0aGUgaG9zdCBjb25maWcgdG9vbHMgdXNlZCBieSB0aGUga2VybmVsICdtYWtlIGNvbmZpZycgYW5kICdtYWtlCi0rbWVudWNvbmZpZycuICBUaGVzZSB0b29scyBjYW4gYmUgcmUtdXNlZCBieSBHTElCQyBmb3IgaXRzIG93biAnbWFrZQotKypjb25maWcnIHN1cHBvcnQsIHdoaWNoIHdpbGwgY3JlYXRlICdvcHRpb24tZ3JvdXBzLmNvbmZpZycgZm9yIHlvdS4KLStCdXQgZmlyc3QgbWFrZSBzdXJlIHRob3NlIHRvb2xzIGhhdmUgYmVlbiBidWlsdCBieSBydW5uaW5nIHNvbWUKLStkdW1teSAnbWFrZSAqY29uZmlnJyBjYWxscyBpbiB0aGUga2VybmVsIGRpcmVjdG9yeToKLSsKLSsgICAgJCBjZCAkb2JqL2xpbnV4Ci0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgY29uZmlnIFwKLSsgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZyBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKwotK05vdyB3ZSBjYW4gY29uZmlndXJlIGFuZCBidWlsZCB0aGUgZnVsbCBHTElCQzoKLSsKLSsgICAgJCBjZCAkb2JqL2dsaWJjCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgZGVmY29uZmlnCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbCBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QKLSsKLStBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgY29tcGxldGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCcsCi0rd2l0aCBoZWFkZXIgZmlsZXMsIGxpYnJhcnkgZmlsZXMsIGFuZCBtb3N0IG9mIHRoZSBDIHJ1bnRpbWUgc3RhcnR1cAotK2ZpbGVzIGluIHBsYWNlLgotKwotKwotK1RoZSBUaGlyZCBHQ0MKLSsKLStGaW5hbGx5LCB3ZSByZWNvbXBpbGUgR0NDIGFnYWluc3QgdGhpcyBmdWxsIGluc3RhbGxhdGlvbiwgZW5hYmxpbmcKLSt3aGF0ZXZlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcyB3ZSB3b3VsZCBsaWtlIHRvIHVzZToKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzMKLSsgICAgJCBjZCAkb2JqL2djYzMKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKysKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLStUaGUgJy0tZW5hYmxlLV9fY3hhX2F0ZXhpdCcgb3B0aW9uIHRlbGxzIEdDQyB3aGF0IHNvcnQgb2YgQysrCi0rZGVzdHJ1Y3RvciBzdXBwb3J0IHRvIGV4cGVjdCBmcm9tIHRoZSBDIGxpYnJhcnk7IGl0J3MgcmVxdWlyZWQgd2l0aAotK0dMSUJDLgotKwotK0FuZCBzaW5jZSBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VzcyBpc24ndCBkZXNpZ25lZCB0byBoZWxwIGNvbnN0cnVjdAotK3N5c3Jvb3QgdHJlZXMsIHdlIG11c3QgbWFudWFsbHkgY29weSBjZXJ0YWluIGxpYnJhcmllcyBpbnRvIHBsYWNlIGluCi0rdGhlIHN5c3Jvb3QuCi0rCi0rICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYmdjY19zLnNvKiAkc3lzcm9vdC9saWIKLSsgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGlic3RkYysrLnNvKiAkc3lzcm9vdC91c3IvbGliCi0rCi0rCi0rVHJ5aW5nIFRoaW5ncyBPdXQKLSsKLStBdCB0aGlzIHBvaW50LCAnJHRvb2xzJyBjb250YWlucyBhIGNyb3NzIHRvb2xjaGFpbiByZWFkeSB0byB1c2UKLSt0aGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCc6Ci0rCi0rICAgICQgY2F0ID4gaGVsbG8uYyA8PEVPRgotKyAgICA+ICNpbmNsdWRlIDxzdGRpby5oPgotKyAgICA+IGludAotKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsgICAgPiB7Ci0rICAgID4gICBwdXRzICgiSGVsbG8sIHdvcmxkISIpOwotKyAgICA+ICAgcmV0dXJuIDA7Ci0rICAgID4gfQotKyAgICA+IEVPRgotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLVdhbGwgaGVsbG8uYyAtbyBoZWxsbwotKyAgICAkIGNhdCA+IGMrKy1oZWxsby5jYyA8PEVPRgotKyAgICA+ICNpbmNsdWRlIDxpb3N0cmVhbT4KLSsgICAgPiBpbnQKLSsgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rICAgID4gewotKyAgICA+ICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgQysrIHdvcmxkISIgPDwgc3RkOjplbmRsOwotKyAgICA+ICAgcmV0dXJuIDA7Ci0rICAgID4gfQotKyAgICA+IEVPRgotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nKysgLVdhbGwgYysrLWhlbGxvLmNjIC1vIGMrKy1oZWxsbwotKwotKwotK1dlIGNhbiB1c2UgJ3JlYWRlbGYnIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSBpbmRlZWQgZXhlY3V0YWJsZXMgZm9yCi0rb3VyIHRhcmdldCwgdXNpbmcgb3VyIGR5bmFtaWMgbGlua2VyOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1obCBoZWxsbwotKyAgICBFTEYgSGVhZGVyOgotKyAgICAuLi4KLSsgICAgICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKLSsgICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSTQotKwotKyAgICAuLi4KLSsgICAgUHJvZ3JhbSBIZWFkZXJzOgotKyAgICAgIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCi0rICAgICAgUEhEUiAgICAgICAgICAgMHgwMDAwMzQgMHgxMDAwMDAzNCAweDEwMDAwMDM0IDB4MDAxMDAgMHgwMDEwMCBSIEUgMHg0Ci0rICAgICAgSU5URVJQICAgICAgICAgMHgwMDAxMzQgMHgwMDAwODEzNCAweDAwMDA4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCi0rICAgICAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IC9saWIvbGQtbGludXguc28uM10KLSsgICAgICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDA4MDAwIDB4MDAwMDgwMDAgMHgwMDQyYyAweDAwNDJjIFIgRSAweDgwMDAKLSsgICAgLi4uCi0rCi0rTG9va2luZyBhdCB0aGUgZHluYW1pYyBzZWN0aW9uIG9mIHRoZSBpbnN0YWxsZWQgJ2xpYmdjY19zLnNvJywgd2Ugc2VlCi0rdGhhdCB0aGUgJ05FRURFRCcgZW50cnkgZm9yIHRoZSBDIGxpYnJhcnkgZG9lcyBpbmNsdWRlIHRoZSAnLjYnCi0rc3VmZml4LCBpbmRpY2F0aW5nIHRoYXQgd2FzIGxpbmtlZCBhZ2FpbnN0IG91ciBmdWxseSBidWlsZCBHTElCQywgYW5kCi0rbm90IG91ciBkdW1teSAnbGliYy5zbyc6Ci0rCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWQgJHN5c3Jvb3QvbGliL2xpYmdjY19zLnNvLjEKLSsgICAgRHluYW1pYyBzZWN0aW9uIGF0IG9mZnNldCAweDEwODNjIGNvbnRhaW5zIDI0IGVudHJpZXM6Ci0rICAgICAgVGFnICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUvVmFsdWUKLSsgICAgIDB4MDAwMDAwMDEgKE5FRURFRCkgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgbGlicmFyeTogW2xpYmMuc28uNl0KLSsgICAgIDB4MDAwMDAwMGUgKFNPTkFNRSkgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IHNvbmFtZTogW2xpYmdjY19zLnNvLjFdCi0rICAgIC4uLgotKwotKwotK0FuZCBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUsIHdlIGNhbiBydW4gb3VyIHByb2dyYW1zOgotKwotKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKLSsgICAgPiAuL2hlbGxvCi0rICAgIEhlbGxvLCB3b3JsZCEKLSsgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCi0rICAgID4gLi9jKystaGVsbG8KLSsgICAgSGVsbG8sIEMrKyB3b3JsZCEKLWRpZmYgLS1naXQgYS9HTElCQy5jcm9zcy10ZXN0aW5nIGIvR0xJQkMuY3Jvc3MtdGVzdGluZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmI2N2I0NjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKLUBAIC0wLDAgKzEsMjA1IEBACi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KLSsKLSsgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtVGVzdGluZyBXaXRoIEdMSUJDCi0rICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgotKwotKwotK0ludHJvZHVjdGlvbgotKwotK0RldmVsb3BlcnMgd3JpdGluZyBzb2Z0d2FyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcyBvZnRlbiB1c2UgYSBkZXNrdG9wCi0rb3Igb3RoZXIgc2ltaWxhcmx5IGNhcGFibGUgY29tcHV0ZXIgZm9yIGRldmVsb3BtZW50LCBidXQgbmVlZCB0byBydW4KLSt0ZXN0cyBvbiB0aGUgZW1iZWRkZWQgc3lzdGVtLCBvciBwZXJoYXBzIG9uIGEgc2ltdWxhdG9yLiAgV2hlbgotK2NvbmZpZ3VyZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSBzaW1wbHkKLStkaXNhYmxlcyBydW5uaW5nIHRlc3RzIGFsdG9nZXRoZXI6IHRoZSBjb21tYW5kICdtYWtlIHRlc3RzJyBidWlsZHMKLSt0ZXN0IHByb2dyYW1zLCBidXQgZG9lcyBub3QgcnVuIHRoZW0uICBHTElCQywgaG93ZXZlciwgcHJvdmlkZXMKLStmYWNpbGl0aWVzIGZvciBjb21waWxpbmcgdGVzdHMgYW5kIGdlbmVyYXRpbmcgZGF0YSBmaWxlcyBvbiB0aGUgYnVpbGQKLStzeXN0ZW0sIGJ1dCBydW5uaW5nIHRoZSB0ZXN0IHByb2dyYW1zIHRoZW1zZWx2ZXMgb24gYSByZW1vdGUgc3lzdGVtIG9yCi0rc2ltdWxhdG9yLgotKwotKwotK1Rlc3QgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzCi0rCi0rVGhlIHRlc3QgZW52aXJvbm1lbnQgbXVzdCBtZWV0IGNlcnRhaW4gY29uZGl0aW9ucyBmb3IgR0xJQkMncwotK2Nyb3NzLXRlc3RpbmcgZmFjaWxpdGllcyB0byB3b3JrOgotKwotKy0gU2hhcmVkIGZpbGVzeXN0ZW1zLiAgVGhlICdidWlsZCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgY29uZmlndXJlIGFuZAotKyAgY29tcGlsZSBHTElCQywgYW5kIHRoZSAnaG9zdCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgaW50ZW5kIHRvIHJ1bgotKyAgR0xJQkMsIG11c3Qgc2hhcmUgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIEdMSUJDIGJ1aWxkIGFuZAotKyAgc291cmNlIHRyZWVzLiAgRmlsZXMgbXVzdCBhcHBlYXIgYXQgdGhlIHNhbWUgcGF0aHMgb24gYm90aCBzeXN0ZW1zLgotKwotKy0gUmVtb3RlLXNoZWxsIGxpa2UgaW52b2NhdGlvbi4gIFRoZXJlIG11c3QgYmUgYSB3YXkgdG8gcnVuIGEgcHJvZ3JhbQotKyAgb24gdGhlIGhvc3Qgc3lzdGVtIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgcGFzc2luZyBpdCBwcm9wZXJseSBxdW90ZWQKLSsgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQKLSsgIGluaGVyaXRpbmcgdGhlIGNhbGxlcidzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCi0rCi0rCi0rVXNhZ2UKLSsKLStUbyB1c2UgR0xJQkMncyBjcm9zcy10ZXN0aW5nIHN1cHBvcnQsIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUKLStmb2xsb3dpbmcgTWFrZSB2YXJpYWJsZXMgd2hlbiB5b3UgaW52b2tlICdtYWtlJzoKLSsKLSstIGNyb3NzLXRlc3Qtd3JhcHBlcgotKwotKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciBjb21tYW5kLCBhbG9uZwotKyAgd2l0aCBhbnkgYXJndW1lbnRzLgotKwotKy0gY3Jvc3MtbG9jYWxlZGVmCi0rCi0rICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIGNyb3NzLWNhcGFibGUgbG9jYWxlZGVmIHByb2dyYW0sIGxpa2UKLSsgIHRoYXQgaW5jbHVkZWQgaW4gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSwgYWxvbmcgd2l0aCBhbnkKLSsgIGFyZ3VtZW50cyBuZWVkZWQuCi0rCi0rVGhlc2UgYXJlIGVhY2ggZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdy4KLSsKLSsKLStUaGUgQ3Jvc3MtVGVzdGluZyBXcmFwcGVyCi0rCi0rVG8gcnVuIHRlc3QgcHJvZ3JhbXMgcmVsaWFibHksIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHRha2VzIGNhcmUgdG8KLStlbnN1cmUgdGhhdCB0ZXN0IHByb2dyYW1zIHVzZSB0aGUgbmV3bHkgY29tcGlsZWQgZHluYW1pYyBsaW5rZXIgYW5kCi0rc2hhcmVkIGxpYnJhcmllcywgYW5kIG5ldmVyIHRoZSBob3N0IHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuICBUbwotK2FjY29tcGxpc2ggdGhpcywgaXQgcnVucyB0aGUgdGVzdHMgYnkgZXhwbGljaXRseSBpbnZva2luZyB0aGUgZHluYW1pYwotK2xpbmtlciBmcm9tIHRoZSBidWlsZCB0cmVlLCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBidWlsZCB0cmVlCi0rZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBzaGFyZWQgbGlicmFyaWVzLCBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZgotK3RoZSBleGVjdXRhYmxlIHRvIHJ1biBhbmQgaXRzIGFyZ3VtZW50cy4KLSsKLStGb3IgZXhhbXBsZSwgd2hlcmUgb25lIG1pZ2h0IG5vcm1hbGx5IHJ1biBhIHRlc3QgcHJvZ3JhbSBsaWtlIHRoaXM6Ci0rCi0rICAgICQgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotK3RoZSBHTlUgQyBsaWJyYXJ5IG1pZ2h0IHJ1biB0aGF0IHByb2dyYW0gbGlrZSB0aGlzOgotKwotKyAgICAkICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyh3aGVyZSAkb2JqZGlyIGlzIHRoZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIGJ1aWxkIHRyZWUsIGFuZCB0aGUKLSt0cmFpbGluZyBiYWNrc2xhc2ggaW5kaWNhdGVzIGEgY29udGludWF0aW9uIG9mIHRoZSBjb21tYW5kKS4gIEluIG90aGVyCi0rd29yZHMsIGVhY2ggdGVzdCBwcm9ncmFtIGludm9jYXRpb24gaXMgJ3dyYXBwZWQgdXAnIGluc2lkZSBhbiBleHBsaWNpdAotK2ludm9jYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB3aGljaCBtdXN0IGl0c2VsZiBleGVjdXRlIHRoZSB0ZXN0Ci0rcHJvZ3JhbSwgaGF2aW5nIGxvYWRlZCBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCi0rZGlyZWN0b3JpZXMuCi0rCi0rVG8gc3VwcG9ydCBjcm9zcy10ZXN0aW5nLCBHTElCQyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBvcHRpb25hbGx5Ci0rc2V0IHRoZSAnY3Jvc3MtdGVzdC13cmFwcGVyJyBNYWtlIHZhcmlhYmxlIHRvIGFub3RoZXIgd3JhcHBlciBjb21tYW5kLAotK3RvIHdoaWNoIGl0IHBhc3NlcyB0aGUgZW50aXJlIGR5bmFtaWMgbGlua2VyIGludm9jYXRpb24gc2hvd24gYWJvdmUgYXMKLSthcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGRldmVsb3BlciBzdXBwbGllcyBhIHdyYXBwZXIgb2YKLSsnbXktd3JhcHBlciBob3N0bmFtZScsIHRoZW4gR0xJQkMgd291bGQgcnVuIHRoZSB0ZXN0IGFib3ZlIGFzCi0rZm9sbG93czoKLSsKLSsgICAgJCBteS13cmFwcGVyIGhvc3RuYW1lIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLStUaGUgJ215LXdyYXBwZXInIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyB0aGUgY29tbWFuZAotK2dpdmVuIG9uIHRoZSBob3N0IHN5c3RlbS4KLSsKLStTaW5jZSB0ZXN0cyBhcmUgcnVuIGluIHZhcnlpbmcgZGlyZWN0b3JpZXMsIHRoZSB3cmFwcGVyIHNob3VsZCBlaXRoZXIKLStiZSBpbiB5b3VyIGNvbW1hbmQgc2VhcmNoIHBhdGgsIG9yICdjcm9zcy10ZXN0LXdyYXBwZXInIHNob3VsZCBnaXZlIGFuCi0rYWJzb2x1dGUgcGF0aCBmb3IgdGhlIHdyYXBwZXIuCi0rCi0rVGhlIHdyYXBwZXIgbXVzdCBtZWV0IHNldmVyYWwgcmVxdWlyZW1lbnRzOgotKwotKy0gSXQgbXVzdCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBBcyBleHBsYWluZWQgYWJvdmUsIHRoZQotKyAgYnVpbGQgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSB2aXNpYmxlIG9uIGJvdGggdGhlIGJ1aWxkIGFuZCBob3N0Ci0rICBzeXN0ZW1zLCBhdCB0aGUgc2FtZSBwYXRoLiAgVGhlIHRlc3Qgd3JhcHBlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQotKyAgY3VycmVudCBkaXJlY3RvcnkgaXQgaW5oZXJpdHMgaXMgYWxzbyBpbmhlcml0ZWQgYnkgdGhlIGR5bmFtaWMKLSsgIGxpbmtlciAoYW5kIHRodXMgdGhlIHRlc3QgcHJvZ3JhbSBpdHNlbGYpLgotKwotKy0gSXQgbXVzdCBwcmVzZXJ2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMnIHZhbHVlcy4gIE1hbnkgR0xJQkMgdGVzdHMKLSsgIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3QgcnVuczsgaW4gbmF0aXZlIHRlc3RpbmcsIGl0Ci0rICBpbnZva2VzIHByb2dyYW1zIGxpa2UgdGhpczoKLSsKLSsgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsgIFdpdGggdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciwgdGhhdCBpbnZvY2F0aW9uIGJlY29tZXM6Ci0rCi0rICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCi0rICAgICAgbXktd3JhcHBlciBob3N0bmFtZSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rICBIZXJlLCAnbXktd3JhcHBlcicgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXQgc2VlcyBmb3IKLSsgICdHQ09OVl9QQVRIJyB3aWxsIGJlIHNlZW4gYnkgdGhlIGR5bmFtaWMgbGlua2VyLCBhbmQgdGh1cyAndHN0LWZvbycKLSsgIGl0c2VsZi4gIChUaGUgd3JhcHBlciBzdXBwbGllZCB3aXRoIEdMSUJDIHNpbXBseSBwcmVzZXJ2ZXMgdGhlCi0rICB2YWx1ZXMgb2YgKmFsbCogZW52aXJvbWVudCB2YXJpYWJsZXMsIHdpdGggYSBmaXhlZCBzZXQgb2YKLSsgIGV4Y2VwdGlvbnMuKQotKwotKyAgSWYgeW91ciB3cmFwcGVyIGlzIGEgc2hlbGwgc2NyaXB0LCB0YWtlIGNhcmUgdG8gY29ycmVjdGx5IHByb3BhZ2F0ZQotKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdob3NlIHZhbHVlcyBjb250YWluIHNwYWNlcyBhbmQgc2hlbGwKLSsgIG1ldGFjaGFyYWN0ZXJzLgotKwotKy0gSXQgbXVzdCBwYXNzIHRoZSBjb21tYW5kJ3MgYXJndW1lbnRzLCB1bm1vZGlmaWVkLiAgVGhlIGFyZ3VtZW50cwotKyAgc2VlbiBieSB0aGUgdGVzdCBwcm9ncmFtIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHNlZW4gYnkgdGhlIHdyYXBwZXIKLSsgIChhZnRlciB3aGF0ZXZlciBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIHRoZSB3cmFwcGVyIGl0c2VsZikuICBUaGUKLSsgIEdMSUJDIHRlc3QgZnJhbWV3b3JrIHBlcmZvcm1zIGFsbCBuZWVkZWQgc2hlbGwgd29yZCBzcGxpdHRpbmcgYW5kCi0rICBleHBhbnNpb24gKHdpbGRjYXJkIGV4cGFuc2lvbiwgcGFyYW1ldGVyIHN1YnN0aXR1dGlvbiwgYW5kIHNvIG9uKQotKyAgYmVmb3JlIGludm9raW5nIHRoZSB3cmFwcGVyOyBmdXJ0aGVyIGV4cGFuc2lvbiBtYXkgYnJlYWsgdGhlIHRlc3RzLgotKwotKwotK1RoZSAnY3Jvc3MtdGVzdC1zc2guc2gnIHNjcmlwdAotKwotK0lmIHlvdSB3YW50IHRvIHVzZSAnc3NoJyAob3Igc29tZXRoaW5nIHN1ZmZpY2llbnRseSBzaW1pbGFyKSB0byBydW4KLSt0ZXN0IHByb2dyYW1zIG9uIHlvdXIgaG9zdCBzeXN0ZW0sIEdMSUJDIGluY2x1ZGVzIGEgc2hlbGwgc2NyaXB0LAotKydzY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoJywgd2hpY2ggeW91IGNhbiB1c2UgYXMgeW91ciB3cmFwcGVyCi0rY29tbWFuZC4gIFRoaXMgc2NyaXB0IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgdGVzdCBjb21tYW5kJ3MgY3VycmVudAotK2RpcmVjdG9yeSwgcHJvcGFnYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLCBhbmQgY2FycnlpbmcKLStjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBhbGwgYWNyb3NzIGFuICdzc2gnIGNvbm5lY3Rpb24uICBZb3UgbWF5IGV2ZW4KLStzdXBwbHkgYW4gYWx0ZXJuYXRpdmUgdG8gJ3NzaCcgb24gdGhlIGNvbW1hbmQgbGluZSwgaWYgbmVlZGVkLgotKwotK0ZvciBtb3JlIGRldGFpbHMsIHBhc3MgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyB0aGUgJy0taGVscCcgb3B0aW9uLgotKwotKwotK1RoZSBDcm9zcy1Db21waWxpbmcgTG9jYWxlIERlZmluaXRpb24gQ29tbWFuZAotKwotK1NvbWUgR0xJQkMgdGVzdHMgcmVseSBvbiBsb2NhbGVzIGdlbmVyYXRlZCBlc3BlY2lhbGx5IGZvciB0aGUgdGVzdAotK3Byb2Nlc3MuICBJbiBhIG5hdGl2ZSBjb25maWd1cmF0aW9uLCB0aGVzZSB0ZXN0cyBzaW1wbHkgcnVuIHRoZQotKydsb2NhbGVkZWYnIGNvbW1hbmQgYnVpbHQgYnkgdGhlIG5vcm1hbCBHTElCQyBidWlsZCBwcm9jZXNzLAotKydsb2NhbGUvbG9jYWxlZGVmJywgdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGVpciBsb2NhbGVzLiAgSG93ZXZlciwgaW4KLSthIGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmF0aW9uLCB0aGlzICdsb2NhbGVkZWYnIGlzIGJ1aWx0IGZvciB0aGUKLStob3N0IHN5c3RlbSwgbm90IHRoZSBidWlsZCBzeXN0ZW0sIGFuZCBzaW5jZSBpdCByZXF1aXJlcyBxdWl0ZSBhIGJpdAotK29mIG1lbW9yeSB0byBydW4gKHdlIGhhdmUgc2VlbiBpdCBmYWlsIG9uIHN5c3RlbXMgd2l0aCA2NE1pQiBvZgotK21lbW9yeSksIGl0IG1heSBub3QgYmUgcHJhY3RpY2FsIHRvIHJ1biBpdCBvbiB0aGUgaG9zdCBzeXN0ZW0uCi0rCi0rSWYgc2V0LCBHTElCQyB1c2VzIHRoZSAnY3Jvc3MtbG9jYWxlZGVmJyBNYWtlIHZhcmlhYmxlIGFzIHRoZSBjb21tYW5kCi0rdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCBsb2NhbGVzLiAgVGhlCi0rbG9jYWxlZGVmIHByb2dyYW0gYnVpbHQgZnJvbSB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlIGlzCi0rc3VpdGFibGUuCi0rCi0rVGhlIHZhbHVlIG9mICdjcm9zcy1sb2NhbGVkZWYnIG1heSBhbHNvIGluY2x1ZGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cwotK3RvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbTsgaWYgeW91IGFyZSB1c2luZyBHTElCQydzICdsb2NhbGVkZWYnLAotK3lvdSBtYXkgaW5jbHVkZSBlbmRpYW5uZXNzIGFuZCAndWludDMyX3QnIGFsaWdubWVudCBhcmd1bWVudHMgaGVyZS4KLSsKLSsKLStFeGFtcGxlCi0rCi0rSW4gZGV2ZWxvcGluZyBHTElCQydzIGNyb3NzLXRlc3RpbmcgZmFjaWxpdHksIHdlIGludm9rZWQgJ21ha2UnIHdpdGgKLSt0aGUgZm9sbG93aW5nIHNjcmlwdDoKLSsKLSsgICAgIyEvYmluL3NoCi0rCi0rICAgIHNyY2Rpcj0uLi4KLSsgICAgdGVzdF9ob3N0bmFtZT0uLi4KLSsgICAgbG9jYWxlZGVmZGlyPS4uLgotKyAgICBjcm9zc19neHg9Li4uLWcrKwotKwotKyAgICB3cmFwcGVyPSIkc3JjZGlyL3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggJHRlc3RfaG9zdG5hbWUiCi0rICAgIGxvY2FsZWRlZj0iJGxvY2FsZWRlZmRpci9sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCi0rCi0rICAgIG1ha2UgY3Jvc3MtdGVzdC13cmFwcGVyPSIkd3JhcHBlciIgXAotKyAgICAgICAgIGNyb3NzLWxvY2FsZWRlZj0iJGxvY2FsZWRlZiIgXAotKyAgICAgICAgIENYWD0iJGNyb3NzX2d4eCIgXAotKyAgICAgICAgICIkQCIKLSsKLSsKLStPdGhlciBDcm9zcy1UZXN0aW5nIENvbmNlcm5zCi0rCi0rSGVyZSBhcmUgbm90ZXMgb24gc29tZSBvdGhlciBpc3N1ZXMgd2hpY2ggeW91IG1heSBlbmNvdW50ZXIgaW4gcnVubmluZwotK3RoZSBHTElCQyB0ZXN0cyBpbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudDoKLSsKLSstIFNvbWUgdGVzdHMgcmVxdWlyZSBhIEMrKyBjcm9zcy1jb21waWxlcjsgeW91IHNob3VsZCBzZXQgdGhlICdDWFgnCi0rICBNYWtlIHZhcmlhYmxlIHRvIHRoZSBuYW1lIG9mIGFuIGFwcHJvcHJpYXRlIGNyb3NzLWNvbXBpbGVyLgotKwotKy0gU29tZSB0ZXN0cyByZXF1aXJlIGFjY2VzcyB0byBsaWJzdGRjKysuc28uNiBhbmQgbGliZ2NjX3Muc28uMTsgd2UKLSsgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKLSsgIGRpcmVjdG9yeS4KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZjM1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCkBAIC0wLDAgKzEsMTAwIEBACitGcm9tIDExNjFjZDFjNjgzNTQ3ZDI5YTAzNjI2ZDlkN2RlN2Y5Y2MwM2I3NGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAorU3ViamVjdDogW1BBVENIIDE4LzI1XSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgorCitUYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQorCisgICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKKyAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KKworICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcworICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgorICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCisgICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgorICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCisgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAzZTBhZTZmNDNiLi4yNGRjNjZkMTdjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNzAsOSArNzAsMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCisgdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCisgCisgIyBXaGF0IHRvIGluc3RhbGwuCistaW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKyBpbnN0YWxsLWJpbi1zY3JpcHQgPQorIAorKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCisrIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCisrIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKKysjIGJ1aWxkIGlzIGRvbmUuCisraWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCisraW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbHNlCisraW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbmRpZgorKworIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCisgaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKKyBlbmRpZgorQEAgLTE1Miw2ICsxNjEsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaAorIAorIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKKyAKKysjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubworKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5CisrIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KKytpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKKyskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCisrCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQorKwkkKElOU1RBTExfREFUQSkgJDwgJEAKKysKKytpbnN0YWxsZWQtc3R1YnMgPQorK2Vsc2UKKyBpZm5kZWYgYWJpLXZhcmlhbnRzCisgaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisgZWxzZQorQEAgLTE3OCw2ICsxOTcsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQorIAorIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKKyBlbmRpZgorK2VuZGlmCisgCisgCisgIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjFkMmI2NjlhZmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCisrCisrICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCisrICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0CisrICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgorKworKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCisrCisrICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCisrICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQorKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKKysgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGIyOGNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApAQCAtMCwwICsxLDgzIEBACitGcm9tIDE3MzJjN2YyNTQ1M2M4NzljMTc3MDE4MzllZjM0ODc2YTczNTcwMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNToxNTowOSAtMDgwMAorU3ViamVjdDogW1BBVENIIDE5LzI1XSBlZ2xpYmM6IENsZWFyIGNhY2hlIGxpbmVzIG9uIHBwYzh4eAorCisyMDA3LTA2LTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgorICAgICAgICAgICAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYworICAgICAgICAoX19saWJjX3N0YXJ0X21haW4pOiBEZXRlY3QgOHh4IHBhcnRzIGFuZCBjbGVhcgorICAgICAgICBfX2NhY2hlX2xpbmVfc2l6ZSBpZiBkZXRlY3RlZC4KKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCisgICAgICAgIChETF9QTEFURk9STV9BVVhWKTogTGlrZXdpc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyAgfCAxNCArKysrKysrKysrKysrLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIHwgMTYgKysrKysrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCitpbmRleCAyM2Y1ZDVkMzg4Li43ZTQ1Mjg4ZGI3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYworQEAgLTI0LDkgKzI0LDIxIEBAIGludCBfX2NhY2hlX2xpbmVfc2l6ZSBhdHRyaWJ1dGVfaGlkZGVuOworIC8qIFNjYW4gdGhlIEF1eCBWZWN0b3IgZm9yIHRoZSAiRGF0YSBDYWNoZSBCbG9jayBTaXplIiBlbnRyeS4gIElmIGZvdW5kCisgICAgdmVyaWZ5IHRoYXQgdGhlIHN0YXRpYyBleHRlcm4gX19jYWNoZV9saW5lX3NpemUgaXMgZGVmaW5lZCBieSBjaGVja2luZworICAgIGZvciBub3QgTlVMTC4gIElmIGl0IGlzIGRlZmluZWQgdGhlbiBhc3NpZ24gdGhlIGNhY2hlIGJsb2NrIHNpemUKKy0gICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gICovCisrICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvCisrICAgb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0byBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoCisrICAgaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0IGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMKKysgICBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLCB3aGljaCBpcyBhIHByaXZpbGVnZWQKKysgICBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIKKysgICByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAgKi8KKyAjZGVmaW5lIERMX1BMQVRGT1JNX0FVWFYJCQkJCQkgICAgICBcCisgICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToJCQkJCQkgICAgICBcCisrCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQkJCQkgICAgICBcCisrCSAgewkJCQkJCQkJICAgICAgXAorKwkgICAgdW5zaWduZWQgcHZyID0gMDsJCQkJCQkgICAgICBcCisrCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikpOwkJCQkgICAgICBcCisrCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCQkJICAgICAgXAorKwkgICAgICBicmVhazsJCQkJCQkJICAgICAgXAorKwkgIH0JCQkJCQkJCSAgICAgIFwKKyAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsJCQkJICAgICAgXAorIAlicmVhazsKKyAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCitpbmRleCBhZDAzNmMxZTRiLi5hZmVlNTZhM2RhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCitAQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCisgCisgICAvKiBJbml0aWFsaXplIHRoZSBfX2NhY2hlX2xpbmVfc2l6ZSB2YXJpYWJsZSBmcm9tIHRoZSBhdXggdmVjdG9yLiAgRm9yIHRoZQorICAgICAgc3RhdGljIGNhc2UsIHdlIGFsc28gbmVlZCBfZGxfaHdjYXAsIF9kbF9od2NhcDIgYW5kIF9kbF9wbGF0Zm9ybSwgc28gd2UKKy0gICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLiAgKi8KKysgICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLgorKworKyAgICAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0byBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvCisrICAgICBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdAorKyAgICAgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cyBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLAorKyAgICAgd2hpY2ggaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIKKysgICAgIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgKi8KKyAgIGZvciAoRWxmVyAoYXV4dl90KSAqIGF2ID0gYXV4dmVjOyBhdi0+YV90eXBlICE9IEFUX05VTEw7ICsrYXYpCisgICAgIHN3aXRjaCAoYXYtPmFfdHlwZSkKKyAgICAgICB7CisgICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToKKysJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCisrCSAgeworKwkgICAgdW5zaWduZWQgcHZyID0gMDsKKysKKysJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSA6KTsKKysJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkKKysJICAgICAgYnJlYWs7CisrCSAgfQorIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOworIAlicmVhazsKKyAjaWZuZGVmIFNIQVJFRAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1OTIxYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1Gcm9tIDJjYjdlM2NhZTQwMjBmNDMxZDQyNmFkMTc0MGJiMjU1MDZjZGU4OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAotU3ViamVjdDogW1BBVENIIDE5LzI2XSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgotCi1UYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQotCi0gICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgotICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKLSAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KLQotICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCi0gICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcwotICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgotICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCi0gICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgotICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCi0gaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAxYWUzMjgxLi4yNmFiN2JmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNzAsOSArNzAsMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCi0gdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCi0gCi0gIyBXaGF0IHRvIGluc3RhbGwuCi0taW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLSBpbnN0YWxsLWJpbi1zY3JpcHQgPQotIAotKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCi0rIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCi0rIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKLSsjIGJ1aWxkIGlzIGRvbmUuCi0raWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCi0raW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLStlbHNlCi0raW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLStlbmRpZgotKwotIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCi0gaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKLSBlbmRpZgotQEAgLTE1Miw2ICsxNjEsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaAotIAotIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKLSAKLSsjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubwotKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5Ci0rIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KLStpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKLSskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCi0rCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQotKwkkKElOU1RBTExfREFUQSkgJDwgJEAKLSsKLStpbnN0YWxsZWQtc3R1YnMgPQotK2Vsc2UKLSBpZm5kZWYgYWJpLXZhcmlhbnRzCi0gaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0gZWxzZQotQEAgLTE3OCw2ICsxOTcsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQotIAotIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKLSBlbmRpZgotK2VuZGlmCi0gCi0gCi0gIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjFkMmI2NjkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLUBAIC0wLDAgKzEsMTIgQEAKLSsvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCi0rCi0rICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCi0rICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0Ci0rICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgotKwotKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCi0rCi0rICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCi0rICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQotKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKLSsgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgzNWQ4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDEwOGIzYTFkZjk2YTg1NTIyYzUyYTBkZWMwMzJmYzJjMTA2ZjVmMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo1NTo1MyArMDAwMAorU3ViamVjdDogW1BBVENIIDIwLzI1XSBlZ2xpYmM6IFJlc29sdmUgX19mcHNjcl92YWx1ZXMgb24gU0g0CisKKzIwMTAtMDktMjkgIE5vYnVoaXJvIEl3YW1hdHN1ICA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisgICAgICAgICAgICBBbmRyZXcgU3R1YmJzICA8YW1zQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgUmVzb2x2ZSBTSCdzIF9fZnBzY3JfdmFsdWVzIHRvIHN5bWJvbCBpbiBsaWJjLnNvLgorCisgICAgICAgICogc3lzZGVwcy9zaC9zaDQvZnB1L2ZwdV9jb250cm9sLmg6IEFkZCBDKysgX19zZXRfZnBzY3IgcHJvdG90eXBlLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIChHTElCQ18yLjIpOiBBZGQgX19mcHNjcl92YWx1ZXMuCisgICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgKF9fX2Zwc2NyX3ZhbHVlcyk6IE5ldyBjb25zdGFudC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyB8ICAxICsKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyB8IDExICsrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCitpbmRleCBlMDkzOGM0MTY1Li5jYTFkN2RhMzM5IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCitAQCAtMiw2ICsyLDcgQEAgbGliYyB7CisgICBHTElCQ18yLjIgeworICAgICAjIGZ1bmN0aW9ucyB1c2VkIGluIG90aGVyIGxpYnJhcmllcworICAgICBfX3hzdGF0NjQ7IF9fZnhzdGF0NjQ7IF9fbHhzdGF0NjQ7CisrICAgIF9fZnBzY3JfdmFsdWVzOworIAorICAgICAjIGEqCisgICAgIGFscGhhc29ydDY0OworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKK2luZGV4IDVmMTFiYzczN2IuLjJmZDIxN2IwMGIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKK0BAIC0zMCwzICszMCwxNCBAQCBFTlRSWSAoX19zeXNjYWxsX2Vycm9yKQorIAorICNkZWZpbmUgX19zeXNjYWxsX2Vycm9yIF9fc3lzY2FsbF9lcnJvcl8xCisgI2luY2x1ZGUgPHN5c2RlcHMvdW5peC9zaC9zeXNkZXAuUz4KKysKKysgICAgICAgLmRhdGEKKysgICAgICAgLmFsaWduIDMKKysgICAgICAgLmdsb2JsIF9fX2Zwc2NyX3ZhbHVlcworKyAgICAgICAudHlwZSBfX19mcHNjcl92YWx1ZXMsIEBvYmplY3QKKysgICAgICAgLnNpemUgX19fZnBzY3JfdmFsdWVzLCA4CisrX19fZnBzY3JfdmFsdWVzOgorKyAgICAgICAubG9uZyAwCisrICAgICAgIC5sb25nIDB4ODAwMDAKKyt3ZWFrX2FsaWFzIChfX19mcHNjcl92YWx1ZXMsIF9fZnBzY3JfdmFsdWVzKQorKworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzNDQ1NzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gYjJlZDkwNmVjODY0NTgzYjQzMzc5ZWY5YWQyYjU2MzBjMTIzMjU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjEwOjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvMjZdIGVnbGliYzogY2hlcnJ5LXBpY2tlZCBmcm9tCi0KLWh0dHA6Ly93d3cuZWdsaWJjLm9yZy9hcmNoaXZlcy9wYXRjaGVzL21zZzAwNzcyLmh0bWwKLQotTm90IHlldCBtZXJnZWQgaW50byBnbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHJlc29sdi9yZXNfbGliYy5jIHwgMTQgKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcmVzb2x2L3Jlc19saWJjLmMgYi9yZXNvbHYvcmVzX2xpYmMuYwotaW5kZXggYTRiMzc2Zi4uMzI1NmUxMiAxMDA2NDQKLS0tLSBhL3Jlc29sdi9yZXNfbGliYy5jCi0rKysgYi9yZXNvbHYvcmVzX2xpYmMuYwotQEAgLTIxLDExICsyMSwxMyBAQAotICNpbmNsdWRlIDxhdG9taWMuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgotICNpbmNsdWRlIDxyZXNvbHYuaD4KLSAjaW5jbHVkZSA8bGliYy1sb2NrLmg+Ci0gCi0rX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkIChzdGF0aWMsIGxvY2spOwotIGV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fcmVzX2luaXRzdGFtcCBhdHRyaWJ1dGVfaGlkZGVuOwotIC8qIFdlIGhhdmUgYXRvbWljIGluY3JlbWVudCBvcGVyYXRpb25zIG9uIDY0LWJpdCBwbGF0Zm9ybXMuICAqLwotICNpZiBfX1dPUkRTSVpFID09IDY0Ci1AQCAtMzMsNyArMzUsNiBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3Jlc19pbml0c3RhbXAgYXR0cmlidXRlX2hpZGRlbjsKLSAjIGRlZmluZSBhdG9taWNpbmN1bmxvY2sobG9jaykgKHZvaWQpIDAKLSAjIGRlZmluZSBhdG9taWNpbmModmFyKSBjYXRvbWljX2luY3JlbWVudCAoJih2YXIpKQotICNlbHNlCi0tX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkIChzdGF0aWMsIGxvY2spOwotICMgZGVmaW5lIGF0b21pY2luY2xvY2sobG9jaykgX19saWJjX2xvY2tfbG9jayAobG9jaykKLSAjIGRlZmluZSBhdG9taWNpbmN1bmxvY2sobG9jaykgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKQotICMgZGVmaW5lIGF0b21pY2luYyh2YXIpICsrdmFyCi1AQCAtOTIsNyArOTMsMTggQEAgcmVzX2luaXQodm9pZCkgewotIGludAotIF9fcmVzX21heWJlX2luaXQgKHJlc19zdGF0ZSByZXNwLCBpbnQgcHJlaW5pdCkKLSB7Ci0rCXN0YXRpYyB0aW1lX3QgbGFzdF9tdGltZTsKLSsJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSsJaW50IHJldDsKLSsKLSAJaWYgKHJlc3AtPm9wdGlvbnMgJiBSRVNfSU5JVCkgewotKwkJcmV0ID0gc3RhdCAoX1BBVEhfUkVTQ09ORiwgJnN0YXRidWYpOwotKwkJX19saWJjX2xvY2tfbG9jayAobG9jayk7Ci0rCQlpZiAoKHJldCA9PSAwKSAmJiAobGFzdF9tdGltZSAhPSBzdGF0YnVmLnN0X210aW1lKSkgewotKwkJCWxhc3RfbXRpbWUgPSBzdGF0YnVmLnN0X210aW1lOwotKwkJCWF0b21pY2luYyAoX19yZXNfaW5pdHN0YW1wKTsKLSsJCX0KLSsJCV9fbGliY19sb2NrX3VubG9jayAobG9jayk7Ci0gCQlpZiAoX19yZXNfaW5pdHN0YW1wICE9IHJlc3AtPl91Ll9leHQuaW5pdHN0YW1wKSB7Ci0gCQkJaWYgKHJlc3AtPm5zY291bnQgPiAwKQotIAkJCQlfX3Jlc19pY2xvc2UgKHJlc3AsIHRydWUpOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YTczOTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLUZyb20gMDAwYWI1MThhYTEyNjk3MTRiYzBhOWE0NjMzYjBhNTM4ZmFlOTFkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjE1OjA5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMjZdIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4Ci0KLTIwMDctMDYtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgICAgICAgICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi0gICAgICAgIChfX2xpYmNfc3RhcnRfbWFpbik6IERldGVjdCA4eHggcGFydHMgYW5kIGNsZWFyCi0gICAgICAgIF9fY2FjaGVfbGluZV9zaXplIGlmIGRldGVjdGVkLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLSAgICAgICAgKERMX1BMQVRGT1JNX0FVWFYpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jICB8IDE0ICsrKysrKysrKysrKystCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgfCAxNiArKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLWluZGV4IDk4ZWMyYjMuLmIzODRhZTAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi1AQCAtMjQsOSArMjQsMjEgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJpYnV0ZV9oaWRkZW47Ci0gLyogU2NhbiB0aGUgQXV4IFZlY3RvciBmb3IgdGhlICJEYXRhIENhY2hlIEJsb2NrIFNpemUiIGVudHJ5LiAgSWYgZm91bmQKLSAgICB2ZXJpZnkgdGhhdCB0aGUgc3RhdGljIGV4dGVybiBfX2NhY2hlX2xpbmVfc2l6ZSBpcyBkZWZpbmVkIGJ5IGNoZWNraW5nCi0gICAgZm9yIG5vdCBOVUxMLiAgSWYgaXQgaXMgZGVmaW5lZCB0aGVuIGFzc2lnbiB0aGUgY2FjaGUgYmxvY2sgc2l6ZQotLSAgIHZhbHVlIHRvIF9fY2FjaGVfbGluZV9zaXplLiAgKi8KLSsgICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gIFRoaXMgaXMgdXNlZCBieSBtZW1zZXQgdG8KLSsgICBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2gKLSsgICBoYXZlIGJ1Z2d5IGRjYnogaW1wbGVtZW50YXRpb25zIHRoYXQgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cwotKyAgIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsIHdoaWNoIGlzIGEgcHJpdmlsZWdlZAotKyAgIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIgZW11bGF0ZXMgUG93ZXJQQyBtZnNwcgotKyAgIHJlYWRzIGZyb20gdGhlIFBWUiByZWdpc3Rlci4gICAqLwotICNkZWZpbmUgRExfUExBVEZPUk1fQVVYVgkJCQkJCSAgICAgIFwKLSAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgkJCQkJCSAgICAgIFwKLSsJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCQkJCSAgICAgIFwKLSsJICB7CQkJCQkJCQkgICAgICBcCi0rCSAgICB1bnNpZ25lZCBwdnIgPSAwOwkJCQkJCSAgICAgIFwKLSsJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSk7CQkJCSAgICAgIFwKLSsJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkJCQkgICAgICBcCi0rCSAgICAgIGJyZWFrOwkJCQkJCQkgICAgICBcCi0rCSAgfQkJCQkJCQkJICAgICAgXAotIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOwkJCQkgICAgICBcCi0gCWJyZWFrOwotIAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLWluZGV4IDBlZmQyOTcuLjhjYzBlZjggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLUBAIC03MywxMSArNzMsMjUgQEAgX19saWJjX3N0YXJ0X21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndiwKLSAKLSAgIC8qIEluaXRpYWxpemUgdGhlIF9fY2FjaGVfbGluZV9zaXplIHZhcmlhYmxlIGZyb20gdGhlIGF1eCB2ZWN0b3IuICBGb3IgdGhlCi0gICAgICBzdGF0aWMgY2FzZSwgd2UgYWxzbyBuZWVkIF9kbF9od2NhcCwgX2RsX2h3Y2FwMiBhbmQgX2RsX3BsYXRmb3JtLCBzbyB3ZQotLSAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuICAqLwotKyAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuCi0rCi0rICAgICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvIG9wdGltaXplIHNldHRpbmcgdG8gemVyby4gIFdlIGhhdmUgdG8KLSsgICAgIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2ggaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0Ci0rICAgICBjYW5ub3QgcmVwb3J0IHBhZ2UgZmF1bHRzIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsCi0rICAgICB3aGljaCBpcyBhIHByaXZpbGVnZWQgb3BlcmF0aW9uLiAgRm9ydHVuYXRlbHkgMi4yLjE4IGFuZCBsYXRlcgotKyAgICAgZW11bGF0ZXMgUG93ZXJQQyBtZnNwciByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAqLwotICAgZm9yIChFbGZXIChhdXh2X3QpICogYXYgPSBhdXh2ZWM7IGF2LT5hX3R5cGUgIT0gQVRfTlVMTDsgKythdikKLSAgICAgc3dpdGNoIChhdi0+YV90eXBlKQotICAgICAgIHsKLSAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgotKwlpZiAoX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAweDAyMDIxOCkKLSsJICB7Ci0rCSAgICB1bnNpZ25lZCBwdnIgPSAwOwotKwotKwkgICAgYXNtICgibWZzcHIgJTAsIDI4NyIgOiAiPXIiIChwdnIpIDopOwotKwkgICAgaWYgKChwdnIgJiAweGZmZmYwMDAwKSA9PSAweDAwNTAwMDAwKQotKwkgICAgICBicmVhazsKLSsJICB9Ci0gCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4uYV92YWw7Ci0gCWJyZWFrOwotICNpZm5kZWYgU0hBUkVECi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVlMzk3YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaApAQCAtMCwwICsxLDEyMyBAQAorRnJvbSAzMzkyZWU4M2IwMTMyYzA4OWRmZmIxZTk4OTJiNGIyNTJjZTFlYzBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTc6MDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMS8yNV0gZWdsaWJjOiBJbnN0YWxsIFBJQyBhcmNoaXZlcworCitGb3J3YXJkIHBvcnQgZnJvbSBlZ2xpYmMKKworMjAwOC0wMi0wNyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgKiBNYWtlcnVsZXMgKGluc3RhbGwtZXh0cmFzLCBpbnN0YWxsLW1hcCk6IE5ldyB2YXJpYWJsZXMuCisgICAgICAgIChpbnN0YWxsZWQtbGliY3MpOiBBZGQgbGliY19waWMuYS4KKyAgICAgICAgKGluc3RhbGwtbGliKTogSW5jbHVkZSBfcGljLmEgZmlsZXMgZm9yIHZlcnNpb25lZCBzaGFyZWQKKyAgICAgICAgbGlicmFyaWVzLgorICAgICAgICAoaW5zdGFsbC1tYXAtbm9zdWJkaXIsIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyKTogQWRkIHJ1bGVzIGZvcgorICAgICAgICBpbnN0YWxsaW5nIGV4dHJhIGZpbGVzLgorICAgICAgICAoaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXIpOiBEZXBlbmQgb24gaW5zdGFsbC1tYXAtbm9zdWJkaXIgYW5kCisgICAgICAgIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyLgorCisyMDA4LTA0LTAxICBNYXhpbSBLdXZ5cmtvdiAgPG1heGltQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgKiBNYWtlcnVsZXMgKGluc3RhbGwtbGliKTogRG9uJ3QgaW5zdGFsbCBsaWJwdGhyZWFkX3BpYy5hLgorICAgICAgICAoaW5zdGFsbC1tYXApOiBEb24ndCBpbnN0YWxsIGxpYnB0aHJlYWRfcGljLm1hcC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlcnVsZXMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VydWxlcyBiL01ha2VydWxlcworaW5kZXggOWJiNzA3YzE2OC4uNzRjYmVmYjliYSAxMDA2NDQKKy0tLSBhL01ha2VydWxlcworKysrIGIvTWFrZXJ1bGVzCitAQCAtNzc1LDYgKzc3NSw5IEBAIGlmZXEgKCQoYnVpbGQtc2hhcmVkKSx5ZXMpCisgJChjb21tb24tb2JqcGZ4KWxpYmMuc286ICQoY29tbW9uLW9ianBmeClsaWJjLm1hcAorIGVuZGlmCisgY29tbW9uLWdlbmVyYXRlZCArPSBsaWJjLnNvIGxpYmNfcGljLm9zCisraWZuZGVmIHN1YmRpcgorK2luc3RhbGwtZXh0cmFzIDo9IHNvaW5pdC5vIHNvZmluaS5vCisrZW5kaWYKKyBpZmRlZiBsaWJjLnNvLXZlcnNpb24KKyAkKGNvbW1vbi1vYmpwZngpbGliYy5zbyQobGliYy5zby12ZXJzaW9uKTogJChjb21tb24tb2JqcGZ4KWxpYmMuc28KKyAJJChtYWtlLWxpbmspCitAQCAtMTAyNiw2ICsxMDI5LDcgQEAgZW5kaWYKKyAKKyBpbnN0YWxsOiBjaGVjay1pbnN0YWxsLXN1cHBvcnRlZAorIAorK2luc3RhbGxlZC1saWJjcyA6PSAkKGluc3RhbGxlZC1saWJjcykgJChpbnN0X2xpYmRpcikvbGliY19waWMuYQorIGluc3RhbGw6ICQoaW5zdGFsbGVkLWxpYmNzKQorICQoaW5zdGFsbGVkLWxpYmNzKTogJChpbnN0X2xpYmRpcikvbGliJChsaWJwcmVmaXgpJTogbGliICQoK2ZvcmNlKQorIAkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKK0BAIC0xMDU0LDYgKzEwNTgsMjIgQEAgdmVyc2lvbmVkIDo9ICQoc3RyaXAgJChmb3JlYWNoIHNvLCQoaW5zdGFsbC1saWIuc28pLFwKKyBpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQgOj0gJChmaWx0ZXIgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKKyBpbnN0YWxsLWxpYi5zby11bnZlcnNpb25lZCA6PSAkKGZpbHRlci1vdXQgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKKyAKKysjIEluc3RhbGwgdGhlIF9waWMuYSBmaWxlcyBmb3IgdmVyc2lvbmVkIGxpYnJhcmllcywgYW5kIGNvcnJlc3BvbmRpbmcKKysjIC5tYXAgZmlsZXMuCisrIyBsaWJwdGhyZWFkX3BpYy5hIGJyZWFrcyBta2xpYnMsIHNvIGRvbid0IGluc3RhbGwgaXQgYW5kIGl0cyBtYXAuCisraW5zdGFsbC1saWIgOj0gJChpbnN0YWxsLWxpYikgJChpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQ6JS5zbz0lX3BpYy5hKQorK2luc3RhbGwtbGliIDo9ICQoZmlsdGVyLW91dCBsaWJwdGhyZWFkX3BpYy5hLCQoaW5zdGFsbC1saWIpKQorKyMgRGVzcGl0ZSBoYXZpbmcgYSBzb25hbWUgbGliaHVyZHVzZXIgYW5kIGxpYm1hY2h1c2VyIGRvIG5vdCB1c2Ugc3ltYm9sCisrIyB2ZXJzaW9uaW5nLCBzbyBkb24ndCBpbnN0YWxsIHRoZSBjb3JyZXNwb25kaW5nIC5tYXAgZmlsZXMuCisraWZlcSAoJChidWlsZC1zaGFyZWQpLHllcykKKytpbnN0YWxsLW1hcCA6PSAkKHBhdHN1YnN0ICUuc28sJS5tYXAsXAorKwkJCSQoZm9yZWFjaCBMLCQoaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkKSwkKG5vdGRpciAkTCkpKQorK2luc3RhbGwtbWFwIDo9ICQoZmlsdGVyLW91dCBsaWJodXJkdXNlci5tYXAgbGlibWFjaHVzZXIubWFwIGxpYnB0aHJlYWQubWFwLCQoaW5zdGFsbC1tYXApKQorK2lmbmRlZiBzdWJkaXIKKytpbnN0YWxsLW1hcCA6PSAkKGluc3RhbGwtbWFwKSBsaWJjLm1hcAorK2VuZGlmCisrZW5kaWYKKysKKyAjIEZvciB2ZXJzaW9uZWQgbGlicmFyaWVzLCB3ZSBpbnN0YWxsIHRocmVlIGZpbGVzOgorICMJJChpbnN0X2xpYmRpcikvbGliZm9vLnNvCS0tIGZvciBsaW5raW5nLCBzeW1saW5rIG9yIGxkIHNjcmlwdAorICMJJChpbnN0X3NsaWJkaXIpL2xpYmZvby5zby5OTgktLSBmb3IgbG9hZGluZyBieSBTT05BTUUsIHN5bWxpbmsKK0BAIC0xMjk4LDkgKzEzMTgsMjIgQEAgJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMtbm9uaCkpOiAkKGluc3RfaW5jbHVkZWRpcikvJTogXAorIGVuZGlmCSMgaGVhZGVycy1ub25oCisgZW5kaWYJIyBoZWFkZXJzCisgCisraWZkZWYgaW5zdGFsbC1tYXAKKyskKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS8sJChwYXRzdWJzdCBsaWIlLm1hcCxsaWIlX3BpYy5tYXAsJChpbnN0YWxsLW1hcCkpKTogXAorKyAgJChpbnN0X2xpYmRpcikvbGliJV9waWMubWFwOiAkKGNvbW1vbi1vYmpwZngpbGliJS5tYXAgJCgrZm9yY2UpCisrCSQoZG8taW5zdGFsbCkKKytlbmRpZgorKworK2lmZGVmIGluc3RhbGwtZXh0cmFzCisrJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvbGliY19waWMvLCQoaW5zdGFsbC1leHRyYXMpKTogXAorKyAgJChpbnN0X2xpYmRpcikvbGliY19waWMvJS5vOiAkKGVsZi1vYmpwZngpJS5vcyAkKCtmb3JjZSkKKysJJChkby1pbnN0YWxsKQorK2VuZGlmCisrCisgLlBIT05ZOiBpbnN0YWxsLWJpbi1ub3N1YmRpciBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXIgXAorIAlpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyIGluc3RhbGwtc2Jpbi1ub3N1YmRpciBpbnN0YWxsLWxpYi1ub3N1YmRpciBcCistCWluc3RhbGwtZGF0YS1ub3N1YmRpciBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXIKKysJaW5zdGFsbC1kYXRhLW5vc3ViZGlyIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLW1hcC1ub3N1YmRpciBcCisrCWluc3RhbGwtZXh0cmFzLW5vc3ViZGlyCisgaW5zdGFsbC1iaW4tbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluKSkKKyBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluLXNjcmlwdCkpCisgaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpcjogXAorQEAgLTEzMTMsNiArMTM0NiwxMCBAQCBpbnN0YWxsLWRhdGEtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9kYXRhZGlyKS8sJChpbnN0YWxsLWRhdGEpKQorIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMpKQorIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzKQorIGluc3RhbGwtb3RoZXJzLXByb2dyYW1zLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzLXByb2dyYW1zKQorK2luc3RhbGwtbWFwLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS8sXAorKwkJICAgICAgICQocGF0c3Vic3QgbGliJS5tYXAsbGliJV9waWMubWFwLCQoaW5zdGFsbC1tYXApKSkKKytpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvbGliY19waWMvLFwKKysJCSAgICAgICAkKGluc3RhbGwtZXh0cmFzKSkKKyAKKyAjIFdlIG5lZWQgYWxsIHRoZSBgLW5vc3ViZGlyJyB0YXJnZXRzIHNvIHRoYXQgYGluc3RhbGwnIGluIHRoZSBwYXJlbnQKKyAjIGRvZXNuJ3QgZGVwZW5kIG9uIHNldmVyYWwgdGhpbmdzIHdoaWNoIGVhY2ggaXRlcmF0ZSBvdmVyIHRoZSBzdWJkaXJzLgorQEAgLTEzMjIsNyArMTM1OSw4IEBAIGluc3RhbGwtJTo6IGluc3RhbGwtJS1ub3N1YmRpciA7CisgCisgLlBIT05ZOiBpbnN0YWxsIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyCisgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLWRhdGEtbm9zdWJkaXIgXAorLQkJCSAgICBpbnN0YWxsLWxpYi1ub3N1YmRpciBpbnN0YWxsLW90aGVycy1ub3N1YmRpcgorKwkJCSAgICBpbnN0YWxsLWxpYi1ub3N1YmRpciBpbnN0YWxsLW90aGVycy1ub3N1YmRpciBcCisrCQkJICAgIGluc3RhbGwtbWFwLW5vc3ViZGlyIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyCisgaWZlcSAoJChidWlsZC1wcm9ncmFtcykseWVzKQorIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyOiBpbnN0YWxsLWJpbi1ub3N1YmRpciBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXIgXAorIAkJCSAgICBpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyIGluc3RhbGwtc2Jpbi1ub3N1YmRpciBcCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE4YTIwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDU2NiBAQAorRnJvbSBkOTc1MzNkYzIwMWNmZDg2Mzc2NWIxYTY3YTI3ZmRlM2UyNjIyZGE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMi8yNV0gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDMgKystCisgbG9jYWxlL2NhdG5hbWVzLmMgICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxvY2FsZS9sb2NhbGVpbmZvLmggICAgICAgICAgIHwgIDIgKy0KKyBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysrCisgbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKystLS0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKysrLS0tLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrKysrLS0tLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jICB8ICAyICstCisgbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKysKKyBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrKy0KKyBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oICAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9jYXRuYW1lcy5jCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvTWFrZWZpbGUgYi9sb2NhbGUvTWFrZWZpbGUKK2luZGV4IDk4ZWU3NjI3MmQuLmJjM2FmYjIyNDggMTAwNjQ0CistLS0gYS9sb2NhbGUvTWFrZWZpbGUKKysrKyBiL2xvY2FsZS9NYWtlZmlsZQorQEAgLTI2LDcgKzI2LDggQEAgaGVhZGVycwkJPSBsYW5naW5mby5oIGxvY2FsZS5oIGJpdHMvbG9jYWxlLmggXAorIAkJICBiaXRzL3R5cGVzL2xvY2FsZV90LmggYml0cy90eXBlcy9fX2xvY2FsZV90LmgKKyByb3V0aW5lcwk9IHNldGxvY2FsZSBmaW5kbG9jYWxlIGxvYWRsb2NhbGUgbG9hZGFyY2hpdmUgXAorIAkJICBsb2NhbGVjb252IG5sX2xhbmdpbmZvIG5sX2xhbmdpbmZvX2wgbWJfY3VyX21heCBcCistCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUKKysJCSAgbmV3bG9jYWxlIGR1cGxvY2FsZSBmcmVlbG9jYWxlIHVzZWxvY2FsZSBcCisrCQkgIGNhdG5hbWVzCisgdGVzdHMJCT0gdHN0LUMtbG9jYWxlIHRzdC1sb2NuYW1lIHRzdC1kdXBsb2NhbGUKKyBjYXRlZ29yaWVzCT0gY3R5cGUgbWVzc2FnZXMgbW9uZXRhcnkgbnVtZXJpYyB0aW1lIHBhcGVyIG5hbWUgXAorIAkJICBhZGRyZXNzIHRlbGVwaG9uZSBtZWFzdXJlbWVudCBpZGVudGlmaWNhdGlvbiBjb2xsYXRlCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2NhdG5hbWVzLmMgYi9sb2NhbGUvY2F0bmFtZXMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjlmYWQzNTdkYjEKKy0tLSAvZGV2L251bGwKKysrKyBiL2xvY2FsZS9jYXRuYW1lcy5jCitAQCAtMCwwICsxLDQ4IEBACisrLyogQ29weXJpZ2h0IChDKSAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgImxvY2FsZWluZm8uaCIKKysKKysvKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCisrY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysgICAgeworKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorKyAgICAgIGNhdGVnb3J5X25hbWUsCisrI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKysgICAgfQorKyAgfTsKKysKKytjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKKysjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCisrI3VuZGVmIERFRklORV9DQVRFR09SWQorKyAgfTsKKysKKysvKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLworK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYJREVGSU5FX0NBVEVHT1JZCisrICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCisrICB9OworZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCitpbmRleCA0ZTFjOGM1NjhhLi5mN2VkOTQ2ZjFjIDEwMDY0NAorLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAorKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAorQEAgLTIyNCw3ICsyMjQsNyBAQCBfX2xpYmNfdHNkX2RlZmluZSAoZXh0ZXJuLCBsb2NhbGVfdCwgTE9DQUxFKQorICAgIHVudXNlZC4gIFdlIGNhbiBtYW5hZ2UgdGhpcyBwbGF5aW5nIHNvbWUgdHJpY2tzIHdpdGggd2VhayByZWZlcmVuY2VzLgorICAgIEJ1dCB3aXRoIHRocmVhZC1sb2NhbCBsb2NhbGUgc2V0dGluZ3MsIGl0IGJlY29tZXMgcXVpdGUgdW5nYWlubHkgdW5sZXNzCisgICAgd2UgY2FuIHVzZSBfX3RocmVhZCB2YXJpYWJsZXMuICBTbyBvbmx5IGluIHRoYXQgY2FzZSBkbyB3ZSBhdHRlbXB0IHRoaXMuICAqLworLSNpZm5kZWYgU0hBUkVECisrI2lmICFkZWZpbmVkIFNIQVJFRCAmJiAhZGVmaW5lZCBJTl9HTElCQ19MT0NBTEVERUYKKyAjIGluY2x1ZGUgPHRscy5oPgorICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKK2luZGV4IGU1NWFiODZlMjguLjBmODdlNmRkMjggMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKK0BAIC0xOSw3ICsxOSw5IEBACisgI2luY2x1ZGUgPGVycm9yLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKysjaWZuZGVmIE5PX1VOQ09NUFJFU1MKKyAjaW5jbHVkZSA8c3Bhd24uaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorQEAgLTE1Niw2ICsxNTgsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKKyAgIHJldHVybiBjbG9zZWRpciAoZGlyKTsKKyB9CisgCisrI2lmbmRlZiBOT19VTkNPTVBSRVNTCisgLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCisgICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KKyBzdGF0aWMKK0BAIC0yMDQsNiArMjA3LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKKyAgICAgfQorICAgcmV0dXJuIE5VTEw7CisgfQorKyNlbmRpZgorIAorIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCisgRklMRSAqCitAQCAtMjI2LDYgKzIzMCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorICAgICByZXR1cm4gc3RyZWFtOworIAorKyNpZm5kZWYgTk9fVU5DT01QUkVTUworICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7CisgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOworICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorQEAgLTIzNSw2ICsyNDAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKKyAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOworICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorICAgICByZXR1cm4gc3RyZWFtOworKyNlbmRpZgorIAorICAgcmV0dXJuIE5VTEw7CisgfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCitpbmRleCBjZWM4NDhjYjdjLi5mY2Q3NjhlYjdkIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworQEAgLTM1MCw3ICszNTAsNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKKyAgICAgfQorICAgaWYgKHdjcyAhPSBOVUxMKQorICAgICB7CistICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW4gKCh3Y2hhcl90ICopIHdjcyk7CisrICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW5fdWludDMyICh3Y3MpOworICAgICAgIHVpbnQzMl90IHplcm8gPSAwOworICAgICAgIC8qIEhhbmRsZSA8VTAwMDA+IGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4gICovCisgICAgICAgaWYgKG53Y3MgPT0gMCkKK0BAIC0xNzc2LDggKzE3NzYsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7CisgCisgCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCisgCQl7CistCQkgIGludCBjID0gd21lbWNtcCAoKHdjaGFyX3QgKikgKCplcHRyKS0+d2NzLAorLQkJCQkgICAod2NoYXJfdCAqKSBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOworKwkJICBpbnQgYyA9IHdtZW1jbXBfdWludDMyICgoKmVwdHIpLT53Y3MsIHJ1bnAtPndjcywgcnVucC0+bndjcyk7CisgCisgCQkgIGlmIChjID09IDApCisgCQkgICAgeworQEAgLTIwMTAsOSArMjAwOSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKKyAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLworIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAorIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcworLQkgICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCistCQkJICAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAorLQkJCSAgcnVucC0+bndjcyAtIDEpID09IDAKKysJICAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKKysJCQkJIHJ1bnAtPndjbmV4dC0+d2NzLAorKwkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKKyAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KKyAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCisgCSAgICB7CitAQCAtMjAzNiw5ICsyMDM1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorIAkJcnVucCA9IHJ1bnAtPndjbmV4dDsKKyAJICAgICAgd2hpbGUgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCisgCQkgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCistCQkgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKKy0JCQkJICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCistCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAorKwkJICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAorKwkJCQkJcnVucC0+d2NuZXh0LT53Y3MsCisrCQkJCQlydW5wLT5ud2NzIC0gMSkgPT0gMAorIAkJICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQorIAkJCSA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSk7CisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworaW5kZXggZGYyNjZjMjBkNi4uMDVjMDE1MmVjOSAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworQEAgLTkyNiw3ICs5MjYsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOworIAorICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCistCQkJID8gd2NzbGVuICgod2NoYXJfdCAqKSBjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQorKwkJCSA/IHdjc2xlbl91aW50MzIgKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCisgCQkJIDogMCk7CisgCisgICBpbml0X2xvY2FsZV9kYXRhICgmZmlsZSwgbmVsZW1zKTsKK0BAIC0xOTM3LDcgKzE5MzcsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAorIAkgICAgaWdub3JlID0gMTsKKyAJICBlbHNlCisgCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCistCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW4gKCh3Y2hhcl90ICopIHRvX3dzdHIpICogNCk7CisrCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW5fdWludDMyICh0b193c3RyKSAqIDQpOworIAorIAkgIGZpcnN0ID0gMDsKKyAJfQorQEAgLTI0NzEsOCArMjQ3MSw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7CisgCSAgICB9CisgCisgCWhhbmRsZV90b2tfZGlnaXQ6CistCSAgY2xhc3NfYml0ID0gX0lTd2RpZ2l0OworLQkgIGNsYXNzMjU2X2JpdCA9IF9JU2RpZ2l0OworKwkgIGNsYXNzX2JpdCA9IEJJVHcgKHRva19kaWdpdCk7CisrCSAgY2xhc3MyNTZfYml0ID0gQklUICh0b2tfZGlnaXQpOworIAkgIGhhbmRsZV9kaWdpdHMgPSAxOworIAkgIGdvdG8gcmVhZF9jaGFyY2xhc3M7CisgCitAQCAtMzkyOSw4ICszOTI5LDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAorIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCisgCSAgICB7CistCSAgICAgIGludCByZXMgPSB3Y3NjbXAgKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtpZHhdLT5mcm9tLAorLQkJCQkoY29uc3Qgd2NoYXJfdCAqKSBydW5wLT5mcm9tKTsKKysJICAgICAgaW50IHJlcyA9IHdjc2NtcF91aW50MzIgKHNvcnRlZFtpZHhdLT5mcm9tLCBydW5wLT5mcm9tKTsKKyAJICAgICAgaWYgKHJlcyA9PSAwKQorIAkJeworIAkJICByZXBsYWNlID0gMTsKK0BAIC0zOTY3LDExICszOTY2LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQorIAl7CisgCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOworLQkgIGZyb21fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKKysJICBmcm9tX2xlbiArPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOworIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICB0b19sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7CisrCSAgICAgIHRvX2xlbiArPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7CisgCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7CisgCSAgICB9CisgCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgorQEAgLTM5OTUsMTggKzM5OTQsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47CisgCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOworIAorLQkgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKKy0JICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKKy0JCSAgIChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOworKwkgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CisrCSAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAorKwkJCSAgc29ydGVkW2NudF0tPmZyb20sIGxlbik7CisgCSAgZnJvbV9sZW4gKz0gbGVuOworIAorIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKKyAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKKyAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKKyAJICAgIHsKKy0JICAgICAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7CistCSAgICAgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCistCQkgICAgICAgKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0ciwgbGVuKTsKKysJICAgICAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOworKwkgICAgICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKKysJCQkgICAgICBzcnVucC0+c3RyLCBsZW4pOworIAkgICAgICB0b19sZW4gKz0gbGVuOworIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OworIAkgICAgfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCitpbmRleCAzMmU5YzQxZTM1Li42YTYxZmNlZGViIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworQEAgLTIxNSw4ICsyMTUsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsKKysJICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd3RfZm10X2FtcG1bXQorKwkgICAgPSB7ICclJywnSScsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLCclJywncCcsMCB9OworIAkgIHRpbWUtPnRfZm10X2FtcG0gPSAiJUk6JU06JVMgJXAiOworLQkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJUk6JU06JVMgJXAiOworKwkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gd3RfZm10X2FtcG07CisgCX0KKyAgICAgfQorIAorQEAgLTIyNiw3ICsyMjgsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKKyAgICAgICBjb25zdCBpbnQgZGF5c19wZXJfbW9udGhbMTJdID0geyAzMSwgMjksIDMxLCAzMCwgMzEsIDMwLAorIAkJCQkgICAgICAgMzEsIDMxLCAzMCwgMzEgLDMwLCAzMSB9OworICAgICAgIHNpemVfdCBpZHg7CistICAgICAgd2NoYXJfdCAqd3N0cjsKKysgICAgICB1aW50MzJfdCAqd3N0cjsKKyAKKyAgICAgICB0aW1lLT5lcmFfZW50cmllcyA9CisgCShzdHJ1Y3QgZXJhX2RhdGEgKikgeG1hbGxvYyAodGltZS0+bnVtX2VyYQorQEAgLTQ2NCwxOCArNDY2LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworIAkgICAgfQorIAorIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KKy0JICB3c3RyID0gd2NzY2hyICgod2NoYXJfdCAqKSB0aW1lLT53ZXJhW2lkeF0sIEwnOicpOy8qIGVuZCBkaXJlY3Rpb24gKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIG9mZnNldCAqLworLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgc3RhcnQgKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIGVuZCAqLworKwkgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh0aW1lLT53ZXJhW2lkeF0sIEwnOicpOyAvKiBlbmQgZGlyZWN0aW9uICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgb2Zmc2V0ICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgc3RhcnQgKi8KKysJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBlbmQgKi8KKyAJICBpZiAod3N0ciAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOworLQkgICAgICB3c3RyID0gd2NzY2hyICh3c3RyICsgMSwgTCc6Jyk7CS8qIGVuZCBuYW1lICovCisrCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSB3c3RyICsgMTsKKysJICAgICAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKTsgLyogZW5kIG5hbWUgKi8KKyAJICAgICAgaWYgKHdzdHIgIT0gTlVMTCkKKyAJCXsKKyAJCSAgKndzdHIgPSBMJ1wwJzsKKy0JCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOworKwkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSB3c3RyICsgMTsKKyAJCX0KKyAJICAgICAgZWxzZQorIAkJdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9CitAQCAtNTM0LDcgKzUzNiwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKKyAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQorICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7CisgICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCistICAgIHRpbWUtPndkYXRlX2ZtdCA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKKysgICAgeworKyAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3ZGF0ZV9mbXRbXSA9CisrCXsgJyUnLCdhJywnICcsCisrCSAgJyUnLCdiJywnICcsCisrCSAgJyUnLCdlJywnICcsCisrCSAgJyUnLCdIJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsCisrCSAgJyUnLCdaJywnICcsCisrCSAgJyUnLCdZJywwIH07CisrICAgICAgdGltZS0+d2RhdGVfZm10ID0gd2RhdGVfZm10OworKyAgICB9CisgfQorIAorIAorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCitpbmRleCA1MmIzNDA5NjNhLi4xYThiY2UxN2I0IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYworQEAgLTU5NSw3ICs1OTUsNyBAQCBnZXRfc3RyaW5nIChzdHJ1Y3QgbGluZXJlYWRlciAqbHIsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgeworICAgaW50IHJldHVybl93aWRlc3RyID0gbHItPnJldHVybl93aWRlc3RyOworICAgY2hhciAqYnVmOworLSAgd2NoYXJfdCAqYnVmMiA9IE5VTEw7CisrICB1aW50MzJfdCAqYnVmMiA9IE5VTEw7CisgICBzaXplX3QgYnVmYWN0OworICAgc2l6ZV90IGJ1Zm1heCA9IDU2OworIAorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYworaW5kZXggNmFjYzEzNDJjNy4uZGY4Nzc0MGY4YiAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCitAQCAtMTA4LDYgKzEwOCw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247CisgI2RlZmluZSBPUFRfTElTVF9BUkNISVZFIDMwOQorICNkZWZpbmUgT1BUX0xJVFRMRV9FTkRJQU4gNDAwCisgI2RlZmluZSBPUFRfQklHX0VORElBTiA0MDEKKysjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDAyCisgCisgLyogRGVmaW5pdGlvbnMgb2YgYXJndW1lbnRzIGZvciBhcmdwIGZ1bmN0aW9ucy4gICovCisgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQorQEAgLTE0Myw2ICsxNDQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9CisgICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCisgICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCisgICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCisrICB7ICJ1aW50MzItYWxpZ24iLCBPUFRfVUlOVDMyX0FMSUdOLCAiQUxJR05NRU5UIiwgMCwKKysgICAgTl8oIlNldCB0aGUgdGFyZ2V0J3MgdWludDMyX3QgYWxpZ25tZW50IGluIGJ5dGVzIChkZWZhdWx0IDQpIikgfSwKKyAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9CisgfTsKKyAKK0BAIC0yMzIsMTIgKzIzNSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLworICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7CisgCisrI2lmbmRlZiBOT19TWVNDT05GCisgICAvKiBMb29rIHdoZXRoZXIgdGhlIHN5c3RlbSByZWFsbHkgYWxsb3dzIGxvY2FsZSBkZWZpbml0aW9ucy4gIFBPU0lYCisgICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCisgICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KKyAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKKyAgICAgV0lUSF9DVVJfTE9DQUxFIChlcnJvciAoMywgMCwgXygiXAorIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSkpOworKyNlbmRpZgorIAorICAgLyogUHJvY2VzcyBjaGFybWFwIGZpbGUuICAqLworICAgY2hhcm1hcCA9IGNoYXJtYXBfcmVhZCAoY2hhcm1hcF9maWxlLCB2ZXJib3NlLCAxLCBiZV9xdWlldCwgMSk7CitAQCAtMzI4LDYgKzMzMyw5IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCisgICAgIGNhc2UgT1BUX0JJR19FTkRJQU46CisgICAgICAgc2V0X2JpZ19lbmRpYW4gKHRydWUpOworICAgICAgIGJyZWFrOworKyAgICBjYXNlIE9QVF9VSU5UMzJfQUxJR046CisrICAgICAgdWludDMyX2FsaWduX21hc2sgPSBzdHJ0b2wgKGFyZywgTlVMTCwgMCkgLSAxOworKyAgICAgIGJyZWFrOworICAgICBjYXNlICdjJzoKKyAgICAgICBmb3JjZV9vdXRwdXQgPSAxOworICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCitpbmRleCAwOTkwZWYxMWJlLi42ODM0MjJjOTA4IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCisgICAgbWFjaGluZSBydW5uaW5nIGxvY2FsZWRlZi4gICovCisgYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKKyAKKysvKiBUaGUgdGFyZ2V0J3MgdmFsdWUgb2YgX19hbGlnbl9fKHVpbnQzMl90KSAtIDEuICAqLworK3Vuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzayA9IDM7CisrCisgLyogV2hlbiBjYWxsZWQgb3V0c2lkZSBhIHN0YXJ0X2xvY2FsZV9zdHJ1Y3R1cmUvZW5kX2xvY2FsZV9zdHJ1Y3R1cmUKKyAgICBvciBzdGFydF9sb2NhbGVfcHJlbHVkZS9lbmRfbG9jYWxlX3ByZWx1ZGUgYmxvY2ssIHJlY29yZCB0aGF0IHRoZQorICAgIG5leHQgYnl0ZSBpbiBGSUxFJ3Mgb2JzdGFjayB3aWxsIGJlIHRoZSBmaXJzdCBieXRlIG9mIGEgbmV3IGVsZW1lbnQuCitAQCAtNjIxLDcgKzYyNCw3IEBAIGFkZF9sb2NhbGVfc3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cmluZykKKyB2b2lkCisgYWRkX2xvY2FsZV93c3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IHVpbnQzMl90ICpzdHJpbmcpCisgeworLSAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzdHJpbmcpICsgMSk7CisrICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW5fdWludDMyIChzdHJpbmcpICsgMSk7CisgfQorIAorIC8qIFJlY29yZCB0aGF0IEZJTEUncyBuZXh0IGVsZW1lbnQgaXMgdGhlIDMyLWJpdCBpbnRlZ2VyIFZBTFVFLiAgKi8KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAoraW5kZXggMzQwN2UxM2MxMy4uMGJiNTU2Y2FmOCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKK0BAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLAorIAorIGV4dGVybiBib29sIHN3YXBfZW5kaWFubmVzc19wOworIAorK2V4dGVybiB1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2s7CisrCisgLyogQ2hhbmdlIHRoZSBvdXRwdXQgdG8gYmUgYmlnLWVuZGlhbiBpZiBCSUdfRU5ESUFOIGlzIHRydWUgYW5kCisgICAgbGl0dGxlLWVuZGlhbiBvdGhlcndpc2UuICAqLworIHN0YXRpYyBpbmxpbmUgdm9pZAorQEAgLTg5LDcgKzkxLDggQEAgbWF5YmVfc3dhcF91aW50MzIgKHVpbnQzMl90IHZhbHVlKQorIH0KKyAKKyAvKiBMaWtld2lzZSwgYnV0IG11bmdlIGFuIGFycmF5IG9mIE4gdWludDMyX3RzIHN0YXJ0aW5nIGF0IEFSUkFZLiAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQKKytzdGF0aWMgdm9pZAorK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQorIHsKKyAgIGlmIChzd2FwX2VuZGlhbm5lc3NfcCkKK0BAIC05OSw3ICsxMDIsOCBAQCBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKKyAKKyAvKiBMaWtlIG1heWJlX3N3YXBfdWludDMyX2FycmF5LCBidXQgdGhlIGFycmF5IG9mIE4gZWxlbWVudHMgaXMgYXQKKyAgICB0aGUgZW5kIG9mIE9CU1RBQ0sncyBjdXJyZW50IG9iamVjdC4gICovCistc3RhdGljIGlubGluZSB2b2lkCisrc3RhdGljIHZvaWQKKytfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBtYXliZV9zd2FwX3VpbnQzMl9vYnN0YWNrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgc2l6ZV90IG4pCisgeworICAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKCh1aW50MzJfdCAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzdGFjaykgLSBuLCBuKTsKK0BAIC0yNzYsNCArMjgwLDU1IEBAIGV4dGVybiB2b2lkIGlkZW50aWZpY2F0aW9uX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsCisgCQkJCSAgIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgCQkJCSAgIGNvbnN0IGNoYXIgKm91dHB1dF9wYXRoKTsKKyAKKytzdGF0aWMgc2l6ZV90IHdjc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgdWludDMyX3QgKiB3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIHVpbnQzMl90ICogd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIGludCB3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyBpbnQgd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworKworK3N0YXRpYyBzaXplX3QKKyt3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKQorK3sKKysgIHNpemVfdCBsZW4gPSAwOworKyAgd2hpbGUgKHN0cltsZW5dICE9IDApCisrICAgIGxlbisrOworKyAgcmV0dXJuIGxlbjsKKyt9CisrCisrc3RhdGljICBpbnQKKyt3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQorK3sKKysgIHdoaWxlIChuLS0gIT0gMCkKKysgICAgeworKyAgICAgIGludCBkaWZmID0gKnMxKysgLSAqczIrKzsKKysgICAgICBpZiAoZGlmZiAhPSAwKQorKwlyZXR1cm4gZGlmZjsKKysgICAgfQorKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQKKyt3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikKKyt7CisrICB3aGlsZSAoKnMxICE9IDAgJiYgKnMxID09ICpzMikKKysgICAgczErKywgczIrKzsKKysgIHJldHVybiAqczEgLSAqczI7CisrfQorKworK3N0YXRpYyB1aW50MzJfdCAqCisrd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKKyt7CisrICByZXR1cm4gbWVtY3B5IChzMSwgczIsIG4gKiBzaXplb2YgKHVpbnQzMl90KSk7CisrfQorKworK3N0YXRpYyB1aW50MzJfdCAqCisrd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKQorK3sKKysgIGRvCisrICAgIGlmICgqcyA9PSBjaCkKKysgICAgICByZXR1cm4gKHVpbnQzMl90ICopIHM7CisrICB3aGlsZSAoKnMrKyAhPSAwKTsKKysgIHJldHVybiAwOworK30KKysKKyAjZW5kaWYgLyogbG9jZmlsZS5oICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCitpbmRleCAxOWFjYzRiMmM3Li5jODlkM2I4N2FkIDEwMDY0NAorLS0tIGEvbG9jYWxlL3NldGxvY2FsZS5jCisrKysgYi9sb2NhbGUvc2V0bG9jYWxlLmMKK0BAIC02NCwzNiArNjQsNiBAQCBzdGF0aWMgY2hhciAqY29uc3QgX25sX2N1cnJlbnRfdXNlZFtdID0KKyAjZW5kaWYKKyAKKyAKKy0vKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCistY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0gICAgeworLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorLSAgICAgIGNhdGVnb3J5X25hbWUsCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKy0gICAgfQorLSAgfTsKKy0KKy1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKy0gICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKKy0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCistI3VuZGVmIERFRklORV9DQVRFR09SWQorLSAgfTsKKy0KKy0vKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLworLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKy0gICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAorLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKy0jdW5kZWYJREVGSU5FX0NBVEVHT1JZCistICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCistICB9OworLQorLQorICNpZmRlZiBOTF9DVVJSRU5UX0lORElSRUNUCisgIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQorICNlbHNlCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwY2Q1YjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBhNTBjNmU4MDU0M2ZiNGNiYzU4OTk3OGMxMWZlODQ2YmY0YTk0NDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8yNl0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAotCi0yMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KLQotICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotaW5kZXggZTA5MzhjNC4uY2ExZDdkYSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotQEAgLTIsNiArMiw3IEBAIGxpYmMgewotICAgR0xJQkNfMi4yIHsKLSAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKLSAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OwotKyAgICBfX2Zwc2NyX3ZhbHVlczsKLSAKLSAgICAgIyBhKgotICAgICBhbHBoYXNvcnQ2NDsKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1pbmRleCAwMDI0ZDc5Li5kMWRiN2U0IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1AQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKLSAKLSAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQotICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+Ci0rCi0rICAgICAgIC5kYXRhCi0rICAgICAgIC5hbGlnbiAzCi0rICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKLSsgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0Ci0rICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAotK19fX2Zwc2NyX3ZhbHVlczoKLSsgICAgICAgLmxvbmcgMAotKyAgICAgICAubG9uZyAweDgwMDAwCi0rd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKLSsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTU4MGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gY2I0ZDAwZWFjN2Y4NDA5MjMxNGRlNTkzNjI2ZWVhNDBmOTUyOTAzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIwIEFwciAyMDE2IDIxOjExOjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvMjVdIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAorCitUaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCitDZW50T3MgNS5YIG1hY2hpbmUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9jb25maWcuaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCitpbmRleCA1YjQxNmJlMGQ4Li43OWU2NmVlZDVlIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKK0BAIC0xOSw2ICsxOSw5IEBACisgI2lmbmRlZiBfTERfQ09ORklHX0gKKyAjZGVmaW5lIF9MRF9DT05GSUdfSAkxCisgCisrI2lmbmRlZiBEVU1NWV9MT0NBTEVfVAorKyNkZWZpbmUgRFVNTVlfTE9DQUxFX1QKKysjZW5kaWYKKyAvKiBVc2UgdGhlIGludGVybmFsIHRleHRkb21haW4gdXNlZCBmb3IgbGliYyBtZXNzYWdlcy4gICovCisgI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQorICNpZm5kZWYgVkVSU0lPTgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2U1NzFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1Gcm9tIDEwMTU2OGRhZjQ4ZDk5ZTcxYjI4MGEyZmRkODU0NjBmZTc0MGQ1ODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1NzowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDIzLzI2XSBlZ2xpYmM6IEluc3RhbGwgUElDIGFyY2hpdmVzCi0KLUZvcndhcmQgcG9ydCBmcm9tIGVnbGliYwotCi0yMDA4LTAyLTA3ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAqIE1ha2VydWxlcyAoaW5zdGFsbC1leHRyYXMsIGluc3RhbGwtbWFwKTogTmV3IHZhcmlhYmxlcy4KLSAgICAgICAgKGluc3RhbGxlZC1saWJjcyk6IEFkZCBsaWJjX3BpYy5hLgotICAgICAgICAoaW5zdGFsbC1saWIpOiBJbmNsdWRlIF9waWMuYSBmaWxlcyBmb3IgdmVyc2lvbmVkIHNoYXJlZAotICAgICAgICBsaWJyYXJpZXMuCi0gICAgICAgIChpbnN0YWxsLW1hcC1ub3N1YmRpciwgaW5zdGFsbC1leHRyYXMtbm9zdWJkaXIpOiBBZGQgcnVsZXMgZm9yCi0gICAgICAgIGluc3RhbGxpbmcgZXh0cmEgZmlsZXMuCi0gICAgICAgIChpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcik6IERlcGVuZCBvbiBpbnN0YWxsLW1hcC1ub3N1YmRpciBhbmQKLSAgICAgICAgaW5zdGFsbC1leHRyYXMtbm9zdWJkaXIuCi0KLTIwMDgtMDQtMDEgIE1heGltIEt1dnlya292ICA8bWF4aW1AY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAqIE1ha2VydWxlcyAoaW5zdGFsbC1saWIpOiBEb24ndCBpbnN0YWxsIGxpYnB0aHJlYWRfcGljLmEuCi0gICAgICAgIChpbnN0YWxsLW1hcCk6IERvbid0IGluc3RhbGwgbGlicHRocmVhZF9waWMubWFwLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VydWxlcyB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZXJ1bGVzIGIvTWFrZXJ1bGVzCi1pbmRleCA2MWEwMjQwLi4zNzNlNjI4IDEwMDY0NAotLS0tIGEvTWFrZXJ1bGVzCi0rKysgYi9NYWtlcnVsZXMKLUBAIC03NjIsNiArNzYyLDkgQEAgaWZlcSAoJChidWlsZC1zaGFyZWQpLHllcykKLSAkKGNvbW1vbi1vYmpwZngpbGliYy5zbzogJChjb21tb24tb2JqcGZ4KWxpYmMubWFwCi0gZW5kaWYKLSBjb21tb24tZ2VuZXJhdGVkICs9IGxpYmMuc28gbGliY19waWMub3MKLStpZm5kZWYgc3ViZGlyCi0raW5zdGFsbC1leHRyYXMgOj0gc29pbml0Lm8gc29maW5pLm8KLStlbmRpZgotIGlmZGVmIGxpYmMuc28tdmVyc2lvbgotICQoY29tbW9uLW9ianBmeClsaWJjLnNvJChsaWJjLnNvLXZlcnNpb24pOiAkKGNvbW1vbi1vYmpwZngpbGliYy5zbwotIAkkKG1ha2UtbGluaykKLUBAIC0xMDA0LDYgKzEwMDcsNyBAQCBlbmRpZgotIAotIGluc3RhbGw6IGNoZWNrLWluc3RhbGwtc3VwcG9ydGVkCi0gCi0raW5zdGFsbGVkLWxpYmNzIDo9ICQoaW5zdGFsbGVkLWxpYmNzKSAkKGluc3RfbGliZGlyKS9saWJjX3BpYy5hCi0gaW5zdGFsbDogJChpbnN0YWxsZWQtbGliY3MpCi0gJChpbnN0YWxsZWQtbGliY3MpOiAkKGluc3RfbGliZGlyKS9saWIkKGxpYnByZWZpeCklOiBsaWIgJCgrZm9yY2UpCi0gCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQotQEAgLTEwMzIsNiArMTAzNiwyMiBAQCB2ZXJzaW9uZWQgOj0gJChzdHJpcCAkKGZvcmVhY2ggc28sJChpbnN0YWxsLWxpYi5zbyksXAotIGluc3RhbGwtbGliLnNvLXZlcnNpb25lZCA6PSAkKGZpbHRlciAkKHZlcnNpb25lZCksICQoaW5zdGFsbC1saWIuc28pKQotIGluc3RhbGwtbGliLnNvLXVudmVyc2lvbmVkIDo9ICQoZmlsdGVyLW91dCAkKHZlcnNpb25lZCksICQoaW5zdGFsbC1saWIuc28pKQotIAotKyMgSW5zdGFsbCB0aGUgX3BpYy5hIGZpbGVzIGZvciB2ZXJzaW9uZWQgbGlicmFyaWVzLCBhbmQgY29ycmVzcG9uZGluZwotKyMgLm1hcCBmaWxlcy4KLSsjIGxpYnB0aHJlYWRfcGljLmEgYnJlYWtzIG1rbGlicywgc28gZG9uJ3QgaW5zdGFsbCBpdCBhbmQgaXRzIG1hcC4KLStpbnN0YWxsLWxpYiA6PSAkKGluc3RhbGwtbGliKSAkKGluc3RhbGwtbGliLnNvLXZlcnNpb25lZDolLnNvPSVfcGljLmEpCi0raW5zdGFsbC1saWIgOj0gJChmaWx0ZXItb3V0IGxpYnB0aHJlYWRfcGljLmEsJChpbnN0YWxsLWxpYikpCi0rIyBEZXNwaXRlIGhhdmluZyBhIHNvbmFtZSBsaWJodXJkdXNlciBhbmQgbGlibWFjaHVzZXIgZG8gbm90IHVzZSBzeW1ib2wKLSsjIHZlcnNpb25pbmcsIHNvIGRvbid0IGluc3RhbGwgdGhlIGNvcnJlc3BvbmRpbmcgLm1hcCBmaWxlcy4KLStpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQotK2luc3RhbGwtbWFwIDo9ICQocGF0c3Vic3QgJS5zbywlLm1hcCxcCi0rCQkJJChmb3JlYWNoIEwsJChpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQpLCQobm90ZGlyICRMKSkpCi0raW5zdGFsbC1tYXAgOj0gJChmaWx0ZXItb3V0IGxpYmh1cmR1c2VyLm1hcCBsaWJtYWNodXNlci5tYXAgbGlicHRocmVhZC5tYXAsJChpbnN0YWxsLW1hcCkpCi0raWZuZGVmIHN1YmRpcgotK2luc3RhbGwtbWFwIDo9ICQoaW5zdGFsbC1tYXApIGxpYmMubWFwCi0rZW5kaWYKLStlbmRpZgotKwotICMgRm9yIHZlcnNpb25lZCBsaWJyYXJpZXMsIHdlIGluc3RhbGwgdGhyZWUgZmlsZXM6Ci0gIwkkKGluc3RfbGliZGlyKS9saWJmb28uc28JLS0gZm9yIGxpbmtpbmcsIHN5bWxpbmsgb3IgbGQgc2NyaXB0Ci0gIwkkKGluc3Rfc2xpYmRpcikvbGliZm9vLnNvLk5OCS0tIGZvciBsb2FkaW5nIGJ5IFNPTkFNRSwgc3ltbGluawotQEAgLTEyNzUsOSArMTI5NSwyMiBAQCAkKGFkZHByZWZpeCAkKGluc3RfaW5jbHVkZWRpcikvLCQoaGVhZGVycy1ub25oKSk6ICQoaW5zdF9pbmNsdWRlZGlyKS8lOiBcCi0gZW5kaWYJIyBoZWFkZXJzLW5vbmgKLSBlbmRpZgkjIGhlYWRlcnMKLSAKLStpZmRlZiBpbnN0YWxsLW1hcAotKyQoYWRkcHJlZml4ICQoaW5zdF9saWJkaXIpLywkKHBhdHN1YnN0IGxpYiUubWFwLGxpYiVfcGljLm1hcCwkKGluc3RhbGwtbWFwKSkpOiBcCi0rICAkKGluc3RfbGliZGlyKS9saWIlX3BpYy5tYXA6ICQoY29tbW9uLW9ianBmeClsaWIlLm1hcCAkKCtmb3JjZSkKLSsJJChkby1pbnN0YWxsKQotK2VuZGlmCi0rCi0raWZkZWYgaW5zdGFsbC1leHRyYXMKLSskKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS9saWJjX3BpYy8sJChpbnN0YWxsLWV4dHJhcykpOiBcCi0rICAkKGluc3RfbGliZGlyKS9saWJjX3BpYy8lLm86ICQoZWxmLW9ianBmeCklLm9zICQoK2ZvcmNlKQotKwkkKGRvLWluc3RhbGwpCi0rZW5kaWYKLSsKLSAuUEhPTlk6IGluc3RhbGwtYmluLW5vc3ViZGlyIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpciBcCi0gCWluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXIgaW5zdGFsbC1zYmluLW5vc3ViZGlyIGluc3RhbGwtbGliLW5vc3ViZGlyIFwKLS0JaW5zdGFsbC1kYXRhLW5vc3ViZGlyIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpcgotKwlpbnN0YWxsLWRhdGEtbm9zdWJkaXIgaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyIGluc3RhbGwtbWFwLW5vc3ViZGlyIFwKLSsJaW5zdGFsbC1leHRyYXMtbm9zdWJkaXIKLSBpbnN0YWxsLWJpbi1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2JpbmRpcikvLCQoaW5zdGFsbC1iaW4pKQotIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2JpbmRpcikvLCQoaW5zdGFsbC1iaW4tc2NyaXB0KSkKLSBpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyOiBcCi1AQCAtMTI5MCw2ICsxMzIzLDEwIEBAIGluc3RhbGwtZGF0YS1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2RhdGFkaXIpLywkKGluc3RhbGwtZGF0YSkpCi0gaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfaW5jbHVkZWRpcikvLCQoaGVhZGVycykpCi0gaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXI6ICQoaW5zdGFsbC1vdGhlcnMpCi0gaW5zdGFsbC1vdGhlcnMtcHJvZ3JhbXMtbm9zdWJkaXI6ICQoaW5zdGFsbC1vdGhlcnMtcHJvZ3JhbXMpCi0raW5zdGFsbC1tYXAtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9saWJkaXIpLyxcCi0rCQkgICAgICAgJChwYXRzdWJzdCBsaWIlLm1hcCxsaWIlX3BpYy5tYXAsJChpbnN0YWxsLW1hcCkpKQotK2luc3RhbGwtZXh0cmFzLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS9saWJjX3BpYy8sXAotKwkJICAgICAgICQoaW5zdGFsbC1leHRyYXMpKQotIAotICMgV2UgbmVlZCBhbGwgdGhlIGAtbm9zdWJkaXInIHRhcmdldHMgc28gdGhhdCBgaW5zdGFsbCcgaW4gdGhlIHBhcmVudAotICMgZG9lc24ndCBkZXBlbmQgb24gc2V2ZXJhbCB0aGluZ3Mgd2hpY2ggZWFjaCBpdGVyYXRlIG92ZXIgdGhlIHN1YmRpcnMuCi1AQCAtMTI5OSw3ICsxMzM2LDggQEAgaW5zdGFsbC0lOjogaW5zdGFsbC0lLW5vc3ViZGlyIDsKLSAKLSAuUEhPTlk6IGluc3RhbGwgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXIKLSBpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcjogaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyIGluc3RhbGwtZGF0YS1ub3N1YmRpciBcCi0tCQkJICAgIGluc3RhbGwtbGliLW5vc3ViZGlyIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyCi0rCQkJICAgIGluc3RhbGwtbGliLW5vc3ViZGlyIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyIFwKLSsJCQkgICAgaW5zdGFsbC1tYXAtbm9zdWJkaXIgaW5zdGFsbC1leHRyYXMtbm9zdWJkaXIKLSBpZmVxICgkKGJ1aWxkLXByb2dyYW1zKSx5ZXMpCi0gaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtYmluLW5vc3ViZGlyIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpciBcCi0gCQkJICAgIGluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXIgaW5zdGFsbC1zYmluLW5vc3ViZGlyIFwKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5OTg5MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NjYgKzAsMCBAQAotRnJvbSA4MjUxNmUzZWQzNzJmNjE4Yzg4NmEyZGU0Zjk0OThmNTk3YWE4YThiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8yNl0gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDMgKystCi0gbG9jYWxlL2NhdG5hbWVzLmMgICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxvY2FsZS9sb2NhbGVpbmZvLmggICAgICAgICAgIHwgIDIgKy0KLSBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKystLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKysrLS0tLS0tLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrKysrLS0tLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jICB8ICAyICstCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKysKLSBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrKy0KLSBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oICAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9jYXRuYW1lcy5jCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvTWFrZWZpbGUgYi9sb2NhbGUvTWFrZWZpbGUKLWluZGV4IGM1Mzc5ZTYuLmM5OGM2NzUgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvTWFrZWZpbGUKLSsrKyBiL2xvY2FsZS9NYWtlZmlsZQotQEAgLTI1LDcgKzI1LDggQEAgaW5jbHVkZSAuLi9NYWtlY29uZmlnCi0gaGVhZGVycwkJPSBsb2NhbGUuaCBiaXRzL2xvY2FsZS5oIGxhbmdpbmZvLmggeGxvY2FsZS5oCi0gcm91dGluZXMJPSBzZXRsb2NhbGUgZmluZGxvY2FsZSBsb2FkbG9jYWxlIGxvYWRhcmNoaXZlIFwKLSAJCSAgbG9jYWxlY29udiBubF9sYW5naW5mbyBubF9sYW5naW5mb19sIG1iX2N1cl9tYXggXAotLQkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlCi0rCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUgXAotKwkJICBjYXRuYW1lcwotIHRlc3RzCQk9IHRzdC1DLWxvY2FsZSB0c3QtbG9jbmFtZSB0c3QtZHVwbG9jYWxlCi0gY2F0ZWdvcmllcwk9IGN0eXBlIG1lc3NhZ2VzIG1vbmV0YXJ5IG51bWVyaWMgdGltZSBwYXBlciBuYW1lIFwKLSAJCSAgYWRkcmVzcyB0ZWxlcGhvbmUgbWVhc3VyZW1lbnQgaWRlbnRpZmljYXRpb24gY29sbGF0ZQotZGlmZiAtLWdpdCBhL2xvY2FsZS9jYXRuYW1lcy5jIGIvbG9jYWxlL2NhdG5hbWVzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45ZmFkMzU3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvY2F0bmFtZXMuYwotQEAgLTAsMCArMSw0OCBAQAotKy8qIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlICJsb2NhbGVpbmZvLmgiCi0rCi0rLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLwotK2NvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rICAgIHsKLSsjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLSsgICAgICBjYXRlZ29yeV9uYW1lLAotKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLSsjdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0rICAgIH0KLSsgIH07Ci0rCi0rY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCi0rI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLSsgIH07Ci0rCi0rLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KLStjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKLSsjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0rI3VuZGVmCURFRklORV9DQVRFR09SWQotKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQotKyAgfTsKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggMWY0ZGE5Mi4uN2Y2ODkzNSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKLSsrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLUBAIC0yMjQsNyArMjI0LDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgX19sb2NhbGVfdCwgTE9DQUxFKQotICAgIHVudXNlZC4gIFdlIGNhbiBtYW5hZ2UgdGhpcyBwbGF5aW5nIHNvbWUgdHJpY2tzIHdpdGggd2VhayByZWZlcmVuY2VzLgotICAgIEJ1dCB3aXRoIHRocmVhZC1sb2NhbCBsb2NhbGUgc2V0dGluZ3MsIGl0IGJlY29tZXMgcXVpdGUgdW5nYWlubHkgdW5sZXNzCi0gICAgd2UgY2FuIHVzZSBfX3RocmVhZCB2YXJpYWJsZXMuICBTbyBvbmx5IGluIHRoYXQgY2FzZSBkbyB3ZSBhdHRlbXB0IHRoaXMuICAqLwotLSNpZm5kZWYgU0hBUkVECi0rI2lmICFkZWZpbmVkIFNIQVJFRCAmJiAhZGVmaW5lZCBJTl9HTElCQ19MT0NBTEVERUYKLSAjIGluY2x1ZGUgPHRscy5oPgotICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQotICNlbmRpZgotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLWluZGV4IDk5ZmNkMzUuLjVlNTI4ZGMgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLUBAIC0xOSw3ICsxOSw5IEBACi0gI2luY2x1ZGUgPGVycm9yLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSsjaWZuZGVmIE5PX1VOQ09NUFJFU1MKLSAjaW5jbHVkZSA8c3Bhd24uaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotQEAgLTE1Niw2ICsxNTgsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKLSAgIHJldHVybiBjbG9zZWRpciAoZGlyKTsKLSB9Ci0gCi0rI2lmbmRlZiBOT19VTkNPTVBSRVNTCi0gLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCi0gICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KLSBzdGF0aWMKLUBAIC0yMDQsNiArMjA3LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKLSAgICAgfQotICAgcmV0dXJuIE5VTEw7Ci0gfQotKyNlbmRpZgotIAotIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCi0gRklMRSAqCi1AQCAtMjI2LDYgKzIzMCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotICAgICByZXR1cm4gc3RyZWFtOwotIAotKyNpZm5kZWYgTk9fVU5DT01QUkVTUwotICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7Ci0gICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOwotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotQEAgLTIzNSw2ICsyNDAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKLSAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOwotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotICAgICByZXR1cm4gc3RyZWFtOwotKyNlbmRpZgotIAotICAgcmV0dXJuIE5VTEw7Ci0gfQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCi1pbmRleCAxZTEyNWY2Li4zYjI4NjdmIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotQEAgLTM1MCw3ICszNTAsNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKLSAgICAgfQotICAgaWYgKHdjcyAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW4gKCh3Y2hhcl90ICopIHdjcyk7Ci0rICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW5fdWludDMyICh3Y3MpOwotICAgICAgIHVpbnQzMl90IHplcm8gPSAwOwotICAgICAgIC8qIEhhbmRsZSA8VTAwMDA+IGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4gICovCi0gICAgICAgaWYgKG53Y3MgPT0gMCkKLUBAIC0xNzc2LDggKzE3NzYsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7Ci0gCi0gCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCi0gCQl7Ci0tCQkgIGludCBjID0gd21lbWNtcCAoKHdjaGFyX3QgKikgKCplcHRyKS0+d2NzLAotLQkJCQkgICAod2NoYXJfdCAqKSBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOwotKwkJICBpbnQgYyA9IHdtZW1jbXBfdWludDMyICgoKmVwdHIpLT53Y3MsIHJ1bnAtPndjcywgcnVucC0+bndjcyk7Ci0gCi0gCQkgIGlmIChjID09IDApCi0gCQkgICAgewotQEAgLTIwMTAsOSArMjAwOSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKLSAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLwotIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAotIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwotLQkgICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCi0tCQkJICAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAotLQkJCSAgcnVucC0+bndjcyAtIDEpID09IDAKLSsJICAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKLSsJCQkJIHJ1bnAtPndjbmV4dC0+d2NzLAotKwkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKLSAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KLSAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCi0gCSAgICB7Ci1AQCAtMjAzNiw5ICsyMDM1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQotIAkJcnVucCA9IHJ1bnAtPndjbmV4dDsKLSAJICAgICAgd2hpbGUgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCi0gCQkgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCi0tCQkgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKLS0JCQkJICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCi0tCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAotKwkJICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAotKwkJCQkJcnVucC0+d2NuZXh0LT53Y3MsCi0rCQkJCQlydW5wLT5ud2NzIC0gMSkgPT0gMAotIAkJICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQotIAkJCSA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotaW5kZXggMGZkMTQxYy4uNjgxMzZlNiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotQEAgLTkyNiw3ICs5MjYsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOwotIAotICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCi0tCQkJID8gd2NzbGVuICgod2NoYXJfdCAqKSBjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQotKwkJCSA/IHdjc2xlbl91aW50MzIgKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCi0gCQkJIDogMCk7Ci0gCi0gICBpbml0X2xvY2FsZV9kYXRhICgmZmlsZSwgbmVsZW1zKTsKLUBAIC0xOTM3LDcgKzE5MzcsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAotIAkgICAgaWdub3JlID0gMTsKLSAJICBlbHNlCi0gCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCi0tCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW4gKCh3Y2hhcl90ICopIHRvX3dzdHIpICogNCk7Ci0rCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW5fdWludDMyICh0b193c3RyKSAqIDQpOwotIAotIAkgIGZpcnN0ID0gMDsKLSAJfQotQEAgLTI0NzEsOCArMjQ3MSw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7Ci0gCSAgICB9Ci0gCi0gCWhhbmRsZV90b2tfZGlnaXQ6Ci0tCSAgY2xhc3NfYml0ID0gX0lTd2RpZ2l0OwotLQkgIGNsYXNzMjU2X2JpdCA9IF9JU2RpZ2l0OwotKwkgIGNsYXNzX2JpdCA9IEJJVHcgKHRva19kaWdpdCk7Ci0rCSAgY2xhc3MyNTZfYml0ID0gQklUICh0b2tfZGlnaXQpOwotIAkgIGhhbmRsZV9kaWdpdHMgPSAxOwotIAkgIGdvdG8gcmVhZF9jaGFyY2xhc3M7Ci0gCi1AQCAtMzkyOSw4ICszOTI5LDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAotIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCi0gCSAgICB7Ci0tCSAgICAgIGludCByZXMgPSB3Y3NjbXAgKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtpZHhdLT5mcm9tLAotLQkJCQkoY29uc3Qgd2NoYXJfdCAqKSBydW5wLT5mcm9tKTsKLSsJICAgICAgaW50IHJlcyA9IHdjc2NtcF91aW50MzIgKHNvcnRlZFtpZHhdLT5mcm9tLCBydW5wLT5mcm9tKTsKLSAJICAgICAgaWYgKHJlcyA9PSAwKQotIAkJewotIAkJICByZXBsYWNlID0gMTsKLUBAIC0zOTY3LDExICszOTY2LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQotIAl7Ci0gCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOwotLQkgIGZyb21fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKLSsJICBmcm9tX2xlbiArPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOwotIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICB0b19sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7Ci0rCSAgICAgIHRvX2xlbiArPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7Ci0gCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7Ci0gCSAgICB9Ci0gCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgotQEAgLTM5OTUsMTggKzM5OTQsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47Ci0gCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOwotIAotLQkgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKLS0JICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKLS0JCSAgIChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOwotKwkgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0rCSAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAotKwkJCSAgc29ydGVkW2NudF0tPmZyb20sIGxlbik7Ci0gCSAgZnJvbV9sZW4gKz0gbGVuOwotIAotIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKLSAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKLSAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7Ci0tCSAgICAgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCi0tCQkgICAgICAgKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0ciwgbGVuKTsKLSsJICAgICAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOwotKwkgICAgICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKLSsJCQkgICAgICBzcnVucC0+c3RyLCBsZW4pOwotIAkgICAgICB0b19sZW4gKz0gbGVuOwotIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OwotIAkgICAgfQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi1pbmRleCA4NzUzMWJjLi41ZjJjMjY2IDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotQEAgLTIxNSw4ICsyMTUsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLSsJICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd3RfZm10X2FtcG1bXQotKwkgICAgPSB7ICclJywnSScsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLCclJywncCcsMCB9OwotIAkgIHRpbWUtPnRfZm10X2FtcG0gPSAiJUk6JU06JVMgJXAiOwotLQkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJUk6JU06JVMgJXAiOwotKwkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gd3RfZm10X2FtcG07Ci0gCX0KLSAgICAgfQotIAotQEAgLTIyNiw3ICsyMjgsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKLSAgICAgICBjb25zdCBpbnQgZGF5c19wZXJfbW9udGhbMTJdID0geyAzMSwgMjksIDMxLCAzMCwgMzEsIDMwLAotIAkJCQkgICAgICAgMzEsIDMxLCAzMCwgMzEgLDMwLCAzMSB9OwotICAgICAgIHNpemVfdCBpZHg7Ci0tICAgICAgd2NoYXJfdCAqd3N0cjsKLSsgICAgICB1aW50MzJfdCAqd3N0cjsKLSAKLSAgICAgICB0aW1lLT5lcmFfZW50cmllcyA9Ci0gCShzdHJ1Y3QgZXJhX2RhdGEgKikgeG1hbGxvYyAodGltZS0+bnVtX2VyYQotQEAgLTQ2NCwxOCArNDY2LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOwotIAkgICAgfQotIAotIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KLS0JICB3c3RyID0gd2NzY2hyICgod2NoYXJfdCAqKSB0aW1lLT53ZXJhW2lkeF0sIEwnOicpOy8qIGVuZCBkaXJlY3Rpb24gKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIG9mZnNldCAqLwotLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgc3RhcnQgKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIGVuZCAqLwotKwkgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh0aW1lLT53ZXJhW2lkeF0sIEwnOicpOyAvKiBlbmQgZGlyZWN0aW9uICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgb2Zmc2V0ICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgc3RhcnQgKi8KLSsJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBlbmQgKi8KLSAJICBpZiAod3N0ciAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOwotLQkgICAgICB3c3RyID0gd2NzY2hyICh3c3RyICsgMSwgTCc6Jyk7CS8qIGVuZCBuYW1lICovCi0rCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSB3c3RyICsgMTsKLSsJICAgICAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKTsgLyogZW5kIG5hbWUgKi8KLSAJICAgICAgaWYgKHdzdHIgIT0gTlVMTCkKLSAJCXsKLSAJCSAgKndzdHIgPSBMJ1wwJzsKLS0JCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOwotKwkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSB3c3RyICsgMTsKLSAJCX0KLSAJICAgICAgZWxzZQotIAkJdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9Ci1AQCAtNTM0LDcgKzUzNiwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKLSAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQotICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7Ci0gICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCi0tICAgIHRpbWUtPndkYXRlX2ZtdCA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKLSsgICAgewotKyAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3ZGF0ZV9mbXRbXSA9Ci0rCXsgJyUnLCdhJywnICcsCi0rCSAgJyUnLCdiJywnICcsCi0rCSAgJyUnLCdlJywnICcsCi0rCSAgJyUnLCdIJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsCi0rCSAgJyUnLCdaJywnICcsCi0rCSAgJyUnLCdZJywwIH07Ci0rICAgICAgdGltZS0+d2RhdGVfZm10ID0gd2RhdGVfZm10OwotKyAgICB9Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCi1pbmRleCBiODg1ZjY1Li4wYWZiNjMxIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotQEAgLTU5NSw3ICs1OTUsNyBAQCBnZXRfc3RyaW5nIChzdHJ1Y3QgbGluZXJlYWRlciAqbHIsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gewotICAgaW50IHJldHVybl93aWRlc3RyID0gbHItPnJldHVybl93aWRlc3RyOwotICAgY2hhciAqYnVmOwotLSAgd2NoYXJfdCAqYnVmMiA9IE5VTEw7Ci0rICB1aW50MzJfdCAqYnVmMiA9IE5VTEw7Ci0gICBzaXplX3QgYnVmYWN0OwotICAgc2l6ZV90IGJ1Zm1heCA9IDU2OwotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotaW5kZXggYjRjNDhmMS4uZWQwOGQ0OCAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1AQCAtMTA4LDYgKzEwOCw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247Ci0gI2RlZmluZSBPUFRfTElTVF9BUkNISVZFIDMwOQotICNkZWZpbmUgT1BUX0xJVFRMRV9FTkRJQU4gNDAwCi0gI2RlZmluZSBPUFRfQklHX0VORElBTiA0MDEKLSsjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDAyCi0gCi0gLyogRGVmaW5pdGlvbnMgb2YgYXJndW1lbnRzIGZvciBhcmdwIGZ1bmN0aW9ucy4gICovCi0gc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQotQEAgLTE0Myw2ICsxNDQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9Ci0gICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCi0gICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCi0gICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCi0rICB7ICJ1aW50MzItYWxpZ24iLCBPUFRfVUlOVDMyX0FMSUdOLCAiQUxJR05NRU5UIiwgMCwKLSsgICAgTl8oIlNldCB0aGUgdGFyZ2V0J3MgdWludDMyX3QgYWxpZ25tZW50IGluIGJ5dGVzIChkZWZhdWx0IDQpIikgfSwKLSAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9Ci0gfTsKLSAKLUBAIC0yMzIsMTIgKzIzNSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLwotICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7Ci0gCi0rI2lmbmRlZiBOT19TWVNDT05GCi0gICAvKiBMb29rIHdoZXRoZXIgdGhlIHN5c3RlbSByZWFsbHkgYWxsb3dzIGxvY2FsZSBkZWZpbml0aW9ucy4gIFBPU0lYCi0gICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCi0gICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KLSAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKLSAgICAgV0lUSF9DVVJfTE9DQUxFIChlcnJvciAoMywgMCwgXygiXAotIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSkpOwotKyNlbmRpZgotIAotICAgLyogUHJvY2VzcyBjaGFybWFwIGZpbGUuICAqLwotICAgY2hhcm1hcCA9IGNoYXJtYXBfcmVhZCAoY2hhcm1hcF9maWxlLCB2ZXJib3NlLCAxLCBiZV9xdWlldCwgMSk7Ci1AQCAtMzI4LDYgKzMzMyw5IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCi0gICAgIGNhc2UgT1BUX0JJR19FTkRJQU46Ci0gICAgICAgc2V0X2JpZ19lbmRpYW4gKHRydWUpOwotICAgICAgIGJyZWFrOwotKyAgICBjYXNlIE9QVF9VSU5UMzJfQUxJR046Ci0rICAgICAgdWludDMyX2FsaWduX21hc2sgPSBzdHJ0b2wgKGFyZywgTlVMTCwgMCkgLSAxOwotKyAgICAgIGJyZWFrOwotICAgICBjYXNlICdjJzoKLSAgICAgICBmb3JjZV9vdXRwdXQgPSAxOwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCi1pbmRleCAzMmY1Y2QyLi4wMjk2N2IwIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCi0gICAgbWFjaGluZSBydW5uaW5nIGxvY2FsZWRlZi4gICovCi0gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKLSAKLSsvKiBUaGUgdGFyZ2V0J3MgdmFsdWUgb2YgX19hbGlnbl9fKHVpbnQzMl90KSAtIDEuICAqLwotK3Vuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzayA9IDM7Ci0rCi0gLyogV2hlbiBjYWxsZWQgb3V0c2lkZSBhIHN0YXJ0X2xvY2FsZV9zdHJ1Y3R1cmUvZW5kX2xvY2FsZV9zdHJ1Y3R1cmUKLSAgICBvciBzdGFydF9sb2NhbGVfcHJlbHVkZS9lbmRfbG9jYWxlX3ByZWx1ZGUgYmxvY2ssIHJlY29yZCB0aGF0IHRoZQotICAgIG5leHQgYnl0ZSBpbiBGSUxFJ3Mgb2JzdGFjayB3aWxsIGJlIHRoZSBmaXJzdCBieXRlIG9mIGEgbmV3IGVsZW1lbnQuCi1AQCAtNjIxLDcgKzYyNCw3IEBAIGFkZF9sb2NhbGVfc3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cmluZykKLSB2b2lkCi0gYWRkX2xvY2FsZV93c3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IHVpbnQzMl90ICpzdHJpbmcpCi0gewotLSAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzdHJpbmcpICsgMSk7Ci0rICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW5fdWludDMyIChzdHJpbmcpICsgMSk7Ci0gfQotIAotIC8qIFJlY29yZCB0aGF0IEZJTEUncyBuZXh0IGVsZW1lbnQgaXMgdGhlIDMyLWJpdCBpbnRlZ2VyIFZBTFVFLiAgKi8KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAotaW5kZXggYTNkZDkwNC4uMmM3NzYzYSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLUBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLAotIAotIGV4dGVybiBib29sIHN3YXBfZW5kaWFubmVzc19wOwotIAotK2V4dGVybiB1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2s7Ci0rCi0gLyogQ2hhbmdlIHRoZSBvdXRwdXQgdG8gYmUgYmlnLWVuZGlhbiBpZiBCSUdfRU5ESUFOIGlzIHRydWUgYW5kCi0gICAgbGl0dGxlLWVuZGlhbiBvdGhlcndpc2UuICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZAotQEAgLTg5LDcgKzkxLDggQEAgbWF5YmVfc3dhcF91aW50MzIgKHVpbnQzMl90IHZhbHVlKQotIH0KLSAKLSAvKiBMaWtld2lzZSwgYnV0IG11bmdlIGFuIGFycmF5IG9mIE4gdWludDMyX3RzIHN0YXJ0aW5nIGF0IEFSUkFZLiAgKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQKLStzdGF0aWMgdm9pZAotK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQotIHsKLSAgIGlmIChzd2FwX2VuZGlhbm5lc3NfcCkKLUBAIC05OSw3ICsxMDIsOCBAQCBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKLSAKLSAvKiBMaWtlIG1heWJlX3N3YXBfdWludDMyX2FycmF5LCBidXQgdGhlIGFycmF5IG9mIE4gZWxlbWVudHMgaXMgYXQKLSAgICB0aGUgZW5kIG9mIE9CU1RBQ0sncyBjdXJyZW50IG9iamVjdC4gICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0rc3RhdGljIHZvaWQKLStfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBtYXliZV9zd2FwX3VpbnQzMl9vYnN0YWNrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgc2l6ZV90IG4pCi0gewotICAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKCh1aW50MzJfdCAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzdGFjaykgLSBuLCBuKTsKLUBAIC0yNzYsNCArMjgwLDU1IEBAIGV4dGVybiB2b2lkIGlkZW50aWZpY2F0aW9uX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsCi0gCQkJCSAgIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gCQkJCSAgIGNvbnN0IGNoYXIgKm91dHB1dF9wYXRoKTsKLSAKLStzdGF0aWMgc2l6ZV90IHdjc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgdWludDMyX3QgKiB3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIHVpbnQzMl90ICogd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIGludCB3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyBpbnQgd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotKwotK3N0YXRpYyBzaXplX3QKLSt3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKQotK3sKLSsgIHNpemVfdCBsZW4gPSAwOwotKyAgd2hpbGUgKHN0cltsZW5dICE9IDApCi0rICAgIGxlbisrOwotKyAgcmV0dXJuIGxlbjsKLSt9Ci0rCi0rc3RhdGljICBpbnQKLSt3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQotK3sKLSsgIHdoaWxlIChuLS0gIT0gMCkKLSsgICAgewotKyAgICAgIGludCBkaWZmID0gKnMxKysgLSAqczIrKzsKLSsgICAgICBpZiAoZGlmZiAhPSAwKQotKwlyZXR1cm4gZGlmZjsKLSsgICAgfQotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSt3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikKLSt7Ci0rICB3aGlsZSAoKnMxICE9IDAgJiYgKnMxID09ICpzMikKLSsgICAgczErKywgczIrKzsKLSsgIHJldHVybiAqczEgLSAqczI7Ci0rfQotKwotK3N0YXRpYyB1aW50MzJfdCAqCi0rd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKLSt7Ci0rICByZXR1cm4gbWVtY3B5IChzMSwgczIsIG4gKiBzaXplb2YgKHVpbnQzMl90KSk7Ci0rfQotKwotK3N0YXRpYyB1aW50MzJfdCAqCi0rd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKQotK3sKLSsgIGRvCi0rICAgIGlmICgqcyA9PSBjaCkKLSsgICAgICByZXR1cm4gKHVpbnQzMl90ICopIHM7Ci0rICB3aGlsZSAoKnMrKyAhPSAwKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSAjZW5kaWYgLyogbG9jZmlsZS5oICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCi1pbmRleCA2OWIzMTQxLi4xY2VmMGJlIDEwMDY0NAotLS0tIGEvbG9jYWxlL3NldGxvY2FsZS5jCi0rKysgYi9sb2NhbGUvc2V0bG9jYWxlLmMKLUBAIC02NCwzNiArNjQsNiBAQCBzdGF0aWMgY2hhciAqY29uc3QgX25sX2N1cnJlbnRfdXNlZFtdID0KLSAjZW5kaWYKLSAKLSAKLS0vKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCi0tY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0gICAgewotLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotLSAgICAgIGNhdGVnb3J5X25hbWUsCi0tI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLS0gICAgfQotLSAgfTsKLS0KLS1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKLS0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0tI3VuZGVmIERFRklORV9DQVRFR09SWQotLSAgfTsKLS0KLS0vKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLwotLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAotLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLS0jdW5kZWYJREVGSU5FX0NBVEVHT1JZCi0tICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCi0tICB9OwotLQotLQotICNpZmRlZiBOTF9DVVJSRU5UX0lORElSRUNUCi0gIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQotICNlbHNlCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU5MzUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGE3ODQ3NDI3MzljOTBlZWEwZDRjY2JiZDA3M2EwNjdkNTVjYTk1ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvMjVdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKKworQWNjb3JkaW5nIHRvIHRoZSBFTEYgc3BlY2lmaWNhdGlvbjoKKworV2hlbiByZXNvbHZpbmcgc3ltYm9saWMgcmVmZXJlbmNlcywgdGhlIGR5bmFtaWMgbGlua2VyIGV4YW1pbmVzIHRoZSBzeW1ib2wKK3RhYmxlcyB3aXRoIGEgYnJlYWR0aC1maXJzdCBzZWFyY2guCisKK1RoaXMgZnVuY3Rpb24gd2FzIHVzaW5nIGEgZGVwdGggZmlyc3Qgc2VhcmNoLiAgQnkgZG9pbmcgc28gdGhlIGNvbmZsaWN0CityZXNvbHV0aW9uIHJlcG9ydGVkIHRvIHRoZSBwcmVsaW5rZXIgKHdoZW4gTERfVFJBQ0VfUFJFTElOS0lORz0xIGlzIHNldCkKK3dhcyBpbmNvcnJlY3QuICBUaGlzIGNhdXNlZCBwcm9ibGVtcyB3aGVuIHRoZWlyIHdlcmUgdmFyaW91cyBjaXJjdWxhcgorZGVwZW5kZW5jaWVzIGJldHdlZW4gbGlicmFyaWVzLiAgVGhlIHByb2JsZW0gdXN1YWxseSBtYW5pZmVzdGVkIGl0c2VsZiBieQordGhlIHdyb25nIElGVU5DIGJlaW5nIGV4ZWN1dGVkLgorCitbQlojIDIwNDg4XQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYV0KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorLS0tCisgZWxmL2RsLWRlcHMuYyB8IDE0ICsrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYworaW5kZXggMWI4YmFjNjU5My4uYzYxNjgwOGYzMSAxMDA2NDQKKy0tLSBhL2VsZi9kbC1kZXBzLmMKKysrKyBiL2VsZi9kbC1kZXBzLmMKK0BAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKKyB7CisgICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKKyAgIHN0cnVjdCBsaW5rX21hcCAqKnE7CisrICBzdHJ1Y3QgbGlua19tYXAgKipyOworIAorICAgKnArKyA9IG1hcDsKKyAgIG1hcC0+bF9yZXNlcnZlZCA9IDE7CistICBpZiAobWFwLT5sX2luaXRmaW5pKQorLSAgICBmb3IgKHEgPSBtYXAtPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQorLSAgICAgIGlmICghICgqcSktPmxfcmVzZXJ2ZWQpCistCXAgKz0gX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChwLCAqcSk7CisrCisrICBmb3IgKHIgPSBsaXN0OyByIDwgcDsgKytyKQorKyAgICBpZiAoKCpyKS0+bF9pbml0ZmluaSkKKysgICAgICBmb3IgKHEgPSAoKnIpLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKKysJaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKKysJICB7CisrCSAgICAqcCsrID0gKnE7CisrCSAgICAoKnEpLT5sX3Jlc2VydmVkID0gMTsKKysJICB9CisgICByZXR1cm4gcCAtIGxpc3Q7CisgfQorIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjBmNWQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gYzJkOGNkZWFiMTE2Y2FhY2RmZWRiMzVlZWIzZTc0M2I0NDgwN2JlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEFwciAyMDE2IDIxOjExOjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMjZdIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAotCi1UaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCi1DZW50T3MgNS5YIG1hY2hpbmUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9jb25maWcuaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi1pbmRleCBmNjA2MzY1Li4wZTVmOGMzIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLUBAIC0xOSw2ICsxOSw5IEBACi0gI2lmbmRlZiBfTERfQ09ORklHX0gKLSAjZGVmaW5lIF9MRF9DT05GSUdfSAkxCi0gCi0rI2lmbmRlZiBEVU1NWV9MT0NBTEVfVAotKyNkZWZpbmUgRFVNTVlfTE9DQUxFX1QKLSsjZW5kaWYKLSAvKiBVc2UgdGhlIGludGVybmFsIHRleHRkb21haW4gdXNlZCBmb3IgbGliYyBtZXNzYWdlcy4gICovCi0gI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQotICNpZm5kZWYgVkVSU0lPTgotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlhZDA0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBmM2E2NzA0OTZjOGZlNmQ0YWNmMDQ1ZjViMTY3YTE5Y2Y0MWIwNDRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0o9QzM9QTlyPUMzPUE5bXk9MjBSb3Nlbj89IDxqZXJlbXkucm9zZW5Ac21pbGUuZnI+CitEYXRlOiBNb24sIDIyIEF1ZyAyMDE2IDE2OjA5OjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMjUvMjVdIGxvY2FsZTogZml4IGhhcmQtY29kZWQgcmVmZXJlbmNlIHRvIGdjYyAtRQorCitXaGVuIG5ldyB2ZXJzaW9uIG9mIGNvbXBpbGVycyBhcmUgcHVibGlzaGVkLCB0aGV5IG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoCitvbGRlciB2ZXJzaW9ucyBvZiBzb2Z0d2FyZS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgY29tbW9uIHdoZW4gc29mdHdhcmUgaXMgYnVpbHQKK3dpdGggLVdlcnJvci4KKworQXV0b3Rvb2xzIHByb3ZpZGVzIGEgd2F5IGZvciBhIHVzZXIgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiBoaXMgY29tcGlsZXIgdXNpbmcgYQorc2V0IG9mIHZhcmlhYmxlcyAoJENDICRDWFggJENQUCBldGMuKS4gVGhvc2UgdmFyaWFibGVzIGFyZSB1c2VkIGNvcnJlY3RseSB3aGVuCitjb21waWxpbmcgZ2xpYmMgYnV0IHRoZSBzY3JpcHQgdXNlZCB0byBnZW5lcmF0ZSB0cmFuc2xpdGVyYXRpb25zIGluIHRoZSBsb2NhbGUvCitzdWJkaXJlY3RvcnkgZGlyZWN0bHkgY2FsbHMgdGhlIGdjYyBiaW5hcnkgdG8gZ2V0IHRoZSBvdXRwdXQgb2YgdGhlCitwcmVwcm9jZXNzb3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgJENQUCB2YXJpYWJsZSBwcm92aWRlZCBieSB0aGUgYnVpbGQKK2Vudmlyb25tZW50LgorCitUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBoYXJkLWNvZGVkIHJlZmVyZW5jZSB0byB0aGUgZ2NjIGJpbmFyeSB3aXRoIHRoZSBwcm9wZXIKK2Vudmlyb25tZW50IHZhcmlhYmxlLCB0aHVzIGFsbG93aW5nIGEgdXNlciB0byBvdmVycmlkZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE2LTA4L21zZzAwNzQ2Lmh0bWxdCistLS0KKyBsb2NhbGUvZ2VuLXRyYW5zbGl0LnBsIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2dlbi10cmFuc2xpdC5wbCBiL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKK2luZGV4IDMwZDNmMmYxOTUuLmU5NzY1MzAxN2MgMTAwNjQ0CistLS0gYS9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsCisrKysgYi9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsCitAQCAtMSw1ICsxLDUgQEAKKyAjIS91c3IvYmluL3BlcmwgLXcKKy1vcGVuIEYsICJjYXQgQy10cmFuc2xpdC5oLmluIHwgZ2NjIC1FIC0gfCIgfHwgZGllICJDYW5ub3QgcHJlcHJvY2VzcyBpbnB1dCBmaWxlIjsKKytvcGVuIEYsICdjYXQgQy10cmFuc2xpdC5oLmluIHwgJHtDUFA6LWdjYyAtRX0gLSB8JyB8fCBkaWUgIkNhbm5vdCBwcmVwcm9jZXNzIGlucHV0IGZpbGUiOworIAorIAorIHN1YiBjc3RybGVuIHsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWFzc2VydC1TdXBwcmVzcy1wZWRhbnRpYy13YXJuaW5nLWNhdXNlZC1ieS1zdGF0ZW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1hc3NlcnQtU3VwcHJlc3MtcGVkYW50aWMtd2FybmluZy1jYXVzZWQtYnktc3RhdGVtZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYmI5NmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1hc3NlcnQtU3VwcHJlc3MtcGVkYW50aWMtd2FybmluZy1jYXVzZWQtYnktc3RhdGVtZW50LnBhdGNoCkBAIC0wLDAgKzEsOTAgQEAKK0Zyb20gMDM3MjgzY2JjNzQ3MzliNzJmMzZkZmVjODI3ZDEyMGZhYTI0MzQwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZsb3JpYW4gV2VpbWVyIDxmd2VpbWVyIGF0IHJlZGhhdCBkb3QgY29tPgorRGF0ZTogVGh1LCA2IEp1bCAyMDE3IDExOjUwOjU1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMjYvMjZdIGFzc2VydDogU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyBjYXVzZWQgYnkgc3RhdGVtZW50CisgZXhwcmVzc2lvbiBbQlojIDIxMjQyXQorCitPbiAwNy8wNS8yMDE3IDEwOjE1IFBNLCBaYWNrIFdlaW5iZXJnIHdyb3RlOgorPiBPbiBXZWQsIEp1bCA1LCAyMDE3IGF0IDExOjUxIEFNLCBGbG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPiB3cm90ZToKKz4+IE9uIDA3LzA1LzIwMTcgMDU6NDYgUE0sIFphY2sgV2VpbmJlcmcgd3JvdGU6Cis+Pj4gQSBwcm9ibGVtIG9jY3VycyB0byBtZTogZXhwcmVzc2lvbnMgaW52b2x2aW5nIFZMQXMgX2FyZV8gZXZhbHVhdGVkCis+Pj4gaW5zaWRlIHNpemVvZi4KKz4+Cis+PiBUaGUgdHlwZSBvZiB0aGUgc2l6ZW9mIGFyZ3VtZW50IHdvdWxkIHN0aWxsIGJlIGludCAoZHVlIHRvIHRoZQorPj4gY29tcGFyaXNvbiBhZ2FpbnN0IDApLCBzbyB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgb2NjdXIuCis+Cis+IEkgcmVjaGVja2VkIHdoYXQgQzk5IHNheXMgYWJvdXQgc2l6ZW9mIGFuZCBWTEFzLCBhbmQgeW91J3JlIHJpZ2h0IC0KKz4gdGhlIG9wZXJhbmQgb2Ygc2l6ZW9mIGlzIG9ubHkgZXZhbHVhdGVkIHdoZW4gc2l6ZW9mIGlzIF9kaXJlY3RseV8KKz4gYXBwbGllZCB0byBhIFZMQS4gIFNvIHRoaXMgaXMgaW5kZWVkIHNhZmUsIGJ1dCBJIHRoaW5rIHRoaXMgd3JpbmtsZQorPiBzaG91bGQgYmUgbWVudGlvbmVkIGluIHRoZSBjb21tZW50LiAgUGVyaGFwcworPgorPiAvKiBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBFWFBSIGlzIG5vdCBldmFsdWF0ZWQgZHVlIHRvIHRoZSBzaXplb2YsCis+ICAgIGJ1dCB3aWxsIHRyaWdnZXIgYW55IHBlZGFudGljIHdhcm5pbmdzIG1hc2tlZCBieSB0aGUgX19leHRlbnNpb25fXworPiAgICBmb3IgdGhlIHNlY29uZCBvY2N1cnJlbmNlLiAgVGhlIGV4cGxpY2l0IGNvbXBhcmlzb24gYWdhaW5zdCB6ZXJvCis+ICAgIGVuc3VyZXMgdGhhdCBzaXplb2YgaXMgbm90IGRpcmVjdGx5IGFwcGxpZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIG9yCis+ICAgIGJpdC1maWVsZCAod2hpY2ggd291bGQgYmUgaWxsLWZvcm1lZCkgb3IgVkxBICh3aGljaCB3b3VsZCBiZSBldmFsdWF0ZWQpLiAgKi8KKz4KKz4gencKKworV2hhdCBhYm91dCB0aGUgYXR0YWNoZWQgcGF0Y2g/CisKK1NpZGRoZXNoLCBpcyB0aGlzIG9rYXkgZHVyaW5nIHRoZSBmcmVlemU/ICBJJ2QgbGlrZSB0byBiYWNrcG9ydCBpdCB0bworMi4yNSBhcyB3ZWxsLgorCitUaGFua3MsCitGbG9yaWFuCisKK2Fzc2VydDogU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyBjYXVzZWQgYnkgc3RhdGVtZW50IGV4cHJlc3Npb24KKworMjAxNy0wNy0wNiAgRmxvcmlhbiBXZWltZXIgIDxmd2VpbWVyQHJlZGhhdC5jb20+CisKKwlbQlogIzIxMjQyXQorCSogYXNzZXJ0L2Fzc2VydC5oIFtfX0dOVUNfXyAmJiAhX19TVFJJQ1RfQU5TSV9fXSAoYXNzZXJ0KToKKwlTdXBwcmVzcyBwZWRhbnRpYyB3YXJuaW5nIHJlc3VsdGluZyBmcm9tIHN0YXRlbWVudCBleHByZXNzaW9uLgorCShfX0FTU0VSVF9GVU5DVElPTik6IEFkZCBtaXNzaW5nIF9fZXh0ZW5kc2lvbl9fLgorLS0tCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgYXNzZXJ0L2Fzc2VydC5oIHwgMTIgKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Fzc2VydC9hc3NlcnQuaCBiL2Fzc2VydC9hc3NlcnQuaAoraW5kZXggMjJmMDE5NTM3Yy4uNjgwMWNmZWIxMCAxMDA2NDQKKy0tLSBhL2Fzc2VydC9hc3NlcnQuaAorKysrIGIvYXNzZXJ0L2Fzc2VydC5oCitAQCAtOTEsMTMgKzkxLDE5IEBAIF9fRU5EX0RFQ0xTCisgICAgICA/IF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkJCQkJCQlcCisgICAgICA6IF9fYXNzZXJ0X2ZhaWwgKCNleHByLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fQVNTRVJUX0ZVTkNUSU9OKSkKKyAjIGVsc2UKKysvKiBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBFWFBSIGlzIG5vdCBldmFsdWF0ZWQgZHVlIHRvIHRoZSBzaXplb2YsCisrICAgYnV0IHdpbGwgdHJpZ2dlciBhbnkgcGVkYW50aWMgd2FybmluZ3MgbWFza2VkIGJ5IHRoZSBfX2V4dGVuc2lvbl9fCisrICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSBleHBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgemVybyBpcworKyAgIHJlcXVpcmVkIHRvIHN1cHBvcnQgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGJpdCBmaWVsZHMgaW4gdGhpcworKyAgIGNvbnRleHQsIGFuZCB0byBzdXBwcmVzcyB0aGUgZXZhbHVhdGlvbiBvZiB2YXJpYWJsZSBsZW5ndGgKKysgICBhcnJheXMuICAqLworICMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAorLSAgICAoewkJCQkJCQkJCVwKKysgICgodm9pZCkgc2l6ZW9mICgoZXhwcikgPT0gMCksIF9fZXh0ZW5zaW9uX18gKHsJCQlcCisgICAgICAgaWYgKGV4cHIpCQkJCQkJCQlcCisgICAgICAgICA7IC8qIGVtcHR5ICovCQkJCQkJCVwKKyAgICAgICBlbHNlCQkJCQkJCQlcCisgICAgICAgICBfX2Fzc2VydF9mYWlsICgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTik7CVwKKy0gICAgfSkKKysgICAgfSkpCisgIyBlbmRpZgorIAorICMgaWZkZWYJX19VU0VfR05VCitAQCAtMTEzLDcgKzExOSw3IEBAIF9fRU5EX0RFQ0xTCisgICAgQzl4IGhhcyBhIHNpbWlsYXIgdmFyaWFibGUgY2FsbGVkIF9fZnVuY19fLCBidXQgcHJlZmVyIHRoZSBHQ0Mgb25lIHNpbmNlCisgICAgaXQgZGVtYW5nbGVzIEMrKyBmdW5jdGlvbiBuYW1lcy4gICovCisgIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzID8gX19HTlVDX1BSRVJFUSAoMiwgNikgOiBfX0dOVUNfUFJFUkVRICgyLCA0KQorLSMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19QUkVUVFlfRlVOQ1RJT05fXworKyMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19leHRlbnNpb25fXyBfX1BSRVRUWV9GVU5DVElPTl9fCisgIyBlbHNlCisgIyAgaWYgZGVmaW5lZCBfX1NURENfVkVSU0lPTl9fICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTAorICMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19mdW5jX18KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTJmNTMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGZiMzE1YzE5N2NjYTYxMjk5YTZmNjU4OGVhMzQ2MDE0NWMyNTVkMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMjZdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKLQotQWNjb3JkaW5nIHRvIHRoZSBFTEYgc3BlY2lmaWNhdGlvbjoKLQotV2hlbiByZXNvbHZpbmcgc3ltYm9saWMgcmVmZXJlbmNlcywgdGhlIGR5bmFtaWMgbGlua2VyIGV4YW1pbmVzIHRoZSBzeW1ib2wKLXRhYmxlcyB3aXRoIGEgYnJlYWR0aC1maXJzdCBzZWFyY2guCi0KLVRoaXMgZnVuY3Rpb24gd2FzIHVzaW5nIGEgZGVwdGggZmlyc3Qgc2VhcmNoLiAgQnkgZG9pbmcgc28gdGhlIGNvbmZsaWN0Ci1yZXNvbHV0aW9uIHJlcG9ydGVkIHRvIHRoZSBwcmVsaW5rZXIgKHdoZW4gTERfVFJBQ0VfUFJFTElOS0lORz0xIGlzIHNldCkKLXdhcyBpbmNvcnJlY3QuICBUaGlzIGNhdXNlZCBwcm9ibGVtcyB3aGVuIHRoZWlyIHdlcmUgdmFyaW91cyBjaXJjdWxhcgotZGVwZW5kZW5jaWVzIGJldHdlZW4gbGlicmFyaWVzLiAgVGhlIHByb2JsZW0gdXN1YWxseSBtYW5pZmVzdGVkIGl0c2VsZiBieQotdGhlIHdyb25nIElGVU5DIGJlaW5nIGV4ZWN1dGVkLgotCi1bQlojIDIwNDg4XQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYV0KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZWxmL2RsLWRlcHMuYyB8IDE0ICsrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYwotaW5kZXggNmE4Mjk4Ny4uNTNiZTgyNCAxMDA2NDQKLS0tLSBhL2VsZi9kbC1kZXBzLmMKLSsrKyBiL2VsZi9kbC1kZXBzLmMKLUBAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKLSB7Ci0gICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKLSAgIHN0cnVjdCBsaW5rX21hcCAqKnE7Ci0rICBzdHJ1Y3QgbGlua19tYXAgKipyOwotIAotICAgKnArKyA9IG1hcDsKLSAgIG1hcC0+bF9yZXNlcnZlZCA9IDE7Ci0tICBpZiAobWFwLT5sX2luaXRmaW5pKQotLSAgICBmb3IgKHEgPSBtYXAtPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQotLSAgICAgIGlmICghICgqcSktPmxfcmVzZXJ2ZWQpCi0tCXAgKz0gX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChwLCAqcSk7Ci0rCi0rICBmb3IgKHIgPSBsaXN0OyByIDwgcDsgKytyKQotKyAgICBpZiAoKCpyKS0+bF9pbml0ZmluaSkKLSsgICAgICBmb3IgKHEgPSAoKnIpLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKLSsJaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKLSsJICB7Ci0rCSAgICAqcCsrID0gKnE7Ci0rCSAgICAoKnEpLT5sX3Jlc2VydmVkID0gMTsKLSsJICB9Ci0gICByZXR1cm4gcCAtIGxpc3Q7Ci0gfQotIAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1nbGliYy1yZXNldC1kbC1sb2FkLXdyaXRlLWxvY2stYWZ0ZXItZm9ya2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzdiMjUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBhNmJiNzNkMWNmZDIwYTczZmJiZTYwNzYwMDgzNzZmYjg3ODc5ZDFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOCBBdWcgMjAxNiAxNzo1OToxMyArMDgwMAorU3ViamVjdDogW1BBVENIXSByZXNldCBkbF9sb2FkX3dyaXRlX2xvY2sgYWZ0ZXIgZm9ya2luZworCitUaGUgcGF0Y2ggaW4gdGhpcyBCdWd6aWxsYSBlbnRyeSB3YXMgcmVxdWVzdGVkIGJ5IGEgY3VzdG9tZXI6CisKKyAgaHR0cHM6Ly93d3cuc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE5MjgyCisKK1RoZSBfX2xpYmNfZm9yaygpIGNvZGUgcmVzZXQgZGxfbG9hZF9sb2NrLCBidXQgaXQgYWxzbyBuZWVkZWQgdG8gcmVzZXQKK2RsX2xvYWRfd3JpdGVfbG9jay4gIFRoZSBwYXRjaCBoYXMgbm90IHlldCBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbIE5vdCBBdXRob3IgU2VlIGJ1Z3ppbGxhXQorCitTaWduZWQtb2ZmLWJ5OiBEYW1vZGFyIFNvbm9uZSA8ZGFtb2Rhci5zb25vbmVAa3BpdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzeXNkZXBzL25wdGwvZm9yay5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL25wdGwvZm9yay5jIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYworaW5kZXggMmI5YWU0Yi4uM2QwYjhkYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbnB0bC9mb3JrLmMKKysrKyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKK0BAIC0xNzQsOCArMTc0LDkgQEAgX19saWJjX2ZvcmsgKHZvaWQpCisgICAgICAgLyogUmVzZXQgbG9ja3MgaW4gdGhlIEkvTyBjb2RlLiAgKi8KKyAgICAgICBfSU9fbGlzdF9yZXNldGxvY2sgKCk7CisgCistICAgICAgLyogUmVzZXQgdGhlIGxvY2sgdGhlIGR5bmFtaWMgbG9hZGVyIHVzZXMgdG8gcHJvdGVjdCBpdHMgZGF0YS4gICovCisrICAgICAgLyogUmVzZXQgdGhlIGxvY2tzIHRoZSBkeW5hbWljIGxvYWRlciB1c2VzIHRvIHByb3RlY3QgaXRzIGRhdGEuICAqLworICAgICAgIF9fcnRsZF9sb2NrX2luaXRpYWxpemUgKEdMKGRsX2xvYWRfbG9jaykpOworKyAgICAgIF9fcnRsZF9sb2NrX2luaXRpYWxpemUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOworIAorICAgICAgIC8qIFJ1biB0aGUgaGFuZGxlcnMgcmVnaXN0ZXJlZCBmb3IgdGhlIGNoaWxkLiAgKi8KKyAgICAgICB3aGlsZSAoYWxscCAhPSBOVUxMKQorLS0gCisxLjkuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYzBiZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gYTJmYzg2Y2I4ZDAzNjYxNzFmMTAwZWJkMDMzYWViOTYwOWZhNDBkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9KPUMzPUE5cj1DMz1BOW15PTIwUm9zZW4/PSA8amVyZW15LnJvc2VuQHNtaWxlLmZyPgotRGF0ZTogTW9uLCAyMiBBdWcgMjAxNiAxNjowOToyNSArMDIwMAotU3ViamVjdDogW1BBVENIIDI3LzI3XSBsb2NhbGU6IGZpeCBoYXJkLWNvZGVkIHJlZmVyZW5jZSB0byBnY2MgLUUKLQotV2hlbiBuZXcgdmVyc2lvbiBvZiBjb21waWxlcnMgYXJlIHB1Ymxpc2hlZCwgdGhleSBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aAotb2xkZXIgdmVyc2lvbnMgb2Ygc29mdHdhcmUuIFRoaXMgaXMgcGFydGljdWxhcmx5IGNvbW1vbiB3aGVuIHNvZnR3YXJlIGlzIGJ1aWx0Ci13aXRoIC1XZXJyb3IuCi0KLUF1dG90b29scyBwcm92aWRlcyBhIHdheSBmb3IgYSB1c2VyIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgaGlzIGNvbXBpbGVyIHVzaW5nIGEKLXNldCBvZiB2YXJpYWJsZXMgKCRDQyAkQ1hYICRDUFAgZXRjLikuIFRob3NlIHZhcmlhYmxlcyBhcmUgdXNlZCBjb3JyZWN0bHkgd2hlbgotY29tcGlsaW5nIGdsaWJjIGJ1dCB0aGUgc2NyaXB0IHVzZWQgdG8gZ2VuZXJhdGUgdHJhbnNsaXRlcmF0aW9ucyBpbiB0aGUgbG9jYWxlLwotc3ViZGlyZWN0b3J5IGRpcmVjdGx5IGNhbGxzIHRoZSBnY2MgYmluYXJ5IHRvIGdldCB0aGUgb3V0cHV0IG9mIHRoZQotcHJlcHJvY2Vzc29yIGluc3RlYWQgb2YgdXNpbmcgdGhlICRDUFAgdmFyaWFibGUgcHJvdmlkZWQgYnkgdGhlIGJ1aWxkCi1lbnZpcm9ubWVudC4KLQotVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgaGFyZC1jb2RlZCByZWZlcmVuY2UgdG8gdGhlIGdjYyBiaW5hcnkgd2l0aCB0aGUgcHJvcGVyCi1lbnZpcm9ubWVudCB2YXJpYWJsZSwgdGh1cyBhbGxvd2luZyBhIHVzZXIgdG8gb3ZlcnJpZGUgaXQuCi0KLVVwc3RyZWFtLVN0YXR1cyA6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTYtMDgvbXNnMDA3NDYuaHRtbF0KLS0tLQotIGxvY2FsZS9nZW4tdHJhbnNsaXQucGwgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsIGIvbG9jYWxlL2dlbi10cmFuc2xpdC5wbAotaW5kZXggMzBkM2YyZi4uZTk3NjUzMCAxMDA2NDQKLS0tLSBhL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKLSsrKyBiL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKLUBAIC0xLDUgKzEsNSBAQAotICMhL3Vzci9iaW4vcGVybCAtdwotLW9wZW4gRiwgImNhdCBDLXRyYW5zbGl0LmguaW4gfCBnY2MgLUUgLSB8IiB8fCBkaWUgIkNhbm5vdCBwcmVwcm9jZXNzIGlucHV0IGZpbGUiOwotK29wZW4gRiwgJ2NhdCBDLXRyYW5zbGl0LmguaW4gfCAke0NQUDotZ2NjIC1FfSAtIHwnIHx8IGRpZSAiQ2Fubm90IHByZXByb2Nlc3MgaW5wdXQgZmlsZSI7Ci0gCi0gCi0gc3ViIGNzdHJsZW4gewotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtQnVnLTQ1NzgtYWRkLWxkLnNvLWxvY2std2hpbGUtZm9yay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2MjM3YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorVGhlIHBhdGNoIGluIHRoaXMgQnVnemlsbGEgZW50cnkgd2FzIHJlcXVlc3RlZCBieSBhIGN1c3RvbWVyOgorICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NTc4CisKK0lmIGEgdGhyZWFkIGhhcHBlbnMgdG8gaG9sZCBkbF9sb2FkX2xvY2sgYW5kIGhhdmUgcl9zdGF0ZSBzZXQgdG8gUlRfQUREIG9yCitSVF9ERUxFVEUgYXQgdGhlIHRpbWUgYW5vdGhlciB0aHJlYWQgY2FsbHMgZm9yaygpLCB0aGVuIHRoZSBjaGlsZCBleGl0IGNvZGUKK2Zyb20gZm9yayAoaW4gbnB0bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9mb3JrLmMgaW4gb3VyIGNhc2UpIHJlLWluaXRpYWxpemVzCitkbF9sb2FkX2xvY2sgYnV0IGRvZXMgbm90IHJlc3RvcmUgcl9zdGF0ZSB0byBSVF9DT05TSVNURU5ULiBJZiB0aGUgY2hpbGQKK3N1YnNlcXVlbnRseSByZXF1aXJlcyBsZC5zbyBmdW5jdGlvbmFsaXR5IGJlZm9yZSBjYWxsaW5nIGV4ZWMoKSwgdGhlbiB0aGUKK2Fzc2VydGlvbiB3aWxsIGZpcmUuCisKK1RoZSBwYXRjaCBhY3F1aXJlcyBkbF9sb2FkX2xvY2sgb24gZW50cnkgdG8gZm9yaygpIGFuZCByZWxlYXNlcyBpdCBvbiBleGl0Citmcm9tIHRoZSBwYXJlbnQgcGF0aC4gIFRoZSBjaGlsZCBwYXRoIGlzIGluaXRpYWxpemVkIGFzIGN1cnJlbnRseSBkb25lLgorVGhpcyBpcyBlc3NlbnRpYWxseSBwdGhyZWFkc19hdGZvcmssIGJ1dCBmb3JjZWQgdG8gYmUgZmlyc3QgYmVjYXVzZSB0aGUKK2FjcXVpc2l0aW9uIG9mIGRsX2xvYWRfbG9jayBtdXN0IGhhcHBlbiBiZWZvcmUgbWFsbG9jX2F0Zm9yayBpcyBhY3RpdmUKK3RvIGF2b2lkIGEgZGVhZGxvY2suCitUaGUgcGF0Y2ggaGFzIG5vdCB5ZXQgYmVlbiBpbnRlZ3JhdGVkIHVwc3RyZWFtLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBOb3QgQXV0aG9yIFNlZSBidWd6aWxsYV0KKworU2lnbmVkLW9mZi1ieTogUmFnaHVuYXRoIExvbHVyIDxSYWdodW5hdGguTG9sdXJAa3BpdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorCitJbmRleDogZ2l0L3N5c2RlcHMvbnB0bC9mb3JrLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zeXNkZXBzL25wdGwvZm9yay5jICAgICAgIDIwMTctMDgtMDMgMTY6MDI6MTUuNjc0NzA0MDgwICswODAwCisrKysgZ2l0L3N5c2RlcHMvbnB0bC9mb3JrLmMgICAgMjAxNy0wOC0wNCAxODoxNTowMi40NjMzNjIwMTUgKzA4MDAKK0BAIC0yNSw2ICsyNSw3IEBACisgI2luY2x1ZGUgPHRscy5oPgorICNpbmNsdWRlIDxocC10aW1pbmcuaD4KKyAjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysjaW5jbHVkZSA8bGliYy1sb2NrLmg+CisgI2luY2x1ZGUgPHN0ZGlvLWxvY2suaD4KKyAjaW5jbHVkZSA8YXRvbWljLmg+CisgI2luY2x1ZGUgPG5wdGwvcHRocmVhZFAuaD4KK0BAIC02MCw2ICs2MSwxMCBAQAorICAgICAgYnV0IG91ciBjdXJyZW50IGZvcmsgaW1wbGVtZW50YXRpb24gaXMgbm90LiAgKi8KKyAgIGJvb2wgbXVsdGlwbGVfdGhyZWFkcyA9IFRIUkVBRF9HRVRNRU0gKFRIUkVBRF9TRUxGLCBoZWFkZXIubXVsdGlwbGVfdGhyZWFkcyk7CisgCisrICAvKiBncmFiIGxkLnNvIGxvY2sgQkVGT1JFIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrICovCisrICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7CisrICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7CisrCisgICAvKiBSdW4gYWxsIHRoZSByZWdpc3RlcmVkIHByZXBhcmF0aW9uIGhhbmRsZXJzLiAgSW4gcmV2ZXJzZSBvcmRlci4KKyAgICAgIFdoaWxlIGRvaW5nIHRoaXMgd2UgYnVpbGQgdXAgYSBsaXN0IG9mIGFsbCB0aGUgZW50cmllcy4gICovCisgICBzdHJ1Y3QgZm9ya19oYW5kbGVyICpydW5wOworQEAgLTI0Nyw2ICsyNTIsMTAgQEAKKyAKKyAJICBhbGxwID0gYWxscC0+bmV4dDsKKyAJfQorKworKyAgICAgIC8qIHVubG9jayBsZC5zbyBsYXN0LCBiZWNhdXNlIHdlIGxvY2tlZCBpdCBmaXJzdCAqLworKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOworKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfbG9jaykpOworICAgICB9CisgCisgICByZXR1cm4gcGlkOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtUmV3b3JrLWZuby1vbWl0LWZyYW1lLXBvaW50ZXItc3VwcG9ydC1vbi1pMzg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtUmV3b3JrLWZuby1vbWl0LWZyYW1lLXBvaW50ZXItc3VwcG9ydC1vbi1pMzg2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWQyYjkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LVJld29yay1mbm8tb21pdC1mcmFtZS1wb2ludGVyLXN1cHBvcnQtb24taTM4Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2OCArMCwwIEBACi1Gcm9tIDFlYTAwM2Q0ZmNjYzQ2NDZmZDE4NDhhMTgyNDA1YTFjNzAwMGFiMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBZGhlbWVydmFsIFphbmVsbGEgPGFkaGVtZXJ2YWwuemFuZWxsYUBsaW5hcm8ub3JnPgotRGF0ZTogU3VuLCA4IEphbiAyMDE3IDExOjM4OjIzIC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMjgvMjhdIFJld29yayAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBzdXBwb3J0IG9uIGkzODYKLQotQ29tbWl0IDZiMWRmOGIyN2YgZml4ZWQgdGhlIC1PUyBidWlsZCBpc3N1ZSBvbiBpMzg2IChCWiMyMDcyOSkgYnkKLWV4cGxpY2l0aW5nIGRpc2FibGluZyBmcmFtZSBwb2ludGVyICgtZm9taXQtZnJhbWUtcG9pbnRlcikgb24gdGhlCi1mYXVsdHkgb2JqZWN0cy4gIEFsdGhvdWdoIGl0IGRvZXMgZml4IHRoZSBpc3N1ZSwgaXQgaXMgYSBzdWJwYXIKLXdvcmthcm91bmQgdGhhdCBhZGRzIGNvbXBsZXhpdHkgaW4gYnVpbGQgcHJvY2VzcyAoYSBydWxlIGZvciBlYWNoCi1vYmplY3QgdG8gYWRkIHRoZSByZXF1aXJlZCBjb21waWxlciBvcHRpb24gYW5kIHBvbnRlbnRpYWxseSBtb3JlCi1ydWxlcyBmb3Igb2JqZWN0cyB0aGF0IGNhbGwge0lOTElORSxJTlRFUk5BTH1fU1lTQ0FMTCkgYW5kIGRvZXMgbm90Ci1hbGxvdyB0aGUgaW1wbGVtZW50YXRpb25zIHRvIGdldCBhbGwgdGhlIHBvc3NpYmxlIGRlYnVnL2NhbGx0cmFjawotaW5mb3JtYXRpb24gcG9zc2libGUgKHVzZWQgbWFpbmx5IGluIGRlYnVnZ2VycyBhbmQgcGVyZm9ybWFuY2UKLW1lYXN1cmVtZW50IHRvb2xzKS4KLQotVGhpcyBwYXRjaCBmaXhlcyBpdCBieSBhZGRpbmcgYW4gZXhwbGljaXQgY29uZmlndXJlIGNoZWNrIHRvIHNlZQotaWYgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgaXMgc2V0IGFuZCB0byBhY3QgYWNjb3JkaW5nbHkgKHNldCBvcgotbm90IE9QVElNSVpFX0ZPUl9HQ0NfNSkuICBUaGUgbWFrZSBydWxlcyBpcyBzaW1wbGlmaWVkIGFuZCBvbmx5Ci1vbmUgaXMgcmVxdWlyZWQ6IHRvIGFkZCBsaWJjLWRvLXN5c2NhbGwgb24gbG9hZGVyIGR1ZSBtbWFwCi0od2hpY2ggd2lsbCBiZSBlbXB0eSBhbnl3YXkgZm9yIGRlZmF1bHQgYnVpbGQgd2l0aAotLWZvbWl0LWZyYW1lLXBvaW50ZXIpLgotCi1DaGVja2VkIG9uIGkzODYtbGludXgtZ251IHdpdGggR0NDIDYuMi4xIHdpdGggQ0ZMQUdTIHNldHMgYXMKLSctT3MnLCAnLU8yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyJywgYW5kICctTzIgLWZvbWl0LWZyYW1lLXBvaW50ZXInLgotRm9yICctT3MnIHRoZSB0ZXN0c3VpdGUgaXNzdWVzIGRlc2NyaWJlZCBieSBCWiMxOTQ2MyBhbmQgQlojMTUxMDUKLXN0aWxsIGFwcGxpZWQuCi0KLUl0IGZpeGVzIEJaICMyMTAyOSwgYWx0aG91Z2ggaXQgaXMgbWFya2VkIGFzIGR1cGxpY2F0ZWQgb2YgIzIwNzI5Ci0oSSByZW9wZW5lZCB0byB0cmFjayB0aGlzIGNsZWFudXApLgotCi0JW0JaICMyMTAyOV0KLQkqIGNvbmZpZy5oLmluIFtDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlBdOiBOZXcgZGVmaW5lLgotCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9NYWtlZmlsZQotCVskKHN1YmRpcikgPSBlbGZdIChzeXNkZXAtZGwtcm91dGluZXMpOiBBZGQgbGliYy1kby1zeXNjYWxsLgotCSh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpOiBSZW1vdmUuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtZXBvbGxfcHdhaXQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLWVwb2xsX3B3YWl0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtbW1hcC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtbW1hcC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLW1tYXA2NC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtbW1hcDY0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtcHNlbGVjdC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChjZmxhZ3MtcHNlbGVjdC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChjZmxhZ3MtcHNlbGVjdC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoY2ZsYWdzLXJ0bGQtbW1hcC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBzeXN2aXBjXSAoY2ZsYWdzLXNlbXRpbWVkb3Aubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBzeXN2aXBjXSAoY2ZsYWdzLXNlbXRpbWVkb3Aub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtcG9zaXhfZmFkdmlzZTY0Lm8pOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtcG9zaXhfZmFkdmlzZTY0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZS5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZS5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1wb3NpeF9mYWxsb2NhdGU2NC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZTY0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXN5bmNfZmlsZV9yYW5nZS5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXN5bmNfZmlsZV9yYW5nZS5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1mYWxsb2NhdGUubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1mYWxsb2NhdGUub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtZmFsbG9jYXRlNjQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1mYWxsb2NhdGU2NC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXB0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrLm8pOgotCUxpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXB0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrLm9zKToKLQlMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbnB0bF0gKENGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJ3bG9jay5vKToKLQlMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbnB0bF0gKENGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJ3bG9jay5vcyk6Ci0JTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG5wdGxdIChDRkxBR1Mtc2VtX3dhaXQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXNlbV93YWl0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG5wdGxdIChDRkxBR1Mtc2VtX3RpbWVkd2FpdC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG5wdGxdIChDRkxBR1Mtc2VtX3RpbWVkd2FpdC5vcyk6IExpa2V3aXNlLgotCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUuYWM6IEFkZCBjaGVjayBpZiBjb21waWxlciBhbGxvd3MKLQllYnAgb24gaW5saW5lIGFzc2VtYmx5LgotCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmU6IFJlZ2VuZXJhdGUuCi0JKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oIChPUFRJTUlaRV9GT1JfR0NDXzUpOgotCVNldCBpZiBDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlAgaXMgc2V0LgotCShjaGVja19jb25zaXN0ZW5jeSk6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0ZGlmZjtoPTNiMzNkNmVkNjA5NmMxZDIwZDA1YTY1MGIwNjAyNmQ2NzNmNzM5OWEKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZy5oLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysrKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvTWFrZWZpbGUgICAgIHwgMzkgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlLmFjIHwgMTcgKysrKysrKysrKysrKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oICAgICB8ICA2ICsrLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy5oLmluIGIvY29uZmlnLmguaW4KLWluZGV4IDdiZmU5MjMuLmZiMmNjNTEgMTAwNjQ0Ci0tLS0gYS9jb25maWcuaC5pbgotKysrIGIvY29uZmlnLmguaW4KLUBAIC0yNTksNCArMjU5LDggQEAKLSAvKiBCdWlsZCBnbGliYyB3aXRoIHR1bmFibGVzIHN1cHBvcnQuICAqLwotICNkZWZpbmUgSEFWRV9UVU5BQkxFUyAwCi0gCi0rLyogU29tZSBjb21waWxlciBvcHRpb25zIG1heSBub3cgYWxsb3cgdG8gdXNlIGVicCBpbiBfX2FzbV9fICh1c2VkIG1haW5seQotKyAgIGluIGkzODYgNiBhcmd1bWVudCBzeXNjYWxsIGlzc3VlKS4gICovCi0rI2RlZmluZSBDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlAgMAotKwotICNlbmRpZgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvTWFrZWZpbGUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L01ha2VmaWxlCi1pbmRleCA5NjA5NzUyLi42YWFjMGRmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9NYWtlZmlsZQotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9NYWtlZmlsZQotQEAgLTEsNDcgKzEsMTggQEAKLSAjIFRoZSBkZWZhdWx0IEFCSSBpcyAzMi4KLSBkZWZhdWx0LWFiaSA6PSAzMgotIAotLSMgJWVicCBpcyB1c2VkIHRvIHBhc3MgdGhlIDZ0aCBhcmd1bWVudCB0byBzeXN0ZW0gY2FsbHMsIHNvIHRoZXNlCi0tIyBzeXN0ZW0gY2FsbHMgYXJlIGluY29tcGF0aWJsZSB3aXRoIGEgZnJhbWUgcG9pbnRlci4KLS11c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMgPSAtZm9taXQtZnJhbWUtcG9pbnRlcgotLQotIGlmZXEgKCQoc3ViZGlyKSxtaXNjKQotIHN5c2RlcF9yb3V0aW5lcyArPSBpb3Blcm0gaW9wbCB2bTg2Ci0tQ0ZMQUdTLWVwb2xsX3B3YWl0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLWVwb2xsX3B3YWl0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1tbWFwLm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLW1tYXAub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLW1tYXA2NC5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1tbWFwNjQub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBzZWxlY3QubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcHNlbGVjdC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcnRsZC1tbWFwLm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLWVuZGlmCi0tCi0taWZlcSAoJChzdWJkaXIpLHN5c3ZpcGMpCi0tQ0ZMQUdTLXNlbXRpbWVkb3AubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1Mtc2VtdGltZWRvcC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLSBlbmRpZgotIAotIGlmZXEgKCQoc3ViZGlyKSxlbGYpCi0rc3lzZGVwLWRsLXJvdXRpbmVzICs9IGxpYmMtZG8tc3lzY2FsbAotIHN5c2RlcC1vdGhlcnMgKz0gbGRkbGliYzQKLSBpbnN0YWxsLWJpbiArPSBsZGRsaWJjNAotIGVuZGlmCi0gCi0gaWZlcSAoJChzdWJkaXIpLGlvKQotIHN5c2RlcF9yb3V0aW5lcyArPSBsaWJjLWRvLXN5c2NhbGwKLS1DRkxBR1MtcG9zaXhfZmFkdmlzZTY0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBvc2l4X2ZhZHZpc2U2NC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcG9zaXhfZmFsbG9jYXRlLm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZS5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcG9zaXhfZmFsbG9jYXRlNjQubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcG9zaXhfZmFsbG9jYXRlNjQub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXN5bmNfZmlsZV9yYW5nZS5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1zeW5jX2ZpbGVfcmFuZ2Uub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLWZhbGxvY2F0ZS5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1mYWxsb2NhdGUub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLWZhbGxvY2F0ZTY0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLWZhbGxvY2F0ZTY0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotIGVuZGlmCi0gCi0gaWZlcSAoJChzdWJkaXIpLG5wdGwpCi1AQCAtNjEsMTQgKzMyLDYgQEAgaWZlcSAoJChzdWJkaXIpLG5wdGwpCi0gIyBwdWxsIGluIF9fc3lzY2FsbF9lcnJvciByb3V0aW5lCi0gbGlicHRocmVhZC1yb3V0aW5lcyArPSBzeXNkZXAKLSBsaWJwdGhyZWFkLXNoYXJlZC1vbmx5LXJvdXRpbmVzICs9IHN5c2RlcAotLUNGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jay5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jay5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2subyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2sub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXNlbV93YWl0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXNlbV93YWl0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1zZW1fdGltZWR3YWl0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXNlbV90aW1lZHdhaXQub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0gZW5kaWYKLSAKLSBpZmVxICgkKHN1YmRpcikscnQpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZQotaW5kZXggZWI3MjY1OS4uYWUyYzM1NiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZQotQEAgLTMsNSArMyw0NCBAQAotIAotIGFyY2hfbWluaW11bV9rZXJuZWw9Mi42LjMyCi0gCi0rIyBDaGVjayBpZiBDRkxBR1MgYWxsb3dzIGNvbXBpbGVyIHRvIHVzZSBlYnAgcmVnaXN0ZXIgaW4gaW5saW5lIGFzc2VtYmx5LgotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgY29tcGlsZXIgZmxhZ3MgYWxsb3dzIGVicCBpbiBpbmxpbmUgYXNzZW1ibHkiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmIGNvbXBpbGVyIGZsYWdzIGFsbG93cyBlYnAgaW4gaW5saW5lIGFzc2VtYmx5Li4uICIgPiY2OyB9Ci0raWYgJHtsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsKLStjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotKyAgICB2b2lkIGZvbyAoaW50IGkpCi0rICAgIHsKLSsgICAgICByZWdpc3RlciBpbnQgcmVnIGFzbSAoImVicCIpID0gaTsKLSsgICAgICBhc20gKCIjICUwIiA6IDogInIiIChyZWcpKTsKLSsgICAgfQotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnA9eWVzCi0rZWxzZQotKyAgbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnA9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCIgPiY1Ci0rJGFzX2VjaG8gIiRsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCIgPiY2OyB9Ci0raWYgdGVzdCAkbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnAgPSB5ZXM7IHRoZW4KLSsgICRhc19lY2hvICIjZGVmaW5lIENBTl9VU0VfUkVHSVNURVJfQVNNX0VCUCAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotIGxpYmNfY3ZfZ2NjX3Vud2luZF9maW5kX2ZkZT15ZXMKLSBsZGRfcmV3cml0ZV9zY3JpcHQ9c3lzZGVwcy91bml4L3N5c3YvbGludXgvbGRkLXJld3JpdGUuc2VkCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZS5hYwotaW5kZXggMWExMWRhNi4uMWNkNjMyZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZS5hYwotQEAgLTMsNSArMywyMiBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotIAotIGFyY2hfbWluaW11bV9rZXJuZWw9Mi42LjMyCi0gCi0rIyBDaGVjayBpZiBDRkxBR1MgYWxsb3dzIGNvbXBpbGVyIHRvIHVzZSBlYnAgcmVnaXN0ZXIgaW4gaW5saW5lIGFzc2VtYmx5LgotK0FDX0NBQ0hFX0NIRUNLKFtpZiBjb21waWxlciBmbGFncyBhbGxvd3MgZWJwIGluIGlubGluZSBhc3NlbWJseV0sCi0rICAgICAgICAgICAgICAgIGxpYmNfY3ZfY2FuX3VzZV9yZWdpc3Rlcl9hc21fZWJwLCBbCi0rQUNfQ09NUElMRV9JRkVMU0UoCi0rICBbQUNfTEFOR19QUk9HUkFNKFsKLSsgICAgdm9pZCBmb28gKGludCBpKQotKyAgICB7Ci0rICAgICAgcmVnaXN0ZXIgaW50IHJlZyBhc20gKCJlYnAiKSA9IGk7Ci0rICAgICAgYXNtICgiIyAlMCIgOiA6ICJyIiAocmVnKSk7Ci0rICAgIH1dKV0sCi0rICBbbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnA9eWVzXSwKLSsgIFtsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicD1ub10pCi0rXSkKLStpZiB0ZXN0ICRsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCA9IHllczsgdGhlbgotKyAgQUNfREVGSU5FKENBTl9VU0VfUkVHSVNURVJfQVNNX0VCUCkKLStmaQotKwotIGxpYmNfY3ZfZ2NjX3Vud2luZF9maW5kX2ZkZT15ZXMKLSBsZGRfcmV3cml0ZV9zY3JpcHQ9c3lzZGVwcy91bml4L3N5c3YvbGludXgvbGRkLXJld3JpdGUuc2VkCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zeXNkZXAuaCBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc3lzZGVwLmgKLWluZGV4IGJhZjQ2NDIuLjQ0OWIyM2UgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oCi1AQCAtNDQsOSArNDQsOSBAQAotIC8qIFNpbmNlIEdDQyA1IGFuZCBhYm92ZSBjYW4gcHJvcGVybHkgc3BpbGwgJWVieCB3aXRoIFBJQyB3aGVuIG5lZWRlZCwKLSAgICB3ZSBjYW4gaW5saW5lIHN5c2NhbGxzIHdpdGggNiBhcmd1bWVudHMgaWYgR0NDIDUgb3IgYWJvdmUgaXMgdXNlZAotICAgIHRvIGNvbXBpbGUgZ2xpYmMuICBEaXNhYmxlIEdDQyA1IG9wdGltaXphdGlvbiB3aGVuIGNvbXBpbGluZyBmb3IKLS0gICBwcm9maWxpbmcgc2luY2UgYXNtICgiZWJwIikgY2FuJ3QgYmUgdXNlZCB0byBwdXQgdGhlIDZ0aCBhcmd1bWVudAotLSAgIGluICVlYnAgZm9yIHN5c2NhbGwuICAqLwotLSNpZiBfX0dOVUNfUFJFUkVRICg1LDApICYmICFkZWZpbmVkIFBST0YKLSsgICBwcm9maWxpbmcgb3Igd2hlbiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBpcyB1c2VkIHNpbmNlIGFzbSAoImVicCIpCi0rICAgY2FuJ3QgYmUgdXNlZCB0byBwdXQgdGhlIDZ0aCBhcmd1bWVudCBpbiAlZWJwIGZvciBzeXNjYWxsLiAgKi8KLSsjaWYgX19HTlVDX1BSRVJFUSAoNSwwKSAmJiAhZGVmaW5lZCBQUk9GICYmIENBTl9VU0VfUkVHSVNURVJfQVNNX0VCUAotICMgZGVmaW5lIE9QVElNSVpFX0ZPUl9HQ0NfNQotICNlbmRpZgotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWFzc2VydC1TdXBwb3J0LXR5cGVzLXdpdGhvdXQtb3BlcmF0b3ItaW50LUJaLTIxOTcyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNzA1MGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaApAQCAtMCwwICsxLDE5NCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisqIGZpeGVzICJsYW1iZGEtZXhwcmVzc2lvbiBpbiB1bmV2YWx1YXRlZCBjb250ZXh0IiBjb21waWxlIGZhaWx1cmVzIHN1Y2ggYXMKKyAgaHR0cHM6Ly9naXRodWIuY29tL25sb2htYW5uL2pzb24vaXNzdWVzLzcwNQorCisqIGZpeGVzICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPT0iIGNvbXBpbGUgZmFpbHVyZXMgc3VjaCBhcworICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE0ODI5OTAKKworKiBDaGFuZ2Vsb2cgZWRpdCB3YXMgcmVtb3ZlZCBmcm9tIHVwc3RyZWFtIGNvbW1pdCBiZWNhdXNlIGl0IGNhdXNlZCBjb25mbGljdAorCitTaWduZWQtb2ZmLWJ5OiBTLiBMb2Nrd29vZC1DaGlsZHMgPHNqbEB2Y3RsYWJzLmNvbT4KKworRnJvbSBiNTg4OWQyNWU5YmY5NDRhODlmZGQ3YmNhYmYzYjZjNmY2YmI2ZjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjEgQXVnIDIwMTcgMTM6MDM6MjkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXNzZXJ0OiBTdXBwb3J0IHR5cGVzIHdpdGhvdXQgb3BlcmF0b3I9PSAoaW50KSBbQlogIzIxOTcyXQorCistLS0KKyBhc3NlcnQvTWFrZWZpbGUgICAgICAgICAgfCAxMSArKysrKystCisgYXNzZXJ0L2Fzc2VydC5oICAgICAgICAgIHwgMTYgKysrKysrLS0tLQorIGFzc2VydC90c3QtYXNzZXJ0LWMrKy5jYyB8IDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGFzc2VydC90c3QtYXNzZXJ0LWcrKy5jYyB8IDE5ICsrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGFzc2VydC90c3QtYXNzZXJ0LWMrKy5jYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBhc3NlcnQvdHN0LWFzc2VydC1nKysuY2MKKworZGlmZiAtLWdpdCBhL2Fzc2VydC9NYWtlZmlsZSBiL2Fzc2VydC9NYWtlZmlsZQoraW5kZXggMWMzYmU5Yi4uOWVjMWJlOCAxMDA2NDQKKy0tLSBhL2Fzc2VydC9NYWtlZmlsZQorKysrIGIvYXNzZXJ0L01ha2VmaWxlCitAQCAtMjUsNiArMjUsMTUgQEAgaW5jbHVkZSAuLi9NYWtlY29uZmlnCisgaGVhZGVycwk6PSBhc3NlcnQuaAorIAorIHJvdXRpbmVzIDo9IGFzc2VydCBhc3NlcnQtcGVyciBfX2Fzc2VydAorLXRlc3RzIDo9IHRlc3QtYXNzZXJ0IHRlc3QtYXNzZXJ0LXBlcnIKKyt0ZXN0cyA6PSB0ZXN0LWFzc2VydCB0ZXN0LWFzc2VydC1wZXJyIHRzdC1hc3NlcnQtYysrIHRzdC1hc3NlcnQtZysrCisgCisgaW5jbHVkZSAuLi9SdWxlcworKworK2lmZXEgKCQoaGF2ZS1jeHgtdGhyZWFkX2xvY2FsKSx5ZXMpCisrQ0ZMQUdTLXRzdC1hc3NlcnQtYysrLm8gPSAtc3RkPWMrKzExCisrTERMSUJTLXRzdC1hc3NlcnQtYysrID0gLWxzdGRjKysKKytDRkxBR1MtdHN0LWFzc2VydC1nKysubyA9IC1zdGQ9Z251KysxMQorK0xETElCUy10c3QtYXNzZXJ0LWcrKyA9IC1sc3RkYysrCisrZWxzZQorK3Rlc3RzLXVuc3VwcG9ydGVkICs9IHRzdC1hc3NlcnQtYysrIHRzdC1hc3NlcnQtZysrCisrZW5kaWYKK2RpZmYgLS1naXQgYS9hc3NlcnQvYXNzZXJ0LmggYi9hc3NlcnQvYXNzZXJ0LmgKK2luZGV4IDY4MDFjZmUuLjY0MGM5NWMgMTAwNjQ0CistLS0gYS9hc3NlcnQvYXNzZXJ0LmgKKysrKyBiL2Fzc2VydC9hc3NlcnQuaAorQEAgLTg1LDcgKzg1LDEyIEBAIF9fRU5EX0RFQ0xTCisgLyogV2hlbiBwb3NzaWJsZSwgZGVmaW5lIGFzc2VydCBzbyB0aGF0IGl0IGRvZXMgbm90IGFkZCBleHRyYQorICAgIHBhcmVudGhlc2VzIGFyb3VuZCBFWFBSLiAgT3RoZXJ3aXNlLCB0aG9zZSBhZGRlZCBwYXJlbnRoZXNlcyB3b3VsZAorICAgIHN1cHByZXNzIHdhcm5pbmdzIHdlJ2QgZXhwZWN0IHRvIGJlIGRldGVjdGVkIGJ5IGdjYydzIC1XcGFyZW50aGVzZXMuICAqLworLSMgaWYgIWRlZmluZWQgX19HTlVDX18gfHwgZGVmaW5lZCBfX1NUUklDVF9BTlNJX18KKysjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMKKysjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKKysgICAgIChzdGF0aWNfY2FzdCA8Ym9vbD4gKGV4cHIpCQkJCQkJXAorKyAgICAgID8gdm9pZCAoMCkJCQkJCQkJXAorKyAgICAgIDogX19hc3NlcnRfZmFpbCAoI2V4cHIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19BU1NFUlRfRlVOQ1RJT04pKQorKyMgZWxpZiAhZGVmaW5lZCBfX0dOVUNfXyB8fCBkZWZpbmVkIF9fU1RSSUNUX0FOU0lfXworICMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAorICAgICAoKGV4cHIpCQkJCQkJCQlcCisgICAgICA/IF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkJCQkJCQlcCitAQCAtOTMsMTIgKzk4LDExIEBAIF9fRU5EX0RFQ0xTCisgIyBlbHNlCisgLyogVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgRVhQUiBpcyBub3QgZXZhbHVhdGVkIGR1ZSB0byB0aGUgc2l6ZW9mLAorICAgIGJ1dCB3aWxsIHRyaWdnZXIgYW55IHBlZGFudGljIHdhcm5pbmdzIG1hc2tlZCBieSB0aGUgX19leHRlbnNpb25fXworLSAgIGZvciB0aGUgc2Vjb25kIG9jY3VycmVuY2UuICBUaGUgZXhwbGljaXQgY29tcGFyaXNvbiBhZ2FpbnN0IHplcm8gaXMKKy0gICByZXF1aXJlZCB0byBzdXBwb3J0IGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBiaXQgZmllbGRzIGluIHRoaXMKKy0gICBjb250ZXh0LCBhbmQgdG8gc3VwcHJlc3MgdGhlIGV2YWx1YXRpb24gb2YgdmFyaWFibGUgbGVuZ3RoCistICAgYXJyYXlzLiAgKi8KKysgICBmb3IgdGhlIHNlY29uZCBvY2N1cnJlbmNlLiAgVGhlIHRlcm5hcnkgb3BlcmF0b3IgaXMgcmVxdWlyZWQgdG8KKysgICBzdXBwb3J0IGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBiaXQgZmllbGRzIGluIHRoaXMgY29udGV4dCwgYW5kIHRvCisrICAgc3VwcHJlc3MgdGhlIGV2YWx1YXRpb24gb2YgdmFyaWFibGUgbGVuZ3RoIGFycmF5cy4gICovCisgIyAgZGVmaW5lIGFzc2VydChleHByKQkJCQkJCQlcCistICAoKHZvaWQpIHNpemVvZiAoKGV4cHIpID09IDApLCBfX2V4dGVuc2lvbl9fICh7CQkJXAorKyAgKCh2b2lkKSBzaXplb2YgKChleHByKSA/IDEgOiAwKSwgX19leHRlbnNpb25fXyAoewkJCVwKKyAgICAgICBpZiAoZXhwcikJCQkJCQkJCVwKKyAgICAgICAgIDsgLyogZW1wdHkgKi8JCQkJCQkJXAorICAgICAgIGVsc2UJCQkJCQkJCVwKK2RpZmYgLS1naXQgYS9hc3NlcnQvdHN0LWFzc2VydC1jKysuY2MgYi9hc3NlcnQvdHN0LWFzc2VydC1jKysuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xMmE1ZTY5CistLS0gL2Rldi9udWxsCisrKysgYi9hc3NlcnQvdHN0LWFzc2VydC1jKysuY2MKK0BAIC0wLDAgKzEsNzggQEAKKysvKiBUZXN0cyBmb3IgaW50ZXJhY3Rpb25zIGJldHdlZW4gQysrIGFuZCBhc3NlcnQuCisrICAgQ29weXJpZ2h0IChDKSAyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisrICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrLyogVGhlIEMrKyBzdGFuZGFyZCByZXF1aXJlcyB0aGF0IGlmIHRoZSBhc3NlcnQgYXJndW1lbnQgaXMgYSBjb25zdGFudAorKyAgIHN1YmV4cHJlc3Npb24sIHRoZW4gdGhlIGFzc2VydCBpdHNlbGYgaXMgb25lLCB0b28uICAqLworK2NvbnN0ZXhwciBpbnQKKytjaGVja19jb25zdGV4cHIgKCkKKyt7CisrICByZXR1cm4gKGFzc2VydCAodHJ1ZSksIDEpOworK30KKysKKysvKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgY2FuIGJlIGNvbnRleHR1YWxseSBjb252ZXJ0ZWQgdG8gYm9vbCwgYnV0CisrICAgY2Fubm90IGJlIGNvbXBhcmVkIHRvIGludC4gICovCisrc3RydWN0IG5vX2ludAorK3sKKysgIG5vX2ludCAoKSA9IGRlZmF1bHQ7CisrICBub19pbnQgKGNvbnN0IG5vX2ludCAmKSA9IGRlbGV0ZTsKKysKKysgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wgKCkgY29uc3QKKysgIHsKKysgICAgcmV0dXJuIHRydWU7CisrICB9CisrCisrICBib29sIG9wZXJhdG9yISAoKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCisrICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBvcGVyYXRvcj09IChUKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCisrICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBvcGVyYXRvciE9IChUKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCisrfTsKKysKKysvKiBUaGlzIGNsYXNzIHRlc3RzIHRoYXQgb3BlcmF0b3I9PSBpcyBub3QgdXNlZCBieSBhc3NlcnQuICAqLworK3N0cnVjdCBib29sX2FuZF9pbnQKKyt7CisrICBib29sX2FuZF9pbnQgKCkgPSBkZWZhdWx0OworKyAgYm9vbF9hbmRfaW50IChjb25zdCBub19pbnQgJikgPSBkZWxldGU7CisrCisrICBleHBsaWNpdCBvcGVyYXRvciBib29sICgpIGNvbnN0CisrICB7CisrICAgIHJldHVybiB0cnVlOworKyAgfQorKworKyAgYm9vbCBvcGVyYXRvciEgKCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3I9PSAoVCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3IhPSAoVCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworK307CisrCisrc3RhdGljIGludAorK2RvX3Rlc3QgKCkKKyt7CisrICB7CisrICAgIG5vX2ludCB2YWx1ZTsKKysgICAgYXNzZXJ0ICh2YWx1ZSk7CisrICB9CisrCisrICB7CisrICAgIGJvb2xfYW5kX2ludCB2YWx1ZTsKKysgICAgYXNzZXJ0ICh2YWx1ZSk7CisrICB9CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuYz4KK2RpZmYgLS1naXQgYS9hc3NlcnQvdHN0LWFzc2VydC1nKysuY2MgYi9hc3NlcnQvdHN0LWFzc2VydC1nKysuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi44YzA2NDAyCistLS0gL2Rldi9udWxsCisrKysgYi9hc3NlcnQvdHN0LWFzc2VydC1nKysuY2MKK0BAIC0wLDAgKzEsMTkgQEAKKysvKiBUZXN0cyBmb3IgaW50ZXJhY3Rpb25zIGJldHdlZW4gQysrIGFuZCBhc3NlcnQuICBHTlUgQysrMTEgdmVyc2lvbi4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKKysgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDx0c3QtYXNzZXJ0LWMrKy5jYz4KKy0tIAorMS45LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMDUwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTU2NzAucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSBhNzYzNzZkZjdjMDdlNTc3YTk1MTVjM2ZhYTVkYmQ1MGJkYTVkYTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KK0RhdGU6IEZyaSwgMjAgT2N0IDIwMTcgMTg6NDE6MTQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTctMTU2NzA6IGdsb2I6IEZpeCBvbmUtYnl0ZSBvdmVyZmxvdyBbQlogIzIyMzIwXQorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjMzY5ZDY2ZTU0MjZhMzBlNDcyNWIxMDBkNWNkMjhlMzcyNzU0ZjkwKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE1NjcwCitBZmZlY3RzOiBnbGliYyA8IDIuMjcKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCistLS0KKyBDaGFuZ2VMb2cgICAgfCA2ICsrKysrKworIE5FV1MgICAgICAgICB8IDUgKysrKysKKyBwb3NpeC9nbG9iLmMgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBnaXQvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL05FV1MKKysrKyBnaXQvTkVXUworQEAgLTIwNiw2ICsyMDYsMTEgQEAgU2VjdXJpdHkgcmVsYXRlZCBjaGFuZ2VzOgorICogQSB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IGluIGNsbnR1ZHBfY2FsbCBpbiB0aGUgU3VuIFJQQyBzeXN0ZW0gaGFzIGJlZW4KKyAgIGZpeGVkIChDVkUtMjAxNy0xMjEzMykuCisgCisrICBDVkUtMjAxNy0xNTY3MDogVGhlIGdsb2IgZnVuY3Rpb24sIHdoZW4gaW52b2tlZCB3aXRoIEdMT0JfVElMREUsCisrICBzdWZmZXJlZCBmcm9tIGEgb25lLWJ5dGUgb3ZlcmZsb3cgZHVyaW5nIH4gb3BlcmF0b3IgcHJvY2Vzc2luZyAoZWl0aGVyCisrICBvbiB0aGUgc3RhY2sgb3IgdGhlIGhlYXAsIGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIG9mIHRoZSB1c2VyIG5hbWUpLgorKyAgUmVwb3J0ZWQgYnkgVGltIFLDvGhzZW4uCisrCisgVGhlIGZvbGxvd2luZyBidWdzIGFyZSByZXNvbHZlZCB3aXRoIHRoaXMgcmVsZWFzZToKKyAKKyAgIFs5ODRdIG5ldHdvcms6IFJlc3BvbmQgdG8gY2hhbmdlZCByZXNvbHYuY29uZiBpbiBnZXRob3N0YnluYW1lCitJbmRleDogZ2l0L3Bvc2l4L2dsb2IuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Bvc2l4L2dsb2IuYworKysrIGdpdC9wb3NpeC9nbG9iLmMKK0BAIC04NDMsNyArODQzLDcgQEAgZ2xvYiAoY29uc3QgY2hhciAqcGF0dGVybiwgaW50IGZsYWdzLCBpbgorIAkJICAqcCA9ICdcMCc7CisgCQl9CisgCSAgICAgIGVsc2UKKy0JCSooKGNoYXIgKikgbWVtcGNweSAobmV3cCwgZGlybmFtZSArIDEsIGVuZF9uYW1lIC0gZGlybmFtZSkpCisrCQkqKChjaGFyICopIG1lbXBjcHkgKG5ld3AsIGRpcm5hbWUgKyAxLCBlbmRfbmFtZSAtIGRpcm5hbWUgLSAxKSkKKyAJCSAgPSAnXDAnOworIAkgICAgICB1c2VyX25hbWUgPSBuZXdwOworIAkgICAgfQorSW5kZXg6IGdpdC9DaGFuZ2VMb2cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9DaGFuZ2VMb2cKKysrKyBnaXQvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDkgQEAKKysyMDE3LTEwLTIwICBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorKworKyAgICAgICBbQlogIzIyMzIwXQorKyAgICAgICBDVkUtMjAxNy0xNTY3MAorKyAgICAgICAqIHBvc2l4L2dsb2IuYyAoX19nbG9iKTogRml4IG9uZS1ieXRlIG92ZXJmbG93LgorKworIDIwMTctMDgtMDIgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHNvdXJjZXdhcmUub3JnPgorIAorIAkqIHZlcnNpb24uaCAoUkVMRUFTRSk6IFNldCB0byAic3RhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NjkyODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTU2NzEucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSBmMWNmOThiNTgzNzg3Y2ZiNjI3OGJhZWE0NmUyODZhMGVlNzU2N2ZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KK0RhdGU6IFN1biwgMjIgT2N0IDIwMTcgMTA6MDA6NTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2xvYjogRml4IGJ1ZmZlciBvdmVyZmxvdyBkdXJpbmcgR0xPQl9USUxERSB1bmVzY2FwaW5nIFtCWgorICMyMjMzMl0KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYTE1OWI1M2ZhMDU5OTQ3Y2MyNTQ4ZTNiMGQ1YmRjZjdiOTYzMGJhOCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNTY3MQorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIENoYW5nZUxvZyAgICB8IDYgKysrKysrCisgTkVXUyAgICAgICAgIHwgNCArKysrCisgcG9zaXgvZ2xvYi5jIHwgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9ORVdTCisrKysgZ2l0L05FV1MKK0BAIC0yMTEsNiArMjExLDEwIEBAIFNlY3VyaXR5IHJlbGF0ZWQgY2hhbmdlczoKKyAgIG9uIHRoZSBzdGFjayBvciB0aGUgaGVhcCwgZGVwZW5kaW5nIG9uIHRoZSBsZW5ndGggb2YgdGhlIHVzZXIgbmFtZSkuCisgICBSZXBvcnRlZCBieSBUaW0gUsO8aHNlbi4KKyAKKysgIFRoZSBnbG9iIGZ1bmN0aW9uLCB3aGVuIGludm9rZWQgd2l0aCBHTE9CX1RJTERFIGFuZCB3aXRob3V0CisrICBHTE9CX05PRVNDQVBFLCBjb3VsZCB3cml0ZSBwYXN0IHRoZSBlbmQgb2YgYSBidWZmZXIgd2hpbGUKKysgIHVuZXNjYXBpbmcgdXNlciBuYW1lcy4gIFJlcG9ydGVkIGJ5IFRpbSBSw7xoc2VuLgorKworIFRoZSBmb2xsb3dpbmcgYnVncyBhcmUgcmVzb2x2ZWQgd2l0aCB0aGlzIHJlbGVhc2U6CisgCisgICBbOTg0XSBuZXR3b3JrOiBSZXNwb25kIHRvIGNoYW5nZWQgcmVzb2x2LmNvbmYgaW4gZ2V0aG9zdGJ5bmFtZQorSW5kZXg6IGdpdC9wb3NpeC9nbG9iLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wb3NpeC9nbG9iLmMKKysrKyBnaXQvcG9zaXgvZ2xvYi5jCitAQCAtODIzLDExICs4MjMsMTEgQEAgZ2xvYiAoY29uc3QgY2hhciAqcGF0dGVybiwgaW50IGZsYWdzLCBpbgorIAkJICBjaGFyICpwID0gbWVtcGNweSAobmV3cCwgZGlybmFtZSArIDEsCisgCQkJCSAgICAgdW5lc2NhcGUgLSBkaXJuYW1lIC0gMSk7CisgCQkgIGNoYXIgKnEgPSB1bmVzY2FwZTsKKy0JCSAgd2hpbGUgKCpxICE9ICdcMCcpCisrCQkgIHdoaWxlIChxICE9IGVuZF9uYW1lKQorIAkJICAgIHsKKyAJCSAgICAgIGlmICgqcSA9PSAnXFwnKQorIAkJCXsKKy0JCQkgIGlmIChxWzFdID09ICdcMCcpCisrCQkJICBpZiAocSArIDEgPT0gZW5kX25hbWUpCisgCQkJICAgIHsKKyAJCQkgICAgICAvKiAifmZvXFxvXFwiIHVuZXNjYXBlIHRvIHVzZXJfbmFtZSAiZm9vXFwiLAorIAkJCQkgYnV0ICJ+Zm9cXG9cXC8iIHVuZXNjYXBlIHRvIHVzZXJfbmFtZQorSW5kZXg6IGdpdC9DaGFuZ2VMb2cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9DaGFuZ2VMb2cKKysrKyBnaXQvQ2hhbmdlTG9nCitAQCAtMSw1ICsxLDEwIEBACisrCisgMjAxNy0xMC0yMCAgUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKyAKKysgICAgICAgW0JaICMyMjMzMl0KKysgICAgICAgKiBwb3NpeC9nbG9iLmMgKF9fZ2xvYik6IEZpeCBidWZmZXIgb3ZlcmZsb3cgZHVyaW5nIEdMT0JfVElMREUKKysgICAgICAgdW5lc2NhcGluZy4KKysKKyAgICAgICAgW0JaICMyMjMyMF0KKyAgICAgICAgQ1ZFLTIwMTctMTU2NzAKKyAgICAgICAgKiBwb3NpeC9nbG9iLmMgKF9fZ2xvYik6IEZpeCBvbmUtYnl0ZSBvdmVyZmxvdy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNjk5Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNjk5Ny5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODczMWU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE2OTk3LnBhdGNoCkBAIC0wLDAgKzEsMTUwIEBACitGcm9tIDRlYmQwYzQxOTFjNjA3M2NjOGE3YzVmZGNmMWQxODJjNDcxOWJjYmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBdXJlbGllbiBKYXJubyA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CitEYXRlOiBTYXQsIDMwIERlYyAyMDE3IDEwOjU0OjIzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGVsZjogQ2hlY2sgZm9yIGVtcHR5IHRva2VucyBiZWZvcmUgZHluYW1pYyBzdHJpbmcgdG9rZW4KKyBleHBhbnNpb24gW0JaICMyMjYyNV0KKworVGhlIGZpbGxpbl9ycGF0aCBmdW5jdGlvbiBpbiBlbGYvZGwtbG9hZC5jIGxvb3BzIG92ZXIgZWFjaCBSUEFUSCBvcgorUlVOUEFUSCB0b2tlbnMgYW5kIGludGVycHJldHMgZW1wdHkgdG9rZW5zIGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorKCIuLyIpLiBJbiBwcmFjdGljZSB0aGUgY2hlY2sgZm9yIGVtcHR5IHRva2VuIGlzIGRvbmUgKmFmdGVyKiB0aGUKK2R5bmFtaWMgc3RyaW5nIHRva2VuIGV4cGFuc2lvbi4gVGhlIGV4cGFuc2lvbiBwcm9jZXNzIGNhbiByZXR1cm4gYW4KK2VtcHR5IHN0cmluZyBmb3IgdGhlICRPUklHSU4gdG9rZW4gaWYgX19saWJjX2VuYWJsZV9zZWN1cmUgaXMgc2V0CitvciBpZiB0aGUgcGF0aCBvZiB0aGUgYmluYXJ5IGNhbiBub3QgYmUgZGV0ZXJtaW5lZCAoL3Byb2Mgbm90IG1vdW50ZWQpLgorCitGaXggdGhhdCBieSBtb3ZpbmcgdGhlIGNoZWNrIGZvciBlbXB0eSB0b2tlbnMgYmVmb3JlIHRoZSBkeW5hbWljIHN0cmluZwordG9rZW4gZXhwYW5zaW9uLiBJbiBhZGRpdGlvbiwgY2hlY2sgZm9yIE5VTEwgcG9pbnRlciBvciBlbXB0eSBzdHJpbmdzCityZXR1cm4gYnkgZXhwYW5kX2R5bmFtaWNfc3RyaW5nX3Rva2VuLgorCitUaGUgYWJvdmUgY2hhbmdlcyBoaWdobGlnaHRlZCBhIGJ1ZyBpbiBkZWNvbXBvc2VfcnBhdGgsIGFuIGVtcHR5IGFycmF5CitpcyByZXByZXNlbnRlZCBieSB0aGUgZmlyc3QgZWxlbWVudCBiZWluZyBOVUxMIGF0IHRoZSBmaWxsaW5fcnBhdGgKK2xldmVsLCBidXQgYnkgdXNpbmcgYSAtMSBwb2ludGVyIGluIGRlY29tcG9zZV9ycGF0aCBhbmQgb3RoZXIgZnVuY3Rpb25zLgorCitDaGFuZ2Vsb2c6CisJW0JaICMyMjYyNV0KKwkqIGVsZi9kbC1sb2FkLmMgKGZpbGxpbl9ycGF0aCk6IENoZWNrIGZvciBlbXB0eSB0b2tlbnMgYmVmb3JlIGR5bmFtaWMKKwlzdHJpbmcgdG9rZW4gZXhwYW5zaW9uLiBDaGVjayBmb3IgTlVMTCBwb2ludGVyIG9yIGVtcHR5IHN0cmluZyBwb3NzaWJseQorCXJldHVybmVkIGJ5IGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbi4KKwkoZGVjb21wb3NlX3JwYXRoKTogQ2hlY2sgZm9yIGVtcHR5IHBhdGggYWZ0ZXIgZHluYW1pYyBzdHJpbmcKKwl0b2tlbiBleHBhbnNpb24uCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAzZTNjOTA0ZGFlZjY5YjhiZjdkNWNjMDdmNzkzYzlmMDdjMzU1M2VmKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE2OTk3CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworLS0tCisgQ2hhbmdlTG9nICAgICB8IDEwICsrKysrKysrKysKKyBORVdTICAgICAgICAgIHwgIDQgKysrKworIGVsZi9kbC1sb2FkLmMgfCA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTkVXUworKysrIGdpdC9ORVdTCitAQCAtMjE1LDYgKzIxNSwxMCBAQCBTZWN1cml0eSByZWxhdGVkIGNoYW5nZXM6CisgICBHTE9CX05PRVNDQVBFLCBjb3VsZCB3cml0ZSBwYXN0IHRoZSBlbmQgb2YgYSBidWZmZXIgd2hpbGUKKyAgIHVuZXNjYXBpbmcgdXNlciBuYW1lcy4gIFJlcG9ydGVkIGJ5IFRpbSBSw7xoc2VuLgorIAorKyAgQ1ZFLTIwMTctMTY5OTc6IEluY29ycmVjdCBoYW5kbGluZyBvZiBSUEFUSCBvciBSVU5QQVRIIGNvbnRhaW5pbmcgJE9SSUdJTgorKyAgZm9yIEFUX1NFQ1VSRSBvciBTVUlEIGJpbmFyaWVzIGNvdWxkIGJlIHVzZWQgdG8gbG9hZCBsaWJyYXJpZXMgZnJvbSB0aGUKKysgIGN1cnJlbnQgZGlyZWN0b3J5LgorKworIFRoZSBmb2xsb3dpbmcgYnVncyBhcmUgcmVzb2x2ZWQgd2l0aCB0aGlzIHJlbGVhc2U6CisgCisgICBbOTg0XSBuZXR3b3JrOiBSZXNwb25kIHRvIGNoYW5nZWQgcmVzb2x2LmNvbmYgaW4gZ2V0aG9zdGJ5bmFtZQorSW5kZXg6IGdpdC9lbGYvZGwtbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvZWxmL2RsLWxvYWQuYworKysrIGdpdC9lbGYvZGwtbG9hZC5jCitAQCAtNDMzLDMyICs0MzMsNDEgQEAgZmlsbGluX3JwYXRoIChjaGFyICpycGF0aCwgc3RydWN0IHJfc2VhcgorIHsKKyAgIGNoYXIgKmNwOworICAgc2l6ZV90IG5lbGVtcyA9IDA7CistICBjaGFyICp0b19mcmVlOworIAorICAgd2hpbGUgKChjcCA9IF9fc3Ryc2VwICgmcnBhdGgsIHNlcCkpICE9IE5VTEwpCisgICAgIHsKKyAgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICpkaXJwOworKyAgICAgIGNoYXIgKnRvX2ZyZWUgPSBOVUxMOworKyAgICAgIHNpemVfdCBsZW4gPSAwOworIAorLSAgICAgIHRvX2ZyZWUgPSBjcCA9IGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbiAobCwgY3AsIDEpOworKyAgICAgIC8qIGBzdHJzZXAnIGNhbiBwYXNzIGFuIGVtcHR5IHN0cmluZy4gICovCisrICAgICAgaWYgKCpjcCAhPSAnXDAnKQorKwl7CisrCSAgdG9fZnJlZSA9IGNwID0gZXhwYW5kX2R5bmFtaWNfc3RyaW5nX3Rva2VuIChsLCBjcCwgMSk7CisgCistICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoY3ApOworKwkgIC8qIGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbiBjYW4gcmV0dXJuIE5VTEwgaW4gY2FzZSBvZiBlbXB0eQorKwkgICAgIHBhdGggb3IgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZS4gICovCisrCSAgaWYgKGNwID09IE5VTEwpCisrCSAgICBjb250aW51ZTsKKysKKysJICAvKiBDb21wdXRlIHRoZSBsZW5ndGggYWZ0ZXIgZHluYW1pYyBzdHJpbmcgdG9rZW4gZXhwYW5zaW9uIGFuZAorKwkgICAgIGlnbm9yZSBlbXB0eSBwYXRocy4gICovCisrCSAgbGVuID0gc3RybGVuIChjcCk7CisrCSAgaWYgKGxlbiA9PSAwKQorKwkgICAgeworKwkgICAgICBmcmVlICh0b19mcmVlKTsKKysJICAgICAgY29udGludWU7CisrCSAgICB9CisgCistICAgICAgLyogYHN0cnNlcCcgY2FuIHBhc3MgYW4gZW1wdHkgc3RyaW5nLiAgVGhpcyBoYXMgdG8gYmUKKy0JIGludGVycHJldGVkIGFzIGB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Jy4gKi8KKy0gICAgICBpZiAobGVuID09IDApCistCXsKKy0JICBzdGF0aWMgY29uc3QgY2hhciBjdXJ3ZFtdID0gIi4vIjsKKy0JICBjcCA9IChjaGFyICopIGN1cndkOworKwkgIC8qIFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzIChleGNlcHQgZm9yICIvIikuICAqLworKwkgIHdoaWxlIChsZW4gPiAxICYmIGNwW2xlbiAtIDFdID09ICcvJykKKysJICAgIC0tbGVuOworKworKwkgIC8qIE5vdyBhZGQgb25lIGlmIHRoZXJlIGlzIG5vbmUgc28gZmFyLiAgKi8KKysJICBpZiAobGVuID4gMCAmJiBjcFtsZW4gLSAxXSAhPSAnLycpCisrCSAgICBjcFtsZW4rK10gPSAnLyc7CisgCX0KKyAKKy0gICAgICAvKiBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyAoZXhjZXB0IGZvciAiLyIpLiAgKi8KKy0gICAgICB3aGlsZSAobGVuID4gMSAmJiBjcFtsZW4gLSAxXSA9PSAnLycpCistCS0tbGVuOworLQorLSAgICAgIC8qIE5vdyBhZGQgb25lIGlmIHRoZXJlIGlzIG5vbmUgc28gZmFyLiAgKi8KKy0gICAgICBpZiAobGVuID4gMCAmJiBjcFtsZW4gLSAxXSAhPSAnLycpCistCWNwW2xlbisrXSA9ICcvJzsKKy0KKyAgICAgICAvKiBNYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIHVudHJ1c3RlZCBkaXJlY3RvcmllcyBpZiB3ZSBydW4gU1VJRC4gICovCisgICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKGNoZWNrX3RydXN0ZWQpICYmICFpc190cnVzdGVkX3BhdGggKGNwLCBsZW4pKQorIAl7CitAQCAtNjIxLDYgKzYzMCwxNCBAQCBkZWNvbXBvc2VfcnBhdGggKHN0cnVjdCByX3NlYXJjaF9wYXRoX3N0CisgICAgICBuZWNlc3NhcnkuICAqLworICAgZnJlZSAoY29weSk7CisgCisrICAvKiBUaGVyZSBpcyBubyBwYXRoIGFmdGVyIGV4cGFuc2lvbi4gICovCisrICBpZiAocmVzdWx0WzBdID09IE5VTEwpCisrICAgIHsKKysgICAgICBmcmVlIChyZXN1bHQpOworKyAgICAgIHNwcy0+ZGlycyA9IChzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICoqKSAtMTsKKysgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKysKKyAgIHNwcy0+ZGlycyA9IHJlc3VsdDsKKyAgIC8qIFRoZSBjYWxsZXIgd2lsbCBjaGFuZ2UgdGhpcyB2YWx1ZSBpZiB3ZSBoYXZlbid0IHVzZWQgYSByZWFsIG1hbGxvYy4gICovCisgICBzcHMtPm1hbGxvY2VkID0gMTsKK0luZGV4OiBnaXQvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQ2hhbmdlTG9nCisrKysgZ2l0L0NoYW5nZUxvZworQEAgLTEsMyArMSwxMiBAQAorKzIwMTctMTItMzAgIEF1cmVsaWVuIEphcm5vICA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CisrICAgICAgICAgICBEbWl0cnkgVi4gTGV2aW4gIDxsZHZAYWx0bGludXgub3JnPgorKworKyAgICAgICBbQlogIzIyNjI1XQorKyAgICAgICAqIGVsZi9kbC1sb2FkLmMgKGZpbGxpbl9ycGF0aCk6IENoZWNrIGZvciBlbXB0eSB0b2tlbnMgYmVmb3JlIGR5bmFtaWMKKysgICAgICAgc3RyaW5nIHRva2VuIGV4cGFuc2lvbi4gQ2hlY2sgZm9yIE5VTEwgcG9pbnRlciBvciBlbXB0eSBzdHJpbmcgcG9zc2libHkKKysgICAgICAgcmV0dXJuZWQgYnkgZXhwYW5kX2R5bmFtaWNfc3RyaW5nX3Rva2VuLgorKyAgICAgICAoZGVjb21wb3NlX3JwYXRoKTogQ2hlY2sgZm9yIGVtcHR5IHBhdGggYWZ0ZXIgZHluYW1pYyBzdHJpbmcKKysgICAgICAgdG9rZW4gZXhwYW5zaW9uLgorIAorIDIwMTctMTAtMjAgIFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTc0MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTc0MjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdkMWNiOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNzQyNi5wYXRjaApAQCAtMCwwICsxLDgwIEBACitGcm9tIGRmOGMyMTljYjk4N2NmZTg1YzU1MGVmYTY5M2ExMzgzYTExZTM4YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBcmp1biBTaGFua2FyIDxhcmp1bkByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAzMCBOb3YgMjAxNyAxMzozMTo0NSArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggaW50ZWdlciBvdmVyZmxvdyBpbiBtYWxsb2Mgd2hlbiB0Y2FjaGUgaXMgZW5hYmxlZCBbQloKKyAjMjIzNzVdCisKK1doZW4gdGhlIHBlci10aHJlYWQgY2FjaGUgaXMgZW5hYmxlZCwgX19saWJjX21hbGxvYyB1c2VzIHJlcXVlc3Qyc2l6ZSAod2hpY2gKK2RvZXMgbm90IHBlcmZvcm0gYW4gb3ZlcmZsb3cgY2hlY2spIHRvIGNhbGN1bGF0ZSB0aGUgY2h1bmsgc2l6ZSBmcm9tIHRoZQorcmVxdWVzdGVkIGFsbG9jYXRpb24gc2l6ZS4gVGhpcyBsZWFkcyB0byBhbiBpbnRlZ2VyIG92ZXJmbG93IGNhdXNpbmcgbWFsbG9jCit0byBpbmNvcnJlY3RseSByZXR1cm4gdGhlIGxhc3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBibG9jayB3aGVuIGNhbGxlZCB3aXRoCithIHZlcnkgbGFyZ2Ugc2l6ZSBhcmd1bWVudCAoY2xvc2UgdG8gU0laRV9NQVgpLgorCitUaGlzIGNvbW1pdCB1c2VzIGNoZWNrZWRfcmVxdWVzdDJzaXplIGluc3RlYWQsIHJlbW92aW5nIHRoZSBvdmVyZmxvdy4KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMzQ2OTc2OTRlOGE5M2IzMjViMThmMjVmN2RjZGVkNTVkNmJhZWFmNikKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNzQyNgorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIENoYW5nZUxvZyAgICAgICB8IDcgKysrKysrKworIE5FV1MgICAgICAgICAgICB8IDYgKysrKysrCisgbWFsbG9jL21hbGxvYy5jIHwgMyArKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGdpdC9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTkVXUworKysrIGdpdC9ORVdTCitAQCAtNCw2ICs0LDggQEAgU2VlIHRoZSBlbmQgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4KKyAKKyBQbGVhc2Ugc2VuZCBHTlUgQyBsaWJyYXJ5IGJ1ZyByZXBvcnRzIHZpYSA8aHR0cDovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhLz4KKyB1c2luZyBgZ2xpYmMnIGluIHRoZSAicHJvZHVjdCIgZmllbGQuCisrCisrWzIyMzc1XSBtYWxsb2MgcmV0dXJucyBwb2ludGVyIGZyb20gdGNhY2hlIGluc3RlYWQgb2YgTlVMTCAoQ1ZFLTIwMTctMTc0MjYpCisgDAorIFZlcnNpb24gMi4yNgorIAorQEAgLTIxNSw2ICsyMTcsMTEgQEAgU2VjdXJpdHkgcmVsYXRlZCBjaGFuZ2VzOgorICAgZm9yIEFUX1NFQ1VSRSBvciBTVUlEIGJpbmFyaWVzIGNvdWxkIGJlIHVzZWQgdG8gbG9hZCBsaWJyYXJpZXMgZnJvbSB0aGUKKyAgIGN1cnJlbnQgZGlyZWN0b3J5LgorIAorKyAgQ1ZFLTIwMTctMTc0MjY6IFRoZSBtYWxsb2MgZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggYW4gb2JqZWN0IHNpemUgbmVhcgorKyAgdGhlIHZhbHVlIFNJWkVfTUFYLCB3b3VsZCByZXR1cm4gYSBwb2ludGVyIHRvIGEgYnVmZmVyIHdoaWNoIGlzIHRvbyBzbWFsbCwKKysgIGluc3RlYWQgb2YgTlVMTC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIHdpdGggdGhlIG5ldyBtYWxsb2MKKysgIHRocmVhZCBjYWNoZSBpbiBnbGliYyAyLjI2LiAgUmVwb3J0ZWQgYnkgSWFpbiBCdWNsYXcuCisrCisgVGhlIGZvbGxvd2luZyBidWdzIGFyZSByZXNvbHZlZCB3aXRoIHRoaXMgcmVsZWFzZToKKyAKKyAgIFs5ODRdIG5ldHdvcms6IFJlc3BvbmQgdG8gY2hhbmdlZCByZXNvbHYuY29uZiBpbiBnZXRob3N0YnluYW1lCitJbmRleDogZ2l0L21hbGxvYy9tYWxsb2MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL21hbGxvYy9tYWxsb2MuYworKysrIGdpdC9tYWxsb2MvbWFsbG9jLmMKK0BAIC0zMDUwLDcgKzMwNTAsOCBAQCBfX2xpYmNfbWFsbG9jIChzaXplX3QgYnl0ZXMpCisgICAgIHJldHVybiAoKmhvb2spKGJ5dGVzLCBSRVRVUk5fQUREUkVTUyAoMCkpOworICNpZiBVU0VfVENBQ0hFCisgICAvKiBpbnRfZnJlZSBhbHNvIGNhbGxzIHJlcXVlc3Qyc2l6ZSwgYmUgY2FyZWZ1bCB0byBub3QgcGFkIHR3aWNlLiAgKi8KKy0gIHNpemVfdCB0Ynl0ZXMgPSByZXF1ZXN0MnNpemUgKGJ5dGVzKTsKKysgIHNpemVfdCB0Ynl0ZXM7CisrICBjaGVja2VkX3JlcXVlc3Qyc2l6ZSAoYnl0ZXMsIHRieXRlcyk7CisgICBzaXplX3QgdGNfaWR4ID0gY3NpemUydGlkeCAodGJ5dGVzKTsKKyAKKyAgIE1BWUJFX0lOSVRfVENBQ0hFICgpOworSW5kZXg6IGdpdC9DaGFuZ2VMb2cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9DaGFuZ2VMb2cKKysrKyBnaXQvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDEwIEBACisrMjAxNy0xMS0zMCAgQXJqdW4gU2hhbmthciAgPGFyanVuQHJlZGhhdC5jb20+CisrCisrICAgICAgIFtCWiAjMjIzNzVdCisrICAgICAgIENWRS0yMDE3LTE3NDI2CisrICAgICAgICogbWFsbG9jL21hbGxvYy5jIChfX2xpYmNfbWFsbG9jKTogVXNlIGNoZWNrZWRfcmVxdWVzdDJzaXplCisrICAgICAgIGluc3RlYWQgb2YgcmVxdWVzdDJzaXplLgorKworIDIwMTctMTItMzAgIEF1cmVsaWVuIEphcm5vICA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CisgICAgICAgICAgICBEbWl0cnkgVi4gTGV2aW4gIDxsZHZAYWx0bGludXgub3JnPgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxZWMwYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi1yZXF1aXJlIGdsaWJjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTICs9ICJncGVyZi1uYXRpdmUiCi0KLVNSQ1JFViA/PSAiZGIwMjQyZTMwMjM0MzY3NTdiYmM3YzQ4OGE3NzllNmUzMzQzZGIwNCIKLQotU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKLQotR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopIgotCi1TUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCi0gICAgICAgICAgIFwKLSAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLU1ha2UtbGQtdmVyc2lvbi1vdXRwdXQtbWF0Y2hpbmctZ3Jvay1nb2xkLXMtb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LVJld29yay1mbm8tb21pdC1mcmFtZS1wb2ludGVyLXN1cHBvcnQtb24taTM4Ni5wYXRjaCBcCi0iCi0KLU5BVElWRVNES0ZJWEVTID89ICIiCi1OQVRJVkVTREtGSVhFU19jbGFzcy1uYXRpdmVzZGsgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1CID0gIiR7V09SS0RJUn0vYnVpbGQtJHtUQVJHRVRfU1lTfSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICIiCi0KLSMgdGhlIC1pc3lzdGVtIGluIGJpdGJha2UuY29uZiBzY3Jld3MgdXAgZ2xpYmMgZG9fc3RhZ2UKLUJVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgotVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKLQotR0xJQkNfQlJPS0VOX0xPQ0FMRVMgPSAiIgotIwotIyBXZSB3aWxsIHNraXAgcGFyc2luZyBnbGliYyB3aGVuIHRhcmdldCBzeXN0ZW0gQyBsaWJyYXJ5IHNlbGVjdGlvbiBpcyBub3QgZ2xpYmMKLSMgdGhpcyBoZWxwcyBpbiBlYXNpbmcgb3V0IHBhcnNpbmcgZm9yIG5vbi1nbGliYyBzeXN0ZW0gbGlicmFyaWVzCi0jCi1DT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsX2NsYXNzLXRhcmdldCA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX2xpYmMtdWNsaWJjX2NsYXNzLXRhcmdldCA9ICJudWxsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgLS1kaXNhYmxlLXByb2ZpbGUgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1hZGQtb25zIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLXJwYyBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliYy1pbmV0LWFubCcsICctLWVuYWJsZS1uc2NkJywgJy0tZGlzYWJsZS1uc2NkJywgZCl9IgotCi0KLWRvX3BhdGNoX2FwcGVuZCgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQotfQotCi1kb19maXhfcmVhZGxpYl9jICgpIHsKLQlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYwotfQotCi1kb19jb25maWd1cmUgKCkgewotIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKLSMgY2FsbHMgZm9yIG5vdwotIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCi0jIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZwotICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgotICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAotICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCi19Ci0KLXJwY3N2YyA9ICJib290cGFyYW1fcHJvdC54IG5sbV9wcm90LnggcnN0YXQueCBcCi0JICB5cHBhc3N3ZC54IGtsbV9wcm90LnggcmV4Lnggc21faW50ZXIueCBtb3VudC54IFwKLQkgIHJ1c2Vycy54IHNwcmF5LnggbmZzX3Byb3QueCBycXVvdGEueCBrZXlfcHJvdC54IgotCi1kb19jb21waWxlICgpIHsKLQkjIC1XbCwtcnBhdGgtbGluayA8c3RhZ2luZz4vbGliIGluIExERkxBR1MgY2FuIGNhdXNlIGJyZWFrYWdlIGlmIGFub3RoZXIgZ2xpYmMgaXMgaW4gc3RhZ2luZwotCXVuc2V0IExERkxBR1MKLQliYXNlX2RvX2NvbXBpbGUKLQkoCi0JCWNkICR7U30vc3VucnBjL3JwY3N2YwotCQlmb3IgciBpbiAke3JwY3N2Y307IGRvCi0JCQloPWBlY2hvICRyfHNlZCAtZSdzLFwueCQsLmgsJ2AKLQkJCXJtIC1mICRoCi0JCQkke0J9L3N1bnJwYy9jcm9zcy1ycGNnZW4gLWggJHIgLW8gJGggfHwgYmJ3YXJuICIke1BOfTogdW5hYmxlIHRvIGdlbmVyYXRlIGhlYWRlciBmb3IgJHIiCi0JCWRvbmUKLQkpCi0JZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCi0JaWYgWyAtbiAiJHtSVExETElTVH0iIF0KLQl0aGVuCi0JCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKLQkJaWYgWyAiJHtwcmV2cnRsZH0iICE9ICIke1JUTERMSVNUfSIgXQotCQl0aGVuCi0JCQlzZWQgLWkgJHtCfS9lbGYvbGRkIC1lICJzI15SVExETElTVD0uKlwkI1JUTERMSVNUPVwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiMiCi0JCWZpCi0JZmkKLQotfQotCi0jIFVzZSB0aGUgaG9zdCBsb2NhbGUgYXJjaGl2ZSB3aGVuIGJ1aWx0IGZvciBuYXRpdmVzZGsgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvCi0jIHNoaXAgYSBjb21wbGV0ZSAoMTAwTUIpIGxvY2FsZSBzZXQuCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGVjaG8gImNvbXBsb2NhbGVkaXI9L3Vzci9saWIvbG9jYWxlIiA+PiAke1N9L2NvbmZpZ3Bhcm1zCi19Ci0KLXJlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMGViOTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNi5iYgpAQCAtMCwwICsxLDE1NCBAQAorcmVxdWlyZSBnbGliYy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDUkVWID89ICIxYzlhNWMyNzBkOGI2NmYzMGRjZmFmMWNiMmQ2Y2YzOWQzZTE4MzY5IgorCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgorCitHTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCisKK1NSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKKyAgICAgICAgICAgXAorICAgICAgICAgICAke05BVElWRVNES0ZJWEVTfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtYXNzZXJ0LVN1cHByZXNzLXBlZGFudGljLXdhcm5pbmctY2F1c2VkLWJ5LXN0YXRlbWVudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LWdsaWJjLXJlc2V0LWRsLWxvYWQtd3JpdGUtbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtQnVnLTQ1NzgtYWRkLWxkLnNvLWxvY2std2hpbGUtZm9yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNTY3MC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNTY3MS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LWFzc2VydC1TdXBwb3J0LXR5cGVzLXdpdGhvdXQtb3BlcmF0b3ItaW50LUJaLTIxOTcyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE2OTk3LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE3NDI2LnBhdGNoIFwKKyIKKworTkFUSVZFU0RLRklYRVMgPz0gIiIKK05BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIiIKKworIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQorQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCitUQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgorCitHTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCisjCisjIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYworIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKKyMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyAtLWRpc2FibGUtcHJvZmlsZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFkZC1vbnM9bGliaWRuIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLXJwYyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtb2Jzb2xldGUtbnNsIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCisgICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliYy1pbmV0LWFubCcsICctLWVuYWJsZS1uc2NkJywgJy0tZGlzYWJsZS1uc2NkJywgZCl9IgorCisKK2RvX3BhdGNoX2FwcGVuZCgpIHsKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQorfQorCitkb19maXhfcmVhZGxpYl9jICgpIHsKKwlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYworfQorCitkb19jb25maWd1cmUgKCkgeworIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKKyMgY2FsbHMgZm9yIG5vdworIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCisjIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZworICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgorICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAorICAgICAgICAjICJwbHVyYWwuYyIgbWF5IG9yIG1heSBub3QgZ2V0IHJlZ2VuZXJhdGVkIGZyb20gInBsdXJhbC55IiBzbyB3ZQorICAgICAgICAjIHRvdWNoICJwbHVyYWwueSIgdG8gbWFrZSBzdXJlIGl0IGRvZXMuIChUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCisgICAgICAgICMgZm9yIGdsaWJjIHZlcnNpb24gMi4yNispCisgICAgICAgIGZpbmQgJHtTfS9pbnRsIC1uYW1lICJwbHVyYWwueSIgfCB4YXJncyB0b3VjaAorICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCit9CisKK3JwY3N2YyA9ICJib290cGFyYW1fcHJvdC54IG5sbV9wcm90LnggcnN0YXQueCBcCisJICB5cHBhc3N3ZC54IGtsbV9wcm90LnggcmV4Lnggc21faW50ZXIueCBtb3VudC54IFwKKwkgIHJ1c2Vycy54IHNwcmF5LnggbmZzX3Byb3QueCBycXVvdGEueCBrZXlfcHJvdC54IgorCitkb19jb21waWxlICgpIHsKKwkjIC1XbCwtcnBhdGgtbGluayA8c3RhZ2luZz4vbGliIGluIExERkxBR1MgY2FuIGNhdXNlIGJyZWFrYWdlIGlmIGFub3RoZXIgZ2xpYmMgaXMgaW4gc3RhZ2luZworCXVuc2V0IExERkxBR1MKKwliYXNlX2RvX2NvbXBpbGUKKwkoCisJCWNkICR7U30vc3VucnBjL3JwY3N2YworCQlmb3IgciBpbiAke3JwY3N2Y307IGRvCisJCQloPWBlY2hvICRyfHNlZCAtZSdzLFwueCQsLmgsJ2AKKwkJCXJtIC1mICRoCisJCQkke0J9L3N1bnJwYy9jcm9zcy1ycGNnZW4gLWggJHIgLW8gJGggfHwgYmJ3YXJuICIke1BOfTogdW5hYmxlIHRvIGdlbmVyYXRlIGhlYWRlciBmb3IgJHIiCisJCWRvbmUKKwkpCisJZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCisJaWYgWyAtbiAiJHtSVExETElTVH0iIF0KKwl0aGVuCisJCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKKwkJaWYgWyAiJHtwcmV2cnRsZH0iICE9ICIke1JUTERMSVNUfSIgXQorCQl0aGVuCisJCQlzZWQgLWkgJHtCfS9lbGYvbGRkIC1lICJzI15SVExETElTVD0uKlwkI1JUTERMSVNUPVwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiMiCisJCWZpCisJZmkKKworfQorCisjIFVzZSB0aGUgaG9zdCBsb2NhbGUgYXJjaGl2ZSB3aGVuIGJ1aWx0IGZvciBuYXRpdmVzZGsgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvCisjIHNoaXAgYSBjb21wbGV0ZSAoMTAwTUIpIGxvY2FsZSBzZXQuCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGVjaG8gImNvbXBsb2NhbGVkaXI9L3Vzci9saWIvbG9jYWxlIiA+PiAke1N9L2NvbmZpZ3Bhcm1zCit9CisKK3JlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvZGVmbjItYy1tYW4tZG9uLXQtcmVseS1vbi1kcGtnLWFyY2hpdGVjdHVyZS10by1zZXQtYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9kZWZuMi1jLW1hbi1kb24tdC1yZWx5LW9uLWRwa2ctYXJjaGl0ZWN0dXJlLXRvLXNldC1hLnBhdGNoCmluZGV4IDhjNGQ5NTMuLmEyNGI4Y2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9kZWZuMi1jLW1hbi1kb24tdC1yZWx5LW9uLWRwa2ctYXJjaGl0ZWN0dXJlLXRvLXNldC1hLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9kZWZuMi1jLW1hbi1kb24tdC1yZWx5LW9uLWRwa2ctYXJjaGl0ZWN0dXJlLXRvLXNldC1hLnBhdGNoCkBAIC0xMiw2ICsxMiw3IEBACiBsaWtlIHRoZSBsb29wYmFjayBkZXZpY2Ugbm90IGJlaW5nIGNvbmZpZ3VyZWQvZW5hYmxlZC4KIAogU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGRlZm4yYy5wbCAgIHwgNiArKystLS0KICBkZWZuMm1hbi5wbCB8IDYgKysrLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKaW5kZXggMDQ1NzgxYy4uYmQ0NDFhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgpAQCAtMyw4ICszLDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2N1bWVudGF0aW9uL2J1aWxkLWFwcGxpYW5jZSIKIAogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogCiBJTUFHRV9JTlNUQUxMID0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QgcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2ggcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkIFwKICAgICAgICAgICAgICAgICAga2VybmVsLWRldiBrZXJuZWwtZGV2c3JjIGNvbm5tYW4gY29ubm1hbi1wbHVnaW4tZXRoZXJuZXQgZGhjcC1jbGllbnQgXApAQCAtMTksMTIgKzE4LDEyIEBACiBBUFBFTkQgKz0gInJvb3Rmc3R5cGU9ZXh0NCBxdWlldCIKIAogREVQRU5EUyA9ICJ6aXAtbmF0aXZlIHB5dGhvbjMtcGlwLW5hdGl2ZSIKLUlNQUdFX0ZTVFlQRVMgPSAidm1kayIKK0lNQUdFX0ZTVFlQRVMgPSAid2ljLnZtZGsiCiAKIGluaGVyaXQgY29yZS1pbWFnZSBtb2R1bGUtYmFzZSBzZXR1cHRvb2xzMwogCi1TUkNSRVYgPz0gImI4NTkyNzJhZDQwNTMxODVkNDk4MGNhYzA1NDgxYjQzMGUwNTM0NWYiCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k7YnJhbmNoPXB5cm8gXAorU1JDUkVWID89ICJhOTU4ODY0NmZjZWMxN2U1MzE5OWUxZWE3ZTdiOGRjY2YxNDA4MTdlIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5O2JyYW5jaD1yb2NrbyBcCiAgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14IFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXhmIFwKICAgICAgICAgICAgZmlsZTovL1JFQURNRV9WaXJ0dWFsQm94X0d1ZXN0X0FkZGl0aW9ucy50eHQgXApAQCAtMTAxLDcgKzEwMCwxMSBAQAogCWV4cG9ydCBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0KIAlleHBvcnQgSE9NRT0ke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyCiAJbWtkaXIgLXAgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uY2FjaGUvcGlwCi0JcGlwMyBpbnN0YWxsIC0tdXNlciAtSSAtVSAtdiAtciAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKKwlwaXAzX2luc3RhbGxfcGFyYW1zPSItLXVzZXIgLUkgLVUgLXYgLXIgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0IgorCWlmIFsgLW4gIiR7aHR0cF9wcm94eX0iIF07IHRoZW4KKwkgICBwaXAzX2luc3RhbGxfcGFyYW1zPSIke3BpcDNfaW5zdGFsbF9wYXJhbXN9IC0tcHJveHkgJHtodHRwX3Byb3h5fSIKKwlmaQorCXBpcDMgaW5zdGFsbCAke3BpcDNfaW5zdGFsbF9wYXJhbXN9CiAJY2hvd24gLVIgYnVpbGRlci5idWlsZGVyICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmxvY2FsCiAJY2hvd24gLVIgYnVpbGRlci5idWlsZGVyICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmNhY2hlCiB9CkBAIC0xMjAsNyArMTIzLDcgQEAKIAljZCAke1dPUktESVJ9CiAJbWtkaXIgLXAgWW9jdG9fQnVpbGRfQXBwbGlhbmNlCiAJY3AgKi52bXgqIFlvY3RvX0J1aWxkX0FwcGxpYW5jZQotCWxuIC1zZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfS52bWRrIFlvY3RvX0J1aWxkX0FwcGxpYW5jZS9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm1kaworCWxuIC1zZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LndpYy52bWRrIFlvY3RvX0J1aWxkX0FwcGxpYW5jZS9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm1kawogCXppcCAtciAke0lNR0RFUExPWURJUn0vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLSR7REFURVRJTUV9LnppcCBZb2N0b19CdWlsZF9BcHBsaWFuY2UKIAlsbiAtc2YgWW9jdG9fQnVpbGRfQXBwbGlhbmNlLSR7REFURVRJTUV9LnppcCAke0lNR0RFUExPWURJUn0vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnppcAogfQpAQCAtMTMwLDQgKzEzMyw0IEBACiAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdjcmVhdGVfYnVuZGxlX2ZpbGVzJywgZCkKIH0KIAotYWRkdGFzayBidW5kbGVfZmlsZXMgYWZ0ZXIgZG9fdm1pbWcgYmVmb3JlIGRvX2ltYWdlX2NvbXBsZXRlCithZGR0YXNrIGJ1bmRsZV9maWxlcyBhZnRlciBkb19pbWFnZV93aWMgYmVmb3JlIGRvX2ltYWdlX2NvbXBsZXRlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKaW5kZXggNTc5NGEyNS4uYzQ0NmU4NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgpAQCAtOCw3ICs4LDcgQEAKICMgRG8gbm90IHBvbGx1dGUgdGhlIGluaXRyZCBpbWFnZSB3aXRoIHJvb3RmcyBmZWF0dXJlcwogSU1BR0VfRkVBVFVSRVMgPSAiIgogCi1leHBvcnQgSU1BR0VfQkFTRU5BTUUgPSAiY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyIKK2V4cG9ydCBJTUFHRV9CQVNFTkFNRSA9ICIke01MUFJFRklYfWNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiCiBJTUFHRV9MSU5HVUFTID0gIiIKIAogTElDRU5TRSA9ICJNSVQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIKaW5kZXggMTg0NzI3ZC4uMTY5OTVlNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYgpAQCAtMSwxMCArMSw5IEBACiAjIFNpbXBsZSBpbml0cmFtZnMgaW1hZ2UgYXJ0aWZhY3QgZ2VuZXJhdGlvbiBmb3IgdGlueSBpbWFnZXMuCiBERVNDUklQVElPTiA9ICJUaW55IGltYWdlIGNhcGFibGUgb2YgYm9vdGluZyBhIGRldmljZS4gVGhlIGtlcm5lbCBpbmNsdWRlcyBcCiB0aGUgTWluaW1hbCBSQU0tYmFzZWQgSW5pdGlhbCBSb290IEZpbGVzeXN0ZW0gKGluaXRyYW1mcyksIHdoaWNoIGZpbmRzIHRoZSBcCi1maXJzdCAnaW5pdCcgcHJvZ3JhbSBtb3JlIGVmZmljaWVudGx5LiAgY29yZS1pbWFnZS10aW55LWluaXRyYW1mcyBkb2Vzbid0IFwKK2ZpcnN0ICdpbml0JyBwcm9ncmFtIG1vcmUgZWZmaWNpZW50bHkuIGNvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMgZG9lc24ndCBcCiBhY3R1YWxseSBnZW5lcmF0ZSBhbiBpbWFnZSBidXQgcmF0aGVyIGdlbmVyYXRlcyBib290IGFuZCByb290ZnMgYXJ0aWZhY3RzIFwKLWludG8gYSBjb21tb24gbG9jYXRpb24gdGhhdCBjYW4gc3Vic2VxdWVudGx5IGJlIHBpY2tlZCB1cCBieSBleHRlcm5hbCBpbWFnZSBcCi1nZW5lcmF0aW9uIHRvb2xzIHN1Y2ggYXMgd2ljLiIKK3RoYXQgY2FuIHN1YnNlcXVlbnRseSBiZSBwaWNrZWQgdXAgYnkgZXh0ZXJuYWwgaW1hZ2UgZ2VuZXJhdGlvbiB0b29scyBzdWNoIGFzIHdpYy4iCiAKIFBBQ0tBR0VfSU5TVEFMTCA9ICJpbml0cmFtZnMtbGl2ZS1ib290IHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgZHJvcGJlYXIgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gdWRldiBiYXNlLXBhc3N3ZCAke1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTH0iCiAKQEAgLTE3LDcgKzE2LDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogCiAjIGRvbid0IGFjdHVhbGx5IGdlbmVyYXRlIGFuIGltYWdlLCBqdXN0IHRoZSBhcnRpZmFjdHMgbmVlZGVkIGZvciBvbmUKLUlNQUdFX0ZTVFlQRVMgPSAiJHtJTklUUkFNRlNfRlNUWVBFU30gd2ljIgorSU1BR0VfRlNUWVBFUyA9ICIke0lOSVRSQU1GU19GU1RZUEVTfSIKIAogaW5oZXJpdCBjb3JlLWltYWdlCiAKQEAgLTQwLDMgKzM5LDUgQEAKIH0KIAogSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EICs9ICJ0aW55aW5pdHJkOyIKKworUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EICs9ICJkZWJ1Z3NoZWxsPTMgaW5pdD0vYmluL2J1c3lib3ggc2ggaW5pdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCmluZGV4IDVhZDNhNjAuLjcwNjQxOGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaApAQCAtMTg2LDYgKzE4NiwxMyBAQAogCiBwYXJ0ZWQgJHtkZXZpY2V9IHByaW50CiAKK2VjaG8gIldhaXRpbmcgZm9yIGRldmljZSBub2Rlcy4uLiIKK0M9MAord2hpbGUgWyAkQyAtbmUgMyBdICYmIFsgISAtZSAkYm9vdGZzICAtbyAhIC1lICRyb290ZnMgLW8gISAtZSAkc3dhcCBdOyBkbworICAgIEM9JCgoIEMgKyAxICkpCisgICAgc2xlZXAgMQorZG9uZQorCiBlY2hvICJGb3JtYXR0aW5nICRib290ZnMgdG8gdmZhdC4uLiIKIG1rZnMudmZhdCAkYm9vdGZzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaAppbmRleCA1NzI2MTNlLi5kYWRlMDU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLnNoCkBAIC0xMzIsNyArMTMyLDcgQEAKIAogZGlza19zaXplPSQocGFydGVkICR7ZGV2aWNlfSB1bml0IG1iIHByaW50IHwgZ3JlcCAnXkRpc2sgLio6IC4qTUInIHwgY3V0IC1kIiAiIC1mIDMgfCBzZWQgLWUgInMvTUIvLyIpCiAKLWdydWJfdmVyc2lvbj0kKGdydWItaW5zdGFsbCAtdnxzZWQgJ3MvLiogXChbMC05XVwpLiovXDEvJykKK2dydWJfdmVyc2lvbj0kKGdydWItaW5zdGFsbCAtVnxzZWQgJ3MvLiogXChbMC05XVwpLiovXDEvJykKIAogaWYgWyAkZ3J1Yl92ZXJzaW9uIC1lcSAwIF0gOyB0aGVuCiAgICAgYmlvc19ib290X3NpemU9MApAQCAtMjExLDYgKzIxMSwxMyBAQAogCiBwYXJ0ZWQgJHtkZXZpY2V9IHByaW50CiAKK2VjaG8gIldhaXRpbmcgZm9yIGRldmljZSBub2Rlcy4uLiIKK0M9MAord2hpbGUgWyAkQyAtbmUgMyBdICYmIFsgISAtZSAkYm9vdGZzICAtbyAhIC1lICRyb290ZnMgLW8gISAtZSAkc3dhcCBdOyBkbworICAgIEM9JCgoIEMgKyAxICkpCisgICAgc2xlZXAgMQorZG9uZQorCiBlY2hvICJGb3JtYXR0aW5nICRib290ZnMgdG8gZXh0My4uLiIKIG1rZnMuZXh0MyAkYm9vdGZzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaAppbmRleCA0NDFiNDFjLi40NmNhYjZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWxpdmUuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1saXZlLnNoCkBAIC04NCw2ICs4NCwxMCBAQAogICAgICMgZGV2aWNlIG5vZGUgY3JlYXRpb24gZXZlbnRzIHdlcmUgaGFuZGxlZCwgdG8gYXZvaWQgdW5leHBlY3RlZCBiZWhhdmlvcgogICAgIGtpbGxhbGwgLTkgIiR7X1VERVZfREFFTU9OIyMqL30iIDI+L2Rldi9udWxsCiAKKyAgICAjIERvbid0IHJ1biBzeXN0ZW1kLXVwZGF0ZS1kb25lIG9uIHN5c3RlbWQtYmFzZWQgbGl2ZSBzeXN0ZW1zCisgICAgIyBiZWNhdXNlIGl0IHRyaWdnZXJzIGEgc2xvdyByZWJ1aWxkIG9mIGxkY29uZmlnIGNhY2hlcy4KKyAgICB0b3VjaCAke1JPT1RfTU9VTlR9L2V0Yy8udXBkYXRlZCAke1JPT1RfTU9VTlR9L3Zhci8udXBkYXRlZAorCiAgICAgIyBBbGxvdyBmb3IgaWRlbnRpZmljYXRpb24gb2YgdGhlIHJlYWwgcm9vdCBldmVuIGFmdGVyIGJvb3QKICAgICBta2RpciAtcCAgJHtST09UX01PVU5UfS9tZWRpYS9yZWFscm9vdAogICAgIG1vdW50IC1uIC0tbW92ZSAiL3J1bi9tZWRpYS8ke1JPT1RfRElTS30iICR7Uk9PVF9NT1VOVH0vbWVkaWEvcmVhbHJvb3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvbWRldiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvbWRldgppbmRleCBhNWRmMWQ3Li45ODE0ZDk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL21kZXYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9tZGV2CkBAIC0xLDUgKzEsNSBAQAogIyEvYmluL3NoCi0jIENvcHlyaWdodCAoQykgMjAxMSBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDE3IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgogIyBMaWNlbnNlZCBvbiBNSVQKIAogbWRldl9lbmFibGVkKCkgewpAQCAtMjUsNiArMjUsNiBAQAogCiAJIyBsb2FkIG1vZHVsZXMgZm9yIGRldmljZXMKIAlmaW5kIC9zeXMgLW5hbWUgbW9kYWxpYXMgfCB3aGlsZSByZWFkIG07IGRvCi0JCWxvYWRfa2VybmVsX21vZHVsZSAkKGNhdCAkbSkKKwkJbG9hZF9rZXJuZWxfbW9kdWxlICQoY2F0ICIkbSIpCiAJZG9uZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9zZXR1cC1saXZlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9zZXR1cC1saXZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNzlmNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3NldHVwLWxpdmUKQEAgLTAsMCArMSw2NCBAQAorIy9iaW4vc2gKKyMgQ29weXJpZ2h0IChDKSAyMDExIE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorIyBMaWNlbnNlZCBvbiBNSVQKKworc2V0dXBfZW5hYmxlZCgpIHsKKwlyZXR1cm4gMAorfQorCitzZXR1cF9ydW4oKSB7CitST09UX0lNQUdFPSJyb290ZnMuaW1nIgorSVNPTElOVVg9IiIKK1JPT1RfRElTSz0iIgorc2hlbGx0aW1lb3V0PTMwCisKKwlpZiBbIC16ICIkYm9vdHBhcmFtX3Jvb3QiIC1vICIkYm9vdHBhcmFtX3Jvb3QiID0gIi9kZXYvcmFtMCIgXTsgdGhlbgorCQllY2hvICJXYWl0aW5nIGZvciByZW1vdmFibGUgbWVkaWEuLi4iCisJCUM9MAorCQl3aGlsZSB0cnVlCisJCWRvCisJCSAgZm9yIGkgaW4gYGxzIC9ydW4vbWVkaWEgMj4vZGV2L251bGxgOyBkbworCQkgICAgICBpZiBbIC1mIC9ydW4vbWVkaWEvJGkvJFJPT1RfSU1BR0UgXSA7IHRoZW4KKwkJCQlmb3VuZD0ieWVzIgorCQkJCVJPT1RfRElTSz0iJGkiCisJCQkJYnJlYWsKKwkJCSAgZWxpZiBbIC1mIC9ydW4vbWVkaWEvJGkvaXNvbGludXgvJFJPT1RfSU1BR0UgXTsgdGhlbgorCQkJCWZvdW5kPSJ5ZXMiCisJCQkJSVNPTElOVVg9Imlzb2xpbnV4IgorCQkJCVJPT1RfRElTSz0iJGkiCisJCQkJYnJlYWsKKwkJICAgICAgZmkKKwkJICBkb25lCisJCSAgaWYgWyAiJGZvdW5kIiA9ICJ5ZXMiIF07IHRoZW4KKwkJICAgICAgYnJlYWs7CisJCSAgZmkKKwkJICAjIGRvbid0IHdhaXQgZm9yIG1vcmUgdGhhbiAkc2hlbGx0aW1lb3V0IHNlY29uZHMsIGlmIGl0J3Mgc2V0CisJCSAgaWYgWyAtbiAiJHNoZWxsdGltZW91dCIgXTsgdGhlbgorCQkgICAgICBlY2hvIC1uICIgIiAkKCggJHNoZWxsdGltZW91dCAtICRDICkpCisJCSAgICAgIGlmIFsgJEMgLWdlICRzaGVsbHRpbWVvdXQgXTsgdGhlbgorCQkgICAgICAgICAgIGVjaG8gIi4uLiIKKwkJCSAgIGVjaG8gIk1vdW50ZWQgZmlsZXN5c3RlbXMiCisJCSAgICAgICAgICAgbW91bnQgfCBncmVwIG1lZGlhCisJCSAgICAgICAgICAgZWNobyAiQXZhaWxhYmxlIGJsb2NrIGRldmljZXMiCisJCSAgICAgICAgICAgY2F0IC9wcm9jL3BhcnRpdGlvbnMKKwkJICAgICAgICAgICBmYXRhbCAiQ2Fubm90IGZpbmQgJFJPT1RfSU1BR0UgZmlsZSBpbiAvcnVuL21lZGlhLyogLCBkcm9wcGluZyB0byBhIHNoZWxsICIKKwkJICAgICAgZmkKKwkJICAgICAgQz0kKCggQyArIDEgKSkKKwkJICBmaQorCQkgIHNsZWVwIDEKKwkJZG9uZQorCQkjIFRoZSBleGlzdGluZyByb290ZnMgbW9kdWxlIGhhcyBubyBzdXBwb3J0IGZvciByb290ZnMgaW1hZ2VzLiBBc3NpZ24gdGhlIHJvb3RmcyBpbWFnZS4KKwkJYm9vdHBhcmFtX3Jvb3Q9Ii9ydW4vbWVkaWEvJFJPT1RfRElTSy8kSVNPTElOVVgvJFJPT1RfSU1BR0UiCisJZmkKKworCWlmIFsgIiRib290cGFyYW1fTEFCRUwiICE9ICJib290IiAtYSAtZiAvaW5pdC5kLyRib290cGFyYW1fTEFCRUwuc2ggXSA7IHRoZW4KKwkJaWYgWyAtZiAvcnVuL21lZGlhLyRpLyRJU09MSU5VWC8kUk9PVF9JTUFHRSBdIDsgdGhlbgorCQkgICAgLi9pbml0LmQvJGJvb3RwYXJhbV9MQUJFTC5zaCAkaS8kSVNPTElOVVggJFJPT1RfSU1BR0UgJHZpZGVvX21vZGUgJHZnYV9tb2RlICRjb25zb2xlX3BhcmFtcworCQllbHNlCisJCSAgICBmYXRhbCAiQ291bGQgbm90IGZpbmQgJGJvb3RwYXJhbV9MQUJFTCBzY3JpcHQiCisJCWZpCisKKwkJIyBJZiB3ZSdyZSBnZXR0aW5nIGhlcmUsIHdlIGZhaWxlZC4uLgorCQlmYXRhbCAiVGFyZ2V0ICRib290cGFyYW1fTEFCRUwgZmFpbGVkIgorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiCmluZGV4IDY3YTFiMDQuLjJhZmMzN2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiCkBAIC0zLDcgKzMsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiBSREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30iCiAKLVBSID0gInIyIgorUFIgPSAicjQiCiAKIGluaGVyaXQgYWxsYXJjaAogCkBAIC0xMyw3ICsxMyw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9tZGV2IFwKICAgICAgICAgICAgZmlsZTovL3VkZXYgXAogICAgICAgICAgICBmaWxlOi8vZTJmcyBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJ1ZyIKKyAgICAgICAgICAgZmlsZTovL2RlYnVnIFwKKyAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfSIKIApAQCAtNDgsNyArNDksOCBAQAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS11ZGV2IFwKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtZTJmcyBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLXJvb3RmcyBcCi0gICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWRlYnVnIgorICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1kZWJ1ZyBcCisgICAgICAgICAgICIKIAogRklMRVNfJHtQTn0tYmFzZSA9ICIvaW5pdCAvaW5pdC5kLzk5LWZpbmlzaCAvZGV2IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIKaW5kZXggMzJjMWZjZS4uMmE3Zjg0ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYgpAQCAtMjEsNCArMjEsNCBAQAogCiBGSUxFU18ke1BOfSA9ICIgL2luc3RhbGwtZWZpLnNoICIKIAotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Ni4qfHg4Nl82NC4qfGFhcmNoNjQuKiktbGludXgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCmluZGV4IDg4YjNiMzAuLmE1NTNhMGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCkBAIC0yMSw0ICsyMSw0IEBACiAKIEZJTEVTXyR7UE59ID0gIiAvaW5zdGFsbC5zaCAiCiAKLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjQpLiotbGludXgiCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODYuKnx4ODZfNjQuKnxhYXJjaDY0LiopLWxpbnV4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTdmNzZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgRUZJIGluc3RhbGxhdGlvbiBvcHRpb24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorUkRFUEVORFNfJHtQTn0gPSAiaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIHBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCIKKworUFIgPSAicjQiCisKK1NSQ19VUkkgPSAiZmlsZTovL2luaXQtaW5zdGFsbC1lZmkuc2giCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1pbnN0YWxsLWVmaS5zaCAke0R9L2luaXQuZC9pbnN0YWxsLWVmaS5zaAorfQorCitGSUxFU18ke1BOfSA9ICIvaW5pdC5kL2luc3RhbGwtZWZpLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJiNjlmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgaW5zdGFsbGF0aW9uIG9wdGlvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCitSREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkIgorCisjIFRoZSBzYW1lIHJlc3RyaWN0aW9uIGFzIGdydWIKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKiktKGxpbnV4Lip8ZnJlZWJzZC4qKScKK0NPTVBBVElCTEVfSE9TVF9hcm12N2EgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9hcm12N3ZlID0gJ251bGwnCisKK1BSID0gInIxIgorCitTUkNfVVJJID0gImZpbGU6Ly9pbml0LWluc3RhbGwuc2giCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1pbnN0YWxsLnNoICR7RH0vaW5pdC5kL2luc3RhbGwuc2gKK30KKworRklMRVNfJHtQTn0gPSAiL2luaXQuZC9pbnN0YWxsLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1zZXR1cC1saXZlXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtc2V0dXAtbGl2ZV8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQyZmU5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtc2V0dXAtbGl2ZV8xLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgbGl2ZSBib290aW5nIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK1JERVBFTkRTXyR7UE59ID0gImluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSB1ZGV2LWV4dHJhY29uZiIKKworUFIgPSAicjQiCisKK2luaGVyaXQgYWxsYXJjaAorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9pbml0cmFtZnMtZnJhbWV3b3JrOiIKK1NSQ19VUkkgPSAiZmlsZTovL3NldHVwLWxpdmUiCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2V0dXAtbGl2ZSAke0R9L2luaXQuZC84MC1zZXR1cC1saXZlCit9CisKK0ZJTEVTXyR7UE59ID0gIi9pbml0LmQvODAtc2V0dXAtbGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCmluZGV4IDIyYTcxZWMuLjM1MzE2ZWMgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9wb3B1bGF0ZS12b2xhdGlsZS5zaApAQCAtMjUsOCArMjUsMTggQEAKIFsgIiR7VkVSQk9TRX0iICE9ICJubyIgXSAmJiBlY2hvICJQb3B1bGF0aW5nIHZvbGF0aWxlIEZpbGVzeXN0ZW1zLiIKIAogY3JlYXRlX2ZpbGUoKSB7CisJRVhFQz0iIgorCVsgLXogIiQyIiBdICYmIHsKKwkJRVhFQz0iCisJCXRvdWNoIFwiJDFcIjsKKwkJIgorCX0gfHwgeworCQlFWEVDPSIKKwkJY3AgXCIkMlwiIFwiJDFcIjsKKwkJIgorCX0KIAlFWEVDPSIKLQl0b3VjaCBcIiQxXCI7CisJJHtFWEVDfQogCWNob3duICR7VFVTRVJ9LiR7VEdST1VQfSAkMSB8fCBlY2hvIFwiRmFpbGVkIHRvIHNldCBvd25lciAtJHtUVVNFUn0tIGZvciAtJDEtLlwiID4vZGV2L3R0eTAgMj4mMTsKIAljaG1vZCAke1RNT0RFfSAkMSB8fCBlY2hvIFwiRmFpbGVkIHRvIHNldCBtb2RlIC0ke1RNT0RFfS0gZm9yIC0kMS0uXCIgPi9kZXYvdHR5MCAyPiYxICIKIApAQCAtMTg3LDcgKzE5Nyw5IEBACiAKIAkJY2FzZSAiJHtUVFlQRX0iIGluCiAJCQkiZiIpICBbICIke1ZFUkJPU0V9IiAhPSAibm8iIF0gJiYgZWNobyAiQ3JlYXRpbmcgZmlsZSAtJHtUTkFNRX0tLiIKLQkJCQljcmVhdGVfZmlsZSAiJHtUTkFNRX0iCisJCQkJVFNPVVJDRT0iJFRMVEFSR0VUIgorCQkJCVsgIiR7VFNPVVJDRX0iID0gIm5vbmUiIF0gJiYgVFNPVVJDRT0iIgorCQkJCWNyZWF0ZV9maWxlICIke1ROQU1FfSIgIiR7VFNPVVJDRX0iICYKIAkJCQk7OwogCQkJImQiKSAgWyAiJHtWRVJCT1NFfSIgIT0gIm5vIiBdICYmIGVjaG8gIkNyZWF0aW5nIGRpcmVjdG9yeSAtJHtUTkFNRX0tLiIKIAkJCQlta19kaXIgIiR7VE5BTUV9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC92b2xhdGlsZXMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3ZvbGF0aWxlcwppbmRleCBiYzE3YzQ1Li4yMDExMDY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3ZvbGF0aWxlcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3ZvbGF0aWxlcwpAQCAtMjcsNyArMjcsNiBAQAogZCByb290IHJvb3QgMDc1NSAvdmFyL3ZvbGF0aWxlL2xvZyBub25lCiBkIHJvb3Qgcm9vdCAxNzc3IC92YXIvdm9sYXRpbGUvdG1wIG5vbmUKIGwgcm9vdCByb290IDE3NzcgL3Zhci9sb2NrIC9ydW4vbG9jawotbCByb290IHJvb3QgMDc1NSAvdmFyL2xvZyAvdmFyL3ZvbGF0aWxlL2xvZwogbCByb290IHJvb3QgMDc1NSAvdmFyL3J1biAvcnVuCiBsIHJvb3Qgcm9vdCAxNzc3IC92YXIvdG1wIC92YXIvdm9sYXRpbGUvdG1wCiBsIHJvb3Qgcm9vdCAxNzc3IC90bXAgL3Zhci90bXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHNfMS4wLmJiCmluZGV4IDJlNGY3ZTQuLjkxZWVhNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0c18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzXzEuMC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZmVkb3JhLXN5c3YvaW5pdHNjcmlwdHMiCiBERVNDUklQVElPTiA9ICJJbml0c2NyaXB0cyBwcm92aWRlIHRoZSBiYXNpYyBzeXN0ZW0gc3RhcnR1cCBpbml0aWFsaXphdGlvbiBzY3JpcHRzIGZvciB0aGUgc3lzdGVtLiAgVGhlc2Ugc2NyaXB0cyBpbmNsdWRlIGFjdGlvbnMgc3VjaCBhcyBmaWxlc3lzdGVtIG1vdW50aW5nLCBmc2NrLCBSVEMgbWFuaXB1bGF0aW9uIGFuZCBvdGhlciBhY3Rpb25zIHJvdXRpbmVseSBwZXJmb3JtZWQgYXQgc3lzdGVtIHN0YXJ0dXAuICBJbiBhZGRpdGlvbiwgdGhlIHNjcmlwdHMgYXJlIGFsc28gdXNlZCBkdXJpbmcgc3lzdGVtIHNodXRkb3duIHRvIHJldmVyc2UgdGhlIGFjdGlvbnMgcGVyZm9ybWVkIGF0IHN0YXJ0dXAuIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MiIKQEAgLTQyLDE5ICs0MywxOSBAQAogCiBLRVJORUxfVkVSU0lPTiA9ICIiCiAKLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwogREVQRU5EU19hcHBlbmQgPSAiIHVwZGF0ZS1yYy5kLW5hdGl2ZSIKIFBBQ0tBR0VfV1JJVEVfREVQU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZC1zeXN0ZW1jdGwtbmF0aXZlJywnJyxkKX0iCiAKLVBBQ0tBR0VTID0rICIke1BOfS1mdW5jdGlvbnMiCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1mdW5jdGlvbnMgXAotICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3NlbGludXgnLCdiYXNoJywnJyxkKX0gXAorUEFDS0FHRVMgPSsgIiR7UE59LWZ1bmN0aW9ucyAke1BOfS1zdXNoZWxsIgorUkRFUEVORFNfJHtQTn0gPSAiaW5pdGQtZnVuY3Rpb25zIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzZWxpbnV4JywnJHtQTn0tc3VzaGVsbCcsJycsZCl9IFwKIAkJICIKKyMgUmVjb21tZW5kIHBuLWZ1bmN0aW9ucyBzbyB0aGF0IGl0IHdpbGwgYmUgYSBwcmVmZXJyZWQgZGVmYXVsdCBwcm92aWRlciBmb3IgaW5pdGQtZnVuY3Rpb25zCitSUkVDT01NRU5EU18ke1BOfSA9ICIke1BOfS1mdW5jdGlvbnMiCitSUFJPVklERVNfJHtQTn0tZnVuY3Rpb25zID0gImluaXRkLWZ1bmN0aW9ucyIKK1JDT05GTElDVFNfJHtQTn0tZnVuY3Rpb25zID0gImxzYmluaXRzY3JpcHRzIgogRklMRVNfJHtQTn0tZnVuY3Rpb25zID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucyoiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LWZ1bmN0aW9ucyA9ICI5MCIKLUFMVEVSTkFUSVZFXyR7UE59LWZ1bmN0aW9ucyA9ICJmdW5jdGlvbnMiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZnVuY3Rpb25zXSA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMiCitGSUxFU18ke1BOfS1zdXNoZWxsID0gIiR7YmFzZV9zYmluZGlyfS9zdXNoZWxsIgogCiBIQUxUQVJHUyA/PSAiLWQgLWYiCiAKQEAgLTEwMiw2ICsxMDMsOSBAQAogCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L3JlYWQtb25seS1yb290ZnMtaG9vay5zaCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKIAlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9zYXZlLXJ0Yy5zaAkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKIAlpbnN0YWxsIC1tIDA2NDQgICAgJHtXT1JLRElSfS92b2xhdGlsZXMJCSR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAwX2NvcmUKKwlpZiBbICR7QCBvZS50eXBlcy5ib29sZWFuKCcke1ZPTEFUSUxFX0xPR19ESVJ9JykgfSA9IFRydWUgXTsgdGhlbgorCQllY2hvICJsIHJvb3Qgcm9vdCAwNzU1IC92YXIvbG9nIC92YXIvdm9sYXRpbGUvbG9nIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wMF9jb3JlCisJZmkKIAlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9kbWVzZy5zaAkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCiAJaW5zdGFsbCAtbSAwNjQ0ICAgICR7V09SS0RJUn0vbG9ncm90YXRlLWRtZXNnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vCiAKQEAgLTEzNCw3ICsxMzgsNyBAQAogCXVwZGF0ZS1yYy5kIC1yICR7RH0gbW91bnRhbGwuc2ggc3RhcnQgMDMgUyAuCiAJdXBkYXRlLXJjLmQgLXIgJHtEfSBob3N0bmFtZS5zaCBzdGFydCAzOSBTIC4KIAl1cGRhdGUtcmMuZCAtciAke0R9IG1vdW50bmZzLnNoIHN0YXJ0IDE1IDIgMyA0IDUgLgotCXVwZGF0ZS1yYy5kIC1yICR7RH0gYm9vdG1pc2Muc2ggc3RhcnQgNTUgUyAuCisJdXBkYXRlLXJjLmQgLXIgJHtEfSBib290bWlzYy5zaCBzdGFydCAzNiBTIC4KIAl1cGRhdGUtcmMuZCAtciAke0R9IHN5c2ZzLnNoIHN0YXJ0IDAyIFMgLgogCXVwZGF0ZS1yYy5kIC1yICR7RH0gcG9wdWxhdGUtdm9sYXRpbGUuc2ggc3RhcnQgMzcgUyAuCiAJdXBkYXRlLXJjLmQgLXIgJHtEfSByZWFkLW9ubHktcm9vdGZzLWhvb2suc2ggc3RhcnQgMjkgUyAuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCmluZGV4IDY1MzI1YzAuLjQyM2I0N2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJLZXl0YWJsZSBmaWxlcyBhbmQga2V5Ym9hcmQgdXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rYmQtcHJvamVjdC5vcmcvIgogIyBldmVyeXRoaW5nIG1pbnVzIGNvbnNvbGUtZm9udHMgaXMgR1BMdjIrCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE1ZmNjMzYxMjFkOTNlMWY2OWQ5NmEzMTMwNzhjOGI1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJjZ3JvdXAvbGliY2dyb3VwXzAuNDEuYmIKaW5kZXggOTU5Nzk2My4uZTRiMTc4MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGliY2dyb3VwL2xpYmNncm91cF8wLjQxLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJMaW51eCBjb250cm9sIGdyb3VwIGFic3RyYWN0aW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vbGliY2cuc291cmNlZm9yZ2UubmV0LyIKIERFU0NSSVBUSU9OID0gImxpYmNncm91cCBpcyBhIGxpYnJhcnkgdGhhdCBhYnN0cmFjdHMgdGhlIGNvbnRyb2wgZ3JvdXAgZmlsZSBzeXN0ZW0gXAogaW4gTGludXguIENvbnRyb2wgZ3JvdXBzIGFsbG93IHlvdSB0byBsaW1pdCwgYWNjb3VudCBhbmQgaXNvbGF0ZSByZXNvdXJjZSB1c2FnZSBcCiAoQ1BVLCBtZW1vcnksIGRpc2sgSS9PLCBldGMuKSBvZiBncm91cHMgb2YgcHJvY2Vzc2VzLiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNi00NjU4LnBhdGNoCmluZGV4IDU0MTJlOGMuLmJiNTVlZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNDY1OC5wYXRjaApAQCAtOCw3ICs4LDcgQEAKIEJ1dCB0aGV5IGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgYSBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiBpbiBhCiBkb2N1bWVudCwgc28gc2ltcGx5IGRpc2FsbG93IHRoZW0gaW4gWFBvaW50ZXIgcmFuZ2VzLgogCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQgCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiAgLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9YzFkMWY3MTIxMTk0MDM2NjA4YmY1NTVmMDhkMzA2MmEzNmZkMzQ0Yl0KICAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD0zZjhhOTEwMzZkMzM4ZTUxYzA1OWQ1NDM5N2E0MmQ2NDVmMDE5YzY1XQogQ1ZFOiBDVkUtMjAxNi00NjU4CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfTlVMTF9wb2ludGVyX2RlcmVmcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCmluZGV4IDgzNTUyY2EuLmM2MGUzMmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCkBAIC0yLDggKzIsNyBAQAogCiB4cG9pbnRlcjogRml4IG1vcmUgTlVMTCBwb2ludGVyIGRlcmVmcwogCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQgW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWU5MDVmMDgxMjNlNGE2ZTc3MzE1NDllNmYwOWRhZGZmNGNhYjY1YmRdCi1DVkU6IC0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWU5MDVmMDgxMjNlNGE2ZTc3MzE1NDllNmYwOWRhZGZmNGNhYjY1YmRdCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9ub2RlX2NvbXBhcmlzb24ucGF0Y2gKaW5kZXggMTE3MThiYi4uNjVmNmJlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfbm9kZV9jb21wYXJpc29uLnBhdGNoCkBAIC01LDEwICs1LDEwIEBACiAgLSBBZGQgc2FuaXR5IGNoZWNrIGZvciBlbXB0eSBzdGFjay4KICAtIEluY2x1ZGUgY29tcGFyYXRpb24gaW4gY2hhbmdlcyBmcm9tIHhtbFhQYXRoQ21wTm9kZXNFeHQgdG8geG1sWFBhdGhDbXBOb2RlcwogCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKICAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1jMWQxZjcxMjExOTQwMzY2MDhiZjU1NWYwOGQzMDYyYTM2ZmQzNDRiXQogIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWEwMDUxOTkzMzBiODZkYWRhMTlkMTYyY2FlMTVlZjliZGNiNmJhYThdCi1DVkU6IG5lY2Vzc2FyeSBjaGFuZ2VzIGZvciBmaXhpbmcgQ1ZFLTIwMTYtNTEzMQorQ1ZFOiBDVkUtMjAxNi01MTMxCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW4tcHRlc3QKaW5kZXggNDczZDBiNi4uYzMxM2Q4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bi1wdGVzdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsNCBAQAogIyEvYmluL3NoCiAKK2V4cG9ydCBMQ19BTEw9ZW5fVVMuVVRGLTgKIG1ha2UgLWsgcnVudGVzdHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNC5iYgppbmRleCAxMDc1MzliLi45YWRiMjljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS40LmJiCkBAIC0xMSw3ICsxMSw3IEBACiAKIERFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmljb252IgogCi1TUkNfVVJJID0gImZ0cDovL3htbHNvZnQub3JnL2xpYnhtbDIvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAogICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtuYW1lPXRlc3R0YXIgXAogICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2Fuc2lkZWNsLnBhdGNoIFwKQEAgLTUzLDExICs1MywxMSBAQAogCiBSREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgogCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIGdsaWJjLWdjb252LWlibTExNDEiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIGdsaWJjLWdjb252LWlibTExNDEgZ2xpYmMtZ2NvbnYtaXNvODg1OS01IgogCiBleHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgogCi0jIFdBUk5JTkc6IHpsaWIgaXMgcmVxdWlyZSBmb3IgUlBNIHVzZQorIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmVkIGZvciBSUE0gdXNlCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1sZWdhY3kgLS13aXRoLWNhdGFsb2cgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLWZleGNlcHRpb25zIgogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgpAQCAtODksNiArODksMTcgQEAKIAkJZ3JlcCAtbHJaICcjIS91c3IvYmluL3B5dGhvbicgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uIHwKIAkJCXhhcmdzIC0wIHNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JwogCWZpCisJI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIE1ha2VmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgICAgc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eUkVMREFURS9kJyBcCisJICAgIHt9ICsKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgppbmRleCBhYmRjN2ZlLi5iZTM3YzQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCkBAIC00Niw4ICs0Niw2IEBACiBpbmhlcml0IG5vcGFja2FnZXMKIAogZGVsdGFzayBpbnN0YWxsCi1kZWx0YXNrIHBhY2thZ2UKLWRlbHRhc2sgcGFja2FnZWRhdGEKIGRlbHRhc2sgcG9wdWxhdGVfc3lzcm9vdAogCiBkb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtQQUNLQUdFX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1nby10b29sY2hhaW4uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWdvLXRvb2xjaGFpbi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGUzODVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1nby10b29sY2hhaW4uYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJNZXRhIHBhY2thZ2UgZm9yIGJ1aWxkaW5nIGEgaW5zdGFsbGFibGUgR28gdG9vbGNoYWluIgorTElDRU5TRSA9ICJNSVQiCisKK2luaGVyaXQgcG9wdWxhdGVfc2RrCisKK1RPT0xDSEFJTl9IT1NUX1RBU0tfYXBwZW5kID0gIiBcCisgICAgcGFja2FnZWdyb3VwLWdvLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0gXAorIgorCitUT09MQ0hBSU5fVEFSR0VUX1RBU0tfYXBwZW5kID0gIiBcCisgICAgJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAncGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQnKX0gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIKaW5kZXggZmUwMjJmZi4uYTQxMjNiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9wYWNrYWdlLWluZGV4LmJiCkBAIC00LDE3ICs0LDE0IEBACiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogUEFDS0FHRVMgPSAiIgogCitpbmhlcml0IG5vcGFja2FnZXMKKwogZGVsdGFzayBkb19mZXRjaAogZGVsdGFzayBkb191bnBhY2sKIGRlbHRhc2sgZG9fcGF0Y2gKIGRlbHRhc2sgZG9fY29uZmlndXJlCiBkZWx0YXNrIGRvX2NvbXBpbGUKIGRlbHRhc2sgZG9faW5zdGFsbAotZGVsdGFzayBkb19wYWNrYWdlCi1kZWx0YXNrIGRvX3BhY2thZ2VkYXRhCi1kZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfaXBrCi1kZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfcnBtCi1kZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfZGViCiBkZWx0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3QKIAogZG9fcGFja2FnZV9pbmRleFtub3N0YW1wXSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiCmluZGV4IGFhYTAxZDAuLjJjMWNjMzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3NpZ25pbmcta2V5cy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIKQEAgLTQ0LDI1ICs0NCwyNSBAQAogCiBkb19pbnN0YWxsICgpIHsKICAgICBpZiBbIC1mICIke0J9L3JwbS1rZXkiIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3JwbS1rZXkiICIke0R9JHtzeXNjb25mZGlyfS9wa2kvcnBtLWdwZy9SUE0tR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3JwbS1rZXkiICIke0R9JHtzeXNjb25mZGlyfS9wa2kvcnBtLWdwZy9SUE0tR1BHLUtFWS0ke0RJU1RST30tJHtESVNUUk9fQ09ERU5BTUV9IgogICAgIGZpCiAgICAgaWYgWyAtZiAiJHtCfS9pcGsta2V5IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9pcGsta2V5IiAiJHtEfSR7c3lzY29uZmRpcn0vcGtpL2lway1ncGcvSVBLLUdQRy1LRVktJHtESVNUUk9fVkVSU0lPTn0iCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9pcGsta2V5IiAiJHtEfSR7c3lzY29uZmRpcn0vcGtpL2lway1ncGcvSVBLLUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogICAgIGlmIFsgLWYgIiR7Qn0vcGYta2V5IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9wZi1rZXkiICIke0R9JHtzeXNjb25mZGlyfS9wa2kvcGFja2FnZWZlZWQtZ3BnL1BBQ0tBR0VGRUVELUdQRy1LRVktJHtESVNUUk9fVkVSU0lPTn0iCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9wZi1rZXkiICIke0R9JHtzeXNjb25mZGlyfS9wa2kvcGFja2FnZWZlZWQtZ3BnL1BBQ0tBR0VGRUVELUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogfQogCiBkb19kZXBsb3kgKCkgewogICAgIGlmIFsgLWYgIiR7Qn0vcnBtLWtleSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vcnBtLWtleSIgIiR7REVQTE9ZRElSfS9SUE0tR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3JwbS1rZXkiICIke0RFUExPWURJUn0vUlBNLUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogICAgIGlmIFsgLWYgIiR7Qn0vaXBrLWtleSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vaXBrLWtleSIgIiR7REVQTE9ZRElSfS9JUEstR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L2lway1rZXkiICIke0RFUExPWURJUn0vSVBLLUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogICAgIGlmIFsgLWYgIiR7Qn0vcGYta2V5IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9wZi1rZXkiICIke0RFUExPWURJUn0vUEFDS0FHRUZFRUQtR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3BmLWtleSIgIiR7REVQTE9ZRElSfS9QQUNLQUdFRkVFRC1HUEctS0VZLSR7RElTVFJPfS0ke0RJU1RST19DT0RFTkFNRX0iCiAgICAgZmkKIH0KIGRvX2RlcGxveVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtERVBMT1lfRElSX1JQTX0iCkBAIC03MSwzICs3MSwxMSBAQAogIyBjbGVhciBzdGFtcC1leHRyYS1pbmZvIHNpbmNlIE1BQ0hJTkUgaXMgbm9ybWFsbHkgcHV0IHRoZXJlIGJ5IGRlcGxveS5iYmNsYXNzCiBkb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9fZ2V0X3B1YmxpY19rZXlzCisKKyMgRGVsZXRlIHVubmVjZXNzYXJ5IHRhc2tzLiBJbiBwYXJ0aWN1bGFyLCAiZG9fdW5wYWNrIiBfbXVzdF8gYmUgZGVsZXRlZCBiZWNhdXNlCisjIGl0IGNsZWFucyAke0J9IGFuZCB3aWxsIHdpcGUgYW55IGtleXMgZXhwb3J0ZWQgYnkgZG9fZ2V0X3B1YmxpY19rZXlzLgorZGVsdGFzayBkb19mZXRjaAorZGVsdGFzayBkb191bnBhY2sKK2RlbHRhc2sgZG9fcGF0Y2gKK2RlbHRhc2sgZG9fY29uZmlndXJlCitkZWx0YXNrIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKaW5kZXggZjNmYzFlYi4uNWZhYmY3ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKQEAgLTM0LDggKzM0LDYgQEAKIGluaGVyaXQgbm9wYWNrYWdlcwogCiBkZWx0YXNrIGluc3RhbGwKLWRlbHRhc2sgcGFja2FnZQotZGVsdGFzayBwYWNrYWdlZGF0YQogZGVsdGFzayBwb3B1bGF0ZV9zeXNyb290CiAKIGRvX3BvcHVsYXRlX3Nka1tzdGFtcC1leHRyYS1pbmZvXSA9ICIke1BBQ0tBR0VfQVJDSH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIKaW5kZXggY2Q0OTRlYy4uMDllYjQwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYgpAQCAtNSwxMiArNSwxNSBAQAogREVQRU5EUyA9ICJcCiAgICAgICAgICAgIHBhcnRlZC1uYXRpdmUgc3lzbGludXgtbmF0aXZlIGdwdGZkaXNrLW5hdGl2ZSBkb3Nmc3Rvb2xzLW5hdGl2ZSBcCiAgICAgICAgICAgIG10b29scy1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUgZ3J1Yi1lZmktbmF0aXZlIGNkcnRvb2xzLW5hdGl2ZSBcCi0gICAgICAgICAgIGJ0cmZzLXRvb2xzLW5hdGl2ZSBzcXVhc2hmcy10b29scy1uYXRpdmUgXAorICAgICAgICAgICBidHJmcy10b29scy1uYXRpdmUgc3F1YXNoZnMtdG9vbHMtbmF0aXZlIHBzZXVkby1uYXRpdmUgXAorICAgICAgICAgICBlMmZzcHJvZ3MtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIFwKICAgICAgICAgICAgIgogREVQRU5EU19hcHBlbmRfeDg2ID0gIiBzeXNsaW51eCBncnViLWVmaSBzeXN0ZW1kLWJvb3QiCiBERVBFTkRTX2FwcGVuZF94ODYtNjQgPSAiIHN5c2xpbnV4IGdydWItZWZpIHN5c3RlbWQtYm9vdCIKK0RFUEVORFNfYXBwZW5kX3g4Ni14MzIgPSAiIHN5c2xpbnV4IGdydWItZWZpIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCiBpbmhlcml0IG5vcGFja2FnZXMKIAogIyBUaGUgc3lzcm9vdCBvZiB3aWMtdG9vbHMgaXMgbmVlZGVkIGZvciB3aWMsIGJ1dCBpZiBybV93b3JrIGlzIGVuYWJsZWQsIGl0IHdpbGwKQEAgLTE5LDE0ICsyMiw1IEBACiAKIHB5dGhvbiBkb19idWlsZF9zeXNyb290ICgpIHsKICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIsIGQpCi0KLSAgICAjIFdyaXRlIGVudmlyb25tZW50IHZhcmlhYmxlcyB1c2VkIGJ5IHdpYwotICAgICMgdG8gdG1wL3N5c3Jvb3RzLzxtYWNoaW5lPi9pbWdkYXRhL3dpY3Rvb2xzLmVudgotICAgIG91dGRpciA9IG9zLnBhdGguam9pbihkLmdldFZhcignU1RBR0lOR19ESVInKSwgZC5nZXRWYXIoJ01BQ0hJTkUnKSwgJ2ltZ2RhdGEnKQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihvdXRkaXIpCi0gICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihvdXRkaXIsICJ3aWMtdG9vbHMuZW52IiksICd3JykgYXMgZW52ZjoKLSAgICAgICAgZm9yIHZhciBpbiAoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICdTVEFHSU5HX0RBVEFESVInLCAnU1RBR0lOR19MSUJESVInKToKLSAgICAgICAgICAgIGVudmYud3JpdGUoJyVzPSIlcyJcbicgJSAodmFyLCBkLmdldFZhcih2YXIpLnN0cmlwKCkpKQotCiB9CiBhZGR0YXNrIGRvX2J1aWxkX3N5c3Jvb3QgYWZ0ZXIgZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCBiZWZvcmUgZG9fYnVpbGQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKaW5kZXggNTZjOWQ3Zi4uOWFmMTE3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKQEAgLTI2LDMgKzI2LDggQEAKICMgRG9lc24ndCBjb21waWxlIGluIE1JUFMxNmUgbW9kZSBkdWUgdG8gdXNlIG9mIGhhbmQtd3JpdHRlbgogIyBhc3NlbWJseQogTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKKworIyB0aHVtYjEgaXMgdW5zdXBwb3J0ZWQKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKaW5kZXggYTg4YmM0ZC4uZGIyNmI0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKQEAgLTMsOSArMyw5IEBACiAKIHJlcXVpcmUgbXVzbC5pbmMKIAotU1JDUkVWID0gIjU0ODA3ZDQ3YWNlY2FiNzc4NDk4Y2VkODhjZThmNjJiZmExNmUzNzkiCitTUkNSRVYgPSAiZWIwM2JkZTJmMjQ1ODI4NzRjYjcyYjU2Yzc4MTFiZjUxZGEwYzgxNyIKIAotUFYgPSAiMS4xLjE2K2dpdCR7U1JDUFZ9IgorUFYgPSAiMS4xLjE4K2dpdCR7U1JDUFZ9IgogCiAjIG1pcnJvciBpcyBhdCBnaXQ6Ly9naXRodWIuY29tL2tyYWovbXVzbC5naXQKIApAQCAtMjgsNiArMjgsMTQgQEAKIAogTERGTEFHUyArPSAiLVdsLC1zb25hbWUsbGliYy5zbyIKIAorIyBXaGVuIGNvbXBpbGluZyBmb3IgVGh1bWIgb3IgVGh1bWIyLCBmcmFtZSBwb2ludGVycyBfbXVzdF8gYmUgZGlzYWJsZWQgc2luY2UgdGhlCisjIFRodW1iIGZyYW1lIHBvaW50ZXIgaW4gcjcgY2xhc2hlcyB3aXRoIG11c2wncyB1c2Ugb2YgaW5saW5lIGFzbSB0byBtYWtlIHN5c2NhbGxzCisjICh3aGVyZSByNyBpcyB1c2VkIGZvciB0aGUgc3lzY2FsbCBOUikuIEluIG1vc3QgY2FzZXMsIGZyYW1lIHBvaW50ZXJzIHdpbGwgYmUKKyMgZGlzYWJsZWQgYXV0b21hdGljYWxseSBkdWUgdG8gdGhlIG9wdGltaXNhdGlvbiBsZXZlbCwgYnV0IGFwcGVuZCBhbiBleHBsaWNpdAorIyAtZm9taXQtZnJhbWUtcG9pbnRlciB0byBoYW5kbGUgY2FzZXMgd2hlcmUgb3B0aW1pc2F0aW9uIGlzIHNldCB0byAtTzAgb3IgZnJhbWUKKyMgcG9pbnRlcnMgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgZWFybGllciBpbiBDRkxBR1MsIGV0Yy4KK0NGTEFHU19hcHBlbmRfYXJtID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1MnLCAnLW10aHVtYicsICctZm9taXQtZnJhbWUtcG9pbnRlcicsICcnLCBkKX0iCisKIENPTkZJR1VSRU9QVFMgPSAiIFwKICAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAogICAgIC0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0gXApAQCAtNDksMTAgKzU3LDExIEBACiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JyR7RH0nCiAKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlybSAtZiAke0R9JHtiaW5kaXJ9L2xkZAogCWxuciAke0R9JHtsaWJkaXJ9L2xpYmMuc28gJHtEfSR7YmluZGlyfS9sZGQKIAlmb3IgbCBpbiBjcnlwdCBkbCBtIHB0aHJlYWQgcmVzb2x2IHJ0IHV0aWwgeG5ldAogCWRvCi0JCWxuIC1zIGxpYmMuc28gJHtEfSR7bGliZGlyfS9saWIkbC5zbworCQlsbiAtc2YgbGliYy5zbyAke0R9JHtsaWJkaXJ9L2xpYiRsLnNvCiAJZG9uZQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLXRpYy1oYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTk3MDU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGE5NTU5MGY2NzYyMDk4MzJmZTBiMjcyMjZlNmRlM2NiNTBlMmI5N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDE0OjMxOjUxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSB0aWMgaGFuZworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCisKKyd0aWMnIG9mIHNvbWUgbGludXggZGlzdHJpYnV0aW9ucyAoZS5nLiBmZWRvcmEgMTEpIGhhbmcgaW4gYW4gaW5maW5pdGUKK2xvb3Agd2hlbiBwcm9jZXNzaW5nIHRoZSBvcmlnaW5hbCBmaWxlLgorCitTaWduZWQtb2ZmLWJ5OiBhbm9ueW1vdXMKKworUmViYXNlIHRvIDYuMCsyMDE3MDcxNQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbWlzYy90ZXJtaW5mby5zcmMgfCAxMSArKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9taXNjL3Rlcm1pbmZvLnNyYyBiL21pc2MvdGVybWluZm8uc3JjCitpbmRleCBlZTNmYWIzLi4xNzZkNTkzIDEwMDY0NAorLS0tIGEvbWlzYy90ZXJtaW5mby5zcmMKKysrKyBiL21pc2MvdGVybWluZm8uc3JjCitAQCAtNTE3NywxMiArNTE3NywxMSBAQCBrb25zb2xlLXhmM3h8S0RFIGNvbnNvbGUgd2luZG93IHdpdGgga2V5Ym9hcmQgZm9yIFhGcmVlODYgMy54IHh0ZXJtLAorICMgVGhlIHZhbHVlIGZvciBrYnMgcmVmbGVjdHMgbG9jYWwgY3VzdG9taXphdGlvbiByYXRoZXIgdGhhbiB0aGUgc2V0dGluZ3MgdXNlZAorICMgZm9yIFhGcmVlODYgeHRlcm0uCisga29uc29sZS14ZjR4fEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIGtleWJvYXJkIGZvciBYRnJlZTg2IDQueCB4dGVybSwKKy0Ja2VuZD1cRU9GLCBraG9tZT1cRU9ILCB1c2U9a29uc29sZStwY2ZrZXlzLAorLQl1c2U9a29uc29sZS12dDEwMCwKKy0jIEtvbnNvbGUgZG9lcyBub3QgaW1wbGVtZW50IHNoaWZ0ZWQgY3Vyc29yLWtleXMuCista29uc29sZStwY2ZrZXlzfGtvbnNvbGUgc3Vic2V0IG9mIHh0ZXJtK3BjZmtleXMsCistCWtMRlRALCBrUklUQCwga2NidD1cRVtaLCBraW5kQCwga3JpQCwga0ROQCwga1VQQCwgdXNlPXh0ZXJtK3BjYzIsCistCXVzZT14dGVybStwY2YwLAorKwlrZW5kPVxFT0YsIGtmMT1cRU9QLCBrZjEzPVxFTzJQLCBrZjE0PVxFTzJRLCBrZjE1PVxFTzJSLAorKwlrZjE2PVxFTzJTLCBrZjE3PVxFWzE1OzJ+LCBrZjE4PVxFWzE3OzJ+LCBrZjE5PVxFWzE4OzJ+LAorKwlrZjI9XEVPUSwga2YyMD1cRVsxOTsyfiwga2YyMT1cRVsyMDsyfiwga2YyMj1cRVsyMTsyfiwKKysJa2YyMz1cRVsyMzsyfiwga2YyND1cRVsyNDsyfiwga2YzPVxFT1IsIGtmND1cRU9TLAorKwlraG9tZT1cRU9ILCB1c2U9a29uc29sZS12dDEwMCwKKyAjIEtERSdzICJ2dDEwMCIga2V5Ym9hcmQgaGFzIG5vIHJlbGF0aW9uc2hpcCB0byBhbnkgdGVybWluYWwgdGhhdCBERUMgbWFkZSwgYnV0CisgIyBpdCBpcyBzdGlsbCB1c2VmdWwgZm9yIGRlcml2aW5nIHRoZSBvdGhlciBlbnRyaWVzLgorIGtvbnNvbGUtdnQxMDB8S0RFIGNvbnNvbGUgd2luZG93IHdpdGggdnQxMDAgKHNpYykga2V5Ym9hcmQsCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0N2NlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA5MzljOTk0ZjM3NTZjMmQ2ZDNjYWIyZTZhMDRkMDVmYTdjMmIxZDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxNDo0NToyNyArMDgwMAorU3ViamVjdDogW1BBVENIIDIvMl0gY29uZmlndXJlOiByZXByb2R1Y2libGUKKworImNvbmZpZ3VyZSIgZW5mb3JjZXMgLVUgZm9yIGFyIGZsYWdzLCBicmVha2luZyBkZXRlcm1pbmlzdGljIGJ1aWxkcy4KK1RoZSBmbGFnIHdhcyBhZGRlZCB0byBmaXggc29tZSB2YWd1ZWx5IHNwZWNpZmllZCAicmVjZW50IFBPU0lYIGJpbnV0aWwKK2J1aWxkIHByb2JsZW1zIiBpbiAyMDE1LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CisKK1JlYmFzZSB0byBSZWJhc2UgdG8gNi4wKzIwMTcwNzE1CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggN2Q3ZDJjMS4uZjQ0NDM1NCAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNDQ1OCw3ICs0NDU4LDcgQEAgaWYgdGVzdCAiJHtjZl9jdl9hcl9mbGFncytzZXR9IiA9IHNldDsgdGhlbgorIGVsc2UKKyAKKyAJY2ZfY3ZfYXJfZmxhZ3M9dW5rbm93bgorLQlmb3IgY2ZfYXJfZmxhZ3MgaW4gLWN1cnZVIC1jdXJ2IGN1cnYgLWNydiBjcnYgLWNxdiBjcXYgLXJ2IHJ2CisrCWZvciBjZl9hcl9mbGFncyBpbiAtY3VydiBjdXJ2IC1jcnYgY3J2IC1jcXYgY3F2IC1ydiBydgorIAlkbworIAorIAkJIyBjaGVjayBpZiAkQVJGTEFHUyBhbHJlYWR5IGNvbnRhaW5zIHRoaXMgY2hvaWNlCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9DVkUtMjAxNy0xMzczMi1DVkUtMjAxNy0xMzczNC1DVkUtMjAxNy0xMzczMC1DVkUtMjAxNy0xMzcyOS1DVkUtMjAxNy0xMzcyOC1DVkUtMjAxNy0xMzczMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTkzMzJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2gKQEAgLTAsMCArMSw1NDEgQEAKK0Zyb20gNGJmNzJjYjhmMWQzYWE1ZjMzYzMxZWI4MTdhNWYwMzM4ZjRhYWY2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjAgU2VwIDIwMTcgMDU6MDI6MDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gSW1wb3J0IHVwc3RyZWFtIHBhdGNoIDIwMTcwODI2CisKKzIwMTcwODI2CisJKyBmaXhlcyBmb3IgIml0ZXJtMiIgKHJlcG9ydCBieSBMZW9uYXJkbyBCcm9uZGFuaSBTY2hlbmtlbCkgLVRECisJKyBjb3JyZWN0ZWQgYSB3YXJuaW5nIGZyb20gdGljIGFib3V0IGtleXMgd2hpY2ggYXJlIHRoZSBzYW1lLCB0byBza2lwCisJICBvdmVyIG1pc3NpbmcvY2FuY2VsbGVkIHZhbHVlcy4KKwkrIGFkZCBjaGVjayBpbiB0aWMgZm9yIHVubmVjZXNzYXJ5IHVzZSBvZiAiMiIgdG8gZGVub3RlIGEgc2hpZnRlZAorCSAgc3BlY2lhbCBrZXkuCisJKyBpbXByb3ZlIGNoZWNrcyBpbiB0cmltX3NncjAsIGNvbXBfcGFyc2UuYyBhbmQgcGFyc2VfZW50cnkuYywgZm9yCisJICBjYW5jZWxsZWQgc3RyaW5nIGNhcGFiaWxpdGllcy4KKwkrIGFkZCBjaGVjayBpbiBfbmNfcGFyc2VfZW50cnkoKSBmb3IgaW52YWxpZCBlbnRyeSBuYW1lLCBzZXR0aW5nIHRoZQorCSAgbmFtZSB0byAiaW52YWxpZCIgdG8gYXZvaWQgcHJvYmxlbXMgc3RvcmluZyBlbnRyaWVzLgorCSsgYWRkL2ltcHJvdmUgY2hlY2tzIGluIHRpYydzIHBhcnNlciB0byBhZGRyZXNzIGludmFsaWQgaW5wdXQKKwkgICsgYWRkIGEgY2hlY2sgaW4gY29tcF9zY2FuLmMgdG8gaGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYQorCSAgICBub250ZXh0IGZpbGUgZW5kaW5nIHdpdGggYSBOVUwgcmF0aGVyIHRoYW4gbmV3bGluZSBpcyBnaXZlbiB0byB0aWMKKwkgICAgYXMgaW5wdXQgKFJlZGhhdCAjMTQ4NDI3NCkuCisJICArIGFsbG93IGZvciBjYW5jZWxsZWQgY2FwYWJpbGl0aWVzIGluIF9uY19zYXZlX3N0ciAoUmVkaGF0ICMxNDg0Mjc2KS4KKwkgICsgYWRkIHZhbGlkaXR5IGNoZWNrcyBmb3IgInVzZT0iIHRhcmdldCBpbiBfbmNfcGFyc2VfZW50cnkgKFJlZGhhdAorCSAgICAjMTQ4NDI4NCkuCisJICArIGNoZWNrIGZvciBpbnZhbGlkIHN0cmluZ3MgaW4gcG9zdHByb2Nlc3NfdGVybWNhcCAoUmVkaGF0ICMxNDg0Mjg1KQorCSAgKyByZXNldCBzZWNvbmRhcnkgcG9pbnRlcnMgb24gRU9GIGluIG5leHRfY2hhcigpIChSZWRoYXQgIzE0ODQyODcpLgorCSAgKyBndWFyZCBfbmNfc2FmZV9zdHJjcHkoKSBhbmQgX25jX3NhZmVfc3RyY2F0KCkgYWdhaW5zdCBjYWxscyB1c2luZworCSAgICBjYW5jZWxsZWQgc3RyaW5ncyAoUmVkaGF0ICMxNDg0MjkxKS4KKwkrIGNvcnJlY3QgdHlwbyBpbiBjdXJzX21lbWxlYWtzLjN4IChTdmVuIEpvYWNoaW0pLgorCSsgaW1wcm92ZSB0ZXN0L2NvbmZpZ3VyZSBjaGVja3MgZm9yIHNvbWUgY3Vyc2VzIHZhcmlhbnRzIG5vdCBiYXNlZCBvbgorCSAgWC9PcGVuIEN1cnNlcy4KKwkrIGFkZCBvcHRpb25zIGZvciB0ZXN0L2NvbmZpZ3VyZSB0byBkaXNhYmxlIGNoZWNrcyBmb3IgZm9ybSwgbWVudSBhbmQKKwkgIHBhbmVsIGxpYnJhcmllcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xMzczMiwgQ1ZFLTIwMTctMTM3MzQsIENWRS0yMDE3LTEzNzMwLCBDVkUtMjAxNy0xMzcyOSwgQ1ZFLTIwMTctMTM3MjgsIENWRS0yMDE3LTEzNzMxCisgCisKK0F1dGhvcjogU3ZlbiBKb2FjaGltIDxzdmVuam9hY0BnbXguZGU+CitTaWduZWQtb2ZmLWJ5OiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CistLS0KKyBkaXN0Lm1rICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQorIGluY2x1ZGUvbmN1cnNlc19kZWZzICAgICAgICB8ICA0ICstCisgbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jIHwgIDQgKy0KKyBuY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYyAgfCAxMCArKy0tLQorIG5jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMgICB8ICA2ICsrLQorIG5jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYyB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIG5jdXJzZXMvdGluZm8vc3RyaW5ncy5jICAgICB8ICA5ICsrKy0tCisgbmN1cnNlcy90aW5mby90cmltX3NncjAuYyAgIHwgIDQgKy0KKyBwcm9ncy90aWMuYyAgICAgICAgICAgICAgICAgfCA3NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgOSBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaXN0Lm1rIGIvZGlzdC5taworaW5kZXggOWFmMjY5OS4uMmM3MDQ3MiAxMDA2NDQKKy0tLSBhL2Rpc3QubWsKKysrKyBiL2Rpc3QubWsKK0BAIC0yNSw3ICsyNSw3IEBACisgIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisgIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCistIyAkSWQ6IGRpc3QubWssdiAxLjExNzIgMjAxNy8wNy8xMyAwMDoxNToyNyB0b20gRXhwICQKKysjICRJZDogZGlzdC5tayx2IDEuMTE3OSAyMDE3LzA4LzIwIDE1OjMzOjQxIHRvbSBFeHAgJAorICMgTWFrZWZpbGUgZm9yIGNyZWF0aW5nIG5jdXJzZXMgZGlzdHJpYnV0aW9ucy4KKyAjCisgIyBUaGlzIG9ubHkgbmVlZHMgdG8gYmUgdXNlZCBkaXJlY3RseSBhcyBhIG1ha2VmaWxlIGJ5IGRldmVsb3BlcnMsIGJ1dAorQEAgLTM3LDcgKzM3LDcgQEAgU0hFTEwgPSAvYmluL3NoCisgIyBUaGVzZSBkZWZpbmUgdGhlIG1ham9yL21pbm9yL3BhdGNoIHZlcnNpb25zIG9mIG5jdXJzZXMuCisgTkNVUlNFU19NQUpPUiA9IDYKKyBOQ1VSU0VTX01JTk9SID0gMAorLU5DVVJTRVNfUEFUQ0ggPSAyMDE3MDcxNQorK05DVVJTRVNfUEFUQ0ggPSAyMDE3MDgyNgorIAorICMgV2UgZG9uJ3QgYXBwZW5kIHRoZSBwYXRjaCB0byB0aGUgdmVyc2lvbiwgc2luY2UgdGhpcyBvbmx5IGFwcGxpZXMgdG8gcmVsZWFzZXMKKyBWRVJTSU9OID0gJChOQ1VSU0VTX01BSk9SKS4kKE5DVVJTRVNfTUlOT1IpCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY3Vyc2VzX2RlZnMgYi9pbmNsdWRlL25jdXJzZXNfZGVmcworaW5kZXggZTY2MTFiNy4uZDIzN2RiMSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbmN1cnNlc19kZWZzCisrKysgYi9pbmNsdWRlL25jdXJzZXNfZGVmcworQEAgLTEsNCArMSw0IEBACistIyAkSWQ6IG5jdXJzZXNfZGVmcyx2IDEuNzMgMjAxNy8wNi8yNCAxNDoyMDo1NyB0b20gRXhwICQKKysjICRJZDogbmN1cnNlc19kZWZzLHYgMS43NSAyMDE3LzA4LzIwIDE2OjUwOjA0IHRvbSBFeHAgJAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICMgQ29weXJpZ2h0IChjKSAyMDAwLTIwMTYsMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworQEAgLTUwLDcgKzUwLDkgQEAgSEFWRV9CU0RfU1RSSU5HX0gKKyBIQVZFX0JUT1dDIAorIEhBVkVfQlVJTFRJTl9ICisgSEFWRV9DSEdBVAkxCisrSEFWRV9DT0xPUl9DT05URU5UCTEKKyBIQVZFX0NPTE9SX1NFVAkxCisrSEFWRV9DVVJTQ1IJMQorIEhBVkVfRElSRU5UX0gKKyBIQVZFX0VSUk5PCisgSEFWRV9GQ05UTF9ICitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jIGIvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jCitpbmRleCA1ZGUwOWYxLi4wOTM3NGQ2IDEwMDY0NAorLS0tIGEvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMKK0BAIC00Nyw3ICs0Nyw3IEBACisgCisgI2luY2x1ZGUgPHRpYy5oPgorIAorLU1PRFVMRV9JRCgiJElkOiBhbGxvY19lbnRyeS5jLHYgMS42MCAyMDE3LzA2LzI3IDIzOjQ4OjU1IHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IGFsbG9jX2VudHJ5LmMsdiAxLjYxIDIwMTcvMDgvMjUgMDk6MDk6MDggdG9tIEV4cCAkIikKKyAKKyAjZGVmaW5lIEFCU0VOVF9PRkZTRVQgICAgLTEKKyAjZGVmaW5lIENBTkNFTExFRF9PRkZTRVQgLTIKK0BAIC05OCw3ICs5OCw3IEBAIF9uY19zYXZlX3N0cihjb25zdCBjaGFyICpjb25zdCBzdHJpbmcpCisgICAgIHNpemVfdCBvbGRfbmV4dF9mcmVlID0gbmV4dF9mcmVlOworICAgICBzaXplX3QgbGVuOworIAorLSAgICBpZiAoc3RyaW5nID09IDApCisrICAgIGlmICghVkFMSURfU1RSSU5HKHN0cmluZykpCisgCXJldHVybiBfbmNfc2F2ZV9zdHIoIiIpOworICAgICBsZW4gPSBzdHJsZW4oc3RyaW5nKSArIDE7CisgCitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYworaW5kZXggMzRlNjIxNi4uNTgwZDRkZiAxMDA2NDQKKy0tLSBhL25jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYworQEAgLTQ3LDcgKzQ3LDcgQEAKKyAKKyAjaW5jbHVkZSA8dGljLmg+CisgCistTU9EVUxFX0lEKCIkSWQ6IGNvbXBfcGFyc2UuYyx2IDEuOTYgMjAxNy8wNC8xNSAxNTozNjo1OCB0b20gRXhwICQiKQorK01PRFVMRV9JRCgiJElkOiBjb21wX3BhcnNlLmMsdiAxLjk5IDIwMTcvMDgvMjYgMTY6MTU6NTAgdG9tIEV4cCAkIikKKyAKKyBzdGF0aWMgdm9pZCBzYW5pdHlfY2hlY2syKFRFUk1UWVBFMiAqLCBib29sKTsKKyBOQ1VSU0VTX0lNUEVYUCB2b2lkIE5DVVJTRVNfQVBJKCpfbmNfY2hlY2tfdGVybXR5cGUyKSAoVEVSTVRZUEUyICosIGJvb2wpID0gc2FuaXR5X2NoZWNrMjsKK0BAIC01MTAsOSArNTEwLDkgQEAgc3RhdGljIHZvaWQKKyBmaXh1cF9hY3NjKFRFUk1UWVBFMiAqdHAsIGludCBsaXRlcmFsKQorIHsKKyAgICAgaWYgKCFsaXRlcmFsKSB7CistCWlmIChhY3NfY2hhcnMgPT0gMAorLQkgICAgJiYgZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSAhPSAwCistCSAgICAmJiBleGl0X2FsdF9jaGFyc2V0X21vZGUgIT0gMCkKKysJaWYgKGFjc19jaGFycyA9PSBBQlNFTlRfU1RSSU5HCisrCSAgICAmJiBQUkVTRU5UKGVudGVyX2FsdF9jaGFyc2V0X21vZGUpCisrCSAgICAmJiBQUkVTRU5UKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpCisgCSAgICBhY3NfY2hhcnMgPSBzdHJkdXAoVlRfQUNTQyk7CisgICAgIH0KKyB9CitAQCAtNTY4LDkgKzU2OCw3IEBAIHNhbml0eV9jaGVjazIoVEVSTVRZUEUyICp0cCwgYm9vbCBsaXRlcmFsKQorICAgICBQQUlSRUQoZW50ZXJfeG9uX21vZGUsIGV4aXRfeG9uX21vZGUpOworICAgICBQQUlSRUQoZW50ZXJfYW1fbW9kZSwgZXhpdF9hbV9tb2RlKTsKKyAgICAgQU5ETUlTU0lORyhsYWJlbF9vZmYsIGxhYmVsX29uKTsKKy0jaWZkZWYgcmVtb3ZlX2Nsb2NrCisgICAgIFBBSVJFRChkaXNwbGF5X2Nsb2NrLCByZW1vdmVfY2xvY2spOworLSNlbmRpZgorICAgICBBTkRNSVNTSU5HKHNldF9jb2xvcl9wYWlyLCBpbml0aWFsaXplX3BhaXIpOworIH0KKyAKK2RpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jIGIvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYworaW5kZXggNDBkN2Y2YS4uYjIwNzI1NyAxMDA2NDQKKy0tLSBhL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMKKysrKyBiL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMKK0BAIC01MCw3ICs1MCw3IEBACisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPHRpYy5oPgorIAorLU1PRFVMRV9JRCgiJElkOiBjb21wX3NjYW4uYyx2IDEuMTA2IDIwMTcvMDQvMjIgMTE6NDE6MTIgdG9tIEV4cCAkIikKKytNT0RVTEVfSUQoIiRJZDogY29tcF9zY2FuLmMsdiAxLjEwOCAyMDE3LzA4LzI1IDIyOjU3OjIxIHRvbSBFeHAgJCIpCisgCisgLyoKKyAgKiBNYXhpbXVtIGxlbmd0aCBvZiBzdHJpbmcgY2FwYWJpbGl0eSB3ZSdsbCBhY2NlcHQgYmVmb3JlIHJhaXNpbmcgYW4gZXJyb3IuCitAQCAtMTY4LDYgKzE2OCw4IEBAIG5leHRfY2hhcih2b2lkKQorIAlpZiAocmVzdWx0ICE9IDApIHsKKyAJICAgIEZyZWVBbmROdWxsKHJlc3VsdCk7CisgCSAgICBGcmVlQW5kTnVsbChwdXNobmFtZSk7CisrCSAgICBidWZwdHIgPSAwOworKwkgICAgYnVmc3RhcnQgPSAwOworIAkgICAgYWxsb2NhdGVkID0gMDsKKyAJfQorIAkvKgorQEAgLTIyMiw2ICsyMjQsOCBAQCBuZXh0X2NoYXIodm9pZCkKKyAJCX0KKyAJCWlmICgoYnVmcHRyID0gYnVmc3RhcnQpICE9IDApIHsKKyAJCSAgICB1c2VkID0gc3RybGVuKGJ1ZnB0cik7CisrCQkgICAgaWYgKHVzZWQgPT0gMCkKKysJCQlyZXR1cm4gKEVPRik7CisgCQkgICAgd2hpbGUgKGlzd2hpdGUoKmJ1ZnB0cikpIHsKKyAJCQlpZiAoKmJ1ZnB0ciA9PSAnXHQnKSB7CisgCQkJICAgIF9uY19jdXJyX2NvbCA9IChfbmNfY3Vycl9jb2wgfCA3KSArIDE7CitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jIGIvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCitpbmRleCAzZmEyZjI1Li5iYmJmY2IyIDEwMDY0NAorLS0tIGEvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKK0BAIC00Nyw3ICs0Nyw3IEBACisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPHRpYy5oPgorIAorLU1PRFVMRV9JRCgiJElkOiBwYXJzZV9lbnRyeS5jLHYgMS44NiAyMDE3LzA2LzI4IDAwOjUzOjEyIHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IHBhcnNlX2VudHJ5LmMsdiAxLjkxIDIwMTcvMDgvMjYgMTY6MTM6MzQgdG9tIEV4cCAkIikKKyAKKyAjaWZkZWYgTElOVAorIHN0YXRpYyBzaG9ydCBjb25zdCBwYXJhbWV0cml6ZWRbXSA9CitAQCAtMTgwLDYgKzE4MCwyMCBAQCBfbmNfZXh0ZW5kX25hbWVzKEVOVFJZICogZW50cnlwLCBjaGFyICpuYW1lLCBpbnQgdG9rZW5fdHlwZSkKKyB9CisgI2VuZGlmIC8qIE5DVVJTRVNfWE5BTUVTICovCisgCisrc3RhdGljIGJvb2wKKyt2YWxpZF9lbnRyeW5hbWUoY29uc3QgY2hhciAqbmFtZSkKKyt7CisrICAgIGJvb2wgcmVzdWx0ID0gVFJVRTsKKysgICAgaW50IGNoOworKyAgICB3aGlsZSAoKGNoID0gVUNoYXIoKm5hbWUrKykpICE9ICdcMCcpIHsKKysJaWYgKGNoIDw9ICcgJyB8fCBjaCA+ICd+JyB8fCBjaCA9PSAnLycpIHsKKysJICAgIHJlc3VsdCA9IEZBTFNFOworKwkgICAgYnJlYWs7CisrCX0KKysgICAgfQorKyAgICByZXR1cm4gcmVzdWx0OworK30KKysKKyAvKgorICAqCWludAorICAqCV9uY19wYXJzZV9lbnRyeShlbnRyeSwgbGl0ZXJhbCwgc2lsZW50KQorQEAgLTIxMSw2ICsyMjUsNyBAQCBfbmNfcGFyc2VfZW50cnkoRU5UUlkgKiBlbnRyeXAsIGludCBsaXRlcmFsLCBib29sIHNpbGVudCkKKyAgICAgaW50IHRva2VuX3R5cGU7CisgICAgIHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICplbnRyeV9wdHI7CisgICAgIGNoYXIgKnB0ciwgKmJhc2U7CisrICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgIGJvb2wgYmFkX3RjX3VzYWdlID0gRkFMU0U7CisgCisgICAgIHRva2VuX3R5cGUgPSBfbmNfZ2V0X3Rva2VuKHNpbGVudCk7CitAQCAtMjYxLDcgKzI3NiwxMiBAQCBfbmNfcGFyc2VfZW50cnkoRU5UUlkgKiBlbnRyeXAsIGludCBsaXRlcmFsLCBib29sIHNpbGVudCkKKyAgICAgICogcmVzdWx0cyBpbiB0aGUgdGVybWluYWwgdHlwZSBnZXR0aW5nIHByZW1hdHVyZWx5IHNldCB0byBjb3JyZXNwb25kCisgICAgICAqIHRvIHRoYXQgb2YgdGhlIG5leHQgZW50cnkuCisgICAgICAqLworLSAgICBfbmNfc2V0X3R5cGUoX25jX2ZpcnN0X25hbWUoZW50cnlwLT50dGVybS50ZXJtX25hbWVzKSk7CisrICAgIG5hbWUgPSBfbmNfZmlyc3RfbmFtZShlbnRyeXAtPnR0ZXJtLnRlcm1fbmFtZXMpOworKyAgICBpZiAoIXZhbGlkX2VudHJ5bmFtZShuYW1lKSkgeworKwlfbmNfd2FybmluZygiaW52YWxpZCBlbnRyeSBuYW1lIFwiJXNcIiIsIG5hbWUpOworKwluYW1lID0gImludmFsaWQiOworKyAgICB9CisrICAgIF9uY19zZXRfdHlwZShuYW1lKTsKKyAKKyAgICAgLyogY2hlY2sgZm9yIG92ZXJseS1sb25nIG5hbWVzIGFuZCBhbGlhc2VzICovCisgICAgIGZvciAoYmFzZSA9IGVudHJ5cC0+dHRlcm0udGVybV9uYW1lczsgKHB0ciA9IHN0cmNocihiYXNlLCAnfCcpKSAhPSAwOworQEAgLTI4MywxMyArMzAzLDI0IEBAIF9uY19wYXJzZV9lbnRyeShFTlRSWSAqIGVudHJ5cCwgaW50IGxpdGVyYWwsIGJvb2wgc2lsZW50KQorIAlib29sIGlzX3VzZSA9IChzdHJjbXAoX25jX2N1cnJfdG9rZW4udGtfbmFtZSwgInVzZSIpID09IDApOworIAlib29sIGlzX3RjID0gIWlzX3VzZSAmJiAoc3RyY21wKF9uY19jdXJyX3Rva2VuLnRrX25hbWUsICJ0YyIpID09IDApOworIAlpZiAoaXNfdXNlIHx8IGlzX3RjKSB7CisrCSAgICBpZiAoIVZBTElEX1NUUklORyhfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpCisrCQl8fCBfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmdbMF0gPT0gJ1wwJykgeworKwkJX25jX3dhcm5pbmcoIm1pc3NpbmcgbmFtZSBmb3IgdXNlLWNsYXVzZSIpOworKwkJY29udGludWU7CisrCSAgICB9IGVsc2UgaWYgKCF2YWxpZF9lbnRyeW5hbWUoX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKSkgeworKwkJX25jX3dhcm5pbmcoImludmFsaWQgbmFtZSBmb3IgdXNlLWNsYXVzZSBcIiVzXCIiLAorKwkJCSAgICBfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpOworKwkJY29udGludWU7CisrCSAgICB9IGVsc2UgaWYgKGVudHJ5cC0+bnVzZXMgPj0gTUFYX1VTRVMpIHsKKysJCV9uY193YXJuaW5nKCJ0b28gbWFueSB1c2UtY2xhdXNlcywgaWdub3JlZCBcIiVzXCIiLAorKwkJCSAgICBfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpOworKwkJY29udGludWU7CisrCSAgICB9CisgCSAgICBlbnRyeXAtPnVzZXNbZW50cnlwLT5udXNlc10ubmFtZSA9IF9uY19zYXZlX3N0cihfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpOworIAkgICAgZW50cnlwLT51c2VzW2VudHJ5cC0+bnVzZXNdLmxpbmUgPSBfbmNfY3Vycl9saW5lOworLQkgICAgaWYgKFZBTElEX1NUUklORyhlbnRyeXAtPnVzZXNbZW50cnlwLT5udXNlc10ubmFtZSkpIHsKKy0JCWVudHJ5cC0+bnVzZXMrKzsKKy0JCWlmIChlbnRyeXAtPm51c2VzID4gMSAmJiBpc190YykgeworLQkJICAgIEJBRF9UQ19VU0FHRQorLQkJfQorKwkgICAgZW50cnlwLT5udXNlcysrOworKwkgICAgaWYgKGVudHJ5cC0+bnVzZXMgPiAxICYmIGlzX3RjKSB7CisrCQlCQURfVENfVVNBR0UKKyAJICAgIH0KKyAJfSBlbHNlIHsKKyAJICAgIC8qIG5vcm1hbCB0b2tlbiBsb29rdXAgKi8KK0BAIC02NDEsMTMgKzY3Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyIENfQlNbXSA9ICJcYiI7Cisgc3RhdGljIGNvbnN0IGNoYXIgQ19IVFtdID0gIlx0IjsKKyAKKyAvKgorLSAqIE5vdGUgdGhhdCBXQU5URUQgYW5kIFBSRVNFTlQgYXJlIG5vdCBzaW1wbGUgaW52ZXJzZXMhICBJZiBhIGNhcGFiaWxpdHkKKy0gKiBoYXMgYmVlbiBleHBsaWNpdGx5IGNhbmNlbGxlZCwgaXQncyBub3QgY29uc2lkZXJlZCBXQU5URUQuCistICovCistI2RlZmluZSBXQU5URUQocykJKChzKSA9PSBBQlNFTlRfU1RSSU5HKQorLSNkZWZpbmUgUFJFU0VOVChzKQkoKChzKSAhPSBBQlNFTlRfU1RSSU5HKSAmJiAoKHMpICE9IENBTkNFTExFRF9TVFJJTkcpKQorLQorLS8qCisgICogVGhpcyBiaXQgb2YgbGVnZXJkZW1haW4gdHVybnMgYWxsIHRoZSB0ZXJtaW5mbyB2YXJpYWJsZSBuYW1lcyBpbnRvCisgICogcmVmZXJlbmNlcyB0byBsb2NhdGlvbnMgaW4gdGhlIGFycmF5cyBCb29sZWFucywgTnVtYmVycywgYW5kIFN0cmluZ3MgLS0tCisgICogcHJlY2lzZWx5IHdoYXQncyBuZWVkZWQuCitAQCAtNjcyLDEwICs2OTYsMTAgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQorIAorICAgICAvKiBpZiB0aGVyZSB3YXMgYSB0YyBlbnRyeSwgYXNzdW1lIHdlIHBpY2tlZCB1cCBkZWZhdWx0cyB2aWEgdGhhdCAqLworICAgICBpZiAoIWhhc19iYXNlKSB7CistCWlmIChXQU5URUQoaW5pdF8zc3RyaW5nKSAmJiB0ZXJtY2FwX2luaXQyKQorKwlpZiAoV0FOVEVEKGluaXRfM3N0cmluZykgJiYgUFJFU0VOVCh0ZXJtY2FwX2luaXQyKSkKKyAJICAgIGluaXRfM3N0cmluZyA9IF9uY19zYXZlX3N0cih0ZXJtY2FwX2luaXQyKTsKKyAKKy0JaWYgKFdBTlRFRChyZXNldF8yc3RyaW5nKSAmJiB0ZXJtY2FwX3Jlc2V0KQorKwlpZiAoV0FOVEVEKHJlc2V0XzJzdHJpbmcpICYmIFBSRVNFTlQodGVybWNhcF9yZXNldCkpCisgCSAgICByZXNldF8yc3RyaW5nID0gX25jX3NhdmVfc3RyKHRlcm1jYXBfcmVzZXQpOworIAorIAlpZiAoV0FOVEVEKGNhcnJpYWdlX3JldHVybikpIHsKK0BAIC03OTAsNyArODE0LDcgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQorIAlpZiAoaW5pdF90YWJzICE9IDggJiYgaW5pdF90YWJzICE9IEFCU0VOVF9OVU1FUklDKQorIAkgICAgX25jX3dhcm5pbmcoImhhcmR3YXJlIHRhYnMgd2l0aCBhIHdpZHRoIG90aGVyIHRoYW4gODogJWQiLCBpbml0X3RhYnMpOworIAllbHNlIHsKKy0JICAgIGlmICh0YWIgJiYgX25jX2NhcGNtcCh0YWIsIENfSFQpKQorKwkgICAgaWYgKFBSRVNFTlQodGFiKSAmJiBfbmNfY2FwY21wKHRhYiwgQ19IVCkpCisgCQlfbmNfd2FybmluZygiaGFyZHdhcmUgdGFicyB3aXRoIGEgbm9uLV5JIHRhYiBzdHJpbmcgJXMiLAorIAkJCSAgICBfbmNfdmlzYnVmKHRhYikpOworIAkgICAgZWxzZSB7CitAQCAtODY3LDE3ICs4OTEsMjIgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQorIAkgICAgICogVGhlIG1hZ2ljIG1vbWVudCAtLSBjb3B5IHRoZSBtYXBwZWQga2V5IHN0cmluZyBvdmVyLAorIAkgICAgICogc3RyaXBwaW5nIG91dCBwYWRkaW5nLgorIAkgICAgICovCistCSAgICBmb3IgKGRwID0gYnVmMiwgYnAgPSB0cC0+U3RyaW5nc1tmcm9tX3B0ci0+bnRlX2luZGV4XTsgKmJwOyBicCsrKSB7CistCQlpZiAoYnBbMF0gPT0gJyQnICYmIGJwWzFdID09ICc8JykgeworLQkJICAgIHdoaWxlICgqYnAgJiYgKmJwICE9ICc+JykgeworLQkJCSsrYnA7CistCQkgICAgfQorLQkJfSBlbHNlCistCQkgICAgKmRwKysgPSAqYnA7CistCSAgICB9CistCSAgICAqZHAgPSAnXDAnOworKwkgICAgYnAgPSB0cC0+U3RyaW5nc1tmcm9tX3B0ci0+bnRlX2luZGV4XTsKKysJICAgIGlmIChWQUxJRF9TVFJJTkcoYnApKSB7CisrCQlmb3IgKGRwID0gYnVmMjsgKmJwOyBicCsrKSB7CisrCQkgICAgaWYgKGJwWzBdID09ICckJyAmJiBicFsxXSA9PSAnPCcpIHsKKysJCQl3aGlsZSAoKmJwICYmICpicCAhPSAnPicpIHsKKysJCQkgICAgKyticDsKKysJCQl9CisrCQkgICAgfSBlbHNlCisrCQkJKmRwKysgPSAqYnA7CisrCQl9CisrCQkqZHAgPSAnXDAnOworIAorLQkgICAgdHAtPlN0cmluZ3NbdG9fcHRyLT5udGVfaW5kZXhdID0gX25jX3NhdmVfc3RyKGJ1ZjIpOworKwkJdHAtPlN0cmluZ3NbdG9fcHRyLT5udGVfaW5kZXhdID0gX25jX3NhdmVfc3RyKGJ1ZjIpOworKwkgICAgfSBlbHNlIHsKKysJCXRwLT5TdHJpbmdzW3RvX3B0ci0+bnRlX2luZGV4XSA9IGJwOworKwkgICAgfQorIAl9CisgCisgCS8qCitAQCAtODg2LDcgKzkxNSw3IEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKKyAJICogZ290IG1hcHBlZCB0byBraWNoMSBhbmQgaW0gdG8ga0lDIHRvIGF2b2lkIGEgY29sbGlzaW9uLgorIAkgKiBJZiB0aGUgZGVzY3JpcHRpb24gaGFzIGltIGJ1dCBub3QgaWMsIGhhY2sga0lDIGJhY2sgdG8ga2ljaDEuCisgCSAqLworLQlpZiAoZm91bmRpbSAmJiBXQU5URUQoa2V5X2ljKSAmJiBrZXlfc2ljKSB7CisrCWlmIChmb3VuZGltICYmIFdBTlRFRChrZXlfaWMpICYmIFBSRVNFTlQoa2V5X3NpYykpIHsKKyAJICAgIGtleV9pYyA9IGtleV9zaWM7CisgCSAgICBrZXlfc2ljID0gQUJTRU5UX1NUUklORzsKKyAJfQorQEAgLTkzOCw5ICs5NjcsOSBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCisgCSAgICBhY3NfY2hhcnMgPSBfbmNfc2F2ZV9zdHIoYnVmMik7CisgCSAgICBfbmNfd2FybmluZygiYWNzYyBzdHJpbmcgc3ludGhlc2l6ZWQgZnJvbSBYRU5JWCBjYXBhYmlsaXRpZXMiKTsKKyAJfQorLSAgICB9IGVsc2UgaWYgKGFjc19jaGFycyA9PSAwCistCSAgICAgICAmJiBlbnRlcl9hbHRfY2hhcnNldF9tb2RlICE9IDAKKy0JICAgICAgICYmIGV4aXRfYWx0X2NoYXJzZXRfbW9kZSAhPSAwKSB7CisrICAgIH0gZWxzZSBpZiAoYWNzX2NoYXJzID09IEFCU0VOVF9TVFJJTkcKKysJICAgICAgICYmIFBSRVNFTlQoZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSkKKysJICAgICAgICYmIFBSRVNFTlQoZXhpdF9hbHRfY2hhcnNldF9tb2RlKSkgeworIAlhY3NfY2hhcnMgPSBfbmNfc2F2ZV9zdHIoVlRfQUNTQyk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9zdHJpbmdzLmMgYi9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYworaW5kZXggMzkzZDhlNy4uMTBlYzZjOCAxMDA2NDQKKy0tLSBhL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYworQEAgLTEsNSArMSw1IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNywyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDEyLDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCitAQCAtMzUsOCArMzUsOSBAQAorICoqLworIAorICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgorKyNpbmNsdWRlIDx0aWMuaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogc3RyaW5ncy5jLHYgMS44IDIwMTIvMDIvMjIgMjI6MzQ6MzEgdG9tIEV4cCAkIikKKytNT0RVTEVfSUQoIiRJZDogc3RyaW5ncy5jLHYgMS45IDIwMTcvMDgvMjYgMTM6MTY6MTEgdG9tIEV4cCAkIikKKyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIFVzZWZ1bCBzdHJpbmcgZnVuY3Rpb25zIChlc3BlY2lhbGx5IGZvciBtdmN1cikKK0BAIC0xMDUsNyArMTA2LDcgQEAgX25jX3N0cl9jb3B5KHN0cmluZ19kZXNjICogZHN0LCBzdHJpbmdfZGVzYyAqIHNyYykKKyBOQ1VSU0VTX0VYUE9SVChib29sKQorIF9uY19zYWZlX3N0cmNhdChzdHJpbmdfZGVzYyAqIGRzdCwgY29uc3QgY2hhciAqc3JjKQorIHsKKy0gICAgaWYgKHNyYyAhPSAwKSB7CisrICAgIGlmIChQUkVTRU5UKHNyYykpIHsKKyAJc2l6ZV90IGxlbiA9IHN0cmxlbihzcmMpOworIAorIAlpZiAobGVuIDwgZHN0LT5zX3NpemUpIHsKK0BAIC0xMjYsNyArMTI3LDcgQEAgX25jX3NhZmVfc3RyY2F0KHN0cmluZ19kZXNjICogZHN0LCBjb25zdCBjaGFyICpzcmMpCisgTkNVUlNFU19FWFBPUlQoYm9vbCkKKyBfbmNfc2FmZV9zdHJjcHkoc3RyaW5nX2Rlc2MgKiBkc3QsIGNvbnN0IGNoYXIgKnNyYykKKyB7CistICAgIGlmIChzcmMgIT0gMCkgeworKyAgICBpZiAoUFJFU0VOVChzcmMpKSB7CisgCXNpemVfdCBsZW4gPSBzdHJsZW4oc3JjKTsKKyAKKyAJaWYgKGxlbiA8IGRzdC0+c19zaXplKSB7CitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby90cmltX3NncjAuYyBiL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMKK2luZGV4IDRjYmNiNjUuLjRkOTJkMTUgMTAwNjQ0CistLS0gYS9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jCitAQCAtMzYsNyArMzYsNyBAQAorIAorICNpbmNsdWRlIDx0aWMuaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogdHJpbV9zZ3IwLmMsdiAxLjE2IDIwMTcvMDQvMDUgMjI6MzM6MDcgdG9tIEV4cCAkIikKKytNT0RVTEVfSUQoIiRJZDogdHJpbV9zZ3IwLmMsdiAxLjE3IDIwMTcvMDgvMjYgMTQ6NTQ6MTYgdG9tIEV4cCAkIikKKyAKKyAjdW5kZWYgQ1VSCisgI2RlZmluZSBDVVIgdHAtPgorQEAgLTI2Myw3ICsyNjMsNyBAQCBfbmNfdHJpbV9zZ3IwKFRFUk1UWVBFMiAqdHApCisgCSAgICAvKgorIAkgICAgICogSWYgcm1hY3MgaXMgYSBzdWJzdHJpbmcgb2Ygc2dyKDApLCByZW1vdmUgdGhhdCBjaHVuay4KKyAJICAgICAqLworLQkgICAgaWYgKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSAhPSAwKSB7CisrCSAgICBpZiAoUFJFU0VOVChleGl0X2FsdF9jaGFyc2V0X21vZGUpKSB7CisgCQlUUihUUkFDRV9EQVRBQkFTRSwgKCJzY2FuIGZvciBybWFjcyAlcyIsIF9uY192aXNidWYoZXhpdF9hbHRfY2hhcnNldF9tb2RlKSkpOworIAkJaiA9IHN0cmxlbihvZmYpOworIAkJayA9IHN0cmxlbihleGl0X2FsdF9jaGFyc2V0X21vZGUpOworZGlmZiAtLWdpdCBhL3Byb2dzL3RpYy5jIGIvcHJvZ3MvdGljLmMKK2luZGV4IGM1ZDc4ZTUuLjZkZDQ2NzggMTAwNjQ0CistLS0gYS9wcm9ncy90aWMuYworKysrIGIvcHJvZ3MvdGljLmMKK0BAIC00OCw3ICs0OCw3IEBACisgI2luY2x1ZGUgPHBhcmFtZXRyaXplZC5oPgorICNpbmNsdWRlIDx0cmFuc2Zvcm0uaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogdGljLmMsdiAxLjIzMyAyMDE3LzA3LzE1IDE3OjQwOjE5IHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IHRpYy5jLHYgMS4yNDMgMjAxNy8wOC8yNiAyMDo1Njo1NSB0b20gRXhwICQiKQorIAorICNkZWZpbmUgU1RESU5fTkFNRSAiPHN0ZGluPiIKKyAKK0BAIC02Miw2ICs2MiwxMCBAQCBzdGF0aWMgYm9vbCBzaG93c3VtbWFyeSA9IEZBTFNFOworIHN0YXRpYyBjaGFyICoqbmFtZWxzdCA9IDA7Cisgc3RhdGljIGNvbnN0IGNoYXIgKnRvX3JlbW92ZTsKKyAKKysjaWYgTkNVUlNFU19YTkFNRVMKKytzdGF0aWMgYm9vbCB1c2luZ19leHRlbnNpb25zID0gRkFMU0U7CisrI2VuZGlmCisrCisgc3RhdGljIHZvaWQgKCpzYXZlX2NoZWNrX3Rlcm10eXBlKSAoVEVSTVRZUEUyICosIGJvb2wpOworIHN0YXRpYyB2b2lkIGNoZWNrX3Rlcm10eXBlKFRFUk1UWVBFMiAqdHQsIGJvb2wpOworIAorQEAgLTg1MCw2ICs4NTQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgICAvKiBGQUxMVEhSVSAqLworIAljYXNlICd4JzoKKyAJICAgIHVzZV9leHRlbmRlZF9uYW1lcyhUUlVFKTsKKysJICAgIHVzaW5nX2V4dGVuc2lvbnMgPSBUUlVFOworIAkgICAgYnJlYWs7CisgI2VuZGlmCisgCWRlZmF1bHQ6CitAQCAtMjQwNSwxMCArMjQxMCwxNyBAQCBjaGVja19jb25mbGljdChURVJNVFlQRTIgKnRwKQorIAkgICAgY29uc3QgY2hhciAqYSA9IGdpdmVuW2pdLnZhbHVlOworIAkgICAgYm9vbCBmaXJzdCA9IFRSVUU7CisgCisrCSAgICBpZiAoIVZBTElEX1NUUklORyhhKSkKKysJCWNvbnRpbnVlOworKworIAkgICAgZm9yIChrID0gaiArIDE7IGdpdmVuW2tdLmtleWNvZGU7IGsrKykgeworIAkJY29uc3QgY2hhciAqYiA9IGdpdmVuW2tdLnZhbHVlOworKworKwkJaWYgKCFWQUxJRF9TVFJJTkcoYikpCisrCQkgICAgY29udGludWU7CisgCQlpZiAoY2hlY2tba10pCisgCQkgICAgY29udGludWU7CisrCisgCQlpZiAoIV9uY19jYXBjbXAoYSwgYikpIHsKKyAJCSAgICBjaGVja1tqXSA9IDE7CisgCQkgICAgY2hlY2tba10gPSAxOworQEAgLTI0MzEsNiArMjQ0Myw2NyBAQCBjaGVja19jb25mbGljdChURVJNVFlQRTIgKnRwKQorIAkgICAgaWYgKCFmaXJzdCkKKyAJCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAJfQorKyNpZiBOQ1VSU0VTX1hOQU1FUworKwlpZiAodXNpbmdfZXh0ZW5zaW9ucykgeworKwkgICAgLyogKklOREVOVC1PRkYqICovCisrCSAgICBzdGF0aWMgc3RydWN0IHsKKysJCWNvbnN0IGNoYXIgKnhjdXJzZXM7CisrCQljb25zdCBjaGFyICpzaGlmdGVkOworKwkgICAgfSB0YWJsZVtdID0geworKwkJeyAia0RDIiwgIE5VTEwgfSwKKysJCXsgImtETiIsICAia2luZCIgfSwKKysJCXsgImtFTkQiLCBOVUxMIH0sCisrCQl7ICJrSE9NIiwgTlVMTCB9LAorKwkJeyAia0xGVCIsIE5VTEwgfSwKKysJCXsgImtOWFQiLCBOVUxMIH0sCisrCQl7ICJrUFJWIiwgTlVMTCB9LAorKwkJeyAia1JJVCIsIE5VTEwgfSwKKysJCXsgImtVUCIsICAia3JpIiB9LAorKwkJeyBOVUxMLCAgIE5VTEwgfSwKKysJICAgIH07CisrCSAgICAvKiAqSU5ERU5ULU9OKiAqLworKworKwkgICAgLyoKKysJICAgICAqIFNWcjQgY3Vyc2VzIGRlZmluZXMgdGhlICJ4Y3Vyc2VzIiBuYW1lcyBsaXN0ZWQgYWJvdmUgZXhjZXB0IGZvcgorKwkgICAgICogdGhlIHNwZWNpYWwgY2FzZXMgaW4gdGhlICJzaGlmdGVkIiBjb2x1bW4uICBXaGVuIHVzaW5nIHRoZXNlCisrCSAgICAgKiBuYW1lcyBmb3IgeHRlcm0ncyBleHRlbnNpb25zLCB0aGF0IHdhcyBjb25mdXNpbmcsIGFuZCByZXN1bHRlZAorKwkgICAgICogaW4gYWRkaW5nIGV4dGVuZGVkIGNhcGFiaWxpdGllcyB3aXRoICIyIiAoc2hpZnQpIHN1ZmZpeC4gIFRoaXMKKysJICAgICAqIGNoZWNrIHdhcm5zIGFib3V0IHVubmVjZXNzYXJ5IHVzZSBvZiBleHRlbnNpb25zIGZvciB0aGlzIHF1aXJrLgorKwkgICAgICovCisrCSAgICBmb3IgKGogPSAwOyBnaXZlbltqXS5rZXljb2RlOyArK2opIHsKKysJCWNvbnN0IGNoYXIgKmZpbmQgPSBnaXZlbltqXS5uYW1lOworKwkJaW50IHZhbHVlOworKwkJY2hhciBjaDsKKysKKysJCWlmICghVkFMSURfU1RSSU5HKGdpdmVuW2pdLnZhbHVlKSkKKysJCSAgICBjb250aW51ZTsKKysKKysJCWZvciAoayA9IDA7IHRhYmxlW2tdLnhjdXJzZXM7ICsraykgeworKwkJICAgIGNvbnN0IGNoYXIgKnRlc3QgPSB0YWJsZVtrXS54Y3Vyc2VzOworKwkJICAgIHNpemVfdCBzaXplID0gc3RybGVuKHRlc3QpOworKworKwkJICAgIGlmICghc3RybmNtcChmaW5kLCB0ZXN0LCBzaXplKSAmJiBzdHJjbXAoZmluZCwgdGVzdCkpIHsKKysJCQlzd2l0Y2ggKHNzY2FuZihmaW5kICsgc2l6ZSwgIiVkJWMiLCAmdmFsdWUsICZjaCkpIHsKKysJCQljYXNlIDE6CisrCQkJICAgIGlmICh2YWx1ZSA9PSAyKSB7CisrCQkJCV9uY193YXJuaW5nKCJleHBlY3RlZCAnJXMnIHJhdGhlciB0aGFuICclcyciLAorKwkJCQkJICAgICh0YWJsZVtrXS5zaGlmdGVkCisrCQkJCQkgICAgID8gdGFibGVba10uc2hpZnRlZAorKwkJCQkJICAgICA6IHRlc3QpLCBmaW5kKTsKKysJCQkgICAgfSBlbHNlIGlmICh2YWx1ZSA8IDIgfHwgdmFsdWUgPiAxNSkgeworKwkJCQlfbmNfd2FybmluZygiZXhwZWN0ZWQgbnVtZXJpYyAyLi4xNSAnJXMnIiwgZmluZCk7CisrCQkJICAgIH0KKysJCQkgICAgYnJlYWs7CisrCQkJZGVmYXVsdDoKKysJCQkgICAgX25jX3dhcm5pbmcoImV4cGVjdGVkIG51bWVyaWMgc3VmZml4IGZvciAnJXMnIiwgZmluZCk7CisrCQkJICAgIGJyZWFrOworKwkJCX0KKysJCQlicmVhazsKKysJCSAgICB9CisrCQl9CisrCSAgICB9CisrCX0KKysjZW5kaWYKKyAJZnJlZShnaXZlbik7CisgCWZyZWUoY2hlY2spOworICAgICB9CistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRhOGJkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotImNvbmZpZ3VyZSIgZW5mb3JjZXMgLVUgZm9yIGFyIGZsYWdzLCBicmVha2luZyBkZXRlcm1pbmlzdGljIGJ1aWxkcy4KLVRoZSBmbGFnIHdhcyBhZGRlZCB0byBmaXggc29tZSB2YWd1ZWx5IHNwZWNpZmllZCAicmVjZW50IFBPU0lYIGJpbnV0aWwKLWJ1aWxkIHByb2JsZW1zIiBpbiAyMDE1LiAKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA3ZjMxMjA4Li5hYTgwOTExIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC00NDI4LDcgKzQ0MjgsNyBAQCBpZiB0ZXN0ICIke2NmX2N2X2FyX2ZsYWdzK3NldH0iID0gc2V0OyB0aGVuCi0gZWxzZQotIAotIAljZl9jdl9hcl9mbGFncz11bmtub3duCi0tCWZvciBjZl9hcl9mbGFncyBpbiAtY3VydlUgLWN1cnYgY3VydiAtY3J2IGNydiAtY3F2IGNxdiAtcnYgcnYKLSsJZm9yIGNmX2FyX2ZsYWdzIGluIC1jdXJ2IGN1cnYgLWNydiBjcnYgLWNxdiBjcXYgLXJ2IHJ2Ci0gCWRvCi0gCi0gCQkjIGNoZWNrIGlmICRBUkZMQUdTIGFscmVhZHkgY29udGFpbnMgdGhpcyBjaG9pY2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL2ZpeC1jZmxhZ3MtbWFuZ2xlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvZml4LWNmbGFncy1tYW5nbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NDQ3YzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvZml4LWNmbGFncy1tYW5nbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1jb25maWd1cmUgaGFzIGEgcGllY2Ugb2YgbG9naWMgdG8gZGV0ZWN0IHVzZXJzICJhYnVzaW5nIiBDQyB0byBob2xkIGNvbXBpbGVyCi1mbGFncyAod2hpY2ggd2UgZG8pLiAgSXQgYWxzbyBoYXMgbG9naWMgdG8gImNvcnJlY3QiIHRoaXMgYnkgbW92aW5nIHRoZSBmbGFncwotZnJvbSBDQyB0byBDRkxBR1MsIGJ1dCB0aGUgc2VkIG9ubHkgaGFuZGxlcyBhIHNpbmdsZSBhcmd1bWVudCBpbiBDQy4KLQotUmVwbGFjZSB0aGUgc2VkIHdpdGggYXdrIHRvIGZpbHRlciBvdXQgYWxsIHdvcmRzIHRoYXQgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA3ZjMxMjA4Li4xYTI5Y2ZjIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0yMTkxLDIgKzIxOTEsMiBAQCBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdXIgZW52aXJvbm1lbnQgbWlzdXNlcyB0aGUgQ0MgdmFyaWFibGUgdG8gaG9sZCBDRkxBR1MvQwotLQljZl9mbGFncz1gZWNobyAiJENDIiB8IHNlZCAtZSAncy9eLipbIAldXCgtW14gCV1cKS9cMS8nYAotLQlDQz1gZWNobyAiJENDICIgfCBzZWQgLWUgJ3MvWyAJXS1bXiAJXS4qJC8vJyAtZSAncy9bIAldKiQvLydgCi0rCWNmX2ZsYWdzPWBlY2hvICIkQ0MiIHwgYXdrICAnQkVHSU57T1JTPSIgIjtSUz0iICJ9IC9eLS4rLyB7cHJpbnQgJDF9J2AKLSsJQ0M9YGVjaG8gIiRDQyAiIHwgYXdrICAnQkVHSU57T1JTPSIgIjtSUz0iICJ9IC9eW14tXS4rLyB7cHJpbnQgJDF9J2AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL3RpYy1oYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvdGljLWhhbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYTg5ZDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvdGljLWhhbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLSd0aWMnIG9mIHNvbWUgbGludXggZGlzdHJpYnV0aW9ucyAoZS5nLiBmZWRvcmEgMTEpIGhhbmcgaW4gYW4gaW5maW5pdGUKLWxvb3Agd2hlbiBwcm9jZXNzaW5nIHRoZSBvcmlnaW5hbCBmaWxlLgotCi1JbmRleDogbmN1cnNlcy01LjcvbWlzYy90ZXJtaW5mby5zcmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuY3Vyc2VzLTUuNy5vcmlnL21pc2MvdGVybWluZm8uc3JjCi0rKysgbmN1cnNlcy01LjcvbWlzYy90ZXJtaW5mby5zcmMKLUBAIC0zNzA2LDEyICszNzA2LDExIEBAIGtvbnNvbGUteGYzeHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCBrZXkKLSAjIFRoZSB2YWx1ZSBmb3Iga2JzIHJlZmxlY3RzIGxvY2FsIGN1c3RvbWl6YXRpb24gcmF0aGVyIHRoYW4gdGhlIHNldHRpbmdzIHVzZWQKLSAjIGZvciBYRnJlZTg2IHh0ZXJtLgotIGtvbnNvbGUteGY0eHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCBrZXlib2FyZCBmb3IgWEZyZWU4NiA0LnggeHRlcm0sCi0tCWtlbmQ9XEVPRiwga2hvbWU9XEVPSCwgdXNlPWtvbnNvbGUrcGNma2V5cywKLS0JdXNlPWtvbnNvbGUtdnQxMDAsCi0tIyBLb25zb2xlIGRvZXMgbm90IGltcGxlbWVudCBzaGlmdGVkIGN1cnNvci1rZXlzLgotLWtvbnNvbGUrcGNma2V5c3xrb25zb2xlIHN1YnNldCBvZiB4dGVybStwY2ZrZXlzLAotLQlrTEZUQCwga1JJVEAsIGtjYnQ9XEVbWiwga2luZEAsIGtyaUAsIGtETkAsIGtVUEAsIHVzZT14dGVybStwY2MyLAotLQl1c2U9eHRlcm0rcGNmMCwKLSsJa2VuZD1cRU9GLCBrZjE9XEVPUCwga2YxMz1cRU8yUCwga2YxND1cRU8yUSwga2YxNT1cRU8yUiwKLSsJa2YxNj1cRU8yUywga2YxNz1cRVsxNTsyfiwga2YxOD1cRVsxNzsyfiwga2YxOT1cRVsxODsyfiwKLSsJa2YyPVxFT1EsIGtmMjA9XEVbMTk7Mn4sIGtmMjE9XEVbMjA7Mn4sIGtmMjI9XEVbMjE7Mn4sCi0rCWtmMjM9XEVbMjM7Mn4sIGtmMjQ9XEVbMjQ7Mn4sIGtmMz1cRU9SLCBrZjQ9XEVPUywKLSsJa2hvbWU9XEVPSCwgdXNlPWtvbnNvbGUtdnQxMDAsCi0gIyBLREUncyAidnQxMDAiIGtleWJvYXJkIGhhcyBubyByZWxhdGlvbnNoaXAgdG8gYW55IHRlcm1pbmFsIHRoYXQgREVDIG1hZGUsIGJ1dAotICMgaXQgaXMgc3RpbGwgdXNlZnVsIGZvciBkZXJpdmluZyB0aGUgb3RoZXIgZW50cmllcy4KLSBrb25zb2xlLXZ0MTAwfEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIHZ0MTAwIChzaWMpIGtleWJvYXJkLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNjExMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE2MTEyNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNlMzEwOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE2MTEyNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgbmN1cnNlcy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL3RpYy1oYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtY2ZsYWdzLW1hbmdsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKLSIKLSMgY29tbWl0IGlkIGNvcnJlc3BvbmRzIHRvIHRoZSByZXZpc2lvbiBpbiBwYWNrYWdlIHZlcnNpb24KLVNSQ1JFViA9ICIzZGIwYmQxOWNiNTBlM2Q5YjRmMmNmMTViN2ExMDJmZTExMzAyMDY4IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWFiaS12ZXJzaW9uPTUiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKyhcK1xkKykqKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcwNzE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzA3MTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFkYTVkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcwNzE1LmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgbmN1cnNlcy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGljLWhhbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzczMi1DVkUtMjAxNy0xMzczNC1DVkUtMjAxNy0xMzczMC1DVkUtMjAxNy0xMzcyOS1DVkUtMjAxNy0xMzcyOC1DVkUtMjAxNy0xMzczMS5wYXRjaCBcCisiCisjIGNvbW1pdCBpZCBjb3JyZXNwb25kcyB0byB0aGUgcmV2aXNpb24gaW4gcGFja2FnZSB2ZXJzaW9uCitTUkNSRVYgPSAiNTI2ODFhNmExYTE4YjRkNmViMWE3MTY1MTJkMGRkODI3YmQ3MWM4NyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1hYmktdmVyc2lvbj01IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSsoXCtcZCspKikiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLXNoZWxsLWltYWdlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi1zaGVsbC1pbWFnZS5iYgppbmRleCAwMjk1NDdiLi4wZDJiOGJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLXNoZWxsLWltYWdlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYtc2hlbGwtaW1hZ2UuYmIKQEAgLTEsMTAgKzEsMTMgQEAKIERFU0NSSVBUSU9OID0gImJvb3QgaW1hZ2Ugd2l0aCBVRUZJIHNoZWxsIGFuZCB0b29scyIKIAogIyBGb3IgdGhpcyBpbWFnZSByZWNpcGUsIG9ubHkgdGhlIHdpYyBmb3JtYXQgd2l0aCBhCi0jIHNpbmdsZSB2ZmF0IHBhcnRpdGlvbiBtYWtlcyBzZW5zZS4KKyMgc2luZ2xlIHZmYXQgcGFydGl0aW9uIG1ha2VzIHNlbnNlLiBCZWNhdXNlIHdlIGhhdmUgbm8KKyMgYm9vdCBsb2FkZXIgYW5kIG5vIHJvb3RmcyBwYXJ0aXRpb24sIG5vdCBhZGRpdGlvbmFsCisjIHRvb2xzIGFyZSBuZWVkZWQgZm9yIHRoaXMgLndrcyBmaWxlLgogSU1BR0VfRlNUWVBFU19mb3JjZXZhcmlhYmxlID0gJ3dpYycKLQogV0tTX0ZJTEUgPSAib3ZtZi9vdm1mLXNoZWxsLWltYWdlLndrcyIKK1dLU19GSUxFX0RFUEVORFMgPSAiIgorCiBpbmhlcml0IGltYWdlCiAKICMgV2Ugd2FudCBhIG1pbmltYWwgaW1hZ2Ugd2l0aCBqdXN0IG92bWYtc2hlbGwtZWZpIHVucGFja2VkIGluIGl0LiBXZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLU1kZU1vZHVsZVBrZy1VZWZpSGlpTGliLUZpeC1pbmNvcnJlY3QtY29tcGFyaXNvbi1leHAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtTWRlTW9kdWxlUGtnLVVlZmlIaWlMaWItRml4LWluY29ycmVjdC1jb21wYXJpc29uLWV4cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNkN2E0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtTWRlTW9kdWxlUGtnLVVlZmlIaWlMaWItRml4LWluY29ycmVjdC1jb21wYXJpc29uLWV4cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNzM2OTI3MTBkNTBkYTFmNDIxYjBlNmRkZmY3ODRjYTMxMzUzODliMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmRhbiBCaSA8ZGFuZGFuLmJpQGludGVsLmNvbT4KLURhdGU6IFNhdCwgMSBBcHIgMjAxNyAxMDozMToxNCArMDgwMAotU3ViamVjdDogW1BBVENIXSBNZGVNb2R1bGVQa2cvVWVmaUhpaUxpYjpGaXggaW5jb3JyZWN0IGNvbXBhcmlzb24gZXhwcmVzc2lvbgotCi1GaXggdGhlIGluY29ycmVjdCBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgY29uc3RhbnQgemVybyBjaGFyYWN0ZXIuCi0KLWh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE2Ci0KLVYyOiBUaGUgcG9pbnRlciBTdHJpbmdQdHIgcG9pbnRzIHRvIGEgc3RyaW5nIHJldHVybmVkCi1ieSBFeHRyYWN0Q29uZmlnL0V4cG9ydENvbmZpZywgaWYgaXQgaXMgTlVMTCwgZnVuY3Rpb24KLUludGVybmFsSGlpSWZyVmFsdWVBY3Rpb24gd2lsbCByZXR1cm4gRkFMU0UuIFNvIGluCi1jdXJyZW50IHVzYWdlIG1vZGVsLCB0aGUgU3RyaW5nUHRyIGNhbiBub3QgYmUgTlVMTCBiZWZvcmUKLXVzaW5nIGl0LCBzbyB3ZSBjYW4gYWRkIEFTU0VSVCBoZXJlLgotCi1DYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPgotQ2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPgotQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMAotU2lnbmVkLW9mZi1ieTogRGFuZGFuIEJpIDxkYW5kYW4uYmlAaW50ZWwuY29tPgotUmV2aWV3ZWQtYnk6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUhpaUxpYi9IaWlMaWIuYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpTGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpSGlpTGliL0hpaUxpYi5jCi0rKysgZ2l0L01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpTGliLmMKLUBAIC0yMTgwLDYgKzIxODAsOCBAQCBJbnRlcm5hbEhpaUlmclZhbHVlQWN0aW9uICgKLSAgIH0NCi0gICANCi0gICBTdHJpbmdQdHIgPSBDb25maWdBbHRSZXNwOw0KLSsKLSsgIEFTU0VSVCAoU3RyaW5nUHRyICE9IE5VTEwpOw0KLSAgIA0KLSAgIHdoaWxlIChTdHJpbmdQdHIgIT0gTCdcMCcpIHsNCi0gICAgIC8vDQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLWlhMzItRG9udC11c2UtcGllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLWlhMzItRG9udC11c2UtcGllLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjQxOGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtaWEzMi1Eb250LXVzZS1waWUucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBmNjVlOWNjMDI1Mjc4Mzg3YjQ5NGMyMzgzYzVkOWZmM2JlZDk4Njg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTEgSnVuIDIwMTcgMDA6NDc6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaWEzMjogRG9udCB1c2UgLXBpZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIEJhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCisrKysgZ2l0L0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorQEAgLTQzMzYsNyArNDMzNiw3IEBAIFJFTEVBU0VfKl8qX09CSkNPUFlfQUREREVCVUdGTEFHICAgPQorIE5PT1BUXypfKl9PQkpDT1BZX0FERERFQlVHRkxBRyAgICAgPSAtLWFkZC1nbnUtZGVidWdsaW5rPSQoREVCVUdfRElSKS8kKE1PRFVMRV9OQU1FKS5kZWJ1Zw0KKyANCisgREVGSU5FIEdDQ19BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1PcyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbg0KKy1ERUZJTkUgR0NDX0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQ19BTExfQ0NfRkxBR1MpIC1tMzIgLW1hbGlnbi1kb3VibGUgLWZyZW9yZGVyLWJsb2NrcyAtZnJlb3JkZXItYmxvY2tzLWFuZC1wYXJ0aXRpb24gLU8yIC1tbm8tc3RhY2stYXJnLXByb2JlDQorK0RFRklORSBHQ0NfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDX0FMTF9DQ19GTEFHUykgLW0zMiAtbWFsaWduLWRvdWJsZSAtZnJlb3JkZXItYmxvY2tzIC1mcmVvcmRlci1ibG9ja3MtYW5kLXBhcnRpdGlvbiAtTzIgLW1uby1zdGFjay1hcmctcHJvYmUgLWZuby1QSUUgLW5vLXBpZQ0KKyBERUZJTkUgR0NDX1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQ19BTExfQ0NfRkxBR1MpIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tbm8tc3RhY2stYXJnLXByb2JlDQorIERFRklORSBHQ0NfSVBGX0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDX0FMTF9DQ19GTEFHUykgLW1pbmxpbmUtaW50LWRpdmlkZS1taW4tbGF0ZW5jeQ0KKyBERUZJTkUgR0NDX0FSTV9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQ19BTExfQ0NfRkxBR1MpIC1tbGl0dGxlLWVuZGlhbiAtbWFiaT1hYXBjcyAtZm5vLXNob3J0LWVudW1zIC1mdW5zaWduZWQtY2hhciAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV25vLWFkZHJlc3MgLW10aHVtYiAtbWZsb2F0LWFiaT1zb2Z0IC1mbm8tcGljIC1mbm8tcGllDQorQEAgLTQzNjksOSArNDM2OSw5IEBAIERFRklORSBHQ0NfQVJNX1JDX0ZMQUdTICAgICAgICAgICAgPSAtSQorIERFRklORSBHQ0NfQUFSQ0g2NF9SQ19GTEFHUyAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmNjQtbGl0dGxlYWFyY2g2NCAtQiBhYXJjaDY0IC0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9LmhpaQ0KKyANCisgREVGSU5FIEdDQzQ0X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQorLURFRklORSBHQ0M0NF9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0NF9BTExfQ0NfRkxBR1MpIC1tMzIgLW1hcmNoPWk1ODYgLW1hbGlnbi1kb3VibGUgLWZuby1zdGFjay1wcm90ZWN0b3IgLUQgRUZJMzIgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcw0KKytERUZJTkUgR0NDNDRfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZuby1QSUUgLW5vLXBpZQ0KKyBERUZJTkUgR0NDNDRfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTY0IC1mbm8tc3RhY2stcHJvdGVjdG9yICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcw0KKy1ERUZJTkUgR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwDQorK0RFRklORSBHQ0M0NF9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4MjAgLW5vLXBpZQ0KKyBERUZJTkUgR0NDNDRfSUEzMl9YNjRfQVNMRExJTktfRkxBR1MgPSBERUYoR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSxSZWZlcmVuY2VBY3BpVGFibGUgLXUgUmVmZXJlbmNlQWNwaVRhYmxlDQorIERFRklORSBHQ0M0NF9JQTMyX1g2NF9ETElOS19GTEFHUyAgICA9IERFRihHQ0M0NF9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LCQoSU1BR0VfRU5UUllfUE9JTlQpIC11ICQoSU1BR0VfRU5UUllfUE9JTlQpIC1XbCwtTWFwLCQoREVTVF9ESVJfREVCVUcpLyQoQkFTRV9OQU1FKS5tYXANCisgREVGSU5FIEdDQzQ0X0lBMzJfRExJTksyX0ZMQUdTICAgICAgID0gLVdsLC0tZGVmc3ltPVBFQ09GRl9IRUFERVJfU0laRT0weDIyMCBERUYoR0NDX0RMSU5LMl9GTEFHU19DT01NT04pDQorQEAgLTQ0NTEsNyArNDQ1MSw3IEBAIERFRklORSBHQ0M0OF9BQVJDSDY0X0FTTERMSU5LX0ZMQUdTICA9IEQKKyANCisgREVGSU5FIEdDQzQ5X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ4X0lBMzJfQ0NfRkxBR1MpDQorIERFRklORSBHQ0M0OV9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0OF9YNjRfQ0NfRkxBR1MpDQorLURFRklORSBHQ0M0OV9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4NDANCisrREVGSU5FIEdDQzQ5X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiAgID0gLW5vc3RkbGliIC1XbCwtbiwtcSwtLWdjLXNlY3Rpb25zIC16IGNvbW1vbi1wYWdlLXNpemU9MHg0MCAtbm8tcGllDQorIERFRklORSBHQ0M0OV9JQTMyX1g2NF9BU0xETElOS19GTEFHUyA9IERFRihHQ0M0OV9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LFJlZmVyZW5jZUFjcGlUYWJsZSAtdSBSZWZlcmVuY2VBY3BpVGFibGUNCisgREVGSU5FIEdDQzQ5X0lBMzJfWDY0X0RMSU5LX0ZMQUdTICAgID0gREVGKEdDQzQ5X0lBMzJfWDY0X0RMSU5LX0NPTU1PTikgLVdsLC0tZW50cnksJChJTUFHRV9FTlRSWV9QT0lOVCkgLXUgJChJTUFHRV9FTlRSWV9QT0lOVCkgLVdsLC1NYXAsJChERVNUX0RJUl9ERUJVRykvJChCQVNFX05BTUUpLm1hcA0KKyBERUZJTkUgR0NDNDlfSUEzMl9ETElOSzJfRkxBR1MgICAgICAgPSBERUYoR0NDNDhfSUEzMl9ETElOSzJfRkxBR1MpDQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2gKaW5kZXggOTQwMjlhNS4uOTRhZTVkNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoCkBAIC0xMCw2ICsxMCw3IEBACiB3aXRoIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbiBiZWZvcmUgYnVpbGRpbmcuCiAKIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgT3ZtZlBrZy9idWlsZC5zaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoCmluZGV4IDBmZGMyNzguLjY1YjVjMTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaApAQCAtNywzMyArNywzMyBAQAogdXNpbmcgdGhlIGJpdGJha2UgbmF0aXZlIHN5c3Jvb3QgaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3Rvcmllcy4KIAogU2lnbmVkLW9mZi1ieTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmlAbGludXguaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBCYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZSB8IDggKysrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotaW5kZXggODIxZDExNC4uZmUwZjA4YiAxMDA2NDQKLS0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCi0rKysgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotQEAgLTQ0LDE0ICs0NCwxNCBAQCBBUkNIX0lOQ0xVREUgPSAtSSAkKE1BS0VST09UKS9JbmNsdWRlL0FBcmNoNjQvCitJbmRleDogZ2l0L0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKKysrKyBnaXQvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKK0BAIC00NCwxNSArNDQsMTUgQEAgQVJDSF9JTkNMVURFID0gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9BQQogIGVuZGlmDQogIA0KICBJTkNMVURFID0gJChUT09MX0lOQ0xVREUpIC1JICQoTUFLRVJPT1QpIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvQ29tbW9uIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZCAtSSAkKE1BS0VST09UKS9Db21tb24vIC1JIC4uIC1JIC4gJChBUkNIX0lOQ0xVREUpIA0KIC1CVUlMRF9DUFBGTEFHUyA9ICQoSU5DTFVERSkgLU8yDQotK0JVSUxEX0NQUEZMQUdTIDo9ICQoQlVJTERfQ1BQRkxBR1MpICQoSU5DTFVERSkgLU8yDQorK0JVSUxEX0NQUEZMQUdTICs9ICQoSU5DTFVERSkgLU8yDQogIGlmZXEgKCQoREFSV0lOKSxEYXJ3aW4pDQogICMgYXNzdW1lIGNsYW5nIG9yIGNsYW5nIGNvbXBhdGlibGUgZmxhZ3Mgb24gT1MgWA0KIC1CVUlMRF9DRkxBR1MgPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1zZWxmLWFzc2lnbiAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1jIC1nDQotK0JVSUxEX0NGTEFHUyA6PSAkKEJVSUxEX0NGTEFHUykgLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc2VsZi1hc3NpZ24gLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtYyAtZw0KKytCVUlMRF9DRkxBR1MgKz0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc2VsZi1hc3NpZ24gLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtYyAtZw0KICBlbHNlDQogLUJVSUxEX0NGTEFHUyA9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1jIC1nDQotK0JVSUxEX0NGTEFHUyA6PSAkKEJVSUxEX0NGTEFHUykgLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWMgLWcNCisrQlVJTERfQ0ZMQUdTICs9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1jIC1nDQogIGVuZGlmDQogLUJVSUxEX0xGTEFHUyA9DQotK0JVSUxEX0xGTEFHUyA6PSAkKExERkxBR1MpDQotIEJVSUxEX0NYWEZMQUdTID0NCistQlVJTERfQ1hYRkxBR1MgPSAtV25vLXVudXNlZC1yZXN1bHQNCisrQlVJTERfTEZMQUdTID0gJChMREZMQUdTKQ0KKytCVUlMRF9DWFhGTEFHUyArPSAtV25vLXVudXNlZC1yZXN1bHQNCiAgDQogIGlmZXEgKCQoQVJDSCksIElBMzIpDQotLS0gCi0yLjkuMwotCisgIw0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTU0ZmJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK0Zyb20gMDMyZmM2YjFmNzY5MWJkNTM3ZmQyYTZiZDEzODIxZmNmM2M0NWU2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDExIFNlcCAyMDE3IDAyOjIxOjU1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIG92bWY6IGVuYWJsZSBsb25nIHBhdGggZmlsZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKK2luZGV4IDIwNDFiODllMmQuLjgxMTZhYTJlMzUgMTAwNjQ0CistLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCisrKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCitAQCAtMjIgKzIyIEBAIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuCistI2RlZmluZSBNQVhfTE9OR19GSUxFX1BBVEggNTAwDQorKyNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDEwMjMNCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU5YjFjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaApAQCAtMCwwICsxLDIwIEBACitBdXRob3I6IFN0ZXZlIExhbmdhc2VrIDxzdGV2ZS5sYW5nYXNla0B1YnVudHUuY29tPgorRGVzY3JpcHRpb246IHBhc3MgLWZuby1zdGFjay1wcm90ZWN0b3IgdG8gYWxsIEdDQyB0b29sY2hhaW5zCisgVGhlIHVwc3RyZWFtIGJ1aWxkIHJ1bGVzIGluZXhwbGljYWJseSBwYXNzIC1mbm8tc3RhY2stcHJvdGVjdG9yIG9ubHkKKyB3aGVuIGJ1aWxkaW5nIGZvciBpMzg2IGFuZCBhbWQ2NC4gIEFkZCB0aGlzIGVzc2VudGlhbCBhcmd1bWVudCB0byB0aGUKKyBnZW5lcmljIHJ1bGVzIGZvciBnY2MgNC40IGFuZCBsYXRlci4KK0xhc3QtVXBkYXRlZDogMjAxNi0wNC0xMgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitJbmRleDogZ2l0L0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorKysrIGdpdC9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKK0BAIC00MzY4LDcgKzQzNjgsNyBAQCBERUZJTkUgR0NDX0lQRl9SQ19GTEFHUyAgICAgICAgICAgID0gLUkKKyBERUZJTkUgR0NDX0FSTV9SQ19GTEFHUyAgICAgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjMyLWxpdHRsZWFybSAgICAgLUIgYXJtICAgICAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCisgREVGSU5FIEdDQ19BQVJDSDY0X1JDX0ZMQUdTICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGY2NC1saXR0bGVhYXJjaDY0IC1CIGFhcmNoNjQgLS1yZW5hbWUtc2VjdGlvbiAuZGF0YT0uaGlpDQorIA0KKy1ERUZJTkUgR0NDNDRfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCisrREVGSU5FIEdDQzQ0X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtZm5vLXN0YWNrLXByb3RlY3RvciAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQorIERFRklORSBHQ0M0NF9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0NF9BTExfQ0NfRkxBR1MpIC1tMzIgLW1hcmNoPWk1ODYgLW1hbGlnbi1kb3VibGUgLWZuby1zdGFjay1wcm90ZWN0b3IgLUQgRUZJMzIgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtZm5vLVBJRSAtbm8tcGllDQorIERFRklORSBHQ0M0NF9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0NF9BTExfQ0NfRkxBR1MpIC1tNjQgLWZuby1zdGFjay1wcm90ZWN0b3IgIi1ERUZJQVBJPV9fYXR0cmlidXRlX18oKG1zX2FiaSkpIiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbWNtb2RlbD1zbWFsbCAtZnBpZSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzDQorIERFRklORSBHQ0M0NF9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4MjANCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCmluZGV4IDlkOTg4ZTkuLmZhMGQ2NjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCkBAIC0xLDUgKzEsNyBAQAotREVTQ1JJUFRJT04gPSAiT1ZNRiAtIFVFRkkgZmlybXdhcmUgZm9yIFFlbXUgYW5kIEtWTSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvYXBwcy9tZWRpYXdpa2kvdGlhbm9jb3JlL2luZGV4LnBocD90aXRsZT1PVk1GIgorU1VNTUFSWSA9ICJPVk1GIC0gVUVGSSBmaXJtd2FyZSBmb3IgUWVtdSBhbmQgS1ZNIgorREVTQ1JJUFRJT04gPSAiT1ZNRiBpcyBhbiBFREsgSUkgYmFzZWQgcHJvamVjdCB0byBlbmFibGUgVUVGSSBzdXBwb3J0IGZvciBcCitWaXJ0dWFsIE1hY2hpbmVzLiBPVk1GIGNvbnRhaW5zIHNhbXBsZSBVRUZJIGZpcm13YXJlIGZvciBRRU1VIGFuZCBLVk0iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL3RpYW5vY29yZS5naXRodWIuaW8vd2lraS9PVk1GIgogTElDRU5TRSA9ICJCU0QiCiBMSUNFTlNFX2NsYXNzLXRhcmdldCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWN1cmVib290JywgJ0JTRCAmIE9wZW5TU0wnLCAnQlNEJywgZCl9IgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vT3ZtZlBrZy9MaWNlbnNlLnR4dDttZDU9MzQzZGM4OGU4MmZmMzNkMDQyMDc0ZjYyMDUwYzM0OTYiCkBAIC0xMSwyMCArMTMsMjUgQEAKIFBBQ0tBR0VDT05GSUdbc2VjdXJlYm9vdF0gPSAiLCwsIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIuZ2l0O2JyYW5jaD1tYXN0ZXIgXAorCWZpbGU6Ly8wMDAxLWlhMzItRG9udC11c2UtcGllLnBhdGNoIFwKIAlmaWxlOi8vMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2ggXAogCWZpbGU6Ly8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaCBcCisJZmlsZTovLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggXAogCWZpbGU6Ly9WZnJDb21waWxlLWluY3JlYXNlLXBhdGgtbGVuZ3RoLWxpbWl0LnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtTWRlTW9kdWxlUGtnLVVlZmlIaWlMaWItRml4LWluY29ycmVjdC1jb21wYXJpc29uLWV4cC5wYXRjaCBcCisJZmlsZTovL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2ggXAogICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKworT1BFTlNTTF9SRUxFQVNFID0gIm9wZW5zc2wtMS4xLjBlIgogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKLQkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWN1cmVib290JywgJ2h0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtMS4wLjJqLnRhci5nejtuYW1lPW9wZW5zc2w7c3ViZGlyPSR7U30vQ3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYicsICcnLCBkKX0gXAorCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlY3VyZWJvb3QnLCAnaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvJHtPUEVOU1NMX1JFTEVBU0V9LnRhci5nejtuYW1lPW9wZW5zc2w7c3ViZGlyPSR7U30vQ3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYicsICcnLCBkKX0gXAogCWZpbGU6Ly8wMDA3LU92bWZQa2ctRW5yb2xsRGVmYXVsdEtleXMtYXBwbGljYXRpb24tZm9yLWVucm9sbGluZy0ucGF0Y2ggXAogIgogCi1TUkNSRVY9IjQ1NzVhNjAyY2E2MDcyZWU5ZDA0MTUwYjM4YmZiMTQzY2JmZjg1ODgiCi1TUkNfVVJJW29wZW5zc2wubWQ1c3VtXSA9ICI5NjMyMjEzOGYwYjY5ZTYxYjcyMTJiYzUzZDVlOTEyYiIKLVNSQ19VUklbb3BlbnNzbC5zaGEyNTZzdW1dID0gImU3YWZmMjkyYmUyMWMyNTljNmFmMjY0NjljN2E5YjNiYTI2ZTlhYmFhZmZkMzI1ZTNkY2NjOTc4NTI1NmM0MzEiCitTUkNSRVY9ImVjNDkxMGNkMzMzNjU2NWZkYjYxZGFmZGQ5ZWM0YWU3YTYxNjBiYTMiCitTUkNfVVJJW29wZW5zc2wubWQ1c3VtXSA9ICI1MWM0MmQxNTIxMjJlNDc0NzU0YWVhOTZmNjY5MjhjNiIKK1NSQ19VUklbb3BlbnNzbC5zaGEyNTZzdW1dID0gIjU3YmU4NjE4OTc5ZDgwYzkxMDcyOGNmYzk5MzY5YmY5N2IyYTFhYmQ4ZjM2NmFiNmViZGVlODk3NWFkMzg3NGMiCiAKIGluaGVyaXQgZGVwbG95CiAKQEAgLTE0NCw3ICsxNTEsNyBAQAogCiBkb19jb21waWxlX2NsYXNzLXRhcmdldCgpIHsKICAgICBleHBvcnQgTEZMQUdTPSIke0xERkxBR1N9IgotICAgIFBBUkFMTEVMX0pPQlM9IiR7QCAnJHtQQVJBTExFTF9NQUtFfScucmVwbGFjZSgnLWonLCAnLW4nKX0iCisgICAgUEFSQUxMRUxfSk9CUz0iJHtAICcke1BBUkFMTEVMX01BS0V9Jy5yZXBsYWNlKCctaicsICctbiAnKX0iCiAgICAgT1ZNRl9BUkNIPSJYNjQiCiAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iICE9ICJ4ODZfNjQiIF0gOyB0aGVuCiAgICAgICAgIE9WTUZfQVJDSD0iSUEzMiIKQEAgLTE4NiwxMCArMTkzLDcgQEAKICAgICAgICAgIyBidWlsZGluZyB3aXRoIFNlY3VyZSBCb290IGVuYWJsZWQuCiAgICAgICAgIGJibm90ZSAiQnVpbGRpbmcgd2l0aCBTZWN1cmUgQm9vdC4iCiAgICAgICAgIHJtIC1yZiAke1N9L0J1aWxkL092bWYkT1ZNRl9ESVJfU1VGRklYCi0gICAgICAgIGlmICEgWyAtZiAke1N9L0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5zc2xMaWIvb3BlbnNzbC0qL2VkazItcGF0Y2gtYXBwbGllZCBdOyB0aGVuCi0gICAgICAgICAgICAoIGNkICR7U30vQ3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYi9vcGVuc3NsLSogJiYgcGF0Y2ggLXAxIDwkKGVjaG8gLi4vRURLSUlfb3BlbnNzbC0qLnBhdGNoKSAmJiB0b3VjaCBlZGsyLXBhdGNoLWFwcGxpZWQgKQotICAgICAgICBmaQotICAgICAgICAoIGNkICR7U30vQ3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYi8gJiYgLi9JbnN0YWxsLnNoICkKKyAgICAgICAgbG4gLXNmICR7T1BFTlNTTF9SRUxFQVNFfSAke1N9L0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5zc2xMaWIvb3BlbnNzbAogICAgICAgICAke1N9L092bWZQa2cvYnVpbGQuc2ggJFBBUkFMTEVMX0pPQlMgLWEgJE9WTUZfQVJDSCAtYiBSRUxFQVNFIC10ICR7RklYRURfR0NDVkVSfSAke09WTUZfU0VDVVJFX0JPT1RfRkxBR1N9CiAgICAgICAgIGxuICR7YnVpbGRfZGlyfS9GVi9PVk1GLmZkICR7V09SS0RJUn0vb3ZtZi9vdm1mLnNlY2Jvb3QuZmQKICAgICAgICAgbG4gJHtidWlsZF9kaXJ9L0ZWL09WTUZfQ09ERS5mZCAke1dPUktESVJ9L292bWYvb3ZtZi5zZWNib290LmNvZGUuZmQKQEAgLTI0MSwzICsyNDUsNCBAQAogYWRkdGFzayBkb19kZXBsb3kgYWZ0ZXIgZG9fY29tcGlsZSBiZWZvcmUgZG9fYnVpbGQKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIKaW5kZXggMmNhNjM5Mi4uYWVlNGEwMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCkBAIC00LDcgKzQsNiBAQAogCiBTVU1NQVJZID0gIkhvc3QgcGFja2FnZXMgZm9yIHRoZSBzdGFuZGFsb25lIFNESyBvciBleHRlcm5hbCB0b29sY2hhaW4iCiBQUiA9ICJyMTIiCi1MSUNFTlNFID0gIk1JVCIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAgbmF0aXZlc2RrCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKaW5kZXggMDA2OWUzZS4uZjllNmUyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKQEAgLTIwNCw3ICsyMDQsNyBAQAogU1VNTUFSWV9wYWNrYWdlZ3JvdXAtYmFzZS1ibHVldG9vdGggPSAiQmx1ZXRvb3RoIHN1cHBvcnQiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtYmFzZS1ibHVldG9vdGggPSAiXAogICAgICR7QkxVRVp9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQ09NQklORURfRkVBVFVSRVMnLCAnYWxzYScsICdsaWJhc291bmQtbW9kdWxlLWJsdWV6JywgJycsZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQ09NQklORURfRkVBVFVSRVMnLCAnYWxzYScsIGJiLnV0aWxzLmNvbnRhaW5zKCdCTFVFWicsICdibHVlejQnLCAnbGliYXNvdW5kLW1vZHVsZS1ibHVleicsICcnLCBkKSwgJycsZCl9IFwKICAgICAiCiAKIFJSRUNPTU1FTkRTX3BhY2thZ2Vncm91cC1iYXNlLWJsdWV0b290aCA9ICJcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKaW5kZXggN2Q2ZDQxNC4uYWYwY2UyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgpAQCAtMzMsNyArMzMsNiBAQAogU0FOSVRJWkVSU19wb3dlcnBjNjQgPSAiIgogU0FOSVRJWkVSU19zcGFyYyA9ICIiCiBTQU5JVElaRVJTX2xpYmMtbXVzbCA9ICIiCi1TQU5JVElaRVJTX2xpYmMtdWNsaWJjID0gIiIKIAogUlJFQ09NTUVORFNfcGFja2FnZWdyb3VwLWNvcmUtc2RrID0gIlwKICAgICBsaWJnb21wIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCmluZGV4IDk0NmM5NDcuLmE4ZTQ3ZGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgpAQCAtMzEsMjMgKzMxLDE1IEBACiBQRVJGID0gInBlcmYiCiBQRVJGX2xpYmMtbXVzbCA9ICIiCiAKLSMgc3lzdGVtdGFwIG5lZWRzIGVsZnV0aWxzIHdoaWNoIGlzIG5vdCBmdWxseSBidWlsZGFibGUgb24gdWNsaWJjCi0jIGhlbmNlIHdlIGV4Y2x1ZGUgaXQgZnJvbSB1Y2xpYmMgYmFzZWQgYnVpbGRzCisjIHN5c3RlbXRhcCBuZWVkcyBlbGZ1dGlscyB3aGljaCBpcyBub3QgZnVsbHkgYnVpbGRhYmxlIG9uIHNvbWUgYXJjaGVzL2xpYmNzCiBTWVNURU1UQVAgPSAic3lzdGVtdGFwIgotU1lTVEVNVEFQX2xpYmMtdWNsaWJjID0gIiIKIFNZU1RFTVRBUF9saWJjLW11c2wgPSAiIgogU1lTVEVNVEFQX21pcHNhcmNoID0gIiIKIFNZU1RFTVRBUF9uaW9zMiA9ICIiCiBTWVNURU1UQVBfYWFyY2g2NCA9ICIiCiAKLSMgbHR0bmctdXN0IHVzZXMgc2NoZWRfZ2V0Y3B1KCkgd2hpY2ggaXMgbm90IHRoZXJlIG9uIHVjbGliYwotIyBmb3Igc29tZSBvZiB0aGUgYXJjaGl0ZWN0dXJlcyBpdCBjYW4gYmUgcGF0Y2hlZCB0byBjYWxsIHRoZQotIyBzeXNjYWxsIGRpcmVjdGx5IGJ1dCBmb3IgeDg2XzY0IF9fTlJfZ2V0Y3B1IGlzIGEgdnN5c2NhbGwKLSMgd2hpY2ggbWVhbnMgd2UgY2FuIG5vdCB1c2Ugc3lzY2FsbCgpIHRvIGNhbGwgaXQuIFNvIHdlIGlnbm9yZQotIyBpdCBmb3IgeDg2XzY0L3VjbGliYwotCisjIGx0dG5nLXVzdCB1c2VzIHNjaGVkX2dldGNwdSgpIHdoaWNoIGlzIG5vdCB0aGVyZSBvbiBmb3Igc29tZSBwbGF0Zm9ybXMuCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCi1MVFROR1VTVF9saWJjLXVjbGliYyA9ICIiCiBMVFROR1VTVF9saWJjLW11c2wgPSAiIgogCiBMVFROR1RPT0xTID0gImx0dG5nLXRvb2xzIgpAQCAtNjAsMTMgKzUyLDEzIEBACiAjIHZhbGdyaW5kIGRvZXMgbm90IHdvcmsgb24gdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucy9hcmNoaXRlY3R1cmVzCiAKIFZBTEdSSU5EID0gInZhbGdyaW5kIgotVkFMR1JJTkRfbGliYy11Y2xpYmMgPSAiIgogVkFMR1JJTkRfbGliYy1tdXNsID0gIiIKIFZBTEdSSU5EX21pcHNhcmNoID0gIiIKIFZBTEdSSU5EX25pb3MyID0gIiIKIFZBTEdSSU5EX2FybXY0ID0gIiIKIFZBTEdSSU5EX2FybXY1ID0gIiIKIFZBTEdSSU5EX2FybXY2ID0gIiIKK1ZBTEdSSU5EX2FybWViID0gIiIKIFZBTEdSSU5EX2FhcmNoNjQgPSAiIgogVkFMR1JJTkRfbGludXgtZ251eDMyID0gIiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLWNyb3NzLWNhbmFkaWFuLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLWNyb3NzLWNhbmFkaWFuLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYWFjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tY3Jvc3MtY2FuYWRpYW4uYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJIb3N0IFNESyBwYWNrYWdlIGZvciBHbyBjcm9zcyBjYW5hZGlhbiB0b29sY2hhaW4iCitQTiA9ICJwYWNrYWdlZ3JvdXAtZ28tY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSIKKworaW5oZXJpdCBjcm9zcy1jYW5hZGlhbiBwYWNrYWdlZ3JvdXAKKworUEFDS0FHRUdST1VQX0RJU0FCTEVfQ09NUExFTUVOVEFSWSA9ICIxIgorCitHTyA9ICJnby1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9IgorCitSREVQRU5EU18ke1BOfSA9ICIgXAorICAgICR7QGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCAnR08nKX0gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTE5MDc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKQEAgLTAsMCArMSw4IEBACitTVU1NQVJZID0gIlRhcmdldCBwYWNrYWdlcyBmb3IgdGhlIEdvIFNESyIKKworaW5oZXJpdCBwYWNrYWdlZ3JvdXAgZ29hcmNoCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgZ28tcnVudGltZSBcCisgICAgZ28tcnVudGltZS1kZXYgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCmluZGV4IGMxYmJkZmMuLmZmNDI4NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKQEAgLTQyLDcgKzQyLDYgQEAKICAgICBtYy1maXNoIFwKICAgICBtYy1oZWxwZXJzIFwKICAgICBtYy1oZWxwZXJzLXBlcmwgXAotICAgIG1jLWhlbHBlcnMtcHl0aG9uIFwKICAgICBwYXJ0ZWQgXAogICAgICR7UFNFVURPfSBcCiAgICAgc2NyZWVuIFwKQEAgLTE0MSwxNyArMTQwLDE5IEBACiAgICAgbmZzLXV0aWxzIFwKICAgICBuZnMtdXRpbHMtY2xpZW50IFwKICAgICBvcGVuc3NsIFwKKyAgICBvcGVuc3NoLXNjcCBcCiAgICAgb3BlbnNzaC1zZnRwLXNlcnZlciBcCisgICAgb3BlbnNzaC1zc2ggXAogICAgIG9wa2cgXAogICAgIG9wa2ctdXRpbHMgXAogICAgIHBhdGNoIFwKICAgICBwZXJsIFwKICAgICBwZXJsLWRldiBcCisgICAgcGVybC1taXNjIFwKICAgICBwZXJsLW1vZHVsZXMgXAogICAgIHBlcmwtcG9kIFwKICAgICBweXRob24gXAogICAgIHB5dGhvbi1tb2R1bGVzIFwKLSAgICBweXRob24tZ2l0IFwKICAgICBweXRob24zIFwKICAgICBweXRob24zLW1vZHVsZXMgXAogICAgIHB5dGhvbjMtZ2l0IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdAppbmRleCA2NmM4NWU5Li4wYmNlMWRlIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1pbml0CkBAIC03LDYgKzcsMTIgQEAKICMgRGVmYXVsdC1TdG9wOgogIyMjIEVORCBJTklUIElORk8KIAoraWYgWyAhIC1lIC9kZXYvZmIwIF07IHRoZW4KKyAgICBlY2hvICJGcmFtZWJ1ZmZlciAvZGV2L2ZiMCBub3QgZGV0ZWN0ZWQiCisgICAgZWNobyAiQm9vdCBzcGxhc2hzY3JlZW4gZGlzYWJsZWQiCisgICAgZXhpdCAwOworZmkKKwogcmVhZCBDTURMSU5FIDwgL3Byb2MvY21kbGluZQogZm9yIHggaW4gJENNRExJTkU7IGRvCiAgICAgICAgIGNhc2UgJHggaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKaW5kZXggNDQyOTdlMS4uM2I3ZjgxOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKQEAgLTUsMTMgKzUsMTQgQEAKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcHNwbGFzaC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTY7bWQ1PTg0MGZiMjM1NmIxMGE4NWJlZDc4ZGQwOWRjNzc0NWM2IgogCi1TUkNSRVYgPSAiODgzNDNhZDIzYzkwZmExZGQ4ZDc5YWMwZDc4NGE2OTFhYTBjNmQyYiIKK1NSQ1JFViA9ICIyMDE1ZjcwNzNlOThkZDk1NjJkYjA5MzZhMjU0YWY1ZWY1NjM1NmNmIgogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogUFIgPSAicjE1IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSBcCiAgICAgICAgICAgIGZpbGU6Ly9wc3BsYXNoLWluaXQgXAogICAgICAgICAgICAke1NQTEFTSF9JTUFHRVN9IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNQTEFTSF9JTUFHRVMgPSAiZmlsZTovL3BzcGxhc2gtcG9reS1pbWcuaDtvdXRzdWZmaXg9ZGVmYXVsdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMKaW5kZXggMWEwYTE1NS4uZTk2NjUyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jCkBAIC00LDYgKzQsNyBAQAogYWRkaXRpb25hbCBmdW5jdGlvbnMgdG8gbWFpbnRhaW4gYSBsaXN0IG9mIHByZXZpb3VzbHktZW50ZXJlZCBjb21tYW5kIGxpbmVzLCB0byByZWNhbGwgYW5kIHBlcmhhcHMgcmVlZGl0IHRob3NlICAgXAogbGluZXMsIGFuZCBwZXJmb3JtIGNzaC1saWtlIGhpc3RvcnkgZXhwYW5zaW9uIG9uIHByZXZpb3VzIGNvbW1hbmRzLiIKIFNFQ1RJT04gPSAibGlicyIKK0hPTUVQQUdFID0gImh0dHBzOi8vY25zd3d3LmNucy5jd3J1LmVkdS9waHAvY2hldC9yZWFkbGluZS9ybHRvcC5odG1sIgogCiAjIEdQTHYyKyAoPCA2LjApLCBHUEx2MysgKD49IDYuMCkKIExJQ0VOU0UgPSAiR1BMdjMrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxOGIyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzQuYmIKQEAgLTAsMCArMSw0MyBAQAorcmVxdWlyZSBzeXN0ZW1kLmluYworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vc3lzdGVtZDoiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBkZXBsb3kKKworRUZJX0NDID89ICIke0NDfSIKKyMgTWFuIHBhZ2VzIGFyZSBwYWNrYWdlZCB0aHJvdWdoIHRoZSBtYWluIHN5c3RlbWQgcmVjaXBlCitFWFRSQV9PRUNPTkYgPSAiIC0tZW5hYmxlLWdudWVmaSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1lZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbWFucGFnZXMgXAorICAgICAgICAgICAgICAgICBFRklfQ0M9JyR7RUZJX0NDfScgXAorICAgICAgICAgICAgICAgIgorCisjIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgorQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUX2xpbnV4LWdudXgzMiA9ICJudWxsIgorCitkb19jb21waWxlKCkgeworCVNZU1RFTURfQk9PVF9FRklfQVJDSD0iaWEzMiIKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCisJCVNZU1RFTURfQk9PVF9FRklfQVJDSD0ieDY0IgorCWZpCisKKwlvZV9ydW5tYWtlIHN5c3RlbWQtYm9vdCR7U1lTVEVNRF9CT09UX0VGSV9BUkNIfS5lZmkKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIEJ5cGFzcyBzeXN0ZW1kIGluc3RhbGxhdGlvbiB3aXRoIGEgTk9QCisJOgorfQorCitkb19kZXBsb3kgKCkgeworCWluc3RhbGwgJHtCfS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KK30KK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCmluZGV4IGZlOWE1MjEuLmQyMjhhNTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJFbmhhbmNlcyBzeXN0ZW1kIGNvbXBhdGlsaWJpdHkgd2l0aCBleGlzdGluZyBTeXNWaW5pdCBzY3JpcHRzIgotCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQiCiBMSUNFTlNFID0gIk1JVCIKIAogUFIgPSAicjI5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lLXVuaXRzXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZS11bml0c18xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI3NTZmNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZS11bml0c18xLjAuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJNYWNoaW5lIHNwZWNpZmljIHN5c3RlbWQgdW5pdHMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1BSID0gInIxOSIKKworaW5oZXJpdCBzeXN0ZW1kCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKaW5kZXggNzY4YjEzMC4uZDkzNDcxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJTZXJpYWwgdGVybWluYWwgc3VwcG9ydCBmb3Igc3lzdGVtZCIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQvIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiIKIApAQCAtMzgsOCArMzksNiBAQAogCWZpCiB9CiAKLVJERVBFTkRTXyR7UE59ID0gInN5c3RlbWQiCi0KICMgVGhpcyBpcyBhIG1hY2hpbmUgc3BlY2lmaWMgZmlsZQogRklMRVNfJHtQTn0gPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UgJHtzeXNjb25mZGlyfSIKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCkBAIC00OSwzICs0OCw1IEBACiAgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCiB9CisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwKaW5kZXggZWZhZDE0Yy4uNmU1YTFiNyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc3lzdGVtY3RsL3N5c3RlbWN0bApAQCAtMTA4LDcgKzEwOCw3IEBACiAKIAkjIElmIGFueSBuZXcgdW5pdCB0eXBlcyBhcmUgYWRkZWQgdG8gc3lzdGVtZCB0aGV5IHNob3VsZCBiZSBhZGRlZAogCSMgdG8gdGhpcyByZWd1bGFyIGV4cHJlc3Npb24uCi0JdW5pdF90eXBlc19yZT0nXC5cKHNlcnZpY2VcfHNvY2tldFx8ZGV2aWNlXHxtb3VudFx8YXV0b21vdW50XHxzd2FwXHx0YXJnZXRcfHBhdGhcfHRpbWVyXHxzbmFwc2hvdFwpXHMqJCcKKwl1bml0X3R5cGVzX3JlPSdcLlwoc2VydmljZVx8c29ja2V0XHxkZXZpY2VcfG1vdW50XHxhdXRvbW91bnRcfHN3YXBcfHRhcmdldFx8dGFyZ2V0XC53YW50c1x8cGF0aFx8dGltZXJcfHNuYXBzaG90XClccyokJwogCWlmIFsgIiRhY3Rpb24iID0gInByZXNldCIgXTsgdGhlbgogCQlhY3Rpb249YGVncmVwIC1zaCAgJHNlcnZpY2UgJFJPT1QvZXRjL3N5c3RlbWQvdXNlci1wcmVzZXQvKi5wcmVzZXQgfCBjdXQgLWYxIC1kJyAnYAogCQlpZiBbIC16ICIkYWN0aW9uIiBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCmluZGV4IDI5ZTBiZTYuLmQ5OWQxNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCkBAIC0xNCwxMCArMTQsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkxHUEwyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgogCi1TUkNSRVYgPSAiYTFlMmVmN2VjOTEyOTAyZDgxNDJlN2NiNTgzMGNiZmI0N2RiYTg2YyIKK1NSQ1JFViA9ICJjMWVkYWI3YWQxZTdjY2M5YmU2OTNiZWRmZDQ2NGNkMWNiZmZiMzk1IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLmdpdDtwcm90b2NvbD1naXQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHJ0IC1sc3NwX25vbnNoYXJlZCAtbHNzcCAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NTk5ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDNjYTUzMjY0ODVjYjE5ZTc3NWFmNmRlNjE1YzE3YmU2NmU0NGU0NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNCBPY3QgMjAxNyAyMzowODoyNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEZWZpbmUgX1BBVEhfV1RNUFggYW5kIF9QQVRIX1VUTVBYIGlmIG5vdCBkZWZpbmVkCisKK011c2wgbmVlZHMgdGhlc2UgZGVmaW5lcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9zaGFyZWQvdXRtcC13dG1wLmMgfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKK2luZGV4IDk3NTBkY2Q4MS4uYmQ1NWQ3NGExIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYworKysrIGIvc3JjL3NoYXJlZC91dG1wLXd0bXAuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHV0bXAuaD4KKyAjaW5jbHVkZSA8dXRtcHguaD4KKyAKKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorQEAgLTQxLDYgKzQyLDEzIEBACisgI2luY2x1ZGUgInV0aWwuaCIKKyAjaW5jbHVkZSAidXRtcC13dG1wLmgiCisgCisrI2lmIGRlZmluZWQgX1BBVEhfVVRNUCAmJiAhZGVmaW5lZCBfUEFUSF9VVE1QWAorKyMgZGVmaW5lIF9QQVRIX1VUTVBYIF9QQVRIX1VUTVAKKysjZW5kaWYKKysjaWYgZGVmaW5lZCBfUEFUSF9XVE1QICYmICFkZWZpbmVkIF9QQVRIX1dUTVBYCisrIyBkZWZpbmUgX1BBVEhfV1RNUFggX1BBVEhfV1RNUAorKyNlbmRpZgorKworIGludCB1dG1wX2dldF9ydW5sZXZlbChpbnQgKnJ1bmxldmVsLCBpbnQgKnByZXZpb3VzKSB7CisgICAgICAgICBzdHJ1Y3QgdXRtcHggKmZvdW5kLCBsb29rdXAgPSB7IC51dF90eXBlID0gUlVOX0xWTCB9OworICAgICAgICAgaW50IHI7CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzlkYzc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApAQCAtMCwwICsxLDg5IEBACitGcm9tIGIyZDQxNzFjNmU1MjFjZjFlNzAzMzFmYjc2OTIzNGQ2M2E0YTZkNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAxMzowMDo0MSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKKworUFJJdXszMiw2NH0gaXMgbm90IHJpZ2h0IGZvcm1hdCB0byByZXByZXNlbnQgcmxpbV90IHR5cGUKK3RoZXJlZm9yZSB1c2UgJWp1IGFuZCB0eXBlY2FzdCB0aGUgcmxpbV90IHZhcmlhYmxlcyB0bwordWludG1heF90LgorCitGaXhlcyBwb3J0YWJsaWxpdHkgZXJyb3JzIGxpa2UKKworZXhlY3V0ZS5jOjM0NDY6MzY6IGVycm9yOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdybGltX3Qge2FrYSBsb25nIGxvbmcgdW5zaWduZWQgaW50fScgWy1XZXJyb3I9Zm9ybWF0PV0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvNzE5OV0KKworIHNyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIHwgOCAtLS0tLS0tLQorIHNyYy9iYXNpYy9ybGltaXQtdXRpbC5jIHwgOCArKysrLS0tLQorIHNyYy9jb3JlL2V4ZWN1dGUuYyAgICAgIHwgOCArKysrLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKK2luZGV4IGFlNDJhOGY4OS4uMTQ0MjQ5Y2Q2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKKysrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCitAQCAtNjAsMTQgKzYwLDYgQEAKKyAjICBkZWZpbmUgUFJJX1RJTUVYICJsaSIKKyAjZW5kaWYKKyAKKy0jaWYgU0laRU9GX1JMSU1fVCA9PSA4CistIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1NjQKKy0jZWxpZiBTSVpFT0ZfUkxJTV9UID09IDQKKy0jICBkZWZpbmUgUkxJTV9GTVQgIiUiIFBSSXUzMgorLSNlbHNlCistIyAgZXJyb3IgVW5rbm93biBybGltX3Qgc2l6ZQorLSNlbmRpZgorLQorICNpZiBTSVpFT0ZfREVWX1QgPT0gOAorICMgIGRlZmluZSBERVZfRk1UICIlIiBQUkl1NjQKKyAjZWxpZiBTSVpFT0ZfREVWX1QgPT0gNAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKK2luZGV4IGNhODM0ZGY2Mi4uNDFmY2ViYjc0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCitAQCAtMjg0LDEzICsyODQsMTMgQEAgaW50IHJsaW1pdF9mb3JtYXQoY29uc3Qgc3RydWN0IHJsaW1pdCAqcmwsIGNoYXIgKipyZXQpIHsKKyAgICAgICAgIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSAmJiBybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKKyAgICAgICAgICAgICAgICAgcyA9IHN0cmR1cCgiaW5maW5pdHkiKTsKKyAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZKQorLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eToiIFJMSU1fRk1ULCBybC0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eTolanUiLCAodWludG1heF90KXJsLT5ybGltX21heCk7CisgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOmluZmluaXR5IiwgcmwtPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OmluZmluaXR5IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOworICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID09IHJsLT5ybGltX21heCkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOworICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1UICI6IiBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyLCBybC0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanU6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIsICh1aW50bWF4X3QpcmwtPnJsaW1fbWF4KTsKKyAKKyAgICAgICAgIGlmICghcykKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitpbmRleCBkNzJlNWJmMDguLmQzODk0NjAwMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYworKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitAQCAtMzQ0MywxMCArMzQ0MywxMCBAQCB2b2lkIGV4ZWNfY29udGV4dF9kdW1wKEV4ZWNDb250ZXh0ICpjLCBGSUxFKiBmLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKKyAKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSTElNX05MSU1JVFM7IGkrKykKKyAgICAgICAgICAgICAgICAgaWYgKGMtPnJsaW1pdFtpXSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7CistICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlc1NvZnQ6ICIgUkxJTV9GTVQgIlxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogJWp1XG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAlanVcbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksICh1aW50bWF4X3QpYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7CisgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChjLT5pb3ByaW9fc2V0KSB7CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJmNzQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMCwwICsxLDQzMyBAQAorRnJvbSAwOTMzY2E2MjUxODA4Zjg1NmI5MmIwY2U4ZGE4Njk2ZDVmZWJjMzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjQxOjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTJdIGFkZCBmYWxsYmFjayBwYXJzZV9wcmludGZfZm9ybWF0IGltcGxlbWVudGF0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgIHwgICAyICsKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIHwgIDU3ICsrKysrKysrKworIHNyYy9iYXNpYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDIgKy0KKyBzcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyAgICAgIHwgICAyICstCisgNiBmaWxlcyBjaGFuZ2VkLCAzMzggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA2OTJkN2JiOTUuLjNjYzhmMzQ1MSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTk5Nyw2ICs5OTcsMTAgQEAgbGliYmFzaWNfbGFfU09VUkNFUyA9IFwKKyAJc3JjL2Jhc2ljL2pvdXJuYWwtaW1wb3J0ZXIuaCBcCisgCXNyYy9iYXNpYy9qb3VybmFsLWltcG9ydGVyLmMKKyAKKytpZiAhSEFWRV9QUklOVEZfSAorK2xpYmJhc2ljX2xhX1NPVVJDRVMgKz0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworK2VuZGlmCisrCisgbm9kaXN0X2xpYmJhc2ljX2xhX1NPVVJDRVMgPSBcCisgCXNyYy9iYXNpYy9lcnJuby1mcm9tLW5hbWUuaCBcCisgCXNyYy9iYXNpYy9lcnJuby10by1uYW1lLmggXAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNjBlN2RmNWVlLi5lZmNkYzZjMTYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMwOCw4ICszMDgsMTAgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbdWNoYXIuaF0sIFtdLCBbXSkKKyBBQ19DSEVDS19IRUFERVJTKFtzeXMvY2FwYWJpbGl0eS5oXSwgW10sIFtBQ19NU0dfRVJST1IoWyoqKiBQT1NJWCBjYXBzIGhlYWRlcnMgbm90IGZvdW5kXSldKQorIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L2J0cmZzLmhdLCBbXSwgW10pCisgQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvbWVtZmQuaF0sIFtdLCBbXSkKKytBQ19DSEVDS19IRUFERVJTKFtwcmludGYuaF0sIFtdLCBbXSkKKyBBQ19DSEVDS19IRUFERVJTKFtsaW51eC92bV9zb2NrZXRzLmhdLCBbXSwgW10sIFsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPl0pCisgCisrQU1fQ09ORElUSU9OQUwoSEFWRV9QUklOVEZfSCwgW3Rlc3QgIngkYWNfY3ZfaGVhZGVyX3ByaW50Zl9oIiA9IHh5ZXNdKQorICMgdW5jb25kaXRpb25hbGx5IHB1bGwtaW4gbGlicnQgd2l0aCBvbGQgZ2xpYmMgdmVyc2lvbnMKKyBBQ19TRUFSQ0hfTElCUyhbY2xvY2tfZ2V0dGltZV0sIFtydF0sIFtdLCBbXSkKKyAKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uNDk0MzdlNTQ0CistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCitAQCAtMCwwICsxLDI3MyBAQAorKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KKysKKysvKioqCisrICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgorKworKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CisrCisrICBXaXRoIHBhcnRzIGZyb20gdGhlIG11c2wgQyBsaWJyYXJ5CisrICBDb3B5cmlnaHQgMjAwNS0yMDE0IFJpY2ggRmVsa2VyLCBldCBhbC4KKysKKysgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKysgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyoqKi8KKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbm9uYXJnKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIH0gd2hpbGUgKCpmbXQrKyAhPSAnJScpOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbnVtKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICBmb3IgKDsqZm10ID49ICcwJyAmJiAqZm10IDw9ICc5JzsgZm10KyspCisrICAgICAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87CisrICAgICAgICByZXR1cm4gZm10OworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9hcmduKGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90ICphcmcpCisreworKyAgICAgICAgY29uc3QgY2hhciAqcCA9IGZtdDsKKysgICAgICAgIHNpemVfdCB2YWwgPSAwOworKworKyAgICAgICAgaWYgKCpwIDwgJzEnIHx8ICpwID4gJzknKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICB2YWwgPSAxMCp2YWwgKyAoKnArKyAtICcwJyk7CisrICAgICAgICB9IHdoaWxlICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKKysKKysgICAgICAgIGlmICgqcCAhPSAnJCcpCisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICAqYXJnID0gdmFsOworKyAgICAgICAgcmV0dXJuIHArMTsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfZmxhZ3MoY29uc3QgY2hhciAqZm10KQorK3sKKysgICAgICAgIHdoaWxlICgxKSB7CisrICAgICAgICAgICAgICAgIHN3aXRjaCAoKmZtdCkgeworKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnMCc6CisrICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorKyAgICAgICAgICAgICAgICBjYXNlICcgJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnKyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ1wnJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnSSc6CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIH0KKyt9CisrCisrZW51bSBzdGF0ZSB7CisrICAgICAgICBCQVJFLAorKyAgICAgICAgTFBSRSwKKysgICAgICAgIExMUFJFLAorKyAgICAgICAgSFBSRSwKKysgICAgICAgIEhIUFJFLAorKyAgICAgICAgQklHTFBSRSwKKysgICAgICAgIFpUUFJFLAorKyAgICAgICAgSlBSRSwKKysgICAgICAgIFNUT1AKKyt9OworKworK2VudW0gdHlwZSB7CisrICAgICAgICBOT05FLAorKyAgICAgICAgUFRSLAorKyAgICAgICAgSU5ULAorKyAgICAgICAgVUlOVCwKKysgICAgICAgIFVMTE9ORywKKysgICAgICAgIExPTkcsCisrICAgICAgICBVTE9ORywKKysgICAgICAgIFNIT1JULAorKyAgICAgICAgVVNIT1JULAorKyAgICAgICAgQ0hBUiwKKysgICAgICAgIFVDSEFSLAorKyAgICAgICAgTExPTkcsCisrICAgICAgICBTSVpFVCwKKysgICAgICAgIElNQVgsCisrICAgICAgICBVTUFYLAorKyAgICAgICAgUERJRkYsCisrICAgICAgICBVSVBUUiwKKysgICAgICAgIERCTCwKKysgICAgICAgIExEQkwsCisrICAgICAgICBNQVhUWVBFCisrfTsKKysKKytzdGF0aWMgY29uc3Qgc2hvcnQgcGFfdHlwZXNbTUFYVFlQRV0gPSB7CisrICAgICAgICBbTk9ORV0gICA9IFBBX0lOVCwKKysgICAgICAgIFtQVFJdICAgID0gUEFfUE9JTlRFUiwKKysgICAgICAgIFtJTlRdICAgID0gUEFfSU5ULAorKyAgICAgICAgW1VJTlRdICAgPSBQQV9JTlQsCisrICAgICAgICBbVUxMT05HXSA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW0xPTkddICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbVUxPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtTSE9SVF0gID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKKysgICAgICAgIFtVU0hPUlRdID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKKysgICAgICAgIFtDSEFSXSAgID0gUEFfQ0hBUiwKKysgICAgICAgIFtVQ0hBUl0gID0gUEFfQ0hBUiwKKysgICAgICAgIFtMTE9OR10gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbU0laRVRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtJTUFYXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1BESUZGXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtVSVBUUl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW0RCTF0gICAgPSBQQV9ET1VCTEUsCisrICAgICAgICBbTERCTF0gICA9IFBBX0RPVUJMRSB8IFBBX0ZMQUdfTE9OR19ET1VCTEUKKyt9OworKworKyNkZWZpbmUgUyh4KSBbKHgpLSdBJ10KKysjZGVmaW5lIEUoeCkgKFNUT1AgKyAoeCkpCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3RhdGVzW11bJ3onLSdBJysxXSA9IHsKKysgICAgICAgIHsgLyogMDogYmFyZSB0eXBlcyAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKElOVCksIFMoJ2knKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVSU5UKSxTKCd1JykgPSBFKFVJTlQpLFMoJ3gnKSA9IEUoVUlOVCksIFMoJ1gnKSA9IEUoVUlOVCksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgUygnZicpID0gRShEQkwpLCBTKCdnJykgPSBFKERCTCksICBTKCdhJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoREJMKSwgUygnRicpID0gRShEQkwpLCBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoQ0hBUiksUygnQycpID0gRShJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdzJykgPSBFKFBUUiksIFMoJ1MnKSA9IEUoUFRSKSwgUygncCcpID0gRShVSVBUUiksUygnbicpID0gRShQVFIpLAorKyAgICAgICAgICAgICAgICBTKCdtJykgPSBFKE5PTkUpLAorKyAgICAgICAgICAgICAgICBTKCdsJykgPSBMUFJFLCAgIFMoJ2gnKSA9IEhQUkUsIFMoJ0wnKSA9IEJJR0xQUkUsCisrICAgICAgICAgICAgICAgIFMoJ3onKSA9IFpUUFJFLCAgUygnaicpID0gSlBSRSwgUygndCcpID0gWlRQUkUKKysgICAgICAgIH0sIHsgLyogMTogbC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKExPTkcpLCBTKCdpJykgPSBFKExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMT05HKSxTKCd1JykgPSBFKFVMT05HKSxTKCd4JykgPSBFKFVMT05HKSxTKCdYJykgPSBFKFVMT05HKSwKKysgICAgICAgICAgICAgICAgUygnZScpID0gRShEQkwpLCAgUygnZicpID0gRShEQkwpLCAgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksICBTKCdGJykgPSBFKERCTCksICBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoSU5UKSwgIFMoJ3MnKSA9IEUoUFRSKSwgIFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTExQUkUKKysgICAgICAgIH0sIHsgLyogMjogbGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMTE9ORyksIFMoJ2knKSA9IEUoTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMTE9ORyksUygndScpID0gRShVTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVMTE9ORyksUygnWCcpID0gRShVTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogMzogaC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKFNIT1JUKSwgUygnaScpID0gRShTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVVNIT1JUKSxTKCd1JykgPSBFKFVTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVVNIT1JUKSxTKCdYJykgPSBFKFVTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnaCcpID0gSEhQUkUKKysgICAgICAgIH0sIHsgLyogNDogaGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShDSEFSKSwgUygnaScpID0gRShDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVQ0hBUiksUygndScpID0gRShVQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVUNIQVIpLFMoJ1gnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNTogTC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKExEQkwpLFMoJ2YnKSA9IEUoTERCTCksUygnZycpID0gRShMREJMKSwgUygnYScpID0gRShMREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShMREJMKSxTKCdGJykgPSBFKExEQkwpLFMoJ0cnKSA9IEUoTERCTCksIFMoJ0EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA2OiB6LSBvciB0LXByZWZpeGVkIChhc3N1bWVkIHRvIGJlIHNhbWUgc2l6ZSkgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShQRElGRiksUygnaScpID0gRShQRElGRiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoU0laRVQpLFMoJ3UnKSA9IEUoU0laRVQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFNJWkVUKSxTKCdYJykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDc6IGotcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTUFYKSwgUygnaScpID0gRShJTUFYKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTUFYKSwgUygndScpID0gRShVTUFYKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTUFYKSwgUygnWCcpID0gRShVTUFYKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9CisrfTsKKysKKytzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKQorK3sKKysgICAgICAgIHNpemVfdCBpID0gMDsKKysgICAgICAgIHNpemVfdCBsYXN0ID0gMDsKKysKKysgICAgICAgIG1lbXNldCh0eXBlcywgMCwgbik7CisrCisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzaXplX3QgYXJnOworKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7CisrCisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbm9uYXJnKGZtdCk7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICclJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGFyZyA9IDA7CisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQsICZhcmcpOworKyAgICAgICAgICAgICAgICAvKiBmbGFncyAqLworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2ZsYWdzKGZtdCk7CisrICAgICAgICAgICAgICAgIC8qIHdpZHRoICovCisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcqJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3YXJnID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZ3YXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gd2FyZzsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA8PSBuICYmIHR5cGVzW3dhcmctMV0gPT0gTk9ORSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3dhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgIH0gZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7CisrICAgICAgICAgICAgICAgIC8qIHByZWNpc2lvbiAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnLicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJnID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQrMSwgJnBhcmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHBhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA8PSBuICYmIHR5cGVzW3BhcmctMV0gPT0gTk9ORSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbcGFyZy0xXSA9IElOVDsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy0nKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBtb2RpZmllciBhbmQgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KKysgICAgICAgICAgICAgICAgc3RhdGUgPSBCQVJFOworKyAgICAgICAgICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKmZtdCsrOworKworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJ0EnIHx8IGMgPiAneicpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlc1tzdGF0ZV1TKGMpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRlIDwgU1RPUCk7CisrCisrICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBFKE5PTkUpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAgICAgICAgICBpZiAoYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKytpOworKyAgICAgICAgICAgICAgICBpZiAoYXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gYXJnOworKyAgICAgICAgICAgICAgICBpZiAoYXJnIDw9IG4pCisrICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbYXJnLTFdID0gc3RhdGUgLSBTVE9QOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGxhc3QgPiBuKQorKyAgICAgICAgICAgICAgICBsYXN0ID0gbjsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYXN0OyBpKyspCisrICAgICAgICAgICAgICAgIHR5cGVzW2ldID0gcGFfdHlwZXNbdHlwZXNbaV1dOworKworKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrfQorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi40MzcxMTc3YjAKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKK0BAIC0wLDAgKzEsNTcgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBHTlUgQyBMaWJyYXJ5CisrICBDb3B5cmlnaHQgMTk5MS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKioqLworKworKyNwcmFnbWEgb25jZQorKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaWZkZWYgSEFWRV9QUklOVEZfSAorKyNpbmNsdWRlIDxwcmludGYuaD4KKysjZWxzZQorKworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKytlbnVtIHsJCQkJLyogQyB0eXBlOiAqLworKyAgUEFfSU5ULAkJCS8qIGludCAqLworKyAgUEFfQ0hBUiwJCQkvKiBpbnQsIGNhc3QgdG8gY2hhciAqLworKyAgUEFfV0NIQVIsCQkJLyogd2lkZSBjaGFyICovCisrICBQQV9TVFJJTkcsCQkJLyogY29uc3QgY2hhciAqLCBhICdcMCctdGVybWluYXRlZCBzdHJpbmcgKi8KKysgIFBBX1dTVFJJTkcsCQkJLyogY29uc3Qgd2NoYXJfdCAqLCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKi8KKysgIFBBX1BPSU5URVIsCQkJLyogdm9pZCAqICovCisrICBQQV9GTE9BVCwJCQkvKiBmbG9hdCAqLworKyAgUEFfRE9VQkxFLAkJCS8qIGRvdWJsZSAqLworKyAgUEFfTEFTVAorK307CisrCisrLyogRmxhZyBiaXRzIHRoYXQgY2FuIGJlIHNldCBpbiBhIHR5cGUgcmV0dXJuZWQgYnkgYHBhcnNlX3ByaW50Zl9mb3JtYXQnLiAgKi8KKysjZGVmaW5lCVBBX0ZMQUdfTUFTSwkJMHhmZjAwCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfTE9ORwkoMSA8PCA4KQorKyNkZWZpbmUJUEFfRkxBR19MT05HX0RPVUJMRQlQQV9GTEFHX0xPTkdfTE9ORworKyNkZWZpbmUJUEFfRkxBR19MT05HCQkoMSA8PCA5KQorKyNkZWZpbmUJUEFfRkxBR19TSE9SVAkJKDEgPDwgMTApCisrI2RlZmluZQlQQV9GTEFHX1BUUgkJKDEgPDwgMTEpCisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcyk7CisrCisrI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAoraW5kZXggYmQxMTQ0YjRjLi5jOWM5NWViNTQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCitAQCAtMTksMTIgKzE5LDEyIEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCistI2luY2x1ZGUgPHByaW50Zi5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2luY2x1ZGUgIm1hY3JvLmgiCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAKKyAjZGVmaW5lIHhzcHJpbnRmKGJ1ZiwgZm10LCAuLi4pIFwKKyAgICAgICAgIGFzc2VydF9tZXNzYWdlX3NlKChzaXplX3QpIHNucHJpbnRmKGJ1ZiwgRUxFTUVOVFNPRihidWYpLCBmbXQsIF9fVkFfQVJHU19fKSA8IEVMRU1FTlRTT0YoYnVmKSwgInhzcHJpbnRmOiAiICNidWYgIltdIG11c3QgYmUgYmlnIGVub3VnaCIpCitkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworaW5kZXggNDQwZmJhNjdjLi4wMjM2YzQzYzQgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKK0BAIC0xOSw3ICsxOSw2IEBACisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHByaW50Zi5oPgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvdW4uaD4KK0BAIC0zOCw2ICszNyw3IEBACisgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCisgCisgI2RlZmluZSBTTkRCVUZfU0laRSAoOCoxMDI0KjEwMjQpCisgCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCmluZGV4IGVlMmNkNmMuLjdmMWJjNDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBhNTQ0ZDZkMTVmNWM0MTgwODRmMzIyMzQ5YWFmZTM0MTEyOGQ1ZmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmMWI1YTZmNzE3YmRhNmY4MGE2YjVlM2U0ZDUwYjQ1MGY2Y2M3YjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTQgRGVjIDIwMTUgMDQ6MDk6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xOV0gY29yZS9kZXZpY2UuYzogQ2hhbmdlIHRoZSBkZWZhdWx0IGRldmljZSB0aW1lb3V0IHRvIDI0MAorU3ViamVjdDogW1BBVENIIDE0LzE0XSBjb3JlL2RldmljZS5jOiBDaGFuZ2UgdGhlIGRlZmF1bHQgZGV2aWNlIHRpbWVvdXQgdG8gMjQwCiAgc2VjLgogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApAQCAtMTEsMjMgKzExLDI0IEBACiAKIFNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2NvcmUvZGV2aWNlLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9kZXZpY2UuYyBiL3NyYy9jb3JlL2RldmljZS5jCi1pbmRleCBjNTcyYTY3Li5mOTA3NzRlIDEwMDY0NAoraW5kZXggNzc2MDFjNTUyLi45OGJmNDliYTIgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9kZXZpY2UuYwogKysrIGIvc3JjL2NvcmUvZGV2aWNlLmMKIEBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2luaXQoVW5pdCAqdSkgewogICAgICAgICAgICogaW5kZWZpbml0ZWx5IGZvciBwbHVnZ2VkIGluIGRldmljZXMsIHNvbWV0aGluZyB3aGljaCBjYW5ub3QKICAgICAgICAgICAqIGhhcHBlbiBmb3IgdGhlIG90aGVyIHVuaXRzIHNpbmNlIHRoZWlyIG9wZXJhdGlvbnMgdGltZSBvdXQKICAgICAgICAgICAqIGFueXdheS4gKi8KLS0gICAgICAgIHUtPmpvYl90aW1lb3V0ID0gdS0+bWFuYWdlci0+ZGVmYXVsdF90aW1lb3V0X3N0YXJ0X3VzZWM7Ci0rICAgICAgICB1LT5qb2JfdGltZW91dCA9ICgyNDAgKiBVU0VDX1BFUl9TRUMpOworLSAgICAgICAgdS0+am9iX3J1bm5pbmdfdGltZW91dCA9IHUtPm1hbmFnZXItPmRlZmF1bHRfdGltZW91dF9zdGFydF91c2VjOworKyAgICAgICAgdS0+am9iX3J1bm5pbmdfdGltZW91dCA9ICgyNDAgKiBVU0VDX1BFUl9TRUMpOwogIAogICAgICAgICAgdS0+aWdub3JlX29uX2lzb2xhdGUgPSB0cnVlOwogIH0KIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZXZhbHVhdGUtcHJlc2V0cy1hZnRlci1nZW5lcmF0b3JzLWhhdmUtcnVuLTY1MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1ldmFsdWF0ZS1wcmVzZXRzLWFmdGVyLWdlbmVyYXRvcnMtaGF2ZS1ydW4tNjUyNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjEwMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZXZhbHVhdGUtcHJlc2V0cy1hZnRlci1nZW5lcmF0b3JzLWhhdmUtcnVuLTY1MjYucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSAyOGRkNjZlY2ZjZTc0M2IxZWE5MDQ2YzdiYjUwMWUwZmNhZWZmNzI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTHVjYSBCcnVubyA8bHVjYS5icnVub0Bjb3Jlb3MuY29tPgorRGF0ZTogU3VuLCA2IEF1ZyAyMDE3IDEzOjI0OjI0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGV2YWx1YXRlIHByZXNldHMgYWZ0ZXIgZ2VuZXJhdG9ycyBoYXZlIHJ1biAoIzY1MjYpCisKK1RoaXMgY29tbWl0IG1vdmVzIHRoZSBmaXJzdC1ib290IHN5c3RlbSBwcmVzZXQtc2V0dGluZ3MgZXZhbHVhdGlvbiBvdXQKK29mIG1haW4gYW5kIGludG8gdGhlIG1hbmFnZXIgc3RhcnR1cCBsb2dpYyBpdHNlbGYuIE5vdGFibHksIGl0IHJldmVyc2VzCit0aGUgb3JkZXIgYmV0d2VlbiBnZW5lcmF0b3JzIGFuZCBwcmVzZXRzIGV2YWx1YXRpb24sIHNvIHRoYXQgYW55IGNoYW5nZXMKK3BlcmZvcm1lZCBieSBmaXJzdC1ib290IGdlbmVyYXRvcnMgYXJlIHRha2VuIGludG8gdGhlIGFjY291bnQgYnkgcHJlc2V0cworbG9naWMuCisKK0FmdGVyIHRoaXMgY2hhbmdlLCB1bml0cyBjcmVhdGVkIGJ5IGEgZ2VuZXJhdG9yIGNhbiBiZSBlbmFibGVkIGFzIHBhcnQKK29mIGEgcHJlc2V0LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2NvcmUvbWFpbi5jICAgIHwgMTIgKystLS0tLS0tLS0tCisgc3JjL2NvcmUvbWFuYWdlci5jIHwgIDggKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCitpbmRleCBkZmVkYzNkLi4xMWFjOWNmIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvbWFpbi5jCisrKysgYi9zcmMvY29yZS9tYWluLmMKK0BAIC0xODA5LDE4ICsxODA5LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhlcnJubywgIkZhaWxlZCB0byBtYWtlIHVzIGEgc3VicmVhcGVyOiAlbSIpOworIAorLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pIHsKKysgICAgICAgIGlmIChhcmdfc3lzdGVtKQorKyAgICAgICAgICAgICAgICAvKiBCdW1wIHVwIFJMSU1JVF9OT0ZJTEUgZm9yIHN5c3RlbWQgaXRzZWxmICovCisgICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOworIAorLSAgICAgICAgICAgICAgICBpZiAoZW1wdHlfZXRjKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgciA9IHVuaXRfZmlsZV9wcmVzZXRfYWxsKFVOSVRfRklMRV9TWVNURU0sIDAsIE5VTEwsIFVOSVRfRklMRV9QUkVTRVRfRU5BQkxFX09OTFksIE5VTEwsIDApOworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19mdWxsX2Vycm5vKHIgPT0gLUVFWElTVCA/IExPR19OT1RJQ0UgOiBMT0dfV0FSTklORywgciwgIkZhaWxlZCB0byBwb3B1bGF0ZSAvZXRjIHdpdGggcHJlc2V0IHVuaXQgc2V0dGluZ3MsIGlnbm9yaW5nOiAlbSIpOworLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvKCJQb3B1bGF0ZWQgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLiIpOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICB9CistCisgICAgICAgICByID0gbWFuYWdlcl9uZXcoYXJnX3N5c3RlbSA/IFVOSVRfRklMRV9TWVNURU0gOiBVTklUX0ZJTEVfVVNFUiwgYXJnX2FjdGlvbiA9PSBBQ1RJT05fVEVTVCwgJm0pOworICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBtYW5hZ2VyIG9iamVjdDogJW0iKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9tYW5hZ2VyLmMgYi9zcmMvY29yZS9tYW5hZ2VyLmMKK2luZGV4IDFhYWRiNzAuLmZiNWUyYjUgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYW5hZ2VyLmMKKysrKyBiL3NyYy9jb3JlL21hbmFnZXIuYworQEAgLTEzMjgsNiArMTMyOCwxNCBAQCBpbnQgbWFuYWdlcl9zdGFydHVwKE1hbmFnZXIgKm0sIEZJTEUgKnNlcmlhbGl6YXRpb24sIEZEU2V0ICpmZHMpIHsKKyAgICAgICAgIGlmIChyIDwgMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgCisrICAgICAgICBpZiAobS0+Zmlyc3RfYm9vdCAmJiBtLT51bml0X2ZpbGVfc2NvcGUgPT0gVU5JVF9GSUxFX1NZU1RFTSkgeworKyAgICAgICAgICAgICAgICBxID0gdW5pdF9maWxlX3ByZXNldF9hbGwoVU5JVF9GSUxFX1NZU1RFTSwgMCwgTlVMTCwgVU5JVF9GSUxFX1BSRVNFVF9FTkFCTEVfT05MWSwgTlVMTCwgMCk7CisrICAgICAgICAgICAgICAgIGlmIChxIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZnVsbF9lcnJubyhxID09IC1FRVhJU1QgPyBMT0dfTk9USUNFIDogTE9HX1dBUk5JTkcsIHEsICJGYWlsZWQgdG8gcG9wdWxhdGUgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLCBpZ25vcmluZzogJW0iKTsKKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvKCJQb3B1bGF0ZWQgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLiIpOworKyAgICAgICAgfQorKworICAgICAgICAgbG9va3VwX3BhdGhzX3JlZHVjZSgmbS0+bG9va3VwX3BhdGhzKTsKKyAgICAgICAgIG1hbmFnZXJfYnVpbGRfdW5pdF9wYXRoX2NhY2hlKG0pOworIAorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtbG9hZC1mcmFnbWVudC1yZWZ1c2UtdW5pdHMtd2l0aC1lcnJvcnMtaW4tY2VydGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1sb2FkLWZyYWdtZW50LXJlZnVzZS11bml0cy13aXRoLWVycm9ycy1pbi1jZXJ0YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5NDhiMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1sb2FkLWZyYWdtZW50LXJlZnVzZS11bml0cy13aXRoLWVycm9ycy1pbi1jZXJ0YS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyOSArMCwwIEBACi1JZiBhIHVzZXIgaXMgY3JlYXRlZCB3aXRoIGEgc3RyaWN0bHktc3BlYWtpbmcgaW52YWxpZCBuYW1lIHN1Y2ggYXMgJzBkYXknIGFuZCBhCi11bml0IGNyZWF0ZWQgdG8gcnVuIGFzIHRoYXQgdXNlciwgc3lzdGVtZCByZWplY3RzIHRoZSB1c2VybmFtZSBhbmQgcnVucyB0aGUgdW5pdAotYXMgcm9vdC4KLQotQ1ZFOiBDVkUtMjAxNy0xMDAwMDgyCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGQ4ZTEzMTBlMWVkN2I2ZjEyMmJjN2ViOGJhMDYxZmJkMDg4NzgzYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/WmJpZ25pZXc9MjBKPUM0PTk5ZHJ6ZWpld3NraS1Tem1laz89IDx6YnlzemVrQGluLndhdy5wbD4KLURhdGU6IFRodSwgNiBKdWwgMjAxNyAxMzoyODoxOSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBjb3JlL2xvYWQtZnJhZ21lbnQ6IHJlZnVzZSB1bml0cyB3aXRoIGVycm9ycyBpbiBjZXJ0YWluCi0gZGlyZWN0aXZlcwotCi1JZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZCBpbiBhbnkgb2YgdGhlIEV4ZWMqIGxpbmVzLCBXb3JraW5nRGlyZWN0b3J5LAotU0VMaW51eENvbnRleHQsIEFwcGFybW9yUHJvZmlsZSwgU21hY2tQcm9jZXNzTGFiZWwsIFNlcnZpY2UgKGluIC5zb2NrZXQKLXVuaXRzKSwgVXNlciwgb3IgR3JvdXAsIHJlZnVzZSB0byBsb2FkIHRoZSB1bml0LiBJZiB0aGUgY29uZmlnIHN0YW56YQotaGFzIHN1cHBvcnQsIGlnbm9yZSB0aGUgZmFpbHVyZSBpZiAnLScgaXMgcHJlc2VudC4KLQotRm9yIHRob3NlIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcywgZXZlbiBpZiB3ZSBzdGFydGVkIHRoZSB1bml0LCBpdCdzCi1wcmV0dHkgbGlrZWx5IHRoYXQgaXQnbGwgZG8gc29tZXRoaW5nIHVuZXhwZWN0ZWQgKGxpa2Ugd3JpdGUgZmlsZXMKLWluIGEgd3JvbmcgcGxhY2UsIG9yIHdpdGggYSB3cm9uZyBjb250ZXh0LCBvciBydW4gd2l0aCB3cm9uZyBwZXJtaXNzaW9ucywKLWV0YykuIEl0IHNlZW1zIGJldHRlciB0byByZWZ1c2UgdG8gc3RhcnQgdGhlIHVuaXQgYW5kIGhhdmUgdGhlIGFkbWluCi1jbGVhbiB1cCB0aGUgY29uZmlndXJhdGlvbiB3aXRob3V0IGdpdmluZyB0aGUgc2VydmljZSBhIGNoYW5jZSB0byBtZXNzCi11cCBzdHVmZi4KLQotTm90ZSB0aGF0IGFsbCAic2VjdXJpdHkiIG9wdGlvbnMgdGhhdCByZXN0cmljdCB3aGF0IHRoZSB1bml0IGNhbiBkbwotKENhcGFiaWxpdGllcywgQW1iaWVudENhcGFiaWxpdGllcywgUmVzdHJpY3QqLCBTeXN0ZW1DYWxsRmlsdGVyLCBMaW1pdCosCi1Qcml2YXRlRGV2aWNlcywgUHJvdGVjdCosIGV0YykgYXJlIF9ub3RfIHRyZWF0ZWQgbGlrZSB0aGlzLiBTdWNoIG9wdGlvbnMgYXJlCi1vbmx5IHN1cHBsZW1lbnRhcnksIGFuZCBhcmUgbm90IGFsd2F5cyBhdmFpbGFibGUgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUKLWFuZCBjb21waWxhdGlvbiBvcHRpb25zLCBzbyB1bml0IGF1dGhvcnMgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgc2VydmljZQotcnVucyBjb3JyZWN0bHkgd2l0aG91dCB0aGVtIGFueXdheS4KLQotRml4ZXMgIzYyMzcsICM2Mjc3LgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gc3JjL2NvcmUvbG9hZC1mcmFnbWVudC5jICB8IDEwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL3Rlc3QvdGVzdC11bml0LWZpbGUuYyB8ICAxNCArKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xvYWQtZnJhZ21lbnQuYyBiL3NyYy9jb3JlL2xvYWQtZnJhZ21lbnQuYwotaW5kZXggY2JjODI2ODA5Li4yMDQ3OTc0ZjQgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9sb2FkLWZyYWdtZW50LmMKLSsrKyBiL3NyYy9jb3JlL2xvYWQtZnJhZ21lbnQuYwotQEAgLTYzMCwyMCArNjMwLDI4IEBAIGludCBjb25maWdfcGFyc2VfZXhlYygKLSAKLSAgICAgICAgICAgICAgICAgaWYgKGlzZW1wdHkoZikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGaXJzdCB3b3JkIGlzIGVpdGhlciAiLSIgb3IgIkAiIHdpdGggbm8gY29tbWFuZC4gKi8KLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiRW1wdHkgcGF0aCBpbiBjb21tYW5kIGxpbmUsIGlnbm9yaW5nOiBcIiVzXCIiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgcGF0aCBpbiBjb21tYW5kIGxpbmUlczogXCIlc1wiIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSA/ICIsIGlnbm9yaW5nIiA6ICIiLCBydmFsdWUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZ25vcmUgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmdfaXNfc2FmZShmKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJFeGVjdXRhYmxlIHBhdGggY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzLCBpZ25vcmluZzogJXMiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhlY3V0YWJsZSBwYXRoIGNvbnRhaW5zIHNwZWNpYWwgY2hhcmFjdGVycyVzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGlmICghcGF0aF9pc19hYnNvbHV0ZShmKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJFeGVjdXRhYmxlIHBhdGggaXMgbm90IGFic29sdXRlLCBpZ25vcmluZzogJXMiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhlY3V0YWJsZSBwYXRoIGlzIG5vdCBhYnNvbHV0ZSVzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGlmIChlbmRzd2l0aChmLCAiLyIpKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIkV4ZWN1dGFibGUgcGF0aCBzcGVjaWZpZXMgYSBkaXJlY3RvcnksIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGVjdXRhYmxlIHBhdGggc3BlY2lmaWVzIGEgZGlyZWN0b3J5JXM6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSA/ICIsIGlnbm9yaW5nIiA6ICIiLCBydmFsdWUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZ25vcmUgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgaWYgKGYgPT0gZmlyc3R3b3JkKSB7Ci1AQCAtNjk5LDcgKzcwNyw3IEBAIGludCBjb25maWdfcGFyc2VfZXhlYygKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZ25vcmUgPyAwIDogLUVOT0VYRUM7Ci0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFHUkVFRFlfUkVBTExPQyhuLCBuYnVmc2l6ZSwgbmxlbiArIDIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKLUBAIC03MDksOCArNzE3LDEwIEBAIGludCBjb25maWdfcGFyc2VfZXhlYygKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBpZiAoIW4gfHwgIW5bMF0pIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiRW1wdHkgZXhlY3V0YWJsZSBuYW1lIG9yIHplcm9ldGggYXJndW1lbnQsIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBleGVjdXRhYmxlIG5hbWUgb3IgemVyb2V0aCBhcmd1bWVudCVzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIG5jZSA9IG5ldzAoRXhlY0NvbW1hbmQsIDEpOwotQEAgLTEzMTUsOCArMTMyNSwxMCBAQCBpbnQgY29uZmlnX3BhcnNlX2V4ZWNfc2VsaW51eF9jb250ZXh0KAotIAotICAgICAgICAgciA9IHVuaXRfbmFtZV9wcmludGYodSwgcnZhbHVlLCAmayk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMsIGlnbm9yaW5nOiAlbSIpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlc29sdmUgc3BlY2lmaWVycyVzOiAlbSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlID8gIiwgaWdub3JpbmciIDogIiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgfQotIAotICAgICAgICAgZnJlZShjLT5zZWxpbnV4X2NvbnRleHQpOwotQEAgLTEzNjMsOCArMTM3NSwxMCBAQCBpbnQgY29uZmlnX3BhcnNlX2V4ZWNfYXBwYXJtb3JfcHJvZmlsZSgKLSAKLSAgICAgICAgIHIgPSB1bml0X25hbWVfcHJpbnRmKHUsIHJ2YWx1ZSwgJmspOwotICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gcmVzb2x2ZSBzcGVjaWZpZXJzLCBpZ25vcmluZzogJW0iKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMlczogJW0iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSA/ICIsIGlnbm9yaW5nIiA6ICIiKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGlnbm9yZSA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGZyZWUoYy0+YXBwYXJtb3JfcHJvZmlsZSk7Ci1AQCAtMTQxMSw4ICsxNDI1LDEwIEBAIGludCBjb25maWdfcGFyc2VfZXhlY19zbWFja19wcm9jZXNzX2xhYmVsKAotIAotICAgICAgICAgciA9IHVuaXRfbmFtZV9wcmludGYodSwgcnZhbHVlLCAmayk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMsIGlnbm9yaW5nOiAlbSIpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlc29sdmUgc3BlY2lmaWVycyVzOiAlbSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlID8gIiwgaWdub3JpbmciIDogIiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgfQotIAotICAgICAgICAgZnJlZShjLT5zbWFja19wcm9jZXNzX2xhYmVsKTsKLUBAIC0xNjMwLDE5ICsxNjQ2LDE5IEBAIGludCBjb25maWdfcGFyc2Vfc29ja2V0X3NlcnZpY2UoCi0gCi0gICAgICAgICByID0gdW5pdF9uYW1lX3ByaW50ZihVTklUKHMpLCBydmFsdWUsICZwKTsKLSAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgc3BlY2lmaWVycywgaWdub3Jpbmc6ICVzIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gcmVzb2x2ZSBzcGVjaWZpZXJzOiAlcyIsIHJ2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRVhFQzsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGlmICghZW5kc3dpdGgocCwgIi5zZXJ2aWNlIikpIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIlVuaXQgbXVzdCBiZSBvZiB0eXBlIHNlcnZpY2UsIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiVW5pdCBtdXN0IGJlIG9mIHR5cGUgc2VydmljZTogJXMiLCBydmFsdWUpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICByID0gbWFuYWdlcl9sb2FkX3VuaXQoVU5JVChzKS0+bWFuYWdlciwgcCwgTlVMTCwgJmVycm9yLCAmeCk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byBsb2FkIHVuaXQgJXMsIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSwgYnVzX2Vycm9yX21lc3NhZ2UoJmVycm9yLCByKSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIGxvYWQgdW5pdCAlczogJXMiLCBydmFsdWUsIGJ1c19lcnJvcl9tZXNzYWdlKCZlcnJvciwgcikpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICB1bml0X3JlZl9zZXQoJnMtPnNlcnZpY2UsIHgpOwotQEAgLTE4OTMsMTMgKzE5MDksMTMgQEAgaW50IGNvbmZpZ19wYXJzZV91c2VyX2dyb3VwKAotIAotICAgICAgICAgICAgICAgICByID0gdW5pdF9mdWxsX3ByaW50Zih1LCBydmFsdWUsICZrKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHVuaXQgc3BlY2lmaWVycyBpbiAlcywgaWdub3Jpbmc6ICVtIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgdW5pdCBzcGVjaWZpZXJzIGluICVzOiAlbSIsIHJ2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIGlmICghdmFsaWRfdXNlcl9ncm91cF9uYW1lX29yX2lkKGspKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIkludmFsaWQgdXNlci9ncm91cCBuYW1lIG9yIG51bWVyaWMgSUQsIGlnbm9yaW5nOiAlcyIsIGspOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJJbnZhbGlkIHVzZXIvZ3JvdXAgbmFtZSBvciBudW1lcmljIElEOiAlcyIsIGspOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBuID0gazsKLUBAIC0xOTU3LDE5ICsxOTczLDE5IEBAIGludCBjb25maWdfcGFyc2VfdXNlcl9ncm91cF9zdHJ2KAotICAgICAgICAgICAgICAgICBpZiAociA9PSAtRU5PTUVNKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7Ci0gICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJJbnZhbGlkIHN5bnRheCwgaWdub3Jpbmc6ICVzIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiSW52YWxpZCBzeW50YXg6ICVzIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgciA9IHVuaXRfZnVsbF9wcmludGYodSwgd29yZCwgJmspOwotICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgdW5pdCBzcGVjaWZpZXJzIGluICVzLCBpZ25vcmluZzogJW0iLCB3b3JkKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgdW5pdCBzcGVjaWZpZXJzIGluICVzOiAlbSIsIHdvcmQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBpZiAoIXZhbGlkX3VzZXJfZ3JvdXBfbmFtZV9vcl9pZChrKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJJbnZhbGlkIHVzZXIvZ3JvdXAgbmFtZSBvciBudW1lcmljIElELCBpZ25vcmluZzogJXMiLCBrKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiSW52YWxpZCB1c2VyL2dyb3VwIG5hbWUgb3IgbnVtZXJpYyBJRDogJXMiLCBrKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgciA9IHN0cnZfcHVzaCh1c2Vycywgayk7Ci1AQCAtMjEyOCwyNSArMjE0NCwyOCBAQCBpbnQgY29uZmlnX3BhcnNlX3dvcmtpbmdfZGlyZWN0b3J5KAotIAotICAgICAgICAgICAgICAgICByID0gdW5pdF9mdWxsX3ByaW50Zih1LCBydmFsdWUsICZrKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHVuaXQgc3BlY2lmaWVycyBpbiB3b3JraW5nIGRpcmVjdG9yeSBwYXRoICclcycsIGlnbm9yaW5nOiAlbSIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVzb2x2ZSB1bml0IHNwZWNpZmllcnMgaW4gd29ya2luZyBkaXJlY3RvcnkgcGF0aCAnJXMnJXM6ICVtIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ2YWx1ZSwgbWlzc2luZ19vayA/ICIsIGlnbm9yaW5nIiA6ICIiKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2luZ19vayA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBwYXRoX2tpbGxfc2xhc2hlcyhrKTsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKCF1dGY4X2lzX3ZhbGlkKGspKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheF9pbnZhbGlkX3V0ZjgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npbmdfb2sgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgaWYgKCFwYXRoX2lzX2Fic29sdXRlKGspKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIldvcmtpbmcgZGlyZWN0b3J5IHBhdGggJyVzJyBpcyBub3QgYWJzb2x1dGUsIGlnbm9yaW5nLiIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXb3JraW5nIGRpcmVjdG9yeSBwYXRoICclcycgaXMgbm90IGFic29sdXRlJXMuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ2YWx1ZSwgbWlzc2luZ19vayA/ICIsIGlnbm9yaW5nIiA6ICIiKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2luZ19vayA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgICAgICBmcmVlX2FuZF9yZXBsYWNlKGMtPndvcmtpbmdfZGlyZWN0b3J5LCBrKTsKLS0KLSAgICAgICAgICAgICAgICAgYy0+d29ya2luZ19kaXJlY3RvcnlfaG9tZSA9IGZhbHNlOwotKyAgICAgICAgICAgICAgICBmcmVlX2FuZF9yZXBsYWNlKGMtPndvcmtpbmdfZGlyZWN0b3J5LCBrKTsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGMtPndvcmtpbmdfZGlyZWN0b3J5X21pc3Npbmdfb2sgPSBtaXNzaW5nX29rOwotQEAgLTQyMjgsOCArNDI0NywxMSBAQCBpbnQgdW5pdF9sb2FkX2ZyYWdtZW50KFVuaXQgKnUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAKLSAgICAgICAgICAgICAgICAgciA9IGxvYWRfZnJvbV9wYXRoKHUsIGspOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApCi0rICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09IC1FTk9FWEVDKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3VuaXRfbm90aWNlKHUsICJVbml0IGNvbmZpZ3VyYXRpb24gaGFzIGZhdGFsIGVycm9yLCB1bml0IHdpbGwgbm90IGJlIHN0YXJ0ZWQuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0rICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgaWYgKHUtPmxvYWRfc3RhdGUgPT0gVU5JVF9TVFVCKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0ZPUkVBQ0godCwgdS0+bmFtZXMsIGkpIHsKLWRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LXVuaXQtZmlsZS5jIGIvc3JjL3Rlc3QvdGVzdC11bml0LWZpbGUuYwotaW5kZXggMTJmNDhiZjQzLi5mZDc5N2I1ODcgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC90ZXN0LXVuaXQtZmlsZS5jCi0rKysgYi9zcmMvdGVzdC90ZXN0LXVuaXQtZmlsZS5jCi1AQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfY29uZmlnX3BhcnNlX2V4ZWModm9pZCkgewotICAgICAgICAgciA9IGNvbmZpZ19wYXJzZV9leGVjKE5VTEwsICJmYWtlIiwgNCwgInNlY3Rpb24iLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCAiL1JWYWx1ZS8gYXJndjAgcjEiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogaG9ub3VyX2FyZ3YwICovIik7Ci1AQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfY29uZmlnX3BhcnNlX2V4ZWModm9pZCkgewotICAgICAgICAgciA9IGNvbmZpZ19wYXJzZV9leGVjKE5VTEwsICJmYWtlIiwgMywgInNlY3Rpb24iLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCAiQC9SVmFsdWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogbm8gY29tbWFuZCwgd2hpdGVzcGFjZSBvbmx5LCByZXNldCAqLyIpOwotQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NvbmZpZ19wYXJzZV9leGVjKHZvaWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUAvUlZhbHVlIGFyZ3YwIHIxIDsgOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9nb28vZ29vIGJvbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmMsIHUpOwotLSAgICAgICAgYXNzZXJ0X3NlKHIgPj0gMCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRU5PRVhFQyk7Ci0gICAgICAgICBjMSA9IGMxLT5jb21tYW5kX25leHQ7Ci0gICAgICAgICBjaGVja19leGVjY29tbWFuZChjMSwgIi9SVmFsdWUiLCAiYXJndjAiLCAicjEiLCBOVUxMLCB0cnVlKTsKLSAKLUBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9jb25maWdfcGFyc2VfZXhlYyh2b2lkKSB7Ci0gICAgICAgICAgICAgICAgIHIgPSBjb25maWdfcGFyc2VfZXhlYyhOVUxMLCAiZmFrZSIsIDQsICJzZWN0aW9uIiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmMsIHUpOwotLSAgICAgICAgICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgICAgICAgICBhc3NlcnRfc2UoYzEtPmNvbW1hbmRfbmV4dCA9PSBOVUxMKTsKLSAgICAgICAgIH0KLSAKLUBAIC00MDEsMjEgKzQwMSwyMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NvbmZpZ19wYXJzZV9leGVjKHZvaWQpIHsKLSAgICAgICAgIHIgPSBjb25maWdfcGFyc2VfZXhlYyhOVUxMLCAiZmFrZSIsIDQsICJzZWN0aW9uIiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTFZhbHVlIiwgMCwgIi9wYXRoXFwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogbWlzc2luZyBlbmRpbmcgJyAqLyIpOwotICAgICAgICAgciA9IGNvbmZpZ19wYXJzZV9leGVjKE5VTEwsICJmYWtlIiwgNCwgInNlY3Rpb24iLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCAiL3BhdGggJ2ZvbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmMsIHUpOwotLSAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRU5PRVhFQyk7Ci0gICAgICAgICBhc3NlcnRfc2UoYzEtPmNvbW1hbmRfbmV4dCA9PSBOVUxMKTsKLSAKLSAgICAgICAgIGxvZ19pbmZvKCIvKiBtaXNzaW5nIGVuZGluZyAnIHdpdGggdHJhaWxpbmcgYmFja3NsYXNoICovIik7Ci0gICAgICAgICByID0gY29uZmlnX3BhcnNlX2V4ZWMoTlVMTCwgImZha2UiLCA0LCAic2VjdGlvbiIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxWYWx1ZSIsIDAsICIvcGF0aCAnZm9vXFwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogaW52YWxpZCBzcGFjZSBiZXR3ZWVuIG1vZGlmaWVycyAqLyIpOwotLS0gCi0yLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tYWluLXNraXAtbWFueS1pbml0aWFsaXphdGlvbi1zdGVwcy13aGVuLXJ1bm5pbmctaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW1haW4tc2tpcC1tYW55LWluaXRpYWxpemF0aW9uLXN0ZXBzLXdoZW4tcnVubmluZy1pbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAzM2IwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tYWluLXNraXAtbWFueS1pbml0aWFsaXphdGlvbi1zdGVwcy13aGVuLXJ1bm5pbmctaW4tLnBhdGNoCkBAIC0wLDAgKzEsMTYzIEBACitGcm9tIGRlYTM3NGU4OThhNzQ5YTA0NzRiNzJiMjAxNWNjYTkwMDliMTQzMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMZW5uYXJ0IFBvZXR0ZXJpbmcgPGxlbm5hcnRAcG9ldHRlcmluZy5uZXQ+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDEwOjMxOjQwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1haW46IHNraXAgbWFueSBpbml0aWFsaXphdGlvbiBzdGVwcyB3aGVuIHJ1bm5pbmcgaW4gLS10ZXN0CisgbW9kZQorCitNb3N0IGltcG9ydGFudGx5LCBkb24ndCBjb2xsZWN0IG9wZW4gc29ja2V0IGFjdGl2YXRpb24gZmRzIHdoZW4gaW4KKy0tdGVzdCBtb2RlLiBUaGlzIHNwZWNpZmljYWxseSBjcmVhdGVkIGEgcHJvYmxlbSBiZWNhdXNlIHdlIGludm9rZQorcGFnZXJfb3BlbigpIGJlZm9yZWhhbmQgKHdoaWNoIHRoZXNlIGRheXMgbWFrZXMgY29waWVzIG9mIHRoZSBvcmlnaW5hbAorc3Rkb3V0L3N0ZGVyciBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlc3RvcmUgdGhlbSB3aGVuIHRoZSBwYWdlciBnb2VzCithd2F5KSBhbmQgd2UgbWlnaHQgbWlzdGFrZW5seSB0aGUgZmQgY29waWVzIGl0IGNyZWF0ZXMgYXMgc29ja2V0CithY3RpdmF0aW9uIGZkcy4KKworRml4ZXM6ICM2MzgzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvY29yZS9tYWluLmMgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9tYWluLmMgYi9zcmMvY29yZS9tYWluLmMKK2luZGV4IDExYWM5Y2YuLmQxYTUzYTUgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYWluLmMKKysrKyBiL3NyYy9jb3JlL21haW4uYworQEAgLTE2NzksMjAgKzE2NzksMjIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICAgICAgICAgbG9nX2Nsb3NlKCk7CisgCisgICAgICAgICAvKiBSZW1lbWJlciBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGxhdGVyIGRlc2VyaWFsaXphdGlvbiAqLworLSAgICAgICAgciA9IGZkc2V0X25ld19maWxsKCZmZHMpOworLSAgICAgICAgaWYgKHIgPCAwKSB7CistICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBmZCBzZXQ6ICVtIik7CistICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldCI7CistICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworLSAgICAgICAgfSBlbHNlCistICAgICAgICAgICAgICAgIGZkc2V0X2Nsb2V4ZWMoZmRzLCB0cnVlKTsKKysgICAgICAgIGlmIChhcmdfYWN0aW9uID09IEFDVElPTl9SVU4pIHsKKysgICAgICAgICAgICAgICAgciA9IGZkc2V0X25ld19maWxsKCZmZHMpOworKyAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gYWxsb2NhdGUgZmQgc2V0OiAlbSIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldCI7CisrICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgIH0gZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIGZkc2V0X2Nsb2V4ZWMoZmRzLCB0cnVlKTsKKyAKKy0gICAgICAgIGlmIChhcmdfc2VyaWFsaXphdGlvbikKKy0gICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGZkc2V0X3JlbW92ZShmZHMsIGZpbGVubyhhcmdfc2VyaWFsaXphdGlvbikpID49IDApOworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3NlcmlhbGl6YXRpb24pCisrICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGZkc2V0X3JlbW92ZShmZHMsIGZpbGVubyhhcmdfc2VyaWFsaXphdGlvbikpID49IDApOworIAorLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCistICAgICAgICAgICAgICAgIC8qIEJlY29tZSBhIHNlc3Npb24gbGVhZGVyIGlmIHdlIGFyZW4ndCBvbmUgeWV0LiAqLworLSAgICAgICAgICAgICAgICBzZXRzaWQoKTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCisrICAgICAgICAgICAgICAgICAgICAgICAgLyogQmVjb21lIGEgc2Vzc2lvbiBsZWFkZXIgaWYgd2UgYXJlbid0IG9uZSB5ZXQuICovCisrICAgICAgICAgICAgICAgICAgICAgICAgc2V0c2lkKCk7CisrICAgICAgICB9CisgCisgICAgICAgICAvKiBNb3ZlIG91dCBvZiB0aGUgd2F5LCBzbyB0aGF0IHdlIHdvbid0IGJsb2NrIHVubW91bnRzICovCisgICAgICAgICBhc3NlcnRfc2UoY2hkaXIoIi8iKSA9PSAwKTsKK0BAIC0xNzYyLDU2ICsxNzY0LDU4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QgPyAiIHRlc3QiIDogIiIsIGdldHVpZCgpLCB0KTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFza2lwX3NldHVwKSB7CistICAgICAgICAgICAgICAgIGlmIChhcmdfc2hvd19zdGF0dXMgPiAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c193ZWxjb21lKCk7CisrICAgICAgICBpZiAoYXJnX2FjdGlvbiA9PSBBQ1RJT05fUlVOKSB7CisrICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFza2lwX3NldHVwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ19zaG93X3N0YXR1cyA+IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfd2VsY29tZSgpOworIAorLSAgICAgICAgICAgICAgICBob3N0bmFtZV9zZXR1cCgpOworLSAgICAgICAgICAgICAgICBtYWNoaW5lX2lkX3NldHVwKE5VTEwsIGFyZ19tYWNoaW5lX2lkLCBOVUxMKTsKKy0gICAgICAgICAgICAgICAgbG9vcGJhY2tfc2V0dXAoKTsKKy0gICAgICAgICAgICAgICAgYnVtcF91bml4X21heF9kZ3JhbV9xbGVuKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWVfc2V0dXAoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lX2lkX3NldHVwKE5VTEwsIGFyZ19tYWNoaW5lX2lkLCBOVUxMKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBsb29wYmFja19zZXR1cCgpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1bXBfdW5peF9tYXhfZGdyYW1fcWxlbigpOworIAorLSAgICAgICAgICAgICAgICB0ZXN0X3VzcigpOworLSAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXNyKCk7CisrICAgICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmIGFyZ19ydW50aW1lX3dhdGNoZG9nID4gMCAmJiBhcmdfcnVudGltZV93YXRjaGRvZyAhPSBVU0VDX0lORklOSVRZKQorLSAgICAgICAgICAgICAgICB3YXRjaGRvZ19zZXRfdGltZW91dCgmYXJnX3J1bnRpbWVfd2F0Y2hkb2cpOworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiBhcmdfcnVudGltZV93YXRjaGRvZyA+IDAgJiYgYXJnX3J1bnRpbWVfd2F0Y2hkb2cgIT0gVVNFQ19JTkZJTklUWSkKKysgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGRvZ19zZXRfdGltZW91dCgmYXJnX3J1bnRpbWVfd2F0Y2hkb2cpOworIAorLSAgICAgICAgaWYgKGFyZ190aW1lcl9zbGFja19uc2VjICE9IE5TRUNfSU5GSU5JVFkpCistICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfVElNRVJTTEFDSywgYXJnX3RpbWVyX3NsYWNrX25zZWMpIDwgMCkKKy0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gYWRqdXN0IHRpbWVyIHNsYWNrOiAlbSIpOworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3RpbWVyX3NsYWNrX25zZWMgIT0gTlNFQ19JTkZJTklUWSkKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJjdGwoUFJfU0VUX1RJTUVSU0xBQ0ssIGFyZ190aW1lcl9zbGFja19uc2VjKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gYWRqdXN0IHRpbWVyIHNsYWNrOiAlbSIpOworIAorLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIWNhcF90ZXN0X2FsbChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpKSB7CistICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wX3VzZXJtb2RlKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCk7CistICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6ICVtIik7CistICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCBvZiB1c2VybW9kZSBoZWxwZXJzIjsKKy0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICByID0gY2FwYWJpbGl0eV9ib3VuZGluZ19zZXRfZHJvcChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQsIHRydWUpOworLSAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldDogJW0iKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IjsKKy0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIWNhcF90ZXN0X2FsbChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNhcGFiaWxpdHlfYm91bmRpbmdfc2V0X2Ryb3BfdXNlcm1vZGUoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6ICVtIik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnMiOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCwgdHJ1ZSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldDogJW0iKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQiOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CistICAgICAgICB9CisgCistICAgICAgICBpZiAoYXJnX3N5c2NhbGxfYXJjaHMpIHsKKy0gICAgICAgICAgICAgICAgciA9IGVuZm9yY2Vfc3lzY2FsbF9hcmNocyhhcmdfc3lzY2FsbF9hcmNocyk7CistICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIHNldCBzeXNjYWxsIGFyY2hpdGVjdHVyZXMiOworLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c2NhbGxfYXJjaHMpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICByID0gZW5mb3JjZV9zeXNjYWxsX2FyY2hzKGFyZ19zeXNjYWxsX2FyY2hzKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIHNldCBzeXNjYWxsIGFyY2hpdGVjdHVyZXMiOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CistICAgICAgICB9CisgCistICAgICAgICBpZiAoIWFyZ19zeXN0ZW0pCistICAgICAgICAgICAgICAgIC8qIEJlY29tZSByZWFwZXIgb2Ygb3VyIGNoaWxkcmVuICovCistICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfQ0hJTERfU1VCUkVBUEVSLCAxKSA8IDApCistICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gbWFrZSB1cyBhIHN1YnJlYXBlcjogJW0iKTsKKysgICAgICAgICAgICAgICAgaWYgKCFhcmdfc3lzdGVtKQorKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJlY29tZSByZWFwZXIgb2Ygb3VyIGNoaWxkcmVuICovCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ193YXJuaW5nX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG1ha2UgdXMgYSBzdWJyZWFwZXI6ICVtIik7CisgCistICAgICAgICBpZiAoYXJnX3N5c3RlbSkKKy0gICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLworLSAgICAgICAgICAgICAgICAodm9pZCkgYnVtcF9ybGltaXRfbm9maWxlKCZzYXZlZF9ybGltaXRfbm9maWxlKTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCisrICAgICAgICAgICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLworKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOworKyAgICAgICAgfQorIAorICAgICAgICAgciA9IG1hbmFnZXJfbmV3KGFyZ19zeXN0ZW0gPyBVTklUX0ZJTEVfU1lTVEVNIDogVU5JVF9GSUxFX1VTRVIsIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QsICZtKTsKKyAgICAgICAgIGlmIChyIDwgMCkgeworLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGMxMzZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKQEAgLTAsMCArMSwxMDQgQEAKK0Zyb20gNTg1YWJkODkxYTU2NDA5OTE1MzE0MzA0MTAxY2FjMjZiNDJjMDc2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo0NTo0NiAtMDcwMAorU3ViamVjdDogW1BBVENIIDAyLzEyXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQorCitpbmNsdWRlIG1pc3NpbmcuaCAgZm9yIGRlZmluaXRpb24gb2Ygc3RybmR1cGEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBjb25maWd1cmUuYWMgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9taXNzaW5nLmggICAgfCAxMSArKysrKysrKysrKworIHNyYy9iYXNpYy9ta2Rpci5jICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyB8ICAxICsKKyBzcmMvc2hhcmVkL3BhZ2VyLmMgICAgIHwgIDEgKworIHNyYy9zaGFyZWQvdWlkLXJhbmdlLmMgfCAgMSArCisgNiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGVmY2RjNmMxNi4uY2QwMzVhOTcxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zMjksNiArMzI5LDcgQEAgQUNfQ0hFQ0tfREVDTFMoWworICAgICAgICAgcGl2b3Rfcm9vdCwKKyAgICAgICAgIG5hbWVfdG9faGFuZGxlX2F0LAorICAgICAgICAgc2V0bnMsCisrICAgICAgICBzdHJuZHVwYSwKKyAgICAgICAgIHJlbmFtZWF0MiwKKyAgICAgICAgIGtjbXAsCisgICAgICAgICBrZXljdGwsCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDA0OTEyYmY1Mi4uODAwOTg4OGFkIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTExMDQsNiArMTEwNCwxNyBAQCB0eXBlZGVmIGludDMyX3Qga2V5X3NlcmlhbF90OworICNkZWZpbmUgS0VZQ1RMX0RFU0NSSUJFIDYKKyAjZW5kaWYKKyAKKysjaWYgIUhBVkVfREVDTF9TVFJORFVQQQorKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAorKyAgKHsgXAorKyAgICBjb25zdCBjaGFyICpfX29sZCA9IChzKTsgXAorKyAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuKF9fb2xkLCAobikpOyBcCisrICAgIGNoYXIgKl9fbmV3ID0gKGNoYXIgKilhbGxvY2EoX19sZW4gKyAxKTsgXAorKyAgICBfX25ld1tfX2xlbl0gPSAnXDAnOyBcCisrICAgIChjaGFyICopbWVtY3B5KF9fbmV3LCBfX29sZCwgX19sZW4pOyBcCisrICB9KQorKyNlbmRpZgorKworICNpZm5kZWYgS0VZQ1RMX1JFQUQKKyAjZGVmaW5lIEtFWUNUTF9SRUFEIDExCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYworaW5kZXggNmIxYTk4NDAyLi5kMTM4OGRmNDggMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWtkaXIuYworKysrIGIvc3JjL2Jhc2ljL21rZGlyLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgorICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgbWtkaXJfc2FmZV9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIG1rZGlyX2Z1bmNfdCBfbWtkaXIpIHsKKyAgICAgICAgIHN0cnVjdCBzdGF0IHN0OworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCitpbmRleCA0NTMyZjIyMmMuLjdhMzBhMGUwNiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKKyAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgcGFyc2VfYm9vbGVhbihjb25zdCBjaGFyICp2KSB7CisgICAgICAgICBhc3NlcnQodik7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCitpbmRleCA0ZDdiMDJjNjMuLjg1NGVmYzBjOSAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvcGFnZXIuYworKysrIGIvc3JjL3NoYXJlZC9wYWdlci5jCitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBwaWRfdCBwYWdlcl9waWQgPSAwOworIAorZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCitpbmRleCBiNmVjNDc0MzkuLjkxY2U5ZmI3ZiAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKKysrKyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInVpZC1yYW5nZS5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKKyAgICAgICAgIGFzc2VydChyYW5nZSk7CistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItdW5pdHMtUHJlZmVyLWdldHR5LXRvLWFnZXR0eS1pbi1jb25zb2xlLXNldHVwLXN5c3RlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11bml0cy1QcmVmZXItZ2V0dHktdG8tYWdldHR5LWluLWNvbnNvbGUtc2V0dXAtc3lzdGVtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTFhMjhkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11bml0cy1QcmVmZXItZ2V0dHktdG8tYWdldHR5LWluLWNvbnNvbGUtc2V0dXAtc3lzdGVtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA4NzM2ZDliOWJiNDkyZjYwZThmM2ExYTdmYjVhMDViYTMyMDFkODZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDU6Mjk6MTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8xOV0gdW5pdHM6IFByZWZlciBnZXR0eSB0byBhZ2V0dHkgaW4gY29uc29sZSBzZXR1cCBzeXN0ZW1kCi0gdW5pdHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGZyZWUtZWxlY3Ryb25zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB1bml0cy9nZXR0eUAuc2VydmljZS5tNCAgICAgICAgfCAyICstCi0gdW5pdHMvc2VyaWFsLWdldHR5QC5zZXJ2aWNlLm00IHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdW5pdHMvZ2V0dHlALnNlcnZpY2UubTQgYi91bml0cy9nZXR0eUAuc2VydmljZS5tNAotaW5kZXggNWI4MmMxMy4uZTcyOTQ2OSAxMDA2NDQKLS0tLSBhL3VuaXRzL2dldHR5QC5zZXJ2aWNlLm00Ci0rKysgYi91bml0cy9nZXR0eUAuc2VydmljZS5tNAotQEAgLTMzLDcgKzMzLDcgQEAgQ29uZGl0aW9uUGF0aEV4aXN0cz0vZGV2L3R0eTAKLSAKLSBbU2VydmljZV0KLSAjIHRoZSBWVCBpcyBjbGVhcmVkIGJ5IFRUWVZURGlzYWxsb2NhdGUKLS1FeGVjU3RhcnQ9LS9zYmluL2FnZXR0eSAtLW5vY2xlYXIgJUkgJFRFUk0KLStFeGVjU3RhcnQ9LS9zYmluL2dldHR5IC1MICVJICRURVJNCi0gVHlwZT1pZGxlCi0gUmVzdGFydD1hbHdheXMKLSBSZXN0YXJ0U2VjPTAKLWRpZmYgLS1naXQgYS91bml0cy9zZXJpYWwtZ2V0dHlALnNlcnZpY2UubTQgYi91bml0cy9zZXJpYWwtZ2V0dHlALnNlcnZpY2UubTQKLWluZGV4IDQ1MjJkMGQuLmU2ZDQ5OWQgMTAwNjQ0Ci0tLS0gYS91bml0cy9zZXJpYWwtZ2V0dHlALnNlcnZpY2UubTQKLSsrKyBiL3VuaXRzL3NlcmlhbC1nZXR0eUAuc2VydmljZS5tNAotQEAgLTIyLDcgKzIyLDcgQEAgQmVmb3JlPWdldHR5LnRhcmdldAotIElnbm9yZU9uSXNvbGF0ZT15ZXMKLSAKLSBbU2VydmljZV0KLS1FeGVjU3RhcnQ9LS9zYmluL2FnZXR0eSAtLWtlZXAtYmF1ZCAxMTUyMDAsMzg0MDAsOTYwMCAlSSAkVEVSTQotK0V4ZWNTdGFydD0tL3NiaW4vZ2V0dHkgLUwgMTE1MjAwICVJICRURVJNCi0gVHlwZT1pZGxlCi0gUmVzdGFydD1hbHdheXMKLSBVdG1wSWRlbnRpZmllcj0lSQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRlZmluZS1leHAxMC1pZi1taXNzaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRlZmluZS1leHAxMC1pZi1taXNzaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2M2YWM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kZWZpbmUtZXhwMTAtaWYtbWlzc2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYjM4M2MyODZmNTgxODQ1NzUyMTZiMmJmNmYxODViYTJhZDY0ODk1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6MjU6NDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xOV0gZGVmaW5lIGV4cDEwIGlmIG1pc3NpbmcKLQotSW5zcGlyZWQgYnk6IGh0dHA6Ly9wZXRlci5rb3JzZ2FhcmQuY29tL3BhdGNoZXMvYWxzYS11dGlscy9hbHNhbWl4ZXItZml4LWJ1aWxkLW9uLXVDbGliYy1leHAxMC5wYXRjaAotCi1leHAxMCBleHRlbnNpb24gaXMgbm90IHBhcnQgb2YgdUNsaWJjLCBzbyBjb21wdXRlIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2FtdWVsIE1hcnRpbiA8cy5tYXJ0aW40OUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggNGMwMTNiZS4uNGEzZmQ5YyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0xMDc4LDQgKzEwNzgsOSBAQCB0eXBlZGVmIGludDMyX3Qga2V5X3NlcmlhbF90OwotIAotICNlbmRpZgotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rLyogMTBeeCA9IDEwXihsb2cgZV54KSA9IChlXngpXmxvZzEwID0gZV4oeCAqIGxvZyAxMCkgKi8KLSsjZGVmaW5lIGV4cDEwKHgpIChleHAoKHgpICogbG9nKDEwKSkpCi0rI2VuZGlmIC8qIF9fVUNMSUJDX18gKi8KLSsKLSAjaW5jbHVkZSAibWlzc2luZ19zeXNjYWxsLmgiCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMmQyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaApAQCAtMCwwICsxLDE1NyBAQAorRnJvbSA1YmJiYzJhMDhhM2I0MjgzZWMwNGFmMGU3N2UyNWZiMjA1YWE4YjgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjUwOjE0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMTJdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdAorIGRlZmluZWQKKworSWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGJyYWNlCitleHBhbnNpb24gdXNlcnMganVzdCB3b24ndCBnZXQgaXQuCisKK0RvbnQgdXNlIEdOVSBHTE9CIGV4dGVudGlvbnMgb24gbm9uLWdsaWJjIHN5c3RlbXMKKworQ29uZGl0aW9uYWxpemUgdXNlIG9mIEdMT0JfQUxURElSRlVOQworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9iYXNpYy9nbG9iLXV0aWwuYyAgICAgfCAyMCArKysrKysrKysrKysrKysrKy0tLQorIHNyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgfCAxNyArKysrKysrKysrKysrKystLQorIHNyYy90bXBmaWxlcy90bXBmaWxlcy5jICAgfCAgOCArKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworaW5kZXggZjYxMWM0MmU0Li5hZDZlMmJlOGQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworQEAgLTI3LDEzICsyNywxOCBAQAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKyAKKyBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgaW50IGs7CisgCisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgLyogV2Ugd2FudCB0byBzZXQgR0xPQl9BTFRESVJGVU5DIG91cnNlbHZlcywgZG9uJ3QgYWxsb3cgaXQgdG8gYmUgc2V0LiAqLworICAgICAgICAgYXNzZXJ0KCEoZmxhZ3MgJiBHTE9CX0FMVERJUkZVTkMpKTsKKy0KKyAgICAgICAgIGlmICghcGdsb2ItPmdsX2Nsb3NlZGlyKQorICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXI7CisgICAgICAgICBpZiAoIXBnbG9iLT5nbF9yZWFkZGlyKQorQEAgLTQ0LDEwICs0OSwxMyBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfbHN0YXQgPSBsc3RhdDsKKyAgICAgICAgIGlmICghcGdsb2ItPmdsX3N0YXQpCisgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9zdGF0ID0gc3RhdDsKKy0KKysjZW5kaWYKKyAgICAgICAgIGVycm5vID0gMDsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncyB8IEdMT0JfQUxURElSRlVOQywgTlVMTCwgcGdsb2IpOworLQorKyNlbHNlCisrICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncywgTlVMTCwgcGdsb2IpOworKyNlbmRpZgorICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT01BVENIKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgIGlmIChrID09IEdMT0JfTk9TUEFDRSkKK0BAIC02MCw2ICs2OCwxMiBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyBpbnQgZ2xvYl9leGlzdHMoY29uc3QgY2hhciAqcGF0aCkgeworICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0ge307CisgICAgICAgICBpbnQgazsKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYworaW5kZXggYWY4NjZlMDA0Li4zYWZhMDlhZGEgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCisrKysgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCitAQCAtMjksNiArMjksMTEgQEAKKyAjaW5jbHVkZSAiZ2xvYi11dGlsLmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInJtLXJmLmgiCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorIAorIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgeworICAgICAgICAgY2hhciBuYW1lW10gPSAiL3RtcC90ZXN0LWdsb2JfZXhpc3RzLlhYWFhYWCI7CitAQCAtNTEsMjUgKzU2LDMzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgeworIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgeworICAgICAgICAgY2hhciB0ZW1wbGF0ZVtdID0gIi90bXAvdGVzdC1nbG9iLXV0aWwuWFhYWFhYWCI7CisgICAgICAgICBjb25zdCBjaGFyICpmbjsKKy0KKyAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICAgICAgICAgIC5nbF9jbG9zZWRpciA9ICh2b2lkICgqKSh2b2lkICopKSBjbG9zZWRpciwKKyAgICAgICAgICAgICAgICAgLmdsX3JlYWRkaXIgPSAoc3RydWN0IGRpcmVudCAqKCopKHZvaWQgKikpIHJlYWRkaXJfbm9fZG90LAorICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpciwKKyAgICAgICAgICAgICAgICAgLmdsX2xzdGF0ID0gbHN0YXQsCisgICAgICAgICAgICAgICAgIC5nbF9zdGF0ID0gc3RhdCwKKysjZW5kaWYKKyAgICAgICAgIH07CistCisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIGFzc2VydF9zZShta2R0ZW1wKHRlbXBsYXRlKSk7CisgCisgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLyoiKTsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKKysjZWxzZQorKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKKysjZW5kaWYKKyAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7CisgCisgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLy4qIik7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7CisrI2Vsc2UKKysgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7CisrI2VuZGlmCisgICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOworIAorICAgICAgICAgKHZvaWQpIHJtX3JmKHRlbXBsYXRlLCBSRU1PVkVfUk9PVHxSRU1PVkVfUEhZU0lDQUwpOworZGlmZiAtLWdpdCBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKK2luZGV4IDk0MTljOTllMi4uMDcwMjdhNzY1IDEwMDY0NAorLS0tIGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKKysrKyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCitAQCAtNzEsNiArNzEsMTIgQEAKKyAjaW5jbHVkZSAidW1hc2stdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyAKKyAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKKyAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQorQEAgLTEwOTIsNyArMTA5OCw5IEBAIHN0YXRpYyBpbnQgaXRlbV9kb19jaGlsZHJlbihJdGVtICppLCBjb25zdCBjaGFyICpwYXRoLCBhY3Rpb25fdCBhY3Rpb24pIHsKKyAKKyBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24sIGJvb2wgcmVjdXJzaXZlKSB7CisgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpcl9ub21vZCwKKysjZW5kaWYKKyAgICAgICAgIH07CisgICAgICAgICBpbnQgciA9IDAsIGs7CisgICAgICAgICBjaGFyICoqZm47CistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNWFlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGM4NTBiNjU0ZTcxNjc3ZTBkNjI5MmYxMzQ1MjA3YjliNWFjZmZjMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6MzE6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8xMl0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAorIHR5cGVkZWYKKworaW5jbHVkZSBtaXNzaW5nLmggZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9iYXNpYy9taXNzaW5nLmggfCA1ICsrKysrCisgc3JjL2Jhc2ljL3N0cmJ1Zi5jICB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggODAwOTg4OGFkLi42NzFmMzQxYzYgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMTA2Myw2ICsxMDYzLDExIEBAIHN0cnVjdCBpbnB1dF9tYXNrIHsKKyAjZGVmaW5lIFJFTkFNRV9OT1JFUExBQ0UgKDEgPDwgMCkKKyAjZW5kaWYKKyAKKysjaWZuZGVmIF9fQ09NUEFSX0ZOX1QKKysjZGVmaW5lIF9fQ09NUEFSX0ZOX1QKKyt0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKKysjZW5kaWYKKysKKyAjaWZuZGVmIEtDTVBfRklMRQorICNkZWZpbmUgS0NNUF9GSUxFIDAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RyYnVmLmMgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK2luZGV4IDAwYWFmOWU2Mi4uOWRjNGE1ODRhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3N0cmJ1Zi5jCisrKysgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK0BAIC0yMyw2ICsyMyw3IEBACisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyYnVmLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyAvKgorICAqIFN0cmJ1ZiBzdG9yZXMgZ2l2ZW4gc3RyaW5ncyBpbiBhIHNpbmdsZSBjb250aW51b3VzIGFsbG9jYXRlZCBtZW1vcnkKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg4N2VlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKK0Zyb20gMjEwODBiNmE0MGQwYTRkZGQyZGI4ZjBmYTM3Njg2ZjZmYTg4NWQxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjM4OjMzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTJdIEluY2x1ZGUgbmV0aW5ldC9pZl9ldGhlci5oCisKK0ZpeGVzCisvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjItYmVjLWxpbnV4LW11c2wvc3lzdGVtZC8xXzIzNC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9uZXRpbmV0L2lmX2V0aGVyLmg6MTAxOjg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBldGhoZHInCisgc3RydWN0IGV0aGhkciB7CisgICAgICAgIF5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIHwgMSArCisgc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyAgICAgICAgICAgICB8IDEgKworIHNyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyAgICAgICAgICAgICAgIHwgMiArLQorIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jICAgIHwgMiArLQorIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworaW5kZXggOTIzZjdkZDEwLi5iOTViMWU0YjIgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKK0BAIC0xOSw2ICsxOSw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvY2FuL25ldGxpbmsuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKK2luZGV4IDNkNjI4MDg4NC4uNDBlNThjMzhmIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKK0BAIC0xOCw2ICsxOCw3IEBACisgKioqLworIAorICNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKK2luZGV4IGZhNWQzZWU3Zi4uZTA4Mjg5NjJhIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKKysrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCitAQCAtMTgsNiArMTgsNyBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CisgCitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCitpbmRleCAyMDFmYzIzNDMuLjVmN2NjMmEwYSAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYworKysrIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCitAQCAtMTYsNyArMTYsNyBAQAorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCistCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYworaW5kZXggOGU0Nzc3NTEzLi5kMDFmZmYyYTQgMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYworKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKK0BAIC0xNiw3ICsxNiw3IEBACisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKy0KKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImxpbmstY29uZmlnLmgiCisgI2luY2x1ZGUgImxvZy5oIgorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LWNvbmZpZ3VyZS1DaGVjay1mb3ItYWRkaXRpb25hbC1mZWF0dXJlcy10aGF0LXVjbGliYy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtY29uZmlndXJlLUNoZWNrLWZvci1hZGRpdGlvbmFsLWZlYXR1cmVzLXRoYXQtdWNsaWJjLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNhMGQzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtY29uZmlndXJlLUNoZWNrLWZvci1hZGRpdGlvbmFsLWZlYXR1cmVzLXRoYXQtdWNsaWJjLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gODJkODM3Yjc2NjE4YTc3MzQ4NWI5NmUzOGI3YjkxMDgzYTc0MzdlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA1OjA1OjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTldIGNvbmZpZ3VyZTogQ2hlY2sgZm9yIGFkZGl0aW9uYWwgZmVhdHVyZXMgdGhhdCB1Y2xpYmMKLSBkb2VzbnQgc3VwcG9ydAotCi1UaGlzIGhlbHBzIGluIHN1cHBvcnRpbmcgdWNsaWJjIHdoaWNoIGRvZXMgbm90IGhhdmUgYWxsIGZlYXR1cmVzIHRoYXQKLWdsaWJjIG1pZ2h0IGhhdmUKLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW25vIGRlc2lyZSBmb3IgdWNsaWJjIHN1cHBvcnRdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxOCArKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3ZjZiM2I5Li43YzRiNWEyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMTAsNiArMTEwLDI0IEBAIEFDX1BBVEhfUFJPRyhbVU1PVU5UX1BBVEhdLCBbdW1vdW50XSwgWy91c3IvYmluL3Vtb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dCi0gCi0gQVNfSUYoWyEgbG4gLS1yZWxhdGl2ZSAtLWhlbHAgPiAvZGV2L251bGwgMj4mMV0sIFtBQ19NU0dfRVJST1IoWyoqKiBsbiBkb2Vzbid0IHN1cHBvcnQgLS1yZWxhdGl2ZSAqKipdKV0pCi0gCi0rIyBjaGVjayBmb3IgZmV3IGZ1bmN0aW9ucyBub3QgaW1wbGVtZW50ZWQgaW4gdUNsaWJjCi0rCi0rQUNfQ0hFQ0tfRlVOQ1NfT05DRShta29zdGVtcCBleGVjdnBlIHBvc2l4X2ZhbGxvY2F0ZSkKLSsKLSsjIGNoZWNrIGZvciAlbXMgZm9ybWF0IHN1cHBvcnQgLSBhc3N1bWUgYWx3YXlzIG5vIGlmIGNyb3NzIGNvbXBpbGluZwotKwotK0FDX01TR19DSEVDS0lORyhbd2hldGhlciAlbXMgZm9ybWF0IGlzIHN1cHBvcnRlZCBieSAqc2NhbmZdKQotKwotK0FDX0xJTktfSUZFTFNFKAotKwlbQUNfTEFOR19QUk9HUkFNKFsKLSsJICNpbmNsdWRlIDxzdGRpby5oPgotKwkgXSxbCi0rCSAgICBjaGFyICpidWYxLCAqYnVmMiwgKmJ1ZjMsIHN0cj0iMSAyLjMgYWJjZGUiIDsKLSsJICAgIGludCByYyA9IHNzY2FuZihzdHIsICIlbXMgJW1zICVtcyIsICZidWYxLCAmYnVmMiwgJmJ1ZjMpIDsKLSsJICAgIHJldHVybiAocmM9PTMpPzA6MTtdKV0sCi0rCVtBQ19ERUZJTkUoW0hBVkVfTVNGT1JNQVRdLCBbMV0sIFtEZWZpbmUgaWYgJW1zIGZvcm1hdCBpcyBzdXBwb3J0ZWQgYnkgKnNjYW5mLl0pXSwKLSsJW0FDX01TR19SRVNVTFQoW25vXSldKQotKwotIE00X0RFRklORVM9Ci0gCi0gQUNfQ0hFQ0tfVE9PTChPQkpDT1BZLCBvYmpjb3B5KQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjM0YzU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSAwNWRmZmU2NzkxOWZmYzcyYmU1YzAxN2JjNmNmODJmMTY0YjJlOGY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjQyOjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTJdIGNoZWNrIGZvciBtaXNzaW5nIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgfCAyICsrCisgc3JjL2Jhc2ljL21pc3NpbmcuaCAgICAgICAgIHwgMSArCisgc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oIHwgNiArKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZDAzNWE5NzEuLjM2NzQxOTBmYiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzMzLDYgKzMzMyw3IEBAIEFDX0NIRUNLX0RFQ0xTKFsKKyAgICAgICAgIHJlbmFtZWF0MiwKKyAgICAgICAgIGtjbXAsCisgICAgICAgICBrZXljdGwsCisrICAgICAgICBjYW5vbmljYWxpemVfZmlsZV9uYW1lLAorICAgICAgICAgTE9fRkxBR1NfUEFSVFNDQU4sCisgICAgICAgICBjb3B5X2ZpbGVfcmFuZ2UsCisgICAgICAgICBleHBsaWNpdF9iemVyb10sCitAQCAtMzQzLDYgKzM0NCw3IEBAIEFDX0NIRUNLX0RFQ0xTKFsKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c2NoZWQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxsaW51eC9sb29wLmg+CisgXV0pCisgCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDY3MWYzNDFjNi4uOGFlNDk2NGUxIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTEyNDYsMyArMTI0Niw0IEBAIHN0cnVjdCBldGh0b29sX2xpbmtfc2V0dGluZ3MgeworICNlbmRpZgorIAorICNpbmNsdWRlICJtaXNzaW5nX3N5c2NhbGwuaCIKKysKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmggYi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKK2luZGV4IDg5ODExNmM3Yi4uNGQ0NGVlNGZhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKK0BAIC0yOCw2ICsyOCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBwaXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKSB7CisgfQorICNlbmRpZgorIAorKyNpZiAhSEFWRV9ERUNMX0NBTk9OSUNBTElaRV9GSUxFX05BTUUKKytzdGF0aWMgaW5saW5lIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUoY29uc3QgY2hhciAqcGF0aCkgeworKyAgICAgICAgcmV0dXJuIHJlYWxwYXRoKHBhdGgsIE5VTEwpOworK30KKysjZW5kaWYKKysKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworIAorICNpZiAhSEFWRV9ERUNMX01FTUZEX0NSRUFURQorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaAppbmRleCBmYWQ2OWE1Li5iYzkyZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaApAQCAtMTIsMTAgKzEyLDEwIEBACiAgY29uZmlndXJlLmFjIHwgMiAtLQogIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAyOWVkMWRkLi4wMmY0MDE3IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCitJbmRleDogZ2l0L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBnaXQvTWFrZWZpbGUuYW0KIEBAIC0zMjAsNyArMzIwLDcgQEAgZGVmaW5lIGluc3RhbGwtcmVsYXRpdmUtYWxpYXNlcwogIAl3aGlsZSBbIC1uICIkJDEiIF07IGRvIFwKICAJCSQoTUtESVJfUCkgYGRpcm5hbWUgJChERVNURElSKSQkZGlyLyQkMmAgJiYgXApAQCAtMjUsMTkgKzI1LDE2IEBACiAgCQlzaGlmdCAyIHx8IGV4aXQgJCQ/OyBcCiAgCWRvbmUKICBlbmRlZgotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggN2M0YjVhMi4uYjEwYzk1MiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTA4LDggKzEwOCw2IEBAIEFDX1BBVEhfUFJPRyhbU1VMT0dJTl0sIFtzdWxvZ2luXSwgWy91c3Ivc2Jpbi9zdWxvZ2luXSwgWyRQQVRIOi91c3Ivc2Jpbjovc2Jpbl0pCitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdpdC9jb25maWd1cmUuYWMKK0BAIC0xMTAsOCArMTEwLDYgQEAgQUNfUEFUSF9QUk9HKFtTVUxPR0lOXSwgW3N1bG9naW5dLCBbL3VzcgogIEFDX1BBVEhfUFJPRyhbTU9VTlRfUEFUSF0sIFttb3VudF0sIFsvdXNyL2Jpbi9tb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQogIEFDX1BBVEhfUFJPRyhbVU1PVU5UX1BBVEhdLCBbdW1vdW50XSwgWy91c3IvYmluL3Vtb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQogIAogLUFTX0lGKFshIGxuIC0tcmVsYXRpdmUgLS1oZWxwID4gL2Rldi9udWxsIDI+JjFdLCBbQUNfTVNHX0VSUk9SKFsqKiogbG4gZG9lc24ndCBzdXBwb3J0IC0tcmVsYXRpdmUgKioqXSldKQogLQotICMgY2hlY2sgZm9yIGZldyBmdW5jdGlvbnMgbm90IGltcGxlbWVudGVkIGluIHVDbGliYworIE00X0RFRklORVM9CiAgCi0gQUNfQ0hFQ0tfRlVOQ1NfT05DRShta29zdGVtcCBleGVjdnBlIHBvc2l4X2ZhbGxvY2F0ZSkKLS0tIAotMi4xMC4yCi0KKyBBQ19DSEVDS19UT09MKE9CSkNPUFksIG9iamNvcHkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdhNGY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDQ4ZTdjMGY1YjJmNWQ3NzdhMTZhYzU1ODRkYzRmNTBmMWRmYTgzMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjoyNzo1MyAtMDcwMAorU3ViamVjdDogW1BBVENIIDA4LzEyXSBEbyBub3QgZW5hYmxlIG5zcyB0ZXN0cworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIE1ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggM2NjOGYzNDUxLi5kZjIwYTlhMTEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC01MjkwLDYgKzUyOTAsNyBAQCBFWFRSQV9ESVNUICs9IFwKKyAJc3JjL3RpbWVzeW5jL3RpbWVzeW5jZC5jb25mLmluCisgCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytpZiBFTkFCTEVfTlNTX1NZU1RFTUQKKyB0ZXN0X25zc19TT1VSQ0VTID0gXAorIAlzcmMvdGVzdC90ZXN0LW5zcy5jCisgCitAQCAtNTMwMiw3ICs1MzAzLDYgQEAgbWFudWFsX3Rlc3RzICs9IFwKKyAJdGVzdC1uc3MKKyAKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLWlmIEVOQUJMRV9OU1NfU1lTVEVNRAorIGxpYm5zc19zeXN0ZW1kX2xhX1NPVVJDRVMgPSBcCisgCXNyYy9uc3Mtc3lzdGVtZC9uc3Mtc3lzdGVtZC5zeW0gXAorIAlzcmMvbnNzLXN5c3RlbWQvbnNzLXN5c3RlbWQuYworLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LW5zcGF3bi1Vc2UtZXhlY3ZwZS1vbmx5LXdoZW4tbGliYy1zdXBwb3J0cy1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1uc3Bhd24tVXNlLWV4ZWN2cGUtb25seS13aGVuLWxpYmMtc3VwcG9ydHMtaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NmI1YWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LW5zcGF3bi1Vc2UtZXhlY3ZwZS1vbmx5LXdoZW4tbGliYy1zdXBwb3J0cy1pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gOTYwMjZhMzc2MzI2NGViNDFhMmMzZTM3NGYyMzJmNmU1NDMyODRhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6MzM6NDkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xOV0gbnNwYXduOiBVc2UgZXhlY3ZwZSBvbmx5IHdoZW4gbGliYyBzdXBwb3J0cyBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbbm8gZGVzaXJlIGZvciB1Y2xpYmMgc3VwcG9ydF0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9uc3Bhd24vbnNwYXduLmMgfCA3ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi5jIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotaW5kZXggOWI5YWU5MC4uMTliNDdjZCAxMDA2NDQKLS0tLSBhL3NyYy9uc3Bhd24vbnNwYXduLmMKLSsrKyBiL3NyYy9uc3Bhd24vbnNwYXduLmMKLUBAIC0xMjMsNiArMTIzLDggQEAgdHlwZWRlZiBlbnVtIExpbmtKb3VybmFsIHsKLSAgICAgICAgIExJTktfR1VFU1QKLSB9IExpbmtKb3VybmFsOwotIAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsKLSBzdGF0aWMgY2hhciAqYXJnX2RpcmVjdG9yeSA9IE5VTEw7Ci0gc3RhdGljIGNoYXIgKmFyZ190ZW1wbGF0ZSA9IE5VTEw7Ci0gc3RhdGljIGNoYXIgKmFyZ19jaGRpciA9IE5VTEw7Ci1AQCAtMjg3MSw3ICsyODczLDEyIEBAIHN0YXRpYyBpbnQgaW5uZXJfY2hpbGQoCi0gICAgICAgICAgICAgICAgIGFbMF0gPSAoY2hhciopICIvc2Jpbi9pbml0IjsKLSAgICAgICAgICAgICAgICAgZXhlY3ZlKGFbMF0sIGEsIGVudl91c2UpOwotICAgICAgICAgfSBlbHNlIGlmICghc3Rydl9pc2VtcHR5KGFyZ19wYXJhbWV0ZXJzKSkKLSsjaWZkZWYgSEFWRV9FWEVDVlBFCi0gICAgICAgICAgICAgICAgIGV4ZWN2cGUoYXJnX3BhcmFtZXRlcnNbMF0sIGFyZ19wYXJhbWV0ZXJzLCBlbnZfdXNlKTsKLSsjZWxzZQotKyAgICAgICAgICAgICAgICBlbnZpcm9uID0gZW52X3VzZTsKLSsgICAgICAgICAgICAgICAgZXhlY3ZwKGFyZ19wYXJhbWV0ZXJzWzBdLCBhcmdfcGFyYW1ldGVycyk7Ci0rI2VuZGlmIC8qIEhBVkVfRVhFQ1ZQRSAqLwotICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgIGlmICghYXJnX2NoZGlyKQotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHdlIGNhbm5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSwgd2UnbGwgZW5kIHVwIGluIC8sIHRoYXQgaXMgZXhwZWN0ZWQuICovCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3JtLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzY5NGRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDc1ZjRlN2YxNjdkZTUzM2ExNjBlZTFhZjJhMDNmYmE0YzVhNWZmYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjozMzoyMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDA5LzEyXSB0ZXN0LWhleGRlY29jdC5jOiBJbmNsdWRlIG1pc3NpbmcuaCBmb3JtIHN0cm5kdXBhCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKK2luZGV4IGZjYWU0MjdlNy4uNWViNWUyZWQ3IDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworQEAgLTIxLDYgKzIxLDcgQEAKKyAjaW5jbHVkZSAiaGV4ZGVjb2N0LmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBzdGF0aWMgdm9pZCB0ZXN0X2hleGNoYXIodm9pZCkgeworICAgICAgICAgYXNzZXJ0X3NlKGhleGNoYXIoMHhhKSA9PSAnYScpOworLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXV0aWwtYnlwYXNzLXVuaW1wbGVtZW50ZWQtX1NDX1BIWVNfUEFHRVMtc3lzdGVtLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktdXRpbC1ieXBhc3MtdW5pbXBsZW1lbnRlZC1fU0NfUEhZU19QQUdFUy1zeXN0ZW0tY29uZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE1MGJiMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktdXRpbC1ieXBhc3MtdW5pbXBsZW1lbnRlZC1fU0NfUEhZU19QQUdFUy1zeXN0ZW0tY29uZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gMDg1YzhiNmYyNTM3MjZhZDU0N2U3YmU4NGZmM2YyYjk5NzAxNDg4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6Mzg6MDcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xOV0gdXRpbDogYnlwYXNzIHVuaW1wbGVtZW50ZWQgX1NDX1BIWVNfUEFHRVMgc3lzdGVtCi0gY29uZmlndXJhdGlvbiBBUEkgb24gdWNsaWJjCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdWNsaWJjLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL3V0aWwuYyB8IDE1ICsrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5jIGIvc3JjL2Jhc2ljL3V0aWwuYwotaW5kZXggYzFiNWNhMS4uNGM2MmQ0MyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy91dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy91dGlsLmMKLUBAIC03NDIsNiArNzQyLDIwIEBAIHVpbnQ2NF90IHBoeXNpY2FsX21lbW9yeSh2b2lkKSB7Ci0gICAgICAgICAgKiBJbiBvcmRlciB0byBzdXBwb3J0IGNvbnRhaW5lcnMgbmljZWx5IHRoYXQgaGF2ZSBhIGNvbmZpZ3VyZWQgbWVtb3J5IGxpbWl0IHdlJ2xsIHRha2UgdGhlIG1pbmltdW0gb2YgdGhlCi0gICAgICAgICAgKiBwaHlzaWNhbGx5IHJlcG9ydGVkIGFtb3VudCBvZiBtZW1vcnkgYW5kIHRoZSBsaW1pdCBjb25maWd1cmVkIGZvciB0aGUgcm9vdCBjZ3JvdXAsIGlmIHRoZXJlIGlzIGFueS4gKi8KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyAgICAgICAgY2hhciBsaW5lWzEyOF07Ci0rICAgICAgICBGSUxFICpmID0gZm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOwotKyAgICAgICAgaWYgKGYgPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB3aGlsZSAoIWZlb2YoZikgJiYgZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLTEsIGYpKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChzc2NhbmYobGluZSwgIk1lbVRvdGFsOiAlbGkga0IiLCAmbWVtKSA9PSAxKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbWVtICo9IDEwMjQ7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGZjbG9zZShmKTsKLSsgICAgICAgIHJldHVybiAodWludDY0X3QpIG1lbTsKLSsjZWxzZQotICAgICAgICAgc2MgPSBzeXNjb25mKF9TQ19QSFlTX1BBR0VTKTsKLSAgICAgICAgIGFzc2VydChzYyA+IDApOwotIAotQEAgLTc2Miw2ICs3NzYsNyBAQCB1aW50NjRfdCBwaHlzaWNhbF9tZW1vcnkodm9pZCkgewotICAgICAgICAgbGltICo9IHBzOwotIAotICAgICAgICAgcmV0dXJuIE1JTihtZW0sIGxpbSk7Ci0rI2VuZGlmCi0gfQotIAotIHVpbnQ2NF90IHBoeXNpY2FsX21lbW9yeV9zY2FsZSh1aW50NjRfdCB2LCB1aW50NjRfdCBtYXgpIHsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA4YzgzYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gNmU5ZDJiY2FhNmY4ODZiMjM4NGMxYzM1YTA0ZTRlYmMxNDhhZWE2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEyOjQwOjI1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTJdIHRlc3Qtc2l6ZW9mLmM6IERpc2FibGUgdGVzdHMgZm9yIG1pc3NpbmcgdHlwZWRlZnMgaW4KKyBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYworaW5kZXggMjY5YWRmZDE4Li5iYTc4NTVkZmYgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCisrKysgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCitAQCAtMTgsNyArMTgsNiBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0KKyAjaW5jbHVkZSAidGltZS11dGlsLmgiCisgCisgLyogUHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgdmFyaW91cyB0eXBlcy4gVXNlZnVsIHdoZW4gZGlhZ25vc2luZworQEAgLTQ4LDggKzQ3LDEwIEBAIGludCBtYWluKHZvaWQpIHsKKyAgICAgICAgIGluZm8odW5zaWduZWQpOworICAgICAgICAgaW5mbyhsb25nIHVuc2lnbmVkKTsKKyAgICAgICAgIGluZm8obG9uZyBsb25nIHVuc2lnbmVkKTsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBpbmZvKF9fc3lzY2FsbF91bG9uZ190KTsKKyAgICAgICAgIGluZm8oX19zeXNjYWxsX3Nsb25nX3QpOworKyNlbmRpZgorIAorICAgICAgICAgaW5mbyhmbG9hdCk7CisgICAgICAgICBpbmZvKGRvdWJsZSk7CitAQCAtNTksNyArNjAsOSBAQCBpbnQgbWFpbih2b2lkKSB7CisgICAgICAgICBpbmZvKHNzaXplX3QpOworICAgICAgICAgaW5mbyh0aW1lX3QpOworICAgICAgICAgaW5mbyh1c2VjX3QpOworKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgICAgIGluZm8oX190aW1lX3QpOworKyNlbmRpZgorIAorICAgICAgICAgaW5mbyhlbnVtIEVudW0pOworICAgICAgICAgaW5mbyhlbnVtIEJpZ0VudW0pOworLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZmU4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKQEAgLTAsMCArMSwxMDUgQEAKK0Zyb20gMmViNDVmNWEwYThiZmI4YmRjYTA4NDU4N2FkMjhlNTAwMWYzY2M0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxNToyNDo1NiArMDIwMAorU3ViamVjdDogW1BBVENIIDExLzEyXSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9od2RiL2h3ZGIuYyAgICAgICAgIHwgMTggKysrKysrKysrKystLS0tLS0tCisgc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgfCAxNiArKysrKysrKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9od2RiL2h3ZGIuYyBiL3NyYy9od2RiL2h3ZGIuYworaW5kZXggNzkzMzk4Y2E2Li42NjliMDA4MTggMTAwNjQ0CistLS0gYS9zcmMvaHdkYi9od2RiLmMKKysrKyBiL3NyYy9od2RiL2h3ZGIuYworQEAgLTE1MSwxMyArMTUxLDEyIEBAIHN0YXRpYyB2b2lkIHRyaWVfZnJlZShzdHJ1Y3QgdHJpZSAqdHJpZSkgeworIAorIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhzdHJ1Y3QgdHJpZSosIHRyaWVfZnJlZSk7CisgCistc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKKytzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKKytzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOworLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7CistCistICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCistICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCisrICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisgfQorIAorIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKK0BAIC0xODIsNyArMTgxLDEwIEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKKyAgICAgICAgICAgICAgICAgfTsKKyAKKy0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKysKKyAgICAgICAgICAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSAyIGlkZW50aWNhbCBwcm9wZXJ0aWVzIG9uIHRoZSBzYW1lIG1hdGNoLXN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTaW5jZSB3ZSBwcm9jZXNzIGZpbGVzIGluIG9yZGVyLCB3ZSBqdXN0IHJlcGxhY2UgdGhlIHByZXZpb3VzIHZhbHVlLgorQEAgLTIwNyw3ICsyMDksOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5maWxlX3ByaW9yaXR5ID0gZmlsZV9wcmlvcml0eTsKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7CisgICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKKy0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKK2luZGV4IDY5YjBiOTAyNS4uZmJkMjEzMzAwIDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKKysrKyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCitAQCAtMTI4LDEzICsxMjgsMTMgQEAgc3RhdGljIHZvaWQgdHJpZV9ub2RlX2NsZWFudXAoc3RydWN0IHRyaWVfbm9kZSAqbm9kZSkgeworICAgICAgICAgZnJlZShub2RlKTsKKyB9CisgCistc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKKytzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKKytzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOworLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7CisgCistICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCistICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCisrICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisgfQorIAorIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKK0BAIC0xNTUsNyArMTU1LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZV9vZmYgPSB2LAorICAgICAgICAgICAgICAgICB9OworIAorLSAgICAgICAgICAgICAgICB2YWwgPSB4YnNlYXJjaF9yKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgICAgICAgICB2YWwgPSBic2VhcmNoKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworICAgICAgICAgICAgICAgICBpZiAodmFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVwbGFjZSBleGlzdGluZyBlYXJsaWVyIGtleSB3aXRoIG5ldyB2YWx1ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC0+dmFsdWVfb2ZmID0gdjsKK0BAIC0xNzIsNyArMTc0LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0ua2V5X29mZiA9IGs7CisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS52YWx1ZV9vZmYgPSB2OworICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7CistICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNmRiNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCkBAIC0wLDAgKzEsOTkgQEAKK0Zyb20gOTYyMTYxOGM3MDFhMmQ1ZWIzZTI2ZjQwYzY4MzU0ZDRkZmI4Zjg3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjMwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMTJdIGRvbid0IHBhc3MgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnIHRvIGZhY2Nlc3NhdCgpCisKK0F2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0Cit0aGluZyB0byBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKKworICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAorICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgorCitOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUKK2Rpc2N1c3Npb24gaW4gdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0CisoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzIG9mIGxhY2Nlc3MoKSBwYXNzIG1vZGUgYXMgRl9PSywgc28KK29ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdCBhY2Nlc3MgcGVybWlzc2lvbnMuCitUaGVyZWZvcmUsIGluIHRoaXMgY2FzZSwgdGhlIG9ubHkgZGlzdGljdGlvbiBiZXR3ZWVuIGZhY2Nlc3NhdCgpCit3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUgYmVoYXZpb3VyCitmb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQgd2l0aAorKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgYW5kIGZhaWwgKGZsYWcgPT0gMCkuCisKK1RoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90CitjbGVhciBpZiBvciB3aHkgaXQgbmVlZHMgdG8gcmV0dXJuIHN1Y2Nlc3MgZm9yIGJyb2tlbiBzeW1saW5rcy4gTWF5YmUKK2p1c3QgaGlzdG9yaWNhbCBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvYmFzaWMvZnMtdXRpbC5oICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQorIHNyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgfCAgNiArKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZnMtdXRpbC5oIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAoraW5kZXggMDk0YWNmMTc5Li5jZGJjMGFlNzIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZnMtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvZnMtdXRpbC5oCitAQCAtNDgsNyArNDgsMjcgQEAgaW50IGZjaG1vZF91bWFzayhpbnQgZmQsIG1vZGVfdCBtb2RlKTsKKyAKKyBpbnQgZmRfd2Fybl9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQpOworIAorLSNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCBBVF9TWU1MSU5LX05PRk9MTE9XKQorKy8qCisrICAgQXZvaWQgdXNpbmcgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQgdGhpbmcgdG8KKysgICBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKKysKKysgICAgIGh0dHA6Ly9saXN0cy5sYW5kbGV5Lm5ldC9waXBlcm1haWwvdG95Ym94LWxhbmRsZXkubmV0LzIwMTQtU2VwdGVtYmVyLzAwMzYxMC5odG1sCisrICAgICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgorKworKyAgIE5vdGUgdGhhdCBsYWNjZXNzKCkgaXMgbmV2ZXIgcGFzc2luZyBBVF9FQUNDRVNTIHNvIGEgbG90IG9mIHRoZSBkaXNjdXNzaW9uIGluCisrICAgdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0IChjdXJyZW50bHkpIGFsbCBzeXN0ZW1kIGNhbGxlcnMKKysgICBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvIG9ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdAorKyAgIGFjY2VzcyBwZXJtaXNzaW9ucy4gVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbgorKyAgIGZhY2Nlc3NhdCgpIHdpdGggKGZsYWcgPT0gMCkgYW5kIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGlzIHRoZQorKyAgIGJlaGF2aW91ciBmb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQKKysgICB3aXRoIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgorKworKyAgIFRoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90IGNsZWFyIGlmCisrICAgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlIGp1c3QgaGlzdG9yaWNhbAorKyAgIGFuZCBub3QgYWN0dWFsbHkgbmVjZXNzYXJ5IG9yIGRlc2lyZWQgYmVoYXZpb3VyPworKyovCisrCisrI2RlZmluZSBsYWNjZXNzKHBhdGgsIG1vZGUpIGZhY2Nlc3NhdChBVF9GRENXRCwgKHBhdGgpLCAobW9kZSksIDApCisgCisgaW50IHRvdWNoX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBwYXJlbnRzLCB1c2VjX3Qgc3RhbXAsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBtb2RlX3QgbW9kZSk7CisgaW50IHRvdWNoKGNvbnN0IGNoYXIgKnBhdGgpOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCitpbmRleCA5MDNhMTg3ODYuLjJmNjA1MmVlNyAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKKysrKyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKK0BAIC03MCw3ICs3MCw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiByb290IGZpbGUgc3lzdGVtOiAlbSIpOworIAorICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0YodGFibGUpOyBpICsrKSB7CistICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPj0gMCkKKysgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgdGFibGVbaV0uZGlyLCBGX09LLCAwKSA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworIAorICAgICAgICAgICAgICAgICBpZiAodGFibGVbaV0udGFyZ2V0KSB7CitAQCAtNzgsNyArNzgsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworIAorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIG9uZSBvZiB0aGUgdGFyZ2V0cyBleGlzdHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxTVFJfRk9SRUFDSChzLCB0YWJsZVtpXS50YXJnZXQpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIDApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBhIHNwZWNpZmljIGZpbGUgZXhpc3RzIGF0IHRoZSB0YXJnZXQgcGF0aCAqLworQEAgLTg5LDcgKzg5LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7CisgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcCwgRl9PSywgMCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCmluZGV4IDg2NjZiZGMuLmViMzgwY2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDhjYzFhZTExZjU0ZGNjMzhlZTIxNjhiMGY5OTcwM2I4MzVkZDM5NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGFiNWEyNzA0MDEzM2Y3Y2RmMDYyYWM4Y2ZlYjk0ZTA4MWQzNTY3YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjQxOjEzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTldIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKK1N1YmplY3Q6IFtQQVRDSCAwNy8xNF0gcnVsZXM6IHdoaXRlbGlzdCBoZCogZGV2aWNlcwogCiBxZW11IGJ5IGRlZmF1bHQgZW11bGF0ZXMgSURFIGFuZCB0aGUgbGludXgteW9jdG8ga2VybmVsKHMpIHVzZQogQ09ORklHX0lERSBpbnN0ZWFkIG9mIHRoZSBtb3JlIG1vZGVybiBsaWJzYXRhLCBzbyBkaXNrcyBhcHBlYXIgYXMKQEAgLTExLDIzICsxMSwyNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLWluZGV4IGMxM2QwNWMuLmIxNGZiZWQgMTAwNjQ0CitpbmRleCBkMjc0NWY2NWYuLjYzZjQ3MmJlOCAxMDA2NDQKIC0tLSBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwogKysrIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCiBAQCAtNyw3ICs3LDcgQEAgQUNUSU9OPT0icmVtb3ZlIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKICBFTlZ7VURFVl9ESVNBQkxFX1BFUlNJU1RFTlRfU1RPUkFHRV9SVUxFU19GTEFHfT09IjEiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgogIAogIFNVQlNZU1RFTSE9ImJsb2NrIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLS1LRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLStLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfGhkKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCistS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKKytLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qfG5iZCp8aGQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKICAKICAjIGlnbm9yZSBwYXJ0aXRpb25zIHRoYXQgc3BhbiB0aGUgZW50aXJlIGRpc2sKICBURVNUPT0id2hvbGVfZGlzayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCmluZGV4IDJiMzMzMzcuLmFlZWJiZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNzllNjRhMDc4NDBlMGQ5N2Q2NmU0NjExMWYxYzA4NmJmODM5ODFiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDc5ZTFmNGFhMmI5ZjFjOTExYTRkMGRkMThlMjIyZDI0MWE5NzhlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6MzU6MzAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xOV0gTWFrZSByb290J3MgaG9tZSBkaXJlY3RvcnkgY29uZmlndXJhYmxlCitTdWJqZWN0OiBbUEFUQ0ggNDIvNDhdIE1ha2Ugcm9vdCdzIGhvbWUgZGlyZWN0b3J5IGNvbmZpZ3VyYWJsZQogCiBPcGVuRW1iZWRkZWQgaGFzIGEgY29uZmlndXJhYmxlIGhvbWUgZGlyZWN0b3J5IGZvciByb290LiBBbGxvdwogc3lzdGVtZCB0byBiZSBidWlsdCB1c2luZyBpdHMgaWRlYSBvZiB3aGF0IHJvb3QncyBob21lIGRpcmVjdG9yeQpAQCAtMTQsNiArMTQsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBEYW4gTWNHcmVnb3IgPGRhbi5tY2dyZWdvckB1c2Fzay5jYT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMiArKwogIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgNyArKysrKysrCkBAIC0yNCwxOCArMjUsMTggQEAKICA2IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA0MjBlMGUwLi4zMDEwYjAxIDEwMDY0NAoraW5kZXggMWJjZDkzMmMyLi5jMmI0YTk5ZDIgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yMTMsNiArMjEzLDcgQEAgQU1fQ1BQRkxBR1MgPSBcCitAQCAtMjI2LDYgKzIyNiw3IEBAIEFNX0NQUEZMQUdTID0gXAogIAktRExJQkRJUj1cIiQobGliZGlyKVwiIFwKICAJLURST09UTElCRElSPVwiJChyb290bGliZGlyKVwiIFwKICAJLURST09UTElCRVhFQ0RJUj1cIiQocm9vdGxpYmV4ZWNkaXIpXCIgXAogKwktRFJPT1RIT01FRElSPVwiJChyb290aG9tZWRpcilcIiBcCi0gCS1EVEVTVF9ESVI9XCIkKGFic190b3Bfc3JjZGlyKS90ZXN0XCIgXAogIAktSSAkKHRvcF9zcmNkaXIpL3NyYyBcCiAgCS1JICQodG9wX2J1aWxkZGlyKS9zcmMvYmFzaWMgXAotQEAgLTYwNTcsNiArNjA1OCw3IEBAIHN1YnN0aXR1dGlvbnMgPSBcCisgCS1JICQodG9wX3NyY2Rpcikvc3JjL2Jhc2ljIFwKK0BAIC02MzU2LDYgKzYzNTcsNyBAQCBzdWJzdGl0dXRpb25zID0gXAogICAgICAgICAnfHJvb3RsaWJkaXI9JChyb290bGliZGlyKXwnIFwKICAgICAgICAgJ3xyb290bGliZXhlY2Rpcj0kKHJvb3RsaWJleGVjZGlyKXwnIFwKICAgICAgICAgJ3xyb290YmluZGlyPSQocm9vdGJpbmRpcil8JyBcCkBAIC00NCwxMCArNDUsMTAgQEAKICAgICAgICAgJ3xTWVNURU1DVEw9JChyb290YmluZGlyKS9zeXN0ZW1jdGx8JyBcCiAgICAgICAgICd8U1lTVEVNRF9OT1RJRlk9JChyb290YmluZGlyKS9zeXN0ZW1kLW5vdGlmeXwnIFwKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGIxMGM5NTIuLmRmYzBiZDMgMTAwNjQ0CitpbmRleCAwMzU0ZmZlNmEuLmI1M2NhMWYxYSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTUxMyw2ICsxNTEzLDExIEBAIEFDX0FSR19XSVRIKFtyb290bGliZGlyXSwKK0BAIC0xNjQxLDYgKzE2NDEsMTEgQEAgQUNfQVJHX1dJVEgoW3Jvb3RsaWJkaXJdLAogICAgICAgICAgW3dpdGhfcm9vdGxpYmRpcj0ke2xpYmRpcn1dKQogIEFYX05PUk1BTElaRV9QQVRIKFt3aXRoX3Jvb3RsaWJkaXJdKQogIApAQCAtNTcsMjkgKzU4LDI5IEBACiArICAgICAgICBbd2l0aF9yb290aG9tZWRpcj0vcm9vdF0pCiArCiAgQUNfQVJHX1dJVEgoW3BhbWxpYmRpcl0sCi0gICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXBhbWxpYmRpcj1ESVJdLCBbRGlyZWN0b3J5IGZvciBQQU0gbW9kdWxlc10pLAorICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wYW1saWJkaXI9RElSXSwgW2RpcmVjdG9yeSBmb3IgUEFNIG1vZHVsZXNdKSwKICAgICAgICAgIFtdLAotQEAgLTE1OTgsNiArMTYwMyw3IEBAIEFDX1NVQlNUKFtwYW1saWJkaXJdLCBbJHdpdGhfcGFtbGliZGlyXSkKLSBBQ19TVUJTVChbcGFtY29uZmRpcl0sIFskd2l0aF9wYW1jb25mZGlyXSkKK0BAIC0xNzMzLDYgKzE3MzgsNyBAQCBBQ19TVUJTVChbcGFtY29uZmRpcl0sIFskd2l0aF9wYW1jb25mZGlyXSkKKyBBQ19TVUJTVChbcnBtbWFjcm9zZGlyXSwgWyR3aXRoX3JwbW1hY3Jvc2Rpcl0pCiAgQUNfU1VCU1QoW3Jvb3RwcmVmaXhdLCBbJHdpdGhfcm9vdHByZWZpeF0pCiAgQUNfU1VCU1QoW3Jvb3RsaWJkaXJdLCBbJHdpdGhfcm9vdGxpYmRpcl0pCiArQUNfU1VCU1QoW3Jvb3Rob21lZGlyXSwgWyR3aXRoX3Jvb3Rob21lZGlyXSkKICAKICBBQ19DT05GSUdfRklMRVMoWwogICAgICAgICAgTWFrZWZpbGUKLUBAIC0xNjg4LDYgKzE2OTQsNyBAQCBBQ19NU0dfUkVTVUxUKFsKK0BAIC0xODI5LDYgKzE4MzUsNyBAQCBBQ19NU0dfUkVTVUxUKFsKICAgICAgICAgIGluY2x1ZGVkaXI6ICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfQogICAgICAgICAgbGliIGRpcjogICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0KICAgICAgICAgIHJvb3RsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3RsaWJkaXJ9CiArICAgICAgICByb290IGhvbWUgZGlyOiAgICAgICAgICAgICAgICAgICAgICR7d2l0aF9yb290aG9tZWRpcn0KICAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KICAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIEJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059CisgICAgICAgICBidWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91c2VyLXV0aWwuYyBiL3NyYy9iYXNpYy91c2VyLXV0aWwuYwotaW5kZXggOTM4NTMzZC4uM2Y5ZmRjNCAxMDA2NDQKK2luZGV4IGM2MTlkYWQ1Mi4uNjYyNjgyYWRmIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3VzZXItdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvdXNlci11dGlsLmMKLUBAIC0xMjcsNyArMTI3LDcgQEAgaW50IGdldF91c2VyX2NyZWRzKAorQEAgLTEyOSw3ICsxMjksNyBAQCBpbnQgZ2V0X3VzZXJfY3JlZHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgKmdpZCA9IDA7CiAgCiAgICAgICAgICAgICAgICAgIGlmIChob21lKQpAQCAtODgsNyArODksNyBAQAogIAogICAgICAgICAgICAgICAgICBpZiAoc2hlbGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKnNoZWxsID0gIi9iaW4vc2giOwotQEAgLTM4Nyw3ICszODcsNyBAQCBpbnQgZ2V0X2hvbWVfZGlyKGNoYXIgKipfaCkgeworQEAgLTM4OSw3ICszODksNyBAQCBpbnQgZ2V0X2hvbWVfZGlyKGNoYXIgKipfaCkgewogICAgICAgICAgLyogSGFyZGNvZGUgaG9tZSBkaXJlY3RvcnkgZm9yIHJvb3QgdG8gYXZvaWQgTlNTICovCiAgICAgICAgICB1ID0gZ2V0dWlkKCk7CiAgICAgICAgICBpZiAodSA9PSAwKSB7CkBAIC05OCwxMCArOTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKICAKIGRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi5jIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotaW5kZXggMTliNDdjZC4uZTQyYmYxOSAxMDA2NDQKK2luZGV4IDhhNWZlZGQ0Yi4uN2IwMWVjMDc4IDEwMDY0NAogLS0tIGEvc3JjL25zcGF3bi9uc3Bhd24uYwogKysrIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotQEAgLTI3OTgsNyArMjc5OCw3IEBAIHN0YXRpYyBpbnQgaW5uZXJfY2hpbGQoCitAQCAtMjI5MSw3ICsyMjkxLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKICAgICAgICAgIGlmIChlbnZwW25fZW52XSkKICAgICAgICAgICAgICAgICAgbl9lbnYrKzsKICAKQEAgLTExMCw4ICsxMTEsOCBAQAogICAgICAgICAgICAgIChhc3ByaW50ZigoY2hhcioqKShlbnZwICsgbl9lbnYrKyksICJVU0VSPSVzIiwgYXJnX3VzZXIgPyBhcmdfdXNlciA6ICJyb290IikgPCAwKSB8fAogICAgICAgICAgICAgIChhc3ByaW50ZigoY2hhcioqKShlbnZwICsgbl9lbnYrKyksICJMT0dOQU1FPSVzIiwgYXJnX3VzZXIgPyBhcmdfdXNlciA6ICJyb290IikgPCAwKSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKLUBAIC0yODgyLDcgKzI4ODIsNyBAQCBzdGF0aWMgaW50IGlubmVyX2NoaWxkKAotICAgICAgICAgZWxzZSB7CitAQCAtMjM3Myw3ICsyMzczLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKKyAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGlmICghYXJnX2NoZGlyKQogICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHdlIGNhbm5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSwgd2UnbGwgZW5kIHVwIGluIC8sIHRoYXQgaXMgZXhwZWN0ZWQuICovCiAtICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGNoZGlyKGhvbWUgPzogIi9yb290Iik7CkBAIC0xMjAsNyArMTIxLDcgQEAKICAgICAgICAgICAgICAgICAgZXhlY2xlKCIvYmluL2Jhc2giLCAiLWJhc2giLCBOVUxMLCBlbnZfdXNlKTsKICAgICAgICAgICAgICAgICAgZXhlY2xlKCIvYmluL3NoIiwgIi1zaCIsIE5VTEwsIGVudl91c2UpOwogZGlmZiAtLWdpdCBhL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluIGIvdW5pdHMvZW1lcmdlbmN5LnNlcnZpY2UuaW4KLWluZGV4IGRhNjhlYjguLmUyNWY4NzkgMTAwNjQ0CitpbmRleCBlOWViMjM4YjkuLjMyNTg4ZTQ4YSAxMDA2NDQKIC0tLSBhL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluCiArKysgYi91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgogQEAgLTE1LDggKzE1LDggQEAgQ29uZmxpY3RzPXN5c2xvZy5zb2NrZXQKQEAgLTEzMSwxMSArMTMyLDExIEBACiAtV29ya2luZ0RpcmVjdG9yeT0tL3Jvb3QKICtFbnZpcm9ubWVudD1IT01FPUByb290aG9tZWRpckAKICtXb3JraW5nRGlyZWN0b3J5PS1Acm9vdGhvbWVkaXJACi0gRXhlY1N0YXJ0UHJlPS0vYmluL3BseW1vdXRoIC0td2FpdCBxdWl0Ci0gRXhlY1N0YXJ0UHJlPS0vYmluL2VjaG8gLWUgJ1lvdSBhcmUgaW4gZW1lcmdlbmN5IG1vZGUuIEFmdGVyIGxvZ2dpbmcgaW4sIHR5cGUgImpvdXJuYWxjdGwgLXhiIiB0byB2aWV3XFxuc3lzdGVtIGxvZ3MsICJzeXN0ZW1jdGwgcmVib290IiB0byByZWJvb3QsICJzeXN0ZW1jdGwgZGVmYXVsdCIgb3IgXkQgdG9cXG50cnkgYWdhaW4gdG8gYm9vdCBpbnRvIGRlZmF1bHQgbW9kZS4nCi0gRXhlY1N0YXJ0PS0vYmluL3NoIC1jICJAU1VMT0dJTkA7IEBTWVNURU1DVExAIC0tam9iLW1vZGU9ZmFpbCAtLW5vLWJsb2NrIGRlZmF1bHQiCisgRXhlY1N0YXJ0PS1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtc3Vsb2dpbi1zaGVsbCBlbWVyZ2VuY3kKKyBUeXBlPWlkbGUKKyBTdGFuZGFyZElucHV0PXR0eS1mb3JjZQogZGlmZiAtLWdpdCBhL3VuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluIGIvdW5pdHMvcmVzY3VlLnNlcnZpY2UuaW4KLWluZGV4IDVmZWZmNjkuLmE4MzQzOWUgMTAwNjQ0CitpbmRleCA0YWI2NmY0ODUuLmJkOTg5OGYyYyAxMDA2NDQKIC0tLSBhL3VuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluCiArKysgYi91bml0cy9yZXNjdWUuc2VydmljZS5pbgogQEAgLTE0LDggKzE0LDggQEAgQWZ0ZXI9c3lzaW5pdC50YXJnZXQgcGx5bW91dGgtc3RhcnQuc2VydmljZQpAQCAtMTQ2LDkgKzE0Nyw5IEBACiAtV29ya2luZ0RpcmVjdG9yeT0tL3Jvb3QKICtFbnZpcm9ubWVudD1IT01FPUByb290aG9tZWRpckAKICtXb3JraW5nRGlyZWN0b3J5PS1Acm9vdGhvbWVkaXJACi0gRXhlY1N0YXJ0UHJlPS0vYmluL3BseW1vdXRoIC0td2FpdCBxdWl0Ci0gRXhlY1N0YXJ0UHJlPS0vYmluL2VjaG8gLWUgJ1lvdSBhcmUgaW4gcmVzY3VlIG1vZGUuIEFmdGVyIGxvZ2dpbmcgaW4sIHR5cGUgImpvdXJuYWxjdGwgLXhiIiB0byB2aWV3XFxuc3lzdGVtIGxvZ3MsICJzeXN0ZW1jdGwgcmVib290IiB0byByZWJvb3QsICJzeXN0ZW1jdGwgZGVmYXVsdCIgb3IgXkQgdG9cXG5ib290IGludG8gZGVmYXVsdCBtb2RlLicKLSBFeGVjU3RhcnQ9LS9iaW4vc2ggLWMgIkBTVUxPR0lOQDsgQFNZU1RFTUNUTEAgLS1qb2ItbW9kZT1mYWlsIC0tbm8tYmxvY2sgZGVmYXVsdCIKKyBFeGVjU3RhcnQ9LUByb290bGliZXhlY2RpckAvc3lzdGVtZC1zdWxvZ2luLXNoZWxsIHJlc2N1ZQorIFR5cGU9aWRsZQorIFN0YW5kYXJkSW5wdXQ9dHR5LWZvcmNlCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIxOTk4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNGI2NzMzNTQ0YmViNjYyYTBmNzczMTAzMDJmYWUxZmI3Yjc2ZDE2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEyIFNlcCAyMDE1IDE4OjUzOjMxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTMvMTNdIGNvbXBhcmlzb25fZm5fdCBpcyBnbGliYyBzcGVjaWZpYywgdXNlIHJhdyBzaWduYXR1cmUgaW4KKyBmdW5jdGlvbiBwb2ludGVyCisKK21ha2UgaXQgd29yayB3aXRoIG11c2wgd2hlcmUgY29tcGFyaXNvbl9mbl90IGlzIG5vdCBwcm92aWRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9iYXNpYy91dGlsLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5oIGIvc3JjL2Jhc2ljL3V0aWwuaAoraW5kZXggYzdkYTZjMzliLi44N2Y2MmI4OTEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvdXRpbC5oCitAQCAtOTgsNyArOTgsNyBAQCB2b2lkICp4YnNlYXJjaF9yKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwKKyAgKiBOb3JtYWwgcXNvcnQgcmVxdWlyZXMgYmFzZSB0byBiZSBub25udWxsLiBIZXJlIHdlcmUgcmVxdWlyZQorICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCisgICovCistc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgeworK3N0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7CisgICAgICAgICBpZiAobm1lbWIgPD0gMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaAppbmRleCBmMzFkMjExLi45NTg3MWJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNGQyOGQ5YTdkOGQ2OWZiNDI5OTU1ZDc3MGU1M2U3YTgxNjQwZGEyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzg4Mzk4NWEzYTc4Njc3ZTlhMWQ1ZDYxZmU3ZmE4YmFkZjM5ZjU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDU6MjMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8xOV0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKK1N1YmplY3Q6IFtQQVRDSCAxMC8xNF0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKICBzdXBwb3J0IgogCiBUaGlzIHJldmVydHMgY29tbWl0IGJlMmVhNzIzYjFkMDIzYjNkMzg1ZDNiNzkxZWU0NjA3Y2JmYjIwY2EuCkBAIC0xMSwyMyArMTEsMjQgQEAKIAogU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKysrCi0gUkVBRE1FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBSRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogIFRPRE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKICBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICB8ICAxOCArKysrKwogIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIHwgMTU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi5jICAgICAgICAgIHwgICAzICsKICBzcmMvdWRldi91ZGV2LmggICAgICAgICAgICAgICAgICB8ICAgNiArKwogIHNyYy91ZGV2L3VkZXZkLmMgICAgICAgICAgICAgICAgIHwgIDEzICsrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIDggZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAzMDEwYjAxLi4yMjk0OTJhIDEwMDY0NAoraW5kZXggYzJiNGE5OWQyLi42OTJkN2JiOTUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0zNzkxLDYgKzM3OTEsMTggQEAgbGlidWRldl9jb3JlX2xhX0xJQkFERCA9IFwKK0BAIC0zOTg1LDYgKzM5ODUsMTggQEAgbGlidWRldl9jb3JlX2xhX0xJQkFERCA9IFwKICAJJChCTEtJRF9MSUJTKSBcCiAgCSQoS01PRF9MSUJTKQogIApAQCAtNDcsMTcgKzQ4LDEwIEBACiAgbGlidWRldl9jb3JlX2xhX1NPVVJDRVMgKz0gXAogIAlzcmMvdWRldi91ZGV2LWJ1aWx0aW4ta21vZC5jCiBkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCi1pbmRleCA5ZjViYzkzLi5mNjBhZTExIDEwMDY0NAoraW5kZXggNjAzODhlZWJlLi5lMjE5NzYzOTMgMTAwNjQ0CiAtLS0gYS9SRUFETUUKICsrKyBiL1JFQURNRQotQEAgLTUwLDE0ICs1MCwxNCBAQCBSRVFVSVJFTUVOVFM6Ci0gICAgICAgICAgIENPTkZJR19QUk9DX0ZTCi0gICAgICAgICAgIENPTkZJR19GSEFORExFIChsaWJ1ZGV2LCBtb3VudCBhbmQgYmluZCBtb3VudCBoYW5kbGluZykKLSAKLS0gICAgICAgIHVkZXYgd2lsbCBmYWlsIHRvIHdvcmsgd2l0aCB0aGUgbGVnYWN5IHN5c2ZzIGxheW91dDoKLSsgICAgICAgIFVkZXYgd2lsbCBmYWlsIHRvIHdvcmsgd2l0aCB0aGUgbGVnYWN5IHN5c2ZzIGxheW91dDoKLSAgICAgICAgICAgQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9bgotIAorQEAgLTYxLDggKzYxLDggQEAgUkVRVUlSRU1FTlRTOgogICAgICAgICAgTGVnYWN5IGhvdHBsdWcgc2xvd3MgZG93biB0aGUgc3lzdGVtIGFuZCBjb25mdXNlcyB1ZGV2OgogICAgICAgICAgICBDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIiCiAgCkBAIC02OSwxMCArNjMsMTAgQEAKICAKICAgICAgICAgIFNvbWUgdWRldiBydWxlcyBhbmQgdmlydHVhbGl6YXRpb24gZGV0ZWN0aW9uIHJlbGllcyBvbiBpdDoKIGRpZmYgLS1naXQgYS9UT0RPIGIvVE9ETwotaW5kZXggYmFhYWM5NC4uMWFiMTY5MSAxMDA2NDQKK2luZGV4IDYxZWZhNWU5Zi4uNjdjY2FjMjI0IDEwMDY0NAogLS0tIGEvVE9ETwogKysrIGIvVE9ETwotQEAgLTY1OCw2ICs2NTgsNyBAQCBGZWF0dXJlczoKK0BAIC03NDAsNiArNzQwLDcgQEAgRmVhdHVyZXM6CiAgKiBpbml0aWFsaXplIHRoZSBob3N0bmFtZSBmcm9tIHRoZSBmcyBsYWJlbCBvZiAvLCBpZiAvZXRjL2hvc3RuYW1lIGRvZXMgbm90IGV4aXN0PwogIAogICogdWRldjoKQEAgLTgxLDExICs3NSwxMSBAQAogICAgLSBraWxsIHNjc2lfaWQKICAgIC0gYWRkIHRyaWdnZXIgLS1zdWJzeXN0ZW0tbWF0Y2g9dXNiL3VzYl9kZXZpY2UgZGV2aWNlCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkZmMwYmQzLi4xZGUwMDY2IDEwMDY0NAoraW5kZXggYjUzY2ExZjFhLi4xMTUwY2E1MGUgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEzOTQsNiArMTM5NCwyMyBAQCBBTV9DT05ESVRJT05BTChIQVZFX01ZSE9TVE5BTUUsIFt0ZXN0ICIkaGF2ZV9teWhvc3RuYW1lIiA9ICJ5ZXMiXSkKLSBBQ19BUkdfRU5BQkxFKGh3ZGIsIFtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWh3ZGJdLCBbZGlzYWJsZSBoYXJkd2FyZSBkYXRhYmFzZSBzdXBwb3J0XSldLAorQEAgLTE1MjIsNiArMTUyMiwyMyBAQCBBTV9DT05ESVRJT05BTChIQVZFX01ZSE9TVE5BTUUsIFt0ZXN0ICIkaGF2ZV9teWhvc3RuYW1lIiA9ICJ5ZXMiXSkKKyBBQ19BUkdfRU5BQkxFKGh3ZGIsIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWh3ZGJdLCBbZGlzYWJsZSBoYXJkd2FyZSBkYXRhYmFzZSBzdXBwb3J0XSldLAogICAgICAgICBlbmFibGVfaHdkYj0kZW5hYmxldmFsLCBlbmFibGVfaHdkYj15ZXMpCiAgQU1fQ09ORElUSU9OQUwoRU5BQkxFX0hXREIsIFt0ZXN0IHgkZW5hYmxlX2h3ZGIgPSB4eWVzXSkKICtBQ19BUkdfV0lUSChmaXJtd2FyZS1wYXRoLApAQCAtMTA4LDE3ICsxMDIsMTcgQEAKICAKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGhhdmVfbWFucGFnZXM9bm8KLUBAIC0xNjk4LDYgKzE3MTUsNyBAQCBBQ19NU0dfUkVTVUxUKFsKK0BAIC0xODM5LDYgKzE4NTYsNyBAQCBBQ19NU0dfUkVTVUxUKFsKICAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KICAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIEJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059CisgICAgICAgICBidWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQogKyAgICAgICAgZmlybXdhcmUgcGF0aDogICAgICAgICAgICAgICAgICAgICAke0ZJUk1XQVJFX1BBVEh9CiAgICAgICAgICBQQU0gbW9kdWxlcyBkaXI6ICAgICAgICAgICAgICAgICAgICR7d2l0aF9wYW1saWJkaXJ9CiAgICAgICAgICBQQU0gY29uZmlndXJhdGlvbiBkaXI6ICAgICAgICAgICAgICR7d2l0aF9wYW1jb25mZGlyfQotICAgICAgICAgRC1CdXMgcG9saWN5IGRpcjogICAgICAgICAgICAgICAgICAke3dpdGhfZGJ1c3BvbGljeWRpcn0KKyAgICAgICAgIFJQTSBtYWNyb3MgZGlyOiAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3JwbW1hY3Jvc2Rpcn0KIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmQ4YzJmYgoraW5kZXggMDAwMDAwMDAwLi5iZDhjMmZiOTYKIC0tLSAvZGV2L251bGwKICsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCiBAQCAtMCwwICsxLDE1NCBAQApAQCAtMjc3LDcgKzI3MSw3IEBACiArICAgICAgICAucnVuX29uY2UgPSB0cnVlLAogK307CiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYwotaW5kZXggZTZiMzZmMS4uY2Q5OTQ3ZSAxMDA2NDQKK2luZGV4IGU2YjM2ZjEyNC4uY2Q5OTQ3ZTJhIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKICsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCiBAQCAtMzEsNiArMzEsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiAqYnVpbHRpbnNbXSA9IHsKQEAgLTI5MSwxMCArMjg1LDEwIEBACiAgICAgICAgICBbVURFVl9CVUlMVElOX0lOUFVUX0lEXSA9ICZ1ZGV2X2J1aWx0aW5faW5wdXRfaWQsCiAgICAgICAgICBbVURFVl9CVUlMVElOX0tFWUJPQVJEXSA9ICZ1ZGV2X2J1aWx0aW5fa2V5Ym9hcmQsCiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi5oIGIvc3JjL3VkZXYvdWRldi5oCi1pbmRleCA4NDMzZThkLi5kMzIzNjZkIDEwMDY0NAoraW5kZXggYzBjYjdlYWU4Li45ZjBmMWNmMTMgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2LmgKICsrKyBiL3NyYy91ZGV2L3VkZXYuaAotQEAgLTE0OCw2ICsxNDgsOSBAQCBlbnVtIHVkZXZfYnVpbHRpbl9jbWQgeworQEAgLTE1MCw2ICsxNTAsOSBAQCBlbnVtIHVkZXZfYnVpbHRpbl9jbWQgewogICAgICAgICAgVURFVl9CVUlMVElOX0JMS0lELAogICNlbmRpZgogICAgICAgICAgVURFVl9CVUlMVElOX0JUUkZTLApAQCAtMzA0LDcgKzI5OCw3IEBACiAgICAgICAgICBVREVWX0JVSUxUSU5fSFdEQiwKICAgICAgICAgIFVERVZfQlVJTFRJTl9JTlBVVF9JRCwKICAgICAgICAgIFVERVZfQlVJTFRJTl9LRVlCT0FSRCwKLUBAIC0xNzYsNiArMTc5LDkgQEAgc3RydWN0IHVkZXZfYnVpbHRpbiB7CitAQCAtMTc4LDYgKzE4MSw5IEBAIHN0cnVjdCB1ZGV2X2J1aWx0aW4gewogIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9ibGtpZDsKICAjZW5kaWYKICBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYnRyZnM7CkBAIC0zMTUsNyArMzA5LDcgQEAKICBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5faW5wdXRfaWQ7CiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2tleWJvYXJkOwogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZkLmMgYi9zcmMvdWRldi91ZGV2ZC5jCi1pbmRleCBkMzM2ZWUwLi44MWU1ZGM1IDEwMDY0NAoraW5kZXggYWNiZGRkNDE4Li4yMDM0N2I0MDIgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2ZC5jCiArKysgYi9zcmMvdWRldi91ZGV2ZC5jCiBAQCAtMTI1LDYgKzEyNSw5IEBAIHN0cnVjdCBldmVudCB7CkBAIC0zNTMsNSArMzQ3LDUgQEAKICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5kZXZwYXRoW2NvbW1vbl0gPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmRlbGF5aW5nX3NlcW51bSA9IGxvb3BfZXZlbnQtPnNlcW51bTsKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LW1ha2UtdGVzdC1kaXItY29uZmlndXJhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LW1ha2UtdGVzdC1kaXItY29uZmlndXJhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGQxZGY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1tYWtlLXRlc3QtZGlyLWNvbmZpZ3VyYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gMjE4YmJjNTU1YTM3ZjkzNzNmYmI3ZjAzYzc0NGViNjUxMDlkMzQ3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDc6MzcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8xOV0gbWFrZSB0ZXN0IGRpciBjb25maWd1cmFibGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLXRlc3QgbWF5YmUgYmUgcnVuIG9uIHRhcmdldCBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50LCBhbmQgdGVzdCBkaXIKLWlzIG5vdCB0aGUgY29tcGlsYXRpb24gZGlyLCBzbyBtYWtlIGl0IGNvbmZpZ3VyYWJsZQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAyMjk0OTJhLi5lOTk3ZDgyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjE0LDcgKzIxNCw3IEBAIEFNX0NQUEZMQUdTID0gXAotIAktRFJPT1RMSUJESVI9XCIkKHJvb3RsaWJkaXIpXCIgXAotIAktRFJPT1RMSUJFWEVDRElSPVwiJChyb290bGliZXhlY2RpcilcIiBcCi0gCS1EUk9PVEhPTUVESVI9XCIkKHJvb3Rob21lZGlyKVwiIFwKLS0JLURURVNUX0RJUj1cIiQoYWJzX3RvcF9zcmNkaXIpL3Rlc3RcIiBcCi0rCS1EVEVTVF9ESVI9XCIkKHRlc3RkaXIpL3Rlc3RcIiBcCi0gCS1JICQodG9wX3NyY2Rpcikvc3JjIFwKLSAJLUkgJCh0b3BfYnVpbGRkaXIpL3NyYy9iYXNpYyBcCi0gCS1JICQodG9wX3NyY2Rpcikvc3JjL2Jhc2ljIFwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFkZTAwNjYuLmIxMmUzMjAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE1MzUsNiArMTUzNSwxMSBAQCBBQ19BUkdfV0lUSChbcm9vdGhvbWVkaXJdLAotICAgICAgICAgW10sCi0gICAgICAgICBbd2l0aF9yb290aG9tZWRpcj0vcm9vdF0pCi0gCi0rQUNfQVJHX1dJVEgoW3Rlc3RkaXJdLAotKyAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC10ZXN0ZGlyPURJUl0sIFt0ZXN0IGZpbGUgZGlyZWN0b3J5XSksCi0rICAgICAgICBbXSwKLSsgICAgICAgIFt3aXRoX3Rlc3RkaXI9JHthYnNfdG9wX3NyY2Rpcn1dKQotKwotIEFDX0FSR19XSVRIKFtwYW1saWJkaXJdLAotICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wYW1saWJkaXI9RElSXSwgW0RpcmVjdG9yeSBmb3IgUEFNIG1vZHVsZXNdKSwKLSAgICAgICAgIFtdLAotQEAgLTE2MjEsNiArMTYyNiw3IEBAIEFDX1NVQlNUKFtwYW1jb25mZGlyXSwgWyR3aXRoX3BhbWNvbmZkaXJdKQotIEFDX1NVQlNUKFtyb290cHJlZml4XSwgWyR3aXRoX3Jvb3RwcmVmaXhdKQotIEFDX1NVQlNUKFtyb290bGliZGlyXSwgWyR3aXRoX3Jvb3RsaWJkaXJdKQotIEFDX1NVQlNUKFtyb290aG9tZWRpcl0sIFskd2l0aF9yb290aG9tZWRpcl0pCi0rQUNfU1VCU1QoW3Rlc3RkaXJdLCBbJHdpdGhfdGVzdGRpcl0pCi0gCi0gQUNfQ09ORklHX0ZJTEVTKFsKLSAgICAgICAgIE1ha2VmaWxlCi1AQCAtMTcxMiw2ICsxNzE4LDcgQEAgQUNfTVNHX1JFU1VMVChbCi0gICAgICAgICBsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfQotICAgICAgICAgcm9vdGxpYiBkaXI6ICAgICAgICAgICAgICAgICAgICAgICAke3dpdGhfcm9vdGxpYmRpcn0KLSAgICAgICAgIHJvb3QgaG9tZSBkaXI6ICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3Rob21lZGlyfQotKyAgICAgICAgdGVzdCBkaXI6ICAgICAgICAgICAgICAgICAgICAgICAgICAke3dpdGhfdGVzdGRpcn0KLSAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KLSAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIEJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKaW5kZXggNzdkYmQ2ZS4uZDIwMDYzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaApAQCAtNiw2ICs2LDcgQEAKIG1pc3NpbmcuaCBhbHJlYWR5IGluY2x1ZGVzIGl0CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHNyYy9iYXNpYy9lc2NhcGUuaCB8IDEgLQogIHNyYy9iYXNpYy91dGY4LmggICB8IDEgLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2gKaW5kZXggNTgyNDAzMy4uMDY3YjczZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoCkBAIC0xLDIxICsxLDIzIEBACi1Gcm9tIDdjYzBiMTlkMjQ0MDIzYzdiM2U1NTc3NjViMDNiNzk3MWUwNDdmMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDEzNTU0NTcwOTJiMDJhMTVjNjQ2ZmMxYzcyZTY4YjY5NGE4NmRkOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAwNjowMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDE4LzE5XSBjaGVjayBmb3IgdWNoYXIuaCBpbiBjb25maWd1cmUKK1N1YmplY3Q6IFtQQVRDSCAxMi8xNF0gY2hlY2sgZm9yIHVjaGFyLmggaW4gY29uZmlndXJlCiAKIFVzZSBpZmRlZiB0byBpbmNsdWRlIHVjaGFyLmgKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0KICBjb25maWd1cmUuYWMgICAgICAgIHwgMSArCiAgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDIgKysKICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiMTJlMzIwLi40ZTZkZmRmIDEwMDY0NAoraW5kZXggMTE1MGNhNTBlLi42MGU3ZGY1ZWUgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI5OCw2ICsyOTgsNyBAQCBBTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05dLCBbdGVzdCAieCRoYXZlX3B5dGhvbiIgPSAieHllcyJdKQorQEAgLTMwNCw2ICszMDQsNyBAQCBBTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05dLCBbdGVzdCAieCRoYXZlX3B5dGhvbiIgPSAieHllcyJdKQogIAogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgCkBAIC0yNCwxMiArMjYsMTIgQEAKICBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9idHJmcy5oXSwgW10sIFtdKQogIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbWZkLmhdLCBbXSwgW10pCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDQ5MzY4NzMuLmNlNzk0MDQgMTAwNjQ0CitpbmRleCAyNWExMWYzNTEuLmQ2MzFiN2UzZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0zNSw3ICszNSw5IEBACi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgorQEAgLTM3LDcgKzM3LDkgQEAKICAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KICsjaWZkZWYgSEFWRV9VQ0hBUl9ICiAgI2luY2x1ZGUgPHVjaGFyLmg+CkBAIC0zOCw1ICs0MCw1IEBACiAgCiAgI2lmZGVmIEhBVkVfQVVESVQKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoCmluZGV4IDY2YWE0Y2EuLmI2MDkyNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKQEAgLTEsMTggKzEsMTkgQEAKLUZyb20gMjg5NTU0ZDg3ZTRmZDk2Y2FlMDhjMGZiNDQ5YmY0MWQ1NjQxY2QyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjdjNmJmZTJlYzVhZTQyNmU1ODZlMWQ2ZWNhZGI1MmE5NzEyOGEzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDk6NTMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8xOV0gc29ja2V0LXV0aWw6IGRvbid0IGZhaWwgaWYgbGliYyBkb2Vzbid0IHN1cHBvcnQgSUROCitTdWJqZWN0OiBbUEFUQ0ggMTMvMTRdIHNvY2tldC11dGlsOiBkb24ndCBmYWlsIGlmIGxpYmMgZG9lc24ndCBzdXBwb3J0IElETgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvc29ja2V0LXV0aWwuYyB8IDkgKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotaW5kZXggNGViZjEwNi4uNTNiOWExMiAxMDA2NDQKK2luZGV4IDAxNmU2NGFhMC4uZDQ2NTg4MjZlIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCiBAQCAtNDcsNiArNDcsMTUgQEAKQEAgLTI5LDggKzMwLDggQEAKICsjZGVmaW5lIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUyAwCiArI2VuZGlmCiAgCi0gaW50IHNvY2tldF9hZGRyZXNzX3BhcnNlKFNvY2tldEFkZHJlc3MgKmEsIGNvbnN0IGNoYXIgKnMpIHsKLSAgICAgICAgIGNoYXIgKmUsICpuOworICNpZmRlZiBFTkFCTEVfSUROCisgIyAgZGVmaW5lIElETl9GTEFHUyAoTklfSUROfE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUykKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLWJhY2stcG9ydC0yMzMtZG9uLXQtdXNlLXRoZS11bmlmaWVkLWhpZXJhcmNoeS1mb3ItdGhlLXN5c3RlbWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtYmFjay1wb3J0LTIzMy1kb24tdC11c2UtdGhlLXVuaWZpZWQtaGllcmFyY2h5LWZvci10aGUtc3lzdGVtZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYyZDg2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtYmFjay1wb3J0LTIzMy1kb24tdC11c2UtdGhlLXVuaWZpZWQtaGllcmFyY2h5LWZvci10aGUtc3lzdGVtZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVRoaXMgaXMgYSBkaXJlY3QgYmFja3BvcnQgZnJvbSBzeXN0ZW1kLTIzMydzIHN0cmVhbSB0byBmaXggbHhjL2RvY2tlci4KLQotJSBseGMtc3RhcnQgLW4gY29udGFpbmVyIC1GCi1seGMtc3RhcnQ6IGNnZnNuZy5jOiBwYXJzZV9oaWVyYXJjaGllczogODI1IEZhaWxlZCB0byBmaW5kIGN1cnJlbnQgY2dyb3VwIGZvciBjb250cm9sbGVyICduYW1lPXN5c3RlbWQnCi1seGMtc3RhcnQ6IGNnZnNuZy5jOiBhbGxfY29udHJvbGxlcnNfZm91bmQ6IDQzMSBubyBzeXN0ZW1kIGNvbnRyb2xsZXIgbW91bnRwb2ludCBmb3VuZAotbHhjLXN0YXJ0OiBzdGFydC5jOiBseGNfc3Bhd246IDEwODIgZmFpbGVkIGluaXRpYWxpemluZyBjZ3JvdXAgc3VwcG9ydAotbHhjLXN0YXJ0OiBzdGFydC5jOiBfX2x4Y19zdGFydDogMTMzMiBmYWlsZWQgdG8gc3Bhd24gJ2NvbnRhaW5lcicKLWx4Yy1zdGFydDogbHhjX3N0YXJ0LmM6IG1haW46IDM0NCBUaGUgY29udGFpbmVyIGZhaWxlZCB0byBzdGFydC4KLWx4Yy1zdGFydDogbHhjX3N0YXJ0LmM6IG1haW46IDM0OCBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGNhbiBiZSBvYnRhaW5lZCBieSBzZXR0aW5nIHRoZSAtLWxvZ2ZpbGUgYW5kIC0tbG9ncHJpb3JpdHkgb3B0aW9ucy4KLQotIyMgYmVnaW4gYmFja3BvcnQgIyMKLQotRnJvbSA4NDNkNWJhZjZhYWQ2YzUzZmMwMGVhOGQ5NWQ4MzIwOWE0ZjkyZGUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFBpdHQgPG1hcnRpbi5waXR0QHVidW50dS5jb20+Ci1EYXRlOiBUaHUsIDEwIE5vdiAyMDE2IDA1OjMzOjEzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGRvbid0IHVzZSB0aGUgdW5pZmllZCBoaWVyYXJjaHkgZm9yIHRoZSBzeXN0ZW1kIGNncm91cAotIHlldCAoIzQ2MjgpCi0KLVRvbyBtYW55IHRoaW5ncyBkb24ndCBnZXQgYWxvbmcgd2l0aCB0aGUgdW5pZmllZCBoaWVyYXJjaHkgeWV0OgotCi0gKiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYy9pc3N1ZXMvMTE3NQotICogaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzI4MTA5Ci0gKiBodHRwczovL2dpdGh1Yi5jb20vbHhjL2x4Yy9pc3N1ZXMvMTI4MAotCi1TbyByZXZlcnQgdGhlIGRlZmF1bHQgdG8gdGhlIGxlZ2FjeSBoaWVyYXJjaHkgZm9yIG5vdy4gRGV2ZWxvcGVycyBvZiB0aGUgYWJvdmUKLXNvZnR3YXJlIGNhbiBvcHQgaW50byB0aGUgdW5pZmllZCBoaWVyYXJjaHkgd2l0aAotInN5c3RlbWQubGVnYWN5X3N5c3RlbWRfY2dyb3VwX2NvbnRyb2xsZXI9MCIuCi0tLS0KLSBzcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCi1pbmRleCA1ZTczNzUzLi5kYzEzMDI1IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCi1AQCAtMjQyMywxMCArMjQyMywxMCBAQCBib29sIGNnX2lzX3VuaWZpZWRfc3lzdGVtZF9jb250cm9sbGVyX3dhbnRlZCh2b2lkKSB7Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSBnZXRfcHJvY19jbWRsaW5lX2tleSgic3lzdGVtZC5sZWdhY3lfc3lzdGVtZF9jZ3JvdXBfY29udHJvbGxlcj0iLCAmdmFsdWUpOwotICAgICAgICAgICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotICAgICAgICAgICAgICAgICBpZiAociA9PSAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHdhbnRlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgd2FudGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICB3YW50ZWQgPSBwYXJzZV9ib29sZWFuKHZhbHVlKSA8PSAwOwotICAgICAgICAgfQotLS0gCi0yLjEwLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVmZTQ5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5OSArMCwwIEBACi1yZXF1aXJlIHN5c3RlbWQuaW5jCi0KLVBST1ZJREVTID0gInVkZXYiCi0KLVBFID0gIjEiCi0KLURFUEVORFMgPSAia21vZCBpbnRsdG9vbC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGFjbCByZWFkbGluZSBsaWJjYXAgbGliY2dyb3VwIHV0aWwtbGludXgiCi0KLVNFQ1RJT04gPSAiYmFzZS9zaGVsbCIKLQotaW5oZXJpdCB1c2VyYWRkIHBrZ2NvbmZpZyBhdXRvdG9vbHMgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHFlbXUgc3lzdGVtZCBwdGVzdCBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBtYW5wYWdlcwotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vdG91Y2hzY3JlZW4ucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1kZWZpbmUtZXhwMTAtaWYtbWlzc2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtY29uZmlndXJlLUNoZWNrLWZvci1hZGRpdGlvbmFsLWZlYXR1cmVzLXRoYXQtdWNsaWJjLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1uc3Bhd24tVXNlLWV4ZWN2cGUtb25seS13aGVuLWxpYmMtc3VwcG9ydHMtaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS11dGlsLWJ5cGFzcy11bmltcGxlbWVudGVkLV9TQ19QSFlTX1BBR0VTLXN5c3RlbS1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUhBVkVfTVlIT1NUTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LW1ha2UtdGVzdC1kaXItY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWJhY2stcG9ydC0yMzMtZG9uLXQtdXNlLXRoZS11bmlmaWVkLWhpZXJhcmNoeS1mb3ItdGhlLXN5c3RlbWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb3JlLWxvYWQtZnJhZ21lbnQtcmVmdXNlLXVuaXRzLXdpdGgtZXJyb3JzLWluLWNlcnRhLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdW5pdHMtUHJlZmVyLWdldHR5LXRvLWFnZXR0eS1pbi1jb25zb2xlLXNldHVwLXN5c3RlbS5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gIiBmaWxlOi8vMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIgotCi1QQUNLQUdFQ09ORklHID8/PSAieHogXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2VmaSBwYW0gc2VsaW51eCBsZGNvbmZpZycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgJ3Jma2lsbCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGJpbmZtdCBcCi0gICAgICAgICAgICAgICAgICAgcmFuZG9tc2VlZCBcCi0gICAgICAgICAgICAgICAgICAgbWFjaGluZWQgXAotICAgICAgICAgICAgICAgICAgIGJhY2tsaWdodCBcCi0gICAgICAgICAgICAgICAgICAgdmNvbnNvbGUgXAotICAgICAgICAgICAgICAgICAgIHF1b3RhY2hlY2sgXAotICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lZCBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RDTElCQycsICdnbGliYycsICdteWhvc3RuYW1lIHN5c3VzZXJzJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgaGliZXJuYXRlIFwKLSAgICAgICAgICAgICAgICAgICB0aW1lZGF0ZWQgXAotICAgICAgICAgICAgICAgICAgIHRpbWVzeW5jZCBcCi0gICAgICAgICAgICAgICAgICAgbG9jYWxlZCBcCi0gICAgICAgICAgICAgICAgICAgaW1hIFwKLSAgICAgICAgICAgICAgICAgICBzbWFjayBcCi0gICAgICAgICAgICAgICAgICAgbG9naW5kIFwKLSAgICAgICAgICAgICAgICAgICBmaXJzdGJvb3QgXAotICAgICAgICAgICAgICAgICAgIHV0bXAgXAotICAgICAgICAgICAgICAgICAgIHBvbGtpdCBcCi0iCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAic2VsaW51eCIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJzbWFjayIKLQotIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCi0jIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKLSMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKLQotUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLS1lbmFibGUtbGliY3VybCwtLWRpc2FibGUtbGliY3VybCxjdXJsIgotIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZwotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0tZW5hYmxlLWdjcnlwdCwtLWRpc2FibGUtZ2NyeXB0LGxpYmdjcnlwdCIKLVBBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLS1lbmFibGUtbGliY3J5cHRzZXR1cCwtLWRpc2FibGUtbGliY3J5cHRzZXR1cCxjcnlwdHNldHVwIgotUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItLWVuYWJsZS1taWNyb2h0dHBkLC0tZGlzYWJsZS1taWNyb2h0dHBkLGxpYm1pY3JvaHR0cGQiCi1QQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItLWVuYWJsZS1lbGZ1dGlscywtLWRpc2FibGUtZWxmdXRpbHMsZWxmdXRpbHMiCi1QQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItLWVuYWJsZS1yZXNvbHZlZCwtLWRpc2FibGUtcmVzb2x2ZWQiCi1QQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItLWVuYWJsZS1uZXR3b3JrZCwtLWRpc2FibGUtbmV0d29ya2QiCi1QQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItLWVuYWJsZS1tYWNoaW5lZCwtLWRpc2FibGUtbWFjaGluZWQiCi1QQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLS1lbmFibGUtYmFja2xpZ2h0LC0tZGlzYWJsZS1iYWNrbGlnaHQiCi1QQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItLWVuYWJsZS12Y29uc29sZSwtLWRpc2FibGUtdmNvbnNvbGUsLCR7UE59LXZjb25zb2xlLXNldHVwIgotUEFDS0FHRUNPTkZJR1txdW90YWNoZWNrXSA9ICItLWVuYWJsZS1xdW90YWNoZWNrLC0tZGlzYWJsZS1xdW90YWNoZWNrIgotUEFDS0FHRUNPTkZJR1tob3N0bmFtZWRdID0gIi0tZW5hYmxlLWhvc3RuYW1lZCwtLWRpc2FibGUtaG9zdG5hbWVkIgotUEFDS0FHRUNPTkZJR1tteWhvc3RuYW1lXSA9ICItLWVuYWJsZS1teWhvc3RuYW1lLC0tZGlzYWJsZS1teWhvc3RuYW1lIgotUEFDS0FHRUNPTkZJR1tyZmtpbGxdID0gIi0tZW5hYmxlLXJma2lsbCwtLWRpc2FibGUtcmZraWxsIgotUEFDS0FHRUNPTkZJR1toaWJlcm5hdGVdID0gIi0tZW5hYmxlLWhpYmVybmF0ZSwtLWRpc2FibGUtaGliZXJuYXRlIgotUEFDS0FHRUNPTkZJR1t0aW1lZGF0ZWRdID0gIi0tZW5hYmxlLXRpbWVkYXRlZCwtLWRpc2FibGUtdGltZWRhdGVkIgotUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi0tZW5hYmxlLXRpbWVzeW5jZCwtLWRpc2FibGUtdGltZXN5bmNkIgotUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItLWVuYWJsZS1sb2NhbGVkLC0tZGlzYWJsZS1sb2NhbGVkIgotUEFDS0FHRUNPTkZJR1tlZmldID0gIi0tZW5hYmxlLWVmaSwtLWRpc2FibGUtZWZpIgotUEFDS0FHRUNPTkZJR1tpbWFdID0gIi0tZW5hYmxlLWltYSwtLWRpc2FibGUtaW1hIgotUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLS1lbmFibGUtc21hY2ssLS1kaXNhYmxlLXNtYWNrIgotIyBsaWJzZWNjb21wIGlzIGZvdW5kIGluIG1ldGEtc2VjdXJpdHkKLVBBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiLS1lbmFibGUtc2VjY29tcCwtLWRpc2FibGUtc2VjY29tcCxsaWJzZWNjb21wIgotUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi0tZW5hYmxlLWxvZ2luZCwtLWRpc2FibGUtbG9naW5kIgotUEFDS0FHRUNPTkZJR1tzeXN1c2Vyc10gPSAiLS1lbmFibGUtc3lzdXNlcnMsLS1kaXNhYmxlLXN5c3VzZXJzIgotUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi0tZW5hYmxlLWZpcnN0Ym9vdCwtLWRpc2FibGUtZmlyc3Rib290IgotUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItLWVuYWJsZS1yYW5kb21zZWVkLC0tZGlzYWJsZS1yYW5kb21zZWVkIgotUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi0tZW5hYmxlLWJpbmZtdCwtLWRpc2FibGUtYmluZm10IgotUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItLWVuYWJsZS11dG1wLC0tZGlzYWJsZS11dG1wIgotUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0tZW5hYmxlLXBvbGtpdCwtLWRpc2FibGUtcG9sa2l0IgotIyBpbXBvcnRkIHJlcXVpcmVzIGN1cmwveHovemxpYi9iemlwMi9nY3J5cHQKLVBBQ0tBR0VDT05GSUdbaW1wb3J0ZF0gPSAiLS1lbmFibGUtaW1wb3J0ZCwtLWRpc2FibGUtaW1wb3J0ZCIKLVBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLWVuYWJsZS1saWJpZG4sLS1kaXNhYmxlLWxpYmlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItLWVuYWJsZS1hdWRpdCwtLWRpc2FibGUtYXVkaXQsYXVkaXQiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywtLWRpc2FibGUtbWFucGFnZXMsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS1wYW0sLS1kaXNhYmxlLXBhbSxsaWJwYW0iCi0jIFZlcmlmeSBrZXltYXBzIG9uIGxvY2FsZSBjaGFuZ2UKLVBBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItLWVuYWJsZS14a2Jjb21tb24sLS1kaXNhYmxlLXhrYmNvbW1vbixsaWJ4a2Jjb21tb24iCi0jIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKLVBBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLS1lbmFibGUtbGliaXB0YywtLWRpc2FibGUtbGliaXB0YyxpcHRhYmxlcyIKLVBBQ0tBR0VDT05GSUdbbGRjb25maWddID0gIi0tZW5hYmxlLWxkY29uZmlnLC0tZGlzYWJsZS1sZGNvbmZpZywsIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICJhY19jdl9oZWFkZXJfdmFsZ3JpbmRfbWVtY2hlY2tfaD15ZXMgYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9eWVzICxhY19jdl9oZWFkZXJfdmFsZ3JpbmRfbWVtY2hlY2tfaD1ubyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD1ubyAsdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItLWVuYWJsZS1xcmVuY29kZSwtLWRpc2FibGUtcXJlbmNvZGUscXJlbmNvZGUiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi0tZW5hYmxlLWNvcmVkdW1wLC0tZGlzYWJsZS1jb3JlZHVtcCIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0tZW5hYmxlLWJ6aXAyLC0tZGlzYWJsZS1iemlwMixiemlwMiIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItLWVuYWJsZS1sejQsLS1kaXNhYmxlLWx6NCxsejQiCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItLWVuYWJsZS14eiwtLWRpc2FibGUteHoseHoiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfS0lMTD0ke2Jhc2VfYmluZGlyfS9raWxsIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfS01PRD0ke2Jhc2VfYmluZGlyfS9rbW9kIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUVVPVEFDSEVDSz0ke3NiaW5kaXJ9L3F1b3RhY2hlY2siCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9RVU9UQU9OPSR7c2JpbmRpcn0vcXVvdGFvbiIKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1NVTE9HSU49JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4iCi0KLSMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCi0jIGJ1aWxkIHN5c3RlbS4KLXJvb3RwcmVmaXggPz0gIiR7YmFzZV9wcmVmaXh9Igotcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCi1yb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX01PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vbW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfVU1PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX0tNT0Q9JHtiYXNlX2JpbmRpcn0va21vZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9LSUxMPSR7YmFzZV9iaW5kaXJ9L2tpbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfU1VMT0dJTj0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9LRVhFQz0ke3NiaW5kaXJ9L2tleGVjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1FVT1RBQ0hFQ0s9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1FVT1RBT049JHtzYmluZGlyfS9xdW90YW9uIFwKLQkJCSAiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLXJvb3RwcmVmaXg9JHtyb290cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7cm9vdGxpYmRpcn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcm9vdGhvbWVkaXI9JHtST09UX0hPTUV9IFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtc3BsaXQtdXNyIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LXB5dGhvbiBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zeXN2cmNuZC1wYXRoPSR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZmlybXdhcmUtcGF0aD0vbGliL2Zpcm13YXJlIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXRlc3RkaXI9JHtQVEVTVF9QQVRIfSBcCi0gICAgICAgICAgICAgICAiCi0jIHBlciB0aGUgc3lzdGVtZCBSRUFETUUsIGRlZmluZSBWQUxHUklORD0xIHRvIHJ1biB1bmRlciB2YWxncmluZAotQ0ZMQUdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2YWxncmluZCcsICcgLURWQUxHUklORD0xJywgJycsIGQpfSIKLQotIyBkaXNhYmxlIHByb2JsZW1hdGljIEdDQyA1LjIgb3B0aW1pemF0aW9ucyBbWU9DVE8gIzgyOTFdCi1GVUxMX09QVElNSVpBVElPTl9hcHBlbmRfYXJtID0gIiAtZm5vLXNjaGVkdWxlLWluc25zIC1mbm8tc2NoZWR1bGUtaW5zbnMyIgotCi0jIEF2b2lkIGxvZ2luIGZhaWx1cmUgb24gcWVtdW1pcHM2NCB3aGVuIHBhbSBpcyBlbmFibGVkCi1GVUxMX09QVElNSVpBVElPTl9hcHBlbmRfbWlwczY0ID0gIiAtZm5vLXRyZWUtc3dpdGNoLWNvbnZlcnNpb24gLWZuby10cmVlLXRhaWwtbWVyZ2UiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWV4cG9ydCBOTT0iJHtIT1NUX1BSRUZJWH1nY2Mtbm0iCi0JZXhwb3J0IEFSPSIke0hPU1RfUFJFRklYfWdjYy1hciIKLQlleHBvcnQgUkFOTElCPSIke0hPU1RfUFJFRklYfWdjYy1yYW5saWIiCi0JZXhwb3J0IEtNT0Q9IiR7YmFzZV9iaW5kaXJ9L2ttb2QiCi0JaWYgWyAtZCAke1N9L3VuaXRzLnByZV9zZWQgXSA7IHRoZW4KLQkJY3AgLXIgJHtTfS91bml0cy5wcmVfc2VkICR7U30vdW5pdHMKLQllbHNlCi0JCWNwIC1yICR7U30vdW5pdHMgJHtTfS91bml0cy5wcmVfc2VkCi0JZmkKLQlzZWQgLWkgLWUgJ3M6LURURVNUX0RJUj1cXFwiLipcXFwiOi1EVEVTVF9ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdFxcXCI6JyAke1N9L01ha2VmaWxlLmFtCi0Jc2VkIC1pIC1lICdzOi1EQ0FUQUxPR19ESVI9XFxcIi4qXFxcIjotRENBVEFMT0dfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2dcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCi0JCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKLQlmaQotCi0JIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcwotCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0Ci0JWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCi0KLQkjIENyZWF0ZSBtYWNoaW5lLWlkCi0JIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKLQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy91ZGV2L3VkZXYucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAotCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQlmaQotCi0JY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCi0KLQkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgotCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKLQotCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JZmkKLQotCSMgRW5hYmxlIGpvdXJuYWwgdG8gZm9yd2FyZCBtZXNzYWdlIHRvIHN5c2xvZyBkYWVtb24KLQlzZWQgLWkgLWUgJ3MvLipGb3J3YXJkVG9TeXNsb2cuKi9Gb3J3YXJkVG9TeXNsb2c9eWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCi0JIyBTZXQgdGhlIG1heGltaXVtIHNpemUgb2YgcnVudGltZSBqb3VybmFsIHRvIDY0TSBhcyBkZWZhdWx0Ci0Jc2VkIC1pIC1lICdzLy4qUnVudGltZU1heFVzZS4qL1J1bnRpbWVNYXhVc2U9NjRNLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCi0KLQkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAotCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCi0JaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KLQlmaQotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKLQkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYKLQllbHNlCi0JCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQlmaQotCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgICAgIyBpbnN0YWxsIGRhdGEgZmlsZXMgbmVlZGVkIGZvciB0ZXN0cwotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAotICAgICAgIGNwIC1yZkwgJHtTfS90ZXN0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAotICAgICAgICMgcHl0aG9uIGlzIGRpc2FibGVkIGZvciBzeXN0ZW1kLCB0aHVzIHJlbW92aW5nIHRoZXNlIHB5dGhvbiB0ZXN0aW5nIHNjcmlwdHMKLSAgICAgICBybSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0LyoucHkKLSAgICAgICBzZWQgLWkgJ3MvInRyZWUiLyJscyIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0L3VkZXYtdGVzdC5wbAotCi0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nCi0gICAgICAgaW5zdGFsbCAke1N9L2NhdGFsb2cvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nLwotCi0gICAgICAgaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9idWlsZC1hdXgvdGVzdC1kcml2ZXIKLQotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMKLSAgICAgICBpbnN0YWxsICR7Qn0vcnVsZXMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9ydWxlcy8KLQotICAgICAgICMgVGhpcyBkaXJlY3RvcnkgbmVlZHMgdG8gYmUgdGhlcmUgZm9yIHVkZXYtdGVzdC5wbCB0byB3b3JrLgotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS91ZGV2L3J1bGVzLmQKLQotICAgICAgICMgaW5zdGFsbCBhY3R1YWwgdGVzdCBiaW5hcmllcwotICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L3Rlc3QtKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLSAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS8ubGlicy90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0KLSAgICAgICBpbnN0YWxsICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpewotICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgotCi1QQUNLQUdFUyA9KyAiXAotICAgICR7UE59LWd1aSBcCi0gICAgJHtQTn0tdmNvbnNvbGUtc2V0dXAgXAotICAgICR7UE59LWluaXRyYW1mcyBcCi0gICAgJHtQTn0tYW5hbHl6ZSBcCi0gICAgJHtQTn0ta2VybmVsLWluc3RhbGwgXAotICAgICR7UE59LXJwbS1tYWNyb3MgXAotICAgICR7UE59LWJpbmZtdCBcCi0gICAgJHtQTn0tcGFtIFwKLSAgICAke1BOfS16c2gtY29tcGxldGlvbiBcCi0gICAgJHtQTn0teG9yZy14aW5pdHJjIFwKLSAgICAke1BOfS1jb250YWluZXIgXAotICAgICR7UE59LWV4dHJhLXV0aWxzIFwKLSIKLQotU1VNTUFSWV8ke1BOfS1jb250YWluZXIgPSAiVG9vbHMgZm9yIGNvbnRhaW5lcnMgYW5kIFZNcyIKLURFU0NSSVBUSU9OXyR7UE59LWNvbnRhaW5lciA9ICJTeXN0ZW1kIHRvb2xzIHRvIHNwYXduIGFuZCBtYW5hZ2UgY29udGFpbmVycyBhbmQgdmlydHVhbCBtYWNoaW5lcy4iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmluZm10JywgJyR7UE59LWJpbmZtdCcsICcnLCBkKX0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluZm10ID0gInN5c3RlbWQtYmluZm10LnNlcnZpY2UiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZXh0cmEtdXRpbHMiCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLWdhdGV3YXk7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC11cGxvYWQ7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpbWVzeW5jZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtdGltZXN5bmM7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1uZXR3b3JrOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdjb3JlZHVtcCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtY29yZWR1bXA7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1yZXNvbHZlOycsICcnLCBkKX0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBsb2NrOyAtciBzeXN0ZW1kLWpvdXJuYWwiCi1VU0VSQUREX1BBUkFNXyR7UE59LWV4dHJhLXV0aWxzICs9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtYnVzLXByb3h5OyIKLQotRklMRVNfJHtQTn0tYW5hbHl6ZSA9ICIke2JpbmRpcn0vc3lzdGVtZC1hbmFseXplIgotCi1GSUxFU18ke1BOfS1pbml0cmFtZnMgPSAiL2luaXQiCi1SREVQRU5EU18ke1BOfS1pbml0cmFtZnMgPSAiJHtQTn0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJnYXdrIG1ha2UgcGVybCBiYXNoIHh6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hc2lhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtZXVyb3BlIHR6ZGF0YS1hZnJpY2EgdHpkYXRhLWFudGFyY3RpY2EgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWF0bGFudGljIHR6ZGF0YS1hdXN0cmFsaWEgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1wYWNpZmljIHR6ZGF0YS1wb3NpeCIKLQotRklMRVNfJHtQTn0tcHRlc3QgKz0gIiR7bGliZGlyfS91ZGV2L3J1bGVzLmQiCi0KLUZJTEVTXyR7UE59LWd1aSA9ICIke2JpbmRpcn0vc3lzdGVtYWRtIgotCi1GSUxFU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UiCi0KLVJERVBFTkRTXyR7UE59LWtlcm5lbC1pbnN0YWxsICs9ICJiYXNoIgotRklMRVNfJHtQTn0ta2VybmVsLWluc3RhbGwgPSAiJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0va2VybmVsLyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIva2VybmVsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tcnBtLW1hY3JvcyA9ICIke2V4ZWNfcHJlZml4fS9saWIvcnBtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LXhvcmcteGluaXRyYyA9ICIke3N5c2NvbmZkaXJ9L1gxMS94aW5pdC94aW5pdHJjLmQvKiIKLQotRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCi0KLUZJTEVTXyR7UE59LWJpbmZtdCA9ICIke3N5c2NvbmZkaXJ9L2JpbmZtdC5kLyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2JpbmZtdC5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYmluZm10IFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLiogXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLVJSRUNPTU1FTkRTXyR7UE59LWJpbmZtdCA9ICJrZXJuZWwtbW9kdWxlLWJpbmZtdC1taXNjIgotCi1SUkVDT01NRU5EU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICJrYmQga2JkLWNvbnNvbGVmb250cyBrYmQta2V5bWFwcyIKLQotRklMRVNfJHtQTn0tY29udGFpbmVyID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9tYWNoaW5lY3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1uc3Bhd24gXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvaW1wb3J0LXB1YnJpbmcuZ3BnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2NhbC1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC11cGxvYWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXB1bGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1uc3Bhd25ALnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbXltYWNoaW5lcy5zby4yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWV4dHJhLXV0aWxzID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtZXNjYXBlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaW5oaWJpdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZXRlY3QtdmlydCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXJ1biBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jYXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGVsdGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2dscyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ3RvcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1zdGRpby1icmlkZ2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1hc2stcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXNvbHZlLWhvc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjLXBvd2VyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hY3RpdmF0ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCi0iCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYiCi0KLUZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgXAotICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAotICAgICAgICAgICAgICAgIC9jZ3JvdXAgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kKiBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2J1c2N0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2NvcmVkdW1wY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9jYWxlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vaG9zdG5hbWVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS90aW1lZGF0ZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Jvb3RjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvKi5jb25mIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzY3RsLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN1c2Vycy5kIFwKLSAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MC11YWNjZXNzLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MS1zZWF0LnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83My1zZWF0LWxhdGUucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzk5LXN5c3RlbWQucnVsZXMgXAotICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcy8gJHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnN5c3RlbWQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJrbW9kIGRidXMgdXRpbC1saW51eC1tb3VudCB1ZGV2ICg9ICR7RVhURU5EUEtHVn0pIgotUkRFUEVORFNfJHtQTn0gKz0gInZvbGF0aWxlLWJpbmRzIHVwZGF0ZS1yYy5kIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1leHRyYS11dGlscyBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb21wYXQtdW5pdHMgdWRldi1od2RiIFwKLSAgICAgICAgICAgICAgICAgICAgICB1dGlsLWxpbnV4LWFnZXR0eSAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAotICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKLSAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKLSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKLQotUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgotCi1SUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgotCi1SREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCi0KLUZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCi0gICAgICAgICAgICAgICIKLQotRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCi1JTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLSMgVE9ETzoKLSMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCi1BTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCi1BTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCi0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG15aG9zdG5hbWUgXDNcNFw1LycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn0gKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCi0JCS1lICcvXmhvc3RzOi9zL1xzKm15aG9zdG5hbWUvLycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgotcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7Ci0JaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0JCSR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiYXNlX2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIFwKLQkJCS0tcm9vdCAkRAotCQljaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLQllbHNlCi0JCXVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotCWZpCi19Ci0KLXBrZ19wcmVybV91ZGV2LWh3ZGIgKCkgewotCXJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi19Ci0KLSMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KLSMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgotcHl0aG9uICgpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIidzeXN0ZW1kJyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKLQotICAgIGltcG9ydCByZQotICAgIGlmIHJlLm1hdGNoKCcuKm11c2wqJywgZC5nZXRWYXIoJ1RBUkdFVF9PUycpKSAhPSBOb25lOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiTm90IF95ZXRfIHN1cHBvcnRlZCBvbiBtdXNsIGJhc2VkIHRhcmdldHMiKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2UyN2JmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzQuYmIKQEAgLTAsMCArMSw2NDEgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKKworUFJPVklERVMgPSAidWRldiIKKworUEUgPSAiMSIKKworREVQRU5EUyA9ICJrbW9kIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgYWNsIHJlYWRsaW5lIGxpYmNhcCBsaWJjZ3JvdXAgdXRpbC1saW51eCIKKworU0VDVElPTiA9ICJiYXNlL3NoZWxsIgorCitpbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIGF1dG90b29scyBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIHB0ZXN0IGdldHRleHQgYmFzaC1jb21wbGV0aW9uIG1hbnBhZ2VzCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQuZ2l0O3Byb3RvY29sPWdpdCBcCisgICAgICAgICAgIGZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29yZS1ldmFsdWF0ZS1wcmVzZXRzLWFmdGVyLWdlbmVyYXRvcnMtaGF2ZS1ydW4tNjUyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1haW4tc2tpcC1tYW55LWluaXRpYWxpemF0aW9uLXN0ZXBzLXdoZW4tcnVubmluZy1pbi0ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gIiBmaWxlOi8vMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIgorCitQQU1fUExVR0lOUyA9ICIgXAorICAgIHBhbS1wbHVnaW4tdW5peCBcCisgICAgcGFtLXBsdWdpbi1sb2dpbnVpZCBcCisgICAgcGFtLXBsdWdpbi1rZXlpbml0IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZWZpIGxkY29uZmlnIHBhbSBzZWxpbnV4IHVzcm1lcmdlJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCisgICAgYmFja2xpZ2h0IFwKKyAgICBiaW5mbXQgXAorICAgIGZpcnN0Ym9vdCBcCisgICAgaGliZXJuYXRlIFwKKyAgICBob3N0bmFtZWQgXAorICAgIGltYSBcCisgICAgbG9jYWxlZCBcCisgICAgbG9naW5kIFwKKyAgICBtYWNoaW5lZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbmV0d29ya2QgXAorICAgIG5zcyBcCisgICAgcG9sa2l0IFwKKyAgICBxdW90YWNoZWNrIFwKKyAgICByYW5kb21zZWVkIFwKKyAgICByZXNvbHZlZCBcCisgICAgc21hY2sgXAorICAgIHN5c3VzZXJzIFwKKyAgICB0aW1lZGF0ZWQgXAorICAgIHRpbWVzeW5jZCBcCisgICAgdXRtcCBcCisgICAgdmNvbnNvbGUgXAorICAgIHh6IFwKKyIKKworUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCisgICAgbG9jYWxlZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbnNzIFwKKyAgICByZXNvbHZlZCBcCisgICAgc2VsaW51eCBcCisgICAgc21hY2sgXAorICAgIHN5c3VzZXJzIFwKKyAgICB1dG1wIFwKKyIKKworIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCisjIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKKyMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKKworUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS1lbmFibGUtYXVkaXQsLS1kaXNhYmxlLWF1ZGl0LGF1ZGl0IgorUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi0tZW5hYmxlLWJhY2tsaWdodCwtLWRpc2FibGUtYmFja2xpZ2h0IgorUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi0tZW5hYmxlLWJpbmZtdCwtLWRpc2FibGUtYmluZm10IgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS1lbmFibGUtYnppcDIsLS1kaXNhYmxlLWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLS1lbmFibGUtY29yZWR1bXAsLS1kaXNhYmxlLWNvcmVkdW1wIgorUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItLWVuYWJsZS1saWJjcnlwdHNldHVwLC0tZGlzYWJsZS1saWJjcnlwdHNldHVwLGNyeXB0c2V0dXAiCitQQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbZWZpXSA9ICItLWVuYWJsZS1lZmksLS1kaXNhYmxlLWVmaSIKK1BBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi0tZW5hYmxlLWVsZnV0aWxzLC0tZGlzYWJsZS1lbGZ1dGlscyxlbGZ1dGlscyIKK1BBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItLWVuYWJsZS1maXJzdGJvb3QsLS1kaXNhYmxlLWZpcnN0Ym9vdCIKKyMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKK1BBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLWVuYWJsZS1nY3J5cHQsLS1kaXNhYmxlLWdjcnlwdCxsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLS1lbmFibGUtaGliZXJuYXRlLC0tZGlzYWJsZS1oaWJlcm5hdGUiCitQQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLS1lbmFibGUtaG9zdG5hbWVkLC0tZGlzYWJsZS1ob3N0bmFtZWQiCitQQUNLQUdFQ09ORklHW2ltYV0gPSAiLS1lbmFibGUtaW1hLC0tZGlzYWJsZS1pbWEiCisjIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAorUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItLWVuYWJsZS1pbXBvcnRkLC0tZGlzYWJsZS1pbXBvcnRkIgorIyBVcGRhdGUgTkFUIGZpcmV3YWxsIHJ1bGVzCitQQUNLQUdFQ09ORklHW2lwdGNdID0gIi0tZW5hYmxlLWxpYmlwdGMsLS1kaXNhYmxlLWxpYmlwdGMsaXB0YWJsZXMiCitQQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItLWVuYWJsZS1saWJjdXJsLC0tZGlzYWJsZS1saWJjdXJsLGN1cmwiCitQQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItLWVuYWJsZS1sZGNvbmZpZywtLWRpc2FibGUtbGRjb25maWciCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS1lbmFibGUtbGliaWRuLC0tZGlzYWJsZS1saWJpZG4sbGliaWRuIgorUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItLWVuYWJsZS1sb2NhbGVkLC0tZGlzYWJsZS1sb2NhbGVkIgorUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi0tZW5hYmxlLWxvZ2luZCwtLWRpc2FibGUtbG9naW5kIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi0tZW5hYmxlLWx6NCwtLWRpc2FibGUtbHo0LGx6NCIKK1BBQ0tBR0VDT05GSUdbbWFjaGluZWRdID0gIi0tZW5hYmxlLW1hY2hpbmVkLC0tZGlzYWJsZS1tYWNoaW5lZCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLC0tZGlzYWJsZS1tYW5wYWdlcyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItLWVuYWJsZS1taWNyb2h0dHBkLC0tZGlzYWJsZS1taWNyb2h0dHBkLGxpYm1pY3JvaHR0cGQiCitQQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi0tZW5hYmxlLW15aG9zdG5hbWUsLS1kaXNhYmxlLW15aG9zdG5hbWUiCitQQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItLWVuYWJsZS1uZXR3b3JrZCwtLWRpc2FibGUtbmV0d29ya2QiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLS1lbmFibGUtbnNzLXN5c3RlbWQsLS1kaXNhYmxlLW5zcy1zeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwtLWRpc2FibGUtcGFtLGxpYnBhbSwke1BBTV9QTFVHSU5TfSIKK1BBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsLS1kaXNhYmxlLXBvbGtpdCIKK1BBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLXFyZW5jb2RlLC0tZGlzYWJsZS1xcmVuY29kZSxxcmVuY29kZSIKK1BBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLS1lbmFibGUtcXVvdGFjaGVjaywtLWRpc2FibGUtcXVvdGFjaGVjayIKK1BBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLS1lbmFibGUtcmFuZG9tc2VlZCwtLWRpc2FibGUtcmFuZG9tc2VlZCIKK1BBQ0tBR0VDT05GSUdbcmVzb2x2ZWRdID0gIi0tZW5hYmxlLXJlc29sdmVkLC0tZGlzYWJsZS1yZXNvbHZlZCIKK1BBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItLWVuYWJsZS1yZmtpbGwsLS1kaXNhYmxlLXJma2lsbCIKKyMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5CitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi0tZW5hYmxlLXNlY2NvbXAsLS1kaXNhYmxlLXNlY2NvbXAsbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGluaXRzY3JpcHRzLXN1c2hlbGwiCitQQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItLWVuYWJsZS1zbWFjaywtLWRpc2FibGUtc21hY2siCitQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItLWVuYWJsZS1zeXN1c2VycywtLWRpc2FibGUtc3lzdXNlcnMiCitQQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLS1lbmFibGUtdGltZWRhdGVkLC0tZGlzYWJsZS10aW1lZGF0ZWQiCitQQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLS1lbmFibGUtdGltZXN5bmNkLC0tZGlzYWJsZS10aW1lc3luY2QiCitQQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItLWRpc2FibGUtc3BsaXQtdXNyLC0tZW5hYmxlLXNwbGl0LXVzciIKK1BBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLS1lbmFibGUtdXRtcCwtLWRpc2FibGUtdXRtcCIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gImFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPXllcyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD15ZXMsYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX21lbWNoZWNrX2g9bm8gYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8sdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItLWVuYWJsZS12Y29uc29sZSwtLWRpc2FibGUtdmNvbnNvbGUsLCR7UE59LXZjb25zb2xlLXNldHVwIgorIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCitQQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLS1lbmFibGUteGtiY29tbW9uLC0tZGlzYWJsZS14a2Jjb21tb24sbGlieGtiY29tbW9uIgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLS1lbmFibGUteHosLS1kaXNhYmxlLXh6LHh6IgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCisKKyMgSGFyZGNvZGUgdGFyZ2V0IGJpbmFyeSBwYXRocyB0byBhdm9pZCBBQ19QUk9HX1BBVEggaW4gdGhlIHN5c3RlbWQKKyMgY29uZmlndXJlIHNjcmlwdCBkZXRlY3RpbmcgYW5kIHNldHRpbmcgcGF0aHMgZnJvbSBzeXNyb290IG9yIGhvc3QuCitDQUNIRURfQ09ORklHVVJFVkFSU19jbGFzcy10YXJnZXQgPSAiIFwKKyAgICBhY19jdl9wYXRoX0tFWEVDPSR7c2JpbmRpcn0va2V4ZWMgXAorICAgIGFjX2N2X3BhdGhfS0lMTD0ke2Jhc2VfYmluZGlyfS9raWxsIFwKKyAgICBhY19jdl9wYXRoX0tNT0Q9JHtiYXNlX2JpbmRpcn0va21vZCBcCisgICAgYWNfY3ZfcGF0aF9NT1VOVF9QQVRIPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKKyAgICBhY19jdl9wYXRoX1FVT1RBQ0hFQ0s9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKKyAgICBhY19jdl9wYXRoX1FVT1RBT049JHtzYmluZGlyfS9xdW90YW9uIFwKKyAgICBhY19jdl9wYXRoX1NVTE9HSU49JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAorICAgIGFjX2N2X3BhdGhfVU1PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IFwKKyIKKworIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKKyMgYnVpbGQgc3lzdGVtLgorcm9vdHByZWZpeCA/PSAiJHtyb290X3ByZWZpeH0iCityb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKK3Jvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGhvdXQtcHl0aG9uIFwKKyAgICAtLXdpdGgtcm9vdGhvbWVkaXI9JHtST09UX0hPTUV9IFwKKyAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKKyAgICAtLXdpdGgtcm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKKyAgICAtLXdpdGgtc3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKKyAgICAtLXdpdGgtZmlybXdhcmUtcGF0aD0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIFwKKyIKKworIyBwZXIgdGhlIHN5c3RlbWQgUkVBRE1FLCBkZWZpbmUgVkFMR1JJTkQ9MSB0byBydW4gdW5kZXIgdmFsZ3JpbmQKK0NGTEFHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsZ3JpbmQnLCAnIC1EVkFMR1JJTkQ9MScsICcnLCBkKX0iCisKKyMgZGlzYWJsZSBwcm9ibGVtYXRpYyBHQ0MgNS4yIG9wdGltaXphdGlvbnMgW1lPQ1RPICM4MjkxXQorRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kX2FybSA9ICIgLWZuby1zY2hlZHVsZS1pbnNucyAtZm5vLXNjaGVkdWxlLWluc25zMiIKKworQ09NUElMRVJfTk0gPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLW5tIgorQ09NUElMRVJfQVIgPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLWFyIgorQ09NUElMRVJfUkFOTElCID89ICIke0hPU1RfUFJFRklYfWdjYy1yYW5saWIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWV4cG9ydCBOTT0iJHtDT01QSUxFUl9OTX0iCisJZXhwb3J0IEFSPSIke0NPTVBJTEVSX0FSfSIKKwlleHBvcnQgUkFOTElCPSIke0NPTVBJTEVSX1JBTkxJQn0iCisJZXhwb3J0IEtNT0Q9IiR7YmFzZV9iaW5kaXJ9L2ttb2QiCisJaWYgWyAtZCAke1N9L3VuaXRzLnByZV9zZWQgXSA7IHRoZW4KKwkJY3AgLXIgJHtTfS91bml0cy5wcmVfc2VkICR7U30vdW5pdHMKKwllbHNlCisJCWNwIC1yICR7U30vdW5pdHMgJHtTfS91bml0cy5wcmVfc2VkCisJZmkKKwlzZWQgLWkgLWUgJ3M6LURURVNUX0RJUj1cXFwiLipcXFwiOi1EVEVTVF9ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdFxcXCI6JyAke1N9L01ha2VmaWxlLmFtCisJc2VkIC1pIC1lICdzOi1EQ0FUQUxPR19ESVI9XFxcIi4qXFxcIjotRENBVEFMT0dfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2dcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQorfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgorCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCisJCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKKwlmaQorCisJIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcworCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0CisJWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCisKKwkjIENyZWF0ZSBtYWNoaW5lLWlkCisJIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvdWRldi91ZGV2LnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLworCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCisJZmkKKworCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAorCisJIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KKwlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCisKKwkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCWZpCisKKwkjIEVuYWJsZSBqb3VybmFsIHRvIGZvcndhcmQgbWVzc2FnZSB0byBzeXNsb2cgZGFlbW9uCisJc2VkIC1pIC1lICdzLy4qRm9yd2FyZFRvU3lzbG9nLiovRm9yd2FyZFRvU3lzbG9nPXllcy8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgorCSMgU2V0IHRoZSBtYXhpbWl1bSBzaXplIG9mIHJ1bnRpbWUgam91cm5hbCB0byA2NE0gYXMgZGVmYXVsdAorCXNlZCAtaSAtZSAncy8uKlJ1bnRpbWVNYXhVc2UuKi9SdW50aW1lTWF4VXNlPTY0TS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgorCisJIyB0aGlzIGZpbGUgaXMgbmVlZGVkIHRvIGV4aXN0IGlmIG5ldHdvcmtkIGlzIGRpc2FibGVkIGJ1dCB0aW1lc3luY2QgaXMgc3RpbGwgaW4gdXNlIHNpbmNlIHRpbWVzeW5jZCBjaGVja3MgaXQKKwkjIGZvciBleGlzdGVuY2UgZWxzZSBpdCBmYWlscworCWlmIFsgLXMgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZiBdOyB0aGVuCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJzonLCAnc2VkIC1pIC1lICJcJGFkIC9ydW4vc3lzdGVtZC9uZXRpZi9saW5rcyAwNzU1IHJvb3Qgcm9vdCAtIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mJywgZCl9CisJZmkKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCisJCWVjaG8gJ2QgL3J1bi9zeXN0ZW1kL3Jlc29sdmUgMDc1NSByb290IHJvb3QgLScgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCisJCWVjaG8gJ2YgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgMDY0NCByb290IHJvb3QnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgorCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKKwllbHNlCisJCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKKwkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCisJZmkKKwlpbnN0YWxsIC1EbSAwNzU1ICR7U30vc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtc3lzdi1pbnN0YWxsCisKKwkjIElmIHBvbGtpdCBpcyBzZXR1cCBmaXh1cCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaWYgWyAtZCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kIF07IHRoZW4KKwkJCWNobW9kIDcwMCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJCQljaG93biBwb2xraXRkOnJvb3QgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAorCQlmaQorCWZpCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCSMgaW5zdGFsbCBkYXRhIGZpbGVzIG5lZWRlZCBmb3IgdGVzdHMKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKKwljcCAtcmZMICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKKwkjIHB5dGhvbiBpcyBkaXNhYmxlZCBmb3Igc3lzdGVtZCwgdGh1cyByZW1vdmluZyB0aGVzZSBweXRob24gdGVzdGluZyBzY3JpcHRzCisJcm0gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC8qLnB5CisJc2VkIC1pICdzLyJ0cmVlIi8ibHMiLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC91ZGV2LXRlc3QucGwKKworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZworCWluc3RhbGwgJHtTfS9jYXRhbG9nLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZy8KKworCWluc3RhbGwgLUQgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3J1bGVzCisJaW5zdGFsbCAke0J9L3J1bGVzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMvCisKKwkjIFRoaXMgZGlyZWN0b3J5IG5lZWRzIHRvIGJlIHRoZXJlIGZvciB1ZGV2LXRlc3QucGwgdG8gd29yay4KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vdWRldi9ydWxlcy5kCisKKwkjIGluc3RhbGwgYWN0dWFsIHRlc3QgYmluYXJpZXMKKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vLmxpYnMvdGVzdC0qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworCisJaW5zdGFsbCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKKyAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKKworUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1ndWkgXAorICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKKyAgICAke1BOfS1pbml0cmFtZnMgXAorICAgICR7UE59LWFuYWx5emUgXAorICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKKyAgICAke1BOfS1ycG0tbWFjcm9zIFwKKyAgICAke1BOfS1iaW5mbXQgXAorICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKKyAgICAke1BOfS14b3JnLXhpbml0cmMgXAorICAgICR7UE59LWNvbnRhaW5lciBcCisgICAgJHtQTn0tZXh0cmEtdXRpbHMgXAorIgorCitTVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgorREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbG9jazsgLXIgc3lzdGVtZC1qb3VybmFsIgorVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyArPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eTsiCisKK0ZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKKworRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgorUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZ2F3ayBtYWtlIHBlcmwgYmFzaCB4eiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYXNpYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLWV1cm9wZSB0emRhdGEtYWZyaWNhIHR6ZGF0YS1hbnRhcmN0aWNhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtYXJjdGljIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtcGFjaWZpYyB0emRhdGEtcG9zaXgiCisKK0ZJTEVTXyR7UE59LXB0ZXN0ICs9ICIke2xpYmRpcn0vdWRldi9ydWxlcy5kIgorCitGSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKKworRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgorCitSREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKK0ZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS14b3JnLXhpbml0cmMgPSAiJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyoiCisKK0ZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgorCitGSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAorICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCitSUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKKworUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCisKK0ZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKKyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiIKKworRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKKyAgICAgICAgICAgICAgICAvY2dyb3VwIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAorICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkiCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAorICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCisgICAgICAgICAgICAgICAgICAgICAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKKyAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKKworUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgorCitSUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgorCitSREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCisKK0ZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCisgICAgICAgICAgICAgICIKKworRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCitJTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgorSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKKyMgVE9ETzoKKyMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIHJlc29sdi1jb25mIgorCitBTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCitBTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisJc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKKwkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKKwlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKwkJJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2Jhc2VfYmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgXAorCQkJLS1yb290ICRECisJCWNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorCWVsc2UKKwkJdWRldmFkbSBod2RiIC0tdXBkYXRlCisJZmkKK30KKworcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7CisJcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KKworIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbworIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCitweXRob24gKCkgeworICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWIvc3RhcnRfZ2V0dHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYi9zdGFydF9nZXR0eQppbmRleCBlM2QwNTJhLi5lMTVhZTM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYi9zdGFydF9nZXR0eQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYi9zdGFydF9nZXR0eQpAQCAtMSw1ICsxLDQzIEBACiAjIS9iaW4vc2gKLWlmIFsgLWMgL2Rldi8kMiBdCi10aGVuIAotCS9zYmluL2dldHR5IC1MICQxICQyICQzCi1maQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUaGlzIHNjcmlwdCBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgc2V0IHVwIHRoZSBzZXJpYWwgY29uc29sZShzKSBvbiBzdGFydHVwLgorIyBUaGUgdmFyaWFibGUgU0VSSUFMX0NPTlNPTEVTIGNhbiBiZSBzZXQgaW4gbWV0YS9jb25mL21hY2hpbmUvKi5jb25mLgorIyBTY3JpcHQgZW5oYW5jZW1lbnQgaGFzIGJlZW4gZG9uZSBiYXNlZCBvbiBCdWcgWU9DVE8gIzEwODQ0LgorIyBNb3N0IG9mIHRoZSBpbmZvcm1hdGlvbiBpcyByZXRyaWV2ZWQgZnJvbSAvcHJvYyB2aXJ0dWFsIGZpbGVzeXN0ZW0gY29udGFpbmluZworIyBhbGwgdGhlIHJ1bnRpbWUgc3lzdGVtIGluZm9ybWF0aW9uIChlZy4gc3lzdGVtIG1lbW9yeSwgZGV2aWNlIG1vdW50LCBldGMpLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEdldCBhY3RpdmUgc2VyaWFsIGZpbGVuYW1lLgorYWN0aXZlX3NlcmlhbD0kKGdyZXAgInNlcmlhbCIgL3Byb2MvdHR5L2RyaXZlcnMgfCBjdXQgLWQvIC1mMSB8IHNlZCAicy8gKiQvLyIpCisKKyMgUmVwaHJhc2UgaW5wdXQgcGFyYW1ldGVyIGZyb20gdHR5UyB0YXJnZXQgaW5kZXggKHR0eVMxLCB0dHlTMiwgdHR5QU1BMCwgZXRjKS4KK3J1bnRpbWVfdHR5PSQoZWNobyAkMiB8IGdyZXAgLW9oICdbMC05XScpCisKKyMgQmFja3VwICRJRlMuCitERUZBVUxUX0lGUz0kSUZTCisjIEN1c3RvbWl6ZSBJbnRlcm5hbCBGaWVsZCBTZXBhcmF0b3IuCitJRlM9IiQocHJpbnRmICdcblx0JykiCisKK2ZvciBsaW5lIGluICRhY3RpdmVfc2VyaWFsOyBkbworCSMgQ2hlY2sgd2UgaGF2ZSB0aGUgZmlsZSBjb250YWluaW5nIGN1cnJlbnQgYWN0aXZlIHNlcmlhbCB0YXJnZXQgaW5kZXguCisJaWYgWyAtZSAiL3Byb2MvdHR5L2RyaXZlci8kbGluZSIgXQorICAgICAgICB0aGVuCisJCSMgUmVtb3ZlIGFsbCB1bmtub3duIGVudHJpZXMgYW5kIGRpc2NhcmQgdGhlIGZpcnN0IGxpbmUgKGRlc2MpLgorCQlhY3RpdmV0dHk9JChncmVwIC12ICJ1bmtub3duIiAiL3Byb2MvdHR5L2RyaXZlci8kbGluZSIgXAorCQkJICAgIHwgdGFpbCAtbiArMiB8IGdyZXAgLW9oICJeXHMqXFMqWzAtOV0iKQorCQlmb3IgYWN0aXZlIGluICRhY3RpdmV0dHk7IGRvCisJCQkjIElmIGluZGV4ZXMgZG8gbWF0Y2ggdGhlbiBlbmFibGUgdGhlIHNlcmlhbCBjb25zb2xlLgorCQkJaWYgWyAkYWN0aXZlIC1lcSAkcnVudGltZV90dHkgXQorCQkJdGhlbgorCQkJCWlmIFsgLWMgL2Rldi8kMiBdCisJCQkJdGhlbgorCQkJCSAgICAvc2Jpbi9nZXR0eSAtTCAkMSAkMiAkMworCQkJCWZpCisJCQkJYnJlYWsKKwkJCWZpCisJCWRvbmUKKwlmaQorZG9uZQorCisjIFJlc3RvcmUgJElGUy4KK0lGUz0kREVGQVVMVF9JRlMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKaW5kZXggODg0ODU3YS4uMjJhMGVjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKQEAgLTY4LDcgKzY4LDcgQEAKIEZJTEVTX3N5c3Zpbml0LXBpZG9mID0gIiR7YmFzZV9iaW5kaXJ9L3BpZG9mLnN5c3Zpbml0ICR7YmFzZV9zYmluZGlyfS9raWxsYWxsNSIKIEZJTEVTX3N5c3Zpbml0LXN1bG9naW4gPSAiJHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4uc3lzdmluaXQiCiAKLVJERVBFTkRTXyR7UE59ICs9ICJzeXN2aW5pdC1waWRvZiBpbml0c2NyaXB0cy1mdW5jdGlvbnMiCitSREVQRU5EU18ke1BOfSArPSAic3lzdmluaXQtcGlkb2YgaW5pdGQtZnVuY3Rpb25zIgogCiBDRkxBR1NfcHJlcGVuZCA9ICItRF9HTlVfU09VUkNFICIKIGV4cG9ydCBMQ1JZUFQgPSAiLWxjcnlwdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L2luaXQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi9pbml0CmluZGV4IDBhYjAyOGIuLjA0NTVhZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L2luaXQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvaW5pdApAQCAtMTQsMjUgKzE0LDcgQEAKIFsgLWQgL3N5cy9jbGFzcyBdIHx8IGV4aXQgMQogWyAtciAvcHJvYy9tb3VudHMgXSB8fCBleGl0IDEKIFsgLXggQFVERVZEQCBdIHx8IGV4aXQgMQotU1lTQ09ORl9DQUNIRUQ9Ii9ldGMvdWRldi9jYWNoZS5kYXRhIgotU1lTQ09ORl9UTVA9Ii9kZXYvc2htL3VkZXYuY2FjaGUiCi1ERVZDQUNIRV9SRUdFTj0iL2Rldi9zaG0vdWRldi1yZWdlbiIgIyBjcmVhdGUgdG8gcmVxdWVzdCBjYWNoZSByZWdlbgogCi0jIEEgbGlzdCBvZiBmaWxlcyB3aGljaCBhcmUgdXNlZCBhcyBhIGNyaXRlcmlhIHRvIGp1ZGdlIHdoZXRoZXIgdGhlIHVkZXYgY2FjaGUgY291bGQgYmUgcmV1c2VkLgotQ01QX0ZJTEVfTElTVD0iL3Byb2MvdmVyc2lvbiAvcHJvYy9jbWRsaW5lIC9wcm9jL2RldmljZXMiCi1bIC1mIC9wcm9jL2F0YWdzIF0gJiYgQ01QX0ZJTEVfTElTVD0iJENNUF9GSUxFX0xJU1QgL3Byb2MvYXRhZ3MiCi0KLSMgTGlzdCBvZiBmaWxlcyB3aG9zZSBtZXRhZGF0YSAoc2l6ZS9tdGltZS9uYW1lKSB3aWxsIGJlIGluY2x1ZGVkIGluIGNhY2hlZAotIyBzeXN0ZW0gc3RhdGUuCi1NRVRBX0ZJTEVfTElTVD0ibGliL3VkZXYvcnVsZXMuZC8qIGV0Yy91ZGV2L3J1bGVzLmQvKiIKLQotIyBDb21tYW5kIHRvIGNvbXB1dGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCi1zeXNjb25mX2NtZCAoKSB7Ci0JY2F0IC0tICRDTVBfRklMRV9MSVNUCi0Jc3RhdCAtYyAnJXMgJVkgJW4nIC0tICRNRVRBX0ZJTEVfTElTVCB8IGF3ayAtRi8gJ3twcmludCAkMSAiICIgJE5GO30nCi19Ci0KLVsgLWYgL2V0Yy9kZWZhdWx0L3VkZXYtY2FjaGUgXSAmJiAuIC9ldGMvZGVmYXVsdC91ZGV2LWNhY2hlCiBbIC1mIC9ldGMvdWRldi91ZGV2LmNvbmYgXSAmJiAuIC9ldGMvdWRldi91ZGV2LmNvbmYKIFsgLWYgL2V0Yy9kZWZhdWx0L3JjUyBdICYmIC4gL2V0Yy9kZWZhdWx0L3JjUwogCkBAIC02NiwzNyArNDgsNiBAQAogICAgICMgL3Zhci92b2xhdGlsZS90bXAgZGlyZWN0b3J5IHRvIGJlIGF2YWlsYWJsZS4KICAgICBta2RpciAtbSAxNzc3IC1wIC92YXIvdm9sYXRpbGUvdG1wCiAKLSAgICAjIENhY2hlIGhhbmRsaW5nLgotICAgIGlmIFsgIiRERVZDQUNIRSIgIT0gIiIgXTsgdGhlbgotICAgICAgICAgICAgaWYgWyAtZSAkREVWQ0FDSEUgXTsgdGhlbgotCQkgICAgc3lzY29uZl9jbWQgPiAiJFNZU0NPTkZfVE1QIgotCQkgICAgaWYgY21wICRTWVNDT05GX0NBQ0hFRCAkU1lTQ09ORl9UTVAgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciB4bWYgJERFVkNBQ0hFIC1DIC8gLW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RfZmlyc3RfYm9vdD0xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAiJFZFUkJPU0UiICE9ICJubyIgXSAmJiBlY2hvICJ1ZGV2OiB1c2luZyBjYWNoZSBmaWxlICRERVZDQUNIRSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIC1lICRTWVNDT05GX1RNUCBdICYmIHJtIC1mICIkU1lTQ09ORl9UTVAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAtZSAiJERFVkNBQ0hFX1JFR0VOIiBdICYmIHJtIC1mICIkREVWQ0FDSEVfUkVHRU4iCi0gICAgICAgICAgICAgICAgICAgIGVsc2UKLQkJCSAgICAjIE91dHB1dCBkZXRhaWxlZCByZWFzb24gd2h5IHRoZSBjYWNoZWQgL2RldiBpcyBub3QgdXNlZAotCQkJICAgIGNhdCA8PEVPRgotdWRldjogTm90IHVzaW5nIHVkZXYgY2FjaGUgYmVjYXVzZSBvZiBjaGFuZ2VzIGRldGVjdGVkIGluIHRoZSBmb2xsb3dpbmcgZmlsZXM6Ci11ZGV2OiAgICAgJENNUF9GSUxFX0xJU1QKLXVkZXY6ICAgICAkTUVUQV9GSUxFX0xJU1QKLXVkZXY6IFRoZSB1ZGV2IGNhY2hlIHdpbGwgYmUgcmVnZW5lcmF0ZWQuIFRvIGlkZW50aWZ5IHRoZSBkZXRlY3RlZCBjaGFuZ2VzLAotdWRldjogY29tcGFyZSB0aGUgY2FjaGVkIHN5c2NvbmYgYXQgICAkU1lTQ09ORl9DQUNIRUQKLXVkZXY6IGFnYWluc3QgdGhlIGN1cnJlbnQgc3lzY29uZiBhdCAgJFNZU0NPTkZfVE1QCi1FT0YKLQkJCSAgICB0b3VjaCAiJERFVkNBQ0hFX1JFR0VOIgotICAgICAgICAgICAgICAgICAgICBmaQotCSAgICBlbHNlCi0JCSAgICBpZiBbICIkUk9PVEZTX1JFQURfT05MWSIgIT0gInllcyIgXTsgdGhlbgotCQkJICAgICMgSWYgcm9vdGZzIGlzIG5vdCByZWFkLW9ubHksIGl0J3MgcG9zc2libGUgdGhhdCBhIG5ldyB1ZGV2IGNhY2hlIHdvdWxkIGJlIGdlbmVyYXRlZDsKLQkJCSAgICAjIG90aGVyd2lzZSwgd2UgZG8gbm90IGJvdGhlciB0byByZWFkIGZpbGVzLgotCQkJICAgIHRvdWNoICIkREVWQ0FDSEVfUkVHRU4iCi0JCSAgICBmaQotICAgICAgICAgICAgZmkKLSAgICBmaQotCiAgICAgIyBtYWtlX2V4dHJhX25vZGVzCiAgICAga2lsbF91ZGV2ZCA+ICIvZGV2L251bGwiIDI+JjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvdWRldi1jYWNoZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L3VkZXYtY2FjaGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZmZmMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvdWRldi1jYWNoZQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSMhL2Jpbi9zaCAtZQotCi0jIyMgQkVHSU4gSU5JVCBJTkZPCi0jIFByb3ZpZGVzOiAgICAgICAgICB1ZGV2LWNhY2hlCi0jIFJlcXVpcmVkLVN0YXJ0OiAgICBtb3VudGFsbAotIyBSZXF1aXJlZC1TdG9wOgotIyBEZWZhdWx0LVN0YXJ0OiAgICAgUwotIyBEZWZhdWx0LVN0b3A6Ci0jIFNob3J0LURlc2NyaXB0aW9uOiBjYWNoZSAvZGV2IHRvIHNwZWVkdXAgdGhlIHVkZXYgbmV4dCBib290Ci0jIyMgRU5EIElOSVQgSU5GTwotCi1leHBvcnQgVFo9L2V0Yy9sb2NhbHRpbWUKLQotWyAtciAvcHJvYy9tb3VudHMgXSB8fCBleGl0IDEKLVsgLXggQFVERVZEQCBdIHx8IGV4aXQgMQotWyAtZCAvc3lzL2NsYXNzIF0gfHwgZXhpdCAxCi0KLVsgLWYgL2V0Yy9kZWZhdWx0L3JjUyBdICYmIC4gL2V0Yy9kZWZhdWx0L3JjUwotREVWQ0FDSEVfVE1QPSIvZGV2L3NobS91ZGV2LWNhY2hlLXRtcC50YXIiCi1TWVNDT05GX0NBQ0hFRD0iL2V0Yy91ZGV2L2NhY2hlLmRhdGEiCi1TWVNDT05GX1RNUD0iL2Rldi9zaG0vdWRldi5jYWNoZSIKLURFVkNBQ0hFX1JFR0VOPSIvZGV2L3NobS91ZGV2LXJlZ2VuIiAjIGNyZWF0ZSB0byByZXF1ZXN0IGNhY2hlIHJlZ2VuCi0KLSMgQSBsaXN0IG9mIGZpbGVzIHdoaWNoIGFyZSB1c2VkIGFzIGEgY3JpdGVyaWEgdG8ganVkZ2Ugd2hldGhlciB0aGUgdWRldiBjYWNoZSBjb3VsZCBiZSByZXVzZWQuCi1DTVBfRklMRV9MSVNUPSIvcHJvYy92ZXJzaW9uIC9wcm9jL2NtZGxpbmUgL3Byb2MvZGV2aWNlcyIKLVsgLWYgL3Byb2MvYXRhZ3MgXSAmJiBDTVBfRklMRV9MSVNUPSIkQ01QX0ZJTEVfTElTVCAvcHJvYy9hdGFncyIKLQotIyBMaXN0IG9mIGZpbGVzIHdob3NlIG1ldGFkYXRhIChzaXplL210aW1lL25hbWUpIHdpbGwgYmUgaW5jbHVkZWQgaW4gY2FjaGVkCi0jIHN5c3RlbSBzdGF0ZS4KLU1FVEFfRklMRV9MSVNUPSJsaWIvdWRldi9ydWxlcy5kLyogZXRjL3VkZXYvcnVsZXMuZC8qIgotCi0jIENvbW1hbmQgdG8gY29tcHV0ZSBzeXN0ZW0gY29uZmlndXJhdGlvbi4KLXN5c2NvbmZfY21kICgpIHsKLQljYXQgLS0gJENNUF9GSUxFX0xJU1QKLQlzdGF0IC1jICclcyAlWSAlbicgLS0gJE1FVEFfRklMRV9MSVNUIHwgYXdrIC1GLyAne3ByaW50ICQxICIgIiAkTkY7fScKLX0KLQotWyAtZiAvZXRjL2RlZmF1bHQvdWRldi1jYWNoZSBdICYmIC4gL2V0Yy9kZWZhdWx0L3VkZXYtY2FjaGUKLQotaWYgWyAiJFJPT1RGU19SRUFEX09OTFkiID0gInllcyIgXTsgdGhlbgotICAgIFsgIiRWRVJCT1NFIiAhPSAibm8iIF0gJiYgZWNobyAidWRldi1jYWNoZTogcmVhZC1vbmx5IHJvb3Rmcywgc2tpcCBnZW5lcmF0aW5nIHVkZXYtY2FjaGUiCi0gICAgZXhpdCAwCi1maQotCi1bICIkREVWQ0FDSEUiICE9ICIiIF0gfHwgZXhpdCAwCi1bICIke1ZFUkJPU0V9IiA9PSAibm8iIF0gfHwgZWNobyAtbiAidWRldi1jYWNoZTogY2hlY2tpbmcgZm9yICR7REVWQ0FDSEVfUkVHRU59Li4uICIKLWlmICEgWyAtZSAiJERFVkNBQ0hFX1JFR0VOIiBdOyB0aGVuCi0JWyAiJHtWRVJCT1NFfSIgPT0gIm5vIiBdIHx8IGVjaG8gIm5vdCBmb3VuZC4iCi0JZXhpdCAwCi1maQotWyAiJHtWRVJCT1NFfSIgPT0gIm5vIiBdIHx8IGVjaG8gImZvdW5kLiIKLWVjaG8gIlBvcHVsYXRpbmcgZGV2IGNhY2hlIgotCi1lcnJfY2xlYW51cCAoKSB7Ci0gICAgICAgIGVjaG8gInVkZXYtY2FjaGU6IHVwZGF0ZSBmYWlsZWQhIgotICAgICAgICB1ZGV2YWRtIGNvbnRyb2wgLS1zdGFydC1leGVjLXF1ZXVlCi0Jcm0gLWYgLS0gIiRTWVNDT05GX1RNUCIgIiRERVZDQUNIRV9UTVAiICIkREVWQ0FDSEUiICIkU1lTQ09ORl9DQUNIRUQiCi19Ci0KLSgKLQlzZXQgLWUKLQl0cmFwICdlcnJfY2xlYW51cCcgRVhJVAotCXVkZXZhZG0gY29udHJvbCAtLXN0b3AtZXhlYy1xdWV1ZQotCXN5c2NvbmZfY21kID4gIiRTWVNDT05GX1RNUCIKLQlmaW5kIC9kZXYgLXhkZXYgXCggLXR5cGUgYiAtbyAtdHlwZSBjIC1vIC10eXBlIGwgXCkgfCBjdXQgLWMgMi0gXAotCQl8IHhhcmdzIHRhciBjZiAiJHtERVZDQUNIRV9UTVB9IgotCWd6aXAgPCAiJHtERVZDQUNIRV9UTVB9IiA+ICIkREVWQ0FDSEUiCi0Jcm0gLWYgIiR7REVWQ0FDSEVfVE1QfSIKLQltdiAiJFNZU0NPTkZfVE1QIiAiJFNZU0NPTkZfQ0FDSEVEIgotCXVkZXZhZG0gY29udHJvbCAtLXN0YXJ0LWV4ZWMtcXVldWUKLQlybSAtZiAiJERFVkNBQ0hFX1JFR0VOIgotCXRyYXAgLSBFWElUCi0pICYKLQotZXhpdCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi91ZGV2LWNhY2hlLmRlZmF1bHQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi91ZGV2LWNhY2hlLmRlZmF1bHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYjczMjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvdWRldi1jYWNoZS5kZWZhdWx0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIERlZmF1bHQgZm9yIC9ldGMvaW5pdC5kL3VkZXYKLQotIyBDb21tZW50IHRoaXMgb3V0IHRvIGRpc2FibGUgZGV2aWNlIGNhY2hlCi1ERVZDQUNIRT0iL2V0Yy91ZGV2LWNhY2hlLnRhci5neiIKLVBST0JFX1BMQVRGT1JNX0JVUz0ieWVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRmYjU0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1TVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCi1MSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgotTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nZW50b28vJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LWNhY2hlIFwKLSAgICAgICAgICAgZmlsZTovL3VkZXYtY2FjaGUuZGVmYXVsdCBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2VudG9vL2V1ZGV2L3JlbGVhc2VzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTJhYWUxNmJjNDMyZWFjMGU3MWMxMjY3YzM4NGUyOTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODhmNTMwYzE1NDA3NTBlNmRhYTkxYjVlYWVlYmY4OGU3NjFlNmYwYzg2NTE1YzFjMjhlZWRmZDg3MWYwMjdjNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCi0gICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAotICAgIC0td2l0aC1yb290cHJlZml4PSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJod2RiIgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICItLWVuYWJsZS1od2RiLC0tZGlzYWJsZS1od2RiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS91ZGV2LWNhY2hlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2LWNhY2hlCi0Jc2VkIC1pIHMlQFVERVZEQCUke2Jhc2Vfc2JpbmRpcn0vdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2Ci0Jc2VkIC1pIHMlQFVERVZEQCUke2Jhc2Vfc2JpbmRpcn0vdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2LWNhY2hlCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS91ZGV2LWNhY2hlLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC91ZGV2LWNhY2hlCi0KLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L2NhY2hlLmRhdGEKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbG9jYWwucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kL2xvY2FsLnJ1bGVzCi0KLQkjIFVzZSBjbGFzc2ljIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWluZyBzY2hlbWUKLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LW5hbWUtc2xvdC5ydWxlcwotCi0JIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKLX0KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJldWRldiB1ZGV2LWNhY2hlIgotSU5JVFNDUklQVF9OQU1FX2V1ZGV2ID0gInVkZXYiCi1JTklUU0NSSVBUX1BBUkFNU19ldWRldiA9ICJzdGFydCAwNCBTIC4iCi1JTklUU0NSSVBUX05BTUVfdWRldi1jYWNoZSA9ICJ1ZGV2LWNhY2hlIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldi1jYWNoZSA9ICJzdGFydCAzNiBTIC4iCi0KLVBBQ0tBR0VTID0rICJsaWJ1ZGV2IgotUEFDS0FHRVMgPSsgInVkZXYtY2FjaGUiCi1QQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnVkZXYuYSAke2xpYmRpcn0vcGtnY29uZmlnL2xpYnVkZXYucGMiCi1GSUxFU19saWJ1ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L2xpYnVkZXYuc28uKiIKLUZJTEVTX3VkZXYtY2FjaGUgPSAiJHtzeXNjb25mZGlyfS9pbml0LmQvdWRldi1jYWNoZSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdWRldi1jYWNoZSIKLUZJTEVTX2V1ZGV2LWh3ZGIgPSAiJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuZCIKLQotUkRFUEVORFNfZXVkZXYtaHdkYiArPSAiZXVkZXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJ1ZGV2LWNhY2hlIgotCi1SUFJPVklERVNfJHtQTn0gPSAiaG90cGx1ZyB1ZGV2IgotUlBST1ZJREVTX2V1ZGV2LWh3ZGIgKz0gInVkZXYtaHdkYiIKLQotcHl0aG9uICgpIHsKLSAgICBpZiBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIGluIERJU1RST19GRUFUVVJFUyIpCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7Ci0gICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0gICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L3VkZXZhZG0nKX0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQKLSAgICAgICAgY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi0gICAgZWxzZQotICAgICAgICB1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKLSAgICBmaQotfQotCi1wa2dfcHJlcm1fZXVkZXYtaHdkYiAoKSB7Ci0gICAgICAgIHJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZmIyM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMi5iYgpAQCAtMCwwICsxLDk2IEBACitTVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCitMSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgorTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgorCitQUk9WSURFUyA9ICJ1ZGV2IgorCitTUkNfVVJJID0gImh0dHA6Ly9kZXYuZ2VudG9vLm9yZy9+Ymx1ZW5lc3MvJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKKyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2VudG9vL2V1ZGV2L3JlbGVhc2VzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDFlMTliNzA0NjI2OTJmZWZkMDcyYTNmMzg4MThiNmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2U0YzU2ZWMyZmMxODU0YWZkMGEzMWYzYWZmYTQ4ZjkyMmM2MmQ0MGVlMTJhMGMxYTRiNGYxNTJlZjViMGY2MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCisgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAorICAgIC0td2l0aC1yb290cHJlZml4PSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJod2RiIgorUEFDS0FHRUNPTkZJR1tod2RiXSA9ICItLWVuYWJsZS1od2RiLC0tZGlzYWJsZS1od2RiIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKKwlzZWQgLWkgcyVAVURFVkRAJSR7YmFzZV9zYmluZGlyfS91ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbG9jYWwucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kL2xvY2FsLnJ1bGVzCisKKwkjIFVzZSBjbGFzc2ljIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWluZyBzY2hlbWUKKwl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LW5hbWUtc2xvdC5ydWxlcworCisJIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQorCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKK30KKworZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUKKwlzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJCSR7Qn0vc3JjL3VkZXYva2V5Ym9hcmQta2V5cy1mcm9tLW5hbWUuaAorfQorCitJTklUU0NSSVBUX05BTUUgPSAidWRldiIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA0IFMgLiIKKworUEFDS0FHRVMgPSsgImxpYnVkZXYiCitQQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKKworCitGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnVkZXYuYSAke2xpYmRpcn0vcGtnY29uZmlnL2xpYnVkZXYucGMiCitGSUxFU19saWJ1ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L2xpYnVkZXYuc28uKiIKK0ZJTEVTX2V1ZGV2LWh3ZGIgPSAiJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuZCIKKworUkRFUEVORFNfZXVkZXYtaHdkYiArPSAiZXVkZXYiCisKK1JQUk9WSURFU18ke1BOfSA9ICJob3RwbHVnIHVkZXYiCitSUFJPVklERVNfZXVkZXYtaHdkYiArPSAidWRldi1od2RiIgorCitweXRob24gKCkgeworICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgaW4gRElTVFJPX0ZFQVRVUkVTIikKK30KKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAorICAgICAgICBjaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KKyAgICBlbHNlCisgICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorICAgIGZpCit9CisKK3BrZ19wcmVybV9ldWRldi1od2RiICgpIHsKKyAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mXzEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mXzEuMS5iYgppbmRleCBhZTEyNTUwLi40M2ExY2ZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZl8xLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1leHRyYWNvbmZfMS4xLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJFeHRyYSBtYWNoaW5lIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZXMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL0V1ZGV2IgogREVTQ1JJUFRJT04gPSAiRXh0cmEgbWFjaGluZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB1ZGV2LCBzcGVjaWZpY2FsbHkgYmxhY2tsaXN0IGluZm9ybWF0aW9uLiIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgppbmRleCAzYjk2NWM1Li42ZmM2ZjZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIm1hbmFnZSBzeW1saW5rcyBpbiAvZXRjL3JjTi5kIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vcGhpbGIvdXBkYXRlLXJjLmQvIgogREVTQ1JJUFRJT04gPSAidXBkYXRlLXJjLmQgaXMgYSB1dGlsaXR5IHRoYXQgYWxsb3dzIHRoZSBtYW5hZ2VtZW50IG9mIHN5bWxpbmtzIHRvIHRoZSBpbml0c2NyaXB0cyBpbiB0aGUgL2V0Yy9yY04uZCBkaXJlY3Rvcnkgc3RydWN0dXJlLiIKIFNFQ1RJT04gPSAiYmFzZSIKIApAQCAtMTUsNiArMTYsNyBAQAogICAgICAgICAgICBmaWxlOi8vY2hlY2staWYtc3ltbGlua3MtYXJlLXZhbGlkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC10by1oYW5kbGUtcHJpb3JpdHktbnVtYmVycy1jb3JyZWN0bHkucGF0Y2ggXAogICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCmluZGV4IDYzMzAyYTkuLmYwZmZkMjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJBIHN1aXRlIG9mIGJhc2ljIHN5c3RlbSBhZG1pbmlzdHJhdGlvbiB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vdXNlcndlYi5rZXJuZWwub3JnL35remFrL3V0aWwtbGludXgvIgogREVTQ1JJUFRJT04gPSAiVXRpbC1saW51eCBpbmNsdWRlcyBhIHN1aXRlIG9mIGJhc2ljIHN5c3RlbSBhZG1pbmlzdHJhdGlvbiB1dGlsaXRpZXMgXAogY29tbW9ubHkgZm91bmQgb24gbW9zdCBMaW51eCBzeXN0ZW1zLiAgU29tZSBvZiB0aGUgbW9yZSBpbXBvcnRhbnQgdXRpbGl0aWVzIGluY2x1ZGUgXAogZGlzayBwYXJ0aXRpb25pbmcsIGtlcm5lbCBtZXNzYWdlIG1hbmFnZW1lbnQsIGZpbGVzeXN0ZW0gY3JlYXRpb24sIGFuZCBzeXN0ZW0gbG9naW4uIgpAQCAtMzMsOSArMzQsMTAgQEAKICAgICAgICAgICAgICB1dGlsLWxpbnV4LWJsa2lkIHV0aWwtbGludXgtbWtmcyB1dGlsLWxpbnV4LW1jb29raWUgdXRpbC1saW51eC1yZXNldCBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1sc2JsayB1dGlsLWxpbnV4LW1rZnMuY3JhbWZzIHV0aWwtbGludXgtZnN0cmltIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXBhcnR4IHV0aWwtbGludXgtaHdjbG9jayB1dGlsLWxpbnV4LW1vdW50cG9pbnQgXAotICAgICAgICAgICAgIHV0aWwtbGludXgtZmluZGZzIHV0aWwtbGludXgtZ2V0b3B0IHV0aWwtbGludXgtc3Vsb2dpbiB1dGlsLWxpbnV4LXBybGltaXQiCisgICAgICAgICAgICAgdXRpbC1saW51eC1maW5kZnMgdXRpbC1saW51eC1nZXRvcHQgdXRpbC1saW51eC1zdWxvZ2luIHV0aWwtbGludXgtcHJsaW1pdCBcCisgICAgICAgICAgICAgdXRpbC1saW51eC1pb25pY2UgdXRpbC1saW51eC1zd2l0Y2gtcm9vdCIKIFBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweWxpYm1vdW50JywgJ3V0aWwtbGludXgtcHlsaWJtb3VudCcsICcnLCBkKX0iCi1QQUNLQUdFUyA9KyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndXRpbC1saW51eC1ydW51c2VyJywgJycsIGQpfSIKK1BBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd1dGlsLWxpbnV4LXJ1bnVzZXIgdXRpbC1saW51eC1zdScsICcnLCBkKX0iCiAKIFBBQ0tBR0VTX0RZTkFNSUMgPSAiXnV0aWwtbGludXgtbGliLioiCiAKQEAgLTkxLDYgKzkzLDkgQEAKIEZJTEVTX3V0aWwtbGludXgtZ2V0b3B0ID0gIiR7YmFzZV9iaW5kaXJ9L2dldG9wdC4ke0JQTn0iCiBGSUxFU191dGlsLWxpbnV4LXJ1bnVzZXIgPSAiJHtzYmluZGlyfS9ydW51c2VyIgogRklMRVNfdXRpbC1saW51eC1wcmxpbWl0ID0gIiR7YmluZGlyfS9wcmxpbWl0IgorRklMRVNfdXRpbC1saW51eC1pb25pY2UgPSAiJHtiaW5kaXJ9L2lvbmljZSIKK0ZJTEVTX3V0aWwtbGludXgtc3UgPSAiJHtiaW5kaXJ9L3N1LnV0aWwtbGludXggJHtzeXNjb25mZGlyfS9wYW0uZC9zdS1sIgorQ09ORkZJTEVTX3V0aWwtbGludXgtc3UgPSAiJHtzeXNjb25mZGlyfS9wYW0uZC9zdS1sIgogCiBGSUxFU191dGlsLWxpbnV4LXB5bGlibW91bnQgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbGlibW91bnQvcHlsaWJtb3VudC5zbyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbGlibW91bnQvX19pbml0X18uKiBcCkBAIC0xMDcsNiArMTEyLDggQEAKIEZJTEVTX3V0aWwtbGludXgtc3Vsb2dpbiA9ICIke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbioiCiBGSUxFU191dGlsLWxpbnV4LW1vdW50cG9pbnQgPSAiJHtiYXNlX2JpbmRpcn0vbW91bnRwb2ludC4ke0JQTn0iCiAKK0ZJTEVTX3V0aWwtbGludXgtc3dpdGNoLXJvb3QgPSAiJHtiYXNlX3NiaW5kaXJ9L3N3aXRjaF9yb290LiR7QlBOfSIKKwogIyBVdGlsLWxpbnV4JyBibGtpZCByZXBsYWNlcyB0aGUgZTJmc3Byb2dzIG9uZQogRklMRVNfdXRpbC1saW51eC1ibGtpZCA9ICIke2Jhc2Vfc2JpbmRpcn0vYmxraWQqIgogUkNPTkZMSUNUU191dGlsLWxpbnV4LWJsa2lkID0gImUyZnNwcm9ncy1ibGtpZCIKQEAgLTExNiwxMSArMTIzLDEyIEBACiBSREVQRU5EU191dGlsLWxpbnV4LXJlc2V0ICs9ICJuY3Vyc2VzIgogCiBSREVQRU5EU191dGlsLWxpbnV4LXJ1bnVzZXIgKz0gImxpYnBhbSIKK1JERVBFTkRTX3V0aWwtbGludXgtc3UgKz0gImxpYnBhbSIKIAogUkRFUEVORFNfJHtQTn0gPSAidXRpbC1saW51eC11bW91bnQgdXRpbC1saW51eC1zd2Fwb25vZmYgdXRpbC1saW51eC1sb3NldHVwIHV0aWwtbGludXgtc3Vsb2dpbiB1dGlsLWxpbnV4LWxzYmxrIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3V0aWwtbGludXgtcnVudXNlcicsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndXRpbC1saW51eC1ydW51c2VyIHV0aWwtbGludXgtc3UnLCAnJywgZCl9IgogCi1SUkVDT01NRU5EU18ke1BOfSA9ICJ1dGlsLWxpbnV4LWZkaXNrIHV0aWwtbGludXgtY2ZkaXNrIHV0aWwtbGludXgtc2ZkaXNrIHV0aWwtbGludXgtbW91bnQgdXRpbC1saW51eC1yZWFkcHJvZmlsZSB1dGlsLWxpbnV4LW1rZnMgdXRpbC1saW51eC1tb3VudHBvaW50IHV0aWwtbGludXgtcHJsaW1pdCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gInV0aWwtbGludXgtZmRpc2sgdXRpbC1saW51eC1jZmRpc2sgdXRpbC1saW51eC1zZmRpc2sgdXRpbC1saW51eC1tb3VudCB1dGlsLWxpbnV4LXJlYWRwcm9maWxlIHV0aWwtbGludXgtbWtmcyB1dGlsLWxpbnV4LW1vdW50cG9pbnQgdXRpbC1saW51eC1wcmxpbWl0IHV0aWwtbGludXgtaW9uaWNlIHV0aWwtbGludXgtc3dpdGNoLXJvb3QiCiAKIFJSRUNPTU1FTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCiBSUkVDT01NRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgpAQCAtMTgyLDYgKzE5MCwxMiBAQAogCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ydW51c2VyLnBhbWQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvcnVudXNlcgogCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ydW51c2VyLWwucGFtZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9ydW51c2VyLWwKIAlmaQorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJIyBSZXF1aXJlZCBmb3IgInN1IC0iIGFrYSAic3UgLS1sb2dpbiIgYmVjYXVzZQorCQkjIG90aGVyd2lzZSBpdCB1c2VzICJvdGhlciIsIHdoaWNoIGhhcyAiYXV0aCBwYW1fZGVueS5zbyIKKwkJIyBhbmQgdGh1cyBwcmV2ZW50cyB0aGUgb3BlcmF0aW9uLgorCQlsbiAtcyBzdSAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zdS1sCisJZmkKIH0KIAogIyByZXNldCBhbmQgbm9sb2dpbiBjYXVzZXMgYSBjb25mbGljdCB3aXRoIG5jdXJzZXMtbmF0aXZlIGFuZCBzaGFkb3ctbmF0aXZlCkBAIC0yOTAsNyArMzA0LDcgQEAKIH0KIAogUkRFUEVORFNfJHtQTn0tYmFzaC1jb21wbGV0aW9uICs9ICJ1dGlsLWxpbnV4LWxzYmxrIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBncmVwIGNvcmV1dGlscyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggZ3JlcCBjb3JldXRpbHMgd2hpY2ggdXRpbC1saW51eC1ibGtpZCB1dGlsLWxpbnV4LWZzY2sgYnRyZnMtdG9vbHMiCiAKIGRvX2NvbXBpbGVfcHRlc3QoKSB7CiAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKQEAgLTI5OCwyMyArMzEyLDMwIEBACiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAgICAgbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdHMKLSAgICBmaW5kIC4gLW1heGRlcHRoIDEgLXR5cGUgZiAtcGVybSAtMTExIC1leGVjIGNwIHt9ICR7RH0ke1BURVNUX1BBVEh9IFw7Ci0gICAgY3AgJHtTfS90ZXN0cy9mdW5jdGlvbnMuc2ggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0gICAgY3AgJHtTfS90ZXN0cy9jb21tYW5kcy5zaCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLSAgICBjcCAke1N9L3Rlc3RzL3J1bi5zaCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLSAgICBjcCAtcFIgJHtTfS90ZXN0cy9leHBlY3RlZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9leHBlY3RlZAorICAgIGZpbmQgLiAtbmFtZSAndGVzdConIC1tYXhkZXB0aCAxIC10eXBlIGYgLXBlcm0gLTExMSAtZXhlYyBjcCB7fSAke0R9JHtQVEVTVF9QQVRIfSBcOworICAgIGZpbmQgLi8ubGlicyAtbmFtZSAnc2FtcGxlKicgLW1heGRlcHRoIDEgLXR5cGUgZiAtcGVybSAtMTExIC1leGVjIGNwIHt9ICR7RH0ke1BURVNUX1BBVEh9IFw7CisgICAgZmluZCAuLy5saWJzIC1uYW1lICd0ZXN0KicgLW1heGRlcHRoIDEgLXR5cGUgZiAtcGVybSAtMTExIC1leGVjIGNwIHt9ICR7RH0ke1BURVNUX1BBVEh9IFw7CiAKLSAgICBsaXN0PSJiaXRvcHMgYnVpbGQtc3lzIGNhbCBjb2wgY29scm0gY29sdW1uIGRtZXNnIGZzY2sgaGV4ZHVtcCBod2Nsb2NrIGlwY3MgaXNvc2l6ZSBsb2dpbiBsb29rIG1kNSBtaXNjIG1vcmUgbmFtZWkgcGF0aHMgc2NoZWR1dGlscyBzY3JpcHQgc3dhcG9uIHRhaWxmIgotICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgbm90IGluc3RhbGxlZCAgeWV0OgotICAgICMgYmxraWQgc2NzaV9kZWJ1ZyBtb2R1bGUgZGVwZW5kZW50Ci0gICAgIyBjcmFtZnMgZ2NjIGRlcGVuZGVudAotICAgICMgZWplY3QgZ2NjIGRlcGVuZGVudAotICAgICMgZmRpc2sgc2NzaV9kZWJ1ZyBtb2R1bGUgYW5kIGdjYyBkZXBlbmRlbnQKLSAgICAjIGxzY3B1IGdjYyBkZXBlbmRhbnQKLSAgICAjIGxpYm1vdW50IHV1aWRnZW4gZGVwZW5kZW50Ci0gICAgIyBtb3VudCBnY2MgZGVwZW5kYW50Ci0gICAgIyBwYXJ0eCBibGtpZCBkZXBlbmRhbnQKLSAgICBmb3IgZCBpbiAkbGlzdDsgZG8KLSAgICAgICAgY3AgLXBSICR7U30vdGVzdHMvdHMvJGQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdHMvCi0gICAgZG9uZQorICAgIGNwICR7U30vdGVzdHMvKi5zaCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICBjcCAtcFIgJHtTfS90ZXN0cy9leHBlY3RlZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9leHBlY3RlZAorICAgIGNwIC1wUiAke1N9L3Rlc3RzL3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworICAgIGNwICR7V09SS0RJUn0vYnVpbGQvY29uZmlnLmggJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgVGhlIG9yaWdpbmFsIHBhdGhzIG9mIGV4ZWN1dGFibGVzIHRvIGJlIHRlc3RlZCBwb2ludCB0byBhIGxvY2FsIGZvbGRlciBjb250YWluaW5nCisgICAgIyB0aGUgZXhlY3V0YWJsZXMuIFdlIHdhbnQgdG8gdGVzdCB0aGUgaW5zdGFsbGVkIGV4ZWN1dGFibGVzLCBub3QgdGhlIGxvY2FsIGNvcGllcy4KKyAgICAjIFNvIHN0cmlwIHRoZSBwYXRocywgdGhlIGV4ZWN1dGFibGVzIHdpbGwgYmUgbG9jYXRlZCB2aWEgIndoaWNoIgorICAgIHNlZCAgLWkgXAorICAgICAgICAgLWUgJy9eVFNfQ01ELyBzfCR0b3BfYnVpbGRkaXIvfHxnJyBcCisgICAgICAgICAtZSAnL15UU19IRUxQRVIvIHN8JHRvcF9idWlsZGRpcnwke1BURVNUX1BBVEh9fGcnIFwKKyAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2NvbW1hbmRzLnNoCisKKyAgICAjIENoYW5nZSAnaWYgWyAhIC14ICIkMSIgXScgdG8gJ2lmIFsgISAteCAiYHdoaWNoICQxIDI+L2Rldi9udWxsYCJdJworICAgIHNlZCAtaSAtZSBcCisgICAgICAgICcvXlx0aWZbWzpzcGFjZTpdXVxbW1s6c3BhY2U6XV0hW1s6c3BhY2U6XV0teFtbOnNwYWNlOl1dIiQxIi9zfCQxfGB3aGljaCAkMSAyPi9kZXYvbnVsbGB8ZycgXAorICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZnVuY3Rpb25zLnNoCisKKyAgICAjICJraWxsIC1MIiBiZWhhdmVzIGRpZmZlcmVudGx5IHRoYW4gIi9iaW4va2lsbCAtTCIgc28gd2UgbmVlZCBhbiBhZGRpdGlvbmFsIGZpeAorICAgIHNlZCAtaSAtZSBcCisgICAgICAgICAnL15UU19DTURfS0lMTC8gc3xraWxsfC9iaW4va2lsbHxnJyBcCisgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jb21tYW5kcy5zaAogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9ub19nZXRyYW5kb20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L25vX2dldHJhbmRvbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWZhMWNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9ub19nZXRyYW5kb20ucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorZ2V0cmFuZG9tKCkgaXMgb25seSBhdmFpbGFibGUgaW4gZ2xpYmMgMi4yNSsgYW5kIHVuaW5hdGl2ZSBtYXkgcmVsb2NhdGUgCitiaW5hcmllcyBvbnRvIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoaXMgZnVuY3Rpb24uIEZvciBub3csIGZvcmNlIHRoZSAKK2NvZGUgdG8gdGhlIG9sZGVyIGNvZGVwYXRoIHVudGlsIHdlIGNhbiBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRpb24gCitmb3IgdGhpcyBraW5kIG9mIGlzc3VlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1JQCisyMDE2LzgvMTUKKworSW5kZXg6IHV0aWwtbGludXgtMi4zMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1dGlsLWxpbnV4LTIuMzAub3JpZy9jb25maWd1cmUuYWMKKysrKyB1dGlsLWxpbnV4LTIuMzAvY29uZmlndXJlLmFjCitAQCAtMzk5LDcgKzM5OSw2IEBAIEFDX0NIRUNLX0ZVTkNTKFsgXAorIAlnZXRkdGFibGVzaXplIFwKKyAJZ2V0ZXhlY25hbWUgXAorIAlnZXRtbnRpbmZvIFwKKy0JZ2V0cmFuZG9tIFwKKyAJZ2V0cmxpbWl0IFwKKyAJZ2V0c2duYW0gXAorIAlpbm90aWZ5X2luaXQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC91dWlkLXRlc3QtZXJyb3ItYXBpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC91dWlkLXRlc3QtZXJyb3ItYXBpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmZkZTVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvdXVpZC10ZXN0LWVycm9yLWFwaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLVRoaXMgcGF0Y2ggYWRkcyBlcnJvcigpIEFQSSBpbXBsZW1lbnRhdGlvbiBmb3Igbm9uLWdsaWJjIHN5c3RlbSBDIGxpYnMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBtaXNjLXV0aWxzL3Rlc3RfdXVpZGQuYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWlzYy11dGlscy90ZXN0X3V1aWRkLmMgYi9taXNjLXV0aWxzL3Rlc3RfdXVpZGQuYwotaW5kZXggMzZmM2IzZC4uN2Q1NzljZSAxMDA2NDQKLS0tLSBhL21pc2MtdXRpbHMvdGVzdF91dWlkZC5jCi0rKysgYi9taXNjLXV0aWxzL3Rlc3RfdXVpZGQuYwotQEAgLTIzLDcgKzIzLDYgQEAKLSAgKgotICAqCW1ha2UgdXVpZGQgdXVpZGdlbiBsb2NhbHN0YXRlZGlyPS92YXIKLSAgKi8KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSAjaW5jbHVkZSA8cHRocmVhZC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0zOCw2ICszNywxNyBAQAotICNpbmNsdWRlICJ4YWxsb2MuaCIKLSAjaW5jbHVkZSAic3RydXRpbHMuaCIKLSAKLSsjaWZkZWYgX19HTElCQ19fCi0rI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2Vsc2UKLStleHRlcm4gdm9pZCAoKmVycm9yX3ByaW50X3Byb2duYW1lKSh2b2lkKTsKLStleHRlcm4gdW5zaWduZWQgaW50IGVycm9yX21lc3NhZ2VfY291bnQ7Ci0rZXh0ZXJuIGludCBlcnJvcl9vbmVfcGVyX2xpbmU7Ci0rCi0rdm9pZCBlcnJvcihpbnQsIGludCwgY29uc3QgY2hhciAqLCAuLi4pOwotK3ZvaWQgZXJyb3JfYXRfbGluZShpbnQsIGludCwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIExPRyhsZXZlbCxhcmdzKSBpZiAobG9nbGV2ID49IGxldmVsKSB7IGZwcmludGYgYXJnczsgfQotIAotIHNpemVfdCBucHJvY2Vzc2VzID0gNDsKLUBAIC0yNTYsNiArMjY2LDU2IEBAIHN0YXRpYyB2b2lkIG9iamVjdF9kdW1wKHNpemVfdCBpZHgsIG9iamVjdF90ICpvYmopCi0gCWZwcmludGYoc3RkZXJyLCAifVxuIik7Ci0gfQotIAotKyNpZm5kZWYgX19HTElCQ19fCi0rZXh0ZXJuIGNoYXIgKl9fcHJvZ25hbWU7Ci0rCi0rdm9pZCAoKmVycm9yX3ByaW50X3Byb2duYW1lKSh2b2lkKSA9IDA7Ci0rdW5zaWduZWQgaW50IGVycm9yX21lc3NhZ2VfY291bnQgPSAwOwotK2ludCBlcnJvcl9vbmVfcGVyX2xpbmUgPSAwOwotKwotK3N0YXRpYyB2b2lkIGVwcmludChpbnQgc3RhdHVzLCBpbnQgZSwgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKLSt7Ci0rCWlmIChmaWxlICYmIGVycm9yX29uZV9wZXJfbGluZSkgewotKwkJc3RhdGljIGNvbnN0IGNoYXIgKm9sZGZpbGU7Ci0rCQlzdGF0aWMgdW5zaWduZWQgaW50IG9sZGxpbmU7Ci0rCQlpZiAobGluZSA9PSBvbGRsaW5lICYmIHN0cmNtcChmaWxlLCBvbGRmaWxlKSA9PSAwKQotKwkJCXJldHVybjsKLSsJCW9sZGZpbGUgPSBmaWxlOwotKwkJb2xkbGluZSA9IGxpbmU7Ci0rCX0KLSsJaWYgKGVycm9yX3ByaW50X3Byb2duYW1lKQotKwkJZXJyb3JfcHJpbnRfcHJvZ25hbWUoKTsKLSsJZWxzZQotKwkJZnByaW50ZihzdGRlcnIsICIlczogIiwgX19wcm9nbmFtZSk7Ci0rCWlmIChmaWxlKQotKwkJZnByaW50ZihzdGRlcnIsICIlczoldTogIiwgZmlsZSwgbGluZSk7Ci0rCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7Ci0rCWlmIChlKQotKwkJZnByaW50ZihzdGRlcnIsICI6ICVzIiwgc3RyZXJyb3IoZSkpOwotKwlwdXRjKCdcbicsIHN0ZGVycik7Ci0rCWZmbHVzaChzdGRlcnIpOwotKwllcnJvcl9tZXNzYWdlX2NvdW50Kys7Ci0rCWlmIChzdGF0dXMpCi0rCQlleGl0KHN0YXR1cyk7Ci0rfQotKwotK3ZvaWQgZXJyb3IoaW50IHN0YXR1cywgaW50IGUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsJdmFfbGlzdCBhcDsKLSsJdmFfc3RhcnQoYXAsZm10KTsKLSsJZXByaW50KHN0YXR1cywgZSwgMCwgMCwgZm10LCBhcCk7Ci0rCXZhX2VuZChhcCk7Ci0rfQotKwotK3ZvaWQgZXJyb3JfYXRfbGluZShpbnQgc3RhdHVzLCBpbnQgZSwgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsJdmFfbGlzdCBhcDsKLSsJdmFfc3RhcnQoYXAsZm10KTsKLSsJZXByaW50KHN0YXR1cywgZSwgZmlsZSwgbGluZSwgZm10LCBhcCk7Ci0rCXZhX2VuZChhcCk7Ci0rfQotKyNlbmRpZiAvKiBfX0dMSUJDX18gKi8KLSsKLSBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIHsKLSAJc2l6ZV90IGksIG5mYWlsZWQgPSAwLCBuaWdub3JlZCA9IDA7Ci0tLSAKLTIuOC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4yOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjI5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzOTViNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjI5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1NQUpPUl9WRVJTSU9OID0gIjIuMjkiCi1yZXF1aXJlIHV0aWwtbGludXguaW5jCi0KLSMgVG8gc3VwcG9ydCBvbGRlciBob3N0cywgd2UgbmVlZCB0byBwYXRjaCBhbmQvb3IgcmV2ZXJ0Ci0jIHNvbWUgdXBzdHJlYW0gY2hhbmdlcy4gIE9ubHkgZG8gdGhpcyBmb3IgbmF0aXZlIHBhY2thZ2VzLgotT0xESE9TVCA9ICIiCi1PTERIT1NUX2NsYXNzLW5hdGl2ZSA9ICJmaWxlOi8vdXRpbC1saW51eC1uYXRpdmUtcXNvcnQucGF0Y2giCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUtc2JpbmRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVudXNlci5wYW1kIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLWwucGFtZCBcCi0gICAgICAgICAgICAke09MREhPU1R9IFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXVpZC10ZXN0LWVycm9yLWFwaS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMGNiYjZkMTZhYjljNTczNmU1NjQ5ZWYxMjY0YmVlNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGNlNDA2MDBiOTM0ZWMyZmVjZmE2YmZjNGVmZTY5ODJkMDUxYmE5NmMyODMyYjA1MjAxMzQ3YWVjNTgyZjU0ZiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInNjYW5mX2N2X2FsbG9jX21vZGlmaWVyPW1zIgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKLQkJCSAgICAgLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAotIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCi0JCQkJLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NDQ5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzAuYmIKQEAgLTAsMCArMSwzMSBAQAorTUFKT1JfVkVSU0lPTiA9ICIyLjMwIgorcmVxdWlyZSB1dGlsLWxpbnV4LmluYworCisjIFRvIHN1cHBvcnQgb2xkZXIgaG9zdHMsIHdlIG5lZWQgdG8gcGF0Y2ggYW5kL29yIHJldmVydAorIyBzb21lIHVwc3RyZWFtIGNoYW5nZXMuICBPbmx5IGRvIHRoaXMgZm9yIG5hdGl2ZSBwYWNrYWdlcy4KK09MREhPU1QgPSAiIgorT0xESE9TVF9jbGFzcy1uYXRpdmUgPSAiZmlsZTovL3V0aWwtbGludXgtbmF0aXZlLXFzb3J0LnBhdGNoIgorCitTUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bnVzZXIucGFtZCBcCisgICAgICAgICAgICBmaWxlOi8vcnVudXNlci1sLnBhbWQgXAorICAgICAgICAgICAgJHtPTERIT1NUfSBcCisgICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzcGxheV90ZXN0bmFtZV9mb3Jfc3VidGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vbm9fZ2V0cmFuZG9tLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImVhYTM0MjkxNTAyNjgwMjc5MDhhMWI4YWU2ZWU5YTYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMyMDhhNGZmNjkwNmNiN2Y1Nzk0MGFhNWJjM2E2ZWVkMTQ2ZTUwYTdjYzBhMDkyZjUyZWYyYWI2NTA1N2EwOGQiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJzY2FuZl9jdl9hbGxvY19tb2RpZmllcj1tcyIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCisJCQkgICAgIC0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKKyIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAorCQkJCS0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWJfMS4yLjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYl8xLjIuMTEuYmIKaW5kZXggYmEyMTZmNi4uNjQxMDUxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYl8xLjIuMTEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYl8xLjIuMTEuYmIKQEAgLTQ1LDYgKzQ1LDExIEBACiAJaW5zdGFsbCAke0J9L21pbmlnemlwICAgJHtEfSR7UFRFU1RfUEFUSH0KIAlpbnN0YWxsICR7Qn0vZXhhbXBsZXNoICAke0R9JHtQVEVTVF9QQVRIfQogCWluc3RhbGwgJHtCfS9taW5pZ3ppcHNoICR7RH0ke1BURVNUX1BBVEh9CisKKwkjIFJlbW92ZSBidWlsZGhvc3QgcmVmZXJlbmNlcy4uLgorCXNlZCAtaSAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCisJCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKIH0KIAogIyBNb3ZlIHpsaWIgc2hhcmVkIGxpYnJhcmllcyBmb3IgdGFyZ2V0IGJ1aWxkcyB0byAkYmFzZV9saWJkaXIgc28gdGhlIGxpYnJhcnkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmVfMS4yLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNjYwZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgYXB0LW5hdGl2ZS5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL25vY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uby1jdXJsLnBhdGNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlXzEuMi4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE2YjUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMjQuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGFwdC1uYXRpdmUuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ub2NvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbm8tY3VybC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZ2NjXzQueF9hcHQtcGtnLWNvbnRyaWItc3RydXRsLmNjLUluY2x1ZGUtYXJyYXktaGVhZGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9nY2NfNC54X1JldmVydC1hdm9pZC1jaGFuZ2luZy10aGUtZ2xvYmFsLUxDX1RJTUUtZm9yLVJlbGVhc2UucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2djY180LnhfUmV2ZXJ0LXVzZS1kZS1sb2NhbGVkLXN0ZC1wdXRfdGltZS1pbnN0ZWFkLXJvbGxpbmctby5wYXRjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jCmluZGV4IDMwMjYzNzAuLmYxY2RlMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LmluYwpAQCAtMiw3ICsyLDcgQEAKIExJQ0VOU0UgPSAiR1BMdjIuMCsiCiBTRUNUSU9OID0gImJhc2UiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA1MjZUMTYyOTQzWi9wb29sL21haW4vYS8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCitTUkNfVVJJID0gImh0dHA6Ly9hcmNoaXZlLnVidW50dS5jb20vdWJ1bnR1L3Bvb2wvbWFpbi9hLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovL3VzZS1ob3N0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL21ha2VyYWNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL25vLW5scy1kcGtnLnBhdGNoIFwKQEAgLTE0LDkgKzE0LDkgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtZW52aXJvbm1lbnQubWFrLW11c2wtYmFzZWQtc3lzdGVtcy1jYW4tZ2VuZXJhdGUtc2hhci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFwdC0xLjIuMTItRml4LW11c2wtYnVpbGQucGF0Y2ggXAogICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODBmNmYwZWYxMTBhNDVhN2U1YWY4YTlkMjMzZmIwZTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTgyMGQyN2NiYTczNDc2ZGY0YWJjZmYyN2RhZGQxYjU4NDc0NzRiZmU4NWY3ZTkyMDJhOWEwNzUyNjk3M2VhNiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZThmOWFiMTFmNGZkMGEwOGVjNzNlYWZmZDc1YzhmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYTEzMTFhOWNlMDBlNzIzNzlhMGEzYmM2ZDI0MGJhMzBjMDk2OGNmYmJiMzQ3Mjg1OWU1MGI5OWUyNGU5NTk4IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiAjIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQogIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1SZXZlcnQtYWx3YXlzLXJ1bi1kcGtnLWNvbmZpZ3VyZS1hLWF0LXRoZS1lbmQtb2Ytb3VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtUmV2ZXJ0LWFsd2F5cy1ydW4tZHBrZy1jb25maWd1cmUtYS1hdC10aGUtZW5kLW9mLW91ci5wYXRjaAppbmRleCBiM2E4ODNiLi43MzRiYTAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1SZXZlcnQtYWx3YXlzLXJ1bi1kcGtnLWNvbmZpZ3VyZS1hLWF0LXRoZS1lbmQtb2Ytb3VyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLVJldmVydC1hbHdheXMtcnVuLWRwa2ctY29uZmlndXJlLWEtYXQtdGhlLWVuZC1vZi1vdXIucGF0Y2gKQEAgLTIyLDEwICsyMiwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9hcHQtcGtnL2RlYi9kcGtncG0uY2MgYi9hcHQtcGtnL2RlYi9kcGtncG0uY2MKLWluZGV4IDgzNGNiMGUuLjg0ZGVkM2EgMTAwNjQ0CitpbmRleCA1MzNkOWIzNjcuLjZjZTgxYmJkOSAxMDA2NDQKIC0tLSBhL2FwdC1wa2cvZGViL2Rwa2dwbS5jYwogKysrIGIvYXB0LXBrZy9kZWIvZHBrZ3BtLmNjCi1AQCAtMTAzNywxMiArMTAzNyw2IEBAIHZvaWQgcGtnRFBrZ1BNOjpCdWlsZFBhY2thZ2VzUHJvZ3Jlc3NNYXAoKQorQEAgLTEwNDEsMTIgKzEwNDEsNiBAQCB2b2lkIHBrZ0RQa2dQTTo6QnVpbGRQYWNrYWdlc1Byb2dyZXNzTWFwKCkKICAJIFBhY2thZ2VzVG90YWwrKzsKICAgICAgICB9CiAgICAgfQpAQCAtMzgsNyArMzgsNyBAQAogIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKn19fSovCiAgYm9vbCBwa2dEUGtnUE06OkdvKGludCBTdGF0dXNGZCkKLUBAIC0xMjUwLDggKzEyNDQsOSBAQCBib29sIHBrZ0RQa2dQTTo6R28oQVBUOjpQcm9ncmVzczo6UGFja2FnZU1hbmFnZXIgKnByb2dyZXNzKQorQEAgLTEyNjgsOCArMTI2Miw5IEBAIGJvb2wgcGtnRFBrZ1BNOjpHbyhBUFQ6OlByb2dyZXNzOjpQYWNrYWdlTWFuYWdlciAqcHJvZ3Jlc3MpCiAgCiAgICAgLy8gc3VwcG9ydCBzdWJwcmVzc2luZyBvZiB0cmlnZ2VycyBwcm9jZXNzaW5nIGZvciBzcGVjaWFsCiAgICAgLy8gY2FzZXMgbGlrZSBkLWkgdGhhdCBydW5zIHRoZSB0cmlnZ2VycyBoYW5kbGluZyBtYW51YWxseQpAQCAtNTAsNyArNTAsNyBAQAogIAogICAgIC8vIGZvciB0aGUgcHJvZ3Jlc3MKIGRpZmYgLS1naXQgYS90ZXN0L2ludGVncmF0aW9uL3Rlc3QtYXB0LXByb2dyZXNzLWZkLWRlYjgyMiBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQtZGViODIyCi1pbmRleCA1OGZkNzMyLi4zMzU5NzYyIDEwMDc1NQoraW5kZXggYThkNTk2MDhkLi4wYzZhOWJiYmYgMTAwNzU1CiAtLS0gYS90ZXN0L2ludGVncmF0aW9uL3Rlc3QtYXB0LXByb2dyZXNzLWZkLWRlYjgyMgogKysrIGIvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZC1kZWI4MjIKIEBAIC0yNywzNiArMjcsMzYgQEAgTWVzc2FnZTogSW5zdGFsbGluZyB0ZXN0aW5nIChhbWQ2NCkKQEAgLTY5LDE5ICs2OSwxOSBAQAogIAogIFN0YXR1czogcHJvZ3Jlc3MKICBQYWNrYWdlOiB0ZXN0aW5nOmFtZDY0Ci0tUGVyY2VudDogNTAKLStQZXJjZW50OiA2MAorLVBlcmNlbnQ6IDUwLjAwMDAKKytQZXJjZW50OiA2MC4wMDAwCiAgTWVzc2FnZTogUHJlcGFyaW5nIHRvIGNvbmZpZ3VyZSB0ZXN0aW5nIChhbWQ2NCkKICAKICBTdGF0dXM6IHByb2dyZXNzCi0tUGVyY2VudDogNTAKLStQZXJjZW50OiA2MAorLVBlcmNlbnQ6IDUwLjAwMDAKKytQZXJjZW50OiA2MC4wMDAwCiAgTWVzc2FnZTogUnVubmluZyBkcGtnCiAgCiAgU3RhdHVzOiBwcm9ncmVzcwogIFBhY2thZ2U6IHRlc3Rpbmc6YW1kNjQKLS1QZXJjZW50OiA1MAotK1BlcmNlbnQ6IDYwCistUGVyY2VudDogNTAuMDAwMAorK1BlcmNlbnQ6IDYwLjAwMDAKICBNZXNzYWdlOiBDb25maWd1cmluZyB0ZXN0aW5nIChhbWQ2NCkKICAKICBTdGF0dXM6IHByb2dyZXNzCkBAIC05OCw3ICs5OCw3IEBACiAgCiAgU3RhdHVzOiBwcm9ncmVzcwogZGlmZiAtLWdpdCBhL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1uby1mZHMtbGVha2VkLXRvLW1haW50YWluZXItc2NyaXB0cyBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1uby1mZHMtbGVha2VkLXRvLW1haW50YWluZXItc2NyaXB0cwotaW5kZXggZDg2ZTYzOC4uZWY2ZDIzYiAxMDA3NTUKK2luZGV4IGQ4NmU2MzhjZC4uZWY2ZDIzYmUyIDEwMDc1NQogLS0tIGEvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LW5vLWZkcy1sZWFrZWQtdG8tbWFpbnRhaW5lci1zY3JpcHRzCiArKysgYi90ZXN0L2ludGVncmF0aW9uL3Rlc3Qtbm8tZmRzLWxlYWtlZC10by1tYWludGFpbmVyLXNjcmlwdHMKIEBAIC01OSw4ICs1OSw3IEBAIHN0YXJ0dXAgcGFja2FnZXMgY29uZmlndXJlCkBAIC0xMjIsNSArMTIyLDUgQEAKICBjaGVja3B1cmdlCiAgCiAtLSAKLTIuMS40CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtYXB0LTEuMi4xMi1GaXgtbXVzbC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLWFwdC0xLjIuMTItRml4LW11c2wtYnVpbGQucGF0Y2gKaW5kZXggMDRiMDQwNi4uZjdhYzE5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtYXB0LTEuMi4xMi1GaXgtbXVzbC1idWlsZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1hcHQtMS4yLjEyLUZpeC1tdXNsLWJ1aWxkLnBhdGNoCkBAIC0xMSw3ICsxMSw3IEBACiBhcHQtcGtnL2NvbnRyaWIvc3J2cmVjLmg6IEFkZCBleHBsaWNpdHkgaW5jbHVkZSBvZiBzeXMvdHlwZXMuaAogdG8gYXZvaWQgZXJyb3JzIGluIHR5cGVzIHVfaW50X1NJWkUuCiAKLVVwc3RyZWFtLXN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9SZXZlcnQtYXZvaWQtY2hhbmdpbmctdGhlLWdsb2JhbC1MQ19USU1FLWZvci1SZWxlYXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfUmV2ZXJ0LWF2b2lkLWNoYW5naW5nLXRoZS1nbG9iYWwtTENfVElNRS1mb3ItUmVsZWFzZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzhkZTIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfUmV2ZXJ0LWF2b2lkLWNoYW5naW5nLXRoZS1nbG9iYWwtTENfVElNRS1mb3ItUmVsZWFzZS5wYXRjaApAQCAtMCwwICsxLDgwIEBACitGcm9tIDdlZjJiMmRiYTBlMGJlZTQ1MGRhM2M4NDUwZWE3ODJhM2U3ZDY0MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW49QzM9QURiYWw9MjBMaW09QzM9QjNuPz0gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDIyIEF1ZyAyMDE3IDExOjQ5OjAxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBSZXZlcnQgImF2b2lkIGNoYW5naW5nIHRoZSBnbG9iYWwgTENfVElNRSBmb3IgUmVsZWFzZQorIHdyaXRpbmciCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgNzhlN2I2ODNjNjQ1ZTkwN2RiMTI2NTg0MDVhNGIyMDFhNjI0M2VhOC4KKworQWZ0ZXIgd2UgZHJvcCBkZWJpYW44IGFuZCBjZW50b3M3IHRoYXQgaGFzIGdjYyA8IDUgKHN0ZDo6cHV0X3RpbWUgbm90IGF2YWlsYWJsZSkgCit2ZXJzaW9ucyB0aGlzIHBhdGNoIGNhbiBiZSByZW1vdmUuCisKK1NpZ25lZC1vZmYtYnk6IEFuaWJhbCBMaW1vbiA8bGltb24uYW5pYmFsQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGZ0cGFyY2hpdmUvd3JpdGVyLmNjIHwgMjkgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9mdHBhcmNoaXZlL3dyaXRlci5jYyBiL2Z0cGFyY2hpdmUvd3JpdGVyLmNjCitpbmRleCAyNTk2MzgyLi5lNDNhNjQzIDEwMDY0NAorLS0tIGEvZnRwYXJjaGl2ZS93cml0ZXIuY2MKKysrKyBiL2Z0cGFyY2hpdmUvd3JpdGVyLmNjCitAQCAtMzcsNyArMzcsNiBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8Y3RpbWU+CisgI2luY2x1ZGUgPGlvc3RyZWFtPgorLSNpbmNsdWRlIDxpb21hbmlwPgorICNpbmNsdWRlIDxzc3RyZWFtPgorICNpbmNsdWRlIDxtZW1vcnk+CisgI2luY2x1ZGUgPHV0aWxpdHk+CitAQCAtOTg0LDI5ICs5ODMsMzUgQEAgUmVsZWFzZVdyaXRlcjo6UmVsZWFzZVdyaXRlcihGaWxlRmQgKiBjb25zdCBHaXZlbk91dHB1dCwgc3RyaW5nIGNvbnN0ICYvKkRCKi8pIDoKKyAgICBBZGRQYXR0ZXJucyhfY29uZmlnLT5GaW5kVmVjdG9yKCJBUFQ6OkZUUEFyY2hpdmU6OlJlbGVhc2U6OlBhdHRlcm5zIikpOworIAorICAgIHRpbWVfdCBjb25zdCBub3cgPSB0aW1lKE5VTEwpOworLSAgIGF1dG8gY29uc3QgcG9zaXggPSBzdGQ6OmxvY2FsZSgiQy5VVEYtOCIpOworIAorLSAgIC8vIEZJWE1FOiB1c2UgVGltZVJGQzExMjMgaGVyZT8gQnV0IHRoYXQgdXNlcyBHTVQgdG8gc2F0aXNmeSBIVFRQLzEuMQorLSAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBkYXRlc3RyOworLSAgIGRhdGVzdHIuaW1idWUocG9zaXgpOworLSAgIGRhdGVzdHIgPDwgc3RkOjpwdXRfdGltZShnbXRpbWUoJm5vdyksICIlYSwgJWQgJWIgJVkgJUg6JU06JVMgVVRDIik7CisrICAgc2V0bG9jYWxlKExDX1RJTUUsICJDIik7CisrCisrICAgY2hhciBkYXRlc3RyWzEyOF07CisrICAgaWYgKHN0cmZ0aW1lKGRhdGVzdHIsIHNpemVvZihkYXRlc3RyKSwgIiVhLCAlZCAlYiAlWSAlSDolTTolUyBVVEMiLAorKyAgICAgICAgICAgICAgICBnbXRpbWUoJm5vdykpID09IDApCisrICAgeworKyAgICAgIGRhdGVzdHJbMF0gPSAnXDAnOworKyAgIH0KKyAKKyAgICB0aW1lX3QgY29uc3QgdmFsaWR1bnRpbCA9IG5vdyArIF9jb25maWctPkZpbmRJKCJBUFQ6OkZUUEFyY2hpdmU6OlJlbGVhc2U6OlZhbGlkVGltZSIsIDApOworLSAgIHN0ZDo6b3N0cmluZ3N0cmVhbSB2YWxpZHN0cjsKKy0gICBpZiAodmFsaWR1bnRpbCAhPSBub3cpCisrICAgY2hhciB2YWxpZHN0clsxMjhdOworKyAgIGlmIChub3cgPT0gdmFsaWR1bnRpbCB8fAorKyAgICAgICBzdHJmdGltZSh2YWxpZHN0ciwgc2l6ZW9mKHZhbGlkc3RyKSwgIiVhLCAlZCAlYiAlWSAlSDolTTolUyBVVEMiLAorKyAgICAgICAgICAgICAgICBnbXRpbWUoJnZhbGlkdW50aWwpKSA9PSAwKQorICAgIHsKKy0gICAgICBkYXRlc3RyLmltYnVlKHBvc2l4KTsKKy0gICAgICB2YWxpZHN0ciA8PCBzdGQ6OnB1dF90aW1lKGdtdGltZSgmdmFsaWR1bnRpbCksICIlYSwgJWQgJWIgJVkgJUg6JU06JVMgVVRDIik7CisrICAgICAgdmFsaWRzdHJbMF0gPSAnXDAnOworICAgIH0KKyAKKysgICBzZXRsb2NhbGUoTENfVElNRSwgIiIpOworKworICAgIG1hcDxzdHJpbmcsc3RyaW5nPiBGaWVsZHM7CisgICAgRmllbGRzWyJPcmlnaW4iXSA9ICIiOworICAgIEZpZWxkc1siTGFiZWwiXSA9ICIiOworICAgIEZpZWxkc1siU3VpdGUiXSA9ICIiOworICAgIEZpZWxkc1siVmVyc2lvbiJdID0gIiI7CisgICAgRmllbGRzWyJDb2RlbmFtZSJdID0gIiI7CistICAgRmllbGRzWyJEYXRlIl0gPSBkYXRlc3RyLnN0cigpOworLSAgIEZpZWxkc1siVmFsaWQtVW50aWwiXSA9IHZhbGlkc3RyLnN0cigpOworKyAgIEZpZWxkc1siRGF0ZSJdID0gZGF0ZXN0cjsKKysgICBGaWVsZHNbIlZhbGlkLVVudGlsIl0gPSB2YWxpZHN0cjsKKyAgICBGaWVsZHNbIkFyY2hpdGVjdHVyZXMiXSA9ICIiOworICAgIEZpZWxkc1siQ29tcG9uZW50cyJdID0gIiI7CisgICAgRmllbGRzWyJEZXNjcmlwdGlvbiJdID0gIiI7CistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X1JldmVydC11c2UtZGUtbG9jYWxlZC1zdGQtcHV0X3RpbWUtaW5zdGVhZC1yb2xsaW5nLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9SZXZlcnQtdXNlLWRlLWxvY2FsZWQtc3RkLXB1dF90aW1lLWluc3RlYWQtcm9sbGluZy1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OGE2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9SZXZlcnQtdXNlLWRlLWxvY2FsZWQtc3RkLXB1dF90aW1lLWluc3RlYWQtcm9sbGluZy1vLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gYzcyZWY5YjZhZTgzYTBhMmZiYmVmZDVjMDUwMzM1ZjY1ZjBkMmJjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjIgQXVnIDIwMTcgMTE6NDg6NDYgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIFJldmVydCAidXNlIGRlLWxvY2FsZWQgc3RkOjpwdXRfdGltZSBpbnN0ZWFkIHJvbGxpbmcgb3VyCisgb3duIgorCitUaGlzIHJldmVydHMgY29tbWl0IDRlZDJhMTdhYjQzMzRmMDE5YzAwNTEyYWE1NGExNjJmMGJmMDgzYzQuCisKK0FmdGVyIHdlIGRyb3AgZGViaWFuOCBhbmQgY2VudG9zNyB0aGF0IGhhcyBnY2MgPCA1IChzdGQ6OnB1dF90aW1lIG5vdCBhdmFpbGFibGUpIAordmVyc2lvbnMgdGhpcyBwYXRjaCBjYW4gYmUgcmVtb3ZlLgorCitTaWduZWQtb2ZmLWJ5OiBBbmliYWwgTGltb24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBhcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjIHwgMTQgKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYyBiL2FwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2MKK2luZGV4IGMyZmYwMWQuLmU5ZWYyYmUgMTAwNjQ0CistLS0gYS9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjCisrKysgYi9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjCitAQCAtNzYwLDExICs3NjAsMTUgQEAgc3RyaW5nIFRpbWVSRkMxMTIzKHRpbWVfdCBEYXRlKQorICAgIGlmIChnbXRpbWVfcigmRGF0ZSwgJkNvbnYpID09IE5VTEwpCisgICAgICAgcmV0dXJuICIiOworIAorLSAgIGF1dG8gY29uc3QgcG9zaXggPSBzdGQ6OmxvY2FsZTo6Y2xhc3NpYygpOworLSAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBkYXRlc3RyOworLSAgIGRhdGVzdHIuaW1idWUocG9zaXgpOworLSAgIGRhdGVzdHIgPDwgc3RkOjpwdXRfdGltZSgmQ29udiwgIiVhLCAlZCAlYiAlWSAlSDolTTolUyBHTVQiKTsKKy0gICByZXR1cm4gZGF0ZXN0ci5zdHIoKTsKKysgICBjaGFyIEJ1ZlszMDBdOworKyAgIGNvbnN0IGNoYXIgKkRheVtdID0geyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQifTsKKysgICBjb25zdCBjaGFyICpNb250aFtdID0geyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJ9OworKworKyAgIHNucHJpbnRmKEJ1Ziwgc2l6ZW9mKEJ1ZiksICIlcywgJTAyaSAlcyAlaSAlMDJpOiUwMmk6JTAyaSBHTVQiLERheVtDb252LnRtX3dkYXldLAorKwkgICBDb252LnRtX21kYXksTW9udGhbQ29udi50bV9tb25dLENvbnYudG1feWVhcisxOTAwLENvbnYudG1faG91ciwKKysJICAgQ29udi50bV9taW4sQ29udi50bV9zZWMpOworKyAgIHJldHVybiBCdWY7CisgfQorIAkJCQkJCQkJCS8qfX19Ki8KKyAvLyBSZWFkTWVzc2FnZXMgLSBSZWFkIG1lc3NhZ2VzIGZyb20gdGhlIEZECQkJCS8qe3t7Ki8KKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfYXB0LXBrZy1jb250cmliLXN0cnV0bC5jYy1JbmNsdWRlLWFycmF5LWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X2FwdC1wa2ctY29udHJpYi1zdHJ1dGwuY2MtSW5jbHVkZS1hcnJheS1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IzMjU5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X2FwdC1wa2ctY29udHJpYi1zdHJ1dGwuY2MtSW5jbHVkZS1hcnJheS1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBmZjg1NjJmNzcyNGM0ZGI0YjgzNjM1YWY5ZTYyN2YzNDk1MjIyMzI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5pYmFsIExpbW9uIDxsaW1vbi5hbmliYWxAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyMiBBdWcgMjAxNyAwNDo0MTozMSAtMDUwMAorU3ViamVjdDogW1BBVENIIDEvM10gYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYzogSW5jbHVkZSBhcnJheSBoZWFkZXIKKworSWYgR0NDIHZlcnNpb24gaXMgbGVzcyB0aGFuIDUgdGhlIGFycmF5IGhlYWRlciBuZWVkcyB0byBiZSBpbmNsdWRlZAordG8gc3VwcG9ydCBzdGQ6OmFycmF5LgorCitBZnRlciB3ZSBkcm9wIGRlYmlhbjggYW5kIGNlbnRvczcgdGhhdCBoYXMgZ2NjIDwgNSB2ZXJzaW9ucyB0aGlzIHBhdGNoCitjYW4gYmUgcmVtb3ZlLgorCitTaWduZWQtb2ZmLWJ5OiBBbmliYWwgTGltb24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBhcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjIGIvYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYworaW5kZXggNjBkMGNhOC4uYzJmZjAxZCAxMDA2NDQKKy0tLSBhL2FwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2MKKysrKyBiL2FwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2MKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUgPHNzdHJlYW0+CisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8dmVjdG9yPgorKyNpbmNsdWRlIDxhcnJheT4KKyAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHRfMS4yLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMi4yNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMi4xMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMi4yNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxNi4wOS4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0ZGMzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJhIGNvbGxlY3Rpb24gb2YgZnJlZWx5IHJlLXVzYWJsZSBBdXRvY29uZiBtYWNyb3MiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtYXV0b2NvbmYtZXhjZXB0aW9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkVYQ0VQVElPTjttZDU9ZmRlZjE2OGViZmYzYmMyZjEzNjY0YzM2NWE1ZmI1MTUiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZjE5ZDRjZGRjZTI2MGIzYzNlMWQ1MWQ0MjUwOTA3MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlOGYyZWZkMjM1Zjg0MmJhZDJmNjkzOGJmNGE3MjI0MGE1ZTVmY2QyNDhlODQ0NDMzNWU2M2JlYjYwZmFiZDgyIgorCitpbmhlcml0IGF1dG90b29scworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCmluZGV4IGYxYjJkZmMuLmVhNjJkZjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCkBAIC0xLDQgKzEsNCBAQAotU1VNTUFSWSA9ICJBIEdOVSB0b29sIHRoYXQgcHJvY3VkZSBzaGVsbCBzY3JpcHRzIHRvIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlIHNvZnR3YXJlIgorU1VNTUFSWSA9ICJBIEdOVSB0b29sIHRoYXQgcHJvZHVjZSBzaGVsbCBzY3JpcHRzIHRvIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlIHNvZnR3YXJlIgogREVTQ1JJUFRJT04gPSAiQXV0b2NvbmYgaXMgYW4gZXh0ZW5zaWJsZSBwYWNrYWdlIG9mIE00IG1hY3JvcyB0aGF0IHByb2R1Y2Ugc2hlbGwgc2NyaXB0cyB0byBhdXRvbWF0aWNhbGx5IFwgCiBjb25maWd1cmUgc29mdHdhcmUgc291cmNlIGNvZGUgcGFja2FnZXMuIEF1dG9jb25mIGNyZWF0ZXMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBmb3IgYSBwYWNrYWdlIGZyb20gYSB0ZW1wbGF0ZSBcCiBmaWxlIHRoYXQgbGlzdHMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gZmVhdHVyZXMgdGhhdCB0aGUgcGFja2FnZSBjYW4gdXNlLCBpbiB0aGUgZm9ybSBvZiBNNCBtYWNybyBjYWxscy4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi1uYXRpdmVfNS4xOC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLW5hdGl2ZV81LjE4LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTM0NzdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLW5hdGl2ZV81LjE4LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJBdXRvbWF0ZWQgdGV4dCBhbmQgcHJvZ3JhbSBnZW5lcmF0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJBdXRvR2VuIGlzIGEgdG9vbCBkZXNpZ25lZCB0byBzaW1wbGlmeSB0aGUgY3JlYXRpb24gYW5kXAotIG1haW50ZW5hbmNlIG9mIHByb2dyYW1zIHRoYXQgY29udGFpbiBsYXJnZSBhbW91bnRzIG9mIHJlcGV0aXRpb3VzIHRleHQuXAotIEl0IGlzIGVzcGVjaWFsbHkgdmFsdWFibGUgaW4gcHJvZ3JhbXMgdGhhdCBoYXZlIHNldmVyYWwgYmxvY2tzIG9mIHRleHRcCi0gdGhhdCBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvZ2VuLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hdXRvZ2VuL3JlbCR7UFZ9L2F1dG9nZW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2luY3JlYXNlLXRpbWVvdXQtbGltaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWstdHBsLWNvbmZpZy5zaC1mb3JjZS1leGl0LXZhbHVlLXRvLWJlLTAtaW4tc3VicHJvYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc2NyaXB0LWVyci13aGVuLXByb2Nlc3NpbmctbGliZ3VpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWctbGlib3B0cy5tNC1yZWdlbmVyYXRlLWl0LWZyb20tY29uZmlnLWxpYm9wdHMuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItYXV0b29wdHMtbWstdHBsLWNvbmZpZy5zaC1maXgtcGVybC1wYXRoLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU1MWQxNWNjYmY1YjVmYzU2NThkYTM3NWQ1MDAzMzg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwNWMyMDE4MmYzY2IwZWJmMTU3MWQzYjAxOTcyODUxYzU2ZmIzNDM0OGRmZGMzODc5OWZkMGVjM2IyYmFkYmUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2F1dG9nZW4vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicmVsKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLQotREVQRU5EUyA9ICJndWlsZS1uYXRpdmUgbGlidG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbmF0aXZlIHBrZ2NvbmZpZwotCi0jIGF1dG9nZW4tbmF0aXZlIGxpbmtzIGFnYWluc3QgbGliZ3VpbGUgd2hpY2ggbWF5IGhhdmUgYmVlbiByZWxvY2F0ZWQgd2l0aCBzc3RhdGUKLSMgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGVuc3VyZSB0aGVyZSBpc24ndCBhIHJlbG9jYXRpb24gaXNzdWUKLWV4cG9ydCBHVUlMRV9MT0FEX1BBVEggPSAiJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9ndWlsZS8yLjAiCi1leHBvcnQgR1VJTEVfTE9BRF9DT01QSUxFRF9QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ndWlsZS8yLjAvY2NhY2hlIgotCi1leHBvcnQgUE9TSVhfU0hFTEwgPSAiL3Vzci9iaW4vZW52IHNoIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYXV0b2dlbiBcCi0JCUdVSUxFX0xPQURfUEFUSD0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2d1aWxlLzIuMCBcCi0JCUdVSUxFX0xPQURfQ09NUElMRURfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ3VpbGUvMi4wL2NjYWNoZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vMDAwMS1jb25maWctbGlib3B0cy5tNC1yZWdlbmVyYXRlLWl0LWZyb20tY29uZmlnLWxpYm9wdHMuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vMDAwMS1jb25maWctbGlib3B0cy5tNC1yZWdlbmVyYXRlLWl0LWZyb20tY29uZmlnLWxpYm9wdHMuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTQwMThlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLzAwMDEtY29uZmlnLWxpYm9wdHMubTQtcmVnZW5lcmF0ZS1pdC1mcm9tLWNvbmZpZy1saWJvcHRzLi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNDUwNDBlN2QyNjgzMjllYmM0MGU2Y2IyMzdjNjRhNjYzN2NmYWI1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMyBNYXIgMjAxNyAyMDoyMjoxMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBjb25maWcvbGlib3B0cy5tNDogcmVnZW5lcmF0ZSBpdCBmcm9tIGNvbmZpZy9saWJvcHRzLmRlZgotCi1JdCB3YXMgb3V0IG9mIGRhdGUgY29tcGFyZWQgdG8gY29uZmlnL2xpYm9wdHMuZGVmLCBzbyByZWdlbmVyYXRlIGl0IHZpYQotImF1dG9nZW4gY29uZmlnL2xpYm9wdHMuZGVmIiBjb21tYW5kLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWcvbGlib3B0cy5tNCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlnL2xpYm9wdHMubTQgYi9jb25maWcvbGlib3B0cy5tNAotaW5kZXggYzdiYTRmMy4uNTFlNmEzOSAxMDA2NDQKLS0tLSBhL2NvbmZpZy9saWJvcHRzLm00Ci0rKysgYi9jb25maWcvbGlib3B0cy5tNAotQEAgLTIsNyArMiw3IEBAIGRubCAgLSotIGJ1ZmZlci1yZWFkLW9ubHk6IHQgLSotIHZpOiBzZXQgcm86Ci0gZG5sCi0gZG5sIERPIE5PVCBFRElUIFRISVMgRklMRSAgIChsaWJvcHRzLm00KQotIGRubAotLWRubCBJdCBoYXMgYmVlbiBBdXRvR2VuLWVkCi0rZG5sIEl0IGhhcyBiZWVuIEF1dG9HZW4tZWQgIE1hcmNoIDEzLCAyMDE3IGF0IDA4OjIxOjIxIFBNIGJ5IEF1dG9HZW4gNS4xOAotIGRubCBGcm9tIHRoZSBkZWZpbml0aW9ucyAgICBsaWJvcHRzLmRlZgotIGRubCBhbmQgdGhlIHRlbXBsYXRlIGZpbGUgICBjb25mdGVzdC50cGwKLSBkbmwKLUBAIC0xMTQsNiArMTE0LDcgQEAgQUNfREVGVU4oW0lOVk9LRV9MSUJPUFRTX01BQ1JPU19GSVJTVF0sWwotICAgQUNfUFJPR19TRUQKLSAgIFt3aGlsZSA6Ci0gICBkbwotKyAgICAgIHRlc3QgLXggIiRQT1NJWF9TSEVMTCIgJiYgYnJlYWsKLSAgICAgICBQT1NJWF9TSEVMTD1gd2hpY2ggYmFzaGAKLSAgICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0gICAgICAgUE9TSVhfU0hFTEw9YHdoaWNoIGRhc2hgCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi8wMDAyLWF1dG9vcHRzLW1rLXRwbC1jb25maWcuc2gtZml4LXBlcmwtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLzAwMDItYXV0b29wdHMtbWstdHBsLWNvbmZpZy5zaC1maXgtcGVybC1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWZlMTQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLzAwMDItYXV0b29wdHMtbWstdHBsLWNvbmZpZy5zaC1maXgtcGVybC1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA5ZjY5ZjNmNWVmMjJiZjFiY2ZmYjBlNjUxZWZjMjYwODg5Y2ZhYTQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDEzIE1hciAyMDE3IDIwOjMzOjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF1dG9vcHRzL21rLXRwbC1jb25maWcuc2g6IGZpeCBwZXJsIHBhdGgKLQotVXNlICJ3aGljaCBwZXJsIiBhcyBzaGViYW5nIGRvZXNuJ3Qgd29yayB3aGVuIGl0IGlzIGxvbmdlciB0aGFuCi1CSU5QUk1fQlVGX1NJWkUgd2hpY2ggaXMgMTI4IHVzdWFsbHkuIFNvIHVzZSAiL3Vzci9iaW4vZW52IHBlcmwiIHRvCi1pbnN0ZWFkIG9mLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBhdXRvb3B0cy9tay10cGwtY29uZmlnLnNoIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXV0b29wdHMvbWstdHBsLWNvbmZpZy5zaCBiL2F1dG9vcHRzL21rLXRwbC1jb25maWcuc2gKLWluZGV4IDA5M2U4MDguLjhkZmM2ZGQgMTAwNzU1Ci0tLS0gYS9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoCi0rKysgYi9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoCi1AQCAtOTgsNyArOTgsNyBAQCBmaXhfc2NyaXB0cygpIHsKLSAgICAgICAgIHN0PWBzZWQgMXEgJGZgCi0gCi0gICAgICAgICBjYXNlICIkc3QiIGluCi0tICAgICAgICAqcGVybCApIGVjaG8gJyMhJyBgd2hpY2ggcGVybGAKLSsgICAgICAgICpwZXJsICkgZWNobyAnIyEvdXNyL2Jpbi9lbnYgcGVybCcKLSAgICAgICAgICAgICAgICAgIHNlZCAxZCAkZgotICAgICAgICAgICAgICAgICAgOzsKLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL2ZpeC1zY3JpcHQtZXJyLXdoZW4tcHJvY2Vzc2luZy1saWJndWlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL2ZpeC1zY3JpcHQtZXJyLXdoZW4tcHJvY2Vzc2luZy1saWJndWlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk0YTM5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9maXgtc2NyaXB0LWVyci13aGVuLXByb2Nlc3NpbmctbGliZ3VpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1hdXRvZ2VuLW5hdGl2ZTogZml4IHNjcmlwdCBlcnIgd2hlbiBwcm9jZXNzaW5nIGxpYmd1aWxlCi0KLWRvX2NvbmZpZ3VyZSBmb3IgYXV0b2dlbiB3aWxsIGZhaWwgaWYgcHJvamVjdCBkaXJlY3RvcnkgcGF0aAotY29udGFpbnMgJy1JJyBjaGFyYWN0ZXIsIHdoaWNoIGlzIGNhdXNlZCBieSB0aGUgdW5zdWl0YWJsZSBzZWQKLXNjcmlwdCB3aGVuIHByb2Nlc3NpbmcgbGliZ3VpbGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBaaGVuYm8gR2FvIDx6aGVuYm8uZ2FvQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWcvYWdfbWFjcm9zLm00IGIvY29uZmlnL2FnX21hY3Jvcy5tNAotaW5kZXggNTgxODZiNi4uNThlZDJhZCAxMDA2NDQKLS0tLSBhL2NvbmZpZy9hZ19tYWNyb3MubTQKLSsrKyBiL2NvbmZpZy9hZ19tYWNyb3MubTQKLUBAIC0zMiw3ICszMiw3IEBAIEFDX0RFRlVOKFtJTlZPS0VfQUdfTUFDUk9TX0xBU1RdLFsKLSAgIEdVSUxFX0ZMQUdTCi0gICBbYWdfZ3Y9YGdkaXI9XGBwa2ctY29uZmlnIC0tY2ZsYWdzLW9ubHktSSBcCi0gICBndWlsZS0ke0dVSUxFX0VGRkVDVElWRV9WRVJTSU9OfSB8IFwKLS0gIHNlZCAncy8tSSAqLy87cy8gKi1JLiovIC9nJ1xgCi0rICBzZWQgJ3MvICotSSAqXC8vIFwvL2cnXGAKLSAgIGZvciBkIGluICRnZGlyCi0gICBkbyAgdGVzdCAtZiAiJGQvbGliZ3VpbGUvdmVyc2lvbi5oIiAmJiBnZGlyPSRkICYmIGJyZWFrCi0gICBkb25lCi1kaWZmIC0tZ2l0IGEvY29uZmlnL21pc2MuZGVmIGIvY29uZmlnL21pc2MuZGVmCi1pbmRleCA0OTBkMzYxLi42ZTE4M2VmIDEwMDY0NAotLS0tIGEvY29uZmlnL21pc2MuZGVmCi0rKysgYi9jb25maWcvbWlzYy5kZWYKLUBAIC0zNDIsNyArMzQyLDcgQEAgZG8tYWx3YXlzID0gPDwtIF9FTkRfQUxXQVlTXwotIAlHVUlMRV9GTEFHUwotIAlbYWdfZ3Y9YGdkaXI9XGBwa2ctY29uZmlnIC0tY2ZsYWdzLW9ubHktSSBcCi0gCQkJZ3VpbGUtJHtHVUlMRV9FRkZFQ1RJVkVfVkVSU0lPTn0gfCBcCi0tCQkJc2VkICdzLy1JICovLztzLyAqLUkuKi8gL2cnXGAKLSsJCQlzZWQgJ3MvICotSSAqXC8vIFwvL2cnXGAKLSAJCXRlc3QgLXogIiRnZGlyIiAmJiBnZGlyPS91c3IvaW5jbHVkZQotIAkJZm9yIGQgaW4gJGdkaXIKLSAJCWRvICB0ZXN0IC1mICIkZC9saWJndWlsZS92ZXJzaW9uLmgiICYmIGdkaXI9JGQgJiYgYnJlYWsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL2luY3JlYXNlLXRpbWVvdXQtbGltaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9pbmNyZWFzZS10aW1lb3V0LWxpbWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWZkN2U1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL2luY3JlYXNlLXRpbWVvdXQtbGltaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIGF1dG9nZW46IGluY3JlYXNlIHRpbWVvdXQgbGltaXQgZm9yIHNoZWxsIGNvbW1hbmRzCi0KLU9uIHNvbWUgb3ZlcmxvYWRlZCBob3N0cywgc2hlbGwgY29tbWFuZHMgb2YgYXV0b2dlbiBtYXkgY2FuIG5vdAotZmluaXNoIGluIDUgc2Vjcy4gVGhpcyBoYXMgY2F1c2VkIG1hbnkgYnVpbGQgZmFpbHVyZXMsIHNvIGluY3JlYXNlCi10aGUgdGltZW91dCBsaW1pdCB0byBmaXggdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBYaW4gT3V5YW5nIDxYaW4uT3V5YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAgICA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDU4YTg0OGIuLjE3MGRkOWUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE3OCw5ICsxNzgsOSBAQCB0aW1lX2RlbHRhPWBleHByICR7Y29uZmlnX2VuZF90aW1lfSAtICR7Y29uZmlnX3N0YXJ0X3RpbWV9IDI+L2Rldi9udWxsYAotIGlmIHRlc3QgLXogIiR7QUdfVElNRU9VVH0iCi0gdGhlbgotICAgaWYgdGVzdCAteiAiJHt0aW1lX2RlbHRhfSIKLS0gIHRoZW4gdGltZV9kZWx0YT0xMAotLSAgZWxpZiB0ZXN0ICR7dGltZV9kZWx0YX0gLWx0IDUKLS0gIHRoZW4gdGltZV9kZWx0YT01IDsgZmkKLSsgIHRoZW4gdGltZV9kZWx0YT02MAotKyAgZWxpZiB0ZXN0ICR7dGltZV9kZWx0YX0gLWx0IDMwCi0rICB0aGVuIHRpbWVfZGVsdGE9MzAgOyBmaQotIAotICAgQUdfVElNRU9VVD0ke3RpbWVfZGVsdGF9Ci0gZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL21rLXRwbC1jb25maWcuc2gtZm9yY2UtZXhpdC12YWx1ZS10by1iZS0wLWluLXN1YnByb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9tay10cGwtY29uZmlnLnNoLWZvcmNlLWV4aXQtdmFsdWUtdG8tYmUtMC1pbi1zdWJwcm9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTZkYTdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL21rLXRwbC1jb25maWcuc2gtZm9yY2UtZXhpdC12YWx1ZS10by1iZS0wLWluLXN1YnByb2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotbWstdHBsLWNvbmZpZy5zaDogZm9yY2UgZXhpdCB2YWx1ZSB0byBiZSAwIGluIHN1YnByb2Nlc3MKLQotVGhlIHJldHVybiB2YWx1ZSBvZiBzdGF0ZW1lbnQgbGlzdD1gPHN1YmNvbW1hbmRzPmAgaXMgdGhlIGV4aXQgdmFsdWUgb2YgdGhlCi1zdWJjb21tYW5kcy4gU28gaWYgdGhlIHN1YmNvbW1hbmRzIGZhaWxzLCB0aGUgY29tcGlsYXRpb24gZmFpbHMuIFRoaXMgaXMgb2J2aW91c2x5Ci1ub3QgaW50ZW5kZWQuIEluIHRoZSBub3JtYWwgY2FzZSwgd2UgZXhwZWN0IHRoZSBncmVwIGNvbW1hbmQgdG8gZmFpbCBhcyB0aGVyZSBzaG91bGQKLWJlIG5vICdub3JldHVybicgd29yZCBpbiB0aGUgbGliZ3VpbGUgZmlsZXMuCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGF1dG9vcHRzL21rLXRwbC1jb25maWcuc2ggfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoIGIvYXV0b29wdHMvbWstdHBsLWNvbmZpZy5zaAotaW5kZXggOTI2ZjVhYi4uNmI0YTBmYiAxMDA3NTUKLS0tLSBhL2F1dG9vcHRzL21rLXRwbC1jb25maWcuc2gKLSsrKyBiL2F1dG9vcHRzL21rLXRwbC1jb25maWcuc2gKLUBAIC0yMDIsNyArMjAyLDcgQEAgZml4X2d1aWxlKCkgewotIAotICAgICBsaXN0PWBzZXQgK2UgOyBleGVjIDI+L2Rldi9udWxsCi0gICAgICAgICBmaW5kICR7bGliZ3VpbGVkaXJ9L2xpYmd1aWxlKiAtdHlwZSBmIHwgXAotLSAgICAgICAgICAgIHhhcmdzIGdyZXAgLWwgLUUgJ1w8bm9yZXR1cm5cPidgCi0rICAgICAgICAgICAgeGFyZ3MgZ3JlcCAtbCAtRSAnXDxub3JldHVyblw+JyA7IGV4aXQgMGAKLSAKLSAgICAgdGVzdCAteiAiJGxpc3QiICYmIGV4aXQgMAotIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvMDAwMS1hdXRvbWFrZS1BZGQtZGVmYXVsdC1saWJ0b29sX3RhZy10by1jcHBhc20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMjFmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMjVhOGFjMzA0ODY3OThkMjNmNTE2NzIyZDczZWI2MjJlNjI2NGYyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI2IEp1bCAyMDE3IDExOjE5OjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGF1dG9tYWtlOiBBZGQgZGVmYXVsdCBsaWJ0b29sX3RhZyB0byBjcHBhc20uCisKKyAgICAqIGJpbi9hdXRvbWFrZS5pbiAocmVnaXN0ZXJfbGFuZ3VhZ2UpOiBEZWZpbmUgZGVmYXVsdCBsaWJ0b29sIHRhZyB0byBiZSBDQworICAgIHNpbmNlIENQUEFTQ09NUElMRSBpcyB1c2luZyBDQyB0byBjYWxsIGFzc2VtYmxlcgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgYmluL2F1dG9tYWtlLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK0luZGV4OiBhdXRvbWFrZS0xLjE1LjEvYmluL2F1dG9tYWtlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXV0b21ha2UtMS4xNS4xLm9yaWcvYmluL2F1dG9tYWtlLmluCisrKysgYXV0b21ha2UtMS4xNS4xL2Jpbi9hdXRvbWFrZS5pbgorQEAgLTgzMSw2ICs4MzEsNyBAQCByZWdpc3Rlcl9sYW5ndWFnZSAoJ25hbWUnID0+ICdjcHBhc20nLAorIAkJICAgJ2NvbXBpbGVyJyA9PiAnQ1BQQVNDT01QSUxFJywKKyAJCSAgICdjb21waWxlX2ZsYWcnID0+ICctYycsCisgCQkgICAnb3V0cHV0X2ZsYWcnID0+ICctbycsCisrCQkgICAnbGlidG9vbF90YWcnID0+ICdDQycsCisgCQkgICAnZXh0ZW5zaW9ucycgPT4gWycuUycsICcuc3gnXSk7CisgCisgIyBGb3J0cmFuIDc3CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtcG9ydC10by1QZXJsLTUuMjItYW5kLWxhdGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWF1dG9tYWtlLXBvcnQtdG8tUGVybC01LjIyLWFuZC1sYXRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU2ODk1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtcG9ydC10by1QZXJsLTUuMjItYW5kLWxhdGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSAxM2YwMGViNDQ5M2MyMTcyNjliNzY2MTQ3NTllNDUyZDgzMDI5NTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLURhdGU6IFRodSwgMzEgTWFyIDIwMTYgMTY6MzU6MjkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXV0b21ha2U6IHBvcnQgdG8gUGVybCA1LjIyIGFuZCBsYXRlcgotCi1XaXRob3V0IHRoaXMgY2hhbmdlLCBQZXJsIDUuMjIgY29tcGxhaW5zICJVbmVzY2FwZWQgbGVmdCBicmFjZSBpbgotcmVnZXggaXMgZGVwcmVjYXRlZCIgYW5kIHRoaXMgaXMgcGxhbm5lZCB0byBiZWNvbWUgYSBoYXJkIGVycm9yIGluCi1QZXJsIDUuMjYuICBTZWU6Ci1odHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvcGVybC01LjIyLjAvcG9kL3BlcmxkZWx0YS5wb2QjQV9saXRlcmFsXyUyMnslMjJfc2hvdWxkX25vd19iZV9lc2NhcGVkX2luX2FfcGF0dGVybgotKiBiaW4vYXV0b21ha2UuaW4gKHN1YnN0aXR1dGVfYWNfc3Vic3RfdmFyaWFibGVzKTogRXNjYXBlIGxlZnQgYnJhY2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzEzZjAwZWI0NDkzYzIxNzI2OWI3NjYxNDc1OWU0NTJkODMwMjk1NWVdCi0tLS0KLSBiaW4vYXV0b21ha2UuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vYXV0b21ha2UuaW4gYi9iaW4vYXV0b21ha2UuaW4KLWluZGV4IGEzYTBhYTMxOC4uMmM4ZjMxZTE0IDEwMDY0NAotLS0tIGEvYmluL2F1dG9tYWtlLmluCi0rKysgYi9iaW4vYXV0b21ha2UuaW4KLUBAIC0zODc4LDcgKzM4NzgsNyBAQCBzdWIgc3Vic3RpdHV0ZV9hY19zdWJzdF92YXJpYWJsZXNfd29ya2VyCi0gc3ViIHN1YnN0aXR1dGVfYWNfc3Vic3RfdmFyaWFibGVzCi0gewotICAgbXkgKCR0ZXh0KSA9IEBfOwotLSAgJHRleHQgPX4gcy9cJHsoW14gXHQ9Oit7fV0rKX0vc3Vic3RpdHV0ZV9hY19zdWJzdF92YXJpYWJsZXNfd29ya2VyICgkMSkvZ2U7Ci0rICAkdGV4dCA9fiBzL1wkW3tdKFteIFx0PTore31dKyl9L3N1YnN0aXR1dGVfYWNfc3Vic3RfdmFyaWFibGVzX3dvcmtlciAoJDEpL2dlOwotICAgcmV0dXJuICR0ZXh0OwotIH0KLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE1LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5YjYxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS4xLmJiCkBAIC0wLDAgKzEsNDMgQEAKK3JlcXVpcmUgYXV0b21ha2UuaW5jCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJhdXRvY29uZi1uYXRpdmUiCisKK05BTUVWRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBhdXRvY29uZiBcCisgICAgcGVybCBcCisgICAgcGVybC1tb2R1bGUtYnl0ZXMgXAorICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKKyAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAorICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCisgICAgcGVybC1tb2R1bGUtdGhyZWFkLXF1ZXVlIFwKKyAgICBwZXJsLW1vZHVsZS10aHJlYWRzIFwKKyAgICBwZXJsLW1vZHVsZS12YXJzICIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gImF1dG9jb25mLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstYXV0b2NvbmYiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9weXRob24tbGliZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9idWlsZHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3BlcmZvcm1hbmNlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9uZXdfcnRfcGF0aF9mb3JfdGVzdC1kcml2ZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF1dG9tYWtlLUFkZC1kZWZhdWx0LWxpYnRvb2xfdGFnLXRvLWNwcGFzbS5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NWRmM2YyZDZlYjhmODFlNzBiOGNiNjNhOTNjODg1MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODhlMzI1MjdhYmUwNTIzMDdkMjFjOGNhMDAwYWEyMzhiOTE0ZGYzNjNhNjE3ZTM4ZjRmYjg5ZjVhYmY2MjYwIgorCitQRVJMID0gIiR7VVNSQklOUEFUSH0vcGVybCIKK1BFUkxfY2xhc3MtbmF0aXZlID0gIiR7VVNSQklOUEFUSH0vZW52IHBlcmwiCitQRVJMX2NsYXNzLW5hdGl2ZXNkayA9ICIke1VTUkJJTlBBVEh9L2VudiBwZXJsIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScke1BFUkx9JyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDJkZDYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXJlcXVpcmUgYXV0b21ha2UuaW5jCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJhdXRvY29uZi1uYXRpdmUiCi0KLU5BTUVWRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBhdXRvY29uZiBcCi0gICAgcGVybCBcCi0gICAgcGVybC1tb2R1bGUtYnl0ZXMgXAotICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKLSAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAotICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCi0gICAgcGVybC1tb2R1bGUtdGhyZWFkLXF1ZXVlIFwKLSAgICBwZXJsLW1vZHVsZS10aHJlYWRzIFwKLSAgICBwZXJsLW1vZHVsZS12YXJzICIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gImF1dG9jb25mLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstYXV0b2NvbmYiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9weXRob24tbGliZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9idWlsZHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BlcmZvcm1hbmNlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uZXdfcnRfcGF0aF9mb3JfdGVzdC1kcml2ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF1dG9tYWtlLXBvcnQtdG8tUGVybC01LjIyLWFuZC1sYXRlci5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MTY5NDZhMTA1Y2EyMjhhYjU0NWZjMzdhNzBkZjNhMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OTQ2ZTk0NWE5NmUyODE1MmJhNWE2YmViMDYyNWNhNzE1YzZlMzJhYzU1ZjJlMzUzZWY1NGRlZjBjOGVkOTI0IgotCi1QRVJMID0gIiR7VVNSQklOUEFUSH0vcGVybCIKLVBFUkxfY2xhc3MtbmF0aXZlID0gIiR7VVNSQklOUEFUSH0vZW52IHBlcmwiCi1QRVJMX2NsYXNzLW5hdGl2ZXNkayA9ICIke1VTUkJJTlBBVEh9L2VudiBwZXJsIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScke1BFUkx9JyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI4LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ODRjNTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI4LmluYworKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUxJQ19GSUxFU19DSEtTVU09IlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAotICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAotICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgIgotCi1kZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgotCi1TUkNSRVYgPSAiMzU0MTk5Yzc2OTJjMWJlZDUzYTJhMTVmMGU0ZDUzMTQ1N2U5NWYxNyIKLVNSQ19VUkkgPSAiXAotICAgICBnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9YmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaDtwcm90b2NvbD1naXQgXAotICAgICBmaWxlOi8vMDAwMy1ncHJvZi1hZGQtdWNsaWJjLXN1cHBvcnQtdG8tY29uZmlndXJlLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDYtRXhwbGljaXRseS1saW5rLXdpdGgtbGlibS1vbi11Y2xpYmMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOC1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOS1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTAtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDExLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTItQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMy1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTQtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTYtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctNjk2NS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy02OTY2LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTctYmZkLUltcHJvdmUtbG9va3VwLW9mLWZpbGUtbGluZS1pbmZvcm1hdGlvbi1mb3ItZXJyby5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE4LVBSLTIxNDA5LXNlZ2ZhdWx0LWluLV9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTY5NjkucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctNjk2OV8yLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTcyMDkucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctNzIxMC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy03MjIzLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTc2MTQucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctODM5My5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy04Mzk0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTgzOTUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctODM5Nl84Mzk3LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTgzOTgucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctODQyMS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05MDM4XzkwNDQucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTAzOS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05MDQwXzkwNDIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc0Mi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzQ0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NDUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc0Ni5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzQ3LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NDgucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc0OS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzUwLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NTEucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc1Mi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzUzLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NTUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc1Ni5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfMS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV8zLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfNC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV82LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfNy5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzgucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV85LnBhdGNoIFwKLSIKLVMgID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIHJtIC1yZiAke1N9L2dkYiAke1N9L2xpYmRlY251bWJlciAke1N9L3JlYWRsaW5lICR7U30vc2ltCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjkuMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjkuMS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdhNzJlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOS4xLmluYwpAQCAtMCwwICsxLDQzIEBACitMSUNfRklMRVNfQ0hLU1VNPSJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKKyAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKKyAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICIKKworZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKK0JJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKKworU1JDUkVWID89ICI5MDI3NmYxNTM3OWQzODA3NjFmYzQ5OWRhMmJhMjRjZmIzYzEyYTk0IgorQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPWJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2g7cHJvdG9jb2w9Z2l0IgorU1JDX1VSSSA9ICJcCisgICAgICR7QklOVVRJTFNfR0lUX1VSSX0gXAorICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCisiCitTICA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICAgICBybSAtcmYgJHtTfS9nZGIgJHtTfS9saWJkZWNudW1iZXIgJHtTfS9yZWFkbGluZSAke1N9L3NpbQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjI5LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjI5LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4yOS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4yOS4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI4LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjkuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAppbmRleCA4ZmIxYjRlLi4wYjUxNWQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjg5ZDAxMTY4OGI1ZmY5NDgxZDQzNjdiZWYzZGVhN2E3YjI4NjdmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNThhYzlmOTVhM2Q4M2MyOWVmYWY3YTg5MDZmYjZhZWZlYThjOGU3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NTg6NTQgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwMS8xNV0gYmludXRpbHMtY3Jvc3NzZGs6IEdlbmVyYXRlIHJlbG9jYXRhYmxlIFNES3MKQEAgLTQzLDcgKzQzLDcgQEAKICBMRF9GTEFHPQogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRffQogZGlmZiAtLWdpdCBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYyBiL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwotaW5kZXggZTY1ZjlhM2NjZi4uZDk5ZDJjMWQyYSAxMDA2NDQKK2luZGV4IGQ5MTM4YmMwNTkuLmU0OGZhZWNhNDMgMTAwNjQ0CiAtLS0gYS9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKICsrKyBiL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwogQEAgLTEzOCw4ICsxMzgsOCBAQCBpZiB0ZXN0IC16ICIkREFUQV9TRUdNRU5UX0FMSUdOIjsgdGhlbgpAQCAtNTgsNSArNTgsNSBAQAogIGlmIHRlc3QgLXogIiRQTFQiOyB0aGVuCiAgICBJUExUPSIuaXBsdCAgICAgICAgICR7UkVMT0NBVElORy0wfSA6IHsgKiguaXBsdCkgfSIKIC0tIAotMi4xMi4wCisyLjE0LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAppbmRleCAxNDI5OWZkLi4zNzAzMzNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gN2M3ZGUxMDdiNGIwYTUwN2QyYWVjYTNlM2E4NmQwMWNiNGI1MTM2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGY5MjljNjE2MjA4MzUxZDA5NzFkN2RmZDc1NzRkNDhkMzE0NDYwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6Mzc6MDUgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSCAwMi8xNV0gYmludXRpbHMtY3Jvc3M6IERvIG5vdCBnZW5lcmF0ZSBsaW5rZXIgc2NyaXB0CkBAIC01Nyw1ICs1Nyw1IEBACiAgICBsaWJzPSR7TkFUSVZFX0xJQl9ESVJTfQogICAgaWYgWyAieCR7TkFUSVZFfSIgPSAieHllcyIgXSA7IHRoZW4KIC0tIAotMi4xMi4wCisyLjE0LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YzA5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSBlNWE4MDZhYWUwMmExMDI5MGM3MWRlYjcyZjYyOTRjOTgwNjgzNjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowNzozMyArMDAwMAorU3ViamVjdDogW1BBVENIIDAzLzE1XSBjb25maWd1cmU6IHdpZGVuIHRoZSByZWdleHAgZm9yIFNIIGFyY2hpdGVjdHVyZXMKKworZ3Byb2YgbmVlZHMgdG8ga25vdyBhYm91dCB1Y2xpYmMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUgICAgICAgfCAyICstCisgZ3Byb2YvY29uZmlndXJlIHwgNSArKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGJlOWRkODlkOWIuLmQ4YWYxNTVhYjUgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTM4NDQsNyArMzg0NCw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgIG9yMWsqLSotKikKKyAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIGdkYiIKKyAgICAgOzsKKy0gIHNoLSotKikKKysgIHNoKi0qLSogfCBzaDY0LSotKikKKyAgICAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgICAgIHNoKi0qLWVsZikKKyAgICAgICAgICA7OworZGlmZiAtLWdpdCBhL2dwcm9mL2NvbmZpZ3VyZSBiL2dwcm9mL2NvbmZpZ3VyZQoraW5kZXggZTcxZmU4YjllNC4uNjc5ZTBkY2U3NyAxMDA3NTUKKy0tLSBhL2dwcm9mL2NvbmZpZ3VyZQorKysrIGIvZ3Byb2YvY29uZmlndXJlCitAQCAtNTg3NCw2ICs1ODc0LDExIEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgICA7OworIAorK2xpbnV4LXVjbGliYyopCisrICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorKyAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL2xpYi9saWJ1Q2xpYmMtKi5zb2AKKysgIDs7CisrCisgbmV0YnNkKikKKyAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJworLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWdwcm9mLWFkZC11Y2xpYmMtc3VwcG9ydC10by1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtZ3Byb2YtYWRkLXVjbGliYy1zdXBwb3J0LXRvLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRkYjQyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtZ3Byb2YtYWRkLXVjbGliYy1zdXBwb3J0LXRvLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNzg5M2QyYjI0ZDAzMDNiZGEzYTAwNDk4NDY0ODk2MTlmZmQxMzg3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xNV0gZ3Byb2Y6IGFkZCB1Y2xpYmMgc3VwcG9ydCB0byBjb25maWd1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBncHJvZi9jb25maWd1cmUgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCA5ZTZiOGYzNTI1Li4zOGE0YzBiMGU1IDEwMDc1NQotLS0tIGEvZ3Byb2YvY29uZmlndXJlCi0rKysgYi9ncHJvZi9jb25maWd1cmUKLUBAIC01ODc0LDYgKzU4NzQsMTEgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgIDs7Ci0gCi0rbGludXgtdWNsaWJjKikKLSsgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0rICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAotKyAgOzsKLSsKLSBuZXRic2QqKQotICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKaW5kZXggYzZiOWRlNy4uMzhlZWUzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTM0NjUwYzUwNTc0YThhMzlkNjk0NTY3ZWQ2MDdhNjMwMDZiNmY5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzYzNGVjMzU0N2JjMGY4YTVkMWI4YWQxNTM2NWUyZjgzNmNkYTY0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDk6NTggKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNC8xNV0gUG9pbnQgc2NyaXB0cyBsb2NhdGlvbiB0byBsaWJkaXIKQEAgLTEyLDcgKzEyLDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KLWluZGV4IDE1YmVhYTcwMjEuLmJiZjljNjcxZDggMTAwNjQ0CitpbmRleCA2MjUzNDdmZjYyLi5kNTMzNGQyNjgxIDEwMDY0NAogLS0tIGEvbGQvTWFrZWZpbGUuYW0KICsrKyBiL2xkL01ha2VmaWxlLmFtCiBAQCAtNTcsNyArNTcsNyBAQCBlbmRpZgpAQCAtMjUsMTAgKzI1LDEwIEBACiAgRU1VTCA9IEBFTVVMQAogIEVNVUxBVElPTl9PRklMRVMgPSBARU1VTEFUSU9OX09GSUxFU0AKIGRpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5pbiBiL2xkL01ha2VmaWxlLmluCi1pbmRleCAwNDJiNjkwZWQ2Li4zN2U3YjI1ZTlhIDEwMDY0NAoraW5kZXggYmEyNTE3NzdiMC4uYTJjZjIyODJiNSAxMDA2NDQKIC0tLSBhL2xkL01ha2VmaWxlLmluCiArKysgYi9sZC9NYWtlZmlsZS5pbgotQEAgLTQ1Miw3ICs0NTIsNyBAQCBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCitAQCAtNDQ2LDcgKzQ0Niw3IEBAIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKICAjIFdlIHB1dCB0aGUgc2NyaXB0cyBpbiB0aGUgZGlyZWN0b3J5ICQoc2NyaXB0ZGlyKS9sZHNjcmlwdHMuCiAgIyBXZSBjYW4ndCBwdXQgdGhlIHNjcmlwdHMgaW4gJChkYXRhZGlyKSBiZWNhdXNlIHRoZSBTRUFSQ0hfRElSCiAgIyBkaXJlY3RpdmVzIG5lZWQgdG8gYmUgZGlmZmVyZW50IGZvciBuYXRpdmUgYW5kIGNyb3NzIGxpbmtlcnMuCkBAIC0zOCw1ICszOCw1IEBACiAgQkZERElSID0gJChCQVNFRElSKS9iZmQKICBJTkNESVIgPSAkKEJBU0VESVIpL2luY2x1ZGUKIC0tIAotMi4xMi4wCisyLjE0LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAppbmRleCA3MjZmNzAyLi41OTE1MGEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNDIyOTJmNTUzM2JjYTkwNGYyMzBhOGUwM2NlZWUxZjg0ZWYwYzRlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWQzN2M4ZjY4YzA3ZGE2MzE4NmNiOTkzZjEyMjFmNmMxMWVjYTQyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mjc6MTcgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNS8xNV0gT25seSBnZW5lcmF0ZSBhbiBSUEFUSCBlbnRyeSBpZiBMRF9SVU5fUEFUSCBpcyBub3QKQEAgLTE1LDE5ICsxNSwxOSBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbSBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotaW5kZXggODRhZGFlZjZkZi4uYWI4Yzc0MjU3ZSAxMDA2NDQKK2luZGV4IDlhYzE4NDAzMTYuLjlkYzRjMTQ5YmMgMTAwNjQ0CiAtLS0gYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KICsrKyBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotQEAgLTE0MTEsNiArMTQxMSw4IEBAIGZyYWdtZW50IDw8RU9GCitAQCAtMTQ2Myw2ICsxNDYzLDggQEAgZnJhZ21lbnQgPDxFT0YKICAJICAgICAgJiYgY29tbWFuZF9saW5lLnJwYXRoID09IE5VTEwpCiAgCSAgICB7Ci0gCSAgICAgIGxpYl9wYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKLSsJICAgICAgaWYgKChsaWJfcGF0aCkgJiYgKHN0cmxlbiAobGliX3BhdGgpID09IDApKQotKwkJICBsaWJfcGF0aCA9IE5VTEw7Ci0gCSAgICAgIGlmIChnbGQke0VNVUxBVElPTl9OQU1FfV9zZWFyY2hfbmVlZGVkIChsaWJfcGF0aCwgJm4sCi0gCQkJCQkJICAgICAgZm9yY2UpKQorIAkgICAgICBwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKKysJICAgICAgaWYgKChwYXRoKSAmJiAoc3RybGVuIChwYXRoKSA9PSAwKSkKKysJCSAgcGF0aCA9IE5VTEw7CisgCSAgICAgIGlmIChwYXRoCisgCQkgICYmIGdsZCR7RU1VTEFUSU9OX05BTUV9X3NlYXJjaF9uZWVkZWQgKHBhdGgsICZuLCBmb3JjZSkpCiAgCQlicmVhazsKLUBAIC0xNjkyLDYgKzE2OTQsOCBAQCBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKK0BAIC0xNzQwLDYgKzE3NDIsOCBAQCBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKICAgIHJwYXRoID0gY29tbWFuZF9saW5lLnJwYXRoOwogICAgaWYgKHJwYXRoID09IE5VTEwpCiAgICAgIHJwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKQEAgLTM3LDUgKzM3LDUgQEAKICAgIGZvciAoYWJmZCA9IGxpbmtfaW5mby5pbnB1dF9iZmRzOyBhYmZkOyBhYmZkID0gYWJmZC0+bGluay5uZXh0KQogICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChhYmZkKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQogLS0gCi0yLjEyLjAKKzIuMTQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtRXhwbGljaXRseS1saW5rLXdpdGgtbGlibS1vbi11Y2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtRXhwbGljaXRseS1saW5rLXdpdGgtbGlibS1vbi11Y2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NzBjYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LUV4cGxpY2l0bHktbGluay13aXRoLWxpYm0tb24tdWNsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA2YTQ2YmYxNTFkN2U1M2RmOGI1ZTc2NDVhMmQyNDE5Njc2ODgzNjhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozMjo0OSArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzE1XSBFeHBsaWNpdGx5IGxpbmsgd2l0aCBsaWJtIG9uIHVjbGliYwotCi1EZXNjcmlwdGlvbjoKLQotV2UgZG8gbm90IG5lZWQgdG8gaGF2ZSB0aGUgbGlidG9vbCBwYXRjaCBhbnltb3JlIGZvciBiaW51dGlscyBhZnRlcgotbGlidG9vbCBoYXMgYmVlbiB1cGRhdGVkIHVwc3RyZWFtIGl0IGluY2x1ZGUgc3VwcG9ydCBmb3IgaXQuIEhvd2V2ZXIKLWZvciBidWlsZGluZyBnYXMgbmF0aXZlbHkgb24gdWNsaWJjIHN5c3RlbXMgd2UgaGF2ZSB0byBsaW5rIGl0IHdpdGgKLS1sbSBzbyB0aGF0IGl0IHBpY2tzIHVwIG1pc3Npbmcgc3ltYm9scy4KLQotL2xvY2FsL2J1aWxkX2FyZWEvQlVJTEQvYXJtX3Y1dF9sZV91Y2xpYmMvYmludXRpbHMtMi4xNy41MC9vYmpkaXIvbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYShmbG9hdGZvcm1hdC5vKToKLUluIGZ1bmN0aW9uIGBmbG9hdGZvcm1hdF9mcm9tX2RvdWJsZSc6Ci1mbG9hdGZvcm1hdC5jOigudGV4dCsweDFlYyk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGZyZXhwJwotZmxvYXRmb3JtYXQuYzooLnRleHQrMHgyZjgpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsZGV4cCcKLS9sb2NhbC9idWlsZF9hcmVhL0JVSUxEL2FybV92NXRfbGVfdWNsaWJjL2JpbnV0aWxzLTIuMTcuNTAvb2JqZGlyL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEoZmxvYXRmb3JtYXQubyk6Ci1JbiBmdW5jdGlvbiBgZmxvYXRmb3JtYXRfdG9fZG91YmxlJzoKLWZsb2F0Zm9ybWF0LmM6KC50ZXh0KzB4MzhhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbGRleHAnCi1mbG9hdGZvcm1hdC5jOigudGV4dCsweDNkMik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGxkZXhwJwotZmxvYXRmb3JtYXQuYzooLnRleHQrMHg0M2UpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsZGV4cCcKLWZsb2F0Zm9ybWF0LmM6KC50ZXh0KzB4NGUyKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbGRleHAnCi1jb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotbWFrZVs0XTogKioqIFthcy1uZXddIEVycm9yIDEKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnYXMvY29uZmlndXJlLnRndCB8IDYgKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZS50Z3QgYi9nYXMvY29uZmlndXJlLnRndAotaW5kZXggNzExZDUzN2U5NS4uN2NkMmRjMTc2YSAxMDA2NDQKLS0tLSBhL2dhcy9jb25maWd1cmUudGd0Ci0rKysgYi9nYXMvY29uZmlndXJlLnRndAotQEAgLTQ5NCw2ICs0OTQsMTIgQEAgY2FzZSAke2dlbmVyaWNfdGFyZ2V0fSBpbgotICAgKi0qLW5ldHdhcmUpCQkJCWZtdD1lbGYgZW09bmV0d2FyZSA7OwotIGVzYWMKLSAKLStjYXNlICR7Z2VuZXJpY190YXJnZXR9IGluCi0rICBhcm0tKi0qdWNsaWJjKikKLSsgICAgbmVlZF9saWJtPXllcwotKyAgICA7OwotK2VzYWMKLSsKLSBjYXNlICR7Y3B1X3R5cGV9IGluCi0gICBhYXJjaDY0IHwgYWxwaGEgfCBhcm0gfCBpMzg2IHwgaWE2NCB8IG1pY3JvYmxhemUgfCBtaXBzIHwgbnMzMmsgfCBvcjFrIHwgb3Ixa25kIHwgcGRwMTEgfCBwcGMgfCByaXNjdiB8IHNwYXJjIHwgejgwIHwgejhrKQotICAgICBiZmRfZ2FzPXllcwotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3ZWZlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKQEAgLTAsMCArMSwyMTE1NyBAQAorRnJvbSA3MWM3MzRiYjM3NTQzMTkwMjlkY2ZjODk4Y2VkYmFkZTQyMjc0ZGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDQ6MDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xNV0gVXNlIGxpYnRvb2wgMi40CisKK2dldCBsaWJ0b29sIHN5c3Jvb3Qgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGJmZC9jb25maWd1cmUgICAgICAgIHwgMTMxOCArKysrKysrKysrKysrKysrKy0tLS0tLQorIGJmZC9jb25maWd1cmUuYWMgICAgIHwgICAgMiArLQorIGJpbnV0aWxzL2NvbmZpZ3VyZSAgIHwgMTMxNiArKysrKysrKysrKysrKysrKy0tLS0tLQorIGNvbmZpZ3VyZSAgICAgICAgICAgIHwgICAgMiArLQorIGdhcy9jb25maWd1cmUgICAgICAgIHwgMTMxNCArKysrKysrKysrKysrKysrKy0tLS0tLQorIGdwcm9mL2NvbmZpZ3VyZSAgICAgIHwgMTMyMSArKysrKysrKysrKysrKysrKy0tLS0tLQorIGxkL2NvbmZpZ3VyZSAgICAgICAgIHwgMTY5MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQorIGxpYnRvb2wubTQgICAgICAgICAgIHwgMTA4MCArKysrKysrKysrKysrLS0tLS0tCisgbHRtYWluLnNoICAgICAgICAgICAgfCAyOTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCisgbHRvcHRpb25zLm00ICAgICAgICAgfCAgICAyICstCisgbHR2ZXJzaW9uLm00ICAgICAgICAgfCAgIDEyICstCisgbHR+b2Jzb2xldGUubTQgICAgICAgfCAgICAyICstCisgb3Bjb2Rlcy9jb25maWd1cmUgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCisgb3Bjb2Rlcy9jb25maWd1cmUuYWMgfCAgICAyICstCisgemxpYi9jb25maWd1cmUgICAgICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCisgMTUgZmlsZXMgY2hhbmdlZCwgOTkyNyBpbnNlcnRpb25zKCspLCAzNjk0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKK2luZGV4IDQ4Mjc2NTk0ZWQuLjNlY2U4OTQzZjMgMTAwNzU1CistLS0gYS9iZmQvY29uZmlndXJlCisrKysgYi9iZmQvY29uZmlndXJlCitAQCAtNjcyLDYgKzY3Miw5IEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorK2FjX2N0X0FSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03ODUsNiArNzg4LDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtMTQ2MSw2ICsxNDY1LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLW1tYXAgICAgICAgICAgICAgdHJ5IHVzaW5nIG1tYXAgZm9yIEJGRCBpbnB1dCBmaWxlcyBpZiBhdmFpbGFibGUKKyAgIC0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXI9RElSCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGVidWcgaW5mbyBpbiBESVIKK0BAIC01MzkzLDggKzUzOTksOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTQzNCw3ICs1NDQwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjEyMCw4ICs2MTI2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTYxNzAsNiArNjE3Niw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjE4Niw2ICs2MjY2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MzU0LDcgKzY0MzksOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjUwOCw2ICs2NTk0LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjUyMSwxMSArNjYyMiwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjU0MSw3ICs2Nzk1LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjU2MSwxMSArNjgxNSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02NTgxLDcgKzY4MzksNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjYwMCw2ICs2ODU4LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02NjExLDE2ICs2ODczLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKyAKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorIAorK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisgCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisgCisgCisgCitAQCAtNjk2Miw4ICs3MjgwLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02OTk5LDYgKzczMTcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNzA0MCw2ICs3MzU5LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTcwNTEsNyArNzM4Miw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTcwNzcsOCArNzQwOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTcwODgsOCArNzQxOSw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTcxMjYsNiArNzQ1NywxNiBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworIAorIAorIAorQEAgLTcxNDIsNiArNzQ4Myw0NSBAQCBmaQorIAorIAorIAorKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTczNTMsNiArNzczMywxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzkxNiw2ICs4NDEzLDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTgwODAsNyArODU3OSw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04MTY5LDcgKzg2NjksNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTg0NjcsOCArODk2Nyw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODYzNCw2ICs5MTMyLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODY5Niw3ICs5MjAwLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg3NTMsMTMgKzkyNTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODgyMCw2ICs5MzI4LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTE3MCw3ICs5NjgzLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTI2OSwxMiArOTc4MywxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05Mjg4LDggKzk4MDIsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTMwNyw4ICs5ODIxLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkzNTQsOCArOTg2OCw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NDg1LDcgKzk5OTksMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTQ5OCwyMiArMTAwMTgsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk1MjUsNyArMTAwNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk1MzgsMjIgKzEwMDcxLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTU5OCwyMCArMTAxMzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05NjcyLDcgKzEwMjU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTY4MCw3ICsxMDI2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk2OTYsNyArMTAyNzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTcyMCwxMCArMTAzMDMsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05ODAyLDIzICsxMDM4NSwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTkwMyw3ICsxMDQ5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk5MjIsOSArMTA1MTgsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTA1MDAsOCArMTEwOTYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTA1MzQsMTMgKzExMTMxLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDYzMiw3ICsxMTI4Nyw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTQ3MiwxMCArMTIxMjcsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTU3OCwxMCArMTIyMzMsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xNDE3Miw3ICsxNDgyNyw3IEBAIFNIQVJFRF9MREZMQUdTPQorIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCisgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAorICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCistICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKKysgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKKyAgIGZpCisgCisgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KK0BAIC0xNjg3OSwxMyArMTc1MzQsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNjkwMCwxNCArMTc1NjIsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTY5NDAsMTIgKzE3NjA1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE3MDAwLDggKzE3NjY1LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNzAxMSwxMiArMTc2ODEsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE3MDMyLDcgKzE3NzA0LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTcwNjgsNiArMTc3MzksNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE3ODQ3LDcgKzE4NTE5LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNzk1MCwxOSArMTg2MjMsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTc5OTIsNiArMTg2ODgsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTgwMDEsNiArMTg3MDMsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE4MTE1LDEyICsxODgyMCwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xODIwNyw5ICsxODkxMiw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE4MjI1LDYgKzE4OTI3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xODI1NywyMTAgKzE4OTYyLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlLmFjIGIvYmZkL2NvbmZpZ3VyZS5hYworaW5kZXggOGZkMDNhN2VhOC4uODgxNmMzMjg2YyAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWd1cmUuYWMKKysrKyBiL2JmZC9jb25maWd1cmUuYWMKK0BAIC0yNTQsNyArMjU0LDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKKyAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCisgY2hhbmdlcXVvdGUoWyxdKWRubAorICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCistICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKKysgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKKyAgIGZpCisgCisgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KK2RpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKK2luZGV4IDIyZTFiMTczNmUuLjMyMWI2MzUzNWIgMTAwNzU1CistLS0gYS9iaW51dGlscy9jb25maWd1cmUKKysrKyBiL2JpbnV0aWxzL2NvbmZpZ3VyZQorQEAgLTY1OSw4ICs2NTksMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzcyLDYgKzc3NSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0NDQsNiArMTQ0OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIGRlZmF1bHQ9bm8KKyAgIC0td2l0aC1saWJpY29udi1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGliaWNvbnYgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKK0BAIC01MTYwLDggKzUxNjYsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTIwMSw3ICs1MjA3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNTg4Nyw4ICs1ODkzLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTU5MzcsNiArNTk0Myw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNTk1Myw2ICs2MDMzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MTIxLDcgKzYyMDYsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjI3NSw2ICs2MzYxLDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjI5MCw5ICs2MzkxLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MzA4LDcgKzY1NjIsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MzI4LDExICs2NTgyLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYzNDgsNyArNjYwNiw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MzY3LDYgKzY2MjUsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYzNzgsMTIgKzY2NDAsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisgCisgCisgCitAQCAtNjM5NSw2ICs2NjU1LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCitAQCAtNjcyOSw4ICs3MDQ3LDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02NzY2LDYgKzcwODQsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNjgwNyw2ICs3MTI2LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTY4MTgsNyArNzE0OSw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTY4NDQsOCArNzE3NSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTY4NTUsOCArNzE4Niw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTY4OTMsNiArNzIyNCwyMSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworKworKworIAorIAorIAorQEAgLTY5MDgsNiArNzI1NCw0MCBAQCBmaQorIAorIAorIAorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTcxMjAsNiArNzUwMCwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzY4Myw2ICs4MTgwLDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTc4NzgsNyArODM3Nyw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC03OTY3LDcgKzg0NjcsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTgyNjUsOCArODc2NSw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODQzMiw2ICs4OTMwLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODQ5NCw3ICs4OTk4LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg1NTEsMTMgKzkwNTUsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODYxOCw2ICs5MTI2LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtODk2OCw3ICs5NDgxLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTA2NywxMiArOTU4MSwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05MDg2LDggKzk2MDAsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTEwNSw4ICs5NjE5LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkxNTIsOCArOTY2Niw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MjgzLDcgKzk3OTcsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTI5NiwyMiArOTgxNiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTMyMyw3ICs5ODUwLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MzM2LDIyICs5ODY5LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTM5NiwyMCArOTkzNiw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk0NzAsNyArMTAwNTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NDc4LDcgKzEwMDYxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTQ5NCw3ICsxMDA3Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05NTE4LDEwICsxMDEwMSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk2MDAsMjMgKzEwMTgzLDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC05NzAxLDcgKzEwMjk3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTcyMCw5ICsxMDMxNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDI5OCw4ICsxMDg5NCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDMzMiwxMyArMTA5MjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwNDMwLDcgKzExMDg1LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExMjcwLDEwICsxMTkyNSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExMzc2LDEwICsxMjAzMSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTE1NDQ2LDEzICsxNjEwMSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1NDY3LDE0ICsxNjEyOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTUwNywxMiArMTYxNzIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU1NjcsOCArMTYyMzIsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE1NTc4LDEyICsxNjI0OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTU1OTksNyArMTYyNzEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xNTYzNSw2ICsxNjMwNiw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTYzOTIsNyArMTcwNjQsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE2NDk1LDE5ICsxNzE2OCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNjUzNyw2ICsxNzIzMywxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNjU0Niw2ICsxNzI0OCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTY2NjAsMTIgKzE3MzY1LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE2NzUyLDkgKzE3NDU3LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTY3NzAsNiArMTc0NzIsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE2ODAyLDIxMCArMTc1MDcsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggZDhhZjE1NWFiNS4uMDA1ZWQ4MjdhYiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtMzg0NCw3ICszODQ0LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgb3IxayotKi0qKQorICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ2RiIgorICAgICA7OworLSAgc2gqLSotKiB8IHNoNjQtKi0qKQorKyAgc2gtKi0qIHwgc2g2NC0qLSopCisgICAgIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgICAgICBzaCotKi1lbGYpCisgICAgICAgICAgOzsKK2RpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQoraW5kZXggOTNhZmIyMGM4Zi4uODFkZDRjYmQ5NyAxMDA3NTUKKy0tLSBhL2dhcy9jb25maWd1cmUKKysrKyBiL2dhcy9jb25maWd1cmUKK0BAIC02NTAsOCArNjUwLDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc2Myw2ICs3NjYsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC00OTIxLDggKzQ5MjUsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNDk2Miw3ICs0OTY2LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNTY0OCw4ICs1NjUyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTU2OTgsNiArNTcwMiw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNTcxNCw2ICs1NzkyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC01ODgyLDcgKzU5NjUsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjAzNiw2ICs2MTIwLDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjA1MSw5ICs2MTUwLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MDY5LDcgKzYzMjEsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MDg5LDExICs2MzQxLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYxMDksNyArNjM2NSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MTI4LDYgKzYzODQsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYxMzksMTIgKzYzOTksMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisgCisgCisgCitAQCAtNjE1Niw2ICs2NDE0LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCitAQCAtNjQ5MCw4ICs2ODA2LDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02NTI3LDYgKzY4NDMsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNjU2OCw2ICs2ODg1LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTY1NzksNyArNjkwOCw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTY2MDUsOCArNjkzNCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTY2MTYsOCArNjk0NSw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTY2NTQsNiArNjk4MywyMSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworKworKworIAorIAorIAorQEAgLTY2NjksNiArNzAxMyw0MCBAQCBmaQorIAorIAorIAorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTY4ODEsNiArNzI1OSwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzQ0NCw2ICs3OTM5LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTc2MzksNyArODEzNiw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC03NzI4LDcgKzgyMjYsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTgwMjYsOCArODUyNCw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODE5Myw2ICs4Njg5LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODI1NSw3ICs4NzU3LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTgzMTIsMTMgKzg4MTQsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODM3OSw2ICs4ODg1LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtODcyOSw3ICs5MjQwLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtODgyOCwxMiArOTM0MCwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC04ODQ3LDggKzkzNTksOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtODg2Niw4ICs5Mzc4LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTg5MTMsOCArOTQyNSw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MDQ0LDcgKzk1NTYsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTA1NywyMiArOTU3NSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTA4NCw3ICs5NjA5LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MDk3LDIyICs5NjI4LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTE1NywyMCArOTY5NSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTkyMzEsNyArOTgxMiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTkyMzksNyArOTgyMCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTkyNTUsNyArOTgzNiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05Mjc5LDEwICs5ODYwLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTM2MSwyMyArOTk0MiwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTQ2Miw3ICsxMDA1Niw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk0ODEsOSArMTAwNzUsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTAwNTksOCArMTA2NTMsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTAwOTMsMTMgKzEwNjg4LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDE5MSw3ICsxMDg0NCw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTAzMSwxMCArMTE2ODQsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTEzNywxMCArMTE3OTAsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xNTQzNiwxMyArMTYwODksMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTQ1NywxNCArMTYxMTcsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU0OTcsMTIgKzE2MTYwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1NTU3LDggKzE2MjIwLDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNTU2OCwxMiArMTYyMzYsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE1NTg5LDcgKzE2MjU5LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTU2MjUsNiArMTYyOTQsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE2Mzg5LDcgKzE3MDU5LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNjQ5MiwxOSArMTcxNjMsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTY1MzQsNiArMTcyMjgsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTY1NDMsNiArMTcyNDMsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE2NjU3LDEyICsxNzM2MCwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNjc0OSw5ICsxNzQ1Miw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE2NzY3LDYgKzE3NDY3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNjc5OSwyMTAgKzE3NTAyLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKK2luZGV4IDY3OWUwZGNlNzcuLmFjNGMwMTZhNjMgMTAwNzU1CistLS0gYS9ncHJvZi9jb25maWd1cmUKKysrKyBiL2dwcm9mL2NvbmZpZ3VyZQorQEAgLTYzMSw4ICs2MzEsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzQ0LDYgKzc0Nyw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0MDIsNiArMTQwNiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorQEAgLTQ4MzYsOCArNDg0Miw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC00ODc3LDcgKzQ4ODMsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC01NTYzLDggKzU1NjksOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNTYxMyw2ICs1NjE5LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01NjI5LDYgKzU3MDksMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTU3OTcsNyArNTg4Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC01ODc0LDExICs1OTYwLDYgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgIDs7CisgCistbGludXgtdWNsaWJjKikKKy0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCistICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAorLSAgOzsKKy0KKyBuZXRic2QqKQorICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCitAQCAtNTk1Niw2ICs2MDM3LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNTk3MSw5ICs2MDY3LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01OTg5LDcgKzYyMzgsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MDA5LDExICs2MjU4LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYwMjksNyArNjI4Miw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MDQ4LDYgKzYzMDEsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYwNTksMTIgKzYzMTYsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisgCisgCisgCitAQCAtNjA3Niw2ICs2MzMxLDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCitAQCAtNjQxMCw4ICs2NzIzLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02NDQ3LDYgKzY3NjAsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNjQ4OCw2ICs2ODAyLDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTY0OTksNyArNjgyNSw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTY1MjUsOCArNjg1MSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTY1MzYsOCArNjg2Miw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTY1NzQsNiArNjkwMCwxOCBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworIAorIAorIAorQEAgLTY1OTAsNiArNjkyOCw0MyBAQCBmaQorIAorIAorIAorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTY4MDEsNiArNzE3NiwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzM2NCw2ICs3ODU2LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTc1NTksNyArODA1Myw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC03NjQ4LDcgKzgxNDMsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTc5NDYsOCArODQ0MSw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODExMyw2ICs4NjA2LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODE3NSw3ICs4Njc0LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTgyMzIsMTMgKzg3MzEsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODI5OSw2ICs4ODAyLDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtODY0OSw3ICs5MTU3LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtODc0OCwxMiArOTI1NywxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC04NzY3LDggKzkyNzYsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtODc4Niw4ICs5Mjk1LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTg4MzMsOCArOTM0Miw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC04OTY0LDcgKzk0NzMsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtODk3NywyMiArOTQ5MiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTAwNCw3ICs5NTI2LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MDE3LDIyICs5NTQ1LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTA3NywyMCArOTYxMiw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTkxNTEsNyArOTcyOSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTkxNTksNyArOTczNyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTkxNzUsNyArOTc1Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05MTk5LDEwICs5Nzc3LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTI4MSwyMyArOTg1OSwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTM4Miw3ICs5OTczLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTQwMSw5ICs5OTkyLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTk5NzksOCArMTA1NzAsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTAwMTMsMTMgKzEwNjA1LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDExMSw3ICsxMDc2MSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMDk1MSwxMCArMTE2MDEsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTA1NywxMCArMTE3MDcsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMzAwNSwxMyArMTM2NTUsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzAyNiwxNCArMTM2ODMsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTMwNjYsMTIgKzEzNzI2LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzMTI2LDggKzEzNzg2LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xMzEzNywxMiArMTM4MDIsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTEzMTU4LDcgKzEzODI1LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTMxOTQsNiArMTM4NjAsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTEzOTUwLDcgKzE0NjE3LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNDA1MywxOSArMTQ3MjEsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTQwOTUsNiArMTQ3ODYsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTQxMDQsNiArMTQ4MDEsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE0MjE4LDEyICsxNDkxOCwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNDMxMCw5ICsxNTAxMCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE0MzI4LDYgKzE1MDI1LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNDM2MCwyMTAgKzE1MDYwLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKK2luZGV4IGQ3ZjY2ZjhjZGMuLjRlNzE1MTFiZDEgMTAwNzU1CistLS0gYS9sZC9jb25maWd1cmUKKysrKyBiL2xkL2NvbmZpZ3VyZQorQEAgLTY1NSw4ICs2NTUsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzc4LDYgKzc4MSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0NjQsNiArMTQ2OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1saWItcGF0aD1kaXIxOmRpcjIuLi4gIHNldCBkZWZhdWx0IExJQl9QQVRICisgICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciB1c3IvbGliIGV0IGFsIHdpdGhpbiBESVIuCisgCitAQCAtNTY1OCw4ICs1NjY0LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU2OTksNyArNTcwNSw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYzODUsOCArNjM5MSw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02NDM1LDYgKzY0NDEsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTY0NTEsNiArNjUzMSwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjYxOSw3ICs2NzA0LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY3NzMsNiArNjg1OSwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY3ODgsOSArNjg4OSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjgwNiw3ICs3MDYwLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjgyNiwxMSArNzA4MCwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02ODQ2LDcgKzcxMDQsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjg2NSw2ICs3MTIzLDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02ODc2LDEyICs3MTM4LDEyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworIAorIAorIAorQEAgLTY4OTEsNiArNzE1Myw2MiBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorQEAgLTcyMjcsOCArNzU0NSw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzI2NCw2ICs3NTgyLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTczMDUsNiArNzYyNCwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MzE2LDcgKzc2NDcsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03MzQyLDggKzc2NzMsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03MzUzLDggKzc2ODQsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MzkxLDYgKzc3MjIsMTkgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03NDA0LDYgKzc3NDgsNDIgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03NjE4LDYgKzc5OTgsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTgxODEsNiArODY3OCw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MjQ5LDYgKzg3NDgsMTYgQEAgZG9uZQorIAorIAorIAorK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQorK3sKKysgIGNhc2UgJHsyfSBpbgorKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKysgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKysgIGVzYWMKKyt9ICMgZnVuY19zdHJpcG5hbWVfY25mCisrCisrCisrCisgCisgCisgIyBTZXQgb3B0aW9ucworQEAgLTgzNzcsNyArODg4Niw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04NDY2LDcgKzg5NzYsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTg3NjQsOCArOTI3NCw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODkzMSw2ICs5NDM5LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODk5Myw3ICs5NTA3LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTkwNTAsMTMgKzk1NjQsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtOTExNyw2ICs5NjM1LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTQ2Nyw3ICs5OTkwLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTU2NiwxMiArMTAwOTAsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTU4NSw4ICsxMDEwOSw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05NjA0LDggKzEwMTI4LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk2NTEsOCArMTAxNzUsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTc4Miw3ICsxMDMwNiwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05Nzk1LDIyICsxMDMyNSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTgyMiw3ICsxMDM1OSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTgzNSwyMiArMTAzNzgsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05ODk0LDIxICsxMDQ0NCw2NCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05OTY5LDcgKzEwNTYyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTk3Nyw3ICsxMDU3MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk5OTMsNyArMTA1ODYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtMTAwMTcsMTAgKzEwNjEwLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtMTAwOTksMjMgKzEwNjkyLDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC0xMDIwMCw3ICsxMDgwNiw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTEwMjE5LDkgKzEwODI1LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwNzk3LDggKzExNDAzLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwODMxLDEzICsxMTQzOCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA5MjksNyArMTE1OTQsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTE3NjksMTAgKzEyNDM0LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE4NzUsMTAgKzEyNTQwLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTIyNzAsNiArMTI5MzUsNyBAQCAkUk0gLXIgY29uZnRlc3QqCisgCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0kQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIGx0X3NhdmVfTEQ9JExECisgICBsdF9zYXZlX0dDQz0kR0NDCisgICBHQ0M9JEdYWAorQEAgLTEyMjg3LDYgKzEyOTUzLDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgorICAgZmkKKyAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCisgICBDQz0ke0NYWC0iYysrIn0KKysgIENGTEFHUz0kQ1hYRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgY29tcGlsZXJfQ1hYPSRDQworICAgZm9yIGNjX3RlbXAgaW4gJGNvbXBpbGVyIiI7IGRvCitAQCAtMTI1NjksNyArMTMyMzYsMTMgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKKyAgICAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPSctYmVyb2snCisgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQorICAgICAgICAgICAjIGV4ZWN1dGFibGUuCistICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC0xMjU4MiwyMiArMTMyNTUsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKKytmaQorIAorICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAKK0BAIC0xMjYxMCw3ICsxMzI5MCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgICAgZWxzZQorIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTEyNjIzLDIyICsxMzMwOSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAorK2ZpCisgCisgCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtMTI2ODEsMjkgKzEzMzc0LDc1IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgOzsKKyAKKyAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCistICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKy0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJworLSAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKy0gICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAorLSAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubworLSAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCistCistICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCistICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKy0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZWxzZQorLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBmaX4KKy0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgZWxzZQorLSAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCistICAgICAgICBmaQorLSAgICAgICAgOzsKKysJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgorKwksY2wqIHwgbm8sY2wqKQorKwkgICMgTmF0aXZlIE1TVkMKKysJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisrCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nICcKKysJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKysJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPXllcworKwkgIGZpbGVfbGlzdF9zcGVjX0NYWD0nQCcKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwkgIGxpYmV4dD1saWIKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJICBzaHJleHRfY21kcz0iLmRsbCIKKysJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZWxzZQorKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGZpfgorKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgICAgbGlua25hbWVzPScKKysJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsIENYWCk9J3RydWUnCisrCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCisrCSAgIyBEb24ndCB1c2UgcmFubGliCisrCSAgb2xkX3Bvc3RpbnN0YWxsX2NtZHNfQ1hYPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJICBwb3N0bGlua19jbWRzX0NYWD0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAgICopCisrCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkJOzsKKysJICAgIGVzYWN+CisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgICBmaScKKysJICA7OworKwkqKQorKwkgICMgZysrCisrCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisrCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJworKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisrCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCisrCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubworKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcworKworKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKysJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKysJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisrCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZWxzZQorKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGZpfgorKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgIGVsc2UKKysJICAgIGxkX3NobGlic19DWFg9bm8KKysJICBmaQorKwkgIDs7CisrCWVzYWMKKysJOzsKKyAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorIAorIAorQEAgLTEyODA5LDcgKzEzNTQ4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgKikKKyAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorLSAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCitAQCAtMTI4ODAsMTAgKzEzNjE5LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICBpYTY0KikKKy0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgKikKKy0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICBlc2FjCisgCSAgICAgIGZpCitAQCAtMTI5MjQsOSArMTM2NjMsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgICAgKikKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkgICAgICBlbHNlCistCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCitAQCAtMTI5OTYsMjAgKzEzNzM1LDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICBwcmVsaW5rX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CistCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisrCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJworIAkgICAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KKy0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisrCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KKyAJCSRSQU5MSUIgJG9sZGxpYicKKyAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisgCSAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgCSAgICAgIDs7CisgCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scworIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKK0BAIC0xMzIwNCw3ICsxMzk0Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICAgICopCistCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgZXNhYworIAorQEAgLTEzMjUwLDcgKzEzOTg5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICAgc29sYXJpcyopCisgICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgICAgICBDQyopCisrICAgICAgICAgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9eWVzCisgCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAtemRlZnMnCitAQCAtMTMyOTEsOSArMTQwMzAsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorIAkgICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS16ICR7d2x9ZGVmcycKKyAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KKy0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworIAkgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAKKyAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCitAQCAtMTM0MjgsNiArMTQxNjcsMTMgQEAgcHJpdmF0ZToKKyB9OworIF9MVF9FT0YKKyAKKysKKytfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCisrY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAorKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OworKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKKytlc2FjCisrCisgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICAgYWNfc3RhdHVzPSQ/CitAQCAtMTM0NDEsNyArMTQxODcsNyBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KKyAKKyAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KKy0gICAgY2FzZSAkcCBpbgorKyAgICBjYXNlICR7cHJldn0ke3B9IGluCisgCisgICAgIC1MKiB8IC1SKiB8IC1sKikKKyAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KK0BAIC0xMzQ1MCwxMyArMTQxOTYsMjIgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCisgCSBwcmV2PSRwCisgCSBjb250aW51ZQorLSAgICAgICBlbHNlCistCSBwcmV2PQorICAgICAgICBmaQorIAorKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KKysgICAgICAgICBjYXNlICRwIGluCisrICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgZXNhYworKyAgICAgICBmaQorKyAgICAgICBjYXNlICRwIGluCisrICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgIGVzYWMKKyAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KKy0JIGNhc2UgJHAgaW4KKy0JIC1MKiB8IC1SKikKKysJIGNhc2UgJHtwcmV2fSBpbgorKwkgLUwgfCAtUikKKyAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCisgCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQorIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KK0BAIC0xMzQ3Niw4ICsxNDIzMSwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAJICAgcG9zdGRlcHNfQ1hYPSIke3Bvc3RkZXBzX0NYWH0gJHtwcmV2fSR7cH0iCisgCSBmaQorICAgICAgICBmaQorKyAgICAgICBwcmV2PQorICAgICAgICA7OworIAorKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKKyAgICAgKi4kb2JqZXh0KQorICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKKyAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCitAQCAtMTM1MTMsNiArMTQyNzAsNyBAQCBlbHNlCisgZmkKKyAKKyAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CisrQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUworIAorICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCisgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTEzNTQ4LDcgKzE0MzA2LDcgQEAgbGludXgqKQorIAorIHNvbGFyaXMqKQorICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gIENDKikKKysgIENDKiB8IHN1bkNDKikKKyAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZworICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCitAQCAtMTM2MTMsOCArMTQzNzEsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCitAQCAtMTM3MTksNiArMTQ0NzUsMTEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJICA7OworIAllc2FjCisgCTs7CisrICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKysJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorKwlsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1ERExMX0VYUE9SVCcKKysJOzsKKyAgICAgICBkZ3V4KikKKyAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAJICBlYysrKikKK0BAIC0xMzg3MSw3ICsxNDYzMiw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCTs7CisgICAgICAgc29sYXJpcyopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCistCSAgQ0MqKQorKwkgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAJICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLUtQSUMnCisgCSAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJworQEAgLTEzOTM2LDEwICsxNDY5NywxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTEzOTk3LDYgKzE0NzY1LDggQEAgZmkKKyAKKyAKKyAKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC0xNDE3NCw2ICsxNDk0NCw3IEBAIGZpCisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9CisgCisgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJworICAgY2FzZSAkaG9zdF9vcyBpbgorICAgYWl4WzQtOV0qKQorICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KK0BAIC0xNDE4OCwxNSArMTQ5NTksMjAgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKKyAgICAgOzsKKyAgIHB3MzIqKQorICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0iJGx0ZGxsX2NtZHMiCistICA7OworKyAgICA7OworICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKKy0gICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvOy9eLipbIF1fX25tX18vcy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgY2wqKSA7OworKyAgICAqKQorKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zX0NYWD0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworKyAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKyAgICopCisgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCistICA7OworKyAgICA7OworICAgZXNhYworLSAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJworIAorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGRfc2hsaWJzX0NYWCIgPiY1CisgJGFzX2VjaG8gIiRsZF9zaGxpYnNfQ1hYIiA+JjY7IH0KK0BAIC0xNDQ1OSw4ICsxNTIzNSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xNDQ5MiwxMyArMTUyNjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTE0NTg5LDcgKzE1NDI0LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTE1MDQ4LDYgKzE1ODgzLDcgQEAgZmkKKyAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorIAorICAgQ0M9JGx0X3NhdmVfQ0MKKysgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyAgIExEQ1hYPSRMRAorICAgTEQ9JGx0X3NhdmVfTEQKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKK0BAIC0xODA4MywxMyArMTg5MTksMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODEwNCwxNCArMTg5NDcsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTgxNDQsMTIgKzE4OTkwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4MTg4LDggKzE5MDM0LDggQEAgb2xkX2FyY2hpdmVfY21kc19DWFg9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGUKKyBjb21waWxlcl9DWFg9J2AkRUNITyAiJGNvbXBpbGVyX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgR0NDX0NYWD0nYCRFQ0hPICIkR0NDX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWD0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTgyMTYsMTIgKzE5MDYyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCisgaGFyZGNvZGVfYXV0b21hdGljX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aF9DWFg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzX0NYWD0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlic19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGhfQ1hYPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcG9zdGxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjX0NYWD0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBoYXJkY29kZV9hY3Rpb25fQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODI1OSw4ICsxOTEwNSwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTgyNzAsMTIgKzE5MTIxLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xODI5MSw3ICsxOTE0NCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE4MzEzLDggKzE5MTY1LDggQEAgTERfQ1hYIFwKKyByZWxvYWRfZmxhZ19DWFggXAorIGNvbXBpbGVyX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFggXAorIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFggXAorQEAgLTE4MzI2LDcgKzE5MTc4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWCBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFggXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIFwKKy1maXhfc3JjZmlsZV9wYXRoX0NYWCBcCisgZXhjbHVkZV9leHBzeW1zX0NYWCBcCisgaW5jbHVkZV9leHBzeW1zX0NYWCBcCisgZmlsZV9saXN0X3NwZWNfQ1hYIFwKK0BAIC0xODM2MCw2ICsxOTIxMSw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTgzNzQsNyArMTkyMjYsOCBAQCBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCBcCisgbW9kdWxlX2NtZHNfQ1hYIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHNfQ1hYIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzX0NYWCBcCistcHJlbGlua19jbWRzX0NYWDsgZG8KKytwcmVsaW5rX2NtZHNfQ1hYIFwKKytwb3N0bGlua19jbWRzX0NYWDsgZG8KKyAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCisgICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCisgICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKK0BAIC0xOTE2Nyw3ICsyMDAyMCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTkyNzAsMTkgKzIwMTI0LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE5MzEyLDYgKzIwMTg5LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE5MzIxLDYgKzIwMjA0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xOTQzNSwxMiArMjAzMjEsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTk1MjcsOSArMjA0MTMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xOTU0NSw2ICsyMDQyOCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTk1OTEsMjEwICsyMDQ3NywxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitAQCAtMTk4MjIsMTIgKzIwNjY3LDEyIEBAIHdpdGhfZ2NjPSRHQ0NfQ1hYCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWAorIAorQEAgLTE5OTE0LDkgKzIwNzU5LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aF9DWFgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzX0NYWAorIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoX0NYWAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWAorIAorQEAgLTE5OTMyLDYgKzIwNzc0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kc19DWFgKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kc19DWFgKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWNfQ1hYCisgCitkaWZmIC0tZ2l0IGEvbGlidG9vbC5tNCBiL2xpYnRvb2wubTQKK2luZGV4IDI0ZDEzZjM0NDAuLmU0NWZkYzY5OTggMTAwNjQ0CistLS0gYS9saWJ0b29sLm00CisrKysgYi9saWJ0b29sLm00CitAQCAtMSw3ICsxLDggQEAKKyAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKK0BAIC0xMCw3ICsxMSw4IEBACisgCisgbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0zNyw3ICszOSw3IEBAIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCisgIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyBdKQorIAorLSMgc2VyaWFsIDU2IExUX0lOSVQKKysjIHNlcmlhbCA1NyBMVF9JTklUCisgCisgCisgIyBMVF9QUkVSRVEoVkVSU0lPTikKK0BAIC05Miw3ICs5NCw4IEBAIF9MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgQUNfU1VCU1QoTElCVE9PTClkbmwKKyAKKyBfTFRfU0VUVVAKK0BAIC0xNjYsMTAgKzE2OSwxMyBAQCBfTFRfREVDTChbXSwgW2V4ZWV4dF0sIFswXSwgW0V4ZWN1dGFibGUgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICIiKV0pZG5sCisgZG5sCisgbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9SRUxPQURdKWRubAorIG00X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAorK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKKyAKKyBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCisgIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorQEAgLTE5OSw3ICsyMDUsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTYzMiw3ICs2MzgsNyBAQCBtNF9pZnNldChbQUNfUEFDS0FHRV9OQU1FXSwgW0FDX1BBQ0tBR0VfTkFNRSBdKWNvbmZpZy5sdFtdZG5sCisgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKKyBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KKyAKKy1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgorIAorQEAgLTc0NiwxNSArNzUyLDEyIEBAIF9MVF9FT0YKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgCistICBfTFRfUFJPR19YU0lfU0hFTExGTlMKKysgIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKKyAKKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIF0sCitAQCAtOTgwLDYgKzk4Myw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTEwNjksMzAgKzEwNzQsNDEgQEAgbTRfZGVmdW4oW19MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTXSwKKyAgIGZpCisgXSkKKyAKKy0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoW1RBR05BTUVdKQorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQorICMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAorICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAorICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgorICMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKKyAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgorKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgorKyMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KKyBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAorIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorLUFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpXSxbXSkKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKytpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKKysgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCisrICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfV0nCisrICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKysgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaV0sW10pCisrICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisrICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysgIF0pCisrICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKKytmaQorIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorIAorIAorQEAgLTExMTcsNyArMTEzMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgCisgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQorIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAorIAorIAorKyMgX0xUX1dJVEhfU1lTUk9PVAorKyMgLS0tLS0tLS0tLS0tLS0tLQorK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKKytbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCisrQUNfQVJHX1dJVEgoW2xpYnRvb2wtc3lzcm9vdF0sCisrWyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCisrW10sIFt3aXRoX2xpYnRvb2xfc3lzcm9vdD1ub10pCisrCisrZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQorK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgorK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9XSkKKysgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQorKyAgIDs7CisrZXNhYworKworKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCisrX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCisrW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQorKworICMgX0xUX0VOQUJMRV9MT0NLCisgIyAtLS0tLS0tLS0tLS0tLS0KKyBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKK0BAIC0xMzIwLDE0ICsxMzY5LDQ3IEBAIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIF0pIyBfTFRfRU5BQkxFX0xPQ0sKKyAKKyAKKysjIF9MVF9QUk9HX0FSCisrIyAtLS0tLS0tLS0tLQorK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCisrW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKytfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKKytfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQorKworK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKKysgIFtsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCisrICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJworKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrICAgICBdKQorKyAgXSkKKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKytfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKKysgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQorK10pIyBfTFRfUFJPR19BUgorKworKworICMgX0xUX0NNRF9PTERfQVJDSElWRQorICMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKKy1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQorLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCisrW19MVF9QUk9HX0FSCisgCisgQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCisgdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06CitAQCAtMTYyMyw3ICsxNzA1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTE2NjcsMTAgKzE3NDksMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0yMjEwLDggKzIyOTIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMjI0NCwxMyArMjMyNyw3MSBAQCBtNF9pZihbJDFdLCBbXSxbCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTIzNDIsNyArMjQ4Myw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0yOTUwLDYgKzMwOTEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTMwMTYsNyArMzE2Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC0zMTY3LDYgKzMzMTQsMjEgQEAgdHBmKikKKyAgIDs7CisgZXNhYworIF0pCisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCisgICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCisgX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKKy0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKKysgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAorKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAorKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKKyBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAorIAorIAorQEAgLTMyNzcsNiArMzQ0Myw2NyBAQCBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CisgZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCisgZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCisgCisrIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5CisrIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCisrIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcworK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCisrW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKKyttNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKKyttNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKKytBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCisrbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCisrW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworK10pCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCisrICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKKytdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKysKKysKKysjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAorK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKKytbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKKysgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0Kl0pCisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCisrXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKysKKyAKKyAjIExUX0xJQl9NCisgIyAtLS0tLS0tLQorQEAgLTM0MDMsOCArMzYzMCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtMzQ0MCw2ICszNjY3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTM0NzMsNiArMzcwMSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC0zNDg0LDcgKzM3MjQsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCisgCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAJZmkKK0BAIC0zNTUxLDYgKzM3OTEsMTMgQEAgZWxzZQorICAgQUNfTVNHX1JFU1VMVChvaykKKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAorICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCitAQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAorIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAorICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKKyAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKKytfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQorIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUworIAorIAorQEAgLTM1NzIsNyArMzgyMSw2IEBAIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQorIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgCistQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCisgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCitAQCAtMzY3OCw2ICszOTI2LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCSAgOzsKKyAJZXNhYworIAk7OworKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCisrCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKysJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKysJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorKwk7OworICAgICAgIGRndXgqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorIAkgIGVjKysqKQorQEAgLTM4MzAsNyArNDA4NCw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCTs7CisgICAgICAgc29sYXJpcyopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCistCSAgQ0MqKQorKwkgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworQEAgLTQwNTMsNiArNDMwNywxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJworIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtNDExNSw3ICs0Mzc1LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKK0BAIC00MTcyLDkgKzQ0MzIsMTEgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKKyAgICAgOzsKKyBlc2FjCistQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCistX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCistCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKysKKytBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAorKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCisrICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC00MTkzLDYgKzQ0NTUsOCBAQCBmaQorIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKKyAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCisgCisrX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisrCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC00MjEzLDYgKzQ0NzcsNyBAQCBfTFRfVEFHREVDTChbbGlua19zdGF0aWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY10sIFsxXSwKKyBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAorIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKKyBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0BAIC00MjIxLDYgKzQ0ODYsNyBAQCBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKKyBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCisgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgIGFpeFtbNC05XV0qKQorICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KK0BAIC00MjM1LDE1ICs0NTAxLDIwIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICAgIDs7CisgICBwdzMyKikKKyAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgorLSAgOzsKKysgICAgOzsKKyAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCistICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgIGNsKikgOzsKKysgICAgKikKKysgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKysgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisgICAqKQorICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgOzsKKyAgIGVzYWMKKy0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQorIF0sIFsKKyAgIHJ1bnBhdGhfdmFyPQorICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorQEAgLTQ0MTEsNyArNDY4Miw4IEBAIF9MVF9FT0YKKyAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCistICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTQ1MTAsMTIgKzQ3ODIsMTIgQEAgX0xUX0VPRgorIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KKyAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCistCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtNDUyOSw4ICs0ODAxLDggQEAgX0xUX0VPRgorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtNDU0OCw4ICs0ODIwLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgIGZpCitAQCAtNDU5NSw4ICs0ODY3LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgIGZpCitAQCAtNDcyNiw3ICs0OTk4LDcgQEAgX0xUX0VPRgorIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgIGVsc2UKK0BAIC00NzM3LDcgKzUwMDksNyBAQCBfTFRfRU9GCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KK0BAIC00NzgxLDIwICs1MDUzLDYzIEBAIF9MVF9FT0YKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTQ4MjgsNyArNTE0Myw3IEBAIF9MVF9FT0YKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworQEAgLTQ4MzYsNyArNTE1MSw3IEBAIF9MVF9FT0YKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC00ODUyLDcgKzUxNjcsNyBAQCBfTFRfRU9GCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTQ4NzYsMTAgKzUxOTEsMTAgQEAgX0xUX0VPRgorIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC00OTI2LDE2ICs1MjQxLDMxIEBAIF9MVF9FT0YKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgQUNfTElOS19JRkVMU0UoaW50IGZvbyh2b2lkKSB7fSwKKy0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0gICAgICAgICkKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKKysJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAorKwkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIEFDX0xJTktfSUZFTFNFKAorKwkgICAgIFtBQ19MQU5HX1NPVVJDRSgKKysJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisrCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorKwkJCSAgICAgIFtGb3J0cmFuIDc3XSwgW1sKKysgICAgICBzdWJyb3V0aW5lIGZvbworKyAgICAgIGVuZF1dLAorKwkJCSAgICAgIFtGb3J0cmFuXSwgW1sKKysgICAgICBzdWJyb3V0aW5lIGZvbworKyAgICAgIGVuZF1dKV0pXSwKKysJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCisrCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTUwMjAsNyArNTM1MCw3IEBAIF9MVF9FT0YKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTUwMzksOSArNTM2OSw5IEBAIF9MVF9FT0YKKyAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTUzMTMsOCArNTY0Myw2IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5oZXJpdF9ycGF0aF0sIFswXSwKKyAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQorIF9MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKKyAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCistX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAorLSAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKKyBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKKyAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCisgX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLAorQEAgLTUzMjUsNiArNTY1Myw4IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5jbHVkZV9leHBzeW1zXSwgWzFdLAorICAgICBbU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkXSkKKyBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKKyAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKKytfTFRfVEFHREVDTChbXSwgW3Bvc3RsaW5rX2NtZHNdLCBbMl0sCisrICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKKyBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKKyBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK0BAIC01NDI2LDYgKzU3NTYsNyBAQCBDQz0iJGx0X3NhdmVfQ0MiCisgbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAorIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisrbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCisgaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKKyAgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8CisgICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgorQEAgLTU0ODcsNiArNTgxOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0kQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIGx0X3NhdmVfTEQ9JExECisgICBsdF9zYXZlX0dDQz0kR0NDCisgICBHQ0M9JEdYWAorQEAgLTU1MDQsNiArNTgzNiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICBmaQorICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKKyAgIENDPSR7Q1hYLSJjKysifQorKyAgQ0ZMQUdTPSRDWFhGTEFHUworICAgY29tcGlsZXI9JENDCisgICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCitAQCAtNTY2Nyw3ICs2MDAwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQorICAgICAgICAgICAjIGV4ZWN1dGFibGUuCistICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAorICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC01Njc5LDcgKzYwMTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICBlbHNlCisgCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgorQEAgLTU3MjEsMjkgKzYwNTQsNzUgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgIDs7CisgCisgICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKy0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKy0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworLSAgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCistCistICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCistICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKy0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZWxzZQorLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBmaX4KKy0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgZWxzZQorLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCistICAgICAgICBmaQorLSAgICAgICAgOzsKKysJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgorKwksY2wqIHwgbm8sY2wqKQorKwkgICMgTmF0aXZlIE1TVkMKKysJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisrCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKysJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwkgIGxpYmV4dD1saWIKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJICBzaHJleHRfY21kcz0iLmRsbCIKKysJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZWxzZQorKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGZpfgorKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgICAgbGlua25hbWVzPScKKysJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKysJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJICAjIERvbid0IHVzZSByYW5saWIKKysJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworKwkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICAgKikKKysJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCQk7OworKwkgICAgZXNhY34KKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+CisrCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICAgIGZpJworKwkgIDs7CisrCSopCisrCSAgIyBnKysKKysJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKysJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKysJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysKKysJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisrCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCisrCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGVsc2UKKysJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBmaX4KKysJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICBlbHNlCisrCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisrCSAgZmkKKysJICA7OworKwllc2FjCisrCTs7CisgICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQorIAk7OworQEAgLTU4MTgsNyArNjE5Nyw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgKikKKyAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCitAQCAtNTg4OSwxMCArNjI2OCwxMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICBpYTY0KikKKy0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgKikKKy0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICBlc2FjCisgCSAgICAgIGZpCitAQCAtNTkzMyw5ICs2MzEyLDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgKikKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkgICAgICBlbHNlCistCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCitAQCAtNjAwNSwyMCArNjM4NCwyMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CistCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisrCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJworIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KKy0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisrCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KKyAJCSRSQU5MSUIgJG9sZGxpYicKKyAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisgCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgCSAgICAgIDs7CisgCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scworIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKK0BAIC02MjEzLDcgKzY1OTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICAgICopCistCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgZXNhYworIAorQEAgLTYyNTksNyArNjYzOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCisgICAgICAgc29sYXJpcyopCisgICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgICAgICBDQyopCisrICAgICAgICAgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKKyAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKK0BAIC02MzAwLDkgKzY2NzksOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJworIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgorLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisrCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisgCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworIAorIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKyAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KK0BAIC02NDMxLDYgKzY4MTAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisgCisgICBDQz0kbHRfc2F2ZV9DQworKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworICAgTERDWFg9JExECisgICBMRD0kbHRfc2F2ZV9MRAorICAgR0NDPSRsdF9zYXZlX0dDQworQEAgLTY0NDUsNiArNjgyNSwyOSBAQCBBQ19MQU5HX1BPUAorIF0pIyBfTFRfTEFOR19DWFhfQ09ORklHCisgCisgCisrIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCisrIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKysjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKysjCisrIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCisrIyBleGNlcHQgdGhpcyBvbmUgY2FuIGJlIHVzZWQgYnkgbTQgY29kZSB0aGF0IG1heSBiZSBleGVjdXRlZCBieSBjb25maWd1cmUsCisrIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCisrbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKKytBQ19SRVFVSVJFKFtfTFRfREVDTF9TRURdKQorK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKKytmdW5jX3N0cmlwbmFtZV9jbmYgKCkKKyt7CisrICBjYXNlICR7Mn0gaW4KKysgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisrICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisrICBlc2FjCisrfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgorK10pIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisrCisgIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKK0BAIC02NDUzLDYgKzY4NTYsNyBAQCBBQ19MQU5HX1BPUAorICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgorIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKKyBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisrQUNfUkVRVUlSRShbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0pZG5sCisgIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKKyBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9CisgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KK0BAIC02NTAzLDYgKzY5MDcsMTMgQEAgcHVibGljIGNsYXNzIGZvbyB7CisgfTsKKyBfTFRfRU9GCisgXSkKKysKKytfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCisrY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAorKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OworKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKKytlc2FjCisrCisgZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQorIGRubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCisgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KK0BAIC02NTE0LDcgKzY5MjUsNyBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubworIAorICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbworLSAgICBjYXNlICRwIGluCisrICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KKyAKKyAgICAgLUwqIHwgLVIqIHwgLWwqKQorICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgorQEAgLTY1MjMsMTMgKzY5MzQsMjIgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KKyAJIHByZXY9JHAKKyAJIGNvbnRpbnVlCistICAgICAgIGVsc2UKKy0JIHByZXY9CisgICAgICAgIGZpCisgCisrICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCisrICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorKyAgICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICBlc2FjCisrICAgICAgIGZpCisrICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgZXNhYworICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorLQkgY2FzZSAkcCBpbgorLQkgLUwqIHwgLVIqKQorKwkgY2FzZSAke3ByZXZ9IGluCisrCSAtTCB8IC1SKQorIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKKyAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCisgCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgorQEAgLTY1NDksOCArNjk2OSwxMCBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKKyAJIGZpCisgICAgICAgIGZpCisrICAgICAgIHByZXY9CisgICAgICAgIDs7CisgCisrICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cworICAgICAqLiRvYmpleHQpCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAorICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KK0BAIC02NTg2LDYgKzcwMDgsNyBAQCBlbHNlCisgZmkKKyAKKyAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CisrQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUworIAorICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCisgbTRfaWYoWyQxXSwgW0NYWF0sCitAQCAtNjYyMiw3ICs3MDQ1LDcgQEAgbGludXgqKQorIAorIHNvbGFyaXMqKQorICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gIENDKikKKysgIENDKiB8IHN1bkNDKikKKyAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZworICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCitAQCAtNjczNSw3ICs3MTU4LDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0iJENDIgorICAgbHRfc2F2ZV9HQ0M9JEdDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgQ0M9JHtGNzctImY3NyJ9CisrICBDRkxBR1M9JEZGTEFHUworICAgY29tcGlsZXI9JENDCisgICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCitAQCAtNjc4OSw2ICs3MjE0LDcgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCisgCisgICBHQ0M9JGx0X3NhdmVfR0NDCisgICBDQz0iJGx0X3NhdmVfQ0MiCisrICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKyBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcworIAorIEFDX0xBTkdfUE9QCitAQCAtNjg2NSw3ICs3MjkxLDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSIkQ0MiCisgICBsdF9zYXZlX0dDQz0kR0NDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBDQz0ke0ZDLSJmOTUifQorKyAgQ0ZMQUdTPSRGQ0ZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251CisgCitAQCAtNjkyMSw3ICs3MzQ5LDggQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KKyAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorIAorICAgR0NDPSRsdF9zYXZlX0dDQworLSAgQ0M9IiRsdF9zYXZlX0NDIgorKyAgQ0M9JGx0X3NhdmVfQ0MKKysgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCisgCisgQUNfTEFOR19QT1AKK0BAIC02OTU4LDEwICs3Mzg3LDEyIEBAIF9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKyAKKyAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorLWx0X3NhdmVfQ0M9IiRDQyIKKytsdF9zYXZlX0NDPSRDQworK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyBsdF9zYXZlX0dDQz0kR0NDCisgR0NDPXllcworIENDPSR7R0NKLSJnY2oifQorK0NGTEFHUz0kR0NKRkxBR1MKKyBjb21waWxlcj0kQ0MKKyBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCitAQCAtNjk5Miw3ICs3NDIzLDggQEAgZmkKKyBBQ19MQU5HX1JFU1RPUkUKKyAKKyBHQ0M9JGx0X3NhdmVfR0NDCistQ0M9IiRsdF9zYXZlX0NDIgorK0NDPSRsdF9zYXZlX0NDCisrQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworIF0pIyBfTFRfTEFOR19HQ0pfQ09ORklHCisgCisgCitAQCAtNzAyNyw5ICs3NDU5LDExIEBAIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKyAKKyAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorIGx0X3NhdmVfQ0M9IiRDQyIKKytsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgbHRfc2F2ZV9HQ0M9JEdDQworIEdDQz0KKyBDQz0ke1JDLSJ3aW5kcmVzIn0KKytDRkxBR1M9CisgY29tcGlsZXI9JENDCisgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK0BAIC03MDQyLDcgKzc0NzYsOCBAQCBmaQorIAorIEdDQz0kbHRfc2F2ZV9HQ0MKKyBBQ19MQU5HX1JFU1RPUkUKKy1DQz0iJGx0X3NhdmVfQ0MiCisrQ0M9JGx0X3NhdmVfQ0MKKytDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgXSkjIF9MVF9MQU5HX1JDX0NPTkZJRworIAorIAorQEAgLTcxMDEsNiArNzUzNiwxNSBAQCBfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtBbiBvYmplY3Qgc3ltYm9sIGR1bXBlcl0pCisgQUNfU1VCU1QoW09CSkRVTVBdKQorIF0pCisgCisrIyBfTFRfREVDTF9ETExUT09MCisrIyAtLS0tLS0tLS0tLS0tLS0tCisrIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCisrbTRfZGVmdW4oW19MVF9ERUNMX0RMTFRPT0xdLAorK1tBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQorK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKytfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pCisrQUNfU1VCU1QoW0RMTFRPT0xdKQorK10pCisgCisgIyBfTFRfREVDTF9TRUQKKyAjIC0tLS0tLS0tLS0tLQorQEAgLTcxOTQsOCArNzYzOCw4IEBAIG00X2RlZnVuKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdLAorICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNzIzNCwyMDYgKzc2NzgsMTYyIEBAIF9MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAorIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKKyAKKyAKKy0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KKy1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKKy1bY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKysjIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UgKEZVTkNOQU1FLCBSRVBMQUNFTUVOVC1CT0RZKQorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAorKyMgJ159IEZVTkNOQU1FICcsIGFuZCByZXBsYWNlIGl0cyBib2R5IHdpdGggUkVQTEFDRU1FTlQtQk9EWS4KKyttNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCisrW2RubCB7Cisrc2VkIC1lICcvXiQxICgpJC8sL159ICMgJDEgL2NcCisrJDEgKClcCisre1wKKyttNF9icGF0c3Vic3RzKFskMl0sIFskXSwgW1xcXSwgW15cKFsJIF1cKV0sIFtcXFwxXSkKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytdKQorIAorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorIAorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CisrIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBSZXBsYWNlIGV4aXN0aW5nIHBvcnRhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHNoZWxsIGZ1bmN0aW9ucyB3aXRoCisrIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KKyttNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCisrW2lmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKKysgICAgY2FzZSAkezF9IGluCisrICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKysgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisrICAgIGVzYWNdKQorKworKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisrCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAorKyAgICBjYXNlICR7MX0gaW4KKysgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKysgICAgZXNhYworKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKyAKKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3N0cmlwbmFtZV0sIFtkbmwKKysgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKKyAKKy1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQorLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCistZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAorKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn0KKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCisgCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99CisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1dKQorIAorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJworKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAorKyAgICBjYXNlICR7MX0gaW4KKysgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworKyAgICBlc2FjXSkKKyAKKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3hmb3JtXSwgWyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXSkKKyAKKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQorIAorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW1teLl1dKiQvLmxvLydgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sZW5dLCBbICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfV0pCisrZmkKKyAKKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKKy19CisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQorIAorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAorKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorK2RubCBtNCBleHBhbnNpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgdGhlbiB0aGUgc2hlbGwgZXZhbCB0dXJucyB0aGF0IGludG8gXAorKyAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCisgCistX0xUX0VPRgorLWVzYWMKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisgCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKKytmaQorK10pCisgCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiRbMV0rPVwkWzJdIgorLX0KKy1fTFRfRU9GCisrIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKKysjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKKysjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KKyttNF9kZWZ1bihbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdLAorK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCisrQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKKytBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pCisrQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCisrW2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworICAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKKy19CistCistX0xUX0VPRgorKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworICAgICA7OworLSAgZXNhYworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworK10pCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b19ob3N0X2ZpbGVfY21kXSkKKytfTFRfREVDTChbdG9faG9zdF9maWxlX2NtZF0sIFtsdF9jdl90b19ob3N0X2ZpbGVfY21kXSwKKysgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCisrCisrQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0XSkKKytBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKKytbI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisgXSkKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdKQorK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAorKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAorK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggOTUwM2VjODVkNy4uNzBlODU2ZTA2NSAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtMSwxMCArMSw5IEBACistIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KKyAKKy0jIGxpYnRvb2wgKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKKysjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKKyAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CisgCisgIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCistIyAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCisgIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAKK0BAIC0zOCw3ICszNyw2IEBACisgIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcworICMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQorLSMgICAgICAgLS1uby1maW5pc2ggICAgICAgICAgbGV0IGluc3RhbGwgbW9kZSBhdm9pZCBmaW5pc2ggY29tbWFuZHMKKyAjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKKyAjICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyAjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50CitAQCAtNzEsMTcgKzY5LDE5IEBACisgIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKKyAjICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKKyAjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKKy0jICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQorKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40CisgIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgorICMgICAgICAgICBhdXRvY29uZjoJJGF1dG9jb25mX3ZlcnNpb24KKyAjCisgIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCisrIyBHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidG9vbC8+LgorKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCisgCisgUFJPR1JBTT1saWJ0b29sCisgUEFDS0FHRT1saWJ0b29sCistVkVSU0lPTj0yLjIuN2EKKy1USU1FU1RBTVA9IiAxLjMxMzQgMjAwOS0xMS0yOSIKKy1wYWNrYWdlX3JldmlzaW9uPTEuMzEzNAorK1ZFUlNJT049Mi40CisrVElNRVNUQU1QPSIiCisrcGFja2FnZV9yZXZpc2lvbj0xLjMyOTMKKyAKKyAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCisgaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCitAQCAtMTA2LDkgKzEwNiw2IEBAIF9MVEVDSE9fRU9GJworIH0KKyAKKyAjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgorLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCistIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKKy0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCisgbHRfdXNlcl9sb2NhbGU9CisgbHRfc2FmZV9sb2NhbGU9CisgZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCitAQCAtMTIxLDE1ICsxMTgsMTMgQEAgZG8KKyAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCisgCWZpIgorIGRvbmUKKytMQ19BTEw9QworK0xBTkdVQUdFPUMKKytleHBvcnQgTEFOR1VBR0UgTENfQUxMCisgCisgJGx0X3Vuc2V0IENEUEFUSAorIAorIAorLQorLQorLQorLQorLQorICMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAorICMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCisgIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKK0BAIC0xNDAsNyArMTM1LDcgQEAgcHJvZ3BhdGg9IiQwIgorIAorIAorIDogJHtDUD0iY3AgLWYifQorLTogJHtFQ0hPPSRhc19lY2hvfQorK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQorIDogJHtFR1JFUD0iL2Jpbi9ncmVwIC1FIn0KKyA6ICR7RkdSRVA9Ii9iaW4vZ3JlcCAtRiJ9CisgOiAke0dSRVA9Ii9iaW4vZ3JlcCJ9CitAQCAtMTQ5LDcgKzE0NCw3IEBAIHByb2dwYXRoPSIkMCIKKyA6ICR7TUtESVI9Im1rZGlyIn0KKyA6ICR7TVY9Im12IC1mIn0KKyA6ICR7Uk09InJtIC1mIn0KKy06ICR7U0VEPSIvbW91bnQvZW5kb3Ivd2lsZGVuaHUvbG9jYWwteDg2XzY0L2Jpbi9zZWQifQorKzogJHtTRUQ9Ii9iaW4vc2VkIn0KKyA6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KKyA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KKyAKK0BAIC0xNjksNiArMTY0LDI3IEBAIElGUz0iIAkkbHRfbmwiCisgZGlybmFtZT0icywvW14vXSokLCwiCisgYmFzZW5hbWU9InMsXi4qLywsIgorIAorKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKysjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKytmdW5jX2Rpcm5hbWUgKCkKKyt7CisrICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKysgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKysgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorKyAgICBlbHNlCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorKyAgICBmaQorK30gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKytmdW5jX2Jhc2VuYW1lICgpCisreworKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKyt9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKyAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisgIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorICMgY2FsbDoKK0BAIC0xODMsMTcgKzE5OSwzMSBAQCBiYXNlbmFtZT0icyxeLiovLCwiCisgIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCisgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorIHsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCistfQorKyAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCisrICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKysgICAgZmkKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCisrfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKysjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisrIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisrIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKytmdW5jX3N0cmlwbmFtZSAoKQorK3sKKysgICAgY2FzZSAkezJ9IGluCisrICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKysgICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisrICAgIGVzYWMKKyt9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisgCistIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCisgCisgIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgorIHBhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJworQEAgLTM3Niw2ICs0MDYsMTUgQEAgc2VkX3F1b3RlX3N1YnN0PSdzL1woW2AiJFxcXVwpL1xcXDEvZycKKyAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KKyBkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCisgCisrIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKKysjIHN0cmluZyBsaXRlcmFsbHkuCisrc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCisrCisrIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgY29udmVydHMgYSB3MzIgZmlsZSBuYW1lIG9yIHBhdGgKKysjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucworKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgorK2x0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKysKKyAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQorICMgYFwnLWVkIGluIGlucHV0IHRvIHRoZSBzYW1lLiAgSWYgYW4gb2RkIG51bWJlciBvZiBgXCcgcHJlY2VkZWQgYSAnJCcKKyAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KK0BAIC00MDQsNyArNDQzLDcgQEAgb3B0X3dhcm5pbmc9OgorICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgorIGZ1bmNfZWNobyAoKQorIHsKKy0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCisrICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCisgfQorIAorICMgZnVuY192ZXJib3NlIGFyZy4uLgorQEAgLTQzMCwxNCArNDY5LDE0IEBAIGZ1bmNfZWNob19hbGwgKCkKKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCisgZnVuY19lcnJvciAoKQorIHsKKy0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCisrICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCisgfQorIAorICMgZnVuY193YXJuaW5nIGFyZy4uLgorICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorIGZ1bmNfd2FybmluZyAoKQorIHsKKy0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgorKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKyAKKyAgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKKyAgICAgOgorQEAgLTY1NiwxOSArNjk1LDM1IEBAIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAoKQorICAgICBmaQorIH0KKyAKKy0KKy0KKysjIGZ1bmNfdHJfc2gKKysjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgorKyMgUmVzdWx0IGlzIHN0b3JlZCBpbiAkZnVuY190cl9zaF9yZXN1bHQuICBBbGwgY2hhcmFjdGVycworKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCisrIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KKytmdW5jX3RyX3NoICgpCisreworKyAgY2FzZSAkMSBpbgorKyAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQorKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKKysgICAgOzsKKysgICogKQorKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQorKyAgICA7OworKyAgZXNhYworK30KKyAKKyAKKyAjIGZ1bmNfdmVyc2lvbgorICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorIGZ1bmNfdmVyc2lvbiAoKQorIHsKKysgICAgJG9wdF9kZWJ1ZworKworICAgICAkU0VEIC1uICcvKEMpLyFiIGdvCisgCTptb3JlCisgCS9cLi8heworIAkgIE4KKy0JICBzL1xuIyAvLworKwkgIHMvXG4jIC8gLworIAkgIGIgbW9yZQorIAl9CisgCTpnbworQEAgLTY4NSw3ICs3NDAsOSBAQCBmdW5jX3ZlcnNpb24gKCkKKyAjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyBmdW5jX3VzYWdlICgpCisgeworLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICotaC8geworKyAgICAkb3B0X2RlYnVnCisrCisrICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7CisgICAgICAgICBzL14jIC8vCisgCXMvXiMgKiQvLworIAlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCitAQCAtNzAxLDcgKzc1OCwxMCBAQCBmdW5jX3VzYWdlICgpCisgIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgorIGZ1bmNfaGVscCAoKQorIHsKKysgICAgJG9wdF9kZWJ1ZworKworICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8geworKwk6cHJpbnQKKyAgICAgICAgIHMvXiMgLy8KKyAJcy9eIyAqJC8vCisgCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKK0BAIC03MTQsNyArNzc0LDExIEBAIGZ1bmNfaGVscCAoKQorIAlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKyAJcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKGF1dG9jb25mIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisgCXAKKy0gICAgIH0nIDwgIiRwcm9ncGF0aCIKKysJZAorKyAgICAgfQorKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAorKyAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50CisrICAgICAnIDwgIiRwcm9ncGF0aCIKKyAgICAgcmV0PSQ/CisgICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgorICAgICAgIGV4aXQgJHJldAorQEAgLTcyNiwxMiArNzkwLDM5IEBAIGZ1bmNfaGVscCAoKQorICMgZXhpdF9jbWQuCisgZnVuY19taXNzaW5nX2FyZyAoKQorIHsKKy0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCisrICAgICRvcHRfZGVidWcKKysKKysgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgorICAgICBleGl0X2NtZD1leGl0CisgfQorIAorLWV4aXRfY21kPToKKyAKKysjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0CisrIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCisrIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCisreworKyAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJworKyAgICBteV9zZWRfc2hvcnRfcmVzdD0nMXMvXi4uXCguKlwpJC9cMS87cScKKysKKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKKyt9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKKysjIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCisrIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKKyt7CisrICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJworKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJworKworKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKyt9ICMgZnVuY19zcGxpdF9sb25nX29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKytleGl0X2NtZD06CisgCisgCisgCitAQCAtNzQxLDI2ICs4MzIsNjQgQEAgbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgorIG1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgorIAorICMgR2xvYmFsIHZhcmlhYmxlcy4KKy0jICRtb2RlIGlzIHVuc2V0Cisgbm9ub3B0PQorLWV4ZWN1dGVfZGxmaWxlcz0KKyBwcmVzZXJ2ZV9hcmdzPQorIGxvMm89InMvXFwubG9cJC8uJHtvYmpleHR9LyIKKyBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCisgZXh0cmFjdGVkX2FyY2hpdmVzPQorIGV4dHJhY3RlZF9zZXJpYWw9MAorIAorLW9wdF9kcnlfcnVuPWZhbHNlCistb3B0X2ZpbmlzaD06Cistb3B0X2R1cGxpY2F0ZV9kZXBzPWZhbHNlCistb3B0X3NpbGVudD1mYWxzZQorLW9wdF9kZWJ1Zz06CistCisgIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CisgIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCisgIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgorIGV4ZWNfY21kPQorIAorKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCisrIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCisrZnVuY19hcHBlbmQgKCkKKyt7CisrICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCisrfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQorKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCisrIyBieSBhIHNwYWNlLgorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQorK3sKKysgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKKysgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorK30gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorK2Z1bmNfYXJpdGggKCkKKyt7CisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKKyt9ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfbGVuIHN0cmluZworKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKytmdW5jX2xlbiAoKQorK3sKKysgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCisrfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19sbzJvIG9iamVjdAorK2Z1bmNfbG8ybyAoKQorK3sKKysgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorK30gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKytmdW5jX3hmb3JtICgpCisreworKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKyt9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKyAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CisgIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KK0BAIC04NTAsMTMwICs5NzksMjA0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQorICAgZXNhYworIH0KKyAKKy0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgorLSMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCisrIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKysjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCisrIyByZWxlYXNlIG9mIGxpYnRvb2wuCisrZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCisgeworKyAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCisrICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisrICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisrICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKyskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KKyskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCisrJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorK19MVF9FT0YKKysgICAgICBlbHNlCisrICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKyskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCisrJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKytfTFRfRU9GCisrICAgICAgZmkKKysgICAgZWxzZQorKyAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCisrJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCisrJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgorKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KKyskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCisrX0xUX0VPRgorKyAgICBmaQorIAorLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CistICBjYXNlICQxIGluCistICBjbGVhbnxjbGVhfGNsZXxjbCkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBsaW5rfGxpbnxsaXxsKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZXNhYworKyAgICBleGl0ICRFWElUX01JU01BVENICisrICBmaQorK30KKysKKysKKysjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKKytjYXNlICQxIGluCisrY2xlYW58Y2xlYXxjbGV8Y2wpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2NvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2luc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrbGlua3xsaW58bGl8bCkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKyt1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2VzYWMKKyAKKy0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgorLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbworKworKworKyMgT3B0aW9uIGRlZmF1bHRzOgorK29wdF9kZWJ1Zz06Cisrb3B0X2RyeV9ydW49ZmFsc2UKKytvcHRfY29uZmlnPWZhbHNlCisrb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCisrb3B0X2ZlYXR1cmVzPWZhbHNlCisrb3B0X2ZpbmlzaD1mYWxzZQorK29wdF9oZWxwPWZhbHNlCisrb3B0X2hlbHBfYWxsPWZhbHNlCisrb3B0X3NpbGVudD06Cisrb3B0X3ZlcmJvc2U9OgorK29wdF9zaWxlbnQ9ZmFsc2UKKytvcHRfdmVyYm9zZT1mYWxzZQorKworKworKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQorKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgorK3sKKysgICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKKysgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgIG9wdD0iJDEiCisgICAgIHNoaWZ0CistCisgICAgIGNhc2UgJG9wdCBpbgorLSAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7CistCistICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCisrICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCisgCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgorLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JworIAkJCSRvcHRfZGVidWcKKyAJCQk7OworLQorLSAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCistCQkJc2hpZnQKKysgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCisrCQkJb3B0X2RyeV9ydW49OgorIAkJCTs7CistCistICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7CistICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKKy0gICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7CistICAgICAgLS1uby1maW5pc2gpCW9wdF9maW5pc2g9ZmFsc2UJCQkJOzsKKy0KKy0gICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQljYXNlICQxIGluCistCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorLQkJCSAgY2xlYW4pCTs7CistCQkJICBjb21waWxlKQk7OworLQkJCSAgZXhlY3V0ZSkJOzsKKy0JCQkgIGZpbmlzaCkJOzsKKy0JCQkgIGluc3RhbGwpCTs7CistCQkJICBsaW5rKQkJOzsKKy0JCQkgIHJlbGluaykJOzsKKy0JCQkgIHVuaW5zdGFsbCkJOzsKKy0KKy0JCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKKy0JCQkgICAgIGV4aXRfY21kPWV4aXQKKy0JCQkgICAgIGJyZWFrCistCQkJICAgICA7OworLQkJICAgICAgICBlc2FjCistCistCQkJbW9kZT0iJDEiCisrICAgICAgLS1jb25maWcpCisrCQkJb3B0X2NvbmZpZz06CisrZnVuY19jb25maWcKKysJCQk7OworKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCisrCQkJb3B0YXJnPSIkMSIKKysJCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KKyt9JG9wdGFyZyIKKyAJCQlzaGlmdAorIAkJCTs7CistCisgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKKy0JCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OworLQorLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCistCQkJb3B0X3NpbGVudD06CistCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKKysJCQlvcHRfcHJlc2VydmVfZHVwX2RlcHM9OgorIAkJCTs7CistCistICAgICAgLS1uby1xdWlldHwtLW5vLXNpbGVudCkKKy0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKKysgICAgICAtLWZlYXR1cmVzKQorKwkJCW9wdF9mZWF0dXJlcz06CisrZnVuY19mZWF0dXJlcworIAkJCTs7CistCistICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKysgICAgICAtLWZpbmlzaCkKKysJCQlvcHRfZmluaXNoPToKKytzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisrCQkJOzsKKysgICAgICAtLWhlbHApCisrCQkJb3B0X2hlbHA9OgorKwkJCTs7CisrICAgICAgLS1oZWxwLWFsbCkKKysJCQlvcHRfaGVscF9hbGw9OgorK29wdF9oZWxwPSc6IGhlbHAtYWxsJworKwkJCTs7CisrICAgICAgLS1tb2RlKQorKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhaworKwkJCW9wdGFyZz0iJDEiCisrCQkJb3B0X21vZGU9IiRvcHRhcmciCisrY2FzZSAkb3B0YXJnIGluCisrICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorKyAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKKysKKysgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorKyAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKKysgICAgIGV4aXRfY21kPWV4aXQKKysgICAgIGJyZWFrCisrICAgICA7OworK2VzYWMKKysJCQlzaGlmdAorKwkJCTs7CisrICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKKyAJCQlvcHRfc2lsZW50PWZhbHNlCistCQkJb3B0X3ZlcmJvc2U9OgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorIAkJCTs7CistCistICAgICAgLS1uby12ZXJib3NlKQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorKyAgICAgIC0tbm8tdmVyYm9zZSkKKyAJCQlvcHRfdmVyYm9zZT1mYWxzZQorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorIAkJCTs7CistCistICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgorLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQorKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCisrCQkJb3B0X3NpbGVudD06CisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisrICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQorKwkJCTs7CisrICAgICAgLS12ZXJib3NlfC12KQorKwkJCW9wdF92ZXJib3NlPToKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKytvcHRfc2lsZW50PWZhbHNlCisrCQkJOzsKKysgICAgICAtLXRhZykKKysJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKysJCQlvcHRhcmc9IiQxIgorKwkJCW9wdF90YWc9IiRvcHRhcmciCisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKKytmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCisgCQkJc2hpZnQKKyAJCQk7OworIAorKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKKysgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKKysgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OworKworICAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6CistICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCistCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCistCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9CisrICAgICAgLS0qPSopCisrCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKKysJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQorIAkJCXNoaWZ0CisgCQkJOzsKKyAKKy0gICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OworLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7CistICAgICAgLS1oZWxwLWFsbCkJb3B0X2hlbHA9JzogaGVscC1hbGwnCQkJCTs7CistICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7CistCistICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKKy0KKy0gICAgICAqKQkJbm9ub3B0PSIkb3B0IgorLQkJCWJyZWFrCisrICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKKysgICAgICAtXD8qfC1oKnwtbip8LXYqKQorKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgorKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9CisrCQkJc2hpZnQKKyAJCQk7OworKworKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7CisrICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKKysgICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKKyAgICAgZXNhYworICAgZG9uZQorIAorKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgorKworKyAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKKysgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorKyAgICBub25vcHQ9IiRvcHQiCisrICAgIHNoaWZ0CisrICBmaQorKworKyAgIyBwcmVzZXJ2ZSAtLWRlYnVnCisrICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCisgCisgICBjYXNlICRob3N0IGluCisgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyogfCAqc29sYXJpczIqICkKK0BAIC05ODEsODIgKzExODQsNDQgQEAgZnVuY19lbmFibGVfdGFnICgpCisgICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06CisgICAgICAgOzsKKyAgICAgKikKKy0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKKysgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKKyAgICAgICA7OworICAgZXNhYworIAorLSAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCistICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KKy0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCistfQorKyAgJG9wdF9oZWxwIHx8IHsKKysgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgorKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKyAKKy0jIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorLSMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKKy0jIHJlbGVhc2Ugb2YgbGlidG9vbC4KKy1mdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKKy17CistICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KKy0gICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKy0gICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKy0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgorLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KKy0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCistX0xUX0VPRgorLSAgICAgIGVsc2UKKy0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KKy0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCistJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorLV9MVF9FT0YKKy0gICAgICBmaQorLSAgICBlbHNlCistICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKy0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKKy0kcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCistJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgorLSRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKy1fTFRfRU9GCisrICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKyAgICAgZmkKKyAKKy0gICAgZXhpdCAkRVhJVF9NSVNNQVRDSAorLSAgZmkKKy19CistCisrICAgICMgRGFyd2luIHN1Y2tzCisrICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCisgCistIyMgLS0tLS0tLS0tLS0gIyMKKy0jIyAgICBNYWluLiAgICAjIworLSMjIC0tLS0tLS0tLS0tICMjCistCistJG9wdF9oZWxwIHx8IHsKKy0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKy0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorLQorLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCistICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKy0gIGZpCisrICAgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCisrICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKysgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCisrICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCisrICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisrICAgIGZpCisgCistICB0ZXN0IC16ICIkbW9kZSIgJiYgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFLiIKKysgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgorKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKysgIH0KKyAKKyAKKy0gICMgRGFyd2luIHN1Y2tzCistICBldmFsICJzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIiCisrICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCisrICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorK30KKyAKKyAKKy0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCistICBpZiB0ZXN0IC1uICIkZXhlY3V0ZV9kbGZpbGVzIiAmJiB0ZXN0ICIkbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgorLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCistICAgICRFQ0hPICIkaGVscCIgMT4mMgorLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKy0gIGZpCisgCistICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCistICBnZW5lcmljX2hlbHA9IiRoZWxwIgorLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKy19CisgCisrIyMgLS0tLS0tLS0tLS0gIyMKKysjIyAgICBNYWluLiAgICAjIworKyMjIC0tLS0tLS0tLS0tICMjCisgCisgIyBmdW5jX2xhbGliX3AgZmlsZQorICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KK0BAIC0xMTIxLDEyICsxMjg2LDkgQEAgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICgpCisgIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KKyBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCisgeworLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgorLSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgorLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCistCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCistICAgIGZpCisrICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKysgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisrICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKKyB9CisgCisgIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKK0BAIC0xMTQ5LDcgKzEzMTEsNyBAQCBmdW5jX2V4ZWN1dGVfY21kcyAoKQorICAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCisgICAgIGZvciBjbWQgaW4gJDE7IGRvCisgICAgICAgSUZTPSRzYXZlX2lmcworLSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKKysgICAgICBldmFsIGNtZD1cIiRjbWRcIgorICAgICAgIGZ1bmNfc2hvd19ldmFsICIkY21kIiAiJHsyLTp9IgorICAgICBkb25lCisgICAgIElGUz0kc2F2ZV9pZnMKK0BAIC0xMTcyLDYgKzEzMzQsMzcgQEAgZnVuY19zb3VyY2UgKCkKKyB9CisgCisgCisrIyBmdW5jX3Jlc29sdmVfc3lzcm9vdCBQQVRICisrIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KKysjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorK2Z1bmNfcmVzb2x2ZV9zeXNyb290ICgpCisreworKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCisrICBjYXNlICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgaW4KKysgID0qKQorKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisrICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgOzsKKysgIGVzYWMKKyt9CisrCisrIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICisrIyBJZiBQQVRIIGJlZ2lucyB3aXRoIHRoZSBzeXNyb290LCByZXBsYWNlIGl0IHdpdGggPSBhbmQKKysjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCisrZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKKyt7CisrICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KKysgID8qOiIkbHRfc3lzcm9vdCIqKQorKyAgICBmdW5jX3N0cmlwbmFtZSAiJGx0X3N5c3Jvb3QiICcnICIkMSIKKysgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysgICAgOzsKKysgICopCisrICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCisrICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQorKyAgICA7OworKyAgZXNhYworK30KKysKKyAjIGZ1bmNfaW5mZXJfdGFnIGFyZworICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAorICMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCitAQCAtMTE4NCw4ICsxMzc3LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKKyAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KKyAgICAgICBDQ19xdW90ZWQ9CisgICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCistICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgorICAgICAgIGRvbmUKKyAgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCitAQCAtMTIwNCw4ICsxMzk2LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKKyAJICAgIENDX3F1b3RlZD0KKyAJICAgIGZvciBhcmcgaW4gJENDOyBkbworIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCistCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCisgCSAgICBkb25lCisgCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgCSAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKK0BAIC0xMjc0LDYgKzE0NjUsNDg2IEBAIEVPRgorICAgICB9CisgfQorIAorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKKysjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LAorKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQorKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KKysjIGluICRidWlsZCdzICRQQVRILgorKyMKKysjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0LCBhbmQgd2lsbAorKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQorK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQorKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQorKyAgICAjIGNvbW1hbmQgaXMgbm90IGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKKysgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKKysgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXA9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCisrICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KKysgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAorKyAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorKyAgICBlbHNlCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9CisrICAgIGZpCisrICBmaQorK30KKysjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiBBUkcKKysjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCisrIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5CisrIyBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtIGluICRidWlsZCdzCisrIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KKysjCisrIyBBUkcgaXMgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHdpbjMyLgorKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCisrIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKKysjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KKytmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcworKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBvbGRJRlM9JElGUworKyAgICBJRlM9OgorKyAgICBmb3IgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIGluICQxOyBkbworKyAgICAgIElGUz0kb2xkSUZTCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKKysgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiIDsgdGhlbgorKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgorKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorKyAgICAgICAgZWxzZQorKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgZG9uZQorKyAgICBJRlM9JG9sZElGUworKyAgZmkKKyt9CisrIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKKysKKysKKysjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCisrIyBXcmFwcGVyIGFyb3VuZCBjYWxsaW5nIHRoZSBjeWdwYXRoIHByb2dyYW0gdmlhIExUX0NZR1BBVEguIFRoaXMgaXMgdXNlZCB3aGVuCisrIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKKysjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgorKyMgKDIpLCByZXR1cm5zIHRoZSBDeWd3aW4gZmlsZSBuYW1lIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQKKysjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKKysjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCisrIyBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0IGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4KKysjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KKysjCisrIyBBUkdTIGFyZSBwYXNzZWQgdG8gY3lncGF0aCwgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgdGhlIGZpbGUgbmFtZSBvciBwYXRoIHRvCisrIyBiZSBjb252ZXJ0ZWQuCisrIworKyMgU3BlY2lmeSB0aGUgYWJzb2x1dGUgKm5peCAob3IgdzMyKSBuYW1lIHRvIGN5Z3BhdGggaW4gdGhlIExUX0NZR1BBVEgKKysjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgorK2Z1bmNfY3lncGF0aCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KKysgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKKysgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCisrICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5CisrICAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKysgICAgZmkKKysgIGVsc2UKKysgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKysgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgorKyAgZmkKKyt9CisrI2VuZDogZnVuY19jeWdwYXRoCisrCisrCisrIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgorKyMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAorKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisrfQorKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKKysjIFZlcmlmeSB0aGF0IEFSRzEgKGEgZmlsZSBuYW1lIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKysjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KKytmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSIgOyB0aGVuCisrICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKKysgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKysgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisrICAgICMgRmFsbGJhY2s6CisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjaworKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKKysjIFZlcmlmeSB0aGF0IEZST01fUEFUSCAoYSBwYXRoIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKysjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCisrZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC16ICIkNCIgJiYgdGVzdCAtbiAiJDMiOyB0aGVuCisrICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgorKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKysgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCisrICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KKysgICAgaWYgdGVzdCAieCQxIiAhPSAieCQyIjsgdGhlbgorKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgorKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKKysgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAorKyAgICBlbHNlCisrICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKKysgICAgZmkKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgRlJPTlRQQVQgQkFDS1BBVCBSRVBMIE9SSUcKKysjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCisrIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCisrZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgY2FzZSAkNCBpbgorKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgOzsKKysgIGVzYWMKKysgIGNhc2UgJDQgaW4KKysgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKKysgICAgOzsKKysgIGVzYWMKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwCisrCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfZmlsZV9jbWQgQVJHJworKyMKKysjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisrIyBSZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKysKKysKKysjIGZ1bmNfdG9faG9zdF9maWxlIEFSRworKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfdG9faG9zdF9maWxlICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgorK30KKysjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQorKworKworKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKKysjIGNvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB0b29sY2hhaW4gZm9ybWF0LiBSZXR1cm4KKysjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCisrIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KKytmdW5jX3RvX3Rvb2xfZmlsZSAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGNhc2UgLCQyLCBpbgorKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKKysgICAgICA7OworKyAgICAqKQorKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdAorKyAgICAgIDs7CisrICBlc2FjCisrfQorKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRworKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX25vb3AgKCkKKyt7CisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKKysgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudAorKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQKKysjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKKysjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIGludm9rZWQgdmlhIGAkdG9faG9zdF9wYXRoX2NtZCBBUkcnCisrIworKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKysjIFRoZSByZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKysjCisrIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgorKyMgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0CisrIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCisrIworKyMgQWxsIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKKysjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKKysjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKKysjIHdoZXJlLCBmb3IgYW55IGdpdmVuICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbiB0aGUgJ1hfdG9fWScgdmFsdWUgaXMgdGhlCisrIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKKysjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisrIyB3aWxsIGJyZWFrLgorKworKworKyMgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKysjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQorKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KKyt0b19ob3N0X3BhdGhfY21kPQorK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCisrICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKKysgICAgdG9faG9zdF9wYXRoX2NtZD0iZnVuY19jb252ZXJ0X3BhdGhfJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9IgorKyAgZmkKKyt9CisrCisrCisrIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKKysjIENvbnZlcnRzIHRoZSBwYXRoIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0CisrIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrZnVuY190b19ob3N0X3BhdGggKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorKyAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgorK30KKysjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKKysjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCisreworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisrIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUworKyAgICAjIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlOyBjeWdwYXRoIHR1cm5zIHRoZW0gaW50byAnLjsnIGFuZCAnOy4nOworKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKKysjIGEgd29ya2luZyB3aW5lcGF0aC4gIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkIGluIGEKKysjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKysgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQorKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCisrCisrCisgIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KKyBmdW5jX21vZGVfY29tcGlsZSAoKQorIHsKK0BAIC0xMzE0LDEyICsxOTg1LDEyIEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgCSAgOzsKKyAKKyAJLXBpZSB8IC1mcGllIHwgLWZQSUUpCistICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKKysgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAKKyAJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKKy0JICBsYXRlcj0iJGxhdGVyICRhcmciCisrCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAKK0BAIC0xMzQwLDE1ICsyMDExLDE0IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCisgCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KKyAJICAgIElGUz0iJHNhdmVfaWZzIgorLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBsYXN0YXJnICIkYXJnIgorIAkgIGRvbmUKKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgorIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAorIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgorLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKKysJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCitAQCAtMTM2NCw4ICsyMDM0LDcgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKKyAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCisgCisgICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KKy0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKKy0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBiYXNlX2NvbXBpbGUgIiRsYXN0YXJnIgorICAgICBkb25lICMgZm9yIGFyZworIAorICAgICBjYXNlICRhcmdfbW9kZSBpbgorQEAgLTE0OTYsMTcgKzIxNjUsMTYgQEAgY29tcGlsZXIuIgorIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CisgCWV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgIGZpCistICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCisrICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRvdXRwdXRfb2JqIgorICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgorICAgICBmaQorIAorICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CistICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKKysgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRsb2NrZmlsZSIKKyAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKKyAKKy0gICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCistICAgICAgZXZhbCAic3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIiCistICAgIGZpCisrICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkc3JjZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgc3JjZmlsZT0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgorICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKKyAKK0BAIC0xNTI2LDcgKzIxOTQsNyBAQCBjb21waWxlci4iCisgCisgICAgICAgaWYgdGVzdCAteiAiJG91dHB1dF9vYmoiOyB0aGVuCisgCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgorLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKKysJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRsb2JqIgorICAgICAgIGZpCisgCisgICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXAorQEAgLTE1NzMsMTEgKzIyNDEsMTEgQEAgY29tcGlsZXIuIgorIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCisgICAgICAgZmkKKyAgICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgorLQljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgorKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKKyAgICAgICBmaQorIAorICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgorLSAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKKysgICAgICBmdW5jX2FwcGVuZCBjb21tYW5kICIkc3VwcHJlc3Nfb3V0cHV0IgorICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKKyAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCisgCitAQCAtMTYyMiwxMyArMjI5MCwxMyBAQCBjb21waWxlci4iCisgfQorIAorICRvcHRfaGVscCB8fCB7CistICB0ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CisgfQorIAorIGZ1bmNfbW9kZV9oZWxwICgpCisgeworICAgICAjIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KKy0gICAgY2FzZSAkbW9kZSBpbgorKyAgICBjYXNlICRvcHRfbW9kZSBpbgorICAgICAgICIiKQorICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCisgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCitAQCAtMTY1OSw4ICsyMzI3LDggQEAgVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6CisgCisgICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKKyAgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcworLSAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkaW5nIFBJQyBvYmplY3RzIG9ubHkKKy0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQorKyAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKKysgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQorICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAgLVdjLEZMQUcgICAgICAgICAgcGFzcyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgorQEAgLTE4MDQsNyArMjQ3Miw3IEBAIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHVzaW5nIFJNLiIKKyAgICAgICAgIDs7CisgCisgICAgICAgKikKKy0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKysgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCisgICAgICAgICA7OworICAgICBlc2FjCisgCitAQCAtMTgxOSwxMyArMjQ4NywxMyBAQCBpZiAkb3B0X2hlbHA7IHRoZW4KKyAgIGVsc2UKKyAgICAgeworICAgICAgIGZ1bmNfaGVscCBub2V4aXQKKy0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisrICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKyAJZnVuY19tb2RlX2hlbHAKKyAgICAgICBkb25lCisgICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCisgICAgIHsKKyAgICAgICBmdW5jX2hlbHAgbm9leGl0CistICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisgCWVjaG8KKyAJZnVuY19tb2RlX2hlbHAKKyAgICAgICBkb25lCitAQCAtMTg1NCwxMyArMjUyMiwxNiBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCisgCisgICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCistICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCisrICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbworICAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCisgCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKKyAKKyAgICAgICBkaXI9CisgICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgICoubGEpCisrCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKysJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisrCisgCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCisgCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCisgCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKK0BAIC0xODgyLDcgKzI1NTMsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorIAorIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KKy0JICBkaXI9IiRkaXIvJG9iamRpciIKKysJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgorIAllbHNlCisgCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgorQEAgLTE5MDcsMTAgKzI1NzgsMTAgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCisgCisgICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KKy0gICAgICBpZiBldmFsIHRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCI7IHRoZW4KKy0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcgorKyAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCisrCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXJcIiIKKyAgICAgICBlbHNlCistCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXI6XCQkc2hsaWJwYXRoX3ZhcgorKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJcIiIKKyAgICAgICBmaQorICAgICBkb25lCisgCitAQCAtMTkzOSw4ICsyNjEwLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAJOzsKKyAgICAgICBlc2FjCisgICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KKy0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKKy0gICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgorICAgICBkb25lCisgCisgICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCitAQCAtMTk3MiwyMiArMjY0Miw1OSBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorICAgICBmaQorIH0KKyAKKy10ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQorIAorIAorICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KKyBmdW5jX21vZGVfZmluaXNoICgpCisgeworICAgICAkb3B0X2RlYnVnCistICAgIGxpYmRpcnM9IiRub25vcHQiCisrICAgIGxpYnM9CisrICAgIGxpYmRpcnM9CisgICAgIGFkbWluY21kcz0KKyAKKy0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKy0gICAgICBmb3IgZGlyCistICAgICAgZG8KKy0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKKy0gICAgICBkb25lCisrICAgIGZvciBvcHQgaW4gIiRub25vcHQiICR7MSsiJEAifQorKyAgICBkbworKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCisrCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgorIAorKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KKysJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KKysJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKKysJZWxzZQorKwkgIGZ1bmNfd2FybmluZyAiXGAkb3B0JyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisrCWZpCisrCisrICAgICAgZWxzZQorKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCisrICAgICAgZmkKKysgICAgZG9uZQorKworKyAgICBpZiB0ZXN0IC1uICIkbGlicyI7IHRoZW4KKysgICAgICBpZiB0ZXN0IC1uICIkbHRfc3lzcm9vdCI7IHRoZW4KKysgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisrICAgICAgICBzeXNyb290X2NtZD0icy9cKFsgJ11cKSRzeXNyb290X3JlZ2V4L1wxL2c7IgorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c3Jvb3RfY21kPQorKyAgICAgIGZpCisrCisrICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCisrICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCisrICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKKysgICAgICAgIGRvbmUKKysgICAgICBlbHNlCisrICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAorKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKysJICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCisrCSAgICA+ICR0bXBkaXIvdG1wLWxhCisrCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgorKwlkb25lCisrICAgICAgICAke1JNfXIgIiR0bXBkaXIiCisrICAgICAgZmkKKysgICAgZmkKKysKKysgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKyAgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCisgCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KK0BAIC0xOTk3LDcgKzI3MDQsNyBAQCBmdW5jX21vZGVfZmluaXNoICgpCisgCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KKyAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCisgCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKKy0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcworKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKKyAgICAgICAgJGNtZHMiCisgCWZpCisgICAgICAgZG9uZQorQEAgLTIwMDYsNTMgKzI3MTMsNTUgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQorICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KKyAgICAgJG9wdF9zaWxlbnQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCisgCistICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCistICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKy0gICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKy0gICAgICAkRUNITyAiICAgJGxpYmRpciIKKy0gICAgZG9uZQorLSAgICBlY2hvCistICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorLSAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKy0gICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKy0gICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorLSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorLSAgICAgIGxpYmRpcj1MSUJESVIKKy0gICAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKysgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKysgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworKwkkRUNITyAiICAgJGxpYmRpciIKKysgICAgICBkb25lCisrICAgICAgZWNobworKyAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCisrICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorKwllY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisrCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisrCWxpYmRpcj1MSUJESVIKKysJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorIAorLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCistICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorLSAgICAgIGVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorLSAgICBmaQorLSAgICBlY2hvCisrCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorKwkkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorKwllY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKysgICAgICBmaQorKyAgICAgIGVjaG8KKyAKKy0gICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCistICAgIGNhc2UgJGhvc3QgaW4KKy0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKy0JZWNobyAicGFnZXMuIgorLQk7OworLSAgICAgICopCistICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKy0gICAgICAgIDs7CistICAgIGVzYWMKKy0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKKysgICAgICBjYXNlICRob3N0IGluCisrCXNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCisrCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKysJICBlY2hvICJwYWdlcy4iCisrCSAgOzsKKysJKikKKysJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKysJICA7OworKyAgICAgIGVzYWMKKysgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorKyAgICBmaQorICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyB9CisgCistdGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9CisrdGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQorIAorIAorICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCitAQCAtMjA3Nyw3ICsyNzg2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgorICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCisgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9JGluc3RhbGxfcHJvZworICAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCisgICAgICAgKltcXFwgL11jcFwgKikgaW5zdGFsbF9jcD06IDs7CitAQCAtMjA5Nyw3ICsyODA2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgZG8KKyAgICAgICBhcmcyPQorICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgorLQlmaWxlcz0iJGZpbGVzICRkZXN0IgorKwlmdW5jX2FwcGVuZCBmaWxlcyAiICRkZXN0IgorIAlkZXN0PSRhcmcKKyAJY29udGludWUKKyAgICAgICBmaQorQEAgLTIxMzUsMTEgKzI4NDQsMTEgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAKKyAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgorICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgaWYgdGVzdCAtbiAiJGFyZzIiOyB0aGVuCisgCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgorICAgICAgIGZpCistICAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgIGRvbmUKKyAKKyAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXAorQEAgLTIxNTEsNyArMjg2MCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCisgICAgICAgaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIgorLQlpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCWZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgZmkKKyAgICAgZmkKKyAKK0BAIC0yMjA5LDEwICsyOTE4LDEzIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgICouJGxpYmV4dCkKKyAJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KKy0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCisrCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKKyAJOzsKKyAKKyAgICAgICAqLmxhKQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisrCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorKworIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgorIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorQEAgLTIyMjYsMjMgKzI5MzgsMzAgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAJaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KKyAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAllbHNlCisgCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgorIAkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZnV0dXJlX2xpYmRpcnMgIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZmkKKyAKKyAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCisgCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistCWRpcj0iJGRpciRvYmpkaXIiCisrCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKKyAKKyAJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorKyAgICAgICMgU3RyaXAgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIGRlc3RpbmF0aW9uLgorKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGxpYmRpciIKKysgICAgICBkZXN0bGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysKKysgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRkZXN0ZGlyIgorKyAgICAgIHNfZGVzdGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrCisgCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KKy0JICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICIkZGVzdGRpciIgfCAkU0VEIC1lICJzJSRsaWJkaXJcJCUlImAKKysJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJHNfZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkZGVzdGxpYmRpclwkJSUiYAorIAorIAkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKKyAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CitAQCAtMjMxNSw3ICszMDM0LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKKyAKKyAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgorLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKyAJOzsKKyAKKyAgICAgICAqLmxvKQorQEAgLTI1MDMsNyArMzIyMiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyIgJiYgXAorICAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIKKyAKKy0gICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyIgJiYgJG9wdF9maW5pc2g7IHRoZW4KKysgICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KKyAgICAgICAjIE1heWJlIGp1c3QgZG8gYSBkcnkgcnVuLgorICAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCisgICAgICAgZXhlY19jbWQ9JyRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1maW5pc2gkY3VycmVudF9saWJkaXJzJworQEAgLTI1MTIsNyArMzIzMSw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGZpCisgfQorIAorLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9CisrdGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9CisgCisgCisgIyBmdW5jX2dlbmVyYXRlX2Rsc3ltcyBvdXRwdXRuYW1lIG9yaWdpbmF0b3IgcGljX3AKK0BAIC0yNTU5LDYgKzMyNzgsMTggQEAgZXh0ZXJuIFwiQ1wiIHsKKyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKKyAjZW5kaWYKKyAKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAorICIKKyAKK0BAIC0yNTcwLDIxICszMzAxLDIyIEBAIGV4dGVybiBcIkNcIiB7CisgCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgorIAkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKKyAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KKy0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgorLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKKysJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisgCSAgZG9uZQorIAorIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgICAkRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVAorLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCisrCSAgICAgIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJworKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworIAkgICAgfQorIAkgIGZpCisgCisgCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUCistCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKKysJICAgICAgZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUJworKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworIAkgICAgfQorIAkgIGZpCisgCitAQCAtMjU5MywyMyArMzMyNSwyMyBAQCBleHRlcm4gXCJDXCIgeworIAkgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKKyAJICAgICRvcHRfZHJ5X3J1biB8fCB7CisgCSAgICAgICRSTSAkZXhwb3J0X3N5bWJvbHMKKy0JICAgICAgJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiCisrCSAgICAgIGV2YWwgIiR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJworIAkgICAgICBjYXNlICRob3N0IGluCisgCSAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLSAgICAgICAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgorLSAgICAgICAgICAgICAgICBjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKysgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKysgICAgICAgICAgICAgICAgZXZhbCAnY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworIAkgICAgICAgIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIH0KKyAJICBlbHNlCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgICAke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLycgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCistCSAgICAgICRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQKKy0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorKwkgICAgICBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKKysJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgICAgY2FzZSAkaG9zdCBpbgorIAkgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLQkgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKy0JICAgICAgICAgIGNhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgorKwkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKysJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKyAJICAgICAgICAgIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIH0KK0BAIC0yNjIwLDEwICszMzUyLDUyIEBAIGV4dGVybiBcIkNcIiB7CisgCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgorIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCisgCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkgICRvcHRfZHJ5X3J1biB8fCB7CistCSAgICAkRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiCistCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCistCSAgfQorKyAgICAgICAgICBjYXNlICRob3N0IGluCisrCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKysJICAgICAgIyBpZiBhbiBpbXBvcnQgbGlicmFyeSwgd2UgbmVlZCB0byBvYnRhaW4gZGxuYW1lCisrCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgorKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCisrCSAgICAgICAgZXZhbCAiY3Vycl9sYWZpbGU9XCRsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdCIKKysJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgorKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCisrCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcworKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAorKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgorKwkgICAgICAgICAgICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlX2RsbmFtZSIKKysJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgIGVsc2UKKysJICAgICAgICAgICAgIyBubyBsYWZpbGUuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgLWRscHJlb3BlbiA8aW1wb3J0IGxpYnJhcnk+LgorKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCisrCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorKwkgICAgICAgICAgZmkKKysJICAgICAgICBmaQorKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisrCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgorKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZWxzZQorKwkgICAgICAgICAgICBmdW5jX3dhcm5pbmcgIkNvdWxkIG5vdCBjb21wdXRlIERMTCBuYW1lIGZyb20gJG5hbWUiCisrCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisrCSAgICAgICAgICBmaQorKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKKysJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKKysJICAgICAgICB9CisrCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgorKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisrCSAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorKwkgICAgICAgIH0KKysJICAgICAgZmkKKysJICAgIDs7CisrCSAgICAqKQorKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisrCSAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgICAgfQorKwkgICAgOzsKKysgICAgICAgICAgZXNhYworIAlkb25lCisgCisgCSRvcHRfZHJ5X3J1biB8fCB7CitAQCAtMjY2MSwyNiArMzQzNSw5IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICphZGRyZXNzOworIH0gbHRfZGxzeW1saXN0OworLSIKKy0JICBjYXNlICRob3N0IGluCistCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCistCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKKy0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgorLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKKy0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworLQkgICpvc2Y1KikKKy0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCistLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKKy0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworLQkgICopCistCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OworLQkgIGVzYWMKKy0KKy0JICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLWV4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CisrZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAorIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKKy0kbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CisrTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CisgbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KKyB7XAorICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCitAQCAtMjczNiw3ICszNDkzLDcgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCisgCSAgY2FzZSAkYXJnIGluCisgCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7CistCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBzeW10YWJfY2ZsYWdzICIgJGFyZyIgOzsKKyAJICBlc2FjCisgCWRvbmUKKyAKK0BAIC0yNzk2LDkgKzM1NTMsMTEgQEAgZnVuY193aW4zMl9saWJpZCAoKQorICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCisgICAgIDs7CisgICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCistICAgIGlmICRPQkpEVU1QIC1mICIkMSIgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKKy0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCistICAgICAgd2luMzJfbm1yZXM9YCROTSAtZiBwb3NpeCAtQSAiJDEiIHwKKysgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCisrICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKKysgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIHwKKyAJJFNFRCAtbiAtZSAnCisgCSAgICAxLDEwMHsKKyAJCS8gSSAveworQEAgLTI4MjcsNiArMzU4NiwxMzEgQEAgZnVuY193aW4zMl9saWJpZCAoKQorICAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgorIH0KKyAKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiBBUkcKKysjCisrIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisrIyBpbXBvcnQgbGlicmFyeSBBUkcuCisrIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKytmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAorK30KKysKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlIFNFQ1RJT05fTkFNRSBMSUJOQU1FcworKyMKKysjIFRoZSBpcyB0aGUgY29yZSBvZiBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGEKKysjIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlCisrIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KKysjCisrIyBTRUNUSU9OX05BTUUgaXMgZWl0aGVyIC5pZGF0YSQ2IG9yIC5pZGF0YSQ3LCBkZXBlbmRpbmcKKysjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCisrIworKyMgRWNob3MgdGhlIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlCisrIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorKyAgJE9CSkRVTVAgLXMgLS1zZWN0aW9uICIkMSIgIiQyIiAyPi9kZXYvbnVsbCB8CisrICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKKysgICAgICAjIFBsYWNlIG1hcmtlciBhdCBiZWdpbm5pbmcgb2YgYXJjaGl2ZSBtZW1iZXIgZGxsbmFtZSBzZWN0aW9uCisrICAgICAgcy8uKi89PT09TUFSSz09PT0vCisrICAgICAgcAorKyAgICAgIGQKKysgICAgfQorKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0CisrICAgICMgYXJlIGFsd2F5cyB1bmludGVyZXN0aW5nCisrICAgIC86WwkgXSpmaWxlIGZvcm1hdCBwZVtpXVx7LDFcfS0vZAorKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKKysgICAgIyBFbnN1cmUgbWFya2VyIGlzIHByaW50ZWQKKysgICAgL149PT09TUFSSz09PT0vcAorKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycworKyAgICAvXi5cezQzXH0vIWQKKysgICAgIyBGcm9tIHJlbWFpbmluZyBsaW5lcywgcmVtb3ZlIGZpcnN0IDQzIGNoYXJhY3RlcnMKKysgICAgcy9eLlx7NDNcfS8vJyB8CisrICAgICRTRUQgLW4gJworKyAgICAgICMgSm9pbiBtYXJrZXIgYW5kIGFsbCBsaW5lcyB1bnRpbCBuZXh0IG1hcmtlciBpbnRvIGEgc2luZ2xlIGxpbmUKKysgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCisrICAgICAgSAorKyAgICAgICQgYiBwYXJhCisrICAgICAgYgorKyAgICAgIDpwYXJhCisrICAgICAgeAorKyAgICAgIHMvXG4vL2cKKysgICAgICAjIFJlbW92ZSB0aGUgbWFya2VyCisrICAgICAgcy9ePT09PU1BUks9PT09Ly8KKysgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCisrICAgICAgcy9bXC4gXHRdKiQvLworKyAgICAgICMgUHJpbnQKKysgICAgICAvLi9wJyB8CisrICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAorKyAgICAjIGNvbnRlbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIGFsbCBtZW1iZXJzIG9mIHRoZQorKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCisrICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKKysgICAgIyBhICcuJyAodGhhdCBpcywgb2JqZHVtcCdzIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVucHJpbnRhYmxlCisrICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCisrICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5CisrICAgICMgYmVnaW5zIHdpdGggYSBsaXRlcmFsICcuJyBvciBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKKysgICAgIyBhICcuJy4KKysgICAgIworKyAgICAjIE9mIHRob3NlIHRoYXQgcmVtYWluLCBwcmludCB0aGUgZmlyc3Qgb25lLgorKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJworK30KKysKKysjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCisrIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisrIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKysjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCisrZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAorKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCisrIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisrIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKysjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCisrZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCisrICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCisrfQorKworKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRworKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKysjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorKyMKKysjIFRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgZm9yIHVzZSB3aGVuICRETExUT09MCisrIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCisrIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKytmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCisrICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKKysgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKKysgIGVsaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgOyB0aGVuCisrICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5CisrICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDYnICIkMSJgCisrICBlbHNlCisrICAgICMgdW5rbm93bgorKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0iIgorKyAgZmkKKyt9CisgCisgCisgIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCitAQCAtMjkxNyw3ICszODAxLDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCisgCSAgICBkYXJ3aW5fZmlsZT0KKyAJICAgIGRhcndpbl9maWxlcz0KKyAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbworLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKKysJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAorIAkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcworIAkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKKyAJICAgICRSTSAtcmYgdW5mYXQtJCQKK0BAIC0yOTMyLDcgKzM4MTYsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKKyAgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgorIAk7OworICAgICAgIGVzYWMKKy0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAorKyAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAorICAgICBkb25lCisgCisgICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgorQEAgLTMwMTQsNyArMzg5OCwxMTAgQEAgZnVuY19mYWxsYmFja19lY2hvICgpCisgX0xURUNIT19FT0YnCisgfQorICAgICBFQ0hPPVwiJHFFQ0hPXCIKKy0gIGZpXAorKyAgZmkKKysKKysjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bworKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgorKyMgL3NjcmlwdC8gYW5kIHRoZSB3cmFwcGVyIC9leGVjdXRhYmxlLyB3aGljaCBpcyB1c2VkIG9ubHkgb24KKysjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgorKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKKysjIHRoaXMgcGF0dGVybikuCisrIworKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAorKyMgLS1sdC1kdW1wLXNjcmlwdC4gVGhlcmUgaXMsIGRlbGliZXJhdGVseSwgbm8gLS1sdC1oZWxwLgorKyMKKysjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQorKyMgc2NyaXB0J3MgJDAgdmFsdWUsIGZvbGxvd2VkIGJ5ICIkQCIuCisrbHRfb3B0aW9uX2RlYnVnPQorK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQorK3sKKysgIGx0X3NjcmlwdF9hcmcwPVwkMAorKyAgc2hpZnQKKysgIGZvciBsdF9vcHQKKysgIGRvCisrICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCisrICAgIC0tbHQtZGVidWcpIGx0X29wdGlvbl9kZWJ1Zz0xIDs7CisrICAgIC0tbHQtZHVtcC1zY3JpcHQpCisrICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKKysgICAgICAgIHRlc3QgXCJYXCRsdF9kdW1wX0RcIiA9IFwiWFwkbHRfc2NyaXB0X2FyZzBcIiAmJiBsdF9kdW1wX0Q9LgorKyAgICAgICAgbHRfZHVtcF9GPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlXi4qLyUlJ1xgCisrICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCisrICAgICAgICBleGl0IDAKKysgICAgICA7OworKyAgICAtLWx0LSopCisrICAgICAgICBcJEVDSE8gXCJVbnJlY29nbml6ZWQgLS1sdC0gb3B0aW9uOiAnXCRsdF9vcHQnXCIgMT4mMgorKyAgICAgICAgZXhpdCAxCisrICAgICAgOzsKKysgICAgZXNhYworKyAgZG9uZQorKworKyAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgorKyAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCisrICBmaQorK30KKysKKysjIFVzZWQgd2hlbiAtLWx0LWRlYnVnLiBQcmludHMgaXRzIGFyZ3VtZW50cyB0byBzdGRvdXQKKysjIChyZWRpcmVjdGlvbiBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikKKytmdW5jX2x0X2R1bXBfYXJncyAoKQorK3sKKysgIGx0X2R1bXBfYXJnc19OPTE7CisrICBmb3IgbHRfYXJnCisrICBkbworKyAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCisrICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCisrICBkb25lCisrfQorKworKyMgQ29yZSBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KKytmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlICgpCisreworKyIKKysgIGNhc2UgJGhvc3QgaW4KKysgICMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworKyAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKysgICAgJEVDSE8gIlwKKysgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKKysgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorKyAgICAgIGZpCisrICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisrIgorKyAgICA7OworKworKyAgKikKKysgICAgJEVDSE8gIlwKKysgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKKysgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorKyAgICAgIGZpCisrICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisrIgorKyAgICA7OworKyAgZXNhYworKyAgJEVDSE8gIlwKKysgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCisrICAgICAgZXhpdCAxCisrfQorKworKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorKyMgU3RyaXBzIG9wdGlvbnMgaW4gdGhlIC0tbHQtKiBuYW1lc3BhY2UgZnJvbSBcJEAgYW5kCisrIyBsYXVuY2hlcyB0YXJnZXQgYXBwbGljYXRpb24gd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KKytmdW5jX2V4ZWNfcHJvZ3JhbSAoKQorK3sKKysgIGZvciBsdF93cl9hcmcKKysgIGRvCisrICAgIGNhc2UgXCRsdF93cl9hcmcgaW4KKysgICAgLS1sdC0qKSA7OworKyAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OworKyAgICBlc2FjCisrICAgIHNoaWZ0CisrICBkb25lCisrICBmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlIFwkezErXCJcJEBcIn0KKyt9CisrCisrICAjIFBhcnNlIG9wdGlvbnMKKysgIGZ1bmNfcGFyc2VfbHRfb3B0aW9ucyBcIlwkMFwiIFwkezErXCJcJEBcIn0KKyAKKyAgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCisgICB0aGlzZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKiQlJSdcYAorQEAgLTMwNzgsNyArNDA2NSw3IEBAIF9MVEVDSE9fRU9GJworIAorICAgICAjIHJlbGluayBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeQorICAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCistICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcIlwkcmVsaW5rX2NvbW1hbmRcIiAyPiYxXGA7IHRoZW4gOgorKyAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCRyZWxpbmtfY29tbWFuZCAyPiYxXGA7IHRoZW4gOgorICAgICAgIGVsc2UKKyAJJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgorIAkkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKK0BAIC0zMTAyLDYgKzQwODksMTggQEAgX0xURUNIT19FT0YnCisgCisgICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgorIAorKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorKwkjCisrCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZworKwkjIHRvIHNobGlicGF0aCwgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoIGFyZSBQQVRIIGFuZCB1bmluc3RhbGxlZAorKwkjIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuCisrCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorKwkgICRFQ0hPICJcCisrICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICisrICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisrIgorKwlmaQorKworIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KKyAJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorIAkgICRFQ0hPICJcCitAQCAtMzExNiwzNSArNDExNSwxMCBAQCBfTFRFQ0hPX0VPRicKKyAiCisgCWZpCisgCistCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCistCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorLQkgICRFQ0hPICJcCistICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICistICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICistIgorLQlmaQorLQorIAkkRUNITyAiXAorICAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCisgICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KKy0iCistCWNhc2UgJGhvc3QgaW4KKy0JIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCistCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCistCSAgJEVDSE8gIlwKKy0gICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKy0iCistCSAgOzsKKy0KKy0JKikKKy0JICAkRUNITyAiXAorLSAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorLSIKKy0JICA7OworLQllc2FjCistCSRFQ0hPICJcCistICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorLSAgICAgIGV4aXQgMQorKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KKyAgICAgZmkKKyAgIGVsc2UKKyAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgorQEAgLTMxNTgsMTY2ICs0MTMyLDYgQEAgZmlcCisgfQorIAorIAorLSMgZnVuY190b19ob3N0X3BhdGggYXJnCistIworLSMgQ29udmVydCBwYXRocyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KKy0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKKy0jIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQorLSMgYnVpbGQgZW52aXJvbm1lbnRzOgorLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0CistIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KKy0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndworLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3CistIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KKy0jIEluIHRoZSBuYXRpdmUgbWluZ3cgY2FzZSwgdGhlIChtc3lzKSBzaGVsbCBhdXRvbWF0aWNhbGx5CistIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKKy0jIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCistIyBTaW1pbGFyIGFjY29tbW9kYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yICRob3N0IG1pbmd3IGFuZAorLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCistIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCistIworLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bworLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCistIyBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorLWZ1bmNfdG9faG9zdF9wYXRoICgpCisteworLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKy0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKm1pbmd3KiApCistICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCistICAgICAgICBjYXNlICRidWlsZCBpbgorLSAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cworLSAgICAgICAgICAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKKy0gICAgICAgICAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAqY3lnd2luKiApCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC13ICIkMSIgfAorLQkgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKiApCistICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybworLSAgICAgICAgICAgICMgZXJyb3IgY29kZSwgc28gd2UgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2YKKy0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAorLSAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorLSAgICAgICAgICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aAorLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucworLSAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKKy0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KKy0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8CistICAgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9CistICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCistICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorLSAgICAgICAgICAjIEZhbGxiYWNrOgorLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorLSAgICAgICAgZmkKKy0gICAgICAgIDs7CistICAgIGVzYWMKKy0gIGZpCistfQorLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAorLQorLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZworLSMKKy0jIENvbnZlcnQgcGF0aGxpc3RzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgorLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQorLSMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCistIyBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBoZXJlKToKKy0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAorLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCistIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKKy0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndworLSMKKy0jIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvCistIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKKy0jIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKKy0jIG9uIG91dHB1dC4KKy0jCistIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKy0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gb24gJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCistIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KKy1mdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKKy17CistICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKKy0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKm1pbmd3KiApCistICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCistICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKy0gICAgICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKy0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCistCWZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCistICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistICAgICAgICBjYXNlICRidWlsZCBpbgorLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KKy0gICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gCistCSAgICAgICggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiICkgMj4vZGV2L251bGwgfAorLQkgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKmN5Z3dpbiogKQorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfAorLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICogKQorLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cworLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTPSRJRlMKKy0gICAgICAgICAgICBJRlM9OgorLSAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbworLSAgICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCistICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgorLSAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgorLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KKy0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorLSAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorLSAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOyB0aGVuCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgorLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKy0gICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCistICAgICAgICAgICMgc3BlY2lmaWNhdGlvbnMuIFRoZSBmaXggaXMgbm90IHRvIGNvbXBsaWNhdGUgdGhlIGV4cHJlc3Npb24KKy0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgorLSAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndworLSAgICAgICAgICAjIGNhc2Ugd29ya3MgcHJvcGVybHkuCistICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgorLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCistICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zImAKKy0gICAgICAgIGZpCistICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjaworLSAgICAgICAgY2FzZSAiJDEiIGluCistICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgorLSAgICAgICAgICAgIDs7CistICAgICAgICBlc2FjCistICAgICAgICBjYXNlICIkMSIgaW4KKy0gICAgICAgICAgKjogKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7IgorLSAgICAgICAgICAgIDs7CistICAgICAgICBlc2FjCistICAgICAgICA7OworLSAgICBlc2FjCistICBmaQorLX0KKy0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0CistCisgIyBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCisgIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0CisgIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKK0BAIC0zMzM0LDEwICs0MTQ4LDYgQEAgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYyAoKQorIAorICAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCistCistICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIiRTSEVMTCAkb3V0cHV0IiwKKy0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCistICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgorICovCisgRU9GCisgCSAgICBjYXQgPDwiRU9GIgorQEAgLTM0NjIsMjIgKzQyNzIsMTMgQEAgaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAorIH0gd2hpbGUgKDApCisgCistI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgorLSNpZiBkZWZpbmVkIExUX0RFQlVHV1JBUFBFUgorLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncworLXN0YXRpYyB2b2lkCistbHR3cmFwcGVyX2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmbXQsIC4uLikKKy17CistICAgIHZhX2xpc3QgYXJnczsKKy0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7CistICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworLSAgICB2YV9lbmQgKGFyZ3MpOworLX0KKysjaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCisrc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7CisgI2Vsc2UKKy0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykKKytzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKKyAjZW5kaWYKKyAKKy1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOworK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJsaWJ0b29sLXdyYXBwZXIiOyAvKiBpbiBjYXNlIHhzdHJkdXAgZmFpbHMgKi8KKyAKKyB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKKyBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOworQEAgLTM0ODcsNyArNDI4OCwxMCBAQCBjaGFyICpjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpOworIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOworIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKKyBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKKy12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOworK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cisrdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Cisrc3RhdGljIGNvbnN0IGNoYXIgKm5vbm51bGwgKGNvbnN0IGNoYXIgKnMpOworK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7Cisgdm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKKyBjaGFyICpsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpOworIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CitAQCAtMzQ5NywxNCArNDMwMSwxNCBAQCB2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFICpmKTsKKyBFT0YKKyAKKyAJICAgIGNhdCA8PEVPRgorLWNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Cisrdm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKKyBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CisgRU9GCisgCisgCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiR0ZW1wX3JwYXRoIgorKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgorIAkgICAgICBjYXQgPDxFT0YKKy1jb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7CisrY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CisgRU9GCisgCSAgICBlbHNlCisgCSAgICAgIGNhdCA8PCJFT0YiCitAQCAtMzUxMywxMCArNDMxNywxMCBAQCBFT0YKKyAJICAgIGZpCisgCisgCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKy0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgorKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKKyAJICAgICAgY2F0IDw8RU9GCisgY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7CistY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOworIEVPRgorIAkgICAgZWxzZQorIAkgICAgICBjYXQgPDwiRU9GIgorQEAgLTM1MzksMTIgKzQzNDMsMTAgQEAgRU9GCisgCSAgICBjYXQgPDwiRU9GIgorIAorICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCistI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggIDUKKyAKKy1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKmx0d3JhcHBlcl9vcHRpb25fcHJlZml4ID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVg7CistCisgc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKKytzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfb3B0ICAgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZGVidWciOworIAorIGludAorIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtMzU2MSwxMCArNDM2MywxMyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgaW50IGk7CisgCisgICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOworKyAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworIAorLSAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQgKi8KKysgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0CisrICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKKysgICAqIGFyZ3pbMF0sIHdoaWNoIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkKKysgICAqLworKyAgbmV3YXJnYz0wOworICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKyAgICAgeworICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQorQEAgLTM1ODEsMjEgKzQzODYsNTQgQEAgRU9GCisgCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7CisgCSAgcmV0dXJuIDA7CisgCX0KKysgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCisrCXsKKysgICAgICAgICAgbHRfZGVidWcgPSAxOworKyAgICAgICAgICBjb250aW51ZTsKKysJfQorKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSA9PSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisrICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKKysgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKysgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorKyAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKysgICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCisrICAgICAgICAgICAqLworKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgICJ1bnJlY29nbml6ZWQgJXMgb3B0aW9uOiAnJXMnIiwKKysgICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKKysgICAgICAgIH0KKysgICAgICAvKiBvdGhlcndpc2UgLi4uICovCisrICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7CisgICAgIH0KKysgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CisrCisrRU9GCisrCSAgICBjYXQgPDxFT0YKKysgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7CisrRU9GCisrCSAgICBjYXQgPDwiRU9GIgorKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIHByb2dyYW1fbmFtZTogJXNcbiIsIHByb2dyYW1fbmFtZSk7CisgCistICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisgICB0bXBfcGF0aHNwZWMgPSBmaW5kX2V4ZWN1dGFibGUgKGFyZ3ZbMF0pOworICAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQorLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKKy0JCQkgIHRtcF9wYXRoc3BlYykpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKKysJCSAgdG1wX3BhdGhzcGVjKTsKKyAKKyAgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKKy0JCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisrCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKKyAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOworIAorLSAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisrICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKyAKKyAgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCitAQCAtMzYxMyw4ICs0NDUxLDkgQEAgRU9GCisgICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKKyAgIHRtcF9wYXRoc3BlYyA9IDA7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorLQkJCSAgdGFyZ2V0X25hbWUpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCisrCQkgIHRhcmdldF9uYW1lKTsKKyBFT0YKKyAKKyAJICAgIGNhdCA8PEVPRgorQEAgLTM2NjQsMzUgKzQ1MDMsMTkgQEAgRU9GCisgCisgICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KKyAgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KKy0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworKyAgLyogVXBkYXRlIHRoZSBETEwgc2VhcmNocGF0aC4gIEVYRV9QQVRIX1ZBTFVFICgkZGxsc2VhcmNocGF0aCkgbXVzdAorKyAgICAgYmUgcHJlcGVuZGVkIGJlZm9yZSAodGhhdCBpcywgYXBwZWFyIGFmdGVyKSBMSUJfUEFUSF9WQUxVRSAoJHRlbXBfcnBhdGgpCisrICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKKysgICAgIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuICovCisgICBsdF91cGRhdGVfZXhlX3BhdGggKEVYRV9QQVRIX1ZBUk5BTUUsIEVYRV9QQVRIX1ZBTFVFKTsKKysgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworIAorLSAgbmV3YXJnYz0wOworLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKy0gICAgeworLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCistICAgICAgICB7CistICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKy0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorLSAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgorLSAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCistICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCistICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCistICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgorLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKy0gICAgICAgICAgICovCistICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAorLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOworLSAgICAgICAgfQorLSAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKy0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKKy0gICAgfQorLSAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKKy0KKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAgICAgKCgiKG1haW4pIGx0X2FyZ3ZfemVybyA6ICVzXG4iLCAobHRfYXJndl96ZXJvID8gbHRfYXJndl96ZXJvIDogIjxOVUxMPiIpKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGx0X2FyZ3ZfemVybzogJXNcbiIsCisrCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOworICAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKKyAgICAgeworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKKysgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIG5ld2FyZ3pbJWRdOiAlc1xuIiwKKysJCSAgICAgIGksIG5vbm51bGwgKG5ld2FyZ3pbaV0pKTsKKyAgICAgfQorIAorIEVPRgorQEAgLTM3MDYsNyArNDUyOSw5IEBAIEVPRgorICAgaWYgKHJ2YWwgPT0gLTEpCisgICAgIHsKKyAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAgICIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiAlc1xuIiwKKysJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworICAgICAgIHJldHVybiAxMjc7CisgICAgIH0KKyAgIHJldHVybiBydmFsOworQEAgLTM3MjgsNyArNDU1Myw3IEBAIHhtYWxsb2MgKHNpemVfdCBudW0pCisgeworICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKKyAgIGlmICghcCkKKy0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7CisrICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7CisgCisgICByZXR1cm4gcDsKKyB9CitAQCAtMzc2Miw4ICs0NTg3LDggQEAgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKKyB7CisgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsCistCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoY2hlY2tfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CisgICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKKyAgICAgcmV0dXJuIDA7CisgCitAQCAtMzc4MCw4ICs0NjA1LDggQEAgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQorICAgaW50IHJ2YWwgPSAwOworICAgc3RydWN0IHN0YXQgc3Q7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAorLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1ha2VfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CisgICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKKyAgICAgcmV0dXJuIDA7CisgCitAQCAtMzgwNyw4ICs0NjMyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQorICAgaW50IHRtcF9sZW47CisgICBjaGFyICpjb25jYXRfbmFtZTsKKyAKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCistCQkJICB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCisrICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHdyYXBwZXIpKTsKKyAKKyAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCisgICAgIHJldHVybiBOVUxMOworQEAgLTM4NjEsNyArNDY4Niw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAJCXsKKyAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KKyAJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQorLQkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworIAkJICB0bXBfbGVuID0gc3RybGVuICh0bXApOworIAkJICBjb25jYXRfbmFtZSA9CisgCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CitAQCAtMzg4Niw3ICs0NzEyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQorICAgICB9CisgICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCisgICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCistICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworICAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKyAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CisgICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOworQEAgLTM5MTIsOCArNDczOSw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAgIGludCBoYXNfc3ltbGlua3MgPSAwOworICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQorICAgICB7CistICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCistCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAgICJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKKyAgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCisgCXsKKyAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQorQEAgLTM5MzUsOCArNDc2Myw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAJfQorICAgICAgIGVsc2UKKyAJeworLQkgIGNoYXIgKmVycnN0ciA9IHN0cmVycm9yIChlcnJubyk7CistCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOworKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgImVycm9yIGFjY2Vzc2luZyBmaWxlIFwiJXNcIjogJXMiLAorKwkJICAgIHRtcF9wYXRoc3BlYywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworIAl9CisgICAgIH0KKyAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOworQEAgLTM5NDksNyArNDc3OCw4IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKKyAgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKKyAgICAgeworLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisrICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSJjb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKKyAgICAgfQorICAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7CisgI2VuZGlmCitAQCAtMzk3NSwxMSArNDgwNSwyNSBAQCBzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQorICAgcmV0dXJuIHN0cjsKKyB9CisgCisrdm9pZAorK2x0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCisreworKyAgdmFfbGlzdCBhcmdzOworKyAgaWYgKGx0X2RlYnVnKQorKyAgICB7CisrICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUpOworKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworKyAgICAgIHZhX2VuZCAoYXJncyk7CisrICAgIH0KKyt9CisrCisgc3RhdGljIHZvaWQKKy1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCisrbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICpmaWxlLAorKwkgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1vZGUsCisgCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQorIHsKKy0gIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKKysgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKKyAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKKyAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOworIAorQEAgLTM5ODgsMjAgKzQ4MzIsMzIgQEAgbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorIH0KKyAKKyB2b2lkCistbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKKytsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKKyB7CisgICB2YV9saXN0IGFwOworICAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKKy0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCBmaWxlLCBsaW5lLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CisgICB2YV9lbmQgKGFwKTsKKyB9CisgCisrc3RhdGljIGNvbnN0IGNoYXIgKgorK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCisreworKyAgcmV0dXJuIHMgPyBzIDogIihudWxsKSI7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICoKKytub25lbXB0eSAoY29uc3QgY2hhciAqcykKKyt7CisrICByZXR1cm4gKHMgJiYgISpzKSA/ICIoZW1wdHkpIiA6IG5vbm51bGwgKHMpOworK30KKysKKyB2b2lkCisgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOworICAgeworICNpZmRlZiBIQVZFX1NFVEVOVgorICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLworQEAgLTQwNDksOSArNDkwNSw5IEBAIGx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCkKKyB2b2lkCisgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisrICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CisgCisgICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCisgICAgIHsKK0BAIC00MDcwLDkgKzQ5MjYsOSBAQCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHZvaWQKKyBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKysgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKKyAKKyAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKKyAgICAgeworQEAgLTQyMjIsNyArNTA3OCw3IEBAIEVPRgorIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCisgeworICAgICAkb3B0X2RlYnVnCistICAgIGNhc2UgYGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIiB8ICRTRUQgLWUgMTBxYCBpbgorKyAgICBjYXNlIGBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIHwgJFNFRCAtZSAxMHFgIGluCisgICAgICppbXBvcnQqKSA6IDs7CisgICAgICopIGZhbHNlIDs7CisgICAgIGVzYWMKK0BAIC00NDAxLDkgKzUyNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgOzsKKyAJICAqKQorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKKyAJICAgIGVsc2UKKy0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKysJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCisgCSAgICBmaQorIAkgICAgcHJldj0KKyAJICAgIGNvbnRpbnVlCitAQCAtNDQyNyw3ICs1MjgzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICotKi1kYXJ3aW4qKQorIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCisgCQkqIiAkcWFyZy5sdGZyYW1ld29yayAiKikgOzsKKy0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKysJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisgCQkgICA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CitAQCAtNDQ0Niw3ICs1MzAyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIG1vcmVhcmdzPQorIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAorIAkgICAgZG8KKy0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKKysjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKKyAJICAgICAgYXJnPSRmaWwKKyAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCisgCitAQCAtNDQ3NSw3ICs1MzMxLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KKy0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgorIAkJICAgICAgcHJldj0KKyAJCSAgICAgIGNvbnRpbnVlCisgCQkgICAgZWxzZQorQEAgLTQ0ODcsNyArNTM0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCisgCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKyAJCSAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCistCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisrCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgorIAkJICAgIHByZXY9CisgCQkgIGZpCisgCitAQCAtNDU1NywxMiArNTQxMywxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCisgCSAgICBjYXNlICIkcnBhdGggIiBpbgorIAkgICAgKiIgJGFyZyAiKikgOzsKKy0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKKyAJICAgIGVzYWMKKyAJICBlbHNlCisgCSAgICBjYXNlICIkeHJwYXRoICIgaW4KKyAJICAgICoiICRhcmcgIiopIDs7CistCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7CisgCSAgICBlc2FjCisgCSAgZmkKKyAJICBwcmV2PQorQEAgLTQ1NzQsMjggKzU0MzAsMjggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBjb250aW51ZQorIAkgIDs7CisgCXdlYWspCistCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCisrCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKKyAJICBwcmV2PQorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGNjbGlua2VyKQorLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCisgCSAgcHJldj0KKyAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKKyAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAl4Y29tcGlsZXIpCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGxpbmtlcikKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHdsJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgorQEAgLTQ2ODYsMTUgKzU1NDIsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJOzsKKyAKKyAgICAgICAtTCopCistCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCistCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCisrCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCisrCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCisgCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgorIAkgIGVsc2UKKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm5lZWQgcGF0aCBmb3IgXGAtTCcgb3B0aW9uIgorIAkgIGZpCisgCWZpCisrCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJY2FzZSAkZGlyIGluCisgCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKK0BAIC00NzA2LDEwICs1NTYzLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgOzsKKyAJZXNhYworIAljYXNlICIkZGVwbGlicyAiIGluCistCSoiIC1MJGRpciAiKikgOzsKKysJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKKysJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCisrCSAgOzsKKyAJKikKKy0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCistCSAgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiCisrCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcworKwkgIGNhc2UgJGRpciBpbgorKwkgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qIHwgPSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKKysJICBlc2FjCisrCSAgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIKKyAJICA7OworIAllc2FjCisgCWNhc2UgJGhvc3QgaW4KK0BAIC00NzE4LDEyICs1NTgxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisgCSAgKiI6JGRpcjoiKikgOzsKKyAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokZGlyIjs7CisrCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKKyAJICBlc2FjCisgCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisgCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OworLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisrCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC00NzQ3LDcgKzU2MTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgOzsKKyAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCisgCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yaworLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKKyAJICAgIGNvbnRpbnVlCisgCSAgICA7OworIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKK0BAIC00NzU4LDkgKzU2MjEsNiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgIyBDb21waWxlciBpbnNlcnRzIGxpYmMgaW4gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIHRocmVhZHMgdG8gd29yaworIAkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCisgCSAgICA7OworLQkgICotKi1saW51eCopCistCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKKy0JICAgIDs7CisgCSAgZXNhYworIAllbGlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjX3IiOyB0aGVuCisgCSBjYXNlICRob3N0IGluCitAQCAtNDc3MCw3ICs1NjMwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgOzsKKyAJIGVzYWMKKyAJZmkKKy0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKysJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCisgCWNvbnRpbnVlCisgCTs7CisgCitAQCAtNDc4Miw4ICs1NjQyLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCisgICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgorICAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCistICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKKy0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKyAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3R8LS1zeXNyb290KQorKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorIAlwcmV2PXhjb21waWxlcgorQEAgLTQ3OTEsMTIgKzU2NTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJOzsKKyAKKyAgICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQorLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisrCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKKyAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisgCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCSAgICAqIiAkYXJnICIqKSA7OworLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKKysJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRhcmciIDs7CisgCWVzYWMKKyAJY29udGludWUKKyAJOzsKK0BAIC00ODYzLDEzICs1NzIzLDE3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgorIAljYXNlICRkaXIgaW4KKyAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworKwk9KikKKysJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRkaXIiCisrCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKwkgIDs7CisgCSopCisgCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCisgCSAgOzsKKyAJZXNhYworIAljYXNlICIkeHJwYXRoICIgaW4KKyAJKiIgJGRpciAiKikgOzsKKy0JKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CisgCWVzYWMKKyAJY29udGludWUKKyAJOzsKK0BAIC00OTIyLDggKzU3ODYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCistCSAgYXJnPSIkYXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgCWRvbmUKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKK0BAIC00OTM4LDkgKzU4MDIsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCistCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgCWRvbmUKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKK0BAIC00OTY4LDI0ICs1ODMyLDI3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAk7OworIAorLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCistICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKKy0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCistICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKKy0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYworLSAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCistICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKKy0gICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcworLSAgICAgICMgLXRwPSogUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgorKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKKysgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgorKyAgICAgICMgLXJbMC05XVswLTldKiAgICAgICAgc3BlY2lmeSBwcm9jZXNzb3IgZm9yIHRoZSBTR0kgY29tcGlsZXIKKysgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgorKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKKysgICAgICAjIC1xKiAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKKysgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCisrICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKysgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qICBwcm9maWxpbmcgZmxhZ3MgZm9yIEdDQworKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCisrICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCisrICAgICAgIyAtLXN5c3Jvb3Q9KiAgICAgICAgICBmb3Igc3lzcm9vdCBzdXBwb3J0CisrICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KKyAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKKy0gICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSopCisrICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCisrICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQorICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKyAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCistICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisrICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgICAgICAgICBjb250aW51ZQorICAgICAgICAgOzsKKyAKK0BAIC00OTk3LDcgKzU4NjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICouJG9iamV4dCkKKyAJIyBBIHN0YW5kYXJkIG9iamVjdC4KKy0Jb2Jqcz0iJG9ianMgJGFyZyIKKysJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCisgCTs7CisgCisgICAgICAgKi5sbykKK0BAIC01MDI4LDcgKzU4OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCistCQlkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKysJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCXByZXY9CisgCQljb250aW51ZQorIAkgICAgICBlbHNlCitAQCAtNTA0MCw3ICs1OTA3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCisgCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KKy0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKKyAJICAgICAgcHJldj0KKyAJICAgIGZpCisgCitAQCAtNTA4NSwyNCArNTk1MiwyNSBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICouJGxpYmV4dCkKKyAJIyBBbiBhcmNoaXZlLgorLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCisrCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorKwlmdW5jX2FwcGVuZCBvbGRfZGVwbGlicyAiICRhcmciCisgCWNvbnRpbnVlCisgCTs7CisgCisgICAgICAgKi5sYSkKKyAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgorIAorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKKyAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgorLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisrCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCSAgcHJldj0KKyAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KKy0JICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIHByZXY9CisgCWVsc2UKKy0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAlmaQorIAljb250aW51ZQorIAk7OworQEAgLTUxMjcsNyArNTk5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgorIAorICAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCistICAgICAgZXZhbCAiYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiIgorKyAgICAgIGV2YWwgYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCisgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAgICAgZmkKK0BAIC01MTQ0LDExICs2MDEyLDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgIGVsc2UKKyAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KKyAgICAgZmkKKy0gICAgZXZhbCAic3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIiIKKy0gICAgZXZhbCAic3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIiCisrICAgIGV2YWwgc3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIgorKyAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCisgCisgICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCisgICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKKysgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKKysgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKyAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCisgICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCisgCitAQCAtNTE2OSwxMiArNjAzOSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKKyAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCisgICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCistICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAljYXNlICIkbGlicyAiIGluCistCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAllc2FjCisgICAgICAgZmkKKy0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgorKyAgICAgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkZGVwbGliIgorICAgICBkb25lCisgCisgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KK0BAIC01MTg3LDkgKzYwNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCisgCWZvciBwcmVfcG9zdF9kZXAgaW4gJHByZWRlcHMgJHBvc3RkZXBzOyBkbworIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KKy0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OworKwkgICoiICRwcmVfcG9zdF9kZXAgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJHByZV9wb3N0X2RlcHMiIDs7CisgCSAgZXNhYworLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCisrCSAgZnVuY19hcHBlbmQgcHJlX3Bvc3RfZGVwcyAiICRwcmVfcG9zdF9kZXAiCisgCWRvbmUKKyAgICAgICBmaQorICAgICAgIHByZV9wb3N0X2RlcHM9CitAQCAtNTI1Niw4ICs2MTI2LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KKyAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCisgCSAgZGVwZW5kZW5jeV9saWJzPQorKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgorIAkgIGNhc2UgJGxpYiBpbgorLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OworKwkgICoubGEpCWZ1bmNfc291cmNlICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OworIAkgIGVzYWMKKyAKKyAJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKK0BAIC01MjY3LDcgKzYxMzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICAgICAgIGRlcGxpYl9iYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgorIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OworLQkgICAgKikgZGVwbGlicz0iJGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZG9uZQorQEAgLTUyODgsMTEgKzYxNTksMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgorIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKyAJICBlbHNlCistCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCisgCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgorIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKyAJCSAgICAqIiAkZGVwbGliICIqKSA7OworLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisrCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKKyAJCWVzYWMKKyAJICAgIGZpCisgCSAgZmkKK0BAIC01Mzc3LDcgKzYyNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKyAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CisgCQllc2FjCisgCSAgICBmaQorIAkgIGZpCitAQCAtNTM5MCw3ICs2MjYxLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKKyAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKy0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgICAgOzsKKyAJICBwcm9nKQorIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorQEAgLTU0MDQsNyArNjI3Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgICBmaQorIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKy0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgICAgOzsKKyAJICAqKQorIAkgICAgZnVuY193YXJuaW5nICJcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgorQEAgLTU0MTUsMTcgKzYyODgsMjEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJLVIqKQorIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCistCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KKyAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgorIAkgICAgKiIgJGRpciAiKikgOzsKKy0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKKyAJICAgIGVzYWMKKyAJICBmaQorIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisgCSAgY29udGludWUKKyAJICA7OworLQkqLmxhKSBsaWI9IiRkZXBsaWIiIDs7CisrCSoubGEpCisrCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisrCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKysJICA7OworIAkqLiRsaWJleHQpCisgCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKK0BAIC01NDg4LDExICs2MzY1LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgorIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKKyAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCistCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGVwbGliIgorIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKKyAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKyAJICAgIGVsc2UKKy0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGRlcGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCisgCSAgICBmaQorIAkgIGZpCisgCSAgY29udGludWUKK0BAIC01NTM4LDcgKzY0MTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGZvciB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIGluICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnczsgZG8KKyAJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKKy0JICAgICAgKikgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAlmaQorQEAgLTU1NDYsOCArNjQyMyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8CisgCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAorIAkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgorLQkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGRsZmlsZXM9IiRkbGZpbGVzICRkbG9wZW4iCistCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKKysJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKKysJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKKyAJZmkKKyAKKyAJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorQEAgLTU1NTgsMjAgKzY0MzUsMjAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCisgCSAgICBmaQorIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgorLQkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCistCSAgICBvbGRfY29udmVuaWVuY2U9IiRvbGRfY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisrCSAgICBmdW5jX2FwcGVuZCBvbGRfY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisgCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKKyAJICBmaQorIAkgIHRtcF9saWJzPQorIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCistCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKyAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KKy0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCistCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCisgCSAgZG9uZQorIAkgIGNvbnRpbnVlCisgCWZpICMgJHBhc3MgPSBjb252CitAQCAtNTU3OSw5ICs2NDU2LDE1IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KKyAJbGlua2xpYj0KKy0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbworLQkgIGxpbmtsaWI9IiRsIgorLQlkb25lCisrCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKKysJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAorKwkgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQsbm8iOyB9OyB0aGVuCisrCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKKysJZWxzZQorKwkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KKysJICAgIGxpbmtsaWI9IiRsIgorKwkgIGRvbmUKKysJZmkKKyAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCisgCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCisgCWZpCitAQCAtNTU5OCw5ICs2NDgxLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55CisgCSAgICAjIGRlcGVuZGVudCBsaWJyYXJpZXMgc28gbGlibHRkbCdzIGRlcGxpYiBwcmVsb2FkZXIgZG9lc24ndAorIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgorLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgorKwkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKKyAJICBlbHNlCistCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgorKwkgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiCisgCSAgZmkKKyAJICBjb250aW51ZQorIAlmaSAjICRwYXNzID0gZGxvcGVuCitAQCAtNTYyMiwxNCArNjUwNSwxNCBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KKyAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgorLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKysJICBpZiB0ZXN0ICEgLWYgIiRsdF9zeXNyb290JGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKyAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCisgCSAgICBkaXI9IiRsYWRpciIKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICBlbHNlCistCSAgICBkaXI9IiRsaWJkaXIiCistCSAgICBhYnNkaXI9IiRsaWJkaXIiCisrCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKysJICAgIGFic2Rpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgorIAkgIGZpCisgCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKKyAJZWxzZQorQEAgLTU2MzcsMTIgKzY1MjAsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGRpcj0iJGxhZGlyIgorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgorLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisrCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgorIAkgIGVsc2UKKyAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKKyAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKKy0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKKyAJICBmaQorIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKKyAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRsYW5hbWUiCitAQCAtNTY1MywyMCArNjUzNiw0NiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCisgCSAgZmkKKy0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKKy0JICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KKy0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCistCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKKy0JICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCistCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCistCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCistCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgorLQkgIGVsc2UKKy0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCistCSAgZmkKKysJICBjYXNlICIkaG9zdCIgaW4KKysJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KKysJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKKysJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKKysJICAgICAgIyBzeW1ib2xzIGZyb20gdGhlIGltcG9ydCBsaWJyYXJ5IGlmIGEgc2hhcmVkIGxpYnJhcnkgaXMgcHJlc2VudAorKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KKysJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KKysJICAgICAgIyBXZSByZWNvdmVyIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgYnkgJ3NhdmluZycgdGhlIGxhIGZpbGUKKysJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQorKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgorKwkgICAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCisrCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisrCSAgICAgIGVsc2UKKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisrCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisrCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKysJICAgICAgZmkKKysJICAgIDs7CisrCSAgICAqICkKKysJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCisrCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgorKwkgICAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKysJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCisrCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgorKwkgICAgICBlbHNlCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisrCSAgICAgIGZpCisrCSAgICA7OworKwkgIGVzYWMKKyAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgorIAorIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgorQEAgLTU2ODQsNyArNjU5Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCisgCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCistCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsYWRpciIKKysJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCisgCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKKyAKKyAJICBsaW5rYWxsZGVwbGlicz1ubworQEAgLTU2OTcsNyArNjYwNiw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworIAkgICAgY2FzZSAkZGVwbGliIGluCisgCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICAgICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJCSA7OworIAkgICAgZXNhYworIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPworQEAgLTU3MDgsMTIgKzY2MTgsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKKyAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCisgCSAgICBmaQorLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgorIAkgIGRvbmUgIyBmb3IgZGVwbGliCisgCSAgY29udGludWUKKyAJZmkgIyAkbGlua21vZGUgPSBwcm9nLi4uCitAQCAtNTcyOCw3ICs2NjM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgorIAkgICAgICBjYXNlICIkdGVtcF9ycGF0aDoiIGluCisgCSAgICAgICoiJGFic2RpcjoiKikgOzsKKy0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9ycGF0aCAiJGFic2RpcjoiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCitAQCAtNTc0MCw3ICs2NjUwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGFic2RpciAiKikgOzsKKy0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKK0BAIC01NzQ5LDcgKzY2NTksNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKikKKyAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKK0BAIC01Nzc0LDEyICs2Njg0LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY2FzZSAkaG9zdCBpbgorIAkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyopCisgCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKKy0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCisgCSAgICAgIG5lZWRfcmVsaW5rPW5vCisgCSAgICA7OworIAkgICopCisgCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCistCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgorIAkgICAgICBuZWVkX3JlbGluaz15ZXMKKyAJICAgIGZpCisgCSAgICA7OworQEAgLTU4MTQsNyArNjcyNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRhYnNkaXIgIiopIDs7CistCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTgyMyw3ICs2NzMzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTgzNSw3ICs2NzQ1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIHNoaWZ0CisgCSAgICByZWFsbmFtZT0iJDEiCisgCSAgICBzaGlmdAorLQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/CisgCSAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorIAkgICAgICBzb25hbWU9IiRkbG5hbWUiCitAQCAtNTg0OCw3ICs2NzU4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCXZlcnN1ZmZpeD0iLSRtYWpvciIKKyAJCTs7CisgCSAgICAgIGVzYWMKKy0JICAgICAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCisrCSAgICAgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKKyAJICAgIGVsc2UKKyAJICAgICAgc29uYW1lPSIkcmVhbG5hbWUiCisgCSAgICBmaQorQEAgLTU4NzcsNyArNjc4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBsaW5rbGliPSRuZXdsaWIKKyAJICBmaSAjIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIKKyAKKy0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisrCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KKyAJICAgIGFkZF9zaGxpYnBhdGg9CisgCSAgICBhZGRfZGlyPQorIAkgICAgYWRkPQorQEAgLTU5MzMsNyArNjg0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQlpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgorIAkJICBjYXNlICRsaWJkaXIgaW4KKyAJCSAgICBbXFwvXSopCistCQkgICAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgICA7OworIAkJICBlc2FjCisgCQlmaQorQEAgLTU5NTUsNyArNjg2NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KKyAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgorIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKKy0JICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCitAQCAtNTk2OSwxMyArNjg3OSwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KKyAJCSoiOiRsaWJkaXI6IiopIDs7CistCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKysJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgIGZpCisgCistCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisrCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkgICAgYWRkX3NobGlicGF0aD0KKyAJICAgIGFkZF9kaXI9CisgCSAgICBhZGQ9CitAQCAtNTk4OSw3ICs2ODk5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCisgCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCisgCSAgICAgICoiOiRsaWJkaXI6IiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIGFkZD0iLWwkbmFtZSIKKyAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KK0BAIC02MDAxLDEyICs2OTExLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpCisgCSAgICBlbHNlCisgCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCistCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKKysJICAgICAgYWRkX2Rpcj0iLUwkbHRfc3lzcm9vdCRsaWJkaXIiCisgCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KKyAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCWNhc2UgJGxpYmRpciBpbgorIAkJICBbXFwvXSopCistCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKyAJCSAgICA7OworIAkJZXNhYworIAkgICAgICBmaQorQEAgLTYwODMsMjcgKzY5OTMsMzMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCQkgICBjYXNlICIgJHhycGF0aCAiIGluCisgCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7CistCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7CisrCQkgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkdGVtcF94cnBhdGgiOzsKKyAJCSAgIGVzYWM7OworLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKKyAJICBmaQorIAorLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkYWJzZGlyIgorKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCisgCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5CisgCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCisgCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKKyAJICB0bXBfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKy0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrCSAgICBjYXNlICRkZXBsaWIgaW4KKysgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKysgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKKysgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OworKyAgICAgICAgICAgIGVzYWMKKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKKysgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIGRvbmUKKyAKKyAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KK0BAIC02MTEzLDggKzcwMjksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgY2FzZSAkZGVwbGliIGluCisgCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKKyAJICAgICAgKi5sYSkKKysJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKysJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCistCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJCWNhc2UgJGRpciBpbgorIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CitAQCAtNjEzMCw3ICs3MDQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCWNhc2UgJGhvc3QgaW4KKyAJCSotKi1kYXJ3aW4qKQorIAkJICBkZXBkZXBsPQorLQkJICBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorKwkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisgCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIiA7IHRoZW4KKyAJCSAgICBmb3IgdG1wIGluICRkZXBsaWJyYXJ5X25hbWVzIDsgZG8KKyAJCSAgICAgIGRlcGRlcGw9JHRtcAorQEAgLTYxNDEsOCArNzA1OSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCisgICAgICAgICAgICAgICAgICAgICAgIGZpCistCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCistCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorIAkJICAgICAgcGF0aD0KKyAJCSAgICBmaQorIAkJICBmaQorQEAgLTYxNTIsNyArNzA3MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgIDs7CisgCQllc2FjCisgCQllbHNlCistCQkgIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorKwkJICBldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorIAkJICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisgCQkgIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIiAmJiBcCitAQCAtNjE5Miw3ICs3MTEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCisgCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KKyAJICAgICoiICRkaXIgIiopIDs7CistCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KK0BAIC02MjA1LDcgKzcxMjMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmaQorIAlmb3IgdmFyIGluICR2YXJzIGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAjIEFkZCBsaWJyYXJpZXMgdG8gJHZhciBpbiByZXZlcnNlIG9yZGVyCistCSAgZXZhbCB0bXBfbGlicz1cJCR2YXIKKysJICBldmFsIHRtcF9saWJzPVwiXCQkdmFyXCIKKyAJICBuZXdfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICR0bXBfbGliczsgZG8KKyAJICAgICMgRklYTUU6IFBlZGFudGljYWxseSwgdGhpcyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIHNvCitAQCAtNjI1MCwxMyArNzE2OCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgLUwqKQorIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KKyAJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKy0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCistCSAgZXZhbCAkdmFyPVwkdG1wX2xpYnMKKysJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgorIAlkb25lICMgZm9yIHZhcgorICAgICAgIGZpCisgICAgICAgIyBMYXN0IHN0ZXA6IHJlbW92ZSBydW50aW1lIGxpYnMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKK0BAIC02MjY5LDcgKzcxODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIDs7CisgCWVzYWMKKyAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCisrCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKKyAJZmkKKyAgICAgICBkb25lCisgICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicworQEAgLTYzMTAsNyArNzIyOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCisgICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCisgICAgICAgb2xkbGlicz0iJG91dHB1dCIKKy0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKKysgICAgICBmdW5jX2FwcGVuZCBvYmpzICIkb2xkX2RlcGxpYnMiCisgICAgICAgOzsKKyAKKyAgICAgbGliKQorQEAgLTYzMTksOCArNzIzNyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgbGliKikKKyAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRvdXRwdXRuYW1lIgorIAluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKy0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorKwlldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKKyAJOzsKKyAgICAgICAqKQorIAl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKK0BAIC02MzMwLDggKzcyNDgsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKKyAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCisgCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCSAgZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCSAgZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKKysJICBldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKKyAJZWxzZQorIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKKyAJICBsaWJuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKK0BAIC02MzQ2LDcgKzcyNjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGVjaG8KKyAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCisgCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCistCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCisrCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRvYmpzIgorIAlmaQorICAgICAgIGZpCisgCitAQCAtNjU0NCw3ICs3NDYyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBkb25lCisgCisgCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgorLQkgIHZlcnN0cmluZz0iJHZlcnN0cmluZzoke2N1cnJlbnR9LjAiCisrCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgorIAkgIDs7CisgCisgCXFueCkKK0BAIC02NjEyLDEwICs3NTMwLDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZmkKKyAKKyAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKKy0gICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKKysgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCisgICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAKKy0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisrICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KKyAJIyBSZW1vdmUgb3VyIG91dHB1dHMsIGJ1dCBkb24ndCByZW1vdmUgb2JqZWN0IGZpbGVzIHNpbmNlIHRoZXkKKyAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCisgCXJlbW92ZWxpc3Q9CitAQCAtNjYzMSw3ICs3NTQ5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCSAgIGNvbnRpbnVlCisgCQkgZmkKKyAJICAgICAgIGZpCistCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKKysJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKKyAJICAgICAgIDs7CisgCSAgICAqKSA7OworIAkgIGVzYWMKK0BAIC02NjQyLDcgKzc1NjAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgorICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCistCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCisrCWZ1bmNfYXBwZW5kIG9sZGxpYnMgIiAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorIAorIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCisgCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAorQEAgLTY2NTksMTAgKzc1NzcsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgorIAl0ZW1wX3hycGF0aD0KKyAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbworLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgorKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZG9uZQorIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgorQEAgLTY2NzYsNyArNzU5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCisgCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCisgCSoiICRsaWIgIiopIDs7CistCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorIAorQEAgLTY2ODYsNyArNzYwNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCisgCWNhc2UgIiRkbHByZWZpbGVzICIgaW4KKyAJKiIgJGxpYiAiKikgOzsKKy0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKKysJKikgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIiIDs7CisgCWVzYWMKKyAgICAgICBkb25lCisgCitAQCAtNjY5OCw3ICs3NjE3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKKy0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKysJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCisgCSAgICA7OworIAkgICotKi1uZXRic2QqKQorIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCitAQCAtNjcxNSw3ICs3NjM0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAqKQorIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KKyAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KKy0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgorKwkgICAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLWxjIgorIAkgICAgZmkKKyAJICAgIDs7CisgCSAgZXNhYworQEAgLTY3NjQsMTggKzc2ODMsMTggQEAgRU9GCisgCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQkgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJICAqIiAkaSAiKikKKy0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgaT0iIgorIAkJICAgIDs7CisgCQkgIGVzYWMKKyAJCWZpCisgCQlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCistCQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCistCQkgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwkJICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKysJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorIAkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAorIAkJICBkZXBsaWJfbWF0Y2g9JDEKKyAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCSAgZWxzZQorIAkJICAgIGRyb3BwZWRkZXBzPXllcworIAkJICAgIGVjaG8KK0BAIC02Nzg5LDcgKzc3MDgsNyBAQCBFT0YKKyAJCWZpCisgCQk7OworIAkgICAgICAqKQorLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCitAQCAtNjgwNywxOCArNzcyNiwxOCBAQCBFT0YKKyAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorIAkJICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJICAgICoiICRpICIqKQorLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgICBpPSIiCisgCQkgICAgICA7OworIAkJICAgIGVzYWMKKyAJCSAgZmkKKyAJCSAgaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkJICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCistCQkgICAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCisrCQkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorIAkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CisgCQkgICAgZGVwbGliX21hdGNoPSQxCisgCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgZWxzZQorIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCisgCQkgICAgICBlY2hvCitAQCAtNjg0MCw3ICs3NzU5LDcgQEAgRU9GCisgCQlmaQorIAkJOzsKKyAJICAgICAgKikKKy0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorQEAgLTY4NTcsMTUgKzc3NzYsMjcgQEAgRU9GCisgCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJKiIgJGFfZGVwbGliICIqKQorLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgIGFfZGVwbGliPSIiCisgCQkgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCistCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgorKwkJICBsaWJuYW1lZ2xvYj1gZnVuY19lY2hvX2FsbCAiJGxpYm5hbWUiIHwgJFNFRCAtZSAkZmlsZV9tYWdpY19nbG9iYAorKwkJZWxzZQorKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQorKwkJZmkKKysJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCisgCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KKy0JCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisrCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCisrCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgorKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKysJCSAgICAkbm9jYXNlZ2xvYgorKwkJICBlbHNlCisrCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAorKwkJICBmaQorIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCisgCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgorIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKK0BAIC02ODg1LDEwICs3ODE2LDEwIEBAIEVPRgorIAkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7CisgCQkJZXNhYworIAkJICAgICAgZG9uZQorLQkJICAgICAgaWYgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiIgMj4vZGV2L251bGwgfAorKwkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKKyAJCQkgJFNFRCAtZSAxMHEgfAorIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJCWFfZGVwbGliPSIiCisgCQkJYnJlYWsgMgorIAkJICAgICAgZmkKK0BAIC02OTEzLDcgKzc4NDQsNyBAQCBFT0YKKyAJICAgICAgOzsKKyAJICAgICopCisgCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCistCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgorQEAgLTY5MjksMjAgKzc4NjAsMjAgQEAgRU9GCisgCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJKiIgJGFfZGVwbGliICIqKQorLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgIGFfZGVwbGliPSIiCisgCQkgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCistCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisgCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KKyAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisgCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KKyAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAorIAkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCisgCQkgICAgICAgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgICAgICBhX2RlcGxpYj0iIgorIAkJICAgICAgYnJlYWsgMgorIAkJICAgIGZpCitAQCAtNjk2Nyw3ICs3ODk4LDcgQEAgRU9GCisgCSAgICAgIDs7CisgCSAgICAqKQorIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgorLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCSAgICAgIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KK0BAIC03MDcxLDcgKzgwMDIsNyBAQCBFT0YKKyAJKikKKyAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgorIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKKy0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC03MDgxLDEwICs4MDEyLDEwIEBAIEVPRgorIAktTCopCisgCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCisgCSAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAkgIGVzYWMKKyAJICA7OworLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCitAQCAtNzEwMSwxMCArODAzMiwxMiBAQCBFT0YKKyAJICBoYXJkY29kZV9saWJkaXJzPQorIAkgIGRlcF9ycGF0aD0KKyAJICBycGF0aD0iJGZpbmFsaXplX3JwYXRoIgorLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKyAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KKyAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKysJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKKyAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgorIAkJZWxzZQorQEAgLTcxMTMsMTggKzgwNDYsMTggQEAgRU9GCisgCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKyAJCSAgICA7OworIAkJICAqKQorLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKyAJCSAgICA7OworIAkJICBlc2FjCisgCQlmaQorIAkgICAgICBlbHNlCistCQlldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKKysJCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgorIAkgICAgICBmaQorIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKysJICAgICAgKikgZnVuY19hcHBlZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBkb25lCitAQCAtNzEzMyw0MCArODA2NiwzOCBAQCBFT0YKKyAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJICAgIGxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCisgCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KKy0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIiIKKysJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiCisgCSAgICBlbHNlCistCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorIAkgICAgZmkKKyAJICBmaQorIAkgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHBlcm1fcnBhdGgiOyB0aGVuCisgCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgICAgcnBhdGg9CisgCSAgICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbworLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKKyAJICAgIGRvbmUKKy0JICAgIGV2YWwgJHJ1bnBhdGhfdmFyPVwkcnBhdGhcJCRydW5wYXRoX3ZhcgorLQkgICAgZXhwb3J0ICRydW5wYXRoX3ZhcgorKwkgICAgZXZhbCAiJHJ1bnBhdGhfdmFyPSckcnBhdGhcJCRydW5wYXRoX3Zhcic7IGV4cG9ydCAkcnVucGF0aF92YXIiCisgCSAgZmkKKyAJICB0ZXN0IC1uICIkZGVwX3JwYXRoIiAmJiBkZXBsaWJzPSIkZGVwX3JwYXRoICRkZXBsaWJzIgorIAlmaQorIAorIAlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCistCXRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCisgCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCistCSAgZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJHNobGlicGF0aFwkJHNobGlicGF0aF92YXIKKy0JICBleHBvcnQgJHNobGlicGF0aF92YXIKKysJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCisgCWZpCisgCisgCSMgR2V0IHRoZSByZWFsIGFuZCBsaW5rIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LgorLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCistCWV2YWwgImxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCisrCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCisrCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgorIAlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKKyAJc2hpZnQKKyAJcmVhbG5hbWU9IiQxIgorIAlzaGlmdAorIAorIAlpZiB0ZXN0IC1uICIkc29uYW1lX3NwZWMiOyB0aGVuCistCSAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCisrCSAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgorIAllbHNlCisgCSAgc29uYW1lPSIkcmVhbG5hbWUiCisgCWZpCitAQCAtNzE3OCw3ICs4MTA5LDcgQEAgRU9GCisgCWxpbmtuYW1lcz0KKyAJZm9yIGxpbmsKKyAJZG8KKy0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCisrCSAgZnVuY19hcHBlbmQgbGlua25hbWVzICIgJGxpbmsiCisgCWRvbmUKKyAKKyAJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKK0BAIC03MTg5LDcgKzgxMjAsNyBAQCBFT0YKKyAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKyAJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKy0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKKysJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKKyAJZmkKKyAKKyAJb3JpZ19leHBvcnRfc3ltYm9scz0KK0BAIC03MjIwLDEzICs4MTUxLDQ1IEBAIEVPRgorIAkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKKyAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKKyAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworLQkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKysJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbworIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKKy0JICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgorLQkgICAgICBmdW5jX2xlbiAiICRjbWQiCistCSAgICAgIGxlbj0kZnVuY19sZW5fcmVzdWx0CistCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorKwkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAorKwkgICAgICAjIGRvZXNuJ3Qgd29yayBvciBpZiB0b29sIGNvbnZlcnNpb24gaXMgbm90IG5lZWRlZC4KKysJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KKysJCSp+ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCB8ICp+ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgfCB+KikKKysJCSAgdHJ5X25vcm1hbF9icmFuY2g9eWVzCisrCQkgIGV2YWwgY21kPVwiJGNtZDFcIgorKwkJICBmdW5jX2xlbiAiICRjbWQiCisrCQkgIGxlbj0kZnVuY19sZW5fcmVzdWx0CisrCQkgIDs7CisrCQkqKQorKwkJICB0cnlfbm9ybWFsX2JyYW5jaD1ubworKwkJICA7OworKwkgICAgICBlc2FjCisrCSAgICAgIGlmIHRlc3QgIiR0cnlfbm9ybWFsX2JyYW5jaCIgPSB5ZXMgXAorKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKKysJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9CisrCSAgICAgIHRoZW4KKysJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKKysJCXNraXBwZWRfZXhwb3J0PWZhbHNlCisrCSAgICAgIGVsaWYgdGVzdCAtbiAiJG5tX2ZpbGVfbGlzdF9zcGVjIjsgdGhlbgorKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKysJCW91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKysJCXNhdmVfbGlib2Jqcz0kbGlib2JqcworKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAorKwkJb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lm5tCisrCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorKwkJZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorKwkJZnVuY192ZXJib3NlICJjcmVhdGluZyAkTk0gaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbworKwkJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJCSAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisrCQlkb25lID4gIiRvdXRwdXQiCisrCQlldmFsIGNtZD1cIiRjbWQxXCIKKyAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKKysJCW91dHB1dD0kc2F2ZV9vdXRwdXQKKysJCWxpYm9ianM9JHNhdmVfbGlib2JqcworIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKyAJICAgICAgZWxzZQorIAkJIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCitAQCAtNzI0OCw3ICs4MjExLDcgQEAgRU9GCisgCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKyAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKy0JICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworIAlmaQorIAorIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorQEAgLTcyNjAsNyArODIyMyw3IEBAIEVPRgorIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CisgCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKyAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKKy0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisrCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgorIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCisgCWZpCitAQCAtNzI3MCw3ICs4MjMzLDcgQEAgRU9GCisgCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCisgCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OworIAkgICopCistCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgorIAkgICAgOzsKKyAJICBlc2FjCisgCWRvbmUKK0BAIC03Mjg2LDQzICs4MjQ5LDQzIEBAIEVPRgorIAkgIGZpCisgCSAgaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCistCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAkgIGVsc2UKKyAJICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKKy0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBmaQorIAlmaQorIAorIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCistCSAgZXZhbCAiZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIiIKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCisrCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCisgCWZpCisgCisgCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZworLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKy0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpIHx8IGV4aXQgJD8KKysJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KKyAJZmkKKyAKKyAJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgorIAlpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJG1vZHVsZV9leHBzeW1fY21kcyI7IHRoZW4KKy0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiCisgCSAgICBjbWRzPSRtb2R1bGVfZXhwc3ltX2NtZHMKKyAJICBlbHNlCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIKKyAJICAgIGNtZHM9JG1vZHVsZV9jbWRzCisgCSAgZmkKKyAJZWxzZQorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiIgorKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCisgCSAgICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCisgCSAgZWxzZQorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiIgorKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKKyAJICAgIGNtZHM9JGFyY2hpdmVfY21kcworIAkgIGZpCisgCWZpCitAQCAtNzM2NiwxMCArODMyOSwxMyBAQCBFT0YKKyAJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAorIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCisgCSAgICBkbworLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKKyAJICAgIGRvbmUKKyAJICAgIGVjaG8gJyknID4+ICRvdXRwdXQKKy0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKysJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgICAgb3V0cHV0PSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKyAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgorIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuaworIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorQEAgLTczODMsMTUgKzgzNDksMTcgQEAgRU9GCisgCSAgICBmaQorIAkgICAgZm9yIG9iagorIAkgICAgZG8KKy0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKysJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CisgCSAgICBkb25lCistCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCistCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkb3V0cHV0XCIKKysJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiCisgCSAgZWxzZQorIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KKyAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKKyAJICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CistCSAgICAgIGV2YWwgInRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiIgorKwkgICAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiCisgCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKyAJICAgICAgbGVuMD0kZnVuY19sZW5fcmVzdWx0CisgCSAgICAgIGxlbj0kbGVuMAorQEAgLTc0MTEsMTIgKzgzNzksMTIgQEAgRU9GCisgCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KKyAJCSAgICAjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgorIAkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0CistCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKKysJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKKyAJCSAgZWxzZQorIAkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCisgCQkgICAgIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KKyAJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKy0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgorKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgorIAkJICBmaQorIAkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKyAJCSAgZnVuY19hcml0aCAkayArIDEKK0BAIC03NDMzLDExICs4NDAxLDExIEBAIEVPRgorIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CisgCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiIgorKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIKKyAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KKy0JICAgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIiIKKysJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCisgCSAgICAgIGZpCistCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKysJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorIAorIAkgICAgZWxzZQorIAkgICAgICBvdXRwdXQ9CitAQCAtNzQ1MCw5ICs4NDE4LDkgQEAgRU9GCisgCSAgICAgIGxpYm9ianM9JG91dHB1dAorIAkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgorIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KKy0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiCisgCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCistCQlldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCisrCQlldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIgorIAkgICAgICBmaQorIAkgICAgZmkKKyAKK0BAIC03NDcxLDcgKzg0MzksNyBAQCBFT0YKKyAJCWx0X2V4aXQ9JD8KKyAKKyAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAorLQkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisrCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisgCQkgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCisgCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKKyAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQorQEAgLTc0OTIsNyArODQ2MCw3IEBAIEVPRgorIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKyAJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCistCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCisrCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworIAkgICAgZmkKKyAKKyAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorQEAgLTc1MDQsNyArODQ3Miw3IEBAIEVPRgorIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQorIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgorIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKKy0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisgCSAgICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgorIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scworIAkgICAgZmkKK0BAIC03NTE1LDcgKzg0ODMsNyBAQCBFT0YKKyAJICBvdXRwdXQ9JHNhdmVfb3V0cHV0CisgCisgCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIiAmJiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCistCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAkgIGZpCisgCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKK0BAIC03NTM5LDIzICs4NTA3LDIzIEBAIEVPRgorIAorIAlpZiB0ZXN0IC1uICIkZGVsZmlsZXMiOyB0aGVuCisgCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcyB0byAkY21kcy4KKy0JICBldmFsICJjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIiCisrCSAgZXZhbCBjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIKKyAJZmkKKyAKKyAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCisgCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcworLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAlmaQorIAorIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKyAJZm9yIGNtZCBpbiAkY21kczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKy0JICBldmFsICJjbWQ9XCIkY21kXCIiCisrCSAgZXZhbCBjbWQ9XCIkY21kXCIKKyAJICAkb3B0X3NpbGVudCB8fCB7CisgCSAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRjbWQiCisgCSAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCitAQCAtNzU2NCw3ICs4NTMyLDcgQEAgRU9GCisgCSAgICBsdF9leGl0PSQ/CisgCisgCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKy0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCisgCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQorQEAgLTc1NzYsOCArODU0NCw4IEBAIEVPRgorIAlJRlM9IiRzYXZlX2lmcyIKKyAKKyAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CistCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSkgfHwgZXhpdCAkPworKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisrCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPworIAorIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKyAJICAgIGlmIHRlc3QgLXogIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KK0BAIC03NjU2LDE3ICs4NjI0LDIwIEBAIEVPRgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKyAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgIGV2YWwgInRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCisrCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAorIAllbHNlCisgCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCisgCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorIAlmaQorICAgICAgIGZpCisgCisrICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKKysgICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgbGlib2Jqcz0iJG5vbl9waWNfb2JqZWN0cyIKKysKKyAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KKyAgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKyAKK0BAIC03NjkwLDcgKzg2NjEsNyBAQCBFT0YKKyAJIyBDcmVhdGUgYW4gaW52YWxpZCBsaWJ0b29sIG9iamVjdCBpZiBubyBQSUMsIHNvIHRoYXQgd2UgZG9uJ3QKKyAJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KKyAJIyAkc2hvdyAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIgorLQkjICRvcHRfZHJ5X3J1biB8fCBlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmogfHwgZXhpdCAkPworKwkjICRvcHRfZHJ5X3J1biB8fCBldmFsICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiIHx8IGV4aXQgJD8KKyAJZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgICAgZmkKKyAKK0BAIC03NzQwLDggKzg3MTEsOCBAQCBFT0YKKyAJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgorIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KKyAJICAgIDEwLlswMTIzXSkKKy0JICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKy0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCisgCSAgICA7OworIAkgIGVzYWMKKyAJZmkKK0BAIC03NzYxLDcgKzg3MzIsNyBAQCBFT0YKKyAJKikKKyAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCisgCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQorLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7CisrCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKKyAJICBlc2FjCisgCSAgOzsKKyAJZXNhYworQEAgLTc3NzEsMTcgKzg3NDIsMTcgQEAgRU9GCisgCS1MKikKKyAJICBjYXNlICIgJG5ld19saWJzICIgaW4KKyAJICAqIiAkZGVwbGliICIqKSA7OworLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgZXNhYworIAkgIDs7CistCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKysJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorICAgICAgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19saWJzIgorIAorIAorLSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgorLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgorKyAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRjb21waWxlX2RlcGxpYnMiCisrICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRmaW5hbGl6ZV9kZXBsaWJzIgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCisgCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KK0BAIC03Nzg5LDcgKzg3NjAsNyBAQCBFT0YKKyAJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCisgCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlkb25lCisgICAgICAgZmkKK0BAIC03ODA4LDE4ICs4Nzc5LDE4IEBAIEVPRgorIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCisgCQk7OworIAkgICAgICAqKQorLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisrCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGVsc2UKKy0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKysJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisgCSAgZmkKKyAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWZpCisgCWNhc2UgJGhvc3QgaW4KK0BAIC03ODI4LDEyICs4Nzk5LDEyIEBAIEVPRgorIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiRsaWJkaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokbGliZGlyIjs7CisgCSAgZXNhYworIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNzg0Miw3ICs4ODEzLDcgQEAgRU9GCisgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCisgCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKy0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgZmkKKyAgICAgICBjb21waWxlX3JwYXRoPSIkcnBhdGgiCisgCitAQCAtNzg1OSwxOCArODgzMCwxOCBAQCBFT0YKKyAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQorIAkJOzsKKyAJICAgICAgKikKKy0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisrCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorIAkgIGZpCisgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGZpbmFsaXplX3Blcm1fcnBhdGg9IiRmaW5hbGl6ZV9wZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlmaQorICAgICAgIGRvbmUKK0BAIC03ODc4LDcgKzg4NDksNyBAQCBFT0YKKyAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKKyAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICBmaQorICAgICAgIGZpbmFsaXplX3JwYXRoPSIkcnBhdGgiCisgCitAQCAtNzkyMSw2ICs4ODkyLDEyIEBAIEVPRgorIAlleGl0X3N0YXR1cz0wCisgCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCisgCisrCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKwlmaQorKworIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgorIAlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCisgCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKK0BAIC03OTQzLDcgKzg5MjAsNyBAQCBFT0YKKyAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgIHJwYXRoPQorIAkgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCistCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgZG9uZQorIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKKyAJZmkKK0BAIC03OTUxLDcgKzg5MjgsNyBAQCBFT0YKKyAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgIHJwYXRoPQorIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCistCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgZG9uZQorIAkgIGZpbmFsaXplX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCisgCWZpCitAQCAtNzk2Niw2ICs4OTQzLDEzIEBAIEVPRgorIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKKyAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0CisgCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKKysKKysJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisrCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisrCWZpCisrCisgCWV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgIGZpCisgCitAQCAtNzk5OSw2ICs4OTgzLDEyIEBAIEVPRgorIAorICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKKyAKKysgICAgICBpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKysJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgorKwlwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKyAgICAgIGZpCisrCisgICAgICAgIyBOb3cgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdC4KKyAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCisgCitAQCAtODA5Niw3ICs5MDg2LDcgQEAgRU9GCisgCWVsc2UKKyAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKKyAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCistCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKKysJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKKyAJICBmaQorIAlmaQorIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgorQEAgLTgxMDQsMTAgKzkwOTQsMTAgQEAgRU9GCisgCisgICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCisgCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicworLQlvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorICAgICAgIGZpCisgCisgICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGFyY2hpdmUgY29tbWFuZHMuCitAQCAtODExOCwxMCArOTEwOCwxMCBAQCBFT0YKKyAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCisgCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcworLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJZmkKKyAKKyAJIyBQT1NJWCBkZW1hbmRzIG5vIHBhdGhzIHRvIGJlIGVuY29kZWQgaW4gYXJjaGl2ZXMuICBXZSBoYXZlCitAQCAtODEzOSw3ICs5MTI5LDcgQEAgRU9GCisgCWVsc2UKKyAJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCisgCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKy0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKKyAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKKyAJICBvbGRvYmpzPQorQEAgLTgxNjMsMTggKzkxNTMsMjggQEAgRU9GCisgCQllc2FjCisgCSAgICAgIGRvbmUKKyAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgorLQkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCisgCSAgICAgIDs7CistCSAgICAqKSBvbGRvYmpzPSIkb2xkb2JqcyAkb2JqIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAlmaQorLQlldmFsICJjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgorIAorIAlmdW5jX2xlbiAiICRjbWRzIgorIAlsZW49JGZ1bmNfbGVuX3Jlc3VsdAorIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKyAJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisrCWVsaWYgdGVzdCAtbiAiJGFyY2hpdmVyX2xpc3Rfc3BlYyI7IHRoZW4KKysJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisrCSAgZm9yIG9iaiBpbiAkb2xkb2JqcworKwkgIGRvCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorKwkgIGRvbmUgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQKKysJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgorKwkgIG9sZG9ianM9IiAkYXJjaGl2ZXJfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKysJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisgCWVsc2UKKyAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cworIAkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKK0BAIC04MTg5LDcgKzkxODksNyBAQCBFT0YKKyAJICBkbworIAkgICAgbGFzdF9vbGRvYmo9JG9iagorIAkgIGRvbmUKKy0JICBldmFsICJ0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgorKwkgIGV2YWwgdGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgorIAkgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKyAJICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKKyAJICBsZW49JGxlbjAKK0BAIC04MjA4LDcgKzkyMDgsNyBAQCBFT0YKKyAJCVJBTkxJQj0kc2F2ZV9SQU5MSUIKKyAJICAgICAgZmkKKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CistCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICAgICAgb2JqbGlzdD0KKyAJICAgICAgbGVuPSRsZW4wCisgCSAgICBmaQorQEAgLTgyMTYsOSArOTIxNiw5IEBAIEVPRgorIAkgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKKyAJICBvbGRvYmpzPSRvYmpsaXN0CisgCSAgaWYgdGVzdCAiWCRvbGRvYmpzIiA9ICJYIiA7IHRoZW4KKy0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzXCIiCisrCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzXCIKKyAJICBlbHNlCistCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICBmaQorIAlmaQorICAgICAgIGZpCitAQCAtODI2OCwxMiArOTI2OCwyMyBAQCBFT0YKKyAJICAgICAgKi5sYSkKKyAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCisgCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKKyAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKyAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCistCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgorKwkJOzsKKysJICAgICAgLUwqKQorKwkJZnVuY19zdHJpcG5hbWUgLUwgJycgIiRkZXBsaWIiCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1MJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKyAJCTs7CistCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OworKwkgICAgICAtUiopCisrCQlmdW5jX3N0cmlwbmFtZSAtUiAnJyAiJGRlcGxpYiIKKysJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorKwkJOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgorQEAgLTgyODQsMTIgKzkyOTUsMTQgQEAgRU9GCisgCSAgICAgICoubGEpCisgCSAgICAgICAgZnVuY19iYXNlbmFtZSAiJGxpYiIKKyAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCisrCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAorKworIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKy0JCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCisgCQk7OworLQkgICAgICAqKSBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCitAQCAtODMwMywxMCArOTMxNiwxMSBAQCBFT0YKKyAJCSMgdGhlIGxpYnJhcnk6CisgCQlmdW5jX2Jhc2VuYW1lICIkbGliIgorIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCisrCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKKysJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCisgCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorLQkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKK0BAIC04MzE4LDcgKzkzMzIsNyBAQCBFT0YKKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OworIAkgICAgICBlc2FjCistCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgorIAkgICAgZG9uZQorIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCisgCSAgICBuZXdkbHByZWZpbGVzPQorQEAgLTgzMjcsNyArOTM0MSw3IEBAIEVPRgorIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CisgCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CisgCSAgICAgIGVzYWMKKy0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGFicyIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCisgCSAgICBkb25lCisgCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKKyAJICBmaQorQEAgLTg0MTIsNyArOTQyNiw3IEBAIHJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIiCisgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworIH0KKyAKKy17IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCisreyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCisgICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQorIAorIAorQEAgLTg0MzIsOSArOTQ0Niw5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgZm9yIGFyZworICAgICBkbworICAgICAgIGNhc2UgJGFyZyBpbgorLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OworLSAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7CistICAgICAgKikgZmlsZXM9IiRmaWxlcyAkYXJnIiA7OworKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OworKyAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7CisrICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OworICAgICAgIGVzYWMKKyAgICAgZG9uZQorIAorQEAgLTg0NDMsMjQgKzk0NTcsMjMgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorICAgICBybWRpcnM9CisgCistICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCisgICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KKyAgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKKyAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorICAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCistCW9iamRpcj0iJG9yaWdvYmpkaXIiCisrCW9kaXI9IiRvYmpkaXIiCisgICAgICAgZWxzZQorLQlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCisrCW9kaXI9IiRkaXIvJG9iamRpciIKKyAgICAgICBmaQorICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgorICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0gICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgorKyAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKKyAKKy0gICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCistICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KKysgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgorIAljYXNlICIgJHJtZGlycyAiIGluCistCSAgKiIgJG9iamRpciAiKikgOzsKKy0JICAqKSBybWRpcnM9IiRybWRpcnMgJG9iamRpciIgOzsKKysJICAqIiAkb2RpciAiKikgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKKyAJZXNhYworICAgICAgIGZpCisgCitAQCAtODQ4NiwxOCArOTQ5OSwxNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCisgCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KKyAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG4iCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG4iCisgCSAgZG9uZQorLQkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kb2xkX2xpYnJhcnkiCisrCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgorIAorLQkgIGNhc2UgIiRtb2RlIiBpbgorKwkgIGNhc2UgIiRvcHRfbW9kZSIgaW4KKyAJICBjbGVhbikKKy0JICAgIGNhc2UgIiAgJGxpYnJhcnlfbmFtZXMgIiBpbgorLQkgICAgIyAiICAiIGluIHRoZSBiZWdpbm5pbmcgY2F0Y2hlcyBlbXB0eSAkZGxuYW1lCisrCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgorIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKKy0JICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKKysJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OworIAkgICAgZXNhYworLQkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgorKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgorIAkgICAgOzsKKyAJICB1bmluc3RhbGwpCisgCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KK0BAIC04NTI1LDE5ICs5NTM3LDE5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KKyAJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKKyAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgorIAkgIGZpCisgCisgCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgorIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKKyAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgorIAkgIGZpCisgCWZpCisgCTs7CisgCisgICAgICAgKikKKy0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCisrCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KKyAJICBub2V4ZW5hbWU9JG5hbWUKKyAJICBjYXNlICRmaWxlIGluCisgCSAgKi5leGUpCitAQCAtODU0Nyw3ICs5NTU5LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAkgICAgbm9leGVuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKKyAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQorLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZpbGUiCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCisgCSAgICA7OworIAkgIGVzYWMKKyAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KK0BAIC04NTU2LDcgKzk1NjgsNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgorIAkgICAgICByZWxpbmtfY29tbWFuZD0KKyAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKyAJICAgIGVsc2UKKyAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CisgCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQorQEAgLTg1NjQsMTIgKzk1NzYsMTIgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorIAkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKKyAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKyAJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKy0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgorIAkgICAgZmkKKyAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KKy0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0ke25vZXhlbmFtZX0uYyIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorIAkgICAgZmkKKyAJICBmaQorIAlmaQorQEAgLTg1NzcsNyArOTU4OSw2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgICBlc2FjCisgICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCisgICAgIGRvbmUKKy0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKKyAKKyAgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCisgICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KK0BAIC04NTg5LDE2ICs5NjAwLDE2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgZXhpdCAkZXhpdF9zdGF0dXMKKyB9CisgCisteyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKKyt7IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCisgICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CisgCistdGVzdCAteiAiJG1vZGUiICYmIHsKKyt0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKKyAgIGhlbHA9IiRnZW5lcmljX2hlbHAiCisgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIgorIH0KKyAKKyB0ZXN0IC16ICIkZXhlY19jbWQiICYmIFwKKy0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKysgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCisgCisgaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgorICAgZXZhbCBleGVjICIkZXhlY19jbWQiCitkaWZmIC0tZ2l0IGEvbHRvcHRpb25zLm00IGIvbHRvcHRpb25zLm00CitpbmRleCA1ZWYxMmNlZDJhLi4xN2NmZDUxYzBiIDEwMDY0NAorLS0tIGEvbHRvcHRpb25zLm00CisrKysgYi9sdG9wdGlvbnMubTQKK0BAIC04LDcgKzgsNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00CisgCisgIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KKyBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCitkaWZmIC0tZ2l0IGEvbHR2ZXJzaW9uLm00IGIvbHR2ZXJzaW9uLm00CitpbmRleCBiZjg3Zjc3MTMyLi45YzdiNWQ0MTE4IDEwMDY0NAorLS0tIGEvbHR2ZXJzaW9uLm00CisrKysgYi9sdHZlcnNpb24ubTQKK0BAIC03LDE3ICs3LDE3IEBACisgIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorLSMgR2VuZXJhdGVkIGZyb20gbHR2ZXJzaW9uLmluLgorKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKyAKKy0jIHNlcmlhbCAzMTM0IGx0dmVyc2lvbi5tNAorKyMgc2VyaWFsIDMyOTMgbHR2ZXJzaW9uLm00CisgIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAorIAorLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi43YV0pCistbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzEzNF0pCisrbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40XSkKKyttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMjkzXSkKKyAKKyBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAorLVttYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKytbbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCisgX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKKyBdKQorZGlmZiAtLWdpdCBhL2x0fm9ic29sZXRlLm00IGIvbHR+b2Jzb2xldGUubTQKK2luZGV4IGJmOTJiNWUwNzkuLmM1NzNkYTkwYzUgMTAwNjQ0CistLS0gYS9sdH5vYnNvbGV0ZS5tNAorKysrIGIvbHR+b2Jzb2xldGUubTQKK0BAIC03LDcgKzcsNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00CisrIyBzZXJpYWwgNSBsdH5vYnNvbGV0ZS5tNAorIAorICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgorICMKK2RpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCitpbmRleCAxNzUzMGY1NGI5Li43OWIzOTYxMWMyIDEwMDc1NQorLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKKysrKyBiL29wY29kZXMvY29uZmlndXJlCitAQCAtNjUwLDYgKzY1MCw5IEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorK2FjX2N0X0FSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03NjMsNiArNzY2LDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfd2Vycm9yCitAQCAtMTQyMyw2ICsxNDI3LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorIAorIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCitAQCAtNTExNSw4ICs1MTIxLDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTUxNTYsNyArNTE2Miw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTU4NDIsOCArNTg0OCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC01ODkyLDYgKzU4OTgsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTU5MDgsNiArNTk4OCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjA3Niw3ICs2MTYxLDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTYyMzAsNiArNjMxNiwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTYyNDMsMTEgKzYzNDQsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYyNjMsNyArNjUxNyw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTYyODMsMTEgKzY1MzcsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjMwMyw3ICs2NTYxLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTYzMjIsNiArNjU4MCwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjMzMywxNiArNjU5NSw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTY2ODQsOCArNzAwMiw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjcyMSw2ICs3MDM5LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTY3NjIsNiArNzA4MSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC02NzczLDcgKzcxMDQsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC02Nzk5LDggKzcxMzAsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC02ODEwLDggKzcxNDEsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC02ODQ4LDYgKzcxNzksMTYgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC02ODY0LDYgKzcyMDUsNDUgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MDc1LDYgKzc0NTUsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc2MzgsNiArODEzNSw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC03ODAzLDcgKzgzMDIsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtNzg5Miw3ICs4MzkyLDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04MTkwLDggKzg2OTAsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTgzNTcsNiArODg1NSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg0MTksNyArODkyMyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NDc2LDEzICs4OTgwLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg1NDMsNiArOTA1MSwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTg4OTMsNyArOTQwNiw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTg5OTIsMTIgKzk1MDYsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTAxMSw4ICs5NTI1LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkwMzAsOCArOTU0NCw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MDc3LDggKzk1OTEsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTIwOCw3ICs5NzIyLDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTkyMjEsMjIgKzk3NDEsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTkyNDgsNyArOTc3NSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTI2MSwyMiArOTc5NCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTkzMjEsMjAgKzk4NjEsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05Mzk1LDcgKzk5NzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NDAzLDcgKzk5ODYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05NDE5LDcgKzEwMDAyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk0NDMsMTAgKzEwMDI2LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTUyNSwyMyArMTAxMDgsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk2MjYsNyArMTAyMjIsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05NjQ1LDkgKzEwMjQxLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwMjIzLDggKzEwODE5LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwMjU3LDEzICsxMDg1NCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTAzNTUsNyArMTEwMTAsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTExOTUsMTAgKzExODUwLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTEzMDEsMTAgKzExOTU2LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTI1NDMsNyArMTMxOTgsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgorICMgc2luY2UgbGliYmZkIG1heSBub3QgcHVsbCBpbiB0aGUgZW50aXJldHkgb2YgbGliaWJlcnR5LgorICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICAgY2FzZSAiJHtob3N0fSIgaW4KK0BAIC0xMzUyMCwxMyArMTQxNzUsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzU0MSwxNCArMTQyMDMsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTM1ODEsMTIgKzE0MjQ2LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzNjQxLDggKzE0MzA2LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xMzY1MiwxMiArMTQzMjIsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTEzNjczLDcgKzE0MzQ1LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTM3MDksNiArMTQzODAsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE0NDY1LDcgKzE1MTM3LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNDU2OCwxOSArMTUyNDEsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTQ2MTAsNiArMTUzMDYsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTQ2MTksNiArMTUzMjEsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE0NzMzLDEyICsxNTQzOCwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNDgyNSw5ICsxNTUzMCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE0ODQzLDYgKzE1NTQ1LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNDg3NSwyMTAgKzE1NTgwLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYyBiL29wY29kZXMvY29uZmlndXJlLmFjCitpbmRleCBhOWZiZmQ2MWYxLi5jNDM3ODBmNjRkIDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMKKysrKyBiL29wY29kZXMvY29uZmlndXJlLmFjCitAQCAtMTY3LDcgKzE2Nyw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCisgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAorIGNoYW5nZXF1b3RlKFssXSlkbmwKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICAgY2FzZSAiJHtob3N0fSIgaW4KK2RpZmYgLS1naXQgYS96bGliL2NvbmZpZ3VyZSBiL3psaWIvY29uZmlndXJlCitpbmRleCBkYzJkOWVkMzgzLi5lZDlhNDkyZjVjIDEwMDc1NQorLS0tIGEvemxpYi9jb25maWd1cmUKKysrKyBiL3psaWIvY29uZmlndXJlCitAQCAtNjE0LDggKzYxNCwxMSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKyBSQU5MSUIKKythY19jdF9BUgorIEFSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03MzcsNiArNzQwLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX2hvc3Rfc2hhcmVkCisgJworQEAgLTEzODUsNiArMTM4OSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorQEAgLTM5MTAsOCArMzkxNiw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC0zOTUxLDcgKzM5NTcsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC00NzY3LDggKzQ3NzMsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNDgxNyw2ICs0ODIzLDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC00ODMzLDYgKzQ5MTMsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTUwMDEsNyArNTA4Niw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC01MTU1LDYgKzUyNDEsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC01MTY4LDExICs1MjY5LDE2NSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01MTg4LDcgKzU0NDMsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC01MjA4LDExICs1NDYzLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTUyMjgsNyArNTQ4Nyw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC01MjQ3LDYgKzU1MDYsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTUyNTgsMTYgKzU1MjEsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC01NjA5LDggKzU5MjgsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTU2NDYsNiArNTk2NSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC01Njg3LDYgKzYwMDcsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNTY5OCw3ICs2MDMwLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNTcyNCw4ICs2MDU2LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNTczNSw4ICs2MDY3LDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNTc3Myw2ICs2MTA1LDE5IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNTc5MCw2ICs2MTM1LDQxIEBAIGZpCisgCisgCisgCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNjAwNCw2ICs2Mzg0LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC02NTcwLDYgKzcwNjcsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtNzAzMyw3ICs3NTMyLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTcxMjIsNyArNzYyMiw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtNzQyMCw4ICs3OTIwLDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC03NTg3LDYgKzgwODUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC03NjQ5LDcgKzgxNTMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtNzcwNiwxMyArODIxMCwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC03NzczLDYgKzgyODEsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC04MTIzLDcgKzg2MzYsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC04MjIyLDEyICs4NzM2LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTgyNDEsOCArODc1NSw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC04MjYwLDggKzg3NzQsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtODMwNyw4ICs4ODIxLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTg0MzgsNyArODk1MiwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgorICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CisgZmkKKyBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CitAQCAtODQ1NCwyMiArODk3NCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtODQ4MSw3ICs5MDA4LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgorICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CisgZmkKKyBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CitAQCAtODQ5NywyMiArOTAzMCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTg1NTcsMjAgKzkwOTcsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC04NjMxLDcgKzkyMTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC04NjM5LDcgKzkyMjIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC04NjU1LDcgKzkyMzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtODY3OSwxMCArOTI2MiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTg3NjEsMjYgKzkzNDQsMzkgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgorICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CisgZmkKKyBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtODg2NSw3ICs5NDYxLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtODg4NCw5ICs5NDgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTk0NjIsOCArMTAwNTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtOTQ5NiwxMyArMTAwOTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTk1OTQsNyArMTAyNDksNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTA0NTIsMTAgKzExMTA3LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTA1NTgsMTAgKzExMjEzLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE5OTIsMTMgKzEyNjQ3LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTIwMTMsMTQgKzEyNjc1LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEyMDUzLDEyICsxMjcxOCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMjExMyw4ICsxMjc3OCwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTIxMjQsMTIgKzEyNzk0LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xMjE0NSw3ICsxMjgxNyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTEyMTgxLDYgKzEyODUyLDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xMjc3MCw3ICsxMzQ0Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTI4NzMsMTkgKzEzNTQ2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTEyOTE1LDYgKzEzNjExLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTEyOTI0LDYgKzEzNjI2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xMzAzOCwxMiArMTM3NDMsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTMxMzAsOSArMTM4MzUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xMzE0OCw2ICsxMzg1MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTMxODAsMjEwICsxMzg4NSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODAxOTYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDJiODdhYWQxNzQxYmM0ODFkZDA5ODJmMTAwYWQ1ZWE3ZjkzN2JiNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM3OjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTVdIEFkZCB0aGUgYXJtdjVlIGFyY2hpdGVjdHVyZSB0byBiaW51dGlscworCitCaW51dGlscyBoYXMgYSBjb21tZW50IHRoYXQgaW5kaWNhdGVzIGl0IGlzIHN1cHBvc2VkIHRvIG1hdGNoIGdjYyBmb3IKK2FsbCBvZiB0aGUgc3VwcG9ydCAiLW1hcmNoPSIgc2V0dGluZ3MsIGJ1dCBpdCB3YXMgbGFja2luZyB0aGUgYXJtdjVlIHNldHRpbmcuCitUaGlzIHdhcyBhIHNpbXBsZSB3YXkgdG8gYWRkIGl0LCBhcyB0aHVtYiBpbnN0cnVjdGlvbnMgc2hvdWxkbid0IGJlIGdlbmVyYXRlZAorYnkgdGhlIGNvbXBpbGVyIGFueXdheS4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKK1Vwc3RyZWFtIG1haW50YWluZXIgaW5kaWNhdGVkIHRoYXQgd2Ugc2hvdWxkIG5vdCBiZSB1c2luZyBhcm12NWUsIGV2ZW4KK3Rob3VnaCBpdCBpcyBhIGxlZ2FsIGFyY2hpY3R1cmUgZGVmaW5lZCBieSBvdXIgZ2NjLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2FzL2NvbmZpZy90Yy1hcm0uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1hcm0uYyBiL2dhcy9jb25maWcvdGMtYXJtLmMKK2luZGV4IGE4ODVlZmU0ZmMuLjczNWVhYTc0NDcgMTAwNjQ0CistLS0gYS9nYXMvY29uZmlnL3RjLWFybS5jCisrKysgYi9nYXMvY29uZmlnL3RjLWFybS5jCitAQCAtMjU5OTAsNiArMjU5OTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybV9hcmNoX29wdGlvbl90YWJsZSBhcm1fYXJjaHNbXSA9CisgICBBUk1fQVJDSF9PUFQgKCJhcm12NHQiLAlBUk1fQVJDSF9WNFQsCSBGUFVfQVJDSF9GUEEpLAorICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0eG0iLAlBUk1fQVJDSF9WNFR4TSwJIEZQVV9BUkNIX0ZQQSksCisgICBBUk1fQVJDSF9PUFQgKCJhcm12NSIsCUFSTV9BUkNIX1Y1LAkgRlBVX0FSQ0hfVkZQKSwKKysgIEFSTV9BUkNIX09QVCAoImFybXY1ZSIsCUFSTV9BUkNIX1Y1VEUsCSBGUFVfQVJDSF9WRlApLAorICAgQVJNX0FSQ0hfT1BUICgiYXJtdjV0IiwJQVJNX0FSQ0hfVjVULAkgRlBVX0FSQ0hfVkZQKSwKKyAgIEFSTV9BUkNIX09QVCAoImFybXY1dHhtIiwJQVJNX0FSQ0hfVjVUeE0sCSBGUFVfQVJDSF9WRlApLAorICAgQVJNX0FSQ0hfT1BUICgiYXJtdjV0ZSIsCUFSTV9BUkNIX1Y1VEUsCSBGUFVfQVJDSF9WRlApLAorLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiN2Y3NTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMTM3ICswLDAgQEAKLUZyb20gOWEzNjUxZTEyMDI2MWM3MjA5MDY4OWFkNzcwYWQwNDhiMGJhZjUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6Mjg6MzMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xNV0gVXNlIGxpYnRvb2wgMi40Ci0KLWdldCBsaWJ0b29sIHN5c3Jvb3Qgc3VwcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBPRSBjb25maWd1cmF0aW9uIFNwZWNpZmljXQotCi0gYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gYmZkL2NvbmZpZ3VyZS5hYyAgICAgfCAgICAyICstCi0gYmludXRpbHMvY29uZmlndXJlICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gZ2FzL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE0ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gZ3Byb2YvY29uZmlndXJlICAgICAgfCAxMzIxICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gbGQvY29uZmlndXJlICAgICAgICAgfCAxNjkxICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gbGlidG9vbC5tNCAgICAgICAgICAgfCAxMDgwICsrKysrKysrKysrKystLS0tLS0KLSBsdG1haW4uc2ggICAgICAgICAgICB8IDI5MjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSBsdG9wdGlvbnMubTQgICAgICAgICB8ICAgIDIgKy0KLSBsdHZlcnNpb24ubTQgICAgICAgICB8ICAgMTIgKy0KLSBsdH5vYnNvbGV0ZS5tNCAgICAgICB8ICAgIDIgKy0KLSBvcGNvZGVzL2NvbmZpZ3VyZSAgICB8IDEzMTggKysrKysrKysrKysrKysrKystLS0tLS0KLSBvcGNvZGVzL2NvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KLSB6bGliL2NvbmZpZ3VyZSAgICAgICB8IDEzMTYgKysrKysrKysrKysrKysrKystLS0tLS0KLSAxNCBmaWxlcyBjaGFuZ2VkLCA5OTI2IGluc2VydGlvbnMoKyksIDM2OTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlIGIvYmZkL2NvbmZpZ3VyZQotaW5kZXggZjMwYmZhYmVmMy4uZmExYTU0NWU5ZCAxMDA3NTUKLS0tLSBhL2JmZC9jb25maWd1cmUKLSsrKyBiL2JmZC9jb25maWd1cmUKLUBAIC02NzIsNiArNjcyLDkgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0rYWNfY3RfQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc4NSw2ICs3ODgsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDYxLDYgKzE0NjUsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtbW1hcCAgICAgICAgICAgICB0cnkgdXNpbmcgbW1hcCBmb3IgQkZEIGlucHV0IGZpbGVzIGlmIGF2YWlsYWJsZQotICAgLS13aXRoLXNlcGFyYXRlLWRlYnVnLWRpcj1ESVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2sgZm9yIGdsb2JhbCBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGluIERJUgotQEAgLTUzOTMsOCArNTM5OSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01NDM0LDcgKzU0NDAsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02MTIwLDggKzYxMjYsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjE3MCw2ICs2MTc2LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MTg2LDYgKzYyNjYsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYzNTQsNyArNjQzOSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02NTA4LDYgKzY1OTQsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02NTIzLDkgKzY2MjQsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY1NDEsNyArNjc5NSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY1NjEsMTEgKzY4MTUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjU4MSw3ICs2ODM5LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY2MDAsNiArNjg1OCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjYxMSwxNiArNjg3Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0gCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotIAotIAotIAotQEAgLTY5NjIsOCArNzI4MCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNjk5OSw2ICs3MzE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTcwNDAsNiArNzM1OSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC03MDUxLDcgKzczODIsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC03MDc3LDggKzc0MDgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03MDg4LDggKzc0MTksOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03MTI2LDYgKzc0NTcsMTYgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03MTQ3LDYgKzc0ODgsNDUgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOwotQEAgLTczNTMsNiArNzczMywxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzkxNiw2ICs4NDEzLDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTgwODAsNyArODU3OSw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04MTY5LDcgKzg2NjksNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg0NjcsOCArODk2Nyw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODYzNCw2ICs5MTMyLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODY5Niw3ICs5MjAwLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg3NTMsMTMgKzkyNTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODgyMCw2ICs5MzI4LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTE3MCw3ICs5NjgzLDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTI2OSwxMiArOTc4MywxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05Mjg4LDggKzk4MDIsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTMwNyw4ICs5ODIxLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkzNTQsOCArOTg2OCw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NDg1LDcgKzk5OTksMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTQ5OCwyMiArMTAwMTgsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk1MjUsNyArMTAwNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk1MzgsMjIgKzEwMDcxLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTU5OCwyMCArMTAxMzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NjcyLDcgKzEwMjU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTY4MCw3ICsxMDI2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk2OTYsNyArMTAyNzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTcyMCwxMCArMTAzMDMsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05ODAyLDIzICsxMDM4NSwzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTkwMyw3ICsxMDQ5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk5MjIsOSArMTA1MTgsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA1MDAsOCArMTEwOTYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA1MzQsMTMgKzExMTMxLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDYzMiw3ICsxMTI4Nyw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTQ3MiwxMCArMTIxMjcsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTU3OCwxMCArMTIyMzMsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNDEyMiw3ICsxNDc3Nyw3IEBAIFNIQVJFRF9MREZMQUdTPQotIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KLUBAIC0xNjgyNiwxMyArMTc0ODEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNjg0NywxNCArMTc1MDksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTY4ODcsMTIgKzE3NTUyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE2OTQ3LDggKzE3NjEyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNjk1OCwxMiArMTc2MjgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE2OTc5LDcgKzE3NjUxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTcwMTUsNiArMTc2ODYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE3Nzk0LDcgKzE4NDY2LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNzg5NywxOSArMTg1NzAsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTc5MzksNiArMTg2MzUsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTc5NDgsNiArMTg2NTAsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE4MDYyLDEyICsxODc2NywxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xODE1NCw5ICsxODg1OSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE4MTcyLDYgKzE4ODc0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xODIwNCwyMTAgKzE4OTA5LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlLmFjIGIvYmZkL2NvbmZpZ3VyZS5hYwotaW5kZXggOWExODNjMTYyOC4uM2Q4ZWEwNzgzNiAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWd1cmUuYWMKLSsrKyBiL2JmZC9jb25maWd1cmUuYWMKLUBAIC0yNTMsNyArMjUzLDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gY2hhbmdlcXVvdGUoWyxdKWRubAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KLWRpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKLWluZGV4IDgyMTE5ZWZlNzIuLjRhOTg5MThjZTEgMTAwNzU1Ci0tLS0gYS9iaW51dGlscy9jb25maWd1cmUKLSsrKyBiL2JpbnV0aWxzL2NvbmZpZ3VyZQotQEAgLTY1OSw4ICs2NTksMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzcyLDYgKzc3NSw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0NDQsNiArMTQ0OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIGRlZmF1bHQ9bm8KLSAgIC0td2l0aC1saWJpY29udi1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGliaWNvbnYgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKLUBAIC01MTYwLDggKzUxNjYsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTIwMSw3ICs1MjA3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTg4Nyw4ICs1ODkzLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU5MzcsNiArNTk0Myw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTk1Myw2ICs2MDMzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MTIxLDcgKzYyMDYsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjI3NSw2ICs2MzYxLDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjI5MCw5ICs2MzkxLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MzA4LDcgKzY1NjIsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02MzI4LDExICs2NTgyLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYzNDgsNyArNjYwNiw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02MzY3LDYgKzY2MjUsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTYzNzgsMTIgKzY2NDAsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0gCi0gCi0gCi1AQCAtNjM5NSw2ICs2NjU1LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNjcyOSw4ICs3MDQ3LDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02NzY2LDYgKzcwODQsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjgwNyw2ICs3MTI2LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY4MTgsNyArNzE0OSw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY4NDQsOCArNzE3NSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY4NTUsOCArNzE4Niw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTY4OTMsNiArNzIyNCwyMSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTY5MTAsNiArNzI1Niw0MCBAQCBmaQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotKwotKwotIAotIAotIAotQEAgLTcxMjAsNiArNzUwMCwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzY4Myw2ICs4MTgwLDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTc4NzgsNyArODM3Nyw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC03OTY3LDcgKzg0NjcsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgyNjUsOCArODc2NSw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODQzMiw2ICs4OTMwLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODQ5NCw3ICs4OTk4LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg1NTEsMTMgKzkwNTUsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODYxOCw2ICs5MTI2LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtODk2OCw3ICs5NDgxLDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTA2NywxMiArOTU4MSwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05MDg2LDggKzk2MDAsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTEwNSw4ICs5NjE5LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkxNTIsOCArOTY2Niw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MjgzLDcgKzk3OTcsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTI5NiwyMiArOTgxNiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTMyMyw3ICs5ODUwLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MzM2LDIyICs5ODY5LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTM5NiwyMCArOTkzNiw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk0NzAsNyArMTAwNTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05NDc4LDcgKzEwMDYxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTQ5NCw3ICsxMDA3Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05NTE4LDEwICsxMDEwMSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk2MDAsMjMgKzEwMTgzLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NzAxLDcgKzEwMjk3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTcyMCw5ICsxMDMxNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDI5OCw4ICsxMDg5NCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDMzMiwxMyArMTA5MjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwNDMwLDcgKzExMDg1LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExMjcwLDEwICsxMTkyNSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMzc2LDEwICsxMjAzMSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE1NDM2LDEzICsxNjA5MSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NDU3LDE0ICsxNjExOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ5NywxMiArMTYxNjIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU1NTcsOCArMTYyMjIsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE1NTY4LDEyICsxNjIzOCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTU1ODksNyArMTYyNjEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNTYyNSw2ICsxNjI5Niw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTYzODIsNyArMTcwNTQsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2NDg1LDE5ICsxNzE1OCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNjUyNyw2ICsxNzIyMywxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNjUzNiw2ICsxNzIzOCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTY2NTAsMTIgKzE3MzU1LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE2NzQyLDkgKzE3NDQ3LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTY3NjAsNiArMTc0NjIsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE2NzkyLDIxMCArMTc0OTcsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCBlNTc0Y2I4NTE0Li5hMzZmMWFlMTYxIDEwMDc1NQotLS0tIGEvZ2FzL2NvbmZpZ3VyZQotKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTY1MCw4ICs2NTAsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzYzLDYgKzc2Niw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTQ5MjEsOCArNDkyNSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC00OTYyLDcgKzQ5NjYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01NjQ4LDggKzU2NTIsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTY5OCw2ICs1NzAyLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01NzE0LDYgKzU3OTIsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTU4ODIsNyArNTk2NSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02MDM2LDYgKzYxMjAsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02MDUxLDkgKzYxNTAsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYwNjksNyArNjMyMSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYwODksMTEgKzYzNDEsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjEwOSw3ICs2MzY1LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYxMjgsNiArNjM4NCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjEzOSwxMiArNjM5OSwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSAKLSAKLSAKLUBAIC02MTU2LDYgKzY0MTQsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC02NDkwLDggKzY4MDYsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTY1MjcsNiArNjg0Myw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC02NTY4LDYgKzY4ODUsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNjU3OSw3ICs2OTA4LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNjYwNSw4ICs2OTM0LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjYxNiw4ICs2OTQ1LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNjY1NCw2ICs2OTgzLDIxIEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNjY3MSw2ICs3MDE1LDQwIEBAIGZpCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0gCi0gCi0gCi1AQCAtNjg4MSw2ICs3MjU5LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03NDQ0LDYgKzc5MzksOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzYzOSw3ICs4MTM2LDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTc3MjgsNyArODIyNiw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODAyNiw4ICs4NTI0LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MTkzLDYgKzg2ODksMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04MjU1LDcgKzg3NTcsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODMxMiwxMyArODgxNCwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04Mzc5LDYgKzg4ODUsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04NzI5LDcgKzkyNDAsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04ODI4LDEyICs5MzQwLDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTg4NDcsOCArOTM1OSw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC04ODY2LDggKzkzNzgsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODkxMyw4ICs5NDI1LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkwNDQsNyArOTU1NiwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MDU3LDIyICs5NTc1LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MDg0LDcgKzk2MDksMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkwOTcsMjIgKzk2MjgsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05MTU3LDIwICs5Njk1LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTIzMSw3ICs5ODEyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTIzOSw3ICs5ODIwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTI1NSw3ICs5ODM2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTkyNzksMTAgKzk4NjAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05MzYxLDIzICs5OTQyLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NDYyLDcgKzEwMDU2LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTQ4MSw5ICsxMDA3NSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDA1OSw4ICsxMDY1Myw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDA5MywxMyArMTA2ODgsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwMTkxLDcgKzEwODQ0LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExMDMxLDEwICsxMTY4NCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMTM3LDEwICsxMTc5MCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE1NDI1LDEzICsxNjA3OCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NDQ2LDE0ICsxNjEwNiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ4NiwxMiArMTYxNDksMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU1NDYsOCArMTYyMDksMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE1NTU3LDEyICsxNjIyNSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTU1NzgsNyArMTYyNDgsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNTYxNCw2ICsxNjI4Myw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTYzNzgsNyArMTcwNDgsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2NDgxLDE5ICsxNzE1Miw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNjUyMyw2ICsxNzIxNywxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNjUzMiw2ICsxNzIzMiw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTY2NDYsMTIgKzE3MzQ5LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE2NzM4LDkgKzE3NDQxLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTY3NTYsNiArMTc0NTYsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE2Nzg4LDIxMCArMTc0OTEsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2dwcm9mL2NvbmZpZ3VyZSBiL2dwcm9mL2NvbmZpZ3VyZQotaW5kZXggMzhhNGMwYjBlNS4uMzhkMWY2OTljNyAxMDA3NTUKLS0tLSBhL2dwcm9mL2NvbmZpZ3VyZQotKysrIGIvZ3Byb2YvY29uZmlndXJlCi1AQCAtNjMxLDggKzYzMSwxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03NDQsNiArNzQ3LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQwMiw2ICsxNDA2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotIAotIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNDgzNiw4ICs0ODQyLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTQ4NzcsNyArNDg4Myw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU1NjMsOCArNTU2OSw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01NjEzLDYgKzU2MTksODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU2MjksNiArNTcwOSwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNTc5Nyw3ICs1ODgyLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTU4NzQsMTEgKzU5NjAsNiBAQCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICAgOzsKLSAKLS1saW51eC11Y2xpYmMqKQotLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLS0gIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC9saWIvbGlidUNsaWJjLSouc29gCi0tICA7OwotLQotIG5ldGJzZCopCi0gICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKLUBAIC01OTU2LDYgKzYwMzcsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC01OTcxLDkgKzYwNjcsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU5ODksNyArNjIzOCw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYwMDksMTEgKzYyNTgsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjAyOSw3ICs2MjgyLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYwNDgsNiArNjMwMSwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjA1OSwxMiArNjMxNiwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSAKLSAKLSAKLUBAIC02MDc2LDYgKzYzMzEsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC02NDEwLDggKzY3MjMsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTY0NDcsNiArNjc2MCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC02NDg4LDYgKzY4MDIsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNjQ5OSw3ICs2ODI1LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNjUyNSw4ICs2ODUxLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjUzNiw4ICs2ODYyLDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNjU3NCw2ICs2OTAwLDE4IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNjU5NSw2ICs2OTMzLDQzIEBAIGZpCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIGVuYWJsZXZhbD0kZW5hYmxlX2xpYnRvb2xfbG9jazsKLUBAIC02ODAxLDYgKzcxNzYsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTczNjQsNiArNzg1Niw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC03NTU5LDcgKzgwNTMsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtNzY0OCw3ICs4MTQzLDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC03OTQ2LDggKzg0NDEsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTgxMTMsNiArODYwNiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTgxNzUsNyArODY3NCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04MjMyLDEzICs4NzMxLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTgyOTksNiArODgwMiwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTg2NDksNyArOTE1Nyw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTg3NDgsMTIgKzkyNTcsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtODc2Nyw4ICs5Mjc2LDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTg3ODYsOCArOTI5NSw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC04ODMzLDggKzkzNDIsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODk2NCw3ICs5NDczLDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTg5NzcsMjIgKzk0OTIsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTkwMDQsNyArOTUyNiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTAxNywyMiArOTU0NSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkwNzcsMjAgKzk2MTIsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05MTUxLDcgKzk3MjksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05MTU5LDcgKzk3MzcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05MTc1LDcgKzk3NTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTE5OSwxMCArOTc3NywxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTkyODEsMjMgKzk4NTksMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTkzODIsNyArOTk3Myw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk0MDEsOSArOTk5Miw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC05OTc5LDggKzEwNTcwLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwMDEzLDEzICsxMDYwNSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTAxMTEsNyArMTA3NjEsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTA5NTEsMTAgKzExNjAxLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEwNTcsMTAgKzExNzA3LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTMwMDUsMTMgKzEzNjU1LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTMwMjYsMTQgKzEzNjgzLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzMDY2LDEyICsxMzcyNiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzEyNiw4ICsxMzc4NiwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTMxMzcsMTIgKzEzODAyLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMzE1OCw3ICsxMzgyNSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzMTk0LDYgKzEzODYwLDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xMzk1MCw3ICsxNDYxNyw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQwNTMsMTkgKzE0NzIxLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE0MDk1LDYgKzE0Nzg2LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE0MTA0LDYgKzE0ODAxLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNDIxOCwxMiArMTQ5MTgsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTQzMTAsOSArMTUwMTAsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNDMyOCw2ICsxNTAyNSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTQzNjAsMjEwICsxNTA2MCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCBhMTZjNmRiMDU5Li40Mjc3Yjc0YmFkIDEwMDc1NQotLS0tIGEvbGQvY29uZmlndXJlCi0rKysgYi9sZC9jb25maWd1cmUKLUBAIC02NTksOCArNjU5LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc4Miw2ICs3ODUsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDYzLDYgKzE0NjcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtbGliLXBhdGg9ZGlyMTpkaXIyLi4uICBzZXQgZGVmYXVsdCBMSUJfUEFUSAotICAgLS13aXRoLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgdXNyL2xpYiBldCBhbCB3aXRoaW4gRElSLgotIAotQEAgLTU2NTcsOCArNTY2Myw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01Njk4LDcgKzU3MDQsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02Mzg0LDggKzYzOTAsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjQzNCw2ICs2NDQwLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02NDUwLDYgKzY1MzAsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTY2MTgsNyArNjcwMyw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02NzcyLDYgKzY4NTgsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02Nzg3LDkgKzY4ODgsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY4MDUsNyArNzA1OSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY4MjUsMTEgKzcwNzksMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjg0NSw3ICs3MTAzLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY4NjQsNiArNzEyMiwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjg3NSwxMiArNzEzNywxMiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSAKLSAKLSAKLUBAIC02ODkwLDYgKzcxNTIsNjIgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLUBAIC03MjI2LDggKzc1NDQsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTcyNjMsNiArNzU4MSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC03MzA0LDYgKzc2MjMsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNzMxNSw3ICs3NjQ2LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNzM0MSw4ICs3NjcyLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzM1Miw4ICs3NjgzLDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzM5MCw2ICs3NzIxLDE5IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzQxMCw2ICs3NzU0LDQyIEBAIGZpCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0gCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC03NjE3LDYgKzc5OTcsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTgxODAsNiArODY3Nyw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04MjQ4LDYgKzg3NDcsMTYgQEAgZG9uZQotIAotIAotIAotK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQotK3sKLSsgIGNhc2UgJHsyfSBpbgotKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSsgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLSsgIGVzYWMKLSt9ICMgZnVuY19zdHJpcG5hbWVfY25mCi0rCi0rCi0rCi0gCi0gCi0gIyBTZXQgb3B0aW9ucwotQEAgLTgzNzYsNyArODg4NSw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04NDY1LDcgKzg5NzUsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg3NjMsOCArOTI3Myw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODkzMCw2ICs5NDM4LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODk5Miw3ICs5NTA2LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTkwNDksMTMgKzk1NjMsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtOTExNiw2ICs5NjM0LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTQ2Niw3ICs5OTg5LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTU2NSwxMiArMTAwODksMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTU4NCw4ICsxMDEwOCw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05NjAzLDggKzEwMTI3LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk2NTAsOCArMTAxNzQsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTc4MSw3ICsxMDMwNSwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05Nzk0LDIyICsxMDMyNCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTgyMSw3ICsxMDM1OCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTgzNCwyMiArMTAzNzcsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05ODkzLDIxICsxMDQ0Myw2NCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05OTY4LDcgKzEwNTYxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTk3Niw3ICsxMDU2OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk5OTIsNyArMTA1ODUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtMTAwMTYsMTAgKzEwNjA5LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtMTAwOTgsMjMgKzEwNjkxLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC0xMDE5OSw3ICsxMDgwNSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTEwMjE4LDkgKzEwODI0LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNzk2LDggKzExNDAyLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwODMwLDEzICsxMTQzNyw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA5MjgsNyArMTE1OTMsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTE3NjgsMTAgKzEyNDMzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE4NzQsMTAgKzEyNTM5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTIyNjksNiArMTI5MzQsNyBAQCAkUk0gLXIgY29uZnRlc3QqCi0gCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0kQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIGx0X3NhdmVfTEQ9JExECi0gICBsdF9zYXZlX0dDQz0kR0NDCi0gICBHQ0M9JEdYWAotQEAgLTEyMjg2LDYgKzEyOTUyLDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgotICAgZmkKLSAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCi0gICBDQz0ke0NYWC0iYysrIn0KLSsgIENGTEFHUz0kQ1hYRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgY29tcGlsZXJfQ1hYPSRDQwotICAgZm9yIGNjX3RlbXAgaW4gJGNvbXBpbGVyIiI7IGRvCi1AQCAtMTI1NjgsNyArMTMyMzUsMTMgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKLSAgICAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPSctYmVyb2snCi0gICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQotICAgICAgICAgICAjIGV4ZWN1dGFibGUuCi0tICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMjU4MSwyMiArMTMyNTQsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKLStmaQotIAotICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAKLUBAIC0xMjYwOSw3ICsxMzI4OSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgICAgZWxzZQotIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTEyNjIyLDIyICsxMzMwOCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAotK2ZpCi0gCi0gCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtMTI2ODAsMjkgKzEzMzczLDc1IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICAgOzsKLSAKLSAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0tICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLS0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJwotLSAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLS0gICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAotLSAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubwotLSAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCi0tCi0tICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0tICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLS0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZWxzZQotLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBmaX4KLS0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCi0tICAgICAgICBmaQotLSAgICAgICAgOzsKLSsJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgotKwksY2wqIHwgbm8sY2wqKQotKwkgICMgTmF0aXZlIE1TVkMKLSsJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0rCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nICcKLSsJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKLSsJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPXllcwotKwkgIGZpbGVfbGlzdF9zcGVjX0NYWD0nQCcKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwkgIGxpYmV4dD1saWIKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJICBzaHJleHRfY21kcz0iLmRsbCIKLSsJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZWxzZQotKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGZpfgotKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgICAgbGlua25hbWVzPScKLSsJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsIENYWCk9J3RydWUnCi0rCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCi0rCSAgIyBEb24ndCB1c2UgcmFubGliCi0rCSAgb2xkX3Bvc3RpbnN0YWxsX2NtZHNfQ1hYPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJICBwb3N0bGlua19jbWRzX0NYWD0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAgICopCi0rCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkJOzsKLSsJICAgIGVzYWN+Ci0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgotKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgICBmaScKLSsJICA7OwotKwkqKQotKwkgICMgZysrCi0rCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0rCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJwotKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0rCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCi0rCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubwotKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotKwotKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSsJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSsJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0rCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgZWxzZQotKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGZpfgotKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotKwkgIGVsc2UKLSsJICAgIGxkX3NobGlic19DWFg9bm8KLSsJICBmaQotKwkgIDs7Ci0rCWVzYWMKLSsJOzsKLSAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotIAotIAotQEAgLTEyODA4LDcgKzEzNTQ3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgICAgKikKLSAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotLSAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCi1AQCAtMTI4NzksMTAgKzEzNjE4LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICBpYTY0KikKLS0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgKikKLS0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICBlc2FjCi0gCSAgICAgIGZpCi1AQCAtMTI5MjMsOSArMTM2NjIsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgICAgKikKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkgICAgICBlbHNlCi0tCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi1AQCAtMTI5OTUsMjAgKzEzNzM0LDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICBwcmVsaW5rX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0tCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCi0rCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwotIAkgICAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLS0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+Ci0rCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KLSAJCSRSQU5MSUIgJG9sZGxpYicKLSAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0gCSAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gCSAgICAgIDs7Ci0gCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwotIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLUBAIC0xMzIwMyw3ICsxMzk0Miw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICAgICopCi0tCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgZXNhYwotIAotQEAgLTEzMjQ5LDcgKzEzOTg4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICAgc29sYXJpcyopCi0gICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgICAgICBDQyopCi0rICAgICAgICAgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9eWVzCi0gCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAtemRlZnMnCi1AQCAtMTMyOTAsOSArMTQwMjksOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotIAkgICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS16ICR7d2x9ZGVmcycKLSAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KLS0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotIAkgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAKLSAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0gCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi1AQCAtMTM0MjcsNiArMTQxNjYsMTMgQEAgcHJpdmF0ZToKLSB9OwotIF9MVF9FT0YKLSAKLSsKLStfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0rY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAotKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OwotKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKLStlc2FjCi0rCi0gaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICAgYWNfc3RhdHVzPSQ/Ci1AQCAtMTM0NDAsNyArMTQxODYsNyBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKLSAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KLSAKLSAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KLS0gICAgY2FzZSAkcCBpbgotKyAgICBjYXNlICR7cHJldn0ke3B9IGluCi0gCi0gICAgIC1MKiB8IC1SKiB8IC1sKikKLSAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KLUBAIC0xMzQ0OSwxMyArMTQxOTUsMjIgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCi0gCSBwcmV2PSRwCi0gCSBjb250aW51ZQotLSAgICAgICBlbHNlCi0tCSBwcmV2PQotICAgICAgICBmaQotIAotKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgotKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KLSsgICAgICAgICBjYXNlICRwIGluCi0rICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgZXNhYwotKyAgICAgICBmaQotKyAgICAgICBjYXNlICRwIGluCi0rICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLS0JIGNhc2UgJHAgaW4KLS0JIC1MKiB8IC1SKikKLSsJIGNhc2UgJHtwcmV2fSBpbgotKwkgLUwgfCAtUikKLSAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCi0gCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQotIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KLUBAIC0xMzQ3NSw4ICsxNDIzMCwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKLSAJICAgcG9zdGRlcHNfQ1hYPSIke3Bvc3RkZXBzX0NYWH0gJHtwcmV2fSR7cH0iCi0gCSBmaQotICAgICAgICBmaQotKyAgICAgICBwcmV2PQotICAgICAgICA7OwotIAotKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKLSAgICAgKi4kb2JqZXh0KQotICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKLSAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCi1AQCAtMTM1MTIsNiArMTQyNjksNyBAQCBlbHNlCi0gZmkKLSAKLSAkUk0gLWYgY29uZmVzdC4kb2JqZXh0Ci0rQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUwotIAotICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCi0gY2FzZSAkaG9zdF9vcyBpbgotQEAgLTEzNTQ3LDcgKzE0MzA1LDcgQEAgbGludXgqKQotIAotIHNvbGFyaXMqKQotICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gIENDKikKLSsgIENDKiB8IHN1bkNDKikKLSAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCi0gICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi1AQCAtMTM2MTIsOCArMTQzNzAsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KLSAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi1AQCAtMTM3MTgsNiArMTQ0NzQsMTEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJICA7OwotIAllc2FjCi0gCTs7Ci0rICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKLSsJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZwotKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgotKwlsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1ERExMX0VYUE9SVCcKLSsJOzsKLSAgICAgICBkZ3V4KikKLSAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAJICBlYysrKikKLUBAIC0xMzg3MCw3ICsxNDYzMSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCTs7Ci0gICAgICAgc29sYXJpcyopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tCSAgQ0MqKQotKwkgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAJICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLUtQSUMnCi0gCSAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJwotQEAgLTEzOTM1LDEwICsxNDY5NiwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTEzOTk2LDYgKzE0NzY0LDggQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC0xNDE3Myw2ICsxNDk0Myw3IEBAIGZpCi0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0gCi0gICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJwotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgYWl4WzQtOV0qKQotICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLUBAIC0xNDE4NywxNSArMTQ5NTgsMjAgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKLSAgICAgOzsKLSAgIHB3MzIqKQotICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0iJGx0ZGxsX2NtZHMiCi0tICA7OwotKyAgICA7OwotICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKLS0gICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvOy9eLipbIF1fX25tX18vcy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgY2wqKSA7OwotKyAgICAqKQotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zX0NYWD0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSAgICopCi0gICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0tICA7OwotKyAgICA7OwotICAgZXNhYwotLSAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJwotIAotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGRfc2hsaWJzX0NYWCIgPiY1Ci0gJGFzX2VjaG8gIiRsZF9zaGxpYnNfQ1hYIiA+JjY7IH0KLUBAIC0xNDQ1OCw4ICsxNTIzNCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xNDQ5MSwxMyArMTUyNjgsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTE0NTg4LDcgKzE1NDIzLDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTE1MDQ3LDYgKzE1ODgyLDcgQEAgZmkKLSAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgotIAotICAgQ0M9JGx0X3NhdmVfQ0MKLSsgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSAgIExEQ1hYPSRMRAotICAgTEQ9JGx0X3NhdmVfTEQKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLUBAIC0xODAyNiwxMyArMTg4NjIsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODA0NywxNCArMTg4OTAsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgwODcsMTIgKzE4OTMzLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4MTMxLDggKzE4OTc3LDggQEAgb2xkX2FyY2hpdmVfY21kc19DWFg9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGUKLSBjb21waWxlcl9DWFg9J2AkRUNITyAiJGNvbXBpbGVyX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gR0NDX0NYWD0nYCRFQ0hPICIkR0NDX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWD0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgxNTksMTIgKzE5MDA1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCi0gaGFyZGNvZGVfYXV0b21hdGljX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aF9DWFg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzX0NYWD0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlic19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGhfQ1hYPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcG9zdGxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjX0NYWD0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBoYXJkY29kZV9hY3Rpb25fQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODIwMiw4ICsxOTA0OCwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTgyMTMsMTIgKzE5MDY0LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xODIzNCw3ICsxOTA4Nyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTE4MjU2LDggKzE5MTA4LDggQEAgTERfQ1hYIFwKLSByZWxvYWRfZmxhZ19DWFggXAotIGNvbXBpbGVyX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFggXAotIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFggXAotQEAgLTE4MjY5LDcgKzE5MTIxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWCBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFggXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIFwKLS1maXhfc3JjZmlsZV9wYXRoX0NYWCBcCi0gZXhjbHVkZV9leHBzeW1zX0NYWCBcCi0gaW5jbHVkZV9leHBzeW1zX0NYWCBcCi0gZmlsZV9saXN0X3NwZWNfQ1hYIFwKLUBAIC0xODMwMyw2ICsxOTE1NCw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTgzMTcsNyArMTkxNjksOCBAQCBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCBcCi0gbW9kdWxlX2NtZHNfQ1hYIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHNfQ1hYIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzX0NYWCBcCi0tcHJlbGlua19jbWRzX0NYWDsgZG8KLStwcmVsaW5rX2NtZHNfQ1hYIFwKLStwb3N0bGlua19jbWRzX0NYWDsgZG8KLSAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCi0gICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCi0gICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKLUBAIC0xOTExMCw3ICsxOTk2Myw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTkyMTMsMTkgKzIwMDY3LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE5MjU1LDYgKzIwMTMyLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE5MjY0LDYgKzIwMTQ3LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xOTM3OCwxMiArMjAyNjQsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTk0NzAsOSArMjAzNTYsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xOTQ4OCw2ICsyMDM3MSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTk1MzQsMjEwICsyMDQyMCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1AQCAtMTk3NjUsMTIgKzIwNjEwLDEyIEBAIHdpdGhfZ2NjPSRHQ0NfQ1hYCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWAotIAotQEAgLTE5ODU3LDkgKzIwNzAyLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aF9DWFgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzX0NYWAotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoX0NYWAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWAotIAotQEAgLTE5ODc1LDYgKzIwNzE3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kc19DWFgKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kc19DWFgKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWNfQ1hYCi0gCi1kaWZmIC0tZ2l0IGEvbGlidG9vbC5tNCBiL2xpYnRvb2wubTQKLWluZGV4IDI0ZDEzZjM0NDAuLmU0NWZkYzY5OTggMTAwNjQ0Ci0tLS0gYS9saWJ0b29sLm00Ci0rKysgYi9saWJ0b29sLm00Ci1AQCAtMSw3ICsxLDggQEAKLSAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKLUBAIC0xMCw3ICsxMSw4IEBACi0gCi0gbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0zNyw3ICszOSw3IEBAIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCi0gIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSBdKQotIAotLSMgc2VyaWFsIDU2IExUX0lOSVQKLSsjIHNlcmlhbCA1NyBMVF9JTklUCi0gCi0gCi0gIyBMVF9QUkVSRVEoVkVSU0lPTikKLUBAIC05Miw3ICs5NCw4IEBAIF9MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gQUNfU1VCU1QoTElCVE9PTClkbmwKLSAKLSBfTFRfU0VUVVAKLUBAIC0xNjYsMTAgKzE2OSwxMyBAQCBfTFRfREVDTChbXSwgW2V4ZWV4dF0sIFswXSwgW0V4ZWN1dGFibGUgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICIiKV0pZG5sCi0gZG5sCi0gbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9SRUxPQURdKWRubAotIG00X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAotK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKLSAKLSBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCi0gIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgotQEAgLTE5OSw3ICsyMDUsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTYzMiw3ICs2MzgsNyBAQCBtNF9pZnNldChbQUNfUEFDS0FHRV9OQU1FXSwgW0FDX1BBQ0tBR0VfTkFNRSBdKWNvbmZpZy5sdFtdZG5sCi0gbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKLSBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KLSAKLS1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgotIAotQEAgLTc0NiwxNSArNzUyLDEyIEBAIF9MVF9FT0YKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0gCi0tICBfTFRfUFJPR19YU0lfU0hFTExGTlMKLSsgIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKLSAKLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIF0sCi1AQCAtOTgwLDYgKzk4Myw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTEwNjksMzAgKzEwNzQsNDEgQEAgbTRfZGVmdW4oW19MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTXSwKLSAgIGZpCi0gXSkKLSAKLS0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoW1RBR05BTUVdKQotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQotICMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAotICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAotICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgotICMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKLSAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgotKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgotKyMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KLSBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAotIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAotLUFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpXSxbXSkKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLStpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKLSsgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfV0nCi0rICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KLSsgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaV0sW10pCi0rICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCi0rICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsgIF0pCi0rICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKLStmaQotIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotIAotIAotQEAgLTExMTcsNyArMTEzMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCi0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQotIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAotIAotIAotKyMgX0xUX1dJVEhfU1lTUk9PVAotKyMgLS0tLS0tLS0tLS0tLS0tLQotK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKLStbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCi0rQUNfQVJHX1dJVEgoW2xpYnRvb2wtc3lzcm9vdF0sCi0rWyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCi0rW10sIFt3aXRoX2xpYnRvb2xfc3lzcm9vdD1ub10pCi0rCi0rZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQotK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9XSkKLSsgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQotKyAgIDs7Ci0rZXNhYwotKwotKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCi0rX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCi0rW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQotKwotICMgX0xUX0VOQUJMRV9MT0NLCi0gIyAtLS0tLS0tLS0tLS0tLS0KLSBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKLUBAIC0xMzIwLDE0ICsxMzY5LDQ3IEBAIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIF0pIyBfTFRfRU5BQkxFX0xPQ0sKLSAKLSAKLSsjIF9MVF9QUk9HX0FSCi0rIyAtLS0tLS0tLS0tLQotK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCi0rW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLStfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKLStfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQotKwotK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKLSsgIFtsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCi0rICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJwotKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rICAgICBdKQotKyAgXSkKLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLStfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKLSsgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQotK10pIyBfTFRfUFJPR19BUgotKwotKwotICMgX0xUX0NNRF9PTERfQVJDSElWRQotICMgLS0tLS0tLS0tLS0tLS0tLS0tLQotIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKLS1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCi0rW19MVF9QUk9HX0FSCi0gCi0gQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCi0gdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06Ci1AQCAtMTYyMyw3ICsxNzA1LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgotK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTE2NjcsMTAgKzE3NDksMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0yMjEwLDggKzIyOTIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMjI0NCwxMyArMjMyNyw3MSBAQCBtNF9pZihbJDFdLCBbXSxbCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTIzNDIsNyArMjQ4Myw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0yOTUwLDYgKzMwOTEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTMwMTYsNyArMzE2Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC0zMTY3LDYgKzMzMTQsMjEgQEAgdHBmKikKLSAgIDs7Ci0gZXNhYwotIF0pCi0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCi0gICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCi0gX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKLS0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKLSsgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAotKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAotKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKLSBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAotIAotIAotQEAgLTMyNzcsNiArMzQ0Myw2NyBAQCBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci0gZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCi0gZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCi0gCi0rIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5Ci0rIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCi0rIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcwotK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCi0rW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKLSttNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKLSttNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKLStBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCi0rbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCi0rW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotK10pCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCi0rICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKLStdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKLSsKLSsKLSsjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAotK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKLStbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKLSsgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0Kl0pCi0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCi0rXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKLSsKLSAKLSAjIExUX0xJQl9NCi0gIyAtLS0tLS0tLQotQEAgLTM0MDMsOCArMzYzMCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtMzQ0MCw2ICszNjY3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTM0NzMsNiArMzcwMSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC0zNDg0LDcgKzM3MjQsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCi0gCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAJZmkKLUBAIC0zNTUxLDYgKzM3OTEsMTMgQEAgZWxzZQotICAgQUNfTVNHX1JFU1VMVChvaykKLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAotICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCi1AQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAotIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAotICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKLSAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKLStfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAotKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQotIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUwotIAotIAotQEAgLTM1NzIsNyArMzgyMSw2IEBAIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQotIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLSBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Ci0gCi0tQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCi0gbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KLSAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi1AQCAtMzY3OCw2ICszOTI2LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCSAgOzsKLSAJZXNhYwotIAk7OwotKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCi0rCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSsJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSsJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAotKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQotKwk7OwotICAgICAgIGRndXgqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotIAkgIGVjKysqKQotQEAgLTM4MzAsNyArNDA4NCw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCTs7Ci0gICAgICAgc29sYXJpcyopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tCSAgQ0MqKQotKwkgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0gCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotQEAgLTQwNTMsNiArNDMwNywxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJwotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJwotKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtNDExNSw3ICs0Mzc1LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKLUBAIC00MTcyLDkgKzQ0MzIsMTEgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKLSAgICAgOzsKLSBlc2FjCi0tQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi0tX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0tCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKLSsKLStBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAotKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCi0rICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC00MTkzLDYgKzQ0NTUsOCBAQCBmaQotIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKLSAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCi0gCi0rX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0rCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC00MjEzLDYgKzQ0NzcsNyBAQCBfTFRfVEFHREVDTChbbGlua19zdGF0aWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY10sIFsxXSwKLSBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAotIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKLSBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLUBAIC00MjIxLDYgKzQ0ODYsNyBAQCBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCi0gbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIGFpeFtbNC05XV0qKQotICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLUBAIC00MjM1LDE1ICs0NTAxLDIwIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICAgIDs7Ci0gICBwdzMyKikKLSAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgotLSAgOzsKLSsgICAgOzsKLSAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0tICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgIGNsKikgOzsKLSsgICAgKikKLSsgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KLSsgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0gICAqKQotICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgOzsKLSAgIGVzYWMKLS0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQotIF0sIFsKLSAgIHJ1bnBhdGhfdmFyPQotICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQotQEAgLTQ0MTEsNyArNDY4Miw4IEBAIF9MVF9FT0YKLSAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0tICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTQ1MTAsMTIgKzQ3ODIsMTIgQEAgX0xUX0VPRgotIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLSAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0tCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtNDUyOSw4ICs0ODAxLDggQEAgX0xUX0VPRgotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtNDU0OCw4ICs0ODIwLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgIGZpCi1AQCAtNDU5NSw4ICs0ODY3LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgIGZpCi1AQCAtNDcyNiw3ICs0OTk4LDcgQEAgX0xUX0VPRgotIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotICAgICAgIGVsc2UKLUBAIC00NzM3LDcgKzUwMDksNyBAQCBfTFRfRU9GCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KLUBAIC00NzgxLDIwICs1MDUzLDYzIEBAIF9MVF9FT0YKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTQ4MjgsNyArNTE0Myw3IEBAIF9MVF9FT0YKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0gICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotQEAgLTQ4MzYsNyArNTE1MSw3IEBAIF9MVF9FT0YKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC00ODUyLDcgKzUxNjcsNyBAQCBfTFRfRU9GCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTQ4NzYsMTAgKzUxOTEsMTAgQEAgX0xUX0VPRgotIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC00OTI2LDE2ICs1MjQxLDMxIEBAIF9MVF9FT0YKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgQUNfTElOS19JRkVMU0UoaW50IGZvbyh2b2lkKSB7fSwKLS0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0gICAgICAgICkKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKLSsJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAotKwkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIEFDX0xJTktfSUZFTFNFKAotKwkgICAgIFtBQ19MQU5HX1NPVVJDRSgKLSsJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCi0rCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAotKwkJCSAgICAgIFtGb3J0cmFuIDc3XSwgW1sKLSsgICAgICBzdWJyb3V0aW5lIGZvbwotKyAgICAgIGVuZF1dLAotKwkJCSAgICAgIFtGb3J0cmFuXSwgW1sKLSsgICAgICBzdWJyb3V0aW5lIGZvbwotKyAgICAgIGVuZF1dKV0pXSwKLSsJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCi0rCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCi0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTUwMjAsNyArNTM1MCw3IEBAIF9MVF9FT0YKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTUwMzksOSArNTM2OSw5IEBAIF9MVF9FT0YKLSAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTUzMTMsOCArNTY0Myw2IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5oZXJpdF9ycGF0aF0sIFswXSwKLSAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQotIF9MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKLSAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCi0tX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAotLSAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKLSBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKLSAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCi0gX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLAotQEAgLTUzMjUsNiArNTY1Myw4IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5jbHVkZV9leHBzeW1zXSwgWzFdLAotICAgICBbU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkXSkKLSBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKLSAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKLStfTFRfVEFHREVDTChbXSwgW3Bvc3RsaW5rX2NtZHNdLCBbMl0sCi0rICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKLSBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAotICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKLSBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLUBAIC01NDI2LDYgKzU3NTYsNyBAQCBDQz0iJGx0X3NhdmVfQ0MiCi0gbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAotIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCi0gaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKLSAgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8Ci0gICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgotQEAgLTU0ODcsNiArNTgxOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0kQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIGx0X3NhdmVfTEQ9JExECi0gICBsdF9zYXZlX0dDQz0kR0NDCi0gICBHQ0M9JEdYWAotQEAgLTU1MDQsNiArNTgzNiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICBmaQotICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKLSAgIENDPSR7Q1hYLSJjKysifQotKyAgQ0ZMQUdTPSRDWFhGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi1AQCAtNTY2Nyw3ICs2MDAwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCi0gICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQotICAgICAgICAgICAjIGV4ZWN1dGFibGUuCi0tICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAotICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC01Njc5LDcgKzYwMTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICBlbHNlCi0gCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotQEAgLTU3MjEsMjkgKzYwNTQsNzUgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgIDs7Ci0gCi0gICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLS0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLS0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotLSAgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0tCi0tICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0tICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLS0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZWxzZQotLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBmaX4KLS0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0tICAgICAgICBmaQotLSAgICAgICAgOzsKLSsJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgotKwksY2wqIHwgbm8sY2wqKQotKwkgICMgTmF0aXZlIE1TVkMKLSsJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0rCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLSsJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwkgIGxpYmV4dD1saWIKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJICBzaHJleHRfY21kcz0iLmRsbCIKLSsJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZWxzZQotKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGZpfgotKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgICAgbGlua25hbWVzPScKLSsJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLSsJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJICAjIERvbid0IHVzZSByYW5saWIKLSsJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJwotKwkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICAgKikKLSsJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCQk7OwotKwkgICAgZXNhY34KLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+Ci0rCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICAgIGZpJwotKwkgIDs7Ci0rCSopCi0rCSAgIyBnKysKLSsJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSsJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLSsJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsKLSsJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0rCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0rCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGVsc2UKLSsJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICBlbHNlCi0rCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0rCSAgZmkKLSsJICA7OwotKwllc2FjCi0rCTs7Ci0gICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQotIAk7OwotQEAgLTU4MTgsNyArNjE5Nyw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgICAgKikKLSAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi1AQCAtNTg4OSwxMCArNjI2OCwxMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICBpYTY0KikKLS0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgKikKLS0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICBlc2FjCi0gCSAgICAgIGZpCi1AQCAtNTkzMyw5ICs2MzEyLDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgKikKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkgICAgICBlbHNlCi0tCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi1AQCAtNjAwNSwyMCArNjM4NCwyMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0tCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCi0rCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwotIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLS0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+Ci0rCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KLSAJCSRSQU5MSUIgJG9sZGxpYicKLSAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0gCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gCSAgICAgIDs7Ci0gCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwotIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLUBAIC02MjEzLDcgKzY1OTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICAgICopCi0tCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgZXNhYwotIAotQEAgLTYyNTksNyArNjYzOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCi0gICAgICAgc29sYXJpcyopCi0gICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgICAgICBDQyopCi0rICAgICAgICAgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKLSAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKLUBAIC02MzAwLDkgKzY2NzksOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJwotIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0rCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0gCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotIAotIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLSAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLUBAIC02NDMxLDYgKzY4MTAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCi0gCi0gICBDQz0kbHRfc2F2ZV9DQwotKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotICAgTERDWFg9JExECi0gICBMRD0kbHRfc2F2ZV9MRAotICAgR0NDPSRsdF9zYXZlX0dDQwotQEAgLTY0NDUsNiArNjgyNSwyOSBAQCBBQ19MQU5HX1BPUAotIF0pIyBfTFRfTEFOR19DWFhfQ09ORklHCi0gCi0gCi0rIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCi0rIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSsjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSsjCi0rIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCi0rIyBleGNlcHQgdGhpcyBvbmUgY2FuIGJlIHVzZWQgYnkgbTQgY29kZSB0aGF0IG1heSBiZSBleGVjdXRlZCBieSBjb25maWd1cmUsCi0rIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCi0rbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKLStBQ19SRVFVSVJFKFtfTFRfREVDTF9TRURdKQotK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKLStmdW5jX3N0cmlwbmFtZV9jbmYgKCkKLSt7Ci0rICBjYXNlICR7Mn0gaW4KLSsgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0rICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICBlc2FjCi0rfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgotK10pIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCi0rCi0gIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKLUBAIC02NDUzLDYgKzY4NTYsNyBAQCBBQ19MQU5HX1BPUAotICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgotIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKLSBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0rQUNfUkVRVUlSRShbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0pZG5sCi0gIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKLSBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9Ci0gX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KLUBAIC02NTAzLDYgKzY5MDcsMTMgQEAgcHVibGljIGNsYXNzIGZvbyB7Ci0gfTsKLSBfTFRfRU9GCi0gXSkKLSsKLStfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0rY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAotKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OwotKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKLStlc2FjCi0rCi0gZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQotIGRubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCi0gaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLUBAIC02NTE0LDcgKzY5MjUsNyBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwotIAotICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotLSAgICBjYXNlICRwIGluCi0rICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KLSAKLSAgICAgLUwqIHwgLVIqIHwgLWwqKQotICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgotQEAgLTY1MjMsMTMgKzY5MzQsMjIgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KLSAJIHByZXY9JHAKLSAJIGNvbnRpbnVlCi0tICAgICAgIGVsc2UKLS0JIHByZXY9Ci0gICAgICAgIGZpCi0gCi0rICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCi0rICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgotKyAgICAgICAgIGNhc2UgJHAgaW4KLSsgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICBlc2FjCi0rICAgICAgIGZpCi0rICAgICAgIGNhc2UgJHAgaW4KLSsgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgotLQkgY2FzZSAkcCBpbgotLQkgLUwqIHwgLVIqKQotKwkgY2FzZSAke3ByZXZ9IGluCi0rCSAtTCB8IC1SKQotIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKLSAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCi0gCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgotQEAgLTY1NDksOCArNjk2OSwxMCBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKLSAJIGZpCi0gICAgICAgIGZpCi0rICAgICAgIHByZXY9Ci0gICAgICAgIDs7Ci0gCi0rICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cwotICAgICAqLiRvYmpleHQpCi0gICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAotICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KLUBAIC02NTg2LDYgKzcwMDgsNyBAQCBlbHNlCi0gZmkKLSAKLSAkUk0gLWYgY29uZmVzdC4kb2JqZXh0Ci0rQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUwotIAotICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCi0gbTRfaWYoWyQxXSwgW0NYWF0sCi1AQCAtNjYyMiw3ICs3MDQ1LDcgQEAgbGludXgqKQotIAotIHNvbGFyaXMqKQotICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gIENDKikKLSsgIENDKiB8IHN1bkNDKikKLSAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCi0gICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi1AQCAtNjczNSw3ICs3MTU4LDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0iJENDIgotICAgbHRfc2F2ZV9HQ0M9JEdDQwotKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgQ0M9JHtGNzctImY3NyJ9Ci0rICBDRkxBR1M9JEZGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi1AQCAtNjc4OSw2ICs3MjE0LDcgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCi0gCi0gICBHQ0M9JGx0X3NhdmVfR0NDCi0gICBDQz0iJGx0X3NhdmVfQ0MiCi0rICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcwotIAotIEFDX0xBTkdfUE9QCi1AQCAtNjg2NSw3ICs3MjkxLDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KLSAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gICBsdF9zYXZlX0NDPSIkQ0MiCi0gICBsdF9zYXZlX0dDQz0kR0NDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBDQz0ke0ZDLSJmOTUifQotKyAgQ0ZMQUdTPSRGQ0ZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251Ci0gCi1AQCAtNjkyMSw3ICs3MzQ5LDggQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KLSAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgotIAotICAgR0NDPSRsdF9zYXZlX0dDQwotLSAgQ0M9IiRsdF9zYXZlX0NDIgotKyAgQ0M9JGx0X3NhdmVfQ0MKLSsgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCi0gCi0gQUNfTEFOR19QT1AKLUBAIC02OTU4LDEwICs3Mzg3LDEyIEBAIF9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLSAKLSAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotLWx0X3NhdmVfQ0M9IiRDQyIKLStsdF9zYXZlX0NDPSRDQwotK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSBsdF9zYXZlX0dDQz0kR0NDCi0gR0NDPXllcwotIENDPSR7R0NKLSJnY2oifQotK0NGTEFHUz0kR0NKRkxBR1MKLSBjb21waWxlcj0kQ0MKLSBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCi1AQCAtNjk5Miw3ICs3NDIzLDggQEAgZmkKLSBBQ19MQU5HX1JFU1RPUkUKLSAKLSBHQ0M9JGx0X3NhdmVfR0NDCi0tQ0M9IiRsdF9zYXZlX0NDIgotK0NDPSRsdF9zYXZlX0NDCi0rQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotIF0pIyBfTFRfTEFOR19HQ0pfQ09ORklHCi0gCi0gCi1AQCAtNzAyNyw5ICs3NDU5LDExIEBAIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLSAKLSAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotIGx0X3NhdmVfQ0M9IiRDQyIKLStsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gbHRfc2F2ZV9HQ0M9JEdDQwotIEdDQz0KLSBDQz0ke1JDLSJ3aW5kcmVzIn0KLStDRkxBR1M9Ci0gY29tcGlsZXI9JENDCi0gX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLUBAIC03MDQyLDcgKzc0NzYsOCBAQCBmaQotIAotIEdDQz0kbHRfc2F2ZV9HQ0MKLSBBQ19MQU5HX1JFU1RPUkUKLS1DQz0iJGx0X3NhdmVfQ0MiCi0rQ0M9JGx0X3NhdmVfQ0MKLStDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gXSkjIF9MVF9MQU5HX1JDX0NPTkZJRwotIAotIAotQEAgLTcxMDEsNiArNzUzNiwxNSBAQCBfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtBbiBvYmplY3Qgc3ltYm9sIGR1bXBlcl0pCi0gQUNfU1VCU1QoW09CSkRVTVBdKQotIF0pCi0gCi0rIyBfTFRfREVDTF9ETExUT09MCi0rIyAtLS0tLS0tLS0tLS0tLS0tCi0rIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCi0rbTRfZGVmdW4oW19MVF9ERUNMX0RMTFRPT0xdLAotK1tBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLStfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pCi0rQUNfU1VCU1QoW0RMTFRPT0xdKQotK10pCi0gCi0gIyBfTFRfREVDTF9TRUQKLSAjIC0tLS0tLS0tLS0tLQotQEAgLTcxOTQsOCArNzYzOCw4IEBAIG00X2RlZnVuKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdLAotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNzIzNCwyMDYgKzc2NzgsMTYyIEBAIF9MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAotIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKLSAKLSAKLS0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KLS1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKLS1bY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLSsjIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UgKEZVTkNOQU1FLCBSRVBMQUNFTUVOVC1CT0RZKQotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAotKyMgJ159IEZVTkNOQU1FICcsIGFuZCByZXBsYWNlIGl0cyBib2R5IHdpdGggUkVQTEFDRU1FTlQtQk9EWS4KLSttNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCi0rW2RubCB7Ci0rc2VkIC1lICcvXiQxICgpJC8sL159ICMgJDEgL2NcCi0rJDEgKClcCi0re1wKLSttNF9icGF0c3Vic3RzKFskMl0sIFskXSwgW1xcXSwgW15cKFsJIF1cKV0sIFtcXFwxXSkKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStdKQotIAotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotIAotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0rIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBSZXBsYWNlIGV4aXN0aW5nIHBvcnRhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHNoZWxsIGZ1bmN0aW9ucyB3aXRoCi0rIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KLSttNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCi0rW2lmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKLSsgICAgY2FzZSAkezF9IGluCi0rICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSsgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0rICAgIGVzYWNdKQotKwotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCi0rCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAotKyAgICBjYXNlICR7MX0gaW4KLSsgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSsgICAgZXNhYwotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKLSAKLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3N0cmlwbmFtZV0sIFtkbmwKLSsgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKLSAKLS1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQotLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCi0tZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn0KLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCi0gCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCi0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99Ci0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1dKQotIAotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJwotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAotKyAgICBjYXNlICR7MX0gaW4KLSsgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotKyAgICBlc2FjXSkKLSAKLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3hmb3JtXSwgWyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXSkKLSAKLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQotIAotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW1teLl1dKiQvLmxvLydgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sZW5dLCBbICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfV0pCi0rZmkKLSAKLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKLS19Ci0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQotIAotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAotKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgotK2RubCBtNCBleHBhbnNpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgdGhlbiB0aGUgc2hlbGwgZXZhbCB0dXJucyB0aGF0IGludG8gXAotKyAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCi0gCi0tX0xUX0VPRgotLWVzYWMKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0gCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKLStmaQotK10pCi0gCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiRbMV0rPVwkWzJdIgotLX0KLS1fTFRfRU9GCi0rIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKLSsjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKLSsjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KLSttNF9kZWZ1bihbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdLAotK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi0rQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKLStBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pCi0rQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCi0rW2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotICAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKLS19Ci0tCi0tX0xUX0VPRgotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotICAgICA7OwotLSAgZXNhYwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotK10pCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b19ob3N0X2ZpbGVfY21kXSkKLStfTFRfREVDTChbdG9faG9zdF9maWxlX2NtZF0sIFtsdF9jdl90b19ob3N0X2ZpbGVfY21kXSwKLSsgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCi0rCi0rQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0XSkKLStBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKLStbI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0gXSkKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdKQotK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAotKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAotK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggOTUwM2VjODVkNy4uNzBlODU2ZTA2NSAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtMSwxMCArMSw5IEBACi0tIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KLSAKLS0jIGxpYnRvb2wgKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKLSsjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKLSAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2Ci0gCi0gIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCi0tIyAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCi0gIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KLSAKLUBAIC0zOCw3ICszNyw2IEBACi0gIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwotICMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0gIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQotLSMgICAgICAgLS1uby1maW5pc2ggICAgICAgICAgbGV0IGluc3RhbGwgbW9kZSBhdm9pZCBmaW5pc2ggY29tbWFuZHMKLSAjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKLSAjICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKLSAjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50Ci1AQCAtNzEsMTcgKzY5LDE5IEBACi0gIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKLSAjICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKLSAjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKLS0jICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQotKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40Ci0gIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgotICMgICAgICAgICBhdXRvY29uZjoJJGF1dG9jb25mX3ZlcnNpb24KLSAjCi0gIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCi0rIyBHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidG9vbC8+LgotKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCi0gCi0gUFJPR1JBTT1saWJ0b29sCi0gUEFDS0FHRT1saWJ0b29sCi0tVkVSU0lPTj0yLjIuN2EKLS1USU1FU1RBTVA9IiAxLjMxMzQgMjAwOS0xMS0yOSIKLS1wYWNrYWdlX3JldmlzaW9uPTEuMzEzNAotK1ZFUlNJT049Mi40Ci0rVElNRVNUQU1QPSIiCi0rcGFja2FnZV9yZXZpc2lvbj0xLjMyOTMKLSAKLSAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCi0gaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi1AQCAtMTA2LDkgKzEwNiw2IEBAIF9MVEVDSE9fRU9GJwotIH0KLSAKLSAjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgotLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCi0tIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKLS0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCi0gbHRfdXNlcl9sb2NhbGU9Ci0gbHRfc2FmZV9sb2NhbGU9Ci0gZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCi1AQCAtMTIxLDE1ICsxMTgsMTMgQEAgZG8KLSAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCi0gCWZpIgotIGRvbmUKLStMQ19BTEw9QwotK0xBTkdVQUdFPUMKLStleHBvcnQgTEFOR1VBR0UgTENfQUxMCi0gCi0gJGx0X3Vuc2V0IENEUEFUSAotIAotIAotLQotLQotLQotLQotLQotICMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAotICMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0gIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKLUBAIC0xNDAsNyArMTM1LDcgQEAgcHJvZ3BhdGg9IiQwIgotIAotIAotIDogJHtDUD0iY3AgLWYifQotLTogJHtFQ0hPPSRhc19lY2hvfQotK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQotIDogJHtFR1JFUD0iL2Jpbi9ncmVwIC1FIn0KLSA6ICR7RkdSRVA9Ii9iaW4vZ3JlcCAtRiJ9Ci0gOiAke0dSRVA9Ii9iaW4vZ3JlcCJ9Ci1AQCAtMTQ5LDcgKzE0NCw3IEBAIHByb2dwYXRoPSIkMCIKLSA6ICR7TUtESVI9Im1rZGlyIn0KLSA6ICR7TVY9Im12IC1mIn0KLSA6ICR7Uk09InJtIC1mIn0KLS06ICR7U0VEPSIvbW91bnQvZW5kb3Ivd2lsZGVuaHUvbG9jYWwteDg2XzY0L2Jpbi9zZWQifQotKzogJHtTRUQ9Ii9iaW4vc2VkIn0KLSA6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KLSA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KLSAKLUBAIC0xNjksNiArMTY0LDI3IEBAIElGUz0iIAkkbHRfbmwiCi0gZGlybmFtZT0icywvW14vXSokLCwiCi0gYmFzZW5hbWU9InMsXi4qLywsIgotIAotKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSsjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLStmdW5jX2Rpcm5hbWUgKCkKLSt7Ci0rICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLSsgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotKyAgICBlbHNlCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotKyAgICBmaQotK30gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLStmdW5jX2Jhc2VuYW1lICgpCi0rewotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLSt9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0gIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotICMgY2FsbDoKLUBAIC0xODMsMTcgKzE5OSwzMSBAQCBiYXNlbmFtZT0icyxeLiovLCwiCi0gIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0gZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotIHsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCi0tfQotKyAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCi0rICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSsgICAgZmkKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCi0rfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSsjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0rIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0rIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLStmdW5jX3N0cmlwbmFtZSAoKQotK3sKLSsgICAgY2FzZSAkezJ9IGluCi0rICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSsgICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICAgIGVzYWMKLSt9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0gCi0tIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCi0gCi0gIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgotIHBhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJwotQEAgLTM3Niw2ICs0MDYsMTUgQEAgc2VkX3F1b3RlX3N1YnN0PSdzL1woW2AiJFxcXVwpL1xcXDEvZycKLSAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KLSBkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCi0gCi0rIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKLSsjIHN0cmluZyBsaXRlcmFsbHkuCi0rc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCi0rCi0rIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgY29udmVydHMgYSB3MzIgZmlsZSBuYW1lIG9yIHBhdGgKLSsjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucwotKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgotK2x0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLSsKLSAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQotICMgYFwnLWVkIGluIGlucHV0IHRvIHRoZSBzYW1lLiAgSWYgYW4gb2RkIG51bWJlciBvZiBgXCcgcHJlY2VkZWQgYSAnJCcKLSAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KLUBAIC00MDQsNyArNDQzLDcgQEAgb3B0X3dhcm5pbmc9OgotICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgotIGZ1bmNfZWNobyAoKQotIHsKLS0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCi0rICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCi0gfQotIAotICMgZnVuY192ZXJib3NlIGFyZy4uLgotQEAgLTQzMCwxNCArNDY5LDE0IEBAIGZ1bmNfZWNob19hbGwgKCkKLSAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCi0gZnVuY19lcnJvciAoKQotIHsKLS0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCi0rICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCi0gfQotIAotICMgZnVuY193YXJuaW5nIGFyZy4uLgotICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgotIGZ1bmNfd2FybmluZyAoKQotIHsKLS0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgotKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKLSAKLSAgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKLSAgICAgOgotQEAgLTY1NiwxOSArNjk1LDM1IEBAIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAoKQotICAgICBmaQotIH0KLSAKLS0KLS0KLSsjIGZ1bmNfdHJfc2gKLSsjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgotKyMgUmVzdWx0IGlzIHN0b3JlZCBpbiAkZnVuY190cl9zaF9yZXN1bHQuICBBbGwgY2hhcmFjdGVycwotKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCi0rIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KLStmdW5jX3RyX3NoICgpCi0rewotKyAgY2FzZSAkMSBpbgotKyAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQotKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKLSsgICAgOzsKLSsgICogKQotKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQotKyAgICA7OwotKyAgZXNhYwotK30KLSAKLSAKLSAjIGZ1bmNfdmVyc2lvbgotICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgotIGZ1bmNfdmVyc2lvbiAoKQotIHsKLSsgICAgJG9wdF9kZWJ1ZwotKwotICAgICAkU0VEIC1uICcvKEMpLyFiIGdvCi0gCTptb3JlCi0gCS9cLi8hewotIAkgIE4KLS0JICBzL1xuIyAvLwotKwkgIHMvXG4jIC8gLwotIAkgIGIgbW9yZQotIAl9Ci0gCTpnbwotQEAgLTY4NSw3ICs3NDAsOSBAQCBmdW5jX3ZlcnNpb24gKCkKLSAjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KLSBmdW5jX3VzYWdlICgpCi0gewotLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICotaC8gewotKyAgICAkb3B0X2RlYnVnCi0rCi0rICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7Ci0gICAgICAgICBzL14jIC8vCi0gCXMvXiMgKiQvLwotIAlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCi1AQCAtNzAxLDcgKzc1OCwxMCBAQCBmdW5jX3VzYWdlICgpCi0gIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgotIGZ1bmNfaGVscCAoKQotIHsKLSsgICAgJG9wdF9kZWJ1ZwotKwotICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8gewotKwk6cHJpbnQKLSAgICAgICAgIHMvXiMgLy8KLSAJcy9eIyAqJC8vCi0gCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKLUBAIC03MTQsNyArNzc0LDExIEBAIGZ1bmNfaGVscCAoKQotIAlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KLSAJcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKGF1dG9jb25mIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCi0gCXAKLS0gICAgIH0nIDwgIiRwcm9ncGF0aCIKLSsJZAotKyAgICAgfQotKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAotKyAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50Ci0rICAgICAnIDwgIiRwcm9ncGF0aCIKLSAgICAgcmV0PSQ/Ci0gICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgotICAgICAgIGV4aXQgJHJldAotQEAgLTcyNiwxMiArNzkwLDM5IEBAIGZ1bmNfaGVscCAoKQotICMgZXhpdF9jbWQuCi0gZnVuY19taXNzaW5nX2FyZyAoKQotIHsKLS0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCi0rICAgICRvcHRfZGVidWcKLSsKLSsgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgotICAgICBleGl0X2NtZD1leGl0Ci0gfQotIAotLWV4aXRfY21kPToKLSAKLSsjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0Ci0rIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCi0rIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCi0rewotKyAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJwotKyAgICBteV9zZWRfc2hvcnRfcmVzdD0nMXMvXi4uXCguKlwpJC9cMS87cScKLSsKLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKLSt9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKLSsjIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCi0rIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKLSt7Ci0rICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJwotKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJwotKwotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLSt9ICMgZnVuY19zcGxpdF9sb25nX29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLStleGl0X2NtZD06Ci0gCi0gCi0gCi1AQCAtNzQxLDI2ICs4MzIsNjQgQEAgbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgotIG1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgotIAotICMgR2xvYmFsIHZhcmlhYmxlcy4KLS0jICRtb2RlIGlzIHVuc2V0Ci0gbm9ub3B0PQotLWV4ZWN1dGVfZGxmaWxlcz0KLSBwcmVzZXJ2ZV9hcmdzPQotIGxvMm89InMvXFwubG9cJC8uJHtvYmpleHR9LyIKLSBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCi0gZXh0cmFjdGVkX2FyY2hpdmVzPQotIGV4dHJhY3RlZF9zZXJpYWw9MAotIAotLW9wdF9kcnlfcnVuPWZhbHNlCi0tb3B0X2ZpbmlzaD06Ci0tb3B0X2R1cGxpY2F0ZV9kZXBzPWZhbHNlCi0tb3B0X3NpbGVudD1mYWxzZQotLW9wdF9kZWJ1Zz06Ci0tCi0gIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0Ci0gIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCi0gIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgotIGV4ZWNfY21kPQotIAotKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0rIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0rZnVuY19hcHBlbmQgKCkKLSt7Ci0rICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCi0rfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQotKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCi0rIyBieSBhIHNwYWNlLgotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQotK3sKLSsgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKLSsgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotK30gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotK2Z1bmNfYXJpdGggKCkKLSt7Ci0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKLSt9ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfbGVuIHN0cmluZwotKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLStmdW5jX2xlbiAoKQotK3sKLSsgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0rfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19sbzJvIG9iamVjdAotK2Z1bmNfbG8ybyAoKQotK3sKLSsgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotK30gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLStmdW5jX3hmb3JtICgpCi0rewotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLSt9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KLSAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5Ci0gIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KLUBAIC04NTAsMTMwICs5NzksMjA0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQotICAgZXNhYwotIH0KLSAKLS0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgotLSMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCi0rIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLSsjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCi0rIyByZWxlYXNlIG9mIGxpYnRvb2wuCi0rZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCi0gewotKyAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCi0rICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0rICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0rICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLSskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KLSskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0rJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotK19MVF9FT0YKLSsgICAgICBlbHNlCi0rICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLSskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCi0rJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLStfTFRfRU9GCi0rICAgICAgZmkKLSsgICAgZWxzZQotKyAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0rJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCi0rJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgotKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KLSskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0rX0xUX0VPRgotKyAgICBmaQotIAotLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci0tICBjYXNlICQxIGluCi0tICBjbGVhbnxjbGVhfGNsZXxjbCkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBsaW5rfGxpbnxsaXxsKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZXNhYwotKyAgICBleGl0ICRFWElUX01JU01BVENICi0rICBmaQotK30KLSsKLSsKLSsjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLStjYXNlICQxIGluCi0rY2xlYW58Y2xlYXxjbGV8Y2wpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2NvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2luc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rbGlua3xsaW58bGl8bCkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLSt1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2VzYWMKLSAKLS0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgotLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbwotKwotKwotKyMgT3B0aW9uIGRlZmF1bHRzOgotK29wdF9kZWJ1Zz06Ci0rb3B0X2RyeV9ydW49ZmFsc2UKLStvcHRfY29uZmlnPWZhbHNlCi0rb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCi0rb3B0X2ZlYXR1cmVzPWZhbHNlCi0rb3B0X2ZpbmlzaD1mYWxzZQotK29wdF9oZWxwPWZhbHNlCi0rb3B0X2hlbHBfYWxsPWZhbHNlCi0rb3B0X3NpbGVudD06Ci0rb3B0X3ZlcmJvc2U9OgotK29wdF9zaWxlbnQ9ZmFsc2UKLStvcHRfdmVyYm9zZT1mYWxzZQotKwotKwotKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQotKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgotK3sKLSsgICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKLSsgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCi0gICAgIG9wdD0iJDEiCi0gICAgIHNoaWZ0Ci0tCi0gICAgIGNhc2UgJG9wdCBpbgotLSAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7Ci0tCi0tICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0rICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCi0gCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgotLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JwotIAkJCSRvcHRfZGVidWcKLSAJCQk7OwotLQotLSAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCi0tCQkJc2hpZnQKLSsgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCi0rCQkJb3B0X2RyeV9ydW49OgotIAkJCTs7Ci0tCi0tICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7Ci0tICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKLS0gICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7Ci0tICAgICAgLS1uby1maW5pc2gpCW9wdF9maW5pc2g9ZmFsc2UJCQkJOzsKLS0KLS0gICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQljYXNlICQxIGluCi0tCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotLQkJCSAgY2xlYW4pCTs7Ci0tCQkJICBjb21waWxlKQk7OwotLQkJCSAgZXhlY3V0ZSkJOzsKLS0JCQkgIGZpbmlzaCkJOzsKLS0JCQkgIGluc3RhbGwpCTs7Ci0tCQkJICBsaW5rKQkJOzsKLS0JCQkgIHJlbGluaykJOzsKLS0JCQkgIHVuaW5zdGFsbCkJOzsKLS0KLS0JCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgotLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLS0JCQkgICAgIGV4aXRfY21kPWV4aXQKLS0JCQkgICAgIGJyZWFrCi0tCQkJICAgICA7OwotLQkJICAgICAgICBlc2FjCi0tCi0tCQkJbW9kZT0iJDEiCi0rICAgICAgLS1jb25maWcpCi0rCQkJb3B0X2NvbmZpZz06Ci0rZnVuY19jb25maWcKLSsJCQk7OwotKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCi0rCQkJb3B0YXJnPSIkMSIKLSsJCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KLSt9JG9wdGFyZyIKLSAJCQlzaGlmdAotIAkJCTs7Ci0tCi0gICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKLS0JCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OwotLQotLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0tCQkJb3B0X3NpbGVudD06Ci0tCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKLSsJCQlvcHRfcHJlc2VydmVfZHVwX2RlcHM9OgotIAkJCTs7Ci0tCi0tICAgICAgLS1uby1xdWlldHwtLW5vLXNpbGVudCkKLS0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKLSsgICAgICAtLWZlYXR1cmVzKQotKwkJCW9wdF9mZWF0dXJlcz06Ci0rZnVuY19mZWF0dXJlcwotIAkJCTs7Ci0tCi0tICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLSsgICAgICAtLWZpbmlzaCkKLSsJCQlvcHRfZmluaXNoPToKLStzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0rCQkJOzsKLSsgICAgICAtLWhlbHApCi0rCQkJb3B0X2hlbHA9OgotKwkJCTs7Ci0rICAgICAgLS1oZWxwLWFsbCkKLSsJCQlvcHRfaGVscF9hbGw9OgotK29wdF9oZWxwPSc6IGhlbHAtYWxsJwotKwkJCTs7Ci0rICAgICAgLS1tb2RlKQotKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhawotKwkJCW9wdGFyZz0iJDEiCi0rCQkJb3B0X21vZGU9IiRvcHRhcmciCi0rY2FzZSAkb3B0YXJnIGluCi0rICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotKyAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKLSsKLSsgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgotKyAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLSsgICAgIGV4aXRfY21kPWV4aXQKLSsgICAgIGJyZWFrCi0rICAgICA7OwotK2VzYWMKLSsJCQlzaGlmdAotKwkJCTs7Ci0rICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKLSAJCQlvcHRfc2lsZW50PWZhbHNlCi0tCQkJb3B0X3ZlcmJvc2U9OgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotIAkJCTs7Ci0tCi0tICAgICAgLS1uby12ZXJib3NlKQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotKyAgICAgIC0tbm8tdmVyYm9zZSkKLSAJCQlvcHRfdmVyYm9zZT1mYWxzZQotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotIAkJCTs7Ci0tCi0tICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgotLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQotKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCi0rCQkJb3B0X3NpbGVudD06Ci0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0rICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQotKwkJCTs7Ci0rICAgICAgLS12ZXJib3NlfC12KQotKwkJCW9wdF92ZXJib3NlPToKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLStvcHRfc2lsZW50PWZhbHNlCi0rCQkJOzsKLSsgICAgICAtLXRhZykKLSsJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKLSsJCQlvcHRhcmc9IiQxIgotKwkJCW9wdF90YWc9IiRvcHRhcmciCi0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKLStmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCi0gCQkJc2hpZnQKLSAJCQk7OwotIAotKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKLSsgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKLSsgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OwotKwotICAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6Ci0tICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCi0tCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCi0tCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9Ci0rICAgICAgLS0qPSopCi0rCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKLSsJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQotIAkJCXNoaWZ0Ci0gCQkJOzsKLSAKLS0gICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OwotLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7Ci0tICAgICAgLS1oZWxwLWFsbCkJb3B0X2hlbHA9JzogaGVscC1hbGwnCQkJCTs7Ci0tICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7Ci0tCi0tICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKLS0KLS0gICAgICAqKQkJbm9ub3B0PSIkb3B0IgotLQkJCWJyZWFrCi0rICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKLSsgICAgICAtXD8qfC1oKnwtbip8LXYqKQotKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgotKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9Ci0rCQkJc2hpZnQKLSAJCQk7OwotKwotKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7Ci0rICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKLSsgICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKLSAgICAgZXNhYwotICAgZG9uZQotIAotKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgotKwotKyAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKLSsgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotKyAgICBub25vcHQ9IiRvcHQiCi0rICAgIHNoaWZ0Ci0rICBmaQotKwotKyAgIyBwcmVzZXJ2ZSAtLWRlYnVnCi0rICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCi0gCi0gICBjYXNlICRob3N0IGluCi0gICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyogfCAqc29sYXJpczIqICkKLUBAIC05ODEsODIgKzExODQsNDQgQEAgZnVuY19lbmFibGVfdGFnICgpCi0gICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06Ci0gICAgICAgOzsKLSAgICAgKikKLS0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKLSsgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKLSAgICAgICA7OwotICAgZXNhYwotIAotLSAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCi0tICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KLS0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi0tfQotKyAgJG9wdF9oZWxwIHx8IHsKLSsgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgotKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLSAKLS0jIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotLSMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKLS0jIHJlbGVhc2Ugb2YgbGlidG9vbC4KLS1mdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKLS17Ci0tICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KLS0gICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLS0gICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLS0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0tJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgotLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLS0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0tX0xUX0VPRgotLSAgICAgIGVsc2UKLS0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0tJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KLS0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0tJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotLV9MVF9FT0YKLS0gICAgICBmaQotLSAgICBlbHNlCi0tICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLS0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKLS0kcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCi0tJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgotLSRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLS1fTFRfRU9GCi0rICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLSAgICAgZmkKLSAKLS0gICAgZXhpdCAkRVhJVF9NSVNNQVRDSAotLSAgZmkKLS19Ci0tCi0rICAgICMgRGFyd2luIHN1Y2tzCi0rICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCi0gCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0jIyAgICBNYWluLiAgICAjIwotLSMjIC0tLS0tLS0tLS0tICMjCi0tCi0tJG9wdF9oZWxwIHx8IHsKLS0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLS0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotLQotLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCi0tICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLS0gIGZpCi0rICAgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0rICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLSsgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0rICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCi0rICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0rICAgIGZpCi0gCi0tICB0ZXN0IC16ICIkbW9kZSIgJiYgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFLiIKLSsgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgotKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLSsgIH0KLSAKLSAKLS0gICMgRGFyd2luIHN1Y2tzCi0tICBldmFsICJzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0rICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCi0rICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQotK30KLSAKLSAKLS0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0tICBpZiB0ZXN0IC1uICIkZXhlY3V0ZV9kbGZpbGVzIiAmJiB0ZXN0ICIkbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgotLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0tICAgICRFQ0hPICIkaGVscCIgMT4mMgotLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLS0gIGZpCi0gCi0tICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0tICBnZW5lcmljX2hlbHA9IiRoZWxwIgotLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLS19Ci0gCi0rIyMgLS0tLS0tLS0tLS0gIyMKLSsjIyAgICBNYWluLiAgICAjIwotKyMjIC0tLS0tLS0tLS0tICMjCi0gCi0gIyBmdW5jX2xhbGliX3AgZmlsZQotICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KLUBAIC0xMTIxLDEyICsxMjg2LDkgQEAgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICgpCi0gIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KLSBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCi0gewotLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgotLSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgotLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCi0tCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCi0tICAgIGZpCi0rICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKLSsgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0rICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKLSB9Ci0gCi0gIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKLUBAIC0xMTQ5LDcgKzEzMTEsNyBAQCBmdW5jX2V4ZWN1dGVfY21kcyAoKQotICAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCi0gICAgIGZvciBjbWQgaW4gJDE7IGRvCi0gICAgICAgSUZTPSRzYXZlX2lmcwotLSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKLSsgICAgICBldmFsIGNtZD1cIiRjbWRcIgotICAgICAgIGZ1bmNfc2hvd19ldmFsICIkY21kIiAiJHsyLTp9IgotICAgICBkb25lCi0gICAgIElGUz0kc2F2ZV9pZnMKLUBAIC0xMTcyLDYgKzEzMzQsMzcgQEAgZnVuY19zb3VyY2UgKCkKLSB9Ci0gCi0gCi0rIyBmdW5jX3Jlc29sdmVfc3lzcm9vdCBQQVRICi0rIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KLSsjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotK2Z1bmNfcmVzb2x2ZV9zeXNyb290ICgpCi0rewotKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCi0rICBjYXNlICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgaW4KLSsgID0qKQotKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0rICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0rCi0rIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICi0rIyBJZiBQQVRIIGJlZ2lucyB3aXRoIHRoZSBzeXNyb290LCByZXBsYWNlIGl0IHdpdGggPSBhbmQKLSsjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCi0rZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKLSt7Ci0rICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KLSsgID8qOiIkbHRfc3lzcm9vdCIqKQotKyAgICBmdW5jX3N0cmlwbmFtZSAiJGx0X3N5c3Jvb3QiICcnICIkMSIKLSsgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsgICAgOzsKLSsgICopCi0rICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCi0rICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQotKyAgICA7OwotKyAgZXNhYwotK30KLSsKLSAjIGZ1bmNfaW5mZXJfdGFnIGFyZwotICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAotICMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCi1AQCAtMTE4NCw4ICsxMzc3LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKLSAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KLSAgICAgICBDQ19xdW90ZWQ9Ci0gICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0tICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgotICAgICAgIGRvbmUKLSAgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCi0gICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCi1AQCAtMTIwNCw4ICsxMzk2LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKLSAJICAgIENDX3F1b3RlZD0KLSAJICAgIGZvciBhcmcgaW4gJENDOyBkbwotIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCi0tCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCi0gCSAgICBkb25lCi0gCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCi0gCSAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKLUBAIC0xMjc0LDYgKzE0NjUsNDg2IEBAIEVPRgotICAgICB9Ci0gfQotIAotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKwotKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKLSsjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LAotKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQotKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KLSsjIGluICRidWlsZCdzICRQQVRILgotKyMKLSsjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0LCBhbmQgd2lsbAotKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQotK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQotKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQotKyAgICAjIGNvbW1hbmQgaXMgbm90IGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKLSsgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKLSsgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXA9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0rICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KLSsgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAotKyAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotKyAgICBlbHNlCi0rICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9Ci0rICAgIGZpCi0rICBmaQotK30KLSsjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiBBUkcKLSsjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCi0rIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5Ci0rIyBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtIGluICRidWlsZCdzCi0rIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KLSsjCi0rIyBBUkcgaXMgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHdpbjMyLgotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCi0rIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKLSsjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KLStmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcwotKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBvbGRJRlM9JElGUwotKyAgICBJRlM9OgotKyAgICBmb3IgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIGluICQxOyBkbwotKyAgICAgIElGUz0kb2xkSUZTCi0rICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKLSsgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiIDsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgotKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZG9uZQotKyAgICBJRlM9JG9sZElGUwotKyAgZmkKLSt9Ci0rIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKLSsKLSsKLSsjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCi0rIyBXcmFwcGVyIGFyb3VuZCBjYWxsaW5nIHRoZSBjeWdwYXRoIHByb2dyYW0gdmlhIExUX0NZR1BBVEguIFRoaXMgaXMgdXNlZCB3aGVuCi0rIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKLSsjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgotKyMgKDIpLCByZXR1cm5zIHRoZSBDeWd3aW4gZmlsZSBuYW1lIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQKLSsjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKLSsjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCi0rIyBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0IGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4KLSsjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KLSsjCi0rIyBBUkdTIGFyZSBwYXNzZWQgdG8gY3lncGF0aCwgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgdGhlIGZpbGUgbmFtZSBvciBwYXRoIHRvCi0rIyBiZSBjb252ZXJ0ZWQuCi0rIwotKyMgU3BlY2lmeSB0aGUgYWJzb2x1dGUgKm5peCAob3IgdzMyKSBuYW1lIHRvIGN5Z3BhdGggaW4gdGhlIExUX0NZR1BBVEgKLSsjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgotK2Z1bmNfY3lncGF0aCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KLSsgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKLSsgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCi0rICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5Ci0rICAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KLSsgICAgZmkKLSsgIGVsc2UKLSsgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KLSsgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgotKyAgZmkKLSt9Ci0rI2VuZDogZnVuY19jeWdwYXRoCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgotKyMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAotKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAotKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0rfQotKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKLSsjIFZlcmlmeSB0aGF0IEFSRzEgKGEgZmlsZSBuYW1lIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKLSsjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KLStmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0rICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKLSsgICAgZnVuY19lcnJvciAiICBcYCQxJyIKLSsgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0rICAgICMgRmFsbGJhY2s6Ci0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjawotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKLSsjIFZlcmlmeSB0aGF0IEZST01fUEFUSCAoYSBwYXRoIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKLSsjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCi0rZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC16ICIkNCIgJiYgdGVzdCAtbiAiJDMiOyB0aGVuCi0rICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgotKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSsgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCi0rICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KLSsgICAgaWYgdGVzdCAieCQxIiAhPSAieCQyIjsgdGhlbgotKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgotKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKLSsgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAotKyAgICBlbHNlCi0rICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKLSsgICAgZmkKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgRlJPTlRQQVQgQkFDS1BBVCBSRVBMIE9SSUcKLSsjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCi0rIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCi0rZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgY2FzZSAkNCBpbgotKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgOzsKLSsgIGVzYWMKLSsgIGNhc2UgJDQgaW4KLSsgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfZmlsZV9jbWQgQVJHJwotKyMKLSsjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCi0rIyBSZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLSsKLSsKLSsjIGZ1bmNfdG9faG9zdF9maWxlIEFSRwotKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAotKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfdG9faG9zdF9maWxlICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgotK30KLSsjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQotKwotKwotKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKLSsjIGNvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB0b29sY2hhaW4gZm9ybWF0LiBSZXR1cm4KLSsjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCi0rIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KLStmdW5jX3RvX3Rvb2xfZmlsZSAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGNhc2UgLCQyLCBpbgotKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdAotKyAgICAgIDs7Ci0rICBlc2FjCi0rfQotKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRwotKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX25vb3AgKCkKLSt7Ci0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYwotKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKLSsgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudAotKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgotKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQKLSsjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKLSsjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIGludm9rZWQgdmlhIGAkdG9faG9zdF9wYXRoX2NtZCBBUkcnCi0rIwotKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KLSsjIFRoZSByZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLSsjCi0rIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgotKyMgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0Ci0rIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCi0rIwotKyMgQWxsIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKLSsjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKLSsjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKLSsjIHdoZXJlLCBmb3IgYW55IGdpdmVuICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbiB0aGUgJ1hfdG9fWScgdmFsdWUgaXMgdGhlCi0rIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKLSsjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCi0rIyB3aWxsIGJyZWFrLgotKwotKwotKyMgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKLSsjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQotKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KLSt0b19ob3N0X3BhdGhfY21kPQotK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCi0rICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKLSsgICAgdG9faG9zdF9wYXRoX2NtZD0iZnVuY19jb252ZXJ0X3BhdGhfJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9IgotKyAgZmkKLSt9Ci0rCi0rCi0rIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKLSsjIENvbnZlcnRzIHRoZSBwYXRoIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0Ci0rIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rZnVuY190b19ob3N0X3BhdGggKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAotKyAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgotK30KLSsjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKLSsjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCi0rewotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCi0rIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUwotKyAgICAjIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlOyBjeWdwYXRoIHR1cm5zIHRoZW0gaW50byAnLjsnIGFuZCAnOy4nOwotKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKLSsjIGEgd29ya2luZyB3aW5lcGF0aC4gIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgotKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkIGluIGEKLSsjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KLSsgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQotKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCi0rCi0rCi0gIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KLSBmdW5jX21vZGVfY29tcGlsZSAoKQotIHsKLUBAIC0xMzE0LDEyICsxOTg1LDEyIEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gCSAgOzsKLSAKLSAJLXBpZSB8IC1mcGllIHwgLWZQSUUpCi0tICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKLSsgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAKLSAJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKLS0JICBsYXRlcj0iJGxhdGVyICRhcmciCi0rCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAKLUBAIC0xMzQwLDE1ICsyMDExLDE0IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCi0gCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KLSAJICAgIElGUz0iJHNhdmVfaWZzIgotLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBsYXN0YXJnICIkYXJnIgotIAkgIGRvbmUKLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgotIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAotIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgotLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKLSsJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCi1AQCAtMTM2NCw4ICsyMDM0LDcgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKLSAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCi0gCi0gICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KLS0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKLS0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBiYXNlX2NvbXBpbGUgIiRsYXN0YXJnIgotICAgICBkb25lICMgZm9yIGFyZwotIAotICAgICBjYXNlICRhcmdfbW9kZSBpbgotQEAgLTE0OTYsMTcgKzIxNjUsMTYgQEAgY29tcGlsZXIuIgotIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0gCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgIGZpCi0tICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCi0rICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRvdXRwdXRfb2JqIgotICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgotICAgICBmaQotIAotICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0tICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKLSsgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRsb2NrZmlsZSIKLSAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKLSAKLS0gICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCi0tICAgICAgZXZhbCAic3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIiCi0tICAgIGZpCi0rICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkc3JjZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgc3JjZmlsZT0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0gICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgotICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKLSAKLUBAIC0xNTI2LDcgKzIxOTQsNyBAQCBjb21waWxlci4iCi0gCi0gICAgICAgaWYgdGVzdCAteiAiJG91dHB1dF9vYmoiOyB0aGVuCi0gCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgotLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKLSsJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRsb2JqIgotICAgICAgIGZpCi0gCi0gICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXAotQEAgLTE1NzMsMTEgKzIyNDEsMTEgQEAgY29tcGlsZXIuIgotIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCi0gICAgICAgZmkKLSAgICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgotLQljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgotKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKLSAgICAgICBmaQotIAotICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgotLSAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKLSsgICAgICBmdW5jX2FwcGVuZCBjb21tYW5kICIkc3VwcHJlc3Nfb3V0cHV0IgotICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKLSAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCi0gCi1AQCAtMTYyMiwxMyArMjI5MCwxMyBAQCBjb21waWxlci4iCi0gfQotIAotICRvcHRfaGVscCB8fCB7Ci0tICB0ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQotKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9Ci0gfQotIAotIGZ1bmNfbW9kZV9oZWxwICgpCi0gewotICAgICAjIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KLS0gICAgY2FzZSAkbW9kZSBpbgotKyAgICBjYXNlICRvcHRfbW9kZSBpbgotICAgICAgICIiKQotICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCi0gICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCi1AQCAtMTY1OSw4ICsyMzI3LDggQEAgVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6Ci0gCi0gICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKLSAgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcwotLSAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkaW5nIFBJQyBvYmplY3RzIG9ubHkKLS0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQotKyAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKLSsgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQotICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKLSAgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwotICAgLVdjLEZMQUcgICAgICAgICAgcGFzcyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgotQEAgLTE4MDQsNyArMjQ3Miw3IEBAIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHVzaW5nIFJNLiIKLSAgICAgICAgIDs7Ci0gCi0gICAgICAgKikKLS0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKLSsgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCi0gICAgICAgICA7OwotICAgICBlc2FjCi0gCi1AQCAtMTgxOSwxMyArMjQ4NywxMyBAQCBpZiAkb3B0X2hlbHA7IHRoZW4KLSAgIGVsc2UKLSAgICAgewotICAgICAgIGZ1bmNfaGVscCBub2V4aXQKLS0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0rICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSAJZnVuY19tb2RlX2hlbHAKLSAgICAgICBkb25lCi0gICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCi0gICAgIHsKLSAgICAgICBmdW5jX2hlbHAgbm9leGl0Ci0tICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0gCWVjaG8KLSAJZnVuY19tb2RlX2hlbHAKLSAgICAgICBkb25lCi1AQCAtMTg1NCwxMyArMjUyMiwxNiBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCi0gCi0gICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCi0tICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCi0rICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbwotICAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCi0gCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKLSAKLSAgICAgICBkaXI9Ci0gICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgICoubGEpCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKLSsJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rCi0gCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCi0gCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCi0gCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLUBAIC0xODgyLDcgKzI1NTMsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIAotIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KLS0JICBkaXI9IiRkaXIvJG9iamRpciIKLSsJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgotIAllbHNlCi0gCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgotQEAgLTE5MDcsMTAgKzI1NzgsMTAgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAgICAgICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCi0gCi0gICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KLS0gICAgICBpZiBldmFsIHRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCI7IHRoZW4KLS0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcgotKyAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCi0rCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXJcIiIKLSAgICAgICBlbHNlCi0tCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXI6XCQkc2hsaWJwYXRoX3ZhcgotKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJcIiIKLSAgICAgICBmaQotICAgICBkb25lCi0gCi1AQCAtMTkzOSw4ICsyNjEwLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAJOzsKLSAgICAgICBlc2FjCi0gICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLS0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKLS0gICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgotICAgICBkb25lCi0gCi0gICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCi1AQCAtMTk3MiwyMiArMjY0Miw1OSBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotICAgICBmaQotIH0KLSAKLS10ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQotK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQotIAotIAotICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KLSBmdW5jX21vZGVfZmluaXNoICgpCi0gewotICAgICAkb3B0X2RlYnVnCi0tICAgIGxpYmRpcnM9IiRub25vcHQiCi0rICAgIGxpYnM9Ci0rICAgIGxpYmRpcnM9Ci0gICAgIGFkbWluY21kcz0KLSAKLS0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLS0gICAgICBmb3IgZGlyCi0tICAgICAgZG8KLS0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLS0gICAgICBkb25lCi0rICAgIGZvciBvcHQgaW4gIiRub25vcHQiICR7MSsiJEAifQotKyAgICBkbwotKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCi0rCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgotIAotKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KLSsJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KLSsJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKLSsJZWxzZQotKwkgIGZ1bmNfd2FybmluZyAiXGAkb3B0JyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0rCWZpCi0rCi0rICAgICAgZWxzZQotKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCi0rICAgICAgZmkKLSsgICAgZG9uZQotKwotKyAgICBpZiB0ZXN0IC1uICIkbGlicyI7IHRoZW4KLSsgICAgICBpZiB0ZXN0IC1uICIkbHRfc3lzcm9vdCI7IHRoZW4KLSsgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCi0rICAgICAgICBzeXNyb290X2NtZD0icy9cKFsgJ11cKSRzeXNyb290X3JlZ2V4L1wxL2c7IgotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c3Jvb3RfY21kPQotKyAgICAgIGZpCi0rCi0rICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCi0rICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCi0rICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbwotKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKLSsgICAgICAgIGRvbmUKLSsgICAgICBlbHNlCi0rICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAotKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KLSsJICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCi0rCSAgICA+ICR0bXBkaXIvdG1wLWxhCi0rCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgotKwlkb25lCi0rICAgICAgICAke1JNfXIgIiR0bXBkaXIiCi0rICAgICAgZmkKLSsgICAgZmkKLSsKLSsgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCi0gCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KLUBAIC0xOTk3LDcgKzI3MDQsNyBAQCBmdW5jX21vZGVfZmluaXNoICgpCi0gCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KLSAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCi0gCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKLS0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcwotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKLSAgICAgICAgJGNtZHMiCi0gCWZpCi0gICAgICAgZG9uZQotQEAgLTIwMDYsNTMgKzI3MTMsNTUgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQotICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KLSAgICAgJG9wdF9zaWxlbnQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCi0gCi0tICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0tICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLS0gICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLS0gICAgICAkRUNITyAiICAgJGxpYmRpciIKLS0gICAgZG9uZQotLSAgICBlY2hvCi0tICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotLSAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLS0gICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLS0gICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotLSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLS0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotLSAgICAgIGxpYmRpcj1MSUJESVIKLS0gICAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSsgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSsgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotKwkkRUNITyAiICAgJGxpYmRpciIKLSsgICAgICBkb25lCi0rICAgICAgZWNobwotKyAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCi0rICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotKwllY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0rCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0rCWxpYmRpcj1MSUJESVIKLSsJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotIAotLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0tICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotLSAgICAgIGVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotLSAgICBmaQotLSAgICBlY2hvCi0rCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotKwkkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotKwllY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLSsgICAgICBmaQotKyAgICAgIGVjaG8KLSAKLS0gICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0tICAgIGNhc2UgJGhvc3QgaW4KLS0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLS0JZWNobyAicGFnZXMuIgotLQk7OwotLSAgICAgICopCi0tICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSsgICAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLSsgICAgICBjYXNlICRob3N0IGluCi0rCXNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCi0rCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLSsJICBlY2hvICJwYWdlcy4iCi0rCSAgOzsKLSsJKikKLSsJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKLSsJICA7OwotKyAgICAgIGVzYWMKLSsgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotKyAgICBmaQotICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSB9Ci0gCi0tdGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9Ci0rdGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQotIAotIAotICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCi1AQCAtMjA3Nyw3ICsyNzg2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgotICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCi0gICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9JGluc3RhbGxfcHJvZwotICAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0gICAgICAgKltcXFwgL11jcFwgKikgaW5zdGFsbF9jcD06IDs7Ci1AQCAtMjA5Nyw3ICsyODA2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgZG8KLSAgICAgICBhcmcyPQotICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgotLQlmaWxlcz0iJGZpbGVzICRkZXN0IgotKwlmdW5jX2FwcGVuZCBmaWxlcyAiICRkZXN0IgotIAlkZXN0PSRhcmcKLSAJY29udGludWUKLSAgICAgICBmaQotQEAgLTIxMzUsMTEgKzI4NDQsMTEgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAKLSAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgotICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgaWYgdGVzdCAtbiAiJGFyZzIiOyB0aGVuCi0gCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgotICAgICAgIGZpCi0tICAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgIGRvbmUKLSAKLSAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXAotQEAgLTIxNTEsNyArMjg2MCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCi0gICAgICAgaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQotIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIgotLQlpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCWZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgZmkKLSAgICAgZmkKLSAKLUBAIC0yMjA5LDEwICsyOTE4LDEzIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgICouJGxpYmV4dCkKLSAJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KLS0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCi0rCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKLSAJOzsKLSAKLSAgICAgICAqLmxhKQotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCi0rCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotKwotIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAotIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotQEAgLTIyMjYsMjMgKzI5MzgsMzAgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAJaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KLSAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAllbHNlCi0gCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgotIAkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZnV0dXJlX2xpYmRpcnMgIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZmkKLSAKLSAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCi0gCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tCWRpcj0iJGRpciRvYmpkaXIiCi0rCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKLSAKLSAJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotKyAgICAgICMgU3RyaXAgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIGRlc3RpbmF0aW9uLgotKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGxpYmRpciIKLSsgICAgICBkZXN0bGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsKLSsgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRkZXN0ZGlyIgotKyAgICAgIHNfZGVzdGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCi0gCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KLS0JICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICIkZGVzdGRpciIgfCAkU0VEIC1lICJzJSRsaWJkaXJcJCUlImAKLSsJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJHNfZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkZGVzdGxpYmRpclwkJSUiYAotIAotIAkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKLSAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0Ci1AQCAtMjMxNSw3ICszMDM0LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKLSAKLSAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgotLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSAJOzsKLSAKLSAgICAgICAqLmxvKQotQEAgLTI1MDMsNyArMzIyMiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyIgJiYgXAotICAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIKLSAKLS0gICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyIgJiYgJG9wdF9maW5pc2g7IHRoZW4KLSsgICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KLSAgICAgICAjIE1heWJlIGp1c3QgZG8gYSBkcnkgcnVuLgotICAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCi0gICAgICAgZXhlY19jbWQ9JyRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1maW5pc2gkY3VycmVudF9saWJkaXJzJwotQEAgLTI1MTIsNyArMzIzMSw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIGZpCi0gfQotIAotLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Ci0rdGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Ci0gCi0gCi0gIyBmdW5jX2dlbmVyYXRlX2Rsc3ltcyBvdXRwdXRuYW1lIG9yaWdpbmF0b3IgcGljX3AKLUBAIC0yNTU5LDYgKzMyNzgsMTggQEAgZXh0ZXJuIFwiQ1wiIHsKLSAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKLSAjZW5kaWYKLSAKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAotICIKLSAKLUBAIC0yNTcwLDIxICszMzAxLDIyIEBAIGV4dGVybiBcIkNcIiB7Ci0gCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgotIAkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKLSAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KLS0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgotLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKLSsJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0gCSAgZG9uZQotIAotIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgICAkRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVAotLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCi0rCSAgICAgIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJwotKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwotIAkgICAgfQotIAkgIGZpCi0gCi0gCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICAgJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUCi0tCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKLSsJICAgICAgZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUJwotKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwotIAkgICAgfQotIAkgIGZpCi0gCi1AQCAtMjU5MywyMyArMzMyNSwyMyBAQCBleHRlcm4gXCJDXCIgewotIAkgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0gCSAgICAgICRSTSAkZXhwb3J0X3N5bWJvbHMKLS0JICAgICAgJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiCi0rCSAgICAgIGV2YWwgIiR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJwotIAkgICAgICBjYXNlICRob3N0IGluCi0gCSAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotLSAgICAgICAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotLSAgICAgICAgICAgICAgICBjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLSsgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSsgICAgICAgICAgICAgICAgZXZhbCAnY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotIAkgICAgICAgIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIH0KLSAJICBlbHNlCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgICAke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLycgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCi0tCSAgICAgICRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQKLS0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgotKwkgICAgICBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKLSsJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLSsJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKLSAJICAgICAgY2FzZSAkaG9zdCBpbgotIAkgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotLQkgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLS0JICAgICAgICAgIGNhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotKwkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSsJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSAJICAgICAgICAgIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIH0KLUBAIC0yNjIwLDEwICszMzUyLDUyIEBAIGV4dGVybiBcIkNcIiB7Ci0gCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgotIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCi0gCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAkRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiCi0tCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0tCSAgfQotKyAgICAgICAgICBjYXNlICRob3N0IGluCi0rCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLSsJICAgICAgIyBpZiBhbiBpbXBvcnQgbGlicmFyeSwgd2UgbmVlZCB0byBvYnRhaW4gZGxuYW1lCi0rCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgotKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCi0rCSAgICAgICAgZXZhbCAiY3Vycl9sYWZpbGU9XCRsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdCIKLSsJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgotKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCi0rCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcwotKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAotKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgotKwkgICAgICAgICAgICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlX2RsbmFtZSIKLSsJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSsJICAgICAgICAgIGVsc2UKLSsJICAgICAgICAgICAgIyBubyBsYWZpbGUuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgLWRscHJlb3BlbiA8aW1wb3J0IGxpYnJhcnk+LgotKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCi0rCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAotKwkgICAgICAgICAgZmkKLSsJICAgICAgICBmaQotKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0rCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgotKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJwotKwkgICAgICAgICAgZWxzZQotKwkgICAgICAgICAgICBmdW5jX3dhcm5pbmcgIkNvdWxkIG5vdCBjb21wdXRlIERMTCBuYW1lIGZyb20gJG5hbWUiCi0rCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgICBmaQotKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKLSsJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKLSsJICAgICAgICB9Ci0rCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgotKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0rCSAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotKwkgICAgICAgIH0KLSsJICAgICAgZmkKLSsJICAgIDs7Ci0rCSAgICAqKQotKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgewotKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSsJICAgICAgfQotKwkgICAgOzsKLSsgICAgICAgICAgZXNhYwotIAlkb25lCi0gCi0gCSRvcHRfZHJ5X3J1biB8fCB7Ci1AQCAtMjY2MSwyNiArMzQzNSw5IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICphZGRyZXNzOwotIH0gbHRfZGxzeW1saXN0OwotLSIKLS0JICBjYXNlICRob3N0IGluCi0tCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0tCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKLS0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgotLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKLS0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotLQkgICpvc2Y1KikKLS0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0tLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKLS0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotLQkgICopCi0tCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OwotLQkgIGVzYWMKLS0KLS0JICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLWV4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0Ci0rZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAotIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKLS0kbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0Ci0rTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0Ci0gbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KLSB7XAotICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCi1AQCAtMjczNiw3ICszNDkzLDcgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCi0gCSAgY2FzZSAkYXJnIGluCi0gCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7Ci0tCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBzeW10YWJfY2ZsYWdzICIgJGFyZyIgOzsKLSAJICBlc2FjCi0gCWRvbmUKLSAKLUBAIC0yNzk2LDkgKzM1NTMsMTEgQEAgZnVuY193aW4zMl9saWJpZCAoKQotICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCi0gICAgIDs7Ci0gICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCi0tICAgIGlmICRPQkpEVU1QIC1mICIkMSIgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKLS0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCi0tICAgICAgd2luMzJfbm1yZXM9YCROTSAtZiBwb3NpeCAtQSAiJDEiIHwKLSsgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCi0rICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKLSsgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIHwKLSAJJFNFRCAtbiAtZSAnCi0gCSAgICAxLDEwMHsKLSAJCS8gSSAvewotQEAgLTI4MjcsNiArMzU4NiwxMzEgQEAgZnVuY193aW4zMl9saWJpZCAoKQotICAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgotIH0KLSAKLSsjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiBBUkcKLSsjCi0rIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQotKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCi0rIyBpbXBvcnQgbGlicmFyeSBBUkcuCi0rIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKLStmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlIFNFQ1RJT05fTkFNRSBMSUJOQU1FcwotKyMKLSsjIFRoZSBpcyB0aGUgY29yZSBvZiBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGEKLSsjIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlCi0rIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KLSsjCi0rIyBTRUNUSU9OX05BTUUgaXMgZWl0aGVyIC5pZGF0YSQ2IG9yIC5pZGF0YSQ3LCBkZXBlbmRpbmcKLSsjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCi0rIwotKyMgRWNob3MgdGhlIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlCi0rIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCi0rZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAotKyAgJE9CSkRVTVAgLXMgLS1zZWN0aW9uICIkMSIgIiQyIiAyPi9kZXYvbnVsbCB8Ci0rICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKLSsgICAgICAjIFBsYWNlIG1hcmtlciBhdCBiZWdpbm5pbmcgb2YgYXJjaGl2ZSBtZW1iZXIgZGxsbmFtZSBzZWN0aW9uCi0rICAgICAgcy8uKi89PT09TUFSSz09PT0vCi0rICAgICAgcAotKyAgICAgIGQKLSsgICAgfQotKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0Ci0rICAgICMgYXJlIGFsd2F5cyB1bmludGVyZXN0aW5nCi0rICAgIC86WwkgXSpmaWxlIGZvcm1hdCBwZVtpXVx7LDFcfS0vZAotKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKLSsgICAgIyBFbnN1cmUgbWFya2VyIGlzIHByaW50ZWQKLSsgICAgL149PT09TUFSSz09PT0vcAotKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycwotKyAgICAvXi5cezQzXH0vIWQKLSsgICAgIyBGcm9tIHJlbWFpbmluZyBsaW5lcywgcmVtb3ZlIGZpcnN0IDQzIGNoYXJhY3RlcnMKLSsgICAgcy9eLlx7NDNcfS8vJyB8Ci0rICAgICRTRUQgLW4gJwotKyAgICAgICMgSm9pbiBtYXJrZXIgYW5kIGFsbCBsaW5lcyB1bnRpbCBuZXh0IG1hcmtlciBpbnRvIGEgc2luZ2xlIGxpbmUKLSsgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCi0rICAgICAgSAotKyAgICAgICQgYiBwYXJhCi0rICAgICAgYgotKyAgICAgIDpwYXJhCi0rICAgICAgeAotKyAgICAgIHMvXG4vL2cKLSsgICAgICAjIFJlbW92ZSB0aGUgbWFya2VyCi0rICAgICAgcy9ePT09PU1BUks9PT09Ly8KLSsgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCi0rICAgICAgcy9bXC4gXHRdKiQvLwotKyAgICAgICMgUHJpbnQKLSsgICAgICAvLi9wJyB8Ci0rICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAotKyAgICAjIGNvbnRlbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIGFsbCBtZW1iZXJzIG9mIHRoZQotKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCi0rICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKLSsgICAgIyBhICcuJyAodGhhdCBpcywgb2JqZHVtcCdzIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVucHJpbnRhYmxlCi0rICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCi0rICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5Ci0rICAgICMgYmVnaW5zIHdpdGggYSBsaXRlcmFsICcuJyBvciBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKLSsgICAgIyBhICcuJy4KLSsgICAgIwotKyAgICAjIE9mIHRob3NlIHRoYXQgcmVtYWluLCBwcmludCB0aGUgZmlyc3Qgb25lLgotKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJwotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCi0rIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCi0rIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKLSsjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCi0rZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAotKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCi0rIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCi0rIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKLSsjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCi0rZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCi0rICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRwotKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKLSsjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAotKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgotKyMKLSsjIFRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgZm9yIHVzZSB3aGVuICRETExUT09MCi0rIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCi0rIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKLStmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCi0rICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKLSsgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKLSsgIGVsaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgOyB0aGVuCi0rICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5Ci0rICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDYnICIkMSJgCi0rICBlbHNlCi0rICAgICMgdW5rbm93bgotKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0iIgotKyAgZmkKLSt9Ci0gCi0gCi0gIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCi1AQCAtMjkxNyw3ICszODAxLDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCi0gCSAgICBkYXJ3aW5fZmlsZT0KLSAJICAgIGRhcndpbl9maWxlcz0KLSAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbwotLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKLSsJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAotIAkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcwotIAkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKLSAJICAgICRSTSAtcmYgdW5mYXQtJCQKLUBAIC0yOTMyLDcgKzM4MTYsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKLSAgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgotIAk7OwotICAgICAgIGVzYWMKLS0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAotKyAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAotICAgICBkb25lCi0gCi0gICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgotQEAgLTMwMTQsNyArMzg5OCwxMTAgQEAgZnVuY19mYWxsYmFja19lY2hvICgpCi0gX0xURUNIT19FT0YnCi0gfQotICAgICBFQ0hPPVwiJHFFQ0hPXCIKLS0gIGZpXAotKyAgZmkKLSsKLSsjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bwotKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgotKyMgL3NjcmlwdC8gYW5kIHRoZSB3cmFwcGVyIC9leGVjdXRhYmxlLyB3aGljaCBpcyB1c2VkIG9ubHkgb24KLSsjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgotKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKLSsjIHRoaXMgcGF0dGVybikuCi0rIwotKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAotKyMgLS1sdC1kdW1wLXNjcmlwdC4gVGhlcmUgaXMsIGRlbGliZXJhdGVseSwgbm8gLS1sdC1oZWxwLgotKyMKLSsjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQotKyMgc2NyaXB0J3MgJDAgdmFsdWUsIGZvbGxvd2VkIGJ5ICIkQCIuCi0rbHRfb3B0aW9uX2RlYnVnPQotK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQotK3sKLSsgIGx0X3NjcmlwdF9hcmcwPVwkMAotKyAgc2hpZnQKLSsgIGZvciBsdF9vcHQKLSsgIGRvCi0rICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCi0rICAgIC0tbHQtZGVidWcpIGx0X29wdGlvbl9kZWJ1Zz0xIDs7Ci0rICAgIC0tbHQtZHVtcC1zY3JpcHQpCi0rICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKLSsgICAgICAgIHRlc3QgXCJYXCRsdF9kdW1wX0RcIiA9IFwiWFwkbHRfc2NyaXB0X2FyZzBcIiAmJiBsdF9kdW1wX0Q9LgotKyAgICAgICAgbHRfZHVtcF9GPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlXi4qLyUlJ1xgCi0rICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCi0rICAgICAgICBleGl0IDAKLSsgICAgICA7OwotKyAgICAtLWx0LSopCi0rICAgICAgICBcJEVDSE8gXCJVbnJlY29nbml6ZWQgLS1sdC0gb3B0aW9uOiAnXCRsdF9vcHQnXCIgMT4mMgotKyAgICAgICAgZXhpdCAxCi0rICAgICAgOzsKLSsgICAgZXNhYwotKyAgZG9uZQotKwotKyAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgotKyAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSsgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCi0rICBmaQotK30KLSsKLSsjIFVzZWQgd2hlbiAtLWx0LWRlYnVnLiBQcmludHMgaXRzIGFyZ3VtZW50cyB0byBzdGRvdXQKLSsjIChyZWRpcmVjdGlvbiBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikKLStmdW5jX2x0X2R1bXBfYXJncyAoKQotK3sKLSsgIGx0X2R1bXBfYXJnc19OPTE7Ci0rICBmb3IgbHRfYXJnCi0rICBkbwotKyAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCi0rICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCi0rICBkb25lCi0rfQotKwotKyMgQ29yZSBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KLStmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlICgpCi0rewotKyIKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotKyAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLSsgICAgJEVDSE8gIlwKLSsgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKLSsgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgotKyAgICAgIGZpCi0rICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0rIgotKyAgICA7OwotKwotKyAgKikKLSsgICAgJEVDSE8gIlwKLSsgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKLSsgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgotKyAgICAgIGZpCi0rICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0rIgotKyAgICA7OwotKyAgZXNhYwotKyAgJEVDSE8gIlwKLSsgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0rICAgICAgZXhpdCAxCi0rfQotKwotKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgotKyMgU3RyaXBzIG9wdGlvbnMgaW4gdGhlIC0tbHQtKiBuYW1lc3BhY2UgZnJvbSBcJEAgYW5kCi0rIyBsYXVuY2hlcyB0YXJnZXQgYXBwbGljYXRpb24gd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KLStmdW5jX2V4ZWNfcHJvZ3JhbSAoKQotK3sKLSsgIGZvciBsdF93cl9hcmcKLSsgIGRvCi0rICAgIGNhc2UgXCRsdF93cl9hcmcgaW4KLSsgICAgLS1sdC0qKSA7OwotKyAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OwotKyAgICBlc2FjCi0rICAgIHNoaWZ0Ci0rICBkb25lCi0rICBmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlIFwkezErXCJcJEBcIn0KLSt9Ci0rCi0rICAjIFBhcnNlIG9wdGlvbnMKLSsgIGZ1bmNfcGFyc2VfbHRfb3B0aW9ucyBcIlwkMFwiIFwkezErXCJcJEBcIn0KLSAKLSAgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCi0gICB0aGlzZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKiQlJSdcYAotQEAgLTMwNzgsNyArNDA2NSw3IEBAIF9MVEVDSE9fRU9GJwotIAotICAgICAjIHJlbGluayBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeQotICAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCi0tICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcIlwkcmVsaW5rX2NvbW1hbmRcIiAyPiYxXGA7IHRoZW4gOgotKyAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCRyZWxpbmtfY29tbWFuZCAyPiYxXGA7IHRoZW4gOgotICAgICAgIGVsc2UKLSAJJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgotIAkkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKLUBAIC0zMTAyLDYgKzQwODksMTggQEAgX0xURUNIT19FT0YnCi0gCi0gICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgotIAotKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgotKwkjCi0rCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZwotKwkjIHRvIHNobGlicGF0aCwgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoIGFyZSBQQVRIIGFuZCB1bmluc3RhbGxlZAotKwkjIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuCi0rCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotKwkgICRFQ0hPICJcCi0rICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0rICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0rIgotKwlmaQotKwotIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KLSAJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgotIAkgICRFQ0hPICJcCi1AQCAtMzExNiwzNSArNDExNSwxMCBAQCBfTFRFQ0hPX0VPRicKLSAiCi0gCWZpCi0gCi0tCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCi0tCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotLQkgICRFQ0hPICJcCi0tICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0tICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0tIgotLQlmaQotLQotIAkkRUNITyAiXAotICAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KLS0iCi0tCWNhc2UgJGhvc3QgaW4KLS0JIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCi0tCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0tCSAgJEVDSE8gIlwKLS0gICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLS0iCi0tCSAgOzsKLS0KLS0JKikKLS0JICAkRUNITyAiXAotLSAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotLSIKLS0JICA7OwotLQllc2FjCi0tCSRFQ0hPICJcCi0tICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgotLSAgICAgIGV4aXQgMQotKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KLSAgICAgZmkKLSAgIGVsc2UKLSAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgotQEAgLTMxNTgsMTY2ICs0MTMyLDYgQEAgZmlcCi0gfQotIAotIAotLSMgZnVuY190b19ob3N0X3BhdGggYXJnCi0tIwotLSMgQ29udmVydCBwYXRocyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLS0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKLS0jIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQotLSMgYnVpbGQgZW52aXJvbm1lbnRzOgotLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0tIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLS0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0tIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KLS0jIEluIHRoZSBuYXRpdmUgbWluZ3cgY2FzZSwgdGhlIChtc3lzKSBzaGVsbCBhdXRvbWF0aWNhbGx5Ci0tIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKLS0jIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCi0tIyBTaW1pbGFyIGFjY29tbW9kYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yICRob3N0IG1pbmd3IGFuZAotLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCi0tIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCi0tIwotLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0tIyBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotLWZ1bmNfdG9faG9zdF9wYXRoICgpCi0tewotLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLS0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKm1pbmd3KiApCi0tICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0tICAgICAgICBjYXNlICRidWlsZCBpbgotLSAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cwotLSAgICAgICAgICAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKLS0gICAgICAgICAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqY3lnd2luKiApCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC13ICIkMSIgfAotLQkgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKiApCi0tICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybwotLSAgICAgICAgICAgICMgZXJyb3IgY29kZSwgc28gd2UgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2YKLS0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAotLSAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAotLSAgICAgICAgICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aAotLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucwotLSAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246Ci0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKLS0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8Ci0tICAgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9Ci0tICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotLSAgICAgICAgICAjIEZhbGxiYWNrOgotLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotLSAgICAgICAgZmkKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS0gIGZpCi0tfQotLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAotLQotLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZwotLSMKLS0jIENvbnZlcnQgcGF0aGxpc3RzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQotLSMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCi0tIyBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBoZXJlKToKLS0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0tIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLS0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotLSMKLS0jIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvCi0tIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKLS0jIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKLS0jIG9uIG91dHB1dC4KLS0jCi0tIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLS0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gb24gJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0tIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KLS1mdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKLS17Ci0tICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKLS0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKm1pbmd3KiApCi0tICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0tICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KLS0gICAgICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KLS0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0tCWZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0tICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tICAgICAgICBjYXNlICRidWlsZCBpbgotLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KLS0gICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gCi0tCSAgICAgICggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiICkgMj4vZGV2L251bGwgfAotLQkgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKmN5Z3dpbiogKQotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfAotLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICogKQotLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cwotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTPSRJRlMKLS0gICAgICAgICAgICBJRlM9OgotLSAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbwotLSAgICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0tICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgotLSAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgotLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLS0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotLSAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotLSAgICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIGRvbmUKLS0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOyB0aGVuCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgotLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLS0gICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCi0tICAgICAgICAgICMgc3BlY2lmaWNhdGlvbnMuIFRoZSBmaXggaXMgbm90IHRvIGNvbXBsaWNhdGUgdGhlIGV4cHJlc3Npb24KLS0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgotLSAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndwotLSAgICAgICAgICAjIGNhc2Ugd29ya3MgcHJvcGVybHkuCi0tICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgotLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCi0tICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zImAKLS0gICAgICAgIGZpCi0tICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjawotLSAgICAgICAgY2FzZSAiJDEiIGluCi0tICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICBjYXNlICIkMSIgaW4KLS0gICAgICAgICAgKjogKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7IgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tICBmaQotLX0KLS0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0Ci0tCi0gIyBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCi0gIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0Ci0gIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKLUBAIC0zMzM0LDEwICs0MTQ4LDYgQEAgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYyAoKQotIAotICAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCi0tCi0tICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIiRTSEVMTCAkb3V0cHV0IiwKLS0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0tICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgotICovCi0gRU9GCi0gCSAgICBjYXQgPDwiRU9GIgotQEAgLTM0NjIsMjIgKzQyNzIsMTMgQEAgaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7Ci0gICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAotIH0gd2hpbGUgKDApCi0gCi0tI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgotLSNpZiBkZWZpbmVkIExUX0RFQlVHV1JBUFBFUgotLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncwotLXN0YXRpYyB2b2lkCi0tbHR3cmFwcGVyX2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmbXQsIC4uLikKLS17Ci0tICAgIHZhX2xpc3QgYXJnczsKLS0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0tICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOwotLSAgICB2YV9lbmQgKGFyZ3MpOwotLX0KLSsjaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCi0rc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7Ci0gI2Vsc2UKLS0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykKLStzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKLSAjZW5kaWYKLSAKLS1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOwotK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJsaWJ0b29sLXdyYXBwZXIiOyAvKiBpbiBjYXNlIHhzdHJkdXAgZmFpbHMgKi8KLSAKLSB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKLSBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOwotQEAgLTM0ODcsNyArNDI4OCwxMCBAQCBjaGFyICpjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpOwotIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwotIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKLSBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKLS12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwotK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0rdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKm5vbm51bGwgKGNvbnN0IGNoYXIgKnMpOwotK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7Ci0gdm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLSBjaGFyICpsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpOwotIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7Ci1AQCAtMzQ5NywxNCArNDMwMSwxNCBAQCB2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFICpmKTsKLSBFT0YKLSAKLSAJICAgIGNhdCA8PEVPRgotLWNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Ci0rdm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKLSBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7Ci0gRU9GCi0gCi0gCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiR0ZW1wX3JwYXRoIgotKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgotIAkgICAgICBjYXQgPDxFT0YKLS1jb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Ci0rY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7Ci0gRU9GCi0gCSAgICBlbHNlCi0gCSAgICAgIGNhdCA8PCJFT0YiCi1AQCAtMzUxMywxMCArNDMxNywxMCBAQCBFT0YKLSAJICAgIGZpCi0gCi0gCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgotKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKLSAJICAgICAgY2F0IDw8RU9GCi0gY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7Ci0tY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOwotK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwotIEVPRgotIAkgICAgZWxzZQotIAkgICAgICBjYXQgPDwiRU9GIgotQEAgLTM1MzksMTIgKzQzNDMsMTAgQEAgRU9GCi0gCSAgICBjYXQgPDwiRU9GIgotIAotICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCi0tI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggIDUKLSAKLS1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKmx0d3JhcHBlcl9vcHRpb25fcHJlZml4ID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVg7Ci0tCi0gc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKLStzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfb3B0ICAgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZGVidWciOwotIAotIGludAotIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi1AQCAtMzU2MSwxMCArNDM2MywxMyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgaW50IGk7Ci0gCi0gICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOwotKyAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOwotIAotLSAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQgKi8KLSsgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0Ci0rICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKLSsgICAqIGFyZ3pbMF0sIHdoaWNoIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkKLSsgICAqLwotKyAgbmV3YXJnYz0wOwotICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICAgewotICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQotQEAgLTM1ODEsMjEgKzQzODYsNTQgQEAgRU9GCi0gCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7Ci0gCSAgcmV0dXJuIDA7Ci0gCX0KLSsgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCi0rCXsKLSsgICAgICAgICAgbHRfZGVidWcgPSAxOwotKyAgICAgICAgICBjb250aW51ZTsKLSsJfQotKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSA9PSAwKQotKyAgICAgICAgewotKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0rICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKLSsgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KLSsgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotKyAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAotKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLSsgICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCi0rICAgICAgICAgICAqLwotKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICJ1bnJlY29nbml6ZWQgJXMgb3B0aW9uOiAnJXMnIiwKLSsgICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKLSsgICAgICAgIH0KLSsgICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0rICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7Ci0gICAgIH0KLSsgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0rCi0rRU9GCi0rCSAgICBjYXQgPDxFT0YKLSsgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCi0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7Ci0rRU9GCi0rCSAgICBjYXQgPDwiRU9GIgotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIHByb2dyYW1fbmFtZTogJXNcbiIsIHByb2dyYW1fbmFtZSk7Ci0gCi0tICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7Ci0gICB0bXBfcGF0aHNwZWMgPSBmaW5kX2V4ZWN1dGFibGUgKGFyZ3ZbMF0pOwotICAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQotLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLS0JCQkgIHRtcF9wYXRoc3BlYykpOwotKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKLSsJCSAgdG1wX3BhdGhzcGVjKTsKLSAKLSAgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLS0JCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCi0rCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKLSAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwotIAotLSAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7Ci0rICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKLSAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKLSAKLSAgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCi1AQCAtMzYxMyw4ICs0NDUxLDkgQEAgRU9GCi0gICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKLSAgIHRtcF9wYXRoc3BlYyA9IDA7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAotLQkJCSAgdGFyZ2V0X25hbWUpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCi0rCQkgIHRhcmdldF9uYW1lKTsKLSBFT0YKLSAKLSAJICAgIGNhdCA8PEVPRgotQEAgLTM2NjQsMzUgKzQ1MDMsMTkgQEAgRU9GCi0gCi0gICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KLSAgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KLS0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwotKyAgLyogVXBkYXRlIHRoZSBETEwgc2VhcmNocGF0aC4gIEVYRV9QQVRIX1ZBTFVFICgkZGxsc2VhcmNocGF0aCkgbXVzdAotKyAgICAgYmUgcHJlcGVuZGVkIGJlZm9yZSAodGhhdCBpcywgYXBwZWFyIGFmdGVyKSBMSUJfUEFUSF9WQUxVRSAoJHRlbXBfcnBhdGgpCi0rICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKLSsgICAgIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuICovCi0gICBsdF91cGRhdGVfZXhlX3BhdGggKEVYRV9QQVRIX1ZBUk5BTUUsIEVYRV9QQVRIX1ZBTFVFKTsKLSsgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwotIAotLSAgbmV3YXJnYz0wOwotLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLS0gICAgewotLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCi0tICAgICAgICB7Ci0tICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLS0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotLSAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgotLSAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCi0tICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0tICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCi0tICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgotLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLS0gICAgICAgICAgICovCi0tICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAotLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotLSAgICAgICAgfQotLSAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KLS0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLS0gICAgfQotLSAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKLS0KLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAgICAgKCgiKG1haW4pIGx0X2FyZ3ZfemVybyA6ICVzXG4iLCAobHRfYXJndl96ZXJvID8gbHRfYXJndl96ZXJvIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGx0X2FyZ3ZfemVybzogJXNcbiIsCi0rCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOwotICAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKLSAgICAgewotLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKLSsgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIG5ld2FyZ3pbJWRdOiAlc1xuIiwKLSsJCSAgICAgIGksIG5vbm51bGwgKG5ld2FyZ3pbaV0pKTsKLSAgICAgfQotIAotIEVPRgotQEAgLTM3MDYsNyArNDUyOSw5IEBAIEVPRgotICAgaWYgKHJ2YWwgPT0gLTEpCi0gICAgIHsKLSAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLwotLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7Ci0rICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAgICIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiAlc1xuIiwKLSsJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotICAgICAgIHJldHVybiAxMjc7Ci0gICAgIH0KLSAgIHJldHVybiBydmFsOwotQEAgLTM3MjgsNyArNDU1Myw3IEBAIHhtYWxsb2MgKHNpemVfdCBudW0pCi0gewotICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKLSAgIGlmICghcCkKLS0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7Ci0rICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7Ci0gCi0gICByZXR1cm4gcDsKLSB9Ci1AQCAtMzc2Miw4ICs0NTg3LDggQEAgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKLSB7Ci0gICBzdHJ1Y3Qgc3RhdCBzdDsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsCi0tCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoY2hlY2tfZXhlY3V0YWJsZSk6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7Ci0gICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMzc4MCw4ICs0NjA1LDggQEAgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQotICAgaW50IHJ2YWwgPSAwOwotICAgc3RydWN0IHN0YXQgc3Q7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1ha2VfZXhlY3V0YWJsZSk6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7Ci0gICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMzgwNyw4ICs0NjMyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQotICAgaW50IHRtcF9sZW47Ci0gICBjaGFyICpjb25jYXRfbmFtZTsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0tCQkJICB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHdyYXBwZXIpKTsKLSAKLSAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCi0gICAgIHJldHVybiBOVUxMOwotQEAgLTM4NjEsNyArNDY4Niw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKLSAJCXsKLSAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KLSAJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotLQkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOwotKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotIAkJICB0bXBfbGVuID0gc3RybGVuICh0bXApOwotIAkJICBjb25jYXRfbmFtZSA9Ci0gCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7Ci1AQCAtMzg4Niw3ICs0NzEyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQotICAgICB9Ci0gICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCi0gICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0tICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOwotKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotICAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKLSAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7Ci0gICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOwotQEAgLTM5MTIsOCArNDczOSw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAgIGludCBoYXNfc3ltbGlua3MgPSAwOwotICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQotICAgICB7Ci0tICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCi0tCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7Ci0rICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAgICJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKLSAgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCi0gCXsKLSAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQotQEAgLTM5MzUsOCArNDc2Myw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIGNoYXIgKmVycnN0ciA9IHN0cmVycm9yIChlcnJubyk7Ci0tCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOwotKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgImVycm9yIGFjY2Vzc2luZyBmaWxlIFwiJXNcIjogJXMiLAotKwkJICAgIHRtcF9wYXRoc3BlYywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotIAl9Ci0gICAgIH0KLSAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwotQEAgLTM5NDksNyArNDc3OCw4IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKLSAgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKLSAgICAgewotLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7Ci0rICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSJjb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKLSAgICAgfQotICAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7Ci0gI2VuZGlmCi1AQCAtMzk3NSwxMSArNDgwNSwyNSBAQCBzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQotICAgcmV0dXJuIHN0cjsKLSB9Ci0gCi0rdm9pZAotK2x0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaWYgKGx0X2RlYnVnKQotKyAgICB7Ci0rICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUpOwotKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOwotKyAgICAgIHZhX2VuZCAoYXJncyk7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIHZvaWQKLS1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCi0rbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICpmaWxlLAotKwkgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1vZGUsCi0gCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQotIHsKLS0gIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKLSsgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKLSAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKLSAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOwotIAotQEAgLTM5ODgsMjAgKzQ4MzIsMzIgQEAgbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAotIH0KLSAKLSB2b2lkCi0tbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKLStsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKLSB7Ci0gICB2YV9saXN0IGFwOwotICAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKLS0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOwotKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCBmaWxlLCBsaW5lLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7Ci0gICB2YV9lbmQgKGFwKTsKLSB9Ci0gCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCi0rewotKyAgcmV0dXJuIHMgPyBzIDogIihudWxsKSI7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStub25lbXB0eSAoY29uc3QgY2hhciAqcykKLSt7Ci0rICByZXR1cm4gKHMgJiYgISpzKSA/ICIoZW1wdHkpIiA6IG5vbm51bGwgKHMpOwotK30KLSsKLSB2b2lkCi0gbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwotICAgewotICNpZmRlZiBIQVZFX1NFVEVOVgotICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLwotQEAgLTQwNDksOSArNDkwNSw5IEBAIGx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCkKLSB2b2lkCi0gbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7Ci0gCi0gICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCi0gICAgIHsKLUBAIC00MDcwLDkgKzQ5MjYsOSBAQCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHZvaWQKLSBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKLSAKLSAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKLSAgICAgewotQEAgLTQyMjIsNyArNTA3OCw3IEBAIEVPRgotIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCi0gewotICAgICAkb3B0X2RlYnVnCi0tICAgIGNhc2UgYGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIiB8ICRTRUQgLWUgMTBxYCBpbgotKyAgICBjYXNlIGBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIHwgJFNFRCAtZSAxMHFgIGluCi0gICAgICppbXBvcnQqKSA6IDs7Ci0gICAgICopIGZhbHNlIDs7Ci0gICAgIGVzYWMKLUBAIC00NDAxLDkgKzUyNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgOzsKLSAJICAqKQotIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgotKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKLSAJICAgIGVsc2UKLS0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKLSsJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCi0gCSAgICBmaQotIAkgICAgcHJldj0KLSAJICAgIGNvbnRpbnVlCi1AQCAtNDQyNyw3ICs1MjgzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICotKi1kYXJ3aW4qKQotIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCi0gCQkqIiAkcWFyZy5sdGZyYW1ld29yayAiKikgOzsKLS0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKLSsJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCi0gCQkgICA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci1AQCAtNDQ0Niw3ICs1MzAyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIG1vcmVhcmdzPQotIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAotIAkgICAgZG8KLS0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKLSsjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKLSAJICAgICAgYXJnPSRmaWwKLSAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCi0gCi1AQCAtNDQ3NSw3ICs1MzMxLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLS0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgotKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkJICAgICAgcHJldj0KLSAJCSAgICAgIGNvbnRpbnVlCi0gCQkgICAgZWxzZQotQEAgLTQ0ODcsNyArNTM0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCi0gCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KLSAJCSAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0tCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCi0rCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkJICAgIHByZXY9Ci0gCQkgIGZpCi0gCi1AQCAtNDU1NywxMiArNTQxMywxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCi0gCSAgICBjYXNlICIkcnBhdGggIiBpbgotIAkgICAgKiIgJGFyZyAiKikgOzsKLS0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKLSAJICAgIGVzYWMKLSAJICBlbHNlCi0gCSAgICBjYXNlICIkeHJwYXRoICIgaW4KLSAJICAgICoiICRhcmcgIiopIDs7Ci0tCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7Ci0gCSAgICBlc2FjCi0gCSAgZmkKLSAJICBwcmV2PQotQEAgLTQ1NzQsMjggKzU0MzAsMjggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXdlYWspCi0tCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKLSAJICBwcmV2PQotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJeGNjbGlua2VyKQotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCi0gCSAgcHJldj0KLSAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAl4Y29tcGlsZXIpCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgotIAkgIHByZXY9Ci0gCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCi0gCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJeGxpbmtlcikKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgotIAkgIHByZXY9Ci0gCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHdsJHFhcmciCi0gCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgotQEAgLTQ2ODYsMTUgKzU1NDIsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJOzsKLSAKLSAgICAgICAtTCopCi0tCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCi0tCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCi0rCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCi0rCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCi0gCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgotIAkgIGVsc2UKLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm5lZWQgcGF0aCBmb3IgXGAtTCcgb3B0aW9uIgotIAkgIGZpCi0gCWZpCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KLSAJY2FzZSAkZGlyIGluCi0gCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKLUBAIC00NzA2LDEwICs1NTYzLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgOzsKLSAJZXNhYwotIAljYXNlICIkZGVwbGlicyAiIGluCi0tCSoiIC1MJGRpciAiKikgOzsKLSsJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKLSsJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCi0rCSAgOzsKLSAJKikKLS0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCi0tCSAgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiCi0rCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcwotKwkgIGNhc2UgJGRpciBpbgotKwkgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qIHwgPSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKLSsJICBlc2FjCi0rCSAgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIKLSAJICA7OwotIAllc2FjCi0gCWNhc2UgJGhvc3QgaW4KLUBAIC00NzE4LDEyICs1NTgxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JGRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKLSAJICBlc2FjCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC00NzQ3LDcgKzU2MTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgOzsKLSAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCi0gCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgotKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKLSAJICAgIGNvbnRpbnVlCi0gCSAgICA7OwotIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKLUBAIC00NzU4LDkgKzU2MjEsNiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgIyBDb21waWxlciBpbnNlcnRzIGxpYmMgaW4gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIHRocmVhZHMgdG8gd29yawotIAkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCi0gCSAgICA7OwotLQkgICotKi1saW51eCopCi0tCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKLS0JICAgIDs7Ci0gCSAgZXNhYwotIAllbGlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjX3IiOyB0aGVuCi0gCSBjYXNlICRob3N0IGluCi1AQCAtNDc3MCw3ICs1NjMwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgOzsKLSAJIGVzYWMKLSAJZmkKLS0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLSsJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCi0gCWNvbnRpbnVlCi0gCTs7Ci0gCi1AQCAtNDc4Miw4ICs1NjQyLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCi0gICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgotICAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCi0tICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKLS0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotKyAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3R8LS1zeXNyb290KQotKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotIAlwcmV2PXhjb21waWxlcgotQEAgLTQ3OTEsMTIgKzU2NTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJOzsKLSAKLSAgICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQotLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0rCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCSAgICAqIiAkYXJnICIqKSA7OwotLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKLSsJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRhcmciIDs7Ci0gCWVzYWMKLSAJY29udGludWUKLSAJOzsKLUBAIC00ODYzLDEzICs1NzIzLDE3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgotIAljYXNlICRkaXIgaW4KLSAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwotKwk9KikKLSsJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRkaXIiCi0rCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwkgIDs7Ci0gCSopCi0gCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCi0gCSAgOzsKLSAJZXNhYwotIAljYXNlICIkeHJwYXRoICIgaW4KLSAJKiIgJGRpciAiKikgOzsKLS0JKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7Ci0gCWVzYWMKLSAJY29udGludWUKLSAJOzsKLUBAIC00OTIyLDggKzU3ODYsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0tCSAgYXJnPSIkYXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gCWRvbmUKLSAJSUZTPSIkc2F2ZV9pZnMiCi0gCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKLUBAIC00OTM4LDkgKzU4MDIsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0tCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gCWRvbmUKLSAJSUZTPSIkc2F2ZV9pZnMiCi0gCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKLUBAIC00OTY4LDI0ICs1ODMyLDI3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotIAk7OwotIAotLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCi0tICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKLS0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCi0tICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKLS0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYwotLSAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCi0tICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKLS0gICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcwotLSAgICAgICMgLXRwPSogUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgotKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKLSsgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgotKyAgICAgICMgLXJbMC05XVswLTldKiAgICAgICAgc3BlY2lmeSBwcm9jZXNzb3IgZm9yIHRoZSBTR0kgY29tcGlsZXIKLSsgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgotKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKLSsgICAgICAjIC1xKiAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKLSsgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCi0rICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLSsgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qICBwcm9maWxpbmcgZmxhZ3MgZm9yIEdDQwotKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCi0rICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCi0rICAgICAgIyAtLXN5c3Jvb3Q9KiAgICAgICAgICBmb3Igc3lzcm9vdCBzdXBwb3J0Ci0rICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KLSAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKLS0gICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSopCi0rICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCi0rICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQotICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLSAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0tICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0rICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCi0gICAgICAgICBjb250aW51ZQotICAgICAgICAgOzsKLSAKLUBAIC00OTk3LDcgKzU4NjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICouJG9iamV4dCkKLSAJIyBBIHN0YW5kYXJkIG9iamVjdC4KLS0Jb2Jqcz0iJG9ianMgJGFyZyIKLSsJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCi0gCTs7Ci0gCi0gICAgICAgKi5sbykKLUBAIC01MDI4LDcgKzU4OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0tCQlkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKLSsJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKLSAJCXByZXY9Ci0gCQljb250aW51ZQotIAkgICAgICBlbHNlCi1AQCAtNTA0MCw3ICs1OTA3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCi0gCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCi0gCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLS0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKLSAJICAgICAgcHJldj0KLSAJICAgIGZpCi0gCi1AQCAtNTA4NSwyNCArNTk1MiwyNSBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICouJGxpYmV4dCkKLSAJIyBBbiBhcmNoaXZlLgotLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCi0rCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgotKwlmdW5jX2FwcGVuZCBvbGRfZGVwbGlicyAiICRhcmciCi0gCWNvbnRpbnVlCi0gCTs7Ci0gCi0gICAgICAgKi5sYSkKLSAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgotIAotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKLSAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgotLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgcHJldj0KLSAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCi0gCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KLS0JICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIHByZXY9Ci0gCWVsc2UKLS0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAlmaQotIAljb250aW51ZQotIAk7OwotQEAgLTUxMjcsNyArNTk5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgotIAotICAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCi0tICAgICAgZXZhbCAiYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiIgotKyAgICAgIGV2YWwgYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCi0gICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAgICAgZmkKLUBAIC01MTQ0LDExICs2MDEyLDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgIGVsc2UKLSAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KLSAgICAgZmkKLS0gICAgZXZhbCAic3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIiIKLS0gICAgZXZhbCAic3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIiCi0rICAgIGV2YWwgc3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIgotKyAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCi0gCi0gICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCi0gICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKLSsgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKLSsgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCi0gICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCi0gCi1AQCAtNTE2OSwxMiArNjAzOSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKLSAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCi0gICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0tICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAljYXNlICIkbGlicyAiIGluCi0tCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAllc2FjCi0gICAgICAgZmkKLS0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgotKyAgICAgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkZGVwbGliIgotICAgICBkb25lCi0gCi0gICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KLUBAIC01MTg3LDkgKzYwNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCi0gCWZvciBwcmVfcG9zdF9kZXAgaW4gJHByZWRlcHMgJHBvc3RkZXBzOyBkbwotIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KLS0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OwotKwkgICoiICRwcmVfcG9zdF9kZXAgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJHByZV9wb3N0X2RlcHMiIDs7Ci0gCSAgZXNhYwotLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCi0rCSAgZnVuY19hcHBlbmQgcHJlX3Bvc3RfZGVwcyAiICRwcmVfcG9zdF9kZXAiCi0gCWRvbmUKLSAgICAgICBmaQotICAgICAgIHByZV9wb3N0X2RlcHM9Ci1AQCAtNTI1Niw4ICs2MTI2LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KLSAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCi0gCSAgZGVwZW5kZW5jeV9saWJzPQotKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgotIAkgIGNhc2UgJGxpYiBpbgotLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OwotKwkgICoubGEpCWZ1bmNfc291cmNlICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwotIAkgIGVzYWMKLSAKLSAJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKLUBAIC01MjY3LDcgKzYxMzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICAgICAgIGRlcGxpYl9iYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAotIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgotIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OwotLQkgICAgKikgZGVwbGlicz0iJGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJZG9uZQotQEAgLTUyODgsMTEgKzYxNTksMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgotIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLSAJICBlbHNlCi0tCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCi0gCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgotIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7Ci0rCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKLSAJCWVzYWMKLSAJICAgIGZpCi0gCSAgZmkKLUBAIC01Mzc3LDcgKzYyNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KLSAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLS0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OwotKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7Ci0gCQllc2FjCi0gCSAgICBmaQotIAkgIGZpCi1AQCAtNTM5MCw3ICs2MjYxLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKLSAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLS0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgICAgOzsKLSAJICBwcm9nKQotIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotQEAgLTU0MDQsNyArNjI3Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCSAgICBmaQotIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLS0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgICAgOzsKLSAJICAqKQotIAkgICAgZnVuY193YXJuaW5nICJcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgotQEAgLTU0MTUsMTcgKzYyODgsMjEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJLVIqKQotIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KLSAJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCi0tCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KLSAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgotIAkgICAgKiIgJGRpciAiKikgOzsKLS0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKLSAJICAgIGVzYWMKLSAJICBmaQotIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0gCSAgY29udGludWUKLSAJICA7OwotLQkqLmxhKSBsaWI9IiRkZXBsaWIiIDs7Ci0rCSoubGEpCi0rCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCi0rCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSsJICA7OwotIAkqLiRsaWJleHQpCi0gCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLUBAIC01NDg4LDExICs2MzY1LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgotIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKLSAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCi0tCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGVwbGliIgotIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKLSAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLSAJICAgIGVsc2UKLS0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGRlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCi0gCSAgICBmaQotIAkgIGZpCi0gCSAgY29udGludWUKLUBAIC01NTM4LDcgKzY0MTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGZvciB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIGluICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnczsgZG8KLSAJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKLS0JICAgICAgKikgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAlmaQotQEAgLTU1NDYsOCArNjQyMyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8Ci0gCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAotIAkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgotLQkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGRsZmlsZXM9IiRkbGZpbGVzICRkbG9wZW4iCi0tCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKLSsJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKLSsJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKLSAJZmkKLSAKLSAJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotQEAgLTU1NTgsMjAgKzY0MzUsMjAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCi0gCSAgICBmaQotIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgotLQkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0tCSAgICBvbGRfY29udmVuaWVuY2U9IiRvbGRfY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICBmdW5jX2FwcGVuZCBvbGRfY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0gCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKLSAJICBmaQotIAkgIHRtcF9saWJzPQotIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0tCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLS0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0tCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCi0gCSAgZG9uZQotIAkgIGNvbnRpbnVlCi0gCWZpICMgJHBhc3MgPSBjb252Ci1AQCAtNTU3OSw5ICs2NDU2LDE1IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KLSAJbGlua2xpYj0KLS0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotLQkgIGxpbmtsaWI9IiRsIgotLQlkb25lCi0rCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKLSsJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAotKwkgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQsbm8iOyB9OyB0aGVuCi0rCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKLSsJZWxzZQotKwkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KLSsJICAgIGxpbmtsaWI9IiRsIgotKwkgIGRvbmUKLSsJZmkKLSAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCi0gCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCi0gCWZpCi1AQCAtNTU5OCw5ICs2NDgxLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55Ci0gCSAgICAjIGRlcGVuZGVudCBsaWJyYXJpZXMgc28gbGlibHRkbCdzIGRlcGxpYiBwcmVsb2FkZXIgZG9lc24ndAotIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgotLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgotKwkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKLSAJICBlbHNlCi0tCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgotKwkgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiCi0gCSAgZmkKLSAJICBjb250aW51ZQotIAlmaSAjICRwYXNzID0gZGxvcGVuCi1AQCAtNTYyMiwxNCArNjUwNSwxNCBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KLSAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgotLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KLSsJICBpZiB0ZXN0ICEgLWYgIiRsdF9zeXNyb290JGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KLSAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCi0gCSAgICBkaXI9IiRsYWRpciIKLSAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKLSAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICBlbHNlCi0tCSAgICBkaXI9IiRsaWJkaXIiCi0tCSAgICBhYnNkaXI9IiRsaWJkaXIiCi0rCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKLSsJICAgIGFic2Rpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgotIAkgIGZpCi0gCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKLSAJZWxzZQotQEAgLTU2MzcsMTIgKzY1MjAsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGRpcj0iJGxhZGlyIgotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCi0rCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgotIAkgIGVsc2UKLSAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKLSAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLS0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgotKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKLSAJICBmaQotIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKLSAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRsYW5hbWUiCi1AQCAtNTY1MywyMCArNjUzNiw0NiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCi0gCSAgZmkKLS0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKLS0JICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KLS0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0tCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKLS0JICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0tCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0tCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0tCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgotLQkgIGVsc2UKLS0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCi0tCSAgZmkKLSsJICBjYXNlICIkaG9zdCIgaW4KLSsJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KLSsJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKLSsJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKLSsJICAgICAgIyBzeW1ib2xzIGZyb20gdGhlIGltcG9ydCBsaWJyYXJ5IGlmIGEgc2hhcmVkIGxpYnJhcnkgaXMgcHJlc2VudAotKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KLSsJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KLSsJICAgICAgIyBXZSByZWNvdmVyIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgYnkgJ3NhdmluZycgdGhlIGxhIGZpbGUKLSsJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQotKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgotKwkgICAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCi0rCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCi0rCSAgICAgIGVsc2UKLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0rCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0rCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgZmkKLSsJICAgIDs7Ci0rCSAgICAqICkKLSsJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCi0rCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgotKwkgICAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSsJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0rCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgotKwkgICAgICBlbHNlCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCi0rCSAgICAgIGZpCi0rCSAgICA7OwotKwkgIGVzYWMKLSAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgotIAotIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotQEAgLTU2ODQsNyArNjU5Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCi0gCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCi0tCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsYWRpciIKLSsJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCi0gCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKLSAKLSAJICBsaW5rYWxsZGVwbGlicz1ubwotQEAgLTU2OTcsNyArNjYwNiw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICAgY2FzZSAkZGVwbGliIGluCi0gCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0tCSAgICAgICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJCSA7OwotIAkgICAgZXNhYwotIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPwotQEAgLTU3MDgsMTIgKzY2MTgsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKLSAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0gCSAgICBmaQotLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0tCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgotIAkgIGRvbmUgIyBmb3IgZGVwbGliCi0gCSAgY29udGludWUKLSAJZmkgIyAkbGlua21vZGUgPSBwcm9nLi4uCi1AQCAtNTcyOCw3ICs2NjM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgotIAkgICAgICBjYXNlICIkdGVtcF9ycGF0aDoiIGluCi0gCSAgICAgICoiJGFic2RpcjoiKikgOzsKLS0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9ycGF0aCAiJGFic2RpcjoiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCi1AQCAtNTc0MCw3ICs2NjUwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLS0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01NzQ5LDcgKzY2NTksNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01Nzc0LDEyICs2Njg0LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgY2FzZSAkaG9zdCBpbgotIAkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyopCi0gCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKLS0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCi0gCSAgICAgIG5lZWRfcmVsaW5rPW5vCi0gCSAgICA7OwotIAkgICopCi0gCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCi0tCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgotIAkgICAgICBuZWVkX3JlbGluaz15ZXMKLSAJICAgIGZpCi0gCSAgICA7OwotQEAgLTU4MTQsNyArNjcyNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0tCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTgyMyw3ICs2NzMzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTgzNSw3ICs2NzQ1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIHNoaWZ0Ci0gCSAgICByZWFsbmFtZT0iJDEiCi0gCSAgICBzaGlmdAotLQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/Ci0gCSAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotIAkgICAgICBzb25hbWU9IiRkbG5hbWUiCi1AQCAtNTg0OCw3ICs2NzU4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCXZlcnN1ZmZpeD0iLSRtYWpvciIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLS0JICAgICAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCi0rCSAgICAgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKLSAJICAgIGVsc2UKLSAJICAgICAgc29uYW1lPSIkcmVhbG5hbWUiCi0gCSAgICBmaQotQEAgLTU4NzcsNyArNjc4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBsaW5rbGliPSRuZXdsaWIKLSAJICBmaSAjIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIKLSAKLS0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0rCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KLSAJICAgIGFkZF9zaGxpYnBhdGg9Ci0gCSAgICBhZGRfZGlyPQotIAkgICAgYWRkPQotQEAgLTU5MzMsNyArNjg0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQlpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJICBjYXNlICRsaWJkaXIgaW4KLSAJCSAgICBbXFwvXSopCi0tCQkgICAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgICA7OwotIAkJICBlc2FjCi0gCQlmaQotQEAgLTU5NTUsNyArNjg2NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KLSAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgotIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKLS0JICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi1AQCAtNTk2OSwxMyArNjg3OSwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgotIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KLSAJCSoiOiRsaWJkaXI6IiopIDs7Ci0tCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKLSsJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgIGZpCi0gCi0tCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotIAkgICAgYWRkX3NobGlicGF0aD0KLSAJICAgIGFkZF9kaXI9Ci0gCSAgICBhZGQ9Ci1AQCAtNTk4OSw3ICs2ODk5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCi0gCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCi0gCSAgICAgICoiOiRsaWJkaXI6IiopIDs7Ci0tCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIGFkZD0iLWwkbmFtZSIKLSAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KLUBAIC02MDAxLDEyICs2OTExLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpCi0gCSAgICBlbHNlCi0gCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCi0tCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKLSsJICAgICAgYWRkX2Rpcj0iLUwkbHRfc3lzcm9vdCRsaWJkaXIiCi0gCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KLSAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCWNhc2UgJGxpYmRpciBpbgotIAkJICBbXFwvXSopCi0tCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotQEAgLTYwODMsMjcgKzY5OTMsMzMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCQkgICBjYXNlICIgJHhycGF0aCAiIGluCi0gCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7Ci0tCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7Ci0rCQkgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkdGVtcF94cnBhdGgiOzsKLSAJCSAgIGVzYWM7OwotLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLSAJICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKLSAJICBmaQotIAotLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkYWJzZGlyIgotKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCi0gCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5Ci0gCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0gCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKLSAJICB0bXBfbGlicz0KLSAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLS0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rCSAgICBjYXNlICRkZXBsaWIgaW4KLSsgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLSsgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKLSsgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OwotKyAgICAgICAgICAgIGVzYWMKLSsJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0tCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKLSsgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIGRvbmUKLSAKLSAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KLUBAIC02MTEzLDggKzcwMjksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgY2FzZSAkZGVwbGliIGluCi0gCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKLSAJICAgICAgKi5sYSkKLSsJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKLSsJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCi0tCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0Ci0gCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KLSAJCWNhc2UgJGRpciBpbgotIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7Ci1AQCAtNjEzMCw3ICs3MDQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCWNhc2UgJGhvc3QgaW4KLSAJCSotKi1kYXJ3aW4qKQotIAkJICBkZXBkZXBsPQotLQkJICBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotKwkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0gCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIiA7IHRoZW4KLSAJCSAgICBmb3IgdG1wIGluICRkZXBsaWJyYXJ5X25hbWVzIDsgZG8KLSAJCSAgICAgIGRlcGRlcGw9JHRtcAotQEAgLTYxNDEsOCArNzA1OSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCi0gICAgICAgICAgICAgICAgICAgICAgIGZpCi0tCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0tCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotIAkJICAgICAgcGF0aD0KLSAJCSAgICBmaQotIAkJICBmaQotQEAgLTYxNTIsNyArNzA3MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgIDs7Ci0gCQllc2FjCi0gCQllbHNlCi0tCQkgIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotKwkJICBldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotIAkJICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0gCQkgIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIiAmJiBcCi1AQCAtNjE5Miw3ICs3MTEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCi0gCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KLSAJICAgICoiICRkaXIgIiopIDs7Ci0tCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KLUBAIC02MjA1LDcgKzcxMjMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmaQotIAlmb3IgdmFyIGluICR2YXJzIGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAjIEFkZCBsaWJyYXJpZXMgdG8gJHZhciBpbiByZXZlcnNlIG9yZGVyCi0tCSAgZXZhbCB0bXBfbGlicz1cJCR2YXIKLSsJICBldmFsIHRtcF9saWJzPVwiXCQkdmFyXCIKLSAJICBuZXdfbGlicz0KLSAJICBmb3IgZGVwbGliIGluICR0bXBfbGliczsgZG8KLSAJICAgICMgRklYTUU6IFBlZGFudGljYWxseSwgdGhpcyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIHNvCi1AQCAtNjI1MCwxMyArNzE2OCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgLUwqKQotIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KLSAJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKLS0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLS0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0tCSAgZXZhbCAkdmFyPVwkdG1wX2xpYnMKLSsJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgotIAlkb25lICMgZm9yIHZhcgotICAgICAgIGZpCi0gICAgICAgIyBMYXN0IHN0ZXA6IHJlbW92ZSBydW50aW1lIGxpYnMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKLUBAIC02MjY5LDcgKzcxODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIDs7Ci0gCWVzYWMKLSAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCi0rCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKLSAJZmkKLSAgICAgICBkb25lCi0gICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicwotQEAgLTYzMTAsNyArNzIyOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCi0gICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCi0gICAgICAgb2xkbGlicz0iJG91dHB1dCIKLS0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKLSsgICAgICBmdW5jX2FwcGVuZCBvYmpzICIkb2xkX2RlcGxpYnMiCi0gICAgICAgOzsKLSAKLSAgICAgbGliKQotQEAgLTYzMTksOCArNzIzNyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgbGliKikKLSAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRvdXRwdXRuYW1lIgotIAluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgotLQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgotKwlldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKLSAJOzsKLSAgICAgICAqKQotIAl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKLUBAIC02MzMwLDggKzcyNDgsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKLSAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCi0gCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tCSAgZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgotLQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCSAgZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKLSsJICBldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKLSAJZWxzZQotIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKLSAJICBsaWJuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLUBAIC02MzQ2LDcgKzcyNjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGVjaG8KLSAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCi0gCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCi0tCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCi0rCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRvYmpzIgotIAlmaQotICAgICAgIGZpCi0gCi1AQCAtNjU0NCw3ICs3NDYyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBkb25lCi0gCi0gCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgotLQkgIHZlcnN0cmluZz0iJHZlcnN0cmluZzoke2N1cnJlbnR9LjAiCi0rCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgotIAkgIDs7Ci0gCi0gCXFueCkKLUBAIC02NjEyLDEwICs3NTMwLDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZmkKLSAKLSAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKLS0gICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKLSsgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCi0gICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAKLS0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0rICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KLSAJIyBSZW1vdmUgb3VyIG91dHB1dHMsIGJ1dCBkb24ndCByZW1vdmUgb2JqZWN0IGZpbGVzIHNpbmNlIHRoZXkKLSAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCi0gCXJlbW92ZWxpc3Q9Ci1AQCAtNjYzMSw3ICs3NTQ5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSAgIGNvbnRpbnVlCi0gCQkgZmkKLSAJICAgICAgIGZpCi0tCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKLSsJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKLSAJICAgICAgIDs7Ci0gCSAgICAqKSA7OwotIAkgIGVzYWMKLUBAIC02NjQyLDcgKzc1NjAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgotICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCi0tCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCi0rCWZ1bmNfYXBwZW5kIG9sZGxpYnMgIiAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgotIAotIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0gCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAotQEAgLTY2NTksMTAgKzc1NzcsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgotIAl0ZW1wX3hycGF0aD0KLSAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbwotLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgotKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZG9uZQotIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotQEAgLTY2NzYsNyArNzU5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCi0gCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCi0gCSoiICRsaWIgIiopIDs7Ci0tCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotIAotQEAgLTY2ODYsNyArNzYwNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCi0gCWNhc2UgIiRkbHByZWZpbGVzICIgaW4KLSAJKiIgJGxpYiAiKikgOzsKLS0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gCi1AQCAtNjY5OCw3ICs3NjE3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIDs7Ci0gCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQotIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLS0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0gCSAgICA7OwotIAkgICotKi1uZXRic2QqKQotIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCi1AQCAtNjcxNSw3ICs3NjM0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAqKQotIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KLSAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KLS0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgotKwkgICAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLWxjIgotIAkgICAgZmkKLSAJICAgIDs7Ci0gCSAgZXNhYwotQEAgLTY3NjQsMTggKzc2ODMsMTggQEAgRU9GCi0gCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQkgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJICAqIiAkaSAiKikKLS0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgaT0iIgotIAkJICAgIDs7Ci0gCQkgIGVzYWMKLSAJCWZpCi0gCQlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0tCQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0tCQkgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgotKwkJICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSsJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAotIAkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAotIAkJICBkZXBsaWJfbWF0Y2g9JDEKLSAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgZWxzZQotIAkJICAgIGRyb3BwZWRkZXBzPXllcwotIAkJICAgIGVjaG8KLUBAIC02Nzg5LDcgKzc3MDgsNyBAQCBFT0YKLSAJCWZpCi0gCQk7OwotIAkgICAgICAqKQotLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi1AQCAtNjgwNywxOCArNzcyNiwxOCBAQCBFT0YKLSAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJICAgICoiICRpICIqKQotLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgICBpPSIiCi0gCQkgICAgICA7OwotIAkJICAgIGVzYWMKLSAJCSAgZmkKLSAJCSAgaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotLQkJICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0tCQkgICAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCi0rCQkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0rCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAotIAkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0Ci0gCQkgICAgZGVwbGliX21hdGNoPSQxCi0gCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgZWxzZQotIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCi0gCQkgICAgICBlY2hvCi1AQCAtNjg0MCw3ICs3NzU5LDcgQEAgRU9GCi0gCQlmaQotIAkJOzsKLSAJICAgICAgKikKLS0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotQEAgLTY4NTcsMTUgKzc3NzYsMjcgQEAgRU9GCi0gCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJKiIgJGFfZGVwbGliICIqKQotLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgIGFfZGVwbGliPSIiCi0gCQkgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCi0tCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0rCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgotKwkJICBsaWJuYW1lZ2xvYj1gZnVuY19lY2hvX2FsbCAiJGxpYm5hbWUiIHwgJFNFRCAtZSAkZmlsZV9tYWdpY19nbG9iYAotKwkJZWxzZQotKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQotKwkJZmkKLSsJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCi0gCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLS0JCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCi0rCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCi0rCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgotKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKLSsJCSAgICAkbm9jYXNlZ2xvYgotKwkJICBlbHNlCi0rCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAotKwkJICBmaQotIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCi0gCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgotIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKLUBAIC02ODg1LDEwICs3ODE2LDEwIEBAIEVPRgotIAkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7Ci0gCQkJZXNhYwotIAkJICAgICAgZG9uZQotLQkJICAgICAgaWYgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiIgMj4vZGV2L251bGwgfAotKwkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKLSAJCQkgJFNFRCAtZSAxMHEgfAotIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJCWFfZGVwbGliPSIiCi0gCQkJYnJlYWsgMgotIAkJICAgICAgZmkKLUBAIC02OTEzLDcgKzc4NDQsNyBAQCBFT0YKLSAJICAgICAgOzsKLSAJICAgICopCi0gCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0tCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgotQEAgLTY5MjksMjAgKzc4NjAsMjAgQEAgRU9GCi0gCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJKiIgJGFfZGVwbGliICIqKQotLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgIGFfZGVwbGliPSIiCi0gCQkgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCi0tCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0gCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLSAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCi0gCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KLSAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAotIAkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCi0gCQkgICAgICAgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLS0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgICAgICBhX2RlcGxpYj0iIgotIAkJICAgICAgYnJlYWsgMgotIAkJICAgIGZpCi1AQCAtNjk2Nyw3ICs3ODk4LDcgQEAgRU9GCi0gCSAgICAgIDs7Ci0gCSAgICAqKQotIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KLUBAIC03MDcxLDcgKzgwMDIsNyBAQCBFT0YKLSAJKikKLSAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgotIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKLS0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OwotKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC03MDgxLDEwICs4MDEyLDEwIEBAIEVPRgotIAktTCopCi0gCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCi0gCSAgKiIgJGRlcGxpYiAiKikgOzsKLS0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAkgIGVzYWMKLSAJICA7OwotLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCi1AQCAtNzEwMSwxMCArODAzMiwxMiBAQCBFT0YKLSAJICBoYXJkY29kZV9saWJkaXJzPQotIAkgIGRlcF9ycGF0aD0KLSAJICBycGF0aD0iJGZpbmFsaXplX3JwYXRoIgotLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgotKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKLSAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KLSAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLSsJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgotIAkJZWxzZQotQEAgLTcxMTMsMTggKzgwNDYsMTggQEAgRU9GCi0gCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKLSAJCSAgICA7OwotIAkJICAqKQotLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSAJCSAgICA7OwotIAkJICBlc2FjCi0gCQlmaQotIAkgICAgICBlbHNlCi0tCQlldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLS0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKLSsJCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgotIAkgICAgICBmaQotIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBkb25lCi1AQCAtNzEzMyw0MCArODA2NiwzOCBAQCBFT0YKLSAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJICAgIGxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCi0gCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KLS0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIiIKLSsJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiCi0gCSAgICBlbHNlCi0tCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotIAkgICAgZmkKLSAJICBmaQotIAkgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHBlcm1fcnBhdGgiOyB0aGVuCi0gCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgICAgcnBhdGg9Ci0gCSAgICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKLSAJICAgIGRvbmUKLS0JICAgIGV2YWwgJHJ1bnBhdGhfdmFyPVwkcnBhdGhcJCRydW5wYXRoX3ZhcgotLQkgICAgZXhwb3J0ICRydW5wYXRoX3ZhcgotKwkgICAgZXZhbCAiJHJ1bnBhdGhfdmFyPSckcnBhdGhcJCRydW5wYXRoX3Zhcic7IGV4cG9ydCAkcnVucGF0aF92YXIiCi0gCSAgZmkKLSAJICB0ZXN0IC1uICIkZGVwX3JwYXRoIiAmJiBkZXBsaWJzPSIkZGVwX3JwYXRoICRkZXBsaWJzIgotIAlmaQotIAotIAlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCi0tCXRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgotKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCi0gCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCi0tCSAgZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJHNobGlicGF0aFwkJHNobGlicGF0aF92YXIKLS0JICBleHBvcnQgJHNobGlicGF0aF92YXIKLSsJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCi0gCWZpCi0gCi0gCSMgR2V0IHRoZSByZWFsIGFuZCBsaW5rIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LgotLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0tCWV2YWwgImxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCi0rCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCi0rCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgotIAlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKLSAJc2hpZnQKLSAJcmVhbG5hbWU9IiQxIgotIAlzaGlmdAotIAotIAlpZiB0ZXN0IC1uICIkc29uYW1lX3NwZWMiOyB0aGVuCi0tCSAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCi0rCSAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgotIAllbHNlCi0gCSAgc29uYW1lPSIkcmVhbG5hbWUiCi0gCWZpCi1AQCAtNzE3OCw3ICs4MTA5LDcgQEAgRU9GCi0gCWxpbmtuYW1lcz0KLSAJZm9yIGxpbmsKLSAJZG8KLS0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCi0rCSAgZnVuY19hcHBlbmQgbGlua25hbWVzICIgJGxpbmsiCi0gCWRvbmUKLSAKLSAJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKLUBAIC03MTg5LDcgKzgxMjAsNyBAQCBFT0YKLSAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLSAJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLS0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKLSsJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKLSAJZmkKLSAKLSAJb3JpZ19leHBvcnRfc3ltYm9scz0KLUBAIC03MjIwLDEzICs4MTUxLDQ1IEBAIEVPRgotIAkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKLSAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKLSAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotLQkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLSsJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbwotIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKLS0JICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgotLQkgICAgICBmdW5jX2xlbiAiICRjbWQiCi0tCSAgICAgIGxlbj0kZnVuY19sZW5fcmVzdWx0Ci0tCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgotKwkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAotKwkgICAgICAjIGRvZXNuJ3Qgd29yayBvciBpZiB0b29sIGNvbnZlcnNpb24gaXMgbm90IG5lZWRlZC4KLSsJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KLSsJCSp+ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCB8ICp+ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgfCB+KikKLSsJCSAgdHJ5X25vcm1hbF9icmFuY2g9eWVzCi0rCQkgIGV2YWwgY21kPVwiJGNtZDFcIgotKwkJICBmdW5jX2xlbiAiICRjbWQiCi0rCQkgIGxlbj0kZnVuY19sZW5fcmVzdWx0Ci0rCQkgIDs7Ci0rCQkqKQotKwkJICB0cnlfbm9ybWFsX2JyYW5jaD1ubwotKwkJICA7OwotKwkgICAgICBlc2FjCi0rCSAgICAgIGlmIHRlc3QgIiR0cnlfbm9ybWFsX2JyYW5jaCIgPSB5ZXMgXAotKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKLSsJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9Ci0rCSAgICAgIHRoZW4KLSsJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKLSsJCXNraXBwZWRfZXhwb3J0PWZhbHNlCi0rCSAgICAgIGVsaWYgdGVzdCAtbiAiJG5tX2ZpbGVfbGlzdF9zcGVjIjsgdGhlbgotKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKLSsJCW91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLSsJCXNhdmVfbGlib2Jqcz0kbGlib2JqcwotKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAotKwkJb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lm5tCi0rCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotKwkJZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotKwkJZnVuY192ZXJib3NlICJjcmVhdGluZyAkTk0gaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgotKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbwotKwkJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJCSAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCi0rCQlkb25lID4gIiRvdXRwdXQiCi0rCQlldmFsIGNtZD1cIiRjbWQxXCIKLSAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKLSsJCW91dHB1dD0kc2F2ZV9vdXRwdXQKLSsJCWxpYm9ianM9JHNhdmVfbGlib2JqcwotIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKLSAJICAgICAgZWxzZQotIAkJIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCi1AQCAtNzI0OCw3ICs4MjExLDcgQEAgRU9GCi0gCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKLSAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLS0JICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwotIAlmaQotIAotIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgotQEAgLTcyNjAsNyArODIyMyw3IEBAIEVPRgotIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5Ci0gCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KLSAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLS0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0rCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgotIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCi0gCWZpCi1AQCAtNzI3MCw3ICs4MjMzLDcgQEAgRU9GCi0gCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCi0gCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OwotIAkgICopCi0tCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgotIAkgICAgOzsKLSAJICBlc2FjCi0gCWRvbmUKLUBAIC03Mjg2LDQzICs4MjQ5LDQzIEBAIEVPRgotIAkgIGZpCi0gCSAgaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCi0tCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgotKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAkgIGVsc2UKLSAJICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKLS0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJICBmaQotIAlmaQotIAotIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCi0tCSAgZXZhbCAiZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIiIKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCi0rCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCi0gCWZpCi0gCi0gCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZwotLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLS0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpIHx8IGV4aXQgJD8KLSsJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KLSAJZmkKLSAKLSAJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgotIAlpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgotIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJG1vZHVsZV9leHBzeW1fY21kcyI7IHRoZW4KLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiCi0gCSAgICBjbWRzPSRtb2R1bGVfZXhwc3ltX2NtZHMKLSAJICBlbHNlCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIKLSAJICAgIGNtZHM9JG1vZHVsZV9jbWRzCi0gCSAgZmkKLSAJZWxzZQotIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCi0gCSAgICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCi0gCSAgZWxzZQotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKLSAJICAgIGNtZHM9JGFyY2hpdmVfY21kcwotIAkgIGZpCi0gCWZpCi1AQCAtNzM2NiwxMCArODMyOSwxMyBAQCBFT0YKLSAJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAotIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCi0gCSAgICBkbwotLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAotKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKLSAJICAgIGRvbmUKLSAJICAgIGVjaG8gJyknID4+ICRvdXRwdXQKLS0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgICAgb3V0cHV0PSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgotIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuawotIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgotQEAgLTczODMsMTUgKzgzNDksMTcgQEAgRU9GCi0gCSAgICBmaQotIAkgICAgZm9yIG9iagotIAkgICAgZG8KLS0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKLSsJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0Ci0gCSAgICBkb25lCi0tCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0tCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkb3V0cHV0XCIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiCi0gCSAgZWxzZQotIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KLSAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKLSAJICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0tCSAgICAgIGV2YWwgInRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiIgotKwkgICAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiCi0gCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKLSAJICAgICAgbGVuMD0kZnVuY19sZW5fcmVzdWx0Ci0gCSAgICAgIGxlbj0kbGVuMAotQEAgLTc0MTEsMTIgKzgzNzksMTIgQEAgRU9GCi0gCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KLSAJCSAgICAjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgotIAkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0Ci0tCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKLSsJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKLSAJCSAgZWxzZQotIAkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCi0gCQkgICAgIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLSAJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKLS0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgotKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgotIAkJICBmaQotIAkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLSAJCSAgZnVuY19hcml0aCAkayArIDEKLUBAIC03NDMzLDExICs4NDAxLDExIEBAIEVPRgotIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLSAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0gCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgotLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiIgotKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIKLSAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KLS0JICAgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIiIKLSsJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCi0gCSAgICAgIGZpCi0tCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLSsJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotIAotIAkgICAgZWxzZQotIAkgICAgICBvdXRwdXQ9Ci1AQCAtNzQ1MCw5ICs4NDE4LDkgQEAgRU9GCi0gCSAgICAgIGxpYm9ianM9JG91dHB1dAotIAkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgotIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLS0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIiIKLSsJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCi0tCQlldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCi0rCQlldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIgotIAkgICAgICBmaQotIAkgICAgZmkKLSAKLUBAIC03NDcxLDcgKzg0MzksNyBAQCBFT0YKLSAJCWx0X2V4aXQ9JD8KLSAKLSAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotLQkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0rCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0gCQkgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCi0gCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKLSAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQotQEAgLTc0OTIsNyArODQ2MCw3IEBAIEVPRgotIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKLSAJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0tCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCi0rCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwotIAkgICAgZmkKLSAKLSAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgotQEAgLTc1MDQsNyArODQ3Miw3IEBAIEVPRgotIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQotIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgotIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLS0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0gCSAgICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgotIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwotIAkgICAgZmkKLUBAIC03NTE1LDcgKzg0ODMsNyBAQCBFT0YKLSAJICBvdXRwdXQ9JHNhdmVfb3V0cHV0Ci0gCi0gCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIiAmJiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi0tCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgotKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAkgIGZpCi0gCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKLUBAIC03NTM5LDIzICs4NTA3LDIzIEBAIEVPRgotIAotIAlpZiB0ZXN0IC1uICIkZGVsZmlsZXMiOyB0aGVuCi0gCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcyB0byAkY21kcy4KLS0JICBldmFsICJjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIiCi0rCSAgZXZhbCBjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIKLSAJZmkKLSAKLSAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCi0gCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAlmaQotIAotIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLSAJZm9yIGNtZCBpbiAkY21kczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLS0JICBldmFsICJjbWQ9XCIkY21kXCIiCi0rCSAgZXZhbCBjbWQ9XCIkY21kXCIKLSAJICAkb3B0X3NpbGVudCB8fCB7Ci0gCSAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRjbWQiCi0gCSAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCi1AQCAtNzU2NCw3ICs4NTMyLDcgQEAgRU9GCi0gCSAgICBsdF9leGl0PSQ/Ci0gCi0gCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLS0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotKwkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAotIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCi0gCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQotQEAgLTc1NzYsOCArODU0NCw4IEBAIEVPRgotIAlJRlM9IiRzYXZlX2lmcyIKLSAKLSAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0tCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSkgfHwgZXhpdCAkPwotKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPwotIAotIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KLSAJICAgIGlmIHRlc3QgLXogIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLUBAIC03NjU2LDE3ICs4NjI0LDIwIEBAIEVPRgotIAotICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KLSAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotLQkgIGV2YWwgInRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCi0rCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAotIAllbHNlCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0gCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAlmaQotICAgICAgIGZpCi0gCi0rICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKLSsgICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgbGlib2Jqcz0iJG5vbl9waWNfb2JqZWN0cyIKLSsKLSAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLSAgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKLSAKLUBAIC03NjkwLDcgKzg2NjEsNyBAQCBFT0YKLSAJIyBDcmVhdGUgYW4gaW52YWxpZCBsaWJ0b29sIG9iamVjdCBpZiBubyBQSUMsIHNvIHRoYXQgd2UgZG9uJ3QKLSAJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KLSAJIyAkc2hvdyAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIgotLQkjICRvcHRfZHJ5X3J1biB8fCBlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmogfHwgZXhpdCAkPwotKwkjICRvcHRfZHJ5X3J1biB8fCBldmFsICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiIHx8IGV4aXQgJD8KLSAJZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgICAgZmkKLSAKLUBAIC03NzQwLDggKzg3MTEsOCBAQCBFT0YKLSAJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgotIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KLSAJICAgIDEwLlswMTIzXSkKLS0JICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLS0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgotKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCi0gCSAgICA7OwotIAkgIGVzYWMKLSAJZmkKLUBAIC03NzYxLDcgKzg3MzIsNyBAQCBFT0YKLSAJKikKLSAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCi0gCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0rCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTc3NzEsMTcgKzg3NDIsMTcgQEAgRU9GCi0gCS1MKikKLSAJICBjYXNlICIgJG5ld19saWJzICIgaW4KLSAJICAqIiAkZGVwbGliICIqKSA7OwotLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0tCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotICAgICAgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19saWJzIgotIAotIAotLSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgotLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgotKyAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRjb21waWxlX2RlcGxpYnMiCi0rICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRmaW5hbGl6ZV9kZXBsaWJzIgotIAotICAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCi0gCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KLUBAIC03Nzg5LDcgKzg3NjAsNyBAQCBFT0YKLSAJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCi0gCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlkb25lCi0gICAgICAgZmkKLUBAIC03ODA4LDE4ICs4Nzc5LDE4IEBAIEVPRgotIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCi0gCQk7OwotIAkgICAgICAqKQotLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0rCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGVsc2UKLS0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKLSsJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0gCSAgZmkKLSAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWZpCi0gCWNhc2UgJGhvc3QgaW4KLUBAIC03ODI4LDEyICs4Nzk5LDEyIEBAIEVPRgotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiRsaWJkaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokbGliZGlyIjs7Ci0gCSAgZXNhYwotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNzg0Miw3ICs4ODEzLDcgQEAgRU9GCi0gICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCi0gCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLS0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gICAgICAgZmkKLSAgICAgICBjb21waWxlX3JwYXRoPSIkcnBhdGgiCi0gCi1AQCAtNzg1OSwxOCArODgzMCwxOCBAQCBFT0YKLSAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQotIAkJOzsKLSAJICAgICAgKikKLS0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBlbHNlCi0tCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLS0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCi0rCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZpbmFsaXplX3Blcm1fcnBhdGg9IiRmaW5hbGl6ZV9wZXJtX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlmaQotICAgICAgIGRvbmUKLUBAIC03ODc4LDcgKzg4NDksNyBAQCBFT0YKLSAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKLSAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAgICAgICBmaQotICAgICAgIGZpbmFsaXplX3JwYXRoPSIkcnBhdGgiCi0gCi1AQCAtNzkyMSw2ICs4ODkyLDEyIEBAIEVPRgotIAlleGl0X3N0YXR1cz0wCi0gCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCi0gCi0rCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgotKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKLSsJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JwotKwlmaQotKwotIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgotIAlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCi0gCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKLUBAIC03OTQzLDcgKzg5MjAsNyBAQCBFT0YKLSAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgIHJwYXRoPQotIAkgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0tCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCi0gCSAgZG9uZQotIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKLSAJZmkKLUBAIC03OTUxLDcgKzg5MjgsNyBAQCBFT0YKLSAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgIHJwYXRoPQotIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCi0tCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCi0gCSAgZG9uZQotIAkgIGZpbmFsaXplX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCi0gCWZpCi1AQCAtNzk2Niw2ICs4OTQzLDEzIEBAIEVPRgotIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKLSAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0Ci0gCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKLSsKLSsJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCi0rCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAotKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCi0rCWZpCi0rCi0gCWV4aXQgJEVYSVRfU1VDQ0VTUwotICAgICAgIGZpCi0gCi1AQCAtNzk5OSw2ICs4OTgzLDEyIEBAIEVPRgotIAotICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKLSAKLSsgICAgICBpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KLSsJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgotKwlwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAotKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JwotKyAgICAgIGZpCi0rCi0gICAgICAgIyBOb3cgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdC4KLSAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCi0gCi1AQCAtODA5Niw3ICs5MDg2LDcgQEAgRU9GCi0gCWVsc2UKLSAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKLSAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCi0tCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKLSsJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKLSAJICBmaQotIAlmaQotIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgotQEAgLTgxMDQsMTAgKzkwOTQsMTAgQEAgRU9GCi0gCi0gICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCi0gCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicwotLQlvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotICAgICAgIGZpCi0gCi0gICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGFyY2hpdmUgY29tbWFuZHMuCi1AQCAtODExOCwxMCArOTEwOCwxMCBAQCBFT0YKLSAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCi0gCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJZmkKLSAKLSAJIyBQT1NJWCBkZW1hbmRzIG5vIHBhdGhzIHRvIGJlIGVuY29kZWQgaW4gYXJjaGl2ZXMuICBXZSBoYXZlCi1AQCAtODEzOSw3ICs5MTI5LDcgQEAgRU9GCi0gCWVsc2UKLSAJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKLSAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKLSAJICBvbGRvYmpzPQotQEAgLTgxNjMsMTggKzkxNTMsMjggQEAgRU9GCi0gCQllc2FjCi0gCSAgICAgIGRvbmUKLSAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgotLQkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCi0gCSAgICAgIDs7Ci0tCSAgICAqKSBvbGRvYmpzPSIkb2xkb2JqcyAkb2JqIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAlmaQotLQlldmFsICJjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgotIAotIAlmdW5jX2xlbiAiICRjbWRzIgotIAlsZW49JGZ1bmNfbGVuX3Jlc3VsdAotIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KLSAJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCi0rCWVsaWYgdGVzdCAtbiAiJGFyY2hpdmVyX2xpc3Rfc3BlYyI7IHRoZW4KLSsJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCi0rCSAgZm9yIG9iaiBpbiAkb2xkb2JqcwotKwkgIGRvCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgotKwkgIGRvbmUgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQKLSsJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgotKwkgIG9sZG9ianM9IiAkYXJjaGl2ZXJfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKLSsJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCi0gCWVsc2UKLSAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cwotIAkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKLUBAIC04MTg5LDcgKzkxODksNyBAQCBFT0YKLSAJICBkbwotIAkgICAgbGFzdF9vbGRvYmo9JG9iagotIAkgIGRvbmUKLS0JICBldmFsICJ0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgotKwkgIGV2YWwgdGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgotIAkgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKLSAJICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKLSAJICBsZW49JGxlbjAKLUBAIC04MjA4LDcgKzkyMDgsNyBAQCBFT0YKLSAJCVJBTkxJQj0kc2F2ZV9SQU5MSUIKLSAJICAgICAgZmkKLSAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0tCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAJICAgICAgb2JqbGlzdD0KLSAJICAgICAgbGVuPSRsZW4wCi0gCSAgICBmaQotQEAgLTgyMTYsOSArOTIxNiw5IEBAIEVPRgotIAkgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKLSAJICBvbGRvYmpzPSRvYmpsaXN0Ci0gCSAgaWYgdGVzdCAiWCRvbGRvYmpzIiA9ICJYIiA7IHRoZW4KLS0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzXCIiCi0rCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzXCIKLSAJICBlbHNlCi0tCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAJICBmaQotIAlmaQotICAgICAgIGZpCi1AQCAtODI2OCwxMiArOTI2OCwyMyBAQCBFT0YKLSAJICAgICAgKi5sYSkKLSAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCi0gCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSsJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgotKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKLSAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0tCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgotKwkJOzsKLSsJICAgICAgLUwqKQotKwkJZnVuY19zdHJpcG5hbWUgLUwgJycgIiRkZXBsaWIiCi0rCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1MJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKLSAJCTs7Ci0tCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAtUiopCi0rCQlmdW5jX3N0cmlwbmFtZSAtUiAnJyAiJGRlcGxpYiIKLSsJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgotKwkJOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgotQEAgLTgyODQsMTIgKzkyOTUsMTQgQEAgRU9GCi0gCSAgICAgICoubGEpCi0gCSAgICAgICAgZnVuY19iYXNlbmFtZSAiJGxpYiIKLSAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAotKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCi0rCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAotKwotIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLS0JCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCi0rCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCi0gCQk7OwotLQkgICAgICAqKSBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCi1AQCAtODMwMywxMCArOTMxNiwxMSBAQCBFT0YKLSAJCSMgdGhlIGxpYnJhcnk6Ci0gCQlmdW5jX2Jhc2VuYW1lICIkbGliIgotIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCi0rCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKLSsJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCi0gCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotLQkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLUBAIC04MzE4LDcgKzkzMzIsNyBAQCBFT0YKLSAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwotIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwotIAkgICAgICBlc2FjCi0tCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgotIAkgICAgZG9uZQotIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCi0gCSAgICBuZXdkbHByZWZpbGVzPQotQEAgLTgzMjcsNyArOTM0MSw3IEBAIEVPRgotIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7Ci0gCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLS0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGFicyIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCi0gCSAgICBkb25lCi0gCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKLSAJICBmaQotQEAgLTg0MTIsNyArOTQyNiw3IEBAIHJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIiCi0gICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwotIH0KLSAKLS17IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCi0reyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCi0gICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQotIAotIAotQEAgLTg0MzIsOSArOTQ0Niw5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgZm9yIGFyZwotICAgICBkbwotICAgICAgIGNhc2UgJGFyZyBpbgotLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OwotLSAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7Ci0tICAgICAgKikgZmlsZXM9IiRmaWxlcyAkYXJnIiA7OwotKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OwotKyAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7Ci0rICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OwotICAgICAgIGVzYWMKLSAgICAgZG9uZQotIAotQEAgLTg0NDMsMjQgKzk0NTcsMjMgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAotICAgICBybWRpcnM9Ci0gCi0tICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCi0gICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KLSAgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKLSAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotICAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCi0tCW9iamRpcj0iJG9yaWdvYmpkaXIiCi0rCW9kaXI9IiRvYmpkaXIiCi0gICAgICAgZWxzZQotLQlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCi0rCW9kaXI9IiRkaXIvJG9iamRpciIKLSAgICAgICBmaQotICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgotICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0gICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgotKyAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKLSAKLS0gICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCi0tICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KLSsgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwotKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgotIAljYXNlICIgJHJtZGlycyAiIGluCi0tCSAgKiIgJG9iamRpciAiKikgOzsKLS0JICAqKSBybWRpcnM9IiRybWRpcnMgJG9iamRpciIgOzsKLSsJICAqIiAkb2RpciAiKikgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKLSAJZXNhYwotICAgICAgIGZpCi0gCi1AQCAtODQ4NiwxOCArOTQ5OSwxNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCi0gCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KLSAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG4iCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG4iCi0gCSAgZG9uZQotLQkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kb2xkX2xpYnJhcnkiCi0rCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgotIAotLQkgIGNhc2UgIiRtb2RlIiBpbgotKwkgIGNhc2UgIiRvcHRfbW9kZSIgaW4KLSAJICBjbGVhbikKLS0JICAgIGNhc2UgIiAgJGxpYnJhcnlfbmFtZXMgIiBpbgotLQkgICAgIyAiICAiIGluIHRoZSBiZWdpbm5pbmcgY2F0Y2hlcyBlbXB0eSAkZGxuYW1lCi0rCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgotIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKLS0JICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKLSsJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OwotIAkgICAgZXNhYwotLQkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgotKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgotIAkgICAgOzsKLSAJICB1bmluc3RhbGwpCi0gCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KLUBAIC04NTI1LDE5ICs5NTM3LDE5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KLSAJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKLSAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgotIAkgIGZpCi0gCi0gCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKLSAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgotIAkgIGZpCi0gCWZpCi0gCTs7Ci0gCi0gICAgICAgKikKLS0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCi0rCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KLSAJICBub2V4ZW5hbWU9JG5hbWUKLSAJICBjYXNlICRmaWxlIGluCi0gCSAgKi5leGUpCi1AQCAtODU0Nyw3ICs5NTU5LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAkgICAgbm9leGVuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKLSAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZpbGUiCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCi0gCSAgICA7OwotIAkgIGVzYWMKLSAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KLUBAIC04NTU2LDcgKzk1NjgsNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgotIAkgICAgICByZWxpbmtfY29tbWFuZD0KLSAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0Ci0tCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKLSAJICAgIGVsc2UKLSAJICAgICAgcmVsaW5rX2NvbW1hbmQ9Ci0gCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQotQEAgLTg1NjQsMTIgKzk1NzYsMTIgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAotIAkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKLSAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKLSAJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KLS0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgotIAkgICAgZmkKLSAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KLS0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0ke25vZXhlbmFtZX0uYyIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgotIAkgICAgZmkKLSAJICBmaQotIAlmaQotQEAgLTg1NzcsNyArOTU4OSw2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgICBlc2FjCi0gICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCi0gICAgIGRvbmUKLS0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKLSAKLSAgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCi0gICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KLUBAIC04NTg5LDE2ICs5NjAwLDE2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0teyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKLSt7IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCi0gICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9Ci0gCi0tdGVzdCAteiAiJG1vZGUiICYmIHsKLSt0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKLSAgIGhlbHA9IiRnZW5lcmljX2hlbHAiCi0gICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIgotIH0KLSAKLSB0ZXN0IC16ICIkZXhlY19jbWQiICYmIFwKLS0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKLSsgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCi0gCi0gaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgotICAgZXZhbCBleGVjICIkZXhlY19jbWQiCi1kaWZmIC0tZ2l0IGEvbHRvcHRpb25zLm00IGIvbHRvcHRpb25zLm00Ci1pbmRleCA1ZWYxMmNlZDJhLi4xN2NmZDUxYzBiIDEwMDY0NAotLS0tIGEvbHRvcHRpb25zLm00Ci0rKysgYi9sdG9wdGlvbnMubTQKLUBAIC04LDcgKzgsNyBAQAotICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0gIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAotKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00Ci0gCi0gIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KLSBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCi1kaWZmIC0tZ2l0IGEvbHR2ZXJzaW9uLm00IGIvbHR2ZXJzaW9uLm00Ci1pbmRleCBiZjg3Zjc3MTMyLi45YzdiNWQ0MTE4IDEwMDY0NAotLS0tIGEvbHR2ZXJzaW9uLm00Ci0rKysgYi9sdHZlcnNpb24ubTQKLUBAIC03LDE3ICs3LDE3IEBACi0gIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLSAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIAotLSMgR2VuZXJhdGVkIGZyb20gbHR2ZXJzaW9uLmluLgotKyMgQGNvbmZpZ3VyZV9pbnB1dEAKLSAKLS0jIHNlcmlhbCAzMTM0IGx0dmVyc2lvbi5tNAotKyMgc2VyaWFsIDMyOTMgbHR2ZXJzaW9uLm00Ci0gIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAotIAotLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi43YV0pCi0tbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzEzNF0pCi0rbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40XSkKLSttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMjkzXSkKLSAKLSBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAotLVttYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLStbbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCi0gX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKLSBdKQotZGlmZiAtLWdpdCBhL2x0fm9ic29sZXRlLm00IGIvbHR+b2Jzb2xldGUubTQKLWluZGV4IGJmOTJiNWUwNzkuLmM1NzNkYTkwYzUgMTAwNjQ0Ci0tLS0gYS9sdH5vYnNvbGV0ZS5tNAotKysrIGIvbHR+b2Jzb2xldGUubTQKLUBAIC03LDcgKzcsNyBAQAotICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0gIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00Ci0rIyBzZXJpYWwgNSBsdH5vYnNvbGV0ZS5tNAotIAotICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgotICMKLWRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCi1pbmRleCAwYjM1MmE0NTRkLi43ZWFlYTdkYjczIDEwMDc1NQotLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKLSsrKyBiL29wY29kZXMvY29uZmlndXJlCi1AQCAtNjUwLDYgKzY1MCw5IEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotK2FjX2N0X0FSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03NjMsNiArNzY2LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfd2Vycm9yCi1AQCAtMTQyMyw2ICsxNDI3LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotIAotIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNTExNSw4ICs1MTIxLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTUxNTYsNyArNTE2Miw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU4NDIsOCArNTg0OCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01ODkyLDYgKzU4OTgsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU5MDgsNiArNTk4OCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjA3Niw3ICs2MTYxLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTYyMzAsNiArNjMxNiwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYyNDUsOSArNjM0NiwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjI2Myw3ICs2NTE3LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjI4MywxMSArNjUzNywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MzAzLDcgKzY1NjEsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjMyMiw2ICs2NTgwLDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02MzMzLDE2ICs2NTk1LDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSAKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0gCi0gCi0gCi1AQCAtNjY4NCw4ICs3MDAyLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02NzIxLDYgKzcwMzksNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjc2Miw2ICs3MDgxLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY3NzMsNyArNzEwNCw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY3OTksOCArNzEzMCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY4MTAsOCArNzE0MSw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTY4NDgsNiArNzE3OSwxNiBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotIAotIAotIAotQEAgLTY4NjksNiArNzIxMCw0NSBAQCBmaQotIAotIAotIAotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotKwotKwotKwotKwotKwotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7Ci1AQCAtNzA3NSw2ICs3NDU1LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03NjM4LDYgKzgxMzUsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzgwMyw3ICs4MzAyLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTc4OTIsNyArODM5Miw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODE5MCw4ICs4NjkwLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MzU3LDYgKzg4NTUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NDE5LDcgKzg5MjMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODQ3NiwxMyArODk4MCwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04NTQzLDYgKzkwNTEsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04ODkzLDcgKzk0MDYsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04OTkyLDEyICs5NTA2LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTkwMTEsOCArOTUyNSw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05MDMwLDggKzk1NDQsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTA3Nyw4ICs5NTkxLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkyMDgsNyArOTcyMiwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MjIxLDIyICs5NzQxLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MjQ4LDcgKzk3NzUsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkyNjEsMjIgKzk3OTQsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05MzIxLDIwICs5ODYxLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTM5NSw3ICs5OTc4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTQwMyw3ICs5OTg2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTQxOSw3ICsxMDAwMiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05NDQzLDEwICsxMDAyNiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk1MjUsMjMgKzEwMTA4LDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NjI2LDcgKzEwMjIyLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTY0NSw5ICsxMDI0MSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDIyMyw4ICsxMDgxOSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDI1NywxMyArMTA4NTQsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwMzU1LDcgKzExMDEwLDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExMTk1LDEwICsxMTg1MCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMzAxLDEwICsxMTk1NiwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyNTQzLDcgKzEzMTk4LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAjIHNpbmNlIGxpYmJmZCBtYXkgbm90IHB1bGwgaW4gdGhlIGVudGlyZXR5IG9mIGxpYmliZXJ0eS4KLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KLS0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgotKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgotICAgZmkKLSAKLSAgIGNhc2UgIiR7aG9zdH0iIGluCi1AQCAtMTM1MTgsMTMgKzE0MTczLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM1MzksMTQgKzE0MjAxLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzNTc5LDEyICsxNDI0NCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzYzOSw4ICsxNDMwNCwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTM2NTAsMTIgKzE0MzIwLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMzY3MSw3ICsxNDM0Myw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzNzA3LDYgKzE0Mzc4LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xNDQ2Myw3ICsxNTEzNSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQ1NjYsMTkgKzE1MjM5LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE0NjA4LDYgKzE1MzA0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE0NjE3LDYgKzE1MzE5LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNDczMSwxMiArMTU0MzYsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTQ4MjMsOSArMTU1MjgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNDg0MSw2ICsxNTU0Myw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTQ4NzMsMjEwICsxNTU3OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotaW5kZXggYjlmNWViOGE0Zi4uYTMxYjY2YTJmMCAxMDA2NDQKLS0tLSBhL29wY29kZXMvY29uZmlndXJlLmFjCi0rKysgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotQEAgLTE2Nyw3ICsxNjcsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSBjaGFuZ2VxdW90ZShbLF0pZG5sCi0gICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KLS0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgotKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgotICAgZmkKLSAKLSAgIGNhc2UgIiR7aG9zdH0iIGluCi1kaWZmIC0tZ2l0IGEvemxpYi9jb25maWd1cmUgYi96bGliL2NvbmZpZ3VyZQotaW5kZXggYmVkOWUzZWEyYi4uY2FlZjBiNjc0ZSAxMDA3NTUKLS0tLSBhL3psaWIvY29uZmlndXJlCi0rKysgYi96bGliL2NvbmZpZ3VyZQotQEAgLTYxNCw4ICs2MTQsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzM3LDYgKzc0MCw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9ob3N0X3NoYXJlZAotICcKLUBAIC0xMzg1LDYgKzEzODksOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gCi0gU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0gICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLUBAIC0zOTEwLDggKzM5MTYsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtMzk1MSw3ICszOTU3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNDc2Nyw4ICs0NzczLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTQ4MTcsNiArNDgyMyw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNDgzMyw2ICs0OTEzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC01MDAxLDcgKzUwODYsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNTE1NSw2ICs1MjQxLDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNTE3MCw5ICs1MjcxLDE2MyBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01MTg4LDcgKzU0NDMsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC01MjA4LDExICs1NDYzLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTUyMjgsNyArNTQ4Nyw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC01MjQ3LDYgKzU1MDYsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTUyNTgsMTYgKzU1MjEsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC01NjA5LDggKzU5MjgsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTU2NDYsNiArNTk2NSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC01Njg3LDYgKzYwMDcsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNTY5OCw3ICs2MDMwLDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNTcyNCw4ICs2MDU2LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNTczNSw4ICs2MDY3LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNTc3Myw2ICs2MTA1LDE5IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNTc5Myw2ICs2MTM4LDQxIEBAIGZpCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0rCi0gCi0gCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCi1AQCAtNjAwNCw2ICs2Mzg0LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC02NTcwLDYgKzcwNjcsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzAzMyw3ICs3NTMyLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTcxMjIsNyArNzYyMiw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNzQyMCw4ICs3OTIwLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC03NTg3LDYgKzgwODUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC03NjQ5LDcgKzgxNTMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtNzcwNiwxMyArODIxMCwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC03NzczLDYgKzgyODEsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04MTIzLDcgKzg2MzYsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04MjIyLDEyICs4NzM2LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTgyNDEsOCArODc1NSw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC04MjYwLDggKzg3NzQsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODMwNyw4ICs4ODIxLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTg0MzgsNyArODk1MiwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODQ1NCwyMiArODk3NCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtODQ4MSw3ICs5MDA4LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODQ5NywyMiArOTAzMCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTg1NTcsMjAgKzkwOTcsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC04NjMxLDcgKzkyMTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC04NjM5LDcgKzkyMjIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC04NjU1LDcgKzkyMzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtODY3OSwxMCArOTI2MiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTg3NjEsMjYgKzkzNDQsMzkgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtODg2NSw3ICs5NDYxLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtODg4NCw5ICs5NDgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTk0NjIsOCArMTAwNTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtOTQ5NiwxMyArMTAwOTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTk1OTQsNyArMTAyNDksNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTA0NTIsMTAgKzExMTA3LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTA1NTgsMTAgKzExMjEzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE5OTIsMTMgKzEyNjQ3LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIwMTMsMTQgKzEyNjc1LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMDUzLDEyICsxMjcxOCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjExMyw4ICsxMjc3OCwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTIxMjQsMTIgKzEyNzk0LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMjE0NSw3ICsxMjgxNyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEyMTgxLDYgKzEyODUyLDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xMjc3MCw3ICsxMzQ0Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTI4NzMsMTkgKzEzNTQ2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTEyOTE1LDYgKzEzNjExLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTEyOTI0LDYgKzEzNjI2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xMzAzOCwxMiArMTM3NDMsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTMxMzAsOSArMTM4MzUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xMzE0OCw2ICsxMzg1MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTMxODAsMjEwICsxMzg4NSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ5MjI1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA5YzMxM2U4YTE1YTdlN2M1YzBmMjkwNmUzMjE4ZWQyMTE1NjNhYzJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozNzoxMCArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzE1XSBBZGQgdGhlIGFybXY1ZSBhcmNoaXRlY3R1cmUgdG8gYmludXRpbHMKLQotQmludXRpbHMgaGFzIGEgY29tbWVudCB0aGF0IGluZGljYXRlcyBpdCBpcyBzdXBwb3NlZCB0byBtYXRjaCBnY2MgZm9yCi1hbGwgb2YgdGhlIHN1cHBvcnQgIi1tYXJjaD0iIHNldHRpbmdzLCBidXQgaXQgd2FzIGxhY2tpbmcgdGhlIGFybXY1ZSBzZXR0aW5nLgotVGhpcyB3YXMgYSBzaW1wbGUgd2F5IHRvIGFkZCBpdCwgYXMgdGh1bWIgaW5zdHJ1Y3Rpb25zIHNob3VsZG4ndCBiZSBnZW5lcmF0ZWQKLWJ5IHRoZSBjb21waWxlciBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi1VcHN0cmVhbSBtYWludGFpbmVyIGluZGljYXRlZCB0aGF0IHdlIHNob3VsZCBub3QgYmUgdXNpbmcgYXJtdjVlLCBldmVuCi10aG91Z2ggaXQgaXMgYSBsZWdhbCBhcmNoaWN0dXJlIGRlZmluZWQgYnkgb3VyIGdjYy4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdhcy9jb25maWcvdGMtYXJtLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtYXJtLmMgYi9nYXMvY29uZmlnL3RjLWFybS5jCi1pbmRleCA2MGJkYTUxMDcwLi5lYjZkMGFmZDZlIDEwMDY0NAotLS0tIGEvZ2FzL2NvbmZpZy90Yy1hcm0uYwotKysrIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwotQEAgLTI1NjMzLDYgKzI1NjMzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQotICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0IiwJQVJNX0FSQ0hfVjRULAkgRlBVX0FSQ0hfRlBBKSwKLSAgIEFSTV9BUkNIX09QVCAoImFybXY0dHhtIiwJQVJNX0FSQ0hfVjRUeE0sCSBGUFVfQVJDSF9GUEEpLAotICAgQVJNX0FSQ0hfT1BUICgiYXJtdjUiLAlBUk1fQVJDSF9WNSwJIEZQVV9BUkNIX1ZGUCksCi0rICBBUk1fQVJDSF9PUFQgKCJhcm12NWUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKLSAgIEFSTV9BUkNIX09QVCAoImFybXY1dCIsCUFSTV9BUkNIX1Y1VCwJIEZQVV9BUkNIX1ZGUCksCi0gICBBUk1fQVJDSF9PUFQgKCJhcm12NXR4bSIsCUFSTV9BUkNIX1Y1VHhNLAkgRlBVX0FSQ0hfVkZQKSwKLSAgIEFSTV9BUkNIX09QVCAoImFybXY1dGUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBhMjJiNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gMzMxNDQzYTg3YTMxZWM1MDRlNTY1MmZjMDk5ZDkxMjlhOWE0ZGViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xNV0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nCisgaW5zdGFsbGF0aW9uIGxvY2F0aW9uCisKK1RoYW5rcyB0byBSUCBmb3IgaGVscGluZyBmaW5kIHRoZSBzb3VyY2UgY29kZSBjYXVzaW5nIHRoZSBpc3N1ZS4KKworMjAxMC8wOC8xMworTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmliZXJ0eS9NYWtlZmlsZS5pbiB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCitpbmRleCAyNWNmYTI5YWQ1Li5jZTY3YTcxMGUzIDEwMDY0NAorLS0tIGEvbGliaWJlcnR5L01ha2VmaWxlLmluCisrKysgYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KK0BAIC0zNjQsNyArMzY0LDggQEAgaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorICMgbXVsdGlsaWItc3BlY2lmaWMgZmxhZ3MsIGl0J3Mgb3ZlcnJpZGRlbiBieSBGTEFHU19UT19QQVNTIGZyb20gdGhlCisgIyBkZWZhdWx0IG11bHRpbGliLCBzbyB3ZSBoYXZlIHRvIHRha2UgQ0ZMQUdTIGludG8gYWNjb3VudCBhcyB3ZWxsLAorICMgc2luY2UgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIG11bHRpbGliIGZsYWdzLgorLU1VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisrI01VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisrTVVMVElPU0RJUiA9ICIiCisgaW5zdGFsbF90b19saWJkaXI6IGFsbAorIAlpZiB0ZXN0IC1uICIke3RhcmdldF9oZWFkZXJfZGlyfSI7IHRoZW4gXAorIAkJJHtta2luc3RhbGxkaXJzfSAkKERFU1RESVIpJChsaWJkaXIpLyQoTVVMVElPU0RJUik7IFwKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNDA1OTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDJiZTliNDRhNGEzMDhlM2VhNDJhMDI3YzRjMzIxMTE3MGYxMGM5YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM5OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIGRvbid0IGxldCB0aGUgZGlzdHJvIGNvbXBpbGVyIHBvaW50IHRvIHRoZSB3cm9uZwotIGluc3RhbGxhdGlvbiBsb2NhdGlvbgotCi1UaGFua3MgdG8gUlAgZm9yIGhlbHBpbmcgZmluZCB0aGUgc291cmNlIGNvZGUgY2F1c2luZyB0aGUgaXNzdWUuCi0KLTIwMTAvMDgvMTMKLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJpYmVydHkvTWFrZWZpbGUuaW4gfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbiBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotaW5kZXggMGZmOWU0NWU0NS4uNDJjMzI2NDJiMiAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotKysrIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCi1AQCAtMzY2LDcgKzM2Niw4IEBAIGluc3RhbGwtc3RyaXA6IGluc3RhbGwKLSAjIG11bHRpbGliLXNwZWNpZmljIGZsYWdzLCBpdCdzIG92ZXJyaWRkZW4gYnkgRkxBR1NfVE9fUEFTUyBmcm9tIHRoZQotICMgZGVmYXVsdCBtdWx0aWxpYiwgc28gd2UgaGF2ZSB0byB0YWtlIENGTEFHUyBpbnRvIGFjY291bnQgYXMgd2VsbCwKLSAjIHNpbmNlIGl0IHdpbGwgYmUgcGFzc2VkIHRoZSBtdWx0aWxpYiBmbGFncy4KLS1NVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotKyNNVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotK01VTFRJT1NESVIgPSAiIgotIGluc3RhbGxfdG9fbGliZGlyOiBhbGwKLSAJaWYgdGVzdCAtbiAiJHt0YXJnZXRfaGVhZGVyX2Rpcn0iOyB0aGVuIFwKLSAJCSR7bWtpbnN0YWxsZGlyc30gJChERVNURElSKSQobGliZGlyKS8kKE1VTFRJT1NESVIpOyBcCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZTI1NzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApAQCAtMCwwICsxLDI3MyBAQAorRnJvbSAwYTRhZmRjZjA3MDBlZmQ0NTk2MzU2OGUyZDAwNDkxMjdjZGY0NDM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xNV0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCisKKzIwMDgtMDctMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgbGQvCisgICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkLnRleGluZm8gKC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgorICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKKyAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQorICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAorICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgorICAgIChsZF9vcHRpb25zKTogQWRkIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KKyAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgorCisyMDA3LTA2LTEzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgIGxkLworICAgICogY29uZmlnLmluOiBSZWdlbmVyYXRlLgorICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZC50ZXhpbmZvICgtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCisgICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKKyAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKKyAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KKyAgICAobGRfb3B0aW9ucyk6IEFkZCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCisgICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KKworMjAwNy0wNC0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICBNZXJnZSBmcm9tIFNvdXJjZXJ5IEcrKyBiaW51dGlscyAyLjE3OgorCisgICAgMjAwNy0wMy0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisgICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPi4KKyAgICBsZC8KKyAgICAqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IE5ldyBvcHRpb24uCisgICAgKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IElmCisgICAgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgZGVmaW5lZCwgd2FybiBmb3IgdXNlIG9mIC9saWIsCisgICAgL3Vzci9saWIsIC91c3IvbG9jYWwvbGliIG9yIC91c3IvWDExUjYvbGliLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGQvY29uZmlnLmluICAgIHwgIDMgKysrCisgbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKworIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKKyBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKworIGxkL2xkLnRleGluZm8gICB8IDEyICsrKysrKysrKysrKworIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCisgbGQvbGRsZXguaCAgICAgIHwgIDIgKysKKyBsZC9sZG1haW4uYyAgICAgfCAgMiArKworIGxkL2xleHN1cC5jICAgICB8IDE2ICsrKysrKysrKysrKysrKysKKyA5IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xkL2NvbmZpZy5pbiBiL2xkL2NvbmZpZy5pbgoraW5kZXggYTg0Njc0M2RhNi4uZGYzY2Q1ZmI2MCAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZy5pbgorKysrIGIvbGQvY29uZmlnLmluCitAQCAtMjcsNiArMjcsOSBAQAorICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KKyAjdW5kZWYgRU5BQkxFX05MUworIAorKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzICovCisrI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrCisgLyogQWRkaXRpb25hbCBleHRlbnNpb24gYSBzaGFyZWQgb2JqZWN0IG1pZ2h0IGhhdmUuICovCisgI3VuZGVmIEVYVFJBX1NITElCX0VYVEVOU0lPTgorIAorZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQoraW5kZXggNGU3MTUxMWJkMS4uNzFjNmFkMWZkMSAxMDA3NTUKKy0tLSBhL2xkL2NvbmZpZ3VyZQorKysrIGIvbGQvY29uZmlndXJlCitAQCAtNzg5LDYgKzc4OSw3IEBAIHdpdGhfbGliX3BhdGgKKyBlbmFibGVfdGFyZ2V0cworIGVuYWJsZV82NF9iaXRfYmZkCisgd2l0aF9zeXNyb290CisrZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKyBlbmFibGVfZ29sZAorIGVuYWJsZV9nb3QKKyBlbmFibGVfY29tcHJlc3NlZF9kZWJ1Z19zZWN0aW9ucworQEAgLTE0NDgsNiArMTQ0OSw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgorICAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlcworICAgLS1lbmFibGUtdGFyZ2V0cyAgICAgICAgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCisgICAtLWVuYWJsZS02NC1iaXQtYmZkICAgICA2NC1iaXQgc3VwcG9ydCAob24gaG9zdHMgd2l0aCBuYXJyb3dlciB3b3JkIHNpemVzKQorKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcworICAgLS1lbmFibGUtZ29sZFs9QVJHXSAgICAgYnVpbGQgZ29sZCBbQVJHPXtkZWZhdWx0LHllcyxub31dCisgICAtLWVuYWJsZS1nb3Q9PHR5cGU+ICAgICBHT1QgaGFuZGxpbmcgc2NoZW1lICh0YXJnZXQsIHNpbmdsZSwgbmVnYXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWdvdCkKK0BAIC0xNjMxNSw2ICsxNjMxOCwxOSBAQCBmaQorIAorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrZWxzZQorKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KKytmaQorKworK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysKKyskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKKysKKytmaQorKworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nb2xkIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke2VuYWJsZV9nb2xkK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIGVuYWJsZXZhbD0kZW5hYmxlX2dvbGQ7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKK2luZGV4IDAwMDgwZjg1ZmQuLjNhYTk4ZTM3ZmIgMTAwNjQ0CistLS0gYS9sZC9jb25maWd1cmUuYWMKKysrKyBiL2xkL2NvbmZpZ3VyZS5hYworQEAgLTk1LDYgKzk1LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQorIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVCkKKyBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FKQorIAorK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKSwsCisrICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKKysgICAgICAgWzFdLAorKyAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKQorK2ZpCisrCisgZG5sIFVzZSAtLWVuYWJsZS1nb2xkIHRvIGRlY2lkZSBpZiB0aGlzIGxpbmtlciBzaG91bGQgYmUgdGhlIGRlZmF1bHQuCisgZG5sICJpbnN0YWxsX2FzX2RlZmF1bHQiIGlzIHNldCB0byBmYWxzZSBpZiBnb2xkIGlzIHRoZSBkZWZhdWx0IGxpbmtlci4KKyBkbmwgImluc3RhbGxlZF9saW5rZXIiIGlzIHRoZSBpbnN0YWxsZWQgQkZEIGxpbmtlciBuYW1lLgorZGlmZiAtLWdpdCBhL2xkL2xkLmggYi9sZC9sZC5oCitpbmRleCBjNmZhMTI0N2YwLi4wMWMzNzM0OThmIDEwMDY0NAorLS0tIGEvbGQvbGQuaAorKysrIGIvbGQvbGQuaAorQEAgLTE3NCw2ICsxNzQsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAgICAgIGluIHRoZSBsaW5rZXIgc2NyaXB0LiAgKi8KKyAgIGJmZF9ib29sZWFuIGZvcmNlX2dyb3VwX2FsbG9jYXRpb247CisgCisrICAvKiBJZiBUUlVFICh0aGUgZGVmYXVsdCkgd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbgorKyAgICAgY3Jvc3MgbGlua2luZy4gICovCisrICBiZmRfYm9vbGVhbiBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworKworKyAgLyogSWYgVFJVRSAoZGVmYXVsdCBGQUxTRSkgZ2l2ZSBhbiBlcnJvciBmb3IgdXNlcyBvZiBzeXN0ZW0KKysgICAgIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZyBpbnN0ZWFkIG9mIGEgd2FybmluZy4gICovCisrICBiZmRfYm9vbGVhbiBlcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworKworICAgLyogQmlnIG9yIGxpdHRsZSBlbmRpYW4gYXMgc2V0IG9uIGNvbW1hbmQgbGluZS4gICovCisgICBlbnVtIGVuZGlhbl9lbnVtIGVuZGlhbjsKKyAKK2RpZmYgLS1naXQgYS9sZC9sZC50ZXhpbmZvIGIvbGQvbGQudGV4aW5mbworaW5kZXggZWJlN2U3YjdiZC4uMzNhYTJjNjJmYSAxMDA2NDQKKy0tLSBhL2xkL2xkLnRleGluZm8KKysrKyBiL2xkL2xkLnRleGluZm8KK0BAIC0yNDgwLDYgKzI0ODAsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCisgCisgUGFzc2luZyBAY29kZXtub25lfSBmb3IgQHZhcntzdHlsZX0gZGlzYWJsZXMgdGhlIHNldHRpbmcgZnJvbSBhbnkKKyBAY29kZXstLWJ1aWxkLWlkfSBvcHRpb25zIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZS4KKysKKytAa2luZGV4IC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BpdGVtIC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBzdWNoIGFzCisrQGZpbGV7L3Vzci9saWJ9IHdoZW4gY3Jvc3MgbGlua2luZy4gIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UKKytpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaCBkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0CisrbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KKysKKytAa2luZGV4IC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BpdGVtIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0dpdmUgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHdhcm5pbmcgZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcKKytzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nLgorIEBlbmQgdGFibGUKKyAKKyBAYyBtYW4gZW5kCitkaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYworaW5kZXggM2IzN2EwYTNlMi4uNWM4NWIwMTg0OSAxMDA2NDQKKy0tLSBhL2xkL2xkZmlsZS5jCisrKysgYi9sZC9sZGZpbGUuYworQEAgLTExNiw2ICsxMTYsMjMgQEAgbGRmaWxlX2FkZF9saWJyYXJ5X3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGJmZF9ib29sZWFuIGNtZGxpbmUpCisgICAgIG5ld19kaXJzLT5uYW1lID0gY29uY2F0IChsZF9zeXNyb290LCBuYW1lICsgc3RybGVuICgiJFNZU1JPT1QiKSwgKGNvbnN0IGNoYXIgKikgTlVMTCk7CisgICBlbHNlCisgICAgIG5ld19kaXJzLT5uYW1lID0geHN0cmR1cCAobmFtZSk7CisrCisrI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrICBpZiAoY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKysgICYmICgoIXN0cm5jbXAgKG5hbWUsICIvbGliIiwgNCkpCisrICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9saWIiLCA4KSkKKysgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xvY2FsL2xpYiIsIDE0KSkKKysgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL1gxMVI2L2xpYiIsIDE0KSkpKQorKyAgIHsKKysgICAgIGlmIChjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKKysgICAgICAgZWluZm8gKF8oIiVYJVA6IGVycm9yOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKKysgICAgIGVsc2UKKysgICAgICAgZWluZm8gKF8oIiVQOiB3YXJuaW5nOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKKysgICB9CisrI2VuZGlmCisrCisgfQorIAorIC8qIFRyeSB0byBvcGVuIGEgQkZEIGZvciBhIGxhbmdfaW5wdXRfc3RhdGVtZW50LiAgKi8KK2RpZmYgLS1naXQgYS9sZC9sZGxleC5oIGIvbGQvbGRsZXguaAoraW5kZXggNWFhN2Y2YmMzZS4uY2I2NTVlMDM5OSAxMDA2NDQKKy0tLSBhL2xkL2xkbGV4LmgKKysrKyBiL2xkL2xkbGV4LmgKK0BAIC0xNDcsNiArMTQ3LDggQEAgZW51bSBvcHRpb25fdmFsdWVzCisgICBPUFRJT05fUkVRVUlSRV9ERUZJTkVEX1NZTUJPTCwKKyAgIE9QVElPTl9PUlBIQU5fSEFORExJTkcsCisgICBPUFRJT05fRk9SQ0VfR1JPVVBfQUxMT0NBVElPTiwKKysgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAorKyAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCisgfTsKKyAKKyAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KK2RpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCitpbmRleCAyYjA5ZjIwNDEzLi44OWUyYTNhODA1IDEwMDY0NAorLS0tIGEvbGQvbGRtYWluLmMKKysrKyBiL2xkL2xkbWFpbi5jCitAQCAtMjYxLDYgKzI2MSw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgIGNvbW1hbmRfbGluZS53YXJuX21pc21hdGNoID0gVFJVRTsKKyAgIGNvbW1hbmRfbGluZS53YXJuX3NlYXJjaF9taXNtYXRjaCA9IFRSVUU7CisgICBjb21tYW5kX2xpbmUuY2hlY2tfc2VjdGlvbl9hZGRyZXNzZXMgPSAtMTsKKysgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKKysgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7CisgCisgICAvKiBXZSBpbml0aWFsaXplIERFTUFOR0xJTkcgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICBDT0xMRUNUX05PX0RFTUFOR0xFLiAgVGhlIGdjYyBjb2xsZWN0MiBwcm9ncmFtIHdpbGwgZGVtYW5nbGUgdGhlCitkaWZmIC0tZ2l0IGEvbGQvbGV4c3VwLmMgYi9sZC9sZXhzdXAuYworaW5kZXggZWZmYTI3N2IxNi4uZTQ5Mjk2MDdlOSAxMDA2NDQKKy0tLSBhL2xkL2xleHN1cC5jCisrKysgYi9sZC9sZXhzdXAuYworQEAgLTUzOCw2ICs1MzgsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KKyAgIHsgeyJvcnBoYW4taGFuZGxpbmciLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX09SUEhBTl9IQU5ETElOR30sCisgICAgICdcMCcsIE5fKCI9TU9ERSIpLCBOXygiQ29udHJvbCBob3cgb3JwaGFuIHNlY3Rpb25zIGFyZSBoYW5kbGVkLiIpLAorICAgICBUV09fREFTSEVTIH0sCisrICB7IHsibm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAorKyAgICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVN9LAorKyAgICAnXDAnLCBOVUxMLCBOXygiRG8gbm90IHdhcm4gZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCisrICAgIFRXT19EQVNIRVMgfSwKKysgIHsgeyJlcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCisrICAgICsgICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKKysgICAgJ1wwJywgTlVMTCwgTl8oIkdpdmUgYW4gZXJyb3IgZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCisrICAgIFRXT19EQVNIRVMgfSwKKyB9OworIAorICNkZWZpbmUgT1BUSU9OX0NPVU5UIEFSUkFZX1NJWkUgKGxkX29wdGlvbnMpCitAQCAtMTU2OCw2ICsxNTc2LDE0IEBAIHBhcnNlX2FyZ3MgKHVuc2lnbmVkIGFyZ2MsIGNoYXIgKiphcmd2KQorIAkgICAgZWluZm8gKF8oIiVQJUY6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIgorIAkJICAgICAiIFwiLS1vcnBoYW4taGFuZGxpbmdcIlxuIikpOworIAkgIGJyZWFrOworKworKwljYXNlIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgorKwkgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7CisrCSAgYnJlYWs7CisrCisrCWNhc2UgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6CisrCSAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBUUlVFOworKwkgIGJyZWFrOworIAl9CisgICAgIH0KKyAKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTYyNDJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gODhmYWMwOGYxYzQ3MmM2MTJmMzgxY2JiOTQwODc1NmYyZjU4YjRmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDI6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xNV0gRml4IHJwYXRoIGluIGxpYnRvb2wgd2hlbiBzeXNyb290IGlzIGVuYWJsZWQKKworRW5hYmxpbmcgc3lzcm9vdCBzdXBwb3J0IGluIGxpYnRvb2wgZXhwb3NlZCBhIGJ1ZyB3aGVyZSB0aGUgZmluYWwKK2xpYnJhcnkgaGFkIGFuIFJQQVRIIGVuY29kZWQgaW50byBpdCB3aGljaCBzdGlsbCBwb2ludGVkIHRvIHRoZQorc3lzcm9vdC4gVGhpcyB3b3JrcyBhcm91bmQgdGhlIGlzc3VlIHVudGlsIGl0IGdldHMgc29ydGVkIG91dAordXBzdHJlYW0uCisKK0ZpeCBzdWdnZXN0ZWQgYnkgUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA3MGU4NTZlMDY1Li4xMWVlNjg0Y2NjIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC04MDM1LDkgKzgwMzUsMTEgQEAgRU9GCisgCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbworIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisrCQkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorKwkJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCisrCQkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorLQkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCistCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCisgCQllbHNlCitAQCAtODc3MCw2ICs4NzcyLDEwIEBAIEVPRgorICAgICAgIGhhcmRjb2RlX2xpYmRpcnM9CisgICAgICAgZm9yIGxpYmRpciBpbiAkY29tcGlsZV9ycGF0aCAkZmluYWxpemVfcnBhdGg7IGRvCisgCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisrCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgorKwkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NzRhZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzMgKzAsMCBAQAotRnJvbSBiMWFiMTdhYmU0MTI4Njg0ZjE5Nzc1NDQ4NTQ1MTc2ZmIyYTVlMjdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xNV0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCi0KLTIwMDgtMDctMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgbGQvCi0gICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkLnRleGluZm8gKC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgotICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKLSAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQotICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAotICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgotICAgIChsZF9vcHRpb25zKTogQWRkIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KLSAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgotCi0yMDA3LTA2LTEzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgIGxkLwotICAgICogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZC50ZXhpbmZvICgtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCi0gICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKLSAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKLSAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KLSAgICAobGRfb3B0aW9ucyk6IEFkZCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCi0gICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KLQotMjAwNy0wNC0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICBNZXJnZSBmcm9tIFNvdXJjZXJ5IEcrKyBiaW51dGlscyAyLjE3OgotCi0gICAgMjAwNy0wMy0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPi4KLSAgICBsZC8KLSAgICAqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IE5ldyBvcHRpb24uCi0gICAgKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IElmCi0gICAgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgZGVmaW5lZCwgd2FybiBmb3IgdXNlIG9mIC9saWIsCi0gICAgL3Vzci9saWIsIC91c3IvbG9jYWwvbGliIG9yIC91c3IvWDExUjYvbGliLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gbGQvY29uZmlnLmluICAgIHwgIDMgKysrCi0gbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKLSBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKwotIGxkL2xkLnRleGluZm8gICB8IDEyICsrKysrKysrKysrKwotIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCi0gbGQvbGRsZXguaCAgICAgIHwgIDIgKysKLSBsZC9sZG1haW4uYyAgICAgfCAgMiArKwotIGxkL2xleHN1cC5jICAgICB8IDE2ICsrKysrKysrKysrKysrKysKLSA5IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZy5pbiBiL2xkL2NvbmZpZy5pbgotaW5kZXggMmM2ZDY5OGI2Yy4uZDNjYjdlODgyZCAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZy5pbgotKysrIGIvbGQvY29uZmlnLmluCi1AQCAtMTcsNiArMTcsOSBAQAotICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KLSAjdW5kZWYgRU5BQkxFX05MUwotIAotKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzICovCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rCi0gLyogQWRkaXRpb25hbCBleHRlbnNpb24gYSBzaGFyZWQgb2JqZWN0IG1pZ2h0IGhhdmUuICovCi0gI3VuZGVmIEVYVFJBX1NITElCX0VYVEVOU0lPTgotIAotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQotaW5kZXggNDI3N2I3NGJhZC4uNjMxMDk2NDRiNiAxMDA3NTUKLS0tLSBhL2xkL2NvbmZpZ3VyZQotKysrIGIvbGQvY29uZmlndXJlCi1AQCAtNzkzLDYgKzc5Myw3IEBAIHdpdGhfbGliX3BhdGgKLSBlbmFibGVfdGFyZ2V0cwotIGVuYWJsZV82NF9iaXRfYmZkCi0gd2l0aF9zeXNyb290Ci0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfZ29sZAotIGVuYWJsZV9nb3QKLSBlbmFibGVfY29tcHJlc3NlZF9kZWJ1Z19zZWN0aW9ucwotQEAgLTE0NTAsNiArMTQ1MSw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlcwotICAgLS1lbmFibGUtdGFyZ2V0cyAgICAgICAgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCi0gICAtLWVuYWJsZS02NC1iaXQtYmZkICAgICA2NC1iaXQgc3VwcG9ydCAob24gaG9zdHMgd2l0aCBuYXJyb3dlciB3b3JkIHNpemVzKQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtZ29sZFs9QVJHXSAgICAgYnVpbGQgZ29sZCBbQVJHPXtkZWZhdWx0LHllcyxub31dCi0gICAtLWVuYWJsZS1nb3Q9PHR5cGU+ICAgICBHT1QgaGFuZGxpbmcgc2NoZW1lICh0YXJnZXQsIHNpbmdsZSwgbmVnYXRpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWdvdCkKLUBAIC0xNjMxNCw2ICsxNjMxNywxOSBAQCBmaQotIAotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nb2xkIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV9nb2xkK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIGVuYWJsZXZhbD0kZW5hYmxlX2dvbGQ7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKLWluZGV4IDM2YTlmNTA4M2EuLjQ3ZjFkMzNmYTUgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUuYWMKLSsrKyBiL2xkL2NvbmZpZ3VyZS5hYwotQEAgLTk1LDYgKzk1LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQotIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVCkKLSBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKLSsgICAgICAgWzFdLAotKyAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKQotK2ZpCi0rCi0gZG5sIFVzZSAtLWVuYWJsZS1nb2xkIHRvIGRlY2lkZSBpZiB0aGlzIGxpbmtlciBzaG91bGQgYmUgdGhlIGRlZmF1bHQuCi0gZG5sICJpbnN0YWxsX2FzX2RlZmF1bHQiIGlzIHNldCB0byBmYWxzZSBpZiBnb2xkIGlzIHRoZSBkZWZhdWx0IGxpbmtlci4KLSBkbmwgImluc3RhbGxlZF9saW5rZXIiIGlzIHRoZSBpbnN0YWxsZWQgQkZEIGxpbmtlciBuYW1lLgotZGlmZiAtLWdpdCBhL2xkL2xkLmggYi9sZC9sZC5oCi1pbmRleCAxMDRiYjhlMjM3Li43NGM5MTRiZGQ1IDEwMDY0NAotLS0tIGEvbGQvbGQuaAotKysrIGIvbGQvbGQuaAotQEAgLTE3Miw2ICsxNzIsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIC8qIElmIHNldCwgZGlzcGxheSB0aGUgdGFyZ2V0IG1lbW9yeSB1c2FnZSAocGVyIG1lbW9yeSByZWdpb24pLiAgKi8KLSAgIGJmZF9ib29sZWFuIHByaW50X21lbW9yeV91c2FnZTsKLSAKLSsgIC8qIElmIFRSVUUgKHRoZSBkZWZhdWx0KSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuCi0rICAgICBjcm9zcyBsaW5raW5nLiAgKi8KLSsgIGJmZF9ib29sZWFuIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rCi0rICAvKiBJZiBUUlVFIChkZWZhdWx0IEZBTFNFKSBnaXZlIGFuIGVycm9yIGZvciB1c2VzIG9mIHN5c3RlbQotKyAgICAgZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nIGluc3RlYWQgb2YgYSB3YXJuaW5nLiAgKi8KLSsgIGJmZF9ib29sZWFuIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rCi0gICAvKiBCaWcgb3IgbGl0dGxlIGVuZGlhbiBhcyBzZXQgb24gY29tbWFuZCBsaW5lLiAgKi8KLSAgIGVudW0gZW5kaWFuX2VudW0gZW5kaWFuOwotIAotZGlmZiAtLWdpdCBhL2xkL2xkLnRleGluZm8gYi9sZC9sZC50ZXhpbmZvCi1pbmRleCBkMzkzYWNkZDk0Li5iYTk5NWIxZTNhIDEwMDY0NAotLS0tIGEvbGQvbGQudGV4aW5mbwotKysrIGIvbGQvbGQudGV4aW5mbwotQEAgLTI0MDMsNiArMjQwMywxOCBAQCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG9yaWdpbmFsIGxpbmtlZCBmaWxlIGRvZXMgbm90IGNoYW5nZS4KLSAKLSBQYXNzaW5nIEBjb2Rle25vbmV9IGZvciBAdmFye3N0eWxlfSBkaXNhYmxlcyB0aGUgc2V0dGluZyBmcm9tIGFueQotIEBjb2Rley0tYnVpbGQtaWR9IG9wdGlvbnMgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lLgotKwotK0BraW5kZXggLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQGl0ZW0gLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIHN1Y2ggYXMKLStAZmlsZXsvdXNyL2xpYn0gd2hlbiBjcm9zcyBsaW5raW5nLiAgVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZQotK2luIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoIGRpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QKLStsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQgc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgotKwotK0BraW5kZXggLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQGl0ZW0gLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rR2l2ZSBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgd2FybmluZyBmb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZwotK3N5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcuCi0gQGVuZCB0YWJsZQotIAotIEBjIG1hbiBlbmQKLWRpZmYgLS1naXQgYS9sZC9sZGZpbGUuYyBiL2xkL2xkZmlsZS5jCi1pbmRleCAwOTQzYmIyZGZhLi45NTg3NGM3NWRlIDEwMDY0NAotLS0tIGEvbGQvbGRmaWxlLmMKLSsrKyBiL2xkL2xkZmlsZS5jCi1AQCAtMTE0LDYgKzExNCwyMyBAQCBsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgYmZkX2Jvb2xlYW4gY21kbGluZSkKLSAgICAgbmV3X2RpcnMtPm5hbWUgPSBjb25jYXQgKGxkX3N5c3Jvb3QsIG5hbWUgKyAxLCAoY29uc3QgY2hhciAqKSBOVUxMKTsKLSAgIGVsc2UKLSAgICAgbmV3X2RpcnMtPm5hbWUgPSB4c3RyZHVwIChuYW1lKTsKLSsKLSsjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsgIGlmIChjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotKyAgJiYgKCghc3RybmNtcCAobmFtZSwgIi9saWIiLCA0KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xpYiIsIDgpKQotKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvbG9jYWwvbGliIiwgMTQpKQotKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvWDExUjYvbGliIiwgMTQpKSkpCi0rICAgewotKyAgICAgaWYgKGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQotKyAgICAgICBlaW5mbyAoXygiJVglUDogZXJyb3I6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOwotKyAgICAgZWxzZQotKyAgICAgICBlaW5mbyAoXygiJVA6IHdhcm5pbmc6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOwotKyAgIH0KLSsjZW5kaWYKLSsKLSB9Ci0gCi0gLyogVHJ5IHRvIG9wZW4gYSBCRkQgZm9yIGEgbGFuZ19pbnB1dF9zdGF0ZW1lbnQuICAqLwotZGlmZiAtLWdpdCBhL2xkL2xkbGV4LmggYi9sZC9sZGxleC5oCi1pbmRleCAzZWNhYzJiYzg2Li4zNDExN2Y0M2E1IDEwMDY0NAotLS0tIGEvbGQvbGRsZXguaAotKysrIGIvbGQvbGRsZXguaAotQEAgLTE0Niw2ICsxNDYsOCBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKLSAgIE9QVElPTl9QUklOVF9NRU1PUllfVVNBR0UsCi0gICBPUFRJT05fUkVRVUlSRV9ERUZJTkVEX1NZTUJPTCwKLSAgIE9QVElPTl9PUlBIQU5fSEFORExJTkcsCi0rICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUywKLSsgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAotIH07Ci0gCi0gLyogVGhlIGluaXRpYWwgcGFyc2VyIHN0YXRlcy4gICovCi1kaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYwotaW5kZXggMWU0OGIxYTJkYi4uMjFmMjdiYWNmMSAxMDA2NDQKLS0tLSBhL2xkL2xkbWFpbi5jCi0rKysgYi9sZC9sZG1haW4uYwotQEAgLTI3MCw2ICsyNzAsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICBjb21tYW5kX2xpbmUud2Fybl9taXNtYXRjaCA9IFRSVUU7Ci0gICBjb21tYW5kX2xpbmUud2Fybl9zZWFyY2hfbWlzbWF0Y2ggPSBUUlVFOwotICAgY29tbWFuZF9saW5lLmNoZWNrX3NlY3Rpb25fYWRkcmVzc2VzID0gLTE7Ci0rICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7Ci0rICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOwotIAotICAgLyogV2UgaW5pdGlhbGl6ZSBERU1BTkdMSU5HIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAgICAgQ09MTEVDVF9OT19ERU1BTkdMRS4gIFRoZSBnY2MgY29sbGVjdDIgcHJvZ3JhbSB3aWxsIGRlbWFuZ2xlIHRoZQotZGlmZiAtLWdpdCBhL2xkL2xleHN1cC5jIGIvbGQvbGV4c3VwLmMKLWluZGV4IDBiN2Q0OTc2YWMuLmRlZGMwN2ExNDMgMTAwNjQ0Ci0tLS0gYS9sZC9sZXhzdXAuYwotKysrIGIvbGQvbGV4c3VwLmMKLUBAIC01MzUsNiArNTM1LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGRfb3B0aW9uIGxkX29wdGlvbnNbXSA9Ci0gICB7IHsib3JwaGFuLWhhbmRsaW5nIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9PUlBIQU5fSEFORExJTkd9LAotICAgICAnXDAnLCBOXygiPU1PREUiKSwgTl8oIkNvbnRyb2wgaG93IG9ycGhhbiBzZWN0aW9ucyBhcmUgaGFuZGxlZC4iKSwKLSAgICAgVFdPX0RBU0hFUyB9LAotKyAgeyB7Im5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKLSsgICAgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKLSsgICAgJ1wwJywgTlVMTCwgTl8oIkRvIG5vdCB3YXJuIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAotKyAgICBUV09fREFTSEVTIH0sCi0rICB7IHsiZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAotKyAgICArICAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCi0rICAgICdcMCcsIE5VTEwsIE5fKCJHaXZlIGFuIGVycm9yIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAotKyAgICBUV09fREFTSEVTIH0sCi0gfTsKLSAKLSAjZGVmaW5lIE9QVElPTl9DT1VOVCBBUlJBWV9TSVpFIChsZF9vcHRpb25zKQotQEAgLTE1NjIsNiArMTU3MCwxNCBAQCBwYXJzZV9hcmdzICh1bnNpZ25lZCBhcmdjLCBjaGFyICoqYXJndikKLSAJICAgIGVpbmZvIChfKCIlUCVGOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiIKLSAJCSAgICAgIiBcIi0tb3JwaGFuLWhhbmRsaW5nXCJcbiIpKTsKLSAJICBicmVhazsKLSsKLSsJY2FzZSBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKLSsJICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOwotKwkgIGJyZWFrOwotKwotKwljYXNlIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgotKwkgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKLSsJICBicmVhazsKLSAJfQotICAgICB9Ci0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4N2EyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIDQ5NzY2MGJkYmViNjc4ODc4NjU1M2E1ZDczMzEwNWY3Zjg5OGRjNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQ0OjE0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMTVdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4CisKK3dlIGNoYW5nZSB0aGUgZGVmYXVsdCBlbXVsYXRpb25zIHRvIGJlIE42NCBpbnN0ZWFkIG9mIE4zMgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBPRSBjb25maWd1cmF0aW9uIFNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYmZkL2NvbmZpZy5iZmQgICB8IDggKysrKy0tLS0KKyBsZC9jb25maWd1cmUudGd0IHwgOCArKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAoraW5kZXggZGMyNGFhYmFkNS4uNDUxMTAyNGYyMiAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWcuYmZkCisrKysgYi9iZmQvY29uZmlnLmJmZAorQEAgLTExODYsMTIgKzExODYsMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHM2NCplbC0qLWxpbnV4KikKKy0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9sZV92ZWMKKy0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgorKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfbGVfdmVjCisrICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCisgICAgIDs7CisgICBtaXBzNjQqLSotbGludXgqKQorLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2JlX3ZlYworLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisrICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9iZV92ZWMKKysgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHMqZWwtKi1saW51eCopCisgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAoraW5kZXggNDdjNzE5Y2QwNS4uZmU3YjkyMzhiMiAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC01MzAsMTEgKzUzMCwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcworIG1pcHMqLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVibWlwdnh3b3JrcworIAkJICAgICAgICB0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmVsbWlwdnh3b3JrcyIgOzsKKyBtaXBzKi0qLXdpbmRpc3MpCXRhcmdfZW11bD1lbGYzMm1pcHN3aW5kaXNzIDs7CistbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwbjMyCistCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRsdHNtaXAgZWxmNjRidHNtaXAiCisrbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0bHRzbWlwCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRidHNtaXAiCisgCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7CistbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmJ0c21pcG4zMgorLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIgorK21pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRidHNtaXAKKysJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGx0c21pcCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKKyBtaXBzKmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCisgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAiCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OWVmNTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA0ZmUxM2EzNjk5NzI1M2E1YzkxYmNiMDg2YWViMzkyYWIyMDk1ZjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0MjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDExLzE1XSBGaXggcnBhdGggaW4gbGlidG9vbCB3aGVuIHN5c3Jvb3QgaXMgZW5hYmxlZAotCi1FbmFibGluZyBzeXNyb290IHN1cHBvcnQgaW4gbGlidG9vbCBleHBvc2VkIGEgYnVnIHdoZXJlIHRoZSBmaW5hbAotbGlicmFyeSBoYWQgYW4gUlBBVEggZW5jb2RlZCBpbnRvIGl0IHdoaWNoIHN0aWxsIHBvaW50ZWQgdG8gdGhlCi1zeXNyb290LiBUaGlzIHdvcmtzIGFyb3VuZCB0aGUgaXNzdWUgdW50aWwgaXQgZ2V0cyBzb3J0ZWQgb3V0Ci11cHN0cmVhbS4KLQotRml4IHN1Z2dlc3RlZCBieSBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgMTAgKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDcwZTg1NmUwNjUuLjExZWU2ODRjY2MgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTgwMzUsOSArODAzNSwxMSBAQCBFT0YKLSAJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCi0gCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCi0gCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSsJCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCQkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0rCQkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGxpYmRpciIKLSsJCSAgbGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0tCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLS0JCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0gCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKLSAJCWVsc2UKLUBAIC04NzcwLDYgKzg3NzIsMTAgQEAgRU9GCi0gICAgICAgaGFyZGNvZGVfbGliZGlycz0KLSAgICAgICBmb3IgbGliZGlyIGluICRjb21waWxlX3JwYXRoICRmaW5hbGl6ZV9ycGF0aDsgZG8KLSAJaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0rCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCSAgbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSsJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCi0rCSAgbGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLSAJICAgIGlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkgICAgICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzVlNTgwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKQEAgLTAsMCArMSwzOTMgQEAKK0Zyb20gOGM2MGE1NWQzNjc4NTg5ZDkzNzM5YmQyN2ZlYzIxNjkxMWQ4MDk2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA2OjE5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMTVdIEFkZCBzdXBwb3J0IGZvciBOZXRsb2dpYyBYTFAKKworUGF0Y2ggRnJvbTogTmVidSBQaGlsaXBzIDxucGhpbGlwc0BuZXRsb2dpY21pY3JvLmNvbT4KKworVXNpbmcgdGhlIG1pcHNpc2E2NHIybmxtIHRhcmdldCwgYWRkIHN1cHBvcnQgZm9yIFhMUCBmcm9tCitOZXRsb2dpYy4gQWxzbywgdXBkYXRlIHZlbmRvciBuYW1lIHRvIE5MTSB3aGVyZXZlciBhcHBsaWNhYmxlLgorCitVc2UgMHgwMDAwMDA4MCBmb3IgSU5TTl9YTFAsIHRoZSB2YWx1ZSAweDAwMDAwMDQwIGhhcyBhbHJlYWR5IGJlZW4KK2Fzc2lnbmVkIHRvIElOU05fT0NURU9OMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJhb3NoYW4gUGFuZyA8YmFvc2hhbi5wYW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBiZmQvYW91dHguaCAgICAgICAgICAgfCAgMSArCisgYmZkL2FyY2h1cmVzLmMgICAgICAgIHwgIDEgKworIGJmZC9iZmQtaW4yLmggICAgICAgICB8ICAxICsKKyBiZmQvY29uZmlnLmJmZCAgICAgICAgfCAgNSArKysrKworIGJmZC9jcHUtbWlwcy5jICAgICAgICB8ICA2ICsrKystLQorIGJmZC9lbGZ4eC1taXBzLmMgICAgICB8ICA4ICsrKysrKysrCisgYmludXRpbHMvcmVhZGVsZi5jICAgIHwgIDEgKworIGdhcy9jb25maWcvdGMtbWlwcy5jICB8ICA0ICsrKy0KKyBnYXMvY29uZmlndXJlICAgICAgICAgfCAgMyArKysKKyBpbmNsdWRlL2VsZi9taXBzLmggICAgfCAgMSArCisgaW5jbHVkZS9vcGNvZGUvbWlwcy5oIHwgIDYgKysrKysrCisgbGQvY29uZmlndXJlLnRndCAgICAgIHwgIDIgKysKKyBvcGNvZGVzL21pcHMtZGlzLmMgICAgfCAxMiArKysrKy0tLS0tLS0KKyBvcGNvZGVzL21pcHMtb3BjLmMgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgMTQgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvYW91dHguaCBiL2JmZC9hb3V0eC5oCitpbmRleCAzZDM4ZmRhMTRiLi4wYWVjNDliYmIzIDEwMDY0NAorLS0tIGEvYmZkL2FvdXR4LmgKKysrKyBiL2JmZC9hb3V0eC5oCitAQCAtODE0LDYgKzgxNCw3IEBAIE5BTUUgKGFvdXQsIG1hY2hpbmVfdHlwZSkgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoLAorIAljYXNlIGJmZF9tYWNoX21pcHNpc2E2NHI2OgorIAljYXNlIGJmZF9tYWNoX21pcHNfc2IxOgorIAljYXNlIGJmZF9tYWNoX21pcHNfeGxyOgorKwljYXNlIGJmZF9tYWNoX21pcHNfeGxwOgorIAkgIC8qIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgTUlQUzMsIE1JUFM0LCBNSVBTMTYsIE1JUFMzMiwgZXRjLiAgKi8KKyAJICBhcmNoX2ZsYWdzID0gTV9NSVBTMjsKKyAJICBicmVhazsKK2RpZmYgLS1naXQgYS9iZmQvYXJjaHVyZXMuYyBiL2JmZC9hcmNodXJlcy5jCitpbmRleCA0MzNiOTVmYTA4Li4wNjNiNzk0M2ExIDEwMDY0NAorLS0tIGEvYmZkL2FyY2h1cmVzLmMKKysrKyBiL2JmZC9hcmNodXJlcy5jCitAQCAtMjAxLDYgKzIwMSw3IEBAIERFU0NSSVBUSU9OCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgeyogZGVjaW1hbCAnWExSJyAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgeyogZGVjaW1hbCAnSUEyJyAgKn0KKysuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgeyogZGVjaW1hbCAnWExQJyAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMiAgICAgICAgICAgMzMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKK2RpZmYgLS1naXQgYS9iZmQvYmZkLWluMi5oIGIvYmZkL2JmZC1pbjIuaAoraW5kZXggZDEyNmFlZDA4Ni4uMmI3NTNiM2E5MyAxMDA2NDQKKy0tLSBhL2JmZC9iZmQtaW4yLmgKKysrKyBiL2JmZC9iZmQtaW4yLmgKK0BAIC0yMDYwLDYgKzIwNjAsNyBAQCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJyAgKi8KKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIgICA3MzY1NTAgICAvKiBkZWNpbWFsICdJQTInICAqLworKyNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIC8qIGRlY2ltYWwgJ1hMUCcgICovCisgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMworICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAoraW5kZXggNDUxMTAyNGYyMi4uZjBmOTA3MmYxMCAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWcuYmZkCisrKysgYi9iZmQvY29uZmlnLmJmZAorQEAgLTExNjksNiArMTE2OSwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgorICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYworICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgorICAgICA7OworKyAgbWlwc2lzYTY0Ki0qLWVsZiopCisrCXRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9iZV92ZWMKKysJdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKysJd2FudDY0PXRydWUKKysJOzsKKyAgIG1pcHMqLSotZWxmKiB8IG1pcHMqLSotcnRlbXMqIHwgbWlwcyotKi13aW5kaXNzIHwgbWlwcyotKi1ub25lKQorICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYworICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgorZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKK2luZGV4IDI0OTMwOTRiZWYuLjgzNzVkMWFlOTYgMTAwNjQ0CistLS0gYS9iZmQvY3B1LW1pcHMuYworKysrIGIvYmZkL2NwdS1taXBzLmMKK0BAIC0xMDUsNyArMTA1LDggQEAgZW51bQorICAgSV9taXBzb2N0ZW9uMywKKyAgIElfeGxyLAorICAgSV9pbnRlcmFwdGl2X21yMiwKKy0gIElfbWljcm9taXBzCisrICBJX21pY3JvbWlwcywKKysgIElfeGxwCisgfTsKKyAKKyAjZGVmaW5lIE5OKGluZGV4KSAoJmFyY2hfaW5mb19zdHJ1Y3RbKGluZGV4KSArIDFdKQorQEAgLTE1OCw3ICsxNTksOCBAQCBzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5mb19zdHJ1Y3RbXSA9CisgICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxyLCAibWlwczp4bHIiLCAgICAgICBGQUxTRSwgTk4oSV94bHIpKSwKKyAgIE4gKDMyLCAzMiwgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiwgIm1pcHM6aW50ZXJhcHRpdi1tcjIiLCBGQUxTRSwKKyAgICAgIE5OKElfaW50ZXJhcHRpdl9tcjIpKSwKKy0gIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSwwKQorKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywibWlwczptaWNyb21pcHMiLEZBTFNFLE5OKElfbWljcm9taXBzKSksCisrICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxwLCAibWlwczp4bHAiLCAgICAgIEZBTFNFLCAwKQorIH07CisgCisgLyogVGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlIGlzIG1pcHM6MzAwMCwgYnV0IHdpdGggYSBtYWNoaW5lIG51bWJlciBvZgorZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC1taXBzLmMgYi9iZmQvZWxmeHgtbWlwcy5jCitpbmRleCBmZGRmNjhjODE2Li4zNTRjODVkMDBiIDEwMDY0NAorLS0tIGEvYmZkL2VsZnh4LW1pcHMuYworKysrIGIvYmZkL2VsZnh4LW1pcHMuYworQEAgLTY3OTYsNiArNjc5Niw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCisgICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6CisgICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjI7CisgCisrICAgIGNhc2UgRV9NSVBTX01BQ0hfWExQOgorKyAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX3hscDsKKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICBzd2l0Y2ggKGZsYWdzICYgRUZfTUlQU19BUkNIKQorIAl7CitAQCAtMTE5NTYsNiArMTE5NTksMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCisgICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX09DVEVPTjI7CisgICAgICAgYnJlYWs7CisgCisrCWNhc2UgYmZkX21hY2hfbWlwc194bHA6CisrCSAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX1hMUDsKKysJICBicmVhazsKKysKKyAgICAgY2FzZSBiZmRfbWFjaF9taXBzaXNhMzI6CisgICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfMzI7CisgICAgICAgYnJlYWs7CitAQCAtMTM5ODksNiArMTM5OTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9CisgICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9ucCwgYmZkX21hY2hfbWlwc19vY3Rlb24gfSwKKyAgIHsgYmZkX21hY2hfbWlwc19vY3Rlb24sIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCisgICB7IGJmZF9tYWNoX21pcHNfbG9vbmdzb25fM2EsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCisrICB7IGJmZF9tYWNoX21pcHNfeGxwLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAorIAorICAgLyogTUlQUzY0IGV4dGVuc2lvbnMuICAqLworICAgeyBiZmRfbWFjaF9taXBzaXNhNjRyMiwgYmZkX21hY2hfbWlwc2lzYTY0IH0sCitkaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCitpbmRleCAyYjE1ZjBmMmNiLi4wOTI3NDQ3MDhlIDEwMDY0NAorLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCisrKysgYi9iaW51dGlscy9yZWFkZWxmLmMKK0BAIC0zMzM1LDYgKzMzMzUsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAodW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQorIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04zOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMyIpOyBicmVhazsKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExSOiAgc3RyY2F0IChidWYsICIsIHhsciIpOyBicmVhazsKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6ICBzdHJjYXQgKGJ1ZiwgIiwgaW50ZXJhcHRpdi1tcjIiKTsgYnJlYWs7CisrCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUDogIHN0cmNhdCAoYnVmLCAiLCB4bHAiKTsgYnJlYWs7CisgCSAgICBjYXNlIDA6CisgCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgorIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYworaW5kZXggMzgwNGRmMjk1OC4uOTU3NmM5ODZkYiAxMDA2NDQKKy0tLSBhL2dhcy9jb25maWcvdGMtbWlwcy5jCisrKysgYi9nYXMvY29uZmlnL3RjLW1pcHMuYworQEAgLTU1Miw2ICs1NTIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKKyAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUk03MDAwICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1ZSNTUwMCAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorIAorIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcworQEAgLTU4MSw2ICs1ODIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKKyAgICAgJiYgbWlwc19vcHRzLmlzYSAhPSBJU0FfTUlQUzMpICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1I0MzAwICAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorIAorIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcworQEAgLTE5NzM4LDcgKzE5NzQwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9CisgICAvKiBCcm9hZGNvbSBYTFAuCisgICAgICBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIHRoYXQgaXQgaXMKKyAgICAgIE1JUFM2NFIyIHJhdGhlciB0aGFuIE1JUFM2NC4gICovCistICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUiB9LAorKyAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFAgfSwKKyAKKyAgIC8qIE1JUFMgNjQgUmVsZWFzZSA2ICovCisgICB7ICJpNjQwMCIsCSAgICAgIDAsIEFTRV9NU0EsCQlJU0FfTUlQUzY0UjYsIENQVV9NSVBTNjRSNn0sCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKK2luZGV4IDgxZGQ0Y2JkOTcuLjk1YmRmM2IxOWIgMTAwNzU1CistLS0gYS9nYXMvY29uZmlndXJlCisrKysgYi9nYXMvY29uZmlndXJlCitAQCAtMTI5ODksNiArMTI5ODksOSBAQCBfQUNFT0YKKyAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCisgCSAgICBtaXBzX2NwdT1taXBzNjRyNgorIAkgICAgOzsKKysJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCisrCQltaXBzX2NwdT14bHAKKysJCTs7CisgCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQorIAkgICAgbWlwc19jcHU9cjM5MDAKKyAJICAgIDs7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCitpbmRleCBhNGJlYTQzZmY4Li43M2Q5MDRlMjVmIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCisrKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKK0BAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCisgI2RlZmluZSBFX01JUFNfTUFDSF9TQjEgICAgICAgICAweDAwOGEwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04JMHgwMDhiMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfWExSICAgICAJMHgwMDhjMDAwMAorKyNkZWZpbmUgRV9NSVBTX01BQ0hfWExQICAgICAgICAgMHgwMDhmMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMgkweDAwOGQwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAoraW5kZXggY2VhZTllYzUwYS4uMjc2ZWUzYzZjMSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAorKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCitAQCAtMTI1OSw2ICsxMjU5LDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0geworICNkZWZpbmUgSU5TTl9YTFIgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKyAvKiBJbWFnaW5hdGlvbiBpbnRlckFwdGl2IE1SMi4gICovCisgI2RlZmluZSBJTlNOX0lOVEVSQVBUSVZfTVIyCSAgMHgwNDAwMDAwMAorKy8qIE5ldGxvZ2ljIFhsUCBpbnN0cnVjdGlvbiAqLworKyNkZWZpbmUgSU5TTl9YTFAJCTB4MDAwMDAwODAKKyAKKyAvKiBEU1AgQVNFICovCisgI2RlZmluZSBBU0VfRFNQCQkJMHgwMDAwMDAwMQorQEAgLTEzNjUsNiArMTM2Nyw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKKyAjZGVmaW5lIENQVV9PQ1RFT04zCTY1MDMKKyAjZGVmaW5lIENQVV9YTFIgICAgIAk4ODc2ODIgICAJLyogZGVjaW1hbCAnWExSJyAgICovCisgI2RlZmluZSBDUFVfSU5URVJBUFRJVl9NUjIgNzM2NTUwCS8qIGRlY2ltYWwgJ0lBMicgICovCisrI2RlZmluZSBDUFVfWExQICAgICAgICAgODg3NjgwICAgICAgLyogZGVjaW1hbCAnWExQJyAgICovCisgCisgLyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIENQVSBpcyBpbmNsdWRlZCBpbiBJTlNOXyogbWFzayBNQVNLLiAgKi8KKyAKK0BAIC0xNDQ1LDYgKzE0NDgsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKKyAgICAgICByZXR1cm4gKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0EzMlI2KQorIAkgICAgIHx8ICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBNjRSNik7CisgCisrICAgIGNhc2UgQ1BVX1hMUDoKKysgICAgICByZXR1cm4gKG1hc2sgJiBJTlNOX1hMUCkgIT0gMDsKKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXR1cm4gRkFMU0U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAoraW5kZXggZmU3YjkyMzhiMi4uMmFkZjEwOGIxNyAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC01MTYsNiArNTE2LDggQEAgbWlwcyplbC1zZGUtZWxmKiB8IG1pcHMqZWwtbXRpLWVsZiogfCBtaXBzKmVsLWltZy1lbGYqKQorIG1pcHMqLXNkZS1lbGYqIHwgbWlwcyotbXRpLWVsZiogfCBtaXBzKi1pbWctZWxmKikKKyAJCQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCIgOzsKKyttaXBzaXNhNjQqLSotZWxmKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiIDs7CisgbWlwczY0KmVsLXBzMi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJscjU5MDBuMzIKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKK2RpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKK2luZGV4IDQ1MTk1MDA3YzEuLjRhODBhMDVkMTkgMTAwNjQ0CistLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKKysrKyBiL29wY29kZXMvbWlwcy1kaXMuYworQEAgLTY1NSwxMyArNjU1LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQorICAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCisgICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCisgCistICAvKiBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIGl0IGlzIGJlaW5nCistICAgICBNSVBTNjRSMi4gICovCistICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hsciwgQ1BVX1hMUiwKKy0gICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFIsIDAsCistICAgIG1pcHNfY3AwX25hbWVzX3hsciwKKy0gICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAorLSAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAorKyAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHAsIENQVV9YTFAsCisrICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExQLCAwLAorKyAgICBtaXBzX2NwMF9uYW1lc19taXBzMzI2NHIyLAorKyAgICBtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyKSwKKysgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX21pcHMzMjY0cjIgfSwKKyAKKyAgIC8qIFRoaXMgZW50cnksIG1pcHMxNiwgaXMgaGVyZSBvbmx5IGZvciBJU0EvcHJvY2Vzc29yIHNlbGVjdGlvbjsgZG8KKyAgICAgIG5vdCBwcmludCBpdHMgbmFtZS4gICovCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLW9wYy5jIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCitpbmRleCAxOWZjYTQwOGM5Li5kMDIwNjljNTI4IDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCisrKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKK0BAIC0zMjgsNiArMzI4LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKKyAjZGVmaW5lIElPQ1QzCUlOU05fT0NURU9OMworICNkZWZpbmUgWExSICAgICBJTlNOX1hMUgorICNkZWZpbmUgSUFNUjIJSU5TTl9JTlRFUkFQVElWX01SMgorKyNkZWZpbmUgWExQCUlOU05fWExQCisgI2RlZmluZSBJVklSVAlBU0VfVklSVAorICNkZWZpbmUgSVZJUlQ2NAlBU0VfVklSVDY0CisgCitAQCAtOTY2LDYgKzk2Nyw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImNsbyIsCQkJIlUscyIsCQkweDcwMDAwMDIxLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCisgeyJjbHoiLAkJCSJkLHMiLAkJMHgwMDAwMDA1MCwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzNywJCTAsCTAgfSwKKyB7ImNseiIsCQkJIlUscyIsCQkweDcwMDAwMDIwLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCisreyJjcmMiLAkJCSJkLHMsdCIsCTB4NzAwMDAwMWMsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKKyAvKiBjdGMwIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyB7ImN0YzEiLAkJInQsRyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsiY3RjMSIsCQkidCxTIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCitAQCAtOTk4LDEyICsxMDAwLDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImRhZGRpdSIsCQkidCxyLGoiLAkweDY0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzIsCQkwLAkJSTMsCQkwLAkwIH0sCisgeyJkYWRkdSIsCQkiZCx2LHQiLAkweDAwMDAwMDJkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJMywJCTAsCTAgfSwKKyB7ImRhZGR1IiwJCSJ0LHIsSSIsCTAsICAgIChpbnQpIE1fREFERFVfSSwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCTAgfSwKKy17ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFIsCQkwLAkwIH0sCisreyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsiZGJyZWFrIiwJCSIiLAkJMHg3MDAwMDAzZiwgMHhmZmZmZmZmZiwJMCwJCQkwLAkJTjUsCQkwLAkwIH0sCisgeyJkY2xvIiwJCSJkLHMiLAkJMHgwMDAwMDA1MywgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyB7ImRjbG8iLAkJIlUscyIsCSAJMHg3MDAwMDAyNSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAorIHsiZGNseiIsCQkiZCxzIiwJCTB4MDAwMDAwNTIsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCisgeyJkY2x6IiwJCSJVLHMiLAkgCTB4NzAwMDAwMjQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKKyt7ImRjcmMiLAkJImQscyx0IiwJMHg3MDAwMDAxZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAorIC8qIGRjdHIgYW5kIGRjdHcgYXJlIHVzZWQgb24gdGhlIHI1MDAwLiAgKi8KKyB7ImRjdHIiLAkJIm8oYikiLAkgCTB4YmMwNTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAorIHsiZGN0dyIsCQkibyhiKSIsCQkweGJjMDkwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKK0BAIC0xMDc1LDYgKzEwNzgsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJkbWZjMCIsCQkidCxHLEgiLAkweDQwMjAwMDAwLCAweGZmZTAwN2Y4LAlXUl8xfFJEX0MwfExDLAkJMCwJCUk2NCwJCTAsCTAgfSwKKyB7ImRtZmdjMCIsCQkidCxHIiwJCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZmYsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKKyB7ImRtZmdjMCIsCQkidCxHLEgiLAkweDQwNjAwMTAwLCAweGZmZTAwN2Y4LCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCisreyJkbWZ1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWUsIDB4ZmZlMDA3ZmYsIFdSXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKKyB7ImRtdCIsCQkJIiIsCQkweDQxNjAwYmMxLCAweGZmZmZmZmZmLCBUUkFQLAkJCTAsCQkwLAkJTVQzMiwJMCB9LAorIHsiZG10IiwJCQkidCIsCQkweDQxNjAwYmMxLCAweGZmZTBmZmZmLCBXUl8xfFRSQVAsCQkwLAkJMCwJCU1UMzIsCTAgfSwKKyB7ImRtdGMwIiwJCSJ0LEciLAkJMHg0MGEwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DMHxXUl9DQ3xDTSwJMCwJCUkzLAkJMCwJRUUgfSwKK0BAIC0xMDkwLDYgKzEwOTQsOCBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgLyogZG1mYzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLworIC8qIGRtdGMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyB7ImRtdWgiLAkJImQscyx0IiwJMHgwMDAwMDBkYywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAorK3siZG10dXIiLAkJInQsZCIsCQkweDcwMDAwMDFmLCAweGZmZTAwN2ZmLAlSRF8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisreyJkbXVsIiwJCSJkLHMsdCIsCTB4NzAwMDAwMDYsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkJMCwJCVhMUCwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQscyx0IiwJMHgwMDAwMDA5YywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAorIHsiZG11bCIsCQkiZCx2LHQiLAkweDcwMDAwMDAzLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9ISUxPLAkwLAkJSU9DVCwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQsdix0IiwJMCwgICAgKGludCkgTV9ETVVMLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJTTMyfEk2OSB9LAorQEAgLTEyNDMsOSArMTI0OSw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImxkIiwJCQkicywtYigrUikiLAkweGVjMTgwMDAwLCAweGZjMWMwMDAwLCBXUl8xLAkJCVJEX3BjLAkJSTY5LAkJMCwJMCB9LAorIHsibGQiLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX0xEX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsibGQiLAkJCSJ0LG8oYikiLAkweGRjMDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8TE0sCQkwLAkJSTMsCQkwLAkwIH0sCisteyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisteyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorK3sibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7ImxkYzEiLAkJIlQsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKKyB7ImxkYzEiLAkJIkUsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKKyB7ImxkYzEiLAkJIlQsQShiKSIsCTAsICAgIChpbnQpIE1fTERDMV9BQiwJSU5TTl9NQUNSTywJCUlOU04yX01fRlBfRCwJSTIsCQkwLAlTRiB9LAorQEAgLTE0MTAsNyArMTQxNiw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7Im1mbG8iLAkJImQsOSIsCQkweDAwMDAwMDEyLCAweGZmOWYwN2ZmLCBXUl8xfFJEX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKKyB7Im1mbG8xIiwJCSJkIiwJCTB4NzAwMDAwMTIsIDB4ZmZmZjA3ZmYsCVdSXzF8UkRfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCisgeyJtZmxoeHUiLAkJImQiLAkJMHgwMDAwMDA1MiwgMHhmZmZmMDdmZiwJV1JfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCisteyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJtZnNhIiwJCSJkIiwJCTB4MDAwMDAwMjgsIDB4ZmZmZjA3ZmYsCVdSXzEsCQkJMCwJCUVFLAkJMCwJMCB9LAorIHsibWluLm9iIiwJCSJYLFksUSIsCTB4NzgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlTQjEsCQlNWCwJMCB9LAorIHsibWluLm9iIiwJCSJELFMsUSIsCTB4NDgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlONTQsCQkwLAkwIH0sCitAQCAtMTQ1NSwxMCArMTQ2MSwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgLyogbW92ZSBpcyBhdCB0aGUgdG9wIG9mIHRoZSB0YWJsZS4gICovCisgeyJtc2duLnFoIiwJCSJYLFksUSIsCTB4NzgyMDAwMDAsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQkwLAkJTVgsCTAgfSwKKyB7Im1zZ3NuZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1NORCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtc2dzbmRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMSwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAorIHsibXNnbGQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dMRCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisgeyJtc2dsZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR0xEX1QsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorLXsibXNnd2FpdCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR1dBSVQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorLXsibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im1zZ2xkcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDIsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKKyt7Im1zZ3dhaXQiLAkJIiIsCQkwLCAgICAoaW50KSBNX01TR1dBSVQsICBJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJtc2dzeW5jIiwJCSIiLAkJMHg0YTAwMDAwNCwgMHhmZmZmZmZmZiwwLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJtc3ViLmQiLAkJIkQsUixTLFQiLAkweDRjMDAwMDI5LCAweGZjMDAwMDNmLCBXUl8xfFJEXzJ8UkRfM3xSRF80fEZQX0QsIDAsCQlJNF8zMywJCTAsCUkzNyB9LAorIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NDYyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJFLAkJMCwJMCB9LAorIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NzIyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJGLAkJMCwJMCB9LAorQEAgLTE1MDgsNyArMTUxNyw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7Im10bG8iLAkJInMsNyIsCQkweDAwMDAwMDEzLCAweGZjMWZlN2ZmLCBSRF8xfFdSX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKKyB7Im10bG8xIiwJCSJzIiwJCTB4NzAwMDAwMTMsIDB4ZmMxZmZmZmYsCVJEXzF8V1JfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCisgeyJtdGxoeCIsCQkicyIsCQkweDAwMDAwMDUzLCAweGZjMWZmZmZmLAlSRF8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKKy17Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAorK3sibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7Im10bTAiLAkJInMiLAkJMHg3MDAwMDAwOCwgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKKyB7Im10bTAiLCAgICAJCSJzLHQiLAkJMHg3MDAwMDAwOCwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCUlPQ1QzLAkJMCwJMCB9LAorIHsibXRtMSIsCQkicyIsCQkweDcwMDAwMDBjLCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAorQEAgLTE5NDUsOSArMTk1NCw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7InN1eGMxIiwJCSJTLHQoYikiLAkweDRjMDAwMDBkLCAweGZjMDAwN2ZmLCBSRF8xfFJEXzJ8UkRfM3xTTXxGUF9ELAkwLAkJSTVfMzN8TjU1LAkwLAlJMzd9LAorIHsic3ciLAkJCSJ0LG8oYikiLAkweGFjMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U00sCQkwLAkJSTEsCQkwLAkwIH0sCisgeyJzdyIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fU1dfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCisteyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisteyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorK3sic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7InN3YzAiLAkJIkUsbyhiKSIsCTB4ZTAwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzN8UkRfQzB8U00sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAorIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKKyB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYzEwMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBmNDNmODMyZTAwMDljYWVhNmEzZDViY2FhOGYwYTY0ZDk0MzA3MmVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0NDoxNCArMDAwMAotU3ViamVjdDogW1BBVENIIDEyLzE1XSBDaGFuZ2UgZGVmYXVsdCBlbXVsYXRpb24gZm9yIG1pcHM2NCotKi1saW51eAotCi13ZSBjaGFuZ2UgdGhlIGRlZmF1bHQgZW11bGF0aW9ucyB0byBiZSBONjQgaW5zdGVhZCBvZiBOMzIKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgT0UgY29uZmlndXJhdGlvbiBTcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGJmZC9jb25maWcuYmZkICAgfCA4ICsrKystLS0tCi0gbGQvY29uZmlndXJlLnRndCB8IDggKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IDFiMjgwMTZiOTEuLjYzNTk2YzJlYmMgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlnLmJmZAotKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC0xMTgzLDEyICsxMTgzLDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCi0gICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMgbWlwc19lY29mZl9iZV92ZWMgbWlwc19lY29mZl9sZV92ZWMiCi0gICAgIDs7Ci0gICBtaXBzNjQqZWwtKi1saW51eCopCi0tICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjCi0tICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyIKLSsgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2xlX3ZlYwotKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgotICAgICA7OwotICAgbWlwczY0Ki0qLWxpbnV4KikKLS0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9iZV92ZWMKLS0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgotKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfYmVfdmVjCi0rICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCi0gICAgIDs7Ci0gICBtaXBzKmVsLSotbGludXgqKQotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfbGVfdmVjCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IGI4NWM2YmIzNWEuLjRlNzczODNhMTkgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUudGd0Ci0rKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNTE4LDExICs1MTgsMTEgQEAgbWlwcyplbC0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlbG1pcHZ4d29ya3MKLSBtaXBzKi0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlYm1pcHZ4d29ya3MKLSAJCSAgICAgICAgdGFyZ19leHRyYV9lbXVscz0iZWxmMzJlbG1pcHZ4d29ya3MiIDs7Ci0gbWlwcyotKi13aW5kaXNzKQl0YXJnX2VtdWw9ZWxmMzJtaXBzd2luZGlzcyA7OwotLW1pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcG4zMgotLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0bHRzbWlwIGVsZjY0YnRzbWlwIgotK21pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGx0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0YnRzbWlwIgotIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwotLW1pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJidHNtaXBuMzIKLS0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGJ0c21pcCBlbGY2NGx0c21pcCIKLSttaXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0YnRzbWlwCi0rCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRsdHNtaXAiCi0gCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7Ci0gbWlwcyplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcAotIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIgotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAzZTA0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5OSArMCwwIEBACi1Gcm9tIGZjNmZhNmE2ZTZlOWU2ZTVhZDcwODA3ODVhZjMxYjRlYTY4ZjYwYzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNjoxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzE1XSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCi0KLVBhdGNoIEZyb206IE5lYnUgUGhpbGlwcyA8bnBoaWxpcHNAbmV0bG9naWNtaWNyby5jb20+Ci0KLVVzaW5nIHRoZSBtaXBzaXNhNjRyMm5sbSB0YXJnZXQsIGFkZCBzdXBwb3J0IGZvciBYTFAgZnJvbQotTmV0bG9naWMuIEFsc28sIHVwZGF0ZSB2ZW5kb3IgbmFtZSB0byBOTE0gd2hlcmV2ZXIgYXBwbGljYWJsZS4KLQotVXNlIDB4MDAwMDAwODAgZm9yIElOU05fWExQLCB0aGUgdmFsdWUgMHgwMDAwMDA0MCBoYXMgYWxyZWFkeSBiZWVuCi1hc3NpZ25lZCB0byBJTlNOX09DVEVPTjMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEJhb3NoYW4gUGFuZyA8YmFvc2hhbi5wYW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gYmZkL2FvdXR4LmggICAgICAgICAgIHwgIDEgKwotIGJmZC9hcmNodXJlcy5jICAgICAgICB8ICAxICsKLSBiZmQvYmZkLWluMi5oICAgICAgICAgfCAgMSArCi0gYmZkL2NvbmZpZy5iZmQgICAgICAgIHwgIDUgKysrKysKLSBiZmQvY3B1LW1pcHMuYyAgICAgICAgfCAgNiArKysrLS0KLSBiZmQvZWxmeHgtbWlwcy5jICAgICAgfCAgOCArKysrKysrKwotIGJpbnV0aWxzL3JlYWRlbGYuYyAgICB8ICAxICsKLSBnYXMvY29uZmlnL3RjLW1pcHMuYyAgfCAgNCArKystCi0gZ2FzL2NvbmZpZ3VyZSAgICAgICAgIHwgIDMgKysrCi0gaW5jbHVkZS9lbGYvbWlwcy5oICAgIHwgIDEgKwotIGluY2x1ZGUvb3Bjb2RlL21pcHMuaCB8IDEwICsrKysrKysrLS0KLSBsZC9jb25maWd1cmUudGd0ICAgICAgfCAgMiArKwotIG9wY29kZXMvbWlwcy1kaXMuYyAgICB8IDEyICsrKysrLS0tLS0tLQotIG9wY29kZXMvbWlwcy1vcGMuYyAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDE0IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2FvdXR4LmggYi9iZmQvYW91dHguaAotaW5kZXggZDMwZThiOGZiYy4uOTEzYjQ5OTc0NCAxMDA2NDQKLS0tLSBhL2JmZC9hb3V0eC5oCi0rKysgYi9iZmQvYW91dHguaAotQEAgLTgxMiw2ICs4MTIsNyBAQCBOQU1FIChhb3V0LCBtYWNoaW5lX3R5cGUpIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaCwKLSAJY2FzZSBiZmRfbWFjaF9taXBzaXNhNjRyNjoKLSAJY2FzZSBiZmRfbWFjaF9taXBzX3NiMToKLSAJY2FzZSBiZmRfbWFjaF9taXBzX3hscjoKLSsJY2FzZSBiZmRfbWFjaF9taXBzX3hscDoKLSAJICAvKiBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIE1JUFMzLCBNSVBTNCwgTUlQUzE2LCBNSVBTMzIsIGV0Yy4gICovCi0gCSAgYXJjaF9mbGFncyA9IE1fTUlQUzI7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvYmZkL2FyY2h1cmVzLmMgYi9iZmQvYXJjaHVyZXMuYwotaW5kZXggNmYzNWE1YjJhNy4uZDEyY2RmNjA5YSAxMDA2NDQKLS0tLSBhL2JmZC9hcmNodXJlcy5jCi0rKysgYi9iZmQvYXJjaHVyZXMuYwotQEAgLTE5Nyw2ICsxOTcsNyBAQCBERVNDUklQVElPTgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMgkJNjUwMgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIHsqIGRlY2ltYWwgJ1hMUicgICp9Ci0rLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcgICp9Ci0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0Ci1kaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKLWluZGV4IDYyODhjM2JiNGEuLmU5Zjk4NTlhN2IgMTAwNjQ0Ci0tLS0gYS9iZmQvYmZkLWluMi5oCi0rKysgYi9iZmQvYmZkLWluMi5oCi1AQCAtMjA0MSw2ICsyMDQxLDcgQEAgZW51bSBiZmRfYXJjaGl0ZWN0dXJlCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjIgICAgICAgICAgNjUwMgotICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInICAqLwotKyNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIC8qIGRlY2ltYWwgJ1hMUCcgICovCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMwotICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0Ci1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggNjM1OTZjMmViYy4uNmU5MjNmYjBlZCAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWcuYmZkCi0rKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTExNjYsNiArMTE2NiwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYwotICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgotICAgICA7OwotKyAgbWlwc2lzYTY0Ki0qLWVsZiopCi0rCXRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9iZV92ZWMKLSsJdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKLSsJd2FudDY0PXRydWUKLSsJOzsKLSAgIG1pcHMqLSotZWxmKiB8IG1pcHMqLSotcnRlbXMqIHwgbWlwcyotKi13aW5kaXNzIHwgbWlwcyotKi1ub25lKQotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYwotICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgotZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKLWluZGV4IGI5ZWNkZDZlNTUuLmRmMWJmZmMyNWIgMTAwNjQ0Ci0tLS0gYS9iZmQvY3B1LW1pcHMuYwotKysrIGIvYmZkL2NwdS1taXBzLmMKLUBAIC0xMDQsNyArMTA0LDggQEAgZW51bQotICAgSV9taXBzb2N0ZW9uMiwKLSAgIElfbWlwc29jdGVvbjMsCi0gICBJX3hsciwKLS0gIElfbWljcm9taXBzCi0rICBJX21pY3JvbWlwcywKLSsgIElfeGxwCi0gfTsKLSAKLSAjZGVmaW5lIE5OKGluZGV4KSAoJmFyY2hfaW5mb19zdHJ1Y3RbKGluZGV4KSArIDFdKQotQEAgLTE1NSw3ICsxNTYsOCBAQCBzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5mb19zdHJ1Y3RbXSA9Ci0gICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfb2N0ZW9uMiwibWlwczpvY3Rlb24yIiwgIEZBTFNFLCBOTihJX21pcHNvY3Rlb24yKSksCi0gICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfb2N0ZW9uMywgIm1pcHM6b2N0ZW9uMyIsICBGQUxTRSwgTk4oSV9taXBzb2N0ZW9uMykpLAotICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwgICAgICAgRkFMU0UsIE5OKElfeGxyKSksCi0tICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCJtaXBzOm1pY3JvbWlwcyIsRkFMU0UsMCkKLSsgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSxOTihJX21pY3JvbWlwcykpLAotKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hscCwgIm1pcHM6eGxwIiwgICAgICBGQUxTRSwgMCkKLSB9OwotIAotIC8qIFRoZSBkZWZhdWx0IGFyY2hpdGVjdHVyZSBpcyBtaXBzOjMwMDAsIGJ1dCB3aXRoIGEgbWFjaGluZSBudW1iZXIgb2YKLWRpZmYgLS1naXQgYS9iZmQvZWxmeHgtbWlwcy5jIGIvYmZkL2VsZnh4LW1pcHMuYwotaW5kZXggNzIzODUzZjgyMS4uN2I0NjQyMTFjMyAxMDA2NDQKLS0tLSBhL2JmZC9lbGZ4eC1taXBzLmMKLSsrKyBiL2JmZC9lbGZ4eC1taXBzLmMKLUBAIC02Nzg3LDYgKzY3ODcsOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQotICAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjoKLSAgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc194bHI7Ci0gCi0rCWNhc2UgRV9NSVBTX01BQ0hfWExQOgotKyAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX3hscDsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBzd2l0Y2ggKGZsYWdzICYgRUZfTUlQU19BUkNIKQotIAl7Ci1AQCAtMTIxMDYsNiArMTIxMDksMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCi0gICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX09DVEVPTjI7Ci0gICAgICAgYnJlYWs7Ci0gCi0rCWNhc2UgYmZkX21hY2hfbWlwc194bHA6Ci0rCSAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX1hMUDsKLSsJICBicmVhazsKLSsKLSAgICAgY2FzZSBiZmRfbWFjaF9taXBzaXNhMzI6Ci0gICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfMzI7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTQxMzUsNiArMTQxNDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9Ci0gICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9ucCwgYmZkX21hY2hfbWlwc19vY3Rlb24gfSwKLSAgIHsgYmZkX21hY2hfbWlwc19vY3Rlb24sIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCi0gICB7IGJmZF9tYWNoX21pcHNfbG9vbmdzb25fM2EsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCi0rICB7IGJmZF9tYWNoX21pcHNfeGxwLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAotIAotICAgLyogTUlQUzY0IGV4dGVuc2lvbnMuICAqLwotICAgeyBiZmRfbWFjaF9taXBzaXNhNjRyMiwgYmZkX21hY2hfbWlwc2lzYTY0IH0sCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCA4ZGNhNDkwMjI2Li5iNWY1NzdmNWExIDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0zMjYxLDYgKzMyNjEsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAodW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQotIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04yOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMiIpOyBicmVhazsKLSAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMzogc3RyY2F0IChidWYsICIsIG9jdGVvbjMiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjogIHN0cmNhdCAoYnVmLCAiLCB4bHIiKTsgYnJlYWs7Ci0rCQljYXNlIEVfTUlQU19NQUNIX1hMUDogIHN0cmNhdCAoYnVmLCAiLCB4bHAiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIDA6Ci0gCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgotIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwotaW5kZXggZTI0ZTg0ZGY1NC4uYmFmODRlNDE5ZCAxMDA2NDQKLS0tLSBhL2dhcy9jb25maWcvdGMtbWlwcy5jCi0rKysgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwotQEAgLTU1Miw2ICs1NTIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKLSAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUk03MDAwICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1ZSNTUwMCAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKQotIAotIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcwotQEAgLTU4MSw2ICs1ODIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKLSAgICAgJiYgbWlwc19vcHRzLmlzYSAhPSBJU0FfTUlQUzMpICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1I0MzAwICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKQotIAotIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcwotQEAgLTE5NDA5LDcgKzE5NDExLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9Ci0gICAvKiBCcm9hZGNvbSBYTFAuCi0gICAgICBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIHRoYXQgaXQgaXMKLSAgICAgIE1JUFM2NFIyIHJhdGhlciB0aGFuIE1JUFM2NC4gICovCi0tICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUiB9LAotKyAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFAgfSwKLSAKLSAgIC8qIE1JUFMgNjQgUmVsZWFzZSA2ICovCi0gICB7ICJpNjQwMCIsCSAgICAgIDAsIEFTRV9NU0EsCQlJU0FfTUlQUzY0UjYsIENQVV9NSVBTNjRSNn0sCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKLWluZGV4IGEzNmYxYWUxNjEuLjk5ZjBhOTRlMjAgMTAwNzU1Ci0tLS0gYS9nYXMvY29uZmlndXJlCi0rKysgYi9nYXMvY29uZmlndXJlCi1AQCAtMTI5ODksNiArMTI5ODksOSBAQCBfQUNFT0YKLSAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCi0gCSAgICBtaXBzX2NwdT1taXBzNjRyNgotIAkgICAgOzsKLSsJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCi0rCQltaXBzX2NwdT14bHAKLSsJCTs7Ci0gCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQotIAkgICAgbWlwc19jcHU9cjM5MDAKLSAJICAgIDs7Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1pbmRleCAzZTI3YjA1MTIyLi44MWVhNzhhODE3IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCi0rKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKLUBAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCi0gI2RlZmluZSBFX01JUFNfTUFDSF9TQjEgICAgICAgICAweDAwOGEwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04JMHgwMDhiMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfWExSICAgICAJMHgwMDhjMDAwMAotKyNkZWZpbmUgRV9NSVBTX01BQ0hfWExQICAgICAgICAgMHgwMDhmMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMgkweDAwOGQwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotaW5kZXggMGQwNDNkOTUyMC4uNDUwZTljMmQ2NyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1AQCAtMTI0NCw4ICsxMjQ0LDEwIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKLSAjZGVmaW5lIElOU05fTE9PTkdTT05fMkYgICAgICAgICAgMHg4MDAwMDAwMAotIC8qIExvb25nc29uIDNBLiAgKi8KLSAjZGVmaW5lIElOU05fTE9PTkdTT05fM0EgICAgICAgICAgMHgwMDAwMDQwMAotLS8qIFJNSSBYbHIgaW5zdHJ1Y3Rpb24gKi8KLS0jZGVmaW5lIElOU05fWExSICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCi0rLyogTmV0bG9naWMgWGxyIGluc3RydWN0aW9uICovCi0rI2RlZmluZSBJTlNOX1hMUgkJMHgwMDAwMDAyMAotKy8qIE5ldGxvZ2ljIFhsUCBpbnN0cnVjdGlvbiAqLwotKyNkZWZpbmUgSU5TTl9YTFAJCTB4MDAwMDAwODAKLSAKLSAvKiBEU1AgQVNFICovCi0gI2RlZmluZSBBU0VfRFNQCQkJMHgwMDAwMDAwMQotQEAgLTEzNDQsNiArMTM0Niw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKLSAjZGVmaW5lIENQVV9PQ1RFT04yCTY1MDIKLSAjZGVmaW5lIENQVV9PQ1RFT04zCTY1MDMKLSAjZGVmaW5lIENQVV9YTFIgICAgIAk4ODc2ODIgICAJLyogZGVjaW1hbCAnWExSJyAgICovCi0rI2RlZmluZSBDUFVfWExQICAgICAgICAgODg3NjgwICAgICAgLyogZGVjaW1hbCAnWExQJyAgICovCi0gCi0gLyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIENQVSBpcyBpbmNsdWRlZCBpbiBJTlNOXyogbWFzayBNQVNLLiAgKi8KLSAKLUBAIC0xNDIxLDYgKzE0MjQsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKLSAgICAgICByZXR1cm4gKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0EzMlI2KQotIAkgICAgIHx8ICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBNjRSNik7Ci0gCi0rICAgIGNhc2UgQ1BVX1hMUDoKLSsgICAgICByZXR1cm4gKG1hc2sgJiBJTlNOX1hMUCkgIT0gMDsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggNGU3NzM4M2ExOS4uOGE4MWY3YWMzOSAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKLSsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC01MDQsNiArNTA0LDggQEAgbWlwcyplbC1zZGUtZWxmKiB8IG1pcHMqZWwtbXRpLWVsZiogfCBtaXBzKmVsLWltZy1lbGYqKQotIG1pcHMqLXNkZS1lbGYqIHwgbWlwcyotbXRpLWVsZiogfCBtaXBzKi1pbWctZWxmKikKLSAJCQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCIgOzsKLSttaXBzaXNhNjQqLSotZWxmKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCi0rCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiIDs7Ci0gbWlwczY0KmVsLXBzMi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJscjU5MDBuMzIKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKLSAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKLWRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKLWluZGV4IGJiOTkxMmU0NjIuLjcwZWNjNTE3MTcgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKLSsrKyBiL29wY29kZXMvbWlwcy1kaXMuYwotQEAgLTY0OCwxMyArNjQ4LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQotICAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCi0gICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCi0gCi0tICAvKiBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIGl0IGlzIGJlaW5nCi0tICAgICBNSVBTNjRSMi4gICovCi0tICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hsciwgQ1BVX1hMUiwKLS0gICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFIsIDAsCi0tICAgIG1pcHNfY3AwX25hbWVzX3hsciwKLS0gICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAotLSAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAotKyAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHAsIENQVV9YTFAsCi0rICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExQLCAwLAotKyAgICBtaXBzX2NwMF9uYW1lc19taXBzMzI2NHIyLAotKyAgICBtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyKSwKLSsgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX21pcHMzMjY0cjIgfSwKLSAKLSAgIC8qIFRoaXMgZW50cnksIG1pcHMxNiwgaXMgaGVyZSBvbmx5IGZvciBJU0EvcHJvY2Vzc29yIHNlbGVjdGlvbjsgZG8KLSAgICAgIG5vdCBwcmludCBpdHMgbmFtZS4gICovCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLW9wYy5jIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCi1pbmRleCA1Y2I4ZTczNjVmLi5mMjA3NDg1NmEyIDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCi0rKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKLUBAIC0zMjAsNyArMzIwLDggQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKLSAjZGVmaW5lIElPQ1RQCShJTlNOX09DVEVPTlAgfCBJTlNOX09DVEVPTjIgfCBJTlNOX09DVEVPTjMpCi0gI2RlZmluZSBJT0NUMgkoSU5TTl9PQ1RFT04yIHwgSU5TTl9PQ1RFT04zKQotICNkZWZpbmUgSU9DVDMJSU5TTl9PQ1RFT04zCi0tI2RlZmluZSBYTFIgICAgIElOU05fWExSCi0rI2RlZmluZSBYTFIJSU5TTl9YTFIKLSsjZGVmaW5lIFhMUAlJTlNOX1hMUAotICNkZWZpbmUgSVZJUlQJQVNFX1ZJUlQKLSAjZGVmaW5lIElWSVJUNjQJQVNFX1ZJUlQ2NAotIAotQEAgLTk1OCw2ICs5NTksNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJjbG8iLAkJCSJVLHMiLAkJMHg3MDAwMDAyMSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAotIHsiY2x6IiwJCQkiZCxzIiwJCTB4MDAwMDAwNTAsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzcsCQkwLAkwIH0sCi0geyJjbHoiLAkJCSJVLHMiLAkJMHg3MDAwMDAyMCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAotK3siY3JjIiwJCQkiZCxzLHQiLAkweDcwMDAwMDFjLCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCi0gLyogY3RjMCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCi0geyJjdGMxIiwJCSJ0LEciLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKLSB7ImN0YzEiLAkJInQsUyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAotQEAgLTk5MCwxMiArOTkyLDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImRhZGRpdSIsCQkidCxyLGoiLAkweDY0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzIsCQkwLAkJSTMsCQkwLAkwIH0sCi0geyJkYWRkdSIsCQkiZCx2LHQiLAkweDAwMDAwMDJkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJMywJCTAsCTAgfSwKLSB7ImRhZGR1IiwJCSJ0LHIsSSIsCTAsICAgIChpbnQpIE1fREFERFVfSSwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCTAgfSwKLS17ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFIsCQkwLAkwIH0sCi0reyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsiZGJyZWFrIiwJCSIiLAkJMHg3MDAwMDAzZiwgMHhmZmZmZmZmZiwJMCwJCQkwLAkJTjUsCQkwLAkwIH0sCi0geyJkY2xvIiwJCSJkLHMiLAkJMHgwMDAwMDA1MywgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSB7ImRjbG8iLAkJIlUscyIsCSAJMHg3MDAwMDAyNSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAotIHsiZGNseiIsCQkiZCxzIiwJCTB4MDAwMDAwNTIsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCi0geyJkY2x6IiwJCSJVLHMiLAkgCTB4NzAwMDAwMjQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKLSt7ImRjcmMiLAkJImQscyx0IiwJMHg3MDAwMDAxZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAotIC8qIGRjdHIgYW5kIGRjdHcgYXJlIHVzZWQgb24gdGhlIHI1MDAwLiAgKi8KLSB7ImRjdHIiLAkJIm8oYikiLAkgCTB4YmMwNTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAotIHsiZGN0dyIsCQkibyhiKSIsCQkweGJjMDkwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKLUBAIC0xMDY3LDYgKzEwNzAsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJkbWZjMCIsCQkidCxHLEgiLAkweDQwMjAwMDAwLCAweGZmZTAwN2Y4LAlXUl8xfFJEX0MwfExDLAkJMCwJCUk2NCwJCTAsCTAgfSwKLSB7ImRtZmdjMCIsCQkidCxHIiwJCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZmYsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKLSB7ImRtZmdjMCIsCQkidCxHLEgiLAkweDQwNjAwMTAwLCAweGZmZTAwN2Y4LCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCi0reyJkbWZ1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWUsIDB4ZmZlMDA3ZmYsIFdSXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKLSB7ImRtdCIsCQkJIiIsCQkweDQxNjAwYmMxLCAweGZmZmZmZmZmLCBUUkFQLAkJCTAsCQkwLAkJTVQzMiwJMCB9LAotIHsiZG10IiwJCQkidCIsCQkweDQxNjAwYmMxLCAweGZmZTBmZmZmLCBXUl8xfFRSQVAsCQkwLAkJMCwJCU1UMzIsCTAgfSwKLSB7ImRtdGMwIiwJCSJ0LEciLAkJMHg0MGEwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DMHxXUl9DQ3xDTSwJMCwJCUkzLAkJMCwJRUUgfSwKLUBAIC0xMDgyLDYgKzEwODYsOCBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0gLyogZG1mYzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwotIC8qIGRtdGMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KLSB7ImRtdWgiLAkJImQscyx0IiwJMHgwMDAwMDBkYywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAotK3siZG10dXIiLAkJInQsZCIsCQkweDcwMDAwMDFmLCAweGZmZTAwN2ZmLAlSRF8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCi0reyJkbXVsIiwJCSJkLHMsdCIsCTB4NzAwMDAwMDYsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkJMCwJCVhMUCwJCTAsCTAgfSwKLSB7ImRtdWwiLAkJImQscyx0IiwJMHgwMDAwMDA5YywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAotIHsiZG11bCIsCQkiZCx2LHQiLAkweDcwMDAwMDAzLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9ISUxPLAkwLAkJSU9DVCwJCTAsCTAgfSwKLSB7ImRtdWwiLAkJImQsdix0IiwJMCwgICAgKGludCkgTV9ETVVMLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJTTMyfEk2OSB9LAotQEAgLTEyMzUsOSArMTI0MSw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImxkIiwJCQkicywtYigrUikiLAkweGVjMTgwMDAwLCAweGZjMWMwMDAwLCBXUl8xLAkJCVJEX3BjLAkJSTY5LAkJMCwJMCB9LAotIHsibGQiLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX0xEX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAotIHsibGQiLAkJCSJ0LG8oYikiLAkweGRjMDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8TE0sCQkwLAkJSTMsCQkwLAkwIH0sCi0teyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotK3sibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7ImxkYzEiLAkJIlQsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKLSB7ImxkYzEiLAkJIkUsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKLSB7ImxkYzEiLAkJIlQsQShiKSIsCTAsICAgIChpbnQpIE1fTERDMV9BQiwJSU5TTl9NQUNSTywJCUlOU04yX01fRlBfRCwJSTIsCQkwLAlTRiB9LAotQEAgLTE0MDIsNyArMTQwOCw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7Im1mbG8iLAkJImQsOSIsCQkweDAwMDAwMDEyLCAweGZmOWYwN2ZmLCBXUl8xfFJEX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKLSB7Im1mbG8xIiwJCSJkIiwJCTB4NzAwMDAwMTIsIDB4ZmZmZjA3ZmYsCVdSXzF8UkRfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCi0geyJtZmxoeHUiLAkJImQiLAkJMHgwMDAwMDA1MiwgMHhmZmZmMDdmZiwJV1JfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCi0teyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJtZnNhIiwJCSJkIiwJCTB4MDAwMDAwMjgsIDB4ZmZmZjA3ZmYsCVdSXzEsCQkJMCwJCUVFLAkJMCwJMCB9LAotIHsibWluLm9iIiwJCSJYLFksUSIsCTB4NzgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlTQjEsCQlNWCwJMCB9LAotIHsibWluLm9iIiwJCSJELFMsUSIsCTB4NDgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlONTQsCQkwLAkwIH0sCi1AQCAtMTQ0NywxMCArMTQ1MywxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0gLyogbW92ZSBpcyBhdCB0aGUgdG9wIG9mIHRoZSB0YWJsZS4gICovCi0geyJtc2duLnFoIiwJCSJYLFksUSIsCTB4NzgyMDAwMDAsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQkwLAkJTVgsCTAgfSwKLSB7Im1zZ3NuZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1NORCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtc2dzbmRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMSwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAotIHsibXNnbGQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dMRCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0geyJtc2dsZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR0xEX1QsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotLXsibXNnd2FpdCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR1dBSVQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotLXsibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im1zZ2xkcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDIsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKLSt7Im1zZ3dhaXQiLAkJIiIsCQkwLCAgICAoaW50KSBNX01TR1dBSVQsICBJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJtc2dzeW5jIiwJCSIiLAkJMHg0YTAwMDAwNCwgMHhmZmZmZmZmZiwwLAkJCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJtc3ViLmQiLAkJIkQsUixTLFQiLAkweDRjMDAwMDI5LCAweGZjMDAwMDNmLCBXUl8xfFJEXzJ8UkRfM3xSRF80fEZQX0QsIDAsCQlJNF8zMywJCTAsCUkzNyB9LAotIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NDYyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJFLAkJMCwJMCB9LAotIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NzIyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJGLAkJMCwJMCB9LAotQEAgLTE1MDAsNyArMTUwOSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7Im10bG8iLAkJInMsNyIsCQkweDAwMDAwMDEzLCAweGZjMWZlN2ZmLCBSRF8xfFdSX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKLSB7Im10bG8xIiwJCSJzIiwJCTB4NzAwMDAwMTMsIDB4ZmMxZmZmZmYsCVJEXzF8V1JfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCi0geyJtdGxoeCIsCQkicyIsCQkweDAwMDAwMDUzLCAweGZjMWZmZmZmLAlSRF8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKLS17Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7Im10bTAiLAkJInMiLAkJMHg3MDAwMDAwOCwgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKLSB7Im10bTAiLCAgICAJCSJzLHQiLAkJMHg3MDAwMDAwOCwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCUlPQ1QzLAkJMCwJMCB9LAotIHsibXRtMSIsCQkicyIsCQkweDcwMDAwMDBjLCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAotQEAgLTE5MzcsOSArMTk0Niw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7InN1eGMxIiwJCSJTLHQoYikiLAkweDRjMDAwMDBkLCAweGZjMDAwN2ZmLCBSRF8xfFJEXzJ8UkRfM3xTTXxGUF9ELAkwLAkJSTVfMzN8TjU1LAkwLAlJMzd9LAotIHsic3ciLAkJCSJ0LG8oYikiLAkweGFjMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U00sCQkwLAkJSTEsCQkwLAkwIH0sCi0geyJzdyIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fU1dfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCi0teyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotK3sic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7InN3YzAiLAkJIkUsbyhiKSIsCTB4ZTAwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzN8UkRfQzB8U00sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAotIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKLSB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3Mzc2YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGU0NjIwMmJlY2FiNjI1YzZjMDhjYWY5MWUwOGNjYmJjMWJmNzk5YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KK0RhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6MDg6MjkgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8xNV0gZml4IHRoZSBpbmNvcnJlY3QgYXNzZW1ibGluZyBmb3IgcHBjIHdhaXQgbW5lbW9uaWMKKworU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgb3Bjb2Rlcy9wcGMtb3BjLmMgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL29wY29kZXMvcHBjLW9wYy5jIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKK2luZGV4IDQyNjI2MWFiMjEuLjBkMzU5MTZjZGQgMTAwNjQ0CistLS0gYS9vcGNvZGVzL3BwYy1vcGMuYworKysrIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKK0BAIC00ODgxLDcgKzQ4ODEsNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CisgeyJsZGVweCIsCVgoMzEsMjkpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCisgCisgeyJ3YWl0YXNlYyIsCVgoMzEsMzApLCAgICAgIFhSVFJBUkJfTUFTSywgUE9XRVI4LAlQT1dFUjksCQl7MH19LAorLXsid2FpdCIsCVgoMzEsMzApLAlYV0NfTUFTSywgICAgUE9XRVI5LAkwLAkJe1dDfX0sCisgCisgeyJsd2VweCIsCVgoMzEsMzEpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCisgCitAQCAtNDkzNSw3ICs0OTM0LDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworIAorIHsid2FpdHJzdiIsCVgoMzEsNjIpfCgxPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCisgeyJ3YWl0aW1wbCIsCVgoMzEsNjIpfCgyPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCisteyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7V0N9fSwKKyt7IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMnxQT1dFUjksIDAsCXtXQ319LAorIAorIHsiZGNic3RlcCIsCVhSVCgzMSw2MywwKSwJWFJUX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtSQTAsIFJCfX0sCisgCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJiMTA2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGJmMjBkNTgyMzY2MmQxZjJlYjQ3ZGUyY2RmZDE3MzYyN2EyMDViMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxMTo0MjowMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDE0LzE1XSBEZXRlY3QgNjQtYml0IE1JUFMgdGFyZ2V0cworCitBZGQgbWlwczY0IHRhcmdldCB0cmlwbGV0cyBhbmQgZGVmYXVsdCB0byBONjQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxNi0wOC9tc2cwMDA0OC5odG1sCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnb2xkL2NvbmZpZ3VyZS50Z3QgfCAxNCArKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nb2xkL2NvbmZpZ3VyZS50Z3QgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKK2luZGV4IDNkNjMwMjcyOTcuLmMxZjkyYTEzNjAgMTAwNjQ0CistLS0gYS9nb2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2dvbGQvY29uZmlndXJlLnRndAorQEAgLTE1Myw2ICsxNTMsMTMgQEAgYWFyY2g2NCotKikKKyAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCisgIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCisgIDs7CisrbWlwcyo2NCplbCotKi0qfG1pcHMqNjQqbGUqLSotKikKKysgdGFyZ19vYmo9bWlwcworKyB0YXJnX21hY2hpbmU9RU1fTUlQU19SUzNfTEUKKysgdGFyZ19zaXplPTY0CisrIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQorKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQorKyA7OworIG1pcHMqZWwqLSotKnxtaXBzKmxlKi0qLSopCisgIHRhcmdfb2JqPW1pcHMKKyAgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCitAQCAtMTYwLDYgKzE2NywxMyBAQCBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQorICB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKKyAgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKKyAgOzsKKyttaXBzKjY0Ki0qLSopCisrIHRhcmdfb2JqPW1pcHMKKysgdGFyZ19tYWNoaW5lPUVNX01JUFMKKysgdGFyZ19zaXplPTY0CisrIHRhcmdfYmlnX2VuZGlhbj10cnVlCisrIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj1mYWxzZQorKyA7OworIG1pcHMqLSotKikKKyAgdGFyZ19vYmo9bWlwcworICB0YXJnX21hY2hpbmU9RU1fTUlQUworLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjk1YTBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gYTkxNzcxNTBmODA4ZDdlNjI4NWUxMDExYzg1ZDBjZTg5MDM3YjU1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgotRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjowODoyOSAtMDUwMAotU3ViamVjdDogW1BBVENIIDE0LzE1XSBmaXggdGhlIGluY29ycmVjdCBhc3NlbWJsaW5nIGZvciBwcGMgd2FpdCBtbmVtb25pYwotCi1TaWduZWQtb2ZmLWJ5OiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBvcGNvZGVzL3BwYy1vcGMuYyB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9wcGMtb3BjLmMgYi9vcGNvZGVzL3BwYy1vcGMuYwotaW5kZXggMzBmZDc4OTE4Mi4uZjI3MDhlMjI3NiAxMDA2NDQKLS0tLSBhL29wY29kZXMvcHBjLW9wYy5jCi0rKysgYi9vcGNvZGVzL3BwYy1vcGMuYwotQEAgLTQ4NzYsNyArNDg3Niw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKLSB7ImxkZXB4IiwJWCgzMSwyOSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKLSAKLSB7IndhaXRhc2VjIiwJWCgzMSwzMCksICAgICAgWFJUUkFSQl9NQVNLLCBQT1dFUjgsCVBPV0VSOSwJCXswfX0sCi0teyJ3YWl0IiwJWCgzMSwzMCksCVhXQ19NQVNLLCAgICBQT1dFUjksCTAsCQl7V0N9fSwKLSAKLSB7Imx3ZXB4IiwJWCgzMSwzMSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKLSAKLUBAIC00OTMwLDcgKzQ5MjksNyBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7Ci0gCi0geyJ3YWl0cnN2IiwJWCgzMSw2Mil8KDE8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKLSB7IndhaXRpbXBsIiwJWCgzMSw2Mil8KDI8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKLS17IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtXQ319LAotK3sid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyfFBPV0VSOSwgMCwJe1dDfX0sCi0gCi0geyJkY2JzdGVwIiwJWFJUKDMxLDYzLDApLAlYUlRfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1JBMCwgUkJ9fSwKLSAKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKaW5kZXggMTU1OTAzOC4uMmM4OTAwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDU4Y2RiMjhlZDcxY2I1N2I0YTBlYTFiNDEyYTcwOGZkYjBmODRjMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDliNDU2YTBlNGYyODRmZDQxYWMzNjU5NTE0NGVkNDRkYzgyNDEwZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjMzOjI3IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0ggMTUvMTVdIHN5bmMgd2l0aCBPRSBsaWJ0b29sIGNoYW5nZXMKQEAgLTg1LDUgKzg1LDUgQEAKICAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAgCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgogLS0gCi0yLjEyLjAKKzIuMTQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMmViODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBjM2ViZGU1ZDhjYzNiMDA5Mjk2NmI0ZDcyNWNhZDdjZmQwNzRmZDhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTE6NDI6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8xNl0gRGV0ZWN0IDY0LWJpdCBNSVBTIHRhcmdldHMKLQotQWRkIG1pcHM2NCB0YXJnZXQgdHJpcGxldHMgYW5kIGRlZmF1bHQgdG8gTjY0Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMTYtMDgvbXNnMDAwNDguaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ29sZC9jb25maWd1cmUudGd0IHwgMTQgKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ29sZC9jb25maWd1cmUudGd0IGIvZ29sZC9jb25maWd1cmUudGd0Ci1pbmRleCAzZDYzMDI3Mjk3Li5jMWY5MmExMzYwIDEwMDY0NAotLS0tIGEvZ29sZC9jb25maWd1cmUudGd0Ci0rKysgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC0xNTMsNiArMTUzLDEzIEBAIGFhcmNoNjQqLSopCi0gIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQotICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQotICA7OwotK21pcHMqNjQqZWwqLSotKnxtaXBzKjY0KmxlKi0qLSopCi0rIHRhcmdfb2JqPW1pcHMKLSsgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCi0rIHRhcmdfc2l6ZT02NAotKyB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKLSsgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKLSsgOzsKLSBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQotICB0YXJnX29iaj1taXBzCi0gIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQotQEAgLTE2MCw2ICsxNjcsMTMgQEAgbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKLSAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCi0gIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCi0gIDs7Ci0rbWlwcyo2NCotKi0qKQotKyB0YXJnX29iaj1taXBzCi0rIHRhcmdfbWFjaGluZT1FTV9NSVBTCi0rIHRhcmdfc2l6ZT02NAotKyB0YXJnX2JpZ19lbmRpYW49dHJ1ZQotKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49ZmFsc2UKLSsgOzsKLSBtaXBzKi0qLSopCi0gIHRhcmdfb2JqPW1pcHMKLSAgdGFyZ19tYWNoaW5lPUVNX01JUFMKLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNy1iZmQtSW1wcm92ZS1sb29rdXAtb2YtZmlsZS1saW5lLWluZm9ybWF0aW9uLWZvci1lcnJvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE3LWJmZC1JbXByb3ZlLWxvb2t1cC1vZi1maWxlLWxpbmUtaW5mb3JtYXRpb24tZm9yLWVycm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYWQxMGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE3LWJmZC1JbXByb3ZlLWxvb2t1cC1vZi1maWxlLWxpbmUtaW5mb3JtYXRpb24tZm9yLWVycm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIDMyMzlhNDIzMWZmNzliZjhiNjdiOGZhYWY0MTRiMTY2NzQ4NjE2N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZXcgQnVyZ2VzcyA8YW5kcmV3LmJ1cmdlc3NAZW1iZWNvc20uY29tPgotRGF0ZTogTW9uLCAxOSBEZWMgMjAxNiAxNToyNzo1OSArMDAwMAotU3ViamVjdDogW1BBVENIXSBiZmQ6IEltcHJvdmUgbG9va3VwIG9mIGZpbGUgLyBsaW5lIGluZm9ybWF0aW9uIGZvciBlcnJvcnMKLQotV2hlbiBsb29raW5nIHVwIGZpbGUgYW5kIGxpbmUgaW5mb3JtYXRpb24gKHVzZWQgZnJvbSB0aGUgbGlua2VyIHRvCi1yZXBvcnQgZXJyb3IgbWVzc2FnZXMpIGlmIG5vIHN5bWJvbCBpcyBwYXNzZWQgaW4sIHRoZW4gdXNlIHRoZSBzeW1ib2wKLWxpc3QgdG8gbG9vayBmb3IgYSBtYXRjaGluZyBzeW1ib2wuCi0KLUlmIGEgbWF0Y2hpbmcgc3ltYm9sIGlzIGZvdW5kIHRoZW4gdXNlIHRoaXMgdG8gbG9vayB1cCB0aGUgZmlsZSAvIGxpbmUKLWluZm9ybWF0aW9uLgotCi1UaGlzIHNob3VsZCBpbXByb3ZlIGVycm9ycyB3aGVuIGxvb2tpbmcgdXAgZmlsZSAvIGxpbmUgaW5mb3JtYXRpb24gZm9yCi1kYXRhIHNlY3Rpb25zLiAgSG9wZWZ1bGx5IHdlIHNob3VsZCBmaW5kIGEgbWF0Y2hpbmcgZGF0YSBzeW1ib2wsIHdoaWNoCi1zaG91bGQsIGluIHR1cm4gKHdlIGhvcGUpIG1hdGNoIGEgRFdfVEFHX3ZhcmlhYmxlIGluIHRoZSBEV0FSRiwgdGhpcwotc2hvdWxkIGFsbG93IHVzIHRvIGdpdmUgYWNjdXJhdGUgZmlsZSAvIGxpbmUgZXJyb3JzIGZvciBkYXRhIHN5bWJvbHMuCi0KLUFzIHRoZSBob3BlIGlzIHRvIGZpbmQgYSBtYXRjaGluZyBEV19UQUdfdmFyaWFibGUgaW4gdGhlIERXQVJGIHRoZW4gd2UKLWlnbm9yZSBzZWN0aW9uIHN5bWJvbHMsIGFuZCBwcmVmZXIgZ2xvYmFsIHN5bWJvbHMgdG8gbG9jYWxzLgotCi1DVkU6IENWRS0yMDE3LTgzOTIKLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLQotU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KLS0tLQotIGJmZC9kd2FyZjIuYyAgICAgICAgICAgICAgICAgICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCi0KLQotZGlmZiAtLWdpdCBhL2JmZC9kd2FyZjIuYyBiL2JmZC9kd2FyZjIuYwotaW5kZXggMDM0NDdhOS4uOWJiODEyNiAxMDA2NDQKLS0tLSBhL2JmZC9kd2FyZjIuYwotKysrIGIvYmZkL2R3YXJmMi5jCi1AQCAtNDE1NSw2ICs0MTU1LDM4IEBAIF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCi0gICAgIHsKLSAgICAgICBCRkRfQVNTRVJUIChzZWN0aW9uICE9IE5VTEwgJiYgZnVuY3Rpb25uYW1lX3B0ciAhPSBOVUxMKTsKLSAgICAgICBhZGRyID0gb2Zmc2V0OwotKwotKyAgICAgIC8qIElmIHdlIGhhdmUgbm8gU1lNQk9MIGJ1dCB0aGUgc2VjdGlvbiB3ZSdyZSBsb29raW5nIGF0IGlzIG5vdCBhCi0rICAgICAgICAgY29kZSBzZWN0aW9uLCB0aGVuIHRha2UgYSBsb29rIHRocm91Z2ggdGhlIGxpc3Qgb2Ygc3ltYm9scyB0byBzZWUKLSsgICAgICAgICBpZiB3ZSBoYXZlIGEgc3ltYm9sIGF0IHRoZSBhZGRyZXNzIHdlJ3JlIGxvb2tpbmcgZm9yLiAgSWYgd2UgZG8KLSsgICAgICAgICB0aGVuIHVzZSB0aGlzIHRvIGxvb2sgdXAgbGluZSBpbmZvcm1hdGlvbi4gIFRoaXMgd2lsbCBhbGxvdyB1cyB0bwotKyAgICAgICAgIGdpdmUgZmlsZSBhbmQgbGluZSByZXN1bHRzIGZvciBkYXRhIHN5bWJvbHMuICBXZSBleGNsdWRlIGNvZGUKLSsgICAgICAgICBzeW1ib2xzIGhlcmUsIGlmIHdlIGxvb2sgdXAgYSBmdW5jdGlvbiBzeW1ib2wgYW5kIHRoZW4gbG9vayB1cCB0aGUKLSsgICAgICAgICBsaW5lIGluZm9ybWF0aW9uIHdlJ2xsIGFjdHVhbGx5IHJldHVybiB0aGUgbGluZSBudW1iZXIgZm9yIHRoZQotKyAgICAgICAgIG9wZW5pbmcgJ3snIHJhdGhlciB0aGFuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGxpbmUuICBUaGlzIGlzCi0rICAgICAgICAgYmVjYXVzZSBsb29raW5nIHVwIGJ5IHN5bWJvbCB1c2VzIHRoZSBsaW5lIHRhYmxlLCBpbiB3aGljaCB0aGUKLSsgICAgICAgICBmaXJzdCBsaW5lIGZvciBhIGZ1bmN0aW9uIGlzIHVzdWFsbHkgdGhlIG9wZW5pbmcgJ3snLCB3aGlsZQotKyAgICAgICAgIGxvb2tpbmcgdXAgdGhlIGZ1bmN0aW9uIGJ5IHNlY3Rpb24gKyBvZmZzZXQgdXNlcyB0aGUKLSsgICAgICAgICBEV19BVF9kZWNsX2xpbmUgZnJvbSB0aGUgZnVuY3Rpb24gRFdfVEFHX3N1YnByb2dyYW0gZm9yIHRoZSBsaW5lLAotKyAgICAgICAgIHdoaWNoIHdpbGwgYmUgdGhlIGxpbmUgb2YgdGhlIGZ1bmN0aW9uIG5hbWUuICAqLwotKyAgICAgIGlmICgoc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfQ09ERSkgPT0gMCkKLSsJewotKwkgIGFzeW1ib2wgKip0bXA7Ci0rCi0rCSAgZm9yICh0bXAgPSBzeW1ib2xzOyAoKnRtcCkgIT0gTlVMTDsgKyt0bXApCi0rCSAgICBpZiAoKCp0bXApLT50aGVfYmZkID09IGFiZmQKLSsJCSYmICgqdG1wKS0+c2VjdGlvbiA9PSBzZWN0aW9uCi0rCQkmJiAoKnRtcCktPnZhbHVlID09IG9mZnNldAotKwkJJiYgKCgqdG1wKS0+ZmxhZ3MgJiBCU0ZfU0VDVElPTl9TWU0pID09IDApCi0rCSAgICAgIHsKLSsJCXN5bWJvbCA9ICp0bXA7Ci0rCQlkb19saW5lID0gVFJVRTsKLSsgICAgICAgICAgICAgICAgLyogRm9yIGxvY2FsIHN5bWJvbHMsIGtlZXAgZ29pbmcgaW4gdGhlIGhvcGUgd2UgZmluZCBhCi0rICAgICAgICAgICAgICAgICAgIGdsb2JhbC4gICovCi0rICAgICAgICAgICAgICAgIGlmICgoc3ltYm9sLT5mbGFncyAmIEJTRl9HTE9CQUwpICE9IDApCi0rICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rCSAgICAgIH0KLSsJfQotICAgICB9Ci0gCi0gICBpZiAoc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24pCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOC1QUi0yMTQwOS1zZWdmYXVsdC1pbi1fYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOC1QUi0yMTQwOS1zZWdmYXVsdC1pbi1fYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNiMzdkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTgtUFItMjE0MDktc2VnZmF1bHQtaW4tX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDk3ZTgzYTEwMGFhODI1MGJlNzgzMzA0YmZlMDQyOTc2MWM2ZTZiNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMyBBcHIgMjAxNyAxMzo1NTo0OSArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUiAyMTQwOSwgc2VnZmF1bHQgaW4gX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUKLQotCVBSIDIxNDA5Ci0JKiBkd2FyZjIuYyAoX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUpOiBEb24ndCBzZWdmYXVsdCB3aGVuCi0Jbm8gc3ltYm9scy4KLQotQ1ZFOiBDVkUtMjAxNy04MzkyCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi0KLVNpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+Ci0tLS0KLSBiZmQvZHdhcmYyLmMgIHwgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvZHdhcmYyLmMgYi9iZmQvZHdhcmYyLmMKLWluZGV4IDEzMmE2NzQuLjBlZjNlMWYgMTAwNjQ0Ci0tLS0gYS9iZmQvZHdhcmYyLmMKLSsrKyBiL2JmZC9kd2FyZjIuYwotQEAgLTQyMDUsNyArNDIwNSw3IEBAIF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCi0gICAgICAgICAgbG9va2luZyB1cCB0aGUgZnVuY3Rpb24gYnkgc2VjdGlvbiArIG9mZnNldCB1c2VzIHRoZQotICAgICAgICAgIERXX0FUX2RlY2xfbGluZSBmcm9tIHRoZSBmdW5jdGlvbiBEV19UQUdfc3VicHJvZ3JhbSBmb3IgdGhlIGxpbmUsCi0gICAgICAgICAgd2hpY2ggd2lsbCBiZSB0aGUgbGluZSBvZiB0aGUgZnVuY3Rpb24gbmFtZS4gICovCi0tICAgICAgaWYgKChzZWN0aW9uLT5mbGFncyAmIFNFQ19DT0RFKSA9PSAwKQotKyAgICAgIGlmIChzeW1ib2xzICE9IE5VTEwgJiYgKHNlY3Rpb24tPmZsYWdzICYgU0VDX0NPREUpID09IDApCi0gCXsKLSAJICBhc3ltYm9sICoqdG1wOwotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMzRjOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLUZyb20gYmRjNTE2NmMyNzRiODQyZjgzZjgzMjhlN2NmYWFmODBmZDI5OTM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTMgRmViIDIwMTcgMTM6MDg6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIEZpeCByZWFkZWxmIHdyaXRpbmcgdG8gaWxsZWdhbCBhZGRyZXNzZXMgd2hpbHN0Ci0gcHJvY2Vzc2luZyBjb3JydXB0IGlucHV0IGZpbGVzIGNvbnRhaW5pbmcgc3ltYm9sLWRpZmZlcmVuY2UgcmVsb2NhdGlvbnMuCi0KLQlQUiBiaW51dGlscy8yMTEzNwotCSogcmVhZGVsZi5jICh0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcpOiBBZGQgZW5kIHBhcmFtZXRlci4KLQlDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93IGJlZm9yZSB3cml0aW5nIHJlbG9jYXRlZCB2YWx1ZXMuCi0JKGFwcGx5X3JlbG9jYXRpb25zKTogUGFzcyBlbmQgdG8gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nLgotCi0oY2hlcnJ5IHBpY2sgZnJvbSBjb21taXQgMDNmNzc4NmUyZjQ0MGI5ODkyYjFjMzRhNThmYjI2MjIyY2UxYjQ5MykKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW21hc3Rlcl0KLUNWRTogQ1ZFLTIwMTctNjk2NQotCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNyArKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvQ2hhbmdlTG9nIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1pbmRleCBmMjE4NjdmOThjLi5lNzg5YTNiOTliIDEwMDY0NAotLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgYi9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE3LTAyLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTEzNwotKwkqIHJlYWRlbGYuYyAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nKTogQWRkIGVuZCBwYXJhbWV0ZXIuCi0rCUNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3cgYmVmb3JlIHdyaXRpbmcgcmVsb2NhdGVkIHZhbHVlcy4KLSsJKGFwcGx5X3JlbG9jYXRpb25zKTogUGFzcyBlbmQgdG8gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nLgotKwotIDIwMTctMDMtMDIgIFRyaXN0YW4gR2luZ29sZCAgPGdpbmdvbGRAYWRhY29yZS5jb20+Ci0gCi0gCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggYjVmNTc3ZjVhMS4uOGNkYWFlM2I4YyAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtMTE1ODUsNiArMTE1ODUsNyBAQCBwcm9jZXNzX3N5bWluZm8gKEZJTEUgKiBmaWxlIEFUVFJJQlVURV9VTlVTRUQpCi0gc3RhdGljIGJmZF9ib29sZWFuCi0gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkJCQl1bnNpZ25lZCBjaGFyICogICAgIHN0YXJ0LAotKwkJCQl1bnNpZ25lZCBjaGFyICogICAgIGVuZCwKLSAJCQkJRWxmX0ludGVybmFsX1N5bSAqICBzeW10YWIpCi0gewotICAgdW5zaWduZWQgaW50IHJlbG9jX3R5cGUgPSBnZXRfcmVsb2NfdHlwZSAocmVsb2MtPnJfaW5mbyk7Ci1AQCAtMTE2MjUsMTMgKzExNjI2LDE5IEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJICBoYW5kbGVfc3ltX2RpZmY6Ci0gCSAgICBpZiAoc2F2ZWRfc3ltICE9IE5VTEwpCi0gCSAgICAgIHsKLSsJCWludCByZWxvY19zaXplID0gcmVsb2NfdHlwZSA9PSAxID8gNCA6IDI7Ci0gCQliZmRfdm1hIHZhbHVlOwotIAotIAkJdmFsdWUgPSByZWxvYy0+cl9hZGRlbmQKLSAJCSAgKyAoc3ltdGFiW2dldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyldLnN0X3ZhbHVlCi0gCQkgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0gCi0tCQlieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY190eXBlID09IDEgPyA0IDogMik7Ci0rCQlpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLSsJCSAgLyogUFIgMjExMzcgKi8KLSsJCSAgZXJyb3IgKF8oIk1TUDQzMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLSsJCQkgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplLCBlbmQpOwotKwkJZWxzZQotKwkJICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY19zaXplKTsKLSAKLSAJCXNhdmVkX3N5bSA9IE5VTEw7Ci0gCQlyZXR1cm4gVFJVRTsKLUBAIC0xMTY2MiwxMyArMTE2NjksMTggQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkgIGNhc2UgMjogLyogUl9NTjEwMzAwXzE2ICovCi0gCSAgICBpZiAoc2F2ZWRfc3ltICE9IE5VTEwpCi0gCSAgICAgIHsKLSsJCWludCByZWxvY19zaXplID0gcmVsb2NfdHlwZSA9PSAxID8gNCA6IDI7Ci0gCQliZmRfdm1hIHZhbHVlOwotIAotIAkJdmFsdWUgPSByZWxvYy0+cl9hZGRlbmQKLSAJCSAgKyAoc3ltdGFiW2dldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyldLnN0X3ZhbHVlCi0gCQkgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0gCi0tCQlieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY190eXBlID09IDEgPyA0IDogMik7Ci0rCQlpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLSsJCSAgZXJyb3IgKF8oIk1OMTAzMDAgc3ltIGRpZmYgcmVsb2Mgd3JpdGVzIHBhc3QgZW5kIG9mIHNlY3Rpb24gKCVwIHZzICVwKVxuIiksCi0rCQkJIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSwgZW5kKTsKLSsJCWVsc2UKLSsJCSAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2Nfc2l6ZSk7Ci0gCi0gCQlzYXZlZF9zeW0gPSBOVUxMOwotIAkJcmV0dXJuIFRSVUU7Ci1AQCAtMTE3MDMsMTIgKzExNzE1LDIwIEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJICAgIGJyZWFrOwotIAotIAkgIGNhc2UgMHg0MTogLyogUl9STDc4X0FCUzMyLiAgKi8KLS0JICAgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIDQpOwotKwkgICAgaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgNCA+PSBlbmQpCi0rCSAgICAgIGVycm9yIChfKCJSTDc4IHN5bSBkaWZmIHJlbG9jIHdyaXRlcyBwYXN0IGVuZCBvZiBzZWN0aW9uICglcCB2cyAlcClcbiIpLAotKwkJICAgICBzdGFydCArIHJlbG9jLT5yX29mZnNldCArIDIsIGVuZCk7Ci0rCSAgICBlbHNlCi0rCSAgICAgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIDQpOwotIAkgICAgdmFsdWUgPSAwOwotIAkgICAgcmV0dXJuIFRSVUU7Ci0gCi0gCSAgY2FzZSAweDQzOiAvKiBSX1JMNzhfQUJTMTYuICAqLwotLQkgICAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgMik7Ci0rCSAgICBpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyAyID49IGVuZCkKLSsJICAgICAgZXJyb3IgKF8oIlJMNzggc3ltIGRpZmYgcmVsb2Mgd3JpdGVzIHBhc3QgZW5kIG9mIHNlY3Rpb24gKCVwIHZzICVwKVxuIiksCi0rCQkgICAgIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgMiwgZW5kKTsKLSsJICAgIGVsc2UKLSsJICAgICAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgMik7Ci0gCSAgICB2YWx1ZSA9IDA7Ci0gCSAgICByZXR1cm4gVFJVRTsKLSAKLUBAIC0xMjMyNSw3ICsxMjM0NSw3IEBAIGFwcGx5X3JlbG9jYXRpb25zICh2b2lkICogICAgICAgICAgICAgICAgICAgICBmaWxlLAotIAotIAkgIHJlbG9jX3R5cGUgPSBnZXRfcmVsb2NfdHlwZSAocnAtPnJfaW5mbyk7Ci0gCi0tCSAgaWYgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAocnAsIHN0YXJ0LCBzeW10YWIpKQotKwkgIGlmICh0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKHJwLCBzdGFydCwgZW5kLCBzeW10YWIpKQotIAkgICAgY29udGludWU7Ci0gCSAgZWxzZSBpZiAoaXNfbm9uZV9yZWxvYyAocmVsb2NfdHlwZSkpCi0gCSAgICBjb250aW51ZTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ1OGRmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotRnJvbSAzODNlYzc1N2QyNzY1MjQ0OGQxNTExMTY5ZTExMzNmNDg2YWJmNTRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxMyBGZWIgMjAxNyAxNDowMzoyMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggcmVhZC1hZnRlci1mcmVlIGVycm9yIGluIHJlYWRlbGYgd2hlbiBwcm9jZXNzaW5nCi0gbXVsdGlwbGUsIHJlbG9jYXRlZCBzZWN0aW9ucyBpbiBhbiBNU1A0MzAgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjExMzkKLQkqIHJlYWRlbGYuYyAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nKTogQWRkIG51bV9zeW1zCi0JcGFyYW1ldGVyLiAgQ2hlY2sgZm9yIHN5bWJvbCB0YWJsZSBvdmVyZmxvdyBiZWZvcmUgYWNjZXNzaW5nCi0Jc3ltYm9sIHZhbHVlLiAgSWYgcmVsb2MgcG9pbnRlciBpcyBOVUxMLCBkaXNjYXJkIGFsbCBzYXZlZCBzdGF0ZS4KLQkoYXBwbHlfcmVsb2NhdGlvbnMpOiBQYXNzIG51bV9zeW1zIHRvIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZy4KLQlDYWxsIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyB3aXRoIGEgTlVMTCByZWxvYyBwb2ludGVyCi0JYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgb2YgdGhlIHJlbG9jcy4KLQotKGNoZXJyeSBwaWNrIGZyb20gY29tbWl0IGY4NGNlMTNiNjcwODgwMWNhMWQ2Mjg5YjdjNDAwM2UyZjVhNmQ3ZjkpCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFttYXN0ZXJdCi1DVkU6IENWRS0yMDE3LTY5NjYKLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDEwICsrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMTA5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL0NoYW5nZUxvZyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotaW5kZXggZTc4OWEzYjk5Yi4uYmQ2M2M4YTBkOCAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSw1ICsxLDE1IEBACi0gMjAxNy0wMi0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSsJUFIgYmludXRpbHMvMjExMzkKLSsJKiByZWFkZWxmLmMgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyk6IEFkZCBudW1fc3ltcwotKwlwYXJhbWV0ZXIuICBDaGVjayBmb3Igc3ltYm9sIHRhYmxlIG92ZXJmbG93IGJlZm9yZSBhY2Nlc3NpbmcKLSsJc3ltYm9sIHZhbHVlLiAgSWYgcmVsb2MgcG9pbnRlciBpcyBOVUxMLCBkaXNjYXJkIGFsbCBzYXZlZCBzdGF0ZS4KLSsJKGFwcGx5X3JlbG9jYXRpb25zKTogUGFzcyBudW1fc3ltcyB0byB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcuCi0rCUNhbGwgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIHdpdGggYSBOVUxMIHJlbG9jIHBvaW50ZXIKLSsJYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgb2YgdGhlIHJlbG9jcy4KLSsKLSsyMDE3LTAyLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotIAlQUiBiaW51dGlscy8yMTEzNwotIAkqIHJlYWRlbGYuYyAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nKTogQWRkIGVuZCBwYXJhbWV0ZXIuCi0gCUNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3cgYmVmb3JlIHdyaXRpbmcgcmVsb2NhdGVkIHZhbHVlcy4KLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IDhjZGFhZTNiOGMuLjdjMTU4YzYzNDIgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTExNTgwLDE1ICsxMTU4MCwyNyBAQCBwcm9jZXNzX3N5bWluZm8gKEZJTEUgKiBmaWxlIEFUVFJJQlVURV9VTlVTRUQpCi0gCi0gLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBnaXZlbiByZWxvYyBuZWVkcyB0byBiZSBoYW5kbGVkIGluIGEgdGFyZ2V0IHNwZWNpZmljCi0gICAgbWFubmVyLiAgSWYgc28gdGhlbiBwcm9jZXNzIHRoZSByZWxvYyBhbmQgcmV0dXJuIFRSVUUgb3RoZXJ3aXNlIHJldHVybgotLSAgIEZBTFNFLiAgKi8KLSsgICBGQUxTRS4KLSsKLSsgICBJZiBjYWxsZWQgd2l0aCByZWxvYyA9PSBOVUxMLCB0aGVuIHRoaXMgaXMgYSBzaWduYWwgdGhhdCByZWxvYyBwcm9jZXNzaW5nCi0rICAgZm9yIHRoZSBjdXJyZW50IHNlY3Rpb24gaGFzIGZpbmlzaGVkLCBhbmQgYW55IHNhdmVkIHN0YXRlIHNob3VsZCBiZQotKyAgIGRpc2NhcmRlZC4gICovCi0gCi0gc3RhdGljIGJmZF9ib29sZWFuCi0gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkJCQl1bnNpZ25lZCBjaGFyICogICAgIHN0YXJ0LAotIAkJCQl1bnNpZ25lZCBjaGFyICogICAgIGVuZCwKLS0JCQkJRWxmX0ludGVybmFsX1N5bSAqICBzeW10YWIpCi0rCQkJCUVsZl9JbnRlcm5hbF9TeW0gKiAgc3ltdGFiLAotKwkJCQl1bnNpZ25lZCBsb25nICAgICAgIG51bV9zeW1zKQotIHsKLS0gIHVuc2lnbmVkIGludCByZWxvY190eXBlID0gZ2V0X3JlbG9jX3R5cGUgKHJlbG9jLT5yX2luZm8pOwotKyAgdW5zaWduZWQgaW50IHJlbG9jX3R5cGUgPSAwOwotKyAgdW5zaWduZWQgbG9uZyBzeW1faW5kZXggPSAwOwotKwotKyAgaWYgKHJlbG9jKQotKyAgICB7Ci0rICAgICAgcmVsb2NfdHlwZSA9IGdldF9yZWxvY190eXBlIChyZWxvYy0+cl9pbmZvKTsKLSsgICAgICBzeW1faW5kZXggPSBnZXRfcmVsb2Nfc3ltaW5kZXggKHJlbG9jLT5yX2luZm8pOwotKyAgICB9Ci0gCi0gICBzd2l0Y2ggKGVsZl9oZWFkZXIuZV9tYWNoaW5lKQotICAgICB7Ci1AQCAtMTE1OTcsNiArMTE2MDksMTIgQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotICAgICAgIHsKLSAJc3RhdGljIEVsZl9JbnRlcm5hbF9TeW0gKiBzYXZlZF9zeW0gPSBOVUxMOwotIAotKwlpZiAocmVsb2MgPT0gTlVMTCkKLSsJICB7Ci0rCSAgICBzYXZlZF9zeW0gPSBOVUxMOwotKwkgICAgcmV0dXJuIFRSVUU7Ci0rCSAgfQotKwotIAlzd2l0Y2ggKHJlbG9jX3R5cGUpCi0gCSAgewotIAkgIGNhc2UgMTA6IC8qIFJfTVNQNDMwX1NZTV9ESUZGICovCi1AQCAtMTE2MDQsNyArMTE2MjIsMTIgQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkgICAgICBicmVhazsKLSAJICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0gCSAgY2FzZSAyMTogLyogUl9NU1A0MzBYX1NZTV9ESUZGICovCi0tCSAgICBzYXZlZF9zeW0gPSBzeW10YWIgKyBnZXRfcmVsb2Nfc3ltaW5kZXggKHJlbG9jLT5yX2luZm8pOwotKwkgICAgLyogUFIgMjExMzkuICAqLwotKwkgICAgaWYgKHN5bV9pbmRleCA+PSBudW1fc3ltcykKLSsJICAgICAgZXJyb3IgKF8oIk1TUDQzMCBTWU1fRElGRiByZWxvYyBjb250YWlucyBpbnZhbGlkIHN5bWJvbCBpbmRleCAlbHVcbiIpLAotKwkJICAgICBzeW1faW5kZXgpOwotKwkgICAgZWxzZQotKwkgICAgICBzYXZlZF9zeW0gPSBzeW10YWIgKyBzeW1faW5kZXg7Ci0gCSAgICByZXR1cm4gVFJVRTsKLSAKLSAJICBjYXNlIDE6IC8qIFJfTVNQNDMwXzMyIG9yIFJfTVNQNDMwX0FCUzMyICovCi1AQCAtMTE2MjksMTYgKzExNjUyLDIxIEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJCWludCByZWxvY19zaXplID0gcmVsb2NfdHlwZSA9PSAxID8gNCA6IDI7Ci0gCQliZmRfdm1hIHZhbHVlOwotIAotLQkJdmFsdWUgPSByZWxvYy0+cl9hZGRlbmQKLS0JCSAgKyAoc3ltdGFiW2dldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyldLnN0X3ZhbHVlCi0tCQkgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0tCi0tCQlpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLS0JCSAgLyogUFIgMjExMzcgKi8KLS0JCSAgZXJyb3IgKF8oIk1TUDQzMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLS0JCQkgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplLCBlbmQpOwotKwkJaWYgKHN5bV9pbmRleCA+PSBudW1fc3ltcykKLSsJCSAgZXJyb3IgKF8oIk1TUDQzMCByZWxvYyBjb250YWlucyBpbnZhbGlkIHN5bWJvbCBpbmRleCAlbHVcbiIpLAotKwkJCSBzeW1faW5kZXgpOwotIAkJZWxzZQotLQkJICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY19zaXplKTsKLSsJCSAgewotKwkJICAgIHZhbHVlID0gcmVsb2MtPnJfYWRkZW5kICsgKHN5bXRhYltzeW1faW5kZXhdLnN0X3ZhbHVlCi0rCQkJCQkgICAgICAgLSBzYXZlZF9zeW0tPnN0X3ZhbHVlKTsKLSsKLSsJCSAgICBpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLSsJCSAgICAgIC8qIFBSIDIxMTM3ICovCi0rCQkgICAgICBlcnJvciAoXygiTVNQNDMwIHN5bSBkaWZmIHJlbG9jIHdyaXRlcyBwYXN0IGVuZCBvZiBzZWN0aW9uICglcCB2cyAlcClcbiIpLAotKwkJCSAgICAgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplLCBlbmQpOwotKwkJICAgIGVsc2UKLSsJCSAgICAgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIHJlbG9jX3NpemUpOwotKwkJICB9Ci0gCi0gCQlzYXZlZF9zeW0gPSBOVUxMOwotIAkJcmV0dXJuIFRSVUU7Ci1AQCAtMTE2NTgsMTMgKzExNjg2LDI0IEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAgICAgICB7Ci0gCXN0YXRpYyBFbGZfSW50ZXJuYWxfU3ltICogc2F2ZWRfc3ltID0gTlVMTDsKLSAKLSsJaWYgKHJlbG9jID09IE5VTEwpCi0rCSAgewotKwkgICAgc2F2ZWRfc3ltID0gTlVMTDsKLSsJICAgIHJldHVybiBUUlVFOwotKwkgIH0KLSsKLSAJc3dpdGNoIChyZWxvY190eXBlKQotIAkgIHsKLSAJICBjYXNlIDM0OiAvKiBSX01OMTAzMDBfQUxJR04gKi8KLSAJICAgIHJldHVybiBUUlVFOwotIAkgIGNhc2UgMzM6IC8qIFJfTU4xMDMwMF9TWU1fRElGRiAqLwotLQkgICAgc2F2ZWRfc3ltID0gc3ltdGFiICsgZ2V0X3JlbG9jX3N5bWluZGV4IChyZWxvYy0+cl9pbmZvKTsKLSsJICAgIGlmIChzeW1faW5kZXggPj0gbnVtX3N5bXMpCi0rCSAgICAgIGVycm9yIChfKCJNTjEwMzAwX1NZTV9ESUZGIHJlbG9jIGNvbnRhaW5zIGludmFsaWQgc3ltYm9sIGluZGV4ICVsdVxuIiksCi0rCQkgICAgIHN5bV9pbmRleCk7Ci0rCSAgICBlbHNlCi0rCSAgICAgIHNhdmVkX3N5bSA9IHN5bXRhYiArIHN5bV9pbmRleDsKLSAJICAgIHJldHVybiBUUlVFOwotKwotIAkgIGNhc2UgMTogLyogUl9NTjEwMzAwXzMyICovCi0gCSAgY2FzZSAyOiAvKiBSX01OMTAzMDBfMTYgKi8KLSAJICAgIGlmIChzYXZlZF9zeW0gIT0gTlVMTCkKLUBAIC0xMTY3MiwxNSArMTE3MTEsMjAgQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkJaW50IHJlbG9jX3NpemUgPSByZWxvY190eXBlID09IDEgPyA0IDogMjsKLSAJCWJmZF92bWEgdmFsdWU7Ci0gCi0tCQl2YWx1ZSA9IHJlbG9jLT5yX2FkZGVuZAotLQkJICArIChzeW10YWJbZ2V0X3JlbG9jX3N5bWluZGV4IChyZWxvYy0+cl9pbmZvKV0uc3RfdmFsdWUKLS0JCSAgICAgLSBzYXZlZF9zeW0tPnN0X3ZhbHVlKTsKLS0KLS0JCWlmIChzdGFydCArIHJlbG9jLT5yX29mZnNldCArIHJlbG9jX3NpemUgPj0gZW5kKQotLQkJICBlcnJvciAoXygiTU4xMDMwMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLS0JCQkgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplLCBlbmQpOwotKwkJaWYgKHN5bV9pbmRleCA+PSBudW1fc3ltcykKLSsJCSAgZXJyb3IgKF8oIk1OMTAzMDAgcmVsb2MgY29udGFpbnMgaW52YWxpZCBzeW1ib2wgaW5kZXggJWx1XG4iKSwKLSsJCQkgc3ltX2luZGV4KTsKLSAJCWVsc2UKLS0JCSAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2Nfc2l6ZSk7Ci0rCQkgIHsKLSsJCSAgICB2YWx1ZSA9IHJlbG9jLT5yX2FkZGVuZCArIChzeW10YWJbc3ltX2luZGV4XS5zdF92YWx1ZQotKwkJCQkJICAgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0rCi0rCQkgICAgaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSA+PSBlbmQpCi0rCQkgICAgICBlcnJvciAoXygiTU4xMDMwMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLSsJCQkgICAgIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSwgZW5kKTsKLSsJCSAgICBlbHNlCi0rCQkgICAgICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY19zaXplKTsKLSsJCSAgfQotIAotIAkJc2F2ZWRfc3ltID0gTlVMTDsKLSAJCXJldHVybiBUUlVFOwotQEAgLTExNzAwLDEyICsxMTc0NCwyNCBAQCB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKEVsZl9JbnRlcm5hbF9SZWxhICogcmVsb2MsCi0gCXN0YXRpYyBiZmRfdm1hIHNhdmVkX3N5bTIgPSAwOwotIAlzdGF0aWMgYmZkX3ZtYSB2YWx1ZTsKLSAKLSsJaWYgKHJlbG9jID09IE5VTEwpCi0rCSAgewotKwkgICAgc2F2ZWRfc3ltMSA9IHNhdmVkX3N5bTIgPSAwOwotKwkgICAgcmV0dXJuIFRSVUU7Ci0rCSAgfQotKwotIAlzd2l0Y2ggKHJlbG9jX3R5cGUpCi0gCSAgewotIAkgIGNhc2UgMHg4MDogLyogUl9STDc4X1NZTS4gICovCi0gCSAgICBzYXZlZF9zeW0xID0gc2F2ZWRfc3ltMjsKLS0JICAgIHNhdmVkX3N5bTIgPSBzeW10YWJbZ2V0X3JlbG9jX3N5bWluZGV4IChyZWxvYy0+cl9pbmZvKV0uc3RfdmFsdWU7Ci0tCSAgICBzYXZlZF9zeW0yICs9IHJlbG9jLT5yX2FkZGVuZDsKLSsJICAgIGlmIChzeW1faW5kZXggPj0gbnVtX3N5bXMpCi0rCSAgICAgIGVycm9yIChfKCJSTDc4X1NZTSByZWxvYyBjb250YWlucyBpbnZhbGlkIHN5bWJvbCBpbmRleCAlbHVcbiIpLAotKwkJICAgICBzeW1faW5kZXgpOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlzYXZlZF9zeW0yID0gc3ltdGFiW3N5bV9pbmRleF0uc3RfdmFsdWU7Ci0rCQlzYXZlZF9zeW0yICs9IHJlbG9jLT5yX2FkZGVuZDsKLSsJICAgICAgfQotIAkgICAgcmV0dXJuIFRSVUU7Ci0gCi0gCSAgY2FzZSAweDgzOiAvKiBSX1JMNzhfT1BzdWIuICAqLwotQEAgLTEyMzQ1LDcgKzEyNDAxLDcgQEAgYXBwbHlfcmVsb2NhdGlvbnMgKHZvaWQgKiAgICAgICAgICAgICAgICAgICAgIGZpbGUsCi0gCi0gCSAgcmVsb2NfdHlwZSA9IGdldF9yZWxvY190eXBlIChycC0+cl9pbmZvKTsKLSAKLS0JICBpZiAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChycCwgc3RhcnQsIGVuZCwgc3ltdGFiKSkKLSsJICBpZiAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChycCwgc3RhcnQsIGVuZCwgc3ltdGFiLCBudW1fc3ltcykpCi0gCSAgICBjb250aW51ZTsKLSAJICBlbHNlIGlmIChpc19ub25lX3JlbG9jIChyZWxvY190eXBlKSkKLSAJICAgIGNvbnRpbnVlOwotQEAgLTEyNDQxLDYgKzEyNDk3LDkgQEAgYXBwbHlfcmVsb2NhdGlvbnMgKHZvaWQgKiAgICAgICAgICAgICAgICAgICAgIGZpbGUsCi0gCX0KLSAKLSAgICAgICBmcmVlIChzeW10YWIpOwotKyAgICAgIC8qIExldCB0aGUgdGFyZ2V0IHNwZWNpZmljIHJlbG9jIHByb2Nlc3NpbmcgY29kZSBrbm93IHRoYXQKLSsJIHdlIGhhdmUgZmluaXNoZWQgd2l0aCB0aGVzZSByZWxvY3MuICAqLwotKyAgICAgIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgMCk7Ci0gCi0gICAgICAgaWYgKHJlbG9jc19yZXR1cm4pCi0gCXsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ1NDAzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDFkOWEyNjk2OTAzZmM1OWQ2YTkzNmY0YWI0ZTQ0MDdlZjMyOWQwNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDE3IEZlYiAyMDE3IDE1OjU5OjQ1ICswMDAwCi1TdWJqZWN0OiBGaXggaWxsZWdhbCBtZW1vcnkgYWNjZXNzZXMgaW4gcmVhZGVsZiB3aGVuIHBhcnNpbmcKLSBhIGNvcnJ1cHQgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjExNTYKLQkqIHJlYWRlbGYuYyAoZmluZF9zZWN0aW9uX2luX3NldCk6IFRlc3QgZm9yIGludmFsaWQgc2VjdGlvbgotCWluZGljaWVzLgotCi1DVkU6IENWRS0yMDE3LTY5NjkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW21hc3Rlcl0KLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDYgKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMTAgKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL0NoYW5nZUxvZyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotaW5kZXggYmQ2M2M4YTBkOC4uMWQ4NDBiNDJmOSAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTAyLTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTE1NgotKwkqIHJlYWRlbGYuYyAoZmluZF9zZWN0aW9uX2luX3NldCk6IFRlc3QgZm9yIGludmFsaWQgc2VjdGlvbgotKwlpbmRpY2llcy4KLSsKLSAyMDE3LTAyLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTEzOQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggN2MxNThjNjM0Mi4uNDk2MDQ5MWM1YyAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtNjc1LDggKzY3NSwxNCBAQCBmaW5kX3NlY3Rpb25faW5fc2V0IChjb25zdCBjaGFyICogbmFtZSwgdW5zaWduZWQgaW50ICogc2V0KQotICAgaWYgKHNldCAhPSBOVUxMKQotICAgICB7Ci0gICAgICAgd2hpbGUgKChpID0gKnNldCsrKSA+IDApCi0tCWlmIChzdHJlcSAoU0VDVElPTl9OQU1FIChzZWN0aW9uX2hlYWRlcnMgKyBpKSwgbmFtZSkpCi0tCSAgcmV0dXJuIHNlY3Rpb25faGVhZGVycyArIGk7Ci0rCXsKLSsJICAvKiBTZWUgUFIgMjExNTYgZm9yIGEgcmVwcm9kdWNlci4gICovCi0rCSAgaWYgKGkgPj0gZWxmX2hlYWRlci5lX3NobnVtKQotKwkgICAgY29udGludWU7IC8qIEZJWE1FOiBTaG91bGQgd2UgaXNzdWUgYW4gZXJyb3IgbWVzc2FnZSA/ICAqLwotKwotKwkgIGlmIChzdHJlcSAoU0VDVElPTl9OQU1FIChzZWN0aW9uX2hlYWRlcnMgKyBpKSwgbmFtZSkpCi0rCSAgICByZXR1cm4gc2VjdGlvbl9oZWFkZXJzICsgaTsKLSsJfQotICAgICB9Ci0gCi0gICByZXR1cm4gZmluZF9zZWN0aW9uIChuYW1lKTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2OV8yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY5XzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YTVkZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY5XzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotRnJvbSBlZjgxMTI2MzE0ZjY3NDcyYTQ2ZGI5NTgxNTMwZmJmNWNjYjZiM2YyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyMCBGZWIgMjAxNyAxNDo0MDozOSArMDAwMAotU3ViamVjdDogRml4IGFub3RoZXIgbWVtb3J5IGFjY2VzcyBlcnJvciBpbiByZWFkZWxmIHdoZW4KLSBwYXJzaW5nIGEgY29ycnVwdCBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTE1NgotCSogZHdhcmYuYyAoY3VfdHVfaW5kZXhlc19yZWFkKTogTW92ZSBpbnRvLi4uCi0JKGxvYWRfY3VfdHVfaW5kZXhlcyk6IC4uLiBoZXJlLiAgQ2hhbmdlIHRoZSB2YXJpYWJsZSBpbnRvCi0JdHJpLXN0YXRlLiAgQ2hhbmdlIHRoZSBmdW5jdGlvbiBpbnRvIGJvb2xlYW4sIHJldHVybmluZwotCWZhbHNlIGlmIHRoZSBpbmRpY2llcyBjb3VsZCBub3QgYmUgbG9hZGVkLgotCShmaW5kX2N1X3R1X3NldCk6IFJldHVybiBOVUxMIGlmIHRoZSBpbmRpY2llcyBjb3VsZCBub3QgYmUKLQlsb2FkZWQuCi0KLUNWRTogQ1ZFLTIwMTctNjk2OQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbbWFzdGVyXQotCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAxMCArKysrKysrKysrCi0gYmludXRpbHMvZHdhcmYuYyAgIHwgMzQgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9DaGFuZ2VMb2cgYi9iaW51dGlscy9DaGFuZ2VMb2cKLWluZGV4IDFkODQwYjQyZjkuLjUzMzUyYzE4MDEgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMyBAQAotKzIwMTctMDItMjAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxMTU2Ci0rCSogZHdhcmYuYyAoY3VfdHVfaW5kZXhlc19yZWFkKTogTW92ZSBpbnRvLi4uCi0rCShsb2FkX2N1X3R1X2luZGV4ZXMpOiAuLi4gaGVyZS4gIENoYW5nZSB0aGUgdmFyaWFibGUgaW50bwotKwl0cmktc3RhdGUuICBDaGFuZ2UgdGhlIGZ1bmN0aW9uIGludG8gYm9vbGVhbiwgcmV0dXJuaW5nCi0rCWZhbHNlIGlmIHRoZSBpbmRpY2llcyBjb3VsZCBub3QgYmUgbG9hZGVkLgotKwkoZmluZF9jdV90dV9zZXQpOiBSZXR1cm4gTlVMTCBpZiB0aGUgaW5kaWNpZXMgY291bGQgbm90IGJlCi0rCWxvYWRlZC4KLSsKLSAyMDE3LTAyLTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTE1NgotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2R3YXJmLmMgYi9iaW51dGlscy9kd2FyZi5jCi1pbmRleCAwMTg0YTdhYjJlLi42ZDg3OWM5YjYxIDEwMDY0NAotLS0tIGEvYmludXRpbHMvZHdhcmYuYwotKysrIGIvYmludXRpbHMvZHdhcmYuYwotQEAgLTc2LDcgKzc2LDYgQEAgaW50IGR3YXJmX2NoZWNrID0gMDsKLSAgICBhcyBhIHplcm8tdGVybWluYXRlZCBsaXN0IG9mIHNlY3Rpb24gaW5kZXhlcyBjb21wcmlzaW5nIG9uZSBzZXQgb2YgZGVidWcKLSAgICBzZWN0aW9ucyBmcm9tIGEgLmR3byBmaWxlLiAgKi8KLSAKLS1zdGF0aWMgaW50IGN1X3R1X2luZGV4ZXNfcmVhZCA9IDA7Ci0gc3RhdGljIHVuc2lnbmVkIGludCAqc2huZHhfcG9vbCA9IE5VTEw7Ci0gc3RhdGljIHVuc2lnbmVkIGludCBzaG5keF9wb29sX3NpemUgPSAwOwotIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2huZHhfcG9vbF91c2VkID0gMDsKLUBAIC05OSw3ICs5OCw3IEBAIHN0YXRpYyBpbnQgdHVfY291bnQgPSAwOwotIHN0YXRpYyBzdHJ1Y3QgY3VfdHVfc2V0ICpjdV9zZXRzID0gTlVMTDsKLSBzdGF0aWMgc3RydWN0IGN1X3R1X3NldCAqdHVfc2V0cyA9IE5VTEw7Ci0gCi0tc3RhdGljIHZvaWQgbG9hZF9jdV90dV9pbmRleGVzICh2b2lkICpmaWxlKTsKLStzdGF0aWMgYmZkX2Jvb2xlYW4gbG9hZF9jdV90dV9pbmRleGVzICh2b2lkICopOwotIAotIC8qIFZhbHVlcyBmb3IgZG9fZGVidWdfbGluZXMuICAqLwotICNkZWZpbmUgRkxBR19ERUJVR19MSU5FU19SQVcJIDEKLUBAIC0yNzE1LDcgKzI3MTQsNyBAQCBsb2FkX2RlYnVnX2luZm8gKHZvaWQgKiBmaWxlKQotICAgICByZXR1cm4gbnVtX2RlYnVnX2luZm9fZW50cmllczsKLSAKLSAgIC8qIElmIHRoaXMgaXMgYSBEV0FSRiBwYWNrYWdlIGZpbGUsIGxvYWQgdGhlIENVIGFuZCBUVSBpbmRleGVzLiAgKi8KLS0gIGxvYWRfY3VfdHVfaW5kZXhlcyAoZmlsZSk7Ci0rICAodm9pZCkgbG9hZF9jdV90dV9pbmRleGVzIChmaWxlKTsKLSAKLSAgIGlmIChsb2FkX2RlYnVnX3NlY3Rpb24gKGluZm8sIGZpbGUpCi0gICAgICAgJiYgcHJvY2Vzc19kZWJ1Z19pbmZvICgmZGVidWdfZGlzcGxheXMgW2luZm9dLnNlY3Rpb24sIGZpbGUsIGFiYnJldiwgMSwgMCkpCi1AQCAtNzM3OCwyMSArNzM3NywyNyBAQCBwcm9jZXNzX2N1X3R1X2luZGV4IChzdHJ1Y3QgZHdhcmZfc2VjdGlvbiAqc2VjdGlvbiwgaW50IGRvX2Rpc3BsYXkpCi0gICAgc2VjdGlvbiBzZXRzIHRoYXQgd2UgY2FuIHVzZSB0byBhc3NvY2lhdGUgYSAuZGVidWdfaW5mby5kd28gc2VjdGlvbgotICAgIHdpdGggaXRzIGFzc29jaWF0ZWQgLmRlYnVnX2FiYnJldi5kd28gc2VjdGlvbiBpbiBhIC5kd3AgZmlsZS4gICovCi0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgYmZkX2Jvb2xlYW4KLSBsb2FkX2N1X3R1X2luZGV4ZXMgKHZvaWQgKmZpbGUpCi0gewotKyAgc3RhdGljIGludCBjdV90dV9pbmRleGVzX3JlYWQgPSAtMTsgLyogVHJpLXN0YXRlIHZhcmlhYmxlLiAgKi8KLSsKLSAgIC8qIElmIHdlIGhhdmUgYWxyZWFkeSBsb2FkZWQgKG9yIHRyaWVkIHRvIGxvYWQpIHRoZSBDVSBhbmQgVFUgaW5kZXhlcwotICAgICAgdGhlbiBkbyBub3QgYm90aGVyIHRvIHJlcGVhdCB0aGUgdGFzay4gICovCi0tICBpZiAoY3VfdHVfaW5kZXhlc19yZWFkKQotLSAgICByZXR1cm47Ci0tCi0tICBpZiAobG9hZF9kZWJ1Z19zZWN0aW9uIChkd3BfY3VfaW5kZXgsIGZpbGUpKQotLSAgICBwcm9jZXNzX2N1X3R1X2luZGV4ICgmZGVidWdfZGlzcGxheXMgW2R3cF9jdV9pbmRleF0uc2VjdGlvbiwgMCk7Ci0tCi0tICBpZiAobG9hZF9kZWJ1Z19zZWN0aW9uIChkd3BfdHVfaW5kZXgsIGZpbGUpKQotLSAgICBwcm9jZXNzX2N1X3R1X2luZGV4ICgmZGVidWdfZGlzcGxheXMgW2R3cF90dV9pbmRleF0uc2VjdGlvbiwgMCk7Ci0rICBpZiAoY3VfdHVfaW5kZXhlc19yZWFkID09IC0xKQotKyAgICB7Ci0rICAgICAgY3VfdHVfaW5kZXhlc19yZWFkID0gVFJVRTsKLSsgIAotKyAgICAgIGlmIChsb2FkX2RlYnVnX3NlY3Rpb24gKGR3cF9jdV9pbmRleCwgZmlsZSkpCi0rCWlmICghIHByb2Nlc3NfY3VfdHVfaW5kZXggKCZkZWJ1Z19kaXNwbGF5cyBbZHdwX2N1X2luZGV4XS5zZWN0aW9uLCAwKSkKLSsJICBjdV90dV9pbmRleGVzX3JlYWQgPSBGQUxTRTsKLSsKLSsgICAgICBpZiAobG9hZF9kZWJ1Z19zZWN0aW9uIChkd3BfdHVfaW5kZXgsIGZpbGUpKQotKwlpZiAoISBwcm9jZXNzX2N1X3R1X2luZGV4ICgmZGVidWdfZGlzcGxheXMgW2R3cF90dV9pbmRleF0uc2VjdGlvbiwgMCkpCi0rCSAgY3VfdHVfaW5kZXhlc19yZWFkID0gRkFMU0U7Ci0rICAgIH0KLSAKLS0gIGN1X3R1X2luZGV4ZXNfcmVhZCA9IDE7Ci0rICByZXR1cm4gKGJmZF9ib29sZWFuKSBjdV90dV9pbmRleGVzX3JlYWQ7Ci0gfQotIAotIC8qIEZpbmQgdGhlIHNldCBvZiBzZWN0aW9ucyB0aGF0IGluY2x1ZGVzIHNlY3Rpb24gU0hORFguICAqLwotQEAgLTc0MDIsNyArNzQwNyw4IEBAIGZpbmRfY3VfdHVfc2V0ICh2b2lkICpmaWxlLCB1bnNpZ25lZCBpbnQgc2huZHgpCi0gewotICAgdW5zaWduZWQgaW50IGk7Ci0gCi0tICBsb2FkX2N1X3R1X2luZGV4ZXMgKGZpbGUpOwotKyAgaWYgKCEgbG9hZF9jdV90dV9pbmRleGVzIChmaWxlKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICAvKiBGaW5kIFNITkRYIGluIHRoZSBzaG5keCBwb29sLiAgKi8KLSAgIGZvciAoaSA9IDA7IGkgPCBzaG5keF9wb29sX3VzZWQ7IGkrKykKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIwOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIwOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM1N2ExMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMDkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIGIyNzA2Y2VhZGFjNzIzOWU3YjAyZDQzZjA1MTAwZmM2NTM4YjBkNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDEzIEZlYiAyMDE3IDE1OjA0OjM3ICswMDAwCi1TdWJqZWN0OiBGaXggaW52YWxpZCByZWFkIG9mIHNlY3Rpb24gY29udGVudHMgd2hpbHN0IHByb2Nlc3NpbmcgYSBjb3JydXB0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxMTM1Ci0JKiByZWFkZWxmLmMgKGR1bXBfc2VjdGlvbl9hc19ieXRlcyk6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZQotCXVuY29tcHJlc3Nfc2VjdGlvbl9jb250ZW50cyByZXR1cm5zIGZhbHNlLgotCi1DVkU6IENWRS0yMDE3LTcyMDkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnRbbWFzdGVyXQotCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNiArKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgfCAxNiArKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvQ2hhbmdlTG9nIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1pbmRleCA1MzM1MmMxODAxLi5jZjkyNzQ0YzEyIDEwMDY0NAotLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgYi9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDItMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxMTM1Ci0rCSogcmVhZGVsZi5jIChkdW1wX3NlY3Rpb25fYXNfYnl0ZXMpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUKLSsJdW5jb21wcmVzc19zZWN0aW9uX2NvbnRlbnRzIHJldHVybnMgZmFsc2UuCi0rCi0gMjAxNy0wMi0yMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjExNTYKLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IDQ5NjA0OTFjNWMuLmYwZTdiMDgwZTggMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTEyODAzLDEwICsxMjgwMywxOCBAQCBkdW1wX3NlY3Rpb25fYXNfYnl0ZXMgKEVsZl9JbnRlcm5hbF9TaGRyICogc2VjdGlvbiwKLSAJICBuZXdfc2l6ZSAtPSAxMjsKLSAJfQotIAotLSAgICAgIGlmICh1bmNvbXByZXNzZWRfc2l6ZQotLQkgICYmIHVuY29tcHJlc3Nfc2VjdGlvbl9jb250ZW50cyAoJiBzdGFydCwgdW5jb21wcmVzc2VkX3NpemUsCi0tCQkJCQkgICYgbmV3X3NpemUpKQotLQlzZWN0aW9uX3NpemUgPSBuZXdfc2l6ZTsKLSsgICAgICBpZiAodW5jb21wcmVzc2VkX3NpemUpCi0rCXsKLSsJICBpZiAodW5jb21wcmVzc19zZWN0aW9uX2NvbnRlbnRzICgmIHN0YXJ0LCB1bmNvbXByZXNzZWRfc2l6ZSwKLSsJCQkJCSAgICYgbmV3X3NpemUpKQotKwkgICAgc2VjdGlvbl9zaXplID0gbmV3X3NpemU7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBlcnJvciAoXygiVW5hYmxlIHRvIGRlY29tcHJlc3Mgc2VjdGlvbiAlc1xuIiksCi0rCQkgICAgIHByaW50YWJsZV9zZWN0aW9uX25hbWUgKHNlY3Rpb24pKTsKLSsJICAgICAgcmV0dXJuOwotKwkgICAgfQotKwl9Ci0gICAgIH0KLSAKLSAgIGlmIChyZWxvY2F0ZSkKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIxMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIxMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc5MTc5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIDRkYTU5OGE0NzJlMWQyOTg4MjUwMzVlNDUyZTNiYzY4ZjcxNDMxMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDE0IEZlYiAyMDE3IDE0OjA3OjI5ICswMDAwCi1TdWJqZWN0OiBGaXggaGFuZGxpbmcgb2YgY29ycnVwdCBTVEFCUyBlbnVtIHR5cGUgc3RyaW5ncy4KLQotCVBSIGJpbnV0aWxzLzIxMTU3Ci0JKiBzdGFicy5jIChwYXJzZV9zdGFiX2VudW1fdHlwZSk6IENoZWNrIGZvciBjb3JydXB0IE5BTUU6VkFMVUUKLQlwYWlycy4KLQkocGFyc2VfbnVtYmVyKTogRXhpdCBlYXJseSBpZiBwYXNzZWQgYW4gZW1wdHkgc3RyaW5nLgotCi1DVkU6IENWRS0yMDE3LTcyMTAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW21hc3Rlcl0KLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDcgKysrKysrKwotIGJpbnV0aWxzL3N0YWJzLmMgICB8IDE0ICsrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9DaGFuZ2VMb2cgYi9iaW51dGlscy9DaGFuZ2VMb2cKLWluZGV4IGNmOTI3NDRjMTIuLjAwNDVmYmFhYTYgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMCBAQAotKzIwMTctMDItMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxMTU3Ci0rCSogc3RhYnMuYyAocGFyc2Vfc3RhYl9lbnVtX3R5cGUpOiBDaGVjayBmb3IgY29ycnVwdCBOQU1FOlZBTFVFCi0rCXBhaXJzLgotKwkocGFyc2VfbnVtYmVyKTogRXhpdCBlYXJseSBpZiBwYXNzZWQgYW4gZW1wdHkgc3RyaW5nLgotKwotIDIwMTctMDItMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCVBSIGJpbnV0aWxzLzIxMTM1Ci1kaWZmIC0tZ2l0IGEvYmludXRpbHMvc3RhYnMuYyBiL2JpbnV0aWxzL3N0YWJzLmMKLWluZGV4IGY1YzVkMmQ4ZTAuLjVkMDEzY2MzNjEgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9zdGFicy5jCi0rKysgYi9iaW51dGlscy9zdGFicy5jCi1AQCAtMjMyLDYgKzIzMiwxMCBAQCBwYXJzZV9udW1iZXIgKGNvbnN0IGNoYXIgKipwcCwgYmZkX2Jvb2xlYW4gKnBvdmVyZmxvdykKLSAKLSAgIG9yaWcgPSAqcHA7Ci0gCi0rICAvKiBTdG9wIGVhcmx5IGlmIHdlIGFyZSBwYXNzZWQgYW4gZW1wdHkgc3RyaW5nLiAgKi8KLSsgIGlmICgqb3JpZyA9PSAwKQotKyAgICByZXR1cm4gKGJmZF92bWEpIDA7Ci0rCi0gICBlcnJubyA9IDA7Ci0gICB1bCA9IHN0cnRvdWwgKCpwcCwgKGNoYXIgKiopIHBwLCAwKTsKLSAgIGlmICh1bCArIDEgIT0gMCB8fCBlcnJubyA9PSAwKQotQEAgLTE5NzUsOSArMTk3OSwxNyBAQCBwYXJzZV9zdGFiX2VudW1fdHlwZSAodm9pZCAqZGhhbmRsZSwgY29uc3QgY2hhciAqKnBwKQotICAgICAgIGJmZF9zaWduZWRfdm1hIHZhbDsKLSAKLSAgICAgICBwID0gKnBwOwotLSAgICAgIHdoaWxlICgqcCAhPSAnOicpCi0rICAgICAgd2hpbGUgKCpwICE9ICc6JyAmJiAqcCAhPSAwKQotIAkrK3A7Ci0gCi0rICAgICAgaWYgKCpwID09IDApCi0rCXsKLSsJICBiYWRfc3RhYiAob3JpZyk7Ci0rCSAgZnJlZSAobmFtZXMpOwotKwkgIGZyZWUgKHZhbHVlcyk7Ci0rCSAgcmV0dXJuIERFQlVHX1RZUEVfTlVMTDsKLSsJfQotKwotICAgICAgIG5hbWUgPSBzYXZlc3RyaW5nICgqcHAsIHAgLSAqcHApOwotIAotICAgICAgICpwcCA9IHAgKyAxOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy03MjIzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy03MjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzhjOGJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gNjlhY2UyMjAwMTA2MzQ4YTFiMDBkNTA5YTZhMjM0MzM3YzEwNGMxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMSBEZWMgMjAxNiAxNToyMDoxOSArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggc2VnIGZhdWx0IGF0dGVtcHRpbmcgdG8gdW5nZXQgYW4gRU9GIGNoYXJhY3Rlci4KLQotCVBSIGdhcy8yMDg5OAotCSogYXBwLmMgKGRvX3NjcnViX2NoYXJzKTogRG8gbm90IGF0dGVtcHQgdG8gdW5nZXQgRU9GLgotCi1BZmZlY3RzOiA8PSAyLjI4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTcyMjMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBnYXMvQ2hhbmdlTG9nIHwgMyArKysKLSBnYXMvYXBwLmMgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvZ2FzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2dhcy9DaGFuZ2VMb2cKLSsrKyBnaXQvZ2FzL0NoYW5nZUxvZwotQEAgLTEsMyArMSw4IEBACi0rMjAxNi0xMi0wMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsgCi0rICAgICAgIFBSIGdhcy8yMDg5OAotKyAgICAgICAqIGFwcC5jIChkb19zY3J1Yl9jaGFycyk6IERvIG5vdCBhdHRlbXB0IHRvIHVuZ2V0IEVPRi4KLSsKLSAyMDE3LTAzLTAyICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgotIAotIAkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLUBAIC0xOTgsNyArMjAzLDYgQEAKLSAJKiBjb25maWcvdGMtcHJ1LmMgKG1kX251bWJlcl90b19jaGFycyk6IEZpeCBwYXJhbWV0ZXIgdG8gYmUKLSAJdmFsdWVULCBhcyBkZWNsYXJlZCBpbiB0Yy5oLgotIAkobWRfYXBwbHlfZml4KTogRml4IHRvIHdvcmsgb24gMzItYml0IGhvc3RzLgotLT4+Pj4+Pj4gMDExNTYxMS4uLiBSSVNDLVYvR0FTOiBDb3JyZWN0IGJyYW5jaCByZWxheGF0aW9uIGZvciB3ZWFrIHN5bWJvbHMuCi0gCi0gMjAxNy0wMS0wMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi1JbmRleDogZ2l0L2dhcy9hcHAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2dhcy9hcHAuYwotKysrIGdpdC9nYXMvYXBwLmMKLUBAIC0xMzUwLDcgKzEzNTAsNyBAQCBkb19zY3J1Yl9jaGFycyAoc2l6ZV90ICgqZ2V0KSAoY2hhciAqLCBzCi0gCQkgIFBVVCAoY2gpOwotIAkJICBicmVhazsKLSAJCX0KLS0JICAgICAgZWxzZQotKwkgICAgICBlbHNlIGlmIChjaDIgIT0gRU9GKQotIAkJewotIAkJICBzdGF0ZSA9IDk7Ci0gCQkgIGlmIChjaCA9PSBFT0YgfHwgIUlTX1NZTUJPTF9DT01QT05FTlQgKGNoKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzYxNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzYxNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU4NjMxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTc2MTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotRnJvbSBhZDMyOTg2ZmRmOWRhMWM4NzQ4ZTQ3YjhiNDUxMDAzOTgyMjNkYmE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCA0IEFwciAyMDE3IDExOjIzOjM2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHdoZW4gdXNpbmcgYSBsaW5rIGJ1aWx0IHdpdGgKLSBjbGFuZy4KLQotCVBSIGJpbnV0aWxzLzIxMzQyCi0JKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2RlZmluZV9saW5rYWdlX3N5bSk6IFByZXZlbnQgbnVsbCBwb2ludGVyCi0JZGVyZWZlcmVuY2UuCi0JKGJmZF9lbGZfZmluYWxfbGluayk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5kZWQgc3ltYm9sIGluZGV4Ci0Jc2VjdGlvbiBpZiB0aGVyZSBhcmUgZXh0ZW5kZWQgc3ltYm9sIHRhYmxlcyB0byBsaXN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTc2MTQKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgIDggKysrKysrKysKLSBiZmQvZWxmbGluay5jIHwgMzUgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9lbGZsaW5rLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmbGluay5jCi0rKysgZ2l0L2JmZC9lbGZsaW5rLmMKLUBAIC0xMTksMTUgKzExOSwxOCBAQCBfYmZkX2VsZl9kZWZpbmVfbGlua2FnZV9zeW0gKGJmZCAqYWJmZCwKLSAJIGRlZmluZWQgaW4gc2hhcmVkIGxpYnJhcmllcyBjYW4ndCBiZSBvdmVycmlkZGVuLCBiZWNhdXNlIHdlCi0gCSBsb3NlIHRoZSBsaW5rIHRvIHRoZSBiZmQgd2hpY2ggaXMgdmlhIHRoZSBzeW1ib2wgc2VjdGlvbi4gICovCi0gICAgICAgaC0+cm9vdC50eXBlID0gYmZkX2xpbmtfaGFzaF9uZXc7Ci0rICAgICAgYmggPSAmaC0+cm9vdDsKLSAgICAgfQotKyAgZWxzZQotKyAgICBiaCA9IE5VTEw7Ci0gCi0tICBiaCA9ICZoLT5yb290OwotICAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotICAgaWYgKCFfYmZkX2dlbmVyaWNfbGlua19hZGRfb25lX3N5bWJvbCAoaW5mbywgYWJmZCwgbmFtZSwgQlNGX0dMT0JBTCwKLSAJCQkJCSBzZWMsIDAsIE5VTEwsIEZBTFNFLCBiZWQtPmNvbGxlY3QsCi0gCQkJCQkgJmJoKSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGJoOwotKyAgQkZEX0FTU0VSVCAoaCAhPSBOVUxMKTsKLSAgIGgtPmRlZl9yZWd1bGFyID0gMTsKLSAgIGgtPm5vbl9lbGYgPSAwOwotICAgaC0+cm9vdC5saW5rZXJfZGVmID0gMTsKLUBAIC0xMTk3MywyNCArMTE5NzYsMjggQEAgYmZkX2VsZl9maW5hbF9saW5rIChiZmQgKmFiZmQsIHN0cnVjdCBiZgotICAgICB7Ci0gICAgICAgLyogRmluaXNoIHVwIGFuZCB3cml0ZSBvdXQgdGhlIHN5bWJvbCBzdHJpbmcgdGFibGUgKC5zdHJ0YWIpCi0gCSBzZWN0aW9uLiAgKi8KLS0gICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltc3RydGFiX2hkcjsKLSsgICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltc3RydGFiX2hkciA9IE5VTEw7Ci0gICAgICAgZmlsZV9wdHIgb2ZmID0gc3ltdGFiX2hkci0+c2hfb2Zmc2V0ICsgc3ltdGFiX2hkci0+c2hfc2l6ZTsKLSAKLS0gICAgICBzeW10YWJfc2huZHhfaGRyID0gJiBlbGZfc3ltdGFiX3NobmR4X2xpc3QgKGFiZmQpLT5oZHI7Ci0tICAgICAgaWYgKHN5bXRhYl9zaG5keF9oZHIgIT0gTlVMTCAmJiBzeW10YWJfc2huZHhfaGRyLT5zaF9uYW1lICE9IDApCi0rICAgICAgaWYgKGVsZl9zeW10YWJfc2huZHhfbGlzdCAoYWJmZCkpCi0gCXsKLS0JICBzeW10YWJfc2huZHhfaGRyLT5zaF90eXBlID0gU0hUX1NZTVRBQl9TSE5EWDsKLS0JICBzeW10YWJfc2huZHhfaGRyLT5zaF9lbnRzaXplID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLS0JICBzeW10YWJfc2huZHhfaGRyLT5zaF9hZGRyYWxpZ24gPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOwotLQkgIGFtdCA9IGJmZF9nZXRfc3ltY291bnQgKGFiZmQpICogc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLS0JICBzeW10YWJfc2huZHhfaGRyLT5zaF9zaXplID0gYW10OwotKwkgIHN5bXRhYl9zaG5keF9oZHIgPSAmIGVsZl9zeW10YWJfc2huZHhfbGlzdCAoYWJmZCktPmhkcjsKLSAKLS0JICBvZmYgPSBfYmZkX2VsZl9hc3NpZ25fZmlsZV9wb3NpdGlvbl9mb3Jfc2VjdGlvbiAoc3ltdGFiX3NobmR4X2hkciwKLS0JCQkJCQkJICAgb2ZmLCBUUlVFKTsKLSsJICBpZiAoc3ltdGFiX3NobmR4X2hkciAhPSBOVUxMICYmIHN5bXRhYl9zaG5keF9oZHItPnNoX25hbWUgIT0gMCkKLSsJICAgIHsKLSsJICAgICAgc3ltdGFiX3NobmR4X2hkci0+c2hfdHlwZSA9IFNIVF9TWU1UQUJfU0hORFg7Ci0rCSAgICAgIHN5bXRhYl9zaG5keF9oZHItPnNoX2VudHNpemUgPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOwotKwkgICAgICBzeW10YWJfc2huZHhfaGRyLT5zaF9hZGRyYWxpZ24gPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOwotKwkgICAgICBhbXQgPSBiZmRfZ2V0X3N5bWNvdW50IChhYmZkKSAqIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7Ci0rCSAgICAgIHN5bXRhYl9zaG5keF9oZHItPnNoX3NpemUgPSBhbXQ7Ci0gCi0tCSAgaWYgKGJmZF9zZWVrIChhYmZkLCBzeW10YWJfc2huZHhfaGRyLT5zaF9vZmZzZXQsIFNFRUtfU0VUKSAhPSAwCi0tCSAgICAgIHx8IChiZmRfYndyaXRlIChmbGluZm8uc3ltc2huZHhidWYsIGFtdCwgYWJmZCkgIT0gYW10KSkKLS0JICAgIHJldHVybiBGQUxTRTsKLSsJICAgICAgb2ZmID0gX2JmZF9lbGZfYXNzaWduX2ZpbGVfcG9zaXRpb25fZm9yX3NlY3Rpb24gKHN5bXRhYl9zaG5keF9oZHIsCi0rCQkJCQkJCSAgICAgICBvZmYsIFRSVUUpOwotKwotKwkgICAgICBpZiAoYmZkX3NlZWsgKGFiZmQsIHN5bXRhYl9zaG5keF9oZHItPnNoX29mZnNldCwgU0VFS19TRVQpICE9IDAKLSsJCSAgfHwgKGJmZF9id3JpdGUgKGZsaW5mby5zeW1zaG5keGJ1ZiwgYW10LCBhYmZkKSAhPSBhbXQpKQotKwkJcmV0dXJuIEZBTFNFOwotKwkgICAgfQotIAl9Ci0gCi0gICAgICAgc3ltc3RydGFiX2hkciA9ICZlbGZfdGRhdGEgKGFiZmQpLT5zdHJ0YWJfaGRyOwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rMjAxNy0wNC0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjEzNDIKLSsgICAgICAgKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2RlZmluZV9saW5rYWdlX3N5bSk6IFByZXZlbnQgbnVsbCBwb2ludGVyCi0rICAgICAgIGRlcmVmZXJlbmNlLgotKyAgICAgICAoYmZkX2VsZl9maW5hbF9saW5rKTogT25seSBpbml0aWFsaXplIHRoZSBleHRlbmRlZCBzeW1ib2wgaW5kZXgKLSsgICAgICAgc2VjdGlvbiBpZiB0aGVyZSBhcmUgZXh0ZW5kZWQgc3ltYm9sIHRhYmxlcyB0byBsaXN0LgotKwotIDIwMTctMDMtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlQUiAyMTIyNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04MzkzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04MzkzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTAwYTAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNSArMCwwIEBACi1Gcm9tIGJjZTk2NGFhNmM3NzdkMjM2ZmJkNjQxZjJiYzdiYjkzMWNmZTRiZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMyBBcHIgMjAxNyAxMTowMzozNCArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUiAyMTQxMiwgZ2V0X3JlbG9jX3NlY3Rpb24gYXNzdW1lcyAucmVsLy5yZWxhIG5hbWUgZm9yCi0gU0hUX1JFTC9SRUxBLgotCi1UaGlzIHBhdGNoIGZpeGVzIGFuIGFzc3VtcHRpb24gbWFkZSBieSBjb2RlIHRoYXQgcnVucyBmb3Igb2JqY29weSBhbmQKLXN0cmlwLCB0aGF0IFNIVF9SRUwvU0hSX1JFTEEgc2VjdGlvbnMgYXJlIGFsd2F5cyBuYW1lZCBzdGFydGluZyB3aXRoIGEKLS5yZWwvLnJlbGEgcHJlZml4LiAgSSdtIGFsc28gbW9kaWZ5aW5nIHRoZSBpbnRlcmZhY2UgZm9yCi1lbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbiwgc28gYW55IGJhY2tlbmQgZnVuY3Rpb24ganVzdCBuZWVkcyB0bwotaGFuZGxlIG5hbWUgbWFwcGluZy4KLQotCVBSIDIxNDEyCi0JKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhIDxnZXRfcmVsb2Nfc2VjdGlvbj4pOiBDaGFuZ2UKLQlwYXJhbWV0ZXJzIGFuZCBjb21tZW50LgotCShfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbik6IERlbGV0ZS4KLQkoX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uKTogRGVjbGFyZS4KLQkqIGVsZi5jIChfYmZkX2VsZl9wbHRfZ2V0X3JlbG9jX3NlY3Rpb24sIGVsZl9nZXRfcmVsb2Nfc2VjdGlvbik6Ci0JTmV3IGZ1bmN0aW9ucy4gIERvbid0IGJsaW5kbHkgc2tpcCBvdmVyIGFzc3VtZWQgLnJlbC8ucmVsYSBwcmVmaXguCi0JRXh0cmFjdGVkIGZyb20uLgotCShfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbik6IC4uaGVyZS4gIERlbGV0ZS4KLQkoYXNzaWduX3NlY3Rpb25fbnVtYmVycyk6IENhbGwgZWxmX2dldF9yZWxvY19zZWN0aW9uLgotCSogZWxmNjQtcHBjLmMgKGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uKTogRGVmaW5lLgotCSogZWxmeHgtdGFyZ2V0LmggKGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uKTogVXBkYXRlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTgzOTMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgICAgfCAxNSArKysrKysrKysrKysrKwotIGJmZC9lbGYtYmZkLmggICAgICB8ICA4ICsrKystLS0KLSBiZmQvZWxmLmMgICAgICAgICAgfCA2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBiZmQvZWxmNjQtcHBjLmMgICAgfCAgMSArCi0gYmZkL2VsZnh4LXRhcmdldC5oIHwgIDIgKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9lbGYtYmZkLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmLWJmZC5oCi0rKysgZ2l0L2JmZC9lbGYtYmZkLmgKLUBAIC0xMzIyLDggKzEzMjIsMTAgQEAgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEKLSAgIGJmZF9zaXplX3R5cGUgKCptYXliZV9mdW5jdGlvbl9zeW0pIChjb25zdCBhc3ltYm9sICpzeW0sIGFzZWN0aW9uICpzZWMsCi0gCQkJCSAgICAgICBiZmRfdm1hICpjb2RlX29mZik7Ci0gCi0tICAvKiBSZXR1cm4gdGhlIHNlY3Rpb24gd2hpY2ggUkVMT0NfU0VDIGFwcGxpZXMgdG8uICAqLwotLSAgYXNlY3Rpb24gKigqZ2V0X3JlbG9jX3NlY3Rpb24pIChhc2VjdGlvbiAqcmVsb2Nfc2VjKTsKLSsgIC8qIEdpdmVuIE5BTUUsIHRoZSBuYW1lIG9mIGEgcmVsb2NhdGlvbiBzZWN0aW9uIHN0cmlwcGVkIG9mIGl0cwotKyAgICAgLnJlbC8ucmVsYSBwcmVmaXgsIHJldHVybiB0aGUgc2VjdGlvbiBpbiBBQkZEIHRvIHdoaWNoIHRoZQotKyAgICAgcmVsb2NhdGlvbnMgYXBwbHkuICAqLwotKyAgYXNlY3Rpb24gKigqZ2V0X3JlbG9jX3NlY3Rpb24pIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKm5hbWUpOwotIAotICAgLyogQ2FsbGVkIHRvIHNldCB0aGUgc2hfZmxhZ3MsIHNoX2xpbmsgYW5kIHNoX2luZm8gZmllbGRzIG9mIE9TRUNUSU9OIHdoaWNoCi0gICAgICBoYXMgYSB0eXBlID49IFNIVF9MT09TLiAgUmV0dXJucyBUUlVFIGlmIHRoZSBmaWVsZHMgd2VyZSBpbml0aWFsaXNlZCwKLUBAIC0yMzkyLDcgKzIzOTQsNyBAQCBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9lbGZfaXNfZnVuY3Rpb25fCi0gZXh0ZXJuIGJmZF9zaXplX3R5cGUgX2JmZF9lbGZfbWF5YmVfZnVuY3Rpb25fc3ltIChjb25zdCBhc3ltYm9sICosIGFzZWN0aW9uICosCi0gCQkJCQkJICBiZmRfdm1hICopOwotIAotLWV4dGVybiBhc2VjdGlvbiAqX2JmZF9lbGZfZ2V0X3JlbG9jX3NlY3Rpb24gKGFzZWN0aW9uICopOwotK2V4dGVybiBhc2VjdGlvbiAqX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uIChiZmQgKiwgY29uc3QgY2hhciAqKTsKLSAKLSBleHRlcm4gaW50IGJmZF9lbGZfZ2V0X2RlZmF1bHRfc2VjdGlvbl90eXBlIChmbGFnd29yZCk7Ci0gCi1JbmRleDogZ2l0L2JmZC9lbGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGYuYwotKysrIGdpdC9iZmQvZWxmLmMKLUBAIC0zNTMyLDE3ICszNTMyLDM5IEBAIGJmZF9lbGZfc2V0X2dyb3VwX2NvbnRlbnRzIChiZmQgKmFiZmQsIGEKLSAgIEhfUFVUXzMyIChhYmZkLCBzZWMtPmZsYWdzICYgU0VDX0xJTktfT05DRSA/IEdSUF9DT01EQVQgOiAwLCBsb2MpOwotIH0KLSAKLS0vKiBSZXR1cm4gdGhlIHNlY3Rpb24gd2hpY2ggUkVMT0NfU0VDIGFwcGxpZXMgdG8uICAqLwotKy8qIEdpdmVuIE5BTUUsIHRoZSBuYW1lIG9mIGEgcmVsb2NhdGlvbiBzZWN0aW9uIHN0cmlwcGVkIG9mIGl0cwotKyAgIC5yZWwvLnJlbGEgcHJlZml4LCByZXR1cm4gdGhlIHNlY3Rpb24gaW4gQUJGRCB0byB3aGljaCB0aGUKLSsgICByZWxvY2F0aW9ucyBhcHBseS4gICovCi0gCi0gYXNlY3Rpb24gKgotLV9iZmRfZWxmX2dldF9yZWxvY19zZWN0aW9uIChhc2VjdGlvbiAqcmVsb2Nfc2VjKQotK19iZmRfZWxmX3BsdF9nZXRfcmVsb2Nfc2VjdGlvbiAoYmZkICphYmZkLCBjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIC8qIElmIGEgdGFyZ2V0IG5lZWRzIC5nb3QucGx0IHNlY3Rpb24sIHJlbG9jYXRpb25zIGluIHJlbGEucGx0L3JlbC5wbHQKLSsgICAgIHNlY3Rpb24gbGlrZWx5IGFwcGx5IHRvIC5nb3QucGx0IG9yIC5nb3Qgc2VjdGlvbi4gICovCi0rICBpZiAoZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT53YW50X2dvdF9wbHQKLSsgICAgICAmJiBzdHJjbXAgKG5hbWUsICIucGx0IikgPT0gMCkKLSsgICAgewotKyAgICAgIGFzZWN0aW9uICpzZWM7Ci0rCi0rICAgICAgbmFtZSA9ICIuZ290LnBsdCI7Ci0rICAgICAgc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsIG5hbWUpOwotKyAgICAgIGlmIChzZWMgIT0gTlVMTCkKLSsJcmV0dXJuIHNlYzsKLSsgICAgICBuYW1lID0gIi5nb3QiOwotKyAgICB9Ci0rCi0rICByZXR1cm4gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsIG5hbWUpOwotK30KLSsKLSsvKiBSZXR1cm4gdGhlIHNlY3Rpb24gdG8gd2hpY2ggUkVMT0NfU0VDIGFwcGxpZXMuICAqLwotKwotK3N0YXRpYyBhc2VjdGlvbiAqCi0rZWxmX2dldF9yZWxvY19zZWN0aW9uIChhc2VjdGlvbiAqcmVsb2Nfc2VjKQotIHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB1bnNpZ25lZCBpbnQgdHlwZTsKLSAgIGJmZCAqYWJmZDsKLS0KLS0gIGlmIChyZWxvY19zZWMgPT0gTlVMTCkKLS0gICAgcmV0dXJuIE5VTEw7Ci0rICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOwotIAotICAgdHlwZSA9IGVsZl9zZWN0aW9uX2RhdGEgKHJlbG9jX3NlYyktPnRoaXNfaGRyLnNoX3R5cGU7Ci0gICBpZiAodHlwZSAhPSBTSFRfUkVMICYmIHR5cGUgIT0gU0hUX1JFTEEpCi1AQCAtMzU1MCwyOCArMzU3MiwxNSBAQCBfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbiAoYXNlY3Rpb24gKnJlCi0gCi0gICAvKiBXZSBsb29rIHVwIHRoZSBzZWN0aW9uIHRoZSByZWxvY3MgYXBwbHkgdG8gYnkgbmFtZS4gICovCi0gICBuYW1lID0gcmVsb2Nfc2VjLT5uYW1lOwotLSAgaWYgKHR5cGUgPT0gU0hUX1JFTCkKLS0gICAgbmFtZSArPSA0OwotLSAgZWxzZQotLSAgICBuYW1lICs9IDU7Ci0rICBpZiAoc3RybmNtcCAobmFtZSwgIi5yZWwiLCA0KSAhPSAwKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIG5hbWUgKz0gNDsKLSsgIGlmICh0eXBlID09IFNIVF9SRUxBICYmICpuYW1lKysgIT0gJ2EnKQotKyAgICByZXR1cm4gTlVMTDsKLSAKLS0gIC8qIElmIGEgdGFyZ2V0IG5lZWRzIC5nb3QucGx0IHNlY3Rpb24sIHJlbG9jYXRpb25zIGluIHJlbGEucGx0L3JlbC5wbHQKLS0gICAgIHNlY3Rpb24gYXBwbHkgdG8gLmdvdC5wbHQgc2VjdGlvbi4gICovCi0gICBhYmZkID0gcmVsb2Nfc2VjLT5vd25lcjsKLS0gIGlmIChnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCktPndhbnRfZ290X3BsdAotLSAgICAgICYmIHN0cmNtcCAobmFtZSwgIi5wbHQiKSA9PSAwKQotLSAgICB7Ci0tICAgICAgLyogLmdvdC5wbHQgaXMgYSBsaW5rZXIgY3JlYXRlZCBpbnB1dCBzZWN0aW9uLiAgSXQgbWF5IGJlIG1hcHBlZAotLQkgdG8gc29tZSBvdGhlciBvdXRwdXQgc2VjdGlvbi4gIFRyeSB0d28gbGlrZWx5IHNlY3Rpb25zLiAgKi8KLS0gICAgICBuYW1lID0gIi5nb3QucGx0IjsKLS0gICAgICByZWxvY19zZWMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgbmFtZSk7Ci0tICAgICAgaWYgKHJlbG9jX3NlYyAhPSBOVUxMKQotLQlyZXR1cm4gcmVsb2Nfc2VjOwotLSAgICAgIG5hbWUgPSAiLmdvdCI7Ci0tICAgIH0KLS0KLS0gIHJlbG9jX3NlYyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBuYW1lKTsKLS0gIHJldHVybiByZWxvY19zZWM7Ci0rICBiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7Ci0rICByZXR1cm4gYmVkLT5nZXRfcmVsb2Nfc2VjdGlvbiAoYWJmZCwgbmFtZSk7Ci0gfQotIAotIC8qIEFzc2lnbiBhbGwgRUxGIHNlY3Rpb24gbnVtYmVycy4gIFRoZSBkdW1teSBmaXJzdCBzZWN0aW9uIGlzIGhhbmRsZWQgaGVyZQotQEAgLTM4MzMsNyArMzg0Miw3IEBAIGFzc2lnbl9zZWN0aW9uX251bWJlcnMgKGJmZCAqYWJmZCwgc3RydWMKLSAJICBpZiAocyAhPSBOVUxMKQotIAkgICAgZC0+dGhpc19oZHIuc2hfbGluayA9IGVsZl9zZWN0aW9uX2RhdGEgKHMpLT50aGlzX2lkeDsKLSAKLS0JICBzID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT5nZXRfcmVsb2Nfc2VjdGlvbiAoc2VjKTsKLSsJICBzID0gZWxmX2dldF9yZWxvY19zZWN0aW9uIChzZWMpOwotIAkgIGlmIChzICE9IE5VTEwpCi0gCSAgICB7Ci0gCSAgICAgIGQtPnRoaXNfaGRyLnNoX2luZm8gPSBlbGZfc2VjdGlvbl9kYXRhIChzKS0+dGhpc19pZHg7Ci1JbmRleDogZ2l0L2JmZC9lbGY2NC1wcGMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGY2NC1wcGMuYwotKysrIGdpdC9iZmQvZWxmNjQtcHBjLmMKLUBAIC0xMjEsNiArMTIxLDcgQEAgc3RhdGljIGJmZF92bWEgb3BkX2VudHJ5X3ZhbHVlCi0gI2RlZmluZSBlbGZfYmFja2VuZF9zcGVjaWFsX3NlY3Rpb25zCSAgICAgIHBwYzY0X2VsZl9zcGVjaWFsX3NlY3Rpb25zCi0gI2RlZmluZSBlbGZfYmFja2VuZF9tZXJnZV9zeW1ib2xfYXR0cmlidXRlICAgIHBwYzY0X2VsZl9tZXJnZV9zeW1ib2xfYXR0cmlidXRlCi0gI2RlZmluZSBlbGZfYmFja2VuZF9tZXJnZV9zeW1ib2wJICAgICAgcHBjNjRfZWxmX21lcmdlX3N5bWJvbAotKyNkZWZpbmUgZWxmX2JhY2tlbmRfZ2V0X3JlbG9jX3NlY3Rpb24JICAgICAgYmZkX2dldF9zZWN0aW9uX2J5X25hbWUKLSAKLSAvKiBUaGUgbmFtZSBvZiB0aGUgZHluYW1pYyBpbnRlcnByZXRlci4gIFRoaXMgaXMgcHV0IGluIHRoZSAuaW50ZXJwCi0gICAgc2VjdGlvbi4gICovCi1JbmRleDogZ2l0L2JmZC9lbGZ4eC10YXJnZXQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGZ4eC10YXJnZXQuaAotKysrIGdpdC9iZmQvZWxmeHgtdGFyZ2V0LmgKLUBAIC03MDYsNyArNzA2LDcgQEAKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uCi0tI2RlZmluZSBlbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbiBfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbgotKyNkZWZpbmUgZWxmX2JhY2tlbmRfZ2V0X3JlbG9jX3NlY3Rpb24gX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uCi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBlbGZfYmFja2VuZF9jb3B5X3NwZWNpYWxfc2VjdGlvbl9maWVsZHMKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxOCBAQAotKzIwMTctMDQtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKyAKLSsgICAgICAgUFIgMjE0MTIKLSsgICAgICAgKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhIDxnZXRfcmVsb2Nfc2VjdGlvbj4pOiBDaGFuZ2UKLSsgICAgICAgcGFyYW1ldGVycyBhbmQgY29tbWVudC4KLSsgICAgICAgKF9iZmRfZWxmX2dldF9yZWxvY19zZWN0aW9uKTogRGVsZXRlLgotKyAgICAgICAoX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uKTogRGVjbGFyZS4KLSsgICAgICAgKiBlbGYuYyAoX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uLCBlbGZfZ2V0X3JlbG9jX3NlY3Rpb24pOgotKyAgICAgICBOZXcgZnVuY3Rpb25zLiAgRG9uJ3QgYmxpbmRseSBza2lwIG92ZXIgYXNzdW1lZCAucmVsLy5yZWxhIHByZWZpeC4KLSsgICAgICAgRXh0cmFjdGVkIGZyb20uLgotKyAgICAgICAoX2JmZF9lbGZfZ2V0X3JlbG9jX3NlY3Rpb24pOiAuLmhlcmUuICBEZWxldGUuCi0rICAgICAgIChhc3NpZ25fc2VjdGlvbl9udW1iZXJzKTogQ2FsbCBlbGZfZ2V0X3JlbG9jX3NlY3Rpb24uCi0rICAgICAgICogZWxmNjQtcHBjLmMgKGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uKTogRGVmaW5lLgotKyAgICAgICAqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbik6IFVwZGF0ZS4KLSsKLSAyMDE3LTA0LTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTM0MgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmM2YjE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1Gcm9tIDdlYWNkNjZiMDg2Y2FiYjFkYWFiMjA4OTBkNTQ4MTg5NGQ0ZjU2YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMyBBcHIgMjAxNyAxNToyMToxMSArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUiAyMTQxNCwgbnVsbCBwb2ludGVyIGRlcmVmIG9mIF9iZmRfZWxmX2xhcmdlX2NvbV9zZWN0aW9uCi0gc3ltCi0KLQlQUiAyMTQxNAotCSogc2VjdGlvbi5jIChHTE9CQUxfU1lNX0lOSVQpOiBNYWtlIGF2YWlsYWJsZSBpbiBiZmQuaC4KLQkqIGVsZi5jIChsY29tbV9zeW0pOiBOZXcuCi0JKF9iZmRfZWxmX2xhcmdlX2NvbV9zZWN0aW9uKTogVXNlIGxjb21tX3N5bSBzZWN0aW9uIHN5bWJvbC4KLQkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04Mzk0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA4ICsrKysrKysrCi0gYmZkL2JmZC1pbjIuaCB8IDEyICsrKysrKysrKysrKwotIGJmZC9lbGYuYyAgICAgfCAgNiArKysrLS0KLSBiZmQvc2VjdGlvbi5jIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvYmZkLWluMi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2JmZC1pbjIuaAotKysrIGdpdC9iZmQvYmZkLWluMi5oCi1AQCAtMTgzOCw2ICsxODM4LDE4IEBAIGV4dGVybiBhc2VjdGlvbiBfYmZkX3N0ZF9zZWN0aW9uWzRdOwotICAgICAgeyBOVUxMIH0sIHsgTlVMTCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9Ci0gCi0rLyogV2UgdXNlIGEgbWFjcm8gdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGljIGFzeW1ib2wgc3RydWN0dXJlcyBiZWNhdXNlCi0rICAgdHJhZGl0aW9uYWwgQyBkb2VzIG5vdCBwZXJtaXQgdXMgdG8gaW5pdGlhbGl6ZSBhIHVuaW9uIG1lbWJlciB3aGlsZQotKyAgIGdjYyB3YXJucyBpZiB3ZSBkb24ndCBpbml0aWFsaXplIGl0LgotKyAgIHRoZV9iZmQsIG5hbWUsIHZhbHVlLCBhdHRyLCBzZWN0aW9uIFssIHVkYXRhXSAgKi8KLSsjaWZkZWYgX19TVERDX18KLSsjZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0rICB7IDAsIE5BTUUsIDAsIEJTRl9TRUNUSU9OX1NZTSwgU0VDVElPTiwgeyAwIH19Ci0rI2Vsc2UKLSsjZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0rICB7IDAsIE5BTUUsIDAsIEJTRl9TRUNUSU9OX1NZTSwgU0VDVElPTiB9Ci0rI2VuZGlmCi0rCi0gdm9pZCBiZmRfc2VjdGlvbl9saXN0X2NsZWFyIChiZmQgKik7Ci0gCi0gYXNlY3Rpb24gKmJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKm5hbWUpOwotSW5kZXg6IGdpdC9iZmQvZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmLmMKLSsrKyBnaXQvYmZkL2VsZi5jCi1AQCAtMTExNjQsOSArMTExNjQsMTEgQEAgX2JmZF9lbGZfZ2V0X3N5bnRoZXRpY19zeW10YWIgKGJmZCAqYWJmZAotIAotIC8qIEl0IGlzIG9ubHkgdXNlZCBieSB4ODYtNjQgc28gZmFyLgotICAgID8/PyBUaGlzIHJlcGVhdHMgKkNPTSogaWQgb2YgemVyby4gIHNlYy0+aWQgaXMgc3VwcG9zZWQgdG8gYmUgdW5pcXVlLAotLSAgIGJ1dCBjdXJyZW50IHVzYWdlIHdvdWxkIGFsbG93IGFsbCBvZiBfYmZkX3N0ZF9zZWN0aW9uIHRvIGJlIHplcm8uICB0Ki8KLSsgICBidXQgY3VycmVudCB1c2FnZSB3b3VsZCBhbGxvdyBhbGwgb2YgX2JmZF9zdGRfc2VjdGlvbiB0byBiZSB6ZXJvLiAgKi8KLStzdGF0aWMgY29uc3QgYXN5bWJvbCBsY29tbV9zeW0KLSsgID0gR0xPQkFMX1NZTV9JTklUICgiTEFSR0VfQ09NTU9OIiwgJl9iZmRfZWxmX2xhcmdlX2NvbV9zZWN0aW9uKTsKLSBhc2VjdGlvbiBfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbgotLSAgPSBCRkRfRkFLRV9TRUNUSU9OIChfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbiwgTlVMTCwKLSsgID0gQkZEX0ZBS0VfU0VDVElPTiAoX2JmZF9lbGZfbGFyZ2VfY29tX3NlY3Rpb24sICZsY29tbV9zeW0sCi0gCQkgICAgICAiTEFSR0VfQ09NTU9OIiwgMCwgU0VDX0lTX0NPTU1PTik7Ci0gCi0gdm9pZAotSW5kZXg6IGdpdC9iZmQvc2VjdGlvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3NlY3Rpb24uYwotKysrIGdpdC9iZmQvc2VjdGlvbi5jCi1AQCAtNzM4LDIwICs3MzgsMjAgQEAgQ09ERV9GUkFHTUVOVAotIC4gICAgIHsgTlVMTCB9LCB7IE5VTEwgfQkJCQkJCVwKLSAuICAgIH0KLSAuCi0rLnsqIFdlIHVzZSBhIG1hY3JvIHRvIGluaXRpYWxpemUgdGhlIHN0YXRpYyBhc3ltYm9sIHN0cnVjdHVyZXMgYmVjYXVzZQotKy4gICB0cmFkaXRpb25hbCBDIGRvZXMgbm90IHBlcm1pdCB1cyB0byBpbml0aWFsaXplIGEgdW5pb24gbWVtYmVyIHdoaWxlCi0rLiAgIGdjYyB3YXJucyBpZiB3ZSBkb24ndCBpbml0aWFsaXplIGl0LgotKy4gICB0aGVfYmZkLCBuYW1lLCB2YWx1ZSwgYXR0ciwgc2VjdGlvbiBbLCB1ZGF0YV0gICp9Ci0rLiNpZmRlZiBfX1NURENfXwotKy4jZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0rLiAgeyAwLCBOQU1FLCAwLCBCU0ZfU0VDVElPTl9TWU0sIFNFQ1RJT04sIHsgMCB9fQotKy4jZWxzZQotKy4jZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0rLiAgeyAwLCBOQU1FLCAwLCBCU0ZfU0VDVElPTl9TWU0sIFNFQ1RJT04gfQotKy4jZW5kaWYKLSsuCi0gKi8KLSAKLS0vKiBXZSB1c2UgYSBtYWNybyB0byBpbml0aWFsaXplIHRoZSBzdGF0aWMgYXN5bWJvbCBzdHJ1Y3R1cmVzIGJlY2F1c2UKLS0gICB0cmFkaXRpb25hbCBDIGRvZXMgbm90IHBlcm1pdCB1cyB0byBpbml0aWFsaXplIGEgdW5pb24gbWVtYmVyIHdoaWxlCi0tICAgZ2NjIHdhcm5zIGlmIHdlIGRvbid0IGluaXRpYWxpemUgaXQuICAqLwotLSAvKiB0aGVfYmZkLCBuYW1lLCB2YWx1ZSwgYXR0ciwgc2VjdGlvbiBbLCB1ZGF0YV0gKi8KLS0jaWZkZWYgX19TVERDX18KLS0jZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0tICB7IDAsIE5BTUUsIDAsIEJTRl9TRUNUSU9OX1NZTSwgU0VDVElPTiwgeyAwIH19Ci0tI2Vsc2UKLS0jZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0tICB7IDAsIE5BTUUsIDAsIEJTRl9TRUNUSU9OX1NZTSwgU0VDVElPTiB9Ci0tI2VuZGlmCi0tCi0gLyogVGhlc2Ugc3ltYm9scyBhcmUgZ2xvYmFsLCBub3Qgc3BlY2lmaWMgdG8gYW55IEJGRC4gIFRoZXJlZm9yZSwgYW55dGhpbmcKLSAgICB0aGF0IHRyaWVzIHRvIGNoYW5nZSB0aGVtIGlzIGJyb2tlbiwgYW5kIHNob3VsZCBiZSByZXBhaXJlZC4gICovCi0gCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDQgKzEsMTIgQEAKLSsKLSAyMDE3LTA0LTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsgICAgICAgUFIgMjE0MTQKLSsgICAgICAgKiBzZWN0aW9uLmMgKEdMT0JBTF9TWU1fSU5JVCk6IE1ha2UgYXZhaWxhYmxlIGluIGJmZC5oLgotKyAgICAgICAqIGVsZi5jIChsY29tbV9zeW0pOiBOZXcuCi0rICAgICAgIChfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbik6IFVzZSBsY29tbV9zeW0gc2VjdGlvbiBzeW1ib2wuCi0rICAgICAgICogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgotKwotKysyMDE3LTA0LTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAgCi0gICAgICAgIFBSIDIxNDEyCi0gICAgICAgICogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSA8Z2V0X3JlbG9jX3NlY3Rpb24+KTogQ2hhbmdlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhOWJjZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSBlNjNkMTIzMjY4ZjIzYTRjYmM0NWVlNTVmYjZkYmM3ZDg0NzI5ZGEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyNiBBcHIgMjAxNyAxMzowNzo0OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggc2VnLWZhdWx0IGF0dGVtcHRpbmcgdG8gY29tcHJlc3MgYSBkZWJ1ZyBzZWN0aW9uIGluIGEKLSBjb3JydXB0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNDMxCi0JKiBjb21wcmVzcy5jIChiZmRfaW5pdF9zZWN0aW9uX2NvbXByZXNzX3N0YXR1cyk6IENoZWNrIHRoZSByZXR1cm4KLQl2YWx1ZSBmcm9tIGJmZF9tYWxsb2MuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctODM5NQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgIHwgIDYgKysrKysrCi0gYmZkL2NvbXByZXNzLmMgfCAxOSArKysrKysrKystLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvY29tcHJlc3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9jb21wcmVzcy5jCi0rKysgZ2l0L2JmZC9jb21wcmVzcy5jCi1AQCAtNTQyLDcgKzU0Miw2IEBAIGJmZF9pbml0X3NlY3Rpb25fY29tcHJlc3Nfc3RhdHVzIChiZmQgKmEKLSB7Ci0gICBiZmRfc2l6ZV90eXBlIHVuY29tcHJlc3NlZF9zaXplOwotICAgYmZkX2J5dGUgKnVuY29tcHJlc3NlZF9idWZmZXI7Ci0tICBiZmRfYm9vbGVhbiByZXQ7Ci0gCi0gICAvKiBFcnJvciBpZiBub3Qgb3BlbmVkIGZvciByZWFkLiAgKi8KLSAgIGlmIChhYmZkLT5kaXJlY3Rpb24gIT0gcmVhZF9kaXJlY3Rpb24KLUBAIC01NTgsMTggKzU1NywxOCBAQCBiZmRfaW5pdF9zZWN0aW9uX2NvbXByZXNzX3N0YXR1cyAoYmZkICphCi0gICAvKiBSZWFkIGluIHRoZSBmdWxsIHNlY3Rpb24gY29udGVudHMgYW5kIGNvbXByZXNzIGl0LiAgKi8KLSAgIHVuY29tcHJlc3NlZF9zaXplID0gc2VjLT5zaXplOwotICAgdW5jb21wcmVzc2VkX2J1ZmZlciA9IChiZmRfYnl0ZSAqKSBiZmRfbWFsbG9jICh1bmNvbXByZXNzZWRfc2l6ZSk7Ci0rICAvKiBQUiAyMTQzMSAqLwotKyAgaWYgKHVuY29tcHJlc3NlZF9idWZmZXIgPT0gTlVMTCkKLSsgICAgcmV0dXJuIEZBTFNFOwotKwotICAgaWYgKCFiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlYywgdW5jb21wcmVzc2VkX2J1ZmZlciwKLSAJCQkJIDAsIHVuY29tcHJlc3NlZF9zaXplKSkKLS0gICAgcmV0ID0gRkFMU0U7Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICB1bmNvbXByZXNzZWRfc2l6ZSA9IGJmZF9jb21wcmVzc19zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBzZWMsCi0tCQkJCQkJCSB1bmNvbXByZXNzZWRfYnVmZmVyLAotLQkJCQkJCQkgdW5jb21wcmVzc2VkX3NpemUpOwotLSAgICAgIHJldCA9IHVuY29tcHJlc3NlZF9zaXplICE9IDA7Ci0tICAgIH0KLSsgICAgcmV0dXJuIEZBTFNFOwotIAotLSAgcmV0dXJuIHJldDsKLSsgIHVuY29tcHJlc3NlZF9zaXplID0gYmZkX2NvbXByZXNzX3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlYywKLSsJCQkJCQkgICAgIHVuY29tcHJlc3NlZF9idWZmZXIsCi0rCQkJCQkJICAgICB1bmNvbXByZXNzZWRfc2l6ZSk7Ci0rICByZXR1cm4gdW5jb21wcmVzc2VkX3NpemUgIT0gMDsKLSB9Ci0gCi0gLyoKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw4IEBACi0rMjAxNy0wNC0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjE0MzEKLSsgICAgICAgKiBjb21wcmVzcy5jIChiZmRfaW5pdF9zZWN0aW9uX2NvbXByZXNzX3N0YXR1cyk6IENoZWNrIHRoZSByZXR1cm4KLSsgICAgICAgdmFsdWUgZnJvbSBiZmRfbWFsbG9jLgotIAotIDIwMTctMDQtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotICAgICAgICBQUiAyMTQxNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk2XzgzOTcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTZfODM5Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRmNDI4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTZfODM5Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIGE5NDEyOTFjYWI3MWI5YWMzNTZlMWMwMzk2OGMxNzdjMDNlNjAyYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU2F0LCAyOSBBcHIgMjAxNyAxNDo0ODoxNiArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUjIxNDMyLCBidWZmZXIgb3ZlcmZsb3cgaW4gcGVyZm9ybV9yZWxvY2F0aW9uCi0KLVRoZSBleGlzdGluZyByZWxvYyBvZmZzZXQgcmFuZ2UgdGVzdHMgZGlkbid0IGNhdGNoIHNtYWxsIG5lZ2F0aXZlCi1vZmZzZXRzIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgcmVsb2MgZmllbGQuCi0KLQlQUiAyMTQzMgotCSogcmVsb2MuYyAocmVsb2Nfb2Zmc2V0X2luX3JhbmdlKTogTmV3IGZ1bmN0aW9uLgotCShiZmRfcGVyZm9ybV9yZWxvY2F0aW9uLCBiZmRfaW5zdGFsbF9yZWxvY2F0aW9uKTogVXNlIGl0LgotCShfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04Mzk2Ci1DVkU6IENWRS0yMDE3LTgzOTcKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgIDcgKysrKysrKwotIGJmZC9yZWxvYy5jICAgfCAzMiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL3JlbG9jLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvcmVsb2MuYwotKysrIGdpdC9iZmQvcmVsb2MuYwotQEAgLTUzOCw2ICs1MzgsMjIgQEAgYmZkX2NoZWNrX292ZXJmbG93IChlbnVtIGNvbXBsYWluX292ZXJmbAotICAgcmV0dXJuIGZsYWc7Ci0gfQotIAotKy8qIEhPV1RPIGRlc2NyaWJlcyBhIHJlbG9jYXRpb24sIGF0IG9mZnNldCBPQ1RFVC4gIFJldHVybiB3aGV0aGVyIHRoZQotKyAgIHJlbG9jYXRpb24gZmllbGQgaXMgd2l0aGluIFNFQ1RJT04gb2YgQUJGRC4gICovCi0rCi0rc3RhdGljIGJmZF9ib29sZWFuCi0rcmVsb2Nfb2Zmc2V0X2luX3JhbmdlIChyZWxvY19ob3d0b190eXBlICpob3d0bywgYmZkICphYmZkLAotKwkJICAgICAgIGFzZWN0aW9uICpzZWN0aW9uLCBiZmRfc2l6ZV90eXBlIG9jdGV0KQotK3sKLSsgIGJmZF9zaXplX3R5cGUgb2N0ZXRfZW5kID0gYmZkX2dldF9zZWN0aW9uX2xpbWl0X29jdGV0cyAoYWJmZCwgc2VjdGlvbik7Ci0rICBiZmRfc2l6ZV90eXBlIHJlbG9jX3NpemUgPSBiZmRfZ2V0X3JlbG9jX3NpemUgKGhvd3RvKTsKLSsKLSsgIC8qIFRoZSByZWxvYyBmaWVsZCBtdXN0IGJlIGNvbnRhaW5lZCBlbnRpcmVseSB3aXRoaW4gdGhlIHNlY3Rpb24uCi0rICAgICBBbGxvdyB6ZXJvIGxlbmd0aCBmaWVsZHMgKG1hcmtlciByZWxvY3Mgb3IgTk9ORSByZWxvY3Mgd2hlcmUgbm8KLSsgICAgIHJlbG9jYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQpIGF0IHRoZSBlbmQgb2YgdGhlIHNlY3Rpb24uICAqLwotKyAgcmV0dXJuIG9jdGV0IDw9IG9jdGV0X2VuZCAmJiBvY3RldCArIHJlbG9jX3NpemUgPD0gb2N0ZXRfZW5kOwotK30KLSsKLSAvKgotIEZVTkNUSU9OCi0gCWJmZF9wZXJmb3JtX3JlbG9jYXRpb24KLUBAIC02MTgsMTMgKzYzNCwxMCBAQCBiZmRfcGVyZm9ybV9yZWxvY2F0aW9uIChiZmQgKmFiZmQsCi0gICAvKiBQUiAxNzUxMjogZmlsZTogMGY2N2Y2OWQuICAqLwotICAgaWYgKGhvd3RvID09IE5VTEwpCi0gICAgIHJldHVybiBiZmRfcmVsb2NfdW5kZWZpbmVkOwotLQotLSAgLyogSXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlbG9jYXRpb24gcmVhbGx5IHdpdGhpbiB0aGUgc2VjdGlvbj8KLS0gICAgIEluY2x1ZGUgdGhlIHNpemUgb2YgdGhlIHJlbG9jIGluIHRoZSB0ZXN0IGZvciBvdXQgb2YgcmFuZ2UgYWRkcmVzc2VzLgotLSAgICAgUFIgMTc1MTI6IGZpbGU6IGMxNDZhYjhiLCA0NmRmZjI3ZiwgMzhlNTNlYmYuICAqLwotKyAgCi0rICAvKiBJcyB0aGUgYWRkcmVzcyBvZiB0aGUgcmVsb2NhdGlvbiByZWFsbHkgd2l0aGluIHRoZSBzZWN0aW9uPyAgKi8KLSAgIG9jdGV0cyA9IHJlbG9jX2VudHJ5LT5hZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoYWJmZCk7Ci0tICBpZiAob2N0ZXRzICsgYmZkX2dldF9yZWxvY19zaXplIChob3d0bykKLS0gICAgICA+IGJmZF9nZXRfc2VjdGlvbl9saW1pdF9vY3RldHMgKGFiZmQsIGlucHV0X3NlY3Rpb24pKQotKyAgaWYgKCFyZWxvY19vZmZzZXRfaW5fcmFuZ2UgKGhvd3RvLCBhYmZkLCBpbnB1dF9zZWN0aW9uLCBvY3RldHMpKQotICAgICByZXR1cm4gYmZkX3JlbG9jX291dG9mcmFuZ2U7Ci0gCi0gICAvKiBXb3JrIG91dCB3aGljaCBzZWN0aW9uIHRoZSByZWxvY2F0aW9uIGlzIHRhcmdldGVkIGF0IGFuZCB0aGUKLUBAIC0xMDEyLDggKzEwMjUsNyBAQCBiZmRfaW5zdGFsbF9yZWxvY2F0aW9uIChiZmQgKmFiZmQsCi0gCi0gICAvKiBJcyB0aGUgYWRkcmVzcyBvZiB0aGUgcmVsb2NhdGlvbiByZWFsbHkgd2l0aGluIHRoZSBzZWN0aW9uPyAgKi8KLSAgIG9jdGV0cyA9IHJlbG9jX2VudHJ5LT5hZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoYWJmZCk7Ci0tICBpZiAob2N0ZXRzICsgYmZkX2dldF9yZWxvY19zaXplIChob3d0bykKLS0gICAgICA+IGJmZF9nZXRfc2VjdGlvbl9saW1pdF9vY3RldHMgKGFiZmQsIGlucHV0X3NlY3Rpb24pKQotKyAgaWYgKCFyZWxvY19vZmZzZXRfaW5fcmFuZ2UgKGhvd3RvLCBhYmZkLCBpbnB1dF9zZWN0aW9uLCBvY3RldHMpKQotICAgICByZXR1cm4gYmZkX3JlbG9jX291dG9mcmFuZ2U7Ci0gCi0gICAvKiBXb3JrIG91dCB3aGljaCBzZWN0aW9uIHRoZSByZWxvY2F0aW9uIGlzIHRhcmdldGVkIGF0IGFuZCB0aGUKLUBAIC0xMzUxLDggKzEzNjMsNyBAQCBfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUgKHJlbG9jX2hvd3RvX3R5Ci0gICBiZmRfc2l6ZV90eXBlIG9jdGV0cyA9IGFkZHJlc3MgKiBiZmRfb2N0ZXRzX3Blcl9ieXRlIChpbnB1dF9iZmQpOwotIAotICAgLyogU2FuaXR5IGNoZWNrIHRoZSBhZGRyZXNzLiAgKi8KLS0gIGlmIChvY3RldHMgKyBiZmRfZ2V0X3JlbG9jX3NpemUgKGhvd3RvKQotLSAgICAgID4gYmZkX2dldF9zZWN0aW9uX2xpbWl0X29jdGV0cyAoaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uKSkKLSsgIGlmICghcmVsb2Nfb2Zmc2V0X2luX3JhbmdlIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCBvY3RldHMpKQotICAgICByZXR1cm4gYmZkX3JlbG9jX291dG9mcmFuZ2U7Ci0gCi0gICAvKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgYmFzaWMgcmVsb2NhdGlvbgotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wNC0yOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rICAgICAgIFBSIDIxNDMyCi0rICAgICAgICogcmVsb2MuYyAocmVsb2Nfb2Zmc2V0X2luX3JhbmdlKTogTmV3IGZ1bmN0aW9uLgotKyAgICAgICAoYmZkX3BlcmZvcm1fcmVsb2NhdGlvbiwgYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6IFVzZSBpdC4KLSsgICAgICAgKF9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgotKwotIDIwMTctMDQtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNDMxCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViOWFjYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLUZyb20gZDk0OWZmNTYwN2I5ZjU5NWUwZWVkMmZmMTVmYmU1ZWI4NGViM2EzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgMjggQXByIDIwMTcgMTA6Mjg6MDQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGhlYXAtYnVmZmVyIG92ZXJmbG93IGJ1Z3MgY2F1c2VkIHdoZW4gZHVtcGluZyBkZWJ1ZwotIGluZm9ybWF0aW9uIGZyb20gYSBjb3JydXB0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNDM4Ci0JKiBkd2FyZi5jIChwcm9jZXNzX2V4dGVuZGVkX2xpbmVfb3ApOiBEbyBub3QgYXNzdW1lIHRoYXQgdGhlCi0Jc3RyaW5nIGV4dHJhY3RlZCBmcm9tIHRoZSBzZWN0aW9uIGlzIE5VTCB0ZXJtaW5hdGVkLgotCShmZXRjaF9pbmRpcmVjdF9zdHJpbmcpOiBJZiB0aGUgc3RyaW5nIHJldHJpZXZlZCBmcm9tIHRoZSBzZWN0aW9uCi0JaXMgbm90IE5VTCB0ZXJtaW5hdGVkLCByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KLQkoZmV0Y2hfaW5kaXJlY3RfbGluZV9zdHJpbmcpOiBMaWtld2lzZS4KLQkoZmV0Y2hfaW5kZXhlZF9zdHJpbmcpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04Mzk4Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgMTAgKysrKysrKysrCi0gYmludXRpbHMvZHdhcmYuYyAgIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9kd2FyZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvZHdhcmYuYwotKysrIGdpdC9iaW51dGlscy9kd2FyZi5jCi1AQCAtNDcyLDE1ICs0NzIsMjAgQEAgcHJvY2Vzc19leHRlbmRlZF9saW5lX29wICh1bnNpZ25lZCBjaGFyCi0gICAgICAgcHJpbnRmIChfKCIgIEVudHJ5XHREaXJcdFRpbWVcdFNpemVcdE5hbWVcbiIpKTsKLSAgICAgICBwcmludGYgKCIgICAlZFx0IiwgKytzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9maWxlX2VudHJ5KTsKLSAKLS0gICAgICBuYW1lID0gZGF0YTsKLS0gICAgICBkYXRhICs9IHN0cm5sZW4gKChjaGFyICopIGRhdGEsIGVuZCAtIGRhdGEpICsgMTsKLS0gICAgICBwcmludGYgKCIlc1x0IiwgZHdhcmZfdm1hdG9hICgidSIsIHJlYWRfdWxlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCBlbmQpKSk7Ci0tICAgICAgZGF0YSArPSBieXRlc19yZWFkOwotLSAgICAgIHByaW50ZiAoIiVzXHQiLCBkd2FyZl92bWF0b2EgKCJ1IiwgcmVhZF91bGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIGVuZCkpKTsKLS0gICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7Ci0tICAgICAgcHJpbnRmICgiJXNcdCIsIGR3YXJmX3ZtYXRvYSAoInUiLCByZWFkX3VsZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgZW5kKSkpOwotLSAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKLS0gICAgICBwcmludGYgKCIlc1xuXG4iLCBuYW1lKTsKLSsgICAgICB7Ci0rCXNpemVfdCBsOwotKwotKwluYW1lID0gZGF0YTsKLSsJbCA9IHN0cm5sZW4gKChjaGFyICopIGRhdGEsIGVuZCAtIGRhdGEpOwotKwlkYXRhICs9IGxlbiArIDE7Ci0rCXByaW50ZiAoIiVzXHQiLCBkd2FyZl92bWF0b2EgKCJ1IiwgcmVhZF91bGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIGVuZCkpKTsKLSsJZGF0YSArPSBieXRlc19yZWFkOwotKwlwcmludGYgKCIlc1x0IiwgZHdhcmZfdm1hdG9hICgidSIsIHJlYWRfdWxlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCBlbmQpKSk7Ci0rCWRhdGEgKz0gYnl0ZXNfcmVhZDsKLSsJcHJpbnRmICgiJXNcdCIsIGR3YXJmX3ZtYXRvYSAoInUiLCByZWFkX3VsZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgZW5kKSkpOwotKwlkYXRhICs9IGJ5dGVzX3JlYWQ7Ci0rCXByaW50ZiAoIiUuKnNcblxuIiwgKGludCkgbCwgbmFtZSk7Ci0rICAgICAgfQotIAotICAgICAgIGlmICgoKHVuc2lnbmVkIGludCkgKGRhdGEgLSBvcmlnX2RhdGEpICE9IGxlbikgfHwgZGF0YSA9PSBlbmQpCi0gCXdhcm4gKF8oIkRXX0xORV9kZWZpbmVfZmlsZTogQmFkIG9wY29kZSBsZW5ndGhcbiIpKTsKLUBAIC01OTcsMTggKzYwMiwyNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqCi0gZmV0Y2hfaW5kaXJlY3Rfc3RyaW5nIChkd2FyZl92bWEgb2Zmc2V0KQotIHsKLSAgIHN0cnVjdCBkd2FyZl9zZWN0aW9uICpzZWN0aW9uID0gJmRlYnVnX2Rpc3BsYXlzIFtzdHJdLnNlY3Rpb247Ci0rICBjb25zdCB1bnNpZ25lZCBjaGFyICogcmV0OwotIAotICAgaWYgKHNlY3Rpb24tPnN0YXJ0ID09IE5VTEwpCi0gICAgIHJldHVybiAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBfKCI8bm8gLmRlYnVnX3N0ciBzZWN0aW9uPiIpOwotIAotLSAgaWYgKG9mZnNldCA+IHNlY3Rpb24tPnNpemUpCi0rICBpZiAob2Zmc2V0ID49IHNlY3Rpb24tPnNpemUpCi0gICAgIHsKLSAgICAgICB3YXJuIChfKCJEV19GT1JNX3N0cnAgb2Zmc2V0IHRvbyBiaWc6ICVzXG4iKSwKLSAJICAgIGR3YXJmX3ZtYXRvYSAoIngiLCBvZmZzZXQpKTsKLSAgICAgICByZXR1cm4gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgXygiPG9mZnNldCBpcyB0b28gYmlnPiIpOwotICAgICB9Ci0rICByZXQgPSBzZWN0aW9uLT5zdGFydCArIG9mZnNldDsKLSsgIC8qIFVuZm9ydHVuYXRlbHkgd2UgY2Fubm90IHJlbHkgdXBvbiB0aGUgLmRlYnVnX3N0ciBzZWN0aW9uIGVuZGluZyB3aXRoIGEKLSsgICAgIE5VTCBieXRlLiAgU2luY2Ugb3VyIGNhbGxlciBpcyBleHBlY3RpbmcgdG8gcmVjZWl2ZSBhIHdlbGwgZm9ybWVkIEMKLSsgICAgIHN0cmluZyB3ZSB0ZXN0IGZvciB0aGUgbGFjayBvZiBhIHRlcm1pbmF0aW5nIGJ5dGUgaGVyZS4gICovCi0rICBpZiAoc3RybmxlbiAoKGNvbnN0IGNoYXIgKikgcmV0LCBzZWN0aW9uLT5zaXplIC0gb2Zmc2V0KQotKyAgICAgID09IHNlY3Rpb24tPnNpemUgLSBvZmZzZXQpCi0rICAgIHJldCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopCi0rICAgICAgXygiPG5vIE5VTCBieXRlIGF0IGVuZCBvZiAuZGVidWdfc3RyIHNlY3Rpb24+Iik7Ci0gCi0tICByZXR1cm4gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgc2VjdGlvbi0+c3RhcnQgKyBvZmZzZXQ7Ci0rICByZXR1cm4gcmV0OyAKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotQEAgLTYyMSw2ICs2MzUsNyBAQCBmZXRjaF9pbmRleGVkX3N0cmluZyAoZHdhcmZfdm1hIGlkeCwgc3RyCi0gICBzdHJ1Y3QgZHdhcmZfc2VjdGlvbiAqc3RyX3NlY3Rpb24gPSAmZGVidWdfZGlzcGxheXMgW3N0cl9zZWNfaWR4XS5zZWN0aW9uOwotICAgZHdhcmZfdm1hIGluZGV4X29mZnNldCA9IGlkeCAqIG9mZnNldF9zaXplOwotICAgZHdhcmZfdm1hIHN0cl9vZmZzZXQ7Ci0rICBjb25zdCBjaGFyICogcmV0OwotIAotICAgaWYgKGluZGV4X3NlY3Rpb24tPnN0YXJ0ID09IE5VTEwpCi0gICAgIHJldHVybiAoZHdvID8gXygiPG5vIC5kZWJ1Z19zdHJfb2Zmc2V0cy5kd28gc2VjdGlvbj4iKQotQEAgLTYyOCw3ICs2NDMsNyBAQCBmZXRjaF9pbmRleGVkX3N0cmluZyAoZHdhcmZfdm1hIGlkeCwgc3RyCi0gCi0gICBpZiAodGhpc19zZXQgIT0gTlVMTCkKLSAgICAgaW5kZXhfb2Zmc2V0ICs9IHRoaXNfc2V0LT5zZWN0aW9uX29mZnNldHMgW0RXX1NFQ1RfU1RSX09GRlNFVFNdOwotLSAgaWYgKGluZGV4X29mZnNldCA+IGluZGV4X3NlY3Rpb24tPnNpemUpCi0rICBpZiAoaW5kZXhfb2Zmc2V0ID49IGluZGV4X3NlY3Rpb24tPnNpemUpCi0gICAgIHsKLSAgICAgICB3YXJuIChfKCJEV19GT1JNX0dOVV9zdHJfaW5kZXggb2Zmc2V0IHRvbyBiaWc6ICVzXG4iKSwKLSAJICAgIGR3YXJmX3ZtYXRvYSAoIngiLCBpbmRleF9vZmZzZXQpKTsKLUBAIC02NDEsMTQgKzY1NiwyMiBAQCBmZXRjaF9pbmRleGVkX3N0cmluZyAoZHdhcmZfdm1hIGlkeCwgc3RyCi0gCi0gICBzdHJfb2Zmc2V0ID0gYnl0ZV9nZXQgKGluZGV4X3NlY3Rpb24tPnN0YXJ0ICsgaW5kZXhfb2Zmc2V0LCBvZmZzZXRfc2l6ZSk7Ci0gICBzdHJfb2Zmc2V0IC09IHN0cl9zZWN0aW9uLT5hZGRyZXNzOwotLSAgaWYgKHN0cl9vZmZzZXQgPiBzdHJfc2VjdGlvbi0+c2l6ZSkKLSsgIGlmIChzdHJfb2Zmc2V0ID49IHN0cl9zZWN0aW9uLT5zaXplKQotICAgICB7Ci0gICAgICAgd2FybiAoXygiRFdfRk9STV9HTlVfc3RyX2luZGV4IGluZGlyZWN0IG9mZnNldCB0b28gYmlnOiAlc1xuIiksCi0gCSAgICBkd2FyZl92bWF0b2EgKCJ4Iiwgc3RyX29mZnNldCkpOwotICAgICAgIHJldHVybiBfKCI8aW5kaXJlY3QgaW5kZXggb2Zmc2V0IGlzIHRvbyBiaWc+Iik7Ci0gICAgIH0KLSAKLS0gIHJldHVybiAoY29uc3QgY2hhciAqKSBzdHJfc2VjdGlvbi0+c3RhcnQgKyBzdHJfb2Zmc2V0OwotKyAgcmV0ID0gKGNvbnN0IGNoYXIgKikgc3RyX3NlY3Rpb24tPnN0YXJ0ICsgc3RyX29mZnNldDsKLSsgIC8qIFVuZm9ydHVuYXRlbHkgd2UgY2Fubm90IHJlbHkgdXBvbiBzdHJfc2VjdGlvbiBlbmRpbmcgd2l0aCBhIE5VTCBieXRlLgotKyAgICAgU2luY2Ugb3VyIGNhbGxlciBpcyBleHBlY3RpbmcgdG8gcmVjZWl2ZSBhIHdlbGwgZm9ybWVkIEMgc3RyaW5nIHdlIHRlc3QKLSsgICAgIGZvciB0aGUgbGFjayBvZiBhIHRlcm1pbmF0aW5nIGJ5dGUgaGVyZS4gICovCi0rICBpZiAoc3RybmxlbiAocmV0LCBzdHJfc2VjdGlvbi0+c2l6ZSAtIHN0cl9vZmZzZXQpCi0rICAgICAgPT0gc3RyX3NlY3Rpb24tPnNpemUgLSBzdHJfb2Zmc2V0KQotKyAgICByZXQgPSAoY29uc3QgY2hhciAqKSBfKCI8bm8gTlVMIGJ5dGUgYXQgZW5kIG9mIHNlY3Rpb24+Iik7Ci0rCi0rICByZXR1cm4gcmV0OwotIH0KLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqCi1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTMgQEAKLSsyMDE3LTA0LTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTQzOAotKyAgICAgICAqIGR3YXJmLmMgKHByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcCk6IERvIG5vdCBhc3N1bWUgdGhhdCB0aGUKLSsgICAgICAgc3RyaW5nIGV4dHJhY3RlZCBmcm9tIHRoZSBzZWN0aW9uIGlzIE5VTCB0ZXJtaW5hdGVkLgotKyAgICAgICAoZmV0Y2hfaW5kaXJlY3Rfc3RyaW5nKTogSWYgdGhlIHN0cmluZyByZXRyaWV2ZWQgZnJvbSB0aGUgc2VjdGlvbgotKyAgICAgICBpcyBub3QgTlVMIHRlcm1pbmF0ZWQsIHJldHVybiBhbiBlcnJvciBtZXNzYWdlLgotKyAgICAgICAoZmV0Y2hfaW5kaXJlY3RfbGluZV9zdHJpbmcpOiBMaWtld2lzZS4KLSsgICAgICAgKGZldGNoX2luZGV4ZWRfc3RyaW5nKTogTGlrZXdpc2UuCi0rCi0gMjAxNy0wMi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjExNTcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODQyMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODQyMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk2OWM2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTg0MjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDM5ZmYxYjc5ZjY4N2I2NWY0MTQ0ZGRiMzc5ZjIyNTg3MDAzNDQzZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDIgTWF5IDIwMTcgMTE6NTQ6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBtZW1vcnkgZXhoYXVzdGlvbiBmcm9tIGEgY29ycnVwdCBQRSBiaW5hcnkgd2l0aCBhbgotIG92ZXJsYXJnZSBudW1iZXIgb2YgcmVsb2NzLgotCi0JUFIgMjE0NDAKLQkqIG9iamR1bXAuYyAoZHVtcF9yZWxvY3NfaW5fc2VjdGlvbik6IENoZWNrIGZvciBhbiBleGNlc3NpdmUKLQludW1iZXIgb2YgcmVsb2NzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGR1bXAgdGhlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04NDIxCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgNiArKysrKysKLSBiaW51dGlscy9vYmpkdW1wLmMgfCA4ICsrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTMzMTEsNiArMzMxMSwxNCBAQCBkdW1wX3JlbG9jc19pbl9zZWN0aW9uIChiZmQgKmFiZmQsCi0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0rICBpZiAoKGJmZF9nZXRfZmlsZV9mbGFncyAoYWJmZCkgJiAoQkZEX0lOX01FTU9SWSB8IEJGRF9MSU5LRVJfQ1JFQVRFRCkpID09IDAKLSsgICAgICAmJiByZWxzaXplID4gZ2V0X2ZpbGVfc2l6ZSAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpKQotKyAgICB7Ci0rICAgICAgcHJpbnRmICgiICh0b28gbWFueTogMHgleClcbiIsIHNlY3Rpb24tPnJlbG9jX2NvdW50KTsKLSsgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfZmlsZV90cnVuY2F0ZWQpOwotKyAgICAgIGJmZF9mYXRhbCAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotKyAgICB9Ci0rCi0gICByZWxwcCA9IChhcmVsZW50ICoqKSB4bWFsbG9jIChyZWxzaXplKTsKLSAgIHJlbGNvdW50ID0gYmZkX2Nhbm9uaWNhbGl6ZV9yZWxvYyAoYWJmZCwgc2VjdGlvbiwgcmVscHAsIHN5bXMpOwotIAotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA1LTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMTQ0MAotKyAgICAgICAqIG9iamR1bXAuYyAoZHVtcF9yZWxvY3NfaW5fc2VjdGlvbik6IENoZWNrIGZvciBhbiBleGNlc3NpdmUKLSsgICAgICAgbnVtYmVyIG9mIHJlbG9jcyBiZWZvcmUgYXR0ZW1wdGluZyB0byBkdW1wIHRoZW0uCi0rCi0gMjAxNy0wNC0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjE0MzgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTAzOF85MDQ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDM4XzkwNDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWVmYzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDM4XzkwNDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGYzMmJhNzI5OTFkMjQwNmIyMWFiMTdlZGMyMzRhMmYzZmE3ZmIyM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDMgQXByIDIwMTcgMTE6MDE6NDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVhZGVsZjogVXBkYXRlIGNoZWNrIGZvciBpbnZhbGlkIHdvcmQgb2Zmc2V0cyBpbiBBUk0gdW53aW5kCi0gaW5mb3JtYXRpb24uCi0KLQlQUiBiaW51dGlscy8yMTM0MwotCSogcmVhZGVsZi5jIChnZXRfdW53aW5kX3NlY3Rpb25fd29yZCk6IEZpeCBzbmFmdSBjaGVja2luZyBmb3IKLQlpbnZhbGlkIHdvcmQgb2Zmc2V0cyBpbiBBUk0gdW53aW5kIGluZm9ybWF0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTkwMzgKLUNWRTogQ1ZFLTIwMTctOTA0NAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgNiArKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9yZWFkZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtNzk3Miw5ICs3OTcyLDkgQEAgZ2V0X3Vud2luZF9zZWN0aW9uX3dvcmQgKHN0cnVjdCBhcm1fdW53XwotICAgICByZXR1cm4gRkFMU0U7Ci0gCi0gICAvKiBJZiB0aGUgb2Zmc2V0IGlzIGludmFsaWQgdGhlbiBmYWlsLiAgKi8KLS0gIGlmICh3b3JkX29mZnNldCA+IChzZWMtPnNoX3NpemUgLSA0KQotLSAgICAgIC8qIFBSIDE4ODc5ICovCi0tICAgICAgfHwgKHNlYy0+c2hfc2l6ZSA8IDUgJiYgd29yZF9vZmZzZXQgPj0gc2VjLT5zaF9zaXplKQotKyAgaWYgKC8qIFBSIDIxMzQzICovLyogUFIgMTg4NzkgKi8KLSsgICAgICBzZWMtPnNoX3NpemUgPCA0Ci0rICAgICAgfHwgd29yZF9vZmZzZXQgPiAoc2VjLT5zaF9zaXplIC0gNCkKLSAgICAgICB8fCAoKGJmZF9zaWduZWRfdm1hKSB3b3JkX29mZnNldCkgPCAwKQotICAgICByZXR1cm4gRkFMU0U7Ci0gCi1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDQtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxMzQzCi0rICAgICAgICogcmVhZGVsZi5jIChnZXRfdW53aW5kX3NlY3Rpb25fd29yZCk6IEZpeCBzbmFmdSBjaGVja2luZyBmb3IKLSsgICAgICAgaW52YWxpZCB3b3JkIG9mZnNldHMgaW4gQVJNIHVud2luZCBpbmZvcm1hdGlvbi4KLSsKLSAyMDE3LTA1LTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiAyMTQ0MApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDM5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDM5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWQ4ZjdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTAzOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gODIxNTZhYjcwNGIwOGIxMjRkMzE5YzBkZWNkYmQ0OGIzY2EyZGFjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMyBBcHIgMjAxNyAxMjoxNDowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSByZWFkZWxmOiBGaXggb3ZlcmxhcmdlIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gcmVhZGluZyBhCi0gYmluYXJ5IHdpdGggYW4gZXhjZXNzaXZlIG51bWJlciBvZiBwcm9ncmFtIGhlYWRlcnMuCi0KLQlQUiBiaW51dGlscy8yMTM0NQotCSogcmVhZGVsZi5jIChnZXRfcHJvZ3JhbV9oZWFkZXJzKTogQ2hlY2sgZm9yIHRoZXJlIGJlaW5nIHRvbyBtYW55Ci0JcHJvZ3JhbSBoZWFkZXJzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGVtLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTkwMzkKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNiArKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgfCAxNyArKysrKysrKysrKysrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9yZWFkZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtNDc2NSw5ICs0NzY1LDE5IEBAIGdldF9wcm9ncmFtX2hlYWRlcnMgKEZJTEUgKiBmaWxlKQotICAgaWYgKHByb2dyYW1faGVhZGVycyAhPSBOVUxMKQotICAgICByZXR1cm4gMTsKLSAKLS0gIHBoZHJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICopIGNtYWxsb2MgKGVsZl9oZWFkZXIuZV9waG51bSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoRWxmX0ludGVybmFsX1BoZHIpKTsKLSsgIC8qIEJlIGtpbmQgdG8gbWVtb3J5IGNoZWNrZXJzIGJ5IGxvb2tpbmcgZm9yCi0rICAgICBlX3BobnVtIHZhbHVlcyB3aGljaCB3ZSBrbm93IG11c3QgYmUgaW52YWxpZC4gICovCi0rICBpZiAoZWxmX2hlYWRlci5lX3BobnVtCi0rICAgICAgKiAoaXNfMzJiaXRfZWxmID8gc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9QaGRyKSA6IHNpemVvZiAoRWxmNjRfRXh0ZXJuYWxfUGhkcikpCi0rICAgICAgPj0gY3VycmVudF9maWxlX3NpemUpCi0rICAgIHsKLSsgICAgICBlcnJvciAoXygiVG9vIG1hbnkgcHJvZ3JhbSBoZWFkZXJzIC0gJSN4IC0gdGhlIGZpbGUgaXMgbm90IHRoYXQgYmlnXG4iKSwKLSsJICAgICBlbGZfaGVhZGVyLmVfcGhudW0pOwotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgfQotIAotKyAgcGhkcnMgPSAoRWxmX0ludGVybmFsX1BoZHIgKikgY21hbGxvYyAoZWxmX2hlYWRlci5lX3BobnVtLAotKwkJCQkJIHNpemVvZiAoRWxmX0ludGVybmFsX1BoZHIpKTsKLSAgIGlmIChwaGRycyA9PSBOVUxMKQotICAgICB7Ci0gICAgICAgZXJyb3IgKF8oIk91dCBvZiBtZW1vcnkgcmVhZGluZyAldSBwcm9ncmFtIGhlYWRlcnNcbiIpLAotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSw1ICsxLDExIEBACi0gMjAxNy0wNC0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSsgICAgICAgUFIgYmludXRpbHMvMjEzNDUKLSsgICAgICAgKiByZWFkZWxmLmMgKGdldF9wcm9ncmFtX2hlYWRlcnMpOiBDaGVjayBmb3IgdGhlcmUgYmVpbmcgdG9vIG1hbnkKLSsgICAgICAgcHJvZ3JhbSBoZWFkZXJzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGVtLgotKwotKzIwMTctMDQtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxMzQzCi0gICAgICAgICogcmVhZGVsZi5jIChnZXRfdW53aW5kX3NlY3Rpb25fd29yZCk6IEZpeCBzbmFmdSBjaGVja2luZyBmb3IKLSAgICAgICAgaW52YWxpZCB3b3JkIG9mZnNldHMgaW4gQVJNIHVud2luZCBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTA0MF85MDQyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDQwXzkwNDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YzZhN2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDQwXzkwNDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDcyOTZhNjJhMmEyMzdmNmIxYWQ4ZGI4YzM4YjA5MGU5ZjU5MmM4Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE2OjA2OjMwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlYWRlbGY6IGZpeCBvdXQgb2YgcmFuZ2Ugc3VidHJhY3Rpb24sIHNlZyBmYXVsdCBmcm9tIGEgTlVMTAotIHBvaW50ZXIgYW5kIG1lbW9yeSBleGhhdXN0aW9uLCBhbGwgZnJvbSBwYXJzaW5nIGNvcnJ1cHQgYmluYXJpZXMuCi0KLQlQUiBiaW51dGlscy8yMTM3OQotCSogcmVhZGVsZi5jIChwcm9jZXNzX2R5bmFtaWNfc2VjdGlvbik6IERldGVjdCBvdmVyIGxhcmdlIHNlY3Rpb24KLQlvZmZzZXRzIGluIHRoZSBEVF9TWU1UQUIgZW50cnkuCi0KLQlQUiBiaW51dGlscy8yMTM0NQotCSogcmVhZGVsZi5jIChwcm9jZXNzX21pcHNfc3BlY2lmaWMpOiBDYXRjaCBhbiB1bmZlYXNpYmxlIG1lbW9yeQotCWFsbG9jYXRpb24gYmVmb3JlIGl0IGhhcHBlbnMgYW5kIHByaW50IGEgc3VpdGFibGUgZXJyb3IgbWVzc2FnZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05MDQwCi1DVkU6IENWRS0yMDE3LTkwNDIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAxMiArKysrKysrKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgfCAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9yZWFkZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtOTMwNiw2ICs5MzA2LDEyIEBAIHByb2Nlc3NfZHluYW1pY19zZWN0aW9uIChGSUxFICogZmlsZSkKLSAJICAgICBwcm9jZXNzaW5nIHRoYXQuICBUaGlzIGlzIG92ZXJraWxsLCBJIGtub3csIGJ1dCBpdAotIAkgICAgIHNob3VsZCB3b3JrLiAgKi8KLSAJICBzZWN0aW9uLnNoX29mZnNldCA9IG9mZnNldF9mcm9tX3ZtYSAoZmlsZSwgZW50cnktPmRfdW4uZF92YWwsIDApOwotKwkgIGlmICgoYmZkX3NpemVfdHlwZSkgc2VjdGlvbi5zaF9vZmZzZXQgPiBjdXJyZW50X2ZpbGVfc2l6ZSkKLSsJICAgIHsKLSsJICAgICAgLyogU2VlIFBSIDIxMzc5IGZvciBhIHJlcHJvZHVjZXIuICAqLwotKwkgICAgICBlcnJvciAoXygiSW52YWxpZCBEVF9TWU1UQUIgZW50cnk6ICVseCIpLCAobG9uZykgc2VjdGlvbi5zaF9vZmZzZXQpOwotKwkgICAgICByZXR1cm4gRkFMU0U7Ci0rCSAgICB9Ci0gCi0gCSAgaWYgKGFyY2hpdmVfZmlsZV9vZmZzZXQgIT0gMCkKLSAJICAgIHNlY3Rpb24uc2hfc2l6ZSA9IGFyY2hpdmVfZmlsZV9zaXplIC0gc2VjdGlvbi5zaF9vZmZzZXQ7Ci1AQCAtMTUxNzUsNiArMTUxODEsMTUgQEAgcHJvY2Vzc19taXBzX3NwZWNpZmljIChGSUxFICogZmlsZSkKLSAJICByZXR1cm4gMDsKLSAJfQotIAotKyAgICAgIC8qIFBSIDIxMzQ1IC0gcHJpbnQgYSBzbGlnaHRseSBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZQotKwkgaWYgd2UgYXJlIHN1cmUgdGhhdCB0aGUgY21hbGxvYyB3aWxsIGZhaWwuICAqLwotKyAgICAgIGlmIChjb25mbGljdHNubyAqIHNpemVvZiAoKiBpY29uZikgPiBjdXJyZW50X2ZpbGVfc2l6ZSkKLSsJewotKwkgIGVycm9yIChfKCJPdmVybGFyZ2UgbnVtYmVyIG9mIGNvbmZsaWN0cyBkZXRlY3RlZDogJWx4XG4iKSwKLSsJCSAobG9uZykgY29uZmxpY3Rzbm8pOwotKwkgIHJldHVybiBGQUxTRTsKLSsJfQotKwotICAgICAgIGljb25mID0gKEVsZjMyX0NvbmZsaWN0ICopIGNtYWxsb2MgKGNvbmZsaWN0c25vLCBzaXplb2YgKCogaWNvbmYpKTsKLSAgICAgICBpZiAoaWNvbmYgPT0gTlVMTCkKLSAJewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzllZDBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gZTY0NTE5ZDFlZDdmZDhmOTkwZjA1YTU1NjJkNWI1YzBjNDRiN2Q3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTc6MTA6MjggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHNlZy1mYXVsdCB3aGVuIHRyeWluZyB0byBkaXNhc3NlbWJsZSBhIGNvcnJ1cHQgc2NvcmUKLSBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU3NgotCSogc2NvcmU3LWRpcy5jIChzY29yZV9vcGNvZGVzKTogQWRkIHNlbnRpbmVsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NDIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBvcGNvZGVzL0NoYW5nZUxvZyAgICB8IDUgKysrKysKLSBvcGNvZGVzL3Njb3JlNy1kaXMuYyB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9vcGNvZGVzL3Njb3JlNy1kaXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvc2NvcmU3LWRpcy5jCi0rKysgZ2l0L29wY29kZXMvc2NvcmU3LWRpcy5jCi1AQCAtNTEzLDcgKzUxMyw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NvcmVfb3Bjb2RlIHNjb3JlX29wY29kZXMKLSAgIHsweDAwMDAwZDA1LCAweDAwMDA3ZjBmLCAidHZjISJ9LAotICAgezB4MDAwMDAwMjYsIDB4M2UwMDAzZmYsICJ4b3JcdFx0JTIwLTI0ciwgJTE1LTE5ciwgJTEwLTE0ciJ9LAotICAgezB4MDAwMDAwMjcsIDB4M2UwMDAzZmYsICJ4b3IuY1x0XHQlMjAtMjRyLCAlMTUtMTlyLCAlMTAtMTRyIn0sCi0tICB7MHgwMDAwMjAwNywgMHgwMDAwNzAwZiwgInhvciFcdFx0JTgtMTFyLCAlNC03ciJ9Ci0rICB7MHgwMDAwMjAwNywgMHgwMDAwNzAwZiwgInhvciFcdFx0JTgtMTFyLCAlNC03ciJ9LAotKyAgeyAwLCAwLCBOVUxMIH0KLSB9OwotIAotIHR5cGVkZWYgc3RydWN0Ci1JbmRleDogZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9DaGFuZ2VMb2cKLSsrKyBnaXQvb3Bjb2Rlcy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTc2Ci0rICAgICAgICogc2NvcmU3LWRpcy5jIChzY29yZV9vcGNvZGVzKTogQWRkIHNlbnRpbmVsLgotKwotIDIwMTctMDMtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlBcHBseSBmcm9tIG1hc3RlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzRhNWE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZjQ2MWJiZDg0N2YxNTY1N2YzZGQyZjMxN2MzMGM3NWE3NTIwZGExZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTc6MDE6NTQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFkZHJlc3MgdmlvbGF0aW9uIGJ1ZyB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0IFNICi0gYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1NzgKLQkqIGVsZjMyLXNoLmMgKHNoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzKTogRml4IGNoZWNrIGZvciBpbnZhbGlkCi0JZmxhZyB2YWx1ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzQ0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgfCA2ICsrKysrKwotIGJmZC9lbGYzMi1zaC5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvYmZkL2VsZjMyLXNoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmMzItc2guYwotKysrIGdpdC9iZmQvZWxmMzItc2guYwotQEAgLTYzNDQsNyArNjM0NCw3IEBAIHNoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzIChiZmQgKmFiZmQpCi0gewotICAgZmxhZ3dvcmQgZmxhZ3MgPSBlbGZfZWxmaGVhZGVyIChhYmZkKS0+ZV9mbGFncyAmIEVGX1NIX01BQ0hfTUFTSzsKLSAKLS0gIGlmIChmbGFncyA+PSBzaXplb2Yoc2hfZWZfYmZkX3RhYmxlKSkKLSsgIGlmIChmbGFncyA+PSBBUlJBWV9TSVpFIChzaF9lZl9iZmRfdGFibGUpKQotICAgICByZXR1cm4gRkFMU0U7Ci0gCi0gICBpZiAoc2hfZWZfYmZkX3RhYmxlW2ZsYWdzXSA9PSAwKQotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKyAKLSsgICAgICAgUFIgYmludXRpbHMvMjE1NzgKLSsgICAgICAgKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IEZpeCBjaGVjayBmb3IgaW52YWxpZAotKyAgICAgICBmbGFnIHZhbHVlLgotKwotIDIwMTctMDQtMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotICAgICAgICBQUiAyMTQzMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjM4ODViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gNzY4MDBjYmE1OTVlZmMzZmU5NWE0NDZjMmQ2NjRlNDJhZTRlZTg2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTI6MDg6NTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gSGFuZGxlIEVJVFIgcmVjb3JkcyBpbiBWTVMgQWxwaGEgYmluYXJpZXMgd2l0aCBvdmVybGFyZ2UKLSBjb21tYW5kIGxlbmd0aCBwYXJhbWV0ZXJzLgotCi0JUFIgYmludXRpbHMvMjE1NzkKLQkqIHZtcy1hbHBoYS5jIChfYmZkX3Ztc19zbHVycF9ldGlyKTogRXh0ZW5kIGNoZWNrIG9mIGNtZF9sZW5ndGguCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc0NQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgICB8ICA1ICsrKysrCi0gYmZkL3Ztcy1hbHBoYS5jIHwgMTYgKysrKysrKystLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvdm1zLWFscGhhLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvdm1zLWFscGhhLmMKLSsrKyBnaXQvYmZkL3Ztcy1hbHBoYS5jCi1AQCAtMTc0MSw2ICsxNzQxLDEyIEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICBfYmZkX2hleGR1bXAgKDgsIHB0ciwgY21kX2xlbmd0aCAtIDQsIDApOwotICNlbmRpZgotIAotKyNpZiBWTVNfREVCVUcKLSsgICAgICBfYmZkX3Ztc19kZWJ1ZyAoNCwgImV0aXI6ICVzKCVkKVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgX2JmZF92bXNfZXRpcl9uYW1lIChjbWQpLCBjbWQpOwotKyAgICAgIF9iZmRfaGV4ZHVtcCAoOCwgcHRyLCBjbWRfbGVuZ3RoIC0gNCwgMCk7Ci0rI2VuZGlmCi0rCi0gICAgICAgc3dpdGNoIChjbWQpCi0gICAgICAgICB7Ci0gICAgICAgICAgIC8qIFN0YWNrIGdsb2JhbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDRhNDBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLUZyb20gYWU4N2Y3ZTczZWJhMjliZDM4YjNhOTY4NGExMGI5NDhlZDcxNTYxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTY6NTA6MDMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFkZHJlc3MgdmlvbGF0aW9uIHdoZW4gZGlzYXNzZW1ibGluZyBhIGNvcnJ1cHQgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1ODAKLWJpbnV0aWxzICogb2JqZHVtcC5jIChkaXNhc3NlbWJsZV9ieXRlcyk6IENoZWNrIGZvciBidWZmZXIgb3ZlcnJ1biB3aGVuCi0JcHJpbnRpbmcgb3V0IHJhZSBpbnNucy4KLQotbGQJKiB0ZXN0c3VpdGUvbGQtbmRzMzIvZGlmZi5kOiBBZGp1c3QgZXhwZWN0ZWQgb3V0cHV0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NDYKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9vYmpkdW1wLmMgICAgICAgICAgIHwgMjcgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gbGQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCi0gbGQvdGVzdHN1aXRlL2xkLW5kczMyL2RpZmYuZCB8ICA2ICsrKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTE4NTUsMjAgKzE4NTUsMjMgQEAgZGlzYXNzZW1ibGVfYnl0ZXMgKHN0cnVjdCBkaXNhc3NlbWJsZV9pbgotIAotIAkgICAgICBmb3IgKGogPSBhZGRyX29mZnNldCAqIG9wYjsgaiA8IGFkZHJfb2Zmc2V0ICogb3BiICsgcGI7IGogKz0gYnBjKQotIAkJewotLQkJICBpbnQgazsKLS0KLS0JCSAgaWYgKGJwYyA+IDEgJiYgaW5mLT5kaXNwbGF5X2VuZGlhbiA9PSBCRkRfRU5ESUFOX0xJVFRMRSkKLS0JCSAgICB7Ci0tCQkgICAgICBmb3IgKGsgPSBicGMgLSAxOyBrID49IDA7IGstLSkKLS0JCQlwcmludGYgKCIlMDJ4IiwgKHVuc2lnbmVkKSBkYXRhW2ogKyBrXSk7Ci0tCQkgICAgICBwdXRjaGFyICgnICcpOwotLQkJICAgIH0KLS0JCSAgZWxzZQotKwkJICAvKiBQUiAyMTU4MDogQ2hlY2sgZm9yIGEgYnVmZmVyIGVuZGluZyBlYXJseS4gICovCi0rCQkgIGlmIChqICsgYnBjIDw9IHN0b3Bfb2Zmc2V0ICogb3BiKQotIAkJICAgIHsKLS0JCSAgICAgIGZvciAoayA9IDA7IGsgPCBicGM7IGsrKykKLS0JCQlwcmludGYgKCIlMDJ4IiwgKHVuc2lnbmVkKSBkYXRhW2ogKyBrXSk7Ci0tCQkgICAgICBwdXRjaGFyICgnICcpOwotKwkJICAgICAgaW50IGs7Ci0rCi0rCQkgICAgICBpZiAoaW5mLT5kaXNwbGF5X2VuZGlhbiA9PSBCRkRfRU5ESUFOX0xJVFRMRSkKLSsJCQl7Ci0rCQkJICBmb3IgKGsgPSBicGMgLSAxOyBrID49IDA7IGstLSkKLSsJCQkgICAgcHJpbnRmICgiJTAyeCIsICh1bnNpZ25lZCkgZGF0YVtqICsga10pOwotKwkJCX0KLSsJCSAgICAgIGVsc2UKLSsJCQl7Ci0rCQkJICBmb3IgKGsgPSAwOyBrIDwgYnBjOyBrKyspCi0rCQkJICAgIHByaW50ZiAoIiUwMngiLCAodW5zaWduZWQpIGRhdGFbaiArIGtdKTsKLSsJCQl9Ci0gCQkgICAgfQotKwkJICBwdXRjaGFyICgnICcpOwotIAkJfQotIAotIAkgICAgICBmb3IgKDsgcGIgPCBvY3RldHNfcGVyX2xpbmU7IHBiICs9IGJwYykKLUluZGV4OiBnaXQvbGQvdGVzdHN1aXRlL2xkLW5kczMyL2RpZmYuZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2xkL3Rlc3RzdWl0ZS9sZC1uZHMzMi9kaWZmLmQKLSsrKyBnaXQvbGQvdGVzdHN1aXRlL2xkLW5kczMyL2RpZmYuZAotQEAgLTcsOSArNyw5IEBACi0gCi0gRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiAuZGF0YToKLSAwMDAwODAwMCA8V09SRD4gKDdlIDAwIDAwIDAwfDAwIDAwIDAwIDdlKS4qCi0tMDAwMDgwMDQgPEhBTEY+ICg3ZSAwMCA3ZSBmZXwwMCA3ZSA3ZSBmZSkuKgotLTAwMDA4MDA2IDxCWVRFPiA3ZSBmZSAwMCBmZS4qCi0tMDAwMDgwMDcgPFVMRUIxMjg+IGZlIDAwLioKLSswMDAwODAwNCA8SEFMRj4gKDdlIDAwfDAwIDdlKS4qCi0rMDAwMDgwMDYgPEJZVEU+IDdlLioKLSswMDAwODAwNyA8VUxFQjEyOD4gZmUuKgotIAkuLi4KLSAwMDAwODAwOSA8VUxFQjEyOF8yPiBmZSAwMC4qCi0gLioKLUluZGV4OiBnaXQvbGQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvbGQvQ2hhbmdlTG9nCi0rKysgZ2l0L2xkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw4IEBACi0rMjAxNy0wNi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjE1ODAKLSsgICAgICAgKiB0ZXN0c3VpdGUvbGQtbmRzMzIvZGlmZi5kOiBBZGp1c3QgZXhwZWN0ZWQgb3V0cHV0LgotKwotIDIwMTctMDMtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAkqIGxkbGFuZy5jIChvcGVuX2lucHV0X2JmZHMpOiBDaGVjayB0aGF0IGxhbmdfYXNzaWdubWVudF9zdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFlYWQ1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDYyYjc2ZTRiNmUwYjRjYjViM2UwMDUzZDFkZTQwOTdiMzI1NzcwNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDEzOjA4OjQ3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiBwYXJzaW5nIGEgY29ycnVwdCBpZWVlIGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTgxCi0JKGllZWVfYXJjaGl2ZV9wKTogVXNlIGEgc3RhdGljIGJ1ZmZlciB0byBhdm9pZCBjb21waWxlciBidWdzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NDcKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgMiArKwotIGJmZC9pZWVlLmMgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9iZmQvaWVlZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2llZWUuYwotKysrIGdpdC9iZmQvaWVlZS5jCi1AQCAtMTM1Nyw3ICsxMzU3LDcgQEAgaWVlZV9hcmNoaXZlX3AgKGJmZCAqYWJmZCkKLSB7Ci0gICBjaGFyICpsaWJyYXJ5OwotICAgdW5zaWduZWQgaW50IGk7Ci0tICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls1MTJdOwotKyAgc3RhdGljIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzUxMl07Ci0gICBmaWxlX3B0ciBidWZmZXJfb2Zmc2V0ID0gMDsKLSAgIGllZWVfYXJfZGF0YV90eXBlICpzYXZlID0gYWJmZC0+dGRhdGEuaWVlZV9hcl9kYXRhOwotICAgaWVlZV9hcl9kYXRhX3R5cGUgKmllZWU7Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTctMDYtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTgxCi0rICAgICAgIChpZWVlX2FyY2hpdmVfcCk6IExpa2V3aXNlLgotKwotIDIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gIAotICAgICAgICBQUiBiaW51dGlscy8yMTU3OApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjA3MDIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNjM2MzRiYjRhMTA3ODc3ZGQwOGI2MjgyZTI4ZTExY2ZkMWExNjQ5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTI6NDQ6MjMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQXZvaWQgYSBwb3NzaWJsZSBjb21waWxlciBidWcgYnkgdXNpbmcgYSBzdGF0aWMgYnVmZmVyCi0gaW5zdGVhZCBvZiBhIHN0YWNrIGxvY2FsIGJ1ZmZlci4KLQotCVBSIGJpbnV0aWxzLzIxNTgyCi0JKiBpZWVlLmMgKGllZWVfb2JqZWN0X3ApOiBVc2UgYSBzdGF0aWMgYnVmZmVyIHRvIGF2b2lkIGNvbXBpbGVyCi0JYnVncy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzQ4Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmZkL2llZWUuYyAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JmZC9pZWVlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvaWVlZS5jCi0rKysgZ2l0L2JmZC9pZWVlLmMKLUBAIC0xODc1LDcgKzE4NzUsNyBAQCBpZWVlX29iamVjdF9wIChiZmQgKmFiZmQpCi0gICBjaGFyICpwcm9jZXNzb3I7Ci0gICB1bnNpZ25lZCBpbnQgcGFydDsKLSAgIGllZWVfZGF0YV90eXBlICppZWVlOwotLSAgdW5zaWduZWQgY2hhciBidWZmZXJbMzAwXTsKLSsgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlclszMDBdOwotICAgaWVlZV9kYXRhX3R5cGUgKnNhdmUgPSBJRUVFX0RBVEEgKGFiZmQpOwotICAgYmZkX3NpemVfdHlwZSBhbXQ7Ci0gCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDUgKzEsOSBAQAotIDIwMTctMDYtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTgyCi0rICAgICAgICogaWVlZS5jIChpZWVlX29iamVjdF9wKTogVXNlIGEgc3RhdGljIGJ1ZmZlciB0byBhdm9pZCBjb21waWxlcgotKyAgICAgICBidWdzLgotKwotICAgICAgICBQUiBiaW51dGlscy8yMTU4MQotICAgICAgICAoaWVlZV9hcmNoaXZlX3ApOiBMaWtld2lzZS4KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NjMmFmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1Gcm9tIDA4Yzc4ODFiODE0YzU0NmVmYzM5OTZmZDFkZWNkZjA4NzdmN2E3NzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDExOjUyOjAyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgaW52YWxpZCBhcnJheSBhY2Nlc3NlcyB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0Ci0gYmZpbiBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU4NgotCSogYmZpbi1kaXMuYyAoZ3JlZ3MpOiBDbGlwIGluZGV4IHRvIHByZXZlbnQgb3ZlcmZsb3cuCi0JKHJlZ3MpOiBMaWtld2lzZS4KLQkocmVnc19sbyk6IExpa2V3aXNlLgotCShyZWdzX2hpKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc0OQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG9wY29kZXMvQ2hhbmdlTG9nICB8IDggKysrKysrKysKLSBvcGNvZGVzL2JmaW4tZGlzLmMgfCA4ICsrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9DaGFuZ2VMb2cKLSsrKyBnaXQvb3Bjb2Rlcy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTU4NgotKwkqIGJmaW4tZGlzLmMgKGdyZWdzKTogQ2xpcCBpbmRleCB0byBwcmV2ZW50IG92ZXJmbG93LgotKwkocmVncyk6IExpa2V3aXNlLgotKwkocmVnc19sbyk6IExpa2V3aXNlLgotKwkocmVnc19oaSk6IExpa2V3aXNlLgotKwotIDIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNTc2Ci1JbmRleDogZ2l0L29wY29kZXMvYmZpbi1kaXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvYmZpbi1kaXMuYwotKysrIGdpdC9vcGNvZGVzL2JmaW4tZGlzLmMKLUBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjbwotICAgUkVHX1AwLCBSRUdfUDEsIFJFR19QMiwgUkVHX1AzLCBSRUdfUDQsIFJFR19QNSwgUkVHX1NQLCBSRUdfRlAsCi0gfTsKLSAKLS0jZGVmaW5lIGdyZWdzKHgsIGkpIFJFR05BTUUgKGRlY29kZV9ncmVnc1soKGkpIDw8IDMpIHwgKHgpXSkKLSsjZGVmaW5lIGdyZWdzKHgsIGkpIFJFR05BTUUgKGRlY29kZV9ncmVnc1soKChpKSA8PCAzKSB8ICh4KSkgJiAxNV0pCi0gCi0gLyogW2RyZWdzIHByZWdzIChpcmVncyBtcmVncykgKGJyZWdzIGxyZWdzKV0uICAqLwotIHN0YXRpYyBjb25zdCBlbnVtIG1hY2hpbmVfcmVnaXN0ZXJzIGRlY29kZV9yZWdzW10gPQotQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgY29uc3QgZW51bSBtYWNoaW5lX3JlZ2lzdGVycyBkZWNvCi0gICBSRUdfQjAsIFJFR19CMSwgUkVHX0IyLCBSRUdfQjMsIFJFR19MMCwgUkVHX0wxLCBSRUdfTDIsIFJFR19MMywKLSB9OwotIAotLSNkZWZpbmUgcmVncyh4LCBpKSBSRUdOQU1FIChkZWNvZGVfcmVnc1soKGkpIDw8IDMpIHwgKHgpXSkKLSsjZGVmaW5lIHJlZ3MoeCwgaSkgUkVHTkFNRSAoZGVjb2RlX3JlZ3NbKCgoaSkgPDwgMykgfCAoeCkpICYgMzFdKQotIAotIC8qIFtkcmVncyBwcmVncyAoaXJlZ3MgbXJlZ3MpIChicmVncyBscmVncykgTG93IEhhbGZdLiAgKi8KLSBzdGF0aWMgY29uc3QgZW51bSBtYWNoaW5lX3JlZ2lzdGVycyBkZWNvZGVfcmVnc19sb1tdID0KLUBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjbwotICAgUkVHX0JMMCwgUkVHX0JMMSwgUkVHX0JMMiwgUkVHX0JMMywgUkVHX0xMMCwgUkVHX0xMMSwgUkVHX0xMMiwgUkVHX0xMMywKLSB9OwotIAotLSNkZWZpbmUgcmVnc19sbyh4LCBpKSBSRUdOQU1FIChkZWNvZGVfcmVnc19sb1soKGkpIDw8IDMpIHwgKHgpXSkKLSsjZGVmaW5lIHJlZ3NfbG8oeCwgaSkgUkVHTkFNRSAoZGVjb2RlX3JlZ3NfbG9bKCgoaSkgPDwgMykgfCAoeCkpICYgMzFdKQotIAotIC8qIFtkcmVncyBwcmVncyAoaXJlZ3MgbXJlZ3MpIChicmVncyBscmVncykgSGlnaCBIYWxmXS4gICovCi0gc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjb2RlX3JlZ3NfaGlbXSA9Ci1AQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyBjb25zdCBlbnVtIG1hY2hpbmVfcmVnaXN0ZXJzIGRlY28KLSAgIFJFR19CSDAsIFJFR19CSDEsIFJFR19CSDIsIFJFR19CSDMsIFJFR19MSDAsIFJFR19MSDEsIFJFR19MSDIsIFJFR19MSDMsCi0gfTsKLSAKLS0jZGVmaW5lIHJlZ3NfaGkoeCwgaSkgUkVHTkFNRSAoZGVjb2RlX3JlZ3NfaGlbKChpKSA8PCAzKSB8ICh4KV0pCi0rI2RlZmluZSByZWdzX2hpKHgsIGkpIFJFR05BTUUgKGRlY29kZV9yZWdzX2hpWygoKGkpIDw8IDMpIHwgKHgpKSAmIDMxXSkKLSAKLSBzdGF0aWMgY29uc3QgZW51bSBtYWNoaW5lX3JlZ2lzdGVycyBkZWNvZGVfc3RhdGJpdHNbXSA9Ci0gewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZThmYTY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi1Gcm9tIGRiNWZhNzcwMjY4YmFmOGNjODJjZjliMTQxZDY5Nzk5ZmQ0ODVmZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE0IEp1biAyMDE3IDEzOjM1OjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiBwcm9ibGVtcyB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0Ci0gUlggYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1ODcKLQkqIHJ4LWRlY29kZS5vcGM6IEluY2x1ZGUgbGliaWJlcnR5LmgKLQkoR0VUX1NDQUxFKTogTmV3IG1hY3JvIC0gdmFsaWRhdGVzIGFjY2VzcyB0byBTQ0FMRSBhcnJheS4KLQkoR0VUX1BTQ0FMRSk6IE5ldyBtYWNybyAtIHZhbGlkYXRlcyBhY2Nlc3MgdG8gUFNDQUxFIGFycmF5LgotCShESXMsIFNJcywgUzJJcywgcnhfZGlzcCk6IFVzZSBuZXcgbWFjcm9zLgotCSogcngtZGVjb2RlLmM6IFJlZ2VuZXJhdGUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc1MAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG9wY29kZXMvQ2hhbmdlTG9nICAgICB8ICA5ICsrKysrKysrKwotIG9wY29kZXMvcngtZGVjb2RlLmMgICB8IDI0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLQotIG9wY29kZXMvcngtZGVjb2RlLm9wYyB8IDI0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvb3Bjb2Rlcy9yeC1kZWNvZGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvcngtZGVjb2RlLmMKLSsrKyBnaXQvb3Bjb2Rlcy9yeC1kZWNvZGUuYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgImFuc2lkZWNsLmgiCi0gI2luY2x1ZGUgIm9wY29kZS9yeC5oIgotKyNpbmNsdWRlICJsaWJpYmVydHkuaCIKLSAKLSAjZGVmaW5lIFJYX09QQ09ERV9CSUdfRU5ESUFOIDAKLSAKLUBAIC00NSw3ICs0Niw3IEBAIHN0YXRpYyBpbnQgdHJhY2UgPSAwOwotICNkZWZpbmUgTFNJWkUgMgotIAotIC8qIFRoZXNlIGFyZSBmb3Igd2hlbiB0aGUgdXBwZXIgYml0cyBhcmUgImRvbid0IGNhcmUiIG9yICJ1bmRlZmluZWQiLiAgKi8KLS1zdGF0aWMgaW50IGJ3bFtdID0KLStzdGF0aWMgaW50IGJ3bFs0XSA9Ci0gewotICAgUlhfQnl0ZSwKLSAgIFJYX1dvcmQsCi1AQCAtNTMsNyArNTQsNyBAQCBzdGF0aWMgaW50IGJ3bFtdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCBzYndsW10gPQotK3N0YXRpYyBpbnQgc2J3bFs0XSA9Ci0gewotICAgUlhfU0J5dGUsCi0gICBSWF9TV29yZCwKLUBAIC02MSw3ICs2Miw3IEBAIHN0YXRpYyBpbnQgc2J3bFtdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCB1YndbXSA9Ci0rc3RhdGljIGludCB1YndbNF0gPQotIHsKLSAgIFJYX1VCeXRlLAotICAgUlhfVVdvcmQsCi1AQCAtNjksNyArNzAsNyBAQCBzdGF0aWMgaW50IHVid1tdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCBtZW1leFtdID0KLStzdGF0aWMgaW50IG1lbWV4WzRdID0KLSB7Ci0gICBSWF9TQnl0ZSwKLSAgIFJYX1NXb3JkLAotQEAgLTg5LDYgKzkwLDkgQEAgc3RhdGljIGludCBTQ0FMRVtdID0geyAxLCAyLCA0LCAwIH07Ci0gLyogVGhpcyBpcyBmb3IgdGhlIHByZWZpeCBzaXplIGVudW0uICAqLwotIHN0YXRpYyBpbnQgUFNDQUxFW10gPSB7IDQsIDEsIDEsIDEsIDIsIDIsIDIsIDMsIDQgfTsKLSAKLSsjZGVmaW5lIEdFVF9TQ0FMRShfaW5keCkgICgodW5zaWduZWQpKF9pbmR4KSA8IEFSUkFZX1NJWkUgKFNDQUxFKSA/IFNDQUxFWyhfaW5keCldIDogMCkKLSsjZGVmaW5lIEdFVF9QU0NBTEUoX2luZHgpICgodW5zaWduZWQpKF9pbmR4KSA8IEFSUkFZX1NJWkUgKFBTQ0FMRSkgPyBQU0NBTEVbKF9pbmR4KV0gOiAwKQotKwotIHN0YXRpYyBpbnQgZmxhZ21hcFtdID0gezAsIDEsIDIsIDMsIDAsIDAsIDAsIDAsCi0gCQkgICAgICAgMTYsIDE3LCAwLCAwLCAwLCAwLCAwLCAwIH07Ci0gCi1AQCAtMTA3LDcgKzExMSw3IEBAIHN0YXRpYyBpbnQgZHNwM21hcFtdID0geyA4LCA5LCAxMCwgMywgNCwKLSAjZGVmaW5lIERDKGMpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX0ltbWVkaWF0ZSwgMCwgYykKLSAjZGVmaW5lIERSKHIpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX1JlZ2lzdGVyLCAgciwgMCkKLSAjZGVmaW5lIERJKHIsYSkgICAgIE9QICgwLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgYSkKLS0jZGVmaW5lIERJcyhyLGEscykgIE9QICgwLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogU0NBTEVbc10pCi0rI2RlZmluZSBESXMocixhLHMpICBPUCAoMCwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIEdFVF9TQ0FMRSAocykpCi0gI2RlZmluZSBERCh0LHIscykgICByeF9kaXNwICgwLCB0LCByLCBid2xbc10sIGxkKTsKLSAjZGVmaW5lIERGKHIpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX0ZsYWcsICBmbGFnbWFwW3JdLCAwKQotIAotQEAgLTExNSw3ICsxMTksNyBAQCBzdGF0aWMgaW50IGRzcDNtYXBbXSA9IHsgOCwgOSwgMTAsIDMsIDQsCi0gI2RlZmluZSBTUihyKSAgICAgICBPUCAoMSwgUlhfT3BlcmFuZF9SZWdpc3RlciwgIHIsIDApCi0gI2RlZmluZSBTUlIocikgICAgICBPUCAoMSwgUlhfT3BlcmFuZF9Ud29SZWcsICByLCAwKQotICNkZWZpbmUgU0kocixhKSAgICAgT1AgKDEsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCBhKQotLSNkZWZpbmUgU0lzKHIsYSxzKSAgT1AgKDEsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBTQ0FMRVtzXSkKLSsjZGVmaW5lIFNJcyhyLGEscykgIE9QICgxLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogR0VUX1NDQUxFIChzKSkKLSAjZGVmaW5lIFNEKHQscixzKSAgIHJ4X2Rpc3AgKDEsIHQsIHIsIGJ3bFtzXSwgbGQpOwotICNkZWZpbmUgU1AodCxyKSAgICAgcnhfZGlzcCAoMSwgdCwgciwgKHQhPTMpID8gUlhfVUJ5dGUgOiBSWF9Mb25nLCBsZCk7IFAodCwgMSk7Ci0gI2RlZmluZSBTUG0odCxyLG0pICByeF9kaXNwICgxLCB0LCByLCBtZW1leFttXSwgbGQpOyByeC0+b3BbMV0uc2l6ZSA9IG1lbWV4W21dOwotQEAgLTEyNCw3ICsxMjgsNyBAQCBzdGF0aWMgaW50IGRzcDNtYXBbXSA9IHsgOCwgOSwgMTAsIDMsIDQsCi0gI2RlZmluZSBTMkMoaSkgICAgICBPUCAoMiwgUlhfT3BlcmFuZF9JbW1lZGlhdGUsIDAsIGkpCi0gI2RlZmluZSBTMlIocikgICAgICBPUCAoMiwgUlhfT3BlcmFuZF9SZWdpc3RlciwgIHIsIDApCi0gI2RlZmluZSBTMkkocixhKSAgICBPUCAoMiwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIGEpCi0tI2RlZmluZSBTMklzKHIsYSxzKSBPUCAoMiwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIFNDQUxFW3NdKQotKyNkZWZpbmUgUzJJcyhyLGEscykgT1AgKDIsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBHRVRfU0NBTEUgKHMpKQotICNkZWZpbmUgUzJEKHQscixzKSAgcnhfZGlzcCAoMiwgdCwgciwgYndsW3NdLCBsZCk7Ci0gI2RlZmluZSBTMlAodCxyKSAgICByeF9kaXNwICgyLCB0LCByLCAodCE9MykgPyBSWF9VQnl0ZSA6IFJYX0xvbmcsIGxkKTsgUCh0LCAyKTsKLSAjZGVmaW5lIFMyUG0odCxyLG0pIHJ4X2Rpc3AgKDIsIHQsIHIsIG1lbWV4W21dLCBsZCk7IHJ4LT5vcFsyXS5zaXplID0gbWVtZXhbbV07Ci1AQCAtMjExLDcgKzIxNSw3IEBAIGltbWVkaWF0ZSAoaW50IHNmaWVsZCwgaW50IGV4LCBMb2NhbERhdGEKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1yeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIGludCBzaXplLCBMb2NhbERhdGEgKiBsZCkKLStyeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIHVuc2lnbmVkIGludCBzaXplLCBMb2NhbERhdGEgKiBsZCkKLSB7Ci0gICBpbnQgZGlzcDsKLSAKLUBAIC0yMjgsNyArMjMyLDcgQEAgcnhfZGlzcCAoaW50IG4sIGludCB0eXBlLCBpbnQgcmVnLCBpbnQgcwotICAgICBjYXNlIDE6Ci0gICAgICAgbGQtPnJ4LT5vcFtuXS50eXBlID0gUlhfT3BlcmFuZF9JbmRpcmVjdDsKLSAgICAgICBkaXNwID0gR0VUQllURSAoKTsKLS0gICAgICBsZC0+cngtPm9wW25dLmFkZGVuZCA9IGRpc3AgKiBQU0NBTEVbc2l6ZV07Ci0rICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogR0VUX1BTQ0FMRSAoc2l6ZSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgMjoKLSAgICAgICBsZC0+cngtPm9wW25dLnR5cGUgPSBSWF9PcGVyYW5kX0luZGlyZWN0OwotQEAgLTIzOCw3ICsyNDIsNyBAQCByeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIGludCBzCi0gI2Vsc2UKLSAgICAgICBkaXNwID0gZGlzcCArIEdFVEJZVEUgKCkgKiAyNTY7Ci0gI2VuZGlmCi0tICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogUFNDQUxFW3NpemVdOwotKyAgICAgIGxkLT5yeC0+b3Bbbl0uYWRkZW5kID0gZGlzcCAqIEdFVF9QU0NBTEUgKHNpemUpOwotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAgIGFib3J0ICgpOwotSW5kZXg6IGdpdC9vcGNvZGVzL3J4LWRlY29kZS5vcGMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9vcGNvZGVzL3J4LWRlY29kZS5vcGMKLSsrKyBnaXQvb3Bjb2Rlcy9yeC1kZWNvZGUub3BjCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSAiYW5zaWRlY2wuaCIKLSAjaW5jbHVkZSAib3Bjb2RlL3J4LmgiCi0rI2luY2x1ZGUgImxpYmliZXJ0eS5oIgotIAotICNkZWZpbmUgUlhfT1BDT0RFX0JJR19FTkRJQU4gMAotIAotQEAgLTQ0LDcgKzQ1LDcgQEAgc3RhdGljIGludCB0cmFjZSA9IDA7Ci0gI2RlZmluZSBMU0laRSAyCi0gCi0gLyogVGhlc2UgYXJlIGZvciB3aGVuIHRoZSB1cHBlciBiaXRzIGFyZSAiZG9uJ3QgY2FyZSIgb3IgInVuZGVmaW5lZCIuICAqLwotLXN0YXRpYyBpbnQgYndsW10gPQotK3N0YXRpYyBpbnQgYndsWzRdID0KLSB7Ci0gICBSWF9CeXRlLAotICAgUlhfV29yZCwKLUBAIC01Miw3ICs1Myw3IEBAIHN0YXRpYyBpbnQgYndsW10gPQotICAgUlhfQmFkX1NpemUgLyogQm9ndXMgaW5zdHJ1Y3Rpb25zIGNhbiBoYXZlIGEgc2l6ZSBmaWVsZCBzZXQgdG8gMy4gICovCi0gfTsKLSAKLS1zdGF0aWMgaW50IHNid2xbXSA9Ci0rc3RhdGljIGludCBzYndsWzRdID0KLSB7Ci0gICBSWF9TQnl0ZSwKLSAgIFJYX1NXb3JkLAotQEAgLTYwLDcgKzYxLDcgQEAgc3RhdGljIGludCBzYndsW10gPQotICAgUlhfQmFkX1NpemUgLyogQm9ndXMgaW5zdHJ1Y3Rpb25zIGNhbiBoYXZlIGEgc2l6ZSBmaWVsZCBzZXQgdG8gMy4gICovCi0gfTsKLSAKLS1zdGF0aWMgaW50IHVid1tdID0KLStzdGF0aWMgaW50IHVid1s0XSA9Ci0gewotICAgUlhfVUJ5dGUsCi0gICBSWF9VV29yZCwKLUBAIC02OCw3ICs2OSw3IEBAIHN0YXRpYyBpbnQgdWJ3W10gPQotICAgUlhfQmFkX1NpemUgLyogQm9ndXMgaW5zdHJ1Y3Rpb25zIGNhbiBoYXZlIGEgc2l6ZSBmaWVsZCBzZXQgdG8gMy4gICovCi0gfTsKLSAKLS1zdGF0aWMgaW50IG1lbWV4W10gPQotK3N0YXRpYyBpbnQgbWVtZXhbNF0gPQotIHsKLSAgIFJYX1NCeXRlLAotICAgUlhfU1dvcmQsCi1AQCAtODgsNiArODksOSBAQCBzdGF0aWMgaW50IFNDQUxFW10gPSB7IDEsIDIsIDQsIDAgfTsKLSAvKiBUaGlzIGlzIGZvciB0aGUgcHJlZml4IHNpemUgZW51bS4gICovCi0gc3RhdGljIGludCBQU0NBTEVbXSA9IHsgNCwgMSwgMSwgMSwgMiwgMiwgMiwgMywgNCB9OwotIAotKyNkZWZpbmUgR0VUX1NDQUxFKF9pbmR4KSAgKCh1bnNpZ25lZCkoX2luZHgpIDwgQVJSQVlfU0laRSAoU0NBTEUpID8gU0NBTEVbKF9pbmR4KV0gOiAwKQotKyNkZWZpbmUgR0VUX1BTQ0FMRShfaW5keCkgKCh1bnNpZ25lZCkoX2luZHgpIDwgQVJSQVlfU0laRSAoUFNDQUxFKSA/IFBTQ0FMRVsoX2luZHgpXSA6IDApCi0rCi0gc3RhdGljIGludCBmbGFnbWFwW10gPSB7MCwgMSwgMiwgMywgMCwgMCwgMCwgMCwKLSAJCSAgICAgICAxNiwgMTcsIDAsIDAsIDAsIDAsIDAsIDAgfTsKLSAKLUBAIC0xMDYsNyArMTEwLDcgQEAgc3RhdGljIGludCBkc3AzbWFwW10gPSB7IDgsIDksIDEwLCAzLCA0LAotICNkZWZpbmUgREMoYykgICAgICAgT1AgKDAsIFJYX09wZXJhbmRfSW1tZWRpYXRlLCAwLCBjKQotICNkZWZpbmUgRFIocikgICAgICAgT1AgKDAsIFJYX09wZXJhbmRfUmVnaXN0ZXIsICByLCAwKQotICNkZWZpbmUgREkocixhKSAgICAgT1AgKDAsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCBhKQotLSNkZWZpbmUgRElzKHIsYSxzKSAgT1AgKDAsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBTQ0FMRVtzXSkKLSsjZGVmaW5lIERJcyhyLGEscykgIE9QICgwLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogR0VUX1NDQUxFIChzKSkKLSAjZGVmaW5lIEREKHQscixzKSAgIHJ4X2Rpc3AgKDAsIHQsIHIsIGJ3bFtzXSwgbGQpOwotICNkZWZpbmUgREYocikgICAgICAgT1AgKDAsIFJYX09wZXJhbmRfRmxhZywgIGZsYWdtYXBbcl0sIDApCi0gCi1AQCAtMTE0LDcgKzExOCw3IEBAIHN0YXRpYyBpbnQgZHNwM21hcFtdID0geyA4LCA5LCAxMCwgMywgNCwKLSAjZGVmaW5lIFNSKHIpICAgICAgIE9QICgxLCBSWF9PcGVyYW5kX1JlZ2lzdGVyLCAgciwgMCkKLSAjZGVmaW5lIFNSUihyKSAgICAgIE9QICgxLCBSWF9PcGVyYW5kX1R3b1JlZywgIHIsIDApCi0gI2RlZmluZSBTSShyLGEpICAgICBPUCAoMSwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIGEpCi0tI2RlZmluZSBTSXMocixhLHMpICBPUCAoMSwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIFNDQUxFW3NdKQotKyNkZWZpbmUgU0lzKHIsYSxzKSAgT1AgKDEsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBHRVRfU0NBTEUgKHMpKQotICNkZWZpbmUgU0QodCxyLHMpICAgcnhfZGlzcCAoMSwgdCwgciwgYndsW3NdLCBsZCk7Ci0gI2RlZmluZSBTUCh0LHIpICAgICByeF9kaXNwICgxLCB0LCByLCAodCE9MykgPyBSWF9VQnl0ZSA6IFJYX0xvbmcsIGxkKTsgUCh0LCAxKTsKLSAjZGVmaW5lIFNQbSh0LHIsbSkgIHJ4X2Rpc3AgKDEsIHQsIHIsIG1lbWV4W21dLCBsZCk7IHJ4LT5vcFsxXS5zaXplID0gbWVtZXhbbV07Ci1AQCAtMTIzLDcgKzEyNyw3IEBAIHN0YXRpYyBpbnQgZHNwM21hcFtdID0geyA4LCA5LCAxMCwgMywgNCwKLSAjZGVmaW5lIFMyQyhpKSAgICAgIE9QICgyLCBSWF9PcGVyYW5kX0ltbWVkaWF0ZSwgMCwgaSkKLSAjZGVmaW5lIFMyUihyKSAgICAgIE9QICgyLCBSWF9PcGVyYW5kX1JlZ2lzdGVyLCAgciwgMCkKLSAjZGVmaW5lIFMySShyLGEpICAgIE9QICgyLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgYSkKLS0jZGVmaW5lIFMySXMocixhLHMpIE9QICgyLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogU0NBTEVbc10pCi0rI2RlZmluZSBTMklzKHIsYSxzKSBPUCAoMiwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIEdFVF9TQ0FMRSAocykpCi0gI2RlZmluZSBTMkQodCxyLHMpICByeF9kaXNwICgyLCB0LCByLCBid2xbc10sIGxkKTsKLSAjZGVmaW5lIFMyUCh0LHIpICAgIHJ4X2Rpc3AgKDIsIHQsIHIsICh0IT0zKSA/IFJYX1VCeXRlIDogUlhfTG9uZywgbGQpOyBQKHQsIDIpOwotICNkZWZpbmUgUzJQbSh0LHIsbSkgcnhfZGlzcCAoMiwgdCwgciwgbWVtZXhbbV0sIGxkKTsgcngtPm9wWzJdLnNpemUgPSBtZW1leFttXTsKLUBAIC0yMTAsNyArMjE0LDcgQEAgaW1tZWRpYXRlIChpbnQgc2ZpZWxkLCBpbnQgZXgsIExvY2FsRGF0YQotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXJ4X2Rpc3AgKGludCBuLCBpbnQgdHlwZSwgaW50IHJlZywgaW50IHNpemUsIExvY2FsRGF0YSAqIGxkKQotK3J4X2Rpc3AgKGludCBuLCBpbnQgdHlwZSwgaW50IHJlZywgdW5zaWduZWQgaW50IHNpemUsIExvY2FsRGF0YSAqIGxkKQotIHsKLSAgIGludCBkaXNwOwotIAotQEAgLTIyNyw3ICsyMzEsNyBAQCByeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIGludCBzCi0gICAgIGNhc2UgMToKLSAgICAgICBsZC0+cngtPm9wW25dLnR5cGUgPSBSWF9PcGVyYW5kX0luZGlyZWN0OwotICAgICAgIGRpc3AgPSBHRVRCWVRFICgpOwotLSAgICAgIGxkLT5yeC0+b3Bbbl0uYWRkZW5kID0gZGlzcCAqIFBTQ0FMRVtzaXplXTsKLSsgICAgICBsZC0+cngtPm9wW25dLmFkZGVuZCA9IGRpc3AgKiBHRVRfUFNDQUxFIChzaXplKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSAyOgotICAgICAgIGxkLT5yeC0+b3Bbbl0udHlwZSA9IFJYX09wZXJhbmRfSW5kaXJlY3Q7Ci1AQCAtMjM3LDcgKzI0MSw3IEBAIHJ4X2Rpc3AgKGludCBuLCBpbnQgdHlwZSwgaW50IHJlZywgaW50IHMKLSAjZWxzZQotICAgICAgIGRpc3AgPSBkaXNwICsgR0VUQllURSAoKSAqIDI1NjsKLSAjZW5kaWYKLS0gICAgICBsZC0+cngtPm9wW25dLmFkZGVuZCA9IGRpc3AgKiBQU0NBTEVbc2l6ZV07Ci0rICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogR0VUX1BTQ0FMRSAoc2l6ZSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgYWJvcnQgKCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YzE4Y2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzc0OCArMCwwIEBACi1Gcm9tIDYzMzIzYjViMjNiZDgzZmE3YjA0ZWEwMGRmZjU5M2M5MzNlOWIwZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDEyOjM3OjAxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0IFJMNzgKLSBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU4OAotCSogcmw3OC1kZWNvZGUub3BjIChPUF9CVUZfTEVOKTogRGVmaW5lLgotCShHRVRCWVRFKTogQ2hlY2sgZm9yIHRoZSBpbmRleCBleGNlZWRpbmcgT1BfQlVGX0xFTi4KLQkocmw3OF9kZWNvZGVfb3Bjb2RlKTogVXNlIE9QX0JVRl9MRU4gYXMgdGhlIGxlbmd0aCBvZiB0aGUgb3BfYnVmCi0JYXJyYXkuCi0JKiBybDc4LWRlY29kZS5jOiBSZWdlbmVyYXRlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NTEKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBvcGNvZGVzL0NoYW5nZUxvZyAgICAgICB8ICAgOSArCi0gb3Bjb2Rlcy9ybDc4LWRlY29kZS5jICAgfCA4MjAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gb3Bjb2Rlcy9ybDc4LWRlY29kZS5vcGMgfCAgIDYgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDQyNCBpbnNlcnRpb25zKCspLCA0MTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9vcGNvZGVzL0NoYW5nZUxvZyBiL29wY29kZXMvQ2hhbmdlTG9nCi1pbmRleCAzNGIxODQ0Li5jNzdmMDBhIDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9DaGFuZ2VMb2cKLSsrKyBiL29wY29kZXMvQ2hhbmdlTG9nCi1AQCAtMSw1ICsxLDE0IEBACi0gMjAxNy0wNi0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSsJUFIgYmludXRpbHMvMjE1ODgKLSsJKiBybDc4LWRlY29kZS5vcGMgKE9QX0JVRl9MRU4pOiBEZWZpbmUuCi0rCShHRVRCWVRFKTogQ2hlY2sgZm9yIHRoZSBpbmRleCBleGNlZWRpbmcgT1BfQlVGX0xFTi4KLSsJKHJsNzhfZGVjb2RlX29wY29kZSk6IFVzZSBPUF9CVUZfTEVOIGFzIHRoZSBsZW5ndGggb2YgdGhlIG9wX2J1ZgotKwlhcnJheS4KLSsJKiBybDc4LWRlY29kZS5jOiBSZWdlbmVyYXRlLgotKwotKzIwMTctMDYtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0gCVBSIGJpbnV0aWxzLzIxNTg2Ci0gCSogYmZpbi1kaXMuYyAoZ3JlZ3MpOiBDbGlwIGluZGV4IHRvIHByZXZlbnQgb3ZlcmZsb3cuCi0gCShyZWdzKTogTGlrZXdpc2UuCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9ybDc4LWRlY29kZS5jIGIvb3Bjb2Rlcy9ybDc4LWRlY29kZS5jCi1pbmRleCBkMDU2NmVhLi5iMmQ0YmQ2IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9ybDc4LWRlY29kZS5jCi0rKysgYi9vcGNvZGVzL3JsNzgtZGVjb2RlLmMKLUBAIC01MSw3ICs1MSw5IEBAIHR5cGVkZWYgc3RydWN0Ci0gI2RlZmluZSBXKCkgcmw3OC0+c2l6ZSA9IFJMNzhfV29yZAotIAotICNkZWZpbmUgQVUgQVRUUklCVVRFX1VOVVNFRAotLSNkZWZpbmUgR0VUQllURSgpIChsZC0+b3AgW2xkLT5ybDc4LT5uX2J5dGVzKytdID0gbGQtPmdldGJ5dGUgKGxkLT5wdHIpKQotKwotKyNkZWZpbmUgT1BfQlVGX0xFTiAyMAotKyNkZWZpbmUgR0VUQllURSgpIChsZC0+cmw3OC0+bl9ieXRlcyA8IChPUF9CVUZfTEVOIC0gMSkgPyBsZC0+b3AgW2xkLT5ybDc4LT5uX2J5dGVzKytdID0gbGQtPmdldGJ5dGUgKGxkLT5wdHIpOiAwKQotICNkZWZpbmUgQiAoKHVuc2lnbmVkIGxvbmcpIEdFVEJZVEUoKSkKLSAKLSAjZGVmaW5lIFNZTlRBWCh4KSBybDc4LT5zeW50YXggPSB4Ci1AQCAtMTY5LDcgKzE3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAJCSAgUkw3OF9EaXNfSXNhIGlzYSkKLSB7Ci0gICBMb2NhbERhdGEgbGRzLCAqIGxkID0gJmxkczsKLS0gIHVuc2lnbmVkIGNoYXIgb3BfYnVmWzIwXSA9IHswfTsKLSsgIHVuc2lnbmVkIGNoYXIgb3BfYnVmW09QX0JVRl9MRU5dID0gezB9OwotICAgdW5zaWduZWQgY2hhciAqb3AgPSBvcF9idWY7Ci0gICBpbnQgb3AwLCBvcDE7Ci0gCi1AQCAtMjAxLDcgKzIwMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm5vcCIpOwotLSNsaW5lIDkxMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkxMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChub3ApOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yMTQsNyArMjE2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4MDc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMDAwIDBydzEJCQlhZGR3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDI3NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcncgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTIyNCw3ICsyMjYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJ3ID0gMHgleFxuIiwgcncpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGR3CSUwLCAlMSIpOwotLSNsaW5lIDI3NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU1JXKHJ3KTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0yMzksNyArMjQxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkdwklMCwgJWUhMSIpOwotLSNsaW5lIDI2NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI2NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMjU0LDcgKzI1Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZHcJJTAsICMlMSIpOwotLSNsaW5lIDI3MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU0MoSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMjY5LDcgKzI3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZHcJJTAsICUxIik7Ci0tI2xpbmUgMjc3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjc5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMjg0LDcgKzI4Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhjaAlhLCB4Iik7Ci0tI2xpbmUgMTIzNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNSKFgpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zMDEsNyArMzAzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZTEiKTsKLS0jbGluZSA2NzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2ODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKEIsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTMxNiw3ICszMTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICMlMSIpOwotLSNsaW5lIDIyOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIzMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zMzMsNyArMzM1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAlMSIpOwotLSNsaW5lIDIyMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIyNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTM0OCw3ICszNTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICMlMSIpOwotLSNsaW5lIDIxNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIxOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzYzLDcgKzM2NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZAklMCwgJWUxIik7Ci0tI2xpbmUgMjA0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjA2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IERSKEEpOyBTTShITCwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzc4LDcgKzM4MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZAklMCwgJWVhMSIpOwotLSNsaW5lIDIxMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIxMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTM5Myw3ICszOTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICVlITEiKTsKLS0jbGluZSAyMDEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTQwOCw3ICs0MTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGR3CSUwLCAjJTEiKTsKLS0jbGluZSAyODAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyODIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgVygpOyBEUihTUCk7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00MjUsNyArNDI3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiZXM6Iik7Ci0tI2xpbmUgMTkzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTk1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIERFKCk7IFNFKCk7Ci0gICAgICAgICAgIG9wICsrOwotICAgICAgICAgICBwYyArKzsKLUBAIC00NDAsNyArNDQyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4MTY6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMDAxIDByYTAJCQltb3Z3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDg1OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg2MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTQ1MCw3ICs0NTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJhID0gMHgleFxuIiwgcmEpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlMSIpOwotLSNsaW5lIDg1OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg2MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSVyhyYSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NjAsNyArNDYyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4MTc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMDAxIDByYTEJCQltb3Z3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDg1NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg1OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTQ3MCw3ICs0NzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJhID0gMHgleFxuIiwgcmEpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlMSIpOwotLSNsaW5lIDg1NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg1OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU1JXKHJhKTsKLSAKLSAgICAgICAgIH0KLUBAIC00ODUsNyArNDg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgJTEiKTsKLS0jbGluZSA3MjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MzEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oQiwgSU1NVSgyKSk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTUwMCw3ICs1MDIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAjJTEiKTsKLS0jbGluZSA3MjYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MjggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oQiwgSU1NVSgyKSk7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTUxNSw3ICs1MTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGRjCSUwLCAjJTEiKTsKLS0jbGluZSAyNjAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNjIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkYyk7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTUzMiw3ICs1MzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGRjCSUwLCAlMSIpOwotLSNsaW5lIDI1NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI1OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC01NDcsNyArNTQ5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgIyUxIik7Ci0tI2xpbmUgMjQ4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjUwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZGMpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTYyLDcgKzU2NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICVlMSIpOwotLSNsaW5lIDIzNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIzOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNKEhMLCAwKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC01NzcsNyArNTc5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgJWVhMSIpOwotLSNsaW5lIDI0NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI0NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC01OTIsNyArNTk0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgJWUhMSIpOwotLSNsaW5lIDIzMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTYwNyw3ICs2MDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJ3CSUwLCAjJTEiKTsKLS0jbGluZSAxMTk4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIwMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBXKCk7IERSKFNQKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTYyMCw3ICs2MjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHgyNzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAwMTAgMHJ3MQkJCXN1YncJJTAsICUxCQkJCSovCi0tI2xpbmUgMTE5MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExOTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJ3IEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC02MzAsNyArNjMyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICBydyA9IDB4JXhcbiIsIHJ3KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgJTEiKTsKLS0jbGluZSAxMTkyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE5NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBXKCk7IERSKEFYKTsgU1JXKHJ3KTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC02NDUsNyArNjQ3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgJWUhMSIpOwotLSNsaW5lIDExODMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTg1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC02NjAsNyArNjYyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgIyUxIik7Ci0tI2xpbmUgMTE4OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExOTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgVygpOyBEUihBWCk7IFNDKElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTY3NSw3ICs2NzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJ3CSUwLCAlMSIpOwotLSNsaW5lIDExOTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTk3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNjkwLDcgKzY5Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICUxIik7Ci0tI2xpbmUgNzQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzQzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKEMsIElNTVUoMikpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC03MDUsNyArNzA3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZTEiKTsKLS0jbGluZSA2ODQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2ODYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKEMsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTcyMCw3ICs3MjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWIJJTAsICMlMSIpOwotLSNsaW5lIDExNDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTQ4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTczNyw3ICs3MzksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWIJJTAsICUxIik7Ci0tI2xpbmUgMTE0MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNDIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC03NTIsNyArNzU0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAjJTEiKTsKLS0jbGluZSAxMTM0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEzNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNzY3LDcgKzc2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJWUxIik7Ci0tI2xpbmUgMTEyMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMjQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNKEhMLCAwKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC03ODIsNyArNzg0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlZWExIik7Ci0tI2xpbmUgMTEyOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC03OTcsNyArNzk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlZSExIik7Ci0tI2xpbmUgMTExOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTgwOCw3ICs4MTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHgzNjoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAwMTEgMHJnMAkJCW1vdncJJTAsICMlMQkJCQkqLwotLSNsaW5lIDg1MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg1NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmcgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTgxOCw3ICs4MjAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAjJTEiKTsKLS0jbGluZSA4NTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUlcocmcpOyBTQyhJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC04MzAsNyArODMyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDA6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMDAwCQlidGNscgklczEsICQlYTAJCQkqLwotLSNsaW5lIDQxNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQxOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC04NDAsNyArODQyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJidGNscgklczEsICQlYTAiKTsKLS0jbGluZSA0MTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmRfY2xlYXIpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTg1MCw3ICs4NTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwMToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwYml0IDAwMDEJCWJ0Y2xyCSUxLCAkJWEwCQkJKi8KLS0jbGluZSA0MTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtODYwLDcgKzg2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnRjbHIJJTEsICQlYTAiKTsKLS0jbGluZSA0MTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmRfY2xlYXIpOyBEQyhwYytJTU1TKDEpKzMpOyBTUihBKTsgU0IoYml0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC04NjgsNyArODcwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDI6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMDEwCQlidAklczEsICQlYTAJCQkqLwotLSNsaW5lIDQwMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQwNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC04NzgsNyArODgwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJidAklczEsICQlYTAiKTsKLS0jbGluZSA0MDIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MDQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTg4OCw3ICs4OTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwMzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwYml0IDAwMTEJCWJ0CSUxLCAkJWEwCQkJKi8KLS0jbGluZSAzOTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzOTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtODk4LDcgKzkwMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnQJJTEsICQlYTAiKTsKLS0jbGluZSAzOTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzOTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBEQyhwYytJTU1TKDEpKzMpOyBTUihBKTsgU0IoYml0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC05MDYsNyArOTA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDQ6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMTAwCQliZgklczEsICQlYTAJCQkqLwotLSNsaW5lIDM2MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM2NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC05MTYsNyArOTE4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJiZgklczEsICQlYTAiKTsKLS0jbGluZSAzNjMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNjUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoRik7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTkyNiw3ICs5MjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwNToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwYml0IDAxMDEJCWJmCSUxLCAkJWEwCQkJKi8KLS0jbGluZSAzNTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtOTM2LDcgKzkzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYmYJJTEsICQlYTAiKTsKLS0jbGluZSAzNTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBEQyhwYytJTU1TKDEpKzMpOyBTUihBKTsgU0IoYml0KTsgQ09ORChGKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC05NDQsNyArOTQ2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGNudCAwMTExCQlzaGwJJTAsICUxCQkJCSovCi0tI2xpbmUgMTA3NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGNudCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtOTU0LDcgKzk1Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgY250ID0gMHgleFxuIiwgY250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2hsCSUwLCAlMSIpOwotLSNsaW5lIDEwNzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDc3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNobCk7IERSKEMpOyBTQyhjbnQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTk2Miw3ICs5NjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwODoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwY250IDEwMDAJCXNobAklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA3NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgY250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC05NzIsNyArOTc0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBjbnQgPSAweCV4XG4iLCBjbnQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzaGwJJTAsICUxIik7Ci0tI2xpbmUgMTA3MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2hsKTsgRFIoQik7IFNDKGNudCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtOTgwLDcgKzk4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDA5OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBjbnQgMTAwMQkJc2hsCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwNjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDcxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTk5MCw3ICs5OTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGNudCA9IDB4JXhcbiIsIGNudCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNobAklMCwgJTEiKTsKLS0jbGluZSAxMDY5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA3MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzaGwpOyBEUihBKTsgU0MoY250KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC05OTgsNyArMTAwMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDBhOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBjbnQgMTAxMAkJc2hyCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwMDgsNyArMTAxMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgY250ID0gMHgleFxuIiwgY250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2hyCSUwLCAlMSIpOwotLSNsaW5lIDEwODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNocik7IERSKEEpOyBTQyhjbnQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTEwMTYsNyArMTAxOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDBiOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBjbnQgMTAxMQkJc2FyCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwMzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDM1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwMjYsNyArMTAyOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgY250ID0gMHgleFxuIiwgY250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2FyCSUwLCAlMSIpOwotLSNsaW5lIDEwMzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDM1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNhcik7IERSKEEpOyBTQyhjbnQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTEwMzUsNyArMTAzNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDhjOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIHdjbnQgMTEwMAkJc2hsdwklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDgxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA4MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgd2NudCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MGY7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTA0NSw3ICsxMDQ3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICB3Y250ID0gMHgleFxuIiwgd2NudCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNobHcJJTAsICUxIik7Ci0tI2xpbmUgMTA4MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwODMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2hsKTsgVygpOyBEUihCQyk7IFNDKHdjbnQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0xMDU2LDcgKzEwNTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4ZDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSB3Y250IDExMDEJCXNobHcJJTAsICUxCQkJCSovCi0tI2xpbmUgMTA3OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHdjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDBmOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwNjYsNyArMTA2OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgd2NudCA9IDB4JXhcbiIsIHdjbnQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzaGx3CSUwLCAlMSIpOwotLSNsaW5lIDEwNzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDgwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNobCk7IFcoKTsgRFIoQVgpOyBTQyh3Y250KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMDc1LDcgKzEwNzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4ZToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSB3Y250IDExMTAJCXNocncJJTAsICUxCQkJCSovCi0tI2xpbmUgMTA4OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwOTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHdjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDBmOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwODUsNyArMTA4Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgd2NudCA9IDB4JXhcbiIsIHdjbnQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzaHJ3CSUwLCAlMSIpOwotLSNsaW5lIDEwODkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNocik7IFcoKTsgRFIoQVgpOyBTQyh3Y250KTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMTA5Niw3ICsxMDk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4OGY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgd2NudCAxMTExCQlzYXJ3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwMzYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDM4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCB3Y250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwZjsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMTA2LDcgKzExMDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHdjbnQgPSAweCV4XG4iLCB3Y250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2FydwklMCwgJTEiKTsKLS0jbGluZSAxMDM2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAzOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzYXIpOyBXKCk7IERSKEFYKTsgU0Mod2NudCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTExMTYsNyArMTExOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDgwOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDFiaXQgMDAwMAkJYnRjbHIJJXMxLCAkJWEwCQkJKi8KLS0jbGluZSA0MTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTEyNiw3ICsxMTI4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJidGNscgklczEsICQlYTAiKTsKLS0jbGluZSA0MTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmRfY2xlYXIpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOyBEQyhwYytJTU1TKDEpKzQpOyBDT05EKFQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTExMzQsNyArMTEzNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDgxOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDFiaXQgMDAwMQkJYnRjbHIJJWUxLCAkJWEwCQkJKi8KLS0jbGluZSA0MDcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTE0NCw3ICsxMTQ2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJidGNscgklZTEsICQlYTAiKTsKLS0jbGluZSA0MDcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmRfY2xlYXIpOyBEQyhwYytJTU1TKDEpKzMpOyBTTShITCwwKTsgU0IoYml0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMTUyLDcgKzExNTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4MjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAxYml0IDAwMTAJCWJ0CSVzMSwgJCVhMAkJCSovCi0tI2xpbmUgMzk5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDAxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTExNjIsNyArMTE2NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnQJJXMxLCAkJWEwIik7Ci0tI2xpbmUgMzk5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDAxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgU00oTm9uZSwgU0ZSKTsgU0IoYml0KTsgREMocGMrSU1NUygxKSs0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMTcwLDcgKzExNzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4MzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAxYml0IDAwMTEJCWJ0CSVlMSwgJCVhMAkJCSovCi0tI2xpbmUgMzkzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzk1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTExODAsNyArMTE4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnQJJWUxLCAkJWEwIik7Ci0tI2xpbmUgMzkzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzk1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSszKTsgU00oSEwsMCk7IFNCKGJpdCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTE4OCw3ICsxMTkwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ODQ6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMWJpdCAwMTAwCQliZgklczEsICQlYTAJCQkqLwotLSNsaW5lIDM2MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM2MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMTk4LDcgKzEyMDAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJmCSVzMSwgJCVhMCIpOwotLSNsaW5lIDM2MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM2MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IFNNKE5vbmUsIFNGUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoRik7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTIwNiw3ICsxMjA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ODU6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMWJpdCAwMTAxCQliZgklZTEsICQlYTAJCQkqLwotLSNsaW5lIDM1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMjE2LDcgKzEyMTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJmCSVlMSwgJCVhMCIpOwotLSNsaW5lIDM1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMyk7IFNNKEhMLDApOyBTQihiaXQpOyBDT05EKEYpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTEyMjksNyArMTIzMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweDM3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMDAxMSAwcmExCQkJeGNodwklMCwgJTEJCQkJKi8KLS0jbGluZSAxMjM5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI0MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTEyMzksNyArMTI0MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmEgPSAweCV4XG4iLCByYSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhjaHcJJTAsICUxIik7Ci0tI2xpbmUgMTIzOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNDEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeGNoKTsgVygpOyBEUihBWCk7IFNSVyhyYSk7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTEyNTYsNyArMTI1OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICMlMSIpOwotLSNsaW5lIDczOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc0MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShDLCBJTU1VKDIpKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTI3MSw3ICsxMjczLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgIyUxIik7Ci0tI2xpbmUgNzMyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzM0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKEJDLCBJTU1VKDIpKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTI4Niw3ICsxMjg4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgIyUxIik7Ci0tI2xpbmUgMTE3OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTEzMDMsNyArMTMwNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YmMJJTAsICUxIik7Ci0tI2xpbmUgMTE3NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERSKEEpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTMxOCw3ICsxMzIwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgIyUxIik7Ci0tI2xpbmUgMTE2NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNjggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERSKEEpOyBTQyhJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xMzMzLDcgKzEzMzUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlZTEiKTsKLS0jbGluZSAxMTU0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWJjKTsgRFIoQSk7IFNNKEhMLCAwKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xMzQ4LDcgKzEzNTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlZWExIik7Ci0tI2xpbmUgMTE2MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNjUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERSKEEpOyBTTShITCwgSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTM2Myw3ICsxMzY1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgJWUhMSIpOwotLSNsaW5lIDExNTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTUzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTM3OCw3ICsxMzgwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wCSVlITAsICMlMSIpOwotLSNsaW5lIDQ4MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ4MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBETShOb25lLCBJTU1VKDIpKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTM5Myw3ICsxMzk1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAjJTEiKTsKLS0jbGluZSA3MTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoRVMpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC0xNDA4LDcgKzE0MTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXB3CSUwLCAlZSExIik7Ci0tI2xpbmUgNTMxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTMzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNDE4LDcgKzE0MjAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg0NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAxMDAgMHJhMQkJCWNtcHcJJTAsICUxCQkJCSovCi0tI2xpbmUgNTQwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTQyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByYSBBVSA9IChvcFswXSA+PiAxKSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtMTQyOCw3ICsxNDMwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYSA9IDB4JXhcbiIsIHJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wdwklMCwgJTEiKTsKLS0jbGluZSA1NDAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NDIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgVygpOyBEUihBWCk7IFNSVyhyYSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTQ0Myw3ICsxNDQ1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wdwklMCwgIyUxIik7Ci0tI2xpbmUgNTM3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTM5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IFcoKTsgRFIoQVgpOyBTQyhJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNDU4LDcgKzE0NjAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXB3CSUwLCAlMSIpOwotLSNsaW5lIDU0MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU0NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgU0FERFIpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0xNDc1LDcgKzE0NzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAlMSIpOwotLSNsaW5lIDczNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDczNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShCQywgSU1NVSgyKSk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTE0OTAsNyArMTQ5Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjgxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjgzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShCQywgSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTUwNSw3ICsxNTA3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wCSUwLCAjJTEiKTsKLS0jbGluZSA0ODMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0ODUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRE0oTm9uZSwgU0FERFIpOyBTQyhJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNTIwLDcgKzE1MjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICUxIik7Ci0tI2xpbmUgNTEwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTEyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IERSKEEpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTE1MzcsNyArMTUzOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgIyUxIik7Ci0tI2xpbmUgNTAxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTAzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IERSKEEpOyBTQyhJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNTUyLDcgKzE1NTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICVlMSIpOwotLSNsaW5lIDQ4OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ5MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU00oSEwsIDApOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTE1NjcsNyArMTU2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJWVhMSIpOwotLSNsaW5lIDQ5OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUwMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTE1ODIsNyArMTU4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJWUhMSIpOwotLSNsaW5lIDQ4NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTU5Nyw3ICsxNTk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4NTc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMTAxIDByZWcJCQltb3YJJTAsICMlMQkJCQkqLwotLSNsaW5lIDY2OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY3MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMF0gJiAweDA3OwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTE2MDcsNyArMTYwOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAjJTEiKTsKLS0jbGluZSA2NjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NzEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFJCKHJlZyk7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTE2MjIsNyArMTYyNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJWUwLCAlMSIpOwotLSNsaW5lIDg3MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg3MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKEIsIElNTVUoMikpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTYzNyw3ICsxNjM5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWUxIik7Ci0tI2xpbmUgODYyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODY0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShCLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC0xNjUyLDcgKzE2NTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICMlMSIpOwotLSNsaW5lIDMxMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMxNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMTY2OSw3ICsxNjcxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAlMSIpOwotLSNsaW5lIDMwOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMxMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0xNjg0LDcgKzE2ODYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICMlMSIpOwotLSNsaW5lIDMwMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMwMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTE2OTksNyArMTcwMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFuZAklMCwgJWUxIik7Ci0tI2xpbmUgMjg4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjkwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFuZCk7IERSKEEpOyBTTShITCwgMCk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTE3MTQsNyArMTcxNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFuZAklMCwgJWVhMSIpOwotLSNsaW5lIDI5NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI5NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU00oSEwsIElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0xNzI5LDcgKzE3MzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICVlITEiKTsKLS0jbGluZSAyODUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyODcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYW5kKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0xNzQzLDcgKzE3NDUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg2NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAxMTAgMHJiYQkJCW1vdgklMCwgJTEJCQkJKi8KLS0jbGluZSA2NzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzBdICYgMHgwNzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC0xNzUzLDcgKzE3NTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJTEiKTsKLS0jbGluZSA2NzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNSQihyYmEpOwotIAotICAgICAgICAgfQotQEAgLTE3NzIsNyArMTc3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDA3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAwMDAgMHJlZwkJYWRkCSUwLCAlMQkJCQkqLwotLSNsaW5lIDIyNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIyNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE3ODIsNyArMTc4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAlMSIpOwotLSNsaW5lIDIyNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIyNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBEUkIocmVnKTsgU1IoQSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTc5Niw3ICsxNzk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MGY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAwMCAxcmJhCQlhZGQJJTAsICUxCQkJCSovCi0tI2xpbmUgMjE5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByYmEgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTgwNiw3ICsxODA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByYmEgPSAweCV4XG4iLCByYmEpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICUxIik7Ci0tI2xpbmUgMjE5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZCk7IERSKEEpOyBTUkIocmJhKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xODIxLDcgKzE4MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYWRkdwklMCwgJWVhMSIpOwotLSNsaW5lIDI2OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTE4MzYsNyArMTgzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDE3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAwMDEgMHJlZwkJYWRkYwklMCwgJTEJCQkJKi8KLS0jbGluZSAyNTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xODQ2LDcgKzE4NDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICUxIik7Ci0tI2xpbmUgMjU0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjU2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZGMpOyBEUkIocmVnKTsgU1IoQSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTg2MCw3ICsxODYyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MWY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAwMSAxcmJhCQlhZGRjCSUwLCAlMQkJCQkqLwotLSNsaW5lIDI1MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI1MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE4NzAsNyArMTg3Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgJTEiKTsKLS0jbGluZSAyNTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYWRkYyk7IERSKEEpOyBTUkIocmJhKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xODg1LDcgKzE4ODcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgyNzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMDEwIDByZWcJCXN1YgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMTQzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE0NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE4OTUsNyArMTg5Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlMSIpOwotLSNsaW5lIDExNDMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTQ1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IERSQihyZWcpOyBTUihBKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xOTA5LDcgKzE5MTEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgyZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMDEwIDFyYmEJCXN1YgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMTM3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEzOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE5MTksNyArMTkyMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlMSIpOwotLSNsaW5lIDExMzcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTM5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IERSKEEpOyBTUkIocmJhKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xOTM0LDcgKzE5MzYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgJWVhMSIpOwotLSNsaW5lIDExODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFIoQVgpOyBTTShITCwgSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTk0OSw3ICsxOTUxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Mzc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAxMSAwcmVnCQlzdWJjCSUwLCAlMQkJCQkqLwotLSNsaW5lIDExNzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTk1OSw3ICsxOTYxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlMSIpOwotLSNsaW5lIDExNzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1YmMpOyBEUkIocmVnKTsgU1IoQSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTk3Myw3ICsxOTc1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4M2Y6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAxMSAxcmJhCQlzdWJjCSUwLCAlMQkJCQkqLwotLSNsaW5lIDExNjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTcxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByYmEgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTk4Myw3ICsxOTg1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByYmEgPSAweCV4XG4iLCByYmEpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlMSIpOwotLSNsaW5lIDExNjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTcxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU1JCKHJiYSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTk5OCw3ICsyMDAwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NDc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDEwMCAwcmVnCQljbXAJJTAsICUxCQkJCSovCi0tI2xpbmUgNTA3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTA5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjAwOCw3ICsyMDEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICUxIik7Ci0tI2xpbmUgNTA3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTA5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNtcCk7IERSQihyZWcpOyBTUihBKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMDIyLDcgKzIwMjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg0ZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTAwIDFyYmEJCWNtcAklMCwgJTEJCQkJKi8KLS0jbGluZSA1MDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yMDMyLDcgKzIwMzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJTEiKTsKLS0jbGluZSA1MDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY21wKTsgRFIoQSk7IFNSQihyYmEpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIwNDcsNyArMjA0OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbXB3CSUwLCAlZWExIik7Ci0tI2xpbmUgNTM0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTM2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNtcCk7IFcoKTsgRFIoQVgpOyBTTShITCwgSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjA2Miw3ICsyMDY0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NTc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDEwMSAwcmVnCQlhbmQJJTAsICUxCQkJCSovCi0tI2xpbmUgMzA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzA4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjA3Miw3ICsyMDc0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICUxIik7Ci0tI2xpbmUgMzA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzA4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERSQihyZWcpOyBTUihBKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjA4Niw3ICsyMDg4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NWY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDEwMSAxcmJhCQlhbmQJJTAsICUxCQkJCSovCi0tI2xpbmUgMzAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByYmEgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjA5Niw3ICsyMDk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByYmEgPSAweCV4XG4iLCByYmEpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICUxIik7Ci0tI2xpbmUgMzAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERSKEEpOyBTUkIocmJhKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjExMSw3ICsyMTEzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImluYwklZWEwIik7Ci0tI2xpbmUgNTg0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTg2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZCk7IERNKEhMLCBJTU1VKDEpKTsgU0MoMSk7IEZ6YTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMTI2LDcgKzIxMjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg2NzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTEwIDByZWcJCW9yCSUwLCAlMQkJCQkqLwotLSNsaW5lIDk2MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk2MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIxMzYsNyArMjEzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IJJTAsICUxIik7Ci0tI2xpbmUgOTYxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTYzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG9yKTsgRFJCKHJlZyk7IFNSKEEpOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMTUwLDcgKzIxNTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg2ZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTEwIDFyYmEJCW9yCSUwLCAlMQkJCQkqLwotLSNsaW5lIDk1OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk2MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIxNjAsNyArMjE2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IJJTAsICUxIik7Ci0tI2xpbmUgOTU4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTYwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG9yKTsgRFIoQSk7IFNSQihyYmEpOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMTc1LDcgKzIxNzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiZGVjCSVlYTAiKTsKLS0jbGluZSA1NTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3ViKTsgRE0oSEwsIElNTVUoMSkpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIxOTAsNyArMjE5Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAxMTEgMHJlZwkJeG9yCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEyNjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjY3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjIwMCw3ICsyMjAyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IJJTAsICUxIik7Ci0tI2xpbmUgMTI2NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRFJCKHJlZyk7IFNSKEEpOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMjE0LDcgKzIyMTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3ZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTExIDFyYmEJCXhvcgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMjYyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI2NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIyMjQsNyArMjIyNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlMSIpOwotLSNsaW5lIDEyNjIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjY0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhvcik7IERSKEEpOyBTUkIocmJhKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjIzOSw3ICsyMjQxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImluY3cJJWVhMCIpOwotLSNsaW5lIDU5OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYwMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBXKCk7IERNKEhMLCBJTU1VKDEpKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjI1NSw3ICsyMjU3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZAklMCwgJWUxIik7Ci0tI2xpbmUgMjA3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjA5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZCk7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIyNzAsNyArMjI3Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICVlMSIpOwotLSNsaW5lIDIxMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIxNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMzA5LDkgKzIzMTEsOSBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmNzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAxbm5uIDAxbW0JCWNhbGx0CVsleDBdCQkJCSovCi0tI2xpbmUgNDMzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDM1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBubm4gQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotLSNsaW5lIDQzMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgbW0gQVUgPSBvcFsxXSAmIDB4MDM7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjMyMiw3ICsyMzI0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBtbSA9IDB4JXhcbiIsIG1tKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY2FsbHQJWyV4MF0iKTsKLS0jbGluZSA0MzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MzUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY2FsbCk7IERNKE5vbmUsIDB4ODAgKyBtbSoxNiArIG5ubioyKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjMzOCw3ICsyMzQwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4OGY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMTAwMCAxcmVnCQl4Y2gJJTAsICUxCQkJCSovCi0tI2xpbmUgMTIyNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yMzQ4LDcgKzIzNTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJTEiKTsKLS0jbGluZSAxMjI0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIyNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICAvKiBOb3RlOiBERUNXIHVzZXMgcmVnID09IFgsIHNvIHRoaXMgbXVzdCBmb2xsb3cgREVDVyAqLwotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU1JCKHJlZyk7Ci0gCi1AQCAtMjM2NCw3ICsyMzY2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImRlY3cJJWVhMCIpOwotLSNsaW5lIDU2NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU2NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWIpOyBXKCk7IERNKEhMLCBJTU1VKDEpKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjM3OSw3ICsyMzgxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICVlMSIpOwotLSNsaW5lIDIzOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI0MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjM5NCw3ICsyMzk2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICVlMSIpOwotLSNsaW5lIDI0MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI0NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjQxMCw3ICsyNDEyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJWUxIik7Ci0tI2xpbmUgMTEyNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjQyNSw3ICsyNDI3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJWUxIik7Ci0tI2xpbmUgMTEzMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjQ0MCw3ICsyNDQyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJTEiKTsKLS0jbGluZSAxMjI4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIzMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI0NTUsNyArMjQ1Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICVlMSIpOwotLSNsaW5lIDEyMjEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjIzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhjaCk7IERSKEEpOyBTTTIoSEwsIEMsIDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI0NzAsNyArMjQ3Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICVlITEiKTsKLS0jbGluZSAxMjAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIwNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjQ4NSw3ICsyNDg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJXMxIik7Ci0tI2xpbmUgMTIzMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKE5vbmUsIFNGUik7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjUwMCw3ICsyNTAyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJWUxIik7Ci0tI2xpbmUgMTIxMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKEhMLCAwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNTE1LDcgKzI1MTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZWExIik7Ci0tI2xpbmUgMTIxOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNTMwLDcgKzI1MzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZTEiKTsKLS0jbGluZSAxMjA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIwOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00oREUsIDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI1NDUsNyArMjU0Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICVlYTEiKTsKLS0jbGluZSAxMjA5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIxMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00oREUsIElNTVUoMSkpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI1NjAsNyArMjU2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlZTEiKTsKLS0jbGluZSAxMTU3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE1OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWJjKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjU3NSw3ICsyNTc3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YmMJJTAsICVlMSIpOwotLSNsaW5lIDExNjAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTYyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNTkwLDcgKzI1OTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlMSIpOwotLSNsaW5lIDcyMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDcyNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEUihFUyk7IFNNKE5vbmUsIFNBRERSKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNjA1LDcgKzI2MDcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZTEiKTsKLS0jbGluZSAxMjE1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIxNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00yKEhMLCBCLCAwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNjIwLDcgKzI2MjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY21wCSUwLCAlZTEiKTsKLS0jbGluZSA0OTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0OTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY21wKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjYzNSw3ICsyNjM3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJWUxIik7Ci0tI2xpbmUgNDk1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDk3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNtcCk7IERSKEEpOyBTTTIoSEwsIEMsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI2NTAsNyArMjY1Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJiaAkkJWEwIik7Ci0tI2xpbmUgMzQwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzQyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSszKTsgU1IoTm9uZSk7IENPTkQoSCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjY2NSw3ICsyNjY3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNrJWMxIik7Ci0tI2xpbmUgMTA5NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwOTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2tpcCk7IENPTkQoQyk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjY4MCw3ICsyNjgyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjYwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjYyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTTIoSEwsIEIsIDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI2OTEsNyArMjY5Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZhOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDExcmcgMTAxMAkJY2FsbAklMAkJCQkqLwotLSNsaW5lIDQzMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQzMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmcgQVUgPSAob3BbMV0gPj4gNCkgJiAweDAzOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTI3MDEsNyArMjcwMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmcgPSAweCV4XG4iLCByZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNhbGwJJTAiKTsKLS0jbGluZSA0MzAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MzIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY2FsbCk7IERSVyhyZyk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjcxNiw3ICsyNzE4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJyCWF4Iik7Ci0tI2xpbmUgMzgwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzgyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaCk7IERSKEFYKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjczMyw3ICsyNzM1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJyayIpOwotLSNsaW5lIDM4OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM5MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmVhayk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTI3NTAsNyArMjc1Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJwb3AJJXMwIik7Ci0tI2xpbmUgOTg5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoUFNXKTsgU1BPUCgpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yNzY3LDcgKzI3NjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92cwklZWEwLCAlMSIpOwotLSNsaW5lIDgxMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgxMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShITCwgSU1NVSgxKSk7IFNSKFgpOyBGemM7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTI3ODAsNyArMjc4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDExcmIgMTExMQkJc2VsCXJiJTEJCQkJKi8KLS0jbGluZSAxMDQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA0MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmIgQVUgPSAob3BbMV0gPj4gNCkgJiAweDAzOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTI3OTAsNyArMjc5Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmIgPSAweCV4XG4iLCByYik7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNlbAlyYiUxIik7Ci0tI2xpbmUgMTA0MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2VsKTsgU0MocmIpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yODA3LDcgKzI4MDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAlZTEiKTsKLS0jbGluZSAyOTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyOTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYW5kKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI4MjIsNyArMjgyNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICVlMSIpOwotLSNsaW5lIDI5NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI5OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjgzNyw3ICsyODM5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJuaAkkJWEwIik7Ci0tI2xpbmUgMzQzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzQ1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSszKTsgU1IoTm9uZSk7IENPTkQoTkgpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI4NTIsNyArMjg1NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzayVjMSIpOwotLSNsaW5lIDExMDAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTAyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNraXApOyBDT05EKE5DKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yODY3LDcgKzI4NjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgJTEiKTsKLS0jbGluZSA2MjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0yKEhMLCBCLCAwKTsgU1IoQSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjg4Miw3ICsyODg0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInJvcgklMCwgJTEiKTsKLS0jbGluZSAxMDIyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAyNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChyb3IpOyBEUihBKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjg5Nyw3ICsyODk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInJvbGMJJTAsICUxIik7Ci0tI2xpbmUgMTAxNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocm9sYyk7IERSKEEpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yOTEyLDcgKzI5MTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicHVzaAklczEiKTsKLS0jbGluZSA5OTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5OTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgVygpOyBEUFVTSCgpOyBTUihQU1cpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yOTI5LDcgKzI5MzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY21wcwklMCwgJWVhMSIpOwotLSNsaW5lIDUyNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUyOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChjbXApOyBEUihYKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yOTQ2LDcgKzI5NDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IJJTAsICVlMSIpOwotLSNsaW5lIDk0NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk0OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yOTYxLDcgKzI5NjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IJJTAsICVlMSIpOwotLSNsaW5lIDk1MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk1NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERSKEEpOyBTTTIoSEwsIEMsIDApOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yOTc2LDcgKzI5NzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2slYzEiKTsKLS0jbGluZSAxMDk3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA5OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChza2lwKTsgQ09ORChIKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yOTkxLDcgKzI5OTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2slYzEiKTsKLS0jbGluZSAxMTA5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTExMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChza2lwKTsgQ09ORChaKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzAwOCw3ICszMDEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjYzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjY1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTTIoSEwsIEMsIDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMwMjMsNyArMzAyNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyb2wJJTAsICUxIik7Ci0tI2xpbmUgMTAxMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocm9sKTsgRFIoQSk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMwMzgsNyArMzA0MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyZXRiIik7Ci0tI2xpbmUgMTAwOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMTAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocmV0aSk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTMwNTUsNyArMzA1Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJoYWx0Iik7Ci0tI2xpbmUgNTc2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTc4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGhhbHQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zMDY2LDcgKzMwNjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmZToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAxMTFyIDExMTAJCXJvbHdjCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwMTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByIEFVID0gKG9wWzFdID4+IDQpICYgMHgwMTsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zMDc2LDcgKzMwNzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHIgPSAweCV4XG4iLCByKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicm9sd2MJJTAsICUxIik7Ci0tI2xpbmUgMTAxOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocm9sYyk7IFcoKTsgRFJXKHIpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMDkxLDcgKzMwOTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlZTEiKTsKLS0jbGluZSAxMjUwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI1MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEUihBKTsgU00yKEhMLCBCLCAwKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzEwNiw3ICszMTA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgJWUxIik7Ci0tI2xpbmUgMTI1NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMxMjEsNyArMzEyMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzayVjMSIpOwotLSNsaW5lIDExMDMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNraXApOyBDT05EKE5IKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMTM2LDcgKzMxMzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2slYzEiKTsKLS0jbGluZSAxMTA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEwOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChza2lwKTsgQ09ORChOWik7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzE1MSw3ICszMTUzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICUxIik7Ci0tI2xpbmUgNjM2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjM4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNMihITCwgQywgMCk7IFNSKEEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMxNjYsNyArMzE2OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyb3JjCSUwLCAlMSIpOwotLSNsaW5lIDEwMjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDI3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHJvcmMpOyBEUihBKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTMxODYsNyArMzE4OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyZXRpIik7Ci0tI2xpbmUgMTAwNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMDcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocmV0aSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzIwMSw3ICszMjAzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN0b3AiKTsKLS0jbGluZSAxMTE0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTExNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdG9wKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzIyMSw3ICszMjIzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZTAsICUxIik7Ci0tI2xpbmUgODc0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODc2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oQywgSU1NVSgyKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC0zMjM2LDcgKzMyMzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZTEiKTsKLS0jbGluZSA4NjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKEMsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTMyNTEsNyArMzI1Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAjJTEiKTsKLS0jbGluZSA5NjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQob3IpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzI2OCw3ICszMjcwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib3IJJTAsICUxIik7Ci0tI2xpbmUgOTY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTY2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG9yKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzI4Myw3ICszMjg1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib3IJJTAsICMlMSIpOwotLSNsaW5lIDk1NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk1NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChvcik7IERSKEEpOyBTQyhJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzI5OCw3ICszMzAwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib3IJJTAsICVlMSIpOwotLSNsaW5lIDk0MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk0NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChvcik7IERSKEEpOyBTTShITCwgMCk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTMzMTMsNyArMzMxNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlZWExIik7Ci0tI2xpbmUgOTQ5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTUxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG9yKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzMyOCw3ICszMzMwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib3IJJTAsICVlITEiKTsKLS0jbGluZSA5NDAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NDIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQob3IpOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTMzNDIsNyArMzM0NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweDc3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMDExMSAwcmJhCQkJbW92CSUwLCAlMQkJCQkqLwotLSNsaW5lIDY5NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY5OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMF0gJiAweDA3OwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTMzNTIsNyArMzM1NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlMSIpOwotLSNsaW5lIDY5NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY5OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUkIocmJhKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzM3MSw3ICszMzczLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NzA6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAwMDAwCQlzZXQxCSVlITAJCQkJKi8KLS0jbGluZSAxMDQ2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA0OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zMzgxLDcgKzMzODMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJJWUhMCIpOwotLSNsaW5lIDEwNDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDQ4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBEQihiaXQpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMzk2LDcgKzMzOTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3MToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAwMDEJCW1vdjEJJTAsIGN5CQkJCSovCi0tI2xpbmUgODAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM0MDYsNyArMzQwOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92MQklMCwgY3kiKTsKLS0jbGluZSA4MDMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MDUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0FERFIpOyBEQihiaXQpOyBTQ1koKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zNDIxLDcgKzM0MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3MjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAwMTAJCXNldDEJJTAJCQkJKi8KLS0jbGluZSAxMDY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA2NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNDMxLDcgKzM0MzMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJJTAiKTsKLS0jbGluZSAxMDY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA2NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBTQUREUik7IERCKGJpdCk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zNDQ4LDcgKzM0NTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3MzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAwMTEJCWNscjEJJTAJCQkJKi8KLS0jbGluZSA0NTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzQ1OCw3ICszNDYwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbHIxCSUwIik7Ci0tI2xpbmUgNDU2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDU4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIFNBRERSKTsgREIoYml0KTsgU0MoMCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTM0NzUsNyArMzQ3Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc0OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDEwMAkJbW92MQljeSwgJTEJCQkJKi8KLS0jbGluZSA3OTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3OTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzQ4NSw3ICszNDg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YxCWN5LCAlMSIpOwotLSNsaW5lIDc5NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEQ1koKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM1MDAsNyArMzUwMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc1OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDEwMQkJYW5kMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgMzI2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzI4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM1MTAsNyArMzUxMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kMQljeSwgJXMxIik7Ci0tI2xpbmUgMzI2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzI4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERDWSgpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTM1MzAsNyArMzUzMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc2OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDExMAkJb3IxCWN5LCAlczEJCQkJKi8KLS0jbGluZSA5ODEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5ODMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzU0MCw3ICszNTQyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJvcjEJY3ksICVzMSIpOwotLSNsaW5lIDk4MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk4MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERDWSgpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTM1NTcsNyArMzU1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDExMQkJeG9yMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgMTI4NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyODcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzU2Nyw3ICszNTY5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IxCWN5LCAlczEiKTsKLS0jbGluZSAxMjg1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI4NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEQ1koKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zNTg0LDcgKzM1ODYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3ODoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDEwMDAJCWNscjEJJWUhMAkJCQkqLwotLSNsaW5lIDQzOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ0MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNTk0LDcgKzM1OTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNscjEJJWUhMCIpOwotLSNsaW5lIDQzOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ0MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBJTU1VKDIpKTsgREIoYml0KTsgU0MoMCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzYwOSw3ICszNjExLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Nzk6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAxMDAxCQltb3YxCSVzMCwgY3kJCQkJKi8KLS0jbGluZSA4MDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzYxOSw3ICszNjIxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YxCSVzMCwgY3kiKTsKLS0jbGluZSA4MDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0ZSKTsgREIoYml0KTsgU0NZKCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTM2MzYsNyArMzYzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdhOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTAxMAkJc2V0MQklczAJCQkJKi8KLS0jbGluZSAxMDU4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA2MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNjQ2LDcgKzM2NDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJJXMwIik7Ci0tI2xpbmUgMTA1OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgb3AwID0gU0ZSOwotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBvcDApOyBEQihiaXQpOyBTQygxKTsKLSAgICAgICAgICAgICAgICAgaWYgKG9wMCA9PSBSTDc4X1NGUl9QU1cgJiYgYml0ID09IDcpCi1AQCAtMzY2NCw3ICszNjY2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4N2I6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAxMDExCQljbHIxCSVzMAkJCQkqLwotLSNsaW5lIDQ1MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ1MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNjc0LDcgKzM2NzYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNscjEJJXMwIik7Ci0tI2xpbmUgNDUwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDUyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIG9wMCA9IFNGUjsKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgb3AwKTsgREIoYml0KTsgU0MoMCk7Ci0gICAgICAgICAgICAgICAgIGlmIChvcDAgPT0gUkw3OF9TRlJfUFNXICYmIGJpdCA9PSA3KQotQEAgLTM2OTIsNyArMzY5NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdjOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTEwMAkJbW92MQljeSwgJXMxCQkJCSovCi0tI2xpbmUgODAwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODAyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM3MDIsNyArMzcwNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92MQljeSwgJXMxIik7Ci0tI2xpbmUgODAwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODAyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERDWSgpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM3MTcsNyArMzcxOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdkOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTEwMQkJYW5kMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgMzIzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzI1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM3MjcsNyArMzcyOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kMQljeSwgJXMxIik7Ci0tI2xpbmUgMzIzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzI1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERDWSgpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM3NDIsNyArMzc0NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdlOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTExMAkJb3IxCWN5LCAlczEJCQkJKi8KLS0jbGluZSA5NzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5ODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzc1Miw3ICszNzU0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJvcjEJY3ksICVzMSIpOwotLSNsaW5lIDk3OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk4MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERDWSgpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM3NjcsNyArMzc2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTExMQkJeG9yMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgMTI4MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyODQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzc3Nyw3ICszNzc5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IxCWN5LCAlczEiKTsKLS0jbGluZSAxMjgyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI4NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEQ1koKTsgU00oTm9uZSwgU0ZSKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zNzkyLDcgKzM3OTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2V0MQljeSIpOwotLSNsaW5lIDEwNTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDU3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERDWSgpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zODA3LDcgKzM4MDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmMToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAwMDEJCW1vdjEJJWUwLCBjeQkJCQkqLwotLSNsaW5lIDc4NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc4NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zODE3LDcgKzM4MTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJJWUwLCBjeSIpOwotLSNsaW5lIDc4NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc4NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShITCwgMCk7IERCKGJpdCk7IFNDWSgpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM4MzIsNyArMzgzNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGYyOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMDAxMAkJc2V0MQklZTAJCQkJKi8KLS0jbGluZSAxMDQ5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA1MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zODQyLDcgKzM4NDQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJJWUwIik7Ci0tI2xpbmUgMTA0OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIDApOyBEQihiaXQpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zODU3LDcgKzM4NTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmMzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAwMTEJCWNscjEJJWUwCQkJCSovCi0tI2xpbmUgNDQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDQzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM4NjcsNyArMzg2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY2xyMQklZTAiKTsKLS0jbGluZSA0NDEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIDApOyBEQihiaXQpOyBTQygwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zODgyLDcgKzM4ODQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmNDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAxMDAJCW1vdjEJY3ksICVlMQkJCQkqLwotLSNsaW5lIDc5MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zODkyLDcgKzM4OTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJY3ksICVlMSIpOwotLSNsaW5lIDc5MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEQ1koKTsgU00oSEwsIDApOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM5MDcsNyArMzkwOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGY1OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMDEwMQkJYW5kMQljeSwgJWUxCQkJKi8KLS0jbGluZSAzMTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzkxNyw3ICszOTE5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhbmQxCWN5LCAlZTEiKTsKLS0jbGluZSAzMTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYW5kKTsgRENZKCk7IFNNKEhMLCAwKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zOTMyLDcgKzM5MzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmNjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAxMTAJCW9yMQljeSwgJWUxCQkJCSovCi0tI2xpbmUgOTcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM5NDIsNyArMzk0NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IxCWN5LCAlZTEiKTsKLS0jbGluZSA5NzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQob3IpOyBEQ1koKTsgU00oSEwsIDApOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM5NTcsNyArMzk1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGY3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMDExMQkJeG9yMQljeSwgJWUxCQkJCSovCi0tI2xpbmUgMTI3NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNzggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzk2Nyw3ICszOTY5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IxCWN5LCAlZTEiKTsKLS0jbGluZSAxMjc2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI3OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEQ1koKTsgU00oSEwsIDApOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM5ODIsNyArMzk4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbHIxCWN5Iik7Ci0tI2xpbmUgNDQ3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDQ5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERDWSgpOyBTQygwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zOTk3LDcgKzM5OTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmOToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDEwMDEJCW1vdjEJJWUwLCBjeQkJCQkqLwotLSNsaW5lIDc4OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MDA3LDcgKzQwMDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJJWUwLCBjeSIpOwotLSNsaW5lIDc4OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgREIoYml0KTsgU0NZKCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtNDAyMiw3ICs0MDI0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZmE6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAxMDEwCQlzZXQxCSUwCQkJCSovCi0tI2xpbmUgMTA1MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtNDAzMiw3ICs0MDM0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzZXQxCSUwIik7Ci0tI2xpbmUgMTA1MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IERCKGJpdCk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQwNDcsNyArNDA0OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZiOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMTAxMQkJY2xyMQklMAkJCQkqLwotLSNsaW5lIDQ0NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ0NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MDU3LDcgKzQwNTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNscjEJJTAiKTsKLS0jbGluZSA0NDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IERCKGJpdCk7IFNDKDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQwNzIsNyArNDA3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZjOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMTEwMAkJbW92MQljeSwgJWUxCQkJCSovCi0tI2xpbmUgNzk0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzk2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTQwODIsNyArNDA4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92MQljeSwgJWUxIik7Ci0tI2xpbmUgNzk0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzk2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERDWSgpOyBTUihBKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC00MDk3LDcgKzQwOTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmZDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDExMDEJCWFuZDEJY3ksICUxCQkJCSovCi0tI2xpbmUgMzIwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzIyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTQxMDcsNyArNDEwOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kMQljeSwgJTEiKTsKLS0jbGluZSAzMjAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMjIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYW5kKTsgRENZKCk7IFNSKEEpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQxMjIsNyArNDEyNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZlOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMTExMAkJb3IxCWN5LCAlMQkJCQkqLwotLSNsaW5lIDk3NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk3NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MTMyLDcgKzQxMzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm9yMQljeSwgJTEiKTsKLS0jbGluZSA5NzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQob3IpOyBEQ1koKTsgU1IoQSk7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtNDE0Nyw3ICs0MTQ5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZmY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAxMTExCQl4b3IxCWN5LCAlMQkJCQkqLwotLSNsaW5lIDEyNzkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjgxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTQxNTcsNyArNDE1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yMQljeSwgJTEiKTsKLS0jbGluZSAxMjc5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI4MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEQ1koKTsgU1IoQSk7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtNDE3Miw3ICs0MTc0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm5vdDEJY3kiKTsKLS0jbGluZSA5MTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRENZKCk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00MTkyLDcgKzQxOTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlMCwgJTEiKTsKLS0jbGluZSA4NzcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NzkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShCQywgSU1NVSgyKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00MjA3LDcgKzQyMDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZTEiKTsKLS0jbGluZSA4NjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKEJDLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00MjIyLDcgKzQyMjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJ4b3IJJTAsICMlMSIpOwotLSNsaW5lIDEyNzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjczICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHhvcik7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00MjM5LDcgKzQyNDEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJ4b3IJJTAsICUxIik7Ci0tI2xpbmUgMTI2OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDI1NCw3ICs0MjU2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAjJTEiKTsKLS0jbGluZSAxMjU5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI2MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRCh4b3IpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTQyNjksNyArNDI3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgJWUxIik7Ci0tI2xpbmUgMTI0NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNKEhMLCAwKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDI4NCw3ICs0Mjg2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlZWExIik7Ci0tI2xpbmUgMTI1MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDI5OSw3ICs0MzAxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlZSExIik7Ci0tI2xpbmUgMTI0NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC00MzE0LDcgKzQzMTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg4NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDEwMDAgMHJlZwkJCWluYwklMAkJCQkqLwotLSNsaW5lIDU4NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU4OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMF0gJiAweDA3OwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTQzMjQsNyArNDMyNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiaW5jCSUwIik7Ci0tI2xpbmUgNTg3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTg5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IERSQihyZWcpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgfQotQEAgLTQzMzksNyArNDM0MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWVhMSIpOwotLSNsaW5lIDY2NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY2OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00oU1AsIElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTQzNTQsNyArNDM1Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjQ4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjUwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShERSwgMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDM2OSw3ICs0MzcxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZWExIik7Ci0tI2xpbmUgNjUxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjUzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShERSwgSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDM4NCw3ICs0Mzg2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZTEiKTsKLS0jbGluZSA2NTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKEhMLCAwKTsKLSAKLSAgICAgICAgIH0KLUBAIC00Mzk5LDcgKzQ0MDEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlYTEiKTsKLS0jbGluZSA2NTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NDE0LDcgKzQ0MTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNjkwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjkyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDQyOSw3ICs0NDMxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlczEiKTsKLS0jbGluZSA2ODcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2ODkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKE5vbmUsIFNGUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDQ0NCw3ICs0NDQ2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZSExIik7Ci0tI2xpbmUgNjQ1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjQ3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NDU5LDcgKzQ0NjEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg5NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDEwMDEgMHJlZwkJCWRlYwklMAkJCQkqLwotLSNsaW5lIDU1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMF0gJiAweDA3OwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTQ0NjksNyArNDQ3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiZGVjCSUwIik7Ci0tI2xpbmUgNTU0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTU2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERSQihyZWcpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgfQotQEAgLTQ0ODQsNyArNDQ4Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklYTAsICUxIik7Ci0tI2xpbmUgNjQyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjQ0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKFNQLCBJTU1VKDEpKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDQ5OSw3ICs0NTAxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgJTEiKTsKLS0jbGluZSA2MTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MTcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oREUsIDApOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NTE0LDcgKzQ1MTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWVhMCwgJTEiKTsKLS0jbGluZSA2MjEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MjMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oREUsIElNTVUoMSkpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NTI5LDcgKzQ1MzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAlMSIpOwotLSNsaW5lIDYyNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYyNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShITCwgMCk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTQ1NDQsNyArNDU0Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZWEwLCAlMSIpOwotLSNsaW5lIDYzMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShITCwgSU1NVSgxKSk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTQ1NTksNyArNDU2MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJTEiKTsKLS0jbGluZSA3NDcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3NDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0FERFIpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NTc0LDcgKzQ1NzYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJXMwLCAlMSIpOwotLSNsaW5lIDc4MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc4MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBTRlIpOyBTUihBKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNDU5MSw3ICs0NTkzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlITAsICUxIik7Ci0tI2xpbmUgNjEyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjE0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NjA2LDcgKzQ2MDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJpbmMJJWUhMCIpOwotLSNsaW5lIDU4MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU4MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBETShOb25lLCBJTU1VKDIpKTsgU0MoMSk7IEZ6YTsKLSAKLSAgICAgICAgIH0KLUBAIC00NjE3LDcgKzQ2MTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhhNzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDEwMTAgMHJnMQkJCWluY3cJJTAJCQkJKi8KLS0jbGluZSA2MDEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC00NjI3LDcgKzQ2MjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJpbmN3CSUwIik7Ci0tI2xpbmUgNjAxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjAzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IFcoKTsgRFJXKHJnKTsgU0MoMSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDY0Miw3ICs0NjQ0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiaW5jdwklZSEwIik7Ci0tI2xpbmUgNTk1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTk3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IFcoKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTQ2NTcsNyArNDY1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImluYwklMCIpOwotLSNsaW5lIDU5MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU5MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBETShOb25lLCBTQUREUik7IFNDKDEpOyBGemE7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTQ2NzQsNyArNDY3Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImluY3cJJTAiKTsKLS0jbGluZSA2MDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgVygpOyBETShOb25lLCBTQUREUik7IFNDKDEpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00NjkxLDcgKzQ2OTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlYTEiKTsKLS0jbGluZSA4NTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKFNQLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NzA2LDcgKzQ3MDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZTEiKTsKLS0jbGluZSA4MzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NDAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKERFLCAwKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NzIxLDcgKzQ3MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZWExIik7Ci0tI2xpbmUgODQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODQzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShERSwgSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDczNiw3ICs0NzM4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWUxIik7Ci0tI2xpbmUgODQ0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODQ2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShITCwgMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDc1MSw3ICs0NzUzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWVhMSIpOwotLSNsaW5lIDg0NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg0OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU00oSEwsIElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTQ3NjYsNyArNDc2OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICUxIik7Ci0tI2xpbmUgODgwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODgyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDc4MSw3ICs0NzgzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJXMxIik7Ci0tI2xpbmUgODgzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODg1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBTRlIpOwotIAotICAgICAgICAgfQotQEAgLTQ3OTYsNyArNDc5OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICVlITEiKTsKLS0jbGluZSA4MzQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKE5vbmUsIElNTVUoMikpOwotIAotIAotQEAgLTQ4MTIsNyArNDgxNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImRlYwklZSEwIik7Ci0tI2xpbmUgNTQ4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTUwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERNKE5vbmUsIElNTVUoMikpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgfQotQEAgLTQ4MjMsNyArNDgyNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweGI3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMTAxMSAwcmcxIAkJCWRlY3cJJTAJCQkJKi8KLS0jbGluZSA1NjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC00ODMzLDcgKzQ4MzUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJkZWN3CSUwIik7Ci0tI2xpbmUgNTY4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTcwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFJXKHJnKTsgU0MoMSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDg0OCw3ICs0ODUwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiZGVjdwklZSEwIik7Ci0tI2xpbmUgNTYyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTY0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTQ4NjMsNyArNDg2NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImRlYwklMCIpOwotLSNsaW5lIDU1NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU1OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBETShOb25lLCBTQUREUik7IFNDKDEpOyBGemE7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTQ4ODAsNyArNDg4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImRlY3cJJTAiKTsKLS0jbGluZSA1NzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgVygpOyBETShOb25lLCBTQUREUik7IFNDKDEpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00ODk3LDcgKzQ4OTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVhMCwgJTEiKTsKLS0jbGluZSA4MzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShTUCwgSU1NVSgxKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00OTEyLDcgKzQ5MTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlMCwgJTEiKTsKLS0jbGluZSA4MTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShERSwgMCk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00OTI3LDcgKzQ5MjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlYTAsICUxIik7Ci0tI2xpbmUgODIyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODI0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oREUsIElNTVUoMSkpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDk0Miw3ICs0OTQ0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZTAsICUxIik7Ci0tI2xpbmUgODI1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODI3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oSEwsIDApOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDk1Nyw3ICs0OTU5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZWEwLCAlMSIpOwotLSNsaW5lIDgyOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgzMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKEhMLCBJTU1VKDEpKTsgU1IoQVgpOwotIAotICAgICAgICAgfQotQEAgLTQ5NzIsNyArNDk3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICUxIik7Ci0tI2xpbmUgODk1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODk3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgU0FERFIpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDk4Nyw3ICs0OTg5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklczAsICUxIik7Ci0tI2xpbmUgOTAxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTAzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgU0ZSKTsgU1IoQVgpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01MDA0LDcgKzUwMDYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlITAsICUxIik7Ci0tI2xpbmUgODE2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODE4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDE1LDcgKzUwMTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhjNjoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExMDAgMHJnMAkJCXBvcAklMAkJCQkqLwotLSNsaW5lIDk4NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmcgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTUwMjUsNyArNTAyNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmcgPSAweCV4XG4iLCByZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInBvcAklMCIpOwotLSNsaW5lIDk4NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSVyhyZyk7IFNQT1AoKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDM2LDcgKzUwMzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhjNzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExMDAgMHJnMQkJCXB1c2gJJTEJCQkJKi8KLS0jbGluZSA5OTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5OTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC01MDQ2LDcgKzUwNDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJwdXNoCSUxIik7Ci0tI2xpbmUgOTk0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTk2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFBVU0goKTsgU1JXKHJnKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDYxLDcgKzUwNjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWEwLCAjJTEiKTsKLS0jbGluZSA2MzkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NDEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oU1AsIElNTVUoMSkpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDc2LDcgKzUwNzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAjJTEiKTsKLS0jbGluZSA4OTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4OTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTUwOTEsNyArNTA5Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZWEwLCAjJTEiKTsKLS0jbGluZSA2MTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oREUsIElNTVUoMSkpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MTA2LDcgKzUxMDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVzMCwgIyUxIik7Ci0tI2xpbmUgODk4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTAwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgU0ZSKTsgU0MoSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTEyMSw3ICs1MTIzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlYTAsICMlMSIpOwotLSNsaW5lIDYzMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYzMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShITCwgSU1NVSgxKSk7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTUxMzYsNyArNTEzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgIyUxIik7Ci0tI2xpbmUgNzQ0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzQ2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTE1MSw3ICs1MTUzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVzMCwgIyUxIik7Ci0tI2xpbmUgNzUwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzUyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIG9wMCA9IFNGUjsKLSAgICAgICAgICAgb3AxID0gSU1NVSgxKTsKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgb3AwKTsgU0Mob3AxKTsKLUBAIC01MTkzLDcgKzUxOTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUhMCwgIyUxIik7Ci0tI2xpbmUgNjA5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjExICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MjA0LDcgKzUyMDYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhkMzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExMDEgMDByZwkJCWNtcDAJJTAJCQkJKi8KLS0jbGluZSA1MTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gb3BbMF0gJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTUyMTQsNyArNTIxNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmcgPSAweCV4XG4iLCByZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcDAJJTAiKTsKLS0jbGluZSA1MTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRFJCKHJnKTsgU0MoMCk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTIyOSw3ICs1MjMxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wMAklMCIpOwotLSNsaW5lIDUyMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUyMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBETShOb25lLCBTQUREUik7IFNDKDApOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01MjQ2LDcgKzUyNDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAwCSVlITAiKTsKLS0jbGluZSA1MTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MTcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDApOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTUyNjEsNyArNTI2Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm11bHUJeCIpOwotLSNsaW5lIDkwNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkwOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtdWx1KTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTI3OCw3ICs1MjgwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgicmV0Iik7Ci0tI2xpbmUgMTAwMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMDQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQocmV0KTsKLSAKLSAgICAgICAgIH0KLUBAIC01MjkzLDcgKzUyOTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNzExICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzEzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKFgpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTMwOCw3ICs1MzEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZSExIik7Ci0tI2xpbmUgNzA4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzEwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKFgpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MzE4LDcgKzUzMjAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhmYToKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExcmEgMTAxMAkJCW1vdncJJTAsICUxCQkJCSovCi0tI2xpbmUgODg5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByYSBBVSA9IChvcFswXSA+PiA0KSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNTMyOCw3ICs1MzMwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYSA9IDB4JXhcbiIsIHJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJTEiKTsKLS0jbGluZSA4ODkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4OTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUlcocmEpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTMzOCw3ICs1MzQwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4ZmI6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMXJhIDEwMTEJCQltb3Z3CSUwLCAlZXMhMQkJCSovCi0tI2xpbmUgODg2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByYSBBVSA9IChvcFswXSA+PiA0KSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNTM0OCw3ICs1MzUwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYSA9IDB4JXhcbiIsIHJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWVzITEiKTsKLS0jbGluZSA4ODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4ODggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUlcocmEpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MzYzLDcgKzUzNjUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJiYwkkJWEwIik7Ci0tI2xpbmUgMzM0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzM2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSsyKTsgU1IoTm9uZSk7IENPTkQoQyk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTM3OCw3ICs1MzgwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYnoJJCVhMCIpOwotLSNsaW5lIDM0NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM0OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMik7IFNSKE5vbmUpOyBDT05EKFopOwotIAotICAgICAgICAgfQotQEAgLTUzOTMsNyArNTM5NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJuYwkkJWEwIik7Ci0tI2xpbmUgMzM3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzM5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSsyKTsgU1IoTm9uZSk7IENPTkQoTkMpOwotIAotICAgICAgICAgfQotQEAgLTU0MDgsNyArNTQxMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJuegkkJWEwIik7Ci0tI2xpbmUgMzQ5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzUxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSsyKTsgU1IoTm9uZSk7IENPTkQoTlopOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01NDIxLDcgKzU0MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhlMzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExMTAgMDByZwkJCW9uZWIJJTAJCQkJKi8KLS0jbGluZSA5MjQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gb3BbMF0gJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTU0MzEsNyArNTQzMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmcgPSAweCV4XG4iLCByZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9uZWIJJTAiKTsKLS0jbGluZSA5MjQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFJCKHJnKTsgU0MoMSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTQ0Niw3ICs1NDQ4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib25lYgklMCIpOwotLSNsaW5lIDkyNyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkyOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBTQUREUik7IFNDKDEpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01NDYzLDcgKzU0NjUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJvbmViCSVlITAiKTsKLS0jbGluZSA5MjEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MjMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTU0NzgsNyArNTQ4MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9uZXcJJTAiKTsKLS0jbGluZSA5MzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQVgpOyBTQygxKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NDkzLDcgKzU0OTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJvbmV3CSUwIik7Ci0tI2xpbmUgOTM1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTM3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEJDKTsgU0MoMSk7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTU1MTAsNyArNTUxMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJTEiKTsKLS0jbGluZSA2OTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MDEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQik7IFNNKE5vbmUsIFNBRERSKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NTI1LDcgKzU1MjcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlITEiKTsKLS0jbGluZSA2OTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2OTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQik7IFNNKE5vbmUsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTU1NDAsNyArNTU0Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJyCSElIWEwIik7Ci0tI2xpbmUgMzY4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzcwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaCk7IERDKElNTVUoMykpOwotIAotICAgICAgICAgfQotQEAgLTU1NTUsNyArNTU1Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJyCSUhYTAiKTsKLS0jbGluZSAzNzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYnJhbmNoKTsgREMoSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTU3MCw3ICs1NTcyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYnIJJCUhYTAiKTsKLS0jbGluZSAzNzQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYnJhbmNoKTsgREMocGMrSU1NUygyKSszKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NTg1LDcgKzU1ODcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJicgkkJWEwIik7Ci0tI2xpbmUgMzc3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzc5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaCk7IERDKHBjK0lNTVMoMSkrMik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTU5Niw3ICs1NTk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4ZjM6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMTExIDAwcmcJCQljbHJiCSUwCQkJCSovCi0tI2xpbmUgNDY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDY2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByZyBBVSA9IG9wWzBdICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC01NjA2LDcgKzU2MDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbHJiCSUwIik7Ci0tI2xpbmUgNDY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDY2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSQihyZyk7IFNDKDApOwotIAotICAgICAgICAgfQotQEAgLTU2MjEsNyArNTYyMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNscmIJJTAiKTsKLS0jbGluZSA0NjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0FERFIpOyBTQygwKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTYzOCw3ICs1NjQwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY2xyYgklZSEwIik7Ci0tI2xpbmUgNDYxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDYzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBTQygwKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NjUzLDcgKzU2NTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbHJ3CSUwIik7Ci0tI2xpbmUgNDcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEFYKTsgU0MoMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTY2OCw3ICs1NjcwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY2xydwklMCIpOwotLSNsaW5lIDQ3NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ3NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihCQyk7IFNDKDApOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01Njg1LDcgKzU2ODcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNzA1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzA3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEMpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTcwMCw3ICs1NzAyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZSExIik7Ci0tI2xpbmUgNzAyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzA0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEMpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NzE1LDcgKzU3MTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjYWxsCSElIWEwIik7Ci0tI2xpbmUgNDIxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDIzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNhbGwpOyBEQyhJTU1VKDMpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NzMwLDcgKzU3MzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjYWxsCSUhYTAiKTsKLS0jbGluZSA0MjQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY2FsbCk7IERDKElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTU3NDUsNyArNTc0Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNhbGwJJCUhYTAiKTsKLS0jbGluZSA0MjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY2FsbCk7IERDKHBjK0lNTVMoMikrMyk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTc2MCwxMyArNTc2MiwxMyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJicmsxIik7Ci0tI2xpbmUgMzg1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzg3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyZWFrKTsKLSAKLSAgICAgICAgIH0KLSAgICAgICBicmVhazsKLSAgIH0KLS0jbGluZSAxMjkwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI5MiAicmw3OC1kZWNvZGUub3BjIgotIAotICAgcmV0dXJuIHJsNzgtPm5fYnl0ZXM7Ci0gfQotZGlmZiAtLWdpdCBhL29wY29kZXMvcmw3OC1kZWNvZGUub3BjIGIvb3Bjb2Rlcy9ybDc4LWRlY29kZS5vcGMKLWluZGV4IDYyMTJmMDguLmIyNWU0NDEgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL3JsNzgtZGVjb2RlLm9wYwotKysrIGIvb3Bjb2Rlcy9ybDc4LWRlY29kZS5vcGMKLUBAIC01MCw3ICs1MCw5IEBAIHR5cGVkZWYgc3RydWN0Ci0gI2RlZmluZSBXKCkgcmw3OC0+c2l6ZSA9IFJMNzhfV29yZAotIAotICNkZWZpbmUgQVUgQVRUUklCVVRFX1VOVVNFRAotLSNkZWZpbmUgR0VUQllURSgpIChsZC0+b3AgW2xkLT5ybDc4LT5uX2J5dGVzKytdID0gbGQtPmdldGJ5dGUgKGxkLT5wdHIpKQotKwotKyNkZWZpbmUgT1BfQlVGX0xFTiAyMAotKyNkZWZpbmUgR0VUQllURSgpIChsZC0+cmw3OC0+bl9ieXRlcyA8IChPUF9CVUZfTEVOIC0gMSkgPyBsZC0+b3AgW2xkLT5ybDc4LT5uX2J5dGVzKytdID0gbGQtPmdldGJ5dGUgKGxkLT5wdHIpOiAwKQotICNkZWZpbmUgQiAoKHVuc2lnbmVkIGxvbmcpIEdFVEJZVEUoKSkKLSAKLSAjZGVmaW5lIFNZTlRBWCh4KSBybDc4LT5zeW50YXggPSB4Ci1AQCAtMTY4LDcgKzE3MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAJCSAgUkw3OF9EaXNfSXNhIGlzYSkKLSB7Ci0gICBMb2NhbERhdGEgbGRzLCAqIGxkID0gJmxkczsKLS0gIHVuc2lnbmVkIGNoYXIgb3BfYnVmWzIwXSA9IHswfTsKLSsgIHVuc2lnbmVkIGNoYXIgb3BfYnVmW09QX0JVRl9MRU5dID0gezB9OwotICAgdW5zaWduZWQgY2hhciAqb3AgPSBvcF9idWY7Ci0gICBpbnQgb3AwLCBvcDE7Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYzYTk5My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotRnJvbSBjNTNkMmU2ZDc0NGRhMDAwYWFhZmUwMjM3YmNlZDA5MGFhYjYyODE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxNCBKdW4gMjAxNyAxMToyNzoxNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggcG90ZW50aWFsIGFkZHJlc3MgdmlvbGF0aW9ucyB3aGVuIHByb2Nlc3NpbmcgYSBjb3JydXB0Ci0gQWxwaGEgVk1BIGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTg5Ci0JKiB2bXMtYWxwaGEuYyAoX2JmZF92bXNfZ2V0X3ZhbHVlKTogQWRkIGFuIGV4dHJhIHBhcmFtZXRlciAtIHRoZQotCW1heGltdW0gdmFsdWUgZm9yIHRoZSBhc2NpYyBwb2ludGVyLiAgQ2hlY2sgdGhhdCBuYW1lIHByb2Nlc3NpbmcKLQlkb2VzIG5vdCByZWFkIGJleW9uZCB0aGlzIHZhbHVlLgotCShfYmZkX3Ztc19zbHVycF9ldGlyKTogQWRkIGNoZWNrcyBmb3IgYXR0ZW1wdHMgdG8gcmVhZCBiZXlvbmQgdGhlCi0JZW5kIG9mIGV0aXIgcmVjb3JkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NTIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgfCAgOSArKysrKysrKysKLSBiZmQvdm1zLWFscGhhLmMgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC05LDYgKzksMTUgQEAKLSAKLSAyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotICAKLSsgICAgICAgUFIgYmludXRpbHMvMjE1ODkKLSsgICAgICAgKiB2bXMtYWxwaGEuYyAoX2JmZF92bXNfZ2V0X3ZhbHVlKTogQWRkIGFuIGV4dHJhIHBhcmFtZXRlciAtIHRoZQotKyAgICAgICBtYXhpbXVtIHZhbHVlIGZvciB0aGUgYXNjaWMgcG9pbnRlci4gIENoZWNrIHRoYXQgbmFtZSBwcm9jZXNzaW5nCi0rICAgICAgIGRvZXMgbm90IHJlYWQgYmV5b25kIHRoaXMgdmFsdWUuCi0rICAgICAgIChfYmZkX3Ztc19zbHVycF9ldGlyKTogQWRkIGNoZWNrcyBmb3IgYXR0ZW1wdHMgdG8gcmVhZCBiZXlvbmQgdGhlCi0rICAgICAgIGVuZCBvZiBldGlyIHJlY29yZC4KLSsKLSsyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKyAKLSAgICAgICAgUFIgYmludXRpbHMvMjE1NzgKLSAgICAgICAgKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IEZpeCBjaGVjayBmb3IgaW52YWxpZAotICAgICAgICBmbGFnIHZhbHVlLgotSW5kZXg6IGdpdC9iZmQvdm1zLWFscGhhLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvdm1zLWFscGhhLmMKLSsrKyBnaXQvYmZkL3Ztcy1hbHBoYS5jCi1AQCAtMTQ1Niw3ICsxNDU2LDcgQEAgZHN0X3JldHJpZXZlX2xvY2F0aW9uIChiZmQgKmFiZmQsIHVuc2lnbgotIC8qIFdyaXRlIG11bHRpcGxlIGJ5dGVzIHRvIHNlY3Rpb24gaW1hZ2UuICAqLwotIAotIHN0YXRpYyBiZmRfYm9vbGVhbgotLWltYWdlX3dyaXRlIChiZmQgKmFiZmQsIHVuc2lnbmVkIGNoYXIgKnB0ciwgaW50IHNpemUpCi0raW1hZ2Vfd3JpdGUgKGJmZCAqYWJmZCwgdW5zaWduZWQgY2hhciAqcHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSkKLSB7Ci0gI2lmIFZNU19ERUJVRwotICAgX2JmZF92bXNfZGVidWcgKDgsICJpbWFnZV93cml0ZSBmcm9tICglcCwgJWQpIHRvICglbGQpXG4iLCBwdHIsIHNpemUsCi1AQCAtMTYwMywxNCArMTYwMywxNiBAQCBfYmZkX3Ztc19ldGlyX25hbWUgKGludCBjbWQpCi0gI2RlZmluZSBISUdIQklUKG9wKSAoKG9wICYgMHg4MDAwMDAwMEwpID09IDB4ODAwMDAwMDBMKQotIAotIHN0YXRpYyB2b2lkCi0tX2JmZF92bXNfZ2V0X3ZhbHVlIChiZmQgKmFiZmQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2ljLAotK19iZmRfdm1zX2dldF92YWx1ZSAoYmZkICphYmZkLAotKwkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2ljLAotKwkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1heF9hc2NpYywKLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAotICAgICAgICAgICAgICAgICAgICAgYmZkX3ZtYSAqdm1hLAotICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFscGhhX3Ztc19saW5rX2hhc2hfZW50cnkgKipocCkKLSB7Ci0gICBjaGFyIG5hbWVbMjU3XTsKLS0gIGludCBsZW47Ci0tICBpbnQgaTsKLSsgIHVuc2lnbmVkIGludCBsZW47Ci0rICB1bnNpZ25lZCBpbnQgaTsKLSAgIHN0cnVjdCBhbHBoYV92bXNfbGlua19oYXNoX2VudHJ5ICpoOwotIAotICAgLyogTm90IGxpbmtpbmcuICBEbyBub3QgdHJ5IHRvIHJlc29sdmUgdGhlIHN5bWJvbC4gICovCi1AQCAtMTYyMiw2ICsxNjI0LDE0IEBAIF9iZmRfdm1zX2dldF92YWx1ZSAoYmZkICphYmZkLCBjb25zdCB1bnMKLSAgICAgfQotIAotICAgbGVuID0gKmFzY2ljOwotKyAgaWYgKGFzY2ljICsgbGVuID49IG1heF9hc2NpYykKLSsgICAgewotKyAgICAgIF9iZmRfZXJyb3JfaGFuZGxlciAoXygiQ29ycnVwdCB2bXMgdmFsdWUiKSk7Ci0rICAgICAgKnZtYSA9IDA7Ci0rICAgICAgKmhwID0gTlVMTDsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgbmFtZVtpXSA9IGFzY2ljW2kgKyAxXTsKLSAgIG5hbWVbaV0gPSAwOwotQEAgLTE3NDEsNiArMTc1MSwxNSBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgX2JmZF9oZXhkdW1wICg4LCBwdHIsIGNtZF9sZW5ndGggLSA0LCAwKTsKLSAjZW5kaWYKLSAKLSsgICAgICAvKiBQUiAyMTU4OTogQ2hlY2sgZm9yIGEgY29ycnVwdCBFVElSIHJlY29yZC4gICovCi0rICAgICAgaWYgKGNtZF9sZW5ndGggPCA0KQotKwl7Ci0rCWNvcnJ1cHRfZXRpcjoKLSsJICBfYmZkX2Vycm9yX2hhbmRsZXIgKF8oIkNvcnJ1cHQgRVRJUiByZWNvcmQgZW5jb3VudGVyZWQiKSk7Ci0rCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7Ci0rCSAgcmV0dXJuIEZBTFNFOwotKwl9Ci0rCi0gICAgICAgc3dpdGNoIChjbWQpCi0gICAgICAgICB7Ci0gICAgICAgICAgIC8qIFN0YWNrIGdsb2JhbAotQEAgLTE3NDgsNyArMTc2Nyw3IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAKLSAgICAgICAgICAgICAgc3RhY2sgMzIgYml0IHZhbHVlIG9mIHN5bWJvbCAoaGlnaCBiaXRzIHNldCB0byAwKS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RBX0dCTDoKLS0gICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIG1heHB0ciwgaW5mbywgJm9wMSwgJmgpOwotICAgICAgICAgICBfYmZkX3Ztc19wdXNoIChhYmZkLCBvcDEsIGFscGhhX3Ztc19zeW1fdG9fY3R4dCAoaCkpOwotICAgICAgICAgICBicmVhazsKLSAKLUBAIC0xNzU3LDYgKzE3NzYsOCBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gCi0gICAgICAgICAgICAgIHN0YWNrIDMyIGJpdCB2YWx1ZSwgc2lnbiBleHRlbmQgdG8gNjQgYml0LiAgKi8KLSAgICAgICAgIGNhc2UgRVRJUl9fQ19TVEFfTFc6Ci0rCSAgaWYgKHB0ciArIDQgPj0gbWF4cHRyKQotKwkgICAgZ290byBjb3JydXB0X2V0aXI7Ci0gICAgICAgICAgIF9iZmRfdm1zX3B1c2ggKGFiZmQsIGJmZF9nZXRsMzIgKHB0ciksIFJFTENfTk9ORSk7Ci0gICAgICAgICAgIGJyZWFrOwotIAotQEAgLTE3NjUsNiArMTc4Niw4IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAKLSAgICAgICAgICAgICAgc3RhY2sgNjQgYml0IHZhbHVlIG9mIHN5bWJvbC4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RBX1FXOgotKwkgIGlmIChwdHIgKyA4ID49IG1heHB0cikKLSsJICAgIGdvdG8gY29ycnVwdF9ldGlyOwotICAgICAgICAgICBfYmZkX3Ztc19wdXNoIChhYmZkLCBiZmRfZ2V0bDY0IChwdHIpLCBSRUxDX05PTkUpOwotICAgICAgICAgICBicmVhazsKLSAKLUBAIC0xNzc4LDYgKzE4MDEsOCBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnQgcHNlY3Q7Ci0gCi0rCSAgICBpZiAocHRyICsgMTIgPj0gbWF4cHRyKQotKwkgICAgICBnb3RvIGNvcnJ1cHRfZXRpcjsKLSAgICAgICAgICAgICBwc2VjdCA9IGJmZF9nZXRsMzIgKHB0cik7Ci0gICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBpbnQpIHBzZWN0ID49IFBSSVYgKHNlY3Rpb25fY291bnQpKQotICAgICAgICAgICAgICAgewotQEAgLTE4NjcsNiArMTg5Miw4IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgewotICAgICAgICAgICAgIGludCBzaXplOwotIAotKwkgICAgaWYgKHB0ciArIDQgPj0gbWF4cHRyKQotKwkgICAgICBnb3RvIGNvcnJ1cHRfZXRpcjsKLSAgICAgICAgICAgICBzaXplID0gYmZkX2dldGwzMiAocHRyKTsKLSAgICAgICAgICAgICBfYmZkX3Ztc19wb3AgKGFiZmQsICZvcDEsICZyZWwxKTsKLSAgICAgICAgICAgICBpZiAocmVsMSAhPSBSRUxDX05PTkUpCi1AQCAtMTg3OSw3ICsxOTA2LDcgQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgICAgICAvKiBTdG9yZSBnbG9iYWw6IHdyaXRlIHN5bWJvbCB2YWx1ZQotICAgICAgICAgICAgICBhcmc6IGNzCWdsb2JhbCBzeW1ib2wgbmFtZS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RPX0dCTDoKLS0gICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIG1heHB0ciwgaW5mbywgJm9wMSwgJmgpOwotICAgICAgICAgICBpZiAoaCAmJiBoLT5zeW0pCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYgKGgtPnN5bS0+dHlwID09IEVHU0RfX0NfU1lNRykKLUBAIC0xOTAxLDcgKzE5MjgsNyBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgICAgIC8qIFN0b3JlIGNvZGUgYWRkcmVzczogd3JpdGUgYWRkcmVzcyBvZiBlbnRyeSBwb2ludAotICAgICAgICAgICAgICBhcmc6IGNzCWdsb2JhbCBzeW1ib2wgbmFtZSAocHJvY2VkdXJlKS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RPX0NBOgotLSAgICAgICAgICBfYmZkX3Ztc19nZXRfdmFsdWUgKGFiZmQsIHB0ciwgaW5mbywgJm9wMSwgJmgpOwotKyAgICAgICAgICBfYmZkX3Ztc19nZXRfdmFsdWUgKGFiZmQsIHB0ciwgbWF4cHRyLCBpbmZvLCAmb3AxLCAmaCk7Ci0gICAgICAgICAgIGlmIChoICYmIGgtPnN5bSkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZiAoaC0+c3ltLT5mbGFncyAmIEVHU1lfX1ZfTk9STSkKLUBAIC0xOTQ2LDggKzE5NzMsMTAgQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgICAgICAgICBkYQlkYXRhLiAgKi8KLSAgICAgICAgIGNhc2UgRVRJUl9fQ19TVE9fSU1NOgotICAgICAgICAgICB7Ci0tICAgICAgICAgICAgaW50IHNpemU7Ci0rICAgICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7Ci0gCi0rCSAgICBpZiAocHRyICsgNCA+PSBtYXhwdHIpCi0rCSAgICAgIGdvdG8gY29ycnVwdF9ldGlyOwotICAgICAgICAgICAgIHNpemUgPSBiZmRfZ2V0bDMyIChwdHIpOwotICAgICAgICAgICAgIGltYWdlX3dyaXRlIChhYmZkLCBwdHIgKyA0LCBzaXplKTsKLSAgICAgICAgICAgfQotQEAgLTE5NjAsNyArMTk4OSw3IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgICAgc3RvcmUgZ2xvYmFsIGxvbmd3b3JkOiBzdG9yZSAzMmJpdCB2YWx1ZSBvZiBzeW1ib2wKLSAgICAgICAgICAgICAgYXJnOiBjcwlzeW1ib2wgbmFtZS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RPX0dCTF9MVzoKLS0gICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIG1heHB0ciwgaW5mbywgJm9wMSwgJmgpOwotICNpZiAwCi0gICAgICAgICAgIGFib3J0ICgpOwotICNlbmRpZgotQEAgLTIwMTMsNyArMjA0Miw3IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgICAgZGEJc2lnbmF0dXJlLiAgKi8KLSAKLSAgICAgICAgIGNhc2UgRVRJUl9fQ19TVENfTFBfUFNCOgotLSAgICAgICAgICBfYmZkX3Ztc19nZXRfdmFsdWUgKGFiZmQsIHB0ciArIDQsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIgKyA0LCBtYXhwdHIsIGluZm8sICZvcDEsICZoKTsKLSAgICAgICAgICAgaWYgKGggJiYgaC0+c3ltKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmIChoLT5zeW0tPnR5cCA9PSBFR1NEX19DX1NZTUcpCi1AQCAtMjEwOSw2ICsyMTM4LDggQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgICAgICAvKiBBdWdtZW50IHJlbG9jYXRpb24gYmFzZTogaW5jcmVtZW50IGltYWdlIGxvY2F0aW9uIGNvdW50ZXIgYnkgb2Zmc2V0Ci0gICAgICAgICAgICAgIGFyZzogbHcJb2Zmc2V0IHZhbHVlLiAgKi8KLSAgICAgICAgIGNhc2UgRVRJUl9fQ19DVExfQVVHUkI6Ci0rCSAgaWYgKHB0ciArIDQgPj0gbWF4cHRyKQotKwkgICAgZ290byBjb3JydXB0X2V0aXI7Ci0gICAgICAgICAgIG9wMSA9IGJmZF9nZXRsMzIgKHB0cik7Ci0gICAgICAgICAgIGltYWdlX2luY19wdHIgKGFiZmQsIG9wMSk7Ci0gICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDExNDJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gMDRmOTYzZmQ0ODljYWU3MjRhNjAxNDBlMTM5ODQ0MTVjMjA1ZjRhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTA6MzU6MTYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHNlZy1mYXVsdHMgaW4gb2JqZHVtcCB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0Ci0gdmVyc2Fkb3MgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1OTEKLQkqIHZlcnNhZG9zLmMgKHZlcnNhZG9zX21rb2JqZWN0KTogWmVybyB0aGUgYWxsb2NhdGVkIHRkYXRhIHN0cnVjdHVyZS4KLQkocHJvY2Vzc19vdHIpOiBDaGVjayBmb3IgYW4gaW52YWxpZCBvZmZzZXQgaW4gdGhlIG90ciBzdHJ1Y3R1cmUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc1MwotQ1ZFOiBDVkUtMjAxNy05NzU0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgfCAgNiArKysrKysKLSBiZmQvdmVyc2Fkb3MuYyB8IDEyICsrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvdmVyc2Fkb3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC92ZXJzYWRvcy5jCi0rKysgZ2l0L2JmZC92ZXJzYWRvcy5jCi1AQCAtMTQ5LDcgKzE0OSw3IEBAIHZlcnNhZG9zX21rb2JqZWN0IChiZmQgKmFiZmQpCi0gICBpZiAoYWJmZC0+dGRhdGEudmVyc2Fkb3NfZGF0YSA9PSBOVUxMKQotICAgICB7Ci0gICAgICAgYmZkX3NpemVfdHlwZSBhbXQgPSBzaXplb2YgKHRkYXRhX3R5cGUpOwotLSAgICAgIHRkYXRhX3R5cGUgKnRkYXRhID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOwotKyAgICAgIHRkYXRhX3R5cGUgKnRkYXRhID0gYmZkX3phbGxvYyAoYWJmZCwgYW10KTsKLSAKLSAgICAgICBpZiAodGRhdGEgPT0gTlVMTCkKLSAJcmV0dXJuIEZBTFNFOwotQEAgLTM0NSwxMyArMzQ1LDEzIEBAIHJlbG9jX2hvd3RvX3R5cGUgdmVyc2Fkb3NfaG93dG9fdGFibGVbXQotIH07Ci0gCi0gc3RhdGljIGludAotLWdldF9vZmZzZXQgKGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnB0cikKLStnZXRfb2Zmc2V0ICh1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBjaGFyICpwdHIpCi0gewotICAgaW50IHZhbCA9IDA7Ci0gCi0gICBpZiAobGVuKQotICAgICB7Ci0tICAgICAgaW50IGk7Ci0rICAgICAgdW5zaWduZWQgaW50IGk7Ci0gCi0gICAgICAgdmFsID0gKnB0cisrOwotICAgICAgIGlmICh2YWwgJiAweDgwKQotQEAgLTM5NCw5ICszOTQsMTMgQEAgcHJvY2Vzc19vdHIgKGJmZCAqYWJmZCwgc3RydWN0IGV4dF9vdHIgKgotIAkgIGludCBmbGFnID0gKnNyY3ArKzsKLSAJICBpbnQgZXNkaWRzID0gKGZsYWcgPj4gNSkgJiAweDc7Ci0gCSAgaW50IHNpemVpbndvcmRzID0gKChmbGFnID4+IDMpICYgMSkgPyAyIDogMTsKLS0JICBpbnQgb2Zmc2V0bGVuID0gZmxhZyAmIDB4NzsKLSsJICB1bnNpZ25lZCBpbnQgb2Zmc2V0bGVuID0gZmxhZyAmIDB4NzsKLSAJICBpbnQgajsKLSAKLSsJICAvKiBQUiAyMTU5MTogQ2hlY2sgZm9yIGludmFsaWQgbGVuZ3Rocy4gICovCi0rCSAgaWYgKHNyY3AgKyBlc2RpZHMgKyBvZmZzZXRsZW4gPj0gZW5kcCkKLSsJICAgIHJldHVybjsKLSsKLSAJICBpZiAoZXNkaWRzID09IDApCi0gCSAgICB7Ci0gCSAgICAgIC8qIEEgemVybyBlc2RpZCBtZWFucyB0aGUgbmV3IHBjIGlzIHRoZSBvZmZzZXQgZ2l2ZW4uICAqLwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtOCw2ICs4LDEwIEBACi0gICAgICAgIChpZWVlX2FyY2hpdmVfcCk6IExpa2V3aXNlLgotIAotIDIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTkxCi0rICAgICAgICogdmVyc2Fkb3MuYyAodmVyc2Fkb3NfbWtvYmplY3QpOiBaZXJvIHRoZSBhbGxvY2F0ZWQgdGRhdGEgc3RydWN0dXJlLgotKyAgICAgICAocHJvY2Vzc19vdHIpOiBDaGVjayBmb3IgYW4gaW52YWxpZCBvZmZzZXQgaW4gdGhlIG90ciBzdHJ1Y3R1cmUuCi0gIAotICAgICAgICBQUiBiaW51dGlscy8yMTU4OQotICAgICAgICAqIHZtcy1hbHBoYS5jIChfYmZkX3Ztc19nZXRfdmFsdWUpOiBBZGQgYW4gZXh0cmEgcGFyYW1ldGVyIC0gdGhlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZGM5MDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzU1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSAwZDk2ZTRkZjQ4MTJjM2JhZDc3YzIyOWRmZWY0N2E5YmMxMTVhYzEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAwNjo0MDoxNyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBpMzg2LWRpczogQ2hlY2sgdmFsaWQgYm5kIHJlZ2lzdGVyCi0KLVNpbmNlIHRoZXJlIGFyZSBvbmx5IDQgYm5kIHJlZ2lzdGVycywgcmV0dXJuICIoYmFkKSIgZm9yIHJlZ2lzdGVyCi1udW1iZXIgPiAzLgotCi0JUFIgYmludXRpbHMvMjE1OTQKLQkqIGkzODYtZGlzLmMgKE9QX0VfcmVnaXN0ZXIpOiBDaGVjayB2YWxpZCBibmQgcmVnaXN0ZXIuCi0JKE9QX0cpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLUNWRTogQ1ZFLTIwMTctOTc1NQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG9wY29kZXMvQ2hhbmdlTG9nICB8ICA2ICsrKysrKwotIG9wY29kZXMvaTM4Ni1kaXMuYyB8IDEwICsrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdpdC9vcGNvZGVzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvQ2hhbmdlTG9nCi0rKysgZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA2LTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxNTk0Ci0rCSogaTM4Ni1kaXMuYyAoT1BfRV9yZWdpc3Rlcik6IENoZWNrIHZhbGlkIGJuZCByZWdpc3Rlci4KLSsJKE9QX0cpOiBMaWtld2lzZS4KLSsKLSAyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTU4OAotSW5kZXg6IGdpdC9vcGNvZGVzL2kzODYtZGlzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9vcGNvZGVzL2kzODYtZGlzLmMKLSsrKyBnaXQvb3Bjb2Rlcy9pMzg2LWRpcy5jCi1AQCAtMTQ5MzksNiArMTQ5MzksMTEgQEAgT1BfRV9yZWdpc3RlciAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYQotICAgICAgIG5hbWVzID0gYWRkcmVzc19tb2RlID09IG1vZGVfNjRiaXQgPyBuYW1lczY0IDogbmFtZXMzMjsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBibmRfbW9kZToKLSsgICAgICBpZiAocmVnID4gMHgzKQotKwl7Ci0rCSAgb2FwcGVuZCAoIihiYWQpIik7Ci0rCSAgcmV0dXJuOwotKwl9Ci0gICAgICAgbmFtZXMgPSBuYW1lc19ibmQ7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgaW5kaXJfdl9tb2RlOgotQEAgLTE1NDgzLDYgKzE1NDg4LDExIEBAIE9QX0cgKGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQotICAgICAgIG9hcHBlbmQgKG5hbWVzNjRbbW9kcm0ucmVnICsgYWRkXSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgYm5kX21vZGU6Ci0rICAgICAgaWYgKG1vZHJtLnJlZyA+IDB4MykKLSsJewotKwkgIG9hcHBlbmQgKCIoYmFkKSIpOwotKwkgIHJldHVybjsKLSsJfQotICAgICAgIG9hcHBlbmQgKG5hbWVzX2JuZFttb2RybS5yZWddKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSB2X21vZGU6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MWQwYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzU2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBjZDNlYTdjNjlhY2M1MDQ1ZWIyOGY5YmY4MGQ5MjMxMTZlMTVlNGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAxMzoyNjo1NCArMDEwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGFkZHJlc3MgdmlvbGF0aW9uIHByb2JsZW0gd2hlbiBkaXNhc3NlbWJsaW5nIGNvcnJ1cHQKLSBhYXJjaDY0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTk1Ci0JKiBhYXJjaDY0LWRpcy5jIChhYXJjaDY0X2V4dF9sZHN0X3JlZ2xpc3QpOiBDaGVjayBmb3IgYW4gb3V0IG9mCi0JcmFuZ2UgdmFsdWUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc1NgotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG9wY29kZXMvQ2hhbmdlTG9nICAgICB8IDYgKysrKysrCi0gb3Bjb2Rlcy9hYXJjaDY0LWRpcy5jIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9DaGFuZ2VMb2cKLSsrKyBnaXQvb3Bjb2Rlcy9DaGFuZ2VMb2cKLUBAIC02LDYgKzYsMTIgQEAKLSAKLSAyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotKwlQUiBiaW51dGlscy8yMTU5NQotKwkqIGFhcmNoNjQtZGlzLmMgKGFhcmNoNjRfZXh0X2xkc3RfcmVnbGlzdCk6IENoZWNrIGZvciBhbiBvdXQgb2YKLSsJcmFuZ2UgdmFsdWUuCi0rCi0rMjAxNy0wNi0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSAJUFIgYmludXRpbHMvMjE1ODgKLSAJKiBybDc4LWRlY29kZS5vcGMgKE9QX0JVRl9MRU4pOiBEZWZpbmUuCi0gCShHRVRCWVRFKTogQ2hlY2sgZm9yIHRoZSBpbmRleCBleGNlZWRpbmcgT1BfQlVGX0xFTi4KLUluZGV4OiBnaXQvb3Bjb2Rlcy9hYXJjaDY0LWRpcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9hYXJjaDY0LWRpcy5jCi0rKysgZ2l0L29wY29kZXMvYWFyY2g2NC1kaXMuYwotQEAgLTQwOSw2ICs0MDksOSBAQCBhYXJjaDY0X2V4dF9sZHN0X3JlZ2xpc3QgKGNvbnN0IGFhcmNoNjRfCi0gICBpbmZvLT5yZWdsaXN0LmZpcnN0X3JlZ25vID0gZXh0cmFjdF9maWVsZCAoRkxEX1J0LCBjb2RlLCAwKTsKLSAgIC8qIG9wY29kZSAqLwotICAgdmFsdWUgPSBleHRyYWN0X2ZpZWxkIChGTERfb3Bjb2RlLCBjb2RlLCAwKTsKLSsgIC8qIFBSIDIxNTk1OiBDaGVjayBmb3IgYSBib2d1cyB2YWx1ZS4gICovCi0rICBpZiAodmFsdWUgPj0gQVJSQVlfU0laRSAoZGF0YSkpCi0rICAgIHJldHVybiAwOwotICAgaWYgKGV4cGVjdGVkX251bSAhPSBkYXRhW3ZhbHVlXS5udW1fZWxlbWVudHMgfHwgZGF0YVt2YWx1ZV0uaXNfcmVzZXJ2ZWQpCi0gICAgIHJldHVybiAwOwotICAgaW5mby0+cmVnbGlzdC5udW1fcmVncyA9IGRhdGFbdmFsdWVdLm51bV9yZWdzOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTlkN2ViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLUZyb20gMDRlMTViNGE5NDYyY2IxYWU4MTllODc4YTYwMDk4MjlhYWI4MDIwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTU6NDY6MzQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFkZHJlc3MgdmlvbGF0aW9uIHBhcnNpbmcgYSBjb3JydXB0IHRleGhleCBmb3JtYXQgZmlsZS4KLQotCVBSIGJpbnV0aWxzLzIxNjcwCi0JKiB0ZWtoZXguYyAoZ2V0dmFsdWUpOiBDaGVjayBmb3IgdGhlIHNvdXJjZSBwb2ludGVyIGV4Y2VlZGluZyB0aGUKLQllbmQgcG9pbnRlciBiZWZvcmUgdGhlIGZpcnN0IGJ5dGUgaXMgcmVhZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkVfMjAxNy05OTU0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmZkL3Rla2hleC5jICB8IDYgKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvYmZkL3Rla2hleC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3Rla2hleC5jCi0rKysgZ2l0L2JmZC90ZWtoZXguYwotQEAgLTI3Myw2ICsyNzMsOSBAQCBnZXR2YWx1ZSAoY2hhciAqKnNyY3AsIGJmZF92bWEgKnZhbHVlcCwKLSAgIGJmZF92bWEgdmFsdWUgPSAwOwotICAgdW5zaWduZWQgaW50IGxlbjsKLSAKLSsgIGlmIChzcmMgPj0gZW5kcCkKLSsgICAgcmV0dXJuIEZBTFNFOwotKwotICAgaWYgKCFJU0hFWCAoKnNyYykpCi0gICAgIHJldHVybiBGQUxTRTsKLSAKLUBAIC01MTQsOSArNTE3LDEwIEBAIHBhc3Nfb3ZlciAoYmZkICphYmZkLCBiZmRfYm9vbGVhbiAoKmZ1bmMKLSAgIC8qIFRvIHRoZSBmcm9udCBvZiB0aGUgZmlsZS4gICovCi0gICBpZiAoYmZkX3NlZWsgKGFiZmQsIChmaWxlX3B0cikgMCwgU0VFS19TRVQpICE9IDApCi0gICAgIHJldHVybiBGQUxTRTsKLSsKLSAgIHdoaWxlICghIGlzX2VvZikKLSAgICAgewotLSAgICAgIGNoYXIgc3JjW01BWENIVU5LXTsKLSsgICAgICBzdGF0aWMgY2hhciBzcmNbTUFYQ0hVTktdOwotICAgICAgIGNoYXIgdHlwZTsKLSAKLSAgICAgICAvKiBGaW5kIGZpcnN0ICclJy4gICovCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rIAotKyAgICAgICBQUiBiaW51dGlscy8yMTY3MAotKyAgICAgICAqIHRla2hleC5jIChnZXR2YWx1ZSk6IENoZWNrIGZvciB0aGUgc291cmNlIHBvaW50ZXIgZXhjZWVkaW5nIHRoZQotKyAgICAgICBlbmQgcG9pbnRlciBiZWZvcmUgdGhlIGZpcnN0IGJ5dGUgaXMgcmVhZC4KLSsKLSAyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTU4MgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc0NjcwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi1Gcm9tIGNmZDE0YTUwMGUwNDg1Mzc0NTk2MjM0ZGU0ZGIxMGU4OGViYzc2MTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDI2IEp1biAyMDE3IDE1OjI1OjA4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbnMgd2hlbiBhdGVtcHRpbmcgdG8gcGFyc2UgZnV6emVkCi0gYmluYXJpZXMuCi0KLQlQUiBiaW51dGlscy8yMTY2NQotYmZkCSogb3BuY2xzLmMgKGdldF9idWlsZF9pZCk6IENoZWNrIHRoYXQgdGhlIHNlY3Rpb24gaXMgYmVpZyBlbm91Z2gKLQl0byBjb250YWluIHRoZSB3aG9sZSBub3RlLgotCSogY29tcHJlc3MuYyAoYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMpOiBDaGVjayBmb3IgYW5kIHJlamVjdAotCWEgc2VjdGlvbiB3aG9lcyBzaXplIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZW50aXJlIGZpbGUuCi0JKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX2NvcHlfbm90ZXMpOiBBbGxvdyBmb3IgdGhlIG91cHV0IHRvIG5vdAotCWNvbnRhaW4gYSBub3RlcyBzZWN0aW9uLgotCi1iaW51dGlscyogb2JqZHVtcC5jIChkaXNhc3NlbWJsZV9zZWN0aW9uKTogU2tpcCBhbnkgc2VjdGlvbiB0aGF0IGlzIGJpZ2dlcgotCXRoYW4gdGhlIGVudGlyZSBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAotQ1ZFOiBDVkUtMjAxNy05OTU1ICMxCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgICAgIHwgMTAgKysrKysrKysrKwotIGJmZC9jb21wcmVzcy5jICAgICB8ICA2ICsrKysrKwotIGJmZC9lbGYzMi12ODUwLmMgICB8ICA0ICsrKy0KLSBiZmQvb3BuY2xzLmMgICAgICAgfCAxOCArKysrKysrKysrKysrKysrLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNiArKysrKysKLSBiaW51dGlscy9vYmpkdW1wLmMgfCAgNCArKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9jb21wcmVzcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2NvbXByZXNzLmMKLSsrKyBnaXQvYmZkL2NvbXByZXNzLmMKLUBAIC0yMzksNiArMjM5LDEyIEBAIGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQKLSAgICAgICAqcHRyID0gTlVMTDsKLSAgICAgICByZXR1cm4gVFJVRTsKLSAgICAgfQotKyAgZWxzZSBpZiAoYmZkX2dldF9maWxlX3NpemUgKGFiZmQpID4gMAotKwkgICAmJiBzeiA+IChiZmRfc2l6ZV90eXBlKSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0rICAgIHsKLSsgICAgICAqcHRyID0gTlVMTDsKLSsgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIH0KLSAKLSAgIHN3aXRjaCAoc2VjLT5jb21wcmVzc19zdGF0dXMpCi0gICAgIHsKLUluZGV4OiBnaXQvYmZkL2VsZjMyLXY4NTAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGYzMi12ODUwLmMKLSsrKyBnaXQvYmZkL2VsZjMyLXY4NTAuYwotQEAgLTI0NTAsNyArMjQ1MCw5IEBAIHY4NTBfZWxmX2NvcHlfbm90ZXMgKGJmZCAqaWJmZCwgYmZkICpvYmYKLSAJQkZEX0FTU0VSVCAoYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKGliZmQsIGlub3RlcywgJiBpY29udCkpOwotIAotICAgICAgIGlmICgob2NvbnQgPSBlbGZfc2VjdGlvbl9kYXRhIChvbm90ZXMpLT50aGlzX2hkci5jb250ZW50cykgPT0gTlVMTCkKLS0JQkZEX0FTU0VSVCAoYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKG9iZmQsIG9ub3RlcywgJiBvY29udCkpOwotKwkvKiBJZiB0aGUgb3V0cHV0IGlzIGJlaW5nIHN0cmlwcGVkIHRoZW4gaXQgaXMgcG9zc2libGUgZm9yCi0rCSAgIHRoZSBub3RlcyBzZWN0aW9uIHRvIGRpc2FwcGVhci4gIEluIHRoaXMgY2FzZSBkbyBub3RoaW5nLiAgKi8KLSsJcmV0dXJuOwotIAotICAgICAgIC8qIENvcHkvb3ZlcndyaXRlIG5vdGVzIGZyb20gdGhlIGlucHV0IHRvIHRoZSBvdXRwdXQuICAqLwotICAgICAgIG1lbWNweSAob2NvbnQsIGljb250LCBiZmRfc2VjdGlvbl9zaXplIChvYmZkLCBvbm90ZXMpKTsKLUluZGV4OiBnaXQvYmZkL29wbmNscy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL29wbmNscy5jCi0rKysgZ2l0L2JmZC9vcG5jbHMuYwotQEAgLTE3NzYsNiArMTc3Niw3IEBAIGdldF9idWlsZF9pZCAoYmZkICphYmZkKQotICAgRWxmX0V4dGVybmFsX05vdGUgKmVub3RlOwotICAgYmZkX2J5dGUgKmNvbnRlbnRzOwotICAgYXNlY3Rpb24gKnNlY3Q7Ci0rICBiZmRfc2l6ZV90eXBlIHNpemU7Ci0gCi0gICBCRkRfQVNTRVJUIChhYmZkKTsKLSAKLUBAIC0xNzkwLDggKzE3OTEsOSBAQCBnZXRfYnVpbGRfaWQgKGJmZCAqYWJmZCkKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotKyAgc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0KTsKLSAgIC8qIEZJWE1FOiBTaG91bGQgd2Ugc3VwcG9ydCBzbWFsbGVyIGJ1aWxkLWlkIG5vdGVzID8gICovCi0tICBpZiAoYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpIDwgMHgyNCkKLSsgIGlmIChzaXplIDwgMHgyNCkKLSAgICAgewotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTgwNCw2ICsxODA2LDE3IEBAIGdldF9idWlsZF9pZCAoYmZkICphYmZkKQotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0rICAvKiBGSVhNRTogUGFyYW5vaWEgLSBhbGxvdyBmb3IgY29tcHJlc3NlZCBidWlsZC1pZCBzZWN0aW9ucy4KLSsgICAgIE1heWJlIHdlIHNob3VsZCBjb21wbGFpbiBpZiB0aGlzIHNpemUgaXMgZGlmZmVyZW50IGZyb20KLSsgICAgIHRoZSBvbmUgb2J0YWluZWQgYWJvdmUuLi4gICovCi0rICBzaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpOwotKyAgaWYgKHNpemUgPCBzaXplb2YgKEVsZl9FeHRlcm5hbF9Ob3RlKSkKLSsgICAgewotKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0rICAgICAgZnJlZSAoY29udGVudHMpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0gICBlbm90ZSA9IChFbGZfRXh0ZXJuYWxfTm90ZSAqKSBjb250ZW50czsKLSAgIGlub3RlLnR5cGUgPSBIX0dFVF8zMiAoYWJmZCwgZW5vdGUtPnR5cGUpOwotICAgaW5vdGUubmFtZXN6ID0gSF9HRVRfMzIgKGFiZmQsIGVub3RlLT5uYW1lc3opOwotQEAgLTE4MTUsNyArMTgyOCw4IEBAIGdldF9idWlsZF9pZCAoYmZkICphYmZkKQotICAgaWYgKGlub3RlLmRlc2NzeiA9PSAwCi0gICAgICAgfHwgaW5vdGUudHlwZSAhPSBOVF9HTlVfQlVJTERfSUQKLSAgICAgICB8fCBpbm90ZS5uYW1lc3ogIT0gNCAvKiBzaXplb2YgIkdOVSIgICovCi0tICAgICAgfHwgc3RyY21wIChpbm90ZS5uYW1lZGF0YSwgIkdOVSIpICE9IDApCi0rICAgICAgfHwgc3RybmNtcCAoaW5vdGUubmFtZWRhdGEsICJHTlUiLCA0KSAhPSAwCi0rICAgICAgfHwgc2l6ZSA8ICgxMiArIEJGRF9BTElHTiAoaW5vdGUubmFtZXN6LCA0KSArIGlub3RlLmRlc2NzeikpCi0gICAgIHsKLSAgICAgICBmcmVlIChjb250ZW50cyk7Ci0gICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uKTsKLUluZGV4OiBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTIwNDgsNyArMjA0OCw3IEBAIGRpc2Fzc2VtYmxlX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24KLSAgICAgcmV0dXJuOwotIAotICAgZGF0YXNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdGlvbik7Ci0tICBpZiAoZGF0YXNpemUgPT0gMCkKLSsgIGlmIChkYXRhc2l6ZSA9PSAwIHx8IGRhdGFzaXplID49IChiZmRfc2l6ZV90eXBlKSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0gICAgIHJldHVybjsKLSAKLSAgIGlmIChzdGFydF9hZGRyZXNzID09IChiZmRfdm1hKSAtMQotQEAgLTI5MTIsNyArMjkxMiw3IEBAIGR1bXBfdGFyZ2V0X3NwZWNpZmljIChiZmQgKmFiZmQpCi0gc3RhdGljIHZvaWQKLSBkdW1wX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3Rpb24sIHZvaWQgKmR1bW15IEFUVFJJQlVURV9VTlVTRUQpCi0gewotLSAgYmZkX2J5dGUgKmRhdGEgPSAwOwotKyAgYmZkX2J5dGUgKmRhdGEgPSBOVUxMOwotICAgYmZkX3NpemVfdHlwZSBkYXRhc2l6ZTsKLSAgIGJmZF92bWEgYWRkcl9vZmZzZXQ7Ci0gICBiZmRfdm1hIHN0YXJ0X29mZnNldDsKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsNCArMSwxNCBAQAotIDIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci0rICAgICAgICogb3BuY2xzLmMgKGdldF9idWlsZF9pZCk6IENoZWNrIHRoYXQgdGhlIHNlY3Rpb24gaXMgYmVpZyBlbm91Z2gKLSsgICAgICAgdG8gY29udGFpbiB0aGUgd2hvbGUgbm90ZS4KLSsgICAgICAgKiBjb21wcmVzcy5jIChiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyk6IENoZWNrIGZvciBhbmQgcmVqZWN0Ci0rICAgICAgIGEgc2VjdGlvbiB3aG9lcyBzaXplIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZW50aXJlIGZpbGUuCi0rICAgICAgICogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9jb3B5X25vdGVzKTogQWxsb3cgZm9yIHRoZSBvdXB1dCB0byBub3QKLSsgICAgICAgY29udGFpbiBhIG5vdGVzIHNlY3Rpb24uCi0rCi0rMjAxNy0wNi0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAgCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNjcwCi0gICAgICAgICogdGVraGV4LmMgKGdldHZhbHVlKTogQ2hlY2sgZm9yIHRoZSBzb3VyY2UgcG9pbnRlciBleGNlZWRpbmcgdGhlCi1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rIAotKyAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIG9iamR1bXAuYyAoZGlzYXNzZW1ibGVfc2VjdGlvbik6IFNraXAgYW55IHNlY3Rpb24gdGhhdCBpcyBiaWdnZXIKLSsgICAgICAgdGhhbiB0aGUgZW50aXJlIGZpbGUuCi0rCi0gMjAxNy0wNC0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjEzNDUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NTI5NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotRnJvbSAwNjMwYjQ5YzQ3MGNhMmUzYzNmNzRkYTRjN2U0ZmY2MzQ0MGRkNzFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNiBKdW4gMjAxNyAwOToyNDo0OSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayBmaWxlIHNpemUgYmVmb3JlIGdldHRpbmcgc2VjdGlvbiBjb250ZW50cwotCi1Eb24ndCBjaGVjayB0aGUgc2VjdGlvbiBzaXplIGluIGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzIHNpbmNlCi10aGUgc2l6ZSBvZiBhIGRlY29tcHJlc3NlZCBzZWN0aW9uIG1heSBiZSBsYXJnZXIgdGhhbiB0aGUgZmlsZSBzaXplLgotSW5zdGVhZCwgY2hlY2sgZmlsZSBzaXplIGluIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cy4KLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBjb21wcmVzcy5jIChiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyk6IERvbid0IGNoZWNrIHRoZQotCWZpbGUgc2l6ZSBoZXJlLgotCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IENoZWNrIGZvciBhbmQKLQlyZWplY3QgYSBzZWN0aW9uIHdob2VzIHNpemUgKyBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBzaXplCi0Jb2YgdGhlIGVudGlyZSBmaWxlLgotCShfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjMgotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgIHwgMTAgKysrKysrKysrLQotIGJmZC9jb21wcmVzcy5jIHwgIDggKy0tLS0tLS0KLSBiZmQvbGliYmZkLmMgICB8IDE3ICsrKysrKysrKysrKysrKystCi0gMyBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9jb21wcmVzcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2NvbXByZXNzLmMKLSsrKyBnaXQvYmZkL2NvbXByZXNzLmMKLUBAIC0yMzksMTIgKzIzOSw2IEBAIGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQKLSAgICAgICAqcHRyID0gTlVMTDsKLSAgICAgICByZXR1cm4gVFJVRTsKLSAgICAgfQotLSAgZWxzZSBpZiAoYmZkX2dldF9maWxlX3NpemUgKGFiZmQpID4gMAotLQkgICAmJiBzeiA+IChiZmRfc2l6ZV90eXBlKSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0tICAgIHsKLS0gICAgICAqcHRyID0gTlVMTDsKLS0gICAgICByZXR1cm4gRkFMU0U7Ci0tICAgIH0KLSAKLSAgIHN3aXRjaCAoc2VjLT5jb21wcmVzc19zdGF0dXMpCi0gICAgIHsKLUBAIC0yNjAsNyArMjU0LDcgQEAgYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMgKGJmZCAqYWJmZAotIAkJICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLwotIAkJICAoXygiZXJyb3I6ICVCKCVBKSBpcyB0b28gbGFyZ2UgKCUjbHggYnl0ZXMpIiksCi0gCQkgIGFiZmQsIHNlYywgKGxvbmcpIHN6KTsKLS0JICAgIHJldHVybiBGQUxTRTsKLSsJICAgICAgcmV0dXJuIEZBTFNFOwotIAkgICAgfQotIAl9Ci0gCi1JbmRleDogZ2l0L2JmZC9saWJiZmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9saWJiZmQuYwotKysrIGdpdC9iZmQvbGliYmZkLmMKLUBAIC03ODAsNiArNzgwLDcgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKgotIAkJCQkgICBiZmRfc2l6ZV90eXBlIGNvdW50KQotIHsKLSAgIGJmZF9zaXplX3R5cGUgc3o7Ci0rICBmaWxlX3B0ciBmaWxlc3o7Ci0gICBpZiAoY291bnQgPT0gMCkKLSAgICAgcmV0dXJuIFRSVUU7Ci0gCi1AQCAtODAyLDggKzgwMywxNSBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMgKGJmZCAqCi0gICAgIHN6ID0gc2VjdGlvbi0+cmF3c2l6ZTsKLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotKyAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotKyAgaWYgKGZpbGVzeiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotKyAgICAgIGFib3J0ICgpOwotKyAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPCBjb3VudAotLSAgICAgIHx8IG9mZnNldCArIGNvdW50ID4gc3opCi0rICAgICAgfHwgb2Zmc2V0ICsgY291bnQgPiBzegotKyAgICAgIHx8IChzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgc3opID4gKGJmZF9zaXplX3R5cGUpIGZpbGVzeikKLSAgICAgewotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotQEAgLTgyNiw2ICs4MzQsNyBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luCi0gewotICNpZmRlZiBVU0VfTU1BUAotICAgYmZkX3NpemVfdHlwZSBzejsKLSsgIGZpbGVfcHRyIGZpbGVzejsKLSAKLSAgIGlmIChjb3VudCA9PSAwKQotICAgICByZXR1cm4gVFJVRTsKLUBAIC04NTgsNyArODY3LDEzIEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW4KLSAgICAgc3ogPSBzZWN0aW9uLT5yYXdzaXplOwotICAgZWxzZQotICAgICBzeiA9IHNlY3Rpb24tPnNpemU7Ci0rICBmaWxlc3ogPSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCk7Ci0rICAgIHsKLSsgICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotKyAgICAgIGFib3J0ICgpOwotKyAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPiBzegotKyAgICAgIHx8IChzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgc3opID4gKGJmZF9zaXplX3R5cGUpIGZpbGVzegotICAgICAgIHx8ICEgYmZkX2dldF9maWxlX3dpbmRvdyAoYWJmZCwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCwgY291bnQsIHcsCi0gCQkJCVRSVUUpKQotICAgICByZXR1cm4gRkFMU0U7Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTMgQEAKLSsyMDE3LTA2LTI2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci0rICAgICAgICogY29tcHJlc3MuYyAoYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMpOiBEb24ndCBjaGVjayB0aGUKLSsgICAgICAgZmlsZSBzaXplIGhlcmUuCi0rICAgICAgICogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IENoZWNrIGZvciBhbmQKLSsgICAgICAgcmVqZWN0IGEgc2VjdGlvbiB3aG9lcyBzaXplICsgb2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZQotKyAgICAgICBvZiB0aGUgZW50aXJlIGZpbGUuCi0rICAgICAgIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogTGlrZXdpc2UuCi0rCi0gMjAxNy0wNi0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjE2NjUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjdjNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDFmNDczZTNkMGFkMjg1MTk1OTM0ZTZhMDc3YzdlZDMyYWZlNjY0MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI2IEp1biAyMDE3IDE1OjQ3OjE2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIG1pc3NpbmcgbGluZSB0bwotIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cKLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbmRvdyk6IEFkZAotCWEgbWlzc2luZyBsaW5lLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk5NTUgIzMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgNiArKysrKysKLSBiZmQvbGliYmZkLmMgIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdpdC9iZmQvbGliYmZkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvbGliYmZkLmMKLSsrKyBnaXQvYmZkL2xpYmJmZC5jCi1AQCAtODY4LDYgKzg2OCw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW4KLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotICAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotKyAgaWYgKGZpbGVzeiA8IDApCi0gICAgIHsKLSAgICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotICAgICAgIGFib3J0ICgpOwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSw2ICsxLDEyIEBACi0gMjAxNy0wNi0yNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogQWRkCi0rICAgICAgIGEgbWlzc2luZyBsaW5lLgotKwotKzIwMTctMDYtMjYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjE2NjUKLSAgICAgICAgKiBjb21wcmVzcy5jIChiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyk6IERvbid0IGNoZWNrIHRoZQotICAgICAgICBmaWxlIHNpemUgaGVyZS4KLSAgICAgICAgKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogQ2hlY2sgZm9yIGFuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdkNTI5YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gYWIyN2Y4MGM1ZGNlYWEyM2M0YmE3ZjYyYzBkNWQyMmE1ZDVkZDdhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDA6MjE6MjUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IEdEQiByZWdyZXNzaW9ucyBjYXVzZWQgYnkgcHJldmlvdXMKLSBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgY2hhbmdlcwotCi1SZWY6IGh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxNy0wNi9tc2cwMDM0My5odG1sCi0KLWJmZC9DaGFuZ2VMb2c6Ci0yMDE3LTA2LTI2ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotCi0JUFIgYmludXRpbHMvMjE2NjUKLQkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBBZGQgImNvdW50Iiwgbm90Ci0JInN6Ii4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1ICM0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmZkL2xpYmJmZC5jICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxNjY1Ci0rCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IEFkZCAiY291bnQiLCBub3QKLSsJInN6Ii4KLSsKLSAyMDE3LTA2LTI2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci1JbmRleDogZ2l0L2JmZC9saWJiZmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9saWJiZmQuYwotKysrIGdpdC9iZmQvbGliYmZkLmMKLUBAIC04MTEsNyArODExLDcgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKgotICAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPCBjb3VudAotICAgICAgIHx8IG9mZnNldCArIGNvdW50ID4gc3oKLS0gICAgICB8fCAoc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIHN6KSA+IChiZmRfc2l6ZV90eXBlKSBmaWxlc3opCi0rICAgICAgfHwgKHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCkgPiAoYmZkX3NpemVfdHlwZSkgZmlsZXN6KQotICAgICB7Ci0gICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uKTsKLSAgICAgICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV81LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTNiZDM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV81LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotRnJvbSA3MjExYWU1MDFlYjBkZTEwNDQ5ODNmMmRmYjAwMDkxYTU4ZmJkNjZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDk6NDU6MDQgKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gTW9yZSBmaXhlcyBmb3IgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIGNoYW5nZQotCi0JUFIgYmludXRpbHMvMjE2NjUKLQkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBEZWxldGUgYWJvcnQuCi0JVXNlIHVuc2lnbmVkIGZpbGUgcG9pbnRlciB0eXBlLCBhbmQgcmVtb3ZlIGNhc3QuCi0JKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbmRvdyk6IExpa2V3aXNlLgotCUFkZCAiY291bnQiLCBub3QgInN6Ii4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1ICM1Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA4ICsrKysrKysrCi0gYmZkL2xpYmJmZC5jICB8IDE4ICsrKystLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTctMDYtMjcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTY2NQotKwkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBEZWxldGUgYWJvcnQuCi0rCVVzZSB1bnNpZ25lZCBmaWxlIHBvaW50ZXIgdHlwZSwgYW5kIHJlbW92ZSBjYXN0LgotKwkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogTGlrZXdpc2UuCi0rCUFkZCAiY291bnQiLCBub3QgInN6Ii4KLSsKLSAyMDE3LTA2LTI2ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTY2NQotSW5kZXg6IGdpdC9iZmQvbGliYmZkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvbGliYmZkLmMKLSsrKyBnaXQvYmZkL2xpYmJmZC5jCi1AQCAtNzgwLDcgKzc4MCw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyAoYmZkICoKLSAJCQkJICAgYmZkX3NpemVfdHlwZSBjb3VudCkKLSB7Ci0gICBiZmRfc2l6ZV90eXBlIHN6OwotLSAgZmlsZV9wdHIgZmlsZXN6OwotKyAgdWZpbGVfcHRyIGZpbGVzejsKLSAgIGlmIChjb3VudCA9PSAwKQotICAgICByZXR1cm4gVFJVRTsKLSAKLUBAIC04MDQsMTQgKzgwNCw5IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyAoYmZkICoKLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotICAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotLSAgaWYgKGZpbGVzeiA8IDApCi0tICAgIHsKLS0gICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotLSAgICAgIGFib3J0ICgpOwotLSAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPCBjb3VudAotICAgICAgIHx8IG9mZnNldCArIGNvdW50ID4gc3oKLS0gICAgICB8fCAoc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50KSA+IChiZmRfc2l6ZV90eXBlKSBmaWxlc3opCi0rICAgICAgfHwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50ID4gZmlsZXN6KQotICAgICB7Ci0gICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uKTsKLSAgICAgICByZXR1cm4gRkFMU0U7Ci1AQCAtODM0LDcgKzgyOSw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW4KLSB7Ci0gI2lmZGVmIFVTRV9NTUFQCi0gICBiZmRfc2l6ZV90eXBlIHN6OwotLSAgZmlsZV9wdHIgZmlsZXN6OwotKyAgdWZpbGVfcHRyIGZpbGVzejsKLSAKLSAgIGlmIChjb3VudCA9PSAwKQotICAgICByZXR1cm4gVFJVRTsKLUBAIC04NjgsMTMgKzg2Myw4IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW4KLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotICAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotLSAgaWYgKGZpbGVzeiA8IDApCi0tICAgIHsKLS0gICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotLSAgICAgIGFib3J0ICgpOwotLSAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPiBzegotLSAgICAgIHx8IChzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgc3opID4gKGJmZF9zaXplX3R5cGUpIGZpbGVzegotKyAgICAgIHx8IHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCA+IGZpbGVzegotICAgICAgIHx8ICEgYmZkX2dldF9maWxlX3dpbmRvdyAoYWJmZCwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCwgY291bnQsIHcsCi0gCQkJCVRSVUUpKQotICAgICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV82LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzY0MjlhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV82LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBlYTlhYWZjNDFhNzY0ZTRlMmRiYjg4YTdiMDMxZTg4NmI0ODFiOTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTQ6NDM6NDkgKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gV2FybmluZyBmaXgKLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogV2FybmluZyBmaXguCi0JKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1ICM2Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDEyICsrKysrKysrKy0tLQotIGJmZC9saWJiZmQuYyAgfCAgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9saWJiZmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9saWJiZmQuYwotKysrIGdpdC9iZmQvbGliYmZkLmMKLUBAIC04MDYsNyArODA2LDcgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKgotICAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotICAgaWYgKG9mZnNldCArIGNvdW50IDwgY291bnQKLSAgICAgICB8fCBvZmZzZXQgKyBjb3VudCA+IHN6Ci0tICAgICAgfHwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50ID4gZmlsZXN6KQotKyAgICAgIHx8ICh1ZmlsZV9wdHIpIHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCA+IGZpbGVzeikKLSAgICAgewotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotQEAgLTg2NCw3ICs4NjQsNyBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luCi0gICAgIHN6ID0gc2VjdGlvbi0+c2l6ZTsKLSAgIGZpbGVzeiA9IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKTsKLSAgIGlmIChvZmZzZXQgKyBjb3VudCA+IHN6Ci0tICAgICAgfHwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50ID4gZmlsZXN6Ci0rICAgICAgfHwgKHVmaWxlX3B0cikgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50ID4gZmlsZXN6Ci0gICAgICAgfHwgISBiZmRfZ2V0X2ZpbGVfd2luZG93IChhYmZkLCBzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0LCBjb3VudCwgdywKLSAJCQkJVFJVRSkpCi0gICAgIHJldHVybiBGQUxTRTsKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsNSArMSwxMSBAQAotIDIwMTctMDYtMjcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotKyAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBXYXJuaW5nIGZpeC4KLSsgICAgICAgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cpOiBMaWtld2lzZS4KLSsKLSsyMDE3LTA2LTI3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSAJUFIgYmludXRpbHMvMjE2NjUKLSAJKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogRGVsZXRlIGFib3J0LgotIAlVc2UgdW5zaWduZWQgZmlsZSBwb2ludGVyIHR5cGUsIGFuZCByZW1vdmUgY2FzdC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV83LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYWU2M2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi1Gcm9tIDYwYTAyMDQyYmFjZjhkMjU4MTQ0MzAwODBhZGRhNjFlZDA4NmJjYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDMwIEp1biAyMDE3IDExOjAzOjM3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBmYWlsdXJlcyBpbiBNTUlYIGxpbmtlciB0ZXN0cyBpbnRyb2R1Y2VkIGJ5IGZpeCBmb3IgUFIKLSAyMTY2NS4KLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBvYmpkdW1wLmMgKGRpc2Fzc2VtYmxlX3NlY3Rpb24pOiBNb3ZlIGNoZWNrIGZvciBhbiBvdmVybGFyZ2UKLQlzZWN0aW9uIHRvIGp1c3QgYmVmb3JlIHRoZSBhbGxvY2F0aW9uIG9mIG1lbW9yeS4gIERvIG5vdCBjaGVjawotCXNlY3Rpb24gc2l6ZSBhZ2FpbnN0IGZpbGUgc2l6ZSwgYnV0IGluc3RlYWQgdXNlIGFuIGFyYml0cmFyeSAyR2IKLQlsaW1pdC4gIElzc3VlIGEgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBzZWN0aW9uIGlzIHRvbyBiaWcuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjNwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8ICA4ICsrKysrKysrCi0gYmludXRpbHMvb2JqZHVtcC5jIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL29iamR1bXAuYwotKysrIGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLUBAIC0yMDQ4LDcgKzIwNDgsNyBAQCBkaXNhc3NlbWJsZV9zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0aW9uCi0gICAgIHJldHVybjsKLSAKLSAgIGRhdGFzaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rpb24pOwotLSAgaWYgKGRhdGFzaXplID09IDAgfHwgZGF0YXNpemUgPj0gKGJmZF9zaXplX3R5cGUpIGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKSkKLSsgIGlmIChkYXRhc2l6ZSA9PSAwKQotICAgICByZXR1cm47Ci0gCi0gICBpZiAoc3RhcnRfYWRkcmVzcyA9PSAoYmZkX3ZtYSkgLTEKLUBAIC0yMTEyLDYgKzIxMTIsMjkgQEAgZGlzYXNzZW1ibGVfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlvbgotICAgICB9Ci0gICByZWxfcHBlbmQgPSByZWxfcHAgKyByZWxfY291bnQ7Ci0gCi0rICAvKiBQUiAyMTY2NTogQ2hlY2sgZm9yIG92ZXJsYXJnZSBkYXRhc2l6ZXMuCi0rICAgICBOb3RlIC0gd2UgdXNlZCB0byBjaGVjayBmb3IgImRhdGFzaXplID4gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpIiBidXQKLSsgICAgIHRoaXMgZmFpbHMgd2hlbiB1c2luZyBjb21wcmVzc2VkIHNlY3Rpb25zIG9yIGNvbXByZXNzZWQgZmlsZSBmb3JtYXRzCi0rICAgICAoZWcgTU1PLCB0ZWtoZXgpLgotKwotKyAgICAgVGhlIGNhbGwgdG8geG1hbGxvYyBiZWxvdyB3aWxsIGZhaWwgaWYgdG9vIG11Y2ggbWVtb3J5IGlzIHJlcXVlc3RlZCwKLSsgICAgIHdoaWNoIHdpbGwgY2F0Y2ggdGhlIHByb2JsZW0gaW4gdGhlIG5vcm1hbCB1c2UgY2FzZS4gIEJ1dCBpZiBhIG1lbW9yeQotKyAgICAgY2hlY2tlciBpcyBpbiB1c2UsIGVnIHZhbGdyaW5kIG9yIHNhbml0aXplLCB0aGVuIGFuIGV4Y2VwdGlvbiB3aWxsCi0rICAgICBiZSBzdGlsbCBnZW5lcmF0ZWQsIHNvIHdlIHRyeSB0byBjYXRjaCB0aGUgcHJvYmxlbSBmaXJzdC4KLSsKLSsgICAgIFVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbm8gc2ltcGxlIHdheSB0byBkZXRlcm1pbmUgaG93IG11Y2ggbWVtb3J5IGNhbgotKyAgICAgYmUgYWxsb2NhdGVkIGJ5IGNhbGxpbmcgeG1hbGxvYy4gIFNvIGluc3RlYWQgd2UgdXNlIGEgc2ltcGxlLCBhcmJpdHJhcnkKLSsgICAgIGxpbWl0IG9mIDJHYi4gIEhvcGVmdWxseSB0aGlzIHNob3VsZCBiZSBlbm91Z2ggZm9yIG1vc3QgdXNlcnMuICBJZgotKyAgICAgc29tZW9uZSBkb2VzIHN0YXJ0IHRyeWluZyB0byBkaXNhc3NlbWJsZSBzZWN0aW9ucyBsYXJnZXIgdGhlbiAyR2IgaW4KLSsgICAgIHNpemUgdGhleSB3aWxsIGRvdWJ0bGVzcyBjb21wbGFpbiBhbmQgd2UgY2FuIGluY3JlYXNlIHRoZSBsaW1pdC4gICovCi0rI2RlZmluZSBNQVhfWE1BTExPQyAoMTAyNCAqIDEwMjQgKiAxMDI0ICogMlVMKSAvKiAyR2IgKi8KLSsgIGlmIChkYXRhc2l6ZSA+IE1BWF9YTUFMTE9DKQotKyAgICB7Ci0rICAgICAgbm9uX2ZhdGFsIChfKCJSZWFkaW5nIHNlY3Rpb24gJXMgZmFpbGVkIGJlY2F1c2UgaXQgaXMgdG9vIGJpZyAoJSNseCkiKSwKLSsJCSBzZWN0aW9uLT5uYW1lLCAodW5zaWduZWQgbG9uZykgZGF0YXNpemUpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotICAgZGF0YSA9IChiZmRfYnl0ZSAqKSB4bWFsbG9jIChkYXRhc2l6ZSk7Ci0gCi0gICBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlY3Rpb24sIGRhdGEsIDAsIGRhdGFzaXplKTsKLUluZGV4OiBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTctMDYtMzAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci0rICAgICAgICogb2JqZHVtcC5jIChkaXNhc3NlbWJsZV9zZWN0aW9uKTogTW92ZSBjaGVjayBmb3IgYW4gb3ZlcmxhcmdlCi0rICAgICAgIHNlY3Rpb24gdG8ganVzdCBiZWZvcmUgdGhlIGFsbG9jYXRpb24gb2YgbWVtb3J5LiAgRG8gbm90IGNoZWNrCi0rICAgICAgIHNlY3Rpb24gc2l6ZSBhZ2FpbnN0IGZpbGUgc2l6ZSwgYnV0IGluc3RlYWQgdXNlIGFuIGFyYml0cmFyeSAyR2IKLSsgICAgICAgbGltaXQuICBJc3N1ZSBhIHdhcm5pbmcgbWVzc2FnZSBpZiB0aGUgc2VjdGlvbiBpcyB0b28gYmlnLgotKwotIDIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gIAotICAgICAgICBQUiBiaW51dGlscy8yMTY2NQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVkZDk3NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCwwIEBACi1Gcm9tIGJhZTc1MDFlODdhYjYxNDExNWQ5ZDMyMTNiNGRkMThkOTZlNjA0ZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU2F0LCAxIEp1bCAyMDE3IDIxOjU4OjEwICswOTMwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbgotCi1JdCdzIG5pY2VyIHRoYW4geG1hbGxvYyBmb2xsb3dlZCBieSBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMsIHNpbmNlCi14bWFsbG9jIGV4aXRzIG9uIGZhaWx1cmUgYW5kIG5lZWRzIGEgY2hlY2sgdGhhdCBpdHMgc2l6ZV90IGFyZyBkb2Vzbid0Ci1sb3NlIGhpZ2ggYml0cyB3aGVuIGNvbnZlcnRlZCBmcm9tIGJmZF9zaXplX3R5cGUuCi0KLQlQUiBiaW51dGlscy8yMTY2NQotCSogb2JqZHVtcC5jIChzdHJ0YWIpOiBNYWtlIHZhciBhIGJmZF9ieXRlKi4KLQkoZGlzYXNzZW1ibGVfc2VjdGlvbik6IERvbid0IGxpbWl0IG1hbGxvYyBzaXplLiAgSW5zdGVhZCwgdXNlCi0JYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uCi0JKHJlYWRfc2VjdGlvbl9zdGFicyk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4gIFJldHVybgotCWJmZF9ieXRlKi4KLQkoZmluZF9zdGFic19zZWN0aW9uKTogUmVtb3ZlIG5vdyB1bm5lY2Vzc2FyeSBjYXN0LgotCSogb2JqY29weS5jIChjb3B5X29iamVjdCk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4gIEZyZWUKLQljb250ZW50cyBvbiBlcnJvciByZXR1cm4uCi0JKiBubG1jb252LmMgKGNvcHlfc2VjdGlvbnMpOiBVc2UgYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjOAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8IDEzICsrKysrKysrKysrKysKLSBiaW51dGlscy9ubG1jb252LmMgfCAgNiArKy0tLS0KLSBiaW51dGlscy9vYmpjb3B5LmMgfCAgNSArKystLQotIGJpbnV0aWxzL29iamR1bXAuYyB8IDQ0ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDE2IEBACi0rMjAxNy0wNy0wMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxNjY1Ci0rCSogb2JqZHVtcC5jIChzdHJ0YWIpOiBNYWtlIHZhciBhIGJmZF9ieXRlKi4KLSsJKGRpc2Fzc2VtYmxlX3NlY3Rpb24pOiBEb24ndCBsaW1pdCBtYWxsb2Mgc2l6ZS4gIEluc3RlYWQsIHVzZQotKwliZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4KLSsJKHJlYWRfc2VjdGlvbl9zdGFicyk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4gIFJldHVybgotKwliZmRfYnl0ZSouCi0rCShmaW5kX3N0YWJzX3NlY3Rpb24pOiBSZW1vdmUgbm93IHVubmVjZXNzYXJ5IGNhc3QuCi0rCSogb2JqY29weS5jIChjb3B5X29iamVjdCk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4gIEZyZWUKLSsJY29udGVudHMgb24gZXJyb3IgcmV0dXJuLgotKwkqIG5sbWNvbnYuYyAoY29weV9zZWN0aW9ucyk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4KLSsKLSAyMDE3LTA2LTMwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTY2NQotSW5kZXg6IGdpdC9iaW51dGlscy9ubG1jb252LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9ubG1jb252LmMKLSsrKyBnaXQvYmludXRpbHMvbmxtY29udi5jCi1AQCAtMTIyNCw3ICsxMjI0LDcgQEAgY29weV9zZWN0aW9ucyAoYmZkICppbmJmZCwgYXNlY3Rpb24gKmlucwotICAgY29uc3QgY2hhciAqaW5uYW1lOwotICAgYXNlY3Rpb24gKm91dHNlYzsKLSAgIGJmZF9zaXplX3R5cGUgc2l6ZTsKLS0gIHZvaWQgKmNvbnRlbnRzOwotKyAgYmZkX2J5dGUgKmNvbnRlbnRzOwotICAgbG9uZyByZWxvY19zaXplOwotICAgYmZkX2J5dGUgYnVmWzRdOwotICAgYmZkX3NpemVfdHlwZSBhZGQ7Ci1AQCAtMTI0MCw5ICsxMjQwLDcgQEAgY29weV9zZWN0aW9ucyAoYmZkICppbmJmZCwgYXNlY3Rpb24gKmlucwotICAgICBjb250ZW50cyA9IE5VTEw7Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBjb250ZW50cyA9IHhtYWxsb2MgKHNpemUpOwotLSAgICAgIGlmICghIGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAoaW5iZmQsIGluc2VjLCBjb250ZW50cywKLS0JCQkJICAgICAgKGZpbGVfcHRyKSAwLCBzaXplKSkKLSsgICAgICBpZiAoIWJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uIChpbmJmZCwgaW5zZWMsICZjb250ZW50cykpCi0gCWJmZF9mYXRhbCAoYmZkX2dldF9maWxlbmFtZSAoaW5iZmQpKTsKLSAgICAgfQotIAotSW5kZXg6IGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9vYmpkdW1wLmMKLSsrKyBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi1AQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBsb25nIGR5bnN5bWNvdW50ID0gMDsKLSBzdGF0aWMgYmZkX2J5dGUgKnN0YWJzOwotIHN0YXRpYyBiZmRfc2l6ZV90eXBlIHN0YWJfc2l6ZTsKLSAKLS1zdGF0aWMgY2hhciAqc3RydGFiOwotK3N0YXRpYyBiZmRfYnl0ZSAqc3RydGFiOwotIHN0YXRpYyBiZmRfc2l6ZV90eXBlIHN0YWJzdHJfc2l6ZTsKLSAKLSBzdGF0aWMgYmZkX2Jvb2xlYW4gaXNfcmVsb2NhdGFibGUgPSBGQUxTRTsKLUBAIC0yMTEyLDI5ICsyMTEyLDYgQEAgZGlzYXNzZW1ibGVfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlvbgotICAgICB9Ci0gICByZWxfcHBlbmQgPSByZWxfcHAgKyByZWxfY291bnQ7Ci0gCi0tICAvKiBQUiAyMTY2NTogQ2hlY2sgZm9yIG92ZXJsYXJnZSBkYXRhc2l6ZXMuCi0tICAgICBOb3RlIC0gd2UgdXNlZCB0byBjaGVjayBmb3IgImRhdGFzaXplID4gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpIiBidXQKLS0gICAgIHRoaXMgZmFpbHMgd2hlbiB1c2luZyBjb21wcmVzc2VkIHNlY3Rpb25zIG9yIGNvbXByZXNzZWQgZmlsZSBmb3JtYXRzCi0tICAgICAoZWcgTU1PLCB0ZWtoZXgpLgotLQotLSAgICAgVGhlIGNhbGwgdG8geG1hbGxvYyBiZWxvdyB3aWxsIGZhaWwgaWYgdG9vIG11Y2ggbWVtb3J5IGlzIHJlcXVlc3RlZCwKLS0gICAgIHdoaWNoIHdpbGwgY2F0Y2ggdGhlIHByb2JsZW0gaW4gdGhlIG5vcm1hbCB1c2UgY2FzZS4gIEJ1dCBpZiBhIG1lbW9yeQotLSAgICAgY2hlY2tlciBpcyBpbiB1c2UsIGVnIHZhbGdyaW5kIG9yIHNhbml0aXplLCB0aGVuIGFuIGV4Y2VwdGlvbiB3aWxsCi0tICAgICBiZSBzdGlsbCBnZW5lcmF0ZWQsIHNvIHdlIHRyeSB0byBjYXRjaCB0aGUgcHJvYmxlbSBmaXJzdC4KLS0KLS0gICAgIFVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbm8gc2ltcGxlIHdheSB0byBkZXRlcm1pbmUgaG93IG11Y2ggbWVtb3J5IGNhbgotLSAgICAgYmUgYWxsb2NhdGVkIGJ5IGNhbGxpbmcgeG1hbGxvYy4gIFNvIGluc3RlYWQgd2UgdXNlIGEgc2ltcGxlLCBhcmJpdHJhcnkKLS0gICAgIGxpbWl0IG9mIDJHYi4gIEhvcGVmdWxseSB0aGlzIHNob3VsZCBiZSBlbm91Z2ggZm9yIG1vc3QgdXNlcnMuICBJZgotLSAgICAgc29tZW9uZSBkb2VzIHN0YXJ0IHRyeWluZyB0byBkaXNhc3NlbWJsZSBzZWN0aW9ucyBsYXJnZXIgdGhlbiAyR2IgaW4KLS0gICAgIHNpemUgdGhleSB3aWxsIGRvdWJ0bGVzcyBjb21wbGFpbiBhbmQgd2UgY2FuIGluY3JlYXNlIHRoZSBsaW1pdC4gICovCi0tI2RlZmluZSBNQVhfWE1BTExPQyAoMTAyNCAqIDEwMjQgKiAxMDI0ICogMlVMKSAvKiAyR2IgKi8KLS0gIGlmIChkYXRhc2l6ZSA+IE1BWF9YTUFMTE9DKQotLSAgICB7Ci0tICAgICAgbm9uX2ZhdGFsIChfKCJSZWFkaW5nIHNlY3Rpb24gJXMgZmFpbGVkIGJlY2F1c2UgaXQgaXMgdG9vIGJpZyAoJSNseCkiKSwKLS0JCSBzZWN0aW9uLT5uYW1lLCAodW5zaWduZWQgbG9uZykgZGF0YXNpemUpOwotLSAgICAgIHJldHVybjsKLS0gICAgfQotLQotICAgZGF0YSA9IChiZmRfYnl0ZSAqKSB4bWFsbG9jIChkYXRhc2l6ZSk7Ci0gCi0gICBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlY3Rpb24sIGRhdGEsIDAsIGRhdGFzaXplKTsKLUBAIC0yNjUyLDEyICsyNjI5LDExIEBAIGR1bXBfZHdhcmYgKGJmZCAqYWJmZCkKLSAvKiBSZWFkIEFCRkQncyBzdGFicyBzZWN0aW9uIFNUQUJTRUNUX05BTUUsIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvCi0gICAgaXQuICBSZXR1cm4gTlVMTCBvbiBmYWlsdXJlLiAgICovCi0gCi0tc3RhdGljIGNoYXIgKgotK3N0YXRpYyBiZmRfYnl0ZSAqCi0gcmVhZF9zZWN0aW9uX3N0YWJzIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKnNlY3RfbmFtZSwgYmZkX3NpemVfdHlwZSAqc2l6ZV9wdHIpCi0gewotICAgYXNlY3Rpb24gKnN0YWJzZWN0OwotLSAgYmZkX3NpemVfdHlwZSBzaXplOwotLSAgY2hhciAqY29udGVudHM7Ci0rICBiZmRfYnl0ZSAqY29udGVudHM7Ci0gCi0gICBzdGFic2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBzZWN0X25hbWUpOwotICAgaWYgKHN0YWJzZWN0ID09IE5VTEwpCi1AQCAtMjY2NiwxMCArMjY0Miw3IEBAIHJlYWRfc2VjdGlvbl9zdGFicyAoYmZkICphYmZkLCBjb25zdCBjaGEKLSAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLSAKLS0gIHNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChhYmZkLCBzdGFic2VjdCk7Ci0tICBjb250ZW50cyAgPSAoY2hhciAqKSB4bWFsbG9jIChzaXplKTsKLS0KLS0gIGlmICghIGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAoYWJmZCwgc3RhYnNlY3QsIGNvbnRlbnRzLCAwLCBzaXplKSkKLSsgIGlmICghYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKGFiZmQsIHN0YWJzZWN0LCAmY29udGVudHMpKQotICAgICB7Ci0gICAgICAgbm9uX2ZhdGFsIChfKCJyZWFkaW5nICVzIHNlY3Rpb24gb2YgJXMgZmFpbGVkOiAlcyIpLAotIAkJIHNlY3RfbmFtZSwgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksCi1AQCAtMjY3OSw3ICsyNjUyLDcgQEAgcmVhZF9zZWN0aW9uX3N0YWJzIChiZmQgKmFiZmQsIGNvbnN0IGNoYQotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAqc2l6ZV9wdHIgPSBzaXplOwotKyAgKnNpemVfcHRyID0gYmZkX3NlY3Rpb25fc2l6ZSAoYWJmZCwgc3RhYnNlY3QpOwotIAotICAgcmV0dXJuIGNvbnRlbnRzOwotIH0KLUBAIC0yODA2LDggKzI3NzksNyBAQCBmaW5kX3N0YWJzX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24KLSAKLSAgICAgICBpZiAoc3RydGFiKQotIAl7Ci0tCSAgc3RhYnMgPSAoYmZkX2J5dGUgKikgcmVhZF9zZWN0aW9uX3N0YWJzIChhYmZkLCBzZWN0aW9uLT5uYW1lLAotLQkJCQkJCSAgICZzdGFiX3NpemUpOwotKwkgIHN0YWJzID0gcmVhZF9zZWN0aW9uX3N0YWJzIChhYmZkLCBzZWN0aW9uLT5uYW1lLCAmc3RhYl9zaXplKTsKLSAJICBpZiAoc3RhYnMpCi0gCSAgICBwcmludF9zZWN0aW9uX3N0YWJzIChhYmZkLCBzZWN0aW9uLT5uYW1lLCAmc291Z2h0LT5zdHJpbmdfb2Zmc2V0KTsKLSAJfQotSW5kZXg6IGdpdC9iaW51dGlscy9vYmpjb3B5LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9vYmpjb3B5LmMKLSsrKyBnaXQvYmludXRpbHMvb2JqY29weS5jCi1AQCAtMjE4NiwxNCArMjE4NiwxNSBAQCBjb3B5X29iamVjdCAoYmZkICppYmZkLCBiZmQgKm9iZmQsIGNvbnN0Ci0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgfQotIAotLQkgIGJmZF9ieXRlICogY29udGVudHMgPSB4bWFsbG9jIChzaXplKTsKLS0JICBpZiAoYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChpYmZkLCBzZWMsIGNvbnRlbnRzLCAwLCBzaXplKSkKLSsJICBiZmRfYnl0ZSAqY29udGVudHM7Ci0rICAgICAgICAgIGlmIChiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbiAoaWJmZCwgc2VjLCAmY29udGVudHMpKQotIAkgICAgewotIAkgICAgICBpZiAoZndyaXRlIChjb250ZW50cywgMSwgc2l6ZSwgZikgIT0gc2l6ZSkKLSAJCXsKLSAJCSAgbm9uX2ZhdGFsIChfKCJlcnJvciB3cml0aW5nIHNlY3Rpb24gY29udGVudHMgdG8gJXMgKGVycm9yOiAlcykiKSwKLSAJCQkgICAgIHBkdW1wLT5maWxlbmFtZSwKLSAJCQkgICAgIHN0cmVycm9yIChlcnJubykpOwotKyAgICAgICAgICAgICAgICAgIGZyZWUgKGNvbnRlbnRzKTsKLSAJCSAgcmV0dXJuIEZBTFNFOwotIAkJfQotIAkgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzNTNkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2MSArMCwwIEBACi1Gcm9tIDhlMmY1NGJjZWU3ZTNlODMxNWQ0YTM5YTMwMmVhZjhlNDM4OWUwN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDMwIE1heSAyMDE3IDA2OjM0OjA1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBiZmRfZ2V0X2ZpbGVfc2l6ZSB0byBnZXQgYXJjaGl2ZSBlbGVtZW50IHNpemUKLQotV2UgY2FuJ3QgdXNlIHN0YXQoKSB0byBnZXQgYXJjaGl2ZSBlbGVtZW50IHNpemUuICBBZGQgYmZkX2dldF9maWxlX3NpemUKLXRvIGdldCBzaXplIGZvciBib3RoIG5vcm1hbCBmaWxlcyBhbmQgYXJjaGl2ZSBlbGVtZW50cy4KLQotYmZkLwotCi0JUFIgYmludXRpbHMvMjE1MTkKLQkqIGJmZGlvLmMgKGJmZF9nZXRfZmlsZV9zaXplKTogTmV3IGZ1bmN0aW9uLgotCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlZC4KLQotYmludXRpbHMvCi0KLQlQUiBiaW51dGlscy8yMTUxOQotCSogb2JqZHVtcC5jIChkdW1wX3JlbG9jc19pbl9zZWN0aW9uKTogUmVwbGFjZSBnZXRfZmlsZV9zaXplCi0Jd2l0aCBiZmRfZ2V0X2ZpbGVfc2l6ZSB0byBnZXQgYXJjaGl2ZSBlbGVtZW50IHNpemUuCi0JKiB0ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwICh0ZXN0X29iamR1bXBfZik6IE5ldwotCXByb2MuCi0JKHRlc3Rfb2JqZHVtcF9oKTogTGlrZXdpc2UuCi0JKHRlc3Rfb2JqZHVtcF90KTogTGlrZXdpc2UuCi0JKHRlc3Rfb2JqZHVtcF9yKTogTGlrZXdpc2UuCi0JKHRlc3Rfb2JqZHVtcF9zKTogTGlrZXdpc2UuCi0JQWRkIG9iamR1bXAgdGVzdHMgb24gYXJjaGl2ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCi0gYmZkL2JmZC1pbjIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gYmZkL2JmZGlvLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMyArKysrCi0gYmludXRpbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArKwotIGJpbnV0aWxzL29iamR1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KLSBiaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwIHwgMTc4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDE3MCBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvYmZkLWluMi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2JmZC1pbjIuaAotKysrIGdpdC9iZmQvYmZkLWluMi5oCi1AQCAtMTI0MSw2ICsxMjQxLDggQEAgbG9uZyBiZmRfZ2V0X210aW1lIChiZmQgKmFiZmQpOwotIAotIGZpbGVfcHRyIGJmZF9nZXRfc2l6ZSAoYmZkICphYmZkKTsKLSAKLStmaWxlX3B0ciBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYmZkICphYmZkKTsKLSsKLSB2b2lkICpiZmRfbW1hcCAoYmZkICphYmZkLCB2b2lkICphZGRyLCBiZmRfc2l6ZV90eXBlIGxlbiwKLSAgICAgaW50IHByb3QsIGludCBmbGFncywgZmlsZV9wdHIgb2Zmc2V0LAotICAgICB2b2lkICoqbWFwX2FkZHIsIGJmZF9zaXplX3R5cGUgKm1hcF9sZW4pOwotSW5kZXg6IGdpdC9iZmQvYmZkaW8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9iZmRpby5jCi0rKysgZ2l0L2JmZC9iZmRpby5jCi1AQCAtNDM0LDYgKzQzNCwyOSBAQCBiZmRfZ2V0X3NpemUgKGJmZCAqYWJmZCkKLSAgIHJldHVybiBidWYuc3Rfc2l6ZTsKLSB9Ci0gCi0rLyoKLStGVU5DVElPTgotKwliZmRfZ2V0X2ZpbGVfc2l6ZQotKwotK1NZTk9QU0lTCi0rCWZpbGVfcHRyIGJmZF9nZXRfZmlsZV9zaXplIChiZmQgKmFiZmQpOwotKwotK0RFU0NSSVBUSU9OCi0rCVJldHVybiB0aGUgZmlsZSBzaXplIChhcyByZWFkIGZyb20gZmlsZSBzeXN0ZW0pIGZvciB0aGUgZmlsZQotKwlhc3NvY2lhdGVkIHdpdGggQkZEIEB2YXJ7YWJmZH0uICBJdCBzdXBwb3J0cyBib3RoIG5vcm1hbCBmaWxlcwotKwlhbmQgYXJjaGl2ZSBlbGVtZW50cy4KLSsKLSsqLwotKwotK2ZpbGVfcHRyCi0rYmZkX2dldF9maWxlX3NpemUgKGJmZCAqYWJmZCkKLSt7Ci0rICBpZiAoYWJmZC0+bXlfYXJjaGl2ZSAhPSBOVUxMCi0rICAgICAgJiYgIWJmZF9pc190aGluX2FyY2hpdmUgKGFiZmQtPm15X2FyY2hpdmUpKQotKyAgICByZXR1cm4gYXJlbHRfc2l6ZSAoYWJmZCk7Ci0rCi0rICByZXR1cm4gYmZkX2dldF9zaXplIChhYmZkKTsKLSt9Ci0gCi0gLyoKLSBGVU5DVElPTgotSW5kZXg6IGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9vYmpkdW1wLmMKLSsrKyBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi1AQCAtMzMxMCw3ICszMzEwLDcgQEAgZHVtcF9yZWxvY3NfaW5fc2VjdGlvbiAoYmZkICphYmZkLAotICAgICB9Ci0gCi0gICBpZiAoKGJmZF9nZXRfZmlsZV9mbGFncyAoYWJmZCkgJiAoQkZEX0lOX01FTU9SWSB8IEJGRF9MSU5LRVJfQ1JFQVRFRCkpID09IDAKLS0gICAgICAmJiByZWxzaXplID4gZ2V0X2ZpbGVfc2l6ZSAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpKQotKyAgICAgICYmIHJlbHNpemUgPiBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0gICAgIHsKLSAgICAgICBwcmludGYgKCIgKHRvbyBtYW55OiAweCV4KVxuIiwgc2VjdGlvbi0+cmVsb2NfY291bnQpOwotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9maWxlX3RydW5jYXRlZCk7Ci1JbmRleDogZ2l0L2JpbnV0aWxzL3Rlc3RzdWl0ZS9iaW51dGlscy1hbGwvb2JqZHVtcC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwCi0rKysgZ2l0L2JpbnV0aWxzL3Rlc3RzdWl0ZS9iaW51dGlscy1hbGwvb2JqZHVtcC5leHAKLUBAIC02NCw5NiArNjQsMTY4IEBAIGlmIFtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0gaWYgeyFbYmludXRpbHNfYXNzZW1ibGUgJHNyY2Rpci8kc3ViZGlyL2JpbnRlc3QucyB0bXBkaXIvYmludGVzdC5vXX0gdGhlbiB7Ci0gICAgIHJldHVybgotIH0KLStpZiB7IVtiaW51dGlsc19hc3NlbWJsZSAkc3JjZGlyLyRzdWJkaXIvYmludGVzdC5zIHRtcGRpci9iaW50ZXN0Mi5vXX0gdGhlbiB7Ci0rICAgIHJldHVybgotK30KLSBpZiBbaXNfcmVtb3RlIGhvc3RdIHsKLSAgICAgc2V0IHRlc3RmaWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCB0bXBkaXIvYmludGVzdC5vXQotKyAgICBzZXQgdGVzdGZpbGUyIFtyZW1vdGVfZG93bmxvYWQgaG9zdCB0bXBkaXIvYmludGVzdDIub10KLSB9IGVsc2UgewotICAgICBzZXQgdGVzdGZpbGUgdG1wZGlyL2JpbnRlc3QubwotKyAgICBzZXQgdGVzdGZpbGUyIHRtcGRpci9iaW50ZXN0Mi5vCi0rfQotKwotK2lmIHsgIVtpc3RhcmdldCAiYWxwaGEtKi0qIl0gfHwgW2lzX2VsZl9mb3JtYXRdIH0gdGhlbiB7Ci0rICAgIHJlbW90ZV9maWxlIGhvc3QgZmlsZSBkZWxldGUgdG1wZGlyL2JpbnRlc3QuYQotKyAgICBzZXQgZ290IFtiaW51dGlsc19ydW4gJEFSICJyYyB0bXBkaXIvYmludGVzdC5hICR0ZXN0ZmlsZTIiXQotKyAgICBpZiAhW3N0cmluZyBtYXRjaCAiIiAkZ290XSB0aGVuIHsKLSsJZmFpbCAiYmludGVzdC5hIgotKwlyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSB0bXBkaXIvYmludGVzdC5hCi0rICAgIH0gZWxzZSB7Ci0rCWlmIFtpc19yZW1vdGUgaG9zdF0gewotKwkgICAgc2V0IHRlc3RhcmNoaXZlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCB0bXBkaXIvYmludGVzdC5hXQotKwl9IGVsc2UgewotKwkgICAgc2V0IHRlc3RhcmNoaXZlIHRtcGRpci9iaW50ZXN0LmEKLSsJfQotKyAgICB9Ci0rICAgIHJlbW90ZV9maWxlIGhvc3QgZGVsZXRlIHRtcGRpci9iaW50ZXN0Mi5vCi0gfQotIAotICMgVGVzdCBvYmpkdW1wIC1mCi0gCi0tc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1mICR0ZXN0ZmlsZSJdCi0rcHJvYyB0ZXN0X29iamR1bXBfZiB7IHRlc3RmaWxlIGR1bXBmaWxlIH0gewotKyAgICBnbG9iYWwgT0JKRFVNUAotKyAgICBnbG9iYWwgT0JKRFVNUEZMQUdTCi0rICAgIGdsb2JhbCBjcHVzX3JlZ2V4Ci0gCi0tc2V0IHdhbnQgIiR0ZXN0ZmlsZTpcWyAJXF0qZmlsZSBmb3JtYXQuKmFyY2hpdGVjdHVyZTpcWyAJXF0qJHtjcHVzX3JlZ2V4fS4qSEFTX1JFTE9DLipIQVNfU1lNUyIKLSsgICAgc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1mICR0ZXN0ZmlsZSJdCi0gCi0taWYgIVtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0tICAgIGZhaWwgIm9iamR1bXAgLWYiCi0tfSBlbHNlIHsKLS0gICAgcGFzcyAib2JqZHVtcCAtZiIKLSsgICAgc2V0IHdhbnQgIiRkdW1wZmlsZTpcWyAJXF0qZmlsZSBmb3JtYXQuKmFyY2hpdGVjdHVyZTpcWyAJXF0qJHtjcHVzX3JlZ2V4fS4qSEFTX1JFTE9DLipIQVNfU1lNUyIKLSsKLSsgICAgaWYgIVtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0rCWZhaWwgIm9iamR1bXAgLWYgKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsgICAgfSBlbHNlIHsKLSsJcGFzcyAib2JqZHVtcCAtZiAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotKyAgICB9Ci0rfQotKwotK3Rlc3Rfb2JqZHVtcF9mICR0ZXN0ZmlsZSAkdGVzdGZpbGUKLStpZiB7IFsgcmVtb3RlX2ZpbGUgaG9zdCBleGlzdHMgJHRlc3RhcmNoaXZlIF0gfSB0aGVuIHsKLSsgICAgdGVzdF9vYmpkdW1wX2YgJHRlc3RhcmNoaXZlIGJpbnRlc3QyLm8KLSB9Ci0gCi0gIyBUZXN0IG9iamR1bXAgLWgKLSAKLS1zZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLWggJHRlc3RmaWxlIl0KLStwcm9jIHRlc3Rfb2JqZHVtcF9oIHsgdGVzdGZpbGUgZHVtcGZpbGUgfSB7Ci0rICAgIGdsb2JhbCBPQkpEVU1QCi0rICAgIGdsb2JhbCBPQkpEVU1QRkxBR1MKLSAKLS1zZXQgd2FudCAiJHRlc3RmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qU2VjdGlvbnMuKlxbMC05XF0rXFsgCVxdK1xbXiAJXF0qKHRleHR8VEVYVHxQfFxcXCRDT0RFXFxcJClcW14gCVxdKlxbIAlcXSooXFswLTlhLWZBLUZcXSspLipcWzAtOVxdK1xbIAlcXStcW14gCVxdKihcXC5kYXRhfERBVEF8RF8xKVxbXiAJXF0qXFsgCVxdKihcWzAtOWEtZkEtRlxdKykiCi0rICAgIHNldCBnb3QgW2JpbnV0aWxzX3J1biAkT0JKRFVNUCAiJE9CSkRVTVBGTEFHUyAtaCAkdGVzdGZpbGUiXQotIAotLWlmICFbcmVnZXhwICR3YW50ICRnb3QgYWxsIHRleHRfbmFtZSB0ZXh0X3NpemUgZGF0YV9uYW1lIGRhdGFfc2l6ZV0gdGhlbiB7Ci0tICAgIGZhaWwgIm9iamR1bXAgLWgiCi0tfSBlbHNlIHsKLS0gICAgdmVyYm9zZSAidGV4dCBuYW1lIGlzICR0ZXh0X25hbWUgc2l6ZSBpcyAkdGV4dF9zaXplIgotLSAgICB2ZXJib3NlICJkYXRhIG5hbWUgaXMgJGRhdGFfbmFtZSBzaXplIGlzICRkYXRhX3NpemUiCi0tICAgIHNldCBldHMgOAotLSAgICBzZXQgZWRzIDQKLS0gICAgIyBUaGUgW3RpXWM0eCB0YXJnZXQgaGFzIHRoZSBwcm9wZXJ0eSBzaXplb2YoY2hhcik9c2l6ZW9mKGxvbmcpPTEKLS0gICAgaWYgW2lzdGFyZ2V0ICpjNHgqLSotKl0gdGhlbiB7Ci0tICAgICAgICBzZXQgZXRzIDIKLS0gICAgICAgIHNldCBlZHMgMQotLSAgICB9Ci0tICAgICMgYzU0eCBzZWN0aW9uIHNpemVzIGFyZSBpbiBieXRlcywgbm90IG9jdGV0czsgYWRqdXN0IGFjY29yZGluZ2x5Ci0tICAgIGlmIFtpc3RhcmdldCAqYzU0eCotKi0qXSB0aGVuIHsKLS0Jc2V0IGV0cyA0Ci0tCXNldCBlZHMgMgotLSAgICB9Ci0tICAgIGlmIHtbZXhwciAiMHgkdGV4dF9zaXplIl0gPCAkZXRzIHx8IFtleHByICIweCRkYXRhX3NpemUiXSA8ICRlZHN9IHRoZW4gewotLQlzZW5kX2xvZyAic2l6ZXMgdG9vIHNtYWxsXG4iCi0tCWZhaWwgIm9iamR1bXAgLWgiCi0rICAgIHNldCB3YW50ICIkZHVtcGZpbGU6XFsgCVxdKmZpbGUgZm9ybWF0LipTZWN0aW9ucy4qXFswLTlcXStcWyAJXF0rXFteIAlcXSoodGV4dHxURVhUfFB8XFxcJENPREVcXFwkKVxbXiAJXF0qXFsgCVxdKihcWzAtOWEtZkEtRlxdKykuKlxbMC05XF0rXFsgCVxdK1xbXiAJXF0qKFxcLmRhdGF8REFUQXxEXzEpXFteIAlcXSpcWyAJXF0qKFxbMC05YS1mQS1GXF0rKSIKLSsKLSsgICAgaWYgIVtyZWdleHAgJHdhbnQgJGdvdCBhbGwgdGV4dF9uYW1lIHRleHRfc2l6ZSBkYXRhX25hbWUgZGF0YV9zaXplXSB0aGVuIHsKLSsJZmFpbCAib2JqZHVtcCAtaCAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotICAgICB9IGVsc2UgewotLQlwYXNzICJvYmpkdW1wIC1oIgotKwl2ZXJib3NlICJ0ZXh0IG5hbWUgaXMgJHRleHRfbmFtZSBzaXplIGlzICR0ZXh0X3NpemUiCi0rCXZlcmJvc2UgImRhdGEgbmFtZSBpcyAkZGF0YV9uYW1lIHNpemUgaXMgJGRhdGFfc2l6ZSIKLSsJc2V0IGV0cyA4Ci0rCXNldCBlZHMgNAotKwkjIFRoZSBbdGldYzR4IHRhcmdldCBoYXMgdGhlIHByb3BlcnR5IHNpemVvZihjaGFyKT1zaXplb2YobG9uZyk9MQotKwlpZiBbaXN0YXJnZXQgKmM0eCotKi0qXSB0aGVuIHsKLSsgICAgICAgICAgICBzZXQgZXRzIDIKLSsgICAgICAgICAgICBzZXQgZWRzIDEKLSsJfQotKwkjIGM1NHggc2VjdGlvbiBzaXplcyBhcmUgaW4gYnl0ZXMsIG5vdCBvY3RldHM7IGFkanVzdCBhY2NvcmRpbmdseQotKwlpZiBbaXN0YXJnZXQgKmM1NHgqLSotKl0gdGhlbiB7Ci0rCSAgICBzZXQgZXRzIDQKLSsJICAgIHNldCBlZHMgMgotKyAgICAgICAgfQotKwlpZiB7W2V4cHIgIjB4JHRleHRfc2l6ZSJdIDwgJGV0cyB8fCBbZXhwciAiMHgkZGF0YV9zaXplIl0gPCAkZWRzfSB0aGVuIHsKLSsJICAgIHNlbmRfbG9nICJzaXplcyB0b28gc21hbGxcbiIKLSsJICAgIGZhaWwgIm9iamR1bXAgLWggKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsJfSBlbHNlIHsKLSsJICAgIHBhc3MgIm9iamR1bXAgLWggKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsJfQotICAgICB9Ci0gfQotIAotK3Rlc3Rfb2JqZHVtcF9oICR0ZXN0ZmlsZSAkdGVzdGZpbGUKLStpZiB7IFsgcmVtb3RlX2ZpbGUgaG9zdCBleGlzdHMgJHRlc3RhcmNoaXZlIF0gfSB0aGVuIHsKLSsgICAgdGVzdF9vYmpkdW1wX2ggJHRlc3RhcmNoaXZlIGJpbnRlc3QyLm8KLSt9Ci0rCi0gIyBUZXN0IG9iamR1bXAgLXQKLSAKLS1zZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXQgJHRlc3RmaWxlIl0KLStwcm9jIHRlc3Rfb2JqZHVtcF90IHsgdGVzdGZpbGV9IHsKLSsgICAgZ2xvYmFsIE9CSkRVTVAKLSsgICAgZ2xvYmFsIE9CSkRVTVBGTEFHUwotKwotKyAgICBzZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXQgJHRlc3RmaWxlIl0KLSsKLSsgICAgaWYgW2luZm8gZXhpc3RzIHZhcnNdIHRoZW4geyB1bnNldCB2YXJzIH0KLSsgICAgd2hpbGUge1tyZWdleHAgIihcW2EtelxdKl9zeW1ib2wpKC4qKSIgJGdvdCBhbGwgc3ltYm9sIHJlc3RdfSB7Ci0rCXNldCB2YXJzKCRzeW1ib2wpIDEKLSsJc2V0IGdvdCAkcmVzdAotKyAgICB9Ci0gCi0taWYgW2luZm8gZXhpc3RzIHZhcnNdIHRoZW4geyB1bnNldCB2YXJzIH0KLS13aGlsZSB7W3JlZ2V4cCAiKFxbYS16XF0qX3N5bWJvbCkoLiopIiAkZ290IGFsbCBzeW1ib2wgcmVzdF19IHsKLS0gICAgc2V0IHZhcnMoJHN5bWJvbCkgMQotLSAgICBzZXQgZ290ICRyZXN0Ci0rICAgIGlmIHshW2luZm8gZXhpc3RzIHZhcnModGV4dF9zeW1ib2wpXSBcCi0rCSB8fCAhW2luZm8gZXhpc3RzIHZhcnMoZGF0YV9zeW1ib2wpXSBcCi0rCSB8fCAhW2luZm8gZXhpc3RzIHZhcnMoY29tbW9uX3N5bWJvbCldIFwKLSsJIHx8ICFbaW5mbyBleGlzdHMgdmFycyhleHRlcm5hbF9zeW1ib2wpXX0gdGhlbiB7Ci0rCWZhaWwgIm9iamR1bXAgLXQgKCR0ZXN0ZmlsZSkiCi0rICAgIH0gZWxzZSB7Ci0rCXBhc3MgIm9iamR1bXAgLXQgKCR0ZXN0ZmlsZSkiCi0rICAgIH0KLSB9Ci0gCi0taWYgeyFbaW5mbyBleGlzdHMgdmFycyh0ZXh0X3N5bWJvbCldIFwKLS0gICAgIHx8ICFbaW5mbyBleGlzdHMgdmFycyhkYXRhX3N5bWJvbCldIFwKLS0gICAgIHx8ICFbaW5mbyBleGlzdHMgdmFycyhjb21tb25fc3ltYm9sKV0gXAotLSAgICAgfHwgIVtpbmZvIGV4aXN0cyB2YXJzKGV4dGVybmFsX3N5bWJvbCldfSB0aGVuIHsKLS0gICAgZmFpbCAib2JqZHVtcCAtdCIKLS19IGVsc2UgewotLSAgICBwYXNzICJvYmpkdW1wIC10IgotK3Rlc3Rfb2JqZHVtcF90ICR0ZXN0ZmlsZQotK2lmIHsgWyByZW1vdGVfZmlsZSBob3N0IGV4aXN0cyAkdGVzdGFyY2hpdmUgXSB9IHRoZW4gewotKyAgICB0ZXN0X29iamR1bXBfdCAkdGVzdGFyY2hpdmUKLSB9Ci0gCi0gIyBUZXN0IG9iamR1bXAgLXIKLSAKLS1zZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXIgJHRlc3RmaWxlIl0KLStwcm9jIHRlc3Rfb2JqZHVtcF9yIHsgdGVzdGZpbGUgZHVtcGZpbGUgfSB7Ci0rICAgIGdsb2JhbCBPQkpEVU1QCi0rICAgIGdsb2JhbCBPQkpEVU1QRkxBR1MKLSAKLS1zZXQgd2FudCAiJHRlc3RmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qUkVMT0NBVElPTiBSRUNPUkRTIEZPUiBcXFxbXFteXF1cXSoodGV4dHxURVhUfFB8XFxcJENPREVcXFwkKVxbXlxdXF0qXFxcXS4qZXh0ZXJuYWxfc3ltYm9sIgotKyAgICBzZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXIgJHRlc3RmaWxlIl0KLSAKLS1pZiBbcmVnZXhwICR3YW50ICRnb3RdIHRoZW4gewotLSAgICBwYXNzICJvYmpkdW1wIC1yIgotLX0gZWxzZSB7Ci0tICAgIGZhaWwgIm9iamR1bXAgLXIiCi0rICAgIHNldCB3YW50ICIkZHVtcGZpbGU6XFsgCVxdKmZpbGUgZm9ybWF0LipSRUxPQ0FUSU9OIFJFQ09SRFMgRk9SIFxcXFtcW15cXVxdKih0ZXh0fFRFWFR8UHxcXFwkQ09ERVxcXCQpXFteXF1cXSpcXFxdLipleHRlcm5hbF9zeW1ib2wiCi0rCi0rICAgIGlmIFtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0rCXBhc3MgIm9iamR1bXAgLXIgKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsgICAgfSBlbHNlIHsKLSsJZmFpbCAib2JqZHVtcCAtciAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotKyAgICB9Ci0rfQotKwotK3Rlc3Rfb2JqZHVtcF9yICR0ZXN0ZmlsZSAkdGVzdGZpbGUKLStpZiB7IFsgcmVtb3RlX2ZpbGUgaG9zdCBleGlzdHMgJHRlc3RhcmNoaXZlIF0gfSB0aGVuIHsKLSsgICAgdGVzdF9vYmpkdW1wX3IgJHRlc3RhcmNoaXZlIGJpbnRlc3QyLm8KLSB9Ci0gCi0gIyBUZXN0IG9iamR1bXAgLXMKLSAKLS1zZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXMgJHRlc3RmaWxlIl0KLStwcm9jIHRlc3Rfb2JqZHVtcF9zIHsgdGVzdGZpbGUgZHVtcGZpbGUgfSB7Ci0rICAgIGdsb2JhbCBPQkpEVU1QCi0rICAgIGdsb2JhbCBPQkpEVU1QRkxBR1MKLSAKLS1zZXQgd2FudCAiJHRlc3RmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qQ29udGVudHMuKih0ZXh0fFRFWFR8UHxcXFwkQ09ERVxcXCQpXFteMC05XF0qXFsgCVxdKlxbMC05YS1mQS1GXF0qXFsgCVxdKigwMDAwMDAwMXwwMTAwMDAwMHwwMDAwMDEwMCkuKkNvbnRlbnRzLiooZGF0YXxEQVRBfERfMSlcW14wLTlcXSpcWyAJXF0qXFswLTlhLWZBLUZcXSpcWyAJXF0qKDAwMDAwMDAyfDAyMDAwMDAwfDAwMDAwMjAwKSIKLSsgICAgc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1zICR0ZXN0ZmlsZSJdCi0gCi0taWYgW3JlZ2V4cCAkd2FudCAkZ290XSB0aGVuIHsKLS0gICAgcGFzcyAib2JqZHVtcCAtcyIKLS19IGVsc2UgewotLSAgICBmYWlsICJvYmpkdW1wIC1zIgotKyAgICBzZXQgd2FudCAiJGR1bXBmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qQ29udGVudHMuKih0ZXh0fFRFWFR8UHxcXFwkQ09ERVxcXCQpXFteMC05XF0qXFsgCVxdKlxbMC05YS1mQS1GXF0qXFsgCVxdKigwMDAwMDAwMXwwMTAwMDAwMHwwMDAwMDEwMCkuKkNvbnRlbnRzLiooZGF0YXxEQVRBfERfMSlcW14wLTlcXSpcWyAJXF0qXFswLTlhLWZBLUZcXSpcWyAJXF0qKDAwMDAwMDAyfDAyMDAwMDAwfDAwMDAwMjAwKSIKLSsKLSsgICAgaWYgW3JlZ2V4cCAkd2FudCAkZ290XSB0aGVuIHsKLSsJcGFzcyAib2JqZHVtcCAtcyAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotKyAgICB9IGVsc2UgewotKwlmYWlsICJvYmpkdW1wIC1zICgkdGVzdGZpbGUsICRkdW1wZmlsZSkiCi0rICAgIH0KLSt9Ci0rCi0rdGVzdF9vYmpkdW1wX3MgJHRlc3RmaWxlICR0ZXN0ZmlsZQotK2lmIHsgWyByZW1vdGVfZmlsZSBob3N0IGV4aXN0cyAkdGVzdGFyY2hpdmUgXSB9IHRoZW4gewotKyAgICB0ZXN0X29iamR1bXBfcyAkdGVzdGFyY2hpdmUgYmludGVzdDIubwotIH0KLSAKLSAjIFRlc3Qgb2JqZHVtcCAtcyBvbiBhIGZpbGUgdGhhdCBjb250YWlucyBhIGNvbXByZXNzZWQgLmRlYnVnIHNlY3Rpb24KLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0wNS0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTUxOQotKyAgICAgICAqIGJmZGlvLmMgKGJmZF9nZXRfZmlsZV9zaXplKTogTmV3IGZ1bmN0aW9uLgotKyAgICAgICAqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZWQuCi0rCi0gMjAxNy0wNi0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTYgQEAKLSsyMDE3LTA1LTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTE5Ci0rICAgICAgICogb2JqZHVtcC5jIChkdW1wX3JlbG9jc19pbl9zZWN0aW9uKTogUmVwbGFjZSBnZXRfZmlsZV9zaXplCi0rICAgICAgIHdpdGggYmZkX2dldF9maWxlX3NpemUgdG8gZ2V0IGFyY2hpdmUgZWxlbWVudCBzaXplLgotKyAgICAgICAqIHRlc3RzdWl0ZS9iaW51dGlscy1hbGwvb2JqZHVtcC5leHAgKHRlc3Rfb2JqZHVtcF9mKTogTmV3Ci0rICAgICAgIHByb2MuCi0rICAgICAgICh0ZXN0X29iamR1bXBfaCk6IExpa2V3aXNlLgotKyAgICAgICAodGVzdF9vYmpkdW1wX3QpOiBMaWtld2lzZS4KLSsgICAgICAgKHRlc3Rfb2JqZHVtcF9yKTogTGlrZXdpc2UuCi0rICAgICAgICh0ZXN0X29iamR1bXBfcyk6IExpa2V3aXNlLgotKyAgICAgICBBZGQgb2JqZHVtcCB0ZXN0cyBvbiBhcmNoaXZlLgotKwotIDIwMTctMDctMDEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTY2NQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTE0MzdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLXJlcXVpcmUgYmludXRpbHMuaW5jCi1yZXF1aXJlIGJpbnV0aWxzLSR7UFZ9LmluYwotCi1ERVBFTkRTICs9ICJmbGV4IGJpc29uIHpsaWIiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXN5c3Jvb3Q9LyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQxX2xpYmM9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDJfbGliYz15ZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZW5hYmxlLXRhcmdldHM9YWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtNjQtYml0LWJmZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2Vycm9yIgotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgSW5zdGFsbCB0aGUgbGliaWJlcnR5IGhlYWRlcgotCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvYW5zaWRlY2wuaCAke0R9JHtpbmNsdWRlZGlyfQotCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9saWJpYmVydHkuaCAke0R9JHtpbmNsdWRlZGlyfQotCi0JIyBXZSBvbmx5IHdhbnQgbGliaWJlcnR5LCBsaWJiZmQgYW5kIGxpYm9wY29kZXMKLQlybSAtcmYgJHtEfSR7YmluZGlyfQotCXJtIC1yZiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30KLQlybSAtcmYgJHtEfSR7cHJlZml4fS9saWIvbGRzY3JpcHRzCi0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvaW5mbwotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2xvY2FsZQotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL21hbgotCXJtZGlyICR7RH0ke3ByZWZpeH0vc2hhcmUgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9L2djYy1saWIgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQvZ2NjLWxpYiB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn0gfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQgfHwgOgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYTk3NDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMjkuMS5iYgpAQCAtMCwwICsxLDQ5IEBACityZXF1aXJlIGJpbnV0aWxzLmluYworcmVxdWlyZSBiaW51dGlscy0ke1BWfS5pbmMKKworREVQRU5EUyArPSAiZmxleCBiaXNvbiB6bGliIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zeXNyb290PS8gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWVuYWJsZS10YXJnZXRzPWFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXdlcnJvciIKKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIEluc3RhbGwgdGhlIGxpYmliZXJ0eSBoZWFkZXIKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KKwlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KKworCSMgV2Ugb25seSB3YW50IGxpYmliZXJ0eSwgbGliYmZkIGFuZCBsaWJvcGNvZGVzCisJcm0gLXJmICR7RH0ke2JpbmRpcn0KKwlybSAtcmYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9CisJcm0gLXJmICR7RH0ke3ByZWZpeH0vbGliL2xkc2NyaXB0cworCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2luZm8KKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9tYW4KKwlybWRpciAke0R9JHtwcmVmaXh9L3NoYXJlIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfS9nY2MtbGliIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfTY0L2djYy1saWIgfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9IHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfTY0IHx8IDoKK30KKworIyBTcGxpdCBvdXQgbGliYmZkLSouc28gc28gaW5jbHVkaW5nIHBlcmYgZG9lc24ndCBpbmNsdWRlIGV4dHJhIHN0dWZmCitQQUNLQUdFX0JFRk9SRV9QTiArPSAibGliYmZkIgorRklMRVNfbGliYmZkID0gIiR7bGliZGlyfS9saWJiZmQtKi5zbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbi8wMDAxLXNyYy1sb2NhbC5tay1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uLzAwMDEtc3JjLWxvY2FsLm1rLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaAppbmRleCA5NTQzYTU2Li4xZTg2ZjU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uLzAwMDEtc3JjLWxvY2FsLm1rLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uLzAwMDEtc3JjLWxvY2FsLm1rLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gM2ExNWY3YzlhY2U2YzAyOTRlZGMzMTNhMTg0OGNhZmNjMzFiMmE5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNWI5MjA0ZWVlNGIwNmI0OGQ1NGVjYzNlZjNhMGI1NmZjNWNjODRmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAyNCBBcHIgMjAxNSAwMDozODozMiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBzcmMvbG9jYWwubWs6IGZpeCBwYXJhbGxlbCBpc3N1ZQpAQCAtOSwxMSArOSwxMiBAQAogL2Jpbi9iYXNoOiBzcmMveWFjYy50bXA6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKIE1ha2VmaWxlOjY2NzA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdzcmMveWFjYycgZmFpbGVkCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYmlzb24tcGF0Y2hlcy8yMDE3LTA3L21zZzAwMDAwLmh0bWwgXQogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CiAtLS0KLSBzcmMvbG9jYWwubWsgfCAgICAxICsKKyBzcmMvbG9jYWwubWsgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL3NyYy9sb2NhbC5tayBiL3NyYy9sb2NhbC5tawpAQCAtMjksNSArMzAsNSBAQAogIAkkKEFNX1ZfYXQpZWNobyAiZXhlYyAnJChiaW5kaXIpL2Jpc29uJyAteSAiJyIkJEAiJyA+PiRALnRtcAogIAkkKEFNX1ZfYXQpY2htb2QgYSt4ICRALnRtcAogLS0gCi0xLjcuOS41CisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgppbmRleCBjZmZjZDg4Li43ZDA2NmJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKQEAgLTIzLDcgKzIzLDYgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjMzQyMjAxZGUxMDRjYzljZTBhMjFlMGFkMTBkNDAyMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzI0MjhjNzkxN2JkZjlmYTkzY2I4MTgxYzk3MWI2ZTIyODM0MTI1ODQ4Y2YxZDAzY2UxMGIxYmIwNzE2ZmUxIgogCi1MREZMQUdTX3ByZXBlbmRfbGliYy11Y2xpYmMgPSAiIC1scnQgIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKaW5kZXggNGYwMTczNC4uYTMxMDEzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgpAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgZWNobyAnRVhJVF9QUk9DPSIkRVhJVF9QUk9DIG1hdGNoYm94LXdpbmRvdy1tYW5hZ2VyIicgPj4gJHtEfSR7c3lzY29uZmRpcn0vYm9vdGNoYXJ0ZC5jb25mCiAKICAgICMgVXNlIHB5dGhvbiAzIGluc3RlYWQgb2YgcHl0aG9uIDIKLSAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L3B5Ym9vdGNoYXJ0Z3VpCisgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L3B5Ym9vdGNoYXJ0Z3VpCiB9CiAKIFBBQ0tBR0VTID0rICJweWJvb3RjaGFydGd1aSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLU1ha2VmaWxlLWJ1aWxkLW1rdGFibGVzLXVzaW5nLW5hdGl2ZS1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxOTAwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gZTU4MzY5ZjZkMzZiYzUxZWI1OWQ2YWZhMzRjMWNhZTNmZjA4MTBlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IEF1ZyAyMDE3IDE0OjEwOjM4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBidWlsZCBta3RhYmxlcyB1c2luZyBuYXRpdmUgZ2NjCisKK0l0J3MgYSB0aHJvd2F3YXkgaGVscGVyIGJpbmFyeSB1c2VkIGR1cmluZyBidWlsZCwgYW5kIHNvIGl0IG5lZWRzIHRvCitiZSBuYXRpdmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYjNlMmI2My4uMzQ3YWFmMSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTMyMyw3ICszMjMsNyBAQCB2ZXJzaW9uLmg6IHZlcnNpb24uc2ggdmVyc2lvbi5oLmluIGNvbmZpZ3VyZS5hYworIAorIG1rdGFibGVzOiBrZXJuZWwtbGliL21rdGFibGVzLmMKKyAJQGVjaG8gIiAgICBbQ0NdICAgICAkQCIKKy0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAkPCAtbyAkQAorKwkkKFEpJChCVUlMRF9DQykgJChCVUlMRF9DRkxBR1MpICQ8IC1vICRACisgCisga2VybmVsLWxpYi90YWJsZXMuYzogbWt0YWJsZXMKKyAJQGVjaG8gIiAgICBbVEFCTEVdICAkQCIKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2NjODljCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEyLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKK2ltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAorZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAorVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKK2J0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgorU0VDVElPTiA9ICJiYXNlIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCitSREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCisKK1NSQ1JFViA9ICIwNjA3MTMyYzMyMDBiY2VhZDE0MjZlNmRjNjg1NDMyMDA4ZGU5NWRlIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBcCisgICAgICAgICAgICIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcworCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCisJbWtkaXIgLXAgJHtTfS9jb25maWcKKwljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLworfQorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWU5ZTIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkNoZWNrc3VtbWluZyBDb3B5IG9uIFdyaXRlIEZpbGVzeXN0ZW0gdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiQnRyZnMgaXMgYSBuZXcgY29weSBvbiB3cml0ZSBmaWxlc3lzdGVtIGZvciBMaW51eCBhaW1lZCBhdCBcCi1pbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLCByZXBhaXIgYW5kIFwKLWVhc3kgYWRtaW5pc3RyYXRpb24uIFwKLVRoaXMgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssIGJ0cmZzY3RsKSB1c2VkIHRvIHdvcmsgd2l0aCBcCi1idHJmcyBhbmQgYW4gdXRpbGl0eSAoYnRyZnMtY29udmVydCkgdG8gbWFrZSBhIGJ0cmZzIGZpbGVzeXN0ZW0gZnJvbSBhbiBleHQzLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmciCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKLVNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgotUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgotCi1TUkNSRVYgPSAiOTY0ODVjMzRhYzAzMjlmYjAwNzM0NzZmMTZkMjA4M2M2NDcwMWYyOSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2J0cmZzLXByb2dzLmdpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCi0JbWtkaXIgLXAgJHtTfS9jb25maWcKLQljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLwotfQotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgppbmRleCBjNjBjMTY0Li44NGQwNGNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCkBAIC0yMiw2ICsyMiw3IEBACiBTUkNSRVYgPSAiYzUzNTJjMDU0YzZlZjE1NzM1ZGEzMWI3NmQ2ZDg4NjIwZjRhZmYwYSIKIFBFID0gIjEiCiBQViA9ICIyMDE1LjAyLjEwK2dpdCR7U1JDUFZ9IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2hycGF0aC9jaHJwYXRoL3N0YW5kYXJkZG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jaHJwYXRoL2NocnBhdGgvc3RhbmRhcmRkb2MucGF0Y2gKaW5kZXggZjk2ZjEwNC4uM2QzMDNmYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jaHJwYXRoL2NocnBhdGgvc3RhbmRhcmRkb2MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jaHJwYXRoL2NocnBhdGgvc3RhbmRhcmRkb2MucGF0Y2gKQEAgLTEsMTQgKzEsMjQgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworRnJvbSAyODViNWZiZjFkNmIyNWZmNTVkMzA1YzE3ZWRmNGQzMjdiZjE5ZGQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBUdWUsIDUgSnVsIDIwMTEgMjM6NDI6MjkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2hycGF0aDogRW5zdXJlIHRoZSBwYWNrYWdlIHJlc3BlY3RzIHRoZSBkb2NkaXIgdmFyaWFibGUKIAotYXV0b2NvbmYvYXV0b21ha2Ugc2V0IGRvY2RpciBhdXRvbWF0aWNhbGx5LCB1c2UgdGhlaXIgdmFsdWUgZW5zdXJpbmcgCithdXRvY29uZi9hdXRvbWFrZSBzZXQgZG9jZGlyIGF1dG9tYXRpY2FsbHksIHVzZSB0aGVpciB2YWx1ZSBlbnN1cmluZwogZG9jIGZpbGVzIGFyZSBwbGFjZWQgaW50byAkZGF0YWRpci9kb2MsIG5vdCAkcHJlZml4L2RvYy4KIAogUlAgNS83LzIwMTEKIAotSW5kZXg6IGNocnBhdGgtMC4xMy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNocnBhdGgtMC4xMy5vcmlnL01ha2VmaWxlLmFtCTIwMTEtMDctMDUgMjM6NDA6MTQuNzY5OTIwMjU0ICswMTAwCi0rKysgY2hycGF0aC0wLjEzL01ha2VmaWxlLmFtCTIwMTEtMDctMDUgMjM6NDA6MTkuODE5OTIwNjM1ICswMTAwCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHA6Ly9saXN0cy5hbGlvdGguZGViaWFuLm9yZy9waXBlcm1haWwvY2hycGF0aC1kZXZlbC9XZWVrLW9mLU1vbi0yMDE3MDcxMC8wMDAwMTMuaHRtbCBdCisKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGI1MGFkMjEuLjVmN2U4NjEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0xLDcgKzEsNSBAQAogIFNVQkRJUlMgPSB0ZXN0c3VpdGUgZGViCiAgCkBAIC0xNywzICsyNyw2IEBACiAgZG9jX0RBVEEgPSBBVVRIT1JTIENPUFlJTkcgQ2hhbmdlTG9nIElOU1RBTEwgTkVXUyBSRUFETUUKICAKICBiaW5fUFJPR1JBTVMgPSBjaHJwYXRoCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuNy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZDQzNDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy43LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1yZXF1aXJlIGNtYWtlLmluYwotaW5oZXJpdCBuYXRpdmUKLQotREVQRU5EUyArPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGV4cGF0LW5hdGl2ZSB4ei1uYXRpdmUgemxpYi1uYXRpdmUgY3VybC1uYXRpdmUiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vY21saWJhcmNoaXZlLWRpc2FibGUtZXh0MmZzLnBhdGNoIFwKLSIKLQotQiA9ICIke1dPUktESVJ9L2J1aWxkIgotZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKLQotIyBEaXNhYmxlIGNjbWFrZSBzaW5jZSB3ZSBkb24ndCBkZXBlbmQgb24gbmN1cnNlcwotQ01BS0VfRVhUUkFDT05GID0gIlwKLSAgICAtRENNQUtFX0xJQlJBUllfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJBUkNISVZFPTAgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQlVWPTAgXAotICAgIC1ERU5BQkxFX0FDTD0wIC1ESEFWRV9BQ0xfTElCQUNMX0g9MCBcCi0gICAgLURIQVZFX1NZU19BQ0xfSD0wIFwKLSIKLQotZG9fY29uZmlndXJlICgpIHsKLQkke1N9L2NvbmZpZ3VyZSAtLXZlcmJvc2UgLS1wcmVmaXg9JHtwcmVmaXh9IC0tICR7Q01BS0VfRVhUUkFDT05GfQotfQotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KLQotZG9fY29tcGlsZVtwcm9ncmVzc10gPSAicGVyY2VudCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU1ZThiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuOC4yLmJiCkBAIC0wLDAgKzEsMzggQEAKK3JlcXVpcmUgY21ha2UuaW5jCitpbmhlcml0IG5hdGl2ZQorCitERVBFTkRTICs9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgZXhwYXQtbmF0aXZlIHh6LW5hdGl2ZSB6bGliLW5hdGl2ZSBjdXJsLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly9jbWxpYmFyY2hpdmUtZGlzYWJsZS1leHQyZnMucGF0Y2ggXAorIgorCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCisjIERpc2FibGUgY2NtYWtlIHNpbmNlIHdlIGRvbid0IGRlcGVuZCBvbiBuY3Vyc2VzCitDTUFLRV9FWFRSQUNPTkYgPSAiXAorICAgIC1EQ01BS0VfTElCUkFSWV9QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgICAgLURCVUlMRF9DdXJzZXNEaWFsb2c9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUklFUz0xIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9KU09OQ1BQPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQkFSQ0hJVkU9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCVVY9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCUkhBU0g9MCBcCisgICAgLURFTkFCTEVfQUNMPTAgLURIQVZFX0FDTF9MSUJBQ0xfSD0wIFwKKyAgICAtREhBVkVfU1lTX0FDTF9IPTAgXAorIgorCitkb19jb25maWd1cmUgKCkgeworCSR7U30vY29uZmlndXJlIC0tdmVyYm9zZSAtLXByZWZpeD0ke3ByZWZpeH0gLS0gJHtDTUFLRV9FWFRSQUNPTkZ9Cit9CisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorfQorCitkb19jb21waWxlW3Byb2dyZXNzXSA9ICJwZXJjZW50IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwppbmRleCA2YzhiMzZkLi42YWViMjVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwpAQCAtNiw3ICs2LDcgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3B1YmxpYy5raXR3YXJlLmNvbS9CdWcvbXlfdmlld19wYWdlLnBocCIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9N2E2NGJjNTY0MjAyYmY3NDAxZDlhOGVmMzNjOTU2NGQgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9OGQ4YzdiYzMyZjg3OTdkMjNmNWNmNjA1ZDkzMzlkMmQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL2NtYWtlLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0zO21kNT00NDk0ZGVlMTg0MjEyZmM4OWM0NjljM2FjZDU1NWExNCIKIAogQ01BS0VfTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKQEAgLTE0LDEyICsxNCwxMSBAQAogU1JDX1VSSSA9ICJodHRwczovL2NtYWtlLm9yZy9maWxlcy92JHtDTUFLRV9NQUpPUl9WRVJTSU9OfS9jbWFrZS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcXQ0LWZhaWwtc2lsZW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLWdjYy13YXJuaW5ncy13aXRoLVdzdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUtXSU1MLXRlc3RzLVJlbW92ZS1mb3JtYXQtc2VjdXJpdHktZnJvbS1mbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRDVURBLVVzZS1maW5kX3Byb2dyYW0taWYtZmluZF9ob3N0X3Byb2dyYW0taXMtbm8ucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3OWJkN2U2NWNkODFlYTNhYTI2MTk0ODRhZDZmZjI1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYzEyNDZjNGU2ZDE2OGVhNGQ2ZTA0MmNmYmE1NzdjMWFjZDY1ZmVlYTI3ZTU2ZjVmZjM3ZGY5MjBjMzBjYWUwIgorU1JDX1VSSVttZDVzdW1dID0gImI1ZGZmNjFmNmE3ZjEzMDUyNzFhYjNmNmFlMjYxNDE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhMzA3Mjc5NGViNGMwOWYyZDc4MmZjZWUwNDM4NDdiOTliYjRjZjhkNDU3Mzk3OGQ5YjIwMjQyMTRkNmU5MmQiCiAKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImNtYWtlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQ1VEQS1Vc2UtZmluZF9wcm9ncmFtLWlmLWZpbmRfaG9zdF9wcm9ncmFtLWlzLW5vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliODIwZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDQ2ZDI1ZTc4MmViZDliNmM1MDc3MWI2ZjMwNDMzYzU4ZmFlMDNhNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXhpbWUgUm91c3Npbi1Cw6lsYW5nZXIgPG1heGltZS5yb3Vzc2luYmVsYW5nZXJAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNiBKdW4gMjAxNyAxMTozMDowNyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjbWFrZTogVXNlIGZpbmRfcHJvZ3JhbSBpZiBmaW5kX2hvc3RfcHJvZ3JhbSBpcyBub3QKKyBhdmFpbGFibGUKKworQ01ha2UgZG9lcyBub3QgZGVmaW5lIHRoZSBgZmluZF9ob3N0X3Byb2dyYW1gIGNvbW1hbmQgd2UndmUgYmVlbiB1c2luZworaW4gdGhlIGNyb3NzLWNvbXBpbGluZyBjb2RlIHBhdGguICBJdCB3YXMgcHJvdmlkZWQgYnkgYSB3aWRlbHkgdXNlZAorQW5kcm9pZCB0b29sY2hhaW4gZmlsZS4gIEZvciBjb21wYXRpYmlsaXR5LCBjb250aW51ZSB0byB1c2UKK2BmaW5kX2hvc3RfcHJvZ3JhbWAgaWYgYXZhaWxhYmxlLCBidXQgb3RoZXJ3aXNlIHVzZSBqdXN0IGBmaW5kX3Byb2dyYW1gLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCitbaHR0cHM6Ly9naXRsYWIua2l0d2FyZS5jb20vY21ha2UvY21ha2UvbWVyZ2VfcmVxdWVzdHMvMTAwOV0KKyAgICAgICAgLSBXaWxsIGJlIGluIDMuMTAKKworU2lnbmVkLW9mZi1ieTogTWF4aW1lIFJvdXNzaW4tQsOpbGFuZ2VyIDxtYXhpbWUucm91c3NpbmJlbGFuZ2VyQGdtYWlsLmNvbT4KKy0tLQorIE1vZHVsZXMvRmluZENVREEuY21ha2UgfCA2ICsrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZENVREEuY21ha2UgYi9Nb2R1bGVzL0ZpbmRDVURBLmNtYWtlCitpbmRleCBhNGRjYTU0Li43N2NhMzUxIDEwMDY0NAorLS0tIGEvTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZQorKysrIGIvTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZQorQEAgLTY3OSw3ICs2NzksMTEgQEAgaWYoQ01BS0VfQ1JPU1NDT01QSUxJTkcpCisgICAjIGFkZCBrbm93biBDVURBIHRhcmdldHIgcm9vdCBwYXRoIHRvIHRoZSBzZXQgb2YgZGlyZWN0b3JpZXMgd2Ugc2VhcmNoIGZvciBwcm9ncmFtcywgbGlicmFyaWVzIGFuZCBoZWFkZXJzCisgICBzZXQoIENNQUtFX0ZJTkRfUk9PVF9QQVRIICIke0NVREFfVE9PTEtJVF9UQVJHRVRfRElSfTske0NNQUtFX0ZJTkRfUk9PVF9QQVRIfSIpCisgICBtYWNybyggY3VkYV9maW5kX2hvc3RfcHJvZ3JhbSApCistICAgIGZpbmRfaG9zdF9wcm9ncmFtKCAke0FSR059ICkKKysgICAgaWYgKENPTU1BTkQgZmluZF9ob3N0X3Byb2dyYW0pCisrICAgICAgZmluZF9ob3N0X3Byb2dyYW0oICR7QVJHTn0gKQorKyAgICBlbHNlKCkKKysgICAgICBmaW5kX3Byb2dyYW0oICR7QVJHTn0gKQorKyAgICBlbmRpZigpCisgICBlbmRtYWNybygpCisgZWxzZSgpCisgICAjIGZvciBub24tY3Jvc3MtY29tcGlsZSwgZmluZF9ob3N0X3Byb2dyYW0gPT0gZmluZF9wcm9ncmFtIGFuZCBDVURBX1RPT0xLSVRfVEFSR0VUX0RJUiA9PSBDVURBX1RPT0xLSVRfUk9PVF9ESVIKKy0tCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtS1dJTUwtdGVzdHMtUmVtb3ZlLWZvcm1hdC1zZWN1cml0eS1mcm9tLWZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUtXSU1MLXRlc3RzLVJlbW92ZS1mb3JtYXQtc2VjdXJpdHktZnJvbS1mbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwMTMzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtS1dJTUwtdGVzdHMtUmVtb3ZlLWZvcm1hdC1zZWN1cml0eS1mcm9tLWZsYWdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAwOTQxMzk1YjE0NjgwNGFiY2Q4NzAwNDU4OWZmNmU3YTI5NTM0MTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFRodSwgMTYgTWFyIDIwMTcgMTQ6Mzk6MDQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gS1dJTUwgdGVzdHM6IFJlbW92ZSBmb3JtYXQtc2VjdXJpdHkgZnJvbSBmbGFncwotCi1Gb3IgdGhlIHRlc3RzIHdoZXJlICJmb3JtYXQiIGlzIHJlbW92ZWQgZnJvbSBmbGFncywgImZvcm1hdC1zZWN1cml0eSIKLXNob3VsZCBiZSByZW1vdmVkIGFzIHdlbGwuIE90aGVyd2lzZSBidWlsZGluZyBjbWFrZSB3aXRoCi0iLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkiIGZhaWxzOgotCi18IGNjMTogZXJyb3I6IC1XZm9ybWF0LXNlY3VyaXR5IGlnbm9yZWQgd2l0aG91dCAtV2Zvcm1hdCBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3BhcnQgb2YgY29tbWl0IGY3NzQyMGNmYzldCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gVXRpbGl0aWVzL0tXSU1ML3Rlc3QvQ01ha2VMaXN0cy50eHQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9VdGlsaXRpZXMvS1dJTUwvdGVzdC9DTWFrZUxpc3RzLnR4dCBiL1V0aWxpdGllcy9LV0lNTC90ZXN0L0NNYWtlTGlzdHMudHh0Ci1pbmRleCA0ZjZmMzdiLi4xYmY5M2JiIDEwMDY0NAotLS0tIGEvVXRpbGl0aWVzL0tXSU1ML3Rlc3QvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1V0aWxpdGllcy9LV0lNTC90ZXN0L0NNYWtlTGlzdHMudHh0Ci1AQCAtMTAsNyArMTAsNyBAQCBlbmRpZigpCi0gIyBTdXBwcmVzcyBwcmludGYvc2NhbmYgZm9ybWF0IHdhcm5pbmdzOyB3ZSB0ZXN0IGlmIHRoZSBzaXplcyBtYXRjaC4KLSBmb3JlYWNoKGxhbmcgQyBDWFgpCi0gICBpZihLV0lNTF9MQU5HVUFHRV8ke2xhbmd9IEFORCBDTUFLRV8ke2xhbmd9X0NPTVBJTEVSX0lEIFNUUkVRVUFMICJHTlUiKQotLSAgICBzZXQoQ01BS0VfJHtsYW5nfV9GTEFHUyAiJHtDTUFLRV8ke2xhbmd9X0ZMQUdTfSAtV25vLWZvcm1hdCIpCi0rICAgIHNldChDTUFLRV8ke2xhbmd9X0ZMQUdTICIke0NNQUtFXyR7bGFuZ31fRkxBR1N9IC1Xbm8tZm9ybWF0IC1Xbm8tZm9ybWF0LXNlY3VyaXR5IikKLSAgIGVuZGlmKCkKLSBlbmRmb3JlYWNoKCkKLSAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UKaW5kZXggNjUxODQwOC4uZGM4NDc3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlCkBAIC0xLDcgKzEsNyBAQAogc2V0KCBDTUFLRV9TWVNURU1fTkFNRSBMaW51eCApCiBzZXQoIENNQUtFX0NfRkxBR1MgJEVOVntDRkxBR1N9IENBQ0hFIFNUUklORyAiIiBGT1JDRSApCiBzZXQoIENNQUtFX0NYWF9GTEFHUyAkRU5We0NYWEZMQUdTfSAgQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKLXNldCggQ01BS0UgQVNNX0ZMQUdTICR7Q01BS0VfQ19GTEFHU30gQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKK3NldCggQ01BS0VfQVNNX0ZMQUdTICR7Q01BS0VfQ19GTEFHU30gQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKIHNldCggQ01BS0VfTERGTEFHU19GTEFHUyAke0NNQUtFX0NYWF9GTEFHU30gQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKIAogc2V0KCBDTUFLRV9GSU5EX1JPT1RfUEFUSCAkRU5We09FQ09SRV9UQVJHRVRfU1lTUk9PVH0gJEVOVntPRUNPUkVfTkFUSVZFX1NZU1JPT1R9ICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvYXZvaWQtZ2NjLXdhcm5pbmdzLXdpdGgtV3N0cmljdC1wcm90b3R5cGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9hdm9pZC1nY2Mtd2FybmluZ3Mtd2l0aC1Xc3RyaWN0LXByb3RvdHlwZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiOGQ0ODAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9hdm9pZC1nY2Mtd2FybmluZ3Mtd2l0aC1Xc3RyaWN0LXByb3RvdHlwZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDRiYzE3MzQ1YzAxZWE0NjcwOTllMjhjN2RmMzBjMjNhY2U5ZTc4MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNCBPY3QgMjAxNiAxNjoyNjo1OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBDaGVja0Z1bmN0aW9uRXhpc3RzLmM6IGF2b2lkIGdjYyB3YXJuaW5ncyB3aXRoCi0gLVdzdHJpY3QtcHJvdG90eXBlcwotCi1Bdm9pZCB3YXJuaW5ncyAoYW5kIHRoZXJlZm9yZSBidWlsZCBmYWlsdXJlcyBldGMpIGlmIGEgdXNlciBoYXBwZW5zCi10byBhZGQgLVdzdHJpY3QtcHJvdG90eXBlcyB0byBDRkxBR1MuCi0KLSB8ICQgZ2NjIC0tdmVyc2lvbgotIHwgZ2NjIChVYnVudHUgNC44LjQtMnVidW50dTF+MTQuMDQuMykgNC44LjQKLSB8Ci0gfCAkIGdjYyAtV3N0cmljdC1wcm90b3R5cGVzIC1XZXJyb3IgLURDSEVDS19GVU5DVElPTl9FWElTVFM9cHRocmVhZF9jcmVhdGUgLW8gZm9vLm8gLWMgTW9kdWxlcy9DaGVja0Z1bmN0aW9uRXhpc3RzLmMKLSB8IE1vZHVsZXMvQ2hlY2tGdW5jdGlvbkV4aXN0cy5jOjc6MzogZXJyb3I6IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGlzbid0IGEgcHJvdG90eXBlIFstV2Vycm9yPXN0cmljdC1wcm90b3R5cGVzXQotIHwgICAgQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTKCk7Ci0gfCAgICBeCi0gfCBjYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwotIHwKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0tLS0KLSBNb2R1bGVzL0NoZWNrRnVuY3Rpb25FeGlzdHMuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01vZHVsZXMvQ2hlY2tGdW5jdGlvbkV4aXN0cy5jIGIvTW9kdWxlcy9DaGVja0Z1bmN0aW9uRXhpc3RzLmMKLWluZGV4IDIzMDQwMDAuLjIyNGUzNDAgMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL0NoZWNrRnVuY3Rpb25FeGlzdHMuYwotKysrIGIvTW9kdWxlcy9DaGVja0Z1bmN0aW9uRXhpc3RzLmMKLUBAIC00LDcgKzQsNyBAQAotIGV4dGVybiAiQyIKLSAjZW5kaWYKLSAgIGNoYXIKLS0gIENIRUNLX0ZVTkNUSU9OX0VYSVNUUygpOwotKyAgQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTKHZvaWQpOwotICNpZmRlZiBfX0NMQVNTSUNfQ19fCi0gaW50IG1haW4oKQotIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NjZhNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLXJlcXVpcmUgY21ha2UuaW5jCi0KLWluaGVyaXQgY21ha2UKLQotREVQRU5EUyArPSAiY3VybCBleHBhdCB6bGliIGxpYmFyY2hpdmUgeHogbmN1cnNlcyBiemlwMiIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCi0gICAgZmlsZTovL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIFwKLSAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCIKLQotIyBTdHJpcCAke3ByZWZpeH0gZnJvbSAke2RvY2Rpcn0sIHNldCByZXN1bHQgaW50byBkb2NkaXJfc3RyaXBwZWQKLXB5dGhvbiAoKSB7Ci0gICAgcHJlZml4PWQuZ2V0VmFyKCJwcmVmaXgiKQotICAgIGRvY2Rpcj1kLmdldFZhcigiZG9jZGlyIikKLQotICAgIGlmIG5vdCBkb2NkaXIuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICBiYi5mYXRhbCgnZG9jZGlyIG11c3QgY29udGFpbiBwcmVmaXggYXMgaXRzIHByZWZpeCcpCi0KLSAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJbbGVuKHByZWZpeCk6XQotICAgIGlmIGxlbihkb2NkaXJfc3RyaXBwZWQpID4gMCBhbmQgZG9jZGlyX3N0cmlwcGVkWzBdID09ICcvJzoKLSAgICAgICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyX3N0cmlwcGVkWzE6XQotCi0gICAgZC5zZXRWYXIoImRvY2Rpcl9zdHJpcHBlZCIsIGRvY2Rpcl9zdHJpcHBlZCkKLX0KLQotRVhUUkFfT0VDTUFLRT0iIFwKLSAgICAtRENNQUtFX0RPQ19ESVI9JHtkb2NkaXJfc3RyaXBwZWR9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0gXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJVVj0wIFwKLSAgICAtREtXU1lTX0NIQVJfSVNfU0lHTkVEPTEgXAotICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAotICAgIC1ES1dTWVNfTEZTX1dPUktTPTEgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vY21ha2UKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L09FVG9vbGNoYWluQ29uZmlnLmNtYWtlICR7RH0ke2RhdGFkaXJ9L2NtYWtlLwotCi0gICAgbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL2NtYWtlLnNoCi19Ci0KLUZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0iCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZG9jZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOGZkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuOC4yLmJiCkBAIC0wLDAgKzEsNTAgQEAKK3JlcXVpcmUgY21ha2UuaW5jCisKK2luaGVyaXQgY21ha2UKKworREVQRU5EUyArPSAiY3VybCBleHBhdCB6bGliIGxpYmFyY2hpdmUgeHogbmN1cnNlcyBiemlwMiIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgZmlsZTovL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIFwKKyAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCIKKworIyBTdHJpcCAke3ByZWZpeH0gZnJvbSAke2RvY2Rpcn0sIHNldCByZXN1bHQgaW50byBkb2NkaXJfc3RyaXBwZWQKK3B5dGhvbiAoKSB7CisgICAgcHJlZml4PWQuZ2V0VmFyKCJwcmVmaXgiKQorICAgIGRvY2Rpcj1kLmdldFZhcigiZG9jZGlyIikKKworICAgIGlmIG5vdCBkb2NkaXIuc3RhcnRzd2l0aChwcmVmaXgpOgorICAgICAgICBiYi5mYXRhbCgnZG9jZGlyIG11c3QgY29udGFpbiBwcmVmaXggYXMgaXRzIHByZWZpeCcpCisKKyAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJbbGVuKHByZWZpeCk6XQorICAgIGlmIGxlbihkb2NkaXJfc3RyaXBwZWQpID4gMCBhbmQgZG9jZGlyX3N0cmlwcGVkWzBdID09ICcvJzoKKyAgICAgICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyX3N0cmlwcGVkWzE6XQorCisgICAgZC5zZXRWYXIoImRvY2Rpcl9zdHJpcHBlZCIsIGRvY2Rpcl9zdHJpcHBlZCkKK30KKworRVhUUkFfT0VDTUFLRT0iIFwKKyAgICAtRENNQUtFX0RPQ19ESVI9JHtkb2NkaXJfc3RyaXBwZWR9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0gXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJVVj0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJSSEFTSD0wIFwKKyAgICAtREtXU1lTX0NIQVJfSVNfU0lHTkVEPTEgXAorICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAorICAgIC1ES1dTWVNfTEZTX1dPUktTPTEgXAorIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vY21ha2UKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L09FVG9vbGNoYWluQ29uZmlnLmNtYWtlICR7RH0ke2RhdGFkaXJ9L2NtYWtlLworCisgICAgbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL2NtYWtlLnNoCit9CisKK0ZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0iCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0iCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZG9jZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tYy8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXRoZS1zaGFyZWQtbGlicmFyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tYy8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXRoZS1zaGFyZWQtbGlicmFyeS5wYXRjaAppbmRleCAwMTI3MTI0Li5jZDcyMDg0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWMvMDAwMS1Db3JyZWN0bHktaW5zdGFsbC10aGUtc2hhcmVkLWxpYnJhcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jLzAwMDEtQ29ycmVjdGx5LWluc3RhbGwtdGhlLXNoYXJlZC1saWJyYXJ5LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogTW9uLCAyIEphbiAyMDE3IDE3OjIzOjU5ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIENvcnJlY3RseSBpbnN0YWxsIHRoZSBzaGFyZWQgbGlicmFyeQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvY3JlYXRlcmVwb19jL3B1bGwvNzhdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIHNyYy9DTWFrZUxpc3RzLnR4dCB8IDMgKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYgppbmRleCAxZjkwNmVlLi43YjcwZGFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvY3ZlLWNoZWNrLXRvb2xfNS42LjQuYmIKQEAgLTExLDYgKzExLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcHJpbnQtcHJvZ3Jlc3MtaW4tcGVyY2VudC13aGVuLWRvd25sb2FkaW5nLUNWRS1kYi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWN1cmwtYWxsb3ctb3ZlcnJpZGluZy1kZWZhdWx0LUNBLWNlcnRpZmljYXRlLWZpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtQ29tcGFyZS1jb21wdXRlZC12cy1leHBlY3RlZC1zaGEyNTYtZGlnaXQtc3RyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWZyZWVpbmctbWVtb3J5LWFsbG9jYXRlZC1ieS1zcWxpdGUucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImM1ZjQyNDcxNDBmYzliZTNiZjQxNDkxZDMxYTM0MTU1IgpAQCAtMjksNyArMzAsNyBAQAogCiBkb19wb3B1bGF0ZV9jdmVfZGIoKSB7CiAgICAgaWYgWyAiJHtCQl9OT19ORVRXT1JLfSIgPSAiMSIgXSA7IHRoZW4KLSAgICAgICAgYmJlcnJvciAiQkJfTk9fTkVUV09SSyBpcyBzZXQ7IENhbid0IHVwZGF0ZSBjdmUtY2hlY2stdG9vbCBkYXRhYmFzZSwgQ1ZFcyB3b24ndCBiZSBjaGVja2VkIgorICAgICAgICBiYndhcm4gIkJCX05PX05FVFdPUksgaXMgc2V0OyBDYW4ndCB1cGRhdGUgY3ZlLWNoZWNrLXRvb2wgZGF0YWJhc2UsIG5ldyBDVkVzIHdvbid0IGJlIGRldGVjdGVkIgogICAgICAgICByZXR1cm4KICAgICBmaQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtRml4LWZyZWVpbmctbWVtb3J5LWFsbG9jYXRlZC1ieS1zcWxpdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtRml4LWZyZWVpbmctbWVtb3J5LWFsbG9jYXRlZC1ieS1zcWxpdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE4MmNmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvMDAwMS1GaXgtZnJlZWluZy1tZW1vcnktYWxsb2NhdGVkLWJ5LXNxbGl0ZS5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGEzMzUzNDI5NjUyZjgzYmI4YjAzMTY1MDBmYWE4OGZhMjU1NTU0MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBNYXJrbyA8cGV0ZXIubWFya29Ac2llbWVucy5jb20+CitEYXRlOiBUaHUsIDEzIEFwciAyMDE3IDIzOjA5OjUyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmcmVlaW5nIG1lbW9yeSBhbGxvY2F0ZWQgYnkgc3FsaXRlCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFBldGVyIE1hcmtvIDxwZXRlci5tYXJrb0BzaWVtZW5zLmNvbT4KKy0tLQorIHNyYy9jb3JlLmMgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlLmMgYi9zcmMvY29yZS5jCitpbmRleCA2MjYzMDMxLi42Nzg4ZjE2IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUuYworKysrIGIvc3JjL2NvcmUuYworQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlX3RhYmxlKEN2ZURCICpzZWxmKQorICAgICAgICAgcmMgPSBzcWxpdGUzX2V4ZWMoc2VsZi0+ZGIsIHF1ZXJ5LCBOVUxMLCBOVUxMLCAmZXJyKTsKKyAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbnN1cmVfdGFibGUoKTogJXNcbiIsIGVycik7CistICAgICAgICAgICAgICAgIGZyZWUoZXJyKTsKKysgICAgICAgICAgICAgICAgc3FsaXRlM19mcmVlKGVycik7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KKyAgICAgICAgIAorQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlX3RhYmxlKEN2ZURCICpzZWxmKQorICAgICAgICAgcmMgPSBzcWxpdGUzX2V4ZWMoc2VsZi0+ZGIsIHF1ZXJ5LCBOVUxMLCBOVUxMLCAmZXJyKTsKKyAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbnN1cmVfdGFibGUoKTogJXNcbiIsIGVycik7CistICAgICAgICAgICAgICAgIGZyZWUoZXJyKTsKKysgICAgICAgICAgICAgICAgc3FsaXRlM19mcmVlKGVycik7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KKyAKK0BAIC05OSwxMSArOTksMTEgQEAgc3RhdGljIGJvb2wgZW5zdXJlX3RhYmxlKEN2ZURCICpzZWxmKQorICAgICAgICAgcmMgPSBzcWxpdGUzX2V4ZWMoc2VsZi0+ZGIsIHF1ZXJ5LCBOVUxMLCBOVUxMLCAmZXJyKTsKKyAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbnN1cmVfdGFibGUoKTogJXNcbiIsIGVycik7CistICAgICAgICAgICAgICAgIGZyZWUoZXJyKTsKKysgICAgICAgICAgICAgICAgc3FsaXRlM19mcmVlKGVycik7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmIChlcnIpIHsKKy0gICAgICAgICAgICAgICAgZnJlZShlcnIpOworKyAgICAgICAgICAgICAgICBzcWxpdGUzX2ZyZWUoZXJyKTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHJldHVybiB0cnVlOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtcHJpbnQtcHJvZ3Jlc3MtaW4tcGVyY2VudC13aGVuLWRvd25sb2FkaW5nLUNWRS1kYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvMDAwMS1wcmludC1wcm9ncmVzcy1pbi1wZXJjZW50LXdoZW4tZG93bmxvYWRpbmctQ1ZFLWRiLnBhdGNoCmluZGV4IDA1MTBlM2EuLjhlYTZmNjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvMDAwMS1wcmludC1wcm9ncmVzcy1pbi1wZXJjZW50LXdoZW4tZG93bmxvYWRpbmctQ1ZFLWRiLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvMDAwMS1wcmludC1wcm9ncmVzcy1pbi1wZXJjZW50LXdoZW4tZG93bmxvYWRpbmctQ1ZFLWRiLnBhdGNoCkBAIC0zOCw3ICszOCw3IEBACiArICAgICAgICBpZiAoZGx0b3RhbCAmJiBwZXJjZW50ICYmIHBlcmNlbnQtPmVuZCA+PSBwZXJjZW50LT5zdGFydCkgewogKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlmZiA9IHBlcmNlbnQtPmVuZCAtIHBlcmNlbnQtPnN0YXJ0OwogKyAgICAgICAgICAgICAgICBpZiAoZGlmZikgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJjb21wbGV0ZWQ6ICJDVVJMX0ZPUk1BVF9PRkZfVCIlJVxyIiwgcGVyY2VudC0+c3RhcnQgKyAoZGlmZiAqIGRsbm93IC8gZGx0b3RhbCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJjb21wbGV0ZWQ6ICUiQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCIlJVxyIiwgcGVyY2VudC0+c3RhcnQgKyAoZGlmZiAqIGRsbm93IC8gZGx0b3RhbCkpOwogKyAgICAgICAgICAgICAgICB9CiArICAgICAgICB9CiArCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjEuYmIKaW5kZXggNTgzYjM4Ny4uZjhiN2IwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42MS5iYgpAQCAtMTgsMTQgKzE4LDkgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdAogCi1MREZMQUdTICs9ICIke1RPT0xDSEFJTl9PUFRJT05TfSIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgogCi1kb19jb25maWd1cmUgKCkgewotCWlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCi0JCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAotCWZpCi0JYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZQotfQorTERGTEFHUyArPSAiJHtUT09MQ0hBSU5fT1BUSU9OU30iCiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJY3AgLXIgJHtTfS90ZXN0aW5nICR7RH0ke1BURVNUX1BBVEh9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYgppbmRleCBlYTNkN2MxLi5iNmRhNjVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjIuYmIKQEAgLTIzLDYgKzIzLDcgQEAKICAgICAgICAgICAgZmlsZTovL2Rpc3RjYy5zZXJ2aWNlIgogU1JDUkVWID0gImQ4YjE4ZGYzZTlkY2JlNGYwOTJiZWQ1NjU4MzVkMzk3NWU5OTQzMmMiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbWlkZWNvZGUvZG1pZGVjb2RlXzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOWE5ZDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbWlkZWNvZGUvZG1pZGVjb2RlXzMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiRE1JIChEZXNrdG9wIE1hbmFnZW1lbnQgSW50ZXJmYWNlKSB0YWJsZSByZWxhdGVkIHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubm9uZ251Lm9yZy9kbWlkZWNvZGUvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vZG1pZGVjb2RlLyR7QlB9LnRhci54eiIKLQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhYXJjaDY0fGFybXxwb3dlcnBjfHBvd2VycGM2NCkuKi1saW51eCIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsCi19Ci0KLWRvX3VucGFja19leHRyYSgpIHsKLQlzZWQgLWkgLWUgJy9ecHJlZml4L3M6L3Vzci9sb2NhbDoke2V4ZWNfcHJlZml4fTonICR7U30vTWFrZWZpbGUKLX0KLWFkZHRhc2sgdW5wYWNrX2V4dHJhIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKLQotU1JDX1VSSVttZDVzdW1dID0gIjI4MWVlNTcyZDQ1Yzc4ZWNhNzNhMTQ4MzRjNDk1ZmZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlYzM1YmIxOTM3MjljMWQ1OTNhMTQ2MGI1OWQ4MmQyNGI4OTEwMmFiMjNmZDA0MTZlNmNmNDMyNWQwNzdlNDUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MzI4MWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiRE1JIChEZXNrdG9wIE1hbmFnZW1lbnQgSW50ZXJmYWNlKSB0YWJsZSByZWxhdGVkIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubm9uZ251Lm9yZy9kbWlkZWNvZGUvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vZG1pZGVjb2RlLyR7QlB9LnRhci54eiIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhYXJjaDY0fGFybXxwb3dlcnBjfHBvd2VycGM2NCkuKi1saW51eCIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsCit9CisKK2RvX3VucGFja19leHRyYSgpIHsKKwlzZWQgLWkgLWUgJy9ecHJlZml4L3M6L3Vzci9sb2NhbDoke2V4ZWNfcHJlZml4fTonICR7U30vTWFrZWZpbGUKK30KK2FkZHRhc2sgdW5wYWNrX2V4dHJhIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKKworU1JDX1VSSVttZDVzdW1dID0gIjY3OWMyYzAxNWM1MTVhYTZjYTVmMjI5YWVlNDljMTAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3NjZjZTliMjU1NDhjNTliMWU3ZTkzMDUwNWI0Y2FkOWE3YmIwYjkwNGExYTM5MWZiYjYwNGQ1Mjk3ODFhYzAiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZjMxNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMTY2ODMzYTg4YTkyOGE1NzRiZjkxNDNiOWI2NWY1NDRiZTQ4MmM3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxOCBBdWcgMjAxNyAxNTo1NToxNSArMDMwMAorU3ViamVjdDogW1BBVENIXSBDaGVjayBjb25mLnJlbGVhc2V2ZXIgaW5zdGVhZCBvZiByZWxlYXNldmVyCisKK1RoZSBzdWJzdGl0dXRpb25zIG1heSBhY3R1YWxseSBzZXQgdGhlIGNvbmYucmVsZWFzZXZlciBjb3JyZWN0bHksCithbmQgc28gdGhlIGNoZWNrIHNob3VsZCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHRoZSBwYXNzZWQtaW4gZnVuY3Rpb24KK3BhcmFtZXRlci4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYvcHVsbC85MDFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGRuZi9jbGkvY2xpLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZG5mL2NsaS9jbGkucHkgYi9kbmYvY2xpL2NsaS5weQoraW5kZXggMmQ2MzQyMGMuLjE2Nzk0M2I4IDEwMDY0NAorLS0tIGEvZG5mL2NsaS9jbGkucHkKKysrKyBiL2RuZi9jbGkvY2xpLnB5CitAQCAtOTE0LDcgKzkxNCw3IEBAIGNsYXNzIENsaShvYmplY3QpOgorICAgICAgICAgY29uZi5yZWxlYXNldmVyID0gcmVsZWFzZXZlcgorICAgICAgICAgc3Vic3QgPSBjb25mLnN1YnN0aXR1dGlvbnMKKyAgICAgICAgIHN1YnN0LnVwZGF0ZV9mcm9tX2V0Yyhjb25mLmluc3RhbGxyb290KQorLSAgICAgICAgaWYgcmVsZWFzZXZlciBpcyBOb25lOgorKyAgICAgICAgaWYgY29uZi5yZWxlYXNldmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoXygiVW5hYmxlIHRvIGRldGVjdCByZWxlYXNlIHZlcnNpb24gKHVzZSAnLS1yZWxlYXNldmVyJyB0byBzcGVjaWZ5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWxlYXNlIHZlcnNpb24pIikpCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaAppbmRleCA2MTMyOGU2Li4xYWJkODgwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2gKQEAgLTEwLDggKzEwLDcgQEAKIC0tLQogIGJpbi9kbmYtYXV0b21hdGljLmluIHwgMiArLQogIGJpbi9kbmYuaW4gICAgICAgICAgIHwgMiArLQotIGJpbi95dW0uaW4gICAgICAgICAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmluL2RuZi1hdXRvbWF0aWMuaW4gYi9iaW4vZG5mLWF1dG9tYXRpYy5pbgogaW5kZXggNWIwNmFhMjYuLjlmNmY3MDNlIDEwMDc1NQpAQCAtMzMsMTYgKzMyLDYgQEAKICAjIFRoZSBkbmYgZXhlY3V0YWJsZSBzY3JpcHQuCiAgIwogICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgUmVkIEhhdCwgSW5jLgotZGlmZiAtLWdpdCBhL2Jpbi95dW0uaW4gYi9iaW4veXVtLmluCi1pbmRleCBmMWZlZTA3MS4uMDEzZGM4YzUgMTAwNzU1Ci0tLS0gYS9iaW4veXVtLmluCi0rKysgYi9iaW4veXVtLmluCi1AQCAtMSw0ICsxLDQgQEAKLS0jIUBQWVRIT05fRVhFQ1VUQUJMRUAKLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gIyBUaGUgZG5mIGV4ZWN1dGFibGUgc2NyaXB0LgotICMKLSAjIENvcHlyaWdodCAoQykgMjAxNiBSZWQgSGF0LCBJbmMuCiAtLSAKIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VkNmE3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjYuMy5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIlBhY2thZ2UgbWFuYWdlciBmb3JrZWQgZnJvbSBZdW0sIHVzaW5nIGxpYnNvbHYgYXMgYSBkZXBlbmRlbmN5IHJlc29sdmVyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBQ0tBR0UtTElDRU5TSU5HO21kNT1iZmMyOTkxNmUxMTMyMWJlMDY5MjRjNGZiMDk2ZmRjYyBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1ldGMtYW5kLXN5c3RlbWQtdW5pdC1kaXJlY3Rvcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJldGx5LWluc3RhbGwtdG1wZmlsZXMuZC1jb25maWd1cmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stY29uZi5yZWxlYXNldmVyLWluc3RlYWQtb2YtcmVsZWFzZXZlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gImJlMjU4NTE4M2VjNDQ4NWVlNGQ1ZTEyMWYyNDJkODY2OTI5NmYwNjUiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gZGlzdHV0aWxzMy1iYXNlIHN5c3RlbWQKKworREVQRU5EUyArPSAibGliZG5mIGxpYnJlcG8gbGliY29tcHMgcHl0aG9uMy1pbmlwYXJzZSIKKworIyBtYW5wYWdlcyBnZW5lcmF0aW9uIHJlcXVpcmVzIGh0dHA6Ly93d3cuc3BoaW54LWRvYy5vcmcvCitFWFRSQV9PRUNNQUtFID0gIiAtRFdJVEhfTUFOPTAgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURQWVRIT05fREVTSVJFRD0zIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gInB5dGhvbjMtY29yZSBweXRob24zLWNvZGVjcyBweXRob24zLW5ldGNsaWVudCBweXRob24zLWVtYWlsIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMtZGlzdHV0aWxzIGxpYnJlcG8gcHl0aG9uMy1zaGVsbCBweXRob24zLXN1YnByb2Nlc3MgbGliY29tcHMgbGliZG5mIHB5dGhvbjMtc3FsaXRlMyBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtcnBtIHB5dGhvbjMtaW5pcGFyc2UgcHl0aG9uMy1qc29uIHB5dGhvbjMtaW1wb3J0bGliIHB5dGhvbjMtY3Vyc2VzIHB5dGhvbjMtYXJncGFyc2UgcHl0aG9uMy1taXNjIHB5dGhvbjMtZ3BnIgorIyBSZWNvbW1lbmQgZ251cGcgc28gdGhhdCBHUEcgc2lnbmF0dXJlIGNoZWNrIG9uIHJlcG9zaXRvcnkgbWV0YWRhdGEgaXMgcG9zc2libGUKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiZ251cGciCisKKyMgQ3JlYXRlIGEgc3ltbGluayBjYWxsZWQgJ2RuZicgYXMgJ21ha2UgaW5zdGFsbCcgZG9lcyBub3QgZG8gaXQsIGJ1dAorIyAuc3BlYyBmaWxlIGluIGRuZiBzb3VyY2UgdHJlZSBkb2VzIChhbmQgdGhlbiBGZWRvcmEgYW5kIGRuZiBkb2N1bWVudGF0aW9uCisjIHNheXMgdGhhdCBkbmYgYmluYXJ5IGlzIHBsYWluICdkbmYnKS4KK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLTMgJHtEfS8ke2JpbmRpcn0vZG5mCisgICAgICAgIGxuciAke0R9LyR7YmluZGlyfS9kbmYtYXV0b21hdGljLTMgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYworfQorCisjIERpcmVjdCBkbmYtbmF0aXZlIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2RuZiBcCisgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKKyAgICAgICAgICAgICAgICBSUE1fTk9fQ0hST09UX0ZPUl9TQ1JJUFRTPTEKK30KKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRuZi1tYWtlY2FjaGUuc2VydmljZSBkbmYtbWFrZWNhY2hlLnRpbWVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLWRvd25sb2FkLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1kb3dubG9hZC50aW1lciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnRpbWVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkuc2VydmljZSBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkudGltZXIgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmODE0ZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiUGFja2FnZSBtYW5hZ2VyIGZvcmtlZCBmcm9tIFl1bSwgdXNpbmcgbGlic29sdiBhcyBhIGRlcGVuZGVuY3kgcmVzb2x2ZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFDS0FHRS1MSUNFTlNJTkc7bWQ1PWJmYzI5OTE2ZTExMzIxYmUwNjkyNGM0ZmIwOTZmZGNjIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmV0bHktaW5zdGFsbC10bXBmaWxlcy5kLWNvbmZpZ3VyYXRpb24ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBWID0gIjIuMC4wK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImYwMDkzZDY3MmQzMDY5Y2ZlZTg0NDc5NzNhZTcwZWY2MTVmZDg4ODYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gZGlzdHV0aWxzMy1iYXNlIHN5c3RlbWQKLQotREVQRU5EUyArPSAibGliZG5mIGxpYnJlcG8gbGliY29tcHMgcHl0aG9uMy1weWdwZ21lIHB5dGhvbjMtaW5pcGFyc2UiCi0KLSMgbWFucGFnZXMgZ2VuZXJhdGlvbiByZXF1aXJlcyBodHRwOi8vd3d3LnNwaGlueC1kb2Mub3JnLwotRVhUUkFfT0VDTUFLRSA9ICIgLURXSVRIX01BTj0wIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJweXRob24zLWNvcmUgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1uZXRjbGllbnQgcHl0aG9uMy1lbWFpbCBweXRob24zLXRocmVhZGluZyBweXRob24zLWRpc3R1dGlscyBsaWJyZXBvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1zdWJwcm9jZXNzIGxpYmNvbXBzIGxpYmRuZiBweXRob24zLXNxbGl0ZTMgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXB5Z3BnbWUgcHl0aG9uMy1ycG0gcHl0aG9uMy1pbmlwYXJzZSBweXRob24zLWpzb24gcHl0aG9uMy1pbXBvcnRsaWIgcHl0aG9uMy1jdXJzZXMgcHl0aG9uMy1hcmdwYXJzZSBweXRob24zLW1pc2MiCi0KLSMgQ3JlYXRlIGEgc3ltbGluayBjYWxsZWQgJ2RuZicgYXMgJ21ha2UgaW5zdGFsbCcgZG9lcyBub3QgZG8gaXQsIGJ1dAotIyAuc3BlYyBmaWxlIGluIGRuZiBzb3VyY2UgdHJlZSBkb2VzIChhbmQgdGhlbiBGZWRvcmEgYW5kIGRuZiBkb2N1bWVudGF0aW9uCi0jIHNheXMgdGhhdCBkbmYgYmluYXJ5IGlzIHBsYWluICdkbmYnKS4KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLTMgJHtEfS8ke2JpbmRpcn0vZG5mCi0gICAgICAgIGxuciAke0R9LyR7YmluZGlyfS9kbmYtYXV0b21hdGljLTMgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYwotfQotCi0jIERpcmVjdCBkbmYtbmF0aXZlIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2RuZiBcCi0gICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKLSAgICAgICAgICAgICAgICBSUE1fTk9fQ0hST09UX0ZPUl9TQ1JJUFRTPTEKLX0KLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRuZi1tYWtlY2FjaGUuc2VydmljZSBkbmYtbWFrZWNhY2hlLnRpbWVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLWRvd25sb2FkLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1kb3dubG9hZC50aW1lciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnRpbWVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkuc2VydmljZSBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkudGltZXIgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMS1kcGtnLVN1cHBvcnQtbXVzbHgzMi1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDEtZHBrZy1TdXBwb3J0LW11c2x4MzItYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBlNjg5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDEtZHBrZy1TdXBwb3J0LW11c2x4MzItYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBhMzI4YzhiZWMwYmY4MDcxYWU4ZjIwZmVlNGM3NDc1MjA1MDY0YmExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogc3dlZWF1biA8c3dlZS5hdW4ua2hvckBpbnRlbC5jb20+CitEYXRlOiBTdW4sIDEwIFNlcCAyMDE3IDAwOjE0OjE1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGRwa2c6IFN1cHBvcnQgbXVzbHgzMiBidWlsZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcuCitDaGFuZ2VzIG1hZGUgb24gb3N0YWJsZSBhbmQgdHVwbGV0YWJsZSB0byBlbmFibGUgbXVzbHgzMiBidWlsZC4KKworU2lnbmVkLW9mZi1ieTogc3dlZWF1biA8c3dlZS5hdW4ua2hvckBpbnRlbC5jb20+CistLS0KKyBkYXRhL29zdGFibGUgICAgfCAxICsKKyBkYXRhL3R1cGxldGFibGUgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZGF0YS9vc3RhYmxlIGIvZGF0YS9vc3RhYmxlCitpbmRleCBiZTY0MzQyLi44N2RiMjczIDEwMDY0NAorLS0tIGEvZGF0YS9vc3RhYmxlCisrKysgYi9kYXRhL29zdGFibGUKK0BAIC0xOSw2ICsxOSw3IEBAIGJhc2UtdWNsaWJjLWxpbnV4CWxpbnV4LXVjbGliYwkJbGludXhbXi1dKi11Y2xpYmMKKyBlYWJpaGYtbXVzbC1saW51eAlsaW51eC1tdXNsZWFiaWhmCWxpbnV4W14tXSotbXVzbGVhYmloZgorIGVhYmktbXVzbC1saW51eAkJbGludXgtbXVzbGVhYmkJCWxpbnV4W14tXSotbXVzbGVhYmkKKyBiYXNlLW11c2wtbGludXgJCWxpbnV4LW11c2wJCWxpbnV4W14tXSotbXVzbAorK3gzMi1tdXNsLWxpbnV4CQlsaW51eC1tdXNseDMyCQlsaW51eFteLV0qLW11c2x4MzIKKyBlYWJpaGYtZ251LWxpbnV4CWxpbnV4LWdudWVhYmloZgkJbGludXhbXi1dKi1nbnVlYWJpaGYKKyBlYWJpLWdudS1saW51eAkJbGludXgtZ251ZWFiaQkJbGludXhbXi1dKi1nbnVlYWJpCisgYWJpbjMyLWdudS1saW51eAlsaW51eC1nbnVhYmluMzIJCWxpbnV4W14tXSotZ251YWJpbjMyCitkaWZmIC0tZ2l0IGEvZGF0YS90dXBsZXRhYmxlIGIvZGF0YS90dXBsZXRhYmxlCitpbmRleCAyOGYwMGJmLi43NDhmZmFiIDEwMDY0NAorLS0tIGEvZGF0YS90dXBsZXRhYmxlCisrKysgYi9kYXRhL3R1cGxldGFibGUKK0BAIC0xMCw2ICsxMCw3IEBAIGJhc2UtdWNsaWJjLWxpbnV4LTxjcHU+CQl1Y2xpYmMtbGludXgtPGNwdT4KKyBlYWJpaGYtbXVzbC1saW51eC1hcm0JCW11c2wtbGludXgtYXJtaGYKKyBlYWJpLW11c2wtbGludXgtYXJtCQltdXNsLWxpbnV4LWFybWVsCisgYmFzZS1tdXNsLWxpbnV4LTxjcHU+CQltdXNsLWxpbnV4LTxjcHU+CisreDMyLW11c2wtbGludXgtYW1kNjQJCXgzMgorIGlscDMyLWdudS1saW51eC1hcm02NAkJYXJtNjRpbHAzMgorIGVhYmloZi1nbnUtbGludXgtYXJtCQlhcm1oZgorIGVhYmktZ251LWxpbnV4LWFybQkJYXJtZWwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoCmluZGV4IDIzMWE2YTIuLjlmZTBjYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDItQWRhcHQtdG8tbGludXgtd3JzLWtlcm5lbC12ZXJzaW9uLXdoaWNoLWhhcy1jaGFyYWN0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAyLUFkYXB0LXRvLWxpbnV4LXdycy1rZXJuZWwtdmVyc2lvbi13aGljaC1oYXMtY2hhcmFjdGUucGF0Y2gKQEAgLTEzLDEzICsxMywxMyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvZHBrZy9wYXJzZWhlbHAuYyBiL2xpYi9kcGtnL3BhcnNlaGVscC5jCi1pbmRleCA3OWIyOTA4Li43NzU4YWE1IDEwMDY0NAoraW5kZXggNDUzMDc3ZmQ5Li5mNDJlYTI4ODIgMTAwNjQ0CiAtLS0gYS9saWIvZHBrZy9wYXJzZWhlbHAuYwogKysrIGIvbGliL2Rwa2cvcGFyc2VoZWxwLmMKLUBAIC0yMzUsMTQgKzIzNSwxMiBAQCBwYXJzZXZlcnNpb24oc3RydWN0IGRwa2dfdmVyc2lvbiAqcnZlcnNpb24sIGNvbnN0IGNoYXIgKnN0cmluZywKLSAKLSAgIC8qIFhYWDogV291bGQgYmUgZmFzdGVyIHRvIHVzZSBzb21ldGhpbmcgbGlrZSBjaXN2ZXJzaW9uIGFuZCBjaXNyZXZpc2lvbi4gKi8KK0BAIC0yNDMsMTQgKzI0MywxMiBAQCBwYXJzZXZlcnNpb24oc3RydWN0IGRwa2dfdmVyc2lvbiAqcnZlcnNpb24sIGNvbnN0IGNoYXIgKnN0cmluZywKICAgIHB0ciA9IHJ2ZXJzaW9uLT52ZXJzaW9uOworICAgaWYgKCEqcHRyKQorICAgICByZXR1cm4gZHBrZ19wdXRfZXJyb3IoZXJyLCBfKCJ2ZXJzaW9uIG51bWJlciBpcyBlbXB0eSIpKTsKIC0gIGlmICgqcHRyICYmICFjX2lzZGlnaXQoKnB0cisrKSkKIC0gICAgcmV0dXJuIGRwa2dfcHV0X3dhcm4oZXJyLCBfKCJ2ZXJzaW9uIG51bWJlciBkb2VzIG5vdCBzdGFydCB3aXRoIGRpZ2l0IikpOwogICAgZm9yICg7ICpwdHI7IHB0cisrKSB7CkBAIC0zMyw2ICszMyw2IEBACiAgICAgICAgcmV0dXJuIGRwa2dfcHV0X3dhcm4oZXJyLCBfKCJpbnZhbGlkIGNoYXJhY3RlciBpbiByZXZpc2lvbiBudW1iZXIiKSk7CiAgICB9CiAgCi0tLSAKLTIuMS40CiAKKy0tIAorMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCmluZGV4IGE2YjAwODguLmQ5Mjk0NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCkBAIC02LDM3ICs2LDM2IEBACiBoZWxwcyBjb21waWxpbmcgZHBrZyBmb3IgbXVzbC9hcm0tc29mdGZsb2F0CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIC0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBvc3RhYmxlICAgICAgfCAxICsKLSB0cmlwbGV0dGFibGUgfCAxICsKKyBkYXRhL29zdGFibGUgICAgfCAxICsKKyBkYXRhL3R1cGxldGFibGUgfCAxICsKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCi1kaWZmIC0tZ2l0IGEvb3N0YWJsZSBiL29zdGFibGUKLWluZGV4IDNiYjY4MTkuLmQwZmZkYzcgMTAwNjQ0Ci0tLS0gYS9vc3RhYmxlCi0rKysgYi9vc3RhYmxlCi1AQCAtMTUsNiArMTUsNyBAQAotIHVjbGliY2VhYmktbGludXgJbGludXgtdWNsaWJjZWFiaQlsaW51eFteLV0qLXVjbGliY2VhYmkKLSB1Y2xpYmMtbGludXgJCWxpbnV4LXVjbGliYwkJbGludXhbXi1dKi11Y2xpYmMKLSBtdXNsZWFiaWhmLWxpbnV4CWxpbnV4LW11c2xlYWJpaGYJbGludXhbXi1dKi1tdXNsZWFiaWhmCi0rbXVzbGVhYmktbGludXgJCWxpbnV4LW11c2xlYWJpCQlsaW51eFteLV0qLW11c2xlYWJpCi0gbXVzbC1saW51eAkJbGludXgtbXVzbAkJbGludXhbXi1dKi1tdXNsCi0gZ251ZWFiaWhmLWxpbnV4CQlsaW51eC1nbnVlYWJpaGYJCWxpbnV4W14tXSotZ251ZWFiaWhmCi0gZ251ZWFiaS1saW51eAkJbGludXgtZ251ZWFiaQkJbGludXhbXi1dKi1nbnVlYWJpCi1kaWZmIC0tZ2l0IGEvdHJpcGxldHRhYmxlIGIvdHJpcGxldHRhYmxlCi1pbmRleCAxMjEzNTg0Li43MGQyNGMxIDEwMDY0NAotLS0tIGEvdHJpcGxldHRhYmxlCi0rKysgYi90cmlwbGV0dGFibGUKLUBAIC02LDYgKzYsNyBAQAotIHVjbGliY2VhYmktbGludXgtYXJtCXVjbGliYy1saW51eC1hcm1lbAotIHVjbGliYy1saW51eC08Y3B1Pgl1Y2xpYmMtbGludXgtPGNwdT4KLSBtdXNsZWFiaWhmLWxpbnV4LWFybQltdXNsLWxpbnV4LWFybWhmCi0rbXVzbGVhYmktbGludXgtYXJtCW11c2wtbGludXgtYXJtZWwKLSBtdXNsLWxpbnV4LTxjcHU+CW11c2wtbGludXgtPGNwdT4KLSBnbnVlYWJpaGYtbGludXgtYXJtCWFybWhmCi0gZ251ZWFiaS1saW51eC1hcm0JYXJtZWwKK2RpZmYgLS1naXQgYS9kYXRhL29zdGFibGUgYi9kYXRhL29zdGFibGUKK2luZGV4IDk5YzFmODg5ZC4uYmU2NDM0MjcxIDEwMDY0NAorLS0tIGEvZGF0YS9vc3RhYmxlCisrKysgYi9kYXRhL29zdGFibGUKK0BAIC0xNyw2ICsxNyw3IEBACisgZWFiaS11Y2xpYmMtbGludXgJbGludXgtdWNsaWJjZWFiaQlsaW51eFteLV0qLXVjbGliY2VhYmkKKyBiYXNlLXVjbGliYy1saW51eAlsaW51eC11Y2xpYmMJCWxpbnV4W14tXSotdWNsaWJjCisgZWFiaWhmLW11c2wtbGludXgJbGludXgtbXVzbGVhYmloZglsaW51eFteLV0qLW11c2xlYWJpaGYKKytlYWJpLW11c2wtbGludXgJCWxpbnV4LW11c2xlYWJpCQlsaW51eFteLV0qLW11c2xlYWJpCisgYmFzZS1tdXNsLWxpbnV4CQlsaW51eC1tdXNsCQlsaW51eFteLV0qLW11c2wKKyBlYWJpaGYtZ251LWxpbnV4CWxpbnV4LWdudWVhYmloZgkJbGludXhbXi1dKi1nbnVlYWJpaGYKKyBlYWJpLWdudS1saW51eAkJbGludXgtZ251ZWFiaQkJbGludXhbXi1dKi1nbnVlYWJpCitkaWZmIC0tZ2l0IGEvZGF0YS90dXBsZXRhYmxlIGIvZGF0YS90dXBsZXRhYmxlCitpbmRleCA1ZjUwMGY2Y2EuLjI4ZjAwYmZlNiAxMDA2NDQKKy0tLSBhL2RhdGEvdHVwbGV0YWJsZQorKysrIGIvZGF0YS90dXBsZXRhYmxlCitAQCAtOCw2ICs4LDcgQEAKKyBlYWJpLXVjbGliYy1saW51eC1hcm0JCXVjbGliYy1saW51eC1hcm1lbAorIGJhc2UtdWNsaWJjLWxpbnV4LTxjcHU+CQl1Y2xpYmMtbGludXgtPGNwdT4KKyBlYWJpaGYtbXVzbC1saW51eC1hcm0JCW11c2wtbGludXgtYXJtaGYKKytlYWJpLW11c2wtbGludXgtYXJtCQltdXNsLWxpbnV4LWFybWVsCisgYmFzZS1tdXNsLWxpbnV4LTxjcHU+CQltdXNsLWxpbnV4LTxjcHU+CisgaWxwMzItZ251LWxpbnV4LWFybTY0CQlhcm02NGlscDMyCisgZWFiaWhmLWdudS1saW51eC1hcm0JCWFybWhmCiAtLSAKLTIuNi40CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwNy1kcGtnLWRlYi1idWlsZC5jLVJlbW92ZS11c2FnZS1vZi1jbGFtcC1tdGltZS1pbi10YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaAppbmRleCA4YmZhYWQxLi4xYjk4NWRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaApAQCAtMjMsMTggKzIzLDE3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9kcGtnLWRlYi9idWlsZC5jIGIvZHBrZy1kZWIvYnVpbGQuYwotaW5kZXggNjU1YWE1NS4uOTI3ZjU2ZiAxMDA2NDQKK2luZGV4IGE5MmI1OGUuLmEzZDE5MTIgMTAwNjQ0CiAtLS0gYS9kcGtnLWRlYi9idWlsZC5jCiArKysgYi9kcGtnLWRlYi9idWlsZC5jCi1AQCAtNDQ3LDcgKzQ0Nyw3IEBAIHRhcmJhbGxfcGFjayhjb25zdCBjaGFyICpkaXIsIGZpbGVuYW1lc19mZWVkX2Z1bmMgKnRhcl9maWxlbmFtZXNfZmVlZGVyLAotICAgICBzbnByaW50ZihtdGltZSwgc2l6ZW9mKG10aW1lKSwgIkAlbGQiLCB0aW1lc3RhbXApOworQEAgLTQ1MCw3ICs0NTAsNyBAQCB0YXJiYWxsX3BhY2soY29uc3QgY2hhciAqZGlyLCBmaWxlbmFtZXNfZmVlZF9mdW5jICp0YXJfZmlsZW5hbWVzX2ZlZWRlciwKICAKLSAgICAgZXhlY2xwKFRBUiwgInRhciIsICItY2YiLCAiLSIsICItLWZvcm1hdD1nbnUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIi0tbXRpbWUiLCBtdGltZSwgIi0tY2xhbXAtbXRpbWUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIi0tbXRpbWUiLCBtdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICItLW51bGwiLCAiLS1uby11bnF1b3RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICItLW5vLXJlY3Vyc2lvbiIsICItVCIsICItIiwgTlVMTCk7Ci0gICAgIG9oc2hpdGUoXygidW5hYmxlIHRvIGV4ZWN1dGUgJXMgKCVzKSIpLCAidGFyIC1jZiIsIFRBUik7CisgICAgIGNvbW1hbmRfaW5pdCgmY21kLCBUQVIsICJ0YXIgLWNmIik7CisgICAgIGNvbW1hbmRfYWRkX2FyZ3MoJmNtZCwgInRhciIsICItY2YiLCAiLSIsICItLWZvcm1hdD1nbnUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW10aW1lIiwgbXRpbWUsICItLWNsYW1wLW10aW1lIiwgTlVMTCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbXRpbWUiLCBtdGltZSwgTlVMTCk7CisgICAgIC8qIE1vZGUgbWlnaHQgYmVjb21lIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgcGFzcyBpdCBiZWZvcmUgLVQuICovCisgICAgIGlmIChtb2RlKQorICAgICAgIGNvbW1hbmRfYWRkX2FyZ3MoJmNtZCwgIi0tbW9kZSIsIG1vZGUsIE5VTEwpOwogLS0gCi0yLjEuNAotCisyLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FkZF9hcm1lYl90cmlwbGV0X2VudHJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2gKaW5kZXggZGM2OWViMi4uZDE2NTYxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2gKQEAgLTI0LDIzICsyNCwyNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtyaXNobmFuamFuYXBwYSwgSmFnYWRlZXNoIDxqYWdhZGVlc2gua3Jpc2huYW5qYW5hcHBhQGNhdml1bW5ldHdvcmtzLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogCiAtLS0KLSB0cmlwbGV0dGFibGUgfCAxICsKKyBkYXRhL3R1cGxldGFibGUgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL3RyaXBsZXR0YWJsZSBiL3RyaXBsZXR0YWJsZQotaW5kZXggYWJlNDcyNi4uMWU5YzI0NyAxMDA2NDQKLS0tLSBhL3RyaXBsZXR0YWJsZQotKysrIGIvdHJpcGxldHRhYmxlCi1AQCAtMTEsNiArMTEsNyBAQCBnbnVlYWJpaGYtbGludXgtYXJtCWFybWhmCi0gZ251ZWFiaS1saW51eC1hcm0JYXJtZWwKLSBnbnVhYmluMzItbGludXgtbWlwczY0cjZlbAltaXBzbjMycjZlbAotIGdudWFiaW4zMi1saW51eC1taXBzNjRyNgltaXBzbjMycjYKLStnbnVlYWJpLWxpbnV4LWFybWViCWFybWViCi0gZ251YWJpbjMyLWxpbnV4LW1pcHM2NGVsCW1pcHNuMzJlbAotIGdudWFiaW4zMi1saW51eC1taXBzNjQJbWlwc24zMgotIGdudWFiaTY0LWxpbnV4LW1pcHM2NHI2ZWwJbWlwczY0cjZlbAorZGlmZiAtLWdpdCBhL2RhdGEvdHVwbGV0YWJsZSBiL2RhdGEvdHVwbGV0YWJsZQoraW5kZXggYjc4MDJiZWMzLi41ZjUwMGY2Y2EgMTAwNjQ0CistLS0gYS9kYXRhL3R1cGxldGFibGUKKysrKyBiL2RhdGEvdHVwbGV0YWJsZQorQEAgLTEyLDYgKzEyLDcgQEAgYmFzZS1tdXNsLWxpbnV4LTxjcHU+CQltdXNsLWxpbnV4LTxjcHU+CisgaWxwMzItZ251LWxpbnV4LWFybTY0CQlhcm02NGlscDMyCisgZWFiaWhmLWdudS1saW51eC1hcm0JCWFybWhmCisgZWFiaS1nbnUtbGludXgtYXJtCQlhcm1lbAorK2VhYmktZ251LWxpbnV4LWFybWViCQlhcm1lYgorIGFiaW4zMi1nbnUtbGludXgtbWlwczY0cjZlbAltaXBzbjMycjZlbAorIGFiaW4zMi1nbnUtbGludXgtbWlwczY0cjYJbWlwc24zMnI2CisgYWJpbjMyLWdudS1saW51eC1taXBzNjRlbAltaXBzbjMyZWwKIC0tIAotMi4xLjQKKzIuMTEuMAorCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FyY2hfcG0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9hcmNoX3BtLnBhdGNoCmluZGV4IGNhZDRjMGYuLjRlMGQyMmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FyY2hfcG0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYXJjaF9wbS5wYXRjaApAQCAtNywxNiArNywyMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CiAKKy0tLQorIHNjcmlwdHMvRHBrZy9BcmNoLnBtIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKIAorZGlmZiAtLWdpdCBhL3NjcmlwdHMvRHBrZy9BcmNoLnBtIGIvc2NyaXB0cy9EcGtnL0FyY2gucG0KK2luZGV4IDE3MjA4NDdiOC4uNjM0NWNlM2I5IDEwMDY0NAogLS0tIGEvc2NyaXB0cy9EcGtnL0FyY2gucG0KICsrKyBiL3NjcmlwdHMvRHBrZy9BcmNoLnBtCi1AQCAtMjMzLDkgKzIzMyw2IEBAIHN1YiByZWFkX3RyaXBsZXR0YWJsZSgpCi0gCQkgICAgKG15ICRkdCA9ICRkZWJ0cmlwbGV0KSA9fiBzLzxjcHU+LyRfY3B1LzsKK0BAIC0zMjMsOSArMzIzLDYgQEAgc3ViIF9sb2FkX3R1cGxldGFibGUoKQorIAkJICAgIChteSAkZHQgPSAkZGVidHVwbGUpID1+IHMvPGNwdT4vJF9jcHUvOwogIAkJICAgIChteSAkZGEgPSAkZGViYXJjaCkgPX4gcy88Y3B1Pi8kX2NwdS87CiAgCi0tCQkgICAgbmV4dCBpZiBleGlzdHMgJGRlYmFyY2hfdG9fZGVidHJpcGxldHskZGF9Ci0tCQkgICAgICAgICBvciBleGlzdHMgJGRlYnRyaXBsZXRfdG9fZGViYXJjaHskZHR9OworLQkJICAgIG5leHQgaWYgZXhpc3RzICRkZWJhcmNoX3RvX2RlYnR1cGxleyRkYX0KKy0JCSAgICAgICAgIG9yIGV4aXN0cyAkZGVidHVwbGVfdG9fZGViYXJjaHskZHR9OwogLQotIAkJICAgICRkZWJhcmNoX3RvX2RlYnRyaXBsZXR7JGRhfSA9ICRkdDsKLSAJCSAgICAkZGVidHJpcGxldF90b19kZWJhcmNoeyRkdH0gPSAkZGE7CisgCQkgICAgJGRlYmFyY2hfdG9fZGVidHVwbGV7JGRhfSA9ICRkdDsKKyAJCSAgICAkZGVidHVwbGVfdG9fZGViYXJjaHskZHR9ID0gJGRhOwogIAkJfQorLS0gCisyLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9kcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCmluZGV4IGYwYjA3ODkuLjlhMjQ4Y2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvZHBrZy1jb25maWd1cmUuc2VydmljZQpAQCAtOCw3ICs4LDcgQEAKIFR5cGU9b25lc2hvdAogRW52aXJvbm1lbnRGaWxlPS1AU1lTQ09ORkRJUkAvZGVmYXVsdC9wb3N0aW5zdAogRXhlY1N0YXJ0PS1AQkFTRV9CSU5ESVJAL3NoIC1jICIgaWYgWyAkUE9TVElOU1RfTE9HR0lORyA9ICcxJyBdOyB0aGVuIEBCSU5ESVJAL2Rwa2cgLS1jb25maWd1cmUgLWEgPiAkTE9HRklMRSAyPiYxOyBlbHNlIEBCSU5ESVJAL2Rwa2cgLS1jb25maWd1cmUgLWE7IGZpIgotRXhlY1N0YXJ0UG9zdD1AQkFTRV9CSU5ESVJAL3N5c3RlbWN0bCBkaXNhYmxlIGRwa2ctY29uZmlndXJlLnNlcnZpY2UKK0V4ZWNTdGFydFBvc3Q9QEJBU0VfQklORElSQC9zeXN0ZW1jdGwgLS1uby1yZWxvYWQgZGlzYWJsZSBkcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCiBTdGFuZGFyZE91dHB1dD1zeXNsb2cKIFJlbWFpbkFmdGVyRXhpdD1ObwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9ub21hbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL25vbWFuLnBhdGNoCmluZGV4IGQzMGMxNTAuLmE3ZjNjYjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL25vbWFuLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL25vbWFuLnBhdGNoCkBAIC0xLDE0ICsxLDIyIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KIAotZGlmZiAtcnVOIGRwa2ctMS4xNS44LjUtb3JpZy9NYWtlZmlsZS5hbSBkcGtnLTEuMTUuOC41L01ha2VmaWxlLmFtCi0tLS0gZHBrZy0xLjE1LjguNS1vcmlnL01ha2VmaWxlLmFtCTIwMTAtMTAtMDggMTI6Mjc6MTUuMDQyMDgzNzAzICswODAwCi0rKysgZHBrZy0xLjE1LjguNS9NYWtlZmlsZS5hbQkyMDEwLTEwLTA4IDEyOjI3OjI3Ljc1NTE0ODIyOCArMDgwMAotQEAgLTEyLDggKzEyLDcgQEAKLSAJdXRpbHMgXAorLS0tCisgTWFrZWZpbGUuYW0gfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDBkYTUyY2IxNi4uYTFmNzllMGEyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTMsOCArMTMsNyBAQCBTVUJESVJTID0gXAogIAkkKE1BWUJFX0RTRUxFQ1QpIFwKICAJc2NyaXB0cyBcCisgCXQtZnVuYyBcCiAtCXBvIFwKIC0JbWFuCiArCXBvCiAgCiAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyAKKy0tIAorMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEzODVhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSBkcGtnLmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MzFUMjIxOTMxWi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub21hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdGFyLW5vLXRpbWVzdGFtcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcmNoX3BtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtT3VyLXByZS1wb3N0aW5zdHMtZXhwZWN0LUQtdG8tYmUtc2V0LXdoZW4tcnVubmluZy1pbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVRoZS1sdXRpbWVzLWZ1bmN0aW9uLWRvZXNuLXQtd29yay1wcm9wZXJseS1mb3ItYWxsLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1kcGtnLWNvbXBpbGVyLm00LXJlbW92ZS1XdmxhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctZHBrZy1kZWItYnVpbGQuYy1SZW1vdmUtdXNhZ2Utb2YtY2xhbXAtbXRpbWUtaW4tdGFyLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoICIKLQotU1JDX1VSSVttZDVzdW1dID0gImNjZmYxNzczMGMwOTY0NDI4ZmMxODZkZWQyZjJmNDAxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyNTUyNGRhNDFiYTE4YjE4M2ZmMTFlMzg4ZWI4Njg2ZjdjYzU4ZWU4MzVlZDdkNDhiZDE1OWM0NmE4YjZkYzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGM1OWYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGRwa2cuaW5jCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE3MDUxOFQwOTM4MzhaL3Bvb2wvbWFpbi9kL2Rwa2cvZHBrZ18xLjE4LjI0LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ub21hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdGFyLW5vLXRpbWVzdGFtcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcmNoX3BtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtT3VyLXByZS1wb3N0aW5zdHMtZXhwZWN0LUQtdG8tYmUtc2V0LXdoZW4tcnVubmluZy1pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVRoZS1sdXRpbWVzLWZ1bmN0aW9uLWRvZXNuLXQtd29yay1wcm9wZXJseS1mb3ItYWxsLXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1kcGtnLWNvbXBpbGVyLm00LXJlbW92ZS1XdmxhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctZHBrZy1kZWItYnVpbGQuYy1SZW1vdmUtdXNhZ2Utb2YtY2xhbXAtbXRpbWUtaW4tdGFyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHBrZy1TdXBwb3J0LW11c2x4MzItYnVpbGQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9nbGliYzIuNS1zeW5jX2ZpbGVfcmFuZ2UucGF0Y2ggIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDJlOGFmOGZhZjFlNjg5MjI4ZGE4MDZjM2U4YzY4ODIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDg1MzA4MWQzZTA2YmZkNDZhMjI3MDU2ZTU5MWYwOTRlNDJlNzhmYThhNTc5M2IwMDkzYmFkMzBiNzEwZDdiNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1leGl0LXdpdGgtZXhpdC1zdGF0dXMtMC1pZi1uby1lcnJvcnMtd2VyZS1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1lMmZzY2stZXhpdC13aXRoLWV4aXQtc3RhdHVzLTAtaWYtbm8tZXJyb3JzLXdlcmUtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDE3NTIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1leGl0LXdpdGgtZXhpdC1zdGF0dXMtMC1pZi1uby1lcnJvcnMtd2VyZS1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotRnJvbSBiZjlmM2I2ZDViMTBkMTkyMThiNGVkOTA0YzEyYjIyZTM2ZWM1N2RkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLURhdGU6IFRodSwgMTYgRmViIDIwMTcgMjI6MDI6MzUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gZTJmc2NrOiBleGl0IHdpdGggZXhpdCBzdGF0dXMgMCBpZiBubyBlcnJvcnMgd2VyZSBmaXhlZAotCi1QcmV2aW91c2x5LCBlMmZzY2sgd291bGQgZXhpdCB3aXRoIGEgc3RhdHVzIGNvZGUgb2YgMSBldmVuIHRob3VnaCB0aGUKLW9ubHkgY2hhbmdlcyB0aGF0IGl0IG1hZGUgdG8gdGhlIGZpbGUgc3lzdGVtIHdlcmUgdmFyaW91cwotb3B0aW16aWF0aW9ucyBhbmQgbm90IGZpeGluZyBmaWxlIHN5c3RlbSBjb3JydXB0aW9uLiAgU2luY2UgdGhlIG1hbgotcGFnZSBzdGF0ZXMgdGhhdCBhbiBleGl0IHN0YXR1cyBvZiAxIG1lYW5zICJmaWxlIHN5c3RlbSBlcnJvcnMKLWNvcnJ1cHRlZCIsIGZpeCBlMmZzY2sgdG8gcmV0dXJuIGFuIGV4aXQgc3RhdHVzIG9mIDAuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBTY2h1bHR6IDxkLnNjaHVsdHpAcGh5dGVjLmRlPgotLS0tCi0gZTJmc2NrL2UyZnNjay5jb25mLjUuaW4gICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrKysKLSBlMmZzY2svam91cm5hbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGUyZnNjay9wcm9ibGVtLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKy0tLQotIGUyZnNjay9wcm9ibGVtUC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gZTJmc2NrL3VuaXguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwICsrKysrKysrKysrKysrKystLS0tCi0gdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMSAgICAgICB8ICAyICstCi0gdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMSB8ICAyICstCi0gdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjEgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMSAgICB8ICAyICstCi0gdGVzdHMvZl9leHRlbnRfaHRyZWUvZXhwZWN0LjEgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9qbmxfZXJybm8vZXhwZWN0LjEgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9vcnBoYW4vZXhwZWN0LjEgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9vcnBoYW5fZXh0ZW50c19pbm9kZS9leHBlY3QuMSAgICAgICB8ICAyICstCi0gdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4xICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl91bnNvcnRlZF9FQXMvZXhwZWN0LjEgICAgICAgICAgICAgICB8ICAyICstCi0gMTYgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lMmZzY2svZTJmc2NrLmNvbmYuNS5pbiBiL2UyZnNjay9lMmZzY2suY29uZi41LmluCi1pbmRleCAxODQ4YmRiLi4wYmZjNzZhIDEwMDY0NAotLS0tIGEvZTJmc2NrL2UyZnNjay5jb25mLjUuaW4KLSsrKyBiL2UyZnNjay9lMmZzY2suY29uZi41LmluCi1AQCAtMzAzLDYgKzMwMywxMyBAQCBvZiAnc2hvdWxkIHRoaXMgcHJvYmxlbSBiZSBmaXhlZD8nLiAgVGhlCi0gb3B0aW9uIGV2ZW4gb3ZlcnJpZGVzIHRoZQotIC5CIC15Ci0gb3B0aW9uIGdpdmVuIG9uIHRoZSBjb21tYW5kLWxpbmUgKGp1c3QgZm9yIHRoZSBzcGVjaWZpYyBwcm9ibGVtLCBvZiBjb3Vyc2UpLgotKy5UUAotKy5JIG5vdF9hX2ZpeAotK1RoaXMgYm9vbGVhbiBvcHRpb24sIGl0IHNldCB0byB0cnVlLCBtYXJrcyB0aGUgcHJvYmxlbSBhcwotK29uZSB3aGVyZSBpZiB0aGUgdXNlciBnaXZlcyBwZXJtaXNzaW9uIHRvIG1ha2UgdGhlIHJlcXVlc3RlZCBjaGFuZ2UsCi0raXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBmaWxlIHN5c3RlbSBoYWQgYSBwcm9ibGVtIHdoaWNoIGhhcyBzaW5jZQotK2JlZW4gZml4ZWQuICBUaGlzIGlzIHVzZWQgZm9yIHJlcXVlc3RzIHRvIG9wdGltaXplIHRoZSBmaWxlIHN5c3RlbSdzCi0rZGF0YSBzdHJ1Y3R1cmUsIHN1Y2ggYXMgcHJ1bmluZyBhbiBleHRlbnQgdHJlZS4KLSBAVERCX01BTl9DT01NRU5UQC5TSCBUSEUgW3NjcmF0Y2hfZmlsZXNdIFNUQU5aQQotIEBUREJfTUFOX0NPTU1FTlRAVGhlIGZvbGxvd2luZyByZWxhdGlvbnMgYXJlIGRlZmluZWQgaW4gdGhlCi0gQFREQl9NQU5fQ09NTUVOVEAuSSBbc2NyYXRjaF9maWxlc10KLWRpZmYgLS1naXQgYS9lMmZzY2svam91cm5hbC5jIGIvZTJmc2NrL2pvdXJuYWwuYwotaW5kZXggNDZmZTdiNC4uYzRmNThmMSAxMDA2NDQKLS0tLSBhL2UyZnNjay9qb3VybmFsLmMKLSsrKyBiL2UyZnNjay9qb3VybmFsLmMKLUBAIC01NzIsNiArNTcyLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfdjJfam91cm5hbF9maWVsZHMoam91cm5hbF90ICpqb3VybmFsKQotIAlpZiAoIWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9DTEVBUl9WMl9KT1VSTkFMLCAmcGN0eCkpCi0gCQlyZXR1cm47Ci0gCi0rCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfUFJPQkxFTVNfRklYRUQ7Ci0gCW1lbXNldCgoKGNoYXIgKikgam91cm5hbC0+al9zdXBlcmJsb2NrKSArIFYxX1NCX1NJWkUsIDAsCi0gCSAgICAgICBjdHgtPmZzLT5ibG9ja3NpemUtVjFfU0JfU0laRSk7Ci0gCW1hcmtfYnVmZmVyX2RpcnR5KGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKLWRpZmYgLS1naXQgYS9lMmZzY2svcHJvYmxlbS5jIGIvZTJmc2NrL3Byb2JsZW0uYwotaW5kZXggMzRhNjcxZS4uNGIyNTA2OSAxMDA2NDQKLS0tLSBhL2UyZnNjay9wcm9ibGVtLmMKLSsrKyBiL2UyZnNjay9wcm9ibGVtLmMKLUBAIC0xMjc2LDEyICsxMjc2LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZTJmc2NrX3Byb2JsZW0gcHJvYmxlbV90YWJsZVtdID0gewotIAkvKiBJbm9kZSBleHRlbnQgdHJlZSBjb3VsZCBiZSBzaG9ydGVyICovCi0gCXsgUFJfMUVfQ0FOX0NPTExBUFNFX0VYVEVOVF9UUkVFLAotIAkgIE5fKCJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIpLAotLQkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB9LAotKwkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB8IFBSX05PVF9BX0ZJWCB9LAotIAotIAkvKiBJbm9kZSBleHRlbnQgdHJlZSBjb3VsZCBiZSBuYXJyb3dlciAqLwotIAl7IFBSXzFFX0NBTl9OQVJST1dfRVhURU5UX1RSRUUsCi0gCSAgTl8oIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIpLAotLQkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB9LAotKwkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB8IFBSX05PVF9BX0ZJWCB9LAotIAotIAkvKiBQYXNzIDIgZXJyb3JzICovCi0gCi1AQCAtMjE2Niw2ICsyMTY2LDcgQEAgaW50IGZpeF9wcm9ibGVtKGUyZnNja190IGN0eCwgcHJvYmxlbV90IGNvZGUsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpCi0gCQlyZWNvbmZpZ3VyZV9ib29sKGN0eCwgcHRyLCBrZXksIFBSX05PX05PTVNHLCAibm9fbm9tc2ciKTsKLSAJCXJlY29uZmlndXJlX2Jvb2woY3R4LCBwdHIsIGtleSwgUFJfUFJFRU5fTk9IRFIsICJwcmVlbl9ub2hlYWRlciIpOwotIAkJcmVjb25maWd1cmVfYm9vbChjdHgsIHB0ciwga2V5LCBQUl9GT1JDRV9OTywgImZvcmNlX25vIik7Ci0rCQlyZWNvbmZpZ3VyZV9ib29sKGN0eCwgcHRyLCBrZXksIFBSX05PVF9BX0ZJWCwgIm5vdF9hX2ZpeCIpOwotIAkJcHJvZmlsZV9nZXRfaW50ZWdlcihjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwKLSAJCQkJICAgICJtYXhfY291bnRfcHJvYmxlbXMiLCAwLCAwLAotIAkJCQkgICAgJnB0ci0+bWF4X2NvdW50KTsKLUBAIC0yMjgzLDcgKzIyODQsOCBAQCBpbnQgZml4X3Byb2JsZW0oZTJmc2NrX3QgY3R4LCBwcm9ibGVtX3QgY29kZSwgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKLSAJaWYgKHB0ci0+ZmxhZ3MgJiBQUl9BRlRFUl9DT0RFKQotIAkJYW5zd2VyID0gZml4X3Byb2JsZW0oY3R4LCBwdHItPnNlY29uZF9jb2RlLCBwY3R4KTsKLSAKLS0JaWYgKGFuc3dlciAmJiAocHRyLT5wcm9tcHQgIT0gUFJPTVBUX05PTkUpKQotKwlpZiAoYW5zd2VyICYmIChwdHItPnByb21wdCAhPSBQUk9NUFRfTk9ORSkgJiYKLSsJICAgICEocHRyLT5mbGFncyAmIFBSX05PVF9BX0ZJWCkpCi0gCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX1BST0JMRU1TX0ZJWEVEOwotIAotIAlyZXR1cm4gYW5zd2VyOwotZGlmZiAtLWdpdCBhL2UyZnNjay9wcm9ibGVtUC5oIGIvZTJmc2NrL3Byb2JsZW1QLmgKLWluZGV4IDc5NDRjZDYuLjYzYmI4ZGYgMTAwNjQ0Ci0tLS0gYS9lMmZzY2svcHJvYmxlbVAuaAotKysrIGIvZTJmc2NrL3Byb2JsZW1QLmgKLUBAIC00NCwzICs0NCw0IEBAIHN0cnVjdCBsYXRjaF9kZXNjciB7Ci0gI2RlZmluZSBQUl9DT05GSUcJMHgwODAwMDAgLyogVGhpcyBwcm9ibGVtIGhhcyBiZWVuIGN1c3RvbWl6ZWQKLSAJCQkJICAgIGZyb20gdGhlIGNvbmZpZyBmaWxlICovCi0gI2RlZmluZSBQUl9GT1JDRV9OTwkweDEwMDAwMCAvKiBGb3JjZSB0aGUgYW5zd2VyIHRvIGJlIG5vICovCi0rI2RlZmluZSBQUl9OT1RfQV9GSVgJMHgyMDAwMDAgLyogWWVzIGRvZXNuJ3QgbWVhbiBhIHByb2JsZW0gd2FzIGZpeGVkICovCi1kaWZmIC0tZ2l0IGEvZTJmc2NrL3VuaXguYyBiL2UyZnNjay91bml4LmMKLWluZGV4IGViOWYzMTEuLjllNGQzMWEgMTAwNjQ0Ci0tLS0gYS9lMmZzY2svdW5peC5jCi0rKysgYi9lMmZzY2svdW5peC5jCi1AQCAtMTkwMSwxMSArMTkwMSwyMyBAQCBub19qb3VybmFsOgotIAkJZml4X3Byb2JsZW0oY3R4LCBQUl82X0lPX0ZMVVNILCAmcGN0eCk7Ci0gCi0gCWlmICh3YXNfY2hhbmdlZCkgewotLQkJZXhpdF92YWx1ZSB8PSBGU0NLX05PTkRFU1RSVUNUOwotLQkJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikpCi0tCQkJbG9nX291dChjdHgsIF8oIlxuJXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyAiCi0tCQkJCSAgICAgICAiTU9ESUZJRUQgKioqKipcbiIpLAotKwkJaW50IGZzX2ZpeGVkID0gKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19QUk9CTEVNU19GSVhFRCk7Ci0rCi0rCQlpZiAoZnNfZml4ZWQpCi0rCQkJZXhpdF92YWx1ZSB8PSBGU0NLX05PTkRFU1RSVUNUOwotKwkJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikpIHsKLSsjaWYgMAkvKiBEbyB0aGlzIGxhdGVyOyBpdCBicmVha3MgdG9vIG1hbnkgdGVzdHMnIGdvbGRlbiBvdXRwdXRzICovCi0rCQkJbG9nX291dChjdHgsIGZzX2ZpeGVkID8KLSsJCQkJXygiXG4lczogKioqKiogRklMRSBTWVNURU0gRVJST1JTICIKLSsJCQkJICAiQ09SUkVDVEVEICoqKioqXG4iKSA6Ci0rCQkJCV8oIiVzOiBGaWxlIHN5c3RlbSB3YXMgbW9kaWZpZWQuXG4iKSwKLSAJCQkJY3R4LT5kZXZpY2VfbmFtZSk7Ci0rI2Vsc2UKLSsJCQlsb2dfb3V0KGN0eCwKLSsJCQkJXygiXG4lczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iKSwKLSsJCQkJY3R4LT5kZXZpY2VfbmFtZSk7Ci0rI2VuZGlmCi0rCQl9Ci0gCQlpZiAoY3R4LT5tb3VudF9mbGFncyAmIEVYVDJfTUZfSVNST09UKSB7Ci0gCQkJbG9nX291dChjdHgsIF8oIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iKSwKLSAJCQkJY3R4LT5kZXZpY2VfbmFtZSk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMSBiL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvZXhwZWN0LjEKLWluZGV4IGUyZWI2NWUuLjgxNjVhNTggMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2NvbGxhcHNlX2V4dGVudF90cmVlL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2NvbGxhcHNlX2V4dGVudF90cmVlL2V4cGVjdC4xCi1AQCAtMTMsNCArMTMsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTkvNTEyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMSBiL3Rlc3RzL2ZfY29tcHJlc3NfZXh0ZW50X3RyZWVfbGV2ZWwvZXhwZWN0LjEKLWluZGV4IGEzNTljOTkuLmRkMzNmNjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL2V4cGVjdC4xCi1AQCAtMjAsNCArMjAsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgMjYvNTEyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjEgYi90ZXN0cy9mX2NvbnZlcnRfYm1hcC9leHBlY3QuMQotaW5kZXggN2QyY2E4Ni4uYzM4Nzk2MiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2ZfY29udmVydF9ibWFwL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2NvbnZlcnRfYm1hcC9leHBlY3QuMQotQEAgLTIzLDQgKzIzLDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDU3MC8yMDQ4IGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMSBiL3Rlc3RzL2ZfY29udmVydF9ibWFwX2FuZF9leHRlbnQvZXhwZWN0LjEKLWluZGV4IDdhZjkxYWEuLmM4NmM1NzEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2V4cGVjdC4xCi1AQCAtMzAsNCArMzAsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTMvMTI4IGZpbGVzICgxNS40JSBub24tY29udGlndW91cyksIDU3NC8yMDQ4IGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9leHRlbnRfaHRyZWUvZXhwZWN0LjEgYi90ZXN0cy9mX2V4dGVudF9odHJlZS9leHBlY3QuMQotaW5kZXggMjIzY2E2OS4uZWE0ODQwNSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2V4dGVudF9odHJlZS9leHBlY3QuMQotQEAgLTI2LDQgKzI2LDQgQEAgdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSAgICAgICAgICAgIDAgc29ja2V0cwotIC0tLS0tLS0tLS0tLQotICAgICAgICAgIDM0MyBmaWxlcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9qbmxfZXJybm8vZXhwZWN0LjEgYi90ZXN0cy9mX2pubF9lcnJuby9leHBlY3QuMQotaW5kZXggYzU3Mjk1MS4uNDEzNDIzNCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2pubF9lcnJuby9leHBlY3QuMQotQEAgLTYsNCArNiw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiAxMS8yMDQ4IGZpbGVzICg5LjElIG5vbi1jb250aWd1b3VzKSwgMTMzMC84MTkyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xIGIvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xCi1pbmRleCBhMjAyYzgwLi4wYTE4NjU0IDEwMDY0NAotLS0tIGEvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2pvdXJuYWwvZXhwZWN0LjEKLUBAIC01OSw0ICs1OSw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiA1My8yMDQ4IGZpbGVzICgxLjklIG5vbi1jb250aWd1b3VzKSwgMTQwOS84MTkyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9vcnBoYW4vZXhwZWN0LjEgYi90ZXN0cy9mX29ycGhhbi9leHBlY3QuMQotaW5kZXggZWRkYzFmOC4uMDg3ZWJlZSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2Zfb3JwaGFuL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX29ycGhhbi9leHBlY3QuMQotQEAgLTExLDQgKzExLDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzIwNDggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMzAzLzgxOTIgYmxvY2tzCi0tRXhpdCBzdGF0dXMgaXMgMQotK0V4aXQgc3RhdHVzIGlzIDAKLWRpZmYgLS1naXQgYS90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2V4cGVjdC4xIGIvdGVzdHMvZl9vcnBoYW5fZXh0ZW50c19pbm9kZS9leHBlY3QuMQotaW5kZXggMmVhYWI3OC4uNWQ3MTNiMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvZXhwZWN0LjEKLSsrKyBiL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvZXhwZWN0LjEKLUBAIC03LDQgKzcsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTIvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS8xMDAgYmxvY2tzCi0tRXhpdCBzdGF0dXMgaXMgMQotK0V4aXQgc3RhdHVzIGlzIDAKLWRpZmYgLS1naXQgYS90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjEgYi90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjEKLWluZGV4IDYwNzY3NjUuLmMxNDQ5YmEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjEKLSsrKyBiL3Rlc3RzL2ZfcmVoYXNoX2Rpci9leHBlY3QuMQotQEAgLTcsNCArNyw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiAxMDUvMjA0OCBmaWxlcyAoMi45JSBub24tY29udGlndW91cyksIDMzNi81MTIgYmxvY2tzCi0tRXhpdCBzdGF0dXMgaXMgMQotK0V4aXQgc3RhdHVzIGlzIDAKLWRpZmYgLS1naXQgYS90ZXN0cy9mX3Vuc29ydGVkX0VBcy9leHBlY3QuMSBiL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL2V4cGVjdC4xCi1pbmRleCA3ZDU4OGQ3Li42NGI5MDQ1IDEwMDY0NAotLS0tIGEvdGVzdHMvZl91bnNvcnRlZF9FQXMvZXhwZWN0LjEKLSsrKyBiL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL2V4cGVjdC4xCi1AQCAtOCw0ICs4LDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzIwNDggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMjk0LzIwNDggYmxvY2tzCi0tRXhpdCBzdGF0dXMgaXMgMQotK0V4aXQgc3RhdHVzIGlzIDAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzRhNTQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBmNmQxODg1ODBjMmM5NTk5MzE5MDc2ZmVlMjJmMjQyNDY1MmM3MTFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDE5OjU1OjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1pc2MvY3JlYXRlX2lub2RlLmM6IHNldCBkaXIncyBtb2RlIGNvcnJlY3RseQorCitUaGUgZGlyJ3MgbW9kZSBoYXMgYmVlbiBzZXQgYnkgZXh0MmZzX21rZGlyKCkgd2l0aCB1bWFzaywgc28KK3Jlc2V0IGl0IHRvIHRoZSBzb3VyY2UncyBtb2RlIGluIHNldF9pbm9kZV9leHRyYSgpLgorCitGaXhlZCB3aGVuIHNvdXJjZSBkaXIncyBtb2RlIGlzIDUyMSwgYnV0IHRhcmJhbGwgd291bGQgYmUgNzIxLCB0aGlzIHdhcworaW5jb3JyZWN0LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1pc2MvY3JlYXRlX2lub2RlLmMgfCA5ICsrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21pc2MvY3JlYXRlX2lub2RlLmMgYi9taXNjL2NyZWF0ZV9pbm9kZS5jCitpbmRleCA4Y2UzZmFmLi41MGZiYWE4IDEwMDY0NAorLS0tIGEvbWlzYy9jcmVhdGVfaW5vZGUuYworKysrIGIvbWlzYy9jcmVhdGVfaW5vZGUuYworQEAgLTExNiw3ICsxMTYsMTQgQEAgc3RhdGljIGVycmNvZGVfdCBzZXRfaW5vZGVfZXh0cmEoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorIAorIAlpbm9kZS5pX3VpZCA9IHN0LT5zdF91aWQ7CisgCWlub2RlLmlfZ2lkID0gc3QtPnN0X2dpZDsKKy0JaW5vZGUuaV9tb2RlIHw9IHN0LT5zdF9tb2RlOworKwkvKgorKwkgKiBUaGUgZGlyJ3MgbW9kZSBoYXMgYmVlbiBzZXQgYnkgZXh0MmZzX21rZGlyKCkgd2l0aCB1bWFzaywgc28KKysJICogcmVzZXQgaXQgdG8gdGhlIHNvdXJjZSdzIG1vZGUKKysJICovCisrCWlmIFNfSVNESVIoc3QtPnN0X21vZGUpCisrCQlpbm9kZS5pX21vZGUgPSBMSU5VWF9TX0lGRElSIHwgc3QtPnN0X21vZGU7CisrCWVsc2UKKysJCWlub2RlLmlfbW9kZSB8PSBzdC0+c3RfbW9kZTsKKyAJaW5vZGUuaV9hdGltZSA9IHN0LT5zdF9hdGltZTsKKyAJaW5vZGUuaV9tdGltZSA9IHN0LT5zdF9tdGltZTsKKyAJaW5vZGUuaV9jdGltZSA9IHN0LT5zdF9jdGltZTsKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtMS40My1zeXNtYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLTEuNDMtc3lzbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmJmMmJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtMS40My1zeXNtYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotRnJvbSAzMGVmNDFmNjg3MDNiNmExNjAyN2NjODc4NzExOGI4N2YxNDYyZGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZTogTW9uLCAyOCBNYXIgMjAxNiAyMDozMTozMyAtMDQwMAotU3ViamVjdDogW1BBVENIIGUyZnNwcm9nc10gaW5jbHVkZSBzeXMvc3lzbWFjcm9zLmggYXMgbmVlZGVkCi0KLVRoZSBtaW5vci9tYWpvci9tYWtlZGV2IG1hY3JvcyBhcmUgbm90IGVudGlyZWx5IHN0YW5kYXJkLiAgZ2xpYmMgaGFzIGhhZAotdGhlIGRlZmluaXRpb25zIGluIHN5cy9zeXNtYWNyb3MuaCBzaW5jZSB0aGUgc3RhcnQsIGFuZCB3YW50cyB0byBtb3ZlIGF3YXkKLWZyb20gYWx3YXlzIGRlZmluaW5nIHRoZW0gaW1wbGljaXRseSB2aWEgc3lzL3R5cGVzLmggKGFzIHRoaXMgcG9sbHV0ZXMgdGhlCi1uYW1lc3BhY2UgaW4gdmlvbGF0aW9uIG9mIFBPU0lYKS4gIE90aGVyIEMgbGlicmFyaWVzIGhhdmUgYWxyZWFkeSBkcm9wcGVkCi10aGVtLiAgU2luY2UgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYWxyZWFkeSBjaGVja3MgZm9yIHRoaXMgaGVhZGVyLCB1c2UgdGhhdAotdG8gcHVsbCBpbiB0aGUgaGVhZGVyIGluIGZpbGVzIHRoYXQgdXNlIHRoZXNlIG1hY3Jvcy4KLQotU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1UYWtlbiBmcm9tIGdlbnRvbyBwb3J0YWdlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tCi0gZGVidWdmcy9kZWJ1Z2ZzLmMgICAgICB8IDMgKysrCi0gbGliL2Jsa2lkL2Rldm5hbWUuYyAgICB8IDMgKysrCi0gbGliL2Jsa2lkL2Rldm5vLmMgICAgICB8IDMgKysrCi0gbGliL2V4dDJmcy9maW5kZGV2LmMgICB8IDMgKysrCi0gbGliL2V4dDJmcy9pc21vdW50ZWQuYyB8IDMgKysrCi0gbWlzYy9jcmVhdGVfaW5vZGUuYyAgICB8IDQgKysrKwotIG1pc2MvbWtfaHVnZWZpbGVzLmMgICAgfCAzICsrKwotIDcgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZGVidWdmcy9kZWJ1Z2ZzLmMgYi9kZWJ1Z2ZzL2RlYnVnZnMuYwotaW5kZXggYmE4YmU0MC4uN2Q0ODFiYyAxMDA2NDQKLS0tLSBhL2RlYnVnZnMvZGVidWdmcy5jCi0rKysgYi9kZWJ1Z2ZzL2RlYnVnZnMuYwotQEAgLTI2LDYgKzI2LDkgQEAgZXh0ZXJuIGNoYXIgKm9wdGFyZzsKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJkZWJ1Z2ZzLmgiCi0gI2luY2x1ZGUgInV1aWQvdXVpZC5oIgotZGlmZiAtLWdpdCBhL2xpYi9ibGtpZC9kZXZuYW1lLmMgYi9saWIvYmxraWQvZGV2bmFtZS5jCi1pbmRleCAzZTJlZmE5Li42NzFlNzgxIDEwMDY0NAotLS0tIGEvbGliL2Jsa2lkL2Rldm5hbWUuYwotKysrIGIvbGliL2Jsa2lkL2Rldm5hbWUuYwotQEAgLTM2LDYgKzM2LDkgQEAKLSAjaWYgSEFWRV9TWVNfTUtERVZfSAotICNpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gCi0gI2luY2x1ZGUgImJsa2lkUC5oIgotZGlmZiAtLWdpdCBhL2xpYi9ibGtpZC9kZXZuby5jIGIvbGliL2Jsa2lkL2Rldm5vLmMKLWluZGV4IDQ3OWQ5NzcuLjYxZTZmYzcgMTAwNjQ0Ci0tLS0gYS9saWIvYmxraWQvZGV2bm8uYwotKysrIGIvbGliL2Jsa2lkL2Rldm5vLmMKLUBAIC0zMSw2ICszMSw5IEBACi0gI2lmIEhBVkVfU1lTX01LREVWX0gKLSAjaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0gI2VuZGlmCi0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiYmxraWRQLmgiCi0gCi1kaWZmIC0tZ2l0IGEvbGliL2V4dDJmcy9maW5kZGV2LmMgYi9saWIvZXh0MmZzL2ZpbmRkZXYuYwotaW5kZXggMzExNjA4ZC4uNjJmYTBkYiAxMDA2NDQKLS0tLSBhL2xpYi9leHQyZnMvZmluZGRldi5jCi0rKysgYi9saWIvZXh0MmZzL2ZpbmRkZXYuYwotQEAgLTMxLDYgKzMxLDkgQEAKLSAjaWYgSEFWRV9TWVNfTUtERVZfSAotICNpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJleHQyX2ZzLmgiCi0gI2luY2x1ZGUgImV4dDJmcy5oIgotZGlmZiAtLWdpdCBhL2xpYi9leHQyZnMvaXNtb3VudGVkLmMgYi9saWIvZXh0MmZzL2lzbW91bnRlZC5jCi1pbmRleCBlMGY2OWRkLi43NDA0OTk2IDEwMDY0NAotLS0tIGEvbGliL2V4dDJmcy9pc21vdW50ZWQuYwotKysrIGIvbGliL2V4dDJmcy9pc21vdW50ZWQuYwotQEAgLTQ5LDYgKzQ5LDkgQEAKLSAjaWYgSEFWRV9TWVNfVFlQRVNfSAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJleHQyX2ZzLmgiCi0gI2luY2x1ZGUgImV4dDJmcy5oIgotZGlmZiAtLWdpdCBhL21pc2MvY3JlYXRlX2lub2RlLmMgYi9taXNjL2NyZWF0ZV9pbm9kZS5jCi1pbmRleCA0ZGJkOGU1Li45OGFlYjQxIDEwMDY0NAotLS0tIGEvbWlzYy9jcmVhdGVfaW5vZGUuYwotKysrIGIvbWlzYy9jcmVhdGVfaW5vZGUuYwotQEAgLTIyLDYgKzIyLDEwIEBACi0gI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8ZXh0MmZzL2V4dDJmcy5oPgotICNpbmNsdWRlIDxleHQyZnMvZXh0Ml90eXBlcy5oPgotICNpbmNsdWRlIDxleHQyZnMvZmllbWFwLmg+Ci1kaWZmIC0tZ2l0IGEvbWlzYy9ta19odWdlZmlsZXMuYyBiL21pc2MvbWtfaHVnZWZpbGVzLmMKLWluZGV4IDcxYTE1YzUuLjAwZTk1Y2QgMTAwNjQ0Ci0tLS0gYS9taXNjL21rX2h1Z2VmaWxlcy5jCi0rKysgYi9taXNjL21rX2h1Z2VmaWxlcy5jCi1AQCAtMzUsNiArMzUsOSBAQCBleHRlcm4gaW50IG9wdGluZDsKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpZmRlZiBIQVZFX1NZU19TWVNNQUNST1NfSAotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGxpYmdlbi5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8YmxraWQvYmxraWQuaD4KLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoCmluZGV4IDg3OWQ5MzYuLjdkZjA5NjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2gKQEAgLTEsMyArMSw1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKwogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmluIGIvdGVzdHMvTWFrZWZpbGUuaW4KIGluZGV4IGMxMzBmNGEuLmQyYWRlMDMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5pbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcmVwcm9kdWNpYmxlLWRvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTVkMWQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorCitTdXBwcG9ydCBmb3IgYmluYXJ5IHJlcHJvZHVjaWJpbGl0eS4KK1doZW4gY29tcHJlc3NpbmcsIGRvIG5vdCBzYXZlIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUgYW5kIHRpbWUgc3RhbXAuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtUaGVvZG9yZSBUcydvIHR5dHNvQG1pdC5lZHUgKG1haW50YWluZXIpXQorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmluIGIvZG9jL01ha2VmaWxlLmluCitpbmRleCA5Y2I1ODRjLi4wYmVlNGU0IDEwMDY0NAorLS0tIGEvZG9jL01ha2VmaWxlLmluCisrKysgYi9kb2MvTWFrZWZpbGUuaW4KK0BAIC0yOCw3ICsyOCw3IEBAIGluc3RhbGwtZG9jLWxpYnM6IGxpYmV4dDJmcy5pbmZvIGxpYmV4dDJmcy5kdmkKKyAJCSQoSU5TVEFMTF9EQVRBKSAkJGkgJChERVNURElSKSQoaW5mb2RpcikvJCRpIDsgXAorIAlkb25lCisgCSQoRSkgIglHWklQICQoaW5mb2RpcikvbGliZXh0MmZzLmluZm8qIgorLQktJChRKSBnemlwIC05ICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgorKwktJChRKSBnemlwIC05IC1uICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgorIAorIHVuaW5zdGFsbC1kb2MtbGliczoKKyAJJChSTSkgLXJmICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9ydW4tcHRlc3QKaW5kZXggZTAyZmM3Zi4uZWYxMGIwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3J1bi1wdGVzdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcnVuLXB0ZXN0CkBAIC0xLDExICsxLDEwIEBACiAjIS9iaW4vc2gKIAogY2QgLi90ZXN0Ci0uL3Rlc3Rfc2NyaXB0ICY+Li4vdGVzdC5sb2cKLWlmIFsgJD8gLWVxIDAgXQotdGhlbgotCWVjaG8gIlBBU1M6IGUyZnNwcm9ncyIKLQlybSAuLi90ZXN0LmxvZwotZWxzZQotCWVjaG8gIkZBSUw6IGUyZnNwcm9ncyIKLWZpCisuL3Rlc3Rfc2NyaXB0IHwgc2VkIC11IC1lICcvOltbOnNwYWNlOl1db2svcy9eL1BBU1M6IC8nIC1lICcvOltbOnNwYWNlOl1dZmFpbGVkL3MvXi9GQUlMOiAvJyAtZSAnLzpbWzpzcGFjZTpdXXNraXBwZWQvcy9eL1NLSVA6IC8nCitybSAtcmYgL3Zhci92b2xhdGlsZS90bXAvKmUyZnNwcm9ncyoKK3JtIC1mIHRtcC0qCitybSAtZiAqLnRtcAorcm0gLWYgKi5vaworcm0gLWYgKi5mYWlsZWQKK3JtIC1mICoubG9nCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIxNmM3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLXJlcXVpcmUgZTJmc3Byb2dzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vYWNpbmNsdWRlLm00IFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWtkaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2UyZnNwcm9ncy0xLjQzLXN5c21hY3Jvcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1lMmZzY2stZXhpdC13aXRoLWV4aXQtc3RhdHVzLTAtaWYtbm8tZXJyb3JzLXdlcmUtZml4LnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCIKLQotU1JDUkVWID0gIjNkNjZjNGIyMGYwOWY5MjMwNzhjMWU2ZWI5YjU0OTg2NWI1NDk2NzQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikkIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVsZi1zaGxpYnMgLS1kaXNhYmxlLWxpYnV1aWQgLS1kaXNhYmxlLXV1aWRkIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYmxraWQgLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcyIKLQotRVhUUkFfT0VDT05GX2RhcndpbiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IC0tZW5hYmxlLWJzZC1zaGxpYnMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2Z1c2VdID0gJy0tZW5hYmxlLWZ1c2UyZnMsLS1kaXNhYmxlLWZ1c2UyZnMsZnVzZScKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWNwICR7V09SS0RJUn0vYWNpbmNsdWRlLm00ICR7U30vCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1saWJzCi0JIyBXZSB1c2UgYmxraWQgZnJvbSB1dGlsLWxpbnV4IG5vdyBzbyByZW1vdmUgZnJvbSBoZXJlCi0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmJsa2lkKgotCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9ibGtpZAotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcvYmxraWQucGMKLQlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Jsa2lkCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9mc2NrCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9maW5kZnMKLQotCSMgZTJpbml0cmRfaGVscGVyIGFuZCB0aGUgcGtnY29uZmlnIGZpbGVzIGJlbG9uZyBpbiBsaWJkaXIKLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtEfSR7bGliZGlyfQotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGV4dDJmcy9leHQyX3R5cGVzLmgKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCW12ICR7RH0ke2JpbmRpcn0vY2hhdHRyICR7RH0ke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzCi0KLQlpbnN0YWxsIC12IC1tIDc1NSAke1N9L2NvbnRyaWIvcG9wdWxhdGUtZXh0ZnMuc2ggJHtEfSR7YmFzZV9zYmluZGlyfS8KLQotCSMgQ2xlYW4gaG9zdCBwYXRoIChidWlsZCBkaXJlY3RvcnkpIGluIGNvbXBpbGVfZXQsIG1rX2NtZHMKLQlzZWQgLWkgLWUgInMsXChFVF9ESVI9LipcKSR7U30vbGliL2V0XCguKlwpLFwxJHtkYXRhZGlyfS9ldFwyLGciICR7RH0ke2JpbmRpcn0vY29tcGlsZV9ldAotCXNlZCAtaSAtZSAicyxcKFNTX0RJUj0uKlwpJHtTfS9saWIvc3NcKC4qXCksXDEke2RhdGFkaXJ9L3NzXDIsZyIgJHtEfSR7YmluZGlyfS9ta19jbWRzCi19Ci0KLSMgTmVlZCB0byBmaW5kIHRoZSByaWdodCBta2UyZnMuY29uZiBmaWxlCi1lMmZzcHJvZ3NfY29uZl9maXh1cCAoKSB7Ci0JZm9yIGkgaW4gbWtlMmZzIG1rZnMuZXh0MiBta2ZzLmV4dDMgbWtmcy5leHQ0OyBkbwotCQljcmVhdGVfd3JhcHBlciAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpIE1LRTJGU19DT05GSUc9JHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZgotCWRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWUyZnNwcm9nc19jb25mX2ZpeHVwCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQllMmZzcHJvZ3NfY29uZl9maXh1cAotfQotCi1SREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKLVJSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCi0KLVBBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgotUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgotCi1GSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgotRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCi1GSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgotRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCi1GSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCi1GSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgotRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKLUZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKLUZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28gJHtiaW5kaXJ9L2NvbXBpbGVfZXQgJHtiaW5kaXJ9L21rX2NtZHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtYSAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQljcCAtYSAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwOTNjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIKQEAgLTAsMCArMSwxMTcgQEAKK3JlcXVpcmUgZTJmc3Byb2dzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vYWNpbmNsdWRlLm00IFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbWtkaXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAorIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIgorCitTUkNSRVYgPSAiMmExM2M4NGI1MTNhYTA5NGQxY2RhNzI3ZTkyZDM1YTg5ZGQ3NzdkYSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZWxmLXNobGlicyAtLWRpc2FibGUtbGlidXVpZCAtLWRpc2FibGUtdXVpZGQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJibGtpZCAtLWVuYWJsZS12ZXJib3NlLW1ha2VjbWRzIgorCitFWFRSQV9PRUNPTkZfZGFyd2luID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gLS1lbmFibGUtYnNkLXNobGlicyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZnVzZV0gPSAnLS1lbmFibGUtZnVzZTJmcywtLWRpc2FibGUtZnVzZTJmcyxmdXNlJworCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWxpYnMKKwkjIFdlIHVzZSBibGtpZCBmcm9tIHV0aWwtbGludXggbm93IHNvIHJlbW92ZSBmcm9tIGhlcmUKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vbGliYmxraWQqCisJcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L2Jsa2lkCisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZy9ibGtpZC5wYworCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vYmxraWQKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZzY2sKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZpbmRmcworCisJIyBlMmluaXRyZF9oZWxwZXIgYW5kIHRoZSBwa2djb25maWcgZmlsZXMgYmVsb25nIGluIGxpYmRpcgorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke0R9JHtsaWJkaXJ9CisJCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQorCWZpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZXh0MmZzL2V4dDJfdHlwZXMuaAorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJbXYgJHtEfSR7YmluZGlyfS9jaGF0dHIgJHtEfSR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MKKworCWluc3RhbGwgLXYgLW0gNzU1ICR7U30vY29udHJpYi9wb3B1bGF0ZS1leHRmcy5zaCAke0R9JHtiYXNlX3NiaW5kaXJ9LworCisJIyBDbGVhbiBob3N0IHBhdGggKGJ1aWxkIGRpcmVjdG9yeSkgaW4gY29tcGlsZV9ldCwgbWtfY21kcworCXNlZCAtaSAtZSAicyxcKEVUX0RJUj0uKlwpJHtTfS9saWIvZXRcKC4qXCksXDEke2RhdGFkaXJ9L2V0XDIsZyIgJHtEfSR7YmluZGlyfS9jb21waWxlX2V0CisJc2VkIC1pIC1lICJzLFwoU1NfRElSPS4qXCkke1N9L2xpYi9zc1woLipcKSxcMSR7ZGF0YWRpcn0vc3NcMixnIiAke0R9JHtiaW5kaXJ9L21rX2NtZHMKK30KKworIyBOZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IG1rZTJmcy5jb25mIGZpbGUKK2UyZnNwcm9nc19jb25mX2ZpeHVwICgpIHsKKwlmb3IgaSBpbiBta2UyZnMgbWtmcy5leHQyIG1rZnMuZXh0MyBta2ZzLmV4dDQ7IGRvCisJCWNyZWF0ZV93cmFwcGVyICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGkgTUtFMkZTX0NPTkZJRz0ke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mCisJZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJZTJmc3Byb2dzX2NvbmZfZml4dXAKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWUyZnNwcm9nc19jb25mX2ZpeHVwCit9CisKK1JERVBFTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtYmFkYmxvY2tzIgorUlJFQ09NTUVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLWUyZnNjayIKKworUEFDS0FHRVMgPSsgImUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyBlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1yZXNpemUyZnMiCitQQUNLQUdFUyA9KyAibGliY29tZXJyIGxpYnNzIGxpYmUycCBsaWJleHQyZnMiCisKK0ZJTEVTX2UyZnNwcm9ncy1yZXNpemUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3Jlc2l6ZTJmcyoiCitGSUxFU19lMmZzcHJvZ3MtZTJmc2NrID0gIiR7YmFzZV9zYmluZGlyfS9lMmZzY2sgJHtiYXNlX3NiaW5kaXJ9L2ZzY2suZXh0KiIKK0ZJTEVTX2UyZnNwcm9ncy1ta2UyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L21rZTJmcyAke2Jhc2Vfc2JpbmRpcn0vbWtmcy5leHQqICR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYiCitGSUxFU19lMmZzcHJvZ3MtdHVuZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vdHVuZTJmcyAke2Jhc2Vfc2JpbmRpcn0vZTJsYWJlbCIKK0ZJTEVTX2UyZnNwcm9ncy1iYWRibG9ja3MgPSAiJHtiYXNlX3NiaW5kaXJ9L2JhZGJsb2NrcyIKK0ZJTEVTX2xpYmNvbWVyciA9ICIke2Jhc2VfbGliZGlyfS9saWJjb21fZXJyLnNvLioiCitGSUxFU19saWJzcyA9ICIke2Jhc2VfbGliZGlyfS9saWJzcy5zby4qIgorRklMRVNfbGliZTJwID0gIiR7YmFzZV9saWJkaXJ9L2xpYmUycC5zby4qIgorRklMRVNfbGliZXh0MmZzID0gIiR7bGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtiYXNlX2xpYmRpcn0vbGliZXh0MmZzLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vKi8qLmF3ayAke2RhdGFkaXJ9LyovKi5zZWQgJHtiYXNlX2xpYmRpcn0vKi5zbyAke2JpbmRpcn0vY29tcGlsZV9ldCAke2JpbmRpcn0vbWtfY21kcyIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiY2hhdHRyIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NoYXR0cl0gPSAiJHtiYXNlX2JpbmRpcn0vY2hhdHRyIgorQUxURVJOQVRJVkVfVEFSR0VUW2NoYXR0cl0gPSAiJHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncyIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImZzY2suOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmc2NrLjhdID0gIiR7bWFuZGlyfS9tYW44L2ZzY2suOCIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59ICR7UE59LXR1bmUyZnMgY29yZXV0aWxzIHByb2NwcyBiYXNoIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7Qn0vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJc2VkIC1lICdzIS4uL2UyZnNjay9lMmZzY2shZTJmc2NrIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi9leHBlY3QqCisKKwkjIFJlbW92ZSB2YXJpb3VzIGZpbGVzCisJZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC10eXBlIGYgXAorCSAgICBcKCAtbmFtZSAnTWFrZWZpbGUnIC1vIC1uYW1lICdNYWtlZmlsZS5pbicgLW8gLW5hbWUgJyoubycgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCisJICAgIC1leGVjICBybSAtZiB7fSArCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjBmZmExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA1MSArMCwwIEBACi1Gcm9tIDA1NGZlZGRhNWFiOWI4NDE2MGQ0MGQ5MGNiOTY3ZjJmNTgyMmI4ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAwNjozNTozNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogUHJvdmlkZSBhbHRlcm5hdGl2ZXMgZm9yIGdsaWJjIGFzc3VtcHRpb25zIGhlbHBzCi0gY29tcGlsaW5nIGl0IG9uIG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1SZWJhc2UgdG8gMC42OAotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYi9jb2xvci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKystCi0gbGliL2NyYzMyX2ZpbGUuYyAgICAgICAgICAgICAgICAgfCAgMSArCi0gbGliL2ZpeGVkc2l6ZWhhc2guaCAgICAgICAgICAgICAgfCAgMSAtCi0gbGliL3N5c3RlbS5oICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCi0gbGliL3htYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmFzbS9hc21fZW5kLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJhc20vYXNtX25ld3Njbi5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliY3B1L2kzODZfZ2VuZGlzLmMgICAgICAgICAgICAgfCAgMiArLQotIGxpYmNwdS9pMzg2X2xleC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJjcHUvaTM4Nl9wYXJzZS5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliZHcvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgNCArKystCi0gbGliZHcvbGliZHdfYWxsb2MuYyAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIHwgIDMgKystCi0gbGliZHdmbC9kd2ZsX2Vycm9yLmMgICAgICAgICAgICAgfCAgNCArKystCi0gbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jICAgfCAgMSArCi0gbGliZHdmbC9maW5kLWRlYnVnaW5mby5jICAgICAgICAgfCAgMiArLQotIGxpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMgICAgIHwgMTAgKysrKysrKysrKwotIGxpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyAgIHwgIDEgKwotIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jICAgICAgICAgIHwgIDIgKy0KLSBsaWJlbGYvZWxmLmggICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCi0gbGliZWxmL2xpYmVsZi5oICAgICAgICAgICAgICAgICAgfCAgMSArCi0gbGliZWxmL2xpYmVsZlAuaCAgICAgICAgICAgICAgICAgfCAgMSArCi0gc3JjL2FkZHIybGluZS5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9hci5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvYXJsaWIuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2FybGliMi5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9lbGZjbXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvZWxmbGludC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2ZpbmR0ZXh0cmVsLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9ubS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvb2JqZHVtcC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3JhbmxpYi5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9yZWFkZWxmLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc2l6ZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3N0YWNrLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9zdHJpbmdzLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc3RyaXAuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3Vuc3RyaXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2FkZHJzY29wZXMuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9hbGxyZWdzLmMgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYmFja3RyYWNlLWRhdGEuYyAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2JhY2t0cmFjZS1kd2FyZi5jICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9iYWNrdHJhY2UuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYnVpbGRpZC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2RlYnVnYWx0bGluay5jICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kZWJ1Z2xpbmsuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZGVsZXRlZC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYWRkci1zZWN0LmMgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgICB8ICAyICstCi0gdGVzdHMvZHdmbC1idWctZmQtbGVhay5jICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYyAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyAgICB8ICAyICstCi0gdGVzdHMvZHdmbGxpbmVzLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3Zmxtb2R0ZXN0LmMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2Zsc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZWFybHktb2Zmc2NuLmMgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2VjcC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9maW5kLXByb2xvZ3Vlcy5jICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZnVuY3JldHZhbC5jICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Z1bmNzY29wZXMuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9nZXRzcmNfZGllLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvbGluZTJhZGRyLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2xvd19oaWdoX3BjLmMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9tZDUtc2hhMS10ZXN0LmMgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvcmR3cm1tYXAuYyAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3NhcmlkeC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9zZWN0aW9uZHVtcC5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvdmFybG9jcy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3Zkc29zeW1zLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSA3MCBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDJmZjQ0NGUuLjQxZjc3ZGYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yOCw3ICsyOCw3IEBAIHBrZ2luY2x1ZGVfSEVBREVSUyA9IHZlcnNpb24uaAotIAotICMgQWRkIGRvYyBiYWNrIHdoZW4gd2UgaGF2ZSBzb21lIHJlYWwgY29udGVudC4KLSBTVUJESVJTID0gY29uZmlnIG00IGxpYiBsaWJlbGYgbGliZWJsIGxpYmR3ZWxmIGxpYmR3ZmwgbGliZHcgbGliY3B1IGxpYmFzbSBcCi0tCSAgYmFja2VuZHMgc3JjIHBvIHRlc3RzCi0rCSAgYmFja2VuZHMgcG8gdGVzdHMKLSAKLSBFWFRSQV9ESVNUID0gZWxmdXRpbHMuc3BlYyBHUEctS0VZIE5PVEVTIENPTlRSSUJVVElORyBcCi0gCSAgICAgQ09QWUlORyBDT1BZSU5HLUdQTFYyIENPUFlJTkctTEdQTFYzCi1kaWZmIC0tZ2l0IGEvbGliL2NvbG9yLmMgYi9saWIvY29sb3IuYwotaW5kZXggZmRlMmQ5ZC4uNzMyOTJhYyAxMDA2NDQKLS0tLSBhL2xpYi9jb2xvci5jCi0rKysgYi9saWIvY29sb3IuYwotQEAgLTMyLDEyICszMiwxMyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgImxpYmV1LmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotIAotIAotIC8qIFByb3RvdHlwZSBmb3Igb3B0aW9uIGhhbmRsZXIuICAqLwotZGlmZiAtLWdpdCBhL2xpYi9jcmMzMl9maWxlLmMgYi9saWIvY3JjMzJfZmlsZS5jCi1pbmRleCBhODQzNGQ0Li41N2U0Mjk4IDEwMDY0NAotLS0tIGEvbGliL2NyYzMyX2ZpbGUuYwotKysrIGIvbGliL2NyYzMyX2ZpbGUuYwotQEAgLTM1LDYgKzM1LDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0rI2luY2x1ZGUgInN5c3RlbS5oIgotIAotIGludAotIGNyYzMyX2ZpbGUgKGludCBmZCwgdWludDMyX3QgKnJlc3ApCi1kaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKLWluZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0Ci0tLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCi0rKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCi1AQCAtMzAsNyArMzAsNiBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotIAotICNpbmNsdWRlIDxzeXN0ZW0uaD4KLSAKLWRpZmYgLS1naXQgYS9saWIvc3lzdGVtLmggYi9saWIvc3lzdGVtLmgKLWluZGV4IGNjZDk5ZDYuLjBlOTNlNjAgMTAwNjQ0Ci0tLS0gYS9saWIvc3lzdGVtLmgKLSsrKyBiL2xpYi9zeXN0ZW0uaAotQEAgLTU1LDYgKzU1LDE2IEBACi0gI2Vsc2UKLSAjIGVycm9yICJVbmtub3duIGJ5dGUgb3JkZXIiCi0gI2VuZGlmCi0rI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKLSsjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSBcCi0rICAoX19leHRlbnNpb25fXwkJCQkJCQkgICAgICBcCi0rICAgICh7IGxvbmcgaW50IF9fcmVzdWx0OwkJCQkJCSAgICAgIFwKLSsgICAgICAgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQpIChleHByZXNzaW9uKTsJCQkJICAgICAgXAotKyAgICAgICB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYmIGVycm5vID09IEVJTlRSKTsJCQkgICAgICBcCi0rICAgICAgIF9fcmVzdWx0OyB9KSkKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIGVycm9yKHN0YXR1cywgZXJybm8sIC4uLikgZXJyKHN0YXR1cywgX19WQV9BUkdTX18pCi0gCi0gI2lmbmRlZiBNQVgKLSAjZGVmaW5lIE1BWChtLCBuKSAoKG0pIDwgKG4pID8gKG4pIDogKG0pKQotZGlmZiAtLWdpdCBhL2xpYi94bWFsbG9jLmMgYi9saWIveG1hbGxvYy5jCi1pbmRleCAwY2RlMzg0Li4yMTdiMDU0IDEwMDY0NAotLS0tIGEvbGliL3htYWxsb2MuYwotKysrIGIvbGliL3htYWxsb2MuYwotQEAgLTMwLDcgKzMwLDcgQEAKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9lbmQuYyBiL2xpYmFzbS9hc21fZW5kLmMKLWluZGV4IDE5MWE1MzUuLmJmNWFiMDYgMTAwNjQ0Ci0tLS0gYS9saWJhc20vYXNtX2VuZC5jCi0rKysgYi9saWJhc20vYXNtX2VuZC5jCi1AQCAtMzIsNyArMzIsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9uZXdzY24uYyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKLWluZGV4IGRkYmIyNWQuLjc0YTU5OGQgMTAwNjQ0Ci0tLS0gYS9saWJhc20vYXNtX25ld3Njbi5jCi0rKysgYi9saWJhc20vYXNtX25ld3Njbi5jCi1AQCAtMzIsNyArMzIsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2dlbmRpcy5jIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKLWluZGV4IGFhZTVlYWUuLjZkNzYwMTYgMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9nZW5kaXMuYwotKysrIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2xleC5jIGIvbGliY3B1L2kzODZfbGV4LmMKLWluZGV4IGI2NzA2MDguLmI4NDJjMjUgMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9sZXguYwotKysrIGIvbGliY3B1L2kzODZfbGV4LmMKLUBAIC01OTIsNyArNTkyLDcgQEAgY2hhciAqaTM4Nl90ZXh0OwotICNlbmRpZgotIAotICNpbmNsdWRlIDxjdHlwZS5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotIAotICNpbmNsdWRlIDxsaWJldS5oPgotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X3BhcnNlLmMgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCi1pbmRleCA3MjRhZGRmLi41YjY3ODAyIDEwMDY0NAotLS0tIGEvbGliY3B1L2kzODZfcGFyc2UuYwotKysrIGIvbGliY3B1L2kzODZfcGFyc2UuYwotQEAgLTEwNyw3ICsxMDcsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotZGlmZiAtLWdpdCBhL2xpYmR3L01ha2VmaWxlLmFtIGIvbGliZHcvTWFrZWZpbGUuYW0KLWluZGV4IDA4MmQ5NmMuLjUxY2JlYTAgMTAwNjQ0Ci0tLS0gYS9saWJkdy9NYWtlZmlsZS5hbQotKysrIGIvbGliZHcvTWFrZWZpbGUuYW0KLUBAIC0xMDIsNiArMTAyLDggQEAgZW5kaWYKLSBsaWJkd19waWNfYV9TT1VSQ0VTID0KLSBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQotIAotK2Z0c19MREFERCA9IC1sZnRzCi0rCi0gbGliZHdfc29fU09VUkNFUyA9Ci0gbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgbGliZHdfcGljLmEgLi4vbGliZHdlbGYvbGliZHdlbGZfcGljLmEgXAotIAkgIC4uL2xpYmR3ZmwvbGliZHdmbF9waWMuYSAuLi9saWJlYmwvbGliZWJsLmEgXAotQEAgLTExMiw3ICsxMTQsNyBAQCBsaWJkdy5zbyQoRVhFRVhUKTogJChzcmNkaXIpL2xpYmR3Lm1hcCBsaWJkd19waWMuYSAuLi9saWJkd2VsZi9saWJkd2VsZl9waWMuYSBcCi0gCQktV2wsLS1lbmFibGUtbmV3LWR0YWdzLC1ycGF0aCwkKHBrZ2xpYmRpcikgXAotIAkJLVdsLC0tdmVyc2lvbi1zY3JpcHQsJDwsLS1uby11bmRlZmluZWQgXAotIAkJLVdsLC0td2hvbGUtYXJjaGl2ZSAkKGZpbHRlci1vdXQgJDwsJF4pIC1XbCwtLW5vLXdob2xlLWFyY2hpdmVcCi0tCQktbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpCi0rCQktbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpICQoZnRzX0xEQUREKQotIAlAJCh0ZXh0cmVsX2NoZWNrKQotIAkkKEFNX1ZfYXQpbG4gLWZzICRAICRALiQoVkVSU0lPTikKLSAKLWRpZmYgLS1naXQgYS9saWJkdy9saWJkd19hbGxvYy5jIGIvbGliZHcvbGliZHdfYWxsb2MuYwotaW5kZXggMjhhOGNmNi4uMjlhZWIzZiAxMDA2NDQKLS0tLSBhL2xpYmR3L2xpYmR3X2FsbG9jLmMKLSsrKyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlICJsaWJkd1AuaCIKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi1pbmRleCA5MDNlMTkzLi5iMDBkMTBjIDEwMDY0NAotLS0tIGEvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKLSsrKyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi1AQCAtMjcsNiArMjcsNyBAQAotICAgIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImxpYmR3ZmxQLmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLUBAIC05NCw3ICs5NSw3IEBAIF9fbGliZHdmbF9vcGVuX2J5X2J1aWxkX2lkIChEd2ZsX01vZHVsZSAqbW9kLCBib29sIGRlYnVnLCBjaGFyICoqZmlsZV9uYW1lLAotIAl7Ci0gCSAgaWYgKCpmaWxlX25hbWUgIT0gTlVMTCkKLSAJICAgIGZyZWUgKCpmaWxlX25hbWUpOwotLQkgICpmaWxlX25hbWUgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lIChuYW1lKTsKLSsJICAqZmlsZV9uYW1lID0gcmVhbHBhdGggKG5hbWUsIE5VTEwpOwotIAkgIGlmICgqZmlsZV9uYW1lID09IE5VTEwpCi0gCSAgICB7Ci0gCSAgICAgICpmaWxlX25hbWUgPSBuYW1lOwotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLWluZGV4IDdiY2Y2MWMuLmMzNDU3OTcgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYwotKysrIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLUBAIC0xNDAsNiArMTQwLDcgQEAgX19saWJkd2ZsX3NldGVycm5vIChEd2ZsX0Vycm9yIGVycm9yKQotIGNvbnN0IGNoYXIgKgotIGR3ZmxfZXJybXNnIChpbnQgZXJyb3IpCi0gewotKyAgc3RhdGljIF9fdGhyZWFkIGNoYXIgc1s2NF0gPSAiIjsKLSAgIGlmIChlcnJvciA9PSAwIHx8IGVycm9yID09IC0xKQotICAgICB7Ci0gICAgICAgaW50IGxhc3RfZXJyb3IgPSBnbG9iYWxfZXJyb3I7Ci1AQCAtMTU0LDcgKzE1NSw4IEBAIGR3ZmxfZXJybXNnIChpbnQgZXJyb3IpCi0gICBzd2l0Y2ggKGVycm9yICZ+IDB4ZmZmZikKLSAgICAgewotICAgICBjYXNlIE9USEVSX0VSUk9SIChFUlJOTyk6Ci0tICAgICAgcmV0dXJuIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCAiYmFkIiwgMCk7Ci0rICAgICAgc3RyZXJyb3JfciAoZXJyb3IgJiAweGZmZmYsIHMsIHNpemVvZihzKSk7Ci0rICAgICAgcmV0dXJuIHM7Ci0gICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkVMRik6Ci0gICAgICAgcmV0dXJuIGVsZl9lcnJtc2cgKGVycm9yICYgMHhmZmZmKTsKLSAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRFcpOgotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotaW5kZXggMGU4ODEwYi4uODJhZDY2NSAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotKysrIGIvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlICIuLi9saWJkdy9saWJkd1AuaCIJLyogRFdBUkZfRV8qIHZhbHVlcyBhcmUgaGVyZS4gICovCi0gI2luY2x1ZGUgIi4uL2xpYmVsZi9saWJlbGZQLmgiCi0gCi1kaWZmIC0tZ2l0IGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jIGIvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi1pbmRleCA4MDUxNWRiLi44MGIwMTQ4IDEwMDY0NAotLS0tIGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi0rKysgYi9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKLUBAIC0zODUsNyArMzg1LDcgQEAgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAoRHdmbF9Nb2R1bGUgKm1vZCwKLSAgICAgICAvKiBJZiBGSUxFX05BTUUgaXMgYSBzeW1saW5rLCB0aGUgZGVidWcgZmlsZSBtaWdodCBiZSBhc3NvY2lhdGVkCi0gCSB3aXRoIHRoZSBzeW1saW5rIHRhcmdldCBuYW1lIGluc3RlYWQuICAqLwotIAotLSAgICAgIGNoYXIgKmNhbm9uID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoZmlsZV9uYW1lKTsKLSsgICAgICBjaGFyICpjYW5vbiA9IHJlYWxwYXRoIChmaWxlX25hbWUsIE5VTEwpOwotICAgICAgIGlmIChjYW5vbiAhPSBOVUxMICYmIHN0cmNtcCAoZmlsZV9uYW1lLCBjYW5vbikpCi0gCWZkID0gZmluZF9kZWJ1Z2luZm9faW5fcGF0aCAobW9kLCBjYW5vbiwKLSAJCQkJICAgICBkZWJ1Z2xpbmtfZmlsZSwgZGVidWdsaW5rX2NyYywKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jIGIvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYwotaW5kZXggNmI2YjdkMy4uZGViYzRhNCAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKLSsrKyBiL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKLUBAIC0zMSw2ICszMSwxNiBAQAotIAotICNkZWZpbmUgY3JjMzJfZmlsZSBhdHRyaWJ1dGVfaGlkZGVuIF9fbGliZHdmbF9jcmMzMl9maWxlCi0gI2RlZmluZSBjcmMzMiBfX2xpYmR3ZmxfY3JjMzIKLSsKLSsjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQotKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKLSsgIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKLSsgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7CQkJCQkJICAgICAgXAotKyAgICAgICBkbyBfX3Jlc3VsdCA9IChsb25nIGludCkgKGV4cHJlc3Npb24pOwkJCQkgICAgICBcCi0rICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOwkJCSAgICAgIFwKLSsgICAgICAgX19yZXN1bHQ7IH0pKQotKyNlbmRpZgotKwotICNkZWZpbmUgTElCX1NZU1RFTV9ICTEKLSAjaW5jbHVkZSA8bGliZHdmbFAuaD4KLSAjaW5jbHVkZSAiLi4vbGliL2NyYzMyX2ZpbGUuYyIKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLWluZGV4IDljZDhlYTkuLjRkYmY0YzUgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLSsrKyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwotQEAgLTM2LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0gI2luY2x1ZGUgImxpYmR3ZmxQLmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLWluZGV4IDM0ZDQzOWEuLjU2ZDIzNDUgMTAwNjQ0Ci0tLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLUBAIC0zMiw3ICszMiw3IEBACi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxkbGZjbi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliZWxmUC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKLWluZGV4IDc0NjU0ZDYuLjgxZWVlOGIgMTAwNjQ0Ci0tLS0gYS9saWJlbGYvZWxmLmgKLSsrKyBiL2xpYmVsZi9lbGYuaAotQEAgLTIxLDcgKzIxLDkgQEAKLSAKLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gLyogU3RhbmRhcmQgRUxGIHR5cGVzLiAgKi8KLSAKLUBAIC0zNzA0LDYgKzM3MDYsOCBAQCBlbnVtCi0gI2RlZmluZSBSX0JQRl9OT05FCQkwCS8qIE5vIHJlbG9jICovCi0gI2RlZmluZSBSX0JQRl9NQVBfRkQJCTEJLyogTWFwIGZkIHRvIHBvaW50ZXIgKi8KLSAKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSAKLSAjZW5kaWYJLyogZWxmLmggKi8KLWRpZmYgLS1naXQgYS9saWJlbGYvbGliZWxmLmggYi9saWJlbGYvbGliZWxmLmgKLWluZGV4IGMwZDYzODkuLjM4YTY4ZmQgMTAwNjQ0Ci0tLS0gYS9saWJlbGYvbGliZWxmLmgKLSsrKyBiL2xpYmVsZi9saWJlbGYuaAotQEAgLTI5LDYgKzI5LDcgQEAKLSAjaWZuZGVmIF9MSUJFTEZfSAotICNkZWZpbmUgX0xJQkVMRl9IIDEKLSAKLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotZGlmZiAtLWdpdCBhL2xpYmVsZi9saWJlbGZQLmggYi9saWJlbGYvbGliZWxmUC5oCi1pbmRleCA0NDU5OTgyLi4xMjk2ZjIwIDEwMDY0NAotLS0tIGEvbGliZWxmL2xpYmVsZlAuaAotKysrIGIvbGliZWxmL2xpYmVsZlAuaAotQEAgLTM2LDYgKzM2LDcgQEAKLSAKLSAjaW5jbHVkZSA8YXIuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotKyNpbmNsdWRlIDxsaWJlbGYuaD4KLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotZGlmZiAtLWdpdCBhL3NyYy9hZGRyMmxpbmUuYyBiL3NyYy9hZGRyMmxpbmUuYwotaW5kZXggMDIyMjA4OC4uY2Q2YTlhNiAxMDA2NDQKLS0tLSBhL3NyYy9hZGRyMmxpbmUuYwotKysrIGIvc3JjL2FkZHIybGluZS5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliZHdmbC5oPgotZGlmZiAtLWdpdCBhL3NyYy9hci5jIGIvc3JjL2FyLmMKLWluZGV4IGYyZjMyMmIuLjZlNzAwMzEgMTAwNjQ0Ci0tLS0gYS9zcmMvYXIuYwotKysrIGIvc3JjL2FyLmMKLUBAIC0yMiw3ICsyMiw3IEBACi0gCi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLWRpZmYgLS1naXQgYS9zcmMvYXJsaWIuYyBiL3NyYy9hcmxpYi5jCi1pbmRleCBlMDgzOWFhLi4xMTQzNjU4IDEwMDY0NAotLS0tIGEvc3JjL2FybGliLmMKLSsrKyBiL3NyYy9hcmxpYi5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9hcmxpYjIuYyBiL3NyYy9hcmxpYjIuYwotaW5kZXggNTUzZmM1Ny4uNDY0NDNkMCAxMDA2NDQKLS0tLSBhL3NyYy9hcmxpYjIuYwotKysrIGIvc3JjL2FybGliMi5jCi1AQCAtMjAsNyArMjAsNyBAQAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLWRpZmYgLS1naXQgYS9zcmMvZWxmY21wLmMgYi9zcmMvZWxmY21wLmMKLWluZGV4IDQwMWFiMzEuLjg3M2QyNTMgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmY21wLmMKLSsrKyBiL3NyYy9lbGZjbXAuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKLWluZGV4IDdkM2YyMjcuLjA3NGQyMWMgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmbGludC5jCi0rKysgYi9zcmMvZWxmbGludC5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2ZpbmR0ZXh0cmVsLmMgYi9zcmMvZmluZHRleHRyZWwuYwotaW5kZXggZGM0MTUwMi4uMzI1ODg4YyAxMDA2NDQKLS0tLSBhL3NyYy9maW5kdGV4dHJlbC5jCi0rKysgYi9zcmMvZmluZHRleHRyZWwuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8bGliZHcuaD4KLWRpZmYgLS1naXQgYS9zcmMvbm0uYyBiL3NyYy9ubS5jCi1pbmRleCBjNTRlOTZmLi45ZTAzMWQ5IDEwMDY0NAotLS0tIGEvc3JjL25tLmMKLSsrKyBiL3NyYy9ubS5jCi1AQCAtMjYsNyArMjYsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9vYmpkdW1wLmMgYi9zcmMvb2JqZHVtcC5jCi1pbmRleCBmZmY0YjgxLi40YjFmOTY2IDEwMDY0NAotLS0tIGEvc3JjL29iamR1bXAuYwotKysrIGIvc3JjL29iamR1bXAuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9yYW5saWIuYyBiL3NyYy9yYW5saWIuYwotaW5kZXggNDFhM2JjZi4uMGM3ZGEyYyAxMDA2NDQKLS0tLSBhL3NyYy9yYW5saWIuYwotKysrIGIvc3JjL3JhbmxpYi5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKLWluZGV4IGQxOGE0YjcuLmE2Y2ZiMzUgMTAwNjQ0Ci0tLS0gYS9zcmMvcmVhZGVsZi5jCi0rKysgYi9zcmMvcmVhZGVsZi5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9zaXplLmMgYi9zcmMvc2l6ZS5jCi1pbmRleCBkZTBkNzkxLi40NjM5ZDQyIDEwMDY0NAotLS0tIGEvc3JjL3NpemUuYwotKysrIGIvc3JjL3NpemUuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9zdGFjay5jIGIvc3JjL3N0YWNrLmMKLWluZGV4IGE1YTdiZWIuLjRjMDc1YmMgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RhY2suYwotKysrIGIvc3JjL3N0YWNrLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3N0cmluZ3MuYyBiL3NyYy9zdHJpbmdzLmMKLWluZGV4IDQ5YWFiOGIuLjA5ZDViMWMgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RyaW5ncy5jCi0rKysgYi9zcmMvc3RyaW5ncy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxlbmRpYW4uaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCi1pbmRleCBhODc1ZGRmLi5mZDc2ZjdmIDEwMDY0NAotLS0tIGEvc3JjL3N0cmlwLmMKLSsrKyBiL3NyYy9zdHJpcC5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmVsZi5oPgotZGlmZiAtLWdpdCBhL3NyYy91bnN0cmlwLmMgYi9zcmMvdW5zdHJpcC5jCi1pbmRleCBkODM4YWU5Li4wMTA4MjcyIDEwMDY0NAotLS0tIGEvc3JjL3Vuc3RyaXAuYwotKysrIGIvc3JjL3Vuc3RyaXAuYwotQEAgLTMxLDcgKzMxLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2FkZHJzY29wZXMuYyBiL3Rlc3RzL2FkZHJzY29wZXMuYwotaW5kZXggNzkxNTY5Zi4uNTRmNDMxMSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2FkZHJzY29wZXMuYwotKysrIGIvdGVzdHMvYWRkcnNjb3Blcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYWxscmVncy5jIGIvdGVzdHMvYWxscmVncy5jCi1pbmRleCAyODZmN2UzLi5jOWRlMDg5IDEwMDY0NAotLS0tIGEvdGVzdHMvYWxscmVncy5jCi0rKysgYi90ZXN0cy9hbGxyZWdzLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMgYi90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCi1pbmRleCBiNzE1OGRhLi4zNTRmYTZhIDEwMDY0NAotLS0tIGEvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotKysrIGIvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotaW5kZXggYTY0NGM4YS4uYjhjYmUyNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCi0rKysgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotQEAgLTIyLDcgKzIyLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLmMgYi90ZXN0cy9iYWNrdHJhY2UuYwotaW5kZXggMWZmNjM1My4uNDdlM2Y3YiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2JhY2t0cmFjZS5jCi0rKysgYi90ZXN0cy9iYWNrdHJhY2UuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2lmZGVmIF9fbGludXhfXwotZGlmZiAtLWdpdCBhL3Rlc3RzL2J1aWxkaWQuYyBiL3Rlc3RzL2J1aWxkaWQuYwotaW5kZXggODdjMTg3Ny4uMjk1M2U2YiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2J1aWxkaWQuYwotKysrIGIvdGVzdHMvYnVpbGRpZC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihlbGYpCi0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCi1pbmRleCA2ZDk3ZDUwLi5lZTdlNTU5IDEwMDY0NAotLS0tIGEvdGVzdHMvZGVidWdhbHRsaW5rLmMKLSsrKyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkdykKLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2RlYnVnbGluay5jIGIvdGVzdHMvZGVidWdsaW5rLmMKLWluZGV4IDkzNWQxMDIuLjc0MWNiODEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kZWJ1Z2xpbmsuYwotKysrIGIvdGVzdHMvZGVidWdsaW5rLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kZWxldGVkLmMgYi90ZXN0cy9kZWxldGVkLmMKLWluZGV4IDZiZTM1YmMuLjAxOTA3MTEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kZWxldGVkLmMKLSsrKyBiL3Rlc3RzL2RlbGV0ZWQuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaWZkZWYgX19saW51eF9fCi0gI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCi1pbmRleCAyMWU0NzBhLi4xZWExZTNiIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotKysrIGIvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jIGIvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi1pbmRleCBhYTgwMzBlLi4wMmM4YmVmIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi0rKysgYi90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jIGIvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi1pbmRleCA2ODljZGQ3Li41OTczZGEzIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi0rKysgYi90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYyBiL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYwotaW5kZXggMWVlOTg5Zi4uZmQ2MmU2NSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYwotKysrIGIvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gc3RhdGljIGNvbnN0IER3ZmxfQ2FsbGJhY2tzIGNhbGxiYWNrcyA9Ci0gICB7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgYi90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotaW5kZXggYTRlOTdkMy4uZjQ3MTU4NyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCi0rKysgYi90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxsaW5lcy5jIGIvdGVzdHMvZHdmbGxpbmVzLmMKLWluZGV4IDkwMzc5ZGQuLmNiZGY2YzQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsbGluZXMuYwotKysrIGIvdGVzdHMvZHdmbGxpbmVzLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gaW50Ci0gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbW9kdGVzdC5jIGIvdGVzdHMvZHdmbG1vZHRlc3QuYwotaW5kZXggMDAyN2Y5Ni4uZTY4ZDNiYyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLSsrKyBiL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxzeW1zLmMgYi90ZXN0cy9kd2Zsc3ltcy5jCi1pbmRleCA0OWFjMzM0Li5jZjA3ODMwIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbHN5bXMuYwotKysrIGIvdGVzdHMvZHdmbHN5bXMuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotZGlmZiAtLWdpdCBhL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKLWluZGV4IDkyNGNiOWUuLjZmNjBkNWEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9lYXJseS1vZmZzY24uYwotKysrIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKLUBAIC0xOSw3ICsxOSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZWNwLmMgYi90ZXN0cy9lY3AuYwotaW5kZXggMzhhNjg1OS4uNzQzY2VhNSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2VjcC5jCi0rKysgYi90ZXN0cy9lY3AuYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLWluZGV4IGJhOGFlMzcuLjc2ZjVmMDQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCi0rKysgYi90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9mdW5jcmV0dmFsLmMgYi90ZXN0cy9mdW5jcmV0dmFsLmMKLWluZGV4IDhkMTlkMTEuLmM4YWFhOTMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mdW5jcmV0dmFsLmMKLSsrKyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZnVuY3Njb3Blcy5jIGIvdGVzdHMvZnVuY3Njb3Blcy5jCi1pbmRleCA5YzkwMTg1Li5kYmNjYjg5IDEwMDY0NAotLS0tIGEvdGVzdHMvZnVuY3Njb3Blcy5jCi0rKysgYi90ZXN0cy9mdW5jc2NvcGVzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2dldHNyY19kaWUuYyBiL3Rlc3RzL2dldHNyY19kaWUuYwotaW5kZXggMDU1YWVkZS4uOWMzOTRkZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2dldHNyY19kaWUuYwotKysrIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliZWxmLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGluZTJhZGRyLmMgYi90ZXN0cy9saW5lMmFkZHIuYwotaW5kZXggZTBkNjVkMy4uOWJmMDAyMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpbmUyYWRkci5jCi0rKysgYi90ZXN0cy9saW5lMmFkZHIuYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gCi0gc3RhdGljIHZvaWQKLWRpZmYgLS1naXQgYS90ZXN0cy9sb3dfaGlnaF9wYy5jIGIvdGVzdHMvbG93X2hpZ2hfcGMuYwotaW5kZXggZDBmNDMwMi4uOGRhNGZiZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xvd19oaWdoX3BjLmMKLSsrKyBiL3Rlc3RzL2xvd19oaWdoX3BjLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL21kNS1zaGExLXRlc3QuYyBiL3Rlc3RzL21kNS1zaGExLXRlc3QuYwotaW5kZXggZDUwMzU1ZS4uM2M0MWY0MCAxMDA2NDQKLS0tLSBhL3Rlc3RzL21kNS1zaGExLXRlc3QuYwotKysrIGIvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gI2luY2x1ZGUgIm1kNS5oIgotICNpbmNsdWRlICJzaGExLmgiCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmR3cm1tYXAuYyBiL3Rlc3RzL3Jkd3JtbWFwLmMKLWluZGV4IDZmMDI3ZGYuLjFjZTVlNmUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9yZHdybW1hcC5jCi0rKysgYi90ZXN0cy9yZHdybW1hcC5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvc2FyaWR4LmMgYi90ZXN0cy9zYXJpZHguYwotaW5kZXggOGE0NTBkOC4uYjM4NzgwMSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3NhcmlkeC5jCi0rKysgYi90ZXN0cy9zYXJpZHguYwotQEAgLTE3LDcgKzE3LDcgQEAKLSAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvc2VjdGlvbmR1bXAuYyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKLWluZGV4IDMwMzNmZWQuLjhlODg4ZGIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9zZWN0aW9uZHVtcC5jCi0rKysgYi90ZXN0cy9zZWN0aW9uZHVtcC5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy92YXJsb2NzLmMgYi90ZXN0cy92YXJsb2NzLmMKLWluZGV4IGMzZmJhODkuLmUwNDNlYTIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy92YXJsb2NzLmMKLSsrKyBiL3Rlc3RzL3ZhcmxvY3MuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdmRzb3N5bXMuYyBiL3Rlc3RzL3Zkc29zeW1zLmMKLWluZGV4IGI4NzZjMTAuLmFmYjI4MjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy92ZHNvc3ltcy5jCi0rKysgYi90ZXN0cy92ZHNvc3ltcy5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLWVsZl9nZXRhcnN5bS1TaWxlbmNlLVdlcnJvci1tYXliZS11bmluaXRpYWxpemVkLWZhbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtZWxmX2dldGFyc3ltLVNpbGVuY2UtV2Vycm9yLW1heWJlLXVuaW5pdGlhbGl6ZWQtZmFscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc1NGMxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtZWxmX2dldGFyc3ltLVNpbGVuY2UtV2Vycm9yLW1heWJlLXVuaW5pdGlhbGl6ZWQtZmFscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gNjY4YWNjZjMyMmZkNzE4NWUyNzNiZmQ1MGI4NDMyMGU3MWQ5ZGU1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTAgQXByIDIwMTUgMDA6Mjk6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZWxmX2dldGFyc3ltOiBTaWxlbmNlIC1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZCBmYWxzZQotIHBvc2l0aXZlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gbGliZWxmL2VsZl9nZXRhcnN5bS5jIHwgOSArKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZWxmL2VsZl9nZXRhcnN5bS5jIGIvbGliZWxmL2VsZl9nZXRhcnN5bS5jCi1pbmRleCBkMGJiMjhhLi4wODk1NGQyIDEwMDY0NAotLS0tIGEvbGliZWxmL2VsZl9nZXRhcnN5bS5jCi0rKysgYi9saWJlbGYvZWxmX2dldGFyc3ltLmMKLUBAIC0xNjUsOCArMTY1LDEzIEBAIGVsZl9nZXRhcnN5bSAoZWxmLCBwdHIpCi0gICAgICAgaW50IHcgPSBpbmRleDY0X3AgPyA4IDogNDsKLSAKLSAgICAgICAvKiBXZSBoYXZlIGFuIGFyY2hpdmUuICBUaGUgZmlyc3Qgd29yZCBpbiB0aGVyZSBpcyB0aGUgbnVtYmVyIG9mCi0tCSBlbnRyaWVzIGluIHRoZSB0YWJsZS4gICovCi0tICAgICAgdWludDY0X3QgbjsKLSsJIGVudHJpZXMgaW4gdGhlIHRhYmxlLgotKwkgU2V0IHRvIFNJWkVfTUFYIGp1c3QgdG8gc2lsZW5jZSAtV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWQKLSsJIGVsZl9nZXRhcnN5bS5jOjI5MDo5OiBlcnJvcjogJ24nIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgotKwkgVGhlIHJlYWRfbnVtYmVyX2VudHJpZXMgZnVuY3Rpb24gZG9lc24ndCBpbml0aWFsaXplIG4gb25seSB3aGVuIHJldHVybmluZwotKwkgLTEgd2hpY2ggaW4gdHVybiBlbnN1cmVzIHRvIGp1bXAgb3ZlciB1c2FnZSBvZiB0aGlzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCi0rCSAqLwotKyAgICAgIHVpbnQ2NF90IG4gPSBTSVpFX01BWDsKLSAgICAgICBzaXplX3Qgb2ZmID0gZWxmLT5zdGFydF9vZmZzZXQgKyBTQVJNQUcgKyBzaXplb2YgKHN0cnVjdCBhcl9oZHIpOwotICAgICAgIGlmIChyZWFkX251bWJlcl9lbnRyaWVzICgmbiwgZWxmLCAmb2ZmLCBpbmRleDY0X3ApIDwgMCkKLSAJewotLS0gCi0yLjMuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTIzYmY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotW1BBVENIXSBmaXggYSBzdGFjay11c2FnZSB3YXJuaW5nCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1ub3QgdXNlIGEgdmFyaWFibGUgdG8gYXMgYSBhcnJheSBzaXplLCBvdGhlcndpc2UgdGhlIHdhcm5pbmcgdG8gZXJyb3IgdGhhdAotc3RhY2sgdXNhZ2UgbWlnaHQgYmUgdW5ib3VuZGVkIFstV2Vycm9yPXN0YWNrLXVzYWdlPV0gd2lsbCBoYXBwZW4KLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFja2VuZHMvcHBjX2luaXRyZWcuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19pbml0cmVnLmMgYi9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCi1pbmRleCA2NGY1Mzc5Li41MmRkZTNlIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvcHBjX2luaXRyZWcuYwotKysrIGIvYmFja2VuZHMvcHBjX2luaXRyZWcuYwotQEAgLTkzLDcgKzkzLDcgQEAgcHBjX3NldF9pbml0aWFsX3JlZ2lzdGVyc190aWQgKHBpZF90IHRpZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gCXJldHVybiBmYWxzZTsKLSAgICAgfQotICAgY29uc3Qgc2l6ZV90IGdwcnMgPSBzaXplb2YgKHVzZXJfcmVncy5yLmdwcikgLyBzaXplb2YgKCp1c2VyX3JlZ3Muci5ncHIpOwotLSAgRHdhcmZfV29yZCBkd2FyZl9yZWdzW2dwcnNdOwotKyAgRHdhcmZfV29yZCBkd2FyZl9yZWdzW3NpemVvZiAodXNlcl9yZWdzLnIuZ3ByKSAvIHNpemVvZiAoKnVzZXJfcmVncy5yLmdwcildOwotICAgZm9yICh1bnNpZ25lZCBncHIgPSAwOyBncHIgPCBncHJzOyBncHIrKykKLSAgICAgZHdhcmZfcmVnc1tncHJdID0gdXNlcl9yZWdzLnIuZ3ByW2dwcl07Ci0gICBpZiAoISBzZXRmdW5jICgwLCBncHJzLCBkd2FyZl9yZWdzLCBhcmcpKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtcmVtb3ZlLXRoZS11bm5lZWQtY2hlY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtcmVtb3ZlLXRoZS11bm5lZWQtY2hlY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZTkyZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLXJlbW92ZS10aGUtdW5uZWVkLWNoZWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRGlzYWJsZSB0aGUgdGVzdCB0byBjb252ZXJ0IGV1Yy1qcAotCi1SZW1vdmUgdGhlIHRlc3QgIlRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6Ci1ObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMgcHJvdmlkZWQiCi1zaW5jZSB3ZSBkb24ndCBzdXBwb3J0IEhQLVVYIGFuZCBpZiB0aGUgZXVjLWpwIGlzIG5vdAotaW5zdGFsbGVkIG9uIHRoZSBob3N0LCB0aGUgZGVwZW5kZW5jZSB3aWxsIGJlIGJ1aWx0IHdpdGhvdXQKLWljb252IHN1cHBvcnQgYW5kIHdpbGwgY2F1c2UgZ3VpbGQtbmF0aXZlIGJ1aWxkaW5nIGZhaWwuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIG00L2ljb252Lm00IHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL200L2ljb252Lm00IGIvbTQvaWNvbnYubTQKLWluZGV4IGE1MDM2NDYuLjI5OWYxZWIgMTAwNjQ0Ci0tLS0gYS9tNC9pY29udi5tNAotKysrIGIvbTQvaWNvbnYubTQKLUBAIC0xNTksNiArMTU5LDcgQEAgaW50IG1haW4gKCkKLSAgICAgICB9Ci0gICB9Ci0gI2VuZGlmCi0rI2lmIDAKLSAgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcwotICAgICAgcHJvdmlkZWQuICAqLwotICAgaWYgKC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLwotQEAgLTE3MCw2ICsxNzEsNyBAQCBpbnQgbWFpbiAoKQotICAgICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCi0gICAgICAgJiYgaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpKQotICAgICByZXN1bHQgfD0gMTY7Ci0rI2VuZGlmCi0gICByZXR1cm4gcmVzdWx0OwotIH1dXSldLAotICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwKLS0tIAotMi4wLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9GaXhfb25lX0dDQzdfd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvRml4X29uZV9HQ0M3X3dhcm5pbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4OGY0ZWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9GaXhfb25lX0dDQzdfd2FybmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gOTNjNTExNDRjM2Y2NjRkNGU5NzA5ZGE3NWExZDBmYTAwZWEwZmU5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgV2llbGFhcmQgPG1hcmtAa2xvbXAub3JnPgotRGF0ZTogU3VuLCAxMiBGZWIgMjAxNyAyMTo1MTozNCArMDEwMAotU3ViamVjdDogW1BBVENIXSBsaWJhc206IEZpeCBvbmUgR0NDNyAtV2Zvcm1hdC10cnVuY2F0aW9uPTIgd2FybmluZy4KLQotTWFrZSBzdXJlIHRoYXQgaWYgd2UgaGF2ZSByZWFsbHkgbG90cyBvZiBsYWJlbHMgdGhlIHRlbXBzeW0gZG9lc24ndCBnZXQKLXRydW5jYXRlZCBiZWNhdXNlIGl0IGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSB3aG9sZSBuYW1lLgotCi1UaGlzIGRvZXNuJ3QgZW5hYmxlIC1XZm9ybWF0LXRydW5jYXRpb249MiBvciBmaXggb3RoZXIgImlzc3VlcyIgcG9pbnRlZAotb3V0IGJ5IGVuYWJsaW5nIHRoaXMgd2FybmluZyBiZWNhdXNlIHRoZXJlIGFyZSBjdXJyZW50bHkgc29tZSBpc3N1ZXMKLXdpdGggaXQuIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTc5NDQ4Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgV2llbGFhcmQgPG1hcmtAa2xvbXAub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1lbGZ1dGlscy5naXQ7YT1jb21taXQ7aD05M2M1MTE0NGMzZjY2NGQ0ZTk3MDlkYTc1YTFkMGZhMDBlYTBmZTk1KQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgotCi0tLS0KLSBsaWJhc20vQ2hhbmdlTG9nICAgIHwgNiArKysrKy0KLSBsaWJhc20vYXNtX25ld3N5bS5jIHwgNiArKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGVsZnV0aWxzLTAuMTY4L2xpYmFzbS9hc21fbmV3c3ltLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2OC5vcmlnL2xpYmFzbS9hc21fbmV3c3ltLmMKLSsrKyBlbGZ1dGlscy0wLjE2OC9saWJhc20vYXNtX25ld3N5bS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiBEZWZpbmUgbmV3IHN5bWJvbCBmb3IgY3VycmVudCBwb3NpdGlvbiBpbiBnaXZlbiBzZWN0aW9uLgotLSAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAxNiBSZWQgSGF0LCBJbmMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LCAyMDE2LCAyMDE3IFJlZCBIYXQsIEluYy4KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBlbGZ1dGlscy4KLSAgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LCAyMDAyLgotIAotQEAgLTQ0LDcgKzQ0LDkgQEAgQXNtU3ltX3QgKgotIGFzbV9uZXdzeW0gKEFzbVNjbl90ICphc21zY24sIGNvbnN0IGNoYXIgKm5hbWUsIEdFbGZfWHdvcmQgc2l6ZSwKLSAJICAgIGludCB0eXBlLCBpbnQgYmluZGluZykKLSB7Ci0tI2RlZmluZSBURU1QU1lNTEVOIDEwCi0rLyogV2UgZG9uJ3QgcmVhbGx5IGV4cGVjdCBsYWJlbHMgd2l0aCBtYW55IGRpZ2l0cywgYnV0IGluIHRoZW9yeSBpdCBjb3VsZAotKyAgIGJlIDEwIGRpZ2l0cyAocGx1cyAiLkwiIGFuZCBhIHplcm8gdGVybWluYXRvcikuICAqLwotKyNkZWZpbmUgVEVNUFNZTUxFTiAxMwotICAgY2hhciB0ZW1wc3ltW1RFTVBTWU1MRU5dOwotICAgQXNtU3ltX3QgKnJlc3VsdDsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvYWFyY2g2NF91aW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2FhcmNoNjRfdWlvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGRjNTdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvYWFyY2g2NF91aW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1GaXggYnVpbGQgb24gYWFyY2g2NC9tdXNsCi0KLUVycm9ycwotCi1pbnZhbGlkIG9wZXJhbmRzIHRvIGJpbmFyeSAmIChoYXZlICdsb25nIGRvdWJsZScgYW5kICd1bnNpZ25lZCBpbnQnKQotCi1lcnJvcjogcmVkZWZpbml0aW9uCi0gb2YgJ3N0cnVjdCBpb3ZlYycKLSBzdHJ1Y3QgaW92ZWMgeyB2b2lkICppb3ZfYmFzZTsgc2l6ZV90IGlvdl9sZW47IH07Ci0gICAgICAgIF4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBlbGZ1dGlscy0wLjE2My9iYWNrZW5kcy9hYXJjaDY0X2luaXRyZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTYzLm9yaWcvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKLSsrKyBlbGZ1dGlscy0wLjE2My9iYWNrZW5kcy9hYXJjaDY0X2luaXRyZWcuYwotQEAgLTMzLDcgKzMzLDcgQEAKLSAjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpZmRlZiBfX2FhcmNoNjRfXwotLSMgaW5jbHVkZSA8bGludXgvdWlvLmg+Ci0rIyBpbmNsdWRlIDxzeXMvdWlvLmg+Ci0gIyBpbmNsdWRlIDxzeXMvdXNlci5oPgotICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotIC8qIERlYWwgd2l0aCBvbGQgZ2xpYmMgZGVmaW5pbmcgdXNlcl9wdF9yZWdzIGluc3RlYWQgb2YgdXNlcl9yZWdzX3N0cnVjdC4gICovCi1AQCAtODIsNyArODIsNyBAQCBhYXJjaDY0X3NldF9pbml0aWFsX3JlZ2lzdGVyc190aWQgKHBpZF90Ci0gCi0gICBEd2FyZl9Xb3JkIGR3YXJmX2ZyZWdzWzMyXTsKLSAgIGZvciAoaW50IHIgPSAwOyByIDwgMzI7IHIrKykKLS0gICAgZHdhcmZfZnJlZ3Nbcl0gPSBmcmVncy52cmVnc1tyXSAmIDB4RkZGRkZGRkY7Ci0rICAgIGR3YXJmX2ZyZWdzW3JdID0gKHVuc2lnbmVkIGludClmcmVncy52cmVnc1tyXSAmIDB4RkZGRkZGRkY7Ci0gCi0gICBpZiAoISBzZXRmdW5jICg2NCwgMzIsIGR3YXJmX2ZyZWdzLCBhcmcpKQotICAgICByZXR1cm4gZmFsc2U7Ci1JbmRleDogZWxmdXRpbHMtMC4xNjMvYmFja2VuZHMvYXJtX2luaXRyZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTYzLm9yaWcvYmFja2VuZHMvYXJtX2luaXRyZWcuYwotKysrIGVsZnV0aWxzLTAuMTYzL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKLUBAIC0zNyw3ICszNyw3IEBACi0gI2VuZGlmCi0gCi0gI2lmZGVmIF9fYWFyY2g2NF9fCi0tIyBpbmNsdWRlIDxsaW51eC91aW8uaD4KLSsjIGluY2x1ZGUgPHN5cy91aW8uaD4KLSAjIGluY2x1ZGUgPHN5cy91c2VyLmg+Ci0gIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0gLyogRGVhbCB3aXRoIG9sZCBnbGliYyBkZWZpbmluZyB1c2VyX3B0X3JlZ3MgaW5zdGVhZCBvZiB1c2VyX3JlZ3Nfc3RydWN0LiAgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2h1cmRfcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2h1cmRfcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRkNTY4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9odXJkX3BhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGVsZnV0aWxzLTAuMTY1L3Rlc3RzL3J1bi1uYXRpdmUtdGVzdC5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY1Lm9yaWcvdGVzdHMvcnVuLW5hdGl2ZS10ZXN0LnNoCi0rKysgZWxmdXRpbHMtMC4xNjUvdGVzdHMvcnVuLW5hdGl2ZS10ZXN0LnNoCi1AQCAtODMsNiArODMsOSBAQCBuYXRpdmVfdGVzdCgpCi0gIyAiY2Fubm90IGF0dGFjaCB0byBwcm9jZXNzOiBGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLgotIFsgIiQodW5hbWUpIiA9ICJHTlUva0ZyZWVCU0QiIF0gJiYgZXhpdCA3NwotIAotKyMgaHVyZCdzIC9wcm9jLyRQSUQvbWFwcyBkb2VzIG5vdCBnaXZlIHBhdGhzIHlldC4KLStbICIkKHVuYW1lKSIgPSAiR05VIiBdICYmIGV4aXQgNzcKLSsKLSBuYXRpdmVfdGVzdCAke2Fic19idWlsZGRpcn0vYWxscmVncwotIG5hdGl2ZV90ZXN0ICR7YWJzX2J1aWxkZGlyfS9mdW5jcmV0dmFsCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTcwZGVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBlbGZ1dGlscy0wLjE2NS5vcmlnL3Rlc3RzL3J1bi1zdHJpcC1zdHJtZXJnZS5zaAotKysrIGVsZnV0aWxzLTAuMTY1L3Rlc3RzL3J1bi1zdHJpcC1zdHJtZXJnZS5zaAotQEAgLTMwLDcgKzMwLDcgQEAgcmVtZXJnZWQ9cmVtZXJnZWQuZWxmCi0gdGVtcGZpbGVzICRtZXJnZWQgJHN0cmlwcGVkICRkZWJ1Z2ZpbGUgJHJlbWVyZ2VkCi0gCi0gZWNobyBlbGZsaW50ICRpbnB1dAotLXRlc3RydW4gJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLWdudSAkaW5wdXQKLSt0ZXN0cnVuX29uX3NlbGZfc2tpcCAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tZ251ICRpbnB1dAotIGVjaG8gZWxmc3RybWVyZ2UKLSB0ZXN0cnVuICR7YWJzX3RvcF9idWlsZGRpcn0vdGVzdHMvZWxmc3RybWVyZ2UgLW8gJG1lcmdlZCAkaW5wdXQKLSBlY2hvIGVsZmxpbnQgJG1lcmdlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4va2ZyZWVic2RfcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2tmcmVlYnNkX3BhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MDg1ZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4va2ZyZWVic2RfcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogYi90ZXN0cy9ydW4tbmF0aXZlLXRlc3Quc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Rlc3RzL3J1bi1uYXRpdmUtdGVzdC5zaAotKysrIGIvdGVzdHMvcnVuLW5hdGl2ZS10ZXN0LnNoCi1AQCAtNzcsNiArNzcsMTIgQEAgbmF0aXZlX3Rlc3QoKQotICAgdGVzdCAkbmF0aXZlIC1lcSAwIHx8IHRlc3RydW4gIiRAIiAtcCAkbmF0aXZlID4gL2Rldi9udWxsCi0gfQotIAotKyMgT24gdGhlIERlYmlhbiBidWlsZGRzLCBHTlUva0ZyZWVCU0QgbGlucHJvY2ZzIC9wcm9jLyRQSUQvbWFwcyBkb2VzCi0rIyBub3QgZ2l2ZSBhYnNvbHV0ZSBwYXRocyBkdWUgdG8gc2J1aWxkJ3MgYmluZCBtb3VudHMgKGJ1ZyAjNTcwODA1KQotKyMgdGhlcmVmb3JlIHRoZSBuZXh0IHR3byB0ZXN0IHByb2dyYW1zIGFyZSBleHBlY3RlZCB0byBmYWlsIHdpdGgKLSsjICJjYW5ub3QgYXR0YWNoIHRvIHByb2Nlc3M6IEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCIuCi0rWyAiJCh1bmFtZSkiID0gIkdOVS9rRnJlZUJTRCIgXSAmJiBleGl0IDc3Ci0rCi0gbmF0aXZlX3Rlc3QgJHthYnNfYnVpbGRkaXJ9L2FsbHJlZ3MKLSBuYXRpdmVfdGVzdCAke2Fic19idWlsZGRpcn0vZnVuY3JldHZhbAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVlNzZkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDY4NiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGIvYmFja2VuZHMvbWlwc19pbml0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCi1AQCAtMCwwICsxLDU5IEBACi0rLyogSW5pdGlhbGl6YXRpb24gb2YgbWlwcyBzcGVjaWZpYyBiYWNrZW5kIGxpYnJhcnkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSBCQUNLRU5ECQltaXBzXwotKyNkZWZpbmUgUkVMT0NfUFJFRklYCVJfTUlQU18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotKy8qIFRoaXMgZGVmaW5lcyB0aGUgY29tbW9uIHJlbG9jIGhvb2tzIGJhc2VkIG9uIG1pcHNfcmVsb2MuZGVmLiAgKi8KLSsjaW5jbHVkZSAiY29tbW9uLXJlbG9jLmMiCi0rCi0rY29uc3QgY2hhciAqCi0rbWlwc19pbml0IChFbGYgKmVsZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgICBHRWxmX0hhbGYgbWFjaGluZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgICBFYmwgKmVoLAotKyAgICAgc2l6ZV90IGVobGVuKQotK3sKLSsgIC8qIENoZWNrIHdoZXRoZXIgdGhlIEVsZl9CSCBvYmplY3QgaGFzIGEgc3VmZmljZW50IHNpemUuICAqLwotKyAgaWYgKGVobGVuIDwgc2l6ZW9mIChFYmwpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8qIFdlIGhhbmRsZSBpdC4gICovCi0rICBpZiAobWFjaGluZSA9PSBFTV9NSVBTKQotKyAgICBlaC0+bmFtZSA9ICJNSVBTIFIzMDAwIGJpZy1lbmRpYW4iOwotKyAgZWxzZSBpZiAobWFjaGluZSA9PSBFTV9NSVBTX1JTM19MRSkKLSsgICAgZWgtPm5hbWUgPSAiTUlQUyBSMzAwMCBsaXR0bGUtZW5kaWFuIjsKLSsKLSsgIG1pcHNfaW5pdF9yZWxvYyAoZWgpOwotKyAgSE9PSyAoZWgsIHJlbG9jX3NpbXBsZV90eXBlKTsKLSsgIEhPT0sgKGVoLCByZXR1cm5fdmFsdWVfbG9jYXRpb24pOwotKyAgSE9PSyAoZWgsIHJlZ2lzdGVyX2luZm8pOwotKwotKyAgcmV0dXJuIE1PRFZFUlNJT047Ci0rfQotSW5kZXg6IGIvYmFja2VuZHMvbWlwc19yZWdzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfcmVncy5jCi1AQCAtMCwwICsxLDEwNCBAQAotKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBNSVBTIERXQVJGLgotKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZHdhcmYuaD4KLSsKLSsjZGVmaW5lIEJBQ0tFTkQgbWlwc18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotK3NzaXplX3QKLSttaXBzX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotKwkJICAgIGludCByZWdubywgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCi0rCQkgICAgY29uc3QgY2hhciAqKnByZWZpeCwgY29uc3QgY2hhciAqKnNldG5hbWUsCi0rCQkgICAgaW50ICpiaXRzLCBpbnQgKnR5cGUpCi0rewotKyAgaWYgKG5hbWUgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDY2OwotKwotKyAgaWYgKHJlZ25vIDwgMCB8fCByZWdubyA+IDY1IHx8IG5hbWVsZW4gPCA0KQotKyAgICByZXR1cm4gLTE7Ci0rCi0rICAqcHJlZml4ID0gIiQiOwotKwotKyAgaWYgKHJlZ25vIDwgMzIpCi0rICAgIHsKLSsgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQotKyAgICAgICAgewotKyAgICAgICAgICBuYW1lWzBdID0gcmVnbm8gKyAnMCc7Ci0rICAgICAgICAgIG5hbWVsZW4gPSAxOwotKyAgICAgICAgfQotKyAgICAgIGVsc2UKLSsgICAgICAgIHsKLSsgICAgICAgICAgbmFtZVswXSA9IChyZWdubyAvIDEwKSArICcwJzsKLSsgICAgICAgICAgbmFtZVsxXSA9IChyZWdubyAlIDEwKSArICcwJzsKLSsgICAgICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHJlZ25vIDwgNjQpCi0rICAgIHsKLSsgICAgICAqc2V0bmFtZSA9ICJGUFUiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgbmFtZVswXSA9ICdmJzsKLSsgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQotKwl7Ci0rCSAgbmFtZVsxXSA9IChyZWdubyAtIDMyKSArICcwJzsKLSsJICBuYW1lbGVuID0gMjsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgLyAxMCArICcwJzsKLSsJICBuYW1lWzJdID0gKHJlZ25vIC0gMzIpICUgMTAgKyAnMCc7Ci0rCSAgbmFtZWxlbiA9IDM7Ci0rCX0KLSsgICAgfQotKyAgZWxzZSBpZiAocmVnbm8gPT0gNjQpCi0rICAgIHsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBuYW1lWzBdID0gJ2gnOwotKyAgICAgIG5hbWVbMV0gPSAnaSc7Ci0rICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgIG5hbWVbMF0gPSAnbCc7Ci0rICAgICAgbmFtZVsxXSA9ICdvJzsKLSsgICAgICBuYW1lbGVuID0gMjsKLSsgICAgfQotKwotKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKLSsgIHJldHVybiBuYW1lbGVuOwotK30KLUluZGV4OiBiL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZgotQEAgLTAsMCArMSw3OSBAQAotKy8qIExpc3QgdGhlIHJlbG9jYXRpb24gdHlwZXMgZm9yIG1pcHMuICAtKi0gQyAtKi0KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKy8qIAkgICAgTkFNRSwJCVJFTHxFWEVDfERZTgkqLwotKwotK1JFTE9DX1RZUEUgKE5PTkUsICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFICgxNiwgICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoMzIsICAgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFJFTDMyLCAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFICgyNiwgICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSEkxNiwgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKExPMTYsICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHUFJFTDE2LCAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoTElURVJBTCwgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVDE2LCAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChQQzE2LCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoQ0FMTDE2LCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdQUkVMMzIsICAgICAgICAgICAgMCkKLSsKLStSRUxPQ19UWVBFIChTSElGVDUsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoU0hJRlQ2LCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKDY0LCAgICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1RfRElTUCwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX1BBR0UsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVF9PRlNULCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1RfSEkxNiwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX0xPMTYsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFNVQiwgICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChJTlNFUlRfQSwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSU5TRVJUX0IsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKERFTEVURSwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChISUdIRVIsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSElHSEVTVCwgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKENBTExfSEkxNiwgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChDQUxMX0xPMTYsICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoU0NOX0RJU1AsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFJFTDE2LCAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChBRERfSU1NRURJQVRFLCAgICAgIDApCi0rUkVMT0NfVFlQRSAoUEpVTVAsICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFJFTEdPVCwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChKQUxSLCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUE1PRDMyLCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBSRUwzMiwgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQTU9ENjQsICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUFJFTDY0LCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19HRCwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfTERNLCAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUFJFTF9ISTE2LCAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBSRUxfTE8xNiwgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfR09UVFBSRUwsICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX1RQUkVMMzIsICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19UUFJFTDY0LCAgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfVFBSRUxfSEkxNiwgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX1RQUkVMX0xPMTYsICAgICAwKQotKwotKyNkZWZpbmUgTk9fQ09QWV9SRUxPQyAxCi0rI2RlZmluZSBOT19SRUxBVElWRV9SRUxPQyAxCi1JbmRleDogYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi1AQCAtMCwwICsxLDMyMSBAQAotKy8qIEZ1bmN0aW9uIHJldHVybiB2YWx1ZSBsb2NhdGlvbiBmb3IgTGludXgvbWlwcyBBQkkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDA1IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8ZHdhcmYuaD4KLSsjaW5jbHVkZSA8ZWxmLmg+Ci0rCi0rI2luY2x1ZGUgIi4uL2xpYmVibC9saWJlYmxQLmgiCi0rI2luY2x1ZGUgIi4uL2xpYmR3L2xpYmR3UC5oIgotKwotKyNkZWZpbmUgQkFDS0VORCBtaXBzXwotKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCi0rCi0rLyogVGhlIEFCSSBvZiB0aGUgZmlsZS4gIEFsc28gc2VlIEVGX01JUFNfQUJJMiBhYm92ZS4gKi8KLSsjZGVmaW5lIEVGX01JUFNfQUJJCQkweDAwMDBGMDAwCi0rCi0rLyogVGhlIG9yaWdpbmFsIG8zMiBhYmkuICovCi0rI2RlZmluZSBFX01JUFNfQUJJX08zMiAgICAgICAgICAweDAwMDAxMDAwCi0rCi0rLyogTzMyIGV4dGVuZGVkIHRvIHdvcmsgb24gNjQgYml0IGFyY2hpdGVjdHVyZXMgKi8KLSsjZGVmaW5lIEVfTUlQU19BQklfTzY0ICAgICAgICAgIDB4MDAwMDIwMDAKLSsKLSsvKiBFQUJJIGluIDMyIGJpdCBtb2RlICovCi0rI2RlZmluZSBFX01JUFNfQUJJX0VBQkkzMiAgICAgICAweDAwMDAzMDAwCi0rCi0rLyogRUFCSSBpbiA2NCBiaXQgbW9kZSAqLwotKyNkZWZpbmUgRV9NSVBTX0FCSV9FQUJJNjQgICAgICAgMHgwMDAwNDAwMAotKwotKy8qIEFsbCB0aGUgcG9zc2libGUgTUlQUyBBQklzLiAqLwotK2VudW0gbWlwc19hYmkKLSsgIHsKLSsgICAgTUlQU19BQklfVU5LTk9XTiA9IDAsCi0rICAgIE1JUFNfQUJJX04zMiwKLSsgICAgTUlQU19BQklfTzMyLAotKyAgICBNSVBTX0FCSV9ONjQsCi0rICAgIE1JUFNfQUJJX082NCwKLSsgICAgTUlQU19BQklfRUFCSTMyLAotKyAgICBNSVBTX0FCSV9FQUJJNjQsCi0rICAgIE1JUFNfQUJJX0xBU1QKLSsgIH07Ci0rCi0rLyogRmluZCB0aGUgbWlwcyBBQkkgb2YgdGhlIGN1cnJlbnQgZmlsZSAqLwotK2VudW0gbWlwc19hYmkgZmluZF9taXBzX2FiaShFbGYgKmVsZikKLSt7Ci0rICBHRWxmX0VoZHIgZWhkcl9tZW07Ci0rICBHRWxmX0VoZHIgKmVoZHIgPSBnZWxmX2dldGVoZHIgKGVsZiwgJmVoZHJfbWVtKTsKLSsKLSsgIGlmIChlaGRyID09IE5VTEwpCi0rICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOwotKwotKyAgR0VsZl9Xb3JkIGVsZl9mbGFncyA9IGVoZHItPmVfZmxhZ3M7Ci0rCi0rICAvKiBDaGVjayBlbGZfZmxhZ3MgdG8gc2VlIGlmIGl0IHNwZWNpZmllcyB0aGUgQUJJIGJlaW5nIHVzZWQuICAqLwotKyAgc3dpdGNoICgoZWxmX2ZsYWdzICYgRUZfTUlQU19BQkkpKQotKyAgICB7Ci0rICAgIGNhc2UgRV9NSVBTX0FCSV9PMzI6Ci0rICAgICAgcmV0dXJuIE1JUFNfQUJJX08zMjsKLSsgICAgY2FzZSBFX01JUFNfQUJJX082NDoKLSsgICAgICByZXR1cm4gTUlQU19BQklfTzY0OwotKyAgICBjYXNlIEVfTUlQU19BQklfRUFCSTMyOgotKyAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJMzI7Ci0rICAgIGNhc2UgRV9NSVBTX0FCSV9FQUJJNjQ6Ci0rICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkk2NDsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBpZiAoKGVsZl9mbGFncyAmIEVGX01JUFNfQUJJMikpCi0rCXJldHVybiBNSVBTX0FCSV9OMzI7Ci0rICAgIH0KLSsKLSsgIC8qIEdDQyBjcmVhdGVzIGEgcHNldWRvLXNlY3Rpb24gd2hvc2UgbmFtZSBkZXNjcmliZXMgdGhlIEFCSS4gICovCi0rICBzaXplX3Qgc2hzdHJuZHg7Ci0rICBpZiAoZWxmX2dldHNoZHJzdHJuZHggKGVsZiwgJnNoc3RybmR4KSA8IDApCi0rICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOwotKwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIEVsZl9TY24gKnNjbiA9IE5VTEw7Ci0rICB3aGlsZSAoKHNjbiA9IGVsZl9uZXh0c2NuIChlbGYsIHNjbikpICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBHRWxmX1NoZHIgc2hkcl9tZW07Ci0rICAgICAgR0VsZl9TaGRyICpzaGRyID0gZ2VsZl9nZXRzaGRyIChzY24sICZzaGRyX21lbSk7Ci0rICAgICAgaWYgKHNoZHIgPT0gTlVMTCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOwotKwotKyAgICAgIG5hbWUgPSBlbGZfc3RycHRyIChlbGYsIHNoc3RybmR4LCBzaGRyLT5zaF9uYW1lKSA/OiAiIjsKLSsgICAgICBpZiAoc3RybmNtcCAobmFtZSwgIi5tZGVidWcuIiwgOCkgIT0gMCkKLSsgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaTMyIikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9PMzI7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmlOMzIiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX04zMjsKLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaTY0IikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9ONjQ7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmlPNjQiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX082NDsKLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmVhYmkzMiIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTMyOwotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuZWFiaTY0IikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJNjQ7Ci0rICAgICAgZWxzZQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX1VOS05PV047Ci0rICAgIH0KLSsKLSsgIHJldHVybiBNSVBTX0FCSV9VTktOT1dOOwotK30KLSsKLSt1bnNpZ25lZCBpbnQKLSttaXBzX2FiaV9yZWdzaXplIChlbnVtIG1pcHNfYWJpIGFiaSkKLSt7Ci0rICBzd2l0Y2ggKGFiaSkKLSsgICAgewotKyAgICBjYXNlIE1JUFNfQUJJX0VBQkkzMjoKLSsgICAgY2FzZSBNSVBTX0FCSV9PMzI6Ci0rICAgICAgcmV0dXJuIDQ7Ci0rICAgIGNhc2UgTUlQU19BQklfTjMyOgotKyAgICBjYXNlIE1JUFNfQUJJX042NDoKLSsgICAgY2FzZSBNSVBTX0FCSV9PNjQ6Ci0rICAgIGNhc2UgTUlQU19BQklfRUFCSTY0OgotKyAgICAgIHJldHVybiA4OwotKyAgICBjYXNlIE1JUFNfQUJJX1VOS05PV046Ci0rICAgIGNhc2UgTUlQU19BQklfTEFTVDoKLSsgICAgZGVmYXVsdDoKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotK30KLSsKLSsKLSsvKiAkdjAgb3IgcGFpciAkdjAsICR2MSAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnX28zMltdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICB9OwotKwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWczIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgIH07Ci0rI2RlZmluZSBubG9jX2ludHJlZwkxCi0rI2RlZmluZSBubG9jX2ludHJlZ3BhaXIJNAotKwotKy8qICRmMCAoZmxvYXQpLCBvciBwYWlyICRmMCwgJGYxIChkb3VibGUpLgotKyAqIGYyL2YzIGFyZSB1c2VkIGZvciBDT01QTEVYICg9IDIgZG91YmxlcykgcmV0dXJucyBpbiBGb3J0cmFuICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ19vMzJbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMzIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzUgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgfTsKLSsKLSsvKiAkZjAsIG9yIHBhaXIgJGYwLCAkZjIuICAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM0IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgIH07Ci0rI2RlZmluZSBubG9jX2ZwcmVnICAxCi0rI2RlZmluZSBubG9jX2ZwcmVncGFpciA0Ci0rI2RlZmluZSBubG9jX2ZwcmVncXVhZCA4Ci0rCi0rLyogVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdHVyZSBhbmQgaXMgYWN0dWFsbHkgc3RvcmVkIGluIHN0YWNrIHNwYWNlCi0rICAgcGFzc2VkIGluIGEgaGlkZGVuIGFyZ3VtZW50IGJ5IHRoZSBjYWxsZXIuICBCdXQsIHRoZSBjb21waWxlcgotKyAgIGhlbHBmdWxseSByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoYXQgc3BhY2UgaW4gJHYwLiAgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2FnZ3JlZ2F0ZVtdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX2JyZWcyLCAubnVtYmVyID0gMCB9Ci0rICB9OwotKyNkZWZpbmUgbmxvY19hZ2dyZWdhdGUgMQotKwotK2ludAotK21pcHNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0rewotKyAgLyogRmlyc3QgZmluZCB0aGUgQUJJIHVzZWQgYnkgdGhlIGVsZiBvYmplY3QgKi8KLSsgIGVudW0gbWlwc19hYmkgYWJpID0gZmluZF9taXBzX2FiaShmdW5jdHlwZWRpZS0+Y3UtPmRiZy0+ZWxmKTsKLSsKLSsgIC8qIFNvbWV0aGluZyB3ZW50IHNlcmlvdXNseSB3cm9uZyB3aGlsZSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgQUJJICovCi0rICBpZiAoYWJpID09IE1JUFNfQUJJX0xBU1QpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIC8qIFdlIGNvdWxkbid0IGlkZW50aWZ5IHRoZSBBQkksIGJ1dCB0aGUgZmlsZSBzZWVtcyB2YWxpZCAqLwotKyAgaWYgKGFiaSA9PSBNSVBTX0FCSV9VTktOT1dOKQotKyAgICByZXR1cm4gLTI7Ci0rCi0rICAvKiBDYW4ndCBoYW5kbGUgRUFCSSB2YXJpYW50cyAqLwotKyAgaWYgKChhYmkgPT0gTUlQU19BQklfRUFCSTMyKSB8fCAoYWJpID09IE1JUFNfQUJJX0VBQkk2NCkpCi0rICAgIHJldHVybiAtMjsKLSsKLSsgIHVuc2lnbmVkIGludCByZWdzaXplID0gbWlwc19hYmlfcmVnc2l6ZSAoYWJpKTsKLSsgIGlmICghcmVnc2l6ZSkKLSsgICAgcmV0dXJuIC0yOwotKwotKyAgLyogU3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24ncyB0eXBlLCBhbmQgZ2V0IHRoZSBEV19BVF90eXBlIGF0dHJpYnV0ZSwKLSsgICAgIHdoaWNoIGlzIHRoZSB0eXBlIG9mIHRoZSByZXR1cm4gdmFsdWUuICAqLwotKwotKyAgRHdhcmZfQXR0cmlidXRlIGF0dHJfbWVtOwotKyAgRHdhcmZfQXR0cmlidXRlICphdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKGZ1bmN0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKyAgaWYgKGF0dHIgPT0gTlVMTCkKLSsgICAgLyogVGhlIGZ1bmN0aW9uIGhhcyBubyByZXR1cm4gdmFsdWUsIGxpa2UgYSBgdm9pZCcgZnVuY3Rpb24gaW4gQy4gICovCi0rICAgIHJldHVybiAwOwotKwotKyAgRHdhcmZfRGllIGRpZV9tZW07Ci0rICBEd2FyZl9EaWUgKnR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKyAgaW50IHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rCi0rICAvKiBGb2xsb3cgdHlwZWRlZnMgYW5kIHF1YWxpZmllcnMgdG8gZ2V0IHRvIHRoZSBhY3R1YWwgdHlwZS4gICovCi0rICB3aGlsZSAodGFnID09IERXX1RBR190eXBlZGVmCi0rCSB8fCB0YWcgPT0gRFdfVEFHX2NvbnN0X3R5cGUgfHwgdGFnID09IERXX1RBR192b2xhdGlsZV90eXBlCi0rCSB8fCB0YWcgPT0gRFdfVEFHX3Jlc3RyaWN0X3R5cGUpCi0rICAgIHsKLSsgICAgICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7Ci0rICAgICAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0rICAgICAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSsgICAgfQotKwotKyAgc3dpdGNoICh0YWcpCi0rICAgIHsKLSsgICAgY2FzZSAtMToKLSsgICAgICByZXR1cm4gLTE7Ci0rCi0rICAgIGNhc2UgRFdfVEFHX3N1YnJhbmdlX3R5cGU6Ci0rICAgICAgaWYgKCEgZHdhcmZfaGFzYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSkpCi0rCXsKLSsJICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7Ci0rCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0rCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSsJfQotKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rCi0rICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLSsgICAgY2FzZSBEV19UQUdfcG9pbnRlcl90eXBlOgotKyAgICBjYXNlIERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGU6Ci0rICAgICAgewotKyAgICAgICAgRHdhcmZfV29yZCBzaXplOwotKwlpZiAoZHdhcmZfZm9ybXVkYXRhIChkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfYnl0ZV9zaXplLAotKwkJCQkJICZhdHRyX21lbSksICZzaXplKSAhPSAwKQotKwkgIHsKLSsJICAgIGlmICh0YWcgPT0gRFdfVEFHX3BvaW50ZXJfdHlwZSB8fCB0YWcgPT0gRFdfVEFHX3B0cl90b19tZW1iZXJfdHlwZSkKLSsJICAgICAgc2l6ZSA9IHJlZ3NpemU7Ci0rCSAgICBlbHNlCi0rCSAgICAgIHJldHVybiAtMTsKLSsJICB9Ci0rCWlmICh0YWcgPT0gRFdfVEFHX2Jhc2VfdHlwZSkKLSsJICB7Ci0rCSAgICBEd2FyZl9Xb3JkIGVuY29kaW5nOwotKwkgICAgaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2VuY29kaW5nLAotKwkJCQkJICAgICAmYXR0cl9tZW0pLCAmZW5jb2RpbmcpICE9IDApCi0rCSAgICAgIHJldHVybiAtMTsKLSsKLSsjZGVmaW5lIEFCSV9MT0MobG9jLCByZWdzaXplKSAoKHJlZ3NpemUpID09IDQgPyAobG9jICMjIF9vMzIpIDogKGxvYykpCi0rCi0rCSAgICBpZiAoZW5jb2RpbmcgPT0gRFdfQVRFX2Zsb2F0KQotKwkgICAgICB7Ci0rCQkqbG9jcCA9IEFCSV9MT0MobG9jX2ZwcmVnLCByZWdzaXplKTsKLSsJCWlmIChzaXplIDw9IHJlZ3NpemUpCi0rCQkgICAgcmV0dXJuIG5sb2NfZnByZWc7Ci0rCi0rCQlpZiAoc2l6ZSA8PSAyKnJlZ3NpemUpCi0rICAgICAgICAgICAgICAgICAgcmV0dXJuIG5sb2NfZnByZWdwYWlyOwotKwotKwkJaWYgKHNpemUgPD0gNCpyZWdzaXplICYmIGFiaSA9PSBNSVBTX0FCSV9PMzIpCi0rICAgICAgICAgICAgICAgICAgcmV0dXJuIG5sb2NfZnByZWdxdWFkOwotKwotKwkJZ290byBhZ2dyZWdhdGU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCSpsb2NwID0gQUJJX0xPQyhsb2NfaW50cmVnLCByZWdzaXplKTsKLSsJaWYgKHNpemUgPD0gcmVnc2l6ZSkKLSsJICByZXR1cm4gbmxvY19pbnRyZWc7Ci0rCWlmIChzaXplIDw9IDIqcmVnc2l6ZSkKLSsJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOwotKwotKwkvKiBFbHNlIGZhbGwgdGhyb3VnaC4gU2hvdWxkbid0IGhhcHBlbiB0aG91Z2ggKGF0IGxlYXN0IHdpdGggZ2NjKSAqLwotKyAgICAgIH0KLSsKLSsgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6Ci0rICAgIGFnZ3JlZ2F0ZToKLSsgICAgICAvKiBYWFggVE9ETzogQ2FuJ3QgaGFuZGxlIHN0cnVjdHVyZSByZXR1cm4gd2l0aCBvdGhlciBBQkkncyB5ZXQgOi0vICovCi0rICAgICAgaWYgKChhYmkgIT0gTUlQU19BQklfTzMyKSAmJiAoYWJpICE9IE1JUFNfQUJJX082NCkpCi0rICAgICAgICByZXR1cm4gLTI7Ci0rCi0rICAgICAgKmxvY3AgPSBsb2NfYWdncmVnYXRlOwotKyAgICAgIHJldHVybiBubG9jX2FnZ3JlZ2F0ZTsKLSsgICAgfQotKwotKyAgLyogWFhYIFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byByZXR1cm4gc3BlY2lmaWMgZXJyb3JzIGZyb20gZWJsIGNhbGxzLgotKyAgICAgVGhpcyB2YWx1ZSBtZWFucyB3ZSBkbyBub3QgdW5kZXJzdGFuZCB0aGUgdHlwZSwgYnV0IGl0IGlzIHdlbGwtZm9ybWVkCi0rICAgICBEV0FSRiBhbmQgbWlnaHQgYmUgdmFsaWQuICAqLwotKyAgcmV0dXJuIC0yOwotK30KLUluZGV4OiBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKLUBAIC0wLDAgKzEsNTIgQEAKLSsvKiBNSVBTIHNwZWNpZmljIHN5bWJvbGljIG5hbWUgaGFuZGxpbmcuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKyAgIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4sIDIwMDIuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8ZWxmLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKyNkZWZpbmUgQkFDS0VORAkJbWlwc18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotKy8qIENoZWNrIGZvciB0aGUgc2ltcGxlIHJlbG9jIHR5cGVzLiAgKi8KLStFbGZfVHlwZQotK21pcHNfcmVsb2Nfc2ltcGxlX3R5cGUgKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IHR5cGUpCi0rewotKyAgc3dpdGNoICh0eXBlKQotKyAgICB7Ci0rICAgIGNhc2UgUl9NSVBTXzE2OgotKyAgICAgIHJldHVybiBFTEZfVF9IQUxGOwotKyAgICBjYXNlIFJfTUlQU18zMjoKLSsgICAgICByZXR1cm4gRUxGX1RfV09SRDsKLSsgICAgY2FzZSBSX01JUFNfNjQ6Ci0rICAgICAgcmV0dXJuIEVMRl9UX1hXT1JEOwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVybiBFTEZfVF9OVU07Ci0rICAgIH0KLSt9Ci1JbmRleDogYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLSsrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1AQCAtNzEsNiArNzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0Ci0gICB7ICJzcGFyYyIsICJlbGZfc3BhcmMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQywgMCwgMCB9LAotICAgeyAic3BhcmMiLCAiZWxmX3NwYXJjdjhwbHVzIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMzMlBMVVMsIDAsIDAgfSwKLSAgIHsgInMzOTAiLCAiZWJsX3MzOTAiLCAiczM5MCIsIDQsIEVNX1MzOTAsIDAsIDAgfSwKLSsgIHsgIm1pcHMiLCAiZWxmX21pcHMiLCAibWlwcyIsIDQsIEVNX01JUFMsIDAsIDAgfSwKLSsgIHsgIm1pcHMiLCAiZWxmX21pcHNlbCIsICJtaXBzZWwiLCA0LCBFTV9NSVBTX1JTM19MRSwgMCwgMCB9LAotIAotICAgeyAibTMyIiwgImVsZl9tMzIiLCAibTMyIiwgMywgRU1fTTMyLCAwLCAwIH0sCi0gICB7ICJtNjhrIiwgImVsZl9tNjhrIiwgIm02OGsiLCA0LCBFTV82OEssIEVMRkNMQVNTMzIsIEVMRkRBVEEyTVNCIH0sCi1JbmRleDogYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KLSsrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1AQCAtMzMsMTIgKzMzLDEyIEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkKLSAKLSAKLSBtb2R1bGVzID0gaTM4NiBzaCB4ODZfNjQgaWE2NCBhbHBoYSBhcm0gYWFyY2g2NCBzcGFyYyBwcGMgcHBjNjQgczM5MCBcCi0tCSAgdGlsZWd4IG02OGsgYnBmIHBhcmlzYwotKwkgIHRpbGVneCBtNjhrIGJwZiBwYXJpc2MgbWlwcwotIGxpYmVibF9waWMgPSBsaWJlYmxfaTM4Nl9waWMuYSBsaWJlYmxfc2hfcGljLmEgbGliZWJsX3g4Nl82NF9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2lhNjRfcGljLmEgbGliZWJsX2FscGhhX3BpYy5hIGxpYmVibF9hcm1fcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9hYXJjaDY0X3BpYy5hIGxpYmVibF9zcGFyY19waWMuYSBsaWJlYmxfcHBjX3BpYy5hIFwKLSAJICAgICBsaWJlYmxfcHBjNjRfcGljLmEgbGliZWJsX3MzOTBfcGljLmEgbGliZWJsX3RpbGVneF9waWMuYSBcCi0tCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hCi0rCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hIGxpYmVibF9taXBzX3BpYy5hCi0gbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKLSBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQotIAotQEAgLTEzMiw2ICsxMzIsMTAgQEAgcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ibwotIGxpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCi0gYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCi0gCi0rbWlwc19TUkNTID0gbWlwc19pbml0LmMgbWlwc19zeW1ib2wuYyBtaXBzX3JlZ3MuYyBtaXBzX3JldHZhbC5jCi0rbGliZWJsX21pcHNfcGljX2FfU09VUkNFUyA9ICQobWlwc19TUkNTKQotK2FtX2xpYmVibF9taXBzX3BpY19hX09CSkVDVFMgPSAkKG1pcHNfU1JDUzouYz0ub3MpCi0rCi0gbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykKLSAJQHJtIC1mICQoQDouc289Lm1hcCkKLSAJJChBTV9WX2F0KWVjaG8gJ0VMRlVUSUxTXyQoUEFDS0FHRV9WRVJTSU9OKSB7IGdsb2JhbDogJCpfaW5pdDsgbG9jYWw6ICo7IH07JyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGYzNTc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotT24gbWFueSBhcmNoaXRlY3R1cmVzIHRoaXMgdGVzdCBmYWlscyBiZWNhdXNlIGJpbmFyaWVzL2xpYnMgcHJvZHVjZWQgYnkKLWJpbnV0aWxzIGRvbid0IHBhc3MgZWxmbGludC4gSG93ZXZlciBlbGZ1dGlscyBzaG91bGRuJ3QgRlRCRlMgYmVjYXVzZSBvZiB0aGlzLgotCi1TbyB3ZSBydW4gdGhlIHRlc3RzIG9uIGFsbCBhcmNocyB0byBzZWUgd2hhdCBicmVha3MsIGJ1dCBpZiBpdCBicmVha3Mgd2UgaWdub3JlCi10aGUgcmVzdWx0IChleGl0Y29kZSA3NyBtZWFuczogdGhpcyB0ZXN0IHdhcyBza2lwcGVkKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBiL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKLSsrKyBiL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKLUBAIC0xOCw0ICsxOCw0IEBACi0gCi0gLiAkc3JjZGlyL3Rlc3Qtc3Vici5zaAotIAotLXRlc3RydW5fb25fc2VsZiAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tcXVpZXQgLS1nbnUtbGQKLSt0ZXN0cnVuX29uX3NlbGZfc2tpcCAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tcXVpZXQgLS1nbnUtbGQKLUluZGV4OiBiL3Rlc3RzL3Rlc3Qtc3Vici5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdGVzdHMvdGVzdC1zdWJyLnNoCi0rKysgYi90ZXN0cy90ZXN0LXN1YnIuc2gKLUBAIC0xNTIsMyArMTUyLDE4IEBAIHRlc3RydW5fb25fc2VsZl9xdWlldCgpCi0gICAjIE9ubHkgZXhpdCBpZiBzb21ldGhpbmcgZmFpbGVkCi0gICBpZiB0ZXN0ICRleGl0X3N0YXR1cyAhPSAwOyB0aGVuIGV4aXQgJGV4aXRfc3RhdHVzOyBmaQotIH0KLSsKLSsjIFNhbWUgYXMgdGVzdHJ1bl9vbl9zZWxmKCksIGJ1dCBza2lwIG9uIGZhaWx1cmUuCi0rdGVzdHJ1bl9vbl9zZWxmX3NraXAoKQotK3sKLSsgIGV4aXRfc3RhdHVzPTAKLSsKLSsgIGZvciBmaWxlIGluICRzZWxmX3Rlc3RfZmlsZXM7IGRvCi0rICAgICAgdGVzdHJ1biAkKiAkZmlsZSBcCi0rCSAgfHwgeyBlY2hvICIqKiogZmFpbHVyZSBpbiAkKiAkZmlsZSI7IGV4aXRfc3RhdHVzPTc3OyB9Ci0rICBkb25lCi0rCi0rICAjIE9ubHkgZXhpdCBpZiBzb21ldGhpbmcgZmFpbGVkCi0rICBpZiB0ZXN0ICRleGl0X3N0YXR1cyAhPSAwOyB0aGVuIGV4aXQgJGV4aXRfc3RhdHVzOyBmaQotK30KLSsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZml4aGVhZGVyY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2ZpeGhlYWRlcmNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGUzYjI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZml4aGVhZGVyY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1Gb3Igc29tZSBiaW5hcmllcyB3ZSBjYW4gZ2V0IGEgaW52YWxpZCBzZWN0aW9uIGFsaWdubWVudCwgZm9yIGV4YW1wbGUgaWYgCi1zaF9hbGlnbiA9IDEgYW5kIHNoX2FkZHJhbGlnbiBpcyAwLiBJbiB0aGUgY2FzZSBvZiBhIHplcm8gc2l6ZSBzZWN0aW9uIGxpa2UgCi0iLm5vdGUuR05VLXN0YWNrIiwgdGhpcyBpcyBpcnJlbGF2ZW50IGFzIGZhciBhcyBJIGNhbiB0ZWxsIGFuZCB3ZSBzaG91bGRuJ3QKLWVycm9yIGluIHRoaXMgY2FzZS4KLQotUlAgMjAxNC82LzExCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC0tZ2l0IGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKLS0tLSBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKLSsrKyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKLUBAIC0zMzksOCArMzM5LDggQEAgX19lbGZ3MihMSUJFTEZCSVRTLHVwZGF0ZW51bGxfd3Jsb2NrKSAoRWxmICplbGYsIGludCAqY2hhbmdlX2JvcCwgc2l6ZV90IHNobnVtKQotIAkJICAgICB3ZSB0ZXN0IGZvciB0aGUgYWxpZ25tZW50IG9mIHRoZSBzZWN0aW9uIGJlaW5nIGxhcmdlCi0gCQkgICAgIGVub3VnaCBmb3IgdGhlIGxhcmdlc3QgYWxpZ25tZW50IHJlcXVpcmVkIGJ5IGEgZGF0YQotIAkJICAgICBibG9jay4gICovCi0tCQkgIGlmICh1bmxpa2VseSAoISBwb3dlcm9mMiAoc2hkci0+c2hfYWRkcmFsaWduKSkKLS0JCSAgICAgIHx8IHVubGlrZWx5ICgoc2hkci0+c2hfYWRkcmFsaWduID86IDEpIDwgc2hfYWxpZ24pKQotKwkJICBpZiAoc2hkci0+c2hfc2l6ZSAmJiAodW5saWtlbHkgKCEgcG93ZXJvZjIgKHNoZHItPnNoX2FkZHJhbGlnbikpCi0rCQkgICAgICB8fCB1bmxpa2VseSAoKHNoZHItPnNoX2FkZHJhbGlnbiA/OiAxKSA8IHNoX2FsaWduKSkpCi0gCQkgICAgewotIAkJICAgICAgX19saWJlbGZfc2V0ZXJybm8gKEVMRl9FX0lOVkFMSURfQUxJR04pOwotIAkJICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9zaGFkb3cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L3NoYWRvdy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxOTYxZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L3NoYWRvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLUZpeCBjb250cm9sIHBhdGggd2hlcmUgd2UgaGF2ZSBzdHIgYXMgdW5pbml0aWFsaXplZCBzdHJpbmcKLQotfCAvaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzogSW4gZnVuY3Rpb24gJ2kzODZfZGlzYXNtJzoKLXwgL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6MzEwOjU6IGVycm9yOiAnc3RyJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KLXwgICAgICBtZW1jcHkgKGJ1ZiArIGJ1ZmNudCwgX3N0ciwgX2xlbik7ICAgICAgICAgICBcCi18ICAgICAgXgotfCAvaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzo3MDk6MTc6IG5vdGU6ICdzdHInIHdhcyBkZWNsYXJlZCBoZXJlCi18ICAgICAgY29uc3QgY2hhciAqc3RyOwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmMKLUBAIC04MjEsNiArODIxLDcgQEAgaTM4Nl9kaXNhc20gKGNvbnN0IHVpbnQ4X3QgKipzdGFydHAsIGNvbgotIAkJCSAgICB9Ci0gCi0gCQkJZGVmYXVsdDoKLSsJCQkgIHN0ciA9ICIiOwotIAkJCSAgYXNzZXJ0ICghICJJTlZBTElEIG5vdCBoYW5kbGVkIik7Ci0gCQkJfQotIAkJICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMvRml4X2VsZl9jdnRfZ3VuaGFzaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMvRml4X2VsZl9jdnRfZ3VuaGFzaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg2MWU4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzL0ZpeF9lbGZfY3Z0X2d1bmhhc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1GaXggZWxmX2N2dF9ndW5oYXNoIGlmIGRlc3QgYW5kIHNyYyBhcmUgc2FtZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoZSAnZGVzdCcgYW5kICdzcmMnIGNhbiBiZSBzYW1lLCB3ZSBuZWVkIHRvIHNhdmUgdGhlIHZhbHVlIG9mIHNyYzMyWzJdCi1iZWZvcmUgc3dhcGluZyBpdC4KLQotU2lnbmVkLW9mZi1ieTogQmFvc2hhbiBQYW5nIDxCYW9TaGFuLlBhbmdAd2luZHJpdmVyLmNvbT4KLWRpZmYgLS1naXQgYS9saWJlbGYvZ251aGFzaF94bGF0ZS5oIGIvbGliZWxmL2dudWhhc2hfeGxhdGUuaAotaW5kZXggNmZhZjExMy4uMDRkOWNhMSAxMDA2NDQKLS0tLSBhL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKLSsrKyBiL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKLUBAIC00MCw2ICs0MCw3IEBAIGVsZl9jdnRfZ251aGFzaCAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuLCBpbnQgZW5jb2RlKQotICAgICAgd29yZHMuICBXZSBtdXN0IGRldGFuZ2xlIHRoZW0gaGVyZS4gICAqLwotICAgRWxmMzJfV29yZCAqZGVzdDMyID0gZGVzdDsKLSAgIGNvbnN0IEVsZjMyX1dvcmQgKnNyYzMyID0gc3JjOwotKyAgRWxmMzJfV29yZCBzYXZlX3NyYzMyXzIgPSBzcmMzMlsyXTsgLy8gZGVzdCBjb3VsZCBiZSBlcXVhbCB0byBzcmMKLSAKLSAgIC8qIEZpcnN0IGZvdXIgY29udHJvbCB3b3JkcywgMzIgYml0cy4gICovCi0gICBmb3IgKHVuc2lnbmVkIGludCBjbnQgPSAwOyBjbnQgPCA0OyArK2NudCkKLUBAIC01MCw3ICs1MSw3IEBAIGVsZl9jdnRfZ251aGFzaCAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuLCBpbnQgZW5jb2RlKQotICAgICAgIGxlbiAtPSA0OwotICAgICB9Ci0gCi0tICBFbGYzMl9Xb3JkIGJpdG1hc2tfd29yZHMgPSBlbmNvZGUgPyBzcmMzMlsyXSA6IGRlc3QzMlsyXTsKLSsgIEVsZjMyX1dvcmQgYml0bWFza193b3JkcyA9IGVuY29kZSA/IHNhdmVfc3JjMzJfMiA6IGRlc3QzMlsyXTsKLSAKLSAgIC8qIE5vdyB0aGUgNjQgYml0IHdvcmRzLiAgKi8KLSAgIEVsZjY0X1h3b3JkICpkZXN0NjQgPSAoRWxmNjRfWHdvcmQgKikgJmRlc3QzMls0XTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMvZHNvLWxpbmstY2hhbmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy9kc28tbGluay1jaGFuZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwY2QzZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy9kc28tbGluay1jaGFuZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIyBUaGlzIHBhdGNoIG1ha2VzIHRoZSBsaW5rIHRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgbGliZHcgZXhwbGljaXQsIGFzIHJlY2VudAotIyBsZCBubyBsb25nZXIgaW1wbGljaXRseSBsaW5rcyB0aGVtLiBTZWUKLSMgaHR0cDovL2xpc3RzLmZlZG9yYXByb2plY3Qub3JnL3BpcGVybWFpbC9kZXZlbC8yMDEwLU1hcmNoLzEzMzYwMS5odG1sIGFzCi0jIGEgc2ltaWxhciBleGFtcGxlIG9mIHRoZSBlcnJvciBtZXNzYWdlIHlvdSBjYW4gZW5jb3VudGVyIHdpdGhvdXQgdGhpcyBwYXRjaCwKLSMgYW5kIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9VbmRlcnN0YW5kaW5nRFNPTGlua0NoYW5nZSBhbmQKLSMgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlYXR1cmVzL0NoYW5nZUluSW1wbGljaXREU09MaW5raW5nIGZvciBtb3JlCi0jIGRldGFpbHMuCi0KLS0tLSBlbGZ1dGlscy0wLjE0OC5vcmlnL3NyYy9NYWtlZmlsZS5hbQotKysrIGVsZnV0aWxzLTAuMTQ4L3NyYy9NYWtlZmlsZS5hbQotQEAgLTg2LDcgKzg2LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hICQoemlwX0xJQlMpICQobAotIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYQotIGVsc2UKLSBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCi0tbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbwotK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCi0gbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbwotIGVuZGlmCi0gbGliZWJsID0gLi4vbGliZWJsL2xpYmVibC5hCi0tLS0gZWxmdXRpbHMtMC4xNDgub3JpZy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGVsZnV0aWxzLTAuMTQ4L3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTcyLDcgKzE3Miw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAkKHppcF9MSUJTKSAkKGwKLSBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLmEKLSBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEKLSBlbHNlCi0tbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbwotK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCi0gbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbwotIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uc28KLSBlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NzdjZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIihHUEx2MyAmIEVsZnV0aWxzLUV4Y2VwdGlvbikiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCi1TUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTJhZGZhNDA3NThkMGQzOWU1ZDVjNTc2ODliZjM4ZDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjg4ZDA3ODkzYmExMzczYzdkZDY5YTc4NTU5NzQ3MDZkMDUzNzc3NjY1NjhhN2Q5MDAyNzA2ZDVkZTcyYzI3NiIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0ZpeF9lbGZfY3Z0X2d1bmhhc2gucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZml4aGVhZGVyY2hlY2sucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1lbGZfZ2V0YXJzeW0tU2lsZW5jZS1XZXJyb3ItbWF5YmUtdW5pbml0aWFsaXplZC1mYWxzLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtcmVtb3ZlLXRoZS11bm5lZWQtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2FhcmNoNjRfdWlvLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0ZpeF9vbmVfR0NDN193YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3NoYWRvdy5wYXRjaCBcCi0iCi0KLSMgcGljayB0aGUgcGF0Y2ggZnJvbSBkZWJpYW4KLSMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC0wLjIuZGViaWFuLnRhci54egotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LmRpZmYgXAotICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9rZnJlZWJzZF9wYXRoLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vaHVyZF9wYXRoLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZiBcCi0iCi0jIEZpeCB0aGUgcGF0Y2hlcyBmcm9tIERlYmlhbiB3aXRoIEdDQzcKLVNSQ19VUkkgKz0gImZpbGU6Ly9mYWxsdGhyb3VnaC5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaCAiCi0KLSMgVGhlIGJ1aWxkc3lzdGVtIHdhbnRzIHRvIGdlbmVyYXRlIDIgLmggZmlsZXMgZnJvbSBzb3VyY2UgdXNpbmcgYSBiaW5hcnkgaXQganVzdCBidWlsdCwKLSMgd2hpY2ggY2FuIG5vdCBwYXNzIHRoZSBjcm9zcyBjb21waWxpbmcsIHNvIGxldCdzIHdvcmsgYXJvdW5kIGl0IGJ5IGFkZGluZyAyIC5oIGZpbGVzCi0jIGFsb25nIHdpdGggdGhlIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAotCi1FWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD1ldS0gLS13aXRob3V0LWx6bWEiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LWJ6bGliIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1lbmFibGUtdWNsaWJjIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgIT0gIng4Nl82NCIgXSAmJiBbIC16IGBlY2hvICIke1RBUkdFVF9BUkNIfSJ8Z3JlcCAnaS44NidgIF07dGhlbgotCQlybSAtZiAke0R9JHtiaW5kaXJ9L2V1LW9iamR1bXAKLQlmaQotfQotCi0jIHdlIGNhbiBub3QgYnVpbGQgY29tcGxldGUgZWxmdXRpbHMgd2hlbiB1c2luZyB1Y2xpYmMKLSMgYnV0IHNvbWUgcmVjaXBlcyBlLmcuIGdjYyA0LjUgZGVwZW5kcyBvbiBsaWJlbGYgc28gd2UKLSMgYnVpbGQgb25seSBsaWJlbGYgZm9yIHVjbGliYyBjYXNlCi0KLUVYVFJBX09FTUFLRV9saWJjLXVjbGliYyA9ICItQyBsaWJlbGYiCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIiIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1BTExPV19FTVBUWV8ke1BOfV9saWJjLW11c2wgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIFBhY2thZ2UgdXRpbGl0aWVzIHNlcGFyYXRlbHkKLVBBQ0tBR0VTID0rICIke1BOfS1iaW51dGlscyBsaWJlbGYgbGliYXNtIGxpYmR3IgotRklMRVNfJHtQTn0tYmludXRpbHMgPSAiXAotICAgICR7YmluZGlyfS9ldS1hZGRyMmxpbmUgXAotICAgICR7YmluZGlyfS9ldS1sZCBcCi0gICAgJHtiaW5kaXJ9L2V1LW5tIFwKLSAgICAke2JpbmRpcn0vZXUtcmVhZGVsZiBcCi0gICAgJHtiaW5kaXJ9L2V1LXNpemUgXAotICAgICR7YmluZGlyfS9ldS1zdHJpcCIKLQotRklMRVNfbGliZWxmID0gIiR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmVsZi5zby4qIgotRklMRVNfbGliYXNtID0gIiR7bGliZGlyfS9saWJhc20tJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmFzbS5zby4qIgotRklMRVNfbGliZHcgID0gIiR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke2xpYmRpcn0vbGliZHcuc28uKiAke2xpYmRpcn0vZWxmdXRpbHMvbGliKiIKLSMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5Ci0jIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KLSNGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyotJHtQVn0uc28gJHtiYXNlX2xpYmRpcn0vKi0ke1BWfS5zbyIKLSNGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmFzbS5zbyAke2xpYmRpcn0vbGliZHcuc28gJHtsaWJkaXJ9L2xpYmVsZi5zbyIKLQotIyBUaGUgcGFja2FnZSBjb250YWlucyBzeW1saW5rcyB0aGF0IHRyaXAgdXAgaW5zYW5lCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmR3ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiODFlMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCkBAIC0wLDAgKzEsNzkgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIihHUEx2MyAmIEVsZnV0aWxzLUV4Y2VwdGlvbikiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0RFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCitTUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMDM1OTlhZWU5OGM5YjcyNmM3YTczMmEyZGQwMjQ1ZDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWY4NDQ3NzU1NzZiNzliZGM5ZjljNzE3YTUwMDU4ZDA4NjIwMzIzYzFlOTM1NDU4MjIzYTEyZjI0OWM5ZTA2NiIKKworU1JDX1VSSSArPSAiXAorICAgICAgICBmaWxlOi8vMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2giCisKKyMgUGljayBwYXRjaGVzIGZyb20gZGViaWFuCisjIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjgtMC4yLmRlYmlhbi50YXIueHoKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgZmlsZTovL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZiBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19iYWNrZW5kLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAorIgorIyBGaXggdGhlIHBhdGNoZXMgZnJvbSBEZWJpYW4gd2l0aCBHQ0M3CitTUkNfVVJJICs9ICJmaWxlOi8vZGViaWFuL2ZhbGx0aHJvdWdoLnBhdGNoIgorCisjIFRoZSBidWlsZHN5c3RlbSB3YW50cyB0byBnZW5lcmF0ZSAyIC5oIGZpbGVzIGZyb20gc291cmNlIHVzaW5nIGEgYmluYXJ5IGl0IGp1c3QgYnVpbHQsCisjIHdoaWNoIGNhbiBub3QgcGFzcyB0aGUgY3Jvc3MgY29tcGlsaW5nLCBzbyBsZXQncyB3b3JrIGFyb3VuZCBpdCBieSBhZGRpbmcgMiAuaCBmaWxlcworIyBhbG9uZyB3aXRoIHRoZSBkb19jb25maWd1cmVfcHJlcGVuZCgpCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKKworRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIC0td2l0aG91dC1sem1hIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1iemxpYiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iICE9ICJ4ODZfNjQiIF0gJiYgWyAteiBgZWNobyAiJHtUQVJHRVRfQVJDSH0ifGdyZXAgJ2kuODYnYCBdO3RoZW4KKwkJcm0gLWYgJHtEfSR7YmluZGlyfS9ldS1vYmpkdW1wCisJZmkKK30KKworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworQUxMT1dfRU1QVFlfJHtQTn1fbGliYy1tdXNsID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBQYWNrYWdlIHV0aWxpdGllcyBzZXBhcmF0ZWx5CitQQUNLQUdFUyA9KyAiJHtQTn0tYmludXRpbHMgbGliZWxmIGxpYmFzbSBsaWJkdyIKK0ZJTEVTXyR7UE59LWJpbnV0aWxzID0gIlwKKyAgICAke2JpbmRpcn0vZXUtYWRkcjJsaW5lIFwKKyAgICAke2JpbmRpcn0vZXUtbGQgXAorICAgICR7YmluZGlyfS9ldS1ubSBcCisgICAgJHtiaW5kaXJ9L2V1LXJlYWRlbGYgXAorICAgICR7YmluZGlyfS9ldS1zaXplIFwKKyAgICAke2JpbmRpcn0vZXUtc3RyaXAiCisKK0ZJTEVTX2xpYmVsZiA9ICIke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7bGliZGlyfS9saWJlbGYuc28uKiIKK0ZJTEVTX2xpYmFzbSA9ICIke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7bGliZGlyfS9saWJhc20uc28uKiIKK0ZJTEVTX2xpYmR3ICA9ICIke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmR3LnNvLiogJHtsaWJkaXJ9L2VsZnV0aWxzL2xpYioiCisjIFNvbWUgcGFja2FnZXMgaGF2ZSB0aGUgdmVyc2lvbiBwcmVjZWVkaW5nIHRoZSAuc28gaW5zdGVhZCBwcm9wZXJseQorIyB2ZXJzaW9uZWQgLnNvLjx2ZXJzaW9uPiwgc28gd2UgbmVlZCB0byByZW9yZGVyIGFuZCByZXBhY2thZ2UuCisjRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLSR7UFZ9LnNvICR7YmFzZV9saWJkaXJ9LyotJHtQVn0uc28iCisjRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJhc20uc28gJHtsaWJkaXJ9L2xpYmR3LnNvICR7bGliZGlyfS9saWJlbGYuc28iCisKKyMgVGhlIHBhY2thZ2UgY29udGFpbnMgc3ltbGlua3MgdGhhdCB0cmlwIHVwIGluc2FuZQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJkdyA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGM1N2YyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDBhNjlhMjZjOWY3NDg3ZGFjYTkwMGRiODdjZDExOTU4NTdhNDYwM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjEwOjU3ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS83XSBkc28gbGluayBjaGFuZ2UKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1RoaXMgcGF0Y2ggbWFrZXMgdGhlIGxpbmsgdG8gdGhlIGRlcGVuZGVuY2llcyBvZiBsaWJkdyBleHBsaWNpdCwgYXMKK3JlY2VudCBsZCBubyBsb25nZXIgaW1wbGljaXRseSBsaW5rcyB0aGVtLiBTZWUKK2h0dHA6Ly9saXN0cy5mZWRvcmFwcm9qZWN0Lm9yZy9waXBlcm1haWwvZGV2ZWwvMjAxMC1NYXJjaC8xMzM2MDEuaHRtbAorYXMgYSBzaW1pbGFyIGV4YW1wbGUgb2YgdGhlIGVycm9yIG1lc3NhZ2UgeW91IGNhbiBlbmNvdW50ZXIgd2l0aG91dCB0aGlzCitwYXRjaCwgYW5kIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9VbmRlcnN0YW5kaW5nRFNPTGlua0NoYW5nZSBhbmQKK2h0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWF0dXJlcy9DaGFuZ2VJbkltcGxpY2l0RFNPTGlua2luZyBmb3IKK21vcmUgZGV0YWlscy4KKworUmViYXNlIHRvIDAuMTcwCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSAgIHwgMiArLQorIHRlc3RzL01ha2VmaWxlLmFtIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCAyYjFjMGRjLi45MzA1Yjg0IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC00NCw3ICs0NCw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segorIGVsc2UKKyBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCistbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbworK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbworIGVuZGlmCisgbGliZWJsID0gLi4vbGliZWJsL2xpYmVibC5hCitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggMzczNTA4NC4uNTI4NjE1ZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTQwMCw3ICs0MDAsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKKyBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEKKyBlbHNlCistbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbworK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbworIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uc28KKyBlbmRpZgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMGIwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNzY3MmUzNjM0NjgyNzFiNGM2M2ZmNTg3NzBjNWFhYzE1YWI4ZjcyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMjI6MzA6NDYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliYXNtIG1heSBsaW5rIHdpdGggbGliYnoyIGlmIGZvdW5kCisKK1RoaXMgY2FuIGZhaWwgdG8gbGluayBiaW5hcmllcyBsaWtlIG9iamR1bXAKK3doZXJlIGluZGlyZWN0IGxpYnJhcmllcyBtYXkgYmUgbm90IGZvdW5kIGJ5IGxpbmtlcgorCit8IC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9yaXNjdjY0LWJlYy1saW51eC9lbGZ1dGlscy8wLjE3MC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xpYmJ6Mi5zby4xOiBlcnJvciBhZGRpbmcgc3ltYm9sczogRFNPIG1pc3NpbmcgZnJvbSBjb21tYW5kIGxpbmUKK3wgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL01ha2VmaWxlLmFtIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCBlMDNiYzMyLi45YjdlODUzIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0zOSwxMSArMzksMTEgQEAgRVhUUkFfRElTVCArPSBtYWtlLWRlYnVnLWFyY2hpdmUuaW4KKyBDTEVBTkZJTEVTICs9IG1ha2UtZGVidWctYXJjaGl2ZQorIAorIGlmIEJVSUxEX1NUQVRJQworLWxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYQorK2xpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYSAkKHppcF9MSUJTKQorIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segorIGVsc2UKKy1saWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCisrbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbyAkKHppcF9MSUJTKQorIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbworIGVuZGlmCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY3MThlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGU5ODY3MGY3YzdiNGM3M2ZiNjU1MzQ5NDk3MTZmZDhkMDQzOTYwZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjEzOjU5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi83XSBGaXggZWxmX2N2dF9ndW5oYXNoIGlmIGRlc3QgYW5kIHNyYyBhcmUgc2FtZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1RoZSAnZGVzdCcgYW5kICdzcmMnIGNhbiBiZSBzYW1lLCB3ZSBuZWVkIHRvIHNhdmUgdGhlIHZhbHVlIG9mIHNyYzMyWzJdCitiZWZvcmUgc3dhcGluZyBpdC4KKworU2lnbmVkLW9mZi1ieTogQmFvc2hhbiBQYW5nIDxCYW9TaGFuLlBhbmdAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDAuMTcwCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJlbGYvZ251aGFzaF94bGF0ZS5oIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJlbGYvZ251aGFzaF94bGF0ZS5oIGIvbGliZWxmL2dudWhhc2hfeGxhdGUuaAoraW5kZXggNmZhZjExMy4uMDRkOWNhMSAxMDA2NDQKKy0tLSBhL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKKysrKyBiL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKK0BAIC00MCw2ICs0MCw3IEBAIGVsZl9jdnRfZ251aGFzaCAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuLCBpbnQgZW5jb2RlKQorICAgICAgd29yZHMuICBXZSBtdXN0IGRldGFuZ2xlIHRoZW0gaGVyZS4gICAqLworICAgRWxmMzJfV29yZCAqZGVzdDMyID0gZGVzdDsKKyAgIGNvbnN0IEVsZjMyX1dvcmQgKnNyYzMyID0gc3JjOworKyAgRWxmMzJfV29yZCBzYXZlX3NyYzMyXzIgPSBzcmMzMlsyXTsgLy8gZGVzdCBjb3VsZCBiZSBlcXVhbCB0byBzcmMKKyAKKyAgIC8qIEZpcnN0IGZvdXIgY29udHJvbCB3b3JkcywgMzIgYml0cy4gICovCisgICBmb3IgKHVuc2lnbmVkIGludCBjbnQgPSAwOyBjbnQgPCA0OyArK2NudCkKK0BAIC01MCw3ICs1MSw3IEBAIGVsZl9jdnRfZ251aGFzaCAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuLCBpbnQgZW5jb2RlKQorICAgICAgIGxlbiAtPSA0OworICAgICB9CisgCistICBFbGYzMl9Xb3JkIGJpdG1hc2tfd29yZHMgPSBlbmNvZGUgPyBzcmMzMlsyXSA6IGRlc3QzMlsyXTsKKysgIEVsZjMyX1dvcmQgYml0bWFza193b3JkcyA9IGVuY29kZSA/IHNhdmVfc3JjMzJfMiA6IGRlc3QzMlsyXTsKKyAKKyAgIC8qIE5vdyB0aGUgNjQgYml0IHdvcmRzLiAgKi8KKyAgIEVsZjY0X1h3b3JkICpkZXN0NjQgPSAoRWxmNjRfWHdvcmQgKikgJmRlc3QzMls0XTsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M0OWZjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDU2NWQ1OTM1YWJmNWI1ODc3M2Y5YzgzODVjMDAxODkyMjE5ODBkOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjE3OjIwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy83XSBmaXhoZWFkZXJjaGVjaworCitGb3Igc29tZSBiaW5hcmllcyB3ZSBjYW4gZ2V0IGEgaW52YWxpZCBzZWN0aW9uIGFsaWdubWVudCwgZm9yIGV4YW1wbGUgaWYKK3NoX2FsaWduID0gMSBhbmQgc2hfYWRkcmFsaWduIGlzIDAuIEluIHRoZSBjYXNlIG9mIGEgemVybyBzaXplIHNlY3Rpb24KK2xpa2UKKyIubm90ZS5HTlUtc3RhY2siLCB0aGlzIGlzIGlycmVsYXZlbnQgYXMgZmFyIGFzIEkgY2FuIHRlbGwgYW5kIHdlCitzaG91bGRuJ3QKK2Vycm9yIGluIHRoaXMgY2FzZS4KKworUlAgMjAxNC82LzExCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitSZWJhc2UgdG8gMC4xNzAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKK2luZGV4IGQ4M2MwYjMuLmE1MWJmNzAgMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCisrKysgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCitAQCAtMzM5LDggKzMzOSw4IEBAIF9fZWxmdzIoTElCRUxGQklUUyx1cGRhdGVudWxsX3dybG9jaykgKEVsZiAqZWxmLCBpbnQgKmNoYW5nZV9ib3AsIHNpemVfdCBzaG51bSkKKyAJCSAgICAgd2UgdGVzdCBmb3IgdGhlIGFsaWdubWVudCBvZiB0aGUgc2VjdGlvbiBiZWluZyBsYXJnZQorIAkJICAgICBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0IGFsaWdubWVudCByZXF1aXJlZCBieSBhIGRhdGEKKyAJCSAgICAgYmxvY2suICAqLworLQkJICBpZiAodW5saWtlbHkgKCEgcG93ZXJvZjIgKHNoZHItPnNoX2FkZHJhbGlnbikpCistCQkgICAgICB8fCB1bmxpa2VseSAoKHNoZHItPnNoX2FkZHJhbGlnbiA/OiAxKSA8IHNoX2FsaWduKSkKKysJCSAgaWYgKHNoZHItPnNoX3NpemUgJiYgKHVubGlrZWx5ICghIHBvd2Vyb2YyIChzaGRyLT5zaF9hZGRyYWxpZ24pKQorKwkJICAgICAgfHwgdW5saWtlbHkgKChzaGRyLT5zaF9hZGRyYWxpZ24gPzogMSkgPCBzaF9hbGlnbikpKQorIAkJICAgIHsKKyAJCSAgICAgIF9fbGliZWxmX3NldGVycm5vIChFTEZfRV9JTlZBTElEX0FMSUdOKTsKKyAJCSAgICAgIHJldHVybiAtMTsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTNhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGJiN2VkMTE5NTAxMDE3OThhYWU4MmY3ZmRhOGIzZGNiMDVmNzU1YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjI0OjA2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC83XSBEaXNhYmxlIHRoZSB0ZXN0IHRvIGNvbnZlcnQgZXVjLWpwCisKK1JlbW92ZSB0aGUgdGVzdCAiVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzoKK05vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcyBwcm92aWRlZCIKK3NpbmNlIHdlIGRvbid0IHN1cHBvcnQgSFAtVVggYW5kIGlmIHRoZSBldWMtanAgaXMgbm90CitpbnN0YWxsZWQgb24gdGhlIGhvc3QsIHRoZSBkZXBlbmRlbmNlIHdpbGwgYmUgYnVpbHQgd2l0aG91dAoraWNvbnYgc3VwcG9ydCBhbmQgd2lsbCBjYXVzZSBndWlsZC1uYXRpdmUgYnVpbGRpbmcgZmFpbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gMC4xNzAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG00L2ljb252Lm00IHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL200L2ljb252Lm00IGIvbTQvaWNvbnYubTQKK2luZGV4IGE1MDM2NDYuLjI5OWYxZWIgMTAwNjQ0CistLS0gYS9tNC9pY29udi5tNAorKysrIGIvbTQvaWNvbnYubTQKK0BAIC0xNTksNiArMTU5LDcgQEAgaW50IG1haW4gKCkKKyAgICAgICB9CisgICB9CisgI2VuZGlmCisrI2lmIDAKKyAgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcworICAgICAgcHJvdmlkZWQuICAqLworICAgaWYgKC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLworQEAgLTE3MCw2ICsxNzEsNyBAQCBpbnQgbWFpbiAoKQorICAgICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCisgICAgICAgJiYgaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpKQorICAgICByZXN1bHQgfD0gMTY7CisrI2VuZGlmCisgICByZXR1cm4gcmVzdWx0OworIH1dXSldLAorICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYTAxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGRkNmRiZjZhZjM5NjUxOTM4MGY0OGMwZWYxY2U2Y2Y0ZGQ3N2Y2ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjI1OjE2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNS83XSBmaXggYSBzdGFjay11c2FnZSB3YXJuaW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitub3QgdXNlIGEgdmFyaWFibGUgdG8gYXMgYSBhcnJheSBzaXplLCBvdGhlcndpc2UgdGhlIHdhcm5pbmcgdG8gZXJyb3IKK3RoYXQKK3N0YWNrIHVzYWdlIG1pZ2h0IGJlIHVuYm91bmRlZCBbLVdlcnJvcj1zdGFjay11c2FnZT1dIHdpbGwgaGFwcGVuCisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDAuMTcwCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBiYWNrZW5kcy9wcGNfaW5pdHJlZy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvcHBjX2luaXRyZWcuYyBiL2JhY2tlbmRzL3BwY19pbml0cmVnLmMKK2luZGV4IDY5ZDYyM2IuLmRlNDFkZWMgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCisrKysgYi9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCitAQCAtOTMsNyArOTMsNyBAQCBwcGNfc2V0X2luaXRpYWxfcmVnaXN0ZXJzX3RpZCAocGlkX3QgdGlkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAJcmV0dXJuIGZhbHNlOworICAgICB9CisgICBjb25zdCBzaXplX3QgZ3BycyA9IHNpemVvZiAodXNlcl9yZWdzLnIuZ3ByKSAvIHNpemVvZiAoKnVzZXJfcmVncy5yLmdwcik7CistICBEd2FyZl9Xb3JkIGR3YXJmX3JlZ3NbZ3Byc107CisrICBEd2FyZl9Xb3JkIGR3YXJmX3JlZ3Nbc2l6ZW9mICh1c2VyX3JlZ3Muci5ncHIpIC8gc2l6ZW9mICgqdXNlcl9yZWdzLnIuZ3ByKV07CisgICBmb3IgKHVuc2lnbmVkIGdwciA9IDA7IGdwciA8IGdwcnM7IGdwcisrKQorICAgICBkd2FyZl9yZWdzW2dwcl0gPSB1c2VyX3JlZ3Muci5ncHJbZ3ByXTsKKyAgIGlmICghIHNldGZ1bmMgKDAsIGdwcnMsIGR3YXJmX3JlZ3MsIGFyZykpCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjI5YTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSBlNTdhZDQ3ZmM4NTQ5MzUzY2E4MGMyM2I5YjRmMzhmMzFmZGUxM2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoyNzozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDYvN10gRml4IGJ1aWxkIG9uIGFhcmNoNjQvbXVzbAorCitFcnJvcnMKKworaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgJiAoaGF2ZSAnbG9uZyBkb3VibGUnIGFuZCAndW5zaWduZWQgaW50JykKKworZXJyb3I6IHJlZGVmaW5pdGlvbgorIG9mICdzdHJ1Y3QgaW92ZWMnCisgc3RydWN0IGlvdmVjIHsgdm9pZCAqaW92X2Jhc2U7IHNpemVfdCBpb3ZfbGVuOyB9OworICAgICAgICBeCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1JlYmFzZSB0byAwLjE3MAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMgfCA0ICsrLS0KKyBiYWNrZW5kcy9hcm1faW5pdHJlZy5jICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FhcmNoNjRfaW5pdHJlZy5jIGIvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKK2luZGV4IGRhZjZmMzcuLjY0NDUyNzYgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9hYXJjaDY0X2luaXRyZWcuYworKysrIGIvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKK0BAIC0zMyw3ICszMyw3IEBACisgI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCistIyBpbmNsdWRlIDxsaW51eC91aW8uaD4KKysjIGluY2x1ZGUgPHN5cy91aW8uaD4KKyAjIGluY2x1ZGUgPHN5cy91c2VyLmg+CisgIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisgLyogRGVhbCB3aXRoIG9sZCBnbGliYyBkZWZpbmluZyB1c2VyX3B0X3JlZ3MgaW5zdGVhZCBvZiB1c2VyX3JlZ3Nfc3RydWN0LiAgKi8KK0BAIC04Miw3ICs4Miw3IEBAIGFhcmNoNjRfc2V0X2luaXRpYWxfcmVnaXN0ZXJzX3RpZCAocGlkX3QgdGlkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAKKyAgIER3YXJmX1dvcmQgZHdhcmZfZnJlZ3NbMzJdOworICAgZm9yIChpbnQgciA9IDA7IHIgPCAzMjsgcisrKQorLSAgICBkd2FyZl9mcmVnc1tyXSA9IGZyZWdzLnZyZWdzW3JdICYgMHhGRkZGRkZGRjsKKysgICAgZHdhcmZfZnJlZ3Nbcl0gPSAodW5zaWduZWQgaW50KWZyZWdzLnZyZWdzW3JdICYgMHhGRkZGRkZGRjsKKyAKKyAgIGlmICghIHNldGZ1bmMgKDY0LCAzMiwgZHdhcmZfZnJlZ3MsIGFyZykpCisgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9hcm1faW5pdHJlZy5jIGIvYmFja2VuZHMvYXJtX2luaXRyZWcuYworaW5kZXggZWZjYWJhZi4uMDYyYmI5ZSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKKysrKyBiL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKK0BAIC0zOCw3ICszOCw3IEBACisgI2VuZGlmCisgCisgI2lmZGVmIF9fYWFyY2g2NF9fCistIyBpbmNsdWRlIDxsaW51eC91aW8uaD4KKysjIGluY2x1ZGUgPHN5cy91aW8uaD4KKyAjIGluY2x1ZGUgPHN5cy91c2VyLmg+CisgIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisgLyogRGVhbCB3aXRoIG9sZCBnbGliYyBkZWZpbmluZyB1c2VyX3B0X3JlZ3MgaW5zdGVhZCBvZiB1c2VyX3JlZ3Nfc3RydWN0LiAgKi8KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNDc3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDFlOTFjMWQ0ZTM3YzA1Y2Y5NTA1OGI0YjNjM2YzNTJkNzI4ODZmNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjMxOjM4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNy83XSBGaXggY29udHJvbCBwYXRoIHdoZXJlIHdlIGhhdmUgc3RyIGFzIHVuaW5pdGlhbGl6ZWQKKyBzdHJpbmcKKworfAorL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6CitJbiBmdW5jdGlvbiAnaTM4Nl9kaXNhc20nOgorfAorL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6MzEwOjU6CitlcnJvcjogJ3N0cicgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCitbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorfCAgICAgIG1lbWNweSAoYnVmICsgYnVmY250LCBfc3RyLCBfbGVuKTsgICAgICAgICAgIFwKK3wgICAgICBeCit8CisvaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzo3MDk6MTc6Citub3RlOiAnc3RyJyB3YXMgZGVjbGFyZWQgaGVyZQorfCAgICAgIGNvbnN0IGNoYXIgKnN0cjsKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitSZWJhc2UgdG8gMC4xNzAKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliY3B1L2kzODZfZGlzYXNtLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKK2luZGV4IDgzMWFmYmUuLjYwZmQ2ZDQgMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9kaXNhc20uYworKysrIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKK0BAIC04MjEsNiArODIxLDcgQEAgaTM4Nl9kaXNhc20gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAorIAkJCSAgICB9CisgCQkJICAvKiBGYWxsdGhyb3VnaCAqLworIAkJCWRlZmF1bHQ6CisrCQkJICBzdHIgPSAiIjsKKyAJCQkgIGFzc2VydCAoISAiSU5WQUxJRCBub3QgaGFuZGxlZCIpOworIAkJCX0KKyAJCSAgICB9CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDgtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODY0ZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKQEAgLTAsMCArMSwxMDMxIEBACitGcm9tIDAxMGIwYzU3ZTc0ODQ0MGViMWNlYjNkOTc3ODc1ZjI0ODhkMmI0Y2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDowNjoyNiArMDgwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogUHJvdmlkZSBhbHRlcm5hdGl2ZXMgZm9yIGdsaWJjIGFzc3VtcHRpb25zIGhlbHBzCisgY29tcGlsaW5nIGl0IG9uIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitSZWJhc2UgdG8gMC4xNzAKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIGxpYi9jb2xvci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKystCisgbGliL2ZpeGVkc2l6ZWhhc2guaCAgICAgICAgICAgICAgfCAgMSAtCisgbGliL3N5c3RlbS5oICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCisgbGliL3htYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIGxpYmFzbS9hc21fZW5kLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJhc20vYXNtX25ld3Njbi5jICAgICAgICAgICAgICB8ICAyICstCisgbGliY3B1L2kzODZfZ2VuZGlzLmMgICAgICAgICAgICAgfCAgMiArLQorIGxpYmNwdS9pMzg2X2xleC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJjcHUvaTM4Nl9wYXJzZS5jICAgICAgICAgICAgICB8ICAyICstCisgbGliZHcvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgMyArKy0KKyBsaWJkdy9saWJkd19hbGxvYy5jICAgICAgICAgICAgICB8ICAyICstCisgbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMgfCAgMyArKy0KKyBsaWJkd2ZsL2R3ZmxfZXJyb3IuYyAgICAgICAgICAgICB8ICA0ICsrKy0KKyBsaWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMgICB8ICAxICsKKyBsaWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMgICAgICAgICB8ICAyICstCisgbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYyAgICAgfCAgOSArKysrKysrKysKKyBsaWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgICB8ICAxICsKKyBsaWJlYmwvZWJsb3BlbmJhY2tlbmQuYyAgICAgICAgICB8ICAyICstCisgbGliZWxmL2VsZi5oICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKystLQorIGxpYmVsZi9saWJlbGYuaCAgICAgICAgICAgICAgICAgIHwgIDEgKworIGxpYmVsZi9saWJlbGZQLmggICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9hZGRyMmxpbmUuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvYXIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2FybGliLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9hcmxpYjIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvZWxmY21wLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2VsZmxpbnQuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9maW5kdGV4dHJlbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvbm0uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL29iamR1bXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9yYW5saWIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvcmVhZGVsZi5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3NpemUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9zdGFjay5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvc3RyaW5ncy5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3N0cmlwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy91bnN0cmlwLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9hZGRyc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvYWxscmVncy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2JhY2t0cmFjZS1kYXRhLmMgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYyAgICAgICAgICB8ICAyICstCisgdGVzdHMvYmFja3RyYWNlLmMgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2J1aWxkaWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kZWJ1Z2FsdGxpbmsuYyAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZGVidWdsaW5rLmMgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2RlbGV0ZWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsLWFkZHItc2VjdC5jICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jICAgfCAgMiArLQorIHRlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMgICAgICB8ICAyICstCisgdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgICAgfCAgMiArLQorIHRlc3RzL2R3ZmxsaW5lcy5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsbW9kdGVzdC5jICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZHdmbHN5bXMuYyAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2Vhcmx5LW9mZnNjbi5jICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9lY3AuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2Z1bmNyZXR2YWwuYyAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9mdW5jc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZ2V0c3JjX2RpZS5jICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2xpbmUyYWRkci5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9sb3dfaGlnaF9wYy5jICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvbWQ1LXNoYTEtdGVzdC5jICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL3Jkd3JtbWFwLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9zYXJpZHguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvc2VjdGlvbmR1bXAuYyAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL3ZhcmxvY3MuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy92ZHNvc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCisgNjkgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAyZmY0NDRlLi40MWY3N2RmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMjgsNyArMjgsNyBAQCBwa2dpbmNsdWRlX0hFQURFUlMgPSB2ZXJzaW9uLmgKKyAKKyAjIEFkZCBkb2MgYmFjayB3aGVuIHdlIGhhdmUgc29tZSByZWFsIGNvbnRlbnQuCisgU1VCRElSUyA9IGNvbmZpZyBtNCBsaWIgbGliZWxmIGxpYmVibCBsaWJkd2VsZiBsaWJkd2ZsIGxpYmR3IGxpYmNwdSBsaWJhc20gXAorLQkgIGJhY2tlbmRzIHNyYyBwbyB0ZXN0cworKwkgIGJhY2tlbmRzIHBvIHRlc3RzCisgCisgRVhUUkFfRElTVCA9IGVsZnV0aWxzLnNwZWMgR1BHLUtFWSBOT1RFUyBDT05UUklCVVRJTkcgXAorIAkgICAgIENPUFlJTkcgQ09QWUlORy1HUExWMiBDT1BZSU5HLUxHUExWMworZGlmZiAtLWdpdCBhL2xpYi9jb2xvci5jIGIvbGliL2NvbG9yLmMKK2luZGV4IGY2MjM4OWQuLmEyYTg0YjQgMTAwNjQ0CistLS0gYS9saWIvY29sb3IuYworKysrIGIvbGliL2NvbG9yLmMKK0BAIC0zMiwxMyArMzIsMTQgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlICJsaWJldS5oIgorICNpbmNsdWRlICJjb2xvci5oIgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAKKyAvKiBQcm90b3R5cGUgZm9yIG9wdGlvbiBoYW5kbGVyLiAgKi8KKyBzdGF0aWMgZXJyb3JfdCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKTsKK2RpZmYgLS1naXQgYS9saWIvZml4ZWRzaXplaGFzaC5oIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAoraW5kZXggZGFjMmE1Zi4uNDMwMTZmYyAxMDA2NDQKKy0tLSBhL2xpYi9maXhlZHNpemVoYXNoLmgKKysrKyBiL2xpYi9maXhlZHNpemVoYXNoLmgKK0BAIC0zMCw3ICszMCw2IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgCisgI2luY2x1ZGUgPHN5c3RlbS5oPgorIAorZGlmZiAtLWdpdCBhL2xpYi9zeXN0ZW0uaCBiL2xpYi9zeXN0ZW0uaAoraW5kZXggOTIwMzMzNS4uMWE2MDEzMSAxMDA2NDQKKy0tLSBhL2xpYi9zeXN0ZW0uaAorKysrIGIvbGliL3N5c3RlbS5oCitAQCAtNTAsNiArNTAsMTYgQEAKKyAjZWxzZQorICMgZXJyb3IgIlVua25vd24gYnl0ZSBvcmRlciIKKyAjZW5kaWYKKysjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQorKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKKysgIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKKysgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7CQkJCQkJICAgICAgXAorKyAgICAgICBkbyBfX3Jlc3VsdCA9IChsb25nIGludCkgKGV4cHJlc3Npb24pOwkJCQkgICAgICBcCisrICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOwkJCSAgICAgIFwKKysgICAgICAgX19yZXN1bHQ7IH0pKQorKyNlbmRpZgorKworKyNkZWZpbmUgZXJyb3Ioc3RhdHVzLCBlcnJubywgLi4uKSBlcnIoc3RhdHVzLCBfX1ZBX0FSR1NfXykKKyAKKyAjaWZuZGVmIE1BWAorICNkZWZpbmUgTUFYKG0sIG4pICgobSkgPCAobikgPyAobikgOiAobSkpCitkaWZmIC0tZ2l0IGEvbGliL3htYWxsb2MuYyBiL2xpYi94bWFsbG9jLmMKK2luZGV4IDBjZGUzODQuLjIxN2IwNTQgMTAwNjQ0CistLS0gYS9saWIveG1hbGxvYy5jCisrKysgYi9saWIveG1hbGxvYy5jCitAQCAtMzAsNyArMzAsNyBAQAorICMgaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS9saWJhc20vYXNtX2VuZC5jIGIvbGliYXNtL2FzbV9lbmQuYworaW5kZXggY2VkMjRmNS4uNGFkOTE4YyAxMDA2NDQKKy0tLSBhL2xpYmFzbS9hc21fZW5kLmMKKysrKyBiL2xpYmFzbS9hc21fZW5kLmMKK0BAIC0zMiw3ICszMiw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS9saWJhc20vYXNtX25ld3Njbi5jIGIvbGliYXNtL2FzbV9uZXdzY24uYworaW5kZXggZGRiYjI1ZC4uNzRhNTk4ZCAxMDA2NDQKKy0tLSBhL2xpYmFzbS9hc21fbmV3c2NuLmMKKysrKyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKK0BAIC0zMiw3ICszMiw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfZ2VuZGlzLmMgYi9saWJjcHUvaTM4Nl9nZW5kaXMuYworaW5kZXggYWFlNWVhZS4uNmQ3NjAxNiAxMDA2NDQKKy0tLSBhL2xpYmNwdS9pMzg2X2dlbmRpcy5jCisrKysgYi9saWJjcHUvaTM4Nl9nZW5kaXMuYworQEAgLTMxLDcgKzMxLDcgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfbGV4LmMgYi9saWJjcHUvaTM4Nl9sZXguYworaW5kZXggYmE1ZjRhYS4uYjFlNDE5MSAxMDA2NDQKKy0tLSBhL2xpYmNwdS9pMzg2X2xleC5jCisrKysgYi9saWJjcHUvaTM4Nl9sZXguYworQEAgLTU3Nyw3ICs1NzcsNyBAQCBjaGFyICppMzg2X3RleHQ7CisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGN0eXBlLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgCisgI2luY2x1ZGUgPGxpYmV1Lmg+CitkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfcGFyc2UuYyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKK2luZGV4IGVmMWFjMzUuLjQ4ZjJlNjQgMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9wYXJzZS5jCisrKysgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCitAQCAtMTA3LDcgKzEwNyw3IEBACisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxtYXRoLmg+CitkaWZmIC0tZ2l0IGEvbGliZHcvTWFrZWZpbGUuYW0gYi9saWJkdy9NYWtlZmlsZS5hbQoraW5kZXggZmY4YzI5MS4uODllNzkyYSAxMDA2NDQKKy0tLSBhL2xpYmR3L01ha2VmaWxlLmFtCisrKysgYi9saWJkdy9NYWtlZmlsZS5hbQorQEAgLTEwNSw3ICsxMDUsOCBAQCBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQorIGxpYmR3X3NvX0xJQlMgPSBsaWJkd19waWMuYSAuLi9saWJkd2VsZi9saWJkd2VsZl9waWMuYSBcCisgCSAgLi4vbGliZHdmbC9saWJkd2ZsX3BpYy5hIC4uL2xpYmVibC9saWJlYmwuYQorIGxpYmR3X3NvX0RFUFMgPSAuLi9saWIvbGliZXUuYSAuLi9saWJlbGYvbGliZWxmLnNvCistbGliZHdfc29fTERMSUJTID0gJChsaWJkd19zb19ERVBTKSAtbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpCisrZnRzX0xEQUREID0gLWxmdHMKKytsaWJkd19zb19MRExJQlMgPSAkKGxpYmR3X3NvX0RFUFMpIC1sZGwgLWx6ICQoYXJncF9MREFERCkgJCh6aXBfTElCUykgJChmdHNfTERBREQpCisgbGliZHdfc29fU09VUkNFUyA9CisgbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgJChsaWJkd19zb19MSUJTKSAkKGxpYmR3X3NvX0RFUFMpCisgIyBUaGUgcnBhdGggaXMgbmVjZXNzYXJ5IGZvciBsaWJlYmwgYmVjYXVzZSBpdHMgJE9SSUdJTiB1c2Ugd2lsbAorZGlmZiAtLWdpdCBhL2xpYmR3L2xpYmR3X2FsbG9jLmMgYi9saWJkdy9saWJkd19hbGxvYy5jCitpbmRleCAyOGE4Y2Y2Li4yOWFlYjNmIDEwMDY0NAorLS0tIGEvbGliZHcvbGliZHdfYWxsb2MuYworKysrIGIvbGliZHcvbGliZHdfYWxsb2MuYworQEAgLTMxLDcgKzMxLDcgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgImxpYmR3UC5oIgorZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIGIvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKK2luZGV4IGVlMGMxNjQuLmIwNmFiNTkgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYworKysrIGIvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgImxpYmR3ZmxQLmgiCisrI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK0BAIC05OSw3ICsxMDAsNyBAQCBfX2xpYmR3Zmxfb3Blbl9ieV9idWlsZF9pZCAoRHdmbF9Nb2R1bGUgKm1vZCwgYm9vbCBkZWJ1ZywgY2hhciAqKmZpbGVfbmFtZSwKKyAJeworIAkgIGlmICgqZmlsZV9uYW1lICE9IE5VTEwpCisgCSAgICBmcmVlICgqZmlsZV9uYW1lKTsKKy0JICAqZmlsZV9uYW1lID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAobmFtZSk7CisrCSAgKmZpbGVfbmFtZSA9IHJlYWxwYXRoIChuYW1lLCBOVUxMKTsKKyAJICBpZiAoKmZpbGVfbmFtZSA9PSBOVUxMKQorIAkgICAgeworIAkgICAgICAqZmlsZV9uYW1lID0gbmFtZTsKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCitpbmRleCA3YmNmNjFjLi5jMzQ1Nzk3IDEwMDY0NAorLS0tIGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMKKysrKyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCitAQCAtMTQwLDYgKzE0MCw3IEBAIF9fbGliZHdmbF9zZXRlcnJubyAoRHdmbF9FcnJvciBlcnJvcikKKyBjb25zdCBjaGFyICoKKyBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQorIHsKKysgIHN0YXRpYyBfX3RocmVhZCBjaGFyIHNbNjRdID0gIiI7CisgICBpZiAoZXJyb3IgPT0gMCB8fCBlcnJvciA9PSAtMSkKKyAgICAgeworICAgICAgIGludCBsYXN0X2Vycm9yID0gZ2xvYmFsX2Vycm9yOworQEAgLTE1NCw3ICsxNTUsOCBAQCBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQorICAgc3dpdGNoIChlcnJvciAmfiAweGZmZmYpCisgICAgIHsKKyAgICAgY2FzZSBPVEhFUl9FUlJPUiAoRVJSTk8pOgorLSAgICAgIHJldHVybiBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgImJhZCIsIDApOworKyAgICAgIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCBzLCBzaXplb2YocykpOworKyAgICAgIHJldHVybiBzOworICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJFTEYpOgorICAgICAgIHJldHVybiBlbGZfZXJybXNnIChlcnJvciAmIDB4ZmZmZik7CisgICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkRXKToKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMgYi9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKK2luZGV4IDk3NzVhY2UuLjUxMWM0YTYgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKKysrKyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYworQEAgLTM1LDYgKzM1LDcgQEAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSAiLi4vbGliZHcvbGliZHdQLmgiCS8qIERXQVJGX0VfKiB2YWx1ZXMgYXJlIGhlcmUuICAqLworICNpbmNsdWRlICIuLi9saWJlbGYvbGliZWxmUC5oIgorICNpbmNsdWRlICJzeXN0ZW0uaCIKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMgYi9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKK2luZGV4IDZkNWE0MmEuLjkyNjc3ODggMTAwNjQ0CistLS0gYS9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKKysrKyBiL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYworQEAgLTM4OSw3ICszODksNyBAQCBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvIChEd2ZsX01vZHVsZSAqbW9kLAorICAgICAgIC8qIElmIEZJTEVfTkFNRSBpcyBhIHN5bWxpbmssIHRoZSBkZWJ1ZyBmaWxlIG1pZ2h0IGJlIGFzc29jaWF0ZWQKKyAJIHdpdGggdGhlIHN5bWxpbmsgdGFyZ2V0IG5hbWUgaW5zdGVhZC4gICovCisgCistICAgICAgY2hhciAqY2Fub24gPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lIChmaWxlX25hbWUpOworKyAgICAgIGNoYXIgKmNhbm9uID0gcmVhbHBhdGggKGZpbGVfbmFtZSwgTlVMTCk7CisgICAgICAgaWYgKGNhbm9uICE9IE5VTEwgJiYgc3RyY21wIChmaWxlX25hbWUsIGNhbm9uKSkKKyAJZmQgPSBmaW5kX2RlYnVnaW5mb19pbl9wYXRoIChtb2QsIGNhbm9uLAorIAkJCQkgICAgIGRlYnVnbGlua19maWxlLCBkZWJ1Z2xpbmtfY3JjLAorZGlmZiAtLWdpdCBhL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMgYi9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCitpbmRleCBmODQ5MTI4Li42ZjBhY2ExIDEwMDY0NAorLS0tIGEvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYworKysrIGIvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYworQEAgLTI5LDYgKzI5LDE1IEBACisgIyBpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKysjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQorKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKKysgIChfX2V4dGVuc2lvbl9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQpIChleHByZXNzaW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5UUik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgX19yZXN1bHQ7IH0pKQorKyNlbmRpZgorKworICNkZWZpbmUgY3JjMzJfZmlsZSBhdHRyaWJ1dGVfaGlkZGVuIF9fbGliZHdmbF9jcmMzMl9maWxlCisgI2RlZmluZSBjcmMzMiBfX2xpYmR3ZmxfY3JjMzIKKyAjaW5jbHVkZSA8bGliZHdmbFAuaD4KK2RpZmYgLS1naXQgYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKK2luZGV4IDlkMGZlZjIuLjlmYzA5YjggMTAwNjQ0CistLS0gYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKKysrKyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYworQEAgLTQwLDYgKzQwLDcgQEAKKyAjaW5jbHVkZSA8c3lzdGVtLmg+CisgCisgI2luY2x1ZGUgImxpYmR3ZmxQLmgiCisrI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK2luZGV4IDUzNzEzOTYuLjJlNjZkZmQgMTAwNjQ0CistLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYworKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK0BAIC0zMiw3ICszMiw3IEBACisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxkbGZjbi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliZWxmUC5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKK2luZGV4IDVjZjJiOTMuLjk5MGIzYWYgMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmLmgKKysrKyBiL2xpYmVsZi9lbGYuaAorQEAgLTIxLDcgKzIxLDkgQEAKKyAKKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAKKy1fX0JFR0lOX0RFQ0xTCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisgCisgLyogU3RhbmRhcmQgRUxGIHR5cGVzLiAgKi8KKyAKK0BAIC0zNzA1LDYgKzM3MDcsOCBAQCBlbnVtCisgI2RlZmluZSBSX0JQRl9OT05FCQkwCS8qIE5vIHJlbG9jICovCisgI2RlZmluZSBSX0JQRl9NQVBfRkQJCTEJLyogTWFwIGZkIHRvIHBvaW50ZXIgKi8KKyAKKy1fX0VORF9ERUNMUworKyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKyAKKyAjZW5kaWYJLyogZWxmLmggKi8KK2RpZmYgLS1naXQgYS9saWJlbGYvbGliZWxmLmggYi9saWJlbGYvbGliZWxmLmgKK2luZGV4IDU0N2MwZjUuLmRkNzg3OTkgMTAwNjQ0CistLS0gYS9saWJlbGYvbGliZWxmLmgKKysrKyBiL2xpYmVsZi9saWJlbGYuaAorQEAgLTI5LDYgKzI5LDcgQEAKKyAjaWZuZGVmIF9MSUJFTEZfSAorICNkZWZpbmUgX0xJQkVMRl9IIDEKKyAKKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorZGlmZiAtLWdpdCBhL2xpYmVsZi9saWJlbGZQLmggYi9saWJlbGYvbGliZWxmUC5oCitpbmRleCA3ZWU2NjI1Li41ODQwODk5IDEwMDY0NAorLS0tIGEvbGliZWxmL2xpYmVsZlAuaAorKysrIGIvbGliZWxmL2xpYmVsZlAuaAorQEAgLTMyLDYgKzMyLDcgQEAKKyAKKyAjaW5jbHVkZSA8YXIuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorKyNpbmNsdWRlIDxsaWJlbGYuaD4KKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorZGlmZiAtLWdpdCBhL3NyYy9hZGRyMmxpbmUuYyBiL3NyYy9hZGRyMmxpbmUuYworaW5kZXggYmE0MTRhNy4uMDRiNzExNiAxMDA2NDQKKy0tLSBhL3NyYy9hZGRyMmxpbmUuYworKysrIGIvc3JjL2FkZHIybGluZS5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliZHdmbC5oPgorZGlmZiAtLWdpdCBhL3NyYy9hci5jIGIvc3JjL2FyLmMKK2luZGV4IGVjMzJjZWUuLjRlZmQ3MjkgMTAwNjQ0CistLS0gYS9zcmMvYXIuYworKysrIGIvc3JjL2FyLmMKK0BAIC0yMiw3ICsyMiw3IEBACisgCisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KK2RpZmYgLS1naXQgYS9zcmMvYXJsaWIuYyBiL3NyYy9hcmxpYi5jCitpbmRleCBlMDgzOWFhLi4xMTQzNjU4IDEwMDY0NAorLS0tIGEvc3JjL2FybGliLmMKKysrKyBiL3NyYy9hcmxpYi5jCitAQCAtMjEsNyArMjEsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorZGlmZiAtLWdpdCBhL3NyYy9hcmxpYjIuYyBiL3NyYy9hcmxpYjIuYworaW5kZXggNTUzZmM1Ny4uNDY0NDNkMCAxMDA2NDQKKy0tLSBhL3NyYy9hcmxpYjIuYworKysrIGIvc3JjL2FybGliMi5jCitAQCAtMjAsNyArMjAsNyBAQAorICMgaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KK2RpZmYgLS1naXQgYS9zcmMvZWxmY21wLmMgYi9zcmMvZWxmY21wLmMKK2luZGV4IDUwNDY0MjAuLmNmZjE4M2YgMTAwNjQ0CistLS0gYS9zcmMvZWxmY21wLmMKKysrKyBiL3NyYy9lbGZjbXAuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKK2luZGV4IDUxZTUzYzIuLmRhMGIwZGMgMTAwNjQ0CistLS0gYS9zcmMvZWxmbGludC5jCisrKysgYi9zcmMvZWxmbGludC5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2ZpbmR0ZXh0cmVsLmMgYi9zcmMvZmluZHRleHRyZWwuYworaW5kZXggOGYxZTIzOS4uNzE0NjNhZiAxMDA2NDQKKy0tLSBhL3NyYy9maW5kdGV4dHJlbC5jCisrKysgYi9zcmMvZmluZHRleHRyZWwuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8bGliZHcuaD4KK2RpZmYgLS1naXQgYS9zcmMvbm0uYyBiL3NyYy9ubS5jCitpbmRleCA5NjljNmQzLi4zMTEzYzA0IDEwMDY0NAorLS0tIGEvc3JjL25tLmMKKysrKyBiL3NyYy9ubS5jCitAQCAtMjYsNyArMjYsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3NyYy9vYmpkdW1wLmMgYi9zcmMvb2JqZHVtcC5jCitpbmRleCA4NjBjZmFjLi42MWU2N2JmIDEwMDY0NAorLS0tIGEvc3JjL29iamR1bXAuYworKysrIGIvc3JjL29iamR1bXAuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorZGlmZiAtLWdpdCBhL3NyYy9yYW5saWIuYyBiL3NyYy9yYW5saWIuYworaW5kZXggY2MwZWUyMy4uYWU4NTFlNCAxMDA2NDQKKy0tLSBhL3NyYy9yYW5saWIuYworKysrIGIvc3JjL3JhbmxpYi5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKK2luZGV4IDM0NmVjY2QuLmM4MzFhYTggMTAwNjQ0CistLS0gYS9zcmMvcmVhZGVsZi5jCisrKysgYi9zcmMvcmVhZGVsZi5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3NyYy9zaXplLmMgYi9zcmMvc2l6ZS5jCitpbmRleCBhZDhkYmNiLi5mZDgzYmUwIDEwMDY0NAorLS0tIGEvc3JjL3NpemUuYworKysrIGIvc3JjL3NpemUuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3NyYy9zdGFjay5jIGIvc3JjL3N0YWNrLmMKK2luZGV4IDZmMmZmNjkuLjZkYTAyNDMgMTAwNjQ0CistLS0gYS9zcmMvc3RhY2suYworKysrIGIvc3JjL3N0YWNrLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3N0cmluZ3MuYyBiL3NyYy9zdHJpbmdzLmMKK2luZGV4IGQyMTQzNTYuLjc2Y2IyNmIgMTAwNjQ0CistLS0gYS9zcmMvc3RyaW5ncy5jCisrKysgYi9zcmMvc3RyaW5ncy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxlbmRpYW4uaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK2RpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCitpbmRleCBjNzgzMGVjLi4wZDdmMTQ4IDEwMDY0NAorLS0tIGEvc3JjL3N0cmlwLmMKKysrKyBiL3NyYy9zdHJpcC5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KK2RpZmYgLS1naXQgYS9zcmMvdW5zdHJpcC5jIGIvc3JjL3Vuc3RyaXAuYworaW5kZXggNTA3NDkwOS4uM2Q0Zjk1MiAxMDA2NDQKKy0tLSBhL3NyYy91bnN0cmlwLmMKKysrKyBiL3NyYy91bnN0cmlwLmMKK0BAIC0zMSw3ICszMSw3IEBACisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9hZGRyc2NvcGVzLmMgYi90ZXN0cy9hZGRyc2NvcGVzLmMKK2luZGV4IDc5MTU2OWYuLjU0ZjQzMTEgMTAwNjQ0CistLS0gYS90ZXN0cy9hZGRyc2NvcGVzLmMKKysrKyBiL3Rlc3RzL2FkZHJzY29wZXMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2FsbHJlZ3MuYyBiL3Rlc3RzL2FsbHJlZ3MuYworaW5kZXggMjg2ZjdlMy4uYzlkZTA4OSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2FsbHJlZ3MuYworKysrIGIvdGVzdHMvYWxscmVncy5jCitAQCAtMjEsNyArMjEsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jIGIvdGVzdHMvYmFja3RyYWNlLWRhdGEuYworaW5kZXggYTM4N2Q4Zi4uOTU1YzI3ZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKKysrKyBiL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKK0BAIC0yNyw3ICsyNyw3IEBACisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19saW51eF9fKQorZGlmZiAtLWdpdCBhL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jIGIvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKK2luZGV4IDJkYzhhOWEuLjI0Y2E3ZmIgMTAwNjQ0CistLS0gYS90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYworKysrIGIvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKK0BAIC0yMiw3ICsyMiw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UuYyBiL3Rlc3RzL2JhY2t0cmFjZS5jCitpbmRleCAyMWFiZThhLi5kNzMzMjQ4IDEwMDY0NAorLS0tIGEvdGVzdHMvYmFja3RyYWNlLmMKKysrKyBiL3Rlc3RzL2JhY2t0cmFjZS5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaWZkZWYgX19saW51eF9fCitkaWZmIC0tZ2l0IGEvdGVzdHMvYnVpbGRpZC5jIGIvdGVzdHMvYnVpbGRpZC5jCitpbmRleCA4N2MxODc3Li4yOTUzZTZiIDEwMDY0NAorLS0tIGEvdGVzdHMvYnVpbGRpZC5jCisrKysgYi90ZXN0cy9idWlsZGlkLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGVsZikKKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2RlYnVnYWx0bGluay5jIGIvdGVzdHMvZGVidWdhbHRsaW5rLmMKK2luZGV4IDZkOTdkNTAuLmVlN2U1NTkgMTAwNjQ0CistLS0gYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYworKysrIGIvdGVzdHMvZGVidWdhbHRsaW5rLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3KQorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZGVidWdsaW5rLmMgYi90ZXN0cy9kZWJ1Z2xpbmsuYworaW5kZXggOTM1ZDEwMi4uNzQxY2I4MSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RlYnVnbGluay5jCisrKysgYi90ZXN0cy9kZWJ1Z2xpbmsuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2RlbGV0ZWQuYyBiL3Rlc3RzL2RlbGV0ZWQuYworaW5kZXggNmJlMzViYy4uMDE5MDcxMSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RlbGV0ZWQuYworKysrIGIvdGVzdHMvZGVsZXRlZC5jCitAQCAtMjEsNyArMjEsNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpZmRlZiBfX2xpbnV4X18KKyAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYyBiL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKK2luZGV4IDIxZTQ3MGEuLjFlYTFlM2IgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCisrKysgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKK2RpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgYi90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKK2luZGV4IGFhODAzMGUuLjAyYzhiZWYgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKKysrKyBiL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYworQEAgLTIwLDcgKzIwLDcgQEAKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMgYi90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKK2luZGV4IDY4OWNkZDcuLjU5NzNkYTMgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKKysrKyBiL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYworQEAgLTI0LDcgKzI0LDcgQEAKKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGR3YXJmLmg+CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jIGIvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCitpbmRleCAxZWU5ODlmLi5mZDYyZTY1IDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCisrKysgYi90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyBzdGF0aWMgY29uc3QgRHdmbF9DYWxsYmFja3MgY2FsbGJhY2tzID0KKyAgIHsKK2RpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCitpbmRleCBhNGU5N2QzLi5mNDcxNTg3IDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKKysrKyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCitAQCAtMjAsNyArMjAsNyBAQAorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbGxpbmVzLmMgYi90ZXN0cy9kd2ZsbGluZXMuYworaW5kZXggOTAzNzlkZC4uY2JkZjZjNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2R3ZmxsaW5lcy5jCisrKysgYi90ZXN0cy9kd2ZsbGluZXMuYworQEAgLTI3LDcgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyBpbnQKKyBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorZGlmZiAtLWdpdCBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMgYi90ZXN0cy9kd2ZsbW9kdGVzdC5jCitpbmRleCAwMDI3Zjk2Li5lNjhkM2JjIDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbG1vZHRlc3QuYworKysrIGIvdGVzdHMvZHdmbG1vZHRlc3QuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbHN5bXMuYyBiL3Rlc3RzL2R3ZmxzeW1zLmMKK2luZGV4IDQ5YWMzMzQuLmNmMDc4MzAgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2Zsc3ltcy5jCisrKysgYi90ZXN0cy9kd2Zsc3ltcy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqCitkaWZmIC0tZ2l0IGEvdGVzdHMvZWFybHktb2Zmc2NuLmMgYi90ZXN0cy9lYXJseS1vZmZzY24uYworaW5kZXggOTI0Y2I5ZS4uNmY2MGQ1YSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCisrKysgYi90ZXN0cy9lYXJseS1vZmZzY24uYworQEAgLTE5LDcgKzE5LDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9lY3AuYyBiL3Rlc3RzL2VjcC5jCitpbmRleCAzOGE2ODU5Li43NDNjZWE1IDEwMDY0NAorLS0tIGEvdGVzdHMvZWNwLmMKKysrKyBiL3Rlc3RzL2VjcC5jCitAQCAtMjAsNyArMjAsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jIGIvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYworaW5kZXggYmE4YWUzNy4uNzZmNWYwNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKKysrKyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKK0BAIC0yNSw3ICsyNSw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2Z1bmNyZXR2YWwuYyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYworaW5kZXggOGQxOWQxMS4uYzhhYWE5MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2Z1bmNyZXR2YWwuYworKysrIGIvdGVzdHMvZnVuY3JldHZhbC5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGZubWF0Y2guaD4KKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9mdW5jc2NvcGVzLmMgYi90ZXN0cy9mdW5jc2NvcGVzLmMKK2luZGV4IDljOTAxODUuLmRiY2NiODkgMTAwNjQ0CistLS0gYS90ZXN0cy9mdW5jc2NvcGVzLmMKKysrKyBiL3Rlc3RzL2Z1bmNzY29wZXMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ2V0c3JjX2RpZS5jIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCitpbmRleCAwNTVhZWRlLi45YzM5NGRkIDEwMDY0NAorLS0tIGEvdGVzdHMvZ2V0c3JjX2RpZS5jCisrKysgYi90ZXN0cy9nZXRzcmNfZGllLmMKK0BAIC0xOSw3ICsxOSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxsaWJlbGYuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9saW5lMmFkZHIuYyBiL3Rlc3RzL2xpbmUyYWRkci5jCitpbmRleCBlMGQ2NWQzLi45YmYwMDIzIDEwMDY0NAorLS0tIGEvdGVzdHMvbGluZTJhZGRyLmMKKysrKyBiL3Rlc3RzL2xpbmUyYWRkci5jCitAQCAtMjYsNyArMjYsNyBAQAorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyAKKyBzdGF0aWMgdm9pZAorZGlmZiAtLWdpdCBhL3Rlc3RzL2xvd19oaWdoX3BjLmMgYi90ZXN0cy9sb3dfaGlnaF9wYy5jCitpbmRleCBkMGY0MzAyLi44ZGE0ZmJkIDEwMDY0NAorLS0tIGEvdGVzdHMvbG93X2hpZ2hfcGMuYworKysrIGIvdGVzdHMvbG93X2hpZ2hfcGMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jIGIvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCitpbmRleCBkNTAzNTVlLi4zYzQxZjQwIDEwMDY0NAorLS0tIGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCisrKysgYi90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKK0BAIC0xOSw3ICsxOSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyAjaW5jbHVkZSAibWQ1LmgiCisgI2luY2x1ZGUgInNoYTEuaCIKK2RpZmYgLS1naXQgYS90ZXN0cy9yZHdybW1hcC5jIGIvdGVzdHMvcmR3cm1tYXAuYworaW5kZXggNmYwMjdkZi4uMWNlNWU2ZSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Jkd3JtbWFwLmMKKysrKyBiL3Rlc3RzL3Jkd3JtbWFwLmMKK0BAIC0xOSw3ICsxOSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9zYXJpZHguYyBiL3Rlc3RzL3NhcmlkeC5jCitpbmRleCA4YTQ1MGQ4Li5iMzg3ODAxIDEwMDY0NAorLS0tIGEvdGVzdHMvc2FyaWR4LmMKKysrKyBiL3Rlc3RzL3NhcmlkeC5jCitAQCAtMTcsNyArMTcsNyBAQAorIAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAKKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9zZWN0aW9uZHVtcC5jIGIvdGVzdHMvc2VjdGlvbmR1bXAuYworaW5kZXggMzAzM2ZlZC4uOGU4ODhkYiAxMDA2NDQKKy0tLSBhL3Rlc3RzL3NlY3Rpb25kdW1wLmMKKysrKyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL3ZhcmxvY3MuYyBiL3Rlc3RzL3ZhcmxvY3MuYworaW5kZXggYzNmYmE4OS4uZTA0M2VhMiAxMDA2NDQKKy0tLSBhL3Rlc3RzL3ZhcmxvY3MuYworKysrIGIvdGVzdHMvdmFybG9jcy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy92ZHNvc3ltcy5jIGIvdGVzdHMvdmRzb3N5bXMuYworaW5kZXggYjg3NmMxMC4uYWZiMjgyMyAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Zkc29zeW1zLmMKKysrKyBiL3Rlc3RzL3Zkc29zeW1zLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9mYWxsdGhyb3VnaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2ZhbGx0aHJvdWdoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2ZhbGx0aHJvdWdoLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUwZTU0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5wYXRjaApAQCAtMCwwICsxLDcxNSBAQAorRnJvbSA0NmQwZDBjYTcxODA5MzQ4NmVlZWVkZjFiNDQxMzRlOWUyOWI1NmY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwOToxODo1OSArMDgwMAorU3ViamVjdDogW1BBVENIXSBtaXBzIGJhY2tlbmRzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQorCitSZWJhc2UgdG8gMC4xNzAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgIHwgICA4ICstCisgYmFja2VuZHMvbWlwc19pbml0LmMgICAgfCAgNTkgKysrKysrKysrCisgYmFja2VuZHMvbWlwc19yZWdzLmMgICAgfCAxMDQgKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmIHwgIDc5ICsrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfc3ltYm9sLmMgIHwgIDUyICsrKysrKysrCisgbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgfCAgIDIgKworIDcgZmlsZXMgY2hhbmdlZCwgNjIzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfaW5pdC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVncy5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmV0dmFsLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19zeW1ib2wuYworCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQoraW5kZXggN2YxZjVkNC4uOTFiYWY2ZSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCisrKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQorQEAgLTMzLDEyICszMywxMiBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAorIAorIAorIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKKy0JICB0aWxlZ3ggbTY4ayBicGYgcGFyaXNjCisrCSAgdGlsZWd4IG02OGsgYnBmIHBhcmlzYyBtaXBzCisgbGliZWJsX3BpYyA9IGxpYmVibF9pMzg2X3BpYy5hIGxpYmVibF9zaF9waWMuYSBsaWJlYmxfeDg2XzY0X3BpYy5hICAgIFwKKyAJICAgICBsaWJlYmxfaWE2NF9waWMuYSBsaWJlYmxfYWxwaGFfcGljLmEgbGliZWJsX2FybV9waWMuYSAgICBcCisgCSAgICAgbGliZWJsX2FhcmNoNjRfcGljLmEgbGliZWJsX3NwYXJjX3BpYy5hIGxpYmVibF9wcGNfcGljLmEgXAorIAkgICAgIGxpYmVibF9wcGM2NF9waWMuYSBsaWJlYmxfczM5MF9waWMuYSBsaWJlYmxfdGlsZWd4X3BpYy5hIFwKKy0JICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEKKysJICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEgbGliZWJsX21pcHNfcGljLmEKKyBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQorIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCisgCitAQCAtMTI4LDYgKzEyOCwxMCBAQCBwYXJpc2NfU1JDUyA9IHBhcmlzY19pbml0LmMgcGFyaXNjX3N5bWJvbC5jIHBhcmlzY19yZWdzLmMgcGFyaXNjX3JldHZhbC5jCisgbGliZWJsX3BhcmlzY19waWNfYV9TT1VSQ0VTID0gJChwYXJpc2NfU1JDUykKKyBhbV9saWJlYmxfcGFyaXNjX3BpY19hX09CSkVDVFMgPSAkKHBhcmlzY19TUkNTOi5jPS5vcykKKyAKKyttaXBzX1NSQ1MgPSBtaXBzX2luaXQuYyBtaXBzX3N5bWJvbC5jIG1pcHNfcmVncy5jIG1pcHNfcmV0dmFsLmMKKytsaWJlYmxfbWlwc19waWNfYV9TT1VSQ0VTID0gJChtaXBzX1NSQ1MpCisrYW1fbGliZWJsX21pcHNfcGljX2FfT0JKRUNUUyA9ICQobWlwc19TUkNTOi5jPS5vcykKKysKKyBsaWJlYmxfJS5zbyBsaWJlYmxfJS5tYXA6IGxpYmVibF8lX3BpYy5hICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KQorIAlAcm0gLWYgJChAOi5zbz0ubWFwKQorIAkkKEFNX1ZfYXQpZWNobyAnRUxGVVRJTFNfJChQQUNLQUdFX1ZFUlNJT04pIHsgZ2xvYmFsOiAkKl9pbml0OyBsb2NhbDogKjsgfTsnIFwKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX2luaXQuYyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOTc1YzA0ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19pbml0LmMKK0BAIC0wLDAgKzEsNTkgQEAKKysvKiBJbml0aWFsaXphdGlvbiBvZiBtaXBzIHNwZWNpZmljIGJhY2tlbmQgbGlicmFyeS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrIyBpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCisrI2RlZmluZSBSRUxPQ19QUkVGSVgJUl9NSVBTXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrCisrLyogVGhpcyBkZWZpbmVzIHRoZSBjb21tb24gcmVsb2MgaG9va3MgYmFzZWQgb24gbWlwc19yZWxvYy5kZWYuICAqLworKyNpbmNsdWRlICJjb21tb24tcmVsb2MuYyIKKysKKytjb25zdCBjaGFyICoKKyttaXBzX2luaXQgKEVsZiAqZWxmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgIEdFbGZfSGFsZiBtYWNoaW5lIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgIEVibCAqZWgsCisrICAgICBzaXplX3QgZWhsZW4pCisreworKyAgLyogQ2hlY2sgd2hldGhlciB0aGUgRWxmX0JIIG9iamVjdCBoYXMgYSBzdWZmaWNlbnQgc2l6ZS4gICovCisrICBpZiAoZWhsZW4gPCBzaXplb2YgKEVibCkpCisrICAgIHJldHVybiBOVUxMOworKworKyAgLyogV2UgaGFuZGxlIGl0LiAgKi8KKysgIGlmIChtYWNoaW5lID09IEVNX01JUFMpCisrICAgIGVoLT5uYW1lID0gIk1JUFMgUjMwMDAgYmlnLWVuZGlhbiI7CisrICBlbHNlIGlmIChtYWNoaW5lID09IEVNX01JUFNfUlMzX0xFKQorKyAgICBlaC0+bmFtZSA9ICJNSVBTIFIzMDAwIGxpdHRsZS1lbmRpYW4iOworKworKyAgbWlwc19pbml0X3JlbG9jIChlaCk7CisrICBIT09LIChlaCwgcmVsb2Nfc2ltcGxlX3R5cGUpOworKyAgSE9PSyAoZWgsIHJldHVybl92YWx1ZV9sb2NhdGlvbik7CisrICBIT09LIChlaCwgcmVnaXN0ZXJfaW5mbyk7CisrCisrICByZXR1cm4gTU9EVkVSU0lPTjsKKyt9CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZWdzLmMgYi9iYWNrZW5kcy9taXBzX3JlZ3MuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ0Zjg2Y2IKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL21pcHNfcmVncy5jCitAQCAtMCwwICsxLDEwNCBAQAorKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBNSVBTIERXQVJGLgorKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZHdhcmYuaD4KKysKKysjZGVmaW5lIEJBQ0tFTkQgbWlwc18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKworK3NzaXplX3QKKyttaXBzX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAorKwkJICAgIGludCByZWdubywgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCisrCQkgICAgY29uc3QgY2hhciAqKnByZWZpeCwgY29uc3QgY2hhciAqKnNldG5hbWUsCisrCQkgICAgaW50ICpiaXRzLCBpbnQgKnR5cGUpCisreworKyAgaWYgKG5hbWUgPT0gTlVMTCkKKysgICAgcmV0dXJuIDY2OworKworKyAgaWYgKHJlZ25vIDwgMCB8fCByZWdubyA+IDY1IHx8IG5hbWVsZW4gPCA0KQorKyAgICByZXR1cm4gLTE7CisrCisrICAqcHJlZml4ID0gIiQiOworKworKyAgaWYgKHJlZ25vIDwgMzIpCisrICAgIHsKKysgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQorKyAgICAgICAgeworKyAgICAgICAgICBuYW1lWzBdID0gcmVnbm8gKyAnMCc7CisrICAgICAgICAgIG5hbWVsZW4gPSAxOworKyAgICAgICAgfQorKyAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgbmFtZVswXSA9IChyZWdubyAvIDEwKSArICcwJzsKKysgICAgICAgICAgbmFtZVsxXSA9IChyZWdubyAlIDEwKSArICcwJzsKKysgICAgICAgICAgbmFtZWxlbiA9IDI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKHJlZ25vIDwgNjQpCisrICAgIHsKKysgICAgICAqc2V0bmFtZSA9ICJGUFUiOworKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgbmFtZVswXSA9ICdmJzsKKysgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQorKwl7CisrCSAgbmFtZVsxXSA9IChyZWdubyAtIDMyKSArICcwJzsKKysJICBuYW1lbGVuID0gMjsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgLyAxMCArICcwJzsKKysJICBuYW1lWzJdID0gKHJlZ25vIC0gMzIpICUgMTAgKyAnMCc7CisrCSAgbmFtZWxlbiA9IDM7CisrCX0KKysgICAgfQorKyAgZWxzZSBpZiAocmVnbm8gPT0gNjQpCisrICAgIHsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBuYW1lWzBdID0gJ2gnOworKyAgICAgIG5hbWVbMV0gPSAnaSc7CisrICAgICAgbmFtZWxlbiA9IDI7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIG5hbWVbMF0gPSAnbCc7CisrICAgICAgbmFtZVsxXSA9ICdvJzsKKysgICAgICBuYW1lbGVuID0gMjsKKysgICAgfQorKworKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKKysgIHJldHVybiBuYW1lbGVuOworK30KK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZiBiL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDU3OTk3MAorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19yZWxvYy5kZWYKK0BAIC0wLDAgKzEsNzkgQEAKKysvKiBMaXN0IHRoZSByZWxvY2F0aW9uIHR5cGVzIGZvciBtaXBzLiAgLSotIEMgLSotCisrICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysvKiAJICAgIE5BTUUsCQlSRUx8RVhFQ3xEWU4JKi8KKysKKytSRUxPQ19UWVBFIChOT05FLCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoMTYsICAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKDMyLCAgICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUwzMiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoMjYsICAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEhJMTYsICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChMTzE2LCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR1BSRUwxNiwgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKExJVEVSQUwsICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1QxNiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoUEMxNiwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKENBTEwxNiwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHUFJFTDMyLCAgICAgICAgICAgIDApCisrCisrUkVMT0NfVFlQRSAoU0hJRlQ1LCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFNISUZUNiwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFICg2NCwgICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX0RJU1AsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9QQUdFLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1RfT0ZTVCwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX0hJMTYsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9MTzE2LCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChTVUIsICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSU5TRVJUX0EsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKElOU0VSVF9CLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChERUxFVEUsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSElHSEVSLCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEhJR0hFU1QsICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChDQUxMX0hJMTYsICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoQ0FMTF9MTzE2LCAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFNDTl9ESVNQLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUwxNiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoQUREX0lNTUVESUFURSwgICAgICAwKQorK1JFTE9DX1RZUEUgKFBKVU1QLCAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUxHT1QsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSkFMUiwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBNT0QzMiwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQUkVMMzIsICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0RUUE1PRDY0LCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBSRUw2NCwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfR0QsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0xETSwgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBSRUxfSEkxNiwgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQUkVMX0xPMTYsICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0dPVFRQUkVMLCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19UUFJFTDMyLCAgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfVFBSRUw2NCwgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX1RQUkVMX0hJMTYsICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19UUFJFTF9MTzE2LCAgICAgMCkKKysKKysjZGVmaW5lIE5PX0NPUFlfUkVMT0MgMQorKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgMQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjU2Y2QxZgorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYworQEAgLTAsMCArMSwzMjEgQEAKKysvKiBGdW5jdGlvbiByZXR1cm4gdmFsdWUgbG9jYXRpb24gZm9yIExpbnV4L21pcHMgQUJJLgorKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPGR3YXJmLmg+CisrI2luY2x1ZGUgPGVsZi5oPgorKworKyNpbmNsdWRlICIuLi9saWJlYmwvbGliZWJsUC5oIgorKyNpbmNsdWRlICIuLi9saWJkdy9saWJkd1AuaCIKKysKKysjZGVmaW5lIEJBQ0tFTkQgbWlwc18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKworKy8qIFRoZSBBQkkgb2YgdGhlIGZpbGUuICBBbHNvIHNlZSBFRl9NSVBTX0FCSTIgYWJvdmUuICovCisrI2RlZmluZSBFRl9NSVBTX0FCSQkJMHgwMDAwRjAwMAorKworKy8qIFRoZSBvcmlnaW5hbCBvMzIgYWJpLiAqLworKyNkZWZpbmUgRV9NSVBTX0FCSV9PMzIgICAgICAgICAgMHgwMDAwMTAwMAorKworKy8qIE8zMiBleHRlbmRlZCB0byB3b3JrIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmVzICovCisrI2RlZmluZSBFX01JUFNfQUJJX082NCAgICAgICAgICAweDAwMDAyMDAwCisrCisrLyogRUFCSSBpbiAzMiBiaXQgbW9kZSAqLworKyNkZWZpbmUgRV9NSVBTX0FCSV9FQUJJMzIgICAgICAgMHgwMDAwMzAwMAorKworKy8qIEVBQkkgaW4gNjQgYml0IG1vZGUgKi8KKysjZGVmaW5lIEVfTUlQU19BQklfRUFCSTY0ICAgICAgIDB4MDAwMDQwMDAKKysKKysvKiBBbGwgdGhlIHBvc3NpYmxlIE1JUFMgQUJJcy4gKi8KKytlbnVtIG1pcHNfYWJpCisrICB7CisrICAgIE1JUFNfQUJJX1VOS05PV04gPSAwLAorKyAgICBNSVBTX0FCSV9OMzIsCisrICAgIE1JUFNfQUJJX08zMiwKKysgICAgTUlQU19BQklfTjY0LAorKyAgICBNSVBTX0FCSV9PNjQsCisrICAgIE1JUFNfQUJJX0VBQkkzMiwKKysgICAgTUlQU19BQklfRUFCSTY0LAorKyAgICBNSVBTX0FCSV9MQVNUCisrICB9OworKworKy8qIEZpbmQgdGhlIG1pcHMgQUJJIG9mIHRoZSBjdXJyZW50IGZpbGUgKi8KKytlbnVtIG1pcHNfYWJpIGZpbmRfbWlwc19hYmkoRWxmICplbGYpCisreworKyAgR0VsZl9FaGRyIGVoZHJfbWVtOworKyAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlbGYsICZlaGRyX21lbSk7CisrCisrICBpZiAoZWhkciA9PSBOVUxMKQorKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgIEdFbGZfV29yZCBlbGZfZmxhZ3MgPSBlaGRyLT5lX2ZsYWdzOworKworKyAgLyogQ2hlY2sgZWxmX2ZsYWdzIHRvIHNlZSBpZiBpdCBzcGVjaWZpZXMgdGhlIEFCSSBiZWluZyB1c2VkLiAgKi8KKysgIHN3aXRjaCAoKGVsZl9mbGFncyAmIEVGX01JUFNfQUJJKSkKKysgICAgeworKyAgICBjYXNlIEVfTUlQU19BQklfTzMyOgorKyAgICAgIHJldHVybiBNSVBTX0FCSV9PMzI7CisrICAgIGNhc2UgRV9NSVBTX0FCSV9PNjQ6CisrICAgICAgcmV0dXJuIE1JUFNfQUJJX082NDsKKysgICAgY2FzZSBFX01JUFNfQUJJX0VBQkkzMjoKKysgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTMyOworKyAgICBjYXNlIEVfTUlQU19BQklfRUFCSTY0OgorKyAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJNjQ7CisrICAgIGRlZmF1bHQ6CisrICAgICAgaWYgKChlbGZfZmxhZ3MgJiBFRl9NSVBTX0FCSTIpKQorKwlyZXR1cm4gTUlQU19BQklfTjMyOworKyAgICB9CisrCisrICAvKiBHQ0MgY3JlYXRlcyBhIHBzZXVkby1zZWN0aW9uIHdob3NlIG5hbWUgZGVzY3JpYmVzIHRoZSBBQkkuICAqLworKyAgc2l6ZV90IHNoc3RybmR4OworKyAgaWYgKGVsZl9nZXRzaGRyc3RybmR4IChlbGYsICZzaHN0cm5keCkgPCAwKQorKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgIGNvbnN0IGNoYXIgKm5hbWU7CisrICBFbGZfU2NuICpzY24gPSBOVUxMOworKyAgd2hpbGUgKChzY24gPSBlbGZfbmV4dHNjbiAoZWxmLCBzY24pKSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgR0VsZl9TaGRyIHNoZHJfbWVtOworKyAgICAgIEdFbGZfU2hkciAqc2hkciA9IGdlbGZfZ2V0c2hkciAoc2NuLCAmc2hkcl9tZW0pOworKyAgICAgIGlmIChzaGRyID09IE5VTEwpCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgICAgICBuYW1lID0gZWxmX3N0cnB0ciAoZWxmLCBzaHN0cm5keCwgc2hkci0+c2hfbmFtZSkgPzogIiI7CisrICAgICAgaWYgKHN0cm5jbXAgKG5hbWUsICIubWRlYnVnLiIsIDgpICE9IDApCisrICAgICAgICBjb250aW51ZTsKKysKKysgICAgICBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmkzMiIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTzMyOworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTjMyIikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9OMzI7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmk2NCIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTjY0OworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTzY0IikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9PNjQ7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5lYWJpMzIiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkkzMjsKKysgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmVhYmk2NCIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTY0OworKyAgICAgIGVsc2UKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9VTktOT1dOOworKyAgICB9CisrCisrICByZXR1cm4gTUlQU19BQklfVU5LTk9XTjsKKyt9CisrCisrdW5zaWduZWQgaW50CisrbWlwc19hYmlfcmVnc2l6ZSAoZW51bSBtaXBzX2FiaSBhYmkpCisreworKyAgc3dpdGNoIChhYmkpCisrICAgIHsKKysgICAgY2FzZSBNSVBTX0FCSV9FQUJJMzI6CisrICAgIGNhc2UgTUlQU19BQklfTzMyOgorKyAgICAgIHJldHVybiA0OworKyAgICBjYXNlIE1JUFNfQUJJX04zMjoKKysgICAgY2FzZSBNSVBTX0FCSV9ONjQ6CisrICAgIGNhc2UgTUlQU19BQklfTzY0OgorKyAgICBjYXNlIE1JUFNfQUJJX0VBQkk2NDoKKysgICAgICByZXR1cm4gODsKKysgICAgY2FzZSBNSVBTX0FCSV9VTktOT1dOOgorKyAgICBjYXNlIE1JUFNfQUJJX0xBU1Q6CisrICAgIGRlZmF1bHQ6CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyt9CisrCisrCisrLyogJHYwIG9yIHBhaXIgJHYwLCAkdjEgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ19vMzJbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9yZWcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgfTsKKysKKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ1tdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCisrICB9OworKyNkZWZpbmUgbmxvY19pbnRyZWcJMQorKyNkZWZpbmUgbmxvY19pbnRyZWdwYWlyCTQKKysKKysvKiAkZjAgKGZsb2F0KSwgb3IgcGFpciAkZjAsICRmMSAoZG91YmxlKS4KKysgKiBmMi9mMyBhcmUgdXNlZCBmb3IgQ09NUExFWCAoPSAyIGRvdWJsZXMpIHJldHVybnMgaW4gRm9ydHJhbiAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdfbzMyW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzQgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM1IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgIH07CisrCisrLyogJGYwLCBvciBwYWlyICRmMCwgJGYyLiAgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCisrICB9OworKyNkZWZpbmUgbmxvY19mcHJlZyAgMQorKyNkZWZpbmUgbmxvY19mcHJlZ3BhaXIgNAorKyNkZWZpbmUgbmxvY19mcHJlZ3F1YWQgOAorKworKy8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQorKyAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiAgQnV0LCB0aGUgY29tcGlsZXIKKysgICBoZWxwZnVsbHkgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGF0IHNwYWNlIGluICR2MC4gICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19hZ2dyZWdhdGVbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9icmVnMiwgLm51bWJlciA9IDAgfQorKyAgfTsKKysjZGVmaW5lIG5sb2NfYWdncmVnYXRlIDEKKysKKytpbnQKKyttaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorK3sKKysgIC8qIEZpcnN0IGZpbmQgdGhlIEFCSSB1c2VkIGJ5IHRoZSBlbGYgb2JqZWN0ICovCisrICBlbnVtIG1pcHNfYWJpIGFiaSA9IGZpbmRfbWlwc19hYmkoZnVuY3R5cGVkaWUtPmN1LT5kYmctPmVsZik7CisrCisrICAvKiBTb21ldGhpbmcgd2VudCBzZXJpb3VzbHkgd3Jvbmcgd2hpbGUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIEFCSSAqLworKyAgaWYgKGFiaSA9PSBNSVBTX0FCSV9MQVNUKQorKyAgICByZXR1cm4gLTE7CisrCisrICAvKiBXZSBjb3VsZG4ndCBpZGVudGlmeSB0aGUgQUJJLCBidXQgdGhlIGZpbGUgc2VlbXMgdmFsaWQgKi8KKysgIGlmIChhYmkgPT0gTUlQU19BQklfVU5LTk9XTikKKysgICAgcmV0dXJuIC0yOworKworKyAgLyogQ2FuJ3QgaGFuZGxlIEVBQkkgdmFyaWFudHMgKi8KKysgIGlmICgoYWJpID09IE1JUFNfQUJJX0VBQkkzMikgfHwgKGFiaSA9PSBNSVBTX0FCSV9FQUJJNjQpKQorKyAgICByZXR1cm4gLTI7CisrCisrICB1bnNpZ25lZCBpbnQgcmVnc2l6ZSA9IG1pcHNfYWJpX3JlZ3NpemUgKGFiaSk7CisrICBpZiAoIXJlZ3NpemUpCisrICAgIHJldHVybiAtMjsKKysKKysgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCisrICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KKysKKysgIER3YXJmX0F0dHJpYnV0ZSBhdHRyX21lbTsKKysgIER3YXJmX0F0dHJpYnV0ZSAqYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlIChmdW5jdHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKKysgIGlmIChhdHRyID09IE5VTEwpCisrICAgIC8qIFRoZSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZhbHVlLCBsaWtlIGEgYHZvaWQnIGZ1bmN0aW9uIGluIEMuICAqLworKyAgICByZXR1cm4gMDsKKysKKysgIER3YXJmX0RpZSBkaWVfbWVtOworKyAgRHdhcmZfRGllICp0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKysgIGludCB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOworKworKyAgLyogRm9sbG93IHR5cGVkZWZzIGFuZCBxdWFsaWZpZXJzIHRvIGdldCB0byB0aGUgYWN0dWFsIHR5cGUuICAqLworKyAgd2hpbGUgKHRhZyA9PSBEV19UQUdfdHlwZWRlZgorKwkgfHwgdGFnID09IERXX1RBR19jb25zdF90eXBlIHx8IHRhZyA9PSBEV19UQUdfdm9sYXRpbGVfdHlwZQorKwkgfHwgdGFnID09IERXX1RBR19yZXN0cmljdF90eXBlKQorKyAgICB7CisrICAgICAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKyAgICAgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKyAgICAgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrICAgIH0KKysKKysgIHN3aXRjaCAodGFnKQorKyAgICB7CisrICAgIGNhc2UgLTE6CisrICAgICAgcmV0dXJuIC0xOworKworKyAgICBjYXNlIERXX1RBR19zdWJyYW5nZV90eXBlOgorKyAgICAgIGlmICghIGR3YXJmX2hhc2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUpKQorKwl7CisrCSAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKwkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKwkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrCX0KKysgICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKworKyAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX3BvaW50ZXJfdHlwZToKKysgICAgY2FzZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOgorKyAgICAgIHsKKysgICAgICAgIER3YXJmX1dvcmQgc2l6ZTsKKysJaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSwKKysJCQkJCSAmYXR0cl9tZW0pLCAmc2l6ZSkgIT0gMCkKKysJICB7CisrCSAgICBpZiAodGFnID09IERXX1RBR19wb2ludGVyX3R5cGUgfHwgdGFnID09IERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGUpCisrCSAgICAgIHNpemUgPSByZWdzaXplOworKwkgICAgZWxzZQorKwkgICAgICByZXR1cm4gLTE7CisrCSAgfQorKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCisrCSAgeworKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKKysJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKKysJCQkJCSAgICAgJmF0dHJfbWVtKSwgJmVuY29kaW5nKSAhPSAwKQorKwkgICAgICByZXR1cm4gLTE7CisrCisrI2RlZmluZSBBQklfTE9DKGxvYywgcmVnc2l6ZSkgKChyZWdzaXplKSA9PSA0ID8gKGxvYyAjIyBfbzMyKSA6IChsb2MpKQorKworKwkgICAgaWYgKGVuY29kaW5nID09IERXX0FURV9mbG9hdCkKKysJICAgICAgeworKwkJKmxvY3AgPSBBQklfTE9DKGxvY19mcHJlZywgcmVnc2l6ZSk7CisrCQlpZiAoc2l6ZSA8PSByZWdzaXplKQorKwkJICAgIHJldHVybiBubG9jX2ZwcmVnOworKworKwkJaWYgKHNpemUgPD0gMipyZWdzaXplKQorKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncGFpcjsKKysKKysJCWlmIChzaXplIDw9IDQqcmVnc2l6ZSAmJiBhYmkgPT0gTUlQU19BQklfTzMyKQorKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncXVhZDsKKysKKysJCWdvdG8gYWdncmVnYXRlOworKwkgICAgICB9CisrCSAgfQorKwkqbG9jcCA9IEFCSV9MT0MobG9jX2ludHJlZywgcmVnc2l6ZSk7CisrCWlmIChzaXplIDw9IHJlZ3NpemUpCisrCSAgcmV0dXJuIG5sb2NfaW50cmVnOworKwlpZiAoc2l6ZSA8PSAyKnJlZ3NpemUpCisrCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKKysKKysJLyogRWxzZSBmYWxsIHRocm91Z2guIFNob3VsZG4ndCBoYXBwZW4gdGhvdWdoIChhdCBsZWFzdCB3aXRoIGdjYykgKi8KKysgICAgICB9CisrCisrICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorKyAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorKyAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgorKyAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgorKyAgICBhZ2dyZWdhdGU6CisrICAgICAgLyogWFhYIFRPRE86IENhbid0IGhhbmRsZSBzdHJ1Y3R1cmUgcmV0dXJuIHdpdGggb3RoZXIgQUJJJ3MgeWV0IDotLyAqLworKyAgICAgIGlmICgoYWJpICE9IE1JUFNfQUJJX08zMikgJiYgKGFiaSAhPSBNSVBTX0FCSV9PNjQpKQorKyAgICAgICAgcmV0dXJuIC0yOworKworKyAgICAgICpsb2NwID0gbG9jX2FnZ3JlZ2F0ZTsKKysgICAgICByZXR1cm4gbmxvY19hZ2dyZWdhdGU7CisrICAgIH0KKysKKysgIC8qIFhYWCBXZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gcmV0dXJuIHNwZWNpZmljIGVycm9ycyBmcm9tIGVibCBjYWxscy4KKysgICAgIFRoaXMgdmFsdWUgbWVhbnMgd2UgZG8gbm90IHVuZGVyc3RhbmQgdGhlIHR5cGUsIGJ1dCBpdCBpcyB3ZWxsLWZvcm1lZAorKyAgICAgRFdBUkYgYW5kIG1pZ2h0IGJlIHZhbGlkLiAgKi8KKysgIHJldHVybiAtMjsKKyt9CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19zeW1ib2wuYyBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iYTQ2NWZlCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9taXBzX3N5bWJvbC5jCitAQCAtMCwwICsxLDUyIEBACisrLyogTUlQUyBzcGVjaWZpYyBzeW1ib2xpYyBuYW1lIGhhbmRsaW5nLgorKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysgICBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LCAyMDAyLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysjaWZkZWYgSEFWRV9DT05GSUdfSAorKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPGVsZi5oPgorKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKysjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysKKysvKiBDaGVjayBmb3IgdGhlIHNpbXBsZSByZWxvYyB0eXBlcy4gICovCisrRWxmX1R5cGUKKyttaXBzX3JlbG9jX3NpbXBsZV90eXBlIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCB0eXBlKQorK3sKKysgIHN3aXRjaCAodHlwZSkKKysgICAgeworKyAgICBjYXNlIFJfTUlQU18xNjoKKysgICAgICByZXR1cm4gRUxGX1RfSEFMRjsKKysgICAgY2FzZSBSX01JUFNfMzI6CisrICAgICAgcmV0dXJuIEVMRl9UX1dPUkQ7CisrICAgIGNhc2UgUl9NSVBTXzY0OgorKyAgICAgIHJldHVybiBFTEZfVF9YV09SRDsKKysgICAgZGVmYXVsdDoKKysgICAgICByZXR1cm4gRUxGX1RfTlVNOworKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK2luZGV4IDFmODE0NzcuLjUzNzEzOTYgMTAwNjQ0CistLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYworKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK0BAIC03Miw2ICs3Miw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKKyAgIHsgInNwYXJjIiwgImVsZl9zcGFyYyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDLCAwLCAwIH0sCisgICB7ICJzcGFyYyIsICJlbGZfc3BhcmN2OHBsdXMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQzMyUExVUywgMCwgMCB9LAorICAgeyAiczM5MCIsICJlYmxfczM5MCIsICJzMzkwIiwgNCwgRU1fUzM5MCwgMCwgMCB9LAorKyAgeyAibWlwcyIsICJlbGZfbWlwcyIsICJtaXBzIiwgNCwgRU1fTUlQUywgMCwgMCB9LAorKyAgeyAibWlwcyIsICJlbGZfbWlwc2VsIiwgIm1pcHNlbCIsIDQsIEVNX01JUFNfUlMzX0xFLCAwLCAwIH0sCisgCisgICB7ICJtMzIiLCAiZWxmX20zMiIsICJtMzIiLCAzLCBFTV9NMzIsIDAsIDAgfSwKKyAgIHsgIm02OGsiLCAiZWxmX202OGsiLCAibTY4ayIsIDQsIEVNXzY4SywgRUxGQ0xBU1MzMiwgRUxGREFUQTJNU0IgfSwKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuYmIKaW5kZXggNjMwZjJlNC4uZTJkMjRlOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuYmIKQEAgLTE2LDcgKzE2LDcgQEAKIERFUEVORFMgKz0gInRjbCIKIFJERVBFTkRTXyR7UE59ID0gInRjbCIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAogUFIgPSAicjEiCiAKQEAgLTU3LDYgKzU3LDExIEBACiAgICAgICAgICAgICAgICAgIgogRVhUUkFfT0VNQUtFX2luc3RhbGwgPSAiICdTQ1JJUFRTPScgIgogCitBTFRFUk5BVElWRV8ke1BOfSAgPSAibWtwYXNzd2QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWtwYXNzd2RdID0gIiR7YmluZGlyfS9ta3Bhc3N3ZCIKKyMgVXNlIGxvd2VyIHByaW9yaXR5IHRoYW4gYnVzeWJveCdzIG1rcGFzc3dkIChjcmVhdGVkIHdoZW4gYnVpbHQgd2l0aCBDT05GSUdfQ1JZUFRQVykKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW21rcGFzc3dkXSA9ICI0MCIKKwogRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyX25hdGl2ZX0vZXhwZWN0JHtQVn0vbGliZXhwZWN0Ki5zbyBcCiAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9leHBlY3QuaCBcCiAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9leHBlY3RfdGNsLmggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MmE5MDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0eSBmb3IgbW9kaWZ5aW5nIEdQVCBkaXNrIHBhcnRpdGlvbmluZyIKLURFU0NSSVBUSU9OID0gIkdQVCBmZGlzayBpcyBhIGRpc2sgcGFydGl0aW9uaW5nIHRvb2wgbG9vc2VseSBtb2RlbGVkIG9uIExpbnV4IGZkaXNrLCBidXQgdXNlZCBmb3IgbW9kaWZ5aW5nIEdVSUQgUGFydGl0aW9uIFRhYmxlIChHUFQpIGRpc2tzLiBUaGUgcmVsYXRlZCBGaXhQYXJ0cyB1dGlsaXR5IGZpeGVzIHNvbWUgY29tbW9uIHByb2JsZW1zIG9uIE1hc3RlciBCb290IFJlY29yZCAoTUJSKSBkaXNrcy4iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotREVQRU5EUyA9ICJ1dGlsLWxpbnV4IHBvcHQgbmN1cnNlcyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7UFZ9LyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkN2YzZDMwNmIwODMxMjNiY2M2ZjU5NDFlZmFkZTU4NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjRjOGFlZTJlZmRkYTUwMzQ2ODA0ZDdlNjIzMDQwN2Q1ZjQyYThhZTc1NGRmNzA0MDRkZDhiMmZkZmFlYWM3IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9ncHRmZGlzay9maWxlcy9ncHRmZGlzay8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvZ3B0ZmRpc2svKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfScgJ0NYWD0ke0NYWH0nIgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgY2dkaXNrICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IGdkaXNrICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IHNnZGlzayAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBmaXhwYXJ0cyAke0R9JHtzYmluZGlyfQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZkaXNrL2dwdGZkaXNrXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYxN2UzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMy5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIlV0aWxpdHkgZm9yIG1vZGlmeWluZyBHUFQgZGlzayBwYXJ0aXRpb25pbmciCitERVNDUklQVElPTiA9ICJHUFQgZmRpc2sgaXMgYSBkaXNrIHBhcnRpdGlvbmluZyB0b29sIGxvb3NlbHkgbW9kZWxlZCBvbiBMaW51eCBmZGlzaywgYnV0IHVzZWQgZm9yIG1vZGlmeWluZyBHVUlEIFBhcnRpdGlvbiBUYWJsZSAoR1BUKSBkaXNrcy4gVGhlIHJlbGF0ZWQgRml4UGFydHMgdXRpbGl0eSBmaXhlcyBzb21lIGNvbW1vbiBwcm9ibGVtcyBvbiBNYXN0ZXIgQm9vdCBSZWNvcmQgKE1CUikgZGlza3MuIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK0RFUEVORFMgPSAidXRpbC1saW51eCBwb3B0IG5jdXJzZXMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke1BWfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMDdiNjI1YTU4M2I2NmM4YzU4NDBiZTU5MjNmM2UzZmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODlmZDVhZWMzNWM0MDlkNjEwYTM2Y2I0OWM2NWI0NDIwNTg1NjVlZDg0MDQyZjc2N2JiYTYxNGI4ZmM5MWI1YyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ3B0ZmRpc2svZmlsZXMvZ3B0ZmRpc2svIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dwdGZkaXNrLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK0VYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdDWFg9JHtDWFh9JyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IGNnZGlzayAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBnZGlzayAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBzZ2Rpc2sgJHtEfSR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgZml4cGFydHMgJHtEfSR7c2JpbmRpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL2RlYmlhbi03NDIyNjIucGF0Y2gKaW5kZXggMWVmNDg1ZS4uZDMxYWM1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9kZWJpYW4tNzQyMjYyLnBhdGNoCkBAIC0xLDE5ICsxLDMwIEBACi1UaGUgYXdrIHBhdHRlcm4gd2FzIGNoZWNrZWQgKmJlZm9yZSogdGhlIFBlcmwgcGF0dGVybiwgc28gdGhlIHBlcmwKLXNjcmlwdCB3aXRoIEJFR0lOey4uLn0gd291bGQgYmUgcmVwb3J0ZWQgYXMgYXdrLCB0aGlzIHBhdGNoIGZpeGVzIGl0LgorVGhlIGF3ayBwYXR0ZXJuIHdhcyBjaGVja2VkICpiZWZvcmUqIHRoZSBQZXJsIHBhdHRlcm4sIHNvIHRoZQorcGVybCBzY3JpcHQgd2l0aCBCRUdJTnsuLi59IHdvdWxkIGJlIHJlcG9ydGVkIGFzIGF3aywgdGhpcyBwYXRjaCBmaXhlcyBpdC4KIAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZGViaWFuXQogCiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggQmllZGwgPGRlYmlhbi5heGhuQG1hbmNobWFsLmluLXVsbS5kZT4KIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCitSZWJhc2Ugb24gNS4zMQorCitTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgogLS0tCisgbWFnaWMvTWFnZGlyL2NvbW1hbmRzIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKIGRpZmYgLS1naXQgYS9tYWdpYy9NYWdkaXIvY29tbWFuZHMgYi9tYWdpYy9NYWdkaXIvY29tbWFuZHMKK2luZGV4IDFhNDZlZmQuLjI1NWMwNGIgMTAwNjQ0CiAtLS0gYS9tYWdpYy9NYWdkaXIvY29tbWFuZHMKICsrKyBiL21hZ2ljL01hZ2Rpci9jb21tYW5kcwogQEAgLTU3LDYgKzU3LDcgQEAKICAwCXN0cmluZy93dAkjIVwgL3Vzci9iaW4vYXdrCWF3ayBzY3JpcHQgdGV4dCBleGVjdXRhYmxlCiAgITptaW1lCXRleHQveC1hd2sKLSAwCXJlZ2V4LzQwOTYJPV5cXHN7MCwxMDB9QkVHSU5cXHN7MCwxMDB9W3tdCWF3ayBvciBwZXJsIHNjcmlwdCB0ZXh0CisgMAlyZWdleC80MDk2CT1eW0EtWmEtejAtOV9dezAsMTAwfUJFR0lOW0EtWmEtejAtOV9dezAsMTAwfVt7XQlhd2sgb3IgcGVybCBzY3JpcHQgdGV4dAogKyE6c3RyZW5ndGggLSAxMgogIAogICMgQVQmVCBCZWxsIExhYnMnIFBsYW4gOSBzaGVsbAogIDAJc3RyaW5nL3d0CSMhXCAvYmluL3JjCVBsYW4gOSByYyBzaGVsbCBzY3JpcHQgdGV4dCBleGVjdXRhYmxlCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTk4ZmNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKLW9uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyB0d28gY2xhdXNlIEJTRAotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT02YTczODI4NzJlZGI2OGQzM2UxYTkzOThiNmUwMzE4OCIKLQotREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCi0KLSMgQmxhY2tsaXN0IGEgYm9ndXMgdGFnIGluIHVwc3RyZWFtIGNoZWNrCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJGSUxFKD9QPHB2ZXI+KD8hNl8yMykuKykiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi03NDIyNjIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1BZGQtUC1wcm9tcHQtaW50by1Vc2FnZS1pbmZvLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNSRVYgPSAiNzk4MTQ5NTBhYWZiODFlY2Q2YTkxMGMyYThhM2I4ZWMxMmYzZTRhNiIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLXN0ZD1jOTkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pc2MvKi5tZ2MiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAotCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0jIERvbid0IHVzZSBOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCBhcyB0aGF0IGhpZGVzIGxpYm1hZ2ljIGZyb20gYW55b25lIHdobwotIyBkZXBlbmRzIG9uIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlLgotYmluZGlyX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiL2ZpbGUtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIxZjUwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzEuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCitvbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgdHdvIGNsYXVzZSBCU0QKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9NmE3MzgyODcyZWRiNjhkMzNlMWE5Mzk4YjZlMDMxODgiCisKK0RFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgorCisjIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjaworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiRklMRSg/UDxwdmVyPig/ITZfMjMpLispIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4tNzQyMjYyLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDEtQWRkLVAtcHJvbXB0LWludG8tVXNhZ2UtaW5mby5wYXRjaCBcCisgICAgICAgICIKKworU1JDUkVWID0gIjcwYzVmMTUwNjBjN2FkODExNTAxNzdkZTgzYTNlNjQ1MDBhNTRjOWYiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1zdGQ9Yzk5IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKKwkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KKyMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KK2JpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKaW5kZXggYWIzNWIwOS4uYTkwNmZlOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKQEAgLTU1LDcgKzU1LDExIEBACiAJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LwogCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQogCWNwIC1yICR7Qn0vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyBcCisJc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAogCSAgICAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9edG9wX3NyY2RpciA9IFwoLipcKS90b3Bfc3JjZGlyID0gLi8nIFwKIAkgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIC1lICdzL150b3BfYnVpbGRkaXIgPSBcKC4qXCkvdG9wX2J1aWxkZGlyID0gLi8nIFwKIAkgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Njk2NzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotcmVxdWlyZSBnY2MtY29tbW9uLmluYwotCi0jIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKLQotUFYgPSAiNS40LjAiCi0KLSNTTkFQID0gIjUtMjAxNTA0MDUiCi0KLSMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCi0KLUJJTlYgPSAiNS40LjAiCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy01LjQ6JHtGSUxFX0RJUk5BTUV9L2djYy01LjQvYmFja3BvcnQ6IgotCi1ERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiIKLU5BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIgotCi1MSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKLSIKLSNCQVNFVVJJID0gImh0dHA6Ly93d3cubmV0Z3VsbC5jb20vZ2NjL3NuYXBzaG90cy8ke1NOQVB9L2djYy0ke1NOQVB9LnRhci5iejIiCi1CQVNFVVJJID0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSSA9ICJcCi0gICAgICAgICAgICR7QkFTRVVSSX0gXAotICAgICAgICAgICAke0JBQ0tQT1JUU30gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdWNsaWJjLWNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1jOTktc25wcmludGYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1saWJnY2Mtc2psai1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWNwcC1ob25vci1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1EaXNhYmxlLXNkdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOS1leHBvcnQtQ1BQLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMxLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMi1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzUtRG9udC1saW5rLXRoZS1wbHVnaW5zLXdpdGgtbGliZ29tcC1leHBsaWNpdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzYtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM4LWZpeC1nLXN5c3Jvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0MC1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDEtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQyLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDMtbGlic3RkYy1TdXBwb3J0LW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0NC1BZGRpbmctbW11c2wtYXMtYS1tdXNsLWxpYmMtc3BlY2lmaWVyLWFuZC10aGUtbmVjZXNzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDUtU3VwcG9ydC1mb3ItYXJtLWxpbnV4LW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0Ni1HZXQtcmlkLW9mLWV2ZXItYnJva2VuLWZpeGluY2x1ZGVzLW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0Ny1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ4LXNzcF9ub25zaGFyZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0OS1EaXNhYmxlLXRoZS13ZWFrLXJlZmVyZW5jZS1sb2dpYy1pbi1ndGhyLmgtZm9yLW9zLWdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTAtcG93ZXJwYy1wYXNzLXNlY3VyZS1wbHQtdG8tdGhlLWxpbmtlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDUxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1Mi1uaW9zMi11c2UtcmV0LXdpdGgtcjMxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTMtZXhwci5jLVBSLXRhcmdldC02NTM1OC1Bdm9pZC1jbG9iYmVyaW5nLXBhcnRpYWwtYXJndS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU0LXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU1LVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU2LUVuYWJsZS1saWJjLXByb3ZpZGUtc3NwLWFuZC1nY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1Ny11bndpbmQtZml4LWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTgtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1yZWxhdGl2ZS1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTktbGliZ2NjLXVzZS1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTYxMzEucGF0Y2ggXAotIgotCi1CQUNLUE9SVFMgPSAiIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGM2MjZhYzJhODNlZjMwZGZiOTI2MGU2ZjU5YzJiMzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA4ZGY3NmRlYzJkMzRkZTY1NTgyNDlkOGFmNGNiZWUyMWVjZWRkYmNiNTgwZDY2NmY3YTVhNTgzY2EzMzAzYSIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZ2NjLSg/UDxwdmVyPjVcLlxkK1wuXGQrKS50YXIiCi0KLSNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7U05BUH0iCi1TID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgotQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgotCi0jIExhbmd1YWdlIE92ZXJyaWRlcwotRk9SVFJBTiA9ICIiCi1KQVZBID0gIiIKLQotTFRPID0gIi0tZW5hYmxlLWx0byIKLQotRVhUUkFfT0VDT05GX0JBU0UgPSAiXAotICAgICR7TFRPfSBcCi0gICAgLS1lbmFibGUtbGlic3NwIFwKLSAgICAtLWVuYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfSBcCi0gICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKLSAgICAtLXdpdGgtcHBsPW5vIFwKLSAgICAtLXdpdGgtY2xvb2c9bm8gXAotICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAotICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSIKLQotRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLWRpc2FibGUtbGliZ29tcCBcCi0gICAgLS1kaXNhYmxlLWxpYml0bSBcCi0gICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0tZGlzYWJsZS1sdG8gXAotICAgIC0tZGlzYWJsZS1wbHVnaW4gXAotICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAotICAgIC0td2l0aG91dC1pc2wgXAotICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMgXAotIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAiCi0KLUVYVFJBX09FQ09ORl9QQVRIUyA9ICJcCi0gICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCi0gICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCi0gICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZWFkOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDYwMjliYjMzODMwNWE1ZDE0MDNlZTIzNDI3ZWQ4ZDU4ZWFlMWZmNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODozNzoxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDAxLzQ2XSBnY2MtNC4zLjE6IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gY29uZmlndXJlICAgIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggYTNmNjZiYS4uMWNiYTNhOSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNzQ2NCw3ICs3NDY0LDcgQEAgZmkKLSAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCi0gdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKLSAKLS1GTEFHU19GT1JfVEFSR0VUPQotK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCi0gY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCi0gICoiIG5ld2xpYiAiKikKLSAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTg3ZGZhYi4uZDNhZGI5NSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzEwNCw3ICszMTA0LDcgQEAgZmkKLSAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCi0gdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKLSAKLS1GTEFHU19GT1JfVEFSR0VUPQotK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCi0gY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCi0gICoiIG5ld2xpYiAiKikKLSAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDItdWNsaWJjLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDItdWNsaWJjLWNvbmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkNmFlYjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAyLXVjbGliYy1jb25mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBiNjdjM2E4NDRiY2NlYzE3NjZhN2VjMTIwZTJkMThjZGNiYzVmMTE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzg6MjUgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi80Nl0gdWNsaWJjLWNvbmYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2ggfCA0ICsrKysKLSBsaWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZyAgICAgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaCBiL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotaW5kZXggNjBiMDQ5Ny4uNmRjN2VhZCAxMDA3NTUKLS0tLSBhL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotKysrIGIvY29udHJpYi9yZWdyZXNzaW9uL29ianMtZ2NjLnNoCi1AQCAtMTA2LDYgKzEwNiwxMCBAQCBpZiBbICRIX1JFQUxfVEFSR0VUID0gJEhfUkVBTF9IT1NUIC1hICRIX1JFQUxfVEFSR0VUID0gaTY4Ni1wYy1saW51eC1nbnUgXQotICB0aGVuCi0gICBtYWtlIGFsbC1nZGIgYWxsLWRlamFnbnUgYWxsLWxkIHx8IGV4aXQgMQotICAgbWFrZSBpbnN0YWxsLWdkYiBpbnN0YWxsLWRlamFnbnUgaW5zdGFsbC1sZCB8fCBleGl0IDEKLStlbGlmIFsgJEhfUkVBTF9UQVJHRVQgPSAkSF9SRUFMX0hPU1QgLWEgJEhfUkVBTF9UQVJHRVQgPSBpNjg2LXBjLWxpbnV4LXVjbGliYyBdCi0rIHRoZW4KLSsgIG1ha2UgYWxsLWdkYiBhbGwtZGVqYWdudSBhbGwtbGQgfHwgZXhpdCAxCi0rICBtYWtlIGluc3RhbGwtZ2RiIGluc3RhbGwtZGVqYWdudSBpbnN0YWxsLWxkIHx8IGV4aXQgMQotIGVsaWYgWyAkSF9SRUFMX1RBUkdFVCA9ICRIX1JFQUxfSE9TVCBdIDsgdGhlbgotICAgbWFrZSBib290c3RyYXAgfHwgZXhpdCAxCi0gICBtYWtlIGluc3RhbGwgfHwgZXhpdCAxCi1kaWZmIC0tZ2l0IGEvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcgYi9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotaW5kZXggNzQzZDk1MS4uYWU0ZWE2MCAxMDA3NTUKLS0tLSBhL2xpYmphdmEvY2xhc3NwYXRoL2x0Y29uZmlnCi0rKysgYi9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotQEAgLTYwMyw3ICs2MDMsNyBAQCBob3N0X29zPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLSAKLSAjIFRyYW5zZm9ybSBsaW51eCogdG8gKi0qLWxpbnV4LWdudSosIHRvIHN1cHBvcnQgb2xkIGNvbmZpZ3VyZSBzY3JpcHRzLgotIGNhc2UgJGhvc3Rfb3MgaW4KLS1saW51eC1nbnUqKSA7OwotK2xpbnV4LWdudSp8bGludXgtdWNsaWJjKikgOzsKLSBsaW51eCopIGhvc3Q9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoLiotLiotbGludXhcKVwoLipcKSQvXDEtZ251XDIvJ2AKLSBlc2FjCi0gCi1AQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgbGludXgtZ251b2xkbGQqIHwgbGludXgtZ251YW91dCogfCBsaW51eC1nbnVjb2ZmKikKLSAgIDs7Ci0gCi0gIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotLWxpbnV4LWdudSopCi0rbGludXgqKQotICAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgIG5lZWRfdmVyc2lvbj1ubwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQwMzI2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA5YmNiM2ExODQ4ZmYwZjg5OTAzMDFjYTA5YTI1YjE1YzJjZjkwYzZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDA6MTIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy80Nl0gZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYyB8IDUgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmggIHwgOSArKysrKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggIHwgOSArKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmNjCi1pbmRleCA2ZGE1ZjIyLi4yZjg1YzJmIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotQEAgLTI2Myw1ICsyNjMsMTAgQEAgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCi0gI2lmZGVmIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAotICNkZWZpbmUgX0dMSUJDWFhfTERCTF9DT01QQVQoZGJsLCBsZGJsKSBcCi0gICBleHRlcm4gIkMiIHZvaWQgbGRibCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGFsaWFzICgjZGJsKSkpCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsvLyBUaGlzIGlzIGJlY2F1c2UgX19jX2xvY2FsZSBpcyBvZiB0eXBlIF9fY3R5cGVfdG91cGxvd190KiB3aGljaCBpcyBzaG9ydCBvbiB1Y2xpYmMuIGZvciBnbGliYyBpdHMgaW50KgotK19HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQcywgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BzKTsKLSsjZWxzZQotIF9HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQaSwgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BpKTsKLSsjZW5kaWYKLSAjZW5kaWYgLy8gX0dMSUJDWFhfTE9OR19ET1VCTEVfQ09NUEFUCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi1pbmRleCBlZTNlZjg2Li43ZmQ1NDg1IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmgKLUBAIC00MCwxMyArNDAsMjIgQEAKLSAKLSAjaW5jbHVkZSA8Y2xvY2FsZT4KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNlbmRpZgotKwotICNkZWZpbmUgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgMAotIAotIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQotIHsKLSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rICB0eXBlZGVmIF9fY3R5cGVfdG91cGxvd190KglfX2NfbG9jYWxlOwotKyNlbHNlCi0gICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOwotKyNlbmRpZgotIAotICAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgZG91YmxlIGFuZCBsb25nIGRvdWJsZSB0byBzdHJpbmcgYW5kCi0gICAvLyByZXR1cm4gbGVuZ3RoIG9mIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLWluZGV4IGZkNTJiNzMuLjI2MjdjZjMgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ251LWxpbnV4L2N0eXBlX2Jhc2UuaAotQEAgLTMzLDYgKzMzLDExIEBACi0gCi0gLy8gSW5mb3JtYXRpb24gYXMgZ2xlYW5lZCBmcm9tIC91c3IvaW5jbHVkZS9jdHlwZS5oCi0gCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKLSB7Ci0gX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLUBAIC00MSw3ICs0NiwxMSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotICAgc3RydWN0IGN0eXBlX2Jhc2UKLSAgIHsKLSAgICAgLy8gTm9uLXN0YW5kYXJkIHR5cGVkZWZzLgotKyNpZmRlZiBfX1VDTElCQ19fCi0rICAgIHR5cGVkZWYgY29uc3QgX19jdHlwZV90b3VwbG93X3QqCV9fdG9fdHlwZTsKLSsjZWxzZQotICAgICB0eXBlZGVmIGNvbnN0IGludCogCQlfX3RvX3R5cGU7Ci0rI2VuZGlmCi0gCi0gICAgIC8vIE5COiBPZmZzZXRzIGludG8gY3R5cGU8Y2hhcj46Ol9NX3RhYmxlIGZvcmNlIGEgcGFydGljdWxhciBzaXplCi0gICAgIC8vIG9uIHRoZSBtYXNrIHR5cGUuIEJlY2F1c2Ugb2YgdGhpcywgd2UgZG9uJ3QgdXNlIGFuIGVudW0uCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NjI2NWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODYyICswLDAgQEAKLUZyb20gYmQ5ZGQ0NzJkMTYyZmM3MjUyMmY5NmY3MGY2MzkxYzdjNjNkMmJmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQxOjM5ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvNDZdIHVjbGliYy1sb2NhbGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvYWNpbmNsdWRlLm00ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNyArKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgIDYzICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCAxNjAgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8IDExNyArKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYyAgICAgICAgfCAzMDggKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyAgICAgICAgfCAgODAgKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCAzMDAgKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgICAgICAgfCAxMDAgKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxMTggKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjICAgICAgIHwgNjkyICsrKysrKysrKysrKysrKysrKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgICAgICAgIHwgMTYwICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCA0MDYgKysrKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAgNjggKysKLSBsaWJzdGRjKystdjMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NSArKysKLSBsaWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaCAgICAgICB8ICAgMiArCi0gbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIDE2IGZpbGVzIGNoYW5nZWQsIDI2ODggaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00Ci1pbmRleCA4MjZlZjg2Li43OWNjNzE2IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotKysrIGIvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotQEAgLTIwMjksNiArMjAyOSw5IEBAIEFDX0RFRlVOKFtHTElCQ1hYX0VOQUJMRV9DTE9DQUxFXSwgWwotICAgIyBEZWZhdWx0IHRvICJnZW5lcmljIi4KLSAgIGlmIHRlc3QgJGVuYWJsZV9jbG9jYWxlX2ZsYWcgPSBhdXRvOyB0aGVuCi0gICAgIGNhc2UgJHt0YXJnZXRfb3N9IGluCi0rICAgICAgKi11Y2xpYmMqKQotKyAgICAgICAgZW5hYmxlX2Nsb2NhbGVfZmxhZz11Y2xpYmMKLSsgICAgICAgIDs7Ci0gICAgICAgbGludXgqIHwgZ251KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gCWVuYWJsZV9jbG9jYWxlX2ZsYWc9Z251Ci0gCTs7Ci1AQCAtMjIxMyw2ICsyMjE2LDQwIEBAIEFDX0RFRlVOKFtHTElCQ1hYX0VOQUJMRV9DTE9DQUxFXSwgWwotICAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy90aW1lX21lbWJlcnMuY2MKLSAgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS9nZW5lcmljL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gICAgICAgOzsKLSsgICAgdWNsaWJjKQotKyAgICAgIEFDX01TR19SRVNVTFQodWNsaWJjKQotKwotKyAgICAgICMgRGVjbGFyZSBpbnRlbnRpb24gdG8gdXNlIGdldHRleHQsIGFuZCBhZGQgc3VwcG9ydCBmb3Igc3BlY2lmaWMKLSsgICAgICAjIGxhbmd1YWdlcy4KLSsgICAgICAjIEZvciBzb21lIHJlYXNvbiwgQUxMX0xJTkdVQVMgaGFzIHRvIGJlIGJlZm9yZSBBTS1HTlUtR0VUVEVYVAotKyAgICAgIEFMTF9MSU5HVUFTPSJkZSBmciIKLSsKLSsgICAgICAjIERvbid0IGNhbGwgQU0tR05VLUdFVFRFWFQgaGVyZS4gSW5zdGVhZCwgYXNzdW1lIGdsaWJjLgotKyAgICAgIEFDX0NIRUNLX1BST0coY2hlY2tfbXNnZm10LCBtc2dmbXQsIHllcywgbm8pCi0rICAgICAgaWYgdGVzdCB4IiRjaGVja19tc2dmbXQiID0geCJ5ZXMiICYmIHRlc3QgeCIkZW5hYmxlX25scyIgPSB4InllcyI7IHRoZW4KLSsgICAgICAgIFVTRV9OTFM9eWVzCi0rICAgICAgZmkKLSsgICAgICAjIEV4cG9ydCB0aGUgYnVpbGQgb2JqZWN0cy4KLSsgICAgICBmb3IgbGluZyBpbiAkQUxMX0xJTkdVQVM7IGRvIFwKLSsgICAgICAgIGdsaWJjeHhfTU9GSUxFUz0iJGdsaWJjeHhfTU9GSUxFUyAkbGluZy5tbyI7IFwKLSsgICAgICAgIGdsaWJjeHhfUE9GSUxFUz0iJGdsaWJjeHhfUE9GSUxFUyAkbGluZy5wbyI7IFwKLSsgICAgICBkb25lCi0rICAgICAgQUNfU1VCU1QoZ2xpYmN4eF9NT0ZJTEVTKQotKyAgICAgIEFDX1NVQlNUKGdsaWJjeHhfUE9GSUxFUykKLSsKLSsgICAgICBDTE9DQUxFX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKyAgICAgIENMT0NBTEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsgICAgICBDQ09ERUNWVF9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSsgICAgICBDQ09MTEFURV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKyAgICAgIENNRVNTQUdFU19IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKyAgICAgIENNRVNTQUdFU19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rICAgICAgQ01PTkVZX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsgICAgICBDTlVNRVJJQ19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsgICAgICBDVElNRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rICAgICAgOzsKLSAgIGVzYWMKLSAKLSAgICMgVGhpcyBpcyB3aGVyZSB0aGUgdGVzdHN1aXRlIGxvb2tzIGZvciBsb2NhbGUgY2F0YWxvZ3MsIHVzaW5nIHRoZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJhZTNlNGEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTAsMCArMSw2MyBAQAotKy8vIFByb3RvdHlwZXMgZm9yIEdMSUJDIHRocmVhZCBsb2NhbGUgX18tcHJlZml4ZWQgZnVuY3Rpb25zIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSsjaW5jbHVkZSA8Y2xvY2FsZT4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBjbGVhbiB0aGlzIHVwCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsKLStleHRlcm4gIkMiIF9fdHlwZW9mKG5sX2xhbmdpbmZvX2wpIF9fbmxfbGFuZ2luZm9fbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cmNvbGxfbCkgX19zdHJjb2xsX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJmdGltZV9sKSBfX3N0cmZ0aW1lX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ0b2RfbCkgX19zdHJ0b2RfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnRvZl9sKSBfX3N0cnRvZl9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RydG9sZF9sKSBfX3N0cnRvbGRfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnhmcm1fbCkgX19zdHJ4ZnJtX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihuZXdsb2NhbGUpIF9fbmV3bG9jYWxlOwotK2V4dGVybiAiQyIgX190eXBlb2YoZnJlZWxvY2FsZSkgX19mcmVlbG9jYWxlOwotK2V4dGVybiAiQyIgX190eXBlb2YoZHVwbG9jYWxlKSBfX2R1cGxvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rZXh0ZXJuICJDIiBfX3R5cGVvZihpc3djdHlwZV9sKSBfX2lzd2N0eXBlX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih0b3dsb3dlcl9sKSBfX3Rvd2xvd2VyX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih0b3d1cHBlcl9sKSBfX3Rvd3VwcGVyX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3Njb2xsX2wpIF9fd2NzY29sbF9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzZnRpbWVfbCkgX193Y3NmdGltZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzeGZybV9sKSBfX3djc3hmcm1fbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjdHlwZV9sKSBfX3djdHlwZV9sOwotKyNlbmRpZgotKwotKyNlbmRpZiAvLyBHTElCQyAyLjMgYW5kIGxhdGVyCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTA4MWRjMQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMCwwICsxLDE2MCBAQAotKy8vIFdyYXBwZXIgZm9yIHVuZGVybHlpbmcgQy1sYW5ndWFnZSBsb2NhbGl6YXRpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi44ICBTdGFuZGFyZCBsb2NhbGUgY2F0ZWdvcmllcy4KLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGNlcnJubz4gIC8vIEZvciBlcnJubwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSsjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fc3RydG9sX2woUywgRSwgQiwgTCkgICAgICBzdHJ0b2woKFMpLCAoRSksIChCKSkKLSsjZGVmaW5lIF9fc3RydG91bF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b3VsKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvbGxfbChTLCBFLCBCLCBMKSAgICAgc3RydG9sbCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b3VsbF9sKFMsIEUsIEIsIEwpICAgIHN0cnRvdWxsKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQotKyNkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKLSsjZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQotKyN3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0rI2RlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAotKyNkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBmbG9hdCYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0rCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLSsJewotKwkgIGNoYXIqIF9fc2FuaXR5OwotKwkgIGVycm5vID0gMDsKLSsJICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJICAgIF9fdiA9IF9fZjsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBkb3VibGUmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotKwkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0rCXsKLSsJICBjaGFyKiBfX3Nhbml0eTsKLSsJICBlcnJubyA9IDA7Ci0rCSAgZG91YmxlIF9fZCA9IF9fc3RydG9kX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgX192ID0gX19kOwotKwkgIGVsc2UKLSsJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGxvbmcgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSsJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSsgICAgewotKyAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotKwl7Ci0rCSAgY2hhciogX19zYW5pdHk7Ci0rCSAgZXJybm8gPSAwOwotKwkgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCSAgICBfX3YgPSBfX2xkOwotKwkgIGVsc2UKLSsJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotKwl9Ci0rICAgIH0KLSsKLSsgIHZvaWQKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2NyZWF0ZV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJICAgIF9fY19sb2NhbGUgX19vbGQpCi0rICB7Ci0rICAgIF9fY2xvYyA9IF9fbmV3bG9jYWxlKDEgPDwgTENfQUxMLCBfX3MsIF9fb2xkKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBpZiAoIV9fY2xvYykKLSsgICAgICB7Ci0rCS8vIFRoaXMgbmFtZWQgbG9jYWxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgT1MuCi0rCV9fdGhyb3dfcnVudGltZV9lcnJvcihfX04oImxvY2FsZTo6ZmFjZXQ6Ol9TX2NyZWF0ZV9jX2xvY2FsZSAiCi0rCQkJICAgICAgIm5hbWUgbm90IHZhbGlkIikpOwotKyAgICAgIH0KLSsjZW5kaWYKLSsgIH0KLSsKLSsgIHZvaWQKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Rlc3Ryb3lfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotKyAgewotKyAgICBpZiAoX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotKyAgICAgIF9fZnJlZWxvY2FsZShfX2Nsb2MpOwotKyAgfQotKwotKyAgX19jX2xvY2FsZQotKyAgbG9jYWxlOjpmYWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotKyAgeyByZXR1cm4gX19kdXBsb2NhbGUoX19jbG9jKTsgfQotK30gLy8gbmFtZXNwYWNlIHN0ZAotKwotK25hbWVzcGFjZSBfX2dudV9jeHgKLSt7Ci0rICBjb25zdCBjaGFyKiBjb25zdCBjYXRlZ29yeV9uYW1lc1s2ICsgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVNdID0KLSsgICAgewotKyAgICAgICJMQ19DVFlQRSIsCi0rICAgICAgIkxDX05VTUVSSUMiLAotKyAgICAgICJMQ19USU1FIiwKLSsgICAgICAiTENfQ09MTEFURSIsCi0rICAgICAgIkxDX01PTkVUQVJZIiwKLSsgICAgICAiTENfTUVTU0FHRVMiLAotKyNpZiBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyAhPSAwCi0rICAgICAgIkxDX1BBUEVSIiwKLSsgICAgICAiTENfTkFNRSIsCi0rICAgICAgIkxDX0FERFJFU1MiLAotKyAgICAgICJMQ19URUxFUEhPTkUiLAotKyAgICAgICJMQ19NRUFTVVJFTUVOVCIsCi0rICAgICAgIkxDX0lERU5USUZJQ0FUSU9OIgotKyNlbmRpZgotKyAgICB9OwotK30KLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IGxvY2FsZTo6X1NfY2F0ZWdvcmllcyA9IF9fZ251X2N4eDo6Y2F0ZWdvcnlfbmFtZXM7Ci0rfSAgLy8gbmFtZXNwYWNlIHN0ZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYTA3YzFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTAsMCArMSwxMTcgQEAKLSsvLyBXcmFwcGVyIGZvciB1bmRlcmx5aW5nIEMtbGFuZ3VhZ2UgbG9jYWxpemF0aW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuOCAgU3RhbmRhcmQgbG9jYWxlIGNhdGVnb3JpZXMuCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpZm5kZWYgX0NfTE9DQUxFX0gKLSsjZGVmaW5lIF9DX0xPQ0FMRV9IIDEKLSsKLSsjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0rCi0rI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzdHJsZW4KLSsjaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnNucHJpbnRmIG9yIHN0ZDo6c3ByaW50ZgotKyNpbmNsdWRlIDxjbG9jYWxlPgotKyNpbmNsdWRlIDxsYW5naW5mby5oPgkJLy8gRm9yIGNvZGVjdnQKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggdGhpcwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsjaW5jbHVkZSA8aWNvbnYuaD4JCS8vIEZvciBjb2RlY3Z0IHVzaW5nIGljb252LCBpY29udl90Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI2luY2x1ZGUgPGxpYmludGwuaD4gCQkvLyBGb3IgbWVzc2FnZXMKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB3aGF0IGlzIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSBmb3IKLSsjZW5kaWYKLSsjZGVmaW5lIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSAxCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IGNhdGVnb3JpZXMKLSsjZW5kaWYKLSsvLyAjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDYKLSsjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDAKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotK25hbWVzcGFjZSBfX2dudV9jeHgKLSt7Ci0rICBleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0rfQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgIHR5cGVkZWYgX19sb2NhbGVfdAkJX19jX2xvY2FsZTsKLSsjZWxzZQotKyAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSsjZW5kaWYKLSsKLSsgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIF9UdiB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLSsgIC8vIHN0cmluZy4gIElmIHNucHJpbnRmIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KLSsgIC8vIHRoZSB1bnNhZmUgc3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0rICAvLyBiZSBhdm9pZGVkLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgotKyAgICBpbnQKLSsgICAgX19jb252ZXJ0X2Zyb21fdihjaGFyKiBfX291dCwKLSsJCSAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAotKwkJICAgICBjb25zdCBjaGFyKiBfX2ZtdCwKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsJCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jLCBpbnQgX19wcmVjKQotKyAgICB7Ci0rICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fZ251X2N4eDo6X191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiwgaW50IF9fcHJlYykKLSsgICAgewotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rICAgICAgY2hhciogX19vbGQgPSBzdGQ6OnNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19vbGQpICsgMV07Ci0rICAgICAgc3RkOjpzdHJjcHkoX19zYXYsIF9fb2xkKTsKLSsgICAgICBzdGQ6OnNldGxvY2FsZShMQ19BTEwsICJDIik7Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotKyAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fcHJlYywgX192KTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsgICAgICBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKyAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSsjZW5kaWYKLSsgICAgICByZXR1cm4gX19yZXQ7Ci0rICAgIH0KLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NGFhOTYyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDMwOCBAQAotKy8vIHN0ZDo6Y29kZWN2dCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMS41IC0gVGVtcGxhdGUgY2xhc3MgY29kZWN2dAotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxjc3RkbGliPiAgLy8gRm9yIE1CX0NVUl9NQVgKLSsjaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIEZvciBNQl9MRU5fTUFYCi0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIFNwZWNpYWxpemF0aW9ucy4KLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIGNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fb3V0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb20sCi0rCSBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwKLSsJIGV4dGVybl90eXBlKiBfX3RvLCBleHRlcm5fdHlwZSogX190b19lbmQsCi0rCSBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QKLSsgIHsKLSsgICAgcmVzdWx0IF9fcmV0ID0gb2s7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyB3Y3NucnRvbWJzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIGZhbGwgYmFjayB0byB3Y3J0b21iIGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCi0rICAgIC8vIE5COiB3Y3NucnRvbWJzIGlzIGEgR05VIGV4dGVuc2lvbgotKyAgICBmb3IgKF9fZnJvbV9uZXh0ID0gX19mcm9tLCBfX3RvX25leHQgPSBfX3RvOwotKwkgX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fdG9fbmV4dCA8IF9fdG9fZW5kCi0rCSAmJiBfX3JldCA9PSBvazspCi0rICAgICAgewotKwljb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2NodW5rX2VuZCA9IHdtZW1jaHIoX19mcm9tX25leHQsIEwnXDAnLAotKwkJCQkJCSAgICAgIF9fZnJvbV9lbmQgLSBfX2Zyb21fbmV4dCk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19mcm9tX2VuZDsKLSsKLSsJX19mcm9tID0gX19mcm9tX25leHQ7Ci0rCWNvbnN0IHNpemVfdCBfX2NvbnYgPSB3Y3NucnRvbWJzKF9fdG9fbmV4dCwgJl9fZnJvbV9uZXh0LAotKwkJCQkJIF9fZnJvbV9jaHVua19lbmQgLSBfX2Zyb21fbmV4dCwKLSsJCQkJCSBfX3RvX2VuZCAtIF9fdG9fbmV4dCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyB3Y3J0b21iLgotKwkgICAgZm9yICg7IF9fZnJvbSA8IF9fZnJvbV9uZXh0OyArK19fZnJvbSkKLSsJICAgICAgX190b19uZXh0ICs9IHdjcnRvbWIoX190b19uZXh0LCAqX19mcm9tLCAmX190bXBfc3RhdGUpOwotKwkgICAgX19zdGF0ZSA9IF9fdG1wX3N0YXRlOwotKwkgICAgX19yZXQgPSBlcnJvcjsKLSsJICB9Ci0rCWVsc2UgaWYgKF9fZnJvbV9uZXh0ICYmIF9fZnJvbV9uZXh0IDwgX19mcm9tX2NodW5rX2VuZCkKLSsJICB7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIF9fZnJvbV9uZXh0ID0gX19mcm9tX2NodW5rX2VuZDsKLSsJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCSAgfQotKwotKwlpZiAoX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fcmV0ID09IG9rKQotKwkgIHsKLSsJICAgIGV4dGVybl90eXBlIF9fYnVmW01CX0xFTl9NQVhdOwotKwkgICAgX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkgICAgY29uc3Qgc2l6ZV90IF9fY29udiA9IHdjcnRvbWIoX19idWYsICpfX2Zyb21fbmV4dCwgJl9fdG1wX3N0YXRlKTsKLSsJICAgIGlmIChfX2NvbnYgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdG9fZW5kIC0gX190b19uZXh0KSkKLSsJICAgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQltZW1jcHkoX190b19uZXh0LCBfX2J1ZiwgX19jb252KTsKLSsJCV9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJCV9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCQkrK19fZnJvbV9uZXh0OwotKwkgICAgICB9Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9faW4oc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGV4dGVybl90eXBlKiYgX19mcm9tX25leHQsCi0rCWludGVybl90eXBlKiBfX3RvLCBpbnRlcm5fdHlwZSogX190b19lbmQsCi0rCWludGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdAotKyAgewotKyAgICByZXN1bHQgX19yZXQgPSBvazsKLSsgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rCi0rICAgIC8vIG1ic25ydG93Y3MgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6Ci0rICAgIC8vIGluIGNhc2Ugd2Ugc3RvcmUgYSBMJ1wwJyBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogbWJzbnJ0b3djcyBpcyBhIEdOVSBleHRlbnNpb24KLSsgICAgZm9yIChfX2Zyb21fbmV4dCA9IF9fZnJvbSwgX190b19uZXh0ID0gX190bzsKLSsJIF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3RvX25leHQgPCBfX3RvX2VuZAotKwkgJiYgX19yZXQgPT0gb2s7KQotKyAgICAgIHsKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQ7Ci0rCV9fZnJvbV9jaHVua19lbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBleHRlcm5fdHlwZSo+KG1lbWNocihfX2Zyb21fbmV4dCwgJ1wwJywKLSsJCQkJCQkJCSAgX19mcm9tX2VuZAotKwkJCQkJCQkJICAtIF9fZnJvbV9uZXh0KSk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19mcm9tX2VuZDsKLSsKLSsJX19mcm9tID0gX19mcm9tX25leHQ7Ci0rCXNpemVfdCBfX2NvbnYgPSBtYnNucnRvd2NzKF9fdG9fbmV4dCwgJl9fZnJvbV9uZXh0LAotKwkJCQkgICBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tX25leHQsCi0rCQkJCSAgIF9fdG9fZW5kIC0gX190b19uZXh0LCAmX19zdGF0ZSk7Ci0rCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpCi0rCSAgewotKwkgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgaW4gb3JkZXIgdG8gc3RvcCBhdCB0aGUgZXhhY3QgcGxhY2Ugd2UKLSsJICAgIC8vIGhhdmUgdG8gc3RhcnQgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nIHdpdGggYSBzZXJpZXMgb2YKLSsJICAgIC8vIG1icnRvd2MuCi0rCSAgICBmb3IgKDs7ICsrX190b19uZXh0LCBfX2Zyb20gKz0gX19jb252KQotKwkgICAgICB7Ci0rCQlfX2NvbnYgPSBtYnJ0b3djKF9fdG9fbmV4dCwgX19mcm9tLCBfX2Zyb21fZW5kIC0gX19mcm9tLAotKwkJCQkgJl9fdG1wX3N0YXRlKTsKLSsJCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkKLSsJCSAgICB8fCBfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMikpCi0rCQkgIGJyZWFrOwotKwkgICAgICB9Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbTsKLSsJICAgIF9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJICAgIF9fcmV0ID0gZXJyb3I7Ci0rCSAgfQotKwllbHNlIGlmIChfX2Zyb21fbmV4dCAmJiBfX2Zyb21fbmV4dCA8IF9fZnJvbV9jaHVua19lbmQpCi0rCSAgewotKwkgICAgLy8gSXQgaXMgdW5jbGVhciB3aGF0IHRvIHJldHVybiBpbiB0aGlzIGNhc2UgKHNlZSBEUiAzODIpLgotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbV9jaHVua19lbmQ7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgIH0KLSsKLSsJaWYgKF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3JldCA9PSBvaykKLSsJICB7Ci0rCSAgICBpZiAoX190b19uZXh0IDwgX190b19lbmQpCi0rCSAgICAgIHsKLSsJCS8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzCi0rCQlfX3RtcF9zdGF0ZSA9IF9fc3RhdGU7Ci0rCQkrK19fZnJvbV9uZXh0OwotKwkJKl9fdG9fbmV4dCsrID0gTCdcMCc7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgIH0KLSsgICAgICB9Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBpbnQKLSsgIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6Ci0rICBkb19lbmNvZGluZygpIGNvbnN0IHRocm93KCkKLSsgIHsKLSsgICAgLy8gWFhYIFRoaXMgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IHRoZSBlbmNvZGluZyBpcwotKyAgICAvLyBzdGF0ZWxlc3MgYW5kIGlzIGVpdGhlciBzaW5nbGUtYnl0ZSBvciB2YXJpYWJsZS13aWR0aC4KLSsgICAgaW50IF9fcmV0ID0gMDsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rICAgIGlmIChNQl9DVVJfTUFYID09IDEpCi0rICAgICAgX19yZXQgPSAxOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkKLSsgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rICAgIC8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzLgotKyAgICBpbnQgX19yZXQgPSBNQl9DVVJfTUFYOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fbGVuZ3RoKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCi0rCSAgICBjb25zdCBleHRlcm5fdHlwZSogX19lbmQsIHNpemVfdCBfX21heCkgY29uc3QKLSsgIHsKLSsgICAgaW50IF9fcmV0ID0gMDsKLSsgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rCi0rICAgIC8vIG1ic25ydG93Y3MgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6Ci0rICAgIC8vIGluIGNhc2Ugd2UgYWR2YW5jZSBwYXN0IGl0IGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCi0rICAgIC8vIE5COiBtYnNucnRvd2NzIGlzIGEgR05VIGV4dGVuc2lvbgotKwotKyAgICAvLyBBIGR1bW15IGludGVybmFsIGJ1ZmZlciBpcyBuZWVkZWQgaW4gb3JkZXIgZm9yIG1ic25ydG9jd3MgdG8gY29uc2lkZXIKLSsgICAgLy8gaXRzIGZvdXJ0aCBwYXJhbWV0ZXIgKGl0IHdvdWxkbid0IHdpdGggTlVMTCBhcyBmaXJzdCBwYXJhbWV0ZXIpLgotKyAgICB3Y2hhcl90KiBfX3RvID0gc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKHdjaGFyX3QpCi0rCQkJCQkJCSAgICogX19tYXgpKTsKLSsgICAgd2hpbGUgKF9fZnJvbSA8IF9fZW5kICYmIF9fbWF4KQotKyAgICAgIHsKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQ7Ci0rCV9fZnJvbV9jaHVua19lbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBleHRlcm5fdHlwZSo+KG1lbWNocihfX2Zyb20sICdcMCcsCi0rCQkJCQkJCQkgIF9fZW5kCi0rCQkJCQkJCQkgIC0gX19mcm9tKSk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19lbmQ7Ci0rCi0rCWNvbnN0IGV4dGVybl90eXBlKiBfX3RtcF9mcm9tID0gX19mcm9tOwotKwlzaXplX3QgX19jb252ID0gbWJzbnJ0b3djcyhfX3RvLCAmX19mcm9tLAotKwkJCQkgICBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tLAotKwkJCQkgICBfX21heCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyBtYnJ0b3djLgotKwkgICAgZm9yIChfX2Zyb20gPSBfX3RtcF9mcm9tOzsgX19mcm9tICs9IF9fY29udikKLSsJICAgICAgewotKwkJX19jb252ID0gbWJydG93YyhOVUxMLCBfX2Zyb20sIF9fZW5kIC0gX19mcm9tLAotKwkJCQkgJl9fdG1wX3N0YXRlKTsKLSsJCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkKLSsJCSAgICB8fCBfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMikpCi0rCQkgIGJyZWFrOwotKwkgICAgICB9Ci0rCSAgICBfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCSAgICBfX3JldCArPSBfX2Zyb20gLSBfX3RtcF9mcm9tOwotKwkgICAgYnJlYWs7Ci0rCSAgfQotKwlpZiAoIV9fZnJvbSkKLSsJICBfX2Zyb20gPSBfX2Zyb21fY2h1bmtfZW5kOwotKwotKwlfX3JldCArPSBfX2Zyb20gLSBfX3RtcF9mcm9tOwotKwlfX21heCAtPSBfX2NvbnY7Ci0rCi0rCWlmIChfX2Zyb20gPCBfX2VuZCAmJiBfX21heCkKLSsJICB7Ci0rCSAgICAvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncwotKwkgICAgX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkgICAgKytfX2Zyb207Ci0rCSAgICArK19fcmV0OwotKwkgICAgLS1fX21heDsKLSsJICB9Ci0rICAgICAgfQotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmMyNjY0YTcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsODAgQEAKLSsvLyBzdGQ6OmNvbGxhdGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjQuMS4yICBjb2xsYXRlIHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotKyNkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotKyNkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLSsjZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gVGhlc2UgYXJlIGJhc2ljYWxseSBleHRlbnNpb25zIHRvIGNoYXJfdHJhaXRzLCBhbmQgcGVyaGFwcyBzaG91bGQKLSsgIC8vIGJlIHB1dCB0aGVyZSBpbnN0ZWFkIG9mIGhlcmUuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGludAotKyAgICBjb2xsYXRlPGNoYXI+OjpfTV9jb21wYXJlKGNvbnN0IGNoYXIqIF9fb25lLCBjb25zdCBjaGFyKiBfX3R3bykgY29uc3QKLSsgICAgewotKyAgICAgIGludCBfX2NtcCA9IF9fc3RyY29sbF9sKF9fb25lLCBfX3R3bywgX01fY19sb2NhbGVfY29sbGF0ZSk7Ci0rICAgICAgcmV0dXJuIChfX2NtcCA+PiAoOCAqIHNpemVvZiAoaW50KSAtIDIpKSB8IChfX2NtcCAhPSAwKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBzaXplX3QKLSsgICAgY29sbGF0ZTxjaGFyPjo6X01fdHJhbnNmb3JtKGNoYXIqIF9fdG8sIGNvbnN0IGNoYXIqIF9fZnJvbSwKLSsJCQkJc2l6ZV90IF9fbikgY29uc3QKLSsgICAgeyByZXR1cm4gX19zdHJ4ZnJtX2woX190bywgX19mcm9tLCBfX24sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGludAotKyAgICBjb2xsYXRlPHdjaGFyX3Q+OjpfTV9jb21wYXJlKGNvbnN0IHdjaGFyX3QqIF9fb25lLAotKwkJCQkgY29uc3Qgd2NoYXJfdCogX190d28pIGNvbnN0Ci0rICAgIHsKLSsgICAgICBpbnQgX19jbXAgPSBfX3djc2NvbGxfbChfX29uZSwgX190d28sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOwotKyAgICAgIHJldHVybiAoX19jbXAgPj4gKDggKiBzaXplb2YgKGludCkgLSAyKSkgfCAoX19jbXAgIT0gMCk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgc2l6ZV90Ci0rICAgIGNvbGxhdGU8d2NoYXJfdD46Ol9NX3RyYW5zZm9ybSh3Y2hhcl90KiBfX3RvLCBjb25zdCB3Y2hhcl90KiBfX2Zyb20sCi0rCQkJCSAgIHNpemVfdCBfX24pIGNvbnN0Ci0rICAgIHsgcmV0dXJuIF9fd2NzeGZybV9sKF9fdG8sIF9fZnJvbSwgX19uLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzI5NGUzYQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMzAwIEBACi0rLy8gc3RkOjpjdHlwZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMS4xLjIgIGN0eXBlIHZpcnR1YWwgZnVuY3Rpb25zLgotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgIHdjdHlwZSgoUykpCi0rI2RlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICB0b3d1cHBlcigoQykpCi0rI2RlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICB0b3dsb3dlcigoQykpCi0rI2RlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICBpc3djdHlwZSgoQyksIChNKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gTkI6IFRoZSBvdGhlciBjdHlwZTxjaGFyPiBzcGVjaWFsaXphdGlvbnMgYXJlIGluIHNyYy9sb2NhbGUuY2MgYW5kCi0rICAvLyB2YXJpb3VzIC9jb25maWcvb3MvKiBmaWxlcy4KLSsgIHRlbXBsYXRlPD4KLSsgICAgY3R5cGVfYnluYW1lPGNoYXI+OjpjdHlwZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotKyAgICA6IGN0eXBlPGNoYXI+KDAsIGZhbHNlLCBfX3JlZnMpCi0rICAgIHsKLSsgICAgICBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQotKwl7Ci0rCSAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCSAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLCBfX3MpOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgdGhpcy0+X01fdG91cHBlciA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX3RvdXBwZXI7Ci0rCSAgdGhpcy0+X01fdG9sb3dlciA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX3RvbG93ZXI7Ci0rCSAgdGhpcy0+X01fdGFibGUgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV9iOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNrX3R5cGUKLSsgIGN0eXBlPHdjaGFyX3Q+OjpfTV9jb252ZXJ0X3RvX3dtYXNrKGNvbnN0IG1hc2sgX19tKSBjb25zdAotKyAgewotKyAgICBfX3dtYXNrX3R5cGUgX19yZXQ7Ci0rICAgIHN3aXRjaCAoX19tKQotKyAgICAgIHsKLSsgICAgICBjYXNlIHNwYWNlOgotKwlfX3JldCA9IF9fd2N0eXBlX2woInNwYWNlIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHByaW50OgotKwlfX3JldCA9IF9fd2N0eXBlX2woInByaW50IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGNudHJsOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImNudHJsIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHVwcGVyOgotKwlfX3JldCA9IF9fd2N0eXBlX2woInVwcGVyIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGxvd2VyOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImxvd2VyIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGFscGhhOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImFscGhhIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGRpZ2l0OgotKwlfX3JldCA9IF9fd2N0eXBlX2woImRpZ2l0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHB1bmN0OgotKwlfX3JldCA9IF9fd2N0eXBlX2woInB1bmN0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHhkaWdpdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJ4ZGlnaXQiLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgYWxudW06Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgiYWxudW0iLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgZ3JhcGg6Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgiZ3JhcGgiLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGRlZmF1bHQ6Ci0rCV9fcmV0ID0gX193bWFza190eXBlKCk7Ci0rICAgICAgfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG91cHBlcih3Y2hhcl90IF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9fdG93dXBwZXJfbChfX2MsIF9NX2NfbG9jYWxlX2N0eXBlKTsgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b3VwcGVyKHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rICAgICAgICAqX19sbyA9IF9fdG93dXBwZXJfbCgqX19sbywgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICAgICAgKytfX2xvOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG9sb3dlcih3Y2hhcl90IF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9fdG93bG93ZXJfbChfX2MsIF9NX2NfbG9jYWxlX2N0eXBlKTsgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b2xvd2VyKHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rICAgICAgICAqX19sbyA9IF9fdG93bG93ZXJfbCgqX19sbywgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICAgICAgKytfX2xvOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBib29sCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19pcyhtYXNrIF9fbSwgd2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7Ci0rICAgIC8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0rICAgIC8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKyAgICBib29sIF9fcmV0ID0gZmFsc2U7Ci0rICAgIGNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rICAgIGZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLSsgICAgICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXQotKwkgICYmIF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwl7Ci0rCSAgX19yZXQgPSB0cnVlOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19pcyhjb25zdCB3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpLCBtYXNrKiBfX3ZlYykgY29uc3QKLSsgIHsKLSsgICAgZm9yICg7IF9fbG8gPCBfX2hpOyArK19fdmVjLCArK19fbG8pCi0rICAgICAgewotKwkvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotKwkvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsJY29uc3Qgc2l6ZV90IF9fYml0bWFza3NpemUgPSAxMTsKLSsJbWFzayBfX20gPSAwOwotKwlmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rCSAgaWYgKF9faXN3Y3R5cGVfbCgqX19sbywgX01fd21hc2tbX19iaXRjdXJdLCBfTV9jX2xvY2FsZV9jdHlwZSkpCi0rCSAgICBfX20gfD0gX01fYml0W19fYml0Y3VyXTsKLSsJKl9fdmVjID0gX19tOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fc2Nhbl9pcyhtYXNrIF9fbSwgY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSkgY29uc3QKLSsgIHsKLSsgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmICF0aGlzLT5kb19pcyhfX20sICpfX2xvKSkKLSsgICAgICArK19fbG87Ci0rICAgIHJldHVybiBfX2xvOwotKyAgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3NjYW5fbm90KG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QKLSsgIHsKLSsgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmIHRoaXMtPmRvX2lzKF9fbSwgKl9fbG8pICE9IDApCi0rICAgICAgKytfX2xvOwotKyAgICByZXR1cm4gX19sbzsKLSsgIH0KLSsKLSsgIHdjaGFyX3QKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3dpZGVuKGNoYXIgX19jKSBjb25zdAotKyAgeyByZXR1cm4gX01fd2lkZW5bc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKV07IH0KLSsKLSsgIGNvbnN0IGNoYXIqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb193aWRlbihjb25zdCBjaGFyKiBfX2xvLCBjb25zdCBjaGFyKiBfX2hpLCB3Y2hhcl90KiBfX2Rlc3QpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rCSpfX2Rlc3QgPSBfTV93aWRlbltzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqX19sbyldOwotKwkrK19fbG87Ci0rCSsrX19kZXN0OwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBjaGFyCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19uYXJyb3cod2NoYXJfdCBfX3djLCBjaGFyIF9fZGZhdWx0KSBjb25zdAotKyAgewotKyAgICBpZiAoX193YyA+PSAwICYmIF9fd2MgPCAxMjggJiYgX01fbmFycm93X29rKQotKyAgICAgIHJldHVybiBfTV9uYXJyb3dbX193Y107Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgY29uc3QgaW50IF9fYyA9IHdjdG9iKF9fd2MpOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19uYXJyb3coY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSwgY2hhciBfX2RmYXVsdCwKLSsJICAgIGNoYXIqIF9fZGVzdCkgY29uc3QKLSsgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY3R5cGUpOwotKyNlbmRpZgotKyAgICBpZiAoX01fbmFycm93X29rKQotKyAgICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsJewotKwkgIGlmICgqX19sbyA+PSAwICYmICpfX2xvIDwgMTI4KQotKwkgICAgKl9fZGVzdCA9IF9NX25hcnJvd1sqX19sb107Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBjb25zdCBpbnQgX19jID0gd2N0b2IoKl9fbG8pOwotKwkgICAgICAqX19kZXN0ID0gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOwotKwkgICAgfQotKwkgICsrX19sbzsKLSsJICArK19fZGVzdDsKLSsJfQotKyAgICBlbHNlCi0rICAgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQotKwl7Ci0rCSAgY29uc3QgaW50IF9fYyA9IHdjdG9iKCpfX2xvKTsKLSsJICAqX19kZXN0ID0gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOwotKwkgICsrX19sbzsKLSsJICArK19fZGVzdDsKLSsJfQotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICB2b2lkCi0rICBjdHlwZTx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV9jdHlwZSgpCi0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgd2ludF90IF9faTsKLSsgICAgZm9yIChfX2kgPSAwOyBfX2kgPCAxMjg7ICsrX19pKQotKyAgICAgIHsKLSsJY29uc3QgaW50IF9fYyA9IHdjdG9iKF9faSk7Ci0rCWlmIChfX2MgPT0gRU9GKQotKwkgIGJyZWFrOwotKwllbHNlCi0rCSAgX01fbmFycm93W19faV0gPSBzdGF0aWNfY2FzdDxjaGFyPihfX2MpOwotKyAgICAgIH0KLSsgICAgaWYgKF9faSA9PSAxMjgpCi0rICAgICAgX01fbmFycm93X29rID0gdHJ1ZTsKLSsgICAgZWxzZQotKyAgICAgIF9NX25hcnJvd19vayA9IGZhbHNlOwotKyAgICBmb3IgKHNpemVfdCBfX2ogPSAwOwotKwkgX19qIDwgc2l6ZW9mKF9NX3dpZGVuKSAvIHNpemVvZih3aW50X3QpOyArK19faikKLSsgICAgICBfTV93aWRlbltfX2pdID0gYnRvd2MoX19qKTsKLSsKLSsgICAgZm9yIChzaXplX3QgX19rID0gMDsgX19rIDw9IDExOyArK19faykKLSsgICAgICB7Ci0rCV9NX2JpdFtfX2tdID0gc3RhdGljX2Nhc3Q8bWFzaz4oX0lTYml0KF9faykpOwotKwlfTV93bWFza1tfX2tdID0gX01fY29udmVydF90b193bWFzayhfTV9iaXRbX19rXSk7Ci0rICAgICAgfQotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgIH0KLSsjZW5kaWYgLy8gIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMzU5NGQ5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotQEAgLTAsMCArMSwxMDAgQEAKLSsvLyBzdGQ6Om1lc3NhZ2VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi43LjEuMiAgbWVzc2FnZXMgdmlydHVhbCBmdW5jdGlvbnMKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggZ2V0dGV4dCBzdHVmZgotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotK2V4dGVybiAiQyIgY2hhciAqX19kY2dldHRleHQoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpOwotKyN1bmRlZiBnZXR0ZXh0Ci0rI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBfX2RjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0rI2Vsc2UKLSsjdW5kZWYgZ2V0dGV4dAotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgKG1zZ2lkKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBTcGVjaWFsaXphdGlvbnMuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHN0cmluZwotKyAgICBtZXNzYWdlczxjaGFyPjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCBzdHJpbmcmIF9fZGZhdWx0KSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfbWVzc2FnZXMpOwotKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKSk7Ci0rICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfbWVzc2FnZXMpOwotKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7Ci0rI2Vsc2UKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGdldHRleHQoX19kZmF1bHQuY19zdHIoKSk7Ci0rICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIHRlbXBsYXRlPD4KLSsgICAgd3N0cmluZwotKyAgICBtZXNzYWdlczx3Y2hhcl90Pjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCB3c3RyaW5nJiBfX2RmYXVsdCkgY29uc3QKLSsgICAgewotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX21lc3NhZ2VzKTsKLSsgICAgICBjaGFyKiBfX21zZyA9IGdldHRleHQoX01fY29udmVydF90b19jaGFyKF9fZGZhdWx0KSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7Ci0rIyBlbHNlCi0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7Ci0rIyBlbmRpZgotKyAgICB9Ci0rI2VuZGlmCi0rfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTQyNDA3OAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTAsMCArMSwxMTggQEAKLSsvLyBzdGQ6Om1lc3NhZ2VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi43LjEuMiAgbWVzc2FnZXMgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCBwcm90b3R5cGVzIGZvciAqdGV4dGRvbWFpbiBmdW5jcwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotK2V4dGVybiAiQyIgY2hhciAqX190ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpOwotK2V4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkJCQkgIGNvbnN0IGNoYXIgKmRpcm5hbWUpOwotKyNlbHNlCi0rI3VuZGVmIF9fdGV4dGRvbWFpbgotKyN1bmRlZiBfX2JpbmR0ZXh0ZG9tYWluCi0rI2RlZmluZSBfX3RleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgX19iaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSsjZW5kaWYKLSsKLSsgIC8vIE5vbi12aXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMuCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhzaXplX3QgX19yZWZzKQotKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19nZXRfY19sb2NhbGUoKSksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKF9TX2dldF9jX25hbWUoKSkKLSsgICAgIHsgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJc2l6ZV90IF9fcmVmcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKSksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKF9fcykKLSsgICAgIHsKLSsgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0rICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgICBfTV9uYW1lX21lc3NhZ2VzID0gX190bXA7Ci0rICAgICB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIHR5cGVuYW1lIG1lc3NhZ2VzPF9DaGFyVD46OmNhdGFsb2cKLSsgICAgbWVzc2FnZXM8X0NoYXJUPjo6b3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mIF9fcywgY29uc3QgbG9jYWxlJiBfX2xvYywKLSsJCQkgICBjb25zdCBjaGFyKiBfX2RpcikgY29uc3QKLSsgICAgewotKyAgICAgIF9fYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSsgICAgICByZXR1cm4gdGhpcy0+ZG9fb3BlbihfX3MsIF9fbG9jKTsKLSsgICAgfQotKwotKyAgLy8gVmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojp+bWVzc2FnZXMoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX25hbWVfbWVzc2FnZXMgIT0gX1NfZ2V0X2NfbmFtZSgpKQotKwlkZWxldGUgW10gX01fbmFtZV9tZXNzYWdlczsKLSsgICAgICBfU19kZXN0cm95X2NfbG9jYWxlKF9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB0eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX29wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsCi0rCQkJICAgICAgY29uc3QgbG9jYWxlJikgY29uc3QKLSsgICAgewotKyAgICAgIC8vIE5vIGVycm9yIGNoZWNraW5nIGlzIGRvbmUsIGFzc3VtZSB0aGUgY2F0YWxvZyBleGlzdHMgYW5kIGNhbgotKyAgICAgIC8vIGJlIHVzZWQuCi0rICAgICAgX190ZXh0ZG9tYWluKF9fcy5jX3N0cigpKTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB2b2lkCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX2Nsb3NlKGNhdGFsb2cpIGNvbnN0Ci0rICAgIHsgfQotKwotKyAgIC8vIG1lc3NhZ2VzX2J5bmFtZQotKyAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgIG1lc3NhZ2VzX2J5bmFtZTxfQ2hhclQ+OjptZXNzYWdlc19ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotKyAgICAgOiBtZXNzYWdlczxfQ2hhclQ+KF9fcmVmcykKLSsgICAgIHsKLSsgICAgICAgaWYgKHRoaXMtPl9NX25hbWVfbWVzc2FnZXMgIT0gbG9jYWxlOjpmYWNldDo6X1NfZ2V0X2NfbmFtZSgpKQotKwkgZGVsZXRlIFtdIHRoaXMtPl9NX25hbWVfbWVzc2FnZXM7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgdGhpcy0+X01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKwotKyAgICAgICBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQotKwkgewotKwkgICB0aGlzLT5fU19kZXN0cm95X2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsJICAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX21lc3NhZ2VzLCBfX3MpOwotKwkgfQotKyAgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYTUyNzMxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTAsMCArMSw2OTIgQEAKLSsvLyBzdGQ6Om1vbmV5cHVuY3QgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjYuMy4yICBtb25leXB1bmN0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNkZWZpbmUgX0xJQkMKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyN1bmRlZiBfTElCQwotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIG9wdGltaXplIHRoaXMgZm9yIHVjbGliYwotKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotKyNlbmRpZgotKwotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBDb25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKLSsgIC8vIHNwYWNlIG5vbmUgc3ltYm9sIHNpZ24gdmFsdWUKLSsgIG1vbmV5X2Jhc2U6OnBhdHRlcm4KLSsgIG1vbmV5X2Jhc2U6Ol9TX2NvbnN0cnVjdF9wYXR0ZXJuKGNoYXIgX19wcmVjZWRlcywgY2hhciBfX3NwYWNlLCBjaGFyIF9fcG9zbikKLSsgIHsKLSsgICAgcGF0dGVybiBfX3JldDsKLSsKLSsgICAgLy8gVGhpcyBpbnNhbmVseSBjb21wbGljYXRlZCByb3V0aW5lIGF0dGVtcHRzIHRvIGNvbnN0cnVjdCBhIHZhbGlkCi0rICAgIC8vIHBhdHRlcm4gZm9yIHVzZSB3aXRoIG1vbnllcHVuY3QuIEEgY291cGxlIG9mIGludmFyaWFudHM6Ci0rCi0rICAgIC8vIGlmIChfX3ByZWNlZGVzKSBzeW1ib2wgLT4gdmFsdWUKLSsgICAgLy8gZWxzZSB2YWx1ZSAtPiBzeW1ib2wKLSsKLSsgICAgLy8gaWYgKF9fc3BhY2UpIHNwYWNlCi0rICAgIC8vIGVsc2Ugbm9uZQotKwotKyAgICAvLyBub25lID09IG5ldmVyIGZpcnN0Ci0rICAgIC8vIHNwYWNlIG5ldmVyIGZpcnN0IG9yIGxhc3QKLSsKLSsgICAgLy8gQW55IGVsZWdhbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgYXJlIHdlbGNvbWUuCi0rICAgIHN3aXRjaCAoX19wb3NuKQotKyAgICAgIHsKLSsgICAgICBjYXNlIDA6Ci0rICAgICAgY2FzZSAxOgotKwkvLyAxIFRoZSBzaWduIHByZWNlZGVzIHRoZSB2YWx1ZSBhbmQgc3ltYm9sLgotKwlfX3JldC5maWVsZFswXSA9IHNpZ247Ci0rCWlmIChfX3NwYWNlKQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gc3RhcnRzIHdpdGggc2lnbi4KLSsJICAgIGlmIChfX3ByZWNlZGVzKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gc3ltYm9sOwotKwkgICAgICB9Ci0rCSAgICBfX3JldC5maWVsZFsyXSA9IHNwYWNlOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gc3RhcnRzIHdpdGggc2lnbiBhbmQgZW5kcyB3aXRoIG5vbmUuCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAyOgotKwkvLyAyIFRoZSBzaWduIGZvbGxvd3MgdGhlIHZhbHVlIGFuZCBzeW1ib2wuCi0rCWlmIChfX3NwYWNlKQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gZWl0aGVyIGVuZHMgd2l0aCBzaWduLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCSAgICBfX3JldC5maWVsZFszXSA9IHNpZ247Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgLy8gUGF0dGVybiBlbmRzIHdpdGggc2lnbiB0aGVuIG5vbmUuCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkgICAgX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAzOgotKwkvLyAzIFRoZSBzaWduIGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBzeW1ib2wuCi0rCWlmIChfX3ByZWNlZGVzKQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gc2lnbjsKLSsJICAgIF9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHNpZ247Ci0rCQlfX3JldC5maWVsZFszXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHNpZ247Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSA0OgotKwkvLyA0IFRoZSBzaWduIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIHN5bWJvbC4KLSsJaWYgKF9fcHJlY2VkZXMpCi0rCSAgewotKwkgICAgX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHNpZ247Ci0rCSAgICBpZiAoX19zcGFjZSkKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMl0gPSBzcGFjZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gdmFsdWU7Ci0rCSAgICBpZiAoX19zcGFjZSkKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzcGFjZTsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbM10gPSBzaWduOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgICAgICB9Ci0rCSAgfQotKwlicmVhazsKLSsgICAgICBkZWZhdWx0OgotKwk7Ci0rICAgICAgfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbW9uZXlwdW5jdDxjaGFyLCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKwkJCQkJCSAgICAgY29uc3QgY2hhciopCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPGNoYXIsIHRydWU+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsKLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBtb25leV9iYXNlOjpfU19lbmQ7ICsrX19pKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNbX19pXSA9IG1vbmV5X2Jhc2U6Ol9TX2F0b21zW19faV07Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX0RFQ0lNQUxfUE9JTlQsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9USE9VU0FORFNfU0VQLAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIGlmICghX19ucG9zbikKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiKCkiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLAotKwkJCQkJCQlfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAvLyBfSW50bCA9PSB0cnVlCi0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX25sX2xhbmdpbmZvX2woX19JTlRfQ1VSUl9TWU1CT0wsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCk7Ci0rCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9GUkFDX0RJR0lUUywKLSsJCQkJCQkgICAgICBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NJR05fUE9TTiwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fcHByZWNlZGVzLCBfX3BzcGFjZSwKLSsJCQkJCQkJX19wcG9zbik7Ci0rCSAgY2hhciBfX25wcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJCQkJCQkJX19ucG9zbik7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCi0rCQkJCQkJICAgICAgY29uc3QgY2hhciopCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPGNoYXIsIGZhbHNlPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPSBtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9ERUNJTUFMX1BPSU5ULAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fVEhPVVNBTkRTX1NFUCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgIGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIGlmICghX19ucG9zbikKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiKCkiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLAotKwkJCQkJCQlfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAvLyBfSW50bCA9PSBmYWxzZQotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX19ubF9sYW5naW5mb19sKF9fQ1VSUkVOQ1lfU1lNQk9MLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19GUkFDX0RJR0lUUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkJCQkJCQlfX25wb3NuKTsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgdHJ1ZT46On5tb25leXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbW9uZXlwdW5jdDx3Y2hhcl90LCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCQkJCQkJCWNvbnN0IGNoYXIqKQotKyNlbHNlCi0rCQkJCQkJCWNvbnN0IGNoYXIqIF9fbmFtZSkKLSsjZW5kaWYKLSsgICAgewotKyAgICAgIGlmICghX01fZGF0YSkKLSsJX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8d2NoYXJfdCwgdHJ1ZT47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IEwnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IEwnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90Pihtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotKyNlbHNlCi0rCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0rCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG1vbmV0YXJ5Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbHNlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfREVDSU1BTF9QT0lOVF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX191Ll9fdzsKLSsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKyNlbmRpZgotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwotKwkgIGNvbnN0IGNoYXIqIF9fY3Bvc3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY25lZ3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY2N1cnIgPSBfX25sX2xhbmdpbmZvX2woX19JTlRfQ1VSUl9TWU1CT0wsIF9fY2xvYyk7Ci0rCi0rCSAgd2NoYXJfdCogX193Y3NfcHMgPSAwOwotKwkgIHdjaGFyX3QqIF9fd2NzX25zID0gMDsKLSsJICBjb25zdCBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NJR05fUE9TTiwgX19jbG9jKSk7Ci0rCSAgdHJ5Ci0rCSAgICB7Ci0rCSAgICAgIG1ic3RhdGVfdCBfX3N0YXRlOwotKwkgICAgICBzaXplX3QgX19sZW4gPSBzdHJsZW4oX19jcG9zc2lnbik7Ci0rCSAgICAgIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX3BzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfcHMsICZfX2Nwb3NzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX193Y3NfcHM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgICAgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKLSsKLSsJICAgICAgX19sZW4gPSBzdHJsZW4oX19jbmVnc2lnbik7Ci0rCSAgICAgIGlmICghX19ucG9zbikKLSsJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIigpIjsKLSsJICAgICAgZWxzZSBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19ucyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX25zLCAmX19jbmVnc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IF9fd2NzX25zOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIC8vIF9JbnRsID09IHRydWUuCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY2N1cnIpOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICB3Y2hhcl90KiBfX3djcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzLCAmX19jY3VyciwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX3djczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgICAgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgICAgfQotKwkgIGNhdGNoICguLi4pCi0rCSAgICB7Ci0rCSAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKwkgICAgICBfTV9kYXRhID0gMDsKLSsJICAgICAgZGVsZXRlIF9fd2NzX3BzOwotKwkgICAgICBkZWxldGUgX193Y3NfbnM7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rCSAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwkgICAgfQotKwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfRlJBQ19ESUdJVFMsCi0rCQkJCQkJICAgICAgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCi0rCQkJCQkJCV9fbnBvc24pOwotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKwkgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgIHZvaWQKLSsgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJCQkJCQkgICAgICAgY29uc3QgY2hhciopCi0rI2Vsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogX19uYW1lKQotKyNlbmRpZgotKyAgewotKyAgICBpZiAoIV9NX2RhdGEpCi0rICAgICAgX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8d2NoYXJfdCwgZmFsc2U+OwotKwotKyAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gTCcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gTCcsJzsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKyAgICAgICAgICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90Pihtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotKyNlbHNlCi0rCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0rCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG1vbmV0YXJ5Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbHNlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotKyAgICAgICAgICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsgICAgICAgICAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCi0rCSAgY29uc3QgY2hhciogX19jcG9zc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgY29uc3QgY2hhciogX19jbmVnc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX05FR0FUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgY29uc3QgY2hhciogX19jY3VyciA9IF9fbmxfbGFuZ2luZm9fbChfX0NVUlJFTkNZX1NZTUJPTCwgX19jbG9jKTsKLSsKLSsJICB3Y2hhcl90KiBfX3djc19wcyA9IDA7Ci0rCSAgd2NoYXJfdCogX193Y3NfbnMgPSAwOwotKwkgIGNvbnN0IGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIHRyeQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG1ic3RhdGVfdCBfX3N0YXRlOwotKyAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuOwotKyAgICAgICAgICAgICAgX19sZW4gPSBzdHJsZW4oX19jcG9zc2lnbik7Ci0rICAgICAgICAgICAgICBpZiAoX19sZW4pCi0rICAgICAgICAgICAgICAgIHsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX3BzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfcHMsICZfX2Nwb3NzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX193Y3NfcHM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY25lZ3NpZ24pOwotKwkgICAgICBpZiAoIV9fbnBvc24pCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIoKSI7Ci0rCSAgICAgIGVsc2UgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgX193Y3NfbnMgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djc19ucywgJl9fY25lZ3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX3djc19uczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAgICAgLy8gX0ludGwgPT0gdHJ1ZS4KLSsJICAgICAgX19sZW4gPSBzdHJsZW4oX19jY3Vycik7Ci0rCSAgICAgIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIHdjaGFyX3QqIF9fd2NzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3MsICZfX2NjdXJyLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fd2NzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgICAgfQotKyAgICAgICAgICBjYXRjaCAoLi4uKQotKwkgICAgewotKwkgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgICAgICAgICAgIF9NX2RhdGEgPSAwOwotKwkgICAgICBkZWxldGUgX193Y3NfcHM7Ci0rCSAgICAgIGRlbGV0ZSBfX3djc19uczsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2Vsc2UKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKwkgICAgICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgICAgICAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwkgICAgfQotKwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19GUkFDX0RJR0lUUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25wb3NuKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT46On5tb25leXB1bmN0KCkKLSsgICAgewotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduOwotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUKLSsgICAgICAgICAgJiYgd2NzY21wKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24sIEwiKCkiKSAhPSAwKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sOwotKyAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplCi0rICAgICAgICAgICYmIHdjc2NtcChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduLCBMIigpIikgIT0gMCkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbDsKLSsgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg4M2VjMWEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMTYwIEBACi0rLy8gc3RkOjpudW1wdW5jdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMy4xLjIgIG51bXB1bmN0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNkZWZpbmUgX0xJQkMKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyN1bmRlZiBfTElCQwotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotKyNlbmRpZgotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbnVtcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19udW1wdW5jdF9jYWNoZTxjaGFyPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3VzZV9ncm91cGluZyA9IGZhbHNlOwotKwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKLSsKLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX251bV9iYXNlOjpfU19vZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zX291dFtfX2ldID0gX19udW1fYmFzZTo6X1NfYXRvbXNfb3V0W19faV07Ci0rCi0rCSAgZm9yIChzaXplX3QgX19qID0gMDsgX19qIDwgX19udW1fYmFzZTo6X1NfaWVuZDsgKytfX2opCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19pbltfX2pdID0gX19udW1fYmFzZTo6X1NfYXRvbXNfaW5bX19qXTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gKihfX25sX2xhbmdpbmZvX2woREVDSU1BTF9QT0lOVCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICooX19ubF9sYW5naW5mb19sKFRIT1VTQU5EU19TRVAsCi0rCQkJCQkJCV9fY2xvYykpOwotKwotKwkgIC8vIENoZWNrIGZvciBOVUxMLCB3aGljaCBpbXBsaWVzIG5vIGdyb3VwaW5nLgotKwkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09ICdcMCcpCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKEdST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwl9Ci0rCi0rICAgICAgLy8gTkI6IFRoZXJlIGlzIG5vIHdheSB0byBleHRhY3QgdGhpcyBpbmZvIGZyb20gcG9zaXggbG9jYWxlcy4KLSsgICAgICAvLyBfTV90cnVlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChZRVNTVFIsIF9fY2xvYyk7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWUgPSAidHJ1ZSI7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWVfc2l6ZSA9IDQ7Ci0rICAgICAgLy8gX01fZmFsc2VuYW1lID0gX19ubF9sYW5naW5mb19sKE5PU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZSA9ICJmYWxzZSI7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lX3NpemUgPSA1OwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG51bXB1bmN0PGNoYXI+Ojp+bnVtcHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbnVtcHVuY3Q8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19udW1wdW5jdF9jYWNoZTx3Y2hhcl90PjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3VzZV9ncm91cGluZyA9IGZhbHNlOwotKwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBMJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBMJywnOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbnVtX2Jhc2U6Ol9TX29lbmQ7ICsrX19pKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfb3V0W19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90PihfX251bV9iYXNlOjpfU19hdG9tc19vdXRbX19pXSk7Ci0rCi0rCSAgZm9yIChzaXplX3QgX19qID0gMDsgX19qIDwgX19udW1fYmFzZTo6X1NfaWVuZDsgKytfX2opCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19pbltfX2pdID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oX19udW1fYmFzZTo6X1NfYXRvbXNfaW5bX19qXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgLy8gTkI6IEluIHRoZSBHTlUgbW9kZWwgd2NoYXJfdCBpcyBhbHdheXMgMzIgYml0IHdpZGUuCi0rCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKwotKwkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09IEwnXDAnKQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChHUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJfQotKwotKyAgICAgIC8vIE5COiBUaGVyZSBpcyBubyB3YXkgdG8gZXh0YWN0IHRoaXMgaW5mbyBmcm9tIHBvc2l4IGxvY2FsZXMuCi0rICAgICAgLy8gX01fdHJ1ZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woWUVTU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lID0gTCJ0cnVlIjsKLSsgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZV9zaXplID0gNDsKLSsgICAgICAvLyBfTV9mYWxzZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woTk9TVFIsIF9fY2xvYyk7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lID0gTCJmYWxzZSI7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lX3NpemUgPSA1OwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG51bXB1bmN0PHdjaGFyX3Q+Ojp+bnVtcHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rICNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmUwNzA3ZDcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsNDA2IEBACi0rLy8gc3RkOjp0aW1lX2dldCwgc3RkOjp0aW1lX3B1dCBpbXBsZW1lbnRhdGlvbiwgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMS4yIC0gdGltZV9nZXQgdmlydHVhbCBmdW5jdGlvbnMKLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMy4yIC0gdGltZV9wdXQgdmlydHVhbCBmdW5jdGlvbnMKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fdGltZXB1bmN0PGNoYXI+OjoKLSsgICAgX01fcHV0KGNoYXIqIF9fcywgc2l6ZV90IF9fbWF4bGVuLCBjb25zdCBjaGFyKiBfX2Zvcm1hdCwKLSsJICAgY29uc3QgdG0qIF9fdG0pIGNvbnN0Ci0rICAgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fc3RyZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSsJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rI2Vsc2UKLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0cmZ0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0rICAgICAgaWYgKF9fbGVuID09IDApCi0rCV9fc1swXSA9ICdcMCc7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDxjaGFyPjo6X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX190aW1lcHVuY3RfY2FjaGU8Y2hhcj47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbG9jYWxlKCk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSAiJW0vJWQvJXkiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9ICIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSAiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9ICIlSDolTTolUyI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSAiQU0iOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gIlBNIjsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSAiIjsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSAiU3VuZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXkyID0gIk1vbmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9ICJUdWVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gIldlZG5lc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9ICJUaHVyc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9ICJGcmlkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSAiU2F0dXJkYXkiOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX01fZGF0YS0+X01fYWRheTEgPSAiU3VuIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9ICJNb24iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gIlR1ZSI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSAiV2VkIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9ICJUaHUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gIkZyaSI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSAiU2F0IjsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSAiSmFudWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9ICJGZWJydWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMyA9ICJNYXJjaCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9ICJBcHJpbCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9ICJNYXkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSAiSnVuZSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9ICJKdWx5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gIkF1Z3VzdCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOSA9ICJTZXB0ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSAiT2N0b2JlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9ICJOb3ZlbWJlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9ICJEZWNlbWJlciI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gIkphbiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSAiRmViIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9ICJNYXIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gIkFwciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSAiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9ICJKdW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gIkp1bCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSAiQXVnIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9ICJTZXAiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gIk9jdCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSAiTm92IjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9ICJEZWMiOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChEX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRVJBX0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKFRfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChFUkFfVF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChEX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKEVSQV9EX1RfRk1ULAotKwkJCQkJCQkgICAgIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSBfX25sX2xhbmdpbmZvX2woQU1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gX19ubF9sYW5naW5mb19sKFBNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woVF9GTVRfQU1QTSwgX19jbG9jKTsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBfX25sX2xhbmdpbmZvX2woREFZXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IF9fbmxfbGFuZ2luZm9fbChEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkzID0gX19ubF9sYW5naW5mb19sKERBWV8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBfX25sX2xhbmdpbmZvX2woREFZXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk2ID0gX19ubF9sYW5naW5mb19sKERBWV82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBfX25sX2xhbmdpbmZvX2woREFZXzcsIF9fY2xvYyk7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KLSsJICBfTV9kYXRhLT5fTV9hZGF5MSA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gX19ubF9sYW5naW5mb19sKEFCREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTMgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NCA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTYgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NyA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV83LCBfX2Nsb2MpOwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IF9fbmxfbGFuZ2luZm9fbChNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAyID0gX19ubF9sYW5naW5mb19sKE1PTl8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBfX25sX2xhbmdpbmZvX2woTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9IF9fbmxfbGFuZ2luZm9fbChNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gX19ubF9sYW5naW5mb19sKE1PTl81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSBfX25sX2xhbmdpbmZvX2woTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9IF9fbmxfbGFuZ2luZm9fbChNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gX19ubF9sYW5naW5mb19sKE1PTl84LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBfX25sX2xhbmdpbmZvX2woTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTIsIF9fY2xvYyk7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBfX25sX2xhbmdpbmZvX2woQUJNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEwLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEyLCBfX2Nsb2MpOwotKwl9Ci0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDx3Y2hhcl90Pjo6Ci0rICAgIF9NX3B1dCh3Y2hhcl90KiBfX3MsIHNpemVfdCBfX21heGxlbiwgY29uc3Qgd2NoYXJfdCogX19mb3JtYXQsCi0rCSAgIGNvbnN0IHRtKiBfX3RtKSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotKwkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSsjZWxzZQotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gd2NzZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsgICAgICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KLSsgICAgICBpZiAoX19sZW4gPT0gMCkKLSsJX19zWzBdID0gTCdcMCc7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX190aW1lcHVuY3RfY2FjaGU8d2NoYXJfdD47Ci0rCi0rI3dhcm5pbmcgd2lkZSB0aW1lIHN0dWZmCi0rLy8gICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbG9jYWxlKCk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSBMIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBMIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IEwiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IEwiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2VyYV9mb3JtYXQgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSBMIkFNIjsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IEwiUE0iOwotKwkgIF9NX2RhdGEtPl9NX2FtX3BtX2Zvcm1hdCA9IEwiIjsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBMIlN1bmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IEwiTW9uZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXkzID0gTCJUdWVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gTCJXZWRuZXNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSBMIlRodXJzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk2ID0gTCJGcmlkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBMIlNhdHVyZGF5IjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gTCJTdW4iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gTCJNb24iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gTCJUdWUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gTCJXZWQiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gTCJUaHUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gTCJGcmkiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gTCJTYXQiOwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IEwiSmFudWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IEwiRmVicnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBMIk1hcmNoIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gTCJBcHJpbCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IEwiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gTCJKdW5lIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gTCJKdWx5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gTCJBdWd1c3QiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBMIlNlcHRlbWJlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IEwiT2N0b2JlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IEwiTm92ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBMIkRlY2VtYmVyIjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBtb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW4uCi0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDEgPSBMIkphbiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBMIkZlYiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBMIk1hciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDQgPSBMIkFwciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBMIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBMIkp1biI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDcgPSBMIkp1bCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBMIkF1ZyI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBMIlNlcCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSBMIk9jdCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSBMIk5vdiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBMIkRlYyI7Ci0rCX0KLSsjaWYgMAotKyAgICAgIGVsc2UKLSsJewotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0rCi0rCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgKl9fdzsgfSBfX3U7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RfVF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9EX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQU1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XUE1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XVF9GTVRfQU1QTSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBfX3UuX193OwotKwotKwkgIC8vIERheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW5kYXkuCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBfX3UuX193OwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSBfX3UuX193OwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEwID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMTIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IF9fdS5fX3c7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMTIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBfX3UuX193OwotKwl9Ci0rI2VuZGlmIC8vIDAKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iYThlODU4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLUBAIC0wLDAgKzEsNjggQEAKLSsvLyBzdGQ6OnRpbWVfZ2V0LCBzdGQ6OnRpbWVfcHV0IGltcGxlbWVudGF0aW9uLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNS4xLjIgLSB0aW1lX2dldCBmdW5jdGlvbnMKLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMy4yIC0gdGltZV9wdXQgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+OjpfX3RpbWVwdW5jdChzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX1NfZ2V0X2NfbmFtZSgpKQotKyAgICB7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KCk7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jYWNoZV90eXBlKiBfX2NhY2hlLCBzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoX19jYWNoZSksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX1NfZ2V0X2NfbmFtZSgpKQotKyAgICB7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KCk7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJICAgICBzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX19zKQotKyAgICB7Ci0rICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0rICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgX01fbmFtZV90aW1lcHVuY3QgPSBfX3RtcDsKLSsgICAgICBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46On5fX3RpbWVwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fbmFtZV90aW1lcHVuY3QgIT0gX1NfZ2V0X2NfbmFtZSgpKQotKwlkZWxldGUgW10gX01fbmFtZV90aW1lcHVuY3Q7Ci0rICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgICAgX1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyAgICB9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDhjZDRjNzYuLjIxNzAxMmUgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMTU5MTgsNiArMTU5MTgsOSBAQCBmaQotICAgIyBEZWZhdWx0IHRvICJnZW5lcmljIi4KLSAgIGlmIHRlc3QgJGVuYWJsZV9jbG9jYWxlX2ZsYWcgPSBhdXRvOyB0aGVuCi0gICAgIGNhc2UgJHt0YXJnZXRfb3N9IGluCi0rICAgICAgKi11Y2xpYmMqKQotKyAgICAgICAgZW5hYmxlX2Nsb2NhbGVfZmxhZz11Y2xpYmMKLSsgICAgICAgIDs7Ci0gICAgICAgbGludXgqIHwgZ251KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gCWVuYWJsZV9jbG9jYWxlX2ZsYWc9Z251Ci0gCTs7Ci1AQCAtMTYxOTYsNiArMTYxOTksNzggQEAgJGFzX2VjaG8gIm5ld2xpYiIgPiY2OyB9Ci0gICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS9nZW5lcmljL3RpbWVfbWVtYmVycy5jYwotICAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL2dlbmVyaWMvYysrbG9jYWxlX2ludGVybmFsLmgKLSAgICAgICA7OwotKyAgICB1Y2xpYmMpCi0rICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVjbGliYyIgPiY1Ci0rJGFzX2VjaG8gInVjbGliYyIgPiY2OyB9Ci0rCi0rICAgICAgIyBEZWNsYXJlIGludGVudGlvbiB0byB1c2UgZ2V0dGV4dCwgYW5kIGFkZCBzdXBwb3J0IGZvciBzcGVjaWZpYwotKyAgICAgICMgbGFuZ3VhZ2VzLgotKyAgICAgICMgRm9yIHNvbWUgcmVhc29uLCBBTExfTElOR1VBUyBoYXMgdG8gYmUgYmVmb3JlIEFNLUdOVS1HRVRURVhUCi0rICAgICAgQUxMX0xJTkdVQVM9ImRlIGZyIgotKwotKyAgICAgICMgRG9uJ3QgY2FsbCBBTS1HTlUtR0VUVEVYVCBoZXJlLiBJbnN0ZWFkLCBhc3N1bWUgZ2xpYmMuCi0rICAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtc2dmbXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtc2dmbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2NoZWNrX21zZ2ZtdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRjaGVja19tc2dmbXQiOyB0aGVuCi0rICBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0iJGNoZWNrX21zZ2ZtdCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0ieWVzIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10IiAmJiBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0ibm8iCi0rZmkKLStmaQotK2NoZWNrX21zZ2ZtdD0kYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQKLStpZiB0ZXN0IC1uICIkY2hlY2tfbXNnZm10IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRjaGVja19tc2dmbXQiID4mNQotKyRhc19lY2hvICIkY2hlY2tfbXNnZm10IiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLSsgICAgICBpZiB0ZXN0IHgiJGNoZWNrX21zZ2ZtdCIgPSB4InllcyIgJiYgdGVzdCB4IiRlbmFibGVfbmxzIiA9IHgieWVzIjsgdGhlbgotKyAgICAgICAgVVNFX05MUz15ZXMKLSsgICAgICBmaQotKyAgICAgICMgRXhwb3J0IHRoZSBidWlsZCBvYmplY3RzLgotKyAgICAgIGZvciBsaW5nIGluICRBTExfTElOR1VBUzsgZG8gXAotKyAgICAgICAgZ2xpYmN4eF9NT0ZJTEVTPSIkZ2xpYmN4eF9NT0ZJTEVTICRsaW5nLm1vIjsgXAotKyAgICAgICAgZ2xpYmN4eF9QT0ZJTEVTPSIkZ2xpYmN4eF9QT0ZJTEVTICRsaW5nLnBvIjsgXAotKyAgICAgIGRvbmUKLSsKLSsKLSsKLSsgICAgICBDTE9DQUxFX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKyAgICAgIENMT0NBTEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsgICAgICBDQ09ERUNWVF9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSsgICAgICBDQ09MTEFURV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKyAgICAgIENNRVNTQUdFU19IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKyAgICAgIENNRVNTQUdFU19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rICAgICAgQ01PTkVZX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsgICAgICBDTlVNRVJJQ19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsgICAgICBDVElNRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rICAgICAgOzsKLSAgIGVzYWMKLSAKLSAgICMgVGhpcyBpcyB3aGVyZSB0aGUgdGVzdHN1aXRlIGxvb2tzIGZvciBsb2NhbGUgY2F0YWxvZ3MsIHVzaW5nIHRoZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLWluZGV4IDA2YjVkNDcuLjdkM2Y4MzUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaAotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLUBAIC0xMDEsNyArMTAxLDkgQEAgdXNpbmcgc3RkOjp3bWVtY21wOwotIHVzaW5nIHN0ZDo6d21lbWNweTsKLSB1c2luZyBzdGQ6OndtZW1tb3ZlOwotIHVzaW5nIHN0ZDo6d21lbXNldDsKLSsjaWYgX0dMSUJDWFhfSEFWRV9XQ1NGVElNRQotIHVzaW5nIHN0ZDo6d2NzZnRpbWU7Ci0rI2VuZGlmCi0gCi0gI2lmIF9HTElCQ1hYX1VTRV9DOTkKLSB1c2luZyBzdGQ6Ondjc3RvbGQ7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi1pbmRleCBhYTFiMmZhLi40NWM0NjE3IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi0rKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jd2NoYXIKLUBAIC0xNzUsNyArMTc1LDkgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAgIHVzaW5nIDo6d2NzY29sbDsKLSAgIHVzaW5nIDo6d2NzY3B5OwotICAgdXNpbmcgOjp3Y3Njc3BuOwotKyNpZiBfR0xJQkNYWF9IQVZFX1dDU0ZUSU1FCi0gICB1c2luZyA6Ondjc2Z0aW1lOwotKyNlbmRpZgotICAgdXNpbmcgOjp3Y3NsZW47Ci0gICB1c2luZyA6Ondjc25jYXQ7Ci0gICB1c2luZyA6Ondjc25jbXA7Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YTg2YTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNTcgKzAsMCBAQAotRnJvbSA3MmExYTRhZjNjMTg2MjdmNTlhYTViYTFmNzUzYTg5MDExYjRlNGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDI6MzYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS80Nl0gdWNsaWJjLWxvY2FsZS1ub19feAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyAgICAgIHwgMTQgLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oICAgICAgIHwgIDEgKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MgICAgICAgIHwgIDcgLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIHwgIDcgLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjICAgICAgIHwgIDcgKy0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggICAgICAgIHwgMTggKysrKy0tLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgICAgICAgfCAgNCAtLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgICAgICAgIHwgIDMgLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjICB8ICAzIC0tCi0gMTAgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLWluZGV4IDJhZTNlNGEuLmU3NGZkZGYgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTYwLDQgKzYwLDQ5IEBAIGV4dGVybiAiQyIgX190eXBlb2Yod2NzeGZybV9sKSBfX3djc3hmcm1fbDsKLSBleHRlcm4gIkMiIF9fdHlwZW9mKHdjdHlwZV9sKSBfX3djdHlwZV9sOwotICNlbmRpZgotIAotKyMgZGVmaW5lIF9fbmxfbGFuZ2luZm9fbCBubF9sYW5naW5mb19sCi0rIyBkZWZpbmUgX19zdHJjb2xsX2wgc3RyY29sbF9sCi0rIyBkZWZpbmUgX19zdHJmdGltZV9sIHN0cmZ0aW1lX2wKLSsjIGRlZmluZSBfX3N0cnRvZF9sIHN0cnRvZF9sCi0rIyBkZWZpbmUgX19zdHJ0b2ZfbCBzdHJ0b2ZfbAotKyMgZGVmaW5lIF9fc3RydG9sZF9sIHN0cnRvbGRfbAotKyMgZGVmaW5lIF9fc3RyeGZybV9sIHN0cnhmcm1fbAotKyMgZGVmaW5lIF9fbmV3bG9jYWxlIG5ld2xvY2FsZQotKyMgZGVmaW5lIF9fZnJlZWxvY2FsZSBmcmVlbG9jYWxlCi0rIyBkZWZpbmUgX19kdXBsb2NhbGUgZHVwbG9jYWxlCi0rIyBkZWZpbmUgX191c2Vsb2NhbGUgdXNlbG9jYWxlCi0rCi0rIyBpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyMgIGRlZmluZSBfX2lzd2N0eXBlX2wgaXN3Y3R5cGVfbAotKyMgIGRlZmluZSBfX3Rvd2xvd2VyX2wgdG93bG93ZXJfbAotKyMgIGRlZmluZSBfX3Rvd3VwcGVyX2wgdG93dXBwZXJfbAotKyMgIGRlZmluZSBfX3djc2NvbGxfbCB3Y3Njb2xsX2wKLSsjICBkZWZpbmUgX193Y3NmdGltZV9sIHdjc2Z0aW1lX2wKLSsjICBkZWZpbmUgX193Y3N4ZnJtX2wgd2NzeGZybV9sCi0rIyAgZGVmaW5lIF9fd2N0eXBlX2wgd2N0eXBlX2wKLSsjIGVuZGlmCi0rCi0rI2Vsc2UKLSsjIGRlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyMgZGVmaW5lIF9fc3RyY29sbF9sKFMxLCBTMiwgTCkgICAgICBzdHJjb2xsKChTMSksIChTMikpCi0rIyBkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKLSsjIGRlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQotKyMgZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQotKyMgZGVmaW5lIF9fc3RyeGZybV9sKFMxLCBTMiwgTiwgTCkgICBzdHJ4ZnJtKChTMSksIChTMiksIChOKSkKLSsjIHdhcm5pbmcgc2hvdWxkIGR1bW15IF9fbmV3bG9jYWxlIGNoZWNrIGZvciBDfFBPU0lYID8KLSsjIGRlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAotKyMgZGVmaW5lIF9fZnJlZWxvY2FsZShhKSAgICAgICAgICAgICAoKHZvaWQpMCkKLSsjIGRlZmluZSBfX2R1cGxvY2FsZShhKSAgICAgICAgICAgICAgX19jX2xvY2FsZSgpCi0rLy8jIGRlZmluZSBfX3VzZWxvY2FsZSA/Ci0rLy8KLSsjIGlmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rIyAgZGVmaW5lIF9faXN3Y3R5cGVfbChDLCBNLCBMKSAgICAgICBpc3djdHlwZSgoQyksIChNKSkKLSsjICBkZWZpbmUgX190b3dsb3dlcl9sKEMsIEwpICAgICAgICAgIHRvd2xvd2VyKChDKSkKLSsjICBkZWZpbmUgX190b3d1cHBlcl9sKEMsIEwpICAgICAgICAgIHRvd3VwcGVyKChDKSkKLSsjICBkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLSsvLyMgIGRlZmluZSBfX3djc2Z0aW1lX2woUywgTSwgRiwgVCwgTCkgIHdjc2Z0aW1lKChTKSwgKE0pLCAoRiksIChUKSkKLSsjICBkZWZpbmUgX193Y3N4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHdjc3hmcm0oKFMxKSwgKFMyKSwgKE4pKQotKyMgIGRlZmluZSBfX3djdHlwZV9sKFMsIEwpICAgICAgICAgICAgd2N0eXBlKChTKSkKLSsjIGVuZGlmCi0rCi0gI2VuZGlmIC8vIEdMSUJDIDIuMyBhbmQgbGF0ZXIKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLWluZGV4IDUwODFkYzEuLjIxNDMwZDAgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotQEAgLTM5LDIwICszOSw2IEBACi0gI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX3N0cnRvbF9sKFMsIEUsIEIsIEwpICAgICAgc3RydG9sKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvdWxfbChTLCBFLCBCLCBMKSAgICAgc3RydG91bCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b2xsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvbGwoKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG91bGxfbChTLCBFLCBCLCBMKSAgICBzdHJ0b3VsbCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b2ZfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZigoUyksIChFKSkKLS0jZGVmaW5lIF9fc3RydG9kX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2QoKFMpLCAoRSkpCi0tI2RlZmluZSBfX3N0cnRvbGRfbChTLCBFLCBMKSAgICAgICAgc3RydG9sZCgoUyksIChFKSkKLS0jd2FybmluZyBzaG91bGQgZHVtbXkgX19uZXdsb2NhbGUgY2hlY2sgZm9yIEN8UE9TSVggPwotLSNkZWZpbmUgX19uZXdsb2NhbGUoYSwgYiwgYykgICAgICAgIE5VTEwKLS0jZGVmaW5lIF9fZnJlZWxvY2FsZShhKSAgICAgICAgICAgICAoKHZvaWQpMCkKLS0jZGVmaW5lIF9fZHVwbG9jYWxlKGEpICAgICAgICAgICAgICBfX2NfbG9jYWxlKCkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgdGVtcGxhdGU8PgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLWluZGV4IGRhMDdjMWYuLjRiY2E1ZjEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLUBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBfX2dudV9jeHgKLSB7Ci0gICBleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0gfQotKyNkZWZpbmUgX191c2Vsb2NhbGUgdXNlbG9jYWxlCi0gI2VuZGlmCi0gCi0gbmFtZXNwYWNlIHN0ZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi1pbmRleCBjMjY2NGE3Li5lYzVjMzI5IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotQEAgLTM2LDEzICszNiw2IEBACi0gI2luY2x1ZGUgPGxvY2FsZT4KLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fc3RyY29sbF9sKFMxLCBTMiwgTCkgICAgICBzdHJjb2xsKChTMSksIChTMikpCi0tI2RlZmluZSBfX3N0cnhmcm1fbChTMSwgUzIsIE4sIEwpICAgc3RyeGZybSgoUzEpLCAoUzIpLCAoTikpCi0tI2RlZmluZSBfX3djc2NvbGxfbChTMSwgUzIsIEwpICAgICAgd2NzY29sbCgoUzEpLCAoUzIpKQotLSNkZWZpbmUgX193Y3N4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHdjc3hmcm0oKFMxKSwgKFMyKSwgKE4pKQotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzdGQKLSB7Ci0gICAvLyBUaGVzZSBhcmUgYmFzaWNhbGx5IGV4dGVuc2lvbnMgdG8gY2hhcl90cmFpdHMsIGFuZCBwZXJoYXBzIHNob3VsZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLWluZGV4IDcyOTRlM2EuLjdiMTI4NjEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLUBAIC0zOCwxMyArMzgsNiBAQAotICN1bmRlZiBfTElCQwotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX193Y3R5cGVfbChTLCBMKSAgICAgICAgICAgd2N0eXBlKChTKSkKLS0jZGVmaW5lIF9fdG93dXBwZXJfbChDLCBMKSAgICAgICAgIHRvd3VwcGVyKChDKSkKLS0jZGVmaW5lIF9fdG93bG93ZXJfbChDLCBMKSAgICAgICAgIHRvd2xvd2VyKChDKSkKLS0jZGVmaW5lIF9faXN3Y3R5cGVfbChDLCBNLCBMKSAgICAgIGlzd2N0eXBlKChDKSwgKE0pKQotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzdGQKLSB7Ci0gICAvLyBOQjogVGhlIG90aGVyIGN0eXBlPGNoYXI+IHNwZWNpYWxpemF0aW9ucyBhcmUgaW4gc3JjL2xvY2FsZS5jYyBhbmQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi1pbmRleCAxMzU5NGQ5Li5kNzY5M2I0IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi1AQCAtMzksMTMgKzM5LDEwIEBACi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgZml4IGdldHRleHQgc3R1ZmYKLSAjZW5kaWYKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLS1leHRlcm4gIkMiIGNoYXIgKl9fZGNnZXR0ZXh0KGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0tCQkJICAgICBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KTsKLSAjdW5kZWYgZ2V0dGV4dAotLSNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgX19kY2dldHRleHQoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKQotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgZGNnZXR0ZXh0KE5VTEwsIG1zZ2lkLCBMQ19NRVNTQUdFUykKLSAjZWxzZQotLSN1bmRlZiBnZXR0ZXh0Ci0gI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSAobXNnaWQpCi0gI2VuZGlmCi0gCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLWluZGV4IDE0MjQwNzguLmQ4OWRhMzMgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1AQCAtMzYsMTUgKzM2LDExIEBACi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgZml4IHByb3RvdHlwZXMgZm9yICp0ZXh0ZG9tYWluIGZ1bmNzCi0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0tZXh0ZXJuICJDIiBjaGFyICpfX3RleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSk7Ci0tZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0tCQkJCSAgY29uc3QgY2hhciAqZGlybmFtZSk7Ci0tI2Vsc2UKLS0jdW5kZWYgX190ZXh0ZG9tYWluCi0tI3VuZGVmIF9fYmluZHRleHRkb21haW4KLS0jZGVmaW5lIF9fdGV4dGRvbWFpbihEKSAgICAgICAgICAgKCh2b2lkKTApCi0tI2RlZmluZSBfX2JpbmR0ZXh0ZG9tYWluKEQsUCkgICAgICgodm9pZCkwKQotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLSsjdW5kZWYgdGV4dGRvbWFpbgotKyN1bmRlZiBiaW5kdGV4dGRvbWFpbgotKyNkZWZpbmUgdGV4dGRvbWFpbihEKSAgICAgICAgICAgKCh2b2lkKTApCi0rI2RlZmluZSBiaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSAjZW5kaWYKLSAKLSAgIC8vIE5vbi12aXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMuCi1AQCAtNzAsNyArNjYsNyBAQCBleHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSAgICAgbWVzc2FnZXM8X0NoYXJUPjo6b3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mIF9fcywgY29uc3QgbG9jYWxlJiBfX2xvYywKLSAJCQkgICBjb25zdCBjaGFyKiBfX2RpcikgY29uc3QKLSAgICAgewotLSAgICAgIF9fYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSsgICAgICBiaW5kdGV4dGRvbWFpbihfX3MuY19zdHIoKSwgX19kaXIpOwotICAgICAgIHJldHVybiB0aGlzLT5kb19vcGVuKF9fcywgX19sb2MpOwotICAgICB9Ci0gCi1AQCAtOTAsNyArODYsNyBAQCBleHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSAgICAgewotICAgICAgIC8vIE5vIGVycm9yIGNoZWNraW5nIGlzIGRvbmUsIGFzc3VtZSB0aGUgY2F0YWxvZyBleGlzdHMgYW5kIGNhbgotICAgICAgIC8vIGJlIHVzZWQuCi0tICAgICAgX190ZXh0ZG9tYWluKF9fcy5jX3N0cigpKTsKLSsgICAgICB0ZXh0ZG9tYWluKF9fcy5jX3N0cigpKTsKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLWluZGV4IGFhNTI3MzEuLjJlNmY4MGEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC00MywxMCArNDMsNiBAQAotICN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotICNlbmRpZgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzdGQKLSB7Ci0gICAvLyBDb25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotaW5kZXggODgzZWMxYS4uMmM3MDY0MiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC00MSw5ICs0MSw2IEBACi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0gI2VuZGlmCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0tI2VuZGlmCi0gCi0gbmFtZXNwYWNlIHN0ZAotIHsKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotaW5kZXggZTA3MDdkNy4uZDg0OGVkNSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC00MCw5ICs0MCw2IEBACi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0gI2VuZGlmCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0tI2VuZGlmCi0gCi0gbmFtZXNwYWNlIHN0ZAotIHsKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2RiZTY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gYjEyOTgzNDRmMGMyMjFjMzgyYTk1YWY2ODlmN2YzZWNkODY0ZjUzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ1OjU3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvNDZdIHVjbGliYy1sb2NhbGUtd2NoYXJfZml4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgfCAgNCArKy0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgfCAxMyArKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotaW5kZXggMmU2ZjgwYS4uMzFlYmI5ZiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTQwMSw3ICs0MDEsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotLSMgZWxzZQotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSAjIGVuZGlmCi1AQCAtNTU2LDcgKzU1Niw3IEBAIG5hbWVzcGFjZSBzdGQKLSAjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0tIyBlbHNlCi0rIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotICMgZW5kaWYKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotaW5kZXggMmM3MDY0Mi4uZDVjODk2MSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0xMjcsMTIgKzEyNywyNSBAQCBuYW1lc3BhY2Ugc3RkCi0gCXsKLSAJICAvLyBOYW1lZCBsb2NhbGUuCi0gCSAgLy8gTkI6IEluIHRoZSBHTlUgbW9kZWwgd2NoYXJfdCBpcyBhbHdheXMgMzIgYml0IHdpZGUuCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG51bWVyaWMKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbmRpZgotKyNlbHNlCi0gCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSAJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0gCi0gCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKyNlbmRpZgotIAotIAkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09IEwnXDAnKQotIAkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGU3NDk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0MiArMCwwIEBACi1Gcm9tIGU5ZDdjYjYyNzQxYzIyZDY2N2ZlNTZlOThkNTA3NTNkODlhZWZkYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0Njo1OCArMDQwMAotU3ViamVjdDogW1BBVENIIDA3LzQ2XSB1Y2xpYmMtbG9jYWxlLXVwZGF0ZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgIDMgKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyAgICAgIHwgNzQgKysrKysrKysrKy0tLS0tLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oICAgICAgIHwgNDIgKysrKysrLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCA1MSArKysrKysrKysrKy0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oICAgICAgICB8IDEyICsrLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8IDM0ICsrKysrKy0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8ICA1ICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCAxOCArKysrLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggICB8IDE3ICsrKy0tCi0gOSBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLWluZGV4IGU3NGZkZGYuLjk3MWE2YjQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTMxLDYgKzMxLDkgQEAKLSAKLSAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSAjaW5jbHVkZSA8Y2xvY2FsZT4KLSsjaW5jbHVkZSA8Y3N0ZGxpYj4KLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBjbGVhbiB0aGlzIHVwCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1pbmRleCAyMTQzMGQwLi4xYjlkOGUxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLUBAIC0zOSwyMyArMzksMjAgQEAKLSAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCi0rCi0gICB0ZW1wbGF0ZTw+Ci0gICAgIHZvaWQKLSAgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBmbG9hdCYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLS0JICAgIF9fdiA9IF9fZjsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwlfX3YgPSBfX2Y7Ci0rICAgICAgZWxzZQotKwlfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSAgICAgfQotIAotICAgdGVtcGxhdGU8PgotQEAgLTYzLDE2ICs2MCwxMyBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSAgICAgewotLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotLQl7Ci0tCSAgY2hhciogX19zYW5pdHk7Ci0tCSAgZXJybm8gPSAwOwotLQkgIGRvdWJsZSBfX2QgPSBfX3N0cnRvZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLS0JICAgIF9fdiA9IF9fZDsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBkb3VibGUgX19kID0gX19zdHJ0b2RfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19kOwotKyAgICAgIGVsc2UKLSsJX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPD4KLUBAIC04MCwxNiArNzQsMTMgQEAgbmFtZXNwYWNlIHN0ZAotICAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGxvbmcgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSAgICAgewotLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotLQl7Ci0tCSAgY2hhciogX19zYW5pdHk7Ci0tCSAgZXJybm8gPSAwOwotLQkgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2xkOwotLQkgIGVsc2UKLS0JICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotLQl9Ci0rICAgICAgY2hhciogX19zYW5pdHk7Ci0rICAgICAgZXJybm8gPSAwOwotKyAgICAgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19sZDsKLSsgICAgICBlbHNlCi0rCV9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotICAgICB9Ci0gCi0gICB2b2lkCi1AQCAtMTEwLDE3ICsxMDEsMTggQEAgbmFtZXNwYWNlIHN0ZAotICAgdm9pZAotICAgbG9jYWxlOjpmYWNldDo6X1NfZGVzdHJveV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICB7Ci0tICAgIGlmIChfU19nZXRfY19sb2NhbGUoKSAhPSBfX2Nsb2MpCi0rICAgIGlmIChfX2Nsb2MgJiYgX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotICAgICAgIF9fZnJlZWxvY2FsZShfX2Nsb2MpOwotICAgfQotIAotICAgX19jX2xvY2FsZQotICAgbG9jYWxlOjpmYWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotICAgeyByZXR1cm4gX19kdXBsb2NhbGUoX19jbG9jKTsgfQotLX0gLy8gbmFtZXNwYWNlIHN0ZAotIAotLW5hbWVzcGFjZSBfX2dudV9jeHgKLS17Ci0rX0dMSUJDWFhfRU5EX05BTUVTUEFDRQotKwotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShfX2dudV9jeHgpCi0rCi0gICBjb25zdCBjaGFyKiBjb25zdCBjYXRlZ29yeV9uYW1lc1s2ICsgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVNdID0KLSAgICAgewotICAgICAgICJMQ19DVFlQRSIsCi1AQCAtMTM4LDkgKzEzMCwxMSBAQCBuYW1lc3BhY2UgX19nbnVfY3h4Ci0gICAgICAgIkxDX0lERU5USUZJQ0FUSU9OIgotICNlbmRpZgotICAgICB9OwotLX0KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLSsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQotKwotICAgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IGxvY2FsZTo6X1NfY2F0ZWdvcmllcyA9IF9fZ251X2N4eDo6Y2F0ZWdvcnlfbmFtZXM7Ci0tfSAgLy8gbmFtZXNwYWNlIHN0ZAotKwotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1pbmRleCA0YmNhNWYxLi42NGE2ZDQ2IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1AQCAtMzksMjEgKzM5LDIzIEBACi0gI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotIAotICNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c3RybGVuCi0tI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzbnByaW50ZiBvciBzdGQ6OnNwcmludGYKLSsjaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnZzbnByaW50ZiBvciBzdGQ6OnZzcHJpbnRmCi0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0gI2luY2x1ZGUgPGxhbmdpbmZvLmg+CQkvLyBGb3IgY29kZWN2dAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCB0aGlzCi0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfSUNPTlYKLSAjaW5jbHVkZSA8aWNvbnYuaD4JCS8vIEZvciBjb2RlY3Z0IHVzaW5nIGljb252LCBpY29udl90Ci0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0tI2luY2x1ZGUgPGxpYmludGwuaD4gCQkvLyBGb3IgbWVzc2FnZXMKLSsjaWZkZWYgSEFWRV9MSUJJTlRMX0gKLSsjaW5jbHVkZSA8bGliaW50bC5oPgkJLy8gRm9yIG1lc3NhZ2VzCi0gI2VuZGlmCi0rI2luY2x1ZGUgPGNzdGRhcmc+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgd2hhdCBpcyBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgZm9yCi0rLy8gcHNtOiB1c2VkIGluIG9zL2dudS1saW51eC9jdHlwZV9ub25pbmxpbmUuaAotICNlbmRpZgotICNkZWZpbmUgX0dMSUJDWFhfQ19MT0NBTEVfR05VIDEKLSAKLUBAIC03OCwyMyArODAsMjUgQEAgbmFtZXNwYWNlIHN0ZAotICNlbHNlCi0gICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOwotICNlbmRpZgotLQotLSAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgX1R2IHRvIHN0cmluZyBhbmQgcmV0dXJuIGxlbmd0aCBvZgotLSAgLy8gc3RyaW5nLiAgSWYgc25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwotLSAgLy8gdGhlIHVuc2FmZSBzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKLSsgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIGRvdWJsZSB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLSsgIC8vIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCi0rICAvLyB0aGUgdW5zYWZlIHZzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKLSAgIC8vIGJlIGF2b2lkZWQuCi0tICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHY+Ci0tICAgIGludAotLSAgICBfX2NvbnZlcnRfZnJvbV92KGNoYXIqIF9fb3V0LAotLQkJICAgICBjb25zdCBpbnQgX19zaXplIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSksCi0tCQkgICAgIGNvbnN0IGNoYXIqIF9fZm10LAotLSNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXwotLQkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MsIGludCBfX3ByZWMpCi0rICAgIGlubGluZSBpbnQKLSsgICAgX19jb252ZXJ0X2Zyb21fdihjb25zdCBfX2NfbG9jYWxlJgotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsJX19jbG9jIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkKLSsjZW5kaWYKLSsJCSAgICAgLAotKwkJICAgICBjaGFyKiBfX291dCwKLSsJCSAgICAgY29uc3QgaW50IF9fc2l6ZSwKLSsJCSAgICAgY29uc3QgY2hhciogX19mbXQsIC4uLikKLSAgICAgewotKyAgICAgIHZhX2xpc3QgX19hcmdzOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXwotKwotICAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLS0JCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3ByZWMpCi0tICAgIHsKLSAjIGlmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICAgICAgIGNoYXIqIF9fb2xkID0gc3RkOjpzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fb2xkKSArIDFdOwotQEAgLTEwMyw3ICsxMDcsOSBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBlbmRpZgotICNlbmRpZgotIAotLSAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fcHJlYywgX192KTsKLSsgICAgICB2YV9zdGFydChfX2FyZ3MsIF9fZm10KTsKLSsgICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnZzbnByaW50ZihfX291dCwgX19zaXplLCBfX2ZtdCwgX19hcmdzKTsKLSsgICAgICB2YV9lbmQoX19hcmdzKTsKLSAKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSAgICAgICBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1pbmRleCA3YjEyODYxLi4xM2UwMTFkIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMzMsMTYgKzMzLDIwIEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLW5hbWVzcGFjZSBzdGQKLS17Ci0rX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKLSsKLSAgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAotICAgLy8gdmFyaW91cyAvY29uZmlnL29zLyogZmlsZXMuCi0tICB0ZW1wbGF0ZTw+Ci0gICAgIGN0eXBlX2J5bmFtZTxjaGFyPjo6Y3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSAgICAgOiBjdHlwZTxjaGFyPigwLCBmYWxzZSwgX19yZWZzKQotICAgICB7Ci1AQCAtNTcsNiArNjEsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2VuZGlmCi0gCX0KLSAgICAgfQotKyAgICBjdHlwZV9ieW5hbWU8Y2hhcj46On5jdHlwZV9ieW5hbWUoKQotKyAgICB7IH0KLSAKLSAjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSAgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNrX3R5cGUKLUBAIC0xMzgsMTcgKzE0NCwzMyBAQCBuYW1lc3BhY2Ugc3RkCi0gICBjdHlwZTx3Y2hhcl90Pjo6Ci0gICBkb19pcyhtYXNrIF9fbSwgd2NoYXJfdCBfX2MpIGNvbnN0Ci0gICB7Ci0tICAgIC8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0tICAgIC8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKyAgICAvLyBUaGUgY2FzZSBvZiBfX20gPT0gY3R5cGVfYmFzZTo6c3BhY2UgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCwKLSsgICAgLy8gZHVlIHRvIGl0cyB1c2UgaW4gbWFueSBpc3RyZWFtIGZ1bmN0aW9ucy4gIFRoZXJlZm9yZSB3ZSBkZWFsIHdpdGgKLSsgICAgLy8gaXQgZmlyc3QsIGV4cGxvaXRpbmcgdGhlIGtub3dsZWRnZSB0aGF0IG9uIEdOVSBzeXN0ZW1zIF9NX2JpdFs1XQotKyAgICAvLyBpcyB0aGUgbWFzayBjb3JyZXNwb25kaW5nIHRvIGN0eXBlX2Jhc2U6OnNwYWNlLiAgTkI6IGFuIGVuY29kaW5nCi0rICAgIC8vIGNoYW5nZSB3b3VsZCBub3QgYWZmZWN0IGNvcnJlY3RuZXNzIQotKwotICAgICBib29sIF9fcmV0ID0gZmFsc2U7Ci0tICAgIGNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0tICAgIGZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLS0gICAgICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXQotLQkgICYmIF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotLQl7Ci0tCSAgX19yZXQgPSB0cnVlOwotLQkgIGJyZWFrOwotLQl9Ci0rICAgIGlmIChfX20gPT0gX01fYml0WzVdKQotKyAgICAgIF9fcmV0ID0gX19pc3djdHlwZV9sKF9fYywgX01fd21hc2tbNV0sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgZWxzZQotKyAgICAgIHsKLSsJLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKLSsJLy8gbGlicmFyeSBmb3IgYmxhbmsuCi0rCWNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rCWZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLSsJICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXSkKLSsJICAgIHsKLSsJICAgICAgaWYgKF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwkJewotKwkJICBfX3JldCA9IHRydWU7Ci0rCQkgIGJyZWFrOwotKwkJfQotKwkgICAgICBlbHNlIGlmIChfX20gPT0gX01fYml0W19fYml0Y3VyXSkKLSsJCWJyZWFrOwotKwkgICAgfQotKyAgICAgIH0KLSsKLSAgICAgcmV0dXJuIF9fcmV0OwotICAgfQotIAotQEAgLTI5MCw0ICszMTIsNSBAQCBuYW1lc3BhY2Ugc3RkCi0gI2VuZGlmCi0gICB9Ci0gI2VuZGlmIC8vICBfR0xJQkNYWF9VU0VfV0NIQVJfVAotLX0KLSsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLWluZGV4IGQ4OWRhMzMuLjA2NzY1N2EgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1AQCAtNTMsMTIgKzUzLDE2IEBACi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0gICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zLAotIAkJCQlzaXplX3QgX19yZWZzKQotLSAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpKSwKLS0gICAgIF9NX25hbWVfbWVzc2FnZXMoX19zKQotKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhOVUxMKSwKLSsgICAgIF9NX25hbWVfbWVzc2FnZXMoTlVMTCkKLSAgICAgIHsKLS0gICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0tICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdGQ6OnN0cmxlbihfX3MpICsgMTsKLSsgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltfX2xlbl07Ci0rICAgICAgIHN0ZDo6bWVtY3B5KF9fdG1wLCBfX3MsIF9fbGVuKTsKLSAgICAgICAgX01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKwotKyAgICAgICAvLyBMYXN0IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5IGlmIG5ldyB0aHJvd3MuCi0rICAgICAgIF9NX2NfbG9jYWxlX21lc3NhZ2VzID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKLSAgICAgIH0KLSAKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1pbmRleCAzMWViYjlmLi43Njc5YjljIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1AQCAtMzMsOSArMzMsMTQgQEAKLSAKLSAvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotIAotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAjZGVmaW5lIF9MSUJDCi0gI2luY2x1ZGUgPGxvY2FsZT4KLSAjdW5kZWYgX0xJQkMKLSsjZWxzZQotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi1AQCAtMjA2LDcgKzIxMSw3IEBAIG5hbWVzcGFjZSBzdGQKLSAJICB9Ci0gCWJyZWFrOwotICAgICAgIGRlZmF1bHQ6Ci0tCTsKLSsJX19yZXQgPSBwYXR0ZXJuKCk7Ci0gICAgICAgfQotICAgICByZXR1cm4gX19yZXQ7Ci0gICB9Ci1AQCAtMzkwLDcgKzM5NSw5IEBAIG5hbWVzcGFjZSBzdGQKLSAJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSAjZWxzZQotIAkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotLQkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgIAkgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotIAkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0gI2VuZGlmCi0gCi1AQCAtNDc3LDggKzQ4NCw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgICAgICBmcmVlKF9fb2xkKTsKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCSAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotIAkgICAgfQotQEAgLTQ5OCw4ICs1MDUsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tCSAgZnJlZShfX29sZCk7Ci0rCSAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAJfQotICAgICB9Ci1AQCAtNTQ1LDggKzU1MiwxMSBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLSAJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KLS0JICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19uYW1lKTsKLSsgICAgICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOwotKyAgICAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgICAgIG1lbWNweShfX3NhdiwgX19vbGQsIF9fbGxlbik7Ci0rICAgICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0gI2VuZGlmCi0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi1AQCAtNjMzLDggKzY0Myw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgICAgICBmcmVlKF9fb2xkKTsKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gICAgICAgICAgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSAJICAgIH0KLUBAIC02NTMsOCArNjYzLDggQEAgbmFtZXNwYWNlIHN0ZAotICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgIGZyZWUoX19vbGQpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCX0KLSAgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1pbmRleCBkNWM4OTYxLi44YWU4OTY5IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotQEAgLTMzLDkgKzMzLDE0IEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1pbmRleCBkODQ4ZWQ1Li5mMjRkNTNlIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotQEAgLTUzLDExICs1MywxNCBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX19zdHJmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotIAkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSAjZWxzZQotLSAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgbWVtY3B5KF9fc2F2LCBfX29sZCwgX19sbGVuKTsKLSAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RyZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotLSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0gICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotICAgICAgIGlmIChfX2xlbiA9PSAwKQotQEAgLTIwNywxMSArMjEwLDE0IEBAIG5hbWVzcGFjZSBzdGQKLSAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCi0gCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotICNlbHNlCi0tICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOwotKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKLSsgICAgICBtZW1jcHkoX19zYXYsIF9fb2xkLCBfX2xsZW4pOwotICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKLSAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSB3Y3NmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7Ci0tICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLSAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0gICAgICAgaWYgKF9fbGVuID09IDApCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1pbmRleCBiYThlODU4Li4xNjY1ZGRlIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLUBAIC01MCwxMiArNTAsMjEgQEAKLSAgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSAJCQkJICAgICBzaXplX3QgX19yZWZzKQotICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLS0gICAgX01fbmFtZV90aW1lcHVuY3QoX19zKQotKyAgICBfTV9uYW1lX3RpbWVwdW5jdChOVUxMKQotICAgICB7Ci0tICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0tICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RkOjpzdHJsZW4oX19zKSArIDE7Ci0rICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltfX2xlbl07Ci0rICAgICAgc3RkOjptZW1jcHkoX190bXAsIF9fcywgX19sZW4pOwotICAgICAgIF9NX25hbWVfdGltZXB1bmN0ID0gX190bXA7Ci0tICAgICAgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsKLSsKLSsgICAgICB0cnkKLSsJeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOyB9Ci0rICAgICAgY2F0Y2goLi4uKQotKwl7Ci0rCSAgZGVsZXRlIFtdIF9NX25hbWVfdGltZXB1bmN0OwotKwkgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwl9Ci0rCi0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmODc5MzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gOWI3NDQyMDY5ZWI2OGE0MmQyNDM3MTgxYzFiMmU3MTBkZDA3N2U4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ4OjEwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvNDZdIG1pc3NpbmctZXhlY2luZm9faAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGJvZWhtLWdjL2luY2x1ZGUvZ2MuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaCBiL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotaW5kZXggNmIzOGYyZC4uZmNhOThmZiAxMDA2NDQKLS0tLSBhL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotKysrIGIvYm9laG0tZ2MvaW5jbHVkZS9nYy5oCi1AQCAtNTAzLDcgKzUwMyw3IEBAIEdDX0FQSSBHQ19QVFIgR0NfbWFsbG9jX2F0b21pY19pZ25vcmVfb2ZmX3BhZ2UgR0NfUFJPVE8oKHNpemVfdCBsYikpOwotICNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pCi0gIyBpbmNsdWRlIDxmZWF0dXJlcy5oPgotICMgaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxIHx8IF9fR0xJQkNfXyA+IDIpIFwKLS0gICAgICYmICFkZWZpbmVkKF9faWE2NF9fKQotKyAgICAgJiYgIWRlZmluZWQoX19pYTY0X18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCi0gIyAgIGlmbmRlZiBHQ19IQVZFX0JVSUxUSU5fQkFDS1RSQUNFCi0gIyAgICAgZGVmaW5lIEdDX0hBVkVfQlVJTFRJTl9CQUNLVFJBQ0UKLSAjICAgZW5kaWYKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMjM2YzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZmRlOTdmODBkMmQ5MzFlZDNmYTRhODYyOTQ3OTkzNjZiMjM1OTMzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ5OjAzICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvNDZdIGM5OS1zbnByaW50ZgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotaW5kZXggMzdmMDFjYS4uZjAwYzA2ZCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBzdGQKLSAgIHVzaW5nIDo6dnNwcmludGY7Ci0gfSAvLyBuYW1lc3BhY2Ugc3RkCi0gCi0tI2lmIF9HTElCQ1hYX1VTRV9DOTkKLSsjaWYgX0dMSUJDWFhfVVNFX0M5OSB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCi0gCi0gI3VuZGVmIHNucHJpbnRmCi0gI3VuZGVmIHZmc2NhbmYKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGE4ODc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi1Gcm9tIDdhOTBlNjJkNTU3Yzc4YWU1MjAwNmRmZjMwYzk5MDA2ZTEwZDkzNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDEwLzQ2XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb246IGNvZGVzb3VyY2VyeV0KLS0tLQotIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCi0gZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKwotIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKLSBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCi0gZ2NjL2luY3BhdGguYyAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKLSA3IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKLWluZGV4IDEyMThhNzEuLmJmYmExMTQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29tbW9uLm9wdAotKysrIGIvZ2NjL2NvbW1vbi5vcHQKLUBAIC02MjMsNiArNjIzLDEwIEBAIFdyZXR1cm4tbG9jYWwtYWRkcgotIENvbW1vbiBWYXIod2Fybl9yZXR1cm5fbG9jYWxfYWRkcikgSW5pdCgxKSBXYXJuaW5nCi0gV2FybiBhYm91dCByZXR1cm5pbmcgYSBwb2ludGVyL3JlZmVyZW5jZSB0byBhIGxvY2FsIG9yIHRlbXBvcmFyeSB2YXJpYWJsZS4KLSAKLStXcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0NvbW1vbiBWYXIoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKSBJbml0KDEpIFdhcm5pbmcKLStXYXJuIGZvciAtSSBhbmQgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgY3Jvc3MgY29tcGlsaW5nCi0rCi0gV3NoYWRvdwotIENvbW1vbiBWYXIod2Fybl9zaGFkb3cpIFdhcm5pbmcKLSBXYXJuIHdoZW4gb25lIGxvY2FsIHZhcmlhYmxlIHNoYWRvd3MgYW5vdGhlcgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuaW4gYi9nY2MvY29uZmlnLmluCi1pbmRleCA1MzM1MjU4Li5mMDc5ODI2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5pbgotKysrIGIvZ2NjL2NvbmZpZy5pbgotQEAgLTE2OCw2ICsxNjgsMTIgQEAKLSAjZW5kaWYKLSAKLSAKLSsvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzICovCi0rI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSsjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsjZW5kaWYKLSsKLSsKLSAvKiBEZWZpbmUgaWYgeW91IHdhbnQgYWxsIG9wZXJhdGlvbnMgb24gUlRMICh0aGUgYmFzaWMgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlCi0gICAgb3B0aW1pemVyIGFuZCBiYWNrIGVuZCkgdG8gYmUgY2hlY2tlZCBmb3IgZHluYW1pYyB0eXBlIHNhZmV0eSBhdCBydW50aW1lLgotICAgIFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlLiAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCAzYzkyNzk1Li4zNDM3MWEzIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTkzMyw2ICs5MzMsNyBAQCB3aXRoX3N5c3RlbV96bGliCi0gZW5hYmxlX21haW50YWluZXJfbW9kZQotIGVuYWJsZV9saW5rX211dGV4Ci0gZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCi0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfcGx1Z2luCi0gZW5hYmxlX2hvc3Rfc2hhcmVkCi0gZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKLUBAIC0xNjcwLDYgKzE2NzEsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKLSAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKLSsgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0Ci0gICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcwotICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKLUBAIC0yODIxMSw2ICsyODIxNCwxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gZmkKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotK2Vsc2UKLSsgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCi0rZmkKLSsKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSAKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZDQxNDA4MS4uMjQwZDMyMiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01NjU0LDYgKzU2NTQsMTYgQEAgQUNfQVJHX0VOQUJMRSh2ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicywKLSAgICAgICAgICAgICAgICAgW3NwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeV0pXSkKLSAKLStBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSksLAotKyAgICAgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAotKyAgICAgICAgICAgWzFdLAotKyAgICAgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKQotK2ZpCi0rCi0gIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gQUNfU1VCU1Qoc3ViZGlycykKLSBBQ19TVUJTVChzcmNkaXIpCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IGQzYmU1ODkuLmM4MWI1NWIgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMjY5LDYgKzI2OSw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtV292ZXJsZW5ndGgtc3RyaW5ncyAgLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAgLVdwYWRkZWQgQGdvbAotIC1XcGFyZW50aGVzZXMgIC1XcGVkYW50aWMtbXMtZm9ybWF0IC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0IEBnb2wKLSAtV3BvaW50ZXItYXJpdGggIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCi0rLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKLSAtV3JlZHVuZGFudC1kZWNscyAgLVduby1yZXR1cm4tbG9jYWwtYWRkciBAZ29sCi0gLVdyZXR1cm4tdHlwZSAgLVdzZXF1ZW5jZS1wb2ludCAgLVdzaGFkb3cgIC1Xbm8tc2hhZG93LWl2YXIgQGdvbAotIC1Xc2hpZnQtY291bnQtbmVnYXRpdmUgLVdzaGlmdC1jb3VudC1vdmVyZmxvdyBAZ29sCi1AQCAtNDQzMyw2ICs0NDM0LDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKLSBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKLSBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCi0gCi0rQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KLStkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCi0rb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKLStkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAotK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLSBAaXRlbSAtV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBkOTU2YzM2Li42NzViY2MxIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC04MzUsNiArODM1LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAotICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKLSAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JVN9fSAiIFZUQUJMRV9WRVJJRklDQVRJT05fU1BFQyAiIFwKLSsgICAgJXtXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9XAotKyAgICAle1dlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc31cCi0gICAgICV7c3RhdGljOn0gJXtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgU0FOSVRJWkVSX0VBUkxZX1NQRUMgIiAlb1wKLSAgICAgIiBDSEtQX1NQRUMgIiBcCi0gICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHxmdHJlZS1wYXJhbGxlbGl6ZS1sb29wcz0qOiU6aW5jbHVkZShsaWJnb21wLnNwZWMpJShsaW5rX2dvbXApfVwKLWRpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYwotaW5kZXggNmM1NGNhNi4uY2MwYzkyMSAxMDA2NDQKLS0tLSBhL2djYy9pbmNwYXRoLmMKLSsrKyBiL2djYy9pbmNwYXRoLmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgImludGwuaCIKLSAjaW5jbHVkZSAiaW5jcGF0aC5oIgotICNpbmNsdWRlICJjcHBkZWZhdWx0LmgiCi0rI2luY2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIgotIAotIC8qIE1pY3Jvc29mdCBXaW5kb3dzIGRvZXMgbm90IG5hdGl2ZWx5IHN1cHBvcnQgaW5vZGVzLgotICAgIFZNUyBoYXMgbm9uLW51bWVyaWMgaW5vZGVzLiAgKi8KLUBAIC0zODMsNiArMzg0LDI0IEBAIG1lcmdlX2luY2x1ZGVfY2hhaW5zIChjb25zdCBjaGFyICpzeXNyb290LCBjcHBfcmVhZGVyICpwZmlsZSwgaW50IHZlcmJvc2UpCi0gCX0KLSAgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIkVuZCBvZiBzZWFyY2ggbGlzdC5cbiIpKTsKLSAgICAgfQotKwotKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKyAgaWYgKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKLSsgICAgewotKyAgICAgICBzdHJ1Y3QgY3BwX2RpciAqcDsKLSsKLSsgICAgICAgZm9yIChwID0gaGVhZHNbUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKLSsgICAgICAgICB7Ci0rICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQotKyAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKLSsgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0rICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKLSsgICAgICAgICAgICAgICAgICAgICBwLT5uYW1lKTsKLSsgICAgICAgICB9Ci0rICAgIH0KLSsjZW5kaWYKLSB9Ci0gCi0gLyogVXNlIGdpdmVuIC1JIHBhdGhzIGZvciAjaW5jbHVkZSAiLi4uIiBidXQgbm90ICNpbmNsdWRlIDwuLi4+LCBhbmQKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMWU2OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gZGI0MDYwNTRkZTZiMDk2N2NkNzZjYmI5OThmMDViMGM1YWYwYmQ5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjAwOjM0ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvNDZdIGdjYy1wb2lzb24tZGlyLWV4dGVuZAotCi1BZGQgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKLXplY2tlLW5vLWhvc3QtaW5jbHVkZXMucGF0Y2ggcGF0Y2guICBUaGUgb3JpZ2luYWwgcGF0Y2ggY2hlY2tlZCBmb3IKLS91c3IvaW5jbHVkZSwgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBhbmQgdGhlbiB0cmlnZ2VyZWQgYSBmYWlsdXJlIGFuZAotYWJvcnRlZC4KLQotSW5zdGVhZCwgd2UgYWRkIHRoZSB0d28gbWlzc2luZyBpdGVtcyB0byB0aGUgY3VycmVudCBzY2FuLiAgSWYgdGhlIHVzZXIKLXdhbnRzIHRoaXMgdG8gYmUgYSBmYWlsdXJlLCB0aGV5IGNhbiBhZGQgIi1XZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2luY3BhdGguYyB8IDQgKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCi1pbmRleCBjYzBjOTIxLi4wYmMxZjY3IDEwMDY0NAotLS0tIGEvZ2NjL2luY3BhdGguYwotKysrIGIvZ2NjL2luY3BhdGguYwotQEAgLTM5NCw3ICszOTQsOSBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKLSAgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKLS0gICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvc3cvaW5jbHVkZSIsIDExKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9vcHQvaW5jbHVkZSIsIDEyKSkpCi0gICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAotICAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MGJiYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSAyNzhkMjkzYzRjZWU5NDgyYTIzYWEzNDQzNzQxODYxZmYyZjY3MjEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMi80Nl0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCi0KLUJlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCi0KLVRoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KLQotT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgotCi0tIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCi0KLS0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcwotCi1JIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KLQotQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/Ci0KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMWNiYTNhOS4uOWNhZThkYSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNjczMyw2ICs2NzMzLDM4IEBAIGZpCi0gCi0gCi0gCi0rIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKLSsjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUwotKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCi0rIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKLSsjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKLSsjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgotK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKLSsgIGVzYWMKLSsgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotK2ZpCi0rCi0rCi0raWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KLSsgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLU8yICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCi0rICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLSAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKLSAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgotIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YWFmNGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSBiZGRlNGY1ZWZhM2M4OWFjN2VlMGJjMDVmMzIyZjI3ZTNkYWJlYWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy80Nl0gNjQtYml0IG11bHRpbGliIGhhY2suCi0KLUdDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5Ci1sYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCi1jb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgotCi1UaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYwotYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50Ci1kaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKLWtub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKLXBlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCi0KLVRoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Ci10aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKLWFuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCi1kb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCi1hbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KLQotUlAgMTUvOC8xMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRWx2aXMgRG93c29uIDxlbHZpcy5kb3dzb25AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICB8ICA2ICsrLS0tLQotIGdjYy9jb25maWcvbWlwcy90LWxpbnV4NjQgICB8IDEwICsrKy0tLS0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgfCAgNSArKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1pbmRleCBmNmRiYjc4Li5kNzcwZGE1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotQEAgLTMyLDcgKzMyLDUgQEAKLSAjCi0gY29tbWE9LAotIE1VTFRJTElCX09QVElPTlMgICAgPSAkKHN1YnN0ICQoY29tbWEpLC8sJChUTV9NVUxUSUxJQl9DT05GSUcpKQotLU1VTFRJTElCX0RJUk5BTUVTICAgPSAkKHBhdHN1YnN0IG0lLCAlLCAkKHN1YnN0IC8sICwkKE1VTFRJTElCX09QVElPTlMpKSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOmkzODYtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBteDMyPS4uL2xpYngzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnV4MzIpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotaW5kZXggN2U5NjQwNi4uYjcyZGNiMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLUBAIC0xNywxMCArMTcsNiBAQAotICMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIAotIE1VTFRJTElCX09QVElPTlMgPSBtYWJpPW4zMi9tYWJpPTMyL21hYmk9NjQKLS1NVUxUSUxJQl9ESVJOQU1FUyA9IG4zMiAzMiA2NAotLU1JUFNfRUwgPSAkKGlmICQoZmlsdGVyICVlbCwgJChmaXJzdHdvcmQgJChzdWJzdCAtLCAsJCh0YXJnZXQpKSkpLGVsKQotLU1JUFNfU09GVCA9ICQoaWYgJChzdHJpcCAkKGZpbHRlciBNQVNLX1NPRlRfRkxPQVRfQUJJLCAkKHRhcmdldF9jcHVfZGVmYXVsdCkpICQoZmlsdGVyIHNvZnQsICQod2l0aF9mbG9hdCkpKSxzb2Z0KQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBcCi0tCS4uL2xpYjMyJChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmluMzIkKE1JUFNfU09GVCkpIFwKLS0JLi4vbGliJChjYWxsIGlmX211bHRpYXJjaCw6bWlwcyQoTUlQU19FTCktbGludXgtZ251JChNSVBTX1NPRlQpKSBcCi0tCS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmk2NCQoTUlQU19TT0ZUKSkKLStNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLiAuCi0rTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi0rCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci1pbmRleCBiNmIzNTFkLi4xZDViMzdhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLUBAIC0yNiwxMCArMjYsOSBAQAotICMgTVVMVElMSUJfT1NESVJOQU1FUyBhY2NvcmRpbmcgdG8gd2hhdCBpcyBmb3VuZCBvbiB0aGUgdGFyZ2V0LgotIAotIE1VTFRJTElCX09QVElPTlMgICAgOj0gbTY0L20zMgotLU1VTFRJTElCX0RJUk5BTUVTICAgOj0gNjQgMzIKLStNVUxUSUxJQl9ESVJOQU1FUyAgIDo9IC4gLgotIE1VTFRJTElCX0VYVFJBX09QVFMgOj0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyA6PSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGMtbGludXgtZ251KQotK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSAKLSByczYwMDAtbGludXgubzogJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2MDAwLWxpbnV4LmMKLSAJJChDT01QSUxFKSAkPAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Mzc0MWY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLUZyb20gYTEzNzYzZjhhMWQ0MTNhNDMyZTdiNDA4MzVhMDYyZjg2MjA4ZjI5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEyOjU2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvNDZdIG9wdGlvbmFsIGxpYnN0ZGMKLQotZ2NjLXJ1bnRpbWUgYnVpbGRzIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5IGZyb20gZ2NjLWNyb3NzLSouIEl0cyBjb25maWd1cmUgdGVzdHMgdXNpbmcgZysrCi13aWxsIG5vdCBydW4gY29ycmVjdGx5IHNpbmNlIGJ5IGRlZmF1bHQgdGhlIGxpbmtlciB3aWxsIHRyeSB0byBsaW5rIGFnYWluc3QgbGlic3RkYysrCi13aGljaCBzaG91bGRuJ3QgZXhpc3QgeWV0LiBXZSBuZWVkIGFuIG9wdGlvbiB0byBkaXNhYmxlIC1sc3RkYysrCi1vcHRpb24gd2hpbHN0IGxlYXZpbmcgLWxjLCAtbGdjYyBhbmQgb3RoZXIgYXV0b21hdGljIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGFkZGVkIGJ5IGdjYwotZHJpdmVyLiBUaGlzIHBhdGNoIGFkZHMgc3VjaCBhbiBvcHRpb24gd2hpY2ggb25seSBkaXNhYmxlcyB0aGUgLWxzdGRjKysuCi0KLUEgInN0YW5kYXJkIiBnY2MgYnVpbGQgdXNlcyB4Z2NjIGFuZCBoZW5jZSBhdm9pZHMgdGhpcy4gV2Ugc2hvdWxkIGFzayB1cHN0cmVhbSBob3cgdG8KLWRvIHRoaXMgb2ZmaWNpYWxseSwgdGhlIGxpa2VseSBhbnN3ZXIgaXMgZG9uJ3QgYnVpbGQgbGlic3RkYysrIHNlcGFyYXRlbHkuCi0KLVJQIDI5LzYvMTAKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGdjYy9jLWZhbWlseS9jLm9wdCAgfCA0ICsrKysKLSBnY2MvY3AvZysrc3BlYy5jICAgIHwgMSArCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8IDggKysrKysrKy0KLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLWluZGV4IDQxNjI1NjYuLjQ1M2VjOGUgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKLSsrKyBiL2djYy9jLWZhbWlseS9jLm9wdAotQEAgLTE1NDMsNiArMTU0MywxMCBAQCBub3N0ZGluYysrCi0gQysrIE9iakMrKwotIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKwotIAotK25vc3RkbGliKysKLStEcml2ZXIKLStEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5Ci0rCi0gbwotIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQotIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKLWluZGV4IDY1MzZkN2UuLmY1N2E1ZDQgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvZysrc3BlYy5jCi0rKysgYi9nY2MvY3AvZysrc3BlYy5jCi1AQCAtMTM4LDYgKzEzOCw3IEBAIGxhbmdfc3BlY2lmaWNfZHJpdmVyIChzdHJ1Y3QgY2xfZGVjb2RlZF9vcHRpb24gKippbl9kZWNvZGVkX29wdGlvbnMsCi0gICAgICAgc3dpdGNoIChkZWNvZGVkX29wdGlvbnNbaV0ub3B0X2luZGV4KQotIAl7Ci0gCWNhc2UgT1BUX25vc3RkbGliOgotKwljYXNlIE9QVF9ub3N0ZGxpYl9fOgotIAljYXNlIE9QVF9ub2RlZmF1bHRsaWJzOgotIAkgIGxpYnJhcnkgPSAtMTsKLSAJICBicmVhazsKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggYzgxYjU1Yi4uNmQzZjY4YyAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0xOTUsNiArMTk1LDcgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KLSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAotIC1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKLSAtZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAotKy1ub3N0ZGxpYisrIEBnb2wKLSAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKLSAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKLSAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKLUBAIC00ODgsNyArNDg5LDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgotIC1zICAtc3RhdGljIC1zdGF0aWMtbGliZ2NjIC1zdGF0aWMtbGlic3RkYysrIEBnb2wKLSAtc3RhdGljLWxpYmFzYW4gLXN0YXRpYy1saWJ0c2FuIC1zdGF0aWMtbGlibHNhbiAtc3RhdGljLWxpYnVic2FuIEBnb2wKLSAtc3RhdGljLWxpYm1weCAtc3RhdGljLWxpYm1weHdyYXBwZXJzIEBnb2wKLS0tc2hhcmVkIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAotKy1zaGFyZWQgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyAtbm9zdGRsaWIrKyBAZ29sCi0gLVQgQHZhcntzY3JpcHR9ICAtV2wsQHZhcntvcHRpb259ICAtWGxpbmtlciBAdmFye29wdGlvbn0gQGdvbAotIC11IEB2YXJ7c3ltYm9sfSAteiBAdmFye2tleXdvcmR9fQotIAotQEAgLTExMTg3LDYgKzExMTg4LDExIEBAIFRoZXNlIGVudHJpZXMgYXJlIHVzdWFsbHkgcmVzb2x2ZWQgYnkgZW50cmllcyBpbgotIGxpYmMuICBUaGVzZSBlbnRyeSBwb2ludHMgc2hvdWxkIGJlIHN1cHBsaWVkIHRocm91Z2ggc29tZSBvdGhlcgotIG1lY2hhbmlzbSB3aGVuIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZC4KLSAKLStAaXRlbSAtbm9zdGRsaWIrKwotK0BvcGluZGV4IG5vc3RkbGliKysKLStEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KLStPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KLSsKLSBAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KLSBAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0gQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggNjc1YmNjMS4uYTM3ZWM4YiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtODQ1LDYgKzg0NSw3IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAgICAgJShtZmxpYikgIiBTVEFDS19TUExJVF9TUEVDICJcCi0gICAgICV7ZnByb2ZpbGUtYXJjc3xmcHJvZmlsZS1nZW5lcmF0ZSp8Y292ZXJhZ2U6LWxnY292fSAiIFNBTklUSVpFUl9TUEVDICIgXAotICAgICAleyFub3N0ZGxpYjoleyFub2RlZmF1bHRsaWJzOiUobGlua19zc3ApICUobGlua19nY2NfY19zZXF1ZW5jZSl9fVwKLSsgICAgJXshbm9zdGRsaWIrKzp9XAotICAgICAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JUV9fSAle1QqfSB9fX19fX0iCi0gI2VuZGlmCi0gCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjYyZWY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDRiZDIxYTFkNjNjZmIxNGUyNjFkOTBhZGMwYzVkNGY5NDYyZGM1NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNDoyMCArMDQwMAotU3ViamVjdDogW1BBVENIIDE1LzQ2XSBnY2M6IGRpc2FibGUgTUFTS19SRUxBWF9QSUNfQ0FMTFMgYml0Ci0KLVRoZSBuZXcgZmVhdHVyZSBhZGRlZCBhZnRlciA0LjMuMwotImh0dHA6Ly93d3cucHViYnMubmV0LzIwMDkwOS9nY2MvOTQwNDgtcGF0Y2gtYWRkLXN1cHBvcnQtZm9yLXJtaXBzamFsci5odG1sIgotd2lsbCBjYXVzZSBjYzFwbHVzIGVhdCB1cCBhbGwgdGhlIHN5c3RlbSBtZW1vcnkgd2hlbiBidWlsZCB3ZWJraXQtZ3RrLgotVGhlIGZ1bmN0aW9uIG1pcHNfZ2V0X3BpY19jYWxsX3N5bWJvbCBrZWVwcyBvbiByZWN1cnNpdmVseSBjYWxsaW5nIGl0c2VsZi4KLURpc2FibGUgdGhpcyBmZWF0dXJlIHRvIHdhbGsgYXNpZGUgdGhlIGJ1Zy4KLQotU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWd1cmUgICAgfCA3IC0tLS0tLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNyAtLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCAzNDM3MWEzLi44Y2FlY2RjIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTI2NDc5LDEzICsyNjQ3OSw2IEBAICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBhbmQgbGlua2VyIGZvciBleHBsaWNpdCBKQUxSIHJlbG9jYXRpb24uLi4gIiA+JjY7Ci0gICAgICAgICBybSAtZiBjb25mdGVzdC4qCi0gICAgICAgZmkKLSAgICAgZmkKLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCi0tICAgICAgZWxzZQotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCi0tICAgICAgZmkKLS0gICAgZmkKLSAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY1Ci0gJGFzX2VjaG8gIiRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDI0MGQzMjIuLjU3ODE5ZmYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNDM4NCwxMyArNDM4NCw2IEBAIHg6Ci0gICAgICAgICBybSAtZiBjb25mdGVzdC4qCi0gICAgICAgZmkKLSAgICAgZmkKLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCi0tICAgICAgZWxzZQotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCi0tICAgICAgZmkKLS0gICAgZmkKLSAgICAgQUNfTVNHX1JFU1VMVCgkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MpCi0gCi0gICAgIEFDX0NBQ0hFX0NIRUNLKFtsaW5rZXIgZm9yIC5laF9mcmFtZSBwZXJzb25hbGl0eSByZWxheGF0aW9uXSwKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZhZTI2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOTI0MjdlYmI5NGRjNjZmOGU2NGViZjNmZmJjZDZkZDVjZTA5MzVjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvNDZdIENPTExFQ1RfR0NDX09QVElPTlMKLQotVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bwotaW52b2tlIGNvbGxlY3QyLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBhMzdlYzhiLi44N2I0N2M1IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC00MzUyLDYgKzQzNTIsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCi0gCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7Ci0gCi0gICBmaXJzdF90aW1lID0gVFJVRTsKLSsjaWZkZWYgSEFWRV9MRF9TWVNST09UCi0rICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQotKyAgICB7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKLSsgICAgICBmaXJzdF90aW1lID0gRkFMU0U7Ci0rICAgIH0KLSsjZW5kaWYKLSAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODlhMjc5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLUZyb20gYjFmMzExOGU0Mzk0NTljMjZhM2UxOWM2MTdiN2IwYzkzNzQ1ZTc3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvNDZdIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KLSAke0J9Ci0KLVVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAotdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCi1vY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAotd29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCi10bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKLQotU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQotIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCi0gZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCAwN2M2ZjBhLi5lMWU2M2U4IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC01MDIsNyArNTAyLDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACi0gCi0geG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKLS10bWFrZV9maWxlPUB0bWFrZV9maWxlQAotK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQotIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACi0gVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACi0gVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA4Y2FlY2RjLi44ZWMzZDQwIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTExODUwLDggKzExODUwLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggNTc4MTlmZi4uNjQzYTQ3ZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xODMyLDggKzE4MzIsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAotaW5kZXggYzMyZjA4Ny4uNjgwM2FiOSAxMDA2NDQKLS0tLSBhL2djYy9ta2NvbmZpZy5zaAotKysrIGIvZ2NjL21rY29uZmlnLnNoCi1AQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgotICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KLSAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAotIAlmb3IgZmlsZSBpbiAiJEAiOyBkbwotLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSsJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0gCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCi0gCSAgICBlbHNlCi0gCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCi1AQCAtMTA5LDcgKzEwOSw3IEBAIGVzYWMKLSAKLSAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCi0gaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgotLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSsgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSBmaQotIAotICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGJhMzI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZDExYzczYzEyOTU1NjVmZjM3NjZhZTA0ZTJhNDEwYTg5ZmM4NGRkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjAxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvNDZdIGZvcnRyYW4gY3Jvc3MtY29tcGlsZSBoYWNrLgotCi0qIEZvcnRyYW4gd291bGQgaGF2ZSBzZWFyY2hlZCBmb3IgYXJtLWFuZ3N0cm9tLWdudWVhYmktZ2ZvcnRyYW4gYnV0IHdvdWxkIGhhdmUgdXNlZAotdXNlZCBnZm9ydGFuLiBGb3IgZ2NjXzQuMi4yLmJiIHdlIHdhbnQgdG8gdXNlIHRoZSBnZm9ydHJhbiBjb21waWxlciBmcm9tIG91ciBjcm9zcwotZGlyZWN0b3J5LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgIHwgMiArLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZSBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotaW5kZXggYmIzMTA3Yi4uNWQ0N2U2NSAxMDA3NTUKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1AQCAtMTI3NDcsNyArMTI3NDcsNyBAQCBlc2FjCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQotIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1pbmRleCBhZGFmYjNmLi5iNGFkZTI4IDEwMDY0NAotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLUBAIC0yNDAsNyArMjQwLDcgQEAgQUNfU1VCU1QoZW5hYmxlX3N0YXRpYykKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gQUNfUFJPR19GQyhnZm9ydHJhbikKLSAKLSAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgdGFyZ2V0cwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTktbGliZ2NjLXNqbGotY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTktbGliZ2NjLXNqbGotY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYTRkMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE5LWxpYmdjYy1zamxqLWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotRnJvbSA3YjQwMjEyZWQ2YzBjOWZlNGVmZTUxZjMxYmNjZDNkOWY4OTJmMjM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjA6NTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS80Nl0gbGliZ2NjLXNqbGotY2hlY2sKLQotYWNfZm5fY190cnlfY29tcGlsZSBkb2VzbnQgc2VlbSB0byBrZWVwIHRoZSBpbnRlcm1lZGlhdGUgZmlsZXMKLXdoaWNoIGFyZSBuZWVkZWQgZm9yIHNqbGogdGVzdCB0byBwYXNzIHNpbmNlIGl0IGdyZXBzIGludG8gdGhlCi1nZW5lcmF0ZWQgZmlsZS4gU28gd2UgcnVuIHRoZSBjb21waWxlciBjb21tYW5kIHVzaW5nIEFDX1RSWV9DT01NQU5ECi13aGljaCB0aGVuIGdlbmVyYXRlcyB0aGUgbmVlZGVkIC5zIGZpbGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJnY2MvY29uZmlndXJlICAgIHwgMTAgKysrKysrLS0tLQotIGxpYmdjYy9jb25maWd1cmUuYWMgfCAxMCArKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCi1pbmRleCAyMDNkMzg0Li42YWVmM2U3IDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZ3VyZQotKysrIGIvbGliZ2NjL2NvbmZpZ3VyZQotQEAgLTQ1NzAsMTcgKzQ1NzAsMTkgQEAgdm9pZCBmb28gKCkKLSB9Ci0gCi0gX0FDRU9GCi0tQ0ZMQUdTX2hvbGQ9JENGTEFHUwotLUNGTEFHUz0iLS1zYXZlLXRlbXBzIC1mZXhjZXB0aW9ucyIKLSBsaWJnY2NfY3ZfbGliX3NqbGpfZXhjZXB0aW9ucz11bmtub3duCi0taWYgYWNfZm5fY190cnlfY29tcGlsZTsgdGhlbiA6Ci0raWYgeyBhY190cnk9JyR7Q0MtY2N9IC1mZXhjZXB0aW9ucyAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mNScKLSsgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY190cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbgotICAgaWYgZ3JlcCBfVW53aW5kX1NqTGpfUmVzdW1lIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgIGxpYmdjY19jdl9saWJfc2psal9leGNlcHRpb25zPXllcwotICAgZWxpZiBncmVwIF9VbndpbmRfUmVzdW1lIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgIGxpYmdjY19jdl9saWJfc2psal9leGNlcHRpb25zPW5vCi0gICBmaQotIGZpCi0tQ0ZMQUdTPSRDRkxBR1NfaG9sZAotIHJtIC1mIGNvbmZ0ZXN0KgotIAotIGZpCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKLWluZGV4IGExMGE5NTIuLmNjMzI0ZjMgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCi0rKysgYi9saWJnY2MvY29uZmlndXJlLmFjCi1AQCAtMjU1LDE2ICsyNTUsMTQgQEAgdm9pZCBmb28gKCkKLSAgIGJhcigpOwotIH0KLSBdKV0pCi0tQ0ZMQUdTX2hvbGQ9JENGTEFHUwotLUNGTEFHUz0iLS1zYXZlLXRlbXBzIC1mZXhjZXB0aW9ucyIKLSBsaWJnY2NfY3ZfbGliX3NqbGpfZXhjZXB0aW9ucz11bmtub3duCi0tQVNfSUYoW2FjX2ZuX2NfdHJ5X2NvbXBpbGVdLAotLSAgW2lmIGdyZXAgX1Vud2luZF9TakxqX1Jlc3VtZSBjb25mdGVzdC5zID4vZGV2L251bGwgMj4mMTsgdGhlbgotK2lmIEFDX1RSWV9DT01NQU5EKCR7Q0MtY2N9IC1mZXhjZXB0aW9ucyAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mQVNfTUVTU0FHRV9MT0dfRkQpOyB0aGVuCi0rICBpZiBncmVwIF9VbndpbmRfU2pMal9SZXN1bWUgY29uZnRlc3QucyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgbGliZ2NjX2N2X2xpYl9zamxqX2V4Y2VwdGlvbnM9eWVzCi0gICBlbGlmIGdyZXAgX1Vud2luZF9SZXN1bWUgY29uZnRlc3QucyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgbGliZ2NjX2N2X2xpYl9zamxqX2V4Y2VwdGlvbnM9bm8KLS0gIGZpXSkKLS1DRkxBR1M9JENGTEFHU19ob2xkCi0rICBmaQotK2ZpCi0gcm0gLWYgY29uZnRlc3QqCi0gXSkKLSAKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIwLWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIwLWNwcC1ob25vci1zeXNyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2Y2NmQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNWY5NzU5YTg1ZmZmM2Q3OGUzZjcxYWUwMWM5NzBiMTBkMzI2YzQwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIyOjAwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvNDZdIGNwcDogaG9ub3Igc3lzcm9vdC4KLQotQ3VycmVudGx5LCBpZiB0aGUgZ2NjIHRvb2xjaGFpbiBpcyByZWxvY2F0ZWQgYW5kIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSwgdGhlbiB5b3UgdHJ5IGFuZCBjb21waWxlCi1wcmVwcm9jZXNzZWQgc291cmNlICguaSBvciAuaWkgZmlsZXMpLCB0aGUgY29tcGlsZXIgd2lsbCB0cnkgYW5kIGFjY2VzcyB0aGUgYnVpbHRpbiBzeXNyb290IGxvY2F0aW9uCi1yYXRoZXIgdGhhbiB0aGUgLS1zeXNyb290IG9wdGlvbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lLiBJZiBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkgaXMKLXBlcm1pc3Npb24gZGVuaWVkICh1bnJlYWRhYmxlKSwgZ2NjIHdpbGwgZXJyb3IuCi0KLVRoaXMgaGFwcGVucyB3aGVuIGNjYWNoZSBpcyBpbiB1c2UgZHVlIHRvIHRoZSBmYWN0IGl0IHVzZXMgcHJlcHJvY2Vzc2VkIHNvdXJjZSBmaWxlcy4KLQotVGhlIGZpeCBiZWxvdyBhZGRzICVJIHRvIHRoZSBjcHAtb3V0cHV0IHNwZWMgbWFjcm8gc28gdGhlIGRlZmF1bHQgc3Vic3RpdHV0aW9ucyBmb3IgLWlwcmVmaXgsCi0taXN5c3RlbSwgLWlzeXNyb290IGhhcHBlbiBhbmQgdGhlIGNvcnJlY3Qgc3lzcm9vdCBpcyB1c2VkLgotCi1bWU9DVE8gIzIwNzRdCi0KLVJQIDIwMTIvMDQvMTMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY3AvbGFuZy1zcGVjcy5oIHwgMiArLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3AvbGFuZy1zcGVjcy5oIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAotaW5kZXggYjA3MjhmMC4uZTY5ZWU3ZCAxMDA2NDQKLS0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKLSsrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLUBAIC02Myw1ICs2Myw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKLSAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKLSAgICAiJXshTToleyFNTToleyFFOlwKLS0gICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMlwKLSsgICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMlwKLSAgICAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDg3YjQ3YzUuLmU2ZWZhZTcgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTExNDIsNyArMTE0Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9Ci0gICAgICAgICAgICAgICAgICAgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjcHAtb3V0cHV0IiwKLS0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKLSAgIHsiQGFzc2VtYmxlciIsCi0gICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIxLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Y2ZmZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIxLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDM0ZDIyYWI2Y2ZkMmRmZTZkZDE3MWM4ZDBiMzFjYWZjZGViODYyOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAotU3ViamVjdDogW1BBVENIIDIxLzQ2XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQotCi1NSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAotc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotLS0tCi0gZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKLWluZGV4IGM4MzU3MzQuLmRkMDczOWQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMDE3LDI5ICsyMDE3LDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCi0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCi0gCQkJOzsKLSAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKLSAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgotIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyMiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJZXNhYwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjA4MzUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLUZyb20gZjZiNDFiNjJlYTYyYTBmMTQ0N2Q5ZmMyMzVmN2ZkMmJiZjNmZTdjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvNDZdIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi0gcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKLQotVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLXJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSIHdoaWNoIGNhbiBiZSBzZXQgaW4gZ2VuZXJhdGVkIGhlYWRlcnMKLVRoaXMgYnJlYWtzIHRoZSBhc3N1bXB0aW9uIG9mIGhhcmRjb2RlZCBtdWx0aWxpYiBpbiBnY2MKLUNoYW5nZSBpcyBvbmx5IGZvciB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgaW4gT0UgaW5jbHVkaW5nCi1TSCwgc3BhcmMsIGFscGhhIGZvciBwb3NzaWJsZSBmdXR1cmUgc3VwcG9ydCAoaWYgYW55KQotCi1SZW1vdmVzIHRoZSBkb19oZWFkZXJmaXggdGFzayBpbiBtZXRhZGF0YQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIHwgIDQgKystLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICB8ICA2ICsrKy0tLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgfCAgOCArKysrLS0tLQotIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAxMiArKysrKystLS0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgMTAgKysrKystLS0tLQotIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXguaCAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oICAgfCAgNCArKy0tCi0gMTEgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotaW5kZXggMmM3MGEyZi4uZGQwNDhkYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLUBAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBFWFRSQV9TUEVDUyBcCi0geyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IGU5ZDY1ZGMuLmNmZGYzZjAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTY4LDggKzY4LDggQEAKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLwotIAotICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotaW5kZXggNDlhZDk1NC4uYTVhYjU1OSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotQEAgLTYyLDcgKzYyLDcgQEAKLSAKLSAjZGVmaW5lIExJQkdDQ19TUEVDICIle21mbG9hdC1hYmk9c29mdCo6LWxmbG9hdH0gLWxnY2MiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0gXAotICAgICV7c3RhdGljOi1Cc3RhdGljfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotaW5kZXggYTEwMDk2My4uMjFiYTJiMiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIwLDQgKzIwLDQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1pbmRleCBhMjdkM2JlLi42MTg1Y2NlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotQEAgLTI3LDYgKzI3LDYgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggODU3Mzg5YS4uMjJiOWJlNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1AQCAtNzMsMTAgKzczLDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCi0gICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotaW5kZXggOTFkZjI2MS4uYzMwNmFmYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotQEAgLTIyLDIwICsyMiwyMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05OMzIgImVsZjMyJXtFQjpifSV7RUw6bH10c21pcG4zMiIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjY0L2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliNjQvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjMyL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAKLSAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0Ci0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZDY0LXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZDY0LXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMH0iCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIzMi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJOMzIgIi9zeXN0ZW0vYmluL2xpbmtlcjMyIgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVJOMzIgXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotaW5kZXggMDg3OWU3ZS4uMzFjNDMzOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtMzU3LDE0ICszNTcsMTQgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKLSAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOi9saWI2NC9sZDY0LnNvLjE7Oi9saWI2NC9sZDY0LnNvLjJ9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yfSIKLSAjZWxzZQotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOi9saWI2NC9sZDY0LnNvLjI7Oi9saWI2NC9sZDY0LnNvLjF9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKLSAjZW5kaWYKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLSAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc2gvbGludXguaCBiL2djYy9jb25maWcvc2gvbGludXguaAotaW5kZXggMGY1ZDYxNC4uMTY4NDE2YyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi1AQCAtNDMsNyArNDMsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotIAotICNkZWZpbmUgVEFSR0VUX0FTTV9GSUxFX0VORCBmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCi0gI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiX2xpbnV4IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXguaCBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotaW5kZXggNTZkZWY0Yi4uMDBiNTY0YyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1AQCAtODMsNyArODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOwotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmICBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLWluZGV4IGZhODA1ZmQuLjBlYjRhY2QgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLUBAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2lmZGVmIFNQQVJDX0JJX0FSQ0gKLSAKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlOTFjOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gOTcwMWY1OTZiYmU1YmY1MWJiZjQ4NjYxYmM1MTViNDVkNGI2ZjRkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjMvNDZdIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCi0KLVRoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQotYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6Ci0KLWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKLQotVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQotaXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKLXdvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgotVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQotJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL01ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCBlMWU2M2U4Li43YjQ5Zjg4IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC0zMjYyLDcgKzMyNjIsNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKLSAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgotICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KLSAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKLS0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAotKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAotIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCi0gCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAotIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI0LURpc2FibGUtc2R0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI0LURpc2FibGUtc2R0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjNjZTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNC1EaXNhYmxlLXNkdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIDk0NmUwNDc2MTQxMDNlMWYyOTgyNjEzYzdhYTVmNzY1ODc1MDBjMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDI0LzQ2XSBEaXNhYmxlIHNkdC4KLQotV2UgZG9uJ3QgbGlzdCBkdHJhY2UgaW4gREVQRU5EUyBzbyB3ZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoaXMgaGVhZGVyLgotSXQgbWF5IG9yIG1heSBub3QgZXhpc3QgZnJvbSBwcmVpdm91cyBidWlsZHMgdGhvdWdoLiBUbyBiZSBkZXRlcm1pbnN0aWMsIGRpc2FibGUKLXNkdC5oIHVzYWdlIGFsd2F5cy4gVGhpcyBhdm9pZHMgYnVpbGQgZmFpbHVyZXMgaWYgdGhlIGhlYWRlciBpcyByZW1vdmVkIGFmdGVyIGNvbmZpZ3VyZQotYnV0IGJlZm9yZSBsaWJnY2MgaXMgY29tcGlsZWQgZm9yIGV4YW1wbGUuCi0KLVJQIDIwMTIvOC83Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLURpc2FibGUgc2R0IGZvciBsaWJzdGRjKystdjMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhY2tdCi0tLS0KLSBnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgfCAgNiArKystLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlLmFjIHwgIDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDhlYzNkNDAuLmVhYTNiMDcgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjc4NTcsMTIgKzI3ODU3LDEyIEBAIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQotIGhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0KLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLS0KLS1maQotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMKLSsjZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggNjQzYTQ3ZS4uOWY2Y2FjYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01MzE1LDE1ICs1MzE1LDE1IEBAIGlmIHRlc3QgeCRnY2NfY3ZfbGliY19wcm92aWRlc19zc3AgPSB4eWVzOyB0aGVuCi0gZmkKLSAKLSAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCi0tR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCi0taGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0tZmkKLS1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSsjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotKyNoYXZlX3N5c19zZHRfaD1ubwotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCi0rIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0rI2ZpCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQotIAotICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgotICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotaW5kZXggMjE3MDEyZS4uODEyNDBiOSAxMDA3NTUKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLUBAIC0yMDk2NCwxMSArMjA5NjQsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0gYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotIAotLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSsjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotIAotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSAKLS0gIGZpCi0rIyAgZmkKLSAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQotICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi1pbmRleCA1ODBmYjhiLi41YTQxMDgzIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotQEAgLTIzMCw3ICsyMzAsNyBAQCBHTElCQ1hYX0NIRUNLX1NDX05QUk9DRVNTT1JTX09OTE4KLSBHTElCQ1hYX0NIRUNLX1NDX05QUk9DX09OTE4KLSBHTElCQ1hYX0NIRUNLX1BUSFJFQURTX05VTV9QUk9DRVNTT1JTX05QCi0gR0xJQkNYWF9DSEVDS19TWVNDVExfSFdfTkNQVQotLUdMSUJDWFhfQ0hFQ0tfU0RUX0gKLSsjR0xJQkNYWF9DSEVDS19TRFRfSAotIAotICMgQ2hlY2sgZm9yIGF2YWlsYWJsZSBoZWFkZXJzLgotIEFDX0NIRUNLX0hFQURFUlMoW2VuZGlhbi5oIGV4ZWNpbmZvLmggZmxvYXQuaCBmcC5oIGllZWVmcC5oIGludHR5cGVzLmggXAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjUtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNS1saWJ0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDVlYjk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNS1saWJ0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBmNjhjNWI3ODc1MTY2MDUwNWIyMmI0NmRhZDk5MjQwZGIwZGYzNDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjk6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyNS80Nl0gbGlidG9vbAotCi1saWJzdGRjKysgZnJvbSBnY2MtcnVudGltZSBnZXRzIGNyZWF0ZWQgd2l0aCAtcnBhdGg9L3Vzci9saWIvLi4vbGliIGZvciBxZW11eDg2LTY0Ci13aGVuIHJ1bm5pbmcgb24gYW0geDg2XzY0IGJ1aWxkIGhvc3QuCi0KLVRoaXMgcGF0Y2ggc3RvcHMgdGhpcyBzcGVhZGluZyB0byBsaWJkaXIgaW4gdGhlIGxpYnN0ZGMrKy5sYSBmaWxlIHdpdGhpbiBsaWJ0b29sLgotQXJndWFibHksIGl0IHNob3VsZG4ndCBiZSBwYXNzaW5nIHRoaXMgaW50byBsaWJ0b29sIGluIHRoZSBmaXJzdCBwbGFjZSBidXQKLWZvciBub3cgdGhpcyByZXNvbHZlcyB0aGUgbmFzdGllc3QgcHJvYmxlbXMgdGhpcyBjYXVzZXMuCi0KLWZ1bmNfbm9ybWFsX2Fic3BhdGggd291bGQgcmVzb2x2ZSBhbiBlbXB0eSBwYXRoIHRvIGBwd2RgIHNvIHdlIG5lZWQKLXRvIGZpbHRlciB0aGUgemVybyBjYXNlLgotCi1SUCAyMDEyLzgvMjQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsdG1haW4uc2ggfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDk1MDNlYzguLjAxMjFmYmEgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTYzNTksNiArNjM1OSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgotIAotICAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKLSsgICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCi0rCWZ1bmNfbm9ybWFsX2Fic3BhdGggIiRpbnN0YWxsX2xpYmRpciIKLSsJaW5zdGFsbF9saWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci0rICAgICAgZmkKLSAKLSAgICAgICBvbGRsaWJzPQotICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI2LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIyZDk1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gNGM3NWUzNDlhYTdhYmQxZTI4NTcyMDMyOGIyMzY5MDYzNmJlYTI0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvNDZdIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KLQotVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKLW1lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Ci10aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAotVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAotZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgotCi1XZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IGNmZGYzZjAuLjA0OGEwNjIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTc3LDEwICs3NywxNCBAQAotICAgICAle21mbG9hdC1hYmk9c29mdCo6IiBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUICJ9IFwKLSAgICAgJXshbWZsb2F0LWFiaT0qOiIgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCAifSIKLSAKLSsvKiBGb3IgYXJtdjQgd2UgcGFzcyAtLWZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkgKi8KLSsjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKLSsjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgotKwotIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCi0gICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLwotICN1bmRlZiAgTElOS19TUEVDCi0tI2RlZmluZSBMSU5LX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQkJCVwKLSsjZGVmaW5lIExJTktfU1BFQyBUQVJHRVRfRklYX1Y0QlhfU1BFQyBFQUJJX0xJTktfU1BFQwkJCVwKLSAgIExJTlVYX09SX0FORFJPSURfTEQgKExJTlVYX1RBUkdFVF9MSU5LX1NQRUMsCQkJCVwKLSAJCSAgICAgICBMSU5VWF9UQVJHRVRfTElOS19TUEVDICIgIiBBTkRST0lEX0xJTktfU1BFQykKLSAKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY4MTVkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIDgyMTdkZDdmYjMxOGY5YWJjNjU2NGY2N2I0MjRjNDMzZDgzOThkNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAotU3ViamVjdDogW1BBVENIIDI3LzQ2XSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgotIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQotCi1Vc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLXNvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IGVhYTNiMDcuLjliNjBhYWQgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE4MzAsMTAgKzExODMwLDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTE4NDQsNiArMTE4NTQsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCi0gdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKLSBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgIGNhc2UgJGYgaW4KLSsgICAgKi9saW51eDY0LmggKQotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIDs7Ci0gICAgIC4vKiApCi0gICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggOWY2Y2FjYi4uZTFlNTRmMiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xODEyLDEwICsxODEyLDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTgyNiw2ICsxODM2LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZGRkOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDA4YTBlNDViMzA4ZmM5N2QwNmY1YzNlZjc3YTI1N2U3YTZiZDFhNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTozOTozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDI4LzQ2XSBBdm9pZCB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYQotIGhvc3QgcGF0aAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDAxMjFmYmEuLjUyYmRiZGIgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKLSsJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgotKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgZGlyPSIkbGliZGlyIgotIAkgICAgYWJzZGlyPSIkbGliZGlyIgotIAkgIGZpCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOS1leHBvcnQtQ1BQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI5LWV4cG9ydC1DUFAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMTk1YWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI5LWV4cG9ydC1DUFAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIDk1ZjQ5NGQxNTQ0ODU3YWQzODk0OWE3ZGEzN2UyZDcyNjQ0NzUyMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTo0MDo1OSArMDAwMAotU3ViamVjdDogW1BBVENIIDI5LzQ2XSBleHBvcnQgQ1BQCi0KLVRoZSBPRSBlbnZpcm9ubWVudCBzZXRzIGFuZCBleHBvcnRzIENQUCBhcyBiZWluZyB0aGUgdGFyZ2V0IGdjYy4gV2hlbgotYnVpbGRpbmcgZ2NjLWNyb3NzLWNhbmFkaWFuIGZvciBhIG1pbmd3IHRhcmdldHRlZCBzZGssIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGZvdW5kCi1pbiBidWlsZC54ODZfNjQtcG9reXNkay1taW5ndzMyLmk1ODYtcG9reS1saW51eC9idWlsZC14ODZfNjQtbGludXgvbGliaWJlcnR5L2NvbmZpZy5sb2c6Ci0KLWNvbmZpZ3VyZTozNjQxOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcwotY29uZmlndXJlOjM2NjY6IGdjYyAgLWMgLWlzeXN0ZW0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgIGNvbmZ0ZXN0LmMgPiY1Ci1jb25maWd1cmU6MzY2NjogJD8gPSAwCi1jb25maWd1cmU6MzY5ODogcmVzdWx0OiBubwotY29uZmlndXJlOjM3ODY6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yCi1jb25maWd1cmU6Mzg1NjogcmVzdWx0OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyCi1jb25maWd1cmU6Mzg3NjogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMiBjb25mdGVzdC5jCi1jb25maWd1cmU6Mzg3NjogJD8gPSAwCi0KLU5vdGUgdGhpcyBpcyBhICpidWlsZCogdGFyZ2V0IChpbiBidWlsZC14ODZfNjQtbGludXgpIHNvIGl0IHNob3VsZCBiZQotdXNpbmcgdGhlIGhvc3QgImdjYyIsIG5vdCB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYy4gU2luY2UgdGhlIG1pbmd3MzIKLWhlYWRlcnMgYXJlIHZlcnkgZGlmZmVyZW50LCB1c2luZyB0aGUgd3JvbmcgY3BwIGlzIGEgcmVhbCBwcm9ibGVtLiBJdCBpcyBsZWFraW5nCi1pbnRvIGNvbmZpZ3VyZSB0aHJvdWdoIHRoZSBDUFAgdmFyaWFibGUuIFVsdGltYXRlbHkgdGhpcyBsZWFkcyB0byBidWlsZAotZmFpbHVyZXMgcmVsYXRlZCB0byBub3QgYmVpbmcgYWJsZSB0byBpbmNsdWRlIGEgcHJvY2Vzcy5oIGZpbGUgZm9yIHBlbS11bml4LmMuCi0KLVRoZSBmaXggaXMgdG8gZW5zdXJlIHdlIGV4cG9ydCBhIHNhbmUgQ1BQIHZhbHVlIGludG8gdGhlIGJ1aWxkCi1lbnZpcm9ubWVudCB3aGVuIHVzaW5nIGJ1aWxkIHRhcmdldHMuIFdlIGNvdWxkIGRlZmluZSBhIENQUF9GT1JfQlVJTEQgdmFsdWUgd2hpY2ggbWF5IGJlCi10aGUgdmVyc2lvbiB3aGljaCBuZWVkcyB0byBiZSB1cHN0cmVhbWVkIGJ1dCBmb3Igbm93LCB0aGlzIGZpeCBpcyBnb29kIGVub3VnaCB0bwotYXZvaWQgdGhlIHByb2JsZW0uCi0KLVJQIDIyLzA4LzIwMTMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMzZiNDAwOC4uYTc4M2UxZSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE0OSw2ICsxNDksNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCi0gCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMwLUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MDUxODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMwLUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDRlZDhjMWZkOWRjMDVmN2E5ZGI5Mjk4YTU1Mzk2YzhmMGZmNTQ5YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBXZWQsIDUgRmViIDIwMTQgMTY6NTI6MzEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzMC80Nl0gRW5hYmxlIFNQRSAmIEFsdGlWZWMgZ2VuZXJhdGlvbiBvbiBwb3dlcGMqbGludXggdGFyZ2V0Ci0KLVdoZW4gaXMgY29uZmlndXJlZCB3aXRoIC0tdGFyZ2V0PXBvd2VycGMtbGludXgsIHRoZSByZXN1bHRpbmcgR0NDIHdpbGwKLW5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIFNQRSB0YXJnZXRzIChlNTAwdjEvdjIpLgotR0NDIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4c3BlIHdpbGwgbm90IGJlIGFibGUgdG8KLWdlbmVyYXRlIEFsdGlWZWMgaW5zdHJ1Y3Rpb25zIChmb3IgZTY1MDApLgotVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlndXJlZCBmaWxlIHN1Y2ggdGhhdCBTUEUgb3IgQWx0aVZlYyBjb2RlCi1jYW4gYmUgZ2VuZXJhdGVkIHdoZW4gZ2NjIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LgotVGhlIEFCSSBhbmQgc3BlY2lmZmljIGluc3RydWN0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgdGhyb3VnaCB0aGUKLSItbWFiaT1zcGUgb3IgLW1hYmk9YWx0aXZlYyIgYW5kIHRoZSAiLW1zcGUgb3IgLW1hbHRpdmVjIiBwYXJhbWV0ZXJzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydS1DZXphciBTYXJkYW4gPGFsZXhhbmRydS5zYXJkYW5AZnJlZXNjYWxlLmNvbT4KLS0tLQotIGdjYy9jb25maWcuZ2NjIHwgOSArKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnY2MtNS4zLjAvZ2NjL2NvbmZpZy5nY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS4zLjAub3JpZy9nY2MvY29uZmlnLmdjYwotKysrIGdjYy01LjMuMC9nY2MvY29uZmlnLmdjYwotQEAgLTIzNDYsNyArMjM0NiwxNCBAQCBwb3dlcnBjLSotcnRlbXMqKQotIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcnRlbXMgcnM2MDAwL3QtcHBjY29tbSIKLSAJOzsKLSBwb3dlcnBjKi0qLWxpbnV4KikKLS0JdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCi0rCWNhc2UgJHt0YXJnZXR9IGluCi0rCSAgICBwb3dlcnBjKi0qLWxpbnV4KnNwZSogfCBwb3dlcnBjKi0qLWxpbnV4KmFsdGl2ZWMqKQotKwkJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCi0rCQk7OwotKwkgICAgKikKLSsJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIHJzNjAwMC9saW51eGFsdGl2ZWMuaCByczYwMDAvbGludXhzcGUuaCByczYwMDAvZTUwMC5oIgotKwkJOzsKLSsJZXNhYwotIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2NC5vcHQiCi0gCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gcnM2MDAwL3QtZnBydWxlcyByczYwMDAvdC1wcGNjb21tIgotIAlleHRyYV9vYmpzPSIkZXh0cmFfb2JqcyByczYwMDAtbGludXgubyIKLUluZGV4OiBnY2MtNS4zLjAvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy01LjMuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKLSsrKyBnY2MtNS4zLjAvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAotQEAgLTI3LDYgKzI3LDMgQEAKLSAjdW5kZWYJVEFSR0VUX0RFRkFVTFQKLSAjZGVmaW5lIFRBUkdFVF9ERUZBVUxUIE1BU0tfU1RSSUNUX0FMSUdOCi0gI2VuZGlmCi0tCi0tI3VuZGVmICBBU01fREVGQVVMVF9TUEVDCi0tI2RlZmluZQlBU01fREVGQVVMVF9TUEVDICItbXBwYyAtbXNwZSAtbWU1MDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzEtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmJjNjY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBiYjZmZWE4MjE0ODNhYTMyNTliMzRlMTAxYTM5Yzk5M2VkZDAxNDExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjE6NTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMS80Nl0gRGlzYWJsZSB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyBhbmQgb3RoZXIgbXVsdGlsaWIKLSBvcHRpb25zLgotCi1IYXJkIGNvZGluZyB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyB3aXRoIC4uL2xpYjY0IGlzIGNhdXNpbmcgcHJvYmxlbXMgb24KLXN5c3RlbXMgd2hlcmUgdGhlIGxpYmRpciBpcyBOT1Qgc2V0IHRvIC9saWI2NC4gIFRoaXMgaXMgYWxsb3dlZCBieSB0aGUKLUFCSSwgYXMKLWxvbmcgYXMgdGhlIGR5bmFtaWMgbG9hZGVyIGlzIHByZXNlbnQgaW4gL2xpYi4KLQotV2Ugc2ltcGx5IHdhbnQgdG8gdXNlIHRoZSBkZWZhdWx0IHJ1bGVzIGluIGdjYyB0byBmaW5kIGFuZCBjb25maWd1cmUgdGhlCi1ub3JtYWwgbGliZGlyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotaW5kZXggYzI5NjM3Ni4uM2JiNTliZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLUBAIC0yMSw4ICsyMSw4IEBACi0gTElCMUFTTVNSQyAgID0gYWFyY2g2NC9saWIxZnVuY3MuYXNtCi0gTElCMUFTTUZVTkNTID0gX2FhcmNoNjRfc3luY19jYWNoZV9yYW5nZQotIAotLUFBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0tTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0rI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0rI01VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNNVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSAKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIKLSsjTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMi1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMi1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk1MDNmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzItRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1Gcm9tIGJiMjZmOTBmNWUwYWNjYzM1MzlmNjJiNmZlYzY2MzY4Mjk1OWRkMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyNToxMSArMDAwMAotU3ViamVjdDogW1BBVENIIDMyLzQ2XSBFbnN1cmUgdGFyZ2V0IGdjYyBoZWFkZXJzIGNhbiBiZSBpbmNsdWRlZAotCi1UaGVyZSBhcmUgYSBmZXcgaGVhZGVycyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkCi1nY2MtcnVudGltZSB0YXJnZXQgKG9tcC5oLCBzc3AvKi5oKS4gQmVpbmcgaW5zdGFsbGVkIGZyb20gYSByZWNpcGUKLWJ1aWx0IGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdGhlc2UgYXJlIHdpdGhpbiB0aGUgdGFyZ2V0Ci1zeXNyb290IGFuZCBub3QgY3Jvc3MvbmF0aXZlc2RrOyB0aHVzIHRoZXkgd2VyZW4ndCBhYmxlIHRvIGJlCi1mb3VuZCBieSBnY2Mgd2l0aCB0aGUgZXhpc3Rpbmcgc2VhcmNoIHBhdGhzLiBBZGQgc3VwcG9ydCBmb3IKLXBpY2tpbmcgdXAgdGhlc2UgaGVhZGVycyB1bmRlciB0aGUgc3lzcm9vdCBzdXBwbGllZCBvbiB0aGUgZ2NjCi1jb21tYW5kIGxpbmUgaW4gb3JkZXIgdG8gcmVzb2x2ZSB0aGlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKysKLSBnY2MvY3BwZGVmYXVsdC5jIHwgNCArKysrCi0gZ2NjL2RlZmF1bHRzLmggICB8IDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICB8IDcgLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggN2I0OWY4OC4uY2Q1YmM0YSAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNTgyLDYgKzU4Miw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKLSAKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KLSBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotK2xpYnN1YmRpcl90YXJnZXQgPSBnY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCi0gbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKLUBAIC0yNjEwLDYgKzI2MTEsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKLSAKLSBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKLSAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCi0rICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCi0gICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggNTgwYzFiYS4uMDNhMDI4NyAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSsjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAotKyAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLwotKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotKyNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotICAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2RlZmF1bHRzLmggYi9nY2MvZGVmYXVsdHMuaAotaW5kZXggMWQ1NDc5OC4uOTgzZDQ1ZSAxMDA2NDQKLS0tLSBhL2djYy9kZWZhdWx0cy5oCi0rKysgYi9nY2MvZGVmYXVsdHMuaAotQEAgLTEzNjEsNCArMTM2MSwxMyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAKLSAjZW5kaWYgLyogR0NDX0lOU05fRkxBR1NfSCAgKi8KLSAKLSsvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KLSsKLSsjaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQotKyNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKLSsjZW5kaWYKLSsjaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgotKyNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCi0rI2VuZGlmCi0rCi0gI2VuZGlmICAvKiAhIEdDQ19ERUZBVUxUU19IICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBlNmVmYWU3Li4zY2EyN2I5IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMjYzLDEzICsxMjYzLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAKLSAvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KLSAKLS0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQotLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKLS0jZW5kaWYKLS0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgotLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCi0tI2VuZGlmCi0tCi0gI2lmZGVmIENST1NTX0RJUkVDVE9SWV9TVFJVQ1RVUkUgIC8qIERvbid0IHVzZSB0aGVzZSBwcmVmaXhlcyBmb3IgYSBjcm9zcyBjb21waWxlci4gICovCi0gI3VuZGVmIE1EX0VYRUNfUFJFRklYCi0gI3VuZGVmIE1EX1NUQVJURklMRV9QUkVGSVgKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMzLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzMtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlkNDgwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzMtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNjI5ZmNjN2QwMDc1YzliNDI2MWRhNjQzNWUxMjI0MjlmYjAyOGVjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDExOjE3OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzMvNDZdIGdjYyA0LjgrIHdvbid0IGJ1aWxkIHdpdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcKLQotc2luY2UgdGhlICouUHBvIGZpbGVzIGRvbid0IGdldCBjcmVhdGVkIHVubGVzcyAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIGlzIHRydWUuCi0KLVRoaXMgcGF0Y2ggZW5zdXJlcyB3ZSBvbmx5IHVzZSB0aG9zZSBjb21waWxlciBvcHRpb25zIHdoZW4gaXRzIGVuYWJsZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLShQcm9ibGVtIHdhcyBhbHJlYWR5IHJlcG9ydGVkIHVwc3RyZWFtLCBhdHRhY2hlZCB0aGlzIHBhdGNoIHRoZXJlCi1odHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU1OTMwKQotCi1SUAotMjAxMi8wOS8yMgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliYXRvbWljL01ha2VmaWxlLmFtIHwgMyArKy0KLSBsaWJhdG9taWMvTWFrZWZpbGUuaW4gfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmFtIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCi1pbmRleCAzZDhhYjYyLi4yM2RmZjdlIDEwMDY0NAotLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCi0rKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KLUBAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0gCi0tTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX0ZBTFNFQE1fREVQUwkJPQotIE1fU0laRQkJPSAtRE49JChQQVRfTikKLSBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKLSBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCi1kaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCi1pbmRleCA5Mjg4NjUyLi4zNzIwMjU2IDEwMDY0NAotLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmluCi0rKysgYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KLUBAIC0zMzAsNyArMzMwLDggQEAgUEFUX04gPSAkKHdvcmQgMiwkKFBBVF9TUExJVCkpCi0gUEFUX1MgPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCi0gSUZVTkNfREVGID0gLURJRlVOQ19BTFQ9JChQQVRfUykKLSBJRlVOQ19PUFQgPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKLS1NX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX0ZBTFNFQE1fREVQUyA9Ci0gTV9TSVpFID0gLUROPSQoUEFUX04pCi0gTV9JRlVOQyA9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKLSBNX0ZJTEUgPSAkKFBBVF9CQVNFKV9uLmMKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM0LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzQtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1M2ZhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzQtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gYTRlZmM5Y2E4NTczNGMyODNkNGRhMDliNjI4MTIxZTFjMWY0OWM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDMgTWFyIDIwMTUgMDg6MjE6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzNC80Nl0gRG9uJ3Qgc2VhcmNoIGhvc3QgZGlyZWN0b3J5IGR1cmluZyAicmVsaW5rIiBpZgotICRpbnN0X3ByZWZpeCBpcyBwcm92aWRlZAotCi1odHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvbGlidG9vbC1wYXRjaGVzLzIwMTEtMDEvbXNnMDAwMjYuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDUyYmRiZGIuLjgyYmNlYzMgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTYwMDQsMTIgKzYwMDQsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZmkKLSAJICAgIGVsc2UKLSAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KLSsJICAgICAgIyBEZWZhdWx0IGlmICRsaWJkaXIgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSBwcmVmaXg6Ci0gCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKLS0JICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgotKwotIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJY2FzZSAkbGliZGlyIGluCi0gCQkgIFtcXC9dKikKLS0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgIGFkZF9kaXI9Ii1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM1LURvbnQtbGluay10aGUtcGx1Z2lucy13aXRoLWxpYmdvbXAtZXhwbGljaXRseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNS1Eb250LWxpbmstdGhlLXBsdWdpbnMtd2l0aC1saWJnb21wLWV4cGxpY2l0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZDU4OWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM1LURvbnQtbGluay10aGUtcGx1Z2lucy13aXRoLWxpYmdvbXAtZXhwbGljaXRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLUZyb20gNWIwMTI1YTc5Mjg0MmFlMDJkZjUwN2JjNTU1NTU2NjFjYjEwZjlhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDggTWFyIDIwMTUgMDM6NDE6MzkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzNS80Nl0gRG9udCBsaW5rIHRoZSBwbHVnaW5zIHdpdGggbGliZ29tcCBleHBsaWNpdGx5Ci0KLVRoZXkgYXJlIGRsb3BlbmVkIGJ5IGxpYmdvbXAgYW55d2F5LiBUaGlzIGZpeGVzCi10aGUgbGlidG9vbCByZWxpbmsgaXNzdWUgd2hpY2ggY2F1c2VzIGlzc3VlcyBkdXJpbmcKLWNyb3NzIGNvbXBpbGF0aW9uCi0KLWxpYnRvb2w6IGluc3RhbGw6IC91c3IvYmluL2luc3RhbGwgLWMgLmxpYnMvbGliZ29tcC5sYWkKLS9ob21lL3VidW50dS93b3JrL2JsZWVkaW5nL2J1aWxkLXFlbXV4ODYtNjRtYy90bXAvd29yay9jb3JlMi02NC1yZGstbGludXgvZ2NjLXJ1bnRpbWUvNS4wLXIwL2ltYWdlL3Vzci9saWIvLi4vbGliL2xpYmdvbXAubGEKLWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiBjYW5ub3QgaW5zdGFsbCBgbGliZ29tcC1wbHVnaW4taG9zdF9ub25zaG0ubGEnCi10byBhIGRpcmVjdG9yeSBub3QgZW5kaW5nIGluIC91c3IvbGliCi1NYWtlZmlsZTo1MTc6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXRvb2xleGVjbGliTFRMSUJSQVJJRVMnIGZhaWxlZAotbWFrZVsyXTogKioqIFtpbnN0YWxsLXRvb2xleGVjbGliTFRMSUJSQVJJRVNdIEVycm9yIDEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmdvbXAvTWFrZWZpbGUuaW4gICAgICAgIHwgNyArKystLS0tCi0gbGliZ29tcC9wbHVnaW4vTWFrZWZyYWcuYW0gfCAzICstLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ29tcC9NYWtlZmlsZS5pbiBiL2xpYmdvbXAvTWFrZWZpbGUuaW4KLWluZGV4IGI2MWIxMDguLjcxYjI2MjcgMTAwNjQ0Ci0tLS0gYS9saWJnb21wL01ha2VmaWxlLmluCi0rKysgYi9saWJnb21wL01ha2VmaWxlLmluCi1AQCAtMTIzLDcgKzEyMyw3IEBAIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJCh0b29sZXhlY2xpYmRpcikiICIkKERFU1RESVIpJChpbmZvZGlyKSIgXAotIAkiJChERVNURElSKSQoZmluY2x1ZGVkaXIpIiAiJChERVNURElSKSQobGlic3ViaW5jbHVkZWRpcikiIFwKLSAJIiQoREVTVERJUikkKHRvb2xleGVjbGliZGlyKSIKLSBMVExJQlJBUklFUyA9ICQodG9vbGV4ZWNsaWJfTFRMSUJSQVJJRVMpCi0tbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfREVQRU5ERU5DSUVTID0gbGliZ29tcC5sYQotK2xpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJQkFERCA9Ci0gYW1fbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfT0JKRUNUUyA9ICBcCi0gCWxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhLXBsdWdpbi1ob3N0LmxvCi0gbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfT0JKRUNUUyA9ICBcCi1AQCAtMTMzLDcgKzEzMyw3IEBAIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJTksgPSAkKExJQlRPT0wpIC0tdGFnPUNDIFwKLSAJLS1tb2RlPWxpbmsgJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIFwKLSAJJChsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACi0gYW1fX0RFUEVOREVOQ0lFU18xID0KLS1AUExVR0lOX05WUFRYX1RSVUVAbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfREVQRU5ERU5DSUVTID0gbGliZ29tcC5sYSBcCi0rQFBMVUdJTl9OVlBUWF9UUlVFQGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0RFUEVOREVOQ0lFUyA9ICBcCi0gQFBMVUdJTl9OVlBUWF9UUlVFQAkkKGFtX19ERVBFTkRFTkNJRVNfMSkKLSBAUExVR0lOX05WUFRYX1RSVUVAYW1fbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfT0JKRUNUUyA9ICBcCi0gQFBMVUdJTl9OVlBUWF9UUlVFQAlsaWJnb21wX3BsdWdpbl9udnB0eF9sYS1wbHVnaW4tbnZwdHgubG8KLUBAIC00MDcsNyArNDA3LDcgQEAgbGliZ29tcF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBlcnJvci5jIGl0ZXIuYyBcCi0gQFBMVUdJTl9OVlBUWF9UUlVFQGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0xERkxBR1MgPSAgXAotIEBQTFVHSU5fTlZQVFhfVFJVRUAJJChsaWJnb21wX3BsdWdpbl9udnB0eF92ZXJzaW9uX2luZm8pIFwKLSBAUExVR0lOX05WUFRYX1RSVUVACSQobHRfaG9zdF9mbGFncykgJChQTFVHSU5fTlZQVFhfTERGTEFHUykKLS1AUExVR0lOX05WUFRYX1RSVUVAbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTElCQUREID0gbGliZ29tcC5sYSAkKFBMVUdJTl9OVlBUWF9MSUJTKQotK0BQTFVHSU5fTlZQVFhfVFJVRUBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9MSUJBREQgPSAkKFBMVUdJTl9OVlBUWF9MSUJTKQotIEBQTFVHSU5fTlZQVFhfVFJVRUBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0YXRpYwotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX3ZlcnNpb25faW5mbyA9IC12ZXJzaW9uLWluZm8gJChsaWJ0b29sX1ZFUlNJT04pCi0gbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfU09VUkNFUyA9IHBsdWdpbi9wbHVnaW4taG9zdC5jCi1AQCAtNDE1LDcgKzQxNSw2IEBAIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURIT1NUX05PTlNITV9QTFVHSU4KLSBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MREZMQUdTID0gXAotIAkkKGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX3ZlcnNpb25faW5mbykgJChsdF9ob3N0X2ZsYWdzKQotIAotLWxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJQkFERCA9IGxpYmdvbXAubGEKLSBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0YXRpYwotIG5vZGlzdF9ub2luc3RfSEVBREVSUyA9IGxpYmdvbXBfZi5oCi0gbm9kaXN0X2xpYnN1YmluY2x1ZGVfSEVBREVSUyA9IG9tcC5oIG9wZW5hY2MuaAotZGlmZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL01ha2VmcmFnLmFtIGIvbGliZ29tcC9wbHVnaW4vTWFrZWZyYWcuYW0KLWluZGV4IDE2NzQ4NWYuLmQyYzU0MjggMTAwNjQ0Ci0tLS0gYS9saWJnb21wL3BsdWdpbi9NYWtlZnJhZy5hbQotKysrIGIvbGliZ29tcC9wbHVnaW4vTWFrZWZyYWcuYW0KLUBAIC0zNSw3ICszNSw3IEBAIGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChQTFVHSU5fTlZQVFhfQ1BQRkxBR1MpCi0gbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTERGTEFHUyA9ICQobGliZ29tcF9wbHVnaW5fbnZwdHhfdmVyc2lvbl9pbmZvKSBcCi0gCSQobHRfaG9zdF9mbGFncykKLSBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9MREZMQUdTICs9ICQoUExVR0lOX05WUFRYX0xERkxBR1MpCi0tbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTElCQUREID0gbGliZ29tcC5sYSAkKFBMVUdJTl9OVlBUWF9MSUJTKQotK2xpYmdvbXBfcGx1Z2luX252cHR4X2xhX0xJQkFERCA9ICQoUExVR0lOX05WUFRYX0xJQlMpCi0gbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTElCVE9PTEZMQUdTID0gLS10YWc9ZGlzYWJsZS1zdGF0aWMKLSBlbmRpZgotIAotQEAgLTQ1LDUgKzQ1LDQgQEAgbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfU09VUkNFUyA9IHBsdWdpbi9wbHVnaW4taG9zdC5jCi0gbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtREhPU1RfTk9OU0hNX1BMVUdJTgotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xERkxBR1MgPSBcCi0gCSQobGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fdmVyc2lvbl9pbmZvKSAkKGx0X2hvc3RfZmxhZ3MpCi0tbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfTElCQUREID0gbGliZ29tcC5sYQotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJQlRPT0xGTEFHUyA9IC0tdGFnPWRpc2FibGUtc3RhdGljCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxYzAyOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIGIwYjA2ODgxNzZhOTQ4Mjc3N2U5YjJlOTg0MDhiZmM0NTA1ZDMxYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDM2LzQ2XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCi0gYmFzZV9saWJkaXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotaW5kZXggMjU3YWNmMC4uYWJlYjk0OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmICBBU0FOX0NDMV9TUEVDCi0gI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZGJlNzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gNDIwY2E2NGE4NmQ1NjBhNzdlZTU5NmE5Nzc0ZDY3MmIwOGNhODI3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzcvNDZdIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IGFiZWI5NDguLmY5ZTY1ZmMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjMsNiArMjMsOCBAQAotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSAKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQuc28uMSIKLSsKLSAjdW5kZWYgIEFTQU5fQ0MxX1NQRUMKLSAjZGVmaW5lIEFTQU5fQ0MxX1NQRUMgIiV7JTpzYW5pdGl6ZShhZGRyZXNzKTotZnVud2luZC10YWJsZXN9IgotIAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzgtZml4LWctc3lzcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOC1maXgtZy1zeXNyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmE1NzRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOC1maXgtZy1zeXNyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSA4ZGYzZTcwMDdhMjJjOWQ2YmU1ZDVhZTRiOWIxNjljNWM4NDMxOTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjcgTWF5IDIwMTUgMTc6MDY6MDYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzOC80Nl0gZml4IGcrKyBzeXNyb290Ci0KLVBvcnRpb25zIG9mCi0KLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9nY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZy9tc2cyNjAxMy5odG1sCi0KLWFyZSBub3QgdXBzdHJlYW1lZCB5ZXQuIFNvIGxldHMga2VlcCBtaXNzaW5nIHBpZWNlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVdpdGhvdXQgdGhpcywgY29tcGlsaW5nIHNvbWV0aGluZyBzaW1wbGUgbGlrZSAjaW5jbHVkZSA8bGltaXRzPiBvbiB0YXJnZXQKLXdpdGggYysrIHRlc3QuY3BwIGZhaWxzIHVuYWJsZSB0byBmaW5kIHRoZSBoZWFkZXIuIHN0cmFjZSBzaG93cyBpdCBsb29raW5nIGluCi11c3IvaW5jbHVkZS94eHh4IHJhdGhlciB0aGFuIC91c3IvaW5jbHVkZS94eHh4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgNCArKystCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDQgKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDliNjBhYWQuLjZkZjU5NGMgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMzM3NSw3ICszMzc1LDkgQEAgZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdD0wCi0gaWYgdGVzdCAiJHt3aXRoX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgIGdjY19neHhfd2l0aG91dF9zeXNyb290PWBleHByICIke2djY19neHhfaW5jbHVkZV9kaXJ9IiA6ICIke3dpdGhfc3lzcm9vdH0iJ1woLipcKSdgCi0gICBpZiB0ZXN0ICIke2djY19neHhfd2l0aG91dF9zeXNyb290fSI7IHRoZW4KLS0gICAgZ2NjX2d4eF9pbmNsdWRlX2Rpcj0iJHtnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdH0iCi0rICAgIGlmIHRlc3QgeCR7d2l0aF9zeXNyb290fSAhPSB4LzsgdGhlbgotKyAgICAgIGdjY19neHhfaW5jbHVkZV9kaXI9IiR7Z2NjX2d4eF93aXRob3V0X3N5c3Jvb3R9IgotKyAgICBmaQotICAgICBnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290PTEKLSAgIGZpCi0gZmkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZTFlNTRmMi4uM2JiMjE3MyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xNTIsNyArMTUyLDkgQEAgZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdD0wCi0gaWYgdGVzdCAiJHt3aXRoX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgIGdjY19neHhfd2l0aG91dF9zeXNyb290PWBleHByICIke2djY19neHhfaW5jbHVkZV9kaXJ9IiA6ICIke3dpdGhfc3lzcm9vdH0iJ1woLipcKSdgCi0gICBpZiB0ZXN0ICIke2djY19neHhfd2l0aG91dF9zeXNyb290fSI7IHRoZW4KLS0gICAgZ2NjX2d4eF9pbmNsdWRlX2Rpcj0iJHtnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdH0iCi0rICAgIGlmIHRlc3QgeCR7d2l0aF9zeXNyb290fSAhPSB4LzsgdGhlbgotKyAgICAgIGdjY19neHhfaW5jbHVkZV9kaXI9IiR7Z2NjX2d4eF93aXRob3V0X3N5c3Jvb3R9IgotKyAgICBmaQotICAgICBnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290PTEKLSAgIGZpCi0gZmkKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM5LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMGRmOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM5LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gMWVlZGU5ZTRhMTBkMzUzMmRiODI2YTZlZWNlZDY5NWRmM2FkNWI4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDIwOjI1OjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzkvNDZdIGxpYmNjMTogZml4IGxpYmNjMSdzIGluc3RhbGwgcGF0aCBhbmQgcnBhdGgKLQotKiBJbnN0YWxsIGxpYmNjMS5zbyBhbmQgbGliY2MxcGx1Z2luLnNvIGludG8KLSAgJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKSwgYXMgd2hhdCB3ZQotICBoYWQgZG9uZSB0byBsdG8tcGx1Z2luLgotKiBGaXggYmFkIFJQQVRIIGl1c3N1ZToKLSAgZ2NjLTUuMi4wOiBwYWNrYWdlIGdjYy1wbHVnaW5zIGNvbnRhaW5zIGJhZCBSUEFUSCAvcGF0aHQvdG8vdG1wL3N5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL2xpYjY0Ly4uL2xpYjY0IGluIGZpbGUKLSAvcGF0aC90by9nY2MvNS4yLjAtcjAvcGFja2FnZXMtc3BsaXQvZ2NjLXBsdWdpbnMvdXNyL2xpYjY0L2djYy94ODZfNjQtcG9reS1saW51eC81LjIuMC9wbHVnaW4vbGliY2MxcGx1Z2luLnNvLjAuMC4wCi0gW3JwYXRoc10KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmNjMS9NYWtlZmlsZS5hbSB8IDQgKystLQotIGxpYmNjMS9NYWtlZmlsZS5pbiB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmFtIGIvbGliY2MxL01ha2VmaWxlLmFtCi1pbmRleCA3YTI3NGIzLi5kYjY5YmVhIDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KLUBAIC0zNSw4ICszNSw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKLSAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCi0gbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQotIAotLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KLS1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCi0rY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQotK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQotIAotIGlmIEVOQUJMRV9QTFVHSU4KLSBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEKLWRpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuaW4gYi9saWJjYzEvTWFrZWZpbGUuaW4KLWluZGV4IDE5MTYxMzQuLmM4OTk1ZDIgMTAwNjQ0Ci0tLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgotQEAgLTI2Miw4ICsyNjIsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIAotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYQotIEBFTkFCTEVfUExVR0lOX1RSVUVAY2MxbGliX0xUTElCUkFSSUVTID0gbGliY2MxLmxhCi0gQlVJTFRfU09VUkNFUyA9IGNvbXBpbGVyLW5hbWUuaAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDAtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MC1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWUxMzEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MC1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLUZyb20gYjQxNjc0ZDM1N2M0YmEzMjBiOTg2MGUwZjMxM2QyZjVhMzMyZjI3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0MC80Nl0gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYwotCi1CZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcwotd2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCi1iaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KLQotU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKLW5hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCi1saWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCi1pbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKLWJhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KLQotSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKLQotYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKLSAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCi1iKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgotICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotUlAgMjAxNS83LzI4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY3BwZGVmYXVsdC5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBnY2MvY3BwZGVmYXVsdC5oIHwgIDMgKystCi0gZ2NjL2djYy5jICAgICAgICB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCi1pbmRleCAwM2EwMjg3Li5mNDRjMWQ4IDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYwotKysrIGIvZ2NjL2NwcGRlZmF1bHQuYwotQEAgLTM1LDYgKzM1LDMwIEBACi0gIyB1bmRlZiBDUk9TU19JTkNMVURFX0RJUgotICNlbmRpZgotIAotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKLSsjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0rc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKLSsjZW5kaWYKLSsKLSBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUwotID0gSU5DTFVERV9ERUZBVUxUUzsKLUBAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gPSB7Ci0gI2lmZGVmIEdQTFVTUExVU19JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgZ2VuZXJpYyBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyB0YXJnZXQtZGVwZW5kZW50IGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgYmFja3dhcmQgYW5kIGRlcHJlY2F0ZWQgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotLSAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLS0gICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVIsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKLS0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMCB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAyIH0sCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0tICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgUFJFRklYX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZml4aW5jbHVkZXMuICAqLwotLSAgICB7IEZJWEVEX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwKLSsgICAgeyBGSVhFRF9JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsCi0gICAgICAgLyogQSBtdWx0aWxpYiBzdWZmaXggbmVlZHMgYWRkaW5nIGlmIGRpZmZlcmVudCBtdWx0aWxpYnMgdXNlCi0gCSBkaWZmZXJlbnQgaGVhZGVycy4gICovCi0gI2lmZGVmIFNZU1JPT1RfSEVBREVSU19TVUZGSVhfU1BFQwotQEAgLTg1LDE2ICsxMDksMTYgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2VuZGlmCi0gI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0gICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLwotLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKLS0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSAjZW5kaWYKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KLSAgIH07Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuaCBiL2djYy9jcHBkZWZhdWx0LmgKLWluZGV4IGM5ODY0NGYuLjQxOTg2NjkgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5oCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5oCi1AQCAtMzMsNyArMzMsOCBAQAotIAotIHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUKLSB7Ci0tICBjb25zdCBjaGFyICpjb25zdCBmbmFtZTsJLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCi0rICBjb25zdCBjaGFyICpmbmFtZTsgICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKwotICAgY29uc3QgY2hhciAqY29uc3QgY29tcG9uZW50OwkvKiBUaGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQotIAkJCQkgICAoc2VlIHVwZGF0ZV9wYXRoIGluIHByZWZpeC5jKSAqLwotICAgY29uc3QgY2hhciBjcGx1c3BsdXM7CQkvKiBPbmx5IGxvb2sgaGVyZSBpZiB3ZSdyZSBjb21waWxpbmcgQysrLiAgKi8KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDNjYTI3YjkuLjJiNzc1NmUgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEyMCw2ICsxMjAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqdGFyZ2V0X3N5c3RlbV9yb290ID0gVEFSR0VUX1NZU1RFTV9ST09UOwotICNlbHNlCi0gc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IDA7Ci0gI2VuZGlmCi0rIAotK3N0YXRpYyBjaGFyIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTVEVNTElCU19ESVI7Ci0gCi0gLyogTm9uemVybyBtZWFucyBwYXNzIHRoZSB1cGRhdGVkIHRhcmdldF9zeXN0ZW1fcm9vdCB0byB0aGUgY29tcGlsZXIuICAqLwotIAotQEAgLTM5MCw2ICszOTIsNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCi0gICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KLSAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCi0gICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCi0rICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4Ci0gICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgotQEAgLTEyODYsMTAgKzEyODksMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKLSAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAotICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSAKLSAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZwotICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcwotQEAgLTEyOTcsOSArMTMwMCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOwotIAotIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCi1AQCAtNTUyMyw2ICs1NTI2LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKLSAJICAgICAgfQotIAkgICAgYnJlYWs7Ci0gCi0rICAgICAgICAgIGNhc2UgJ3InOgotKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKLSsJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOwotKyAgICAgICAgICAgIGJyZWFrOwotKwotIAkgIGNhc2UgJ1MnOgotIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKLSAJICAgIGlmICh2YWx1ZSAhPSAwKQotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDEtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MS1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTUwNGExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MS1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gOTljYWRiNGQ4NDE1ZGQ1YTI3NWQ3ZDY0MTBmMjBkYjMzZDBmODQzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0MS80Nl0gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAotIG11bHRpbGliLgotCi1XZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KLTxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KLXdoaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQotY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQotdGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Ci1jby1leGlzdCBvbiB0YXJnZXQuCi0KLVdlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yawotZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgotPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KLW1pcHM2NC1wb2xrbWxsaWIzMi1saW51eAotaXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgotCi1UaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKLWlzOgotCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLXdoaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKLXdpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgotCi1UaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKLWJpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKLQotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1SUCAyMDE1LzcvMzEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggMmI3NzU2ZS4uOGY1M2FlYSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMjMwNSw3ICsyMzA1LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAgICAgICBpZiAocGF0aCA9PSBOVUxMKQotIAl7Ci0gCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7Ci0tCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0rCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0gCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7Ci0gCX0KLSAKLUBAIC0yMzE3LDYgKzIzMTcsMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLwotIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCi0gCSAgICB7Ci0rCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQotKwkgICAgICAgIHsKLSsJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7Ci0rCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47Ci0rCi0rCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47Ci0rCQkgICAgfQotKwkgICAgICAgICAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47Ci0rCQkgICAgfQotKwotKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCi0rCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCi0rCSAgICAgICAgICAgIHsKLSsJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKLSsJCSAgICAgICAgICBicmVhazsKLSsJICAgICAgICAgICAgfQotKwkgICAgICAgIH0KLSsKLSAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotIAkgICAgICBpZiAocmV0KQotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDItRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDItRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhZjc2NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQyLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLUZyb20gNzhlNzcyMDY5MDIzNDljOTI1NmYwNmMzZGQxNzkxOTdhMzlhZjJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0Mi80Nl0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKLQotV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKLUNGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQotQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCi1XaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKLXRoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCi0KLVRoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAotQ1BQLCBhbmQgR01QSU5DLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKwotIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgMiArLQotIGdjYy9jb25maWd1cmUuYWMgfCAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggYTc4M2UxZS4uOGI2ZDNkMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHQ0o9IiQoR0NKX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0NKOyBcCi1AQCAtMTcwLDYgKzE3MSw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg3LDYgKzE5MSw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLUBAIC03MTAsNiArNzE1LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAotIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAotIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKLSsJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKLSAJIkZMRVg9JChGTEVYKSIgXAotIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCi1pbmRleCAxZWExOTU0Li43OGE1OWMzIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUudHBsCi0rKysgYi9NYWtlZmlsZS50cGwKLUBAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdDSj0iJChHQ0pfRk9SX0JVSUxEKSI7IGV4cG9ydCBHQ0o7IFwKLUBAIC0xNzIsNiArMTczLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xODksNiArMTkzLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggY2Q1YmM0YS4uOThhZTRmNCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNzYyLDcgKzc2Miw3IEBAIEJVSUxEX0xJTktFUkZMQUdTID0gJChCVUlMRF9DWFhGTEFHUykKLSAjIE5hdGl2ZSBsaW5rZXIgYW5kIHByZXByb2Nlc3NvciBmbGFncy4gIEZvciB4LWZyYWdtZW50IG92ZXJyaWRlcy4KLSBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAotIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCi0tCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKLSsJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKLSAKLSAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCi0gR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDZkZjU5NGMuLmZjYjA1ZTcgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE1MjEsNyArMTE1MjEsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCAzYmIyMTczLi45MjNiYzlhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE2MzMsNyArMTYzMyw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0My1saWJzdGRjLVN1cHBvcnQtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0My1saWJzdGRjLVN1cHBvcnQtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFkODQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDMtbGlic3RkYy1TdXBwb3J0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGRmNDMwYjk0M2EyZGY2YjcyMDU0YzgwOGQ0YjkzMzM4YTgyNTYyZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA4IERlYyAyMDE1IDA4OjIzOjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDMvNDZdIGxpYnN0ZGMrKzogU3VwcG9ydCBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0IHwgMTAgKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QKLWluZGV4IDY0MDE5OWMuLjE3NTY0NDQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdAotQEAgLTI3NCwxNCArMjc0LDI0IEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCi0gICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9ic2QvZnJlZWJzZCIKLSAgICAgOzsKLSAgIGdudSogfCBsaW51eCogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotKyAgICAjIGNoZWNrIGZvciBtdXNsIGJ5IHRhcmdldAotKyAgICBjYXNlICIke2hvc3Rfb3N9IiBpbgotKyAgICAgICotbXVzbCopCi0rICAgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvZ2VuZXJpYyIKLSsgICAgICAgIDs7Ci0rICAgICAgKikKLSAgICAgaWYgWyAiJHVjbGliYyIgPSAieWVzIiBdOyB0aGVuCi0gICAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL3VjbGliYyIKLSAgICAgZWxpZiBbICIkYmlvbmljIiA9ICJ5ZXMiIF07IHRoZW4KLSAgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvYmlvbmljIgotKyAgICBlbGlmIFsgIiRtdXNsIiA9ICJ5ZXMiIF07IHRoZW4KLSsgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvZ2VuZXJpYyIKLSAgICAgZWxzZQotICAgICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9nbnUtbGludXgiCi0gICAgIGZpCi0gICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSAgIGhwdXgqKQotICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvaHB1eCIKLSAgICAgOzsKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ0LUFkZGluZy1tbXVzbC1hcy1hLW11c2wtbGliYy1zcGVjaWZpZXItYW5kLXRoZS1uZWNlc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZhYTk2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi1Gcm9tIDBiNTQ3OTlkODBmYjg1OWM3YjE0MjQ2N2U0ZDQyYzk5ZGI1OWRmNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA4IERlYyAyMDE1IDA4OjMwOjM1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDQvNDZdIEFkZGluZyAtbW11c2wgYXMgYSBtdXNsIGxpYmMgc3BlY2lmaWVyLCBhbmQgdGhlCi0gbmVjZXNzYXJ5IGhhY2tzIGZvciBpdCB0byBrbm93IGhvdyB0byBmaW5kIG11c2wncyBkeW5hbWljIGxpbmtlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbcGFydGlhbF0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnLmdjYyAgICAgICAgICAgICAgICB8ICAxMCArKysrLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQotIGdjYy9jb25maWcvbGludXgub3B0ICAgICAgICAgIHwgICA0ICsrCi0gZ2NjL2NvbmZpZy9yczYwMDAvc2VjdXJlcGx0LmggfCAgIDEgKwotIGdjYy9jb25maWcvcnM2MDAwL3N5c3Y0LmggICAgIHwgICA1ICsrKwotIGdjYy9naW5jbHVkZS9zdGRkZWYuaCAgICAgICAgIHwgICAzICsrCi0gNiBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy5nY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnLmdjYwotKysrIGdjYy01LjQuMC9nY2MvY29uZmlnLmdjYwotQEAgLTU3NSw3ICs1NzUsNyBAQCBjYXNlICR7dGFyZ2V0fSBpbgotIGVzYWMKLSAKLSAjIENvbW1vbiBDIGxpYnJhcmllcy4KLS10bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBMSUJDX0dMSUJDPTEgTElCQ19VQ0xJQkM9MiBMSUJDX0JJT05JQz0zIgotK3RtX2RlZmluZXM9IiR0bV9kZWZpbmVzIExJQkNfR0xJQkM9MSBMSUJDX1VDTElCQz0yIExJQkNfQklPTklDPTMgTElCQ19NVVNMPTQiCi0gCi0gIyAzMi1iaXQgeDg2IHByb2Nlc3NvcnMgc3VwcG9ydGVkIGJ5IC0td2l0aC1hcmNoPS4gIEVhY2ggcHJvY2Vzc29yCi0gIyBNVVNUIGJlIHNlcGFyYXRlZCBieSBleGFjdGx5IG9uZSBzcGFjZS4KLUBAIC03MjAsNiArNzIwLDkgQEAgY2FzZSAke3RhcmdldH0gaW4KLSAgICAgKi0qLSp1Y2xpYmMqKQotICAgICAgIHRtX2RlZmluZXM9IiR0bV9kZWZpbmVzIERFRkFVTFRfTElCQz1MSUJDX1VDTElCQyIKLSAgICAgICA7OwotKyAgICAqLSotKm11c2wqKQotKyAgICAgIHRtX2RlZmluZXM9IiR0bV9kZWZpbmVzIERFRkFVTFRfTElCQz1MSUJDX01VU0wiCi0rICAgICAgOzsKLSAgICAgKikKLSAgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19HTElCQyIKLSAgICAgICA7OwotQEAgLTI0MjAsNiArMjQyMywxMSBAQCBwb3dlcnBjKi0qLWxpbnV4KikKLSAJICAgIHBvd2VycGMqLSotbGludXgqcGFpcmVkKikKLSAJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gcnM2MDAwLzc1MGNsLmgiIDs7Ci0gCWVzYWMKLSsgICAgICAgIGNhc2UgJHt0YXJnZXR9IGluCi0rCSAgICAqLWxpbnV4Ki1tdXNsKikKLSsJCWVuYWJsZV9zZWN1cmVwbHQ9eWVzIDs7Ci0rCWVzYWMKLSsKLSAJaWYgdGVzdCB4JHtlbmFibGVfc2VjdXJlcGx0fSA9IHh5ZXM7IHRoZW4KLSAJCXRtX2ZpbGU9InJzNjAwMC9zZWN1cmVwbHQuaCAke3RtX2ZpbGV9IgotIAlmaQotSW5kZXg6IGdjYy01LjQuMC9nY2MvY29uZmlnL2xpbnV4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBnY2MtNS40LjAvZ2NjL2NvbmZpZy9saW51eC5oCi1AQCAtMzIsMTAgKzMyLDEyIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKLSAjZGVmaW5lIE9QVElPTl9HTElCQyAgKERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDKQotICNkZWZpbmUgT1BUSU9OX1VDTElCQyAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKQotICNkZWZpbmUgT1BUSU9OX0JJT05JQyAoREVGQVVMVF9MSUJDID09IExJQkNfQklPTklDKQotKyNkZWZpbmUgT1BUSU9OX01VU0wgICAoREVGQVVMVF9MSUJDID09IExJQkNfTVVTTCkKLSAjZWxzZQotICNkZWZpbmUgT1BUSU9OX0dMSUJDICAobGludXhfbGliYyA9PSBMSUJDX0dMSUJDKQotICNkZWZpbmUgT1BUSU9OX1VDTElCQyAobGludXhfbGliYyA9PSBMSUJDX1VDTElCQykKLSAjZGVmaW5lIE9QVElPTl9CSU9OSUMgKGxpbnV4X2xpYmMgPT0gTElCQ19CSU9OSUMpCi0rI2RlZmluZSBPUFRJT05fTVVTTCAgIChsaW51eF9saWJjID09IExJQkNfTVVTTCkKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIEdOVV9VU0VSX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMoKQkJCVwKLUBAIC01MywxOCArNTUsMjEgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USQotICAgIHVDbGliYyBvciBCaW9uaWMgaXMgdGhlIGRlZmF1bHQgQyBsaWJyYXJ5IGFuZCB3aGV0aGVyCi0gICAgLW11Y2xpYmMgb3IgLW1nbGliYyBvciAtbWJpb25pYyBoYXMgYmVlbiBwYXNzZWQgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LiAgKi8KLSAKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUjEoTElCQzEsIExJQkMyLCBMSUJDMywgTEQxLCBMRDIsIExEMykJXAotLSAgIiV7IiBMSUJDMiAiOiIgTEQyICI7OiV7IiBMSUJDMyAiOiIgTEQzICI7OiIgTEQxICJ9fSIKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUjEoTElCQzEsIExJQkMyLCBMSUJDMywgTElCQzQsIExEMSwgTEQyLCBMRDMsIExENCkJXAotKyAgIiV7IiBMSUJDMiAiOiIgTEQyICI7OiV7IiBMSUJDMyAiOiIgTEQzICI7OiV7IiBMSUJDNCAiOiIgTEQ0ICI7OiIgTEQxICJ9fX0iCi0gCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCi0tI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQikgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1nbGliYyIsICJtdWNsaWJjIiwgIm1iaW9uaWMiLCBHLCBVLCBCKQotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIsIE0pIFwKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtZ2xpYmMiLCAibXVjbGliYyIsICJtYmlvbmljIiwgIm1tdXNsIiwgRywgVSwgQiwgTSkKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCKSBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibXVjbGliYyIsICJtZ2xpYmMiLCAibWJpb25pYyIsIFUsIEcsIEIpCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQiwgTSkgXAotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm11Y2xpYmMiLCAibWdsaWJjIiwgIm1iaW9uaWMiLCAibW11c2wiLCBVLCBHLCBCLCBNKQotICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0JJT05JQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIpIFwKLS0gIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtYmlvbmljIiwgIm1nbGliYyIsICJtdWNsaWJjIiwgQiwgRywgVSkKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCLCBNKSBcCi0rICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibWJpb25pYyIsICJtZ2xpYmMiLCAibXVjbGliYyIsICJtbXVzbCIsIEIsIEcsIFUsIE0pCi0rI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIsIE0pIFwKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtbXVzbCIsICJtZ2xpYmMiLCAibXVjbGliYyIsICJtYmlvbmljIiwgTSwgRywgVSwgQikKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgREVGQVVMVF9MSUJDIgotICNlbmRpZiAvKiBERUZBVUxUX0xJQkMgKi8KLUBAIC04NCwxNiArODksMTYgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USQotIAotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIJCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIsCVwKLS0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIsIE1VU0xfRFlOQU1JQ19MSU5LRVIpCi0gI2RlZmluZSBHTlVfVVNFUl9EWU5BTUlDX0xJTktFUjMyCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyLCBcCi0tCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiwgTVVTTF9EWU5BTUlDX0xJTktFUjMyKQotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVI2NAkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjY0LCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgXAotLQkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCkKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSNjQsIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCkKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSWDMyCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIsIFwKLS0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSWDMyKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJYMzIsIE1VU0xfRFlOQU1JQ19MSU5LRVJYMzIpCi0gCi0gLyogV2hldGhlciB3ZSBoYXZlIEJpb25pYyBsaWJjIHJ1bnRpbWUgKi8KLSAjdW5kZWYgVEFSR0VUX0hBU19CSU9OSUMKLUBAIC0xMjMsMyArMTI4LDc0IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKLSAjIGRlZmluZSBUQVJHRVRfTElCQ19IQVNfRlVOQ1RJT04gbGludXhfbGliY19oYXNfZnVuY3Rpb24KLSAKLSAjZW5kaWYKLSsKLSsvKiBtdXNsIGF2b2lkcyBwcm9ibGVtYXRpYyBpbmNsdWRlcyBieSByZWFycmFuZ2luZyB0aGUgaW5jbHVkZSBkaXJlY3Rvcmllcy4KLSsgKiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gY3BwZGVmYXVsdC5jICovCi0rI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9HUFAJCQlcCi0rICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwJCVwKLSsgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwJCVwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCQlcCi0rICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCQlcCi0rICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwJXAotKyAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotKwotKyNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCQkJXAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCQlcCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1BSRUZJWAkJCVwKLSsgICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDB9LAotKyNlbHNlCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfUFJFRklYCi0rI2VuZGlmCi0rCi0rI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MJCQlcCi0rICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9UT09MCQkJXAotKyAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDB9LAotKyNlbHNlCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAotKyNlbmRpZgotKwotKyNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUJCQlcCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCAwLCAwLCAwLCAxLCAyIH0sCVwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIDAsIDAsIDAsIDEsIDAgfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIChDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFKSAmJiAhZGVmaW5lZCAoVEFSR0VUX1NZU1RFTV9ST09UKQotKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rIyB1bmRlZiBJTkNMVURFX0RFRkFVTFRTX01VU0xfTkFUSVZFCi0rIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQotKyNlbHNlCi0rIyB1bmRlZiBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MKLSsjIGRlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MKLSsjZW5kaWYKLSsKLSsjdW5kZWYgSU5DTFVERV9ERUZBVUxUUwotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUUwkJCQlcCi0rICB7CQkJCQkJCVwKLSsgICAgSU5DTFVERV9ERUZBVUxUU19NVVNMX0dQUAkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9QUkVGSVgJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9DUk9TUwkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9UT09MCQkJCVwKLSsgICAgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQkJCVwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAxLCAwLCAwIH0sCQlcCi0rICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9CQkJCVwKLSsgIH0KLSsjZW5kaWYKLUluZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy9saW51eC5vcHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnL2xpbnV4Lm9wdAotKysrIGdjYy01LjQuMC9nY2MvY29uZmlnL2xpbnV4Lm9wdAotQEAgLTI4LDUgKzI4LDkgQEAgVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBWYXIobGludXhfbAotIFVzZSBHTlUgQyBsaWJyYXJ5Ci0gCi0gbXVjbGliYwotLVRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2xpYmMsTElCQ19VQ0xJQkMpIE5lZ2F0aXZlKG1iaW9uaWMpCi0rVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBWYXIobGludXhfbGliYyxMSUJDX1VDTElCQykgTmVnYXRpdmUobW11c2wpCi0gVXNlIHVDbGliYyBDIGxpYnJhcnkKLSsKLSttbXVzbAotK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2xpYmMsTElCQ19NVVNMKSBOZWdhdGl2ZShtYmlvbmljKQotK1VzZSBtdXNsIEMgbGlicmFyeQotSW5kZXg6IGdjYy01LjQuMC9nY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy01LjQuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oCi0rKysgZ2NjLTUuNC4wL2djYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oCi1AQCAtMTgsMyArMTgsNCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLgotIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2RlZmluZSBDQzFfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgIi1tc2VjdXJlLXBsdCIKLSsjZGVmaW5lIExJTktfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgIi0tc2VjdXJlLXBsdCIKLUluZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy01LjQuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLSsrKyBnY2MtNS40LjAvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotQEAgLTUzOCw2ICs1MzgsMTAgQEAgRU5ESUFOX1NFTEVDVCgiIC1tYmlnIiwgIiAtbWxpdHRsZSIsIERFRgotICNkZWZpbmUgQ0MxX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICIiCi0gI2VuZGlmCi0gCi0rI2lmbmRlZiBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDCi0rI2RlZmluZSBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICIiCi0rI2VuZGlmCi0rCi0gLyogUGFzcyAtRyB4eHggdG8gdGhlIGNvbXBpbGVyLiAgKi8KLSAjdW5kZWYgQ0MxX1NQRUMKLSAjZGVmaW5lCUNDMV9TUEVDICIle0cqfSAlKGNjMV9jcHUpIiBcCi1AQCAtODg5LDYgKzg5Myw3IEBAIG5jcnRuLm8lcyIKLSAgIHsgImxpbmtfb3Nfb3BlbmJzZCIsCQlMSU5LX09TX09QRU5CU0RfU1BFQyB9LAkJCVwKLSAgIHsgImxpbmtfb3NfZGVmYXVsdCIsCQlMSU5LX09TX0RFRkFVTFRfU1BFQyB9LAkJCVwKLSAgIHsgImNjMV9zZWN1cmVfcGx0X2RlZmF1bHQiLAlDQzFfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgfSwJCVwKLSsgIHsgImxpbmtfc2VjdXJlX3BsdF9kZWZhdWx0IiwJTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyB9LAkJXAotICAgeyAiY3BwX29zX2FkcyIsCQlDUFBfT1NfQURTX1NQRUMgfSwJCQlcCi0gICB7ICJjcHBfb3NfeWVsbG93a25pZmUiLAlDUFBfT1NfWUVMTE9XS05JRkVfU1BFQyB9LAkJXAotICAgeyAiY3BwX29zX212bWUiLAkJQ1BQX09TX01WTUVfU1BFQyB9LAkJCVwKLUluZGV4OiBnY2MtNS40LjAvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTUuNC4wLm9yaWcvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi0rKysgZ2NjLTUuNC4wL2djYy9naW5jbHVkZS9zdGRkZWYuaAotQEAgLTE4NCw2ICsxODQsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotICNpZm5kZWYgX0dDQ19TSVpFX1QKLSAjaWZuZGVmIF9TSVpFVF8KLSAjaWZuZGVmIF9fc2l6ZV90Ci0rI2lmbmRlZiBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9fc2l6ZV90X18JLyogQmVPUyAqLwotICNkZWZpbmUgX19TSVpFX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLwotICNkZWZpbmUgX1NJWkVfVAotQEAgLTIwMCw2ICsyMDEsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotICNkZWZpbmUgX19faW50X3NpemVfdF9oCi0gI2RlZmluZSBfR0NDX1NJWkVfVAotICNkZWZpbmUgX1NJWkVUXwotKyNkZWZpbmUgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2lmIChkZWZpbmVkIChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fID49IDUpKSBcCi0gICB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKLSAgIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQotQEAgLTIxOCw2ICsyMjAsNyBAQCB0eXBlZGVmIF9fU0laRV9UWVBFX18gc2l6ZV90OwotIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNlbmRpZiAvKiBfX0JFT1NfXyAqLwotICNlbmRpZiAvKiAhKGRlZmluZWQgKF9fR05VR19fKSAmJiBkZWZpbmVkIChzaXplX3QpKSAqLwotKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCi0gI2VuZGlmIC8qIF9fc2l6ZV90ICovCi0gI2VuZGlmIC8qIF9TSVpFVF8gKi8KLSAjZW5kaWYgLyogX0dDQ19TSVpFX1QgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0NS1TdXBwb3J0LWZvci1hcm0tbGludXgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0NS1TdXBwb3J0LWZvci1hcm0tbGludXgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MxMTE1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDUtU3VwcG9ydC1mb3ItYXJtLWxpbnV4LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotRnJvbSBhNmM2NDk1NzFkNDljOTcyZTZkMjA3NTc3NzgwYWRhN2U5YjZiYWQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOCBEZWMgMjAxNSAwODozMTo1MiArMDAwMAotU3ViamVjdDogW1BBVENIIDQ1LzU3XSBTdXBwb3J0IGZvciBhcm0tbGludXgtbXVzbC4KLQotRml4IG11c2wgbGRzbyBmb3IgYWxsIGFyY2hlcwotCi1VcHN0cmVhbS1TdGF0dXM6IGJhY2twb3J0IFtwYXJ0aWFsXQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAgMSArCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICAgICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICAgICAgICB8ICAxICsKLSBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgICAgICAgIHwgIDUgKysrKysKLSBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgICAgICAgIHwgIDggKysrKysrKy0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggICAgICAgIHwgMTMgKysrKysrKysrLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3N5c3Y0LmggICAgICAgICAgfCAxMCArKysrKysrLS0tCi0gbGliaXRtL2NvbmZpZy9hcm0vaHdjYXAuY2MgICAgICAgICB8ICA0ICsrKysKLSBsaWJpdG0vY29uZmlnL2xpbnV4L3g4Ni90bHMuaCAgICAgIHwgIDggKysrKysrLS0KLSA5IGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IGY5ZTY1ZmMuLjFiMmQwYzAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjIsNiArMjIsNyBAQAotICNkZWZpbmUgR0NDX0FBUkNINjRfTElOVVhfSAotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQuc28uMSIKLSAKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQuc28uMSIKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IDA0OGEwNjIuLmFkYjljNDQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTgxLDYgKzgxLDIzIEBACi0gI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCi0gI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKLSAKLSsvKiBGb3IgQVJNIG11c2wgY3VycmVudGx5IHN1cHBvcnRzIGZvdXIgZHluYW1pYyBsaW5rZXJzOgotKyAgIC0gbGQtbXVzbC1hcm0uc28uMSAtIGZvciB0aGUgRUFCSS1kZXJpdmVkIHNvZnQtZmxvYXQgQUJJCi0rICAgLSBsZC1tdXNsLWFybWhmLnNvLjEgLSBmb3IgdGhlIEVBQkktZGVyaXZlZCBoYXJkLWZsb2F0IEFCSQotKyAgIC0gbGQtbXVzbC1hcm1lYi5zby4xIC0gZm9yIHRoZSBFQUJJLWRlcml2ZWQgc29mdC1mbG9hdCBBQkksIEVCCi0rICAgLSBsZC1tdXNsLWFybWViaGYuc28uMSAtIGZvciB0aGUgRUFCSS1kZXJpdmVkIGhhcmQtZmxvYXQgQUJJLCBFQgotKyAgIG11c2wgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbGVnYWN5IE9BQkkgbW9kZS4KLSsgICBBbGwgdGhlIGR5bmFtaWMgbGlua2VycyBsaXZlIGluIC9saWIuCi0rICAgV2UgZGVmYXVsdCB0byBzb2Z0LWZsb2F0LCBFTC4gKi8KLSsjdW5kZWYgIE1VU0xfRFlOQU1JQ19MSU5LRVIKLSsjaWYgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVAotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21saXR0bGUtZW5kaWFuOjs6ZWJ9IgotKyNlbHNlCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWJpZy1lbmRpYW46ZWJ9IgotKyNlbmRpZgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBcCi0rICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCi0rCi0gLyogQXQgdGhpcyBwb2ludCwgYnBhYmkuaCB3aWxsIGhhdmUgY2xvYmJlcmVkIExJTktfU1BFQy4gIFdlIHdhbnQgdG8KLSAgICB1c2UgdGhlIEdOVS9MaW51eCB2ZXJzaW9uLCBub3QgdGhlIGdlbmVyaWMgQlBBQkkgdmVyc2lvbi4gICovCi0gI3VuZGVmICBMSU5LX1NQRUMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1pbmRleCAyMWJhMmIyLi5lMmI4MWU1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1AQCAtMjEsMyArMjEsNCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWkzODYuc28uMSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotaW5kZXggNjE4NWNjZS4uNWEzYTk3NyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLUBAIC0zMCwzICszMCw4IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgotKwotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWkzODYuc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC14ODZfNjQuc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLW11c2wteDMyLnNvLjEiCi0rCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotaW5kZXggYzMwNmFmYi4uYjg5OTM4OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotQEAgLTIxLDYgKzIxLDEyIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGY2NCV7RUI6Yn0le0VMOmx9dHNtaXAiCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgotIAotKyN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1taXBzJXtFTDplbH0le21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjY0Ci0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLW11c2wtbWlwczY0JXtFTDplbH0le21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVJOMzIgU1lTVEVNTElCU19ESVIgImxkLW11c2wtbWlwc24zMiV7RUw6ZWx9JXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0rCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLSAgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLUBAIC00MCw0ICs0Niw0IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJOMzIgIi9zeXN0ZW0vYmluL2xpbmtlcjMyIgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVJOMzIgXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUk4zMiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEJJT05JQ19EWU5BTUlDX0xJTktFUk4zMikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgQklPTklDX0RZTkFNSUNfTElOS0VSTjMyLCAgTVVTTF9EWU5BTUlDX0xJTktFUk4zMikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDMxYzQzMzguLjY3OWRhNGIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTM2NSwxNyArMzY1LDIyIEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI2VuZGlmCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjLnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYzY0LnNvLjEiCi0rCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle211Y2xpYmM6IiBVICI7OiIgRyAifSIKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttdWNsaWJjOiIgVSAiOzole21tdXNsOiIgTSAiOzoiIEcgIn19IgotKyNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttZ2xpYmM6IiBHICI7OiV7bXVjbGliYzoiIFUgIjs6IiBNICJ9fSIKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgREVGQVVMVF9MSUJDIgotICNlbmRpZgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyKQotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgTVVTTF9EWU5BTUlDX0xJTktFUjMyKQotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSNjQsIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0KQotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjY0LCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgTVVTTF9EWU5BTUlDX0xJTktFUjY0KQotIAotICN1bmRlZiAgREVGQVVMVF9BU01fRU5ESUFOCi0gI2lmIChUQVJHRVRfREVGQVVMVCAmIE1BU0tfTElUVExFX0VORElBTikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotaW5kZXggN2NkMDdlMC4uODc5NGZhNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLUBAIC03NjMsMTUgKzc2MywxOSBAQCBFTkRJQU5fU0VMRUNUKCIgLW1iaWciLCAiIC1tbGl0dGxlIiwgREVGQVVMVF9BU01fRU5ESUFOKQotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQuc28uMSIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1wb3dlcnBjLnNvLjEiCi0rCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKLSsjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgIiV7bWdsaWJjOiIgRyAiOzole211Y2xpYmM6IiBVICI7OiIgTSAifX0iCi0gI2VsaWYgIWRlZmluZWQgKERFRkFVTFRfTElCQykgfHwgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttdWNsaWJjOiIgVSAiOzoiIEcgIn0iCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgIiV7bXVjbGliYzoiIFUgIjs6JXttbXVzbDoiIE0gIjs6IiBHICJ9fSIKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgREVGQVVMVF9MSUJDIgotICNlbmRpZgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSKQotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSLCBNVVNMX0RZTkFNSUNfTElOS0VSKQotIAotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDICItbSBlbGYzMnBwY2xpbnV4ICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gXAotZGlmZiAtLWdpdCBhL2xpYml0bS9jb25maWcvYXJtL2h3Y2FwLmNjIGIvbGliaXRtL2NvbmZpZy9hcm0vaHdjYXAuY2MKLWluZGV4IGExYzJjZmQuLmRkNGZhZDIgMTAwNjQ0Ci0tLS0gYS9saWJpdG0vY29uZmlnL2FybS9od2NhcC5jYwotKysrIGIvbGliaXRtL2NvbmZpZy9hcm0vaHdjYXAuY2MKLUBAIC00MCw3ICs0MCwxMSBAQCBpbnQgR1RNX2h3Y2FwIEhJRERFTiA9IDAKLSAKLSAjaWZkZWYgX19saW51eF9fCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8c3lzL2ZjbnRsLmg+Ci0rI2Vsc2UKLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8ZWxmLmg+Ci0gCi0gc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKQotZGlmZiAtLWdpdCBhL2xpYml0bS9jb25maWcvbGludXgveDg2L3Rscy5oIGIvbGliaXRtL2NvbmZpZy9saW51eC94ODYvdGxzLmgKLWluZGV4IGU3MzFhYjcuLjU0YWQ4YjYgMTAwNjQ0Ci0tLS0gYS9saWJpdG0vY29uZmlnL2xpbnV4L3g4Ni90bHMuaAotKysrIGIvbGliaXRtL2NvbmZpZy9saW51eC94ODYvdGxzLmgKLUBAIC0yNSwxNiArMjUsMTkgQEAKLSAjaWZuZGVmIExJQklUTV9YODZfVExTX0gKLSAjZGVmaW5lIExJQklUTV9YODZfVExTX0ggMQotIAotLSNpZiBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKSAmJiBfX0dMSUJDX1BSRVJFUSgyLCAxMCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKLSsjaWYgX19HTElCQ19QUkVSRVEoMiwgMTApCi0gLyogVXNlIHNsb3RzIGluIHRoZSBUQ0IgaGVhZCByYXRoZXIgdGhhbiBfX3RocmVhZCBsb29rdXBzLgotICAgIEdMSUJDIGhhcyByZXNlcnZlZCB3b3JkcyAxMCB0aHJvdWdoIDEzIGZvciBUTS4gICovCi0gI2RlZmluZSBIQVZFX0FSQ0hfR1RNX1RIUkVBRCAxCi0gI2RlZmluZSBIQVZFX0FSQ0hfR1RNX1RIUkVBRF9ESVNQIDEKLSAjZW5kaWYKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiY29uZmlnL2dlbmVyaWMvdGxzLmgiCi0gCi0tI2lmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpICYmIF9fR0xJQkNfUFJFUkVRKDIsIDEwKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKQotKyNpZiBfX0dMSUJDX1BSRVJFUSgyLCAxMCkKLSBuYW1lc3BhY2UgR1RNIEhJRERFTiB7Ci0gCi0gI2lmZGVmIF9feDg2XzY0X18KLUBAIC0xMDEsNSArMTA0LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldF9hYmlfZGlzcChzdHJ1Y3QgYWJpX2Rpc3BhdGNoICp4KQotIAotIH0gLy8gbmFtZXNwYWNlIEdUTQotICNlbmRpZiAvKiA+PSBHTElCQyAyLjEwICovCi0rI2VuZGlmCi0gCi0gI2VuZGlmIC8vIExJQklUTV9YODZfVExTX0gKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ2LUdldC1yaWQtb2YtZXZlci1icm9rZW4tZml4aW5jbHVkZXMtb24tbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ni1HZXQtcmlkLW9mLWV2ZXItYnJva2VuLWZpeGluY2x1ZGVzLW9uLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkYjBmYzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ2LUdldC1yaWQtb2YtZXZlci1icm9rZW4tZml4aW5jbHVkZXMtb24tbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gMDQ3MTE2ZThjOWNiYjM0MDI2NGY0ZjI4ZGIzZjIxYTY4YmE1N2ZmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDggRGVjIDIwMTUgMDg6MzI6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0Ni80Nl0gR2V0IHJpZCBvZiBldmVyLWJyb2tlbiBmaXhpbmNsdWRlcyBvbiBtdXNsLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBmaXhpbmNsdWRlcy9ta2ZpeGluYy5zaCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZml4aW5jbHVkZXMvbWtmaXhpbmMuc2ggYi9maXhpbmNsdWRlcy9ta2ZpeGluYy5zaAotaW5kZXggNjY1M2ZlZGIuLjBkOTZjOGMgMTAwNzU1Ci0tLS0gYS9maXhpbmNsdWRlcy9ta2ZpeGluYy5zaAotKysrIGIvZml4aW5jbHVkZXMvbWtmaXhpbmMuc2gKLUBAIC0xOSw3ICsxOSw4IEBAIGNhc2UgJG1hY2hpbmUgaW4KLSAgICAgcG93ZXJwYy0qLWVhYmkqICAgIHwgXAotICAgICBwb3dlcnBjLSotcnRlbXMqICAgfCBcCi0gICAgIHBvd2VycGNsZS0qLWVhYmlzaW0qIHwgXAotLSAgICBwb3dlcnBjbGUtKi1lYWJpKiApCi0rICAgIHBvd2VycGNsZS0qLWVhYmkqIHwgXAotKyAgICAqLW11c2wqICkKLSAJIyAgSUYgdGhlcmUgaXMgbm8gaW5jbHVkZSBmaXhpbmcsCi0gCSMgIFRIRU4gY3JlYXRlIGEgbm8tb3AgZml4ZXIgYW5kIGV4aXQKLSAJKGVjaG8gIiMhIC9iaW4vc2giIDsgZWNobyAiZXhpdCAwIiApID4gJHt0YXJnZXR9Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ny1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ny1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFjZmI5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDctbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGY1Y2EwNzEzMmI5MjkyZDIwNDVjYTcyMDRlOWNiZmRlMmU1OWQwYmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNDcvNDhdIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLWluZGV4IGY0M2Y2NTUuLjU1ODdhYjMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAotQEAgLTMwLDYgKzMwLDcgQEAKLSAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgotIAotICN1bmRlZiBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ4LXNzcF9ub25zaGFyZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDgtc3NwX25vbnNoYXJlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRkZDQwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDgtc3NwX25vbnNoYXJlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gM2NiNjAxM2NmMjg3ZWQ5YjEyNDdlYTM3NTQxZTY0Yjk4MTBhMTIxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgotRGF0ZTogU2F0LCA3IE5vdiAyMDE1IDE0OjU4OjQwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDgvNDhdIHNzcF9ub25zaGFyZWQKLQotLS0tCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnY2MvZ2NjLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggOGY1M2FlYS4uM2RkYzY1OCAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtNzMyLDcgKzczMiw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAjaWZuZGVmIExJTktfU1NQX1NQRUMKLSAjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCi0gI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLS0JCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQ6fSIKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0gI2Vsc2UKLSAjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAotIAkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDktRGlzYWJsZS10aGUtd2Vhay1yZWZlcmVuY2UtbG9naWMtaW4tZ3Roci5oLWZvci1vcy1nZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0OS1EaXNhYmxlLXRoZS13ZWFrLXJlZmVyZW5jZS1sb2dpYy1pbi1ndGhyLmgtZm9yLW9zLWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWE1MTQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0OS1EaXNhYmxlLXRoZS13ZWFrLXJlZmVyZW5jZS1sb2dpYy1pbi1ndGhyLmgtZm9yLW9zLWdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSA1NTNkOGUzYjkwNzNmZjNlMGE5ZDJmYWM5YjE4MjNmYjE3YWQyNDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMiBGZWIgMjAxNiAyMTowMDoxOCAtMDgwMAotU3ViamVjdDogW1BBVENIIDQ5LzUxXSBEaXNhYmxlIHRoZSB3ZWFrIHJlZmVyZW5jZSBsb2dpYyBpbiBndGhyLmggZm9yCi0gb3MvZ2VuZXJpYwotCi1JdCBkb2VzIG5vdCB3b3JrIHVubGVzcyB3b3JrIGFyb3VuZHMgYXJlIHRoZXJlIGluIGd0aHItcG9zaXguaAotCi1vcmlnaW4gb2YgcGF0Y2gKLWh0dHA6Ly9wb3J0NzAubmV0L35uc3ovbXVzbC9nY2MtNS4zLjAvMDAwNC1ndGhyLnBhdGNoCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gbGliZ2ZvcnRyYW4vYWNpbmNsdWRlLm00ICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGxpYnN0ZGMrKy12My9jb25maWcvb3MvZ2VuZXJpYy9vc19kZWZpbmVzLmggfCA1ICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0ICAgICAgICAgICAgICAgICB8IDMgKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vYWNpbmNsdWRlLm00IGIvbGliZ2ZvcnRyYW4vYWNpbmNsdWRlLm00Ci1pbmRleCBiYTg5MGY5Li4zMGI4YjFhNiAxMDA2NDQKLS0tLSBhL2xpYmdmb3J0cmFuL2FjaW5jbHVkZS5tNAotKysrIGIvbGliZ2ZvcnRyYW4vYWNpbmNsdWRlLm00Ci1AQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgZm9vICh2b2lkKTsKLSAJICAgICAgW0RlZmluZSB0byAxIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgI3ByYWdtYSB3ZWFrXSkKLSAgIGZpCi0gICBjYXNlICIkaG9zdCIgaW4KLS0gICAgKi0qLWRhcndpbiogfCAqLSotaHB1eCogfCAqLSotY3lnd2luKiB8ICotKi1taW5ndyogKQotKyAgICAqLSotZGFyd2luKiB8ICotKi1ocHV4KiB8ICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1tdXNsKiApCi0gICAgICAgQUNfREVGSU5FKEdUSFJFQURfVVNFX1dFQUssIDAsCi0gCQlbRGVmaW5lIHRvIDAgaWYgdGhlIHRhcmdldCBzaG91bGRuJ3QgdXNlICNwcmFnbWEgd2Vha10pCi0gICAgICAgOzsKLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLWluZGV4IDVkNDdlNjUuLmNkZjk2OTUgMTAwNzU1Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotQEAgLTI2NDU2LDcgKzI2NDU2LDcgQEAgJGFzX2VjaG8gIiNkZWZpbmUgU1VQUE9SVFNfV0VBSyAxIiA+PmNvbmZkZWZzLmgKLSAKLSAgIGZpCi0gICBjYXNlICIkaG9zdCIgaW4KLS0gICAgKi0qLWRhcndpbiogfCAqLSotaHB1eCogfCAqLSotY3lnd2luKiB8ICotKi1taW5ndyogKQotKyAgICAqLSotZGFyd2luKiB8ICotKi1ocHV4KiB8ICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1tdXNsKiApCi0gCi0gJGFzX2VjaG8gIiNkZWZpbmUgR1RIUkVBRF9VU0VfV0VBSyAwIiA+PmNvbmZkZWZzLmgKLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dlbmVyaWMvb3NfZGVmaW5lcy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nZW5lcmljL29zX2RlZmluZXMuaAotaW5kZXggNDViZjUyYS4uMTAzZWMwZSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ2VuZXJpYy9vc19kZWZpbmVzLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ2VuZXJpYy9vc19kZWZpbmVzLmgKLUBAIC0zMyw0ICszMyw5IEBACi0gLy8gU3lzdGVtLXNwZWNpZmljICNkZWZpbmUsIHR5cGVkZWZzLCBjb3JyZWN0aW9ucywgZXRjLCBnbyBoZXJlLiAgVGhpcwotIC8vIGZpbGUgd2lsbCBjb21lIGJlZm9yZSBhbGwgb3RoZXJzLgotIAotKy8vIERpc2FibGUgdGhlIHdlYWsgcmVmZXJlbmNlIGxvZ2ljIGluIGd0aHIuaCBmb3Igb3MvZ2VuZXJpYyBiZWNhdXNlIGl0Ci0rLy8gaXMgYnJva2VuIG9uIGV2ZXJ5IHBsYXRmb3JtIHVubGVzcyB0aGVyZSBpcyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYwotKy8vIHdvcmthcm91bmQgaW4gZ3Roci1wb3NpeC5oIGFuZCBhdCBsaW5rLXRpbWUgZm9yIHN0YXRpYyBsaW5raW5nLgotKyNkZWZpbmUgX0dMSUJDWFhfR1RIUkVBRF9VU0VfV0VBSyAwCi0rCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0IGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0Ci1pbmRleCAxNzU2NDQ0Li4yYTg3YmI4IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0Ci0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QKLUBAIC0yNzMsNiArMjczLDkgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KLSAgIGZyZWVic2QqKQotICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvYnNkL2ZyZWVic2QiCi0gICAgIDs7Ci0rICBsaW51eC1tdXNsKikKLSsgICAgb3NfaW5jbHVkZV9kaXI9Im9zL2dlbmVyaWMiCi0rICAgIDs7Ci0gICBnbnUqIHwgbGludXgqIHwga2ZyZWVic2QqLWdudSB8IGtuZXRic2QqLWdudSkKLSAgICAgIyBjaGVjayBmb3IgbXVzbCBieSB0YXJnZXQKLSAgICAgY2FzZSAiJHtob3N0X29zfSIgaW4KLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUwLXBvd2VycGMtcGFzcy1zZWN1cmUtcGx0LXRvLXRoZS1saW5rZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTAtcG93ZXJwYy1wYXNzLXNlY3VyZS1wbHQtdG8tdGhlLWxpbmtlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJmMmJiZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTAtcG93ZXJwYy1wYXNzLXNlY3VyZS1wbHQtdG8tdGhlLWxpbmtlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLUZyb20gNGZhMGNmMDM2NzhmODQ5OTE3ZGNjM2QxNDk5ODliN2ZlY2RiZTI3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIgRmViIDIwMTYgMjE6MTA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA1MC81MV0gcG93ZXJwYyBwYXNzIC0tc2VjdXJlLXBsdCB0byB0aGUgbGlua2VyCi0KLVNlY3VyZS1wbHQgd2hlbiBlbmFibGVkIGRvZXMgbm90IHBhc3MgcmlnaHQgb3B0aW9ucyB0byBsaW5rZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIHwgNCArKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaCAgIHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDY3OWRhNGIuLjNjYTdjZDcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTE3NCwyMCArMTc0LDI0IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI3VuZGVmCUFTTV9ERUZBVUxUX1NQRUMKLSAjdW5kZWYJQVNNX1NQRUMKLSAjdW5kZWYJTElOS19PU19MSU5VWF9TUEVDCi0rI3VuZGVmCUxJTktfU0VDVVJFX1BMVF9TUEVDCi0gCi0gI2lmbmRlZglSUzYwMDBfQklfQVJDSAotICNkZWZpbmUJQVNNX0RFRkFVTFRfU1BFQyAiLW1wcGM2NCIKLSAjZGVmaW5lCUFTTV9TUEVDCSAiJShhc21fc3BlYzY0KSAlKGFzbV9zcGVjX2NvbW1vbikiCi0gI2RlZmluZQlMSU5LX09TX0xJTlVYX1NQRUMgIiUobGlua19vc19saW51eF9zcGVjNjQpIgotKyNkZWZpbmUJTElOS19TRUNVUkVfUExUX1NQRUMgIiIKLSAjZWxzZQotICNpZiBERUZBVUxUX0FSQ0g2NF9QCi0gI2RlZmluZQlBU01fREVGQVVMVF9TUEVDICItbXBwYyV7IW0zMjo2NH0iCi0gI2RlZmluZQlBU01fU1BFQwkgIiV7bTMyOiUoYXNtX3NwZWMzMil9JXshbTMyOiUoYXNtX3NwZWM2NCl9ICUoYXNtX3NwZWNfY29tbW9uKSIKLSAjZGVmaW5lCUxJTktfT1NfTElOVVhfU1BFQyAiJXttMzI6JShsaW5rX29zX2xpbnV4X3NwZWMzMil9JXshbTMyOiUobGlua19vc19saW51eF9zcGVjNjQpfSIKLSsjZGVmaW5lCUxJTktfU0VDVVJFX1BMVF9TUEVDICIle20zMjogIiBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICJ9IgotICNlbHNlCi0gI2RlZmluZQlBU01fREVGQVVMVF9TUEVDICItbXBwYyV7bTY0OjY0fSIKLSAjZGVmaW5lCUFTTV9TUEVDCSAiJXshbTY0OiUoYXNtX3NwZWMzMil9JXttNjQ6JShhc21fc3BlYzY0KX0gJShhc21fc3BlY19jb21tb24pIgotICNkZWZpbmUJTElOS19PU19MSU5VWF9TUEVDICIleyFtNjQ6JShsaW5rX29zX2xpbnV4X3NwZWMzMil9JXttNjQ6JShsaW5rX29zX2xpbnV4X3NwZWM2NCl9IgotKyNkZWZpbmUJTElOS19TRUNVUkVfUExUX1NQRUMgIiV7IW02NDogIiBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICJ9IgotICNlbmRpZgotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCi1pbmRleCA4Nzk0ZmE1Li4wODM1NTUxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotQEAgLTU3MSw2ICs1NzEsNyBAQCBFTkRJQU5fU0VMRUNUKCIgLW1iaWciLCAiIC1tbGl0dGxlIiwgREVGQVVMVF9BU01fRU5ESUFOKQotICAgICAgICAgICAgICAgIDogJShsaW5rX3N0YXJ0X2RlZmF1bHQpICAgICB9IgotIAotICNkZWZpbmUgTElOS19TVEFSVF9ERUZBVUxUX1NQRUMgIiIKLSsjZGVmaW5lIExJTktfU0VDVVJFX1BMVF9TUEVDIExJTktfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMKLSAKLSAjdW5kZWYJTElOS19TUEVDCi0gI2RlZmluZQlMSU5LX1NQRUMgIlwKLUBAIC01NzgsNiArNTc5LDcgQEAgRU5ESUFOX1NFTEVDVCgiIC1tYmlnIiwgIiAtbWxpdHRsZSIsIERFRkFVTFRfQVNNX0VORElBTikKLSAle1IqfSBcCi0gJShsaW5rX3NobGliKSBcCi0gJXshVCo6ICUobGlua19zdGFydCkgfSBcCi0rJXshc3RhdGljOiAleyFtYnNzLXBsdDogJShsaW5rX3NlY3VyZV9wbHRfZGVmYXVsdCl9fSBcCi0gJShsaW5rX29zKSIKLSAKLSAvKiBTaGFyZWQgbGlicmFyaWVzIGFyZSBub3QgZGVmYXVsdC4gICovCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1MS1JZ25vcmUtZmRlYnVnLXByZWZpeC1tYXAtaW4tcHJvZHVjZXItc3RyaW5nLWJ5LURhbmllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4Zjc5YjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDMyNTkzYjM4MDgyZWE2NWY0YzgyMTU5MjU0YWRmMWUwZGMyNDIzYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBiZXJuZHMgPGJlcm5kc0AxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUdWUsIDE2IEZlYiAyMDE2IDAzOjE1OjE1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElnbm9yZSAtZmRlYnVnLXByZWZpeC1tYXAgaW4gcHJvZHVjZXIgc3RyaW5nIChieSBEYW5pZWwgS2FobgotIEdpbGxtb3IpCi0KLSogZHdhcmYyb3V0LmMgKGdlbl9wcm9kdWNlcl9zdHJpbmcpOiBJZ25vcmUgLWZkZWJ1Zy1wcmVmaXgtbWFwLgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMzE4MzUgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9kd2FyZjJvdXQuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCi1pbmRleCAzNjE0YzEwLi41MjZmMTE0IDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMm91dC5jCi0rKysgYi9nY2MvZHdhcmYyb3V0LmMKLUBAIC0xOTY3MCw2ICsxOTY3MCw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCi0gICAgICAgY2FzZSBPUFRfZnByZXByb2Nlc3NlZDoKLSAgICAgICBjYXNlIE9QVF9mbHRyYW5zX291dHB1dF9saXN0XzoKLSAgICAgICBjYXNlIE9QVF9mcmVzb2x1dGlvbl86Ci0rICAgICAgY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgotIAkvKiBJZ25vcmUgdGhlc2UuICAqLwotIAljb250aW51ZTsKLSAgICAgICBkZWZhdWx0OgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTItbmlvczItdXNlLXJldC13aXRoLXIzMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Mi1uaW9zMi11c2UtcmV0LXdpdGgtcjMxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2NiNDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Mi1uaW9zMi11c2UtcmV0LXdpdGgtcjMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLUZyb20gMWQ2NzEyMGQ5NWMyYzZlMGVkNGY3MzU3ZDFjYzYyODg3ZWFiYTQ2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHNhbmRyYSA8c2FuZHJhQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFR1ZSwgMTIgTWF5IDIwMTUgMTU6NTc6MjIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gMjAxNS0wNS0xMiAgQ2h1bmctTGluIFRhbmcgIDxjbHRhbmdAY29kZXNvdXJjZXJ5LmNvbT4KLSBTYW5kcmEgTG9vc2Vtb3JlIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KLQotCWdjYy8KLQkqIGNvbmZpZy9uaW9zMi9uaW9zMi5oIChlbnVtIHJlZ19jbGFzcyk6IEFkZCBJSk1QX1JFR1MgZW51bQotCXZhbHVlLgotCShSRUdfQ0xBU1NfTkFNRVMpOiBBZGQgIklKTVBfUkVHUyIuCi0JKFJFR19DTEFTU19DT05URU5UUyk6IEFkZCBuZXcgZW50cnkgZm9yIElKTVBfUkVHUy4KLQkqIGNvbmZpZy9uaW9zMi9uaW9zMi5tZCAoaW5kaXJlY3RfanVtcCwqdGFibGVqdW1wKTogQWRqdXN0IHRvCi0JdXNlIG5ldyAiYyIgcmVnaXN0ZXIgY29uc3RyYWludC4KLQkqIGNvbmZpZy9uaW9zMi9jb25zdHJhaW50Lm1kIChjKTogTmV3IHJlZ2lzdGVyIGNvbnN0cmFpbnQKLQljb3JyZXNwb25kaW5nIHRvIElKTVBfUkVHUy4KLQotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIyMzA4MiAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGdpdDovL2djYy5nbnUub3JnL2dpdC9nY2MuZ2l0IDFkNjcxMjBkOTVjMmM2ZTBlZDRmNzM1N2QxY2M2Mjg4N2VhYmE0NjMgXQotLS0tCi0gZ2NjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKysrKysrKwotIGdjYy9jb25maWcvbmlvczIvY29uc3RyYWludHMubWQgfCAgMyArKysKLSBnY2MvY29uZmlnL25pb3MyL25pb3MyLmggICAgICAgIHwgMTEgKysrKysrKy0tLS0KLSBnY2MvY29uZmlnL25pb3MyL25pb3MyLm1kICAgICAgIHwgIDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvY29uc3RyYWludHMubWQgYi9nY2MvY29uZmlnL25pb3MyL2NvbnN0cmFpbnRzLm1kCi1pbmRleCBmNGJkOWY3Li43MzVmODkyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9jb25zdHJhaW50cy5tZAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9jb25zdHJhaW50cy5tZAotQEAgLTM5LDYgKzM5LDkgQEAKLSAKLSA7OyBSZWdpc3RlciBjb25zdHJhaW50cwotIAotKyhkZWZpbmVfcmVnaXN0ZXJfY29uc3RyYWludCAiYyIgIklKTVBfUkVHUyIKLSsgICJBIHJlZ2lzdGVyIHN1aXRhYmxlIGZvciBhbiBpbmRpcmVjdCBqdW1wLiIpCi0rCi0gKGRlZmluZV9yZWdpc3Rlcl9jb25zdHJhaW50ICJqIiAiU0lCX1JFR1MiCi0gICAiQSByZWdpc3RlciBzdWl0YWJsZSBmb3IgYW4gaW5kaXJlY3Qgc2liY2FsbC4iKQotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvbmlvczIuaCBiL2djYy9jb25maWcvbmlvczIvbmlvczIuaAotaW5kZXggNTEwYWI1Zi4uYWMzMzk3OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbmlvczIvbmlvczIuaAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5oCi1AQCAtMTczLDYgKzE3Myw3IEBAIGVudW0gcmVnX2NsYXNzCi0gewotICAgTk9fUkVHUywKLSAgIFNJQl9SRUdTLAotKyAgSUpNUF9SRUdTLAotICAgR1BfUkVHUywKLSAgIEFMTF9SRUdTLAotICAgTElNX1JFR19DTEFTU0VTCi1AQCAtMTgzLDYgKzE4NCw3IEBAIGVudW0gcmVnX2NsYXNzCi0gI2RlZmluZSBSRUdfQ0xBU1NfTkFNRVMgICBcCi0gICB7ICAiTk9fUkVHUyIsCQkgIFwKLSAgICAgICJTSUJfUkVHUyIsCSAgXAotKyAgICAgIklKTVBfUkVHUyIsCSAgXAotICAgICAgIkdQX1JFR1MiLCAgICAgICAgICAgXAotICAgICAgIkFMTF9SRUdTIiB9Ci0gCi1AQCAtMTkwLDEwICsxOTIsMTEgQEAgZW51bSByZWdfY2xhc3MKLSAKLSAjZGVmaW5lIFJFR19DTEFTU19DT05URU5UUwkJCVwKLSAgIHsJCQkJCQlcCi0tICAgIC8qIE5PX1JFR1MgICovIHsgMCwgMH0sCQkJXAotLSAgICAvKiBTSUJfUkVHUyAqLyB7IDB4ZmUwYywgMH0sCQlcCi0tICAgIC8qIEdQX1JFR1MgICovIHt+MCwgMH0sCQkJXAotLSAgICAvKiBBTExfUkVHUyAqLyB7fjAsfjB9CQkJXAotKyAgICAvKiBOT19SRUdTICAgICovIHsgMCwgMH0sCQkJXAotKyAgICAvKiBTSUJfUkVHUyAgICovIHsgMHhmZTBjLCAwfSwJCVwKLSsgICAgLyogSUpNUF9SRUdTICAqLyB7IDB4N2ZmZmZmZmYsIDB9LAkJXAotKyAgICAvKiBHUF9SRUdTICAgICovIHt+MCwgMH0sCQkJXAotKyAgICAvKiBBTExfUkVHUyAgICovIHt+MCx+MH0JCQlcCi0gICB9Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5tZCBiL2djYy9jb25maWcvbmlvczIvbmlvczIubWQKLWluZGV4IDdiMzVkMjY5Li4zNmVmMTAxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5tZAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5tZAotQEAgLTY5Nyw3ICs2OTcsNyBAQAotIDsgY2hlY2sgb3IgYWRqdXN0IGZvciBvdmVyZmxvdy4KLSAKLSAoZGVmaW5lX2luc24gImluZGlyZWN0X2p1bXAiCi0tICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICJyIikpXQotKyAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiYyIpKV0KLSAgICIiCi0gICAiam1wXFx0JTAiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiY29udHJvbCIpXSkKLUBAIC04MTEsNyArODExLDcgQEAKLSAKLSAoZGVmaW5lX2luc24gIip0YWJsZWp1bXAiCi0gICBbKHNldCAocGMpCi0tICAgICAgICAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKQotKyAgICAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgImMiKSkKLSAgICAodXNlIChsYWJlbF9yZWYgKG1hdGNoX29wZXJhbmQgMSAiIiAiIikpKV0KLSAgICIiCi0gICAiam1wXFx0JTAiCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1My1leHByLmMtUFItdGFyZ2V0LTY1MzU4LUF2b2lkLWNsb2JiZXJpbmctcGFydGlhbC1hcmd1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUzLWV4cHIuYy1QUi10YXJnZXQtNjUzNTgtQXZvaWQtY2xvYmJlcmluZy1wYXJ0aWFsLWFyZ3UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxOGY0MGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUzLWV4cHIuYy1QUi10YXJnZXQtNjUzNTgtQXZvaWQtY2xvYmJlcmluZy1wYXJ0aWFsLWFyZ3UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDcgKzAsMCBAQAotRnJvbSA1MzZiODMxODk3NDQ5NWNkZTJiNDJjM2MyNzQyNzQ4ZTJiMjcxYmUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbToga3RrYWNob3YgPGt0a2FjaG92QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFdlZCwgMjcgTWF5IDIwMTUgMTM6MjU6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gUFIgdGFyZ2V0LzY1MzU4IEF2b2lkIGNsb2JiZXJpbmcgcGFydGlhbCBhcmd1bWVudCBkdXJpbmcKLSBzaWJjYWxsCi0KLQlQUiB0YXJnZXQvNjUzNTgKLQkqIGV4cHIuYyAobWVtb3J5X2xvYWRfb3ZlcmxhcCk6IE5ldyBmdW5jdGlvbi4KLQkoZW1pdF9wdXNoX2luc24pOiBXaGVuIHB1c2hpbmcgcGFydGlhbCBhcmdzIHRvIHRoZSBzdGFjayB3b3VsZAotCWNsb2JiZXIgdGhlIHJlZ2lzdGVyIHBhcnQgbG9hZCB0aGUgb3ZlcmxhcHBpbmcgcGFydCBpbnRvIGEgcHNldWRvCi0JYW5kIHB1dCBpdCBpbnRvIHRoZSBoYXJkIHJlZyBhZnRlciBwdXNoaW5nLiAgQ2hhbmdlIHJldHVybiB0eXBlCi0JdG8gYm9vbC4gIEFkZCBib29sIGFyZ3VtZW50LgotCSogZXhwci5oIChlbWl0X3B1c2hfaW5zbik6IENoYW5nZSByZXR1cm4gdHlwZSB0byBib29sLgotCUFkZCBib29sIGFyZ3VtZW50LgotCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBDYW5jZWwgc2liY2FsbCBvcHRpbWl6YXRpb24gd2hlbiBlbmNvdW50ZXJpbmcKLQlwYXJ0aWFsIGFyZ3VtZW50IG9uIHRhcmdldHMgd2l0aCBBUkdTX0dST1dfRE9XTldBUkQgYW5kCi0JIVNUQUNLX0dST1dTX0RPV05XQVJELgotCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogVXBkYXRlIGNhbGxzaXRlIG9mIGVtaXRfcHVzaF9pbnNuLgotCShzdG9yZV9vbmVfYXJnKTogTGlrZXdpc2UuCi0KLQlQUiB0YXJnZXQvNjUzNTgKLQkqIGdjYy5kZy9wcjY1MzU4LmM6IE5ldyB0ZXN0LgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMjM3NTMgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgZnJvbSA2LjAKLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jYWxscy5jICAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKy0tCi0gZ2NjL2V4cHIuYyAgICAgICAgICAgICAgICAgICAgIHwgOTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gZ2NjL2V4cHIuaCAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY1MzU4LmMgfCAzMyArKysrKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjUzNTguYwotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NhbGxzLmMgYi9nY2MvY2FsbHMuYwotaW5kZXggZWU4ZWE1Zi4uMjMzNDM4MSAxMDA2NDQKLS0tLSBhL2djYy9jYWxscy5jCi0rKysgYi9nY2MvY2FsbHMuYwotQEAgLTMyMzYsNiArMzIzNiwxNCBAQCBleHBhbmRfY2FsbCAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIGludCBpZ25vcmUpCi0gCSAgICB7Ci0gCSAgICAgIHJ0eF9pbnNuICpiZWZvcmVfYXJnID0gZ2V0X2xhc3RfaW5zbiAoKTsKLSAKLSsJICAgICAvKiBPbiB0YXJnZXRzIHdpdGggd2VpcmQgY2FsbGluZyBjb252ZW50aW9ucyAoZS5nLiBQQSkgaXQncwotKwkJaGFyZCB0byBlbnN1cmUgdGhhdCBhbGwgY2FzZXMgb2YgYXJndW1lbnQgb3ZlcmxhcCBiZXR3ZWVuCi0rCQlzdGFjayBhbmQgcmVnaXN0ZXJzIHdvcmsuICBQbGF5IGl0IHNhZmUgYW5kIGJhaWwgb3V0LiAgKi8KLSsjaWYgZGVmaW5lZChBUkdTX0dST1dfRE9XTldBUkQpICYmICFkZWZpbmVkKFNUQUNLX0dST1dTX0RPV05XQVJEKQotKwkJICBzaWJjYWxsX2ZhaWx1cmUgPSAxOwotKwkJICBicmVhazsKLSsjZW5kaWYKLSsKLSAJICAgICAgaWYgKHN0b3JlX29uZV9hcmcgKCZhcmdzW2ldLCBhcmdibG9jaywgZmxhZ3MsCi0gCQkJCSBhZGp1c3RlZF9hcmdzX3NpemUudmFyICE9IDAsCi0gCQkJCSByZWdfcGFybV9zdGFja19zcGFjZSkKLUBAIC00Mjc5LDcgKzQyODcsNyBAQCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xIChpbnQgcmV0dmFsLCBydHggb3JnZnVuLCBydHggdmFsdWUsCi0gCQkJICBwYXJ0aWFsLCByZWcsIDAsIGFyZ2Jsb2NrLAotIAkJCSAgR0VOX0lOVCAoYXJndmVjW2FyZ251bV0ubG9jYXRlLm9mZnNldC5jb25zdGFudCksCi0gCQkJICByZWdfcGFybV9zdGFja19zcGFjZSwKLS0JCQkgIEFSR1NfU0laRV9SVFggKGFyZ3ZlY1thcmdudW1dLmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSk7Ci0rCQkJICBBUkdTX1NJWkVfUlRYIChhcmd2ZWNbYXJnbnVtXS5sb2NhdGUuYWxpZ25tZW50X3BhZCksIGZhbHNlKTsKLSAKLSAJICAvKiBOb3cgbWFyayB0aGUgc2VnbWVudCB3ZSBqdXN0IHVzZWQuICAqLwotIAkgIGlmIChBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MpCi1AQCAtNDg4NiwxMCArNDg5NCwxMSBAQCBzdG9yZV9vbmVfYXJnIChzdHJ1Y3QgYXJnX2RhdGEgKmFyZywgcnR4IGFyZ2Jsb2NrLCBpbnQgZmxhZ3MsCi0gCi0gICAgICAgLyogVGhpcyBpc24ndCBhbHJlYWR5IHdoZXJlIHdlIHdhbnQgaXQgb24gdGhlIHN0YWNrLCBzbyBwdXQgaXQgdGhlcmUuCi0gCSBUaGlzIGNhbiBlaXRoZXIgYmUgZG9uZSB3aXRoIHB1c2ggb3IgY29weSBpbnNucy4gICovCi0tICAgICAgZW1pdF9wdXNoX2luc24gKGFyZy0+dmFsdWUsIGFyZy0+bW9kZSwgVFJFRV9UWVBFIChwdmFsKSwgTlVMTF9SVFgsCi0rICAgICAgaWYgKCFlbWl0X3B1c2hfaW5zbiAoYXJnLT52YWx1ZSwgYXJnLT5tb2RlLCBUUkVFX1RZUEUgKHB2YWwpLCBOVUxMX1JUWCwKLSAJCSAgICAgIHBhcm1fYWxpZ24sIHBhcnRpYWwsIHJlZywgdXNlZCAtIHNpemUsIGFyZ2Jsb2NrLAotIAkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUub2Zmc2V0KSwgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsCi0tCQkgICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSk7Ci0rCQkgICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSwgdHJ1ZSkpCi0rCXNpYmNhbGxfZmFpbHVyZSA9IDE7Ci0gCi0gICAgICAgLyogVW5sZXNzIHRoaXMgaXMgYSBwYXJ0aWFsbHktaW4tcmVnaXN0ZXIgYXJndW1lbnQsIHRoZSBhcmd1bWVudCBpcyBub3cKLSAJIGluIHRoZSBzdGFjay4gICovCi1AQCAtNTAwMSw3ICs1MDEwLDcgQEAgc3RvcmVfb25lX2FyZyAoc3RydWN0IGFyZ19kYXRhICphcmcsIHJ0eCBhcmdibG9jaywgaW50IGZsYWdzLAotICAgICAgIGVtaXRfcHVzaF9pbnNuIChhcmctPnZhbHVlLCBhcmctPm1vZGUsIFRSRUVfVFlQRSAocHZhbCksIHNpemVfcnR4LAotIAkJICAgICAgcGFybV9hbGlnbiwgcGFydGlhbCwgcmVnLCBleGNlc3MsIGFyZ2Jsb2NrLAotIAkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUub2Zmc2V0KSwgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsCi0tCQkgICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSk7Ci0rCQkgICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSwgZmFsc2UpOwotIAotICAgICAgIC8qIFVubGVzcyB0aGlzIGlzIGEgcGFydGlhbGx5LWluLXJlZ2lzdGVyIGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgaXMgbm93Ci0gCSBpbiB0aGUgc3RhY2suCi1kaWZmIC0tZ2l0IGEvZ2NjL2V4cHIuYyBiL2djYy9leHByLmMKLWluZGV4IDVjMDk1NTAuLjI0YTYyOTMgMTAwNjQ0Ci0tLS0gYS9nY2MvZXhwci5jCi0rKysgYi9nY2MvZXhwci5jCi1AQCAtNDEyMSwxMiArNDEyMSwzNSBAQCBlbWl0X3NpbmdsZV9wdXNoX2luc24gKG1hY2hpbmVfbW9kZSBtb2RlLCBydHggeCwgdHJlZSB0eXBlKQotIH0KLSAjZW5kaWYKLSAKLSsvKiBJZiByZWFkaW5nIFNJWkUgYnl0ZXMgZnJvbSBYIHdpbGwgZW5kIHVwIHJlYWRpbmcgZnJvbQotKyAgIFkgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBvdmVybGFwLiAgUmV0dXJuIC0xCi0rICAgaWYgdGhlcmUgaXMgbm8gb3ZlcmxhcCBvciAtMiBpZiB3ZSBjYW4ndCBkZXRlcm1pbmUKLSsgICAoZm9yIGV4YW1wbGUgd2hlbiBYIGFuZCBZIGhhdmUgZGlmZmVyZW50IGJhc2UgcmVnaXN0ZXJzKS4gICovCi0rCi0rc3RhdGljIGludAotK21lbW9yeV9sb2FkX292ZXJsYXAgKHJ0eCB4LCBydHggeSwgSE9TVF9XSURFX0lOVCBzaXplKQotK3sKLSsgIHJ0eCB0bXAgPSBwbHVzX2NvbnN0YW50IChQbW9kZSwgeCwgc2l6ZSk7Ci0rICBydHggc3ViID0gc2ltcGxpZnlfZ2VuX2JpbmFyeSAoTUlOVVMsIFBtb2RlLCB0bXAsIHkpOwotKwotKyAgaWYgKCFDT05TVF9JTlRfUCAoc3ViKSkKLSsgICAgcmV0dXJuIC0yOwotKwotKyAgSE9TVF9XSURFX0lOVCB2YWwgPSBJTlRWQUwgKHN1Yik7Ci0rCi0rICByZXR1cm4gSU5fUkFOR0UgKHZhbCwgMSwgc2l6ZSkgPyB2YWwgOiAtMTsKLSt9Ci0rCi0gLyogR2VuZXJhdGUgY29kZSB0byBwdXNoIFggb250byB0aGUgc3RhY2ssIGFzc3VtaW5nIGl0IGhhcyBtb2RlIE1PREUgYW5kCi0gICAgdHlwZSBUWVBFLgotICAgIE1PREUgaXMgcmVkdW5kYW50IGV4Y2VwdCB3aGVuIFggaXMgYSBDT05TVF9JTlQgKHNpbmNlIHRoZXkgZG9uJ3QKLSAgICBjYXJyeSBtb2RlIGluZm8pLgotICAgIFNJWkUgaXMgYW4gcnR4IGZvciB0aGUgc2l6ZSBvZiBkYXRhIHRvIGJlIGNvcGllZCAoaW4gYnl0ZXMpLAotICAgIG5lZWRlZCBvbmx5IGlmIFggaXMgQkxLbW9kZS4KLSsgICBSZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLiAgTWF5IHJldHVybiBmYWxzZSBpZiBhc2tlZCB0byBwdXNoIGEKLSsgICBwYXJ0aWFsIGFyZ3VtZW50IGR1cmluZyBhIHNpYmNhbGwgb3B0aW1pemF0aW9uIChhcyBzcGVjaWZpZWQgYnkKLSsgICBTSUJDQUxMX1ApIGFuZCB0aGUgaW5jb21pbmcgYW5kIG91dGdvaW5nIHBvaW50ZXJzIGNhbm5vdCBiZSBzaG93bgotKyAgIHRvIG5vdCBvdmVybGFwLgotIAotICAgIEFMSUdOIChpbiBiaXRzKSBpcyBtYXhpbXVtIGFsaWdubWVudCB3ZSBjYW4gYXNzdW1lLgotIAotQEAgLTQxNTIsMTEgKzQxNzUsMTEgQEAgZW1pdF9zaW5nbGVfcHVzaF9pbnNuIChtYWNoaW5lX21vZGUgbW9kZSwgcnR4IHgsIHRyZWUgdHlwZSkKLSAgICBmb3IgYXJndW1lbnRzIHBhc3NlZCBpbiByZWdpc3RlcnMuICBJZiBub256ZXJvLCBpdCB3aWxsIGJlIHRoZSBudW1iZXIKLSAgICBvZiBieXRlcyByZXF1aXJlZC4gICovCi0gCi0tdm9pZAotK2Jvb2wKLSBlbWl0X3B1c2hfaW5zbiAocnR4IHgsIG1hY2hpbmVfbW9kZSBtb2RlLCB0cmVlIHR5cGUsIHJ0eCBzaXplLAotIAkJdW5zaWduZWQgaW50IGFsaWduLCBpbnQgcGFydGlhbCwgcnR4IHJlZywgaW50IGV4dHJhLAotIAkJcnR4IGFyZ3NfYWRkciwgcnR4IGFyZ3Nfc29fZmFyLCBpbnQgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsCi0tCQlydHggYWxpZ25tZW50X3BhZCkKLSsJCXJ0eCBhbGlnbm1lbnRfcGFkLCBib29sIHNpYmNhbGxfcCkKLSB7Ci0gICBydHggeGlubmVyOwotICAgZW51bSBkaXJlY3Rpb24gc3RhY2tfZGlyZWN0aW9uCi1AQCAtNDE3OSw2ICs0MjAyLDEwIEBAIGVtaXRfcHVzaF9pbnNuIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHlwZSwgcnR4IHNpemUsCi0gCi0gICB4aW5uZXIgPSB4OwotIAotKyAgaW50IG5yZWdzID0gcGFydGlhbCAvIFVOSVRTX1BFUl9XT1JEOwotKyAgcnR4ICp0bXBfcmVncyA9IE5VTEw7Ci0rICBpbnQgb3ZlcmxhcHBpbmcgPSAwOwotKwotICAgaWYgKG1vZGUgPT0gQkxLbW9kZQotICAgICAgIHx8IChTVFJJQ1RfQUxJR05NRU5UICYmIGFsaWduIDwgR0VUX01PREVfQUxJR05NRU5UIChtb2RlKSkpCi0gICAgIHsKLUBAIC00MzA5LDYgKzQzMzYsNDMgQEAgZW1pdF9wdXNoX2luc24gKHJ0eCB4LCBtYWNoaW5lX21vZGUgbW9kZSwgdHJlZSB0eXBlLCBydHggc2l6ZSwKLSAJICAgICBQQVJNX0JPVU5EQVJZLiAgQXNzdW1lIHRoZSBjYWxsZXIgaXNuJ3QgbHlpbmcuICAqLwotIAkgIHNldF9tZW1fYWxpZ24gKHRhcmdldCwgYWxpZ24pOwotIAotKwkgIC8qIElmIHBhcnQgc2hvdWxkIGdvIGluIHJlZ2lzdGVycyBhbmQgcHVzaGluZyB0byB0aGF0IHBhcnQgd291bGQKLSsJICAgICBvdmVyd3JpdGUgc29tZSBvZiB0aGUgdmFsdWVzIHRoYXQgbmVlZCB0byBnbyBpbnRvIHJlZ3MsIGxvYWQgdGhlCi0rCSAgICAgb3ZlcmxhcHBpbmcgdmFsdWVzIGludG8gdGVtcG9yYXJ5IHBzZXVkb3MgdG8gYmUgbW92ZWQgaW50byB0aGUgaGFyZAotKwkgICAgIHJlZ3MgYXQgdGhlIGVuZCBhZnRlciB0aGUgc3RhY2sgcHVzaGluZyBoYXMgY29tcGxldGVkLgotKwkgICAgIFdlIGNhbm5vdCBsb2FkIHRoZW0gZGlyZWN0bHkgaW50byB0aGUgaGFyZCByZWdzIGhlcmUgYmVjYXVzZQotKwkgICAgIHRoZXkgY2FuIGJlIGNsb2JiZXJlZCBieSB0aGUgYmxvY2sgbW92ZSBleHBhbnNpb25zLgotKwkgICAgIFNlZSBQUiA2NTM1OC4gICovCi0rCi0rCSAgaWYgKHBhcnRpYWwgPiAwICYmIHJlZyAhPSAwICYmIG1vZGUgPT0gQkxLbW9kZQotKwkgICAgICAmJiBHRVRfQ09ERSAocmVnKSAhPSBQQVJBTExFTCkKLSsJICAgIHsKLSsJICAgICAgb3ZlcmxhcHBpbmcgPSBtZW1vcnlfbG9hZF9vdmVybGFwIChYRVhQICh4LCAwKSwgdGVtcCwgcGFydGlhbCk7Ci0rCSAgICAgIGlmIChvdmVybGFwcGluZyA+IDApCi0rCSAgICAgICAgewotKwkJICBnY2NfYXNzZXJ0IChvdmVybGFwcGluZyAlIFVOSVRTX1BFUl9XT1JEID09IDApOwotKwkJICBvdmVybGFwcGluZyAvPSBVTklUU19QRVJfV09SRDsKLSsKLSsJCSAgdG1wX3JlZ3MgPSBYQUxMT0NBVkVDIChydHgsIG92ZXJsYXBwaW5nKTsKLSsKLSsJCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBvdmVybGFwcGluZzsgaSsrKQotKwkJICAgIHRtcF9yZWdzW2ldID0gZ2VuX3JlZ19ydHggKHdvcmRfbW9kZSk7Ci0rCi0rCQkgIGZvciAoaW50IGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmc7IGkrKykKLSsJCSAgICBlbWl0X21vdmVfaW5zbiAodG1wX3JlZ3NbaV0sCi0rCQkJCSAgICBvcGVyYW5kX3N1YndvcmRfZm9yY2UgKHRhcmdldCwgaSwgbW9kZSkpOwotKwkgICAgICAgIH0KLSsJICAgICAgZWxzZSBpZiAob3ZlcmxhcHBpbmcgPT0gLTEpCi0rCQlvdmVybGFwcGluZyA9IDA7Ci0rCSAgICAgIC8qIENvdWxkIG5vdCBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBpcyBvdmVybGFwLgotKwkgICAgICAgICBGYWlsIHRoZSBzaWJjYWxsLiAgKi8KLSsJICAgICAgZWxzZQotKwkJewotKwkJICBvdmVybGFwcGluZyA9IDA7Ci0rCQkgIGlmIChzaWJjYWxsX3ApCi0rCQkgICAgcmV0dXJuIGZhbHNlOwotKwkJfQotKwkgICAgfQotIAkgIGVtaXRfYmxvY2tfbW92ZSAodGFyZ2V0LCB4aW5uZXIsIHNpemUsIEJMT0NLX09QX0NBTExfUEFSTSk7Ci0gCX0KLSAgICAgfQotQEAgLTQzNjMsMTIgKzQ0MjcsMTMgQEAgZW1pdF9wdXNoX2luc24gKHJ0eCB4LCBtYWNoaW5lX21vZGUgbW9kZSwgdHJlZSB0eXBlLCBydHggc2l6ZSwKLSAJIGhhcyBhIHNpemUgYSBtdWx0aXBsZSBvZiBhIHdvcmQuICAqLwotICAgICAgIGZvciAoaSA9IHNpemUgLSAxOyBpID49IG5vdF9zdGFjazsgaS0tKQotIAlpZiAoaSA+PSBub3Rfc3RhY2sgKyBvZmZzZXQpCi0tCSAgZW1pdF9wdXNoX2luc24gKG9wZXJhbmRfc3Vid29yZF9mb3JjZSAoeCwgaSwgbW9kZSksCi0rCSAgaWYgKCFlbWl0X3B1c2hfaW5zbiAob3BlcmFuZF9zdWJ3b3JkX2ZvcmNlICh4LCBpLCBtb2RlKSwKLSAJCQkgIHdvcmRfbW9kZSwgTlVMTF9UUkVFLCBOVUxMX1JUWCwgYWxpZ24sIDAsIE5VTExfUlRYLAotIAkJCSAgMCwgYXJnc19hZGRyLAotIAkJCSAgR0VOX0lOVCAoYXJnc19vZmZzZXQgKyAoKGkgLSBub3Rfc3RhY2sgKyBza2lwKQotIAkJCQkJCSAgKiBVTklUU19QRVJfV09SRCkpLAotLQkJCSAgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsIGFsaWdubWVudF9wYWQpOwotKwkJCSAgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsIGFsaWdubWVudF9wYWQsIHNpYmNhbGxfcCkpCi0rCSAgICByZXR1cm4gZmFsc2U7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotQEAgLTQ0MTEsOSArNDQ3Niw4IEBAIGVtaXRfcHVzaF9pbnNuIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHlwZSwgcnR4IHNpemUsCi0gCX0KLSAgICAgfQotIAotLSAgLyogSWYgcGFydCBzaG91bGQgZ28gaW4gcmVnaXN0ZXJzLCBjb3B5IHRoYXQgcGFydAotLSAgICAgaW50byB0aGUgYXBwcm9wcmlhdGUgcmVnaXN0ZXJzLiAgRG8gdGhpcyBub3csIGF0IHRoZSBlbmQsCi0tICAgICBzaW5jZSBtZW0tdG8tbWVtIGNvcGllcyBhYm92ZSBtYXkgZG8gZnVuY3Rpb24gY2FsbHMuICAqLwotKyAgLyogTW92ZSB0aGUgcGFydGlhbCBhcmd1bWVudHMgaW50byB0aGUgcmVnaXN0ZXJzIGFuZCBhbnkgb3ZlcmxhcHBpbmcKLSsgICAgIHZhbHVlcyB0aGF0IHdlIG1vdmVkIGludG8gdGhlIHBzZXVkb3MgaW4gdG1wX3JlZ3MuICAqLwotICAgaWYgKHBhcnRpYWwgPiAwICYmIHJlZyAhPSAwKQotICAgICB7Ci0gICAgICAgLyogSGFuZGxlIGNhbGxzIHRoYXQgcGFzcyB2YWx1ZXMgaW4gbXVsdGlwbGUgbm9uLWNvbnRpZ3VvdXMgbG9jYXRpb25zLgotQEAgLTQ0MjEsOSArNDQ4NSwxNSBAQCBlbWl0X3B1c2hfaW5zbiAocnR4IHgsIG1hY2hpbmVfbW9kZSBtb2RlLCB0cmVlIHR5cGUsIHJ0eCBzaXplLAotICAgICAgIGlmIChHRVRfQ09ERSAocmVnKSA9PSBQQVJBTExFTCkKLSAJZW1pdF9ncm91cF9sb2FkIChyZWcsIHgsIHR5cGUsIC0xKTsKLSAgICAgICBlbHNlCi0tCXsKLSsgICAgICAgIHsKLSAJICBnY2NfYXNzZXJ0IChwYXJ0aWFsICUgVU5JVFNfUEVSX1dPUkQgPT0gMCk7Ci0tCSAgbW92ZV9ibG9ja190b19yZWcgKFJFR05PIChyZWcpLCB4LCBwYXJ0aWFsIC8gVU5JVFNfUEVSX1dPUkQsIG1vZGUpOwotKwkgIG1vdmVfYmxvY2tfdG9fcmVnIChSRUdOTyAocmVnKSwgeCwgbnJlZ3MgLSBvdmVybGFwcGluZywgbW9kZSk7Ci0rCi0rCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBvdmVybGFwcGluZzsgaSsrKQotKwkgICAgZW1pdF9tb3ZlX2luc24gKGdlbl9ydHhfUkVHICh3b3JkX21vZGUsIFJFR05PIChyZWcpCi0rCQkJCQkJICAgICsgbnJlZ3MgLSBvdmVybGFwcGluZyArIGkpLAotKwkJCSAgICB0bXBfcmVnc1tpXSk7Ci0rCi0gCX0KLSAgICAgfQotIAotQEAgLTQ0MzIsNiArNDUwMiw4IEBAIGVtaXRfcHVzaF9pbnNuIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHlwZSwgcnR4IHNpemUsCi0gCi0gICBpZiAoYWxpZ25tZW50X3BhZCAmJiBhcmdzX2FkZHIgPT0gMCkKLSAgICAgYW50aV9hZGp1c3Rfc3RhY2sgKGFsaWdubWVudF9wYWQpOwotKwotKyAgcmV0dXJuIHRydWU7Ci0gfQotIAwKLSAvKiBSZXR1cm4gWCBpZiBYIGNhbiBiZSB1c2VkIGFzIGEgc3VidGFyZ2V0IGluIGEgc2VxdWVuY2Ugb2YgYXJpdGhtZXRpYwotZGlmZiAtLWdpdCBhL2djYy9leHByLmggYi9nY2MvZXhwci5oCi1pbmRleCA4Njc4NTJlLi41ZmNjMTNmIDEwMDY0NAotLS0tIGEvZ2NjL2V4cHIuaAotKysrIGIvZ2NjL2V4cHIuaAotQEAgLTIxOCw4ICsyMTgsOCBAQCBleHRlcm4gcnR4IGVtaXRfbW92ZV9yZXNvbHZlX3B1c2ggKG1hY2hpbmVfbW9kZSwgcnR4KTsKLSBleHRlcm4gcnR4IHB1c2hfYmxvY2sgKHJ0eCwgaW50LCBpbnQpOwotIAotIC8qIEdlbmVyYXRlIGNvZGUgdG8gcHVzaCBzb21ldGhpbmcgb250byB0aGUgc3RhY2ssIGdpdmVuIGl0cyBtb2RlIGFuZCB0eXBlLiAgKi8KLS1leHRlcm4gdm9pZCBlbWl0X3B1c2hfaW5zbiAocnR4LCBtYWNoaW5lX21vZGUsIHRyZWUsIHJ0eCwgdW5zaWduZWQgaW50LAotLQkJCSAgICBpbnQsIHJ0eCwgaW50LCBydHgsIHJ0eCwgaW50LCBydHgpOwotK2V4dGVybiBib29sIGVtaXRfcHVzaF9pbnNuIChydHgsIG1hY2hpbmVfbW9kZSwgdHJlZSwgcnR4LCB1bnNpZ25lZCBpbnQsCi0rCQkJICAgIGludCwgcnR4LCBpbnQsIHJ0eCwgcnR4LCBpbnQsIHJ0eCwgYm9vbCk7Ci0gCi0gLyogRXhwYW5kIGFuIGFzc2lnbm1lbnQgdGhhdCBzdG9yZXMgdGhlIHZhbHVlIG9mIEZST00gaW50byBUTy4gICovCi0gZXh0ZXJuIHZvaWQgZXhwYW5kX2Fzc2lnbm1lbnQgKHRyZWUsIHRyZWUsIGJvb2wpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjUzNTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjUzNTguYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmJhODlmZDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjUzNTguYwotQEAgLTAsMCArMSwzMyBAQAotKy8qIHsgZGctZG8gcnVuIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLwotKwotK3N0cnVjdCBwYWNrCi0rewotKyAgaW50IGZpbmU7Ci0rICBpbnQgdmljdGltOwotKyAgaW50IGtpbGxlcjsKLSt9OwotKwotK2ludCBfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fLCBfX25vY2xvbmVfXykpCi0rYmFyIChpbnQgYSwgaW50IGIsIHN0cnVjdCBwYWNrIHApCi0rewotKyAgaWYgKGEgIT0gMjAgfHwgYiAhPSAzMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHAuZmluZSAhPSA0MCB8fCBwLnZpY3RpbSAhPSA1MCB8fCBwLmtpbGxlciAhPSA2MCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK2ludCBfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fLCBfX25vY2xvbmVfXykpCi0rZm9vIChpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLCBzdHJ1Y3QgcGFjayBwKQotK3sKLSsgIHJldHVybiBiYXIgKGFyZzIsIGFyZzMsIHApOwotK30KLSsKLStpbnQgbWFpbiAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgcGFjayBwID0geyA0MCwgNTAsIDYwIH07Ci0rCi0rICAodm9pZCkgZm9vICgxMCwgMjAsIDMwLCBwKTsKLSsgIHJldHVybiAwOwotK30KLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU0LXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMTY4NzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU0LXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4NCArMCwwIEBACi1Gcm9tIGVmN2MyYmRhNmI0Yzg4ZjgwMDdlZDY2M2IxMTA4Y2Q0NjUxNTk4YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDAyOjI3OjQzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdjYy9saWJjcHA6IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXA9PG9sZD49PG5ldz4KLQotU2ltaWxhciAtZmRlYnVnLXByZWZpeC1tYXAsIGFkZCBvcHRpb24gLWZmaWxlLXByZWZpeC1tYXAgdG8gbWFwIG9uZQotZGlyZWN0b3J5IG5hbWUgKG9sZCkgdG8gYW5vdGhlciAobmV3KSBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQKLV9fYnVpbHRpbl9GSUxFICgpLgotCi1odHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MDI2OAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvYy1mYW1pbHkvYy1vcHRzLmMgICAgIHwgIDYgKysrKwotIGdjYy9jLWZhbWlseS9jLm9wdCAgICAgICAgfCAgNCArKysKLSBnY2MvZHdhcmYyb3V0LmMgICAgICAgICAgIHwgIDEgKwotIGdjYy9naW1wbGlmeS5jICAgICAgICAgICAgfCAgMiArKwotIGxpYmNwcC9NYWtlZmlsZS5pbiAgICAgICAgfCAxMCArKystLS0KLSBsaWJjcHAvZmlsZS1tYXAuYyAgICAgICAgIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsaWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIHwgMzAgKysrKysrKysrKysrKysrKwotIGxpYmNwcC9tYWNyby5jICAgICAgICAgICAgfCAgMiArKwotIDggZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9maWxlLW1hcC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLQotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLW9wdHMuYyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYwotaW5kZXggNzE4YTA1Mi4uM2Y5M2M1NiAxMDA2NDQKLS0tLSBhL2djYy9jLWZhbWlseS9jLW9wdHMuYwotKysrIGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCi1AQCAtNDYsNiArNDYsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJvcHRzLmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgkJLyogRm9yIFBMVUdJTl9JTkNMVURFX0ZJTEUgZXZlbnQuICAqLwotICNpbmNsdWRlICJta2RlcHMuaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSAjaW5jbHVkZSAiYy10YXJnZXQuaCIKLSAjaW5jbHVkZSAidG0uaCIJCQkvKiBGb3IgQllURVNfQklHX0VORElBTiwKLSAJCQkJICAgRE9MTEFSU19JTl9JREVOVElGSUVSUywKLUBAIC01MTAsNiArNTExLDExIEBAIGNfY29tbW9uX2hhbmRsZV9vcHRpb24gKHNpemVfdCBzY29kZSwgY29uc3QgY2hhciAqYXJnLCBpbnQgdmFsdWUsCi0gICAgICAgY3BwX29wdHMtPm5hcnJvd19jaGFyc2V0ID0gYXJnOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKLSsgICAgICBpZiAoYWRkX2ZpbGVfcHJlZml4X21hcCAoYXJnKSA8IDApCi0rICAgICAgICBlcnJvciAoImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSBPUFRfZndpZGVfZXhlY19jaGFyc2V0XzoKLSAgICAgICBjcHBfb3B0cy0+d2lkZV9jaGFyc2V0ID0gYXJnOwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAotaW5kZXggNDUzZWM4ZS4uMzBhZDA1MyAxMDA2NDQKLS0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAotKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1AQCAtMTExNyw2ICsxMTE3LDEwIEBAIGZleGVjLWNoYXJzZXQ9Ci0gQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFJlamVjdE5lZ2F0aXZlCi0gLWZleGVjLWNoYXJzZXQ9PGNzZXQ+CUNvbnZlcnQgYWxsIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMgdG8gY2hhcmFjdGVyIHNldCA8Y3NldD4KLSAKLStmZmlsZS1wcmVmaXgtbWFwPQotK0MgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQotKy1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ9bmV3PglNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kIF9fYnVpbHRpbl9GSUxFICgpCi0rCi0gZmV4dGVuZGVkLWlkZW50aWZpZXJzCi0gQyBPYmpDIEMrKyBPYmpDKysKLSBQZXJtaXQgdW5pdmVyc2FsIGNoYXJhY3RlciBuYW1lcyAoXFx1IGFuZCBcXFUpIGluIGlkZW50aWZpZXJzCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCi1pbmRleCA1MjZmMTE0Li40MzhhNDc1IDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMm91dC5jCi0rKysgYi9nY2MvZHdhcmYyb3V0LmMKLUBAIC0xOTY3MSw2ICsxOTY3MSw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCi0gICAgICAgY2FzZSBPUFRfZmx0cmFuc19vdXRwdXRfbGlzdF86Ci0gICAgICAgY2FzZSBPUFRfZnJlc29sdXRpb25fOgotICAgICAgIGNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKLSsgICAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKLSAJLyogSWdub3JlIHRoZXNlLiAgKi8KLSAJY29udGludWU7Ci0gICAgICAgZGVmYXVsdDoKLWRpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuYyBiL2djYy9naW1wbGlmeS5jCi1pbmRleCBjODVmODNhLi4xZmZlMWUxIDEwMDY0NAotLS0tIGEvZ2NjL2dpbXBsaWZ5LmMKLSsrKyBiL2djYy9naW1wbGlmeS5jCi1AQCAtODcsNiArODcsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJnaW1wbGUtbG93LmgiCi0gI2luY2x1ZGUgImNpbGsuaCIKLSAjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSAKLSAjaW5jbHVkZSAibGFuZ2hvb2tzLWRlZi5oIgkvKiBGSVhNRTogZm9yIGxoZF9zZXRfZGVjbF9hc3NlbWJsZXJfbmFtZSAqLwotICNpbmNsdWRlICJ0cmVlLXBhc3MuaCIJCS8qIEZJWE1FOiBvbmx5IGZvciBQUk9QX2dpbXBsZV9hbnkgKi8KLUBAIC0yMzcwLDYgKzIzNzEsNyBAQCBnaW1wbGlmeV9jYWxsX2V4cHIgKHRyZWUgKmV4cHJfcCwgZ2ltcGxlX3NlcSAqcHJlX3AsIGJvb2wgd2FudF92YWx1ZSkKLSAgICAgICBjYXNlIEJVSUxUX0lOX0ZJTEU6Ci0gCXsKLSAJICBjb25zdCBjaGFyICpsb2NmaWxlID0gTE9DQVRJT05fRklMRSAoRVhQUl9MT0NBVElPTiAoKmV4cHJfcCkpOwotKwkgIGxvY2ZpbGUgPSByZW1hcF9maWxlX2ZpbGVuYW1lIChsb2NmaWxlKTsKLSAJICAqZXhwcl9wID0gYnVpbGRfc3RyaW5nX2xpdGVyYWwgKHN0cmxlbiAobG9jZmlsZSkgKyAxLCBsb2NmaWxlKTsKLSAJICByZXR1cm4gR1NfT0s7Ci0gCX0KLWRpZmYgLS1naXQgYS9saWJjcHAvTWFrZWZpbGUuaW4gYi9saWJjcHAvTWFrZWZpbGUuaW4KLWluZGV4IGFkMzU1NjMuLmMyMTBmZjkgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNwcC9NYWtlZmlsZS5pbgotQEAgLTg0LDEyICs4NCwxMiBAQCBERVBNT0RFID0gJChDWFhERVBNT0RFKQotIAotIAotIGxpYmNwcF9hX09CSlMgPSBjaGFyc2V0Lm8gZGlyZWN0aXZlcy5vIGRpcmVjdGl2ZXMtb25seS5vIGVycm9ycy5vIFwKLS0JZXhwci5vIGZpbGVzLm8gaWRlbnRpZmllcnMubyBpbml0Lm8gbGV4Lm8gbGluZS1tYXAubyBtYWNyby5vIFwKLS0JbWtkZXBzLm8gcGNoLm8gc3ltdGFiLm8gdHJhZGl0aW9uYWwubwotKwlleHByLm8gZmlsZS1tYXAubyBmaWxlcy5vIGlkZW50aWZpZXJzLm8gaW5pdC5vIGxleC5vIGxpbmUtbWFwLm8gXAotKwltYWNyby5vIG1rZGVwcy5vIHBjaC5vIHN5bXRhYi5vIHRyYWRpdGlvbmFsLm8KLSAKLSBsaWJjcHBfYV9TT1VSQ0VTID0gY2hhcnNldC5jIGRpcmVjdGl2ZXMuYyBkaXJlY3RpdmVzLW9ubHkuYyBlcnJvcnMuYyBcCi0tCWV4cHIuYyBmaWxlcy5jIGlkZW50aWZpZXJzLmMgaW5pdC5jIGxleC5jIGxpbmUtbWFwLmMgbWFjcm8uYyBcCi0tCW1rZGVwcy5jIHBjaC5jIHN5bXRhYi5jIHRyYWRpdGlvbmFsLmMKLSsJZXhwci5jIGZpbGUtbWFwLmMgZmlsZXMuYyBpZGVudGlmaWVycy5jIGluaXQuYyBsZXguYyBsaW5lLW1hcC5jIFwKLSsJbWFjcm8uYyBta2RlcHMuYyBwY2guYyBzeW10YWIuYyB0cmFkaXRpb25hbC5jCi0gCi0gYWxsOiBsaWJjcHAuYSAkKFVTRURfQ0FUQUxPR1MpCi0gCi1AQCAtMjYzLDcgKzI2Myw3IEBAIHBvLyQoUEFDS0FHRSkucG90OiAkKGxpYmNwcF9hX1NPVVJDRVMpCi0gCi0gVEFHU19TT1VSQ0VTID0gJChsaWJjcHBfYV9TT1VSQ0VTKSBpbnRlcm5hbC5oIHVjbmlkLmggXAotICAgICBpbmNsdWRlL2xpbmUtbWFwLmggaW5jbHVkZS9zeW10YWIuaCBpbmNsdWRlL2NwcC1pZC1kYXRhLmggXAotLSAgICBpbmNsdWRlL2NwcGxpYi5oIGluY2x1ZGUvbWtkZXBzLmggc3lzdGVtLmgKLSsgICAgaW5jbHVkZS9jcHBsaWIuaCBpbmNsdWRlL21rZGVwcy5oIHN5c3RlbS5oIGluY2x1ZGUvZmlsZS1tYXAuaAotIAotIFRBR1M6ICQoVEFHU19TT1VSQ0VTKQotIAljZCAkKHNyY2RpcikgJiYgZXRhZ3MgJChUQUdTX1NPVVJDRVMpCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2ZpbGUtbWFwLmMgYi9saWJjcHAvZmlsZS1tYXAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjA0ZTg1MWIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmNwcC9maWxlLW1hcC5jCi1AQCAtMCwwICsxLDkyIEBACi0rLyogTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fCi0rICAgYW5kIF9fYnVpbHRpbl9GSUxFICgpLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQotK2xhdGVyIHZlcnNpb24uCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLStNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLStZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0rPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyBJbiBvdGhlciB3b3JkcywgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUgdGhpcyBwcm9ncmFtLgotKyBZb3UgYXJlIGZvcmJpZGRlbiB0byBmb3JiaWQgYW55b25lIGVsc2UgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZQotKyB3aGF0IHlvdSBnaXZlIHRoZW0uICAgSGVscCBzdGFtcCBvdXQgc29mdHdhcmUtaG9hcmRpbmchICAqLwotKwotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0rCi0rLyogU3RydWN0dXJlIHJlY29yZGluZyB0aGUgbWFwcGluZyBmcm9tIHNvdXJjZSBmaWxlIGFuZCBkaXJlY3RvcnkKLSsgICBuYW1lcyBhdCBjb21waWxlIHRpbWUgdG8gX19GSUxFX18gKi8KLSt0eXBlZGVmIHN0cnVjdCBmaWxlX3ByZWZpeF9tYXAKLSt7Ci0rICBjb25zdCBjaGFyICpvbGRfcHJlZml4OwotKyAgY29uc3QgY2hhciAqbmV3X3ByZWZpeDsKLSsgIHNpemVfdCBvbGRfbGVuOwotKyAgc2l6ZV90IG5ld19sZW47Ci0rICBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwICpuZXh0OwotK30gZmlsZV9wcmVmaXhfbWFwOwotKwotKy8qIExpbmtlZCBsaXN0IG9mIHN1Y2ggc3RydWN0dXJlcy4gICovCi0rc3RhdGljIGZpbGVfcHJlZml4X21hcCAqZmlsZV9wcmVmaXhfbWFwczsKLSsKLSsvKiBSZWNvcmQgcHJlZml4IG1hcHBpbmcgb2YgX19GSUxFX18uICBBUkcgaXMgdGhlIGFyZ3VtZW50IHRvCi0rICAgLWZmaWxlLXByZWZpeC1tYXAgYW5kIG11c3QgYmUgb2YgdGhlIGZvcm0gT0xEPU5FVy4gICovCi0raW50Ci0rYWRkX2ZpbGVfcHJlZml4X21hcCAoY29uc3QgY2hhciAqYXJnKQotK3sKLSsgIGZpbGVfcHJlZml4X21hcCAqbWFwOwotKyAgY29uc3QgY2hhciAqcDsKLSsKLSsgIHAgPSBzdHJjaHIgKGFyZywgJz0nKTsKLSsgIGlmICghcCkKLSsgIHsKLSsgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICB9Ci0rICBtYXAgPSBYTkVXIChmaWxlX3ByZWZpeF9tYXApOwotKyAgbWFwLT5vbGRfcHJlZml4ID0geHN0cm5kdXAgKGFyZywgcCAtIGFyZyk7Ci0rICBtYXAtPm9sZF9sZW4gPSBwIC0gYXJnOwotKyAgcCsrOwotKyAgbWFwLT5uZXdfcHJlZml4ID0geHN0cmR1cCAocCk7Ci0rICBtYXAtPm5ld19sZW4gPSBzdHJsZW4gKHApOwotKyAgbWFwLT5uZXh0ID0gZmlsZV9wcmVmaXhfbWFwczsKLSsgIGZpbGVfcHJlZml4X21hcHMgPSBtYXA7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogUGVyZm9ybSB1c2VyLXNwZWNpZmllZCBtYXBwaW5nIG9mIF9fRklMRV9fIHByZWZpeGVzLiAgUmV0dXJuCi0rICAgdGhlIG5ldyBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gZmlsZW5hbWUuICAqLwotKwotK2NvbnN0IGNoYXIgKgotK3JlbWFwX2ZpbGVfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIGZpbGVfcHJlZml4X21hcCAqbWFwOwotKyAgY2hhciAqczsKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBzaXplX3QgbmFtZV9sZW47Ci0rCi0rICBmb3IgKG1hcCA9IGZpbGVfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQotKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotKyAgICAgIGJyZWFrOwotKyAgaWYgKCFtYXApCi0rICAgIHJldHVybiBmaWxlbmFtZTsKLSsgIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKLSsgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0rICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7Ci0rICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKLSsgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOwotKwotKyAgcmV0dXJuIHhzdHJkdXAgKHMpOwotK30KLSsKLSsKLWRpZmYgLS1naXQgYS9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU2ZjhjYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18KLSsgICBhbmQgX19idWlsdGluX0ZJTEUgKCkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLStGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55Ci0rbGF0ZXIgdmVyc2lvbi4KLSsKLStUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLStidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLStHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSs8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCi0rIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCi0rIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEgICovCi0rCi0rI2lmbmRlZiBMSUJDUFBfRklMRV9NQVBfSAotKyNkZWZpbmUgTElCQ1BQX0ZJTEVfTUFQX0gKLSsKLStjb25zdCBjaGFyICogcmVtYXBfZmlsZV9maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotK2ludCBhZGRfZmlsZV9wcmVmaXhfbWFwIChjb25zdCBjaGFyICphcmcpOwotKwotKyNlbmRpZiAvKiAhTElCQ1BQX0ZJTEVfTUFQX0ggICovCi1kaWZmIC0tZ2l0IGEvbGliY3BwL21hY3JvLmMgYi9saWJjcHAvbWFjcm8uYwotaW5kZXggMWUwYTBiNS4uYzNkMzMwYyAxMDA2NDQKLS0tLSBhL2xpYmNwcC9tYWNyby5jCi0rKysgYi9saWJjcHAvbWFjcm8uYwotQEAgLTI2LDYgKzI2LDcgQEAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgImNwcGxpYi5oIgotICNpbmNsdWRlICJpbnRlcm5hbC5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotIAotIHR5cGVkZWYgc3RydWN0IG1hY3JvX2FyZyBtYWNyb19hcmc7Ci0gLyogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgdG9rZW5zIG9mIGEgbWFjcm8gYXJndW1lbnQuICBUaGVzZQotQEAgLTI5Nyw2ICsyOTgsNyBAQCBfY3BwX2J1aWx0aW5fbWFjcm9fdGV4dCAoY3BwX3JlYWRlciAqcGZpbGUsIGNwcF9oYXNobm9kZSAqbm9kZSkKLSAJICAgIGlmICghbmFtZSkKLSAJICAgICAgYWJvcnQgKCk7Ci0gCSAgfQotKwluYW1lID0gcmVtYXBfZmlsZV9maWxlbmFtZSAobmFtZSk7Ci0gCWxlbiA9IHN0cmxlbiAobmFtZSk7Ci0gCWJ1ZiA9IF9jcHBfdW5hbGlnbmVkX2FsbG9jIChwZmlsZSwgbGVuICogMiArIDMpOwotIAlyZXN1bHQgPSBidWY7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NS1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTUtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2NhZWQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NS1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDE0Yjc5NjQxZmY2YjAwMDhhZWY3ZmJmN2FhMzAwZGFlYzExZDFlNzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDA1OjM5OjU5IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJldXNlIC1mZGVidWctcHJlZml4LW1hcCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwCi0KLVRoZSBvZS1jb3JlIG1heSB1c2UgZXh0ZXJuYWwgdG9vbGNoYWluIHRvIGNvbXBpbGUsCi13aGljaCBtYXkgbm90IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXAuCi0KLVNpbmNlIHdlIHVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gZG8gdGhlIHNhbWUgdGhpbmcsCi1zbyB3ZSBjb3VsZCByZXVzZSBpdCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2UtY29yZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL29wdHMtZ2xvYmFsLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2Mvb3B0cy1nbG9iYWwuYyBiL2djYy9vcHRzLWdsb2JhbC5jCi1pbmRleCBiNjFiZGNmLi41MWJiMTc3IDEwMDY0NAotLS0tIGEvZ2NjL29wdHMtZ2xvYmFsLmMKLSsrKyBiL2djYy9vcHRzLWdsb2JhbC5jCi1AQCAtNTAsNiArNTAsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJydGwuaCIKLSAjaW5jbHVkZSAiZGJnY250LmgiCi0gI2luY2x1ZGUgImRlYnVnLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0gI2luY2x1ZGUgImhhc2gtbWFwLmgiCi0gI2luY2x1ZGUgInBsdWdpbi1hcGkuaCIKLSAjaW5jbHVkZSAiaXBhLXJlZi5oIgotQEAgLTM3OCw2ICszNzksOSBAQCBoYW5kbGVfY29tbW9uX2RlZmVycmVkX29wdGlvbnMgKHZvaWQpCi0gCi0gCWNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKLSAJICBhZGRfZGVidWdfcHJlZml4X21hcCAob3B0LT5hcmcpOwotKwotKwkgIC8qIFJldXNlIC1mZGVidWctcHJlZml4LW1hcCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwICovCi0rCSAgYWRkX2ZpbGVfcHJlZml4X21hcCAob3B0LT5hcmcpOwotIAkgIGJyZWFrOwotIAotIAljYXNlIE9QVF9mZHVtcF86Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ni1FbmFibGUtbGliYy1wcm92aWRlLXNzcC1hbmQtZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU2LUVuYWJsZS1saWJjLXByb3ZpZGUtc3NwLWFuZC1nY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OTEzNDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU2LUVuYWJsZS1saWJjLXByb3ZpZGUtc3NwLWFuZC1nY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDVjN2JkODUzYzg3MDNmNjU5MDQwODM3Nzg3MTJlZjYyNWMzZjM4MTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAyNyBNYXIgMjAxNiAyMDozMTo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIIDU2LzU3XSBFbmFibGUgbGliYyBwcm92aWRlIHNzcCBhbmQKLSBnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkciBmb3IgbXVzbAotCi0gICAgICAgICogY29uZmlndXJlLmFjIChnY2NfY3ZfbGliY19wcm92aWRlc19zc3ApOiBBZGQgKi0qLW11c2wqLgotICAgICAgICAoZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlX3BoZHIpOiBBZGQgKi1saW51eC1tdXNsKi4KLSAgICAgICAgKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIGdjYy9jb25maWd1cmUgICAgfCA3ICsrKysrKysKLSBnY2MvY29uZmlndXJlLmFjIHwgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggZmNiMDVlNy4uODFhNDQ5YyAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0yNzgxNCw2ICsyNzgxNCw5IEBAIGlmIHRlc3QgIiR7Z2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwK3NldH0iID0gc2V0OyB0aGVuIDoKLSBlbHNlCi0gICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9bm8KLSAgICAgY2FzZSAiJHRhcmdldCIgaW4KLSsgICAgICAgKi0qLW11c2wqKQotKyAgICAgICAgIyBBbGwgdmVyc2lvbnMgb2YgbXVzbCBwcm92aWRlIHN0YWNrIHByb3RlY3RvcgotKyAgICAgICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllczs7Ci0gICAgICAgICotKi1saW51eCogfCAqLSota2ZyZWVic2QqLWdudSB8ICotKi1rbmV0YnNkKi1nbnUpCi0gICAgICAgIyBnbGliYyAyLjQgYW5kIGxhdGVyIHByb3ZpZGVzIF9fc3RhY2tfY2hrX2ZhaWwgYW5kCi0gICAgICAgIyBlaXRoZXIgX19zdGFja19jaGtfZ3VhcmQsIG9yIFRMUyBhY2Nlc3MgdG8gc3RhY2sgZ3VhcmQgY2FuYXJ5LgotQEAgLTI3ODQ2LDYgKzI3ODQ5LDcgQEAgZmkKLSAJICMgPGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAwOC0xMC9tc2cwMDEzMC5odG1sPikgYW5kIGZvciBub3cKLSAJICMgc2ltcGx5IGFzc2VydCB0aGF0IGdsaWJjIGRvZXMgcHJvdmlkZSB0aGlzLCB3aGljaCBpcyB0cnVlIGZvciBhbGwKLSAJICMgcmVhbGlzdGljYWxseSB1c2FibGUgR05VL0h1cmQgY29uZmlndXJhdGlvbnMuCi0rCSAjIEFsbCBzdXBwb3J0ZWQgdmVyc2lvbnMgb2YgbXVzbCBwcm92aWRlIGl0IGFzIHdlbGwKLSAJIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXM7OwotICAgICAgICAqLSotZGFyd2luKiB8ICotKi1mcmVlYnNkKikKLSAJIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIl9fc3RhY2tfY2hrX2ZhaWwiICJhY19jdl9mdW5jX19fc3RhY2tfY2hrX2ZhaWwiCi1AQCAtMjc5NDIsNiArMjc5NDYsOSBAQCBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAgIGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyPW5vCi0gICAgIGZpCi0gICAgIDs7Ci0rICAqLWxpbnV4LW11c2wqKQotKyAgICBnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkcj15ZXMKLSsgICAgOzsKLSBlc2FjCi0gCi0gaWYgdGVzdCB4JGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyID0geHllczsgdGhlbgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA5MjNiYzlhLi5iMDhlM2RjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTUyOTEsNiArNTI5MSw5IEBAIEFDX0NBQ0hFX0NIRUNLKF9fc3RhY2tfY2hrX2ZhaWwgaW4gdGFyZ2V0IEMgbGlicmFyeSwKLSAgICAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3AsCi0gICAgICAgW2djY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubwotICAgICBjYXNlICIkdGFyZ2V0IiBpbgotKyAgICAgICAqLSotbXVzbCopCi0rICAgICAgICAjIEFsbCB2ZXJzaW9ucyBvZiBtdXNsIHByb3ZpZGUgc3RhY2sgcHJvdGVjdG9yCi0rICAgICAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzOzsKLSAgICAgICAgKi0qLWxpbnV4KiB8ICotKi1rZnJlZWJzZCotZ251IHwgKi0qLWtuZXRic2QqLWdudSkKLSAgICAgICAjIGdsaWJjIDIuNCBhbmQgbGF0ZXIgcHJvdmlkZXMgX19zdGFja19jaGtfZmFpbCBhbmQKLSAgICAgICAjIGVpdGhlciBfX3N0YWNrX2Noa19ndWFyZCwgb3IgVExTIGFjY2VzcyB0byBzdGFjayBndWFyZCBjYW5hcnkuCi1AQCAtNTMxNyw2ICs1MzIwLDcgQEAgQUNfQ0FDSEVfQ0hFQ0soX19zdGFja19jaGtfZmFpbCBpbiB0YXJnZXQgQyBsaWJyYXJ5LAotIAkgIyA8aHR0cDovL2djYy5nbnUub3JnL21sL2djYy8yMDA4LTEwL21zZzAwMTMwLmh0bWw+KSBhbmQgZm9yIG5vdwotIAkgIyBzaW1wbHkgYXNzZXJ0IHRoYXQgZ2xpYmMgZG9lcyBwcm92aWRlIHRoaXMsIHdoaWNoIGlzIHRydWUgZm9yIGFsbAotIAkgIyByZWFsaXN0aWNhbGx5IHVzYWJsZSBHTlUvSHVyZCBjb25maWd1cmF0aW9ucy4KLSsJICMgQWxsIHN1cHBvcnRlZCB2ZXJzaW9ucyBvZiBtdXNsIHByb3ZpZGUgaXQgYXMgd2VsbAotIAkgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllczs7Ci0gICAgICAgICotKi1kYXJ3aW4qIHwgKi0qLWZyZWVic2QqKQotIAkgQUNfQ0hFQ0tfRlVOQyhfX3N0YWNrX2Noa19mYWlsLFtnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzXSwKLUBAIC01MzkwLDYgKzUzOTQsOSBAQCBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAgIGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyPW5vCi0gICAgIGZpCi0gICAgIDs7Ci0rICAqLWxpbnV4LW11c2wqKQotKyAgICBnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkcj15ZXMKLSsgICAgOzsKLSBlc2FjCi0gR0NDX1RBUkdFVF9URU1QTEFURShbVEFSR0VUX0RMX0lURVJBVEVfUEhEUl0pCi0gaWYgdGVzdCB4JGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyID0geHllczsgdGhlbgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTctdW53aW5kLWZpeC1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ny11bndpbmQtZml4LWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTkzNTg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ny11bndpbmQtZml4LWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBjNWMzM2JmODgxYTJhZWEzNTUzMTBkZDkwODczZWQzOWJjMjcyYjNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbToga3RrYWNob3YgPGt0a2FjaG92QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFdlZCwgMjIgQXByIDIwMTUgMTQ6MjA6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA1Ny81N10gdW53aW5kIGZpeCBmb3IgbXVzbAotCi1PbiBiZWhhbGYgb2Ygc3phYm9sY3MubmFneUBhcm0uY29tCi0KLTIwMTUtMDQtMjIgIEdyZWdvciBSaWNoYXJkcyAgPGdyZWdvci5yaWNoYXJkc0B1d2F0ZXJsb28uY2E+Ci0JICAgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+Ci0KLQkqIHVud2luZC1kdzItZmRlLWRpcC5jIChVU0VfUFRfR05VX0VIX0ZSQU1FKTogRGVmaW5lIGl0IG9uCi0JTGludXggaWYgdGFyZ2V0IHByb3ZpZGVzIGRsX2l0ZXJhdGVfcGhkci4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjIyMzI4IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBsaWJnY2MvdW53aW5kLWR3Mi1mZGUtZGlwLmMgfCA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmdjYy91bndpbmQtZHcyLWZkZS1kaXAuYyBiL2xpYmdjYy91bndpbmQtZHcyLWZkZS1kaXAuYwotaW5kZXggZTFlNTY2Yi4uMTM3ZGNlZCAxMDA2NDQKLS0tLSBhL2xpYmdjYy91bndpbmQtZHcyLWZkZS1kaXAuYwotKysrIGIvbGliZ2NjL3Vud2luZC1kdzItZmRlLWRpcC5jCi1AQCAtNTksNiArNTksMTIgQEAKLSAKLSAjaWYgIWRlZmluZWQoaW5oaWJpdF9saWJjKSAmJiBkZWZpbmVkKEhBVkVfTERfRUhfRlJBTUVfSERSKSBcCi0gICAgICYmIGRlZmluZWQoVEFSR0VUX0RMX0lURVJBVEVfUEhEUikgXAotKyAgICAmJiBkZWZpbmVkKF9fbGludXhfXykKLSsjIGRlZmluZSBVU0VfUFRfR05VX0VIX0ZSQU1FCi0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkKGluaGliaXRfbGliYykgJiYgZGVmaW5lZChIQVZFX0xEX0VIX0ZSQU1FX0hEUikgXAotKyAgICAmJiBkZWZpbmVkKFRBUkdFVF9ETF9JVEVSQVRFX1BIRFIpIFwKLSAgICAgJiYgKGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpCi0gIyBkZWZpbmUgRWxmVyBfX0VsZk4KLSAjIGRlZmluZSBVU0VfUFRfR05VX0VIX0ZSQU1FCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OC1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXJlbGF0aXZlLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTgtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1yZWxhdGl2ZS1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjkxZmRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OC1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXJlbGF0aXZlLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDI4OWFkMjk2OWE1OTY2YzYwM2JmNjkyOGNlNDQyZGI3NGM0Y2JiMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI0IE1hciAyMDE2IDExOjIzOjE0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdjYy9maW5hbC5jOiAtZmRlYnVnLXByZWZpeC1tYXAgc3VwcG9ydCB0byByZW1hcCBzb3VyY2VzIHdpdGgKLSByZWxhdGl2ZSBwYXRoCi0KLVBSIG90aGVyLzcwNDI4Ci0qIGZpbmFsLmMgKHJlbWFwX2RlYnVnX2ZpbGVuYW1lKTogVXNlIGxyZWFscGF0aCB0byB0cmFuc2xhdGUKLXJlbGF0aXZlIHBhdGggYmVmb3JlIHJlbWFwcGluZwotCi1odHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MDQyOAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2djYy1wYXRjaGVzQGdjYy5nbnUub3JnXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jCi1pbmRleCA1NWNmNTA5Li5jMzU5NGMyIDEwMDY0NAotLS0tIGEvZ2NjL2ZpbmFsLmMKLSsrKyBiL2djYy9maW5hbC5jCi1AQCAtMTU1NCwxNiArMTU1NCwyNSBAQCByZW1hcF9kZWJ1Z19maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gICBjb25zdCBjaGFyICpuYW1lOwotICAgc2l6ZV90IG5hbWVfbGVuOwotIAotKyAgLyogU3VwcG9ydCB0byByZW1hcCBmaWxlbmFtZSB3aXRoIHJlbGF0aXZlIHBhdGggICovCi0rICBjaGFyICpyZWFscGF0aCA9IGxyZWFscGF0aCAoZmlsZW5hbWUpOwotKyAgaWYgKHJlYWxwYXRoID09IE5VTEwpCi0rICAgIHJldHVybiBmaWxlbmFtZTsKLSsKLSAgIGZvciAobWFwID0gZGVidWdfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQotLSAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAocmVhbHBhdGgsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotICAgICAgIGJyZWFrOwotICAgaWYgKCFtYXApCi0tICAgIHJldHVybiBmaWxlbmFtZTsKLS0gIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKLSsgICAgewotKyAgICAgIGZyZWUgKHJlYWxwYXRoKTsKLSsgICAgICByZXR1cm4gZmlsZW5hbWU7Ci0rICAgIH0KLSsgIG5hbWUgPSByZWFscGF0aCArIG1hcC0+b2xkX2xlbjsKLSAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0gICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7Ci0gICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKLSAgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOwotKyAgZnJlZSAocmVhbHBhdGgpOwotICAgcmV0dXJuIGdnY19zdHJkdXAgKHMpOwotIH0KLSAMCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OS1saWJnY2MtdXNlLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTktbGliZ2NjLXVzZS1sZGZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjViNzJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OS1saWJnY2MtdXNlLWxkZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1MaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGdjYy01LjMuMC5vcmlnL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi0rKysgZ2NjLTUuMy4wL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi1AQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TCi0gCSQoREVTVERJUikkKHNsaWJkaXIpJChTSExJQl9TTElCRElSX1FVQUwpLyQoU0hMSUJfU09MSU5LKQotIAotIFNITElCX0xJTksgPSAkKENDKSAkKExJQkdDQzJfQ0ZMQUdTKSAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIFwKLS0JJChTSExJQl9MREZMQUdTKSBcCi0rCSQoTERGTEFHUykgJChTSExJQl9MREZMQUdTKSBcCi0gCS1vICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudG1wIEBtdWx0aWxpYl9mbGFnc0AgXAotIAkkKFNITElCX09CSlMpICQoU0hMSUJfTEMpICYmIFwKLSAJcm0gLWYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09MSU5LKSAmJiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40L0NWRS0yMDE2LTYxMzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40L0NWRS0yMDE2LTYxMzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NTI0YzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC9DVkUtMjAxNi02MTMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUxICswLDAgQEAKLUZyb20gYjNmNmIzMjE2NWQzZjQzN2JkMGFjNjI2OWMzYzQ5OWI2OGVjZjAzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGxhdyA8bGF3QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgNCBBdWcgMjAxNiAxNjo1MzoxOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggZm9yIFBSNzE2OTYgaW4gTGliaWJlcnR5IERlbWFuZ2xlcgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1bQlogIzcxNjk2XSAtLSBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MTY5NgotCi0yMDE2LTA4LTA0ICBNYXJjZWwgQsO2aG1lICA8Ym9laG1lLm1hcmNlbEBnbWFpbC5jb20+Ci0KLQlQUiBjKysvNzE2OTYKLQkqIGNwbHVzLWRlbS5jOiBQcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiB3aGVuIHRoZXJlIGlzIGEgY3ljbGUKLQlpbiB0aGUgcmVmZXJlbmNpbmcgb2YgcmVtZW1iZXJlZCBtYW5nbGVkIHR5cGVzLgotCSh3b3JrX3N0dWZmKTogTmV3IHN0YWNrIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHJlbWVtYmVyZWQgbWFuZ2xlZAotCXR5cGVzIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuCi0JKHB1c2hfcHJvY2Vzc2VkX3R5cGUpOiBOZXcgbWV0aG9kIHRvIHB1c2ggY3VycmVudGx5IHByb2Nlc3NlZAotCXJlbWVtYmVyZWQgdHlwZSBvbnRvIHRoZSBzdGFjay4KLQkocG9wX3Byb2Nlc3NlZF90eXBlKTogTmV3IG1ldGhvZCB0byBwb3AgY3VycmVudGx5IHByb2Nlc3NlZAotCXJlbWVtYmVyZWQgdHlwZSBmcm9tIHRoZSBzdGFjay4KLQkod29ya19zdHVmZl9jb3B5X3RvX2Zyb20pOiBDb3B5IHZhbHVlcyBvZiBuZXcgdmFyaWFibGVzLgotCShkZWxldGVfbm9uX0JfS193b3JrX3N0dWZmKTogRnJlZSBzdGFjayBtZW1vcnkuCi0JKGRlbWFuZ2xlX2FyZ3MpOiBQdXNoL1BvcCBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZS4KLQkoZG9fdHlwZSk6IERvIG5vdCBkZW1hbmdsZSBhIGN5Y2xpYyByZWZlcmVuY2UgYW5kIHB1c2gvcG9wCi0JcmVmZXJlbmNlZCByZW1lbWJlcmVkIHR5cGUuCi0KLWNoZXJyeS1waWNrZWQgZnJvbSBjb21taXQgb2YKLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIzOTE0MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbbWFzdGVyXQotQ1ZFOiBDVkUtMjAxNi02MTMxCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJpYmVydHkvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysKLSBsaWJpYmVydHkvY3BsdXMtZGVtLmMgICAgICAgICAgICAgICAgIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KLSBsaWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkIHwgMTggKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L0NoYW5nZUxvZyBiL2xpYmliZXJ0eS9DaGFuZ2VMb2cKLWluZGV4IDk4NTlhZDMuLjc5Mzk0ODAgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvQ2hhbmdlTG9nCi0rKysgYi9saWJpYmVydHkvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDIwIEBACi0rMjAxNi0wOC0wNCAgTWFyY2VsIELDtmhtZSAgPGJvZWhtZS5tYXJjZWxAZ21haWwuY29tPgotKwotKwlQUiBjKysvNzE2OTYKLSsJKiBjcGx1cy1kZW0uYzogUHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24gd2hlbiB0aGVyZSBpcyBhIGN5Y2xlCi0rCWluIHRoZSByZWZlcmVuY2luZyBvZiByZW1lbWJlcmVkIG1hbmdsZWQgdHlwZXMuCi0rCSh3b3JrX3N0dWZmKTogTmV3IHN0YWNrIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHJlbWVtYmVyZWQgbWFuZ2xlZAotKwl0eXBlcyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLgotKwkocHVzaF9wcm9jZXNzZWRfdHlwZSk6IE5ldyBtZXRob2QgdG8gcHVzaCBjdXJyZW50bHkgcHJvY2Vzc2VkCi0rCXJlbWVtYmVyZWQgdHlwZSBvbnRvIHRoZSBzdGFjay4KLSsJKHBvcF9wcm9jZXNzZWRfdHlwZSk6IE5ldyBtZXRob2QgdG8gcG9wIGN1cnJlbnRseSBwcm9jZXNzZWQKLSsJcmVtZW1iZXJlZCB0eXBlIGZyb20gdGhlIHN0YWNrLgotKwkod29ya19zdHVmZl9jb3B5X3RvX2Zyb20pOiBDb3B5IHZhbHVlcyBvZiBuZXcgdmFyaWFibGVzLgotKwkoZGVsZXRlX25vbl9CX0tfd29ya19zdHVmZik6IEZyZWUgc3RhY2sgbWVtb3J5LgotKwkoZGVtYW5nbGVfYXJncyk6IFB1c2gvUG9wIGN1cnJlbnRseSBwcm9jZXNzZWQgcmVtZW1iZXJlZCB0eXBlLgotKwkoZG9fdHlwZSk6IERvIG5vdCBkZW1hbmdsZSBhIGN5Y2xpYyByZWZlcmVuY2UgYW5kIHB1c2gvcG9wCi0rCXJlZmVyZW5jZWQgcmVtZW1iZXJlZCB0eXBlLgotKwotIDIwMTYtMDYtMDMgIFJlbGVhc2UgTWFuYWdlcgotIAotIAkqIEdDQyA1LjQuMCByZWxlYXNlZC4KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvY3BsdXMtZGVtLmMgYi9saWJpYmVydHkvY3BsdXMtZGVtLmMKLWluZGV4IDc1MTRlNTcuLmYyMWU2MzAgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvY3BsdXMtZGVtLmMKLSsrKyBiL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotQEAgLTE0NCw2ICsxNDQsOSBAQCBzdHJ1Y3Qgd29ya19zdHVmZgotICAgc3RyaW5nKiBwcmV2aW91c19hcmd1bWVudDsgLyogVGhlIGxhc3QgZnVuY3Rpb24gYXJndW1lbnQgZGVtYW5nbGVkLiAgKi8KLSAgIGludCBucmVwZWF0czsgICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgcHJldmlvdXMKLSAJCQkgICBhcmd1bWVudC4gICovCi0rICBpbnQgKnByb2N0eXBldmVjOyAgICAgLyogSW5kaWNlcyBvZiBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZXZlY3MuICAqLwotKyAgaW50IHByb2N0eXBldmVjX3NpemU7Ci0rICBpbnQgbnByb2N0eXBlczsKLSB9OwotIAotICNkZWZpbmUgUFJJTlRfQU5TSV9RVUFMSUZJRVJTICh3b3JrIC0+IG9wdGlvbnMgJiBETUdMX0FOU0kpCi1AQCAtNDM1LDYgKzQzOCwxMCBAQCBpdGVyYXRlX2RlbWFuZ2xlX2Z1bmN0aW9uIChzdHJ1Y3Qgd29ya19zdHVmZiAqLAotIAotIHN0YXRpYyB2b2lkIHJlbWVtYmVyX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSAKLStzdGF0aWMgdm9pZCBwdXNoX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqLCBpbnQpOwotKwotK3N0YXRpYyB2b2lkIHBvcF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKik7Ci0rCi0gc3RhdGljIHZvaWQgcmVtZW1iZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwotIAotIHN0YXRpYyBpbnQgcmVnaXN0ZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICopOwotQEAgLTEzMDEsNiArMTMwOCwxMCBAQCB3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSAoc3RydWN0IHdvcmtfc3R1ZmYgKnRvLCBzdHJ1Y3Qgd29ya19zdHVmZiAqZnJvbSkKLSAgICAgICBtZW1jcHkgKHRvLT5idHlwZXZlY1tpXSwgZnJvbS0+YnR5cGV2ZWNbaV0sIGxlbik7Ci0gICAgIH0KLSAKLSsgIGlmIChmcm9tLT5wcm9jdHlwZXZlYykKLSsgICAgdG8tPnByb2N0eXBldmVjID0KLSsgICAgICBYRFVQVkVDIChpbnQsIGZyb20tPnByb2N0eXBldmVjLCBmcm9tLT5wcm9jdHlwZXZlY19zaXplKTsKLSsKLSAgIGlmIChmcm9tLT5udG1wbF9hcmdzKQotICAgICB0by0+dG1wbF9hcmd2ZWMgPSBYTkVXVkVDIChjaGFyICosIGZyb20tPm50bXBsX2FyZ3MpOwotIAotQEAgLTEzMjksMTEgKzEzNDAsMTcgQEAgZGVsZXRlX25vbl9CX0tfd29ya19zdHVmZiAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmspCi0gICAvKiBEaXNjYXJkIHRoZSByZW1lbWJlcmVkIHR5cGVzLCBpZiBhbnkuICAqLwotIAotICAgZm9yZ2V0X3R5cGVzICh3b3JrKTsKLS0gIGlmICh3b3JrIC0+IHR5cGV2ZWMgIT0gTlVMTCkKLSsgIGlmICh3b3JrLT50eXBldmVjICE9IE5VTEwpCi0gICAgIHsKLS0gICAgICBmcmVlICgoY2hhciAqKSB3b3JrIC0+IHR5cGV2ZWMpOwotLSAgICAgIHdvcmsgLT4gdHlwZXZlYyA9IE5VTEw7Ci0tICAgICAgd29yayAtPiB0eXBldmVjX3NpemUgPSAwOwotKyAgICAgIGZyZWUgKChjaGFyICopIHdvcmstPnR5cGV2ZWMpOwotKyAgICAgIHdvcmstPnR5cGV2ZWMgPSBOVUxMOwotKyAgICAgIHdvcmstPnR5cGV2ZWNfc2l6ZSA9IDA7Ci0rICAgIH0KLSsgIGlmICh3b3JrLT5wcm9jdHlwZXZlYyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgZnJlZSAod29yay0+cHJvY3R5cGV2ZWMpOwotKyAgICAgIHdvcmstPnByb2N0eXBldmVjID0gTlVMTDsKLSsgICAgICB3b3JrLT5wcm9jdHlwZXZlY19zaXplID0gMDsKLSAgICAgfQotICAgaWYgKHdvcmstPnRtcGxfYXJndmVjKQotICAgICB7Ci1AQCAtMzU1Miw2ICszNTY5LDggQEAgc3RhdGljIGludAotIGRvX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICoqbWFuZ2xlZCwgc3RyaW5nICpyZXN1bHQpCi0gewotICAgaW50IG47Ci0rICBpbnQgaTsKLSsgIGludCBpc19wcm9jdHlwZXZlYzsKLSAgIGludCBkb25lOwotICAgaW50IHN1Y2Nlc3M7Ci0gICBzdHJpbmcgZGVjbDsKLUBAIC0zNTY0LDYgKzM1ODMsNyBAQCBkb190eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqKm1hbmdsZWQsIHN0cmluZyAqcmVzdWx0KQotIAotICAgZG9uZSA9IDA7Ci0gICBzdWNjZXNzID0gMTsKLSsgIGlzX3Byb2N0eXBldmVjID0gMDsKLSAgIHdoaWxlIChzdWNjZXNzICYmICFkb25lKQotICAgICB7Ci0gICAgICAgaW50IG1lbWJlcjsKLUBAIC0zNjE2LDggKzM2MzYsMTUgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLCBzdHJpbmcgKnJlc3VsdCkKLSAJICAgICAgc3VjY2VzcyA9IDA7Ci0gCSAgICB9Ci0gCSAgZWxzZQotKwkgICAgZm9yIChpID0gMDsgaSA8IHdvcmstPm5wcm9jdHlwZXM7IGkrKykKLSsJICAgICAgaWYgKHdvcmsgLT4gcHJvY3R5cGV2ZWMgW2ldID09IG4pCi0rCSAgICAgICAgc3VjY2VzcyA9IDA7Ci0rCi0rCSAgaWYgKHN1Y2Nlc3MpCi0gCSAgICB7Ci0tCSAgICAgIHJlbWVtYmVyZWRfdHlwZSA9IHdvcmsgLT4gdHlwZXZlY1tuXTsKLSsJICAgICAgaXNfcHJvY3R5cGV2ZWMgPSAxOwotKwkgICAgICBwdXNoX3Byb2Nlc3NlZF90eXBlICh3b3JrLCBuKTsKLSsJICAgICAgcmVtZW1iZXJlZF90eXBlID0gd29yay0+dHlwZXZlY1tuXTsKLSAJICAgICAgbWFuZ2xlZCA9ICZyZW1lbWJlcmVkX3R5cGU7Ci0gCSAgICB9Ci0gCSAgYnJlYWs7Ci1AQCAtMzg0MCw2ICszODY3LDkgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLCBzdHJpbmcgKnJlc3VsdCkKLSAgICAgc3RyaW5nX2RlbGV0ZSAocmVzdWx0KTsKLSAgIHN0cmluZ19kZWxldGUgKCZkZWNsKTsKLSAKLSsgIGlmIChpc19wcm9jdHlwZXZlYykKLSsgICAgcG9wX3Byb2Nlc3NlZF90eXBlICh3b3JrKTsKLSsKLSAgIGlmIChzdWNjZXNzKQotICAgICAvKiBBc3N1bWUgYW4gaW50ZWdyYWwgdHlwZSwgaWYgd2UncmUgbm90IHN1cmUuICAqLwotICAgICByZXR1cm4gKGludCkgKCh0ayA9PSB0a19ub25lKSA/IHRrX2ludGVncmFsIDogdGspOwotQEAgLTQyNTIsNiArNDI4Miw0MSBAQCBkb19hcmcgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICoqbWFuZ2xlZCwgc3RyaW5nICpyZXN1bHQpCi0gfQotIAotIHN0YXRpYyB2b2lkCi0rcHVzaF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGludCB0eXBldmVjX2luZGV4KQotK3sKLSsgIGlmICh3b3JrLT5ucHJvY3R5cGVzID49IHdvcmstPnByb2N0eXBldmVjX3NpemUpCi0rICAgIHsKLSsgICAgICBpZiAoIXdvcmstPnByb2N0eXBldmVjX3NpemUpCi0rCXsKLSsJICB3b3JrLT5wcm9jdHlwZXZlY19zaXplID0gNDsKLSsJICB3b3JrLT5wcm9jdHlwZXZlYyA9IFhORVdWRUMgKGludCwgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAod29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA8IDE2KQotKwkgICAgLyogRG91YmxlIHdoZW4gc21hbGwuICAqLwotKwkgICAgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSAqPSAyOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgLyogR3JvdyBzbG93ZXIgd2hlbiBsYXJnZS4gICovCi0rCSAgICAgIGlmICh3b3JrLT5wcm9jdHlwZXZlY19zaXplID4gKElOVF9NQVggLyAzKSAqIDIpCi0rICAgICAgICAgICAgICAgIHhtYWxsb2NfZmFpbGVkIChJTlRfTUFYKTsKLSsgICAgICAgICAgICAgIHdvcmstPnByb2N0eXBldmVjX3NpemUgPSAod29yay0+cHJvY3R5cGV2ZWNfc2l6ZSAqIDMgLyAyKTsKLSsJICAgIH0KLSsgICAgICAgICAgd29yay0+cHJvY3R5cGV2ZWMKLSsgICAgICAgICAgICA9IFhSRVNJWkVWRUMgKGludCwgd29yay0+cHJvY3R5cGV2ZWMsIHdvcmstPnByb2N0eXBldmVjX3NpemUpOwotKwl9Ci0rICAgIH0KLSsgICAgd29yay0+cHJvY3R5cGV2ZWMgW3dvcmstPm5wcm9jdHlwZXMrK10gPSB0eXBldmVjX2luZGV4OwotK30KLSsKLStzdGF0aWMgdm9pZAotK3BvcF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmspCi0rewotKyAgd29yay0+bnByb2N0eXBlcy0tOwotK30KLSsKLStzdGF0aWMgdm9pZAotIHJlbWVtYmVyX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICpzdGFydCwgaW50IGxlbikKLSB7Ci0gICBjaGFyICp0ZW07Ci1AQCAtNDUxNSwxMCArNDU4MCwxMyBAQCBkZW1hbmdsZV9hcmdzIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqKm1hbmdsZWQsCi0gCQl7Ci0gCQkgIHN0cmluZ19hcHBlbmQgKGRlY2xwLCAiLCAiKTsKLSAJCX0KLSsJICAgICAgcHVzaF9wcm9jZXNzZWRfdHlwZSAod29yaywgdCk7Ci0gCSAgICAgIGlmICghZG9fYXJnICh3b3JrLCAmdGVtLCAmYXJnKSkKLSAJCXsKLSsJCSAgcG9wX3Byb2Nlc3NlZF90eXBlICh3b3JrKTsKLSAJCSAgcmV0dXJuICgwKTsKLSAJCX0KLSsJICAgICAgcG9wX3Byb2Nlc3NlZF90eXBlICh3b3JrKTsKLSAJICAgICAgaWYgKFBSSU5UX0FSR19UWVBFUykKLSAJCXsKLSAJCSAgc3RyaW5nX2FwcGVuZHMgKGRlY2xwLCAmYXJnKTsKLWRpZmYgLS1naXQgYS9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkIGIvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZAotaW5kZXggMWQ4Yjc3MS4uZDY5MGIyMyAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLSsrKyBiL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLUBAIC00NDI5LDMgKzQ0MjksMjEgQEAgX192dF85MDAwMDAwMDAwMGNhZmViYWJlCi0gCi0gX1o4MDgwMDAwMDAwMDAwMDAwMDAwMDAwMAotIF9aODA4MDAwMDAwMDAwMDAwMDAwMDAwMDAKLSsjCi0rIyBUZXN0cyB3cml0ZSBhY2Nlc3MgdmlvbGF0aW9uIFBSNzA5MjYKLSsKLSswX19PdDJtMDJSNVQwMDAwNTAwMDAwCi0rMF9fT3QybTAyUjVUMDAwMDUwMDAwMAotKyMKLSsKLSswX19HVDUwMDAwMDAwMDAwXwotKzBfX0dUNTAwMDAwMDAwMDBfCi0rIwotKwotK19fdDJtMDVCNTAwMDAwMDAwMDAwMDAwMDAwXwotK19fdDJtMDVCNTAwMDAwMDAwMDAwMDAwMDAwXwotKyMKLSsjIFRlc3RzIHN0YWNrIG92ZXJmbG93IFBSNzE2OTYKLSsKLStfXzEwJTBfX1M0XzBUMFQwCi0rJTA8Pjo6JTAoJTA8PikKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLmluYwppbmRleCA1YzgxYTMzLi5lNTY5ZTAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLmluYwpAQCAtMzIsMTIgKzMyLDYgQEAKIFNSQ19VUkkgPSAiXAogICAgICAgICAgICAke0JBU0VVUkl9IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVjbGliYy1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtdWNsaWJjLWxvY2FsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDktYzk5LXNucHJpbnRmLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTAtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXApAQCAtNzEsNyArNjUsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQxLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MS1zc3Bfbm9uc2hhcmVkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNDItZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQzLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQ0LWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2ggXApAQCAtODEsNiArNzUsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDA1NF9hbGxfbm9waWUtYWxsLWZsYWdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNTUtdW53aW5kX2gtZ2xpYmMyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDU2LUxSQS1QUjcwOTA0LXJlbGF4LXRoZS1yZXN0cmljdGlvbi1vbi1zdWJyZWctcmVsb2FkLWYucGF0Y2ggXAogICAgICAgICAgICAke0JBQ0tQT1JUU30gXAogIgogQkFDS1BPUlRTID0gIlwKQEAgLTEyOSw4ICsxMjQsNiBAQAogICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMgXAogIgogCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAiCi0KIEVYVFJBX09FQ09ORl9QQVRIUyA9ICJcCiAgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCiAgICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDItdWNsaWJjLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDItdWNsaWJjLWNvbmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMjg0ZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDAyLXVjbGliYy1jb25mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA0ZWZjNWEyNThjODEyODc1NzQzNjQ3ZDc1NmY3NWM5M2M0ZDUxNGE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzg6MjUgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi80Nl0gdWNsaWJjLWNvbmYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2ggfCA0ICsrKysKLSBsaWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZyAgICAgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaCBiL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotaW5kZXggNjBiMDQ5Ny4uNmRjN2VhZCAxMDA3NTUKLS0tLSBhL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotKysrIGIvY29udHJpYi9yZWdyZXNzaW9uL29ianMtZ2NjLnNoCi1AQCAtMTA2LDYgKzEwNiwxMCBAQCBpZiBbICRIX1JFQUxfVEFSR0VUID0gJEhfUkVBTF9IT1NUIC1hICRIX1JFQUxfVEFSR0VUID0gaTY4Ni1wYy1saW51eC1nbnUgXQotICB0aGVuCi0gICBtYWtlIGFsbC1nZGIgYWxsLWRlamFnbnUgYWxsLWxkIHx8IGV4aXQgMQotICAgbWFrZSBpbnN0YWxsLWdkYiBpbnN0YWxsLWRlamFnbnUgaW5zdGFsbC1sZCB8fCBleGl0IDEKLStlbGlmIFsgJEhfUkVBTF9UQVJHRVQgPSAkSF9SRUFMX0hPU1QgLWEgJEhfUkVBTF9UQVJHRVQgPSBpNjg2LXBjLWxpbnV4LXVjbGliYyBdCi0rIHRoZW4KLSsgIG1ha2UgYWxsLWdkYiBhbGwtZGVqYWdudSBhbGwtbGQgfHwgZXhpdCAxCi0rICBtYWtlIGluc3RhbGwtZ2RiIGluc3RhbGwtZGVqYWdudSBpbnN0YWxsLWxkIHx8IGV4aXQgMQotIGVsaWYgWyAkSF9SRUFMX1RBUkdFVCA9ICRIX1JFQUxfSE9TVCBdIDsgdGhlbgotICAgbWFrZSBib290c3RyYXAgfHwgZXhpdCAxCi0gICBtYWtlIGluc3RhbGwgfHwgZXhpdCAxCi1kaWZmIC0tZ2l0IGEvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcgYi9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotaW5kZXggZDMxODk1Ny4uZGY1NTk1MCAxMDA3NTUKLS0tLSBhL2xpYmphdmEvY2xhc3NwYXRoL2x0Y29uZmlnCi0rKysgYi9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotQEAgLTYwMyw3ICs2MDMsNyBAQCBob3N0X29zPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLSAKLSAjIFRyYW5zZm9ybSBsaW51eCogdG8gKi0qLWxpbnV4LWdudSosIHRvIHN1cHBvcnQgb2xkIGNvbmZpZ3VyZSBzY3JpcHRzLgotIGNhc2UgJGhvc3Rfb3MgaW4KLS1saW51eC1nbnUqKSA7OwotK2xpbnV4LWdudSp8bGludXgtdWNsaWJjKikgOzsKLSBsaW51eCopIGhvc3Q9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoLiotLiotbGludXhcKVwoLipcKSQvXDEtZ251XDIvJ2AKLSBlc2FjCi0gCi1AQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgbGludXgtZ251b2xkbGQqIHwgbGludXgtZ251YW91dCogfCBsaW51eC1nbnVjb2ZmKikKLSAgIDs7Ci0gCi0gIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotLWxpbnV4LWdudSopCi0rbGludXgqKQotICAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgIG5lZWRfdmVyc2lvbj1ubwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYwN2ZlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSBhZDVmZDI4M2ZjN2VmMDRmNjZjN2ZiMDAzODA1MzY0ZWEzYmQzNGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDA6MTIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy80Nl0gZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYyB8IDUgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmggIHwgOSArKysrKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggIHwgOSArKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmNjCi1pbmRleCBlZjZjZThmLi40NzQwNjM2IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotQEAgLTI3Myw1ICsyNzMsMTAgQEAgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCi0gI2lmZGVmIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAotICNkZWZpbmUgX0dMSUJDWFhfTERCTF9DT01QQVQoZGJsLCBsZGJsKSBcCi0gICBleHRlcm4gIkMiIHZvaWQgbGRibCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGFsaWFzICgjZGJsKSkpCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsvLyBUaGlzIGlzIGJlY2F1c2UgX19jX2xvY2FsZSBpcyBvZiB0eXBlIF9fY3R5cGVfdG91cGxvd190KiB3aGljaCBpcyBzaG9ydCBvbiB1Y2xpYmMuIGZvciBnbGliYyBpdHMgaW50KgotK19HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQcywgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BzKTsKLSsjZWxzZQotIF9HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQaSwgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BpKTsKLSsjZW5kaWYKLSAjZW5kaWYgLy8gX0dMSUJDWFhfTE9OR19ET1VCTEVfQ09NUEFUCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi1pbmRleCA3OTQ0NzFlLi5kNjVmOTU1IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmgKLUBAIC00MCwxMyArNDAsMjIgQEAKLSAKLSAjaW5jbHVkZSA8Y2xvY2FsZT4KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNlbmRpZgotKwotICNkZWZpbmUgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgMAotIAotIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQotIHsKLSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rICB0eXBlZGVmIF9fY3R5cGVfdG91cGxvd190KglfX2NfbG9jYWxlOwotKyNlbHNlCi0gICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOwotKyNlbmRpZgotIAotICAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgZG91YmxlIGFuZCBsb25nIGRvdWJsZSB0byBzdHJpbmcgYW5kCi0gICAvLyByZXR1cm4gbGVuZ3RoIG9mIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLWluZGV4IDU5MWM3OTMuLjU1ZWIwZTkgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ251LWxpbnV4L2N0eXBlX2Jhc2UuaAotQEAgLTMzLDYgKzMzLDExIEBACi0gCi0gLy8gSW5mb3JtYXRpb24gYXMgZ2xlYW5lZCBmcm9tIC91c3IvaW5jbHVkZS9jdHlwZS5oCi0gCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKLSB7Ci0gX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLUBAIC00MSw3ICs0NiwxMSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotICAgc3RydWN0IGN0eXBlX2Jhc2UKLSAgIHsKLSAgICAgLy8gTm9uLXN0YW5kYXJkIHR5cGVkZWZzLgotKyNpZmRlZiBfX1VDTElCQ19fCi0rICAgIHR5cGVkZWYgY29uc3QgX19jdHlwZV90b3VwbG93X3QqCV9fdG9fdHlwZTsKLSsjZWxzZQotICAgICB0eXBlZGVmIGNvbnN0IGludCogCQlfX3RvX3R5cGU7Ci0rI2VuZGlmCi0gCi0gICAgIC8vIE5COiBPZmZzZXRzIGludG8gY3R5cGU8Y2hhcj46Ol9NX3RhYmxlIGZvcmNlIGEgcGFydGljdWxhciBzaXplCi0gICAgIC8vIG9uIHRoZSBtYXNrIHR5cGUuIEJlY2F1c2Ugb2YgdGhpcywgd2UgZG9uJ3QgdXNlIGFuIGVudW0uCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMjYyN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODYyICswLDAgQEAKLUZyb20gNjhiZDA4MzM1N2U3ODY3OGE5YmFhYzc2MGJlYjJhMzFmMDA5NTRhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQxOjM5ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvNDZdIHVjbGliYy1sb2NhbGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvYWNpbmNsdWRlLm00ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNyArKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgIDYzICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCAxNjAgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8IDExNyArKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYyAgICAgICAgfCAzMDggKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyAgICAgICAgfCAgODAgKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCAzMDAgKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgICAgICAgfCAxMDAgKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxMTggKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjICAgICAgIHwgNjkyICsrKysrKysrKysrKysrKysrKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgICAgICAgIHwgMTYwICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCA0MDYgKysrKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAgNjggKysKLSBsaWJzdGRjKystdjMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NSArKysKLSBsaWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaCAgICAgICB8ICAgMiArCi0gbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIDE2IGZpbGVzIGNoYW5nZWQsIDI2ODggaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00Ci1pbmRleCBiMGY4OGNiLi5hMGVlMzZiIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotKysrIGIvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotQEAgLTIzNTgsNiArMjM1OCw5IEBAIEFDX0RFRlVOKFtHTElCQ1hYX0VOQUJMRV9DTE9DQUxFXSwgWwotICAgIyBEZWZhdWx0IHRvICJnZW5lcmljIi4KLSAgIGlmIHRlc3QgJGVuYWJsZV9jbG9jYWxlX2ZsYWcgPSBhdXRvOyB0aGVuCi0gICAgIGNhc2UgJHt0YXJnZXRfb3N9IGluCi0rICAgICAgKi11Y2xpYmMqKQotKyAgICAgICAgZW5hYmxlX2Nsb2NhbGVfZmxhZz11Y2xpYmMKLSsgICAgICAgIDs7Ci0gICAgICAgbGludXgqIHwgZ251KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gCWVuYWJsZV9jbG9jYWxlX2ZsYWc9Z251Ci0gCTs7Ci1AQCAtMjU0Miw2ICsyNTQ1LDQwIEBAIEFDX0RFRlVOKFtHTElCQ1hYX0VOQUJMRV9DTE9DQUxFXSwgWwotICAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy90aW1lX21lbWJlcnMuY2MKLSAgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS9nZW5lcmljL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gICAgICAgOzsKLSsgICAgdWNsaWJjKQotKyAgICAgIEFDX01TR19SRVNVTFQodWNsaWJjKQotKwotKyAgICAgICMgRGVjbGFyZSBpbnRlbnRpb24gdG8gdXNlIGdldHRleHQsIGFuZCBhZGQgc3VwcG9ydCBmb3Igc3BlY2lmaWMKLSsgICAgICAjIGxhbmd1YWdlcy4KLSsgICAgICAjIEZvciBzb21lIHJlYXNvbiwgQUxMX0xJTkdVQVMgaGFzIHRvIGJlIGJlZm9yZSBBTS1HTlUtR0VUVEVYVAotKyAgICAgIEFMTF9MSU5HVUFTPSJkZSBmciIKLSsKLSsgICAgICAjIERvbid0IGNhbGwgQU0tR05VLUdFVFRFWFQgaGVyZS4gSW5zdGVhZCwgYXNzdW1lIGdsaWJjLgotKyAgICAgIEFDX0NIRUNLX1BST0coY2hlY2tfbXNnZm10LCBtc2dmbXQsIHllcywgbm8pCi0rICAgICAgaWYgdGVzdCB4IiRjaGVja19tc2dmbXQiID0geCJ5ZXMiICYmIHRlc3QgeCIkZW5hYmxlX25scyIgPSB4InllcyI7IHRoZW4KLSsgICAgICAgIFVTRV9OTFM9eWVzCi0rICAgICAgZmkKLSsgICAgICAjIEV4cG9ydCB0aGUgYnVpbGQgb2JqZWN0cy4KLSsgICAgICBmb3IgbGluZyBpbiAkQUxMX0xJTkdVQVM7IGRvIFwKLSsgICAgICAgIGdsaWJjeHhfTU9GSUxFUz0iJGdsaWJjeHhfTU9GSUxFUyAkbGluZy5tbyI7IFwKLSsgICAgICAgIGdsaWJjeHhfUE9GSUxFUz0iJGdsaWJjeHhfUE9GSUxFUyAkbGluZy5wbyI7IFwKLSsgICAgICBkb25lCi0rICAgICAgQUNfU1VCU1QoZ2xpYmN4eF9NT0ZJTEVTKQotKyAgICAgIEFDX1NVQlNUKGdsaWJjeHhfUE9GSUxFUykKLSsKLSsgICAgICBDTE9DQUxFX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKyAgICAgIENMT0NBTEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsgICAgICBDQ09ERUNWVF9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSsgICAgICBDQ09MTEFURV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKyAgICAgIENNRVNTQUdFU19IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKyAgICAgIENNRVNTQUdFU19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rICAgICAgQ01PTkVZX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsgICAgICBDTlVNRVJJQ19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsgICAgICBDVElNRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rICAgICAgOzsKLSAgIGVzYWMKLSAKLSAgICMgVGhpcyBpcyB3aGVyZSB0aGUgdGVzdHN1aXRlIGxvb2tzIGZvciBsb2NhbGUgY2F0YWxvZ3MsIHVzaW5nIHRoZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJhZTNlNGEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTAsMCArMSw2MyBAQAotKy8vIFByb3RvdHlwZXMgZm9yIEdMSUJDIHRocmVhZCBsb2NhbGUgX18tcHJlZml4ZWQgZnVuY3Rpb25zIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSsjaW5jbHVkZSA8Y2xvY2FsZT4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBjbGVhbiB0aGlzIHVwCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsKLStleHRlcm4gIkMiIF9fdHlwZW9mKG5sX2xhbmdpbmZvX2wpIF9fbmxfbGFuZ2luZm9fbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cmNvbGxfbCkgX19zdHJjb2xsX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJmdGltZV9sKSBfX3N0cmZ0aW1lX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ0b2RfbCkgX19zdHJ0b2RfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnRvZl9sKSBfX3N0cnRvZl9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RydG9sZF9sKSBfX3N0cnRvbGRfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnhmcm1fbCkgX19zdHJ4ZnJtX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihuZXdsb2NhbGUpIF9fbmV3bG9jYWxlOwotK2V4dGVybiAiQyIgX190eXBlb2YoZnJlZWxvY2FsZSkgX19mcmVlbG9jYWxlOwotK2V4dGVybiAiQyIgX190eXBlb2YoZHVwbG9jYWxlKSBfX2R1cGxvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rZXh0ZXJuICJDIiBfX3R5cGVvZihpc3djdHlwZV9sKSBfX2lzd2N0eXBlX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih0b3dsb3dlcl9sKSBfX3Rvd2xvd2VyX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih0b3d1cHBlcl9sKSBfX3Rvd3VwcGVyX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3Njb2xsX2wpIF9fd2NzY29sbF9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzZnRpbWVfbCkgX193Y3NmdGltZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzeGZybV9sKSBfX3djc3hmcm1fbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjdHlwZV9sKSBfX3djdHlwZV9sOwotKyNlbmRpZgotKwotKyNlbmRpZiAvLyBHTElCQyAyLjMgYW5kIGxhdGVyCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTA4MWRjMQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMCwwICsxLDE2MCBAQAotKy8vIFdyYXBwZXIgZm9yIHVuZGVybHlpbmcgQy1sYW5ndWFnZSBsb2NhbGl6YXRpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi44ICBTdGFuZGFyZCBsb2NhbGUgY2F0ZWdvcmllcy4KLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGNlcnJubz4gIC8vIEZvciBlcnJubwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSsjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fc3RydG9sX2woUywgRSwgQiwgTCkgICAgICBzdHJ0b2woKFMpLCAoRSksIChCKSkKLSsjZGVmaW5lIF9fc3RydG91bF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b3VsKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvbGxfbChTLCBFLCBCLCBMKSAgICAgc3RydG9sbCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b3VsbF9sKFMsIEUsIEIsIEwpICAgIHN0cnRvdWxsKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQotKyNkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKLSsjZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQotKyN3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0rI2RlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAotKyNkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBmbG9hdCYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0rCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLSsJewotKwkgIGNoYXIqIF9fc2FuaXR5OwotKwkgIGVycm5vID0gMDsKLSsJICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJICAgIF9fdiA9IF9fZjsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBkb3VibGUmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotKwkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0rCXsKLSsJICBjaGFyKiBfX3Nhbml0eTsKLSsJICBlcnJubyA9IDA7Ci0rCSAgZG91YmxlIF9fZCA9IF9fc3RydG9kX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgX192ID0gX19kOwotKwkgIGVsc2UKLSsJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGxvbmcgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSsJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSsgICAgewotKyAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotKwl7Ci0rCSAgY2hhciogX19zYW5pdHk7Ci0rCSAgZXJybm8gPSAwOwotKwkgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCSAgICBfX3YgPSBfX2xkOwotKwkgIGVsc2UKLSsJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotKwl9Ci0rICAgIH0KLSsKLSsgIHZvaWQKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2NyZWF0ZV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJICAgIF9fY19sb2NhbGUgX19vbGQpCi0rICB7Ci0rICAgIF9fY2xvYyA9IF9fbmV3bG9jYWxlKDEgPDwgTENfQUxMLCBfX3MsIF9fb2xkKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBpZiAoIV9fY2xvYykKLSsgICAgICB7Ci0rCS8vIFRoaXMgbmFtZWQgbG9jYWxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgT1MuCi0rCV9fdGhyb3dfcnVudGltZV9lcnJvcihfX04oImxvY2FsZTo6ZmFjZXQ6Ol9TX2NyZWF0ZV9jX2xvY2FsZSAiCi0rCQkJICAgICAgIm5hbWUgbm90IHZhbGlkIikpOwotKyAgICAgIH0KLSsjZW5kaWYKLSsgIH0KLSsKLSsgIHZvaWQKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Rlc3Ryb3lfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotKyAgewotKyAgICBpZiAoX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotKyAgICAgIF9fZnJlZWxvY2FsZShfX2Nsb2MpOwotKyAgfQotKwotKyAgX19jX2xvY2FsZQotKyAgbG9jYWxlOjpmYWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotKyAgeyByZXR1cm4gX19kdXBsb2NhbGUoX19jbG9jKTsgfQotK30gLy8gbmFtZXNwYWNlIHN0ZAotKwotK25hbWVzcGFjZSBfX2dudV9jeHgKLSt7Ci0rICBjb25zdCBjaGFyKiBjb25zdCBjYXRlZ29yeV9uYW1lc1s2ICsgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVNdID0KLSsgICAgewotKyAgICAgICJMQ19DVFlQRSIsCi0rICAgICAgIkxDX05VTUVSSUMiLAotKyAgICAgICJMQ19USU1FIiwKLSsgICAgICAiTENfQ09MTEFURSIsCi0rICAgICAgIkxDX01PTkVUQVJZIiwKLSsgICAgICAiTENfTUVTU0FHRVMiLAotKyNpZiBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyAhPSAwCi0rICAgICAgIkxDX1BBUEVSIiwKLSsgICAgICAiTENfTkFNRSIsCi0rICAgICAgIkxDX0FERFJFU1MiLAotKyAgICAgICJMQ19URUxFUEhPTkUiLAotKyAgICAgICJMQ19NRUFTVVJFTUVOVCIsCi0rICAgICAgIkxDX0lERU5USUZJQ0FUSU9OIgotKyNlbmRpZgotKyAgICB9OwotK30KLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IGxvY2FsZTo6X1NfY2F0ZWdvcmllcyA9IF9fZ251X2N4eDo6Y2F0ZWdvcnlfbmFtZXM7Ci0rfSAgLy8gbmFtZXNwYWNlIHN0ZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYTA3YzFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTAsMCArMSwxMTcgQEAKLSsvLyBXcmFwcGVyIGZvciB1bmRlcmx5aW5nIEMtbGFuZ3VhZ2UgbG9jYWxpemF0aW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuOCAgU3RhbmRhcmQgbG9jYWxlIGNhdGVnb3JpZXMuCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpZm5kZWYgX0NfTE9DQUxFX0gKLSsjZGVmaW5lIF9DX0xPQ0FMRV9IIDEKLSsKLSsjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0rCi0rI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzdHJsZW4KLSsjaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnNucHJpbnRmIG9yIHN0ZDo6c3ByaW50ZgotKyNpbmNsdWRlIDxjbG9jYWxlPgotKyNpbmNsdWRlIDxsYW5naW5mby5oPgkJLy8gRm9yIGNvZGVjdnQKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggdGhpcwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsjaW5jbHVkZSA8aWNvbnYuaD4JCS8vIEZvciBjb2RlY3Z0IHVzaW5nIGljb252LCBpY29udl90Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI2luY2x1ZGUgPGxpYmludGwuaD4gCQkvLyBGb3IgbWVzc2FnZXMKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB3aGF0IGlzIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSBmb3IKLSsjZW5kaWYKLSsjZGVmaW5lIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSAxCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IGNhdGVnb3JpZXMKLSsjZW5kaWYKLSsvLyAjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDYKLSsjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDAKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotK25hbWVzcGFjZSBfX2dudV9jeHgKLSt7Ci0rICBleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0rfQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgIHR5cGVkZWYgX19sb2NhbGVfdAkJX19jX2xvY2FsZTsKLSsjZWxzZQotKyAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSsjZW5kaWYKLSsKLSsgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIF9UdiB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLSsgIC8vIHN0cmluZy4gIElmIHNucHJpbnRmIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KLSsgIC8vIHRoZSB1bnNhZmUgc3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0rICAvLyBiZSBhdm9pZGVkLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgotKyAgICBpbnQKLSsgICAgX19jb252ZXJ0X2Zyb21fdihjaGFyKiBfX291dCwKLSsJCSAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAotKwkJICAgICBjb25zdCBjaGFyKiBfX2ZtdCwKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsJCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jLCBpbnQgX19wcmVjKQotKyAgICB7Ci0rICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fZ251X2N4eDo6X191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiwgaW50IF9fcHJlYykKLSsgICAgewotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rICAgICAgY2hhciogX19vbGQgPSBzdGQ6OnNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19vbGQpICsgMV07Ci0rICAgICAgc3RkOjpzdHJjcHkoX19zYXYsIF9fb2xkKTsKLSsgICAgICBzdGQ6OnNldGxvY2FsZShMQ19BTEwsICJDIik7Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotKyAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fcHJlYywgX192KTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsgICAgICBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKyAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSsjZW5kaWYKLSsgICAgICByZXR1cm4gX19yZXQ7Ci0rICAgIH0KLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NGFhOTYyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDMwOCBAQAotKy8vIHN0ZDo6Y29kZWN2dCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMS41IC0gVGVtcGxhdGUgY2xhc3MgY29kZWN2dAotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxjc3RkbGliPiAgLy8gRm9yIE1CX0NVUl9NQVgKLSsjaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIEZvciBNQl9MRU5fTUFYCi0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIFNwZWNpYWxpemF0aW9ucy4KLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIGNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fb3V0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb20sCi0rCSBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwKLSsJIGV4dGVybl90eXBlKiBfX3RvLCBleHRlcm5fdHlwZSogX190b19lbmQsCi0rCSBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QKLSsgIHsKLSsgICAgcmVzdWx0IF9fcmV0ID0gb2s7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyB3Y3NucnRvbWJzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIGZhbGwgYmFjayB0byB3Y3J0b21iIGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCi0rICAgIC8vIE5COiB3Y3NucnRvbWJzIGlzIGEgR05VIGV4dGVuc2lvbgotKyAgICBmb3IgKF9fZnJvbV9uZXh0ID0gX19mcm9tLCBfX3RvX25leHQgPSBfX3RvOwotKwkgX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fdG9fbmV4dCA8IF9fdG9fZW5kCi0rCSAmJiBfX3JldCA9PSBvazspCi0rICAgICAgewotKwljb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2NodW5rX2VuZCA9IHdtZW1jaHIoX19mcm9tX25leHQsIEwnXDAnLAotKwkJCQkJCSAgICAgIF9fZnJvbV9lbmQgLSBfX2Zyb21fbmV4dCk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19mcm9tX2VuZDsKLSsKLSsJX19mcm9tID0gX19mcm9tX25leHQ7Ci0rCWNvbnN0IHNpemVfdCBfX2NvbnYgPSB3Y3NucnRvbWJzKF9fdG9fbmV4dCwgJl9fZnJvbV9uZXh0LAotKwkJCQkJIF9fZnJvbV9jaHVua19lbmQgLSBfX2Zyb21fbmV4dCwKLSsJCQkJCSBfX3RvX2VuZCAtIF9fdG9fbmV4dCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyB3Y3J0b21iLgotKwkgICAgZm9yICg7IF9fZnJvbSA8IF9fZnJvbV9uZXh0OyArK19fZnJvbSkKLSsJICAgICAgX190b19uZXh0ICs9IHdjcnRvbWIoX190b19uZXh0LCAqX19mcm9tLCAmX190bXBfc3RhdGUpOwotKwkgICAgX19zdGF0ZSA9IF9fdG1wX3N0YXRlOwotKwkgICAgX19yZXQgPSBlcnJvcjsKLSsJICB9Ci0rCWVsc2UgaWYgKF9fZnJvbV9uZXh0ICYmIF9fZnJvbV9uZXh0IDwgX19mcm9tX2NodW5rX2VuZCkKLSsJICB7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIF9fZnJvbV9uZXh0ID0gX19mcm9tX2NodW5rX2VuZDsKLSsJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCSAgfQotKwotKwlpZiAoX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fcmV0ID09IG9rKQotKwkgIHsKLSsJICAgIGV4dGVybl90eXBlIF9fYnVmW01CX0xFTl9NQVhdOwotKwkgICAgX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkgICAgY29uc3Qgc2l6ZV90IF9fY29udiA9IHdjcnRvbWIoX19idWYsICpfX2Zyb21fbmV4dCwgJl9fdG1wX3N0YXRlKTsKLSsJICAgIGlmIChfX2NvbnYgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdG9fZW5kIC0gX190b19uZXh0KSkKLSsJICAgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQltZW1jcHkoX190b19uZXh0LCBfX2J1ZiwgX19jb252KTsKLSsJCV9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJCV9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCQkrK19fZnJvbV9uZXh0OwotKwkgICAgICB9Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9faW4oc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGV4dGVybl90eXBlKiYgX19mcm9tX25leHQsCi0rCWludGVybl90eXBlKiBfX3RvLCBpbnRlcm5fdHlwZSogX190b19lbmQsCi0rCWludGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdAotKyAgewotKyAgICByZXN1bHQgX19yZXQgPSBvazsKLSsgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rCi0rICAgIC8vIG1ic25ydG93Y3MgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6Ci0rICAgIC8vIGluIGNhc2Ugd2Ugc3RvcmUgYSBMJ1wwJyBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogbWJzbnJ0b3djcyBpcyBhIEdOVSBleHRlbnNpb24KLSsgICAgZm9yIChfX2Zyb21fbmV4dCA9IF9fZnJvbSwgX190b19uZXh0ID0gX190bzsKLSsJIF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3RvX25leHQgPCBfX3RvX2VuZAotKwkgJiYgX19yZXQgPT0gb2s7KQotKyAgICAgIHsKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQ7Ci0rCV9fZnJvbV9jaHVua19lbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBleHRlcm5fdHlwZSo+KG1lbWNocihfX2Zyb21fbmV4dCwgJ1wwJywKLSsJCQkJCQkJCSAgX19mcm9tX2VuZAotKwkJCQkJCQkJICAtIF9fZnJvbV9uZXh0KSk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19mcm9tX2VuZDsKLSsKLSsJX19mcm9tID0gX19mcm9tX25leHQ7Ci0rCXNpemVfdCBfX2NvbnYgPSBtYnNucnRvd2NzKF9fdG9fbmV4dCwgJl9fZnJvbV9uZXh0LAotKwkJCQkgICBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tX25leHQsCi0rCQkJCSAgIF9fdG9fZW5kIC0gX190b19uZXh0LCAmX19zdGF0ZSk7Ci0rCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpCi0rCSAgewotKwkgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgaW4gb3JkZXIgdG8gc3RvcCBhdCB0aGUgZXhhY3QgcGxhY2Ugd2UKLSsJICAgIC8vIGhhdmUgdG8gc3RhcnQgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nIHdpdGggYSBzZXJpZXMgb2YKLSsJICAgIC8vIG1icnRvd2MuCi0rCSAgICBmb3IgKDs7ICsrX190b19uZXh0LCBfX2Zyb20gKz0gX19jb252KQotKwkgICAgICB7Ci0rCQlfX2NvbnYgPSBtYnJ0b3djKF9fdG9fbmV4dCwgX19mcm9tLCBfX2Zyb21fZW5kIC0gX19mcm9tLAotKwkJCQkgJl9fdG1wX3N0YXRlKTsKLSsJCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkKLSsJCSAgICB8fCBfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMikpCi0rCQkgIGJyZWFrOwotKwkgICAgICB9Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbTsKLSsJICAgIF9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJICAgIF9fcmV0ID0gZXJyb3I7Ci0rCSAgfQotKwllbHNlIGlmIChfX2Zyb21fbmV4dCAmJiBfX2Zyb21fbmV4dCA8IF9fZnJvbV9jaHVua19lbmQpCi0rCSAgewotKwkgICAgLy8gSXQgaXMgdW5jbGVhciB3aGF0IHRvIHJldHVybiBpbiB0aGlzIGNhc2UgKHNlZSBEUiAzODIpLgotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbV9jaHVua19lbmQ7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgIH0KLSsKLSsJaWYgKF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3JldCA9PSBvaykKLSsJICB7Ci0rCSAgICBpZiAoX190b19uZXh0IDwgX190b19lbmQpCi0rCSAgICAgIHsKLSsJCS8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzCi0rCQlfX3RtcF9zdGF0ZSA9IF9fc3RhdGU7Ci0rCQkrK19fZnJvbV9uZXh0OwotKwkJKl9fdG9fbmV4dCsrID0gTCdcMCc7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgIH0KLSsgICAgICB9Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBpbnQKLSsgIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6Ci0rICBkb19lbmNvZGluZygpIGNvbnN0IHRocm93KCkKLSsgIHsKLSsgICAgLy8gWFhYIFRoaXMgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IHRoZSBlbmNvZGluZyBpcwotKyAgICAvLyBzdGF0ZWxlc3MgYW5kIGlzIGVpdGhlciBzaW5nbGUtYnl0ZSBvciB2YXJpYWJsZS13aWR0aC4KLSsgICAgaW50IF9fcmV0ID0gMDsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rICAgIGlmIChNQl9DVVJfTUFYID09IDEpCi0rICAgICAgX19yZXQgPSAxOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkKLSsgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rICAgIC8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzLgotKyAgICBpbnQgX19yZXQgPSBNQl9DVVJfTUFYOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fbGVuZ3RoKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCi0rCSAgICBjb25zdCBleHRlcm5fdHlwZSogX19lbmQsIHNpemVfdCBfX21heCkgY29uc3QKLSsgIHsKLSsgICAgaW50IF9fcmV0ID0gMDsKLSsgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rCi0rICAgIC8vIG1ic25ydG93Y3MgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6Ci0rICAgIC8vIGluIGNhc2Ugd2UgYWR2YW5jZSBwYXN0IGl0IGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCi0rICAgIC8vIE5COiBtYnNucnRvd2NzIGlzIGEgR05VIGV4dGVuc2lvbgotKwotKyAgICAvLyBBIGR1bW15IGludGVybmFsIGJ1ZmZlciBpcyBuZWVkZWQgaW4gb3JkZXIgZm9yIG1ic25ydG9jd3MgdG8gY29uc2lkZXIKLSsgICAgLy8gaXRzIGZvdXJ0aCBwYXJhbWV0ZXIgKGl0IHdvdWxkbid0IHdpdGggTlVMTCBhcyBmaXJzdCBwYXJhbWV0ZXIpLgotKyAgICB3Y2hhcl90KiBfX3RvID0gc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKHdjaGFyX3QpCi0rCQkJCQkJCSAgICogX19tYXgpKTsKLSsgICAgd2hpbGUgKF9fZnJvbSA8IF9fZW5kICYmIF9fbWF4KQotKyAgICAgIHsKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQ7Ci0rCV9fZnJvbV9jaHVua19lbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBleHRlcm5fdHlwZSo+KG1lbWNocihfX2Zyb20sICdcMCcsCi0rCQkJCQkJCQkgIF9fZW5kCi0rCQkJCQkJCQkgIC0gX19mcm9tKSk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19lbmQ7Ci0rCi0rCWNvbnN0IGV4dGVybl90eXBlKiBfX3RtcF9mcm9tID0gX19mcm9tOwotKwlzaXplX3QgX19jb252ID0gbWJzbnJ0b3djcyhfX3RvLCAmX19mcm9tLAotKwkJCQkgICBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tLAotKwkJCQkgICBfX21heCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyBtYnJ0b3djLgotKwkgICAgZm9yIChfX2Zyb20gPSBfX3RtcF9mcm9tOzsgX19mcm9tICs9IF9fY29udikKLSsJICAgICAgewotKwkJX19jb252ID0gbWJydG93YyhOVUxMLCBfX2Zyb20sIF9fZW5kIC0gX19mcm9tLAotKwkJCQkgJl9fdG1wX3N0YXRlKTsKLSsJCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkKLSsJCSAgICB8fCBfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMikpCi0rCQkgIGJyZWFrOwotKwkgICAgICB9Ci0rCSAgICBfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCSAgICBfX3JldCArPSBfX2Zyb20gLSBfX3RtcF9mcm9tOwotKwkgICAgYnJlYWs7Ci0rCSAgfQotKwlpZiAoIV9fZnJvbSkKLSsJICBfX2Zyb20gPSBfX2Zyb21fY2h1bmtfZW5kOwotKwotKwlfX3JldCArPSBfX2Zyb20gLSBfX3RtcF9mcm9tOwotKwlfX21heCAtPSBfX2NvbnY7Ci0rCi0rCWlmIChfX2Zyb20gPCBfX2VuZCAmJiBfX21heCkKLSsJICB7Ci0rCSAgICAvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncwotKwkgICAgX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkgICAgKytfX2Zyb207Ci0rCSAgICArK19fcmV0OwotKwkgICAgLS1fX21heDsKLSsJICB9Ci0rICAgICAgfQotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmMyNjY0YTcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsODAgQEAKLSsvLyBzdGQ6OmNvbGxhdGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjQuMS4yICBjb2xsYXRlIHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotKyNkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotKyNkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLSsjZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gVGhlc2UgYXJlIGJhc2ljYWxseSBleHRlbnNpb25zIHRvIGNoYXJfdHJhaXRzLCBhbmQgcGVyaGFwcyBzaG91bGQKLSsgIC8vIGJlIHB1dCB0aGVyZSBpbnN0ZWFkIG9mIGhlcmUuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGludAotKyAgICBjb2xsYXRlPGNoYXI+OjpfTV9jb21wYXJlKGNvbnN0IGNoYXIqIF9fb25lLCBjb25zdCBjaGFyKiBfX3R3bykgY29uc3QKLSsgICAgewotKyAgICAgIGludCBfX2NtcCA9IF9fc3RyY29sbF9sKF9fb25lLCBfX3R3bywgX01fY19sb2NhbGVfY29sbGF0ZSk7Ci0rICAgICAgcmV0dXJuIChfX2NtcCA+PiAoOCAqIHNpemVvZiAoaW50KSAtIDIpKSB8IChfX2NtcCAhPSAwKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBzaXplX3QKLSsgICAgY29sbGF0ZTxjaGFyPjo6X01fdHJhbnNmb3JtKGNoYXIqIF9fdG8sIGNvbnN0IGNoYXIqIF9fZnJvbSwKLSsJCQkJc2l6ZV90IF9fbikgY29uc3QKLSsgICAgeyByZXR1cm4gX19zdHJ4ZnJtX2woX190bywgX19mcm9tLCBfX24sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGludAotKyAgICBjb2xsYXRlPHdjaGFyX3Q+OjpfTV9jb21wYXJlKGNvbnN0IHdjaGFyX3QqIF9fb25lLAotKwkJCQkgY29uc3Qgd2NoYXJfdCogX190d28pIGNvbnN0Ci0rICAgIHsKLSsgICAgICBpbnQgX19jbXAgPSBfX3djc2NvbGxfbChfX29uZSwgX190d28sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOwotKyAgICAgIHJldHVybiAoX19jbXAgPj4gKDggKiBzaXplb2YgKGludCkgLSAyKSkgfCAoX19jbXAgIT0gMCk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgc2l6ZV90Ci0rICAgIGNvbGxhdGU8d2NoYXJfdD46Ol9NX3RyYW5zZm9ybSh3Y2hhcl90KiBfX3RvLCBjb25zdCB3Y2hhcl90KiBfX2Zyb20sCi0rCQkJCSAgIHNpemVfdCBfX24pIGNvbnN0Ci0rICAgIHsgcmV0dXJuIF9fd2NzeGZybV9sKF9fdG8sIF9fZnJvbSwgX19uLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzI5NGUzYQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMzAwIEBACi0rLy8gc3RkOjpjdHlwZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMS4xLjIgIGN0eXBlIHZpcnR1YWwgZnVuY3Rpb25zLgotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgIHdjdHlwZSgoUykpCi0rI2RlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICB0b3d1cHBlcigoQykpCi0rI2RlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICB0b3dsb3dlcigoQykpCi0rI2RlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICBpc3djdHlwZSgoQyksIChNKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gTkI6IFRoZSBvdGhlciBjdHlwZTxjaGFyPiBzcGVjaWFsaXphdGlvbnMgYXJlIGluIHNyYy9sb2NhbGUuY2MgYW5kCi0rICAvLyB2YXJpb3VzIC9jb25maWcvb3MvKiBmaWxlcy4KLSsgIHRlbXBsYXRlPD4KLSsgICAgY3R5cGVfYnluYW1lPGNoYXI+OjpjdHlwZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotKyAgICA6IGN0eXBlPGNoYXI+KDAsIGZhbHNlLCBfX3JlZnMpCi0rICAgIHsKLSsgICAgICBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQotKwl7Ci0rCSAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCSAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLCBfX3MpOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgdGhpcy0+X01fdG91cHBlciA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX3RvdXBwZXI7Ci0rCSAgdGhpcy0+X01fdG9sb3dlciA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX3RvbG93ZXI7Ci0rCSAgdGhpcy0+X01fdGFibGUgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV9iOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNrX3R5cGUKLSsgIGN0eXBlPHdjaGFyX3Q+OjpfTV9jb252ZXJ0X3RvX3dtYXNrKGNvbnN0IG1hc2sgX19tKSBjb25zdAotKyAgewotKyAgICBfX3dtYXNrX3R5cGUgX19yZXQ7Ci0rICAgIHN3aXRjaCAoX19tKQotKyAgICAgIHsKLSsgICAgICBjYXNlIHNwYWNlOgotKwlfX3JldCA9IF9fd2N0eXBlX2woInNwYWNlIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHByaW50OgotKwlfX3JldCA9IF9fd2N0eXBlX2woInByaW50IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGNudHJsOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImNudHJsIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHVwcGVyOgotKwlfX3JldCA9IF9fd2N0eXBlX2woInVwcGVyIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGxvd2VyOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImxvd2VyIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGFscGhhOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImFscGhhIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGRpZ2l0OgotKwlfX3JldCA9IF9fd2N0eXBlX2woImRpZ2l0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHB1bmN0OgotKwlfX3JldCA9IF9fd2N0eXBlX2woInB1bmN0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHhkaWdpdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJ4ZGlnaXQiLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgYWxudW06Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgiYWxudW0iLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgZ3JhcGg6Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgiZ3JhcGgiLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGRlZmF1bHQ6Ci0rCV9fcmV0ID0gX193bWFza190eXBlKCk7Ci0rICAgICAgfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG91cHBlcih3Y2hhcl90IF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9fdG93dXBwZXJfbChfX2MsIF9NX2NfbG9jYWxlX2N0eXBlKTsgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b3VwcGVyKHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rICAgICAgICAqX19sbyA9IF9fdG93dXBwZXJfbCgqX19sbywgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICAgICAgKytfX2xvOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG9sb3dlcih3Y2hhcl90IF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9fdG93bG93ZXJfbChfX2MsIF9NX2NfbG9jYWxlX2N0eXBlKTsgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b2xvd2VyKHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rICAgICAgICAqX19sbyA9IF9fdG93bG93ZXJfbCgqX19sbywgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICAgICAgKytfX2xvOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBib29sCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19pcyhtYXNrIF9fbSwgd2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7Ci0rICAgIC8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0rICAgIC8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKyAgICBib29sIF9fcmV0ID0gZmFsc2U7Ci0rICAgIGNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rICAgIGZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLSsgICAgICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXQotKwkgICYmIF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwl7Ci0rCSAgX19yZXQgPSB0cnVlOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19pcyhjb25zdCB3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpLCBtYXNrKiBfX3ZlYykgY29uc3QKLSsgIHsKLSsgICAgZm9yICg7IF9fbG8gPCBfX2hpOyArK19fdmVjLCArK19fbG8pCi0rICAgICAgewotKwkvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotKwkvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsJY29uc3Qgc2l6ZV90IF9fYml0bWFza3NpemUgPSAxMTsKLSsJbWFzayBfX20gPSAwOwotKwlmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rCSAgaWYgKF9faXN3Y3R5cGVfbCgqX19sbywgX01fd21hc2tbX19iaXRjdXJdLCBfTV9jX2xvY2FsZV9jdHlwZSkpCi0rCSAgICBfX20gfD0gX01fYml0W19fYml0Y3VyXTsKLSsJKl9fdmVjID0gX19tOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fc2Nhbl9pcyhtYXNrIF9fbSwgY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSkgY29uc3QKLSsgIHsKLSsgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmICF0aGlzLT5kb19pcyhfX20sICpfX2xvKSkKLSsgICAgICArK19fbG87Ci0rICAgIHJldHVybiBfX2xvOwotKyAgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3NjYW5fbm90KG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QKLSsgIHsKLSsgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmIHRoaXMtPmRvX2lzKF9fbSwgKl9fbG8pICE9IDApCi0rICAgICAgKytfX2xvOwotKyAgICByZXR1cm4gX19sbzsKLSsgIH0KLSsKLSsgIHdjaGFyX3QKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3dpZGVuKGNoYXIgX19jKSBjb25zdAotKyAgeyByZXR1cm4gX01fd2lkZW5bc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKV07IH0KLSsKLSsgIGNvbnN0IGNoYXIqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb193aWRlbihjb25zdCBjaGFyKiBfX2xvLCBjb25zdCBjaGFyKiBfX2hpLCB3Y2hhcl90KiBfX2Rlc3QpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rCSpfX2Rlc3QgPSBfTV93aWRlbltzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqX19sbyldOwotKwkrK19fbG87Ci0rCSsrX19kZXN0OwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBjaGFyCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19uYXJyb3cod2NoYXJfdCBfX3djLCBjaGFyIF9fZGZhdWx0KSBjb25zdAotKyAgewotKyAgICBpZiAoX193YyA+PSAwICYmIF9fd2MgPCAxMjggJiYgX01fbmFycm93X29rKQotKyAgICAgIHJldHVybiBfTV9uYXJyb3dbX193Y107Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgY29uc3QgaW50IF9fYyA9IHdjdG9iKF9fd2MpOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19uYXJyb3coY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSwgY2hhciBfX2RmYXVsdCwKLSsJICAgIGNoYXIqIF9fZGVzdCkgY29uc3QKLSsgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY3R5cGUpOwotKyNlbmRpZgotKyAgICBpZiAoX01fbmFycm93X29rKQotKyAgICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsJewotKwkgIGlmICgqX19sbyA+PSAwICYmICpfX2xvIDwgMTI4KQotKwkgICAgKl9fZGVzdCA9IF9NX25hcnJvd1sqX19sb107Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBjb25zdCBpbnQgX19jID0gd2N0b2IoKl9fbG8pOwotKwkgICAgICAqX19kZXN0ID0gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOwotKwkgICAgfQotKwkgICsrX19sbzsKLSsJICArK19fZGVzdDsKLSsJfQotKyAgICBlbHNlCi0rICAgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQotKwl7Ci0rCSAgY29uc3QgaW50IF9fYyA9IHdjdG9iKCpfX2xvKTsKLSsJICAqX19kZXN0ID0gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOwotKwkgICsrX19sbzsKLSsJICArK19fZGVzdDsKLSsJfQotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICB2b2lkCi0rICBjdHlwZTx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV9jdHlwZSgpCi0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgd2ludF90IF9faTsKLSsgICAgZm9yIChfX2kgPSAwOyBfX2kgPCAxMjg7ICsrX19pKQotKyAgICAgIHsKLSsJY29uc3QgaW50IF9fYyA9IHdjdG9iKF9faSk7Ci0rCWlmIChfX2MgPT0gRU9GKQotKwkgIGJyZWFrOwotKwllbHNlCi0rCSAgX01fbmFycm93W19faV0gPSBzdGF0aWNfY2FzdDxjaGFyPihfX2MpOwotKyAgICAgIH0KLSsgICAgaWYgKF9faSA9PSAxMjgpCi0rICAgICAgX01fbmFycm93X29rID0gdHJ1ZTsKLSsgICAgZWxzZQotKyAgICAgIF9NX25hcnJvd19vayA9IGZhbHNlOwotKyAgICBmb3IgKHNpemVfdCBfX2ogPSAwOwotKwkgX19qIDwgc2l6ZW9mKF9NX3dpZGVuKSAvIHNpemVvZih3aW50X3QpOyArK19faikKLSsgICAgICBfTV93aWRlbltfX2pdID0gYnRvd2MoX19qKTsKLSsKLSsgICAgZm9yIChzaXplX3QgX19rID0gMDsgX19rIDw9IDExOyArK19faykKLSsgICAgICB7Ci0rCV9NX2JpdFtfX2tdID0gc3RhdGljX2Nhc3Q8bWFzaz4oX0lTYml0KF9faykpOwotKwlfTV93bWFza1tfX2tdID0gX01fY29udmVydF90b193bWFzayhfTV9iaXRbX19rXSk7Ci0rICAgICAgfQotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgIH0KLSsjZW5kaWYgLy8gIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMzU5NGQ5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotQEAgLTAsMCArMSwxMDAgQEAKLSsvLyBzdGQ6Om1lc3NhZ2VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi43LjEuMiAgbWVzc2FnZXMgdmlydHVhbCBmdW5jdGlvbnMKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggZ2V0dGV4dCBzdHVmZgotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotK2V4dGVybiAiQyIgY2hhciAqX19kY2dldHRleHQoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpOwotKyN1bmRlZiBnZXR0ZXh0Ci0rI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBfX2RjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0rI2Vsc2UKLSsjdW5kZWYgZ2V0dGV4dAotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgKG1zZ2lkKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBTcGVjaWFsaXphdGlvbnMuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHN0cmluZwotKyAgICBtZXNzYWdlczxjaGFyPjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCBzdHJpbmcmIF9fZGZhdWx0KSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfbWVzc2FnZXMpOwotKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKSk7Ci0rICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfbWVzc2FnZXMpOwotKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7Ci0rI2Vsc2UKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGdldHRleHQoX19kZmF1bHQuY19zdHIoKSk7Ci0rICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIHRlbXBsYXRlPD4KLSsgICAgd3N0cmluZwotKyAgICBtZXNzYWdlczx3Y2hhcl90Pjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCB3c3RyaW5nJiBfX2RmYXVsdCkgY29uc3QKLSsgICAgewotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX21lc3NhZ2VzKTsKLSsgICAgICBjaGFyKiBfX21zZyA9IGdldHRleHQoX01fY29udmVydF90b19jaGFyKF9fZGZhdWx0KSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7Ci0rIyBlbHNlCi0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7Ci0rIyBlbmRpZgotKyAgICB9Ci0rI2VuZGlmCi0rfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTQyNDA3OAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTAsMCArMSwxMTggQEAKLSsvLyBzdGQ6Om1lc3NhZ2VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi43LjEuMiAgbWVzc2FnZXMgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCBwcm90b3R5cGVzIGZvciAqdGV4dGRvbWFpbiBmdW5jcwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotK2V4dGVybiAiQyIgY2hhciAqX190ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpOwotK2V4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkJCQkgIGNvbnN0IGNoYXIgKmRpcm5hbWUpOwotKyNlbHNlCi0rI3VuZGVmIF9fdGV4dGRvbWFpbgotKyN1bmRlZiBfX2JpbmR0ZXh0ZG9tYWluCi0rI2RlZmluZSBfX3RleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgX19iaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSsjZW5kaWYKLSsKLSsgIC8vIE5vbi12aXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMuCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhzaXplX3QgX19yZWZzKQotKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19nZXRfY19sb2NhbGUoKSksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKF9TX2dldF9jX25hbWUoKSkKLSsgICAgIHsgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJc2l6ZV90IF9fcmVmcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKSksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKF9fcykKLSsgICAgIHsKLSsgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0rICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgICBfTV9uYW1lX21lc3NhZ2VzID0gX190bXA7Ci0rICAgICB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIHR5cGVuYW1lIG1lc3NhZ2VzPF9DaGFyVD46OmNhdGFsb2cKLSsgICAgbWVzc2FnZXM8X0NoYXJUPjo6b3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mIF9fcywgY29uc3QgbG9jYWxlJiBfX2xvYywKLSsJCQkgICBjb25zdCBjaGFyKiBfX2RpcikgY29uc3QKLSsgICAgewotKyAgICAgIF9fYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSsgICAgICByZXR1cm4gdGhpcy0+ZG9fb3BlbihfX3MsIF9fbG9jKTsKLSsgICAgfQotKwotKyAgLy8gVmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojp+bWVzc2FnZXMoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX25hbWVfbWVzc2FnZXMgIT0gX1NfZ2V0X2NfbmFtZSgpKQotKwlkZWxldGUgW10gX01fbmFtZV9tZXNzYWdlczsKLSsgICAgICBfU19kZXN0cm95X2NfbG9jYWxlKF9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB0eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX29wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsCi0rCQkJICAgICAgY29uc3QgbG9jYWxlJikgY29uc3QKLSsgICAgewotKyAgICAgIC8vIE5vIGVycm9yIGNoZWNraW5nIGlzIGRvbmUsIGFzc3VtZSB0aGUgY2F0YWxvZyBleGlzdHMgYW5kIGNhbgotKyAgICAgIC8vIGJlIHVzZWQuCi0rICAgICAgX190ZXh0ZG9tYWluKF9fcy5jX3N0cigpKTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB2b2lkCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX2Nsb3NlKGNhdGFsb2cpIGNvbnN0Ci0rICAgIHsgfQotKwotKyAgIC8vIG1lc3NhZ2VzX2J5bmFtZQotKyAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgIG1lc3NhZ2VzX2J5bmFtZTxfQ2hhclQ+OjptZXNzYWdlc19ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotKyAgICAgOiBtZXNzYWdlczxfQ2hhclQ+KF9fcmVmcykKLSsgICAgIHsKLSsgICAgICAgaWYgKHRoaXMtPl9NX25hbWVfbWVzc2FnZXMgIT0gbG9jYWxlOjpmYWNldDo6X1NfZ2V0X2NfbmFtZSgpKQotKwkgZGVsZXRlIFtdIHRoaXMtPl9NX25hbWVfbWVzc2FnZXM7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgdGhpcy0+X01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKwotKyAgICAgICBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQotKwkgewotKwkgICB0aGlzLT5fU19kZXN0cm95X2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsJICAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX21lc3NhZ2VzLCBfX3MpOwotKwkgfQotKyAgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYTUyNzMxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTAsMCArMSw2OTIgQEAKLSsvLyBzdGQ6Om1vbmV5cHVuY3QgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjYuMy4yICBtb25leXB1bmN0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNkZWZpbmUgX0xJQkMKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyN1bmRlZiBfTElCQwotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIG9wdGltaXplIHRoaXMgZm9yIHVjbGliYwotKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotKyNlbmRpZgotKwotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBDb25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKLSsgIC8vIHNwYWNlIG5vbmUgc3ltYm9sIHNpZ24gdmFsdWUKLSsgIG1vbmV5X2Jhc2U6OnBhdHRlcm4KLSsgIG1vbmV5X2Jhc2U6Ol9TX2NvbnN0cnVjdF9wYXR0ZXJuKGNoYXIgX19wcmVjZWRlcywgY2hhciBfX3NwYWNlLCBjaGFyIF9fcG9zbikKLSsgIHsKLSsgICAgcGF0dGVybiBfX3JldDsKLSsKLSsgICAgLy8gVGhpcyBpbnNhbmVseSBjb21wbGljYXRlZCByb3V0aW5lIGF0dGVtcHRzIHRvIGNvbnN0cnVjdCBhIHZhbGlkCi0rICAgIC8vIHBhdHRlcm4gZm9yIHVzZSB3aXRoIG1vbnllcHVuY3QuIEEgY291cGxlIG9mIGludmFyaWFudHM6Ci0rCi0rICAgIC8vIGlmIChfX3ByZWNlZGVzKSBzeW1ib2wgLT4gdmFsdWUKLSsgICAgLy8gZWxzZSB2YWx1ZSAtPiBzeW1ib2wKLSsKLSsgICAgLy8gaWYgKF9fc3BhY2UpIHNwYWNlCi0rICAgIC8vIGVsc2Ugbm9uZQotKwotKyAgICAvLyBub25lID09IG5ldmVyIGZpcnN0Ci0rICAgIC8vIHNwYWNlIG5ldmVyIGZpcnN0IG9yIGxhc3QKLSsKLSsgICAgLy8gQW55IGVsZWdhbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgYXJlIHdlbGNvbWUuCi0rICAgIHN3aXRjaCAoX19wb3NuKQotKyAgICAgIHsKLSsgICAgICBjYXNlIDA6Ci0rICAgICAgY2FzZSAxOgotKwkvLyAxIFRoZSBzaWduIHByZWNlZGVzIHRoZSB2YWx1ZSBhbmQgc3ltYm9sLgotKwlfX3JldC5maWVsZFswXSA9IHNpZ247Ci0rCWlmIChfX3NwYWNlKQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gc3RhcnRzIHdpdGggc2lnbi4KLSsJICAgIGlmIChfX3ByZWNlZGVzKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gc3ltYm9sOwotKwkgICAgICB9Ci0rCSAgICBfX3JldC5maWVsZFsyXSA9IHNwYWNlOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gc3RhcnRzIHdpdGggc2lnbiBhbmQgZW5kcyB3aXRoIG5vbmUuCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAyOgotKwkvLyAyIFRoZSBzaWduIGZvbGxvd3MgdGhlIHZhbHVlIGFuZCBzeW1ib2wuCi0rCWlmIChfX3NwYWNlKQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gZWl0aGVyIGVuZHMgd2l0aCBzaWduLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCSAgICBfX3JldC5maWVsZFszXSA9IHNpZ247Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgLy8gUGF0dGVybiBlbmRzIHdpdGggc2lnbiB0aGVuIG5vbmUuCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkgICAgX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAzOgotKwkvLyAzIFRoZSBzaWduIGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBzeW1ib2wuCi0rCWlmIChfX3ByZWNlZGVzKQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gc2lnbjsKLSsJICAgIF9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHNpZ247Ci0rCQlfX3JldC5maWVsZFszXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHNpZ247Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSA0OgotKwkvLyA0IFRoZSBzaWduIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIHN5bWJvbC4KLSsJaWYgKF9fcHJlY2VkZXMpCi0rCSAgewotKwkgICAgX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHNpZ247Ci0rCSAgICBpZiAoX19zcGFjZSkKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMl0gPSBzcGFjZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gdmFsdWU7Ci0rCSAgICBpZiAoX19zcGFjZSkKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzcGFjZTsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbM10gPSBzaWduOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgICAgICB9Ci0rCSAgfQotKwlicmVhazsKLSsgICAgICBkZWZhdWx0OgotKwk7Ci0rICAgICAgfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbW9uZXlwdW5jdDxjaGFyLCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKwkJCQkJCSAgICAgY29uc3QgY2hhciopCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPGNoYXIsIHRydWU+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsKLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBtb25leV9iYXNlOjpfU19lbmQ7ICsrX19pKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNbX19pXSA9IG1vbmV5X2Jhc2U6Ol9TX2F0b21zW19faV07Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX0RFQ0lNQUxfUE9JTlQsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9USE9VU0FORFNfU0VQLAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIGlmICghX19ucG9zbikKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiKCkiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLAotKwkJCQkJCQlfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAvLyBfSW50bCA9PSB0cnVlCi0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX25sX2xhbmdpbmZvX2woX19JTlRfQ1VSUl9TWU1CT0wsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCk7Ci0rCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9GUkFDX0RJR0lUUywKLSsJCQkJCQkgICAgICBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NJR05fUE9TTiwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fcHByZWNlZGVzLCBfX3BzcGFjZSwKLSsJCQkJCQkJX19wcG9zbik7Ci0rCSAgY2hhciBfX25wcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJCQkJCQkJX19ucG9zbik7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCi0rCQkJCQkJICAgICAgY29uc3QgY2hhciopCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPGNoYXIsIGZhbHNlPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPSBtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9ERUNJTUFMX1BPSU5ULAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fVEhPVVNBTkRTX1NFUCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgIGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIGlmICghX19ucG9zbikKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiKCkiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLAotKwkJCQkJCQlfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAvLyBfSW50bCA9PSBmYWxzZQotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX19ubF9sYW5naW5mb19sKF9fQ1VSUkVOQ1lfU1lNQk9MLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19GUkFDX0RJR0lUUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkJCQkJCQlfX25wb3NuKTsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgdHJ1ZT46On5tb25leXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbW9uZXlwdW5jdDx3Y2hhcl90LCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCQkJCQkJCWNvbnN0IGNoYXIqKQotKyNlbHNlCi0rCQkJCQkJCWNvbnN0IGNoYXIqIF9fbmFtZSkKLSsjZW5kaWYKLSsgICAgewotKyAgICAgIGlmICghX01fZGF0YSkKLSsJX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8d2NoYXJfdCwgdHJ1ZT47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IEwnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IEwnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90Pihtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotKyNlbHNlCi0rCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0rCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG1vbmV0YXJ5Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbHNlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfREVDSU1BTF9QT0lOVF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX191Ll9fdzsKLSsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKyNlbmRpZgotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwotKwkgIGNvbnN0IGNoYXIqIF9fY3Bvc3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY25lZ3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY2N1cnIgPSBfX25sX2xhbmdpbmZvX2woX19JTlRfQ1VSUl9TWU1CT0wsIF9fY2xvYyk7Ci0rCi0rCSAgd2NoYXJfdCogX193Y3NfcHMgPSAwOwotKwkgIHdjaGFyX3QqIF9fd2NzX25zID0gMDsKLSsJICBjb25zdCBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NJR05fUE9TTiwgX19jbG9jKSk7Ci0rCSAgdHJ5Ci0rCSAgICB7Ci0rCSAgICAgIG1ic3RhdGVfdCBfX3N0YXRlOwotKwkgICAgICBzaXplX3QgX19sZW4gPSBzdHJsZW4oX19jcG9zc2lnbik7Ci0rCSAgICAgIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX3BzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfcHMsICZfX2Nwb3NzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX193Y3NfcHM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgICAgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKLSsKLSsJICAgICAgX19sZW4gPSBzdHJsZW4oX19jbmVnc2lnbik7Ci0rCSAgICAgIGlmICghX19ucG9zbikKLSsJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIigpIjsKLSsJICAgICAgZWxzZSBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19ucyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX25zLCAmX19jbmVnc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IF9fd2NzX25zOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIC8vIF9JbnRsID09IHRydWUuCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY2N1cnIpOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICB3Y2hhcl90KiBfX3djcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzLCAmX19jY3VyciwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX3djczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgICAgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgICAgfQotKwkgIGNhdGNoICguLi4pCi0rCSAgICB7Ci0rCSAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKwkgICAgICBfTV9kYXRhID0gMDsKLSsJICAgICAgZGVsZXRlIF9fd2NzX3BzOwotKwkgICAgICBkZWxldGUgX193Y3NfbnM7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rCSAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwkgICAgfQotKwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfRlJBQ19ESUdJVFMsCi0rCQkJCQkJICAgICAgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCi0rCQkJCQkJCV9fbnBvc24pOwotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKwkgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgIHZvaWQKLSsgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJCQkJCQkgICAgICAgY29uc3QgY2hhciopCi0rI2Vsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogX19uYW1lKQotKyNlbmRpZgotKyAgewotKyAgICBpZiAoIV9NX2RhdGEpCi0rICAgICAgX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8d2NoYXJfdCwgZmFsc2U+OwotKwotKyAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gTCcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gTCcsJzsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKyAgICAgICAgICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90Pihtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotKyNlbHNlCi0rCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0rCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG1vbmV0YXJ5Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbHNlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotKyAgICAgICAgICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsgICAgICAgICAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCi0rCSAgY29uc3QgY2hhciogX19jcG9zc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgY29uc3QgY2hhciogX19jbmVnc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX05FR0FUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgY29uc3QgY2hhciogX19jY3VyciA9IF9fbmxfbGFuZ2luZm9fbChfX0NVUlJFTkNZX1NZTUJPTCwgX19jbG9jKTsKLSsKLSsJICB3Y2hhcl90KiBfX3djc19wcyA9IDA7Ci0rCSAgd2NoYXJfdCogX193Y3NfbnMgPSAwOwotKwkgIGNvbnN0IGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIHRyeQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG1ic3RhdGVfdCBfX3N0YXRlOwotKyAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuOwotKyAgICAgICAgICAgICAgX19sZW4gPSBzdHJsZW4oX19jcG9zc2lnbik7Ci0rICAgICAgICAgICAgICBpZiAoX19sZW4pCi0rICAgICAgICAgICAgICAgIHsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX3BzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfcHMsICZfX2Nwb3NzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX193Y3NfcHM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY25lZ3NpZ24pOwotKwkgICAgICBpZiAoIV9fbnBvc24pCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIoKSI7Ci0rCSAgICAgIGVsc2UgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgX193Y3NfbnMgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djc19ucywgJl9fY25lZ3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX3djc19uczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAgICAgLy8gX0ludGwgPT0gdHJ1ZS4KLSsJICAgICAgX19sZW4gPSBzdHJsZW4oX19jY3Vycik7Ci0rCSAgICAgIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIHdjaGFyX3QqIF9fd2NzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3MsICZfX2NjdXJyLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fd2NzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgICAgfQotKyAgICAgICAgICBjYXRjaCAoLi4uKQotKwkgICAgewotKwkgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgICAgICAgICAgIF9NX2RhdGEgPSAwOwotKwkgICAgICBkZWxldGUgX193Y3NfcHM7Ci0rCSAgICAgIGRlbGV0ZSBfX3djc19uczsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2Vsc2UKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKwkgICAgICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgICAgICAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwkgICAgfQotKwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19GUkFDX0RJR0lUUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25wb3NuKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT46On5tb25leXB1bmN0KCkKLSsgICAgewotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduOwotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUKLSsgICAgICAgICAgJiYgd2NzY21wKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24sIEwiKCkiKSAhPSAwKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sOwotKyAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplCi0rICAgICAgICAgICYmIHdjc2NtcChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduLCBMIigpIikgIT0gMCkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbDsKLSsgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg4M2VjMWEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMTYwIEBACi0rLy8gc3RkOjpudW1wdW5jdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMy4xLjIgIG51bXB1bmN0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNkZWZpbmUgX0xJQkMKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyN1bmRlZiBfTElCQwotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotKyNlbmRpZgotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbnVtcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19udW1wdW5jdF9jYWNoZTxjaGFyPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3VzZV9ncm91cGluZyA9IGZhbHNlOwotKwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKLSsKLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX251bV9iYXNlOjpfU19vZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zX291dFtfX2ldID0gX19udW1fYmFzZTo6X1NfYXRvbXNfb3V0W19faV07Ci0rCi0rCSAgZm9yIChzaXplX3QgX19qID0gMDsgX19qIDwgX19udW1fYmFzZTo6X1NfaWVuZDsgKytfX2opCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19pbltfX2pdID0gX19udW1fYmFzZTo6X1NfYXRvbXNfaW5bX19qXTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gKihfX25sX2xhbmdpbmZvX2woREVDSU1BTF9QT0lOVCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICooX19ubF9sYW5naW5mb19sKFRIT1VTQU5EU19TRVAsCi0rCQkJCQkJCV9fY2xvYykpOwotKwotKwkgIC8vIENoZWNrIGZvciBOVUxMLCB3aGljaCBpbXBsaWVzIG5vIGdyb3VwaW5nLgotKwkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09ICdcMCcpCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKEdST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwl9Ci0rCi0rICAgICAgLy8gTkI6IFRoZXJlIGlzIG5vIHdheSB0byBleHRhY3QgdGhpcyBpbmZvIGZyb20gcG9zaXggbG9jYWxlcy4KLSsgICAgICAvLyBfTV90cnVlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChZRVNTVFIsIF9fY2xvYyk7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWUgPSAidHJ1ZSI7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWVfc2l6ZSA9IDQ7Ci0rICAgICAgLy8gX01fZmFsc2VuYW1lID0gX19ubF9sYW5naW5mb19sKE5PU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZSA9ICJmYWxzZSI7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lX3NpemUgPSA1OwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG51bXB1bmN0PGNoYXI+Ojp+bnVtcHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbnVtcHVuY3Q8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19udW1wdW5jdF9jYWNoZTx3Y2hhcl90PjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3VzZV9ncm91cGluZyA9IGZhbHNlOwotKwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBMJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBMJywnOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbnVtX2Jhc2U6Ol9TX29lbmQ7ICsrX19pKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfb3V0W19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90PihfX251bV9iYXNlOjpfU19hdG9tc19vdXRbX19pXSk7Ci0rCi0rCSAgZm9yIChzaXplX3QgX19qID0gMDsgX19qIDwgX19udW1fYmFzZTo6X1NfaWVuZDsgKytfX2opCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19pbltfX2pdID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oX19udW1fYmFzZTo6X1NfYXRvbXNfaW5bX19qXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgLy8gTkI6IEluIHRoZSBHTlUgbW9kZWwgd2NoYXJfdCBpcyBhbHdheXMgMzIgYml0IHdpZGUuCi0rCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKwotKwkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09IEwnXDAnKQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChHUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJfQotKwotKyAgICAgIC8vIE5COiBUaGVyZSBpcyBubyB3YXkgdG8gZXh0YWN0IHRoaXMgaW5mbyBmcm9tIHBvc2l4IGxvY2FsZXMuCi0rICAgICAgLy8gX01fdHJ1ZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woWUVTU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lID0gTCJ0cnVlIjsKLSsgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZV9zaXplID0gNDsKLSsgICAgICAvLyBfTV9mYWxzZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woTk9TVFIsIF9fY2xvYyk7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lID0gTCJmYWxzZSI7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lX3NpemUgPSA1OwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG51bXB1bmN0PHdjaGFyX3Q+Ojp+bnVtcHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rICNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmUwNzA3ZDcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsNDA2IEBACi0rLy8gc3RkOjp0aW1lX2dldCwgc3RkOjp0aW1lX3B1dCBpbXBsZW1lbnRhdGlvbiwgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMS4yIC0gdGltZV9nZXQgdmlydHVhbCBmdW5jdGlvbnMKLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMy4yIC0gdGltZV9wdXQgdmlydHVhbCBmdW5jdGlvbnMKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fdGltZXB1bmN0PGNoYXI+OjoKLSsgICAgX01fcHV0KGNoYXIqIF9fcywgc2l6ZV90IF9fbWF4bGVuLCBjb25zdCBjaGFyKiBfX2Zvcm1hdCwKLSsJICAgY29uc3QgdG0qIF9fdG0pIGNvbnN0Ci0rICAgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fc3RyZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSsJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rI2Vsc2UKLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0cmZ0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0rICAgICAgaWYgKF9fbGVuID09IDApCi0rCV9fc1swXSA9ICdcMCc7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDxjaGFyPjo6X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX190aW1lcHVuY3RfY2FjaGU8Y2hhcj47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbG9jYWxlKCk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSAiJW0vJWQvJXkiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9ICIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSAiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9ICIlSDolTTolUyI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSAiQU0iOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gIlBNIjsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSAiIjsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSAiU3VuZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXkyID0gIk1vbmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9ICJUdWVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gIldlZG5lc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9ICJUaHVyc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9ICJGcmlkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSAiU2F0dXJkYXkiOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX01fZGF0YS0+X01fYWRheTEgPSAiU3VuIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9ICJNb24iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gIlR1ZSI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSAiV2VkIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9ICJUaHUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gIkZyaSI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSAiU2F0IjsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSAiSmFudWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9ICJGZWJydWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMyA9ICJNYXJjaCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9ICJBcHJpbCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9ICJNYXkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSAiSnVuZSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9ICJKdWx5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gIkF1Z3VzdCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOSA9ICJTZXB0ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSAiT2N0b2JlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9ICJOb3ZlbWJlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9ICJEZWNlbWJlciI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gIkphbiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSAiRmViIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9ICJNYXIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gIkFwciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSAiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9ICJKdW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gIkp1bCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSAiQXVnIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9ICJTZXAiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gIk9jdCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSAiTm92IjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9ICJEZWMiOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChEX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRVJBX0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKFRfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChFUkFfVF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChEX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKEVSQV9EX1RfRk1ULAotKwkJCQkJCQkgICAgIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSBfX25sX2xhbmdpbmZvX2woQU1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gX19ubF9sYW5naW5mb19sKFBNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woVF9GTVRfQU1QTSwgX19jbG9jKTsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBfX25sX2xhbmdpbmZvX2woREFZXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IF9fbmxfbGFuZ2luZm9fbChEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkzID0gX19ubF9sYW5naW5mb19sKERBWV8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBfX25sX2xhbmdpbmZvX2woREFZXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk2ID0gX19ubF9sYW5naW5mb19sKERBWV82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBfX25sX2xhbmdpbmZvX2woREFZXzcsIF9fY2xvYyk7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KLSsJICBfTV9kYXRhLT5fTV9hZGF5MSA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gX19ubF9sYW5naW5mb19sKEFCREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTMgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NCA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTYgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NyA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV83LCBfX2Nsb2MpOwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IF9fbmxfbGFuZ2luZm9fbChNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAyID0gX19ubF9sYW5naW5mb19sKE1PTl8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBfX25sX2xhbmdpbmZvX2woTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9IF9fbmxfbGFuZ2luZm9fbChNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gX19ubF9sYW5naW5mb19sKE1PTl81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSBfX25sX2xhbmdpbmZvX2woTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9IF9fbmxfbGFuZ2luZm9fbChNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gX19ubF9sYW5naW5mb19sKE1PTl84LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBfX25sX2xhbmdpbmZvX2woTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTIsIF9fY2xvYyk7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBfX25sX2xhbmdpbmZvX2woQUJNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEwLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEyLCBfX2Nsb2MpOwotKwl9Ci0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDx3Y2hhcl90Pjo6Ci0rICAgIF9NX3B1dCh3Y2hhcl90KiBfX3MsIHNpemVfdCBfX21heGxlbiwgY29uc3Qgd2NoYXJfdCogX19mb3JtYXQsCi0rCSAgIGNvbnN0IHRtKiBfX3RtKSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotKwkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSsjZWxzZQotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gd2NzZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsgICAgICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KLSsgICAgICBpZiAoX19sZW4gPT0gMCkKLSsJX19zWzBdID0gTCdcMCc7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX190aW1lcHVuY3RfY2FjaGU8d2NoYXJfdD47Ci0rCi0rI3dhcm5pbmcgd2lkZSB0aW1lIHN0dWZmCi0rLy8gICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbG9jYWxlKCk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSBMIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBMIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IEwiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IEwiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2VyYV9mb3JtYXQgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSBMIkFNIjsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IEwiUE0iOwotKwkgIF9NX2RhdGEtPl9NX2FtX3BtX2Zvcm1hdCA9IEwiIjsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBMIlN1bmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IEwiTW9uZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXkzID0gTCJUdWVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gTCJXZWRuZXNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSBMIlRodXJzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk2ID0gTCJGcmlkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBMIlNhdHVyZGF5IjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gTCJTdW4iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gTCJNb24iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gTCJUdWUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gTCJXZWQiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gTCJUaHUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gTCJGcmkiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gTCJTYXQiOwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IEwiSmFudWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IEwiRmVicnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBMIk1hcmNoIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gTCJBcHJpbCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IEwiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gTCJKdW5lIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gTCJKdWx5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gTCJBdWd1c3QiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBMIlNlcHRlbWJlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IEwiT2N0b2JlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IEwiTm92ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBMIkRlY2VtYmVyIjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBtb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW4uCi0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDEgPSBMIkphbiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBMIkZlYiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBMIk1hciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDQgPSBMIkFwciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBMIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBMIkp1biI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDcgPSBMIkp1bCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBMIkF1ZyI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBMIlNlcCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSBMIk9jdCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSBMIk5vdiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBMIkRlYyI7Ci0rCX0KLSsjaWYgMAotKyAgICAgIGVsc2UKLSsJewotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0rCi0rCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgKl9fdzsgfSBfX3U7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RfVF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9EX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQU1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XUE1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XVF9GTVRfQU1QTSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBfX3UuX193OwotKwotKwkgIC8vIERheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW5kYXkuCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBfX3UuX193OwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSBfX3UuX193OwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEwID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMTIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IF9fdS5fX3c7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMTIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBfX3UuX193OwotKwl9Ci0rI2VuZGlmIC8vIDAKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iYThlODU4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLUBAIC0wLDAgKzEsNjggQEAKLSsvLyBzdGQ6OnRpbWVfZ2V0LCBzdGQ6OnRpbWVfcHV0IGltcGxlbWVudGF0aW9uLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNS4xLjIgLSB0aW1lX2dldCBmdW5jdGlvbnMKLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMy4yIC0gdGltZV9wdXQgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+OjpfX3RpbWVwdW5jdChzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX1NfZ2V0X2NfbmFtZSgpKQotKyAgICB7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KCk7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jYWNoZV90eXBlKiBfX2NhY2hlLCBzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoX19jYWNoZSksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX1NfZ2V0X2NfbmFtZSgpKQotKyAgICB7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KCk7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJICAgICBzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX19zKQotKyAgICB7Ci0rICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0rICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgX01fbmFtZV90aW1lcHVuY3QgPSBfX3RtcDsKLSsgICAgICBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46On5fX3RpbWVwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fbmFtZV90aW1lcHVuY3QgIT0gX1NfZ2V0X2NfbmFtZSgpKQotKwlkZWxldGUgW10gX01fbmFtZV90aW1lcHVuY3Q7Ci0rICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgICAgX1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyAgICB9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDQxNzk3YTkuLjhhNTQ4MWMgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMTU4MzAsNiArMTU4MzAsOSBAQCBmaQotICAgIyBEZWZhdWx0IHRvICJnZW5lcmljIi4KLSAgIGlmIHRlc3QgJGVuYWJsZV9jbG9jYWxlX2ZsYWcgPSBhdXRvOyB0aGVuCi0gICAgIGNhc2UgJHt0YXJnZXRfb3N9IGluCi0rICAgICAgKi11Y2xpYmMqKQotKyAgICAgICAgZW5hYmxlX2Nsb2NhbGVfZmxhZz11Y2xpYmMKLSsgICAgICAgIDs7Ci0gICAgICAgbGludXgqIHwgZ251KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gCWVuYWJsZV9jbG9jYWxlX2ZsYWc9Z251Ci0gCTs7Ci1AQCAtMTYxMDgsNiArMTYxMTEsNzggQEAgJGFzX2VjaG8gIm5ld2xpYiIgPiY2OyB9Ci0gICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS9nZW5lcmljL3RpbWVfbWVtYmVycy5jYwotICAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL2dlbmVyaWMvYysrbG9jYWxlX2ludGVybmFsLmgKLSAgICAgICA7OwotKyAgICB1Y2xpYmMpCi0rICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVjbGliYyIgPiY1Ci0rJGFzX2VjaG8gInVjbGliYyIgPiY2OyB9Ci0rCi0rICAgICAgIyBEZWNsYXJlIGludGVudGlvbiB0byB1c2UgZ2V0dGV4dCwgYW5kIGFkZCBzdXBwb3J0IGZvciBzcGVjaWZpYwotKyAgICAgICMgbGFuZ3VhZ2VzLgotKyAgICAgICMgRm9yIHNvbWUgcmVhc29uLCBBTExfTElOR1VBUyBoYXMgdG8gYmUgYmVmb3JlIEFNLUdOVS1HRVRURVhUCi0rICAgICAgQUxMX0xJTkdVQVM9ImRlIGZyIgotKwotKyAgICAgICMgRG9uJ3QgY2FsbCBBTS1HTlUtR0VUVEVYVCBoZXJlLiBJbnN0ZWFkLCBhc3N1bWUgZ2xpYmMuCi0rICAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtc2dmbXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtc2dmbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2NoZWNrX21zZ2ZtdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRjaGVja19tc2dmbXQiOyB0aGVuCi0rICBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0iJGNoZWNrX21zZ2ZtdCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0ieWVzIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10IiAmJiBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0ibm8iCi0rZmkKLStmaQotK2NoZWNrX21zZ2ZtdD0kYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQKLStpZiB0ZXN0IC1uICIkY2hlY2tfbXNnZm10IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRjaGVja19tc2dmbXQiID4mNQotKyRhc19lY2hvICIkY2hlY2tfbXNnZm10IiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLSsgICAgICBpZiB0ZXN0IHgiJGNoZWNrX21zZ2ZtdCIgPSB4InllcyIgJiYgdGVzdCB4IiRlbmFibGVfbmxzIiA9IHgieWVzIjsgdGhlbgotKyAgICAgICAgVVNFX05MUz15ZXMKLSsgICAgICBmaQotKyAgICAgICMgRXhwb3J0IHRoZSBidWlsZCBvYmplY3RzLgotKyAgICAgIGZvciBsaW5nIGluICRBTExfTElOR1VBUzsgZG8gXAotKyAgICAgICAgZ2xpYmN4eF9NT0ZJTEVTPSIkZ2xpYmN4eF9NT0ZJTEVTICRsaW5nLm1vIjsgXAotKyAgICAgICAgZ2xpYmN4eF9QT0ZJTEVTPSIkZ2xpYmN4eF9QT0ZJTEVTICRsaW5nLnBvIjsgXAotKyAgICAgIGRvbmUKLSsKLSsKLSsKLSsgICAgICBDTE9DQUxFX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKyAgICAgIENMT0NBTEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsgICAgICBDQ09ERUNWVF9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSsgICAgICBDQ09MTEFURV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKyAgICAgIENNRVNTQUdFU19IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKyAgICAgIENNRVNTQUdFU19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rICAgICAgQ01PTkVZX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsgICAgICBDTlVNRVJJQ19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsgICAgICBDVElNRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rICAgICAgOzsKLSAgIGVzYWMKLSAKLSAgICMgVGhpcyBpcyB3aGVyZSB0aGUgdGVzdHN1aXRlIGxvb2tzIGZvciBsb2NhbGUgY2F0YWxvZ3MsIHVzaW5nIHRoZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLWluZGV4IDU1YTBiNTIuLjdkOGJiMTUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaAotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLUBAIC0xMDEsNyArMTAxLDkgQEAgdXNpbmcgc3RkOjp3bWVtY21wOwotIHVzaW5nIHN0ZDo6d21lbWNweTsKLSB1c2luZyBzdGQ6OndtZW1tb3ZlOwotIHVzaW5nIHN0ZDo6d21lbXNldDsKLSsjaWYgX0dMSUJDWFhfSEFWRV9XQ1NGVElNRQotIHVzaW5nIHN0ZDo6d2NzZnRpbWU7Ci0rI2VuZGlmCi0gCi0gI2lmIF9HTElCQ1hYX1VTRV9DOTlfV0NIQVIKLSB1c2luZyBzdGQ6Ondjc3RvbGQ7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi1pbmRleCBkYzRjZWYwMi4uMjU2ZDEyNiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhcgotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi1AQCAtMTc1LDcgKzE3NSw5IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi0gICB1c2luZyA6Ondjc2NvbGw7Ci0gICB1c2luZyA6Ondjc2NweTsKLSAgIHVzaW5nIDo6d2NzY3NwbjsKLSsjaWYgX0dMSUJDWFhfSEFWRV9XQ1NGVElNRQotICAgdXNpbmcgOjp3Y3NmdGltZTsKLSsjZW5kaWYKLSAgIHVzaW5nIDo6d2NzbGVuOwotICAgdXNpbmcgOjp3Y3NuY2F0OwotICAgdXNpbmcgOjp3Y3NuY21wOwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjc1MDE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjU3ICswLDAgQEAKLUZyb20gYzAxYzE0ZThlOWJlMzgyZWNkNDEyMWVlNzBmNTAwM2I0Y2IwZjkwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQyOjM2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvNDZdIHVjbGliYy1sb2NhbGUtbm9fX3gKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgICAgICB8IDE0IC0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8ICAxICsKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjICAgICAgICB8ICA3IC0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyB8ICA3IC0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyAgICAgICB8ICA3ICstLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oICAgICAgICB8IDE4ICsrKystLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjICAgICAgIHwgIDQgLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8ICAzIC0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCAgMyAtLQotIDEwIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1pbmRleCAyYWUzZTRhLi5lNzRmZGRmIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC02MCw0ICs2MCw0OSBAQCBleHRlcm4gIkMiIF9fdHlwZW9mKHdjc3hmcm1fbCkgX193Y3N4ZnJtX2w7Ci0gZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3R5cGVfbCkgX193Y3R5cGVfbDsKLSAjZW5kaWYKLSAKLSsjIGRlZmluZSBfX25sX2xhbmdpbmZvX2wgbmxfbGFuZ2luZm9fbAotKyMgZGVmaW5lIF9fc3RyY29sbF9sIHN0cmNvbGxfbAotKyMgZGVmaW5lIF9fc3RyZnRpbWVfbCBzdHJmdGltZV9sCi0rIyBkZWZpbmUgX19zdHJ0b2RfbCBzdHJ0b2RfbAotKyMgZGVmaW5lIF9fc3RydG9mX2wgc3RydG9mX2wKLSsjIGRlZmluZSBfX3N0cnRvbGRfbCBzdHJ0b2xkX2wKLSsjIGRlZmluZSBfX3N0cnhmcm1fbCBzdHJ4ZnJtX2wKLSsjIGRlZmluZSBfX25ld2xvY2FsZSBuZXdsb2NhbGUKLSsjIGRlZmluZSBfX2ZyZWVsb2NhbGUgZnJlZWxvY2FsZQotKyMgZGVmaW5lIF9fZHVwbG9jYWxlIGR1cGxvY2FsZQotKyMgZGVmaW5lIF9fdXNlbG9jYWxlIHVzZWxvY2FsZQotKwotKyMgaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsjICBkZWZpbmUgX19pc3djdHlwZV9sIGlzd2N0eXBlX2wKLSsjICBkZWZpbmUgX190b3dsb3dlcl9sIHRvd2xvd2VyX2wKLSsjICBkZWZpbmUgX190b3d1cHBlcl9sIHRvd3VwcGVyX2wKLSsjICBkZWZpbmUgX193Y3Njb2xsX2wgd2NzY29sbF9sCi0rIyAgZGVmaW5lIF9fd2NzZnRpbWVfbCB3Y3NmdGltZV9sCi0rIyAgZGVmaW5lIF9fd2NzeGZybV9sIHdjc3hmcm1fbAotKyMgIGRlZmluZSBfX3djdHlwZV9sIHdjdHlwZV9sCi0rIyBlbmRpZgotKwotKyNlbHNlCi0rIyBkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjIGRlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotKyMgZGVmaW5lIF9fc3RydG9kX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2QoKFMpLCAoRSkpCi0rIyBkZWZpbmUgX19zdHJ0b2ZfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZigoUyksIChFKSkKLSsjIGRlZmluZSBfX3N0cnRvbGRfbChTLCBFLCBMKSAgICAgICAgc3RydG9sZCgoUyksIChFKSkKLSsjIGRlZmluZSBfX3N0cnhmcm1fbChTMSwgUzIsIE4sIEwpICAgc3RyeGZybSgoUzEpLCAoUzIpLCAoTikpCi0rIyB3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0rIyBkZWZpbmUgX19uZXdsb2NhbGUoYSwgYiwgYykgICAgICAgIE5VTEwKLSsjIGRlZmluZSBfX2ZyZWVsb2NhbGUoYSkgICAgICAgICAgICAgKCh2b2lkKTApCi0rIyBkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotKy8vIyBkZWZpbmUgX191c2Vsb2NhbGUgPwotKy8vCi0rIyBpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyMgIGRlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCi0rIyAgZGVmaW5lIF9fdG93bG93ZXJfbChDLCBMKSAgICAgICAgICB0b3dsb3dlcigoQykpCi0rIyAgZGVmaW5lIF9fdG93dXBwZXJfbChDLCBMKSAgICAgICAgICB0b3d1cHBlcigoQykpCi0rIyAgZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCi0rLy8jICBkZWZpbmUgX193Y3NmdGltZV9sKFMsIE0sIEYsIFQsIEwpICB3Y3NmdGltZSgoUyksIChNKSwgKEYpLCAoVCkpCi0rIyAgZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLSsjICBkZWZpbmUgX193Y3R5cGVfbChTLCBMKSAgICAgICAgICAgIHdjdHlwZSgoUykpCi0rIyBlbmRpZgotKwotICNlbmRpZiAvLyBHTElCQyAyLjMgYW5kIGxhdGVyCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1pbmRleCA1MDgxZGMxLi4yMTQzMGQwIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLUBAIC0zOSwyMCArMzksNiBAQAotICNpbmNsdWRlIDxsYW5naW5mby5oPgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19zdHJ0b2xfbChTLCBFLCBCLCBMKSAgICAgIHN0cnRvbCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b3VsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvdWwoKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG9sbF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b2xsKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvdWxsX2woUywgRSwgQiwgTCkgICAgc3RydG91bGwoKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG9mX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2YoKFMpLCAoRSkpCi0tI2RlZmluZSBfX3N0cnRvZF9sKFMsIEUsIEwpICAgICAgICAgc3RydG9kKChTKSwgKEUpKQotLSNkZWZpbmUgX19zdHJ0b2xkX2woUywgRSwgTCkgICAgICAgIHN0cnRvbGQoKFMpLCAoRSkpCi0tI3dhcm5pbmcgc2hvdWxkIGR1bW15IF9fbmV3bG9jYWxlIGNoZWNrIGZvciBDfFBPU0lYID8KLS0jZGVmaW5lIF9fbmV3bG9jYWxlKGEsIGIsIGMpICAgICAgICBOVUxMCi0tI2RlZmluZSBfX2ZyZWVsb2NhbGUoYSkgICAgICAgICAgICAgKCh2b2lkKTApCi0tI2RlZmluZSBfX2R1cGxvY2FsZShhKSAgICAgICAgICAgICAgX19jX2xvY2FsZSgpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIHRlbXBsYXRlPD4KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1pbmRleCBkYTA3YzFmLi40YmNhNWYxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1AQCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgX19nbnVfY3h4Ci0gewotICAgZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotIH0KLSsjZGVmaW5lIF9fdXNlbG9jYWxlIHVzZWxvY2FsZQotICNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotaW5kZXggYzI2NjRhNy4uZWM1YzMyOSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLUBAIC0zNiwxMyArMzYsNiBAQAotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotLSNkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotLSNkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLS0jZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gVGhlc2UgYXJlIGJhc2ljYWxseSBleHRlbnNpb25zIHRvIGNoYXJfdHJhaXRzLCBhbmQgcGVyaGFwcyBzaG91bGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1pbmRleCA3Mjk0ZTNhLi43YjEyODYxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMzgsMTMgKzM4LDYgQEAKLSAjdW5kZWYgX0xJQkMKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgIHdjdHlwZSgoUykpCi0tI2RlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICB0b3d1cHBlcigoQykpCi0tI2RlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICB0b3dsb3dlcigoQykpCi0tI2RlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICBpc3djdHlwZSgoQyksIChNKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gTkI6IFRoZSBvdGhlciBjdHlwZTxjaGFyPiBzcGVjaWFsaXphdGlvbnMgYXJlIGluIHNyYy9sb2NhbGUuY2MgYW5kCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotaW5kZXggMTM1OTRkOS4uZDc2OTNiNCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotQEAgLTM5LDEzICszOSwxMCBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCBnZXR0ZXh0IHN0dWZmCi0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0tZXh0ZXJuICJDIiBjaGFyICpfX2RjZ2V0dGV4dChjb25zdCBjaGFyICpkb21haW5uYW1lLAotLQkJCSAgICAgY29uc3QgY2hhciAqbXNnaWQsIGludCBjYXRlZ29yeSk7Ci0gI3VuZGVmIGdldHRleHQKLS0jZGVmaW5lIGdldHRleHQobXNnaWQpIF9fZGNnZXR0ZXh0KE5VTEwsIG1zZ2lkLCBMQ19NRVNTQUdFUykKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLSsjZGVmaW5lIGdldHRleHQobXNnaWQpIGRjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0gI2Vsc2UKLS0jdW5kZWYgZ2V0dGV4dAotICNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgKG1zZ2lkKQotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1pbmRleCAxNDI0MDc4Li5kODlkYTMzIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTM2LDE1ICszNiwxMSBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCBwcm90b3R5cGVzIGZvciAqdGV4dGRvbWFpbiBmdW5jcwotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotLWV4dGVybiAiQyIgY2hhciAqX190ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpOwotLWV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotLQkJCQkgIGNvbnN0IGNoYXIgKmRpcm5hbWUpOwotLSNlbHNlCi0tI3VuZGVmIF9fdGV4dGRvbWFpbgotLSN1bmRlZiBfX2JpbmR0ZXh0ZG9tYWluCi0tI2RlZmluZSBfX3RleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotLSNkZWZpbmUgX19iaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI3VuZGVmIHRleHRkb21haW4KLSsjdW5kZWYgYmluZHRleHRkb21haW4KLSsjZGVmaW5lIHRleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCi0gI2VuZGlmCi0gCi0gICAvLyBOb24tdmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotQEAgLTcwLDcgKzY2LDcgQEAgZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0gICAgIG1lc3NhZ2VzPF9DaGFyVD46Om9wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsIGNvbnN0IGxvY2FsZSYgX19sb2MsCi0gCQkJICAgY29uc3QgY2hhciogX19kaXIpIGNvbnN0Ci0gICAgIHsKLS0gICAgICBfX2JpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7Ci0rICAgICAgYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSAgICAgICByZXR1cm4gdGhpcy0+ZG9fb3BlbihfX3MsIF9fbG9jKTsKLSAgICAgfQotIAotQEAgLTkwLDcgKzg2LDcgQEAgZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0gICAgIHsKLSAgICAgICAvLyBObyBlcnJvciBjaGVja2luZyBpcyBkb25lLCBhc3N1bWUgdGhlIGNhdGFsb2cgZXhpc3RzIGFuZCBjYW4KLSAgICAgICAvLyBiZSB1c2VkLgotLSAgICAgIF9fdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0rICAgICAgdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1pbmRleCBhYTUyNzMxLi4yZTZmODBhIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1AQCAtNDMsMTAgKzQzLDYgQEAKLSAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gQ29uc3RydWN0IGFuZCByZXR1cm4gdmFsaWQgcGF0dGVybiBjb25zaXN0aW5nIG9mIHNvbWUgY29tYmluYXRpb24gb2Y6Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLWluZGV4IDg4M2VjMWEuLjJjNzA2NDIgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtNDEsOSArNDEsNiBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotICNlbmRpZgotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotLSNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLSB7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLWluZGV4IGUwNzA3ZDcuLmQ4NDhlZDUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1AQCAtNDAsOSArNDAsNiBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotICNlbmRpZgotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotLSNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLSB7Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ1YTQ4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGU3YTQ3NjBmYjQwMDA4Y2FlMzNlNmZjN2RjNGNmZWY2YzJmZDVmOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0NTo1NyArMDQwMAotU3ViamVjdDogW1BBVENIIDA2LzQ2XSB1Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIHwgIDQgKystLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgIHwgMTMgKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLWluZGV4IDJlNmY4MGEuLjMxZWJiOWYgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIHN0ZAotICMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKLS0jIGVsc2UKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7Ci0gIyBlbmRpZgotQEAgLTU1Niw3ICs1NTYsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotLSMgZWxzZQotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSAjIGVuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLWluZGV4IDJjNzA2NDIuLmQ1Yzg5NjEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtMTI3LDEyICsxMjcsMjUgQEAgbmFtZXNwYWNlIHN0ZAotIAl7Ci0gCSAgLy8gTmFtZWQgbG9jYWxlLgotIAkgIC8vIE5COiBJbiB0aGUgR05VIG1vZGVsIHdjaGFyX3QgaXMgYWx3YXlzIDMyIGJpdCB3aWRlLgotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBudW1lcmljCi0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotIAkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0gCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotIAotIAkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSAKLSAJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSBMJ1wwJykKLSAJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjczZTU5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NDIgKzAsMCBAQAotRnJvbSA4ZDUzYTM4YTMwMzgxMDRlNjgzMGVjZWE1ZTRiZWFkY2U1NDQ1N2MxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDY6NTggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy80Nl0gdWNsaWJjLWxvY2FsZS11cGRhdGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8ICAzICsKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgICAgICB8IDc0ICsrKysrKysrKystLS0tLS0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8IDQyICsrKysrKy0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIHwgNTEgKysrKysrKysrKystLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxMiArKy0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgICAgICAgfCAzNCArKysrKystLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgICAgICAgfCAgNSArKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgIHwgMTggKysrKy0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAxNyArKystLQotIDkgZmlsZXMgY2hhbmdlZCwgMTU4IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1pbmRleCBlNzRmZGRmLi45NzFhNmI0IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC0zMSw2ICszMSw5IEBACi0gCi0gI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0rI2luY2x1ZGUgPGNzdGRsaWI+Ci0rI2luY2x1ZGUgPGNzdHJpbmc+Ci0rI2luY2x1ZGUgPGNzdGRkZWY+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgY2xlYW4gdGhpcyB1cAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotaW5kZXggMjE0MzBkMC4uMWI5ZDhlMSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMzksMjMgKzM5LDIwIEBACi0gI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tbmFtZXNwYWNlIHN0ZAotLXsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQotKwotICAgdGVtcGxhdGU8PgotICAgICB2b2lkCi0gICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZmxvYXQmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotIAkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotICAgICB7Ci0tICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0tCXsKLS0JICBjaGFyKiBfX3Nhbml0eTsKLS0JICBlcnJubyA9IDA7Ci0tCSAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2Y7Ci0tCSAgZWxzZQotLQkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0tCX0KLSsgICAgICBjaGFyKiBfX3Nhbml0eTsKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19mOwotKyAgICAgIGVsc2UKLSsJX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPD4KLUBAIC02MywxNiArNjAsMTMgQEAgbmFtZXNwYWNlIHN0ZAotICAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBkb3VibGUgX19kID0gX19zdHJ0b2RfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2Q7Ci0tCSAgZWxzZQotLQkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0tCX0KLSsgICAgICBjaGFyKiBfX3Nhbml0eTsKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgZG91YmxlIF9fZCA9IF9fc3RydG9kX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCV9fdiA9IF9fZDsKLSsgICAgICBlbHNlCi0rCV9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTw+Ci1AQCAtODAsMTYgKzc0LDEzIEBAIG5hbWVzcGFjZSBzdGQKLSAgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBsb25nIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0tICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotLQkgICAgX192ID0gX19sZDsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCV9fdiA9IF9fbGQ7Ci0rICAgICAgZWxzZQotKwlfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSAgICAgfQotIAotICAgdm9pZAotQEAgLTExMCwxNyArMTAxLDE4IEBAIG5hbWVzcGFjZSBzdGQKLSAgIHZvaWQKLSAgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Rlc3Ryb3lfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotICAgewotLSAgICBpZiAoX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotKyAgICBpZiAoX19jbG9jICYmIF9TX2dldF9jX2xvY2FsZSgpICE9IF9fY2xvYykKLSAgICAgICBfX2ZyZWVsb2NhbGUoX19jbG9jKTsKLSAgIH0KLSAKLSAgIF9fY19sb2NhbGUKLSAgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Nsb25lX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSAgIHsgcmV0dXJuIF9fZHVwbG9jYWxlKF9fY2xvYyk7IH0KLS19IC8vIG5hbWVzcGFjZSBzdGQKLSAKLS1uYW1lc3BhY2UgX19nbnVfY3h4Ci0tewotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLSsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0UoX19nbnVfY3h4KQotKwotICAgY29uc3QgY2hhciogY29uc3QgY2F0ZWdvcnlfbmFtZXNbNiArIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTXSA9Ci0gICAgIHsKLSAgICAgICAiTENfQ1RZUEUiLAotQEAgLTEzOCw5ICsxMzAsMTEgQEAgbmFtZXNwYWNlIF9fZ251X2N4eAotICAgICAgICJMQ19JREVOVElGSUNBVElPTiIKLSAjZW5kaWYKLSAgICAgfTsKLS19Ci0gCi0tbmFtZXNwYWNlIHN0ZAotLXsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi0rCi0rX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKLSsKLSAgIGNvbnN0IGNoYXIqIGNvbnN0KiBjb25zdCBsb2NhbGU6Ol9TX2NhdGVnb3JpZXMgPSBfX2dudV9jeHg6OmNhdGVnb3J5X25hbWVzOwotLX0gIC8vIG5hbWVzcGFjZSBzdGQKLSsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotaW5kZXggNGJjYTVmMS4uNjRhNmQ0NiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTM5LDIxICszOSwyMyBAQAotICNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSAKLSAjaW5jbHVkZSA8Y3N0cmluZz4gICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnN0cmxlbgotLSNpbmNsdWRlIDxjc3RkaW8+ICAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c25wcmludGYgb3Igc3RkOjpzcHJpbnRmCi0rI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjp2c25wcmludGYgb3Igc3RkOjp2c3ByaW50ZgotICNpbmNsdWRlIDxjbG9jYWxlPgotICNpbmNsdWRlIDxsYW5naW5mby5oPgkJLy8gRm9yIGNvZGVjdnQKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBmaXggdGhpcwotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsjaWZkZWYgX0dMSUJDWFhfVVNFX0lDT05WCi0gI2luY2x1ZGUgPGljb252Lmg+CQkvLyBGb3IgY29kZWN2dCB1c2luZyBpY29udiwgaWNvbnZfdAotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotLSNpbmNsdWRlIDxsaWJpbnRsLmg+IAkJLy8gRm9yIG1lc3NhZ2VzCi0rI2lmZGVmIEhBVkVfTElCSU5UTF9ICi0rI2luY2x1ZGUgPGxpYmludGwuaD4JCS8vIEZvciBtZXNzYWdlcwotICNlbmRpZgotKyNpbmNsdWRlIDxjc3RkYXJnPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHdoYXQgaXMgX0dMSUJDWFhfQ19MT0NBTEVfR05VIGZvcgotKy8vIHBzbTogdXNlZCBpbiBvcy9nbnUtbGludXgvY3R5cGVfbm9uaW5saW5lLmgKLSAjZW5kaWYKLSAjZGVmaW5lIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSAxCi0gCi1AQCAtNzgsMjMgKzgwLDI1IEBAIG5hbWVzcGFjZSBzdGQKLSAjZWxzZQotICAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSAjZW5kaWYKLS0KLS0gIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIF9UdiB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLS0gIC8vIHN0cmluZy4gIElmIHNucHJpbnRmIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KLS0gIC8vIHRoZSB1bnNhZmUgc3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0rICAvLyBDb252ZXJ0IG51bWVyaWMgdmFsdWUgb2YgdHlwZSBkb3VibGUgdG8gc3RyaW5nIGFuZCByZXR1cm4gbGVuZ3RoIG9mCi0rICAvLyBzdHJpbmcuICBJZiB2c25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwotKyAgLy8gdGhlIHVuc2FmZSB2c3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0gICAvLyBiZSBhdm9pZGVkLgotLSAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgotLSAgICBpbnQKLS0gICAgX19jb252ZXJ0X2Zyb21fdihjaGFyKiBfX291dCwKLS0JCSAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAotLQkJICAgICBjb25zdCBjaGFyKiBfX2ZtdCwKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLS0JCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jLCBpbnQgX19wcmVjKQotKyAgICBpbmxpbmUgaW50Ci0rICAgIF9fY29udmVydF9mcm9tX3YoY29uc3QgX19jX2xvY2FsZSYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rCV9fY2xvYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpCi0rI2VuZGlmCi0rCQkgICAgICwKLSsJCSAgICAgY2hhciogX19vdXQsCi0rCQkgICAgIGNvbnN0IGludCBfX3NpemUsCi0rCQkgICAgIGNvbnN0IGNoYXIqIF9fZm10LCAuLi4pCi0gICAgIHsKLSsgICAgICB2YV9saXN0IF9fYXJnczsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsKLSAgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX2Nsb2MpOwotICNlbHNlCi0tCQkgICAgIF9UdiBfX3YsIGNvbnN0IF9fY19sb2NhbGUmLCBpbnQgX19wcmVjKQotLSAgICB7Ci0gIyBpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAgICAgICBjaGFyKiBfX29sZCA9IHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0gICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX29sZCkgKyAxXTsKLUBAIC0xMDMsNyArMTA3LDkgQEAgbmFtZXNwYWNlIHN0ZAotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0gICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnNucHJpbnRmKF9fb3V0LCBfX3NpemUsIF9fZm10LCBfX3ByZWMsIF9fdik7Ci0rICAgICAgdmFfc3RhcnQoX19hcmdzLCBfX2ZtdCk7Ci0rICAgICAgY29uc3QgaW50IF9fcmV0ID0gc3RkOjp2c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fYXJncyk7Ci0rICAgICAgdmFfZW5kKF9fYXJncyk7Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0gICAgICAgX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX29sZCk7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotaW5kZXggN2IxMjg2MS4uMTNlMDExZCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotQEAgLTMzLDE2ICszMywyMCBAQAotIAotIC8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0gCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICNkZWZpbmUgX0xJQkMKLSAjaW5jbHVkZSA8bG9jYWxlPgotICN1bmRlZiBfTElCQwotKyNlbHNlCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCi0rCi0gICAvLyBOQjogVGhlIG90aGVyIGN0eXBlPGNoYXI+IHNwZWNpYWxpemF0aW9ucyBhcmUgaW4gc3JjL2xvY2FsZS5jYyBhbmQKLSAgIC8vIHZhcmlvdXMgL2NvbmZpZy9vcy8qIGZpbGVzLgotLSAgdGVtcGxhdGU8PgotICAgICBjdHlwZV9ieW5hbWU8Y2hhcj46OmN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBfX3JlZnMpCi0gICAgIDogY3R5cGU8Y2hhcj4oMCwgZmFsc2UsIF9fcmVmcykKLSAgICAgewotQEAgLTU3LDYgKzYxLDggQEAgbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotIAl9Ci0gICAgIH0KLSsgICAgY3R5cGVfYnluYW1lPGNoYXI+Ojp+Y3R5cGVfYnluYW1lKCkKLSsgICAgeyB9Ci0gCi0gI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0gICBjdHlwZTx3Y2hhcl90Pjo6X193bWFza190eXBlCi1AQCAtMTM4LDE3ICsxNDQsMzMgQEAgbmFtZXNwYWNlIHN0ZAotICAgY3R5cGU8d2NoYXJfdD46OgotICAgZG9faXMobWFzayBfX20sIHdjaGFyX3QgX19jKSBjb25zdAotICAgewotLSAgICAvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotLSAgICAvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsgICAgLy8gVGhlIGNhc2Ugb2YgX19tID09IGN0eXBlX2Jhc2U6OnNwYWNlIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQsCi0rICAgIC8vIGR1ZSB0byBpdHMgdXNlIGluIG1hbnkgaXN0cmVhbSBmdW5jdGlvbnMuICBUaGVyZWZvcmUgd2UgZGVhbCB3aXRoCi0rICAgIC8vIGl0IGZpcnN0LCBleHBsb2l0aW5nIHRoZSBrbm93bGVkZ2UgdGhhdCBvbiBHTlUgc3lzdGVtcyBfTV9iaXRbNV0KLSsgICAgLy8gaXMgdGhlIG1hc2sgY29ycmVzcG9uZGluZyB0byBjdHlwZV9iYXNlOjpzcGFjZS4gIE5COiBhbiBlbmNvZGluZwotKyAgICAvLyBjaGFuZ2Ugd291bGQgbm90IGFmZmVjdCBjb3JyZWN0bmVzcyEKLSsKLSAgICAgYm9vbCBfX3JldCA9IGZhbHNlOwotLSAgICBjb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotLSAgICBmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0tICAgICAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0KLS0JICAmJiBfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLS0JewotLQkgIF9fcmV0ID0gdHJ1ZTsKLS0JICBicmVhazsKLS0JfQotKyAgICBpZiAoX19tID09IF9NX2JpdFs1XSkKLSsgICAgICBfX3JldCA9IF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrWzVdLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rICAgIGVsc2UKLSsgICAgICB7Ci0rCS8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0rCS8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKwljb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotKwlmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rCSAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0pCi0rCSAgICB7Ci0rCSAgICAgIGlmIChfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLSsJCXsKLSsJCSAgX19yZXQgPSB0cnVlOwotKwkJICBicmVhazsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoX19tID09IF9NX2JpdFtfX2JpdGN1cl0pCi0rCQlicmVhazsKLSsJICAgIH0KLSsgICAgICB9Ci0rCi0gICAgIHJldHVybiBfX3JldDsKLSAgIH0KLSAKLUBAIC0yOTAsNCArMzEyLDUgQEAgbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotICAgfQotICNlbmRpZiAvLyAgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLS19Ci0rCi0rX0dMSUJDWFhfRU5EX05BTUVTUEFDRQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1pbmRleCBkODlkYTMzLi4wNjc2NTdhIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTUzLDEyICs1MywxNiBAQAotICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotICAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSAJCQkJc2l6ZV90IF9fcmVmcykKLS0gICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKSksCi0tICAgICBfTV9uYW1lX21lc3NhZ2VzKF9fcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoTlVMTCksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKE5VTEwpCi0gICAgICB7Ci0tICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotLSAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RkOjpzdHJsZW4oX19zKSArIDE7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbX19sZW5dOwotKyAgICAgICBzdGQ6Om1lbWNweShfX3RtcCwgX19zLCBfX2xlbik7Ci0gICAgICAgIF9NX25hbWVfbWVzc2FnZXMgPSBfX3RtcDsKLSsKLSsgICAgICAgLy8gTGFzdCB0byBhdm9pZCBsZWFraW5nIG1lbW9yeSBpZiBuZXcgdGhyb3dzLgotKyAgICAgICBfTV9jX2xvY2FsZV9tZXNzYWdlcyA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0gICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotaW5kZXggMzFlYmI5Zi4uNzY3OWI5YyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTMzLDkgKzMzLDE0IEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotQEAgLTIwNiw3ICsyMTEsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgfQotIAlicmVhazsKLSAgICAgICBkZWZhdWx0OgotLQk7Ci0rCV9fcmV0ID0gcGF0dGVybigpOwotICAgICAgIH0KLSAgICAgcmV0dXJuIF9fcmV0OwotICAgfQotQEAgLTM5MCw3ICszOTUsOSBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLSAJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KLS0JICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAJICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgICAgICBjb25zdCBzaXplX3QgX19sbGVuID0gc3RybGVuKF9fb2xkKSArIDE7Ci0rICAgICAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKLSAJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotICNlbmRpZgotIAotQEAgLTQ3Nyw4ICs0ODQsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICAgICAgZnJlZShfX29sZCk7Ci0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotIAkgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSAJICAgIH0KLUBAIC00OTgsOCArNTA1LDggQEAgbmFtZXNwYWNlIHN0ZAotICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgIGZyZWUoX19vbGQpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCX0KLSAgICAgfQotQEAgLTU0NSw4ICs1NTIsMTEgQEAgbmFtZXNwYWNlIHN0ZAotIAkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotICNlbHNlCi0gCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0tCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotLQkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rICAgICAgICAgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotKyAgICAgICAgICBtZW1jcHkoX19zYXYsIF9fb2xkLCBfX2xsZW4pOwotKyAgICAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotICNlbmRpZgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotQEAgLTYzMyw4ICs2NDMsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICAgICAgZnJlZShfX29sZCk7Ci0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgICAgICAgICAgX190aHJvd19leGNlcHRpb25fYWdhaW47Ci0gCSAgICB9Ci1AQCAtNjUzLDggKzY2Myw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSAjZWxzZQotLQkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICBmcmVlKF9fb2xkKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rCSAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotIAl9Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotaW5kZXggZDVjODk2MS4uOGFlODk2OSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0zMyw5ICszMywxNCBAQAotIAotIC8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0gCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICNkZWZpbmUgX0xJQkMKLSAjaW5jbHVkZSA8bG9jYWxlPgotICN1bmRlZiBfTElCQwotKyNlbHNlCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotaW5kZXggZDg0OGVkNS4uZjI0ZDUzZSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC01MywxMSArNTMsMTQgQEAgbmFtZXNwYWNlIHN0ZAotICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fc3RyZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSAJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0gI2Vsc2UKLS0gICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICBjb25zdCBzaXplX3QgX19sbGVuID0gc3RybGVuKF9fb2xkKSArIDE7Ci0rICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotKyAgICAgIG1lbWNweShfX3NhdiwgX19vbGQsIF9fbGxlbik7Ci0gICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0cmZ0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLS0gICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tICAgICAgZnJlZShfX29sZCk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKyAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KLSAgICAgICBpZiAoX19sZW4gPT0gMCkKLUBAIC0yMDcsMTEgKzIxMCwxNCBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotIAkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSAjZWxzZQotLSAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgbWVtY3B5KF9fc2F2LCBfX29sZCwgX19sbGVuKTsKLSAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gd2NzZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotLSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0gICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotICAgICAgIGlmIChfX2xlbiA9PSAwKQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotaW5kZXggYmE4ZTg1OC4uMTY2NWRkZSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1AQCAtNTAsMTIgKzUwLDIxIEBACi0gICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0gCQkJCSAgICAgc2l6ZV90IF9fcmVmcykKLSAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0tICAgIF9NX25hbWVfdGltZXB1bmN0KF9fcykKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoTlVMTCkKLSAgICAgewotLSAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotLSAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0ZDo6c3RybGVuKF9fcykgKyAxOwotKyAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbX19sZW5dOwotKyAgICAgIHN0ZDo6bWVtY3B5KF9fdG1wLCBfX3MsIF9fbGVuKTsKLSAgICAgICBfTV9uYW1lX3RpbWVwdW5jdCA9IF9fdG1wOwotLSAgICAgIF9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY2xvYyk7Ci0rCi0rICAgICAgdHJ5Ci0rCXsgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsgfQotKyAgICAgIGNhdGNoKC4uLikKLSsJewotKwkgIGRlbGV0ZSBbXSBfTV9uYW1lX3RpbWVwdW5jdDsKLSsJICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJfQotKwotICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1zc3Bfbm9uc2hhcmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDQxLXNzcF9ub25zaGFyZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0NDUyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1zc3Bfbm9uc2hhcmVkLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNTUxYTVkYjdhY2I1NmUwODVhMTAxZjFjMjIyZDUxYjJjMWIwMzlhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgorRGF0ZTogU2F0LCA3IE5vdiAyMDE1IDE0OjU4OjQwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggNDEvNDZdIHNzcF9ub25zaGFyZWQKKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIENvbmZpZ3VyYXRpb25dCisKKyBnY2MvZ2NjLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggMjgxMjgxOS4uOWRlOTZlZSAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtODYzLDcgKzg2Myw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KKyAjaWZuZGVmIExJTktfU1NQX1NQRUMKKyAjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCisgI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKy0JCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQ6fSIKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisgI2Vsc2UKKyAjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAorIAkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCmluZGV4IGVkNmNkNjkuLjZiNWRhMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCkBAIC0zMSw3ICszMSw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLVVwc3RyZWFtLVN0YXR1czogUmVqZWN0ZWQKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCiAKICBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCiAgbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNTYtTFJBLVBSNzA5MDQtcmVsYXgtdGhlLXJlc3RyaWN0aW9uLW9uLXN1YnJlZy1yZWxvYWQtZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA1Ni1MUkEtUFI3MDkwNC1yZWxheC10aGUtcmVzdHJpY3Rpb24tb24tc3VicmVnLXJlbG9hZC1mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMWYxNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNTYtTFJBLVBSNzA5MDQtcmVsYXgtdGhlLXJlc3RyaWN0aW9uLW9uLXN1YnJlZy1yZWxvYWQtZi5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIGE1ODJiMGE1M2QxZGM4NjA0YTIwMTM0OGI5OWNhOGRlNDg3ODRlN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBqaXdhbmcgPGppd2FuZ0AxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+CitEYXRlOiBUaHUsIDEyIE1heSAyMDE2IDE3OjAwOjUyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtMUkFdIFBSNzA5MDQsIHJlbGF4IHRoZSByZXN0cmljdGlvbiBvbiBzdWJyZWcgcmVsb2FkIGZvcgorIHdpZGUgbW9kZQorCisyMDE2LTA1LTEyICBKaW9uZyBXYW5nICA8amlvbmcud2FuZ0Bhcm0uY29tPgorCitnY2MvCisgIFBSIHJ0bC1vcHRpbWl6YXRpb24vNzA5MDQKKyAgKiBscmEtY29uc3RyYWludC5jIChwcm9jZXNzX2FkZHJfcmVnKTogUmVsYXggdGhlIHJlc3RyaWN0aW9uIG9uCisgIHN1YnJlZyByZWxvYWQgZm9yIHdpZGUgbW9kZS4KKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjM2MTgxIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgZ2NjL2xyYS1jb25zdHJhaW50cy5jIHwgMTYgKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMgYi9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKK2luZGV4IGY5NmZkNDU4ZTIzLi43M2ZiNzJhMmVhNSAxMDA2NDQKKy0tLSBhL2djYy9scmEtY29uc3RyYWludHMuYworKysrIGIvZ2NjL2xyYS1jb25zdHJhaW50cy5jCitAQCAtMTMyNiw3ICsxMzI2LDIxIEBAIHByb2Nlc3NfYWRkcl9yZWcgKHJ0eCAqbG9jLCBib29sIGNoZWNrX29ubHlfcCwgcnR4X2luc24gKipiZWZvcmUsIHJ0eF9pbnNuICoqYWZ0CisgCisgICBzdWJyZWdfcCA9IEdFVF9DT0RFICgqbG9jKSA9PSBTVUJSRUc7CisgICBpZiAoc3VicmVnX3ApCistICAgIGxvYyA9ICZTVUJSRUdfUkVHICgqbG9jKTsKKysgICAgeworKyAgICAgIHJlZyA9IFNVQlJFR19SRUcgKCpsb2MpOworKyAgICAgIG1vZGUgPSBHRVRfTU9ERSAocmVnKTsKKysKKysgICAgICAvKiBGb3IgbW9kZSB3aXRoIHNpemUgYmlnZ2VyIHRoYW4gcHRyX21vZGUsIHRoZXJlIHVubGlrZWx5IHRvIGJlICJtb3YiCisrCSBiZXR3ZWVuIHR3byByZWdpc3RlcnMgd2l0aCBkaWZmZXJlbnQgY2xhc3NlcywgYnV0IHRoZXJlIG5vcm1hbGx5IHdpbGwKKysJIGJlICJtb3YiIHdoaWNoIHRyYW5zZmVycyBlbGVtZW50IG9mIHZlY3RvciByZWdpc3RlciBpbnRvIHRoZSBnZW5lcmFsCisrCSByZWdpc3RlciwgYW5kIHRoaXMgbm9ybWFsbHkgd2lsbCBiZSBhIHN1YnJlZyB3aGljaCBzaG91bGQgYmUgcmVsb2FkZWQKKysJIGFzIGEgd2hvbGUuICBUaGlzIGlzIHBhcnRpY3VsYXJseSBsaWtlbHkgdG8gYmUgdHJpZ2dlcmVkIHdoZW4KKysJIC1mbm8tc3BsaXQtd2lkZS10eXBlcyBzcGVjaWZpZWQuICAqLworKyAgICAgIGlmIChpbl9jbGFzc19wIChyZWcsIGNsLCAmbmV3X2NsYXNzKQorKwkgIHx8IEdFVF9NT0RFX1NJWkUgKG1vZGUpIDw9IEdFVF9NT0RFX1NJWkUgKHB0cl9tb2RlKSkKKysgICAgICAgbG9jID0gJlNVQlJFR19SRUcgKCpsb2MpOworKyAgICB9CisrCisgICByZWcgPSAqbG9jOworICAgbW9kZSA9IEdFVF9NT0RFIChyZWcpOworICAgaWYgKCEgUkVHX1AgKHJlZykpCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNzM4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwpAQCAtMCwwICsxLDEyOCBAQAorcmVxdWlyZSBnY2MtY29tbW9uLmluYworCisjIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKKworUFYgPSAiNy4zLjAiCisKKyMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCisKK0JJTlYgPSAiNy4zLjAiCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy03LjM6JHtGSUxFX0RJUk5BTUV9L2djYy03LjMvYmFja3BvcnQ6IgorCitERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiIKK05BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIgorCitMSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKKyIKKworI1JFTEVBU0UgPSAiNy0yMDE3MDUwNCIKK0JBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLnh6IgorI1NSQ1JFViA9ICJmN2NmNzk4YjczZmQxYTA3MDk4ZjlhNDkwZGVlYzFlMmEzNmUwYmVkIgorI0JBU0VVUkkgPz0gImdpdDovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2M7YnJhbmNoPWdjYy02LWJyYW5jaDtwcm90b2NvbD1naXQiCisjQkFTRVVSSSA/PSAiaHR0cDovL21pcnJvcnMuY29uY2VydHBhc3MuY29tL2djYy9zbmFwc2hvdHMvJHtSRUxFQVNFfS9nY2MtJHtSRUxFQVNFfS50YXIuYnoyIgorCitTUkNfVVJJID0gIlwKKyAgICAgICAgICAgJHtCQVNFVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1jOTktc25wcmludGYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItRGlzYWJsZS1zZHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctZXhwb3J0LUNQUC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzItRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMzLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNi1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzctU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM4LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzktbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MC1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDEtZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQyLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQzLWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0NC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ4LWdjYy1FbmFibGUtc3RhdGljLVBJRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtc2VnbWVudGF0aW9uLWZhdWx0LXByZWNvbXBpbGVkLWhkci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDUwLVJJU0MtVi1IYW5kbGUtbm9uLWxlZ2l0aW1hdGUtYWRkcmVzcy1pbi1yaXNjdl9sZWdpdGkucGF0Y2ggXAorICAgICAgICAgICAke0JBQ0tQT1JUU30gXAorIgorQkFDS1BPUlRTID0gIlwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImJlMmRhMjE2ODBmMjc2MjRmM2E4NzA1NWM0YmE1YWYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzMmNhNmFlMDQ2MzZhZGJiNDMwZTg2NWExNDUxYWRmNjk3OWFiNDRjYTFjODM3NGY2MWZiYTY1NjQ1Y2UxNWMiCisKK1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCisjUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKKworIyBMYW5ndWFnZSBPdmVycmlkZXMKK0ZPUlRSQU4gPSAiIgorSkFWQSA9ICIiCisKK0xUTyA9ICItLWVuYWJsZS1sdG8iCisKK0VYVFJBX09FQ09ORl9CQVNFID0gIlwKKyAgICAke0xUT30gXAorICAgIC0tZW5hYmxlLWxpYnNzcCBcCisgICAgLS1lbmFibGUtbGliaXRtIFwKKyAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKKyAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0gXAorICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCisgICAgLS13aXRoLXBwbD1ubyBcCisgICAgLS13aXRoLWNsb29nPW5vIFwKKyAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKKyAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCisgICAgLS13aXRob3V0LWlzbCBcCisiCisKK0VYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKKyAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisgICAgLS1kaXNhYmxlLWxpYmdvbXAgXAorICAgIC0tZGlzYWJsZS1saWJpdG0gXAorICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAtLWRpc2FibGUtbHRvIFwKKyAgICAtLWRpc2FibGUtcGx1Z2luIFwKKyAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKKyAgICAtLXdpdGhvdXQtaXNsIFwKKyAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzIFwKKyIKKworRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKKyAgICAtLXdpdGgtZ3h4LWluY2x1ZGUtZGlyPS9ub3QvZXhpc3R7dGFyZ2V0X2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9IFwKKyAgICAtLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IFwKKyAgICAtLXdpdGgtYnVpbGQtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWYxYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAyZmNmMWUyM2VmNGIyYTVjOTM1MjZmMTIyMTJhYTg5MjU5NTI2MWY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzc6MTEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwMS80N10gZ2NjLTQuMy4xOiBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGNvbmZpZ3VyZSAgICB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IDMyYTM4NjMzYWQ4Li5iNDc2MDk1MjA4NSAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNzQ3Miw3ICs3NDcyLDcgQEAgZmkKKyAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCisgdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKKyAKKy1GTEFHU19GT1JfVEFSR0VUPQorK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCisgY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCisgICoiIG5ld2xpYiAiKikKKyAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMTIzNzc0OTkyOTUuLjE3NmViYjkyMWVkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zMDY1LDcgKzMwNjUsNyBAQCBmaQorICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KKyB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgorIAorLUZMQUdTX0ZPUl9UQVJHRVQ9CisrRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKKyBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KKyAgKiIgbmV3bGliICIqKQorICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDgtYzk5LXNucHJpbnRmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA4LWM5OS1zbnByaW50Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmQ1NjJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA4LWM5OS1zbnByaW50Zi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDczMmYxMGVlYWQ2MTgzMGE4YWVlMWJmMzhjY2U4OTJkYTI1YzM1YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0OTowMyArMDQwMAorU3ViamVjdDogW1BBVENIIDA4LzQ3XSBjOTktc25wcmludGYKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBsaWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KK2luZGV4IDQzOTY5ODkyYWEyLi4xMjE0ODQ1NzkwOSAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbworKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCitAQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBzdGQKKyAgIHVzaW5nIDo6dnNwcmludGY7CisgfSAvLyBuYW1lc3BhY2Ugc3RkCisgCistI2lmIF9HTElCQ1hYX1VTRV9DOTlfU1RESU8KKysjaWYgX0dMSUJDWFhfVVNFX0M5OV9TVERJTyB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCisgCisgI3VuZGVmIHNucHJpbnRmCisgI3VuZGVmIHZmc2NhbmYKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOS1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOS1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTEzZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA5LWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCkBAIC0wLDAgKzEsMTkyIEBACitGcm9tIDQ3OTFhMGEwZjQ1OTVkMGExODk3NGY0ZTg1YTc1OWEwNzg5OTQzZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDA5LzQ3XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb246IGNvZGVzb3VyY2VyeV0KKy0tLQorIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCisgZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKworIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKKyBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCisgZ2NjL2luY3BhdGguYyAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKKyA3IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKK2luZGV4IGE1YzNhZWFhMzM2Li5mMDJmZTY2MzY3ZSAxMDA2NDQKKy0tLSBhL2djYy9jb21tb24ub3B0CisrKysgYi9nY2MvY29tbW9uLm9wdAorQEAgLTY2Miw2ICs2NjIsMTAgQEAgV3JldHVybi1sb2NhbC1hZGRyCisgQ29tbW9uIFZhcih3YXJuX3JldHVybl9sb2NhbF9hZGRyKSBJbml0KDEpIFdhcm5pbmcKKyBXYXJuIGFib3V0IHJldHVybmluZyBhIHBvaW50ZXIvcmVmZXJlbmNlIHRvIGEgbG9jYWwgb3IgdGVtcG9yYXJ5IHZhcmlhYmxlLgorIAorK1dwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQ29tbW9uIFZhcihmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpIEluaXQoMSkgV2FybmluZworK1dhcm4gZm9yIC1JIGFuZCAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBpZiBjcm9zcyBjb21waWxpbmcKKysKKyBXc2hhZG93CisgQ29tbW9uIFZhcih3YXJuX3NoYWRvdykgV2FybmluZworIFdhcm4gd2hlbiBvbmUgdmFyaWFibGUgc2hhZG93cyBhbm90aGVyLiAgU2FtZSBhcyAtV3NoYWRvdz1nbG9iYWwuCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KK2luZGV4IGJmMmFhN2IyZTdkLi5iMTIwMzk4N2UxNSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuaW4KKysrKyBiL2djYy9jb25maWcuaW4KK0BAIC0xOTQsNiArMTk0LDEyIEBACisgI2VuZGlmCisgCisgCisrLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLworKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCisrI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrI2VuZGlmCisrCisrCisgLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQorICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KKyAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggYzgyM2ZmZTYyOTAuLjQ4OThmMDRmYTZiIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTk0OSw2ICs5NDksNyBAQCB3aXRoX3N5c3RlbV96bGliCisgZW5hYmxlX21haW50YWluZXJfbW9kZQorIGVuYWJsZV9saW5rX211dGV4CisgZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCisrZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKyBlbmFibGVfcGx1Z2luCisgZW5hYmxlX2hvc3Rfc2hhcmVkCisgZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKK0BAIC0xNjkxLDYgKzE2OTIsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKKysgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcworICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0CisgICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcworICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKK0BAIC0yOTM0Nyw2ICsyOTM1MCwxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6CisgZmkKKyAKKyAKKysjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworK2Vsc2UKKysgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCisrZmkKKysKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrCisrJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCisrCisrZmkKKysKKyAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyAKKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggYWNmZTk3OTczODkuLjlkYzFkYzdmYzk2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTYxMDEsNiArNjEwMSwxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAorICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQorIAorK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCisrICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCisrICAgICAgICAgICBbMV0sCisrICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCisrZmkKKysKKyAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyBBQ19TVUJTVChzdWJkaXJzKQorIEFDX1NVQlNUKHNyY2RpcikKK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQoraW5kZXggNjhhNTU4ZTk5OTIuLjA2MGNkNzE2OWM2IDEwMDY0NAorLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQorQEAgLTI5OCw2ICsyOTgsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAgLVdwYWRkZWQgQGdvbAorIC1XcGFyZW50aGVzZXMgIC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0IEBnb2wKKyAtV3BsYWNlbWVudC1uZXcgIC1XcGxhY2VtZW50LW5ldz1AdmFye259IEBnb2wKKystV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgQGdvbAorIC1XcG9pbnRlci1hcml0aCAgLVdwb2ludGVyLWNvbXBhcmUgIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCisgLVduby1wcmFnbWFzICAtV3JlZHVuZGFudC1kZWNscyAgLVdyZXN0cmljdCAgLVduby1yZXR1cm4tbG9jYWwtYWRkciBAZ29sCisgLVdyZXR1cm4tdHlwZSAgLVdzZXF1ZW5jZS1wb2ludCAgLVdzaGFkb3cgIC1Xbm8tc2hhZG93LWl2YXIgQGdvbAorQEAgLTUzOTUsNiArNTM5NiwxNCBAQCBtYWRlIHVwIG9mIGRhdGEgb25seSBhbmQgdGh1cyByZXF1aXJlcyBubyBzcGVjaWFsIHRyZWF0bWVudC4gIEJ1dCwgZm9yCisgbW9zdCB0YXJnZXRzLCBpdCBpcyBtYWRlIHVwIG9mIGNvZGUgYW5kIHRodXMgcmVxdWlyZXMgdGhlIHN0YWNrIHRvIGJlCisgbWFkZSBleGVjdXRhYmxlIGluIG9yZGVyIGZvciB0aGUgcHJvZ3JhbSB0byB3b3JrIHByb3Blcmx5LgorIAorK0BpdGVtIC1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BvcGluZGV4IFduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUl9IG9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtCisrZGlyZWN0b3JpZXMgc3VjaCBhcyBAZmlsZXsvdXNyL2luY2x1ZGV9IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiAgVGhpcworK29wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoCisrZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQKKytzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCisrCisgQGl0ZW0gLVdmbG9hdC1lcXVhbAorIEBvcGluZGV4IFdmbG9hdC1lcXVhbAorIEBvcGluZGV4IFduby1mbG9hdC1lcXVhbAorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggYzQ4MTc4Zi4uZjYzZDUzZCAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTAyOSw2ICsxMDI5LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLworICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAorICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKKyAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JVN9fSBcCisrICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCisrICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCisgICAgICV7c3RhdGljfG5vLXBpZTp9ICV7TCp9ICUobWZ3cmFwKSAlKGxpbmtfbGliZ2NjKSAiIFwKKyAgICAgVlRBQkxFX1ZFUklGSUNBVElPTl9TUEVDICIgIiBTQU5JVElaRVJfRUFSTFlfU1BFQyAiICVvICIgQ0hLUF9TUEVDICIgXAorICAgICAle2ZvcGVuYWNjfGZvcGVubXB8JTpndCgle2Z0cmVlLXBhcmFsbGVsaXplLWxvb3BzPSo6JSp9IDEpOlwKK2RpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYworaW5kZXggOThmZTVlYzlhYjMuLmY5MGU3NGRiZDczIDEwMDY0NAorLS0tIGEvZ2NjL2luY3BhdGguYworKysrIGIvZ2NjL2luY3BhdGguYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSAiaW50bC5oIgorICNpbmNsdWRlICJpbmNwYXRoLmgiCisgI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKKysjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCisgCisgLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCisgICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLworQEAgLTM4Miw2ICszODMsMjQgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKKyAJfQorICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOworICAgICB9CisrCisrI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQorKyAgICB7CisrICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOworKworKyAgICAgICBmb3IgKHAgPSBoZWFkc1tRVU9URV07IHA7IHAgPSBwLT5uZXh0KQorKyAgICAgICAgIHsKKysgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkpCisrICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAorKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAorKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOworKyAgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEwLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMC1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUwNmFhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMC1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBlNzRlZjg0YWQ2MDliM2I2YTVjMzdkMjA3ZmZjM2M2ZTcwZDFmMDI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDA6MzQgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC80N10gZ2NjLXBvaXNvbi1kaXItZXh0ZW5kCisKK0FkZCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAoremVja2Utbm8taG9zdC1pbmNsdWRlcy5wYXRjaCBwYXRjaC4gIFRoZSBvcmlnaW5hbCBwYXRjaCBjaGVja2VkIGZvcgorL3Vzci9pbmNsdWRlLCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGFuZCB0aGVuIHRyaWdnZXJlZCBhIGZhaWx1cmUgYW5kCithYm9ydGVkLgorCitJbnN0ZWFkLCB3ZSBhZGQgdGhlIHR3byBtaXNzaW5nIGl0ZW1zIHRvIHRoZSBjdXJyZW50IHNjYW4uICBJZiB0aGUgdXNlcgord2FudHMgdGhpcyB0byBiZSBhIGZhaWx1cmUsIHRoZXkgY2FuIGFkZCAiLVdlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIi4KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvaW5jcGF0aC5jIHwgNCArKystCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKK2luZGV4IGY5MGU3NGRiZDczLi5jNTgzZWU1MDYxZCAxMDA2NDQKKy0tLSBhL2djYy9pbmNwYXRoLmMKKysrKyBiL2djYy9pbmNwYXRoLmMKK0BAIC0zOTMsNyArMzkzLDkgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKKyAgICAgICAgICB7CisgICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCisgICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCistICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3N3L2luY2x1ZGUiLCAxMSkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvb3B0L2luY2x1ZGUiLCAxMikpKQorICAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKKyAgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzlmZjFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDExLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK0Zyb20gYTQxZDNhNTNhNGUzMTNjMjA4MDIzMzBkNmI1Yzc1MzU4YTRlZDg4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjA4OjMxICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvNDddIGdjYy00LjMuMzogU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVAorCitCZWZvcmUgY29tbWl0dGluZywgSSBub3RpY2VkIHRoYXQgUFIvMzIxNjEgd2FzIG1hcmtlZCBhcyBhIGR1cCBvZiBQUi8zMjAwOSwgYnV0IG15IHByZXZpb3VzIHBhdGNoIGRpZCBub3QgZml4IGl0LgorCitUaGlzIGFsdGVybmF0aXZlIHBhdGNoIGlzIGJldHRlciBiZWNhdXNlIGl0IGxldHMgeW91IGp1c3QgdXNlIENGTEFHU19GT1JfVEFSR0VUIHRvIHNldCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgZm9yIGxpYmdjYy4gU2luY2UgYm9vdHN0cmFwcGVkIHRhcmdldCBsaWJyYXJpZXMgYXJlIG5ldmVyIGNvbXBpbGVkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBkaWZmZXJlbnQgZmxhZ3MgZm9yIHN0YWdlMSBhbmQgbGF0ZXIgc3RhZ2VzLiBBbmQgaXQgYWxzbyBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlIHRoYW4gQ0ZMQUdTX0ZPUl9UQVJHRVQuCisKK090aGVyIGNoYW5nZXMgSSBoYWQgdG8gZG8gaW5jbHVkZToKKworLSBtb3ZpbmcgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgQ0ZMQUdTX0ZPUl9UQVJHRVQgZnJvbSBNYWtlZmlsZS5hbSB0byBjb25maWd1cmUuYWMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBCT09UX0NGTEFHUyBhcmUgc3Vic3RpdHV0ZWQgaW50byBDRkxBR1NfRk9SX1RBUkdFVCAod2hpY2ggaXMgIi1PMiAtZyAkKENGTEFHUykiKSB2aWEgJChDRkxBR1MpLiBJdCBpcyBhbHNvIGNsZWFuZXIgdGhpcyB3YXkgdGhvdWdoLgorCistIHBhc3NpbmcgdGhlIHJpZ2h0IENGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBhcyBleHBvcnRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKworSSBhbHNvIHN0b3BwZWQgcGFzc2luZyBMSUJDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgc2luY2UgdGhleSBhcmUgdW51c2VkIGluIHRoZSB3aG9sZSBzcmMgdHJlZS4gQW5kIEkgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhcyBILVAgcmVtaW5kZWQgbWUgdG8gZG8uCisKK0Jvb3RzdHJhcHBlZC9yZWd0ZXN0ZWQgaTY4Ni1wYy1saW51eC1nbnUsIHdpbGwgY29tbWl0IHRvIDQuNCBzaG9ydGx5LiBPayBmb3IgNC4zPworCitTaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBjb25maWd1cmUgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGI0NzYwOTUyMDg1Li43MmE4YmE5NGM0ZSAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjczNiw2ICs2NzM2LDM4IEBAIGZpCisgCisgCisgCisrIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKKysjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUworKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCisrIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKKysjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKKysjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgorK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgorKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUworKyAgY2FzZSAiICRDRkxBR1MgIiBpbgorKyAgICAqIiAtTzIgIiopIDs7CisrICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKKysgIGVzYWMKKysgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKysgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7CisrICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OworKyAgZXNhYworK2ZpCisrCisrCisraWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KKysgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCisrICBjYXNlICIgJENYWEZMQUdTICIgaW4KKysgICAgKiIgLU8yICIqKSA7OworKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OworKyAgZXNhYworKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCisrICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OworKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7CisrICBlc2FjCisrZmkKKysKKysKKyAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKKyAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgorIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEyLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEyLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYjM5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTItNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSAzYWY5ZmJiZDE0ZTgzMjQyYWMyYWNiNTRiYmI0YmI3MjY4NDVmZDM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMi80N10gNjQtYml0IG11bHRpbGliIGhhY2suCisKK0dDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5CitsYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCitjb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgorCitUaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYworYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50CitkaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKK2tub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKK3BlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCisKK1RoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Cit0aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKK2FuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCitkb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCithbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KKworUlAgMTUvOC8xMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogRWx2aXMgRG93c29uIDxlbHZpcy5kb3dzb25AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICB8ICA2ICsrLS0tLQorIGdjYy9jb25maWcvbWlwcy90LWxpbnV4NjQgICB8IDEwICsrKy0tLS0tLS0KKyBnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgfCAgNSArKy0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitpbmRleCBlNDIyYzQ0MmRhZS4uY2M4ODVlMjQ0NTcgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitAQCAtMzIsNyArMzIsNSBAQAorICMKKyBjb21tYT0sCisgTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCistTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKKytNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitpbmRleCAxMDBmOWRhNWUxNC4uNjAxY2RmMDhkMDUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitAQCAtMTcsMTAgKzE3LDYgQEAKKyAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0CistTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKKy1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKKy1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAorLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCistCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAorLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCisrTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAoraW5kZXggMjgzMGVkMGQ4NjEuLmQwNTdmYWNkMmZkIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKK0BAIC0yNiwxMCArMjYsOSBAQAorICMgTVVMVElMSUJfT1NESVJOQU1FUyBhY2NvcmRpbmcgdG8gd2hhdCBpcyBmb3VuZCBvbiB0aGUgdGFyZ2V0LgorIAorIE1VTFRJTElCX09QVElPTlMgICAgOj0gbTY0L20zMgorLU1VTFRJTElCX0RJUk5BTUVTICAgOj0gNjQgMzIKKytNVUxUSUxJQl9ESVJOQU1FUyAgIDo9IC4gLgorIE1VTFRJTElCX0VYVFJBX09QVFMgOj0gCistTVVMVElMSUJfT1NESVJOQU1FUyA6PSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjNjQtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGMtbGludXgtZ251KQorK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKKyAKKyByczYwMDAtbGludXgubzogJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2MDAwLWxpbnV4LmMKKyAJJChDT01QSUxFKSAkPAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEzLW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTMtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDM5YmY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEzLW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKQEAgLTAsMCArMSwxMjUgQEAKK0Zyb20gMjZhNThkMDU4NDQyNzQ5MTVkMDExZWRiZjkzMzBjNjE1MTY4N2IyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEyOjU2ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTMvNDddIG9wdGlvbmFsIGxpYnN0ZGMKKworZ2NjLXJ1bnRpbWUgYnVpbGRzIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5IGZyb20gZ2NjLWNyb3NzLSouIEl0cyBjb25maWd1cmUgdGVzdHMgdXNpbmcgZysrCit3aWxsIG5vdCBydW4gY29ycmVjdGx5IHNpbmNlIGJ5IGRlZmF1bHQgdGhlIGxpbmtlciB3aWxsIHRyeSB0byBsaW5rIGFnYWluc3QgbGlic3RkYysrCit3aGljaCBzaG91bGRuJ3QgZXhpc3QgeWV0LiBXZSBuZWVkIGFuIG9wdGlvbiB0byBkaXNhYmxlIC1sc3RkYysrCitvcHRpb24gd2hpbHN0IGxlYXZpbmcgLWxjLCAtbGdjYyBhbmQgb3RoZXIgYXV0b21hdGljIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGFkZGVkIGJ5IGdjYworZHJpdmVyLiBUaGlzIHBhdGNoIGFkZHMgc3VjaCBhbiBvcHRpb24gd2hpY2ggb25seSBkaXNhYmxlcyB0aGUgLWxzdGRjKysuCisKK0EgInN0YW5kYXJkIiBnY2MgYnVpbGQgdXNlcyB4Z2NjIGFuZCBoZW5jZSBhdm9pZHMgdGhpcy4gV2Ugc2hvdWxkIGFzayB1cHN0cmVhbSBob3cgdG8KK2RvIHRoaXMgb2ZmaWNpYWxseSwgdGhlIGxpa2VseSBhbnN3ZXIgaXMgZG9uJ3QgYnVpbGQgbGlic3RkYysrIHNlcGFyYXRlbHkuCisKK1JQIDI5LzYvMTAKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGdjYy9jLWZhbWlseS9jLm9wdCAgfCAgNCArKysrCisgZ2NjL2NwL2crK3NwZWMuYyAgICB8ICAxICsKKyBnY2MvZG9jL2ludm9rZS50ZXhpIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgIDEgKworIDQgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitpbmRleCA5YWQyZjZlMWZjYy4uYzRlZjc3OTYyODIgMTAwNjQ0CistLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKKysrKyBiL2djYy9jLWZhbWlseS9jLm9wdAorQEAgLTE4NDgsNiArMTg0OCwxMCBAQCBub3N0ZGluYysrCisgQysrIE9iakMrKworIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKy4KKyAKKytub3N0ZGxpYisrCisrRHJpdmVyCisrRG8gbm90IGxpbmsgc3RhbmRhcmQgQysrIHJ1bnRpbWUgbGlicmFyeQorKworIG8KKyBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgU2VwYXJhdGUKKyA7IERvY3VtZW50ZWQgaW4gY29tbW9uLm9wdAorZGlmZiAtLWdpdCBhL2djYy9jcC9nKytzcGVjLmMgYi9nY2MvY3AvZysrc3BlYy5jCitpbmRleCBmZmNjODdjNzljOS4uMjhkOGE5Y2Y1MzAgMTAwNjQ0CistLS0gYS9nY2MvY3AvZysrc3BlYy5jCisrKysgYi9nY2MvY3AvZysrc3BlYy5jCitAQCAtMTM3LDYgKzEzNyw3IEBAIGxhbmdfc3BlY2lmaWNfZHJpdmVyIChzdHJ1Y3QgY2xfZGVjb2RlZF9vcHRpb24gKippbl9kZWNvZGVkX29wdGlvbnMsCisgICAgICAgc3dpdGNoIChkZWNvZGVkX29wdGlvbnNbaV0ub3B0X2luZGV4KQorIAl7CisgCWNhc2UgT1BUX25vc3RkbGliOgorKwljYXNlIE9QVF9ub3N0ZGxpYl9fOgorIAljYXNlIE9QVF9ub2RlZmF1bHRsaWJzOgorIAkgIGxpYnJhcnkgPSAtMTsKKyAJICBicmVhazsKK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQoraW5kZXggMDYwY2Q3MTY5YzYuLjhlMmFkYzI1NjQ0IDEwMDY0NAorLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQorQEAgLTIxMSw2ICsyMTEsOSBAQCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgorIC1mbm8td2VhayAgLW5vc3RkaW5jKysgQGdvbAorIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiBAZ29sCisgLWZ2aXNpYmlsaXR5LW1zLWNvbXBhdCBAZ29sCisrLWZ2dGFibGUtdmVyaWZ5PUBye1t9c3RkQHJ7fH1wcmVpbml0QHJ7fH1ub25lQHJ7XX0gQGdvbAorKy1mdnR2LWNvdW50cyAtZnZ0di1kZWJ1ZyBAZ29sCisrLW5vc3RkbGliKysgQGdvbAorIC1mZXh0LW51bWVyaWMtbGl0ZXJhbHMgQGdvbAorIC1XYWJpPUB2YXJ7bn0gIC1XYWJpLXRhZyAgLVdjb252ZXJzaW9uLW51bGwgIC1XY3Rvci1kdG9yLXByaXZhY3kgQGdvbAorIC1XZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3IgIC1XbGl0ZXJhbC1zdWZmaXggIC1XbXVsdGlwbGUtaW5oZXJpdGFuY2UgQGdvbAorQEAgLTQ5Niw3ICs0OTksNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLXMgIC1zdGF0aWMgIC1zdGF0aWMtbGliZ2NjICAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCisgLXN0YXRpYy1saWJhc2FuICAtc3RhdGljLWxpYnRzYW4gIC1zdGF0aWMtbGlibHNhbiAgLXN0YXRpYy1saWJ1YnNhbiBAZ29sCisgLXN0YXRpYy1saWJtcHggIC1zdGF0aWMtbGlibXB4d3JhcHBlcnMgQGdvbAorLS1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAorKy1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAorIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKKyAtdSBAdmFye3N5bWJvbH0gIC16IEB2YXJ7a2V5d29yZH19CisgCitAQCAtMTE2MDYsNiArMTE2MDksMzMgQEAgbGlicmFyeSBzdWJyb3V0aW5lcy4KKyBjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKKyBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKKyAKKytAaXRlbSAtbm9zdGRsaWIrKworK0BvcGluZGV4IG5vc3RkbGliKysKKytEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KKytPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KKysKKytAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KKytAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCisrQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQorK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9CisrQGNpbmRleCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCisrQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9CisrT25lIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMgYnlwYXNzZWQgYnkgQG9wdGlvbnstbm9zdGRsaWJ9IGFuZAorK0BvcHRpb257LW5vZGVmYXVsdGxpYnN9IGlzIEBmaWxle2xpYmdjYy5hfSwgYSBsaWJyYXJ5IG9mIGludGVybmFsIHN1YnJvdXRpbmVzCisrd2hpY2ggR0NDIHVzZXMgdG8gb3ZlcmNvbWUgc2hvcnRjb21pbmdzIG9mIHBhcnRpY3VsYXIgbWFjaGluZXMsIG9yIHNwZWNpYWwKKytuZWVkcyBmb3Igc29tZSBsYW5ndWFnZXMuCisrKEB4cmVme0ludGVyZmFjZSwsSW50ZXJmYWNpbmcgdG8gR0NDIE91dHB1dCxnY2NpbnQsR05VIENvbXBpbGVyCisrQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LAorK2ZvciBtb3JlIGRpc2N1c3Npb24gb2YgQGZpbGV7bGliZ2NjLmF9LikKKytJbiBtb3N0IGNhc2VzLCB5b3UgbmVlZCBAZmlsZXtsaWJnY2MuYX0gZXZlbiB3aGVuIHlvdSB3YW50IHRvIGF2b2lkCisrb3RoZXIgc3RhbmRhcmQgbGlicmFyaWVzLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4geW91IHNwZWNpZnkgQG9wdGlvbnstbm9zdGRsaWJ9Cisrb3IgQG9wdGlvbnstbm9kZWZhdWx0bGlic30geW91IHNob3VsZCB1c3VhbGx5IHNwZWNpZnkgQG9wdGlvbnstbGdjY30gYXMgd2VsbC4KKytUaGlzIGVuc3VyZXMgdGhhdCB5b3UgaGF2ZSBubyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgR0NDCisrbGlicmFyeSBzdWJyb3V0aW5lcy4KKysoQW4gZXhhbXBsZSBvZiBzdWNoIGFuIGludGVybmFsIHN1YnJvdXRpbmUgaXMgQGNvZGV7X19tYWlufSwgdXNlZCB0byBlbnN1cmUgQysrCisrY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCisrR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCisrCisgQGl0ZW0gLXBpZQorIEBvcGluZGV4IHBpZQorIFByb2R1Y2UgYSBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlIG9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IGl0LgorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggNjMxNWFhMGRkMTYuLmE1ZmFmYmU1MTA3IDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMDQ2LDYgKzEwNDYsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAorICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKKyAgICAgJXshbm9zdGRsaWI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX1cCisrICAgICV7IW5vc3RkbGliKys6fVwKKyAgICAgJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVFfX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKKyAjZW5kaWYKKyAKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNC1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTQtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MmI1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTQtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gNzE2ZGU1ZGI2ODU5ZmQxZWEyMTA3OGM5NGE0MWZhYzdhODg1YjdlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE0OjIwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTQvNDddIGdjYzogZGlzYWJsZSBNQVNLX1JFTEFYX1BJQ19DQUxMUyBiaXQKKworVGhlIG5ldyBmZWF0dXJlIGFkZGVkIGFmdGVyIDQuMy4zCisiaHR0cDovL3d3dy5wdWJicy5uZXQvMjAwOTA5L2djYy85NDA0OC1wYXRjaC1hZGQtc3VwcG9ydC1mb3Itcm1pcHNqYWxyLmh0bWwiCit3aWxsIGNhdXNlIGNjMXBsdXMgZWF0IHVwIGFsbCB0aGUgc3lzdGVtIG1lbW9yeSB3aGVuIGJ1aWxkIHdlYmtpdC1ndGsuCitUaGUgZnVuY3Rpb24gbWlwc19nZXRfcGljX2NhbGxfc3ltYm9sIGtlZXBzIG9uIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgaXRzZWxmLgorRGlzYWJsZSB0aGlzIGZlYXR1cmUgdG8gd2FsayBhc2lkZSB0aGUgYnVnLgorCitTaWduZWQtb2ZmLWJ5OiBEb25neGlhbyBYdSA8ZG9uZ3hpYW8ueHVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDcgLS0tLS0tLQorIGdjYy9jb25maWd1cmUuYWMgfCA3IC0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDQ4OThmMDRmYTZiLi42NDBlNDY0MzgwNSAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yNzMwMywxMyArMjczMDMsNiBAQCAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBmb3IgZXhwbGljaXQgSkFMUiByZWxvY2F0aW9uLi4uICIgPiY2OworICAgICAgICAgcm0gLWYgY29uZnRlc3QuKgorICAgICAgIGZpCisgICAgIGZpCistICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jID0geWVzOyB0aGVuCistICAgICAgaWYgdGVzdCB4JHRhcmdldF9jcHVfZGVmYXVsdCA9IHg7IHRoZW4KKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1JFTEFYX1BJQ19DQUxMUworLSAgICAgIGVsc2UKKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD0iKCR0YXJnZXRfY3B1X2RlZmF1bHQpfE1BU0tfUkVMQVhfUElDX0NBTExTIgorLSAgICAgIGZpCistICAgIGZpCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNQorICRhc19lY2hvICIkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCA5ZGMxZGM3ZmM5Ni4uOWEyZGFlNTViYTIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNDY0MSwxMyArNDY0MSw2IEBAIHg6CisgICAgICAgICBybSAtZiBjb25mdGVzdC4qCisgICAgICAgZmkKKyAgICAgZmkKKy0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KKy0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgorLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCistICAgICAgZWxzZQorLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCistICAgICAgZmkKKy0gICAgZmkKKyAgICAgQUNfTVNHX1JFU1VMVCgkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MpCisgCisgICAgIEFDX0NBQ0hFX0NIRUNLKFtsaW5rZXIgZm9yIC5laF9mcmFtZSBwZXJzb25hbGl0eSByZWxheGF0aW9uXSwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE1LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2Mjk0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gMDRhN2E2NzIzMDFiYjA3Y2FlYTZhN2NhZDgzNzhmNjNmMWZlMzIwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvNDddIENPTExFQ1RfR0NDX09QVElPTlMKKworVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bworaW52b2tlIGNvbGxlY3QyLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBhNWZhZmJlNTEwNy4uMDU4OTZlMTk5MjYgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTQ2NTQsNiArNDY1NCwxNSBAQCBzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyAodm9pZCkKKyAJCXNpemVvZiAoIkNPTExFQ1RfR0NDX09QVElPTlM9IikgLSAxKTsKKyAKKyAgIGZpcnN0X3RpbWUgPSBUUlVFOworKyNpZmRlZiBIQVZFX0xEX1NZU1JPT1QKKysgIGlmICh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCAmJiB0YXJnZXRfc3lzdGVtX3Jvb3QpCisrICAgIHsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInLS1zeXNyb290PSIsIHNpemVvZigiJy0tc3lzcm9vdD0iKS0xKTsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssIHRhcmdldF9zeXN0ZW1fcm9vdCxzdHJsZW4odGFyZ2V0X3N5c3RlbV9yb290KSk7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJyIsIDEpOworKyAgICAgIGZpcnN0X3RpbWUgPSBGQUxTRTsKKysgICAgfQorKyNlbmRpZgorICAgZm9yIChpID0gMDsgKGludCkgaSA8IG5fc3dpdGNoZXM7IGkrKykKKyAgICAgeworICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzOworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE2LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE2LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OTEyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTYtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSA0NzA3MWNiZDRmMTNmZjVhNDk3NGY3MWYzNTlhMDRhZmNmYjEyNWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTc6MjUgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi80N10gVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbgorICR7Qn0KKworVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbiAke0J9LCBzbyB0aGF0Cit0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitXaGlsZSBjb21waWxpbmcgZ2NjLWNyb3Nzc2RrLWluaXRpYWwteDg2XzY0IG9uIHNvbWUgaG9zdCwgdGhlcmUgaXMKK29jY2FzaW9uYWxseSBmYWlsdXJlIHRoYXQgdGVzdCB0aGUgZXhpc3RhbmNlIG9mIGRlZmF1bHQuaCBkb2Vzbid0Cit3b3JrLCB0aGUgcmVhc29uIGlzIHRtX2luY2x1ZGVfbGlzdD0nKiogZGVmYXVsdHMuaCcgcmF0aGVyIHRoYW4KK3RtX2luY2x1ZGVfbGlzdD0nKiogLi9kZWZhdWx0cy5oJworCitTbyB3ZSBhZGQgdGhlIHRlc3QgY29uZGl0aW9uIGZvciB0aGlzIHNpdHVhdGlvbi4KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDQgKystLQorIGdjYy9jb25maWd1cmUuYWMgfCA0ICsrLS0KKyBnY2MvbWtjb25maWcuc2ggIHwgNCArKy0tCisgNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDI0MTE2NzFjZWEzLi43YjU5MGM5YmJkMyAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtNTMyLDcgKzUzMiw3IEBAIFRBUkdFVF9TWVNURU1fUk9PVCA9IEBUQVJHRVRfU1lTVEVNX1JPT1RACisgVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSA9IEBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FQAorIAorIHhtYWtlX2ZpbGU9QHhtYWtlX2ZpbGVACistdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAKKyt0bWFrZV9maWxlPUB0bWFrZV9maWxlQCAuL3Qtb2UKKyBUTV9FTkRJQU5fQ09ORklHPUBUTV9FTkRJQU5fQ09ORklHQAorIFRNX01VTFRJTElCX0NPTkZJRz1AVE1fTVVMVElMSUJfQ09ORklHQAorIFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHPUBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJR0AKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggNjQwZTQ2NDM4MDUuLmI1YWMxNTUyNTQxIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTEyMTUwLDggKzEyMTUwLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorICAgICAgICA7OworICAgICBkZWZhdWx0cy5oICkKKy0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKKy0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCisgICAgICAgIDs7CisgICAgICogKQorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggOWEyZGFlNTViYTIuLmNiMTQ3OWQxZWY0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE5MjIsOCArMTkyMiw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbworICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKyAgICAgICAgOzsKKyAgICAgZGVmYXVsdHMuaCApCistICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCistICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgorICAgICAgICA7OworICAgICAqICkKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL21rY29uZmlnLnNoIGIvZ2NjL21rY29uZmlnLnNoCitpbmRleCA5ZmM3YjVjYTczNC4uMDRhYmVjZmU2NDggMTAwNjQ0CistLS0gYS9nY2MvbWtjb25maWcuc2gKKysrKyBiL2djYy9ta2NvbmZpZy5zaAorQEAgLTc3LDcgKzc3LDcgQEAgaWYgWyAtbiAiJEhFQURFUlMiIF07IHRoZW4KKyAgICAgaWYgWyAkIyAtZ2UgMSBdOyB0aGVuCisgCWVjaG8gJyNpZmRlZiBJTl9HQ0MnID4+ICR7b3V0cHV0fVQKKyAJZm9yIGZpbGUgaW4gIiRAIjsgZG8KKy0JICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCisrCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCIuL2RlZmF1bHRzLmgiIC1vIHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgorIAkJcG9zdHBvbmVfZGVmYXVsdHNfaD0ieWVzIgorIAkgICAgZWxzZQorIAkJZWNobyAiIyBpbmNsdWRlIFwiJGZpbGVcIiIgPj4gJHtvdXRwdXR9VAorQEAgLTEwOSw3ICsxMDksNyBAQCBlc2FjCisgCisgIyBJZiB3ZSBwb3N0cG9uZWQgaW5jbHVkaW5nIGRlZmF1bHRzLmgsIGFkZCB0aGUgI2luY2x1ZGUgbm93LgorIGlmIHRlc3QgeCIkcG9zdHBvbmVfZGVmYXVsdHNfaCIgPSB4InllcyI7IHRoZW4KKy0gICAgZWNobyAiIyBpbmNsdWRlIFwiZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCisrICAgIGVjaG8gIiMgaW5jbHVkZSBcIi4vZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCisgZmkKKyAKKyAjIEFkZCBtdWx0aXBsZSBpbmNsdXNpb24gcHJvdGVjdGlvbiBndWFyZCwgcGFydCB0d28uCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTctZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTctZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI4MzBjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNy1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDRmYzM1YTJiYjc2NjZhN2RlMzU1NjhlYjVkNDdmMGNlNmFjZWJlNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAorU3ViamVjdDogW1BBVENIIDE3LzQ3XSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KKworKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKK3VzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKK2RpcmVjdG9yeS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKK2luZGV4IDgxMjM4ZmNiNzljLi43ZGVkN2FiZDQ1NiAxMDA3NTUKKy0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQorKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCitAQCAtMTI3OTIsNyArMTI3OTIsNyBAQCBlc2FjCisgCisgIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKKyAjQUNfUFJPR19GQyhnZm9ydHJhbikKKy1GQz0iJEdGT1JUUkFOIgorKyNGQz0iJEdGT1JUUkFOIgorIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQorIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCitkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCitpbmRleCAzN2IxMmQyOTk4Zi4uNjNhNDE2NmVmNjIgMTAwNjQ0CistLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKKysrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworQEAgLTI0Myw3ICsyNDMsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQorIAorICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5CisgI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCistRkM9IiRHRk9SVFJBTiIKKysjRkM9IiRHRk9SVFJBTiIKKyBBQ19QUk9HX0ZDKGdmb3J0cmFuKQorIAorICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTgtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTgtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU1OTA3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxOC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDFjOGEzMzI0NjljYTRiZmVmYjEwZGY3MDcyMGUwZGM4M2ZmOWE3NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMjowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDE4LzQ3XSBjcHA6IGhvbm9yIHN5c3Jvb3QuCisKK0N1cnJlbnRseSwgaWYgdGhlIGdjYyB0b29sY2hhaW4gaXMgcmVsb2NhdGVkIGFuZCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUsIHRoZW4geW91IHRyeSBhbmQgY29tcGlsZQorcHJlcHJvY2Vzc2VkIHNvdXJjZSAoLmkgb3IgLmlpIGZpbGVzKSwgdGhlIGNvbXBpbGVyIHdpbGwgdHJ5IGFuZCBhY2Nlc3MgdGhlIGJ1aWx0aW4gc3lzcm9vdCBsb2NhdGlvbgorcmF0aGVyIHRoYW4gdGhlIC0tc3lzcm9vdCBvcHRpb24gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kbGluZS4gSWYgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IGlzCitwZXJtaXNzaW9uIGRlbmllZCAodW5yZWFkYWJsZSksIGdjYyB3aWxsIGVycm9yLgorCitUaGlzIGhhcHBlbnMgd2hlbiBjY2FjaGUgaXMgaW4gdXNlIGR1ZSB0byB0aGUgZmFjdCBpdCB1c2VzIHByZXByb2Nlc3NlZCBzb3VyY2UgZmlsZXMuCisKK1RoZSBmaXggYmVsb3cgYWRkcyAlSSB0byB0aGUgY3BwLW91dHB1dCBzcGVjIG1hY3JvIHNvIHRoZSBkZWZhdWx0IHN1YnN0aXR1dGlvbnMgZm9yIC1pcHJlZml4LAorLWlzeXN0ZW0sIC1pc3lzcm9vdCBoYXBwZW4gYW5kIHRoZSBjb3JyZWN0IHN5c3Jvb3QgaXMgdXNlZC4KKworW1lPQ1RPICMyMDc0XQorCitSUCAyMDEyLzA0LzEzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NwL2xhbmctc3BlY3MuaCB8IDIgKy0KKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbmctc3BlY3MuaCBiL2djYy9jcC9sYW5nLXNwZWNzLmgKK2luZGV4IDZiMzgzZTFkODZkLi5jN2M3ZDZhNTZlYyAxMDA2NDQKKy0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKKysrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKK0BAIC02NCw1ICs2NCw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKKyAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKKyAgICAiJXshTToleyFNTToleyFFOlwKKy0gICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMlwKKysgICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMlwKKyAgICAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDA1ODk2ZTE5OTI2Li5jNzNkNDAyMzk4NyAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTM1MSw3ICsxMzUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KKyAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCisgICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCisgICB7IkBjcHAtb3V0cHV0IiwKKy0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCisgICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKKyAgIHsiQGFzc2VtYmxlciIsCisgICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTktTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxOS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MmE0MDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTktTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDBhM2IzY2M0NWVhN2JhODNiNDZkZjc0NjRiNDFjMzc3ZTM5NjZkODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAorU3ViamVjdDogW1BBVENIIDE5LzQ3XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQorCitNSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAorc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQorLS0tCisgZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKK2luZGV4IGI4YmI0ZDY1ODI1Li41ZTQ1ZjRiNTE5OSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuZ2NjCisrKysgYi9nY2MvY29uZmlnLmdjYworQEAgLTIwODQsMjkgKzIwODQsMjkgQEAgbWlwcyotKi1saW51eCopCQkJCSMgTGludXggTUlQUywgZWl0aGVyIGVuZGlhbi4KKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzMzIKKyAJCQk7OworIAkJbWlwczY0ZWwtc3QtbGludXgtZ251KQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gbWlwcy9zdC5oIgorIAkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gbWlwcy90LXN0IgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjRvY3Rlb24qLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2RlZmluZXM9IiR7dG1fZGVmaW5lc30gTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQ9XFxcIm9jdGVvblxcXCIiCisgCQkJdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfU09GVF9GTE9BVF9BQkkKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwc2lzYTY0cjYqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHI2CisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHNpc2E2NHIyKi0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyMgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjQqLSotbGludXgqIHwgbWlwc2lzYTY0Ki0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAllc2FjCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjAtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMC1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlN2I0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjAtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApAQCAtMCwwICsxLDIzNCBAQAorRnJvbSBkNmM5ODNiNjg1ZWUwM2U5Y2YyMTE4OTEwOGQzMWVkOWY3NjBmZjNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyMC80N10gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKKyByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgorCitUaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgorcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycworVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYworQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKK1NILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCisKK1JlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgNCArKy0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICB8ICA0ICsrLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCisgZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCisgZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNiArKysrKystLS0tLS0tLS0tCisgZ2NjL2NvbmZpZy9zaC9saW51eC5oICAgICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggICB8ICA0ICsrLS0KKyAxMSBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitpbmRleCAyYzM5ZmJlNjAxYy4uNmQ4OGUyMWFiZTIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCisrKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitAQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAorIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisgI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQworICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgorICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCBhMDhjZmIzNDM3Ny4uZmJhYzlhOWQ5OTQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorQEAgLTYyLDggKzYyLDggQEAKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLworIAorICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAoraW5kZXggM2Q2MjM2N2FlNjguLmU4YTE2MTkxODQ5IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCitAQCAtNjAsNyArNjAsNyBAQAorIAorICNkZWZpbmUgTElCR0NDX1NQRUMgIiV7bWZsb2F0LWFiaT1zb2Z0KjotbGZsb2F0fSAtbGdjYyIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjZGVmaW5lIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgICIle2gqfSBcCisgICAgJXtzdGF0aWM6LUJzdGF0aWN9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCitpbmRleCA1OTEzMjEyNGQ2Yi4uMzM2ZDE1ODYyOWMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK0BAIC0yMCw3ICsyMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAoraW5kZXggZTY1YzQwNGZmOTEuLmMzNGRlZDk4NDgxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKK2luZGV4IGIzYTllODVlNzdmLi4yZTY4M2QwYzQzMCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCitAQCAtODEsMTAgKzgxLDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCisgICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAoraW5kZXggNDQxMzJiOGU0NGQuLjgwNTA1YWQ5ZjQ4IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitAQCAtMjIsMjAgKzIyLDIwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYi9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliNjQvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWI2NC9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliMzIvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorIAorICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliL2xkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkNjQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wfSIKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYjMyL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAoraW5kZXggNzFlMzViNzA5YWQuLjNiMDBlYzBmY2YwIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK0BAIC00MTIsMTYgKzQxMiwxMSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworICN1bmRlZglMSU5LX09TX0RFRkFVTFRfU1BFQworICNkZWZpbmUgTElOS19PU19ERUZBVUxUX1NQRUMgIiUobGlua19vc19saW51eCkiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIlKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliL2xkLnNvLjEiCistCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC5zby4xIgorICNpZmRlZiBMSU5VWDY0X0RFRkFVTFRfQUJJX0VMRnYyCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0iJXttYWJpPWVsZnYxOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjE7IiBcCistIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yfSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MToiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMn0iCisgI2Vsc2UKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSIle21hYmk9ZWxmdjI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMjsiIFwKKy0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjF9IgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCitAQCAtNDI5LDggKzQyNCw5IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7CisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgXAorICAgIi9saWIvbGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCisgCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKKysKKyAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCisgI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgXAorICAgIiV7bWdsaWJjOiIgRyAiOzole21tdXNsOiIgTSAiOzoiIFUgIn19IgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc2gvbGludXguaCBiL2djYy9jb25maWcvc2gvbGludXguaAoraW5kZXggYzMwMDgzNDIzZjIuLjE5NmI4MjcyNWY4IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKK0BAIC02NCw3ICs2NCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAiL2xpYi9sZC1tdXNsLXNoIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgTVVTTF9EWU5BTUlDX0xJTktFUl9GUCBcCisgICAiJXttZmRwaWM6LWZkcGljfS5zby4xIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWAorICNkZWZpbmUgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVggIiV7bWZkcGljOl9mZDs6X2xpbnV4fSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKK2luZGV4IGNlMDg0NjU2ZmNhLi5iZWQ2MzAwY2IyYSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCitAQCAtODMsNyArODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOworICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCisgICAgZG9uZS4gICovCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI3VuZGVmICBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKK2luZGV4IDU3M2NlOGE5YTRjLi42NzQ5ZjZiNWQ5YyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAorQEAgLTg0LDggKzg0LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZworICAgIGRvbmUuICAqLworIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjaWZkZWYgU1BBUkNfQklfQVJDSAorIAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDIxLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU1NjIxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA4MGMyNDI0N2ZlZDUyYzEyNjk3OTEwODgwOTBiYzBmYTg1MjgwOTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjY6MzcgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyMS80N10gZ2NjOiBGaXggYXJndW1lbnQgbGlzdCB0b28gbG9uZyBlcnJvci4KKworVGhlcmUgd291bGQgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gdGhlCitidWlsZCBkaXJlY3RvcnkgaXMgbG9uZ2VyIHRoYW4gMjAwLCB0aGlzIGlzIGNhdXNlZCBieToKKworaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YAorCitUaGUgUExVR0lOX0hFQURFUlMgaXMgdG9vIGxvbmcgYmVmb3JlIHNvcnQsIHNvIHRoZSAiZWNobyIgY2FuJ3QgaGFuZGxlCitpdCwgdXNlIHRoZSAkKHNvcnQgbGlzdCkgb2YgR05VIG1ha2Ugd2hpY2ggY2FuIGhhbmRsZSB0aGUgdG9vIGxvbmcgbGlzdAord291bGQgZml4IHRoZSBwcm9ibGVtLCB0aGUgaGVhZGVyIHdvdWxkIGJlIHNob3J0IGVub3VnaCBhZnRlciBzb3J0ZWQuCitUaGUgInRyICcgJyAnXDAxMiciIHdhcyB1c2VkIGZvciB0cmFuc2xhdGluZyB0aGUgc3BhY2UgdG8gIlxuIiwgdGhlCiskKHNvcnQgbGlzdCkgZG9lc24ndCBuZWVkIHRoaXMuCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDdiNTkwYzliYmQzLi4yM2NjYTdmMGQ1YSAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtMzQ1OSw3ICszNDU5LDcgQEAgaW5zdGFsbC1wbHVnaW46IGluc3RhbGxkaXJzIGxhbmcuaW5zdGFsbC1wbHVnaW4gcy1oZWFkZXItdmFycyBpbnN0YWxsLWdlbmd0eXBlCisgIyBXZSBrZWVwIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBmaWxlcyBpbiBjb25maWcgb3IgYy1mYW1pbHkgYW5kIC5kZWYKKyAjIGZpbGVzLiBBbGwgb3RoZXIgZmlsZXMgYXJlIGZsYXR0ZW5lZCB0byBhIHNpbmdsZSBkaXJlY3RvcnkuCisgCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQocGx1Z2luX2luY2x1ZGVkaXIpCistCWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWA7IFwKKysJaGVhZGVycz0iJChzb3J0ICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpKSI7IFwKKyAJc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYDsgXAorIAlmb3IgZmlsZSBpbiAkJGhlYWRlcnM7IGRvIFwKKyAJICBpZiBbIC1mICQkZmlsZSBdIDsgdGhlbiBcCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjItRGlzYWJsZS1zZHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjItRGlzYWJsZS1zZHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxZjE5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMi1EaXNhYmxlLXNkdC5wYXRjaApAQCAtMCwwICsxLDExMyBAQAorRnJvbSAzMDIxZmVjNDg1ZjQ0NDc4YTNkNWZmZmI0YWRhYzEzZDgzMWZjZGMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjg6MTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyMi80N10gRGlzYWJsZSBzZHQuCisKK1dlIGRvbid0IGxpc3QgZHRyYWNlIGluIERFUEVORFMgc28gd2Ugc2hvdWxkbid0IGJlIGRlcGVuZGluZyBvbiB0aGlzIGhlYWRlci4KK0l0IG1heSBvciBtYXkgbm90IGV4aXN0IGZyb20gcHJlaXZvdXMgYnVpbGRzIHRob3VnaC4gVG8gYmUgZGV0ZXJtaW5zdGljLCBkaXNhYmxlCitzZHQuaCB1c2FnZSBhbHdheXMuIFRoaXMgYXZvaWRzIGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBhZnRlciBjb25maWd1cmUKK2J1dCBiZWZvcmUgbGliZ2NjIGlzIGNvbXBpbGVkIGZvciBleGFtcGxlLgorCitSUCAyMDEyLzgvNworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitEaXNhYmxlIHNkdCBmb3IgbGlic3RkYysrLXYzLgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYWNrXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KKyBsaWJzdGRjKystdjMvY29uZmlndXJlICAgIHwgIDYgKysrLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyB8ICAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCBiNWFjMTU1MjU0MS4uMDhiMmY2M2M3ZmEgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMjg5NjcsMTIgKzI4OTY3LDEyIEBAIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQorIGhhdmVfc3lzX3NkdF9oPW5vCistaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCistICBoYXZlX3N5c19zZHRfaD15ZXMKKy0KKy0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjCisrIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorKyMKKysjZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKKyAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggY2IxNDc5ZDFlZjQuLjA1ODFmZTk2M2RjIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTU3NTQsMTUgKzU3NTQsMTUgQEAgZmkKKyBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKKyAKKyAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCistR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCistaGF2ZV9zeXNfc2R0X2g9bm8KKy1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKy0gIGhhdmVfc3lzX3NkdF9oPXllcworLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCistZmkKKy1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKysjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorKyNoYXZlX3N5c19zZHRfaD1ubworKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCisrIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCisrI2ZpCisrI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQorIAorICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgorICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQoraW5kZXggZmI3ZTEyNmMwYjAuLmExODA1N2ZlYjg4IDEwMDc1NQorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQorQEAgLTIxODU2LDExICsyMTg1NiwxMSBAQCBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKKyBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisgCistICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgorKyMgIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCisgCistJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisrIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorIAorLSAgZmkKKysjICBmaQorICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY1CisgJGFzX2VjaG8gIiRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY2OyB9CisgCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKK2luZGV4IDhlOTczNTAzYmUwLi5hNDZkMjVlNzQwZCAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKK0BAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCisgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCisgR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAorIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKKy1HTElCQ1hYX0NIRUNLX1NEVF9ICisrI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKKyAKKyAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KKyBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMy1saWJ0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDIzLWxpYnRvb2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdkZmIxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMy1saWJ0b29sLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZTc5YTRmODE2OWU4MzZjOGRlYWJjYTVhNDU4ODRjZmUxMWQwNzg0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI5OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvNDddIGxpYnRvb2wKKworbGlic3RkYysrIGZyb20gZ2NjLXJ1bnRpbWUgZ2V0cyBjcmVhdGVkIHdpdGggLXJwYXRoPS91c3IvbGliLy4uL2xpYiBmb3IgcWVtdXg4Ni02NAord2hlbiBydW5uaW5nIG9uIGFtIHg4Nl82NCBidWlsZCBob3N0LgorCitUaGlzIHBhdGNoIHN0b3BzIHRoaXMgc3BlYWRpbmcgdG8gbGliZGlyIGluIHRoZSBsaWJzdGRjKysubGEgZmlsZSB3aXRoaW4gbGlidG9vbC4KK0FyZ3VhYmx5LCBpdCBzaG91bGRuJ3QgYmUgcGFzc2luZyB0aGlzIGludG8gbGlidG9vbCBpbiB0aGUgZmlyc3QgcGxhY2UgYnV0Citmb3Igbm93IHRoaXMgcmVzb2x2ZXMgdGhlIG5hc3RpZXN0IHByb2JsZW1zIHRoaXMgY2F1c2VzLgorCitmdW5jX25vcm1hbF9hYnNwYXRoIHdvdWxkIHJlc29sdmUgYW4gZW1wdHkgcGF0aCB0byBgcHdkYCBzbyB3ZSBuZWVkCit0byBmaWx0ZXIgdGhlIHplcm8gY2FzZS4KKworUlAgMjAxMi84LzI0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbHRtYWluLnNoIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA5NTAzZWM4NWQ3MC4uMDEyMWZiYTcwN2YgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTYzNTksNiArNjM1OSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgorIAorICAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKKysgICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCisrCWZ1bmNfbm9ybWFsX2Fic3BhdGggIiRpbnN0YWxsX2xpYmRpciIKKysJaW5zdGFsbF9saWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisrICAgICAgZmkKKyAKKyAgICAgICBvbGRsaWJzPQorICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNC1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI0LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWExZTFiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNC1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNzRkOGRjNDhjYjE4NWUzMDRjNjAwNjdiNGQ4YjUwNDQ3ZWMzMjhlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvNDddIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KKworVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKK21lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Cit0aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAorVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAorZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgorCitXZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK2luZGV4IGZiYWM5YTlkOTk0Li41YTUxYThhNzA5NSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitAQCAtODgsMTAgKzg4LDE0IEBACisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFwKKyAgICIvbGliL2xkLW11c2wtYXJtIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWZsb2F0LWFiaT1oYXJkOmhmfS5zby4xIgorIAorKy8qIEZvciBhcm12NCB3ZSBwYXNzIC0tZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSSAqLworKyN1bmRlZiBUQVJHRVRfRklYX1Y0QlhfU1BFQworKyNkZWZpbmUgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgIiV7bWNwdT1hcm04fG1jcHU9YXJtODEwfG1jcHU9c3Ryb25nYXJtKnxtYXJjaD1hcm12NDogLS1maXgtdjRieH0iCisrCisgLyogQXQgdGhpcyBwb2ludCwgYnBhYmkuaCB3aWxsIGhhdmUgY2xvYmJlcmVkIExJTktfU1BFQy4gIFdlIHdhbnQgdG8KKyAgICB1c2UgdGhlIEdOVS9MaW51eCB2ZXJzaW9uLCBub3QgdGhlIGdlbmVyaWMgQlBBQkkgdmVyc2lvbi4gICovCisgI3VuZGVmICBMSU5LX1NQRUMKKy0jZGVmaW5lIExJTktfU1BFQyBFQUJJX0xJTktfU1BFQwkJCQkJXAorKyNkZWZpbmUgTElOS19TUEVDIFRBUkdFVF9GSVhfVjRCWF9TUEVDIEVBQklfTElOS19TUEVDCQkJXAorICAgTElOVVhfT1JfQU5EUk9JRF9MRCAoTElOVVhfVEFSR0VUX0xJTktfU1BFQywJCQkJXAorIAkJICAgICAgIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgIiAiIEFORFJPSURfTElOS19TUEVDKQorIAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI1LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjUtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjM0MTMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI1LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gYWM1MGRjMzAxMGE2NjIyMGFkNDgzYzA5ZWZlMjcwYmIzZjRjOTQyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMzOjA0ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjUvNDddIFVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mCisgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9CisKK1VzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQorc28gdGhhdCB0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWd1cmUgICAgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggMDhiMmY2M2M3ZmEuLjZiYTM5MWVkMDY4IDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTEyMTMwLDEwICsxMjEzMCwyMCBAQCBkb25lCisgdG1ha2VfZmlsZV89CisgZm9yIGYgaW4gJHt0bWFrZV9maWxlfQorIGRvCistCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorLQl0aGVuCistCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCistCWZpCisrICBjYXNlICRmIGluCisrICAgICovdC1saW51eDY0ICkKKysgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgICAqICkKKysgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICBlc2FjCisgZG9uZQorIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgorIAorQEAgLTEyMTQ0LDYgKzEyMTU0LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDA1ODFmZTk2M2RjLi44NTUxYTQxMmRmMyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xOTAyLDEwICsxOTAyLDIwIEBAIGRvbmUKKyB0bWFrZV9maWxlXz0KKyBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9CisgZG8KKy0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCistCXRoZW4KKy0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKy0JZmkKKysgIGNhc2UgJGYgaW4KKysgICAgKi90LWxpbnV4NjQgKQorKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICAgICogKQorKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgIGVzYWMKKyBkb25lCisgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCisgCitAQCAtMTkxNiw2ICsxOTI2LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjYtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNi1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMjQ3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjYtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDlmYWI0N2Q4NjYyOTg2YWQ4ODdkOWVkZGMzOWZjYmUyNWU1NzYzODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTozOTozOCArMDAwMAorU3ViamVjdDogW1BBVENIIDI2LzQ3XSBBdm9pZCB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYQorIGhvc3QgcGF0aAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDAxMjFmYmE3MDdmLi41MmJkYmRiNWY5YyAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNTYyOCw2ICs1NjI4LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICBlbHNlCisrCSAgICAjIEluc3RlYWQgb2YgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEgaG9zdCBwYXRoLAorKwkgICAgIyB1c2UgdGhlIHBhdGggdGhlIC5sYSBpcyBjb250YWluZWQgaW4uCisrCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBkaXI9IiRsaWJkaXIiCisgCSAgICBhYnNkaXI9IiRsaWJkaXIiCisgCSAgZmkKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNy1leHBvcnQtQ1BQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI3LWV4cG9ydC1DUFAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5ZTFmMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNy1leHBvcnQtQ1BQLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gZmE2YTQ2ZmRmNzNkZTdlYWNkMjg5YzA4NGJiZGU2NjQzYjIzZjczYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjQwOjU5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvNDddIGV4cG9ydCBDUFAKKworVGhlIE9FIGVudmlyb25tZW50IHNldHMgYW5kIGV4cG9ydHMgQ1BQIGFzIGJlaW5nIHRoZSB0YXJnZXQgZ2NjLiBXaGVuCitidWlsZGluZyBnY2MtY3Jvc3MtY2FuYWRpYW4gZm9yIGEgbWluZ3cgdGFyZ2V0dGVkIHNkaywgdGhlIGZvbGxvd2luZyBjYW4gYmUgZm91bmQKK2luIGJ1aWxkLng4Nl82NC1wb2t5c2RrLW1pbmd3MzIuaTU4Ni1wb2t5LWxpbnV4L2J1aWxkLXg4Nl82NC1saW51eC9saWJpYmVydHkvY29uZmlnLmxvZzoKKworY29uZmlndXJlOjM2NDE6IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzCitjb25maWd1cmU6MzY2NjogZ2NjICAtYyAtaXN5c3RlbS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSAgY29uZnRlc3QuYyA+JjUKK2NvbmZpZ3VyZTozNjY2OiAkPyA9IDAKK2NvbmZpZ3VyZTozNjk4OiByZXN1bHQ6IG5vCitjb25maWd1cmU6Mzc4NjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IKK2NvbmZpZ3VyZTozODU2OiByZXN1bHQ6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIKK2NvbmZpZ3VyZTozODc2OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyIGNvbmZ0ZXN0LmMKK2NvbmZpZ3VyZTozODc2OiAkPyA9IDAKKworTm90ZSB0aGlzIGlzIGEgKmJ1aWxkKiB0YXJnZXQgKGluIGJ1aWxkLXg4Nl82NC1saW51eCkgc28gaXQgc2hvdWxkIGJlCit1c2luZyB0aGUgaG9zdCAiZ2NjIiwgbm90IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjLiBTaW5jZSB0aGUgbWluZ3czMgoraGVhZGVycyBhcmUgdmVyeSBkaWZmZXJlbnQsIHVzaW5nIHRoZSB3cm9uZyBjcHAgaXMgYSByZWFsIHByb2JsZW0uIEl0IGlzIGxlYWtpbmcKK2ludG8gY29uZmlndXJlIHRocm91Z2ggdGhlIENQUCB2YXJpYWJsZS4gVWx0aW1hdGVseSB0aGlzIGxlYWRzIHRvIGJ1aWxkCitmYWlsdXJlcyByZWxhdGVkIHRvIG5vdCBiZWluZyBhYmxlIHRvIGluY2x1ZGUgYSBwcm9jZXNzLmggZmlsZSBmb3IgcGVtLXVuaXguYy4KKworVGhlIGZpeCBpcyB0byBlbnN1cmUgd2UgZXhwb3J0IGEgc2FuZSBDUFAgdmFsdWUgaW50byB0aGUgYnVpbGQKK2Vudmlyb25tZW50IHdoZW4gdXNpbmcgYnVpbGQgdGFyZ2V0cy4gV2UgY291bGQgZGVmaW5lIGEgQ1BQX0ZPUl9CVUlMRCB2YWx1ZSB3aGljaCBtYXkgYmUKK3RoZSB2ZXJzaW9uIHdoaWNoIG5lZWRzIHRvIGJlIHVwc3RyZWFtZWQgYnV0IGZvciBub3csIHRoaXMgZml4IGlzIGdvb2QgZW5vdWdoIHRvCithdm9pZCB0aGUgcHJvYmxlbS4KKworUlAgMjIvMDgvMjAxMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBiODI0ZTBhMGNhMS4uZTM0ZTk1NTUzODggMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAorIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI4LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjgtRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTAzMzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI4LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSAyYzA1YjQwNzJmOTgyZGY4MDAyZDYxMzI3ODM3ZTE4YTcyNGU5MzRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZHJ1LUNlemFyIFNhcmRhbiA8YWxleGFuZHJ1LnNhcmRhbkBmcmVlc2NhbGUuY29tPgorRGF0ZTogV2VkLCA1IEZlYiAyMDE0IDE2OjUyOjMxICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMjgvNDddIEVuYWJsZSBTUEUgJiBBbHRpVmVjIGdlbmVyYXRpb24gb24gcG93ZXBjKmxpbnV4IHRhcmdldAorCitXaGVuIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LCB0aGUgcmVzdWx0aW5nIEdDQyB3aWxsCitub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBjb2RlIGZvciBTUEUgdGFyZ2V0cyAoZTUwMHYxL3YyKS4KK0dDQyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eHNwZSB3aWxsIG5vdCBiZSBhYmxlIHRvCitnZW5lcmF0ZSBBbHRpVmVjIGluc3RydWN0aW9ucyAoZm9yIGU2NTAwKS4KK1RoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ3VyZWQgZmlsZSBzdWNoIHRoYXQgU1BFIG9yIEFsdGlWZWMgY29kZQorY2FuIGJlIGdlbmVyYXRlZCB3aGVuIGdjYyBpcyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eC4KK1RoZSBBQkkgYW5kIHNwZWNpZmZpYyBpbnN0cnVjdGlvbnMgY2FuIGJlIHNlbGVjdGVkIHRocm91Z2ggdGhlCisiLW1hYmk9c3BlIG9yIC1tYWJpPWFsdGl2ZWMiIGFuZCB0aGUgIi1tc3BlIG9yIC1tYWx0aXZlYyIgcGFyYW1ldGVycy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+CistLS0KKyBnY2MvY29uZmlnLmdjYyAgICAgICAgICAgICAgIHwgOSArKysrKysrKy0KKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIHwgMyAtLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKK2luZGV4IDVlNDVmNGI1MTk5Li45YjM4MWRmZDlhZiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuZ2NjCisrKysgYi9nY2MvY29uZmlnLmdjYworQEAgLTI0MTUsNyArMjQxNSwxNCBAQCBwb3dlcnBjLSotcnRlbXMqKQorIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcnRlbXMgcnM2MDAwL3QtcHBjY29tbSIKKyAJOzsKKyBwb3dlcnBjKi0qLWxpbnV4KikKKy0JdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCisrCWNhc2UgJHt0YXJnZXR9IGluCisrCSAgICBwb3dlcnBjKi0qLWxpbnV4KnNwZSogfCBwb3dlcnBjKi0qLWxpbnV4KmFsdGl2ZWMqKQorKwkJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCisrCQk7OworKwkgICAgKikKKysJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIHJzNjAwMC9saW51eGFsdGl2ZWMuaCByczYwMDAvbGludXhzcGUuaCByczYwMDAvZTUwMC5oIgorKwkJOzsKKysJZXNhYworIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2NC5vcHQiCisgCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gcnM2MDAwL3QtZnBydWxlcyByczYwMDAvdC1wcGNjb21tIgorIAlleHRyYV9vYmpzPSIkZXh0cmFfb2JqcyByczYwMDAtbGludXgubyIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAoraW5kZXggOTJlZmFiZmU2NjQuLjZkNDg2NDUxYTdlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAorQEAgLTI3LDYgKzI3LDMgQEAKKyAjdW5kZWYJVEFSR0VUX0RFRkFVTFQKKyAjZGVmaW5lIFRBUkdFVF9ERUZBVUxUIE1BU0tfU1RSSUNUX0FMSUdOCisgI2VuZGlmCistCistI3VuZGVmICBBU01fREVGQVVMVF9TUEVDCistI2RlZmluZQlBU01fREVGQVVMVF9TUEVDICItbXBwYyAtbXNwZSAtbWU1MDAiCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjktRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyOS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMDZhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjktRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGVjMGY4NDNiODZjMGY3NmJjNWViYjIwZmFmYmM0YWFlMWJlNGRiNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyMTo1NSArMDAwMAorU3ViamVjdDogW1BBVENIIDI5LzQ3XSBEaXNhYmxlIHRoZSBNVUxUSUxJQl9PU0RJUk5BTUVTIGFuZCBvdGhlciBtdWx0aWxpYgorIG9wdGlvbnMuCisKK0hhcmQgY29kaW5nIHRoZSBNVUxUSUxJQl9PU0RJUk5BTUVTIHdpdGggLi4vbGliNjQgaXMgY2F1c2luZyBwcm9ibGVtcyBvbgorc3lzdGVtcyB3aGVyZSB0aGUgbGliZGlyIGlzIE5PVCBzZXQgdG8gL2xpYjY0LiAgVGhpcyBpcyBhbGxvd2VkIGJ5IHRoZQorQUJJLCBhcworbG9uZyBhcyB0aGUgZHluYW1pYyBsb2FkZXIgaXMgcHJlc2VudCBpbiAvbGliLgorCitXZSBzaW1wbHkgd2FudCB0byB1c2UgdGhlIGRlZmF1bHQgcnVsZXMgaW4gZ2NjIHRvIGZpbmQgYW5kIGNvbmZpZ3VyZSB0aGUKK25vcm1hbCBsaWJkaXIuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CitpbmRleCBhYjA2NGFiNmYyMi4uZjRiMWY5OGIyMTYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CisrKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CitAQCAtMjEsOCArMjEsOCBAQAorIExJQjFBU01TUkMgICA9IGFhcmNoNjQvbGliMWZ1bmNzLmFzbQorIExJQjFBU01GVU5DUyA9IF9hYXJjaDY0X3N5bmNfY2FjaGVfcmFuZ2UKKyAKKy1BQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorLU1VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorKyNBQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQorKyNNVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKysjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisgCistTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyCisrI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMwLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMwLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2OGJhOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzAtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorRnJvbSBiZjU4MzY5ODllMGZmYzFjMWRmMTM2OWRmMDY4NzdlOTZjMDhkZjQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMC80N10gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKKworVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAorZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCitidWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAorc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQorZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCitwaWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYworY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCisgZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKworIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKworIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDIzY2NhN2YwZDVhLi45NWQyMWVmZmFkMyAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtNjA4LDYgKzYwOCw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKKyAKKyAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KKyBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQorK2xpYnN1YmRpcl90YXJnZXQgPSBnY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCisgbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQorICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKK0BAIC0yNzkxLDYgKzI3OTIsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKKyAKKyBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKKyAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCisrICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCisgICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCisgICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCisgICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYworaW5kZXggMTBiOTZlY2EwYTcuLmM4ZGEwODg0ODcyIDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYworKysrIGIvZ2NjL2NwcGRlZmF1bHQuYworQEAgLTU5LDYgKzU5LDEwIEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCisgICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorKyNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCisrICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCisrICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisrI2VuZGlmCisgI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisgICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCisgICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKK2RpZmYgLS1naXQgYS9nY2MvZGVmYXVsdHMuaCBiL2djYy9kZWZhdWx0cy5oCitpbmRleCA3YWQ5MmQ5MjBmOC4uMzk4NDhjYzljMGUgMTAwNjQ0CistLS0gYS9nY2MvZGVmYXVsdHMuaAorKysrIGIvZ2NjL2RlZmF1bHRzLmgKK0BAIC0xNDc1LDQgKzE0NzUsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBEV0FSRl9HTkFUX0VOQ09ESU5HU19ERUZBVUxUIERXQVJGX0dOQVRfRU5DT0RJTkdTX0dEQgorICNlbmRpZgorIAorKy8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLworKworKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCisrI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgorKyNlbmRpZgorKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCisrI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8qICEgR0NDX0RFRkFVTFRTX0ggKi8KK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGM3M2Q0MDIzOTg3Li5iMjcyNDVkYmY3NyAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTQ3MiwxMyArMTQ3Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7CisgCisgLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCisgCistI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKKy0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCistI2VuZGlmCistI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKKy0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgorLSNlbmRpZgorLQorICNpZmRlZiBDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFICAvKiBEb24ndCB1c2UgdGhlc2UgcHJlZml4ZXMgZm9yIGEgY3Jvc3MgY29tcGlsZXIuICAqLworICN1bmRlZiBNRF9FWEVDX1BSRUZJWAorICN1bmRlZiBNRF9TVEFSVEZJTEVfUFJFRklYCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzEtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzMS1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxODQwMTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzEtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGM3YjRkOTU3ZWRkYTk1NWZiZTQwNWZkNTI5NTg0NjYxNDUyOWY1MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDMxLzQ3XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCisKK3NpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgorCitUaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisoUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQoraHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKKworUlAKKzIwMTIvMDkvMjIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCisgbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQoraW5kZXggZDczMTQwNmZkYmQuLjJmYWZjNzJkMmU3IDEwMDY0NAorLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCisrKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KK0BAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQorIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCisgSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCisgCistTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX0ZBTFNFQE1fREVQUwkJPQorIE1fU0laRQkJPSAtRE49JChQQVRfTikKKyBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKKyBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCitkaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCitpbmRleCBmNmVlYWIzMTJlYS4uM2YwNmE4OTQwNTggMTAwNjQ0CistLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgorQEAgLTMzMSw3ICszMzEsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKKyBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKKyBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQorIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQorLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfRkFMU0VATV9ERVBTID0KKyBNX1NJWkUgPSAtRE49JChQQVRfTikKKyBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQorIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMyLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzItRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODkwNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMyLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSAzYmU2Yjc2NmE1ODgxYjBiMTg3YzNjM2M2ODI1MGE5ZTRmN2MwZmEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDMyLzQ3XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCisgJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCisKK2h0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggNTJiZGJkYjVmOWMuLjgyYmNlYzM5ZjA1IDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpCisgCSAgICBlbHNlCisgCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCisrCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgorIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCistCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KKysKKyAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCWNhc2UgJGxpYmRpciBpbgorIAkJICBbXFwvXSopCistCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzMtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzMy1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYjhkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzMtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDZlZGNhYjkwNDZiODYyY2JiOWI0Njg5MmZjMzkwY2U2OTk3NjUzOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDMzLzQ3XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCisgYmFzZV9saWJkaXIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAoraW5kZXggYzQ1ZmMxZDM1ZDEuLmE3YWZlMTk3MjY2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaWZuZGVmIEdDQ19BQVJDSDY0X0xJTlVYX0gKKyAjZGVmaW5lIEdDQ19BQVJDSDY0X0xJTlVYX0gKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM0LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNC1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q4NjZkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNC1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBiMTQwZDY4MzljZmJhOWNhYzg5MmJjNzM2ZDk4NDU0MDU1MmQ2YTU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzNC80N10gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCisgZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitpbmRleCBhN2FmZTE5NzI2Ni4uNTgwYzJjN2VhMTUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitAQCAtMjQsNyArMjQsNyBAQAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorLSNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmICBBU0FOX0NDMV9TUEVDCisgI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzUtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYzE5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzUtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gNjM2MTdmMmRhMTUzZGIxMGZhMmZlOTM4Y2NlMzFiZWUwMWQ0N2ZlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDIwOjI1OjE4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzUvNDddIGxpYmNjMTogZml4IGxpYmNjMSdzIGluc3RhbGwgcGF0aCBhbmQgcnBhdGgKKworKiBJbnN0YWxsIGxpYmNjMS5zbyBhbmQgbGliY2MxcGx1Z2luLnNvIGludG8KKyAgJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKSwgYXMgd2hhdCB3ZQorICBoYWQgZG9uZSB0byBsdG8tcGx1Z2luLgorKiBGaXggYmFkIFJQQVRIIGl1c3N1ZToKKyAgZ2NjLTUuMi4wOiBwYWNrYWdlIGdjYy1wbHVnaW5zIGNvbnRhaW5zIGJhZCBSUEFUSCAvcGF0aHQvdG8vdG1wL3N5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL2xpYjY0Ly4uL2xpYjY0IGluIGZpbGUKKyAvcGF0aC90by9nY2MvNS4yLjAtcjAvcGFja2FnZXMtc3BsaXQvZ2NjLXBsdWdpbnMvdXNyL2xpYjY0L2djYy94ODZfNjQtcG9reS1saW51eC81LjIuMC9wbHVnaW4vbGliY2MxcGx1Z2luLnNvLjAuMC4wCisgW3JwYXRoc10KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmNjMS9NYWtlZmlsZS5hbSB8IDQgKystLQorIGxpYmNjMS9NYWtlZmlsZS5pbiB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmFtIGIvbGliY2MxL01ha2VmaWxlLmFtCitpbmRleCA1ZTYxYTkyYTI2Yi4uZThiNjI3ZjljZWMgMTAwNjQ0CistLS0gYS9saWJjYzEvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmNjMS9NYWtlZmlsZS5hbQorQEAgLTM3LDggKzM3LDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAorIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKKyBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCisgCistcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgorLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKKytjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCisrcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCisgCisgaWYgRU5BQkxFX1BMVUdJTgorIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKK2RpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuaW4gYi9saWJjYzEvTWFrZWZpbGUuaW4KK2luZGV4IDU0YmFiYjAyYTQ5Li5lNTFkODdmZmRjZSAxMDA2NDQKKy0tLSBhL2xpYmNjMS9NYWtlZmlsZS5pbgorKysrIGIvbGliY2MxL01ha2VmaWxlLmluCitAQCAtMzAzLDggKzMwMyw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKKyAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCisgCisgbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQorLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KKy1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCisrY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQorK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQorIEBFTkFCTEVfUExVR0lOX1RSVUVAcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQorIEBFTkFCTEVfUExVR0lOX1RSVUVAY2MxbGliX0xUTElCUkFSSUVTID0gbGliY2MxLmxhCisgQlVJTFRfU09VUkNFUyA9IGMtY29tcGlsZXItbmFtZS5oIGNwLWNvbXBpbGVyLW5hbWUuaAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM2LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzYtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTBiMTA4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM2LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKQEAgLTAsMCArMSwyMTMgQEAKK0Zyb20gY2ExNDgyMGFlODM0YTYyZWYyYjgwYjI4M2U4ZjkwMDcxNDYzNjI3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzNi80N10gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYworCitCZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcword2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCitiaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KKworU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKK25hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCitsaWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCitpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKK2Jhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KKworSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKKworYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKKyAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCitiKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgorICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorUlAgMjAxNS83LzI4CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY3BwZGVmYXVsdC5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyBnY2MvY3BwZGVmYXVsdC5oIHwgIDMgKystCisgZ2NjL2djYy5jICAgICAgICB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCitpbmRleCBjOGRhMDg4NDg3Mi4uNDNkYzU5N2EwYzMgMTAwNjQ0CistLS0gYS9nY2MvY3BwZGVmYXVsdC5jCisrKysgYi9nY2MvY3BwZGVmYXVsdC5jCitAQCAtMzUsNiArMzUsMzAgQEAKKyAjIHVuZGVmIENST1NTX0lOQ0xVREVfRElSCisgI2VuZGlmCisgCisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHQ0NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR0NDX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUOworKyNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIExPQ0FMX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IExPQ0FMX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBQUkVGSVhfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIEZJWEVEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEZJWEVEX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIENST1NTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENST1NTX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBUT09MX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBUT09MX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKKytzdGF0aWMgY2hhciBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSOworKyNlbmRpZgorKworIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICNpZmRlZiBJTkNMVURFX0RFRkFVTFRTCisgPSBJTkNMVURFX0RFRkFVTFRTOworQEAgLTQyLDM4ICs2NiwzOCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyA9IHsKKyAjaWZkZWYgR1BMVVNQTFVTX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBnZW5lcmljIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIHRhcmdldC1kZXBlbmRlbnQgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDEgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBiYWNrd2FyZCBhbmQgZGVwcmVjYXRlZCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCisgICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIEdDQ19JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCistICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorKyAgICB7IEdDQ19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLworLSAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUiwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKyAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KKy0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAorLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCisrICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDIgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKy0gICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBQUkVGSVhfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBmaXhpbmNsdWRlcy4gICovCistICAgIHsgRklYRURfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLAorKyAgICB7IEZJWEVEX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwKKyAgICAgICAvKiBBIG11bHRpbGliIHN1ZmZpeCBuZWVkcyBhZGRpbmcgaWYgZGlmZmVyZW50IG11bHRpbGlicyB1c2UKKyAJIGRpZmZlcmVudCBoZWFkZXJzLiAgKi8KKyAjaWZkZWYgU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDCitAQCAtODUsMTYgKzEwOSwxNiBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAjZW5kaWYKKyAjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAgICAgLyogT25lIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCistICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgQ1JPU1NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogQW5vdGhlciBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLworLSAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBUT09MX0lOQ0xVREVfRElSVkFSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorICAgICAvKiAvdXNyL2luY2x1ZGUgY29tZXMgZGVhZCBsYXN0LiAgKi8KKy0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAorLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKKysgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQorICAgfTsKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5oIGIvZ2NjL2NwcGRlZmF1bHQuaAoraW5kZXggMTdiYmIwZWFlZjcuLmE5MzdlYzFkMTg3IDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAorKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAorQEAgLTMzLDcgKzMzLDggQEAKKyAKKyBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCisgeworLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLworKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KKysKKyAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKKyAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KKyAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBiMjcyNDVkYmY3Ny4uZTAxNWM3N2YxNWYgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTI0Nyw2ICsyNDcsOCBAQCBGSUxFICpyZXBvcnRfdGltZXNfdG9fZmlsZSA9IE5VTEw7CisgI2VuZGlmCisgc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IERFRkFVTFRfVEFSR0VUX1NZU1RFTV9ST09UOworIAorK3N0YXRpYyBjaGFyIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTVEVNTElCU19ESVI7CisrCisgLyogTm9uemVybyBtZWFucyBwYXNzIHRoZSB1cGRhdGVkIHRhcmdldF9zeXN0ZW1fcm9vdCB0byB0aGUgY29tcGlsZXIuICAqLworIAorIHN0YXRpYyBpbnQgdGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQ7CitAQCAtNTE4LDYgKzUyMCw3IEBAIG9yIHdpdGggY29uc3RhbnQgdGV4dCBpbiBhIHNpbmdsZSBhcmd1bWVudC4KKyAgJUcgICAgIHByb2Nlc3MgTElCR0NDX1NQRUMgYXMgYSBzcGVjLgorICAlUiAgICAgT3V0cHV0IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRhcmdldF9zeXN0ZW1fcm9vdCBhbmQKKyAgICAgICAgIHRhcmdldF9zeXNyb290X3N1ZmZpeC4KKysgJXIgICAgIE91dHB1dCB0aGUgYmFzZSBwYXRoIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgKKyAgJVMgICAgIHByb2Nlc3MgU1RBUlRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIFMgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgorICAlRSAgICAgcHJvY2VzcyBFTkRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIEUgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgorICAlQyAgICAgcHJvY2VzcyBDUFBfU1BFQyBhcyBhIHNwZWMuCitAQCAtMTQ5NSwxMCArMTQ5OCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OworICAgIGdjY19leGVjX3ByZWZpeCBpcyBzZXQgYmVjYXVzZSwgaW4gdGhhdCBjYXNlLCB3ZSBrbm93IHdoZXJlIHRoZQorICAgIGNvbXBpbGVyIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHVzZSBwYXRocyByZWxhdGl2ZSB0byB0aGF0CisgICAgbG9jYXRpb24gaW5zdGVhZC4gICovCistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2V4ZWNfcHJlZml4ID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4ID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2JpbmRpcl9wcmVmaXggPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9leGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9saWJleGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9iaW5kaXJfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Cisrc3RhdGljIGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworIAorIC8qIEZvciBuYXRpdmUgY29tcGlsZXJzLCB0aGVzZSBhcmUgd2VsbC1rbm93biBwYXRocyBjb250YWluaW5nCisgICAgY29tcG9uZW50cyB0aGF0IG1heSBiZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtLiAgRm9yIGNyb3NzCitAQCAtMTUwNiw5ICsxNTA5LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9leGVjX3ByZWZpeCA9IE1EX0VYRUNfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4ID0gTURfU1RBUlRGSUxFX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeF8xID0gTURfU1RBUlRGSUxFX1BSRUZJWF8xOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzEKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzFbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCisgICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yCisrc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQorICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzI7CisgCisgLyogQSByZWxhdGl2ZSBwYXRoIHRvIGJlIHVzZWQgaW4gZmluZGluZyB0aGUgbG9jYXRpb24gb2YgdG9vbHMKK0BAIC01ODI2LDYgKzU4MjksMTEgQEAgZG9fc3BlY18xIChjb25zdCBjaGFyICpzcGVjLCBpbnQgaW5zd2l0Y2gsIGNvbnN0IGNoYXIgKnNvZnRfbWF0Y2hlZF9wYXJ0KQorIAkgICAgICB9CisgCSAgICBicmVhazsKKyAKKysgICAgICAgICAgY2FzZSAncic6CisrICAgICAgICAgICAgICBvYnN0YWNrX2dyb3cgKCZvYnN0YWNrLCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4LAorKwkJICAgICAgc3RybGVuICh0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4KSk7CisrICAgICAgICAgICAgYnJlYWs7CisrCisgCSAgY2FzZSAnUyc6CisgCSAgICB2YWx1ZSA9IGRvX3NwZWNfMSAoc3RhcnRmaWxlX3NwZWMsIDAsIE5VTEwpOworIAkgICAgaWYgKHZhbHVlICE9IDApCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzctU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNy1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjODVhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzctU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorRnJvbSAxNmEzMjZiY2QxMjZiMzk1YjI5MDE5MDcyOTA1YmFlN2E1ZDQ3NTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0MTo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDM3LzQ3XSBTZWFyY2ggdGFyZ2V0IHN5c3Jvb3QgZ2NjIHZlcnNpb24gc3BlY2lmaWMgZGlycyB3aXRoCisgbXVsdGlsaWIuCisKK1dlIGluc3RhbGwgdGhlIGdjYyBsaWJyYXJpZXMgKHN1Y2ggYXMgY3J0YmVnaW4ucCkgaW50bworPHN5c3Jvb3Q+PGxpYmRpcj4vPHRhcmdldC1zeXM+LzUuMi4wLword2hpY2ggaXMgYSBkZWZhdWx0IHNlYXJjaCBwYXRoIGZvciBHQ0MgKGFrYSBtdWx0aV9zdWZmaXggaW4gdGhlCitjb2RlIGJlbG93KS4gPHRhcmdldC1zeXM+IGlzICdtYWNoaW5lJyBpbiBnY2MncyB0ZXJtaW5vbG9neS4gV2UgdXNlCit0aGVzZSBkaXJlY3RvcmllcyBzbyB0aGF0IG11bHRpcGxlIGdjYyB2ZXJzaW9ucyBjb3VsZCBpbiB0aGVvcnkKK2NvLWV4aXN0IG9uIHRhcmdldC4KKworV2Ugb25seSB3YW50IHRvIGJ1aWxkIG9uZSBnY2MtY3Jvc3MtY2FuYWRpYW4gcGVyIGFyY2ggYW5kIGhhdmUgdGhpcyB3b3JrCitmb3IgYWxsIG11bHRpbGlicy4gPHRhcmdldC1zeXM+IGNhbiBiZSBoYW5kbGVkIGJ5IG1hcHBpbmcgdGhlIG11bHRpbGliCis8dGFyZ2V0LXN5cz4gdG8gdGhlIG9uZSB1c2VkIGJ5IGdjYy1jcm9zcy1jYW5hZGlhbiwgZS5nLgorbWlwczY0LXBvbGttbGxpYjMyLWxpbnV4CitpcyBzeW1saW5rZWQgdG8gYnkgbWlwczY0LXBva3ktbGludXguCisKK1RoZSBkZWZhdWx0IGdjYyBzZWFyY2ggcGF0aCBpbiB0aGUgdGFyZ2V0IHN5c3Jvb3QgZm9yIGEgImxpYjY0IiBtdXRsaWxpYgoraXM6CisKKzxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L2xpYjMyLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8KKword2hpY2ggbWVhbnMgdGhhdCB0aGUgbGliMzIgY3J0YmVnaW4ubyB3aWxsIGJlIGZvdW5kIGFuZCB0aGUgbGliNjQgb25lcword2lsbCBub3Qgd2hpY2ggbGVhZHMgdG8gY29tcGlsZXIgZmFpbHVyZXMuCisKK1RoaXMgcGF0Y2ggaW5qZWN0cyBhIG11bHRpbGliIHZlcnNpb24gb2YgdGhhdCBwYXRoIGZpcnN0IHNvIHRoZSBsaWI2NAorYmluYXJpZXMgY2FuIGJlIGZvdW5kIGZpcnN0LiBXaXRoIHRoaXMgY2hhbmdlIHRoZSBzZWFyY2ggcGF0aCBiZWNvbWVzOgorCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vbGliMzIvCis8c3lzcm9vdD4vdXNyL2xpYjMyLworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1JQIDIwMTUvNy8zMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2djYy5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBlMDE1Yzc3ZjE1Zi4uODRhZjVkNWEyZTEgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTI1MzMsNyArMjUzMyw3IEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCisgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAJeworIAkgIGxlbiA9IHBhdGhzLT5tYXhfbGVuICsgZXh0cmFfc3BhY2UgKyAxOworLQkgIGxlbiArPSBNQVggKE1BWCAoc3VmZml4X2xlbiwgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOworKwkgIGxlbiArPSBNQVggKChzdWZmaXhfbGVuICsgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOworIAkgIHBhdGggPSBYTkVXVkVDIChjaGFyLCBsZW4pOworIAl9CisgCitAQCAtMjU0NSw2ICsyNTQ1LDMzIEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCisgCSAgLyogTG9vayBmaXJzdCBpbiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5LiAgKi8KKyAJICBpZiAoIXNraXBfbXVsdGlfZGlyKQorIAkgICAgeworKwkgICAgICBpZiAoIShwbC0+b3NfbXVsdGlsaWIgPyBza2lwX211bHRpX29zX2RpciA6IHNraXBfbXVsdGlfZGlyKSkKKysJICAgICAgICB7CisrCSAgICAgICAgICBjb25zdCBjaGFyICp0aGlzX211bHRpOworKwkgICAgICAgICAgc2l6ZV90IHRoaXNfbXVsdGlfbGVuOworKworKwkgICAgICAgICAgaWYgKHBsLT5vc19tdWx0aWxpYikKKysJCSAgICB7CisrCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfb3NfZGlyOworKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9vc19kaXJfbGVuOworKwkJICAgIH0KKysJICAgICAgICAgIGVsc2UKKysJCSAgICB7CisrCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfZGlyOworKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9kaXJfbGVuOworKwkJICAgIH0KKysKKysJICAgICAgICAgIC8qIExvb2sgaW4gbXVsdGlsaWIgTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeSBmaXJzdCAqLworKwkgICAgICAgICAgaWYgKHRoaXNfbXVsdGlfbGVuKQorKwkgICAgICAgICAgICB7CisrCQkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIHRoaXNfbXVsdGksIHRoaXNfbXVsdGlfbGVuICsgMSk7CisrCSAgICAgICAgICAgICAgbWVtY3B5IChwYXRoICsgbGVuICsgdGhpc19tdWx0aV9sZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOworKwkgICAgICAgICAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKKysJICAgICAgICAgICAgICAgIGlmIChyZXQpCisrCQkgICAgICAgICAgYnJlYWs7CisrCSAgICAgICAgICAgIH0KKysJICAgICAgICB9CisrCisgCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7CisgCSAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKKyAJICAgICAgaWYgKHJldCkKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOC1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOC1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjI2ZDEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM4LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDZlN2Y1MjZlNzFhNzZhYWMzZDQ5YmE4ZjE3NDJmZTFiMzU5YzEwNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQyOjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzgvNDddIEZpeCB2YXJpb3VzIF9GT1JfQlVJTEQgYW5kIHJlbGF0ZWQgdmFyaWFibGVzCisKK1doZW4gZG9pbmcgYSBGT1JfQlVJTEQgdGhpbmcsIHlvdSBoYXZlIHRvIG92ZXJyaWRlIENGTEFHUyB3aXRoCitDRkxBR1NfRk9SX0JVSUxELiBBbmQgaWYgeW91IHVzZSBDKyssIHlvdSBhbHNvIGhhdmUgdG8gb3ZlcnJpZGUKK0NYWEZMQUdTIHdpdGggQ1hYRkxBR1NfRk9SX0JVSUxELgorV2l0aG91dCB0aGlzLCB3aGVuIGJ1aWxkaW5nIGZvciBtaW5ndywgeW91IGVuZCB1cCB0cnlpbmcgdG8gdXNlCit0aGUgbWluZ3cgaGVhZGVycyBmb3IgYSBob3N0IGJ1aWxkLgorCitUaGUgc2FtZSBnb2VzIGZvciBvdGhlciB2YXJpYWJsZXMgYXMgd2VsbCwgc3VjaCBhcyBDUFBGTEFHUywKK0NQUCwgYW5kIEdNUElOQy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgICAgIHwgNiArKysrKysKKyBNYWtlZmlsZS50cGwgICAgIHwgNSArKysrKworIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBnY2MvY29uZmlndXJlLmFjIHwgMiArLQorIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IGUzNGU5NTU1Mzg4Li5hMDM3NDBmM2Y5ZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAorIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKyAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAorIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCitAQCAtMTY5LDYgKzE3MCw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCisgRVhUUkFfQlVJTERfRkxBR1MgPSBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCisgCisgIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCitAQCAtMTg2LDYgKzE5MCw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAorIEhPU1RfRVhQT1JUUyA9IFwKKyAJJChCQVNFX0VYUE9SVFMpIFwKKyAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKK0BAIC03MzQsNiArNzM5LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAorIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAorIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCisgCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKKysJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKKyAJIkZMRVg9JChGTEVYKSIgXAorIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCitpbmRleCBkMGZhMDcwMDViZS4uOTUzMzc2YzY1OGQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS50cGwKKysrKyBiL01ha2VmaWxlLnRwbAorQEAgLTE1NCw2ICsxNTQsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAorIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCisgCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKyAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAorQEAgLTE3MSw2ICsxNzIsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAorICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgorIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCisgCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgorIAorICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgorQEAgLTE4OCw2ICsxOTIsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKKyBIT1NUX0VYUE9SVFMgPSBcCisgCSQoQkFTRV9FWFBPUlRTKSBcCisgCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCA5NWQyMWVmZmFkMy4uZGJlMmJhY2RlNTAgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTc5NSw3ICs3OTUsNyBAQCBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAorIEJVSUxEX05PX1BJRV9GTEFHID0gQEJVSUxEX05PX1BJRV9GTEFHQAorIEJVSUxEX0xERkxBR1MgKz0gJChCVUlMRF9OT19QSUVfRkxBRykKKyBCVUlMRF9DUFBGTEFHUz0gLUkuIC1JJChARCkgLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvJChARCkgXAorLQkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1MpCisrCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHU19GT1JfQlVJTEQpCisgCisgIyBBY3R1YWwgbmFtZSB0byB1c2Ugd2hlbiBpbnN0YWxsaW5nIGEgbmF0aXZlIGNvbXBpbGVyLgorIEdDQ19JTlNUQUxMX05BTUUgOj0gJChzaGVsbCBlY2hvIGdjY3xzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCA2YmEzOTFlZDA2OC4uNzJjYTZlNWM1MzUgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTE3ODksNyArMTE3ODksNyBAQCBlbHNlCisgCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKKy0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCisrCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKyAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAorIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKKyAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCA4NTUxYTQxMmRmMy4uNmVlZmI2MWRjMmIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtMTcwOCw3ICsxNzA4LDcgQEAgZWxzZQorIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCisgCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCistCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAorKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCisgCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKKyAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCisgCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOS1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOS1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2FlY2NkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM5LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNmQwM2RkZmI3YTA5Mjk0MmJlNmI1OGIxODMwZjY5ODZkMDEyZDVlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIgRmViIDIwMTYgMTA6MjY6MTAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzOS80N10gbmlvczI6IERlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSCisKK1NpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworIGdjYy9jb25maWcvbmlvczIvbGludXguaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCitpbmRleCA1MTc3ZmE2NDFhNC4uMWI4YWNjZGE2ZWUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgorIAorICN1bmRlZiBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQwLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDAtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQxLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDEtZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjYwZTM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQxLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2gKQEAgLTAsMCArMSwyODQgQEAKK0Zyb20gNGVhZGM5OWJkZDA5NzQ3NjFiZjQ4ZjBmZDMyOTk0ZGQ5YTNmZmNmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTYgTWFyIDIwMTYgMDI6Mjc6NDMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0MS80N10gZ2NjL2xpYmNwcDogc3VwcG9ydCAtZmZpbGUtcHJlZml4LW1hcD08b2xkPj08bmV3PgorCitTaW1pbGFyIC1mZGVidWctcHJlZml4LW1hcCwgYWRkIG9wdGlvbiAtZmZpbGUtcHJlZml4LW1hcCB0byBtYXAgb25lCitkaXJlY3RvcnkgbmFtZSAob2xkKSB0byBhbm90aGVyIChuZXcpIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fIGFuZAorX19idWlsdGluX0ZJTEUgKCkuCisKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcwMjY4CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZ10KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9jLWZhbWlseS9jLW9wdHMuYyAgICAgfCAxMyArKysrKysrCisgZ2NjL2MtZmFtaWx5L2Mub3B0ICAgICAgICB8ICA0ICsrKworIGdjYy9kd2FyZjJvdXQuYyAgICAgICAgICAgfCAgMSArCisgZ2NjL2dpbXBsaWZ5LmMgICAgICAgICAgICB8ICAyICsrCisgbGliY3BwL01ha2VmaWxlLmluICAgICAgICB8IDEwICsrKy0tLQorIGxpYmNwcC9maWxlLW1hcC5jICAgICAgICAgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmggfCAzMCArKysrKysrKysrKysrKysrCisgbGliY3BwL21hY3JvLmMgICAgICAgICAgICB8ICAyICsrCisgOCBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliY3BwL2ZpbGUtbWFwLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAorCitkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jIGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCitpbmRleCBlYTBlMDFiMTAxYy4uYTc0MWM3NWE3OGYgMTAwNjQ0CistLS0gYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKKysrKyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYworQEAgLTM5LDYgKzM5LDE0IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2luY2x1ZGUgIm9wdHMuaCIKKyAjaW5jbHVkZSAicGx1Z2luLmgiCQkvKiBGb3IgUExVR0lOX0lOQ0xVREVfRklMRSBldmVudC4gICovCisgI2luY2x1ZGUgIm1rZGVwcy5oIgorKyNpbmNsdWRlICJmaWxlLW1hcC5oIgorKyNpbmNsdWRlICJjLXRhcmdldC5oIgorKyNpbmNsdWRlICJ0bS5oIgkJCS8qIEZvciBCWVRFU19CSUdfRU5ESUFOLAorKwkJCQkgICBET0xMQVJTX0lOX0lERU5USUZJRVJTLAorKwkJCQkgICBTVERDXzBfSU5fU1lTVEVNX0hFQURFUlMsCisrCQkJCSAgIFRBUkdFVF9GTFRfRVZBTF9NRVRIT0RfTk9OX0RFRkFVTFQgYW5kCisrCQkJCSAgIFRBUkdFVF9PUFRGLiAgKi8KKysjaW5jbHVkZSAidG1fcC5oIgkJLyogRm9yIENfQ09NTU9OX09WRVJSSURFX09QVElPTlMuICAqLworICNpbmNsdWRlICJkdW1wZmlsZS5oIgorIAorICNpZm5kZWYgRE9MTEFSU19JTl9JREVOVElGSUVSUworQEAgLTUxNyw2ICs1MjUsMTEgQEAgY19jb21tb25faGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICphcmcsIGludCB2YWx1ZSwKKyAgICAgICBjcHBfb3B0cy0+bmFycm93X2NoYXJzZXQgPSBhcmc7CisgICAgICAgYnJlYWs7CisgCisrICAgIGNhc2UgT1BUX2ZmaWxlX3ByZWZpeF9tYXBfOgorKyAgICAgIGlmIChhZGRfZmlsZV9wcmVmaXhfbWFwIChhcmcpIDwgMCkKKysgICAgICAgIGVycm9yICgiaW52YWxpZCBhcmd1bWVudCAlcXMgdG8gLWZmaWxlLXByZWZpeC1tYXAiLCBhcmcpOworKyAgICAgIGJyZWFrOworKworICAgICBjYXNlIE9QVF9md2lkZV9leGVjX2NoYXJzZXRfOgorICAgICAgIGNwcF9vcHRzLT53aWRlX2NoYXJzZXQgPSBhcmc7CisgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitpbmRleCBjNGVmNzc5NjI4Mi4uNzMzMzNkZmQ1N2MgMTAwNjQ0CistLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKKysrKyBiL2djYy9jLWZhbWlseS9jLm9wdAorQEAgLTEzNzIsNiArMTM3MiwxMCBAQCBmZXhlYy1jaGFyc2V0PQorIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQorIC1mZXhlYy1jaGFyc2V0PTxjc2V0PglDb252ZXJ0IGFsbCBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRzIHRvIGNoYXJhY3RlciBzZXQgPGNzZXQ+LgorIAorK2ZmaWxlLXByZWZpeC1tYXA9CisrQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFJlamVjdE5lZ2F0aXZlCisrLWZmaWxlLXByZWZpeC1tYXA9PG9sZD1uZXc+CU1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQgX19idWlsdGluX0ZJTEUgKCkKKysKKyBmZXh0ZW5kZWQtaWRlbnRpZmllcnMKKyBDIE9iakMgQysrIE9iakMrKworIFBlcm1pdCB1bml2ZXJzYWwgY2hhcmFjdGVyIG5hbWVzIChcXHUgYW5kIFxcVSkgaW4gaWRlbnRpZmllcnMuCitkaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCitpbmRleCA5OGM1MTU3NmVjMi4uNzYyZjY5YWU4OGUgMTAwNjQ0CistLS0gYS9nY2MvZHdhcmYyb3V0LmMKKysrKyBiL2djYy9kd2FyZjJvdXQuYworQEAgLTIzNDIxLDYgKzIzNDIxLDcgQEAgZ2VuX3Byb2R1Y2VyX3N0cmluZyAodm9pZCkKKyAgICAgICBjYXNlIE9QVF9mbHRyYW5zX291dHB1dF9saXN0XzoKKyAgICAgICBjYXNlIE9QVF9mcmVzb2x1dGlvbl86CisgICAgICAgY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgorKyAgICAgIGNhc2UgT1BUX2ZmaWxlX3ByZWZpeF9tYXBfOgorIAkvKiBJZ25vcmUgdGhlc2UuICAqLworIAljb250aW51ZTsKKyAgICAgICBkZWZhdWx0OgorZGlmZiAtLWdpdCBhL2djYy9naW1wbGlmeS5jIGIvZ2NjL2dpbXBsaWZ5LmMKK2luZGV4IGZkMjdlYjE1MjNmLi41NTQyYjM3OWYyOCAxMDA2NDQKKy0tLSBhL2djYy9naW1wbGlmeS5jCisrKysgYi9nY2MvZ2ltcGxpZnkuYworQEAgLTU4LDYgKzU4LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKKyAjaW5jbHVkZSAidHJlZS1kdW1wLmgiCisgI2luY2x1ZGUgImdpbXBsZS13YWxrLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisrCisgI2luY2x1ZGUgImxhbmdob29rcy1kZWYuaCIJLyogRklYTUU6IGZvciBsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUgKi8KKyAjaW5jbHVkZSAiYnVpbHRpbnMuaCIKKyAjaW5jbHVkZSAiYXNhbi5oIgorZGlmZiAtLWdpdCBhL2xpYmNwcC9NYWtlZmlsZS5pbiBiL2xpYmNwcC9NYWtlZmlsZS5pbgoraW5kZXggMGJkMzc4N2MyNWUuLmQzYjUyOTU2YjUyIDEwMDY0NAorLS0tIGEvbGliY3BwL01ha2VmaWxlLmluCisrKysgYi9saWJjcHAvTWFrZWZpbGUuaW4KK0BAIC04NCwxMiArODQsMTIgQEAgREVQTU9ERSA9ICQoQ1hYREVQTU9ERSkKKyAKKyAKKyBsaWJjcHBfYV9PQkpTID0gY2hhcnNldC5vIGRpcmVjdGl2ZXMubyBkaXJlY3RpdmVzLW9ubHkubyBlcnJvcnMubyBcCistCWV4cHIubyBmaWxlcy5vIGlkZW50aWZpZXJzLm8gaW5pdC5vIGxleC5vIGxpbmUtbWFwLm8gbWFjcm8ubyBcCistCW1rZGVwcy5vIHBjaC5vIHN5bXRhYi5vIHRyYWRpdGlvbmFsLm8KKysJZXhwci5vIGZpbGUtbWFwLm8gZmlsZXMubyBpZGVudGlmaWVycy5vIGluaXQubyBsZXgubyBsaW5lLW1hcC5vIFwKKysJbWFjcm8ubyBta2RlcHMubyBwY2gubyBzeW10YWIubyB0cmFkaXRpb25hbC5vCisgCisgbGliY3BwX2FfU09VUkNFUyA9IGNoYXJzZXQuYyBkaXJlY3RpdmVzLmMgZGlyZWN0aXZlcy1vbmx5LmMgZXJyb3JzLmMgXAorLQlleHByLmMgZmlsZXMuYyBpZGVudGlmaWVycy5jIGluaXQuYyBsZXguYyBsaW5lLW1hcC5jIG1hY3JvLmMgXAorLQlta2RlcHMuYyBwY2guYyBzeW10YWIuYyB0cmFkaXRpb25hbC5jCisrCWV4cHIuYyBmaWxlLW1hcC5jIGZpbGVzLmMgaWRlbnRpZmllcnMuYyBpbml0LmMgbGV4LmMgbGluZS1tYXAuYyBcCisrCW1hY3JvLmMgbWtkZXBzLmMgcGNoLmMgc3ltdGFiLmMgdHJhZGl0aW9uYWwuYworIAorIGFsbDogbGliY3BwLmEgJChVU0VEX0NBVEFMT0dTKQorIAorQEAgLTI2Myw3ICsyNjMsNyBAQCBwby8kKFBBQ0tBR0UpLnBvdDogJChsaWJjcHBfYV9TT1VSQ0VTKQorIAorIFRBR1NfU09VUkNFUyA9ICQobGliY3BwX2FfU09VUkNFUykgaW50ZXJuYWwuaCB1Y25pZC5oIFwKKyAgICAgaW5jbHVkZS9saW5lLW1hcC5oIGluY2x1ZGUvc3ltdGFiLmggaW5jbHVkZS9jcHAtaWQtZGF0YS5oIFwKKy0gICAgaW5jbHVkZS9jcHBsaWIuaCBpbmNsdWRlL21rZGVwcy5oIHN5c3RlbS5oCisrICAgIGluY2x1ZGUvY3BwbGliLmggaW5jbHVkZS9ta2RlcHMuaCBzeXN0ZW0uaCBpbmNsdWRlL2ZpbGUtbWFwLmgKKyAKKyBUQUdTOiAkKFRBR1NfU09VUkNFUykKKyAJY2QgJChzcmNkaXIpICYmIGV0YWdzICQoVEFHU19TT1VSQ0VTKQorZGlmZiAtLWdpdCBhL2xpYmNwcC9maWxlLW1hcC5jIGIvbGliY3BwL2ZpbGUtbWFwLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMTgwMzVlZjZhNzIKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmNwcC9maWxlLW1hcC5jCitAQCAtMCwwICsxLDkyIEBACisrLyogTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fCisrICAgYW5kIF9fYnVpbHRpbl9GSUxFICgpLgorKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorK2xhdGVyIHZlcnNpb24uCisrCisrVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKytNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKytZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisrPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyBJbiBvdGhlciB3b3JkcywgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUgdGhpcyBwcm9ncmFtLgorKyBZb3UgYXJlIGZvcmJpZGRlbiB0byBmb3JiaWQgYW55b25lIGVsc2UgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZQorKyB3aGF0IHlvdSBnaXZlIHRoZW0uICAgSGVscCBzdGFtcCBvdXQgc29mdHdhcmUtaG9hcmRpbmchICAqLworKworKyNpbmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVkZSAic3lzdGVtLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisrCisrLyogU3RydWN0dXJlIHJlY29yZGluZyB0aGUgbWFwcGluZyBmcm9tIHNvdXJjZSBmaWxlIGFuZCBkaXJlY3RvcnkKKysgICBuYW1lcyBhdCBjb21waWxlIHRpbWUgdG8gX19GSUxFX18gKi8KKyt0eXBlZGVmIHN0cnVjdCBmaWxlX3ByZWZpeF9tYXAKKyt7CisrICBjb25zdCBjaGFyICpvbGRfcHJlZml4OworKyAgY29uc3QgY2hhciAqbmV3X3ByZWZpeDsKKysgIHNpemVfdCBvbGRfbGVuOworKyAgc2l6ZV90IG5ld19sZW47CisrICBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwICpuZXh0OworK30gZmlsZV9wcmVmaXhfbWFwOworKworKy8qIExpbmtlZCBsaXN0IG9mIHN1Y2ggc3RydWN0dXJlcy4gICovCisrc3RhdGljIGZpbGVfcHJlZml4X21hcCAqZmlsZV9wcmVmaXhfbWFwczsKKysKKysvKiBSZWNvcmQgcHJlZml4IG1hcHBpbmcgb2YgX19GSUxFX18uICBBUkcgaXMgdGhlIGFyZ3VtZW50IHRvCisrICAgLWZmaWxlLXByZWZpeC1tYXAgYW5kIG11c3QgYmUgb2YgdGhlIGZvcm0gT0xEPU5FVy4gICovCisraW50CisrYWRkX2ZpbGVfcHJlZml4X21hcCAoY29uc3QgY2hhciAqYXJnKQorK3sKKysgIGZpbGVfcHJlZml4X21hcCAqbWFwOworKyAgY29uc3QgY2hhciAqcDsKKysKKysgIHAgPSBzdHJjaHIgKGFyZywgJz0nKTsKKysgIGlmICghcCkKKysgIHsKKysgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKKysgICAgICByZXR1cm4gLTE7CisrICB9CisrICBtYXAgPSBYTkVXIChmaWxlX3ByZWZpeF9tYXApOworKyAgbWFwLT5vbGRfcHJlZml4ID0geHN0cm5kdXAgKGFyZywgcCAtIGFyZyk7CisrICBtYXAtPm9sZF9sZW4gPSBwIC0gYXJnOworKyAgcCsrOworKyAgbWFwLT5uZXdfcHJlZml4ID0geHN0cmR1cCAocCk7CisrICBtYXAtPm5ld19sZW4gPSBzdHJsZW4gKHApOworKyAgbWFwLT5uZXh0ID0gZmlsZV9wcmVmaXhfbWFwczsKKysgIGZpbGVfcHJlZml4X21hcHMgPSBtYXA7CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrLyogUGVyZm9ybSB1c2VyLXNwZWNpZmllZCBtYXBwaW5nIG9mIF9fRklMRV9fIHByZWZpeGVzLiAgUmV0dXJuCisrICAgdGhlIG5ldyBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gZmlsZW5hbWUuICAqLworKworK2NvbnN0IGNoYXIgKgorK3JlbWFwX2ZpbGVfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3sKKysgIGZpbGVfcHJlZml4X21hcCAqbWFwOworKyAgY2hhciAqczsKKysgIGNvbnN0IGNoYXIgKm5hbWU7CisrICBzaXplX3QgbmFtZV9sZW47CisrCisrICBmb3IgKG1hcCA9IGZpbGVfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQorKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQorKyAgICAgIGJyZWFrOworKyAgaWYgKCFtYXApCisrICAgIHJldHVybiBmaWxlbmFtZTsKKysgIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKKysgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7CisrICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7CisrICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKKysgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOworKworKyAgcmV0dXJuIHhzdHJkdXAgKHMpOworK30KKysKKysKK2RpZmYgLS1naXQgYS9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44NzUwMzE1MmQyNworLS0tIC9kZXYvbnVsbAorKysrIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAorQEAgLTAsMCArMSwzMCBAQAorKy8qIE1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXworKyAgIGFuZCBfX2J1aWx0aW5fRklMRSAoKS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKytUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKytsYXRlciB2ZXJzaW9uLgorKworK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKythbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysgSW4gb3RoZXIgd29yZHMsIHlvdSBhcmUgd2VsY29tZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlIHRoaXMgcHJvZ3JhbS4KKysgWW91IGFyZSBmb3JiaWRkZW4gdG8gZm9yYmlkIGFueW9uZSBlbHNlIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUKKysgd2hhdCB5b3UgZ2l2ZSB0aGVtLiAgIEhlbHAgc3RhbXAgb3V0IHNvZnR3YXJlLWhvYXJkaW5nISAgKi8KKysKKysjaWZuZGVmIExJQkNQUF9GSUxFX01BUF9ICisrI2RlZmluZSBMSUJDUFBfRklMRV9NQVBfSAorKworK2NvbnN0IGNoYXIgKiByZW1hcF9maWxlX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisraW50IGFkZF9maWxlX3ByZWZpeF9tYXAgKGNvbnN0IGNoYXIgKmFyZyk7CisrCisrI2VuZGlmIC8qICFMSUJDUFBfRklMRV9NQVBfSCAgKi8KK2RpZmYgLS1naXQgYS9saWJjcHAvbWFjcm8uYyBiL2xpYmNwcC9tYWNyby5jCitpbmRleCBkZTE4YzIyMTBjZi4uMjc0OGM3MGQ1MjAgMTAwNjQ0CistLS0gYS9saWJjcHAvbWFjcm8uYworKysrIGIvbGliY3BwL21hY3JvLmMKK0BAIC0yNiw2ICsyNiw3IEBAIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlICJjcHBsaWIuaCIKKyAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKysjaW5jbHVkZSAiZmlsZS1tYXAuaCIKKyAKKyB0eXBlZGVmIHN0cnVjdCBtYWNyb19hcmcgbWFjcm9fYXJnOworIC8qIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgdGhlIHRva2VucyBvZiBhIG1hY3JvIGFyZ3VtZW50LiAgVGhlc2UKK0BAIC0zMDEsNiArMzAyLDcgQEAgX2NwcF9idWlsdGluX21hY3JvX3RleHQgKGNwcF9yZWFkZXIgKnBmaWxlLCBjcHBfaGFzaG5vZGUgKm5vZGUsCisgCSAgICBpZiAoIW5hbWUpCisgCSAgICAgIGFib3J0ICgpOworIAkgIH0KKysJbmFtZSA9IHJlbWFwX2ZpbGVfZmlsZW5hbWUgKG5hbWUpOworIAlsZW4gPSBzdHJsZW4gKG5hbWUpOworIAlidWYgPSBfY3BwX3VuYWxpZ25lZF9hbGxvYyAocGZpbGUsIGxlbiAqIDIgKyAzKTsKKyAJcmVzdWx0ID0gYnVmOworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQyLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Mi1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI0NzE2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Mi1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBkZGRkYzczMzU1MzlmYjhhNmQzMGJlYmEyMTc4MTc2MmRmMTU5MTg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBNYXIgMjAxNiAwNTozOTo1OSAtMDQwMAorU3ViamVjdDogW1BBVENIIDQyLzQ3XSBSZXVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcAorCitUaGUgb2UtY29yZSBtYXkgdXNlIGV4dGVybmFsIHRvb2xjaGFpbiB0byBjb21waWxlLAord2hpY2ggbWF5IG5vdCBzdXBwb3J0IC1mZmlsZS1wcmVmaXgtbWFwLgorCitTaW5jZSB3ZSB1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIGRvIHRoZSBzYW1lIHRoaW5nLAorc28gd2UgY291bGQgcmV1c2UgaXQgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9vcHRzLWdsb2JhbC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL29wdHMtZ2xvYmFsLmMgYi9nY2Mvb3B0cy1nbG9iYWwuYworaW5kZXggNTBiYWQ3N2MzNDcuLjMyYjFkMjg2NzIxIDEwMDY0NAorLS0tIGEvZ2NjL29wdHMtZ2xvYmFsLmMKKysrKyBiL2djYy9vcHRzLWdsb2JhbC5jCitAQCAtMzEsNiArMzEsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNpbmNsdWRlICJsYW5naG9va3MuaCIKKyAjaW5jbHVkZSAiZGJnY250LmgiCisgI2luY2x1ZGUgImRlYnVnLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisgI2luY2x1ZGUgIm91dHB1dC5oIgorICNpbmNsdWRlICJwbHVnaW4uaCIKKyAjaW5jbHVkZSAidG9wbGV2LmgiCitAQCAtMzU3LDYgKzM1OCw5IEBAIGhhbmRsZV9jb21tb25fZGVmZXJyZWRfb3B0aW9ucyAodm9pZCkKKyAKKyAJY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgorIAkgIGFkZF9kZWJ1Z19wcmVmaXhfbWFwIChvcHQtPmFyZyk7CisrCisrCSAgLyogUmV1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAgKi8KKysJICBhZGRfZmlsZV9wcmVmaXhfbWFwIChvcHQtPmFyZyk7CisgCSAgYnJlYWs7CisgCisgCWNhc2UgT1BUX2ZkdW1wXzoKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0My1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQzLWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRhNWM4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0My1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gNWJjOTdiZTM4ODQ4NWE1ZjhkZDg1ZGIzNDM3MmExMjk5YmZmZDI2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjQgTWFyIDIwMTYgMTE6MjM6MTQgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0My80N10gZ2NjL2ZpbmFsLmM6IC1mZGVidWctcHJlZml4LW1hcCBzdXBwb3J0IHRvIHJlbWFwCisgc291cmNlcyB3aXRoIHJlbGF0aXZlIHBhdGgKKworUFIgb3RoZXIvNzA0MjgKKyogZmluYWwuYyAocmVtYXBfZGVidWdfZmlsZW5hbWUpOiBVc2UgbHJlYWxwYXRoIHRvIHRyYW5zbGF0ZQorcmVsYXRpdmUgcGF0aCBiZWZvcmUgcmVtYXBwaW5nCisKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcwNDI4CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9maW5hbC5jIHwgMTUgKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jCitpbmRleCA4MjAxNjJiMmQyOC4uZDc0Y2I5MDFhYmQgMTAwNjQ0CistLS0gYS9nY2MvZmluYWwuYworKysrIGIvZ2NjL2ZpbmFsLmMKK0BAIC0xNTU5LDE2ICsxNTU5LDI1IEBAIHJlbWFwX2RlYnVnX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICBzaXplX3QgbmFtZV9sZW47CisgCisrICAvKiBTdXBwb3J0IHRvIHJlbWFwIGZpbGVuYW1lIHdpdGggcmVsYXRpdmUgcGF0aCAgKi8KKysgIGNoYXIgKnJlYWxwYXRoID0gbHJlYWxwYXRoIChmaWxlbmFtZSk7CisrICBpZiAocmVhbHBhdGggPT0gTlVMTCkKKysgICAgcmV0dXJuIGZpbGVuYW1lOworKworICAgZm9yIChtYXAgPSBkZWJ1Z19wcmVmaXhfbWFwczsgbWFwOyBtYXAgPSBtYXAtPm5leHQpCistICAgIGlmIChmaWxlbmFtZV9uY21wIChmaWxlbmFtZSwgbWFwLT5vbGRfcHJlZml4LCBtYXAtPm9sZF9sZW4pID09IDApCisrICAgIGlmIChmaWxlbmFtZV9uY21wIChyZWFscGF0aCwgbWFwLT5vbGRfcHJlZml4LCBtYXAtPm9sZF9sZW4pID09IDApCisgICAgICAgYnJlYWs7CisgICBpZiAoIW1hcCkKKy0gICAgcmV0dXJuIGZpbGVuYW1lOworLSAgbmFtZSA9IGZpbGVuYW1lICsgbWFwLT5vbGRfbGVuOworKyAgICB7CisrICAgICAgZnJlZSAocmVhbHBhdGgpOworKyAgICAgIHJldHVybiBmaWxlbmFtZTsKKysgICAgfQorKyAgbmFtZSA9IHJlYWxwYXRoICsgbWFwLT5vbGRfbGVuOworICAgbmFtZV9sZW4gPSBzdHJsZW4gKG5hbWUpICsgMTsKKyAgIHMgPSAoY2hhciAqKSBhbGxvY2EgKG5hbWVfbGVuICsgbWFwLT5uZXdfbGVuKTsKKyAgIG1lbWNweSAocywgbWFwLT5uZXdfcHJlZml4LCBtYXAtPm5ld19sZW4pOworICAgbWVtY3B5IChzICsgbWFwLT5uZXdfbGVuLCBuYW1lLCBuYW1lX2xlbik7CisrICBmcmVlIChyZWFscGF0aCk7CisgICByZXR1cm4gZ2djX3N0cmR1cCAocyk7CisgfQorIAwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0NC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0NC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzlhZjliCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ0LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCkBAIC0wLDAgKzEsMTI0IEBACitGcm9tIDg0N2FlYzc2NDU0MDYzNmVjNjU0ZmQ3YTAxMmUyNzFhZmE4ZDRlMGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBBcHIgMjAxNiAyMDowMzoyOCArMDAwMAorU3ViamVjdDogW1BBVENIIDQ0LzQ3XSBsaWJnY2M6IEFkZCBrbm9iIHRvIHVzZSBsZGJsLTEyOCBvbiBwcGMKKworbXVzbCBkb2VzIG5vdCBzdXBwb3J0IGxkYmwgMTI4IHNvIHdlIGNhbiBub3QgYXNzdW1lCit0aGF0IGxpbnV4IGFzIGEgd2hvbGUgc3VwcG9ydHMgbGRibC0xMjggYml0cywgaW5zdGVhZAorYWN0IHVwb24gY29uZmlndXJlIG9wdGlvbiBwYXNzZWQgdG8gZ2NjIGFuZCBhc3N1bWUgbm8KK29uIG11c2wgYW5kIHllcyBvdGhlcndpc2UgaWYgbm8gb3B0aW9uIGlzIHBhc3NlZCBzaW5jZQorZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gYXNzdW1lIGxkYmwxMjggaXQgZG9lcyBub3QKK2NoYW5nZSB0aGUgZGVmYXVsdHMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbGliZ2NjL01ha2VmaWxlLmluICAgICAgICAgICB8ICAxICsKKyBsaWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IHwgIDUgKysrKy0KKyBsaWJnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCisgbGliZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDEyICsrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZ2NjL2NvbmZpZ3VyZQorCitkaWZmIC0tZ2l0IGEvbGliZ2NjL01ha2VmaWxlLmluIGIvbGliZ2NjL01ha2VmaWxlLmluCitpbmRleCBhMWEzOTJkZTg4ZC4uMmZlNjg4OWEzNDIgMTAwNjQ0CistLS0gYS9saWJnY2MvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmdjYy9NYWtlZmlsZS5pbgorQEAgLTQ4LDYgKzQ4LDcgQEAgdW53aW5kX2hlYWRlciA9IEB1bndpbmRfaGVhZGVyQAorIG1kX3Vud2luZF9oZWFkZXIgPSBAbWRfdW53aW5kX2hlYWRlckAKKyBzZnBfbWFjaGluZV9oZWFkZXIgPSBAc2ZwX21hY2hpbmVfaGVhZGVyQAorIHRocmVhZF9oZWFkZXIgPSBAdGhyZWFkX2hlYWRlckAKKyt3aXRoX2xkYmwxMjggPSBAd2l0aF9sZGJsMTI4QAorIAorIGhvc3Rfbm9uY2Fub25pY2FsID0gQGhvc3Rfbm9uY2Fub25pY2FsQAorIHJlYWxfaG9zdF9ub25jYW5vbmljYWwgPSBAcmVhbF9ob3N0X25vbmNhbm9uaWNhbEAKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAoraW5kZXggNGY2ZDRjNGE0ZDIuLmM1MGRkOTRhMmRhIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAorKysrIGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAorQEAgLTEsMyArMSw2IEBACisgU0hMSUJfTUFQRklMRVMgKz0gJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvbGliZ2NjLWdsaWJjLnZlcgorIAorLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjggLW1uby1taW5pbWFsLXRvYworK2lmZXEgKCQod2l0aF9sZGJsMTI4KSx5ZXMpCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTEyOAorK2VuZGlmCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbW5vLW1pbmltYWwtdG9jCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZSBiL2xpYmdjYy9jb25maWd1cmUKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CitpbmRleCA0NWM0NTk3ODhjMy4uZTJkMTliMTQ0YjgKKy0tLSBhL2xpYmdjYy9jb25maWd1cmUKKysrKyBiL2xpYmdjYy9jb25maWd1cmUKK0BAIC02MTgsNiArNjE4LDcgQEAgYnVpbGRfdmVuZG9yCisgYnVpbGRfY3B1CisgYnVpbGQKKyB3aXRoX2FpeF9zb25hbWUKKyt3aXRoX2xkYmwxMjgKKyBlbmFibGVfdnRhYmxlX3ZlcmlmeQorIGVuYWJsZV9zaGFyZWQKKyBsaWJnY2NfdG9wZGlyCitAQCAtNjY3LDYgKzY2OCw3IEBAIHdpdGhfY3Jvc3NfaG9zdAorIHdpdGhfbGQKKyBlbmFibGVfc2hhcmVkCisgZW5hYmxlX3Z0YWJsZV92ZXJpZnkKKyt3aXRoX2xvbmdfZG91YmxlXzEyOAorIHdpdGhfYWl4X3NvbmFtZQorIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicworIHdpdGhfc2xpYmRpcgorQEAgLTEzMjQsNiArMTMyNiw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXRhcmdldC1zdWJkaXI9U1VCRElSICAgICAgQ29uZmlndXJpbmcgaW4gYSBzdWJkaXJlY3RvcnkgZm9yIHRhcmdldAorICAgLS13aXRoLWNyb3NzLWhvc3Q9SE9TVCAgICAgICAgICAgQ29uZmlndXJpbmcgd2l0aCBhIGNyb3NzIGNvbXBpbGVyCisgICAtLXdpdGgtbGQgICAgICAgICAgICAgICBhcnJhbmdlIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGxkIChmdWxsIHBhdGhuYW1lKQorKyAgLS13aXRoLWxvbmctZG91YmxlLTEyOCAgdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdAorICAgLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWAorQEAgLTIyMDgsNiArMjIxMSwyMSBAQCBmaQorIAorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbG9uZy1kb3VibGUtMTI4IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyB3aXRoX2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKKytlbHNlCisrICBjYXNlICIke2hvc3R9IiBpbgorKyBwb3dlciotKi1tdXNsKikKKysgICB3aXRoX2xkYmwxMjg9Im5vIjs7CisrICopIHdpdGhfbGRibDEyOD0ieWVzIjs7CisrIGVzYWMKKysKKytmaQorKworKworKworKworICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWl4LXNvbmFtZSB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHt3aXRoX2FpeF9zb25hbWUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9haXhfc29uYW1lOyBjYXNlICIke2hvc3R9OiR7ZW5hYmxlX3NoYXJlZH0iIGluCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKK2luZGV4IGFmMTUxNDczNzA5Li5kYWRhNTI0MTZkYSAxMDA2NDQKKy0tLSBhL2xpYmdjYy9jb25maWd1cmUuYWMKKysrKyBiL2xpYmdjYy9jb25maWd1cmUuYWMKK0BAIC03Nyw2ICs3NywxOCBAQCBBQ19BUkdfRU5BQkxFKHZ0YWJsZS12ZXJpZnksCisgW2VuYWJsZV92dGFibGVfdmVyaWZ5PW5vXSkKKyBBQ19TVUJTVChlbmFibGVfdnRhYmxlX3ZlcmlmeSkKKyAKKytBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCisrW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKKysgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCisrICAgICAgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAorK1tjYXNlICIke2hvc3R9IiBpbgorKyBwb3dlciotKi1tdXNsKikKKysgICB3aXRoX2xkYmwxMjg9Im5vIjs7CisrICopIHdpdGhfbGRibDEyOD0ieWVzIjs7CisrIGVzYWMKKytdKQorK0FDX1NVQlNUKHdpdGhfbGRibDEyOCkKKysKKyBBQ19BUkdfV0lUSChhaXgtc29uYW1lLAorIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aF0sCisgICAgIFtzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8gcHJvdmlkZSBvbiBBSVhdKV0sCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDUtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWEwMzhjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDkyYmViODgzYWI1N2EyM2EzNWJhNzZjNDk2YmMxZjRjYWJiMTY5MGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IE1heSAyMDE2IDIxOjExOjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNDUvNDddIExpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitpbmRleCA3NmJlNzcxMDk2MC4uYTFlZTJlZTI2ZWQgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworKysrIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKK0BAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAorIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKKyAKKyBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCistCSQoU0hMSUJfTERGTEFHUykgXAorKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAorIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKKyAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCisgCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Ny1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVkMjJmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Ny1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSw5MSBAQAorRnJvbSA5Yjk1MWM4ZjZiMGFhZmY3YzE2ZGM0ZGI3MmI1ZTU2ZWM3MzgxMGJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBGZWIgMjAxNyAxMjo1NjowMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDQ3LzQ3XSBzeW5jIGdjYyBzdGRkZWYuaCB3aXRoIG11c2wKKworbXVzbCBkZWZpbmVzIHB0cmRpZmZfdCBzaXplX3QgYW5kIHdjaGFyX3QKK3NvIGRvbnQgZGVmaW5lIHRoZW0gaGVyZSBpZiBtdXNsIGlzIGRlZmluaW5pbmcgdGhlbQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCisgZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmggYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKK2luZGV4IDg3MmY0NTFjYWM5Li43ZTkwOTM4Mzg3YyAxMDA2NDQKKy0tLSBhL2djYy9naW5jbHVkZS9zdGRkZWYuaAorKysrIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCitAQCAtMTM0LDYgKzEzNCw3IEBAIF9UWVBFX3djaGFyX3Q7CisgI2lmbmRlZiBfX19pbnRfcHRyZGlmZl90X2gKKyAjaWZuZGVmIF9HQ0NfUFRSRElGRl9UCisgI2lmbmRlZiBfUFRSRElGRl9UX0RFQ0xBUkVEIC8qIERyYWdvbkZseSAqLworKyNpZm5kZWYgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCisgI2RlZmluZSBfUFRSRElGRl9UCisgI2RlZmluZSBfVF9QVFJESUZGXworICNkZWZpbmUgX1RfUFRSRElGRgorQEAgLTE0MywxMCArMTQ0LDEyIEBAIF9UWVBFX3djaGFyX3Q7CisgI2RlZmluZSBfX19pbnRfcHRyZGlmZl90X2gKKyAjZGVmaW5lIF9HQ0NfUFRSRElGRl9UCisgI2RlZmluZSBfUFRSRElGRl9UX0RFQ0xBUkVECisrI2RlZmluZSBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KKyAjaWZuZGVmIF9fUFRSRElGRl9UWVBFX18KKyAjZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gbG9uZyBpbnQKKyAjZW5kaWYKKyB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworKyNlbmRpZiAvKiBfX0RFRklORURfcHRyZGlmZl90ICovCisgI2VuZGlmIC8qIF9QVFJESUZGX1RfREVDTEFSRUQgKi8KKyAjZW5kaWYgLyogX0dDQ19QVFJESUZGX1QgKi8KKyAjZW5kaWYgLyogX19faW50X3B0cmRpZmZfdF9oICovCitAQCAtMTg0LDYgKzE4Nyw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7CisgI2lmbmRlZiBfR0NDX1NJWkVfVAorICNpZm5kZWYgX1NJWkVUXworICNpZm5kZWYgX19zaXplX3QKKysjaWZuZGVmIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLworICNkZWZpbmUgX19zaXplX3RfXwkvKiBCZU9TICovCisgI2RlZmluZSBfX1NJWkVfVF9fCS8qIENyYXkgVW5pY29zL01rICovCisgI2RlZmluZSBfU0laRV9UCitAQCAtMjAwLDYgKzIwNCw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7CisgI2RlZmluZSBfX19pbnRfc2l6ZV90X2gKKyAjZGVmaW5lIF9HQ0NfU0laRV9UCisgI2RlZmluZSBfU0laRVRfCisrI2RlZmluZSBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KKyAjaWYgKGRlZmluZWQgKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX18gPj0gNSkpIFwKKyAgIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAorICAgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCitAQCAtMjM1LDYgKzI0MCw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNlbmRpZiAvKiBfU0laRV9UICovCisgI2VuZGlmIC8qIF9fU0laRV9UX18gKi8KKyAjZW5kaWYgLyogX19zaXplX3RfXyAqLworKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCisgI3VuZGVmCV9fbmVlZF9zaXplX3QKKyAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF9zaXplX3QuICAqLworIAorQEAgLTI2NCw2ICsyNzAsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjaWZuZGVmIF9fX2ludF93Y2hhcl90X2gKKyAjaWZuZGVmIF9fSU5UX1dDSEFSX1RfSAorICNpZm5kZWYgX0dDQ19XQ0hBUl9UCisrI2lmbmRlZiBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCisgI2RlZmluZSBfX3djaGFyX3RfXwkvKiBCZU9TICovCisgI2RlZmluZSBfX1dDSEFSX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLworICNkZWZpbmUgX1dDSEFSX1QKK0BAIC0yNzksNiArMjg2LDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gKKyAjZGVmaW5lIF9HQ0NfV0NIQVJfVAorICNkZWZpbmUgX1dDSEFSX1RfREVDTEFSRUQKKysjZGVmaW5lIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KKyAKKyAvKiBPbiBCU0QvMzg2IDEuMSwgYXQgbGVhc3QsIG1hY2hpbmUvYW5zaS5oIGRlZmluZXMgX0JTRF9XQ0hBUl9UXworICAgIGluc3RlYWQgb2YgX1dDSEFSX1RfLCBhbmQgX0JTRF9SVU5FX1RfICh3aGljaCwgdW5saWtlIHRoZSBvdGhlcgorQEAgLTM0NCw2ICszNTIsNyBAQCB0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7CisgI2VuZGlmCisgI2VuZGlmIC8qIF9fV0NIQVJfVF9fICovCisgI2VuZGlmIC8qIF9fd2NoYXJfdF9fICovCisrI2VuZGlmIC8qIF9fREVGSU5FRF93Y2hhcl90IG11c2wgKi8KKyAjdW5kZWYJX19uZWVkX3djaGFyX3QKKyAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF93Y2hhcl90LiAgKi8KKyAKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0OC1nY2MtRW5hYmxlLXN0YXRpYy1QSUUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDgtZ2NjLUVuYWJsZS1zdGF0aWMtUElFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NmU5MTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDgtZ2NjLUVuYWJsZS1zdGF0aWMtUElFLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNDRlZjgwNjg4YjU2YmVlYTg1YzAwNzA4NDBkZWExZTJhNGUzNGFlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEzIEp1biAyMDE3IDEyOjEyOjUyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNDkvNDldIGdjYzogRW5hYmxlIHN0YXRpYyBQSUUKKworU3RhdGljIFBJRSBzdXBwb3J0IGluIEdDQworc2VlCitodHRwczovL2djYy5nbnUub3JnL21sL2djYy8yMDE1LTA2L21zZzAwMDA4Lmh0bWwKKworc3RhcnRmaWxlcyBiZWZvcmUgcGF0Y2g6CisgLXN0YXRpYyAtPiBjcnQxLm8gY3J0aS5vIGNydGJlZ2luVC5vCisgLXN0YXRpYyAtUElFIC0+IGNydDEubyBjcnRpLm8gY3J0YmVnaW5ULm8KKyAKK2FmdGVyIHBhdGNoOgorIC1zdGF0aWMgLT4gY3J0MS5vIGNydGkubyBjcnRiZWdpblQubworIC1zdGF0aWMgLVBJRSAtPiByY3J0MS5vIGNydGkubyBjcnRiZWdpblMubworIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CisKKy0tLQorIGdjYy9jb25maWcvZ251LXVzZXIuaCB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvZ251LXVzZXIuaCBiL2djYy9jb25maWcvZ251LXVzZXIuaAoraW5kZXggZGU2MDViMC4uYjAzNWJiZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvZ251LXVzZXIuaAorKysrIGIvZ2NjL2NvbmZpZy9nbnUtdXNlci5oCitAQCAtNTIsMTEgKzUyLDExIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICNkZWZpbmUgR05VX1VTRVJfVEFSR0VUX1NUQVJURklMRV9TUEVDIFwKKyAgICIle3NoYXJlZDo7IFwKKyAgICAgIHBnfHB8cHJvZmlsZTpnY3J0MS5vJXM7IFwKKy0gICAgIHN0YXRpYzpjcnQxLm8lczsgXAorKyAgICAgc3RhdGljOiAleyIgUElFX1NQRUMgIjogcmNydDEubyVzOyA6Y3J0MS5vJXN9OyBcCisgICAgICAiIFBJRV9TUEVDICI6U2NydDEubyVzOyBcCisgICAgICA6Y3J0MS5vJXN9IFwKKyAgICBjcnRpLm8lcyBcCistICAgJXtzdGF0aWM6Y3J0YmVnaW5ULm8lczsgXAorKyAgICV7c3RhdGljOiAleyIgUElFX1NQRUMgIjogY3J0YmVnaW5TLm8lczsgOmNydGJlZ2luVC5vJXN9OyBcCisgICAgICBzaGFyZWR8IiBQSUVfU1BFQyAiOmNydGJlZ2luUy5vJXM7IFwKKyAgICAgIDpjcnRiZWdpbi5vJXN9IFwKKyAgICAle2Z2dGFibGUtdmVyaWZ5PW5vbmU6JXM7IFwKKworMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDUwLVJJU0MtVi1IYW5kbGUtbm9uLWxlZ2l0aW1hdGUtYWRkcmVzcy1pbi1yaXNjdl9sZWdpdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWExNGQwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMTYyMTBlNjI3MGUyMDBjZDQ4OTJhOTBlY2VmNjA4OTA2YmUzYTEzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtpdG8gQ2hlbmcgPGtpdG8uY2hlbmdAZ21haWwuY29tPgorRGF0ZTogVGh1LCA0IE1heSAyMDE3IDAyOjExOjEzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJJU0MtVjogSGFuZGxlIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MgaW4KKyByaXNjdl9sZWdpdGltaXplX21vdmUKKworR0NDIG1heSBnZW5lcmF0ZSBub24tbGVnaXRpbWF0ZSBhZGRyZXNzIGR1ZSB0byB3ZSBhbGxvdyBzb21lCitsb2FkL3N0b3JlIHdpdGggbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcyBpbiBwaWMubWQuCisKKyAgMjAxNy0wNS0xMiAgS2l0byBDaGVuZyAgPGtpdG8uY2hlbmdAZ21haWwuY29tPgorCisgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi5jIChyaXNjdl9sZWdpdGltaXplX21vdmUpOiBIYW5kbGUKKyAgICAgIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MuCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBnY2MvQ2hhbmdlTG9nICAgICAgICAgICAgfCAgNSArKysrKworIGdjYy9jb25maWcvcmlzY3YvcmlzY3YuYyB8IDE2ICsrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuYworaW5kZXggZjdmZWM0YmZjZjguLmQ1MTliZTE2NTlhIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jCisrKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMKK0BAIC0xMzg1LDYgKzEzODUsMjIgQEAgcmlzY3ZfbGVnaXRpbWl6ZV9tb3ZlIChlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggZGVzdCwgcnR4IHNyYykKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorIAorKyAgLyogUklTQy1WIEdDQyBtYXkgZ2VuZXJhdGUgbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcyBkdWUgdG8gd2UgcHJvdmlkZSBzb21lCisrICAgICBwYXR0ZXJuIGZvciBvcHRpbWl6ZSBhY2Nlc3MgUElDIGxvY2FsIHN5bWJvbCBhbmQgaXQncyBtYWtlIEdDQyBnZW5lcmF0ZQorKyAgICAgdW5yZWNvZ25pemFibGUgaW5zdHJ1Y3Rpb24gZHVyaW5nIG9wdG1pemluZy4gICovCisrCisrICBpZiAoTUVNX1AgKGRlc3QpICYmICFyaXNjdl9sZWdpdGltYXRlX2FkZHJlc3NfcCAobW9kZSwgWEVYUCAoZGVzdCwgMCksCisrCQkJCQkJICAgcmVsb2FkX2NvbXBsZXRlZCkpCisrICAgIHsKKysgICAgICBYRVhQIChkZXN0LCAwKSA9IHJpc2N2X2ZvcmNlX2FkZHJlc3MgKFhFWFAgKGRlc3QsIDApLCBtb2RlKTsKKysgICAgfQorKworKyAgaWYgKE1FTV9QIChzcmMpICYmICFyaXNjdl9sZWdpdGltYXRlX2FkZHJlc3NfcCAobW9kZSwgWEVYUCAoc3JjLCAwKSwKKysJCQkJCQkgIHJlbG9hZF9jb21wbGV0ZWQpKQorKyAgICB7CisrICAgICAgWEVYUCAoc3JjLCAwKSA9IHJpc2N2X2ZvcmNlX2FkZHJlc3MgKFhFWFAgKHNyYywgMCksIG1vZGUpOworKyAgICB9CisrCisgICByZXR1cm4gZmFsc2U7CisgfQorIAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy9maXgtc2VnbWVudGF0aW9uLWZhdWx0LXByZWNvbXBpbGVkLWhkci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1wcmVjb21waWxlZC1oZHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBhZGVmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1wcmVjb21waWxlZC1oZHIucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorCitQcmV2ZW50IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoaWNoIG9jY3VycyB3aGVuIHVzaW5nIGluY29ycmVjdAorc3RydWN0dXJlIHRyeWluZyB0byBhY2Nlc3MgbmFtZSBvZiBzb21lIG5hbWVkIG9wZXJhdG9ycywgc3VjaCBhcyAKK0NQUF9OT1QsIENQUF9BTkQgZXRjLiAidG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nIiBjYW5ub3QgYmUgdXNlZCBpbgordGhvc2UgY2FzZXMsIGFzIGlzIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYXQgYWxsLgorCisKK1tZT0NUTyAjMTE3MzhdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGliY3BwL2xleC5jCistLS0gYS9saWJjcHAvbGV4LmMKKysrKyBiL2xpYmNwcC9sZXguYworQEAgLTMyMjksMTEgKzMyMjksMjcgQEAKKyAgICAgc3BlbGxfaWRlbnQ6CisgICAgIGNhc2UgU1BFTExfSURFTlQ6CisgICAgICAgaWYgKGZvcnN0cmluZykKKy0JeworLQkgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCistCQkgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKKy0JICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7CistCX0KKysgICAgICAgIHsKKysgICAgICAgICAgaWYgKHRva2VuLT50eXBlID09IENQUF9OQU1FKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCisrICAgICAgICAgICAgICAgICAgICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7CisrICAgICAgICAgICAgICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIC8qIE5BTUVEX09QLCBjYW5ub3QgdXNlIG5vZGUuc3BlbGxpbmcgKi8KKysgICAgICAgICAgaWYgKHRva2VuLT5mbGFncyAmIE5BTUVEX09QKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IGNwcF9uYW1lZF9vcGVyYXRvcjJuYW1lICh0b2tlbi0+dHlwZSk7CisrICAgICAgICAgICAgICBpZiAoc3RyKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzdHIpOworKyAgICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXIsIHN0ciwgbGVuKTsKKysgICAgICAgICAgICAgICAgICBidWZmZXIgKz0gbGVuOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisgICAgICAgZWxzZQorIAlidWZmZXIgPSBfY3BwX3NwZWxsX2lkZW50X3VjbnMgKGJ1ZmZlciwgdG9rZW4tPnZhbC5ub2RlLm5vZGUpOworICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwppbmRleCA4NTdhYThmLi5hYTNiNTNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwpAQCAtNDMsNyArNDMsNyBAQAogICAgIHJldHVybiAiIgogCiBkZWYgZ2V0X2xvbmdfZG91YmxlX3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUUkFOU0xBVEVEX1RBUkdFVF9BUkNIJykgaW4gWyAncG93ZXJwYycsICdwb3dlcnBjNjQnIF0gYW5kIGQuZ2V0VmFyKCdUQ0xJQkMnKSBpbiBbICd1Y2xpYmMnLCAnZ2xpYmMnIF06CisgICAgaWYgZC5nZXRWYXIoJ1RSQU5TTEFURURfVEFSR0VUX0FSQ0gnKSBpbiBbICdwb3dlcnBjJywgJ3Bvd2VycGM2NCcgXSBhbmQgZC5nZXRWYXIoJ1RDTElCQycpIGluIFsgJ2dsaWJjJyBdOgogICAgICAgICByZXR1cm4gIi0td2l0aC1sb25nLWRvdWJsZS0xMjgiCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICItLXdpdGhvdXQtbG9uZy1kb3VibGUtMTI4IgpAQCAtMTA1LDYgKzEwNSw3IEBACiBCSU5WID0gIiR7UFZ9IgogI1MgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0iCiBTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgorCiBCID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCiAKIHRhcmdldF9pbmNsdWRlZGlyID89ICIke2luY2x1ZGVkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCmluZGV4IDAwZWY4OWUuLmUyY2UyMzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKQEAgLTIyLDYgKzIyLDggQEAKIEdDQ01VTFRJTElCID89ICItLWRpc2FibGUtbXVsdGlsaWIiCiBHQ0NUSFJFQURTID89ICJwb3NpeCIKIAorR0NDUElFID8/PSAiIgorCiBFWFRSQV9PRUNPTkYgPSAiXAogICAgICR7QFsnLS1lbmFibGUtY2xvY2FsZT1nZW5lcmljJywgJyddW2QuZ2V0VmFyKCdVU0VfTkxTJykgIT0gJ25vJ119IFwKICAgICAtLXdpdGgtZ251LWxkIFwKQEAgLTI5LDYgKzMxLDcgQEAKICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9JHtMQU5HVUFHRVN9IFwKICAgICAtLWVuYWJsZS10aHJlYWRzPSR7R0NDVEhSRUFEU30gXAogICAgICR7R0NDTVVMVElMSUJ9IFwKKyAgICAke0dDQ1BJRX0gXAogICAgIC0tZW5hYmxlLWM5OSBcCiAgICAgLS1lbmFibGUtbG9uZy1sb25nIFwKICAgICAtLWVuYWJsZS1zeW12ZXJzPWdudSBcCkBAIC01Myw5ICs1Niw3IEBACiAjIGluIHRoZSBjb25maWcubG9nIGZpbGVzICh3aGljaCBtaWdodCBub3QgZ2V0IGdlbmVyYXRlZCB1bnRpbCBkb19jb21waWxlCiAjIGhlbmNlIGJlaW5nIG1pc3NlZCBieSB0aGUgaW5zYW5lIGRvX2NvbmZpZ3VyZSBjaGVjaykuCiAKLSMgQnVpbGQgdWNsaWJjIGNvbXBpbGVycyB3aXRob3V0IGN4YV9hdGV4aXQgc3VwcG9ydAogRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eCA9ICIgLS1lbmFibGUtX19jeGFfYXRleGl0IgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1lbmFibGUtX19jeGFfYXRleGl0IgogCiBFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS13aXRoLWFiaT02NCAtLXdpdGgtYXJjaC02ND1taXBzNjQgLS13aXRoLXR1bmUtNjQ9bWlwczY0IgogRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzNjRlbCA9ICIgLS13aXRoLWFiaT02NCAtLXdpdGgtYXJjaC02ND1taXBzNjQgLS13aXRoLXR1bmUtNjQ9bWlwczY0IgpAQCAtNjYsMTQgKzY3LDYgQEAKIEVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2lzYTY0cjZlbCA9ICIgLS13aXRoLWFiaT02NCAtLXdpdGgtYXJjaC02ND1taXBzNjRyNiIKIEVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2lzYTY0cjYgPSAiIC0td2l0aC1hYmk9NjQgLS13aXRoLWFyY2gtNjQ9bWlwczY0cjYiCiAKLSMgQVJNdjYrIGFkZHMgYXRvbWljIGluc3RydWN0aW9ucyB0aGF0IGFmZmVjdCB0aGUgQUJJIGluIGxpYnJhcmllcyBidWlsdAotIyB3aXRoIFRVTkVfQ0NBUkdTIGluIGdjYy1ydW50aW1lLiAgTWFrZSB0aGUgY29tcGlsZXIgZGVmYXVsdCB0byBhCi0jIGNvbXBhdGlibGUgYXJjaGl0ZWN0dXJlLiAgYXJtdjYgYW5kIGFybXY3YSBjb3ZlciB0aGUgbWluaW11bSB0dW5lCi0jIGZlYXR1cmVzIHVzZWQgaW4gT0UuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY2ID0gIiAtLXdpdGgtYXJjaD1hcm12NiIKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjdhID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N3ZlID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgotCiBFWFRSQV9PRUNPTkZfR0NDX0ZMT0FUID8/PSAiIgogQ1BQRkxBR1MgPSAiIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCBlYzFkMjgxLi42ZDc3NjIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTYwLDYgKzYwLDcgQEAKIAogZG9fY29tcGlsZSAoKSB7CiAJb2VfcnVubWFrZSBhbGwtaG9zdCBjb25maWd1cmUtdGFyZ2V0LWxpYmdjYworCShjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlIGVuYWJsZS1leGVjdXRlLXN0YWNrLmMgdW53aW5kLmggbWQtdW53aW5kLXN1cHBvcnQuaCBzZnAtbWFjaGluZS5oIGd0aHItZGVmYXVsdC5oKQogfQogCiAjIEhhdmluZyBhbnl0aGluZyBhdXRvIGRlcGVuZGluZyBvbiBnY2MtY3Jvc3Mtc2RrIGlzIGEgcmVhbGx5IGJhZCBpZGVhLi4uCkBAIC04MCw3ICs4MSw3IEBACiAgICAgJHtpbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCiAgICAgJHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vYmluLyogXAogICAgICR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2xpYi8qIFwKLSAgICAke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS91c3IvaW5jbHVkZS8qIFwKKyAgICAke3ByZWZpeH0vJHtUQVJHRVRfU1lTfSR7dGFyZ2V0X2luY2x1ZGVkaXJ9LyogXAogIgogSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKIApAQCAtOTYsNyArOTcsNyBAQAogQklOUkVMUEFUSCA9ICIke0Bvcy5wYXRoLnJlbHBhdGgoZC5leHBhbmQoIiR7YmluZGlyfSIpLCBkLmV4cGFuZCgiJHtsaWJleGVjZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9IikpfSIKIAogZG9faW5zdGFsbCAoKSB7Ci0JKCBjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtdW53aW5kX2ggKQorCSggY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXVud2luZF9oLWZvcmJ1aWxkIGluc3RhbGwtdW53aW5kX2ggKQogCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1ob3N0CiAKIAkjIENsZWFudXAgc29tZSBvZiB0aGUgJHtsaWJkaXJ9eyxleGVjfS9nY2Mgc3R1ZmYgLi4uCkBAIC0xNTMsNyArMTU0LDcgQEAKIERFUEVORFMgKz0gIm5hdGl2ZXNkay1nbXAgbmF0aXZlc2RrLW1wZnIgbmF0aXZlc2RrLWxpYm1wYyAke0VMRlVUSUxTfSBuYXRpdmVzZGstemxpYiIKIFJERVBFTkRTXyR7UE59ICs9ICJuYXRpdmVzZGstbXBmciBuYXRpdmVzZGstbGlibXBjICR7RUxGVVRJTFN9IgogCi1TWVNURU1IRUFERVJTID0gIi91c3IvaW5jbHVkZSIKK1NZU1RFTUhFQURFUlMgPSAiJHt0YXJnZXRfaW5jbHVkZWRpcn0vIgogU1lTVEVNTElCUyA9ICIke3RhcmdldF9iYXNlX2xpYmRpcn0vIgogU1lTVEVNTElCUzEgPSAiJHt0YXJnZXRfbGliZGlyfS8iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbC5pbmMKaW5kZXggOTUwMmMyYi4uODkyYjFkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWwuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsLmluYwpAQCAtMzUsMTAgKzM1LDExIEBACiAKIGRvX2NvbXBpbGUgKCkgewogICAgIG9lX3J1bm1ha2UgYWxsLWdjYyBjb25maWd1cmUtdGFyZ2V0LWxpYmdjYworICAgIChjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlIGVuYWJsZS1leGVjdXRlLXN0YWNrLmMgdW53aW5kLmggbWQtdW53aW5kLXN1cHBvcnQuaCBzZnAtbWFjaGluZS5oIGd0aHItZGVmYXVsdC5oKQogfQogCiBkb19pbnN0YWxsICgpIHsKLQkoIGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC11bndpbmRfaCApCisJKCBjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtdW53aW5kX2gtZm9yYnVpbGQgaW5zdGFsbC11bndpbmRfaCkKIAlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtZ2NjCiAKIAkjIFdlIGRvbid0IHJlYWxseSBuZWVkIHRoaXMgKGhlcmUgc2hhcmVzLyBjb250YWlucyBtYW4vLCBpbmZvLywgbG9jYWxlLykuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF83LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwppbmRleCA0NTk4NWMzLi4xZTE4NGE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKQEAgLTU3LDYgKzU3LDcgQEAKIAlleHBvcnQgTERGTEFHU19GT1JfVEFSR0VUPSIke1RBUkdFVF9MREZMQUdTfSIKIAogCW9lX3J1bm1ha2UgYWxsLWhvc3QgY29uZmlndXJlLXRhcmdldC1saWJnY2MKKwkoY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSBlbmFibGUtZXhlY3V0ZS1zdGFjay5jIHVud2luZC5oIG1kLXVud2luZC1zdXBwb3J0Lmggc2ZwLW1hY2hpbmUuaCBndGhyLWRlZmF1bHQuaCkKIAkjIG5vdyBnZW5lcmF0ZSBzY3JpcHQgdG8gZHJpdmUgdGVzdGluZwogCWVjaG8gIiMhL3Vzci9iaW4vZW52IHNoIiA+JHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwogCXNldCA+PiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCkBAIC0xNTUsMjIgKzE1NiwyNCBAQAogQklOUkVMUEFUSCA9ICIke0Bvcy5wYXRoLnJlbHBhdGgoZC5leHBhbmQoIiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0vYmluLyR7VEFSR0VUX1NZU30iKSwgZC5leHBhbmQoIiR7bGliZXhlY2Rpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfSIpKX0iCiAKIGRvX2luc3RhbGwgKCkgewotCSggY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXVud2luZF9oICkKKwkoIGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC11bndpbmRfaC1mb3JidWlsZCBpbnN0YWxsLXVud2luZF9oICkKIAlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtaG9zdAogCiAJaW5zdGFsbCAtZCAke0R9JHt0YXJnZXRfYmFzZV9saWJkaXJ9CiAJaW5zdGFsbCAtZCAke0R9JHt0YXJnZXRfbGliZGlyfQotICAgIAorCiAJIyBMaW5rIGdmb3J0cmFuIHRvIGc3NyB0byBzYXRpc2Z5IG5vdC1zby1zbWFydCBjb25maWd1cmUgb3IgaGFyZCBjb2RlZCBnNzcKIAkjIGdmb3J0cmFuIGlzIGZ1bGx5IGJhY2t3YXJkcyBjb21wYXRpYmxlLiBUaGlzIGlzIGEgc2FmZSBhbmQgcHJhY3RpY2FsIHNvbHV0aW9uLiAKLQlsbiAtc2YgJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtwcmVmaXhfbmF0aXZlfS9iaW4vJHtUQVJHRVRfUFJFRklYfWdmb3J0cmFuICR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0vYmluLyR7VEFSR0VUX1BSRUZJWH1nNzcgfHwgdHJ1ZQorCWlmIFsgLW4gIiR7QGQuZ2V0VmFyKCdGT1JUUkFOJyl9IiBdOyB0aGVuCisJCWxuIC1zZiAke1NUQUdJTkdfRElSX05BVElWRX0ke3ByZWZpeF9uYXRpdmV9L2Jpbi8ke1RBUkdFVF9QUkVGSVh9Z2ZvcnRyYW4gJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtwcmVmaXhfbmF0aXZlfS9iaW4vJHtUQVJHRVRfUFJFRklYfWc3NyB8fCB0cnVlCisJCWZvcnRzeW1saW5rcz0iZzc3IGdmb3J0cmFuIgorCWZpCiAKLQkKIAkjIEluc2VydCBzeW1saW5rcyBpbnRvIGxpYmV4ZWMgc28gd2hlbiB0b29scyB3aXRob3V0IGEgcHJlZml4IGFyZSBzZWFyY2hlZCBmb3IsIHRoZSBjb3JyZWN0IG9uZXMgYXJlCiAJIyBmb3VuZC4gVGhlc2UgbmVlZCB0byBiZSByZWxhdGl2ZSBwYXRocyBzbyB0aGV5IHdvcmsgaW4gZGlmZmVyZW50IGxvY2F0aW9ucy4KIAlkZXN0PSR7RH0ke2xpYmV4ZWNkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vCiAJaW5zdGFsbCAtZCAkZGVzdAotCWZvciB0IGluIGFyIGFzIGxkIG5tIG9iamNvcHkgb2JqZHVtcCByYW5saWIgc3RyaXAgZzc3IGdjYyBjcHAgZ2ZvcnRyYW47IGRvCisJZm9yIHQgaW4gYXIgYXMgbGQgbGQuYmZkIGxkLmdvbGQgbm0gb2JqY29weSBvYmpkdW1wIHJhbmxpYiBzdHJpcCBnY2MgY3BwICRmb3J0c3ltbGlua3M7IGRvCiAJCWxuIC1zZiAke0JJTlJFTFBBVEh9LyR7VEFSR0VUX1BSRUZJWH0kdCAkZGVzdCR0CiAJCWxuIC1zZiAke0JJTlJFTFBBVEh9LyR7VEFSR0VUX1BSRUZJWH0kdCAke2Rlc3R9JHtUQVJHRVRfUFJFRklYfSR0CiAJZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc183LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc181LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc183LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF83LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka181LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKaW5kZXggMGRjNDA1Yy4uZWUwODUyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwpAQCAtMzQsNyArMzQsNiBAQAogCiBkb19jb25maWd1cmUgKCkgewogCWV4cG9ydCBDWFg9IiR7Q1hYfSAtbm9zdGRpbmMrKyAtbm9zdGRsaWIrKyIKLQogCWZvciBkIGluIGxpYmdjYyAke1JVTlRJTUVUQVJHRVR9OyBkbwogCQllY2hvICJDb25maWd1cmluZyAkZCIKIAkJcm0gLXJmICR7Qn0vJHtUQVJHRVRfU1lTfS8kZC8KQEAgLTQzLDYgKzQyLDkgQEAKIAkJY2htb2QgYSt4ICR7U30vJGQvY29uZmlndXJlCiAJCXJlbHBhdGg9JHtAb3MucGF0aC5yZWxwYXRoKCIke1N9LyRkIiwgIiR7Qn0vJHtUQVJHRVRfU1lTfS8kZCIpfQogCQkkcmVscGF0aC9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KKwkJaWYgWyAiJGQiID0gImxpYmdjYyIgXTsgdGhlbgorCQkJKGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgZW5hYmxlLWV4ZWN1dGUtc3RhY2suYyB1bndpbmQuaCBtZC11bndpbmQtc3VwcG9ydC5oIHNmcC1tYWNoaW5lLmggZ3Roci1kZWZhdWx0LmgpCisJCWZpCiAJZG9uZQogfQogRVhUUkFDT05GRlVOQ1MgKz0gImV4dHJhY3Rfc3Rhc2hlZF9idWlsZGRpciIKQEAgLTk5LDggKzEwMSw4IEBACiAKIAlpZiBbICIke1RDTElCQ30iICE9ICJnbGliYyIgXTsgdGhlbgogCQljYXNlICIke1RBUkdFVF9PU30iIGluCi0JCQkibGludXgtbXVzbCIgfCAibGludXgtdWNsaWJjIiB8ICJsaW51eC0qc3BlIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OwotCQkJImxpbnV4LW11c2xlYWJpIiB8ICJsaW51eC11Y2xpYmNlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CisJCQkibGludXgtbXVzbCIgfCAibGludXgtKnNwZSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgiOzsKKwkJCSJsaW51eC1tdXNsZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtZ251ZWFiaSI7OwogCQkJKikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OwogCQllc2FjCiAJCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7aW5jbHVkZWRpcn0vYysrLyR7QklOVn0vJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSRleHRyYV90YXJnZXRfb3MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV83LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYwppbmRleCBmOTc4ODViLi4zMTgzYjI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCkBAIC05Nyw2ICs5Nyw3IEBACiBGSUxFU19saWJ0c2FuLWRldiArPSAiXAogICAgICR7bGliZGlyfS9saWJ0c2FuLnNvIFwKICAgICAke2xpYmRpcn0vbGlidHNhbi5sYSBcCisgICAgJHtsaWJkaXJ9L2xpYnRzYW5fKi5vIFwKICIKIEZJTEVTX2xpYnRzYW4tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGlidHNhbi5hIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc181LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc183LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV83LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKaW5kZXggZWVmNDQzNC4uYjZlMzFmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKQEAgLTksNiArOSwxNCBAQAogCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4c3RkYmFzZSA9ICIgLS1lbmFibGUtY2xvY2FsZT1nbnUiCiAKKyMgQVJNdjYrIGFkZHMgYXRvbWljIGluc3RydWN0aW9ucyB0aGF0IGFmZmVjdCB0aGUgQUJJIGluIGxpYnJhcmllcyBidWlsdAorIyB3aXRoIFRVTkVfQ0NBUkdTIGluIGdjYy1ydW50aW1lLiAgTWFrZSB0aGUgY29tcGlsZXIgZGVmYXVsdCB0byBhCisjIGNvbXBhdGlibGUgYXJjaGl0ZWN0dXJlLiAgYXJtdjYgYW5kIGFybXY3YSBjb3ZlciB0aGUgbWluaW11bSB0dW5lCisjIGZlYXR1cmVzIHVzZWQgaW4gT0UuCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY2ID0gIiAtLXdpdGgtYXJjaD1hcm12NiIKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjdhID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N3ZlID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgorCiAjIGxpYmNjMSByZXF1cmVzIGdjY19jdl9vYmpkdW1wIHdoZW4gY3Jvc3MgYnVpbGQsIGJ1dCBnY2NfY3Zfb2JqZHVtcCBpcwogIyBzZXQgaW4gc3ViZGlyIGdjYywgc28gc3ViZGlyIGxpYmNjMSBjYW4ndCB1c2UgaXQsIGV4cG9ydCBpdCBoZXJlIHRvCiAjIGZpeCB0aGUgcHJvYmxlbS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY181LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzYxOGRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY181LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBnY2MtdGFyZ2V0LmluYwotCi0jIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NHQgZmFpbHMgd2l0aAotIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDM4OigudGV4dC51bmxpa2VseSsweDJmYSk6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BUk1fVEhNX0NBTEwgYWdhaW5zdCBzeW1ib2wgYGZhbmN5X2Fib3J0KGNoYXIgY29uc3QqLCBpbnQsIGNoYXIgY29uc3QqKScgZGVmaW5lZCBpbiAuZ2x1ZV83IHNlY3Rpb24gaW4gbGlua2VyIHN0dWJzCi0jIHwgZ2NjLTQuOC4xLXIwL2djYy00LjguMS9nY2MvY3AvZGVjbC5jOjc0NDI6KC50ZXh0LnVubGlrZWx5KzB4MzE4KTogYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dAotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzcuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY183LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIyMDhlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY183LjMuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCityZXF1aXJlIGdjYy10YXJnZXQuaW5jCisKKyMgQnVpbGRpbmcgd2l0aCB0aHVtYiBlbmFibGVkIG9uIGFybXY0dCBhcm12NXQgZmFpbHMgd2l0aAorIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDM4OigudGV4dC51bmxpa2VseSsweDJmYSk6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BUk1fVEhNX0NBTEwgYWdhaW5zdCBzeW1ib2wgYGZhbmN5X2Fib3J0KGNoYXIgY29uc3QqLCBpbnQsIGNoYXIgY29uc3QqKScgZGVmaW5lZCBpbiAuZ2x1ZV83IHNlY3Rpb24gaW4gbGlua2VyIHN0dWJzCisjIHwgZ2NjLTQuOC4xLXIwL2djYy00LjguMS9nY2MvY3AvZGVjbC5jOjc0NDI6KC50ZXh0LnVubGlrZWx5KzB4MzE4KTogYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dAorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF83LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwppbmRleCAzOGQxNjQzLi4xNTAwZmI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKQEAgLTUsOCArNSw4IEBACiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewogCWlmIFsgIiR7VENMSUJDfSIgIT0gImdsaWJjIiBdOyB0aGVuCiAJCWNhc2UgIiR7VEFSR0VUX09TfSIgaW4KLQkJCSJsaW51eC1tdXNsIiB8ICJsaW51eC11Y2xpYmMiIHwgImxpbnV4LSpzcGUiKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7Ci0JCQkibGludXgtbXVzbGVhYmkiIHwgImxpbnV4LXVjbGliY2VhYmkiKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4LWdudWVhYmkiOzsKKwkJCSJsaW51eC1tdXNsIiB8ICJsaW51eC0qc3BlIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OworCQkJImxpbnV4LW11c2xlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CiAJCQkqKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7CiAJCWVzYWMKIAkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzcuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW4uaW5jCmluZGV4IDQ4NDZkZWMuLjVmNWQ0YWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbi5pbmMKQEAgLTM3LDcgKzM3LDcgQEAKIH0KIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLURFUEVORFMgPSAiZ2NjLXJ1bnRpbWUiCitERVBFTkRTID0gImdjYy1ydW50aW1lIGdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCiAKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAke2xpYmRpcn0vbGliZ2ZvcnRyYW4ubGEgXAogICAgICR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2xpYmdmb3J0cmFuYmVnaW4uKiBcCiAgICAgJHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vbGliY2FmX3NpbmdsZSogXAorICAgICR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2ZpbmNsdWRlLyBcCiAiCiBGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYmdmb3J0cmFuLmEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl83LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi03LjEyLjEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTcuMTIuMS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNDc1NmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTcuMTIuMS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxOTM0NTMzNDdkZGNlZDdhY2I2YjFjZDJlZThmMmU0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjA3NjgwYjk3M2QzZWM5MmMzMGFkMDI5ZjFiN2RiZGUzODc2ODY5ZTZiM2ExMTdkOGE3ZTkwMDgxMTEzMTg2IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTMyY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLmluYwpAQCAtMCwwICsxLDIyIEBACitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisJCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjM2QzNWNkOTQ5MDg0YmU1M2I5MmNjMWUwMzQ4NWY4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmEyNGZmZTQ5MTdlNjcwMTRlZjkyNzNlYjhiNTQ3Y2I5NmExM2U1Y2E3NDg5NWIwNmQ2ODNiMzkxZjNmNGVlIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCmluZGV4IDIzOWIzNzUuLjkxNjRhMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCkBAIC01LDcgKzUsNiBAQAogCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCiBMVFROR1VTVF9hYXJjaDY0ID0gIiIKLUxUVE5HVVNUX2xpYmMtdWNsaWJjID0gIiIKIExUVE5HVVNUX21pcHNhcmNoID0gIiIKIExUVE5HVVNUX3NoNCA9ICIiCiBMVFROR1VTVF9saWJjLW11c2wgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzcuMTIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl83LjEyLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc183LjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfNy4xMi4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2gKaW5kZXggZmM2YzkyZi4uNGYwNmQ0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMmM4MWUxNzIxNmI0ZTQ3MWExY2UwYmRkYjUwZjM3NGIwNzIyYTJjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTFkYTA0NThiMzMzMjQ5ZWI5YzJmNGMxZjFlNTNmYTRiYzA4NWNjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDE5IEphbiAyMDE2IDE4OjE4OjUyIC0wODAwCiBTdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIG1vZGVfdApAQCAtMTQsNyArMTQsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci90YXJnZXQuaCBiL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgKLWluZGV4IDRjMTRjMjA0YmIuLmJkYWIxOGY3ZjcgMTAwNjQ0CitpbmRleCAzY2MyYmM0YmFiLi5lNmIxOWIwNmI5IDEwMDY0NAogLS0tIGEvZ2RiL2dkYnNlcnZlci90YXJnZXQuaAogKysrIGIvZ2RiL2dkYnNlcnZlci90YXJnZXQuaAogQEAgLTI4LDYgKzI4LDcgQEAKQEAgLTI2LDUgKzI2LDUgQEAKICBzdHJ1Y3QgZW1pdF9vcHM7CiAgc3RydWN0IGJ1ZmZlcjsKIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCmluZGV4IDlhOTIwMWIuLjgzYzRkZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGYzMTZkNjA0YjMxMmJlYWQ3ODU5NGYwMmUxMzU1NjMzZWRhOTUwN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDljZTYxZjk3Yjc3NTg3OTRmMDY4OTRlOTM0ZmJiMjU2ZmY2MjE2M2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjI3OjU1ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIG1ha2UgbWFuIGluc3RhbGwgcmVsYXRpdmUgdG8gREVTVERJUgpAQCAtMTEsNyArMTEsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KLWluZGV4IGEwNWY1MDc2N2EuLjhkMGZhNjRlYTggMTAwNjQ0CitpbmRleCAzOTQ0OTU2YjVkLi5hYTM1NWU4MzQ3IDEwMDY0NAogLS0tIGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgogKysrIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgogQEAgLTM1LDcgKzM1LDcgQEAgdG9vbGRpciA9ICQobGliZGlyKS8kKHRhcmdldF9hbGlhcykKQEAgLTI0LDUgKzI0LDUgQEAKICBpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACiAgCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKaW5kZXggNzRjMDAwNi4uNmY3OTU1YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGYyOTEyYjFkMmU1Yzg1NGExMTIxNzY2ODI5MDNiNjk2ZGEzM2UwMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGNhMGVmMDZiNzMyMDkxMmRmMzUwZTczMGU2M2Y5YmFmZGFhNmVhNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAyMyBNYXIgMjAxNiAwNjozMDowOSArMDAwMAogU3ViamVjdDogW1BBVENIIDAzLzEwXSBtaXBzLWxpbnV4LW5hdDogRGVmaW5lIF9BQklPMzIgaWYgbm90IGRlZmluZWQKQEAgLTE3LDEwICsxNywxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLWluZGV4IDBmMjBmMTY4MTQuLjcyMjUzMmJiNmMgMTAwNjQ0CitpbmRleCA4MDQxZDg0YmU3Li5mMmRmMWI5OTA3IDEwMDY0NAogLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKICsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1AQCAtNDYsNiArNDYsMTEgQEAKK0BAIC00Nyw2ICs0NywxMSBAQAogICNkZWZpbmUgUFRSQUNFX0dFVF9USFJFQURfQVJFQSAyNQogICNlbmRpZgogIApAQCAtMzMsNSArMzMsNSBAQAogICAgIHdlJ2xsIGNsZWFyIHRoaXMgYW5kIHVzZSBQVFJBQ0VfUEVFS1VTRVIgaW5zdGVhZC4gICovCiAgc3RhdGljIGludCBoYXZlX3B0cmFjZV9yZWdzZXRzID0gMTsKIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2gKaW5kZXggODQ3ZjI0Zi4uMzU3ZGIyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSA3ZWY3YjcwOTg4NTM3ODI3OWM0MjRlYWIwNTEwYjkzMjMzNDAwYjI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwZjZkNzExMThjYTkxNDAwMmZjYWQ3OGQyYzhhNTE4MjIzZDA2YmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNiBBdWcgMjAxNiAxNzozMjo1MCAtMDcwMAorRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxODozMjoxNCAtMDcwMAogU3ViamVjdDogW1BBVENIIDA0LzEwXSBwcGMvcHRyYWNlOiBEZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3Mgb24gIUdMSUJDCiAgc3lzdGVtcwogCkBAIC0xMyw3ICsxMyw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCi1pbmRleCAxZDAxM2YxODVmLi42ODA5OGIzZGI5IDEwMDY0NAoraW5kZXggMzNhOWZlYjEyYy4uMWE5MTQxZmFlZiAxMDA2NDQKIC0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCiArKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwogQEAgLTIxLDcgKzIxLDEzIEBACkBAIC0zMSw3ICszMSw3IEBACiAgI2luY2x1ZGUgIm5hdC9wcGMtbGludXguaCIKICAjaW5jbHVkZSAibGludXgtcHBjLXRkZXNjLmgiCiBkaWZmIC0tZ2l0IGEvZ2RiL25hdC9wcGMtbGludXguaCBiL2dkYi9uYXQvcHBjLWxpbnV4LmgKLWluZGV4IDg1ZmJjZDg0YmIuLmNiZWM5YzUzYjIgMTAwNjQ0CitpbmRleCA1ODM3ZWExNzY3Li43MjMzOTI5MTkyIDEwMDY0NAogLS0tIGEvZ2RiL25hdC9wcGMtbGludXguaAogKysrIGIvZ2RiL25hdC9wcGMtbGludXguaAogQEAgLTE4LDcgKzE4LDEzIEBACkBAIC00OSw1ICs0OSw1IEBACiAgCiAgLyogVGhpcyBzb21ldGltZXMgaXNuJ3QgZGVmaW5lZC4gICovCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCmluZGV4IGQwYzE1ZjYuLmNiMWI3YWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjY0OWUyY2NjZmIxMWRlYzA3NmFiYjAyZWFlMGFmYWI5NTYxNDgyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjBhYzY4ZjYwMTg4NWVhNjQ4MDIyOWE1YzhhODlhMDI1N2RhMzc2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6MzE6MTIgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNS8xMF0gQWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgU0ggKHNoNCkgYXJjaGl0ZWN0dXJlLgpAQCAtMTMsNyArMTMsNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi0gZ2RiL01ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogIGdkYi9jb25maWd1cmUuaG9zdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAgZ2RiL3NoLWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAgZ2RiL3NoLXRkZXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU0ICsrLS0KQEAgLTI0LDI1ICsyNCwyNiBAQAogIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jICAgICB8ICAgNCArCiAgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyAgICAgIHwgICAzICsKICBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyAgICAgfCAgIDQgKwotIDExIGZpbGVzIGNoYW5nZWQsIDYxNyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKyAxMSBmaWxlcyBjaGFuZ2VkLCA2MTggaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWluZGV4IDdiMmRmODY4NzguLjEwZjEyNjZmZTMgMTAwNjQ0CitpbmRleCA4YmU3M2JhNDIzLi5lMjg3ZmY2YTJlIDEwMDY0NAogLS0tIGEvZ2RiL01ha2VmaWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xNzUwLDYgKzE3NTAsNyBAQCBBTExERVBGSUxFUyA9IFwKLSAJc2NvcmUtdGRlcC5jIFwKLSAJc2VyLWdvMzIuYyBzZXItcGlwZS5jIHNlci10Y3AuYyBzZXItbWluZ3cuYyBcCi0gCXNoLXRkZXAuYyBzaDY0LXRkZXAuYyBzaG5ic2QtdGRlcC5jIHNobmJzZC1uYXQuYyBcCi0rCXNoLWxpbnV4LXRkZXAuYyBzaC1saW51eC1uYXQuYyBcCitAQCAtMjYzOCw2ICsyNjM4LDggQEAgQUxMREVQRklMRVMgPSBcCisgCXNoLW5ic2QtdGRlcC5jIFwKKyAJc2gtdGRlcC5jIFwKKyAJc2g2NC10ZGVwLmMgXAorKwlzaC1saW51eC10ZGVwLmMgXAorKwlzaC1saW51eC1uYXQuYyBcCiAgCXNvbDItdGRlcC5jIFwKLSAJc29saWItc3ZyNC5jIFwKLSAJc3BhcmMtbGludXgtbmF0LmMgc3BhcmMtbGludXgtdGRlcC5jIFwKKyAJc29saWItYWl4LmMgXAorIAlzb2xpYi1zcHUuYyBcCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5ob3N0IGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1pbmRleCBlZjI2NWViZTI5Li4zMjJhMWUyYzY3IDEwMDY0NAoraW5kZXggZDc0ZmQwNDkzNC4uYmUxMmRlMTQ0NiAxMDA2NDQKIC0tLSBhL2dkYi9jb25maWd1cmUuaG9zdAogKysrIGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1AQCAtMTQ5LDYgKzE0OSw3IEBAIHBvd2VycGMqLSotbGludXgqKQlnZGJfaG9zdD1saW51eCA7OworQEAgLTE1MCw2ICsxNTAsNyBAQCBwb3dlcnBjKi0qLWxpbnV4KikJZ2RiX2hvc3Q9bGludXggOzsKICAKICBzMzkwKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7CiAgCkBAIC01MSw3ICs1Miw3IEBACiAgCQkJZ2RiX2hvc3Q9bmJzZCA7OwogIHNoKi0qLW9wZW5ic2QqKQkJZ2RiX2hvc3Q9bmJzZCA7OwogZGlmZiAtLWdpdCBhL2dkYi9zaC1saW51eC10ZGVwLmMgYi9nZGIvc2gtbGludXgtdGRlcC5jCi1pbmRleCAyNDE4ZDI1MDEwLi5hYzhlYTllMmE0IDEwMDY0NAoraW5kZXggYzVjNzQ1ZDIxOC4uODRlNTM5YWFkMyAxMDA2NDQKIC0tLSBhL2dkYi9zaC1saW51eC10ZGVwLmMKICsrKyBiL2dkYi9zaC1saW51eC10ZGVwLmMKIEBAIC0xOCwxNCArMTgsMzcgQEAKQEAgLTU5OSw3ICs2MDAsNyBAQAogIAogICAgLyogR05VL0xpbnV4IHVzZXMgU1ZSNC1zdHlsZSBzaGFyZWQgbGlicmFyaWVzLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5jIGIvZ2RiL3NoLXRkZXAuYwotaW5kZXggNjk0ZjVmNzQyZC4uOGQ1NGRmN2ExYSAxMDA2NDQKK2luZGV4IDJjMmIyNjg0N2QuLjE0ZjUyODFlZDQgMTAwNjQ0CiAtLS0gYS9nZGIvc2gtdGRlcC5jCiArKysgYi9nZGIvc2gtdGRlcC5jCiBAQCAtMjEsNiArMjEsOSBAQApAQCAtNjIwLDcgKzYyMSw3IEBACiAgI2luY2x1ZGUgImRvdWJsZXN0LmgiCiAgI2luY2x1ZGUgIm9zYWJpLmgiCiAgI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgotQEAgLTY3LDIzICs3MSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzaF9jY19lbnVtW10gPSB7CitAQCAtNjgsMjMgKzcyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNoX2NjX2VudW1bXSA9IHsKICAKICBzdGF0aWMgY29uc3QgY2hhciAqc2hfYWN0aXZlX2NhbGxpbmdfY29udmVudGlvbiA9IHNoX2NjX2djYzsKICAKQEAgLTY0NCw3ICs2NDUsNyBAQAogIHN0YXRpYyBpbnQKICBzaF9pc19yZW5lc2FzX2NhbGxpbmdfY29udmVudGlvbiAoc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSkKICB7Ci1AQCAtMTA0Myw3ICsxMDMwLDcgQEAgc2hfdHJlYXRfYXNfZmx0X3AgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTEwNTIsNyArMTAzOSw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgICAgcmV0dXJuIDA7CiAgICAvKiBPdGhlcndpc2UgaWYgdGhlIHR5cGUgb2YgdGhhdCBtZW1iZXIgaXMgZmxvYXQsIHRoZSB3aG9sZSB0eXBlIGlzCiAgICAgICB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KQEAgLTY1Myw3ICs2NTQsNyBAQAogICAgICByZXR1cm4gMTsKICAgIC8qIE90aGVyd2lzZSBpdCdzIG5vdCB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KICAgIHJldHVybiAwOwotQEAgLTEwOTMsNyArMTA4MCw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTExMDIsNyArMTA4OSw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgICAgaW4gZm91ciByZWdpc3RlcnMgYXZhaWxhYmxlLiAgTG9vcCB0aHJ1IGFyZ3MgZnJvbSBmaXJzdCB0byBsYXN0LiAgKi8KICAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwgbmFyZ3M7IGFyZ251bSsrKQogICAgICB7CkBAIC02NjIsNyArNjYzLDcgQEAKICAgICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7CiAgICAgICAgdmFsID0gc2hfanVzdGlmeV92YWx1ZV9pbl9yZWcgKGdkYmFyY2gsIGFyZ3NbYXJnbnVtXSwgbGVuKTsKICAKLUBAIC0xODE5LDcgKzE4MDYsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAorQEAgLTE4MjgsNyArMTgxNSw3IEBAIHNoX2R3YXJmMl9mcmFtZV9pbml0X3JlZyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0sCiAgICAgIHJlZy0+aG93ID0gRFdBUkYyX0ZSQU1FX1JFR19VTkRFRklORUQ7CiAgfQogIApAQCAtNjcxLDcgKzY3Miw3IEBACiAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCiAgewogICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKLUBAIC0xODQ2LDcgKzE4MzMsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKK0BAIC0xODU1LDcgKzE4NDIsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKICAgIHJldHVybiBjYWNoZTsKICB9CiAgCkBAIC02ODAsNyArNjgxLDcgQEAKICBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotQEAgLTE5MTMsOSArMTkwMCw5IEBAIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCitAQCAtMTkyMiw5ICsxOTA5LDkgQEAgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKICAgIHJldHVybiBjYWNoZTsKICB9CiAgCkBAIC02OTMsNyArNjk0LDcgQEAKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKICAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPSBzaF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7Ci1AQCAtMTkyOSw3ICsxOTE2LDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCitAQCAtMTkzOCw3ICsxOTI1LDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCiAgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIEZyb2IgcmVnbnVtIHNvIHRoYXQgd2UgcHVsbCB0aGUgdmFsdWUgZnJvbQogICAgICAgdGhlIGNvcnJlY3QgcGxhY2UuICAqLwogICAgaWYgKHJlZ251bSA9PSBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpCkBAIC03MDIsNyArNzAzLDcgQEAKICAKICAgIGlmIChyZWdudW0gPCBTSF9OVU1fUkVHUyAmJiBjYWNoZS0+c2F2ZWRfcmVnc1tyZWdudW1dICE9IC0xKQogICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9tZW1vcnkgKHRoaXNfZnJhbWUsIHJlZ251bSwKLUBAIC0yMjM4LDggKzIyMjUsOCBAQCBzaF9yZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTIyNDcsOCArMjIzNCw4IEBAIHNoX3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKICBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQogIHsKQEAgLTcxMiw3ICs3MTMsNyBAQAogIAogICAgLyogU0g1IGlzIGhhbmRsZWQgZW50aXJlbHkgaW4gc2g2NC10ZGVwLmMuICAqLwogICAgaWYgKGluZm8uYmZkX2FyY2hfaW5mby0+bWFjaCA9PSBiZmRfbWFjaF9zaDUpCi1AQCAtMjI1NSw2ICsyMjQyLDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCitAQCAtMjI2NCw2ICsyMjUxLDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiAgICB0ZGVwID0gWENORVcgKHN0cnVjdCBnZGJhcmNoX3RkZXApOwogICAgZ2RiYXJjaCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCB0ZGVwKTsKICAKQEAgLTczMSw3ICs3MzIsNyBAQAogICAgc2V0X2dkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoLCAyICogVEFSR0VUX0NIQVJfQklUKTsKICAgIHNldF9nZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwogICAgc2V0X2dkYmFyY2hfbG9uZ19iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotQEAgLTI0MDUsMTAgKzI0MDQsMTEgQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKK0BAIC0yNDE4LDEwICsyNDE3LDExIEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTc0NSw3ICs3NDYsNyBAQAogICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX2ZyYW1lX3Vud2luZCk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuaCBiL2dkYi9zaC10ZGVwLmgKLWluZGV4IDY2Njk2OGY3ODcuLjYyYzY1YjU1ZWEgMTAwNjQ0CitpbmRleCBkMTVlZjA1MGUwLi5jNDY0MmNlZmE0IDEwMDY0NAogLS0tIGEvZ2RiL3NoLXRkZXAuaAogKysrIGIvZ2RiL3NoLXRkZXAuaAogQEAgLTIxLDYgKzIxLDEyIEBACkBAIC04MjgsNyArODI5LDcgQEAKICAgICAgIHdoZXJlIGVhY2ggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIGlzIHN0b3JlZCBpbnNpZGUgdGhlIGFzc29jaWF0ZWQKICAgICAgIGNvcmUgZmlsZSBzZWN0aW9uLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKLWluZGV4IDZkOWFlZjgxYmIuLjViNjZiNDI5ZDEgMTAwNjQ0CitpbmRleCBlMDdlNTU0M2YyLi5mNWU2MGUxMDAyIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKIEBAIC0xMTYsNiArMTE2LDExIEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKQEAgLTkxNyw1ICs5MTgsNSBAQAogIHN0YXRpYyBpbnQgY291bnQgPSAwOwogIAogLS0gCi0yLjExLjAKKzIuMTMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaAppbmRleCA1ZWQ4ZTgxLi44YjEzOTU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJhNmUyOGFkNWMwY2FkMTg5YTM2OTdkOTZkZTAzMWU0NzEzMDUyYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDVjOTJlYmQ1ZTExN2U0Y2YxMThjOTg0MTcxZTA3MDNkZmNmYjhjZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyNTowMyAtMDcwMAogU3ViamVjdDogW1BBVENIIDA2LzEwXSBEb250IGRpc2FibGUgbGlicmVhZGxpbmUuYSB3aGVuIHVzaW5nIC0tZGlzYWJsZS1zdGF0aWMKQEAgLTE5LDEwICsxOSwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFrZWZpbGUuZGVmCi1pbmRleCBlYTg0NTNlODUxLi4wZmM2NmM2OTRiIDEwMDY0NAoraW5kZXggMGQxM2YwMzdkMC4uOGJjZDg2ZTEzZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmRlZgogKysrIGIvTWFrZWZpbGUuZGVmCi1AQCAtMTA0LDcgKzEwNCw4IEBAIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IGxpYmljb252OworQEAgLTEwNSw3ICsxMDUsOCBAQCBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBsaWJpY29udjsKICAJCW1pc3Npbmc9IGluc3RhbGwtaHRtbDsKICAJCW1pc3Npbmc9IGluc3RhbGwtaW5mbzsgfTsKICBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBtNDsgfTsKQEAgLTMzLDEwICszMywxMCBAQAogIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpbTsgfTsKICBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSB0ZXhpbmZvOyBub19pbnN0YWxsPSB0cnVlOyB9OwogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IGNiMDEzNmU4ZjguLjU1ZjkwODVjMTYgMTAwNjQ0CitpbmRleCAzYWNiODNiOGRlLi5lMzQ4OTA3MTI4IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCi1AQCAtMjUzODUsNyArMjUzODUsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6CitAQCAtMjU0NzAsNyArMjU0NzAsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6CiAgCSAgJCRzLyQkbW9kdWxlX3NyY2Rpci9jb25maWd1cmUgXAogIAkgIC0tc3JjZGlyPSQke3RvcGRpcn0vJCRtb2R1bGVfc3JjZGlyIFwKICAJICAkKEhPU1RfQ09ORklHQVJHUykgLS1idWlsZD0ke2J1aWxkX2FsaWFzfSAtLWhvc3Q9JHtob3N0X2FsaWFzfSBcCkBAIC00Niw1ICs0Niw1IEBACiAgQGVuZGlmIHJlYWRsaW5lCiAgCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKaW5kZXggYTQyYzlmZC4uMzNiNGMzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ3NTQzYjQ0MjU1ZGE0YWU3MTQ0N2Q0ZTRkNjNlMGI2YWE0ZWQ5MDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDEyYTBiOGQ4MWUxZmRhNmJhOThhYmRjZThkNmYwOWY5NTU1ZWJjZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZSBNY0N1cmR5IDxhbWNjdXJkeUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI5OjA2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIHVzZSA8YXNtL3NnaWRlZnMuaD4KQEAgLTE5LDcgKzE5LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLWluZGV4IDcyMjUzMmJiNmMuLjUxZDhmYzhmNjYgMTAwNjQ0CitpbmRleCBmMmRmMWI5OTA3Li5kMjQ2NjRjYjU2IDEwMDY0NAogLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKICsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCiBAQCAtMzEsNyArMzEsNyBAQApAQCAtMzAsNyArMzAsNyBAQAogKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgogICNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgogICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gCisgI2luY2x1ZGUgImluZi1wdHJhY2UuaCIKIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaAppbmRleCBhZTljYjhjLi40ZjY0ZGVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYWFjZDc3MTg0ZGExMzI4OTA4ZGE0MWM5ZmRiNTVhZDg4MWZhMGU5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDNmMjQwYjM4ZWVkN2NkMDhmNmM1MGVhODk2NTcyZjEzMjdiNDM3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjMxOjQwIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMDgvMTBdIFVzZSBleG9ydGVkIGRlZmluaXRpb25zIG9mIFNJR1JUTUlOCkBAIC0yMCwxMCArMjAsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYwotaW5kZXggNWQ1ZWZhMGFmNC4uZTM0MjBiNDlhMCAxMDA2NDQKK2luZGV4IDhiMjkyNDVjM2QuLmY0MjRhZTk3MTEgMTAwNjQ0CiAtLS0gYS9nZGIvbGludXgtbmF0LmMKICsrKyBiL2dkYi9saW51eC1uYXQuYwotQEAgLTUwMjIsNiArNTAyMiw2IEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQorQEAgLTUwMjEsNiArNTAyMSw2IEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQogICAgLyogTlBUTCByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIFJUIHNpZ25hbHMsIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueQogICAgICAgd2F5IGZvciB0aGUgZGVidWdnZXIgdG8gcXVlcnkgdGhlIHNpZ25hbCBudW1iZXJzIC0gZm9ydHVuYXRlbHkKICAgICAgIHRoZXkgZG9uJ3QgY2hhbmdlLiAgKi8KQEAgLTMzLDEyICszMywxMiBAQAogKyAgc2lnYWRkc2V0IChzZXQsIFNJR1JUTUlOICsgMSk7CiAgfQogZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtbmF0LmggYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1pbmRleCAyYjQ4NWRiMTQxLi5kMDU4YWZjZGU4IDEwMDY0NAoraW5kZXggN2RkMThmZWZmZi4uMzUxMzdhYjM0ZiAxMDA2NDQKIC0tLSBhL2dkYi9uYXQvbGludXgtbmF0LmgKICsrKyBiL2dkYi9uYXQvbGludXgtbmF0LmgKLUBAIC04NSw0ICs4NSw4IEBAIGV4dGVybiBlbnVtIHRhcmdldF9zdG9wX3JlYXNvbiBsd3Bfc3RvcF9yZWFzb24gKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKK0BAIC05MCw0ICs5MCw4IEBAIGV4dGVybiB2b2lkIGxpbnV4X3N0b3BfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7CiAgCi0gZXh0ZXJuIHZvaWQgbGludXhfc3RvcF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKKyBleHRlcm4gaW50IGx3cF9pc19zdGVwcGluZyAoc3RydWN0IGx3cF9pbmZvICpsd3ApOwogIAogKyNpZm5kZWYgV19TVE9QQ09ERQogKyNkZWZpbmUgV19TVE9QQ09ERShzaWcpICgoc2lnKSA8PCA4IHwgMHg3ZikKQEAgLTQ2LDUgKzQ2LDUgQEAKICsKICAjZW5kaWYgLyogTElOVVhfTkFUX0ggKi8KIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKaW5kZXggZWQ2ZTBhZS4uMGMxMDNlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4YzM1ZDVkMTgyNWVkMDE3Y2M1OGVhOTEwMTE0MTJlNTRjMDAyZWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZjU0MDM2Yjg5MTA1NDA3MmIzZTQzZWE4ZGFhYTU3YWEzNjdiMmUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzU6MzkgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAwOS8xMF0gQ2hhbmdlIG9yZGVyIG9mIENGTEFHUwpAQCAtOSwyNiArOSwyMiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi0gZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi1pbmRleCBmODQ0YWI4ODUzLi4zZjg4ZGI1MmUzIDEwMDY0NAoraW5kZXggMDFkZmRjMGI4OS4uZjZhZWJlZjQ2NCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLUBAIC0xMzgsMTAgKzEzOCwxMCBAQCBDWFhGTEFHUyA9IEBDWFhGTEFHU0AKLSBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKLSAKLSAjIElOVEVSTkFMX0NGTEFHUyBpcyB0aGUgYWdncmVnYXRlIG9mIGFsbCBvdGhlciAqQ0ZMQUdTIG1hY3Jvcy4KLS1JTlRFUk5BTF9DRkxBR1NfQkFTRSA9ICAke0NPTVBJTEVSX0NGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCi0rSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSAgJHtHTE9CQUxfQ0ZMQUdTfSBcCitAQCAtMTQwLDcgKzE0MCw3IEBAIENQUEZMQUdTID0gQENQUEZMQUdTQAorIElOVEVSTkFMX0NGTEFHU19CQVNFID0gJHtDWFhGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCiAgCSR7UFJPRklMRV9DRkxBR1N9ICR7SU5DTFVERV9DRkxBR1N9ICR7Q1BQRkxBR1N9Ci0gSU5URVJOQUxfV0FSTl9DRkxBR1MgPSAgJHtJTlRFUk5BTF9DRkxBR1NfQkFTRX0gJChXQVJOX0NGTEFHUykKLS1JTlRFUk5BTF9DRkxBR1MgPSAgJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAtREdEQlNFUlZFUgotK0lOVEVSTkFMX0NGTEFHUyA9ICAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpICR7Q09NUElMRVJfQ0ZMQUdTfSAtREdEQlNFUlZFUgorIElOVEVSTkFMX1dBUk5fQ0ZMQUdTID0gJHtJTlRFUk5BTF9DRkxBR1NfQkFTRX0gJChXQVJOX0NGTEFHUykKKy1JTlRFUk5BTF9DRkxBR1MgPSAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpIC1ER0RCU0VSVkVSCisrSU5URVJOQUxfQ0ZMQUdTID0gJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAke0NPTVBJTEVSX0NGTEFHU30gLURHREJTRVJWRVIKICAKICAjIExERkxBR1MgaXMgc3BlY2lmaWNhbGx5IHJlc2VydmVkIGZvciBzZXR0aW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZQogICMgd2hlbiBydW5uaW5nIG1ha2UuCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaAppbmRleCAxOTM4YmViLi5jOTUwNzEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ODE2ZDM0OTcyNjZlNTVjMWM5MjFkN2NjMWM4YmY4MWM4ZWQwYjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZWFkMGRkMTQzNTIxYjBiYTY5YzllNzUzYmM0YTIzNmY5NDQ1YWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMTAgTWF5IDIwMTYgMDg6NDc6MDUgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAxMC8xMF0gcmVzb2x2ZSByZXN0cmljdCBrZXl3b3JkIGNvbmZsaWN0CkBAIC0xNSw3ICsxNSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi1pbmRleCBjNTU2YzVkYjIzLi4yYTYxMDdmY2Y4IDEwMDY0NAoraW5kZXggZDUzNWE2YTQ4Yi4uN2MzNGQ1YTFhYSAxMDA2NDQKIC0tLSBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKICsrKyBiL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKIEBAIC05MywyMCArOTMsMjAgQEAgc3RydWN0IHRpbWV2YWwKQEAgLTQyLDcgKzQyLDcgQEAKICsgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOwogICMgZW5kaWYKICBfR0xfQ1hYQUxJQVNXQVJOIChnZXR0aW1lb2ZkYXkpOwotICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKKyAjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl83LjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfNy4xMi4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYwppbmRleCA1YzEyY2E4Li45YjRjMTI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKQEAgLTEwNyw3ICsxMDcsNiBAQAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LWN2c3NlcnZlciBcCiAgICAgJHtiaW5kaXJ9L2dpdC1jdnNzZXJ2ZXIgXAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LWRpZmZ0b29sIFwKLSAgICAke2xpYmV4ZWNkaXJ9L2dpdC1jb3JlL2dpdC1yZWxpbmsgXAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LXNlbmQtZW1haWwgXAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LXN2biBcCiAgICAgJHtsaWJleGVjZGlyfS9naXQtY29yZS9naXQtaW5zdGF3ZWIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjExLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZjA3MmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgZ2l0LmluYwotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAotICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiNmE3YTczZGIwNzZiYjA1MTRiNjAyNzIwNjY5ZDY4NWMiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJhMWNkZDdjODIwZjkyYzQ0YWJiNTAwM2IzNmRjOGNiNzIwMWJhMzhlODc0NDgwMjM5OWY1OWM5NzI4NWNhMDQzIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gImU0MjY4YTZiNTE0Y2NkYjYyNGI2NDUwZmY1NTg4MWEzIgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gImVlNTY3ZTdiMGY5NTMzMzgxNjc5MzcxNGJiMzFjNTRlMjg4Y2Y4MDQxZjc3YTAwOTJiODVlNjJjOWMyOTc0ZjkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2UzODg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGdpdC5pbmMKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKKyAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImQyZGM1NTBmNjY5M2JhN2U1YjE2MjEyYjI3MTRmNTlmIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiMTQ5NzAwMTc3MmY2MzBkNDk4MDllOTgxNjcyZWRmZTNlM2NlMWExZDE4ZTkwNWNkNTM5YzRkMmY0ZGJjZDc1YSIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICIzMDM3ZDExYTRmNGNkZDE5NDM1ODcxYzI2N2NhNDhiNCIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJmOWIzMDJlZWIwOGNlMDg5MzRlN2FmYjQyMjgwY2U5Mjk0NDExZmJmNWY3YjZhYzNmY2MyMzZlODAzMWYxMGM1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWcvY29uZmlnLWd1ZXNzLXVjbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL2NvbmZpZy1ndWVzcy11Y2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwOTQxMTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWcvY29uZmlnLWd1ZXNzLXVjbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUGF0Y2ggY291cnRlc3kgZ2VudG9vLXBvcnRhZ2Uvc3lzLWRldmVsL2dudWNvbmZpZy9maWxlcy9hdXRvbWFrZS0xLjguNS1jb25maWctZ3Vlc3MtdWNsaWJjLnBhdGNoLgotCi11cGRhdGVkIHRvIDIwMDUwNTE2IGJ5IE1hcmNpbiAnSHJ3JyBKdXN6a2lld2ljeiAoYnkgaGFuZCkKLXVwZGF0ZWQgdG8gMjAwODAxMjMgYnkgTml0aW4gQSBLYW1ibGUgKGJ5IGhhbmQpCi11cGRhdGVkIHRvIDIwMTExMDAxIGJ5IFNhdWwgV29sZCAoYnkgaGFuZCkKLXVwZGF0ZWQgdG8gMjAxMjA4MTggYnkgTWFyY2luICdIcncnIEp1c3praWV3aWN6IChieSBoYW5kKQotCi1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJjaW4gSnVzemtpZXdpY3ogPG1hcmNpbi5qdXN6a2lld2ljekBsaW5hcm8ub3JnPgotCi0tLS0KLSBjb25maWcuZ3Vlc3MgfCAgIDY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQotCi0tLS0gZ2l0Lm9yaWcvY29uZmlnLmd1ZXNzCi0rKysgZ2l0L2NvbmZpZy5ndWVzcwotQEAgLTEzOCw2ICsxMzgsMTkgQEAgVU5BTUVfUkVMRUFTRT1gKHVuYW1lIC1yKSAyPi9kZXYvbnVsbGAgfAotIFVOQU1FX1NZU1RFTT1gKHVuYW1lIC1zKSAyPi9kZXYvbnVsbGAgIHx8IFVOQU1FX1NZU1RFTT11bmtub3duCi0gVU5BTUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCi0gCi0rIyBEZXRlY3QgdWNsaWJjIHN5c3RlbXMuCi0rCi0rTElCQz0iZ251IgotK2lmIFsgLWYgL3Vzci9pbmNsdWRlL2JpdHMvdUNsaWJjX2NvbmZpZy5oIF0KLSt0aGVuCi0rCUxJQkM9dWNsaWJjCi0rCWlmIFsgLW4gYGdyZXAgIiNkZWZpbmUgX19VQ0xJQkNfQ09ORklHX1ZFUlNJT05fXyIgL3Vzci9pbmNsdWRlL2JpdHMvdUNsaWJjX2NvbmZpZy5oYCBdCi0rCXRoZW4KLSsJCVVDTElCQ19TVUJWRVI9YHNlZCAtbiAiLyNkZWZpbmUgX19VQ0xJQkNfQ09ORklHX1ZFUlNJT05fXyAvcy8vL3AiIC91c3IvaW5jbHVkZS9iaXRzL3VDbGliY19jb25maWcuaGAKLSsJCUxJQkM9JExJQkMkVUNMSUJDX1NVQlZFUgotKwlmaQotK2ZpCi0rCi0gIyBOb3RlOiBvcmRlciBpcyBzaWduaWZpY2FudCAtIHRoZSBjYXNlIGJyYW5jaGVzIGFyZSBub3QgZXhjbHVzaXZlLgotIAotIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KLUBAIC04ODYsMTUgKzg5OSwxNSBAQCBFT0YKLSAJICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKLSAJZXNhYwotIAlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKLS0JaWYgdGVzdCAiJD8iID0gMCA7IHRoZW4gTElCQz0ibGliYzEiIDsgZWxzZSBMSUJDPSIiIDsgZmkKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQotKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJnbnVsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgYXJtKjpMaW51eDoqOiopCi0gCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKLSAJaWYgZWNobyBfX0FSTV9FQUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAotIAkgICAgfCBncmVwIC1xIF9fQVJNX0VBQklfXwotIAl0aGVuCi0tCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZWxzZQotIAkgICAgaWYgZWNobyBfX0FSTV9QQ1NfVkZQIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKLSAJCXwgZ3JlcCAtcSBfX0FSTV9QQ1NfVkZQCi1AQCAtOTA2LDE5ICs5MTksMTkgQEAgRU9GCi0gCWZpCi0gCWV4aXQgOzsKLSAgICAgYXZyMzIqOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBjcmlzOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LWF4aXMtbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBjcmlzdjMyOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LWF4aXMtbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBmcnY6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIGhleGFnb246TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIGkqODY6TGludXg6KjoqKQotIAlMSUJDPWdudQotQEAgLTkzMiwxMyArOTQ1LDEzIEBAIEVPRgotIAllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iCi0gCWV4aXQgOzsKLSAgICAgaWE2NDpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgbTMycio6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIG02OCo6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIG1pcHM6TGludXg6KjoqIHwgbWlwczY0OkxpbnV4Oio6KikKLSAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotQEAgLTk1Nyw1NCArOTcwLDU0IEBAIEVPRgotIAkjZW5kaWYKLSBFT0YKLSAJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgJ15DUFUnYAotLQl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQotKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtJHtMSUJDfSI7IGV4aXQ7IH0KLSAJOzsKLSAgICAgb3IzMjpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgcGFkcmU6TGludXg6KjoqKQotLQllY2hvIHNwYXJjLXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gc3BhcmMtdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgcGFyaXNjNjQ6TGludXg6KjoqIHwgaHBwYTY0OkxpbnV4Oio6KikKLS0JZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQotIAkjIExvb2sgZm9yIENQVSBsZXZlbAotIAljYXNlIGBncmVwICdeY3B1W15hLXpdKjonIC9wcm9jL2NwdWluZm8gMj4vZGV2L251bGwgfCBjdXQgLWQnICcgLWYyYCBpbgotLQkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LWdudSA7OwotLQkgIFBBOCopIGVjaG8gaHBwYTIuMC11bmtub3duLWxpbnV4LWdudSA7OwotLQkgICopICAgIGVjaG8gaHBwYS11bmtub3duLWxpbnV4LWdudSA7OwotKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LSR7TElCQ30gOzsKLSsJICBQQTgqKSBlY2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC0ke0xJQkN9IDs7Ci0rCSAgKikgICAgZWNobyBocHBhLXVua25vd24tbGludXgtJHtMSUJDfSA7OwotIAllc2FjCi0gCWV4aXQgOzsKLSAgICAgcHBjNjQ6TGludXg6KjoqKQotLQllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQotKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBwcGM6TGludXg6KjoqKQotLQllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHMzOTA6TGludXg6KjoqIHwgczM5MHg6TGludXg6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4Ci0gCWV4aXQgOzsKLSAgICAgc2g2NCo6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHNoKjpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgdGlsZSo6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHZheDpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHg4Nl82NDpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgeHRlbnNhKjpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgaSo4NjpEWU5JWC9wdHg6NCo6KikKLSAJIyBwdHggNC4wIGRvZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL3VjbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL3VjbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVmZTEwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZy91Y2xpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGNvbmZpZy5zdWIub3JpZwkyMDA0LTA1LTE0IDE5OjM4OjM2LjAwMDAwMDAwMCAtMDUwMAotKysrIGNvbmZpZy5zdWIJMjAwNC0wNS0xNCAxOTozOToxNy4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xMTgsNyArMTE4LDcgQEAKLSAjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmluYXRpb25zLgotIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAotIGNhc2UgJG1heWJlX29zIGluCi0tICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKLSsgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LXVjbGliYyogfCBmcmVlYnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQotICAgICBvcz0tJG1heWJlX29zCi0gICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgCi0gICAgIDs7Ci1AQCAtMTEzNSw3ICsxMTM1LDggQEAKLSAJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCi0gCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIFwKLSAJICAgICAgfCAtY3lnd2luKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAotLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKLSsJICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC11Y2xpYmMqIFwKLSsJICAgICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAotIAkgICAgICB8IC1pbnRlcml4KiB8IC11d2luKiB8IC1ta3MqIHwgLXJoYXBzb2R5KiB8IC1kYXJ3aW4qIHwgLW9wZW5lZCogXAotIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKLSAJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwgLXRvcHMyMCogfCAtaXRzKiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDEyMDgxNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnXzIwMTIwODE0LmJiCmluZGV4IDBkMDVlNzkuLjNkNDI4YjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnXzIwMTIwODE0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnXzIwMTIwODE0LmJiCkBAIC0xMCw3ICsxMCw2IEBACiAKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvZ251LWNvbmZpZy9nbnUtY29uZmlnLSR7UFZ9LnRhci5iejIgXAotCSAgIGZpbGU6Ly9jb25maWctZ3Vlc3MtdWNsaWJjLnBhdGNoIFwKIAkgICBmaWxlOi8vbXVzbC1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2dudS1jb25maWdpemUuaW4iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgppbmRleCBmMWM3Nzg4Li40ZmRlZDYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCkBAIC0xMyw4ICsxMyw4IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY29uZmlnLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9nbnUtY29uZmlnaXplLmluIgotCiBTID0gIiR7V09SS0RJUn0vZ2l0IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIENMRUFOQlJPS0VOID0gIjEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY1MDBmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1yZXF1aXJlIGdvLWNvbW1vbi5pbmMKLQotUFYgPSAiMS40LjMiCi1HT19CQVNFVkVSU0lPTiA9ICIxLjQiCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vMDE2LWFybWhmLWVsZi1oZWFkZXIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZ28tY3Jvc3MtYmFja3BvcnQtY21kLWxpbmstc3VwcG9ydC1uZXctMzg2LWFtZDY0LXJlbC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9zeXNsb2cucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1jbWQtbGQtc2V0LWFsaWdubWVudC1mb3ItdGhlLS5yZWwucGx0LXNlY3Rpb24tb24tMzItLnBhdGNoIFwKLSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTkxNzc4NTI1Yzg2OWNkZGUwYWI1YTFiZjI4M2NkODEiCi1TUkNfVVJJW21kNXN1bV0gPSAiZGZiNjA0NTExMTE1ZGQ0MDJhNzdhNTUzYTU5MjNhMDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTk0N2ZjNzA1YjBiODQxYjU5MzhjNDhiMjJkYzMzZTk2NDdlYzA3NTJiYWU2NmU1MDI3OGRmNGYyM2Y2NDk1OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LzAwMDEtY21kLWxkLXNldC1hbGlnbm1lbnQtZm9yLXRoZS0ucmVsLnBsdC1zZWN0aW9uLW9uLTMyLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LzAwMDEtY21kLWxkLXNldC1hbGlnbm1lbnQtZm9yLXRoZS0ucmVsLnBsdC1zZWN0aW9uLW9uLTMyLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhZGMyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC8wMDAxLWNtZC1sZC1zZXQtYWxpZ25tZW50LWZvci10aGUtLnJlbC5wbHQtc2VjdGlvbi1vbi0zMi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDg1NTE0NWQ1YzAzYzRiNGZhZjYwNzM2YzM4ZDdhMjk5YzY4MmFmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaGVuZ2hvdSBNYSA8bWludXhAZ29sYW5nLm9yZz4KLURhdGU6IFNhdCwgNyBGZWIgMjAxNSAxNDowNjowMiAtMDUwMAotU3ViamVjdDogW1BBVENIXSBjbWQvbGQ6IHNldCBhbGlnbm1lbnQgZm9yIHRoZSAucmVsLnBsdCBzZWN0aW9uIG9uIDMyLWJpdAotIGFyY2hpdGVjdHVyZXMKLQotRml4ZXMgIzk4MDIuCi0KLUNoYW5nZS1JZDogSTIyYzUyYTM3YmRiMjNhMTRjYzQ2MTVjOTUxOTQzMWJiMTRjYTgxY2EKLVJldmlld2VkLW9uOiBodHRwczovL2dvLXJldmlldy5nb29nbGVzb3VyY2UuY29tLzQxNzAKLVJldmlld2VkLWJ5OiBJYW4gTGFuY2UgVGF5bG9yIDxpYW50QGdvbGFuZy5vcmc+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBzcmMvY21kL2xkL2VsZi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2xkL2VsZi5jIGIvc3JjL2NtZC9sZC9lbGYuYwotaW5kZXggMTJjZWQ5OC4uOTdlZDRiZCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGQvZWxmLmMKLSsrKyBiL3NyYy9jbWQvbGQvZWxmLmMKLUBAIC0xMzYzLDYgKzEzNjMsNyBAQCBhc21iZWxmKHZsb25nIHN5bW8pCi0gCQkJc2gtPnR5cGUgPSBTSFRfUkVMOwotIAkJCXNoLT5mbGFncyA9IFNIRl9BTExPQzsKLSAJCQlzaC0+ZW50c2l6ZSA9IEVMRjMyUkVMU0laRTsKLSsJCQlzaC0+YWRkcmFsaWduID0gNDsKLSAJCQlzaC0+bGluayA9IGVsZnNobmFtZSgiLmR5bnN5bSIpLT5zaG51bTsKLSAJCQlzaHN5bShzaCwgbGlua2xvb2t1cChjdHh0LCAiLnJlbC5wbHQiLCAwKSk7Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LzAxNi1hcm1oZi1lbGYtaGVhZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvMDE2LWFybWhmLWVsZi1oZWFkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZTQxNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvMDE2LWFybWhmLWVsZi1oZWFkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1EZXNjcmlwdGlvbjogVXNlIGNvcnJlY3QgRUxGIGhlYWRlciBmb3IgYXJtaGYgYmluYXJpZXMuCi1BdXRob3I6IEFkYW0gQ29ucmFkIDxhZGNvbnJhZEB1YnVudHUuY29tPgotTGFzdC1VcGRhdGU6IDIwMTMtMDctMDgKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogZ28vc3JjL2NtZC9sZC9lbGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9sZC9lbGYuYwkyMDE1LTAyLTIwIDEwOjQ5OjU4Ljc2MzQ1MTU4NiAtMDgwMAotKysrIGdvL3NyYy9jbWQvbGQvZWxmLmMJMjAxNS0wMi0yMCAxMDo0OToyNy44OTU0Nzg1MjEgLTA4MDAKLUBAIC01Nyw3ICs1NywxMSBAQAotIAljYXNlICc1JzoKLSAJCS8vIHdlIHVzZSBFQUJJIG9uIGJvdGggbGludXgvYXJtIGFuZCBmcmVlYnNkL2FybS4KLSAJCWlmKEhFQURUWVBFID09IEhsaW51eCB8fCBIRUFEVFlQRSA9PSBIZnJlZWJzZCkKLS0JCQloZHIuZmxhZ3MgPSAweDUwMDAwMDI7IC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSQotKyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0rCQkJaGRyLmZsYWdzID0gMHg1MDAwNDAyOyAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIGhhcmQtZmxvYXQgQUJJCi0rI2Vsc2UKLSsJCQloZHIuZmxhZ3MgPSAweDUwMDAyMDI7IC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSSwgc29mdC1mbG9hdCBBQkkKLSsjZW5kaWYKLSAJCS8vIGZhbGx0aHJvdWdoCi0gCWRlZmF1bHQ6Ci0gCQloZHIucGhvZmYgPSBFTEYzMkhEUlNJWkU7CS8qIE11c3QgYmUgYmUgRUxGMzJIRFJTSVpFOiBmaXJzdCBQSGRyIG11c3QgZm9sbG93IEVMRiBoZWFkZXIgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40L2dvLWNyb3NzLWJhY2twb3J0LWNtZC1saW5rLXN1cHBvcnQtbmV3LTM4Ni1hbWQ2NC1yZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC9nby1jcm9zcy1iYWNrcG9ydC1jbWQtbGluay1zdXBwb3J0LW5ldy0zODYtYW1kNjQtcmVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWNhOWQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40L2dvLWNyb3NzLWJhY2twb3J0LWNtZC1saW5rLXN1cHBvcnQtbmV3LTM4Ni1hbWQ2NC1yZWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjUgKzAsMCBAQAotRnJvbSBkNmVlZmFkNDQ1ODMxYzE2MWZjYTEzMGY5YmRmN2IzODQ4YWFjMjNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI5IE1hciAyMDE2IDIxOjE0OjMzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdvLWNyb3NzOiBiYWNrcG9ydCAiY21kL2xpbms6IHN1cHBvcnQgbmV3IDM4Ni9hbWQ2NAotIHJlbG9jYXRpb25zIgotCi1OZXdlciBiaW51dGlscyB3b24ndCBzdXBwb3J0IGJ1aWxkaW5nIG9sZGVyIGdvLTEuNC4zIGFzIHBlcjoKLQotaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nby9pc3N1ZXMvMTMxMTQKLQotVXBzdHJlYW0gY29tbWl0IDkxNGRiOWYwNjBiMWZkM2ViMWY3NGQ0OGYzYmQ0NmE3M2Q0YWU5YzcgKHNlZSBzdWJqKQotd2FzIGlkZW50aWZpZWQgYXMgdGhlIGZpeCBhbmQgbm9taW5hdGVkIGZvciAxLjQuNCBidXQgdGhhdCByZWxlYXNlCi1uZXZlciBoYXBwZW5lZC4gIFRoZSBwYXRocyBpbiAxLjQuMyBhcmVuJ3QgdGhlIHNhbWUgYXMgZ28xLjZiZXRhMX42NjIKLXdoZXJlIHRoaXMgY29tbWl0IGFwcGVhcmVkLCBidXQgdGhlIE5ldEJTRCBmb2xrcyBpbmRpY2F0ZWQgd2hhdCBhCi0xLjQuMyBiYWNrcG9ydCB3b3VsZCBsb29rIGxpa2UgaGVyZTogaHR0cHM6Ly9nbmF0cy5uZXRic2Qub3JnLzUwNzc3Ci0KLVRoaXMgaXMgYmFzZWQgb24gdGhhdCwgYnV0IHdpdGhvdXQgdGhlIEJTRCB3cmFwcGVyIGluZnJhc3RydWN0dXJlCi1sYXllciB0aGF0IG1ha2VzIHRoaW5ncyBsb29rIGxpa2UgcGF0Y2hlcyBvZiBwYXRjaGVzLgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIFBhcnRpYWwgXQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC82bC9hc20uYyBiL3NyYy9jbWQvNmwvYXNtLmMKLWluZGV4IDE4YjVhYTMxMTk4MS4uMmU5ZDMzOWFlZjg3IDEwMDY0NAotLS0tIGEvc3JjL2NtZC82bC9hc20uYwotKysrIGIvc3JjL2NtZC82bC9hc20uYwotQEAgLTExOCw2ICsxMTgsOCBAQCBhZGRkeW5yZWwoTFN5bSAqcywgUmVsb2MgKnIpCi0gCQlyZXR1cm47Ci0gCQotIAljYXNlIDI1NiArIFJfWDg2XzY0X0dPVFBDUkVMOgotKwljYXNlIDI1NiArIFJfWDg2XzY0X0dPVFBDUkVMWDoKLSsJY2FzZSAyNTYgKyBSX1g4Nl82NF9SRVhfR09UUENSRUxYOgotIAkJaWYodGFyZy0+dHlwZSAhPSBTRFlOSU1QT1JUKSB7Ci0gCQkJLy8gaGF2ZSBzeW1ib2wKLSAJCQlpZihyLT5vZmYgPj0gMiAmJiBzLT5wW3ItPm9mZi0yXSA9PSAweDhiKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NtZC84bC9hc20uYyBiL3NyYy9jbWQvOGwvYXNtLmMKLWluZGV4IDk4YzA0MjQwMzc0Zi4uY2ZmMjk0ODhlOGFmIDEwMDY0NAotLS0tIGEvc3JjL2NtZC84bC9hc20uYwotKysrIGIvc3JjL2NtZC84bC9hc20uYwotQEAgLTExNSw2ICsxMTUsNyBAQCBhZGRkeW5yZWwoTFN5bSAqcywgUmVsb2MgKnIpCi0gCQlyZXR1cm47CQkKLSAJCi0gCWNhc2UgMjU2ICsgUl8zODZfR09UMzI6Ci0rCWNhc2UgMjU2ICsgUl8zODZfR09UMzJYOgotIAkJaWYodGFyZy0+dHlwZSAhPSBTRFlOSU1QT1JUKSB7Ci0gCQkJLy8gaGF2ZSBzeW1ib2wKLSAJCQlpZihyLT5vZmYgPj0gMiAmJiBzLT5wW3ItPm9mZi0yXSA9PSAweDhiKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9sZC9lbGYuaCBiL3NyYy9jbWQvbGQvZWxmLmgKLWluZGV4IGU4NGQ5OTZmMjU5Ni4uYmJmMmNmYWEzY2MwIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9sZC9lbGYuaAotKysrIGIvc3JjL2NtZC9sZC9lbGYuaAotQEAgLTQ3OCwzMiArNDc4LDQ3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgKiBSZWxvY2F0aW9uIHR5cGVzLgotICAqLwotIAotLSNkZWZpbmUJUl9YODZfNjRfTk9ORQkwCS8qIE5vIHJlbG9jYXRpb24uICovCi0tI2RlZmluZQlSX1g4Nl82NF82NAkxCS8qIEFkZCA2NCBiaXQgc3ltYm9sIHZhbHVlLiAqLwotLSNkZWZpbmUJUl9YODZfNjRfUEMzMgkyCS8qIFBDLXJlbGF0aXZlIDMyIGJpdCBzaWduZWQgc3ltIHZhbHVlLiAqLwotLSNkZWZpbmUJUl9YODZfNjRfR09UMzIJMwkvKiBQQy1yZWxhdGl2ZSAzMiBiaXQgR09UIG9mZnNldC4gKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1BMVDMyCTQJLyogUEMtcmVsYXRpdmUgMzIgYml0IFBMVCBvZmZzZXQuICovCi0tI2RlZmluZQlSX1g4Nl82NF9DT1BZCTUJLyogQ29weSBkYXRhIGZyb20gc2hhcmVkIG9iamVjdC4gKi8KLS0jZGVmaW5lCVJfWDg2XzY0X0dMT0JfREFUIDYJLyogU2V0IEdPVCBlbnRyeSB0byBkYXRhIGFkZHJlc3MuICovCi0tI2RlZmluZQlSX1g4Nl82NF9KTVBfU0xPVCA3CS8qIFNldCBHT1QgZW50cnkgdG8gY29kZSBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl9YODZfNjRfUkVMQVRJVkUgOAkvKiBBZGQgbG9hZCBhZGRyZXNzIG9mIHNoYXJlZCBvYmplY3QuICovCi0tI2RlZmluZQlSX1g4Nl82NF9HT1RQQ1JFTCA5CS8qIEFkZCAzMiBiaXQgc2lnbmVkIHBjcmVsIG9mZnNldCB0byBHT1QuICovCi0tI2RlZmluZQlSX1g4Nl82NF8zMgkxMAkvKiBBZGQgMzIgYml0IHplcm8gZXh0ZW5kZWQgc3ltYm9sIHZhbHVlICovCi0tI2RlZmluZQlSX1g4Nl82NF8zMlMJMTEJLyogQWRkIDMyIGJpdCBzaWduIGV4dGVuZGVkIHN5bWJvbCB2YWx1ZSAqLwotLSNkZWZpbmUJUl9YODZfNjRfMTYJMTIJLyogQWRkIDE2IGJpdCB6ZXJvIGV4dGVuZGVkIHN5bWJvbCB2YWx1ZSAqLwotLSNkZWZpbmUJUl9YODZfNjRfUEMxNgkxMwkvKiBBZGQgMTYgYml0IHNpZ25lZCBleHRlbmRlZCBwYyByZWxhdGl2ZSBzeW1ib2wgdmFsdWUgKi8KLS0jZGVmaW5lCVJfWDg2XzY0XzgJMTQJLyogQWRkIDggYml0IHplcm8gZXh0ZW5kZWQgc3ltYm9sIHZhbHVlICovCi0tI2RlZmluZQlSX1g4Nl82NF9QQzgJMTUJLyogQWRkIDggYml0IHNpZ25lZCBleHRlbmRlZCBwYyByZWxhdGl2ZSBzeW1ib2wgdmFsdWUgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X0RUUE1PRDY0IDE2CS8qIElEIG9mIG1vZHVsZSBjb250YWluaW5nIHN5bWJvbCAqLwotLSNkZWZpbmUJUl9YODZfNjRfRFRQT0ZGNjQgMTcJLyogT2Zmc2V0IGluIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl9YODZfNjRfVFBPRkY2NCAxOAkvKiBPZmZzZXQgaW4gc3RhdGljIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl9YODZfNjRfVExTR0QJMTkJLyogUEMgcmVsYXRpdmUgb2Zmc2V0IHRvIEdEIEdPVCBlbnRyeSAqLwotLSNkZWZpbmUJUl9YODZfNjRfVExTTEQJMjAJLyogUEMgcmVsYXRpdmUgb2Zmc2V0IHRvIExEIEdPVCBlbnRyeSAqLwotLSNkZWZpbmUJUl9YODZfNjRfRFRQT0ZGMzIgMjEJLyogT2Zmc2V0IGluIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl9YODZfNjRfR09UVFBPRkYgMjIJLyogUEMgcmVsYXRpdmUgb2Zmc2V0IHRvIElFIEdPVCBlbnRyeSAqLwotLSNkZWZpbmUJUl9YODZfNjRfVFBPRkYzMiAyMwkvKiBPZmZzZXQgaW4gc3RhdGljIFRMUyBibG9jayAqLwotLQotLSNkZWZpbmUJUl9YODZfNjRfQ09VTlQJMjQJLyogQ291bnQgb2YgZGVmaW5lZCByZWxvY2F0aW9uIHR5cGVzLiAqLwotKyNkZWZpbmUJUl9YODZfNjRfTk9ORSAgICAgICAgICAgMAotKyNkZWZpbmUJUl9YODZfNjRfNjQgICAgICAgICAgICAgMQotKyNkZWZpbmUJUl9YODZfNjRfUEMzMiAgICAgICAgICAgMgotKyNkZWZpbmUJUl9YODZfNjRfR09UMzIgICAgICAgICAgMwotKyNkZWZpbmUJUl9YODZfNjRfUExUMzIgICAgICAgICAgNAotKyNkZWZpbmUJUl9YODZfNjRfQ09QWSAgICAgICAgICAgNQotKyNkZWZpbmUJUl9YODZfNjRfR0xPQl9EQVQgICAgICAgNgotKyNkZWZpbmUJUl9YODZfNjRfSk1QX1NMT1QgICAgICAgNwotKyNkZWZpbmUJUl9YODZfNjRfUkVMQVRJVkUgICAgICAgOAotKyNkZWZpbmUJUl9YODZfNjRfR09UUENSRUwgICAgICAgOQotKyNkZWZpbmUJUl9YODZfNjRfMzIgICAgICAgICAgICAgMTAKLSsjZGVmaW5lCVJfWDg2XzY0XzMyUyAgICAgICAgICAgIDExCi0rI2RlZmluZQlSX1g4Nl82NF8xNiAgICAgICAgICAgICAxMgotKyNkZWZpbmUJUl9YODZfNjRfUEMxNiAgICAgICAgICAgMTMKLSsjZGVmaW5lCVJfWDg2XzY0XzggICAgICAgICAgICAgIDE0Ci0rI2RlZmluZQlSX1g4Nl82NF9QQzggICAgICAgICAgICAxNQotKyNkZWZpbmUJUl9YODZfNjRfRFRQTU9ENjQgICAgICAgMTYKLSsjZGVmaW5lCVJfWDg2XzY0X0RUUE9GRjY0ICAgICAgIDE3Ci0rI2RlZmluZQlSX1g4Nl82NF9UUE9GRjY0ICAgICAgICAxOAotKyNkZWZpbmUJUl9YODZfNjRfVExTR0QgICAgICAgICAgMTkKLSsjZGVmaW5lCVJfWDg2XzY0X1RMU0xEICAgICAgICAgIDIwCi0rI2RlZmluZQlSX1g4Nl82NF9EVFBPRkYzMiAgICAgICAyMQotKyNkZWZpbmUJUl9YODZfNjRfR09UVFBPRkYgICAgICAgMjIKLSsjZGVmaW5lCVJfWDg2XzY0X1RQT0ZGMzIgICAgICAgIDIzCi0rI2RlZmluZQlSX1g4Nl82NF9QQzY0ICAgICAgICAgICAyNAotKyNkZWZpbmUJUl9YODZfNjRfR09UT0ZGNjQgICAgICAgMjUKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDMzIgICAgICAgIDI2Ci0rI2RlZmluZQlSX1g4Nl82NF9HT1Q2NCAgICAgICAgICAyNwotKyNkZWZpbmUJUl9YODZfNjRfR09UUENSRUw2NCAgICAgMjgKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDNjQgICAgICAgIDI5Ci0rI2RlZmluZQlSX1g4Nl82NF9HT1RQTFQ2NCAgICAgICAzMAotKyNkZWZpbmUJUl9YODZfNjRfUExUT0ZGNjQgICAgICAgMzEKLSsjZGVmaW5lCVJfWDg2XzY0X1NJWkUzMiAgICAgICAgIDMyCi0rI2RlZmluZQlSX1g4Nl82NF9TSVpFNjQgICAgICAgICAzMwotKyNkZWZpbmUJUl9YODZfNjRfR09UUEMzMl9UTFNERUMgMzQKLSsjZGVmaW5lCVJfWDg2XzY0X1RMU0RFU0NfQ0FMTCAgIDM1Ci0rI2RlZmluZQlSX1g4Nl82NF9UTFNERVNDICAgICAgICAzNgotKyNkZWZpbmUJUl9YODZfNjRfSVJFTEFUSVZFICAgICAgMzcKLSsjZGVmaW5lCVJfWDg2XzY0X1BDMzJfQk5EICAgICAgIDQwCi0rI2RlZmluZQlSX1g4Nl82NF9HT1RQQ1JFTFggICAgICA0MQotKyNkZWZpbmUJUl9YODZfNjRfUkVYX0dPVFBDUkVMWCAgNDIKLSAKLSAKLSAjZGVmaW5lCVJfQUxQSEFfTk9ORQkJMAkvKiBObyByZWxvYyAqLwotQEAgLTU4MSwzOSArNTk2LDQyIEBAIHR5cGVkZWYgc3RydWN0IHsKLSAjZGVmaW5lCVJfQVJNX0NPVU5UCQkzOAkvKiBDb3VudCBvZiBkZWZpbmVkIHJlbG9jYXRpb24gdHlwZXMuICovCi0gCi0gCi0tI2RlZmluZQlSXzM4Nl9OT05FCTAJLyogTm8gcmVsb2NhdGlvbi4gKi8KLS0jZGVmaW5lCVJfMzg2XzMyCTEJLyogQWRkIHN5bWJvbCB2YWx1ZS4gKi8KLS0jZGVmaW5lCVJfMzg2X1BDMzIJMgkvKiBBZGQgUEMtcmVsYXRpdmUgc3ltYm9sIHZhbHVlLiAqLwotLSNkZWZpbmUJUl8zODZfR09UMzIJMwkvKiBBZGQgUEMtcmVsYXRpdmUgR09UIG9mZnNldC4gKi8KLS0jZGVmaW5lCVJfMzg2X1BMVDMyCTQJLyogQWRkIFBDLXJlbGF0aXZlIFBMVCBvZmZzZXQuICovCi0tI2RlZmluZQlSXzM4Nl9DT1BZCTUJLyogQ29weSBkYXRhIGZyb20gc2hhcmVkIG9iamVjdC4gKi8KLS0jZGVmaW5lCVJfMzg2X0dMT0JfREFUCTYJLyogU2V0IEdPVCBlbnRyeSB0byBkYXRhIGFkZHJlc3MuICovCi0tI2RlZmluZQlSXzM4Nl9KTVBfU0xPVAk3CS8qIFNldCBHT1QgZW50cnkgdG8gY29kZSBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl8zODZfUkVMQVRJVkUJOAkvKiBBZGQgbG9hZCBhZGRyZXNzIG9mIHNoYXJlZCBvYmplY3QuICovCi0tI2RlZmluZQlSXzM4Nl9HT1RPRkYJOQkvKiBBZGQgR09ULXJlbGF0aXZlIHN5bWJvbCBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl8zODZfR09UUEMJMTAJLyogQWRkIFBDLXJlbGF0aXZlIEdPVCB0YWJsZSBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl8zODZfVExTX1RQT0ZGCTE0CS8qIE5lZ2F0aXZlIG9mZnNldCBpbiBzdGF0aWMgVExTIGJsb2NrICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfSUUJMTUJLyogQWJzb2x1dGUgYWRkcmVzcyBvZiBHT1QgZm9yIC12ZSBzdGF0aWMgVExTICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfR09USUUJMTYJLyogR09UIGVudHJ5IGZvciBuZWdhdGl2ZSBzdGF0aWMgVExTIGJsb2NrICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfTEUJMTcJLyogTmVnYXRpdmUgb2Zmc2V0IHJlbGF0aXZlIHRvIHN0YXRpYyBUTFMgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19HRAkxOAkvKiAzMiBiaXQgb2Zmc2V0IHRvIEdPVCAoaW5kZXgsb2ZmKSBwYWlyICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfTERNCTE5CS8qIDMyIGJpdCBvZmZzZXQgdG8gR09UIChpbmRleCx6ZXJvKSBwYWlyICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfR0RfMzIJMjQJLyogMzIgYml0IG9mZnNldCB0byBHT1QgKGluZGV4LG9mZikgcGFpciAqLwotLSNkZWZpbmUJUl8zODZfVExTX0dEX1BVU0ggMjUJLyogcHVzaGwgaW5zdHJ1Y3Rpb24gZm9yIFN1biBBQkkgR0Qgc2VxdWVuY2UgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19HRF9DQUxMIDI2CS8qIGNhbGwgaW5zdHJ1Y3Rpb24gZm9yIFN1biBBQkkgR0Qgc2VxdWVuY2UgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19HRF9QT1AgMjcJLyogcG9wbCBpbnN0cnVjdGlvbiBmb3IgU3VuIEFCSSBHRCBzZXF1ZW5jZSAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xETV8zMiAyOAkvKiAzMiBiaXQgb2Zmc2V0IHRvIEdPVCAoaW5kZXgsemVybykgcGFpciAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xETV9QVVNIIDI5CS8qIHB1c2hsIGluc3RydWN0aW9uIGZvciBTdW4gQUJJIExEIHNlcXVlbmNlICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfTERNX0NBTEwgMzAJLyogY2FsbCBpbnN0cnVjdGlvbiBmb3IgU3VuIEFCSSBMRCBzZXF1ZW5jZSAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xETV9QT1AgMzEJLyogcG9wbCBpbnN0cnVjdGlvbiBmb3IgU3VuIEFCSSBMRCBzZXF1ZW5jZSAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xET18zMiAzMgkvKiAzMiBiaXQgb2Zmc2V0IGZyb20gc3RhcnQgb2YgVExTIGJsb2NrICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfSUVfMzIJMzMJLyogMzIgYml0IG9mZnNldCB0byBHT1Qgc3RhdGljIFRMUyBvZmZzZXQgZW50cnkgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19MRV8zMgkzNAkvKiAzMiBiaXQgb2Zmc2V0IHdpdGhpbiBzdGF0aWMgVExTIGJsb2NrICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfRFRQTU9EMzIgMzUJLyogR09UIGVudHJ5IGNvbnRhaW5pbmcgVExTIGluZGV4ICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfRFRQT0ZGMzIgMzYJLyogR09UIGVudHJ5IGNvbnRhaW5pbmcgVExTIG9mZnNldCAqLwotLSNkZWZpbmUJUl8zODZfVExTX1RQT0ZGMzIgMzcJLyogR09UIGVudHJ5IG9mIC12ZSBzdGF0aWMgVExTIG9mZnNldCAqLwotLQotLSNkZWZpbmUJUl8zODZfQ09VTlQJMzgJLyogQ291bnQgb2YgZGVmaW5lZCByZWxvY2F0aW9uIHR5cGVzLiAqLwotKyNkZWZpbmUJUl8zODZfTk9ORSAgICAgICAgICAwCi0rI2RlZmluZQlSXzM4Nl8zMiAgICAgICAgICAgIDEKLSsjZGVmaW5lCVJfMzg2X1BDMzIgICAgICAgICAgMgotKyNkZWZpbmUJUl8zODZfR09UMzIgICAgICAgICAzCi0rI2RlZmluZQlSXzM4Nl9QTFQzMiAgICAgICAgIDQKLSsjZGVmaW5lCVJfMzg2X0NPUFkgICAgICAgICAgNQotKyNkZWZpbmUJUl8zODZfR0xPQl9EQVQgICAgICA2Ci0rI2RlZmluZQlSXzM4Nl9KTVBfU0xPVCAgICAgIDcKLSsjZGVmaW5lCVJfMzg2X1JFTEFUSVZFICAgICAgOAotKyNkZWZpbmUJUl8zODZfR09UT0ZGICAgICAgICA5Ci0rI2RlZmluZQlSXzM4Nl9HT1RQQyAgICAgICAgIDEwCi0rI2RlZmluZQlSXzM4Nl9UTFNfVFBPRkYgICAgIDE0Ci0rI2RlZmluZQlSXzM4Nl9UTFNfSUUgICAgICAgIDE1Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR09USUUgICAgIDE2Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTEUgICAgICAgIDE3Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0QgICAgICAgIDE4Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTERNICAgICAgIDE5Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0RfMzIgICAgIDI0Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0RfUFVTSCAgIDI1Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0RfQ0FMTCAgIDI2Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0RfUE9QICAgIDI3Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTERNXzMyICAgIDI4Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTERNX1BVU0ggIDI5Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTERNX0NBTEwgIDMwCi0rI2RlZmluZQlSXzM4Nl9UTFNfTERNX1BPUCAgIDMxCi0rI2RlZmluZQlSXzM4Nl9UTFNfTERPXzMyICAgIDMyCi0rI2RlZmluZQlSXzM4Nl9UTFNfSUVfMzIgICAgIDMzCi0rI2RlZmluZQlSXzM4Nl9UTFNfTEVfMzIgICAgIDM0Ci0rI2RlZmluZQlSXzM4Nl9UTFNfRFRQTU9EMzIgIDM1Ci0rI2RlZmluZQlSXzM4Nl9UTFNfRFRQT0ZGMzIgIDM2Ci0rI2RlZmluZQlSXzM4Nl9UTFNfVFBPRkYzMiAgIDM3Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR09UREVTQyAgIDM5Ci0rI2RlZmluZQlSXzM4Nl9UTFNfREVTQ19DQUxMIDQwCi0rI2RlZmluZQlSXzM4Nl9UTFNfREVTQyAgICAgIDQxCi0rI2RlZmluZQlSXzM4Nl9JUkVMQVRJVkUgICAgIDQyCi0rI2RlZmluZQlSXzM4Nl9HT1QzMlggICAgICAgIDQzCi0gCi0gI2RlZmluZQlSX1BQQ19OT05FCQkwCS8qIE5vIHJlbG9jYXRpb24uICovCi0gI2RlZmluZQlSX1BQQ19BRERSMzIJCTEKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xkL2xkZWxmLmMgYi9zcmMvY21kL2xkL2xkZWxmLmMKLWluZGV4IGRkNWZhMGQyYTgzOS4uMmUyZmJkMTczNzdmIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9sZC9sZGVsZi5jCi0rKysgYi9zcmMvY21kL2xkL2xkZWxmLmMKLUBAIC04ODgsMTIgKzg4OCwxNSBAQCByZWx0eXBlKGNoYXIgKnBuLCBpbnQgZWxmdHlwZSwgdWNoYXIgKnNpeikKLSAJY2FzZSBSKCc2JywgUl9YODZfNjRfUEMzMik6Ci0gCWNhc2UgUignNicsIFJfWDg2XzY0X1BMVDMyKToKLSAJY2FzZSBSKCc2JywgUl9YODZfNjRfR09UUENSRUwpOgotKwljYXNlIFIoJzYnLCBSX1g4Nl82NF9HT1RQQ1JFTFgpOgotKwljYXNlIFIoJzYnLCBSX1g4Nl82NF9SRVhfR09UUENSRUxYKToKLSAJY2FzZSBSKCc4JywgUl8zODZfMzIpOgotIAljYXNlIFIoJzgnLCBSXzM4Nl9QQzMyKToKLSAJY2FzZSBSKCc4JywgUl8zODZfR09UMzIpOgotIAljYXNlIFIoJzgnLCBSXzM4Nl9QTFQzMik6Ci0gCWNhc2UgUignOCcsIFJfMzg2X0dPVE9GRik6Ci0gCWNhc2UgUignOCcsIFJfMzg2X0dPVFBDKToKLSsJY2FzZSBSKCc4JywgUl8zODZfR09UMzJYKToKLSAJCSpzaXogPSA0OwotIAkJYnJlYWs7Ci0gCWNhc2UgUignNicsIFJfWDg2XzY0XzY0KToKLS0tIAotMi43LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvc3lzbG9nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvc3lzbG9nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWJlMDZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40L3N5c2xvZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUFkZCB0aW1lb3V0cyB0byBsb2dnZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwotLS0tIGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTQtMTAtMDMgMTE6NDQ6MzcuNzEwNDAzMjAwIC0wNzAwCi1AQCAtMzMsNiArMzMsOSBAQAotIGNvbnN0IHNldmVyaXR5TWFzayA9IDB4MDcKLSBjb25zdCBmYWNpbGl0eU1hc2sgPSAweGY4Ci0gCi0rdmFyIHdyaXRlVGltZW91dCA9IDEgKiB0aW1lLlNlY29uZAotK3ZhciBjb25uZWN0VGltZW91dCA9IDEgKiB0aW1lLlNlY29uZAotKwotIGNvbnN0ICgKLSAJLy8gU2V2ZXJpdHkuCi0gCi1AQCAtMTAwLDYgKzEwMyw3IEBACi0gdHlwZSBzZXJ2ZXJDb25uIGludGVyZmFjZSB7Ci0gCXdyaXRlU3RyaW5nKHAgUHJpb3JpdHksIGhvc3RuYW1lLCB0YWcsIHMsIG5sIHN0cmluZykgZXJyb3IKLSAJY2xvc2UoKSBlcnJvcgotKwlzZXRXcml0ZURlYWRsaW5lKHQgdGltZS5UaW1lKSBlcnJvcgotIH0KLSAKLSB0eXBlIG5ldENvbm4gc3RydWN0IHsKLUBAIC0yNzMsNyArMjc3LDExIEBACi0gCQlubCA9ICJcbiIKLSAJfQotIAotLQllcnIgOj0gdy5jb25uLndyaXRlU3RyaW5nKHAsIHcuaG9zdG5hbWUsIHcudGFnLCBtc2csIG5sKQotKwllcnIgOj0gdy5jb25uLnNldFdyaXRlRGVhZGxpbmUodGltZS5Ob3coKS5BZGQod3JpdGVUaW1lb3V0KSkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4gMCwgZXJyCi0rCX0KLSsJZXJyID0gdy5jb25uLndyaXRlU3RyaW5nKHAsIHcuaG9zdG5hbWUsIHcudGFnLCBtc2csIG5sKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCXJldHVybiAwLCBlcnIKLSAJfQotQEAgLTMwNSw2ICszMTMsMTAgQEAKLSAJcmV0dXJuIG4uY29ubi5DbG9zZSgpCi0gfQotIAotK2Z1bmMgKG4gKm5ldENvbm4pIHNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yIHsKLSsJcmV0dXJuIG4uY29ubi5TZXRXcml0ZURlYWRsaW5lKHQpCi0rfQotKwotIC8vIE5ld0xvZ2dlciBjcmVhdGVzIGEgbG9nLkxvZ2dlciB3aG9zZSBvdXRwdXQgaXMgd3JpdHRlbiB0bwotIC8vIHRoZSBzeXN0ZW0gbG9nIHNlcnZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHByaW9yaXR5LiBUaGUgbG9nRmxhZwotIC8vIGFyZ3VtZW50IGlzIHRoZSBmbGFnIHNldCBwYXNzZWQgdGhyb3VnaCB0byBsb2cuTmV3IHRvIGNyZWF0ZQotZGlmZiAtciAtdSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxMy0xMS0yOCAxMzozODoyOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCTIwMTQtMTAtMDMgMTE6NDQ6MzkuMDEwNDAzMTc1IC0wNzAwCi1AQCAtMTksNyArMTksNyBAQAotIAlsb2dQYXRocyA6PSBbXXN0cmluZ3siL2Rldi9sb2ciLCAiL3Zhci9ydW4vc3lzbG9nIn0KLSAJZm9yIF8sIG5ldHdvcmsgOj0gcmFuZ2UgbG9nVHlwZXMgewotIAkJZm9yIF8sIHBhdGggOj0gcmFuZ2UgbG9nUGF0aHMgewotLQkJCWNvbm4sIGVyciA6PSBuZXQuRGlhbChuZXR3b3JrLCBwYXRoKQotKwkJCWNvbm4sIGVyciA6PSBuZXQuRGlhbFRpbWVvdXQobmV0d29yaywgcGF0aCwgY29ubmVjdFRpbWVvdXQpCi0gCQkJaWYgZXJyICE9IG5pbCB7Ci0gCQkJCWNvbnRpbnVlCi0gCQkJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY5YzFkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIGdvLWNvbW1vbi5pbmMKLQotUFYgPSAiMS42LjMiCi1HT19CQVNFVkVSU0lPTiA9ICIxLjYiCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTkxNzc4NTI1Yzg2OWNkZGUwYWI1YTFiZjI4M2NkODEiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICBmaWxlOi8vYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBcCi0gICAgICAgZmlsZTovL3N5c2xvZy5wYXRjaCBcCi0gICAgICAgZmlsZTovL2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZml4LWNjLWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZ290b29sZGlyLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjNmY2U2Y2NhYWRkMzEwMTU5YzllODc0MjIwZTJhMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzI2YWVlZDVmODZjZjE4ZjE2ZDZkYzgzMTQwNTYxNGY4NTVlMmQ0MTZhOTFmZDNmZGMzMzRmNzcyMzQ1YjAwIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvYXJtaGYtZWxmLWhlYWRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUzYTE2Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRW5jb2RlIGFybSBFQUJJICggaGFyZC9zb2Z0ICkgY2FsbGluZyBjb252ZW50aW9uIGluIEVMRiBoZWFkZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLSsrKyBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi1AQCAtODI3LDcgKzgyNywxMyBAQAotIAkvLyAzMi1iaXQgYXJjaGl0ZWN0dXJlcwotIAljYXNlICc1JzoKLSAJCS8vIHdlIHVzZSBFQUJJIG9uIGJvdGggbGludXgvYXJtIGFuZCBmcmVlYnNkL2FybS4KLS0JCWlmIEhFQURUWVBFID09IG9iai5IbGludXggfHwgSEVBRFRZUEUgPT0gb2JqLkhmcmVlYnNkIHsKLSsJCWlmIEhFQURUWVBFID09IG9iai5IbGludXggewotKwkJCWlmIEN0eHQuR29hcm0gPT0gNyB7Ci0rCQkJCWVoZHIuZmxhZ3MgPSAweDUwMDA0MDIgLy8gaGFzIGVudHJ5IHBvaW50LCBWZXJzaW9uNSBFQUJJLCBoYXJkIGZsb2F0Ci0rCQkJfSBlbHNlIHsKLSsJCQkJZWhkci5mbGFncyA9IDB4NTAwMDIwMiAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIHNvZnQgZmxvYXQKLSsJCQl9Ci0rCQl9IGVsc2UgaWYgSEVBRFRZUEUgPT0gb2JqLkhmcmVlYnNkIHsKLSAJCQkvLyBXZSBzZXQgYSB2YWx1ZSBoZXJlIHRoYXQgbWFrZXMgbm8gaW5kaWNhdGlvbiBvZiB3aGljaAotIAkJCS8vIGZsb2F0IEFCSSB0aGUgb2JqZWN0IHVzZXMsIGJlY2F1c2UgdGhpcyBpcyBpbmZvcm1hdGlvbgotIAkJCS8vIHVzZWQgYnkgdGhlIGR5bmFtaWMgbGlua2VyIHRvIGNvbXBhcmUgZXhlY3V0YWJsZXMgYW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9maXgtY2MtaGFuZGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9maXgtY2MtaGFuZGxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MzMyM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZml4LWNjLWhhbmRsaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotQWNjZXB0IENDIHdpdGggbXVsdGlwbGUgd29yZHMgaW4gaXRzIG5hbWUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vYnVpbGQuZ28JMjAxNS0wNy0yOSAxNDo0ODo0MC4zMjMxODU4MDcgLTA3MDAKLSsrKyBnby9zcmMvY21kL2dvL2J1aWxkLmdvCTIwMTUtMDctMzAgMDc6Mzc6NDAuNTI5ODE4NTg2IC0wNzAwCi1AQCAtMjgwNSwxMiArMjgwNSwyNCBAQAotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNDIiwgZGVmYXVsdENDLCBvYmpkaXIpCi0gfQotIAotKy8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSsvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDQyIsIGRlZmF1bHRDQykKLSt9Ci0rCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0gCXJldHVybiBiLmNjb21waWxlckNtZCgiQ1hYIiwgZGVmYXVsdENYWCwgb2JqZGlyKQotIH0KLSAKLSsvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0rZnVuYyAoYiAqYnVpbGRlcikgZ3h4Q21kRm9yUmVhbCgpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGVudkxpc3QoIkNYWCIsIGRlZmF1bHRDWFgpCi0rfQotKwotIC8vIGNjb21waWxlckNtZCByZXR1cm5zIGEgY29tbWFuZCBsaW5lIHByZWZpeCBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50Ci0gLy8gdmFyaWFibGUgYW5kIHVzaW5nIHRoZSBkZWZhdWx0IGNvbW1hbmQgd2hlbiB0aGUgdmFyaWFibGUgaXMgZW1wdHkuCi0gZnVuYyAoYiAqYnVpbGRlcikgY2NvbXBpbGVyQ21kKGVudnZhciwgZGVmY21kLCBvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci1JbmRleDogZ28vc3JjL2NtZC9nby9lbnYuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vZW52LmdvCTIwMTUtMDctMjkgMTQ6NDg6NDAuMzIzMTg1ODA3IC0wNzAwCi0rKysgZ28vc3JjL2NtZC9nby9lbnYuZ28JMjAxNS0wNy0zMCAwNzo0MDo1NC40NjE2NTU3MjEgLTA3MDAKLUBAIC01MiwxMCArNTIsOSBAQAotIAotIAlpZiBnb29zICE9ICJwbGFuOSIgewotIAkJY21kIDo9IGIuZ2NjQ21kKCIuIikKLS0JCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0MiLCBjbWRbMF19KQotKwkJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDQyIsIHN0cmluZ3MuSm9pbihiLmdjY0NtZEZvclJlYWwoKSwgIiAiKX0pCi0gCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkdPR0NDRkxBR1MiLCBzdHJpbmdzLkpvaW4oY21kWzM6XSwgIiAiKX0pCi0tCQljbWQgPSBiLmd4eENtZCgiLiIpCi0tCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNYWCIsIGNtZFswXX0pCi0rCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNYWCIsIHN0cmluZ3MuSm9pbihiLmd4eENtZEZvclJlYWwoKSwgIiAiKX0pCi0gCX0KLSAKLSAJaWYgYnVpbGRDb250ZXh0LkNnb0VuYWJsZWQgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY2MTU2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVB1dCBRdW90ZXMgYXJvdW5kIENDX0ZPUl9UQVJHRVQgc2luY2UgaXQgY2FuIGJlIG11dGxpcGxlIHdvcmRzIGUuZy4gaW4gT0UKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9tYWtlLmJhc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9tYWtlLmJhc2gJMjAxNS0wNy0yOSAxMzoyODoxMS4zMzQwMzE2OTYgLTA3MDAKLSsrKyBnby9zcmMvbWFrZS5iYXNoCTIwMTUtMDctMjkgMTM6MzY6NTUuODE0NDY1NjMwIC0wNzAwCi1AQCAtMTU4LDcgKzE1OCw3IEBACi0gZmkKLSAKLSBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotLUNDPSRDQ19GT1JfVEFSR0VUICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLStDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLSBlY2hvCi0gCi0gcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZ290b29sZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZ290b29sZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDY3MDI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L2dvdG9vbGRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLURlZmluZSB0b29sZGlyIGluIHJlbGF0aW9uIHRvIEdPVE9PTERJUiBlbnYgdmFyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9nby9idWlsZC9idWlsZC5nbwotKysrIGdvL3NyYy9nby9idWlsZC9idWlsZC5nbwotQEAgLTEzODgsNyArMTM4OCw3IEBAIGZ1bmMgaW5pdCgpIHsKLSB9Ci0gCi0gLy8gVG9vbERpciBpcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYnVpbGQgdG9vbHMuCi0tdmFyIFRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rdmFyIFRvb2xEaXIgPSBlbnZPcigiR09UT09MRElSIiwgZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKSkKLSAKLSAvLyBJc0xvY2FsSW1wb3J0IHJlcG9ydHMgd2hldGhlciB0aGUgaW1wb3J0IHBhdGggaXMKLSAvLyBhIGxvY2FsIGltcG9ydCBwYXRoLCBsaWtlICIuIiwgIi4uIiwgIi4vZm9vIiwgb3IgIi4uL2ZvbyIuCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0xMzEyLDcgKzEzMTIsNyBAQCBmdW5jIChiICpidWlsZGVyKSBidWlsZChhICphY3Rpb24pIChlcnIKLSAJCX0KLSAKLSAJCWNnb0V4ZSA6PSB0b29sKCJjZ28iKQotLQkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLnRhcmdldCAhPSAiIiB7Ci0rCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28udGFyZ2V0ICE9ICIiICYmIG9zLkdldGVudigiR09UT09MRElSIikgPT0gIiIgewotIAkJCWNnb0V4ZSA9IGEuY2dvLnRhcmdldAotIAkJfQotIAkJb3V0R28sIG91dE9iaiwgZXJyIDo9IGIuY2dvKGEucCwgY2dvRXhlLCBvYmosIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgY3h4ZmlsZXMsIGEucC5NRmlsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYmFlMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotQWRkIG5ldyBvcHRpb24gLS10YXJnZXQtb25seSB0byBidWlsZCB0YXJnZXQgY29tcG9uZW50cwotU2VwYXJhdGVzIHRoZSBob3N0IGFuZCB0YXJnZXQgcGllY2VzIG9mIGJ1aWxkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvbWFrZS5iYXNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvbWFrZS5iYXNoCi0rKysgZ28vc3JjL21ha2UuYmFzaAotQEAgLTE0MywxMiArMTQzLDIzIEBAIGlmIFsgIiQxIiA9ICItLW5vLWNsZWFuIiBdOyB0aGVuCi0gCWJ1aWxkYWxsPSIiCi0gCXNoaWZ0Ci0gZmkKLS0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotLSMgRGVsYXkgbW92ZSBvZiBkaXN0IHRvb2wgdG8gbm93LCBiZWNhdXNlIGJvb3RzdHJhcCBtYXkgY2xlYXIgdG9vbCBkaXJlY3RvcnkuCi0tbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAotLWVjaG8KLSAKLS1pZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09IT1NUT1MiICE9ICIkR09PUyIgXTsgdGhlbgotK2RvX2hvc3RfYnVpbGQ9InllcyIKLStkb190YXJnZXRfYnVpbGQ9InllcyIKLStpZiBbICIkMSIgPSAiLS10YXJnZXQtb25seSIgXTsgdGhlbgotKwlkb19ob3N0X2J1aWxkPSJubyIKLSsJc2hpZnQKLStlbGlmIFsgIiQxIiA9ICItLWhvc3Qtb25seSIgXTsgdGhlbgotKwlkb190YXJnZXRfYnVpbGQ9Im5vIgotKwlzaGlmdAotK2ZpCi0rCi0raWYgWyAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwkuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotKwkjIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgotKwltdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0Ci0rCWVjaG8KLSsKLSAJZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAkR09IT1NUT1MvJEdPSE9TVEFSQ0guIgotIAkjIENDX0ZPUl9UQVJHRVQgaXMgcmVjb3JkZWQgYXMgdGhlIGRlZmF1bHQgY29tcGlsZXIgZm9yIHRoZSBnbyB0b29sLiBXaGVuIGJ1aWxkaW5nIGZvciB0aGUgaG9zdCwgaG93ZXZlciwKLSAJIyB1c2UgdGhlIGhvc3QgY29tcGlsZXIsIENDLCBmcm9tIGBjbWQvZGlzdC9kaXN0IGVudmAgaW5zdGVhZC4KLUBAIC0xNTcsMTEgKzE2OCwyMCBAQCBpZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09ICi0gCWVjaG8KLSBmaQotIAotLWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0tQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0tZWNobwotK2lmIFsgIiRkb190YXJnZXRfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKyAgICBHT19JTlNUQUxMPSIke0dPX1RBUkdFVF9JTlNUQUxMOi1zdGQgY21kfSIKLSsgICAgZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLSsgICAgaWYgWyAiJEdPSE9TVE9TIiA9ICIkR09PUyIgLWEgIiRHT0hPU1RBUkNIIiA9ICIkR09BUkNIIiAtYSAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwlybSAtcmYgLi9ob3N0LXRvb2xzCi0rCW1rZGlyIC4vaG9zdC10b29scwotKwltdiAiJEdPVE9PTERJUiIvKiAuL2hvc3QtdG9vbHMKLSsJR09UT09MRElSPSIkUFdEL2hvc3QtdG9vbHMiCi0rICAgIGZpCi0rICAgIEdPVE9PTERJUj0iJEdPVE9PTERJUiIgQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiAke0dPX0lOU1RBTEx9Ci0rICAgIGVjaG8KLSAKLS1ybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCi0rICAgIHJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKLStmaQotIAotIGlmIFsgIiQxIiAhPSAiLS1uby1iYW5uZXIiIF07IHRoZW4KLSAJIiRHT1RPT0xESVIiL2Rpc3QgYmFubmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9zeXNsb2cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9zeXNsb2cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YmUwNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvc3lzbG9nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotQWRkIHRpbWVvdXRzIHRvIGxvZ2dlcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLXIgLXUgZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTMtMTEtMjggMTM6Mzg6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28JMjAxNC0xMC0wMyAxMTo0NDozNy43MTA0MDMyMDAgLTA3MDAKLUBAIC0zMyw2ICszMyw5IEBACi0gY29uc3Qgc2V2ZXJpdHlNYXNrID0gMHgwNwotIGNvbnN0IGZhY2lsaXR5TWFzayA9IDB4ZjgKLSAKLSt2YXIgd3JpdGVUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rdmFyIGNvbm5lY3RUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rCi0gY29uc3QgKAotIAkvLyBTZXZlcml0eS4KLSAKLUBAIC0xMDAsNiArMTAzLDcgQEAKLSB0eXBlIHNlcnZlckNvbm4gaW50ZXJmYWNlIHsKLSAJd3JpdGVTdHJpbmcocCBQcmlvcml0eSwgaG9zdG5hbWUsIHRhZywgcywgbmwgc3RyaW5nKSBlcnJvcgotIAljbG9zZSgpIGVycm9yCi0rCXNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yCi0gfQotIAotIHR5cGUgbmV0Q29ubiBzdHJ1Y3QgewotQEAgLTI3Myw3ICsyNzcsMTEgQEAKLSAJCW5sID0gIlxuIgotIAl9Ci0gCi0tCWVyciA6PSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0rCWVyciA6PSB3LmNvbm4uc2V0V3JpdGVEZWFkbGluZSh0aW1lLk5vdygpLkFkZCh3cml0ZVRpbWVvdXQpKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJldHVybiAwLCBlcnIKLSsJfQotKwllcnIgPSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIDAsIGVycgotIAl9Ci1AQCAtMzA1LDYgKzMxMywxMCBAQAotIAlyZXR1cm4gbi5jb25uLkNsb3NlKCkKLSB9Ci0gCi0rZnVuYyAobiAqbmV0Q29ubikgc2V0V3JpdGVEZWFkbGluZSh0IHRpbWUuVGltZSkgZXJyb3IgewotKwlyZXR1cm4gbi5jb25uLlNldFdyaXRlRGVhZGxpbmUodCkKLSt9Ci0rCi0gLy8gTmV3TG9nZ2VyIGNyZWF0ZXMgYSBsb2cuTG9nZ2VyIHdob3NlIG91dHB1dCBpcyB3cml0dGVuIHRvCi0gLy8gdGhlIHN5c3RlbSBsb2cgc2VydmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkuIFRoZSBsb2dGbGFnCi0gLy8gYXJndW1lbnQgaXMgdGhlIGZsYWcgc2V0IHBhc3NlZCB0aHJvdWdoIHRvIGxvZy5OZXcgdG8gY3JlYXRlCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28KLS0tLSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxNC0xMC0wMyAxMTo0NDozOS4wMTA0MDMxNzUgLTA3MDAKLUBAIC0xOSw3ICsxOSw3IEBACi0gCWxvZ1BhdGhzIDo9IFtdc3RyaW5neyIvZGV2L2xvZyIsICIvdmFyL3J1bi9zeXNsb2cifQotIAlmb3IgXywgbmV0d29yayA6PSByYW5nZSBsb2dUeXBlcyB7Ci0gCQlmb3IgXywgcGF0aCA6PSByYW5nZSBsb2dQYXRocyB7Ci0tCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsKG5ldHdvcmssIHBhdGgpCi0rCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsVGltZW91dChuZXR3b3JrLCBwYXRoLCBjb25uZWN0VGltZW91dCkKLSAJCQlpZiBlcnIgIT0gbmlsIHsKLSAJCQkJY29udGludWUKLSAJCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzMwMDRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ28tY29tbW9uLmluYwotCi1QViA9ICIxLjcuNCIKLUdPX0JBU0VWRVJTSU9OID0gIjEuNyIKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKLQotU1JDX1VSSSArPSAiXAotICAgICAgIGZpbGU6Ly9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vc3lzbG9nLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9maXgtY2MtaGFuZGxpbmcucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9nb3Rvb2xkaXIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ5YzEwNzY0MjhhNWQzYjVhZDdhYzY1MjMzZmNjYTJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjMTg5MTExZTliYTY1MWEyYmIzZWU4NjhhYTg4MWZhYjM2YjJmMmRhMzQwOWU4MDg4NWNhNzU4YTZiNjE0Y2MiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2FybWhmLWVsZi1oZWFkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTNhMTZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2FybWhmLWVsZi1oZWFkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1FbmNvZGUgYXJtIEVBQkkgKCBoYXJkL3NvZnQgKSBjYWxsaW5nIGNvbnZlbnRpb24gaW4gRUxGIGhlYWRlcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLUBAIC04MjcsNyArODI3LDEzIEBACi0gCS8vIDMyLWJpdCBhcmNoaXRlY3R1cmVzCi0gCWNhc2UgJzUnOgotIAkJLy8gd2UgdXNlIEVBQkkgb24gYm90aCBsaW51eC9hcm0gYW5kIGZyZWVic2QvYXJtLgotLQkJaWYgSEVBRFRZUEUgPT0gb2JqLkhsaW51eCB8fCBIRUFEVFlQRSA9PSBvYmouSGZyZWVic2QgewotKwkJaWYgSEVBRFRZUEUgPT0gb2JqLkhsaW51eCB7Ci0rCQkJaWYgQ3R4dC5Hb2FybSA9PSA3IHsKLSsJCQkJZWhkci5mbGFncyA9IDB4NTAwMDQwMiAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIGhhcmQgZmxvYXQKLSsJCQl9IGVsc2UgewotKwkJCQllaGRyLmZsYWdzID0gMHg1MDAwMjAyIC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSSwgc29mdCBmbG9hdAotKwkJCX0KLSsJCX0gZWxzZSBpZiBIRUFEVFlQRSA9PSBvYmouSGZyZWVic2QgewotIAkJCS8vIFdlIHNldCBhIHZhbHVlIGhlcmUgdGhhdCBtYWtlcyBubyBpbmRpY2F0aW9uIG9mIHdoaWNoCi0gCQkJLy8gZmxvYXQgQUJJIHRoZSBvYmplY3QgdXNlcywgYmVjYXVzZSB0aGlzIGlzIGluZm9ybWF0aW9uCi0gCQkJLy8gdXNlZCBieSB0aGUgZHluYW1pYyBsaW5rZXIgdG8gY29tcGFyZSBleGVjdXRhYmxlcyBhbmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2ZpeC1jYy1oYW5kbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2ZpeC1jYy1oYW5kbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY3Y2FmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9maXgtY2MtaGFuZGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1BY2NlcHQgQ0Mgd2l0aCBtdWx0aXBsZSB3b3JkcyBpbiBpdHMgbmFtZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0yOTkxLDEyICsyOTkxLDI0IEBAIGZ1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZChvYmpkaXIgc3RyaW5nKQotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNDIiwgZGVmYXVsdENDLCBvYmpkaXIpCi0gfQotIAotKy8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSsvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDQyIsIGRlZmF1bHRDQykKLSt9Ci0rCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0gCXJldHVybiBiLmNjb21waWxlckNtZCgiQ1hYIiwgZGVmYXVsdENYWCwgb2JqZGlyKQotIH0KLSAKLSsvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0rZnVuYyAoYiAqYnVpbGRlcikgZ3h4Q21kRm9yUmVhbCgpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGVudkxpc3QoIkNYWCIsIGRlZmF1bHRDWFgpCi0rfQotKwotIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGdmb3J0cmFuQ21kKG9iamRpciBzdHJpbmcpIFtdc3RyaW5nIHsKLSAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJGQyIsICJnZm9ydHJhbiIsIG9iamRpcikKLUluZGV4OiBnby9zcmMvY21kL2dvL2Vudi5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9lbnYuZ28KLSsrKyBnby9zcmMvY21kL2dvL2Vudi5nbwotQEAgLTUxLDEwICs1MSw5IEBAIGZ1bmMgbWtFbnYoKSBbXWVudlZhciB7Ci0gCi0gCWlmIGdvb3MgIT0gInBsYW45IiB7Ci0gCQljbWQgOj0gYi5nY2NDbWQoIi4iKQotLQkJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDQyIsIGNtZFswXX0pCi0rCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNDIiwgc3RyaW5ncy5Kb2luKGIuZ2NjQ21kRm9yUmVhbCgpLCAiICIpfSkKLSAJCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiR09HQ0NGTEFHUyIsIHN0cmluZ3MuSm9pbihjbWRbMzpdLCAiICIpfSkKLS0JCWNtZCA9IGIuZ3h4Q21kKCIuIikKLS0JCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ1hYIiwgY21kWzBdfSkKLSsJCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ1hYIiwgc3RyaW5ncy5Kb2luKGIuZ3h4Q21kRm9yUmVhbCgpLCAiICIpfSkKLSAJfQotIAotIAlpZiBidWlsZENvbnRleHQuQ2dvRW5hYmxlZCB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjYxNTZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotUHV0IFF1b3RlcyBhcm91bmQgQ0NfRk9SX1RBUkdFVCBzaW5jZSBpdCBjYW4gYmUgbXV0bGlwbGUgd29yZHMgZS5nLiBpbiBPRQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL21ha2UuYmFzaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL21ha2UuYmFzaAkyMDE1LTA3LTI5IDEzOjI4OjExLjMzNDAzMTY5NiAtMDcwMAotKysrIGdvL3NyYy9tYWtlLmJhc2gJMjAxNS0wNy0yOSAxMzozNjo1NS44MTQ0NjU2MzAgLTA3MDAKLUBAIC0xNTgsNyArMTU4LDcgQEAKLSBmaQotIAotIGVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0tQ0M9JENDX0ZPUl9UQVJHRVQgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcCBpbnN0YWxsICRHT19GTEFHUyAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgc3RkIGNtZAotK0NDPSIkQ0NfRk9SX1RBUkdFVCIgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcCBpbnN0YWxsICRHT19GTEFHUyAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgc3RkIGNtZAotIGVjaG8KLSAKLSBybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9nb3Rvb2xkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9nb3Rvb2xkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NjcwMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvZ290b29sZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRGVmaW5lIHRvb2xkaXIgaW4gcmVsYXRpb24gdG8gR09UT09MRElSIGVudiB2YXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9nby9idWlsZC9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCi0rKysgZ28vc3JjL2dvL2J1aWxkL2J1aWxkLmdvCi1AQCAtMTM4OCw3ICsxMzg4LDcgQEAgZnVuYyBpbml0KCkgewotIH0KLSAKLSAvLyBUb29sRGlyIGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBidWlsZCB0b29scy4KLS12YXIgVG9vbERpciA9IGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSt2YXIgVG9vbERpciA9IGVudk9yKCJHT1RPT0xESVIiLCBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpKQotIAotIC8vIElzTG9jYWxJbXBvcnQgcmVwb3J0cyB3aGV0aGVyIHRoZSBpbXBvcnQgcGF0aCBpcwotIC8vIGEgbG9jYWwgaW1wb3J0IHBhdGgsIGxpa2UgIi4iLCAiLi4iLCAiLi9mb28iLCBvciAiLi4vZm9vIi4KLUluZGV4OiBnby9zcmMvY21kL2dvL2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2J1aWxkLmdvCi0rKysgZ28vc3JjL2NtZC9nby9idWlsZC5nbwotQEAgLTEzMTIsNyArMTMxMiw3IEBAIGZ1bmMgKGIgKmJ1aWxkZXIpIGJ1aWxkKGEgKmFjdGlvbikgKGVycgotIAkJfQotIAotIAkJY2dvRXhlIDo9IHRvb2woImNnbyIpCi0tCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28udGFyZ2V0ICE9ICIiIHsKLSsJCWlmIGEuY2dvICE9IG5pbCAmJiBhLmNnby50YXJnZXQgIT0gIiIgJiYgb3MuR2V0ZW52KCJHT1RPT0xESVIiKSA9PSAiIiB7Ci0gCQkJY2dvRXhlID0gYS5jZ28udGFyZ2V0Ci0gCQl9Ci0gCQlvdXRHbywgb3V0T2JqLCBlcnIgOj0gYi5jZ28oYS5wLCBjZ29FeGUsIG9iaiwgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBjeHhmaWxlcywgYS5wLk1GaWxlcykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L3NwbGl0LWhvc3QtYW5kLXRhcmdldC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L3NwbGl0LWhvc3QtYW5kLXRhcmdldC1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBkZDk1Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1BZGQgbmV3IG9wdGlvbiAtLXRhcmdldC1vbmx5IHRvIGJ1aWxkIHRhcmdldCBjb21wb25lbnRzCi1TZXBhcmF0ZXMgdGhlIGhvc3QgYW5kIHRhcmdldCBwaWVjZXMgb2YgYnVpbGQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9tYWtlLmJhc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9tYWtlLmJhc2gKLSsrKyBnby9zcmMvbWFrZS5iYXNoCi1AQCAtMTU0LDEzICsxNTQsMjIgQEAgaWYgWyAiJDEiID0gIi0tbm8tY2xlYW4iIF07IHRoZW4KLSAJYnVpbGRhbGw9IiIKLSAJc2hpZnQKLSBmaQotLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICRHT19ESVNURkxBR1MgLXYgIyBidWlsZHMgZ29fYm9vdHN0cmFwCi0rZG9faG9zdF9idWlsZD0ieWVzIgotK2RvX3RhcmdldF9idWlsZD0ieWVzIgotK2lmIFsgIiQxIiA9ICItLXRhcmdldC1vbmx5IiBdOyB0aGVuCi0rCWRvX2hvc3RfYnVpbGQ9Im5vIgotKwlzaGlmdAotK2VsaWYgWyAiJDEiID0gIi0taG9zdC1vbmx5IiBdOyB0aGVuCi0rCWRvX3RhcmdldF9idWlsZD0ibm8iCi0rCXNoaWZ0Ci0rZmkKLSAKLS0jIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgotLW12IGNtZC9kaXN0L2Rpc3QgIiRHT1RPT0xESVIiL2Rpc3QKLS1lY2hvCi0raWYgWyAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwkuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotKwkjIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgotKwltdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0Ci0rCWVjaG8KLSAKLS1pZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09IT1NUT1MiICE9ICIkR09PUyIgXTsgdGhlbgotIAllY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICRHT0hPU1RPUy8kR09IT1NUQVJDSC4iCi0gCSMgQ0NfRk9SX1RBUkdFVCBpcyByZWNvcmRlZCBhcyB0aGUgZGVmYXVsdCBjb21waWxlciBmb3IgdGhlIGdvIHRvb2wuIFdoZW4gYnVpbGRpbmcgZm9yIHRoZSBob3N0LCBob3dldmVyLAotIAkjIHVzZSB0aGUgaG9zdCBjb21waWxlciwgQ0MsIGZyb20gYGNtZC9kaXN0L2Rpc3QgZW52YCBpbnN0ZWFkLgotQEAgLTE2OSwxMSArMTc4LDIwIEBAIGlmIFsgIiRHT0hPU1RBUkNIIiAhPSAiJEdPQVJDSCIgLW8gIiRHT0gKLSAJZWNobwotIGZpCi0gCi0tZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLS1DQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLS1lY2hvCi0raWYgWyAiJGRvX3RhcmdldF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCi0rICAgIEdPX0lOU1RBTEw9IiR7R09fVEFSR0VUX0lOU1RBTEw6LXN0ZCBjbWR9IgotKyAgICBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotKyAgICBpZiBbICIkR09IT1NUT1MiID0gIiRHT09TIiAtYSAiJEdPSE9TVEFSQ0giID0gIiRHT0FSQ0giIC1hICIkZG9faG9zdF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCi0rCXJtIC1yZiAuL2hvc3QtdG9vbHMKLSsJbWtkaXIgLi9ob3N0LXRvb2xzCi0rCW12ICIkR09UT09MRElSIi8qIC4vaG9zdC10b29scwotKwlHT1RPT0xESVI9IiRQV0QvaG9zdC10b29scyIKLSsgICAgZmkKLSsgICAgR09UT09MRElSPSIkR09UT09MRElSIiBDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12ICR7R09fSU5TVEFMTH0KLSsgICAgZWNobwotIAotLXJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKLSsgICAgcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcAotK2ZpCi0gCi0gaWYgWyAiJDEiICE9ICItLW5vLWJhbm5lciIgXTsgdGhlbgotIAkiJEdPVE9PTERJUiIvZGlzdCBiYW5uZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L3N5c2xvZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L3N5c2xvZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliZTA2Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9zeXNsb2cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1BZGQgdGltZW91dHMgdG8gbG9nZ2VyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtciAtdSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28gL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28KLS0tLSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28JMjAxMy0xMS0yOCAxMzozODoyOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwkyMDE0LTEwLTAzIDExOjQ0OjM3LjcxMDQwMzIwMCAtMDcwMAotQEAgLTMzLDYgKzMzLDkgQEAKLSBjb25zdCBzZXZlcml0eU1hc2sgPSAweDA3Ci0gY29uc3QgZmFjaWxpdHlNYXNrID0gMHhmOAotIAotK3ZhciB3cml0ZVRpbWVvdXQgPSAxICogdGltZS5TZWNvbmQKLSt2YXIgY29ubmVjdFRpbWVvdXQgPSAxICogdGltZS5TZWNvbmQKLSsKLSBjb25zdCAoCi0gCS8vIFNldmVyaXR5LgotIAotQEAgLTEwMCw2ICsxMDMsNyBAQAotIHR5cGUgc2VydmVyQ29ubiBpbnRlcmZhY2UgewotIAl3cml0ZVN0cmluZyhwIFByaW9yaXR5LCBob3N0bmFtZSwgdGFnLCBzLCBubCBzdHJpbmcpIGVycm9yCi0gCWNsb3NlKCkgZXJyb3IKLSsJc2V0V3JpdGVEZWFkbGluZSh0IHRpbWUuVGltZSkgZXJyb3IKLSB9Ci0gCi0gdHlwZSBuZXRDb25uIHN0cnVjdCB7Ci1AQCAtMjczLDcgKzI3NywxMSBAQAotIAkJbmwgPSAiXG4iCi0gCX0KLSAKLS0JZXJyIDo9IHcuY29ubi53cml0ZVN0cmluZyhwLCB3Lmhvc3RuYW1lLCB3LnRhZywgbXNnLCBubCkKLSsJZXJyIDo9IHcuY29ubi5zZXRXcml0ZURlYWRsaW5lKHRpbWUuTm93KCkuQWRkKHdyaXRlVGltZW91dCkpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJcmV0dXJuIDAsIGVycgotKwl9Ci0rCWVyciA9IHcuY29ubi53cml0ZVN0cmluZyhwLCB3Lmhvc3RuYW1lLCB3LnRhZywgbXNnLCBubCkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gMCwgZXJyCi0gCX0KLUBAIC0zMDUsNiArMzEzLDEwIEBACi0gCXJldHVybiBuLmNvbm4uQ2xvc2UoKQotIH0KLSAKLStmdW5jIChuICpuZXRDb25uKSBzZXRXcml0ZURlYWRsaW5lKHQgdGltZS5UaW1lKSBlcnJvciB7Ci0rCXJldHVybiBuLmNvbm4uU2V0V3JpdGVEZWFkbGluZSh0KQotK30KLSsKLSAvLyBOZXdMb2dnZXIgY3JlYXRlcyBhIGxvZy5Mb2dnZXIgd2hvc2Ugb3V0cHV0IGlzIHdyaXR0ZW4gdG8KLSAvLyB0aGUgc3lzdGVtIGxvZyBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwcmlvcml0eS4gVGhlIGxvZ0ZsYWcKLSAvLyBhcmd1bWVudCBpcyB0aGUgZmxhZyBzZXQgcGFzc2VkIHRocm91Z2ggdG8gbG9nLk5ldyB0byBjcmVhdGUKLWRpZmYgLXIgLXUgZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28gL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwotLS0tIGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCTIwMTMtMTEtMjggMTM6Mzg6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwkyMDE0LTEwLTAzIDExOjQ0OjM5LjAxMDQwMzE3NSAtMDcwMAotQEAgLTE5LDcgKzE5LDcgQEAKLSAJbG9nUGF0aHMgOj0gW11zdHJpbmd7Ii9kZXYvbG9nIiwgIi92YXIvcnVuL3N5c2xvZyJ9Ci0gCWZvciBfLCBuZXR3b3JrIDo9IHJhbmdlIGxvZ1R5cGVzIHsKLSAJCWZvciBfLCBwYXRoIDo9IHJhbmdlIGxvZ1BhdGhzIHsKLS0JCQljb25uLCBlcnIgOj0gbmV0LkRpYWwobmV0d29yaywgcGF0aCkKLSsJCQljb25uLCBlcnIgOj0gbmV0LkRpYWxUaW1lb3V0KG5ldHdvcmssIHBhdGgsIGNvbm5lY3RUaW1lb3V0KQotIAkJCWlmIGVyciAhPSBuaWwgewotIAkJCQljb250aW51ZQotIAkJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMzc2YTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjguaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBnby1jb21tb24uaW5jCi0KLUdPTUlOT1IgPSAiIgotR09fQkFTRVZFUlNJT04gPSAiMS44IgotUFYgLj0gIiR7R09NSU5PUn0iCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWQ0OTUwZWNiN2IyNmQyYzVlNGU3YjRlMGRkNzQ3MDciCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICBmaWxlOi8vYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBcCi0gICAgICAgZmlsZTovL3N5c2xvZy5wYXRjaCBcCi0gICAgICAgZmlsZTovL2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZml4LWNjLWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZ290b29sZGlyLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3NzQzOTYwYzk2ODc2MDQzN2I2ZTM5MDkzY2ZlNmY2NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDY4NjVmNTg3YjQ0YmU3MDkyZjIwNmQ3M2ZjMWRlMjUyNjAwYjc5YjNjYWNjNTg3Yjc0YjVlZjVjNjIzNTk2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2FybWhmLWVsZi1oZWFkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MDg4MzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvYXJtaGYtZWxmLWhlYWRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLUVuY29kZSBhcm0gRUFCSSAoIGhhcmQvc29mdCApIGNhbGxpbmcgY29udmVudGlvbiBpbiBFTEYgaGVhZGVyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi0rKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotQEAgLTk1MCw3ICs5NTAsMTMgQEAgZnVuYyBFbGZpbml0KGN0eHQgKkxpbmspIHsKLSAJY2FzZSBzeXMuQVJNLCBzeXMuTUlQUzoKLSAJCWlmIFN5c0FyY2guRmFtaWx5ID09IHN5cy5BUk0gewotIAkJCS8vIHdlIHVzZSBFQUJJIG9uIGxpbnV4L2FybSwgZnJlZWJzZC9hcm0sIG5ldGJzZC9hcm0uCi0tCQkJaWYgSGVhZHR5cGUgPT0gb2JqLkhsaW51eCB8fCBIZWFkdHlwZSA9PSBvYmouSGZyZWVic2QgfHwgSGVhZHR5cGUgPT0gb2JqLkhuZXRic2QgewotKwkJCWlmIEhlYWR0eXBlID09IG9iai5IbGludXggewotKwkJCQlpZiBvYmouR09BUk0gPT0gNyB7Ci0rCQkJCQllaGRyLmZsYWdzID0gMHg1MDAwNDAyIC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSSwgaGFyZCBmbG9hdAotKwkJCQl9IGVsc2UgewotKwkJCQkJZWhkci5mbGFncyA9IDB4NTAwMDIwMiAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIHNvZnQgZmxvYXQKLSsJCQkJfQotKwkJCX0gZWxzZSBpZiBIZWFkdHlwZSA9PSBvYmouSGZyZWVic2QgfHwgSGVhZHR5cGUgPT0gb2JqLkhuZXRic2QgewotIAkJCQkvLyBXZSBzZXQgYSB2YWx1ZSBoZXJlIHRoYXQgbWFrZXMgbm8gaW5kaWNhdGlvbiBvZiB3aGljaAotIAkJCQkvLyBmbG9hdCBBQkkgdGhlIG9iamVjdCB1c2VzLCBiZWNhdXNlIHRoaXMgaXMgaW5mb3JtYXRpb24KLSAJCQkJLy8gdXNlZCBieSB0aGUgZHluYW1pYyBsaW5rZXIgdG8gY29tcGFyZSBleGVjdXRhYmxlcyBhbmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2ZpeC1jYy1oYW5kbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2ZpeC1jYy1oYW5kbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM5YjgxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9maXgtY2MtaGFuZGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1BY2NlcHQgQ0Mgd2l0aCBtdWx0aXBsZSB3b3JkcyBpbiBpdHMgbmFtZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0zMTAwLDEyICszMTAwLDI0IEBAIGZ1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZChvYmpkaXIgc3RyaW5nKQotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNDIiwgZGVmYXVsdENDLCBvYmpkaXIpCi0gfQotIAotKy8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSsvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDQyIsIGRlZmF1bHRDQykKLSt9Ci0rCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0gCXJldHVybiBiLmNjb21waWxlckNtZCgiQ1hYIiwgZGVmYXVsdENYWCwgb2JqZGlyKQotIH0KLSAKLSsvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0rZnVuYyAoYiAqYnVpbGRlcikgZ3h4Q21kRm9yUmVhbCgpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGVudkxpc3QoIkNYWCIsIGRlZmF1bHRDWFgpCi0rfQotKwotIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGdmb3J0cmFuQ21kKG9iamRpciBzdHJpbmcpIFtdc3RyaW5nIHsKLSAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJGQyIsICJnZm9ydHJhbiIsIG9iamRpcikKLUluZGV4OiBnby9zcmMvY21kL2dvL2Vudi5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9lbnYuZ28KLSsrKyBnby9zcmMvY21kL2dvL2Vudi5nbwotQEAgLTYzLDEwICs2Myw5IEBAIGZ1bmMgbWtFbnYoKSBbXWVudlZhciB7Ci0gCX0KLSAKLSAJY21kIDo9IGIuZ2NjQ21kKCIuIikKLS0JZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDQyIsIGNtZFswXX0pCi0rCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0MiLCBzdHJpbmdzLkpvaW4oYi5nY2NDbWRGb3JSZWFsKCksICIgIil9KQotIAllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkdPR0NDRkxBR1MiLCBzdHJpbmdzLkpvaW4oY21kWzM6XSwgIiAiKX0pCi0tCWNtZCA9IGIuZ3h4Q21kKCIuIikKLS0JZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDWFgiLCBjbWRbMF19KQotKwllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNYWCIsIHN0cmluZ3MuSm9pbihiLmd4eENtZEZvclJlYWwoKSwgIiAiKX0pCi0gCi0gCWlmIGJ1aWxkQ29udGV4dC5DZ29FbmFibGVkIHsKLSAJCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0dPX0VOQUJMRUQiLCAiMSJ9KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY2MTU2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVB1dCBRdW90ZXMgYXJvdW5kIENDX0ZPUl9UQVJHRVQgc2luY2UgaXQgY2FuIGJlIG11dGxpcGxlIHdvcmRzIGUuZy4gaW4gT0UKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9tYWtlLmJhc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9tYWtlLmJhc2gJMjAxNS0wNy0yOSAxMzoyODoxMS4zMzQwMzE2OTYgLTA3MDAKLSsrKyBnby9zcmMvbWFrZS5iYXNoCTIwMTUtMDctMjkgMTM6MzY6NTUuODE0NDY1NjMwIC0wNzAwCi1AQCAtMTU4LDcgKzE1OCw3IEBACi0gZmkKLSAKLSBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotLUNDPSRDQ19GT1JfVEFSR0VUICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLStDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLSBlY2hvCi0gCi0gcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZ290b29sZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZ290b29sZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDY3MDI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2dvdG9vbGRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLURlZmluZSB0b29sZGlyIGluIHJlbGF0aW9uIHRvIEdPVE9PTERJUiBlbnYgdmFyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9nby9idWlsZC9idWlsZC5nbwotKysrIGdvL3NyYy9nby9idWlsZC9idWlsZC5nbwotQEAgLTEzODgsNyArMTM4OCw3IEBAIGZ1bmMgaW5pdCgpIHsKLSB9Ci0gCi0gLy8gVG9vbERpciBpcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYnVpbGQgdG9vbHMuCi0tdmFyIFRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rdmFyIFRvb2xEaXIgPSBlbnZPcigiR09UT09MRElSIiwgZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKSkKLSAKLSAvLyBJc0xvY2FsSW1wb3J0IHJlcG9ydHMgd2hldGhlciB0aGUgaW1wb3J0IHBhdGggaXMKLSAvLyBhIGxvY2FsIGltcG9ydCBwYXRoLCBsaWtlICIuIiwgIi4uIiwgIi4vZm9vIiwgb3IgIi4uL2ZvbyIuCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0xMzEyLDcgKzEzMTIsNyBAQCBmdW5jIChiICpidWlsZGVyKSBidWlsZChhICphY3Rpb24pIChlcnIKLSAJCX0KLSAKLSAJCWNnb0V4ZSA6PSB0b29sKCJjZ28iKQotLQkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLnRhcmdldCAhPSAiIiB7Ci0rCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28udGFyZ2V0ICE9ICIiICYmIG9zLkdldGVudigiR09UT09MRElSIikgPT0gIiIgewotIAkJCWNnb0V4ZSA9IGEuY2dvLnRhcmdldAotIAkJfQotIAkJb3V0R28sIG91dE9iaiwgZXJyIDo9IGIuY2dvKGEucCwgY2dvRXhlLCBvYmosIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgY3h4ZmlsZXMsIGEucC5NRmlsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZGQ5NWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotQWRkIG5ldyBvcHRpb24gLS10YXJnZXQtb25seSB0byBidWlsZCB0YXJnZXQgY29tcG9uZW50cwotU2VwYXJhdGVzIHRoZSBob3N0IGFuZCB0YXJnZXQgcGllY2VzIG9mIGJ1aWxkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvbWFrZS5iYXNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvbWFrZS5iYXNoCi0rKysgZ28vc3JjL21ha2UuYmFzaAotQEAgLTE1NCwxMyArMTU0LDIyIEBAIGlmIFsgIiQxIiA9ICItLW5vLWNsZWFuIiBdOyB0aGVuCi0gCWJ1aWxkYWxsPSIiCi0gCXNoaWZ0Ci0gZmkKLS0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotK2RvX2hvc3RfYnVpbGQ9InllcyIKLStkb190YXJnZXRfYnVpbGQ9InllcyIKLStpZiBbICIkMSIgPSAiLS10YXJnZXQtb25seSIgXTsgdGhlbgotKwlkb19ob3N0X2J1aWxkPSJubyIKLSsJc2hpZnQKLStlbGlmIFsgIiQxIiA9ICItLWhvc3Qtb25seSIgXTsgdGhlbgotKwlkb190YXJnZXRfYnVpbGQ9Im5vIgotKwlzaGlmdAotK2ZpCi0gCi0tIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KLS1tdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0Ci0tZWNobwotK2lmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KLSsJLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKLSsJIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KLSsJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAotKwllY2hvCi0gCi0taWYgWyAiJEdPSE9TVEFSQ0giICE9ICIkR09BUkNIIiAtbyAiJEdPSE9TVE9TIiAhPSAiJEdPT1MiIF07IHRoZW4KLSAJZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAkR09IT1NUT1MvJEdPSE9TVEFSQ0guIgotIAkjIENDX0ZPUl9UQVJHRVQgaXMgcmVjb3JkZWQgYXMgdGhlIGRlZmF1bHQgY29tcGlsZXIgZm9yIHRoZSBnbyB0b29sLiBXaGVuIGJ1aWxkaW5nIGZvciB0aGUgaG9zdCwgaG93ZXZlciwKLSAJIyB1c2UgdGhlIGhvc3QgY29tcGlsZXIsIENDLCBmcm9tIGBjbWQvZGlzdC9kaXN0IGVudmAgaW5zdGVhZC4KLUBAIC0xNjksMTEgKzE3OCwyMCBAQCBpZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09ICi0gCWVjaG8KLSBmaQotIAotLWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0tQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0tZWNobwotK2lmIFsgIiRkb190YXJnZXRfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKyAgICBHT19JTlNUQUxMPSIke0dPX1RBUkdFVF9JTlNUQUxMOi1zdGQgY21kfSIKLSsgICAgZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLSsgICAgaWYgWyAiJEdPSE9TVE9TIiA9ICIkR09PUyIgLWEgIiRHT0hPU1RBUkNIIiA9ICIkR09BUkNIIiAtYSAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwlybSAtcmYgLi9ob3N0LXRvb2xzCi0rCW1rZGlyIC4vaG9zdC10b29scwotKwltdiAiJEdPVE9PTERJUiIvKiAuL2hvc3QtdG9vbHMKLSsJR09UT09MRElSPSIkUFdEL2hvc3QtdG9vbHMiCi0rICAgIGZpCi0rICAgIEdPVE9PTERJUj0iJEdPVE9PTERJUiIgQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiAke0dPX0lOU1RBTEx9Ci0rICAgIGVjaG8KLSAKLS1ybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCi0rICAgIHJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKLStmaQotIAotIGlmIFsgIiQxIiAhPSAiLS1uby1iYW5uZXIiIF07IHRoZW4KLSAJIiRHT1RPT0xESVIiL2Rpc3QgYmFubmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9zeXNsb2cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9zeXNsb2cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YmUwNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvc3lzbG9nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotQWRkIHRpbWVvdXRzIHRvIGxvZ2dlcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLXIgLXUgZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTMtMTEtMjggMTM6Mzg6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28JMjAxNC0xMC0wMyAxMTo0NDozNy43MTA0MDMyMDAgLTA3MDAKLUBAIC0zMyw2ICszMyw5IEBACi0gY29uc3Qgc2V2ZXJpdHlNYXNrID0gMHgwNwotIGNvbnN0IGZhY2lsaXR5TWFzayA9IDB4ZjgKLSAKLSt2YXIgd3JpdGVUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rdmFyIGNvbm5lY3RUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rCi0gY29uc3QgKAotIAkvLyBTZXZlcml0eS4KLSAKLUBAIC0xMDAsNiArMTAzLDcgQEAKLSB0eXBlIHNlcnZlckNvbm4gaW50ZXJmYWNlIHsKLSAJd3JpdGVTdHJpbmcocCBQcmlvcml0eSwgaG9zdG5hbWUsIHRhZywgcywgbmwgc3RyaW5nKSBlcnJvcgotIAljbG9zZSgpIGVycm9yCi0rCXNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yCi0gfQotIAotIHR5cGUgbmV0Q29ubiBzdHJ1Y3QgewotQEAgLTI3Myw3ICsyNzcsMTEgQEAKLSAJCW5sID0gIlxuIgotIAl9Ci0gCi0tCWVyciA6PSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0rCWVyciA6PSB3LmNvbm4uc2V0V3JpdGVEZWFkbGluZSh0aW1lLk5vdygpLkFkZCh3cml0ZVRpbWVvdXQpKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJldHVybiAwLCBlcnIKLSsJfQotKwllcnIgPSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIDAsIGVycgotIAl9Ci1AQCAtMzA1LDYgKzMxMywxMCBAQAotIAlyZXR1cm4gbi5jb25uLkNsb3NlKCkKLSB9Ci0gCi0rZnVuYyAobiAqbmV0Q29ubikgc2V0V3JpdGVEZWFkbGluZSh0IHRpbWUuVGltZSkgZXJyb3IgewotKwlyZXR1cm4gbi5jb25uLlNldFdyaXRlRGVhZGxpbmUodCkKLSt9Ci0rCi0gLy8gTmV3TG9nZ2VyIGNyZWF0ZXMgYSBsb2cuTG9nZ2VyIHdob3NlIG91dHB1dCBpcyB3cml0dGVuIHRvCi0gLy8gdGhlIHN5c3RlbSBsb2cgc2VydmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkuIFRoZSBsb2dGbGFnCi0gLy8gYXJndW1lbnQgaXMgdGhlIGZsYWcgc2V0IHBhc3NlZCB0aHJvdWdoIHRvIGxvZy5OZXcgdG8gY3JlYXRlCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28KLS0tLSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxNC0xMC0wMyAxMTo0NDozOS4wMTA0MDMxNzUgLTA3MDAKLUBAIC0xOSw3ICsxOSw3IEBACi0gCWxvZ1BhdGhzIDo9IFtdc3RyaW5neyIvZGV2L2xvZyIsICIvdmFyL3J1bi9zeXNsb2cifQotIAlmb3IgXywgbmV0d29yayA6PSByYW5nZSBsb2dUeXBlcyB7Ci0gCQlmb3IgXywgcGF0aCA6PSByYW5nZSBsb2dQYXRocyB7Ci0tCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsKG5ldHdvcmssIHBhdGgpCi0rCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsVGltZW91dChuZXR3b3JrLCBwYXRoLCBjb25uZWN0VGltZW91dCkKLSAJCQlpZiBlcnIgIT0gbmlsIHsKLSAJCQkJY29udGludWUKLSAJCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMTIyNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS5pbmMKQEAgLTAsMCArMSwyMyBAQAorcmVxdWlyZSBnby1jb21tb24uaW5jCisKK0dPX0JBU0VWRVJTSU9OID0gIjEuOSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKKworU1JDX1VSSSArPSAiXAorICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLmJhc2gtcXVvdGUtQ0NfRk9SX1RBUkdFVC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAyLWNtZC1nby1maXgtQ0MtYW5kLUNYWC1lbnZpcm9ubWVudC12YXJpYWJsZS1jb25zdHJ1Y3QucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMy1tYWtlLmJhc2gtYmV0dGVyLXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwNC1jbWQtZ28tYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDUtY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwNi1tYWtlLmJhc2gtYWRkLUdPVE9PTERJUl9CT09UU1RSQVAtZW52aXJvbm1lbnQtdmFyaWFiLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDctbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDA4LW1ha2UuYmFzaC1hZGQtR09IT1NUeHgtaW5kaXJlY3Rpb24tZm9yLWNyb3NzLWNhbmFkaWEucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwOS1jbWQtZ28tYnVpbGRtb2RlLXBpZS1mb3JjZXMtZXh0ZXJuYWwtbGlua2luZy1tb2RlLW9uLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMTAtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9zZXQtZXh0ZXJuYWwtbGlua2VyLnBhdGNoIgorCitTUkNfVVJJW21haW4ubWQ1c3VtXSA9ICJkYTJkNDRlYTM4NDA3NmVmZWM0M2VlMWY4YjdkNDVkMiIKK1NSQ19VUklbbWFpbi5zaGEyNTZzdW1dID0gImE0YWIyMjkwMjhlZDE2N2JhMTk4NjgyNTc1MTQ2MzYwNTI2NGU0NDg2ODM2MmNhOGU3YWNjYzhiZTA1N2U5OTMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAxLW1ha2UuYmFzaC1xdW90ZS1DQ19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMS1tYWtlLmJhc2gtcXVvdGUtQ0NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODAwOTc1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMS1tYWtlLmJhc2gtcXVvdGUtQ0NfRk9SX1RBUkdFVC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGQyNDczNGFkNDQwMDY3OTFmZDQ4ZmM0NWVhMzRmZTYwOGZmNjcyZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODowNDoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvN10gbWFrZS5iYXNoOiBxdW90ZSBDQ19GT1JfVEFSR0VUCisKK0ZvciBPRSBjcm9zcy1idWlsZHMsICRDQ19GT1JfVEFSR0VUIGhhcyBtb3JlIHRoYW4KK29uZSB3b3JkIGFuZCBuZWVkcyB0byBiZSBxdW90ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAoraW5kZXggNzFlNzUzMS4uZGNmMzI1NiAxMDA3NTUKKy0tLSBhL3NyYy9tYWtlLmJhc2gKKysrKyBiL3NyYy9tYWtlLmJhc2gKK0BAIC0xNzUsNyArMTc1LDcgQEAgZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKKyAKKyBvbGRfYmluX2ZpbGVzPSQoY2QgJEdPUk9PVC9iaW4gJiYgZWNobyAqKQorIAorLUNDPSRDQ19GT1JfVEFSR0VUICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKKytDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKKyAKKyAjIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG5ldyBmaWxlcyBpbiAkR09ST09UL2JpbiBvdGhlciB0aGFuIGdvIGFuZCBnb2ZtdAorICMgYW5kICRHT09TXyRHT0FSQ0ggKGEgZGlyZWN0b3J5IHVzZWQgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAyLWNtZC1nby1maXgtQ0MtYW5kLUNYWC1lbnZpcm9ubWVudC12YXJpYWJsZS1jb25zdHJ1Y3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAyLWNtZC1nby1maXgtQ0MtYW5kLUNYWC1lbnZpcm9ubWVudC12YXJpYWJsZS1jb25zdHJ1Y3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRlNDIyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDItY21kLWdvLWZpeC1DQy1hbmQtQ1hYLWVudmlyb25tZW50LXZhcmlhYmxlLWNvbnN0cnVjdC5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIGE3MTcwZDMyYTEzYWVhZDYwOGFiZDE4OTk2ZjZkYWIyZTJhNjMxYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODowNjozNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvN10gY21kL2dvOiBmaXggQ0MgYW5kIENYWCBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb25zdHJ1Y3Rpb24KKworRm9yIE9FIGNyb3NzLWJ1aWxkcywgQ0MgYW5kIENYWCBoYXZlIG11bHRpcGxlIHdvcmRzLCBhbmQKK3dlIG5lZWQgdGhlaXIgY29tcGxldGUgZGVmaW5pdGlvbnMgd2hlbiBzZXR0aW5nIHVwIHRoZQorZW52aXJvbm1lbnQgZHVyaW5nIEdvIGJ1aWxkcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgIDQgKystLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworaW5kZXggNDNkNDMzNC4uNTI5ZDIxZCAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitAQCAtNzQsMTAgKzc0LDEwIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgeworIAl9CisgCisgCWNtZCA6PSBiLkdjY0NtZCgiLiIpCistCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IGNtZFswXX0pCisrCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IHN0cmluZ3MuSm9pbihiLkdjY0NtZEZvclJlYWwoKSwgIiAiKX0pCisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkdPR0NDRkxBR1MiLCBWYWx1ZTogc3RyaW5ncy5Kb2luKGNtZFszOl0sICIgIil9KQorIAljbWQgPSBiLkd4eENtZCgiLiIpCistCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNYWCIsIFZhbHVlOiBjbWRbMF19KQorKwllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDWFgiLCBWYWx1ZTogc3RyaW5ncy5Kb2luKGIuR3h4Q21kRm9yUmVhbCgpLCAiICIpfSkKKyAKKyAJaWYgY2ZnLkJ1aWxkQ29udGV4dC5DZ29FbmFibGVkIHsKKyAJCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNHT19FTkFCTEVEIiwgVmFsdWU6ICIxIn0pCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitpbmRleCA3ZDY2N2ZmLi44NWRmMGIzIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK0BAIC0zMTI3LDEyICszMTI3LDI0IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7CisgCXJldHVybiBiLmNjb21waWxlckNtZCgiQ0MiLCBjZmcuRGVmYXVsdENDLCBvYmpkaXIpCisgfQorIAorKy8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKKysvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgorK2Z1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZEZvclJlYWwoKSBbXXN0cmluZyB7CisrCXJldHVybiBlbnZMaXN0KCJDQyIsIGNmZy5EZWZhdWx0Q0MpCisrfQorKworIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKKyAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHeHhDbWQob2JqZGlyIHN0cmluZykgW11zdHJpbmcgeworIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNYWCIsIGNmZy5EZWZhdWx0Q1hYLCBvYmpkaXIpCisgfQorIAorKy8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKKysvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKytmdW5jIChiICpCdWlsZGVyKSBHeHhDbWRGb3JSZWFsKCkgW11zdHJpbmcgeworKwlyZXR1cm4gZW52TGlzdCgiQ1hYIiwgY2ZnLkRlZmF1bHRDWFgpCisrfQorKworIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKG9iamRpciBzdHJpbmcpIFtdc3RyaW5nIHsKKyAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJGQyIsICJnZm9ydHJhbiIsIG9iamRpcikKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMy1tYWtlLmJhc2gtYmV0dGVyLXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAzLW1ha2UuYmFzaC1iZXR0ZXItc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmQ5ZjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMy1tYWtlLmJhc2gtYmV0dGVyLXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSw5MiBAQAorRnJvbSAzMWU4OGYwNmFmN2FiNzg3ZDhmZTBjMWNhNjI1MTkzZTE3OTllMTY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMDg6MTI6MDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzddIG1ha2UuYmFzaDogYmV0dGVyIHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKKworRm9yZSBPRSBjcm9zcy1idWlsZHMsIHRoZSBzaW1wbGUgY2hlY2tzIGluIG1ha2UuYmFzaCBhcmUKK2luc3VmZmljaWVudCBmb3IgZGlzdGluZ3Vpc2hpbmcgaG9zdCBhbmQgdGFyZ2V0IGJ1aWxkCitlbnZpcm9ubWVudHMsIHNvIGFkZCBzb21lIG9wdGlvbnMgZm9yIHRlbGxpbmcgdGhlCitzY3JpcHQgd2hpY2ggcGFydHMgYXJlIGJlaW5nIGJ1aWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvbWFrZS5iYXNoIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2UuYmFzaCBiL3NyYy9tYWtlLmJhc2gKK2luZGV4IGRjZjMyNTYuLjk1NTM2MjMgMTAwNzU1CistLS0gYS9zcmMvbWFrZS5iYXNoCisrKysgYi9zcmMvbWFrZS5iYXNoCitAQCAtMTU2LDEzICsxNTYsMjIgQEAgaWYgWyAiJDEiID0gIi0tbm8tY2xlYW4iIF07IHRoZW4KKyAJYnVpbGRhbGw9IiIKKyAJc2hpZnQKKyBmaQorLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICRHT19ESVNURkxBR1MgLXYgIyBidWlsZHMgZ29fYm9vdHN0cmFwCisrZG9faG9zdF9idWlsZD0ieWVzIgorK2RvX3RhcmdldF9idWlsZD0ieWVzIgorK2lmIFsgIiQxIiA9ICItLXRhcmdldC1vbmx5IiBdOyB0aGVuCisrCWRvX2hvc3RfYnVpbGQ9Im5vIgorKwlzaGlmdAorK2VsaWYgWyAiJDEiID0gIi0taG9zdC1vbmx5IiBdOyB0aGVuCisrCWRvX3RhcmdldF9idWlsZD0ibm8iCisrCXNoaWZ0CisrZmkKKyAKKy0jIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgorLW12IGNtZC9kaXN0L2Rpc3QgIiRHT1RPT0xESVIiL2Rpc3QKKy1lY2hvCisraWYgWyAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgorKwkuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAorKwkjIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgorKwltdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0CisrCWVjaG8KKyAKKy1pZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09IT1NUT1MiICE9ICIkR09PUyIgXTsgdGhlbgorIAllY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICRHT0hPU1RPUy8kR09IT1NUQVJDSC4iCisgCSMgQ0NfRk9SX1RBUkdFVCBpcyByZWNvcmRlZCBhcyB0aGUgZGVmYXVsdCBjb21waWxlciBmb3IgdGhlIGdvIHRvb2wuIFdoZW4gYnVpbGRpbmcgZm9yIHRoZSBob3N0LCBob3dldmVyLAorIAkjIHVzZSB0aGUgaG9zdCBjb21waWxlciwgQ0MsIGZyb20gYGNtZC9kaXN0L2Rpc3QgZW52YCBpbnN0ZWFkLgorQEAgLTE3MSwyNCArMTgwLDIwIEBAIGlmIFsgIiRHT0hPU1RBUkNIIiAhPSAiJEdPQVJDSCIgLW8gIiRHT0hPU1RPUyIgIT0gIiRHT09TIiBdOyB0aGVuCisgCWVjaG8KKyBmaQorIAorLWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCistCistb2xkX2Jpbl9maWxlcz0kKGNkICRHT1JPT1QvYmluICYmIGVjaG8gKikKKy0KKy1DQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKKy0KKy0jIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG5ldyBmaWxlcyBpbiAkR09ST09UL2JpbiBvdGhlciB0aGFuIGdvIGFuZCBnb2ZtdAorLSMgYW5kICRHT09TXyRHT0FSQ0ggKGEgZGlyZWN0b3J5IHVzZWQgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorLShjZCAkR09ST09UL2JpbiAmJiBmb3IgZiBpbiAqOyBkbworLQlpZiAhIGV4cHIgIiAkb2xkX2Jpbl9maWxlcyBnbyBnb2ZtdCAke0dPT1N9XyR7R09BUkNIfSAiIDogIi4qICRmICIgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorLQkJZWNobyAxPiYyICJFUlJPUjogdW5leHBlY3RlZCBuZXcgZmlsZSBpbiAkR09ST09UL2JpbjogJGYiCistCQlleGl0IDEKKy0JZmkKKy1kb25lKQorLQorLWVjaG8KKy0KKy1ybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCisraWYgWyAiJGRvX3RhcmdldF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCisrICAgIEdPX0lOU1RBTEw9IiR7R09fVEFSR0VUX0lOU1RBTEw6LXN0ZCBjbWR9IgorKyAgICBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgorKyAgICBpZiBbICIkR09IT1NUT1MiID0gIiRHT09TIiAtYSAiJEdPSE9TVEFSQ0giID0gIiRHT0FSQ0giIC1hICIkZG9faG9zdF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCisrCXJtIC1yZiAuL2hvc3QtdG9vbHMKKysJbWtkaXIgLi9ob3N0LXRvb2xzCisrCW12ICIkR09UT09MRElSIi8qIC4vaG9zdC10b29scworKwlHT1RPT0xESVI9IiRQV0QvaG9zdC10b29scyIKKysgICAgZmkKKysgICAgR09UT09MRElSPSIkR09UT09MRElSIiBDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12ICR7R09fSU5TVEFMTH0KKysgICAgZWNobworKworKyAgICBybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCisrZmkKKyAKKyBpZiBbICIkMSIgIT0gIi0tbm8tYmFubmVyIiBdOyB0aGVuCisgCSIkR09UT09MRElSIi9kaXN0IGJhbm5lcgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA0LWNtZC1nby1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA0LWNtZC1nby1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgwYjA2YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDQtY21kLWdvLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpci5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIDEzNjkxNzhiNDk3YjEyMDg4ZWM0YzI3OTQ2MDZjYzlmMTRjYzMyN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODoxNTowMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvN10gY21kL2dvOiBhbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUKKyBlbnZpcm9ubWVudAorCitGb3IgT0UgY3Jvc3MtYnVpbGRzLCBob3N0LXNpZGUgdG9vbHMgcmVzaWRlIGluIHRoZSBuYXRpdmUKK0dPUk9PVCwgbm90IHRoZSB0YXJnZXQgR09ST09ULiAgQWxsb3cgR09UT09MRElSIHRvIGJlIHNldAoraW4gdGhlIGVudmlyb25tZW50IHRvIGFsbG93IHRoYXQgc3BsaXQsIHJhdGhlciB0aGFuIGFsd2F5cworY29tcHV0aW5nIEdPVE9PTERJUiByZWxhdGl2ZSB0byB0aGUgR09ST09UIHNldHRpbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyAgICB8IDcgKysrKysrLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyB8IDIgKy0KKyBzcmMvZ28vYnVpbGQvYnVpbGQuZ28gICAgICAgICAgICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK2luZGV4IGIzYWQxY2UuLmMxZGM5NzQgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbworQEAgLTkxLDcgKzkxLDEyIEBAIGZ1bmMgaW5pdCgpIHsKKyAJLy8gYXMgdGhlIHRvb2wgZGlyZWN0b3J5IGRvZXMgbm90IG1vdmUgYmFzZWQgb24gZW52aXJvbm1lbnQgdmFyaWFibGVzLgorIAkvLyBUaGlzIG1hdGNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFRvb2xEaXIgaW4gZ28vYnVpbGQsCisgCS8vIGV4Y2VwdCBmb3IgdXNpbmcgR09ST09UIHJhdGhlciB0aGFuIHJ1bnRpbWUuR09ST09UKCkuCistCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJcyA6PSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpCisrCWlmIHMgPT0gIiIgeworKwkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorKwl9IGVsc2UgeworKwkJYnVpbGQuVG9vbERpciA9IHMKKysJfQorIH0KKyAKKyBmdW5jIGZpbmRHT1JPT1QoKSBzdHJpbmcgeworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworaW5kZXggODVkZjBiMy4uN2I5YTY5ZSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitAQCAtMTMzNyw3ICsxMzM3LDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyIGVycm9yKSB7CisgCQl9CisgCisgCQl2YXIgY2dvRXhlIHN0cmluZworLQkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLlRhcmdldCAhPSAiIiB7CisrCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28uVGFyZ2V0ICE9ICIiICYmIG9zLkdldGVudigiR09UT09MRElSIikgPT0gIiIgeworIAkJCWNnb0V4ZSA9IGEuY2dvLlRhcmdldAorIAkJfSBlbHNlIHsKKyAJCQljZ29FeGUgPSBiYXNlLlRvb2woImNnbyIpCitkaWZmIC0tZ2l0IGEvc3JjL2dvL2J1aWxkL2J1aWxkLmdvIGIvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCitpbmRleCBmZDg5ODcxLi5lMTYxNDViIDEwMDY0NAorLS0tIGEvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCisrKysgYi9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KK0BAIC0xNTg4LDcgKzE1ODgsNyBAQCBmdW5jIGluaXQoKSB7CisgfQorIAorIC8vIFRvb2xEaXIgaXMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGJ1aWxkIHRvb2xzLgorLXZhciBUb29sRGlyID0gZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorK3ZhciBUb29sRGlyID0gZW52T3IoIkdPVE9PTERJUiIsIGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkpCisgCisgLy8gSXNMb2NhbEltcG9ydCByZXBvcnRzIHdoZXRoZXIgdGhlIGltcG9ydCBwYXRoIGlzCisgLy8gYSBsb2NhbCBpbXBvcnQgcGF0aCwgbGlrZSAiLiIsICIuLiIsICIuL2ZvbyIsIG9yICIuLi9mb28iLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA1LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNS1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTkzYmNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNS1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDQ0Zjk2MTk3NWRhYzZjZjQ2NGE3N2I1ZjZkZDBjNDdjYzE5MmM0ZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODoxOTo1MiAtMDcwMAorU3ViamVjdDogW1BBVENIIDUvN10gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0CisKK0ZvciBPRSBidWlsZHMsIHdlIG5ldmVyIHdhbnQgcGFja2FnZXMgdGhhdCBoYXZlCithbHJlYWR5IGJlZW4gaW5zdGFsbGVkIGludG8gdGhlIGJ1aWxkIHJvb3QgdG8gYmUKK21vZGlmaWVkLCBzbyBwcmV2ZW50IHRoZSBnbyBidWlsZCB0b29sIGZyb20gY2hlY2tpbmcKK2lmIHRoZXkgc2hvdWxkIGJlIHJlYnVpbHQuCisKK0Fsc28gYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJyaWRlIHRoaXMKK2JlaGF2aW9yLCBqdXN0IGZvciBidWlsZGluZyB0aGUgR28gcnVudGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvbG9hZC9wa2cuZ28KK2luZGV4IDYwZGU2NjYuLjI2NjBkM2YgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvCitAQCAtMTUzMCw2ICsxNTMwLDEzIEBAIGZ1bmMgaXNTdGFsZShwICpQYWNrYWdlKSAoYm9vbCwgc3RyaW5nKSB7CisgCQlyZXR1cm4gdHJ1ZSwgImJ1aWxkIElEIG1pc21hdGNoIgorIAl9CisgCisrCS8vIEZvciBPRSBidWlsZHMsIG1ha2UgYW55dGhpbmcgaW4gR09ST09UIG5vbi1zdGFsZSwKKysJLy8gdG8gcHJldmVudCBhIHBhY2thZ2UgYnVpbGQgZnJvbSBvdmVyd3JpdGluZyB0aGUKKysJLy8gYnVpbGQgcm9vdC4KKysJaWYgcC5Hb3Jvb3QgJiYgb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKSAhPSAiMSIgeworKwkJcmV0dXJuIGZhbHNlLCAiR09ST09ULXJlc2lkZW50IHBhY2thZ2VzIGRvIG5vdCBnZXQgcmVidWlsdCIKKysJfQorKworIAkvLyBQYWNrYWdlIGlzIHN0YWxlIGlmIGEgZGVwZW5kZW5jeSBpcy4KKyAJZm9yIF8sIHAxIDo9IHJhbmdlIHAuSW50ZXJuYWwuRGVwcyB7CisgCQlpZiBwMS5TdGFsZSB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDYtbWFrZS5iYXNoLWFkZC1HT1RPT0xESVJfQk9PVFNUUkFQLWVudmlyb25tZW50LXZhcmlhYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDYtbWFrZS5iYXNoLWFkZC1HT1RPT0xESVJfQk9PVFNUUkFQLWVudmlyb25tZW50LXZhcmlhYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGY1NjQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNi1tYWtlLmJhc2gtYWRkLUdPVE9PTERJUl9CT09UU1RSQVAtZW52aXJvbm1lbnQtdmFyaWFiLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gYWFlNzRkMTA0NWNhMDMzMDZiYTQxNTkyMDZlZTNiYWM3MmJjZGZiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDA4OjIzOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNi83XSBtYWtlLmJhc2g6IGFkZCBHT1RPT0xESVJfQk9PVFNUUkFQIGVudmlyb25tZW50IHZhcmlhYmxlCisKK0ZvciBjcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIG5lZWQgdG8gdXNlIHRoZSBuYXRpdmUKK0dPVE9PTERJUiBkdXJpbmcgdGhlIGJvb3RzdHJhcCBwaGFzZSwgc28gcHJvdmlkZSBhIHdheQordG8gcGFzcyB0aGF0IHNldHRpbmcgaW50byB0aGUgYnVpbGQgc2NyaXB0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCitpbmRleCA5NTUzNjIzLi4yZTZmYjA1IDEwMDc1NQorLS0tIGEvc3JjL21ha2UuYmFzaAorKysrIGIvc3JjL21ha2UuYmFzaAorQEAgLTE3MiwxMCArMTcyLDExIEBAIGlmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KKyAJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAorIAllY2hvCisgCisrCUdPVE9PTERJUl9CT09UU1RSQVA9IiR7R09UT09MRElSX0JPT1RTVFJBUDotJEdPVE9PTERJUn0iCisgCWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJEdPSE9TVE9TLyRHT0hPU1RBUkNILiIKKyAJIyBDQ19GT1JfVEFSR0VUIGlzIHJlY29yZGVkIGFzIHRoZSBkZWZhdWx0IGNvbXBpbGVyIGZvciB0aGUgZ28gdG9vbC4gV2hlbiBidWlsZGluZyBmb3IgdGhlIGhvc3QsIGhvd2V2ZXIsCisgCSMgdXNlIHRoZSBob3N0IGNvbXBpbGVyLCBDQywgZnJvbSBgY21kL2Rpc3QvZGlzdCBlbnZgIGluc3RlYWQuCistCUNDPSRDQyBHT09TPSRHT0hPU1RPUyBHT0FSQ0g9JEdPSE9TVEFSQ0ggXAorKwlDQz0kQ0MgR09PUz0kR09IT1NUT1MgR09BUkNIPSRHT0hPU1RBUkNIIEdPVE9PTERJUj0iJEdPVE9PTERJUl9CT09UU1RSQVAiIFwKKyAJCSIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgc3RkIGNtZAorIAllY2hvCisgZmkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNy1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNy1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NTk3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA3LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBlOTU3YzM0NThkNTNlMzdiZjQxNmY1MWQyZjhiZjU0YzE5NWU1MGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMDg6Mjc6MDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA3LzddIGxkOiBhZGQgc29uYW1lIHRvIHNoYXJlYWJsZSBvYmplY3RzCisKK1NoYXJlZCBsaWJyYXJ5IGhhbmRsaW5nIGluIE9FIGRlcGVuZHMgb24gdGhlIGluY2x1c2lvbgorb2YgYW4gc29uYW1lIGhlYWRlciwgc28gdXBkYXRlIHRoZSBnbyBsaW5rZXIgdG8gYWRkIHRoYXQKK2hlYWRlciBmb3IgYm90aCBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgbGlua2luZy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworaW5kZXggMDIzNDEwNS4uMGI5ZTJkMCAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK0BAIC0xMTI0LDEyICsxMTI0LDE0IEBAIGZ1bmMgKGwgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCS8vIFBhc3MgLXogbm9kZWxldGUgdG8gbWFyayB0aGUgc2hhcmVkIGxpYnJhcnkgYXMKKyAJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiLCAiLVdsLC16LG5vZGVsZXRlIikKKysJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCisgCQl9CisgCWNhc2UgQnVpbGRtb2RlU2hhcmVkOgorIAkJaWYgVXNlUmVscm8oKSB7CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCX0KKyAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAljYXNlIEJ1aWxkbW9kZVBsdWdpbjoKKyAJCWlmIEhlYWR0eXBlID09IG9iamFiaS5IZGFyd2luIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCitAQCAtMTEzOCw2ICsxMTQwLDcgQEAgZnVuYyAobCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCX0KKyAJfQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA4LW1ha2UuYmFzaC1hZGQtR09IT1NUeHgtaW5kaXJlY3Rpb24tZm9yLWNyb3NzLWNhbmFkaWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA4LW1ha2UuYmFzaC1hZGQtR09IT1NUeHgtaW5kaXJlY3Rpb24tZm9yLWNyb3NzLWNhbmFkaWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3N2M3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDgtbWFrZS5iYXNoLWFkZC1HT0hPU1R4eC1pbmRpcmVjdGlvbi1mb3ItY3Jvc3MtY2FuYWRpYS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDAzZTZjMzM5ZDRmYjcxMmZiYjhjNGNhNmVmMmZjNzEwMGRjZGIzZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAwNTozODoxMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDgvOF0gbWFrZS5iYXNoOiBhZGQgR09IT1NUeHggaW5kaXJlY3Rpb24gZm9yIGNyb3NzLWNhbmFkaWFuCisgYnVpbGRzCisKK0FkZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHNwZWNpZnlpbmcgdGhlIGhvc3QgT1MvYXJjaAordGhhdCB3ZSBhcmUgYnVpbGRpbmcgdGhlIGNvbXBpbGVyIGZvciwgc28gaXQgY2FuIGRpZmZlciBmcm9tCit0aGUgYnVpbGQgaG9zdCBPUy9hcmNoLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2UuYmFzaCBiL3NyYy9tYWtlLmJhc2gKK2luZGV4IDJlNmZiMDUuLjBiZGFkYzYgMTAwNzU1CistLS0gYS9zcmMvbWFrZS5iYXNoCisrKysgYi9zcmMvbWFrZS5iYXNoCitAQCAtMTczLDYgKzE3Myw4IEBAIGlmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KKyAJZWNobworIAorIAlHT1RPT0xESVJfQk9PVFNUUkFQPSIke0dPVE9PTERJUl9CT09UU1RSQVA6LSRHT1RPT0xESVJ9IgorKwlHT0hPU1RPUz0iJHtHT0hPU1RPU19DUk9TUzotJEdPSE9TVE9TfSIKKysJR09IT1NUQVJDSD0iJHtHT0hPU1RBUkNIX0NST1NTOi0kR09IT1NUQVJDSH0iCisgCWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJEdPSE9TVE9TLyRHT0hPU1RBUkNILiIKKyAJIyBDQ19GT1JfVEFSR0VUIGlzIHJlY29yZGVkIGFzIHRoZSBkZWZhdWx0IGNvbXBpbGVyIGZvciB0aGUgZ28gdG9vbC4gV2hlbiBidWlsZGluZyBmb3IgdGhlIGhvc3QsIGhvd2V2ZXIsCisgCSMgdXNlIHRoZSBob3N0IGNvbXBpbGVyLCBDQywgZnJvbSBgY21kL2Rpc3QvZGlzdCBlbnZgIGluc3RlYWQuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDktY21kLWdvLWJ1aWxkbW9kZS1waWUtZm9yY2VzLWV4dGVybmFsLWxpbmtpbmctbW9kZS1vbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDktY21kLWdvLWJ1aWxkbW9kZS1waWUtZm9yY2VzLWV4dGVybmFsLWxpbmtpbmctbW9kZS1vbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTVmY2ZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwOS1jbWQtZ28tYnVpbGRtb2RlLXBpZS1mb3JjZXMtZXh0ZXJuYWwtbGlua2luZy1tb2RlLW9uLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gYWFlNDQ1MjdjODA2NWQ1NGY2YWNhZjg3YzgyY2JhMWFjOTZmYWU1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IElhbiBMYW5jZSBUYXlsb3IgPGlhbnRAZ29sYW5nLm9yZz4KK0RhdGU6IEZyaSwgMTggQXVnIDIwMTcgMTc6NDY6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY21kL2dvOiAtYnVpbGRtb2RlPXBpZSBmb3JjZXMgZXh0ZXJuYWwgbGlua2luZyBtb2RlIG9uIGFsbAorIHN5c3RlbXMKKworVGhlIGdvIHRvb2wgYXNzdW1lZCB0aGF0IC1idWlsZG1vZGU9cGllIGltcGxpZWQgaW50ZXJuYWwgbGlua2luZyBvbgorbGludXgtYW1kNjQuIEhvd2V2ZXIsIHRoYXQgd2FzIGNoYW5nZWQgYnkgQ0wgMzY0MTcgZm9yIGlzc3VlICMxODk2OC4KKworRml4ZXMgIzIxNDUyCisKK0NoYW5nZS1JZDogSThlZDEzYWVhNTI5NTljYzVjNTMyMjNmNGM0MWJhMzUzMjk0NDU1NDUKK1Jldmlld2VkLW9uOiBodHRwczovL2dvLXJldmlldy5nb29nbGVzb3VyY2UuY29tLzU3MjMxCitSdW4tVHJ5Qm90OiBJYW4gTGFuY2UgVGF5bG9yIDxpYW50QGdvbGFuZy5vcmc+CitUcnlCb3QtUmVzdWx0OiBHb2JvdCBHb2JvdCA8Z29ib3RAZ29sYW5nLm9yZz4KK1Jldmlld2VkLWJ5OiBBdmVsaW5vIDx0QGF2ZWxpbm8ueHh4PgorUmV2aWV3ZWQtYnk6IFJvYiBQaWtlIDxyQGdvbGFuZy5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBzcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvIHwgNyArKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvbG9hZC9wa2cuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvCitpbmRleCAyNjYwZDNmLi5kNDA3NzNiIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbworQEAgLTk1NCwxMSArOTU0LDEyIEBAIGZ1bmMgKHAgKlBhY2thZ2UpIGxvYWQoc3RrICpJbXBvcnRTdGFjaywgYnAgKmJ1aWxkLlBhY2thZ2UsIGVyciBlcnJvcikgKlBhY2thZ2UKKyAKKyAJaWYgY2ZnLkJ1aWxkQ29udGV4dC5DZ29FbmFibGVkICYmIHAuTmFtZSA9PSAibWFpbiIgJiYgIXAuR29yb290IHsKKyAJCS8vIEN1cnJlbnRseSBidWlsZCBtb2RlcyBjLXNoYXJlZCwgcGllIChvbiBzeXN0ZW1zIHRoYXQgZG8gbm90CistCQkvLyBzdXBwb3J0IFBJRSB3aXRoIGludGVybmFsIGxpbmtpbmcgbW9kZSksIHBsdWdpbiwgYW5kCistCQkvLyAtbGlua3NoYXJlZCBmb3JjZSBleHRlcm5hbCBsaW5raW5nIG1vZGUsIGFzIG9mIGNvdXJzZSBkb2VzCisrCQkvLyBzdXBwb3J0IFBJRSB3aXRoIGludGVybmFsIGxpbmtpbmcgbW9kZSAoY3VycmVudGx5IGFsbAorKwkJLy8gc3lzdGVtczogaXNzdWUgIzE4OTY4KSksIHBsdWdpbiwgYW5kIC1saW5rc2hhcmVkIGZvcmNlCisrCQkvLyBleHRlcm5hbCBsaW5raW5nIG1vZGUsIGFzIG9mIGNvdXJzZSBkb2VzCisgCQkvLyAtbGRmbGFncz0tbGlua21vZGU9ZXh0ZXJuYWwuIEV4dGVybmFsIGxpbmtpbmcgbW9kZSBmb3JjZXMKKyAJCS8vIGFuIGltcG9ydCBvZiBydW50aW1lL2Nnby4KKy0JCXBpZUNnbyA6PSBjZmcuQnVpbGRCdWlsZG1vZGUgPT0gInBpZSIgJiYgKGNmZy5CdWlsZENvbnRleHQuR09PUyAhPSAibGludXgiIHx8IGNmZy5CdWlsZENvbnRleHQuR09BUkNIICE9ICJhbWQ2NCIpCisrCQlwaWVDZ28gOj0gY2ZnLkJ1aWxkQnVpbGRtb2RlID09ICJwaWUiCisgCQlsaW5rbW9kZUV4dGVybmFsIDo9IGZhbHNlCisgCQlmb3IgaSwgYSA6PSByYW5nZSBjZmcuQnVpbGRMZGZsYWdzIHsKKyAJCQlpZiBhID09ICItbGlua21vZGU9ZXh0ZXJuYWwiIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMTAtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMTAtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2ZkNzhjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAxMC1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gMjFkODNkZDk0OTllNWJlMzBlZWEyOGRkNzAzNGQxZWEyYTAxYzgzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBUdWUsIDE0IE5vdiAyMDE3IDA3OjM4OjQyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTBdIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZAorIGdvX2Jvb3RzdHJhcAorCitGb3IgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCBkaXN0IGFuZCBnb19ib290c3RyYXAKK3J1biBvbiB0aGUgYnVpbGQgaG9zdCwgc28gQ0MgbmVlZHMgdG8gcG9pbnQgdG8gdGhlCitidWlsZCBob3N0J3MgQyBjb21waWxlci4gIEFkZCBhIEJVSUxEX0NDIGVudmlyb25tZW50Citmb3IgdGhpcywgZmFsbGluZyBiYWNrIHRvICRDQyBpZiBub3QgcHJlc2VudC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCitpbmRleCAwYmRhZGM2Li5mMTk5MzQ5IDEwMDc1NQorLS0tIGEvc3JjL21ha2UuYmFzaAorKysrIGIvc3JjL21ha2UuYmFzaAorQEAgLTEzMSw3ICsxMzEsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgorIAlleGl0IDEKKyBmaQorIHJtIC1mIGNtZC9kaXN0L2Rpc3QKKy1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKKytDQz0ke0JVSUxEX0NDOi0ke0NDfX0gR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisgCisgIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgorIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQorQEAgLTE2Nyw3ICsxNjcsNyBAQCBlbGlmIFsgIiQxIiA9ICItLWhvc3Qtb25seSIgXTsgdGhlbgorIGZpCisgCisgaWYgWyAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgorLQkuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAorKwlDQz0ke0JVSUxEX0NDOi0ke0NDfX0gLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKKyAJIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KKyAJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAorIAllY2hvCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45L3NldC1leHRlcm5hbC1saW5rZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS9zZXQtZXh0ZXJuYWwtbGlua2VyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YmQ3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS9zZXQtZXh0ZXJuYWwtbGlua2VyLnBhdGNoCkBAIC0wLDAgKzEsMTExIEBACitDaGFuZ2UgdGhlIGR5bmFtaWMgbGlua2VyIGhhcmRjb2RpbmcgdG8gdXNlIG11c2wgd2hlbiBub3QgdXNpbmcgZ2xpYmMKK3RoaXMgc2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWwgdG8gbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgRml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworQEAgLTY3LDcgKzY3LDcgQEAgZnVuYyBJbml0KCkgeworIAlsZC5UaGVhcmNoLkFwcGVuZDY0ID0gbGQuQXBwZW5kNjRsCisgCWxkLlRoZWFyY2guVExTSUV0b0xFID0gdGxzSUV0b0xFCisgCistCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wteDg2XzY0LnNvLjEiCisgCWxkLlRoZWFyY2guRnJlZWJzZGR5bmxkID0gIi9saWJleGVjL2xkLWVsZi5zby4xIgorIAlsZC5UaGVhcmNoLk9wZW5ic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQuc28iCisgCWxkLlRoZWFyY2guTmV0YnNkZHlubGQgPSAiL2xpYmV4ZWMvbGQuZWxmX3NvIgorSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCitAQCAtNjMsNyArNjMsNyBAQCBmdW5jIEluaXQoKSB7CisgCWxkLlRoZWFyY2guQXBwZW5kMzIgPSBsZC5BcHBlbmQzMmwKKyAJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0bAorIAorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1saW51eC5zby4zIiAvLyAyIGZvciBPQUJJLCAzIGZvciBFQUJJCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIKKyAJbGQuVGhlYXJjaC5GcmVlYnNkZHlubGQgPSAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIgorIAlsZC5UaGVhcmNoLk9wZW5ic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQuc28iCisgCWxkLlRoZWFyY2guTmV0YnNkZHlubGQgPSAiL2xpYmV4ZWMvbGQuZWxmX3NvIgorSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KKysrKyBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCitAQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSB7CisgCWxkLlRoZWFyY2guQXBwZW5kMzIgPSBsZC5BcHBlbmQzMmwKKyAJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0bAorIAorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIgorIAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIlhYWCIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworQEAgLTc3LDcgKzc3LDcgQEAgZnVuYyBJbml0KCkgeworIAkJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0YgorIAl9CisgCistCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiCisgCisgCWxkLlRoZWFyY2guRnJlZWJzZGR5bmxkID0gIlhYWCIKKyAJbGQuVGhlYXJjaC5PcGVuYnNkZHlubGQgPSAiWFhYIgorSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCitAQCAtNzUsNyArNzUsNyBAQCBmdW5jIEluaXQoKSB7CisgCQlsZC5UaGVhcmNoLkFwcGVuZDY0ID0gbGQuQXBwZW5kNjRiCisgCX0KKyAKKy0JbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWI2NC9sZDY0LnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIgorIAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIlhYWCIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworQEAgLTc3LDcgKzc3LDcgQEAgZnVuYyBJbml0KCkgeworIAl9CisgCisgCS8vIFRPRE8oYXVzdGluKTogQUJJIHYxIHVzZXMgL3Vzci9saWIvbGQuc28uMQorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYjY0L2xkNjQuc28uMSIKKysJbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWIvbGQtbXVzbC1wb3dlcnBjNjRsZS5zby4xIgorIAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIlhYWCIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgeworIAlsZC5UaGVhcmNoLkFwcGVuZDMyID0gbGQuQXBwZW5kMzJiCisgCWxkLlRoZWFyY2guQXBwZW5kNjQgPSBsZC5BcHBlbmQ2NGIKKyAKKy0JbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWI2NC9sZDY0LnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtczM5MHguc28uMSIKKyAKKyAJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCitJbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KK0BAIC02Myw3ICs2Myw3IEBAIGZ1bmMgSW5pdCgpIHsKKyAJbGQuVGhlYXJjaC5BcHBlbmQzMiA9IGxkLkFwcGVuZDMybAorIAlsZC5UaGVhcmNoLkFwcGVuZDY0ID0gbGQuQXBwZW5kNjRsCisgCistCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLWxpbnV4LnNvLjIiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIi91c3IvbGliZXhlYy9sZC5zbyIKKyAJbGQuVGhlYXJjaC5OZXRic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ib290c3RyYXAtbmF0aXZlXzEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tYm9vdHN0cmFwLW5hdGl2ZV8xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNDE0MWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ib290c3RyYXAtbmF0aXZlXzEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQk9PVFNUUkFQID0gIjEuNCIKLXJlcXVpcmUgZ28tbmF0aXZlLmluYwotcmVxdWlyZSBnby0ke1BWfS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYwppbmRleCBmNzRiOGI3Li45YWY2ODczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCkBAIC0xNCw5ICsxNCwxMyBAQAogCiBpbmhlcml0IGdvYXJjaAogCi1TUkNfVVJJID0gImh0dHA6Ly9nb2xhbmcub3JnL2RsL2dvJHtQVn0uc3JjLnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cDovL2dvbGFuZy5vcmcvZGwvZ28ke1BWfS5zcmMudGFyLmd6O25hbWU9bWFpbiIKIFMgPSAiJHtXT1JLRElSfS9nbyIKIEIgPSAiJHtTfSIKIAogSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCiBTU1RBVEVfU0NBTl9DTUQgPSAidHJ1ZSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCUJVSUxEX0NDPSR7QlVJTERfQ0N9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZmRhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtMCwwICsxLDYyIEBACitpbmhlcml0IGNyb3NzLWNhbmFkaWFuCisKK0RFUEVORFMgPSAiZ28tbmF0aXZlIHZpcnR1YWwvJHtIT1NUX1BSRUZJWH1nby1jcm9zc3NkayB2aXJ0dWFsL25hdGl2ZXNkay0ke0hPU1RfUFJFRklYfWdvLXJ1bnRpbWUgXAorICAgICAgICAgICB2aXJ0dWFsLyR7SE9TVF9QUkVGSVh9Z2NjLWNyb3Nzc2RrIHZpcnR1YWwvbmF0aXZlc2RrLSR7SE9TVF9QUkVGSVh9bGliYy1mb3ItZ2NjIFwKKyAgICAgICAgICAgdmlydHVhbC9uYXRpdmVzZGstJHtIT1NUX1BSRUZJWH1jb21waWxlcmxpYnMiCitQTiA9ICJnby1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9IgorCitleHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKK2V4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKK2V4cG9ydCBHT0hPU1RPU19DUk9TUyA9ICIke0hPU1RfR09PU30iCitleHBvcnQgR09IT1NUQVJDSF9DUk9TUyA9ICIke0hPU1RfR09BUkNIfSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKK2V4cG9ydCBHT1RPT0xESVJfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke0hPU1RfU1lTfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgorZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCitleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7VEFSR0VUX1BSRUZJWH1nY2MiCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWcrKyIKK0NDID0gIiR7SE9TVF9QUkVGSVh9Z2NjIgorZXhwb3J0IENHT19DRkxBR1MgPSAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke0hPU1RfQ0NfQVJDSH0gJHtDRkxBR1N9IgorZXhwb3J0IENHT19MREZMQUdTID0gIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtIT1NUX0NDX0FSQ0h9ICR7TERGTEFHU30iCitleHBvcnQgR09fTERGTEFHUyA9ICctbGlua21vZGUgZXh0ZXJuYWwgLWV4dGxkICR7SE9TVF9QUkVGSVh9Z2NjIC1leHRsZGZsYWdzICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9ICR7SE9TVF9DQ19BUkNIfSAke0xERkxBR1N9IicKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZworCW1rZGlyICR7R09CSU59CisJY2Qgc3JjCisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKKwljZCAke0J9Cit9CisKKworbWFrZV93cmFwcGVyKCkgeworICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKKyAgICBjYXQgPDxFTkQgPiR7RH0ke2JpbmRpcn0vJDIKKyMhL2Jpbi9zaAoraGVyZT1cYGRpcm5hbWUgXCQwXGAKK25hdGl2ZV9nb3Jvb3Q9XGByZWFkbGluayAtZiBcJGhlcmUvLi4vLi4vbGliLyR7VEFSR0VUX1NZU30vZ29cYAorZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKK2V4cG9ydCBHT09TPSIke1RBUkdFVF9HT09TfSIKK3Rlc3QgLW4gIlwkR09BUk0iIHx8IGV4cG9ydCBHT0FSTT0iJHtUQVJHRVRfR09BUk19IgordGVzdCAtbiAiXCRHTzM4NiIgfHwgZXhwb3J0IEdPMzg2PSIke1RBUkdFVF9HTzM4Nn0iCitleHBvcnQgR09UT09MRElSPSJcJG5hdGl2ZV9nb3Jvb3QvcGtnL3Rvb2wvJHtIT1NUX0dPVFVQTEV9IgordGVzdCAtbiAiXCRHT1JPT1QiIHx8IGV4cG9ydCBHT1JPT1Q9IlwkT0VDT1JFX1RBUkdFVF9TWVNST09ULyR7dGFyZ2V0X2xpYmRpcn0vZ28iCitcJGhlcmUvLi4vLi4vbGliLyR7VEFSR0VUX1NZU30vZ28vYmluLyQxICJcJEAiCitFTkQKKyAgICBjaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sCisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cvdG9vbC8ke0hPU1RfR09UVVBMRX0gJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbC8KKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfS9nby9iaW4KKwlmb3IgZiBpbiAke0J9LyR7R09fQlVJTERfQklORElSfS8qCisJZG8KKwkJYmFzZT1gYmFzZW5hbWUgJGZgCisJCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nby9iaW4KKwkJbWFrZV93cmFwcGVyICRiYXNlICR7VEFSR0VUX1BSRUZJWH0kYmFzZQorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FjOTQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS45LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby1jcm9zcy1jYW5hZGlhbi5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCmluZGV4IDkzMjA2YTUuLjNhYzcyMTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCkBAIC0xLDE4ICsxLDYyIEBACiBpbmhlcml0IGNyb3NzCiAKLURFUEVORFMgKz0gImdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKK1BST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIgorREVQRU5EUyArPSAiZ28tbmF0aXZlIgogCiBQTiA9ICJnby1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKIAotIyBJZ25vcmUgaG93IFRBUkdFVF9BUkNIIGlzIGNvbXB1dGVkLgotVEFSR0VUX0FSQ0hbdmFyZGVwdmFsdWVdID0gIiR7VEFSR0VUX0FSQ0h9IgorZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCitleHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCitleHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKK2V4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKK2V4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCitleHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgorZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCitleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKK0NDID0gIiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgogCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nby1jcm9zczoiCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCi1HT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotZXhwb3J0IEdPUk9PVF9GSU5BTAorZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgR09CSU49IiR7Qn0vYmluIgorICAgIHJtIC1yZiAke0dPQklOfSAke0J9L3BrZworICAgIG1rZGlyICR7R09CSU59CisgICAgY2Qgc3JjCisgICAgLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKKyAgICBjZCAke0J9Cit9CiAKLSMgeDMyIEFCSSBpcyBub3Qgc3VwcG9ydGVkIG9uIGdvIGNvbXBpbGVyIHNvIGZhcgotQ09NUEFUSUJMRV9IT1NUX2xpbnV4LWdudXgzMiA9ICJudWxsIgotIyBwcGMzMiBpcyBub3Qgc3VwcG9ydGVkIGluIGdvIGNvbXBpbGVycwotQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGMgPSAibnVsbCIKKworbWFrZV93cmFwcGVyKCkgeworICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKKyAgICBjYXQgPDxFTkQgPiR7RH0ke2JpbmRpcn0vJDIKKyMhL2Jpbi9iYXNoCitoZXJlPVxgZGlybmFtZSBcJDBcYAorZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKK2V4cG9ydCBHT09TPSIke1RBUkdFVF9HT09TfSIKK2V4cG9ydCBHT0FSTT0iXCR7R09BUk06LSR7VEFSR0VUX0dPQVJNfX0iCitleHBvcnQgR08zODY9Ilwke0dPMzg2Oi0ke1RBUkdFVF9HTzM4Nn19IgorXCRoZXJlLy4uLy4uL2xpYi8ke0NST1NTX1RBUkdFVF9TWVNfRElSfS9nby9iaW4vJDEgIlwkQCIKK0VORAorICAgIGNobW9kICt4ICR7RH0ke2JpbmRpcn0vJDIKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KKyAgICBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKKyAgICAoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKKyAgICAgICAgWyAhIC1kICRkIF0gfHwgY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtTfS9zcmMvJGQgJHtEfSR7bGliZGlyfS9nby9zcmMvOyBcCisgICAgZG9uZSkKKyAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQorICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9L2dvL2JpbgorICAgIGZvciBmIGluICR7Qn0vYmluLyoKKyAgICBkbworICAgICAgICBiYXNlPWBiYXNlbmFtZSAkZmAKKyAgICAgICAgaW5zdGFsbCAtbTc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvL2JpbgorICAgICAgICBtYWtlX3dyYXBwZXIgJGJhc2UgJHtUQVJHRVRfUFJFRklYfSRiYXNlCisgICAgZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZlZTA4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBnby1jcm9zcy5pbmMKLXJlcXVpcmUgZ29fJHtQVn0uYmIKLQotIyBHbyBiaW5hcmllcyBhcmUgbm90IHVuZGVyc3Rvb2QgYnkgdGhlIHN0cmlwIHRvb2wuCi1JTkhJQklUX1NZU1JPT1RfU1RSSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZWUwODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgZ28tY3Jvc3MuaW5jCi1yZXF1aXJlIGdvXyR7UFZ9LmJiCi0KLSMgR28gYmluYXJpZXMgYXJlIG5vdCB1bmRlcnN0b29kIGJ5IHRoZSBzdHJpcCB0b29sLgotSU5ISUJJVF9TWVNST09UX1NUUklQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYjVhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tY3Jvc3MuaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjdlNGI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMKQEAgLTAsMCArMSw1NCBAQAoraW5oZXJpdCBjcm9zc3NkaworCitERVBFTkRTID0gImdvLW5hdGl2ZSB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MtY3Jvc3NzZGsgdmlydHVhbC9uYXRpdmVzZGstJHtUQVJHRVRfUFJFRklYfWNvbXBpbGVybGlicyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscy1jcm9zc3NkayIKK1BOID0gImdvLWNyb3Nzc2RrLSR7VEFSR0VUX0FSQ0h9IgorUFJPVklERVMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsiCisKK2V4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgorZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCitleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKK2V4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgorZXhwb3J0IENDX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCitleHBvcnQgR09fSU5TVEFMTCA9ICJjbWQiCitDQyA9ICIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZworCW1rZGlyICR7R09CSU59CisJY2Qgc3JjCisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKKwljZCAke0J9Cit9CisKK21ha2Vfd3JhcHBlcigpIHsKKyAgICBybSAtZiAke0R9JHtiaW5kaXJ9LyQyCisgICAgY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCisjIS9iaW4vYmFzaAoraGVyZT1cYGRpcm5hbWUgXCQwXGAKK2V4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09PUz0iJHtUQVJHRVRfR09PU30iCitcJGhlcmUvLi4vLi4vbGliLyR7Q1JPU1NfVEFSR0VUX1NZU19ESVJ9L2dvL2Jpbi8kMSAiXCRAIgorRU5ECisgICAgY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMgorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nbworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9iaW4KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vcGtnL3Rvb2wKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0gJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbC8KKwlmb3IgZiBpbiAke0J9L2Jpbi8qCisJZG8KKwkJYmFzZT1gYmFzZW5hbWUgJGZgCisJCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nby9iaW4KKwkJbWFrZV93cmFwcGVyICRiYXNlICR7VEFSR0VUX1BSRUZJWH0kYmFzZQorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1N2M4YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby1jcm9zc3Nkay5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZmViNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjMuMC5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIkRlcGVuZGVuY3kgbWFuYWdlbWVudCB0b29sIGZvciBHb2xhbmciCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjLyR7R09fSU1QT1JUfS9MSUNFTlNFO21kNT0xYmFkMzE1NjQ3NzUxZmFiMDAwNzgxMmY3MGQ0MmMwZCIKKworR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2RlcCIKK1NSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgorCisjIFBvaW50cyB0byAwLjMuMCB0YWcKK1NSQ1JFViA9ICI3YTkxYjc5NGJiZmJmMWYzYjhiNzk4MjM3OTkzMTY0NTExMjc4MDFiIgorCitpbmhlcml0IGdvCisKK0dPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2NtZC9kZXAiCisKK1JERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYwppbmRleCBjMjFmOGZkLi45NWRiMWMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jCkBAIC0xLDE2ICsxLDI4IEBACisjIFVzZSBpbW1lZGlhdGUgYXNzaW5nbWVudCBoZXJlIHRvIGdldCB0aGUgb3JpZ2luYWwgKC91c3IvbGliKQorIyBpbnN0ZWFkIG9mIHRoZSBvbmUgcmV3cml0dGVuIGJ5IG5hdGl2ZS5iYmNsYXNzLgorbm9uc3RhZ2luZ19saWJkaXIgOj0gIiR7bGliZGlyfSIKKwogaW5oZXJpdCBuYXRpdmUKIAotQk9PVFNUUkFQID89ICIiCitTUkNfVVJJX2FwcGVuZCA9ICIgaHR0cDovL2dvbGFuZy5vcmcvZGwvZ28xLjQuMy5zcmMudGFyLmd6O25hbWU9Ym9vdHN0cmFwO3N1YmRpcj1nbzEuNCIKK1NSQ19VUklbYm9vdHN0cmFwLm1kNXN1bV0gPSAiZGZiNjA0NTExMTE1ZGQ0MDJhNzdhNTUzYTU5MjNhMDQiCitTUkNfVVJJW2Jvb3RzdHJhcC5zaGEyNTZzdW1dID0gIjk5NDdmYzcwNWIwYjg0MWI1OTM4YzQ4YjIyZGMzM2U5NjQ3ZWMwNzUyYmFlNjZlNTAyNzhkZjRmMjNmNjQ5NTkiCisKIGV4cG9ydCBHT09TID0gIiR7QlVJTERfR09PU30iCiBleHBvcnQgR09BUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvJHtCT09UU1RSQVB9IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvMS40IgorQ0MgPSAiJHtAZC5nZXRWYXIoJ0JVSUxEX0NDJykuc3RyaXAoKX0iCisKIGV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgogCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29uZmlndXJlKCkgeworICAgIGNkICR7V09SS0RJUn0vZ28xLjQvZ28vc3JjCisgICAgQ0dPX0VOQUJMRUQ9MCBHT1JPT1Q9JHtXT1JLRElSfS9nbzEuNC9nbyAuL21ha2UuYmFzaAorfQogCiBkb19jb21waWxlKCkgewogCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCisJZXhwb3J0IEdPUk9PVF9GSU5BTD0iJHtub25zdGFnaW5nX2xpYmRpcn0vZ28iCisJZXhwb3J0IEdPUk9PVF9CT09UU1RSQVA9IiR7V09SS0RJUn0vZ28xLjQvZ28iCiAJcm0gLXJmICR7R09CSU59CiAJbWtkaXIgJHtHT0JJTn0KIApAQCAtMTgsNyArMzAsNyBAQAogCW1rZGlyIC1wICR7V09SS0RJUn0vYnVpbGQtdG1wCiAKIAljZCBzcmMKLQlDR09fRU5BQkxFRD0wIC4vbWFrZS5iYXNoIC0taG9zdC1vbmx5CisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKIH0KIAogbWFrZV93cmFwcGVyKCkgewpAQCAtMjYsMzEgKzM4LDI1IEBACiAJY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyJDMKICMhL2Jpbi9iYXNoCiBoZXJlPVxgZGlybmFtZSBcJDBcYAotZXhwb3J0IEdPUk9PVD0iJHtHT1JPT1Q6LVxgcmVhZGxpbmsgLWYgXCRoZXJlLy4uL2xpYi9nbyQzXGB9IgotXCRoZXJlLy4uL2xpYi9nbyQzL2Jpbi8kMSAiXCRAIgorZXhwb3J0IEdPUk9PVD0iJHtHT1JPT1Q6LVxgcmVhZGxpbmsgLWYgXCRoZXJlLy4uL2xpYi9nb1xgfSIKK1wkaGVyZS8uLi9saWIvZ28vYmluLyQxICJcJEAiCiBFTkQKLQljaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyJDMKKwljaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvJHtCT09UU1RSQVB9Ci0JY3AgLWEgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nbyR7Qk9PVFNUUkFQfS8KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28ke0JPT1RTVFJBUH0vc3JjCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvCisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nby8KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCiAJKGNkICR7U30vc3JjOyBmb3IgZCBpbiAqOyBkbyBcCi0JCVsgLWQgJGQgXSAmJiBjcCAtYSAke1N9L3NyYy8kZCAke0R9JHtsaWJkaXJ9L2dvJHtCT09UU1RSQVB9L3NyYy87IFwKKwkJWyAtZCAkZCBdICYmIGNwIC1hICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAogCWRvbmUpCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfS9nbyR7Qk9PVFNUUkFQfS9iaW4KKwlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9L2dvL2JpbgogCWZvciBmIGluICR7Qn0vYmluLyoKIAlkbwogCQliYXNlPWBiYXNlbmFtZSAkZmAKLQkJaW5zdGFsbCAtbTc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvJHtCT09UU1RSQVB9L2JpbgotCQltYWtlX3dyYXBwZXIgJGJhc2UgJGJhc2UgJHtCT09UU1RSQVB9CisJCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nby9iaW4KKwkJbWFrZV93cmFwcGVyICRiYXNlICRiYXNlCiAJZG9uZQogfQotCi1kb19wYWNrYWdlW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2VkYXRhW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfaXBrW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfZGViW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfcnBtW25vZXhlY10gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgyZmNhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgJHtQTn0uaW5jCi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotREVQRU5EUyArPSAiZ28tYm9vdHN0cmFwLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmYzYzBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS45LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSAke1BOfS5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWFlODZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwpAQCAtMCwwICsxLDk4IEBACitERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIGdvLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIgorUFJPVklERVMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tcnVudGltZSIKKworZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCitleHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCitleHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKK2V4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKK2V4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCitleHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgorZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCitleHBvcnQgR09fVEFSR0VUX0lOU1RBTEwgPSAic3RkIgorZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCitleHBvcnQgQ0NfRk9SX1RBUkdFVD0iJHtDQ30iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7Q1hYfSIKK2V4cG9ydCBHT1JPT1RfT1ZFUlJJREUgPSAiMSIKKworZG9fY29uZmlndXJlKCkgeworCToKK30KKworZG9fY29uZmlndXJlX2xpYmMtbXVzbCgpIHsKKwlybSAtZiAke1N9L3NyYy9ydW50aW1lL3JhY2UvKi5zeXNvCit9CisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgorCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZworCW1rZGlyICR7R09CSU59CisJY2Qgc3JjCisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKKwljcCAke0J9L3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0vZ29fYm9vdHN0cmFwICR7Qn0KKwlybSAtcmYgJHtCfS9wa2cvJHtUQVJHRVRfR09UVVBMRX0KKwkuL21ha2UuYmFzaCAtLXRhcmdldC1vbmx5CisJaWYgWyAtbiAiJHtHT19EWU5MSU5LfSIgXTsgdGhlbgorCQljcCAke0J9L2dvX2Jvb3RzdHJhcCAke0J9L3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0KKwkJR09fRkxBR1M9Ii1idWlsZG1vZGU9c2hhcmVkIiBHT19MREZMQUdTPSItZXh0bGRmbGFncyBcIiR7TERGTEFHU31cIiIgLi9tYWtlLmJhc2ggLS10YXJnZXQtb25seQorCWZpCisJY2QgJHtCfQorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKKwljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLworCWlmIFsgIiR7QlVJTERfR09UVVBMRX0iICE9ICIke1RBUkdFVF9HT1RVUExFfSIgXTsgdGhlbgorCQlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9wa2cvJHtCVUlMRF9HT1RVUExFfQorCQlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9wa2cvb2JqLyR7QlVJTERfR09UVVBMRX0KKwlmaQorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vcGtnL29iagorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3BrZy9ib290c3RyYXAKKwlmaW5kIHNyYyAtbWluZGVwdGggMSAtbWF4ZGVwdGggMSAtdHlwZSBkIHwgd2hpbGUgcmVhZCBzcmNkaXI7IGRvCisJCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICRzcmNkaXIgJHtEfSR7bGliZGlyfS9nby9zcmMvCisJZG9uZQorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ28vc3JjL2NtZC9kaXN0L2Rpc3QKK30KKworIyBSZW1vdmUgdGVzdCBiaW5hcmllcyB0aGF0IGNhbm5vdCBiZSByZWxvY2F0ZWQKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQorfQorCisjIFRoZXNlIHRlc3RkYXRhIGRpcmVjdG9yaWVzIGFyZW4ndCBuZWVkZWQgZm9yIGJ1aWxkcyBhbmQgY29udGFpbiBiaW5hcmllcworIyB0aGF0IGNhbiBjYXVzZSBlcnJvcnMgaW4gc3lzcm9vdF9zdHJpcCgpLCBzbyBqdXN0IHJlbW92ZSB0aGVtLgorc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kKCkgeworCWZpbmQgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L2dvL3NyYyAtZGVwdGggLXR5cGUgZCAtbmFtZSAndGVzdGRhdGEnIC1leGVjIHJtIC1yZiB7fSBcOworfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyoke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvL3NyYyAke2xpYmRpcn0vZ28vcGtnL2luY2x1ZGUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLnNobGlibmFtZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLnNobGlibmFtZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi8qLnNobGlibmFtZSBcCisiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi5hIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi5hIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi8qLyouYSBcCisiCisjIFRoZSB0ZXN0ZGF0YSBkaXJlY3RvcmllcyBpbiB0aGUgc291cmNlIHRyZWUgaW5jbHVkZSBzb21lIGJpbmFyaWVzIGZvciB2YXJpb3VzCisjIGFyY2hpdGVjdHVyZXMsIHNjcmlwdHMsIGFuZCAuYSBmaWxlcworSU5TQU5FX1NLSVBfJHtQTn0tZGV2ID0gInN0YXRpY2RldiBsZGZsYWdzIGZpbGUtcmRlcHMgYXJjaCIKKworSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCitJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2I2OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCityZXF1aXJlIGdvLXJ1bnRpbWUuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FjNWQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwpAQCAtMCwwICsxLDYxIEBACitpbmhlcml0IGdvYXJjaAorREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyBnby1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayBnby1uYXRpdmUiCisKK2V4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgorZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgorZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKK2V4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgorZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke0NDfSIKK2V4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke0NYWH0iCitleHBvcnQgR09fVEFSR0VUX0lOU1RBTEwgPSAiY21kIgorZXhwb3J0IEdPX0ZMQUdTID0gIi1hIgorR09fTERGTEFHUyA9ICIiCitHT19MREZMQUdTX2NsYXNzLW5hdGl2ZXNkayA9ICItbGlua21vZGUgZXh0ZXJuYWwiCitleHBvcnQgR09fTERGTEFHUworCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfTERGTEFHUyA9ICIiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgorCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZworCW1rZGlyICR7R09CSU59CisKKwlleHBvcnQgVE1QRElSPSR7V09SS0RJUn0vYnVpbGQtdG1wCisJbWtkaXIgLXAgJHtXT1JLRElSfS9idWlsZC10bXAKKworCWNkIHNyYworCS4vbWFrZS5iYXNoCisJY2QgJHtCfQorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbAorCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7Qn0vcGtnL3Rvb2wvJHtUQVJHRVRfR09UVVBMRX0gJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbC8KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtTfS9zcmMvY21kICR7RH0ke2xpYmRpcn0vZ28vc3JjLworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9iaW4KKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlmb3IgZiBpbiAke0J9LyR7R09fQlVJTERfQklORElSfS8qOyBkbworCQluYW1lPWBiYXNlbmFtZSAkZmAKKwkJaW5zdGFsbCAtbSAwNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluLworCQlsbiAtc2YgLi4vJHtCQVNFTElCfS9nby9iaW4vJG5hbWUgJHtEfSR7YmluZGlyfS8KKwlkb25lCit9CisKK1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWRldiIKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9nby9iaW4gJHtsaWJkaXJ9L2dvL3BrZy90b29sLyR7VEFSR0VUX0dPVFVQTEV9ICR7YmluZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vZ28iCitSREVQRU5EU18ke1BOfS1kZXYgPSAicGVybCBiYXNoIgorSU5TQU5FX1NLSVBfJHtQTn0gPSAibGRmbGFncyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTQzN2RkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotaW5oZXJpdCBnb2FyY2gKLURFUEVORFMgKz0gImdvLWJvb3RzdHJhcC1uYXRpdmUiCi0KLSMgbGliZ2NjIGlzIHJlcXVpcmVkIGZvciB0aGUgdGFyZ2V0IHNwZWNpZmljIGxpYnJhcmllcyB0byBidWlsZAotIyBwcm9wZXJseSwgYnV0IGFwcGFyZW50bHkgbm90IGZvciBnby1jcm9zcyBhbmQsIG1vcmUgaW1wb3J0YW50bHksCi0jIGFsc28gY2FuJ3QgYmUgdXNlZCB0aGVyZSBiZWNhdXNlIGdvLWNyb3NzIGNhbm5vdCBkZXBlbmQgb24KLSMgdGhlIHR1bmUtc3BlY2lmaWMgbGliZ2NjLiBPdGhlcndpc2UgZ28tY3Jvc3MgYWxzbyB3b3VsZCBoYXZlCi0jIHRvIGJlIHR1bmUtc3BlY2lmaWMuCi1ERVBFTkRTICs9ICIke0AgJ2xpYmdjYycgaWYgbm90IG9lLnV0aWxzLmluaGVyaXRzKGQsICdjcm9zcycpIGVsc2UgJyd9IgotCi0jIFByZXZlbnQgcnVuc3RyaXAgZnJvbSBydW5uaW5nIGJlY2F1c2UgeW91IGdldCBlcnJvcnMgd2hlbiB0aGUgaG9zdCBhcmNoICE9IHRhcmdldCBhcmNoCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKLUlOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgotCi0jIHgzMiBBQkkgaXMgbm90IHN1cHBvcnRlZCBvbiBnbyBjb21waWxlciBzbyBmYXIKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAibnVsbCIKLSMgcHBjMzIgaXMgbm90IHN1cHBvcnRlZCBpbiBnbyBjb21waWxlcnMKLUNPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCi0KLWV4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgotZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgotZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCi1leHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCi1leHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvMS40IgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKLWV4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7Q0N9IgotZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7Q1hYfSIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLWNyb3NzKCkgewotCWV4cG9ydCBDR09fRU5BQkxFRD0wCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKLQlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycsIFRydWUpLnN0cmlwKCl9IgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59Ci0KLQlleHBvcnQgVE1QRElSPSR7V09SS0RJUn0vYnVpbGQtdG1wCi0JbWtkaXIgLXAgJHtXT1JLRElSfS9idWlsZC10bXAKLQotCWNkIHNyYwotCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5Ci0JIyBFbnN1cmUgY2dvLmEgaXMgYnVpbHQgd2l0aCB0aGUgdGFyZ2V0IHRvb2xjaGFpbgotCWV4cG9ydCBHT0JJTj0iJHtCfS90YXJnZXQvYmluIgotCXJtIC1yZiAke0dPQklOfQotCW1rZGlyIC1wICR7R09CSU59Ci0JR09fRkxBR1M9Ii1hIiAuL21ha2UuYmFzaAotfQotCi1kb19pbnN0YWxsX2NsYXNzLXRhcmdldCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KLQljcCAtYSAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKLQkoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKLQkJWyAtZCAkZCBdICYmIGNwIC1hICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAotCWRvbmUpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaWYgWyAtZCAke0J9L2Jpbi8ke0dPT1N9XyR7R09BUkNIfSBdCi0JdGhlbgotCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9iaW4vJHtHT09TfV8ke0dPQVJDSH0vKiAke0R9JHtiaW5kaXJ9Ci0JZWxzZQotCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9iaW4vKiAke0R9JHtiaW5kaXJ9Ci0JZmkKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1jcm9zcygpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KLQljcCAtYSAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKLQkoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKLQkJWyAtZCAkZCBdICYmIGNwIC1hICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAotCWRvbmUpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JZm9yIGYgaW4gJHtCfS9iaW4vZ28qCi0JZG8KLQkJaW5zdGFsbCAtbTc1NSAkZiAke0R9JHtiaW5kaXJ9Ci0JZG9uZQotfQotZG9fcGFja2FnZV9xYVtub2V4ZWNdID0gIjEiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY1OTAzMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBnby5pbmMKLXJlcXVpcmUgZ28tJHtQVn0uaW5jCi0KLUJCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2E2YWIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotcmVxdWlyZSBnby5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MWIxMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgZ28tJHtQVn0uaW5jCi1yZXF1aXJlIGdvLmluYwotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tYXJjaD1taXBzMzJyMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY3ZTJjYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby0ke1BWfS5pbmMKK3JlcXVpcmUgZ28tdGFyZ2V0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9hcm1fYWFyY2g2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvYXJtX2FhcmNoNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNzg4YjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9hcm1fYWFyY2g2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWd1aWxlOiBhZGQgYWFyY2g2NCByZWNvZ25pdGlvbgotCi1Bc3N1bWUgbGl0dGxlLWVuZGlhbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbQotCi0tLS0gYS9tb2R1bGUvc3lzdGVtL2Jhc2UvdGFyZ2V0LnNjbQotKysrIGIvbW9kdWxlL3N5c3RlbS9iYXNlL3RhcmdldC5zY20KLUBAIC03MCw2ICs3MCw4IEBACi0gICAgICAgICAgICAgKChtZW1iZXIgY3B1ICcoInNwYXJjIiAic3BhcmM2NCIgInBvd2VycGMiICJwb3dlcnBjNjQiICJzcHUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiICJtaXBzNjQiKSkKLSAgICAgICAgICAgICAgKGVuZGlhbm5lc3MgYmlnKSkKLSsgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXmFhcmNoNjQiIGNwdSkKLSsgICAgICAgICAgICAgKGVuZGlhbm5lc3MgbGl0dGxlKSkKLSAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXmFybS4qZWIiIGNwdSkKLSAgICAgICAgICAgICAgKGVuZGlhbm5lc3MgYmlnKSkKLSAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXmFybS4qIiBjcHUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2FybV9lbmRpYW5uZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9hcm1fZW5kaWFubmVzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE0MzI4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2FybV9lbmRpYW5uZXNzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU3VwcG9ydCBmb3JtIEFSTSBlbmRpYW5uZXNzCi0KLUZpeGVzIFlvY3RvIGJ1ZyMgMjcyOQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGd1aWxlLTIuMC41L21vZHVsZS9zeXN0ZW0vYmFzZS90YXJnZXQuc2NtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3VpbGUtMi4wLjUub3JpZy9tb2R1bGUvc3lzdGVtL2Jhc2UvdGFyZ2V0LnNjbQkyMDEyLTAxLTI0IDAzOjA2OjA2LjAwMDAwMDAwMCAtMDgwMAotKysrIGd1aWxlLTIuMC41L21vZHVsZS9zeXN0ZW0vYmFzZS90YXJnZXQuc2NtCTIwMTItMDctMTIgMTM6MDU6NDQuMzcyMzY0MTAzIC0wNzAwCi1AQCAtNzAsNyArNzAsOSBAQAotICAgICAgICAgICAgICgobWVtYmVyIGNwdSAnKCJzcGFyYyIgInNwYXJjNjQiICJwb3dlcnBjIiAicG93ZXJwYzY0IiAic3B1IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIiAibWlwczY0IikpCi0gICAgICAgICAgICAgIChlbmRpYW5uZXNzIGJpZykpCi0tICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hcm0uKmVsIiBjcHUpCi0rICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hcm0uKmViIiBjcHUpCi0rICAgICAgICAgICAgIChlbmRpYW5uZXNzIGJpZykpCi0rICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hcm0uKiIgY3B1KQotICAgICAgICAgICAgICAoZW5kaWFubmVzcyBsaXR0bGUpKQotICAgICAgICAgICAgIChlbHNlCi0gICAgICAgICAgICAgIChlcnJvciAidW5rbm93biBDUFUgZW5kaWFubmVzcyIgY3B1KSkpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDItTWFyay1VbnVzZWQtbW9kdWxlcy1hcmUtcmVtb3ZlZC1nYy10ZXN0LWFzLXVucmVzb2x2ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDItTWFyay1VbnVzZWQtbW9kdWxlcy1hcmUtcmVtb3ZlZC1nYy10ZXN0LWFzLXVucmVzb2x2ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdiZjYzNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2RlYmlhbi8wMDAyLU1hcmstVW51c2VkLW1vZHVsZXMtYXJlLXJlbW92ZWQtZ2MtdGVzdC1hcy11bnJlc29sdmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYmlhbiBwYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotRnJvbSBlNTJiZmNkYmFjYTVkY2U0OTg2NzhkOGY1MTIzODFlM2UzOWE0MDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iIEJyb3duaW5nIDxybGJAZGVmYXVsdHZhbHVlLm9yZz4KLURhdGU6IFN1biwgMTggTWFyIDIwMTIgMTE6NDA6NTUgLTA1MDAKLVN1YmplY3Q6IE1hcmsgIlVudXNlZCBtb2R1bGVzIGFyZSByZW1vdmVkIiBnYyB0ZXN0IGFzIHVucmVzb2x2ZWQuCi0KLUFzIHBlciBkaXNjdXNzaW9uIHdpdGggdXBzdHJlYW0sIG1hcmsgdGhpcyB0ZXN0IGFzIHVucmVzb2x2ZWQgc2luY2UgaXQKLW1heSBwcm9kdWNlIGZhbHNlIG5lZ2F0aXZlcywgZGVwZW5kaW5nIG9uIHRoZSBiZWhhdmlvci90aW1pbmcgb2YgdGhlCi1nYXJiYWdlIGNvbGxlY3Rvci4KLS0tLQotIHRlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdCB8ICAgMTEgKysrKysrLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdAotaW5kZXggYTk2OTc1Mi4uOGM4ZTEzZSAxMDA2NDQKLS0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdAotKysrIGIvdGVzdC1zdWl0ZS90ZXN0cy9nYy50ZXN0Ci1AQCAtODQsMTEgKzg0LDEzIEBACi0gICAgICAgOzsgb25lIGdjIHJvdW5kLiBub3Qgc3VyZSB3aHkuCi0gCi0gICAgICAgKG1heWJlLWdjLWZsYWtpbmVzcwotLSAgICAgICAoPSAobGV0IGxwICgoaSAwKSkKLS0gICAgICAgICAgICAoaWYgKGd1YXJkKQotLSAgICAgICAgICAgICAgICAobHAgKDErIGkpKQotLSAgICAgICAgICAgICAgICBpKSkKLS0gICAgICAgICAgdG90YWwpKSkpCi0rICAgICAgIChvciAoPSAobGV0IGxwICgoaSAwKSkKLSsgICAgICAgICAgICAgICAgKGlmIChndWFyZCkKLSsgICAgICAgICAgICAgICAgICAgIChscCAoMSsgaSkpCi0rICAgICAgICAgICAgICAgICAgICBpKSkKLSsgICAgICAgICAgICAgIHRvdGFsKQotKyAgICAgICAgICAgKHRocm93ICd1bnJlc29sdmVkKSkpKSkKLSsKLSAKLSAgIChwYXNzLWlmICJMZXhpY2FsIHZhcnMgYXJlIGNvbGxlY3RhYmxlIgotICAgICAobGV0ICgobCAoY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9kZWJpYW4vMDAwMy1NYXJrLW11dGV4LXdpdGgtb3duZXItbm90LXJldGFpbmVkLXRocmVhZHMtdGVzdC1hcy11LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9kZWJpYW4vMDAwMy1NYXJrLW11dGV4LXdpdGgtb3duZXItbm90LXJldGFpbmVkLXRocmVhZHMtdGVzdC1hcy11LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2ZhZjNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDMtTWFyay1tdXRleC13aXRoLW93bmVyLW5vdC1yZXRhaW5lZC10aHJlYWRzLXRlc3QtYXMtdS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGViaWFuIHBhdGNoXQotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotCi1Gcm9tIDg0ODU0MzA5MWQ1NWRkZGI1NGE4NTYxMjE1NTk2NDUwNmQ3MTI4NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2IgQnJvd25pbmcgPHJsYkBkZWZhdWx0dmFsdWUub3JnPgotRGF0ZTogU3VuLCAxOCBNYXIgMjAxMiAxMzoyODoyNCAtMDUwMAotU3ViamVjdDogTWFyayAibXV0ZXggd2l0aCBvd25lciBub3QgcmV0YWluZWQiIHRocmVhZHMgdGVzdCBhcyB1bnJlc29sdmVkLgotCi1BcyBwZXIgZGlzY3Vzc2lvbiB3aXRoIHVwc3RyZWFtLCBtYXJrIHRoaXMgdGVzdCBhcyB1bnJlc29sdmVkIHNpbmNlIGl0Ci1tYXkgcHJvZHVjZSBmYWxzZSBuZWdhdGl2ZXMsIGRlcGVuZGluZyBvbiB0aGUgYmVoYXZpb3IvdGltaW5nIG9mIHRoZQotZ2FyYmFnZSBjb2xsZWN0b3IuCi0tLS0KLSB0ZXN0LXN1aXRlL3Rlc3RzL3RocmVhZHMudGVzdCB8ICAgIDYgKysrKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3RocmVhZHMudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvdGhyZWFkcy50ZXN0Ci1pbmRleCA4NWE3YzM4Li41MDg5OWNiIDEwMDY0NAotLS0tIGEvdGVzdC1zdWl0ZS90ZXN0cy90aHJlYWRzLnRlc3QKLSsrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvdGhyZWFkcy50ZXN0Ci1AQCAtNDE0LDggKzQxNCwxMCBAQAotIAotICAgICAgICAgICAgIChnYykgKGdjKQotICAgICAgICAgICAgIChsZXQgKChtIChnKSkpCi0tICAgICAgICAgICAgICAoYW5kIChtdXRleD8gbSkKLS0gICAgICAgICAgICAgICAgICAgKGVxPyAobXV0ZXgtb3duZXIgbSkgKGN1cnJlbnQtdGhyZWFkKSkpKSkpKQotKyAgICAgICAgICAgICAgKG9yCi0rICAgICAgICAgICAgICAgKGFuZCAobXV0ZXg/IG0pCi0rICAgICAgICAgICAgICAgICAgICAoZXE/IChtdXRleC1vd25lciBtKSAoY3VycmVudC10aHJlYWQpKSkKLSsgICAgICAgICAgICAgICAodGhyb3cgJ3VucmVzb2x2ZWQpKSkpKSkKLSAKLSAgICAgICA7OwotICAgICAgIDs7IG11dGV4IGxvY2sgbGV2ZWxzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2d1aWxlXzIuMC42X2ZpeF9zZWRfZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2d1aWxlXzIuMC42X2ZpeF9zZWRfZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OTdiYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9ndWlsZV8yLjAuNl9maXhfc2VkX2Vycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoaXMgZml4ZXMgc2VkIGlzc3VlIHdoZW4gcHJlZml4IGhhcyAvIGluIGl0LCBsaWtlIC91c3IvbG9jYWwKLQotYXV0b3JlY29uZiBlcnJvciBhdm9pZGVkOgotfCBzZWQ6IC1lIGV4cHJlc3Npb24gIzEsIGNoYXIgOTogdW5rbm93biBvcHRpb24gdG8gYHMnCi18IGNvbmZpZ3VyZS5hYzozOTogZXJyb3I6IEFDX0lOSVQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHBhY2thZ2UgYW5kIHZlcnNpb24gYXJndW1lbnRzCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA1LzAxCi0KLUluZGV4OiBndWlsZS0yLjAuNS9idWlsZC1hdXgvZ2l0LXZlcnNpb24tZ2VuCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3VpbGUtMi4wLjUub3JpZy9idWlsZC1hdXgvZ2l0LXZlcnNpb24tZ2VuCi0rKysgZ3VpbGUtMi4wLjUvYnVpbGQtYXV4L2dpdC12ZXJzaW9uLWdlbgotQEAgLTE4Nyw3ICsxODcsNyBAQCBlbHNlCi0gICAgIHY9VU5LTk9XTgotIGZpCi0gCi0tdj1gZWNobyAiJHYiIHxzZWQgInMvXiRwcmVmaXgvLyJgCi0rdj1gZWNobyAiJHYiIHxzZWQgInMjXiRwcmVmaXgjIyJgCi0gCi0gIyBUZXN0IHdoZXRoZXIgdG8gYXBwZW5kIHRoZSAiLWRpcnR5IiBzdWZmaXggb25seSBpZiB0aGUgdmVyc2lvbgotICMgc3RyaW5nIHdlJ3JlIHVzaW5nIGNhbWUgZnJvbSBnaXQuICBJLmUuLCBza2lwIHRoZSB0ZXN0IGlmIGl0J3MgIlVOS05PV04iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2xpYmd1aWxlLU1ha2VmaWxlLmFtLWhvb2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2xpYmd1aWxlLU1ha2VmaWxlLmFtLWhvb2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MGI5ZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9saWJndWlsZS1NYWtlZmlsZS5hbS1ob29rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA5YzRlMTIwYTdhODdkYjM0ZDIyYTUwODgzYTVhNTI1MTcwYjQ4MGQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDYgSmFuIDIwMTUgMjM6MTA6NTEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliZ3VpbGUvTWFrZWZpbGUuYW06IGluc3RhbGwtZGF0YS1ob29rIC0+IGluc3RhbGwtZXhlYy1ob29rCi0KLUl0IG1heSBpbnN0YWxsIHN1Y2ggYSBmaWxlOgotL3Vzci9saWI2NC9saWJndWlsZS0yLjAqLWdkYi5zY20KLQotVGhpcyBpcyBiZWNhdXNlIHdoZW4gdGhlcmUgaXMgbm8gZmlsZSBpbiB0aGUgZGlyZWN0b3J5OgotZm9yIGYgaW4gbGliZ3VpbGUtMi4wKjsgZG8KLSAgICBbc25pcF0KLWRvbmUKLQotVGhlIGYgd291bGQgYmUgbGliZ3VpbGUtMi4wKiBpdHNlbGYsIHVzZSBpbnN0YWxsLWV4ZWMtaG9vayB3aWxsIGZpeCB0aGUKLXByb2JsZW0gc2luY2UgaXQgZGVwZW5kcyBvbiBpbnN0YWxsLWxpYkxUTElCUkFSSUVTLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJndWlsZS9NYWtlZmlsZS5hbSB8ICAgIDQgKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmd1aWxlL01ha2VmaWxlLmFtIGIvbGliZ3VpbGUvTWFrZWZpbGUuYW0KLWluZGV4IDVkZWNkOTkuLjUyNjQ1YjcgMTAwNjQ0Ci0tLS0gYS9saWJndWlsZS9NYWtlZmlsZS5hbQotKysrIGIvbGliZ3VpbGUvTWFrZWZpbGUuYW0KLUBAIC00NDYsMTAgKzQ0Niw4IEBAIEVYVFJBX2xpYmd1aWxlX0BHVUlMRV9FRkZFQ1RJVkVfVkVSU0lPTkBfbGFfU09VUkNFUyA9IF9zY20uaAkJXAotICMjIGRlbGV0ZSBndWlsZS1zbmFyZi5hd2sgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIGJpbmRpciwgaW4gY2FzZSBpdCdzCi0gIyMgbGluZ2VyaW5nIHRoZXJlIGR1ZSB0byBhbiBlYXJsaWVyIGd1aWxlIHZlcnNpb24gbm90IGhhdmluZyBiZWVuCi0gIyMgd2lwZWQgb3V0LgotLWluc3RhbGwtZXhlYy1ob29rOgotK2luc3RhbGwtZXhlYy1ob29rOiBsaWJndWlsZS0yLjAtZ2RiLnNjbQotIAlybSAtZiAkKERFU1RESVIpJChiaW5kaXIpL2d1aWxlLXNuYXJmLmF3awotLQotLWluc3RhbGwtZGF0YS1ob29rOiBsaWJndWlsZS0yLjAtZ2RiLnNjbQotIAlAJChNS0RJUl9QKSAkKERFU1RESVIpJChsaWJkaXIpCi0gIyMgV2Ugd2FudCB0byBpbnN0YWxsIGxpYmd1aWxlLTIuMC1nZGIuc2NtIGFzIFNPTUVUSElORy1nZGIuc2NtLgotICMjIFNPTUVUSElORyBpcyB0aGUgZnVsbCBuYW1lIG9mIHRoZSBmaW5hbCBsaWJyYXJ5LiAgV2Ugd2FudCB0byBpZ25vcmUKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL29wZW5zdXNlL2d1aWxlLTY0Yml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9vcGVuc3VzZS9ndWlsZS02NGJpdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE2OWI1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL29wZW5zdXNlL2d1aWxlLTY0Yml0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvcGVuc3VzZSBwYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotSW5kZXg6IGd1aWxlLTIuMC4zL2xpYmd1aWxlL2hhc2guYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGd1aWxlLTIuMC4zLm9yaWcvbGliZ3VpbGUvaGFzaC5jCTIwMTEtMDctMDYgMTU6NDk6NTkuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ3VpbGUtMi4wLjMvbGliZ3VpbGUvaGFzaC5jCTIwMTItMDEtMTMgMjE6NDk6NDMuMzMyODQ0ODg0IC0wODAwCi1AQCAtMjcwLDcgKzI3MCw3IEBAIHNjbV9oYXNoZXIoU0NNIG9iaiwgdW5zaWduZWQgbG9uZyBuLCBzaXoKLSB1bnNpZ25lZCBsb25nCi0gc2NtX2loYXNocSAoU0NNIG9iaiwgdW5zaWduZWQgbG9uZyBuKQotIHsKLS0gIHJldHVybiAoU0NNX1VOUEFDSyAob2JqKSA+PiAxKSAlIG47Ci0rICByZXR1cm4gKCh1bnNpZ25lZCBsb25nKSBTQ01fVU5QQUNLIChvYmopID4+IDEpICUgbjsKLSB9Ci0gCi0gCi1AQCAtMzA2LDcgKzMwNiw3IEBAIHNjbV9paGFzaHYgKFNDTSBvYmosIHVuc2lnbmVkIGxvbmcgbikKLSAgIGlmIChTQ01fTlVNUChvYmopKQotICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIHNjbV9oYXNoZXIob2JqLCBuLCAxMCk7Ci0gICBlbHNlCi0tICAgIHJldHVybiBTQ01fVU5QQUNLIChvYmopICUgbjsKLSsgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSBTQ01fVU5QQUNLIChvYmopICUgbjsKLSB9Ci0gCi0gCi1JbmRleDogZ3VpbGUtMi4wLjMvbGliZ3VpbGUvc3RydWN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndWlsZS0yLjAuMy5vcmlnL2xpYmd1aWxlL3N0cnVjdC5jCTIwMTEtMDctMDYgMTU6NTA6MDAuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ3VpbGUtMi4wLjMvbGliZ3VpbGUvc3RydWN0LmMJMjAxMi0wMS0xMyAyMTo0OTo0My4zMzI4NDQ4ODQgLTA4MDAKLUBAIC05NDIsNyArOTQyLDcgQEAgc2NtX3N0cnVjdF9paGFzaHEgKFNDTSBvYmosIHVuc2lnbmVkIGxvbgotIHsKLSAgIC8qIFRoZSBsZW5ndGggb2YgdGhlIGhhc2ggdGFibGUgc2hvdWxkIGJlIGEgcmVsYXRpdmUgcHJpbWUgaXQncyBub3QKLSAgICAgIG5lY2Vzc2FyeSB0byBzaGlmdCBkb3duIHRoZSBhZGRyZXNzLiAgKi8KLS0gIHJldHVybiBTQ01fVU5QQUNLIChvYmopICUgbjsKLSsgIHJldHVybiAodW5zaWduZWQgbG9uZykgU0NNX1VOUEFDSyAob2JqKSAlIG47Ci0gfQotIAotIFNDTV9ERUZJTkUgKHNjbV9zdHJ1Y3RfdnRhYmxlX25hbWUsICJzdHJ1Y3QtdnRhYmxlLW5hbWUiLCAxLCAwLCAwLCAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvd29ya2Fyb3VuZC1pY2Utc3NhLWNvcnJ1cHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL3dvcmthcm91bmQtaWNlLXNzYS1jb3JydXB0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzM0ODM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvd29ya2Fyb3VuZC1pY2Utc3NhLWNvcnJ1cHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1saWJndWlsZS92bS1pLXN5c3RlbS5jOiB3b3JrYXJvdW5kIGljZSBzc2EgY29ycnVwdGlvbiB3aGlsZSBjb21waWxpbmcgd2l0aCBvcHRpb24gLWcgLU8KLQotV2hpbGUgY29tcGlsaW5nIHdpdGggb3B0aW9uIC1nIC1PLCB0aGVyZSB3YXMgYSBzc2EgY29ycnVwdGlvbjoKLS4uCi1VbmFibGUgdG8gY29hbGVzY2Ugc3NhX25hbWVzIDQ4IGFuZCAzNDc2IHdoaWNoIGFyZSBtYXJrZWQgYXMgTVVTVCBDT0FMRVNDRS4KLXNwXzQ4KGFiKSBhbmQgIHNwXzM0NzYoYWIpCi1ndWlsZS0yLjAuMTEvbGliZ3VpbGUvdm0tZW5naW5lLmM6IEluIGZ1bmN0aW9uICd2bV9kZWJ1Z19lbmdpbmUnOgotZ3VpbGUtMi4wLjExL2xpYmd1aWxlL3ZtLmM6NjczOjE5OiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogU1NBIGNvcnJ1cHRpb24KLSAjZGVmaW5lIFZNX05BTUUgICB2bV9kZWJ1Z19lbmdpbmUKLSAgICAgICAgICAgICAgICAgICBeCi1ndWlsZS0yLjAuMTEvbGliZ3VpbGUvdm0tZW5naW5lLmM6Mzk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdWTV9OQU1FJwotIFZNX05BTUUgKFNDTSB2bSwgU0NNIHByb2dyYW0sIFNDTSAqYXJndiwgaW50IG5hcmdzKQotIF4KLVBsZWFzZSBzdWJtaXQgYSBmdWxsIGJ1ZyByZXBvcnQsCi13aXRoIHByZXByb2Nlc3NlZCBzb3VyY2UgaWYgYXBwcm9wcmlhdGUuCi1TZWUgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+IGZvciBpbnN0cnVjdGlvbnMuCi0uLi4KLQotVHdlYWsgbGliZ3VpbGUvdm0taS1zeXN0ZW0uYyB0byBhZGQgYm91bmRhcnkgdmFsdWUgY2hlY2sgdG8gd29ya2Fyb3VuZCBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmd1aWxlL3ZtLWktc3lzdGVtLmMgfCAyMCArKysrKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ3VpbGUvdm0taS1zeXN0ZW0uYyBiL2xpYmd1aWxlL3ZtLWktc3lzdGVtLmMKLS0tLSBhL2xpYmd1aWxlL3ZtLWktc3lzdGVtLmMKLSsrKyBiL2xpYmd1aWxlL3ZtLWktc3lzdGVtLmMKLUBAIC02MjUsMTAgKzYyNSwyMiBAQCBWTV9ERUZJTkVfSU5TVFJVQ1RJT04gKDQ3LCBiaW5kX29wdGlvbmFsc19zaHVmZmxlLCAiYmluZC1vcHRpb25hbHMvc2h1ZmZsZSIsIDYsCi0gICAvKiBub3cgc2h1ZmZsZSB1cCwgZnJvbSB3YWxrIHRvIG50b3RhbCAqLwotICAgewotICAgICBzY21fdF9wdHJkaWZmIG5zaHVmID0gc3AgLSB3YWxrICsgMSwgaTsKLS0gICAgc3AgPSAoZnAgLSAxKSArIG50b3RhbCArIG5zaHVmOwotLSAgICBDSEVDS19PVkVSRkxPVyAoKTsKLS0gICAgZm9yIChpID0gMDsgaSA8IG5zaHVmOyBpKyspCi0tICAgICAgc3BbLWldID0gd2Fsa1tuc2h1Zi1pLTFdOwotKyAgICAvKiBjaGVjayB0aGUgdmFsdWUgb2YgbnNodWYgdG8gd29ya2Fyb3VuZCBpY2Ugc3NhIGNvcnJ1cHRpb24gKi8KLSsgICAgLyogd2hpbGUgY29tcGlsaW5nIHdpdGggLU8gLWcgKi8KLSsgICAgaWYgKG5zaHVmID4gMCkKLSsgICAgewotKyAgICAgIHNwID0gKGZwIC0gMSkgKyBudG90YWwgKyBuc2h1ZjsKLSsgICAgICBDSEVDS19PVkVSRkxPVyAoKTsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNodWY7IGkrKykKLSsgICAgICAgIHNwWy1pXSA9IHdhbGtbbnNodWYtaS0xXTsKLSsgICAgfQotKyAgICBlbHNlCi0rICAgIHsKLSsgICAgICBzcCA9IChmcCAtIDEpICsgbnRvdGFsICsgbnNodWY7Ci0rICAgICAgQ0hFQ0tfT1ZFUkZMT1cgKCk7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IG5zaHVmOyBpKyspCi0rICAgICAgICBzcFstaV0gPSB3YWxrW25zaHVmLWktMV07Ci0rICAgIH0KLSAgIH0KLSAgIC8qIGFuZCBmaWxsIG9wdGlvbmFscyAmIGtleXdvcmQgYXJncyB3aXRoIFNDTV9VTkRFRklORUQgKi8KLSAgIHdoaWxlICh3YWxrIDw9IChmcCAtIDEpICsgbnRvdGFsKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2d1aWxlXzIuMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZ3VpbGVfMi4wLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTAxZDBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZ3VpbGVfMi4wLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLVNVTU1BUlkgPSAiR3VpbGUgaXMgdGhlIEdOVSBVYmlxdWl0b3VzIEludGVsbGlnZW50IExhbmd1YWdlIGZvciBFeHRlbnNpb25zIgotREVTQ1JJUFRJT04gPSAiR3VpbGUgaXMgdGhlIEdOVSBVYmlxdWl0b3VzIEludGVsbGlnZW50IExhbmd1YWdlIGZvciBFeHRlbnNpb25zLFwKLSB0aGUgb2ZmaWNpYWwgZXh0ZW5zaW9uIGxhbmd1YWdlIGZvciB0aGUgR05VIG9wZXJhdGluZyBzeXN0ZW0uXAotIEd1aWxlIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBoZWxwIHByb2dyYW1tZXJzIGNyZWF0ZSBmbGV4aWJsZSBhcHBsaWNhdGlvbnMuXAotIFVzaW5nIEd1aWxlIGluIGFuIGFwcGxpY2F0aW9uIGFsbG93cyB0aGUgYXBwbGljYXRpb24ncyBmdW5jdGlvbmFsaXR5IHRvIGJlXAotIGV4dGVuZGVkIGJ5IHVzZXJzIG9yIG90aGVyIHByb2dyYW1tZXJzIHdpdGggcGx1Zy1pbnMsIG1vZHVsZXMsIG9yIHNjcmlwdHMuXAotIEd1aWxlIHByb3ZpZGVzIHdoYXQgbWlnaHQgYmUgZGVzY3JpYmVkIGFzICdwcmFjdGljYWwgc29mdHdhcmUgZnJlZWRvbSwnXAotIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMgdG8gY3VzdG9taXplIGFuIGFwcGxpY2F0aW9uIHRvIG1lZXQgdGhlaXJcCi0gbmVlZHMgd2l0aG91dCBkaWdnaW5nIGludG8gdGhlIGFwcGxpY2F0aW9uJ3MgaW50ZXJuYWxzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2d1aWxlLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9ndWlsZS9ndWlsZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItTWFyay1VbnVzZWQtbW9kdWxlcy1hcmUtcmVtb3ZlZC1nYy10ZXN0LWFzLXVucmVzb2x2ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1NYXJrLW11dGV4LXdpdGgtb3duZXItbm90LXJldGFpbmVkLXRocmVhZHMtdGVzdC1hcy11LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zdXNlL2d1aWxlLTY0Yml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2d1aWxlXzIuMC42X2ZpeF9zZWRfZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJtX2VuZGlhbm5lc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJtX2FhcmNoNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC1pY2Utc3NhLWNvcnJ1cHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliZ3VpbGUtTWFrZWZpbGUuYW0taG9vay5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImM2NDk3N2M3NzVlZmZkMTkzOTMzNjRiMzAxOGZkOGNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4NDQyNTY2MjU2ZTFiZTE0ZTUxZmMxODgzOWNkNzk5Yjk2NmJjNWIxNmM2YTFkN2E3YzM1MTU1YTg2MTlkODIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHRleGluZm8KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAotYWNwYXRocyA9ICItSSAuL200IgotCi1ERVBFTkRTID0gImxpYnVuaXN0cmluZyBiZHdnYyBnbXAgbGlidG9vbCBsaWJmZmkgbmN1cnNlcyByZWFkbGluZSIKLSMgYWRkIGd1aWxlLW5hdGl2ZSBvbmx5IHRvIHRoZSB0YXJnZXQgcmVjaXBlJ3MgREVQRU5EUwotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBndWlsZS1uYXRpdmUgbGliYXRvbWljLW9wcyIKLQotIyBUaGUgY29tbWVudCBvZiB0aGUgc2NyaXB0IGd1aWxlLWNvbmZpZyBzYWlkIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnV0IHdlIHNob3VsZAotIyBhdCBsZWFzdCBhZGQgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY3kgdG8gbWFrZSBpdCB3b3JrIHNpbmNlIHdlIHN0aWxsIHByb3ZpZGUgdGhlIHNjcmlwdC4KLVJERVBFTkRTXyR7UE59ID0gInBrZ2NvbmZpZyIKLQotUkRFUEVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmNfY2xhc3MtdGFyZ2V0ID0gIiBnbGliYy1nY29udi1pc284ODU5LTEiCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAWyctLXdpdGhvdXQtbGlibHRkbC1wcmVmaXggLS13aXRob3V0LWxpYmdtcC1wcmVmaXggLS13aXRob3V0LWxpYnJlYWRsaW5lLXByZWZpeCcsICcnXVtiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLGQpXX0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtLXdpdGgtbGlidW5pc3RyaW5nLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmdtcC1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1saWJsdGRsLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIGd1aWxlX2N2X3VzZV9jc3FydD1ubyAiCi0KLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtREhBVkVfR0NfU0VUX0ZJTkFMSVpFUl9OT1RJRklFUiBcCi0JICAgICAgICAgICAgICAgICAgICAtREhBVkVfR0NfR0VUX0hFQVBfVVNBR0VfU0FGRSBcCi0JICAgICAgICAgICAgICAgICAgICAtREhBVkVfR0NfR0VUX0ZSRUVfU1BBQ0VfRElWSVNPUiBcCi0JICAgICAgICAgICAgICAgICAgICAtREhBVkVfR0NfU0VUX0ZJTkFMSVpFX09OX0RFTUFORCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCW1rZGlyIC1wIHBvCi19Ci0KLWV4cG9ydCBHVUlMRV9GT1JfQlVJTEQ9IiR7QlVJTERfU1lTfS1ndWlsZSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWluc3RhbGwgLW0gMDc1NSAgJHtEfSR7YmluZGlyfS9ndWlsZSAke0R9JHtiaW5kaXJ9LyR7SE9TVF9TWVN9LWd1aWxlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndWlsZSBcCi0JCUdVSUxFX0xPQURfUEFUSD0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2d1aWxlLzIuMCBcCi0JCUdVSUxFX0xPQURfQ09NUElMRURfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ3VpbGUvMi4wL2NjYWNoZQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vJHtIT1NUX1NZU30tZ3VpbGUgXAotCQlHVUlMRV9MT0FEX1BBVEg9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9ndWlsZS8yLjAgXAotCQlHVUlMRV9MT0FEX0NPTVBJTEVEX1BBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2d1aWxlLzIuMC9jY2FjaGUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCSMgY2xlYW51cCBidWlsZHBhdGhzIGluIHNjcmlwdHMKLQlzZWQgLWkgLWUgJ3M6JHtTVEFHSU5HX0RJUl9OQVRJVkV9OjonICR7RH0ke2JpbmRpcn0vZ3VpbGUtY29uZmlnCi0Jc2VkIC1pIC1lICdzOiR7U1RBR0lOR19ESVJfSE9TVH06OicgJHtEfSR7YmluZGlyfS9ndWlsZS1zbmFyZgotCi0Jc2VkIC1pIC1lICdzOiR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgJHtEfSR7bGliZGlyfS9wa2djb25maWcvZ3VpbGUtMi4wLnBjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKLX0KLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTID0gImd1aWxlX2Nyb3NzX2NvbmZpZyIKLQotZ3VpbGVfY3Jvc3NfY29uZmlnKCkgewotCSMgdGhpcyBpcyBvbmx5IGZvciB0YXJnZXQgcmVjaXBlCi0JaWYgWyAiJHtQTn0iID0gImd1aWxlIiBdCi0JdGhlbgotCSAgICAgICAgIyBDcmVhdGUgZ3VpbGUtY29uZmlnIHJldHVybmluZyB0YXJnZXQgdmFsdWVzIGluc3RlYWQgb2YgbmF0aXZlIHZhbHVlcwotCSAgICAgICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke1NUQUdJTkdfQklORElSX0NST1NTfQotICAgICAgICAJcHJpbnRmICcjISVzIFxcXG4tLW5vLWF1dG8tY29tcGlsZSAtZSBtYWluIC1zXG4hI1xuKGRlZmluZSAlJWd1aWxlLWJ1aWxkLWluZm8gJXMoXG4nICQod2hpY2ggJHtCVUlMRF9TWVN9LWd1aWxlKSAiJyIgXAotCQkJPiAke0J9L2d1aWxlLWNvbmZpZy5jcm9zcwotCSAgICAgICAgc2VkIC1uIC1lICdzOl5bIFx0XSp7WyBcdF0qIjogICg6JyBcCi0JCQktZSAnczoiLFsgXHRdKiI6IC4gIjonIFwKLQkJCS1lICdzOiIgKn0sICpcXDoiKTonIFwKLQkJCS1lICdzOl4uKmNhY2hlZGlyLiokOjonIFwKLQkJCS1lICcvXiAgKC9wJyBcCi0JCQk8ICR7Qn0vbGliZ3VpbGUvbGlicGF0aC5oID4+ICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzCi0JICAgICAgICBlY2hvICcpKScgPj4gJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MKLQkgICAgICAgIGNhdCAke0J9L21ldGEvZ3VpbGUtY29uZmlnID4+ICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzCi0JICAgICAgICBpbnN0YWxsICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2d1aWxlLWNvbmZpZwotCWZpCi19Ci0KLSMgR3VpbGUgbmVlZHMgdGhlIGNvbXBpbGVkIGZpbGVzIHRvIGJlIG5ld2VyIHRoYW4gdGhlIHNvdXJjZSwgYW5kIGl0IHdvbid0Ci0jIGF1dG8tY29tcGlsZSBpbnRvIHRoZSBwcmVmaXggZXZlbiBpZiBpdCBjYW4gd3JpdGUgdGhlcmUsIHNvIHRvdWNoIHRoZW0gaGVyZSBhcwotIyBzeXNyb290IGlzIG1hbmFnZWQuCi1TU1RBVEVQT1NUSU5TVEZVTkNTICs9ICJndWlsZV9zc3RhdGVfcG9zdGluc3QiCi1HVUlMRVNTVEFURURJUiA9ICIke0NPTVBPTkVOVFNfRElSfS8ke1RVTkVfUEtHQVJDSH0vJHtQTn0vJHtsaWJkaXJ9L2d1aWxlLzIuMC9jY2FjaGUiCi1HVUlMRVNTVEFURURJUl9jbGFzcy1uYXRpdmUgPSAiJHtDT01QT05FTlRTX0RJUn0vJHtCVUlMRF9BUkNIfS8ke1BOfS8ke2xpYmRpcl9uYXRpdmV9L2d1aWxlLzIuMC9jY2FjaGUiCi1ndWlsZV9zc3RhdGVfcG9zdGluc3QoKSB7Ci0JaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3QiIC1vICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgXQotCXRoZW4KLSAgICAgICAgICAgICAgICBmaW5kICR7R1VJTEVTU1RBVEVESVJ9IC10eXBlIGYgfCB4YXJncyB0b3VjaAotCWZpCi19Ci0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDkxLwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYgppbmRleCA0ZDI1NTQyLi5jMDE3MjUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfMy4xLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzMuMS4yLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJTZXQgb2YgaTJjIHRvb2xzIGZvciBsaW51eCIKK0hPTUVQQUdFID0gImh0dHBzOi8vaTJjLndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvSTJDX1Rvb2xzIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2xfMC41MS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKaW5kZXggNTUxYmRmMC4uZWNmZjJmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKQEAgLTE2LDcgKzE2LDcgQEAKIAogREVQRU5EUyA9ICJsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIgogUkRFUEVORFNfJHtQTn0gPSAiZ2V0dGV4dC1kZXYgbGlieG1sLXBhcnNlci1wZXJsIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAibGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2gKaW5kZXggZGYzYjYwMC4uNTM3YmU1ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2gKQEAgLTEsMTQgKzEsMTEgQEAKLUZyb20gOTUyMmFjOGU1ZDViMjBhNDcyZjNmZmMzNTZkMzg4ZDM2ZjdmNTgyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2IyNGY4YmQ5NWFkNGY3ZDAwYzkzY2EyYWQ5OThjMTRhMDI2NmRiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IG1hcnhpbiA8bWxpc2thQHN1c2UuY3o+CiBEYXRlOiBUdWUsIDIxIE1hciAyMDE3IDA4OjQyOjExICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFkZCBGQUxMVEhSVSBjb21tZW50IHRvIGhhbmRsZSBHQ0M3IHdhcm5pbmdzLgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAogCiAtLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL2NvbW1pdC8wMTQ5MjRiYTg5OWY2NTk5MTdiYjY0MzkyYmJmZjdkM2M4MDNhZmMyXQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAogIGpzb25fb2JqZWN0LmMgIHwgIDEgKwogIGpzb25fdG9rZW5lci5jIHwgIDEgKwpAQCAtMjgsMTAgKzI1LDEwIEBACiAgICAgIHJldHVybiAwOwogICAgfQogZGlmZiAtLWdpdCBhL2pzb25fdG9rZW5lci5jIGIvanNvbl90b2tlbmVyLmMKLWluZGV4IDdmYTMyYWUuLmIzMmQ2NTcgMTAwNjQ0CitpbmRleCA5YTc2MjkzLi5hZTdiMWFlIDEwMDY0NAogLS0tIGEvanNvbl90b2tlbmVyLmMKICsrKyBiL2pzb25fdG9rZW5lci5jCi1AQCAtMzA2LDYgKzMwNiw3IEBAIHN0cnVjdCBqc29uX29iamVjdCoganNvbl90b2tlbmVyX3BhcnNlX2V4KHN0cnVjdCBqc29uX3Rva2VuZXIgKnRvaywKK0BAIC0zMDUsNiArMzA1LDcgQEAgc3RydWN0IGpzb25fb2JqZWN0KiBqc29uX3Rva2VuZXJfcGFyc2VfZXgoc3RydWN0IGpzb25fdG9rZW5lciAqdG9rLAogICAgICAgICAgICAgIHRvay0+ZXJyID0ganNvbl90b2tlbmVyX2Vycm9yX3BhcnNlX3VuZXhwZWN0ZWQ7CiAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICB9CkBAIC03Myw1ICs3MCw1IEBACiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDAgOiByZXR1cm4gYzsKIC0tIAotMi4xNC4xCisyLjEyLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtTGluay1hZ2FpbnN0LWxpYm0td2hlbi1uZWVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWMvMDAwMS1MaW5rLWFnYWluc3QtbGlibS13aGVuLW5lZWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZlOWQ3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWMvMDAwMS1MaW5rLWFnYWluc3QtbGlibS13aGVuLW5lZWRlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gOTM1ODJhZDg1ZWY0OGMxOGFjMTJmMDBhOWE5ZTEyNDk4OWIxZmNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgotRGF0ZTogRnJpLCAxIE1heSAyMDE1IDEyOjUyOjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIExpbmsgYWdhaW5zdCBsaWJtIHdoZW4gbmVlZGVkCi0KLUluIGNlcnRhaW4gQyBsaWJyYXJpZXMgKGUuZyB1Q2xpYmMpLCBpc25hbigpIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBhcmUKLWltcGxlbWVudGVkIGluIGxpYm0sIHNvIGpzb24tYyBuZWVkcyB0byBsaW5rIGFnYWluc3QgaXQuIFRoaXMgY29tbWl0Ci10aGVyZWZvcmUgYWRkcyBhbiBBQ19UUllfTElOSygpIHRlc3QgdG8gY2hlY2sgd2hldGhlciBhIHByb2dyYW0KLWNhbGxpbmcgaXNuYW4oKSBjYW4gYmUgcHJvcGVybHkgbGlua2VkIHdpdGggbm8gc3BlY2lhbCBmbGFncy4gSWYgbm90LAotd2UgYXNzdW1lIGxpbmtpbmcgYWdhaW5zdCBsaWJtIGlzIG5lZWRlZC4KLQotVGhlIGpzb24tYy5wYy5pbiBmaWxlIGlzIGFsc28gYWRqdXN0ZWQgc28gdGhhdCBpbiB0aGUgY2FzZSBvZiBzdGF0aWMKLWxpbmtpbmcgYWdhaW5zdCBqc29uLWMsIC1sbSBpcyBhbHNvIHVzZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBjb25maWd1cmUuYWMgfCA0ICsrKysKLSBqc29uLWMucGMuaW4gfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGM1MGY4MWIuLjMwZTcxNzQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUwLDYgKzUwLDEwIEBAIEFDX0NIRUNLX0RFQ0xTKFtpc2luZl0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8bWF0aC5oPl1dKQotIEFDX0NIRUNLX0RFQ0xTKFtfaXNuYW5dLCBbXSwgW10sIFtbI2luY2x1ZGUgPGZsb2F0Lmg+XV0pCi0gQUNfQ0hFQ0tfREVDTFMoW19maW5pdGVdLCBbXSwgW10sIFtbI2luY2x1ZGUgPGZsb2F0Lmg+XV0pCi0gCi0raWYgdGVzdCAiJGFjX2N2X2hhdmVfZGVjbF9pc25hbiIgPSAieWVzIiA7IHRoZW4KLSsgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPG1hdGguaD5dLCBbZmxvYXQgZiA9IDAuMDsgcmV0dXJuIGlzbmFuKGYpXSwgW10sIFtMSUJTPSIkTElCUyAtbG0iXSkKLStmaQotKwotICNjaGVjayBpZiAuc2VjdGlvbi5nbnUud2FybmluZyBhY2NlcHRzIGxvbmcgc3RyaW5ncyAoZm9yIF9fd2Fybl9yZWZlcmVuY2VzKQotIEFDX0xBTkdfUFVTSChbQ10pCi0gCi1kaWZmIC0tZ2l0IGEvanNvbi1jLnBjLmluIGIvanNvbi1jLnBjLmluCi1pbmRleCAwMzc3MzlkLi4wNWJmYmM4IDEwMDY0NAotLS0tIGEvanNvbi1jLnBjLmluCi0rKysgYi9qc29uLWMucGMuaW4KLUBAIC02LDYgKzYsNyBAQCBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAotIE5hbWU6IGpzb24tYwotIERlc2NyaXB0aW9uOiBKU09OIGltcGxlbWVudGF0aW9uIGluIEMKLSBWZXJzaW9uOiBAVkVSU0lPTkAKLS1SZXF1aXJlczogCi0rUmVxdWlyZXM6Ci0rTGlicy5wcml2YXRlOiBATElCU0AKLSBMaWJzOiAgLUwke2xpYmRpcn0gLWxqc29uLWMKLSBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9qc29uLWMKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtanNvbl90b2tlbmVyLXJlcXVpcmVzLUlORi1hbmQtTkFOLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtanNvbl90b2tlbmVyLXJlcXVpcmVzLUlORi1hbmQtTkFOLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjlkOTExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLWpzb25fdG9rZW5lci1yZXF1aXJlcy1JTkYtYW5kLU5BTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gOWJlNzE3MDBlYjU4MGM4MTU2ODg1ODRhNjQ2MjFhMzg4NjdjM2ZkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbWVzIE15YXR0IDxqYW1lcy5teWF0dEB0ZXNzZWxsYS5jb20+Ci1EYXRlOiBUaHUsIDUgRmViIDIwMTUgMTU6NTc6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0ganNvbl90b2tlbmVyIHJlcXVpcmVzIElORiBhbmQgTkFOCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0ganNvbl90b2tlbmVyLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGpzb24tYy0wLjEyL2pzb25fdG9rZW5lci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0ganNvbi1jLTAuMTIub3JpZy9qc29uX3Rva2VuZXIuYwotKysrIGpzb24tYy0wLjEyL2pzb25fdG9rZW5lci5jCi1AQCAtMTYsNiArMTYsNyBAQAotICNpbmNsdWRlICJjb25maWcuaCIKLSAKLSAjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlICJtYXRoX2NvbXBhdC5oIgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci1AQCAtMzUyLDEyICszNTMsMTAgQEAgc3RydWN0IGpzb25fb2JqZWN0KiBqc29uX3Rva2VuZXJfcGFyc2VfZQotIAotICAgICBjYXNlIGpzb25fdG9rZW5lcl9zdGF0ZV9pbmY6IC8qIGFrYSBzdGFydHMgd2l0aCAnaScgKi8KLSAgICAgICB7Ci0tCWludCBzaXplOwotLQlpbnQgc2l6ZV9pbmY7Ci0rCXNpemVfdCBzaXplX2luZjsKLSAJaW50IGlzX25lZ2F0aXZlID0gMDsKLSAKLSAJcHJpbnRidWZfbWVtYXBwZW5kX2Zhc3QodG9rLT5wYiwgJmMsIDEpOwotLQlzaXplID0ganNvbl9taW4odG9rLT5zdF9wb3MrMSwganNvbl9udWxsX3N0cl9sZW4pOwotIAlzaXplX2luZiA9IGpzb25fbWluKHRvay0+c3RfcG9zKzEsIGpzb25faW5mX3N0cl9sZW4pOwotIAljaGFyICppbmZidWYgPSB0b2stPnBiLT5idWY7Ci0gCWlmICgqaW5mYnVmID09ICctJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tY18wLjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMWNmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi4xLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiQyBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbmlwdWxhdGUgSlNPTiBkYXRhIgorREVTQ1JJUFRJT04gPSAiSlNPTi1DIGltcGxlbWVudHMgYSByZWZlcmVuY2UgY291bnRpbmcgb2JqZWN0IG1vZGVsIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgY29uc3RydWN0IEpTT04gb2JqZWN0cyBpbiBDLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL3dpa2kiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRlNTRiNjBmYmJjMzUxMjNiYTE5M2ZlYThlZTIxNmYyIgorCitTUkNfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNTVmNzg1M2Y3ZDhjZjY2NDU1NGNlM2ZhNzFiZjFjN2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmExMzY0NTFhNzkzMmQ4MGI3ZDE5N2IxMDQ0MWUyNmUzOTQyOGQ2N2IxNDQzZWM0M2JiYmE4MjQ3MDVlMTEyMyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisjIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAorIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCisjVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKK1JFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTIuMSIKK1JFQ0lQRV9VUFNUUkVBTV9EQVRFID0gIkp1biAwNywgMjAxNiIKK0NIRUNLX0RBVEUgPSAiQXByIDE5LCAyMDE3IgorCitSUFJPVklERVNfJHtQTn0gPSAibGlianNvbiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXJkcmFuZCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyBDbGVhbiB1cCBhdXRvY29uZiBjcnVmdCB0aGF0IHNob3VsZCBub3QgYmUgaW4gdGhlIHRhcmJhbGwKKyAgICBybSAtZiAke1N9L2NvbmZpZy5zdGF0dXMKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcyYzA5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiQyBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbmlwdWxhdGUgSlNPTiBkYXRhIgotREVTQ1JJUFRJT04gPSAiSlNPTi1DIGltcGxlbWVudHMgYSByZWZlcmVuY2UgY291bnRpbmcgb2JqZWN0IG1vZGVsIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgY29uc3RydWN0IEpTT04gb2JqZWN0cyBpbiBDLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL3dpa2kiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRlNTRiNjBmYmJjMzUxMjNiYTE5M2ZlYThlZTIxNmYyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtanNvbl90b2tlbmVyLXJlcXVpcmVzLUlORi1hbmQtTkFOLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGluay1hZ2FpbnN0LWxpYm0td2hlbi1uZWVkZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtRkFMTFRIUlUtY29tbWVudC10by1oYW5kbGUtR0NDNy13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2NhNGJiYjg4MWRmYzQwMTdlODAyMWI1ZTBhOGM0OTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDAwYzAxYjJiM2Y4MmRjYjQyNjE3NTFlYjcxZjFiMDg0NDA0ZmI3ZDZhMjgyZjA2MDc0ZDNjMTcwNzhiOWYzZiIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0jIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAotIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCi0jVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKLVJFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTIiCi1SRUNJUEVfVVBTVFJFQU1fREFURSA9ICJBcHIgMTEsIDIwMTQiCi1DSEVDS19EQVRFID0gIkRlYyAwNCwgMjAxNSIKLQotUlBST1ZJREVTXyR7UE59ID0gImxpYmpzb24iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgQ2xlYW4gdXAgYXV0b2NvbmYgY3J1ZnQgdGhhdCBzaG91bGQgbm90IGJlIGluIHRoZSB0YXJiYWxsCi0gICAgcm0gLWYgJHtTfS9jb25maWcuc3RhdHVzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfMy4xMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzMuMTIuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2EwZTRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfMy4xMi4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1TVU1NQVJZID0gIkxpbnV4IGtlcm5lbCBzdHlsZSBjb25maWd1cmF0aW9uIGZyYW1ld29yayBmb3Igb3RoZXIgcHJvamVjdHMiCi1ERVNDUklQVElPTiA9ICJUaGUga2NvbmZpZy1mcm9udGVuZHMgcHJvamVjdCBhaW1zIGF0IGNlbnRyYWxpc2luZyBcCi10aGUgZWZmb3J0IG9mIGtlZXBpbmcgYW4gdXAtdG8tZGF0ZSwgb3V0LW9mLXRyZWUsIHBhY2thZ2luZyBvZiB0aGUgXAota2NvbmZpZyBpbmZyYXN0cnVjdHVyZSwgcmVhZHkgZm9yIHVzZSBieSB0aGlyZC1wYXJ0eSBwcm9qZWN0cy4gXAotVGhlIGtjb25maWctZnJvbnRlbmRzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGtjb25maWcgcGFyc2VyLCBhcyB3ZWxsIGFzIGFsbCBcCi10aGUgZnJvbnRlbmRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3ltb3Jpbi5pcy1hLWdlZWsub3JnL3Byb2plY3RzL2tjb25maWctZnJvbnRlbmRzIgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWI4Y2Y2MGZmMzk3NjdmZjA0YjY3MWZjYTgzMDI0MDgiCi1TRUNUSU9OID0gImRldmVsIgotREVQRU5EUyArPSAibmN1cnNlcyBmbGV4IGJpc29uIGdwZXJmLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24gYmFzaCIKLVNSQ19VUkkgPSAiZ2l0Oi8veW1vcmluLmlzLWEtZ2Vlay5vcmcva2NvbmZpZy1mcm9udGVuZHMiCi0KLVNSQ1JFViA9ICI3NWQzNWIxNzJmYzBmN2I2NjIwZGQ2NTlhZjQxZjJjZTA0ZWRjNGU2IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCAke1N9L3NjcmlwdHMvLmF1dG9zdHVmZi9tNAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlsbiAtcyBrY29uZmlnLWNvbmYgJHtEfSR7YmluZGlyfS9jb25mCi0JbG4gLXMga2NvbmZpZy1tY29uZiAke0R9JHtiaW5kaXJ9L21jb25mCi19Ci0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdjb25mIC0tZGlzYWJsZS1xY29uZiIKLQotIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKLSMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgotU09MSUJTID0gIi0ke0BkLmdldFZhcignUFYnKVs6LTJdfS5zbyIKLUZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGlia2NvbmZpZy1wYXJzZXIuc28iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAyLVNldC1saWJyYXJ5LWluc3RhbGxhdGlvbi1wYXRoLWNvcnJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHMvMDAwMi1TZXQtbGlicmFyeS1pbnN0YWxsYXRpb24tcGF0aC1jb3JyZWN0bHkucGF0Y2gKaW5kZXggZWMxZmRjNC4uZGMzZDk3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAyLVNldC1saWJyYXJ5LWluc3RhbGxhdGlvbi1wYXRoLWNvcnJlY3RseS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzLzAwMDItU2V0LWxpYnJhcnktaW5zdGFsbGF0aW9uLXBhdGgtY29ycmVjdGx5LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyNjowMCArMDIwMAogU3ViamVjdDogW1BBVENIIDIvMl0gU2V0IGxpYnJhcnkgaW5zdGFsbGF0aW9uIHBhdGggY29ycmVjdGx5CiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJjb21wcy9wdWxsLzMyXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBsaWJjb21wcy9zcmMvQ01ha2VMaXN0cy50eHQgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtRmluZEd0a0RvYy5jbWFrZS1kcm9wLXRoZS1yZXF1aXJlbWVudC1mb3ItR1RLRE9DX1NDQS5wYXRjaAppbmRleCA3M2FjZGE2Li43OTFhMzJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUZpbmRHdGtEb2MuY21ha2UtZHJvcC10aGUtcmVxdWlyZW1lbnQtZm9yLUdUS0RPQ19TQ0EucGF0Y2gKQEAgLTcsNyArNyw3IEBACiBGb3Igc29tZSByZWFzb24gY21ha2UgaXMgbm90IGFibGUgdG8gZmluZCBpdCB3aGVuIGJ1aWxkaW5nIGluIG9wZW5lbWJlZGRlZCwKIGFuZCBpdCdzIGJ1bmRsZWQgd2l0aCB0aGUgc291cmNlIGNvZGUgYW55d2F5LgogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mL3B1bGwvMzEyXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBjbWFrZS9tb2R1bGVzL0ZpbmRHdGtEb2MuY21ha2UgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaAppbmRleCA5NTRhZGQ2Li4yODBlZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2gKQEAgLTEsMjggKzEsMjkgQEAKLUZyb20gNTk1OGIxNTFhNGRiYjg5MTE0ZTkwYzk3MWEzNGI3NGY4NzNiN2JlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzAxMmE5Mzc0NTIyMzc1MWNjOTc5ZTM3NzAyMDdhMDlhMDc1YmVjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVHVlLCA3IEZlYiAyMDE3IDEyOjE2OjAzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEdldCBwYXJhbWV0ZXJzIGZvciBib3RoIGxpYnNvbHYgYW5kIGxpYnNvbHZleHQgKGxpYmRuZiBpcworU3ViamVjdDogW1BBVENIIDUvNV0gR2V0IHBhcmFtZXRlcnMgZm9yIGJvdGggbGlic29sdiBhbmQgbGlic29sdmV4dCAobGliZG5mIGlzCiAgdXNpbmcgYm90aCkKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtkZXBlbmRzIG9uIHdoZXRoZXIgaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8xNzcgaXMgYWNjZXB0ZWRdCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzMxMl0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGI1MzFkYTEuLmU1MTJkYTAgMTAwNjQ0CitpbmRleCA4YjJhYjlhLi5lMmQzM2Q3IDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjgsNyArMjgsNyBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKK0BAIC0yOSw3ICsyOSw3IEBAIGZpbmRfcGFja2FnZSAoUGtnQ29uZmlnIFJFUVVJUkVEKQogIFNFVCAoQ01BS0VfTU9EVUxFX1BBVEggJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9tb2R1bGVzKQogIFBLR19DSEVDS19NT0RVTEVTKEdMSUIgZ2lvLXVuaXgtMi4wPj0yLjQ0LjAgUkVRVUlSRUQpCiAgRklORF9MSUJSQVJZIChSUE1EQl9MSUJSQVJZIE5BTUVTIHJwbWRiKQogLVBLR19DSEVDS19NT0RVTEVTIChMSUJTT0xWIFJFUVVJUkVEIGxpYnNvbHYpCiArUEtHX0NIRUNLX01PRFVMRVMgKExJQlNPTFYgUkVRVUlSRUQgbGlic29sdiBsaWJzb2x2ZXh0KQogIHNldChMSUJTT0xWX0xJQlJBUlkgJHtMSUJTT0xWX0xJQlJBUklFU30pCi0gcGtnX2NoZWNrX21vZHVsZXMgKENIRUNLIFJFUVVJUkVEIGNoZWNrKQotIHBrZ19jaGVja19tb2R1bGVzIChSRVBPIFJFUVVJUkVEIGxpYnJlcG8pCisgaWYgKEVOQUJMRV9SSFNNX1NVUFBPUlQpCisgICAgIHBrZ19jaGVja19tb2R1bGVzIChSSFNNIFJFUVVJUkVEIGxpYnJoc20pCiAtLSAKIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoCmluZGV4IDNkNzcyYTUuLjdlZWNjM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoxNzoxOSArMDIwMAogU3ViamVjdDogW1BBVENIIDIvNF0gUHJlZml4IHN5c3Jvb3QgcGF0aCB0byBpbnRyb3NwZWN0aW9uIHRvb2xzIHBhdGguCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYvcHVsbC8zMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIGxpYmRuZi9DTWFrZUxpc3RzLnR4dCB8IDQgKystLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoCmluZGV4IGQ3ZTU5ZDguLjgxMjY0MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAzLVNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LWNvcnJlY3RseS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMy1TZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS1jb3JyZWN0bHkucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjIwOjAxICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMy80XSBTZXQgdGhlIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBjb3JyZWN0bHkuCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYvcHVsbC8zMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIENNYWtlTGlzdHMudHh0IHwgNCArKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaAppbmRleCA5MzE5NTliLi4xZWE5MzEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2gKQEAgLTEsMjkgKzEsMzAgQEAKLUZyb20gNmQyNzE4YjkyNTQ1M2Y5YTY5MTUwMDFmNDg5NjA2ZWI4ZTQwODZjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTVjYmU2ZjQwZmUwODM2Mzg1ZTFhNzI0MWVjODExY2JlOTllNTg0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyNDo1MCArMDIwMAotU3ViamVjdDogW1BBVENIIDQvNF0gU2V0IGxpYnNvbHYgdmFyaWFibGVzIHdpdGggcGtnLWNvbmZpZyAoY21ha2UncyBvd24gbW9kdWxlCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBTZXQgbGlic29sdiB2YXJpYWJsZXMgd2l0aCBwa2ctY29uZmlnIChjbWFrZSdzIG93biBtb2R1bGUKICBkb2Vzbid0IHdvcmsgcHJvcGVybHkpLgogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mL3B1bGwvMzEyXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIENNYWtlTGlzdHMudHh0IHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA4ZWRiNjI3Li5iNTMxZGExIDEwMDY0NAoraW5kZXggYTc1ZGYwNC4uOGIyYWI5YSAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTI4LDcgKzI4LDggQEAgZmluZF9wYWNrYWdlIChQa2dDb25maWcgUkVRVUlSRUQpCitAQCAtMjksNyArMjksOCBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKICBTRVQgKENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcykKICBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCIGdpby11bml4LTIuMD49Mi40NC4wIFJFUVVJUkVEKQogIEZJTkRfTElCUkFSWSAoUlBNREJfTElCUkFSWSBOQU1FUyBycG1kYikKIC1maW5kX3BhY2thZ2UgKExpYlNvbHYgMC42LjIxIFJFUVVJUkVEIENPTVBPTkVOVFMgZXh0KQogK1BLR19DSEVDS19NT0RVTEVTIChMSUJTT0xWIFJFUVVJUkVEIGxpYnNvbHYpCiArc2V0KExJQlNPTFZfTElCUkFSWSAke0xJQlNPTFZfTElCUkFSSUVTfSkKLSBwa2dfY2hlY2tfbW9kdWxlcyAoQ0hFQ0sgUkVRVUlSRUQgY2hlY2spCi0gcGtnX2NoZWNrX21vZHVsZXMgKFJFUE8gUkVRVUlSRUQgbGlicmVwbykKLSBGSU5EX1BST0dSQU0gKFZBTEdSSU5EX1BST0dSQU0gTkFNRVMgdmFsZ3JpbmQgUEFUSCAvdXNyL2JpbiAvdXNyL2xvY2FsL2JpbikKKyBpZiAoRU5BQkxFX1JIU01fU1VQUE9SVCkKKyAgICAgcGtnX2NoZWNrX21vZHVsZXMgKFJIU00gUkVRVUlSRUQgbGlicmhzbSkKKyAgICAgaW5jbHVkZV9kaXJlY3RvcmllcyAoJHtSSFNNX0lOQ0xVREVfRElSU30pCiAtLSAKIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkOTM0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjkuMy5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIkxpYnJhcnkgcHJvdmlkaW5nIHNpbXBsaWZpZWQgQyBhbmQgUHl0aG9uIEFQSSB0byBsaWJzb2x2IgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEd0a0RvYy5jbWFrZS1kcm9wLXRoZS1yZXF1aXJlbWVudC1mb3ItR1RLRE9DX1NDQS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICIxYjE5OTUwZTgyZDg4ZWVjMjhkMDFiNGU3YzFkYTcxMmM5NDEyMDFkIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gImdsaWItMi4wIGxpYnNvbHYgbGliY2hlY2sgbGlicmVwbyBycG0gZ3RrLWRvYyIKKworaW5oZXJpdCBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBjbWFrZSBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EV0lUSF9NQU49T0ZGIC1EUFlUSE9OX0RFU0lSRUQ9MyBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURXSVRIX0dJUj1PTicsICctRFdJVEhfR0lSPU9GRicsIGQpfSBcCisgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFdJVEhfR0lSPU9GRiIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLURXSVRIX0dJUj1PRkYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMjg2MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBwcm92aWRpbmcgc2ltcGxpZmllZCBDIGFuZCBQeXRob24gQVBJIHRvIGxpYnNvbHYiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUHJlZml4LXN5c3Jvb3QtcGF0aC10by1pbnRyb3NwZWN0aW9uLXRvb2xzLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1TZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS1jb3JyZWN0bHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUFYgPSAiMC4yLjMrZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiMzY3NTQ1NjI5Y2MwMWE4ZTYyMjg5MGQ4OWJkMTNkMDYyY2U2MGQ3YiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBsaWJzb2x2IGxpYmNoZWNrIGxpYnJlcG8gcnBtIGd0ay1kb2MiCi0KLWluaGVyaXQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gY21ha2UgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQotCi1FWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFdJVEhfTUFOPU9GRiAtRFBZVEhPTl9ERVNJUkVEPTMgXAotICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EV0lUSF9HSVI9T04nLCAnLURXSVRIX0dJUj1PRkYnLCBkKX0gXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX0dJUj1PRkYiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9HSVI9T0ZGIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDEtQ29ycmVjdGx5LXNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKaW5kZXggMDFmZWE0MC4uMDhhNThmMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjA0OjM1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMS80XSBDb3JyZWN0bHkgc2V0IHRoZSBsaWJyYXJ5IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8vcHVsbC8xMTBdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIGxpYnJlcG8vQ01ha2VMaXN0cy50eHQgfCAzICsrLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMy10ZXN0cy1maXgtYS1yYWNlLXdoZW4tZGVsZXRpbmctdGVtcG9yYXJ5LWRpcmVjdG9yaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMy10ZXN0cy1maXgtYS1yYWNlLXdoZW4tZGVsZXRpbmctdGVtcG9yYXJ5LWRpcmVjdG9yaWVzLnBhdGNoCmluZGV4IDBkMmZhZTQuLjg5Y2E2MGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjA2OjI0ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMy80XSB0ZXN0czogZml4IGEgcmFjZSB3aGVuIGRlbGV0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcmllcwogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby9wdWxsLzExMF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fZG93bmxvYWRpbmcucHkgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2gKaW5kZXggNjY2NWIzMS4uZjdkN2FiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDQtU2V0LWdwZ21lLXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctbm90LXdpdGgtY21ha2UtbS5wYXRjaApAQCAtNCw3ICs0LDcgQEAKIFN1YmplY3Q6IFtQQVRDSCA0LzRdIFNldCBncGdtZSB2YXJpYWJsZXMgd2l0aCBwa2ctY29uZmlnLCBub3Qgd2l0aCBjbWFrZQogIG1vZHVsZSAod2hpY2ggZG9lc24ndCB3b3JrIHByb3Blcmx5KQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZ3BnbWUgdXBzdHJlYW0gZG9lcyBub3QgaGF2ZSBwa2ctY29uZmlnIHN1cHBvcnQgYW5kIGlzIG5vdCBpbnRlcmVzdGVkIGluIGl0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDMgKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA1LUZpeC10eXBvLWNvcnJlY3QtTFJPX1NTTFZFUklGWUhPU1Qtd2l0aC1DVVJMT1BUX1NTTF8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA1LUZpeC10eXBvLWNvcnJlY3QtTFJPX1NTTFZFUklGWUhPU1Qtd2l0aC1DVVJMT1BUX1NTTF8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBjN2QxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDUtRml4LXR5cG8tY29ycmVjdC1MUk9fU1NMVkVSSUZZSE9TVC13aXRoLUNVUkxPUFRfU1NMXy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGE0YmJiY2NjZTZlZGMxYTJkMWJkNDc1NTA2ZTI5NzVmZDc2OTZjODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDggSnVuIDIwMTcgMTY6MzE6MzAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHR5cG86IGNvcnJlY3QgTFJPX1NTTFZFUklGWUhPU1Qgd2l0aAorIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QKKworSW4gY29tbWl0IDUxZDMyYzZjZDg4YmEwMTM5YzMyNzkzMTgzZmQ2YTIzNmMxZWY0NTYKKy0tLQorQXV0aG9yOiBUb21hcyBNbGNvY2ggPHRtbGNvY2hAcmVkaGF0LmNvbT4KK0RhdGU6ICAgTW9uIE1heSA1IDE0OjMxOjM1IDIwMTQgKzAyMDAKKworICAgIEFkZCBMUk9fU1NMVkVSSUZZUEVFUiBhbmQgTFJPX1NTTFZFUklGWUhPU1Qgb3B0aW9ucyAoUmhCdWc6IDEwOTMwMTQpCistLS0KKworSXQgaW5jb3JyZWN0bHkgc2V0b3B0IENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgZm9yIExST19TU0xWRVJJRllIT1NULgorVXNlIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QgdG8gY29ycmVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGlicmVwby9oYW5kbGUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYnJlcG8vaGFuZGxlLmMgYi9saWJyZXBvL2hhbmRsZS5jCitpbmRleCBjY2VhNzliLi5mZjM5ZGI0IDEwMDY0NAorLS0tIGEvbGlicmVwby9oYW5kbGUuYworKysrIGIvbGlicmVwby9oYW5kbGUuYworQEAgLTYyOSw3ICs2MjksNyBAQCBscl9oYW5kbGVfc2V0b3B0KExySGFuZGxlICpoYW5kbGUsCisgCisgICAgIGNhc2UgTFJPX1NTTFZFUklGWUhPU1Q6CisgICAgICAgICBoYW5kbGUtPnNzbHZlcmlmeWhvc3QgPSB2YV9hcmcoYXJnLCBsb25nKSA/IDIgOiAwOworLSAgICAgICAgY19yYyA9IGN1cmxfZWFzeV9zZXRvcHQoY19oLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBoYW5kbGUtPnNzbHZlcmlmeWhvc3QpOworKyAgICAgICAgY19yYyA9IGN1cmxfZWFzeV9zZXRvcHQoY19oLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCBoYW5kbGUtPnNzbHZlcmlmeWhvc3QpOworICAgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgTFJPX1NTTENMSUVOVENFUlQ6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvX2dpdC5iYgppbmRleCAyZjE5NGYxLi4zMjM4YjE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fZ2l0LmJiCkBAIC03LDYgKzcsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBQViA9ICIxLjcuMjArZ2l0JHtTUkNQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC9ub2hhcmRjb2RlcGF0aHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC9ub2hhcmRjb2RlcGF0aHMucGF0Y2gKaW5kZXggYjIyMzlmYi4uZmNiY2U3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wvbm9oYXJkY29kZXBhdGhzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sL25vaGFyZGNvZGVwYXRocy5wYXRjaApAQCAtNCw2ICs0LDggQEAKIAogUlAgMjAxNS8yLzMKIAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKIEluZGV4OiBsaWJ0b29sLTIuNC41L2xpYnRvb2xpemUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBsaWJ0b29sLTIuNC41Lm9yaWcvbGlidG9vbGl6ZS5pbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYgppbmRleCAwNmFiYjA1Li5iMDI2MjBiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYgpAQCAtMTUsNiArMTUsNyBAQAogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgICAgIHNlZCAtZSAnc0AtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfUBAZycgXAorICAgICAgICAgICAgLWUgInNAJHtERUJVR19QUkVGSVhfTUFQfUBAZyIgXAogICAgICAgICAgICAgLWUgJ3NAJHtTVEFHSU5HX0RJUl9IT1NUfUBAZycgXAogICAgICAgICAgICAgLWUgJ3NAJHtTVEFHSU5HX0RJUl9OQVRJVkV9QEBnJyBcCiAgICAgICAgICAgICAtZSAnc0BeXChzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IlwpLipAXDEke2xpYmRpcn0gJHtiYXNlX2xpYmRpcn0iQCcgXApAQCAtMjIsNSArMjMsNiBAQAogICAgICAgICAgICAgLWUgJ3NAXlwoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoPSJcKS4qQFwxJHtsaWJkaXJ9ICR7YmFzZV9saWJkaXJ9IkAnIFwKICAgICAgICAgICAgIC1lICdzQF5cKHByZWRlcF9vYmplY3RzPSJcKS4qQFwxIkAnIFwKICAgICAgICAgICAgIC1lICdzQF5cKHBvc3RkZXBfb2JqZWN0cz0iXCkuKkBcMSJAJyBcCisgICAgICAgICAgICAtZSAic0Ake0hPU1RUT09MU19ESVJ9L0BAZyIgXAogICAgICAgICAgICAgLWkgJHtEfSR7YmluZGlyfS9saWJ0b29sCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI1MTc5OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtbGx2bS1UYXJnZXRMaWJyYXJ5SW5mby1VbmRlZmluZS1saWJjLWZ1bmN0aW9ucy1pZi10aC5wYXRjaApAQCAtMCwwICsxLDkzIEBACitGcm9tIDI4MjkzZTQ4Y2YxYTUyMDA0YzZhNzhkZTQ0ODcxODQ0MWY5ZTA1ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyMSBNYXkgMjAxNiAwMDozMzoyMCArMDAwMAorU3ViamVjdDogW1BBVENIIDEvMl0gbGx2bTogVGFyZ2V0TGlicmFyeUluZm86IFVuZGVmaW5lIGxpYmMgZnVuY3Rpb25zIGlmIHRoZXkKKyBhcmUgbWFjcm9zCisKK211c2wgZGVmaW5lcyBzb21lIGZ1bmN0aW9ucyBhcyBtYWNyb3MgYW5kIG5vdCBpbmxpbmUgZnVuY3Rpb25zCitpZiB0aGlzIGlzIHRoZSBjYXNlIHRoZW4gbWFrZSBzdXJlIHRvIHVuZGVmaW5lIHRoZW0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBpbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5kZWYgYi9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCitpbmRleCA5Y2JlOTE3YzE0Ni4uYWZmODQxOWNmNTQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCisrKysgYi9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCitAQCAtNjU2LDYgKzY1Niw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmbW9kbCIpCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZvcGVuKQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmb3BlbiIpCisgLy8vIEZJTEUgKmZvcGVuNjQoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm9wZW50eXBlKQorKyNpZmRlZiBmb3BlbjY0CisrI3VuZGVmIGZvcGVuNjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZm9wZW42NCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm9wZW42NCIpCisgLy8vIGludCBmcHJpbnRmKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOworQEAgLTY5MSw2ICs2OTQsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnNlZWsiKQorIC8vLyBpbnQgZnNlZWtvKEZJTEUgKnN0cmVhbSwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKTsKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnNlZWtvKQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2Vla28iKQorKyNpZmRlZiBmc2Vla282NAorKyN1bmRlZiBmc2Vla282NAorKyNlbmRpZgorIC8vLyBpbnQgZnNlZWtvNjQoRklMRSAqc3RyZWFtLCBvZmY2NF90IG9mZnNldCwgaW50IHdoZW5jZSkKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnNlZWtvNjQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZWVrbzY0IikKK0BAIC03MDEsNiArNzA3LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZXRwb3MiKQorIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmc3RhdCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnN0YXQiKQorIC8vLyBpbnQgZnN0YXQ2NChpbnQgZmlsZWRlcywgc3RydWN0IHN0YXQ2NCAqYnVmKQorKyNpZmRlZiBmc3RhdDY0CisrI3VuZGVmIGZzdGF0NjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnN0YXQ2NCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnN0YXQ2NCIpCisgLy8vIGludCBmc3RhdHZmcyhpbnQgZmlsZGVzLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKK0BAIC03MTYsNiArNzI1LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZ0ZWxsIikKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnRlbGxvKQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmdGVsbG8iKQorIC8vLyBvZmY2NF90IGZ0ZWxsbzY0KEZJTEUgKnN0cmVhbSkKKysjaWZkZWYgZnRlbGxvNjQKKysjdW5kZWYgZnRlbGxvNjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnRlbGxvNjQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZ0ZWxsbzY0IikKKyAvLy8gaW50IGZ0cnlsb2NrZmlsZShGSUxFICpmaWxlKTsKK0BAIC04MzYsNiArODQ4LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImxvZ2wiKQorIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChsc3RhdCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibHN0YXQiKQorIC8vLyBpbnQgbHN0YXQ2NChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdDY0ICpidWYpOworKyNpZmRlZiBsc3RhdDY0CisrI3VuZGVmIGxzdGF0NjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwobHN0YXQ2NCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibHN0YXQ2NCIpCisgLy8vIHZvaWQgKm1hbGxvYyhzaXplX3Qgc2l6ZSk7CitAQCAtMTA1NSw2ICsxMDcwLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInNzY2FuZiIpCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHN0YXQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInN0YXQiKQorIC8vLyBpbnQgc3RhdDY0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0NjQgKmJ1Zik7CisrI2lmZGVmIHN0YXQ2NAorKyN1bmRlZiBzdGF0NjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoc3RhdDY0KQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJzdGF0NjQiKQorIC8vLyBpbnQgc3RhdHZmcyhjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKK0BAIC0xMTg0LDYgKzEyMDIsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgidGltZXMiKQorIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTCh0bXBmaWxlKQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJ0bXBmaWxlIikKKyAvLy8gRklMRSAqdG1wZmlsZTY0KHZvaWQpCisrI2lmZGVmIHRtcGZpbGU2NAorKyN1bmRlZiB0bXBmaWxlNjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwodG1wZmlsZTY0KQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJ0bXBmaWxlNjQiKQorIC8vLyBpbnQgdG9hc2NpaShpbnQgYyk7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzJiZDcyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGQ3NzY0ODdiYWMxNzY1MDcwNDYxNDI0OGQxOWQxZTZiMzU3NzUwMDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gS2VsbHkgPG1rZWxseUB4ZXZvLmNvbT4KK0RhdGU6IEZyaSwgMTkgTWF5IDIwMTcgMDA6MjI6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGxsdm06IGFsbG93IGVudiBvdmVycmlkZSBvZiBleGUgcGF0aAorCitXaGVuIHVzaW5nIGEgbmF0aXZlIGxsdm0tY29uZmlnIGZyb20gaW5zaWRlIGEgc3lzcm9vdCwgd2UgbmVlZCBsbHZtLWNvbmZpZyB0bworcmV0dXJuIHRoZSBsaWJyYXJpZXMsIGluY2x1ZGUgZGlyZWN0b3JpZXMsIGV0Yy4gZnJvbSBpbnNpZGUgdGhlIHN5c3Jvb3QgcmF0aGVyCit0aGFuIGZyb20gdGhlIG5hdGl2ZSBzeXNyb290LiBUaHVzIHByb3ZpZGUgYW4gZW52IG92ZXJyaWRlIGZvciBjYWxsaW5nCitsbHZtLWNvbmZpZyBmcm9tIGEgdGFyZ2V0IHN5c3Jvb3QuCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBLZWxseSA8bWtlbGx5QHhldm8uY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyB0b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAgYi90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKK2luZGV4IDA4YjA5NmFmYjA1Li5kOGQ3NzQyNzQ0ZSAxMDA2NDQKKy0tLSBhL3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAorKysrIGIvdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCitAQCAtMjI1LDYgKzIyNSwxMyBAQCBUeXBpY2FsIGNvbXBvbmVudHM6XG5cCisgCisgLy8vIFxicmllZiBDb21wdXRlIHRoZSBwYXRoIHRvIHRoZSBtYWluIGV4ZWN1dGFibGUuCisgc3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJsZVBhdGgoY29uc3QgY2hhciAqQXJndjApIHsKKysgIC8vIEhhY2sgZm9yIFlvY3RvOiB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoZSByb290IHBhdGggd2hlbiB3ZSBhcmUgdXNpbmcKKysgIC8vIGxsdm0tY29uZmlnIGZyb20gd2l0aGluIGEgdGFyZ2V0IHN5c3Jvb3QuCisrICBjb25zdCBjaGFyICpTeXNyb290ID0gc3RkOjpnZXRlbnYoIllPQ1RPX0FMVEVSTkFURV9FWEVfUEFUSCIpOworKyAgaWYgKFN5c3Jvb3QgIT0gbnVsbHB0cikgeworKyAgICByZXR1cm4gU3lzcm9vdDsKKysgIH0KKysKKyAgIC8vIFRoaXMganVzdCBuZWVkcyB0byBiZSBzb21lIHN5bWJvbCBpbiB0aGUgYmluYXJ5OyBDKysgZG9lc24ndAorICAgLy8gYWxsb3cgdGFraW5nIHRoZSBhZGRyZXNzIG9mIDo6bWFpbiBob3dldmVyLgorICAgdm9pZCAqUCA9ICh2b2lkICopKGludHB0cl90KUdldEV4ZWN1dGFibGVQYXRoOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNmZhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKQEAgLTAsMCArMSwxODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK0RFU0NSSVBUSU9OID0gIlRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlIgorSE9NRVBBR0UgPSAiaHR0cDovL2xsdm0ub3JnIgorTElDRU5TRSA9ICJOQ1NBIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PWU4MjVlMDE3ZWRjMzVjZmQ1OGUyNjExNmU1MjUxNzcxIgorCitERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyLW5hdGl2ZSB6bGliIG5pbmphLW5hdGl2ZSBsbHZtLW5hdGl2ZSIKKworUkRFUEVORFNfJHtQTn1fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbmN1cnNlcy10ZXJtaW5mbyIKKworaW5oZXJpdCBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZSBjbWFrZSBwa2djb25maWcKKworUFJPVklERVMgKz0gImxsdm0ke1BWfSIKKworTExWTV9SRUxFQVNFID0gIiR7UFZ9IgorTExWTV9ESVIgPSAibGx2bSR7TExWTV9SRUxFQVNFfSIKKworU1JDUkVWID0gIjlhNWMzMzMzODhjYmI1NGEwY2UzYTY3YzRmNTM5ZjVlNTkwYTA4OWIiCitQViA9ICI1LjAiCitQQVRDSF9WRVJTSU9OID0gIjAiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGx2bS1taXJyb3IvbGx2bS5naXQ7YnJhbmNoPXJlbGVhc2VfNTA7cHJvdG9jb2w9aHR0cCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitMTFZNX0lOU1RBTExfRElSID0gIiR7V09SS0RJUn0vbGx2bS1pbnN0YWxsIgorZGVmIGdldF9sbHZtX2FyY2goYmIsIGQsIGFyY2hfdmFyKToKKyAgICBpbXBvcnQgcmUKKyAgICBhID0gZC5nZXRWYXIoYXJjaF92YXIpCisgICAgaWYgICByZS5tYXRjaCgnKGkuODZ8YXRobG9ufHg4Ni42NCkkJywgYSk6ICAgICAgICAgcmV0dXJuICdYODYnCisgICAgZWxpZiByZS5tYXRjaCgnYXJtJCcsIGEpOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdBUk0nCisgICAgZWxpZiByZS5tYXRjaCgnYXJtZWIkJywgYSk6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdBUk0nCisgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NCQnLCBhKTogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdBQXJjaDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfYmUkJywgYSk6ICAgICAgICAgICAgICAgICAgIHJldHVybiAnQUFyY2g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKGlzYXwpKDMyfDY0fCkocjZ8KShlbHwpJCcsIGEpOiByZXR1cm4gJ01pcHMnCisgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpKHw2NCknLCBhKTogICAgICAgICAgICAgcmV0dXJuICdQb3dlclBDJworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIkNhbm5vdCBtYXAgJyVzJyB0byBhIHN1cHBvcnRlZCBMTFZNIGFyY2hpdGVjdHVyZSIgJSBhKQorCitkZWYgZ2V0X2xsdm1fdGFyZ2V0X2FyY2goYmIsIGQpOgorICAgIHJldHVybiBnZXRfbGx2bV9hcmNoKGJiLCBkLCAnVEFSR0VUX0FSQ0gnKQorIworIyBEZWZhdWx0IHRvIGJ1aWxkIGFsbCBPRS1Db3JlIHN1cHBvcnRlZCB0YXJnZXQgYXJjaGVzICh1c2VyIG92ZXJyaWRhYmxlKS4KKyMKK0xMVk1fVEFSR0VUUyA/PSAiJHtAZ2V0X2xsdm1fdGFyZ2V0X2FyY2goYmIsIGQpfSIKK0xMVk1fVEFSR0VUU19wcmVwZW5kX3g4NiA9ICJBTURHUFU7IgorTExWTV9UQVJHRVRTX3ByZXBlbmRfeDg2LTY0ID0gIkFNREdQVTsiCisKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NHQgPSAiYXJtIgorCitFWFRSQV9PRUNNQUtFICs9ICItRExMVk1fRU5BQkxFX0FTU0VSVElPTlM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9FTkFCTEVfRVhQRU5TSVZFX0NIRUNLUz1PRkYgXAorICAgICAgICAgICAgICAgICAgLURMTFZNX0VOQUJMRV9QSUM9T04gXAorICAgICAgICAgICAgICAgICAgLURMTFZNX0JJTkRJTkdTX0xJU1Q9JycgXAorICAgICAgICAgICAgICAgICAgLURMTFZNX0xJTktfTExWTV9EWUxJQj1PTiBcCisgICAgICAgICAgICAgICAgICAtRExMVk1fRU5BQkxFX0ZGST1PTiBcCisgICAgICAgICAgICAgICAgICAtREZGSV9JTkNMVURFX0RJUj0kKHBrZy1jb25maWcgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGxpYmZmaSkgXAorICAgICAgICAgICAgICAgICAgLURMTFZNX09QVElNSVpFRF9UQUJMRUdFTj1PTiBcCisgICAgICAgICAgICAgICAgICAtRExMVk1fVEFSR0VUU19UT19CVUlMRD0iJHtMTFZNX1RBUkdFVFN9IiBcCisgICAgICAgICAgICAgICAgICAtRyBOaW5qYSIKKworRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfQ1JPU1NDT01QSUxJTkc6Qk9PTD1PTiBcCisgICAgICAgICAgICAgICAgICAtRExMVk1fVEFCTEVHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2xsdm0tdGJsZ2VuJHtQVn0gXAorICAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICJcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0NST1NTQ09NUElMSU5HOkJPT0w9T04gXAorICAgICAgICAgICAgICAgICAgLURMTFZNX1RBQkxFR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLXRibGdlbiR7UFZ9IFwKKyAgICAgICAgICAgICAgICAgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyMgRml4IHBhdGhzIGluIGxsdm0tY29uZmlnCisJc2VkIC1pICJzfHN5czo6cGF0aDo6cGFyZW50X3BhdGgoQ3VycmVudFBhdGgpKVwuc3RyKCl8c3lzOjpwYXRoOjpwYXJlbnRfcGF0aChzeXM6OnBhdGg6OnBhcmVudF9wYXRoKEN1cnJlbnRQYXRoKSkpLnN0cigpfGciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCisJc2VkIC1yaSAicyMvKGJpbnxpbmNsdWRlfGxpYikoLz9cIikjL1wxLyR7TExWTV9ESVJ9XDIjZyIgJHtTfS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKKwlzZWQgLXJpICJzI2xpYi8ke0xMVk1fRElSfSMke2Jhc2VsaWJ9LyR7TExWTV9ESVJ9I2ciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCit9CisKK2RvX2NvbXBpbGUoKSB7CisJTklOSkFfU1RBVFVTPSJbJXBdICIgbmluamEgLXYgJHtQQVJBTExFTF9NQUtFfQorfQorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKKwlOSU5KQV9TVEFUVVM9IlslcF0gIiBuaW5qYSAtdiAke1BBUkFMTEVMX01BS0V9IGxsdm0tY29uZmlnIGxsdm0tdGJsZ2VuCit9CisKK2RvX2luc3RhbGwoKSB7CisJTklOSkFfU1RBVFVTPSJbJXBdICIgREVTVERJUj0ke0xMVk1fSU5TVEFMTF9ESVJ9IG5pbmphIC12IGluc3RhbGwKKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9iaW4vbGx2bS1jb25maWcgJHtEfSR7bGliZGlyfS8ke0xMVk1fRElSfS9sbHZtLWNvbmZpZworCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7TExWTV9ESVJ9CisJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7YmluZGlyfS8qICR7RH0ke2JpbmRpcn0vJHtMTFZNX0RJUn0vCisKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7TExWTV9ESVJ9CisJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7aW5jbHVkZWRpcn0vKiAke0R9JHtpbmNsdWRlZGlyfS8ke0xMVk1fRElSfS8KKworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS8ke0xMVk1fRElSfQorCisJIyBUaGUgTExWTSBzb3VyY2VzIGhhdmUgIi9saWIiIGVtYmVkZGVkIGFuZCBzbyB3ZSBjYW5ub3QgY29tcGxldGVseSByZWx5IG9uIHRoZSAke2xpYmRpcn0gdmFyaWFibGUKKwlpZiBbIC1kICR7TExWTV9JTlNUQUxMX0RJUn0ke2xpYmRpcn0vIF07IHRoZW4KKwkJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7bGliZGlyfS8qICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vCisJZWxpZiBbIC1kICR7TExWTV9JTlNUQUxMX0RJUn0ke3ByZWZpeH0vbGliIF07IHRoZW4KKwkJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7cHJlZml4fS9saWIvKiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9LworCWVsaWYgWyAtZCAke0xMVk1fSU5TVEFMTF9ESVJ9JHtwcmVmaXh9L2xpYjY0IF07IHRoZW4KKwkJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7cHJlZml4fS9saWI2NC8qICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vCisJZmkKKworCSMgUmVtb3ZlIHVubmVjZXNzYXJ5IGNtYWtlIGZpbGVzCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vY21ha2UKKworCWxuIC1zICR7TExWTV9ESVJ9L2xpYkxMVk0tJHtQVn0ke1NPTElCU0RFVn0gJHtEfSR7bGliZGlyfS9saWJMTFZNLSR7UFZ9JHtTT0xJQlNERVZ9CisKKwkjIFdlJ2xsIGhhdmUgdG8gZGVsZXRlIHRoZSBsaWJMTFZNLnNvIGR1ZSB0byBtdWx0aXBsZSByZWFzb25zLi4uCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vbGliTExWTS5zbworCXJtIC1yZiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2xpYkxUTy5zbworfQorZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vYmluL2xsdm0tdGJsZ2VuICR7RH0ke2JpbmRpcn0vbGx2bS10YmxnZW4ke1BWfQorCWluc3RhbGwgLUQgLW0gMDc1NSAke0J9L2Jpbi9sbHZtLWNvbmZpZyAke0R9JHtiaW5kaXJ9L2xsdm0tY29uZmlnJHtQVn0KKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9saWIvbGliTExWTS0ke1BWfS5zbyAke0R9JHtsaWJkaXJ9L2xpYkxMVk0tJHtQVn0uc28KK30KKworUEFDS0FHRVMgKz0gIiR7UE59LWJ1Z3BvaW50cGFzc2VzICR7UE59LWxsdm1oZWxsbyIKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1zdGF0aWNkZXYgPSAiMSIKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIiCitGSUxFU18ke1BOfS1kYmcgPSAiIFwKKyAgICAke2JpbmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnIFwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnL0J1Z3BvaW50UGFzc2VzLnNvIFwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnL0xMVk1IZWxsby5zbyBcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9Ly5kZWJ1Zy9saWJMVE8uc28qIFwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnL2xsdm0tY29uZmlnIFwKKyAgICAvdXNyL3NyYy9kZWJ1ZyBcCisiCisKK0ZJTEVTXyR7UE59LWRldiA9ICIgXAorICAgICR7YmluZGlyfS8ke0xMVk1fRElSfSBcCisgICAgJHtpbmNsdWRlZGlyfS8ke0xMVk1fRElSfSBcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2xsdm0tY29uZmlnIFwKKyIKKworUlJFQ09NTUVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1idWdwb2ludHBhc3NlcyAke1BOfS1sbHZtaGVsbG8iCisKK0ZJTEVTXyR7UE59LWJ1Z3BvaW50cGFzc2VzID0gIlwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vQnVncG9pbnRQYXNzZXMuc28gXAorIgorRklMRVNfJHtQTn0gKz0gIlwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vbGliTFRPLnNvLiogXAorIgorCitGSUxFU18ke1BOfS1sbHZtaGVsbG8gPSAiXAorICAgICR7bGliZGlyfS8ke0xMVk1fRElSfS9MTFZNSGVsbG8uc28gXAorIgorCitQQUNLQUdFU19EWU5BTUlDID0gIl5saWJsbHZtJHtMTFZNX1JFTEVBU0V9LS4qJCIKK05PQVVUT1BBQ0tBR0VERUJVRyA9ICIxIgorCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmxsdm0ke0xMVk1fUkVMRUFTRX0tbGx2bS0ke0xMVk1fUkVMRUFTRX0uJHtQQVRDSF9WRVJTSU9OfSArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJsbHZtJHtMTFZNX1JFTEVBU0V9LWxsdm0tJHtMTFZNX1JFTEVBU0V9ICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmxsdm0ke0xMVk1fUkVMRUFTRX0tbGx2bSArPSAiZGV2LXNvIgorCitweXRob24gbGx2bV9wb3B1bGF0ZV9wYWNrYWdlcygpIHsKKyAgICBsaWJkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJkaXJ9JywgZCkKKyAgICBsaWJsbHZtX2xpYmRpciA9IGJiLmRhdGEuZXhwYW5kKCcke2xpYmRpcn0vJHtMTFZNX0RJUn0nLCBkKQorICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmxsdm1fbGliZGlyKycvLmRlYnVnJywgJ15saWIoLiopXC5zbyQnLCAnbGlibGx2bSR7TExWTV9SRUxFQVNFfS0lcy1kYmcnLCAnU3BsaXQgZGVidWcgcGFja2FnZSBmb3IgJXMnLCBhbGxvd19kaXJzPVRydWUpCisgICAgc3BsaXRfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYmxsdm0ke0xMVk1fUkVMRUFTRX0tJXMnLCAnU3BsaXQgcGFja2FnZSBmb3IgJXMnLCBhbGxvd19kaXJzPVRydWUsIGFsbG93X2xpbmtzPVRydWUsIHJlY3Vyc2l2ZT1UcnVlKQorICAgIHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmxsdm1fbGliZGlyLCAnXmxpYiguKilcLmEkJywgJ2xpYmxsdm0ke0xMVk1fUkVMRUFTRX0tJXMtc3RhdGljZGV2JywgJ1NwbGl0IHN0YXRpY2RldiBwYWNrYWdlIGZvciAlcycsIGFsbG93X2RpcnM9VHJ1ZSkKKyAgICBpZiBzcGxpdF9wYWNrYWdlczoKKyAgICAgICAgcG4gPSBkLmdldFZhcignUE4nKQorICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBuLCAnICcrJyAnLmpvaW4oc3BsaXRfcGFja2FnZXMpKQorICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBuICsgJy1kYmcnLCAnICcrJyAnLmpvaW4oc3BsaXRfZGJnX3BhY2thZ2VzKSkKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwbiArICctc3RhdGljZGV2JywgJyAnKycgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCit9CisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAibGx2bV9wb3B1bGF0ZV9wYWNrYWdlcyAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKaW5kZXggNGE4MzkyOS4uMjAwMjU5NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlRyYWRpdGlvbmFsIFVuaXggbWFjcm8gcHJvY2Vzc29yIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9tNC9tNC5odG1sIgogREVTQ1JJUFRJT04gPSAiR05VIG00IGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0cmFkaXRpb25hbCBVbml4IG1hY3JvIHByb2Nlc3Nvci4gIEl0IGlzIG1vc3RseSBTVlI0IFwKIGNvbXBhdGlibGUgYWx0aG91Z2ggaXQgaGFzIHNvbWUgZXh0ZW5zaW9ucyAoZm9yIGV4YW1wbGUsIGhhbmRsaW5nIG1vcmUgdGhhbiA5IHBvc2l0aW9uYWwgcGFyYW1ldGVycyB0byBtYWNyb3MpLiBcCiBHTlUgTTQgYWxzbyBoYXMgYnVpbHQtaW4gZnVuY3Rpb25zIGZvciBpbmNsdWRpbmcgZmlsZXMsIHJ1bm5pbmcgc2hlbGwgY29tbWFuZHMsIGRvaW5nIGFyaXRobWV0aWMsIGV0Yy4iCkBAIC02LDUgKzcsNCBAQAogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwogCiBFWFRSQV9PRU1BS0UgKz0gIidpbmZvZGlyPSR7aW5mb2Rpcn0nIgotTERGTEFHU19wcmVwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHJ0ICIKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9tNC9tNC0ke1BWfS50YXIuZ3oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9jb252ZXJ0LmJpbi5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY29udmVydC5iaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjZmYWE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY29udmVydC5iaW4uYwpAQCAtMCwwICsxLDM0OCBAQAorMHhmYywgMHhmYSwgMHhhMywgMHg5YywgMHgwMiwgMHgwMSwgMHgwMCwgMHg4OSwgMHgxZCwgMHhhMCwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MywgMHhmYywgMHgwMCwKKzB4NzQsIDB4MDksIDB4OGIsIDB4NDQsIDB4MjQsIDB4MDQsIDB4YTMsIDB4YTQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MjUsIDB4ODAsIDB4MTQsIDB4MDEsCisweDAwLCAweDZhLCAweDAwLCAweDlkLCAweDMxLCAweGMwLCAweGJmLCAweGI4LCAweDE1LCAweDAxLCAweDAwLCAweGI5LCAweDQ0LCAweDU4LCAweDAxLCAweDAwLAorMHgyOSwgMHhmOSwgMHhmYywgMHhmMywgMHhhYSwgMHhiZSwgMHhiYSwgMHgwMiwgMHgwMSwgMHgwMCwgMHhiZiwgMHgwMCwgMHgxMCwgMHgwMiwgMHgwMCwgMHhiOSwKKzB4NzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YTQsIDB4MGYsIDB4MDEsIDB4MTUsIDB4YjQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDEsIDB4MWQsCisweGFlLCAweDAyLCAweDAxLCAweDAwLCAweGI4LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDhlLCAweGQ4LCAweDhlLCAweGMwLCAweDhlLCAweGUwLCAweDhlLAorMHhlOCwgMHg4ZSwgMHhkMCwgMHg2OCwgMHg5MCwgMHgxNCwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwgMHhhNCwgMHgwMiwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwKKzB4YTAsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MzUsIDB4OWMsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZTMsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ODksCisweGM2LCAweDgzLCAweGM0LCAweDEwLCAweDZhLCAweDAwLCAweDlkLCAweDMxLCAweGRiLCAweGExLCAweGFjLCAweDE0LCAweDAxLCAweDAwLCAweDgzLCAweGY4LAorMHgwMSwgMHg3NCwgMHgxMywgMHgzMSwgMHhjMCwgMHgzMSwgMHhjOSwgMHgzMSwgMHhkMiwgMHgzMSwgMHhmZiwgMHgzMSwgMHhlZCwgMHg2YSwgMHgxMCwgMHhhMSwKKzB4YTgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4Y2IsIDB4ODksIDB4ZjAsIDB4YmUsIDB4MmEsIDB4MDMsIDB4MDEsIDB4MDAsIDB4YmYsIDB4MDAsIDB4MjAsCisweDAyLCAweDAwLCAweGI5LCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweGE0LCAweDg5LCAweGM2LCAweDBmLCAweDAxLCAweDE1LCAweDJhLCAweDAzLAorMHgwMSwgMHgwMCwgMHgzMSwgMHhjMCwgMHgwZiwgMHhiYSwgMHhlOCwgMHgwNSwgMHgwZiwgMHgyMiwgMHhlMCwgMHhiZiwgMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwKKzB4MzEsIDB4YzAsIDB4YjksIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YWIsIDB4YmYsIDB4MDAsIDB4MzAsIDB4MDIsIDB4MDAsIDB4OGQsIDB4ODcsCisweDA3LCAweDEwLCAweDAwLCAweDAwLCAweDg5LCAweDA3LCAweGJmLCAweDAwLCAweDQwLCAweDAyLCAweDAwLCAweDhkLCAweDg3LCAweDA3LCAweDEwLCAweDAwLAorMHgwMCwgMHhiOSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHgwNywgMHgwNSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4MywgMHhjNywgMHgwOCwKKzB4NDksIDB4NzUsIDB4ZjMsIDB4YmYsIDB4MDAsIDB4NTAsIDB4MDIsIDB4MDAsIDB4YjgsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjksIDB4MDAsIDB4MDgsCisweDAwLCAweDAwLCAweDg5LCAweDA3LCAweDA1LCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDgzLCAweGM3LCAweDA4LCAweDQ5LCAweDc1LCAweGYzLCAweGI4LAorMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwgMHgwZiwgMHgyMiwgMHhkOCwgMHhiOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwZiwgMHgzMiwgMHgwZiwgMHhiYSwKKzB4ZTgsIDB4MDgsIDB4MGYsIDB4MzAsIDB4NmEsIDB4MTAsIDB4YTEsIDB4YTgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MzEsIDB4YzAsIDB4MGYsIDB4YmEsCisweGU4LCAweDFmLCAweDBmLCAweGJhLCAweGU4LCAweDAwLCAweDBmLCAweDIyLCAweGMwLCAweGNiLCAweDU1LCAweDg5LCAweGU1LCAweDUzLCAweDU2LCAweDU3LAorMHg4YiwgMHg3ZCwgMHgwOCwgMHg4MSwgMHhlZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg3NSwgMHgwYywgMHg1NiwgMHhlOCwgMHhmYywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4NjYsIDB4MzEsIDB4ZGIsIDB4NjYsIDB4YjgsIDB4MjAsIDB4ZTgsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YmEsIDB4NTAsIDB4NDEsIDB4NGQsCisweDUzLCAweDY2LCAweGI5LCAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDE1LCAweDcyLCAweDE4LCAweDY2LCAweDNkLCAweDUwLCAweDQxLCAweDRkLAorMHg1MywgMHg3NSwgMHgxMCwgMHg2NiwgMHg0ZSwgMHg2NiwgMHg4NSwgMHhmNiwgMHg3NCwgMHgwOSwgMHg4MywgMHhjNywgMHgxNCwgMHg2NiwgMHg4MywgMHhmYiwKKzB4MDAsIDB4NzUsIDB4ZDIsIDB4NjYsIDB4ZTgsIDB4ODIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MjksIDB4ZjAsIDB4NWYsIDB4NWUsIDB4NWIsIDB4ODksCisweGVjLCAweDVkLCAweGMzLCAweDUzLCAweDU2LCAweDU3LCAweGU4LCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweGY5LCAweDMxLCAweGM5LCAweDMxLCAweGQyLAorMHhiOCwgMHgwMSwgMHhlOCwgMHhjZCwgMHgxNSwgMHg3MiwgMHgyOCwgMHg4MywgMHhmOSwgMHgwMCwgMHg3NSwgMHgwOSwgMHg4MywgMHhmYSwgMHgwMCwgMHg3NSwKKzB4MDQsIDB4ODksIDB4YzEsIDB4ODksIDB4ZGEsIDB4NjYsIDB4ODEsIDB4ZTIsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzEsIDB4ZTIsIDB4MDYsCisweDY2LCAweDg5LCAweGQwLCAweDY2LCAweDgxLCAweGUxLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweDAxLCAweGM4LCAweGViLCAweDAzLCAweDY2LAorMHgzMSwgMHhjMCwgMHg2NiwgMHhlOCwgMHgzMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg1ZSwgMHg1YiwgMHhjMywgMHg1MywgMHg1NiwgMHg1NywgMHhlOCwKKzB4NmEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjQsIDB4ODgsIDB4Y2QsIDB4MTUsIDB4NjYsIDB4MjUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ZTgsCisweDE3LCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDVlLCAweDViLCAweGMzLCAweGU4LCAweDUxLCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDEyLCAweDg5LAorMHhjMSwgMHg2NiwgMHhlOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHg4OSwgMHhjOCwgMHhjMywgMHhmYSwgMHgyZSwgMHg2NywgMHgwZiwgMHgwMSwKKzB4MTUsIDB4YjQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MGYsIDB4MjAsIDB4YzAsIDB4NjYsIDB4ODMsIDB4YzgsIDB4MDEsIDB4MGYsIDB4MjIsIDB4YzAsIDB4NjYsCisweGVhLCAweDM3LCAweDAyLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweGI4LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDhlLCAweGQ4LCAweDhlLCAweGMwLAorMHg4ZSwgMHhkMCwgMHg4MSwgMHhjNCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzMSwgMHhjMCwgMHg4ZSwgMHhlMCwgMHg4ZSwgMHhlOCwgMHg1OCwgMHgwNSwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MmUsIDB4MGYsIDB4MDEsIDB4MWQsIDB4YWUsIDB4MDIsIDB4MDEsIDB4MDAsIDB4YzMsIDB4NTgsIDB4MmQsCisweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDUwLCAweDgxLCAweGVjLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGVhLCAweDcyLCAweDAyLCAweDAwLCAweDAwLAorMHgwOCwgMHgwMCwgMHgwZiwgMHgyMCwgMHhjMCwgMHg2NiwgMHg4MywgMHhlMCwgMHhmZSwgMHgwZiwgMHgyMiwgMHhjMCwgMHg2NiwgMHhlYSwgMHg4NCwgMHgwMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OGMsIDB4YzgsIDB4OGUsIDB4ZDgsIDB4OGUsIDB4YzAsIDB4OGUsIDB4ZDAsIDB4OGUsIDB4ZTAsIDB4OGUsIDB4ZTgsCisweDJlLCAweDY3LCAweDBmLCAweDAxLCAweDFkLCAweGE4LCAweDAyLCAweDAwLCAweDAwLCAweGZiLCAweDY2LCAweGMzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAxLCAweDliLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDlhLAorMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MiwgMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5MywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWEsCisweGNmLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDkyLCAweGNmLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDIwLCAweDAyLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YSwKKzB4YWYsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTIsIDB4Y2YsIDB4MDAsIDB4NTUsIDB4ODksIDB4YzEsIDB4ODksIDB4ZTUsIDB4YmEsCisweGZkLCAweDAzLCAweDAwLCAweDAwLCAweGVjLCAweGE4LCAweDIwLCAweDc0LCAweGZiLCAweGJhLCAweGY4LCAweDAzLCAweDAwLCAweDAwLCAweDg4LCAweGM4LAorMHhlZSwgMHhiYSwgMHhmZCwgMHgwMywgMHgwMCwgMHgwMCwgMHhlYywgMHhhOCwgMHg0MCwgMHg3NCwgMHhmYiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4MywgMHhmOCwKKzB4MGEsIDB4ODksIDB4ZTUsIDB4NTMsIDB4ODksIDB4YzMsIDB4NzUsIDB4MGEsIDB4YjgsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4YzgsIDB4ZmYsCisweGZmLCAweGZmLCAweDg5LCAweGQ4LCAweDViLCAweDVkLCAweGViLCAweGMyLCAweDU1LCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDgzLCAweGVjLAorMHg0NCwgMHg4ZCwgMHg1ZCwgMHgwYywgMHg4YiwgMHg3ZCwgMHgwOCwgMHgwZiwgMHhiZSwgMHgwNywgMHg4NCwgMHhjMCwgMHgwZiwgMHg4NCwgMHg2OCwgMHgwMSwKKzB4MDAsIDB4MDAsIDB4M2MsIDB4MjUsIDB4NzQsIDB4MGQsIDB4ZTgsIDB4YzIsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4N2QsIDB4YmMsIDB4ZTksIDB4NGUsCisweDAxLCAweDAwLCAweDAwLCAweDhkLCAweDQ3LCAweDAxLCAweDg5LCAweDQ1LCAweGJjLCAweDhhLCAweDQ3LCAweDAxLCAweDNjLCAweDczLCAweDc1LCAweDFhLAorMHg4OSwgMHhkOCwgMHg4MywgMHhjMywgMHgwNCwgMHg4YiwgMHgzMCwgMHgwZiwgMHhiZSwgMHgwNiwgMHg4NCwgMHhjMCwgMHgwZiwgMHg4NCwgMHgyZiwgMHgwMSwKKzB4MDAsIDB4MDAsIDB4ZTgsIDB4OTYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NDYsIDB4ZWIsIDB4ZWQsIDB4M2MsIDB4NGMsIDB4NzUsIDB4MGQsIDB4OGQsIDB4NDcsCisweDAyLCAweGJlLCAweDNjLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDM4LCAweDNjLCAweDZjLCAweDc1LCAweDBkLCAweDhkLAorMHg0NywgMHgwMiwgMHhiZSwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiYywgMHhlYiwgMHgyNywgMHhiZSwgMHgxYywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4M2MsIDB4NjgsIDB4NzUsIDB4MWUsIDB4ODAsIDB4N2YsIDB4MDIsIDB4NjgsIDB4NzQsIDB4MGQsIDB4OGQsIDB4NDcsIDB4MDIsIDB4YmUsIDB4MGMsCisweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDBiLCAweDhkLCAweDQ3LCAweDAzLCAweGJlLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHg4OSwgMHg0NSwgMHhiYywgMHg4YiwgMHg0NSwgMHhiYywgMHg4YSwgMHgwMCwgMHg4OCwgMHhjMiwgMHg4MywgMHhjYSwgMHgyMCwgMHg4MCwgMHhmYSwgMHg3OCwKKzB4NzUsIDB4NWIsIDB4OGIsIDB4MTMsIDB4ODMsIDB4ZmUsIDB4MWMsIDB4N2UsIDB4MGUsIDB4OGIsIDB4NGIsIDB4MDQsIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksCisweDRkLCAweGI0LCAweDgzLCAweGMzLCAweDA4LCAweGViLCAweDBiLCAweDMxLCAweGM5LCAweDg5LCAweDU1LCAweGIwLCAweDg5LCAweDRkLCAweGI0LCAweDgzLAorMHhjMywgMHgwNCwgMHg4MywgMHhlMCwgMHgyMCwgMHg4ZCwgMHg3ZCwgMHhjOCwgMHg4OCwgMHg0NSwgMHhiYiwgMHg4OSwgMHhmMSwgMHg4YiwgMHg1NSwgMHhiNCwKKzB4OGIsIDB4NDUsIDB4YjAsIDB4MGYsIDB4YWQsIDB4ZDAsIDB4ZDMsIDB4ZWEsIDB4ZjYsIDB4YzEsIDB4MjAsIDB4NzQsIDB4MDIsIDB4ODksIDB4ZDAsIDB4ODMsCisweGUwLCAweDBmLCAweDhhLCAweDU1LCAweGJiLCAweDQ3LCAweDBhLCAweDkwLCAweDE0LCAweDEwLCAweDAxLCAweDAwLCAweDg4LCAweDU3LCAweGZmLCAweDgzLAorMHhlOSwgMHgwNCwgMHg3OSwgMHhkOSwgMHhjMSwgMHhlZSwgMHgwMiwgMHg4ZCwgMHg3NCwgMHgzNSwgMHhjOSwgMHhlYiwgMHg2MiwgMHgzYywgMHg2NCwgMHg3NSwKKzB4NGEsIDB4OGIsIDB4MDMsIDB4ODMsIDB4ZmUsIDB4MWMsIDB4N2UsIDB4MDUsIDB4ODMsIDB4YzMsIDB4MDgsIDB4ZWIsIDB4MDMsIDB4ODMsIDB4YzMsIDB4MDQsCisweDhkLCAweDRkLCAweGM4LCAweDg1LCAweGMwLCAweDc5LCAweDA5LCAweGM2LCAweDQ1LCAweGM4LCAweDJkLCAweDhkLCAweDRkLCAweGM5LCAweGY3LCAweGQ4LAorMHg4OSwgMHhjZSwgMHhiZiwgMHgwYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHg0NiwgMHhmNywgMHhmZiwgMHg4MywgMHhjMiwgMHgzMCwgMHg4NSwgMHhjMCwKKzB4ODgsIDB4NTYsIDB4ZmYsIDB4NzUsIDB4ZjIsIDB4ODksIDB4ZjAsIDB4NDgsIDB4MzksIDB4YzEsIDB4NzMsIDB4MjMsIDB4MGYsIDB4YjYsIDB4MzgsIDB4OGEsCisweDExLCAweDQxLCAweDg4LCAweDEwLCAweDg5LCAweGZhLCAweDg4LCAweDUxLCAweGZmLCAweGViLCAweGVjLCAweDNjLCAweDYzLCAweDc1LCAweDBhLCAweDhiLAorMHgwMywgMHg4MywgMHhjMywgMHgwNCwgMHg4OCwgMHg0NSwgMHhjOCwgMHhlYiwgMHgwMywgMHg4OCwgMHg0NSwgMHhjOCwgMHg4ZCwgMHg3NSwgMHhjOSwgMHg4ZCwKKzB4N2QsIDB4YzgsIDB4MzksIDB4ZjcsIDB4NzMsIDB4MGIsIDB4MGYsIDB4YmUsIDB4MDcsIDB4NDcsIDB4ZTgsIDB4NmUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZWIsCisweGYxLCAweDhiLCAweDdkLCAweGJjLCAweDQ3LCAweGU5LCAweDhkLCAweGZlLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDQ0LCAweDViLCAweDVlLCAweDVmLAorMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhjOSwgMHg4OSwgMHhlNSwgMHg1NiwgMHg1MywgMHgzMSwgMHhkYiwgMHg4MywgMHhlYywgMHgxMCwgMHgzOSwgMHhkMywKKzB4NzQsIDB4MjMsIDB4MGYsIDB4YjYsIDB4MzQsIDB4MTgsIDB4ZjYsIDB4YzMsIDB4MDEsIDB4NzQsIDB4MDMsIDB4YzEsIDB4ZTYsIDB4MDgsIDB4MDEsIDB4ZjEsCisweDgxLCAweGY5LCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc2LCAweDBhLCAweDg5LCAweGNlLCAweGMxLCAweGVlLCAweDEwLCAweDAxLCAweGYxLCAweDBmLAorMHhiNywgMHhjOSwgMHg0MywgMHhlYiwgMHhkOSwgMHg4OCwgMHg0ZCwgMHhmNiwgMHhjMSwgMHhlOSwgMHgwOCwgMHg4OCwgMHg0ZCwgMHhmNywgMHgwZiwgMHhiNywKKzB4NDUsIDB4ZjYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4NWIsIDB4NWUsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4ODksCisweGMzLCAweDUxLCAweDg5LCAweDU1LCAweGYwLCAweDNiLCAweDVkLCAweGYwLCAweDczLCAweDVmLCAweDgxLCAweDNiLCAweDRjLCAweDQyLCAweDQ5LCAweDRmLAorMHg3NCwgMHgwNSwgMHg4MywgMHhjMywgMHgxMCwgMHhlYiwgMHhlZSwgMHg4MywgMHg3YiwgMHgwNCwgMHgxOCwgMHg3NSwgMHhmNSwgMHhiYSwgMHgxOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4ODksIDB4ZDgsIDB4ZTgsIDB4ODksIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZjcsIDB4ZDAsIDB4NjYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4ZTIsCisweDhkLCAweDczLCAweDE4LCAweDhiLCAweDUzLCAweDBjLCAweDg5LCAweGYwLCAweGU4LCAweDc1LCAweGZmLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDBmLAorMHhiNywgMHhjMCwgMHgzOSwgMHg0MywgMHgxMCwgMHg3NSwgMHhjYiwgMHg4YiwgMHg0YiwgMHgwYywgMHgzMSwgMHhjMCwgMHgwMSwgMHhmMSwgMHgzOSwgMHhmMSwKKzB4NzYsIDB4MTAsIDB4ODksIDB4Y2YsIDB4OGIsIDB4NTYsIDB4MDQsIDB4MjksIDB4ZjcsIDB4MzksIDB4ZmEsIDB4NzcsIDB4MDUsIDB4NDAsIDB4MDEsIDB4ZDYsCisweGViLCAweGVjLCAweDM5LCAweDQzLCAweDE0LCAweDc1LCAweGFiLCAweGViLCAweDAyLCAweDMxLCAweGRiLCAweDVhLCAweDg5LCAweGQ4LCAweDViLCAweDVlLAorMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHhiYSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4OSwgMHhjMywKKzB4MzEsIDB4YzAsIDB4NTEsIDB4ZTgsIDB4NzEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MTcsIDB4YmEsIDB4MDAsIDB4MDAsIDB4MTAsCisweDAwLCAweGI4LCAweDAwLCAweDAwLCAweDBmLCAweDAwLCAweGU4LCAweDVlLCAweGZmLCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDA0LCAweDMxLAorMHhjMCwgMHhlYiwgMHgyZiwgMHg4YiwgMHg1MCwgMHgwNCwgMHgwMSwgMHhjMiwgMHg4MywgMHgzYSwgMHgxMSwgMHg3NSwgMHgxNiwgMHg4YiwgMHg3MiwgMHgwOCwKKzB4ODksIDB4ZjIsIDB4ODksIDB4ZjAsIDB4ODEsIDB4YzIsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4M2EsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsCisweGMwLCAweDc0LCAweGRjLCAweDg5LCAweDQzLCAweDI4LCAweGM3LCAweDQzLCAweDI0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGI4LCAweDAxLCAweDAwLAorMHgwMCwgMHgwMCwgMHg1YSwgMHg1YiwgMHg1ZSwgMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywKKzB4MTQsIDB4ODksIDB4NTUsIDB4ZTgsIDB4OGIsIDB4NzUsIDB4MGMsIDB4OGIsIDB4NWQsIDB4MDgsIDB4ODksIDB4NzUsIDB4ZTQsIDB4ODksIDB4NGQsIDB4ZWMsCisweDBmLCAweGI2LCAweGIwLCAweGU4LCAweDAxLCAweDAwLCAweDAwLCAweDg5LCAweDVkLCAweGUwLCAweDhiLCAweDdkLCAweDEwLCAweDgzLCAweGZlLCAweDFmLAorMHg3ZiwgMHgzMiwgMHg4OSwgMHhmMywgMHg2YiwgMHhmNiwgMHgxNCwgMHgwMSwgMHhjNiwgMHg0MywgMHg4OSwgMHg5NiwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwKKzB4ODksIDB4OGUsIDB4ZDQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTUsIDB4ZTAsIDB4OGIsIDB4NGQsIDB4ZTQsIDB4ODksIDB4OTYsIDB4ZDgsIDB4MDIsCisweDAwLCAweDAwLCAweDg5LCAweDhlLCAweGRjLCAweDAyLCAweDAwLCAweDAwLCAweDg5LCAweGJlLCAweGUwLCAweDAyLCAweDAwLCAweDAwLCAweDg4LCAweDk4LAorMHhlOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg3NSwgMHg2NSwgMHg4YiwgMHg1ZCwgMHhlMCwgMHg4YiwgMHg3NSwgMHhlNCwgMHgwMywgMHg1ZCwgMHhlOCwKKzB4MTMsIDB4NzUsIDB4ZWMsIDB4ODksIDB4ZDksIDB4ODksIDB4ZjMsIDB4YmUsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4ODEsIDB4ZmIsIDB4ZmYsIDB4MDMsCisweDAwLCAweDAwLCAweDc3LCAweDEzLCAweDBmLCAweGFjLCAweGQ5LCAweDBhLCAweDg5LCAweGNlLCAweDgxLCAweGY5LCAweGZmLCAweGZmLCAweDNmLCAweDAwLAorMHg3NiwgMHgwNSwgMHhiZSwgMHhmZiwgMHhmZiwgMHgzZiwgMHgwMCwgMHg4YiwgMHhiOCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg5NywgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MzksIDB4ZjIsIDB4NzMsIDB4MjUsIDB4OGQsIDB4OTYsIDB4MDAsIDB4ZmMsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4OTAsIDB4ZTAsCisweDAxLCAweDAwLCAweDAwLCAweDgxLCAweGZhLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc3LCAweDBiLCAweDY2LCAweDgxLCAweGVlLCAweDAwLCAweDA0LAorMHg2NiwgMHg4OSwgMHg3MCwgMHgwMiwgMHhlYiwgMHgwNiwgMHg2NiwgMHhjNywgMHg0MCwgMHgwMiwgMHgwMCwgMHhmYywgMHg4MywgMHhjNCwgMHgxNCwgMHg1YiwKKzB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NTUsIDB4MDgsIDB4ZWMsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsCisweDhiLCAweDU1LCAweDA4LCAweDY2LCAweGVkLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweGVkLCAweDVkLCAweGMzLAorMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgwOCwgMHg4YiwgMHg1NSwgMHgwYywgMHhlZSwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwKKzB4NDUsIDB4MDgsIDB4OGIsIDB4NTUsIDB4MGMsIDB4NjYsIDB4ZWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsCisweDU1LCAweDBjLCAweGVmLCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGMwLCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweDNiLCAweDQ1LCAweDBjLAorMHg3NCwgMHgwOSwgMHg4MCwgMHgzYywgMHgwMiwgMHgwMCwgMHg3NCwgMHgwMywgMHg0MCwgMHhlYiwgMHhmMiwgMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhkMiwKKzB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsIDB4NGQsIDB4MGMsIDB4M2IsIDB4NTUsIDB4MTAsIDB4NzQsIDB4MDYsIDB4ODgsIDB4MGMsIDB4MTAsCisweDQyLCAweGViLCAweGY1LCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGQyLCAweDg5LCAweGU1LCAweDUzLCAweDhiLCAweDQ1LCAweDA4LCAweDhiLCAweDRkLAorMHgwYywgMHgzYiwgMHg1NSwgMHgxMCwgMHg3NCwgMHgwOSwgMHg4YSwgMHgxYywgMHgxMSwgMHg4OCwgMHgxYywgMHgxMCwgMHg0MiwgMHhlYiwgMHhmMiwgMHg1YiwKKzB4NWQsIDB4YzMsIDB4NTUsIDB4MzEsIDB4YzksIDB4ODksIDB4ZTUsIDB4M2IsIDB4NGQsIDB4MTAsIDB4NzQsIDB4MTcsIDB4OGIsIDB4NDUsIDB4MDgsIDB4MGYsCisweGI2LCAweDEwLCAweDhiLCAweDQ1LCAweDBjLCAweDBmLCAweGI2LCAweDAwLCAweDM4LCAweGMyLCAweDc0LCAweDA0LCAweDI5LCAweGQwLCAweGViLCAweDA1LAorMHg0MSwgMHhlYiwgMHhlNCwgMHgzMSwgMHhjMCwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4YiwgMHg0NSwgMHgwOCwKKzB4NjgsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NGQsIDB4MTAsIDB4OGQsIDB4OTgsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NTMsIDB4ZTgsCisweDcxLCAweGZmLCAweGZmLCAweGZmLCAweDAxLCAweGMzLCAweDVlLCAweDgxLCAweGY5LCAweGZlLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDhkLCAweDczLAorMHgwMSwgMHhjNiwgMHgwMywgMHgyMCwgMHg3ZSwgMHgwNSwgMHhiOSwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHhmZiwgMHg3NSwgMHgwYywgMHhlOCwKKzB4NTEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NWEsIDB4NTksIDB4NTAsIDB4ZmYsIDB4NzUsIDB4MGMsIDB4ODksIDB4YzcsIDB4NTYsIDB4ZTgsIDB4NzMsIDB4ZmYsCisweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDBjLCAweGM2LCAweDQ0LCAweDNiLCAweDAxLCAweDAwLCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLAorMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgxMCwgMHg4YiwgMHg1NSwgMHgwYywgMHg4OSwgMHg0NSwgMHgwYywgMHg4YiwgMHg0NSwKKzB4MDgsIDB4ODksIDB4NTUsIDB4MTAsIDB4OGIsIDB4NDAsIDB4MTAsIDB4ODksIDB4NDUsIDB4MDgsIDB4NWQsIDB4ZWIsIDB4OGEsIDB4NTUsIDB4ODksIDB4ZTUsCisweDU3LCAweDU2LCAweDUzLCAweDhiLCAweDVkLCAweDA4LCAweDY4LCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDZhLCAweDAwLCAweGZmLCAweDczLCAweDEwLAorMHhlOCwgMHgxOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywgMHgxMCwgMHhjNywgMHg0MCwgMHgwZSwgMHgxOSwgMHgwMSwgMHgxMCwgMHgwMCwgMHhjNywKKzB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4YzYsIDB4ODAsIDB4ZTgsIDB4MDEsCisweDAwLCAweDAwLCAweDAwLCAweDhkLCAweGI4LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDY2LCAweGM3LCAweDQwLCAweDBhLCAweDAwLCAweDAwLCAweGM3LAorMHg0MCwgMHgyMCwgMHgzZiwgMHhhMywgMHgwMCwgMHgwOCwgMHg4OSwgMHhiOCwgMHgyOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4YiwgMHg0MywgMHgwYywgMHg2OCwKKzB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4NDgsIDB4MjgsIDB4NTEsIDB4ZTgsIDB4YjgsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4NWEsIDB4NWUsIDB4ODksCisweGM2LCAweDUwLCAweDUxLCAweDU3LCAweGU4LCAweGRjLCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDQzLCAweDEwLCAweDgzLCAweGMwLCAweDQwLCAweGM2LAorMHg4NCwgMHgzMCwgMHhjMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2YSwgMHg0MCwgMHg2YSwgMHgwMCwgMHg1MCwgMHhlOCwgMHhhYywgMHhmZSwgMHhmZiwKKzB4ZmYsIDB4ODMsIDB4YzQsIDB4MjQsIDB4OGIsIDB4NDMsIDB4MTAsIDB4ODMsIDB4ZTgsIDB4ODAsIDB4NmEsIDB4MjAsIDB4NmEsIDB4MDAsIDB4NTAsIDB4ZTgsCisweDk5LCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDUzLCAweDBjLCAweDhiLCAweDQzLCAweDEwLCAweDA1LCAweDAyLCAweDAyLCAweDAwLCAweDAwLCAweDhiLAorMHg0YSwgMHgxNCwgMHg2NiwgMHg4YiwgMHg1MiwgMHgxNiwgMHg2NiwgMHg4OSwgMHg0OCwgMHhmNiwgMHg2NiwgMHg4OSwgMHg1MCwgMHhmYSwgMHg2NiwgMHhjNywKKzB4ODAsIDB4OWUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDAsIDB4ZGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzcsCisweDgwLCAweDAwLCAweGZlLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweGM3LCAweDQwLCAweGYwLCAweGZmLCAweGZmLCAweGM2LCAweDQwLCAweGZkLAorMHgwMCwgMHg2YSwgMHgwNCwgMHg2OCwgMHgyNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHhlOCwgMHg2NywgMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywKKzB4MTAsIDB4NjYsIDB4YzcsIDB4ODAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDAsIDB4ODMsIDB4YzQsIDB4MTgsIDB4OGIsIDB4NGIsIDB4MGMsCisweDY2LCAweGM3LCAweDgwLCAweDA2LCAweDAyLCAweDAwLCAweDAwLCAweDAxLCAweDAyLCAweGM3LCAweDgwLCAweDE4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhjNywgMHg4MCwgMHgxYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHg1MSwgMHgyNCwKKzB4ODUsIDB4ZDIsIDB4NzQsIDB4MGYsIDB4OGIsIDB4NDksIDB4MjAsIDB4ODksIDB4OTAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODksIDB4ODgsIDB4MTgsCisweDAyLCAweDAwLCAweDAwLCAweGM3LCAweDQzLCAweDJjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLAorMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywgMHg0YywgMHhjNywgMHg0NSwgMHhjOCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4MDAsIDB4OGIsIDB4NDUsIDB4MDgsIDB4ODksIDB4NDUsIDB4YjgsIDB4OGIsIDB4NDUsIDB4MGMsIDB4ODksIDB4NDUsIDB4YmMsIDB4OGIsIDB4NDUsCisweDEwLCAweDg5LCAweDQ1LCAweGMwLCAweDhiLCAweDQ1LCAweDE0LCAweDg5LCAweDQ1LCAweGM0LCAweDhkLCAweDQ1LCAweGI4LCAweDUwLCAweGU4LCAweDlhLAorMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0NSwgMHhiOCwgMHg1OSwgMHgzZCwgMHgwMiwgMHhiMCwgMHhhZCwgMHgyYiwgMHg3NSwgMHgwOSwgMHhjNywgMHg0NSwKKzB4Y2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4MjEsIDB4MzEsIDB4ZjYsIDB4M2QsIDB4MDcsIDB4YjAsIDB4MTEsIDB4MGEsIDB4NzUsIDB4MmMsCisweDhiLCAweDQ1LCAweGJjLCAweDhiLCAweDEwLCAweGU4LCAweDU4LCAweGZiLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDY2LCAweDg1LCAweGMwLCAweDc1LAorMHgwZSwgMHhjNywgMHg0NSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHgwZCwgMHg1MCwKKzB4NjgsIDB4MmEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YWUsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4NTgsIDB4NWEsIDB4MzEsIDB4ZGIsIDB4ODEsIDB4N2QsCisweGI4LCAweDA3LCAweGIwLCAweDFmLCAweDBlLCAweDc1LCAweDAzLCAweDhiLCAweDVkLCAweGJjLCAweDhiLCAweDQ1LCAweGMwLCAweDg1LCAweGMwLCAweDc0LAorMHgwYSwgMHg4MSwgMHgzOCwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgwMiwgMHg4OSwgMHhjMywgMHg4NSwgMHhmNiwgMHgwZiwgMHg4NSwgMHhjZSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4ZGIsIDB4MGYsIDB4ODQsIDB4YzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ODMsIDB4N2IsIDB4MDgsIDB4MDAsCisweDc0LCAweDBmLCAweDhiLCAweDUzLCAweDA0LCAweDg5LCAweGQ4LCAweGU4LCAweGY2LCAweGZhLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDBmLCAweGI3LAorMHhmMCwgMHg4YiwgMHg0YiwgMHgwNCwgMHg4ZCwgMHg0MywgMHgwYywgMHgwMSwgMHhkOSwgMHgzMSwgMHhmZiwgMHg4OSwgMHg0ZCwgMHhiNCwgMHgzOSwgMHg0NSwKKzB4YjQsIDB4NzYsIDB4MWYsIDB4OGIsIDB4MDgsIDB4OGIsIDB4NTAsIDB4MDQsIDB4ODMsIDB4YzEsIDB4MDMsIDB4ODMsIDB4YzIsIDB4MDMsIDB4ODMsIDB4ZTEsCisweGZjLCAweDgzLCAweGUyLCAweGZjLCAweDhkLCAweDU0LCAweDExLCAweDBjLCAweDAxLCAweGQwLCAweDM5LCAweDQ1LCAweGI0LCAweDcyLCAweDAzLCAweDQ3LAorMHhlYiwgMHhkYywgMHg4MSwgMHgzYiwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgxYiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxNywgMHgwZiwgMHhiNywKKzB4NDMsIDB4MGEsIDB4MzksIDB4ZjgsIDB4NzUsIDB4MGYsIDB4YzcsIDB4NDUsIDB4ZDQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4NWQsIDB4YzAsCisweGU5LCAweDk1LCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDY4LCAweDRkLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweDA4LCAweGY5LCAweGZmLCAweGZmLAorMHg1NiwgMHg2OCwgMHg2NywgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhmZCwgMHhmOCwgMHhmZiwgMHhmZiwgMHg1NywgMHg2OCwgMHg3OSwgMHgxMCwgMHgwMSwKKzB4MDAsIDB4ZTgsIDB4ZjIsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4NTMsIDB4NjgsIDB4OGIsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZTcsIDB4ZjgsIDB4ZmYsCisweGZmLCAweDgzLCAweGM0LCAweDIwLCAweGZmLCAweDczLCAweDA0LCAweDY4LCAweDlkLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGQ3LCAweGY4LCAweGZmLAorMHhmZiwgMHhmZiwgMHgzMywgMHg2OCwgMHhhZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhjYiwgMHhmOCwgMHhmZiwgMHhmZiwgMHgwZiwgMHhiNywgMHg0MywKKzB4MGEsIDB4NTAsIDB4NjgsIDB4YzEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YmMsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTgsIDB4ZWIsCisweDA0LCAweDg1LCAweGY2LCAweDc1LCAweDM1LCAweDUxLCAweDY4LCAweGQzLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGE4LCAweGY4LCAweGZmLCAweGZmLAorMHhmZiwgMHg3NSwgMHhiOCwgMHg2OCwgMHhlZSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHg5YiwgMHhmOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg3NSwgMHhiYywKKzB4NjgsIDB4ZjcsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4OGUsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NzUsIDB4YzAsIDB4NjgsIDB4MDAsIDB4MTEsCisweDAxLCAweDAwLCAweGU4LCAweDgxLCAweGY4LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDIwLCAweGM3LCAweDQ1LCAweGQ4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHhjNywgMHg0NSwgMHhkYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MywgMHg3ZCwgMHhkNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhmYywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4OGIsIDB4N2QsIDB4YzAsIDB4OGQsIDB4NTcsIDB4MGMsIDB4MDMsIDB4N2YsIDB4MDQsIDB4MzksIDB4ZDcsIDB4NzYsIDB4NTEsIDB4OGIsCisweDMyLCAweDhiLCAweDVhLCAweDA0LCAweDg5LCAweDVkLCAweGI0LCAweDgzLCAweGMzLCAweDAzLCAweDhkLCAweDRlLCAweDAzLCAweDgzLCAweGUzLCAweGZjLAorMHg4MywgMHhlMSwgMHhmYywgMHg4ZCwgMHg0MiwgMHgwYywgMHgwMSwgMHhjYiwgMHgwMSwgMHhjMywgMHgzOSwgMHhkZiwgMHg3MiwgMHgzMiwgMHg4MywgMHg3YSwKKzB4MDgsIDB4MDEsIDB4NzUsIDB4MjgsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MjQsIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksIDB4NGQsIDB4YWMsIDB4NTIsIDB4NmEsCisweDAwLCAweDZhLCAweDAwLCAweDUwLCAweGU4LCAweDI5LCAweGZjLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg5LCAweGM2LCAweDg1LCAweGMwLAorMHg4YiwgMHg1NSwgMHhiMCwgMHg4YiwgMHg0ZCwgMHhhYywgMHgwZiwgMHg4NCwgMHgxZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4OSwgMHhkYSwgMHhlYiwgMHhhYiwKKzB4MzEsIDB4ZDIsIDB4MzEsIDB4ZmYsIDB4MzEsIDB4ZjYsIDB4ODUsIDB4ZDIsIDB4MGYsIDB4OTUsIDB4YzMsIDB4ZjcsIDB4YzYsIDB4MDEsIDB4MDAsIDB4MDAsCisweDAwLCAweDc1LCAweDM0LCAweDg0LCAweGRiLCAweDc0LCAweDMwLCAweDMxLCAweGY2LCAweDgzLCAweDdhLCAweDA0LCAweDBhLCAweDc1LCAweDI4LCAweDg5LAorMHg1NSwgMHhiNCwgMHg1MCwgMHg2YSwgMHgwYSwgMHg2OCwgMHgzNSwgMHgxMSwgMHgwMSwgMHgwMCwgMHg1NywgMHhlOCwgMHhlMiwgMHhmYiwgMHhmZiwgMHhmZiwKKzB4ODMsIDB4YzQsIDB4MTAsIDB4OGIsIDB4NTUsIDB4YjQsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MGQsIDB4OGQsIDB4NDUsIDB4YjgsIDB4ZTgsIDB4MTEsIDB4ZmEsCisweGZmLCAweGZmLCAweDhiLCAweDU1LCAweGI0LCAweDg5LCAweGM2LCAweDg1LCAweGY2LCAweDc1LCAweDBmLCAweDg0LCAweGRiLCAweDc0LCAweDBiLCAweDMxLAorMHhjMCwgMHg4MywgMHg3YSwgMHgwNCwgMHgwMCwgMHgwZiwgMHg5NCwgMHhjMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgyNSwgMHg4NCwgMHhkYiwKKzB4NzQsIDB4MjEsIDB4ODMsIDB4N2EsIDB4MDQsIDB4MDEsIDB4NzUsIDB4MWIsIDB4NTAsIDB4NmEsIDB4MDEsIDB4NjgsIDB4NjYsIDB4MTAsIDB4MDEsIDB4MDAsCisweDU3LCAweGU4LCAweDljLCAweGZiLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg1LCAweGMwLCAweDBmLCAweDk0LCAweGMwLCAweDBmLCAweGI2LAorMHhjMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxMywgMHg4NCwgMHhkYiwgMHg3NCwgMHgwZiwgMHg1NywgMHg2OCwgMHgwYSwgMHgxMSwgMHgwMSwKKzB4MDAsIDB4ZTgsIDB4NzIsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NWYsIDB4NTgsIDB4ZWIsIDB4MDQsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MTMsIDB4OGQsIDB4NDUsCisweGI4LCAweGU4LCAweGFkLCAweGY5LCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDA3LCAweGM3LCAweDQ1LCAweGQ4LCAweDAxLCAweDAwLCAweDAwLAorMHgwMCwgMHg1MSwgMHg2OCwgMHgyNSwgMHgxMSwgMHgwMSwgMHgwMCwgMHhlOCwgMHg0YywgMHhmNywgMHhmZiwgMHhmZiwgMHg1YiwgMHg4MywgMHg3ZCwgMHhkYywKKzB4MDAsIDB4NWUsIDB4NzQsIDB4MGQsIDB4NTAsIDB4NjgsIDB4MzQsIDB4MTEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MzksIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NTgsCisweDVhLCAweDgzLCAweDdkLCAweGQ4LCAweDAwLCAweDc0LCAweDBkLCAweDUzLCAweDY4LCAweDNmLCAweDExLCAweDAxLCAweDAwLCAweGU4LCAweDI2LCAweGY3LAorMHhmZiwgMHhmZiwgMHg1ZSwgMHg1ZiwgMHg1MCwgMHg2OCwgMHg2NSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHgxOSwgMHhmNywgMHhmZiwgMHhmZiwgMHg1YSwKKzB4ODMsIDB4N2QsIDB4ZGMsIDB4MDAsIDB4NTksIDB4NzUsIDB4MzEsIDB4ODMsIDB4N2QsIDB4ZDgsIDB4MDAsIDB4MGYsIDB4ODQsIDB4MTYsIDB4MDEsIDB4MDAsCisweDAwLCAweDUwLCAweDUwLCAweDZhLCAweDIwLCAweDY4LCAweGM0LCAweDU1LCAweDAxLCAweDAwLCAweGU4LCAweGJiLCAweGY0LCAweGZmLCAweGZmLCAweGJiLAorMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHhhMywgMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg4MywgMHhjNCwgMHgxMCwgMHhjNywgMHg0NSwgMHhiNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ZTksIDB4YWEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NDUsIDB4ZTAsIDB4OGQsIDB4NTgsIDB4MTgsIDB4OGIsIDB4NDgsCisweDBjLCAweDAxLCAweGQ5LCAweDg5LCAweDRkLCAweGI0LCAweDM5LCAweDVkLCAweGI0LCAweDc2LCAweGJjLCAweDhiLCAweDU1LCAweGI0LCAweDhiLCAweDQzLAorMHgwNCwgMHgyOSwgMHhkYSwgMHgzOSwgMHhkMCwgMHg3NywgMHhiMCwgMHg4MywgMHgzYiwgMHgwMSwgMHg3NSwgMHg0ZiwgMHg4MywgMHhlOCwgMHgwOCwgMHhiOSwKKzB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzEsIDB4ZDIsIDB4OGQsIDB4NzMsIDB4MDgsIDB4ZjcsIDB4ZjEsIDB4ODksIDB4NDUsIDB4YjAsIDB4MzEsIDB4ZmYsCisweDM5LCAweDdkLCAweGIwLCAweDdlLCAweDJmLCAweDgzLCAweGZmLCAweDFmLCAweDdmLCAweDJhLCAweDMxLCAweGMwLCAweDhiLCAweDE2LCAweDgzLCAweDdlLAorMHgxMCwgMHgwMSwgMHgwZiwgMHg5NSwgMHhjMCwgMHg4MywgMHhlYywgMHgwNCwgMHg0MCwgMHg4YiwgMHg0ZSwgMHgwNCwgMHg0NywgMHg1MCwgMHg4YiwgMHg0NSwKKzB4YzgsIDB4ZmYsIDB4NzYsIDB4MGMsIDB4ZmYsIDB4NzYsIDB4MDgsIDB4ODMsIDB4YzYsIDB4MTQsIDB4ZTgsIDB4MjksIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4ODMsCisweGM0LCAweDEwLCAweGViLCAweGNjLCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDViLCAweDA0LCAweGViLCAweDk2LAorMHg4YiwgMHg0MywgMHgxNCwgMHg4YiwgMHg1MywgMHgwNCwgMHg4YiwgMHg0YiwgMHgwOCwgMHg4YiwgMHg3MywgMHgwYywgMHg4YiwgMHg3YiwgMHgxMCwgMHg4MywKKzB4ZjgsIDB4MDEsIDB4NzUsIDB4MDcsIDB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4ZWMsIDB4MDQsIDB4ODMsIDB4YzMsCisweDE0LCAweDUwLCAweDhiLCAweDQ1LCAweGIwLCAweDU3LCAweDU2LCAweGU4LCAweGVjLCAweGY4LCAweGZmLCAweGZmLCAweGZmLCAweDQ1LCAweGI0LCAweDgzLAorMHhjNCwgMHgxMCwgMHg4YiwgMHg0NSwgMHhiNCwgMHgzYiwgMHgwNSwgMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg4YiwgMHg0NSwgMHhjOCwgMHg4OSwgMHg0NSwKKzB4YjAsIDB4N2MsIDB4YmQsIDB4ZTgsIDB4M2IsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4N2QsIDB4YjAsIDB4ODksIDB4ODcsIDB4ZTAsIDB4MDEsIDB4MDAsCisweDAwLCAweDhiLCAweDVkLCAweGM4LCAweGU4LCAweDczLCAweGY0LCAweGZmLCAweGZmLCAweDY2LCAweDg5LCAweDQzLCAweDAyLCAweDhiLCAweDQ1LCAweGM4LAorMHg4MywgMHhiOCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHgwNywgMHg2NiwgMHg4MywgMHg3OCwgMHgwMiwgMHgwMCwgMHg3NCwgMHgwNywKKzB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4N2QsIDB4Y2MsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YjksIDB4MDAsIDB4MDAsCisweDAwLCAweDhiLCAweDc1LCAweGJjLCAweDhiLCAweDU1LCAweGM4LCAweDgzLCAweDdkLCAweGU0LCAweDAwLCAweDhiLCAweDFlLCAweDc0LCAweDRkLCAweGY2LAorMHhjMywgMHgwMSwgMHg3NCwgMHg0OCwgMHg4YiwgMHg0NiwgMHgwOCwgMHgwNSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzZCwgMHhmZiwgMHhmZiwgMHgzZiwKKzB4MDAsIDB4NzYsIDB4MDUsIDB4YjgsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4OGIsIDB4YmEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGQsIDB4OGYsCisweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDM5LCAweGMxLCAweDczLCAweDI0LCAweDhkLCAweDg4LCAweDAwLCAweGZjLCAweGZmLCAweGZmLCAweDg5LCAweDhhLAorMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MSwgMHhmOSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg3NywgMHgwYSwgMHg2NiwgMHgyZCwgMHgwMCwgMHgwNCwKKzB4NjYsIDB4ODksIDB4NDIsIDB4MDIsIDB4ZWIsIDB4MDYsIDB4NjYsIDB4YzcsIDB4NDIsIDB4MDIsIDB4MDAsIDB4ZmMsIDB4ODAsIDB4ZTMsIDB4MDQsIDB4NzQsCisweDBmLCAweDUwLCAweDZhLCAweGZmLCAweGZmLCAweDc2LCAweDEwLCAweDUyLCAweGU4LCAweGFhLCAweGY5LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLAorMHg4MywgMHg3ZCwgMHhlNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhiZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhmNiwgMHgwNiwgMHg0MCwgMHgwZiwgMHg4NCwgMHhiNCwKKzB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NWUsIDB4MzAsIDB4OGIsIDB4NDYsIDB4MmMsIDB4MDEsIDB4ZDgsIDB4OGIsIDB4N2QsIDB4YzgsIDB4ODksIDB4NDUsCisweGI0LCAweDhiLCAweDczLCAweGZjLCAweDM5LCAweDVkLCAweGI0LCAweDBmLCAweDg2LCAweDlhLCAweDAxLCAweDAwLCAweDAwLCAweDhiLCAweDEzLCAweDhiLAorMHg0YiwgMHgwNCwgMHg1MCwgMHg4OSwgMHhmOCwgMHhmZiwgMHg3MywgMHgxMCwgMHhmZiwgMHg3MywgMHgwYywgMHhmZiwgMHg3MywgMHgwOCwgMHgwMSwgMHhmMywKKzB4ZTgsIDB4ZTMsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ZWIsIDB4ZGEsIDB4ODMsIDB4N2QsIDB4ZDAsIDB4MDAsIDB4MGYsIDB4ODQsCisweGFhLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDc1LCAweGJjLCAweDhiLCAweDQ2LCAweDBjLCAweDg1LCAweGMwLCAweDc0LCAweDEwLCAweDUyLCAweDUwLAorMHhmZiwgMHg3NiwgMHgwOCwgMHhmZiwgMHg3NSwgMHhjOCwgMHhlOCwgMHgzYywgMHhmOSwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg0NiwKKzB4MTQsIDB4OGIsIDB4NWUsIDB4MTAsIDB4ODksIDB4NDUsIDB4YjQsIDB4ODMsIDB4N2QsIDB4YjQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4NDYsIDB4MDEsIDB4MDAsCisweDAwLCAweDgzLCAweDNiLCAweDAxLCAweDc1LCAweDZiLCAweDgzLCAweDdkLCAweGU0LCAweDAwLCAweDc0LCAweDY1LCAweDhiLCAweDQ1LCAweGM4LCAweGI5LAorMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiMCwgMHg4YiwgMHg0MywgMHgwNCwgMHg4MywgMHhlOCwgMHgwOCwgMHgzMSwgMHhkMiwgMHhmNywKKzB4ZjEsIDB4ODksIDB4NDUsIDB4YWMsIDB4OGQsIDB4NzMsIDB4MDgsIDB4MzEsIDB4ZmYsIDB4MzksIDB4N2QsIDB4YWMsIDB4N2UsIDB4M2MsIDB4ODMsIDB4ZmYsCisweDFmLCAweDdmLCAweDM3LCAweDhiLCAweDQ2LCAweDEwLCAweDhkLCAweDUwLCAweGZmLCAweGI4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDgzLCAweGZhLAorMHgwMywgMHg3NywgMHgwNywgMHgwZiwgMHhiNiwgMHg4MiwgMHgxMCwgMHgxMCwgMHgwMSwgMHgwMCwgMHg4MywgMHhlYywgMHgwNCwgMHg4YiwgMHgxNiwgMHg4YiwKKzB4NGUsIDB4MDQsIDB4NDcsIDB4NTAsIDB4OGIsIDB4NDUsIDB4YjAsIDB4ZmYsIDB4NzYsIDB4MGMsIDB4ZmYsIDB4NzYsIDB4MDgsIDB4ODMsIDB4YzYsIDB4MTQsCisweGU4LCAweDQzLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweGViLCAweGJmLCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4YiwgMHg0MywgMHgwNCwgMHgwMSwgMHhjMywgMHgyOSwgMHg0NSwgMHhiNCwgMHhlOSwgMHg3OSwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4MywgMHg3ZCwKKzB4ZDQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTUsIDB4YzAsIDB4OGIsIDB4N2EsIDB4MDQsIDB4OGQsIDB4NDIsCisweDBjLCAweDAxLCAweGQ3LCAweDM5LCAweGM3LCAweDBmLCAweDg2LCAweGFjLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDEwLCAweDhkLCAweDQ4LCAweDBjLAorMHg4ZCwgMHg1YSwgMHgwMywgMHg4MywgMHhlMywgMHhmYywgMHg4ZCwgMHgzNCwgMHgxOSwgMHg4YiwgMHg1OCwgMHgwNCwgMHg4OSwgMHg3NSwgMHhiNCwgMHg4ZCwKKzB4NzMsIDB4MDMsIDB4ODMsIDB4ZTYsIDB4ZmMsIDB4MDMsIDB4NzUsIDB4YjQsIDB4ODksIDB4NzUsIDB4YjAsIDB4MzksIDB4ZjcsIDB4MGYsIDB4ODIsIDB4ODQsCisweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDM1LCAweDcwLCAweDE0LCAweDAxLCAweDAwLCAweDhiLCAweDQwLCAweDA4LCAweDg5LCAweDc1LCAweGFjLCAweDM5LAorMHgwNSwgMHg3OCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgzNSwgMHg3NCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg3NSwgMHgyNywgMHgzYiwgMHg1NSwgMHhhYywKKzB4NzUsIDB4MjIsIDB4NTAsIDB4NTIsIDB4NTYsIDB4NTEsIDB4ZTgsIDB4MTcsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ODUsIDB4YzAsCisweDc1LCAweDEyLCAweDUyLCAweDhkLCAweDQ1LCAweGI4LCAweGZmLCAweDc1LCAweGI0LCAweDUzLCAweDUwLCAweGZmLCAweDE1LCAweDdjLCAweDE0LCAweDAxLAorMHgwMCwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg0NSwgMHhiMCwgMHhlYiwgMHg4YSwgMHg4ZCwgMHg3YywgMHgwYSwgMHgwYywgMHg4MywgMHg3ZCwgMHhiNCwKKzB4MDcsIDB4MGYsIDB4ODUsIDB4ZGYsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4NTUsIDB4YjQsIDB4NTAsIDB4NmEsIDB4MDcsIDB4NjgsIDB4NDAsIDB4MTEsCisweDAxLCAweDAwLCAweDU3LCAweGU4LCAweGRhLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDhiLCAweDU1LCAweGI0LCAweDg1LCAweGMwLAorMHgwZiwgMHg4NSwgMHhjMCwgMHhmYiwgMHhmZiwgMHhmZiwgMHhjNywgMHg0NSwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4ZTksIDB4YWYsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4YjAsIDB4ODAsIDB4ZTYsIDB4NzAsIDB4MzEsIDB4YzAsIDB4ZTYsIDB4ZjAsIDB4ZTYsCisweGYxLCAweGIwLCAweDExLCAweGU2LCAweDIwLCAweGU2LCAweGEwLCAweGIwLCAweDIwLCAweGU2LCAweDIxLCAweGIwLCAweDI4LCAweGU2LCAweGExLCAweGIwLAorMHgwNCwgMHhlNiwgMHgyMSwgMHhiMCwgMHgwMiwgMHhlNiwgMHhhMSwgMHhiMCwgMHgwMSwgMHhlNiwgMHgyMSwgMHhlNiwgMHhhMSwgMHhiMCwgMHhmZiwgMHhlNiwKKzB4YTEsIDB4YjAsIDB4ZmIsIDB4ZTYsIDB4MjEsIDB4OGIsIDB4NDUsIDB4YzgsIDB4OGQsIDB4NjUsIDB4ZjQsIDB4NWIsIDB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsCisweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDMwLCAweDMxLCAweDMyLCAweDMzLCAweDM0LCAweDM1LCAweDM2LCAweDM3LCAweDM4LCAweDM5LCAweDQxLCAweDQyLAorMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHgwMCwgMHg0OCwgMHg2NCwgMHg3MiwgMHg1MywgMHgwMCwgMHg0MiwgMHg2MSwgMHg2NCwgMHgyMCwgMHg3NSwgMHg2ZSwKKzB4NjksIDB4NjYsIDB4NmYsIDB4NzIsIDB4NmQsIDB4MjAsIDB4NjIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4MjAsIDB4NjgsIDB4NjUsIDB4NjEsIDB4NjQsIDB4NjUsCisweDcyLCAweDIwLCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZiLCAweDczLCAweDc1LCAweDZkLCAweDIxLCAweDBhLCAweDAwLCAweDQyLCAweDYxLCAweDY0LAorMHgyMCwgMHg0NSwgMHg0YywgMHg0NiwgMHgyMCwgMHg3MCwgMHg2MSwgMHg3MiwgMHg2MSwgMHg2ZCwgMHg2NSwgMHg3NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg3NCwKKzB4NjEsIDB4NjIsIDB4NmMsIDB4NjUsIDB4MjEsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4NjMsIDB4NjgsIDB4NjUsIDB4NjMsIDB4NmIsIDB4NzMsCisweDc1LCAweDZkLCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDYzLAorMHg2ZiwgMHg3NSwgMHg2ZSwgMHg3NCwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKzB4MjAsIDB4MjAsIDB4MjAsIDB4NjgsIDB4NjQsIDB4NzIsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsCisweDIwLCAweDIwLCAweDYyLCAweDVmLCAweDczLCAweDY5LCAweDdhLCAweDY1LCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDYyLAorMHg1ZiwgMHg3MywgMHg2OSwgMHg2NywgMHg2ZSwgMHg2MSwgMHg3NCwgMHg3NSwgMHg3MiwgMHg2NSwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwKKzB4MDAsIDB4MjAsIDB4MjAsIDB4NjIsIDB4NWYsIDB4NzIsIDB4NjUsIDB4NjMsIDB4NmYsIDB4NzIsIDB4NjQsIDB4NzMsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsCisweDc4LCAweDBhLCAweDAwLCAweDU1LCAweDZlLCAweDZiLCAweDZlLCAweDZmLCAweDc3LCAweDZlLCAweDIwLCAweDYyLCAweDZmLCAweDZmLCAweDc0LCAweDZjLAorMHg2ZiwgMHg2MSwgMHg2NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg2MywgMHg2YywgMHg2MSwgMHg3MywgMHg3MywgMHgyMSwgMHgwYSwgMHgwMCwgMHg3NCwgMHg3OSwKKzB4NzAsIDB4NjUsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4NjQsIDB4NjEsIDB4NzQsIDB4NjEsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsCisweDcwLCAweDYxLCAweDcyLCAweDYxLCAweDZkLCAweDNkLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDU1LCAweDZlLCAweDZiLCAweDZlLCAweDZmLCAweDc3LAorMHg2ZSwgMHgyMCwgMHg2NiwgMHg2OSwgMHg3MiwgMHg2ZCwgMHg3NywgMHg2MSwgMHg3MiwgMHg2NSwgMHgyMCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgzYSwKKzB4MjAsIDB4MjUsIDB4NzMsIDB4MGEsIDB4MDAsIDB4NDYsIDB4NjksIDB4NzIsIDB4NmQsIDB4NzcsIDB4NjEsIDB4NzIsIDB4NjUsIDB4MjAsIDB4NzQsIDB4NzksCisweDcwLCAweDY1LCAweDNhLCAweDAwLCAweDIwLCAweDRjLCAweDY5LCAweDZlLCAweDc1LCAweDc4LCAweDQyLCAweDQ5LCAweDRmLCAweDUzLCAweDAwLCAweDIwLAorMHg1MCwgMHg0MywgMHg0MiwgMHg0OSwgMHg0ZiwgMHg1MywgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4N2EsIDB4NTIsIDB4MDAsIDB4MDEsIDB4N2MsIDB4MDgsIDB4MDEsIDB4MWIsIDB4MGMsIDB4MDQsIDB4MDQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweGUyLCAweGYxLCAweGZmLCAweGZmLCAweDIzLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1ZCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTUsIDB4ZjEsIDB4ZmYsIDB4ZmYsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ1LCAweDBkLCAweDA1LCAweDQxLCAweDgzLCAweDAzLCAweDUxLCAweGMzLCAweDQxLCAweGM1LAorMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHhmMSwgMHhmZiwgMHhmZiwKKzB4OGEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsCisweDg2LCAweDA0LCAweDgzLCAweDA1LCAweDAzLCAweDdkLCAweDAxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LAorMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzNiwgMHhmMywgMHhmZiwgMHhmZiwKKzB4NDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NDIsIDB4ODYsIDB4MDMsCisweDgzLCAweDA0LCAweDdkLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAwLAorMHhiOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhmMywgMHhmZiwgMHhmZiwgMHg3YSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwKKzB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NzAsIDB4YzMsIDB4NDEsCisweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAwLCAweDAwLCAweDAwLAorMHhhMywgMHhmMywgMHhmZiwgMHhmZiwgMHg2NSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NywgMHgwZCwKKzB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NTYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsCisweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDAwLCAweDAwLCAweGRjLCAweGYzLCAweGZmLCAweGZmLAorMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NiwgMHg4NywgMHgwMywKKzB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4YmYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAxLCAweDAwLCAweDAwLCAweDdjLCAweGY0LCAweGZmLCAweGZmLCAweDA5LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NjUsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ2LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDUsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAxLCAweDAwLCAweDAwLCAweDM4LCAweGY0LCAweGZmLCAweGZmLCAweDBjLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0OCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ5LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDgsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweGZjLCAweDAxLCAweDAwLCAweDAwLCAweGZkLCAweGYzLCAweGZmLCAweGZmLCAweDE4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1MiwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjUsIDB4ZjMsIDB4ZmYsIDB4ZmYsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDUyLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMiwgMHgwMCwgMHgwMCwgMHhlZCwgMHhmMywgMHhmZiwgMHhmZiwgMHgxZCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NDEsIDB4ODMsIDB4MDMsIDB4NTUsIDB4YzMsIDB4NDEsIDB4YzUsCisweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAyLCAweDAwLCAweDAwLCAweGU2LCAweGYzLCAweGZmLCAweGZmLAorMHgyNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1ZiwgMHhjNSwgMHgwYywKKzB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4ZjMsIDB4ZmYsIDB4ZmYsCisweDViLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQzLCAweDg3LCAweDAzLAorMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwgMHgwMiwgMHg1MSwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MWEsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDU2LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxNSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgzNSwgMHgwMSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsCisweDAzLCAweDJiLCAweDAxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHhmNSwgMHhmZiwgMHhmZiwgMHhhZSwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsCisweDAzLCAweGExLCAweDA2LCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgxMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwOCwgMHgwMSwgMHgwMCwKKzB4YzAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweGE1LCAweGE1LCAweGE1LCAweGE1LCAweDcwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDAwLAorMHg4YywgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NGYsIDB4NGYsIDB4NTQsIDB4NWYsIDB4NDksIDB4NGQsIDB4NDEsCisweDQ3LCAweDQ1LCAweDNkLCAweDY4LCAweDY1LCAweDYxLCAweDY0LCAweDJlLCAweDUzLCAweDIwLCAweDYzLCAweDZmLCAweDZlLCAweDczLCAweDZmLCAweDZjLAorMHg2NSwgMHgzZCwgMHg3NCwgMHg3NCwgMHg3OSwgMHg1MywgMHgzMCwgMHgyMCwgMHg2OSwgMHg3MCwgMHgzZCwgMHg2NCwgMHg2OCwgMHg2MywgMHg3MCwgMHgyMCwKKzB4NzIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4M2QsIDB4MmYsIDB4NjQsIDB4NjUsIDB4NzYsIDB4MmYsIDB4NmUsIDB4NjYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiCmluZGV4IDJiY2M4ZDcuLjMzMGZhN2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIKQEAgLTE3LDIxICsxNywyOCBAQAogICAgICAgICAgICAiCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1tYWtlZmlsZS10by1maW5kLWxpYnoucGF0Y2ggICBcCisgICAgICAgICAgIGZpbGU6Ly9jb252ZXJ0LmJpbi5jIFwKICIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdC91dGlsL21rZWxmSW1hZ2UiCiAKLUNGTEFHUyArPSAiLWZuby1zdGFjay1wcm90ZWN0b3IiCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiXAogICAgIEhPU1RfQ0M9JyR7QlVJTERfQ0N9JyBcCiAgICAgSE9TVF9DRkxBR1M9JyR7QlVJTERfQ0ZMQUdTfScgXAogICAgIEhPU1RfQ1BQRkxBR1M9JyR7QlVJTERfQ1BQRkxBR1N9JyBcCisgICAgSTM4Nl9DRkxBR1M9Jy1mbm8tc3RhY2stcHJvdGVjdG9yJyBcCisgICAgSUE2NF9DRkxBR1M9Jy1mbm8tc3RhY2stcHJvdGVjdG9yJyBcCiAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX3g4Ni02NCA9ICIgLS13aXRoLWkzODY9JHtIT1NUX1NZU30iCiAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogCitkb19jb25maWd1cmVfcHJlcGVuZC1jbGFzcy1uYXRpdmUoKSB7CisJY3AgJHtXT1JLRElSfS9jb252ZXJ0LmJpbi5jICR7U30vbGludXgtaTM4Ni8KK30KKwogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbWtlbGZJbWFnZS9lbGYzMi1pMzg2CiAJcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbWtlbGZJbWFnZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvbWtsaWJzLW5hdGl2ZV8wLjEuNDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9ta2xpYnMtbmF0aXZlXzAuMS40My5iYgppbmRleCBiOWM2YzZmLi5hMTYxNDc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9ta2xpYnMtbmF0aXZlXzAuMS40My5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9ta2xpYnMtbmF0aXZlXzAuMS40My5iYgpAQCAtNCw3ICs0LDYgQEAKIFNFQ1RJT04gPSAiZGV2ZWwiCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTk4ZDMxMDM3YjEzZDg5NmUzMzg5MDczOGVmMDFhZjY0IgotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIgogCiBTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYxMTIzVDE1MjAxMVovcG9vbC9tYWluL20vbWtsaWJzL21rbGlic18ke1BWfS50YXIueHogXAogCWZpbGU6Ly9hY19pbml0X2ZpeC5wYXRjaFwKQEAgLTIwLDYgKzE5LDYgQEAKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9tL21rbGlicy8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgbmF0aXZlIHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBuYXRpdmUKIAogUyA9ICIke1dPUktESVJ9L21rbGlicyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCmluZGV4IDc4NTg4MTkuLjUwYWNkYjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgpAQCAtNCwxMSArNCwxMiBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbW1jLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmFlMzI3OTJlMjBmNGQyN2FkZTFjNWE3NjJkMTZiN2QiCiAKIFNSQ0JSQU5DSCA/PSAibWFzdGVyIgotU1JDUkVWID0gIjJjYjY2OTVlOGRlYzAwZDg4N2JkZDUzMDlkMWI1N2Q4MzZmY2QyMTQiCitTUkNSRVYgPSAiMzdjODZlNjBjMDQ0MmZlZjU3MGI3NWNkODFhZWIxZGI0ZDBjYmFmZCIKIAogUFYgPSAiMC4xIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9jamIvbW1jLXV0aWxzLmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCmluZGV4IDRmYmM1NGYuLjQ4YmEyZWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgpAQCAtNSw3ICs1LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvY29tbW9uLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9YmEwNWIwNzkxMmE0NGVhMmJmODFjZTQwOTM4MDA0OWMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAogREVQRU5EUyA9ICJ6bGliIGx6byBlMmZzcHJvZ3MgdXRpbC1saW51eCIKIApAQCAtMzAsNiArMzAsMTEgQEAKIAogRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfScgJ1JBTkxJQj0ke1JBTkxJQn0nICdBUj0ke0FSfScgJ0NGTEFHUz0ke0NGTEFHU30gJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneGF0dHInLCAnJywgJy1EV0lUSE9VVF9YQVRUUicsIGQpfSAtSSR7U30vaW5jbHVkZScgJ0JVSUxERElSPSR7U30nIgogCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmbGFzaF9lcmFzZWFsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF9lcmFzZWFsbF0gPSAiJHtzYmluZGlyfS9mbGFzaF9lcmFzZWFsbCIKKyMgVXNlIGhpZ2hlciBwcmlvcml0eSB0aGFuIGJ1c3lib3gncyBmbGFzaF9lcmFzZWFsbCAoY3JlYXRlZCB3aGVuIGJ1aWx0IHdpdGggQ09ORklHX0ZMQVNIX0VSQVNFQUxMKQorQUxURVJOQVRJVkVfUFJJT1JJVFlbZmxhc2hfZXJhc2VhbGxdID0gIjEwMCIKKwogZG9faW5zdGFsbCAoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBTQklORElSPSR7c2JpbmRpcn0gTUFORElSPSR7bWFuZGlyfSBJTkNMVURFRElSPSR7aW5jbHVkZWRpcn0KIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9kaXNhYmxlLWhhcmRjb2RlZC1jb25maWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL2Rpc2FibGUtaGFyZGNvZGVkLWNvbmZpZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE0NTVmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9kaXNhYmxlLWhhcmRjb2RlZC1jb25maWdzLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Rpc2FibGVkIHJlYWRpbmcgaG9zdCBjb25maWdzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25hdGl2ZV0KKworU2lnbmVkLW9mZi1ieTogRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisKKy0tLSBtdG9vbHMtNC4wLjE4L2NvbmZpZy5jLm9yaWcJMjAxNy0wNi0xMyAxMjoyNzozOC42NDQwMDAwMDAgKzAzMDAKKysrKyBtdG9vbHMtNC4wLjE4L2NvbmZpZy5jCTIwMTctMDYtMTMgMTI6Mjg6NDcuNTc2MDAwMDAwICswMzAwCitAQCAtNzAxLDE0ICs3MDEsNiBAQAorIAltZW1jcHkoZGV2aWNlcywgY29uc3RfZGV2aWNlcywKKyAJICAgICAgIG5yX2NvbnN0X2RldmljZXMqc2l6ZW9mKHN0cnVjdCBkZXZpY2UpKTsKKyAKKy0gICAgKHZvaWQpICgocGFyc2UoQ09ORl9GSUxFLDEpIHwKKy0JICAgICBwYXJzZShMT0NBTF9DT05GX0ZJTEUsMSkgfAorLQkgICAgIHBhcnNlKFNZU19DT05GX0ZJTEUsMSkpIHx8CistCSAgICAocGFyc2UoT0xEX0NPTkZfRklMRSwxKSB8CistCSAgICAgcGFyc2UoT0xEX0xPQ0FMX0NPTkZfRklMRSwxKSkpOworLSAgICAvKiB0aGUgb2xkLW5hbWUgY29uZmlndXJhdGlvbiBmaWxlcyBvbmx5IGdldCBleGVjdXRlZCBpZiBub25lIG9mIHRoZQorLSAgICAgKiBuZXctbmFtZSBjb25maWcgZmlsZXMgd2VyZSB1c2VkICovCistCisgICAgIGhvbWVkaXIgPSBnZXRfaG9tZWRpcigpOworICAgICBpZiAoIGhvbWVkaXIgKXsKKyAJc3RybmNweShjb25mX2ZpbGUsIGhvbWVkaXIsIE1BWFBBVEhMRU4gKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiCmluZGV4IGIwZWZjOWUuLmRjZDMyZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzXzQuMC4xOC5iYgpAQCAtMzMsMTMgKzMzLDEyIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvbnRpbnVlLWV2ZW4taWYtZnMtc2l6ZS1pcy1ub3QtZGl2aXNpYmxlLWJ5LXNlY3RvcnMucGF0Y2ggXAogICAgICAgICAgICAiCiAKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2Rpc2FibGUtaGFyZGNvZGVkLWNvbmZpZ3MucGF0Y2giCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KIAogRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC14IgogCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxpY29udiAiCi0KIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTIuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEyLjAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjgwYjg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTIuMDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwtcHVycG9zZSB4ODYgYXNzZW1ibGVyIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTA5MDQ0ODZmOGZiZjE4NjFjZjQyNzUyZTFhMzllZmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uYXNtLnVzL3B1Yi9uYXNtL3JlbGVhc2VidWlsZHMvJHtQVn0vbmFzbS0ke1BWfS50YXIuYnoyICIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxNTg0M2MzZmI3ZGIzOWFmODA1NzFlZTI3ZWM2ZmFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwYjA4OTFjNjc4YzA2NTQ0NmNhNTliY2VlNjQ3MTlkMDA5NmQ1NGQ2ODg2ZTZlNDcyYWVlZTJlMTcwYWUzMjQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JaWYgWyAtZiAke1N9L2FjbG9jYWwubTQgXSAmJiBbICEgLWYgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotCQltdiAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKLQlmaQotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xCi0KLQlvZV9ydW5tYWtlICdJTlNUQUxMUk9PVD0ke0R9JyBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1ERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMThjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAxLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiR2VuZXJhbC1wdXJwb3NlIHg4NiBhc3NlbWJsZXIiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDkwNDQ4NmY4ZmJmMTg2MWNmNDI3NTJlMWEzOWVmZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8ke1BWfS9uYXNtLSR7UFZ9LnRhci5iejIgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWY3ZDQ2NjIwNDBkMjQzNTFkZjdkNjcxOWVkNGY5N2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDhmOTdiYWYwYTdmODkyMTI4YzY0MTNjZmE5M2I2OWRjNTgyNWZiYmQwNmM3MDkyOGFlYTAyODgzNWQxOThmYSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlpZiBbIC1mICR7U30vYWNsb2NhbC5tNCBdICYmIFsgISAtZiAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCisJCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAorCWZpCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEKKworCW9lX3J1bm1ha2UgJ0lOU1RBTExST09UPSR7RH0nIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0RFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzYjI3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJOaW5qYSBpcyBhIHNtYWxsIGJ1aWxkIHN5c3RlbSB3aXRoIGEgZm9jdXMgb24gc3BlZWQuIgorSE9NRVBBR0UgPSAiaHR0cDovL21hcnRpbmUuZ2l0aHViLmNvbS9uaW5qYS8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hODE1ODZhNjRhZDRlNDc2Yzc5MWNkYTdlMmYyYzUyZSIKKworREVQRU5EUyA9ICJyZTJjLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCisKK1NSQ1JFViA9ICI3MTdiN2I0YTMxZGI2MDI3MjA3NTg4YzBmYjg5YzNlYWQzODQ3NDdiIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWFydGluZS9uaW5qYS5naXQ7YnJhbmNoPXJlbGVhc2UiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKKwkuL2NvbmZpZ3VyZS5weSAtLWJvb3RzdHJhcAorfQorCitkb19jb21waWxlKCkgeworCS4vY29uZmlndXJlLnB5CisJbmluamEKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1EIC1tIDA3NTUgICR7U30vbmluamEgJHtEfSR7YmluZGlyfS9uaW5qYQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNmFlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaApAQCAtMCwwICsxLDExMiBAQAorRnJvbSBkNDJiMjNmNGZiNWQ2YmQ1OGU5MmU5OTVmZTViZWZjNzZlZmJhZTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI3IEFwciAyMDE3IDE1OjQ3OjU4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFN3aXRjaCBhbGwgc2NyaXB0cyB0byB1c2UgUHl0aG9uIDMueAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbWFrZVBhY2thZ2UgICAgICAgICAgfCAyICstCisgb3BrZy1jb21wYXJlLWluZGV4ZXMgfCAyICstCisgb3BrZy1ncmFwaC1kZXBzICAgICAgfCAyICstCisgb3BrZy1saXN0LWZpZWxkcyAgICAgfCAyICstCisgb3BrZy1tYWtlLWluZGV4ICAgICAgfCAyICstCisgb3BrZy1zaG93LWRlcHMgICAgICAgfCAyICstCisgb3BrZy11bmJ1aWxkICAgICAgICAgfCAyICstCisgb3BrZy11cGRhdGUtaW5kZXggICAgfCAyICstCisgb3BrZy5weSAgICAgICAgICAgICAgfCAyICstCisgOSBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tYWtlUGFja2FnZSBiL21ha2VQYWNrYWdlCitpbmRleCA0YmRmYzU2Li4wMjEyNGRkIDEwMDc1NQorLS0tIGEvbWFrZVBhY2thZ2UKKysrKyBiL21ha2VQYWNrYWdlCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjIFRoZSBnZW5lcmFsIGFsZ29yaXRobSB0aGlzIHByb2dyYW0gZm9sbG93cyBnb2VzIGxpa2UgdGhpczoKKyAjICAgUnVuIHRhciB0byBleHRyYWN0IGNvbnRyb2wgZnJvbSBjb250cm9sLnRhci5neiBmcm9tIHRoZSBwYWNrYWdlLgorZGlmZiAtLWdpdCBhL29wa2ctY29tcGFyZS1pbmRleGVzIGIvb3BrZy1jb21wYXJlLWluZGV4ZXMKK2luZGV4IGI2MGQyMGEuLjgwYzEyNjMgMTAwNzU1CistLS0gYS9vcGtnLWNvbXBhcmUtaW5kZXhlcworKysrIGIvb3BrZy1jb21wYXJlLWluZGV4ZXMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyAKK2RpZmYgLS1naXQgYS9vcGtnLWdyYXBoLWRlcHMgYi9vcGtnLWdyYXBoLWRlcHMKK2luZGV4IDY2NTNmZDUuLmYxZTM3NmEgMTAwNzU1CistLS0gYS9vcGtnLWdyYXBoLWRlcHMKKysrKyBiL29wa2ctZ3JhcGgtZGVwcworQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIAorZGlmZiAtLWdpdCBhL29wa2ctbGlzdC1maWVsZHMgYi9vcGtnLWxpc3QtZmllbGRzCitpbmRleCBjMTRhOTBmLi4yNGY3OTU1IDEwMDc1NQorLS0tIGEvb3BrZy1saXN0LWZpZWxkcworKysrIGIvb3BrZy1saXN0LWZpZWxkcworQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIAorZGlmZiAtLWdpdCBhL29wa2ctbWFrZS1pbmRleCBiL29wa2ctbWFrZS1pbmRleAoraW5kZXggM2Y3NTdmNi4uMjk4OGY5ZiAxMDA3NTUKKy0tLSBhL29wa2ctbWFrZS1pbmRleAorKysrIGIvb3BrZy1tYWtlLWluZGV4CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisgCitkaWZmIC0tZ2l0IGEvb3BrZy1zaG93LWRlcHMgYi9vcGtnLXNob3ctZGVwcworaW5kZXggMTUzZjIxZS4uNGUxOGI0ZiAxMDA3NTUKKy0tLSBhL29wa2ctc2hvdy1kZXBzCisrKysgYi9vcGtnLXNob3ctZGVwcworQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIAorZGlmZiAtLWdpdCBhL29wa2ctdW5idWlsZCBiL29wa2ctdW5idWlsZAoraW5kZXggNGYzNmJlYy4uNTc2NDJjOSAxMDA3NTUKKy0tLSBhL29wa2ctdW5idWlsZAorKysrIGIvb3BrZy11bmJ1aWxkCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisgCitkaWZmIC0tZ2l0IGEvb3BrZy11cGRhdGUtaW5kZXggYi9vcGtnLXVwZGF0ZS1pbmRleAoraW5kZXggMzQxYzFjMi4uN2JmZjhhMSAxMDA3NTUKKy0tLSBhL29wa2ctdXBkYXRlLWluZGV4CisrKysgYi9vcGtnLXVwZGF0ZS1pbmRleAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgCisgaW1wb3J0IHN5cywgb3MKK2RpZmYgLS1naXQgYS9vcGtnLnB5IGIvb3BrZy5weQoraW5kZXggMmVjYWM4YS4uN2U2NGRlNCAxMDA2NDQKKy0tLSBhL29wa2cucHkKKysrKyBiL29wa2cucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjICAgQ29weXJpZ2h0IChDKSAyMDAxIEFsZXhhbmRlciBTLiBHdXkgPGE3ckBhbmRlcm4ub3JnPgorICMgICAgICAgICAgICAgICAgICAgICAgQW5kZXJuIFJlc2VhcmNoIExhYnMKKyAjCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NmNjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNS5iYgpAQCAtMCwwICsxLDYyIEBACitTVU1NQVJZID0gIkFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB0aGUgb3BrZyBwYWNrYWdlIG1hbmFnZXIiCitTVU1NQVJZX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJVdGlsaXR5IGZvciBtYW5hZ2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29wa2cucHk7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9NjNjZTllNmJjYzQ0NTE4MWNkOWU0YmFmNGI0Y2NjMzUiCitQUk9WSURFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAnJywgZCl9IgorCitTUkNfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpLyR7QlBOfS9zbmFwc2hvdC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMTllMDljNzliZjExNTJhYWM2MmU4YTEyMGQ2NzlmZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjRiMDg5MTJlMjZhM2Y0ZjZmNDIzZjNiNGU3MTU3YTczYjFmM2E3NDgzZmM1OWIyMTZkMWE4MGI1MGIwYzM4IgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworIyBGb3IgbmF0aXZlIGJ1aWxkcyB3ZSB1c2UgdGhlIGhvc3QgUHl0aG9uCitQWVRIT05SREVQUyA9ICJweXRob24zIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBweXRob24zLW1hdGggcHl0aG9uMy1jcnlwdCBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1mY250bCBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXRleHR1dGlscyBweXRob24zLXN0cmluZ29sZCIKK1BZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCitQQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgorCWZpCisKKyAgICBpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGdyZXAgLWxaICIvdXNyL2Jpbi9lbnYuKnB5dGhvbiIgJHtEfSR7YmluZGlyfS8qIHwgeGFyZ3MgLTAgcm0KKyAgICBmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJaWYgWyAtZSAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIiBdOyB0aGVuCisJCXNlZCAtaSAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLWUgJ3MsL3Vzci9iaW4sJHtiaW5kaXJ9LGc7IHMsL3Vzci9saWIsJHtub25hcmNoX2xpYmRpcn0sZycKKwlmaQorfQorCisjIFRoZXNlIGFyZSBlbXB0eSBhbmQgd2lsbCBwdWxsIHB5dGhvbjMtZGV2IGludG8gaW1hZ2VzIHdoZXJlIGl0IHdvdWxkbid0CisjIGhhdmUgYmVlbiBvdGhlcndpc2UsIHNvIGRvbid0IGdlbmVyYXRlIHRoZW0uCitQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKKworUEFDS0FHRVMgPSsgInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyIKK0ZJTEVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICIke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKK1JQUk9WSURFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKK1JSRVBMQUNFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCitSQ09ORkxJQ1RTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKKworcGtnX3Bvc3RybV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2coKSB7CisJcm0gLXJmICREJHtub25hcmNoX2xpYmRpcn0vb3BrZy9hbHRlcm5hdGl2ZXMKKwlybWRpciAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cgfHwgdHJ1ZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0NMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZWVhMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBZGRpdGlvbmFsIHV0aWxpdGllcyBmb3IgdGhlIG9wa2cgcGFja2FnZSBtYW5hZ2VyIgotU1VNTUFSWV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiVXRpbGl0eSBmb3IgbWFuYWdpbmcgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0iCi1TRUNUSU9OID0gImJhc2UiCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vcGtnLnB5O2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTE1OTE3NDkxYWQ2YmY3YWNjNjY2Y2E1ZjdjYzFlMDgzIgotUFJPVklERVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzJywgJycsIGQpfSIKLQotU1JDUkVWID0gIjFhNzA4ZmQ3M2QxMGMyYjc2NzdkZDRjYzRlMDE3NzQ2ZWJiYjkxNjYiCi1QViA9ICIwLjMuNCtnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9vcGtnLXV0aWxzIFwKLSIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1QWVRIT05SREVQUyA9ICJweXRob24gcHl0aG9uLXNoZWxsIHB5dGhvbi1pbyBweXRob24tbWF0aCBweXRob24tY3J5cHQgcHl0aG9uLWxvZ2dpbmcgcHl0aG9uLWZjbnRsIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1waWNrbGUgcHl0aG9uLWNvbXByZXNzaW9uIHB5dGhvbi10ZXh0dXRpbHMgcHl0aG9uLXN0cmluZ29sZCIKLVBZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCi1QQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlpZiBbIC1lICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiIF07IHRoZW4KLQkJc2VkIC1pICR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyAtZSAncywvdXNyL2Jpbiwke2JpbmRpcn0sZzsgcywvdXNyL2xpYiwke25vbmFyY2hfbGliZGlyfSxnJwotCWZpCi19Ci0KLVBBQ0tBR0VTID0rICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2ciCi1GSUxFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiJHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1SUFJPVklERVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi1SUkVQTEFDRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotUkNPTkZMSUNUU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi0KLXBrZ19wb3N0cm1fdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnKCkgewotCXJtIC1yZiAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cvYWx0ZXJuYXRpdmVzCi0Jcm1kaXIgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnIHx8IHRydWUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1DTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2ctYXJjaC1jb25maWdfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2ctYXJjaC1jb25maWdfMS4wLmJiCmluZGV4IDY4MjE0MmEuLjBjMmRiYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLWFyY2gtY29uZmlnXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy1hcmNoLWNvbmZpZ18xLjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgY29uZmlndXJhdGlvbiBmb3Igb3BrZyIKK0hPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKIExJQ0VOU0UgPSAiTUlUIgogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIFBSID0gInIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZy1jb25maWd1cmUuc2VydmljZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2ctY29uZmlndXJlLnNlcnZpY2UKaW5kZXggOGU3NDAyNi4uNDMyYzNkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZy1jb25maWd1cmUuc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCkBAIC04LDcgKzgsNyBAQAogVHlwZT1vbmVzaG90CiBFbnZpcm9ubWVudEZpbGU9LUBTWVNDT05GRElSQC9kZWZhdWx0L3Bvc3RpbnN0CiBFeGVjU3RhcnQ9LUBCQVNFX0JJTkRJUkAvc2ggLWMgIiBpZiBbICRQT1NUSU5TVF9MT0dHSU5HID0gJzEnIF07IHRoZW4gQEJJTkRJUkAvb3BrZyBjb25maWd1cmUgPiAkTE9HRklMRSAyPiYxOyBlbHNlIEBCSU5ESVJAL29wa2cgY29uZmlndXJlOyBmaSIKLUV4ZWNTdGFydFBvc3Q9QEJBU0VfQklORElSQC9zeXN0ZW1jdGwgZGlzYWJsZSBvcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCitFeGVjU3RhcnRQb3N0PUBCQVNFX0JJTkRJUkAvc3lzdGVtY3RsIC0tbm8tcmVsb2FkIGRpc2FibGUgb3BrZy1jb25maWd1cmUuc2VydmljZQogU3RhbmRhcmRPdXRwdXQ9c3lzbG9nCiBSZW1haW5BZnRlckV4aXQ9Tm8KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvc3RhdHVzLWNvbmZmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvc3RhdHVzLWNvbmZmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmM0MDViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL3N0YXR1cy1jb25mZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDA4NmQ1MDgzZGZlMDEwMjM2OGNiN2M4Y2U4OWIwYzA2YjY0Y2E3NzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMCBKYW4gMjAxNyAxNToyNDo1OSArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMl0gb3BrZ19jbWQ6IG9ubHkgbG9vayBhdCBjb25mZmlsZSBzdGF0dXMgaWYgd2UncmUgZ29pbmcgdG8KLSBvdXRwdXQgaXQKLQotVGhlIGxvb3AgdG8gY29tcGFyZSB0aGUgcmVjb3JkZWQgY29uZmZpbGUgaGFzaCB3aXRoIHRoZWlyIGhhc2ggb24gZGlzayBpcwotb3V0cHV0dGVkIGF0IGxldmVsIElORk8gYnV0IHRoZSBsb29wIHdhcyBleGVjdXRlZCBhdCBsZXZlbCBOT1RJQ0UgYW5kIGhpZ2hlci4KLQotVGhpcyBtZWFucyB0aGF0IGlmIGEgY29uZmZpbGUgaGFkIGJlZW4gZGVsZXRlZCB0aGUgc3RhdHVzIG9wZXJhdGlvbiB3b3VsZAotcHJvZHVjZSBlcnJvciBtZXNzYWdlcyBmb3Igb3V0cHV0IGl0IGlzbid0IGRpc3BsYXlpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBsaWJvcGtnL29wa2dfY21kLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJvcGtnL29wa2dfY21kLmMgYi9saWJvcGtnL29wa2dfY21kLmMKLWluZGV4IGJhNTdjNmEuLjM3NDE2ZmQgMTAwNjQ0Ci0tLS0gYS9saWJvcGtnL29wa2dfY21kLmMKLSsrKyBiL2xpYm9wa2cvb3BrZ19jbWQuYwotQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgaW50IG9wa2dfaW5mb19zdGF0dXNfY21kKGludCBhcmdjLCBjaGFyICoqYXJndiwgaW50IGluc3RhbGxlZF9vbmx5KQotIAotICAgICAgICAgcGtnX2Zvcm1hdHRlZF9pbmZvKHN0ZG91dCwgcGtnKTsKLSAKLS0gICAgICAgIGlmIChvcGtnX2NvbmZpZy0+dmVyYm9zaXR5ID49IE5PVElDRSkgewotKyAgICAgICAgaWYgKG9wa2dfY29uZmlnLT52ZXJib3NpdHkgPj0gSU5GTykgewotICAgICAgICAgICAgIGNvbmZmaWxlX2xpc3RfZWx0X3QgKml0ZXI7Ci0gICAgICAgICAgICAgZm9yIChpdGVyID0gbnZfcGFpcl9saXN0X2ZpcnN0KCZwa2ctPmNvbmZmaWxlcyk7IGl0ZXI7Ci0gICAgICAgICAgICAgICAgICBpdGVyID0gbnZfcGFpcl9saXN0X25leHQoJnBrZy0+Y29uZmZpbGVzLCBpdGVyKSkgewotLS0gCi0yLjguMQotCi1Gcm9tIDIyNWUzMGUwZjlmYTdjZmVhYTNmODllMjcxM2U1MTQ3YWIzNzFkZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMCBKYW4gMjAxNyAxNToyODo0NyArMDAwMAotU3ViamVjdDogW1BBVENIIDIvMl0gY29uZmZpbGU6IGdyYWNlZnVsbHkgaGFuZGxlIGRlbGV0ZWQgY29uZmZpbGVzIGluCi0gY29uZmZpbGVfaGFzX2JlZW5fbW9kaWZpZWQKLQotSGFuZGxlIGNvbmZmaWxlcyB0aGF0IGRvbid0IGV4aXN0IGdyYWNlZnVsbHkgc28gdGhhdCBpbnN0ZWFkIG9mIHNob3dpbmcgYW4gZXJyb3IKLW1lc3NhZ2UgZnJvbSBmaWxlX21kNXN1bV9hbGxvYygpIGEgbm90aWNlIHRoYXQgdGhlIGZpbGUgaGFzIGJlZW4gZGVsZXRlZCBpcwotc2hvd24gaW5zdGVhZC4KLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIGxpYm9wa2cvY29uZmZpbGUuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJvcGtnL2NvbmZmaWxlLmMgYi9saWJvcGtnL2NvbmZmaWxlLmMKLWluZGV4IGIyZjI0NjkuLjdiNGI4N2IgMTAwNjQ0Ci0tLS0gYS9saWJvcGtnL2NvbmZmaWxlLmMKLSsrKyBiL2xpYm9wa2cvY29uZmZpbGUuYwotQEAgLTUxLDYgKzUxLDExIEBAIGludCBjb25mZmlsZV9oYXNfYmVlbl9tb2RpZmllZChjb25mZmlsZV90ICogY29uZmZpbGUpCi0gICAgIH0KLSAKLSAgICAgcm9vdF9maWxlbmFtZSA9IHJvb3RfZmlsZW5hbWVfYWxsb2MoZmlsZW5hbWUpOwotKyAgICBpZiAoIWZpbGVfZXhpc3RzKHJvb3RfZmlsZW5hbWUpKSB7Ci0rICAgICAgICBvcGtnX21zZyhJTkZPLCAiQ29uZmZpbGUgJXMgZGVsZXRlZFxuIiwgY29uZmZpbGUtPm5hbWUpOwotKyAgICAgICAgZnJlZShyb290X2ZpbGVuYW1lKTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0gCi0gICAgIG1kNXN1bSA9IGZpbGVfbWQ1c3VtX2FsbG9jKHJvb3RfZmlsZW5hbWUpOwotIAotLS0gCi0yLjguMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIxZmRlMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCi1TVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yMTttZDU9OTA0MzVhNTE5YzZlYTY5ZWYyMmU0YTg4YmNjNTJmYTAiCi0KLURFUEVORFMgPSAibGliYXJjaGl2ZSIKLQotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BrZy1jb25maWd1cmUuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnX2NvbmYtY3JlYXRlLW9wa2cubG9jay1pbi1ydW4taW5zdGVhZC1vZi12YXItcnVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3N0YXR1cy1jb25mZmlsZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YzUyYTA2NTQ5OTA1NmExOTZlMGI0NWEyN2UzOTJkZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTBiOTAwYjUzYjYyYTliMjgwYjYwMWExOTZmMDJkYTgxMDkxZWRhMmYzNDc4YzUwOTUxMmFhNWExZWM5M2JlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKLQotdGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCi1PUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCi0KLVBBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKLVBBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgotUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKLQllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCi0JIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKLQlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCi0JCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAotCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQotCWZpCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgotUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCi1SUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotCi1QQUNLQUdFUyA9KyAibGlib3BrZyIKLQotRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTExYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNS5iYgpAQCAtMCwwICsxLDc1IEBACitTVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgorU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjE7bWQ1PTkwNDM1YTUxOWM2ZWE2OWVmMjJlNGE4OGJjYzUyZmEwIgorCitERVBFTkRTID0gImxpYmFyY2hpdmUiCisKK1BFID0gIjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wa2ctY29uZmlndXJlLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMjAyZDA5ZWEwOTMyOTQzMDcxYjg0MjYyNmNhYjEzYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzRiYzIxZGVhMTEyNjIxMTNmYTg2YjkyOGQwOTgxMjYxOGIzOTY2ZjM1MjM1MGNmOTE2YTZhZTBkMzQzZjMyIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKKwordGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCitPUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCisKK1BBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKK1BBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKK1BBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgorUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKwllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgorCisJIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKKwlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCisJCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAorCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQorCWZpCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgorUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCitSUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorCitQQUNLQUdFUyA9KyAibGlib3BrZyIKKworRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ3MzQyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGU5YmVmNjc3YmFlMjg5ZDMzMjRkODFjMzM3YTQ1MDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Q1MmZhODBlZjg0OTg4MzU5YzM0MzRlMWVlYTMwMmQwNzdhMDg5ODdhYmRkZTY5MDU2NzhlYmNhZDRmYTY0OSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKLUZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDNmOTkxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNy5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIk9wdGltaXNlZCBJbm5lciBMb29wIFJ1bnRpbWUgQ29tcGlsZXIiCitIT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9tb2R1bGVzL29yYy5odG1sIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDAwYmQ5ZDA5ZThhZjU2YjllYzk4MmIzZDg1Nzk3ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvb3JjL29yYy0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODM3ZGMyMGRhY2I1YjY2ODkzNWJiZGVkMTBjYmI2MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MWU1M2U1OGZjODE1OGU1OTg2YTFmMWE0OWE2ZDk3MGM1YjE2NDkzODQxY2Y3YjlkZTJjMmJkZTdjZTM2YjkzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICJvcmMtZXhhbXBsZXMiCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3JjLS4qIgorRklMRVNfb3JjLWV4YW1wbGVzID0gIiR7bGliZGlyfS9vcmMvKiIKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09SQyAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgc2VkIC1pIC1lICdzIy90bXAjLiNnJyAke1N9L29yYy9vcmNjb2RlbWVtLmMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9saWJ0b29sLXRhZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9saWJ0b29sLXRhZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjYwMWFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL2xpYnRvb2wtdGFnLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK1JlcGVjdCBMSUJUT09MRkxBR1MKKworVGhpcyBhZGQgYSBrbm9iIHRoYXQgY2FuIGJlIGNvbnRyb2xsZWQgZnJvbSBlbnYgdG8gc2V0IGdlbmVyaWMgb3B0aW9ucworZm9yIGxpYnRvb2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogdXVpZC0xLjYuMi9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHV1aWQtMS42LjIub3JpZy9NYWtlZmlsZS5pbgorKysrIHV1aWQtMS42LjIvTWFrZWZpbGUuaW4KK0BAIC01Niw3ICs1Niw3IEBAIFJNICAgICAgICAgID0gcm0gLWYKKyBDUCAgICAgICAgICA9IGNwCisgUk1ESVIgICAgICAgPSBybWRpcgorIFNIVE9PTCAgICAgID0gJChTKS9zaHRvb2wKKy1MSUJUT09MICAgICA9IEBMSUJUT09MQAorK0xJQlRPT0wgICAgID0gQExJQlRPT0xAICQoTElCVE9PTEZMQUdTKQorIFRSVUUgICAgICAgID0gdHJ1ZQorIFBPRDJNQU4gICAgID0gcG9kMm1hbgorIFBFUkwgICAgICAgID0gQFBFUkxACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIKaW5kZXggODVhMWJjZi4uNWQ5Y2E3OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkXzEuNi4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZF8xLjYuMi5iYgpAQCAtMjcsNiArMjcsNyBAQAogCSAgIGZpbGU6Ly91dWlkLW5vc3RyaXAucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC1wYy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnRvb2wtdGFnLnBhdGNoIFwKIAkgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI1ZGIwZDQzYTkwMjJhNmViYmJjMjUzMzdhZTI4OTQyZiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMWE2MTUyMjViYWE1ZjhiYjY4NjgyNDQyM2Y1MGU0NDI3YWNkM2Y3MGQzOTQ3NjViZGZmMzI4MDFmMGZkNWIwIgpAQCAtMzcsNiArMzgsNyBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRjZSAtLXdpdGhvdXQtY3h4IC0td2l0aG91dC1wZXJsIC0td2l0aG91dC1wZXJsLWNvbXBhdCAtLXdpdGhvdXQtcGhwIC0td2l0aG91dC1wZ3NxbCIKIEVYVFJBX09FQ09ORiA9ICItLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9vc3NwIgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAgICMgVGhpcyBwYWNrYWdlIGhhcyBhIGNvbXBsZXRlbHkgY3VzdG9tIGFjbG9jYWwubTQsIHdoaWNoIHNob3VsZCBiZSBhY2luY2x1ZGUubTQuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL2F2b2lkaG9sZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL2F2b2lkaG9sZXMucGF0Y2gKaW5kZXggYTI3MzY4OC4uMGI0NWMzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9hdm9pZGhvbGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvYXZvaWRob2xlcy5wYXRjaApAQCAtMzEsNyArMzEsNyBAQAogUlAKIDIwMTcvMy83CiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAogCiBJbmRleDogcGF0Y2hlbGYtMC45L3NyYy9wYXRjaGVsZi5jYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9maXgtYWRqdXN0aW5nLXN0YXJ0UGFnZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvZml4LWFkanVzdGluZy1zdGFydFBhZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY0Y2JlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvZml4LWFkanVzdGluZy1zdGFydFBhZ2UucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorY29tbWl0IDFjYzIzNGZlYTU2MDAxOTBkODcyMzI5YWNhNjBlMjM2NWNlZmMzOWUKK0F1dGhvcjogRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CitEYXRlOiAgIEZyaSBKdWwgMjEgMTI6MzM6NTMgMjAxNyArMDMwMAorCitmaXggYWRqdXN0aW5nIHN0YXJ0UGFnZQorCitzdGFydFBhZ2UgaXMgYWRqdXN0ZWQgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgZXhlY3V0YWJsZXMuCitUaGlzIHJlc3VsdHMgaW4gaW5jb3JyZWN0IGFkZHJlc3NlcyBhc3NpZ25lZCB0byBJTlRFUlAgYW5kIExPQUQKK3Byb2dyYW0gaGVhZGVycywgd2hpY2ggYnJlYWtzIHBhdGNoZWQgZXhlY3V0YWJsZS4KKworQWRqdXN0aW5nIHN0YXJ0UGFnZSB2YXJpYWJsZSBvbmx5IHdoZW4gc3RhcnRPZmZzZXQgPiBzdGFydFBhZ2UKK3Nob3VsZCBmaXggdGhpcy4KKworVGhpcyBjaGFuZ2UgaXMgcmVsYXRlZCB0byB0aGUgaXNzdWUgTml4T1MjMTAKKworU2lnbmVkLW9mZi1ieTogRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisKK0dpdGh1YiBQUjogaHR0cHM6Ly9naXRodWIuY29tL05peE9TL3BhdGNoZWxmL3B1bGwvMTI3CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK2RpZmYgLS1naXQgYS9zcmMvcGF0Y2hlbGYuY2MgYi9zcmMvcGF0Y2hlbGYuY2MKK2luZGV4IGNiZDM2YzAuLmU5ZDdlYTUgMTAwNjQ0CistLS0gYS9zcmMvcGF0Y2hlbGYuY2MKKysrKyBiL3NyYy9wYXRjaGVsZi5jYworQEAgLTcyMCwxMCArNzIwLDggQEAgdm9pZCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5hbWVzPjo6cmV3cml0ZVNlY3Rpb25zTGlicmFyeSgpCisgICAgICAgIHNpbmNlIERZTiBleGVjdXRhYmxlcyB0ZW5kIHRvIHN0YXJ0IGF0IHZpcnR1YWwgYWRkcmVzcyAwLCBzbworICAgICAgICByZXdyaXRlU2VjdGlvbnNFeGVjdXRhYmxlKCkgd29uJ3Qgd29yayBiZWNhdXNlIGl0IGRvZXNuJ3QgaGF2ZQorICAgICAgICBhbnkgdmlydHVhbCBhZGRyZXNzIHNwYWNlIHRvIGdyb3cgZG93bndhcmRzIGludG8uICovCistICAgIGlmIChpc0V4ZWN1dGFibGUpIHsKKy0gICAgICAgIGlmIChzdGFydE9mZnNldCA+PSBzdGFydFBhZ2UpIHsKKy0gICAgICAgICAgICBkZWJ1Zygic2hpZnRpbmcgbmV3IFBUX0xPQUQgc2VnbWVudCBieSAlZCBieXRlcyB0byB3b3JrIGFyb3VuZCBhIExpbnV4IGtlcm5lbCBidWdcbiIsIHN0YXJ0T2Zmc2V0IC0gc3RhcnRQYWdlKTsKKy0gICAgICAgIH0KKysgICAgaWYgKGlzRXhlY3V0YWJsZSAmJiBzdGFydE9mZnNldCA+IHN0YXJ0UGFnZSkgeworKyAgICAgICAgZGVidWcoInNoaWZ0aW5nIG5ldyBQVF9MT0FEIHNlZ21lbnQgYnkgJWQgYnl0ZXMgdG8gd29yayBhcm91bmQgYSBMaW51eCBrZXJuZWwgYnVnXG4iLCBzdGFydE9mZnNldCAtIHN0YXJ0UGFnZSk7CisgICAgICAgICBzdGFydFBhZ2UgPSBzdGFydE9mZnNldDsKKyAgICAgfQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOS5iYgppbmRleCAwMWYwZTYyLi5kNzAzMDM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOS5iYgpAQCAtMyw2ICszLDcgQEAKICAgICAgICAgICAgZmlsZTovL2hhbmRsZS1yZWFkLW9ubHktZmlsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vSW5jcmVhc2UtbWF4U2l6ZS10by02NE1CLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2F2b2lkaG9sZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWFkanVzdGluZy1zdGFydFBhZ2UucGF0Y2ggXAogIgogCiBMSUNFTlNFID0gIkdQTHYzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXgtdXRpbHMvcGF4LXV0aWxzXzEuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXgtdXRpbHMvcGF4LXV0aWxzXzEuMi4yLmJiCmluZGV4IDQ3NmZhNmYuLjk2MzVhNWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF4LXV0aWxzL3BheC11dGlsc18xLjIuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BheC11dGlscy9wYXgtdXRpbHNfMS4yLjIuYmIKQEAgLTcsOSArNyw3IEBACiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgogCi1TUkNfVVJJID0gImh0dHA6Ly9nZW50b28ub3N1b3NsLm9yZy9kaXN0ZmlsZXMvcGF4LXV0aWxzLSR7UFZ9LnRhci54eiBcCi0iCi0KK1NSQ19VUkkgPSAiaHR0cHM6Ly9kZXYuZ2VudG9vLm9yZy9+dmFwaWVyL2Rpc3QvcGF4LXV0aWxzLSR7UFZ9LnRhci54eiIKIFNSQ19VUklbbWQ1c3VtXSA9ICJhNTgwNDY4MzE4ZjBmZjQyZWRmNGE4Y2QzMTRjYzk0MiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjRhN2Y4ZGI2YjQ3NDNhZGRlNzU4MmZhNDg5OTJhZDAxNzc2Nzk2ZmNkZTAzMDY4MzczMmY1NjIyMTMzN2Q5IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzI4MDNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0byBtYW5pcHVsYXRlIGFuZCBhY2Nlc3MgVVJJIHN0cmluZ3MiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFVSSS5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCi1UaGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFVSSSBjbGFzcy4gVVJJIG9iamVjdHMgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIFwKLWFuZCBtYW5pcHVsYXRlIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZXNlIHN0cmluZ3MuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvVVJJLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NTNlOTRmYWU2NzI4MDBmODNiYzFiZDdhMzhiNTNmIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvVVJJLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI0N2MzZGEyOWE3OTRmNzI3MzBlMDFhYTVhNzE1ZGFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljOGVjYTBkN2YzOWU3NGJiYzE0NzA2MjkzZTY1M2I2OTkyMzhlZWIxYTc2OTBjYzljMTM2ZmI4YzI2NDQxMTUiCi0KLVMgPSAiJHtXT1JLRElSfS9VUkktJHtQVn0iCi0KLUVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotCWNwYW5fZG9fY29tcGlsZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM5OWMxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgdG8gbWFuaXB1bGF0ZSBhbmQgYWNjZXNzIFVSSSBzdHJpbmdzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBVUkkucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4gXAorVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBVUkkgY2xhc3MuIFVSSSBvYmplY3RzIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBcCithbmQgbWFuaXB1bGF0ZSB0aGUgdmFyaW91cyBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCB0aGVzZSBzdHJpbmdzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1VSSS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDUzZTk0ZmFlNjcyODAwZjgzYmMxYmQ3YTM4YjUzZiIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL2F1dGhvcnMvaWQvRS9FVC9FVEhFUi9VUkktJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2Q1NmQ4MWVkNDI5ZWZhYTk3ZTdmM2ZmMDg4NTFiNDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzVmMTQ0MzFkNGIzMDBkZTRiZTExNjNiMGI1MzMyZGUyZDdmYmRhNGYwNWZmMWVkMTk4YThlOTMzMGQ0MGEzMiIKKworUyA9ICIke1dPUktESVJ9L1VSSS0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK2luaGVyaXQgY3BhbgorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisJY3Bhbl9kb19jb21waWxlCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCmluZGV4IGQ5YmJmNzEuLmNjM2E2NjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlhNTDo6UGFyc2VyIC0gQSBwZXJsIG1vZHVsZSBmb3IgcGFyc2luZyBYTUwgZG9jdW1lbnRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJleHBhdC5naXRodWIuaW8vIgogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjtlbmRsaW5lPTY7bWQ1PWM4NzY3ZDc1MTYyMjlmMDdiMjZlNDJkMWNmOGI1MWYxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wZXJsXzAuMDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBlcmxfMC4wOC5iYgppbmRleCAyYzAxOTc2Li4wNDc4NDI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBlcmxfMC4wOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBlcmxfMC4wOC5iYgpAQCAtMiw2ICsyLDcgQEAKIGRvY3VtZW50cyBmb3Igd29ya2luZyB3aXRoIFhNTCBpbiBQZXJsLiAgbGlieG1sLXBlcmwgc29mdHdhcmUgXAogd29ya3MgaW4gY29tYmluYXRpb24gd2l0aCBYTUw6OlBhcnNlciwgUGVybFNBWCwgWE1MOjpET00sIFwKIFhNTDo6R3JvdmUgYW5kIG90aGVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvbGlieG1sLXBlcmwvIgogU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIFBlcmwgbW9kdWxlcyBmb3Igd29ya2luZyB3aXRoIFhNTCIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNDNiYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBYTUwiCi1ERVNDUklQVElPTiA9ICJUaGUgWE1MOjpTaW1wbGUgUGVybCBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUgQVBJIGxheWVyIFwKLW9uIHRvcCBvZiBhbiB1bmRlcmx5aW5nIFhNTCBwYXJzaW5nIG1vZHVsZSB0byBtYWludGFpbiBYTUwgZmlsZXMgXAotKGVzcGVjaWFsbHkgY29uZmlndXJhdGlvbiBmaWxlcykuIEl0IGlzIGEgYmx1bnQgcmV3cml0ZSBvZiBYTUw6OlNpbXBsZSBcCi0oYnkgR3JhbnQgTWNMZWFuKSB0byB1c2UgdGhlIFhNTDo6TGliWE1MIHBhcnNlciBmb3IgWE1MIHN0cnVjdHVyZXMsIFwKLXdoZXJlIHRoZSBvcmlnaW5hbCB1c2VzIHBsYWluIFBlcmwgb3IgU0FYIHBhcnNlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bWFya292L1hNTC1MaWJYTUwtU2ltcGxlLTAuOTMvbGliL1hNTC9MaWJYTUwvU2ltcGxlLnBvZCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mYTExODdmY2VkYTAwZWVlMTBiNjI5NjE0MDdlYTdiZSIKLURFUEVORFMgKz0gImxpYnhtbC1wYXJzZXItcGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL1hNTC9YTUwtU2ltcGxlLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA5MTRhYmRkZmNlNzQ5NDUzZWQ4OWI1NDAyOWYyNjQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NDUwZWYyMmVhOTY0NGFlNWQ2YWRhMDg2ZGM0MzAwZmExMDViZTA1MGEyMDMwZWJkNGVmZDI4YzE5OGViNDkiCi0KLVMgPSAiJHtXT1JLRElSfS9YTUwtU2ltcGxlLSR7UFZ9IgotCi1FWFRSQV9QRVJMRkxBR1MgPSAiLUkgJHtQRVJMSE9TVExJQn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2YyZWViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgWE1MIgorREVTQ1JJUFRJT04gPSAiVGhlIFhNTDo6U2ltcGxlIFBlcmwgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlIEFQSSBsYXllciBcCitvbiB0b3Agb2YgYW4gdW5kZXJseWluZyBYTUwgcGFyc2luZyBtb2R1bGUgdG8gbWFpbnRhaW4gWE1MIGZpbGVzIFwKKyhlc3BlY2lhbGx5IGNvbmZpZ3VyYXRpb24gZmlsZXMpLiBJdCBpcyBhIGJsdW50IHJld3JpdGUgb2YgWE1MOjpTaW1wbGUgXAorKGJ5IEdyYW50IE1jTGVhbikgdG8gdXNlIHRoZSBYTUw6OkxpYlhNTCBwYXJzZXIgZm9yIFhNTCBzdHJ1Y3R1cmVzLCBcCit3aGVyZSB0aGUgb3JpZ2luYWwgdXNlcyBwbGFpbiBQZXJsIG9yIFNBWCBwYXJzZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfm1hcmtvdi9YTUwtTGliWE1MLVNpbXBsZS0wLjkzL2xpYi9YTUwvTGliWE1ML1NpbXBsZS5wb2QiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjM0NzdlMThhMGQwNDM5MmNkZjQ0YWU3MGU0OWI0OTUiCitERVBFTkRTICs9ICJsaWJ4bWwtcGFyc2VyLXBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9YTUwvWE1MLVNpbXBsZS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxY2QyZThlMzQyMTE2MGM0MjI3NzUyM2Q1YjJmNGRkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YTE0ODE5ZmQxN2M3NWZiYjkwYWRjZWMwNDQ2Y2VhYjM1NmNhYjBjY2FmZjg3MGYyZTE2NTkyMDVkYzI0MjRmIgorCitTID0gIiR7V09SS0RJUn0vWE1MLVNpbXBsZS0ke1BWfSIKKworRVhUUkFfUEVSTEZMQUdTID0gIi1JICR7UEVSTEhPU1RMSUJ9IgorCitpbmhlcml0IGNwYW4KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYgppbmRleCBlMDFkMTFmLi42YzU2YTdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIKQEAgLTMyLDYgKzMyLDcgQEAKIAkJLURjYz0iJHtDQ30iIFwKIAkJLURjZmxhZ3M9IiR7Q0ZMQUdTfSIgXAogCQktRGxkZmxhZ3M9IiR7TERGTEFHU30iIFwKKwkJLURsZGRsZmxhZ3M9IiR7TERGTEFHU30gLXNoYXJlZCIgXAogCQktRGNmX2J5PSJPcGVuIEVtYmVkZGVkIiBcCiAJCS1EcHJlZml4PSR7cHJlZml4fSBcCiAJCS1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC8wMDAxLUNvbmZpZ3VyZS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmctZm9yLW5hdGl2ZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC8wMDAxLUNvbmZpZ3VyZS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmctZm9yLW5hdGl2ZS0ucGF0Y2gKaW5kZXggNzM5MWFjNS4uMTRhMDVkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvMDAwMS1Db25maWd1cmUtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLWZvci1uYXRpdmUtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLzAwMDEtQ29uZmlndXJlLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy1mb3ItbmF0aXZlLS5wYXRjaApAQCAtMTAsNyArMTAsNyBAQAogCiBbWU9DVE8gIzEwMzM4XQogCi1VcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFsxXSBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTA5NTg5LwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbi1taXNzaW5nLXNpdGUtZGlycy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2NwYW4tbWlzc2luZy1zaXRlLWRpcnMuZGlmZgppbmRleCBhNjNiOTY4Li5jNTk3NzAxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbi1taXNzaW5nLXNpdGUtZGlycy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9jcGFuLW1pc3Npbmctc2l0ZS1kaXJzLmRpZmYKQEAgLTEzLDYgKzEzLDcgQEAKIAogQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy82ODg4NDIKIFBhdGNoLU5hbWU6IGRlYmlhbi9jcGFuLW1pc3Npbmctc2l0ZS1kaXJzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9DUEFOL2xpYi9DUEFOL0ZpcnN0VGltZS5wbSB8IDMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9jcGFuX2RlZmluc3RhbGxkaXJzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbl9kZWZpbnN0YWxsZGlycy5kaWZmCmluZGV4IDZiNTI5NTAuLjU3MmYxNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9jcGFuX2RlZmluc3RhbGxkaXJzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2NwYW5fZGVmaW5zdGFsbGRpcnMuZGlmZgpAQCAtOSw2ICs5LDcgQEAKIG9yZGVyaW5nLCBidXQgbm90IG91cnMuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9jcGFuX2RlZmluc3RhbGxkaXJzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9DUEFOL2xpYi9DUEFOL0ZpcnN0VGltZS5wbSB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGJfZmlsZV92ZXIuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kYl9maWxlX3Zlci5kaWZmCmluZGV4IDI4MGJmMTEuLjA4NjE2NTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kYl9maWxlX3Zlci5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kYl9maWxlX3Zlci5kaWZmCkBAIC04LDYgKzgsNyBAQAogUGFja2FnZSBkZXBlbmRlbmNpZXMgZW5zdXJlIHRoZSBjb3JyZWN0IGxpYnJhcnkgaXMgbGlua2VkIGF0IHJ1bi10aW1lLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZGJfZmlsZV92ZXIuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0RCX0ZpbGUvdmVyc2lvbi5jIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kZXByZWNhdGUtd2l0aC1hcHQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kZXByZWNhdGUtd2l0aC1hcHQuZGlmZgppbmRleCA2MDFlZTRjLi5jMmFjNGEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGVwcmVjYXRlLXdpdGgtYXB0LmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2RlcHJlY2F0ZS13aXRoLWFwdC5kaWZmCkBAIC0xNSw2ICsxNSw3IEBACiBzZXBhcmF0ZSBwYWNrYWdlcyBpbnN0ZWFkLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZGVwcmVjYXRlLXdpdGgtYXB0LmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgbGliL2RlcHJlY2F0ZS5wbSB8IDE1ICsrKysrKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZG9jX2luZm8uZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kb2NfaW5mby5kaWZmCmluZGV4IGZiZWEyZWUuLjQ2NjJlY2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kb2NfaW5mby5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kb2NfaW5mby5kaWZmCkBAIC02LDYgKzYsNyBAQAogSW5kaWNhdGUgdGhhdCB0aGUgdXNlciBuZWVkcyB0byBpbnN0YWxsIHRoZSBwZXJsLWRvYyBwYWNrYWdlLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZG9jX2luZm8uZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBwb2QvcGVybC5wb2QgfCAxMiArKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9lbmMyeHNfaW5jLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZW5jMnhzX2luYy5kaWZmCmluZGV4IGUwNzRiMjAuLmIzYmQ1OGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9lbmMyeHNfaW5jLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2VuYzJ4c19pbmMuZGlmZgpAQCAtMTEsNiArMTEsNyBAQAogICBpc3N1ZXMgd2l0aCBmb2xsb3cgPT4gMSAoc2VlICM2MDM2ODYgYW5kIFtydC5jcGFuLm9yZyAjNjQ1ODVdKQogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZW5jMnhzX2luYy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRW5jb2RlL2Jpbi9lbmMyeHMgfCA4ICsrKystLS0tCiAgdC9wb3J0aW5nL2N1c3RvbWl6ZWQudCB8IDMgKysrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXJybm9fdmVyLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXJybm9fdmVyLmRpZmYKaW5kZXggM2QwOTIyOS4uYTk2NWZiZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2Vycm5vX3Zlci5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9lcnJub192ZXIuZGlmZgpAQCAtMTEsNyArMTEsNyBAQAogY29tcGF0aWJsZSwgYnV0IGJ1aWx0IG9uIGEgZGlmZmVyZW50IG1hY2hpbmUuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9lcnJub192ZXIuZGlmZgotCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGV4dC9FcnJuby9FcnJub19wbS5QTCB8IDUgLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9leHR1dGlsc19zZXRfbGlicGVybF9wYXRoLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXh0dXRpbHNfc2V0X2xpYnBlcmxfcGF0aC5kaWZmCmluZGV4IGFkYjRiZDkuLmUwMjMwMzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9leHR1dGlsc19zZXRfbGlicGVybF9wYXRoLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2V4dHV0aWxzX3NldF9saWJwZXJsX3BhdGguZGlmZgpAQCAtNyw2ICs3LDcgQEAKIENPUkUgZGlyZWN0b3J5IHRvIG1hdGNoIG90aGVyIHN0YXRpYyBsaWJyYXJpZXMuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9leHR1dGlsc19zZXRfbGlicGVybF9wYXRoLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gfCAyICstCiAgcHAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZmFrZXJvb3QuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9mYWtlcm9vdC5kaWZmCmluZGV4IGVjNDYxY2YuLmJkZjM0ZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9mYWtlcm9vdC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9mYWtlcm9vdC5kaWZmCkBAIC0xMSw2ICsxMSw3IEBACiBydWxlIHdoZXJlIHRoZSBNYWtlZmlsZSBpcyBjcmVhdGVkLCBidXQgaXMgZm9yIHRoZSBjbGVhbi9iaW5hcnkqIHRhcmdldHMuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9mYWtlcm9vdC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIE1ha2VmaWxlLlNIIHwgNyArKy0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maW5kX2h0bWwydGV4dC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpbmRfaHRtbDJ0ZXh0LmRpZmYKaW5kZXggZDMxOWU3NS4uMDgyNzA5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpbmRfaHRtbDJ0ZXh0LmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpbmRfaHRtbDJ0ZXh0LmRpZmYKQEAgLTE2LDYgKzE2LDcgQEAKIFtNYWludGFpbmVyJ3Mgbm90ZTogaHRtbDJ0ZXh0IGluIERlYmlhbiBpcyBub3QgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24KIGFzIHRoZSBodG1sMnRleHQucGwgd2hpY2ggaXMgZXhwZWN0ZWQsIGJ1dCBzaG91bGQgcHJvdmlkZSBzaW1pbGFyCiBmdW5jdGlvbmFsaXR5XS4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9DUEFOL2xpYi9DUEFOL0Rpc3RyaWJ1dGlvbi5wbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9kb2N1bWVudF9tYWtlbWFrZXJfY2NmbGFncy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYKaW5kZXggNjFhOTI3MS4uZjNkOTI1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYKQEAgLTEwLDYgKzEwLDcgQEAKIGJpbmFyeSBpbnRlcmZhY2Ugb24gc29tZSBwbGF0Zm9ybXMuCiAKIFBhdGNoLU5hbWU6IGZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01ha2VNYWtlci5wbSB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL21lbW9pemVfc3RvcmFibGVfbnN0b3JlLmRpZmYKaW5kZXggNTI1Zjk2Mi4uZDliMzZmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL21lbW9pemVfc3RvcmFibGVfbnN0b3JlLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL21lbW9pemVfc3RvcmFibGVfbnN0b3JlLmRpZmYKQEAgLTQ3LDYgKzQ3LDcgQEAKIEJ1ZzogaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03Nzc5MAogRm9yd2FyZGVkOiBodHRwczovL3J0LmNwYW4ub3JnL1B1YmxpYy9CdWcvRGlzcGxheS5odG1sP2lkPTc3NzkwCiBQYXRjaC1OYW1lOiBmaXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vTWVtb2l6ZS9NZW1vaXplL1N0b3JhYmxlLnBtIHwgIDIgKy0KICBjcGFuL01lbW9pemUvdC90aWVfc3RvcmFibGUudCAgICB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL25ldF9zbXRwX2RvY3MuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9uZXRfc210cF9kb2NzLmRpZmYKaW5kZXggM2MzMTk3Mi4uYWZjZjdmYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL25ldF9zbXRwX2RvY3MuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvbmV0X3NtdHBfZG9jcy5kaWZmCkBAIC03LDYgKzcsNyBAQAogQnVnOiBodHRwOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9MzYwMzgKIAogUGF0Y2gtTmFtZTogZml4ZXMvbmV0X3NtdHBfZG9jcy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vbGlibmV0L2xpYi9OZXQvU01UUC5wbSB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BlcmwtQ25uLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcGVybC1Dbm4uZGlmZgppbmRleCBiNTU2NGZkLi45YmRmNDFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcGVybC1Dbm4uZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcGVybC1Dbm4uZGlmZgpAQCAtMTIsNiArMTIsNyBAQAogQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzg4NjM2CiBPcmlnaW46IHVwc3RyZWFtLCBodHRwOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L2NvbW1pdC84OWQ4NGZmOTY1CiBQYXRjaC1OYW1lOiBmaXhlcy9wZXJsLUNubi5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHQvcnVuL3N3aXRjaEMudCB8ICA3ICsrKysrKy0KICB1dGlsLmMgICAgICAgICAgfCAxNyArKysrKysrKy0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZF9tYW5fcmVwcm9kdWNpYmxlX2RhdGUuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RfbWFuX3JlcHJvZHVjaWJsZV9kYXRlLmRpZmYKaW5kZXggN2M5Y2E4Ni4uZDIzNTczZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZF9tYW5fcmVwcm9kdWNpYmxlX2RhdGUuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kX21hbl9yZXByb2R1Y2libGVfZGF0ZS5kaWZmCkBAIC0xMyw2ICsxMyw3IEBACiBCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzc1OTQwNQogT3JpZ2luOiB1cHN0cmVhbQogUGF0Y2gtTmFtZTogZml4ZXMvcG9kX21hbl9yZXByb2R1Y2libGVfZGF0ZS5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vcG9kbGF0b3JzL2xpYi9Qb2QvTWFuLnBtICB8IDY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogIGNwYW4vcG9kbGF0b3JzL3QvZGV2aXNlLWRhdGUudCB8IDI5ICsrKysrKysrKysrKystLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1lbXB0eS1kYXRlLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLWVtcHR5LWRhdGUuZGlmZgppbmRleCA3ZWJiZjljLi45ZGUyOWI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLWVtcHR5LWRhdGUuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLWVtcHR5LWRhdGUuZGlmZgpAQCAtMTAsNiArMTAsNyBAQAogT3JpZ2luOiB1cHN0cmVhbSwgaHR0cDovL2dpdC5leXJpZS5vcmcvP3A9cGVybC9wb2RsYXRvcnMuZ2l0O2E9Y29tbWl0ZGlmZjtoPWUwZTlmY2I1M2U4ZmM5NTRiMmIxOTU1Mzg1ZWVhMThjMjdmODY5YWYKIEJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc4MDI1OQogUGF0Y2gtTmFtZTogZml4ZXMvcG9kbWFuLWVtcHR5LWRhdGUuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL3BvZGxhdG9ycy9saWIvUG9kL01hbi5wbSAgfCAyICstCiAgY3Bhbi9wb2RsYXRvcnMvdC9kZXZpc2UtZGF0ZS50IHwgNiArKysrKy0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tcGlwZS5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1waXBlLmRpZmYKaW5kZXggMWE2MDM2MS4uZDg4NThkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1waXBlLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1waXBlLmRpZmYKQEAgLTE0LDYgKzE0LDcgQEAKIE9yaWdpbjogdXBzdHJlYW0sIGh0dHA6Ly9naXQuZXlyaWUub3JnLz9wPXBlcmwvcG9kbGF0b3JzLmdpdDthPWNvbW1pdGRpZmY7aD1kOTg4NzJlNDZjOTM4NjFiN2FiYTE0OTQ5ZTEyNTg3MTIwODdkYzU1CiBCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83Nzc0MDUKIFBhdGNoLU5hbWU6IGZpeGVzL3BvZG1hbi1waXBlLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9wb2RsYXRvcnMvbGliL1BvZC9NYW4ucG0gICAgIHwgMTUgKysrKysrKysrKysrKysrCiAgY3Bhbi9wb2RsYXRvcnMvc2NyaXB0cy9wb2QybWFuLlBMIHwgIDQgKysrKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMtZG9jcy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMtZG9jcy5kaWZmCmluZGV4IDBjZGZlZmYuLmI2YWU0MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tdXRjLWRvY3MuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXV0Yy1kb2NzLmRpZmYKQEAgLTEyLDYgKzEyLDcgQEAKIE9yaWdpbjogdXBzdHJlYW0sIGh0dHA6Ly9naXQuZXlyaWUub3JnLz9wPXBlcmwvcG9kbGF0b3JzLmdpdDthPWNvbW1pdGRpZmY7aD01MmRiOTNiZjgwZTRhMDZmODQ5N2U0ZWJhZGUwNTA2YjZlZTBlNzBkCiBCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83ODAyNTkKIFBhdGNoLU5hbWU6IGZpeGVzL3BvZG1hbi11dGMtZG9jcy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vcG9kbGF0b3JzL2xpYi9Qb2QvTWFuLnBtICAgICB8ICA2ICsrKysrLQogIGNwYW4vcG9kbGF0b3JzL3NjcmlwdHMvcG9kMm1hbi5QTCB8IDExICsrKysrKy0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXV0Yy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMuZGlmZgppbmRleCBmYmQ3YjlkLi4zZmI3YzIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXV0Yy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tdXRjLmRpZmYKQEAgLTE0LDYgKzE0LDcgQEAKIE9yaWdpbjogdXBzdHJlYW0sIGh0dHA6Ly9naXQuZXlyaWUub3JnLz9wPXBlcmwvcG9kbGF0b3JzLmdpdDthPWNvbW1pdGRpZmY7aD05MTNmYmIyYmQyY2UwNzFlMjAxMjg2MjkzMDJhZTI4NTI1NTRjYWQ0CiBCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83ODAyNTkKIFBhdGNoLU5hbWU6IGZpeGVzL3BvZG1hbi11dGMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL3BvZGxhdG9ycy9saWIvUG9kL01hbi5wbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9yZXNwZWN0X3VtYXNrLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcmVzcGVjdF91bWFzay5kaWZmCmluZGV4IGQxYjQ5OGIuLmM4NjYzZjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9yZXNwZWN0X3VtYXNrLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3Jlc3BlY3RfdW1hc2suZGlmZgpAQCAtNyw2ICs3LDcgQEAKIHNpdGUgZGlyZWN0b3JpZXMuCiAKIFBhdGNoLU5hbWU6IGZpeGVzL3Jlc3BlY3RfdW1hc2suZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0V4dFV0aWxzLUluc3RhbGwvbGliL0V4dFV0aWxzL0luc3RhbGwucG0gICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtIHwgMTggKysrKysrKysrLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2luc3Rtb2RzaF9kb2MuZGlmZgppbmRleCBhNjJjNzQ2Li43ZTFmZDY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9pbnN0bW9kc2hfZG9jLmRpZmYKQEAgLTQsNiArNCw3IEBACiBTdWJqZWN0OiBEZWJpYW4gcG9saWN5IGRvZXNuJ3QgaW5zdGFsbCAucGFja2xpc3QgZmlsZXMgZm9yIGNvcmUgb3IgdmVuZG9yLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2Jpbi9pbnN0bW9kc2ggfCA0ICsrKy0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGRfcnVuX3BhdGguZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sZF9ydW5fcGF0aC5kaWZmCmluZGV4IGQ4MGY4NmMuLmZmMGIyODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sZF9ydW5fcGF0aC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sZF9ydW5fcGF0aC5kaWZmCkBAIC00LDYgKzQsNyBAQAogU3ViamVjdDogUmVtb3ZlIHN0YW5kYXJkIGxpYnMgZnJvbSBMRF9SVU5fUEFUSCBhcyBwZXIgRGViaWFuIHBvbGljeS4KIAogUGF0Y2gtTmFtZTogZGViaWFuL2xkX3J1bl9wYXRoLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIHwgMyArKysKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGlibmV0X2NvbmZpZ19wYXRoLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGlibmV0X2NvbmZpZ19wYXRoLmRpZmYKaW5kZXggNTRlZjk2NC4uZDUzNDc0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYm5ldF9jb25maWdfcGF0aC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9saWJuZXRfY29uZmlnX3BhdGguZGlmZgpAQCAtNSw2ICs1LDcgQEAKICB3cml0YWJsZS4KIAogUGF0Y2gtTmFtZTogZGViaWFuL2xpYm5ldF9jb25maWdfcGF0aC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vbGlibmV0L2xpYi9OZXQvQ29uZmlnLnBtIHwgNyArKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9saWJwZXJsX2VtYmVkX2RvYy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYnBlcmxfZW1iZWRfZG9jLmRpZmYKaW5kZXggNzZiODA1NC4uMGNkYzBkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYnBlcmxfZW1iZWRfZG9jLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYnBlcmxfZW1iZWRfZG9jLmRpZmYKQEAgLTYsNiArNiw3IEBACiBCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzE4Njc3OAogCiBQYXRjaC1OYW1lOiBkZWJpYW4vbGlicGVybF9lbWJlZF9kb2MuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBsaWIvRXh0VXRpbHMvRW1iZWQucG0gfCAzICsrKwogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sb2NhbGUtcm9idXN0bmVzcy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xvY2FsZS1yb2J1c3RuZXNzLmRpZmYKaW5kZXggZmQ0NzFlZC4uN2NmMTI0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xvY2FsZS1yb2J1c3RuZXNzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xvY2FsZS1yb2J1c3RuZXNzLmRpZmYKQEAgLTE0LDYgKzE0LDcgQEAKIEJ1ZzogaHR0cHM6Ly9ydC5wZXJsLm9yZy9UaWNrZXQvRGlzcGxheS5odG1sP2lkPTEyNDMxMAogQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzgyMDY4CiBQYXRjaC1OYW1lOiBkZWJpYW4vbG9jYWxlLXJvYnVzdG5lc3MuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0L3J1bi9sb2NhbGUudCB8IDcgKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyLXBhc3RocnUuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXItcGFzdGhydS5kaWZmCmluZGV4IGZhMGY5ZGEuLjVmMDcxODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXItcGFzdGhydS5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXItcGFzdGhydS5kaWZmCkBAIC0xMSw2ICsxMSw3IEBACiAKIEJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc1ODQ3MQogUGF0Y2gtTmFtZTogZGViaWFuL21ha2VtYWtlci1wYXN0aHJ1LmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyX2N1c3RvbWl6ZWQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXJfY3VzdG9taXplZC5kaWZmCmluZGV4IGIxYjRjYjkuLmQ4NzBiNjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXJfY3VzdG9taXplZC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXJfY3VzdG9taXplZC5kaWZmCkBAIC00LDYgKzQsNyBAQAogU3ViamVjdDogVXBkYXRlIHQvcG9ydGluZy9jdXN0b21pemVkLmRhdCBmb3IgZmlsZXMgcGF0Y2hlZCBpbiBEZWJpYW4KIAogUGF0Y2gtTmFtZTogZGViaWFuL21ha2VtYWtlcl9jdXN0b21pemVkLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdC9wb3J0aW5nL2N1c3RvbWl6ZWQuZGF0IHwgOCArKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbW9kX3BhdGhzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbW9kX3BhdGhzLmRpZmYKaW5kZXggYWUxNTkwNy4uN2UyMjQ4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL21vZF9wYXRocy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tb2RfcGF0aHMuZGlmZgpAQCAtMTcsNiArMTcsNyBAQAogdmVyc2lvbiB0aGFuIGlzIGluY2x1ZGVkIGluIGNvcmUuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9tb2RfcGF0aHMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBwZXJsLmMgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9ub19wYWNrbGlzdF9wZXJsbG9jYWwuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9ub19wYWNrbGlzdF9wZXJsbG9jYWwuZGlmZgppbmRleCBiOTExZmQyLi43NDg0YmVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbm9fcGFja2xpc3RfcGVybGxvY2FsLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL25vX3BhY2tsaXN0X3Blcmxsb2NhbC5kaWZmCkBAIC00LDYgKzQsNyBAQAogU3ViamVjdDogRG9uJ3QgaW5zdGFsbCAucGFja2xpc3Qgb3IgcGVybGxvY2FsLnBvZCBmb3IgcGVybCBvciB2ZW5kb3IKIAogUGF0Y2gtTmFtZTogZGViaWFuL25vX3BhY2tsaXN0X3Blcmxsb2NhbC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtIHwgMzUgKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BhdGNobGV2ZWwuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wYXRjaGxldmVsLmRpZmYKaW5kZXggODY1NmIwMi4uMmQwNWFlNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BhdGNobGV2ZWwuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGF0Y2hsZXZlbC5kaWZmCkBAIC0xMCw2ICsxMCw3IEBACiBmcm9tIHRoZSBkZWJpYW4vcGF0Y2hlcy8gZGlyZWN0b3J5IHdoZW4gYnVpbGRpbmcgdGhlIHBhY2thZ2UuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9wYXRjaGxldmVsLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgcGF0Y2hsZXZlbC5oIHwgMyArKysKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3Blcmw1ZGIteC10ZXJtaW5hbC1lbXVsYXRvci5wYXRjaAppbmRleCA1MzM5NTJjLi42ZjE2MjViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wZXJsNWRiLXgtdGVybWluYWwtZW11bGF0b3IucGF0Y2gKQEAgLTEwLDYgKzEwLDcgQEAKIEZvcndhcmRlZDogbm90LW5lZWRlZAogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGxpYi9wZXJsNWRiLnBsIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BlcmxpdnAuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wZXJsaXZwLmRpZmYKaW5kZXggMmMxZWFiOS4uNWM3NDEzYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BlcmxpdnAuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGVybGl2cC5kaWZmCkBAIC0yMSw2ICsyMSw3IEBACiBTaWduZWQtb2ZmLWJ5OiBOaWtvIFR5bmkgPG50eW5pQGRlYmlhbi5vcmc+CiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9wZXJsaXZwLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdXRpbHMvcGVybGl2cC5QTCB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BvZDJtYW4tY3VzdG9taXplZC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BvZDJtYW4tY3VzdG9taXplZC5kaWZmCmluZGV4IDYyNzBiODcuLjQ3MDc1NjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wb2QybWFuLWN1c3RvbWl6ZWQuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcG9kMm1hbi1jdXN0b21pemVkLmRpZmYKQEAgLTQsNiArNCw3IEBACiBTdWJqZWN0OiBVcGRhdGUgcG9ydGluZy9jdXN0b21pemVkLmRhdCBmb3IgcG9kMm1hbiBtb2RpZmljYXRpb25zCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9wb2QybWFuLWN1c3RvbWl6ZWQuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0L3BvcnRpbmcvY3VzdG9taXplZC5kYXQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJlZml4X2NoYW5nZXMuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmCmluZGV4IGM0MWVmYmUuLmI2ODFjM2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmCkBAIC05LDYgKzksNyBAQAogbW9kdWxlcykuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9BbnkucG0gIHwgMTIgKysrKysrLS0tLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gfCAgMyArLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcnVuZV9saWJzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJ1bmVfbGlicy5kaWZmCmluZGV4IGQxNTNlMGUuLmEyZWQ1MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcnVuZV9saWJzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BydW5lX2xpYnMuZGlmZgpAQCAtMTAsNyArMTAsNyBAQAogYW5kIHNvbWUgb2YgdGhlIG9yaWdpbmFsIGxpc3QgbWF5IGJlIHByZXNlbnQgb24gYnVpbGRkcyAoc2VlIEJ1ZyMxMjgzNTUpLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcHJ1bmVfbGlicy5kaWZmCi0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgQ29uZmlndXJlIHwgNSArKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcmVnZW4tc2tpcC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3JlZ2VuLXNraXAuZGlmZgppbmRleCA4YTNmYzk5Li41ZDlhN2M0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcmVnZW4tc2tpcC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9yZWdlbi1za2lwLmRpZmYKQEAgLTgsNiArOCw3IEBACiB0aGUgcmVnZW5lcmF0aW9uIGNoZWNrIGlzIGJyb2tlbiBiZWNhdXNlIGxpYi8uZ2l0aWdub3JlIGlzIG1pc3NpbmcuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9yZWdlbi1za2lwLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgcmVnZW4vbGliX2NsZWFudXAucGwgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC1rZnJlZWJzZC1jcmFzaC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NraXAta2ZyZWVic2QtY3Jhc2guZGlmZgppbmRleCBlY2ZjMGJjLi4zYjM3NDUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC1rZnJlZWJzZC1jcmFzaC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLWtmcmVlYnNkLWNyYXNoLmRpZmYKQEAgLTEyLDYgKzEyLDcgQEAKIFNraXAgdGhlIHRlc3QgdW50aWwgdGhlIGN1bHByaXQgaXMgZm91bmQuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9za2lwLWtmcmVlYnNkLWNyYXNoLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdC9vcC90aHJlYWRzLnQgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC11cHN0cmVhbS1naXQtdGVzdHMuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmCmluZGV4IDRjODcxMDQuLjI3OWY0YWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmCkBAIC05LDYgKzksNyBAQAogU2tpcCB0aGUgdGVzdHMgYWx0b2dldGhlciBldmVuIGlmIHRoZSAuZ2l0IGRpcmVjdG9yeSBleGlzdHMuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHQvdGVzdC5wbCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9zcXVlbGNoLWxvY2FsZS13YXJuaW5ncy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NxdWVsY2gtbG9jYWxlLXdhcm5pbmdzLmRpZmYKaW5kZXggY2IzMTQ1Ny4uNDk2NGU0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NxdWVsY2gtbG9jYWxlLXdhcm5pbmdzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NxdWVsY2gtbG9jYWxlLXdhcm5pbmdzLmRpZmYKQEAgLTE0LDYgKzE0LDcgQEAKIHRoZSB3YXJuaW5nIHdpbGwgYmUgdHJpZ2dlcmVkIG5vcm1hbGx5IGFnYWluIGF0IHRoYXQgcG9pbnQuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9zcXVlbGNoLWxvY2FsZS13YXJuaW5ncy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGxvY2FsZS5jICAgICAgICAgICB8IDUgKysrKy0KICBwb2QvcGVybGxvY2FsZS5wb2QgfCA4ICsrKysrKysrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vd3JpdGFibGVfc2l0ZV9kaXJzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vd3JpdGFibGVfc2l0ZV9kaXJzLmRpZmYKaW5kZXggNTNhZGMyZi4uYWIzNzNiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3dyaXRhYmxlX3NpdGVfZGlycy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi93cml0YWJsZV9zaXRlX2RpcnMuZGlmZgpAQCAtNiw2ICs2LDcgQEAKIFBvbGljeSByZXF1aXJlcyBncm91cCB3cml0YWJsZSBzaXRlIGRpcmVjdG9yaWVzCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi93cml0YWJsZV9zaXRlX2RpcnMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fVW5peC5wbSB8IDYgKysrLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2V4dC1PREJNX0ZpbGUtdC1vZGJtLnQtZml4LXRoZS1wYXRoLW9mLWRibXRfY29tbW9uLnAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9leHQtT0RCTV9GaWxlLXQtb2RibS50LWZpeC10aGUtcGF0aC1vZi1kYm10X2NvbW1vbi5wLnBhdGNoCmluZGV4IDZiMDViODcuLmI4NWI1MGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2V4dC1PREJNX0ZpbGUtdC1vZGJtLnQtZml4LXRoZS1wYXRoLW9mLWRibXRfY29tbW9uLnAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZXh0LU9EQk1fRmlsZS10LW9kYm0udC1maXgtdGhlLXBhdGgtb2YtZGJtdF9jb21tb24ucC5wYXRjaApAQCAtOSw2ICs5LDggQEAKIENhbid0IGxvY2F0ZSAuLi8uLi90L2xpYi9kYm10X2NvbW1vbi5wbCBpbiBASU5DCiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGV4dC9PREJNX0ZpbGUvdC9vZGJtLnQgfCAgICAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIKaW5kZXggY2Y3YThlMS4uYjU1ZDIyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYgpAQCAtMTI0LDMwICsxMjQsOCBAQAogICAgICAgICAgICAgY2F0ICRpID4+IGNvbmZpZy5zaC0ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30KICAgICAgICAgZG9uZQogCi0gICAgICAgICMgRml4dXBzIGZvciB1Y2xpYmMKLSAgICAgICAgaWYgWyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC11Y2xpYmMiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LXVjbGliY2VhYmkiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgInMsXChkX2NyeXB0X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZnV0aW1lcz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9maW5pdGVsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChjcnlwdF9yX3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZ2V0bmV0YnluYW1lX3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGJ5bmFtZV9yX3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZ2V0bmV0YnlhZGRyX3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGJ5YWRkcl9yX3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZ2V0bmV0ZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGVudF9yX3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc29ja2F0bWFyaz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zb2NrYXRtYXJrcHJvdG89XCknXHcrJyxcMScwJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9lYWNjZXNzPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsX3NldHNfY250PVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvYmFzZT1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRzdGRpbz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLC1mc3RhY2stcHJvdGVjdG9yLC1mbm8tc3RhY2stcHJvdGVjdG9yLGciIFwKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQotICAgICAgICBmaQogICAgICAgICAjIEZpeHVwcyBmb3IgbXVzbAotICAgICAgICBpZiBbICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2wiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2xlYWJpIiBdOyB0aGVuCisgICAgICAgIGlmIFsgIiR7VEFSR0VUX09TfSIgPSAibGludXgtbXVzbCIgLW8gIiR7VEFSR0VUX09TfSIgPSAibGludXgtbXVzbGVhYmkiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2x4MzIiIF07IHRoZW4KICAgICAgICAgICAgICAgICBzZWQgLWkgLWUgInMsXChkX2xpYm1fbGliX3ZlcnNpb249XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAogICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc3RkaW9fcHRyX2x2YWw9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAogICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc3RkaW9fcHRyX2x2YWxfc2V0c19jbnQ9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXApAQCAtMTkzLDcgKzE3MSw3IEBACiAJCQk7OwogCWVzYWMKICAgICAgICAgIyBUaGVzZSBhcmUgc3RyZXduIGFsbCBvdmVyIHRoZSBzb3VyY2UgdHJlZQotICAgICAgICBmb3IgZm9vIGluIGBncmVwIC1JIC0tZXhjbHVkZT0iKi5wYXRjaCIgLS1leGNsdWRlPSIqLmRpZmYiIC0tZXhjbHVkZT0iKi5wb2QiIC0tZXhjbHVkZT0iUkVBRE1FKiIgLW0xICIvdXNyL2luY2x1ZGUvLipcLmgiICR7U30vKiAtciAtbGAgJHtTfS91dGlscy9oMnhzLlBMIDsgZG8KKyAgICAgICAgZm9yIGZvbyBpbiBgZ3JlcCAtSSAtLWV4Y2x1ZGU9IioucGF0Y2giIC0tZXhjbHVkZT0iKi5kaWZmIiAtLWV4Y2x1ZGU9IioucG9kIiAtLWV4Y2x1ZGU9IlJFQURNRSoiIC0tZXhjbHVkZT0iR2xvc3NhcnkiIC1tMSAiL3Vzci9pbmNsdWRlLy4qXC5oIiAke1N9LyogLXIgLWxgICR7U30vdXRpbHMvaDJ4cy5QTCA7IGRvCiAgICAgICAgICAgICBlY2hvIEZpeGluZzogJGZvbwogICAgICAgICAgICAgc2VkIC1lICdzfFwoWyAiXidcJydJXVwrXCkvdXNyL2luY2x1ZGUvfFwxJHtTVEFHSU5HX0lOQ0RJUn0vfGcnIC1pICRmb28KICAgICAgICAgZG9uZQpAQCAtMjQ1LDYgKzIyMyw3IEBACiBwZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CiAgICAgICAgICMgRml4IHVwIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCiAgICAgICAgIHNlZCAtaSAtZSAicywke0R9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke0RFQlVHX1BSRUZJWF9NQVB9LCxnIiBcCiAgICAgICAgICAgICAgICAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSwsZyIgXAogICAgICAgICAgICAgICAgLWUgInMsLWlzeXN0ZW0ke1NUQUdJTkdfSU5DRElSfSAsLGciIFwKICAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi8wMDAxLU1pbmltYWwtdHdlYWtzLXRvLWNvbXBpbGUtd2l0aC1WaXN1YWwtQy0yMDE1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODA1YWQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaApAQCAtMCwwICsxLDIyNCBAQAorRnJvbSA0ZDdiNGQ3YzhlOTk2NmM1OTNmNDcyMzU1NjA3MjA0YzZjODBmZWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KK0RhdGU6IFN1biwgNCBKdW4gMjAxNyAxOToxOTo1NSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBNaW5pbWFsIHR3ZWFrcyB0byBjb21waWxlIHdpdGggVmlzdWFsIEMgMjAxNQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZ2V0b3B0X2xvbmcuYyAgICAgICAgICAgfCAgMiArKworIGxpYnBrZ2NvbmYvYnNkc3R1YnMuYyAgIHwgIDEgKworIGxpYnBrZ2NvbmYvbGlicGtnY29uZi5oIHwgIDIgKy0KKyBsaWJwa2djb25mL3BhdGguYyAgICAgICB8IDEwICsrKysrLS0tLS0KKyBsaWJwa2djb25mL3BrZy5jICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyBsaWJwa2djb25mL3N0ZGluYy5oICAgICB8ICA5ICsrKysrKystLQorIDYgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZXRvcHRfbG9uZy5jIGIvZ2V0b3B0X2xvbmcuYworaW5kZXggYWZlYjY4ZC4uNWNlOWJmZCAxMDA2NDQKKy0tLSBhL2dldG9wdF9sb25nLmMKKysrKyBiL2dldG9wdF9sb25nLmMKK0BAIC02Miw3ICs2Miw5IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaWZuZGVmIF9XSU4zMgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKysjZW5kaWYKKyAKKyAjZGVmaW5lIFBLR0NPTkZfSEFDS19MT0dJQ0FMX09SX0FMTF9WQUxVRVMKKyAKK2RpZmYgLS1naXQgYS9saWJwa2djb25mL2JzZHN0dWJzLmMgYi9saWJwa2djb25mL2JzZHN0dWJzLmMKK2luZGV4IDhmNzBmZjMuLjJjMDAwYWMgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL2JzZHN0dWJzLmMKKysrKyBiL2xpYnBrZ2NvbmYvYnNkc3R1YnMuYworQEAgLTE3LDYgKzE3LDcgQEAKKyAgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorICAqLworIAorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvbGlicGtnY29uZi5oIGIvbGlicGtnY29uZi9saWJwa2djb25mLmgKK2luZGV4IDQwNGJmMGMuLjU1MWQ4NWQgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL2xpYnBrZ2NvbmYuaAorKysrIGIvbGlicGtnY29uZi9saWJwa2djb25mLmgKK0BAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBwa2djb25mX2F1ZGl0X2xvZ19kZXBlbmRlbmN5KHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgcGtnY29uZl9wa2dfdAorIC8qIHBhdGguYyAqLworIHZvaWQgcGtnY29uZl9wYXRoX2FkZChjb25zdCBjaGFyICp0ZXh0LCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpOworIHNpemVfdCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKKy1zaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZpcm9uLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKKytzaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZ2YXJuYW1lLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKKyBib29sIHBrZ2NvbmZfcGF0aF9tYXRjaF9saXN0KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KTsKKyB2b2lkIHBrZ2NvbmZfcGF0aF9mcmVlKHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KTsKKyBib29sIHBrZ2NvbmZfcGF0aF9yZWxvY2F0ZShjaGFyICpidWYsIHNpemVfdCBidWZsZW4pOworZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvcGF0aC5jIGIvbGlicGtnY29uZi9wYXRoLmMKK2luZGV4IGRkZGIzYmYuLjU5ZTAwM2UgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL3BhdGguYworKysrIGIvbGlicGtnY29uZi9wYXRoLmMKK0BAIC0yMCw3ICsyMCw3IEBACisgIyBpbmNsdWRlIDxzeXMvY3lnd2luLmg+CisgI2VuZGlmCisgCistI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRfSCkgJiYgISBkZWZpbmVkKF9XSU4zMikKKyAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisgIyBkZWZpbmUgUEtHQ09ORl9DQUNIRV9JTk9ERVMKKyAjZW5kaWYKK0BAIC0xNTYsMTIgKzE1NiwxMiBAQCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKQorIC8qCisgICogIWRvYworICAqCistICogLi4gYzpmdW5jdGlvbjo6IHNpemVfdCBwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudmlyb24sIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCkKKysgKiAuLiBjOmZ1bmN0aW9uOjogc2l6ZV90IHBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52dmFybmFtZSwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KQorICAqCisgICogICAgQWRkcyB0aGUgcGF0aHMgc3BlY2lmaWVkIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgcGF0aCBsaXN0LiAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQsCisgICogICAgYW4gb3B0aW9uYWwgZGVmYXVsdCBzZXQgb2YgcGF0aHMgaXMgYWRkZWQuCisgICoKKy0gKiAgICA6cGFyYW0gY2hhciogZW52aXJvbjogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGxvb2sgdXAuCisrICogICAgOnBhcmFtIGNoYXIqIGVudnZhcm5hbWU6IFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBsb29rIHVwLgorICAqICAgIDpwYXJhbSBjaGFyKiBmYWxsYmFjazogVGhlIGZhbGxiYWNrIHBhdGhzIHRvIHVzZSBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KKyAgKiAgICA6cGFyYW0gcGtnY29uZl9saXN0X3QqIGRpcmxpc3Q6IFRoZSBwYXRoIGxpc3QgdG8gYWRkIHRoZSBwYXRoIG5vZGVzIHRvLgorICAqICAgIDpwYXJhbSBib29sIGZpbHRlcjogV2hldGhlciB0byBwZXJmb3JtIGR1cGxpY2F0ZSBmaWx0ZXJpbmcuCitAQCAtMTY5LDExICsxNjksMTEgQEAgcGtnY29uZl9wYXRoX3NwbGl0KGNvbnN0IGNoYXIgKnRleHQsIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKKyAgKiAgICA6cnR5cGU6IHNpemVfdAorICAqLworIHNpemVfdAorLXBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52aXJvbiwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKKytwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudnZhcm5hbWUsIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpCisgeworIAljb25zdCBjaGFyICpkYXRhOworIAorLQlkYXRhID0gZ2V0ZW52KGVudmlyb24pOworKwlkYXRhID0gZ2V0ZW52KGVudnZhcm5hbWUpOworIAlpZiAoZGF0YSAhPSBOVUxMKQorIAkJcmV0dXJuIHBrZ2NvbmZfcGF0aF9zcGxpdChkYXRhLCBkaXJsaXN0LCBmaWx0ZXIpOworIAorZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvcGtnLmMgYi9saWJwa2djb25mL3BrZy5jCitpbmRleCA3YWViZDYxLi41ZGFjYWUzIDEwMDY0NAorLS0tIGEvbGlicGtnY29uZi9wa2cuYworKysrIGIvbGlicGtnY29uZi9wa2cuYworQEAgLTMwLDYgKzMwLDggQEAKKyAjCWRlZmluZSBQS0dfQ09ORklHX1JFR19LRVkgIlNvZnR3YXJlXFxwa2djb25maWdcXFBLR19DT05GSUdfUEFUSCIKKyAjCXVuZGVmIFBLR19ERUZBVUxUX1BBVEgKKyAjCWRlZmluZSBQS0dfREVGQVVMVF9QQVRIICIuLi9saWIvcGtnY29uZmlnOy4uL3NoYXJlL3BrZ2NvbmZpZyIKKysjZGVmaW5lIHN0cm5jYXNlY21wIF9zdHJuaWNtcAorKyNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAorICNlbmRpZgorIAorICNkZWZpbmUgUEtHX0NPTkZJR19FWFQJCSIucGMiCitAQCAtMTM0LDIxICsxMzYsMjEgQEAgc3RhdGljIGludCBwa2djb25mX3BrZ19wYXJzZXJfa2V5d29yZF9wYWlyX2NtcChjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnB0cikKKyBzdGF0aWMgdm9pZAorIHBrZ2NvbmZfcGtnX3BhcnNlcl90dXBsZV9mdW5jKGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgcGtnY29uZl9wa2dfdCAqcGtnLCBjb25zdCBwdHJkaWZmX3Qgb2Zmc2V0LCBjaGFyICp2YWx1ZSkKKyB7CistCWNoYXIgKipkZXN0ID0gKCh2b2lkICopIHBrZyArIG9mZnNldCk7CisrCWNoYXIgKipkZXN0ID0gKGNoYXIgKiopKChjaGFyICopIHBrZyArIG9mZnNldCk7CisgCSpkZXN0ID0gcGtnY29uZl90dXBsZV9wYXJzZShjbGllbnQsICZwa2ctPnZhcnMsIHZhbHVlKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKyBwa2djb25mX3BrZ19wYXJzZXJfZnJhZ21lbnRfZnVuYyhjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHBrZ2NvbmZfcGtnX3QgKnBrZywgY29uc3QgcHRyZGlmZl90IG9mZnNldCwgY2hhciAqdmFsdWUpCisgeworLQlwa2djb25mX2xpc3RfdCAqZGVzdCA9ICgodm9pZCAqKSBwa2cgKyBvZmZzZXQpOworKwlwa2djb25mX2xpc3RfdCAqZGVzdCA9IChwa2djb25mX2xpc3RfdCAqKSgoY2hhciAqKSBwa2cgKyBvZmZzZXQpOworIAlwa2djb25mX2ZyYWdtZW50X3BhcnNlKGNsaWVudCwgZGVzdCwgJnBrZy0+dmFycywgdmFsdWUpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorIHBrZ2NvbmZfcGtnX3BhcnNlcl9kZXBlbmRlbmN5X2Z1bmMoY29uc3QgcGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBwa2djb25mX3BrZ190ICpwa2csIGNvbnN0IHB0cmRpZmZfdCBvZmZzZXQsIGNoYXIgKnZhbHVlKQorIHsKKy0JcGtnY29uZl9saXN0X3QgKmRlc3QgPSAoKHZvaWQgKikgcGtnICsgb2Zmc2V0KTsKKysJcGtnY29uZl9saXN0X3QgKmRlc3QgPSAocGtnY29uZl9saXN0X3QgKikoKGNoYXIgKikgcGtnICsgb2Zmc2V0KTsKKyAJcGtnY29uZl9kZXBlbmRlbmN5X3BhcnNlKGNsaWVudCwgcGtnLCBkZXN0LCB2YWx1ZSk7CisgfQorIAorQEAgLTIzOCw3ICsyNDAsNyBAQCBwa2djb25mX3BrZ192YWxpZGF0ZShjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIGNvbnN0IHBrZ2NvbmZfcGtnX3QgKnBrZykKKyAKKyAJZm9yIChpID0gMDsgaSA8IFBLR0NPTkZfQVJSQVlfU0laRShwa2djb25mX3BrZ192YWxpZGF0aW9ucyk7IGkrKykKKyAJeworLQkJY2hhciAqKnAgPSAoKHZvaWQgKikgcGtnICsgcGtnY29uZl9wa2dfdmFsaWRhdGlvbnNbaV0ub2Zmc2V0KTsKKysJCWNoYXIgKipwID0gKGNoYXIgKiopKChjaGFyICopIHBrZyArIHBrZ2NvbmZfcGtnX3ZhbGlkYXRpb25zW2ldLm9mZnNldCk7CisgCisgCQlpZiAoKnAgIT0gTlVMTCkKKyAJCQljb250aW51ZTsKK0BAIC01ODcsNyArNTg5LDcgQEAgcGtnY29uZl9zY2FuX2FsbChwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHZvaWQgKmRhdGEsIHBrZ2NvbmZfcGtnX2l0ZXJhdGlvbl9mdW4KKyAKKyAjaWZkZWYgX1dJTjMyCisgc3RhdGljIHBrZ2NvbmZfcGtnX3QgKgorLXBrZ2NvbmZfcGtnX2ZpbmRfaW5fcmVnaXN0cnlfa2V5KGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgSEtFWSBoa2V5LCBjb25zdCBjaGFyICpuYW1lKQorK3BrZ2NvbmZfcGtnX2ZpbmRfaW5fcmVnaXN0cnlfa2V5KHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgSEtFWSBoa2V5LCBjb25zdCBjaGFyICpuYW1lKQorIHsKKyAJcGtnY29uZl9wa2dfdCAqcGtnID0gTlVMTDsKKyAKK0BAIC0xMDQ4LDggKzEwNTAsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeworIAorIHN0YXRpYyBjb25zdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF9ydWxlX3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZXNbXSA9IHsKKyAJW1BLR0NPTkZfQ01QX0FOWV0gPSB7CistCQkucnVsZWNtcCA9IHt9LAorLQkJLmRlcGNtcCA9IHt9LAorKwkJLnJ1bGVjbXAgPSB7CisrCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKKysgICAgICAgICAgICAgICAgfSwKKysJCS5kZXBjbXAgPSB7CisrCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKKysgICAgICAgICAgICAgICAgfSwKKyAJfSwKKyAJW1BLR0NPTkZfQ01QX0xFU1NfVEhBTl0gPSB7CisgCQkucnVsZWNtcCA9IHsKK0BAIC0xMTIxLDcgKzExMjcsOSBAQCBzdGF0aWMgY29uc3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZV90IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoXworIAkJCVtQS0dDT05GX0NNUF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfZXEsCisgCQkJW1BLR0NPTkZfQ01QX05PVF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfbmUKKyAJCX0sCistCQkuZGVwY21wID0ge30sCisrCQkuZGVwY21wID0geworKwkJCVtQS0dDT05GX0NNUF9BTlldCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25vbmUsCisrICAgICAgICAgICAgICAgIH0sCisgCX0sCisgCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdID0geworIAkJLnJ1bGVjbXAgPSB7CitAQCAtMTEzMyw3ICsxMTQxLDkgQEAgc3RhdGljIGNvbnN0IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoX3J1bGVfdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF8KKyAJCQlbUEtHQ09ORl9DTVBfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25lLAorIAkJCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX2VxCisgCQl9LAorLQkJLmRlcGNtcCA9IHt9LAorKwkJLmRlcGNtcCA9IHsKKysJCQlbUEtHQ09ORl9DTVBfQU5ZXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9ub25lLAorKyAgICAgICAgICAgICAgICB9LAorIAl9LAorIH07CisgCitkaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9zdGRpbmMuaCBiL2xpYnBrZ2NvbmYvc3RkaW5jLmgKK2luZGV4IDU4Y2M2YzcuLmFjN2U1M2MgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL3N0ZGluYy5oCisrKysgYi9saWJwa2djb25mL3N0ZGluYy5oCitAQCAtMjQsOSArMjQsNyBAQAorICNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgCisgI2lmZGVmIF9XSU4zMgorQEAgLTM0LDggKzMyLDE1IEBACisgIyBpbmNsdWRlIDx3aW5kb3dzLmg+CisgIyBpbmNsdWRlIDxtYWxsb2MuaD4KKyAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSJudWwiCisrIyBpZm5kZWYgc3NpemVfdAorKyMgIGluY2x1ZGUgPEJhc2VUc2QuaD4KKysjICBkZWZpbmUgc3NpemVfdCBTU0laRV9UCisrIyBlbmRpZgorKyMgaW5jbHVkZSAid2luLWRpcmVudC5oIgorICNlbHNlCisgIyBkZWZpbmUgUEFUSF9ERVZfTlVMTAkiL2Rldi9udWxsIgorKyMgaW5jbHVkZSA8ZGlyZW50Lmg+CisrIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyAjZW5kaWYKKyAKKyAjZW5kaWYKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllYmUzMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBlYTI4YzViMzQ0NTdjZjc2NzYxODFiMjg0ZTIyZWE1Zjc5YTMwZDg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMTQ6NDc6MzEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RkaW5jLmg6IGZpeCBidWlsZCB3aXRoIG1pbmd3CisKK0ZpeGVzIHRoaXMgYnVpbGQgZXJyb3Igd2l0aCBtaW5ndzoKKy4uLgorfCBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vcGtnY29uZi0xLjMuNy9saWJwa2djb25mL2xpYnBrZ2NvbmYuaDoxOTowLAorfCBmcm9tIC4uL3BrZ2NvbmYtMS4zLjcvbGlicGtnY29uZi9hdWRpdC5jOjE2OgorfCAuLi9wa2djb25mLTEuMy43L2xpYnBrZ2NvbmYvc3RkaW5jLmg6MzY6MTI6IGZhdGFsIGVycm9yOiBCYXNlVHNkLmg6IE5vCitzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit8ICMgaW5jbHVkZSA8QmFzZVRzZC5oPgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGxpYnBrZ2NvbmYvc3RkaW5jLmggfCAxMCArKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9zdGRpbmMuaCBiL2xpYnBrZ2NvbmYvc3RkaW5jLmgKK2luZGV4IGFjN2U1M2MuLmQ4ZWZjZjUgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL3N0ZGluYy5oCisrKysgYi9saWJwa2djb25mL3N0ZGluYy5oCitAQCAtMzMsMTAgKzMzLDE4IEBACisgIyBpbmNsdWRlIDxtYWxsb2MuaD4KKyAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSJudWwiCisgIyBpZm5kZWYgc3NpemVfdAorKyMgaWZuZGVmIF9fTUlOR1czMl9fCisgIyAgaW5jbHVkZSA8QmFzZVRzZC5oPgorKyMgZWxzZQorKyMgIGluY2x1ZGUgPGJhc2V0c2QuaD4KKysjIGVuZGlmCisgIyAgZGVmaW5lIHNzaXplX3QgU1NJWkVfVAorICMgZW5kaWYKKy0jIGluY2x1ZGUgIndpbi1kaXJlbnQuaCIKKysjIGlmbmRlZiBfX01JTkdXMzJfXworKyMgIGluY2x1ZGUgIndpbi1kaXJlbnQuaCIKKysjIGVsc2UKKysjIGluY2x1ZGUgPGRpcmVudC5oPgorKyMgZW5kaWYKKyAjZWxzZQorICMgZGVmaW5lIFBBVEhfREVWX05VTEwJIi9kZXYvbnVsbCIKKyAjIGluY2x1ZGUgPGRpcmVudC5oPgorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLWVzZGsuaW4gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLWVzZGsuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjOWIwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctZXNkay5pbgpAQCAtMCwwICsxLDI0IEBACisjISAvYmluL3NoCisKKyMgT3JpZ25hbCBwa2ctY29uZmlnLW5hdGl2ZSBhY3Rpb24gd2hlbiBjYWxsZWQgYXMgcGtnLWNvbmZpZy1uYXRpdmUKKyMgTk8gQ2hhbmdlIGhlcmUKK2lmIFsgInBrZy1jb25maWctbmF0aXZlIiA9ICJgYmFzZW5hbWUgJDBgIiBdIDsgdGhlbgorCVBLR19DT05GSUdfUEFUSD0iQFBBVEhfTkFUSVZFQCIKKwlQS0dfQ09ORklHX0xJQkRJUj0iQExJQkRJUl9OQVRJVkVAIgorCXVuc2V0IFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK2Vsc2UKKwkjIGluIHRoaXMgY2FzZSBjaGVjayBpZiB3ZSBhcmUgaW4gdGhlIGVzZGsKKwlpZiBbICIkT0VfU0tJUF9TREtfQ0hFQ0siID0gIjEiIF0gOyB0aGVuCisJCXBhcmVudHBpZD1gcHMgLW8gcHBpZD0gLXAgJCRgCisJCXBhcmVudHBpZF9pbmZvPWBwcyAtd28gY29tbT0gLW8gYXJncz0gLXAgJHBhcmVudHBpZGAKKworCQkjIGNoZWNrIGlmIHdlIGFyZSBiZWluZyBjYWxsZWQgZnJvbSAgdGhlIGtlcm5lbCdzIG1ha2UgbWVudWNvbmZpZworCQlpZiAoIGVjaG8gJHBhcmVudHBpZF9pbmZvIHwgZ3JlcCAtcSBjaGVjay1seGRpYWxvZyApIDsgdGhlbgorCQkJUEtHX0NPTkZJR19QQVRIPSJAUEFUSF9OQVRJVkVAIgorCQkJUEtHX0NPTkZJR19MSUJESVI9IkBMSUJESVJfTkFUSVZFQCIKKwkJCXVuc2V0IFBLR19DT05GSUdfU1lTUk9PVF9ESVIKKwkJZmkKKwlmaQorZmkKKworcGtnLWNvbmZpZy5yZWFsICIkQCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctbmF0aXZlLmluIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy1uYXRpdmUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVkMzBhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctbmF0aXZlLmluCkBAIC0wLDAgKzEsNiBAQAorIyEgL2Jpbi9zaAorCitQS0dfQ09ORklHX1BBVEg9IkBQQVRIX05BVElWRUAiCit1bnNldCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCisKK3BrZy1jb25maWcgIiRAIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy13cmFwcGVyIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy13cmFwcGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY5NWYzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLXdyYXBwZXIKQEAgLTAsMCArMSwxNiBAQAorIyEvYmluL3NoCisjIHBrZ2NvbmYgd3JhcHBlciB0byBkZWFsIHdpdGggcGtnLWNvbmZpZy9wa2djb25mIGNvbXBhdGliaWxpdHkgaXNzdWVzCisjCisjIENvcHlyaWdodCAoQykgMjAxNSBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorIyBMaWNlbnNlOiBNSVQgKHNlZSBDT1BZSU5HLk1JVCBhdCB0aGUgcm9vdCBvZiB0aGUgcmVwb3NpdG9yeSBmb3IgdGVybXMpCisKK2ZvciBhcmc7IGRvCisgICAgY2FzZSAiJGFyZyIgaW4KKyAgICAgICAgLS12YXJpYWJsZXwtLXZhcmlhYmxlPSopCisgICAgICAgICAgICAjIHBrZy1jb25maWcgZG9lc24ndCBzeXNyb290LXByZWZpeCB1c2VyIHZhcmlhYmxlcworICAgICAgICAgICAgdW5zZXQgUEtHX0NPTkZJR19TWVNST09UX0RJUgorICAgICAgICAgICAgOzsKKyAgICBlc2FjCitkb25lCisKK2V4ZWMgcGtnY29uZiAiJEAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuMy43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTBkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYgpAQCAtMCwwICsxLDczIEBACitTVU1NQVJZID0gInBrZ2NvbmYgcHJvdmlkZXMgY29tcGlsZXIgYW5kIGxpbmtlciBjb25maWd1cmF0aW9uIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiIKK0RFU0NSSVBUSU9OID0gInBrZ2NvbmYgaXMgYSBwcm9ncmFtIHdoaWNoIGhlbHBzIHRvIGNvbmZpZ3VyZSBjb21waWxlciBhbmQgbGlua2VyIFwKK2ZsYWdzIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiBJdCBpcyBzaW1pbGFyIHRvIHBrZy1jb25maWcgZnJvbSBcCitmcmVlZGVza3RvcC5vcmcsIHByb3ZpZGluZyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgd2hpbGUgYWxzbyBtYWludGFpbmluZyBcCitjb21wYXRpYmlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wa2djb25mLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BrZ2NvbmYvcGtnY29uZi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorUFJPVklERVMgKz0gInBrZ2NvbmZpZyIKK1JQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnIgorREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCisjIFRoZSBwa2djb25mIGxpY2Vuc2Ugc2VlbXMgdG8gYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQlNELTItQ2xhdXNlIG9yCisjIElTQywgYnV0IGhhcyBkaWZmZXJlbnQgd29yZGluZywgc28gbmVlZHMgaXRzIG93biBuYW1lLgorTElDRU5TRSA9ICJwa2djb25mIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTQ4YTlkMWRiMTBjYzBhODQ4MTBjMzEzYTBlOTI2NmYiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHBzOi8vZGlzdGZpbGVzLmRlcmVmZXJlbmNlZC5vcmcvcGtnY29uZi9wa2djb25mLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXN0ZGluYy5oLWZpeC1idWlsZC13aXRoLW1pbmd3LnBhdGNoIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy13cmFwcGVyIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy1uYXRpdmUuaW4gXAorICAgIGZpbGU6Ly9wa2ctY29uZmlnLWVzZGsuaW4gXAorIgorU1JDX1VSSVttZDVzdW1dID0gImFjMzVjMzRkODRlZWI2YTAzZDRkNjFiODU1NWQ2MTk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiZTdlNDA5MDBjNzQ2Nzg5M2M2NWY4MTAyMTFiMWU2OGRhM2Y4ZDVlNzBmZGRiODgzZmMyNDgzOWNhZDAzMzkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcGtnLWNvbmZpZy1kaXI9JyR7bGliZGlyfS9wa2djb25maWc6JHtkYXRhZGlyfS9wa2djb25maWcnIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBJbnN0YWxsIGEgd3JhcHBlciB3aGljaCBkZWFscywgYXMgbXVjaCBhcyBwb3NzaWJsZSB3aXRoIHBrZ2NvbmYgdnMKKyAgICAjIHBrZy1jb25maWcgY29tcGF0aWJpbGl0eSBpc3N1ZXMuCisgICAgaW5zdGFsbCAtbSAwNzU1ICIke1dPUktESVJ9L3BrZy1jb25maWctd3JhcHBlciIgIiR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZyIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICAjIEluc3RhbGwgYSBwa2ctY29uZmlnLW5hdGl2ZSB3cmFwcGVyIHRoYXQgd2lsbCB1c2UgdGhlIG5hdGl2ZSBzeXNyb290IGluc3RlYWQKKyAgICAjIG9mIHRoZSBNQUNISU5FIHN5c3Jvb3QsIGZvciB1c2luZyBwa2ctY29uZmlnIHdoZW4gYnVpbGRpbmcgbmF0aXZlIHRvb2xzLgorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgPCAke1dPUktESVJ9L3BrZy1jb25maWctbmF0aXZlLmluID4gJHtCfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIGluc3RhbGwgLW03NTUgJHtCfS9wa2ctY29uZmlnLW5hdGl2ZSAke0R9JHtiaW5kaXJ9L3BrZy1jb25maWctbmF0aXZlCisgICAgc2VkIC1lICJzfEBQQVRIX05BVElWRUB8JHtQS0dfQ09ORklHX1BBVEh9fCIgXAorICAgICAgICAtZSAic3xATElCRElSX05BVElWRUB8JHtQS0dfQ09ORklHX0xJQkRJUn18IiBcCisgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLWVzZGsuaW4gPiAke0J9L3BrZy1jb25maWctZXNkaworICAgIGluc3RhbGwgLW03NTUgJHtCfS9wa2ctY29uZmlnLWVzZGsgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLWVzZGsKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAicGtnLWNvbmZpZyIKKworIyBXaGVuIHVzaW5nIHRoZSBSUE0gZ2VuZXJhdGVkIGF1dG9tYXRpYyBwYWNrYWdlIGRlcGVuZGVuY2llcywgc29tZSBwYWNrYWdlcworIyB3aWxsIGVuZCB1cCByZXF1aXJpbmcgJ3BrZ2NvbmZpZyhwa2ctY29uZmlnKScuICBBbGxvdyB0aGlzIGJlaGF2aW9yIGJ5CisjIHNwZWNpZnlpbmcgYW4gYXBwcm9wcmlhdGUgcHJvdmlkZS4KK1JQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnKHBrZy1jb25maWcpIgorCisjIEluY2x1ZGUgcGtnLm00IGluIHRoZSBtYWluIHBhY2thZ2UsIGxlYXZpbmcgbGlicGtnY29uZiBkZXYgZmlsZXMgaW4gLWRldgorRklMRVNfJHtQTn0tZGV2X3JlbW92ZSA9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitwa2djb25mX3NzdGF0ZV9maXh1cF9lc2RrICgpIHsKKyAgIGlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiAtYSAiJHtXSVRISU5fRVhUX1NES30iID0gIjEiIF0gOyB0aGVuCisgICAgICAgcGtnY29uZmRpcj0iJHtTU1RBVEVfSU5TVERJUn0vcmVjaXBlLXN5c3Jvb3QtbmF0aXZlLyR7YmluZGlyX25hdGl2ZX0iCisgICAgICAgbXYgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZyAkcGtnY29uZmRpci9wa2ctY29uZmlnLnJlYWwKKyAgICAgICBsbnIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1lc2RrICRwa2djb25mZGlyL3BrZy1jb25maWcKKyAgICAgICBzZWQgLWkgLWUgInN8XnBrZy1jb25maWd8cGtnLWNvbmZpZy5yZWFsfCIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1uYXRpdmUKKyAgIGZpCit9CisKK1NTVEFURVBPU1RVTlBBQ0tGVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBwa2djb25mX3NzdGF0ZV9maXh1cF9lc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnLzAwMDEtZ2RhdGUtTW92ZS13YXJuaW5nLXByYWdtYS1vdXRzaWRlLW9mLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnLzAwMDEtZ2RhdGUtTW92ZS13YXJuaW5nLXByYWdtYS1vdXRzaWRlLW9mLWZ1bmN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGM4MjkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy8wMDAxLWdkYXRlLU1vdmUtd2FybmluZy1wcmFnbWEtb3V0c2lkZS1vZi1mdW5jdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gOTQ2ZDM2MjY2ZDhhMzBmMDRmZTM0ZDMxODNiZjQ5MjkxNDE5MzRkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGNveXB1IDxjb3lwdUBzZGYub3JnPgotRGF0ZTogV2VkLCAyIE1hciAyMDE2IDE5OjM4OjQ4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdkYXRlOiBNb3ZlIHdhcm5pbmcgcHJhZ21hIG91dHNpZGUgb2YgZnVuY3Rpb24KLQotQ29tbWl0IDA4MTdhZjQwZThjNzRjNzIxYzMwZjZlZjQ4MmIxZjUzZDEyMDQ0YzcgYnJlYWtzIHRoZSBidWlsZCBvbgotb2xkZXIgdmVyc2lvbnMgb2YgR0NDLCB3aGljaCBkb24ndCBhbGxvdyBwcmFnbWEgaW5zaWRlIGZ1bmN0aW9ucy4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvNzYxNTUwCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBnbGliL2dsaWIvZ2RhdGUuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nbGliL2dsaWIvZ2RhdGUuYyBiL2dsaWIvZ2xpYi9nZGF0ZS5jCi1pbmRleCAxOTc4Y2Y3Li4yMGU2YzRhIDEwMDY0NAotLS0tIGEvZ2xpYi9nbGliL2dkYXRlLmMKLSsrKyBiL2dsaWIvZ2xpYi9nZGF0ZS5jCi1AQCAtMjQzOSw2ICsyNDM5LDkgQEAgd2luMzJfc3RyZnRpbWVfaGVscGVyIChjb25zdCBHRGF0ZSAgICAgKmQsCi0gICoKLSAgKiBSZXR1cm5zOiBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuIHRvIHRoZSBidWZmZXIsIG9yIDAgdGhlIGJ1ZmZlciB3YXMgdG9vIHNtYWxsCi0gICovCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgotKwotIGdzaXplICAgICAKLSBnX2RhdGVfc3RyZnRpbWUgKGdjaGFyICAgICAgICpzLCAKLSAgICAgICAgICAgICAgICAgIGdzaXplICAgICAgICBzbGVuLCAKLUBAIC0yNTQ5LDMgKzI1NTIsNSBAQCBnX2RhdGVfc3RyZnRpbWUgKGdjaGFyICAgICAgICpzLAotICAgcmV0dXJuIHJldHZhbDsKLSAjZW5kaWYKLSB9Ci0rCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnL3BrZy1jb25maWctZXNkay5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy9wa2ctY29uZmlnLWVzZGsuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjOWIwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy9wa2ctY29uZmlnLWVzZGsuaW4KQEAgLTAsMCArMSwyNCBAQAorIyEgL2Jpbi9zaAorCisjIE9yaWduYWwgcGtnLWNvbmZpZy1uYXRpdmUgYWN0aW9uIHdoZW4gY2FsbGVkIGFzIHBrZy1jb25maWctbmF0aXZlCisjIE5PIENoYW5nZSBoZXJlCitpZiBbICJwa2ctY29uZmlnLW5hdGl2ZSIgPSAiYGJhc2VuYW1lICQwYCIgXSA7IHRoZW4KKwlQS0dfQ09ORklHX1BBVEg9IkBQQVRIX05BVElWRUAiCisJUEtHX0NPTkZJR19MSUJESVI9IkBMSUJESVJfTkFUSVZFQCIKKwl1bnNldCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCitlbHNlCisJIyBpbiB0aGlzIGNhc2UgY2hlY2sgaWYgd2UgYXJlIGluIHRoZSBlc2RrCisJaWYgWyAiJE9FX1NLSVBfU0RLX0NIRUNLIiA9ICIxIiBdIDsgdGhlbgorCQlwYXJlbnRwaWQ9YHBzIC1vIHBwaWQ9IC1wICQkYAorCQlwYXJlbnRwaWRfaW5mbz1gcHMgLXdvIGNvbW09IC1vIGFyZ3M9IC1wICRwYXJlbnRwaWRgCisKKwkJIyBjaGVjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIGZyb20gIHRoZSBrZXJuZWwncyBtYWtlIG1lbnVjb25maWcKKwkJaWYgKCBlY2hvICRwYXJlbnRwaWRfaW5mbyB8IGdyZXAgLXEgY2hlY2stbHhkaWFsb2cgKSA7IHRoZW4KKwkJCVBLR19DT05GSUdfUEFUSD0iQFBBVEhfTkFUSVZFQCIKKwkJCVBLR19DT05GSUdfTElCRElSPSJATElCRElSX05BVElWRUAiCisJCQl1bnNldCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCisJCWZpCisJZmkKK2ZpCisKK3BrZy1jb25maWcucmVhbCAiJEAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWdfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnX2dpdC5iYgppbmRleCBkYzQ0OTkyLi41MmVmMmE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWdfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZ19naXQuYmIKQEAgLTgsMTMgKzgsMTMgQEAKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLVNSQ1JFViA9ICI4NzE1MmMwNWJlODhjYThiZTcxYTNhNTYzZjI3NWIzNjg2ZDMyYzI4IgotUFYgPSAiMC4yOS4xK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImVkZjhlNmYwZWE3N2VkZTA3M2YwN2JmZjBkMmFlMWZjN2EzODEwM2IiCitQViA9ICIwLjI5LjIrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvcGtnLWNvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9wa2ctY29uZmlnLWVzZGsuaW4gXAogICAgICAgICAgICBmaWxlOi8vcGtnLWNvbmZpZy1uYXRpdmUuaW4gXAogICAgICAgICAgICBmaWxlOi8vZml4LWdsaWItY29uZmlndXJlLWxpYnRvb2wtdXNhZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZGF0ZS1Nb3ZlLXdhcm5pbmctcHJhZ21hLW91dHNpZGUtb2YtZnVuY3Rpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1nbGliLWdldHRleHQubTQtVXBkYXRlLUFNX0dMSUJfR05VX0dFVFRFWFQtdG8tbWF0Y2gtLnBhdGNoIFwKICAgICAgICAgICAgIgogCkBAIC01NSw0ICs1NSwxOSBAQAogICAgICAgICAtZSAic3xATElCRElSX05BVElWRUB8JHtQS0dfQ09ORklHX0xJQkRJUn18IiBcCiAgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLW5hdGl2ZS5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUKICAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAorICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1lc2RrLmluID4gJHtCfS9wa2ctY29uZmlnLWVzZGsKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1lc2RrICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1lc2RrCiB9CisKK3BrZ2NvbmZpZ19zc3RhdGVfZml4dXBfZXNkayAoKSB7CisJaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIC1hICIke1dJVEhJTl9FWFRfU0RLfSIgPSAiMSIgXSA7IHRoZW4KKwkJcGtnY29uZmRpcj0iJHtTU1RBVEVfSU5TVERJUn0vcmVjaXBlLXN5c3Jvb3QtbmF0aXZlLyR7YmluZGlyX25hdGl2ZX0iCisJCW12ICRwa2djb25mZGlyL3BrZy1jb25maWcgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy5yZWFsCisJCWxuciAkcGtnY29uZmRpci9wa2ctY29uZmlnLWVzZGsgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZworCQlzZWQgLWkgLWUgInN8XnBrZy1jb25maWd8cGtnLWNvbmZpZy5yZWFsfCIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1uYXRpdmUKKwlmaQorfQorCitTU1RBVEVQT1NUVU5QQUNLRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGtnY29uZmlnX3NzdGF0ZV9maXh1cF9lc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCmluZGV4IDQ1MjlkYmYuLjU3MGVmMzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKQEAgLTMsNiArMyw3IEBACiAjIFdvdWxkIG5lZWQgdHJhbnNmaWctbmF0aXZlIGZvciBkb2N1bWVudGF0aW9uIGlmIGl0IHdhc24ndCBkaXNhYmxlZAogREVQRU5EUyA9ICJlbGZ1dGlscyBiaW51dGlscyIKIFNVTU1BUlkgPSAiQW4gRUxGIHByZWxpbmtpbmcgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaS9wcmVsaW5rLWNyb3NzL2Fib3V0LyIKIERFU0NSSVBUSU9OID0gIlRoZSBwcmVsaW5rIHBhY2thZ2UgY29udGFpbnMgYSB1dGlsaXR5IHdoaWNoIG1vZGlmaWVzIEVMRiBzaGFyZWQgbGlicmFyaWVzIFwKIGFuZCBleGVjdXRhYmxlcywgc28gdGhhdCBmYXIgZmV3ZXIgcmVsb2NhdGlvbnMgbmVlZCB0byBiZSByZXNvbHZlZCBhdCBcCiBydW50aW1lIGFuZCB0aHVzIHByb2dyYW1zIGNvbWUgdXAgZmFzdGVyLiIKQEAgLTMxLDYgKzMyLDggQEAKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuY3Jvbi5kYWlseSBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmRlZmF1bHQgXAogCSAgIGZpbGU6Ly9tYWNyb3MucHJlbGluayIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInVwc3RyZWFtIGhhcyBubyB1c2FibGUgdGFncyIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBUQVJHRVRfT1NfT1JJRyA6PSAiJHtUQVJHRVRfT1N9IgogT1ZFUlJJREVTX2FwcGVuZCA9ICI6JHtUQVJHRVRfT1NfT1JJR30iCkBAIC0xNTAsMTMgKzE1MywxNSBAQAogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L21hY3Jvcy5wcmVsaW5rICR7RH0ke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3MucHJlbGluawogfQogCi0jIElmIHdlJ3JlIHVzaW5nIGltYWdlLXByZWxpbmssIHdlIHdhbnQgdG8gc2tpcCB0aGlzIG9uIHRoZSBob3N0IHNpZGUKLSMgYnV0IHN0aWxsIGRvIGl0IGlmIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0Li4uCisjIElmIHdlIGFlIGRvaW5nIGEgY3Jvc3MgaW5zdGFsbCwgd2Ugd2FudCB0byBhdm9pZCBwcmVsaW5raW5nLgorIyBQcmVsaW5raW5nIGR1cmluZyBhIGNyb3NzIGluc3RhbGwgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGltYWdlLXByZWxpbmsKKyMgYmJjbGFzcy4gIElmIHRoZSB1c2VyIGRlc2lyZXMgdGhpcyB0byBydW4gb24gdGhlIHRhcmdldCBhdCBmaXJzdCBib290CisjIHRoZXkgd2lsbCBuZWVkIHRvIGNyZWF0ZSBhIGN1c3RvbSBib290IHNjcmlwdC4KIHBrZ19wb3N0aW5zdF9wcmVsaW5rKCkgewogIyEvYmluL3NoCiAKIGlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KLSAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRVJfQ0xBU1NFUycsICdpbWFnZS1wcmVsaW5rJywgJ2V4aXQgMCcsICdleGl0IDEnLCBkKX0KKyAgZXhpdCAwCiBmaQogCiBwcmVsaW5rIC1hCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVVzZS1lcG9sbC1BUEktb24tTGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVVzZS1lcG9sbC1BUEktb24tTGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI1NTdiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtVXNlLWVwb2xsLUFQSS1vbi1MaW51eC5wYXRjaApAQCAtMCwwICsxLDI5MiBAQAorRnJvbSA5ZTQwN2UwYmUwMTY5NWU3YjkyN2Y1ODIwYWRlODdlZTk2MDJjMjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDE3OjAwOjE0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBlcG9sbCBBUEkgb24gTGludXgKKworQWxzbyBhIGNvdXBsZSBvZiBvdGhlciBtb2RpZmljYXRpb25zIGR1ZSB0byBlcG9sbCBoYXZpbmcKK2EgZGlmZmVyZW50IGFwcHJvYWNoIHRvIGhvdyB0aGUgd29ya2luZyBzZXQgb2YgZmRzIGlzIGRlZmluZWQKK2FuZCB1c2VkOgorMSkgb3Blbl9jbGllbnQoKSByZXR1cm5zIGFuIGluZGV4IGludG8gdGhlIGFycmF5IG9mIGNsaWVudHMKKzIpIGNsb3NlX2NsaWVudCgpIGhhcyBhIHByb3RlY3Rpb24gYWdhaW5zdCBiZWluZyBjYWxsZWQgdHdpY2UKK3dpdGggdGhlIHNhbWUgY2xpZW50ICh3aGljaCB3b3VsZCBtZXNzIHVwIHRoZSBhY3RpdmVfY2xpZW50cworY291bnRlcikKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW1NlZWJzIENDJ2QgYnkgZW1haWxdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgZW51bXMvZXhpdF9zdGF0dXMuaW4gfCAgIDMgKworIHBzZXVkb19zZXJ2ZXIuYyAgICAgIHwgMTg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9lbnVtcy9leGl0X3N0YXR1cy5pbiBiL2VudW1zL2V4aXRfc3RhdHVzLmluCitpbmRleCA2YmU0NGQzLi44OGY5NGNkIDEwMDY0NAorLS0tIGEvZW51bXMvZXhpdF9zdGF0dXMuaW4KKysrKyBiL2VudW1zL2V4aXRfc3RhdHVzLmluCitAQCAtMTgsMyArMTgsNiBAQCBsaXN0ZW5fZmQsICJzZXJ2ZXIgbG9vcCBoYWQgbm8gdmFsaWQgbGlzdGVuIGZkIgorIHBzZXVkb19sb2FkZWQsICJzZXJ2ZXIgY291bGRuJ3QgZ2V0IG91dCBvZiBwc2V1ZG8gZW52aXJvbm1lbnQiCisgcHNldWRvX3ByZWZpeCwgImNvdWxkbid0IGdldCB2YWxpZCBwc2V1ZG8gcHJlZml4IgorIHBzZXVkb19pbnZvY2F0aW9uLCAiaW52YWxpZCBzZXJ2ZXIgY29tbWFuZCBhcmd1bWVudHMiCisrZXBvbGxfY3JlYXRlLCAiZXBvbGxfY3JlYXRlKCkgZmFpbGVkIgorK2Vwb2xsX2N0bCwgImVwb2xsX2N0bCgpIGZhaWxlZCIKKysKK2RpZmYgLS1naXQgYS9wc2V1ZG9fc2VydmVyLmMgYi9wc2V1ZG9fc2VydmVyLmMKK2luZGV4IGZmMTZlZmQuLjE0ZDM0ZGUgMTAwNjQ0CistLS0gYS9wc2V1ZG9fc2VydmVyLmMKKysrKyBiL3BzZXVkb19zZXJ2ZXIuYworQEAgLTQwLDYgKzQwLDEyIEBACisgI2luY2x1ZGUgInBzZXVkb19jbGllbnQuaCIKKyAjaW5jbHVkZSAicHNldWRvX2RiLmgiCisgCisrLy8gVGhpcyBoYXMgdG8gY29tZSBhZnRlciBwc2V1ZG8gaW5jbHVkZXMsIGFzIHRoYXQncyB3aGVyZSBQU0VVRE9fUE9SVCBkZWZpbmVzIGFyZQorKyNpZmRlZiBQU0VVRE9fUE9SVF9MSU5VWAorKyNpbmNsdWRlIDxzeXMvZXBvbGwuaD4KKysjZW5kaWYKKysKKysKKyBzdGF0aWMgaW50IGxpc3Rlbl9mZCA9IC0xOworIAorIHR5cGVkZWYgc3RydWN0IHsKK0BAIC01OSw2ICs2NSw3IEBAIHN0YXRpYyBpbnQgYWN0aXZlX2NsaWVudHMgPSAwLCBoaWdoZXN0X2NsaWVudCA9IDAsIG1heF9jbGllbnRzID0gMDsKKyAKKyAjZGVmaW5lIExPT1BfREVMQVkgMgorICNkZWZpbmUgREVGQVVMVF9QU0VVRE9fU0VSVkVSX1RJTUVPVVQgMzAKKysjZGVmaW5lIEVQT0xMX01BWF9FVkVOVFMgMTAKKyBpbnQgcHNldWRvX3NlcnZlcl90aW1lb3V0ID0gREVGQVVMVF9QU0VVRE9fU0VSVkVSX1RJTUVPVVQ7Cisgc3RhdGljIGludCBkaWVfcGVhY2VmdWxseSA9IDA7Cisgc3RhdGljIGludCBkaWVfZm9yY2VmdWxseSA9IDA7CitAQCAtODAsNiArODcsOSBAQCBxdWl0X25vdyhpbnQgc2lnbmFsKSB7Cisgc3RhdGljIGludCBtZXNzYWdlcyA9IDAsIHJlc3BvbnNlcyA9IDA7Cisgc3RhdGljIHN0cnVjdCB0aW1ldmFsIG1lc3NhZ2VfdGltZSA9IHsgLnR2X3NlYyA9IDAgfTsKKyAKKysjaWZkZWYgUFNFVURPX1BPUlRfTElOVVgKKytzdGF0aWMgdm9pZCBwc2V1ZG9fc2VydmVyX2xvb3BfZXBvbGwodm9pZCk7CisrI2VuZGlmCisgc3RhdGljIHZvaWQgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpOworIAorIC8qIGhlbHBlciBmdW5jdGlvbiB0byBtYWtlIGEgZGlyZWN0b3J5LCBqdXN0IGxpa2UgbWtkaXIgLXAuCitAQCAtMzY5LDEyICszNzksMTYgQEAgcHNldWRvX3NlcnZlcl9zdGFydChpbnQgZGFlbW9uaXplKSB7CisgCQkJa2lsbChwcGlkLCBTSUdVU1IxKTsKKyAJCX0KKyAJfQorKyNpZmRlZiBQU0VVRE9fUE9SVF9MSU5VWAorKwlwc2V1ZG9fc2VydmVyX2xvb3BfZXBvbGwoKTsKKysjZWxzZQorIAlwc2V1ZG9fc2VydmVyX2xvb3AoKTsKKysjZW5kaWYKKyAJcmV0dXJuIDA7CisgfQorIAorIC8qIG1lc3Mgd2l0aCBpbnRlcm5hbCB0YWJsZXMgYXMgbmVlZGVkICovCistc3RhdGljIHZvaWQKKytzdGF0aWMgdW5zaWduZWQgaW50Cisgb3Blbl9jbGllbnQoaW50IGZkKSB7CisgCXBzZXVkb19jbGllbnRfdCAqbmV3X2NsaWVudHM7CisgCWludCBpOworQEAgLTM5MCw3ICs0MDQsNyBAQCBvcGVuX2NsaWVudChpbnQgZmQpIHsKKyAJCQkrK2FjdGl2ZV9jbGllbnRzOworIAkJCWlmIChpID4gaGlnaGVzdF9jbGllbnQpCisgCQkJCWhpZ2hlc3RfY2xpZW50ID0gaTsKKy0JCQlyZXR1cm47CisrCQkJcmV0dXJuIGk7CisgCQl9CisgCX0KKyAKK0BAIC00MTQsOSArNDI4LDExIEBAIG9wZW5fY2xpZW50KGludCBmZCkgeworIAorIAkJbWF4X2NsaWVudHMgKz0gMTY7CisgCQkrK2FjdGl2ZV9jbGllbnRzOworKwkJcmV0dXJuIG1heF9jbGllbnRzIC0gMTY7CisgCX0gZWxzZSB7CisgCQlwc2V1ZG9fZGlhZygiZXJyb3IgYWxsb2NhdGluZyBuZXcgY2xpZW50LCBmZCAlZFxuIiwgZmQpOworIAkJY2xvc2UoZmQpOworKwkJcmV0dXJuIDA7CisgCX0KKyB9CisgCitAQCAtNDMzLDYgKzQ0OSwxMCBAQCBjbG9zZV9jbGllbnQoaW50IGNsaWVudCkgeworIAkJCWNsaWVudCwgaGlnaGVzdF9jbGllbnQpOworIAkJcmV0dXJuOworIAl9CisrCWlmIChjbGllbnRzW2NsaWVudF0uZmQgPT0gLTEpIHsKKysJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJjbGllbnQgJWQgYWxyZWFkeSBjbG9zZWRcbiIsIGNsaWVudCk7CisrCQlyZXR1cm47CisrCX0KKyAJY2xvc2UoY2xpZW50c1tjbGllbnRdLmZkKTsKKyAJY2xpZW50c1tjbGllbnRdLmZkID0gLTE7CisgCWZyZWUoY2xpZW50c1tjbGllbnRdLnRhZyk7CitAQCAtNTY2LDYgKzU4NiwxNzEgQEAgc2VydmVfY2xpZW50KGludCBpKSB7CisgCX0KKyB9CisgCisrI2lmZGVmIFBTRVVET19QT1JUX0xJTlVYCisrc3RhdGljIHZvaWQgcHNldWRvX3NlcnZlcl9sb29wX2Vwb2xsKHZvaWQpCisreworKwlzdHJ1Y3Qgc29ja2FkZHJfdW4gY2xpZW50OworKwlzb2NrbGVuX3QgbGVuOworKyAgICAgICAgaW50IGk7CisrICAgICAgICBpbnQgcmM7CisrICAgICAgICBpbnQgZmQ7CisrCWludCB0aW1lb3V0OworKwlzdHJ1Y3QgZXBvbGxfZXZlbnQgZXYsIGV2ZW50c1tFUE9MTF9NQVhfRVZFTlRTXTsKKysJaW50IGxvb3BfdGltZW91dCA9IHBzZXVkb19zZXJ2ZXJfdGltZW91dDsKKysKKysJY2xpZW50cyA9IG1hbGxvYygxNiAqIHNpemVvZigqY2xpZW50cykpOworKworKwljbGllbnRzWzBdLmZkID0gbGlzdGVuX2ZkOworKwljbGllbnRzWzBdLnBpZCA9IGdldHBpZCgpOworKworKwlmb3IgKGkgPSAxOyBpIDwgMTY7ICsraSkgeworKwkJY2xpZW50c1tpXS5mZCA9IC0xOworKwkJY2xpZW50c1tpXS5waWQgPSAwOworKwkJY2xpZW50c1tpXS50YWcgPSBOVUxMOworKwkJY2xpZW50c1tpXS5wcm9ncmFtID0gTlVMTDsKKysJfQorKworKwlhY3RpdmVfY2xpZW50cyA9IDE7CisrCW1heF9jbGllbnRzID0gMTY7CisrCWhpZ2hlc3RfY2xpZW50ID0gMDsKKysKKysJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInNlcnZlciBsb29wIHN0YXJ0ZWQuXG4iKTsKKysJaWYgKGxpc3Rlbl9mZCA8IDApIHsKKysJCXBzZXVkb19kaWFnKCJnb3QgaW50byBsb29wIHdpdGggbm8gdmFsaWQgbGlzdGVuIGZkLlxuIik7CisrCQlleGl0KFBTRVVET19FWElUX0xJU1RFTl9GRCk7CisrCX0KKysKKysJdGltZW91dCA9IExPT1BfREVMQVkgKiAxMDAwOworKworKwlpbnQgZXBvbGxmZCA9IGVwb2xsX2NyZWF0ZTEoMCk7CisrCWlmIChlcG9sbGZkID09IC0xKSB7CisrCQlwc2V1ZG9fZGlhZygiZXBvbGxfY3JlYXRlMSgpIGZhaWxlZC5cbiIpOworKwkJZXhpdChQU0VVRE9fRVhJVF9FUE9MTF9DUkVBVEUpOworKwl9CisrCWV2LmV2ZW50cyA9IEVQT0xMSU47CisrCWV2LmRhdGEudTY0ID0gMDsKKysJaWYgKGVwb2xsX2N0bChlcG9sbGZkLCBFUE9MTF9DVExfQURELCBjbGllbnRzWzBdLmZkLCAmZXYpID09IC0xKSB7CisrCQlwc2V1ZG9fZGlhZygiZXBvbGxfY3RsKCkgZmFpbGVkIHdpdGggbGlzdGVuaW5nIHNvY2tldC5cbiIpOworKwkJZXhpdChQU0VVRE9fRVhJVF9FUE9MTF9DVEwpOworKwl9CisrCisrCXBkYl9sb2dfbXNnKFNFVkVSSVRZX0lORk8sIE5VTEwsIE5VTEwsIE5VTEwsICJzZXJ2ZXIgc3RhcnRlZCAocGlkICVkKSIsIGdldHBpZCgpKTsKKysKKysgICAgICAgIGZvciAoOzspIHsKKysJCXJjID0gZXBvbGxfd2FpdChlcG9sbGZkLCBldmVudHMsIEVQT0xMX01BWF9FVkVOVFMsIHRpbWVvdXQpOworKwkJaWYgKHJjID09IDAgfHwgKHJjID09IC0xICYmIGVycm5vID09IEVJTlRSKSkgeworKwkJCS8qIElmIHRoZXJlJ3Mgbm8gY2xpZW50cywgc3RhcnQgdGltaW5nIG91dC4gIElmIHRoZXJlCisrCQkJICogYXJlIGFjdGl2ZSBjbGllbnRzLCBuZXZlciB0aW1lIG91dC4KKysJCQkgKi8KKysJCQlpZiAoYWN0aXZlX2NsaWVudHMgPT0gMSkgeworKwkJCQlsb29wX3RpbWVvdXQgLT0gTE9PUF9ERUxBWTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1heWJlIGZsdXNoIGRhdGFiYXNlIHRvIGRpc2sgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkYl9tYXliZV9iYWNrdXAoKTsKKysJCQkJaWYgKGxvb3BfdGltZW91dCA8PSAwKSB7CisrCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAibm8gbW9yZSBjbGllbnRzLCBnb3QgYm9yZWQuXG4iKTsKKysJCQkJCWRpZV9wZWFjZWZ1bGx5ID0gMTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCS8qIGRpc3BsYXkgdGhpcyBpZiBub3QgZXhpdGluZyAqLworKwkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiB8IFBEQkdGX0JFTkNITUFSSywgIiVkIG1lc3NhZ2VzIGhhbmRsZWQgaW4gJS40ZiBzZWNvbmRzLCAlZCByZXNwb25zZXNcbiIsCisrCQkJCQkJbWVzc2FnZXMsCisrCQkJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3NlYyArCisrCQkJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3VzZWMgLyAxMDAwMDAwLjAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VzKTsKKysJCQkJfQorKwkJCX0KKysJCX0gZWxzZSBpZiAocmMgPiAwKSB7CisrCQkJbG9vcF90aW1lb3V0ID0gcHNldWRvX3NlcnZlcl90aW1lb3V0OworKwkJCWZvciAoaSA9IDA7IGkgPCByYzsgKytpKSB7CisrCQkJCWlmIChjbGllbnRzW2V2ZW50c1tpXS5kYXRhLnU2NF0uZmQgPT0gbGlzdGVuX2ZkKSB7CisrCQkJCQlpZiAoIWRpZV9mb3JjZWZ1bGx5KSB7CisrCQkJCQkJbGVuID0gc2l6ZW9mKGNsaWVudCk7CisrCQkJCQkJaWYgKChmZCA9IGFjY2VwdChsaXN0ZW5fZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmNsaWVudCwgJmxlbikpICE9IC0xKSB7CisrCQkJCQkJLyogRG9uJ3QgYWxsb3cgY2xpZW50cyB0byBlbmQgdXAgb24gZmQgMiwgYmVjYXVzZSBnbGliYydzCisrCQkJCQkJICogbWFsbG9jIGRlYnVnIHVzZXMgdGhhdCBmZCB1bmNvbmRpdGlvbmFsbHkuCisrCQkJCQkJICovCisrCQkJCQkJCWlmIChmZCA9PSAyKSB7CisrCQkJCQkJCQlpbnQgbmV3ZmQgPSBmY250bChmZCwgRl9EVVBGRCwgMyk7CisrCQkJCQkJCQljbG9zZShmZCk7CisrCQkJCQkJCQlmZCA9IG5ld2ZkOworKwkJCQkJCQl9CisrCQkJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJuZXcgY2xpZW50IGZkICVkXG4iLCBmZCk7CisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQSBuZXcgY2xpZW50IGltcGxpY2l0bHkgY2FuY2VscyBhbnkKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBwcmV2aW91cyBzaHV0ZG93biByZXF1ZXN0LCBvciBhCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2h1dGRvd24gZm9yIGxhY2sgb2YgY2xpZW50cy4KKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fc2VydmVyX3RpbWVvdXQgPSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVDsKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWVfcGVhY2VmdWxseSA9IDA7CisrCisrCQkJCQkJCWV2LmV2ZW50cyA9IEVQT0xMSU47CisrCQkJCQkJCWV2LmRhdGEudTY0ID0gb3Blbl9jbGllbnQoZmQpOworKwkJCQkJCQlpZiAoZXYuZGF0YS51NjQgIT0gMCAmJiBlcG9sbF9jdGwoZXBvbGxmZCwgRVBPTExfQ1RMX0FERCwgY2xpZW50c1tldi5kYXRhLnU2NF0uZmQsICZldikgPT0gLTEpIHsKKysJCQkJCQkJCXBzZXVkb19kaWFnKCJlcG9sbF9jdGwoKSBmYWlsZWQgd2l0aCBhY2NlcHRlZCBzb2NrZXQuXG4iKTsKKysJCQkJCQkJCWV4aXQoUFNFVURPX0VYSVRfRVBPTExfQ1RMKTsKKysJCQkJCQkJfQorKwkJCQkJCX0gZWxzZSBpZiAoZXJybm8gPT0gRU1GSUxFKSB7CisrCQkJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJIaXQgbWF4IG9wZW4gZmlsZXMsIGRyb3BwaW5nIGEgY2xpZW50LlxuIik7CisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW4gdGhlb3J5IHRoZXJlIGlzIGEgcG90ZW50aWFsIHJhY2UgaGVyZSB3aGVyZSBpZiB3ZSBjbG9zZSBhIGNsaWVudCwgCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgbWF5IGhhdmUgc2VudCB1cyBhIGZhc3RvcCBtZXNzYWdlIHdoaWNoIHdlIGRvbid0IGFjdCB1cG9uLgorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHdlIGRvbid0IGNsb3NlIGEgZmlsZWhhbmRsZSB3ZSdsbCBsb29wIGluZGVmaW5pdGVseSB0aG91Z2h0LiAKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGNsb3NlIG9uZSBwZXIgbG9vcCBpdGVyYXRpb24gaW4gdGhlIGludGVyZXN0cyBvZiBjYXV0aW9uICovCisrCQkJCSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IGhpZ2hlc3RfY2xpZW50OyArK2opIHsKKysJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50c1tqXS5mZCAhPSAtMSkgeworKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfY2xpZW50KGopOworKwkJCQkJCQkJCWJyZWFrOworKwkJCQkJCQkJfQorKwkJCQkJCQl9CisrCQkJCQkJfQorKwkJCQkJfQorKwkJCQl9IGVsc2UgeworKwkJCQkJc3RydWN0IHRpbWV2YWwgdHYxLCB0djI7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYzsKKysJCQkJCWdldHRpbWVvZmRheSgmdHYxLCBOVUxMKTsKKysJCQkJCXJjID0gc2VydmVfY2xpZW50KGV2ZW50c1tpXS5kYXRhLnU2NCk7CisrCQkJCQlnZXR0aW1lb2ZkYXkoJnR2MiwgTlVMTCk7CisrCQkJCQkrK21lc3NhZ2VzOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmMgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3Jlc3BvbnNlczsKKysJCQkJCW1lc3NhZ2VfdGltZS50dl9zZWMgKz0gKHR2Mi50dl9zZWMgLSB0djEudHZfc2VjKTsKKysJCQkJCW1lc3NhZ2VfdGltZS50dl91c2VjICs9ICh0djIudHZfdXNlYyAtIHR2MS50dl91c2VjKTsKKysJCQkJCWlmIChtZXNzYWdlX3RpbWUudHZfdXNlYyA8IDApIHsKKysJCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyArPSAxMDAwMDAwOworKwkJCQkJCS0tbWVzc2FnZV90aW1lLnR2X3NlYzsKKysJCQkJCX0gZWxzZSB3aGlsZSAobWVzc2FnZV90aW1lLnR2X3VzZWMgPiAxMDAwMDAwKSB7CisrCQkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgLT0gMTAwMDAwMDsKKysJCQkJCQkrK21lc3NhZ2VfdGltZS50dl9zZWM7CisrCQkJCQl9CisrCQkJCX0KKysJCQkJaWYgKGRpZV9mb3JjZWZ1bGx5KQorKwkJCQkJYnJlYWs7CisrCQkJfQorKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJzZXJ2ZXIgbG9vcCBjb21wbGV0ZSBbJWQgY2xpZW50cyBsZWZ0XVxuIiwgYWN0aXZlX2NsaWVudHMpOworKwkJfSBlbHNlIHsKKysJCQlwc2V1ZG9fZGlhZygiZXBvbGxfd2FpdCBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworKwkJCWJyZWFrOworKwkJfQorKwkJaWYgKGRpZV9wZWFjZWZ1bGx5IHx8IGRpZV9mb3JjZWZ1bGx5KSB7CisrCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInF1aXR0aW5nLlxuIik7CisrCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiB8IFBEQkdGX0JFTkNITUFSSywgInNlcnZlciAlZCBleGl0aW5nOiBoYW5kbGVkICVkIG1lc3NhZ2VzIGluICUuNGYgc2Vjb25kc1xuIiwKKysJCQkJZ2V0cGlkKCksIG1lc3NhZ2VzLAorKwkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfc2VjICsKKysJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3VzZWMgLyAxMDAwMDAwLjApOworKwkJCXBkYl9sb2dfbXNnKFNFVkVSSVRZX0lORk8sIE5VTEwsIE5VTEwsIE5VTEwsICJzZXJ2ZXIgJWQgZXhpdGluZzogaGFuZGxlZCAlZCBtZXNzYWdlcyBpbiAlLjRmIHNlY29uZHMiLAorKwkJCQlnZXRwaWQoKSwgbWVzc2FnZXMsCisrCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl9zZWMgKworKwkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfdXNlYyAvIDEwMDAwMDAuMCk7CisrCQkJLyogYW5kIGF0IHRoaXMgcG9pbnQsIHdlJ2xsIHN0YXJ0IHJlZnVzaW5nIGNvbm5lY3Rpb25zICovCisrCQkJY2xvc2UoY2xpZW50c1swXS5mZCk7CisrCQkJLyogVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gaW5zZXJ0IGEgZGVsYXkgZm9yCisrCQkJICogZGVidWdnaW5nIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgc3RhcnR1cC4gKi8KKysJCQkvKiB1c2xlZXAoMzAwMDAwKTsgKi8KKysJCQlleGl0KDApOworKwkJfQorKwl9CisrCisrfQorKworKyNlbmRpZgorKworIC8qIGdldCBjbGllbnRzLCBoYW5kbGUgbWVzc2FnZXMsIHNodXQgZG93bi4KKyAgKiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgZG8gYW55IHdvcmssIGl0IGp1c3QgY2FsbHMgYSB0b24gb2YgdGhpbmdzIHdoaWNoCisgICogZG8gd29yay4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvZmFzdG9wcmVwbHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA0YzJkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK0Vuc3VyZSBGQVNUT1AgbWVzc2FnZXMgZ2V0IGFuIEFDSyByZXBseSBzbyB0aGF0IHRoZSBjbGllbnQgY2FuIGJlIHN1cmUgdGhlIHNlcnZlcgorcmVjaWV2ZWQgdGhlbS4gVGhpcyBtZWFucyBpZiBjb25uZWN0aW9ucyBhcmUgdGVybWluYXRlZCwgZGF0YSBpc24ndCBsb3N0LgorCitSUCAyMDE3LzkvMjIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworSW5kZXg6IHBzZXVkby0xLjguMi9wc2V1ZG9fY2xpZW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwc2V1ZG8tMS44LjIub3JpZy9wc2V1ZG9fY2xpZW50LmMKKysrKyBwc2V1ZG8tMS44LjIvcHNldWRvX2NsaWVudC5jCitAQCAtMTMzMSwyMSArMTMzMSwxOSBAQCBwc2V1ZG9fY2xpZW50X3JlcXVlc3QocHNldWRvX21zZ190ICptc2csCisgCQkgKiBpbmRpY2F0aW5nIGEgc3VjY2Vzc2Z1bCBzZW5kLgorIAkJICovCisgCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5UIHwgUERCR0ZfVkVSQk9TRSwgInNlbnQhXG4iKTsKKy0JCWlmIChtc2ctPnR5cGUgIT0gUFNFVURPX01TR19GQVNUT1ApIHsKKy0JCQlyZXNwb25zZSA9IHBzZXVkb19tc2dfcmVjZWl2ZShjb25uZWN0X2ZkKTsKKy0JCQlpZiAoIXJlc3BvbnNlKSB7CistCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQsICJleHBlY3RlZCByZXNwb25zZSBkaWQgbm90IG9jY3VyOyByZXRyeWluZ1xuIik7CisrCQlyZXNwb25zZSA9IHBzZXVkb19tc2dfcmVjZWl2ZShjb25uZWN0X2ZkKTsKKysJCWlmICghcmVzcG9uc2UpIHsKKysJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5ULCAiZXhwZWN0ZWQgcmVzcG9uc2UgZGlkIG5vdCBvY2N1cjsgcmV0cnlpbmdcbiIpOworKwkJfSBlbHNlIHsKKysJCQlpZiAocmVzcG9uc2UtPnR5cGUgIT0gUFNFVURPX01TR19BQ0spIHsKKysJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCwgImdvdCBub24tYWNrIHJlc3BvbnNlICVkXG4iLCByZXNwb25zZS0+dHlwZSk7CisrCQkJCXJldHVybiAwOworKwkJCX0gZWxzZSBpZiAobXNnLT50eXBlICE9IFBTRVVET19NU0dfRkFTVE9QKSB7CisrCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQgfCBQREJHRl9WRVJCT1NFLCAiZ290IHJlc3BvbnNlIHR5cGUgJWRcbiIsIHJlc3BvbnNlLT50eXBlKTsKKysJCQkJcmV0dXJuIHJlc3BvbnNlOworIAkJCX0gZWxzZSB7CistCQkJCWlmIChyZXNwb25zZS0+dHlwZSAhPSBQU0VVRE9fTVNHX0FDSykgeworLQkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCwgImdvdCBub24tYWNrIHJlc3BvbnNlICVkXG4iLCByZXNwb25zZS0+dHlwZSk7CistCQkJCQlyZXR1cm4gMDsKKy0JCQkJfSBlbHNlIHsKKy0JCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQgfCBQREJHRl9WRVJCT1NFLCAiZ290IHJlc3BvbnNlIHR5cGUgJWRcbiIsIHJlc3BvbnNlLT50eXBlKTsKKy0JCQkJCXJldHVybiByZXNwb25zZTsKKy0JCQkJfQorKwkJCQlyZXR1cm4gMDsKKyAJCQl9CistCQl9IGVsc2UgeworLQkJCXJldHVybiAwOworIAkJfQorIAl9CisgCXBzZXVkb19kaWFnKCJwc2V1ZG86IHNlcnZlciBjb25uZWN0aW9uIHBlcnNpc3RlbnRseSBmYWlsZWQsIGFib3J0aW5nLlxuIik7CitJbmRleDogcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBzZXVkby0xLjguMi5vcmlnL3BzZXVkb19zZXJ2ZXIuYworKysrIHBzZXVkby0xLjguMi9wc2V1ZG9fc2VydmVyLmMKK0BAIC00NjMsNiArNDYzLDExIEBAIGNsb3NlX2NsaWVudChpbnQgY2xpZW50KSB7CisgCQkJLS1oaWdoZXN0X2NsaWVudDsKKyB9CisgCisrc3RhdGljIHBzZXVkb19tc2dfdCBzZXJ2ZXJfZmFzdG9wX3JlcGx5ID0geyAKKysgICAgICAgIC50eXBlID0gUFNFVURPX01TR19BQ0ssCisrICAgICAgICAub3AgPSBPUF9OT05FLAorK307CisrCisgLyogQWN0dWFsbHkgcHJvY2VzcyBhIHJlcXVlc3QuCisgICovCisgc3RhdGljIGludAorQEAgLTUxNSw4ICs1MjAsMTQgQEAgc2VydmVfY2xpZW50KGludCBpKSB7CisgCQkgKiBwc2V1ZG9fc2VydmVyX3Jlc3BvbnNlLgorIAkJICovCisgCQlpZiAoaW4tPnR5cGUgIT0gUFNFVURPX01TR19TSFVURE9XTikgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbi0+dHlwZSA9PSBQU0VVRE9fTVNHX0ZBU1RPUCkKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW4tPnR5cGUgPT0gUFNFVURPX01TR19GQVNUT1ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcmVzcG9uc2UgPSAwOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRm9yIGZhc3RvcHMgd2UgcmVwbHkgbm93IHRvIHNheSB3ZSBnb3QgdGhlIGRhdGEgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocmMgPSBwc2V1ZG9fbXNnX3NlbmQoY2xpZW50c1tpXS5mZCwgJnNlcnZlcl9mYXN0b3BfcmVwbHksIDAsIE5VTEwpKSAhPSAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAiZmFpbGVkIHRvIHNlbmQgZmFzdG9wIGFjayB0byBjbGllbnQgJWQgWyVkXTogJWQgKCVzKVxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgKGludCkgY2xpZW50c1tpXS5waWQsIHJjLCBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAJCQkvKiBtb3N0IG1lc3NhZ2VzIGRvbid0IG5lZWQgdGhlc2UsIGJ1dCB4YXR0ciBtYXkgKi8KKyAJCQlyZXNwb25zZV9wYXRoID0gMDsKKyAJCQlyZXNwb25zZV9wYXRobGVuID0gLTE7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy90b29tYW55ZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy90b29tYW55ZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA4NWE0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3Rvb21hbnlmaWxlcy5wYXRjaApAQCAtMCwwICsxLDU5IEBACitDdXJyZW50bHkgaWYgd2UgbWF4IG91dCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmlsZXMsIHBzZXVkbyBjYW4gZGVhZGxvY2ssIHVuYWJsZSB0bworYWNjZXB0IG5ldyBjb25uZWN0aW9ucyB5ZXQgdW5hYmxlIHRvIG1vdmUgZm9yd2FyZCBhbmQgdW5ibG9jayB0aGUgb3RoZXIgcHJvY2Vzc2VzCit3YWl0aW5nIGVpdGhlci4KKworUmF0aGVyIHRoYW4gaGFuZywgd2hlbiB0aGlzIGhhcHBlbnMsIGNsb3NlIG91dCBpbmFjdGl2ZSBjb25uZWN0aW9ucywgYWxsb3dpbmcgdXMKK3RvIGFjY2VwdCB0aGUgbmV3IG9uZXMuIFRoZSBkaXNjb25uZWN0ZWQgY2xpZW50cyB3aWxsIHNpbXBseSByZWNvbm5lY3QuIFRoZXJlIGlzCithIHNtYWxsIHJpc2sgb2YgZGF0YSBsb3NzIGhlcmUgc2FkbHkgYnV0IGl0cyBiZXR0ZXIgdGhhbiBoYW5naW5nLgorCitSUAorMjAxNy80LzI1CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtQZXRlciBpcyBhd2FyZSBvZiB0aGUgaXNzdWVdCisKK0luZGV4OiBwc2V1ZG8tMS44LjIvcHNldWRvX3NlcnZlci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHNldWRvLTEuOC4yLm9yaWcvcHNldWRvX3NlcnZlci5jCisrKysgcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYworQEAgLTU4MSw2ICs1ODEsNyBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgeworIAlpbnQgcmM7CisgCWludCBmZDsKKyAJaW50IGxvb3BfdGltZW91dCA9IHBzZXVkb19zZXJ2ZXJfdGltZW91dDsKKysJaW50IGhpdG1heGZpbGVzOworIAorIAljbGllbnRzID0gbWFsbG9jKDE2ICogc2l6ZW9mKCpjbGllbnRzKSk7CisgCitAQCAtNTk3LDYgKzU5OCw3IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CisgCWFjdGl2ZV9jbGllbnRzID0gMTsKKyAJbWF4X2NsaWVudHMgPSAxNjsKKyAJaGlnaGVzdF9jbGllbnQgPSAwOworKwloaXRtYXhmaWxlcyA9IDA7CisgCisgCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJzZXJ2ZXIgbG9vcCBzdGFydGVkLlxuIik7CisgCWlmIChsaXN0ZW5fZmQgPCAwKSB7CitAQCAtNjYzLDEwICs2NjUsMTUgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKKyAJCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyAtPSAxMDAwMDAwOworIAkJCQkJCSsrbWVzc2FnZV90aW1lLnR2X3NlYzsKKyAJCQkJCX0KKysJCQkJfSBlbHNlIGlmIChoaXRtYXhmaWxlcykgeworKwkJCQkJLyogT25seSBjbG9zZSBvbmUgcGVyIGxvb3AgaXRlcmF0aW9uIGluIHRoZSBpbnRlcmVzdHMgb2YgY2F1dGlvbiAqLworKwkJCQkJY2xvc2VfY2xpZW50KGkpOworKwkJCQkJaGl0bWF4ZmlsZXMgPSAwOworIAkJCQl9CisgCQkJCWlmIChkaWVfZm9yY2VmdWxseSkKKyAJCQkJCWJyZWFrOworIAkJCX0KKysJCQloaXRtYXhmaWxlcyA9IDA7CisgCQkJaWYgKCFkaWVfZm9yY2VmdWxseSAmJiAKKyAJCQkgICAgKEZEX0lTU0VUKGNsaWVudHNbMF0uZmQsICZldmVudHMpIHx8CisgCQkJICAgICBGRF9JU1NFVChjbGllbnRzWzBdLmZkLCAmcmVhZHMpKSkgeworQEAgLTY4OCw2ICs2OTgsOSBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvX3NlcnZlcl90aW1lb3V0ID0gREVGQVVMVF9QU0VVRE9fU0VSVkVSX1RJTUVPVVQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZV9wZWFjZWZ1bGx5ID0gMDsKKysJCQkJfSBlbHNlIGlmIChlcnJubyA9PSBFTUZJTEUpIHsKKysJCQkJCWhpdG1heGZpbGVzID0gMTsKKysJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJIaXQgbWF4IG9wZW4gZmlsZXMsIGRyb3BwaW5nIGEgY2xpZW50LlxuIik7CisgCQkJCX0KKyAJCQl9CisgCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInNlcnZlciBsb29wIGNvbXBsZXRlIFslZCBjbGllbnRzIGxlZnRdXG4iLCBhY3RpdmVfY2xpZW50cyk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS44LjIuYmIKaW5kZXggYjQyN2I5YS4uNzNlZjU3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjguMi5iYgpAQCAtNyw2ICs3LDkgQEAKICAgICAgICAgICAgZmlsZTovL21vcmVyZXRyaWVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2VmZTBiZTI3OTkwMTAwNmY5MzljZDM1N2NjZWU0N2I2NTFjNzg2ZGEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9mYXN0b3ByZXBseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90b29tYW55ZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2Q0MWU3MjE4OGZiZWExZjY5NmMzOTljMWE0MzU2NzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjllNTg1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDQxNzBiOThlMGQ1ODY0ZWY0ZGIxYzU3MDRhNmU5NDI4YzNiZTlmYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBJcnluYSBTaGNoZXJiaW5hIDxpc2hjaGVyYkByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyNCBBdWcgMjAxNyAxODowMTo0MyArMDIwMAorU3ViamVjdDogW1BBVENIXSBCVUc6IGZpeCBpbmZpbml0ZSBsb29wIHdoZW4gY3JlYXRpbmcgbnAucGFkIG9uIGFuIGVtcHR5IGFycmF5CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9wdWxsLzk1OTkvY29tbWl0cy82ZjllYTBhYmJkMzA1ZDUzZjkwMTdkZWJhYjNhM2E1OTFmZTBlMjQ5XQorQ1ZFOiBDVkUtMjAxNy0xMjg1MgorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIG51bXB5L2xpYi9hcnJheXBhZC5weSAgICAgICAgICAgIHwgMyArKysKKyBudW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weSB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9udW1weS9saWIvYXJyYXlwYWQucHkgYi9udW1weS9saWIvYXJyYXlwYWQucHkKK2luZGV4IDJkYWQ5OWMuLjI5NGE2ODkgMTAwNjQ0CistLS0gYS9udW1weS9saWIvYXJyYXlwYWQucHkKKysrKyBiL251bXB5L2xpYi9hcnJheXBhZC5weQorQEAgLTE0MDYsNiArMTQwNiw5IEBAIGRlZiBwYWQoYXJyYXksIHBhZF93aWR0aCwgbW9kZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgIG5ld21hdCA9IF9hcHBlbmRfbWluKG5ld21hdCwgcGFkX2FmdGVyLCBjaHVua19hZnRlciwgYXhpcykKKyAKKyAgICAgZWxpZiBtb2RlID09ICdyZWZsZWN0JzoKKysgICAgICAgIGlmIG5hcnJheS5zaXplID09IDA6CisrICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlcmUgYXJlbid0IGFueSBlbGVtZW50cyB0byByZWZsZWN0IGluIGBhcnJheWAiKQorKworICAgICAgICAgZm9yIGF4aXMsIChwYWRfYmVmb3JlLCBwYWRfYWZ0ZXIpIGluIGVudW1lcmF0ZShwYWRfd2lkdGgpOgorICAgICAgICAgICAgICMgUmVjdXJzaXZlIHBhZGRpbmcgYWxvbmcgYW55IGF4aXMgd2hlcmUgYHBhZF9hbXRgIGlzIHRvbyBsYXJnZQorICAgICAgICAgICAgICMgZm9yIGluZGV4aW5nIHRyaWNrcy4gV2UgY2FuIG9ubHkgc2FmZWx5IHBhZCB0aGUgb3JpZ2luYWwgYXhpcworZGlmZiAtLWdpdCBhL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5IGIvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKK2luZGV4IDA1NmFhNDUuLjBmNzFkMzIgMTAwNjQ0CistLS0gYS9udW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weQorKysrIGIvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKK0BAIC0xMDE0LDYgKzEwMTQsMTAgQEAgY2xhc3MgVmFsdWVFcnJvcjEoVGVzdENhc2UpOgorICAgICAgICAgYXNzZXJ0X3JhaXNlcyhWYWx1ZUVycm9yLCBwYWQsIGFyciwgKCgtMiwgMyksICgzLCAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorIAorKyAgICBkZWYgdGVzdF9jaGVja19lbXB0eV9hcnJheShzZWxmKToKKysgICAgICAgIGFzc2VydF9yYWlzZXMoVmFsdWVFcnJvciwgcGFkLCBbXSwgNCwgbW9kZT0ncmVmbGVjdCcpCisrICAgICAgICBhc3NlcnRfcmFpc2VzKFZhbHVlRXJyb3IsIHBhZCwgbnAubmRhcnJheSgwKSwgNCwgbW9kZT0ncmVmbGVjdCcpCisrCisgCisgY2xhc3MgVmFsdWVFcnJvcjIoVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9jaGVja19uZWdhdGl2ZV9wYWRfYW1vdW50KHNlbGYpOgorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKaW5kZXggNWIxMzRlZC4uZmZkNmNlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAgbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5IHwgNTAgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLWluZGV4IDlkZDQ4ZTIuLjgwZTE5N2EgMTAwNjQ0Ci0tLS0gYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLSsrKyBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQotQEAgLTIwNCw1MSArMjA0LDEzIEBAIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorSW5kZXg6IG51bXB5LTEuMTMuMS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBudW1weS0xLjEzLjEub3JpZy9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKKysrKyBudW1weS0xLjEzLjEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5CitAQCAtMjExLDUxICsyMTEsMTMgQEAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gW10KICAgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gW10KICBlbHNlOgpAQCAtMjksNyArMjksMTAgQEAKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9vcHQvbG9jYWwvaW5jbHVkZScsICcvc3cvaW5jbHVkZScsCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2luY2x1ZGUvc3VpdGVzcGFyc2UnXQogLSAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy91c3IvbG9jYWwvc3JjJywgJy9vcHQvc3JjJywgJy9zdy9zcmMnXQotLQorKyAgICBkZWZhdWx0X2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGlyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQorKyAgICBkZWZhdWx0X2luY2x1ZGVfZGlycyA9IFsnL2RlYWRkaXIvaW5jbHVkZSddCisrICAgIGRlZmF1bHRfc3JjX2RpcnMgPSBbJy4nLCAnL2RlYWRkaXIvc3JjJ10KKyAKIC0gICAgZGVmYXVsdF94MTFfbGliX2RpcnMgPSBsaWJwYXRocyhbJy91c3IvWDExUjYvbGliJywgJy91c3IvWDExL2xpYicsCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQogLSAgICBkZWZhdWx0X3gxMV9pbmNsdWRlX2RpcnMgPSBbJy91c3IvWDExUjYvaW5jbHVkZScsICcvdXNyL1gxMS9pbmNsdWRlJywKQEAgLTUwLDcgKzUzLDcgQEAKIC0gICAgICAgICMgdGVzdHMgYXJlIHJ1biBpbiBkZWJ1ZyBtb2RlIFB5dGhvbiAzLgogLSAgICAgICAgdG1wID0gb3Blbihvcy5kZXZudWxsLCAndycpCiAtICAgICAgICBwID0gc3AuUG9wZW4oWyJnY2MiLCAiLXByaW50LW11bHRpYXJjaCJdLCBzdGRvdXQ9c3AuUElQRSwKLS0gICAgICAgICAgICAgICAgc3RkZXJyPXRtcCkKKy0gICAgICAgICAgICAgICAgICAgICBzdGRlcnI9dG1wKQogLSAgICBleGNlcHQgKE9TRXJyb3IsIERpc3R1dGlsc0Vycm9yKToKIC0gICAgICAgICMgT1NFcnJvciBpZiBnY2MgaXMgbm90IGluc3RhbGxlZCwgb3IgU2FuZGJveFZpb2xhdGlvbiAoRGlzdHV0aWxzRXJyb3IKIC0gICAgICAgICMgc3ViY2xhc3MpIGlmIGFuIG9sZCBzZXR1cHRvb2xzIGJ1ZyBpcyB0cmlnZ2VyZWQgKHNlZSBnaC0zMTYwKS4KQEAgLTY0LDE1ICs2Nyw4IEBACiAtICAgIGZpbmFsbHk6CiAtICAgICAgICBpZiB0bXAgaXMgbm90IE5vbmU6CiAtICAgICAgICAgICAgdG1wLmNsb3NlKCkKLSsgICAgZGVmYXVsdF9saWJfZGlycyA9IGxpYnBhdGhzKFsnL2RlYWRpci9saWInXSwgcGxhdGZvcm1fYml0cykKLSsgICAgZGVmYXVsdF9pbmNsdWRlX2RpcnMgPSBbJy9kZWFkZGlyL2luY2x1ZGUnXQotKyAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy9kZWFkZGlyL3NyYyddCi0rCiArICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGRpci9saWInXSwgcGxhdGZvcm1fYml0cykKICsgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gWycvZGVhZGRpci9pbmNsdWRlJ10KICAKICBpZiBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2xpYicpIG5vdCBpbiBkZWZhdWx0X2xpYl9kaXJzOgogICAgICBkZWZhdWx0X2xpYl9kaXJzLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2xpYicpKQotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9kNzBkMzdiN2M0YWEyYWYzZmU4NzlhMGQ4NThjNTRmMmFhMzJhNzI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvZDcwZDM3YjdjNGFhMmFmM2ZlODc5YTBkODU4YzU0ZjJhYTMyYTcyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhjYjA3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9kNzBkMzdiN2M0YWEyYWYzZmU4NzlhMGQ4NThjNTRmMmFhMzJhNzI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSAxNTRiMmMxOWYzOTI4MTdhOTM2YWVhMDE5MGUyNzZmODIyOGNiNDg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkVyaWsgTS4gQnJheSIgPGVyaWsuYnJheUBscmkuZnI+Ci1EYXRlOiBNb24sIDEyIERlYyAyMDE2IDEzOjA3OjE2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJVRzogeGxvY2FsZS5oIGlzIG5vdCBhdmFpbGFibGUgaW4gbmV3bGliLS1hbGwgdGhlIGRlZmluZXMKLSB1c2VkIGhlcmUgZnJvbSB4bG9jYWxlLmggYXJlIGluc3RlYWQgZm91bmQgaW4gbG9jYWxlLmgKLQotQWRkZWQgYSBmZWF0dXJlIGNoZWNrIGZvciB4bG9jYWxlLmgsIHdpdGggZmFsbGJhY2sgdG8gbG9jYWxlLmggaWYgaXQgaXMKLW1pc3NpbmcuCi0tLS0KLSBudW1weS9jb3JlL3NldHVwX2NvbW1vbi5weSAgICAgICAgICB8IDEgKwotIG51bXB5L2NvcmUvc3JjL211bHRpYXJyYXkvbnVtcHlvcy5jIHwgOCArKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVJQIDIwMTcvOS82Ci0KLWRpZmYgLS1naXQgYS9udW1weS9jb3JlL3NldHVwX2NvbW1vbi5weSBiL251bXB5L2NvcmUvc2V0dXBfY29tbW9uLnB5Ci1pbmRleCBiYTc1MjFlMzA0My4uYTE3MjllNjU2NTYgMTAwNjQ0Ci0tLS0gYS9udW1weS9jb3JlL3NldHVwX2NvbW1vbi5weQotKysrIGIvbnVtcHkvY29yZS9zZXR1cF9jb21tb24ucHkKLUBAIC0xMTMsNiArMTEzLDcgQEAgZGVmIGNoZWNrX2FwaV92ZXJzaW9uKGFwaXZlcnNpb24sIGNvZGVnZW5fZGlyKToKLSAgICAgICAgICAgICAgICAgInhtbWludHJpbi5oIiwgICMgU1NFCi0gICAgICAgICAgICAgICAgICJlbW1pbnRyaW4uaCIsICAjIFNTRTIKLSAgICAgICAgICAgICAgICAgImZlYXR1cmVzLmgiLCAgIyBmb3IgZ2xpYmMgdmVyc2lvbiBsaW51eAotKyAgICAgICAgICAgICAgICAieGxvY2FsZS5oIiAgIyBzZWUgR0gjODM2NwotIF0KLSAKLSAjIG9wdGlvbmFsIGdjYyBjb21waWxlciBidWlsdGlucyBhbmQgdGhlaXIgY2FsbCBhcmd1bWVudHMgYW5kIG9wdGlvbmFsIGEKLWRpZmYgLS1naXQgYS9udW1weS9jb3JlL3NyYy9tdWx0aWFycmF5L251bXB5b3MuYyBiL251bXB5L2NvcmUvc3JjL211bHRpYXJyYXkvbnVtcHlvcy5jCi1pbmRleCA0NTBlYzQwYjZlMC4uODQ2MTdlYTc4YzMgMTAwNjQ0Ci0tLS0gYS9udW1weS9jb3JlL3NyYy9tdWx0aWFycmF5L251bXB5b3MuYwotKysrIGIvbnVtcHkvY29yZS9zcmMvbXVsdGlhcnJheS9udW1weW9zLmMKLUBAIC0xNSw3ICsxNSwxMyBAQAotIAotICNpZmRlZiBIQVZFX1NUUlRPTERfTAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8eGxvY2FsZS5oPgotKyNpZmRlZiBIQVZFX1hMT0NBTEVfSAotKyAgICAvKgotKyAgICAgKiB0aGUgZGVmaW5lcyBmcm9tIHhsb2NhbGUuaCBhcmUgaW5jbHVkZWQgaW4gbG9jYWxlLmggb24gc29tZSBzeXRlbXM7Ci0rICAgICAqIHNlZSBnaC04MzY3Ci0rICAgICAqLwotKyAgICAjaW5jbHVkZSA8eGxvY2FsZS5oPgotKyNlbmRpZgotICNlbmRpZgotIAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjExLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Yzk2ZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1TVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03ZTUxYTU2NzdiMjJiODY1YWJiZmIzZGZmNmZmYjJkMCIKLQotU1JDTkFNRSA9ICJudW1weSIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X3NoZWJhbmdfZjJweS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kNzBkMzdiN2M0YWEyYWYzZmU4NzlhMGQ4NThjNTRmMmFhMzJhNzI1LnBhdGNoIFwKLSAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL251bXB5L2ZpbGVzLyIKLQotQ09ORklHRklMRVNVUkkgPz0gIiIKLQotQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi0jIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQotIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgIHRydWUKLSAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCi19Ci0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNiZDc5MjdjMzE0YzQzNzgwMjcxYmYxYWI3OTVlYmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkYjJmYmQ2NGUyZTdjNjhlNzQwYjE0NDAyYjI1YWY1MTQxOGZjNDNhNTlkOWU1NDE3MmIzOGI5MDZiMGY2OSIKLQotIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGlmZmxpYiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHByaW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1waWNrbGUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1ub3NlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kb2N0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kYXRldGltZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGlzdHV0aWxzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1tbWFwIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW51bWJlcnMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5ZG9jIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1wa2d1dGlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1lbWFpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWN0eXBlcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tdGhyZWFkaW5nIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjEzLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNlOGY0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjEzLjEuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTEwMDJiMDljZDY1NGZjYWEyZGNjODc1MzVhY2Q5YTk2IgorCitTUkNOQU1FID0gIm51bXB5IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke1NSQ05BTUV9LyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfc2hlYmFuZ19mMnB5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaCBcCisgICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKKworU1JDX1VSSVttZDVzdW1dID0gIjZkNDU5ZTRhMjRmNTAzNWY3MjBkZGEzYzU3NzE2YTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDIwZWMwNmYxZTljZTExMTVhNTAxNjFhMzhiZjhkNGMyNTI1Mzc5OTAwZjljYjQ3OGNjNjEzYTFlN2NkOTMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCisKK0NPTkZJR0ZJTEVTVVJJID89ICIiCisKK0NPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9hcm0gPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX2FybWViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKKworUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMKKworIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKKyMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKKyAgICB0cnVlCisgICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LworfQorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKKworIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbi11bml0dGVzdCBcCisgICAgICAgICAgICAgICAgICBweXRob24tZGlmZmxpYiBcCisgICAgICAgICAgICAgICAgICBweXRob24tcHByaW50IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1waWNrbGUgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1ub3NlIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1kb2N0ZXN0IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1kYXRldGltZSBcCisgICAgICAgICAgICAgICAgICBweXRob24tZGlzdHV0aWxzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1tbWFwIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLW51bWJlcnMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5ZG9jIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1wa2d1dGlsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1lbWFpbCBcCisgICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCisgICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLWN0eXBlcyBcCisgICAgICAgICAgICAgICAgICBweXRob24tdGhyZWFkaW5nIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjExLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY5NjY1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi1TVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03ZTUxYTU2NzdiMjJiODY1YWJiZmIzZGZmNmZmYjJkMCIKLQotU1JDTkFNRSA9ICJudW1weSIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X3NoZWJhbmdfZjJweS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kNzBkMzdiN2M0YWEyYWYzZmU4NzlhMGQ4NThjNTRmMmFhMzJhNzI1LnBhdGNoIFwKLSAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL251bXB5L2ZpbGVzLyIKLQotQ09ORklHRklMRVNVUkkgPz0gIiIKLQotQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKLSMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgIHRydWUKLSAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCi19Ci0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNiZDc5MjdjMzE0YzQzNzgwMjcxYmYxYWI3OTVlYmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkYjJmYmQ2NGUyZTdjNjhlNzQwYjE0NDAyYjI1YWY1MTQxOGZjNDNhNTlkOWU1NDE3MmIzOGI5MDZiMGY2OSIKLQotIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtdW5pdHRlc3QgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kaWZmbGliIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcHByaW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGlja2xlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc2hlbGwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1ub3NlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZG9jdGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWRhdGV0aW1lIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbWlzYyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW1tYXAgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1udW1iZXJzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcHlkb2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1wa2d1dGlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZW1haWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtY29tcHJlc3Npb24gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1jdHlwZXMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy10aHJlYWRpbmcgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy10ZXh0dXRpbHMgXAotIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ODc0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYgpAQCAtMCwwICsxLDExNCBAQAorU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MTAwMmIwOWNkNjU0ZmNhYTJkY2M4NzUzNWFjZDlhOTYiCisKK1NSQ05BTUUgPSAibnVtcHkiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1CVUctZml4LWluZmluaXRlLWxvb3Atd2hlbi1jcmVhdGluZy1ucC5wYWQtb24tYW4tZW1wLnBhdGNoIFwKKyAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgorU1JDX1VSSVttZDVzdW1dID0gIjZkNDU5ZTRhMjRmNTAzNWY3MjBkZGEzYzU3NzE2YTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDIwZWMwNmYxZTljZTExMTVhNTAxNjFhMzhiZjhkNGMyNTI1Mzc5OTAwZjljYjQ3OGNjNjEzYTFlN2NkOTMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCisKK0NPTkZJR0ZJTEVTVVJJID89ICIiCisKK0NPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9hcm0gPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX2FybWViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKKworUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKKyMgTWFrZSB0aGUgYnVpbGQgZmFpbCBhbmQgcmVwbGFjZSAqY29uZmlnLmggd2l0aCBwcm9wZXIgb25lCisjIFRoaXMgaXMgYSB1Z2x5LCB1Z2x5IGhhY2sgLSBLb2VuCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKKyAgICB0cnVlCisgICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LworfQorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKKworIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtdW5pdHRlc3QgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kaWZmbGliIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcHByaW50IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGlja2xlIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc2hlbGwgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1ub3NlIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZG9jdGVzdCBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWRhdGV0aW1lIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGlzdHV0aWxzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbWlzYyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLW1tYXAgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1udW1iZXJzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcHlkb2MgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1wa2d1dGlsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZW1haWwgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtY29tcHJlc3Npb24gXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1jdHlwZXMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy10aHJlYWRpbmcgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy10ZXh0dXRpbHMgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMi43LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCmluZGV4IDdlZDI1NGIuLjU3ZDQ4MzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCkBAIC0yODEsNyArMjgxLDcgQEAKIEZJTEVTXyR7UE59LXpsaWI9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvemxpYi5zbyAiCiAKIFNVTU1BUllfJHtQTn0tbW9kdWxlcz0iQWxsIFB5dGhvbiBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hdWRpbyAke1BOfS1ic2RkYiAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21waWxlciAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb250ZXh0bGliICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taG90c2hvdCAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wbGlzdGxpYiAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXNvdXJjZSAke1BOfS1yb2JvdHBhcnNlciAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS16bGliICAiCitSREVQRU5EU18ke1BOfS1tb2R1bGVzPSIke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWF1ZGlvICR7UE59LWJzZGRiICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXBpbGVyICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvbnRleHRsaWIgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1ob3RzaG90ICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBsaXN0bGliICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlc291cmNlICR7UE59LXJvYm90cGFyc2VyICR7UE59LXNoZWxsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LXpsaWIgICIKIEFMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0zLjUtbWFuaWZlc3QuaW5jCmluZGV4IDFlMjBmMDAuLjAyNjBlODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0zLjUtbWFuaWZlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0zLjUtbWFuaWZlc3QuaW5jCkBAIC0xLDYgKzEsNiBAQAogCiAjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi8uLi8uLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weScgVmVyc2lvbiAyMDE0MDEzMSAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgorIyBHZW5lcmF0b3I6ICdzY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weScgVmVyc2lvbiAyMDE0MDEzMSAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgogCiAgCiAKQEAgLTM0LDcgKzM0LDcgQEAKIAogU1VNTUFSWV8ke1BOfS1jb21wcmVzc2lvbj0iUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIKIFJERVBFTkRTXyR7UE59LWNvbXByZXNzaW9uPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyAke1BOfS1pbXBvcnRsaWIgJHtQTn0tdGhyZWFkaW5nICR7UE59LXNoZWxsIgotRklMRVNfJHtQTn0tY29tcHJlc3Npb249IiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYnoyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3psaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3psaWIuKi5zbyAiCitGSUxFU18ke1BOfS1jb21wcmVzc2lvbj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9nemlwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nemlwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS96aXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy96aXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90YXJmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90YXJmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2J6Mi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvemxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vemxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvYnoyLnB5ICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYnoyLnB5ICR7bGliZGlyfS9weXRob24zLjUvbHptYS5weSAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2x6bWEucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fY29tcHJlc3Npb24ucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24ucHkgIgogCiBTVU1NQVJZXyR7UE59LWNvcmU9IlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIgogUkRFUEVORFNfJHtQTn0tY29yZT0iJHtQTn0tbGFuZyAke1BOfS1yZSAke1BOfS1yZXBybGliICR7UE59LWNvZGVjcyAke1BOfS1pbyAke1BOfS1tYXRoIgpAQCAtNjYsNyArNjYsNyBAQAogCiBTVU1NQVJZXyR7UE59LWRldj0iUHl0aG9uIGRldmVsb3BtZW50IHBhY2thZ2UiCiBSREVQRU5EU18ke1BOfS1kZXY9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1kZXY9IiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9LyoubGEgJHtsaWJkaXJ9LyouYSAke2xpYmRpcn0vKi5vICR7bGliZGlyfS9wa2djb25maWcgJHtiYXNlX2xpYmRpcn0vKi5hICR7YmFzZV9saWJkaXJ9LyoubyAke2RhdGFkaXJ9L2FjbG9jYWwgJHtkYXRhZGlyfS9wa2djb25maWcgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvTWFrZWZpbGUgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvTWFrZWZpbGUvX19weWNhY2hlX18gIgorRklMRVNfJHtQTn0tZGV2PSIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8qLmxhICR7bGliZGlyfS8qLmEgJHtsaWJkaXJ9LyoubyAke2xpYmRpcn0vcGtnY29uZmlnICR7YmFzZV9saWJkaXJ9LyouYSAke2Jhc2VfbGliZGlyfS8qLm8gJHtkYXRhZGlyfS9hY2xvY2FsICR7ZGF0YWRpcn0vcGtnY29uZmlnICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZSAke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyovTWFrZWZpbGUvX19weWNhY2hlX18gIgogCiBTVU1NQVJZXyR7UE59LWRpZmZsaWI9IlB5dGhvbiBoZWxwZXJzIGZvciBjb21wdXRpbmcgZGVsdGFzIGJldHdlZW4gb2JqZWN0cyIKIFJERVBFTkRTXyR7UE59LWRpZmZsaWI9IiR7UE59LWxhbmcgJHtQTn0tcmUiCkBAIC0yNDEsNyArMjQxLDcgQEAKIEZJTEVTXyR7UE59LXRlcm1pbmFsPSIke2xpYmRpcn0vcHl0aG9uMy41L3B0eS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHR5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90dHkuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R0eS4qICIKIAogU1VNTUFSWV8ke1BOfS10ZXN0cz0iUHl0aG9uIHRlc3RzIgotUkRFUEVORFNfJHtQTn0tdGVzdHM9IiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS10ZXN0cz0iJHtQTn0tY29yZSAke1BOfS1jb21wcmVzc2lvbiIKIEZJTEVTXyR7UE59LXRlc3RzPSIke2xpYmRpcn0vcHl0aG9uMy41L3Rlc3QgJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXN0L19fcHljYWNoZV9fICIKIAogU1VNTUFSWV8ke1BOfS10ZXh0dXRpbHM9IlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiCkBAIC0yNzcsNyArMjc3LDcgQEAKIEZJTEVTXyR7UE59LXhtbHJwYz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGNsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3htbHJwY2xpYi4qICR7bGliZGlyfS9weXRob24zLjUvU2ltcGxlWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9TaW1wbGVYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L0RvY1hNTFJQQ1NlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vRG9jWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMgJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMvX19weWNhY2hlX18gIgogCiBTVU1NQVJZXyR7UE59LW1vZHVsZXM9IkFsbCBQeXRob24gbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXM9IiR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXR5cGluZyAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAgIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hc3luY2lvICR7UE59LWF1ZGlvICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWVudW0gJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXBybGliICR7UE59LXJlc291cmNlICR7UE59LXNlbGVjdG9ycyAke1BOfS1zaGVsbCAke1BOfS1zaWduYWwgJHtQTn0tc210cGQgJHtQTn0tc3FsaXRlMyAke1BOfS1zcWxpdGUzLXRlc3RzICR7UE59LXN0cmluZ29sZCAke1BOfS1zdWJwcm9jZXNzICR7UE59LXN5c2xvZyAke1BOfS10ZXJtaW5hbCAke1BOfS10ZXh0dXRpbHMgJHtQTn0tdGhyZWFkaW5nICR7UE59LXRraW50ZXIgJHtQTn0tdHlwaW5nICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICAiCiBBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCiAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jXzAuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jXzAuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODU1ZTQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luY18wLjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBweXRob24tYXN5bmMuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXRocmVhZGluZyBweXRob24tbGFuZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMKaW5kZXggZmVkZGYyNy4uNzc3NjA4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMKQEAgLTEwLDggKzEwLDggQEAKIAogU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL0cvR2l0UHl0aG9uL0dpdFB5dGhvbi0ke1BWfS50YXIuZ3oiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3N2Y4MzM5ZTY4ZGVkYjZkN2M0ZTI2MzcxYTU4OGVkOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOTZmOGU5NTNjZjlmZWUwYTc1OTlmYzU4NzY2NzU5MTMyODc2MGI2MzQxYTAwODFlZjMxMWE5NDJmYzk2MjA0IgorU1JDX1VSSVttZDVzdW1dID0gImRmOTQyMTJiMTlkMjcwYTYyNWI2N2I0Yzg0YWM5YTQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjMDBjYmQyNTZlMmIxZDAzOTM4MWQ0ZjdkNzFmY2I3ZWU1Y2MxOTZjYTEwYzEwMWZmNzE5MWJkODJhYjVkOWMiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0dpdFB5dGhvbi8iCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvR2l0UHl0aG9uLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRfMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0XzIuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDlkYmVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRfMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdpdC5pbmMKLQotREVQRU5EUyA9ICJweXRob24tZ2l0ZGIiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWdpdGRiIHB5dGhvbi1sYW5nIHB5dGhvbi1pbyBweXRob24tc2hlbGwgcHl0aG9uLW1hdGggcHl0aG9uLXJlIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1zdHJpbmdvbGQgcHl0aG9uLXVuaXhhZG1pbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYl8wLjYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYl8wLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc3NzM5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGJfMC42LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdpdGRiLmluYwotCi1ERVBFTkRTID0gInB5dGhvbi1hc3luYyBweXRob24tc21tYXAiCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tc21tYXAgcHl0aG9uLWFzeW5jIHB5dGhvbi1tbWFwIHB5dGhvbi1sYW5nIHB5dGhvbi16bGliIHB5dGhvbi1pbyBweXRob24tc2hlbGwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMKaW5kZXggMTAzNjRkYi4uMWM4M2FmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvLmluYwpAQCAtMSwxMiArMSwxMyBAQAogU1VNTUFSWSA9ICJUZW1wbGF0aW5nIGxpYnJhcnkgZm9yIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWFrb3RlbXBsYXRlcy5vcmcvIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFiYjIxZmEyZDJmN2E1MzRjODg0Yjk5MDQzMGE2ODYzIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvTS9NYWtvL01ha28tJHtQVn0udGFyLmd6IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYTI4ZTIyYTMzOTA4MDMxNmIyYWNjMzUyYjllZTYzMWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg1NTllYmQ4NzJhOGU3N2Y5MjAwNTg4NGIzZDg4ZmZhZTU1MjgxMmNkZjE3ZGI2NzY4ZTVjM2JlNWViYmUwZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODM2Y2M5OTdiMWI3NzNlZjM4OWJmNjYyOWMzMGU2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZTAyZmRlNTdiZDRhYmI1ZWM0MDAxODFlNGMzMTRmNTZhYzNlNDliYTRmYjhiMGQ1MGJiYTE4Y2IyN2QyNWFlIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9tYWtvLyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9NYWtvLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha29fMS4wLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMDA0NGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha29fMS4wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1tYWtvLmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXRocmVhZGluZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1odG1sIFwKLSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotIyBUaGUgc2FtZSB1dGlsaXR5IGlzIHBhY2thZ2VkIGluIHB5dGhvbjMtbWFrbywgc28gaXQgd291bGQgY29uZmxpY3QKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vbWFrby1yZW5kZXIKLSAgICBybWRpciAke0R9JHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTIuNy1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTIuNy1tYW5pZmVzdC5pbmMKaW5kZXggNTgxYTM3YS4uYjA1YWFlMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMi43LW1hbmlmZXN0LmluYwpAQCAtMSwxMCArMSw5IEBACiAKICMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJy4uLy4uLy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTEwMjIyLjIgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KKyMgR2VuZXJhdG9yOiAnLi4vc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkgLS1uYXRpdmUnIFZlcnNpb24gMjAxMTAyMjIuMiAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgogCiAgCiAKLVJQUk9WSURFUys9InB5dGhvbi0ydG8zLW5hdGl2ZSBweXRob24tYXJncGFyc2UtbmF0aXZlIHB5dGhvbi1hdWRpby1uYXRpdmUgcHl0aG9uLWJzZGRiLW5hdGl2ZSBweXRob24tY29kZWNzLW5hdGl2ZSBweXRob24tY29tcGlsZS1uYXRpdmUgcHl0aG9uLWNvbXBpbGVyLW5hdGl2ZSBweXRob24tY29tcHJlc3Npb24tbmF0aXZlIHB5dGhvbi1jb250ZXh0bGliLW5hdGl2ZSBweXRob24tY29yZS1uYXRpdmUgcHl0aG9uLWNyeXB0LW5hdGl2ZSBweXRob24tY3R5cGVzLW5hdGl2ZSBweXRob24tY3Vyc2VzLW5hdGl2ZSBweXRob24tZGF0ZXRpbWUtbmF0aXZlIHB5dGhvbi1kYi1uYXRpdmUgcHl0aG9uLWRlYnVnZ2VyLW5hdGl2ZSBweXRob24tZGV2LW5hdGl2ZSBweXRob24tZGlmZmxpYi1uYXRpdmUgcHl0aG9uLWRpc3R1dGlscy1uYXRpdmUgcHl0aG9uLWRpc3R1dGlscy1zdGF0aWNkZXYtbmF0aXZlIHB5dGhvbi1kb2N0ZXN0LW5hdGl2ZSBweXRob24tZW1haWwtbmF0aXZlIHB5dGhvbi1mY250bC1uYXRpdmUgcHl0aG9uLWdkYm0tbmF0aXZlIHB5dGhvbi1ob3RzaG90LW5hdGl2ZSBweXRob24taHRtbC1uYXRpdmUgcHl0aG9uLWlkbGUtbmF0aXZlIHB5dGhvbi1pbWFnZS1uYXRpdmUgcHl0aG9uLWltcG9ydGxpYi1uYXRpdmUgcHl0aG9uLWlvLW5hdGl2ZSBweXRob24tanNvbi1uYXRpdmUgcHl0aG9uLWxhbmctbmF0aXZlIHB5dGhvbi1sb2dnaW5nLW5hdGl2ZSBweXRob24tbWFpbGJveC1uYXRpdmUgcHl0aG9uLW1hdGgtbmF0aXZlIHB5dGhvbi1taW1lLW5hdGl2ZSBweXRob24tbW1hcC1uYXRpdmUgcHl0aG9uLW11bHRpcHJvY2Vzc2luZy1uYXRpdmUgcHl0aG9uLW5ldGNsaWVudC1uYXRpdmUgcHl0aG9uLW5ldHNlcnZlci1uYXRpdmUgcHl0aG9uLW51bWJlcnMtbmF0aXZlIHB5dGhvbi1waWNrbGUtbmF0aXZlIHB5dGhvbi1wa2d1dGlsLW5hdGl2ZSBweXRob24tcGxpc3RsaWItbmF0aXZlIHB5dGhvbi1wcHJpbnQtbmF0aXZlIHB5dGhvbi1wcm9maWxlLW5hdGl2ZSBweXRob24tcHlkb2MtbmF0aXZlIHB5dGhvbi1yZS1uYXRpdmUgcHl0aG9uLXJlYWRsaW5lLW5hdGl2ZSBweXRob24tcmVzb3VyY2UtbmF0aXZlIHB5dGhvbi1yb2JvdHBhcnNlci1uYXRpdmUgcHl0aG9uLXNoZWxsLW5hdGl2ZSBweXRob24tc210cGQtbmF0aXZlIHB5dGhvbi1zcWxpdGUzLW5hdGl2ZSBweXRob24tc3FsaXRlMy10ZXN0cy1uYXRpdmUgcHl0aG9uLXN0cmluZ29sZC1uYXRpdmUgcHl0aG9uLXN1YnByb2Nlc3MtbmF0aXZlIHB5dGhvbi1zeXNsb2ctbmF0aXZlIHB5dGhvbi10ZXJtaW5hbC1uYXRpdmUgcHl0aG9uLXRlc3RzLW5hdGl2ZSBweXRob24tdGV4dHV0aWxzLW5hdGl2ZSBweXRob24tdGhyZWFkaW5nLW5hdGl2ZSBweXRob24tdGtpbnRlci1uYXRpdmUgcHl0aG9uLXVuaXR0ZXN0LW5hdGl2ZSBweXRob24tdW5peGFkbWluLW5hdGl2ZSBweXRob24teG1sLW5hdGl2ZSBweXRob24teG1scnBjLW5hdGl2ZSBweXRob24temxpYi1uYXRpdmUgIgotCitSUFJPVklERVMgKz0gInB5dGhvbi1tb2R1bGVzLW5hdGl2ZSBweXRob24tMnRvMy1uYXRpdmUgcHl0aG9uLWFyZ3BhcnNlLW5hdGl2ZSBweXRob24tYXVkaW8tbmF0aXZlIHB5dGhvbi1ic2RkYi1uYXRpdmUgcHl0aG9uLWNvZGVjcy1uYXRpdmUgcHl0aG9uLWNvbXBpbGUtbmF0aXZlIHB5dGhvbi1jb21waWxlci1uYXRpdmUgcHl0aG9uLWNvbXByZXNzaW9uLW5hdGl2ZSBweXRob24tY29udGV4dGxpYi1uYXRpdmUgcHl0aG9uLWNvcmUtbmF0aXZlIHB5dGhvbi1jcnlwdC1uYXRpdmUgcHl0aG9uLWN0eXBlcy1uYXRpdmUgcHl0aG9uLWN1cnNlcy1uYXRpdmUgcHl0aG9uLWRhdGV0aW1lLW5hdGl2ZSBweXRob24tZGItbmF0aXZlIHB5dGhvbi1kZWJ1Z2dlci1uYXRpdmUgcHl0aG9uLWRldi1uYXRpdmUgcHl0aG9uLWRpZmZsaWItbmF0aXZlIHB5dGhvbi1kaXN0dXRpbHMtbmF0aXZlIHB5dGhvbi1kaXN0dXRpbHMtc3RhdGljZGV2LW5hdGl2ZSBweXRob24tZG9jdGVzdC1uYXRpdmUgcHl0aG9uLWVtYWlsLW5hdGl2ZSBweXRob24tZmNudGwtbmF0aXZlIHB5dGhvbi1nZGJtLW5hdGl2ZSBweXRob24taG90c2hvdC1uYXRpdmUgcHl0aG9uLWh0bWwtbmF0aXZlIHB5dGhvbi1pZGxlLW5hdGl2ZSBweXRob24taW1hZ2UtbmF0aXZlIHB5dGhvbi1pbXBvcnRsaWItbmF0aXZlIHB5dGhvbi1pby1uYXRpdmUgcHl0aG9uLWpzb24tbmF0aXZlIHB5dGhvbi1sYW5nLW5hdGl2ZSBweXRob24tbG9nZ2luZy1uYXRpdmUgcHl0aG9uLW1haWxib3gtbmF0aXZlIHB5dGhvbi1tYXRoLW5hdGl2ZSBweXRob24tbWltZS1uYXRpdmUgcHl0aG9uLW1tYXAtbmF0aXZlIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmctbmF0aXZlIHB5dGhvbi1uZXRjbGllbnQtbmF0aXZlIHB5dGhvbi1uZXRzZXJ2ZXItbmF0aXZlIHB5dGhvbi1udW1iZXJzLW5hdGl2ZSBweXRob24tcGlja2xlLW5hdGl2ZSBweXRob24tcGtndXRpbC1uYXRpdmUgcHl0aG9uLXBsaXN0bGliLW5hdGl2ZSBweXRob24tcHByaW50LW5hdGl2ZSBweXRob24tcHJvZmlsZS1uYXRpdmUgcHl0aG9uLXB5ZG9jLW5hdGl2ZSBweXRob24tcmUtbmF0aXZlIHB5dGhvbi1yZWFkbGluZS1uYXRpdmUgcHl0aG9uLXJlc291cmNlLW5hdGl2ZSBweXRob24tcm9ib3RwYXJzZXItbmF0aXZlIHB5dGhvbi1zaGVsbC1uYXRpdmUgcHl0aG9uLXNtdHBkLW5hdGl2ZSBweXRob24tc3FsaXRlMy1uYXRpdmUgcHl0aG9uLXNxbGl0ZTMtdGVzdHMtbmF0aXZlIHB5dGhvbi1zdHJpbmdvbGQtbmF0aXZlIHB5dGhvbi1zdWJwcm9jZXNzLW5hdGl2ZSBweXRob24tc3lzbG9nLW5hdGl2ZSBweXRob24tdGVybWluYWwtbmF0aXZlIHB5dGhvbi10ZXN0cy1uYXRpdmUgcHl0aG9uLXRleHR1dGlscy1uYXRpdmUgcHl0aG9uLXRocmVhZGluZy1uYXRpdmUgcHl0aG9uLXRraW50ZXItbmF0aXZlIHB5dGhvbi11bml0dGVzdC1uYXRpdmUgcHl0aG9uLXVuaXhhZG1pbi1uYXRpdmUgcHl0aG9uLXhtbC1uYXRpdmUgcHl0aG9uLXhtbHJwYy1uYXRpdmUgcHl0aG9uLXpsaWItbmF0aXZlIgogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMy41LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMy41LW1hbmlmZXN0LmluYwppbmRleCAxMGJlM2U5Li5mMWY3MzJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0zLjUtbWFuaWZlc3QuaW5jCkBAIC0xLDEwICsxLDEwIEBACiAKICMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJy4uLy4uLy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTQwMTMxIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+CisjIEdlbmVyYXRvcjogJy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTQwMTMxIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+CiAKICAKIAotUlBST1ZJREVTKz0icHl0aG9uMy0ydG8zLW5hdGl2ZSBweXRob24zLWFyZ3BhcnNlLW5hdGl2ZSBweXRob24zLWFzeW5jaW8tbmF0aXZlIHB5dGhvbjMtYXVkaW8tbmF0aXZlIHB5dGhvbjMtY29kZWNzLW5hdGl2ZSBweXRob24zLWNvbXBpbGUtbmF0aXZlIHB5dGhvbjMtY29tcHJlc3Npb24tbmF0aXZlIHB5dGhvbjMtY29yZS1uYXRpdmUgcHl0aG9uMy1jcnlwdC1uYXRpdmUgcHl0aG9uMy1jdHlwZXMtbmF0aXZlIHB5dGhvbjMtY3Vyc2VzLW5hdGl2ZSBweXRob24zLWRhdGV0aW1lLW5hdGl2ZSBweXRob24zLWRiLW5hdGl2ZSBweXRob24zLWRlYnVnZ2VyLW5hdGl2ZSBweXRob24zLWRldi1uYXRpdmUgcHl0aG9uMy1kaWZmbGliLW5hdGl2ZSBweXRob24zLWRpc3R1dGlscy1uYXRpdmUgcHl0aG9uMy1kaXN0dXRpbHMtc3RhdGljZGV2LW5hdGl2ZSBweXRob24zLWRvY3Rlc3QtbmF0aXZlIHB5dGhvbjMtZW1haWwtbmF0aXZlIHB5dGhvbjMtZW51bS1uYXRpdmUgcHl0aG9uMy1mY250bC1uYXRpdmUgcHl0aG9uMy1nZGJtLW5hdGl2ZSBweXRob24zLWh0bWwtbmF0aXZlIHB5dGhvbjMtaWRsZS1uYXRpdmUgcHl0aG9uMy1pbWFnZS1uYXRpdmUgcHl0aG9uMy1pbXBvcnRsaWItbmF0aXZlIHB5dGhvbjMtaW8tbmF0aXZlIHB5dGhvbjMtanNvbi1uYXRpdmUgcHl0aG9uMy1sYW5nLW5hdGl2ZSBweXRob24zLWxvZ2dpbmctbmF0aXZlIHB5dGhvbjMtbWFpbGJveC1uYXRpdmUgcHl0aG9uMy1tYXRoLW5hdGl2ZSBweXRob24zLW1pbWUtbmF0aXZlIHB5dGhvbjMtbW1hcC1uYXRpdmUgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmctbmF0aXZlIHB5dGhvbjMtbmV0Y2xpZW50LW5hdGl2ZSBweXRob24zLW5ldHNlcnZlci1uYXRpdmUgcHl0aG9uMy1udW1iZXJzLW5hdGl2ZSBweXRob24zLXBpY2tsZS1uYXRpdmUgcHl0aG9uMy1wa2d1dGlsLW5hdGl2ZSBweXRob24zLXBwcmludC1uYXRpdmUgcHl0aG9uMy1wcm9maWxlLW5hdGl2ZSBweXRob24zLXB5ZG9jLW5hdGl2ZSBweXRob24zLXJlLW5hdGl2ZSBweXRob24zLXJlYWRsaW5lLW5hdGl2ZSBweXRob24zLXJlcHJsaWItbmF0aXZlIHB5dGhvbjMtcmVzb3VyY2UtbmF0aXZlIHB5dGhvbjMtc2VsZWN0b3JzLW5hdGl2ZSBweXRob24zLXNoZWxsLW5hdGl2ZSBweXRob24zLXNpZ25hbC1uYXRpdmUgcHl0aG9uMy1zbXRwZC1uYXRpdmUgcHl0aG9uMy1zcWxpdGUzLW5hdGl2ZSBweXRob24zLXNxbGl0ZTMtdGVzdHMtbmF0aXZlIHB5dGhvbjMtc3RyaW5nb2xkLW5hdGl2ZSBweXRob24zLXN1YnByb2Nlc3MtbmF0aXZlIHB5dGhvbjMtc3lzbG9nLW5hdGl2ZSBweXRob24zLXRlcm1pbmFsLW5hdGl2ZSBweXRob24zLXRlc3RzLW5hdGl2ZSBweXRob24zLXRleHR1dGlscy1uYXRpdmUgcHl0aG9uMy10aHJlYWRpbmctbmF0aXZlIHB5dGhvbjMtdGtpbnRlci1uYXRpdmUgcHl0aG9uMy10eXBpbmctbmF0aXZlIHB5dGhvbjMtdW5pdHRlc3QtbmF0aXZlIHB5dGhvbjMtdW5peGFkbWluLW5hdGl2ZSBweXRob24zLXhtbC1uYXRpdmUgcHl0aG9uMy14bWxycGMtbmF0aXZlICIKK1JQUk9WSURFUyArPSAicHl0aG9uMy1tb2R1bGVzLW5hdGl2ZSBweXRob24zLTJ0bzMtbmF0aXZlIHB5dGhvbjMtYXJncGFyc2UtbmF0aXZlIHB5dGhvbjMtYXN5bmNpby1uYXRpdmUgcHl0aG9uMy1hdWRpby1uYXRpdmUgcHl0aG9uMy1jb2RlY3MtbmF0aXZlIHB5dGhvbjMtY29tcGlsZS1uYXRpdmUgcHl0aG9uMy1jb21wcmVzc2lvbi1uYXRpdmUgcHl0aG9uMy1jb3JlLW5hdGl2ZSBweXRob24zLWNyeXB0LW5hdGl2ZSBweXRob24zLWN0eXBlcy1uYXRpdmUgcHl0aG9uMy1jdXJzZXMtbmF0aXZlIHB5dGhvbjMtZGF0ZXRpbWUtbmF0aXZlIHB5dGhvbjMtZGItbmF0aXZlIHB5dGhvbjMtZGVidWdnZXItbmF0aXZlIHB5dGhvbjMtZGV2LW5hdGl2ZSBweXRob24zLWRpZmZsaWItbmF0aXZlIHB5dGhvbjMtZGlzdHV0aWxzLW5hdGl2ZSBweXRob24zLWRpc3R1dGlscy1zdGF0aWNkZXYtbmF0aXZlIHB5dGhvbjMtZG9jdGVzdC1uYXRpdmUgcHl0aG9uMy1lbWFpbC1uYXRpdmUgcHl0aG9uMy1lbnVtLW5hdGl2ZSBweXRob24zLWZjbnRsLW5hdGl2ZSBweXRob24zLWdkYm0tbmF0aXZlIHB5dGhvbjMtaHRtbC1uYXRpdmUgcHl0aG9uMy1pZGxlLW5hdGl2ZSBweXRob24zLWltYWdlLW5hdGl2ZSBweXRob24zLWltcG9ydGxpYi1uYXRpdmUgcHl0aG9uMy1pby1uYXRpdmUgcHl0aG9uMy1qc29uLW5hdGl2ZSBweXRob24zLWxhbmctbmF0aXZlIHB5dGhvbjMtbG9nZ2luZy1uYXRpdmUgcHl0aG9uMy1tYWlsYm94LW5hdGl2ZSBweXRob24zLW1hdGgtbmF0aXZlIHB5dGhvbjMtbWltZS1uYXRpdmUgcHl0aG9uMy1tbWFwLW5hdGl2ZSBweXRob24zLW11bHRpcHJvY2Vzc2luZy1uYXRpdmUgcHl0aG9uMy1uZXRjbGllbnQtbmF0aXZlIHB5dGhvbjMtbmV0c2VydmVyLW5hdGl2ZSBweXRob24zLW51bWJlcnMtbmF0aXZlIHB5dGhvbjMtcGlja2xlLW5hdGl2ZSBweXRob24zLXBrZ3V0aWwtbmF0aXZlIHB5dGhvbjMtcHByaW50LW5hdGl2ZSBweXRob24zLXByb2ZpbGUtbmF0aXZlIHB5dGhvbjMtcHlkb2MtbmF0aXZlIHB5dGhvbjMtcmUtbmF0aXZlIHB5dGhvbjMtcmVhZGxpbmUtbmF0aXZlIHB5dGhvbjMtcmVwcmxpYi1uYXRpdmUgcHl0aG9uMy1yZXNvdXJjZS1uYXRpdmUgcHl0aG9uMy1zZWxlY3RvcnMtbmF0aXZlIHB5dGhvbjMtc2hlbGwtbmF0aXZlIHB5dGhvbjMtc2lnbmFsLW5hdGl2ZSBweXRob24zLXNtdHBkLW5hdGl2ZSBweXRob24zLXNxbGl0ZTMtbmF0aXZlIHB5dGhvbjMtc3FsaXRlMy10ZXN0cy1uYXRpdmUgcHl0aG9uMy1zdHJpbmdvbGQtbmF0aXZlIHB5dGhvbjMtc3VicHJvY2Vzcy1uYXRpdmUgcHl0aG9uMy1zeXNsb2ctbmF0aXZlIHB5dGhvbjMtdGVybWluYWwtbmF0aXZlIHB5dGhvbjMtdGVzdHMtbmF0aXZlIHB5dGhvbjMtdGV4dHV0aWxzLW5hdGl2ZSBweXRob24zLXRocmVhZGluZy1uYXRpdmUgcHl0aG9uMy10a2ludGVyLW5hdGl2ZSBweXRob24zLXR5cGluZy1uYXRpdmUgcHl0aG9uMy11bml0dGVzdC1uYXRpdmUgcHl0aG9uMy11bml4YWRtaW4tbmF0aXZlIHB5dGhvbjMteG1sLW5hdGl2ZSBweXRob24zLXhtbHJwYy1uYXRpdmUiCiAKIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlXzEuMy43LmJiCmluZGV4IDM3NTdmM2EuLjliMzUwOWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlXzEuMy43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlXzEuMy43LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJFeHRlbmRzIFB5dGhvbiB1bml0dGVzdCB0byBtYWtlIHRlc3RpbmcgZWFzaWVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3JlYWR0aGVkb2NzLm9yZy9kb2NzL25vc2UvIgogREVTQ1JJUFRJT04gPSAibm9zZSBleHRlbmRzIHRoZSB0ZXN0IGxvYWRpbmcgYW5kIHJ1bm5pbmcgZmVhdHVyZXMgb2YgdW5pdHRlc3QsIFwKIG1ha2luZyBpdCBlYXNpZXIgdG8gd3JpdGUsIGZpbmQgYW5kIHJ1biB0ZXN0cy4iCiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMjE3OTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkEgUHVyZSBQeXRob24gRXhwZWN0IGxpa2UgTW9kdWxlIGZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vcGV4cGVjdC5yZWFkdGhlZG9jcy5vcmcvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFjN2E3MjUyNTE4ODBhZjhjNmExNDgxODE2NjUzODViIgotCi1TUkNOQU1FID0gInBleHBlY3QiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9wLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzY5NDQxMDAwMWE5OWRmZjgzZjBiNTAwYTFjYTFjOTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2QxMzI0NjVhNzViNTdhYTgxODM0MWM2NTIxMzkyYTA2Y2M2NjBmZWIzOTg4ZDdmMTA3NGYzOWJkMjNjOWE5MiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGV4cGVjdCIKLQotUyA9ICIke1dPUktESVJ9L3BleHBlY3QtJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgcHl0aG9uLWNvcmUgXAotICAgIHB5dGhvbi1pbyBcCi0gICAgcHl0aG9uLXRlcm1pbmFsIFwKLSAgICBweXRob24tcmVzb3VyY2UgXAotICAgIHB5dGhvbi1mY250bCBcCi0gICAgcHl0aG9uLXB0eXByb2Nlc3MgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWQyNGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJSdW4gYSBzdWJwcm9jZXNzIGluIGEgcHNldWRvIHRlcm1pbmFsIgotSE9NRVBBR0UgPSAiaHR0cDovL3B0eXByb2Nlc3MucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZmRjZDUxZmE3ZDU4MDhkYTRlNzQzNDZlZTM5NDQ5MCIKLQotU1JDTkFNRSA9ICJwdHlwcm9jZXNzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjk0ZTUzNzEyMjkxNGNjOWVjOWMxZWFkY2QzNmU3M2ExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1MzBjZTYzYTkyOTViZmFlN2JkMDZlZGMwMmI2YWE5MzU2MTlmNDg2ZjBmMWRjMDk3MmY1MTYyNjVlZTgxYTYiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B0eXByb2Nlc3MiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHB5dGhvbi1jb3JlIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI2MzE4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBsaWJjdXJsIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5Y3VybC5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyB8IE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7YmVnaW5saW5lPTE2NjtlbmRsaW5lPTE4MjttZDU9YTg0YTFjYWE2NWI4OWQ0NTg0YjY5M2QzNjgwMDYyZmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1MR1BMO21kNT0zNTc5YTlmZDAyMjFkNDlhMjM3YWFhMzM0OTJmOTg4YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLU1JVDttZDU9YjdlNDM0YWViMjI4ZWQ3MzFjMDBiY2YxNzdlNzliMTkiCi0KLURFUEVORFMgPSAiY3VybCAke1BZVEhPTl9QTn0iCi1SREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tY29yZSBjdXJsIgotU1JDTkFNRSA9ICJweWN1cmwiCi0KLVNSQ19VUkkgPSAiXAotICBodHRwOi8vJHtTUkNOQU1FfS5zb3VyY2Vmb3JnZS5uZXQvZG93bmxvYWQvJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKLSAgZmlsZTovL25vLXN0YXRpYy1saW5rLnBhdGNoIFwKLSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmNhN2JmNDczMjAwODI1ODhkYjU0NGNlZDJiYTg3MTciCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4YTFlMGViNTU1NzMzODgyNzVhMWQ2YzI1MzRjYTRjZmNhNWQ3ZmE3NzJiOTliNTA1YzA4ZmExNDliMjdhZWQwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIEVuc3VyZSB0aGUgZG9jc3RyaW5ncyBhcmUgZ2VuZXJhdGVkIGFzIG1ha2UgY2xlYW4gd2lsbCByZW1vdmUgdGhlbQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBkb2NzdHJpbmdzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9zaGFyZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC9uby1zdGF0aWMtbGluay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmwvbm8tc3RhdGljLWxpbmsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMjc3OWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC9uby1zdGF0aWMtbGluay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotZGlmZiAtTmF1ciBweWN1cmwtNy4xOS41LjItb3JpZy9zZXR1cC5weSBweWN1cmwtNy4xOS41LjIvc2V0dXAucHkKLS0tLSBweWN1cmwtNy4xOS41LjItb3JpZy9zZXR1cC5weQkyMDE1LTExLTAyIDE1OjQyOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIHB5Y3VybC03LjE5LjUuMi9zZXR1cC5weQkyMDE1LTExLTAyIDE3OjU5OjM2LjEyMTUyNzI3MyArMDIwMAotQEAgLTE1NCw3ICsxNTQsNyBAQAotICAgICAgICAgb3B0YnVmID0gJycKLSAgICAgICAgIHNzbGhpbnRidWYgPSAnJwotICAgICAgICAgZXJydGV4dCA9ICcnCi0tICAgICAgICBmb3Igb3B0aW9uIGluIFsiLS1saWJzIiwgIi0tc3RhdGljLWxpYnMiXToKLSsgICAgICAgIGZvciBvcHRpb24gaW4gWyItLWxpYnMiXToKLSAgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigoQ1VSTF9DT05GSUcsIG9wdGlvbiksCi0gICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmxfNy4yMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybF83LjIxLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNzBjZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybF83LjIxLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5Y3VybC5pbmMKLQotaW5oZXJpdCBkaXN0dXRpbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwppbmRleCA0MGY0N2Q0Li5jYTUyMWE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCkBAIC0zLDE0ICszLDE0IEBACiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKIExJQ0VOU0UgPSAiTUlUIgogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9MTQ2O2VuZGxpbmU9MTQ2O21kNT0zZThkZjAyNGQ2YzE0NDJkMThlODRhY2Y4ZmJiYzQ3NSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9OWEzMzg5N2YxYmNhMTE2MGQ3YWFkMzgzNTE1MmUxNTgiCiAKIFNSQ05BTUUgPSAic2V0dXB0b29scyIKIAotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3MvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS56aXAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4YjY3ODY4YzM0MzBlOTc4ODMzZWJkMGQxYjc2NjY5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzAzZmIyNDMwNjM4NWYwOWJmOGIwZTVhMzg1YzE1NDhlNDJlOGVmYzA4NTU4ZDY0MDQ5YmMwZDU1ZWEwMTJkIgorU1JDX1VSSVttZDVzdW1dID0gImI5ZTZjMDQ5NjE3YmFjMGY5ZTkwOGE0MWFiNGEyOWFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwZmU1ZDQzMmQ5MjJkZjU5NWU5MTg1NzdjNTE0NThkNjNmMjQ1MTE1ZDE0MWIzMDlhYzMyZWNmY2EzMjlkZjUiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NldHVwdG9vbHMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzMyLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzMyLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI2NDc0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLmluYwotCi1QUk9WSURFUyA9ICJweXRob24tZGlzdHJpYnV0ZSIKLQotREVQRU5EUyArPSAicHl0aG9uIgotREVQRU5EU19jbGFzcy1uYXRpdmUgKz0gInB5dGhvbi1uYXRpdmUiCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbi1zdHJpbmdvbGQgXAotICBweXRob24tZW1haWwgXAotICBweXRob24tc2hlbGwgXAotICBweXRob24tZGlzdHV0aWxzIFwKLSAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSAgcHl0aG9uLXBrZ3V0aWwgXAotICBweXRob24tcGxpc3RsaWIgXAotICBweXRob24tbnVtYmVycyBcCi0gIHB5dGhvbi1odG1sIFwKLSAgcHl0aG9uLW5ldHNlcnZlciBcCi0gIHB5dGhvbi1jdHlwZXMgXAotICBweXRob24tc3VicHJvY2VzcyBcCi0gIHB5dGhvbi11bml0dGVzdCBcCi0gIHB5dGhvbi1jb21waWxlIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKLSAgcHl0aG9uLWRpc3R1dGlscyBcCi0gIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJQUk9WSURFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJDT05GTElDVFNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM2LjIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM2LjIuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWZhY2MxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMzYuMi43LmJiCkBAIC0wLDAgKzEsMzYgQEAKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCisKK1BST1ZJREVTID0gInB5dGhvbi1kaXN0cmlidXRlIgorCitERVBFTkRTICs9ICJweXRob24iCitERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAicHl0aG9uLW5hdGl2ZSIKKworaW5oZXJpdCBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgcHl0aG9uLXN0cmluZ29sZCBcCisgIHB5dGhvbi1lbWFpbCBcCisgIHB5dGhvbi1zaGVsbCBcCisgIHB5dGhvbi1kaXN0dXRpbHMgXAorICBweXRob24tY29tcHJlc3Npb24gXAorICBweXRob24tcGtndXRpbCBcCisgIHB5dGhvbi1wbGlzdGxpYiBcCisgIHB5dGhvbi1udW1iZXJzIFwKKyAgcHl0aG9uLWh0bWwgXAorICBweXRob24tbmV0c2VydmVyIFwKKyAgcHl0aG9uLWN0eXBlcyBcCisgIHB5dGhvbi1zdWJwcm9jZXNzIFwKKyAgcHl0aG9uLXVuaXR0ZXN0IFwKKyAgcHl0aG9uLWNvbXBpbGUgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiXAorICBweXRob24tZGlzdHV0aWxzIFwKKyAgcHl0aG9uLWNvbXByZXNzaW9uIFwKKyIKKworUlJFUExBQ0VTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUlBST1ZJREVTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUkNPTkZMSUNUU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM1MDQ4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zaXguaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24taW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXBfMC45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXBfMC45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMThkZDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwXzAuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1zbW1hcC5pbmMKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tY29kZWNzIHB5dGhvbi1tbWFwIHB5dGhvbi1sYW5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCmluZGV4IDUwY2M1OTEuLmY1NTY4ZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKQEAgLTEsNiArMSw2IEBACiBSZWJhc2VkIGZvciBweXRob24tMi43LjkKIFNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIEluZGV4OiBQeXRob24tMi43LjEzL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9jb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRmY2FhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCkBAIC0wLDAgKzEsODIgQEAKK0Zyb20gNzE0NDdmMDQ5NzliMjY3Zjg4NjY1NzNiNjdhNDM0MGIyNzE5ZDc5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNCBBdWcgMjAxNyAxNDoxMDo0MyArMDgwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUKKworSW4gdGhlIGZvbGxvd2luZyBjb21taXQ6CisuLi4KK2NvbW1pdCBlNzExY2FmYWIxM2VmYzljMWZlNmM1Y2Q3NTgyNjQwMTQ0NWViNTg1CitBdXRob3I6IEJlbmphbWluIFBldGVyc29uIDxiZW5qYW1pbkBweXRob24ub3JnPgorRGF0ZTogICBXZWQgSnVuIDExIDE2OjQ0OjA0IDIwMDggKzAwMDAKKworICAgIE1lcmdlZCByZXZpc2lvbnMgNjQxMDQsNjQxMTcgdmlhIHN2bm1lcmdlIGZyb20KKyAgICBzdm4rc3NoOi8vcHl0aG9uZGV2QHN2bi5weXRob24ub3JnL3B5dGhvbi90cnVuaworLi4uCisoc2VlIGRpZmYgaW4gc2V0dXAucHkpCitJdCBhc3NpZ25lZCBsaWJyYXJpZXMgZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUgYWNjb3JkaW5nCit0aGUgaG9zdF9wbGF0Zm9ybSwgYnV0IG5vdCBwYXNzIGl0IHRvIEV4dGVuc2lvbi4KKworSW4gZ2xpYmMsIHRoZSBmb2xsb3dpbmcgY29tbWl0IGNhdXNlZCB0d28gZGVmaW5pdGlvbiBvZgorc2VtX2dldHZhbHVlIGFyZSBkaWZmZXJlbnQuCitodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD0wNDJlMTUyMWM3OTRhOTQ1ZWRjNDNiNWJmYTdlNjlhZDcwNDIwNTI0Cisoc2VlIGRpZmYgaW4gbnB0bC9zZW1fZ2V0dmFsdWUuYyBmb3IgZGV0YWlsKQorYF9fbmV3X3NlbV9nZXR2YWx1ZScgaXMgdGhlIGxhdGVzdCBzZW1fZ2V0dmFsdWVAQEdMSUJDXzIuMQorYW5kIGBfX29sZF9zZW1fZ2V0dmFsdWUnIGlzIHRvIGNvbXBhdCB0aGUgb2xkIHZlcnNpb24KK3NlbV9nZXR2YWx1ZUBHTElCQ18yLjAuCisKK1RvIGJ1aWxkIHB5dGhvbiBmb3IgZW1iZWRkZWQgTGludXggc3lzdGVtczoKK2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuMy4xL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sCitJZiBub3QgZXhwbGljaXRseSBsaW5rIHRvIGxpYnJhcnkgcHRocmVhZCAoLWxwdGhyZWFkKSwgaXQgd2lsbAorbG9hZCBnbGliYydzIHNlbV9nZXR2YWx1ZSByYW5kb21seSBhdCBydW50aW1lLgorCitTdWNoIGFzIGJ1aWxkIHB5dGhvbiBvbiBsaW51eCB4ODZfNjQgaG9zdCBhbmQgcnVuIHRoZSBweXRob24KK29uIGxpbnV4IHg4Nl8zMiB0YXJnZXQuIElmIG5vdCBsaW5rIGxpYnJhcnkgcHRocmVhZCwgaXQgY2F1c2VkCittdWx0aXByb2Nlc3NpbmcgYm91bmRlZCBzZW1hcGhvcmUgY291bGQgbm90IHdvcmsgY29ycmVjdGx5LgorLi4uCis+Pj4gaW1wb3J0IG11bHRpcHJvY2Vzc2luZworPj4+IHBvb2xfc2VtYSA9IG11bHRpcHJvY2Vzc2luZy5Cb3VuZGVkU2VtYXBob3JlKHZhbHVlPTEpCis+Pj4gcG9vbF9zZW1hLmFjcXVpcmUoKQorVHJ1ZQorPj4+IHBvb2xfc2VtYS5yZWxlYXNlKCkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KK1ZhbHVlRXJyb3I6IHNlbWFwaG9yZSBvciBsb2NrIHJlbGVhc2VkIHRvbyBtYW55IHRpbWVzCisuLi4KKworQW5kIHRoZSBzZW1hcGhvcmUgaXNzdWUgYWxzbyBjYXVzZWQgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkucHV0KCkgaHVuZy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzI5OTldCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgNyArKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDU0MDU0YzIuLjk2NDZiZmMgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xNTg2LDggKzE1ODYsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgorICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQorICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCistCistICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBMaW51eCBhbmQgb3RoZXIgdW5pY2VzCisrICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JykpOgorKyAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQorKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncHRocmVhZCddCisrICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPdGhlciB1bmljZXMKKyAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKKyAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3J0J10KKyAKK0BAIC0xNjEwLDYgKzE2MTIsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6CisgICAgICAgICAgICAgZXh0cy5hcHBlbmQgKCBFeHRlbnNpb24oJ19tdWx0aXByb2Nlc3NpbmcnLCBtdWx0aXByb2Nlc3Npbmdfc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPW1hY3Jvcy5pdGVtcygpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPVsiTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nIl0pKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX211bHRpcHJvY2Vzc2luZycpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI2NTE3OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK1RoZSBjb21waWxlZCAucHljIGZpbGVzIGNvbnRhaW4gdGltZSBzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb21waWxlIHRpbWUuCitUaGlzIHByZXZlbnRzIGJpbmFyeSByZXByb2R1Y2liaWxpdHkuIFRoaXMgcGF0Y2ggYWxsb3dzIHRvIGFjaGlldmUgYmluYXJ5CityZXByb2R1Y2liaWxpdHkgYnkgb3ZlcnJpZGluZyB0aGUgYnVpbGQgdGltZSBzdGFtcCBieSB0aGUgdmFsdWUgCitleHBvcnRlZCB2aWEgU09VUkNFX0RBVEVfRVBPQ0guIAorCitQYXRjaCBieSBCZXJuaGFyZCBNLiBXaWVkZW1hbm4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitGcmkgRmViIDI0IDE3OjA4OjI1IFVUQyAyMDE3IC0gYndpZWRlbWFubkBzdXNlLmNvbQorCistIEFkZCByZXByb2R1Y2libGUucGF0Y2ggdG8gYWxsb3cgcmVwcm9kdWNpYmxlIGJ1aWxkcyBvZiB2YXJpb3VzCisgIHB5dGhvbiBwYWNrYWdlcyBsaWtlIHB5dGhvbi1hbXFwCisgIFVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8yOTYKKworCitAQCAtMCwwICsxLDE1IEBACitJbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvcHlfY29tcGlsZS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvcHlfY29tcGlsZS5weQorKysrIFB5dGhvbi0yLjcuMTMvTGliL3B5X2NvbXBpbGUucHkKK0BAIC0xMDgsNiArMTA4LDEwIEBAIGRlZiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUKKyAgICAgICAgICAgICB0aW1lc3RhbXAgPSBsb25nKG9zLmZzdGF0KGYuZmlsZW5vKCkpLnN0X210aW1lKQorICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGxvbmcob3Muc3RhdChmaWxlKS5zdF9tdGltZSkKKysgICAgICAgIHNkZSA9IG9zLmVudmlyb24uZ2V0KCdTT1VSQ0VfREFURV9FUE9DSCcpCisrICAgICAgICBpZiBzZGUgYW5kIHRpbWVzdGFtcCA+IGludChzZGUpOgorKyAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChzZGUpCisrICAgICAgICAgICAgb3MudXRpbWUoZmlsZSwgKHRpbWVzdGFtcCwgdGltZXN0YW1wKSkKKyAgICAgICAgIGNvZGVzdHJpbmcgPSBmLnJlYWQoKQorICAgICB0cnk6CisgICAgICAgICBjb2Rlb2JqZWN0ID0gX19idWlsdGluX18uY29tcGlsZShjb2Rlc3RyaW5nLCBkZmlsZSBvciBmaWxlLCdleGVjJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaAppbmRleCAyYzY1Nzg2Li5mYjRhM2JjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoCkBAIC0yLDYgKzIsNyBAQAogaWYgaXQgaXMgbm90IGZvdW5kIGNhdXNlcyBhbiBlcnJvciBvbiBjb25maWd1cmUsCiB3ZSBzaG91bGQgdXNlIG5jdXJzZXN3IGZyb20gc3lzcm9vdCBpbnN0ZWFkCiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM2Mzg4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dCBwcm9jZXNzaW5nIHN5c3RlbSBmb3IgZG9jdW1lbnRhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kb2N1dGlscy5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUFNGICYgQlNELTItQ2xhdXNlICYgR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9N2E0NjQ2OTA3YWI5MDgzYzgyNjI4MGIxOWUxMDMxMDYiCi0KLURFUEVORFMgPSAicHl0aG9uMyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZG9jdXRpbHMvZG9jdXRpbHMtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImVhNGE4OTNjNjMzYzc4OGJlOWI4MDc4YjZiMzA1ZDUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxOGMwZjVmYjY3N2JlMGYzNGI3ODFlMDQyNDFjNDA2N2NiZDkzMjdiNjZiZGQ4ZTc2MzIwMTEzMGY1MTc1YmUiCi0KLVMgPSAiJHtXT1JLRElSfS9kb2N1dGlscy0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhNDQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlRleHQgcHJvY2Vzc2luZyBzeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTM1YTIzZDQyYjYxNTQ3MDU4MzU2MzEzMjg3MmM5N2Q2IgorCitERVBFTkRTID0gInB5dGhvbjMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY3V0aWxzL2RvY3V0aWxzLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNTM3NjhkNjNkYjM4NzNiN2Q0NTI4MzM1NTM0NjlkZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MWU2NGVmMmViZmIyOWNhZTFmYWExMzNiMzcxMDE0MzQ5NmVjYTIxYzUzMGYzZjcxNDI0ZDc3Njg3NzY0Mjc0IgorCitTID0gIiR7V09SS0RJUn0vZG9jdXRpbHMtJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EyZDQ1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBweXRob24tZ2l0LmluYwotCi1ERVBFTkRTID0gInB5dGhvbjMtZ2l0ZGIiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtZ2l0ZGIgcHl0aG9uMy1sYW5nIHB5dGhvbjMtaW8gcHl0aG9uMy1zaGVsbCBweXRob24zLW1hdGggcHl0aG9uMy1yZSBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy11bml4YWRtaW4gcHl0aG9uMy1lbnVtIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWRhdGV0aW1lIHB5dGhvbjMtbmV0Y2xpZW50IHB5dGhvbjMtdW5pdHRlc3QgcHl0aG9uMy1hcmdwYXJzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFjMmEwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS41LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBweXRob24tZ2l0LmluYworCitERVBFTkRTID0gInB5dGhvbjMtZ2l0ZGIiCisKK2luaGVyaXQgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtZ2l0ZGIgcHl0aG9uMy1sYW5nIHB5dGhvbjMtaW8gcHl0aG9uMy1zaGVsbCBweXRob24zLW1hdGggcHl0aG9uMy1yZSBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy11bml4YWRtaW4gcHl0aG9uMy1lbnVtIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWRhdGV0aW1lIHB5dGhvbjMtbmV0Y2xpZW50IHB5dGhvbjMtdW5pdHRlc3QgcHl0aG9uMy1hcmdwYXJzZSBnaXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjAuNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC43LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODJlMmNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCi0KLVBSID0gIiR7SU5DX1BSfS4wIgotUFlUSE9OX01BSk1JTiA9ICIzLjUiCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLWZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAotZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotZmlsZTovLzAwMC1jcm9zcy1jb21waWxlLnBhdGNoIFwKLWZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKLWZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAotZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAotZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCi1maWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAotZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAotZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi1maWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLWZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAotZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKLWZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSR7RElTVFJPX1NSQ19VUkl9IFwKLWZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAotZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCi1maWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg5MDZlZmJhY2ZjZGM3YzNjOTE5OGFlZWZhZmQxNTllIiAgCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDAxMGY1NjEwMGI5Yjc0MjU5ZWJjZDVkNGIyOTVhMzIzMjRiNThiNTE3NDAzYTEwZDFhMmFhN2NiMjJiY2E0MCIgCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZiNjAyNTgxMzBlNGVkMTBkMzEwMTUxN2ViNWI5Mzg1IgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLUVYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgotREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIgotCi1pbmhlcml0IG5hdGl2ZQotCi1yZXF1aXJlIHB5dGhvbi1uYXRpdmUtJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKLQotIyB1bmluYXRpdmUgbWF5IGJlIHVzZWQgb24gcHJlIGdsaWJjIDIuMjUgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGdldGVudHJvcHkKLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGhvdXQtZW5zdXJlcGlwIGFjX2N2X2Z1bmNfZ2V0ZW50cm9weT1ubyIKLQotRVhUUkFfT0VNQUtFID0gJ1wKLSAgTElCQz0iIiBcCi0gIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCi0gIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCi0gIExJQj0ke2Jhc2VsaWJ9IFwKLSAgQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0nCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLQlzZWQgLWkgLWUgJ3MsI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxLC9cKiAjdW5kZWYgSEFWRV9HRVRSQU5ET00gXCovLCcgJHtCfS9weWNvbmZpZy5oCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KLQlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQotCi0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KLQlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCi0JCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCi0JZG9uZQotCi0JIyBUZXN0cyBhcmUgbGFyZ2UgYW5kIHdlIGRvbid0IG5lZWQgdGhlbSBpbiB0aGUgbmF0aXZlIHN5c3Jvb3QKLQlybSAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdGVzdCAtcmYKLX0KLQotUlBST1ZJREVTICs9ICJweXRob24zLW1pc2MtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2Q5Yzg4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIKQEAgLTAsMCArMSw4NCBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCisKK1BSID0gIiR7SU5DX1BSfS4wIgorUFlUSE9OX01BSk1JTiA9ICIzLjUiCitESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCitESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKK2ZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAorZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKK2ZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKK2ZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAorZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAorZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCitmaWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAorZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAorZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCitmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKK2ZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAorZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKK2ZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKKyR7RElTVFJPX1NSQ19VUkl9IFwKK2ZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAorZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCitmaWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKK2ZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTdkMWY4YmZiYWJmNGYyNTAwMjczZmIwNzA2ZTZmMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWVmZTJhZDY1NzU4NTU0MjNhYjYzMGY1YjUxYThlZjZlNTU1NmY3NzQ1ODRjMDZiZWFiNDkyNmY5MzBkZGJiMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjY4MGVkOTlhYTYwZDM1MGM2NWE2NTkxNDQ5NDIwN2UiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCitERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUiCisKK2luaGVyaXQgbmF0aXZlCisKK3JlcXVpcmUgcHl0aG9uLW5hdGl2ZS0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYworCisjIHVuaW5hdGl2ZSBtYXkgYmUgdXNlZCBvbiBwcmUgZ2xpYmMgMi4yNSBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgZ2V0ZW50cm9weQorRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IC0td2l0aG91dC1lbnN1cmVwaXAgYWNfY3ZfZnVuY19nZXRlbnRyb3B5PW5vIgorCitFWFRSQV9PRU1BS0UgPSAnXAorICBMSUJDPSIiIFwKKyAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKKyAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKKyAgTElCPSR7YmFzZWxpYn0gXAorICBBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKycKKworIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMworUFlUSE9OTFNCT1BUUyA9ICIiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQorCXNlZCAtaSAtZSAncywjZGVmaW5lIEhBVkVfR0VUUkFORE9NIDEsL1wqICN1bmRlZiBIQVZFX0dFVFJBTkRPTSBcKi8sJyAke0J9L3B5Y29uZmlnLmgKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQorCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59CisKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKwlkb25lCisKKwkjIFRlc3RzIGFyZSBsYXJnZSBhbmQgd2UgZG9uJ3QgbmVlZCB0aGVtIGluIHRoZSBuYXRpdmUgc3lzcm9vdAorCXJtICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90ZXN0IC1yZgorfQorCitSUFJPVklERVMgKz0gInB5dGhvbjMtbWlzYy1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIKaW5kZXggOTliYmE0NC4uMWUyZmY3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ub3NlXzEuMy43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm9zZV8xLjMuNy5iYgpAQCAtMTcsNiArMTcsMTAgQEAKIAogaW5oZXJpdCBzZXR1cHRvb2xzMwogCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBtdiAke0R9JHtiaW5kaXJ9L25vc2V0ZXN0cyAke0R9JHtiaW5kaXJ9L25vc2V0ZXN0czMKK30KKwogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKICAgcHl0aG9uMy11bml0dGVzdCBcCiAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKaW5kZXggNDQ1NmI5Yi4uOWI5MDdhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKQEAgLTUzLDQgKzUzLDQgQEAKICAgcHl0aG9uMy14bWxycGMgXAogIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xMC4wLmJiCmluZGV4IGY5MDMxYjMuLjkyNThiYTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTAuMC5iYgpAQCAtMTksNiArMTksOCBAQAogCiBpbmhlcml0IGRpc3R1dGlsczMgcGtnY29uZmlnCiAKK0NGTEFHUyArPSAiLWZQSUMiCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCiBkb19jb25maWd1cmUoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjIxLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjIxLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMTExOTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWN1cmxfNy4yMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHljdXJsOiIKLQotcmVxdWlyZSBweXRob24tcHljdXJsLmluYwotCi1pbmhlcml0IGRpc3R1dGlsczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtRG9uLXQtdXNlLWdub21lLWNvbW1vbi1tYWNyb3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlZGI1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMjA2MzYwNzQ0Y2VkZmYyMGVhZTNjOGZjZmRlOTkzOGZkYWU5OTU5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTE6NDc6MjEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBEb24ndCB1c2UgZ25vbWUtY29tbW9uIG1hY3JvcworCityZW1vdmUgR05PTUVfQ09NUElMRV9XQVJOSU5HUygpIGNhbGw6IGl0J3MgZnJvbSBnbm9tZS1jb21tb24gd2hpY2gKK2lzIGRlcHJlY2F0ZWQuCisKK1RoaXMgcGF0Y2ggY2FuIGJlIHJlbW92ZWQgd2hlbiB1cGdyYWRpbmcgdG8gMy4yNS4xOiBhdCB0aGF0IHBvaW50CitweWdvYmplY3QgbmVlZHMgYXV0b2NvbmYtYXJjaGl2ZSBpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0FscmVhZHkgaGFuZGxlZCB1cHN0cmVhbV0KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDFmMTViM2MuLjVjYjE3MGYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIyMSw4ICsyMjEsNiBAQCBBQ19BUkdfV0lUSChjb21tb24sCisgICAgIHdpdGhfY29tbW9uPXllcykKKyBBTV9DT05ESVRJT05BTChXSVRIX0NPTU1PTiwgdGVzdCAiJHdpdGhfY29tbW9uIiA9ICJ5ZXMiKQorIAorLSMgY29tcGlsZXIgd2FybmluZ3MsIGVycm9ycywgcmVxdWlyZWQgY2ZsYWdzLCBhbmQgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CistR05PTUVfQ09NUElMRV9XQVJOSU5HUyhbbWF4aW11bV0sIFstV25vLWVycm9yPW1pc3NpbmctcHJvdG90eXBlc10pCisgQUNfTVNHX0NIRUNLSU5HKGZvciBHbm9tZSBjb2RlIGNvdmVyYWdlIHN1cHBvcnQpCisgbTRfaWZkZWYoW0dOT01FX0NPREVfQ09WRVJBR0VdLAorICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKHllcykKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDMwNDhkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIEdPYmplY3QgYmluZGluZ3MiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBkaXN0dXRpbHMzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTICs9ICJnbm9tZS1jb21tb24tbmF0aXZlIHB5dGhvbjMgZ2xpYi0yLjAiCi0KLVNSQ05BTUU9InB5Z29iamVjdCIKLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke1NSQ05BTUV9LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtTUkNOQU1FfS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWQ0MTE3ZWQ1ZDU1NGQyNWZkNzcxODgwN2ZiZjgxOWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDhiMjljZmIwOGVmYzgwZjdhODYzMGEyNzM0ZGVjNjVhOTljMWI1OWYxZTU3NzFjNjcxZDJlNGVkOGE1Y2JlNyIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgWyAnZGlyZWN0ZmInLCAnd2F5bGFuZCcsICd4MTEnIF0sICdjYWlybycsICcnLCBkKX0iCi0KLSMgcHl0aG9uMy1weWNhaXJvIGlzIGNoZWNrZWQgb24gY29uZmlndXJhdGlvbiAtPiBERVBFTkRTCi0jIHdlIGRvbid0IGxpbmsgYWdhaW5zdCBweXRob24zLXB5Y2Fpcm8gLT4gUkRFUEVORFMKLVBBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyBweXRob24zLXB5Y2Fpcm8sIHB5dGhvbjMtcHljYWlybyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc2V0dXB0b29scyBweXRob24zLWltcG9ydGxpYiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQxMGFmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjQuMS5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZGlzdHV0aWxzMy1iYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworREVQRU5EUyArPSAicHl0aG9uMyBnbGliLTIuMCIKKworU1JDTkFNRT0icHlnb2JqZWN0IgorU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjY5YTg0MzMxMWQwZjAzODVkZmYzNzZlMTFhMmQ4M2QyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2MjhhOTVhYTA5MDllMTNmYjA4MjMwYjFiOThmYzQ4YWRlZjEwYjIyMDkzMmY3NmQ2MmY2ODIxYjNmZGJmZmQiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsIFsgJ2RpcmVjdGZiJywgJ3dheWxhbmQnLCAneDExJyBdLCAnY2Fpcm8nLCAnJywgZCl9IgorCisjIHB5dGhvbjMtcHljYWlybyBpcyBjaGVja2VkIG9uIGNvbmZpZ3VyYXRpb24gLT4gREVQRU5EUworIyB3ZSBkb24ndCBsaW5rIGFnYWluc3QgcHl0aG9uMy1weWNhaXJvIC0+IFJERVBFTkRTCitQQUNLQUdFQ09ORklHW2NhaXJvXSA9ICItLWVuYWJsZS1jYWlybywtLWRpc2FibGUtY2Fpcm8sY2Fpcm8gcHl0aG9uMy1weWNhaXJvLCBweXRob24zLXB5Y2Fpcm8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNldHVwdG9vbHMgcHl0aG9uMy1pbXBvcnRsaWIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdwZ21lXzAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlncGdtZV8wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NWY2NzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdwZ21lXzAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gbW9kdWxlIGZvciB3b3JraW5nIHdpdGggT3BlblBHUCBtZXNzYWdlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9weWdwZ21lIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9MmRjMTVhNzZhY2YwMWUxMjYxODhjOGRlNjM0YWU0YjMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3B5Z3BnbWUvdHJ1bmsvJHtQVn0vK2Rvd25sb2FkL3B5Z3BnbWUtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQzODM1NWFmNzNmMDM1MmNkZTNkNDEwYjI1ZjM0ZmQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmZDg4N2M0MDcwMTUyOTZhOGZkM2Y0Yjg2N2ZlMGZjY2EzMTc5ZGU5N2NjZGU5MDQ0OTg1M2EzZGZiODAyZTEiCi0KLVMgPSAiJHtXT1JLRElSfS9weWdwZ21lLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMKLQotREVQRU5EUyA9ICJncGdtZSBweXRob24zIgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1jb3JlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzMyLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVhZjZmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotREVQRU5EUyArPSAicHl0aG9uMyIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24zLW5hdGl2ZSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi0jIFRoZSBpbnN0YWxsZXIgcHV0cyB0aGUgd3JvbmcgcGF0aCBpbiB0aGUgc2V0dXB0b29scy5wdGggZmlsZS4gIENvcnJlY3QgaXQuCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2V0dXB0b29scy5wdGgKLSAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKLSAgICBlY2hvICIuLyR7U1JDTkFNRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXR1cHRvb2xzLnB0aAotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0iCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAotICBweXRob24zLWN0eXBlcyBcCi0gIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgcHl0aG9uMy1lbWFpbCBcCi0gIHB5dGhvbjMtaW1wb3J0bGliIFwKLSAgcHl0aG9uMy1udW1iZXJzIFwKLSAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0gIHB5dGhvbjMtc2hlbGwgXAotICBweXRob24zLXN1YnByb2Nlc3MgXAotICBweXRob24zLXRleHR1dGlscyBcCi0gIHB5dGhvbjMtcGtndXRpbCBcCi0gIHB5dGhvbjMtdGhyZWFkaW5nIFwKLSAgcHl0aG9uMy1taXNjIFwKLSAgcHl0aG9uMy11bml0dGVzdCBcCi0gIHB5dGhvbjMteG1sIFwKLSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM2LjIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zNi4yLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdiY2E5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zNi4yLjcuYmIKQEAgLTAsMCArMSwzMyBAQAorcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKKworREVQRU5EUyArPSAicHl0aG9uMyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24zLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlc2RrICs9ICJuYXRpdmVzZGstcHl0aG9uMyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKK30KKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKKyAgcHl0aG9uMy1kaXN0dXRpbHMgXAorICBweXRob24zLWNvbXByZXNzaW9uIFwKKyIKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgcHl0aG9uMy1jdHlwZXMgXAorICBweXRob24zLWRpc3R1dGlscyBcCisgIHB5dGhvbjMtZW1haWwgXAorICBweXRob24zLWltcG9ydGxpYiBcCisgIHB5dGhvbjMtbnVtYmVycyBcCisgIHB5dGhvbjMtY29tcHJlc3Npb24gXAorICBweXRob24zLXNoZWxsIFwKKyAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKKyAgcHl0aG9uMy10ZXh0dXRpbHMgXAorICBweXRob24zLXBrZ3V0aWwgXAorICBweXRob24zLXRocmVhZGluZyBcCisgIHB5dGhvbjMtbWlzYyBcCisgIHB5dGhvbjMtdW5pdHRlc3QgXAorICBweXRob24zLXhtbCBcCisiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMC1jcm9zcy1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ4MjIyMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMC1jcm9zcy1jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotV2UgY3Jvc3MgY29tcGlsZSBweXRob24uIFRoaXMgcGF0Y2ggdXNlcyB0b29scyBmcm9tIGhvc3QvbmF0aXZlCi1weXRob24gaW5zdGVhZCBvZiBpbi10cmVlIHRvb2xzCi0KLS1LaGVtCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtDb25maWd1cmF0aW9uIFNwZWNpZmljXQotCi0tLS0KLSBNYWtlZmlsZS5wcmUuaW4gfCAgIDI1ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBQeXRob24tMy41LjIvTWFrZWZpbGUucHJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4yLm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTMuNS4yL01ha2VmaWxlLnByZS5pbgotQEAgLTIyMCw2ICsyMjAsNyBAQCBMSUJPQkpTPQlATElCT0JKU0AKLSAKLSBQWVRIT049CQlweXRob24kKEVYRSkKLSBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKLStIT1NUUFlUSE9OPQkkKEJVSUxEUFlUSE9OKQotIAotIGNyb3NzX2NvbXBpbGluZz1AY3Jvc3NfY29tcGlsaW5nQAotIFBZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACi1AQCAtMjc5LDYgKzI4MCw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIFBhcnNlcgotIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQotK0hPU1RQR0VOPQkkKFBHRU4pJChFWEUpCi0gCi0gUFNSQ1M9CQlcCi0gCQlQYXJzZXIvYWNjZWxlci5jIFwKLUBAIC01MDksNyArNTExLDcgQEAgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6Ci0gCi0gcnVuX3Byb2ZpbGVfdGFzazoKLSAJOiAjIEZJWE1FOiBjYW4ndCBydW4gZm9yIGEgY3Jvc3MgYnVpbGQKLS0JJChMTFZNX1BST0ZfRklMRSkgJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChQUk9GSUxFX1RBU0spIHx8IHRydWUKLSsJJChMTFZNX1BST0ZfRklMRSkgJChSVU5TSEFSRUQpICQoSE9TVFBZVEhPTikgJChQUk9GSUxFX1RBU0spIHx8IHRydWUKLSAKLSBidWlsZF9hbGxfbWVyZ2VfcHJvZmlsZToKLSAJJChMTFZNX1BST0ZfTUVSR0VSKQotQEAgLTc5Miw3ICs3OTQsNyBAQCAkKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQotIAlAJChNS0RJUl9QKSBJbmNsdWRlCi0gCSMgQXZvaWQgY29weWluZyB0aGUgZmlsZSBvbnRvIGl0c2VsZiBmb3IgYW4gaW4tdHJlZSBidWlsZAotIAlpZiB0ZXN0ICIkKGNyb3NzX2NvbXBpbGluZykiICE9ICJ5ZXMiOyB0aGVuIFwKLS0JCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpOyBcCi0rCQkkKEhPU1RQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQyk7IFwKLSAJZWxzZSBcCi0gCQljcCAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoR1JBTU1BUl9IKS50bXA7IFwKLSAJCW12ICQoR1JBTU1BUl9IKS50bXAgJChHUkFNTUFSX0gpOyBcCi1AQCAtOTkwLDcgKzk5Miw3IEBAICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGgKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gCi0gVEVTVE9QVFM9CSQoRVhUUkFURVNUT1BUUykKLS1URVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQotK1RFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoVEVTVFBZVEhPTk9QVFMpCi0gVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKLSBURVNUVElNRU9VVD0JMzYwMAotIAotQEAgLTE0ODEsNyArMTQ4Myw3IEBAIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmU6CSQoTERMSUJSQVJZKQotIAkJZmk7IFwKLSAJZG9uZQotIAkkKExOKSAtZnNuIGluY2x1ZGUvcHl0aG9uJChMRFZFUlNJT04pICQoREVTVERJUikkKHByZWZpeCkvSGVhZGVycwotLQlzZWQgJ3MvJVZFUlNJT04lLyciYCQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pIC1jICdpbXBvcnQgcGxhdGZvcm07IHByaW50KHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkpJ2AiJy9nJyA8ICQoUkVTU1JDRElSKS9JbmZvLnBsaXN0ID4gJChERVNURElSKSQocHJlZml4KS9SZXNvdXJjZXMvSW5mby5wbGlzdAotKwlzZWQgJ3MvJVZFUlNJT04lLyciYCQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pIC1jICdpbXBvcnQgcGxhdGZvcm07IHByaW50KHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkpJ2AiJy9nJyA8ICQoUkVTU1JDRElSKS9JbmZvLnBsaXN0ID4gJChERVNURElSKSQocHJlZml4KS9SZXNvdXJjZXMvSW5mby5wbGlzdAotIAkkKExOKSAtZnNuICQoVkVSU0lPTikgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvVmVyc2lvbnMvQ3VycmVudAotIAkkKExOKSAtZnNuIFZlcnNpb25zL0N1cnJlbnQvJChQWVRIT05GUkFNRVdPUkspICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpLyQoUFlUSE9ORlJBTUVXT1JLKQotIAkkKExOKSAtZnNuIFZlcnNpb25zL0N1cnJlbnQvSGVhZGVycyAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9IZWFkZXJzCi1AQCAtMTU0Nyw3ICsxNTQ5LDcgQEAgY29uZmlnLnN0YXR1czoJJChzcmNkaXIpL2NvbmZpZ3VyZQotIAotICMgUnVuIHJlaW5kZW50IG9uIHRoZSBsaWJyYXJ5Ci0gcmVpbmRlbnQ6Ci0tCS4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgLXIgJChzcmNkaXIpL0xpYgotKwkkKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IC1yICQoc3JjZGlyKS9MaWIKLSAKLSAjIFJlcnVuIGNvbmZpZ3VyZSB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgYXMgaXQgd2FzIHJ1biBsYXN0IHRpbWUsCi0gIyBwcm92aWRlZCB0aGUgY29uZmlnLnN0YXR1cyBzY3JpcHQgZXhpc3RzCi1AQCAtMTY4Myw3ICsxNjg1LDcgQEAgZnVubnk6Ci0gCi0gIyBQZXJmb3JtIHNvbWUgdmVyaWZpY2F0aW9uIGNoZWNrcyBvbiBhbnkgbW9kaWZpZWQgZmlsZXMuCi0gcGF0Y2hjaGVjazogYWxsCi0tCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKLSsJJChSVU5TSEFSRUQpIC4vJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5Ci0gCi0gIyBEZXBlbmRlbmNpZXMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2gKaW5kZXggYjdlMGFjNi4uOGVhM2YwMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDA0NWM5OWI1ZjFlYjZlNGUwZDhhZDFlZjlmMGJhNjU3NGY3MzgxNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDA0ZGY5NTkzNjVlMmI1NGQ3NTAzZWRmMGU1NTM0ZmYwOTQyODRmMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjMgT2N0IDIwMTUgMTI6MjU6MDkgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IHVzZSB0aGUgc2hlbGwgdmVyc2lvbiBvZiBweXRob24tY29uZmlnIHRoYXQgd2FzCkBAIC0xNCwxMyArMTQsMTMgQEAKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCi1pbmRleCBkN2ZjOWEwLi40N2U2MGJjIDEwMDY0NAoraW5kZXggMjM2ZjAwNS4uNWM0MzM3ZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLnByZS5pbgogKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTI3MCwxMiArMTI3MCw5IEBAIHB5dGhvbi1jb25maWc6ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gTWlzYy9weXRob24tY29uZmlnLnNoCitAQCAtMTM0OCwxMiArMTM0OCw5IEBAIHB5dGhvbi1jb25maWc6ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gTWlzYy9weXRob24tY29uZmlnLnNoCiAgCXNlZCAtZSAicyxARVhFTkFNRUAsJChCSU5ESVIpL3B5dGhvbiQoTERWRVJTSU9OKSQoRVhFKSwiIDwgJChzcmNkaXIpL01pc2MvcHl0aG9uLWNvbmZpZy5pbiA+cHl0aG9uLWNvbmZpZy5weQogIAkjIFJlcGxhY2UgbWFrZWZpbGUgY29tcGF0LiB2YXJpYWJsZSByZWZlcmVuY2VzIHdpdGggc2hlbGwgc2NyaXB0IGNvbXBhdC4gb25lczsgJChWQVIpIC0+ICR7VkFSfQotIAlzZWQgLWUgJ3MsXCQkKFwoW0EtWmEtejAtOV9dKlwpKSxcJCRce1wxXH0sZycgPCBNaXNjL3B5dGhvbi1jb25maWcuc2ggPnB5dGhvbi1jb25maWcKKyAJTENfQUxMPUMgc2VkIC1lICdzLFwkJChcKFtBLVphLXowLTlfXSpcKSksXCQkXHtcMVx9LGcnIDwgTWlzYy9weXRob24tY29uZmlnLnNoID5weXRob24tY29uZmlnCiAtCSMgT24gRGFyd2luLCBhbHdheXMgdXNlIHRoZSBweXRob24gdmVyc2lvbiBvZiB0aGUgc2NyaXB0LCB0aGUgc2hlbGwKIC0JIyB2ZXJzaW9uIGRvZXNuJ3QgdXNlIHRoZSBjb21waWxlciBjdXN0b21pemF0aW9ucyB0aGF0IGFyZSBwcm92aWRlZAogLQkjIGluIHB5dGhvbiAoX29zeF9zdXBwb3J0LnB5KS4KQEAgLTM0LDUgKzM0LDUgQEAKICAKICAjIEluc3RhbGwgdGhlIGluY2x1ZGUgZmlsZXMKIC0tIAotMi4xLjQKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Jc3N1ZS0yMTI3Mi1Vc2UtX3N5c2NvbmZpZ2RhdGEucHktdG8taW5pdGlhbGl6ZS1kaXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYzkyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIGJjZGRiZjQwYzdmMWI4MDMzNjI2OGNkZGRhY2MxNzM2OWZiMGNjZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaWJpbiBEYW5nIDxsaWJpbi5kYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDExIEFwciAyMDE3IDE0OjEyOjE1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIElzc3VlICMyMTI3MjogVXNlIF9zeXNjb25maWdkYXRhLnB5IHRvIGluaXRpYWxpemUKKyBkaXN0dXRpbHMuc3lzY29uZmlnCisKK0JhY2twb3J0IHVwc3RyZWFtIGNvbW1pdAoraHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC80MDk0ODIyNTFiMDZmZTc1YzRlZTU2ZTg1ZmZiYjRiMjNkOTM0MTU5CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorLS0tCisgTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgfCAzNSArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQoraW5kZXggNmQ1Y2ZkMC4uOTkyNWQyNCAxMDA2NDQKKy0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorQEAgLTQyNCwzOCArNDI0LDExIEBAIF9jb25maWdfdmFycyA9IE5vbmUKKyAKKyBkZWYgX2luaXRfcG9zaXgoKToKKyAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgorLSAgICBnID0ge30KKy0gICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgTWFrZWZpbGU6CistICAgIHRyeToKKy0gICAgICAgIGZpbGVuYW1lID0gZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKKy0gICAgICAgIHBhcnNlX21ha2VmaWxlKGZpbGVuYW1lLCBnKQorLSAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CistICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQorLSAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgorLSAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKKy0KKy0gICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQorLQorLSAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBweWNvbmZpZy5oOgorLSAgICB0cnk6CistICAgICAgICBmaWxlbmFtZSA9IGdldF9jb25maWdfaF9maWxlbmFtZSgpCistICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6CistICAgICAgICAgICAgcGFyc2VfY29uZmlnX2goZmlsZSwgZykKKy0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgorLSAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKKy0gICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKKy0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCistCistICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKKy0KKy0gICAgIyBPbiBBSVgsIHRoZXJlIGFyZSB3cm9uZyBwYXRocyB0byB0aGUgbGlua2VyIHNjcmlwdHMgaW4gdGhlIE1ha2VmaWxlCistICAgICMgLS0gdGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBQeXRob24gc291cmNlLCBidXQgd2hlbiBpbnN0YWxsZWQKKy0gICAgIyB0aGUgc2NyaXB0cyBhcmUgaW4gYW5vdGhlciBkaXJlY3RvcnkuCistICAgIGlmIHB5dGhvbl9idWlsZDoKKy0gICAgICAgIGdbJ0xEU0hBUkVEJ10gPSBnWydCTERTSEFSRUQnXQorLQorKyAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgdGhlIHN5c2NvbmZpZyBtb2R1bGUKKysgICAgZnJvbSBfc3lzY29uZmlnZGF0YSBpbXBvcnQgYnVpbGRfdGltZV92YXJzCisgICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKKy0gICAgX2NvbmZpZ192YXJzID0gZworKyAgICBfY29uZmlnX3ZhcnMgPSB7fQorKyAgICBfY29uZmlnX3ZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKKyAKKyAKKyBkZWYgX2luaXRfbnQoKToKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMThkNzVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDkzIEBACitGcm9tIDYyNGMwMjlhYmNjNzNjNzI0MDIwY2NlYTlhMmI0YjViNWMwMGYyYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTU6NDI6NDYgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY3Jvc3MtY29tcGlsZSBzdXBwb3J0CisKK1dlIGNyb3NzIGNvbXBpbGUgcHl0aG9uLiBUaGlzIHBhdGNoIHVzZXMgdG9vbHMgZnJvbSBob3N0L25hdGl2ZQorcHl0aG9uIGluc3RlYWQgb2YgaW4tdHJlZSB0b29scworCistS2hlbQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbQ29uZmlndXJhdGlvbiBTcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUucHJlLmluIHwgMTQgKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCitpbmRleCBhODhiN2Q1Li43Y2I4YmIzIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC0yMjEsNiArMjIxLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACisgCisgUFlUSE9OPQkJcHl0aG9uJChFWEUpCisgQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCisrSE9TVFBZVEhPTj0gICAgJChCVUlMRFBZVEhPTikKKyAKKyBQWVRIT05fRk9SX0dFTj1AUFlUSE9OX0ZPUl9HRU5ACisgUFlUSE9OX0ZPUl9CVUlMRD1AUFlUSE9OX0ZPUl9CVUlMREAKK0BAIC0yODAsNiArMjgxLDcgQEAgTElCRkZJX0lOQ0xVREVESVI9CUBMSUJGRklfSU5DTFVERURJUkAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICMgUGFyc2VyCisgUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCisrSE9TVFBHRU49CSQoUEdFTikkKEVYRSkKKyAKKyBQU1JDUz0JCVwKKyAJCVBhcnNlci9hY2NlbGVyLmMgXAorQEAgLTUxMCw3ICs1MTIsNyBAQCBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKKyAKKyBydW5fcHJvZmlsZV90YXNrOgorIAk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAorLQkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQorKwkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQorIAorIGJ1aWxkX2FsbF9tZXJnZV9wcm9maWxlOgorIAkkKExMVk1fUFJPRl9NRVJHRVIpCitAQCAtNzg3LDcgKzc4OSw3IEBAICQoSU9fT0JKUyk6ICQoSU9fSCkKKyAKKyAkKEdSQU1NQVJfSCk6IEBHRU5FUkFURURfQ09NTUVOVEAgJChHUkFNTUFSX0lOUFVUKSAkKFBHRU4pCisgCUAkKE1LRElSX1ApIEluY2x1ZGUKKy0JJChQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKKysJJChIT1NUUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCisgJChHUkFNTUFSX0MpOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoR1JBTU1BUl9IKQorIAl0b3VjaCAkKEdSQU1NQVJfQykKKyAKK0BAIC05NzYsNyArOTc4LDcgQEAgJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgUHJvZ3JhbXMvcHl0aG9uLm86ICQoUFlUSE9OX0hFQURFUlMpCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIAorIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCistVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKKytURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQorIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CisgVEVTVFRJTUVPVVQ9CTM2MDAKKyAKK0BAIC0xNDY4LDcgKzE0NzAsNyBAQCBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlOgkkKExETElCUkFSWSkKKyAJCWZpOyBcCisgCWRvbmUKKyAJJChMTikgLWZzbiBpbmNsdWRlL3B5dGhvbiQoTERWRVJTSU9OKSAkKERFU1RESVIpJChwcmVmaXgpL0hlYWRlcnMKKy0Jc2VkICdzLyVWRVJTSU9OJS8nImAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpKSdgIicvZycgPCAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCA+ICQoREVTVERJUikkKHByZWZpeCkvUmVzb3VyY2VzL0luZm8ucGxpc3QKKysJc2VkICdzLyVWRVJTSU9OJS8nImAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpKSdgIicvZycgPCAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCA+ICQoREVTVERJUikkKHByZWZpeCkvUmVzb3VyY2VzL0luZm8ucGxpc3QKKyAJJChMTikgLWZzbiAkKFZFUlNJT04pICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL1ZlcnNpb25zL0N1cnJlbnQKKyAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50LyQoUFlUSE9ORlJBTUVXT1JLKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS8kKFBZVEhPTkZSQU1FV09SSykKKyAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50L0hlYWRlcnMgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvSGVhZGVycworQEAgLTE1MzQsNyArMTUzNiw3IEBAIGNvbmZpZy5zdGF0dXM6CSQoc3JjZGlyKS9jb25maWd1cmUKKyAKKyAjIFJ1biByZWluZGVudCBvbiB0aGUgbGlicmFyeQorIHJlaW5kZW50OgorLQkuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IC1yICQoc3JjZGlyKS9MaWIKKysJJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCisgCisgIyBSZXJ1biBjb25maWd1cmUgd2l0aCB0aGUgc2FtZSBvcHRpb25zIGFzIGl0IHdhcyBydW4gbGFzdCB0aW1lLAorICMgcHJvdmlkZWQgdGhlIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGV4aXN0cworQEAgLTE2NzQsNyArMTY3Niw3IEBAIGZ1bm55OgorIAorICMgUGVyZm9ybSBzb21lIHZlcmlmaWNhdGlvbiBjaGVja3Mgb24gYW55IG1vZGlmaWVkIGZpbGVzLgorIHBhdGNoY2hlY2s6IGFsbAorLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CisrCSQoUlVOU0hBUkVEKSAuLyQoSE9TVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQorIAorICMgRGVwZW5kZW5jaWVzCisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIxN2M2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvRml4LTI5NTE5LXdlYWtyZWYtc3Bld2luZy1leGNlcHRpb25zLWR1cmluZy1pbnRlcnAtZi5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDYyZGNmMzQ5ODdiNjgwZTk1ODczZWI5NDdiM2Y0ZDgwMjE5OWM2NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/PUM1PTgxdWthc3o9MjBMYW5nYT89IDxsdWthc3pAbGFuZ2EucGw+CitEYXRlOiBGcmksIDEwIEZlYiAyMDE3IDAwOjE0OjU1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAjMjk1MTk6IHdlYWtyZWYgc3Bld2luZyBleGNlcHRpb25zIGR1cmluZyBpbnRlcnAKKyBmaW5hbGl6YXRpb24KKworY29tbWl0IDljZDdlMTc2NDBhNDk2MzVkMWMxZjhjMjk4OTU3OGE4ZmMyYzFkZTYKK2Zyb20gaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogTHVrYXN6IExhbmdhIDxsdWthc3pAbGFuZ2EucGw+CistLS0KKyBMaWIvd2Vha3JlZi5weSB8IDQgKystLQorIE1pc2MvTkVXUyAgICAgIHwgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0xpYi93ZWFrcmVmLnB5IGIvTGliL3dlYWtyZWYucHkKK2luZGV4IGFhZWJkMGMuLjc4N2UzM2EgMTAwNjQ0CistLS0gYS9MaWIvd2Vha3JlZi5weQorKysrIGIvTGliL3dlYWtyZWYucHkKK0BAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgV2Vha1ZhbHVlRGljdGlvbmFyeShjb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZyk6CisgICAgICAgICBzZWxmLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgIGlmIGxlbihhcmdzKSA+IDE6CisgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHBlY3RlZCBhdCBtb3N0IDEgYXJndW1lbnRzLCBnb3QgJWQnICUgbGVuKGFyZ3MpKQorLSAgICAgICAgZGVmIHJlbW92ZSh3ciwgc2VsZnJlZj1yZWYoc2VsZikpOgorKyAgICAgICAgZGVmIHJlbW92ZSh3ciwgc2VsZnJlZj1yZWYoc2VsZiksIF9hdG9taWNfcmVtb3ZhbD1fcmVtb3ZlX2RlYWRfd2Vha3JlZik6CisgICAgICAgICAgICAgc2VsZiA9IHNlbGZyZWYoKQorICAgICAgICAgICAgIGlmIHNlbGYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2l0ZXJhdGluZzoKK0BAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgV2Vha1ZhbHVlRGljdGlvbmFyeShjb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZyk6CisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAjIEF0b21pYyByZW1vdmFsIGlzIG5lY2Vzc2FyeSBzaW5jZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAjIGNhbiBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYnkgdGhlIEdDCistICAgICAgICAgICAgICAgICAgICBfcmVtb3ZlX2RlYWRfd2Vha3JlZihkLCB3ci5rZXkpCisrICAgICAgICAgICAgICAgICAgICBfYXRvbWljX3JlbW92YWwoZCwgd3Iua2V5KQorICAgICAgICAgc2VsZi5fcmVtb3ZlID0gcmVtb3ZlCisgICAgICAgICAjIEEgbGlzdCBvZiBrZXlzIHRvIGJlIHJlbW92ZWQKKyAgICAgICAgIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMgPSBbXQorZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUworaW5kZXggNDFjZmRiYS4uNmQ4OWY1MiAxMDA2NDQKKy0tLSBhL01pc2MvTkVXUworKysrIGIvTWlzYy9ORVdTCitAQCAtNTcxOSw2ICs1NzE5LDkgQEAgQ29yZSBhbmQgQnVpbHRpbnMKKyBMaWJyYXJ5CisgLS0tLS0tLQorIAorKy0gSXNzdWUgIzI5NTE5OiBGaXggd2Vha3JlZiBzcGV3aW5nIGV4Y2VwdGlvbnMgZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duCisrICB3aGVuIHVzZWQgd2l0aCBhIHJhcmUgY29tYmluYXRpb24gb2YgbXVsdGlwcm9jZXNzaW5nIGFuZCBjdXN0b20gY29kZWNzLgorKworIC0gSXNzdWUgIzIwMTU0OiBEZWFkbG9jayBpbiBhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseSgpLgorIAorIC0gSXNzdWUgIzE2MTEzOiBSZW1vdmUgc2hhMyBtb2R1bGUgYWdhaW4uCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzNhZjZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCkBAIC0wLDAgKzEsODIgQEAKK0Zyb20gYTc4NGI3MGQ0N2JhMjEwNGFmYmNmZDgwNWUyYTY2Y2RjMjEwOWVjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNCBBdWcgMjAxNyAxMToxNjoxNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUKKworSW4gdGhlIGZvbGxvd2luZyBjb21taXQ6CisuLi4KK2NvbW1pdCBlNzExY2FmYWIxM2VmYzljMWZlNmM1Y2Q3NTgyNjQwMTQ0NWViNTg1CitBdXRob3I6IEJlbmphbWluIFBldGVyc29uIDxiZW5qYW1pbkBweXRob24ub3JnPgorRGF0ZTogICBXZWQgSnVuIDExIDE2OjQ0OjA0IDIwMDggKzAwMDAKKworICAgIE1lcmdlZCByZXZpc2lvbnMgNjQxMDQsNjQxMTcgdmlhIHN2bm1lcmdlIGZyb20KKyAgICBzdm4rc3NoOi8vcHl0aG9uZGV2QHN2bi5weXRob24ub3JnL3B5dGhvbi90cnVuaworLi4uCisoc2VlIGRpZmYgaW4gc2V0dXAucHkpCitJdCBhc3NpZ25lZCBsaWJyYXJpZXMgZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUgYWNjb3JkaW5nCit0aGUgaG9zdF9wbGF0Zm9ybSwgYnV0IG5vdCBwYXNzIGl0IHRvIEV4dGVuc2lvbi4KKworSW4gZ2xpYmMsIHRoZSBmb2xsb3dpbmcgY29tbWl0IGNhdXNlZCB0d28gZGVmaW5pdGlvbiBvZgorc2VtX2dldHZhbHVlIGFyZSBkaWZmZXJlbnQuCitodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD0wNDJlMTUyMWM3OTRhOTQ1ZWRjNDNiNWJmYTdlNjlhZDcwNDIwNTI0Cisoc2VlIGRpZmYgaW4gbnB0bC9zZW1fZ2V0dmFsdWUuYyBmb3IgZGV0YWlsKQorYF9fbmV3X3NlbV9nZXR2YWx1ZScgaXMgdGhlIGxhdGVzdCBzZW1fZ2V0dmFsdWVAQEdMSUJDXzIuMQorYW5kIGBfX29sZF9zZW1fZ2V0dmFsdWUnIGlzIHRvIGNvbXBhdCB0aGUgb2xkIHZlcnNpb24KK3NlbV9nZXR2YWx1ZUBHTElCQ18yLjAuCisKK1RvIGJ1aWxkIHB5dGhvbiBmb3IgZW1iZWRkZWQgTGludXggc3lzdGVtczoKK2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuMy4xL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sCitJZiBub3QgZXhwbGljaXRseSBsaW5rIHRvIGxpYnJhcnkgcHRocmVhZCAoLWxwdGhyZWFkKSwgaXQgd2lsbAorbG9hZCBnbGliYydzIHNlbV9nZXR2YWx1ZSByYW5kb21seSBhdCBydW50aW1lLgorCitTdWNoIGFzIGJ1aWxkIHB5dGhvbiBvbiBsaW51eCB4ODZfNjQgaG9zdCBhbmQgcnVuIHRoZSBweXRob24KK29uIGxpbnV4IHg4Nl8zMiB0YXJnZXQuIElmIG5vdCBsaW5rIGxpYnJhcnkgcHRocmVhZCwgaXQgY2F1c2VkCittdWx0aXByb2Nlc3NpbmcgYm91bmRlZCBzZW1hcGhvcmUgY291bGQgbm90IHdvcmsgY29ycmVjdGx5LgorLi4uCis+Pj4gaW1wb3J0IG11bHRpcHJvY2Vzc2luZworPj4+IHBvb2xfc2VtYSA9IG11bHRpcHJvY2Vzc2luZy5Cb3VuZGVkU2VtYXBob3JlKHZhbHVlPTEpCis+Pj4gcG9vbF9zZW1hLmFjcXVpcmUoKQorVHJ1ZQorPj4+IHBvb2xfc2VtYS5yZWxlYXNlKCkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KK1ZhbHVlRXJyb3I6IHNlbWFwaG9yZSBvciBsb2NrIHJlbGVhc2VkIHRvbyBtYW55IHRpbWVzCisuLi4KKworQW5kIHRoZSBzZW1hcGhvcmUgaXNzdWUgYWxzbyBjYXVzZWQgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkucHV0KCkgaHVuZy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzI5OTldCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgNyArKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDRmMGY1MjIuLmQwNTcwN2QgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xNjA2LDggKzE2MDYsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgorICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQorICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCistCistICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBMaW51eCBhbmQgb3RoZXIgdW5pY2VzCisrICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JykpOgorKyAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQorKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncHRocmVhZCddCisrICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPdGhlciB1bmljZXMKKyAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKKyAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3J0J10KKyAKK0BAIC0xNjI2LDYgKzE2MjgsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6CisgICAgICAgICAgICAgZXh0cy5hcHBlbmQgKCBFeHRlbnNpb24oJ19tdWx0aXByb2Nlc3NpbmcnLCBtdWx0aXByb2Nlc3Npbmdfc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWxpc3QobWFjcm9zLml0ZW1zKCkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPVsiTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nIl0pKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX211bHRpcHJvY2Vzc2luZycpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIxYjcyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtZml4LUNWRS0yMDE2LTEwMDAxMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotRnJvbSBhYWIzZThjNDMyYjkwNTA4YWMxNDc1NTEyOGY1YTY4N2JlMmZkZjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjIgU2VwIDIwMTYgMTY6Mzk6NDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gcHl0aG9uMzogZml4IENWRS0yMDE2LTEwMDAxMTAKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotSWdub3JlIHRoZSBIVFRQX1BST1hZIHZhcmlhYmxlIHdoZW4gUkVRVUVTVF9NRVRIT0QgZW52aXJvbm1lbnQgaXMgc2V0LCB3aGljaAotaW5kaWNhdGVzIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KLQotSXNzdWUgIzI3NTY4IFJlcG9ydGVkIGFuZCBwYXRjaCBjb250cmlidXRlZCBieSBSw6ltaSBSYW1waW4uIFsjMjc1NjhdCi0KLUJhY2twb3J0IHBhdGNoIGZyb20gaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vcmV2L2EwYWM1MmVkOGY3OQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMDAxMTAKLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBEb2MvaG93dG8vdXJsbGliMi5yc3QgICAgICAgICAgfCAgNSArKysrKwotIERvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCB8IDE3ICsrKysrKysrKysrKysrKystCi0gTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgICAgICAgIHwgMTQgKysrKysrKysrKysrKy0KLSBMaWIvdXJsbGliL3JlcXVlc3QucHkgICAgICAgICAgfCAgNiArKysrKysKLSBNaXNjL05FV1MgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3VybGxpYjIucnN0IGIvRG9jL2hvd3RvL3VybGxpYjIucnN0Ci1pbmRleCAyNGE0MTU2Li5kMmM3OTkxIDEwMDY0NAotLS0tIGEvRG9jL2hvd3RvL3VybGxpYjIucnN0Ci0rKysgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKLUBAIC01MzgsNiArNTM4LDExIEBAIHNldHRpbmcgdXAgYSBgQmFzaWMgQXV0aGVudGljYXRpb25gXyBoYW5kbGVyOiA6OgotICAgICB0aHJvdWdoIGEgcHJveHkuICBIb3dldmVyLCB0aGlzIGNhbiBiZSBlbmFibGVkIGJ5IGV4dGVuZGluZyB1cmxsaWIucmVxdWVzdCBhcwotICAgICBzaG93biBpbiB0aGUgcmVjaXBlIFsjXV8uCi0gCi0rLi4gbm90ZTo6Ci0rCi0rICAgIGBgSFRUUF9QUk9YWWBgIHdpbGwgYmUgaWdub3JlZCBpZiBhIHZhcmlhYmxlIGBgUkVRVUVTVF9NRVRIT0RgYCBpcyBzZXQ7IHNlZQotKyAgICB0aGUgZG9jdW1lbnRhdGlvbiBvbiA6ZnVuYzpgfnVybGxpYi5yZXF1ZXN0LmdldHByb3hpZXNgLgotKwotIAotIFNvY2tldHMgYW5kIExheWVycwotID09PT09PT09PT09PT09PT09PQotZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAotaW5kZXggMTMzODkwNi4uMTI5MWFlYiAxMDA2NDQKLS0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAotKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0Ci1AQCAtMTczLDYgKzE3MywxNiBAQCBUaGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotICAgIElmIGJvdGggbG93ZXJjYXNlIGFuZCB1cHBlcmNhc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGV4aXN0IChhbmQgZGlzYWdyZWUpLAotICAgIGxvd2VyY2FzZSBpcyBwcmVmZXJyZWQuCi0gCi0rICAgIC4uIG5vdGU6OgotKwotKyAgICAgICBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBSRVFVRVNUX01FVEhPRGBgIGlzIHNldCwgd2hpY2ggdXN1YWxseQotKyAgICAgICBpbmRpY2F0ZXMgeW91ciBzY3JpcHQgaXMgcnVubmluZyBpbiBhIENHSSBlbnZpcm9ubWVudCwgdGhlIGVudmlyb25tZW50Ci0rICAgICAgIHZhcmlhYmxlIGBgSFRUUF9QUk9YWWBgICh1cHBlcmNhc2UgYGBfUFJPWFlgYCkgd2lsbCBiZSBpZ25vcmVkLiBUaGlzIGlzCi0rICAgICAgIGJlY2F1c2UgdGhhdCB2YXJpYWJsZSBjYW4gYmUgaW5qZWN0ZWQgYnkgYSBjbGllbnQgdXNpbmcgdGhlICJQcm94eToiIEhUVFAKLSsgICAgICAgaGVhZGVyLiBJZiB5b3UgbmVlZCB0byB1c2UgYW4gSFRUUCBwcm94eSBpbiBhIENHSSBlbnZpcm9ubWVudCwgZWl0aGVyIHVzZQotKyAgICAgICBgYFByb3h5SGFuZGxlcmBgIGV4cGxpY2l0bHksIG9yIG1ha2Ugc3VyZSB0aGUgdmFyaWFibGUgbmFtZSBpcyBpbgotKyAgICAgICBsb3dlcmNhc2UgKG9yIGF0IGxlYXN0IHRoZSBgYF9wcm94eWBgIHN1ZmZpeCkuCi0rCi0gCi0gVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKLSAKLUBAIC0yODAsNiArMjkwLDExIEBAIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6Ci0gICAgbGlzdCBvZiBob3N0bmFtZSBzdWZmaXhlcywgb3B0aW9uYWxseSB3aXRoIGBgOnBvcnRgYCBhcHBlbmRlZCwgZm9yIGV4YW1wbGUKLSAgICBgYGNlcm4uY2gsbmNzYS51aXVjLmVkdSxzb21lLmhvc3Q6ODA4MGBgLgotIAotKyAgICAuLiBub3RlOjoKLSsKLSsgICAgICAgYGBIVFRQX1BST1hZYGAgd2lsbCBiZSBpZ25vcmVkIGlmIGEgdmFyaWFibGUgYGBSRVFVRVNUX01FVEhPRGBgIGlzIHNldDsKLSsgICAgICAgc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9uIDpmdW5jOmB+dXJsbGliLnJlcXVlc3QuZ2V0cHJveGllc2AuCi0rCi0gCi0gLi4gY2xhc3M6OiBIVFRQUGFzc3dvcmRNZ3IoKQotIAotQEAgLTExMzgsNyArMTE1Myw3IEBAIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QgdG8gc3RyaW5nIG9uY2UgaXQgZGV0ZXJtaW5lcyBvciBndWVzc2VzCi0gdGhlIGFwcHJvcHJpYXRlIGVuY29kaW5nLgotIAotIFRoZSBmb2xsb3dpbmcgVzNDIGRvY3VtZW50LCBodHRwczovL3d3dy53My5vcmcvSW50ZXJuYXRpb25hbC9PLWNoYXJzZXRcICwgbGlzdHMKLS10aGUgdmFyaW91cyB3YXlzIGluIHdoaWNoIGEgKFgpSFRNTCBvciBhIFhNTCBkb2N1bWVudCBjb3VsZCBoYXZlIHNwZWNpZmllZCBpdHMKLSt0aGUgdmFyaW91cyB3YXlzIGluIHdoaWNoIGFuIChYKUhUTUwgb3IgYW4gWE1MIGRvY3VtZW50IGNvdWxkIGhhdmUgc3BlY2lmaWVkIGl0cwotIGVuY29kaW5nIGluZm9ybWF0aW9uLgotIAotIEFzIHRoZSBweXRob24ub3JnIHdlYnNpdGUgdXNlcyAqdXRmLTgqIGVuY29kaW5nIGFzIHNwZWNpZmllZCBpbiBpdHMgbWV0YSB0YWcsIHdlCi1kaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQotaW5kZXggNWQwNWY4ZC4uMjQ3NTk4YSAxMDA2NDQKLS0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5Ci0rKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQotQEAgLTEsNCArMSw0IEBACi0tIiIiUmVncmVzc3Npb24gdGVzdHMgZm9yIHdoYXQgd2FzIGluIFB5dGhvbiAyJ3MgInVybGxpYiIgbW9kdWxlIiIiCi0rIiIiUmVncmVzc2lvbiB0ZXN0cyBmb3Igd2hhdCB3YXMgaW4gUHl0aG9uIDIncyAidXJsbGliIiBtb2R1bGUiIiIKLSAKLSBpbXBvcnQgdXJsbGliLnBhcnNlCi0gaW1wb3J0IHVybGxpYi5yZXF1ZXN0Ci1AQCAtMjMyLDYgKzIzMiwxOCBAQCBjbGFzcyBQcm94eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1cmxsaWIucmVxdWVzdC5wcm94eV9ieXBhc3NfZW52aXJvbm1lbnQoJ2Fub3RoZXJkb21haW4uY29tOjg4ODgnKSkKLSAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1cmxsaWIucmVxdWVzdC5wcm94eV9ieXBhc3NfZW52aXJvbm1lbnQoJ25ld2RvbWFpbi5jb206MTIzNCcpKQotIAotKyAgICBkZWYgdGVzdF9wcm94eV9jZ2lfaWdub3JlKHNlbGYpOgotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIHNlbGYuZW52LnNldCgnSFRUUF9QUk9YWScsICdodHRwOi8vc29tZXdoZXJlOjMxMjgnKQotKyAgICAgICAgICAgIHByb3hpZXMgPSB1cmxsaWIucmVxdWVzdC5nZXRwcm94aWVzX2Vudmlyb25tZW50KCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdodHRwOi8vc29tZXdoZXJlOjMxMjgnLCBwcm94aWVzWydodHRwJ10pCi0rICAgICAgICAgICAgc2VsZi5lbnYuc2V0KCdSRVFVRVNUX01FVEhPRCcsICdHRVQnKQotKyAgICAgICAgICAgIHByb3hpZXMgPSB1cmxsaWIucmVxdWVzdC5nZXRwcm94aWVzX2Vudmlyb25tZW50KCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdodHRwJywgcHJveGllcykKLSsgICAgICAgIGZpbmFsbHk6Ci0rICAgICAgICAgICAgc2VsZi5lbnYudW5zZXQoJ1JFUVVFU1RfTUVUSE9EJykKLSsgICAgICAgICAgICBzZWxmLmVudi51bnNldCgnSFRUUF9QUk9YWScpCi0rCi0gICAgIGRlZiB0ZXN0X3Byb3h5X2J5cGFzc19lbnZpcm9ubWVudF9ob3N0X21hdGNoKHNlbGYpOgotICAgICAgICAgYnlwYXNzID0gdXJsbGliLnJlcXVlc3QucHJveHlfYnlwYXNzX2Vudmlyb25tZW50Ci0gICAgICAgICBzZWxmLmVudi5zZXQoJ05PX1BST1hZJywKLWRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JlcXVlc3QucHkgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKLWluZGV4IDE3MzFmZTMuLjNiZTMyN2QgMTAwNjQ0Ci0tLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKLSsrKyBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQotQEAgLTI0MTIsNiArMjQxMiwxMiBAQCBkZWYgZ2V0cHJveGllc19lbnZpcm9ubWVudCgpOgotICAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQotICAgICAgICAgaWYgdmFsdWUgYW5kIG5hbWVbLTY6XSA9PSAnX3Byb3h5JzoKLSAgICAgICAgICAgICBwcm94aWVzW25hbWVbOi02XV0gPSB2YWx1ZQotKyAgICAjIENWRS0yMDE2LTEwMDAxMTAgLSBJZiB3ZSBhcmUgcnVubmluZyBhcyBDR0kgc2NyaXB0LCBmb3JnZXQgSFRUUF9QUk9YWQotKyAgICAjIChub24tYWxsLWxvd2VyY2FzZSkgYXMgaXQgbWF5IGJlIHNldCBmcm9tIHRoZSB3ZWIgc2VydmVyIGJ5IGEgIlByb3h5OiIKLSsgICAgIyBoZWFkZXIgZnJvbSB0aGUgY2xpZW50Ci0rICAgICMgSWYgInByb3h5IiBpcyBsb3dlcmNhc2UsIGl0IHdpbGwgc3RpbGwgYmUgdXNlZCB0aGFua3MgdG8gdGhlIG5leHQgYmxvY2sKLSsgICAgaWYgJ1JFUVVFU1RfTUVUSE9EJyBpbiBvcy5lbnZpcm9uOgotKyAgICAgICAgcHJveGllcy5wb3AoJ2h0dHAnLCBOb25lKQotICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gb3MuZW52aXJvbi5pdGVtcygpOgotICAgICAgICAgaWYgbmFtZVstNjpdID09ICdfcHJveHknOgotICAgICAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKLWRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKLWluZGV4IDRhZDI1NTEuLjJmY2M5NWIgMTAwNjQ0Ci0tLS0gYS9NaXNjL05FV1MKLSsrKyBiL01pc2MvTkVXUwotQEAgLTMyOSw2ICszMjksMTAgQEAgTGlicmFyeQotIC0gSXNzdWUgIzI2NjQ0OiBSYWlzZSBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFN5c3RlbUVycm9yIHdoZW4gYSBuZWdhdGl2ZQotICAgbGVuZ3RoIGlzIHBhc3NlZCB0byBTU0xTb2NrZXQucmVjdigpIG9yIHJlYWQoKS4KLSAKLSstIElzc3VlICMyNzU2ODogUHJldmVudCBIVFRQb3h5IGF0dGFjayAoQ1ZFLTIwMTYtMTAwMDExMCkuIElnbm9yZSB0aGUKLSsgIEhUVFBfUFJPWFkgdmFyaWFibGUgd2hlbiBSRVFVRVNUX01FVEhPRCBlbnZpcm9ubWVudCBpcyBzZXQsIHdoaWNoIGluZGljYXRlcwotKyAgdGhhdCB0aGUgc2NyaXB0IGlzIGluIENHSSBtb2RlLgotKwotIC0gSXNzdWUgIzIzODA0OiBGaXggU1NMIHJlY3YoMCkgYW5kIHJlYWQoMCkgbWV0aG9kcyB0byByZXR1cm4gemVybyBieXRlcwotICAgaW5zdGVhZCBvZiB1cCB0byAxMDI0LgotIAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZWNhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaApAQCAtMCwwICsxLDk3IEBACitUaGUgY29tcGlsZWQgLnB5YyBmaWxlcyBjb250YWluIHRpbWUgc3RhbXAgY29ycmVzcG9uZGluZyB0byB0aGUgY29tcGlsZSB0aW1lLgorVGhpcyBwcmV2ZW50cyBiaW5hcnkgcmVwcm9kdWNpYmlsaXR5LiBUaGlzIHBhdGNoIGFsbG93cyB0byBhY2hpZXZlIGJpbmFyeQorcmVwcm9kdWNpYmlsaXR5IGJ5IG92ZXJyaWRpbmcgdGhlIGJ1aWxkIHRpbWUgc3RhbXAgYnkgdGhlIHZhbHVlIAorZXhwb3J0ZWQgdmlhIFNPVVJDRV9EQVRFX0VQT0NILiAKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCisKK0Zyb20gYWVhYjQ4ODYzMGZkYjFiNTZhOGQwYjBjMTNmYTg4NzA2YjJhZmU5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJCZXJuaGFyZCBNLiBXaWVkZW1hbm4iIDxid2llZGVtYW5uQHN1c2UuZGU+CitEYXRlOiBTYXQsIDI1IEZlYiAyMDE3IDA2OjQyOjI4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGJwby0yOTcwODogc3VwcG9ydCBTT1VSQ0VfREFURV9FUE9DSCBlbnYgdmFyIGluIHB5X2NvbXBpbGUKKwordG8gYWxsb3cgZm9yIHJlcHJvZHVjaWJsZSBidWlsZHMgb2YgcHl0aG9uIHBhY2thZ2VzCisKK1NlZSBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnLyBmb3Igd2h5IHRoaXMgaXMgZ29vZAorYW5kIGh0dHBzOi8vcmVwcm9kdWNpYmxlLWJ1aWxkcy5vcmcvc3BlY3Mvc291cmNlLWRhdGUtZXBvY2gvCitmb3IgdGhlIGRlZmluaXRpb24gb2YgdGhpcyB2YXJpYWJsZS4KKworQmFja2dyb3VuZDoKK0luIHNvbWUgZGlzdHJpYnV0aW9ucyBsaWtlIG9wZW5TVVNFLCBiaW5hcnkgcnBtcyBjb250YWluIHByZWNvbXBpbGVkIC5weWMgZmlsZXMuCisKK0FuZCBwYWNrYWdlcyBsaWtlIGFtcXAgb3IgdHdpc3RlZCBkeW5hbWljYWxseSBnZW5lcmF0ZSAucHkgZmlsZXMgYXQgYnVpbGQgdGltZQorc28gdGhvc2UgaGF2ZSB0aGUgY3VycmVudCB0aW1lIGFuZCB0aGF0IHRpbWVzdGFtcCBnZXRzIGVtYmVkZGVkCitpbnRvIHRoZSAucHljIGZpbGUgaGVhZGVyLgorV2hlbiB3ZSB0aGVuIGFkYXB0IGZpbGUgdGltZXN0YW1wcyBpbiBycG1zIHRvIGJlIGNvbnN0YW50LAordGhlIHRpbWVzdGFtcCBpbiB0aGUgLnB5YyBoZWFkZXIgd2lsbCBubyBtb3JlIG1hdGNoCit0aGUgLnB5IHRpbWVzdGFtcCBpbiB0aGUgZmlsZXN5c3RlbS4KK1RoZSBzb2Z0d2FyZSB3aWxsIHN0aWxsIHdvcmssIGJ1dCBpdCB3aWxsIG5vdCB1c2UgdGhlIC5weWMgZmlsZSBhcyBpdCBzaG91bGQuCistLS0KKyBEb2MvbGlicmFyeS9weV9jb21waWxlLnJzdCAgfCAgNCArKysrCisgTGliL3B5X2NvbXBpbGUucHkgICAgICAgICAgIHwgIDQgKysrKworIExpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weSB8IDE5ICsrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3B5X2NvbXBpbGUucnN0IGIvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QKK2luZGV4IDBhZjhmYjEuLjg0MWYzZTggMTAwNjQ0CistLS0gYS9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdAorKysrIGIvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QKK0BAIC01Myw2ICs1MywxMCBAQCBieXRlLWNvZGUgY2FjaGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBzb3VyY2UgY29kZS4KKyAgICA6ZnVuYzpgY29tcGlsZWAgZnVuY3Rpb24uICBUaGUgZGVmYXVsdCBvZiBgYC0xYGAgc2VsZWN0cyB0aGUgb3B0aW1pemF0aW9uCisgICAgbGV2ZWwgb2YgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIuCisgCisrICAgSWYgdGhlIFNPVVJDRV9EQVRFX0VQT0NIIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgdGhlIC5weSBmaWxlIG10aW1lCisrICAgYW5kIHRpbWVzdGFtcCBlbnRyeSBpbiAucHljIGZpbGUgaGVhZGVyLCB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhpcyB2YWx1ZS4KKysgICBTZWUgaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy9zcGVjcy9zb3VyY2UtZGF0ZS1lcG9jaC8gZm9yIG1vcmUgaW5mby4KKysKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgIENoYW5nZWQgZGVmYXVsdCB2YWx1ZSBvZiAqY2ZpbGUqIHRvIGJlIDpQRVA6YDMxNDdgLWNvbXBsaWFudC4gIFByZXZpb3VzCisgICAgICAgZGVmYXVsdCB3YXMgKmZpbGUqICsgYGAnYydgYCAoYGAnbydgYCBpZiBvcHRpbWl6YXRpb24gd2FzIGVuYWJsZWQpLgorZGlmZiAtLWdpdCBhL0xpYi9weV9jb21waWxlLnB5IGIvTGliL3B5X2NvbXBpbGUucHkKK2luZGV4IDExYzViNTAuLjYyZGNkYzcgMTAwNjQ0CistLS0gYS9MaWIvcHlfY29tcGlsZS5weQorKysrIGIvTGliL3B5X2NvbXBpbGUucHkKK0BAIC0xMzcsNiArMTM3LDEwIEBAIGRlZiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUsIGRvcmFpc2U9RmFsc2UsIG9wdGltaXplPS0xKToKKyAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgIHBhc3MKKyAgICAgc291cmNlX3N0YXRzID0gbG9hZGVyLnBhdGhfc3RhdHMoZmlsZSkKKysgICAgc2RlID0gb3MuZW52aXJvbi5nZXQoJ1NPVVJDRV9EQVRFX0VQT0NIJykKKysgICAgaWYgc2RlIGFuZCBzb3VyY2Vfc3RhdHNbJ210aW1lJ10gPiBpbnQoc2RlKToKKysgICAgICAgIHNvdXJjZV9zdGF0c1snbXRpbWUnXSA9IGludChzZGUpCisrICAgICAgICBvcy51dGltZShmaWxlLCAoc291cmNlX3N0YXRzWydtdGltZSddLCBzb3VyY2Vfc3RhdHNbJ210aW1lJ10pKQorICAgICBieXRlY29kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9jb2RlX3RvX2J5dGVjb2RlKAorICAgICAgICAgICAgIGNvZGUsIHNvdXJjZV9zdGF0c1snbXRpbWUnXSwgc291cmNlX3N0YXRzWydzaXplJ10pCisgICAgIG1vZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fY2FsY19tb2RlKGZpbGUpCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CitpbmRleCA0YTZjYWE1Li4zZDA5OTYzIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkKK0BAIC05OCw2ICs5OCwyNSBAQCBkZWYgdGVzdF9iYWRfY29kaW5nKHNlbGYpOgorICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cygKKyAgICAgICAgICAgICBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShiYWRfY29kaW5nKSkpCisgCisrICAgIGRlZiB0ZXN0X3NvdXJjZV9kYXRlX2Vwb2NoKHNlbGYpOgorKyAgICAgICAgdGVzdHRpbWUgPSAxMjM0NTY3ODkKKysgICAgICAgIG9yaWdfc2RlID0gb3MuZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpCisrICAgICAgICBvcy5lbnZpcm9uWyJTT1VSQ0VfREFURV9FUE9DSCJdID0gc3RyKHRlc3R0aW1lKQorKyAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNlbGYuc291cmNlX3BhdGgsIHNlbGYucHljX3BhdGgpCisrICAgICAgICBpZiBvcmlnX3NkZToKKysgICAgICAgICAgICBvcy5lbnZpcm9uWyJTT1VSQ0VfREFURV9FUE9DSCJdID0gb3JpZ19zZGUKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bIlNPVVJDRV9EQVRFX0VQT0NIIl0KKysgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLnB5Y19wYXRoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5jYWNoZV9wYXRoKSkKKysgICAgICAgIHN0YXRpbmZvID0gb3Muc3RhdChzZWxmLnNvdXJjZV9wYXRoKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aW5mby5zdF9tdGltZSwgdGVzdHRpbWUpCisrICAgICAgICBmID0gb3BlbihzZWxmLnB5Y19wYXRoLCAicmIiKQorKyAgICAgICAgZi5yZWFkKDQpCisrICAgICAgICB0aW1lYnl0ZXMgPSBmLnJlYWQoNCkgIyByZWFkIHRpbWVzdGFtcCBmcm9tIHB5YyBoZWFkZXIKKysgICAgICAgIGYuY2xvc2UoKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lYnl0ZXMsICh0ZXN0dGltZSkudG9fYnl0ZXMoNCwgJ2xpdHRsZScpKQorKworICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+IDAsICd0ZXN0IGRvZXMgbm90IHdvcmsgd2l0aCAtTycpCisgICAgIGRlZiB0ZXN0X2RvdWJsZV9kb3Rfbm9fY2xvYmJlcihzZWxmKToKKyAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIyOTY2CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoCmluZGV4IDBkOTE1MmMuLjliNDBlOGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoCkBAIC0xLDIxICsxLDcgQEAKLVRoaXMgcGF0Y2ggdXBkYXRlcyByYW5kb20uYyB0byBtYXRjaCB1cHN0cmVhbSBweXRob24ncyBjb2RlIGF0IHJldmlzaW9uIAotODEyNWQ5YTgxNTJiLiBUaGlzIGFkZHJlc3NlcyB2YXJpb3VzIGlzc3VlcyBhcm91bmQgcHJvYmxlbXMgd2l0aCBnbGliYyAyLjI0IAotYW5kIDIuMjUgc3VjaCB0aGF0IHB5dGhvbiB3b3VsZCBmYWlsIHRvIHN0YXJ0IHdpdGg6Ci0KLVtycHVyZGllQGNlbnRvczcgfl0kIC90bXAvdDIvc3lzcm9vdHMveDg2XzY0LXBva3lzZGstbGludXgvdXNyL2Jpbi9weXRob24zCi1GYXRhbCBQeXRob24gZXJyb3I6IGdldGVudHJvcHkoKSBmYWlsZWQKLUFib3J0ZWQKLQotKHRha2VuIGZyb20gb3VyIGJ1aWxkdG9vbHMtdGFyYmFsbCBhbHNvIGJyZWFrcyBlU0RLKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgVmljdG9yIFN0aW5uZXIgPHZpY3Rvci5zdGlubmVyQGdtYWlsLmNvbT4KLSMgRGF0ZSAxNDgzOTU3MTMzIC0zNjAwCi0jIE5vZGUgSUQgODEyNWQ5YTgxNTJiNzllNzEyY2IwOWM3MDk0YjkxMjliOWJjZWE4NgotIyBQYXJlbnQgIDMzNzQ2MTU3NGM5MDI4MTYzMDc1MWI2MDk1YzRlMWJhZjM4MGNmN2QKLUlzc3VlICMyOTE1NzogUHJlZmVyIGdldHJhbmRvbSgpIG92ZXIgZ2V0ZW50cm9weSgpCitGcm9tIDAzNWJhNWRhM2U1M2U0NWM3MTJiMzlmZTFmNmZiNzQzZTY5N2MwMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgU3Rpbm5lciA8dmljdG9yLnN0aW5uZXJAZ21haWwuY29tPgorRGF0ZTogTW9uLCA5IEphbiAyMDE3IDExOjE4OjUzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIElzc3VlICMyOTE1NzogUHJlZmVyIGdldHJhbmRvbSgpIG92ZXIgZ2V0ZW50cm9weSgpCiAKIENvcHkgYW5kIHRoZW4gYWRhcHQgUHl0aG9uL3JhbmRvbS5jIGZyb20gZGVmYXVsdCBicmFuY2guIERpZmZlcmVuY2UgYmV0d2VlbiAzLjUKIGFuZCBkZWZhdWx0IGJyYW5jaGVzOgpAQCAtMjYsMTIgKzEyLDE3IEBACiAqIFB5dGhvbiAzLjUgaGFzIG5vIF9QeU9TX1VSYW5kb21Ob25ibG9jaygpIGZ1bmN0aW9uOiBfUHlPU19VUmFuZG9tKCkKICAgd29ya3MgaW4gbm9uLWJsb2NraW5nIG1vZGUgb24gUHl0aG9uIDMuNQogCi1SUCAyMDE3LzEvMjIKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9jb21taXQvMDM1YmE1ZGEzZTUzZTQ1YzcxMmIzOWZlMWY2ZmI3NDNlNjk3YzAzMl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CiAKLUluZGV4OiBQeXRob24tMy41LjIvUHl0aG9uL3JhbmRvbS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4yLm9yaWcvUHl0aG9uL3JhbmRvbS5jCi0rKysgUHl0aG9uLTMuNS4yL1B5dGhvbi9yYW5kb20uYworLS0tCisgUHl0aG9uL3JhbmRvbS5jIHwgNDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCAyMDAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKK2luZGV4IGQyMDM5MzkuLjMxZjYxZDAgMTAwNjQ0CistLS0gYS9QeXRob24vcmFuZG9tLmMKKysrKyBiL1B5dGhvbi9yYW5kb20uYwogQEAgLTEsNiArMSw5IEBACiAgI2luY2x1ZGUgIlB5dGhvbi5oIgogICNpZmRlZiBNU19XSU5ET1dTCkBAIC00Miw3ICszMyw3IEBACiAgI2Vsc2UKICAjICBpbmNsdWRlIDxmY250bC5oPgogICMgIGlmZGVmIEhBVkVfU1lTX1NUQVRfSAotQEAgLTM2LDEwICszOSw5IEBAIHdpbjMyX3VyYW5kb21faW5pdChpbnQgcmFpc2UpCitAQCAtMzcsMTAgKzQwLDkgQEAgd2luMzJfdXJhbmRvbV9pbml0KGludCByYWlzZSkKICAgICAgcmV0dXJuIDA7CiAgCiAgZXJyb3I6CkBAIC01NSw3ICs0Niw3IEBACiAgICAgIHJldHVybiAtMTsKICB9CiAgCi1AQCAtNTIsOCArNTQsOSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfCitAQCAtNTMsOCArNTUsOSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCiAgCiAgICAgIGlmIChoQ3J5cHRQcm92ID09IDApCiAgICAgIHsKQEAgLTY2LDcgKzU3LDcgQEAKICAgICAgfQogIAogICAgICB3aGlsZSAoc2l6ZSA+IDApCi1AQCAtNjIsMTEgKzY1LDkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5XworQEAgLTYzLDExICs2Niw5IEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICAgICAgICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgKERXT1JEKWNodW5rLCBidWZmZXIpKQogICAgICAgICAgewogICAgICAgICAgICAgIC8qIENyeXB0R2VuUmFuZG9tKCkgZmFpbGVkICovCkBAIC04MCw3ICs3MSw3IEBACiAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgfQogICAgICAgICAgYnVmZmVyICs9IGNodW5rOwotQEAgLTc1LDU1ICs3NiwyOSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfCitAQCAtNzYsNTggKzc3LDIzIEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICAgICAgcmV0dXJuIDA7CiAgfQogIApAQCAtMTI5LDEzICsxMjAsMTkgQEAKICAjaWYgZGVmaW5lZChIQVZFX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChIQVZFX0dFVFJBTkRPTV9TWVNDQUxMKQogICNkZWZpbmUgUFlfR0VUUkFORE9NIDEKICAKKy0vKiBDYWxsIGdldHJhbmRvbSgpCiArLyogQ2FsbCBnZXRyYW5kb20oKSB0byBnZXQgcmFuZG9tIGJ5dGVzOgogKwotKyAgIC0gUmV0dXJuIDEgb24gc3VjY2VzcworICAgIC0gUmV0dXJuIDEgb24gc3VjY2VzcworLSAgIC0gUmV0dXJuIDAgaWYgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IKKy0gICAgIEVQRVJNKSBvciBpZiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbGVkIHdpdGggRUFHQUlOIChzeXN0ZW0gdXJhbmRvbQorLSAgICAgbm90IGluaXRpYWxpemVkIHlldCkgYW5kIHJhaXNlPTAuCiArICAgLSBSZXR1cm4gMCBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0pLAogKyAgICAgb3IgaWYgZ2V0cmFuZG9tKEdSTkRfTk9OQkxPQ0spIGZhaWxlZCB3aXRoIEVBR0FJTiAoc3lzdGVtIHVyYW5kb20gbm90CiArICAgICBpbml0aWFsaXplZCB5ZXQpLgotKyAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcjoKKyAgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3I6CistICAgICBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiBhbmQgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4KKy0gICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCiArICAgICBpZiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCiArICAgICBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24sIG9yIGlmIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50CiArICAgICBlcnJvci4KQEAgLTE0NCwyNiArMTQxLDE2IEBACiAgc3RhdGljIGludAogIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQogIHsKLS0gICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8KLS0gICAgICogTmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBuZXdlciwgb3IgU29sYXJpcyAxMS4zIG9yIG5ld2VyICovCi0rICAgIC8qIElzIGdldHJhbmRvbSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/IFNldCB0byAwIGlmIGdldHJhbmRvbSgpCi0rICAgICAgIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTS4gTmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBuZXdlciwgb3IgU29sYXJpcwotKyAgICAgICAxMS4zIG9yIG5ld2VyICovCi0gICAgIHN0YXRpYyBpbnQgZ2V0cmFuZG9tX3dvcmtzID0gMTsKLSAKLSAgICAgLyogZ2V0cmFuZG9tKCkgb24gTGludXggd2lsbCBibG9jayBpZiBjYWxsZWQgYmVmb3JlIHRoZSBrZXJuZWwgaGFzCi1AQCAtMTMyLDg0ICsxMDcsMTY1IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2kKK0BAIC0xNDIsMTYgKzEwOCwxOSBAQCBweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICAgICAgICogc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjY4MzkuIFRvIGF2b2lkIHRoaXMsIHVzZSB0aGUKICAgICAgICogR1JORF9OT05CTE9DSyBmbGFnLiAqLwogICAgICBjb25zdCBpbnQgZmxhZ3MgPSBHUk5EX05PTkJMT0NLOwotLSAgICBpbnQgbjsKICsgICAgY2hhciAqZGVzdDsKLSsgICAgbG9uZyBuOworICAgICBsb25nIG47CiAgCi0tICAgIGlmICghZ2V0cmFuZG9tX3dvcmtzKQotKyAgICBpZiAoIWdldHJhbmRvbV93b3JrcykgeworICAgICBpZiAoIWdldHJhbmRvbV93b3JrcykgewogICAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KKyAgICAgfQogIAogKyAgICBkZXN0ID0gYnVmZmVyOwogICAgICB3aGlsZSAoMCA8IHNpemUpIHsKQEAgLTE3NCwxMSArMTYxLDggQEAKICsgICAgICAgICAgIHJlcXVlc3RlZC4gKi8KICAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgMTAyNCk7CiAgI2Vsc2UKLS0gICAgICAgIG4gPSBzaXplOwotKyAgICAgICAgbiA9IFB5X01JTihzaXplLCBMT05HX01BWCk7Ci0gI2VuZGlmCi0gCi0gICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICBuID0gUHlfTUlOKHNpemUsIExPTkdfTUFYKTsKK0BAIC0xNjEsMzQgKzEzMCwzNSBAQCBweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICAjaWZkZWYgSEFWRV9HRVRSQU5ET00KICAgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTIwOSw1NiArMTkzLDQ1IEBACiAgI2VuZGlmCiAgCiAgICAgICAgICBpZiAobiA8IDApIHsKLS0gICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTKSB7CistICAgICAgICAgICAgLyogRU5PU1lTOiBnZXRyYW5kb20oKSBzeXNjYWxsIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCAoYnV0CistICAgICAgICAgICAgICogbWF5YmUgc3VwcG9ydGVkIGJ5IHRoZSBob3N0IHdoaWNoIGJ1aWx0IFB5dGhvbikuIEVQRVJNOgorLSAgICAgICAgICAgICAqIGdldHJhbmRvbSgpIHN5c2NhbGwgYmxvY2tlZCBieSBTRUNDT01QIG9yIHNvbWV0aGluZyBlbHNlLiAqLwogKyAgICAgICAgICAgIC8qIEVOT1NZUzogdGhlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUga2VybmVsLgogKyAgICAgICAgICAgICAgIEVQRVJNOiB0aGUgc3lzY2FsbCBpcyBibG9ja2VkIGJ5IGEgc2VjdXJpdHkgcG9saWN5IChleDogU0VDQ09NUCkKICsgICAgICAgICAgICAgICBvciBzb21ldGhpbmcgZWxzZS4gKi8KLSsgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTIHx8IGVycm5vID09IEVQRVJNKSB7CisgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFUEVSTSkgewogICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICB9CiArCiAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotLSAgICAgICAgICAgICAgICAvKiBJZiB3ZSBmYWlsZWQgd2l0aCBFQUdBSU4sIHRoZSBlbnRyb3B5IHBvb2wgd2FzCi0tICAgICAgICAgICAgICAgICAqIHVuaW5pdGlhbGl6ZWQuIEluIHRoaXMgY2FzZSwgd2UgcmV0dXJuIGZhaWx1cmUgdG8gZmFsbAotLSAgICAgICAgICAgICAgICAgKiBiYWNrIHRvIHJlYWRpbmcgZnJvbSAvZGV2L3VyYW5kb20uCi0tICAgICAgICAgICAgICAgICAqCi0tICAgICAgICAgICAgICAgICAqIE5vdGU6IEluIHRoaXMgY2FzZSB0aGUgZGF0YSByZWFkIHdpbGwgbm90IGJlIHJhbmRvbSBzbwotLSAgICAgICAgICAgICAgICAgKiBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMuIFJldGFpbmluZwotLSAgICAgICAgICAgICAgICAgKiB0aGUgZXhpc3Rpbmcgc2VtYW50aWNzIGZvciBwcmFjdGljYWwgcHVycG9zZXMuICovCi0rICAgICAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtCi0rICAgICAgICAgICAgICAgICAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpYXplZCB5ZXQuIEluIHRoaXMgY2FzZSwgZmFsbCBiYWNrIG9uCi0rICAgICAgICAgICAgICAgICAgIHJlYWRpbmcgZnJvbSAvZGV2L3VyYW5kb20uCi0rCi0rICAgICAgICAgICAgICAgICAgIE5vdGU6IEluIHRoaXMgY2FzZSB0aGUgZGF0YSByZWFkIHdpbGwgbm90IGJlIHJhbmRvbSBzbwotKyAgICAgICAgICAgICAgICAgICBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMuIFJldGFpbmluZwotKyAgICAgICAgICAgICAgICAgICB0aGUgZXhpc3Rpbmcgc2VtYW50aWNzIGZvciBwcmFjdGljYWwgcHVycG9zZXMuICovCi0gICAgICAgICAgICAgICAgIGdldHJhbmRvbV93b3JrcyA9IDA7Ci0gICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBJbiB0aGlzIGNhc2UsIGZhbGwgYmFjayBvbgorQEAgLTIwMiwxNjkgKzE3MiwyMjUgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCiAgICAgICAgICAgICAgfQogIAogICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewogLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmICghcmFpc2UpCistICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKSB7CiAtICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwiKTsKLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICsgICAgICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiArICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKICsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgIH0KKyAKIC0gICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KLSsKICsgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgaWYgaXQgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KICAKLS0gICAgICAgICAgICBpZiAocmFpc2UpCi0rICAgICAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLS0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UgewogLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKLSsgICAgICAgICAgICB9CistICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIH0KICAKQEAgLTI2OSwxMiArMjQyLDE5IEBACiAgICAgIHJldHVybiAxOwogIH0KIC0jZW5kaWYKLSsKKyAKKy1zdGF0aWMgc3RydWN0IHsKKy0gICAgaW50IGZkOworLSAgICBkZXZfdCBzdF9kZXY7CistICAgIGlub190IHN0X2lubzsKKy19IHVyYW5kb21fY2FjaGUgPSB7IC0xIH07CiArI2VsaWYgZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpCiArI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKLSsKKyAKICsvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpOgotKworIAorLS8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCistICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCiArICAgLSBSZXR1cm4gMSBvbiBzdWNjZXNzCiArICAgLSBSZXR1cm4gMCBpZiBnZXRlbnRyb3B5KCkgc3lzY2FsbCBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IKICsgICAgIEVQRVJNKS4KQEAgLTI4MiwyNSArMjYyLDQ3IEBACiArICAgICBpZiBnZXRlbnRyb3B5KCkgZmFpbGVkIHdpdGggRUlOVFIsIHJhaXNlIGlzIG5vbi16ZXJvIGFuZCB0aGUgUHl0aG9uIHNpZ25hbAogKyAgICAgaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLCBvciBpZiBnZXRlbnRyb3B5KCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQKICsgICAgIGVycm9yLgotKworIAorLSAgIENhbGwgUHlfRmF0YWxFcnJvcigpIG9uIGVycm9yLiAqLworLXN0YXRpYyB2b2lkCistZGV2X3VyYW5kb21fbm9yYWlzZSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKICsgICBnZXRlbnRyb3B5KCkgaXMgcmV0cmllZCBpZiBpdCBmYWlsZWQgd2l0aCBFSU5UUjogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuICovCiArc3RhdGljIGludAogK3B5X2dldGVudHJvcHkoY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSt7CisgeworLSAgICBpbnQgZmQ7CistICAgIFB5X3NzaXplX3QgbjsKICsgICAgLyogSXMgZ2V0ZW50cm9weSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/IFNldCB0byAwIGlmCiArICAgICAgIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uICovCiArICAgIHN0YXRpYyBpbnQgZ2V0ZW50cm9weV93b3JrcyA9IDE7Ci0rCisgCistICAgIGFzc2VydCAoMCA8IHNpemUpOworLQorLSNpZmRlZiBQWV9HRVRSQU5ET00KKy0gICAgaWYgKHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDApID09IDEpIHsKKy0gICAgICAgIHJldHVybjsKICsgICAgaWYgKCFnZXRlbnRyb3B5X3dvcmtzKSB7CiArICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKworICAgICB9CistICAgIC8qIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTSwKKy0gICAgICAgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCistI2VuZGlmCisgCistICAgIGZkID0gX1B5X29wZW5fbm9yYWlzZSgiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworLSAgICBpZiAoZmQgPCAwKSB7CistICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKKy0gICAgfQogKyAgICB3aGlsZSAoc2l6ZSA+IDApIHsKICsgICAgICAgIC8qIGdldGVudHJvcHkoKSBpcyBsaW1pdGVkIHRvIHJldHVybmluZyB1cCB0byAyNTYgYnl0ZXMuIENhbGwgaXQKICsgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGlmIG1vcmUgYnl0ZXMgYXJlIHJlcXVlc3RlZC4gKi8KICsgICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlfTUlOKHNpemUsIDI1Nik7CiArICAgICAgICBpbnQgcmVzOwotKworIAorLSAgICB3aGlsZSAoMCA8IHNpemUpCistICAgIHsKKy0gICAgICAgIGRvIHsKKy0gICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOworLSAgICAgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOwogKyAgICAgICAgaWYgKHJhaXNlKSB7CiArICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogKyAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwpAQCAtMzA5LDcgKzMxMSwxMSBAQAogKyAgICAgICAgZWxzZSB7CiArICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7CiArICAgICAgICB9Ci0rCisgCistICAgICAgICBpZiAobiA8PSAwKSB7CistICAgICAgICAgICAgLyogcmVhZCgpIGZhaWxlZCBvciByZXR1cm5lZCAwIGJ5dGVzICovCistICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJlYWQgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iKTsKKy0gICAgICAgICAgICBicmVhazsKICsgICAgICAgIGlmIChyZXMgPCAwKSB7CiArICAgICAgICAgICAgLyogRU5PU1lTOiB0aGUgc3lzY2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4KICsgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCkBAIC0zMzQsNzEgKzM0MCw0NCBAQAogKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiArICAgICAgICAgICAgfQogKyAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgIGJ1ZmZlciArPSBuOworLSAgICAgICAgc2l6ZSAtPSBuOwogKwogKyAgICAgICAgYnVmZmVyICs9IGxlbjsKICsgICAgICAgIHNpemUgLT0gbGVuOwotKyAgICB9CisgICAgIH0KKy0gICAgY2xvc2UoZmQpOwogKyAgICByZXR1cm4gMTsKLSt9CisgfQogKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkgJiYgIWRlZmluZWQoc3VuKSAqLworIAorLS8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCistICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCisgCistICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisrc3RhdGljIHN0cnVjdCB7CisrICAgIGludCBmZDsKKysgICAgZGV2X3Qgc3RfZGV2OworKyAgICBpbm9fdCBzdF9pbm87CisrfSB1cmFuZG9tX2NhY2hlID0geyAtMSB9OwogKwotIAotIHN0YXRpYyBzdHJ1Y3QgewotICAgICBpbnQgZmQ7Ci1AQCAtMjE3LDEyNyArMjczLDEyMyBAQCBzdGF0aWMgc3RydWN0IHsKLSAgICAgaW5vX3Qgc3RfaW5vOwotIH0gdXJhbmRvbV9jYWNoZSA9IHsgLTEgfTsKLSAKICsvKiBSZWFkIHJhbmRvbSBieXRlcyBmcm9tIHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlOgotIAotLS8qIFJlYWQgc2l6ZSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSBpbnRvIGJ1ZmZlci4KLS0gICBDYWxsIFB5X0ZhdGFsRXJyb3IoKSBvbiBlcnJvci4gKi8KLS1zdGF0aWMgdm9pZAotLWRldl91cmFuZG9tX25vcmFpc2UodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0tewotLSAgICBpbnQgZmQ7Ci0tICAgIFB5X3NzaXplX3QgbjsKKysKICsgICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MKICsgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3IKLSAKLS0gICAgYXNzZXJ0ICgwIDwgc2l6ZSk7CisrCiArICAgUG9zc2libGUgY2F1c2VzIG9mIGVycm9yczoKLSAKLS0jaWZkZWYgUFlfR0VUUkFORE9NCi0tICAgIGlmIChweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAwKSA9PSAxKQotLSAgICAgICAgcmV0dXJuOwotLSAgICAvKiBnZXRyYW5kb20oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgZmFsbCBiYWNrCi0tICAgICAqIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCi0tI2VuZGlmCisrCiArICAgLSBvcGVuKCkgZmFpbGVkIHdpdGggRU5PRU5ULCBFTlhJTywgRU5PREVWLCBFQUNDRVM6IHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlCiArICAgICB3YXMgbm90IGZvdW5kLiBGb3IgZXhhbXBsZSwgaXQgd2FzIHJlbW92ZWQgbWFudWFsbHkgb3Igbm90IGV4cG9zZWQgaW4gYQogKyAgICAgY2hyb290IG9yIGNvbnRhaW5lci4KICsgICAtIG9wZW4oKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudCBlcnJvcgogKyAgIC0gZnN0YXQoKSBmYWlsZWQKICsgICAtIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMAotIAotLSAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLS0gICAgaWYgKGZkIDwgMCkKLS0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBvcGVuIC9kZXYvdXJhbmRvbSIpOworKwogKyAgIHJlYWQoKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KLSAKLS0gICAgd2hpbGUgKDAgPCBzaXplKQotLSAgICB7Ci0tICAgICAgICBkbyB7Ci0tICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLS0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLS0gICAgICAgIGlmIChuIDw9IDApCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgLyogc3RvcCBvbiBlcnJvciBvciBpZiByZWFkKHNpemUpIHJldHVybmVkIDAgKi8KLS0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmVhZCBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIpOwotLSAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgfQotLSAgICAgICAgYnVmZmVyICs9IG47Ci0tICAgICAgICBzaXplIC09IChQeV9zc2l6ZV90KW47Ci0tICAgIH0KLS0gICAgY2xvc2UoZmQpOwotLX0KKysKICsgICBUaGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBkZXZpY2UgaXMga2VwdCBvcGVuIGJldHdlZW4gY2FsbHMgdG8gYXZvaWQgdXNpbmcKICsgICBtYW55IGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBydW4gaW4gcGFyYWxsZWwgZnJvbSBtdWx0aXBsZSB0aHJlYWRzOgogKyAgIHNlZSB0aGUgaXNzdWUgIzE4NzU2LgpAQCAtNDA2LDkgKzM4NSw3IEBACiArICAgc3RfZGV2IGFuZCBzdF9pbm8gZmllbGRzIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IgKGZyb20gZnN0YXQoKSkgYXJlIGNhY2hlZCB0bwogKyAgIGNoZWNrIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2FzIHJlcGxhY2VkIGJ5IGEgZGlmZmVyZW50IGZpbGUgKHdoaWNoIGlzCiArICAgbGlrZWx5IGEgYnVnIGluIHRoZSBhcHBsaWNhdGlvbik6IHNlZSB0aGUgaXNzdWUgIzIxMjA3LgotIAotLS8qIFJlYWQgc2l6ZSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSBpbnRvIGJ1ZmZlci4KLS0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKysKICsgICBJZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyBjbG9zZWQgb3IgcmVwbGFjZWQsIG9wZW4gYSBuZXcgZmlsZSBkZXNjcmlwdG9yCiArICAgYnV0IGRvbid0IGNsb3NlIHRoZSBvbGQgZmlsZSBkZXNjcmlwdG9yOiBpdCBwcm9iYWJseSBwb2ludHMgdG8gc29tZXRoaW5nCiArICAgaW1wb3J0YW50IGZvciBzb21lIHRoaXJkLXBhcnR5IGNvZGUuICovCkBAIC00MjIsMjIgKzM5OSwyNCBAQAogLSNpZmRlZiBQWV9HRVRSQU5ET00KIC0gICAgaW50IHJlczsKIC0jZW5kaWYKLSAKKy0KIC0gICAgaWYgKHNpemUgPD0gMCkKIC0gICAgICAgIHJldHVybiAwOwotKyAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CiAgCiAtI2lmZGVmIFBZX0dFVFJBTkRPTQogLSAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKLS0gICAgaWYgKHJlcyA8IDApCistICAgIGlmIChyZXMgPCAwKSB7CiAtICAgICAgICByZXR1cm4gLTE7Ci0tICAgIGlmIChyZXMgPT0gMSkKKy0gICAgfQorLSAgICBpZiAocmVzID09IDEpIHsKIC0gICAgICAgIHJldHVybiAwOwotLSAgICAvKiBnZXRyYW5kb20oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgZmFsbCBiYWNrCi0tICAgICAqIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCistICAgIH0KKy0gICAgLyogZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLAorLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KIC0jZW5kaWYKLS0KKysgICAgaWYgKHJhaXNlKSB7CisrICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworIAogLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CiAtICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCiAtICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQpAQCAtNTE2LDggKzQ5NSw5IEBACiAgCiAtICAgIGRvIHsKIC0gICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotLSAgICAgICAgaWYgKG4gPT0gLTEpCistICAgICAgICBpZiAobiA9PSAtMSkgewogLSAgICAgICAgICAgIHJldHVybiAtMTsKKy0gICAgICAgIH0KIC0gICAgICAgIGlmIChuID09IDApIHsKIC0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogLSAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCkBAIC01NjYsNyArNTQ2LDcgQEAKICAgICAgcmV0dXJuIDA7CiAgfQogIAotQEAgLTM0OSw4ICs0MDEsOCBAQCBkZXZfdXJhbmRvbV9jbG9zZSh2b2lkKQorQEAgLTM3Niw4ICs0MDIsOCBAQCBkZXZfdXJhbmRvbV9jbG9zZSh2b2lkKQogICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOwogICAgICB9CiAgfQpAQCAtNTc2LDcgKzU1Niw3IEBACiAgCiAgLyogRmlsbCBidWZmZXIgd2l0aCBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBhIGxpbmVhciBjb25ncnVlbnQKICAgICBnZW5lcmF0b3IgKExDRyk6Ci1AQCAtMzczLDI5ICs0MjUsOTggQEAgbGNnX3VyYW5kb20odW5zaWduZWQgaW50IHgwLCB1bnNpZ25lZCBjaAorQEAgLTQwMCwzMSArNDI2LDEwMCBAQCBsY2dfdXJhbmRvbSh1bnNpZ25lZCBpbnQgeDAsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCiAgICAgIH0KICB9CiAgCkBAIC02NjEsNyArNjQxLDcgQEAKICAjZWxzZQogLSAgICByZXR1cm4gZGV2X3VyYW5kb21fcHl0aG9uKChjaGFyKilidWZmZXIsIHNpemUpOwogKyAgICByZXMgPSBweV9nZXRlbnRyb3B5KGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOwotICNlbmRpZgorKyNlbmRpZgogKyAgICBpZiAocmVzIDwgMCkgewogKyAgICAgICAgcmV0dXJuIC0xOwogKyAgICB9CkBAIC02NzMsOSArNjUzLDkgQEAKICsjZW5kaWYKICsKICsgICAgcmV0dXJuIGRldl91cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOwotKyNlbmRpZgotK30KLSsKKyAjZW5kaWYKKyB9CisgCiArLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSByYW5kb20KICsgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCiArICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgpAQCAtNjg1LDEwICs2NjUsMTIgQEAKICtfUHlPU19VUmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQogK3sKICsgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEpOwotIH0KLSAKKyt9CisrCiAgdm9pZAotQEAgLTQzNiwxMyArNTU3LDE0IEBAIF9QeVJhbmRvbV9Jbml0KHZvaWQpCisgX1B5UmFuZG9tX0luaXQodm9pZCkKKyB7CitAQCAtNDYzLDEzICs1NTgsMTQgQEAgX1B5UmFuZG9tX0luaXQodm9pZCkKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIHsKQEAgLTcxMCw3ICs2OTIsNyBAQAogICAgICB9CiAgfQogIAotQEAgLTQ1NCw4ICs1NzYsNiBAQCBfUHlSYW5kb21fRmluaSh2b2lkKQorQEAgLTQ4MSw4ICs1NzcsNiBAQCBfUHlSYW5kb21fRmluaSh2b2lkKQogICAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKICAgICAgICAgIGhDcnlwdFByb3YgPSAwOwogICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZmN2M5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwotCi1ERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIGxpYmZmaSBiemlwMiBkYiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiIKLVBSID0gIiR7SU5DX1BSfS4wIgotUFlUSE9OX01BSk1JTiA9ICIzLjUiCi1QWVRIT05fQklOQUJJPSAiJHtQWVRIT05fTUFKTUlOfW0iCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLWZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLWZpbGU6Ly8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi1maWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCi1maWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKLWZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKLWZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAotZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAotZmlsZTovL3R3ZWFrLU1VTFRJQVJDSC1mb3ItcG93ZXJwYy1saW51eC1nbnVzcGUucGF0Y2ggXAotJHtESVNUUk9fU1JDX1VSSX0gXAotIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uY3Vyc2Vzdy1pbmNsdWRlLXBhdGgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1zZXR1cC5weS1uby1ob3N0LWhlYWRlcnMtbGlicy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NldHVwLnB5LWZpbmQtbGlicmFyaWVzLWluLXN0YWdpbmctZGlycy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmFjLWZpeC1MSUJQTC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg5MDZlZmJhY2ZjZGM3YzNjOTE5OGFlZWZhZmQxNTllIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwMTBmNTYxMDBiOWI3NDI1OWViY2Q1ZDRiMjk1YTMyMzI0YjU4YjUxNzQwM2ExMGQxYTJhYTdjYjIyYmNhNDAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZiNjAyNTgxMzBlNGVkMTBkMzEwMTUxN2ViNWI5Mzg1IgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9oYXZlX2NoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbGNoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1TREtfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1FWFRSQV9PRU1BS0UgKz0gIkNST1NTX0NPTVBJTEU9eWVzIgotRVhUUkFfT0VDT05GICs9ICJDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIC0td2l0aG91dC1lbnN1cmVwaXAiCi0KLWV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX0JBU0UgPSAiJHtCfSIKLWV4cG9ydCBfUFlUSE9OX1BST0pFQ1RfU1JDID0gIiR7U30iCi1leHBvcnQgQ0NTSEFSRUQgPSAiLWZQSUMiCi0KLSMgRml4IGNyb3NzIGNvbXBpbGF0aW9uIG9mIGRpZmZlcmVudCBtb2R1bGVzCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLzoke0J9L2J1aWxkL2xpYi5saW51eC0ke1RBUkdFVF9BUkNIfS0ke1BZVEhPTl9NQUpNSU59OiR7U30vTGliOiR7U30vTGliL3BsYXQtbGludXgiCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotCWF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19jb21waWxlKCkgewotICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKLSAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eCoKLSAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyxeQ09ORklHVVJFX0xERkxBR1M9LiosQ09ORklHVVJFX0xERkxBR1M9LUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCU9QVD0iJHtDRkxBR1N9IiBsaWJweXRob24zLnNvCi0KLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJT1BUPSIke0NGTEFHU30iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKLQkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCi0KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnCi0KLQkjIHJlcnVuIHRoZSBidWlsZCBvbmNlIGFnYWluIHdpdGggb3JpZ2luYWwgbWFrZWZpbGUgdGhpcyB0aW1lCi0JIyBydW4gaW5zdGFsbCBpbiBhIHNlcGFyYXRlIHN0ZXAgdG8gYXZvaWQgY29tcGlsZS9pbnN0YWxsIHJhY2UKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAotCi0JIyBhdm9pZCBjb25mbGljdCB3aXRoIDJ0bzMgZnJvbSBQeXRob24gMgotCXJtIC1mICR7RH0vJHtiaW5kaXJ9LzJ0bzMKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gVEVSTUlORk9fRElSUz0nJHtzeXNjb25mZGlyfS90ZXJtaW5mbzovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8nCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJNYWtlZmlsZSIKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicHlfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1weV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCSMgY29weSBiYWNrIHRoZSBvbGQgTWFrZWZpbGUgdG8gZml4IHRhcmdldCBwYWNrYWdlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci19Ci0KLXJlcXVpcmUgcHl0aG9uLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCi1SUFJPVklERVNfJHtQTn0tY29yZSA9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmUgPSAiJHtQTn0tcmVhZGxpbmUiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1vcGVuc3NsIgotCi1GSUxFU18ke1BOfS0ydG8zICs9ICIke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59IgotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1weXZlbnYiCi1GSUxFU18ke1BOfS1weXZlbnYgKz0gIiR7YmluZGlyfS9weXZlbnYtJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHl2ZW52IgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMwotUEFDS0FHRVMgPSsgImxpYnB5dGhvbjMgbGlicHl0aG9uMy1zdGF0aWNkZXYiCi1GSUxFU19saWJweXRob24zID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi1GSUxFU19saWJweXRob24zLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0vbGlicHl0aG9uJHtQWVRIT05fQklOQUJJfS5hIgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgotCi0jIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gIiR7UE59LWNvcmUgJHtQTn0tZW1haWwgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyAke1BOfS1hcmdwYXJzZSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNkZjEyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIKQEAgLTAsMCArMSwyMjcgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIGxpYmZmaSBiemlwMiBkYiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiIKK1BSID0gIiR7SU5DX1BSfS4wIgorUFlUSE9OX01BSk1JTiA9ICIzLjUiCitQWVRIT05fQklOQUJJPSAiJHtQWVRIT05fTUFKTUlOfW0iCitESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCitESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKK2ZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCitmaWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCitmaWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKK2ZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKK2ZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAorZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAorZmlsZTovL3R3ZWFrLU1VTFRJQVJDSC1mb3ItcG93ZXJwYy1saW51eC1nbnVzcGUucGF0Y2ggXAorZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBcCiske0RJU1RST19TUkNfVVJJfSBcCisiCisKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgICAgIGZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkLW5jdXJzZXN3LWluY2x1ZGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy11c2UtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktZmluZC1saWJyYXJpZXMtaW4tc3RhZ2luZy1kaXJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91cHN0cmVhbS1yYW5kb20tZml4ZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vRml4LTI5NTE5LXdlYWtyZWYtc3Bld2luZy1leGNlcHRpb25zLWR1cmluZy1pbnRlcnAtZi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1N2QxZjhiZmJhYmY0ZjI1MDAyNzNmYjA3MDZlNmYyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZWZlMmFkNjU3NTg1NTQyM2FiNjMwZjViNTFhOGVmNmU1NTU2Zjc3NDU4NGMwNmJlYWI0OTI2ZjkzMGRkYmIwIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNjgwZWQ5OWFhNjBkMzUwYzY1YTY1OTE0NDk0MjA3ZSIKKworIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKKworQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfaGF2ZV9jaGZsYWdzPW5vIFwKKyAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xjaGZsYWdzPW5vIFwKKyAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKKyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgorU0RLX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgorRVhUUkFfT0VNQUtFICs9ICJDUk9TU19DT01QSUxFPXllcyIKK0VYVFJBX09FQ09ORiArPSAiQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyAtLXdpdGhvdXQtZW5zdXJlcGlwIgorCitleHBvcnQgQ1JPU1NfQ09NUElMRSA9ICIke1RBUkdFVF9QUkVGSVh9IgorZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9CQVNFID0gIiR7Qn0iCitleHBvcnQgX1BZVEhPTl9QUk9KRUNUX1NSQyA9ICIke1N9IgorZXhwb3J0IENDU0hBUkVEID0gIi1mUElDIgorCisjIEZpeCBjcm9zcyBjb21waWxhdGlvbiBvZiBkaWZmZXJlbnQgbW9kdWxlcworZXhwb3J0IENST1NTUFlUSE9OUEFUSCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC86JHtCfS9idWlsZC9saWIubGludXgtJHtUQVJHRVRfQVJDSH0tJHtQWVRIT05fTUFKTUlOfToke1N9L0xpYjoke1N9L0xpYi9wbGF0LWxpbnV4IgorCisjIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCitQWVRIT05MU0JPUFRTID0gIiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKKwlhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCisgICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgqCisgICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorICAgICAgICAgICAgICAgICR7U30vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2RsZmNuLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2Nkcm9tLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L25ldGluZXQvaW4uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vc3lzL3R5cGVzLmgKKyAgICAgICAgc2VkIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIC1pICoucHkKKyAgICAgICAgY2QgLQorCisKKwkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICisJc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCisKKwlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCisJZmkKKwlzZWQgLWkgLWUgJ3MsXkNPTkZJR1VSRV9MREZMQUdTPS4qLENPTkZJR1VSRV9MREZMQUdTPS1MLiAtTCR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAorCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCisJCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJTWFrZWZpbGUKKwkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCisJIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290CisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKKwkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIgbGlicHl0aG9uMy5zbworCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCU9QVD0iJHtDRkxBR1N9IgorfQorCitkb19pbnN0YWxsKCkgeworCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCisJIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQorCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZworCisJIyByZXJ1biB0aGUgYnVpbGQgb25jZSBhZ2FpbiB3aXRoIG9yaWdpbmFsIG1ha2VmaWxlIHRoaXMgdGltZQorCSMgcnVuIGluc3RhbGwgaW4gYSBzZXBhcmF0ZSBzdGVwIHRvIGF2b2lkIGNvbXBpbGUvaW5zdGFsbCByYWNlCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9CisJCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKKworCSMgYXZvaWQgY29uZmxpY3Qgd2l0aCAydG8zIGZyb20gUHl0aG9uIDIKKwlybSAtZiAke0R9LyR7YmluZGlyfS8ydG8zCisKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCisKKwlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQorCWZpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKwkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQorCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCisJIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQorCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQorfQorCityZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYworCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlBST1ZJREVTXyR7UE59LW1vZHVsZXMgPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfS1jb3JlID0gIiR7UE59LXJlYWRsaW5lIgorUlJFQ09NTUVORFNfJHtQTn0tY3J5cHQgPSAib3BlbnNzbCIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstb3BlbnNzbCIKKworRklMRVNfJHtQTn0tMnRvMyArPSAiJHtiaW5kaXJ9LzJ0bzMtJHtQWVRIT05fTUFKTUlOfSIKK0ZJTEVTXyR7UE59LXB5ZG9jICs9ICIke2JpbmRpcn0vcHlkb2Mke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weWRvYzMiCitGSUxFU18ke1BOfS1pZGxlICs9ICIke2JpbmRpcn0vaWRsZTMgJHtiaW5kaXJ9L2lkbGUke1BZVEhPTl9NQUpNSU59IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl2ZW52IgorRklMRVNfJHtQTn0tcHl2ZW52ICs9ICIke2JpbmRpcn0vcHl2ZW52LSR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5dmVudiIKKworIyBwYWNrYWdlIGxpYnB5dGhvbjMKK1BBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgorRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgorRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9CSU5BQkl9L2xpYnB5dGhvbiR7UFlUSE9OX0JJTkFCSX0uYSIKK0lOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKKworIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQorUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCitSREVQRU5EU18ke1BOfS1taXNjICs9ICIke1BOfS1jb3JlICR7UE59LWVtYWlsICR7UE59LWNvZGVjcyAke1BOfS10ZXh0dXRpbHMgJHtQTn0tYXJncGFyc2UiCitSREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKKworIyBjYXRjaCBtYW5wYWdlCitQQUNLQUdFUyArPSAiJHtQTn0tbWFuIgorRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiCmluZGV4IDRlZjk5NTIuLjc1NGMwMjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xMy5iYgpAQCAtMSw1ICsxLDUgQEAKIHJlcXVpcmUgcHl0aG9uLmluYwotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBkYiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIgorREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIgogUFIgPSAiJHtJTkNfUFJ9IgogCiBESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCkBAIC0yNyw2ICsyNyw4IEBACiAgIGZpbGU6Ly91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaCBcCiAgIGZpbGU6Ly9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIFwKICAgZmlsZTovL0Rvbi10LXVzZS1nZXRlbnRyb3B5LW9uLUxpbnV4LnBhdGNoIFwKKyAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAorICBmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCkBAIC0zNyw2ICszOSw5IEBACiAKIEVYVFJBX09FQ09ORiArPSAiYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8iCiAKK1BBQ0tBR0VDT05GSUcgPz89ICJiZGIiCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLCxkYiIKKwogZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKIAlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKICAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCkBAIC0xMTYsNiArMTIxLDEwIEBACiAJZmkKIAogCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9NQUpNSU59L3B5Y29uZmlnLmgKKworICAgIGlmIFsgLXogIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdiZGInLCBkKX0iIF07IHRoZW4KKyAgICAgICAgcm0gLXJmICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYnNkZGIKKyAgICBmaQogfQogCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewpAQCAtMTUyLDcgKzE2MSw5IEBACiBQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKIEZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCiBSREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyIKKworIyBwdGVzdAorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyIKICNpbmhlcml0IHB0ZXN0IGFmdGVyICJyZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYyIgc28gUEFDS0FHRVMgZG9lc24ndCBnZXQgb3ZlcndyaXR0ZW4KIGluaGVyaXQgcHRlc3QKIApAQCAtMTYyLDEwICsxNzMsMjMgQEAKIAlzZWQgLWUgczpMSUJESVIvcHl0aG9uL3B0ZXN0OiR7UFRFU1RfUEFUSH06ZyBcCiAJIC1lIHM6TElCRElSOiR7bGliZGlyfTpnIFwKIAkgLWkgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CisKKwkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworCXNlZCAtaSBcCisJCS1lICdzOi0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisJICAgIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkke0R9LyR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKIH0KIAogIyBjYXRjaCBtYW5wYWdlCiBQQUNLQUdFUyArPSAiJHtQTn0tbWFuIgogRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgogCisjIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKK1JERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgppbmRleCAyN2Q1MzE1Li5kODZiMTU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgpAQCAtMjAsNiArMjAsNSBAQAogCWluc3RhbGwgdHVuY3RsICR7RH0ke2JpbmRpcn0vCiB9CiAKLVJNX1dPUktfRVhDTFVERV9JVEVNUyArPSAicmVjaXBlLXN5c3Jvb3QtbmF0aXZlIgogREVQRU5EUyArPSAicWVtdS1uYXRpdmUiCiBhZGR0YXNrIGFkZHRvX3JlY2lwZV9zeXNyb290IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QgYmVmb3JlIGRvX2J1aWxkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKaW5kZXggMGUxNDExYS4uMmExZDE0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjYsNyArMjYsNiBAQAogICAgIC0tZGlzYWJsZS1zdHJpcCBcCiAgICAgLS1kaXNhYmxlLXdlcnJvciBcCiAgICAgLS10YXJnZXQtbGlzdD0ke0BnZXRfcWVtdV90YXJnZXRfbGlzdChkKX0gXAotICAgIC0td2l0aC1zeXN0ZW0tcGl4bWFuIFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCiAgICAgIgogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPSR7VVNSQklOUEFUSH0vcHl0aG9uMi43IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFkYmFmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2gKQEAgLTAsMCArMSw3MTkgQEAKK0Zyb20gNWU5ZGQ5MDYzZjUxNDQ0N2VhNGY1NDA0Njc5M2Y0ZjAxYzI5N2VkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgorRGF0ZTogU2F0LCAzMSBEZWMgMjAxNiAxMToyMzozMiAtMDUwMAorU3ViamVjdDogW1BBVENIIDQvNF0gQWRkIHN1cHBvcnQgZm9yIFZNIHN1c3BlbmQvcmVzdW1lIGZvciBUUE0gVElTCisKK0V4dGVuZCB0aGUgVFBNIFRJUyBjb2RlIHRvIHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUuIEluIGNhc2UgYSBjb21tYW5kCitpcyBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIGV4dGVybmFsIFRQTSB3aGVuIHN1c3BlbmRpbmcsIHdhaXQgZm9yIHRoZSBjb21tYW5kCit0byBjb21wbGV0ZSB0byBjYXRjaCB0aGUgcmVzdWx0LiBJbiBjYXNlIHRoZSBib3R0b20gaGFsZiBkaWQgbm90IHJ1biwKK3J1biB0aGUgb25lIGZ1bmN0aW9uIHRoZSBib3R0b20gaGFsZiBpcyBzdXBwb3NlZCB0byBydW4uIFRoaXMgdGhlbgorbWFrZXMgdGhlIHJlc3VtZSBvcGVyYXRpb24gd29yay4KKworVGhlIHBhc3N0aHJvdWdoIGJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRpb24KK2FuZCBpcyB0aGVyZWZvcmUgYmxvY2tlZCBmcm9tIHN1c3BlbmQvcmVzdW1lIGFuZCBtaWdyYXRpb24uCisKK1RoZSBDVVNFIFRQTSdzIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgYXJlIHRlc3RlZCBhbmQgaWYgc3VmZmljaWVudAorY2FwYWJpbGl0aWVzIGFyZSBpbXBsZW1lbnRlZCwgc3VzcGVuZC9yZXN1bWUsIHNuYXBzaG90dGluZyBhbmQKK21pZ3JhdGlvbiBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBDVVNFIFRQTS4KKworU2lnbmVkLW9mZi1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9saXN0cy5ub25nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTYtMDYvbXNnMDAyNTIuaHRtbF0KK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKy0tLQorIGh3L3RwbS90cG1fcGFzc3Rocm91Z2guYyAgICAgfCAxMzAgKysrKysrKysrKysrKysrKysrKysrKystLQorIGh3L3RwbS90cG1fdGlzLmMgICAgICAgICAgICAgfCAxMzcgKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyBody90cG0vdHBtX3Rpcy5oICAgICAgICAgICAgIHwgICAyICsKKyBody90cG0vdHBtX3V0aWwuYyAgICAgICAgICAgIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBody90cG0vdHBtX3V0aWwuaCAgICAgICAgICAgIHwgICA3ICsrCisgaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaCB8ICAxMiArKysKKyA2IGZpbGVzIGNoYW5nZWQsIDUwMyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCitpbmRleCA0NDczOWViYWQyLi5iYzgwNzJkMGJjIDEwMDY0NAorLS0tIGEvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCisrKysgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKK0BAIC0zNCw2ICszNCw4IEBACisgI2luY2x1ZGUgInRwbV90aXMuaCIKKyAjaW5jbHVkZSAidHBtX3V0aWwuaCIKKyAjaW5jbHVkZSAidHBtX2lvY3RsLmgiCisrI2luY2x1ZGUgIm1pZ3JhdGlvbi9taWdyYXRpb24uaCIKKysjaW5jbHVkZSAicWFwaS9lcnJvci5oIgorIAorICNkZWZpbmUgREVCVUdfVFBNIDAKKyAKK0BAIC00OSw2ICs1MSw3IEBACisgI2RlZmluZSBUWVBFX1RQTV9DVVNFICJ0cG0tY3VzZSIKKyAKKyBzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRwbV9wYXNzdGhyb3VnaF9kcml2ZXI7Cisrc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3RwbV9jdXNlOworIAorIC8qIGRhdGEgc3RydWN0dXJlcyAqLworIHR5cGVkZWYgc3RydWN0IFRQTVBhc3N0aHJ1VGhyZWFkUGFyYW1zIHsKK0BAIC03OSw2ICs4MiwxMCBAQCBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSB7CisgICAgIFFlbXVNdXRleCBzdGF0ZV9sb2NrOworICAgICBRZW11Q29uZCBjbWRfY29tcGxldGU7ICAvKiBzaW5nbmFsZWQgb25jZSB0cG1fYnVzeSBpcyBmYWxzZSAqLworICAgICBib29sIHRwbV9idXN5OworKworKyAgICBFcnJvciAqbWlncmF0aW9uX2Jsb2NrZXI7CisrCisrICAgIFRQTUJsb2JCdWZmZXJzIHRwbV9ibG9iczsKKyB9OworIAorIHR5cGVkZWYgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgVFBNUGFzc3RocnVTdGF0ZTsKK0BAIC0zMDYsNiArMzEzLDEwIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9zaHV0ZG93bihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICB9CisgICAgIH0KKysgICAgaWYgKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpIHsKKysgICAgICAgIG1pZ3JhdGVfZGVsX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7CisrICAgICAgICBlcnJvcl9mcmVlKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOworKyAgICB9CisgfQorIAorIC8qCitAQCAtMzYwLDEyICszNzEsMTQgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9jaGVja19jYXBzKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKKyAvKgorICAqIEluaXRpYWxpemUgdGhlIGV4dGVybmFsIENVU0UgVFBNCisgICovCistc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKKytzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3Jlc3VtZSkKKyB7CisgICAgIGludCByYyA9IDA7CistICAgIHB0bV9pbml0IGluaXQgPSB7CistICAgICAgICAudS5yZXEuaW5pdF9mbGFncyA9IFBUTV9JTklUX0ZMQUdfREVMRVRFX1ZPTEFUSUxFLAorLSAgICB9OworKyAgICBwdG1faW5pdCBpbml0OworKyAgICBpZiAoaXNfcmVzdW1lKSB7CisrICAgICAgICBpbml0LnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRTsKKysgICAgfQorIAorICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgeworICAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fSU5JVCwgJmluaXQpIDwgMCkgeworQEAgLTM5NCw3ICs0MDcsNyBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zdGFydHVwX3RwbShUUE1CYWNrZW5kICp0YikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX3B0LT50cG1fdGhyZWFkX3BhcmFtcyk7CisgCistICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KTsKKysgICAgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIGZhbHNlKTsKKyAKKyAgICAgcmV0dXJuIDA7CisgfQorQEAgLTQ2Niw2ICs0NzksMzIgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfcmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIsCisgICAgIHJldHVybiByYzsKKyB9CisgCisrc3RhdGljIGludCB0cG1fY3VzZV9nZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKKyt7CisrICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7CisrCisrICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKKysKKysgICAgcmV0dXJuIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCBkZWNyeXB0ZWRfYmxvYnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMpOworK30KKysKKytzdGF0aWMgaW50IHRwbV9jdXNlX3NldF9zdGF0ZV9ibG9icyhUUE1CYWNrZW5kICp0YiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQorK3sKKysgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKKysKKysgICAgYXNzZXJ0KFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpOworKworKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYnModHBtX3B0LT50cG1fZmQsIHRwbV9ibG9icykpIHsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIHJldHVybiB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgdHJ1ZSk7CisrfQorKworIHN0YXRpYyBib29sIHRwbV9wYXNzdGhyb3VnaF9nZXRfc3RhcnR1cF9lcnJvcihUUE1CYWNrZW5kICp0YikKKyB7CisgICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7CitAQCAtNDg4LDcgKzUyNyw3IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9kZWxpdmVyX3JlcXVlc3QoVFBNQmFja2VuZCAqdGIpCisgeworICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOworIAorLSAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIFJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCisrICAgIC8qIFRQTSBjb25zaWRlcmVkIGJ1c3kgb25jZSBUUE0gcmVxdWVzdCBzY2hlZHVsZWQgZm9yIHByb2Nlc3NpbmcgKi8KKyAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOworICAgICB0cG1fcHQtPnRwbV9idXN5ID0gdHJ1ZTsKKyAgICAgcWVtdV9tdXRleF91bmxvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7CitAQCAtNjAxLDYgKzY0MCwyNSBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9vcGVuX3N5c2ZzX2NhbmNlbChUUE1CYWNrZW5kICp0YikKKyAgICAgcmV0dXJuIGZkOworIH0KKyAKKytzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfYmxvY2tfbWlncmF0aW9uKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKKyt7CisrICAgIHB0bV9jYXAgY2FwczsKKysKKysgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKKysgICAgICAgIGNhcHMgPSBQVE1fQ0FQX0dFVF9TVEFURUJMT0IgfCBQVE1fQ0FQX1NFVF9TVEFURUJMT0IgfAorKyAgICAgICAgICAgICAgIFBUTV9DQVBfU1RPUDsKKysgICAgICAgIGlmICghVFBNX0NVU0VfSU1QTEVNRU5UU19BTEwodHBtX3B0LCBjYXBzKSkgeworKyAgICAgICAgICAgIGVycm9yX3NldGcoJnRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBDVVNFIFRQTSBsYWNrcyBuZWNlc3NhcnkgY2FwYWJpbGl0aWVzIik7CisrICAgICAgICAgICAgbWlncmF0ZV9hZGRfYmxvY2tlcih0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKKysgICAgICAgIH0KKysgICAgfSBlbHNlIHsKKysgICAgICAgIGVycm9yX3NldGcoJnRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIsCisrICAgICAgICAgICAgICAgICAgICJNaWdyYXRpb24gZGlzYWJsZWQ6IFBhc3N0aHJvdWdoIFRQTSBkb2VzIG5vdCBzdXBwb3J0IG1pZ3JhdGlvbiIpOworKyAgICAgICAgbWlncmF0ZV9hZGRfYmxvY2tlcih0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKKysgICAgfQorK30KKysKKyBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9oYW5kbGVfZGV2aWNlX29wdHMoUWVtdU9wdHMgKm9wdHMsIFRQTUJhY2tlbmQgKnRiKQorIHsKKyAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKK0BAIC02NDIsNyArNzAwLDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKKyAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7CisgICAgICAgICB9CisgICAgICAgICAvKiBpbml0IFRQTSBmb3IgcHJvYmluZyAqLworLSAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KSkgeworKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSkpIHsKKyAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7CisgICAgICAgICB9CisgICAgIH0KK0BAIC02NTksNiArNzE3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKKyAgICAgICAgIH0KKyAgICAgfQorIAorKyAgICB0cG1fcGFzc3Rocm91Z2hfYmxvY2tfbWlncmF0aW9uKHRwbV9wdCk7CisgCisgICAgIHJldHVybiAwOworIAorQEAgLTc2NiwxMCArODI1LDEzIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2luaXQoT2JqZWN0ICpvYmopCisgCisgICAgIHFlbXVfbXV0ZXhfaW5pdCgmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKKyAgICAgcWVtdV9jb25kX2luaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlKTsKKysKKysgICAgdm1zdGF0ZV9yZWdpc3RlcihOVUxMLCAtMSwgJnZtc3RhdGVfdHBtX2N1c2UsIG9iaik7CisgfQorIAorIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2ZpbmFsaXplKE9iamVjdCAqb2JqKQorIHsKKysgICAgdm1zdGF0ZV91bnJlZ2lzdGVyKE5VTEwsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOworIH0KKyAKKyBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqa2xhc3MsIHZvaWQgKmRhdGEpCitAQCAtODAyLDYgKzg2NCw2MCBAQCBzdGF0aWMgY29uc3QgY2hhciAqdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY3JlYXRlX2Rlc2Modm9pZCkKKyAgICAgcmV0dXJuICJDVVNFIFRQTSBiYWNrZW5kIGRyaXZlciI7CisgfQorIAorK3N0YXRpYyB2b2lkIHRwbV9jdXNlX3ByZV9zYXZlKHZvaWQgKm9wYXF1ZSkKKyt7CisrICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IG9wYXF1ZTsKKysgICAgVFBNQmFja2VuZCAqdGIgPSAmdHBtX3B0LT5wYXJlbnQ7CisrCisrICAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7CisrICAgICAvKiB3YWl0IGZvciBUUE0gdG8gZmluaXNoIHByb2Nlc3NpbmcgKi8KKysgICAgIGlmICh0cG1fcHQtPnRwbV9idXN5KSB7CisrICAgICAgICBxZW11X2NvbmRfd2FpdCgmdHBtX3B0LT5jbWRfY29tcGxldGUsICZ0cG1fcHQtPnN0YXRlX2xvY2spOworKyAgICAgfQorKyAgICAgcWVtdV9tdXRleF91bmxvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7CisrCisrICAgIC8qIGdldCB0aGUgZGVjcnlwdGVkIHN0YXRlIGJsb2JzIGZyb20gdGhlIFRQTSAqLworKyAgICB0cG1fY3VzZV9nZXRfc3RhdGVfYmxvYnModGIsIFRSVUUsICZ0cG1fcHQtPnRwbV9ibG9icyk7CisrfQorKworK3N0YXRpYyBpbnQgdHBtX2N1c2VfcG9zdF9sb2FkKHZvaWQgKm9wYXF1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyc2lvbl9pZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKyt7CisrICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IG9wYXF1ZTsKKysgICAgVFBNQmFja2VuZCAqdGIgPSAmdHBtX3B0LT5wYXJlbnQ7CisrCisrICAgIHJldHVybiB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnModGIsICZ0cG1fcHQtPnRwbV9ibG9icyk7CisrfQorKworK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZSA9IHsKKysgICAgLm5hbWUgPSAiY3VzZS10cG0iLAorKyAgICAudmVyc2lvbl9pZCA9IDEsCisrICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAorKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCisrICAgIC5wcmVfc2F2ZSAgPSB0cG1fY3VzZV9wcmVfc2F2ZSwKKysgICAgLnBvc3RfbG9hZCA9IHRwbV9jdXNlX3Bvc3RfbG9hZCwKKysgICAgLmZpZWxkcyA9IChWTVN0YXRlRmllbGRbXSkgeworKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCisrICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMucGVybWFuZW50LnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMucGVybWFuZW50LmJ1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNUGFzc3RocnVTdGF0ZSwgMSwgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplKSwKKysKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy52b2xhdGlsX2ZsYWdzLCBUUE1QYXNzdGhydVN0YXRlKSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy52b2xhdGlsLnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5idWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy52b2xhdGlsLnNpemUpLAorKworKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZV9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCisrICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMuc2F2ZXN0YXRlLnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMuc2F2ZXN0YXRlLmJ1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNUGFzc3RocnVTdGF0ZSwgMSwgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplKSwKKysgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQorKyAgICB9CisrfTsKKysKKyBzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRwbV9jdXNlX2RyaXZlciA9IHsKKyAgICAgLnR5cGUgICAgICAgICAgICAgICAgICAgICA9IFRQTV9UWVBFX0NVU0VfVFBNLAorICAgICAub3B0cyAgICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2NtZGxpbmVfb3B0cywKK2RpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5jIGIvaHcvdHBtL3RwbV90aXMuYworaW5kZXggMTRkOWU4M2VhMi4uOWI2NjBjZjczNyAxMDA2NDQKKy0tLSBhL2h3L3RwbS90cG1fdGlzLmMKKysrKyBiL2h3L3RwbS90cG1fdGlzLmMKK0BAIC0zNjgsNiArMzY4LDggQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKKyAgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKKyAgICAgdWludDhfdCBsb2N0eSA9IHMtPmxvY3R5X251bWJlcjsKKyAKKysgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSBmYWxzZTsKKysKKyAgICAgcWVtdV9tdXRleF9sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKKyAKKyAgICAgdHBtX3Rpc19zdHNfc2V0KCZ0aXMtPmxvY1tsb2N0eV0sCitAQCAtNDE1LDYgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9jYihUUE1TdGF0ZSAqcywgdWludDhfdCBsb2N0eSwKKyAgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOworIAorICAgICBxZW11X2JoX3NjaGVkdWxlKHRpcy0+YmgpOworKworKyAgICB0aXMtPmJoX3NjaGVkdWxlZCA9IHRydWU7CisgfQorIAorIC8qCitAQCAtMTAzMCw5ICsxMDM0LDE0MCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3Jlc2V0KERldmljZVN0YXRlICpkZXYpCisgICAgIHRwbV90aXNfZG9fc3RhcnR1cF90cG0ocyk7CisgfQorIAorKworKy8qIHBlcnNpc3RlbnQgc3RhdGUgaGFuZGxpbmcgKi8KKysKKytzdGF0aWMgdm9pZCB0cG1fdGlzX3ByZV9zYXZlKHZvaWQgKm9wYXF1ZSkKKyt7CisrICAgIFRQTVN0YXRlICpzID0gb3BhcXVlOworKyAgICBUUE1USVNFbXVTdGF0ZSAqdGlzID0gJnMtPnMudGlzOworKyAgICB1aW50OF90IGxvY3R5ID0gdGlzLT5hY3RpdmVfbG9jdHk7CisrCisrICAgIERQUklOVEYoInRwbV90aXM6IHN1c3BlbmQ6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAorKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOworKyNpZmRlZiBERUJVR19USVMKKysgICAgdHBtX3Rpc19kdW1wX3N0YXRlKG9wYXF1ZSwgMCk7CisrI2VuZGlmCisrCisrICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7CisrCisrICAgIC8qIHdhaXQgZm9yIG91dHN0YW5kaW5nIHJlcXVlc3QgdG8gY29tcGxldGUgKi8KKysgICAgaWYgKFRQTV9USVNfSVNfVkFMSURfTE9DVFkobG9jdHkpICYmCisrICAgICAgICB0aXMtPmxvY1tsb2N0eV0uc3RhdGUgPT0gVFBNX1RJU19TVEFURV9FWEVDVVRJT04pIHsKKysgICAgICAgIC8qCisrICAgICAgICAgKiBJZiB3ZSBnZXQgaGVyZSB3aGVuIHRoZSBiaCBpcyBzY2hlZHVsZWQgYnV0IGRpZCBub3QgcnVuLAorKyAgICAgICAgICogd2Ugd29uJ3QgZ2V0IG5vdGlmaWVkLi4uCisrICAgICAgICAgKi8KKysgICAgICAgIGlmICghdGlzLT5iaF9zY2hlZHVsZWQpIHsKKysgICAgICAgICAgICAvKiBiYWNrZW5kIHRocmVhZCB0byBub3RpZnkgdXMgKi8KKysgICAgICAgICAgICBxZW11X2NvbmRfd2FpdCgmcy0+Y21kX2NvbXBsZXRlLCAmcy0+c3RhdGVfbG9jayk7CisrICAgICAgICB9CisrICAgICAgICBpZiAodGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7CisrICAgICAgICAgICAgLyogYm90dG9tIGhhbGYgZGlkIG5vdCBydW4gLSBydW4gaXRzIGZ1bmN0aW9uICovCisrICAgICAgICAgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOworKyAgICAgICAgICAgIHRwbV90aXNfcmVjZWl2ZV9iaChvcGFxdWUpOworKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOworKworKyAgICAvKiBjb3B5IGN1cnJlbnQgYWN0aXZlIHJlYWQgb3Igd3JpdGUgYnVmZmVyIGludG8gdGhlIGJ1ZmZlcgorKyAgICAgICB3cml0dGVuIHRvIGRpc2sgKi8KKysgICAgaWYgKFRQTV9USVNfSVNfVkFMSURfTE9DVFkobG9jdHkpKSB7CisrICAgICAgICBzd2l0Y2ggKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSkgeworKyAgICAgICAgY2FzZSBUUE1fVElTX1NUQVRFX1JFQ0VQVElPTjoKKysgICAgICAgICAgICBtZW1jcHkodGlzLT5idWYsCisrICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5idWZmZXIsCisrICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAorKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLndfYnVmZmVyLnNpemUpKTsKKysgICAgICAgICAgICB0aXMtPm9mZnNldCA9IHRpcy0+bG9jW2xvY3R5XS53X29mZnNldDsKKysgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBUUE1fVElTX1NUQVRFX0NPTVBMRVRJT046CisrICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAorKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKKysgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5yX2J1ZmZlci5zaXplKSk7CisrICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQ7CisrICAgICAgICBicmVhazsKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgLyogbGVhayBub3RoaW5nICovCisrICAgICAgICAgICAgbWVtc2V0KHRpcy0+YnVmLCAweDAsIHNpemVvZih0aXMtPmJ1ZikpOworKyAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgIH0KKyt9CisrCisrc3RhdGljIGludCB0cG1fdGlzX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyc2lvbl9pZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKyt7CisrICAgIFRQTVN0YXRlICpzID0gb3BhcXVlOworKyAgICBUUE1USVNFbXVTdGF0ZSAqdGlzID0gJnMtPnMudGlzOworKworKyAgICB1aW50OF90IGxvY3R5ID0gdGlzLT5hY3RpdmVfbG9jdHk7CisrCisrICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgeworKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKKysgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046CisrICAgICAgICAgICAgbWVtY3B5KHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5idWZmZXIsCisrICAgICAgICAgICAgICAgICAgIHRpcy0+YnVmLAorKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKKysgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7CisrICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLndfb2Zmc2V0ID0gdGlzLT5vZmZzZXQ7CisrICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgorKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKKysgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCisrICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOworKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5yX29mZnNldCA9IHRpcy0+b2Zmc2V0OworKyAgICAgICAgYnJlYWs7CisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgRFBSSU5URigidHBtX3RpczogcmVzdW1lIDogbG9jdHkgPSAlZCA6IHJfb2Zmc2V0ID0gJWQsIHdfb2Zmc2V0ID0gJWRcbiIsCisrICAgICAgICAgICAgbG9jdHksIHRpcy0+bG9jWzBdLnJfb2Zmc2V0LCB0aXMtPmxvY1swXS53X29mZnNldCk7CisrCisrICAgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfbG9jdHkgPSB7CisrICAgIC5uYW1lID0gImxvYyIsCisrICAgIC52ZXJzaW9uX2lkID0gMSwKKysgICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDAsCisrICAgIC5taW5pbXVtX3ZlcnNpb25faWRfb2xkID0gMCwKKysgICAgLmZpZWxkcyAgICAgID0gKFZNU3RhdGVGaWVsZFtdKSB7CisrICAgICAgICBWTVNUQVRFX1VJTlQzMihzdGF0ZSwgVFBNTG9jYWxpdHkpLAorKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaW50ZSwgVFBNTG9jYWxpdHkpLAorKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaW50cywgVFBNTG9jYWxpdHkpLAorKyAgICAgICAgVk1TVEFURV9VSU5UOChhY2Nlc3MsIFRQTUxvY2FsaXR5KSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHN0cywgVFBNTG9jYWxpdHkpLAorKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaWZhY2VfaWQsIFRQTUxvY2FsaXR5KSwKKysgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKSwKKysgICAgfQorK307CisrCisgc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3RwbV90aXMgPSB7CisgICAgIC5uYW1lID0gInRwbSIsCistICAgIC51bm1pZ3JhdGFibGUgPSAxLAorKyAgICAudmVyc2lvbl9pZCA9IDEsCisrICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAorKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCisrICAgIC5wcmVfc2F2ZSAgPSB0cG1fdGlzX3ByZV9zYXZlLAorKyAgICAucG9zdF9sb2FkID0gdHBtX3Rpc19wb3N0X2xvYWQsCisrICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHMudGlzLm9mZnNldCwgVFBNU3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9CVUZGRVIocy50aXMuYnVmLCBUUE1TdGF0ZSksCisrICAgICAgICBWTVNUQVRFX1VJTlQ4KHMudGlzLmFjdGl2ZV9sb2N0eSwgVFBNU3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hYm9ydGluZ19sb2N0eSwgVFBNU3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5uZXh0X2xvY3R5LCBUUE1TdGF0ZSksCisrCisrICAgICAgICBWTVNUQVRFX1NUUlVDVF9BUlJBWShzLnRpcy5sb2MsIFRQTVN0YXRlLCBUUE1fVElTX05VTV9MT0NBTElUSUVTLCAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1zdGF0ZV9sb2N0eSwgVFBNTG9jYWxpdHkpLAorKworKyAgICAgICAgVk1TVEFURV9FTkRfT0ZfTElTVCgpCisrICAgIH0KKyB9OworIAorIHN0YXRpYyBQcm9wZXJ0eSB0cG1fdGlzX3Byb3BlcnRpZXNbXSA9IHsKK2RpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5oIGIvaHcvdHBtL3RwbV90aXMuaAoraW5kZXggYTFkZjQxZmEyMS4uYjdmYzBlYTFhOSAxMDA2NDQKKy0tLSBhL2h3L3RwbS90cG1fdGlzLmgKKysrKyBiL2h3L3RwbS90cG1fdGlzLmgKK0BAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYgc3RydWN0IFRQTUxvY2FsaXR5IHsKKyAKKyB0eXBlZGVmIHN0cnVjdCBUUE1USVNFbXVTdGF0ZSB7CisgICAgIFFFTVVCSCAqYmg7CisrICAgIGJvb2wgYmhfc2NoZWR1bGVkOyAvKiBiaCBzY2hlZHVsZWQgYnV0IGRpZCBub3QgcnVuIHlldCAqLworKworICAgICB1aW50MzJfdCBvZmZzZXQ7CisgICAgIHVpbnQ4X3QgYnVmW1RQTV9USVNfQlVGRkVSX01BWF07CisgCitkaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV91dGlsLmMgYi9ody90cG0vdHBtX3V0aWwuYworaW5kZXggN2IzNTQyOTcyNS4uYjZmZjc0ZDk0NiAxMDA2NDQKKy0tLSBhL2h3L3RwbS90cG1fdXRpbC5jCisrKysgYi9ody90cG0vdHBtX3V0aWwuYworQEAgLTIyLDYgKzIyLDE3IEBACisgI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyAjaW5jbHVkZSAidHBtX3V0aWwuaCIKKyAjaW5jbHVkZSAidHBtX2ludC5oIgorKyNpbmNsdWRlICJ0cG1faW9jdGwuaCIKKysjaW5jbHVkZSAicWVtdS9lcnJvci1yZXBvcnQuaCIKKysKKysjZGVmaW5lIERFQlVHX1RQTSAwCisrCisrI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBkbyB7IFwKKysgICAgaWYgKERFQlVHX1RQTSkgeyBcCisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgZm10LCAjIyBfX1ZBX0FSR1NfXyk7IFwKKysgICAgfSBcCisrfSB3aGlsZSAoMCkKKysKKyAKKyAvKgorICAqIEEgYmFzaWMgdGVzdCBvZiBhIFRQTSBkZXZpY2UuIFdlIGV4cGVjdCBhIHdlbGwgZm9ybWF0dGVkIHJlc3BvbnNlIGhlYWRlcgorQEAgLTEyNSwzICsxMzYsMjE1IEBAIGludCB0cG1fdXRpbF90ZXN0X3RwbWRldihpbnQgdHBtX2ZkLCBUUE1WZXJzaW9uICp0cG1fdmVyc2lvbikKKyAKKyAgICAgcmV0dXJuIDE7CisgfQorKworK3N0YXRpYyB2b2lkIHRwbV9zaXplZF9idWZmZXJfcmVzZXQoVFBNU2l6ZWRCdWZmZXIgKnRzYikKKyt7CisrICAgIGdfZnJlZSh0c2ItPmJ1ZmZlcik7CisrICAgIHRzYi0+YnVmZmVyID0gTlVMTDsKKysgICAgdHNiLT5zaXplID0gMDsKKyt9CisrCisrLyoKKysgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIGZyb20gdGhlIFRQTSBpbnRvIGEgcHJvdmlkZWQgYnVmZmVyLgorKyAqCisrICogQGZkOiBmaWxlIGRlc2NyaXB0b3IgdG8gdGFsayB0byB0aGUgQ1VTRSBUUE0KKysgKiBAdHlwZTogdGhlIHR5cGUgb2YgYmxvYiB0byB0cmFuc2ZlcgorKyAqIEBkZWNyeXB0ZWRfYmxvYjogd2hldGhlciB3ZSByZXF1ZXN0IHRvIHJlY2VpdmUgZGVjcnlwdGVkIGJsb2JzCisrICogQHRzYjogdGhlIFRQTVNpemVCdWZmZXIgdG8gZmlsbCB3aXRoIHRoZSBibG9iCisrICogQGZsYWdzOiB0aGUgZmxhZ3MgdG8gcmV0dXJuIHRvIHRoZSBjYWxsZXIKKysgKi8KKytzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IoaW50IGZkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHR5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpmbGFncykKKyt7CisrICAgIHB0bV9nZXRzdGF0ZSBwZ3M7CisrICAgIHVpbnQxNl90IG9mZnNldCA9IDA7CisrICAgIHB0bV9yZXMgcmVzOworKyAgICBzc2l6ZV90IG47CisrICAgIHNpemVfdCB0b19yZWFkOworKworKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KHRzYik7CisrCisrICAgIHBncy51LnJlcS5zdGF0ZV9mbGFncyA9IChkZWNyeXB0ZWRfYmxvYikgPyBQVE1fU1RBVEVfRkxBR19ERUNSWVBURUQgOiAwOworKyAgICBwZ3MudS5yZXEudHlwZSA9IHR5cGU7CisrICAgIHBncy51LnJlcS5vZmZzZXQgPSBvZmZzZXQ7CisrCisrICAgIGlmIChpb2N0bChmZCwgUFRNX0dFVF9TVEFURUJMT0IsICZwZ3MpIDwgMCkgeworKyAgICAgICAgZXJyb3JfcmVwb3J0KCJDVVNFIFRQTSBQVE1fR0VUX1NUQVRFQkxPQiBpb2N0bCBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgZ290byBlcnJfZXhpdDsKKysgICAgfQorKyAgICByZXMgPSBwZ3MudS5yZXNwLnRwbV9yZXN1bHQ7CisrICAgIGlmIChyZXMgIT0gMCAmJiAocmVzICYgMHg4MDApID09IDApIHsKKysgICAgICAgIGVycm9yX3JlcG9ydCgiR2V0dGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQgd2l0aCBhIFRQTSAiCisrICAgICAgICAgICAgICAgICAgICAgImVycm9yIDB4JXgiLCB0eXBlLCByZXMpOworKyAgICAgICAgZ290byBlcnJfZXhpdDsKKysgICAgfQorKworKyAgICAqZmxhZ3MgPSBwZ3MudS5yZXNwLnN0YXRlX2ZsYWdzOworKworKyAgICB0c2ItPmJ1ZmZlciA9IGdfbWFsbG9jKHBncy51LnJlc3AudG90bGVuZ3RoKTsKKysgICAgbWVtY3B5KHRzYi0+YnVmZmVyLCBwZ3MudS5yZXNwLmRhdGEsIHBncy51LnJlc3AubGVuZ3RoKTsKKysgICAgdHNiLT5zaXplID0gcGdzLnUucmVzcC5sZW5ndGg7CisrCisrICAgIC8qIGlmIHRoZXJlIGFyZSBieXRlcyBsZWZ0IHRvIGdldCB1c2UgcmVhZCgpIGludGVyZmFjZSAqLworKyAgICB3aGlsZSAodHNiLT5zaXplIDwgcGdzLnUucmVzcC50b3RsZW5ndGgpIHsKKysgICAgICAgIHRvX3JlYWQgPSBwZ3MudS5yZXNwLnRvdGxlbmd0aCAtIHRzYi0+c2l6ZTsKKysgICAgICAgIGlmICh1bmxpa2VseSh0b19yZWFkID4gU1NJWkVfTUFYKSkgeworKyAgICAgICAgICAgIHRvX3JlYWQgPSBTU0laRV9NQVg7CisrICAgICAgICB9CisrCisrICAgICAgICBuID0gcmVhZChmZCwgJnRzYi0+YnVmZmVyW3RzYi0+c2l6ZV0sIHRvX3JlYWQpOworKyAgICAgICAgaWYgKG4gIT0gdG9fcmVhZCkgeworKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ291bGQgbm90IHJlYWQgc3RhdGVibG9iICh0eXBlICVkKSA6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKKysgICAgICAgICAgICBnb3RvIGVycl9leGl0OworKyAgICAgICAgfQorKyAgICAgICAgdHNiLT5zaXplICs9IHRvX3JlYWQ7CisrICAgIH0KKysKKysgICAgRFBSSU5URigidHBtX3V0aWw6IGdvdCBzdGF0ZSBibG9iIHR5cGUgJWQsICVkIGJ5dGVzLCBmbGFncyAweCUwOHgsICIKKysgICAgICAgICAgICAiZGVjcnlwdGVkPSVkXG4iLCB0eXBlLCB0c2ItPnNpemUsICpmbGFncywgZGVjcnlwdGVkX2Jsb2IpOworKworKyAgICByZXR1cm4gMDsKKysKKytlcnJfZXhpdDoKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKKyt7CisrICAgIGlmICh0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9QRVJNQU5FTlQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnRfZmxhZ3MpIHx8CisrICAgICAgIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1ZPTEFUSUxFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWxfZmxhZ3MpIHx8CisrICAgICAgIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKKysgICAgICAgIGdvdG8gZXJyX2V4aXQ7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7CisrCisrIGVycl9leGl0OgorKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnZvbGF0aWwpOworKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnBlcm1hbmVudCk7CisrICAgIHRwbV9zaXplZF9idWZmZXJfcmVzZXQoJnRwbV9ibG9icy0+c2F2ZXN0YXRlKTsKKysKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGludCBmZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aCkKKyt7CisrICAgIHB0bV9zZXRzdGF0ZSBwc3M7CisrCisrICAgIHBzcy51LnJlcS5zdGF0ZV9mbGFncyA9IGZsYWdzOworKyAgICBwc3MudS5yZXEudHlwZSA9IHR5cGU7CisrICAgIHBzcy51LnJlcS5sZW5ndGggPSBsZW5ndGg7CisrCisrICAgIGlmIChpb2N0bChmZCwgUFRNX1NFVF9TVEFURUJMT0IsICZwc3MpIDwgMCkgeworKyAgICAgICAgZXJyb3JfcmVwb3J0KCJDVVNFIFRQTSBQVE1fU0VUX1NUQVRFQkxPQiBpb2N0bCBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgICAgaWYgKHBzcy51LnJlc3AudHBtX3Jlc3VsdCAhPSAwKSB7CisrICAgICAgICBlcnJvcl9yZXBvcnQoIlNldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgorKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcHNzLnUucmVzcC50cG1fcmVzdWx0KTsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIHJldHVybiAwOworK30KKysKKysKKysvKgorKyAqIFRyYW5zZmVyIGEgVFBNIHN0YXRlIGJsb2IgdG8gdGhlIENVU0UgVFBNLgorKyAqCisrICogQGZkOiBmaWxlIGRlc2NyaXB0b3IgdG8gdGFsayB0byB0aGUgQ1VTRSBUUE0KKysgKiBAdHlwZTogdGhlIHR5cGUgb2YgVFBNIHN0YXRlIGJsb2IgdG8gdHJhbnNmZXIKKysgKiBAdHNiOiBUUE1TaXplQnVmZmVyIGNvbnRhaW5pbmcgdGhlIFRQTSBzdGF0ZSBibG9iCisrICogQGZsYWdzOiBGbGFncyBkZXNjcmliaW5nIHRoZSAoZW5jcnlwdGlvbikgc3RhdGUgb2YgdGhlIFRQTSBzdGF0ZSBibG9iCisrICovCisrc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKGludCBmZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNU2l6ZWRCdWZmZXIgKnRzYiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpCisreworKyAgICB1aW50MzJfdCBvZmZzZXQgPSAwOworKyAgICBzc2l6ZV90IG47CisrICAgIHNpemVfdCB0b193cml0ZTsKKysKKysgICAgLyogaW5pdGlhdGUgdGhlIHRyYW5zZmVyIHRvIHRoZSBDVVNFIFRQTSAqLworKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIC8qIHVzZSB0aGUgd3JpdGUoKSBpbnRlcmZhY2UgZm9yIHRyYW5zZmVycmluZyB0aGUgc3RhdGUgYmxvYiAqLworKyAgICB3aGlsZSAob2Zmc2V0IDwgdHNiLT5zaXplKSB7CisrICAgICAgICB0b193cml0ZSA9IHRzYi0+c2l6ZSAtIG9mZnNldDsKKysgICAgICAgIGlmICh1bmxpa2VseSh0b193cml0ZSA+IFNTSVpFX01BWCkpIHsKKysgICAgICAgICAgICB0b193cml0ZSA9IFNTSVpFX01BWDsKKysgICAgICAgIH0KKysKKysgICAgICAgIG4gPSB3cml0ZShmZCwgJnRzYi0+YnVmZmVyW29mZnNldF0sIHRvX3dyaXRlKTsKKysgICAgICAgIGlmIChuICE9IHRvX3dyaXRlKSB7CisrICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJXcml0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgICAgIGdvdG8gZXJyX2V4aXQ7CisrICAgICAgICB9CisrICAgICAgICBvZmZzZXQgKz0gdG9fd3JpdGU7CisrICAgIH0KKysKKysgICAgLyogaW5pZGljYXRlIHRoYXQgdGhlIHRyYW5zZmVyIGlzIGZpbmlzaGVkICovCisrICAgIGlmICh0cG1fdXRpbF9jdXNlX2RvX3NldF9zdGF0ZWJsb2JfaW9jdGwoZmQsIGZsYWdzLCB0eXBlLCAwKSkgeworKyAgICAgICAgZ290byBlcnJfZXhpdDsKKysgICAgfQorKworKyAgICBEUFJJTlRGKCJ0cG1fdXRpbDogc2V0IHRoZSBzdGF0ZSBibG9iIHR5cGUgJWQsICVkIGJ5dGVzLCBmbGFncyAweCUwOHhcbiIsCisrICAgICAgICAgICAgdHlwZSwgdHNiLT5zaXplLCBmbGFncyk7CisrCisrICAgIHJldHVybiAwOworKworK2Vycl9leGl0OgorKyAgICByZXR1cm4gMTsKKyt9CisrCisraW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCisreworKyAgICBwdG1fcmVzIHJlczsKKysKKysgICAgaWYgKGlvY3RsKHRwbV9mZCwgUFRNX1NUT1AsICZyZXMpIDwgMCkgeworKyAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fcGFzc3Rocm91Z2g6IENvdWxkIG5vdCBzdG9wICIKKysgICAgICAgICAgICAgICAgICAgICAidGhlIENVU0UgVFBNOiAlcyAoJWkpIiwKKysgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIGlmICh0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9QRVJNQU5FTlQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLT5wZXJtYW5lbnRfZmxhZ3MpIHx8CisrICAgICAgICB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+dm9sYXRpbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAorKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfU0FWRVNUQVRFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+c2F2ZXN0YXRlX2ZsYWdzKSkgeworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5oIGIvaHcvdHBtL3RwbV91dGlsLmgKK2luZGV4IGRmNzYyNDVlNmUuLmMyNDA3MWQ4MTIgMTAwNjQ0CistLS0gYS9ody90cG0vdHBtX3V0aWwuaAorKysrIGIvaHcvdHBtL3RwbV91dGlsLmgKK0BAIC0yNiw0ICsyNiwxMSBAQAorIAorIGludCB0cG1fdXRpbF90ZXN0X3RwbWRldihpbnQgdHBtX2ZkLCBUUE1WZXJzaW9uICp0cG1fdmVyc2lvbik7CisgCisraW50IHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKTsKKysKKytpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7CisrCisgI2VuZGlmIC8qIFRQTV9UUE1fVVRJTF9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaCBiL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmgKK2luZGV4IGI1OGY1MmQzOWYuLjM0MDM4MjFiOWQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCisrKysgYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCitAQCAtNjIsNiArNjIsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgVFBNU2l6ZWRCdWZmZXIgeworICAgICB1aW50OF90ICAqYnVmZmVyOworIH0gVFBNU2l6ZWRCdWZmZXI7CisgCisrLyogYmxvYnMgZnJvbSB0aGUgVFBNOyBwYXJ0IG9mIFZNIHN0YXRlIHdoZW4gbWlncmF0aW5nICovCisrdHlwZWRlZiBzdHJ1Y3QgVFBNQmxvYkJ1ZmZlcnMgeworKyAgICB1aW50MzJfdCBwZXJtYW5lbnRfZmxhZ3M7CisrICAgIFRQTVNpemVkQnVmZmVyIHBlcm1hbmVudDsKKysKKysgICAgdWludDMyX3Qgdm9sYXRpbF9mbGFnczsKKysgICAgVFBNU2l6ZWRCdWZmZXIgdm9sYXRpbDsKKysKKysgICAgdWludDMyX3Qgc2F2ZXN0YXRlX2ZsYWdzOworKyAgICBUUE1TaXplZEJ1ZmZlciBzYXZlc3RhdGU7CisrfSBUUE1CbG9iQnVmZmVyczsKKysKKyBzdHJ1Y3QgVFBNRHJpdmVyT3BzIHsKKyAgICAgZW51bSBUcG1UeXBlIHR5cGU7CisgICAgIGNvbnN0IFFlbXVPcHREZXNjICpvcHRzOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhhNzgzZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxOSArMCwwIEBACi1Gcm9tIDVlOWRkOTA2M2Y1MTQ0NDdlYTRmNTQwNDY3OTNmNGYwMWMyOTdlZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIEFkZCBzdXBwb3J0IGZvciBWTSBzdXNwZW5kL3Jlc3VtZSBmb3IgVFBNIFRJUwotCi1FeHRlbmQgdGhlIFRQTSBUSVMgY29kZSB0byBzdXBwb3J0IHN1c3BlbmQvcmVzdW1lLiBJbiBjYXNlIGEgY29tbWFuZAotaXMgYmVpbmcgcHJvY2Vzc2VkIGJ5IHRoZSBleHRlcm5hbCBUUE0gd2hlbiBzdXNwZW5kaW5nLCB3YWl0IGZvciB0aGUgY29tbWFuZAotdG8gY29tcGxldGUgdG8gY2F0Y2ggdGhlIHJlc3VsdC4gSW4gY2FzZSB0aGUgYm90dG9tIGhhbGYgZGlkIG5vdCBydW4sCi1ydW4gdGhlIG9uZSBmdW5jdGlvbiB0aGUgYm90dG9tIGhhbGYgaXMgc3VwcG9zZWQgdG8gcnVuLiBUaGlzIHRoZW4KLW1ha2VzIHRoZSByZXN1bWUgb3BlcmF0aW9uIHdvcmsuCi0KLVRoZSBwYXNzdGhyb3VnaCBiYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUgb3BlcmF0aW9uCi1hbmQgaXMgdGhlcmVmb3JlIGJsb2NrZWQgZnJvbSBzdXNwZW5kL3Jlc3VtZSBhbmQgbWlncmF0aW9uLgotCi1UaGUgQ1VTRSBUUE0ncyBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzIGFyZSB0ZXN0ZWQgYW5kIGlmIHN1ZmZpY2llbnQKLWNhcGFiaWxpdGllcyBhcmUgaW1wbGVtZW50ZWQsIHN1c3BlbmQvcmVzdW1lLCBzbmFwc2hvdHRpbmcgYW5kCi1taWdyYXRpb24gYXJlIHN1cHBvcnRlZCBieSB0aGUgQ1VTRSBUUE0uCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgICAgIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrLS0KLSBody90cG0vdHBtX3Rpcy5jICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrKystCi0gaHcvdHBtL3RwbV90aXMuaCAgICAgICAgICAgICB8ICAgMiArCi0gaHcvdHBtL3RwbV91dGlsLmMgICAgICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gaHcvdHBtL3RwbV91dGlsLmggICAgICAgICAgICB8ICAgNyArKwotIGluY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggfCAgMTIgKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCA1MDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggNDQ3MzllYmFkMi4uYmM4MDcyZDBiYyAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtMzQsNiArMzQsOCBAQAotICNpbmNsdWRlICJ0cG1fdGlzLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotKyNpbmNsdWRlICJtaWdyYXRpb24vbWlncmF0aW9uLmgiCi0rI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKLSAKLSAjZGVmaW5lIERFQlVHX1RQTSAwCi0gCi1AQCAtNDksNiArNTEsNyBAQAotICNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCi0gCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOwotK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZTsKLSAKLSAvKiBkYXRhIHN0cnVjdHVyZXMgKi8KLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVRocmVhZFBhcmFtcyB7Ci1AQCAtNzksNiArODIsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgewotICAgICBRZW11TXV0ZXggc3RhdGVfbG9jazsKLSAgICAgUWVtdUNvbmQgY21kX2NvbXBsZXRlOyAgLyogc2luZ25hbGVkIG9uY2UgdHBtX2J1c3kgaXMgZmFsc2UgKi8KLSAgICAgYm9vbCB0cG1fYnVzeTsKLSsKLSsgICAgRXJyb3IgKm1pZ3JhdGlvbl9ibG9ja2VyOwotKwotKyAgICBUUE1CbG9iQnVmZmVycyB0cG1fYmxvYnM7Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci1AQCAtMzA2LDYgKzMxMywxMCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfc2h1dGRvd24oVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgfQotICAgICB9Ci0rICAgIGlmICh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKSB7Ci0rICAgICAgICBtaWdyYXRlX2RlbF9ibG9ja2VyKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOwotKyAgICAgICAgZXJyb3JfZnJlZSh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKLSsgICAgfQotIH0KLSAKLSAvKgotQEAgLTM2MCwxMiArMzcxLDE0IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY2hlY2tfY2FwcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0gLyoKLSAgKiBJbml0aWFsaXplIHRoZSBleHRlcm5hbCBDVVNFIFRQTQotICAqLwotLXN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdChUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19yZXN1bWUpCi0gewotICAgICBpbnQgcmMgPSAwOwotLSAgICBwdG1faW5pdCBpbml0ID0gewotLSAgICAgICAgLnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSwKLS0gICAgfTsKLSsgICAgcHRtX2luaXQgaW5pdDsKLSsgICAgaWYgKGlzX3Jlc3VtZSkgewotKyAgICAgICAgaW5pdC51LnJlcS5pbml0X2ZsYWdzID0gUFRNX0lOSVRfRkxBR19ERUxFVEVfVk9MQVRJTEU7Ci0rICAgIH0KLSAKLSAgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0lOSVQsICZpbml0KSA8IDApIHsKLUBAIC0zOTQsNyArNDA3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfc3RhcnR1cF90cG0oVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX3Bhc3N0aHJvdWdoX3dvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9wdC0+dHBtX3RocmVhZF9wYXJhbXMpOwotIAotLSAgICB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCk7Ci0rICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSk7Ci0gCi0gICAgIHJldHVybiAwOwotIH0KLUBAIC00NjYsNiArNDc5LDMyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnKFRQTUJhY2tlbmQgKnRiLAotICAgICByZXR1cm4gcmM7Ci0gfQotIAotK3N0YXRpYyBpbnQgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKFRQTUJhY2tlbmQgKnRiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBhc3NlcnQoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSk7Ci0rCi0rICAgIHJldHVybiB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyh0cG1fcHQtPnRwbV9mZCwgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzKTsKLSt9Ci0rCi0rc3RhdGljIGludCB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKLSt7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rCi0rICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKLSsKLSsgICAgaWYgKHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCB0cG1fYmxvYnMpKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIHRydWUpOwotK30KLSsKLSBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfZ2V0X3N0YXJ0dXBfZXJyb3IoVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotQEAgLTQ4OCw3ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSAKLS0gICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotKyAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIHJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgdHBtX3B0LT50cG1fYnVzeSA9IHRydWU7Ci0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotQEAgLTYwMSw2ICs2NDAsMjUgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfb3Blbl9zeXNmc19jYW5jZWwoVFBNQmFja2VuZCAqdGIpCi0gICAgIHJldHVybiBmZDsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rewotKyAgICBwdG1fY2FwIGNhcHM7Ci0rCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICBjYXBzID0gUFRNX0NBUF9HRVRfU1RBVEVCTE9CIHwgUFRNX0NBUF9TRVRfU1RBVEVCTE9CIHwKLSsgICAgICAgICAgICAgICBQVE1fQ0FQX1NUT1A7Ci0rICAgICAgICBpZiAoIVRQTV9DVVNFX0lNUExFTUVOVFNfQUxMKHRwbV9wdCwgY2FwcykpIHsKLSsgICAgICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgIk1pZ3JhdGlvbiBkaXNhYmxlZDogQ1VTRSBUUE0gbGFja3MgbmVjZXNzYXJ5IGNhcGFiaWxpdGllcyIpOwotKyAgICAgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBQYXNzdGhyb3VnaCBUUE0gZG9lcyBub3Qgc3VwcG9ydCBtaWdyYXRpb24iKTsKLSsgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSB7Ci0gICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci1AQCAtNjQyLDcgKzcwMCw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICAgICAgLyogaW5pdCBUUE0gZm9yIHByb2JpbmcgKi8KLS0gICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCkpIHsKLSsgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgZmFsc2UpKSB7Ci0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICB9Ci1AQCAtNjU5LDYgKzcxNyw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbih0cG1fcHQpOwotIAotICAgICByZXR1cm4gMDsKLSAKLUBAIC03NjYsMTAgKzgyNSwxMyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQotIAotICAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0gICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0rCi0rICAgIHZtc3RhdGVfcmVnaXN0ZXIoTlVMTCwgLTEsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZShPYmplY3QgKm9iaikKLSB7Ci0rICAgIHZtc3RhdGVfdW5yZWdpc3RlcihOVUxMLCAmdm1zdGF0ZV90cG1fY3VzZSwgb2JqKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotQEAgLTgwMiw2ICs4NjQsNjAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCi0gICAgIHJldHVybiAiQ1VTRSBUUE0gYmFja2VuZCBkcml2ZXIiOwotIH0KLSAKLStzdGF0aWMgdm9pZCB0cG1fY3VzZV9wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKyAgICAgLyogd2FpdCBmb3IgVFBNIHRvIGZpbmlzaCBwcm9jZXNzaW5nICovCi0rICAgICBpZiAodHBtX3B0LT50cG1fYnVzeSkgewotKyAgICAgICAgcWVtdV9jb25kX3dhaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlLCAmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgIH0KLSsgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiBnZXQgdGhlIGRlY3J5cHRlZCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0gKi8KLSsgICAgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRiLCBUUlVFLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9jdXNlX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICByZXR1cm4gdHBtX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRiLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfdHBtX2N1c2UgPSB7Ci0rICAgIC5uYW1lID0gImN1c2UtdHBtIiwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX2N1c2VfcHJlX3NhdmUsCi0rICAgIC5wb3N0X2xvYWQgPSB0cG1fY3VzZV9wb3N0X2xvYWQsCi0rICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5wZXJtYW5lbnRfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5wZXJtYW5lbnQuc2l6ZSksCi0rCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnZvbGF0aWwuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1QYXNzdGhydVN0YXRlLCAxLCBOVUxMLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMudm9sYXRpbC5zaXplKSwKLSsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5zYXZlc3RhdGVfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5zYXZlc3RhdGUuc2l6ZSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKLSsgICAgfQotK307Ci0rCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7Ci0gICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKLSAgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuYyBiL2h3L3RwbS90cG1fdGlzLmMKLWluZGV4IDE0ZDllODNlYTIuLjliNjYwY2Y3MzcgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5jCi0rKysgYi9ody90cG0vdHBtX3Rpcy5jCi1AQCAtMzY4LDYgKzM2OCw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9iaCh2b2lkICpvcGFxdWUpCi0gICAgIFRQTVRJU0VtdVN0YXRlICp0aXMgPSAmcy0+cy50aXM7Ci0gICAgIHVpbnQ4X3QgbG9jdHkgPSBzLT5sb2N0eV9udW1iZXI7Ci0gCi0rICAgIHRpcy0+Ymhfc2NoZWR1bGVkID0gZmFsc2U7Ci0rCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7Ci0gCi0gICAgIHRwbV90aXNfc3RzX3NldCgmdGlzLT5sb2NbbG9jdHldLAotQEAgLTQxNSw2ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfY2IoVFBNU3RhdGUgKnMsIHVpbnQ4X3QgbG9jdHksCi0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSAKLSAgICAgcWVtdV9iaF9zY2hlZHVsZSh0aXMtPmJoKTsKLSsKLSsgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSB0cnVlOwotIH0KLSAKLSAvKgotQEAgLTEwMzAsOSArMTAzNCwxNDAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQotICAgICB0cG1fdGlzX2RvX3N0YXJ0dXBfdHBtKHMpOwotIH0KLSAKLSsKLSsvKiBwZXJzaXN0ZW50IHN0YXRlIGhhbmRsaW5nICovCi0rCi0rc3RhdGljIHZvaWQgdHBtX3Rpc19wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBEUFJJTlRGKCJ0cG1fdGlzOiBzdXNwZW5kOiBsb2N0eSA9ICVkIDogcl9vZmZzZXQgPSAlZCwgd19vZmZzZXQgPSAlZFxuIiwKLSsgICAgICAgICAgICBsb2N0eSwgdGlzLT5sb2NbMF0ucl9vZmZzZXQsIHRpcy0+bG9jWzBdLndfb2Zmc2V0KTsKLSsjaWZkZWYgREVCVUdfVElTCi0rICAgIHRwbV90aXNfZHVtcF9zdGF0ZShvcGFxdWUsIDApOwotKyNlbmRpZgotKwotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiB3YWl0IGZvciBvdXRzdGFuZGluZyByZXF1ZXN0IHRvIGNvbXBsZXRlICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSAmJgotKyAgICAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogSWYgd2UgZ2V0IGhlcmUgd2hlbiB0aGUgYmggaXMgc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biwKLSsgICAgICAgICAqIHdlIHdvbid0IGdldCBub3RpZmllZC4uLgotKyAgICAgICAgICovCi0rICAgICAgICBpZiAoIXRpcy0+Ymhfc2NoZWR1bGVkKSB7Ci0rICAgICAgICAgICAgLyogYmFja2VuZCB0aHJlYWQgdG8gbm90aWZ5IHVzICovCi0rICAgICAgICAgICAgcWVtdV9jb25kX3dhaXQoJnMtPmNtZF9jb21wbGV0ZSwgJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSA9PSBUUE1fVElTX1NUQVRFX0VYRUNVVElPTikgewotKyAgICAgICAgICAgIC8qIGJvdHRvbSBoYWxmIGRpZCBub3QgcnVuIC0gcnVuIGl0cyBmdW5jdGlvbiAqLwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsgICAgICAgICAgICB0cG1fdGlzX3JlY2VpdmVfYmgob3BhcXVlKTsKLSsgICAgICAgICAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSsgICAgLyogY29weSBjdXJyZW50IGFjdGl2ZSByZWFkIG9yIHdyaXRlIGJ1ZmZlciBpbnRvIHRoZSBidWZmZXIKLSsgICAgICAgd3JpdHRlbiB0byBkaXNrICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgewotKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046Ci0rICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7Ci0rICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ud19vZmZzZXQ7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+b2Zmc2V0ID0gdGlzLT5sb2NbbG9jdHldLnJfb2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIC8qIGxlYWsgbm90aGluZyAqLwotKyAgICAgICAgICAgIG1lbXNldCh0aXMtPmJ1ZiwgMHgwLCBzaXplb2YodGlzLT5idWYpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX3Rpc19wb3N0X2xvYWQodm9pZCAqb3BhcXVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBpZiAoVFBNX1RJU19JU19WQUxJRF9MT0NUWShsb2N0eSkpIHsKLSsgICAgICAgIHN3aXRjaCAodGlzLT5sb2NbbG9jdHldLnN0YXRlKSB7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfUkVDRVBUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X29mZnNldCA9IHRpcy0+b2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfQ09NUExFVElPTjoKLSsgICAgICAgICAgICBtZW1jcHkodGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5idWYsCi0rICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLnNpemUpKTsKLSsgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQgPSB0aXMtPm9mZnNldDsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV90aXM6IHJlc3VtZSA6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAotKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2xvY3R5ID0gewotKyAgICAubmFtZSA9ICJsb2MiLAotKyAgICAudmVyc2lvbl9pZCA9IDEsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCi0rICAgIC5maWVsZHMgICAgICA9IChWTVN0YXRlRmllbGRbXSkgewotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoc3RhdGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgoYWNjZXNzLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzdHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGlmYWNlX2lkLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCksCi0rICAgIH0KLSt9OwotKwotIHN0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fdGlzID0gewotICAgICAubmFtZSA9ICJ0cG0iLAotLSAgICAudW5taWdyYXRhYmxlID0gMSwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX3Rpc19wcmVfc2F2ZSwKLSsgICAgLnBvc3RfbG9hZCA9IHRwbV90aXNfcG9zdF9sb2FkLAotKyAgICAuZmllbGRzID0gKFZNU3RhdGVGaWVsZFtdKSB7Ci0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzLnRpcy5vZmZzZXQsIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfQlVGRkVSKHMudGlzLmJ1ZiwgVFBNU3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hY3RpdmVfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMuYWJvcnRpbmdfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMubmV4dF9sb2N0eSwgVFBNU3RhdGUpLAotKwotKyAgICAgICAgVk1TVEFURV9TVFJVQ1RfQVJSQVkocy50aXMubG9jLCBUUE1TdGF0ZSwgVFBNX1RJU19OVU1fTE9DQUxJVElFUywgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc3RhdGVfbG9jdHksIFRQTUxvY2FsaXR5KSwKLSsKLSsgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQotKyAgICB9Ci0gfTsKLSAKLSBzdGF0aWMgUHJvcGVydHkgdHBtX3Rpc19wcm9wZXJ0aWVzW10gPSB7Ci1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuaCBiL2h3L3RwbS90cG1fdGlzLmgKLWluZGV4IGExZGY0MWZhMjEuLmI3ZmMwZWExYTkgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5oCi0rKysgYi9ody90cG0vdHBtX3Rpcy5oCi1AQCAtNTQsNiArNTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBUUE1Mb2NhbGl0eSB7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNVElTRW11U3RhdGUgewotICAgICBRRU1VQkggKmJoOwotKyAgICBib29sIGJoX3NjaGVkdWxlZDsgLyogYmggc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biB5ZXQgKi8KLSsKLSAgICAgdWludDMyX3Qgb2Zmc2V0OwotICAgICB1aW50OF90IGJ1ZltUUE1fVElTX0JVRkZFUl9NQVhdOwotIAotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5jIGIvaHcvdHBtL3RwbV91dGlsLmMKLWluZGV4IDdiMzU0Mjk3MjUuLmI2ZmY3NGQ5NDYgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3V0aWwuYwotKysrIGIvaHcvdHBtL3RwbV91dGlsLmMKLUBAIC0yMiw2ICsyMiwxNyBAQAotICNpbmNsdWRlICJxZW11L29zZGVwLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pbnQuaCIKLSsjaW5jbHVkZSAidHBtX2lvY3RsLmgiCi0rI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0LmgiCi0rCi0rI2RlZmluZSBERUJVR19UUE0gMAotKwotKyNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZG8geyBcCi0rICAgIGlmIChERUJVR19UUE0pIHsgXAotKyAgICAgICAgZnByaW50ZihzdGRlcnIsIGZtdCwgIyMgX19WQV9BUkdTX18pOyBcCi0rICAgIH0gXAotK30gd2hpbGUgKDApCi0rCi0gCi0gLyoKLSAgKiBBIGJhc2ljIHRlc3Qgb2YgYSBUUE0gZGV2aWNlLiBXZSBleHBlY3QgYSB3ZWxsIGZvcm1hdHRlZCByZXNwb25zZSBoZWFkZXIKLUBAIC0xMjUsMyArMTM2LDIxNSBAQCBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pCi0gCi0gICAgIHJldHVybiAxOwotIH0KLSsKLStzdGF0aWMgdm9pZCB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KFRQTVNpemVkQnVmZmVyICp0c2IpCi0rewotKyAgICBnX2ZyZWUodHNiLT5idWZmZXIpOwotKyAgICB0c2ItPmJ1ZmZlciA9IE5VTEw7Ci0rICAgIHRzYi0+c2l6ZSA9IDA7Ci0rfQotKwotKy8qCi0rICogVHJhbnNmZXIgYSBUUE0gc3RhdGUgYmxvYiBmcm9tIHRoZSBUUE0gaW50byBhIHByb3ZpZGVkIGJ1ZmZlci4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIGJsb2IgdG8gdHJhbnNmZXIKLSsgKiBAZGVjcnlwdGVkX2Jsb2I6IHdoZXRoZXIgd2UgcmVxdWVzdCB0byByZWNlaXZlIGRlY3J5cHRlZCBibG9icwotKyAqIEB0c2I6IHRoZSBUUE1TaXplQnVmZmVyIHRvIGZpbGwgd2l0aCB0aGUgYmxvYgotKyAqIEBmbGFnczogdGhlIGZsYWdzIHRvIHJldHVybiB0byB0aGUgY2FsbGVyCi0rICovCi0rc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKGludCBmZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1TaXplZEJ1ZmZlciAqdHNiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZmxhZ3MpCi0rewotKyAgICBwdG1fZ2V0c3RhdGUgcGdzOwotKyAgICB1aW50MTZfdCBvZmZzZXQgPSAwOwotKyAgICBwdG1fcmVzIHJlczsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fcmVhZDsKLSsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCh0c2IpOwotKwotKyAgICBwZ3MudS5yZXEuc3RhdGVfZmxhZ3MgPSAoZGVjcnlwdGVkX2Jsb2IpID8gUFRNX1NUQVRFX0ZMQUdfREVDUllQVEVEIDogMDsKLSsgICAgcGdzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwZ3MudS5yZXEub2Zmc2V0ID0gb2Zmc2V0OwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9HRVRfU1RBVEVCTE9CLCAmcGdzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX0dFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsgICAgcmVzID0gcGdzLnUucmVzcC50cG1fcmVzdWx0OwotKyAgICBpZiAocmVzICE9IDAgJiYgKHJlcyAmIDB4ODAwKSA9PSAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkdldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgotKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcmVzKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgKmZsYWdzID0gcGdzLnUucmVzcC5zdGF0ZV9mbGFnczsKLSsKLSsgICAgdHNiLT5idWZmZXIgPSBnX21hbGxvYyhwZ3MudS5yZXNwLnRvdGxlbmd0aCk7Ci0rICAgIG1lbWNweSh0c2ItPmJ1ZmZlciwgcGdzLnUucmVzcC5kYXRhLCBwZ3MudS5yZXNwLmxlbmd0aCk7Ci0rICAgIHRzYi0+c2l6ZSA9IHBncy51LnJlc3AubGVuZ3RoOwotKwotKyAgICAvKiBpZiB0aGVyZSBhcmUgYnl0ZXMgbGVmdCB0byBnZXQgdXNlIHJlYWQoKSBpbnRlcmZhY2UgKi8KLSsgICAgd2hpbGUgKHRzYi0+c2l6ZSA8IHBncy51LnJlc3AudG90bGVuZ3RoKSB7Ci0rICAgICAgICB0b19yZWFkID0gcGdzLnUucmVzcC50b3RsZW5ndGggLSB0c2ItPnNpemU7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fcmVhZCA+IFNTSVpFX01BWCkpIHsKLSsgICAgICAgICAgICB0b19yZWFkID0gU1NJWkVfTUFYOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbiA9IHJlYWQoZmQsICZ0c2ItPmJ1ZmZlclt0c2ItPnNpemVdLCB0b19yZWFkKTsKLSsgICAgICAgIGlmIChuICE9IHRvX3JlYWQpIHsKLSsgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNvdWxkIG5vdCByZWFkIHN0YXRlYmxvYiAodHlwZSAlZCkgOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgICAgIH0KLSsgICAgICAgIHRzYi0+c2l6ZSArPSB0b19yZWFkOwotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV91dGlsOiBnb3Qgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4LCAiCi0rICAgICAgICAgICAgImRlY3J5cHRlZD0lZFxuIiwgdHlwZSwgdHNiLT5zaXplLCAqZmxhZ3MsIGRlY3J5cHRlZF9ibG9iKTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rCi0rZXJyX2V4aXQ6Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGVfZmxhZ3MpKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotKwotKyBlcnJfZXhpdDoKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT52b2xhdGlsKTsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT5wZXJtYW5lbnQpOwotKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnNhdmVzdGF0ZSk7Ci0rCi0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGgpCi0rewotKyAgICBwdG1fc2V0c3RhdGUgcHNzOwotKwotKyAgICBwc3MudS5yZXEuc3RhdGVfZmxhZ3MgPSBmbGFnczsKLSsgICAgcHNzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwc3MudS5yZXEubGVuZ3RoID0gbGVuZ3RoOwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9TRVRfU1RBVEVCTE9CLCAmcHNzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX1NFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIGlmIChwc3MudS5yZXNwLnRwbV9yZXN1bHQgIT0gMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJTZXR0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZCB3aXRoIGEgVFBNICIKLSsgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgMHgleCIsIHR5cGUsIHBzcy51LnJlc3AudHBtX3Jlc3VsdCk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rCi0rLyoKLSsgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIHRvIHRoZSBDVVNFIFRQTS4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIFRQTSBzdGF0ZSBibG9iIHRvIHRyYW5zZmVyCi0rICogQHRzYjogVFBNU2l6ZUJ1ZmZlciBjb250YWluaW5nIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqIEBmbGFnczogRmxhZ3MgZGVzY3JpYmluZyB0aGUgKGVuY3J5cHRpb24pIHN0YXRlIG9mIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqLwotK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYihpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fd3JpdGU7Ci0rCi0rICAgIC8qIGluaXRpYXRlIHRoZSB0cmFuc2ZlciB0byB0aGUgQ1VTRSBUUE0gKi8KLSsgICAgaWYgKHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChmZCwgZmxhZ3MsIHR5cGUsIDApKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICAvKiB1c2UgdGhlIHdyaXRlKCkgaW50ZXJmYWNlIGZvciB0cmFuc2ZlcnJpbmcgdGhlIHN0YXRlIGJsb2IgKi8KLSsgICAgd2hpbGUgKG9mZnNldCA8IHRzYi0+c2l6ZSkgewotKyAgICAgICAgdG9fd3JpdGUgPSB0c2ItPnNpemUgLSBvZmZzZXQ7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fd3JpdGUgPiBTU0laRV9NQVgpKSB7Ci0rICAgICAgICAgICAgdG9fd3JpdGUgPSBTU0laRV9NQVg7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBuID0gd3JpdGUoZmQsICZ0c2ItPmJ1ZmZlcltvZmZzZXRdLCB0b193cml0ZSk7Ci0rICAgICAgICBpZiAobiAhPSB0b193cml0ZSkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiV3JpdGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICAgICAgfQotKyAgICAgICAgb2Zmc2V0ICs9IHRvX3dyaXRlOwotKyAgICB9Ci0rCi0rICAgIC8qIGluaWRpY2F0ZSB0aGF0IHRoZSB0cmFuc2ZlciBpcyBmaW5pc2hlZCAqLwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgRFBSSU5URigidHBtX3V0aWw6IHNldCB0aGUgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4XG4iLAotKyAgICAgICAgICAgIHR5cGUsIHRzYi0+c2l6ZSwgZmxhZ3MpOwotKwotKyAgICByZXR1cm4gMDsKLSsKLStlcnJfZXhpdDoKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQotK3sKLSsgICAgcHRtX3JlcyByZXM7Ci0rCi0rICAgIGlmIChpb2N0bCh0cG1fZmQsIFBUTV9TVE9QLCAmcmVzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX3Bhc3N0aHJvdWdoOiBDb3VsZCBub3Qgc3RvcCAiCi0rICAgICAgICAgICAgICAgICAgICAgInRoZSBDVVNFIFRQTTogJXMgKCVpKSIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfVk9MQVRJTEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+dm9sYXRpbF9mbGFncykgfHwKLSsgICAgICAgIHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3V0aWwuaCBiL2h3L3RwbS90cG1fdXRpbC5oCi1pbmRleCBkZjc2MjQ1ZTZlLi5jMjQwNzFkODEyIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV91dGlsLmgKLSsrKyBiL2h3L3RwbS90cG1fdXRpbC5oCi1AQCAtMjYsNCArMjYsMTEgQEAKLSAKLSBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pOwotIAotK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7Ci0rCi0raW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpOwotKwotICNlbmRpZiAvKiBUUE1fVFBNX1VUSUxfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCi1pbmRleCBiNThmNTJkMzlmLi4zNDAzODIxYjlkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotKysrIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotQEAgLTYyLDYgKzYyLDE4IEBAIHR5cGVkZWYgc3RydWN0IFRQTVNpemVkQnVmZmVyIHsKLSAgICAgdWludDhfdCAgKmJ1ZmZlcjsKLSB9IFRQTVNpemVkQnVmZmVyOwotIAotKy8qIGJsb2JzIGZyb20gdGhlIFRQTTsgcGFydCBvZiBWTSBzdGF0ZSB3aGVuIG1pZ3JhdGluZyAqLwotK3R5cGVkZWYgc3RydWN0IFRQTUJsb2JCdWZmZXJzIHsKLSsgICAgdWludDMyX3QgcGVybWFuZW50X2ZsYWdzOwotKyAgICBUUE1TaXplZEJ1ZmZlciBwZXJtYW5lbnQ7Ci0rCi0rICAgIHVpbnQzMl90IHZvbGF0aWxfZmxhZ3M7Ci0rICAgIFRQTVNpemVkQnVmZmVyIHZvbGF0aWw7Ci0rCi0rICAgIHVpbnQzMl90IHNhdmVzdGF0ZV9mbGFnczsKLSsgICAgVFBNU2l6ZWRCdWZmZXIgc2F2ZXN0YXRlOwotK30gVFBNQmxvYkJ1ZmZlcnM7Ci0rCi0gc3RydWN0IFRQTURyaXZlck9wcyB7Ci0gICAgIGVudW0gVHBtVHlwZSB0eXBlOwotICAgICBjb25zdCBRZW11T3B0RGVzYyAqb3B0czsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzA0YjMzZTIxODY2NDEyNjg5ZjE4YjdhZDZkYWYwYTU0ZDhmOTU5YTcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wNGIzM2UyMTg2NjQxMjY4OWYxOGI3YWQ2ZGFmMGE1NGQ4Zjk1OWE3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTQ3ZThjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzA0YjMzZTIxODY2NDEyNjg5ZjE4YjdhZDZkYWYwYTU0ZDhmOTU5YTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODIgKzAsMCBAQAotRnJvbSAwNGIzM2UyMTg2NjQxMjY4OWYxOGI3YWQ2ZGFmMGE1NGQ4Zjk1OWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTM6NDQ6NTIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSAnc3RydWN0IHVjb250ZXh0JyB3aXRoICd1Y29udGV4dF90JyB0eXBlCi0KLWdsaWJjIHVzZWQgdG8gaGF2ZToKLQotICAgdHlwZWRlZiBzdHJ1Y3QgdWNvbnRleHQgeyAuLi4gfSB1Y29udGV4dF90OwotCi1nbGliYyBub3cgaGFzOgotCi0gICB0eXBlZGVmIHN0cnVjdCB1Y29udGV4dF90IHsgLi4uIH0gdWNvbnRleHRfdDsKLQotKFNlZSBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMTQ1NwotIGZvciBkZXRhaWwgYW5kIHJhdGlvbmFsZSBmb3IgdGhlIGdsaWJjIGNoYW5nZSkKLQotSG93ZXZlciwgUUVNVSB1c2VkICJzdHJ1Y3QgdWNvbnRleHQiIGluIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBhCi1wcml2YXRlIG5hbWUgYW5kIGNvbXBhdGliaWxpdHkgY2Fubm90IGJlIGd1YXJhbnRlZWQuIFN3aXRjaCB0bwotb25seSB1c2luZyB0aGUgc3RhbmRhcmRpemVkIHR5cGUgbmFtZS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLU1lc3NhZ2UtaWQ6IDIwMTcwNjI4MjA0NDUyLjQxMjMwLTEtcmFqLmtoZW1AZ21haWwuY29tCi1DYzogS2FtaWwgUnl0YXJvd3NraSA8a2FtaWxAbmV0YnNkLm9yZz4KLUNjOiBSaWt1IFZvaXBpbyA8cmlrdS52b2lwaW9AaWtpLmZpPgotQ2M6IExhdXJlbnQgVml2aWVyIDxsYXVyZW50QHZpdmllci5ldT4KLUNjOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotUmV2aWV3ZWQtYnk6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotW1BNTTogUmV3cm90ZSBjb21taXQgbWVzc2FnZSwgYmFzZWQgbW9zdGx5IG9uIHRoZSBvbmUgZnJvbQotIE5hdGhhbmllbCBNY0NhbGx1bV0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotUlAgMjAxNy85LzYKLS0tLQotIGxpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaCB8ICAyICstCi0gbGludXgtdXNlci9ob3N0L2FybS9ob3N0ZGVwLmggICAgIHwgIDIgKy0KLSBsaW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmggICAgfCAgMiArLQotIGxpbnV4LXVzZXIvaG9zdC9wcGM2NC9ob3N0ZGVwLmggICB8ICAyICstCi0gbGludXgtdXNlci9ob3N0L3MzOTB4L2hvc3RkZXAuaCAgIHwgIDIgKy0KLSBsaW51eC11c2VyL2hvc3QveDg2XzY0L2hvc3RkZXAuaCAgfCAgMiArLQotIGxpbnV4LXVzZXIvc2lnbmFsLmMgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSB0ZXN0cy90Y2cvdGVzdC1pMzg2LmMgICAgICAgICAgICAgfCAgNCArKy0tCi0gdXNlci1leGVjLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCi0gOSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaCBiL2xpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaAotaW5kZXggNjRmNzVjZS4uYThkNDFhMiAxMDA2NDQKLS0tLSBhL2xpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaAotKysrIGIvbGludXgtdXNlci9ob3N0L2FhcmNoNjQvaG9zdGRlcC5oCi1AQCAtMjQsNyArMjQsNyBAQCBleHRlcm4gY2hhciBzYWZlX3N5c2NhbGxfZW5kW107Ci0gLyogQWRqdXN0IHRoZSBzaWduYWwgY29udGV4dCB0byByZXdpbmQgb3V0IG9mIHNhZmUtc3lzY2FsbCBpZiB3ZSdyZSBpbiBpdCAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCByZXdpbmRfaWZfaW5fc2FmZV9zeXNjYWxsKHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICBfX3U2NCAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LnBjOwotIAotICAgICBpZiAoKnBjcmVnID4gKHVpbnRwdHJfdClzYWZlX3N5c2NhbGxfc3RhcnQKLWRpZmYgLS1naXQgYS9saW51eC11c2VyL2hvc3QvYXJtL2hvc3RkZXAuaCBiL2xpbnV4LXVzZXIvaG9zdC9hcm0vaG9zdGRlcC5oCi1pbmRleCA1YzFhZTYwLi45Mjc2ZmU2IDEwMDY0NAotLS0tIGEvbGludXgtdXNlci9ob3N0L2FybS9ob3N0ZGVwLmgKLSsrKyBiL2xpbnV4LXVzZXIvaG9zdC9hcm0vaG9zdGRlcC5oCi1AQCAtMjQsNyArMjQsNyBAQCBleHRlcm4gY2hhciBzYWZlX3N5c2NhbGxfZW5kW107Ci0gLyogQWRqdXN0IHRoZSBzaWduYWwgY29udGV4dCB0byByZXdpbmQgb3V0IG9mIHNhZmUtc3lzY2FsbCBpZiB3ZSdyZSBpbiBpdCAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCByZXdpbmRfaWZfaW5fc2FmZV9zeXNjYWxsKHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICB1bnNpZ25lZCBsb25nICpwY3JlZyA9ICZ1Yy0+dWNfbWNvbnRleHQuYXJtX3BjOwotIAotICAgICBpZiAoKnBjcmVnID4gKHVpbnRwdHJfdClzYWZlX3N5c2NhbGxfc3RhcnQKLWRpZmYgLS1naXQgYS9saW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmggYi9saW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmgKLWluZGV4IGQ4MzRiZDguLjA3M2JlNzQgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmgKLSsrKyBiL2xpbnV4LXVzZXIvaG9zdC9pMzg2L2hvc3RkZXAuaAotQEAgLTI0LDcgKzI0LDcgQEAgZXh0ZXJuIGNoYXIgc2FmZV9zeXNjYWxsX2VuZFtdOwotIC8qIEFkanVzdCB0aGUgc2lnbmFsIGNvbnRleHQgdG8gcmV3aW5kIG91dCBvZiBzYWZlLXN5c2NhbGwgaWYgd2UncmUgaW4gaXQgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQgcmV3aW5kX2lmX2luX3NhZmVfc3lzY2FsbCh2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgZ3JlZ190ICpwY3JlZyA9ICZ1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX0VJUF07Ci0gCi0gICAgIGlmICgqcGNyZWcgPiAodWludHB0cl90KXNhZmVfc3lzY2FsbF9zdGFydAotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvaG9zdC9wcGM2NC9ob3N0ZGVwLmggYi9saW51eC11c2VyL2hvc3QvcHBjNjQvaG9zdGRlcC5oCi1pbmRleCAwYjBmNWY3Li45ODk3OWFkIDEwMDY0NAotLS0tIGEvbGludXgtdXNlci9ob3N0L3BwYzY0L2hvc3RkZXAuaAotKysrIGIvbGludXgtdXNlci9ob3N0L3BwYzY0L2hvc3RkZXAuaAotQEAgLTI0LDcgKzI0LDcgQEAgZXh0ZXJuIGNoYXIgc2FmZV9zeXNjYWxsX2VuZFtdOwotIC8qIEFkanVzdCB0aGUgc2lnbmFsIGNvbnRleHQgdG8gcmV3aW5kIG91dCBvZiBzYWZlLXN5c2NhbGwgaWYgd2UncmUgaW4gaXQgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQgcmV3aW5kX2lmX2luX3NhZmVfc3lzY2FsbCh2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgdW5zaWduZWQgbG9uZyAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSAKLSAgICAgaWYgKCpwY3JlZyA+ICh1aW50cHRyX3Qpc2FmZV9zeXNjYWxsX3N0YXJ0Ci1kaWZmIC0tZ2l0IGEvbGludXgtdXNlci9ob3N0L3MzOTB4L2hvc3RkZXAuaCBiL2xpbnV4LXVzZXIvaG9zdC9zMzkweC9ob3N0ZGVwLmgKLWluZGV4IDZmOWRhOWMuLjRmMDE3MWYgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL2hvc3QvczM5MHgvaG9zdGRlcC5oCi0rKysgYi9saW51eC11c2VyL2hvc3QvczM5MHgvaG9zdGRlcC5oCi1AQCAtMjQsNyArMjQsNyBAQCBleHRlcm4gY2hhciBzYWZlX3N5c2NhbGxfZW5kW107Ci0gLyogQWRqdXN0IHRoZSBzaWduYWwgY29udGV4dCB0byByZXdpbmQgb3V0IG9mIHNhZmUtc3lzY2FsbCBpZiB3ZSdyZSBpbiBpdCAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCByZXdpbmRfaWZfaW5fc2FmZV9zeXNjYWxsKHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICB1bnNpZ25lZCBsb25nICpwY3JlZyA9ICZ1Yy0+dWNfbWNvbnRleHQucHN3LmFkZHI7Ci0gCi0gICAgIGlmICgqcGNyZWcgPiAodWludHB0cl90KXNhZmVfc3lzY2FsbF9zdGFydAotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvaG9zdC94ODZfNjQvaG9zdGRlcC5oIGIvbGludXgtdXNlci9ob3N0L3g4Nl82NC9ob3N0ZGVwLmgKLWluZGV4IDNiNDI1OTYuLmE0ZmVmYjUgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL2hvc3QveDg2XzY0L2hvc3RkZXAuaAotKysrIGIvbGludXgtdXNlci9ob3N0L3g4Nl82NC9ob3N0ZGVwLmgKLUBAIC0yNCw3ICsyNCw3IEBAIGV4dGVybiBjaGFyIHNhZmVfc3lzY2FsbF9lbmRbXTsKLSAvKiBBZGp1c3QgdGhlIHNpZ25hbCBjb250ZXh0IHRvIHJld2luZCBvdXQgb2Ygc2FmZS1zeXNjYWxsIGlmIHdlJ3JlIGluIGl0ICovCi0gc3RhdGljIGlubGluZSB2b2lkIHJld2luZF9pZl9pbl9zYWZlX3N5c2NhbGwodm9pZCAqcHVjKQotIHsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIGdyZWdfdCAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LmdyZWdzW1JFR19SSVBdOwotIAotICAgICBpZiAoKnBjcmVnID4gKHVpbnRwdHJfdClzYWZlX3N5c2NhbGxfc3RhcnQKLWRpZmYgLS1naXQgYS9saW51eC11c2VyL3NpZ25hbC5jIGIvbGludXgtdXNlci9zaWduYWwuYwotaW5kZXggZDY4YmQyNi4uY2MwYzNmYyAxMDA2NDQKLS0tLSBhL2xpbnV4LXVzZXIvc2lnbmFsLmMKLSsrKyBiL2xpbnV4LXVzZXIvc2lnbmFsLmMKLUBAIC0zMzQ2LDcgKzMzNDYsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9ydF9mcmFtZShpbnQgc2lnLCBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiAqa2EsCi0gICAgICoKLSAgICAgKiAgIGEwID0gc2lnbmFsIG51bWJlcgotICAgICAqICAgYTEgPSBwb2ludGVyIHRvIHNpZ2luZm9fdAotLSAgICAqICAgYTIgPSBwb2ludGVyIHRvIHN0cnVjdCB1Y29udGV4dAotKyAgICAqICAgYTIgPSBwb2ludGVyIHRvIHVjb250ZXh0X3QKLSAgICAgKgotICAgICAqICQyNSBhbmQgUEMgcG9pbnQgdG8gdGhlIHNpZ25hbCBoYW5kbGVyLCAkMjkgcG9pbnRzIHRvIHRoZQotICAgICAqIHN0cnVjdCBzaWdmcmFtZS4KLUBAIC0zNzY0LDcgKzM3NjQsNyBAQCBzdHJ1Y3QgdGFyZ2V0X3NpZ25hbF9mcmFtZSB7Ci0gCi0gc3RydWN0IHJ0X3NpZ25hbF9mcmFtZSB7Ci0gICAgIHNpZ2luZm9fdCBpbmZvOwotLSAgICBzdHJ1Y3QgdWNvbnRleHQgdWM7Ci0rICAgIHVjb250ZXh0X3QgdWM7Ci0gICAgIHVpbnQzMl90IHRyYW1wWzJdOwotIH07Ci0gCi1AQCAtMzk4MCw3ICszOTgwLDcgQEAgc3RydWN0IHJ0X3NpZ25hbF9mcmFtZSB7Ci0gICAgIHNpZ2luZm9fdCAqcGluZm87Ci0gICAgIHZvaWQgKnB1YzsKLSAgICAgc2lnaW5mb190IGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCB1YzsKLSsgICAgdWNvbnRleHRfdCB1YzsKLSAgICAgdWludDE2X3QgcmV0Y29kZVs0XTsgICAgICAvKiBUcmFtcG9saW5lIGNvZGUuICovCi0gfTsKLSAKLUBAIC00NTE1LDcgKzQ1MTUsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9ydF9mcmFtZShpbnQgc2lnLCBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiAqa2EsCi0gICAgICAgICB0c3dhcF9zaWdpbmZvKCZmcmFtZS0+aW5mbywgaW5mbyk7Ci0gICAgIH0KLSAKLS0gICAgLyplcnIgfD0gX19jbGVhcl91c2VyKCZmcmFtZS0+dWMsIG9mZnNldG9mKHN0cnVjdCB1Y29udGV4dCwgdWNfbWNvbnRleHQpKTsqLwotKyAgICAvKmVyciB8PSBfX2NsZWFyX3VzZXIoJmZyYW1lLT51Yywgb2Zmc2V0b2YodWNvbnRleHRfdCwgdWNfbWNvbnRleHQpKTsqLwotICAgICBfX3B1dF91c2VyKDAsICZmcmFtZS0+dWMudHVjX2ZsYWdzKTsKLSAgICAgX19wdXRfdXNlcigwLCAmZnJhbWUtPnVjLnR1Y19saW5rKTsKLSAgICAgX19wdXRfdXNlcih0YXJnZXRfc2lnYWx0c3RhY2tfdXNlZC5zc19zcCwKLUBAIC01MDA3LDcgKzUwMDcsNyBAQCBlbnVtIHsKLSAKLSBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0IHsKLSAgICAgdGFyZ2V0X3Vsb25nIHR1Y19mbGFnczsKLS0gICAgdGFyZ2V0X3Vsb25nIHR1Y19saW5rOyAgICAvKiBzdHJ1Y3QgdWNvbnRleHQgX191c2VyICogKi8KLSsgICAgdGFyZ2V0X3Vsb25nIHR1Y19saW5rOyAgICAvKiB1Y29udGV4dF90IF9fdXNlciAqICovCi0gICAgIHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgdHVjX3N0YWNrOwotICNpZiAhZGVmaW5lZChUQVJHRVRfUFBDNjQpCi0gICAgIGludDMyX3QgdHVjX3BhZFs3XTsKLWRpZmYgLS1naXQgYS90ZXN0cy90Y2cvdGVzdC1pMzg2LmMgYi90ZXN0cy90Y2cvdGVzdC1pMzg2LmMKLWluZGV4IDBmN2I5NDMuLjk1OTkyMDQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90Y2cvdGVzdC1pMzg2LmMKLSsrKyBiL3Rlc3RzL3RjZy90ZXN0LWkzODYuYwotQEAgLTE3MjAsNyArMTcyMCw3IEBAIGludCB0YWJbMl07Ci0gCi0gdm9pZCBzaWdfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotIAotICAgICBwcmludGYoInNpX3NpZ25vPSVkIHNpX2Vycm5vPSVkIHNpX2NvZGU9JWQiLAotICAgICAgICAgICAgaW5mby0+c2lfc2lnbm8sIGluZm8tPnNpX2Vycm5vLCBpbmZvLT5zaV9jb2RlKTsKLUBAIC0xOTEyLDcgKzE5MTIsNyBAQCB2b2lkIHRlc3RfZXhjZXB0aW9ucyh2b2lkKQotIC8qIHNwZWNpZmljIHByZWNpc2Ugc2luZ2xlIHN0ZXAgdGVzdCAqLwotIHZvaWQgc2lnX3RyYXBfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICBwcmludGYoIkVJUD0iIEZNVExYICJcbiIsIChsb25nKXVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUlQXSk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3VzZXItZXhlYy5jIGIvdXNlci1leGVjLmMKLWluZGV4IGE4Zjk1ZmEuLjJhOTc1ZWEgMTAwNjQ0Ci0tLS0gYS91c2VyLWV4ZWMuYwotKysrIGIvdXNlci1leGVjLmMKLUBAIC0xNjcsNyArMTY3LDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLAotICNlbGlmIGRlZmluZWQoX19PcGVuQlNEX18pCi0gICAgIHN0cnVjdCBzaWdjb250ZXh0ICp1YyA9IHB1YzsKLSAjZWxzZQotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZW5kaWYKLSAgICAgdW5zaWduZWQgbG9uZyBwYzsKLSAgICAgaW50IHRyYXBubzsKLUBAIC0yMjIsNyArMjIyLDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLAotICNlbGlmIGRlZmluZWQoX19PcGVuQlNEX18pCi0gICAgIHN0cnVjdCBzaWdjb250ZXh0ICp1YyA9IHB1YzsKLSAjZWxzZQotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZW5kaWYKLSAKLSAgICAgcGMgPSBQQ19zaWcodWMpOwotQEAgLTI4OSw3ICsyODksNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQotICAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZWxzZQotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZW5kaWYKLSAgICAgdW5zaWduZWQgbG9uZyBwYzsKLSAgICAgaW50IGlzX3dyaXRlOwotQEAgLTMxNiw3ICszMTYsNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHVjKQotIHsKLSAgICAgc2lnaW5mb190ICppbmZvID0gcGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICB1aW50MzJfdCAqcGMgPSB1Yy0+dWNfbWNvbnRleHQuc2NfcGM7Ci0gICAgIHVpbnQzMl90IGluc24gPSAqcGM7Ci0gICAgIGludCBpc193cml0ZSA9IDA7Ci1AQCAtNDE0LDcgKzQxNCw3IEBAIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywKLSAjaWYgZGVmaW5lZChfX05ldEJTRF9fKQotICAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZWxzZQotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZW5kaWYKLSAgICAgdW5zaWduZWQgbG9uZyBwYzsKLSAgICAgaW50IGlzX3dyaXRlOwotQEAgLTQ0MSw3ICs0NDEsNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLCB2b2lkICpwdWMpCi0gewotICAgICBzaWdpbmZvX3QgKmluZm8gPSBwaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIHVpbnRwdHJfdCBwYyA9IHVjLT51Y19tY29udGV4dC5wYzsKLSAgICAgdWludDMyX3QgaW5zbiA9ICoodWludDMyX3QgKilwYzsKLSAgICAgYm9vbCBpc193cml0ZTsKLUBAIC00NzQsNyArNDc0LDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLCB2b2lkICpwdWMpCi0gaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLCB2b2lkICpwdWMpCi0gewotICAgICBzaWdpbmZvX3QgKmluZm8gPSBwaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIHVuc2lnbmVkIGxvbmcgaXA7Ci0gICAgIGludCBpc193cml0ZSA9IDA7Ci0gCi1AQCAtNTA1LDcgKzUwNSw3IEBAIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnB1YykKLSB7Ci0gICAgIHNpZ2luZm9fdCAqaW5mbyA9IHBpbmZvOwotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgdW5zaWduZWQgbG9uZyBwYzsKLSAgICAgdWludDE2X3QgKnBpbnNuOwotICAgICBpbnQgaXNfd3JpdGUgPSAwOwotQEAgLTU1OCw3ICs1NTgsNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdWMpCi0gewotICAgICBzaWdpbmZvX3QgKmluZm8gPSBwaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIGdyZWdfdCBwYyA9IHVjLT51Y19tY29udGV4dC5wYzsKLSAgICAgaW50IGlzX3dyaXRlOwotIAotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE2LTk5MDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi05OTA4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGY3YTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE2LTk5MDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDcxMzljY2JjOTA3NDQxMzM3YjRiNTljZGUyYzViNWE1NGNiNWIyY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLQotdmlydGlvLWdwdTogZml4IGluZm9ybWF0aW9uIGxlYWsgaW4gY2Fwc2V0IGdldCBkaXNwYXRjaAotCi1JbiB2aXJnbF9jbWRfZ2V0X2NhcHNldCBmdW5jdGlvbiwgaXQgdXNlcyBnX21hbGxvYyB0byBhbGxvY2F0ZQotYSByZXNwb25zZSBzdHJ1Y3QgdG8gdGhlIGd1ZXN0LiBBcyB0aGUgJ3Jlc3Anc3RydWN0IGhhc24ndCBiZWVuIGZ1bGwKLWluaXRpYWxpemVkIGl0IHdpbGwgbGVhZCB0aGUgJ3Jlc3AtPnBhZGRpbmcnIGZpZWxkIHRvIHRoZSBndWVzdC4KLVVzZSBnX21hbGxvYzAgdG8gYXZvaWQgdGhpcy4KLQotU2lnbmVkLW9mZi1ieTogTGkgUWlhbmcgPGxpcWlhbmc2LXNAMzYwLmNuPgotUmV2aWV3ZWQtYnk6IE1hcmMtQW5kcsOpIEx1cmVhdSA8bWFyY2FuZHJlLmx1cmVhdUByZWRoYXQuY29tPgotTWVzc2FnZS1pZDogNTgxODhjYWUuNGE2ZWMyMGEuM2QyZDEuYWZmMkBteC5nb29nbGUuY29tCi0KLVtTb25hOiBiYWNrcG9ydGVkIGZyb20gbWFzdGVyIHRvIHYyLjguMCBhbmQgcmVzb2x2ZWQgY29uZmxpY3RdCi0KLVJlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKLWh0dHA6Ly9naXQucWVtdS1wcm9qZWN0Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPTg1ZDlkMDQ0NDcxZjkzYzQ4YzVjMzk2ZjdlMjE3YjRlZjEyZjY5ZjgKLQotQ1ZFOiBDVkUtMjAxNi05OTA4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0tLS0KLSBody9kaXNwbGF5L3ZpcnRpby1ncHUtM2QuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmlydGlvLWdwdS0zZC5jIGIvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LTNkLmMKLWluZGV4IDIzZjM5ZGUuLmQ5OGIxNDAgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZpcnRpby1ncHUtM2QuYwotKysrIGIvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LTNkLmMKLUBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIHZvaWQgdmlyZ2xfY21kX2dldF9jYXBzZXQoVmlydElPR1BVICpnLAotIAotICAgICB2aXJnbF9yZW5kZXJlcl9nZXRfY2FwX3NldChnYy5jYXBzZXRfaWQsICZtYXhfdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4X3NpemUpOwotLSAgICByZXNwID0gZ19tYWxsb2Moc2l6ZW9mKCpyZXNwKSArIG1heF9zaXplKTsKLSsgICAgcmVzcCA9IGdfbWFsbG9jMChzaXplb2YoKnJlc3ApICsgbWF4X3NpemUpOwotIAotICAgICByZXNwLT5oZHIudHlwZSA9IFZJUlRJT19HUFVfUkVTUF9PS19DQVBTRVQ7Ci0gICAgIHZpcmdsX3JlbmRlcmVyX2ZpbGxfY2FwcyhnYy5jYXBzZXRfaWQsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE2LTk5MTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi05OTEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDA5ZmZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE2LTk5MTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGI4ZTIzOTI2YzU2OGYyZTk2M2FmMzkwMjhiNzFjNDcyZTMwMjM3OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMaSBRaWFuZyA8bGlxM2VhQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjggTm92IDIwMTYgMjE6Mjk6MjUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gdmlydGlvLWdwdTogY2FsbCBjbGVhbnVwIG1hcHBpbmcgZnVuY3Rpb24gaW4gcmVzb3VyY2UgZGVzdHJveQotCi1JZiB0aGUgZ3Vlc3QgZGVzdHJveSB0aGUgcmVzb3VyY2UgYmVmb3JlIGRldGFjaCBiYW5raW5nLCB0aGUgJ2lvdicKLWFuZCAnYWRkcnMnIGZpZWxkIGluIHJlc291cmNlIGlzIG5vdCBmcmVlZCB0aHVzIGxlYWRpbmcgbWVtb3J5Ci1sZWFrIGlzc3VlLiBUaGlzIHBhdGNoIGF2b2lkIHRoaXMuCi0KLUNWRTogQ1ZFLTIwMTYtOTkxMgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBMaSBRaWFuZyA8bGlxM2VhQGdtYWlsLmNvbT4KLVJldmlld2VkLWJ5OiBNYXJjLUFuZHLDqSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4KLU1lc3NhZ2UtaWQ6IDE0ODAzODY1NjUtMTAwNzctMS1naXQtc2VuZC1lbWFpbC1saXEzZWFAZ21haWwuY29tCi1TaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFNvbmEgU2FybWFkaSA8c29uYS5zYXJtYWRpQGVuZWEuY29tPgotLS0tCi0gaHcvZGlzcGxheS92aXJ0aW8tZ3B1LmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmlydGlvLWdwdS5jIGIvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LmMKLWluZGV4IGVkMmI2ZDMuLjZhMjYyNTggMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZpcnRpby1ncHUuYwotKysrIGIvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LmMKLUBAIC0yOCw2ICsyOCw4IEBACi0gc3RhdGljIHN0cnVjdCB2aXJ0aW9fZ3B1X3NpbXBsZV9yZXNvdXJjZSoKLSB2aXJ0aW9fZ3B1X2ZpbmRfcmVzb3VyY2UoVmlydElPR1BVICpnLCB1aW50MzJfdCByZXNvdXJjZV9pZCk7Ci0gCi0rc3RhdGljIHZvaWQgdmlydGlvX2dwdV9jbGVhbnVwX21hcHBpbmcoc3RydWN0IHZpcnRpb19ncHVfc2ltcGxlX3Jlc291cmNlICpyZXMpOwotKwotICNpZmRlZiBDT05GSUdfVklSR0wKLSAjaW5jbHVkZSA8dmlyZ2xyZW5kZXJlci5oPgotICNkZWZpbmUgVklSR0woX2csIF92aXJnbCwgX3NpbXBsZSwgLi4uKSAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0zNjQsNiArMzY2LDcgQEAgc3RhdGljIHZvaWQgdmlydGlvX2dwdV9yZXNvdXJjZV9kZXN0cm95KFZpcnRJT0dQVSAqZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZpcnRpb19ncHVfc2ltcGxlX3Jlc291cmNlICpyZXMpCi0gewotICAgICBwaXhtYW5faW1hZ2VfdW5yZWYocmVzLT5pbWFnZSk7Ci0rICAgIHZpcnRpb19ncHVfY2xlYW51cF9tYXBwaW5nKHJlcyk7Ci0gICAgIFFUQUlMUV9SRU1PVkUoJmctPnJlc2xpc3QsIHJlcywgbmV4dCk7Ci0gICAgIGctPmhvc3RtZW0gLT0gcmVzLT5ob3N0bWVtOwotICAgICBnX2ZyZWUocmVzKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTBiMWVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKQEAgLTAsMCArMSw1MDQgQEAKK0Zyb20gM2Q5MGM2MjU0ODYzNjkzYTZiMTNkOTE4ZDJiODY4MmUwOGJiYzY4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyOCBBdWcgMjAxNyAxNDoyOTowNiArMDIwMAorU3ViamVjdDogW1BBVENIXSB2Z2E6IHN0b3AgcGFzc2luZyBwb2ludGVycyB0byB2Z2FfZHJhd19saW5lKiBmdW5jdGlvbnMKKworSW5zdGVhZCBwYXNzIGFyb3VuZCB0aGUgYWRkcmVzcyAoYWthIG9mZnNldCBpbnRvIHZnYSBtZW1vcnkpLgorQWRkIHZnYV9yZWFkXyogaGVscGVyIGZ1bmN0aW9ucyB3aGljaCBhcHBseSB2YmVfc2l6ZV9tYXNrIHRvCit0aGUgYWRkcmVzcywgdG8gbWFrZSBzdXJlIHRoZSBhZGRyZXNzIHN0YXlzIHdpdGhpbiB0aGUgdmFsaWQKK3JhbmdlLCBzaW1pbGFyIHRvIHRoZSBjaXJydXMgYmxpdHRlciBmaXhlcyAoY29tbWl0cyBmZmFmODU3Nzc4CithbmQgMDI2YWVmZmNiNCkuCisKK0ltcGFjdDogIERvUyBmb3IgcHJpdmlsZWdlZCBndWVzdCB1c2Vycy4gIHFlbXUgY3Jhc2hlcyB3aXRoCithIHNlZ2ZhdWx0LCB3aGVuIGhpdHRpbmcgdGhlIGd1YXJkIHBhZ2UgYWZ0ZXIgdmdhIG1lbW9yeQorYWxsb2NhdGlvbiwgd2hpbGUgcmVhZGluZyB2Z2EgbWVtb3J5IGZvciBkaXNwbGF5IHVwZGF0ZXMuCisKK0ZpeGVzOiBDVkUtMjAxNy0xMzY3MgorQ2M6IFAgSiBQIDxwcGFuZGl0QHJlZGhhdC5jb20+CitSZXBvcnRlZC1ieTogRGF2aWQgQnVjaGFuYW4gPGRAdmlkYnVjaGFuYW4uY28udWs+CitTaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KK01lc3NhZ2UtaWQ6IDIwMTcwODI4MTIyOTA2LjE4OTkzLTEta3JheGVsQHJlZGhhdC5jb20KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9M2Q5MGM2MjU0ODYzNjkzYTZiMTNkOTE4ZDJiODY4MmUwOGJiYzY4MV0KKworQ1ZFOiBDVkUtMjAxNy0xMzY3MgorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmggfCAyMDIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBody9kaXNwbGF5L3ZnYS5jICAgICAgICAgfCAgIDUgKy0KKyBody9kaXNwbGF5L3ZnYV9pbnQuaCAgICAgfCAgIDEgKworIDMgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EtaGVscGVycy5oIGIvaHcvZGlzcGxheS92Z2EtaGVscGVycy5oCitpbmRleCA5NGY2ZGUyLi41YTc1MmIzIDEwMDY0NAorLS0tIGEvaHcvZGlzcGxheS92Z2EtaGVscGVycy5oCisrKysgYi9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmgKK0BAIC05NSwyMCArOTUsNDYgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfZ2x5cGg5KHVpbnQ4X3QgKmQsIGludCBsaW5lc2l6ZSwKKyAgICAgfSB3aGlsZSAoLS1oKTsKKyB9CisgCisrc3RhdGljIGlubGluZSB1aW50OF90IHZnYV9yZWFkX2J5dGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKKyt7CisrICAgIHJldHVybiB2Z2EtPnZyYW1fcHRyW2FkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2tdOworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQxNl90IHZnYV9yZWFkX3dvcmRfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKKyt7CisrICAgIHVpbnQzMl90IG9mZnNldCA9IGFkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2sgJiB+MTsKKysgICAgdWludDE2X3QgKnB0ciA9ICh1aW50MTZfdCAqKSh2Z2EtPnZyYW1fcHRyICsgb2Zmc2V0KTsKKysgICAgcmV0dXJuIGxkdXdfbGVfcChwdHIpOworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQxNl90IHZnYV9yZWFkX3dvcmRfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKKyt7CisrICAgIHVpbnQzMl90IG9mZnNldCA9IGFkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2sgJiB+MTsKKysgICAgdWludDE2X3QgKnB0ciA9ICh1aW50MTZfdCAqKSh2Z2EtPnZyYW1fcHRyICsgb2Zmc2V0KTsKKysgICAgcmV0dXJuIGxkdXdfYmVfcChwdHIpOworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQzMl90IHZnYV9yZWFkX2R3b3JkX2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQzMl90IGFkZHIpCisreworKyAgICB1aW50MzJfdCBvZmZzZXQgPSBhZGRyICYgdmdhLT52YmVfc2l6ZV9tYXNrICYgfjM7CisrICAgIHVpbnQzMl90ICpwdHIgPSAodWludDMyX3QgKikodmdhLT52cmFtX3B0ciArIG9mZnNldCk7CisrICAgIHJldHVybiBsZGxfbGVfcChwdHIpOworK30KKysKKyAvKgorICAqIDQgY29sb3IgbW9kZQorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCAqcGFsZXR0ZSwgZGF0YSwgdjsKKyAgICAgaW50IHg7CisgCistICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOworLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOworKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7CisrICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOworICAgICB3aWR0aCA+Pj0gMzsKKyAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKKysgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOworICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOworICAgICAgICAgdiA9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDApXTsKKyAgICAgICAgIHYgfD0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMildIDw8IDI7CitAQCAtMTI0LDcgKzE1MCw3IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAgICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdOworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl07CisgICAgICAgICBkICs9IDMyOworLSAgICAgICAgcyArPSA0OworKyAgICAgICAgYWRkciArPSA0OworICAgICB9CisgfQorIAorQEAgLTEzNCwxNyArMTYwLDE3IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAvKgorICAqIDQgY29sb3IgbW9kZSwgZHVwMiBob3Jpem9udGFsCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTJkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTJkMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgKnBhbGV0dGUsIGRhdGEsIHY7CisgICAgIGludCB4OworIAorLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKKy0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKKysgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOworKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKKyAgICAgd2lkdGggPj49IDM7CisgICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKy0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07CisrICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKKyAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKKyAgICAgICAgIHYgPSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAwKV07CisgICAgICAgICB2IHw9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDIpXSA8PCAyOworQEAgLTE2MCwyNCArMTg2LDI0IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorICAgICAgICAgUFVUX1BJWEVMMihkLCA2LCBwYWxldHRlWyh2ID4+IDQpICYgMHhmXSk7CisgICAgICAgICBQVVRfUElYRUwyKGQsIDcsIHBhbGV0dGVbKHYgPj4gMCkgJiAweGZdKTsKKyAgICAgICAgIGQgKz0gNjQ7CistICAgICAgICBzICs9IDQ7CisrICAgICAgICBhZGRyICs9IDQ7CisgICAgIH0KKyB9CisgCisgLyoKKyAgKiAxNiBjb2xvciBtb2RlCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTQoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNChWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIHVpbnQzMl90IHBsYW5lX21hc2ssIGRhdGEsIHYsICpwYWxldHRlOworICAgICBpbnQgeDsKKyAKKy0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7CistICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisrICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisgICAgIHdpZHRoID4+PSAzOworICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CistICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOworKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7CisgICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7CisgICAgICAgICB2ID0gZXhwYW5kNFtHRVRfUExBTkUoZGF0YSwgMCldOworICAgICAgICAgdiB8PSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAxKV0gPDwgMTsKK0BAIC0xOTIsMjQgKzIxOCwyNCBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNChWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCisgICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlWyh2ID4+IDQpICYgMHhmXTsKKyAgICAgICAgICgodWludDMyX3QgKilkKVs3XSA9IHBhbGV0dGVbKHYgPj4gMCkgJiAweGZdOworICAgICAgICAgZCArPSAzMjsKKy0gICAgICAgIHMgKz0gNDsKKysgICAgICAgIGFkZHIgKz0gNDsKKyAgICAgfQorIH0KKyAKKyAvKgorICAqIDE2IGNvbG9yIG1vZGUsIGR1cDIgaG9yaXpvbnRhbAorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIHVpbnQzMl90IHBsYW5lX21hc2ssIGRhdGEsIHYsICpwYWxldHRlOworICAgICBpbnQgeDsKKyAKKy0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7CistICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisrICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisgICAgIHdpZHRoID4+PSAzOworICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CistICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOworKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7CisgICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7CisgICAgICAgICB2ID0gZXhwYW5kNFtHRVRfUExBTkUoZGF0YSwgMCldOworICAgICAgICAgdiB8PSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAxKV0gPDwgMTsKK0BAIC0yMjQsNyArMjUwLDcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCisgICAgICAgICBQVVRfUElYRUwyKGQsIDYsIHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdKTsKKyAgICAgICAgIFBVVF9QSVhFTDIoZCwgNywgcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl0pOworICAgICAgICAgZCArPSA2NDsKKy0gICAgICAgIHMgKz0gNDsKKysgICAgICAgIGFkZHIgKz0gNDsKKyAgICAgfQorIH0KKyAKK0BAIC0yMzMsMjEgKzI1OSwyMSBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAgKgorICAqIFhYWDogYWRkIHBsYW5lX21hc2sgc3VwcG9ydCAobmV2ZXIgdXNlZCBpbiBzdGFuZGFyZCBWR0EgbW9kZXMpCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZThkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZThkMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgdWludDMyX3QgKnBhbGV0dGU7CisgICAgIGludCB4OworIAorLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOworICAgICB3aWR0aCA+Pj0gMzsKKyAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworLSAgICAgICAgUFVUX1BJWEVMMihkLCAwLCBwYWxldHRlW3NbMF1dKTsKKy0gICAgICAgIFBVVF9QSVhFTDIoZCwgMSwgcGFsZXR0ZVtzWzFdXSk7CistICAgICAgICBQVVRfUElYRUwyKGQsIDIsIHBhbGV0dGVbc1syXV0pOworLSAgICAgICAgUFVUX1BJWEVMMihkLCAzLCBwYWxldHRlW3NbM11dKTsKKysgICAgICAgIFBVVF9QSVhFTDIoZCwgMCwgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApXSk7CisrICAgICAgICBQVVRfUElYRUwyKGQsIDEsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKV0pOworKyAgICAgICAgUFVUX1BJWEVMMihkLCAyLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMildKTsKKysgICAgICAgIFBVVF9QSVhFTDIoZCwgMywgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDMpXSk7CisgICAgICAgICBkICs9IDMyOworLSAgICAgICAgcyArPSA0OworKyAgICAgICAgYWRkciArPSA0OworICAgICB9CisgfQorIAorQEAgLTI1Niw2MyArMjgyLDYzIEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorICAqCisgICogWFhYOiBhZGQgcGxhbmVfbWFzayBzdXBwb3J0IChuZXZlciB1c2VkIGluIHN0YW5kYXJkIFZHQSBtb2RlcykKKyAgKi8KKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOChWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4KFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgdWludDMyX3QgKnBhbGV0dGU7CisgICAgIGludCB4OworIAorLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOworICAgICB3aWR0aCA+Pj0gMzsKKyAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcGFsZXR0ZVtzWzBdXTsKKy0gICAgICAgICgodWludDMyX3QgKilkKVsxXSA9IHBhbGV0dGVbc1sxXV07CistICAgICAgICAoKHVpbnQzMl90ICopZClbMl0gPSBwYWxldHRlW3NbMl1dOworLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzNdID0gcGFsZXR0ZVtzWzNdXTsKKy0gICAgICAgICgodWludDMyX3QgKilkKVs0XSA9IHBhbGV0dGVbc1s0XV07CistICAgICAgICAoKHVpbnQzMl90ICopZClbNV0gPSBwYWxldHRlW3NbNV1dOworLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVtzWzZdXTsKKy0gICAgICAgICgodWludDMyX3QgKilkKVs3XSA9IHBhbGV0dGVbc1s3XV07CisrICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCldOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzFdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpXTsKKysgICAgICAgICgodWludDMyX3QgKilkKVsyXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKV07CisrICAgICAgICAoKHVpbnQzMl90ICopZClbM10gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMyldOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzRdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDQpXTsKKysgICAgICAgICgodWludDMyX3QgKilkKVs1XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA1KV07CisrICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNildOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDcpXTsKKyAgICAgICAgIGQgKz0gMzI7CistICAgICAgICBzICs9IDg7CisrICAgICAgICBhZGRyICs9IDg7CisgICAgIH0KKyB9CisgCisgLyoKKyAgKiAxNSBiaXQgY29sb3IKKyAgKi8KKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIGludCB3OworICAgICB1aW50MzJfdCB2LCByLCBnLCBiOworIAorICAgICB3ID0gd2lkdGg7CisgICAgIGRvIHsKKy0gICAgICAgIHYgPSBsZHV3X2xlX3AoKHZvaWQgKilzKTsKKysgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2xlKHZnYSwgYWRkcik7CisgICAgICAgICByID0gKHYgPj4gNykgJiAweGY4OworICAgICAgICAgZyA9ICh2ID4+IDIpICYgMHhmODsKKyAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7CisgICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKKy0gICAgICAgIHMgKz0gMjsKKysgICAgICAgIGFkZHIgKz0gMjsKKyAgICAgICAgIGQgKz0gNDsKKyAgICAgfSB3aGlsZSAoLS13ICE9IDApOworIH0KKyAKKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIGludCB3OworICAgICB1aW50MzJfdCB2LCByLCBnLCBiOworIAorICAgICB3ID0gd2lkdGg7CisgICAgIGRvIHsKKy0gICAgICAgIHYgPSBsZHV3X2JlX3AoKHZvaWQgKilzKTsKKysgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2JlKHZnYSwgYWRkcik7CisgICAgICAgICByID0gKHYgPj4gNykgJiAweGY4OworICAgICAgICAgZyA9ICh2ID4+IDIpICYgMHhmODsKKyAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7CisgICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKKy0gICAgICAgIHMgKz0gMjsKKysgICAgICAgIGFkZHIgKz0gMjsKKyAgICAgICAgIGQgKz0gNDsKKyAgICAgfSB3aGlsZSAoLS13ICE9IDApOworIH0KK0BAIC0zMjAsMzggKzM0NiwzOCBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorIC8qCisgICogMTYgYml0IGNvbG9yCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgdiwgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICB2ID0gbGR1d19sZV9wKCh2b2lkICopcyk7CisrICAgICAgICB2ID0gdmdhX3JlYWRfd29yZF9sZSh2Z2EsIGFkZHIpOworICAgICAgICAgciA9ICh2ID4+IDgpICYgMHhmODsKKyAgICAgICAgIGcgPSAodiA+PiAzKSAmIDB4ZmM7CisgICAgICAgICBiID0gKHYgPDwgMykgJiAweGY4OworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDI7CisrICAgICAgICBhZGRyICs9IDI7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CisgCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgdiwgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICB2ID0gbGR1d19iZV9wKCh2b2lkICopcyk7CisrICAgICAgICB2ID0gdmdhX3JlYWRfd29yZF9iZSh2Z2EsIGFkZHIpOworICAgICAgICAgciA9ICh2ID4+IDgpICYgMHhmODsKKyAgICAgICAgIGcgPSAodiA+PiAzKSAmIDB4ZmM7CisgICAgICAgICBiID0gKHYgPDwgMykgJiAweGY4OworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDI7CisrICAgICAgICBhZGRyICs9IDI7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CitAQCAtMzU5LDM2ICszODUsMzYgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAvKgorICAqIDI0IGJpdCBjb2xvcgorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgaW50IHc7CisgICAgIHVpbnQzMl90IHIsIGcsIGI7CisgCisgICAgIHcgPSB3aWR0aDsKKyAgICAgZG8geworLSAgICAgICAgYiA9IHNbMF07CistICAgICAgICBnID0gc1sxXTsKKy0gICAgICAgIHIgPSBzWzJdOworKyAgICAgICAgYiA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCk7CisrICAgICAgICBnID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKTsKKysgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpOworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDM7CisrICAgICAgICBhZGRyICs9IDM7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CisgCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICByID0gc1swXTsKKy0gICAgICAgIGcgPSBzWzFdOworLSAgICAgICAgYiA9IHNbMl07CisrICAgICAgICByID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKTsKKysgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOworKyAgICAgICAgYiA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7CisgICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKKy0gICAgICAgIHMgKz0gMzsKKysgICAgICAgIGFkZHIgKz0gMzsKKyAgICAgICAgIGQgKz0gNDsKKyAgICAgfSB3aGlsZSAoLS13ICE9IDApOworIH0KK0BAIC0zOTYsNDQgKzQyMiwzNiBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorIC8qCisgICogMzIgYml0IGNvbG9yCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUzMl9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworLSNpZm5kZWYgSE9TVF9XT1JEU19CSUdFTkRJQU4KKy0gICAgbWVtY3B5KGQsIHMsIHdpZHRoICogNCk7CistI2Vsc2UKKyAgICAgaW50IHc7CisgICAgIHVpbnQzMl90IHIsIGcsIGI7CisgCisgICAgIHcgPSB3aWR0aDsKKyAgICAgZG8geworLSAgICAgICAgYiA9IHNbMF07CistICAgICAgICBnID0gc1sxXTsKKy0gICAgICAgIHIgPSBzWzJdOworKyAgICAgICAgYiA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCk7CisrICAgICAgICBnID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKTsKKysgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpOworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDQ7CisrICAgICAgICBhZGRyICs9IDQ7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKy0jZW5kaWYKKyB9CisgCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUzMl9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworLSNpZmRlZiBIT1NUX1dPUkRTX0JJR0VORElBTgorLSAgICBtZW1jcHkoZCwgcywgd2lkdGggKiA0KTsKKy0jZWxzZQorICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICByID0gc1sxXTsKKy0gICAgICAgIGcgPSBzWzJdOworLSAgICAgICAgYiA9IHNbM107CisrICAgICAgICByID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKTsKKysgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpOworKyAgICAgICAgYiA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMyk7CisgICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKKy0gICAgICAgIHMgKz0gNDsKKysgICAgICAgIGFkZHIgKz0gNDsKKyAgICAgICAgIGQgKz0gNDsKKyAgICAgfSB3aGlsZSAoLS13ICE9IDApOworLSNlbmRpZgorIH0KK2RpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYS5jIGIvaHcvZGlzcGxheS92Z2EuYworaW5kZXggYWQ3YTQ2NS4uNmZjOGM4NyAxMDA2NDQKKy0tLSBhL2h3L2Rpc3BsYXkvdmdhLmMKKysrKyBiL2h3L2Rpc3BsYXkvdmdhLmMKK0BAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIHZnYV9tZW1fd3JpdGViKFZHQUNvbW1vblN0YXRlICpzLCBod2FkZHIgYWRkciwgdWludDMyX3QgdmFsKQorIH0KKyAKKyB0eXBlZGVmIHZvaWQgdmdhX2RyYXdfbGluZV9mdW5jKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzcmNhZGRyLCBpbnQgd2lkdGgpOworIAorICNpbmNsdWRlICJ2Z2EtaGVscGVycy5oIgorIAorQEAgLTE2NjYsNyArMTY2Niw3IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dyYXBoaWMoVkdBQ29tbW9uU3RhdGUgKnMsIGludCBmdWxsX3VwZGF0ZSkKKyAgICAgICAgICAgICBpZiAoeV9zdGFydCA8IDApCisgICAgICAgICAgICAgICAgIHlfc3RhcnQgPSB5OworICAgICAgICAgICAgIGlmICghKGlzX2J1ZmZlcl9zaGFyZWQoc3VyZmFjZSkpKSB7CistICAgICAgICAgICAgICAgIHZnYV9kcmF3X2xpbmUocywgZCwgcy0+dnJhbV9wdHIgKyBhZGRyLCB3aWR0aCk7CisrICAgICAgICAgICAgICAgIHZnYV9kcmF3X2xpbmUocywgZCwgYWRkciwgd2lkdGgpOworICAgICAgICAgICAgICAgICBpZiAocy0+Y3Vyc29yX2RyYXdfbGluZSkKKyAgICAgICAgICAgICAgICAgICAgIHMtPmN1cnNvcl9kcmF3X2xpbmUocywgZCwgeSk7CisgICAgICAgICAgICAgfQorQEAgLTIxNzAsNiArMjE3MCw3IEBAIHZvaWQgdmdhX2NvbW1vbl9pbml0KFZHQUNvbW1vblN0YXRlICpzLCBPYmplY3QgKm9iaiwgYm9vbCBnbG9iYWxfdm1zdGF0ZSkKKyAgICAgaWYgKCFzLT52YmVfc2l6ZSkgeworICAgICAgICAgcy0+dmJlX3NpemUgPSBzLT52cmFtX3NpemU7CisgICAgIH0KKysgICAgcy0+dmJlX3NpemVfbWFzayA9IHMtPnZiZV9zaXplIC0gMTsKKyAKKyAgICAgcy0+aXNfdmJlX3Ztc3RhdGUgPSAxOworICAgICBtZW1vcnlfcmVnaW9uX2luaXRfcmFtX25vbWlncmF0ZSgmcy0+dnJhbSwgb2JqLCAidmdhLnZyYW0iLCBzLT52cmFtX3NpemUsCitkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2FfaW50LmggYi9ody9kaXNwbGF5L3ZnYV9pbnQuaAoraW5kZXggZGQ2Yzk1OC4uYWQzNGExZiAxMDA2NDQKKy0tLSBhL2h3L2Rpc3BsYXkvdmdhX2ludC5oCisrKysgYi9ody9kaXNwbGF5L3ZnYV9pbnQuaAorQEAgLTk0LDYgKzk0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVkdBQ29tbW9uU3RhdGUgeworICAgICB1aW50MzJfdCB2cmFtX3NpemU7CisgICAgIHVpbnQzMl90IHZyYW1fc2l6ZV9tYjsgLyogcHJvcGVydHkgKi8KKyAgICAgdWludDMyX3QgdmJlX3NpemU7CisrICAgIHVpbnQzMl90IHZiZV9zaXplX21hc2s7CisgICAgIHVpbnQzMl90IGxhdGNoOworICAgICBib29sIGhhc19jaGFpbjRfYWxpYXM7CisgICAgIE1lbW9yeVJlZ2lvbiBjaGFpbjRfYWxpYXM7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjczLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QwNjk1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjczLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gZTY1Mjk0MTU3ZDRiNjkzOTNiM2Y4MTljOTlmNGY2NDc0NTJiNDhlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyOCBBdWcgMjAxNyAxNDozMzowNyArMDIwMAorU3ViamVjdDogW1BBVENIXSB2Z2E6IGZpeCBkaXNwbGF5IHVwZGF0ZSByZWdpb24gY2FsY3VsYXRpb24gKHNwbGl0IHNjcmVlbikKKwordmdhIGRpc3BsYXkgdXBkYXRlIG1pcy1jYWxjdWxhdGVkIHRoZSByZWdpb24gZm9yIHRoZSBkaXJ0eSBiaXRtYXAKK3NuYXBzaG90IGluIGNhc2Ugc3BsaXQgc2NyZWVuIG1vZGUgaXMgdXNlZC4gIFRoaXMgY2FuIHRyaWdnZXIgYW4KK2Fzc2VydCBpbiBjcHVfcGh5c2ljYWxfbWVtb3J5X3NuYXBzaG90X2dldF9kaXJ0eSgpLgorCitJbXBhY3Q6ICBEb1MgZm9yIHByaXZpbGVnZWQgZ3Vlc3QgdXNlcnMuCisKK0ZpeGVzOiBDVkUtMjAxNy0xMzY3MworRml4ZXM6IGZlYzVlOGM5MmJlY2FkMjIzZGY5ZDk3Mjc3MDUyMmY2NGFhZmRiNzIKK0NjOiBQIEogUCA8cHBhbmRpdEByZWRoYXQuY29tPgorUmVwb3J0ZWQtYnk6IERhdmlkIEJ1Y2hhbmFuIDxkQHZpZGJ1Y2hhbmFuLmNvLnVrPgorU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CitNZXNzYWdlLWlkOiAyMDE3MDgyODEyMzMwNy4xNTM5Mi0xLWtyYXhlbEByZWRoYXQuY29tCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPWU2NTI5NDE1N2Q0YjY5MzkzYjNmODE5Yzk5ZjRmNjQ3NDUyYjQ4ZTNdCisKK0NWRTogQ1ZFLTIwMTctMTM2NzMKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvZGlzcGxheS92Z2EuYyB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EuYyBiL2h3L2Rpc3BsYXkvdmdhLmMKK2luZGV4IDM0MzMxMDIuLmFkN2E0NjUgMTAwNjQ0CistLS0gYS9ody9kaXNwbGF5L3ZnYS5jCisrKysgYi9ody9kaXNwbGF5L3ZnYS5jCitAQCAtMTYyOCw5ICsxNjI4LDE1IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dyYXBoaWMoVkdBQ29tbW9uU3RhdGUgKnMsIGludCBmdWxsX3VwZGF0ZSkKKyAgICAgeTEgPSAwOworIAorICAgICBpZiAoIWZ1bGxfdXBkYXRlKSB7CisrICAgICAgICByYW1fYWRkcl90IHJlZ2lvbl9zdGFydCA9IGFkZHIxOworKyAgICAgICAgcmFtX2FkZHJfdCByZWdpb25fZW5kID0gYWRkcjEgKyBsaW5lX29mZnNldCAqIGhlaWdodDsKKyAgICAgICAgIHZnYV9zeW5jX2RpcnR5X2JpdG1hcChzKTsKKy0gICAgICAgIHNuYXAgPSBtZW1vcnlfcmVnaW9uX3NuYXBzaG90X2FuZF9jbGVhcl9kaXJ0eSgmcy0+dnJhbSwgYWRkcjEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQgKiBoZWlnaHQsCisrICAgICAgICBpZiAocy0+bGluZV9jb21wYXJlIDwgaGVpZ2h0KSB7CisrICAgICAgICAgICAgLyogc3BsaXQgc2NyZWVuIG1vZGUgKi8KKysgICAgICAgICAgICByZWdpb25fc3RhcnQgPSAwOworKyAgICAgICAgfQorKyAgICAgICAgc25hcCA9IG1lbW9yeV9yZWdpb25fc25hcHNob3RfYW5kX2NsZWFyX2RpcnR5KCZzLT52cmFtLCByZWdpb25fc3RhcnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uX2VuZCAtIHJlZ2lvbl9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVJUWV9NRU1PUllfVkdBKTsKKyAgICAgfQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzcxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MmY3M2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzcxMS5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDEyMDFkMzA4NTE5ZjFlOTE1ODY2ZDc1ODNkNTEzNmQwM2NjMWQzODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTYW11ZWwgVGhpYmF1bHQgPHNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmc+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjM1OjUzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHNsaXJwOiBmaXggY2xlYXJpbmcgaWZxX3NvIGZyb20gcGVuZGluZyBwYWNrZXRzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1RoZSBpZl9mYXN0cSBhbmQgaWZfYmF0Y2hxIGNvbnRhaW4gbm90IG9ubHkgcGFja2V0cywgYnV0IHF1ZXVlcyBvZiBwYWNrZXRzCitmb3IgdGhlIHNhbWUgc29ja2V0LiBXaGVuIHNvZnJlZSBmcmVlcyBhIHNvY2tldCwgaXQgdGh1cyBoYXMgdG8gY2xlYXIgaWZxX3NvCitmcm9tIGFsbCB0aGUgcGFja2V0cyBmcm9tIHRoZSBxdWV1ZXMsIG5vdCBvbmx5IHRoZSBmaXJzdC4KKworU2lnbmVkLW9mZi1ieTogU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgorUmV2aWV3ZWQtYnk6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOpIDxmNGJ1Z0BhbXNhdC5vcmc+CitDYzogcWVtdS1zdGFibGVAbm9uZ251Lm9yZworU2lnbmVkLW9mZi1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD0xMjAxZDMwODUxOWYxZTkxNTg2NmQ3NTgzZDUxMzZkMDNjYzFkMzg0XQorCitDVkU6IENWRS0yMDE3LTEzNzExCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNsaXJwL3NvY2tldC5jIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2xpcnAvc29ja2V0LmMgYi9zbGlycC9zb2NrZXQuYworaW5kZXggZWNlYzAyOS4uY2I3YjViNiAxMDA2NDQKKy0tLSBhL3NsaXJwL3NvY2tldC5jCisrKysgYi9zbGlycC9zb2NrZXQuYworQEAgLTYwLDI5ICs2MCwzNiBAQCBzb2NyZWF0ZShTbGlycCAqc2xpcnApCisgfQorIAorIC8qCisrICogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gc28gZnJvbSB0aGUgZ2l2ZW4gbWVzc2FnZSBxdWV1ZS4KKysgKi8KKytzdGF0aWMgdm9pZAorK3NvcWZyZWUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBxdWVoZWFkICpxaCkKKyt7CisrICAgIHN0cnVjdCBtYnVmICppZnE7CisrCisrICAgIGZvciAoaWZxID0gKHN0cnVjdCBtYnVmICopIHFoLT5xaF9saW5rOworKyAgICAgICAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZxICE9IHFoOworKyAgICAgICAgICAgICBpZnEgPSBpZnEtPmlmcV9uZXh0KSB7CisrICAgICAgICBpZiAoaWZxLT5pZnFfc28gPT0gc28pIHsKKysgICAgICAgICAgICBzdHJ1Y3QgbWJ1ZiAqaWZtOworKyAgICAgICAgICAgIGlmcS0+aWZxX3NvID0gTlVMTDsKKysgICAgICAgICAgICBmb3IgKGlmbSA9IGlmcS0+aWZzX25leHQ7IGlmbSAhPSBpZnE7IGlmbSA9IGlmbS0+aWZzX25leHQpIHsKKysgICAgICAgICAgICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorK30KKysKKysvKgorICAqIHJlbXF1ZSBhbmQgZnJlZSBhIHNvY2tldCwgY2xvYmJlciBjYWNoZQorICAqLworIHZvaWQKKyBzb2ZyZWUoc3RydWN0IHNvY2tldCAqc28pCisgeworICAgU2xpcnAgKnNsaXJwID0gc28tPnNsaXJwOworLSAgc3RydWN0IG1idWYgKmlmbTsKKyAKKy0gIGZvciAoaWZtID0gKHN0cnVjdCBtYnVmICopIHNsaXJwLT5pZl9mYXN0cS5xaF9saW5rOworLSAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZtICE9ICZzbGlycC0+aWZfZmFzdHE7CistICAgICAgIGlmbSA9IGlmbS0+aWZxX25leHQpIHsKKy0gICAgaWYgKGlmbS0+aWZxX3NvID09IHNvKSB7CistICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOworLSAgICB9CistICB9CistCistICBmb3IgKGlmbSA9IChzdHJ1Y3QgbWJ1ZiAqKSBzbGlycC0+aWZfYmF0Y2hxLnFoX2xpbms7CistICAgICAgIChzdHJ1Y3QgcXVlaGVhZCAqKSBpZm0gIT0gJnNsaXJwLT5pZl9iYXRjaHE7CistICAgICAgIGlmbSA9IGlmbS0+aWZxX25leHQpIHsKKy0gICAgaWYgKGlmbS0+aWZxX3NvID09IHNvKSB7CistICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOworLSAgICB9CistICB9CisrICBzb3FmcmVlKHNvLCAmc2xpcnAtPmlmX2Zhc3RxKTsKKysgIHNvcWZyZWUoc28sICZzbGlycC0+aWZfYmF0Y2hxKTsKKyAKKyAgIGlmIChzby0+c29fZW11PT1FTVVfUlNIICYmIHNvLT5leHRyYSkgeworIAlzb2ZyZWUoc28tPmV4dHJhKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xNDE2Ny5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjlhZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSBlZDRmODZlOGI2ZWZmOGU2MDBjNjlhZGVlNjhjN2NkMzRkZDJjY2NiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitEYXRlOiBUaHUsIDcgU2VwIDIwMTcgMTI6MDI6NTYgKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlib290OiB2YWxpZGF0ZSBtdWx0aWJvb3QgaGVhZGVyIGFkZHJlc3MgdmFsdWVzCisKK1doaWxlIGxvYWRpbmcga2VybmVsIHZpYSBtdWx0aWJvb3QtdjEgaW1hZ2UsIChmbGFncyAmIDB4MDAwMTAwMDApCitpbmRpY2F0ZXMgdGhhdCBtdWx0aWJvb3QgaGVhZGVyIGNvbnRhaW5zIHZhbGlkIGFkZHJlc3NlcyB0byBsb2FkCit0aGUga2VybmVsIGltYWdlLiBUaGVzZSBhZGRyZXNzZXMgYXJlIHVzZWQgdG8gY29tcHV0ZSBrZXJuZWwKK3NpemUgYW5kIGtlcm5lbCB0ZXh0IG9mZnNldCBpbiB0aGUgT1MgaW1hZ2UuIFZhbGlkYXRlIHRoZXNlCithZGRyZXNzIHZhbHVlcyB0byBhdm9pZCBhbiBPT0IgYWNjZXNzIGlzc3VlLgorCitUaGlzIGlzIENWRS0yMDE3LTE0MTY3LgorCitSZXBvcnRlZC1ieTogVGhvbWFzIEdhcm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK01lc3NhZ2UtSWQ6IDwyMDE3MDkwNzA2MzI1Ni43NDE4LTEtcHBhbmRpdEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9ZWQ0Zjg2ZThiNmVmZjhlNjAwYzY5YWRlZTY4YzdjZDM0ZGQyY2NjYl0KKworQ1ZFOiBDVkUtMjAxNy0xNDE2NworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBody9pMzg2L211bHRpYm9vdC5jIHwgMTkgKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9ody9pMzg2L211bHRpYm9vdC5jIGIvaHcvaTM4Ni9tdWx0aWJvb3QuYworaW5kZXggNjAwMWY0Yy4uYzdiNzBjOSAxMDA2NDQKKy0tLSBhL2h3L2kzODYvbXVsdGlib290LmMKKysrKyBiL2h3L2kzODYvbXVsdGlib290LmMKK0BAIC0yMjEsMTUgKzIyMSwzNCBAQCBpbnQgbG9hZF9tdWx0aWJvb3QoRldDZmdTdGF0ZSAqZndfY2ZnLAorICAgICAgICAgdWludDMyX3QgbWhfaGVhZGVyX2FkZHIgPSBsZGxfcChoZWFkZXIraSsxMik7CisgICAgICAgICB1aW50MzJfdCBtaF9sb2FkX2VuZF9hZGRyID0gbGRsX3AoaGVhZGVyK2krMjApOworICAgICAgICAgdWludDMyX3QgbWhfYnNzX2VuZF9hZGRyID0gbGRsX3AoaGVhZGVyK2krMjQpOworKworICAgICAgICAgbWhfbG9hZF9hZGRyID0gbGRsX3AoaGVhZGVyK2krMTYpOworKyAgICAgICAgaWYgKG1oX2hlYWRlcl9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7CisrICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2xvYWRfYWRkciBhZGRyZXNzXG4iKTsKKysgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAgfQorKworICAgICAgICAgdWludDMyX3QgbWJfa2VybmVsX3RleHRfb2Zmc2V0ID0gaSAtIChtaF9oZWFkZXJfYWRkciAtIG1oX2xvYWRfYWRkcik7CisgICAgICAgICB1aW50MzJfdCBtYl9sb2FkX3NpemUgPSAwOworICAgICAgICAgbWhfZW50cnlfYWRkciA9IGxkbF9wKGhlYWRlcitpKzI4KTsKKyAKKyAgICAgICAgIGlmIChtaF9sb2FkX2VuZF9hZGRyKSB7CisrICAgICAgICAgICAgaWYgKG1oX2Jzc19lbmRfYWRkciA8IG1oX2xvYWRfYWRkcikgeworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgbWhfYnNzX2VuZF9hZGRyIGFkZHJlc3NcbiIpOworKyAgICAgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtYl9rZXJuZWxfc2l6ZSA9IG1oX2Jzc19lbmRfYWRkciAtIG1oX2xvYWRfYWRkcjsKKysKKysgICAgICAgICAgICBpZiAobWhfbG9hZF9lbmRfYWRkciA8IG1oX2xvYWRfYWRkcikgeworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgbWhfbG9hZF9lbmRfYWRkciBhZGRyZXNzXG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgbWJfbG9hZF9zaXplID0gbWhfbG9hZF9lbmRfYWRkciAtIG1oX2xvYWRfYWRkcjsKKyAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgaWYgKGtlcm5lbF9maWxlX3NpemUgPCBtYl9rZXJuZWxfdGV4dF9vZmZzZXQpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIGtlcm5lbF9maWxlX3NpemVcbiIpOworKyAgICAgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtYl9rZXJuZWxfc2l6ZSA9IGtlcm5lbF9maWxlX3NpemUgLSBtYl9rZXJuZWxfdGV4dF9vZmZzZXQ7CisgICAgICAgICAgICAgbWJfbG9hZF9zaXplID0gbWJfa2VybmVsX3NpemU7CisgICAgICAgICB9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FkZC1wdGVzdC1pbi1tYWtlZmlsZS12MTAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUtdjEwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NjM5ODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUtdjEwLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNDIwMWE1NzkxZmM0Nzk4YTQ1YTliOWY4ODE2MDJkN2JhY2I3NGVkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDMxIEF1ZyAyMDE3IDExOjA2OjU2IC0wNzAwCitTdWJqZWN0OiBBZGQgc3VicGFja2FnZSAtcHRlc3Qgd2hpY2ggcnVucyBhbGwgdW5pdCB0ZXN0IGNhc2VzIGZvciBxZW11LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQoraW5kZXggZjA4Yjc0MS4uM2QxYjNlOSAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKKysrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKK0BAIC05MjQsNCArOTI0LDEyIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQorIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvKi5kKQorIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvbGlicW9zLyouZCkKKyAKKytidWlsZHRlc3QtVEVTVFM6ICQoY2hlY2stdW5pdC15KQorKworK3J1bnRlc3QtVEVTVFM6CisrCWZvciBmIGluICQoY2hlY2stdW5pdC15KTsgZG8gXAorKwkJbmY9JCQoZWNobyAkJGYgfCBzZWQgJ3MvdGVzdHNcLy9cLlwvL2cnKTsgXAorKwkJJCRuZjsgXAorKwlkb25lCisrCisgZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FkZC1wdGVzdC1pbi1tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FkZC1wdGVzdC1pbi1tYWtlZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNlMzQ3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQWRkIHN1YnBhY2thZ2UgLXB0ZXN0IHdoaWNoIHJ1bnMgYWxsIHVuaXQgdGVzdCBjYXNlcyBmb3IgcWVtdS4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0cy9NYWtlZmlsZS5pbmNsdWRlIHwgOCArKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUgYi90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCi1pbmRleCAxNGJlNDkxLi4wZmNlMzdhIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotKysrIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotQEAgLTc3NiwzICs3NzYsMTEgQEAgYWxsOiAkKFFFTVVfSU9URVNUU19IRUxQRVJTLXkpCi0gCi0gLWluY2x1ZGUgJCh3aWxkY2FyZCB0ZXN0cy8qLmQpCi0gLWluY2x1ZGUgJCh3aWxkY2FyZCB0ZXN0cy9saWJxb3MvKi5kKQotKwotK2J1aWxkdGVzdC1URVNUUzogJChjaGVjay11bml0LXkpCi0rCi0rcnVudGVzdC1URVNUUzoKLSsJZm9yIGYgaW4gJChjaGVjay11bml0LXkpOyBkbyBcCi0rCQluZj0kJChlY2hvICQkZiB8IHNlZCAncy90ZXN0c1wvL1wuXC8vZycpOyBcCi0rCQkkJG5mOyBcCi0rCWRvbmUKLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmJiYzZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBiZWY5M2JiODE1ODhiNTMyM2E1MmQyZTE4ODZmMmE3N2I2NGE5NzZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjYgRmViIDIwMTMgMTE6NDM6MjggLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xOF0gYXBpYzogZml4dXAgZmFsbHRocm91Z2ggdG8gUElDCisKK0NvbW1pdCAwZTIxZTEyYmIzMTFjNGMxMDk1ZDAyNjlkYzJlZjgxMTk2Y2NiNjBhIFtEb24ndCByb3V0ZSBQSUMKK2ludGVycnVwdHMgdGhyb3VnaCB0aGUgbG9jYWwgQVBJQyBpZiB0aGUgbG9jYWwgQVBJQyBjb25maWcgc2F5cyBzby5dCittaXNzZWQgYSBjaGVjayB0byBlbnN1cmUgdGhlIGxvY2FsIEFQSUMgaXMgZW5hYmxlZC4gU2luY2UgaWYgdGhlIGxvY2FsCitBUElDIGlzIGRpc2FibGVkIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGxvY2FsIEFQSUMgY29uZmlnIHNheXMuCisKK0lmIHRoaXMgY2hlY2sgaXNuJ3QgZG9uZSBhbmQgdGhlIGd1ZXN0IGhhcyBkaXNhYmxlZCB0aGUgbG9jYWwgQVBJQyB0aGUKK2d1ZXN0IHdpbGwgcmVjZWl2ZSBhIGdlbmVyYWwgcHJvdGVjdGlvbiBmYXVsdCwgc2ltaWxhciB0byB3aGF0IGlzIHNlZW4KK2hlcmU6CisKK2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDEyLTEyL21zZzAyMzA0Lmh0bWwKKworVGhlIEdQRiBpcyBjYXVzZWQgYnkgYW4gYXR0ZW1wdCB0byBzZXJ2aWNlIGludGVycnVwdCAweGZmZmZmZmZmLiBUaGlzCitjb21lcyBhYm91dCBzaW5jZSBjcHVfZ2V0X3BpY19pbnRlcnJ1cHQoKSBjYWxscyBhcGljX2FjY2VwdF9waWNfaW50cigpCisod2l0aCB0aGUgbG9jYWwgQVBJQyBkaXNhYmxlZCBhcGljX2dldF9pbnRlcnJ1cHQoKSByZXR1cm5zIC0xKS4KK2FwaWNfYWNjZXB0X3BpY19pbnRyKCkgcmV0dXJucyAwIGFuZCB0aHVzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIHdoaWNoCitpcyByZXR1cm5lZCBmcm9tIGNwdV9nZXRfcGljX2ludGVycnVwdCgpLCBhbmQgd2hpY2ggaXMgYXR0ZW1wdGVkIHRvIGJlCitzZXJ2aWNlZCwgaXMgLTEuCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTMtMDQvbXNnMDA4NzguaHRtbF0KK1NpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CistLS0KKyBody9pbnRjL2FwaWMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2h3L2ludGMvYXBpYy5jIGIvaHcvaW50Yy9hcGljLmMKK2luZGV4IDQ1ODg3ZDk5Li5jNWFlNDA4NyAxMDA2NDQKKy0tLSBhL2h3L2ludGMvYXBpYy5jCisrKysgYi9ody9pbnRjL2FwaWMuYworQEAgLTU4Nyw3ICs1ODcsNyBAQCBpbnQgYXBpY19hY2NlcHRfcGljX2ludHIoRGV2aWNlU3RhdGUgKmRldikKKyAgICAgQVBJQ0NvbW1vblN0YXRlICpzID0gQVBJQ19DT01NT04oZGV2KTsKKyAgICAgdWludDMyX3QgbHZ0MDsKKyAKKy0gICAgaWYgKCFzKQorKyAgICBpZiAoIXMgfHwgIShzLT5zcHVyaW91c192ZWMgJiBBUElDX1NWX0VOQUJMRSkpCisgICAgICAgICByZXR1cm4gLTE7CisgCisgICAgIGx2dDAgPSBzLT5sdnRbQVBJQ19MVlRfTElOVDBdOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY29uZmlndXJlLWZpeC1EYXJ3aW4tdGFyZ2V0LWRldGVjdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NvbmZpZ3VyZS1maXgtRGFyd2luLXRhcmdldC1kZXRlY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5Y2RjMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY29uZmlndXJlLWZpeC1EYXJ3aW4tdGFyZ2V0LWRldGVjdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLQotRnJvbSA5YWMwOTZkOGVjY2YyZDU2ZWNlNjQ2MzIwYzI4MmM4MzY5ZjgzMzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjkgSnVsIDIwMTQgMTg6MzU6NTkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBmaXggRGFyd2luIHRhcmdldCBkZXRlY3Rpb24KLQotZml4IERhcndpbiB0YXJnZXQgZGV0ZWN0aW9uIGZvciBxZW11Ci1jcm9zcy1jb21waWxhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDI4M2M3MWMuLjFjNjZhMTEgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTQ0NCw2ICs0NDQsOCBAQCBlbGlmIGNoZWNrX2RlZmluZSBfX3N1bl9fIDsgdGhlbgotICAgdGFyZ2V0b3M9J1N1bk9TJwotIGVsaWYgY2hlY2tfZGVmaW5lIF9fSEFJS1VfXyA7IHRoZW4KLSAgIHRhcmdldG9zPSdIYWlrdScKLStlbGlmIGNoZWNrX2RlZmluZSBfX0FQUExFX18gOyB0aGVuCi0rICB0YXJnZXRvcz0nRGFyd2luJwotIGVsc2UKLSAgIHRhcmdldG9zPWB1bmFtZSAtc2AKLSBmaQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3BwY19sb2NraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNzIyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaApAQCAtMCwwICsxLDEwNSBAQAorSSd2ZSB0cmFja2VkIGRvd24gd2hhdCBJIHRoaW5rIGlzIGEgcHJvYmxlbSBjYXVzaW5nIHFlbXUtc3lzdGVtLXBwYwordG8gaGFuZyB3aGlsc3QgYm9vdGluZyBpbWFnZXMuCisKK0kgYmVsaWV2ZSB0aGUgZGVjcmVtZW50ZXIgdGltZXIgc3RvcHMgcmVjZWl2aW5nIGludGVycnVwdHMgc28KK3Rhc2tzIGluIG91ciBpbWFnZXMgaGFuZyBpbmRlZmluaXRlbHkgYXMgdGhlIHRpbWVyIHN0b3BwZWQuIAorCitJdCBjYW4gYmUgc3VtbWVkIHVwIHdpdGggdGhpcyBsaW5lIG9mIGRlYnVnOgorCitwcGNfc2V0X2lycTogMHg1NWI0ZTBkNTYyZjAgbl9JUlEgOCBsZXZlbCAxID0+IHBlbmRpbmcgMDAwMDAxMDByZXEgMDAwMDAwMDQKKworSXQgc2hvdWxkIG5vcm1hbGx5IHJlYWQ6CisKK3BwY19zZXRfaXJxOiAweDU1YjRlMGQ1NjJmMCBuX0lSUSA4IGxldmVsIDEgPT4gcGVuZGluZyAwMDAwMDEwMHJlcSAwMDAwMDAwMgorCitUaGUgcXVlc3Rpb24gaXMgd2h5IENQVV9JTlRFUlJVUFRfRVhJVFRCIGVuZHMgdXAgYmVpbmcgc2V0IHdoZW4gdGhlCitsaW5lcyBhYm92ZSB0aGlzIGxvZyBtZXNzYWdlIGNsZWFybHkgc2V0cyBDUFVfSU5URVJSVVBUX0hBUkQgKHZpYSAKK2NwdV9pbnRlcnJ1cHQoKSApLgorCitJIG5vdGUgaW4gY3B1Lmg6CisKKyAgICAvKiB1cGRhdGVzIHByb3RlY3RlZCBieSBCUUwgKi8KKyAgICB1aW50MzJfdCBpbnRlcnJ1cHRfcmVxdWVzdDsKKworKGZvciBzdHJ1Y3QgQ1BVU3RhdGUpCisKK1RoZSBwcGMgY29kZSBkb2VzICJjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEIiIGluIDUKK3BsYWNlcywgMyBpbiBleGNwX2hlbHBlci5jIGFuZCAyIGluIGhlbHBlcl9yZWdzLmguIEluIGFsbCBjYXNlcywgIAorZ19hc3NlcnQocWVtdV9tdXRleF9pb3RocmVhZF9sb2NrZWQoKSk7IGZhaWxzLiBJZiBJIGRvIHNvbWV0aGluZyBsaWtlOgorCitpZiAoIXFlbXVfbXV0ZXhfaW90aHJlYWRfbG9ja2VkKCkpIHsKKyAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKyAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7CisgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKK30gZWxzZSB7CisgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworfQorCitpbiB0aGVzZSBjYWxsIHNpdGVzIHRoZW4gSSBjYW4gbm8gbG9uZ2VyIGxvY2sgcWVtdSB1cCB3aXRoIG15IHRlc3QKK2Nhc2UuCisKK0kgc3VzcGVjdCB0aGUgX0hBUkQgc2V0dGluZyBnZXRzIG92ZXJ3cml0dGVuIHdoaWNoIHN0b3BzIHRoZSAKK2RlY3JlbWVudGVyIGludGVycnVwdHMgYmVpbmcgZGVsaXZlcmVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbSXNzdWUgZGlzY3Vzc2VkIG9uIHFlbXUgbWFpbGluZyBsaXN0IDIwMTcvMTEvMjBdCitSUCAyMDE3LzExLzIwCisKK0luZGV4OiBxZW11LTIuMTAuMS90YXJnZXQvcHBjL2V4Y3BfaGVscGVyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxZW11LTIuMTAuMS5vcmlnL3RhcmdldC9wcGMvZXhjcF9oZWxwZXIuYworKysrIHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvZXhjcF9oZWxwZXIuYworQEAgLTIwNyw3ICsyMDcsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG93ZXJwY19leGNwKFBvd2VyUENDCisgICAgICAgICAgICAgICAgICAgICAgICAgIkVudGVyaW5nIGNoZWNrc3RvcCBzdGF0ZVxuIik7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGNzLT5oYWx0ZWQgPSAxOworLSAgICAgICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKKysgICAgICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKysgICAgICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7CisrICAgICAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmIChlbnYtPm1zcl9tYXNrICYgTVNSX0hWQikgeworICAgICAgICAgICAgIC8qIElTQSBzcGVjaWZpZXMgSFYsIGJ1dCBjYW4gYmUgZGVsaXZlcmVkIHRvIGd1ZXN0IHdpdGggSFYgY2xlYXIKK0BAIC05NDAsNyArOTQyLDkgQEAgdm9pZCBoZWxwZXJfc3RvcmVfbXNyKENQVVBQQ1N0YXRlICplbnYsCisgCisgICAgIGlmIChleGNwICE9IDApIHsKKyAgICAgICAgIENQVVN0YXRlICpjcyA9IENQVShwcGNfZW52X2dldF9jcHUoZW52KSk7CistICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7CisrICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKysgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKKysgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7CisgICAgICAgICByYWlzZV9leGNlcHRpb24oZW52LCBleGNwKTsKKyAgICAgfQorIH0KK0BAIC05OTUsNyArOTk5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGRvX3JmaShDUFVQUENTdGF0ZSAqZQorICAgICAvKiBObyBuZWVkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbiBoZXJlLAorICAgICAgKiBhcyByZmkgaXMgYWx3YXlzIHRoZSBsYXN0IGluc24gb2YgYSBUQgorICAgICAgKi8KKy0gICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOworKyAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKysgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworKyAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOworIAorICAgICAvKiBSZXNldCB0aGUgcmVzZXJ2YXRpb24gKi8KKyAgICAgZW52LT5yZXNlcnZlX2FkZHIgPSAtMTsKK0luZGV4OiBxZW11LTIuMTAuMS90YXJnZXQvcHBjL2hlbHBlcl9yZWdzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxZW11LTIuMTAuMS5vcmlnL3RhcmdldC9wcGMvaGVscGVyX3JlZ3MuaAorKysrIHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvaGVscGVyX3JlZ3MuaAorQEAgLTExNCwxMSArMTE0LDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGhyZWdfc3RvcmVfbXNyKENQVVBQQ1MKKyAgICAgfQorICAgICBpZiAoKCh2YWx1ZSA+PiBNU1JfSVIpICYgMSkgIT0gbXNyX2lyIHx8CisgICAgICAgICAoKHZhbHVlID4+IE1TUl9EUikgJiAxKSAhPSBtc3JfZHIpIHsKKy0gICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKKysgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOworKyAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworKyAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKKyAgICAgfQorICAgICBpZiAoKGVudi0+bW11X21vZGVsICYgUE9XRVJQQ19NTVVfQk9PS0UpICYmCisgICAgICAgICAoKHZhbHVlID4+IE1TUl9HUykgJiAxKSAhPSBtc3JfZ3MpIHsKKy0gICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKKysgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOworKyAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworKyAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKKyAgICAgfQorICAgICBpZiAodW5saWtlbHkoKGVudi0+ZmxhZ3MgJiBQT1dFUlBDX0ZMQUdfVEdQUikgJiYKKyAgICAgICAgICAgICAgICAgICgodmFsdWUgXiBlbnYtPm1zcikgJiAoMSA8PCBNU1JfVEdQUikpKSkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9xZW11LTIuNS4wLWNmbGFncy5wYXRjaAppbmRleCAxNzMzOTRmLi5lYjk5ZDE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9xZW11LTIuNS4wLWNmbGFncy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9xZW11LTIuNS4wLWNmbGFncy5wYXRjaApAQCAtMSwzICsxLDUgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQogQEAgLTQ0NjgsMTAgKzQ0NjgsNiBAQCBmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvdGFyZ2V0LXBwYy1maXgtdXNlci1tb2RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvdGFyZ2V0LXBwYy1maXgtdXNlci1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTIxZTcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3RhcmdldC1wcGMtZml4LXVzZXItbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVtRZW11LXBwY10gW1BBVENIIDEvMV0gdGFyZ2V0LXBwYywgdGNnOiBmaXggdXNlcm1vZGUgc2VnZmF1bHQgd2l0aCBwdGhyZWFkCi0KLUZyb206IFNhbSBCb2Jyb2ZmCi1TdWJqZWN0OiBbUWVtdS1wcGNdIFtQQVRDSCAxLzFdIHRhcmdldC1wcGMsIHRjZzogZml4IHVzZXJtb2RlIHNlZ2ZhdWx0IHdpdGggcHRocmVhZF9jcmVhdGUoKQotRGF0ZTogTW9uLCAzMCBKYW4gMjAxNyAxNjowODowNyArMTEwMAotUHJvZ3JhbXMgcnVuIHVuZGVyIHFlbXUtcHBjNjQgb24gYW4geDg2XzY0IGhvc3QgY3VycmVudGx5IHNlZ2ZhdWx0Ci1pZiB0aGV5IHVzZSBwdGhyZWFkX2NyZWF0ZSgpIGR1ZSB0byB0aGUgYWRqdXN0bWVudCBtYWRlIHRvIHRoZSBOSVAgaW4KLWNvbW1pdCBiZDZmZWZlNzFjZWM1YTBjN2QyYmU0YWM5NjMwN2YyNWRiNTZhYmY5LgotCi1UaGlzIHBhdGNoIGNoYW5nZXMgY3B1X2xvb3AoKSB0byBzZXQgdGhlIE5JUCBiYWNrIHRvIHRoZQotcHJlLWluY3JlbWVudGVkIHZhbHVlIGJlZm9yZSBjYWxsaW5nIGRvX3N5c2NhbGwoKSwgd2hpY2ggY2F1c2VzIHRoZQotY29ycmVjdCBhZGRyZXNzIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXcgdGhyZWFkIGFuZCBjb3JyZWN0cyB0aGUgZmF1bHQuCi0KLVNpZ25lZC1vZmYtYnk6IFNhbSBCb2Jyb2ZmIDxhZGRyZXNzQGhpZGRlbj4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLQotbGludXgtdXNlci9tYWluLmMgfCA0ICsrKy0KLTEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvbWFpbi5jIGIvbGludXgtdXNlci9tYWluLmMKLWluZGV4IDMwMDQ5NTgxZWYuLmI1ZGVlMDE1NDEgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL21haW4uYwotKysrIGIvbGludXgtdXNlci9tYWluLmMKLUBAIC0xNzEyLDE4ICsxNzEyLDIwIEBAIHZvaWQgY3B1X2xvb3AoQ1BVUFBDU3RhdGUgKmVudikKLSAgICAgICAgICAgICAgKiBpbiBzeXNjYWxscy4KLSAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICBlbnYtPmNyZlswXSAmPSB+MHgxOwotKyAgICAgICAgICAgIGVudi0+bmlwICs9IDQ7Ci0gICAgICAgICAgICAgcmV0ID0gZG9fc3lzY2FsbChlbnYsIGVudi0+Z3ByWzBdLCBlbnYtPmdwclszXSwgZW52LT5ncHJbNF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPmdwcls1XSwgZW52LT5ncHJbNl0sIGVudi0+Z3ByWzddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5ncHJbOF0sIDAsIDApOwotICAgICAgICAgICAgIGlmIChyZXQgPT0gLVRBUkdFVF9FUkVTVEFSVFNZUykgewotKyAgICAgICAgICAgICAgICBlbnYtPm5pcCAtPSA0OwotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWYgKHJldCA9PSAodGFyZ2V0X3Vsb25nKSgtVEFSR0VUX1FFTVVfRVNJR1JFVFVSTikpIHsKLSsgICAgICAgICAgICAgICAgZW52LT5uaXAgLT0gNDsKLSAgICAgICAgICAgICAgICAgLyogUmV0dXJuaW5nIGZyb20gYSBzdWNjZXNzZnVsIHNpZ3JldHVybiBzeXNjYWxsLgotICAgICAgICAgICAgICAgICAgICBBdm9pZCBjb3JydXB0aW5nIHJlZ2lzdGVyIHN0YXRlLiAgKi8KLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVudi0+bmlwICs9IDQ7Ci0gICAgICAgICAgICAgaWYgKHJldCA+ICh0YXJnZXRfdWxvbmcpKC01MTUpKSB7Ci0gICAgICAgICAgICAgICAgIGVudi0+Y3JmWzBdIHw9IDB4MTsKLSAgICAgICAgICAgICAgICAgcmV0ID0gLXJldDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWI0OTM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMC4wLmJiCkBAIC0wLDAgKzEsNjMgQEAKK3JlcXVpcmUgcWVtdS5pbmMKKworaW5oZXJpdCBwdGVzdAorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIG1ha2UiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ0MWMyOGQyY2Y4NmUxNWEzN2ZhNDdlMTVhNzJmYmFjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO2VuZGxpbmU9MjQ7bWQ1PWMwNGRlZjdhZTM4ODUwZTdkM2VmNTQ4NTg4MTU5OTEzIgorCitTUkNfVVJJID0gImh0dHA6Ly93aWtpLnFlbXUtcHJvamVjdC5vcmcvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wb3dlcnBjX3JvbS5iaW4gXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1ncmFicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd2Fjb20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWRkLXB0ZXN0LWluLW1ha2VmaWxlLXYxMC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcWVtdS1lbmxhcmdlLWVudi1lbnRyeS1zaXplLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vLXZhbGdyaW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhdGhsaW1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9xZW11LTIuNS4wLWNmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nbGliYy0yLjI1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUHJvdmlkZS1zdXBwb3J0LWZvci10aGUtQ1VTRS1UUE0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1JbnRyb2R1Y2UtY29uZGl0aW9uLXRvLW5vdGlmeS13YWl0ZXJzLW9mLWNvbXBsZXRlZC1jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtSW50cm9kdWNlLWNvbmRpdGlvbi1pbi1UUE0tYmFja2VuZC1mb3Itbm90aWZpY2F0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM2NzMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM2NzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNjcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHBjX2xvY2tpbmcucGF0Y2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJxZW11LSg/UDxwdmVyPlxkK1wuLiopXC50YXIiCisKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgICBmaWxlOi8vZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NwdXMuYy1xZW11X2NwdV9raWNrX3RocmVhZF9kZWJ1Z2dpbmcucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2E3MzQ0MWRlNzNhOWI1MmM2YzQ5Yzk3MTkwZDIxODUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2U5ZjM5ZTEzMDZlNmRjYzU5NTQ5NGU5MWMxNDY0ZDRiMDNmNTVkZGQyMDUzMTgzZTBlMWI2OWY3Zjc3NmQ0OCIKKworQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huNjQgPSAibnVsbCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBQcmV2ZW50IFFBIHdhcm5pbmdzIGFib3V0IGluc3RhbGxlZCAke2xvY2Fsc3RhdGVkaXJ9L3J1bgorICAgIGlmIFsgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIF07IHRoZW4gcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuOyBmaQorICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9wb3dlcnBjX3JvbS5iaW4gJHtEfSR7ZGF0YWRpcn0vcWVtdQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXJMICR7Qn0vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KKwlmaW5kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIC10eXBlIGYgLW5hbWUgIiouW1NzaGNvZF0iIHwgeGFyZ3MgLWkgcm0gLXJmIHt9CisKKwljcCAke1N9L3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3MDAwOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLXJlcXVpcmUgcWVtdS5pbmMKLQotaW5oZXJpdCBwdGVzdAotCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIG1ha2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ0MWMyOGQyY2Y4NmUxNWEzN2ZhNDdlMTVhNzJmYmFjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO2VuZGxpbmU9MjQ7bWQ1PWMwNGRlZjdhZTM4ODUwZTdkM2VmNTQ4NTg4MTU5OTEzIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCi0gICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1ncmFicy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZXhjbHVkZS1zb21lLWFybS1FQUJJLW9ic29sZXRlLXN5c2NhbGxzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly93YWNvbS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYWRkLXB0ZXN0LWluLW1ha2VmaWxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1maXgtRGFyd2luLXRhcmdldC1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3FlbXUtZW5sYXJnZS1lbnYtZW50cnktc2l6ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbm8tdmFsZ3JpbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BhdGhsaW1pdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3RhcmdldC1wcGMtZml4LXVzZXItbW9kZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZ2xpYmMtMi4yNS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDRiMzNlMjE4NjY0MTI2ODlmMThiN2FkNmRhZjBhNTRkOGY5NTlhNy5wYXRjaCBcCi0iCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1JbnRyb2R1Y2UtY29uZGl0aW9uLXRvLW5vdGlmeS13YWl0ZXJzLW9mLWNvbXBsZXRlZC1jLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTk5MDgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTk5MTIucGF0Y2ggXAotIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY3B1cy5jLXFlbXVfY3B1X2tpY2tfdGhyZWFkX2RlYnVnZ2luZy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSsgImh0dHA6Ly93aWtpLnFlbXUtcHJvamVjdC5vcmcvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE3OTQwZGNlMDYzYjZjZTQ1MGExMmU3MTlhNmM5YzQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhZmQ1ZDdmNjQ5OTA3YjZiNjE3YjgyMjY5MmY0YzgyZTYwY2YyOWJjMGZjNThiYzIwMzYyMTliNTkxZTVlNjIiCi0KLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KLSAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQltYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci0JZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQotCi0JY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdXdyYXBwZXItY3Jvc3NfMS4wLmJiCmluZGV4IGU0MGNkYWYuLmM5ODNmYmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXV3cmFwcGVyLWNyb3NzXzEuMC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiUUVNVSB3cmFwcGVyIHNjcmlwdCIKK0hPTUVQQUdFID0gImh0dHA6Ly9xZW11Lm9yZyIKIExJQ0VOU0UgPSAiTUlUIgogCiBTID0gIiR7V09SS0RJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4ODlmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2UuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJNYWtlZmlsZSBkZWJ1Z2dlciB3aGljaCBpcyBnbnVtYWtlIGNvbXBhdGlibGUiCi1ERVNDUklQVElPTiA9ICJyZW1ha2UgaXMgYSBwYXRjaGVkIGFuZCBtb2Rlcm5pemVkIHZlcnNpb24gb2YgR05VIG1ha2UgXAotdXRpbGl0eSB0aGF0IGFkZHMgaW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nLCB0aGUgYWJpbGl0eSB0byB0cmFjZSBcCi1leGVjdXRpb24gaW4gYSBjb21wcmVoZW5zaWJsZSB3YXksIGFuZCBhIGRlYnVnZ2VyLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2Jhc2hkYi5zb3VyY2Vmb3JnZS5uZXQvcmVtYWtlLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yb2NreS9yZW1ha2UuZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIm1ha2UiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWFrZV0gPSAiJHtiaW5kaXJ9L21ha2UiCi1BTFRFUk5BVElWRV9UQVJHRVRbbWFrZV0gPSAiJHtiaW5kaXJ9L3JlbWFrZSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZS92ZXJzaW9uLXJlbWFrZS50ZXhpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlL3ZlcnNpb24tcmVtYWtlLnRleGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNjMyOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlL3ZlcnNpb24tcmVtYWtlLnRleGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotdmVyc2lvbi1yZW1ha2UudGV4aSBpcyBub3QgdGhlcmUgYnV0IGl0IGlzIHJlcXVpcmVkIGJ5IHJlbWFrZS50ZXhpLAotanVzdCBhZGQgaXQgZm9yIGdldHRpbmcgdGhlICdtYWtlIHJlbWFrZS5pbmZvJyB3b3Jrcy4KLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLWRpZmYgLS1naXQgYS9kb2MvdmVyc2lvbi1yZW1ha2UudGV4aSBiL2RvYy92ZXJzaW9uLXJlbWFrZS50ZXhpCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmEzYjcyYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZG9jL3ZlcnNpb24tcmVtYWtlLnRleGkKLUBAIC0wLDAgKzEsNCBAQAotK0BzZXQgVVBEQVRFRCAxMCBKdW5lIDIwMTIKLStAc2V0IFVQREFURUQtTU9OVEggSnVuZSAyMDEyCi0rQHNldCBFRElUSU9OIDMuODIrZGJnLTAuOWdpdAotK0BzZXQgVkVSU0lPTiAzLjgyK2RiZy0wLjlnaXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZV80LjErZGJnLTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZV80LjErZGJnLTEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVhYjdlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2VfNC4xK2RiZy0xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xvYi9DT1BZSU5HLkxJQjttZDU9NGE3NzBiNjdlNmJlMGY2MGRhMjQ0YmViMmRlMGZjZTQiCi1yZXF1aXJlIHJlbWFrZS5pbmMKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKVwrZGJnLispIgotU1JDX1VSSSArPSAiZmlsZTovL3ZlcnNpb24tcmVtYWtlLnRleGkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiY2Y1NDY0MWQ1MGEwMTY1YmIxNzYyMmIzZTk3NzBmNDI2Y2NiYzU2MSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgKz0gInJlYWRsaW5lIGd1aWxlIgotIyBOZWVkIHRvIGFkZCAiZ2V0dGV4dC1uYXRpdmUiIGRlcGVuZGVuY3kgdG8gcmVtYWtlLW5hdGl2ZS4KLSMgQnkgZGVmYXVsdCBvbmx5ICJnZXR0ZXh0LW1pbmltYWwtbmF0aXZlIiBpcyBhZGRlZAotIyB3aGVuIGluaGVyaXQgZ2V0dGV4dC4KLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJnZXR0ZXh0LW5hdGl2ZSIKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL21ha2UiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgcmVtb3ZlIHRoZSBkZWZhdWx0IExJTkdVQVMgc2luY2Ugd2UgYXJlIG5vdCBnb2luZyB0byBnZW5lcmF0ZSBsYW5ndWFnZXMKLSAgICBybSAke1N9L3BvL0xJTkdVQVMKLSAgICB0b3VjaCAke1N9L3BvL0xJTkdVQVMKLSAgICAjIGNyZWF0ZSBjb25maWcucnBhdGggd2hpY2ggcmVxdWlyZWQgYnkgY29uZmlndXJlLmFjCi0gICAgKCBjZCAke1N9OyBhdXRvcG9pbnQgfHwgdG91Y2ggY29uZmlnLnJwYXRoICkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKaW5kZXggZDk5ZGRlYi4uMWY2MWFjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaApAQCAtNCw3ICs0LDcgQEAKIFN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRjb2RlICJsaWIvcnBtIiBhcyB0aGUgaW5zdGFsbGF0aW9uIHBhdGggZm9yCiAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGFuZCBtYWNyb3MuCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjYzXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2gKaW5kZXggOTVjNzAxMy4uZWRmOWVjMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogTW9uLCAyNyBGZWIgMjAxNyAxNDo0MzoyMSArMDIwMAogU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsIEMgbGlicmFyeS4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Byb2JsZW0gYWxyZWFkeSBzb2x2ZWQgaW4gbWFzdGVyIGJyYW5jaF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtU3BsaXQtYmluYXJ5LXBhY2thZ2UtYnVpbGRpbmctaW50by1hLXNlcGFyYXRlLWZ1bmN0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtU3BsaXQtYmluYXJ5LXBhY2thZ2UtYnVpbGRpbmctaW50by1hLXNlcGFyYXRlLWZ1bmN0aS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTQ0ZjBiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoCkBAIC0wLDAgKzEsODQgQEAKK0Zyb20gNzIxYTY2MGE1MDdkNmQwNjJlN2FlY2FmYWQ4ODZjNjQzOTcwYTVkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyNSBNYXkgMjAxNyAxODoxNToyNyArMDMwMAorU3ViamVjdDogW1BBVENIIDEvNF0gU3BsaXQgYmluYXJ5IHBhY2thZ2UgYnVpbGRpbmcgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uCisKK1NvIHRoYXQgaXQgY2FuIGJlIHJ1biBhcyBhIHRocmVhZCBwb29sIHRhc2suCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjI2XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIGJ1aWxkL3BhY2suYyB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkL3BhY2suYyBiL2J1aWxkL3BhY2suYworaW5kZXggNTE4ZjRlOTJhLi5jY2ZkNjE0Y2MgMTAwNjQ0CistLS0gYS9idWlsZC9wYWNrLmMKKysrKyBiL2J1aWxkL3BhY2suYworQEAgLTU0NiwxOCArNTQ2LDEzIEBAIHN0YXRpYyBycG1SQyBjaGVja1BhY2thZ2VzKGNoYXIgKnBrZ2NoZWNrKQorICAgICByZXR1cm4gUlBNUkNfT0s7CisgfQorIAorLXJwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorK3N0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nLCBjaGFyKiogZmlsZW5hbWUpCisgeworLSAgICBycG1SQyByYzsKKy0gICAgY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CistICAgIFBhY2thZ2UgcGtnOworLSAgICBjaGFyICpwa2dsaXN0ID0gTlVMTDsKKy0KKy0gICAgZm9yIChwa2cgPSBzcGVjLT5wYWNrYWdlczsgcGtnICE9IE5VTEw7IHBrZyA9IHBrZy0+bmV4dCkgeworLQljaGFyICpmbjsKKysJY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CisrCXJwbVJDIHJjID0gUlBNUkNfT0s7CisgCisgCWlmIChwa2ctPmZpbGVMaXN0ID09IE5VTEwpCistCSAgICBjb250aW51ZTsKKysJICAgIHJldHVybiByYzsKKyAKKyAJaWYgKChyYyA9IHByb2Nlc3NTY3JpcHRGaWxlcyhzcGVjLCBwa2cpKSkKKyAJICAgIHJldHVybiByYzsKK0BAIC01ODcsNyArNTgyLDcgQEAgcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCisgCQkgICAgIGhlYWRlckdldFN0cmluZyhwa2ctPmhlYWRlciwgUlBNVEFHX05BTUUpLCBlcnJvclN0cmluZyk7CisgCQlyZXR1cm4gUlBNUkNfRkFJTDsKKyAJICAgIH0KKy0JICAgIGZuID0gcnBtR2V0UGF0aCgiJXtfcnBtZGlyfS8iLCBiaW5ScG0sIE5VTEwpOworKwkgICAgKmZpbGVuYW1lID0gcnBtR2V0UGF0aCgiJXtfcnBtZGlyfS8iLCBiaW5ScG0sIE5VTEwpOworIAkgICAgaWYgKChiaW5EaXIgPSBzdHJjaHIoYmluUnBtLCAnLycpKSAhPSBOVUxMKSB7CisgCQlzdHJ1Y3Qgc3RhdCBzdDsKKyAJCWNoYXIgKmRuOworQEAgLTYwOSwxNCArNjA0LDI4IEBAIHJwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorIAkgICAgZnJlZShiaW5ScG0pOworIAl9CisgCistCXJjID0gd3JpdGVSUE0ocGtnLCBOVUxMLCBmbiwgTlVMTCk7CisrCXJjID0gd3JpdGVSUE0ocGtnLCBOVUxMLCAqZmlsZW5hbWUsIE5VTEwpOworIAlpZiAocmMgPT0gUlBNUkNfT0spIHsKKyAJICAgIC8qIERvIGNoZWNrIGVhY2ggd3JpdHRlbiBwYWNrYWdlIGlmIGVuYWJsZWQgKi8KKy0JICAgIGNoYXIgKnBrZ2NoZWNrID0gcnBtRXhwYW5kKCIlez9fYnVpbGRfcGtnY2hlY2t9ICIsIGZuLCBOVUxMKTsKKysJICAgIGNoYXIgKnBrZ2NoZWNrID0gcnBtRXhwYW5kKCIlez9fYnVpbGRfcGtnY2hlY2t9ICIsICpmaWxlbmFtZSwgTlVMTCk7CisgCSAgICBpZiAocGtnY2hlY2tbMF0gIT0gJyAnKSB7CisgCQlyYyA9IGNoZWNrUGFja2FnZXMocGtnY2hlY2spOworIAkgICAgfQorIAkgICAgZnJlZShwa2djaGVjayk7CisrCX0KKysJcmV0dXJuIHJjOworK30KKysKKytycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKyt7CisrICAgIHJwbVJDIHJjOworKyAgICBQYWNrYWdlIHBrZzsKKysgICAgY2hhciAqcGtnbGlzdCA9IE5VTEw7CisrCisrICAgIGZvciAocGtnID0gc3BlYy0+cGFja2FnZXM7IHBrZyAhPSBOVUxMOyBwa2cgPSBwa2ctPm5leHQpIHsKKysJY2hhciAqZm4gPSBOVUxMOworKwlyYyA9IHBhY2thZ2VCaW5hcnkoc3BlYywgcGtnLCBjb29raWUsIGNoZWF0aW5nLCAmZm4pOworKwlpZiAocmMgPT0gUlBNUkNfT0spIHsKKyAJICAgIHJzdHJjYXQoJnBrZ2xpc3QsIGZuKTsKKyAJICAgIHJzdHJjYXQoJnBrZ2xpc3QsICIgIik7CisgCX0KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAyLVJ1bi1iaW5hcnktcGFja2FnZS1jcmVhdGlvbi12aWEtdGhyZWFkLXBvb2xzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMDA0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAyLVJ1bi1iaW5hcnktcGFja2FnZS1jcmVhdGlvbi12aWEtdGhyZWFkLXBvb2xzLnBhdGNoCkBAIC0wLDAgKzEsMTI3IEBACitGcm9tIDUxMzIwMGNmNzY3NThkZTQ2NjgzMTJjNjI4ZDYzNjJiZGFiZmFmNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjUgTWF5IDIwMTcgMTk6MzA6MjAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIFJ1biBiaW5hcnkgcGFja2FnZSBjcmVhdGlvbiB2aWEgdGhyZWFkIHBvb2xzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzIyNl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyBidWlsZC9wYWNrLmMgfCA4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyBjb25maWd1cmUuYWMgfCAgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvcGFjay5jIGIvYnVpbGQvcGFjay5jCitpbmRleCBjY2ZkNjE0Y2MuLmVkNWI5YWI0ZSAxMDA2NDQKKy0tLSBhL2J1aWxkL3BhY2suYworKysrIGIvYnVpbGQvcGFjay5jCitAQCAtNjE2LDI1ICs2MTYsNzggQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKKyAJcmV0dXJuIHJjOworIH0KKyAKKy1ycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKytzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhCisgeworLSAgICBycG1SQyByYzsKKyAgICAgUGFja2FnZSBwa2c7CisrICAgIGNoYXIgKmZpbGVuYW1lOworKyAgICBycG1SQyByZXN1bHQ7CisrICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKm5leHQ7CisrfTsKKysKKytzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCisreworKyAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrcyA9IE5VTEw7CisrICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2sgPSBOVUxMOworKyAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICpwcmV2ID0gTlVMTDsKKysKKysgICAgZm9yIChQYWNrYWdlIHBrZyA9IHNwZWMtPnBhY2thZ2VzOyBwa2cgIT0gTlVMTDsgcGtnID0gcGtnLT5uZXh0KSB7CisrICAgICAgICB0YXNrID0gcmNhbGxvYygxLCBzaXplb2YoKnRhc2spKTsKKysgICAgICAgIHRhc2stPnBrZyA9IHBrZzsKKysgICAgICAgIGlmIChwa2cgPT0gc3BlYy0+cGFja2FnZXMpIHsKKysgICAgICAgICAgICAvLyB0aGUgZmlyc3QgcGFja2FnZSBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYWhlYWQgb2Ygb3RoZXJzLCBhcyB0aGV5IGNvcHkKKysgICAgICAgICAgICAvLyBjaGFuZ2Vsb2cgZGF0YSBmcm9tIGl0LCBhbmQgc28gb3RoZXJ3aXNlIGRhdGEgcmFjZXMgd291bGQgaGFwcGVuCisrICAgICAgICAgICAgdGFzay0+cmVzdWx0ID0gcGFja2FnZUJpbmFyeShzcGVjLCBwa2csIGNvb2tpZSwgY2hlYXRpbmcsICYodGFzay0+ZmlsZW5hbWUpKTsKKysgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CisrICAgICAgICAgICAgdGFza3MgPSB0YXNrOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKHByZXYgIT0gTlVMTCkgeworKyAgICAgICAgICAgIHByZXYtPm5leHQgPSB0YXNrOworKyAgICAgICAgfQorKyAgICAgICAgcHJldiA9IHRhc2s7CisrICAgIH0KKysKKysgICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwKKysgICAgI3ByYWdtYSBvbXAgc2luZ2xlCisrICAgIC8vIHJlLWRlY2xhcmluZyB0YXNrIHZhcmlhYmxlIGlzIG5lY2Vzc2FyeSwgb3Igb2xkZXIgZ2NjIHZlcnNpb25zIHdpbGwgcHJvZHVjZSBjb2RlIHRoYXQgc2VnZmF1bHRzCisrICAgIGZvciAoc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFzayA9IHRhc2tzOyB0YXNrICE9IE5VTEw7IHRhc2sgPSB0YXNrLT5uZXh0KSB7CisrICAgICAgICBpZiAodGFzayAhPSB0YXNrcykKKysgICAgICAgICNwcmFnbWEgb21wIHRhc2sKKysgICAgICAgIHsKKysgICAgICAgICAgICB0YXNrLT5yZXN1bHQgPSBwYWNrYWdlQmluYXJ5KHNwZWMsIHRhc2stPnBrZywgY29va2llLCBjaGVhdGluZywgJih0YXNrLT5maWxlbmFtZSkpOworKyAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJGaW5pc2hlZCBiaW5hcnkgcGFja2FnZSBqb2IsIHJlc3VsdCAlZCwgZmlsZW5hbWUgJXNcbiIpLCB0YXNrLT5yZXN1bHQsIHRhc2stPmZpbGVuYW1lKTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICByZXR1cm4gdGFza3M7CisrfQorKworK3N0YXRpYyB2b2lkIGZyZWVCaW5hcnlQYWNrYWdlVGFza3Moc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogdGFza3MpCisreworKyAgICB3aGlsZSAodGFza3MgIT0gTlVMTCkgeworKyAgICAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogbmV4dCA9IHRhc2tzLT5uZXh0OworKyAgICAgICAgcmZyZWUodGFza3MtPmZpbGVuYW1lKTsKKysgICAgICAgIHJmcmVlKHRhc2tzKTsKKysgICAgICAgIHRhc2tzID0gbmV4dDsKKysgICAgfQorK30KKysKKytycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKyt7CisgICAgIGNoYXIgKnBrZ2xpc3QgPSBOVUxMOworIAorLSAgICBmb3IgKHBrZyA9IHNwZWMtPnBhY2thZ2VzOyBwa2cgIT0gTlVMTDsgcGtnID0gcGtnLT5uZXh0KSB7CistCWNoYXIgKmZuID0gTlVMTDsKKy0JcmMgPSBwYWNrYWdlQmluYXJ5KHNwZWMsIHBrZywgY29va2llLCBjaGVhdGluZywgJmZuKTsKKy0JaWYgKHJjID09IFJQTVJDX09LKSB7CistCSAgICByc3RyY2F0KCZwa2dsaXN0LCBmbik7CistCSAgICByc3RyY2F0KCZwa2dsaXN0LCAiICIpOworLQl9CistCWZyZWUoZm4pOworLQlpZiAocmMgIT0gUlBNUkNfT0spIHsKKy0JICAgIHBrZ2xpc3QgPSBfZnJlZShwa2dsaXN0KTsKKy0JICAgIHJldHVybiByYzsKKy0JfQorKyAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrcyA9IHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhzcGVjLCBjb29raWUsIGNoZWF0aW5nKTsKKysKKysgICAgZm9yIChzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gdGFza3M7IHRhc2sgIT0gTlVMTDsgdGFzayA9IHRhc2stPm5leHQpIHsKKysgICAgICAgIGlmICh0YXNrLT5yZXN1bHQgPT0gUlBNUkNfT0spIHsKKysgICAgICAgICAgICByc3RyY2F0KCZwa2dsaXN0LCB0YXNrLT5maWxlbmFtZSk7CisrICAgICAgICAgICAgcnN0cmNhdCgmcGtnbGlzdCwgIiAiKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgX2ZyZWUocGtnbGlzdCk7CisrICAgICAgICAgICAgZnJlZUJpbmFyeVBhY2thZ2VUYXNrcyh0YXNrcyk7CisrICAgICAgICAgICAgcmV0dXJuIFJQTVJDX0ZBSUw7CisrICAgICAgICB9CisgICAgIH0KKysgICAgZnJlZUJpbmFyeVBhY2thZ2VUYXNrcyh0YXNrcyk7CisgCisgICAgIC8qIE5vdyBjaGVjayB0aGUgcGFja2FnZSBzZXQgaWYgZW5hYmxlZCAqLworICAgICBpZiAocGtnbGlzdCAhPSBOVUxMKSB7CitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhNTA2ZWM4MTkuLjU5ZmEwYWNhZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTcsNiArMTcsOSBAQCBBQ19ESVNBQkxFX1NUQVRJQworIAorIFBLR19QUk9HX1BLR19DT05GSUcKKyAKKytBQ19PUEVOTVAKKytSUE1DRkxBR1M9IiRPUEVOTVBfQ0ZMQUdTICRSUE1DRkxBR1MiCisrCisgZG5sIENoZWNrcyBmb3IgcHJvZ3JhbXMuCisgQUNfUFJPR19DWFgKKyBBQ19QUk9HX0FXSworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNDhhZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbXN0cnBvb2wuYy1tYWtlLW9wZXJhdGlvbnMtb3Zlci1zdHJpbmctcG9vbHMtdGhyZWEucGF0Y2gKQEAgLTAsMCArMSwyMDcgQEAKK0Zyb20gYzgwODkyZjE3ZTQ0MzMxMjA2YzgzMThkNTNiNjNiYjZhOTk1NTRkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAxMzo1ODozMCArMDMwMAorU3ViamVjdDogW1BBVENIIDMvNF0gcnBtc3RycG9vbC5jOiBtYWtlIG9wZXJhdGlvbnMgb3ZlciBzdHJpbmcgcG9vbHMKKyB0aHJlYWQtc2FmZQorCitPdGhlcndpc2UgbXVsdGl0aHJlYWRlZCBycG0gYnVpbGRpbmcgZXhwbG9kZXMgaW4gdmFyaW91cyB3YXlzIGR1ZQordG8gZGF0YSByYWNlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMjZdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgcnBtaW8vcnBtc3RycG9vbC5jIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1zdHJwb29sLmMgYi9ycG1pby9ycG1zdHJwb29sLmMKK2luZGV4IDMwYTU3ZWIxMC4uNThiYTk1YTAyIDEwMDY0NAorLS0tIGEvcnBtaW8vcnBtc3RycG9vbC5jCisrKysgYi9ycG1pby9ycG1zdHJwb29sLmMKK0BAIC0xMTMsNiArMTEzLDggQEAgc3RhdGljIHBvb2xIYXNoIHBvb2xIYXNoQ3JlYXRlKGludCBudW1CdWNrZXRzKQorICAgICByZXR1cm4gaHQ7CisgfQorIAorK3N0YXRpYyBjb25zdCBjaGFyICogcnBtc3RyUG9vbFN0ck5vTG9jayhycG1zdHJQb29sIHBvb2wsIHJwbXNpZCBzaWQpOworKworIHN0YXRpYyB2b2lkIHBvb2xIYXNoUmVzaXplKHJwbXN0clBvb2wgcG9vbCwgaW50IG51bUJ1Y2tldHMpCisgeworICAgICBwb29sSGFzaCBodCA9IHBvb2wtPmhhc2g7CitAQCAtMTIwLDcgKzEyMiw3IEBAIHN0YXRpYyB2b2lkIHBvb2xIYXNoUmVzaXplKHJwbXN0clBvb2wgcG9vbCwgaW50IG51bUJ1Y2tldHMpCisgCisgICAgIGZvciAoaW50IGk9MDsgaTxodC0+bnVtQnVja2V0czsgaSsrKSB7CisgICAgICAgICBpZiAoIWh0LT5idWNrZXRzW2ldLmtleWlkKSBjb250aW51ZTsKKy0gICAgICAgIHVuc2lnbmVkIGludCBrZXlIYXNoID0gcnN0cmhhc2gocnBtc3RyUG9vbFN0cihwb29sLCBodC0+YnVja2V0c1tpXS5rZXlpZCkpOworKyAgICAgICAgdW5zaWduZWQgaW50IGtleUhhc2ggPSByc3RyaGFzaChycG1zdHJQb29sU3RyTm9Mb2NrKHBvb2wsIGh0LT5idWNrZXRzW2ldLmtleWlkKSk7CisgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqPTA7O2orKykgeworICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoYXNoID0gaGFzaGJ1Y2tldChrZXlIYXNoLCBqKSAlIG51bUJ1Y2tldHM7CisgICAgICAgICAgICAgaWYgKCFidWNrZXRzW2hhc2hdLmtleWlkKSB7CitAQCAtMTQ5LDcgKzE1MSw3IEBAIHN0YXRpYyB2b2lkIHBvb2xIYXNoQWRkSEVudHJ5KHJwbXN0clBvb2wgcG9vbCwgY29uc3QgY2hhciAqIGtleSwgdW5zaWduZWQgaW50IGtlCisgICAgICAgICAgICAgaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQgPSBrZXlpZDsKKyAgICAgICAgICAgICBodC0+a2V5Q291bnQrKzsKKyAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChycG1zdHJQb29sU3RyKHBvb2wsIGh0LT5idWNrZXRzW2hhc2hdLmtleWlkKSwga2V5KSkgeworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQpLCBrZXkpKSB7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICB9CitAQCAtMTkxLDcgKzE5Myw3IEBAIHN0YXRpYyB2b2lkIHBvb2xIYXNoUHJpbnRTdGF0cyhycG1zdHJQb29sIHBvb2wpCisgICAgIGludCBtYXhjb2xsaXNpb25zID0gMDsKKyAKKyAgICAgZm9yIChpPTA7IGk8aHQtPm51bUJ1Y2tldHM7IGkrKykgeworLSAgICAgICAgdW5zaWduZWQgaW50IGtleUhhc2ggPSByc3RyaGFzaChycG1zdHJQb29sU3RyKHBvb2wsIGh0LT5idWNrZXRzW2ldLmtleWlkKSk7CisrICAgICAgICB1bnNpZ25lZCBpbnQga2V5SGFzaCA9IHJzdHJoYXNoKHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgaHQtPmJ1Y2tldHNbaV0ua2V5aWQpKTsKKyAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGo9MDs7aisrKSB7CisgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhhc2ggPSBoYXNoYnVja2V0KGtleUhhc2gsIGkpICUgaHQtPm51bUJ1Y2tldHM7CisgICAgICAgICAgICAgaWYgKGhhc2g9PWkpIHsKK0BAIC0yMjEsNyArMjIzLDcgQEAgc3RhdGljIHZvaWQgcnBtc3RyUG9vbFJlaGFzaChycG1zdHJQb29sIHBvb2wpCisgCisgICAgIHBvb2wtPmhhc2ggPSBwb29sSGFzaENyZWF0ZShzaXplaGludCk7CisgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHBvb2wtPm9mZnNfc2l6ZTsgaSsrKQorLQlwb29sSGFzaEFkZEVudHJ5KHBvb2wsIHJwbXN0clBvb2xTdHIocG9vbCwgaSksIGkpOworKwlwb29sSGFzaEFkZEVudHJ5KHBvb2wsIHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgaSksIGkpOworIH0KKyAKKyBycG1zdHJQb29sIHJwbXN0clBvb2xDcmVhdGUodm9pZCkKK0BAIC0yNDUsNiArMjQ3LDggQEAgcnBtc3RyUG9vbCBycG1zdHJQb29sQ3JlYXRlKHZvaWQpCisgCisgcnBtc3RyUG9vbCBycG1zdHJQb29sRnJlZShycG1zdHJQb29sIHBvb2wpCisgeworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sKSB7CisgCWlmIChwb29sLT5ucmVmcyA+IDEpIHsKKyAJICAgIHBvb2wtPm5yZWZzLS07CitAQCAtMjYwLDE4ICsyNjQsMjQgQEAgcnBtc3RyUG9vbCBycG1zdHJQb29sRnJlZShycG1zdHJQb29sIHBvb2wpCisgCSAgICBmcmVlKHBvb2wpOworIAl9CisgICAgIH0KKysgICAgfQorICAgICByZXR1cm4gTlVMTDsKKyB9CisgCisgcnBtc3RyUG9vbCBycG1zdHJQb29sTGluayhycG1zdHJQb29sIHBvb2wpCisgeworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sKQorIAlwb29sLT5ucmVmcysrOworKyAgICB9CisgICAgIHJldHVybiBwb29sOworIH0KKyAKKyB2b2lkIHJwbXN0clBvb2xGcmVlemUocnBtc3RyUG9vbCBwb29sLCBpbnQga2VlcGhhc2gpCisgeworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sICYmICFwb29sLT5mcm96ZW4pIHsKKyAJaWYgKCFrZWVwaGFzaCkgeworIAkgICAgcG9vbC0+aGFzaCA9IHBvb2xIYXNoRnJlZShwb29sLT5oYXNoKTsKK0BAIC0yODEsMTYgKzI5MSwyMCBAQCB2b2lkIHJwbXN0clBvb2xGcmVlemUocnBtc3RyUG9vbCBwb29sLCBpbnQga2VlcGhhc2gpCisgCQkJICAgICAgcG9vbC0+b2Zmc19hbGxvY2VkICogc2l6ZW9mKCpwb29sLT5vZmZzKSk7CisgCXBvb2wtPmZyb3plbiA9IDE7CisgICAgIH0KKysgICAgfQorIH0KKyAKKyB2b2lkIHJwbXN0clBvb2xVbmZyZWV6ZShycG1zdHJQb29sIHBvb2wpCisgeworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sKSB7CisgCWlmIChwb29sLT5oYXNoID09IE5VTEwpIHsKKyAJICAgIHJwbXN0clBvb2xSZWhhc2gocG9vbCk7CisgCX0KKyAJcG9vbC0+ZnJvemVuID0gMDsKKyAgICAgfQorKyAgICB9CisgfQorIAorIHN0YXRpYyBycG1zaWQgcnBtc3RyUG9vbFB1dChycG1zdHJQb29sIHBvb2wsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzbGVuLCB1bnNpZ25lZCBpbnQgaGFzaCkKK0BAIC0zNTAsNyArMzY0LDcgQEAgc3RhdGljIHJwbXNpZCBycG1zdHJQb29sR2V0KHJwbXN0clBvb2wgcG9vbCwgY29uc3QgY2hhciAqIGtleSwgc2l6ZV90IGtleWxlbiwKKyAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgIH0KKyAKKy0JcyA9IHJwbXN0clBvb2xTdHIocG9vbCwgaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQpOworKwlzID0gcnBtc3RyUG9vbFN0ck5vTG9jayhwb29sLCBodC0+YnVja2V0c1toYXNoXS5rZXlpZCk7CisgCS8qIHBvb2wgc3RyaW5nIGNvdWxkIGJlIGxvbmdlciB0aGFuIGtleWxlbiwgcmVxdWlyZSBleGFjdCBtYXRjaGUgKi8KKyAJaWYgKHN0cm5jbXAocywga2V5LCBrZXlsZW4pID09IDAgJiYgc1trZXlsZW5dID09ICdcMCcpCisgCSAgICByZXR1cm4gaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQ7CitAQCAtMzczLDI3ICszODcsMzEgQEAgc3RhdGljIGlubGluZSBycG1zaWQgc3RybjJpZChycG1zdHJQb29sIHBvb2wsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzbGVuLAorIHJwbXNpZCBycG1zdHJQb29sSWRuKHJwbXN0clBvb2wgcG9vbCwgY29uc3QgY2hhciAqcywgc2l6ZV90IHNsZW4sIGludCBjcmVhdGUpCisgeworICAgICBycG1zaWQgc2lkID0gMDsKKy0KKysgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwocnBtc3RycG9vbCkKKysgICAgeworICAgICBpZiAocyAhPSBOVUxMKSB7CisgCXVuc2lnbmVkIGludCBoYXNoID0gcnN0cm5oYXNoKHMsIHNsZW4pOworIAlzaWQgPSBzdHJuMmlkKHBvb2wsIHMsIHNsZW4sIGhhc2gsIGNyZWF0ZSk7CisgICAgIH0KKysgICAgfQorICAgICByZXR1cm4gc2lkOworIH0KKyAKKyBycG1zaWQgcnBtc3RyUG9vbElkKHJwbXN0clBvb2wgcG9vbCwgY29uc3QgY2hhciAqcywgaW50IGNyZWF0ZSkKKyB7CisgICAgIHJwbXNpZCBzaWQgPSAwOworLQorKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChzICE9IE5VTEwpIHsKKyAJc2l6ZV90IHNsZW47CisgCXVuc2lnbmVkIGludCBoYXNoID0gcnN0cmxlbmhhc2gocywgJnNsZW4pOworIAlzaWQgPSBzdHJuMmlkKHBvb2wsIHMsIHNsZW4sIGhhc2gsIGNyZWF0ZSk7CisgICAgIH0KKysgICAgfQorICAgICByZXR1cm4gc2lkOworIH0KKyAKKy1jb25zdCBjaGFyICogcnBtc3RyUG9vbFN0cihycG1zdHJQb29sIHBvb2wsIHJwbXNpZCBzaWQpCisrc3RhdGljIGNvbnN0IGNoYXIgKiBycG1zdHJQb29sU3RyTm9Mb2NrKHJwbXN0clBvb2wgcG9vbCwgcnBtc2lkIHNpZCkKKyB7CisgICAgIGNvbnN0IGNoYXIgKnMgPSBOVUxMOworICAgICBpZiAocG9vbCAmJiBzaWQgPiAwICYmIHNpZCA8PSBwb29sLT5vZmZzX3NpemUpCitAQCAtNDAxLDEyICs0MTksMjUgQEAgY29uc3QgY2hhciAqIHJwbXN0clBvb2xTdHIocnBtc3RyUG9vbCBwb29sLCBycG1zaWQgc2lkKQorICAgICByZXR1cm4gczsKKyB9CisgCisrY29uc3QgY2hhciAqIHJwbXN0clBvb2xTdHIocnBtc3RyUG9vbCBwb29sLCBycG1zaWQgc2lkKQorK3sKKysgICAgY29uc3QgY2hhciAqcyA9IE5VTEw7CisrICAgICNwcmFnbWEgb21wIGNyaXRpY2FsKHJwbXN0cnBvb2wpCisrICAgIHsKKysgICAgcyA9IHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgc2lkKTsKKysgICAgfQorKyAgICByZXR1cm4gczsKKyt9CisrCisgc2l6ZV90IHJwbXN0clBvb2xTdHJsZW4ocnBtc3RyUG9vbCBwb29sLCBycG1zaWQgc2lkKQorIHsKKyAgICAgc2l6ZV90IHNsZW4gPSAwOworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sICYmIHNpZCA+IDAgJiYgc2lkIDw9IHBvb2wtPm9mZnNfc2l6ZSkgeworIAlzbGVuID0gc3RybGVuKHBvb2wtPm9mZnNbc2lkXSk7CisgICAgIH0KKysgICAgfQorICAgICByZXR1cm4gc2xlbjsKKyB9CisgCitAQCAtNDIxLDUgKzQ1MiwxMiBAQCBpbnQgcnBtc3RyUG9vbFN0cmVxKHJwbXN0clBvb2wgcG9vbEEsIHJwbXNpZCBzaWRBLAorIAorIHJwbXNpZCBycG1zdHJQb29sTnVtU3RyKHJwbXN0clBvb2wgcG9vbCkKKyB7CistICAgIHJldHVybiAocG9vbCAhPSBOVUxMKSA/IHBvb2wtPm9mZnNfc2l6ZSA6IDA7CisrICAgIHJwbXNpZCBpZCA9IDA7CisrICAgICNwcmFnbWEgb21wIGNyaXRpY2FsKHJwbXN0cnBvb2wpCisrICAgIHsKKysgICAgaWYgKHBvb2wpIHsKKysJaWQgPSBwb29sLT5vZmZzX3NpemU7CisrICAgIH0KKysgICAgfQorKyAgICByZXR1cm4gaWQ7CisgfQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YTU2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2gKQEAgLTAsMCArMSwzMzcgQEAKK0Zyb20gZWMzMDU3OTVhMzAyZDIyNjM0M2U2OTAzMWZmMjAyNGRmY2RlNjljMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE3OjA4OjA5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBidWlsZC9wYWNrLmM6IHJlbW92ZSBzdGF0aWMgbG9jYWwgdmFyaWFibGVzIGZyb20KKyBidWlsZEhvc3QoKSBhbmQgZ2V0QnVpbGRUaW1lKCkKKworVGhlaXIgdXNlIGlzIGNhdXNpbmcgZGlmZmljdWx0IHRvIGRpYWdub3plIGRhdGEgcmFjZXMgd2hlbiBidWlsZGluZyBtdWx0aXBsZQorcGFja2FnZXMgaW4gcGFyYWxsZWwsIGFuZCBpcyBhIGJhZCBpZGVhIGluIGdlbmVyYWwsIGFzIGl0IGFsc28gbWFrZXMgaXQgbW9yZQorZGlmZmljdWx0IHRvIHJlYXNvbiBhYm91dCBjb2RlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzIyNl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgYnVpbGQvYnVpbGQuYyAgICAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGJ1aWxkL3BhY2suYyAgICAgICAgICAgICAgfCA4NCArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGJ1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmggfCAgOCArKystLQorIDMgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC9idWlsZC5jIGIvYnVpbGQvYnVpbGQuYworaW5kZXggNWY5OWM4ZGI3Li4wOWExMzExYzUgMTAwNjQ0CistLS0gYS9idWlsZC9idWlsZC5jCisrKysgYi9idWlsZC9idWlsZC5jCitAQCAtNiw2ICs2LDggQEAKKyAjaW5jbHVkZSAic3lzdGVtLmgiCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPG5ldGRiLmg+CisrI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAKKyAjaW5jbHVkZSA8cnBtL3JwbWxvZy5oPgorQEAgLTE2LDYgKzE4LDUwIEBACisgCisgI2luY2x1ZGUgImRlYnVnLmgiCisgCisrc3RhdGljIHJwbV90aW1lX3QgZ2V0QnVpbGRUaW1lKHZvaWQpCisreworKyAgICBycG1fdGltZV90IGJ1aWxkVGltZSA9IDA7CisrICAgIGNoYXIgKnNyY2RhdGU7CisrICAgIHRpbWVfdCBlcG9jaDsKKysgICAgY2hhciAqZW5kcHRyOworKworKyAgICBzcmNkYXRlID0gZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpOworKyAgICBpZiAoc3JjZGF0ZSkgeworKyAgICAgICAgZXJybm8gPSAwOworKyAgICAgICAgZXBvY2ggPSBzdHJ0b2woc3JjZGF0ZSwgJmVuZHB0ciwgMTApOworKyAgICAgICAgaWYgKHNyY2RhdGUgPT0gZW5kcHRyIHx8ICplbmRwdHIgfHwgZXJybm8gIT0gMCkKKysgICAgICAgICAgICBycG1sb2coUlBNTE9HX0VSUiwgXygidW5hYmxlIHRvIHBhcnNlIFNPVVJDRV9EQVRFX0VQT0NIXG4iKSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgYnVpbGRUaW1lID0gKGludDMyX3QpIGVwb2NoOworKyAgICB9IGVsc2UKKysgICAgICAgIGJ1aWxkVGltZSA9IChpbnQzMl90KSB0aW1lKE5VTEwpOworKworKyAgICByZXR1cm4gYnVpbGRUaW1lOworK30KKysKKytzdGF0aWMgY2hhciAqIGJ1aWxkSG9zdCh2b2lkKQorK3sKKysgICAgY2hhciogaG9zdG5hbWU7CisrICAgIHN0cnVjdCBob3N0ZW50ICpoYm47CisrICAgIGNoYXIgKmJoTWFjcm87CisrCisrICAgIGJoTWFjcm8gPSBycG1FeHBhbmQoIiV7P19idWlsZGhvc3R9IiwgTlVMTCk7CisrICAgIGlmIChzdHJjbXAoYmhNYWNybywgIiIpICE9IDApIHsKKysgICAgICAgIHJhc3ByaW50ZigmaG9zdG5hbWUsICIlcyIsIGJoTWFjcm8pOworKyAgICB9IGVsc2UgeworKyAgICAgICAgaG9zdG5hbWUgPSByY2FsbG9jKDEwMjQsIHNpemVvZigqaG9zdG5hbWUpKTsKKysgICAgICAgICh2b2lkKSBnZXRob3N0bmFtZShob3N0bmFtZSwgMTAyNCk7CisrICAgICAgICBoYm4gPSBnZXRob3N0YnluYW1lKGhvc3RuYW1lKTsKKysgICAgICAgIGlmIChoYm4pCisrICAgICAgICAgICAgc3RyY3B5KGhvc3RuYW1lLCBoYm4tPmhfbmFtZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19XQVJOSU5HLAorKyAgICAgICAgICAgICAgICAgICAgXygiQ291bGQgbm90IGNhbm9uaWNhbGl6ZSBob3N0bmFtZTogJXNcbiIpLCBob3N0bmFtZSk7CisrICAgIH0KKysgICAgZnJlZShiaE1hY3JvKTsKKysgICAgcmV0dXJuKGhvc3RuYW1lKTsKKyt9CisrCisgLyoqCisgICovCisgc3RhdGljIHJwbVJDIGRvUm1Tb3VyY2UocnBtU3BlYyBzcGVjKQorQEAgLTIwMyw2ICsyNDksOSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKKyAgICAgcnBtUkMgcmMgPSBSUE1SQ19PSzsKKyAgICAgaW50IHRlc3QgPSAod2hhdCAmIFJQTUJVSUxEX05PQlVJTEQpOworICAgICBjaGFyICpjb29raWUgPSBidWlsZEFyZ3MtPmNvb2tpZSA/IHhzdHJkdXAoYnVpbGRBcmdzLT5jb29raWUpIDogTlVMTDsKKysgICAgY29uc3QgY2hhciogaG9zdCA9IGJ1aWxkSG9zdCgpOworKyAgICBycG1fdGltZV90IGJ1aWxkVGltZSA9IGdldEJ1aWxkVGltZSgpOworKworIAorICAgICBpZiAocnBtRXhwYW5kTnVtZXJpYygiJXs/c291cmNlX2RhdGVfZXBvY2hfZnJvbV9jaGFuZ2Vsb2d9IikgJiYKKyAJZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpID09IE5VTEwpIHsKK0BAIC0yNzEsMTEgKzMyMCwxMSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKKyAJCWdvdG8gZXhpdDsKKyAKKyAJaWYgKCgod2hhdCAmIFJQTUJVSUxEX1BBQ0tBR0VTT1VSQ0UpICYmICF0ZXN0KSAmJgorLQkgICAgKHJjID0gcGFja2FnZVNvdXJjZXMoc3BlYywgJmNvb2tpZSkpKQorKwkgICAgKHJjID0gcGFja2FnZVNvdXJjZXMoc3BlYywgJmNvb2tpZSwgYnVpbGRUaW1lLCBob3N0KSkpCisgCQlyZXR1cm4gcmM7CisgCisgCWlmICgoKHdoYXQgJiBSUE1CVUlMRF9QQUNLQUdFQklOQVJZKSAmJiAhdGVzdCkgJiYKKy0JICAgIChyYyA9IHBhY2thZ2VCaW5hcmllcyhzcGVjLCBjb29raWUsIChkaWRCdWlsZCA9PSAwKSkpKQorKwkgICAgKHJjID0gcGFja2FnZUJpbmFyaWVzKHNwZWMsIGNvb2tpZSwgKGRpZEJ1aWxkID09IDApLCBidWlsZFRpbWUsIGhvc3QpKSkKKyAJCWdvdG8gZXhpdDsKKyAJCisgCWlmICgod2hhdCAmIFJQTUJVSUxEX0NMRUFOKSAmJgorQEAgLTI5NSw2ICszNDQsNyBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKKyAJKHZvaWQpIHVubGluayhzcGVjLT5zcGVjRmlsZSk7CisgCisgZXhpdDoKKysgICAgZnJlZShob3N0KTsKKyAgICAgZnJlZShjb29raWUpOworICAgICBzcGVjLT5yb290RGlyID0gTlVMTDsKKyAgICAgaWYgKHJjICE9IFJQTVJDX09LICYmIHJwbWxvZ0dldE5yZWNzKCkgPiAwKSB7CitkaWZmIC0tZ2l0IGEvYnVpbGQvcGFjay5jIGIvYnVpbGQvcGFjay5jCitpbmRleCBlZDViOWFiNGUuLjYyNDI3MDY1YSAxMDA2NDQKKy0tLSBhL2J1aWxkL3BhY2suYworKysrIGIvYnVpbGQvcGFjay5jCitAQCAtNiw4ICs2LDYgQEAKKyAjaW5jbHVkZSAic3lzdGVtLmgiCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPG5ldGRiLmg+CistI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAKKyAjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgkJCS8qIFJQTVNJR1RBRyosIHJwbVJlYWRQYWNrYWdlRmlsZSAqLworQEAgLTE1MSw1NyArMTQ5LDYgQEAgZXhpdDoKKyAgICAgcmV0dXJuIHJjOworIH0KKyAKKy1zdGF0aWMgcnBtX3RpbWVfdCAqIGdldEJ1aWxkVGltZSh2b2lkKQorLXsKKy0gICAgc3RhdGljIHJwbV90aW1lX3QgYnVpbGRUaW1lWzFdOworLSAgICBjaGFyICpzcmNkYXRlOworLSAgICB0aW1lX3QgZXBvY2g7CistICAgIGNoYXIgKmVuZHB0cjsKKy0KKy0gICAgaWYgKGJ1aWxkVGltZVswXSA9PSAwKSB7CistICAgICAgICBzcmNkYXRlID0gZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpOworLSAgICAgICAgaWYgKHNyY2RhdGUpIHsKKy0gICAgICAgICAgICBlcnJubyA9IDA7CistICAgICAgICAgICAgZXBvY2ggPSBzdHJ0b2woc3JjZGF0ZSwgJmVuZHB0ciwgMTApOworLSAgICAgICAgICAgIGlmIChzcmNkYXRlID09IGVuZHB0ciB8fCAqZW5kcHRyIHx8IGVycm5vICE9IDApCistICAgICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfRVJSLCBfKCJ1bmFibGUgdG8gcGFyc2UgU09VUkNFX0RBVEVfRVBPQ0hcbiIpKTsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIGJ1aWxkVGltZVswXSA9IChpbnQzMl90KSBlcG9jaDsKKy0gICAgICAgIH0gZWxzZQorLSAgICAgICAgICAgIGJ1aWxkVGltZVswXSA9IChpbnQzMl90KSB0aW1lKE5VTEwpOworLSAgICB9CistCistICAgIHJldHVybiBidWlsZFRpbWU7CistfQorLQorLXN0YXRpYyBjb25zdCBjaGFyICogYnVpbGRIb3N0KHZvaWQpCisteworLSAgICBzdGF0aWMgY2hhciBob3N0bmFtZVsxMDI0XTsKKy0gICAgc3RhdGljIGludCBvbmVzaG90ID0gMDsKKy0gICAgc3RydWN0IGhvc3RlbnQgKmhibjsKKy0gICAgY2hhciAqYmhNYWNybzsKKy0KKy0gICAgaWYgKCEgb25lc2hvdCkgeworLSAgICAgICAgYmhNYWNybyA9IHJwbUV4cGFuZCgiJXs/X2J1aWxkaG9zdH0iLCBOVUxMKTsKKy0gICAgICAgIGlmIChzdHJjbXAoYmhNYWNybywgIiIpICE9IDAgJiYgc3RybGVuKGJoTWFjcm8pIDwgMTAyNCkgeworLSAgICAgICAgICAgIHN0cmNweShob3N0bmFtZSwgYmhNYWNybyk7CistICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIGlmIChzdHJjbXAoYmhNYWNybywgIiIpICE9IDApCistICAgICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfV0FSTklORywgXygiVGhlIF9idWlsZGhvc3QgbWFjcm8gaXMgdG9vIGxvbmdcbiIpKTsKKy0gICAgICAgICAgICAodm9pZCkgZ2V0aG9zdG5hbWUoaG9zdG5hbWUsIHNpemVvZihob3N0bmFtZSkpOworLSAgICAgICAgICAgIGhibiA9IGdldGhvc3RieW5hbWUoaG9zdG5hbWUpOworLSAgICAgICAgICAgIGlmIChoYm4pCistICAgICAgICAgICAgICAgIHN0cmNweShob3N0bmFtZSwgaGJuLT5oX25hbWUpOworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19XQVJOSU5HLAorLSAgICAgICAgICAgICAgICAgICAgICAgIF8oIkNvdWxkIG5vdCBjYW5vbmljYWxpemUgaG9zdG5hbWU6ICVzXG4iKSwgaG9zdG5hbWUpOworLSAgICAgICAgfQorLSAgICAgICAgZnJlZShiaE1hY3JvKTsKKy0gICAgICAgIG9uZXNob3QgPSAxOworLSAgICB9CistICAgIHJldHVybihob3N0bmFtZSk7CistfQorLQorIHN0YXRpYyBycG1SQyBwcm9jZXNzU2NyaXB0RmlsZXMocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZykKKyB7CisgICAgIHN0cnVjdCBUcmlnZ2VyRmlsZUVudHJ5ICpwOworQEAgLTMwOCw3ICsyNTUsOCBAQCBzdGF0aWMgaW50IGhhdmVSaWNoRGVwKFBhY2thZ2UgcGtnKQorIH0KKyAKKyBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAorLQkJICAgICAgY29uc3QgY2hhciAqZmlsZU5hbWUsIGNoYXIgKipjb29raWUpCisrCQkgICAgICBjb25zdCBjaGFyICpmaWxlTmFtZSwgY2hhciAqKmNvb2tpZSwKKysJCSAgICAgIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjb25zdCBjaGFyKiBidWlsZEhvc3QpCisgeworICAgICBGRF90IGZkID0gTlVMTDsKKyAgICAgY2hhciAqIHJwbWlvX2ZsYWdzID0gTlVMTDsKK0BAIC0zOTcsNyArMzQ1LDcgQEAgc3RhdGljIHJwbVJDIHdyaXRlUlBNKFBhY2thZ2UgcGtnLCB1bnNpZ25lZCBjaGFyICoqIHBrZ2lkcCwKKyAKKyAgICAgLyogQ3JlYXRlIGFuZCBhZGQgdGhlIGNvb2tpZSAqLworICAgICBpZiAoY29va2llKSB7CistCXJhc3ByaW50Zihjb29raWUsICIlcyAlZCIsIGJ1aWxkSG9zdCgpLCAoaW50KSAoKmdldEJ1aWxkVGltZSgpKSk7CisrCXJhc3ByaW50Zihjb29raWUsICIlcyAlZCIsIGJ1aWxkSG9zdCwgYnVpbGRUaW1lKTsKKyAJaGVhZGVyUHV0U3RyaW5nKHBrZy0+aGVhZGVyLCBSUE1UQUdfQ09PS0lFLCAqY29va2llKTsKKyAgICAgfQorICAgICAKK0BAIC01NDYsNyArNDk0LDcgQEAgc3RhdGljIHJwbVJDIGNoZWNrUGFja2FnZXMoY2hhciAqcGtnY2hlY2spCisgICAgIHJldHVybiBSUE1SQ19PSzsKKyB9CisgCistc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcsIGNoYXIqKiBmaWxlbmFtZSkKKytzdGF0aWMgcnBtUkMgcGFja2FnZUJpbmFyeShycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZywgY2hhcioqIGZpbGVuYW1lLCBycG1fdGltZV90IGJ1aWxkVGltZSwgY29uc3QgY2hhciogYnVpbGRIb3N0KQorIHsKKyAJY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CisgCXJwbVJDIHJjID0gUlBNUkNfT0s7CitAQCAtNTY1LDggKzUxMyw4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCisgCWhlYWRlckNvcHlUYWdzKHNwZWMtPnBhY2thZ2VzLT5oZWFkZXIsIHBrZy0+aGVhZGVyLCBjb3B5VGFncyk7CisgCQorIAloZWFkZXJQdXRTdHJpbmcocGtnLT5oZWFkZXIsIFJQTVRBR19SUE1WRVJTSU9OLCBWRVJTSU9OKTsKKy0JaGVhZGVyUHV0U3RyaW5nKHBrZy0+aGVhZGVyLCBSUE1UQUdfQlVJTERIT1NULCBidWlsZEhvc3QoKSk7CistCWhlYWRlclB1dFVpbnQzMihwa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgZ2V0QnVpbGRUaW1lKCksIDEpOworKwloZWFkZXJQdXRTdHJpbmcocGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMREhPU1QsIGJ1aWxkSG9zdCk7CisrCWhlYWRlclB1dFVpbnQzMihwa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgJmJ1aWxkVGltZSwgMSk7CisgCisgCWlmIChzcGVjLT5zb3VyY2VQa2dJZCAhPSBOVUxMKSB7CisgCSAgICBoZWFkZXJQdXRCaW4ocGtnLT5oZWFkZXIsIFJQTVRBR19TT1VSQ0VQS0dJRCwgc3BlYy0+c291cmNlUGtnSWQsMTYpOworQEAgLTYwNCw3ICs1NTIsNyBAQCBzdGF0aWMgcnBtUkMgcGFja2FnZUJpbmFyeShycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaAorIAkgICAgZnJlZShiaW5ScG0pOworIAl9CisgCistCXJjID0gd3JpdGVSUE0ocGtnLCBOVUxMLCAqZmlsZW5hbWUsIE5VTEwpOworKwlyYyA9IHdyaXRlUlBNKHBrZywgTlVMTCwgKmZpbGVuYW1lLCBOVUxMLCBidWlsZFRpbWUsIGJ1aWxkSG9zdCk7CisgCWlmIChyYyA9PSBSUE1SQ19PSykgeworIAkgICAgLyogRG8gY2hlY2sgZWFjaCB3cml0dGVuIHBhY2thZ2UgaWYgZW5hYmxlZCAqLworIAkgICAgY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja30gIiwgKmZpbGVuYW1lLCBOVUxMKTsKK0BAIC02MjQsNyArNTcyLDcgQEAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YQorICAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICpuZXh0OworIH07CisgCistc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorK3N0YXRpYyBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiBydW5CaW5hcnlQYWNrYWdlVGFza3MocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZywgcnBtX3RpbWVfdCBidWlsZFRpbWUsIGNoYXIqIGJ1aWxkSG9zdCkKKyB7CisgICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2tzID0gTlVMTDsKKyAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFzayA9IE5VTEw7CitAQCAtNjM2LDcgKzU4NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiBydW5CaW5hcnlQYWNrYWdlVGFza3MocnBtU3BlYyBzcGVjLCBjb25zdCBjCisgICAgICAgICBpZiAocGtnID09IHNwZWMtPnBhY2thZ2VzKSB7CisgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHBhY2thZ2UgbmVlZHMgdG8gYmUgcHJvY2Vzc2VkIGFoZWFkIG9mIG90aGVycywgYXMgdGhleSBjb3B5CisgICAgICAgICAgICAgLy8gY2hhbmdlbG9nIGRhdGEgZnJvbSBpdCwgYW5kIHNvIG90aGVyd2lzZSBkYXRhIHJhY2VzIHdvdWxkIGhhcHBlbgorLSAgICAgICAgICAgIHRhc2stPnJlc3VsdCA9IHBhY2thZ2VCaW5hcnkoc3BlYywgcGtnLCBjb29raWUsIGNoZWF0aW5nLCAmKHRhc2stPmZpbGVuYW1lKSk7CisrICAgICAgICAgICAgdGFzay0+cmVzdWx0ID0gcGFja2FnZUJpbmFyeShzcGVjLCBwa2csIGNvb2tpZSwgY2hlYXRpbmcsICYodGFzay0+ZmlsZW5hbWUpLCBidWlsZFRpbWUsIGJ1aWxkSG9zdCk7CisgICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19OT1RJQ0UsIF8oIkZpbmlzaGVkIGJpbmFyeSBwYWNrYWdlIGpvYiwgcmVzdWx0ICVkLCBmaWxlbmFtZSAlc1xuIiksIHRhc2stPnJlc3VsdCwgdGFzay0+ZmlsZW5hbWUpOworICAgICAgICAgICAgIHRhc2tzID0gdGFzazsKKyAgICAgICAgIH0KK0BAIC02NTMsNyArNjAxLDcgQEAgc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGMKKyAgICAgICAgIGlmICh0YXNrICE9IHRhc2tzKQorICAgICAgICAgI3ByYWdtYSBvbXAgdGFzaworICAgICAgICAgeworLSAgICAgICAgICAgIHRhc2stPnJlc3VsdCA9IHBhY2thZ2VCaW5hcnkoc3BlYywgdGFzay0+cGtnLCBjb29raWUsIGNoZWF0aW5nLCAmKHRhc2stPmZpbGVuYW1lKSk7CisrICAgICAgICAgICAgdGFzay0+cmVzdWx0ID0gcGFja2FnZUJpbmFyeShzcGVjLCB0YXNrLT5wa2csIGNvb2tpZSwgY2hlYXRpbmcsICYodGFzay0+ZmlsZW5hbWUpLCBidWlsZFRpbWUsIGJ1aWxkSG9zdCk7CisgICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19OT1RJQ0UsIF8oIkZpbmlzaGVkIGJpbmFyeSBwYWNrYWdlIGpvYiwgcmVzdWx0ICVkLCBmaWxlbmFtZSAlc1xuIiksIHRhc2stPnJlc3VsdCwgdGFzay0+ZmlsZW5hbWUpOworICAgICAgICAgfQorICAgICB9CitAQCAtNjcxLDExICs2MTksMTEgQEAgc3RhdGljIHZvaWQgZnJlZUJpbmFyeVBhY2thZ2VUYXNrcyhzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiB0YXNrcykKKyAgICAgfQorIH0KKyAKKy1ycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKytycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZywgcnBtX3RpbWVfdCBidWlsZFRpbWUsIGNoYXIqIGJ1aWxkSG9zdCkKKyB7CisgICAgIGNoYXIgKnBrZ2xpc3QgPSBOVUxMOworIAorLSAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrcyA9IHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhzcGVjLCBjb29raWUsIGNoZWF0aW5nKTsKKysgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFza3MgPSBydW5CaW5hcnlQYWNrYWdlVGFza3Moc3BlYywgY29va2llLCBjaGVhdGluZywgYnVpbGRUaW1lLCBidWlsZEhvc3QpOworIAorICAgICBmb3IgKHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2sgPSB0YXNrczsgdGFzayAhPSBOVUxMOyB0YXNrID0gdGFzay0+bmV4dCkgeworICAgICAgICAgaWYgKHRhc2stPnJlc3VsdCA9PSBSUE1SQ19PSykgeworQEAgLTcwMiwyMiArNjUwLDIyIEBAIHJwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorICAgICByZXR1cm4gUlBNUkNfT0s7CisgfQorIAorLXJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSkKKytycG1SQyBwYWNrYWdlU291cmNlcyhycG1TcGVjIHNwZWMsIGNoYXIgKipjb29raWUsIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjaGFyKiBidWlsZEhvc3QpCisgeworICAgICBQYWNrYWdlIHNvdXJjZVBrZyA9IHNwZWMtPnNvdXJjZVBhY2thZ2U7CisgICAgIHJwbVJDIHJjOworIAorICAgICAvKiBBZGQgc29tZSBjcnVmdCAqLworICAgICBoZWFkZXJQdXRTdHJpbmcoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19SUE1WRVJTSU9OLCBWRVJTSU9OKTsKKy0gICAgaGVhZGVyUHV0U3RyaW5nKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfQlVJTERIT1NULCBidWlsZEhvc3QoKSk7CistICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgZ2V0QnVpbGRUaW1lKCksIDEpOworKyAgICBoZWFkZXJQdXRTdHJpbmcoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMREhPU1QsIGJ1aWxkSG9zdCk7CisrICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgJmJ1aWxkVGltZSwgMSk7CisgCisgICAgIC8qIFhYWCB0aGlzIHNob3VsZCBiZSAlX3NycG1kaXIgKi8KKyAgICAgewljaGFyICpmbiA9IHJwbUdldFBhdGgoIiV7X3NyY3JwbWRpcn0vIiwgc3BlYy0+c291cmNlUnBtTmFtZSxOVUxMKTsKKyAJY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja19zcnBtfSAiLCBmbiwgTlVMTCk7CisgCisgCXNwZWMtPnNvdXJjZVBrZ0lkID0gTlVMTDsKKy0JcmMgPSB3cml0ZVJQTShzb3VyY2VQa2csICZzcGVjLT5zb3VyY2VQa2dJZCwgZm4sIGNvb2tpZSk7CisrCXJjID0gd3JpdGVSUE0oc291cmNlUGtnLCAmc3BlYy0+c291cmNlUGtnSWQsIGZuLCBjb29raWUsIGJ1aWxkVGltZSwgYnVpbGRIb3N0KTsKKyAKKyAJLyogRG8gY2hlY2sgU1JQTSBwYWNrYWdlIGlmIGVuYWJsZWQgKi8KKyAJaWYgKHJjID09IFJQTVJDX09LICYmIHBrZ2NoZWNrWzBdICE9ICcgJykgeworZGlmZiAtLWdpdCBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmggYi9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oCitpbmRleCA4MzUxYTZhMzQuLjc5NzMzN2NhNyAxMDA2NDQKKy0tLSBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKKysrKyBiL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKK0BAIC00MDgsMTkgKzQwOCwyMyBAQCBycG1SQyBwcm9jZXNzU291cmNlRmlsZXMocnBtU3BlYyBzcGVjLCBycG1CdWlsZFBrZ0ZsYWdzIHBrZ0ZsYWdzKTsKKyAgKiBAcGFyYW0gc3BlYwkJc3BlYyBmaWxlIGNvbnRyb2wgc3RydWN0dXJlCisgICogQHBhcmFtIGNvb2tpZQlidWlsZCBpZGVudGlmaWVyICJjb29raWUiIG9yIE5VTEwKKyAgKiBAcGFyYW0gY2hlYXRpbmcJd2FzIGJ1aWxkIHNob3J0Y2lyY3VpdGVkPworKyAqIEBwYXJhbSBidWlsZFRpbWUJdGhlIGJ1aWxkIHRpbWVzdGFtcCB0aGF0IGdvZXMgaW50byBwYWNrYWdlcworKyAqIEBwYXJhbSBidWlsZEhvc3QJdGhlIGhvc3RuYW1lIHdoZXJlIHRoZSBidWlsZCBpcyBoYXBwZW5pbmcKKyAgKiBAcmV0dXJuCQlSUE1SQ19PSyBvbiBzdWNjZXNzCisgICovCisgUlBNX0dOVUNfSU5URVJOQUwKKy1ycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZyk7CisrcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcsIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjaGFyKiBidWlsZEhvc3QpOworIAorIC8qKiBcaW5ncm91cCBycG1idWlsZAorICAqIEdlbmVyYXRlIHNvdXJjZSBwYWNrYWdlLgorICAqIEBwYXJhbSBzcGVjCQlzcGVjIGZpbGUgY29udHJvbCBzdHJ1Y3R1cmUKKyAgKiBAcmV0dmFsIGNvb2tpZQlidWlsZCBpZGVudGlmaWVyICJjb29raWUiIG9yIE5VTEwKKysgKiBAcGFyYW0gYnVpbGRUaW1lCXRoZSBidWlsZCB0aW1lc3RhbXAgdGhhdCBnb2VzIGludG8gcGFja2FnZXMKKysgKiBAcGFyYW0gYnVpbGRIb3N0CXRoZSBob3N0bmFtZSB3aGVyZSB0aGUgYnVpbGQgaXMgaGFwcGVuaW5nCisgICogQHJldHVybgkJUlBNUkNfT0sgb24gc3VjY2VzcworICAqLworIFJQTV9HTlVDX0lOVEVSTkFMCistcnBtUkMgcGFja2FnZVNvdXJjZXMocnBtU3BlYyBzcGVjLCBjaGFyICoqY29va2llKTsKKytycG1SQyBwYWNrYWdlU291cmNlcyhycG1TcGVjIHNwZWMsIGNoYXIgKipjb29raWUsIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjaGFyKiBidWlsZEhvc3QpOworIAorIFJQTV9HTlVDX0lOVEVSTkFMCisgaW50IGFkZExhbmdUYWcocnBtU3BlYyBzcGVjLCBIZWFkZXIgaCwgcnBtVGFnVmFsIHRhZywKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fZ2l0LmJiCmluZGV4IGIwZjU3ODAuLjc4NjYzMTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtX2dpdC5iYgpAQCAtMzgsOCArMzgsMTMgQEAKICAgICAgICAgICAgZmlsZTovLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwbGl0LWJpbmFyeS1wYWNrYWdlLWJ1aWxkaW5nLWludG8tYS1zZXBhcmF0ZS1mdW5jdGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SdW4tYmluYXJ5LXBhY2thZ2UtY3JlYXRpb24tdmlhLXRocmVhZC1wb29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXJwbXN0cnBvb2wuYy1tYWtlLW9wZXJhdGlvbnMtb3Zlci1zdHJpbmctcG9vbHMtdGhyZWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1kaXNhYmxlLWF1dG8tcmVxcy5wYXRjaCBcCiAgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBQViA9ICI0LjEzLjkwK2dpdCR7U1JDUFZ9IgogUEUgPSAiMSIKQEAgLTQ3LDggKzUyLDggQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotREVQRU5EUyA9ICJuc3MgbGliYXJjaGl2ZSBkYiBmaWxlIHBvcHQgeHogZGJ1cyBlbGZ1dGlscyBweXRob24zIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFMgPSAibnNzIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGJ6aXAyIGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zbmF0aXZlCiBleHBvcnQgUFlUSE9OX0FCSQpAQCAtNjgsNiArNzMsOSBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2ltYWV2bV0gPSAiLS13aXRoLWltYWV2bSwsaW1hLWV2bS11dGlscyIKKwogIyBEaXJlY3QgcnBtLW5hdGl2ZSB0byByZWFkIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCiAjIGxpYm1hZ2ljIGFsc28gaGFzIHN5c3Jvb3QgcGF0aCBjb250YW1pbmF0aW9uLCBzbyBvdmVycmlkZSBpdAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewpAQCAtOTksNyArMTA3LDggQEAKIH0KIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgJHtEfS8ke2xpYmRpcn0vcnBtL21hY3JvcworCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCiAKIAlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKIAkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkKQEAgLTExOSwzICsxMjgsMTEgQEAKIFJQUk9WSURFU18ke1BOfSArPSAicnBtLWJ1aWxkIgogCiBSREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwgcHl0aG9uMy1jb3JlIgorCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInJwbV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKKyMgRG8gbm90IHNwZWNpZnkgYSBzeXNyb290IHdoZW4gY29tcGlsaW5nIG9uIGEgdGFyZ2V0LgorcnBtX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdFteIF0qOjpnJyBcCisJICAgICR7UEtHRH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L0NWRS0yMDE3LTE0MDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvQ1ZFLTIwMTctMTQwNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMGQxYmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvQ1ZFLTIwMTctMTQwNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNTMgKzAsMCBAQAotRnJvbSBkODZkMjgzZmNiMzVkMTQ0MmExMjFiOTIwMzA4ODQ1MjM5MDhhMzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbmFnYWNoaWthIDxuYWdhY2hpa2FAYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlPgotRGF0ZTogU2F0LCAyMiBBcHIgMjAxNyAwNzoyOTowMSArMDAwMAotU3ViamVjdDogW1BBVENIXSBtZXJnZSByZXZpc2lvbihzKSA1ODMyMyw1ODMyNDoKLQotCU1lcmdlIGpzb24tMi4wLjQuCi0KLQkgICogaHR0cHM6Ly9naXRodWIuY29tL2Zsb3JpL2pzb24vcmVsZWFzZXMvdGFnL3YyLjAuNAotCSAgKiBodHRwczovL2dpdGh1Yi5jb20vZmxvcmkvanNvbi9ibG9iLzA5ZmFiZWIwM2U3M2VkODhkYzhjZThmMTlkNzZhYzU5ZTUxZGFlMjAvQ0hBTkdFUy5tZCMyMDE3LTAzLTIzLTIwNAotCVVzZSBgYXNzZXJ0X3JhaXNlYCBpbnN0ZWFkIG9mIGBhc3NlcnRfcmFpc2VzYC4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2NpLnJ1YnktbGFuZy5vcmcvcnVieS9icmFuY2hlcy9ydWJ5XzJfNEA1ODQ0NSBiMmRkMDNjOC0zOWQ0LTRkOGYtOThmZi04MjNmZTY5YjA4MGUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNDA2NAotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc2EuY29tPgotCi0tLS0KLSBleHQvanNvbi9mYnVmZmVyL2ZidWZmZXIuaCAgICAgICB8ICAgMyAtLS0KLSBleHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMgICB8ICAxMiArKysrKy0tLS0tCi0gZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oICAgfCAgIDEgLQotIGV4dC9qc29uL2pzb24uZ2Vtc3BlYyAgICAgICAgICAgIHwgQmluIDU0NzMgLT4gNTQ3NCBieXRlcwotIGV4dC9qc29uL2xpYi9qc29uL3ZlcnNpb24ucmIgICAgIHwgICAyICstCi0gZXh0L2pzb24vcGFyc2VyL3BhcnNlci5jICAgICAgICAgfCAgNDggKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gZXh0L2pzb24vcGFyc2VyL3BhcnNlci5ybCAgICAgICAgfCAgMTQgKysrKysrKysrLS0tCi0gdGVzdC9qc29uL2pzb25fZW5jb2RpbmdfdGVzdC5yYiAgfCAgIDIgKysKLSB0ZXN0L2pzb24vanNvbl9nZW5lcmF0b3JfdGVzdC5yYiB8ICAgMAotIHZlcnNpb24uaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCi0gMTAgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCi0gbW9kZSBjaGFuZ2UgMTAwNzU1ID0+IDEwMDY0NCB0ZXN0L2pzb24vanNvbl9nZW5lcmF0b3JfdGVzdC5yYgotCi1JbmRleDogcnVieS0yLjQuMC9leHQvanNvbi9mYnVmZmVyL2ZidWZmZXIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9mYnVmZmVyL2ZidWZmZXIuaAotKysrIHJ1YnktMi40LjAvZXh0L2pzb24vZmJ1ZmZlci9mYnVmZmVyLmgKLUBAIC0xMiw5ICsxMiw2IEBACi0gI2RlZmluZSBSRkxPQVRfVkFMVUUodmFsKSAoUkZMT0FUKHZhbCktPnZhbHVlKQotICNlbmRpZgotIAotLSNpZm5kZWYgUkFSUkFZX1BUUgotLSNkZWZpbmUgUkFSUkFZX1BUUihBUlJBWSkgUkFSUkFZKEFSUkFZKS0+cHRyCi0tI2VuZGlmCi0gI2lmbmRlZiBSQVJSQVlfTEVOCi0gI2RlZmluZSBSQVJSQVlfTEVOKEFSUkFZKSBSQVJSQVkoQVJSQVkpLT5sZW4KLSAjZW5kaWYKLUluZGV4OiBydWJ5LTIuNC4wL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotQEAgLTMwOCw3ICszMDgsNyBAQCBzdGF0aWMgY2hhciAqZnN0cm5kdXAoY29uc3QgY2hhciAqcHRyLCB1Ci0gICBjaGFyICpyZXN1bHQ7Ci0gICBpZiAobGVuIDw9IDApIHJldHVybiBOVUxMOwotICAgcmVzdWx0ID0gQUxMT0NfTihjaGFyLCBsZW4pOwotLSAgbWVtY2NweShyZXN1bHQsIHB0ciwgMCwgbGVuKTsKLSsgIG1lbWNweShyZXN1bHQsIHB0ciwgbGVuKTsKLSAgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfaW5kZW50X3NldChWQUxVRSBzZWwKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+aW5kZW50KSBydWJ5X3hmcmVlKHN0YXRlLT5pbmRlbnQpOwotLSAgICAgICAgc3RhdGUtPmluZGVudCA9IHN0cmR1cChSU1RSSU5HX1BUUihpbmRlbnQpKTsKLSsgICAgICAgIHN0YXRlLT5pbmRlbnQgPSBmc3RybmR1cChSU1RSSU5HX1BUUihpbmRlbnQpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPmluZGVudF9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1AQCAtMTEwMCw3ICsxMTAwLDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9zcGFjZV9zZXQoVkFMVUUgc2VsZgotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5zcGFjZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2UpOwotLSAgICAgICAgc3RhdGUtPnNwYWNlID0gc3RyZHVwKFJTVFJJTkdfUFRSKHNwYWNlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2UgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZSksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+c3BhY2VfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMzYsNyArMTEzNiw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2VfYmVmb3JlX3NldChWQUwKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+c3BhY2VfYmVmb3JlKSBydWJ5X3hmcmVlKHN0YXRlLT5zcGFjZV9iZWZvcmUpOwotLSAgICAgICAgc3RhdGUtPnNwYWNlX2JlZm9yZSA9IHN0cmR1cChSU1RSSU5HX1BUUihzcGFjZV9iZWZvcmUpKTsKLSsgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZV9iZWZvcmUpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPnNwYWNlX2JlZm9yZV9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1AQCAtMTE3Myw3ICsxMTczLDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9vYmplY3Rfbmxfc2V0KFZBTFVFCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPm9iamVjdF9ubCkgcnVieV94ZnJlZShzdGF0ZS0+b2JqZWN0X25sKTsKLS0gICAgICAgIHN0YXRlLT5vYmplY3RfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSk7Ci0rICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5vYmplY3RfbmxfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfYXJyYXlfbmxfc2V0KFZBTFVFIHMKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+YXJyYXlfbmwpIHJ1YnlfeGZyZWUoc3RhdGUtPmFycmF5X25sKTsKLS0gICAgICAgIHN0YXRlLT5hcnJheV9ubCA9IHN0cmR1cChSU1RSSU5HX1BUUihhcnJheV9ubCkpOwotKyAgICAgICAgc3RhdGUtPmFycmF5X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIoYXJyYXlfbmwpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPmFycmF5X25sX2xlbiA9IGxlbjsKLSAgICAgfQotICAgICByZXR1cm4gUW5pbDsKLUluZGV4OiBydWJ5LTIuNC4wL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotQEAgLTEsNyArMSw2IEBACi0gI2lmbmRlZiBfR0VORVJBVE9SX0hfCi0gI2RlZmluZSBfR0VORVJBVE9SX0hfCi0gCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gCi1JbmRleDogcnVieS0yLjQuMC9leHQvanNvbi9saWIvanNvbi92ZXJzaW9uLnJiCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcnVieS0yLjQuMC5vcmlnL2V4dC9qc29uL2xpYi9qc29uL3ZlcnNpb24ucmIKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL2xpYi9qc29uL3ZlcnNpb24ucmIKLUBAIC0xLDcgKzEsNyBAQAotICMgZnJvemVuX3N0cmluZ19saXRlcmFsOiBmYWxzZQotIG1vZHVsZSBKU09OCi0gICAjIEpTT04gdmVyc2lvbgotLSAgVkVSU0lPTiAgICAgICAgID0gJzIuMC4yJwotKyAgVkVSU0lPTiAgICAgICAgID0gJzIuMC40JwotICAgVkVSU0lPTl9BUlJBWSAgID0gVkVSU0lPTi5zcGxpdCgvXC4vKS5tYXAgeyB8eHwgeC50b19pIH0gIyA6bm9kb2M6Ci0gICBWRVJTSU9OX01BSk9SICAgPSBWRVJTSU9OX0FSUkFZWzBdICMgOm5vZG9jOgotICAgVkVSU0lPTl9NSU5PUiAgID0gVkVSU0lPTl9BUlJBWVsxXSAjIDpub2RvYzoKLUluZGV4OiBydWJ5LTIuNC4wL2V4dC9qc29uL3BhcnNlci9wYXJzZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9wYXJzZXIvcGFyc2VyLmMKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL3BhcnNlci9wYXJzZXIuYwotQEAgLTE0MzUsMTMgKzE0MzUsMjEgQEAgc3RhdGljIFZBTFVFIGpzb25fc3RyaW5nX3VuZXNjYXBlKFZBTFVFCi0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICAgICAgICAgICBpZiAocGUgPiBzdHJpbmdFbmQgLSA0KSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFFuaWw7Ci0rICAgICAgICAgICAgICAgICAgICAgIHJiX2VuY19yYWlzZSgKLSsgICAgICAgICAgICAgICAgICAgICAgICBFWENfRU5DT0RJTkcgZVBhcnNlckVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICIldTogaW5jb21wbGV0ZSB1bmljb2RlIGNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2UgYXQgJyVzJyIsIF9fTElORV9fLCBwCi0rICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgIFVURjMyIGNoID0gdW5lc2NhcGVfdW5pY29kZSgodW5zaWduZWQgY2hhciAqKSArK3BlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBwZSArPSAzOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTklfU1VSX0hJR0hfU1RBUlQgPT0gKGNoICYgMHhGQzAwKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZSsrOwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGUgPiBzdHJpbmdFbmQgLSA2KSByZXR1cm4gUW5pbDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlID4gc3RyaW5nRW5kIC0gNikgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJiX2VuY19yYWlzZSgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ19FTkNPRElORyBlUGFyc2VyRXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXU6IGluY29tcGxldGUgc3Vycm9nYXRlIHBhaXIgYXQgJyVzJyIsIF9fTElORV9fLCBwCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZVswXSA9PSAnXFwnICYmIHBlWzFdID09ICd1JykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMzIgc3VyID0gdW5lc2NhcGVfdW5pY29kZSgodW5zaWduZWQgY2hhciAqKSBwZSArIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSAoKChjaCAmIDB4M0YpIDw8IDEwKSB8ICgoKChjaCA+PiA2KSAmIDB4RikgKyAxKSA8PCAxNikKLUBAIC0xNDcxLDcgKzE0NzksNyBAQCBzdGF0aWMgVkFMVUUganNvbl9zdHJpbmdfdW5lc2NhcGUoVkFMVUUKLSB9Ci0gCi0gCi0tI2xpbmUgMTQ3NSAicGFyc2VyLmMiCi0rI2xpbmUgMTQ4MyAicGFyc2VyLmMiCi0gZW51bSB7SlNPTl9zdHJpbmdfc3RhcnQgPSAxfTsKLSBlbnVtIHtKU09OX3N0cmluZ19maXJzdF9maW5hbCA9IDh9OwotIGVudW0ge0pTT05fc3RyaW5nX2Vycm9yID0gMH07Ci1AQCAtMTQ3OSw3ICsxNDg3LDcgQEAgZW51bSB7SlNPTl9zdHJpbmdfZXJyb3IgPSAwfTsKLSBlbnVtIHtKU09OX3N0cmluZ19lbl9tYWluID0gMX07Ci0gCi0gCi0tI2xpbmUgNTA0ICJwYXJzZXIucmwiCi0rI2xpbmUgNTEyICJwYXJzZXIucmwiCi0gCi0gCi0gc3RhdGljIGludAotQEAgLTE1MDEsMTUgKzE1MDksMTUgQEAgc3RhdGljIGNoYXIgKkpTT05fcGFyc2Vfc3RyaW5nKEpTT05fUGFycwotIAotICAgICAqcmVzdWx0ID0gcmJfc3RyX2J1Zl9uZXcoMCk7Ci0gCi0tI2xpbmUgMTUwNSAicGFyc2VyLmMiCi0rI2xpbmUgMTUxMyAicGFyc2VyLmMiCi0gCXsKLSAJY3MgPSBKU09OX3N0cmluZ19zdGFydDsKLSAJfQotIAotLSNsaW5lIDUyNSAicGFyc2VyLnJsIgotKyNsaW5lIDUzMyAicGFyc2VyLnJsIgotICAgICBqc29uLT5tZW1vID0gcDsKLSAKLS0jbGluZSAxNTEzICJwYXJzZXIuYyIKLSsjbGluZSAxNTIxICJwYXJzZXIuYyIKLSAJewotIAlpZiAoIHAgPT0gcGUgKQotIAkJZ290byBfdGVzdF9lb2Y7Ci1AQCAtMTUzNCw3ICsxNTQyLDcgQEAgY2FzZSAyOgotIAkJZ290byBzdDA7Ci0gCWdvdG8gc3QyOwotIHRyMjoKLS0jbGluZSA0OTAgInBhcnNlci5ybCIKLSsjbGluZSA0OTggInBhcnNlci5ybCIKLSAJewotICAgICAgICAgKnJlc3VsdCA9IGpzb25fc3RyaW5nX3VuZXNjYXBlKCpyZXN1bHQsIGpzb24tPm1lbW8gKyAxLCBwKTsKLSAgICAgICAgIGlmIChOSUxfUCgqcmVzdWx0KSkgewotQEAgLTE1NDUsMTQgKzE1NTMsMTQgQEAgdHIyOgotICAgICAgICAgICAgIHtwID0gKCggcCArIDEpKS0xO30KLSAgICAgICAgIH0KLSAgICAgfQotLSNsaW5lIDUwMSAicGFyc2VyLnJsIgotKyNsaW5lIDUwOSAicGFyc2VyLnJsIgotIAl7IHAtLTsge3ArKzsgY3MgPSA4OyBnb3RvIF9vdXQ7fSB9Ci0gCWdvdG8gc3Q4OwotIHN0ODoKLSAJaWYgKCArK3AgPT0gcGUgKQotIAkJZ290byBfdGVzdF9lb2Y4OwotIGNhc2UgODoKLS0jbGluZSAxNTU2ICJwYXJzZXIuYyIKLSsjbGluZSAxNTY0ICJwYXJzZXIuYyIKLSAJZ290byBzdDA7Ci0gc3QzOgotIAlpZiAoICsrcCA9PSBwZSApCi1AQCAtMTYyOCw3ICsxNjM2LDcgQEAgY2FzZSA3OgotIAlfb3V0OiB7fQotIAl9Ci0gCi0tI2xpbmUgNTI3ICJwYXJzZXIucmwiCi0rI2xpbmUgNTM1ICJwYXJzZXIucmwiCi0gCi0gICAgIGlmIChqc29uLT5jcmVhdGVfYWRkaXRpb25zICYmIFJURVNUKG1hdGNoX3N0cmluZyA9IGpzb24tPm1hdGNoX3N0cmluZykpIHsKLSAgICAgICAgICAgVkFMVUUga2xhc3M7Ci1AQCAtMTY3NSw3ICsxNjgzLDcgQEAgc3RhdGljIFZBTFVFIGNvbnZlcnRfZW5jb2RpbmcoVkFMVUUgc291cgotICAgICB9Ci0gICAgIEZPUkNFX1VURjgoc291cmNlKTsKLSAgIH0gZWxzZSB7Ci0tICAgIHNvdXJjZSA9IHJiX3N0cl9jb252X2VuYyhzb3VyY2UsIE5VTEwsIHJiX3V0ZjhfZW5jb2RpbmcoKSk7Ci0rICAgIHNvdXJjZSA9IHJiX3N0cl9jb252X2VuYyhzb3VyY2UsIHJiX2VuY19nZXQoc291cmNlKSwgcmJfdXRmOF9lbmNvZGluZygpKTsKLSAgIH0KLSAjZW5kaWYKLSAgICAgcmV0dXJuIHNvdXJjZTsKLUBAIC0xODA4LDcgKzE4MTYsNyBAQCBzdGF0aWMgVkFMVUUgY1BhcnNlcl9pbml0aWFsaXplKGludCBhcmdjCi0gfQotIAotIAotLSNsaW5lIDE4MTIgInBhcnNlci5jIgotKyNsaW5lIDE4MjAgInBhcnNlci5jIgotIGVudW0ge0pTT05fc3RhcnQgPSAxfTsKLSBlbnVtIHtKU09OX2ZpcnN0X2ZpbmFsID0gMTB9OwotIGVudW0ge0pTT05fZXJyb3IgPSAwfTsKLUBAIC0xODE2LDcgKzE4MjQsNyBAQCBlbnVtIHtKU09OX2Vycm9yID0gMH07Ci0gZW51bSB7SlNPTl9lbl9tYWluID0gMX07Ci0gCi0gCi0tI2xpbmUgNzIwICJwYXJzZXIucmwiCi0rI2xpbmUgNzI4ICJwYXJzZXIucmwiCi0gCi0gCi0gLyoKLUBAIC0xODMzLDE2ICsxODQxLDE2IEBAIHN0YXRpYyBWQUxVRSBjUGFyc2VyX3BhcnNlKFZBTFVFIHNlbGYpCi0gICBHRVRfUEFSU0VSOwotIAotIAotLSNsaW5lIDE4MzcgInBhcnNlci5jIgotKyNsaW5lIDE4NDUgInBhcnNlci5jIgotIAl7Ci0gCWNzID0gSlNPTl9zdGFydDsKLSAJfQotIAotLSNsaW5lIDczNiAicGFyc2VyLnJsIgotKyNsaW5lIDc0NCAicGFyc2VyLnJsIgotICAgcCA9IGpzb24tPnNvdXJjZTsKLSAgIHBlID0gcCArIGpzb24tPmxlbjsKLSAKLS0jbGluZSAxODQ2ICJwYXJzZXIuYyIKLSsjbGluZSAxODU0ICJwYXJzZXIuYyIKLSAJewotIAlpZiAoIHAgPT0gcGUgKQotIAkJZ290byBfdGVzdF9lb2Y7Ci1AQCAtMTg3Niw3ICsxODg0LDcgQEAgc3QwOgotIGNzID0gMDsKLSAJZ290byBfb3V0OwotIHRyMjoKLS0jbGluZSA3MTIgInBhcnNlci5ybCIKLSsjbGluZSA3MjAgInBhcnNlci5ybCIKLSAJewotICAgICAgICAgY2hhciAqbnAgPSBKU09OX3BhcnNlX3ZhbHVlKGpzb24sIHAsIHBlLCAmcmVzdWx0LCAwKTsKLSAgICAgICAgIGlmIChucCA9PSBOVUxMKSB7IHAtLTsge3ArKzsgY3MgPSAxMDsgZ290byBfb3V0O30gfSBlbHNlIHtwID0gKCggbnApKS0xO30KLUBAIC0xODg2LDcgKzE4OTQsNyBAQCBzdDEwOgotIAlpZiAoICsrcCA9PSBwZSApCi0gCQlnb3RvIF90ZXN0X2VvZjEwOwotIGNhc2UgMTA6Ci0tI2xpbmUgMTg5MCAicGFyc2VyLmMiCi0rI2xpbmUgMTg5OCAicGFyc2VyLmMiCi0gCXN3aXRjaCggKCpwKSApIHsKLSAJCWNhc2UgMTM6IGdvdG8gc3QxMDsKLSAJCWNhc2UgMzI6IGdvdG8gc3QxMDsKLUBAIC0xOTc1LDcgKzE5ODMsNyBAQCBjYXNlIDk6Ci0gCV9vdXQ6IHt9Ci0gCX0KLSAKLS0jbGluZSA3MzkgInBhcnNlci5ybCIKLSsjbGluZSA3NDcgInBhcnNlci5ybCIKLSAKLSAgIGlmIChjcyA+PSBKU09OX2ZpcnN0X2ZpbmFsICYmIHAgPT0gcGUpIHsKLSAgICAgcmV0dXJuIHJlc3VsdDsKLUluZGV4OiBydWJ5LTIuNC4wL2V4dC9qc29uL3BhcnNlci9wYXJzZXIucmwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBydWJ5LTIuNC4wLm9yaWcvZXh0L2pzb24vcGFyc2VyL3BhcnNlci5ybAotKysrIHJ1YnktMi40LjAvZXh0L2pzb24vcGFyc2VyL3BhcnNlci5ybAotQEAgLTQ0NiwxMyArNDQ2LDIxIEBAIHN0YXRpYyBWQUxVRSBqc29uX3N0cmluZ191bmVzY2FwZShWQUxVRQotICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAgICAgICAgaWYgKHBlID4gc3RyaW5nRW5kIC0gNCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBRbmlsOwotKyAgICAgICAgICAgICAgICAgICAgICByYl9lbmNfcmFpc2UoCi0rICAgICAgICAgICAgICAgICAgICAgICAgRVhDX0VOQ09ESU5HIGVQYXJzZXJFcnJvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiJXU6IGluY29tcGxldGUgdW5pY29kZSBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlIGF0ICclcyciLCBfX0xJTkVfXywgcAotKyAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBVVEYzMiBjaCA9IHVuZXNjYXBlX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgKytwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcGUgKz0gMzsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5JX1NVUl9ISUdIX1NUQVJUID09IChjaCAmIDB4RkMwMCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGUrKzsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlID4gc3RyaW5nRW5kIC0gNikgcmV0dXJuIFFuaWw7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZSA+IHN0cmluZ0VuZCAtIDYpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYl9lbmNfcmFpc2UoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfRU5DT0RJTkcgZVBhcnNlckVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1OiBpbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyIGF0ICclcyciLCBfX0xJTkVfXywgcAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVbMF0gPT0gJ1xcJyAmJiBwZVsxXSA9PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjMyIHN1ciA9IHVuZXNjYXBlX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgcGUgKyAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gKCgoY2ggJiAweDNGKSA8PCAxMCkgfCAoKCgoY2ggPj4gNikgJiAweEYpICsgMSkgPDwgMTYpCi1AQCAtNTcwLDcgKzU3OCw3IEBAIHN0YXRpYyBWQUxVRSBjb252ZXJ0X2VuY29kaW5nKFZBTFVFIHNvdXIKLSAgICAgfQotICAgICBGT1JDRV9VVEY4KHNvdXJjZSk7Ci0gICB9IGVsc2UgewotLSAgICBzb3VyY2UgPSByYl9zdHJfY29udl9lbmMoc291cmNlLCBOVUxMLCByYl91dGY4X2VuY29kaW5nKCkpOwotKyAgICBzb3VyY2UgPSByYl9zdHJfY29udl9lbmMoc291cmNlLCByYl9lbmNfZ2V0KHNvdXJjZSksIHJiX3V0ZjhfZW5jb2RpbmcoKSk7Ci0gICB9Ci0gI2VuZGlmCi0gICAgIHJldHVybiBzb3VyY2U7Ci1JbmRleDogcnVieS0yLjQuMC90ZXN0L2pzb24vanNvbl9lbmNvZGluZ190ZXN0LnJiCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcnVieS0yLjQuMC5vcmlnL3Rlc3QvanNvbi9qc29uX2VuY29kaW5nX3Rlc3QucmIKLSsrKyBydWJ5LTIuNC4wL3Rlc3QvanNvbi9qc29uX2VuY29kaW5nX3Rlc3QucmIKLUBAIC03OSw2ICs3OSw4IEBAIGNsYXNzIEpTT05FbmNvZGluZ1Rlc3QgPCBUZXN0OjpVbml0OjpUZXMKLSAgICAganNvbiA9ICdbIlx1ZDg0MFx1ZGMwMSJdJwotICAgICBhc3NlcnRfZXF1YWwganNvbiwgZ2VuZXJhdGUodXRmOCwgOmFzY2lpX29ubHkgPT4gdHJ1ZSkKLSAgICAgYXNzZXJ0X2VxdWFsIHV0ZjgsIHBhcnNlKGpzb24pCi0rICAgIGFzc2VydF9yYWlzZShKU09OOjpQYXJzZXJFcnJvcikgeyBwYXJzZSgnIlx1IicpIH0KLSsgICAgYXNzZXJ0X3JhaXNlKEpTT046OlBhcnNlckVycm9yKSB7IHBhcnNlKCciXHVkODAwIicpIH0KLSAgIGVuZAotIAotICAgZGVmIHRlc3RfY2hhcnMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L2V4dG1rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKaW5kZXggOGI2ODQ1MC4uYTViMjE4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKQEAgLTEsMyArMSw0IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIGRpZmYgLXJ1IHJ1YnktMS44LjctcDI0OC5vcmlnL2V4dC9leHRtay5yYiBydWJ5LTEuOC43LXAyNDgvZXh0L2V4dG1rLnJiCiAtLS0gcnVieS0xLjguNy1wMjQ4Lm9yaWcvZXh0L2V4dG1rLnJiCTIwMDktMTItMjQgMDM6MDE6NTguMDAwMDAwMDAwIC0wNjAwCiArKysgcnVieS0xLjguNy1wMjQ4L2V4dC9leHRtay5yYgkyMDEwLTAyLTEyIDE1OjU1OjI3LjM3MDA2MTU1OCAtMDYwMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy0xNDA2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlNjkzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorRnJvbSA4Zjc4MmZkOGUxODFkOWNmZTkzODdkZWQ0M2E1Y2E5NjkyMjY2Yjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmxvcmlhbiBGcmFuayA8ZmxvcmlAcGluZy5kZT4KK0RhdGU6IFRodSwgMiBNYXIgMjAxNyAxMjoxMjozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggYXJiaXRyYXJ5IGhlYXAgZXhwb3N1cmUgcHJvYmxlbQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE0MDY0CisKK1NpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KKy0tLQorIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyB8IDEyICsrKysrKy0tLS0tLQorIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCB8ICAxIC0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYworaW5kZXggZWY4NWJiNy4uYzg4ODE4YyAxMDA2NDQKKy0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYworKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCitAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBjaGFyICpmc3RybmR1cChjb25zdCBjaGFyICpwdHIsIHVuc2lnbmVkIGxvbmcgbGVuKSB7CisgICBjaGFyICpyZXN1bHQ7CisgICBpZiAobGVuIDw9IDApIHJldHVybiBOVUxMOworICAgcmVzdWx0ID0gQUxMT0NfTihjaGFyLCBsZW4pOworLSAgbWVtY2NweShyZXN1bHQsIHB0ciwgMCwgbGVuKTsKKysgIG1lbWNweShyZXN1bHQsIHB0ciwgbGVuKTsKKyAgIHJldHVybiByZXN1bHQ7CisgfQorIAorQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfaW5kZW50X3NldChWQUxVRSBzZWxmLCBWQUxVRSBpbmRlbnQpCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBpZiAoc3RhdGUtPmluZGVudCkgcnVieV94ZnJlZShzdGF0ZS0+aW5kZW50KTsKKy0gICAgICAgIHN0YXRlLT5pbmRlbnQgPSBzdHJkdXAoUlNUUklOR19QVFIoaW5kZW50KSk7CisrICAgICAgICBzdGF0ZS0+aW5kZW50ID0gZnN0cm5kdXAoUlNUUklOR19QVFIoaW5kZW50KSwgbGVuKTsKKyAgICAgICAgIHN0YXRlLT5pbmRlbnRfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2Vfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIHNwYWNlKQorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgaWYgKHN0YXRlLT5zcGFjZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2UpOworLSAgICAgICAgc3RhdGUtPnNwYWNlID0gc3RyZHVwKFJTVFJJTkdfUFRSKHNwYWNlKSk7CisrICAgICAgICBzdGF0ZS0+c3BhY2UgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZSksIGxlbik7CisgICAgICAgICBzdGF0ZS0+c3BhY2VfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworQEAgLTExMzYsNyArMTEzNiw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2VfYmVmb3JlX3NldChWQUxVRSBzZWxmLCBWQUxVRSBzcGFjZV9iZWZvcmUpCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBpZiAoc3RhdGUtPnNwYWNlX2JlZm9yZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2VfYmVmb3JlKTsKKy0gICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBzdHJkdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSk7CisrICAgICAgICBzdGF0ZS0+c3BhY2VfYmVmb3JlID0gZnN0cm5kdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSwgbGVuKTsKKyAgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmVfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworQEAgLTExNzMsNyArMTE3Myw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfb2JqZWN0X25sX3NldChWQUxVRSBzZWxmLCBWQUxVRSBvYmplY3RfbmwpCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBpZiAoc3RhdGUtPm9iamVjdF9ubCkgcnVieV94ZnJlZShzdGF0ZS0+b2JqZWN0X25sKTsKKy0gICAgICAgIHN0YXRlLT5vYmplY3RfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSk7CisrICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSwgbGVuKTsKKyAgICAgICAgIHN0YXRlLT5vYmplY3RfbmxfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfYXJyYXlfbmxfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIGFycmF5X25sKQorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgaWYgKHN0YXRlLT5hcnJheV9ubCkgcnVieV94ZnJlZShzdGF0ZS0+YXJyYXlfbmwpOworLSAgICAgICAgc3RhdGUtPmFycmF5X25sID0gc3RyZHVwKFJTVFJJTkdfUFRSKGFycmF5X25sKSk7CisrICAgICAgICBzdGF0ZS0+YXJyYXlfbmwgPSBmc3RybmR1cChSU1RSSU5HX1BUUihhcnJheV9ubCksIGxlbik7CisgICAgICAgICBzdGF0ZS0+YXJyYXlfbmxfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAoraW5kZXggOTAwYjRkNS4uYzM2N2E2MiAxMDA2NDQKKy0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAorKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oCitAQCAtMSw3ICsxLDYgQEAKKyAjaWZuZGVmIF9HRU5FUkFUT1JfSF8KKyAjZGVmaW5lIF9HRU5FUkFUT1JfSF8KKyAKKy0jaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzUyZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1yZXF1aXJlIHJ1YnkuaW5jCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MDY0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2U5NDg1ZGNkYjg2ZmY1MjY2MjcyOGRlMjAwM2U2MjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTUyZmQwYmQxNWE5MGI0YTE4MjEzNDQ4ZjQ4NWQ0YjUzZTlmNzY2MmUxNTA4MTkwYWE1YjcwMjQ0NmIyOWUzZCIKLQotIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKLSMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAotIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW2dwbV0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZGlzYWJsZS1kdHJhY2UgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCi0KLVNVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKLVJERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgotCi1TVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgotUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDI3YWM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKQEAgLTAsMCArMSw1MyBAQAorcmVxdWlyZSBydWJ5LmluYworCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyOS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzgyYmNhNTYyZTQ3NGRkMjU5NTZkZDAwMTdkOTI2NzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMzMGUxMGQ1Y2I1ZTUzYjNhMDA3ODMyNmM1NzMxODg4YmI1NWUzMmM0YWJmZWIyN2Q5ZTdmOGU1ZDAwMDI1MCIKKworIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKKyMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAorIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2dwbV0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1kdHJhY2UgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCisKK1NVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKK1JERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgorCitTVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgorUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCmluZGV4IDg1YTA0MzkuLjFiNzFhMWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKQEAgLTgsNyArOCw3IEBACiBbU2VydmljZV0KIFR5cGU9b25lc2hvdAogRXhlY1N0YXJ0PSNTQklORElSIy9ydW4tcG9zdGluc3RzCi1FeGVjU3RhcnRQb3N0PSNCQVNFX0JJTkRJUiMvc3lzdGVtY3RsIGRpc2FibGUgcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCitFeGVjU3RhcnRQb3N0PSNCQVNFX0JJTkRJUiMvc3lzdGVtY3RsIC0tbm8tcmVsb2FkIGRpc2FibGUgcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCiBSZW1haW5BZnRlckV4aXQ9Tm8KIFRpbWVvdXRTZWM9MAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzLTQuMy1zeXNtYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzLTQuMy1zeXNtYWNyb3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk1MjFhNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMtNC4zLXN5c21hY3Jvcy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGh0dHBzOi8vZ2l0d2ViLmdlbnRvby5vcmcvcmVwby9nZW50b28uZ2l0L3RyZWUvc3lzLWZzL3NxdWFzaGZzLXRvb2xzL2ZpbGVzL3NxdWFzaGZzLXRvb2xzLTQuMy1zeXNtYWNyb3MucGF0Y2gKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworCitzeXMvdHlwZXMuaCBtaWdodCBub3QgYWx3YXlzIGluY2x1ZGUgc3lzL3N5c21hY3Jvcy5oIGZvciBtYWpvci9taW5vci9tYWtlZGV2CisKKy0tLSBhL3NxdWFzaGZzLXRvb2xzL21rc3F1YXNoZnMuYworKysrIGIvc3F1YXNoZnMtdG9vbHMvbWtzcXVhc2hmcy5jCitAQCAtNTksNiArNTksNyBAQAorICNlbHNlCisgI2luY2x1ZGUgPGVuZGlhbi5oPgorICNpbmNsdWRlIDxzeXMvc3lzaW5mby5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2VuZGlmCisgCisgI2luY2x1ZGUgInNxdWFzaGZzX2ZzLmgiCistLS0gYS9zcXVhc2hmcy10b29scy91bnNxdWFzaGZzLmMKKysrKyBiL3NxdWFzaGZzLXRvb2xzL3Vuc3F1YXNoZnMuYworQEAgLTM4LDYgKzM4LDEwIEBACisgI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorIAorKyNpZmRlZiBsaW51eAorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisrI2VuZGlmCisrCisgc3RydWN0IGNhY2hlICpmcmFnbWVudF9jYWNoZSwgKmRhdGFfY2FjaGU7Cisgc3RydWN0IHF1ZXVlICp0b19yZWFkZXIsICp0b19pbmZsYXRlLCAqdG9fd3JpdGVyLCAqZnJvbV93cml0ZXI7CisgcHRocmVhZF90ICp0aHJlYWQsICppbmZsYXRvcl90aHJlYWQ7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCmluZGV4IDMzZWQwOWEuLjBmOTkxNzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCkBAIC0xMyw4ICsxMywxMCBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Bsb3VnaGVyL3NxdWFzaGZzLXRvb2xzLmdpdDtwcm90b2NvbD1odHRwcyBcCiAgICAgICAgICAgIGh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3NldmVuemlwL2x6bWE0NjUudGFyLmJ6MjtuYW1lPWx6bWEgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ta3NxdWFzaGZzLmMtZ2V0LWlubGluZS1mdW5jdGlvbnMtd29yay13aXRoLUM5OS5wYXRjaDtzdHJpcGxldmVsPTIgXAorICAgICAgICAgICBmaWxlOi8vc3F1YXNoZnMtdG9vbHMtNC4zLXN5c21hY3Jvcy5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBhdC5wYXRjaCBcCiAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIFNSQ19VUklbbHptYS5tZDVzdW1dID0gIjI5ZDVmZmQwM2E1YTNlNTFhZWY2YTc0ZTllYWZiNzU5IgogU1JDX1VSSVtsem1hLnNoYTI1NnN1bV0gPSAiYzkzNWZkMDRkZDhlMGU4YzY4OGEzMDc4ZjM2NzVkNjk5Njc5YTkwYmU4MWMxMjY4NjgzN2UwODgwYWEwZmExZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIwOTZiMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA5ZjNmZDM4OGFlN2M0NjQyMGJjY2JhNDA1NDY4NjkwZWQ0NmQ2NjlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTggU2VwIDIwMTcgMjI6NTE6MzIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHMvc2lnYWN0aW9uOiBDaGVjayBmb3IgbWlwcyBhbmQgYWxwaGEgYmVmb3JlIHVzaW5nCisgc2FfcmVzdG9yZXIKKworbG9jYWwgc3RydWN0dXJlIGRvZXMgbm90IGRlZmluZSByZXN0b3JlciBtZW1iZXIgZm9yIG1pcHMgYW5kIGFscGhhCitpbiBkZWZpbml0aW9uLCB3ZSBuZWVkIHRvIG1hdGNoIHRoYXQgYXNzdW1wdGlvbiBoZXJlIHdoZXJlIHRoZXkgYXJlCitiZWluZyBzZXQKKworRml4ZXMKK3wgLi4vLi4vc3RyYWNlLTQuMTgvdGVzdHMvc2lnYWN0aW9uLmM6MTc3OjM2OiBlcnJvcjogJ3N0cnVjdF9zZXRfc2Ege2FrYSBzdHJ1Y3Qgc2V0X3NhfScgaGFzIG5vIG1lbWJlciBuYW1lZCAncmVzdG9yZXInCit8ICAjIGRlZmluZSBTQV9SRVNUT1JFUl9BUkdTICwgbmV3X2FjdC0+cmVzdG9yZXIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyB0ZXN0cy9zaWdhY3Rpb24uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3NpZ2FjdGlvbi5jIGIvdGVzdHMvc2lnYWN0aW9uLmMKK2luZGV4IDdiNDY5NDQuLmY0NmNkYTcgMTAwNjQ0CistLS0gYS90ZXN0cy9zaWdhY3Rpb24uYworKysrIGIvdGVzdHMvc2lnYWN0aW9uLmMKK0BAIC0xNzAsNyArMTcwLDcgQEAgbWFpbih2b2lkKQorIAlzaWdkZWxzZXQobWFzay5saWJjLCBTSUdIVVApOworIAorIAltZW1jcHkobmV3X2FjdC0+bWFzaywgbWFzay5vbGQsIHNpemVvZihtYXNrLm9sZCkpOworLSNpZmRlZiBTQV9SRVNUT1JFUgorKyNpZiBkZWZpbmVkKFNBX1JFU1RPUkVSKSAmJiAhZGVmaW5lZChNSVBTKSAmJiAhZGVmaW5lZChBTFBIQSkKKyAJbmV3X2FjdC0+ZmxhZ3MgPSBTQV9SRVNUT1JFUjsKKyAJbmV3X2FjdC0+cmVzdG9yZXIgPSAodW5zaWduZWQgbG9uZykgMHhkZWFkZmFjZWNhZmVmMDBkVUxMOworICMgZGVmaW5lIFNBX1JFU1RPUkVSX0ZNVCAiLCBzYV9mbGFncz1TQV9SRVNUT1JFUiwgc2FfcmVzdG9yZXI9JSNseCIKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAppbmRleCA4NzZjMmQ4Li45N2JjYzkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCkBAIC0xLDE5ICsxLDIzIEBACi1zdHJhY2U6IEFkZCBwdGVzdAorRnJvbSAwNTc0YWU5OTI2MzA4ZGNiY2E3OGJkOGNkMGYwZjE0M2YxOWNiY2I1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2FicmllbCBCYXJidSA8Z2FicmllbC5iYXJidUBlbmVhLmNvbT4KK0RhdGU6IFRodSwgMjUgSnVsIDIwMTMgMTU6Mjg6MzMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzhdIHN0cmFjZTogQWRkIHB0ZXN0CiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogCiBTaWduZWQtb2ZmLWJ5OiBHYWJyaWVsIEJhcmJ1IDxnYWJyaWVsLmJhcmJ1QGVuZWEuY29tPgogU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyAgICAgIHwgIDIgKy0KICB0ZXN0cy9NYWtlZmlsZS5hbSB8IDE4ICsrKysrKysrKysrKysrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiMmIwM2M2Li40NjRhOWRjIDEwMDY0NAoraW5kZXggNjFkNjQyNS4uNjM4N2MyNCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzksNyArMzksNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoQykgMTk5OS0yMDE3IFRoZSBzdHJhY2UgZGV2ZWxvcGVycy5dKQorQEAgLTQxLDcgKzQxLDcgQEAgQUNfQ09QWVJJR0hUKFtDb3B5cmlnaHQgKEMpIDE5OTktXWNvcHlyaWdodF95ZWFyWyBUaGUgc3RyYWNlIGRldmVsb3BlcnMuXSkKICBBQ19DT05GSUdfU1JDRElSKFtzdHJhY2UuY10pCiAgQUNfQ09ORklHX0FVWF9ESVIoWy5dKQogIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCkBAIC0yMywxMSArMjcsMTEgQEAKICBBTV9NQUlOVEFJTkVSX01PREUKICBBQ19DQU5PTklDQUxfSE9TVAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDMxMWQzYmIuLjcyZjkwMjIgMTAwNjQ0CitpbmRleCA1YWE3Zjg5Li5hNTVhMzU1IDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtOTYwLDMgKzk2MCwyMSBAQCAkKG9iamVjdHMpOiBzY25vLmgKLSBDTEVBTkZJTEVTID0ga3N5c2VudC5oICQoVEVTVFM6PS50bXApCitAQCAtMzc5LDMgKzM3OSwyMSBAQCBjbGVhbi1sb2NhbC1jaGVjazoKKyBDTEVBTkZJTEVTID0ga3N5c2VudC5oCiAgCiAgaW5jbHVkZSAuLi9zY25vLmFtCiArCkBAIC00Nyw0ICs1MSw3IEBACiArCQlpbnN0YWxsICQoc3JjZGlyKS8kJGZpbGUgJChERVNURElSKS8kKFRFU1RESVIpOyBcCiArCQlzZWQgLWkgLWUgJ3MvJCR7c3JjZGlyPS59Ly4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkZmlsZTsgXAogKwlkb25lCi0rCWZvciBpIGluIG5ldCBuZXQtZmQgc2NtX3JpZ2h0cy1mZCBzaWdhY3Rpb247IGRvIHNlZCAtaSAtZSAncy8kJHNyY2Rpci8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGkudGVzdDsgZG9uZQorKwlmb3IgaSBpbiBuZXQgc2NtX3JpZ2h0cy1mZCBydF9zaWdhY3Rpb247IGRvIHNlZCAtaSAtZSAncy8kJHNyY2Rpci8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGkudGVzdDsgZG9uZQorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoCmluZGV4IDk0ZWU1M2MuLmY2ZmZhOGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdXBkYXRlLWdhd2stcGF0aHMucGF0Y2gKQEAgLTEyLDIwICsxMiwyMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgogLS0tCi0gbXBlcnMuYXdrICAgICAgICAgICAgICAgIHwgMiArLQotIHRlc3RzLW0zMi9jYXBzLmF3ayAgICAgICB8IDIgKy0KLSB0ZXN0cy1tMzIvbWF0Y2guYXdrICAgICAgfCAyICstCi0gdGVzdHMtbTMyL3NpZ2FjdGlvbi5hd2sgIHwgMiArLQotIHRlc3RzLW14MzIvY2Fwcy5hd2sgICAgICB8IDIgKy0KLSB0ZXN0cy1teDMyL21hdGNoLmF3ayAgICAgfCAyICstCi0gdGVzdHMtbXgzMi9zaWdhY3Rpb24uYXdrIHwgMiArLQotIHRlc3RzL2NhcHMuYXdrICAgICAgICAgICB8IDIgKy0KLSB0ZXN0cy9tYXRjaC5hd2sgICAgICAgICAgfCAyICstCi0gdGVzdHMvc2lnYWN0aW9uLmF3ayAgICAgIHwgMiArLQorIG1wZXJzLmF3ayAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy1tMzIvY2Fwcy5hd2sgICAgICAgICAgfCAyICstCisgdGVzdHMtbTMyL21hdGNoLmF3ayAgICAgICAgIHwgMiArLQorIHRlc3RzLW0zMi9ydF9zaWdhY3Rpb24uYXdrICB8IDIgKy0KKyB0ZXN0cy1teDMyL2NhcHMuYXdrICAgICAgICAgfCAyICstCisgdGVzdHMtbXgzMi9tYXRjaC5hd2sgICAgICAgIHwgMiArLQorIHRlc3RzLW14MzIvcnRfc2lnYWN0aW9uLmF3ayB8IDIgKy0KKyB0ZXN0cy9jYXBzLmF3ayAgICAgICAgICAgICAgfCAyICstCisgdGVzdHMvbWF0Y2guYXdrICAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL3J0X3NpZ2FjdGlvbi5hd2sgICAgICB8IDIgKy0KICAxMCBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21wZXJzLmF3ayBiL21wZXJzLmF3awotaW5kZXggOTkyNDhjNS4uZmYxMDUyMCAxMDA2NDQKK2luZGV4IGZlNTQ3NjMuLmI1MjM4YTggMTAwNjQ0CiAtLS0gYS9tcGVycy5hd2sKICsrKyBiL21wZXJzLmF3awogQEAgLTEsNCArMSw0IEBACkBAIC0zNSw3ICszNSw3IEBACiAgIyBDb3B5cmlnaHQgKGMpIDIwMTUgRWx2aXJhIEtoYWJpcm92YSA8bGluZXByaW50ZXIwQGdtYWlsLmNvbT4KICAjIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KIGRpZmYgLS1naXQgYS90ZXN0cy1tMzIvY2Fwcy5hd2sgYi90ZXN0cy1tMzIvY2Fwcy5hd2sKLWluZGV4IDY3MDAzYWMuLmE2NmYxZjAgMTAwNjQ0CitpbmRleCBjNmUzMWVmLi41ZWZjNmNjIDEwMDY0NAogLS0tIGEvdGVzdHMtbTMyL2NhcHMuYXdrCiArKysgYi90ZXN0cy1tMzIvY2Fwcy5hd2sKIEBAIC0xLDQgKzEsNCBAQApAQCAtNTQsMTggKzU0LDE4IEBACiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLWRpZmYgLS1naXQgYS90ZXN0cy1tMzIvc2lnYWN0aW9uLmF3ayBiL3Rlc3RzLW0zMi9zaWdhY3Rpb24uYXdrCi1pbmRleCA1YzZiNmQwLi4zZTE0NDY0IDEwMDY0NAotLS0tIGEvdGVzdHMtbTMyL3NpZ2FjdGlvbi5hd2sKLSsrKyBiL3Rlc3RzLW0zMi9zaWdhY3Rpb24uYXdrCitkaWZmIC0tZ2l0IGEvdGVzdHMtbTMyL3J0X3NpZ2FjdGlvbi5hd2sgYi90ZXN0cy1tMzIvcnRfc2lnYWN0aW9uLmF3aworaW5kZXggOWMzYTllZC4uODQxNDI0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzLW0zMi9ydF9zaWdhY3Rpb24uYXdrCisrKysgYi90ZXN0cy1tMzIvcnRfc2lnYWN0aW9uLmF3awogQEAgLTEsNCArMSw0IEBACiAtIyEvYmluL2dhd2sKICsjIS91c3IvYmluL2dhd2sKICAjCiAgIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+Ci0gIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorICMgQ29weXJpZ2h0IChjKSAyMDE2IEVsdmlyYSBLaGFiaXJvdmEgPGxpbmVwcmludGVyMEBnbWFpbC5jb20+CiBkaWZmIC0tZ2l0IGEvdGVzdHMtbXgzMi9jYXBzLmF3ayBiL3Rlc3RzLW14MzIvY2Fwcy5hd2sKLWluZGV4IDY3MDAzYWMuLmE2NmYxZjAgMTAwNjQ0CitpbmRleCBjNmUzMWVmLi41ZWZjNmNjIDEwMDY0NAogLS0tIGEvdGVzdHMtbXgzMi9jYXBzLmF3awogKysrIGIvdGVzdHMtbXgzMi9jYXBzLmF3awogQEAgLTEsNCArMSw0IEBACkBAIC04NCwxOCArODQsMTggQEAKICAjCiAgIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+CiAgIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotZGlmZiAtLWdpdCBhL3Rlc3RzLW14MzIvc2lnYWN0aW9uLmF3ayBiL3Rlc3RzLW14MzIvc2lnYWN0aW9uLmF3awotaW5kZXggNWM2YjZkMC4uM2UxNDQ2NCAxMDA2NDQKLS0tLSBhL3Rlc3RzLW14MzIvc2lnYWN0aW9uLmF3awotKysrIGIvdGVzdHMtbXgzMi9zaWdhY3Rpb24uYXdrCitkaWZmIC0tZ2l0IGEvdGVzdHMtbXgzMi9ydF9zaWdhY3Rpb24uYXdrIGIvdGVzdHMtbXgzMi9ydF9zaWdhY3Rpb24uYXdrCitpbmRleCA5YzNhOWVkLi44NDE0MjQzIDEwMDY0NAorLS0tIGEvdGVzdHMtbXgzMi9ydF9zaWdhY3Rpb24uYXdrCisrKysgYi90ZXN0cy1teDMyL3J0X3NpZ2FjdGlvbi5hd2sKIEBAIC0xLDQgKzEsNCBAQAogLSMhL2Jpbi9nYXdrCiArIyEvdXNyL2Jpbi9nYXdrCiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAjIENvcHlyaWdodCAoYykgMjAxNiBFbHZpcmEgS2hhYmlyb3ZhIDxsaW5lcHJpbnRlcjBAZ21haWwuY29tPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2NhcHMuYXdrIGIvdGVzdHMvY2Fwcy5hd2sKLWluZGV4IDY3MDAzYWMuLmE2NmYxZjAgMTAwNjQ0CitpbmRleCBjNmUzMWVmLi41ZWZjNmNjIDEwMDY0NAogLS0tIGEvdGVzdHMvY2Fwcy5hd2sKICsrKyBiL3Rlc3RzL2NhcHMuYXdrCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTExNCwxMyArMTE0LDEzIEBACiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLWRpZmYgLS1naXQgYS90ZXN0cy9zaWdhY3Rpb24uYXdrIGIvdGVzdHMvc2lnYWN0aW9uLmF3awotaW5kZXggNWM2YjZkMC4uM2UxNDQ2NCAxMDA2NDQKLS0tLSBhL3Rlc3RzL3NpZ2FjdGlvbi5hd2sKLSsrKyBiL3Rlc3RzL3NpZ2FjdGlvbi5hd2sKK2RpZmYgLS1naXQgYS90ZXN0cy9ydF9zaWdhY3Rpb24uYXdrIGIvdGVzdHMvcnRfc2lnYWN0aW9uLmF3aworaW5kZXggOWMzYTllZC4uODQxNDI0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL3J0X3NpZ2FjdGlvbi5hd2sKKysrKyBiL3Rlc3RzL3J0X3NpZ2FjdGlvbi5hd2sKIEBAIC0xLDQgKzEsNCBAQAogLSMhL2Jpbi9nYXdrCiArIyEvdXNyL2Jpbi9nYXdrCiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAjIENvcHlyaWdodCAoYykgMjAxNiBFbHZpcmEgS2hhYmlyb3ZhIDxsaW5lcHJpbnRlcjBAZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZjZDJhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ4OGFjYjNhYWFmNWQxNGEyZTFhODUyZDEzNjY4YTcwIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zdHJhY2Uvc3RyYWNlLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXBkYXRlLWdhd2stcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtcHRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdoZW4tdXNpbmctbm9uLWdsaWJjLWxpYmMtaW1wbGVtZW50YXRpb24tby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzLVNJR0VNVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyODczMzY2Y2FjOTg3NzBlZmNiZWQ2ZTc0OGQ1ZWYyMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODQ4N2NiNTE3OGVjMTI1OTk4NmNjOWY2ZTJhODQ0ZjUwZTVkMTIwOGMxMTJjYzIyNDMxYTFlNGQ5YWRmMGVmIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAotCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KLQlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nICR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIyODkxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYxMzJiNGQyYWRmY2NjNjNkYTQxMzlhNjA5MzY3NzExIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zdHJhY2Uvc3RyYWNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXBkYXRlLWdhd2stcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdoZW4tdXNpbmctbm9uLWdsaWJjLWxpYmMtaW1wbGVtZW50YXRpb24tby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzLVNJR0VNVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzU3OWIzMjY2YmIwOTZjZWJhZWZiZTJjZGIxYTNhNzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODlhZDg4N2MxZTYyMjZiZGJjYThkYTMxZDU4OWNhZGVhNGJlMDc0NGIxNDJlYjQ3Yjc2ODA4NmM5MzdmY2EwOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmx1ZXRvb3RoCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLCR7QkxVRVp9IgorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCisKK1RFU1RESVIgPSAidGVzdHMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2UgZG9uJ3Qgc2hpcCBzdHJhY2UtZ3JhcGggaGVyZSBiZWNhdXNlIGl0IG5lZWRzIHBlcmwKKwlybSAke0R9JHtiaW5kaXJ9L3N0cmFjZS1ncmFwaAorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9CisJc2VkIC1pIC1lICcvXnNyYy9zL3N0cmFjZS4qWzEtOV0vcHRlc3QvJyBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXkRFQl9DSEFOR0VMT0dUSU1FL2QnIFwKKwkgICAgLWUgJy9eUlBNX0NIQU5HRUxPR1RJTUUvZCcgXAorCSR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uL0NWRS0yMDE3LTk4MDAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9DVkUtMjAxNy05ODAwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1OTljMmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9DVkUtMjAxNy05ODAwLnBhdGNoCkBAIC0wLDAgKzEsMTM2IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3IxODA0NjkxIHwgZGFuaWVsc2ggfCAyMDE3LTA4LTEwIDExOjE0OjEzIC0wNzAwIChUaHUsIDEwIEF1ZyAyMDE3KSB8IDE4IGxpbmVzCisKK0ZpeCBDVkUtMjAxNy05ODAwLgorCitTZWU6IGh0dHBzOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnL3NlY3VyaXR5L0NWRS0yMDE3LTA4MDAtYWR2aXNvcnkudHh0CisKKyogc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2NsaWVudC5jCisgIChzdm5fY3R5cGUuaCk6IEluY2x1ZGUuCisgIChmaW5kX3R1bm5lbF9hZ2VudCk6IFBhc3MgYSAiLS0iIGVuZC1vZi1vcHRpb25zIGd1YXJkIHRvIHNzaC4KKyAgICBFeHBlY3QgdGhlICdob3N0aW5mbycgcGFyYW1ldGVyIHRvIGJlIFVSSS1kZWNvZGVkLgorICAoaXNfdmFsaWRfaG9zdGluZm8pOiBOZXcuCisgIChyYV9zdm5fb3Blbik6IFZhbGlkYXRlIHRoZSBob3N0bmFtZSBiZWZvcmUgdXNpbmcgaXQuCisKKyogc3VidmVyc2lvbi9saWJzdm5fc3Vici9jb25maWdfZmlsZS5jCisgIChzdm5fY29uZmlnX2Vuc3VyZSk6IFVwZGF0ZSB0aGUgZXhhbXBsZSBjb25maWd1cmF0aW9uIGxpa2V3aXNlLgorCitQYXRjaCBieTogcGhpbGlwCitSZXZpZXcgYnk6IGRhbmllbHNoCisgICAgICAgICAgIHN0c3AKKyAgICAgICAgICAgYXN0aWVnZXIgKGVhcmxpZXIgdmVyc2lvbikKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAoraHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yz92aWV3PXJldmlzaW9uJmFtcDtzb3J0Ynk9cmV2JmFtcDtyZXZpc2lvbj0xODA0NjkxCisKK0NWRTogQ1ZFLTIwMTctOTgwMAorCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwkocmV2aXNpb24gMTgwNDY5MCkKKysrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9zdWJyL2NvbmZpZ19maWxlLmMJKHJldmlzaW9uIDE4MDQ2OTEpCitAQCAtMTQ0OCwxMiArMTQ0OCwxMiBAQAorICAgICAgICAgIiMjIyBwYXNzZWQgdG8gdGhlIHR1bm5lbCBhZ2VudCBhcyA8dXNlcj5APGhvc3RuYW1lPi4pICBJZiB0aGUiICAgICAgTkwKKyAgICAgICAgICIjIyMgYnVpbHQtaW4gc3NoIHNjaGVtZSB3ZXJlIG5vdCBwcmVkZWZpbmVkLCBpdCBjb3VsZCBiZSBkZWZpbmVkIiAgIE5MCisgICAgICAgICAiIyMjIGFzOiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorLSAgICAgICAgIiMgc3NoID0gJFNWTl9TU0ggc3NoIC1xIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKKysgICAgICAgICIjIHNzaCA9ICRTVk5fU1NIIHNzaCAtcSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCisgICAgICAgICAiIyMjIElmIHlvdSB3YW50ZWQgdG8gZGVmaW5lIGEgbmV3ICdyc2gnIHNjaGVtZSwgdG8gYmUgdXNlZCB3aXRoIiAgICBOTAorICAgICAgICAgIiMjIyAnc3ZuK3JzaDonIFVSTHMsIHlvdSBjb3VsZCBkbyBzbyBhcyBmb2xsb3dzOiIgICAgICAgICAgICAgICAgICAgTkwKKy0gICAgICAgICIjIHJzaCA9IHJzaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCisrICAgICAgICAiIyByc2ggPSByc2ggLS0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorICAgICAgICAgIiMjIyBPciwgaWYgeW91IHdhbnRlZCB0byBzcGVjaWZ5IGEgZnVsbCBwYXRoIGFuZCBhcmd1bWVudHM6IiAgICAgICAgTkwKKy0gICAgICAgICIjIHJzaCA9IC9wYXRoL3RvL3JzaCAtbCBteXVzZXJuYW1lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCisrICAgICAgICAiIyByc2ggPSAvcGF0aC90by9yc2ggLWwgbXl1c2VybmFtZSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorICAgICAgICAgIiMjIyBPbiBXaW5kb3dzLCBpZiB5b3UgYXJlIHNwZWNpZnlpbmcgYSBmdWxsIHBhdGggdG8gYSBjb21tYW5kLCIgICAgTkwKKyAgICAgICAgICIjIyMgdXNlIGEgZm9yd2FyZCBzbGFzaCAoLykgb3IgYSBwYWlyZWQgYmFja3NsYXNoIChcXFxcKSBhcyB0aGUiICAgIE5MCisgICAgICAgICAiIyMjIHBhdGggc2VwYXJhdG9yLiAgQSBzaW5nbGUgYmFja3NsYXNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhbiIgICAgICBOTAorSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwkocmV2aXNpb24gMTgwNDY5MCkKKysrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vY2xpZW50LmMJKHJldmlzaW9uIDE4MDQ2OTEpCitAQCAtNDYsNiArNDYsNyBAQAorICNpbmNsdWRlICJzdm5fcHJvcHMuaCIKKyAjaW5jbHVkZSAic3ZuX21lcmdlaW5mby5oIgorICNpbmNsdWRlICJzdm5fdmVyc2lvbi5oIgorKyNpbmNsdWRlICJzdm5fY3R5cGUuaCIKKyAKKyAjaW5jbHVkZSAic3ZuX3ByaXZhdGVfY29uZmlnLmgiCisgCitAQCAtMzk4LDcgKzM5OSw3IEBACisgICAgICAgICogdmVyc2lvbnMgaGF2ZSBpdCB0b28uIElmIHRoZSB1c2VyIGlzIHVzaW5nIHNvbWUgb3RoZXIgc3NoCisgICAgICAgICogaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGFjY2VwdCBpdCwgdGhleSBjYW4gb3ZlcnJpZGUgaXQKKyAgICAgICAgKiBpbiB0aGUgW3R1bm5lbHNdIHNlY3Rpb24gb2YgdGhlIGNvbmZpZy4gKi8KKy0gICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIjsKKysgICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIC0tIjsKKyAgICAgfQorIAorICAgaWYgKCF2YWwgfHwgISp2YWwpCitAQCAtNDQzLDcgKzQ0NCw3IEBACisgICBmb3IgKG4gPSAwOyBjbWRfYXJndltuXSAhPSBOVUxMOyBuKyspCisgICAgIGFyZ3Zbbl0gPSBjbWRfYXJndltuXTsKKyAKKy0gIGFyZ3ZbbisrXSA9IHN2bl9wYXRoX3VyaV9kZWNvZGUoaG9zdGluZm8sIHBvb2wpOworKyAgYXJndltuKytdID0gaG9zdGluZm87CisgICBhcmd2W24rK10gPSAic3Zuc2VydmUiOworICAgYXJndltuKytdID0gIi10IjsKKyAgIGFyZ3Zbbl0gPSBOVUxMOworQEAgLTgxMSw3ICs4MTIsMzMgQEAKKyB9CisgCisgCisrLyogQSBzaW1wbGUgd2hpdGVsaXN0IHRvIGVuc3VyZSB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDoKKysgKiAgIHVzZXJAc2VydmVyCisrICogICBbOjoxXToyMgorKyAqICAgc2VydmVyLW5hbWUKKysgKiAgIHNlcnZlcl9uYW1lCisrICogICAxMjcuMC4wLjEKKysgKiB3aXRoIGFuIGV4dHJhIHJlc3RyaWN0aW9uIHRoYXQgYSBsZWFkaW5nICctJyBpcyBpbnZhbGlkLgorKyAqLworK3N0YXRpYyBzdm5fYm9vbGVhbl90CisraXNfdmFsaWRfaG9zdGluZm8oY29uc3QgY2hhciAqaG9zdGluZm8pCisreworKyAgY29uc3QgY2hhciAqcCA9IGhvc3RpbmZvOworIAorKyAgaWYgKHBbMF0gPT0gJy0nKQorKyAgICByZXR1cm4gRkFMU0U7CisrCisrICB3aGlsZSAoKnApCisrICAgIHsKKysgICAgICBpZiAoIXN2bl9jdHlwZV9pc2FsbnVtKCpwKSAmJiAhc3RyY2hyKCI6Li1fW11AIiwgKnApKQorKyAgICAgICAgcmV0dXJuIEZBTFNFOworKworKyAgICAgICsrcDsKKysgICAgfQorKworKyAgcmV0dXJuIFRSVUU7CisrfQorKworIHN0YXRpYyBzdm5fZXJyb3JfdCAqcmFfc3ZuX29wZW4oc3ZuX3JhX3Nlc3Npb25fdCAqc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipjb3JyZWN0ZWRfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsLAorQEAgLTg0NCw4ICs4NzEsMTggQEAKKyAgICAgICAgICAgfHwgKGNhbGxiYWNrcy0+Y2hlY2tfdHVubmVsX2Z1bmMgJiYgY2FsbGJhY2tzLT5vcGVuX3R1bm5lbF9mdW5jCisgICAgICAgICAgICAgICAmJiAhY2FsbGJhY2tzLT5jaGVja190dW5uZWxfZnVuYyhjYWxsYmFja3MtPnR1bm5lbF9iYXRvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1bm5lbCkpKSkKKy0gICAgU1ZOX0VSUihmaW5kX3R1bm5lbF9hZ2VudCh0dW5uZWwsIHVyaS5ob3N0aW5mbywgJnR1bm5lbF9hcmd2LCBjb25maWcsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3Bvb2wpKTsKKysgICAgeworKyAgICAgIGNvbnN0IGNoYXIgKmRlY29kZWRfaG9zdGluZm87CisrCisrICAgICAgZGVjb2RlZF9ob3N0aW5mbyA9IHN2bl9wYXRoX3VyaV9kZWNvZGUodXJpLmhvc3RpbmZvLCByZXN1bHRfcG9vbCk7CisrCisrICAgICAgaWYgKCFpc192YWxpZF9ob3N0aW5mbyhkZWNvZGVkX2hvc3RpbmZvKSkKKysgICAgICAgIHJldHVybiBzdm5fZXJyb3JfY3JlYXRlZihTVk5fRVJSX0JBRF9VUkwsIE5VTEwsIF8oIkludmFsaWQgaG9zdCAnJXMnIiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLmhvc3RpbmZvKTsKKysKKysgICAgICBTVk5fRVJSKGZpbmRfdHVubmVsX2FnZW50KHR1bm5lbCwgZGVjb2RlZF9ob3N0aW5mbywgJnR1bm5lbF9hcmd2LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLCByZXN1bHRfcG9vbCkpOworKyAgICB9CisgICBlbHNlCisgICAgIHR1bm5lbF9hcmd2ID0gTlVMTDsKKyAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWZiYTY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZi5tNC1SZWdleC1tb2RpZmllZC10by1hbGxvdy1ELWluLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWZjYmFlMzUyYTVlZmU3M2Q0NmE4OGM5N2M2YmJhMTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGE0ZmM2OGFmZjFkMThkY2I0ZGQ5ZTQ2MDY0OGQyNGQ5ZTk4NjU3ZmJlZDQ5NmM1ODI5MjljNmIzY2U1NTVlNSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWY4MWFlNDliYTM1OWU3MDYyNmMwNWU5YmYzMTM3MDkiCi0KLVBBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIC0td2l0aG91dC1hcHhzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3dpZyAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWV4cG9ydCBMREZMQUdTICs9ICIgLUwke1NUQUdJTkdfTElCRElSfSAiCi1DUFBGTEFHUyArPSAiLVAiCi1CVUlMRF9DUFBGTEFHUyArPSAiLVAiCi0KLWFjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L2xpYnRvb2wKLQlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKLQlybSAtZiAke1N9L2FjbG9jYWwubTQKLQlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKLX0KLQotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0Ci0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCi0jfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKLVBBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS45LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMyZWRlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiU3VidmVyc2lvbiAoc3ZuKSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGNsaWVudCIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorREVQRU5EUyA9ICJhcHItdXRpbCBzZXJmIHNxbGl0ZTMgZmlsZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSA9ICJzZXJmIgorTElDRU5TRSA9ICJBcGFjaGUtMiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJmLm00LVJlZ2V4LW1vZGlmaWVkLXRvLWFsbG93LUQtaW4tcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbGlidG9vbC1uYW1lLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJmbWFjcm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTgwMC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMjdlMDAzMzhkNGE5ZjdmOWFlYzlkNGEzZjhiNDE4YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYmNiYzUxZmI2MzQwODJmMDA5MTIxZjJjYjY0MzUwY2UzMjE0NjYxMjc4N2ZmYjBmN2NlZDM1MWFhY2FhZTE5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hZjgxYWU0OWJhMzU5ZTcwNjI2YzA1ZTliZjMxMzcwOSIKKworUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtc2FzbCwtLXdpdGhvdXQtc2FzbCxjeXJ1cy1zYXNsIgorUEFDS0FHRUNPTkZJR1tnbm9tZS1rZXlyaW5nXSA9ICItLXdpdGgtZ25vbWUta2V5cmluZywtLXdpdGhvdXQtZ25vbWUta2V5cmluZyxnbGliLTIuMCBnbm9tZS1rZXlyaW5nIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtYmVya2VsZXktZGIgLS13aXRob3V0LWFweHMgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zd2lnIC0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWtleWNoYWluIFwKKyAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1JVQlk9bm9uZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZXhwb3J0IExERkxBR1MgKz0gIiAtTCR7U1RBR0lOR19MSUJESVJ9ICIKK0NQUEZMQUdTICs9ICItUCIKK0JVSUxEX0NQUEZMQUdTICs9ICItUCIKKworYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vbGlidG9vbAorCXJtIC1mICR7U30vYnVpbGQvbGlidG9vbC5tNCAke1N9L2J1aWxkL2x0bWFpbi5zaCAke1N9L2J1aWxkL2x0b3B0aW9ucy5tNCAke1N9L2J1aWxkL2x0c3VnYXIubTQgJHtTfS9idWlsZC9sdHZlcnNpb24ubTQgJHtTfS9idWlsZC9sdH5vYnNvbGV0ZS5tNAorCXJtIC1mICR7U30vYWNsb2NhbC5tNAorCXNlZCAtaSAtZSAnczp3aXRoX3Nhc2w9Ii91c3IvbG9jYWwiOndpdGhfc2FzbD0iJHtTVEFHSU5HX0RJUn0iOicgJHtTfS9idWlsZC9hYy1tYWNyb3Mvc2FzbC5tNAorfQorCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX2xvY2FsL2xpYnN2bl9yYV9sb2NhbC0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sc3ZuX2RlbHRhLTF8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9saWJzdm5fcmFfc3ZuLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zZXJmL2xpYnN2bl9yYV9zZXJmLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiByZWxpbmsgYGxpYnN2bl9yYV9zZXJmLTEubGEnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgLi4vLi4vc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvc3VidmVyc2lvbi0xLjguOS9idWlsZC1vdXRwdXRzLm1rOjEwOTA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXNlcmYtbGliJyBmYWlsZWQKKyN8IG1ha2U6ICoqKiBbaW5zdGFsbC1zZXJmLWxpYl0gRXJyb3IgMQorUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eF82LjAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eF82LjAzLmJiCmluZGV4IDY5YmNlMWYuLmY4YjEwOTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXhfNi4wMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c2xpbnV4L3N5c2xpbnV4XzYuMDMuYmIKQEAgLTEsNSArMSw1IEBACiBTVU1NQVJZID0gIk11bHRpLXB1cnBvc2UgbGludXggYm9vdGxvYWRlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9zeXNsaW51eC56eXRvci5jb20vIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNsaW51eC5vcmcvIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTM1O2VuZGxpbmU9NDE7bWQ1PTU1OGYyYzcxY2IxZmI5YmE1MTFjY2Q0ODU4ZTQ4ZThhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvZmlsZXMvMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFhMDQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvZmlsZXMvMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBkMzc5MTI2ZDU2ZDBiNmU5MzViMmQ5N2NhNzE1NzllNmNjNTRkMWJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMTM6Mzc6MjcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gcGFyc2UtdXRpbDogRG9uJ3QgdXNlIHhsb2NhbGUuaAorCitnbGliYyAyLjI2IG5vIGxvbmdlciBjb250YWlucyB0aGUgbm9uLXN0YW5kYXJkIHhsb2NhbGUuaAorKGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nbGliYy93aWtpL1JlbGVhc2UvMi4yNiNSZW1vdmFsX29mXy4yN3hsb2NhbGUuaC4yNykKKworVGhpcyBjaGFuZ2Ugc2hvdWxkbid0IGJyZWFrIGFueXRoaW5nIGFzIHhsb2NhbGUuaCB3YXMgYSBzdWJzZXQgb2YKK2xvY2FsZS5oLgorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQtYm9vdGNoYXJ0L3B1bGwvMzVdCistLS0KKyBzcmMvcGFyc2UtdXRpbC5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wYXJzZS11dGlsLmMgYi9zcmMvcGFyc2UtdXRpbC5jCitpbmRleCA1NjM1YTY4Li4xYjIxNjljIDEwMDY0NAorLS0tIGEvc3JjL3BhcnNlLXV0aWwuYworKysrIGIvc3JjL3BhcnNlLXV0aWwuYworQEAgLTIxLDcgKzIxLDYgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8eGxvY2FsZS5oPgorIAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMxLmJiCmluZGV4IDFkODgwMzYuLjRkYTAwMGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMxLmJiCkBAIC0yLDcgKzIsOSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2ggXAorIgogCiAjIE1vZGlmeSB0aGVzZSBhcyBkZXNpcmVkCiBQViA9ICIyMzErZ2l0JHtTUkNQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgppbmRleCBlNWU0MWYxLi45ZGIyNmRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgZmlsZTovL3RjZi1hZ2VudC5pbml0IFwKICAgICAgICAgICAgZmlsZTovL3RjZi1hZ2VudC5zZXJ2aWNlIFwKICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogREVQRU5EUyA9ICJ1dGlsLWxpbnV4IG9wZW5zc2wiCiBSREVQRU5EU18ke1BOfSA9ICJiYXNoIgpAQCAtMzAsMTYgKzMxLDIyIEBACiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSAzIDUgLiBzdG9wIDIwIDAgMSAyIDYgLiIKIAogIyBtYW5nbGluZyBuZWVkZWQgZm9yIG1ha2UKLU1BS0VfQVJDSCA9ICJgZWNobyAke1RBUkdFVF9BUkNIfSB8IHNlZCBzLGkuODYsaTY4NixgIgorTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQsYTY0LGAiCiBNQUtFX09TID0gImBlY2hvICR7VEFSR0VUX09TfSB8IHNlZCBzLF5saW51eC4qLEdOVS9MaW51eCxgIgogCiBFWFRSQV9PRU1BS0UgPSAiTUFDSElORT0ke01BS0VfQVJDSH0gT1BTWVM9JHtNQUtFX09TfSAnQ0M9JHtDQ30nICdBUj0ke0FSfSciCiAKLSMgVGhleSBkb24ndCBidWlsZCBvbiBBUk0gYW5kIHdlIGRvbid0IG5lZWQgdGhlbSBhY3R1YWxseS4KLUNGTEFHUyArPSAiLURTRVJWSUNFX1J1bkNvbnRyb2w9MCAtRFNFUlZJQ0VfQnJlYWtwb2ludHM9MCBcCitMQ0xfU1RPUF9TRVJWSUNFUyA9ICItRFNFUlZJQ0VfUnVuQ29udHJvbD0wIC1EU0VSVklDRV9CcmVha3BvaW50cz0wIFwKICAgICAtRFNFUlZJQ0VfTWVtb3J5PTAgLURTRVJWSUNFX1JlZ2lzdGVycz0wIC1EU0VSVklDRV9NZW1vcnlNYXA9MCBcCi0gICAgLURTRVJWSUNFX1N0YWNrVHJhY2U9MCAtRFNFUlZJQ0VfU3ltYm9scz0wIC1EU0VSVklDRV9MaW5lTnVtYmVycz0wIFwKLSAgICAtRFNFUlZJQ0VfRXhwcmVzc2lvbnM9MCIKKyAgICAtRFNFUlZJQ0VfU3RhY2tUcmFjZT0wIC1EU0VSVklDRV9FeHByZXNzaW9ucz0wIgorCisKKyMgVGhlc2UgZmVhdHVyZXMgZG9uJ3QgY29tcGlsZSBmb3Igc2V2ZXJhbCBjYXNlcy4KKyMKK0NGTEFHU19hcHBlbmRfbWlwcyA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCitDRkxBR1NfYXBwZW5kX21pcHM2NCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCitDRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiAKIGRvX2luc3RhbGwoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIElOU1RBTExST09UPSR7RH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwY2QxOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgQ29tbWFuZCBMYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly90Y2wuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJkZXZlbC90Y2x0ayIKLQotIyBodHRwOi8vd3d3LnRjbC50ay9zb2Z0d2FyZS90Y2x0ay9saWNlbnNlLmh0bWwKLUxJQ0VOU0UgPSAidGNsICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9jb21wYXQvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9saWJyYXJ5L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vbWFjb3N4L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vdGVzdHMvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi93aW4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotIgotCi1ERVBFTkRTID0gInRjbC1uYXRpdmUgemxpYiIKLQotQkFTRV9TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS90Y2wvJHtCUE59JHtQVn0tc3JjLnRhci5neiBcCi0gICAgICAgICAgICAgICAgZmlsZTovL3RjbC1hZGQtc29uYW1lLnBhdGNoIgotU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vZml4X25vbl9uYXRpdmVfYnVpbGRfaXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X2lzc3VlX3dpdGhfb2xkX2Rpc3Ryb19nbGliYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ub19wYWNrYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWx0ZXItaW5jbHVkZWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjUxOTNhZWE4MTA3ODM5YTc5ZGY4YWM3MDk1NTJlY2I3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyNjU0MDk3ODFlNGIzZWRjYzRlZjgyMjUzMzA3MWIzNGMzZGM2NzkwYjg5Mzk2MzgwOWI5ZmUyMjFiZWZlMDciCi0KLVNSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7QkFTRV9TUkNfVVJJfSIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCi0KLVZFUiA9ICIke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmluY29uZmlnCi0KLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgotCi1kb19jb25maWd1cmUoKSB7Ci0JY2QgJHtTfQotCWdudS1jb25maWdpemUKLQljZCAke0J9Ci0Jb2VfcnVuY29uZgotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwgaW5zdGFsbC1wcml2YXRlLWhlYWRlcnMKLQlsbiAtc2YgLi90Y2xzaCR7VkVSfSAke0R9JHtiaW5kaXJ9L3RjbHNoCi0JbG4gLXNmIHRjbHNoOC42ICR7RH0ke2JpbmRpcn0vdGNsc2gke1ZFUn0KLQlzZWQgLWkgInM7LUwke0J9Oy1MJHtTVEFHSU5HX0xJQkRJUn07ZyIgdGNsQ29uZmlnLnNoCi0Jc2VkIC1pICJzOycke1dPUktESVJ9Oycke1NUQUdJTkdfSU5DRElSfTtnIiB0Y2xDb25maWcuc2gKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0JaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7bGliZGlyfQotCWNkIC4uCi0JZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLwotCWRvbmUKLX0KLQotU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgotCi1QQUNLQUdFUyA9KyAidGNsLWxpYiIKLUZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCi0KLSMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKLVJERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWM3M2JlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjcuYmIKQEAgLTAsMCArMSwxMDEgQEAKK1NVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImRldmVsL3RjbHRrIgorCisjIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAorTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisiCisKK0RFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgorCitCQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCitTUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNTY3M2FhZjQ1YjVkZTVkOGRkODBiYjNkYWFlYjg4MzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2M2YjhmODRlMzczMzI0MjNjZmU1YmFlNTAzNDQwZDg4NDUwZGE4Y2MxMjQzNDk2MjQ5ZmFhNTI2ODAyNmJhNSIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKKworVkVSID0gIiR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYworfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycworCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKKwlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQorCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKKwlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisJaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9CisJZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbworCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCisJCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLworCWRvbmUKK30KKworU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgorCitQQUNLQUdFUyA9KyAidGNsLWxpYiIKK0ZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCisKKyMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKK1JERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIHRjbHRlc3QKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Cit9CisKKyMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCitCSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgorCisjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgorCisjIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQorIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgordGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAorCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCisJICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAorCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAorCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmZzMy91bmZzM18wLjkuMjIucjQ5Ny5iYgppbmRleCA1MmFhMTdlLi5jZWJjODY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczNfMC45LjIyLnI0OTcuYmIKQEAgLTE3LDcgKzE3LDggQEAKICMgT25seSBzdWJ2ZXJzaW9uIHVybCBsZWZ0IGluIE9FLUNvcmUsIHVzZSBhIG1pcnJvciB0YXJiYWxsIGluc3RlYWQgc2luY2UKICMgdGhpcyByYXJlbHkgY2hhbmdlcy4KICMgc3ZuOi8vc3ZuLmNvZGUuc2YubmV0L3AvdW5mczMvY29kZTttb2R1bGU9dHJ1bms7cmV2PSR7TU9EX1BWfTtwcm90b2NvbD1odHRwCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy90cnVua19zdm4uY29kZS5zZi5uZXRfLnAudW5mczMuY29kZV80OTdfLnRhci5neiBcCisjIHJlbmFtZSB0aGUgdGFyYmFsbCBpbiBtaXJyb3IgdG8gYXZvaWQgY2xhc2ggd2l0aCB1c2VyIGxvY2FsIHN2biB0YXJiYWxsCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy91bmZzMy0wLjkuMjIucjQ5Ny50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vdW5mczNfcGFyYWxsZWxfYnVpbGQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYWx0ZXJuYXRlX3JwY19wb3J0cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXhfcGlkX3JhY2VfcGFyZW50X3dyaXRlc19jaGlsZF9waWQucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCmluZGV4IGIzMzhlYTAuLjEyNjFjMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKQEAgLTIsNyArMiwxMiBAQAogREVTQ1JJUFRJT04gPSAiVmFsYSBpcyBhIEMjLWxpa2UgbGFuZ3VhZ2UgZGVkaWNhdGVkIHRvIGVhc2UgR09iamVjdCBwcm9ncmFtbWluZy4gXAogVmFsYSBjb21waWxlcyB0byBwbGFpbiBDIGFuZCBoYXMgbm8gcnVudGltZSBlbnZpcm9ubWVudCBub3IgcGVuYWxpdGllcyB3aGF0c29ldmVyLiIKIFNFQ1RJT04gPSAiZGV2ZWwiCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSBnbGliLTIuMCIKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIGdsaWItMi4wIgorCisjIEFwcGVuZGluZyBsaWJ4c2x0LW5hdGl2ZSB0byBkZXBlbmRlbmNpZXMgaGFzIGFuIGVmZmVjdAorIyBvZiByZWJ1aWxkaW5nIHRoZSBtYW51YWwsIHdoaWNoIGlzIHZlcnkgc2xvdy4gTGV0J3MgZG8gdGhpcworIyBvbmx5IHdoZW4gYXBpLWRvY3VtZW50YXRpb24gZGlzdHJvIGZlYXR1cmUgaXMgZW5hYmxlZC4KK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhcGktZG9jdW1lbnRhdGlvbicsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKICMgdmFsYS1uYXRpdmUgY29udGFpbnMgYSBuYXRpdmUgdmVyc2lvbiBvZiB2YXBpZ2VuLCB3aGljaCB3ZSB1c2UgaW5zdGVhZCBvZiB0aGUgdGFyZ2V0IG9uZQogREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB2YWxhLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFiNDlhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM0LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtZ2l0LXZlcnNpb24tZ2VuLWRvbi10LWFwcGVuZC1kaXJ0eS1pZi13ZS1yZS1ub3QtaW4tZy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFwaWdlbi5tNC11c2UtUEtHX0NPTkZJR19TWVNST09UX0RJUi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhODU2OTg5ZDc0OWZjNWU0NzJhMzU5MmI5NmY5Y2E0OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YjE3YmQzMzk0MTQ1NjNlYmM1MWY2NGIwYjgzNzkxOWVhNzU1MmQ4YThmZmE3MWNkYzgzN2QyNWM5Njk2YjgzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMDAwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM2LjQuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2MxOTAxNDA5M2YxYTNkOTk1MzU3MjUzYjQ2MzA4MmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTlmMjNjZTcxMWMxYTcyY2U2NjRkMTA5NDZmYmM1OTUzZjAxYjBiN2YyYTM1NjJlN2EwMWUzNjJkODZkZTA1OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1maXgtYnVpbGQtZm9yLW11c2wtdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1maXgtYnVpbGQtZm9yLW11c2wtdGFyZ2V0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM2ZmVmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtZml4LWJ1aWxkLWZvci1tdXNsLXRhcmdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIDFiMWEwMjRlZmQxOGQ0NDI5NGUxODRlNzkyYzFlMDM5Y2FiMDJiZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAwOToxNDoxMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBmaXggYnVpbGQgZm9yIG11c2wgdGFyZ2V0cwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICB8IDIgLS0KLSBjb3JlZ3JpbmQvdmdfcHJlbG9hZGVkLmMgfCAyICstCi0gaW5jbHVkZS9wdWJfdG9vbF9yZWRpci5oIHwgNyArKysrKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDkzNjZkYzcuLjY3OWY1MTQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwNjYsOCArMTA2Niw2IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCi0gCTs7Ci0gICAgICAyLjB8Mi4xfCopCi0gCUFDX01TR19SRVNVTFQoW3Vuc3VwcG9ydGVkIHZlcnNpb24gJHtHTElCQ19WRVJTSU9OfV0pCi0tCUFDX01TR19FUlJPUihbVmFsZ3JpbmQgcmVxdWlyZXMgZ2xpYmMgdmVyc2lvbiAyLjIgb3IgbGF0ZXIsXSkKLS0JQUNfTVNHX0VSUk9SKFtEYXJ3aW4gbGliYywgQmlvbmljIGxpYmMgb3IgU29sYXJpcyBsaWJjXSkKLSAJOzsKLSBlc2FjCi0gCi1kaWZmIC0tZ2l0IGEvY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5jIGIvY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5jCi1pbmRleCAyZWE3YTdhLi5lNDljODMyIDEwMDY0NAotLS0tIGEvY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5jCi0rKysgYi9jb3JlZ3JpbmQvdmdfcHJlbG9hZGVkLmMKLUBAIC01Niw3ICs1Niw3IEBACi0gdm9pZCBWR19OT1RJRllfT05fTE9BRChmcmVlcmVzKSggdm9pZCApOwotIHZvaWQgVkdfTk9USUZZX09OX0xPQUQoZnJlZXJlcykoIHZvaWQgKQotIHsKLS0jICBpZiAhZGVmaW5lZChfX1VDTElCQ19fKSBcCi0rIyAgaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pIFwKLSAgICAgICAmJiAhZGVmaW5lZChWR1BWX2FybV9saW51eF9hbmRyb2lkKSBcCi0gICAgICAgJiYgIWRlZmluZWQoVkdQVl94ODZfbGludXhfYW5kcm9pZCkgXAotICAgICAgICYmICFkZWZpbmVkKFZHUFZfbWlwczMyX2xpbnV4X2FuZHJvaWQpIFwKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3B1Yl90b29sX3JlZGlyLmggYi9pbmNsdWRlL3B1Yl90b29sX3JlZGlyLmgKLWluZGV4IGJhYzAwZDcuLmZiYjJlZjIgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3B1Yl90b29sX3JlZGlyLmgKLSsrKyBiL2luY2x1ZGUvcHViX3Rvb2xfcmVkaXIuaAotQEAgLTI0Miw4ICsyNDIsNyBAQAotIC8qIC0tLSBTb25hbWUgb2YgdGhlIHN0YW5kYXJkIEMgbGlicmFyeS4gLS0tICovCi0gCi0gI2lmIGRlZmluZWQoVkdPX2xpbnV4KSB8fCBkZWZpbmVkKFZHT19zb2xhcmlzKQotLSMgIGRlZmluZSAgVkdfWl9MSUJDX1NPTkFNRSAgbGliY1pkc29aYSAgICAgICAgICAgICAgLy8gbGliYy5zbyoKLS0KLSsjICBkZWZpbmUgIFZHX1pfTElCQ19TT05BTUUgIGxpYmNaZFphICAgICAgICAgICAgICAgIC8vIGxpYmMuKgotICNlbGlmIGRlZmluZWQoVkdPX2RhcndpbikgJiYgKERBUldJTl9WRVJTIDw9IERBUldJTl8xMF82KQotICMgIGRlZmluZSAgVkdfWl9MSUJDX1NPTkFNRSAgbGliU3lzdGVtWmRaYVpkZHlsaWIgICAgLy8gbGliU3lzdGVtLiouZHlsaWIKLSAKLUBAIC0yNzQsNyArMjczLDExIEBACi0gLyogLS0tIFNvbmFtZSBvZiB0aGUgcHRocmVhZHMgbGlicmFyeS4gLS0tICovCi0gCi0gI2lmIGRlZmluZWQoVkdPX2xpbnV4KQotKyMgaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19VQ0xJQkNfXykKLSAjICBkZWZpbmUgIFZHX1pfTElCUFRIUkVBRF9TT05BTUUgIGxpYnB0aHJlYWRaZHNvWmQwICAgICAvLyBsaWJwdGhyZWFkLnNvLjAKLSsjIGVsc2UKLSsjICBkZWZpbmUgIFZHX1pfTElCUFRIUkVBRF9TT05BTUUgIGxpYmNaZFphICAgICAgICAgICAgICAvLyBsaWJjLioKLSsjZW5kaWYKLSAjZWxpZiBkZWZpbmVkKFZHT19kYXJ3aW4pCi0gIyAgZGVmaW5lICBWR19aX0xJQlBUSFJFQURfU09OQU1FICBsaWJTeXN0ZW1aZFphWmRkeWxpYiAgLy8gbGliU3lzdGVtLiouZHlsaWIKLSAjZWxpZiBkZWZpbmVkKFZHT19zb2xhcmlzKQotLS0gCi0yLjcuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWFrZWZpbGVzLURyb3Atc2V0dGluZy1tY3B1LXRvLWNvcnRleC1hOC1vbi1hcm0tYXJjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tYWtlZmlsZXMtRHJvcC1zZXR0aW5nLW1jcHUtdG8tY29ydGV4LWE4LW9uLWFybS1hcmNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMWRhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWFrZWZpbGVzLURyb3Atc2V0dGluZy1tY3B1LXRvLWNvcnRleC1hOC1vbi1hcm0tYXJjaC5wYXRjaApAQCAtMCwwICsxLDEwOCBAQAorRnJvbSA3MTVjZjEyMjM4OGYzNTI3YWZhNTY0OWNlYmY5ZjE1MjJjMjQwNjkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjAgQXByIDIwMTcgMTA6MTE6MTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZWZpbGVzOiBEcm9wIHNldHRpbmcgLW1jcHUgdG8gY29ydGV4LWE4IG9uIGFybQorIGFyY2hpdGVjdHVyZQorCitXZSBjYW4gbm90IGFzc3VtZSB0aGF0IGFsbCBhcmNoZXMgYXJtdjcrIGFyZSBjb3J0ZXgtYTggb25seQoraXQgZmFpbHMgdG8gYnVpbGQgZm9yIHJwaSB3aGljaCBpcyBhcm12N3ZlIGJhc2VkIChjb3J0ZXgtYTgpIGNwdQoraW1wbGVtZW50YXRpb24uCitGaXhlcworfCBjYzE6IHdhcm5pbmc6IHN3aXRjaCAtbWNwdT1jb3J0ZXgtYTggY29uZmxpY3RzIHdpdGggLW1hcmNoPWFybXY3dmUgc3dpdGNoCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYWxsLmFtICAgICAgICAgICAgfCAgNiArKystLS0KKyBoZWxncmluZC90ZXN0cy9NYWtlZmlsZS5hbSB8ICA2ICsrKy0tLQorIG5vbmUvdGVzdHMvYXJtL01ha2VmaWxlLmFtIHwgMTggKysrKysrKysrLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFsbC5hbSBiL01ha2VmaWxlLmFsbC5hbQoraW5kZXggMDIwNTlhMy4uYzdjNDcwMCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFsbC5hbQorKysrIGIvTWFrZWZpbGUuYWxsLmFtCitAQCAtMTk3LDExICsxOTcsMTEgQEAgQU1fQ0NBU0ZMQUdTX1BQQzY0TEVfTElOVVggID0gQEZMQUdfTTY0QCAtZworIAorIEFNX0ZMQUdfTTMyNjRfQVJNX0xJTlVYICAgPSBARkxBR19NMzJACisgQU1fQ0ZMQUdTX0FSTV9MSU5VWCAgICAgICA9IEBGTEFHX00zMkAgXAorLQkJCSAJJChBTV9DRkxBR1NfQkFTRSkgLW1hcm0gLW1jcHU9Y29ydGV4LWE4CisrCQkJIAkkKEFNX0NGTEFHU19CQVNFKSAtbWFybQorIEFNX0NGTEFHU19QU09fQVJNX0xJTlVYICAgPSBARkxBR19NMzJAICQoQU1fQ0ZMQUdTX0JBU0UpIFwKKy0JCQkJLW1hcm0gLW1jcHU9Y29ydGV4LWE4ICQoQU1fQ0ZMQUdTX1BTT19CQVNFKQorKwkJCQktbWFybSAkKEFNX0NGTEFHU19QU09fQkFTRSkKKyBBTV9DQ0FTRkxBR1NfQVJNX0xJTlVYICAgID0gQEZMQUdfTTMyQCBcCistCQkJCS1tYXJtIC1tY3B1PWNvcnRleC1hOCAtZworKwkJCQktbWFybSAtZworIAorIEFNX0ZMQUdfTTMyNjRfQVJNNjRfTElOVVggPSBARkxBR19NNjRACisgQU1fQ0ZMQUdTX0FSTTY0X0xJTlVYICAgICA9IEBGTEFHX002NEAgJChBTV9DRkxBR1NfQkFTRSkKK2RpZmYgLS1naXQgYS9oZWxncmluZC90ZXN0cy9NYWtlZmlsZS5hbSBiL2hlbGdyaW5kL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCBkZjgyMTY5Li4wN2ViNjZhIDEwMDY0NAorLS0tIGEvaGVsZ3JpbmQvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL2hlbGdyaW5kL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTg5LDkgKzE4OSw5IEBAIGlmICEgVkdDT05GX1BMQVRGT1JNU19JTkNMVURFX1g4Nl9EQVJXSU4KKyBlbmRpZgorIAorIGlmIFZHQ09ORl9QTEFURk9STVNfSU5DTFVERV9BUk1fTElOVVgKKy1hbm5vdGF0ZV9oYmVmb3JlX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAtbWNwdT1jb3J0ZXgtYTgKKy10YzA3X2hibDFfQ0ZMQUdTICAgICAgICA9ICQoQU1fQ0ZMQUdTKSAtbWNwdT1jb3J0ZXgtYTgKKy10YzA4X2hibDJfQ0ZMQUdTICAgICAgICA9ICQoQU1fQ0ZMQUdTKSAtbWNwdT1jb3J0ZXgtYTgKKythbm5vdGF0ZV9oYmVmb3JlX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKQorK3RjMDdfaGJsMV9DRkxBR1MgICAgICAgID0gJChBTV9DRkxBR1MpCisrdGMwOF9oYmwyX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykKKyBlbHNlCisgYW5ub3RhdGVfaGJlZm9yZV9DRkxBR1MgPSAkKEFNX0NGTEFHUykKKyB0YzA3X2hibDFfQ0ZMQUdTICAgICAgICA9ICQoQU1fQ0ZMQUdTKQorZGlmZiAtLWdpdCBhL25vbmUvdGVzdHMvYXJtL01ha2VmaWxlLmFtIGIvbm9uZS90ZXN0cy9hcm0vTWFrZWZpbGUuYW0KK2luZGV4IDAyNGViNmQuLmNjZWNiOTAgMTAwNjQ0CistLS0gYS9ub25lL3Rlc3RzL2FybS9NYWtlZmlsZS5hbQorKysrIGIvbm9uZS90ZXN0cy9hcm0vTWFrZWZpbGUuYW0KK0BAIC01MiwxMCArNTIsMTAgQEAgYWxsZXhlY19DRkxBR1MJCT0gJChBTV9DRkxBR1MpIEBGTEFHX1dfTk9fTk9OTlVMTEAKKyAjIG5lZWQgc3BlY2lhbCBoZWxwaW5nIHcuci50IC1tZnB1IGFuZCAtbWZsb2F0LWFiaSwgdGhvdWdoLgorICMgQWxzbyBmb3JjZSAtTzAgc2luY2UgLU8gdGFrZXMgaHVuZHJlZHMgb2YgTUIgb2YgbWVtb3J5IAorICMgZm9yIHY2aW50VGh1bWIuYy4KKy12NmludEFSTV9DRkxBR1MgICA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW1jcHU9Y29ydGV4LWE4IC1tYXJtCistdjZpbnRUaHVtYl9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCAtbXRodW1iCisrdjZpbnRBUk1fQ0ZMQUdTICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tYXJtCisrdjZpbnRUaHVtYl9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tdGh1bWIKKyAKKy12Nm1lZGlhX0NGTEFHUyAgICA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW1jcHU9Y29ydGV4LWE4IC1tdGh1bWIKKyt2Nm1lZGlhX0NGTEFHUyAgICA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW10aHVtYgorIAorIHY4Y3J5cHRvX2FfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWZwdT1jcnlwdG8tbmVvbi1mcC1hcm12OCAtbWFybQorIHY4Y3J5cHRvX3RfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWZwdT1jcnlwdG8tbmVvbi1mcC1hcm12OCAtbXRodW1iCitAQCAtNjUsMjMgKzY1LDIzIEBAIHY4bWVtb3J5X2FfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCBcCisgdjhtZW1vcnlfdF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLU8wIFwKKyAJCQktbWFyY2g9YXJtdjgtYSAtbWZwdT1jcnlwdG8tbmVvbi1mcC1hcm12OCAtbXRodW1iCisgCistdmZwX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCBcCisrdmZwX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIFwKKyAJCQktbWZwdT1uZW9uIFwKKyAJCQktbXRodW1iCisgCisgCistbmVvbjEyOF9DRkxBR1MgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCBcCisrbmVvbjEyOF9DRkxBR1MgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIFwKKyAJCQktbWZwdT1uZW9uIFwKKyAJCQktbXRodW1iCisgCistbmVvbjY0X0NGTEFHUyAgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCBcCisrbmVvbjY0X0NGTEFHUyAgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIFwKKyAJCQktbWZwdT1uZW9uIFwKKyAJCQktbXRodW1iCisgCisgaW50ZGl2X0NGTEFHUwkgID0gJChBTV9DRkxBR1MpIC1nIC1tYXJjaD1hcm12N3ZlIC1tY3B1PWNvcnRleC1hMTUgLW10aHVtYgorLWxkcnRfQ0ZMQUdTCSAgPSAkKEFNX0NGTEFHUykgLWcgLW1jcHU9Y29ydGV4LWE4IC1tdGh1bWIKKy1sZHJ0X2FybV9DRkxBR1MJICA9ICQoQU1fQ0ZMQUdTKSAtZyAtbWNwdT1jb3J0ZXgtYTggLW1hcm0KKytsZHJ0X0NGTEFHUwkgID0gJChBTV9DRkxBR1MpIC1nIC1tdGh1bWIKKytsZHJ0X2FybV9DRkxBR1MJICA9ICQoQU1fQ0ZMQUdTKSAtZyAtbWFybQorIAorLXZjdnRfZml4ZWRfZmxvYXRfVkZQX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAtZyAtbWNwdT1jb3J0ZXgtYTggLW1mcHU9dmZwdjMKKyt2Y3Z0X2ZpeGVkX2Zsb2F0X1ZGUF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLW1mcHU9dmZwdjMKKyAKKyB2ZnB2NF9mbWFfQ0ZMQUdTICA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW1hcmNoPWFybXY3dmUgLW1jcHU9Y29ydGV4LWExNSAtbWZwdT12ZnB2NCAtbWFybQorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stYXJtNjQtRGVmaW5lLV9fVEhST1ctaWYtbm90LWFscmVhZHktZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDhkN2RiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAzNDA5ZGMzNWMxNWJiMTRjOGE1MjUyMzk4MDYzMjI2NDhlMDc5YWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxNzoxMjo0MyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gbWVtY2hlY2svYXJtNjQ6IERlZmluZSBfX1RIUk9XIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQKKworSGVscHMgY29tcGlsaW5nIHdpdGggbXVzbCB3aGVyZSBfX1RIUk9XIGlzIG5vdCBhdmFpbGFibGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIG1lbWNoZWNrL3Rlc3RzL2FybTY0LWxpbnV4L3NjYWxhci5oIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvYXJtNjQtbGludXgvc2NhbGFyLmggYi9tZW1jaGVjay90ZXN0cy9hcm02NC1saW51eC9zY2FsYXIuaAoraW5kZXggOTAwODgxNi4uOGVmMDUwZiAxMDA2NDQKKy0tLSBhL21lbWNoZWNrL3Rlc3RzL2FybTY0LWxpbnV4L3NjYWxhci5oCisrKysgYi9tZW1jaGVjay90ZXN0cy9hcm02NC1saW51eC9zY2FsYXIuaAorQEAgLTEyLDYgKzEyLDEwIEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorIAorKyNpZm5kZWYgX19USFJPVworKyNkZWZpbmUgX19USFJPVworKyNlbmRpZgorKworIC8vIFNpbmNlIHdlIHVzZSB2a2lfdW5pc3RkLmgsIHdlIGNhbid0IGluY2x1ZGUgPHVuaXN0ZC5oPi4gIFNvIHdlIGhhdmUgdG8KKyAvLyBkZWNsYXJlIHRoaXMgb3Vyc2VsdmVzLgorIGV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25nIGludCBfX3N5c25vLCAuLi4pIF9fVEhST1c7CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay10ZXN0cy1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMTZhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDYyOWFjNDkyYjFkOWJjNzA5ZDE3MzM3ZWI5YjFjMjg2MDNlY2EyNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAxMTowMToyNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtZW1jaGVjay90ZXN0czogVXNlIHVjb250ZXh0X3QgaW5zdGVhZCBvZiBzdHJ1Y3QgdWNvbnRleHQKKworZ2xpYmMgMi4yNiBkb2VzIG5vdCBleHBvc2Ugc3RydWN0IHVjb250ZXh0IGFueW1vcmUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0zODE3NjldCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKK2luZGV4IGZmYjQ5YzYuLmFjYzQxMDkgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N0YWNrX2NoYW5nZXMuYworQEAgLTExLDcgKzExLDcgQEAKKyAvLyBjaGVja3MgdGhhdCBWYWxncmluZCBub3RpY2VzIHRoZWlyIHN0YWNrIGNoYW5nZXMgcHJvcGVybHkuCisgCisgI2lmZGVmIF9fR0xJQkNfXworLXR5cGVkZWYgIHN0cnVjdCB1Y29udGV4dCAgbXljb250ZXh0OworK3R5cGVkZWYgdWNvbnRleHRfdCAgbXljb250ZXh0OworIAorIG15Y29udGV4dCBjdHgxLCBjdHgyLCBvbGRjOworIGludCBjb3VudDsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1zaWdxdWV1ZS1SZW5hbWUtX3NpZmllbGRzLXRvLV9fc2lfZmllbGRzLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtc2lncXVldWUtUmVuYW1lLV9zaWZpZWxkcy10by1fX3NpX2ZpZWxkcy1vbi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MzY2MTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtc2lncXVldWUtUmVuYW1lLV9zaWZpZWxkcy10by1fX3NpX2ZpZWxkcy1vbi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNjRhZDI3NDRhY2ZiNGZhNDBiMWMxMTQ2MzNhMDUzZjg3MTI1YTIwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAwOjQ2OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS82XSBzaWdxdWV1ZTogUmVuYW1lIF9zaWZpZWxkcyB0byBfX3NpX2ZpZWxkcyBvbiBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbWVtY2hlY2svdGVzdHMvbGludXgvc2lncXVldWUuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zaWdxdWV1ZS5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc2lncXVldWUuYworaW5kZXggZDE4YmQ3Mi4uYWNiN2NiYSAxMDA2NDQKKy0tLSBhL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3NpZ3F1ZXVlLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3NpZ3F1ZXVlLmMKK0BAIC04LDYgKzgsMTEgQEAKKyAjaW5jbHVkZSA8c3lzY2FsbC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysvKiBtdXNsIGxpYmMgZGVmaW5lcyBzaWdpbmZvX3QgX19zaV9maWVsZHMgaW5zdGVhZCBvZiBfc2lmaWVsZHMgKi8KKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjZGVmaW5lIF9zaWZpZWxkcyBfX3NpX2ZpZWxkcworKyNlbmRpZgorKworIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyB7CisgICBzaWdpbmZvX3QgKnNpOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXN0cl90ZXN0ZXIuYy1MaW1pdC1yYXdtZW1jaHItdGVzdC10by1nbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1zdHJfdGVzdGVyLmMtTGltaXQtcmF3bWVtY2hyLXRlc3QtdG8tZ2xpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1YjhmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1zdHJfdGVzdGVyLmMtTGltaXQtcmF3bWVtY2hyLXRlc3QtdG8tZ2xpYmMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBkZTY5MmUzNTk4MDFhMWYwNDg4Yzc2MjY3ZTRmOTA0ZGQyZWZlNzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDA6Mzk6MDcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RyX3Rlc3Rlci5jOiBMaW1pdCByYXdtZW1jaHIoKSB0ZXN0IHRvIGdsaWJjCisKK3Jhd21lbWNocigpIGlzIGEgR05VIGV4dGVudGlvbiB0aGVyZWZvcmUgbWFyayBpdCBzbworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIG1lbWNoZWNrL3Rlc3RzL3N0cl90ZXN0ZXIuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9zdHJfdGVzdGVyLmMgYi9tZW1jaGVjay90ZXN0cy9zdHJfdGVzdGVyLmMKK2luZGV4IDlmNzc5MGEuLjQ3ZTRiNGEgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9zdHJfdGVzdGVyLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL3N0cl90ZXN0ZXIuYworQEAgLTUwNCw3ICs1MDQsNyBAQCB0ZXN0X3N0cmNocm51bCAodm9pZCkKKyAjZW5kaWYKKyAKKyAvLyBEREQ6IGJldHRlciBkb25lIGJ5IHRlc3RpbmcgZm9yIHRoZSBmdW5jdGlvbi4KKy0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX3N1bikKKysjaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgc3RhdGljIHZvaWQKKyB0ZXN0X3Jhd21lbWNociAodm9pZCkKKyB7CitAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgbWFpbiAodm9pZCkKKyAgIHRlc3Rfc3RyY2hybnVsICgpOworICMgZW5kaWYKKyAKKy0jIGlmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19zdW4pCisrIyBpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fc3VuKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIC8qIHJhd21lbWNoci4gICovCisgICB0ZXN0X3Jhd21lbWNociAoKTsKKyAjIGVuZGlmCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5ZjMzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1jb250ZXh0LUFQSXMtYXJlLW5vdC1hdmFpbGFibGUtb24tbXVzbC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDg2MmI4MDcwNzZkNTdmMmY1OGVkOWQ1NzJkZGFjOGJiNDAyNzc0YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMTowMToxMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNl0gY29udGV4dCBBUElzIGFyZSBub3QgYXZhaWxhYmxlIG9uIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKK2luZGV4IGE5NzhmYzIuLmZmYjQ5YzYgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N0YWNrX2NoYW5nZXMuYworQEAgLTEwLDYgKzEwLDcgQEAKKyAvLyBUaGlzIHRlc3QgaXMgY2hlY2tpbmcgdGhlIGxpYmMgY29udGV4dCBjYWxscyAoc2V0Y29udGV4dCwgZXRjLikgYW5kCisgLy8gY2hlY2tzIHRoYXQgVmFsZ3JpbmQgbm90aWNlcyB0aGVpciBzdGFjayBjaGFuZ2VzIHByb3Blcmx5LgorIAorKyNpZmRlZiBfX0dMSUJDX18KKyB0eXBlZGVmICBzdHJ1Y3QgdWNvbnRleHQgIG15Y29udGV4dDsKKyAKKyBteWNvbnRleHQgY3R4MSwgY3R4Miwgb2xkYzsKK0BAIC01MSw5ICs1MiwxMSBAQCBpbnQgaW5pdF9jb250ZXh0KG15Y29udGV4dCAqdWMpCisgCisgICAgIHJldHVybiByZXQ7CisgfQorKyNlbmRpZgorIAorIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyB7CisrI2lmZGVmIF9fR0xJQkNfXworICAgICBpbnQgYzEgPSBpbml0X2NvbnRleHQoJmN0eDEpOworICAgICBpbnQgYzIgPSBpbml0X2NvbnRleHQoJmN0eDIpOworIAorQEAgLTY2LDYgKzY5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAvL2ZyZWUoY3R4MS51Y19zdGFjay5zc19zcCk7CisgICAgIFZBTEdSSU5EX1NUQUNLX0RFUkVHSVNURVIoYzIpOworICAgICAvL2ZyZWUoY3R4Mi51Y19zdGFjay5zc19zcCk7CistCisrI2Vsc2UKKysgICAgcHJpbnRmKCJsaWJjIGNvbnRleHQgY2FsbCBBUElzIGUuZy4gZ2V0Y29udGV4dCgpIGFyZSBkZXByZWNhdGVkIGJ5IHBvc2l4XG4iKTsKKysjZW5kaWYKKyAgICAgcmV0dXJuIDA7CisgfQorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLW1lbWNoZWNrLXg4Ni1EZWZpbmUtX19USFJPVy1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQzMzQ3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA2N2QxOTlkYmRjYmIzZmVmZjVmODkyOGY4NzcyNWZjNjRjMDMwN2Q3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxNzozNjo0MiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvM10gbWVtY2hlY2sveDg2OiBEZWZpbmUgX19USFJPVyBpZiBub3QgZGVmaW5lZAorCittdXNsIGRvZXMgbm90IGhhdmUgX19USFJPVywgdGhlcmVmb3JlIG1ha2UgaXQgbnVsbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oIGIvbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oCitpbmRleCBlZjI4YjAzLi41MmY3NDJlIDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oCisrKysgYi9tZW1jaGVjay90ZXN0cy94ODYtbGludXgvc2NhbGFyLmgKK0BAIC0xMSw2ICsxMSwxMCBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAKKysjaWZuZGVmIF9fVEhST1cKKysjZGVmaW5lIF9fVEhST1cKKysjZW5kaWYKKysKKyAvLyBTaW5jZSB3ZSB1c2UgdmtpX3VuaXN0ZC5oLCB3ZSBjYW4ndCBpbmNsdWRlIDx1bmlzdGQuaD4uICBTbyB3ZSBoYXZlIHRvCisgLy8gZGVjbGFyZSB0aGlzIG91cnNlbHZlcy4KKyBleHRlcm4gbG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19zeXNubywgLi4uKSBfX1RIUk9XOworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLWNvcnJlY3QtaW5jbHVkZS1kaXJlY3RpdmUtcGF0aC1mb3ItY29uZmlnLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDMtY29ycmVjdC1pbmNsdWRlLWRpcmVjdGl2ZS1wYXRoLWZvci1jb25maWcuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjk2NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLWNvcnJlY3QtaW5jbHVkZS1kaXJlY3RpdmUtcGF0aC1mb3ItY29uZmlnLmgucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSBlY2JkZWE3YmQ4YjA4MjA1ZjFiYzNmNmI3MmQ0YjRhODBmMzEzZmNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDE6MDM6MTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzZdIGNvcnJlY3QgaW5jbHVkZSBkaXJlY3RpdmUgcGF0aCBmb3IgY29uZmlnLmgKKword2hlbiBidWlsZGluZyBvdXQgb2Ygc291cmNlIHRyZWUsIGl0IGNhbiBub3QgZmluZAordGhlIGdlbmVyYXRlZCBjb25maWcuaCBvdGhlcndpc2UKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMgIHwgMiArLQorIG1lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5c2xvZy1zeXNjYWxsLmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMKK2luZGV4IGI2MWM2ZDUuLmNjM2ZkNjIgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5c2NhbGxzLTIwMDcuYworQEAgLTEwLDcgKzEwLDcgQEAKKyAKKyAjZGVmaW5lIF9HTlVfU09VUkNFCisgCistI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgorKyNpbmNsdWRlICJjb25maWcuaCIKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorZGlmZiAtLWdpdCBhL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5c2xvZy1zeXNjYWxsLmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNsb2ctc3lzY2FsbC5jCitpbmRleCAxMTQzNzIyLi4yMWU3NThiIDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzbG9nLXN5c2NhbGwuYworKysrIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzbG9nLXN5c2NhbGwuYworQEAgLTYsNyArNiw3IEBACisgICogICAga2xvZ2N0bCgpLgorICAqLworIAorLSNpbmNsdWRlICIuLi8uLi9jb25maWcuaCIKKysjaW5jbHVkZSAiY29uZmlnLmgiCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2lmIGRlZmluZWQoSEFWRV9TWVNfS0xPR19IKQorICNpbmNsdWRlIDxzeXMva2xvZy5oPgorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLXRlc3RzLXNlZ19vdmVycmlkZS1SZXBsYWNlLV9fbW9kaWZ5X2xkdC13aXRoLXN5c2NhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDMtdGVzdHMtc2VnX292ZXJyaWRlLVJlcGxhY2UtX19tb2RpZnlfbGR0LXdpdGgtc3lzY2FsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTEzNDRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLXRlc3RzLXNlZ19vdmVycmlkZS1SZXBsYWNlLV9fbW9kaWZ5X2xkdC13aXRoLXN5c2NhbGwucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSBkMTAzNDc1ODc1ODU4YWI4YTJlNmI1M2NlMTc4YmIyZjYzODgzZDRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxNzozNzo1NiAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvM10gdGVzdHMvc2VnX292ZXJyaWRlOiBSZXBsYWNlIF9fbW9kaWZ5X2xkdCgpIHdpdGggc3lzY2FsbCgpCisKK19fbW9kaWZ5X2xkdCgpIGlzIHNwZWNpZmljIHRvIGdsaWJjLCByZXBsYWNpbmcgaXQgd2l0aCBzeXNjYWxsKCkKK21ha2VzIGl0IG1vcmUgcG9ydGFibGUuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBub25lL3Rlc3RzL3g4Ni1saW51eC9zZWdfb3ZlcnJpZGUuYyB8IDE1ICsrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ub25lL3Rlc3RzL3g4Ni1saW51eC9zZWdfb3ZlcnJpZGUuYyBiL25vbmUvdGVzdHMveDg2LWxpbnV4L3NlZ19vdmVycmlkZS5jCitpbmRleCBiNzYxOWM5Li5jODk4NzRiIDEwMDY0NAorLS0tIGEvbm9uZS90ZXN0cy94ODYtbGludXgvc2VnX292ZXJyaWRlLmMKKysrKyBiL25vbmUvdGVzdHMveDg2LWxpbnV4L3NlZ19vdmVycmlkZS5jCitAQCAtMiw2ICsyLDggQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxzeXNjYWxsLmg+CisgCisgLyogU3R1ZmYgZnJvbSBXaW5lLiAqLworIAorQEAgLTUyLDE0ICs1NCwxMSBAQCBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIGludCB3aW5lX2xkdF9nZXRfbGltaXQoIGNvbnN0IExEVF9FTlRSWSAqZW50ICkKKyAvKiBvdXIgY29weSBvZiB0aGUgbGR0ICovCisgTERUX0VOVFJZIGxkdF9jb3B5WzgxOTJdOworIAorLS8qIFN5c3RlbSBjYWxsIHRvIHNldCBMRFQgZW50cnkuICAqLworLS8vZXh0ZXJuIGludCBfX21vZGlmeV9sZHQgKGludCwgc3RydWN0IG1vZGlmeV9sZHRfbGR0X3MgKiwgc2l6ZV90KTsKKy1leHRlcm4gaW50IF9fbW9kaWZ5X2xkdCAoaW50LCB2b2lkICosIHNpemVfdCk7CistCisgdm9pZCBwcmludF9sZHQgKCB2b2lkICkKKyB7CisgICAgaW50IHJlczsKKy0gICByZXMgPSBfX21vZGlmeV9sZHQoIDAsIGxkdF9jb3B5LCA4MTkyKnNpemVvZihMRFRfRU5UUlkpICk7CisrICAgLyogU3lzdGVtIGNhbGwgdG8gc2V0IExEVCBlbnRyeS4gICovCisrICAgcmVzID0gc3lzY2FsbChTWVNfbW9kaWZ5X2xkdCwgMCwgbGR0X2NvcHksIDgxOTIqc2l6ZW9mKExEVF9FTlRSWSkgKTsKKyAgICBwcmludGYoImdvdCAlZCBieXRlc1xuIiwgcmVzICk7ICAgCisgICAgcGVycm9yKCJlcnJvciBpcyIpOworIH0KK0BAIC04Myw5ICs4Miw2IEBAIHN0cnVjdCBtb2RpZnlfbGR0X2xkdF9zCisgICB1bnNpZ25lZCBpbnQgZW1wdHk6MjU7CisgfTsKKyAKKy0vKiBTeXN0ZW0gY2FsbCB0byBzZXQgTERUIGVudHJ5LiAgKi8KKy0vL2V4dGVybiBpbnQgX19tb2RpZnlfbGR0IChpbnQsIHN0cnVjdCBtb2RpZnlfbGR0X2xkdF9zICosIHNpemVfdCk7CistCisgdm9pZCBzZXRfbGR0MSAoIHZvaWQqIGJhc2UgKQorIHsKKyAgIGludCBzdGF0OworQEAgLTEwMiw3ICs5OCw4IEBAIHZvaWQgc2V0X2xkdDEgKCB2b2lkKiBiYXNlICkKKyAgIGxkdF9lbnRyeS5yZWFkX2V4ZWNfb25seSA9IDA7CisgICBsZHRfZW50cnkubGltaXRfaW5fcGFnZXMgPSAwOworICAgbGR0X2VudHJ5LnNlZ19ub3RfcHJlc2VudCA9IDA7CistICBzdGF0ID0gX19tb2RpZnlfbGR0ICgxLCAmbGR0X2VudHJ5LCBzaXplb2YgKGxkdF9lbnRyeSkpOworKyAgLyogU3lzdGVtIGNhbGwgdG8gc2V0IExEVCBlbnRyeS4gICovCisrICBzdGF0ID0gc3lzY2FsbChTWVNfbW9kaWZ5X2xkdCwgMSwgJmxkdF9lbnRyeSwgc2l6ZW9mIChsZHRfZW50cnkpKTsKKyAgIHByaW50Zigic3RhdCA9ICVkXG4iLCBzdGF0KTsKKyB9CisgCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmluZGV4IGVkMzEzZDYuLjM5MDIyZDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzOGFlMjMzYjY4OTNhNGVlYzdmOWVkNmQ4YWQwMjM5MmJjYThlYWVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3Mzk0MjFlMjUzZTZlYmEzZWI2NDM4NjUxODIyZjgwZmE5YzA1MDJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDE1IERlYyAyMDE1IDE1OjMxOjUwICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMS8yXSBGaXggb3V0IG9mIHRyZWUgYnVpbGRzLgpAQCAtMTMsMjEgKzEzLDIxIEBACiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCi0gY29uZmlndXJlLmFjIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOGFiN2Y5Yi4uOTM2NmRjNyAxMDA2NDQKK2luZGV4IDM4NzQyOTZmZGUwYi4uN2E1YmEyYzg1NTdlIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNzcsNDQgKzM3Nyw0NCBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgorQEAgLTM3Myw1MCArMzczLDUwIEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCiAgCSAgICAgOS4qKQogIAkJICBBQ19NU0dfUkVTVUxUKFtEYXJ3aW4gOS54ICgke2tlcm5lbH0pIC8gTWFjIE9TIFggMTAuNSBMZW9wYXJkXSkKICAJCSAgQUNfREVGSU5FKFtEQVJXSU5fVkVSU10sIERBUldJTl8xMF81LCBbRGFyd2luIC8gTWFjIE9TIFggdmVyc2lvbl0pCiAtCQkgIERFRkFVTFRfU1VQUD0iZGFyd2luOS5zdXBwICR7REVGQVVMVF9TVVBQfSIKIC0JCSAgREVGQVVMVF9TVVBQPSJkYXJ3aW45LWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKLSsJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2Rhcndpbjkuc3VwcCAke0RFRkFVTFRfU1VQUH0iCi0rCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW45LWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKKysgCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW45LnN1cHAgJHtERUZBVUxUX1NVUFB9IgorKyAJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjktZHJkLnN1cHAgJHtERUZBVUxUX1NVUFB9IgogIAkJICA7OwogIAkgICAgIDEwLiopCiAgCQkgIEFDX01TR19SRVNVTFQoW0RhcndpbiAxMC54ICgke2tlcm5lbH0pIC8gTWFjIE9TIFggMTAuNiBTbm93IExlb3BhcmRdKQpAQCAtNzcsOSArNzcsMTcgQEAKICsJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjE1LnN1cHAgJHtERUZBVUxUX1NVUFB9IgogKwkJICBERUZBVUxUX1NVUFA9IiRzcmNkaXIvZGFyd2luMTAtZHJkLnN1cHAgJHtERUZBVUxUX1NVUFB9IgogIAkJICA7OworIAkgICAgIDE2LiopCisgCQkgIEFDX01TR19SRVNVTFQoW0RhcndpbiAxNi54ICgke2tlcm5lbH0pIC8gbWFjT1MgMTAuMTIgU2llcnJhXSkKKyAJCSAgQUNfREVGSU5FKFtEQVJXSU5fVkVSU10sIERBUldJTl8xMF8xMiwgW0RhcndpbiAvIE1hYyBPUyBYIHZlcnNpb25dKQorLQkJICBERUZBVUxUX1NVUFA9ImRhcndpbjE2LnN1cHAgJHtERUZBVUxUX1NVUFB9IgorLQkJICBERUZBVUxUX1NVUFA9ImRhcndpbjEwLWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKKysJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjE2LnN1cHAgJHtERUZBVUxUX1NVUFB9IgorKwkJICBERUZBVUxUX1NVUFA9IiRzcmNkaXIvZGFyd2luMTAtZHJkLnN1cHAgJHtERUZBVUxUX1NVUFB9IgorIAkJICA7OwogICAgICAgICAgICAgICAqKSAKICAJCSAgQUNfTVNHX1JFU1VMVChbdW5zdXBwb3J0ZWQgKCR7a2VybmVsfSldKQotQEAgLTQyNiwxMyArNDI2LDEzIEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCitAQCAtNDI4LDEzICs0MjgsMTMgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KICAgICAgIHNvbGFyaXMyLjExKikKICAgICAgICAgIEFDX01TR19SRVNVTFQoW29rICgke2hvc3Rfb3N9KV0pCiAgICAgICAgICBWR0NPTkZfT1M9InNvbGFyaXMiCkBAIC05NSw3ICsxMDMsNyBAQAogICAgICAgICAgOzsKICAKICAgICAgICopIAotQEAgLTEwMTUsMjkgKzEwMTUsMjkgQEAgQUNfTVNHX0NIRUNLSU5HKFt0aGUgZ2xpYmMgdmVyc2lvbl0pCitAQCAtOTgyLDI5ICs5ODIsMjkgQEAgQUNfTVNHX0NIRUNLSU5HKFt0aGUgZ2xpYmMgdmVyc2lvbl0pCiAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAgICAgIDIuMikKICAJQUNfTVNHX1JFU1VMVCgke0dMSUJDX1ZFUlNJT059IGZhbWlseSkKQEAgLTEzNSw3ICsxNDMsNyBAQAogIAk7OwogICAgICAgMi4qKQogIAlBQ19NU0dfUkVTVUxUKCR7R0xJQkNfVkVSU0lPTn0gZmFtaWx5KQotQEAgLTEwNDYsOCArMTA0Niw4IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCitAQCAtMTAxMyw4ICsxMDEzLDggQEAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAJQUNfREVGSU5FKFtHTElCQ19NQU5EQVRPUllfSU5ERVhfQU5EX1NUUkxFTl9SRURJUkVDVF0sIDEsCiAgCQkgIFtEZWZpbmUgdG8gMSBpZiBpbmRleCgpIGFuZCBzdHJsZW4oKSBoYXZlIGJlZW4gb3B0aW1pemVkIGhlYXZpbHkgKHg4NiBnbGliYyA+PSAyLjEyKV0pCiAgCURFRkFVTFRfU1VQUD0iZ2xpYmMtMi5YLnN1cHAgJHtERUZBVUxUX1NVUFB9IgpAQCAtMTQ2LDcgKzE1NCw3IEBACiAgCTs7CiAgICAgICBkYXJ3aW4pCiAgCUFDX01TR19SRVNVTFQoRGFyd2luKQotQEAgLTEwNTcsNyArMTA1Nyw3IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCitAQCAtMTAyNCw3ICsxMDI0LDcgQEAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAgICAgIGJpb25pYykKICAJQUNfTVNHX1JFU1VMVChCaW9uaWMpCiAgCUFDX0RFRklORShbQklPTklDX0xJQkNdLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91J3JlIHVzaW5nIEJpb25pY10pCkBAIC0xNTUsNyArMTYzLDcgQEAKICAJOzsKICAgICAgIHNvbGFyaXMpCiAgCUFDX01TR19SRVNVTFQoU29sYXJpcykKLUBAIC0xMDc5LDExICsxMDc5LDExIEBAIGlmIHRlc3QgIiRWR0NPTkZfT1MiICE9ICJzb2xhcmlzIjsgdGhlbgorQEAgLTEwNTEsMTEgKzEwNTEsMTEgQEAgaWYgdGVzdCAiJFZHQ09ORl9PUyIgIT0gInNvbGFyaXMiOyB0aGVuCiAgICAgICMgYXR0ZW1wdCB0byBkZXRlY3Qgd2hldGhlciBzdWNoIGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkIG9uIHRoZQogICAgICAjIGJ1aWxkIG1hY2hpbmUgKG9yIGV2ZW4gaWYgYW55IFggZmFjaWxpdGllcyBhcmUgcHJlc2VudCk7IGp1c3QKICAgICAgIyBhZGQgdGhlIHN1cHByZXNzaW9ucyBhbnRpZGlzaXJyZWdhcmRsZXNzLgpAQCAtMTcxLDUgKzE3OSw1IEBACiAgCiAgCiAtLSAKLTIuNi4yCisyLjEzLjIuMy5nNDRjZDg1YzE0CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1wdGhfYXRmb3JrMS5jLURlZmluZS1lcnJvci1BUEktZm9yLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtcHRoX2F0Zm9yazEuYy1EZWZpbmUtZXJyb3ItQVBJLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYjcwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtcHRoX2F0Zm9yazEuYy1EZWZpbmUtZXJyb3ItQVBJLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gZmI3N2ZlZjRmODY2ZGFjN2JjYzZkMWFlMDI1ZGE2MDU2NDg2OWY4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjA2OjExIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNC82XSBwdGhfYXRmb3JrMS5jOiBEZWZpbmUgZXJyb3IoKSBBUEkgZm9yIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBub25lL3Rlc3RzL3B0aF9hdGZvcmsxLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbm9uZS90ZXN0cy9wdGhfYXRmb3JrMS5jIGIvbm9uZS90ZXN0cy9wdGhfYXRmb3JrMS5jCitpbmRleCAzNDIwMWVmLi5iN2Y1ZjJkIDEwMDY0NAorLS0tIGEvbm9uZS90ZXN0cy9wdGhfYXRmb3JrMS5jCisrKysgYi9ub25lL3Rlc3RzL3B0aF9hdGZvcmsxLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fc3VuKQorKyNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fc3VuKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjIGluY2x1ZGUgPGVycm9yLmg+CisgI2VuZGlmCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorQEAgLTI3LDcgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAKKy0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19zdW4pCisrI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fc3VuKSB8fCAoZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykpCisgI2luY2x1ZGUgPHN0cmluZy5oPiAgLyogc3RyZXJyb3IgKi8KKyBzdGF0aWMgdm9pZCBlcnJvciAoaW50IHN0YXR1cywgaW50IGVycm51bSwgY2hhciogbXNnKQorIHsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNS10YzIwX3ZlcmlmeXdyYXAuYy1GYWtlLV9fR0xJQkNfUFJFUkVRLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNS10YzIwX3ZlcmlmeXdyYXAuYy1GYWtlLV9fR0xJQkNfUFJFUkVRLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTc2NjQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA1LXRjMjBfdmVyaWZ5d3JhcC5jLUZha2UtX19HTElCQ19QUkVSRVEtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gYjRiOWYwNzJjMjJmOTY4NDRlMDJjYjlkNjhmN2ZmMjQwODY4MDgxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjA3OjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNS82XSB0YzIwX3ZlcmlmeXdyYXAuYzogRmFrZSBfX0dMSUJDX1BSRVJFUSB3aXRoIG11c2wKKworc2ltaWxhciB0byBzdW4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBoZWxncmluZC90ZXN0cy90YzIwX3ZlcmlmeXdyYXAuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2hlbGdyaW5kL3Rlc3RzL3RjMjBfdmVyaWZ5d3JhcC5jIGIvaGVsZ3JpbmQvdGVzdHMvdGMyMF92ZXJpZnl3cmFwLmMKK2luZGV4IGMxMTAwMDAuLmEzMTFhNDkgMTAwNjQ0CistLS0gYS9oZWxncmluZC90ZXN0cy90YzIwX3ZlcmlmeXdyYXAuYworKysrIGIvaGVsZ3JpbmQvdGVzdHMvdGMyMF92ZXJpZnl3cmFwLmMKK0BAIC0yMCw3ICsyMCw3IEBACisgCisgI2lmICFkZWZpbmVkKF9fQVBQTEVfXykKKyAKKy0jaWYgZGVmaW5lZChfX3N1bl9fKQorKyNpZiBkZWZpbmVkKF9fc3VuX18pIHx8IChkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElCQ19fKSkKKyAvKiBGYWtlIF9fR0xJQkNfUFJFUkVRIG9uIFNvbGFyaXMuIFByZXRlbmQgZ2xpYmMgPj0gMi40LiAqLworICMgZGVmaW5lIF9fR0xJQkNfUFJFUkVRCisgI2Vsc2UKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4ODZjNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYTY1NDdmYzE3YzEyMGRiZDk1Yjg1MmY1MGIwYzRiZGVlNGZlZGI5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjIwOjMyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNi82XSBwdGhfZGV0YWNoZWQzLmM6IERlcmVmZXJlbmNlIHB0aHJlYWRfdCBiZWZvcmUgYWRkaW5nCisgb2Zmc2V0IHRvIGl0CisKK0ZpeGVzCitlcnJvcjogaW52YWxpZCB1c2Ugb2YgdW5kZWZpbmVkIHR5cGUgJ3N0cnVjdCBfX3B0aHJlYWQnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMgYi9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCitpbmRleCBjMDJlZWYxLi4zNWQ0M2E2IDEwMDY0NAorLS0tIGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworKysrIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworQEAgLTIxLDcgKzIxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorICAgcHRocmVhZF9kZXRhY2godGhyZWFkKTsKKyAKKyAgIC8qIEludm9rZSBwdGhyZWFkX2RldGFjaCgpIHdpdGggYW4gaW52YWxpZCB0aHJlYWQgSUQuICovCistICBwdGhyZWFkX2RldGFjaCh0aHJlYWQgKyA4KTsKKysgIHB0aHJlYWRfZGV0YWNoKChwdGhyZWFkX3QqKSgmdGhyZWFkICsgOCkpOworIAorICAgZnByaW50ZihzdGRlcnIsICJGaW5pc2hlZC5cbiIpOworIAorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9saW5rLWd6LXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9saW5rLWd6LXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMzIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL2xpbmstZ3otdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorV2hlbiBjaGVja2luZyBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgY29tcHJlc3NlZCBkZWJ1ZyBzZWN0aW9ucyB3ZSBuZWVkIHRvCithY3R1YWxseSBsaW5rIGluc3RlYWQgb2YganVzdCBjb21waWxlLiAgT3RoZXJ3aXNlIHRoZSBjb21waWxlciB0aGlua3MgdGhhdAordGhleSBhcmUgc3VwcG9ydGVkLCBidXQgZ29sZCBkb2VzIG5vdCBzdXBwb3J0IC1nej16bGliLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChyMTY0NTkpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCistLS0gYS9jb25maWd1cmUuYWN+CTIwMTctMDctMTEgMTE6NTM6MTYuMDAwMDAwMDAwICswMTAwCisrKysgYi9jb25maWd1cmUuYWMJMjAxNy0wNy0xMSAxODoxNjoxMy42NzQxMzA0ODMgKzAxMDAKK0BAIC0yMTE5LDcgKzIxMTksNyBAQAorIHNhZmVfQ0ZMQUdTPSRDRkxBR1MKKyBDRkxBR1M9Ii1nIC1nej16bGliIgorIAorLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sgXV0sIFtbCisrQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBdXSwgW1sKKyAgIHJldHVybiAwOworIF1dKV0sIFsKKyBhY19oYXZlX2d6X3psaWI9eWVzCitAQCAtMjEzOSw3ICsyMTM5LDcgQEAKKyBzYWZlX0NGTEFHUz0kQ0ZMQUdTCisgQ0ZMQUdTPSItZyAtZ3o9emxpYi1nbnUiCisgCistQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBdXSwgW1sKKytBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIF1dLCBbWworICAgcmV0dXJuIDA7CisgXV0pXSwgWworIGFjX2hhdmVfZ3pfemxpYl9nbnU9eWVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3BwYy1oZWFkZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9wcGMtaGVhZGVycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTI1OWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9wcGMtaGVhZGVycy5wYXRjaApAQCAtMCwwICsxLDg3IEBACitCYWNrcG9ydCBhIHBhdGNoIGZyb20gdXBzdHJlYW0gdG8gZml4IHRlc3QgY29tcGlsYXRpb24gZm9yIFBQQyB3aGVyZQorc3lzdGVtIGhlYWRlcnMgZG9uJ3QgZ2V0IGluY2x1ZGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCityMTY0NTAgfCBtancgfCAyMDE3LTA2LTE2IDEwOjMzOjM1ICswMTAwIChGcmksIDE2IEp1biAyMDE3KSB8IDcgbGluZXMKKworcHBjNjQgZG9lc24ndCBjb21waWxlIHRlc3RfaXNhXzJfMDZfcGFydHguYyB3aXRob3V0IFZTWCBzdXBwb3J0CisKK1RoZSAjaWZkZWYgSEFTX1ZTWCBndWFyZCBpcyB3cm9uZ2x5IHBsYWNlZC4gSXQgbWFrZXMgdGhlIHN0YW5kYXJkCitpbmNsdWRlIGhlYWRlcnMgbm90IGJlIHVzZWQuIENhdXNpbmcgYSBidWlsZCBmYWlsdXJlLiBGaXggYnkgbW92aW5nCit0aGUgI2lmZGVmIEhBU19WU1ggYWZ0ZXIgdGhlIHN0YW5kYXJkIGluY2x1ZGVzLgorCitJbmRleDogbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0My5jCShyZXZpc2lvbiAxNjQ0OSkKKysrKyBiL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0My5jCShyZXZpc2lvbiAxNjQ1MCkKK0BAIC0yMCwxNyArMjAsMTggQEAKKyAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBDT1BZSU5HLgorICAqLworIAorLSNpZmRlZiBIQVNfVlNYCistCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPG1hbGxvYy5oPgorLSNpbmNsdWRlIDxhbHRpdmVjLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+ICAgIC8vIGdldG9wdAorIAorKyNpZmRlZiBIQVNfVlNYCisrCisrI2luY2x1ZGUgPGFsdGl2ZWMuaD4KKysKKyAjaWZuZGVmIF9fcG93ZXJwYzY0X18KKyB0eXBlZGVmIHVpbnQzMl90IEhXb3JkX3Q7CisgI2Vsc2UKK0luZGV4OiBub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDEuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQxLmMJKHJldmlzaW9uIDE2NDQ5KQorKysrIGIvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQxLmMJKHJldmlzaW9uIDE2NDUwKQorQEAgLTIwLDEzICsyMCwxNCBAQAorICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBmaWxlIENPUFlJTkcuCisgICovCisgCistI2lmZGVmIEhBU19WU1gKKy0KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8bWFsbG9jLmg+CisrCisrI2lmZGVmIEhBU19WU1gKKysKKyAjaW5jbHVkZSA8YWx0aXZlYy5oPgorIAorICNpZm5kZWYgX19wb3dlcnBjNjRfXworSW5kZXg6IG5vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0Mi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDIuYwkocmV2aXNpb24gMTY0NDkpCisrKysgYi9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDIuYwkocmV2aXNpb24gMTY0NTApCitAQCAtMjAsMTcgKzIwLDE4IEBACisgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIGZpbGUgQ09QWUlORy4KKyAgKi8KKyAKKy0jaWZkZWYgSEFTX1ZTWAorLQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxtYWxsb2MuaD4KKy0jaW5jbHVkZSA8YWx0aXZlYy5oPgorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPiAgICAvLyBnZXRvcHQKKyAKKysjaWZkZWYgSEFTX1ZTWAorKworKyNpbmNsdWRlIDxhbHRpdmVjLmg+CisrCisgI2lmbmRlZiBfX3Bvd2VycGM2NF9fCisgdHlwZWRlZiB1aW50MzJfdCBIV29yZF90OworICNlbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcnVuLXB0ZXN0CmluZGV4IGY5YTcyZWMuLjQ0N2QzM2MgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcnVuLXB0ZXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcnVuLXB0ZXN0CkBAIC0yLDExICsyLDI0IEBACiAKICMgcnVuLXB0ZXN0IC0gJ3B0ZXN0JyB0ZXN0IGluZnJhc3RydWN0dXJlIHNoZWxsIHNjcmlwdCB0aGF0CiAjICAgd3JhcHMgdGhlIHZhbGdyaW5kIHJlZ3Jlc3Npb24gc2NyaXB0IHZnX3JlZ3Rlc3QuIAotIyAgIE11c3QgYmUgcnVuIGluIHRoZSAvdXNyL2xpYi92YWxncmluZC9wdGVzdCBkaXJlY3RvcnkuIAogIwogIyBEYXZlIExlcm5lciA8ZGF2ZS5sZXJuZXJAd2luZHJpdmVyLmNvbT4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogVkFMR1JJTkRMSUI9QGxpYmRpckAvdmFsZ3JpbmQKLXRlc3RzL3ZnX3JlZ3Rlc3QgLS1hbGwgXAorTE9HPSIke1ZBTEdSSU5ETElCfS9wdGVzdC92YWxncmluZF9wdGVzdF8kKGRhdGUgKyVZJW0lZC0lSCVNJVMpLmxvZyIKKworY2QgJHtWQUxHUklORExJQn0vcHRlc3QgJiYgLi90ZXN0cy92Z19yZWd0ZXN0IC0tYWxsIFwKICAgICAtLXZhbGdyaW5kPS91c3IvYmluL3ZhbGdyaW5kIC0tdmFsZ3JpbmQtbGliPSRWQUxHUklORExJQiBcCi0JLS15b2N0by1wdGVzdAorICAgIC0teW9jdG8tcHRlc3QgMj4mMXx0ZWUgJHtMT0d9CisKK3Bhc3NlZD1gZ3JlcCBQQVNTOiAke0xPR318d2MgLWxgCitmYWlsZWQ9YGdyZXAgRkFJTDogJHtMT0d9fHdjIC1sYAorc2tpcHBlZD1gZ3JlcCBTS0lQOiAke0xPR318d2MgLWxgCithbGw9JCgocGFzc2VkICsgZmFpbGVkICsgc2tpcHBlZCkpCisKKyggZWNobyAiPT09IFRlc3QgU3VtbWFyeSA9PT0iCisgIGVjaG8gIlRPVEFMOiAke2FsbH0iCisgIGVjaG8gIlBBU1NFRDogJHtwYXNzZWR9IgorICBlY2hvICJGQUlMRUQ6ICR7ZmFpbGVkfSIKKyAgZWNobyAiU0tJUFBFRDogJHtza2lwcGVkfSIKKykgfCB0ZWUgLWEgLyR7TE9HfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY4Y2QzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi1TVU1NQVJZID0gIlZhbGdyaW5kIG1lbW9yeSBkZWJ1Z2dlciBhbmQgaW5zdHJ1bWVudGF0aW9uIGZyYW1ld29yayIKLUhPTUVQQUdFID0gImh0dHA6Ly92YWxncmluZC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vdmFsZ3JpbmQub3JnL3N1cHBvcnQvYnVnX3JlcG9ydHMuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3B1Yl90b29sX2Jhc2ljcy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjk7bWQ1PWViYjhlNjQwZWY2MzNmOTQwYzQyNTY4NmM4NzNmOWZhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdmFsZ3JpbmQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTU2O21kNT00YjVlMjQ5MDhlNTMwMTZlYTU2MWM0NWY0MjM0YTMyNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkRPQ1M7bWQ1PTI0ZWE0YzcwOTIyMzM4NDliNDM5NDY5OTMzM2I1YzU2IgotCi1YMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIgotREVQRU5EUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcke1gxMURFUEVORFN9JywgJycsIGQpfSBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnYm9vc3QnLCAnJywgZCl9IFwKLSAgICAgICAgIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cudmFsZ3JpbmQub3JnL2Rvd25sb2Fkcy92YWxncmluZC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeGVkLXBlcmwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGRlZC1zdXBwb3J0LWZvci1QUEMtaW5zdHJ1Y3Rpb25zLW1mYXRidS1tZmF0YmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItcmVtb3ZlLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LU1vZGlmeS12Z190ZXN0LXdyYXBwZXItdG8tc3VwcG9ydC1QVEVTVC1mb3JtYXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRlc3RzLXRoYXQtZmFpbC10by1idWlsZC1vbi1zb21lLVBQQzMyLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtYXBwcm9wcmlhdGUtbWFyY2gtbWNwdS1tZnB1LWZvci1BUk0tdGVzdC1hcHBzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLW5lb24tZm9yLXRhcmdldHMtd2hpY2gtZG9uLXQtc3VwcG9ydC1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92YWxncmluZC1tYWtlLWxkLVhYWC5zby1zdHJsZW4taW50ZXJjZXB0LW9wdGlvbmFsLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC1mb3ItbXVzbC10YXJnZXRzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZWIwM2MwYzEwZWE5MTcwMTNhNzYyMmU0ODNkNjFiYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2N2NhNDM5NWIyNTI3MjQ3NzgwZjM2MTQ4YjA4NGY1NzQzYTY4YWIwYzg1MGNiNDNlNGE1YjRiMDEyY2Y3NmExIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0fG1pcHN8cG93ZXJwY3xwb3dlcnBjNjQpLiotbGludXgnCi0KLSMgdmFsZ3JpbmQgc3VwcG9ydHMgYXJtdjcgYW5kIGFib3ZlCi1DT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKLUNPTVBBVElCTEVfSE9TVF9hcm12NSA9ICdudWxsJwotQ09NUEFUSUJMRV9IT1NUX2FybXY2ID0gJ251bGwnCi0KLSMgWDMyIGlzbid0IHN1cHBvcnRlZCBieSB2YWxncmluZCBhdCB0aGlzIHRpbWUKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAnbnVsbCcKLQotIyBEaXNhYmxlIGZvciBzb21lIE1JUFMgdmFyaWFudHMKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICdudWxsJwotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNocjYgPSAnbnVsbCcKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRscyAtLXdpdGhvdXQtbXBpY2MiCi1FWFRSQV9PRUNPTkYgKz0gIiR7QFsnLS1lbmFibGUtb25seTMyYml0JywnLS1lbmFibGUtb25seTY0Yml0J11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnKSAhPSAnMzInXX0iCi0KLSMgdmFsZ3JpbmQgY2hlY2tzIGhvc3RfY3B1ICJhcm12NyopIiwgc28gd2UgbmVlZCB0byBvdmVyLXJpZGUgdGhlIGF1dG90b29scy5iYmNsYXNzIGRlZmF1bHQgLS1ob3N0IG9wdGlvbgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIC0taG9zdD1hcm12NyR7SE9TVF9WRU5ET1J9LSR7SE9TVF9PU30iCi0KLUVYVFJBX09FTUFLRSA9ICItdyIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgotCi0jIHZhbGdyaW5kIGxpa2VzIHRvIGNvbnRyb2wgaXRzIG93biBvcHRpbWlzYXRpb24gZmxhZ3MuIEl0IGdlbmVyYWxseSBkZWZhdWx0cwotIyB0byAtTzIgYnV0IHVzZXMgLU8wIGZvciBzb21lIHNwZWNpZmljIHRlc3QgYXBwcyBldGMuIFBhc3Npbmcgb3VyIG93biBmbGFncwotIyAodmlhIENGTEFHUykgbWVhbnMgd2UgaW50ZXJmZXJlIHdpdGggdGhhdC4gT25seSBwYXNzIERFQlVHX0ZMQUdTIHRvIGl0Ci0jIHdoaWNoIGZpeGVzIGJ1aWxkIHBhdGggaXNzdWUgaW4gRFdBUkYuCi1TRUxFQ1RFRF9PUFRJTUlaQVRJT04gPSAiJHtERUJVR19GTEFHU30iCi0KLUNGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1EX19VQ0xJQkNfXyAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1tIDY0NCAke0J9L2RlZmF1bHQuc3VwcCAke0R9LyR7bGliZGlyfS92YWxncmluZC8KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCi0KLSMgdmFsZ3JpbmQgbmVlZHMgZGVidWcgaW5mb3JtYXRpb24gZm9yIGxkLnNvIGF0IHJ1bnRpbWUgaW4gb3JkZXIgdG8KLSMgcmVkaXJlY3QgZnVuY3Rpb25zIGxpa2Ugc3RybGVuLgotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7VENMSUJDfS1kYmciCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgc2VkIHBlcmwgcGVybC1tb2R1bGUtZmlsZS1nbG9iIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgotCi0jIE9uZSBvZiB0aGUgdGVzdHMgY29udGFpbnMgYSBib2d1cyBpbnRlcnByZXRlciBwYXRoIG9uIHB1cnBvc2UuCi0jIFNraXAgZmlsZSBkZXBlbmRlbmN5IGNoZWNrCi1TS0lQX0ZJTEVERVBTXyR7UE59LXB0ZXN0ID0gJzEnCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSBjaGVjawotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGNobW9kICt4ICR7Qn0vdGVzdHMvdmdfcmVndGVzdAotCi0gICAgIyBUaGUgdGVzdCBhcHBsaWNhdGlvbiBiaW5hcmllcyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkLgotICAgICMgR3JhYiB0aGVtIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICAjCi0gICAgIyBUaGUgcmVncmVzc2lvbiB0ZXN0cyByZXF1aXJlIHNjcmlwdHMgYW5kIGRhdGEgZmlsZXMgdGhhdCBhcmUgbm90Ci0gICAgIyBjb3BpZWQgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gIFRoZXkgbXVzdCBiZSBjb3BpZWQgZnJvbSB0aGUKLSAgICAjIHNvdXJjZSBkaXJlY3RvcnkuIAotICAgIHNhdmVkX2Rpcj0kUFdECi0gICAgZm9yIHBhcmVudF9kaXIgaW4gJHtTfSAke0J9IDsgZG8KLSAgICAgICAgY2QgJHBhcmVudF9kaXIKLQotICAgICAgICAjIGV4Y2x1ZGUgc2hlbGwgb3IgdGhlIHBhY2thZ2Ugd29uJ3QgaW5zdGFsbAotICAgICAgICBybSAtcmYgbm9uZS90ZXN0cy9zaGVsbCogMj4vZGV2L251bGwKLQotICAgICAgICBzdWJkaXJzPSJ0ZXN0cyBjYWNoZWdyaW5kL3Rlc3RzIGNhbGxncmluZC90ZXN0cyBkcmQvdGVzdHMgaGVsZ3JpbmQvdGVzdHMgbWFzc2lmL3Rlc3RzIG1lbWNoZWNrL3Rlc3RzIG5vbmUvdGVzdHMiCi0KLSAgICAgICAgIyBHZXQgdGhlIHZnIHRlc3Qgc2NyaXB0cywgZmlsdGVycywgYW5kIGV4cGVjdGVkIGZpbGVzCi0gICAgICAgIGZvciBkaXIgaW4gJHN1YmRpcnMgOyBkbwotICAgICAgICAgICAgZmluZCAkZGlyIHwgY3BpbyAtcHZkdSAke0R9JHtQVEVTVF9QQVRIfQotICAgICAgICBkb25lCi0gICAgICAgIGNkICRzYXZlZF9kaXIKLSAgICBkb25lCi0KLSAgICAjIGNsZWFuIG91dCBidWlsZCBhcnRpZmFjdHMgYmVmb3JlIGJ1aWxkaW5nIHRoZSBycG0KLSAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9IFwKLSAgICAgICAgIFwoIC1uYW1lICJNYWtlZmlsZSoiIFwKLSAgICAgICAgLW8gLW5hbWUgIioubyIgXAotICAgICAgICAtbyAtbmFtZSAiKi5jIiBcCi0gICAgICAgIC1vIC1uYW1lICIqLlMiIFwKLSAgICAgICAgLW8gLW5hbWUgIiouaCIgXCkgXAotICAgICAgICAtZXhlYyBybSB7fSBcOwotCi0gICAgIyBuZWVkZWQgYnkgbWFzc2lmIHRlc3RzCi0gICAgY3AgJHtCfS9tYXNzaWYvbXNfcHJpbnQgJHtEfSR7UFRFU1RfUEFUSH0vbWFzc2lmL21zX3ByaW50Ci0KLSAgICAjIGhhbmRsZSBtdWx0aWxpYgotICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWI0MTI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIKQEAgLTAsMCArMSwxNTMgQEAKK1NVTU1BUlkgPSAiVmFsZ3JpbmQgbWVtb3J5IGRlYnVnZ2VyIGFuZCBpbnN0cnVtZW50YXRpb24gZnJhbWV3b3JrIgorSE9NRVBBR0UgPSAiaHR0cDovL3ZhbGdyaW5kLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly92YWxncmluZC5vcmcvc3VwcG9ydC9idWdfcmVwb3J0cy5odG1sIgorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvcHViX3Rvb2xfYmFzaWNzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yOTttZDU9ZDRkZTA0MDcyMzkzODE0NjNjZjAxZGQyNzZkN2MyMmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS92YWxncmluZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9NTY7bWQ1PWFkM2IzMTdmMzI4NmI2YjcwNDU3NWQ5ZWZlNmNhNWRmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuRE9DUzttZDU9MjRlYTRjNzA5MjIzMzg0OWI0Mzk0Njk5MzMzYjVjNTYiCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEiCitERVBFTkRTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyR7WDExREVQRU5EU30nLCAnJywgZCl9IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdib29zdCcsICcnLCBkKX0gXAorICAgICAgICAiCisKK1NSQ19VUkkgPSAiZnRwOi8vc291cmNld2FyZS5vcmcvcHViL3ZhbGdyaW5kL3ZhbGdyaW5kLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZml4ZWQtcGVybC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0FkZGVkLXN1cHBvcnQtZm9yLVBQQy1pbnN0cnVjdGlvbnMtbWZhdGJ1LW1mYXRibC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1yZW1vdmUtcnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtTW9kaWZ5LXZnX3Rlc3Qtd3JhcHBlci10by1zdXBwb3J0LVBURVNULWZvcm1hdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGVzdHMtdGhhdC1mYWlsLXRvLWJ1aWxkLW9uLXNvbWUtUFBDMzItY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1hcHByb3ByaWF0ZS1tYXJjaC1tY3B1LW1mcHUtZm9yLUFSTS10ZXN0LWFwcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmVvbi1mb3ItdGFyZ2V0cy13aGljaC1kb24tdC1zdXBwb3J0LWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZhbGdyaW5kLW1ha2UtbGQtWFhYLnNvLXN0cmxlbi1pbnRlcmNlcHQtb3B0aW9uYWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZmlsZXMtRHJvcC1zZXR0aW5nLW1jcHUtdG8tY29ydGV4LWE4LW9uLWFybS1hcmNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3RyX3Rlc3Rlci5jLUxpbWl0LXJhd21lbWNoci10ZXN0LXRvLWdsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2lncXVldWUtUmVuYW1lLV9zaWZpZWxkcy10by1fX3NpX2ZpZWxkcy1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jb3JyZWN0LWluY2x1ZGUtZGlyZWN0aXZlLXBhdGgtZm9yLWNvbmZpZy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHRoX2F0Zm9yazEuYy1EZWZpbmUtZXJyb3ItQVBJLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtdGMyMF92ZXJpZnl3cmFwLmMtRmFrZS1fX0dMSUJDX1BSRVJFUS13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpbmstZ3otdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHBjLWhlYWRlcnMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODE3ZGQwOGYxZThhNjYzMzZiOWZmMjA2NDAwYTUzNjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDc2NjgwZWYwM2YwMGNkNWU5NzBiYmRjZDRlNTdmYjFmNmRmN2QyZTJjMDcxNjM1ZWYyYmU3NDc5MDE5MGMzYiIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInZhbGdyaW5kLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0fG1pcHN8cG93ZXJwY3xwb3dlcnBjNjQpLiotbGludXgnCisKKyMgdmFsZ3JpbmQgc3VwcG9ydHMgYXJtdjcgYW5kIGFib3ZlCitDT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9hcm12NSA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2FybXY2ID0gJ251bGwnCisKKyMgWDMyIGlzbid0IHN1cHBvcnRlZCBieSB2YWxncmluZCBhdCB0aGlzIHRpbWUKK0NPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9saW51eC1tdXNseDMyID0gJ251bGwnCisKKyMgRGlzYWJsZSBmb3Igc29tZSBNSVBTIHZhcmlhbnRzCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaHI2ID0gJ251bGwnCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10bHMgLS13aXRob3V0LW1waWNjIgorRVhUUkFfT0VDT05GICs9ICIke0BbJy0tZW5hYmxlLW9ubHkzMmJpdCcsJy0tZW5hYmxlLW9ubHk2NGJpdCddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgorCisjIHZhbGdyaW5kIGNoZWNrcyBob3N0X2NwdSAiYXJtdjcqKSIsIHNvIHdlIG5lZWQgdG8gb3Zlci1yaWRlIHRoZSBhdXRvdG9vbHMuYmJjbGFzcyBkZWZhdWx0IC0taG9zdCBvcHRpb24KK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAtLWhvc3Q9YXJtdjcke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9IgorVEFSR0VUX0NDX0FSQ0hfcmVtb3ZlX2FybSA9ICIke0BnZXRfbWNwdShkKX0iCisKK0VYVFJBX09FTUFLRSA9ICItdyIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgorCisjIHZhbGdyaW5kIGxpa2VzIHRvIGNvbnRyb2wgaXRzIG93biBvcHRpbWlzYXRpb24gZmxhZ3MuIEl0IGdlbmVyYWxseSBkZWZhdWx0cworIyB0byAtTzIgYnV0IHVzZXMgLU8wIGZvciBzb21lIHNwZWNpZmljIHRlc3QgYXBwcyBldGMuIFBhc3Npbmcgb3VyIG93biBmbGFncworIyAodmlhIENGTEFHUykgbWVhbnMgd2UgaW50ZXJmZXJlIHdpdGggdGhhdC4gT25seSBwYXNzIERFQlVHX0ZMQUdTIHRvIGl0CisjIHdoaWNoIGZpeGVzIGJ1aWxkIHBhdGggaXNzdWUgaW4gRFdBUkYuCitTRUxFQ1RFRF9PUFRJTUlaQVRJT04gPSAiJHtERUJVR19GTEFHU30iCisKK2RlZiBnZXRfbWNwdShkKToKKyAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKKyAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgorICAgICAgICAgICAgcmV0dXJuIGFyZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKyAgICByZXR1cm4gIiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIHJtIC1yZiAke1N9L2NvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1tIDY0NCAke0J9L2RlZmF1bHQuc3VwcCAke0R9LyR7bGliZGlyfS92YWxncmluZC8KK30KKworVFVORSA9ICIke0BzdHJpcF9tY3B1KGQpfSIKKworUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCisKKyMgdmFsZ3JpbmQgbmVlZHMgZGVidWcgaW5mb3JtYXRpb24gZm9yIGxkLnNvIGF0IHJ1bnRpbWUgaW4gb3JkZXIgdG8KKyMgcmVkaXJlY3QgZnVuY3Rpb25zIGxpa2Ugc3RybGVuLgorUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7VENMSUJDfS1kYmciCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgc2VkIHBlcmwgcGVybC1tb2R1bGUtZmlsZS1nbG9iIgorUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgorCisjIE9uZSBvZiB0aGUgdGVzdHMgY29udGFpbnMgYSBib2d1cyBpbnRlcnByZXRlciBwYXRoIG9uIHB1cnBvc2UuCisjIFNraXAgZmlsZSBkZXBlbmRlbmN5IGNoZWNrCitTS0lQX0ZJTEVERVBTXyR7UE59LXB0ZXN0ID0gJzEnCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSBjaGVjaworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGNobW9kICt4ICR7Qn0vdGVzdHMvdmdfcmVndGVzdAorCisgICAgIyBUaGUgdGVzdCBhcHBsaWNhdGlvbiBiaW5hcmllcyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkLgorICAgICMgR3JhYiB0aGVtIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAjCisgICAgIyBUaGUgcmVncmVzc2lvbiB0ZXN0cyByZXF1aXJlIHNjcmlwdHMgYW5kIGRhdGEgZmlsZXMgdGhhdCBhcmUgbm90CisgICAgIyBjb3BpZWQgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gIFRoZXkgbXVzdCBiZSBjb3BpZWQgZnJvbSB0aGUKKyAgICAjIHNvdXJjZSBkaXJlY3RvcnkuIAorICAgIHNhdmVkX2Rpcj0kUFdECisgICAgZm9yIHBhcmVudF9kaXIgaW4gJHtTfSAke0J9IDsgZG8KKyAgICAgICAgY2QgJHBhcmVudF9kaXIKKworICAgICAgICAjIGV4Y2x1ZGUgc2hlbGwgb3IgdGhlIHBhY2thZ2Ugd29uJ3QgaW5zdGFsbAorICAgICAgICBybSAtcmYgbm9uZS90ZXN0cy9zaGVsbCogMj4vZGV2L251bGwKKworICAgICAgICBzdWJkaXJzPSJ0ZXN0cyBjYWNoZWdyaW5kL3Rlc3RzIGNhbGxncmluZC90ZXN0cyBkcmQvdGVzdHMgaGVsZ3JpbmQvdGVzdHMgbWFzc2lmL3Rlc3RzIG1lbWNoZWNrL3Rlc3RzIG5vbmUvdGVzdHMiCisKKyAgICAgICAgIyBHZXQgdGhlIHZnIHRlc3Qgc2NyaXB0cywgZmlsdGVycywgYW5kIGV4cGVjdGVkIGZpbGVzCisgICAgICAgIGZvciBkaXIgaW4gJHN1YmRpcnMgOyBkbworICAgICAgICAgICAgZmluZCAkZGlyIHwgY3BpbyAtcHZkdSAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBkb25lCisgICAgICAgIGNkICRzYXZlZF9kaXIKKyAgICBkb25lCisKKyAgICAjIGNsZWFuIG91dCBidWlsZCBhcnRpZmFjdHMgYmVmb3JlIGJ1aWxkaW5nIHRoZSBycG0KKyAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9IFwKKyAgICAgICAgIFwoIC1uYW1lICJNYWtlZmlsZSoiIFwKKyAgICAgICAgLW8gLW5hbWUgIioubyIgXAorICAgICAgICAtbyAtbmFtZSAiKi5jIiBcCisgICAgICAgIC1vIC1uYW1lICIqLlMiIFwKKyAgICAgICAgLW8gLW5hbWUgIiouaCIgXCkgXAorICAgICAgICAtZXhlYyBybSB7fSBcOworCisgICAgIyBuZWVkZWQgYnkgbWFzc2lmIHRlc3RzCisgICAgY3AgJHtCfS9tYXNzaWYvbXNfcHJpbnQgJHtEfSR7UFRFU1RfUEFUSH0vbWFzc2lmL21zX3ByaW50CisKKyAgICAjIGhhbmRsZSBtdWx0aWxpYgorICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTUwNTE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTUwNTE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzI2ZWJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE1MDUxNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiQUNQSUNBIHRvb2xzIGZvciB0aGUgZGV2ZWxvcG1lbnQgYW5kIGRlYnVnIG9mIEFDUEkgdGFibGVzIgotREVTQ1JJUFRJT04gPSAiVGhlIEFDUEkgQ29tcG9uZW50IEFyY2hpdGVjdHVyZSAoQUNQSUNBKSBwcm9qZWN0IHByb3ZpZGVzIGFuIFwKLU9TLWluZGVwZW5kZW50IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQgXAotUG93ZXIgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24gKEFDUEkpLiBBQ1BJQ0EgY29kZSBjb250YWlucyB0aG9zZSBwb3J0aW9ucyBvZiBcCi1BQ1BJIG1lYW50IHRvIGJlIGRpcmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgaG9zdCBPUyBhcyBhIGtlcm5lbC1yZXNpZGVudCBcCi1zdWJzeXN0ZW0sIGFuZCBhIHNtYWxsIHNldCBvZiB0b29scyB0byBhc3Npc3QgaW4gZGV2ZWxvcGluZyBhbmQgZGVidWdnaW5nIFwKLUFDUEkgdGFibGVzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hY3BpY2Eub3JnLyIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLQotTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dlbmVyYXRlL3VuaXgvcmVhZG1lLnR4dDttZDU9MjA0NDA3ZTE5N2MxYTAxMTU0YTQ4ZjZjNjI4MGMzYWEiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCi0KLURFUEVORFMgPSAiYmlzb24gZmxleCIKLQotU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4Mi0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9uby13ZXJyb3IucGF0Y2ggXAotICAgIGZpbGU6Ly9yZW5hbWUteXlfc2Nhbl9zdHJpbmctbWFudWFsbHkucGF0Y2ggXAotICAgIGZpbGU6Ly9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2ggXAotICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYmM0YTdjY2M4MmRlOWRmOWZhOTY0Zjc4NGVjYjI5YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MTIwNGVjNTZkNzFiYzliZmEyZWUyYWRlNGM2NmY3ZTg1NDE3NzJhYzcyZWY4Y2NjMjBiM2YzMzljYzk2Mzc0IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCi0KLVMgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peDItJHtQVn0iCi0KLUVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nICdPUFRfQ0ZMQUdTPS1XYWxsJyIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovaWFzbCAke0R9JHtiaW5kaXJ9L2lhc2wKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWJpbiAke0R9JHtiaW5kaXJ9L2FjcGliaW4KLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWV4ZWMgJHtEfSR7YmluZGlyfS9hY3BpZXhlYwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpaGVscCAke0R9JHtiaW5kaXJ9L2FjcGloZWxwCi0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGluYW1lcyAke0R9JHtiaW5kaXJ9L2FjcGluYW1lcwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3Bpc3JjICR7RH0ke2JpbmRpcn0vYWNwaXNyYwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpeHRyYWN0ICR7RH0ke2JpbmRpcn0vYWNwaXh0cmFjdAotfQotCi0jIGlhc2wqLmJiIGlzIGEgc3Vic2V0IG9mIHRoaXMgcmVjaXBlLCBzbyBSUkVQTEFDRSBpdAotUFJPVklERVMgPSAiaWFzbCIKLVJQUk9WSURFU18ke1BOfSArPSAiaWFzbCIKLVJSRVBMQUNFU18ke1BOfSArPSAiaWFzbCIKLVJDT05GTElHSFRTXyR7UE59ICs9ICJpYXNsIgotCi1OQVRJVkVfSU5TVEFMTF9XT1JLUyA9ICIxIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY4NTA1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIkFDUElDQSB0b29scyBmb3IgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1ZyBvZiBBQ1BJIHRhYmxlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBBQ1BJIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgKEFDUElDQSkgcHJvamVjdCBwcm92aWRlcyBhbiBcCitPUy1pbmRlcGVuZGVudCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFwKK1Bvd2VyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChBQ1BJKS4gQUNQSUNBIGNvZGUgY29udGFpbnMgdGhvc2UgcG9ydGlvbnMgb2YgXAorQUNQSSBtZWFudCB0byBiZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGhvc3QgT1MgYXMgYSBrZXJuZWwtcmVzaWRlbnQgXAorc3Vic3lzdGVtLCBhbmQgYSBzbWFsbCBzZXQgb2YgdG9vbHMgdG8gYXNzaXN0IGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBcCitBQ1BJIHRhYmxlcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCisKK0xJQ0VOU0UgPSAiQlNEIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nZW5lcmF0ZS91bml4L3JlYWRtZS50eHQ7bWQ1PTIwNDQwN2UxOTdjMWEwMTE1NGE0OGY2YzYyODBjM2FhIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgorCitERVBFTkRTID0gImJpc29uIGZsZXgiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peDItJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vbm8td2Vycm9yLnBhdGNoIFwKKyAgICBmaWxlOi8vcmVuYW1lLXl5X3NjYW5fc3RyaW5nLW1hbnVhbGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCisgICAgZmlsZTovLzAwMDEtTGludXgtYWRkLXN1cHBvcnQtZm9yLVgzMi1BQkktY29tcGlsYXRpb24ucGF0Y2ggXAorICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OGVmNDMxNGZiNGZmZGQwYzk2ZjE0ZGNmMjA1NDRlMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMmQ4MWU4NDEwN2FjOWEwMmJlODZlYTQzY2JlYTdhZmE4ZmQ0YjQxNTAyNzBiYzg4YzJkNGM5ZmVhMGI4YWFkIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCisKK1MgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peDItJHtQVn0iCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhY3BpeHRyYWN0IgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyAnT1BUX0NGTEFHUz0tV2FsbCciCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2lhc2wgJHtEfSR7YmluZGlyfS9pYXNsCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGliaW4gJHtEfSR7YmluZGlyfS9hY3BpYmluCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGlleGVjICR7RH0ke2JpbmRpcn0vYWNwaWV4ZWMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWhlbHAgJHtEfSR7YmluZGlyfS9hY3BpaGVscAorICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpbmFtZXMgJHtEfSR7YmluZGlyfS9hY3BpbmFtZXMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXNyYyAke0R9JHtiaW5kaXJ9L2FjcGlzcmMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXh0cmFjdCAke0R9JHtiaW5kaXJ9L2FjcGl4dHJhY3QKK30KKworIyBpYXNsKi5iYiBpcyBhIHN1YnNldCBvZiB0aGlzIHJlY2lwZSwgc28gUlJFUExBQ0UgaXQKK1BST1ZJREVTID0gImlhc2wiCitSUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCitSUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCitSQ09ORkxJR0hUU18ke1BOfSArPSAiaWFzbCIKKworTkFUSVZFX0lOU1RBTExfV09SS1MgPSAiMSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzL2FhcGl0cy1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0cy9hYXBpdHMtbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNWQ2YjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzL2FhcGl0cy1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzNiArMCwwIEBACi1Gcm9tOiBBbCBTdG9uZSA8YWhzM0BhaHMzLm5ldD4KLURhdGU6IE1vbiwgNyBBcHIgMjAxNCAxOTowOTozNyArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRml4dXAgYWFwaXRzIGJ1aWxkCi0KLUZyb20gaHR0cDovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS9hbC5zdG9uZS9hY3BpY2EtdG9vbHMuZ2l0Ci1VcHN0cmVhbS1zdGF0dXM6IFVua25vd24KLQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRleGVjLmMgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRleGVjLmMKLS0tLSBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0ZXhlYy5jCTIwMTMtMDEtMTcgMTI6NDg6MjguMDAwMDAwMDAwIC0wNzAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRleGVjLmMJMjAxMy0wNy0yNSAxMzo0NDoyMy4wMjM4OTQ0NDEgLTA2MDAKLUBAIC02MzksNiArNjM5LDcgQEAKLSB9Ci0gCi0gCi0rI2lmIEFDUElfTUFDSElORV9XSURUSCA9PSAzMgotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICoKLSAgKiBGVU5DVElPTjogICAgQXRCdWlsZExvY2FsUlNEVAotQEAgLTc1Nyw4ICs3NTgsOSBAQAotICAgICAgICAgTG9jYWxSU0RULT5IZWFkZXIuQ2hlY2tzdW0gPSAoVUlOVDgpfkxvY2FsUlNEVC0+SGVhZGVyLkNoZWNrc3VtOwotICAgICB9Ci0gfQotKyNlbmRpZgotIAotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICoKLSAgKiBGVU5DVElPTjogICAgQXRCdWlsZExvY2FsWFNEVAotQEAgLTE0MjQsNyArMTQyNiw3IEBACi0gICAgICAgICBBQ1BJX1dBUk5JTkcgKChBRV9JTkZPLAotICAgICAgICAgICAgICJSZXF1ZXN0IG9uIFslNC40c10gaXMgYmV5b25kIHJlZ2lvbiBsaW1pdCBSZXEtJVgrJVgsIEJhc2U9JVgsIExlbi0lWFxuIiwKLSAgICAgICAgICAgICAoUmVnaW9uT2JqZWN0LT5SZWdpb24uTm9kZSktPk5hbWUuQXNjaWksIChVSU5UMzIpIEFkZHJlc3MsCi0tICAgICAgICAgICAgQnl0ZVdpZHRoLCAoVUlOVDMyKSBCdWZmZXJBZGRyZXNzLCBMZW5ndGgpKTsKLSsgICAgICAgICAgICBCeXRlV2lkdGgsIChVSU5UMzIpIEJ1ZmZlckFkZHJlc3MsIChVSU5UMzIpIExlbmd0aCkpOwotIAotICAgICAgICAgcmV0dXJuIChBRV9BTUxfUkVHSU9OX0xJTUlUKTsKLSAgICAgfQotQEAgLTE3OTIsNyArMTc5Niw5IEBACi0gICAgICAgICAgICAgUGF0aCwgT2JqLkludGVnZXIuVmFsdWUsIFZhbHVlKTsKLSAjZWxzZQotICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBWYWx1ZSBvZiAlcyBpcyAweCVsbHggaW5zdGVhZCBvZiBleHBlY3RlZCAweCVsbHhcbiIsCi0tICAgICAgICAgICAgUGF0aCwgT2JqLkludGVnZXIuVmFsdWUsIFZhbHVlKTsKLSsgICAgICAgICAgICBQYXRoLAotKwkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIE9iai5JbnRlZ2VyLlZhbHVlLAotKwkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIFZhbHVlKTsKLSAjZW5kaWYKLSAgICAgICAgIFN0YXR1cyA9IEFFX0VSUk9SOwotICAgICB9Ci1AQCAtMTg3MSw3ICsxODc3LDcgQEAKLSAgICAgewotICAgICAgICAgVGVzdEVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiVGVzdCBFcnJvcjogY2Fubm90IGFsbG9jYXRlIGJ1ZmZlciBvZiAlZCBieXRlc1xuIiwKLS0gICAgICAgICAgICBSZXN1bHRzLkxlbmd0aCk7Ci0rICAgICAgICAgICAgICAgIChpbnQpIFJlc3VsdHMuTGVuZ3RoKTsKLSAgICAgICAgIHJldHVybiAoQUVfTk9fTUVNT1JZKTsKLSAgICAgfQotICAgICBSZXN1bHRzLlBvaW50ZXIgPSBPYmplY3Q7Ci1AQCAtMTk1Miw3ICsxOTU2LDggQEAKLSAgICAgewotICAgICAgICAgcHJpbnRmICgiQXRDaGVja0J1ZmZlcjogdW5leHBlY3RlZCBsZW5ndGggJWQgb2YgQnVmZmVyIHZzIgotICAgICAgICAgICAgICIgY2FsY3VsYXRlZCAlZCBieXRlc1xuIiwKLS0gICAgICAgICAgICBSZXN1bHRzLkxlbmd0aCwgQUNQSV9ST1VORF9VUF9UT19OQVRJVkVfV09SRChzaXplb2YgKEFDUElfT0JKRUNUKSArIExlbmd0aCkpOwotKyAgICAgICAgICAgIChpbnQpUmVzdWx0cy5MZW5ndGgsCi0rCSAgICAoaW50KShBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEKHNpemVvZiAoQUNQSV9PQkpFQ1QpICsgTGVuZ3RoKSkpOwotICAgICB9Ci0gCi0gICAgIC8qIEluaXRpYWxpemUgdGhlIHJldHVybiBidWZmZXIgc3RydWN0dXJlICovCi1AQCAtMTk2MSw3ICsxOTY4LDcgQEAKLSAgICAgewotICAgICAgICAgVGVzdEVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiVGVzdCBFcnJvcjogY2Fubm90IGFsbG9jYXRlIGJ1ZmZlciBvZiAlZCBieXRlc1xuIiwKLS0gICAgICAgICAgICBSZXN1bHRzLkxlbmd0aCk7Ci0rICAgICAgICAgICAgKGludCkgUmVzdWx0cy5MZW5ndGgpOwotICAgICAgICAgcmV0dXJuIChBRV9OT19NRU1PUlkpOwotICAgICB9Ci0gICAgIFJlc3VsdHMuUG9pbnRlciA9IE9iamVjdDsKLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0aW5pdC5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0aW5pdC5jCi0tLS0gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9hdGluaXQuYwkyMDEzLTAxLTE3IDEyOjQ4OjI4LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0aW5pdC5jCTIwMTMtMDctMjUgMTM6MjA6MTkuNzA2NzA1OTYwIC0wNjAwCi1AQCAtMzAyNCw3ICszMDI0LDcgQEAKLSAgICAgICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0U3lzdGVtSW5mbygpIHJldHVybmVkIgotICAgICAgICAgICAgICAgICAiIExlbmd0aCAlZCwgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgICAgIE91dEJ1ZmZlci5MZW5ndGgsIHNpemVvZiAoSW5mbykpOwotKyAgICAgICAgICAgICAgICAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCAoaW50KSBzaXplb2YgKEluZm8pKTsKLSAgICAgICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgICAgIH0KLSAKLUBAIC0zMDQ2LDcgKzMwNDYsNyBAQAotICAgICAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRTeXN0ZW1JbmZvKCkgcmV0dXJuZWQiCi0gICAgICAgICAgICAgICAgICIgTGVuZ3RoICVkLCBleHBlY3RlZCAlZFxuIiwKLS0gICAgICAgICAgICAgICAgT3V0QnVmZmVyLkxlbmd0aCwgc2l6ZW9mIChJbmZvKSk7Ci0rICAgICAgICAgICAgICAgIChpbnQpIE91dEJ1ZmZlci5MZW5ndGgsIChpbnQpIHNpemVvZiAoSW5mbykpOwotICAgICAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICAgICAgfQotIAotQEAgLTMwNjYsNyArMzA2Niw3IEBACi0gICAgICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWNwaUdldFN5c3RlbUluZm8oKSByZXR1cm5lZCIKLSAgICAgICAgICAgICAgICAgIiBMZW5ndGggJWQsIGV4cGVjdGVkICVkXG4iLAotLSAgICAgICAgICAgICAgICBPdXRCdWZmZXIuTGVuZ3RoLCBzaXplb2YgKEluZm8pKTsKLSsgICAgICAgICAgICAgICAgKGludCkgT3V0QnVmZmVyLkxlbmd0aCwgKGludCkgc2l6ZW9mIChJbmZvKSk7Ci0gICAgICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlIGlmIChPdXRCdWZmZXIuUG9pbnRlciAhPSAmSW5mbykKLUBAIC0zMTQ5LDcgKzMxNDksNyBAQAotICAgICAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRTeXN0ZW1JbmZvKCkgcmV0dXJuZWQiCi0gICAgICAgICAgICAgICAgICIgTGVuZ3RoICVkLCBleHBlY3RlZCAlZFxuIiwKLS0gICAgICAgICAgICAgICAgT3V0QnVmZmVyLkxlbmd0aCwgc2l6ZW9mIChJbmZvKSk7Ci0rICAgICAgICAgICAgICAgIChpbnQpIE91dEJ1ZmZlci5MZW5ndGgsIChpbnQpIHNpemVvZiAoSW5mbykpOwotICAgICAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZSBpZiAoT3V0QnVmZmVyLlBvaW50ZXIgIT0gJkluZm8pCi1AQCAtMzIxNCw3ICszMjE0LDcgQEAKLSAgICAgICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0U3lzdGVtSW5mbygpIHJldHVybmVkIgotICAgICAgICAgICAgICAgICAiIExlbmd0aCAlZCwgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgICAgIE91dEJ1ZmZlci5MZW5ndGgsIHNpemVvZiAoQUNQSV9TWVNURU1fSU5GTykpOwotKyAgICAgICAgICAgICAgICAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCAoaW50KSBzaXplb2YgKEFDUElfU1lTVEVNX0lORk8pKTsKLSAgICAgICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0bWFpbi5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0bWFpbi5jCi0tLS0gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9hdG1haW4uYwkyMDEzLTAxLTE3IDEyOjQ4OjI4LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0bWFpbi5jCTIwMTMtMDctMjUgMTM6MTg6MjIuMDgzMzIzOTQ4IC0wNjAwCi1AQCAtMzE1LDcgKzMxNSw3IEBACi0gICAgIHsKLSAgICAgICAgIHByaW50ZiAoIkFDUElDQSBBUEkgVFMgZXJyOiB0ZXN0IG51bSAlbGQgb2YgdGVzdCBjYXNlICVsZCIKLSAgICAgICAgICAgICAiIGlzIG5vdCBpbXBsZW1lbnRlZFxuIiwKLS0gICAgICAgICAgICB0ZXN0X251bSwgdGVzdF9jYXNlKTsKLSsgICAgICAgICAgICAobG9uZyBpbnQpIHRlc3RfbnVtLCAobG9uZyBpbnQpIHRlc3RfY2FzZSk7Ci0gICAgICAgICByZXR1cm4gKEF0UmV0Tm90SW1wbCk7Ci0gICAgIH0KLSAKLUBAIC00MzAsNyArNDMyLDcgQEAKLSAgICAgaWYgKHRlc3RfY2FzZSA8IDEgfHwgdGVzdF9jYXNlID4gQVRfVEVTVF9DQVNFX05VTSkKLSAgICAgewotICAgICAgICAgcHJpbnRmICgiQUNQSUNBIEFQSSBUUyBlcnI6IHRlc3QgY2FzZSAlbGQgaXMgb3V0IG9mIHJhbmdlIDEgLSAlZFxuIiwKLS0gICAgICAgICAgICB0ZXN0X2Nhc2UsIEFUX1RFU1RfQ0FTRV9OVU0pOwotKyAgICAgICAgICAgIChsb25nIGludCkgdGVzdF9jYXNlLCAoaW50KSBBVF9URVNUX0NBU0VfTlVNKTsKLSAgICAgICAgIHJldHVybiAoQXRSZXRCYWRQYXJhbSk7Ci0gICAgIH0KLSAKLUBAIC00MzgsNyArNDQwLDcgQEAKLSAgICAgaWYgKHRlc3RfbnVtIDwgMCB8fCB0ZXN0X251bSA+IEF0VGVzdENhc2VbdGVzdF9jYXNlXS5UZXN0c051bSkKLSAgICAgewotICAgICAgICAgcHJpbnRmICgiQUNQSUNBIEFQSSBUUyBlcnI6IHRlc3QgbnVtICVsZCBpcyBvdXQgb2YgcmFuZ2UgMCAtICVkXG4iLAotLSAgICAgICAgICAgIHRlc3RfbnVtLCBBdFRlc3RDYXNlW3Rlc3RfY2FzZV0uVGVzdHNOdW0pOwotKyAgICAgICAgICAgIChsb25nIGludCkgdGVzdF9udW0sIEF0VGVzdENhc2VbdGVzdF9jYXNlXS5UZXN0c051bSk7Ci0gICAgICAgICByZXR1cm4gKEF0UmV0QmFkUGFyYW0pOwotICAgICB9Ci0KLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0bmFtZXNwYWNlLmMgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRuYW1lc3BhY2UuYwotLS0tIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRuYW1lc3BhY2UuYwkyMDEzLTAxLTE3IDEyOjQ4OjI4LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0bmFtZXNwYWNlLmMJMjAxMy0wNy0yNSAxMzoyNDoxNS4zNjY0NjY3MDcgLTA2MDAKLUBAIC0yNTM1LDcgKzI1MzUsOCBAQAotICNlbHNlCi0gICAgICAgICAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWRkcmVzcyBvZiAlcyAoMHglbGxYKSAhPSAoMHglbGxYKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIFBhdGhOYW1lc1syICogaSArIDFdLAotLSAgICAgICAgICAgICAgICAgICAgSW5mby0+QWRkcmVzcywgRXhwZWN0ZWRJbmZvW2ldLkFkZHJlc3MpOwotKyAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIEluZm8tPkFkZHJlc3MsCi0rCQkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIEV4cGVjdGVkSW5mb1tpXS5BZGRyZXNzKTsKLSAjZW5kaWYKLSAjZWxzZQotICAgICAgICAgICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFkZHJlc3Mgb2YgJXMgKDB4JVgpICE9ICgweCVYKVxuIiwKLUBAIC0yOTA4LDcgKzI5MDksOCBAQAotICAgICAgICAgVGVzdEVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQXRHZXROZXh0T2JqZWN0VHlwZUNvbW1vbjogZGlmZmVyZW50IG51bWJlcnMgb2YgZW50aXRpZXMiCi0gICAgICAgICAgICAgImluIFR5cGVzTmFtZXMgKCVkKSBhbmQgTGV2ZWxUeXBlczAwMDAgKCVkKVxuIiwKLS0gICAgICAgICAgICBUeXBlc0NvdW50LCBzaXplb2YgKExldmVsVHlwZXMwMDAwKSAvIHNpemVvZiAoQUNQSV9PQkpFQ1RfVFlQRSkpOwotKyAgICAgICAgICAgIFR5cGVzQ291bnQsCi0rCSAgICAoaW50KSAoc2l6ZW9mIChMZXZlbFR5cGVzMDAwMCkgLyBzaXplb2YgKEFDUElfT0JKRUNUX1RZUEUpKSk7Ci0gICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgfQotIAotQEAgLTQxOTIsNyArNDE5NCw5IEBACi0gICAgICAgICAgICAgUGF0aG5hbWUsIE9iai5JbnRlZ2VyLlZhbHVlLCBWYWx1ZSk7Ci0gI2Vsc2UKLSAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogVmFsdWUgb2YgJXMgaXMgMHglbGx4IGluc3RlYWQgb2YgZXhwZWN0ZWQgMHglbGx4XG4iLAotLSAgICAgICAgICAgIFBhdGhuYW1lLCBPYmouSW50ZWdlci5WYWx1ZSwgVmFsdWUpOwotKyAgICAgICAgICAgIFBhdGhuYW1lLAotKwkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIE9iai5JbnRlZ2VyLlZhbHVlLAotKwkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIFZhbHVlKTsKLSAjZW5kaWYKLSAgICAgICAgIFN0YXR1cyA9IEFFX0VSUk9SOwotICAgICB9Ci1AQCAtNTE5OSw3ICs1MjAzLDcgQEAKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpT3NBbGxvY2F0ZSglZCkgcmV0dXJuZWQgTlVMTFxuIiwKLS0gICAgICAgICAgICAgICAgICAgIE91dE5hbWUuTGVuZ3RoKTsKLSsgICAgICAgICAgICAgICAgICAgIChpbnQpIE91dE5hbWUuTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRvc3hmY3RybC5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0b3N4ZmN0cmwuYwotLS0tIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRvc3hmY3RybC5jCTIwMTMtMDEtMTcgMTI6NDg6MjguMDAwMDAwMDAwIC0wNzAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRvc3hmY3RybC5jCTIwMTMtMDctMjUgMTM6MzA6MDAuMzc1NDkyNzUxIC0wNjAwCi1AQCAtNzM3LDEzICs3MzcsMTUgQEAKLSAjaWYgQUNQSV9NQUNISU5FX1dJRFRIID09IDY0Ci0gI2lmZGVmICAgIF9NU0NfVkVSCi0gICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogdW5leHBlY3RlZCBXaWR0aCAlZCBvZiBSZWcgMHglSTY0eFxuIiwKLSsgICAgICAgICAgICBXaWR0aCwgQWRkcmVzcyk7Ci0gI2Vsc2UKLSAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiB1bmV4cGVjdGVkIFdpZHRoICVkIG9mIFJlZyAweCVsbHhcbiIsCi0rICAgICAgICAgICAgV2lkdGgsIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBBZGRyZXNzKTsKLSAjZW5kaWYKLSAjZWxzZQotICAgICAgICAgcHJpbnRmKCJPc3hmQ3RybEZpbmdSZWc6IHVuZXhwZWN0ZWQgV2lkdGggJWQgb2YgUmVnIDB4JXhcbiIsCi0tI2VuZGlmCi0gICAgICAgICAgICAgV2lkdGgsIEFkZHJlc3MpOwotKyNlbmRpZgotICAgICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICAgfQotIAotQEAgLTc2NCwxNSArNzY2LDE5IEBACi0gI2lmZGVmICAgIF9NU0NfVkVSCi0gICAgICAgICAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiBpbnRlcnNlY3Rpb24gUmVncyAoMHglSTY0eDogMHgleCkiCi0gICAgICAgICAgICAgICAgICAgICAiIGFuZCAoMHglSTY0eDogMHgleClcbiIsCi0rICAgICAgICAgICAgICAgICAgICBSZWctPkFkZHJlc3MsIFJlZy0+V2lkdGgsIEFkZHJlc3MsIFdpZHRoKTsKLSAjZWxzZQotICAgICAgICAgICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogaW50ZXJzZWN0aW9uIFJlZ3MgKDB4JWxseDogMHgleCkiCi0gICAgICAgICAgICAgICAgICAgICAiIGFuZCAoMHglbGx4OiAweCV4KVxuIiwKLSsgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBSZWctPkFkZHJlc3MsCi0rCQkgICAgUmVnLT5XaWR0aCwKLSsJCSAgICAobG9uZyBsb25nIHVuc2lnbmVkIGludCkgQWRkcmVzcywgV2lkdGgpOwotICNlbmRpZgotICNlbHNlCi0gICAgICAgICAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiBpbnRlcnNlY3Rpb24gUmVncyAoMHgleDogMHgleCkiCi0gICAgICAgICAgICAgICAgICAgICAiIGFuZCAoMHgleDogMHgleClcbiIsCi0tI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICBSZWctPkFkZHJlc3MsIFJlZy0+V2lkdGgsIEFkZHJlc3MsIFdpZHRoKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci1AQCAtNzg2LDEzICs3OTIsMTUgQEAKLSAjaWYgQUNQSV9NQUNISU5FX1dJRFRIID09IDY0Ci0gI2lmZGVmICAgIF9NU0NfVkVSCi0gICAgICAgICAgICAgcHJpbnRmKCJPc3hmQ3RybEZpbmdSZWc6IG5vIG1lbW9yeSBmb3IgUmVnICgweCVJNjR4OiAweCV4KVxuIiwKLSsgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoKTsKLSAjZWxzZQotICAgICAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiBubyBtZW1vcnkgZm9yIFJlZyAoMHglbGx4OiAweCV4KVxuIiwKLSsgICAgICAgICAgICAgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIFJlZy0+QWRkcmVzcywgUmVnLT5XaWR0aCk7Ci0gI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogbm8gbWVtb3J5IGZvciBSZWcgKDB4JXg6IDB4JXgpXG4iLAotLSNlbmRpZgotICAgICAgICAgICAgICAgICBSZWctPkFkZHJlc3MsIFJlZy0+V2lkdGgpOwotKyNlbmRpZgotICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBSZWctPlR5cGUgPSBUeXBlOwotQEAgLTkzMiwxNCArOTQwLDE5IEBACi0gI2lmIEFDUElfTUFDSElORV9XSURUSCA9PSA2NAotICNpZmRlZiAgICBfTVNDX1ZFUgotICAgICAgICAgICAgIHByaW50ZigiJS4ydSAoJXMgQWRkcmVzcyAweCVJNjR4OiBXaWR0aCAlLjJ1KSByL3cgY291bnRzOiAldS8ldVxuIiwKLSsgICAgICAgICAgICAgICAgaSwgKFJlZy0+VHlwZSA9PSBFTVVMX1JFR19TWVMpPyAiU1lTIjogIklPIiwKLSsgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoLCBSZWctPlJlYWRDb3VudCwgUmVnLT5Xcml0ZUNvdW50KTsKLSAjZWxzZQotICAgICAgICAgICAgIHByaW50ZigiJS4ydSAoJXMgQWRkcmVzcyAweCVsbHg6IFdpZHRoICUuMnUpIHIvdyBjb3VudHM6ICV1LyV1XG4iLAotKyAgICAgICAgICAgICAgICBpLCAoUmVnLT5UeXBlID09IEVNVUxfUkVHX1NZUyk/ICJTWVMiOiAiSU8iLAotKyAgICAgICAgICAgICAgICAobG9uZyBsb25nIHVuc2lnbmVkIGludCkgUmVnLT5BZGRyZXNzLAotKwkJUmVnLT5XaWR0aCwgUmVnLT5SZWFkQ291bnQsIFJlZy0+V3JpdGVDb3VudCk7Ci0gI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgICBwcmludGYoIiUuMnUgKCVzIEFkZHJlc3MgMHglLjR4OiBXaWR0aCAlLjJ1KSByL3cgY291bnRzOiAldS8ldVxuIiwKLS0jZW5kaWYKLSAgICAgICAgICAgICAgICAgaSwgKFJlZy0+VHlwZSA9PSBFTVVMX1JFR19TWVMpPyAiU1lTIjogIklPIiwKLSAgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoLCBSZWctPlJlYWRDb3VudCwgUmVnLT5Xcml0ZUNvdW50KTsKLSsjZW5kaWYKLSAgICAgICAgICAgICBSZWcgPSBSZWctPk5leHQ7Ci0gICAgICAgICAgICAgaSsrOwotICAgICAgICAgfQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRyZXNvdXJjZS5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0cmVzb3VyY2UuYwotLS0tIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRyZXNvdXJjZS5jCTIwMTMtMDEtMTcgMTI6NDg6MjkuMDAwMDAwMDAwIC0wNzAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRyZXNvdXJjZS5jCTIwMTMtMDctMjUgMTM6MjU6NDkuNDIzNTY1OTQ3IC0wNjAwCi1AQCAtMTc0LDcgKzE3NCw3IEBACi0gICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRDdXJyZW50UmVzb3VyY2VzKCVzKSByZXR1cm5lZCBMZW5ndGggJWQsIgotICAgICAgICAgICAgICIgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgUGF0aG5hbWUsIE91dEJ1ZmZlci5MZW5ndGgsIFJUMDAwMF9ERVYwX0NSU19MRU4pOwotKyAgICAgICAgICAgIFBhdGhuYW1lLCAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCBSVDAwMDBfREVWMF9DUlNfTEVOKTsKLSAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICB9Ci0gCi1AQCAtNDkwLDcgKzQ5MCw3IEBACi0gICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRDdXJyZW50UmVzb3VyY2VzKCVzKSByZXR1cm5lZCBMZW5ndGggJWQsIgotICAgICAgICAgICAgICIgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgUGF0aG5hbWUsIE91dEJ1ZmZlci5MZW5ndGgsIFJUMDAwMF9ERVYwX0NSU19MRU4pOwotKyAgICAgICAgICAgIFBhdGhuYW1lLCAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCBSVDAwMDBfREVWMF9DUlNfTEVOKTsKLSAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICB9Ci0gCi1AQCAtNjg5LDcgKzY4OSw3IEBACi0gICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICBwcmludGYgKCJBcGkgRXJyb3I6IFJlc291cmNlLT5MZW5ndGggKCVkKSAhPSAlZFxuIiwKLSAgICAgICAgICAgICBDdXJyZW50UmVzb3VyY2UtPkxlbmd0aCwKLS0gICAgICAgICAgICBBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEIChBQ1BJX1JTX1NJWkUgKEFDUElfUkVTT1VSQ0VfSVJRKSkpOwotKyAgICAgICAgICAgIChpbnQpIChBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEIChBQ1BJX1JTX1NJWkUgKEFDUElfUkVTT1VSQ0VfSVJRKSkpKTsKLSAgICAgfQotIAotICAgICBpZiAoQ3VycmVudFJlc291cmNlLT5EYXRhLklycS5UcmlnZ2VyaW5nICE9IDApIC8qIExldmVsLVRyaWdnZXJlZCAqLwotQEAgLTk4MSw3ICs5ODEsNyBAQAotICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0UG9zc2libGVSZXNvdXJjZXMoJXMpIHJldHVybmVkIExlbmd0aCAlZCwiCi0gICAgICAgICAgICAgIiBleHBlY3RlZCAlZFxuIiwKLS0gICAgICAgICAgICBQYXRobmFtZSwgT3V0QnVmZmVyLkxlbmd0aCwgUlQwMDAwX0RFVjBfQ1JTX0xFTik7Ci0rICAgICAgICAgICAgUGF0aG5hbWUsIChpbnQpIE91dEJ1ZmZlci5MZW5ndGgsIFJUMDAwMF9ERVYwX0NSU19MRU4pOwotICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgIH0KLSAKLUBAIC0xOTIzLDcgKzE5MjMsNyBAQAotICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0SXJxUm91dGluZ1RhYmxlKCVzKSByZXR1cm5lZCBMZW5ndGggJWQsIgotICAgICAgICAgICAgICIgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgUGF0aG5hbWUsIE91dEJ1ZmZlci5MZW5ndGgsIDB4QTQ4KTsKLSsgICAgICAgICAgICBQYXRobmFtZSwgKGludCkgT3V0QnVmZmVyLkxlbmd0aCwgMHhBNDgpOwotICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgIH0KLQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvTWFrZWZpbGUgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvTWFrZWZpbGUKLS0tLSBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL01ha2VmaWxlCTIwMTMtMDEtMTcgMTI6NDg6MjkuMDAwMDAwMDAwIC0wNzAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvTWFrZWZpbGUJMjAxMy0wNy0yNSAxNToxNzowOS4zMDkyMzY0MjIgLTA2MDAKLUBAIC0xOTQsNyArMTk0LDcgQEAKLSBDRkxBR1MrPSAtV2FsbCAtZyAtRF9MSU5VWCAtRE5ERUJVRyAtRF9DT05TT0xFIC1EQUNQSV9BUElUUyAtREFDUElfRVhFQ19BUFAgLURfTVVMVElfVEhSRUFERUQgLVdzdHJpY3QtcHJvdG90eXBlcyAtSS4uLy4uL3NvdXJjZS9pbmNsdWRlCi0KLSAKLS1hY3BpZXhlYyA6ICQocGF0c3Vic3QgJS5jLCUubywgJChTUkNTKSkKLSskKFBST0cpIDogJChwYXRzdWJzdCAlLmMsJS5vLCAkKFNSQ1MpKQotIAkkKENDKSAkKExERkxBR1MpICQocGF0c3Vic3QgJS5jLCUubywgJChTUkNTKSkgLW8gJChQUk9HKQotIAotIENMRUFORklMRVM9ICQoUFJPRykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0cy9hYXBpdHMtbWFrZWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHMvYWFwaXRzLW1ha2VmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDllOTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0cy9hYXBpdHMtbWFrZWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tOiBBbCBTdG9uZSA8YWhzM0BhaHMzLm5ldD4KLURhdGU6IE1vbiwgNyBBcHIgMjAxNCAxOTowOTozNyArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRml4dXAgYWFwaXRzIGJ1aWxkCi0KLUZyb20gaHR0cDovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS9hbC5zdG9uZS9hY3BpY2EtdG9vbHMuZ2l0Ci1VcHN0cmVhbS1zdGF0dXM6IFVua25vd24KLQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDE0MDMyNS90ZXN0cy9hYXBpdHMvTWFrZWZpbGUgYWNwaWNhLXVuaXgyLTIwMTQwMzI1L3Rlc3RzL2FhcGl0cy9NYWtlZmlsZQotLS0tIGFjcGljYS11bml4Mi0yMDE0MDMyNS90ZXN0cy9hYXBpdHMvTWFrZWZpbGUJMjAxNC0wNC0wNSAxNDoyMzoxNC42ODM2MzY3OTQgLTA2MDAKLSsrKyBhY3BpY2EtdW5peDItMjAxNDAzMjUtYWFwaXRzL3Rlc3RzL2FhcGl0cy9NYWtlZmlsZQkyMDE0LTA0LTA1IDE1OjEwOjU3Ljg3OTE4NDU5OCAtMDYwMAotQEAgLTE2LDYgKzE2LDcgQEAKLSAJYXRvc3hmd3JhcC5jIFwKLSAJb3N1bml4eGYuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21tb24vYWhpZHMuYyBcCi0rCS4uLy4uL3NvdXJjZS9jb21tb24vYWh1dWlkcy5jIFwKLSAJLi4vLi4vc291cmNlL2NvbW1vbi9jbWZzaXplLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tbW9uL2dldG9wdC5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvaGFyZHdhcmUvaHd0aW1lci5jIFwKLUBAIC0xNzQsNiArMTc1LDcgQEAKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0ZXhjZXAuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dGZpbGVpby5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0Z2xvYmFsLmMgXAotKwkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXRoZXguYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dGlkcy5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0aW5pdC5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0bG9jay5jIFwKLUBAIC0xODksNiArMTkxLDcgQEAKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0c3RhdGUuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dHN0cmluZy5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0dHJhY2suYyBcCi0rCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dHV1aWQuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dHhmYWNlLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXR4ZmVycm9yLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXR4ZmluaXQuYyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHNfMjAxNDA4MjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHNfMjAxNDA4MjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YWMxNTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzXzIwMTQwODI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXN0IHN1aXRlIHVzZWQgdG8gdmFsaWRhdGUgQUNQSUNBIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hY3BpY2Eub3JnLyIKLQotTElDRU5TRSA9ICJJbnRlbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rlc3RzL2FhcGl0cy9hdGV4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTExNTttZDU9ZTkyYmNkZmNkMDFkMTE3ZDFiZGEzZTgxNGJiMjAzMGEiCi0KLURFUEVORFMgPSAiYmlzb24gZmxleCIKLQotU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGl0ZXN0cy11bml4LSR7UFZ9LnRhci5nejtuYW1lPWFjcGl0ZXN0cyBcCi0gICAgICAgICAgIGh0dHBzOi8vYWNwaWNhLm9yZy9zaXRlcy9hY3BpY2EvZmlsZXMvYWNwaWNhLXVuaXgyLSR7UFZ9LnRhci5nejtuYW1lPWFjcGljYSBcCi0gICAgICAgICAgIGZpbGU6Ly9hYXBpdHMtbGludXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWFwaXRzLW1ha2VmaWxlLnBhdGNoIFwKLSIKLVNSQ19VUklbYWNwaXRlc3RzLm1kNXN1bV0gPSAiZGI5ZDZmZGFhOGUzZWIxMDFkNzAwZWU1YmE0OTM4ZWQiCi1TUkNfVVJJW2FjcGl0ZXN0cy5zaGEyNTZzdW1dID0gImU1NzZjNzRiZjFiZjFjOWY3MzQ4YmY5NDE5ZTA1YzhhY2ZlY2U3MTA1YWJjZGMwNTJlNjY2NzBjN2FmMmNmMDAiCi1TUkNfVVJJW2FjcGljYS5tZDVzdW1dID0gIjZmMDVmMGQxMDE2NmExYjFmZjYxMDdmM2QxY2RmMWU1IgotU1JDX1VSSVthY3BpY2Euc2hhMjU2c3VtXSA9ICIwMWQ4ODY3NjU2YzViYTQxZGVjMzA3YzQzODNjZTY3NjE5NmFkNDI4MWFjMmM5ZGVjOWY1YmU1ZmFjNmQ4ODhlIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCi0KLVMgPSAiJHtXT1JLRElSfS9hY3BpdGVzdHMtdW5peC0ke1BWfSIKLQotRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfScgJ09QVF9DRkxBR1M9LVdhbGwnIgotCi0jIFRoZSBNYWtlZmlsZXMgZXhwZWN0IGEgc3BlY2lmaWMgbGF5b3V0Ci1kb19jb21waWxlKCkgewotICAgIGNwIC1hZiAke1dPUktESVJ9L2FjcGljYS11bml4Mi0ke1BWfS9zb3VyY2UgJHtTfQotICAgIGNkIHRlc3RzL2FhcGl0cwotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tMDc1NSB0ZXN0cy9hYXBpdHMvYmluL2FhcGl0cyAke0R9JHtiaW5kaXJ9Ci19Ci0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvMDAwMS1MaW51eC1hZGQtc3VwcG9ydC1mb3ItWDMyLUFCSS1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjc0MjAwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvMDAwMS1MaW51eC1hZGQtc3VwcG9ydC1mb3ItWDMyLUFCSS1jb21waWxhdGlvbi5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGQyMjI0MWVmYzA3MDhjOTc5OWYxN2EyMGVhYmI1MmE0OGQ2ZDZlYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyIEphbiAyMDE4IDEyOjM1OjMyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIExpbnV4OiBhZGQgc3VwcG9ydCBmb3IgWDMyIEFCSSBjb21waWxhdGlvbgorCitYMzIgZm9sbG93cyBJTFAzMiBtb2RlbC4gQ2hlY2sgZm9yIElMUDMyIGFzIHdlbGwgd2hlbiBjaGVja2luZyBmb3IKK3g4Nl82NCB0byBlbnN1cmUgdGhlIGRlZmluZXMgYXJlIGNvcnJlY3QgZm9yIFgzMiBBQkkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYWNwaWNhL2FjcGljYS9wdWxsLzM0OF0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIHNvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaCBiL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaAoraW5kZXggNzViMWQ4Mi4uNmI4ZmY3MyAxMDA2NDQKKy0tLSBhL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaAorKysrIGIvc291cmNlL2luY2x1ZGUvcGxhdGZvcm0vYWNsaW51eC5oCitAQCAtMzE1LDcgKzMxNSw3IEBACisgI2RlZmluZSBBQ1BJX0ZMVVNIX0NQVV9DQUNIRSgpCisgI2RlZmluZSBBQ1BJX0NBU1RfUFRIUkVBRF9UKFB0aHJlYWQpICgoQUNQSV9USFJFQURfSUQpIChQdGhyZWFkKSkKKyAKKy0jaWYgZGVmaW5lZChfX2lhNjRfXykgICAgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fFwKKysjaWYgZGVmaW5lZChfX2lhNjRfXykgICAgfHwgKGRlZmluZWQoX194ODZfNjRfXykgJiYgIWRlZmluZWQoX19JTFAzMl9fKSkgfHxcCisgICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fFwKKyAgICAgZGVmaW5lZChfX3MzOTB4X18pCisgI2RlZmluZSBBQ1BJX01BQ0hJTkVfV0lEVEggICAgICAgICAgNjQKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoCmluZGV4IDY5NDRiYjcuLjU2MTBlZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIDMzYTU3OTc5NzM4ZTVhYjEzOTUwZWMxYzBlNzI5OGU0MWVmNTA5MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIzIEZlYiAyMDE3IDE4OjEwOjQ3ICswMTAwCitGcm9tIDY5MTcxYzIyZjM4NzJlY2I0YzFhYjI3OTg1ZTkzY2E0NDA4NDU5NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorRGF0ZTogTW9uLCA1IEp1biAyMDE3IDEzOjI2OjM4ICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIGFzbGZpbGVzLmM6IG1hbmlwdWxhdGUgZmRzIGluc3RlYWQgb2YgRklMRQogCiBDb3B5aW5nIHdoYXQgc3Rkb3V0L3N0ZGVyciBwb2ludCB0byBpcyBub3QgcG9ydGFibGUgYW5kIGZhaWxzIHdpdGgKQEAgLTEyLDYwICsxMiw2MSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMgfCAyMCArKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMgYi9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYwotaW5kZXggOTQ3ZTQ2NS4uN2EzNTJiNCAxMDA2NDQKLS0tLSBhL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCi0rKysgYi9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYwotQEAgLTQ0LDYgKzQ0LDExIEBACitSZWJhc2Ugb24gYWNwaWNhIDIwMTcwMzAzCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CistLS0KKyBhY3BpY2EtdW5peDItMjAxNzAzMDMvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMgfCAxNCArKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jIGIvYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCitpbmRleCA4MDkwOTBjLi45Nzg5OGIxIDEwMDY0NAorLS0tIGEvYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCisrKysgYi9hY3BpY2EtdW5peDItMjAxNzAzMDMvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMKK0BAIC00NCw2ICs0NCwxMCBAQAogICNpbmNsdWRlICJhc2xjb21waWxlci5oIgogICNpbmNsdWRlICJhY2FwcHMuaCIKLSAKKyAjaW5jbHVkZSAiZHRjb21waWxlci5oIgogKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICsjaW5jbHVkZSA8ZmNudGwuaD4KICsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rCisgCiAgI2RlZmluZSBfQ09NUE9ORU5UICAgICAgICAgIEFDUElfQ09NUElMRVIKICAgICAgICAgIEFDUElfTU9EVUxFX05BTUUgICAgKCJhc2xmaWxlcyIpCi0gCi1AQCAtNTY5LDYgKzU3NCw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCitAQCAtNjA3LDYgKzYxMSw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCiAgCiAgICAgIGlmIChHYmxfRGVidWdGbGFnKQogICAgICB7Ci0rICAgICAgICBpbnQgZmQ7CisrCWludCBmZDsKICsKICAgICAgICAgIEZpbGVuYW1lID0gRmxHZW5lcmF0ZUZpbGVuYW1lIChGaWxlbmFtZVByZWZpeCwgRklMRV9TVUZGSVhfREVCVUcpOwogICAgICAgICAgaWYgKCFGaWxlbmFtZSkKICAgICAgICAgIHsKLUBAIC01ODIsMjAgKzU4OSwxNSBAQCBGbE9wZW5NaXNjT3V0cHV0RmlsZXMgKAotICAgICAgICAgLyogVEJEOiBoaWRlIHRoaXMgYmVoaW5kIGEgRmxSZW9wZW5GaWxlIGZ1bmN0aW9uICovCitAQCAtNjE4LDEwICs2MjQsMTAgQEAgRmxPcGVuTWlzY091dHB1dEZpbGVzICgKKyAgICAgICAgIC8qIE9wZW4gdGhlIGRlYnVnIGZpbGUgYXMgU1RERVJSLCB0ZXh0IG1vZGUgKi8KICAKICAgICAgICAgIEdibF9GaWxlc1tBU0xfRklMRV9ERUJVR19PVVRQVVRdLkZpbGVuYW1lID0gRmlsZW5hbWU7CiAtICAgICAgICBHYmxfRmlsZXNbQVNMX0ZJTEVfREVCVUdfT1VUUFVUXS5IYW5kbGUgPQogLSAgICAgICAgICAgIGZyZW9wZW4gKEZpbGVuYW1lLCAidyt0Iiwgc3RkZXJyKTsKLS0KKyAKIC0gICAgICAgIGlmICghR2JsX0ZpbGVzW0FTTF9GSUxFX0RFQlVHX09VVFBVVF0uSGFuZGxlKQogKyAgICAgICAgZmQgPSBvcGVuKEZpbGVuYW1lLCBPX0NSRUFUfE9fVFJVTkMsIFNfSVJVU1J8U19JV1VTUnxTX0lSR1JQfFNfSVdHUlB8U19JUk9USHxTX0lXT1RIKTsKICsgICAgICAgIGlmIChmZCA8IDAgfHwKICsgICAgICAgICAgICBkdXAyKGZkLCBmaWxlbm8oc3RkZXJyKSkpCiAgICAgICAgICB7Ci0tICAgICAgICAgICAgLyoKLS0gICAgICAgICAgICAgKiBBIHByb2JsZW0gd2l0aCBmcmVvcGVuIGlzIHRoYXQgb24gZXJyb3IsCi0tICAgICAgICAgICAgICogd2Ugbm8gbG9uZ2VyIGhhdmUgc3RkZXJyLgotLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgIEdibF9EZWJ1Z0ZsYWcgPSBGQUxTRTsKLS0gICAgICAgICAgICBtZW1jcHkgKHN0ZGVyciwgc3Rkb3V0LCBzaXplb2YgKEZJTEUpKTsKLSAgICAgICAgICAgICBGbEZpbGVFcnJvciAoQVNMX0ZJTEVfREVCVUdfT1VUUFVULCBBU0xfTVNHX0RFQlVHX0ZJTEVOQU1FKTsKLSAgICAgICAgICAgICBBc2xBYm9ydCAoKTsKKyAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAqIEEgcHJvYmxlbSB3aXRoIGZyZW9wZW4gaXMgdGhhdCBvbiBlcnJvciwgd2Ugbm8gbG9uZ2VyCitAQCAtNjM1LDYgKzY0MSw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCisgICAgICAgICAgICAgZXhpdCAoMSk7CiAgICAgICAgICB9Ci0rICAgICAgICBHYmxfRmlsZXNbQVNMX0ZJTEVfREVCVUdfT1VUUFVUXS5IYW5kbGUgPSBzdGRlcnI7CiAgCisrICAgICAgICBHYmxfRmlsZXNbQVNMX0ZJTEVfREVCVUdfT1VUUFVUXS5IYW5kbGUgPSBzdGRlcnI7CisrCiAgICAgICAgICBBc2xDb21waWxlclNpZ25vbiAoQVNMX0ZJTEVfREVCVUdfT1VUUFVUKTsKICAgICAgICAgIEFzbENvbXBpbGVyRmlsZUhlYWRlciAoQVNMX0ZJTEVfREVCVUdfT1VUUFVUKTsKKyAgICAgfQogLS0gCi0yLjEuNAorMS45LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbm8td2Vycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbm8td2Vycm9yLnBhdGNoCmluZGV4IDVkMjhmNDcuLmE2ZTdiNTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9uby13ZXJyb3IucGF0Y2gKQEAgLTEsNyArMSw3IEBACiBEZXNjcmlwdGlvbjogcmVtb3ZlIC1XZXJyb3IgZmxhZwogRm9yd2FyZGVkOiBub3QtbmVlZGVkCiBBdXRob3I6IEZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+Ci0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgZ2VuZXJhdGUvdW5peC9pYXNsL01ha2VmaWxlIHwgICAxMiArKysrKystLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hc2NpaWRvYy9hc2NpaWRvY184LjYuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXNjaWlkb2MvYXNjaWlkb2NfOC42LjkuYmIKaW5kZXggMWNkMTQ1NC4uMzgxNjRkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hc2NpaWRvYy9hc2NpaWRvY184LjYuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FzY2lpZG9jL2FzY2lpZG9jXzguNi45LmJiCkBAIC0xNCw3ICsxNCw3IEBACiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9hc2NpaWRvYy9maWxlcy8iCiAKLWluaGVyaXQgZGlzdHV0aWxzIGF1dG90b29scy1icm9rZW5zZXAKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogCiBleHBvcnQgREVTVERJUiA9ICIke0R9IgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZG9jYm9vay14bWwtZHRkNC1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0LzAwMDEtcmVtb3ZlLWdsaWJjLWFzc3VtcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0LzAwMDEtcmVtb3ZlLWdsaWJjLWFzc3VtcHRpb24ucGF0Y2gKaW5kZXggNTNhZTI4Yi4uN2ZkZWNjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC8wMDAxLXJlbW92ZS1nbGliYy1hc3N1bXB0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvMDAwMS1yZW1vdmUtZ2xpYmMtYXNzdW1wdGlvbi5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gN2Y4MTFkOWM0ZWJjOTQ0NGU2MTNlMjUxYzMxZDZiZjUzN2EyNGRjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE2OjM1OjMwIC0wNzAwCitGcm9tIGY0NDY2ODY5MTZlNTAzZGZiOWZiOTI4MjUyZDFiNzJhMDc1NzNiMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxOCBKdWwgMjAxNyAwMzo0Mjo1NiAtMDQwMAogU3ViamVjdDogW1BBVENIXSByZW1vdmUgZ2xpYmMgYXNzdW1wdGlvbgogCiBnbGliYyB0aW1lLmggaGVhZGVyIGhhcyBhbiB1bmRvY3VtZW50ZWQgX19pc2xlYXAgbWFjcm8KQEAgLTksOSArOSwxMSBAQAogb24gYW55IG90aGVyIGxpYmMsIHN0b3AgdXNpbmcgaXQgYW5kIGp1c3QgZGVmaW5lIHRoZSBtYWNybyBpbgogbG9jYWxseSAgaW5zdGVhZC4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vbGlzdHMuZGViaWFuLm9yZy9kZWJpYW4tYWNjZXNzaWJpbGl0eS8yMDE3LzA3L21zZzAwMDQ0Lmh0bWwgXQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgogLS0tCiAgcGFyc2V0aW1lLnkgfCAxMSArKysrKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCkBAIC01Myw1ICs1NSw1IEBACiAgCQkJewogIAkJCSAgICB5eWVycm9yKCJFcnJvciBpbiBkYXkgb2YgbW9udGgiKTsKIC0tIAotMi4xLjQKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKaW5kZXggOTA0ODk5Zi4uOWI1MzdlZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkRlbGF5ZWQgam9iIGV4ZWN1dGlvbiBhbmQgYmF0Y2ggcHJvY2Vzc2luZyIKK0hPTUVQQUdFID0gImh0dHA6Ly9ibG9nLmNhbGhhcml6LmNvbS8iCiBERVNDUklQVElPTiA9ICJBdCBhbGxvd3MgZm9yIGNvbW1hbmRzIHRvIGJlIHJ1biBhdCBhIHBhcnRpY3VsYXIgdGltZS4gIEJhdGNoIHdpbGwgZXhlY3V0ZSBjb21tYW5kcyB3aGVuIFwKIHRoZSBzeXN0ZW0gbG9hZCBsZXZlbHMgZHJvcCB0byBhIHBhcnRpY3VsYXIgbGV2ZWwuIgogU0VDVElPTiA9ICJiYXNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCmluZGV4IDNlOWM2NjIuLmY0ZTFmN2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKQEAgLTI1LDkgKzI1LDE0IEBACiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCiAKK0RFUEVORFNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWxvY2FsZSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1mci1mciBsb2NhbGUtYmFzZS1kZS1kZSIKKwogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1wdGVzdCIKIFVTRVJBRERfUEFSQU1fJHtQTn0tcHRlc3QgPSAiLS1jcmVhdGUtaG9tZSAtLXVzZXItZ3JvdXAgdGVzdCIKIAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImhlYWRlcnNkaXI9JHtpbmNsdWRlZGlyfS8ke1BOfSIKKwogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogCWlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCiAJCWNhdCAke1N9L2FjbG9jYWwubTQgPiAke1N9L2FjaW5jbHVkZS5tNApAQCAtNDYsMTYgKzUxLDMyIEBACiAJZmkKIH0KIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JIyBDbGVhbiBob3N0IHBhdGggaW4gYmFzaGJ1ZworCSMgQ2xlYW4gYnVpbGRob3N0IHJlZmVyZW5jZXMgaW4gYmFzaGJ1ZwogCXNlZCAtaSAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCi0JCS1lICJzLC1JJHtXT1JLRElSfS9cUyogLCxnIiAke0R9JHtiaW5kaXJ9L2Jhc2hidWcKKwkJLWUgInMsLUkke1dPUktESVJ9L1xTKiAsLGciIFwKKwkJLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCQkke0R9JHtiaW5kaXJ9L2Jhc2hidWcKKworCSMgQ2xlYW4gYnVpbGRob3N0IHJlZmVyZW5jZXMgaW4gYmFzaC5wYworCXNlZCAtaSAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCisJICAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9iYXNoLnBjCisKKwkjIENsZWFuIGJ1aWxkaG9zdCByZWZlcmVuY2VzIGluIE1ha2VmaWxlLmluYworCXNlZCAtaSAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCisJCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkJLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJCSR7RH0ke2xpYmRpcn0vYmFzaC9NYWtlZmlsZS5pbmMKIH0KIAogZG9faW5zdGFsbF9wdGVzdCAoKSB7CiAJbWFrZSBJTlNUQUxMX1RFU1RfRElSPSR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIGluc3RhbGwtdGVzdAogCWNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KICAgICAgICAgc2VkIC1pIC1lICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCi0JICAgIC1lICJzLCR7U30sLGciIC1lICJzLCR7Qn0sLGciIC1lICJzLCR7U1RBR0lOR19ESVJfTkFUSVZFfSwsZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAicywke1N9LCxnIiAtZSAicywke0J9LCxnIiAtZSAicywke1NUQUdJTkdfRElSX05BVElWRX0sLGciIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCiB9CiAKIHBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CkBAIC02OSwzICs5MCw5IEBACiBQQUNLQUdFUyArPSAiJHtQTn0tYmFzaGJ1ZyIKIEZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9iYXNoICR7YmFzZV9iaW5kaXJ9L2Jhc2guYmFzaCIKIEZJTEVTXyR7UE59LWJhc2hidWcgPSAiJHtiaW5kaXJ9L2Jhc2hidWciCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1sb2FkYWJsZSIKK1JERVBFTkRTXyR7UE59LWxvYWRhYmxlICs9ICIke1BOfSIKK0ZJTEVTXyR7UE59LWxvYWRhYmxlICs9ICIke2xpYmRpcn0vYmFzaC8qIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnL2Jpbi9zaCAvYmluL2Jhc2gnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvQ1ZFLTIwMTYtOTQwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL0NWRS0yMDE2LTk0MDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4YzkyNzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvQ1ZFLTIwMTYtOTQwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gZmE3NDE3NzFlZDQ3YjMwNTQ3YmU2M2I1YjVkYmZiNTE5NzdhY2ExMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZXQgUmFtZXkgPGNoZXQucmFtZXlAY2FzZS5lZHU+Ci1EYXRlOiBGcmksIDIwIEphbiAyMDE3IDExOjQ3OjMxIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJhc2gtNC40IHBhdGNoIDYKLQotQnVnLVJlZmVyZW5jZS1VUkw6Ci1odHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTYtMTEvbXNnMDAxMTYuaHRtbAotCi1SZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6Ci1odHRwczovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDYKLQotQnVnLURlc2NyaXB0aW9uOgotT3V0LW9mLXJhbmdlIG5lZ2F0aXZlIG9mZnNldHMgdG8gcG9wZCBjYW4gY2F1c2UgdGhlIHNoZWxsIHRvIGNyYXNoIGF0dGVtcHRpbmcKLXRvIGZyZWUgYW4gaW52YWxpZCBtZW1vcnkgYmxvY2suCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtOTQwMQotU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYnVpbHRpbnMvcHVzaGQuZGVmIHwgNyArKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYnVpbHRpbnMvcHVzaGQuZGVmIGIvYnVpbHRpbnMvcHVzaGQuZGVmCi1pbmRleCA5YzY1NDhmLi44YTEzYmFlIDEwMDY0NAotLS0tIGEvYnVpbHRpbnMvcHVzaGQuZGVmCi0rKysgYi9idWlsdGlucy9wdXNoZC5kZWYKLUBAIC0zNTksNyArMzU5LDcgQEAgcG9wZF9idWlsdGluIChsaXN0KQotIAlicmVhazsKLSAgICAgfQotIAotLSAgaWYgKHdoaWNoID4gZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0IHx8IChkaXJlY3RvcnlfbGlzdF9vZmZzZXQgPT0gMCAmJiB3aGljaCA9PSAwKSkKLSsgIGlmICh3aGljaCA+IGRpcmVjdG9yeV9saXN0X29mZnNldCB8fCAod2hpY2ggPCAtZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0KSB8fCAoZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0ID09IDAgJiYgd2hpY2ggPT0gMCkpCi0gICAgIHsKLSAgICAgICBwdXNoZF9lcnJvciAoZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0LCB3aGljaF93b3JkID8gd2hpY2hfd29yZCA6ICIiKTsKLSAgICAgICByZXR1cm4gKEVYRUNVVElPTl9GQUlMVVJFKTsKLUBAIC0zODEsNiArMzgxLDExIEBAIHBvcGRfYnVpbHRpbiAobGlzdCkKLSAJIHJlbW92ZSB0aGF0IGRpcmVjdG9yeSBmcm9tIHRoZSBsaXN0IGFuZCBzaGlmdCB0aGUgcmVtYWluZGVyCi0gCSBvZiB0aGUgbGlzdCBpbnRvIHBsYWNlLiAqLwotICAgICAgIGkgPSAoZGlyZWN0aW9uID09ICcrJykgPyBkaXJlY3RvcnlfbGlzdF9vZmZzZXQgLSB3aGljaCA6IHdoaWNoOwotKyAgICAgIGlmIChpIDwgMCB8fCBpID4gZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0KQotKwl7Ci0rCSAgcHVzaGRfZXJyb3IgKGRpcmVjdG9yeV9saXN0X29mZnNldCwgd2hpY2hfd29yZCA/IHdoaWNoX3dvcmQgOiAiIik7Ci0rCSAgcmV0dXJuIChFWEVDVVRJT05fRkFJTFVSRSk7Ci0rCX0KLSAgICAgICBmcmVlIChwdXNoZF9kaXJlY3RvcnlfbGlzdFtpXSk7Ci0gICAgICAgZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0LS07Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoCmluZGV4IDdmMDk5YWUuLjlhYzI0NjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZml4LXJ1bi1jb3Byb2MtcnVuLWhlcmVkb2MtcnVuLWV4ZWNzY3JpcHQtcnVuLXRlc3QtZi5wYXRjaApAQCAtMSwxNSArMSw3IEBACi1Gcm9tIDJjMzBkZmY4ZWE4YjE3YWQ1YmE5ODgxZTM1YWQxZWJhOWM1MTVmMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQxY2Q0YzMxZWEwZWQ3NDA2YTNhZDRiZGFhMjExZjU4MTA2M2Y2NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI2IE5vdiAyMDE1IDIyOjA5OjA3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBydW4tY29wcm9jL3J1bi1oZXJlZG9jL3J1bi1leGVjc2NyaXB0L3J1bi10ZXN0LyBmYWlsZWQKLQotRkFJTDogcnVuLWNvcHJvYwotdXBkYXRlIHRlc3QgY2FzZTp0ZXN0cy9jb3Byb2MucmlnaHQsIHRlc3RzL2NvcHJvYy50ZXN0cwotZ2l0Oi8vZ2l0LnN2LmdudS5vcmcvYmFzaC5naXQgYmFzaC00LjQtdGVzdGluZwotCi1GQUlMOiBydW4taGVyZWRvYwotdXBkYXRlIHRlc3QgY2FzZTogdGVzdHMvaGVyZWRvYy5yaWdodCB0ZXN0cy9oZXJlZG9jMy5zdWIKLWdpdDovL2dpdC5zdi5nbnUub3JnL2Jhc2guZ2l0IGJhc2gtNC40LXRlc3RpbmcKK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTA6MjE6MjEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGZpeCBydW4tZXhlY3NjcmlwdC9ydW4tdGVzdC8gZmFpbGVkCiAKIEZBSUw6IHJ1bi1leGVjc2NyaXB0OgogdGhlIHRlc3Qgc3VpdGUgc2hvdWxkIG5vdCBiZSBydW4gYXMgcm9vdApAQCAtMjEsMTQ5ICsxMywzMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLSB0ZXN0cy9jb3Byb2MucmlnaHQgICB8ICA1ICstLS0tCi0gdGVzdHMvY29wcm9jLnRlc3RzICAgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSB0ZXN0cy9oZXJlZG9jLnJpZ2h0ICB8ICA1ICsrLS0tCi0gdGVzdHMvaGVyZWRvYzMuc3ViICAgfCAgMyArKy0KLSB0ZXN0cy9ydW4tZXhlY3NjcmlwdCB8ICAzICsrLQotIHRlc3RzL3J1bi10ZXN0ICAgICAgIHwgIDMgKystCi0gNiBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKyB0ZXN0cy9ydW4tZXhlY3NjcmlwdCB8IDMgKystCisgdGVzdHMvcnVuLXRlc3QgICAgICAgfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvdGVzdHMvY29wcm9jLnJpZ2h0IGIvdGVzdHMvY29wcm9jLnJpZ2h0Ci1pbmRleCA2ZDlkZWFhLi45NGIwMDFjIDEwMDY0NAotLS0tIGEvdGVzdHMvY29wcm9jLnJpZ2h0Ci0rKysgYi90ZXN0cy9jb3Byb2MucmlnaHQKLUBAIC0xLDExICsxLDggQEAKLS04NDU3NQotIDYzIDYwCi0gYSBiIGMKLS04NDU3NwotIDYzIDYwCi0gZmxvcAotLS4vY29wcm9jLnRlc3RzOiBsaW5lIDIyOiA4NDU3NyBUZXJtaW5hdGVkICAgICAgICAgICAgICBjb3Byb2MgUkVGTEVDVCB7IGNhdCAtOyB9Ci0tODQ1NzkKLStjb3Byb2MudGVzdHM6IFJFRkxFQ1Q6IHN0YXR1cyAxNDMKLSA2MyA2MAotIEZPTwotIDYzIDYwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvY29wcm9jLnRlc3RzIGIvdGVzdHMvY29wcm9jLnRlc3RzCi1pbmRleCA4YmUzNTYzLi5kMzQ3ZWI3IDEwMDY0NAotLS0tIGEvdGVzdHMvY29wcm9jLnRlc3RzCi0rKysgYi90ZXN0cy9jb3Byb2MudGVzdHMKLUBAIC0xLDYgKzEsMTMgQEAKLSs6ICR7VE1QRElSOj0vdG1wfQotK1RNUE9VVD0ke1RNUERJUn0vY29wcm9jLXdhaXQtJEJBU0hQSUQKLSsKLSBjb3Byb2MgeyBlY2hvIGEgYiBjOyBzbGVlcCAyOyB9Ci0gCi0tZWNobyAkQ09QUk9DX1BJRAotK2Nhc2UgJENPUFJPQ19QSUQgaW4KLStbMC05XSopCTs7Ci0rKikJZWNobyBDT1BST0NfUElEIG5vdCBpbnRlZ2VyIDs7Ci0rZXNhYwotKwotIGVjaG8gJHtDT1BST0NbQF19Ci0gCi0gcmVhZCBMSU5FIDwmJHtDT1BST0NbMF19Ci1AQCAtMTAsNyArMTcsMTEgQEAgd2FpdCAkQ09QUk9DX1BJRAotIAotIGNvcHJvYyBSRUZMRUNUIHsgY2F0IC0gOyB9Ci0gCi0tZWNobyAkUkVGTEVDVF9QSUQKLStjYXNlICRSRUZMRUNUX1BJRCBpbgotK1swLTldKikJOzsKLSsqKQllY2hvIFJFRkxFQ1RfUElEIG5vdCBpbnRlZ2VyIDs7Ci0rZXNhYwotKwotIGVjaG8gJHtSRUZMRUNUW0BdfQotIAotIGVjaG8gZmxvcCA+JiR7UkVGTEVDVFsxXX0KLUBAIC0xOCwxMiArMjksMjEgQEAgcmVhZCBMSU5FIDwmJHtSRUZMRUNUWzBdfQotIAotIGVjaG8gJExJTkUKLSAKLS1raWxsICRSRUZMRUNUX1BJRAotLXdhaXQgJFJFRkxFQ1RfUElECi0reyBzbGVlcCAxOyBraWxsICRSRUZMRUNUX1BJRDsgfSAmCi0rd2FpdCAkUkVGTEVDVF9QSUQgPiRUTVBPVVQgMj4mMSB8fCBlY2hvICJjb3Byb2MudGVzdHM6IFJFRkxFQ1Q6IHN0YXR1cyAkPyIKLStncmVwICdUZXJtaW5hdGVkLipjb3Byb2MuKlJFRkxFQ1QnIDwgJFRNUE9VVCA+L2Rldi9udWxsIDI+JjEgfHwgewotKwllY2hvICJjb3Byb2MudGVzdHM6IHdhaXQgZm9yIFJFRkxFQ1QgZmFpbGVkIiA+JjIKLSt9Ci0rcm0gLWYgJFRNUE9VVAotK2V4ZWMgMj4mMQotIAotIGNvcHJvYyB4Y2FzZSAtbiAtdQotIAotLWVjaG8gJENPUFJPQ19QSUQKLStjYXNlICRDT1BST0NfUElEIGluCi0rWzAtOV0qKQk7OwotKyopCWVjaG8gQ09QUk9DX1BJRCBub3QgaW50ZWdlciA7OwotK2VzYWMKLSsKLSBlY2hvICR7Q09QUk9DW0BdfQotIAotIGVjaG8gZm9vID4mJHtDT1BST0NbMV19Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvaGVyZWRvYy5yaWdodCBiL3Rlc3RzL2hlcmVkb2MucmlnaHQKLWluZGV4IDZhYmFhMWYuLjhkZjkxYzUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9oZXJlZG9jLnJpZ2h0Ci0rKysgYi90ZXN0cy9oZXJlZG9jLnJpZ2h0Ci1AQCAtNzYsMTUgKzc2LDE0IEBAIEVOREVORAotIGVuZCBFTkRFTkQKLSBoZWxsbwotIGVuZCBoZWxsbwotLXggc3RhciB4Ci0gZW5kIHgqeAotIGhlbGxvRU5ECi0gZW5kIGhlbGxvRU5ECi0gaGVsbG8KLSBcRU5ECi0gZW5kIGhlbGxvPE5MPlxFTkQKLS0uL2hlcmVkb2MzLnN1YjogbGluZSA3NDogd2FybmluZzogaGVyZS1kb2N1bWVudCBhdCBsaW5lIDcyIGRlbGltaXRlZCBieSBlbmQtb2YtZmlsZSAod2FudGVkIGBFT0YnKQotLS4vaGVyZWRvYzMuc3ViOiBsaW5lIDc1OiBzeW50YXggZXJyb3I6IHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUKLSsuL2hlcmVkb2MzLnN1YjogbGluZSA3NTogd2FybmluZzogaGVyZS1kb2N1bWVudCBhdCBsaW5lIDczIGRlbGltaXRlZCBieSBlbmQtb2YtZmlsZSAod2FudGVkIGBFT0YnKQotKy4vaGVyZWRvYzMuc3ViOiBsaW5lIDc2OiBzeW50YXggZXJyb3I6IHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUKLSBjb21zdWIgaGVyZS1zdHJpbmcKLSAuL2hlcmVkb2MudGVzdHM6IGxpbmUgMTA1OiB3YXJuaW5nOiBoZXJlLWRvY3VtZW50IGF0IGxpbmUgMTAzIGRlbGltaXRlZCBieSBlbmQtb2YtZmlsZSAod2FudGVkIGBFT0YnKQotIGhpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvaGVyZWRvYzMuc3ViIGIvdGVzdHMvaGVyZWRvYzMuc3ViCi1pbmRleCA3M2ExMTFlLi45ZDNkODQ2IDEwMDY0NAotLS0tIGEvdGVzdHMvaGVyZWRvYzMuc3ViCi0rKysgYi90ZXN0cy9oZXJlZG9jMy5zdWIKLUBAIC00OSw5ICs0OSwxMCBAQCBoZWxsbwotICAgICBFTkQgICAgCi0gZWNobyBlbmQgaGVsbG8KLSAKLS1jYXQgPDx4KnggJiB0b3VjaCAneCp4JwotK2NhdCA8PHgqeCA+L2Rldi9udWxsICYgdG91Y2ggJ3gqeCcKLSB4IHN0YXIgeAotIHgqeAotK3dhaXQgJCEKLSBlY2hvIGVuZCAneCp4JwotIHJtICd4KngnCi0gCiBkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWV4ZWNzY3JpcHQgYi90ZXN0cy9ydW4tZXhlY3NjcmlwdAotaW5kZXggZjk3YWIyMS4uMGQwMGExYiAxMDA2NDQKK2luZGV4IGRlNzg2NDQuLjM4Mzk3YzEgMTAwNjQ0CiAtLS0gYS90ZXN0cy9ydW4tZXhlY3NjcmlwdAogKysrIGIvdGVzdHMvcnVuLWV4ZWNzY3JpcHQKIEBAIC01LDUgKzUsNiBAQCBlY2hvICJ3YXJuaW5nOiBcYC90bXAvYmFzaC1ub3R0aGVyZScgbm90IGJlaW5nIGZvdW5kIG9yIFxgLycgYmVpbmcgYSBkaXJlY3RvcnkiCiAgZWNobyAid2FybmluZzogcHJvZHVjZSBkaWZmIG91dHB1dCwgcGxlYXNlIGRvIG5vdCBjb25zaWRlciB0aGlzIGEgdGVzdCBmYWlsdXJlIiA+JjIKICBlY2hvICJ3YXJuaW5nOiBpZiBkaWZmIG91dHB1dCBkaWZmZXJpbmcgb25seSBpbiB0aGUgbG9jYXRpb24gb2YgdGhlIGJhc2giID4mMgogIGVjaG8gIndhcm5pbmc6IGJpbmFyeSBhcHBlYXJzLCBwbGVhc2UgZG8gbm90IGNvbnNpZGVyIHRoaXMgYSB0ZXN0IGZhaWx1cmUiID4mMgotLSR7VEhJU19TSH0gLi9leGVjc2NyaXB0ID4gL3RtcC94eCAyPiYxCi0rcm0gLWYgL3RtcC94eAotK3N1IC1jICIke1RISVNfU0h9IC4vZXhlY3NjcmlwdCA+IC90bXAveHggMj4mMSIgdGVzdAotIGRpZmYgL3RtcC94eCBleGVjLnJpZ2h0ICYmIHJtIC1mIC90bXAveHgKKy0ke1RISVNfU0h9IC4vZXhlY3NjcmlwdCA+ICR7QkFTSF9UU1RPVVR9IDI+JjEKKytybSAtZiAke0JBU0hfVFNUT1VUfQorK3N1IC1jICIke1RISVNfU0h9IC4vZXhlY3NjcmlwdCA+ICR7QkFTSF9UU1RPVVR9IDI+JjEiIHRlc3QKKyBkaWZmICR7QkFTSF9UU1RPVVR9IGV4ZWMucmlnaHQgJiYgcm0gLWYgJHtCQVNIX1RTVE9VVH0KIGRpZmYgLS1naXQgYS90ZXN0cy9ydW4tdGVzdCBiL3Rlc3RzL3J1bi10ZXN0Ci1pbmRleCBiMjQ4MmMzLi4yZThmMDQ5IDEwMDY0NAoraW5kZXggZDY4NzkxYy4uZDYzMTdkMiAxMDA2NDQKIC0tLSBhL3Rlc3RzL3J1bi10ZXN0CiArKysgYi90ZXN0cy9ydW4tdGVzdAogQEAgLTEsNCArMSw1IEBACiAgdW5zZXQgR1JPVVBTIFVJRCAyPi9kZXYvbnVsbAogIAotLSR7VEhJU19TSH0gLi90ZXN0LnRlc3RzID4vdG1wL3h4IDI+JjEKLStybSAtZiAvdG1wL3h4Ci0rc3UgLWMgIiR7VEhJU19TSH0gLi90ZXN0LnRlc3RzID4vdG1wL3h4IDI+JjEiIHRlc3QKLSBkaWZmIC90bXAveHggdGVzdC5yaWdodCAmJiBybSAtZiAvdG1wL3h4CistJHtUSElTX1NIfSAuL3Rlc3QudGVzdHMgPiR7QkFTSF9UU1RPVVR9IDI+JjEKKytybSAtZiAke0JBU0hfVFNUT1VUfQorK3N1IC1jICIke1RISVNfU0h9IC4vdGVzdC50ZXN0cyA+ICR7QkFTSF9UU1RPVVR9IDI+JjEiIHRlc3QKKyBkaWZmICR7QkFTSF9UU1RPVVR9IHRlc3QucmlnaHQgJiYgcm0gLWYgJHtCQVNIX1RTVE9VVH0KIC0tIAotMS45LjEKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZml4LXJ1bi1pbnRsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZml4LXJ1bi1pbnRsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGEzNDA5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4taW50bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi1Gcm9tIGEwMGQzMTYxZmQ3YjZhNjk4YmRkMmVkNWYwYWM1ZmFhYzU4MGVlMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAzIEF1ZyAyMDE2IDIzOjEzOjAwIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBydW4taW50bCBmYWlsZWQKLQotMS4gRmlsdGVyIGV4dHJhIHdoaXRlIHNwYWNlIG9mIGludGwucmlnaHQKLQotICAgRHVlIHRvIHRoZSBleHRyYSB3aGl0ZSBzcGFjZSBvZiBpbnRsLnJpZ2h0LCB3aGVuIHRoZSByZXN1bHQgb2YKLSAgIHN1Yi10ZXN0IHVuaWNvZGUyLnN1YiBvZiBpbnRsLnRlc3RzIGNvbXBhcmVkIHRvIGl0LCB0aGUgdGVzdAotICAgZmFpbGVkLgotCi0gICBTbyB3ZSBuZWVkIHRvIGZpbHRlciB0aGUgZXh0cmEgd2hpdGUgc3BhY2Ugb2YgaW50bC5yaWdodC4KLQotICAgSW1wb3J0IHRoaXMgcGF0Y2ggZm9yIGludGwucmlnaHQgZnJvbSBiYXNoIGRldmVsIGJyYW5jaDoKLQotCWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2Jhc2guZ2l0L2xvZy8/aD1kZXZlbAotCi0gICBjb21taXQgaXM6Ci0KLQk4NWVjMDc3OGY5ZDc3OGUxODIwZmI4YzBlM2U5OTZmMmQxMTAzYjQ1Ci0KLTIuIENoYW5nZSBpbnRsLnJpZ2h0IGNvcnJlc3BvbmQgdG8gdGhlIHVuaWNvZGUzLnN1YidzIG91dHB1dAotCi0gICBJbiBzdWItdGVzdCB1bmljb2RlMy5zdWIgb2YgaW50bC50ZXN0cywgdGhlIHBheWxvYWQgdmFsdWUgaXM6Ci0KLQlwYXlsb2FkPSQnXDA2NVwyNDdcMTAwXDA2M1wyMzFcMDUzXDMwNlwxMjNcMDcwXDIzN1wyNDJcMzUyXDI2MycKLQotICAgSXQgdXNlZCBxdW90ZWQgc3RyaW5nIGV4cGFuc2lvbihlc2NhcGVkIG9jdGFsKSB0byBhc3NpZ24gQVNDSUkKLSAgIGNoYXJhY3RlcnMgdG8gdmFyaWFibGVzLiBTbyB3aGVuIHRoZSB0ZXN0IHJ1biB0aGUgZm9sbG93aW5nOgotCi0JcHJpbnRmICVxICIkcGF5bG9hZCIKLQotICAgSXQgcHJvZHVjZWQ6Ci0KLQkkJzVcMjQ3QDNcMjMxK1wzMDZTOFwyMzdcMjQyXDM1MlwyNjMnCi0KLSAgIFdoZW4gY29tcGFyZWQgdG8gdGhlIGludGwucmlnaHQoY29udGFpbiB0aGUgY29udmVydGVkIGNoYXJhY3RlciksIGl0IGZhaWxlZC4KLQotICAgSW1wb3J0IHBhcnRzIG9mIHBhdGNoIGZvciBpbnRsLnJpZ2h0IGZyb20gYmFzaCBkZXZlbCBicmFuY2g6Ci0KLQlodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9iYXNoLmdpdC9sb2cvP2g9ZGV2ZWwKLQotICAgY29tbWl0IGlzOgotCi0JNzRiOGNiYjQxMzk4YjQ0NTNkOGJhMDRkMGNkZDFiMjVmOWRjYjllMwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0cy9pbnRsLnJpZ2h0IHwgMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvaW50bC5yaWdodCBiL3Rlc3RzL2ludGwucmlnaHQKLWluZGV4IGFjZjEwOGEuLjFlZmRmYmUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9pbnRsLnJpZ2h0Ci0rKysgYi90ZXN0cy9pbnRsLnJpZ2h0Ci1AQCAtMTgsMzQgKzE4LDM0IEBAIGHDqWIKLSAxLjAwMDAKLSAxLDAwMDAKLSBQYXNzZWQgYWxsIDEzNzggVW5pY29kZSB0ZXN0cwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzNTcgMjc3IDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDM1NyAyNzcgMjc3IDAxMgotIDAwMDAwMDQKLS0wMDAwMDAwICAgMzU3IDI3NyAyNzcgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzNTcgMjc3IDI3NyAwMTIKLSAwMDAwMDA0Ci0tMDAwMDAwMCAgIDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKzAwMDAwMDAgMDEyCi0gMDAwMDAwMQotLTAwMDAwMDAgICAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDAxMgotIDAwMDAwMDEKLS0wMDAwMDAwICAgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAwMTIKLSAwMDAwMDAxCi0tMDAwMDAwMCAgIDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKzAwMDAwMDAgMDEyCi0gMDAwMDAwMQotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAxMDEgMDQwIDMwMiAyNDMgMDQwIDMwNSAyMjIgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDEwMSAwNDAgMzAyIDI0MyAwNDAgMzA1IDIyMiAwMTIKLSAwMDAwMDEwCi0gLi91bmljb2RlMy5zdWI6IGxpbmUgMjogNadAM5krxlM4n6LqszogY29tbWFuZCBub3QgZm91bmQKLS01p0AzmSvGUzifouqzCi0rJCc1XDI0N0AzXDIzMStcMzA2UzhcMjM3XDI0MlwzNTJcMjYzJwotICsgOiAkJzVcMjQ3QDNcMjMxK1wzMDZTOFwyMzdcMjQyXDM1MlwyNjMnCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3Rlc3Qtb3V0cHV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvdGVzdC1vdXRwdXQucGF0Y2gKaW5kZXggMmIwOWI3ZC4uMGZmY2MyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvdGVzdC1vdXRwdXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvdGVzdC1vdXRwdXQucGF0Y2gKQEAgLTEsMjUgKzEsNDIgQEAKLUFkZCBGQUlML1BBU1Mgb3V0cHV0IHRvIHRlc3Qgb3V0cHV0LgorRnJvbSAyOGViMDYwNDdlYmQyZGVhYThjN2NkMmJmNjY1NWVmNmE0NjlkYzE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxMDowMTo1NiArMDgwMAorU3ViamVjdDogW1BBVENIIDEvMl0gQWRkIEZBSUwvUEFTUyBvdXRwdXQgdG8gdGVzdCBvdXRwdXQuCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CiAKIFNpZ25lZC1vZmYtYnk6IEJqw7ZybiBTdGVuYmVyZyA8YmpzdEBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitSZWJhc2UgdG8gNC40CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLWRpZmYgLXVOciBhL3Rlc3RzL3J1bi1hbGwgYi90ZXN0cy9ydW4tYWxsCi0tLS0gYS90ZXN0cy9ydW4tYWxsCTE5OTktMTAtMDggMTc6MDc6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgYi90ZXN0cy9ydW4tYWxsCTIwMTItMTAtMjcgMjE6MDQ6MTguNjYzMzMxODg3ICswMjAwCi1AQCAtMjIsNyArMjIsMTUgQEAKKyB0ZXN0cy9ydW4tYWxsIHwgMTEgKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWFsbCBiL3Rlc3RzL3J1bi1hbGwKK2luZGV4IDI4ODJmZTAuLmUyMWQwMjYgMTAwNjQ0CistLS0gYS90ZXN0cy9ydW4tYWxsCisrKysgYi90ZXN0cy9ydW4tYWxsCitAQCAtMzMsNyArMzMsMTYgQEAgZG8KICAJY2FzZSAkeCBpbgogIAkkMHxydW4tbWluaW1hbHxydW4tZ3Byb2YpCTs7CiAgCSoub3JpZ3wqfikgOzsKLS0JKikJZWNobyAkeCA7IHNoICR4IDs7Ci0rICAgICopICBlY2hvICR4Ci0rICAgICAgICAgb3V0cHV0PWBzaCAkeGAKLSsgICAgICAgICBpZiBbIC1uICIkb3V0cHV0IiBdOyB0aGVuCi0rICAgICAgICAgICAgIGVjaG8gIiRvdXRwdXQiCi0rICAgICAgICAgICAgIGVjaG8gIkZBSUw6ICR4IgotKyAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgZWNobyAiUEFTUzogJHgiCi0rICAgICAgICAgZmkKLSsgICAgICAgICA7OworLQkqKQllY2hvICR4IDsgc2ggJHggOyBybSAtZiAke0JBU0hfVFNUT1VUfSA7OworKwkqKQllY2hvICR4CisrCQlvdXRwdXQ9YHNoICR4YAorKwkJaWYgWyAtbiAiJG91dHB1dCIgXTsgdGhlbgorKwkJCWVjaG8gIiRvdXRwdXQiCisrCQkJZWNobyAiRkFJTDogJHgiCisrCQllbHNlCisrCQkJZWNobyAiUEFTUzogJHgiCisrCQlmaQorKwkJcm0gLWYgJHtCQVNIX1RTVE9VVH0KKysJCTs7CiAgCWVzYWMKICBkb25lCiAgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC4zLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC4zLjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjQ4ZmFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuMy4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLXJlcXVpcmUgYmFzaC5pbmMKLQotIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzMTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzEgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDMyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzMiBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDMzIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzNDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzQgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzNSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM2IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzNzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzcgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzOCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzk7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM5IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0MDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDAgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQxO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0MSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQyIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0MzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDMgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQ0O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0NCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDU7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQ1IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0NjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDYgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQ3O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0NyBcCi0gICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4taW50bC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi05NDAxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Jhc2gtbWVtbGVhay1idWctZml4LWZvci1idWlsdGluLWNvbW1hbmQtcmVhZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiYTI3YjNlZTliZTgzYmQzYmE0NDhjMGZmNTJiMjg0NDciCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICIzMTc4ODEwMTliYmYyMjYyZmI4MTRiN2RkOGU0MDYzMmQxM2MzNjA4ZDJmMjM3ODAwYTg4MjhmYmI4YTY0MGRkIgotCi1TUkNfVVJJW3BhdGNoMDMxLm1kNXN1bV0gPSAiMjM2ZGYxYWMxMTMwYTAzM2VkMGRiZTJkMjExNWYyOGYiCi1TUkNfVVJJW3BhdGNoMDMxLnNoYTI1NnN1bV0gPSAiY2Q1MjlmNTlkZDBmMmZkZDQ5ZDYxOWZlMzQ2OTFkYTZmMGFmZmVkZjg3Y2MzN2NkNDYwYTlmM2ZlODEyYTYxZCIKLVNSQ19VUklbcGF0Y2gwMzIubWQ1c3VtXSA9ICIyMzYwZjdlNzljZmIyODUyNmY4MDAyMTAyNWVhNTkwOSIKLVNSQ19VUklbcGF0Y2gwMzIuc2hhMjU2c3VtXSA9ICI4ODkzNTdkMjlhNjAwNWIyYzMzMDhjYTViNjI4NmNiMjIzYjVlOWMwODMyMTllNWRiMzE1NjI4MmRkNTU0ZjRhIgotU1JDX1VSSVtwYXRjaDAzMy5tZDVzdW1dID0gImI1NTFjNGVlN2I4NzEzNzU5ZTQxNDM0OTlkMGJiZDQ4IgotU1JDX1VSSVtwYXRjaDAzMy5zaGEyNTZzdW1dID0gImZiMmE3Nzg3YTEzZmJlMDI3YTczMzVhY2E2ZWIzYzIxY2RiZDgxM2U5ZWRjMjIxMjc0YjZhOWQ4NjkyZWFhMTYiCi1TUkNfVVJJW3BhdGNoMDM0Lm1kNXN1bV0gPSAiYzlhNTZmYmUwMzQ4ZTA1YTg4NmRmZjk3ZjI4NzJiNzQiCi1TUkNfVVJJW3BhdGNoMDM0LnNoYTI1NnN1bV0gPSAiZjE2OTRmMDRmMTEwZGVmZTEzMzBhODUxY2MyNzY4ZTdlNTdkZGQyZGZkYjBlM2UzNTBjYTBlM2MyMTRmZjg4OSIKLVNSQ19VUklbcGF0Y2gwMzUubWQ1c3VtXSA9ICJlNTY0ZThhYjQ0ZWQxY2EzYTRlMzE1YTlmNmNhYmRjOSIKLVNSQ19VUklbcGF0Y2gwMzUuc2hhMjU2c3VtXSA9ICIzNzBkODVlNTE3ODAwMzZmMjM4NmRjMThjNWVmZTk5NmViYThlNjUyZmMxOTczZjBmNGYyYWI1NWE5OTNjMWUzIgotU1JDX1VSSVtwYXRjaDAzNi5tZDVzdW1dID0gImIwMGZmNjZjNDFhN2MwZjA2ZTE5MTIwMDk4MTk4MGIwIgotU1JDX1VSSVtwYXRjaDAzNi5zaGEyNTZzdW1dID0gImFjNWY4MjQ0NWIzNmVmZGI1NDNkYmZhZTY0YWZlZDYzZjU4NmQ3NTc0YjgzM2U5YWE5Y2Q1MTcwYmM1ZmQyN2MiCi1TUkNfVVJJW3BhdGNoMDM3Lm1kNXN1bV0gPSAiYmUyYTdiMDVmNmFlNTYwMzEzZjNjOWQ1ZjcxMjdiZGEiCi1TUkNfVVJJW3BhdGNoMDM3LnNoYTI1NnN1bV0gPSAiMzNmMTcwZGQ3NDAwYWIzNDE4ZDc0OWM1NWM2MzkxYjFkMTYxZWYyZGU3YWNlZDE4NzM0NTFiM2EzZmNhNTgxMyIKLVNSQ19VUklbcGF0Y2gwMzgubWQ1c3VtXSA9ICI2MWUwNTIyODMwYjI0ZmJlOGMwZDFiMDEwZjEzMjQ3MCIKLVNSQ19VUklbcGF0Y2gwMzguc2hhMjU2c3VtXSA9ICJhZGJlYWE1MDBjYTdhODI1MzVmMGU4OGQ2NzM2NjE5NjNmOGE1ZmNkYzdhZDYzNDQ1ZTY4YmY1YjQ5Nzg2MzY3IgotU1JDX1VSSVtwYXRjaDAzOS5tZDVzdW1dID0gImE0Nzc1NDg3YWJlOTU4NTM2NzUxYzhjZTUzY2RmNmY5IgotU1JDX1VSSVtwYXRjaDAzOS5zaGEyNTZzdW1dID0gImFiOTRkY2VkMjIxNTU0MTA5NzY5MWY2MGMzZWIzMjNjYzI4ZWYyNTQ5NDYzZTZhNTMzNGJiY2MxZTYxZTc0ZWMiCi1TUkNfVVJJW3BhdGNoMDQwLm1kNXN1bV0gPSAiODBkMzU4N2M1ODg1NGUyMjYwNTVlZjA5OWZmZWI1MzUiCi1TUkNfVVJJW3BhdGNoMDQwLnNoYTI1NnN1bV0gPSAiODRiYjM5NmI5MjYyOTkyY2E1NDI0ZmVhYjZlZDNlYzM5ZjE5M2VmNWM3NmRmZTRhNjJiNTUxYmQ4ZGQ5ZDc2YiIKLVNSQ19VUklbcGF0Y2gwNDEubWQ1c3VtXSA9ICIyMGJmNjNlZWY3Y2I0NDFjMGIxY2M0OWVmMzE5MWQwMyIKLVNSQ19VUklbcGF0Y2gwNDEuc2hhMjU2c3VtXSA9ICI0ZWM0MzI5NjZlNDE5ODUyNGE3ZTBjZDY4NWZlMjIyZTk2MDQzNzY5Yzk2MTNlNjY3NDJhYzQ3NWRiMTMyYzFhIgotU1JDX1VSSVtwYXRjaDA0Mi5tZDVzdW1dID0gIjcwNzkwNjQ2YWU2MWUyMDdjOTk1ZTQ0OTMxMzkwZTUwIgotU1JDX1VSSVtwYXRjaDA0Mi5zaGEyNTZzdW1dID0gImFjMjE5MzIyZGIyNzkxZGE4N2E0OTZlZTZlOGU1NTQ0ODQ2NDk0YmRhYWVhMjYyNjI3MGMyZjczYzEwNDQ5MTkiCi1TUkNfVVJJW3BhdGNoMDQzLm1kNXN1bV0gPSAiODU1YTQ2OTU1Y2IyNTE1MzRlODBiNDczMmI3NDhlMzciCi1TUkNfVVJJW3BhdGNoMDQzLnNoYTI1NnN1bV0gPSAiNDdhOGEzYzAwNWI0NmUyNTgyMWY0ZDhmNWNjYjA0YzFkNjUzYjFjODI5Y2I0MDU2OGQ1NTNkYzQ0ZjdhNjE4MCIKLVNSQ19VUklbcGF0Y2gwNDQubWQ1c3VtXSA9ICIyOTYyM2QzMjgyZmNiYjM3ZTExNTgxMzY1MDliNWJiOCIKLVNSQ19VUklbcGF0Y2gwNDQuc2hhMjU2c3VtXSA9ICI5MzM4ODIwNjMwYmY2NzM3M2I0NGQ4ZWE2ODQwOWY2NTE2MmVhN2E0N2I5YjI5YWNlMDZhMGFlZDEyNTY3Zjk5IgotU1JDX1VSSVtwYXRjaDA0NS5tZDVzdW1dID0gIjQ0NzMyNDRjYTVhYmZkNGIwMThlYTI2ZGM3M2U3NDEyIgotU1JDX1VSSVtwYXRjaDA0NS5zaGEyNTZzdW1dID0gImJhNmVjMzk3OGU5ZWFhMWViM2ZhYmRhZjNjYzZmZGY4YzQ2MDZhYzFjNTk5ZmFhZWI0ZTJkNjk4NjQxNTAwMjMiCi1TUkNfVVJJW3BhdGNoMDQ2Lm1kNXN1bV0gPSAiN2U1ZmIwOTk5MWMwNzcwNzZiODZlMGUwNTc3OTg5MTMiCi1TUkNfVVJJW3BhdGNoMDQ2LnNoYTI1NnN1bV0gPSAiYjNiNDU2YTZiNjkwY2QyOTMzNTNmMTdlMjJkOTJhMjAyYjNjOGJjZTU4N2FlNWYyNjY3YzIwYzlhYjZmNjg4ZiIKLVNSQ19VUklbcGF0Y2gwNDcubWQ1c3VtXSA9ICI4NDgzMTUzYmFkMWE2ZjUyY2FkYzNiZDlhOGRmNzgzNSIKLVNSQ19VUklbcGF0Y2gwNDcuc2hhMjU2c3VtXSA9ICJjNjkyNDhkZTdlNzhiYTZiOTJmMTE4ZmUxZWY0N2JjODY0NzlkNTA0MGZlMGIxZjkwOGFjZTFjOWUzYzY3YzRhIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTQ0ZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiCkBAIC0wLDAgKzEsNTkgQEAKK3JlcXVpcmUgYmFzaC5pbmMKKworIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwMTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDEgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDAyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwMiBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDAzIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDQgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA2IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDcgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDk7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA5IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAxMDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTAgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDExO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMTI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEyIFwKKyAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCisgICAgICAgICAgIGZpbGU6Ly9ta2J1aWx0aW5zX2hhdmVfc3RyaW5naXplLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1aWxkLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlc3Qtb3V0cHV0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tYnVpbHRpbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNDg4ODhhN2M5NWFjMjM3MDU1NTliNmY0NzdkZmUyNSIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImQ4NmIzMzkyYzEyMDJlOGZmNWE0MjNiMzAyZTYyODRkYjdmOGY0MzVlYTlmMzliNWIxYjIwZmQzYWMzNmRmY2IiCisKK1NSQ19VUklbcGF0Y2gwMDEubWQ1c3VtXSA9ICI4MTdkMDFhNmMwYWY2Zjc5MzA4YThiN2I2NDllNTNkOCIKK1NSQ19VUklbcGF0Y2gwMDEuc2hhMjU2c3VtXSA9ICIzZTI4ZDkxNTMxNzUyZGY5YThjYjE2N2FkMDdjYzU0MmFiYWY5NDRkZTkzNTNmZThjNmE1MzVjOWYxZjE3ZjBmIgorU1JDX1VSSVtwYXRjaDAwMi5tZDVzdW1dID0gIjc2NWUxNGNmZjEyYzcyODQwMDk3NzJlOGUyNGYyZmUwIgorU1JDX1VSSVtwYXRjaDAwMi5zaGEyNTZzdW1dID0gIjcwMjBhMDE4M2UxN2E3MjMzZTY2NWI5NzljNzhjMTg0ZWEzNjljZmFmM2U4YjRiMTFmNTU0N2VjYjdjMTNjNTMiCitTUkNfVVJJW3BhdGNoMDAzLm1kNXN1bV0gPSAiNDllN2RhOTNiZjA3ZjUxMGEyZWI2YmI0M2FjM2U1YTIiCitTUkNfVVJJW3BhdGNoMDAzLnNoYTI1NnN1bV0gPSAiNTFkZjVhOTE5MmZkZWZlMGRkY2E0YmRmMjkwOTMyZjc0YmUwM2ZmZDA1MDNhM2QxMTJlNDE5OTkwNWU3MThiMiIKK1NSQ19VUklbcGF0Y2gwMDQubWQ1c3VtXSA9ICI0NTU3ZDY3NGFiNTgzMWE1ZmE5ODA1MmFiMTllZGFmNCIKK1NSQ19VUklbcGF0Y2gwMDQuc2hhMjU2c3VtXSA9ICJhZDA4MGEzMGE0YWM2YzEyNzMzNzM2MTdmMjk2MjhjYzMyMGEzNWM4Y2QwNjkxMzg5NDc5NDI5M2RjNTJjOGIzIgorU1JDX1VSSVtwYXRjaDAwNS5tZDVzdW1dID0gImNjZTk2ZGQ3N2NkZDFkMjkzYmVlYzEwODQ4ZjZjYmI1IgorU1JDX1VSSVtwYXRjaDAwNS5zaGEyNTZzdW1dID0gIjIyMWU0YjcyNWI3NzBhZDBiYjY5MjRkZjNmOGQwNGY4OWVlY2E0NTU4ZjZlNGM3NzdkZmE5M2U5NjcwOTA1MjkiCitTUkNfVVJJW3BhdGNoMDA2Lm1kNXN1bV0gPSAiZDMzNzlmOGQ4YWJjZTVjNmVlMzM4ZjkzMWFkMDA4ZDUiCitTUkNfVVJJW3BhdGNoMDA2LnNoYTI1NnN1bV0gPSAiNmE4ZTJlMmE2MTgwZDBmMWNlMzlkY2Q2NTE2MjJmYjZkMmZkMDVkYjdjNDU5ZjY0YWU0MmQ2NjdmMWUzNDRiOCIKK1NSQ19VUklbcGF0Y2gwMDcubWQ1c3VtXSA9ICJlYzM4Yzc2Y2E0MzljYTdmOWMxNzhlOWJhZWRlODRmYyIKK1NSQ19VUklbcGF0Y2gwMDcuc2hhMjU2c3VtXSA9ICJkZTFjY2MwN2I3YmZjOWUyNTI0M2FkODU0ZjNiYmI1ZDNlYmY5MTU1YjA0NzdkZjE2YWFmMDBhN2IwZDVlZGFmIgorU1JDX1VSSVtwYXRjaDAwOC5tZDVzdW1dID0gImUwYmExOGMxZTNiOTRmOTA1ZGE5YjViZjlkMzhiNThiIgorU1JDX1VSSVtwYXRjaDAwOC5zaGEyNTZzdW1dID0gIjg2MTQ0NzAwNDY1OTMzNjM2ZDdiOTQ1ZTg5Yjc3ZGY5NWQzNjIwMDM0NzI1YmUxNjFjYTBjYTVhNDJlMjM5YmEiCitTUkNfVVJJW3BhdGNoMDA5Lm1kNXN1bV0gPSAiZTk1MmQ0ZjQ0ZTYxMjA0ODkzMGM1NTlkOTBlYjk5YmIiCitTUkNfVVJJW3BhdGNoMDA5LnNoYTI1NnN1bV0gPSAiMGI2YmRkMWExOGEwZDIwZTMzMGNjM2JjNzFlMDQ4ODY0ZTRhMTM2NTJlMjlkYzBlYmYzOTE4YmVhNzI5MzQzYyIKK1NSQ19VUklbcGF0Y2gwMTAubWQ1c3VtXSA9ICI1N2I1YjM1OTU1ZDY4ZjlhMDlkYmVmNmI4NmQyYzc4MiIKK1NSQ19VUklbcGF0Y2gwMTAuc2hhMjU2c3VtXSA9ICI4NDY1YzZmMmM1NmFmZTU1OTQwMjI2NWIzOWQ5ZTk0MzY4OTU0OTMwZjlhYTdmM2RmYTZkMzZkZDY2ODY4ZTA2IgorU1JDX1VSSVtwYXRjaDAxMS5tZDVzdW1dID0gImNjODk2ZTFmYTY5NmI5M2RlZDU2OGU1NTdlMjM5MmQ1IgorU1JDX1VSSVtwYXRjaDAxMS5zaGEyNTZzdW1dID0gImRkNTY0MjZlZjdkNzI5NWUxMTA3YzBiM2QwNmMxOTJlYjkyOThmNDAyM2MyMDJjYTJiYTYyNjZjNjEzZDE3MGQiCitTUkNfVVJJW3BhdGNoMDEyLm1kNXN1bV0gPSAiZmE0N2ZiZmE1NmZiN2U5ZTUzNjdmMTlhOWRmNWZjOWUiCitTUkNfVVJJW3BhdGNoMDEyLnNoYTI1NnN1bV0gPSAiZmFjMjcxZDJiZjYzNzJjOTkwM2UzYjM1M2NiOWVkYTA0NGQ3ZmUzNmI1YWFiNTJmMjFmM2YyMWNkNmEyMDYzZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGIwNzE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJCZXJrZWxleSBMQUxSIFlhY2MgcGFyc2VyIGdlbmVyYXRvciIKLURFU0NSSVBUSU9OID0gIkEgcGFyc2VyIGdlbmVyYXRvciB1dGlsaXR5IHRoYXQgcmVhZHMgYSBncmFtbWFyIHNwZWNpZmljYXRpb24gZnJvbSBhIGZpbGUgYW5kIGdlbmVyYXRlcyBhbiBMUigxKSBcCi1wYXJzZXIgZm9yIGl0LiAgVGhlIHBhcnNlcnMgY29uc2lzdCBvZiBhIHNldCBvZiBMQUxSKDEpIHBhcnNpbmcgdGFibGVzIGFuZCBhIGRyaXZlciByb3V0aW5lIHdyaXR0ZW4gaW4gdGhlIEMgXAotcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiUEQiCi0KLVNSQ19VUkkgPSAiZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvYnlhY2MvYnlhY2MtJHtQVn0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL2J5YWNjLW9wZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0ncyxeLGIsJyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQlpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5ndWVzcyAke1N9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30KLQlvZV9ydW5jb25mCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTYxMjAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE2MTIwMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU1ZjhhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTYxMjAyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyBTaWdoLiBUaGlzIGlzIG9uZSBvZiB0aG9zZSBwbGFjZXMgd2hlcmUgZXZlcnlvbmUgbGljZW5zZXMgaXQgZGlmZmVyZW50bHkuIFNvbWVvbmUKLSMgZXZlbiBhcHBseSBVQ0IgdG8gaXQgKEZyZWUvTmV0L09wZW5CU0QpLiBUaGUgbWFpbnRhaW5lciBzdGF0ZXMgdGhhdDoKLSMgIkkndmUgZm91bmQgbm8gcmVsaWFibGUgc291cmNlIHdoaWNoIHN0YXRlcyB0aGF0IGJ5YWNjIG11c3QgYmVhciBhIFVDQiBjb3B5cmlnaHQuIgotIyBTZXR0aW5nIHRvIFBEIGFzIHRoaXMgaXMgd2hhdCB0aGUgdXBzdHJlYW0gaGFzIGl0IGFzLgotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0O21kNT03NDUzM2QzMmZmZDM4YmNhNGNiZjFmMTMwNWY4YmM2MCIKLXJlcXVpcmUgYnlhY2MuaW5jCi0KLQotU1JDX1VSSVttZDVzdW1dID0gIjQ4ZWYzODQ0N2YyY2M4NjRjNzBlZjg2NGIyNmNmODE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwZGM1OGNmY2RiNzA4ZWVhN2JhMDIyZGIyOWI0MWQyZDM5MmYyMDcyNzQ5MWI5NTY5NTQzNjZmMmYyMTE3ZjAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyLTEuMC42L01ha2VmaWxlLmFtIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9NYWtlZmlsZS5hbQppbmRleCAwNWQzODlmLi5kY2Y2NDU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyLTEuMC42L01ha2VmaWxlLmFtCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDItMS4wLjYvTWFrZWZpbGUuYW0KQEAgLTQ4LDcgKzQ4LDggQEAKIAllbHNlIGVjaG8gIkZBSUw6IHNhbXBsZTMgZGVjb21wcmVzcyI7IGZpCiAKIGluc3RhbGwtcHRlc3Q6Ci0JY3AgJChzcmNkaXIpL01ha2VmaWxlCQkkKERFU1RESVIpLworCXNlZCAgLW4gJy9ecnVudGVzdDovLC9eaW5zdGFsbC1wdGVzdDovey9eaW5zdGFsbC1wdGVzdDovIXB9JyBcCisgICAgICAgICAgICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgICAgID4gJChERVNURElSKS9NYWtlZmlsZQogCWNwICQoc3JjZGlyKS9zYW1wbGUxLnJlZgkkKERFU1RESVIpLwogCWNwICQoc3JjZGlyKS9zYW1wbGUyLnJlZgkkKERFU1RESVIpLwogCWNwICQoc3JjZGlyKS9zYW1wbGUzLnJlZgkkKERFU1RESVIpLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIKaW5kZXggMDUxMmE3NS4uZGU2NjhkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC42LmJiCkBAIC0zNCw3ICszNCw2IEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1iaW5kaXI9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UE59IgogCiBkb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQljcCAtZiAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCiAJc2VkIC1pIC1lICJzfF5NYWtlZmlsZTp8X01ha2VmaWxlOnwiICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwppbmRleCBjM2ZhNDU5Li5hYzRkMjI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJBbiBJbnRlcm5ldCBwcmludGluZyBzeXN0ZW0gZm9yIFVuaXgiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5jdXBzLm9yZy8iCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgogREVQRU5EUyA9ICJnbnV0bHMgbGlicG5nIGpwZWcgZGJ1cyBkYnVzLWdsaWIgemxpYiBsaWJ1c2IiCkBAIC03OSwxMyArODAsNiBAQAogCWZpCiB9CiAKLXB5dGhvbiBkb19wYWNrYWdlX2FwcGVuZCgpIHsKLSAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgICMgQ2hhbmdlIHBlcm1pc3Npb25zIGJhY2sgdGhlIHdheSB0aGV5IHdlcmUsIHRoZXkgcHJvYmFibHkgaGFkIGEgcmVhc29uLi4uCi0gICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJykKLSAgICBzdWJwcm9jZXNzLmNhbGwoJ2NobW9kIDA1MTEgJXMvaW5zdGFsbC9jdXBzL3Zhci9ydW4vY3Vwcy9jZXJ0cycgJSB3b3JrZGlyLCBzaGVsbD1UcnVlKQotfQotCiBQQUNLQUdFUyA9KyAiJHtQTn0tbGliICR7UE59LWxpYmltYWdlIgogCiBSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdwcm9jcHMnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE3NGMzMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBjdXBzLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMzZmNmJkYTYyMDJhZTNlMjgwYWMwMGM3MTBiNWNhNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTg5YmI3ZDVkMWRjM2FhMDkxNWQ3Y2YyYjgwODU3MWVmMmUxNTMwY2QxYTZlYmU3NmFlOGY5ZjQ5OTRlNGY2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDk0YjY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIGN1cHMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1mMjEyYjQzMzhkYjBkYThjYjg5MmU5NGJmMjk0OTQ2MCIKKworU1JDX1VSSVttZDVzdW1dID0gImQyNmU1YTBhNTc0YTY5ZmUxZDAxMDc5YjI5MzFmYzQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5NmQ0ZGI3MjY1MWMzMzU0NjlhZTVmMzdiMGRhNzJhYzlmOTdkNzNlMzA4MzhkNzg3MDY1ZjU1OWRlYTk4Y2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy41LzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy42LzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjUvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy42LzAwMDEtZXhwbGljaXRseS1kaXNhYmxlLXJlcGxhY2luZy1nZXRvcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy42LzAwMDEtZXhwbGljaXRseS1kaXNhYmxlLXJlcGxhY2luZy1nZXRvcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUxZjg3YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjYvMDAwMS1leHBsaWNpdGx5LWRpc2FibGUtcmVwbGFjaW5nLWdldG9wdC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitTdWJqZWN0OiBleHBsaWNpdGx5IGRpc2FibGUgcmVwbGFjaW5nIGdldG9wdAorCitFeHBsaWNpdGx5IGRpc2FibGUgcmVwbGFjaW5nIGdldG9wdCB0byBhdm9pZCBjb21waWxhdGlvbiBlcnJvciBsaWtlIGJlbG93LgorCisgIHhzdHJ0b2wtZXJyb3IuYzo4NDoyNjogZXJyb3I6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlICdzdHJ1Y3QgcnBsX29wdGlvbicKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kXQorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbTQvZ2V0b3B0Lm00IHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL200L2dldG9wdC5tNCBiL200L2dldG9wdC5tNAoraW5kZXggM2ViYzdiNy4uODkzNDQyNiAxMDA2NDQKKy0tLSBhL200L2dldG9wdC5tNAorKysrIGIvbTQvZ2V0b3B0Lm00CitAQCAtMjIsOCArMjIsOCBAQCBBQ19ERUZVTihbZ2xfRlVOQ19HRVRPUFRfUE9TSVhdLAorICAgICBmaQorICAgXSkKKyAgIGlmIHRlc3QgJFJFUExBQ0VfR0VUT1BUID0gMTsgdGhlbgorLSAgICBkbmwgQXJyYW5nZSBmb3IgZ2V0b3B0LmggdG8gYmUgY3JlYXRlZC4KKy0gICAgZ2xfR0VUT1BUX1NVQlNUSVRVVEVfSEVBREVSCisrICAgIGRubCBFeHBsaWNpdGx5IGRpc2FibGUgcmVwbGFjaW5nIGdldG9wdAorKyAgICA6CisgICBmaQorIF0pCisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy41L3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjYvcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy41L3J1bi1wdGVzdApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNi9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jCmluZGV4IDI0MzM0MWEuLjdjNWJlNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYwpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiRGlmZnV0aWxzIGNvbnRhaW5zIHRvb2xzIHVzZWQgZm9yIGZpbmRpbmcgZGlmZmVyZW5jZXMgYmV0d2VlbiBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZGlmZnV0aWxzL2RpZmZ1dGlscy5odG1sIgogREVTQ1JJUFRJT04gPSAiRGlmZnV0aWxzIGNvbnRhaW5zIHRoZSBHTlUgZGlmZiwgZGlmZjMsIFwKIHNkaWZmLCBhbmQgY21wIHV0aWxpdGllcy4gVGhlc2UgcHJvZ3JhbXMgYXJlIHVzdWFsbHkgXAogdXNlZCBmb3IgY3JlYXRpbmcgcGF0Y2ggZmlsZXMuIgpAQCAtNiwxMyArNyw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBnZXR0ZXh0CiAKLSMgZGlmZnV0aWxzIGFzc3VtZXMgbm9uLWdsaWJjIGNvbXBpbGF0aW9uIHdpdGggdWNsaWJjIGFuZAotIyB0aGlzIGNhdXNlcyBpdCB0byBnZW5lcmF0ZSBpdHMgb3duIGltcGxlbWVudGF0aW9ucyBvZgotIyBzdGFuZGFyZCBmdW5jdGlvbmFsaXR5LiAgcmVnZXguYyBhY3R1YWxseSBicmVha3MgY29tcGlsYXRpb24KLSMgYmVjYXVzZSBpdCB1c2VzIF9fbWVtcGNweSwgdGhlcmUgYXJlIG90aGVyIHRoaW5ncyAoVEJEOgotIyBzZWUgZGlmZnV0aWxzLm1rIGluIGJ1aWxkcm9vdCkKLUVYVFJBX09FQ09ORl9saWJjLXVjbGliYyA9ICItLXdpdGhvdXQtaW5jbHVkZWQtcmVnZXgiCi0KIEFMVEVSTkFUSVZFXyR7UE59ID0gImRpZmYgY21wIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQzNTg0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotcmVxdWlyZSBkaWZmdXRpbHMuaW5jCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9kaWZmdXRpbHMvZGlmZnV0aWxzLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnNpZ3NlZ3YtcHJlZml4IgotCi0jIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAotYWNwYXRocyA9ICItSSAuL200IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBOZWVkIHRvIHJlbW92ZSBnZXR0ZXh0IG1hY3JvcyB3aXRoIHdlaXJkIG1peCBvZiB2ZXJzaW9ucwotCWZvciBpIGluIGNvZGVzZXQubTQgZ2V0dGV4dF9nbC5tNCBpbnRsbWFjb3N4Lm00IGludHR5cGVzLXByaS5tNCBsaWItbGRfZ2wubTQgbGliLXByZWZpeF9nbC5tNCBwb19nbC5tNCBzc2l6ZV90Lm00IHdjaGFyX3QubTQgd2ludF90Lm00OyBkbwotCQlybSAtZiAke1N9L200LyRpCi0JZG9uZQotfQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTY5MzU0Njk3ZmYxY2ZjOWE5ZGUzNzgxMzYxMDE1ZmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGFkMzk4Y2NkNWI5ZmFjYTZiMGFiMjE5YTAzNjQ1M2Y2MmE2MDJhNTYyMDNhYzY1OWI0M2U4ODliZWMzNTUzMyIKLQotaW5oZXJpdCBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQlpbnN0YWxsIC1EICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR0L2J1aWxkLWF1eC90ZXN0LWRyaXZlcgotCWNwIC1yICR7U30vdGVzdHMgJHQvCi0JaW5zdGFsbCAke0J9L3Rlc3RzL01ha2VmaWxlICR0L3Rlc3RzLwotCXNlZCAtZSAnc3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8JyBcCi0JICAgIC1lICdzfGJhc2h8c2h8JyBcCi0JICAgIC1lICdzfF50b3Bfc3JjZGlyID0gXCguKlwpfHRvcF9zcmNkaXIgPSAuLlwvfCcgXAotCSAgICAtZSAnc3xec3JjZGlyID0gXCguKlwpfHNyY2RpciA9IC58JyBcCi0JICAgIC1lICdzfCJgJChidWlsdF9wcm9ncmFtcylgInxkaWZmfCcgXAotCSAgICAtZSAnc3xnYXdrfGF3a3xnJyBcCi0JICAgIC1pICR0L3Rlc3RzL01ha2VmaWxlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWFkZDYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNi5iYgpAQCAtMCwwICsxLDM5IEBACitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCityZXF1aXJlIGRpZmZ1dGlscy5pbmMKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2RpZmZ1dGlscy9kaWZmdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGZpbGU6Ly8wMDAxLWV4cGxpY2l0bHktZGlzYWJsZS1yZXBsYWNpbmctZ2V0b3B0LnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDdjZjI4NjY3MmNlZDI2ZmJhNTRjZDAzMTNiZGMwNzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDYyMWU4YmRkNGI1NzM5MThjODE0NWY3YWU2MTgxN2QxYmU5ZGViNGM4ZDIzMjhhNjVjZWE4ZTExZDc4M2JkNiIKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX1BSX1BST0dSQU09JHtiaW5kaXJ9L3ByIC0td2l0aG91dC1saWJzaWdzZWd2LXByZWZpeCIKKworIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKK2FjcGF0aHMgPSAiLUkgLi9tNCIKKworaW5oZXJpdCBwdGVzdAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0KKwlpbnN0YWxsIC1EICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR0L2J1aWxkLWF1eC90ZXN0LWRyaXZlcgorCWNwIC1yICR7U30vdGVzdHMgJHQvCisJaW5zdGFsbCAke0J9L3Rlc3RzL01ha2VmaWxlICR0L3Rlc3RzLworCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSAgICAtZSAnc3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8JyBcCisJICAgIC1lICdzfGJhc2h8c2h8JyBcCisJICAgIC1lICdzfF50b3Bfc3JjZGlyID0gXCguKlwpfHRvcF9zcmNkaXIgPSAuLlwvfCcgXAorCSAgICAtZSAnc3xec3JjZGlyID0gXCguKlwpfHNyY2RpciA9IC58JyBcCisJICAgIC1lICdzfCJgJChidWlsdF9wcm9ncmFtcylgInxkaWZmfCcgXAorCSAgICAtZSAnc3xnYXdrfGF3a3xnJyBcCisJICAgIC1pICR0L3Rlc3RzL01ha2VmaWxlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTZiZGU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzcwNTFhZWY5MjE5ZGM3MjM3ZjIwNmM1YzQxNzlhNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PTRlMzZiN2E0MGUxMzdmNDJhZWU3MTgxNjU1OTBkMTI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT1jNWI4Zjc4ZjExNWRmMTg3YWY3Njg2OGEyYWVhZDE2YSIKLQotU0VDVElPTiA9ICJiYXNlIgotCi0jIExTQiBzdGF0ZXMgdGhhdCBlZCBzaG91bGQgYmUgaW4gL2Jpbi8KLWJpbmRpciA9ICIke2Jhc2VfYmluZGlyfSIKLQotIyBVcHN0cmVhbSByZWd1bGFybHkgcmVtb3ZlcyBwcmV2aW91cyByZWxlYXNlcyBmcm9tIGh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2VkLwotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvJHtCUH0udGFyLmx6IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2Y0YTU0ZmE3ZjM2NjQ3OWYwMzY1NGI4YWY2NDVmZDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZiOTdlYjhmMmEyYjVhNzFhOWI5N2UzODcyYWRjZTk1M2FhMWI4OTU4ZTA0YzViN2JmMTFkNTU2ZjMyNTUyYSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWluaGVyaXQgdGV4aW5mbwotCi1kb19jb25maWd1cmUoKSB7Ci0JJHtTfS9jb25maWd1cmUKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgotCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgotCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2QwM2IxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE0LjIuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzcwNTFhZWY5MjE5ZGM3MjM3ZjIwNmM1YzQxNzlhNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PTRlMzZiN2E0MGUxMzdmNDJhZWU3MTgxNjU1OTBkMTI1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT1jNWI4Zjc4ZjExNWRmMTg3YWY3Njg2OGEyYWVhZDE2YSIKKworU0VDVElPTiA9ICJiYXNlIgorCisjIExTQiBzdGF0ZXMgdGhhdCBlZCBzaG91bGQgYmUgaW4gL2Jpbi8KK2JpbmRpciA9ICIke2Jhc2VfYmluZGlyfSIKKworIyBVcHN0cmVhbSByZWd1bGFybHkgcmVtb3ZlcyBwcmV2aW91cyByZWxlYXNlcyBmcm9tIGh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2VkLworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2VkLyR7QlB9LnRhci5seiIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0dOVV9NSVJST1J9L2VkLyIKKworU1JDX1VSSVttZDVzdW1dID0gIjI3M2QwNDc3OGIyYTUxZjdjM2NiZmNkMjAwMTg3NmJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1Nzk2MmJhOTMwZDcwZDAyZmM3MWQ2YmU1YzVmMjM0NmIxNjk5MmE0NTVhYjljNDNiZTcwNjFkZWM5ODEwZGIiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitpbmhlcml0IHRleGluZm8KKworZG9fY29uZmlndXJlKCkgeworCSR7U30vY29uZmlndXJlCit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KKwlpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KKwkJcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCisJZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZmU5YjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGYxMDcyNjc5ODg4YzkzMzVlNDliMTdlZmI3OThiNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWYyZmQ5NjkyZjMxNTlkM2FiMWU0MWU2ZjliN2Q4ZGIyYTQ2OTNmMWNiMjIzNDhjODhiYTg5ZjcwZjBlNjUwMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICBjcCAke0J9L01ha2VmaWxlICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L3Rlc3QtY21kbGluZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWZlYXR1cmVzICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vZXRodG9vbCAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9ldGh0b29sCisgICBzZWQgLWkgJ3MvXk1ha2VmaWxlL19NYWtlZmlsZS8nICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmFmMmUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKLURFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9ldGh0b29sLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyOGM0YTRkODVjMzNmNTczYzQ5ZmY2ZDgxZWMwOTRmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYmQ4MmViZTNkNDFkZTFiN2IwZDhmNGZiMThhOGU4NDY2ZmJhOTM0Yzk1MmJjNWM1MDAyODM2ZmZhOGJiNjA2IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgIGNwICR7Qn0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1jbWRsaW5lICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtZmVhdHVyZXMgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS9ldGh0b29sICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V0aHRvb2wKLSAgIHNlZCAtaSAncy9eTWFrZWZpbGUvX01ha2VmaWxlLycgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYwppbmRleCBiZmVkZjg3Li5hZDM2NDI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKQEAgLTEzLDExICsxMyw0IEBACiBBTFRFUk5BVElWRV8ke1BOfSA9ICJmaW5kIHhhcmdzIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogCi0jIGRpZmZ1dGlscyBhc3N1bWVzIG5vbi1nbGliYyBjb21waWxhdGlvbiB3aXRoIHVjbGliYyBhbmQKLSMgdGhpcyBjYXVzZXMgaXQgdG8gZ2VuZXJhdGUgaXRzIG93biBpbXBsZW1lbnRhdGlvbnMgb2YKLSMgc3RhbmRhcmQgZnVuY3Rpb25hbGl0eS4gIHJlZ2V4LmMgYWN0dWFsbHkgYnJlYWtzIGNvbXBpbGF0aW9uCi0jIGJlY2F1c2UgaXQgdXNlcyBfX21lbXBjcHksIHRoZXJlIGFyZSBvdGhlciB0aGluZ3MgKFRCRDoKLSMgc2VlIGRpZmZ1dGlscy5tayBpbiBidWlsZHJvb3QpCi1FWFRSQV9PRUNPTkZfbGliYy11Y2xpYmMgPSAiLS13aXRob3V0LWluY2x1ZGVkLXJlZ2V4IgotCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYgppbmRleCAzZjQzOWU3Li43NDJjOWE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIk9wZW5QcmludGluZyBwcmludGVyIHN1cHBvcnQgLSBmaWx0ZXJzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvb3BlbnByaW50aW5nL3N0YXJ0IgogREVTQ1JJUFRJT04gPSAiRm9vbWF0aWMgaXMgYSBwcmludGVyIGRhdGFiYXNlIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNldCB1cCBcCiBjb21tb24gcHJpbnRlcnMgZm9yIHVzZSB3aXRoIFVOSVgtbGlrZSBvcGVyYXRpbmcgc3lzdGVtcy5cCiBJdCBwcm92aWRlcyB0aGUgImdsdWUiIGJldHdlZW4gYSBwcmludCBzcG9vbGVyIChsaWtlIENVUFMgb3IgbHByKSBhbmQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a180LjEuNC5iYgppbmRleCBkZGEzOGVmLi45OTVkMzdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a180LjEuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a180LjEuNC5iYgpAQCAtNDEsOSArNDEsOSBAQAogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewogCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlmb3IgaSBpbiBgZ3JlcCAtdkUgIkB8XiR8I3xHdC1kdW1teSIgJHtTfS90ZXN0L01ha2V0ZXN0cyB8YXdrIC1GOiAne3ByaW50ICQxfSdgIE1ha2V0ZXN0czsgXAorCWZvciBpIGluIGBncmVwIC12RSAiQHxeJHwjfEd0LWR1bW15IiAke1N9L3Rlc3QvTWFrZXRlc3RzIHxhd2sgLUY6ICd7cHJpbnQgJDF9J2AgTWFrZXRlc3RzIGluY2xpYi5hd2s7IFwKIAkgIGRvIGNwICR7U30vdGVzdC8kaSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgXAogCWRvbmUKIH0KIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTEwMjE5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi0xMDIxOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc0YWJlMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTEwMjE5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA0YmVmMWExZDMyZTI5YjY4ODU1NjE2MDIwZGJmZjU3NGI5Y2RhMDhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iaW4gV2F0dHMgPFJvYmluLldhdHRzQGFydGlmZXguY29tPgotRGF0ZTogVGh1LCAyOSBEZWMgMjAxNiAxNTo1Nzo0MyArMDAwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk3NDUzOiBBdm9pZCBkaXZpZGUgYnkgMCBpbiBzY2FuIGNvbnZlcnNpb24gY29kZS4KLQotQXJpdGhtZXRpYyBvdmVyZmxvdyBkdWUgdG8gZXh0cmVtZSB2YWx1ZXMgaW4gdGhlIHNjYW4gY29udmVyc2lvbgotY29kZSBjYW4gY2F1c2UgYSBkaXZpc2lvbiBieSAwLgotCi1Bdm9pZCB0aGlzIHdpdGggYSBzaW1wbGUgZXh0cmEgY2hlY2suCi0KLSAgZHhfb2xkPWNmODE0ZDgxCi0gIGVuZHAtPnhfbmV4dD1iMGU4NTliOQotICBhbHAtPnhfbmV4dD04MDY5YTczYQotCi1sZWFkcyB0byBkeF9kZW4gPSAwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMTAyMTkKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiYXNlL2d4ZmlsbC5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jhc2UvZ3hmaWxsLmMgYi9iYXNlL2d4ZmlsbC5jCi1pbmRleCA5OTE5NmMwLi4yZjgxYmIwIDEwMDY0NAotLS0tIGEvYmFzZS9neGZpbGwuYwotKysrIGIvYmFzZS9neGZpbGwuYwotQEAgLTE3NDEsNyArMTc0MSw3IEBAIGludGVyc2VjdChhY3RpdmVfbGluZSAqZW5kcCwgYWN0aXZlX2xpbmUgKmFscCwgZml4ZWQgeSwgZml4ZWQgeTEsIGZpeGVkICpwX3lfbmV3Ci0gICAgIGZpeGVkIGR4X29sZCA9IGFscC0+eF9jdXJyZW50IC0gZW5kcC0+eF9jdXJyZW50OwotICAgICBmaXhlZCBkeF9kZW4gPSBkeF9vbGQgKyBlbmRwLT54X25leHQgLSBhbHAtPnhfbmV4dDsKLSAKLS0gICAgaWYgKGR4X2RlbiA8PSBkeF9vbGQpCi0rICAgIGlmIChkeF9kZW4gPD0gZHhfb2xkIHx8IGR4X2RlbiA9PSAwKQotICAgICAgICAgcmV0dXJuIGZhbHNlOyAvKiBJbnRlcnNlY3Rpb24gaXNuJ3QgcG9zc2libGUuICovCi0gICAgIGR5ID0geTEgLSB5OwotICAgICBpZl9kZWJ1ZzMoJ0YnLCAiW0ZdY3Jvc3M6IGR5PSVnLCBkeF9vbGQ9JWcsIGR4X25ldz0lZ1xuIiwKLUBAIC0xNzUwLDcgKzE3NTAsNyBAQCBpbnRlcnNlY3QoYWN0aXZlX2xpbmUgKmVuZHAsIGFjdGl2ZV9saW5lICphbHAsIGZpeGVkIHksIGZpeGVkIHkxLCBmaXhlZCAqcF95X25ldwotICAgICAvKiBEbyB0aGUgY29tcHV0YXRpb24gaW4gc2luZ2xlIHByZWNpc2lvbiAqLwotICAgICAvKiBpZiB0aGUgdmFsdWVzIGFyZSBzbWFsbCBlbm91Z2guICovCi0gICAgIHlfbmV3ID0KLS0gICAgICAgICgoZHkgfCBkeF9vbGQpIDwgMUwgPDwgKHNpemVfb2YoZml4ZWQpICogNCAtIDEpID8KLSsgICAgICAgICgoKHVmaXhlZCkoZHkgfCBkeF9vbGQpKSA8ICgxTCA8PCAoc2l6ZV9vZihmaXhlZCkgKiA0IC0gMSkpID8KLSAgICAgICAgICBkeSAqIGR4X29sZCAvIGR4X2RlbiA6Ci0gICAgICAgICAgKElOQ1JfRVhQUihtcV9jcm9zcyksIGZpeGVkX211bHRfcXVvKGR5LCBkeF9vbGQsIGR4X2RlbikpKQotICAgICAgICAgKyB5OwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi0xMDIyMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtMTAyMjAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMWU4YmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi0xMDIyMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gZGFmODU3MDFkYWIwNWYxN2U5MjRhNDhhODFlZGM5MTk1YjRhMDRlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlbiBTaGFycCA8a2VuLnNoYXJwQGFydGlmZXguY29tPgotRGF0ZTogV2VkLCAyMSBEZWMgMjAxNiAxNjo1NDoxNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBmaXggY3Jhc2ggd2l0aCBiYWQgZGF0YSBzdXBwbGllZCB0byBtYWtlaW1hZ2VkZXZpY2UKLQotQnVnICM2OTc0NTAgIk51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBneF9kZXZpY2VfZmluYWxpemUoKSIKLQotVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IHRoZSBjb2RlIHRvIGZpbmFsaXNlIGEgZGV2aWNlIHVuY29uZGl0aW9uYWxseQotZnJlZXMgdGhlIGljY19zdHJ1Y3QgbWVtYmVyIG9mIHRoZSBkZXZpY2Ugc3RydWN0dXJlLiBIb3dldmVyIHRoaXMKLXBhcnRpY3VsYXIgKHdlaXJkKSBkZXZpY2UgaXMgbm90IHNldHVwIGFzIGEgbm9ybWFsIGRldmljZSwgcHJvYmFibHkKLWJlY2F1c2UgaXRzIHZlcnksIHZlcnkgYW5jaWVudC4gSXRzIHBvc3NpYmxlIGZvciB0aGUgaW5pdGlhbGlzYXRpb24KLW9mIHRoZSBkZXZpY2UgdG8gYWJvcnQgd2l0aCBhbiBlcnJvciBiZWZvcmUgY2FsbGluZyBnc19tYWtlX21lbV9kZXZpY2UoKQotd2hpY2ggaXMgd2hlcmUgdGhlIGljY19zdHJ1Y3QgbWVtYmVyIGdldHMgYWxsb2NhdGVkIChvciBzZXQgdG8gTlVMTCkuCi0KLUlmIHRoYXQgaGFwcGVucywgdGhlbiB0aGUgY2xlYW51cCBjb2RlIHRyaWVzIHRvIGZyZWUgdGhlIGRldmljZSwgd2hpY2gKLWNhbGxzIGZpbmFsaXplKCkgd2hpY2ggdHJpZXMgdG8gZnJlZSBhIGdhcmJhZ2UgcG9pbnRlci4KLQotU2V0dGluZyB0aGUgZGV2aWNlIG1lbW9yeSB0byAweDAwIGFmdGVyIHdlIGFsbG9jYXRlIGl0IG1lYW5zIHRoYXQgdGhlCi1pY2Nfc3RydWN0IG1lbWJlciB3aWxsIGJlIE5VTEw8IGFuZCBvdXIgbWVtb3J5IG1hbmFnZXIgYWxsb3dzIGZvciB0aGF0Ci1oYXBwaWx5IGVub3VnaCwgd2hpY2ggYXZvaWRzIHRoZSBwcm9ibGVtLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMjIwCi0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFzZS9nc2Rldm1lbS5jIHwgMTIgKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2Jhc2UvZ3NkZXZtZW0uYyBiL2Jhc2UvZ3NkZXZtZW0uYwotaW5kZXggOTdiOWNmNC4uZmU3NWJjYyAxMDA2NDQKLS0tLSBhL2Jhc2UvZ3NkZXZtZW0uYwotKysrIGIvYmFzZS9nc2Rldm1lbS5jCi1AQCAtMjI1LDYgKzIyNSwxOCBAQCBnc19tYWtld29yZGltYWdlZGV2aWNlKGd4X2RldmljZSAqKiBwbmV3X2RldiwgY29uc3QgZ3NfbWF0cml4ICogcG1hdCwKLSAKLSAgICAgaWYgKHBuZXcgPT0gMCkKLSAgICAgICAgIHJldHVybl9lcnJvcihnc19lcnJvcl9WTWVycm9yKTsKLSsKLSsgICAgLyogQnVnICM2OTc0NTAgIk51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBneF9kZXZpY2VfZmluYWxpemUoKSIKLSsgICAgICogSWYgd2UgaGF2ZSBpbmNvcnJlY3QgZGF0YSBwYXNzZWQgdG8gZ3NfaW5pdGlhbGlzZV93b3JkaW1hZ2VkZXZpY2UoKSB0aGVuIHRoZQotKyAgICAgKiBpbml0aWFsaXNhdGlvbiB3aWxsIGZhaWwsIGNydWNpYWxseSBpdCB3aWxsIGZhaWwgKmJlZm9yZSogaXQgY2FsbHMKLSsgICAgICogZ3NfbWFrZV9tZW1fZGV2aWNlKCkgd2hpY2ggaW5pdGlhbGlzZXMgdGhlIGRldmljZS4gVGhpcyBtZWFucyB0aGF0IHRoZQotKyAgICAgKiBpY2Nfc3RydWN0IG1lbWJlciB3aWxsIGJlIHVuaW5pdGlhbHNlZCwgYnV0IHRoZSBkZXZpY2UgZmluYWxpc2UgbWV0aG9kCi0rICAgICAqIHdpbGwgdW5jb25kaXRpb25hbGx5IGZyZWUgdGhhdCBtZW1vcnkuIFNpbmNlIGl0cyBhIGdhcmJhZ2UgcG9pbnRlciwgYmFkIHRoaW5ncyBoYXBwZW4uCi0rICAgICAqIEFwcGFyZW50bHkgd2UgZG8gc3RpbGwgbmVlZCBtYWtlaW1hZ2VkZXZpY2UgdG8gYmUgYXZhaWxhYmxlIGZyb20KLSsgICAgICogUG9zdFNjcmlwdCwgc28gaW4gaGVyZSBqdXN0IHplcm8gdGhlIGRldmljZSBtZW1vcnksIHdoaWNoIG1lYW5zIHRoYXQKLSsgICAgICogdGhlIGZpbmFsaXNlIHJvdXRpbmUgd29uJ3QgaGF2ZSBhIHByb2JsZW0uCi0rICAgICAqLwotKyAgICBtZW1zZXQocG5ldywgMHgwMCwgc3RfZGV2aWNlX21lbW9yeS5zc2l6ZSk7Ci0gICAgIGNvZGUgPSBnc19pbml0aWFsaXplX3dvcmRpbWFnZWRldmljZShwbmV3LCBwbWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzLCBudW1fY29sb3JzLCB3b3JkX29yaWVudGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9kZXZpY2UsIG1lbSk7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2OGYyMDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA2Zjc0OWMwYzQ0ZTdiOWUwOTczN2I5ZjI5ZWRmMjk5MjVhMzRmMGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IFdlZCwgNSBPY3QgMjAxNiAwOTo1OToyNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk3MTc5OiBSZWZlcmVuY2UgY291bnQgZGV2aWNlIGljYyBwcm9maWxlCi0KLXdoZW4gY29weWluZyBhIGRldmljZQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTc5NzgKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiYXNlL2dzZGV2aWNlLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2Jhc2UvZ3NkZXZpY2UuYyBiL2Jhc2UvZ3NkZXZpY2UuYwotaW5kZXggNzc4MTA2Zi4uYWVhOTg2YSAxMDA2NDQKLS0tLSBhL2Jhc2UvZ3NkZXZpY2UuYwotKysrIGIvYmFzZS9nc2RldmljZS5jCi1AQCAtNjE0LDYgKzYxNCw3IEBAIGd4X2RldmljZV9pbml0KGd4X2RldmljZSAqIGRldiwgY29uc3QgZ3hfZGV2aWNlICogcHJvdG8sIGdzX21lbW9yeV90ICogbWVtLAotICAgICBkZXYtPm1lbW9yeSA9IG1lbTsKLSAgICAgZGV2LT5yZXRhaW5lZCA9ICFpbnRlcm5hbDsKLSAgICAgcmNfaW5pdChkZXYsIG1lbSwgKGludGVybmFsID8gMCA6IDEpKTsKLSsgICAgcmNfaW5jcmVtZW50KGRldi0+aWNjX3N0cnVjdCk7Ci0gfQotIAotIHZvaWQKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtNzk3OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtNzk3OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU5MzBkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDg3NWEwMDk1ZjM3NjI2YTcyMWM3ZmY1N2Q2MDZhMGY5NWFmMDM5MTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLURhdGU6IFdlZCwgNSBPY3QgMjAxNiAxMDoxMDo1OCArMDEwMAotU3ViamVjdDogW1BBVENIXSBEU0MgcGFyc2VyIC0gdmFsaWRhdGUgcGFyYW1ldGVycwotCi1CdWcgIzY5NzE5MCAiLmluaXRpYWxpemVfZHNjX3BhcnNlciBkb2Vzbid0IHZhbGlkYXRlIHRoZSBwYXJhbWV0ZXIgaXMgYSBkaWN0IHR5cGUgYmVmb3JlIHVzaW5nIGl0LiIKLQotUmVnYXJkbGVzcyBvZiBhbnkgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBpdHMgc2ltcGx5IHdyb25nIGZvciBhIFBvc3RTY3JpcHQKLW9wZXJhdG9yIG5vdCB0byB2YWxpZGF0ZSBpdHMgcGFyYW1ldGVyKHMpLgotCi1ObyBkaWZmZXJlbmNlcyBleHBlY3RlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi03OTc5Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcHNpL3pkc2NwYXJzLmMgfCAxMyArKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BzaS96ZHNjcGFycy5jIGIvcHNpL3pkc2NwYXJzLmMKLWluZGV4IGMwNWUxNTQuLjliNGI2MDUgMTAwNjQ0Ci0tLS0gYS9wc2kvemRzY3BhcnMuYwotKysrIGIvcHNpL3pkc2NwYXJzLmMKLUBAIC0xNTAsMTEgKzE1MCwxNiBAQCB6aW5pdGlhbGl6ZV9kc2NfcGFyc2VyKGlfY3R4X3QgKmlfY3R4X3ApCi0gICAgIHJlZiBsb2NhbF9yZWY7Ci0gICAgIGludCBjb2RlOwotICAgICBvc19wdHIgY29uc3Qgb3AgPSBvc3A7Ci0tICAgIGRpY3QgKiBjb25zdCBwZGljdCA9IG9wLT52YWx1ZS5wZGljdDsKLS0gICAgZ3NfbWVtb3J5X3QgKiBjb25zdCBtZW0gPSAoZ3NfbWVtb3J5X3QgKilkaWN0X21lbW9yeShwZGljdCk7Ci0tICAgIGRzY19kYXRhX3QgKiBjb25zdCBkYXRhID0KLS0gICAgICAgIGdzX2FsbG9jX3N0cnVjdChtZW0sIGRzY19kYXRhX3QsICZzdF9kc2NfZGF0YV90LCAiRFNDIHBhcnNlciBpbml0Iik7Ci0rICAgIGRpY3QgKnBkaWN0OwotKyAgICBnc19tZW1vcnlfdCAqbWVtOwotKyAgICBkc2NfZGF0YV90ICpkYXRhOwotIAotKyAgICBjaGVja19yZWFkX3R5cGUoKm9wLCB0X2RpY3Rpb25hcnkpOwotKwotKyAgICBwZGljdCA9IG9wLT52YWx1ZS5wZGljdDsKLSsgICAgbWVtID0gKGdzX21lbW9yeV90ICopZGljdF9tZW1vcnkocGRpY3QpOwotKwotKyAgICBkYXRhID0gZ3NfYWxsb2Nfc3RydWN0KG1lbSwgZHNjX2RhdGFfdCwgJnN0X2RzY19kYXRhX3QsICJEU0MgcGFyc2VyIGluaXQiKTsKLSAgICAgaWYgKCFkYXRhKQotICAgICAgICAgcmV0dXJuX2Vycm9yKGdzX2Vycm9yX1ZNZXJyb3IpOwotICAgICBkYXRhLT5kb2N1bWVudF9sZXZlbCA9IDA7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTg2MDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTg2MDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ODU2N2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi04NjAyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSBmNWM3NTU1YzMwMzkzZTY0ZWMxZjVhYjBkZmFlNWI1NWIzYjNmYzc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IFNhdCwgOCBPY3QgMjAxNiAxNjoxMDoyNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk3MjAzOiBjaGVjayBmb3Igc3VmZmljaWVudCBwYXJhbXMgaW4gLnNldGhhbGZ0b25lNQotCi1hbmQgcGFyYW0gdHlwZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi04NjAyCi0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcHNpL3podDIuYyB8IDEyICsrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHNpL3podDIuYyBiL3BzaS96aHQyLmMKLWluZGV4IGZiNGEyNjQuLmRmYTI3YTQgMTAwNjQ0Ci0tLS0gYS9wc2kvemh0Mi5jCi0rKysgYi9wc2kvemh0Mi5jCi1AQCAtODIsMTQgKzgyLDIyIEBAIHpzZXRoYWxmdG9uZTUoaV9jdHhfdCAqaV9jdHhfcCkKLSAgICAgZ3NfbWVtb3J5X3QgKm1lbTsKLSAgICAgdWludCBlZGVwdGggPSByZWZfc3RhY2tfY291bnQoJmVfc3RhY2spOwotICAgICBpbnQgbnBvcCA9IDI7Ci0tICAgIGludCBkaWN0X2VudW0gPSBkaWN0X2ZpcnN0KG9wKTsKLSsgICAgaW50IGRpY3RfZW51bTsKLSAgICAgcmVmIHJ2YWx1ZVsyXTsKLSAgICAgaW50IGNuYW1lLCBjb2xvcmFudF9udW1iZXI7Ci0gICAgIGJ5dGUgKiBwbmFtZTsKLSAgICAgdWludCBuYW1lX3NpemU7Ci0gICAgIGludCBoYWxmdG9uZXR5cGUsIHR5cGUgPSAwOwotICAgICBnc19nc3RhdGUgKnBncyA9IGlnczsKLS0gICAgaW50IHNwYWNlX2luZGV4ID0gcl9zcGFjZV9pbmRleChvcCAtIDEpOwotKyAgICBpbnQgc3BhY2VfaW5kZXg7Ci0rCi0rICAgIGlmIChyZWZfc3RhY2tfY291bnQoJm9fc3RhY2spIDwgMikKLSsgICAgICAgIHJldHVybl9lcnJvcihnc19lcnJvcl9zdGFja3VuZGVyZmxvdyk7Ci0rICAgIGNoZWNrX3R5cGUoKm9wLCB0X2RpY3Rpb25hcnkpOwotKyAgICBjaGVja190eXBlKCoob3AgLSAxKSwgdF9kaWN0aW9uYXJ5KTsKLSsKLSsgICAgZGljdF9lbnVtID0gZGljdF9maXJzdChvcCk7Ci0rICAgIHNwYWNlX2luZGV4ID0gcl9zcGFjZV9pbmRleChvcCAtIDEpOwotIAotICAgICBtZW0gPSAoZ3NfbWVtb3J5X3QgKikgaWRtZW1vcnktPnNwYWNlc19pbmRleGVkW3NwYWNlX2luZGV4XTsKLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctNzk3NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctNzk3NS5wYXRjaAppbmRleCBkMDg4NmM5Li5lNDA2MDg2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTc5NzUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy03OTc1LnBhdGNoCkBAIC0xLDYgKzEsNyBAQAotRnJvbSA1ZTU3ZTQ4MzI5OGRhZThiOGQ0ZWM5YWFiMzdhNTI2NzM2YWMyZTk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2hhaWxlc2ggTWlzdHJ5IDxzaGFpbGVzaC5taXN0cnlAaG90bWFpbC5jby51az4KLURhdGU6IFdlZCwgMjYgQXByIDIwMTcgMjI6MTI6MTQgKzAxMDAKK0Zyb20gYjM5YmUxMDE5YjRhY2MxYWE1MGM2MDI2NDYzYzU0MzMzMmU5NWEzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE2OjE4OjE0ICswMzAwCisKIFN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzY5MzogUHJldmVudCBTRUdWIGR1ZSB0byBpbnRlZ2VyIG92ZXJmbG93LgogCiBXaGlsZSBidWlsZGluZyBhIEh1ZmZtYW4gdGFibGUsIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyB3ZXJlIHN1c2NlcHRpYmxlCkBAIC0xMiwxNSArMTMsMTcgQEAKIENWRTogQ1ZFLTIwMTctNzk3NQogCiBTaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGpiaWcyZGVjL2piaWcyX2h1ZmZtYW4uYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9qYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMgYi9qYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMKLWluZGV4IDUxMWU0NjEuLmI0MTg5YTEgMTAwNjQ0CitDb250ZW50cyBvZiB0aGlzIHBhdGNoIHdlcmUgZXh0cmFjdGVkIGZyb20gYSBsYXJnZXIgcGF0Y2ggd2hpY2ggYWRkcmVzc2VkCit0d28gQ1ZFJ3MuICBUaGUgY29udGV4dCAobG9jYXRpb24gb2Ygeykgd2FzIGFsc28gbW9kaWZpZWQgdG8gYXBwbHkgdG8KK2dob3N0c2NyaXB0IDkuMjEuCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCiAtLS0gYS9qYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMKICsrKyBiL2piaWcyZGVjL2piaWcyX2h1ZmZtYW4uYwotQEAgLTQyMSw4ICs0MjEsOCBAQCBqYmlnMl9idWlsZF9odWZmbWFuX3RhYmxlKEpiaWcyQ3R4ICpjdHgsIGNvbnN0IEpiaWcySHVmZm1hblBhcmFtcyAqcGFyYW1zKQorQEAgLTQyMSw4ICs0MjEsOCBAQCBqYmlnMl9idWlsZF9odWZmbWFuX3RhYmxlKEpiaWcyQ3R4ICpjdHgsCiAgCiAgICAgICAgICAgICAgaWYgKFBSRUZMRU4gPT0gQ1VSTEVOKSB7CiAgICAgICAgICAgICAgICAgIGludCBSQU5HRUxFTiA9IGxpbmVzW0NVUlRFTVBdLlJBTkdFTEVOOwpAQCAtMzEsNiArMzQsNCBAQAogICAgICAgICAgICAgICAgICBieXRlIGVmbGFncyA9IDA7CiAgCiAgICAgICAgICAgICAgICAgIGlmIChlbmRfaiA+IG1heF9qKSB7Ci0tLSAKLTIuMTAuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2F2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Nzk0ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2F2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaApAQCAtMCwwICsxLDE5IEBACitSZW1vdmUgaGFyZGNvZGUgcGF0aCByZWZlciB0byBob3N0IHRvIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KK2RpZmYgLS1naXQgYS9kZXZpY2VzL2RldnMubWFrIGIvZGV2aWNlcy9kZXZzLm1haworaW5kZXggMzA3MGQyZS4uZGY2NjNmMCAxMDA2NDQKKy0tLSBhL2RldmljZXMvZGV2cy5tYWsKKysrKyBiL2RldmljZXMvZGV2cy5tYWsKK0BAIC01NDYsNyArNTQ2LDcgQEAgJChERVZPQkopZ2RldnhhbHQuJChPQkopIDogJChERVZTUkMpZ2RldnhhbHQuYyAkKEdERVZYKSAkKG1hdGhfX2gpICQobWVtb3J5X19oKVwKKyAjIyMgTk9OIFBPUlRBQkxFLCBPTkxZIFVOSVggV0lUSCBHQ0MgU1VQUE9SVAorIAorICQoREVWT0JKKVgxMS5zbyA6ICQoeDExYWx0XykgJCh4MTFfKSAkKERFVlNfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDTEQpICQoTERGTEFHUykgLXNoYXJlZCAtbyAkKERFVk9CSilYMTEuc28gJCh4MTFhbHRfKSAkKHgxMV8pIC1ML3Vzci9YMTFSNi9saWIgLWxYdCAtbFNNIC1sSUNFIC1sWGV4dCAtbFgxMSAkKFhMSUJESVJTKQorKwkkKENDTEQpICQoTERGTEFHUykgLXNoYXJlZCAtbyAkKERFVk9CSilYMTEuc28gJCh4MTFhbHRfKSAkKHgxMV8pIC1sWHQgLWxTTSAtbElDRSAtbFhleHQgLWxYMTEgJChYTElCRElSUykKKyAKKyAjIyMjIyMgLS0tLS0tLS0tLS0tLS0tIE1lbW9yeS1idWZmZXJlZCBwcmludGVyIGRldmljZXMgLS0tLS0tLS0tLS0tLS0tICMjIyMjIworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcwOTE5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLUp1c3QgdXNlIGNvbW1hbmRzIHByb3ZpZGVkIGJ5IGdob3N0c2NyaXB0LW5hdGl2ZSwgcHJldmVudGluZyByZWNvbXBpbGUgdGhlbSB3aGVuCi1jb21waWxlIGdob3N0c2NyaXB0LgotV2F5IHRvIGVuYWJsZSBjcm9zcyBjb21waWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLQotUmViYXNlIHRvIDkuMTkKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJhc2UvdW5peC1hdXgubWFrIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jhc2UvdW5peC1hdXgubWFrIGIvYmFzZS91bml4LWF1eC5tYWsKLWluZGV4IDAxMTA2NjcuLmUyZWIxYTEgMTAwNjQ0Ci0tLS0gYS9iYXNlL3VuaXgtYXV4Lm1hawotKysrIGIvYmFzZS91bml4LWF1eC5tYWsKLUBAIC03MSw0NCArNzEsNDQgQEAgJChHTE9CSilncF9zeXN2LiQoT0JKKTogJChHTFNSQylncF9zeXN2LmMgJChzdGRpb19faCkgJCh0aW1lX19oKSAkKEFLKVwKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEF1eGlsaWFyeSBwcm9ncmFtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwotIAotLSQoRUNIT0dTX1hFKTogJChHTFNSQyllY2hvZ3MuYyAkKEFLKSAkKHN0ZHByZV9oKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoRUNIT0dTX1hFKSAkKEdMU1JDKWVjaG9ncy5jICQoQVVYRVhUUkFMSUJTKQotLQotKyMkKEVDSE9HU19YRSk6ICQoR0xTUkMpZWNob2dzLmMgJChBSykgJChzdGRwcmVfaCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChFQ0hPR1NfWEUpICQoR0xTUkMpZWNob2dzLmMgJChBVVhFWFRSQUxJQlMpCi0rIwotICMgT24gdGhlIFJTLzYwMDAgKGF0IGxlYXN0KSwgY29tcGlsaW5nIGdlbmFyY2guYyB3aXRoIGdjYyB3aXRoIC1PCi0gIyBwcm9kdWNlcyBhIGJ1Z2d5IGV4ZWN1dGFibGUuCi0tJChHRU5BUkNIX1hFKTogJChHTFNSQylnZW5hcmNoLmMgJChBSykgJChHRU5BUkNIX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5BUkNIX1hFKSAkKEdMU1JDKWdlbmFyY2guYyAkKEFVWEVYVFJBTElCUykKLS0KLS0kKEdFTkNPTkZfWEUpOiAkKEdMU1JDKWdlbmNvbmYuYyAkKEFLKSAkKEdFTkNPTkZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0tCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkNPTkZfWEUpICQoR0xTUkMpZ2VuY29uZi5jICQoQVVYRVhUUkFMSUJTKQotLQotLSQoR0VOREVWX1hFKTogJChHTFNSQylnZW5kZXYuYyAkKEFLKSAkKEdFTkRFVl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOREVWX1hFKSAkKEdMU1JDKWdlbmRldi5jICQoQVVYRVhUUkFMSUJTKQotLQotLSQoR0VOSFRfWEUpOiAkKEdMU1JDKWdlbmh0LmMgJChBSykgJChHRU5IVF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDQ0FVWF8pICQoR0VOSFRfQ0ZMQUdTKSAkKE9fKSQoR0VOSFRfWEUpICQoR0xTUkMpZ2VuaHQuYyAkKEFVWEVYVFJBTElCUykKLS0KLSsjJChHRU5BUkNIX1hFKTogJChHTFNSQylnZW5hcmNoLmMgJChBSykgJChHRU5BUkNIX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQVJDSF9YRSkgJChHTFNSQylnZW5hcmNoLmMgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKEdFTkNPTkZfWEUpOiAkKEdMU1JDKWdlbmNvbmYuYyAkKEFLKSAkKEdFTkNPTkZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5DT05GX1hFKSAkKEdMU1JDKWdlbmNvbmYuYyAkKEFVWEVYVFJBTElCUykKLSsjCi0rIyQoR0VOREVWX1hFKTogJChHTFNSQylnZW5kZXYuYyAkKEFLKSAkKEdFTkRFVl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkRFVl9YRSkgJChHTFNSQylnZW5kZXYuYyAkKEFVWEVYVFJBTElCUykKLSsjCi0rIyQoR0VOSFRfWEUpOiAkKEdMU1JDKWdlbmh0LmMgJChBSykgJChHRU5IVF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKEdFTkhUX0NGTEFHUykgJChPXykkKEdFTkhUX1hFKSAkKEdMU1JDKWdlbmh0LmMgJChBVVhFWFRSQUxJQlMpCi0rIwotICMgVG8gZ2V0IEdTIHRvIHVzZSB0aGUgc3lzdGVtIHpsaWIsIHlvdSByZW1vdmUvaGlkZSB0aGUgZ3MvemxpYiBkaXJlY3RvcnkKLSAjIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG1rcm9tZnMgYnVpbGQgY2FuJ3QgZmluZCB0aGUgemxpYiBzb3VyY2UgaXQgbmVlZHMuCi0gIyBTbyBpdCdzIHNwbGl0IGludG8gdHdvIHRhcmdldHMsIG9uZSB1c2luZyB0aGUgemxpYiBzb3VyY2UgZGlyZWN0bHkuLi4uLgotLU1LUk9NRlNfT0JKU18wPSQoTUtST01GU19aTElCX09CSlMpICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKLS0gJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0tICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopICQoQVVYKW1lbWVudG8uJChPQkopCi0tCi0tJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotLQkkKENDQVVYXykgJChHRU5PUFQpICQoQ0ZMQUdTKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8wICQoTUtST01GU19PQkpTXzApICQoQVVYRVhUUkFMSUJTKQotLQotKyNNS1JPTUZTX09CSlNfMD0kKE1LUk9NRlNfWkxJQl9PQkpTKSAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCi0rIyAkKEFVWClnc2NkZWZzLiQoT0JKKSAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKLSsjICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopICQoQVVYKW1lbWVudG8uJChPQkopCi0rIwotKyMkKE1LUk9NRlNfWEUpXzA6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChHRU5PUFQpICQoQ0ZMQUdTKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8wICQoTUtST01GU19PQkpTXzApICQoQVVYRVhUUkFMSUJTKQotKyMKLSAjIC4uLi4gYW5kIG9uZSB1c2luZyB0aGUgemxpYiBsaWJyYXJ5IGxpbmtlZCB2aWEgdGhlIGNvbW1hbmQgbGluZQotLU1LUk9NRlNfT0JKU18xPSQoQVVYKWdzY2RlZnMuJChPQkopIFwKLS0gJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAotLSAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKLS0gJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikKLS0KLS0kKE1LUk9NRlNfWEUpXzE6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMSkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0tCSQoQ0NBVVhfKSAkKEdFTk9QVCkgJChDRkxBR1MpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCi0tCi0tJChNS1JPTUZTX1hFKTogJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotLQkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKLSsjTUtST01GU19PQkpTXzE9JChBVVgpZ3NjZGVmcy4kKE9CSikgXAotKyMgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAotKyMgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0rIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKQotKyMKLSsjJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoR0VOT1BUKSAkKENGTEFHUykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMSAkKE1LUk9NRlNfT0JKU18xKSAkKEFVWEVYVFJBTElCUykKLSsjCi0rIyQoTUtST01GU19YRSk6ICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ1BfKSAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChNS1JPTUZTX1hFKQotIAotICMgUXVlcnkgdGhlIGVudmlyb25tZW50IHRvIGNvbnN0cnVjdCBnY29uZmlnXy5oLgotICMgVGhlc2UgYXJlIGFsbCBkZWZpbmVkIGNvbmRpdGlvbmFsbHkgKGV4Y2VwdCB0aGUgSmFzUEVSIG9uZSksIHNvIHRoYXQKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaAppbmRleCA4ZmEyYzQwLi4zZWMzOTU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaApAQCAtMTAsNiArMTAsNyBAQAogMjAxNSAwMDo0MDoyMiAtMDgwMCAgU3ViamVjdDogW1BBVENIXSBjb250cmliLm1hazogZml4IGZvciBwYXJhbGxlbCBidWlsZAogCiBTaWduZWQtb2ZmLWJ5OiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNvbnRyaWIvY29udHJpYi5tYWsgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZmM2U2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorZ2hvc3RzY3JpcHQtbmF0aXZlOmZpeCBkaXNhYmxlLXN5c3RlbS1saWJ0aWZmCisKK01vZGlmeSBjb25maWd1cmUgdG8gYWRkIHRoZSBjaGVjayB0byBtYWtlIHN1cmUKK2dob3N0c2NyaXAgY291bGQgd29yayB3aGlsZSBzeXN0ZW0tbGlidGlmZiBpcworZGlzYWJsZWQuCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworVXBkYXRlZCB0byBhcHBseSB0byBnaG9zdHNjcmlwdCA5LjIxLgorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisKKworLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMjU5LDYgKzEyNTksNyBAQCBjYXNlICJ4JHdpdGhfc3lzdGVtX2xpYnRpZmYiIGluCisgZXNhYworIAorIGlmIHRlc3QgeCIkU0hBUkVfTElCVElGRiIgPSB4IjAiIDsgdGhlbgorKyAgICBpZiB0ZXN0IC1lICRMSUJUSUZGRElSL2NvbmZpZ3VyZTsgdGhlbgorICAgICAgIGVjaG8gIlJ1bm5pbmcgbGlidGlmZiBjb25maWd1cmUgc2NyaXB0Li4uIgorICAgICAgIG9sZGRpcj1gcHdkYAorICAgICAgIGlmICEgdGVzdCAtZCAiJExJQlRJRkZDT05GRElSIiA7IHRoZW4KK0BAIC0xMjcyLDYgKzEyNzMsMTAgQEAgaWYgdGVzdCB4IiRTSEFSRV9MSUJUSUZGIiA9IHgiMCIgOyB0aGVuCisgICAgICAgY2QgIiRvbGRkaXIiCisgICAgICAgZWNobworICAgICAgIGVjaG8gIkNvbnRpbnVpbmcgd2l0aCBHaG9zdHNjcmlwdCBjb25maWd1cmF0aW9uLi4uIgorKyAgICBlbHNlCisrICAgICAgQUNfTVNHX05PVElDRShbQ291bGQgbm90IGZpbmQgbG9jYWwgY29weSBvZiBsaWJ0aWZmLgorK0Rpc2FibGluZyB0aWZmIG91dHB1dCBkZXZpY2VzLl0pCisrICAgIGZpCisgZmkKKyAKKyBBQ19TVUJTVChTSEFSRV9MSUJUSUZGKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmM2ZDA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorSnVzdCB1c2UgY29tbWFuZHMgcHJvdmlkZWQgYnkgZ2hvc3RzY3JpcHQtbmF0aXZlLCBwcmV2ZW50aW5nIHJlY29tcGlsZSB0aGVtIHdoZW4KK2NvbXBpbGUgZ2hvc3RzY3JpcHQuCitXYXkgdG8gZW5hYmxlIGNyb3NzIGNvbXBpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLYW5nIEthaSA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gOS4xOQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gOS4yMQorU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCistLS0gYS9iYXNlL3VuaXgtYXV4Lm1haworKysrIGIvYmFzZS91bml4LWF1eC5tYWsKK0BAIC02Niw0NSArNjYsNDUgQEAgJChHTE9CSilncF9zeXN2LiQoT0JKKTogJChHTFNSQylncF9zeXN2LgorIAorICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXV4aWxpYXJ5IHByb2dyYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCisgCistJChFQ0hPR1NfWEUpOiAkKEdMU1JDKWVjaG9ncy5jICQoQUspICQoc3RkcHJlX2gpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChFQ0hPR1NfWEUpICQoR0xTUkMpZWNob2dzLmMgJChBVVhFWFRSQUxJQlMpCistCisrIyQoRUNIT0dTX1hFKTogJChHTFNSQyllY2hvZ3MuYyAkKEFLKSAkKHN0ZHByZV9oKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEVDSE9HU19YRSkgJChHTFNSQyllY2hvZ3MuYyAkKEFVWEVYVFJBTElCUykKKysjCisgIyBPbiB0aGUgUlMvNjAwMCAoYXQgbGVhc3QpLCBjb21waWxpbmcgZ2VuYXJjaC5jIHdpdGggZ2NjIHdpdGggLU8KKyAjIHByb2R1Y2VzIGEgYnVnZ3kgZXhlY3V0YWJsZS4KKy0kKEdFTkFSQ0hfWEUpOiAkKEdMU1JDKWdlbmFyY2guYyAkKEFLKSAkKEdFTkFSQ0hfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCistCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkFSQ0hfWEUpICQoR0xTUkMpZ2VuYXJjaC5jICQoQVVYRVhUUkFMSUJTKQorLQorLSQoR0VOQ09ORl9YRSk6ICQoR0xTUkMpZ2VuY29uZi5jICQoQUspICQoR0VOQ09ORl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQ09ORl9YRSkgJChHTFNSQylnZW5jb25mLmMgJChBVVhFWFRSQUxJQlMpCistCistJChHRU5ERVZfWEUpOiAkKEdMU1JDKWdlbmRldi5jICQoQUspICQoR0VOREVWX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5ERVZfWEUpICQoR0xTUkMpZ2VuZGV2LmMgJChBVVhFWFRSQUxJQlMpCistCistJChHRU5IVF9YRSk6ICQoR0xTUkMpZ2VuaHQuYyAkKEFLKSAkKEdFTkhUX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChHRU5IVF9DRkxBR1MpICQoT18pJChHRU5IVF9YRSkgJChHTFNSQylnZW5odC5jICQoQVVYRVhUUkFMSUJTKQorLQorKyMkKEdFTkFSQ0hfWEUpOiAkKEdMU1JDKWdlbmFyY2guYyAkKEFLKSAkKEdFTkFSQ0hfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCisrIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5BUkNIX1hFKSAkKEdMU1JDKWdlbmFyY2guYyAkKEFVWEVYVFJBTElCUykKKysjCisrIyQoR0VOQ09ORl9YRSk6ICQoR0xTUkMpZ2VuY29uZi5jICQoQUspICQoR0VOQ09ORl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkNPTkZfWEUpICQoR0xTUkMpZ2VuY29uZi5jICQoQVVYRVhUUkFMSUJTKQorKyMKKysjJChHRU5ERVZfWEUpOiAkKEdMU1JDKWdlbmRldi5jICQoQUspICQoR0VOREVWX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOREVWX1hFKSAkKEdMU1JDKWdlbmRldi5jICQoQVVYRVhUUkFMSUJTKQorKyMKKysjJChHRU5IVF9YRSk6ICQoR0xTUkMpZ2VuaHQuYyAkKEFLKSAkKEdFTkhUX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoR0VOSFRfQ0ZMQUdTKSAkKE9fKSQoR0VOSFRfWEUpICQoR0xTUkMpZ2VuaHQuYyAkKEFVWEVYVFJBTElCUykKKysjCisgIyBUbyBnZXQgR1MgdG8gdXNlIHRoZSBzeXN0ZW0gemxpYiwgeW91IHJlbW92ZS9oaWRlIHRoZSBncy96bGliIGRpcmVjdG9yeQorICMgd2hpY2ggbWVhbnMgdGhhdCB0aGUgbWtyb21mcyBidWlsZCBjYW4ndCBmaW5kIHRoZSB6bGliIHNvdXJjZSBpdCBuZWVkcy4KKyAjIFNvIGl0J3Mgc3BsaXQgaW50byB0d28gdGFyZ2V0cywgb25lIHVzaW5nIHRoZSB6bGliIHNvdXJjZSBkaXJlY3RseS4uLi4uCistTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAorLSAkKEFVWClnc2NkZWZzLiQoT0JKKSAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKKy0gJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikgJChBVVgpbWVtZW50by4kKE9CSikKKy0KKy0kKE1LUk9NRlNfWEUpXzA6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCistCSQoQ0NBVVhfKSAkKEdFTk9QVEFVWCkgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKKy0KKysjTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAorKyMgJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCisrIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQorKyMKKysjJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoR0VOT1BUQVVYKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8wICQoTUtST01GU19PQkpTXzApICQoQVVYRVhUUkFMSUJTKQorKyMKKyAjIC4uLi4gYW5kIG9uZSB1c2luZyB0aGUgemxpYiBsaWJyYXJ5IGxpbmtlZCB2aWEgdGhlIGNvbW1hbmQgbGluZQorLU1LUk9NRlNfT0JKU18xPSQoQVVYKWdzY2RlZnMuJChPQkopIFwKKy0gJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAorLSAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKKy0gJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikKKy0KKy0kKE1LUk9NRlNfWEUpXzE6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMSkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCistCSQoQ0NBVVhfKSAkKEdFTk9QVEFVWCkgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMSAkKE1LUk9NRlNfT0JKU18xKSAkKEFVWEVYVFJBTElCUykKKy0KKy0kKE1LUk9NRlNfWEUpOiAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCistCSQoQ1BfKSAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChNS1JPTUZTX1hFKQorLQorKyNNS1JPTUZTX09CSlNfMT0kKEFVWClnc2NkZWZzLiQoT0JKKSBcCisrIyAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCisrIyAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKKysjICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopCisrIworKyMkKE1LUk9NRlNfWEUpXzE6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMSkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCisrIwkkKENDQVVYXykgJChHRU5PUFRBVVgpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCisrIworKyMkKE1LUk9NRlNfWEUpOiAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCisrIwkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKKysjCisgIyBRdWVyeSB0aGUgZW52aXJvbm1lbnQgdG8gY29uc3RydWN0IGdjb25maWdfLmguCisgIyBUaGVzZSBhcmUgYWxsIGRlZmluZWQgY29uZGl0aW9uYWxseSAoZXhjZXB0IHRoZSBKYXNQRVIgb25lKSwgc28gdGhhdAorICMgdGhleSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5ncyBmcm9tIHRoZSBjb25maWd1cmUgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE1ODExNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLWdob3N0c2NyaXB0LW5hdGl2ZTpmaXggZGlzYWJsZS1zeXN0ZW0tbGlidGlmZgotCi1Nb2RpZnkgY29uZmlndXJlIHRvIGFkZCB0aGUgY2hlY2sgdG8gbWFrZSBzdXJlCi1naG9zdHNjcmlwIGNvdWxkIHdvcmsgd2hpbGUgc3lzdGVtLWxpYnRpZmYgaXMKLWRpc2FibGVkLgotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTA1NSw2ICsxMDU1LDcgQEAgRGlzYWJsaW5nIHRpZmYgb3V0cHV0IGRldmljZXMuXSkKLSBlc2FjCi0gCi0gaWYgdGVzdCAkU0hBUkVfTElCVElGRiAtZXEgMDsgdGhlbgotKyAgICBpZiB0ZXN0IC1lICRMSUJUSUZGRElSL2NvbmZpZ3VyZTsgdGhlbgotICAgICAgIGVjaG8KLSAgICAgICBlY2hvICJSdW5uaW5nIGxpYnRpZmYgY29uZmlndXJlIHNjcmlwdC4uLiIKLSAgICAgICBvbGRkaXI9YHB3ZGAKLUBAIC0xMDY5LDYgKzEwNzAsMTAgQEAgaWYgdGVzdCAkU0hBUkVfTElCVElGRiAtZXEgMDsgdGhlbgotICAgICAgIGNkICIkb2xkZGlyIgotICAgICAgIGVjaG8KLSAgICAgICBlY2hvICJDb250aW51aW5nIHdpdGggR2hvc3RzY3JpcHQgY29uZmlndXJhdGlvbi4uLiIKLSsgICAgZWxzZQotKyAgICAgIEFDX01TR19OT1RJQ0UoW0NvdWxkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgbGlidGlmZi4KLStEaXNhYmxpbmcgdGlmZiBvdXRwdXQgZGV2aWNlcy5dKQotKyAgICBmaQotIGZpCi0gCi0gQUNfU1VCU1QoU0hBUkVfTElCVElGRikKLS0tIAotMS44LjEuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21rZGlyLXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21rZGlyLXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE3ZWFiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWtkaXItcC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitnaG9zdHNjcmlwdDogYWxsb3cgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCBtb3JlIHRoYW4gb25jZQorCitXaGVuIGRvaW5nIHBhcmFsbGVsIGJ1aWxkcywgd2UgbWlnaHQgdHJ5IHRvIGNyZWF0ZSBkaXJlY3RvcmllcworbW9yZSB0aGFuIG9uY2UuICBUaGlzIHNob3VsZCBub3QgY2F1c2UgYW4gZXJyb3IuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKworLS0tIGEvYmFzZS91bml4LWVuZC5tYWsKKysrKyBiL2Jhc2UvdW5peC1lbmQubWFrCitAQCAtMTcsMTUgKzE3LDE0IEBACisgVU5JWF9FTkRfTUFLPSQoR0xTUkMpdW5peC1lbmQubWFrICQoVE9QX01BS0VGSUxFUykKKyAjIERlZmluZSB0aGUgcnVsZSBmb3IgYnVpbGRpbmcgc3RhbmRhcmQgY29uZmlndXJhdGlvbnMuCisgZGlyZWN0b3JpZXM6ICQoVU5JWF9FTkRfTUFLKQorLQlAaWYgdGVzdCAiJChCSU5ESVIpIiAgICAhPSAiIiAtYSAhIC1kICQoQklORElSKTsgICAgICAgIHRoZW4gbWtkaXIgJChCSU5ESVIpOyAgICAgICAgZmkKKy0JQGlmIHRlc3QgIiQoR0xHRU5ESVIpIiAgIT0gIiIgLWEgISAtZCAkKEdMR0VORElSKTsgICAgICB0aGVuIG1rZGlyICQoR0xHRU5ESVIpOyAgICAgIGZpCistCUBpZiB0ZXN0ICIkKEdMT0JKRElSKSIgICE9ICIiIC1hICEgLWQgJChHTE9CSkRJUik7ICAgICAgdGhlbiBta2RpciAkKEdMT0JKRElSKTsgICAgICBmaQorLQlAaWYgdGVzdCAiJChERVZHRU5ESVIpIiAhPSAiIiAtYSAhIC1kICQoREVWR0VORElSKTsgICAgIHRoZW4gbWtkaXIgJChERVZHRU5ESVIpOyAgICAgZmkKKy0JQGlmIHRlc3QgIiQoREVWT0JKRElSKSIgIT0gIiIgLWEgISAtZCAkKERFVk9CSkRJUik7ICAgICB0aGVuIG1rZGlyICQoREVWT0JKRElSKTsgICAgIGZpCistCUBpZiB0ZXN0ICIkKEFVWERJUikiICAgICE9ICIiIC1hICEgLWQgJChBVVhESVIpOyAgICAgICAgdGhlbiBta2RpciAkKEFVWERJUik7ICAgICAgICBmaQorLQlAaWYgdGVzdCAiJChQU0dFTkRJUikiICAhPSAiIiAtYSAhIC1kICQoUFNHRU5ESVIpOyAgICAgIHRoZW4gbWtkaXIgJChQU0dFTkRJUik7ICAgICAgZmkKKy0JQGlmIHRlc3QgIiQoUFNHRU5ESVIpIiAgIT0gIiIgLWEgISAtZCAkKFBTR0VORElSKS9jdXBzOyB0aGVuIG1rZGlyICQoUFNHRU5ESVIpL2N1cHM7IGZpCistCUBpZiB0ZXN0ICIkKFBTT0JKRElSKSIgICE9ICIiIC1hICEgLWQgJChQU09CSkRJUik7ICAgICAgdGhlbiBta2RpciAkKFBTT0JKRElSKTsgICAgICBmaQorKwlAaWYgdGVzdCAiJChCSU5ESVIpIiAgICAhPSAiIiAtYSAhIC1kICQoQklORElSKTsgICAgICAgIHRoZW4gbWtkaXIgLXAgJChCSU5ESVIpOyAgICAgICAgZmkKKysJQGlmIHRlc3QgIiQoR0xHRU5ESVIpIiAgIT0gIiIgLWEgISAtZCAkKEdMR0VORElSKTsgICAgICB0aGVuIG1rZGlyIC1wICQoR0xHRU5ESVIpOyAgICAgIGZpCisrCUBpZiB0ZXN0ICIkKEdMT0JKRElSKSIgICE9ICIiIC1hICEgLWQgJChHTE9CSkRJUik7ICAgICAgdGhlbiBta2RpciAtcCAkKEdMT0JKRElSKTsgICAgICBmaQorKwlAaWYgdGVzdCAiJChERVZHRU5ESVIpIiAhPSAiIiAtYSAhIC1kICQoREVWR0VORElSKTsgICAgIHRoZW4gbWtkaXIgLXAgJChERVZHRU5ESVIpOyAgICAgZmkKKysJQGlmIHRlc3QgIiQoREVWT0JKRElSKSIgIT0gIiIgLWEgISAtZCAkKERFVk9CSkRJUik7ICAgICB0aGVuIG1rZGlyIC1wICQoREVWT0JKRElSKTsgICAgIGZpCisrCUBpZiB0ZXN0ICIkKEFVWERJUikiICAgICE9ICIiIC1hICEgLWQgJChBVVhESVIpOyAgICAgICAgdGhlbiBta2RpciAtcCAkKEFVWERJUik7ICAgICAgICBmaQorKwlAaWYgdGVzdCAiJChQU0dFTkRJUikiICAhPSAiIiAtYSAhIC1kICQoUFNHRU5ESVIpL2N1cHM7IHRoZW4gbWtkaXIgLXAgJChQU0dFTkRJUikvY3VwczsgZmkKKysJQGlmIHRlc3QgIiQoUFNPQkpESVIpIiAgIT0gIiIgLWEgISAtZCAkKFBTT0JKRElSKTsgICAgICB0aGVuIG1rZGlyIC1wICQoUFNPQkpESVIpOyAgICAgIGZpCisgCisgCisgZ3M6IC5nc3N1YnRhcmdldCAkKFVOSVhfRU5EX01BSykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG5nX21hay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG5nX21hay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI4NDk4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3BuZ19tYWsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1naG9zdHNjcmlwdDogYWRkIGRlcGVuZGVuY3kgZm9yIHBuZ2xpYmNvbmYuaAotCi1XaGVuIHVzaW5nIHBhcmFsbGVsIG1ha2Ugam9icywgd2UgbmVlZCB0byBiZSBzdXJlIHRoYXQKLXBuZ2xpYmNvbmYuaCBpcyBjcmVhdGVkIGJlZm9yZSB3ZSB0cnkgdG8gcmVmZXJlbmNlIGl0LAotc28gYWRkIGEgcnVsZSB0byBwbmcubWFrLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1SZWJhc2UgdG8gOS4xOQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFzZS9wbmcubWFrIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2Jhc2UvcG5nLm1hayBiL2Jhc2UvcG5nLm1hawotaW5kZXggZmU1YzZlMi4uOGFiYjUzYSAxMDA2NDQKLS0tLSBhL2Jhc2UvcG5nLm1hawotKysrIGIvYmFzZS9wbmcubWFrCi1AQCAtNzQsNiArNzQsOCBAQCBwbmcuY2xlYW4tbm90LWNvbmZpZy1jbGVhbiA6Ci0gCi0gcG5nbGliY29uZl9oPSQoUE5HR0VORElSKSQoRClwbmdsaWJjb25mLmgKLSAKLSskKE1BS0VESVJTKSA6ICQocG5nbGliY29uZl9oKQotKwotIHBuZy5jb25maWctY2xlYW4gOgotIAkkKFJNXykgJChwbmdsaWJjb25mX2gpCi0gCSQoUk1fKSAkKFBOR0dFTilscGcqLmRldgotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxZDk3MDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIEdQTCBHaG9zdHNjcmlwdCBQb3N0U2NyaXB0L1BERiBpbnRlcnByZXRlciIKLURFU0NSSVBUSU9OID0gIkdob3N0c2NyaXB0IGlzIHVzZWQgZm9yIFBvc3RTY3JpcHQvUERGIHByZXZpZXcgYW5kIHByaW50aW5nLiAgVXN1YWxseSBhcyBcCi1hIGJhY2stZW5kIHRvIGEgcHJvZ3JhbSBzdWNoIGFzIGdob3N0dmlldywgaXQgY2FuIGRpc3BsYXkgUG9zdFNjcmlwdCBhbmQgUERGIFwKLWRvY3VtZW50cyBpbiBhbiBYMTEgZW52aXJvbm1lbnQuIFwKLVwKLUZ1cnRoZXJtb3JlLCBpdCBjYW4gcmVuZGVyIFBvc3RTY3JpcHQgYW5kIFBERiBmaWxlcyBhcyBncmFwaGljcyB0byBiZSBwcmludGVkIFwKLW9uIG5vbi1Qb3N0U2NyaXB0IHByaW50ZXJzLiBTdXBwb3J0ZWQgcHJpbnRlcnMgaW5jbHVkZSBjb21tb24gXAotZG90LW1hdHJpeCwgaW5ramV0IGFuZCBsYXNlciBtb2RlbHMuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ2hvc3RzY3JpcHQuY29tIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzBkYzJiYWM0ZDBjZTQ0NDhkYTg3M2NkODZiMTIzZmMiCi0KLURFUEVORFMgPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIHRpZmYganBlZyBmb250Y29uZmlnIGN1cHMgbGlicG5nIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAibGlicG5nLW5hdGl2ZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLVNSQ19VUklfQkFTRSA9ICJodHRwczovL2dpdGh1Yi5jb20vQXJ0aWZleFNvZnR3YXJlL2dob3N0cGRsLWRvd25sb2Fkcy9yZWxlYXNlcy9kb3dubG9hZC9nczkyMC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4xNi1XZXJyb3ItcmV0dXJuLXR5cGUucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmdfbWFrLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2ggXAotIgotCi1TUkNfVVJJID0gIiR7U1JDX1VSSV9CQVNFfSBcCi0gICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03MjA3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMjE5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMjIwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTU5NTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtODYwMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03OTc1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTc5NzcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNzk3OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi03OTc5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTkyMTYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTYxMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NjEyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk3MzkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTcyNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NzI3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk4MzUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTE3MTQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7U1JDX1VSSV9CQVNFfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkzYzU5ODdjZDNhYjM0MTEwOGJlMWViYmFhZGMyNGZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0OWI2NGI0NmVjZjg5MDZkYjU0YTk0ZWNmODNhYjk3NTM0ZWJmOTQ2Zjc3MGQzYzNmMjgzY2I0NjljYjZlMTQiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQteCAtLXdpdGgtc3lzdGVtLWxpYnRpZmYgLS13aXRob3V0LWpiaWcyZGVjIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLXdpdGgtY3Vwcy1zZXJ2ZXJiaW49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1jdXBzLWRhdGFkaXI9JHtkYXRhZGlyfS9jdXBzIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2hvMzIgPSAiIC0td2l0aC1sYXJnZV9jb2xvcl9pbmRleD0wIgotCi0jIEV4cGxpY2l0eSBkaXNhYmxlIGxpYnRpZmYsIGZvbnRjb25maWcsCi0jIGZyZWV0eXBlLCBjdXBzIGZvciBnaG9zdHNjcmlwdC1uYXRpdmUKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXggLS13aXRoLXN5c3RlbS1saWJ0aWZmPW5vIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWpiaWcyZGVjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0tZGlzYWJsZS1mb250Y29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZyZWV0eXBlIC0tZGlzYWJsZS1jdXBzIgotCi0jIFRoaXMgaGFzIGJlZW4gZml4ZWQgdXBzdHJlYW0gYnV0IGZvciBub3cgd2UgbmVlZCB0byBzdWJ2ZXJ0IHRoZSBjaGVjayBmb3IgdGltZS5oCi0jIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDQzCi0jIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDI2Ci1DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCi1CVUlMRF9DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCBvYmoKLQlta2RpciAtcCBzb29iagotCWlmIFsgLWUgJHtXT1JLRElSfS9vYmphcmNoLmggXTsgdGhlbgotCQljcCAke1dPUktESVJ9L29iamFyY2guaCBvYmovYXJjaC5oCi0JZmkKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7Ci0JIyBjb3B5IHRvb2xzIGZyb20gdGhlIG5hdGl2ZSBnaG9zdHNjcmlwdCBidWlsZAotCWlmIFsgIiR7UE59IiAhPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIiBdOyB0aGVuCi0JCW1rZGlyIC1wIG9iai9hdXggc29vYmoKLQkJZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KLQkJCWNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9naG9zdHNjcmlwdC0ke1BWfS8kaSBvYmovYXV4LyRpCi0JCWRvbmUKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi0gICAgY3AgLXIgJHtTfS9SZXNvdXJjZSAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLSAgICBjcCAtciAke1N9L2ljY3Byb2ZpbGVzICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotfQotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgbWtkaXIgLXAgb2JqCi0gICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KLSAgICAgICAgb2VfcnVubWFrZSBvYmovYXV4LyRpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9Ci0gICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgb2JqL2F1eC8kaSAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9LyRpCi0gICAgZG9uZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjk4NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIxLmJiCkBAIC0wLDAgKzEsMTM3IEBACitTVU1NQVJZID0gIlRoZSBHUEwgR2hvc3RzY3JpcHQgUG9zdFNjcmlwdC9QREYgaW50ZXJwcmV0ZXIiCitERVNDUklQVElPTiA9ICJHaG9zdHNjcmlwdCBpcyB1c2VkIGZvciBQb3N0U2NyaXB0L1BERiBwcmV2aWV3IGFuZCBwcmludGluZy4gIFVzdWFsbHkgYXMgXAorYSBiYWNrLWVuZCB0byBhIHByb2dyYW0gc3VjaCBhcyBnaG9zdHZpZXcsIGl0IGNhbiBkaXNwbGF5IFBvc3RTY3JpcHQgYW5kIFBERiBcCitkb2N1bWVudHMgaW4gYW4gWDExIGVudmlyb25tZW50LiBcCitcCitGdXJ0aGVybW9yZSwgaXQgY2FuIHJlbmRlciBQb3N0U2NyaXB0IGFuZCBQREYgZmlsZXMgYXMgZ3JhcGhpY3MgdG8gYmUgcHJpbnRlZCBcCitvbiBub24tUG9zdFNjcmlwdCBwcmludGVycy4gU3VwcG9ydGVkIHByaW50ZXJzIGluY2x1ZGUgY29tbW9uIFwKK2RvdC1tYXRyaXgsIGlua2pldCBhbmQgbGFzZXIgbW9kZWxzLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbSIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcwZGMyYmFjNGQwY2U0NDQ4ZGE4NzNjZDg2YjEyM2ZjIgorCitERVBFTkRTID0gImdob3N0c2NyaXB0LW5hdGl2ZSB0aWZmIGpwZWcgZm9udGNvbmZpZyBjdXBzIGxpYnBuZyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnBuZy1uYXRpdmUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQXJ0aWZleFNvZnR3YXJlL2dob3N0cGRsLWRvd25sb2Fkcy9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitTUkNfVVJJX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMvZG93bmxvYWQvZ3M5MjEvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9ta2Rpci1wLnBhdGNoIFwKKyIKKworU1JDX1VSSSA9ICIke1NSQ19VUklfQkFTRX0gXAorICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vYmphcmNoLmggXAorICAgICAgICAgICBmaWxlOi8vY3Vwcy1uby1nY3J5cHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNzk3Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03MjA3LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTU5NTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzk3NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05MjE2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk2MTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTYxMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NzM5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk3MjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTcyNy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05ODM1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExNzE0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjVmMjEzMjgxNzYxZDI3NTBmY2YyNzQ3NmM0MDRkMTdmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyYmNlYWRiYzRkZGRlYjZmMmVlYzljOGIxNjIzZDk0NWQzNTVjYTExYjhiNGRmMDM1MzMyYjIxN2Q1OGNlODUiCisKKyMgUHV0IHNvbWV0aGluZyBsaWtlCisjCisjICAgUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tZ2hvc3RzY3JpcHQgPSAiIHgxMSIKKyMKKyMgaW4gbG9jYWwuY29uZiB0byBlbmFibGUgYnVpbGRpbmcgd2l0aCBYMTEuICBCZSBjYXJlZnVsLiAgVGhlIG9yZGVyCisjIG9mIHRoZSBvdmVycmlkZXMgbWF0dGVycyEKKyMKKyNQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCBcCisgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXgsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHQgZ3RrKzNcCisgICAgICAgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN5c3RlbS1saWJ0aWZmIC0td2l0aG91dC1qYmlnMmRlYyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS13aXRoLWN1cHMtc2VydmVyYmluPSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtY3Vwcy1kYXRhZGlyPSR7ZGF0YWRpcn0vY3VwcyBcCisgICAgICAgICAgICAgICAgQ1VQU0NPTkZJRz0iJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vY3Vwcy1jb25maWciIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2hvMzIgPSAiIC0td2l0aC1sYXJnZV9jb2xvcl9pbmRleD0wIgorCisjIEV4cGxpY2l0eSBkaXNhYmxlIGxpYnRpZmYsIGZvbnRjb25maWcsCisjIGZyZWV0eXBlLCBjdXBzIGZvciBnaG9zdHNjcmlwdC1uYXRpdmUKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXggLS13aXRoLXN5c3RlbS1saWJ0aWZmPW5vIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWpiaWcyZGVjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0tZGlzYWJsZS1mb250Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZyZWV0eXBlIC0tZGlzYWJsZS1jdXBzIgorCisjIFRoaXMgaGFzIGJlZW4gZml4ZWQgdXBzdHJlYW0gYnV0IGZvciBub3cgd2UgbmVlZCB0byBzdWJ2ZXJ0IHRoZSBjaGVjayBmb3IgdGltZS5oCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDQzCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDI2CitDRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCitCVUlMRF9DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCBvYmoKKwlta2RpciAtcCBzb29iagorCWlmIFsgLWUgJHtXT1JLRElSfS9vYmphcmNoLmggXTsgdGhlbgorCQljcCAke1dPUktESVJ9L29iamFyY2guaCBvYmovYXJjaC5oCisJZmkKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisJIyBjb3B5IHRvb2xzIGZyb20gdGhlIG5hdGl2ZSBnaG9zdHNjcmlwdCBidWlsZAorCWlmIFsgIiR7UE59IiAhPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIiBdOyB0aGVuCisJCW1rZGlyIC1wIG9iai9hdXggc29vYmoKKwkJZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KKwkJCWNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9naG9zdHNjcmlwdC0ke1BWfS8kaSBvYmovYXV4LyRpCisJCWRvbmUKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9SZXNvdXJjZSAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KKyAgICBjcCAtciAke1N9L2ljY3Byb2ZpbGVzICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworfQorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgbWtkaXIgLXAgb2JqCisgICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KKyAgICAgICAgb2VfcnVubWFrZSBvYmovYXV4LyRpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9CisgICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgb2JqL2F1eC8kaSAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9LyRpCisgICAgZG9uZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBnaG9zdHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0cyAiYXJjIgorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhcmMpLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2ZpbGVzL2hlbGxvd29ybGQuZ28gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2ZpbGVzL2hlbGxvd29ybGQuZ28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNTNjNDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9maWxlcy9oZWxsb3dvcmxkLmdvCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLy8gWW91IGNhbiBlZGl0IHRoaXMgY29kZSEKLS8vIENsaWNrIGhlcmUgYW5kIHN0YXJ0IHR5cGluZy4KLS8vIHRha2VuIGZyb20gaHR0cHM6Ly9nb2xhbmcub3JnLwotcGFja2FnZSBtYWluCi0KLWltcG9ydCAiZm10IgotCi1mdW5jIG1haW4oKSB7Ci0JZm10LlByaW50bG4oIkhlbGxvLCDkuJbnlYwiKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1leGFtcGxlcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWV4YW1wbGVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzMjY4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWV4YW1wbGVzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSBzaW1wbGUgZXhhbXBsZSByZWNpcGUgdGhhdCBjcm9zcy1jb21waWxlcyBhIEdvIHByb2dyYW0uIgotU0VDVElPTiA9ICJleGFtcGxlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ29sYW5nLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotaW5oZXJpdCBnbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIKaW5kZXggOTMwYzU3ZC4uMjIyZmM5ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWhlbGxvd29ybGRfMC4xLmJiCkBAIC0xLDEzICsxLDE5IEBACi1yZXF1aXJlIGdvLWV4YW1wbGVzLmluYworREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIHJlY2lwZSB0aGF0IGNyb3NzLWNvbXBpbGVzIGEgR28gcHJvZ3JhbS4iCitTRUNUSU9OID0gImV4YW1wbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9nb2xhbmcub3JnLyIKIAotU1JDX1VSSSArPSAiIFwKLSAgZmlsZTovL2hlbGxvd29ybGQuZ28gXAotIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKIAotZG9fY29tcGlsZSgpIHsKLQlnbyBidWlsZCBoZWxsb3dvcmxkLmdvCi19CitTUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSIKK1NSQ1JFViA9ICI0NjY5NWQ4MWQxZmFlOTA1YTI3MGZiN2RiOGE0ZDExYTMzNDU2MmZlIgogCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L2hlbGxvd29ybGQgJHtEfSR7YmluZGlyfS9oZWxsb3dvcmxkCitHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9nb2xhbmcvZXhhbXBsZSIKK0dPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2hlbGxvIgorCitpbmhlcml0IGdvCisKKyMgVGhpcyBpcyBqdXN0IHRvIG1ha2UgY2xlYXIgd2hlcmUgdGhpcyBleGFtcGxlIGlzCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2hlbGxvICR7RH0ke2JpbmRpcn0vJHtCUE59CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQwMDNmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIGdwZXJmLmluYwotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMWYxZGIzMmZiNjU5OGQ2YTkzZTZlODg3OTZhODYzMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NjcxMTJhMjA0NDA3ZTYyZGJjMzEwNjY0N2NmODM5ZWQ1NDRmM2NmNWQwZjA1MjNhYWEyNTA4NjIzYWFkNjNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDI4MjBiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjEuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIGdwZXJmLmluYworCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZTI1MWMwYTYxOGFkMDgyNGI1MTExN2Q1ZDlkYjg3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODg1NDZiOTQ1YmJhNGI3MGI2YTNhNjE2ZTgwYjRhYjQ2NmUzZjMzMDI0YTM1MmZjMjE5ODExMmNkYmIzYWUyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjk0MGQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIGdyZXAgdXRpbGl0eSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL2dyZXAvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9ncm91cD1ncmVwIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTgwMDZkOWM4MTQyNzdjMWJmYzRjYTIyYWY5NGI1OWVlIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3JlcC9ncmVwLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYTA3YzE2MTZhZGViOWMzMjYyYmU1MTc3ZDEwYWQ0YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMmM4MWRiNTA1NmUzZThjNTk5NWYwYmI1ZDBkMGUxY2FkMWY2ZjQ1YzNiMmZjNzdiNmU4MTQzNWFlZDQ4YWI1IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcGVybC1yZWdleHAiCi0KLSMgRml4ICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGxlbihUTVBESVIpID0gNDEwCi1hY3BhdGhzID0gIi1JIC4vbTQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L200L2luaXQubTQKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQlpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCQltdiAke0R9JHtiaW5kaXJ9L2dyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2dyZXAKLQkJbXYgJHtEfSR7YmluZGlyfS9lZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZWdyZXAKLQkJbXYgJHtEfSR7YmluZGlyfS9mZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZmdyZXAKLQkJcm1kaXIgJHtEfSR7YmluZGlyfS8KLQlmaQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJncmVwIGVncmVwIGZncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2dyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2dyZXAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZWdyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2VncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2ZncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9mZ3JlcCIKLQotZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9zaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWI2YjkzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4xLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiR05VIGdyZXAgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL2dyZXAvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9ncm91cD1ncmVwIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTgwMDZkOWM4MTQyNzdjMWJmYzRjYTIyYWY5NGI1OWVlIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3JlcC9ncmVwLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmZWNhN2IzZTdjN2Y0YWFiMmI0MmVjYmZjNTEzYjA3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjYyNWM3YWIzYmIzZWU3NTdiMzkyNmE1Y2ZhOGQ5ZTFjMzk5MWFkMjQ3MDdhODNkZGU4YTVlZjJiZjdhMDdlIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcGVybC1yZWdleHAiCisKKyMgRml4ICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGxlbihUTVBESVIpID0gNDEwCithY3BhdGhzID0gIi1JIC4vbTQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L200L2luaXQubTQKK30KKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCQltdiAke0R9JHtiaW5kaXJ9L2dyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2dyZXAKKwkJbXYgJHtEfSR7YmluZGlyfS9lZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZWdyZXAKKwkJbXYgJHtEfSR7YmluZGlyfS9mZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZmdyZXAKKwkJcm1kaXIgJHtEfSR7YmluZGlyfS8KKwlmaQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJncmVwIGVncmVwIGZncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2dyZXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZWdyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2VncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9mZ3JlcCIKKworZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9zaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2ZpbGVzLzAwMDEtZ3ppcC1wb3J0LXpkaWZmLXpsZXNzLXRvLUJ1c3lib3gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkNWExOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gNWY3MTI2MjE4MjllZDgxYTc1ODA3NzQzMTIyNmE4NmRmMzdmYmMzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbnlzIFphZ29ydWkgPGRlbnlzLnphZ29ydWlAZ2xvYmFsbG9naWMuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE2OjA1OjUwICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGd6aXA6IHBvcnQgemRpZmYsIHpsZXNzIHRvIEJ1c3lib3gKKworUHJvYmxlbSByZXBvcnRlZCBieSBEZW55cyBaYWdvcnVpIChCdWcjMjYwODgpLgorKiB0ZXN0cy96ZGlmZjogQ2hlY2sgdGhhdCBkaWZmIHVzZXMgUE9TSVgtZm9ybWF0IG91dHB1dC4KKyogemxlc3MuaW4gKGxlc3NfdmVyc2lvbik6IERvbid0IGV4aXQgbWVyZWx5IGJlY2F1c2UgJ2xlc3MgLVYnCitmYWlsczsgaW5zdGVhZCwgYXNzdW1lICdsZXNzJyBpcyBjb21wYXRpYmxlIHdpdGggYW4gb2xkIHZlcnNpb24gb2YKK3RoZSBvcmlnaW5hbCAnbGVzcycuICBCdXN5Ym94ICdsZXNzIC1WJyBmYWlscywgYnV0IGFwcGFyZW50bHkgaXRzCisnbGVzcycgd29ya3MgYW55d2F5IHNvbWVob3cuCisKK1NpZ25lZC1vZmYtYnk6IERlbnlzIFphZ29ydWkgPGRlbnlzLnphZ29ydWlAZ2xvYmFsbG9naWMuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCistLS0KKyB0ZXN0cy96ZGlmZiB8IDQgKysrLQorIHpsZXNzLmluICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvemRpZmYgYi90ZXN0cy96ZGlmZgoraW5kZXggMGJiN2M3ZC4uOWNkNGZkNCAxMDA3NTUKKy0tLSBhL3Rlc3RzL3pkaWZmCisrKysgYi90ZXN0cy96ZGlmZgorQEAgLTIyLDcgKzIyLDYgQEAKKyAKKyBlY2hvIGEgPiBhIHx8IGZyYW1ld29ya19mYWlsdXJlXworIGVjaG8gYiA+IGIgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCistZ3ppcCBhIGIgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCisgCisgY2F0IDw8RU9GID4gZXhwCisgMWMxCitAQCAtMzEsNyArMzAsMTAgQEAgY2F0IDw8RU9GID4gZXhwCisgPiBiCisgRU9GCisgCisrZGlmZiBhIGIgfCBkaWZmIGV4cCAtIHx8IHNraXBfICJkaWZmIG91dHB1dCBmb3JtYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggUE9TSVgiCisrCisgZmFpbD0wCisrZ3ppcCBhIGIgfHwgZmFpbD0xCisgemRpZmYgYS5neiBiLmd6ID4gb3V0IDI+JjEKKyB0ZXN0ICQ/ID0gMSB8fCBmYWlsPTEKKyAKK2RpZmYgLS1naXQgYS96bGVzcy5pbiBiL3psZXNzLmluCitpbmRleCBlNjM0YWY2Li45NzU5YWU2IDEwMDY0NAorLS0tIGEvemxlc3MuaW4KKysrKyBiL3psZXNzLmluCitAQCAtNDcsNyArNDcsNyBAQCBpZiB0ZXN0ICIke0xFU1NNRVRBQ0hBUlMrc2V0fSIgIT0gc2V0OyB0aGVuCisgICBleHBvcnQgTEVTU01FVEFDSEFSUworIGZpCisgCistbGVzc192ZXJzaW9uPWBsZXNzIC1WYCB8fCBleGl0CisrbGVzc192ZXJzaW9uPWBsZXNzIC1WIDI+L2Rldi9udWxsYAorIGNhc2UgJGxlc3NfdmVyc2lvbiBpbgorIGxlc3MnICc0NVsxLTldKiB8IFwKKyBsZXNzJyAnNFs2LTldWzAtOV0qIHwgXAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZmlsZXMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2ZpbGVzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjdjNjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2ZpbGVzL3J1bi1wdGVzdApAQCAtMCwwICsxLDYgQEAKKyMhL2Jpbi9zaAorCitjZCBzcmMvdGVzdHMKKworbWFrZSBjaGVjaworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjguYmIKaW5kZXggMTFiZTg0Ni4uZDA5MzIwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYgpAQCAtMiw3ICsyLDkgQEAKIAogTElDRU5TRSA9ICJHUEx2MysiCiAKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nemlwLyR7QlB9LnRhci5neiIKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nemlwLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vd3JvbmctcGF0aC1maXgucGF0Y2giCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKQEAgLTEyLDYgKzE0LDI2IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCitpbmhlcml0IHB0ZXN0CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2J1aWxkLWF1eAorCWNwICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L3NyYy9idWlsZC1hdXgvCisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL3Rlc3RzCisJY3AgLXIgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cworCXNlZCAtZSAncy9eYWJzX3NyY2RpciA9IC4uKi9hYnNfc3JjZGlyID0gXC5cLi8nIFwKKyAgICAgICAgICAgIC1lICdzL150b3Bfc3JjZGlyID0gLi4qL3RvcF9zcmNkaXIgPSBcLlwuLycgXAorICAgICAgICAgICAgLWUgJ3MvXkdSRVAgPSAuLiovR1JFUCA9IGdyZXAvJyAgICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAncy9eQVdLID0gLi4qL0FXSyA9IGF3ay8nICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzL15zcmNkaXIgPSAuLiovc3JjZGlyID0gXC4vJyAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MvXk1ha2VmaWxlOiAuLiovTWFrZWZpbGU6IC8nICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyAgIFwKKyAgICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisgICAgICAgICAgICAke0J9L3Rlc3RzL01ha2VmaWxlID4gJHtEfSR7UFRFU1RfUEFUSH0vc3JjL3Rlc3RzL01ha2VmaWxlCit9CisKIFNSQ19VUklbbWQ1c3VtXSA9ICI3MzI1NTMxNTI4MTRiMjJkYzM1YWEwMjY3ZGY1Mjg2YyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmY3YWVkYjNkNjZhMGQ3M2Y0NDJmNjI2MWU0YjM4NjBkZjZmZDZjOTQwMjVjMmNiMzFhMjAyYzljNjBmZTBlIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTAwOTI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXR5IGZvciB2aWV3aW5nL21hbmlwdWxhdGluZyBJREUgZGlzayBkcml2ZS9kcml2ZXIgcGFyYW1ldGVycyIKLURFU0NSSVBUSU9OID0gImhkcGFybSBpcyBhIExpbnV4IHNoZWxsIHV0aWxpdHkgZm9yIHZpZXdpbmcgXAotYW5kIG1hbmlwdWxhdGluZyB2YXJpb3VzIElERSBkcml2ZSBhbmQgZHJpdmVyIHBhcmFtZXRlcnMuIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyIgotTElDRU5TRV8ke1BOfSA9ICJCU0QiCi1MSUNFTlNFXyR7UE59LWRiZyA9ICJCU0QiCi1MSUNFTlNFX3dpcGVyID0gIkdQTHYyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLlRYVDttZDU9OTEwYThhNDJjOTYyZDIzODYxOWM3NWZkYjc4YmRiMjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YTgyZDdiYTNhZGU5ZThlYzkwMjc0OWRiOThjNTkyZjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvR1BMdjIudHh0O21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci93aXBlci5zaDtiZWdpbmxpbmU9NztlbmRsaW5lPTMxO21kNT1iN2JjNjQyYWRkYzE1MmVhMzA3NTA1YmYxYTI5NmYwOSIKLQotCi1QQUNLQUdFUyA9KyAid2lwZXIiCi0KLUZJTEVTX3dpcGVyID0gIiR7YmluZGlyfS93aXBlci5zaCIKLQotUkRFUEVORFNfd2lwZXIgPSAiYmFzaCBnYXdrIHN0YXQiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2hkcGFybS8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZmUwYTcxZGIwMmY3ZmZjNjAyZDE0YTY5Zjc2NmNmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYWZhZDg4OTFlY2JlNjQ0YzI4M2Y3ZDcyNTE1NzY2MGViZjhiZDViNGQ5ZDY3MjMyYWZkNDVmODNkMmQ1ZDkxIgotCi1FWFRSQV9PRU1BS0UgPSAnU1RSSVA9ImVjaG8iIExERkxBR1M9IiR7TERGTEFHU30iJwotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaGRwYXJtIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2hkcGFybV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hkcGFybSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfSAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0vJHtiaW5kaXJ9Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIGluc3RhbGwKLQljcCAke1N9L3dpcGVyL3dpcGVyLnNoICR7RH0vJHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZmRjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIlV0aWxpdHkgZm9yIHZpZXdpbmcvbWFuaXB1bGF0aW5nIElERSBkaXNrIGRyaXZlL2RyaXZlciBwYXJhbWV0ZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9oZHBhcm0vIgorREVTQ1JJUFRJT04gPSAiaGRwYXJtIGlzIGEgTGludXggc2hlbGwgdXRpbGl0eSBmb3Igdmlld2luZyBcCithbmQgbWFuaXB1bGF0aW5nIHZhcmlvdXMgSURFIGRyaXZlIGFuZCBkcml2ZXIgcGFyYW1ldGVycy4iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIiCitMSUNFTlNFXyR7UE59ID0gIkJTRCIKK0xJQ0VOU0VfJHtQTn0tZGJnID0gIkJTRCIKK0xJQ0VOU0Vfd2lwZXIgPSAiR1BMdjIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVFhUO21kNT00OTVkMDNlNTBkYzZjODlkNmEzMDEwN2FiMGRmNWIwMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1hODJkN2JhM2FkZTllOGVjOTAyNzQ5ZGI5OGM1OTJmMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci9HUEx2Mi50eHQ7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL3dpcGVyLnNoO2JlZ2lubGluZT03O2VuZGxpbmU9MzE7bWQ1PWI3YmM2NDJhZGRjMTUyZWEzMDc1MDViZjFhMjk2ZjA5IgorCisKK1BBQ0tBR0VTID0rICJ3aXBlciIKKworRklMRVNfd2lwZXIgPSAiJHtiaW5kaXJ9L3dpcGVyLnNoIgorCitSREVQRU5EU193aXBlciA9ICJiYXNoIGdhd2sgc3RhdCIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaGRwYXJtLyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQxMDUzOWQwYmYzY2MyNDcxODE1OTQ1ODFlZGJmYjUzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMzNDI5Y2Q0MjNlMjcxZmE1NjViZjU4NDU5OGZkNzUxZGQyZTc3M2JiNzE5OWE1OTJiMDZiNWE2MWNlYzRmYjYiCisKK0VYVFJBX09FTUFLRSA9ICdTVFJJUD0iZWNobyIgTERGTEFHUz0iJHtMREZMQUdTfSInCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJoZHBhcm0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaGRwYXJtXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGRwYXJtIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9ICR7RH0vJHttYW5kaXJ9L21hbjggJHtEfS8ke2JpbmRpcn0KKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdzYmluZGlyPSR7YmFzZV9zYmluZGlyfScgaW5zdGFsbAorCWNwICR7U30vd2lwZXIvd2lwZXIuc2ggJHtEfS8ke2JpbmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjU2Mjc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2FycGluZy1maXgtYXJwaW5nLWhhbmctaWYtU0lHQUxSTS1pcy1ibG9ja2VkLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK2FycGluZzogZml4IGFycGluZyBoYW5nIGlmIFNJR0FMUk0gaXMgYmxvY2tlZAorCitVbmJsb2NrIFNJR0FMUk0gc28gdGhhdCB0aGUgcHJldmlvdXNseSBjYWxsZWQgYWxhcm0oKSBjYW4gcHJldmVudAorcmVjdmZyb20oKSBmcm9tIGJsb2NraW5nIGZvcmV2ZXIgaW4gY2FzZSB0aGUgaW5oZXJpdGVkIHByb2NtYXNrIGlzCitibG9ja2luZyBTSUdBTFJNIGFuZCBubyBwYWNrZXQgaXMgcmVjZWl2ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworUmVwb3J0ZWQtYnk6IFJ1aSBQcmlvciA8cnByaW9yQGRjYy5mYy51cC5wdD4KK1JILUJ1Z3ppbGxhOiAjMTA4NTk3MQorU2lnbmVkLW9mZi1ieTogSmFuIFN5bmFjZWsgPGpzeW5hY2VrQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBaaGVuYm8gR2FvIDx6aGVuYm8uZ2FvQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9hcnBpbmcuYy5vcmlnIGIvYXJwaW5nLmMKK2luZGV4IDM1NDA4YzEuLjIwOTgxNTkgMTAwNjQ0CistLS0gYS9hcnBpbmcuYy5vcmlnCisrKysgYi9hcnBpbmcuYworQEAgLTEyMTUsMTYgKzEyMTUsMjIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQlzb2NrbGVuX3QgYWxlbiA9IHNpemVvZihmcm9tKTsKKyAJCWludCBjYzsKKyAKKysJCXNpZ2VtcHR5c2V0KCZzc2V0KTsKKysJCXNpZ2FkZHNldCgmc3NldCwgU0lHQUxSTSk7CisrCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0lOVCk7CisrCQkvKiBVbmJsb2NrIFNJR0FMUk0gc28gdGhhdCB0aGUgcHJldmlvdXNseSBjYWxsZWQgYWxhcm0oKQorKwkJICogY2FuIHByZXZlbnQgcmVjdmZyb20gZnJvbSBibG9ja2luZyBmb3JldmVyIGluIGNhc2UgdGhlCisrCQkgKiBpbmhlcml0ZWQgcHJvY21hc2sgaXMgYmxvY2tpbmcgU0lHQUxSTSBhbmQgbm8gcGFja2V0CisrCQkgKiBpcyByZWNlaXZlZC4gKi8KKysJCXNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLCAmc3NldCwgJm9zc2V0KTsKKysKKyAJCWlmICgoY2MgPSByZWN2ZnJvbShzLCBwYWNrZXQsIHNpemVvZihwYWNrZXQpLCAwLAorIAkJCQkgICAoc3RydWN0IHNvY2thZGRyICopJmZyb20sICZhbGVuKSkgPCAwKSB7CisgCQkJcGVycm9yKCJhcnBpbmc6IHJlY3Zmcm9tIik7CisgCQkJY29udGludWU7CisgCQl9CisgCistCQlzaWdlbXB0eXNldCgmc3NldCk7CistCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0FMUk0pOworLQkJc2lnYWRkc2V0KCZzc2V0LCBTSUdJTlQpOworLQkJc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc3NldCwgJm9zc2V0KTsKKysJCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNzZXQsIE5VTEwpOworIAkJcmVjdl9wYWNrKHBhY2tldCwgY2MsIChzdHJ1Y3Qgc29ja2FkZHJfbGwgKikmZnJvbSk7CisgCQlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJm9zc2V0LCBOVUxMKTsKKyAJfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiCmluZGV4IDBkNGRkMWIuLjQ2ZGU2ZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE1MTIxOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxNTEyMTguYmIKQEAgLTIwLDYgKzIwLDcgQEAKICAgICAgICAgICAgZmlsZTovL25zZ21scy1wYXRoLWZpeC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW50aWFsaXplLXN0cnVjdC1lbGVtZW50cy1ieS1uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FycGluZy1maXgtYXJwaW5nLWhhbmctaWYtU0lHQUxSTS1pcy1ibG9ja2VkLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4YWFhNzM5NWYyN2RmZjlmNTdhZTAxNmQ0YmM3NTNjZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9maWxlcy8wMDAxLWFyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jLW1ha2UtX2Zzb2JqLWZ1bmN0aW9ucy1tb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvMDAwMS1hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYy1tYWtlLV9mc29iai1mdW5jdGlvbnMtbW9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTExYTdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9maWxlcy8wMDAxLWFyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jLW1ha2UtX2Zzb2JqLWZ1bmN0aW9ucy1tb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotRnJvbSA5MDg4MWQyNGQzZjZkNWZiMjA3ZTk3ZGYzYjkxYmJlYTg1OThlODRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIE1hdHVza2EgPG1hcnRpbkBtYXR1c2thLm9yZz4KLURhdGU6IFR1ZSwgMjkgTm92IDIwMTYgMTY6NDc6MzcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGFyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jOiBtYWtlICpfZnNvYmogZnVuY3Rpb25zIG1vcmUKLSByZWFkYWJsZQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQKLQotU2lnbmVkLW9mZi1ieTogQW1hcm5hdGggVmFsbHVyaSA8YW1hcm5hdGgudmFsbHVyaUBpbnRlbC5jb20+Ci0tLS0KLSBsaWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jIHwgMTIxICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYwotaW5kZXggMTdjMjNiMC4uZDc4NmJjMiAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKLUBAIC0zMzYsNiArMzM2LDggQEAgc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayB7Ci0gCi0gI2RlZmluZSBIRlNfQkxPQ0tTKHMpCSgocykgPj4gMTIpCi0gCi0rc3RhdGljIHZvaWQJZnNvYmpfZXJyb3IoaW50ICosIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqLCBpbnQsIGNvbnN0IGNoYXIgKiwKLSsJCSAgICBjb25zdCBjaGFyICopOwotIHN0YXRpYyBpbnQJY2hlY2tfc3ltbGlua3NfZnNvYmooY2hhciAqcGF0aCwgaW50ICplcnJvcl9udW1iZXIsIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqZXJyb3Jfc3RyaW5nLCBpbnQgZmxhZ3MpOwotIHN0YXRpYyBpbnQJY2hlY2tfc3ltbGlua3Moc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqKTsKLSBzdGF0aWMgaW50CWNyZWF0ZV9maWxlc3lzdGVtX29iamVjdChzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICopOwotQEAgLTIwMDUsOCArMjAwNyw5IEBAIHJlc3RvcmVfZW50cnkoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSkKLSAKLSAJaWYgKGVuKSB7Ci0gCQkvKiBFdmVyeXRoaW5nIGZhaWxlZDsgZ2l2ZSB1cCBoZXJlLiAqLwotLQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVuLCAiQ2FuJ3QgY3JlYXRlICclcyciLAotLQkJICAgIGEtPm5hbWUpOwotKwkJaWYgKCgmYS0+YXJjaGl2ZSktPmVycm9yID09IE5VTEwpCi0rCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVuLCAiQ2FuJ3QgY3JlYXRlICclcyciLAotKwkJCSAgICBhLT5uYW1lKTsKLSAJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOwotIAl9Ci0gCi1AQCAtMjM4OCw2ICsyMzkxLDE3IEBAIGN1cnJlbnRfZml4dXAoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSwgY29uc3QgY2hhciAqcGF0aG5hbWUpCi0gCXJldHVybiAoYS0+Y3VycmVudF9maXh1cCk7Ci0gfQotIAotKy8qIEVycm9yIGhlbHBlciBmb3IgbmV3ICpfZnNvYmogZnVuY3Rpb25zICovCi0rc3RhdGljIHZvaWQKLStmc29ial9lcnJvcihpbnQgKmFfZW5vLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmFfZXN0ciwKLSsgICAgaW50IGVyciwgY29uc3QgY2hhciAqZXJyc3RyLCBjb25zdCBjaGFyICpwYXRoKQotK3sKLSsJaWYgKGFfZW5vKQotKwkJKmFfZW5vID0gZXJyOwotKwlpZiAoYV9lc3RyKQotKwkJYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihhX2VzdHIsIGVycnN0ciwgcGF0aCk7Ci0rfQotKwotIC8qCi0gICogVE9ETzogU29tZWRheSwgaW50ZWdyYXRlIHRoaXMgd2l0aCB0aGUgZGVlcCBkaXIgc3VwcG9ydDsgdGhleSBib3RoCi0gICogc2NhbiB0aGUgcGF0aCBhbmQgYm90aCBjYW4gYmUgb3B0aW1pemVkIGJ5IGNvbXBhcmluZyBhZ2FpbnN0IG90aGVyCi1AQCAtMjQwMCw3ICsyNDE0LDcgQEAgY3VycmVudF9maXh1cChzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICphLCBjb25zdCBjaGFyICpwYXRobmFtZSkKLSAgKiBBUkNISVZFX09LIGlmIHRoZXJlIGFyZSBub25lLCBvdGhlcndpc2UgcHV0cyBhbiBlcnJvciBpbiBlcnJtc2cuCi0gICovCi0gc3RhdGljIGludAotLWNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yX3N0cmluZywgaW50IGZsYWdzKQotK2NoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqYV9lbm8sIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqYV9lc3RyLCBpbnQgZmxhZ3MpCi0gewotICNpZiAhZGVmaW5lZChIQVZFX0xTVEFUKQotIAkvKiBQbGF0Zm9ybSBkb2Vzbid0IGhhdmUgbHN0YXQsIHNvIHdlIGNhbid0IGxvb2sgZm9yIHN5bWxpbmtzLiAqLwotQEAgLTI0NzQsMTkgKzI0ODgsMjAgQEAgY2hlY2tfc3ltbGlua3NfZnNvYmooY2hhciAqcGF0aCwgaW50ICplcnJvcl9udW1iZXIsIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqZXJyb3IKLSAJCQlpZiAoZXJybm8gPT0gRU5PRU5UKSB7Ci0gCQkJCWJyZWFrOwotIAkJCX0gZWxzZSB7Ci0tCQkJCS8qIFRyZWF0IGFueSBvdGhlciBlcnJvciBhcyBmYXRhbCAtIGJlc3QgdG8gYmUgcGFyYW5vaWQgaGVyZQotLQkJCQkgKiBOb3RlOiBUaGlzIGVmZmVjdGl2ZWx5IGRpc2FibGVzIGRlZXAgZGlyZWN0b3J5Ci0tCQkJCSAqIHN1cHBvcnQgd2hlbiBzZWN1cml0eSBjaGVja3MgYXJlIGVuYWJsZWQuCi0tCQkJCSAqIE90aGVyd2lzZSwgdmVyeSBsb25nIHBhdGhuYW1lcyB0aGF0IHRyaWdnZXIKLS0JCQkJICogYW4gZXJyb3IgaGVyZSBjb3VsZCBldmFkZSB0aGUgc2FuZGJveC4KLS0JCQkJICogVE9ETzogV2UgY291bGQgZG8gYmV0dGVyLCBidXQgaXQgd291bGQgcHJvYmFibHkKLS0JCQkJICogcmVxdWlyZSBtZXJnaW5nIHRoZSBzeW1saW5rIGNoZWNrcyB3aXRoIHRoZQotLQkJCQkgKiBkZWVwLWRpcmVjdG9yeSBlZGl0aW5nLiAqLwotLQkJCQlpZiAoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gZXJybm87Ci0tCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkJIkNvdWxkIG5vdCBzdGF0ICVzIiwKLS0JCQkJCQkJcGF0aCk7Ci0rCQkJCS8qCi0rCQkJCSAqIFRyZWF0IGFueSBvdGhlciBlcnJvciBhcyBmYXRhbCAtIGJlc3QgdG8gYmUKLSsJCQkJICogcGFyYW5vaWQgaGVyZS4KLSsJCQkJICogTm90ZTogVGhpcyBlZmZlY3RpdmVseSBkaXNhYmxlcyBkZWVwCi0rCQkJCSAqIGRpcmVjdG9yeSBzdXBwb3J0IHdoZW4gc2VjdXJpdHkgY2hlY2tzIGFyZQotKwkJCQkgKiBlbmFibGVkLiBPdGhlcndpc2UsIHZlcnkgbG9uZyBwYXRobmFtZXMgdGhhdAotKwkJCQkgKiB0cmlnZ2VyIGFuIGVycm9yIGhlcmUgY291bGQgZXZhZGUgdGhlCi0rCQkJCSAqIHNhbmRib3guCi0rCQkJCSAqIFRPRE86IFdlIGNvdWxkIGRvIGJldHRlciwgYnV0IGl0IHdvdWxkCi0rCQkJCSAqIHByb2JhYmx5IHJlcXVpcmUgbWVyZ2luZyB0aGUgc3ltbGluayBjaGVja3MKLSsJCQkJICogd2l0aCB0aGUgZGVlcC1kaXJlY3RvcnkgZWRpdGluZy4KLSsJCQkJICovCi0rCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIGVycm5vLAotKwkJCQkgICAgIkNvdWxkIG5vdCBzdGF0ICVzIiwgcGF0aCk7Ci0gCQkJCXJlcyA9IEFSQ0hJVkVfRkFJTEVEOwotIAkJCQlicmVhazsKLSAJCQl9Ci1AQCAtMjQ5NCwxMSArMjUwOSw4IEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yCi0gCQkJaWYgKCFsYXN0KSB7Ci0gCQkJCWlmIChjaGRpcihoZWFkKSAhPSAwKSB7Ci0gCQkJCQl0YWlsWzBdID0gYzsKLS0JCQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBlcnJubzsKLS0JCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQkJYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCQkJCQkiQ291bGQgbm90IGNoZGlyICVzIiwKLS0JCQkJCQkJCXBhdGgpOwotKwkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgZXJybm8sCi0rCQkJCQkgICAgIkNvdWxkIG5vdCBjaGRpciAlcyIsIHBhdGgpOwotIAkJCQkJcmVzID0gKEFSQ0hJVkVfRkFUQUwpOwotIAkJCQkJYnJlYWs7Ci0gCQkJCX0KLUBAIC0yNTE0LDExICsyNTI2LDkgQEAgY2hlY2tfc3ltbGlua3NfZnNvYmooY2hhciAqcGF0aCwgaW50ICplcnJvcl9udW1iZXIsIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqZXJyb3IKLSAJCQkJICovCi0gCQkJCWlmICh1bmxpbmsoaGVhZCkpIHsKLSAJCQkJCXRhaWxbMF0gPSBjOwotLQkJCQkJaWYgKGVycm9yX251bWJlcikgKmVycm9yX251bWJlciA9IGVycm5vOwotLQkJCQkJaWYgKGVycm9yX3N0cmluZykKLS0JCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkJCSJDb3VsZCBub3QgcmVtb3ZlIHN5bWxpbmsgJXMiLAotLQkJCQkJCQkJcGF0aCk7Ci0rCQkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCBlcnJubywKLSsJCQkJCSAgICAiQ291bGQgbm90IHJlbW92ZSBzeW1saW5rICVzIiwKLSsJCQkJCSAgICBwYXRoKTsKLSAJCQkJCXJlcyA9IEFSQ0hJVkVfRkFJTEVEOwotIAkJCQkJYnJlYWs7Ci0gCQkJCX0KLUBAIC0yNTI5LDEzICsyNTM5LDE0IEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yCi0gCQkJCSAqIHN5bWxpbmsgd2l0aCBhbm90aGVyIHN5bWxpbmsuCi0gCQkJCSAqLwotIAkJCQl0YWlsWzBdID0gYzsKLS0JCQkJLyogRklYTUU6ICBub3Qgc3VyZSBob3cgaW1wb3J0YW50IHRoaXMgaXMgdG8gcmVzdG9yZQotKwkJCQkvKgotKwkJCQkgKiBGSVhNRTogIG5vdCBzdXJlIGhvdyBpbXBvcnRhbnQgdGhpcyBpcyB0bwotKwkJCQkgKiByZXN0b3JlCi0rCQkJCSAqLwotKwkJCQkvKgotIAkJCQlpZiAoIVNfSVNMTksocGF0aCkpIHsKLS0JCQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSAwOwotLQkJCQkJaWYgKGVycm9yX3N0cmluZykKLS0JCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkJCSJSZW1vdmluZyBzeW1saW5rICVzIiwKLS0JCQkJCQkJCXBhdGgpOwotKwkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgMCwKLSsJCQkJCSAgICAiUmVtb3Zpbmcgc3ltbGluayAlcyIsIHBhdGgpOwotIAkJCQl9Ci0gCQkJCSovCi0gCQkJCS8qIFN5bWxpbmsgZ29uZS4gIE5vIG1vcmUgcHJvYmxlbSEgKi8KLUBAIC0yNTQ1LDIyICsyNTU2LDE3IEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yCi0gCQkJCS8qIFVzZXIgYXNrZWQgdXMgdG8gcmVtb3ZlIHByb2JsZW1zLiAqLwotIAkJCQlpZiAodW5saW5rKGhlYWQpICE9IDApIHsKLSAJCQkJCXRhaWxbMF0gPSBjOwotLQkJCQkJaWYgKGVycm9yX251bWJlcikgKmVycm9yX251bWJlciA9IDA7Ci0tCQkJCQlpZiAoZXJyb3Jfc3RyaW5nKQotLQkJCQkJCWFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCQkJCQkJIkNhbm5vdCByZW1vdmUgaW50ZXJ2ZW5pbmcgc3ltbGluayAlcyIsCi0tCQkJCQkJCQlwYXRoKTsKLSsJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIDAsCi0rCQkJCQkgICAgIkNhbm5vdCByZW1vdmUgaW50ZXJ2ZW5pbmcgIgotKwkJCQkJICAgICJzeW1saW5rICVzIiwgcGF0aCk7Ci0gCQkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSAJCQkJCWJyZWFrOwotIAkJCQl9Ci0gCQkJCXRhaWxbMF0gPSBjOwotIAkJCX0gZWxzZSB7Ci0gCQkJCXRhaWxbMF0gPSBjOwotLQkJCQlpZiAoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gMDsKLS0JCQkJaWYgKGVycm9yX3N0cmluZykKLS0JCQkJCWFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCQkJCQkiQ2Fubm90IGV4dHJhY3QgdGhyb3VnaCBzeW1saW5rICVzIiwKLS0JCQkJCQkJcGF0aCk7Ci0rCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIDAsCi0rCQkJCSAgICAiQ2Fubm90IGV4dHJhY3QgdGhyb3VnaCBzeW1saW5rICVzIiwgcGF0aCk7Ci0gCQkJCXJlcyA9IEFSQ0hJVkVfRkFJTEVEOwotIAkJCQlicmVhazsKLSAJCQl9Ci1AQCAtMjU3NywxMCArMjU4Myw4IEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yCi0gCWlmIChyZXN0b3JlX3B3ZCA+PSAwKSB7Ci0gCQlyID0gZmNoZGlyKHJlc3RvcmVfcHdkKTsKLSAJCWlmIChyICE9IDApIHsKLS0JCQlpZihlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBlcnJubzsKLS0JCQlpZihlcnJvcl9zdHJpbmcpCi0tCQkJCWFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCQkJCSJjaGRpcigpIGZhaWx1cmUiKTsKLSsJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCBlcnJubywKLSsJCQkgICAgImNoZGlyKCkgZmFpbHVyZSIsICIiKTsKLSAJCX0KLSAJCWNsb3NlKHJlc3RvcmVfcHdkKTsKLSAJCXJlc3RvcmVfcHdkID0gLTE7Ci1AQCAtMjY4OCwxNyArMjY5MiwxNiBAQCBjbGVhbnVwX3BhdGhuYW1lX3dpbihzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICphKQotICAqIGlzIHNldCkgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUuCi0gICovCi0gc3RhdGljIGludAotLWNsZWFudXBfcGF0aG5hbWVfZnNvYmooY2hhciAqcGF0aCwgaW50ICplcnJvcl9udW1iZXIsIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqZXJyb3Jfc3RyaW5nLCBpbnQgZmxhZ3MpCi0rY2xlYW51cF9wYXRobmFtZV9mc29iaihjaGFyICpwYXRoLCBpbnQgKmFfZW5vLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmFfZXN0ciwKLSsgICAgaW50IGZsYWdzKQotIHsKLSAJY2hhciAqZGVzdCwgKnNyYzsKLSAJY2hhciBzZXBhcmF0b3IgPSAnXDAnOwotIAotIAlkZXN0ID0gc3JjID0gcGF0aDsKLSAJaWYgKCpzcmMgPT0gJ1wwJykgewotLQkJaWYgKGVycm9yX251bWJlcikgKmVycm9yX251bWJlciA9IEFSQ0hJVkVfRVJSTk9fTUlTQzsKLS0JCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkgICAgYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJICAgICJJbnZhbGlkIGVtcHR5IHBhdGhuYW1lIik7Ci0rCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCBBUkNISVZFX0VSUk5PX01JU0MsCi0rCQkgICAgIkludmFsaWQgZW1wdHkgIiwgInBhdGhuYW1lIik7Ci0gCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKLSAJfQotIAotQEAgLTI3MDgsMTAgKzI3MTEsOCBAQCBjbGVhbnVwX3BhdGhuYW1lX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycgotIAkvKiBTa2lwIGxlYWRpbmcgJy8nLiAqLwotIAlpZiAoKnNyYyA9PSAnLycpIHsKLSAJCWlmIChmbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTKSB7Ci0tCQkJaWYgKGVycm9yX251bWJlcikgKmVycm9yX251bWJlciA9IEFSQ0hJVkVfRVJSTk9fTUlTQzsKLS0JCQlpZiAoZXJyb3Jfc3RyaW5nKQotLQkJCSAgICBhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJICAgICJQYXRoIGlzIGFic29sdXRlIik7Ci0rCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgQVJDSElWRV9FUlJOT19NSVNDLAotKwkJCSAgICAiUGF0aCBpcyAiLCAiYWJzb2x1dGUiKTsKLSAJCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKLSAJCX0KLSAKLUBAIC0yNzM4LDExICsyNzM5LDExIEBAIGNsZWFudXBfcGF0aG5hbWVfZnNvYmooY2hhciAqcGF0aCwgaW50ICplcnJvcl9udW1iZXIsIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqZXJyCi0gCQkJfSBlbHNlIGlmIChzcmNbMV0gPT0gJy4nKSB7Ci0gCQkJCWlmIChzcmNbMl0gPT0gJy8nIHx8IHNyY1syXSA9PSAnXDAnKSB7Ci0gCQkJCQkvKiBDb25kaXRpb25hbGx5IHdhcm4gYWJvdXQgJy4uJyAqLwotLQkJCQkJaWYgKGZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9OT0RPVERPVCkgewotLQkJCQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBBUkNISVZFX0VSUk5PX01JU0M7Ci0tCQkJCQkJaWYgKGVycm9yX3N0cmluZykKLS0JCQkJCQkgICAgYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCQkJCSAgICAiUGF0aCBjb250YWlucyAnLi4nIik7Ci0rCQkJCQlpZiAoZmxhZ3MKLSsJCQkJCSAgICAmIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9ET1RET1QpIHsKLSsJCQkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLAotKwkJCQkJCSAgICBBUkNISVZFX0VSUk5PX01JU0MsCi0rCQkJCQkJICAgICJQYXRoIGNvbnRhaW5zICIsICInLi4nIik7Ci0gCQkJCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0gCQkJCQl9Ci0gCQkJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzLzAwMDItRml4LWV4dHJhY3RpbmctaGFyZGxpbmtzLW92ZXItc3ltbGlua3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvMDAwMi1GaXgtZXh0cmFjdGluZy1oYXJkbGlua3Mtb3Zlci1zeW1saW5rcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc0MTg2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvMDAwMi1GaXgtZXh0cmFjdGluZy1oYXJkbGlua3Mtb3Zlci1zeW1saW5rcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi1Gcm9tIGVjZTI4MTAzODg1YTA3OWExMjlhMjNjNTAwMTI1MmExNjQ4NTE3YWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gTWF0dXNrYSA8bWFydGluQG1hdHVza2Eub3JnPgotRGF0ZTogVHVlLCAyOSBOb3YgMjAxNiAxNjo1NTo0MSArMDEwMAotU3ViamVjdDogW1BBVENIIDIvMl0gRml4IGV4dHJhY3RpbmcgaGFyZGxpbmtzIG92ZXIgc3ltbGlua3MKLQotQ2xvc2VzICM4MjEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydGVkCi0KLVNpZ25lZC1vZmYtYnk6IEFtYXJuYXRoIFZhbGx1cmkgPGFtYXJuYXRoLnZhbGx1cmlAaW50ZWwuY29tPgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYyB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gdGFyL3Rlc3QvdGVzdF9zeW1saW5rX2Rpci5jICAgICAgICAgICB8IDE4ICsrKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKLWluZGV4IGQ3ODZiYzIuLjgwYjAzY2QgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi1AQCAtMjU2Myw2ICsyNTYzLDQ5IEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqYV9lbm8sIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqYV9lc3RyLCBpbnQKLSAJCQkJCWJyZWFrOwotIAkJCQl9Ci0gCQkJCXRhaWxbMF0gPSBjOwotKwkJCX0gZWxzZSBpZiAoKGZsYWdzICYKLSsJCQkgICAgQVJDSElWRV9FWFRSQUNUX1NFQ1VSRV9TWU1MSU5LUykgPT0gMCkgewotKwkJCQkvKgotKwkJCQkgKiBXZSBhcmUgbm90IHRoZSBsYXN0IGVsZW1lbnQgYW5kIHdlIHdhbnQgdG8KLSsJCQkJICogZm9sbG93IHN5bWxpbmtzIGlmIHRoZXkgYXJlIGEgZGlyZWN0b3J5LgotKwkJCQkgKiAKLSsJCQkJICogVGhpcyBpcyBuZWVkZWQgdG8gZXh0cmFjdCBoYXJkbGlua3Mgb3ZlcgotKwkJCQkgKiBzeW1saW5rcy4KLSsJCQkJICovCi0rCQkJCXIgPSBzdGF0KGhlYWQsICZzdCk7Ci0rCQkJCWlmIChyICE9IDApIHsKLSsJCQkJCXRhaWxbMF0gPSBjOwotKwkJCQkJaWYgKGVycm5vID09IEVOT0VOVCkgewotKwkJCQkJCWJyZWFrOwotKwkJCQkJfSBlbHNlIHsKLSsJCQkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLAotKwkJCQkJCSAgICBlcnJubywKLSsJCQkJCQkgICAgIkNvdWxkIG5vdCBzdGF0ICVzIiwgcGF0aCk7Ci0rCQkJCQkJcmVzID0gKEFSQ0hJVkVfRkFJTEVEKTsKLSsJCQkJCQlicmVhazsKLSsJCQkJCX0KLSsJCQkJfSBlbHNlIGlmIChTX0lTRElSKHN0LnN0X21vZGUpKSB7Ci0rCQkJCQlpZiAoY2hkaXIoaGVhZCkgIT0gMCkgewotKwkJCQkJCXRhaWxbMF0gPSBjOwotKwkJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsCi0rCQkJCQkJICAgIGVycm5vLAotKwkJCQkJCSAgICAiQ291bGQgbm90IGNoZGlyICVzIiwgcGF0aCk7Ci0rCQkJCQkJcmVzID0gKEFSQ0hJVkVfRkFUQUwpOwotKwkJCQkJCWJyZWFrOwotKwkJCQkJfQotKwkJCQkJLyoKLSsJCQkJCSAqIE91ciB2aWV3IGlzIG5vdyBmcm9tIGluc2lkZQotKwkJCQkJICogdGhpcyBkaXI6Ci0rCQkJCQkgKi8KLSsJCQkJCWhlYWQgPSB0YWlsICsgMTsKLSsJCQkJfSBlbHNlIHsKLSsJCQkJCXRhaWxbMF0gPSBjOwotKwkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgMCwKLSsJCQkJCSAgICAiQ2Fubm90IGV4dHJhY3QgdGhyb3VnaCAiCi0rCQkJCQkgICAgInN5bWxpbmsgJXMiLCBwYXRoKTsKLSsJCQkJCXJlcyA9IEFSQ0hJVkVfRkFJTEVEOwotKwkJCQkJYnJlYWs7Ci0rCQkJCX0KLSAJCQl9IGVsc2UgewotIAkJCQl0YWlsWzBdID0gYzsKLSAJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgMCwKLWRpZmYgLS1naXQgYS90YXIvdGVzdC90ZXN0X3N5bWxpbmtfZGlyLmMgYi90YXIvdGVzdC90ZXN0X3N5bWxpbmtfZGlyLmMKLWluZGV4IDI1YmQ4YjEuLjg1MmUwMGIgMTAwNjQ0Ci0tLS0gYS90YXIvdGVzdC90ZXN0X3N5bWxpbmtfZGlyLmMKLSsrKyBiL3Rhci90ZXN0L3Rlc3Rfc3ltbGlua19kaXIuYwotQEAgLTQ3LDExICs0NywxOCBAQCBERUZJTkVfVEVTVCh0ZXN0X3N5bWxpbmtfZGlyKQotIAlhc3NlcnRNYWtlRGlyKCJzb3VyY2UvZGlyMyIsIDA3NTUpOwotIAlhc3NlcnRNYWtlRGlyKCJzb3VyY2UvZGlyMy9kMyIsIDA3NTUpOwotIAlhc3NlcnRNYWtlRmlsZSgic291cmNlL2RpcjMvZjMiLCAwNzU1LCAiYWJjZGUiKTsKLSsJYXNzZXJ0TWFrZURpcigic291cmNlL2RpcjQiLCAwNzU1KTsKLSsJYXNzZXJ0TWFrZUZpbGUoInNvdXJjZS9kaXI0L2ZpbGUzIiwgMDc1NSwgImFiY2RlZiIpOwotKwlhc3NlcnRNYWtlSGFyZGxpbmsoInNvdXJjZS9kaXI0L2ZpbGU0IiwgInNvdXJjZS9kaXI0L2ZpbGUzIik7Ci0gCi0gCWFzc2VydEVxdWFsSW50KDAsCi0gCSAgICBzeXN0ZW1mKCIlcyAtY2YgdGVzdC50YXIgLUMgc291cmNlIGRpciBkaXIyIGRpcjMgZmlsZSBmaWxlMiIsCi0gCQl0ZXN0cHJvZykpOwotIAotKwkvKiBTZWNvbmQgYXJjaGl2ZSB3aXRoIGhhcmRsaW5rcyAqLwotKwlhc3NlcnRFcXVhbEludCgwLAotKwkgICAgc3lzdGVtZigiJXMgLWNmIHRlc3QyLnRhciAtQyBzb3VyY2UgZGlyNCIsIHRlc3Rwcm9nKSk7Ci0rCi0gCS8qCi0gCSAqIEV4dHJhY3Qgd2l0aCAteCBhbmQgd2l0aG91dCAtUC4KLSAJICovCi1AQCAtMTE4LDkgKzEyNSwxNSBAQCBERUZJTkVfVEVTVCh0ZXN0X3N5bWxpbmtfZGlyKQotIAkJYXNzZXJ0TWFrZVN5bWxpbmsoImRlc3QyL2ZpbGUyIiwgInJlYWxfZmlsZTIiKTsKLSAJYXNzZXJ0RXF1YWxJbnQoMCwgc3lzdGVtZigiJXMgLXhQZiB0ZXN0LnRhciAtQyBkZXN0MiIsIHRlc3Rwcm9nKSk7Ci0gCi0tCS8qIGRlc3QyL2RpciBzeW1saW5rIHNob3VsZCBiZSBmb2xsb3dlZCAqLwotKwkvKiAiZGlyNCIgaXMgYSBzeW1saW5rIHRvIGV4aXN0aW5nICJyZWFsX2RpciIgKi8KLSsJaWYgKGNhblN5bWxpbmsoKSkKLSsJCWFzc2VydE1ha2VTeW1saW5rKCJkZXN0Mi9kaXI0IiwgInJlYWxfZGlyIik7Ci0rCWFzc2VydEVxdWFsSW50KDAsIHN5c3RlbWYoIiVzIC14UGYgdGVzdDIudGFyIC1DIGRlc3QyIiwgdGVzdHByb2cpKTsKLSsKLSsJLyogZGVzdDIvZGlyIGFuZCBkZXN0Mi9kaXI0IHN5bWxpbmtzIHNob3VsZCBiZSBmb2xsb3dlZCAqLwotIAlpZiAoY2FuU3ltbGluaygpKSB7Ci0gCQlhc3NlcnRJc1N5bWxpbmsoImRlc3QyL2RpciIsICJyZWFsX2RpciIpOwotKwkJYXNzZXJ0SXNTeW1saW5rKCJkZXN0Mi9kaXI0IiwgInJlYWxfZGlyIik7Ci0gCQlhc3NlcnRJc0RpcigiZGVzdDIvcmVhbF9kaXIiLCAtMSk7Ci0gCX0KLSAKLUBAIC0xNDEsNCArMTU0LDcgQEAgREVGSU5FX1RFU1QodGVzdF9zeW1saW5rX2RpcikKLSAJLyogZGVzdDIvZmlsZTIgc3ltbGluayBzaG91bGQgYmUgcmVtb3ZlZCAqLwotIAlmYWlsdXJlKCJTeW1saW5rIHRvIG5vbi1leGlzdGluZyBmaWxlIHNob3VsZCBiZSByZW1vdmVkIik7Ci0gCWFzc2VydElzUmVnKCJkZXN0Mi9maWxlMiIsIC0xKTsKLSsKLSsJLyogZGVzdDIvZGlyNC9maWxlMyBhbmQgZGVzdDIvZGlyNC9maWxlNCBzaG91bGQgYmUgaGFyZCBsaW5rcyAqLwotKwlhc3NlcnRJc0hhcmRsaW5rKCJkZXN0Mi9kaXI0L2ZpbGUzIiwgImRlc3QyL2RpcjQvZmlsZTQiKTsKLSB9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9maWxlcy9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvbm9uLXJlY3Vyc2l2ZS1leHRyYWN0LWFuZC1saXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWY4ZjNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9maWxlcy9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotRnJvbSBkNjI3MTcwOWQyZGViOTgwODA0ZjkyZTc1ZjliNWNiNjAwZGM0MmVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotRGF0ZTogTW9uLCAyNCBPY3QgMjAxNiAxMjo1NDo0OCArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gbm9uLXJlY3Vyc2l2ZSBleHRyYWN0IGFuZCBsaXN0Ci0KLVNvbWV0aW1lcyBpdCBtYWtlcyBzZW5zZSB0byBleHRyYWN0IG9yIGxpc3QgYSBkaXJlY3RvcnkgY29udGFpbmVkIGluCi1hbiBhcmNoaXZlIHdpdGhvdXQgYWxzbyBkb2luZyB0aGUgc2FtZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlCi1kaXJlY3RvcnksIGkuZS4gYWxsb3dpbmcgLW4gKD0gLS1uby1yZWN1cnNpb24pIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlCi14IGFuZCB0IG1vZGVzLgotCi1ic2R0YXIgdXNlcyB0aGUgbWF0Y2ggZnVuY3Rpb25hbGl0eSBpbiBsaWJhcmNoaXZlIHRvIHRyYWNrIGluY2x1ZGUKLW1hdGNoZXMuIEEgbmV3IGxpYmFyY2hpdmUgQVBJIGNhbGwKLWFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseSgpIGdldHMgaW50cm9kdWNlZCB0bwotaW5mbHVlbmNlIHRoZSBtYXRjaGluZyBiZWhhdmlvciwgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvciBhcyBiZWZvcmUuCi0KLU5vbi1yZWN1cnNpdmUgbWF0Y2hpbmcgY2FuIGJlIGFjaGlldmVkIGJ5IGFuY2hvcmluZyB0aGUgcGF0aCBtYXRjaCBhdAotYm90aCBzdGFydCBhbmQgZW5kLiBBc2tpbmcgZm9yIGEgZGlyZWN0b3J5IHdoaWNoIGl0c2VsZiBpc24ndCBpbiB0aGUKLWFyY2hpdmUgd2hlbiBpbiBub24tcmVjdXJzaXZlIG1vZGUgaXMgYW4gZXJyb3IgYW5kIGhhbmRsZWQgYnkgdGhlCi1leGlzdGluZyBtZWNoYW5pc20gZm9yIHRyYWNraW5nIHVudXNlZCBpbmNsdXNpb24gZW50cmllcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvcHVsbC84MTJdCi0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLQotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlLmggICAgICAgfCAgMiArKwotIGxpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gdGFyL2JzZHRhci4xICAgICAgICAgICAgICAgfCAgMyArLS0KLSB0YXIvYnNkdGFyLmMgICAgICAgICAgICAgICB8IDEyICsrKysrKysrKystLQotIDQgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZS5oIGIvbGliYXJjaGl2ZS9hcmNoaXZlLmgKLWluZGV4IGZmNDAxZTkuLjM4ZDg3NDYgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmUuaAotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlLmgKLUBAIC0xMDg1LDYgKzEwODUsOCBAQCBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKiwKLSAgKi8KLSBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfcGF0aF9leGNsdWRlZChzdHJ1Y3QgYXJjaGl2ZSAqLAotIAkJICAgIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICopOwotKy8qIENvbnRyb2wgcmVjdXJzaXZlIGluY2x1c2lvbiBvZiBkaXJlY3RvcnkgY29udGVudCB3aGVuIGRpcmVjdG9yeSBpcyBpbmNsdWRlZC4gRGVmYXVsdCBvbi4gKi8KLStfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseShzdHJ1Y3QgYXJjaGl2ZSAqLCBpbnQgX2VuYWJsZWQpOwotIC8qIEFkZCBleGNsdXNpb24gcGF0aG5hbWUgcGF0dGVybi4gKi8KLSBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfZXhjbHVkZV9wYXR0ZXJuKHN0cnVjdCBhcmNoaXZlICosIGNvbnN0IGNoYXIgKik7Ci0gX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVfcGF0dGVybl93KHN0cnVjdCBhcmNoaXZlICosCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYwotaW5kZXggMDcxOWNiZC4uNmQwM2E2NSAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYwotQEAgLTkzLDYgKzkzLDkgQEAgc3RydWN0IGFyY2hpdmVfbWF0Y2ggewotIAkvKiBleGNsdXNpb24vaW5jbHVzaW9uIHNldCBmbGFnLiAqLwotIAlpbnQJCQkgc2V0ZmxhZzsKLSAKLSsJLyogUmVjdXJzaXZlbHkgaW5jbHVkZSBkaXJlY3RvcnkgY29udGVudD8gKi8KLSsJaW50CQkJIHJlY3Vyc2l2ZV9pbmNsdWRlOwotKwotIAkvKgotIAkgKiBNYXRjaGluZyBmaWxlbmFtZSBwYXR0ZXJucy4KLSAJICovCi1AQCAtMjIzLDYgKzIyNiw3IEBAIGFyY2hpdmVfbWF0Y2hfbmV3KHZvaWQpCi0gCQlyZXR1cm4gKE5VTEwpOwotIAlhLT5hcmNoaXZlLm1hZ2ljID0gQVJDSElWRV9NQVRDSF9NQUdJQzsKLSAJYS0+YXJjaGl2ZS5zdGF0ZSA9IEFSQ0hJVkVfU1RBVEVfTkVXOwotKwlhLT5yZWN1cnNpdmVfaW5jbHVkZSA9IDE7Ci0gCW1hdGNoX2xpc3RfaW5pdCgmKGEtPmluY2x1c2lvbnMpKTsKLSAJbWF0Y2hfbGlzdF9pbml0KCYoYS0+ZXhjbHVzaW9ucykpOwotIAlfX2FyY2hpdmVfcmJfdHJlZV9pbml0KCYoYS0+ZXhjbHVzaW9uX3RyZWUpLCAmcmJfb3BzX21icyk7Ci1AQCAtNDcxLDYgKzQ3NSwyOCBAQCBhcmNoaXZlX21hdGNoX3BhdGhfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKl9hLAotIH0KLSAKLSAvKgotKyAqIFdoZW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZiBkaXJlY3RvcnkgY29udGVudCBpcyBlbmFibGVkLAotKyAqIGFuIGluY2x1c2lvbiBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhIGRpcmVjdG9yeSB3aWxsIGFsc28KLSsgKiBpbmNsdWRlIGV2ZXJ5dGhpbmcgYmVuZWF0aCB0aGF0IGRpcmVjdG9yeS4gRW5hYmxlZCBieSBkZWZhdWx0LgotKyAqCi0rICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBHTlUgdGFyLCBleGNsdXNpb24gcGF0dGVybnMgYWx3YXlzCi0rICogbWF0Y2ggaWYgYSBzdWJzZXQgb2YgdGhlIGZ1bGwgcGF0Y2ggbWF0Y2hlcyAoaS5lLiwgdGhleSBhcmUKLSsgKiBhcmUgbm90IHJvb3RlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoKSBhbmQgdGh1cyB0aGVyZQotKyAqIGlzIG5vIGNvcnJlc3BvbmRpbmcgbm9uLXJlY3Vyc2l2ZSBleGNsdXNpb24gbW9kZS4KLSsgKi8KLStpbnQKLSthcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoc3RydWN0IGFyY2hpdmUgKl9hLCBpbnQgX2VuYWJsZWQpCi0rewotKwlzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYTsKLSsKLSsJYXJjaGl2ZV9jaGVja19tYWdpYyhfYSwgQVJDSElWRV9NQVRDSF9NQUdJQywKLSsJICAgIEFSQ0hJVkVfU1RBVEVfTkVXLCAiYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5Iik7Ci0rCWEgPSAoc3RydWN0IGFyY2hpdmVfbWF0Y2ggKilfYTsKLSsJYS0+cmVjdXJzaXZlX2luY2x1ZGUgPSBfZW5hYmxlZDsKLSsJcmV0dXJuIChBUkNISVZFX09LKTsKLSt9Ci0rCi0rLyoKLSAgKiBVdGlsdHkgZnVuY3Rpb25zIHRvIGdldCBzdGF0aXN0aWMgaW5mb3JtYXRpb24gZm9yIGluY2x1c2lvbiBwYXR0ZXJucy4KLSAgKi8KLSBpbnQKLUBAIC03ODEsNyArODA3LDkgQEAgc3RhdGljIGludAotIG1hdGNoX3BhdGhfaW5jbHVzaW9uKHN0cnVjdCBhcmNoaXZlX21hdGNoICphLCBzdHJ1Y3QgbWF0Y2ggKm0sCi0gICAgIGludCBtYnMsIGNvbnN0IHZvaWQgKnBuKQotIHsKLS0JaW50IGZsYWcgPSBQQVRITUFUQ0hfTk9fQU5DSE9SX0VORDsKLSsJaW50IGZsYWcgPSBhLT5yZWN1cnNpdmVfaW5jbHVkZSA/Ci0rCQlQQVRITUFUQ0hfTk9fQU5DSE9SX0VORCA6IC8qIFByZWZpeCBtYXRjaCBpcyBnb29kIGVub3VnaC4gKi8KLSsJCTA7IC8qIEZ1bGwgbWF0Y2ggcmVxdWlyZWQuICovCi0gCWludCByOwotIAotIAlpZiAobWJzKSB7Ci1kaWZmIC0tZ2l0IGEvdGFyL2JzZHRhci4xIGIvdGFyL2JzZHRhci4xCi1pbmRleCA5ZWFkYWFmLi5mNWQ2NDU3IDEwMDY0NAotLS0tIGEvdGFyL2JzZHRhci4xCi0rKysgYi90YXIvYnNkdGFyLjEKLUBAIC0zNDYsOCArMzQ2LDcgQEAgSW4gZXh0cmFjdCBvciBsaXN0IG1vZGVzLCB0aGlzIG9wdGlvbiBpcyBpZ25vcmVkLgotIERvIG5vdCBleHRyYWN0IG1vZGlmaWNhdGlvbiB0aW1lLgotIEJ5IGRlZmF1bHQsIHRoZSBtb2RpZmljYXRpb24gdGltZSBpcyBzZXQgdG8gdGhlIHRpbWUgc3RvcmVkIGluIHRoZSBhcmNoaXZlLgotIC5JdCBGbCBuICwgRmwgRmwgbm9yZWN1cnNlICwgRmwgRmwgbm8tcmVjdXJzaW9uCi0tKGMsIHIsIHUgbW9kZXMgb25seSkKLS1EbyBub3QgcmVjdXJzaXZlbHkgYXJjaGl2ZSB0aGUgY29udGVudHMgb2YgZGlyZWN0b3JpZXMuCi0rRG8gbm90IHJlY3Vyc2l2ZWx5IGFyY2hpdmUgKGMsIHIsIHUpLCBleHRyYWN0ICh4KSBvciBsaXN0ICh0KSB0aGUgY29udGVudHMgb2YgZGlyZWN0b3JpZXMuCi0gLkl0IEZsIEZsIG5ld2VyIEFyIGRhdGUKLSAoYywgciwgdSBtb2RlcyBvbmx5KQotIE9ubHkgaW5jbHVkZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgbmV3ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGRhdGUuCi1kaWZmIC0tZ2l0IGEvdGFyL2JzZHRhci5jIGIvdGFyL2JzZHRhci5jCi1pbmRleCA5M2JmNjBhLi4wMDFkNWVkIDEwMDY0NAotLS0tIGEvdGFyL2JzZHRhci5jCi0rKysgYi90YXIvYnNkdGFyLmMKLUBAIC03MzgsOCArNzM4LDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJYnJlYWs7Ci0gCQl9Ci0gCX0KLS0JaWYgKGJzZHRhci0+b3B0aW9uX25vX3N1YmRpcnMpCi0tCQlvbmx5X21vZGUoYnNkdGFyLCAiLW4iLCAiY3J1Iik7Ci0gCWlmIChic2R0YXItPm9wdGlvbl9zdGRvdXQpCi0gCQlvbmx5X21vZGUoYnNkdGFyLCAiLU8iLCAieHQiKTsKLSAJaWYgKGJzZHRhci0+b3B0aW9uX3VubGlua19maXJzdCkKLUBAIC03ODgsNiArNzg2LDE2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJb25seV9tb2RlKGJzZHRhciwgYnVmZiwgImNydSIpOwotIAl9Ci0gCi0rCS8qCi0rCSAqIFdoZW4gY3JlYXRpbmcgYW4gYXJjaGl2ZSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUsIHRoZSBkaXJlY3RvcnkKLSsJICogd2Fsa2luZyBjb2RlIHdpbGwgYWxyZWFkeSBhdm9pZCBlbnRlcmluZyBkaXJlY3RvcmllcyB3aGVuCi0rCSAqIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgaXMgZGlzYWJsZWQsIHRoZXJlZm9yZQotKwkgKiBjaGFuZ2luZyB0aGUgbWF0Y2hpbmcgYmVoYXZpb3IgaGFzIG5vIGVmZmVjdCBmb3IgY3JlYXRpb24gbW9kZXMuCi0rCSAqIEl0IGlzIHJlbGV2YW50IGZvciBleHRyYWN0aW9uIG9yIGxpc3RpbmcuCi0rCSAqLwotKwlhcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoYnNkdGFyLT5tYXRjaGluZywKLSsJCQkJCQkgICAgICAhYnNkdGFyLT5vcHRpb25fbm9fc3ViZGlycyk7Ci0rCi0gCS8qIEZpbGVuYW1lICItIiBpbXBsaWVzIHN0ZGlvLiAqLwotIAlpZiAoc3RyY21wKGJzZHRhci0+ZmlsZW5hbWUsICItIikgPT0gMCkKLSAJCWJzZHRhci0+ZmlsZW5hbWUgPSBOVUxMOwotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDE2Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0MTY2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NWZlYzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDE2Ni5wYXRjaApAQCAtMCwwICsxLDM3IEBACitsaWJhcmNoaXZlLTMuMy4yOiBGaXggQ1ZFLTIwMTctMTQxNjYKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL3B1bGwvOTM1CisKK2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXI6IGhlYXAtYmFzZWQgYnVmZmVyIG92ZXJmbG93IGluIHhtbF9kYXRhCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0L2ZhNzQzOGEwZmY0MDMzZTQ3NDFjODA3Mzk0YTlhZjYyMDc5NDBkNzFdCitDVkU6IENWRS0yMDE3LTE0MTY2CitCdWc6IDkzNQorU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3hhci5jCitpbmRleCA3YTIyYmViLi45M2VlYWNjIDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyLmMKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3hhci5jCitAQCAtMTA0MCw2ICsxMDQwLDkgQEAgYXRvbDEwKGNvbnN0IGNoYXIgKnAsIHNpemVfdCBjaGFyX2NudCkKKyAJdWludDY0X3QgbDsKKyAJaW50IGRpZ2l0OworIAorKwlpZiAoY2hhcl9jbnQgPT0gMCkKKysJCXJldHVybiAoMCk7CisrCisgCWwgPSAwOworIAlkaWdpdCA9ICpwIC0gJzAnOworIAl3aGlsZSAoZGlnaXQgPj0gMCAmJiBkaWdpdCA8IDEwICAmJiBjaGFyX2NudC0tID4gMCkgeworQEAgLTEwNTQsNyArMTA1NywxMCBAQCBhdG9sOChjb25zdCBjaGFyICpwLCBzaXplX3QgY2hhcl9jbnQpCisgeworIAlpbnQ2NF90IGw7CisgCWludCBkaWdpdDsKKy0gICAgICAgIAorKworKwlpZiAoY2hhcl9jbnQgPT0gMCkKKysJCXJldHVybiAoMCk7CisrCisgCWwgPSAwOworIAl3aGlsZSAoY2hhcl9jbnQtLSA+IDApIHsKKyAJCWlmICgqcCA+PSAnMCcgJiYgKnAgPD0gJzcnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQ1MDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDUwMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmUxNTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQ1MDIucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA1NTYyNTQ1YjU1NjJmNmQxMmE0ZWY5OTFmYWUxNThiZjRjY2Y5MmI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9lcmcgU29ubmVuYmVyZ2VyIDxqb2VyZ0BiZWMuZGU+CitEYXRlOiBTYXQsIDkgU2VwIDIwMTcgMTc6NDc6MzIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQXZvaWQgYSByZWFkIG9mZi1ieS1vbmUgZXJyb3IgZm9yIFVURjE2IG5hbWVzIGluIFJBUgorIGFyY2hpdmVzLgorCitSZXBvcnRlZC1CeTogT1NTLUZ1enogaXNzdWUgNTczCisKK0NWRTogQ1ZFLTIwMTctMTQ1MDIKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMgfCA2ICsrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKK2luZGV4IGNiYjE0YzMuLjc1MWRlNjkgMTAwNjQ0CistLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYworKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKK0BAIC0xNDk2LDcgKzE0OTYsMTEgQEAgcmVhZF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGFyY2hpdmVfZW50cnkgKmVudHJ5LAorICAgICAgICAgcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKyAgICAgICB9CisgICAgICAgZmlsZW5hbWVbZmlsZW5hbWVfc2l6ZSsrXSA9ICdcMCc7CistICAgICAgZmlsZW5hbWVbZmlsZW5hbWVfc2l6ZSsrXSA9ICdcMCc7CisrICAgICAgLyoKKysgICAgICAgKiBEbyBub3QgaW5jcmVtZW50IGZpbGVuYW1lX3NpemUgaGVyZSBhcyB0aGUgY29tcHV0YXRpb25zIGJlbG93CisrICAgICAgICogYWRkIHRoZSBzcGFjZSBmb3IgdGhlIHRlcm1pbmF0aW5nIE5VTCBleHBsaWNpdGx5LgorKyAgICAgICAqLworKyAgICAgIGZpbGVuYW1lW2ZpbGVuYW1lX3NpemVdID0gJ1wwJzsKKyAKKyAgICAgICAvKiBEZWNvZGVkIHVuaWNvZGUgZm9ybSBpcyBVVEYtMTZCRSwgc28gd2UgaGF2ZSB0byB1cGRhdGUgYSBzdHJpbmcKKyAgICAgICAgKiBjb252ZXJzaW9uIG9iamVjdCBmb3IgaXQuICovCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2J1ZzkyOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2J1ZzkyOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjMyNTRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnOTI5LnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK2xpYmFyY2hpdmUtMy4zLjI6IEZpeCBidWc5MjkKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL3B1bGwvOTI5CisKK2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvOiBoZWFkZXJfbmV3YygpOiBBdm9pZCBvdmVyZmxvdyB3aGVuIHJlYWRpbmcgY29ycnVwdAorY3BpbyBhcmNoaXZlCisKK0EgY3BpbyAibmV3YyIgYXJjaGl2ZSB3aXRoIGEgbmFtZWxlbmd0aCBvZiAiRkZGRkZGRkYiLCBpZiByZWFkIG9uIGEKK3N5c3RlbSB3aXRoIGEgMzItYml0IHNpemVfdCwgd291bGQgcmVzdWx0IGluIG5hbWVsZW5ndGggKyBuYW1lX3BhZAorb3ZlcmZsb3dpbmcgMzIgYml0cyBhbmQgbGliYXJjaGl2ZSBhdHRlbXB0aW5nIHRvIGNvcHkgMl4zMi0xIGJ5dGVzCitmcm9tIGEgMi1ieXRlIGJ1ZmZlciwgd2l0aCBhcHByb3ByaWF0ZWx5IGhpbGFyaW91cyByZXN1bHRzLgorCitDaGVjayBmb3IgdGhpcyBvdmVyZmxvdyBhbmQgZmFpbDsgdGhlcmUncyBubyBsZWdpdGltYXRlIHJlYXNvbiBmb3IgYQorY3BpbyBhcmNoaXZlIHRvIGNvbnRhaW4gYSBmaWxlIHdpdGggYSBuYW1lIG92ZXIgNCBiaWxsaW9uIGNoYXJhY3RlcnMKK2luIGxlbmd0aC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9jb21taXQvYmFjNDY1OWUwYjk3MDk5MGU3ZTNmM2EzZDIzOTI5NGU5NjMxMTYzMF0KK0J1ZzogOTI5CitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW8uYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW8uYworaW5kZXggYWQ5Zjc4Mi4uMWZhYTY0ZCAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW8uYworKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3Bpby5jCitAQCAtNjMzLDYgKzYzMywxMyBAQCBoZWFkZXJfbmV3YyhzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgY3BpbyAqY3BpbywKKyAJLyogUGFkIG5hbWUgdG8gMiBtb3JlIHRoYW4gYSBtdWx0aXBsZSBvZiA0LiAqLworIAkqbmFtZV9wYWQgPSAoMiAtICpuYW1lbGVuZ3RoKSAmIDM7CisgCisrCS8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBwYWRkZWQgbmFtZSBsZW5ndGggZml0cyBpbnRvIHNpemVfdC4gKi8KKysJaWYgKChzaXplX3QpKCpuYW1lbGVuZ3RoICsgKm5hbWVfcGFkKSA8ICpuYW1lbGVuZ3RoKSB7CisrCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKysJCSAgICAiY3BpbyBhcmNoaXZlIGhhcyBpbnZhbGlkIG5hbWVsZW5ndGgiKTsKKysJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisrCX0KKysKKyAJLyoKKyAJICogTm90ZTogZW50cnlfYnl0ZXNfcmVtYWluaW5nIGlzIGF0IGxlYXN0IDY0IGJpdHMgYW5kCisgCSAqIHRoZXJlZm9yZSBndWFyYW50ZWVkIHRvIGJlIGJpZyBlbm91Z2ggZm9yIGEgMzMtYml0IGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDdiZTUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvbm9uLXJlY3Vyc2l2ZS1leHRyYWN0LWFuZC1saXN0LnBhdGNoCkBAIC0wLDAgKzEsMTUzIEBACitGcm9tIDQ3Zjc1NjZmNjgyOWMyYjE0ZTIxYmJiYmE2OTk5MTZkZTQ5OThjNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+CitEYXRlOiBNb24sIDI0IE9jdCAyMDE2IDEyOjU0OjQ4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBub24tcmVjdXJzaXZlIGV4dHJhY3QgYW5kIGxpc3QKKworU29tZXRpbWVzIGl0IG1ha2VzIHNlbnNlIHRvIGV4dHJhY3Qgb3IgbGlzdCBhIGRpcmVjdG9yeSBjb250YWluZWQgaW4KK2FuIGFyY2hpdmUgd2l0aG91dCBhbHNvIGRvaW5nIHRoZSBzYW1lIGZvciB0aGUgY29udGVudCBvZiB0aGUKK2RpcmVjdG9yeSwgaS5lLiBhbGxvd2luZyAtbiAoPSAtLW5vLXJlY3Vyc2lvbikgaW4gY29tYmluYXRpb24gd2l0aCB0aGUKK3ggYW5kIHQgbW9kZXMuCisKK2JzZHRhciB1c2VzIHRoZSBtYXRjaCBmdW5jdGlvbmFsaXR5IGluIGxpYmFyY2hpdmUgdG8gdHJhY2sgaW5jbHVkZQorbWF0Y2hlcy4gQSBuZXcgbGliYXJjaGl2ZSBBUEkgY2FsbAorYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KCkgZ2V0cyBpbnRyb2R1Y2VkIHRvCitpbmZsdWVuY2UgdGhlIG1hdGNoaW5nIGJlaGF2aW9yLCB3aXRoIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFzIGJlZm9yZS4KKworTm9uLXJlY3Vyc2l2ZSBtYXRjaGluZyBjYW4gYmUgYWNoaWV2ZWQgYnkgYW5jaG9yaW5nIHRoZSBwYXRoIG1hdGNoIGF0Citib3RoIHN0YXJ0IGFuZCBlbmQuIEFza2luZyBmb3IgYSBkaXJlY3Rvcnkgd2hpY2ggaXRzZWxmIGlzbid0IGluIHRoZQorYXJjaGl2ZSB3aGVuIGluIG5vbi1yZWN1cnNpdmUgbW9kZSBpcyBhbiBlcnJvciBhbmQgaGFuZGxlZCBieSB0aGUKK2V4aXN0aW5nIG1lY2hhbmlzbSBmb3IgdHJhY2tpbmcgdW51c2VkIGluY2x1c2lvbiBlbnRyaWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzgxMl0KKworU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgorCistLS0KKyBsaWJhcmNoaXZlL2FyY2hpdmUuaCAgICAgICB8ICAyICsrCisgbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyB0YXIvYnNkdGFyLjEgICAgICAgICAgICAgICB8ICAzICstLQorIHRhci9ic2R0YXIuYyAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysrKy0tCisgNCBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlLmggYi9saWJhcmNoaXZlL2FyY2hpdmUuaAoraW5kZXggMzI3MTAyMDEuLjU5ZmI0YWE2IDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlLmgKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCitAQCAtMTA5Myw2ICsxMDkzLDggQEAgX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICosCisgICovCisgX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX3BhdGhfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKiwKKyAJCSAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqKTsKKysvKiBDb250cm9sIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgd2hlbiBkaXJlY3RvcnkgaXMgaW5jbHVkZWQuIERlZmF1bHQgb24uICovCisrX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoc3RydWN0IGFyY2hpdmUgKiwgaW50IF9lbmFibGVkKTsKKyAvKiBBZGQgZXhjbHVzaW9uIHBhdGhuYW1lIHBhdHRlcm4uICovCisgX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVfcGF0dGVybihzdHJ1Y3QgYXJjaGl2ZSAqLCBjb25zdCBjaGFyICopOworIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlX3BhdHRlcm5fdyhzdHJ1Y3QgYXJjaGl2ZSAqLAorZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKK2luZGV4IGJlNzIwNjZlLi5iYjZhMzQwNyAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jCisrKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYworQEAgLTkzLDYgKzkzLDkgQEAgc3RydWN0IGFyY2hpdmVfbWF0Y2ggeworIAkvKiBleGNsdXNpb24vaW5jbHVzaW9uIHNldCBmbGFnLiAqLworIAlpbnQJCQkgc2V0ZmxhZzsKKyAKKysJLyogUmVjdXJzaXZlbHkgaW5jbHVkZSBkaXJlY3RvcnkgY29udGVudD8gKi8KKysJaW50CQkJIHJlY3Vyc2l2ZV9pbmNsdWRlOworKworIAkvKgorIAkgKiBNYXRjaGluZyBmaWxlbmFtZSBwYXR0ZXJucy4KKyAJICovCitAQCAtMjIzLDYgKzIyNiw3IEBAIGFyY2hpdmVfbWF0Y2hfbmV3KHZvaWQpCisgCQlyZXR1cm4gKE5VTEwpOworIAlhLT5hcmNoaXZlLm1hZ2ljID0gQVJDSElWRV9NQVRDSF9NQUdJQzsKKyAJYS0+YXJjaGl2ZS5zdGF0ZSA9IEFSQ0hJVkVfU1RBVEVfTkVXOworKwlhLT5yZWN1cnNpdmVfaW5jbHVkZSA9IDE7CisgCW1hdGNoX2xpc3RfaW5pdCgmKGEtPmluY2x1c2lvbnMpKTsKKyAJbWF0Y2hfbGlzdF9pbml0KCYoYS0+ZXhjbHVzaW9ucykpOworIAlfX2FyY2hpdmVfcmJfdHJlZV9pbml0KCYoYS0+ZXhjbHVzaW9uX3RyZWUpLCAmcmJfb3BzX21icyk7CitAQCAtNDcxLDYgKzQ3NSwyOCBAQCBhcmNoaXZlX21hdGNoX3BhdGhfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKl9hLAorIH0KKyAKKyAvKgorKyAqIFdoZW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZiBkaXJlY3RvcnkgY29udGVudCBpcyBlbmFibGVkLAorKyAqIGFuIGluY2x1c2lvbiBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhIGRpcmVjdG9yeSB3aWxsIGFsc28KKysgKiBpbmNsdWRlIGV2ZXJ5dGhpbmcgYmVuZWF0aCB0aGF0IGRpcmVjdG9yeS4gRW5hYmxlZCBieSBkZWZhdWx0LgorKyAqCisrICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBHTlUgdGFyLCBleGNsdXNpb24gcGF0dGVybnMgYWx3YXlzCisrICogbWF0Y2ggaWYgYSBzdWJzZXQgb2YgdGhlIGZ1bGwgcGF0Y2ggbWF0Y2hlcyAoaS5lLiwgdGhleSBhcmUKKysgKiBhcmUgbm90IHJvb3RlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoKSBhbmQgdGh1cyB0aGVyZQorKyAqIGlzIG5vIGNvcnJlc3BvbmRpbmcgbm9uLXJlY3Vyc2l2ZSBleGNsdXNpb24gbW9kZS4KKysgKi8KKytpbnQKKythcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoc3RydWN0IGFyY2hpdmUgKl9hLCBpbnQgX2VuYWJsZWQpCisreworKwlzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYTsKKysKKysJYXJjaGl2ZV9jaGVja19tYWdpYyhfYSwgQVJDSElWRV9NQVRDSF9NQUdJQywKKysJICAgIEFSQ0hJVkVfU1RBVEVfTkVXLCAiYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5Iik7CisrCWEgPSAoc3RydWN0IGFyY2hpdmVfbWF0Y2ggKilfYTsKKysJYS0+cmVjdXJzaXZlX2luY2x1ZGUgPSBfZW5hYmxlZDsKKysJcmV0dXJuIChBUkNISVZFX09LKTsKKyt9CisrCisrLyoKKyAgKiBVdGlsaXR5IGZ1bmN0aW9ucyB0byBnZXQgc3RhdGlzdGljIGluZm9ybWF0aW9uIGZvciBpbmNsdXNpb24gcGF0dGVybnMuCisgICovCisgaW50CitAQCAtNzgxLDcgKzgwNyw5IEBAIHN0YXRpYyBpbnQKKyBtYXRjaF9wYXRoX2luY2x1c2lvbihzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYSwgc3RydWN0IG1hdGNoICptLAorICAgICBpbnQgbWJzLCBjb25zdCB2b2lkICpwbikKKyB7CistCWludCBmbGFnID0gUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQ7CisrCWludCBmbGFnID0gYS0+cmVjdXJzaXZlX2luY2x1ZGUgPworKwkJUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQgOiAvKiBQcmVmaXggbWF0Y2ggaXMgZ29vZCBlbm91Z2guICovCisrCQkwOyAvKiBGdWxsIG1hdGNoIHJlcXVpcmVkLiAqLworIAlpbnQgcjsKKyAKKyAJaWYgKG1icykgeworZGlmZiAtLWdpdCBhL3Rhci9ic2R0YXIuMSBiL3Rhci9ic2R0YXIuMQoraW5kZXggMTMyZTExNDUuLjFkZDJhODQ3IDEwMDY0NAorLS0tIGEvdGFyL2JzZHRhci4xCisrKysgYi90YXIvYnNkdGFyLjEKK0BAIC0zODYsOCArMzg2LDcgQEAgYW5kIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIGMsIHIsIGFuZCB1IG1vZGVzIG9yIGlmCisgLk5tCisgaXMgcnVuIGluIHggbW9kZSBhcyByb290LgorIC5JdCBGbCBuICwgRmwgRmwgbm9yZWN1cnNlICwgRmwgRmwgbm8tcmVjdXJzaW9uCistKGMsIHIsIHUgbW9kZXMgb25seSkKKy1EbyBub3QgcmVjdXJzaXZlbHkgYXJjaGl2ZSB0aGUgY29udGVudHMgb2YgZGlyZWN0b3JpZXMuCisrRG8gbm90IHJlY3Vyc2l2ZWx5IGFyY2hpdmUgKGMsIHIsIHUpLCBleHRyYWN0ICh4KSBvciBsaXN0ICh0KSB0aGUgY29udGVudHMgb2YgZGlyZWN0b3JpZXMuCisgLkl0IEZsIEZsIG5ld2VyIEFyIGRhdGUKKyAoYywgciwgdSBtb2RlcyBvbmx5KQorIE9ubHkgaW5jbHVkZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgbmV3ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGRhdGUuCitkaWZmIC0tZ2l0IGEvdGFyL2JzZHRhci5jIGIvdGFyL2JzZHRhci5jCitpbmRleCAxMWRlZGJmOS4uZDAxNGNjM2UgMTAwNjQ0CistLS0gYS90YXIvYnNkdGFyLmMKKysrKyBiL3Rhci9ic2R0YXIuYworQEAgLTc5NCw4ICs3OTQsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQlicmVhazsKKyAJCX0KKyAJfQorLQlpZiAoYnNkdGFyLT5mbGFncyAmIE9QVEZMQUdfTk9fU1VCRElSUykKKy0JCW9ubHlfbW9kZShic2R0YXIsICItbiIsICJjcnUiKTsKKyAJaWYgKGJzZHRhci0+ZmxhZ3MgJiBPUFRGTEFHX1NURE9VVCkKKyAJCW9ubHlfbW9kZShic2R0YXIsICItTyIsICJ4dCIpOworIAlpZiAoYnNkdGFyLT5mbGFncyAmIE9QVEZMQUdfVU5MSU5LX0ZJUlNUKQorQEAgLTg0NSw2ICs4NDMsMTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQlvbmx5X21vZGUoYnNkdGFyLCBidWZmLCAiY3J1Iik7CisgCX0KKyAKKysJLyoKKysJICogV2hlbiBjcmVhdGluZyBhbiBhcmNoaXZlIGZyb20gYSBkaXJlY3RvcnkgdHJlZSwgdGhlIGRpcmVjdG9yeQorKwkgKiB3YWxraW5nIGNvZGUgd2lsbCBhbHJlYWR5IGF2b2lkIGVudGVyaW5nIGRpcmVjdG9yaWVzIHdoZW4KKysJICogcmVjdXJzaXZlIGluY2x1c2lvbiBvZiBkaXJlY3RvcnkgY29udGVudCBpcyBkaXNhYmxlZCwgdGhlcmVmb3JlCisrCSAqIGNoYW5naW5nIHRoZSBtYXRjaGluZyBiZWhhdmlvciBoYXMgbm8gZWZmZWN0IGZvciBjcmVhdGlvbiBtb2Rlcy4KKysJICogSXQgaXMgcmVsZXZhbnQgZm9yIGV4dHJhY3Rpb24gb3IgbGlzdGluZy4KKysJICovCisrCWFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseShic2R0YXItPm1hdGNoaW5nLAorKwkJCQkJCSAgICAgICEoYnNkdGFyLT5mbGFncyAmIE9QVEZMQUdfTk9fU1VCRElSUykpOworKworIAkvKiBGaWxlbmFtZSAiLSIgaW1wbGllcyBzdGRpby4gKi8KKyAJaWYgKHN0cmNtcChic2R0YXItPmZpbGVuYW1lLCAiLSIpID09IDApCisgCQlic2R0YXItPmZpbGVuYW1lID0gTlVMTDsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhOTU5YTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1TVU1NQVJZID0gIlN1cHBvcnQgZm9yIHJlYWRpbmcgdmFyaW91cyBhcmNoaXZlIGZvcm1hdHMiCi1ERVNDUklQVElPTiA9ICJDIGxpYnJhcnkgYW5kIGNvbW1hbmQtbGluZSB0b29scyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0YXIsIGNwaW8sIHppcCwgSVNPLCBhbmQgb3RoZXIgYXJjaGl2ZSBmb3JtYXRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJhcmNoaXZlLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZDk5YWNhMDA2YmMzNDY5NzRiYjc0NWEzNTMzNjQyNSIKLQotREVQRU5EUyA9ICJlMmZzcHJvZ3MtbmF0aXZlIgotCi1QQUNLQUdFQ09ORklHID89ICJ6bGliIGJ6MiIKLQotUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLQlsaWJ4bWwyIFwKLQkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAotIgotCi1ERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKLVBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiwiCi1QQUNLQUdFQ09ORklHW2J6Ml0gPSAiLS13aXRoLWJ6MmxpYiwtLXdpdGhvdXQtYnoybGliLCR7REVQRU5EU19CWklQMn0sIgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWFkZWMgLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWFkZWMgLS13aXRob3V0LWx6bWEseHosIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKLVBBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLXhtbDIsLS13aXRob3V0LXhtbDIsbGlieG1sMiwiCi1QQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0LCIKLVBBQ0tBR0VDT05GSUdbbHpvXSA9ICItLXdpdGgtbHpvMiwtLXdpdGhvdXQtbHpvMixsem8sIgotUEFDS0FHRUNPTkZJR1tuZXR0bGVdID0gIi0td2l0aC1uZXR0bGUsLS13aXRob3V0LW5ldHRsZSxuZXR0bGUsIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi0td2l0aC1sejQsLS13aXRob3V0LWx6NCxsejQsIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMtbWFrZS1fZnNvYmotZnVuY3Rpb25zLW1vci5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDItRml4LWV4dHJhY3RpbmctaGFyZGxpbmtzLW92ZXItc3ltbGlua3MucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxZWMwMGI3ZGNhZjk2OWRkMmE1NzEyZjg1ZjIzYzc2NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTFjMTk0ZWUxMzJkMWYwZjdhNDI1NDFmMDkxZGI4MTFiYzJlNTZmNzEwN2U5MTIxYmUyYmM4YzA0ZjEwNjBmIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZwotCi1DUFBGTEFHUyArPSAiLUkke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgotCi1kb19jb25maWd1cmVbY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgV2UganVzdCBuZWVkIHRoZSBoZWFkZXJzIGZvciBzb21lIHR5cGUgY29uc3RhbnRzLCBzbyBubyBuZWVkIHRvCi0JIyBidWlsZCBhbGwgb2YgZTJmc3Byb2dzIGZvciB0aGUgdGFyZ2V0Ci0JY3AgLVIgJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9L2V4dDJmcyAke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzLwotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKLQotUEFDS0FHRVMgPSsgImJzZHRhciIKLUZJTEVTX2JzZHRhciA9ICIke2JpbmRpcn0vYnNkdGFyIgotCi1BTFRFUk5BVElWRV9ic2R0YXIgPSAidGFyIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Rhcl0gPSAiJHtiYXNlX2JpbmRpcn0vdGFyIgotQUxURVJOQVRJVkVfVEFSR0VUW3Rhcl0gPSAiJHtiaW5kaXJ9L2JzZHRhciIKLQotUEFDS0FHRVMgPSsgImJzZGNwaW8iCi1GSUxFU19ic2RjcGlvID0gIiR7YmluZGlyfS9ic2RjcGlvIgotCi1BTFRFUk5BVElWRV9ic2RjcGlvID0gImNwaW8iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjcGlvXSA9ICIke2JpbmRpcn0vYnNkY3BpbyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGFjYTI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjIuYmIKQEAgLTAsMCArMSw3MSBAQAorU1VNTUFSWSA9ICJTdXBwb3J0IGZvciByZWFkaW5nIHZhcmlvdXMgYXJjaGl2ZSBmb3JtYXRzIgorREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGFuZCBjb21tYW5kLWxpbmUgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyLCBjcGlvLCB6aXAsIElTTywgYW5kIG90aGVyIGFyY2hpdmUgZm9ybWF0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGliYXJjaGl2ZS5vcmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWQ5OWFjYTAwNmJjMzQ2OTc0YmI3NDVhMzUzMzY0MjUiCisKK0RFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKKworUEFDS0FHRUNPTkZJRyA/PSAiemxpYiBiejIgeHogbHpvIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorCWxpYnhtbDIgXAorCSR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCisiCisKK0RFUEVORFNfQlpJUDIgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19CWklQMl9jbGFzcy10YXJnZXQgPSAiYnppcDIiCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliLCIKK1BBQ0tBR0VDT05GSUdbYnoyXSA9ICItLXdpdGgtYnoybGliLC0td2l0aG91dC1iejJsaWIsJHtERVBFTkRTX0JaSVAyfSwiCitQQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiwiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wsIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgteG1sMiwtLXdpdGhvdXQteG1sMixsaWJ4bWwyLCIKK1BBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdCwtLXdpdGhvdXQtZXhwYXQsZXhwYXQsIgorUEFDS0FHRUNPTkZJR1tsem9dID0gIi0td2l0aC1sem8yLC0td2l0aG91dC1sem8yLGx6bywiCitQQUNLQUdFQ09ORklHW25ldHRsZV0gPSAiLS13aXRoLW5ldHRsZSwtLXdpdGhvdXQtbmV0dGxlLG5ldHRsZSwiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6NCwtLXdpdGhvdXQtbHo0LGx6NCwiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGFyZ2VmaWxlIgorCitTUkNfVVJJID0gImh0dHA6Ly9saWJhcmNoaXZlLm9yZy9kb3dubG9hZHMvbGliYXJjaGl2ZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYnVnOTI5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTY2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0NTAyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDU4M2JkNmIyZWJmN2UwZTg5NjNkOTA4NzllYjFiMjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQyZGJkNjk1NDc5MmIyYzA1NGNjZjhlYzRiMzMwYTU0Yjg1OTA0YTgwY2VmNDc3YTFjNzQ2NDNkZGFmYTBjZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKKworQ1BQRkxBR1MgKz0gIi1JJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKKworZG9fY29uZmlndXJlW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFdlIGp1c3QgbmVlZCB0aGUgaGVhZGVycyBmb3Igc29tZSB0eXBlIGNvbnN0YW50cywgc28gbm8gbmVlZCB0bworCSMgYnVpbGQgYWxsIG9mIGUyZnNwcm9ncyBmb3IgdGhlIHRhcmdldAorCWNwIC1SICR7U1RBR0lOR19JTkNESVJfTkFUSVZFfS9leHQyZnMgJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcy8KK30KKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCisKK1BBQ0tBR0VTID0rICJic2R0YXIiCitGSUxFU19ic2R0YXIgPSAiJHtiaW5kaXJ9L2JzZHRhciIKKworQUxURVJOQVRJVkVfYnNkdGFyID0gInRhciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKK0FMVEVSTkFUSVZFX1RBUkdFVFt0YXJdID0gIiR7YmluZGlyfS9ic2R0YXIiCisKK1BBQ0tBR0VTID0rICJic2RjcGlvIgorRklMRVNfYnNkY3BpbyA9ICIke2JpbmRpcn0vYnNkY3BpbyIKKworQUxURVJOQVRJVkVfYnNkY3BpbyA9ICJjcGlvIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCitBTFRFUk5BVElWRV9UQVJHRVRbY3Bpb10gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaAppbmRleCA1YWRjN2Q5Li4yZDVmYWFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCkBAIC0xLDE4MSArMSw2OTQgQEAKLUZyb20gODJmOThkY2JjNDI5YmJlODlhOTgzN2M1MzNjYmNiYzAyZTc3Yzc5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLURhdGU6IFR1ZSwgMjggSnVuIDIwMTYgMTI6NDM6MzEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gaWRuOiBmaXggcHJpbnRmKCkgZm9ybWF0IHNlY3VyaXR5IHdhcm5pbmdzCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CitGcm9tIDcxNDhhZGYzNGRhZTMwMzQ1YzJlNGQ5ZDQzNzgzOGE0NWJhNmY2ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P3V0Zjg/cT9UaW09MjBSPUMzPUJDaHNlbj89IDx0aW0ucnVlaHNlbkBnbXguZGU+CitEYXRlOiBXZWQsIDEgRmViIDIwMTcgMTE6MDY6MzkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IC1XZm9ybWF0IHdhcm5pbmdzCiAKLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Ci18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoxNzI6NzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICBlcnJvciAoMCwgMCwgXygib25seSBvbmUgb2YgLXMsIC1lLCAtZCwgLWEsIC11IG9yIC1uIGNhbiBiZSBzcGVjaWZpZWQiKSk7Ci18ICAgICAgICBefn5+fgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MTg3OjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCi18ICAgICAgXn5+fn5+fgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MjAyOjQ6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sIF8oImlucHV0IGVycm9yIikpOwotfCAgICAgXn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjIyMDo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjI0NTo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjI4MTo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MzQwOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOwotfCAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzozNjQ6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7Ci18ICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjQ0Mjo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOwotfCAgICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjQ5ODo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTI3OjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTQwOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOwotfCAgICAgICBefn5+fgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTUxOjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgXgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CiAtLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAotIHNyYy9pZG4uYyB8IDI3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKyBleGFtcGxlcy9leGFtcGxlLmMgICAgIHwgIDYgKysrLS0tCisgZXhhbXBsZXMvZXhhbXBsZTMuYyAgICB8ICA0ICsrLS0KKyBleGFtcGxlcy9leGFtcGxlNC5jICAgIHwgIDQgKystLQorIGV4YW1wbGVzL2V4YW1wbGU1LmMgICAgfCAgMiArLQorIHNyYy9pZG4uYyAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL3RzdF9pZG5hLmMgICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgdGVzdHMvdHN0X2lkbmEyLmMgICAgICB8ICA4ICsrKystLS0tCisgdGVzdHMvdHN0X2lkbmEzLmMgICAgICB8ICA4ICsrKystLS0tCisgdGVzdHMvdHN0X25ma2MuYyAgICAgICB8ICA4ICsrKystLS0tCisgdGVzdHMvdHN0X3ByMjkuYyAgICAgICB8IDEyICsrKysrKy0tLS0tLQorIHRlc3RzL3RzdF9wdW55Y29kZS5jICAgfCAxMyArKysrKysrLS0tLS0tCisgdGVzdHMvdHN0X3N0cmVycm9yLmMgICB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCisgdGVzdHMvdHN0X3N0cmluZ3ByZXAuYyB8IDEyICsrKysrKy0tLS0tLQorIHRlc3RzL3RzdF90bGQuYyAgICAgICAgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQorIHRlc3RzL3V0aWxzLmMgICAgICAgICAgfCAgNiArKystLS0KKyAxNSBmaWxlcyBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3NyYy9pZG4uYyBiL3NyYy9pZG4uYwotaW5kZXggYmUxYzdkMS4uNjhlNDI5MSAxMDA2NDQKLS0tLSBhL3NyYy9pZG4uYwotKysrIGIvc3JjL2lkbi5jCi1AQCAtMTcwLDcgKzE3MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgICAgKGFyZ3NfaW5mby5pZG5hX3RvX3VuaWNvZGVfZ2l2ZW4gPyAxIDogMCkgKwotICAgICAgIChhcmdzX2luZm8ubmZrY19naXZlbiA/IDEgOiAwKSAhPSAxKQorZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2V4YW1wbGUuYyBiL2V4YW1wbGVzL2V4YW1wbGUuYworaW5kZXggNmU5MTc4My4uMjRmNjRlMCAxMDA2NDQKKy0tLSBhL2V4YW1wbGVzL2V4YW1wbGUuYworKysrIGIvZXhhbXBsZXMvZXhhbXBsZS5jCitAQCAtNTUsNyArNTUsNyBAQCBtYWluICh2b2lkKQorIAorICAgcHJpbnRmICgiQmVmb3JlIGxvY2FsZTJ1dGY4IChsZW5ndGggJWxkKTogIiwgKGxvbmcgaW50KSBzdHJsZW4gKGJ1ZikpOworICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAoYnVmKTsgaSsrKQorLSAgICBwcmludGYgKCIlMDJ4ICIsIGJ1ZltpXSAmIDB4RkYpOworKyAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgYnVmW2ldICYgMHhGRik7CisgICBwcmludGYgKCJcbiIpOworIAorICAgcCA9IHN0cmluZ3ByZXBfbG9jYWxlX3RvX3V0ZjggKGJ1Zik7CitAQCAtNjksNyArNjksNyBAQCBtYWluICh2b2lkKQorIAorICAgcHJpbnRmICgiQmVmb3JlIHN0cmluZ3ByZXAgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7CisgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCistICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKKyAgIHByaW50ZiAoIlxuIik7CisgCisgICByYyA9IHN0cmluZ3ByZXAgKGJ1ZiwgQlVGU0laLCAwLCBzdHJpbmdwcmVwX25hbWVwcmVwKTsKK0BAIC03OSw3ICs3OSw3IEBAIG1haW4gKHZvaWQpCiAgICAgIHsKLS0gICAgICBlcnJvciAoMCwgMCwgXygib25seSBvbmUgb2YgLXMsIC1lLCAtZCwgLWEsIC11IG9yIC1uIGNhbiBiZSBzcGVjaWZpZWQiKSk7Ci0rICAgICAgZXJyb3IgKDAsIDAsICIlcyIsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOwotICAgICAgIHVzYWdlIChFWElUX0ZBSUxVUkUpOworICAgICAgIHByaW50ZiAoIkFmdGVyIHN0cmluZ3ByZXAgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7CisgICAgICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAoYnVmKTsgaSsrKQorLQlwcmludGYgKCIlMDJ4ICIsIGJ1ZltpXSAmIDB4RkYpOworKwlwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgYnVmW2ldICYgMHhGRik7CisgICAgICAgcHJpbnRmICgiXG4iKTsKICAgICAgfQogIAotQEAgLTE4NSw3ICsxODUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgaWYgKCFhcmdzX2luZm8ucXVpZXRfZ2l2ZW4KLSAgICAgICAmJiBhcmdzX2luZm8uaW5wdXRzX251bSA9PSAwCi0gICAgICAgJiYgaXNhdHR5IChmaWxlbm8gKHN0ZGluKSkpCi0tICAgIGZwcmludGYgKHN0ZGVyciwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCi0rICAgIGZwcmludGYgKHN0ZGVyciwgIiVzIiwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCi0gCQkgICAgICAgInRlcm1pbmF0ZWQgYnkgYSBuZXdsaW5lIGNoYXJhY3Rlci5cbiIpKTsKK2RpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlMy5jIGIvZXhhbXBsZXMvZXhhbXBsZTMuYworaW5kZXggZmMxMWMxYy4uZmZiOTA0MiAxMDA2NDQKKy0tLSBhL2V4YW1wbGVzL2V4YW1wbGUzLmMKKysrKyBiL2V4YW1wbGVzL2V4YW1wbGUzLmMKK0BAIC01Niw3ICs1Niw3IEBAIG1haW4gKHZvaWQpCiAgCi0gICBkbwotQEAgLTE5Nyw3ICsxOTcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIGlmIChmZW9mIChzdGRpbikpCi0gCSAgICBicmVhazsKKyAgIHByaW50ZiAoIlJlYWQgc3RyaW5nIChsZW5ndGggJWxkKTogIiwgKGxvbmcgaW50KSBzdHJsZW4gKGJ1ZikpOworICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAoYnVmKTsgaSsrKQorLSAgICBwcmludGYgKCIlMDJ4ICIsIGJ1ZltpXSAmIDB4RkYpOworKyAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgYnVmW2ldICYgMHhGRik7CisgICBwcmludGYgKCJcbiIpOwogIAotLQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKLSsJICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgIiVzIiwgXygiaW5wdXQgZXJyb3IiKSk7CisgICByYyA9IGlkbmFfdG9fYXNjaWlfbHogKGJ1ZiwgJnAsIDApOworQEAgLTY4LDcgKzY4LDcgQEAgbWFpbiAodm9pZCkKKyAKKyAgIHByaW50ZiAoIkFDRSBsYWJlbCAobGVuZ3RoICVsZCk6ICclcydcbiIsIChsb25nIGludCkgc3RybGVuIChwKSwgcCk7CisgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChwKTsgaSsrKQorLSAgICBwcmludGYgKCIlMDJ4ICIsIHBbaV0gJiAweEZGKTsKKysgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIHBbaV0gJiAweEZGKTsKKyAgIHByaW50ZiAoIlxuIik7CisgCisgICBmcmVlIChwKTsKK2RpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlNC5jIGIvZXhhbXBsZXMvZXhhbXBsZTQuYworaW5kZXggMWIzMTljOS4uYTMzMTVhMSAxMDA2NDQKKy0tLSBhL2V4YW1wbGVzL2V4YW1wbGU0LmMKKysrKyBiL2V4YW1wbGVzL2V4YW1wbGU0LmMKK0BAIC01Niw3ICs1Niw3IEBAIG1haW4gKHZvaWQpCisgCisgICBwcmludGYgKCJSZWFkIHN0cmluZyAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKKysgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOworICAgcHJpbnRmICgiXG4iKTsKKyAKKyAgIHJjID0gaWRuYV90b191bmljb2RlX2x6bHogKGJ1ZiwgJnAsIDApOworQEAgLTY4LDcgKzY4LDcgQEAgbWFpbiAodm9pZCkKKyAKKyAgIHByaW50ZiAoIkFDRSBsYWJlbCAobGVuZ3RoICVsZCk6ICclcydcbiIsIChsb25nIGludCkgc3RybGVuIChwKSwgcCk7CisgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChwKTsgaSsrKQorLSAgICBwcmludGYgKCIlMDJ4ICIsIHBbaV0gJiAweEZGKTsKKysgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIHBbaV0gJiAweEZGKTsKKyAgIHByaW50ZiAoIlxuIik7CisgCisgICBmcmVlIChwKTsKK2RpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlNS5jIGIvZXhhbXBsZXMvZXhhbXBsZTUuYworaW5kZXggZGY1NTc5OC4uMjlkNDBiOSAxMDA2NDQKKy0tLSBhL2V4YW1wbGVzL2V4YW1wbGU1LmMKKysrKyBiL2V4YW1wbGVzL2V4YW1wbGU1LmMKK0BAIC02OCw3ICs2OCw3IEBAIG1haW4gKHZvaWQpCisgCisgICBwcmludGYgKCJSZWFkIHN0cmluZyAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKKysgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOworICAgcHJpbnRmICgiXG4iKTsKKyAKKyAgIHAgPSBzdHJpbmdwcmVwX2xvY2FsZV90b191dGY4IChidWYpOworZGlmZiAtLWdpdCBhL3NyYy9pZG4uYyBiL3NyYy9pZG4uYworaW5kZXggYmUxYzdkMS4uMTNlYjNjOSAxMDA2NDQKKy0tLSBhL3NyYy9pZG4uYworKysrIGIvc3JjL2lkbi5jCitAQCAtNDE5LDcgKzQxOSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgICAgIHNpemVfdCBpOworIAkgICAgICBmb3IgKGkgPSAwOyBwW2ldOyBpKyspCisgCQlmcHJpbnRmIChzdGRlcnIsICJvdXRwdXRbJWx1XSA9IFUrJTA0eFxuIiwKKy0JCQkgKHVuc2lnbmVkIGxvbmcpIGksIHBbaV0pOworKwkJCSAodW5zaWduZWQgbG9uZykgaSwgKHVuc2lnbmVkKSBwW2ldKTsKKyAJICAgIH0KKyAKKyAJICBmcHJpbnRmIChzdGRvdXQsICIlc1xuIiwgcCk7CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X2lkbmEuYyBiL3Rlc3RzL3RzdF9pZG5hLmMKK2luZGV4IDQxNTc2NGUuLjRhYzA0NmYgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfaWRuYS5jCisrKysgYi90ZXN0cy90c3RfaWRuYS5jCitAQCAtMjIwLDEzICsyMjAsMTQgQEAgZG9pdCAodm9pZCkKKyAgIGNoYXIgbGFiZWxbMTAwXTsKKyAgIHVpbnQzMl90ICp1Y3M0bGFiZWwgPSBOVUxMOworICAgdWludDMyX3QgdG1wWzEwMF07CistICBzaXplX3QgbGVuLCBsZW4yLCBpOworKyAgc2l6ZV90IGxlbiwgbGVuMjsKKyAgIGludCByYzsKKysgIHVuc2lnbmVkIGk7CisgCisgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChpZG5hKSAvIHNpemVvZiAoaWRuYVswXSk7IGkrKykKKyAgICAgeworICAgICAgIGlmIChkZWJ1ZykKKy0JcHJpbnRmICgiSUROQSBlbnRyeSAlbGQ6ICVzXG4iLCBpLCBpZG5hW2ldLm5hbWUpOworKwlwcmludGYgKCJJRE5BIGVudHJ5ICV1OiAlc1xuIiwgaSwgaWRuYVtpXS5uYW1lKTsKKyAKKyAgICAgICBpZiAoZGVidWcpCisgCXsKK0BAIC0yMzcsNyArMjM4LDcgQEAgZG9pdCAodm9pZCkKKyAgICAgICByYyA9IGlkbmFfdG9fYXNjaWlfNGkgKGlkbmFbaV0uaW4sIGlkbmFbaV0uaW5sZW4sIGxhYmVsLCBpZG5hW2ldLmZsYWdzKTsKKyAgICAgICBpZiAocmMgIT0gaWRuYVtpXS50b2FzY2lpcmMpCisgCXsKKy0JICBmYWlsICgiSUROQSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMjU2LDcgKzI1Nyw3IEBAIGRvaXQgKHZvaWQpCisgCSAgaWYgKHN0cmxlbiAoaWRuYVtpXS5vdXQpICE9IHN0cmxlbiAobGFiZWwpIHx8CisgCSAgICAgIHN0cmNhc2VjbXAgKGlkbmFbaV0ub3V0LCBsYWJlbCkgIT0gMCkKKyAJICAgIHsKKy0JICAgICAgZmFpbCAoIklETkEgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7CisrCSAgICAgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7CisgCSAgICAgIGlmIChkZWJ1ZykKKyAJCXByaW50ZiAoIkVSUk9SXG4iKTsKKyAJICAgIH0KK0BAIC0yNzMsOCArMjc0LDggQEAgZG9pdCAodm9pZCkKKyAKKyAgICAgICBpZiAoZGVidWcpCisgCXsKKy0JICBwcmludGYgKCJpbjogJXMgKCVsZD09JWxkKVxuIiwgaWRuYVtpXS5vdXQsIHN0cmxlbiAoaWRuYVtpXS5vdXQpLAorLQkJICBsZW4pOworKwkgIHByaW50ZiAoImluOiAlcyAoJWQ9PSVkKVxuIiwgaWRuYVtpXS5vdXQsIChpbnQpIHN0cmxlbiAoaWRuYVtpXS5vdXQpLAorKwkJICAoaW50KSBsZW4pOworIAkgIHVjczRwcmludCAodWNzNGxhYmVsLCBsZW4pOwogIAl9CiAgCi0gICAgICAgaWYgKHN0cmxlbiAobGluZSkgPiAwKQotQEAgLTIxNSw3ICsyMTUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIGlmICghcSkKK0BAIC0yODIsMjAgKzI4MywyMCBAQCBkb2l0ICh2b2lkKQorICAgICAgIHJjID0gaWRuYV90b191bmljb2RlXzQ0aSAodWNzNGxhYmVsLCBsZW4sIHRtcCwgJmxlbjIsIGlkbmFbaV0uZmxhZ3MpOworICAgICAgIGlmIChkZWJ1ZykKKyAJeworLQkgIHByaW50ZiAoImV4cGVjdGVkIG91dCAoJWxkKTpcbiIsCisrCSAgcHJpbnRmICgiZXhwZWN0ZWQgb3V0ICglbHUpOlxuIiwKKyAJCSAgcmMgPT0gSUROQV9TVUNDRVNTID8gaWRuYVtpXS5pbmxlbiA6IGxlbik7CisgCSAgaWYgKHJjID09IElETkFfU1VDQ0VTUykKKyAJICAgIHVjczRwcmludCAoaWRuYVtpXS5pbiwgaWRuYVtpXS5pbmxlbik7CisgCSAgZWxzZQorIAkgICAgdWNzNHByaW50ICh1Y3M0bGFiZWwsIGxlbik7CisgCistCSAgcHJpbnRmICgiY29tcHV0ZWQgb3V0ICglbGQpOlxuIiwgbGVuMik7CisrCSAgcHJpbnRmICgiY29tcHV0ZWQgb3V0ICglZCk6XG4iLCAoaW50KSBsZW4yKTsKKyAJICB1Y3M0cHJpbnQgKHRtcCwgbGVuMik7CisgCX0KKyAKKyAgICAgICBpZiAocmMgIT0gaWRuYVtpXS50b3VuaWNvZGVyYykKKyAJeworLQkgIGZhaWwgKCJJRE5BIGVudHJ5ICVsZCBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisrCSAgZmFpbCAoIklETkEgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBjb250aW51ZTsKK0BAIC0zMDksMTEgKzMxMCwxMSBAQCBkb2l0ICh2b2lkKQorIAkgIGlmIChkZWJ1ZykKICAJICAgIHsKLSAJICAgICAgZnJlZSAocCk7Ci0tCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7CisgCSAgICAgIGlmIChyYyA9PSBJRE5BX1NVQ0NFU1MpCistCQlwcmludGYgKCJsZW49JWxkIGxlbjI9JWxkXG4iLCBsZW4yLCBpZG5hW2ldLmlubGVuKTsKKysJCXByaW50ZiAoImxlbj0lZCBsZW4yPSVkXG4iLCAoaW50KSBsZW4yLCAoaW50KSBpZG5hW2ldLmlubGVuKTsKKyAJICAgICAgZWxzZQorLQkJcHJpbnRmICgibGVuPSVsZCBsZW4yPSVsZFxuIiwgbGVuLCBsZW4yKTsKKysJCXByaW50ZiAoImxlbj0lZCBsZW4yPSVkXG4iLCAoaW50KSBsZW4sIChpbnQpIGxlbjIpOwogIAkgICAgfQorLQkgIGZhaWwgKCJJRE5BIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRVJST1JcbiIpOworIAl9CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X2lkbmEyLmMgYi90ZXN0cy90c3RfaWRuYTIuYworaW5kZXggNjViM2E0ZC4uMzg5MzJjYSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3RzdF9pZG5hMi5jCisrKysgYi90ZXN0cy90c3RfaWRuYTIuYworQEAgLTQ2MSwxNCArNDYxLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWRuYSBpZG5hW10gPSB7Cisgdm9pZAorIGRvaXQgKHZvaWQpCisgeworLSAgc2l6ZV90IGk7CisrICB1bnNpZ25lZCBpOworICAgY2hhciAqb3V0OworICAgaW50IHJjOwogIAotQEAgLTI0MCw3ICsyNDAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIGlmICghcSkKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKGlkbmEpIC8gc2l6ZW9mIChpZG5hWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgaWYgKGRlYnVnKQorLQlwcmludGYgKCJJRE5BMiBlbnRyeSAlbGRcbiIsIGkpOworKwlwcmludGYgKCJJRE5BMiBlbnRyeSAldVxuIiwgaSk7CisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CitAQCAtNDg3LDcgKzQ4Nyw3IEBAIGRvaXQgKHZvaWQpCisgCQkJICAgICBJRE5BX1VTRV9TVEQzX0FTQ0lJX1JVTEVTKTsKKyAgICAgICBpZiAocmMgIT0gSUROQV9TVUNDRVNTICYmIHN0cmxlbiAoaWRuYVtpXS5vdXQpID4gMCkKKyAJeworLQkgIGZhaWwgKCJJRE5BMiBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJJRE5BMiBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisgCSAgY29udGludWU7CisgCX0KKyAKK0BAIC01MDQsNyArNTA0LDcgQEAgZG9pdCAodm9pZCkKKyAJICBpZiAoc3RybGVuIChpZG5hW2ldLm91dCkgIT0gc3RybGVuIChvdXQpIHx8CisgCSAgICAgIHN0cmNhc2VjbXAgKGlkbmFbaV0ub3V0LCBvdXQpICE9IDApCiAgCSAgICB7Ci0gCSAgICAgIGZyZWUgKHIpOwotLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworLQkgICAgICBmYWlsICgiSUROQTIgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7CisrCSAgICAgIGZhaWwgKCJJRE5BMiBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgICAgICBpZiAoZGVidWcpCisgCQlwcmludGYgKCJFUlJPUlxuIik7CiAgCSAgICB9CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X2lkbmEzLmMgYi90ZXN0cy90c3RfaWRuYTMuYworaW5kZXggYTE4OTM3OC4uZjY1NjI4YyAxMDA2NDQKKy0tLSBhL3Rlc3RzL3RzdF9pZG5hMy5jCisrKysgYi90ZXN0cy90c3RfaWRuYTMuYworQEAgLTU5LDEzICs1OSwxMyBAQCBkb2l0ICh2b2lkKQorIHsKKyAgIGludCByYzsKKyAgIGNoYXIgKm91dCA9IE5VTEw7CistICBzaXplX3QgaTsKKysgIHVuc2lnbmVkIGk7CiAgCi1AQCAtMjc3LDcgKzI3Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgcSA9IHN0cmluZ3ByZXBfdXRmOF90b191Y3M0IChwLCAtMSwgJmxlbik7Ci0gCSAgZnJlZSAocCk7Ci0gCSAgaWYgKCFxKQotLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoaWRuYSkgLyBzaXplb2YgKGlkbmFbMF0pOyBpKyspCisgICAgIHsKKyAgICAgICByYyA9IGlkbmFfdG9fdW5pY29kZV84ejh6IChpZG5hW2ldLmluLCAmb3V0LCAwKTsKKyAgICAgICBpZiAocmMgIT0gSUROQV9TVUNDRVNTKQorLQlmYWlsICgiSUROQTNbJWxkXSBmYWlsZWQgJWRcbiIsIGksIHJjKTsKKysJZmFpbCAoIklETkEzWyV1XSBmYWlsZWQgJWRcbiIsIGksIHJjKTsKICAKLSAJICBpZiAoYXJnc19pbmZvLmRlYnVnX2dpdmVuKQotQEAgLTMzNiw3ICszMzYsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHIgPSBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCAocSwgLTEsIE5VTEwsIE5VTEwpOwotIAkgIGZyZWUgKHEpOwotIAkgIGlmICghcikKLS0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKKyAgICAgICBpZiAoZGVidWcgJiYgcmMgPT0gSUROQV9TVUNDRVNTKQorIAl7CitAQCAtNzUsOSArNzUsOSBAQCBkb2l0ICh2b2lkKQorIAl9CiAgCi0gCSAgcCA9IHN0cmluZ3ByZXBfdXRmOF90b19sb2NhbGUgKHIpOwotQEAgLTM2MCw3ICszNjAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHEgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fdWNzNCAocCwgLTEsIE5VTEwpOwotIAkgIGZyZWUgKHApOwotIAkgIGlmICghcSkKLS0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKKyAgICAgICBpZiAoc3RyY21wIChvdXQsIGlkbmFbaV0ub3V0KSAhPSAwKQorLQlmYWlsICgiSUROQTNbJWxkXSBmYWlsZWRcbiIsIGkpOworKwlmYWlsICgiSUROQTNbJXVdIGZhaWxlZFxuIiwgaSk7CisgICAgICAgZWxzZSBpZiAoZGVidWcpCistCXByaW50ZiAoIklETkEzWyVsZF0gc3VjY2Vzc1xuIiwgaSk7CisrCXByaW50ZiAoIklETkEzWyV1XSBzdWNjZXNzXG4iLCBpKTsKICAKLSAJICBpZiAoYXJnc19pbmZvLmRlYnVnX2dpdmVuKQotQEAgLTQzOCw3ICs0MzgsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIGlmICghcSkKKyAgICAgICBpZiAob3V0KQorIAlpZG5fZnJlZSAob3V0KTsKK2RpZmYgLS1naXQgYS90ZXN0cy90c3RfbmZrYy5jIGIvdGVzdHMvdHN0X25ma2MuYworaW5kZXggZDE1MGZlYy4uZjVhZjljNiAxMDA2NDQKKy0tLSBhL3Rlc3RzL3RzdF9uZmtjLmMKKysrKyBiL3Rlc3RzL3RzdF9uZmtjLmMKK0BAIC02OCwxOCArNjgsMTggQEAgdm9pZAorIGRvaXQgKHZvaWQpCisgeworICAgY2hhciAqb3V0OworLSAgc2l6ZV90IGk7CisrICB1bnNpZ25lZCBpOworIAorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAobmZrYykgLyBzaXplb2YgKG5ma2NbMF0pOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoZGVidWcpCistCXByaW50ZiAoIk5GS0MgZW50cnkgJWxkXG4iLCBpKTsKKysJcHJpbnRmICgiTkZLQyBlbnRyeSAldVxuIiwgaSk7CisgCisgICAgICAgb3V0ID0gc3RyaW5ncHJlcF91dGY4X25ma2Nfbm9ybWFsaXplIChuZmtjW2ldLmluLAorIAkJCQkJICAgIChzc2l6ZV90KSBzdHJsZW4gKG5ma2NbaV0uaW4pKTsKKyAgICAgICBpZiAob3V0ID09IE5VTEwpCisgCXsKKy0JICBmYWlsICgiTkZLQyBlbnRyeSAlbGQgZmFpbGVkIGZhdGFsbHlcbiIsIGkpOworKwkgIGZhaWwgKCJORktDIGVudHJ5ICV1IGZhaWxlZCBmYXRhbGx5XG4iLCBpKTsKKyAJICBjb250aW51ZTsKKyAJfQorIAorQEAgLTExNCw3ICsxMTQsNyBAQCBkb2l0ICh2b2lkKQorICAgICAgIGlmIChzdHJsZW4gKG5ma2NbaV0ub3V0KSAhPSBzdHJsZW4gKG91dCkgfHwKKyAJICBtZW1jbXAgKG5ma2NbaV0ub3V0LCBvdXQsIHN0cmxlbiAob3V0KSkgIT0gMCkKKyAJeworLQkgIGZhaWwgKCJORktDIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgIGZhaWwgKCJORktDIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRVJST1JcbiIpOworIAl9CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X3ByMjkuYyBiL3Rlc3RzL3RzdF9wcjI5LmMKK2luZGV4IDNkYzU0NjYuLjExZDBlZGUgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfcHIyOS5jCisrKysgYi90ZXN0cy90c3RfcHIyOS5jCitAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHR2IHR2W10gPSB7Cisgdm9pZAorIGRvaXQgKHZvaWQpCisgeworLSAgc2l6ZV90IGk7CisrICB1bnNpZ25lZCBpOworICAgaW50IHJjOworIAorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAodHYpIC8gc2l6ZW9mICh0dlswXSk7IGkrKykKK0BAIC0xMDAsNyArMTAwLDcgQEAgZG9pdCAodm9pZCkKKyAJeworIAkgIHVpbnQzMl90ICpwLCAqcTsKKyAKKy0JICBwcmludGYgKCJQUjI5IGVudHJ5ICVsZDogJXNcbiIsIGksIHR2W2ldLm5hbWUpOworKwkgIHByaW50ZiAoIlBSMjkgZW50cnkgJXU6ICVzXG4iLCBpLCB0dltpXS5uYW1lKTsKKyAKKyAJICBwcmludGYgKCJpbjpcbiIpOworIAkgIHVjczRwcmludCAodHZbaV0uaW4sIHR2W2ldLmlubGVuKTsKK0BAIC0xMjAsNyArMTIwLDcgQEAgZG9pdCAodm9pZCkKKyAgICAgICByYyA9IHByMjlfNCAodHZbaV0uaW4sIHR2W2ldLmlubGVuKTsKKyAgICAgICBpZiAocmMgIT0gdHZbaV0ucmMpCisgCXsKKy0JICBmYWlsICgiUFIyOSBlbnRyeSAlbGQgZmFpbGVkIChleHBlY3RlZCAlZCk6ICVkXG4iLCBpLCB0dltpXS5yYywgcmMpOworKwkgIGZhaWwgKCJQUjI5IGVudHJ5ICV1IGZhaWxlZCAoZXhwZWN0ZWQgJWQpOiAlZFxuIiwgaSwgdHZbaV0ucmMsIHJjKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMTI5LDcgKzEyOSw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgcmMgPSBwcjI5XzR6ICh0dltpXS5pbik7CisgICAgICAgaWYgKHJjICE9IHR2W2ldLnJjKQorIAl7CistCSAgZmFpbCAoIlBSMjkgZW50cnkgJWxkIGZhaWxlZCAoZXhwZWN0ZWQgJWQpOiAlZFxuIiwgaSwgdHZbaV0ucmMsIHJjKTsKKysJICBmYWlsICgiUFIyOSBlbnRyeSAldSBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsIGksIHR2W2ldLnJjLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGNvbnRpbnVlOworQEAgLTE0Miw3ICsxNDIsNyBAQCBkb2l0ICh2b2lkKQorIAlwID0gc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjggKHR2W2ldLmluLCAoc3NpemVfdCkgdHZbaV0uaW5sZW4sCisgCQkJCSAgICAgJml0ZW1zX3JlYWQsICZpdGVtc193cml0dGVuKTsKKyAJaWYgKHAgPT0gTlVMTCkKKy0JICBmYWlsICgiRkFJTDogc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjgodHZbJWxkXSkgPT0gTlVMTFxuIiwgaSk7CisrCSAgZmFpbCAoIkZBSUw6IHN0cmluZ3ByZXBfdWNzNF90b191dGY4KHR2WyV1XSkgPT0gTlVMTFxuIiwgaSk7CisgCWlmIChkZWJ1ZykKKyAJICBoZXhwcmludCAocCwgc3RybGVuIChwKSk7CisgCitAQCAtMTUwLDcgKzE1MCw3IEBAIGRvaXQgKHZvaWQpCisgCWZyZWUgKHApOworIAlpZiAocmMgIT0gdHZbaV0ucmMpCisgCSAgeworLQkgICAgZmFpbCAoIlBSMjkgZW50cnkgJWxkIGZhaWxlZCAoZXhwZWN0ZWQgJWQpOiAlZFxuIiwKKysJICAgIGZhaWwgKCJQUjI5IGVudHJ5ICV1IGZhaWxlZCAoZXhwZWN0ZWQgJWQpOiAlZFxuIiwKKyAJCSAgaSwgdHZbaV0ucmMsIHJjKTsKKyAJICAgIGlmIChkZWJ1ZykKKyAJICAgICAgcHJpbnRmICgiRkFUQUxcbiIpOworZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9wdW55Y29kZS5jIGIvdGVzdHMvdHN0X3B1bnljb2RlLmMKK2luZGV4IDQ5M2I4YTIuLjk5Nzc0NGEgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfcHVueWNvZGUuYworKysrIGIvdGVzdHMvdHN0X3B1bnljb2RlLmMKK0BAIC0xNzMsNyArMTczLDggQEAgZG9pdCAodm9pZCkKKyAgIGNoYXIgKnA7CisgICB1aW50MzJfdCAqcTsKKyAgIGludCByYzsKKy0gIHNpemVfdCBpLCBvdXRsZW47CisrICBzaXplX3Qgb3V0bGVuOworKyAgdW5zaWduZWQgaTsKKyAKKyAgIHAgPSBtYWxsb2MgKHNpemVvZiAoKnApICogQlVGU0laKTsKKyAgIGlmIChwID09IE5VTEwpCitAQCAtMTg2LDcgKzE4Nyw3IEBAIGRvaXQgKHZvaWQpCisgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChwdW55Y29kZSkgLyBzaXplb2YgKHB1bnljb2RlWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgaWYgKGRlYnVnKQorLQlwcmludGYgKCJQVU5ZQ09ERSBlbnRyeSAlbGQ6ICVzXG4iLCBpLCBwdW55Y29kZVtpXS5uYW1lKTsKKysJcHJpbnRmICgiUFVOWUNPREUgZW50cnkgJXU6ICVzXG4iLCBpLCBwdW55Y29kZVtpXS5uYW1lKTsKKyAKKyAgICAgICBpZiAoZGVidWcpCisgCXsKK0BAIC0xOTksNyArMjAwLDcgQEAgZG9pdCAodm9pZCkKKyAJCQkgICAgTlVMTCwgJm91dGxlbiwgcCk7CisgICAgICAgaWYgKHJjICE9IHB1bnljb2RlW2ldLnJjKQorIAl7CistCSAgZmFpbCAoInB1bnljb2RlX2VuY29kZSgpIGVudHJ5ICVsZCBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisrCSAgZmFpbCAoInB1bnljb2RlX2VuY29kZSgpIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMjIxLDcgKzIyMiw3IEBAIGRvaXQgKHZvaWQpCisgCSAgaWYgKHN0cmxlbiAocHVueWNvZGVbaV0ub3V0KSAhPSBzdHJsZW4gKHApIHx8CisgCSAgICAgIG1lbWNtcCAocHVueWNvZGVbaV0ub3V0LCBwLCBzdHJsZW4gKHApKSAhPSAwKQogIAkgICAgewotIAkgICAgICBmcmVlIChwKTsKLS0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKKy0JICAgICAgZmFpbCAoInB1bnljb2RlKCkgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7CisrCSAgICAgIGZhaWwgKCJwdW55Y29kZSgpIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7CisgCSAgICAgIGlmIChkZWJ1ZykKKyAJCXByaW50ZiAoIkVSUk9SXG4iKTsKICAJICAgIH0KLSAKLUBAIC00OTQsNyArNDk0LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICByID0gc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjggKHEsIC0xLCBOVUxMLCBOVUxMKTsKLSAJICBmcmVlIChxKTsKLSAJICBpZiAoIXIpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci0gCi0gCSAgcCA9IHN0cmluZ3ByZXBfdXRmOF90b19sb2NhbGUgKHIpOwotQEAgLTUyMyw3ICs1MjMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgICAgICBpZiAoIXEpCi0gCQl7Ci0gCQkgIGZyZWUgKHApOwotLQkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJCSBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotIAkJfQotIAotQEAgLTUzNyw3ICs1MzcsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHIgPSBzdHJpbmdwcmVwX3V0ZjhfbmZrY19ub3JtYWxpemUgKHAsIC0xKTsKLSAJICBmcmVlIChwKTsKLSAJICBpZiAoIXIpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOwotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSsJCSAgIF8oImNvdWxkIG5vdCBkbyBORktDIG5vcm1hbGl6YXRpb24iKSk7Ci0gCi0gCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKK0BAIC0yNDEsNyArMjQyLDcgQEAgZG9pdCAodm9pZCkKKyAJCQkgICAgJm91dGxlbiwgcSwgTlVMTCk7CisgICAgICAgaWYgKHJjICE9IHB1bnljb2RlW2ldLnJjKQorIAl7CistCSAgZmFpbCAoInB1bnljb2RlKCkgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKysJICBmYWlsICgicHVueWNvZGUoKSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGNvbnRpbnVlOworQEAgLTI2Miw3ICsyNjMsNyBAQCBkb2l0ICh2b2lkKQorIAkgIGlmIChwdW55Y29kZVtpXS5pbmxlbiAhPSBvdXRsZW4gfHwKKyAJICAgICAgbWVtY21wIChwdW55Y29kZVtpXS5pbiwgcSwgb3V0bGVuKSAhPSAwKQogIAkgICAgewotQEAgLTU0Nyw3ICs1NDgsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgICAgICBpZiAoIXEpCi0gCQl7Ci0gCQkgIGZyZWUgKHIpOwotLQkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJCSBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotIAkJfQorLQkgICAgICBmYWlsICgicHVueWNvZGVfZGVjb2RlKCkgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7CisrCSAgICAgIGZhaWwgKCJwdW55Y29kZV9kZWNvZGUoKSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgICAgICBpZiAoZGVidWcpCisgCQlwcmludGYgKCJFUlJPUlxuIik7CisgCSAgICB9CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X3N0cmVycm9yLmMgYi90ZXN0cy90c3Rfc3RyZXJyb3IuYworaW5kZXggNzFmZmY1OS4uNzMwZjVlNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3RzdF9zdHJlcnJvci5jCisrKysgYi90ZXN0cy90c3Rfc3RyZXJyb3IuYworQEAgLTExMCw3ICsxMTAsNyBAQCBkb2l0ICh2b2lkKQorICAgLyogSXRlcmF0ZSB0aHJvdWdoIGFsbCBlcnJvciBjb2Rlcy4gKi8KICAKKyAgIHsKKy0gICAgc2l6ZV90IGk7CisrICAgIHVuc2lnbmVkIGk7CisgICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7CisgCisgICAgIGZvciAoaSA9IDA7OyBpKyspCitAQCAtMTI2LDEzICsxMjYsMTMgQEAgZG9pdCAodm9pZCkKKyAJICAgIGJyZWFrOworIAkgIH0KKyAJaWYgKGRlYnVnKQorLQkgIHByaW50ZiAoImlkbmEgJWxkOiAlc1xuIiwgaSwgcCk7CisrCSAgcHJpbnRmICgiaWRuYSAldTogJXNcbiIsIGksIHApOworIAlsYXN0X3AgPSBwOworICAgICAgIH0KKyAgIH0KKyAKKyAgIHsKKy0gICAgc2l6ZV90IGk7CisrICAgIHVuc2lnbmVkIGk7CisgICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7CisgCisgICAgIGZvciAoaSA9IDA7OyBpKyspCitAQCAtMTQxLDEzICsxNDEsMTMgQEAgZG9pdCAodm9pZCkKKyAJaWYgKHAgPT0gbGFzdF9wKQorIAkgIGJyZWFrOworIAlpZiAoZGVidWcpCistCSAgcHJpbnRmICgicHIyOSAlbGQ6ICVzXG4iLCBpLCBwKTsKKysJICBwcmludGYgKCJwcjI5ICV1OiAlc1xuIiwgaSwgcCk7CisgCWxhc3RfcCA9IHA7CisgICAgICAgfQorICAgfQorIAorICAgeworLSAgICBzaXplX3QgaTsKKysgICAgdW5zaWduZWQgaTsKKyAgICAgY29uc3QgY2hhciAqbGFzdF9wID0gTlVMTDsKKyAKKyAgICAgZm9yIChpID0gMDs7IGkrKykKK0BAIC0xNTYsMTMgKzE1NiwxMyBAQCBkb2l0ICh2b2lkKQorIAlpZiAocCA9PSBsYXN0X3ApCisgCSAgYnJlYWs7CisgCWlmIChkZWJ1ZykKKy0JICBwcmludGYgKCJwdW55Y29kZSAlbGQ6ICVzXG4iLCBpLCBwKTsKKysJICBwcmludGYgKCJwdW55Y29kZSAldTogJXNcbiIsIGksIHApOworIAlsYXN0X3AgPSBwOworICAgICAgIH0KKyAgIH0KKyAKKyAgIHsKKy0gICAgc2l6ZV90IGk7CisrICAgIHVuc2lnbmVkIGk7CisgICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7CisgCisgICAgIGZvciAoaSA9IDA7OyBpKyspCitAQCAtMTgzLDEzICsxODMsMTMgQEAgZG9pdCAodm9pZCkKKyAJICAgIGJyZWFrOworIAkgIH0KKyAJaWYgKGRlYnVnKQorLQkgIHByaW50ZiAoInN0cmluZ3ByZXAgJWxkOiAlc1xuIiwgaSwgcCk7CisrCSAgcHJpbnRmICgic3RyaW5ncHJlcCAldTogJXNcbiIsIGksIHApOworIAlsYXN0X3AgPSBwOworICAgICAgIH0KKyAgIH0KKyAKKyAgIHsKKy0gICAgc2l6ZV90IGk7CisrICAgIHVuc2lnbmVkIGk7CisgICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7CisgCisgICAgIGZvciAoaSA9IDA7OyBpKyspCitAQCAtMTk4LDcgKzE5OCw3IEBAIGRvaXQgKHZvaWQpCisgCWlmIChwID09IGxhc3RfcCkKKyAJICBicmVhazsKKyAJaWYgKGRlYnVnKQorLQkgIHByaW50ZiAoInRsZCAlbGQ6ICVzXG4iLCBpLCBwKTsKKysJICBwcmludGYgKCJ0bGQgJXU6ICVzXG4iLCBpLCBwKTsKKyAJbGFzdF9wID0gcDsKKyAgICAgICB9CisgICB9CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X3N0cmluZ3ByZXAuYyBiL3Rlc3RzL3RzdF9zdHJpbmdwcmVwLmMKK2luZGV4IDE0OWNlNmYuLjdjOWFiMDYgMTAwNjQ0CistLS0gYS90ZXN0cy90c3Rfc3RyaW5ncHJlcC5jCisrKysgYi90ZXN0cy90c3Rfc3RyaW5ncHJlcC5jCitAQCAtMjA1LDcgKzIwNSw3IEBAIGRvaXQgKHZvaWQpCisgeworICAgY2hhciAqcDsKKyAgIGludCByYzsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAKKyAgIGlmICghc3RyaW5ncHJlcF9jaGVja192ZXJzaW9uIChTVFJJTkdQUkVQX1ZFUlNJT04pKQorICAgICBmYWlsICgic3RyaW5ncHJlcF9jaGVja192ZXJzaW9uIGZhaWxlZCAoaGVhZGVyICVzIHJ1bnRpbWUgJXMpXG4iLAorQEAgLTIyNCw3ICsyMjQsNyBAQCBkb2l0ICh2b2lkKQorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoc3RycHJlcCkgLyBzaXplb2YgKHN0cnByZXBbMF0pOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoZGVidWcpCistCXByaW50ZiAoIlNUUklOR1BSRVAgZW50cnkgJWxkXG4iLCBpKTsKKysJcHJpbnRmICgiU1RSSU5HUFJFUCBlbnRyeSAldVxuIiwgaSk7CisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CitAQCAtMjQ3LDEyICsyNDcsMTIgQEAgZG9pdCAodm9pZCkKKyAJICBjb250aW51ZTsKKyAJZWxzZSBpZiAobCA9PSBOVUxMKQorIAkgIHsKKy0JICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJWxkXG4iLCBpKTsKKysJICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJXVcbiIsIGkpOworIAkgICAgY29udGludWU7CisgCSAgfQorIAllbHNlIGlmIChzdHJjbXAgKHN0cnByZXBbaV0uaW4sIHgpICE9IDApCisgCSAgeworLQkgICAgZmFpbCAoImJhZCBVVEYtOCBpbiBlbnRyeSAlbGRcbiIsIGkpOworKwkgICAgZmFpbCAoImJhZCBVVEYtOCBpbiBlbnRyeSAldVxuIiwgaSk7CisgCSAgICBpZiAoZGVidWcpCisgCSAgICAgIHsKKyAJCXB1dHMgKCJleHBlY3RlZDoiKTsKK0BAIC0yNzQsNyArMjc0LDcgQEAgZG9pdCAodm9pZCkKKyAJCQkgICAgICAgIk5hbWVwcmVwIiwgc3RycHJlcFtpXS5mbGFncyk7CisgICAgICAgaWYgKHJjICE9IHN0cnByZXBbaV0ucmMpCisgCXsKKy0JICBmYWlsICgic3RyaW5ncHJlcCgpIGVudHJ5ICVsZCBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisrCSAgZmFpbCAoInN0cmluZ3ByZXAoKSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGlmIChyYyA9PSBTVFJJTkdQUkVQX09LKQorQEAgLTMwMiw3ICszMDIsNyBAQCBkb2l0ICh2b2lkKQorIAkgIGlmIChzdHJsZW4gKHN0cnByZXBbaV0ub3V0KSAhPSBzdHJsZW4gKHApIHx8CisgCSAgICAgIG1lbWNtcCAoc3RycHJlcFtpXS5vdXQsIHAsIHN0cmxlbiAocCkpICE9IDApCisgCSAgICB7CistCSAgICAgIGZhaWwgKCJzdHJpbmdwcmVwKCkgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7CisrCSAgICAgIGZhaWwgKCJzdHJpbmdwcmVwKCkgZW50cnkgJWxkIGZhaWxlZFxuIiwgKGxvbmcpIGkpOworIAkgICAgICBpZiAoZGVidWcpCisgCQlwcmludGYgKCJFUlJPUlxuIik7CisgCSAgICB9CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X3RsZC5jIGIvdGVzdHMvdHN0X3RsZC5jCitpbmRleCAyZjhlMTJlLi5kMDM4Yzc5IDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X3RsZC5jCisrKysgYi90ZXN0cy90c3RfdGxkLmMKK0BAIC04MCw3ICs4MCw3IEBAIGNvbnN0IFRsZF90YWJsZSAqIG15X3RsZF90YWJsZXNbXSA9Cisgdm9pZAorIGRvaXQgKHZvaWQpCisgeworLSAgc2l6ZV90IGk7CisrICB1bnNpZ25lZCBpOworICAgY29uc3QgVGxkX3RhYmxlICp0bGR0YWJsZTsKKyAgIGNoYXIgKm91dDsKKyAgIHNpemVfdCBlcnJwb3M7CitAQCAtMjA2LDcgKzIwNiw3IEBAIGRvaXQgKHZvaWQpCisgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mICh0bGQpIC8gc2l6ZW9mICh0bGRbMF0pOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoZGVidWcpCistCXByaW50ZiAoIlRMRCBlbnRyeSAlbGQ6ICVzXG4iLCBpLCB0bGRbaV0ubmFtZSk7CisrCXByaW50ZiAoIlRMRCBlbnRyeSAldTogJXNcbiIsIGksIHRsZFtpXS5uYW1lKTsKKyAKKyAgICAgICBpZiAoZGVidWcpCisgCXsKK0BAIC0yMTcsNyArMjE3LDcgQEAgZG9pdCAodm9pZCkKKyAgICAgICB0bGR0YWJsZSA9IHRsZF9kZWZhdWx0X3RhYmxlICh0bGRbaV0udGxkLCBOVUxMKTsKKyAgICAgICBpZiAodGxkdGFibGUgPT0gTlVMTCkKKyAJeworLQkgIGZhaWwgKCJUTEQgZW50cnkgJWxkIHRsZF9nZXRfdGFibGUgKCVzKVxuIiwgaSwgdGxkW2ldLnRsZCk7CisrCSAgZmFpbCAoIlRMRCBlbnRyeSAldSB0bGRfZ2V0X3RhYmxlICglcylcbiIsIGksIHRsZFtpXS50bGQpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBjb250aW51ZTsKK0BAIC0yMjYsNyArMjI2LDcgQEAgZG9pdCAodm9pZCkKKyAgICAgICByYyA9IHRsZF9jaGVja180dCAodGxkW2ldLmluLCB0bGRbaV0uaW5sZW4sICZlcnJwb3MsIHRsZHRhYmxlKTsKKyAgICAgICBpZiAocmMgIT0gdGxkW2ldLnJjKQorIAl7CistCSAgZmFpbCAoIlRMRCBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJUTEQgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBjb250aW51ZTsKK0BAIC0yMzcsNyArMjM3LDcgQEAgZG9pdCAodm9pZCkKKyAKKyAgICAgICBpZiAocmMgIT0gdGxkW2ldLnJjKQorIAl7CistCSAgZmFpbCAoIlRMRCBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKKysJICBmYWlsICgiVExEIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRVJST1JcbiIpOworIAl9CitAQCAtMjQ1LDEyICsyNDUsMTIgQEAgZG9pdCAodm9pZCkKKyAJeworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoInJldHVybmVkIGVycnBvcyAlbGQgZXhwZWN0ZWQgZXJycG9zICVsZFxuIiwKKy0JCSAgICBlcnJwb3MsIHRsZFtpXS5lcnJwb3MpOworKwkJICAgIChsb25nKSBlcnJwb3MsIChsb25nKSB0bGRbaV0uZXJycG9zKTsKKyAKKyAJICBpZiAodGxkW2ldLmVycnBvcyAhPSBlcnJwb3MpCisgCSAgICB7CistCSAgICAgIGZhaWwgKCJUTEQgZW50cnkgJWxkIGZhaWxlZCBiZWNhdXNlIGVycnBvcyAlbGQgIT0gJWxkXG4iLCBpLAorLQkJICAgIHRsZFtpXS5lcnJwb3MsIGVycnBvcyk7CisrCSAgICAgIGZhaWwgKCJUTEQgZW50cnkgJXUgZmFpbGVkIGJlY2F1c2UgZXJycG9zICVsZCAhPSAlbGRcbiIsIGksCisrCQkgICAgKGxvbmcpIHRsZFtpXS5lcnJwb3MsIChsb25nKSBlcnJwb3MpOworIAkgICAgICBpZiAoZGVidWcpCisgCQlwcmludGYgKCJFUlJPUlxuIik7CisgCSAgICB9CitAQCAtMjYyLDEyICsyNjIsMTIgQEAgZG9pdCAodm9pZCkKKyAJcmMgPSB0bGRfY2hlY2tfOHogKHRsZFtpXS5leGFtcGxlLCAmZXJycG9zLCBOVUxMKTsKKyAJaWYgKHJjICE9IHRsZFtpXS5yYykKKyAJICB7CistCSAgICBmYWlsICgiVExEIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgZmFpbCAoIlRMRCBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgICAgaWYgKGRlYnVnKQorIAkgICAgICBwcmludGYgKCJFUlJPUlxuIik7CisgCSAgfQorIAlpZiAoZGVidWcpCistCSAgcHJpbnRmICgiVExEIGVudHJ5ICVsZCB0bGRfY2hlY2tfOHogKCVzKVxuIiwgaSwgdGxkW2ldLmV4YW1wbGUpOworKwkgIHByaW50ZiAoIlRMRCBlbnRyeSAldSB0bGRfY2hlY2tfOHogKCVzKVxuIiwgaSwgdGxkW2ldLmV4YW1wbGUpOworICAgICAgIH0KKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS90ZXN0cy91dGlscy5jIGIvdGVzdHMvdXRpbHMuYworaW5kZXggNzE3ZWUwMS4uNTU3N2RjMyAxMDA2NDQKKy0tLSBhL3Rlc3RzL3V0aWxzLmMKKysrKyBiL3Rlc3RzL3V0aWxzLmMKK0BAIC00OSw3ICs0OSw3IEBAIGVzY2FwZXByaW50IChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCisgeworICAgc2l6ZV90IGk7CisgCistICBwcmludGYgKCIgKGxlbmd0aCAlbGQgYnl0ZXMpOlxuXHQiLCBsZW4pOworKyAgcHJpbnRmICgiIChsZW5ndGggJWxkIGJ5dGVzKTpcblx0IiwgKGxvbmcpIGxlbik7CisgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoKChzdHJbaV0gJiAweEZGKSA+PSAnQScgJiYgKHN0cltpXSAmIDB4RkYpIDw9ICdaJykgfHwKK0BAIC01OCw3ICs1OCw3IEBAIGVzY2FwZXByaW50IChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCisgCSAgfHwgKHN0cltpXSAmIDB4RkYpID09ICcgJyB8fCAoc3RyW2ldICYgMHhGRikgPT0gJy4nKQorIAlwcmludGYgKCIlYyIsIChzdHJbaV0gJiAweEZGKSk7CisgICAgICAgZWxzZQorLQlwcmludGYgKCJcXHglMDJYIiwgKHN0cltpXSAmIDB4RkYpKTsKKysJcHJpbnRmICgiXFx4JTAyWCIsICh1bnNpZ25lZCkgKHN0cltpXSAmIDB4RkYpKTsKKyAgICAgICBpZiAoKGkgKyAxKSAlIDE2ID09IDAgJiYgKGkgKyAxKSA8IGxlbikKKyAJcHJpbnRmICgiJ1xuXHQnIik7CisgICAgIH0KK0BAIC03Myw3ICs3Myw3IEBAIGhleHByaW50IChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCisgICBwcmludGYgKCJcdDs7ICIpOworICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICB7CistICAgICAgcHJpbnRmICgiJTAyeCAiLCAoc3RyW2ldICYgMHhGRikpOworKyAgICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSAoc3RyW2ldICYgMHhGRikpOworICAgICAgIGlmICgoaSArIDEpICUgOCA9PSAwKQorIAlwcmludGYgKCIgIik7CisgICAgICAgaWYgKChpICsgMSkgJSAxNiA9PSAwICYmIGkgKyAxIDwgbGVuKQogLS0gCi0yLjguMQorMS45LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFkYzdkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSwxODEgQEAKK0Zyb20gODJmOThkY2JjNDI5YmJlODlhOTgzN2M1MzNjYmNiYzAyZTc3Yzc5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK0RhdGU6IFR1ZSwgMjggSnVuIDIwMTYgMTI6NDM6MzEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaWRuOiBmaXggcHJpbnRmKCkgZm9ybWF0IHNlY3VyaXR5IHdhcm5pbmdzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Cit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoxNzI6NzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICBlcnJvciAoMCwgMCwgXygib25seSBvbmUgb2YgLXMsIC1lLCAtZCwgLWEsIC11IG9yIC1uIGNhbiBiZSBzcGVjaWZpZWQiKSk7Cit8ICAgICAgICBefn5+fgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MTg3OjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCit8ICAgICAgXn5+fn5+fgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MjAyOjQ6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sIF8oImlucHV0IGVycm9yIikpOworfCAgICAgXn5+fn4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjIyMDo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworfCAgICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjI0NTo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworfCAgICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjI4MTo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKK3wgICAgICAgXgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MzQwOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworfCAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzozNjQ6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7Cit8ICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjQ0Mjo4OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworfCAgICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjQ5ODo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKK3wgICAgICAgXgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTI3OjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Cit8ICAgICAgXgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTQwOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOworfCAgICAgICBefn5+fgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6NTUxOjU6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Cit8ICAgICAgXgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL2lkbi5jIHwgMjcgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2lkbi5jIGIvc3JjL2lkbi5jCitpbmRleCBiZTFjN2QxLi42OGU0MjkxIDEwMDY0NAorLS0tIGEvc3JjL2lkbi5jCisrKysgYi9zcmMvaWRuLmMKK0BAIC0xNzAsNyArMTcwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgICAoYXJnc19pbmZvLmlkbmFfdG9fdW5pY29kZV9naXZlbiA/IDEgOiAwKSArCisgICAgICAgKGFyZ3NfaW5mby5uZmtjX2dpdmVuID8gMSA6IDApICE9IDEpCisgICAgIHsKKy0gICAgICBlcnJvciAoMCwgMCwgXygib25seSBvbmUgb2YgLXMsIC1lLCAtZCwgLWEsIC11IG9yIC1uIGNhbiBiZSBzcGVjaWZpZWQiKSk7CisrICAgICAgZXJyb3IgKDAsIDAsICIlcyIsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOworICAgICAgIHVzYWdlIChFWElUX0ZBSUxVUkUpOworICAgICB9CisgCitAQCAtMTg1LDcgKzE4NSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICBpZiAoIWFyZ3NfaW5mby5xdWlldF9naXZlbgorICAgICAgICYmIGFyZ3NfaW5mby5pbnB1dHNfbnVtID09IDAKKyAgICAgICAmJiBpc2F0dHkgKGZpbGVubyAoc3RkaW4pKSkKKy0gICAgZnByaW50ZiAoc3RkZXJyLCBfKCJUeXBlIGVhY2ggaW5wdXQgc3RyaW5nIG9uIGEgbGluZSBieSBpdHNlbGYsICIKKysgICAgZnByaW50ZiAoc3RkZXJyLCAiJXMiLCBfKCJUeXBlIGVhY2ggaW5wdXQgc3RyaW5nIG9uIGEgbGluZSBieSBpdHNlbGYsICIKKyAJCSAgICAgICAidGVybWluYXRlZCBieSBhIG5ld2xpbmUgY2hhcmFjdGVyLlxuIikpOworIAorICAgZG8KK0BAIC0xOTcsNyArMTk3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBpZiAoZmVvZiAoc3RkaW4pKQorIAkgICAgYnJlYWs7CisgCistCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sIF8oImlucHV0IGVycm9yIikpOworKwkgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCAiJXMiLCBfKCJpbnB1dCBlcnJvciIpKTsKKyAJfQorIAorICAgICAgIGlmIChzdHJsZW4gKGxpbmUpID4gMCkKK0BAIC0yMTUsNyArMjE1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBpZiAoIXEpCisgCSAgICB7CisgCSAgICAgIGZyZWUgKHApOworLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkgICAgfQorIAorQEAgLTI0MCw3ICsyNDAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIGlmICghcSkKKyAJICAgIHsKKyAJICAgICAgZnJlZSAocik7CistCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7CisgCSAgICB9CisgCitAQCAtMjc3LDcgKzI3Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgcSA9IHN0cmluZ3ByZXBfdXRmOF90b191Y3M0IChwLCAtMSwgJmxlbik7CisgCSAgZnJlZSAocCk7CisgCSAgaWYgKCFxKQorLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAorIAkgIGlmIChhcmdzX2luZm8uZGVidWdfZ2l2ZW4pCitAQCAtMzM2LDcgKzMzNiw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgciA9IHN0cmluZ3ByZXBfdWNzNF90b191dGY4IChxLCAtMSwgTlVMTCwgTlVMTCk7CisgCSAgZnJlZSAocSk7CisgCSAgaWYgKCFyKQorLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworIAorIAkgIHAgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fbG9jYWxlIChyKTsKK0BAIC0zNjAsNyArMzYwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBxID0gc3RyaW5ncHJlcF91dGY4X3RvX3VjczQgKHAsIC0xLCBOVUxMKTsKKyAJICBmcmVlIChwKTsKKyAJICBpZiAoIXEpCistCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7CisgCisgCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKK0BAIC00MzgsNyArNDM4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBpZiAoIXEpCisgCSAgICB7CisgCSAgICAgIGZyZWUgKHApOworLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworIAkgICAgfQorIAorQEAgLTQ5NCw3ICs0OTQsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIHIgPSBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCAocSwgLTEsIE5VTEwsIE5VTEwpOworIAkgIGZyZWUgKHEpOworIAkgIGlmICghcikKKy0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAKKyAJICBwID0gc3RyaW5ncHJlcF91dGY4X3RvX2xvY2FsZSAocik7CitAQCAtNTIzLDcgKzUyMyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgICAgIGlmICghcSkKKyAJCXsKKyAJCSAgZnJlZSAocCk7CistCQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkJIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7CisgCQl9CisgCitAQCAtNTM3LDcgKzUzNyw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgciA9IHN0cmluZ3ByZXBfdXRmOF9uZmtjX25vcm1hbGl6ZSAocCwgLTEpOworIAkgIGZyZWUgKHApOworIAkgIGlmICghcikKKy0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsIF8oImNvdWxkIG5vdCBkbyBORktDIG5vcm1hbGl6YXRpb24iKSk7CisrCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorKwkJICAgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKKyAKKyAJICBpZiAoYXJnc19pbmZvLmRlYnVnX2dpdmVuKQorIAkgICAgeworQEAgLTU0Nyw3ICs1NDgsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgICAgICBpZiAoIXEpCisgCQl7CisgCQkgIGZyZWUgKHIpOworLQkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJCSBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkJfQorIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vZ2NjNy1jb21wYXRpYmlsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2djYzctY29tcGF0aWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDZhNmVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2djYzctY29tcGF0aWJpbGl0eS5wYXRjaApAQCAtMCwwICsxLDMzNCBAQAorRnJvbSAyMzA5MzBiM2JjM2U0MzFiODE5ZWI0NTQyMGNiNDI0NzVkODNjYTkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT91dGY4P3E/VGltPTIwUj1DMz1CQ2hzZW4/PSA8dGltLnJ1ZWhzZW5AZ214LmRlPgorRGF0ZTogV2VkLCAxIEZlYiAyMDE3IDEwOjQ0OjM2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSBpbnRwcm9wcy5oIGZvciBnY2MtNyBjb21wYXRpYmlsaXR5CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGdsL2ludHByb3BzLmggICAgICAgICAgfCA2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQorIGxpYi9nbHRlc3RzL2ludHByb3BzLmggfCA2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nbC9pbnRwcm9wcy5oIGIvZ2wvaW50cHJvcHMuaAoraW5kZXggZTFmY2U1Yy4uZWIwNmI2OSAxMDA2NDQKKy0tLSBhL2dsL2ludHByb3BzLmgKKysrKyBiL2dsL2ludHByb3BzLmgKK0BAIC0xLDE4ICsxLDE4IEBACisgLyogaW50cHJvcHMuaCAtLSBwcm9wZXJ0aWVzIG9mIGludGVnZXIgdHlwZXMKKyAKKy0gICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCistICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKysgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAgIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorIC8qIFdyaXR0ZW4gYnkgUGF1bCBFZ2dlcnQuICAqLworQEAgLTQ3LDEyICs0NywxNiBAQAorIAorIC8qIE1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIGZvciBpbnRlZ2VyIHR5cGVzIGFuZCBleHByZXNzaW9ucy4gICovCisgCisrLyogVGhlIHdpZHRoIGluIGJpdHMgb2YgdGhlIGludGVnZXIgdHlwZSBvciBleHByZXNzaW9uIFQuCisrICAgUGFkZGluZyBiaXRzIGFyZSBub3Qgc3VwcG9ydGVkOyB0aGlzIGlzIGNoZWNrZWQgYXQgY29tcGlsZS10aW1lIGJlbG93LiAgKi8KKysjZGVmaW5lIFRZUEVfV0lEVEgodCkgKHNpemVvZiAodCkgKiBDSEFSX0JJVCkKKysKKyAvKiBUaGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgZm9yIHRoZSBpbnRlZ2VyIHR5cGUgVC4gICovCisgI2RlZmluZSBUWVBFX01JTklNVU0odCkgKCh0KSB+IFRZUEVfTUFYSU1VTSAodCkpCisgI2RlZmluZSBUWVBFX01BWElNVU0odCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKCh0KSAoISBUWVBFX1NJR05FRCAodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgID8gKHQpIC0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICA6ICgoKCh0KSAxIDw8IChzaXplb2YgKHQpICogQ0hBUl9CSVQgLSAyKSkgLSAxKSAqIDIgKyAxKSkpCisrICAgICAgICA6ICgoKCh0KSAxIDw8IChUWVBFX1dJRFRIICh0KSAtIDIpKSAtIDEpICogMiArIDEpKSkKKyAKKyAvKiBUaGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgZm9yIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uIEUsCisgICAgYWZ0ZXIgaW50ZWdlciBwcm9tb3Rpb24uICBFIHNob3VsZCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuICAqLworQEAgLTY1LDcgKzY5LDEzIEBACisgICAgPyBfR0xfU0lHTkVEX0lOVF9NQVhJTVVNIChlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIDogX0dMX0lOVF9ORUdBVEVfQ09OVkVSVCAoZSwgMSkpCisgI2RlZmluZSBfR0xfU0lHTkVEX0lOVF9NQVhJTVVNKGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKCgoX0dMX0lOVF9DT05WRVJUIChlLCAxKSA8PCAoc2l6ZW9mICgoZSkgKyAwKSAqIENIQVJfQklUIC0gMikpIC0gMSkgKiAyICsgMSkKKysgICgoKF9HTF9JTlRfQ09OVkVSVCAoZSwgMSkgPDwgKFRZUEVfV0lEVEggKChlKSArIDApIC0gMikpIC0gMSkgKiAyICsgMSkKKysKKysvKiBXb3JrIGFyb3VuZCBPcGVuVk1TIGluY29tcGF0aWJpbGl0eSB3aXRoIEM5OS4gICovCisrI2lmICFkZWZpbmVkIExMT05HX01BWCAmJiBkZWZpbmVkIF9fSU5UNjRfTUFYCisrIyBkZWZpbmUgTExPTkdfTUFYIF9fSU5UNjRfTUFYCisrIyBkZWZpbmUgTExPTkdfTUlOIF9fSU5UNjRfTUlOCisrI2VuZGlmCisgCisgLyogVGhpcyBpbmNsdWRlIGZpbGUgYXNzdW1lcyB0aGF0IHNpZ25lZCB0eXBlcyBhcmUgdHdvJ3MgY29tcGxlbWVudCB3aXRob3V0CisgICAgcGFkZGluZyBiaXRzOyB0aGUgYWJvdmUgbWFjcm9zIGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9yIG90aGVyd2lzZS4KK0BAIC04NCwxMCArOTQsMTUgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgaW50KSA9PSBMT05HX01BWCk7CisgdmVyaWZ5IChUWVBFX01JTklNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01JTik7CisgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgI2VuZGlmCisrLyogU2ltaWxhcmx5LCBzYW5pdHktY2hlY2sgb25lIElTTy9JRUMgVFMgMTg2NjEtMToyMDE0IG1hY3JvIGlmIGRlZmluZWQuICAqLworKyNpZmRlZiBVSU5UX1dJRFRICisrdmVyaWZ5IChUWVBFX1dJRFRIICh1bnNpZ25lZCBpbnQpID09IFVJTlRfV0lEVEgpOworKyNlbmRpZgorIAorIC8qIERvZXMgdGhlIF9fdHlwZW9mX18ga2V5d29yZCB3b3JrPyAgVGhpcyBjb3VsZCBiZSBkb25lIGJ5CisgICAgJ2NvbmZpZ3VyZScsIGJ1dCBmb3Igbm93IGl0J3MgZWFzaWVyIHRvIGRvIGl0IGJ5IGhhbmQuICAqLworLSNpZiAoMiA8PSBfX0dOVUNfXyB8fCBkZWZpbmVkIF9fSUJNX19UWVBFT0ZfXyBcCisrI2lmICgyIDw9IF9fR05VQ19fIFwKKysgICAgIHx8ICgxMjEwIDw9IF9fSUJNQ19fICYmIGRlZmluZWQgX19JQk1fX1RZUEVPRl9fKSBcCisgICAgICB8fCAoMHg1MTEwIDw9IF9fU1VOUFJPX0MgJiYgIV9fU1REQ19fKSkKKyAjIGRlZmluZSBfR0xfSEFWRV9fX1RZUEVPRl9fIDEKKyAjZWxzZQorQEAgLTExNiw4ICsxMzEsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAgICBzaWduZWQsIHRoaXMgbWFjcm8gbWF5IG92ZXJlc3RpbWF0ZSB0aGUgdHJ1ZSBib3VuZCBieSBvbmUgYnl0ZSB3aGVuCisgICAgYXBwbGllZCB0byB1bnNpZ25lZCB0eXBlcyBvZiBzaXplIDIsIDQsIDE2LCAuLi4gYnl0ZXMuICAqLworICNkZWZpbmUgSU5UX1NUUkxFTl9CT1VORCh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAoSU5UX0JJVFNfU1RSTEVOX0JPVU5EIChzaXplb2YgKHQpICogQ0hBUl9CSVQgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIC0gX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKSAgICAgICAgXAorKyAgKElOVF9CSVRTX1NUUkxFTl9CT1VORCAoVFlQRV9XSURUSCAodCkgLSBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpIFwKKyAgICArIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkKKyAKKyAvKiBCb3VuZCBvbiBidWZmZXIgc2l6ZSBuZWVkZWQgdG8gcmVwcmVzZW50IGFuIGludGVnZXIgdHlwZSBvciBleHByZXNzaW9uIFQsCitAQCAtMjIyLDIwICsyMzYsMjMgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgPyAoYSkgPCAobWluKSA+PiAoYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgOiAobWF4KSA+PiAoYikgPCAoYSkpCisgCistLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChBLCBCLCBQKSB3b3JrcyB3aGVuIFAgaXMgbnVsbC4gICovCistI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMICg3IDw9IF9fR05VQ19fKQorKy8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoQSwgQiwgUCkgd29ya3Mgd2hlbiBQIGlzIG5vbi1udWxsLiAgKi8KKysjZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVyAoNSA8PSBfX0dOVUNfXykKKysKKysvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3dfcCAoQSwgQiwgQykgd29ya3MuICAqLworKyNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AgKDcgPD0gX19HTlVDX18pCisgCisgLyogVGhlIF9HTCpfT1ZFUkZMT1cgbWFjcm9zIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIGFzIHRoZQorICAgICpfUkFOR0VfT1ZFUkZMT1cgbWFjcm9zLCBleGNlcHQgdGhhdCB0aGV5IGRvIG5vdCBhc3N1bWUgdGhhdCBvcGVyYW5kcworICAgIChlLmcuLCBBIGFuZCBCKSBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgTUlOIGFuZCBNQVguICBJbnN0ZWFkLCB0aGV5IGFzc3VtZQorICAgIHRoYXQgdGhlIHJlc3VsdCAoZS5nLiwgQSArIEIpIGhhcyB0aGF0IHR5cGUuICAqLworLSNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMCistIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKKy0gICBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICsgKGIpKSAqKSAwKQorLSMgZGVmaW5lIF9HTF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKKy0gICBfX2J1aWx0aW5fc3ViX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpIC0gKGIpKSAqKSAwKQorLSMgZGVmaW5lIF9HTF9NVUxUSVBMWV9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKKy0gICBfX2J1aWx0aW5fbXVsX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICogKGIpKSAqKSAwKQorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUAorKyMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICBfX2J1aWx0aW5fYWRkX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKyAoYikpKSAwKQorKyMgZGVmaW5lIF9HTF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICBfX2J1aWx0aW5fc3ViX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgLSAoYikpKSAwKQorKyMgZGVmaW5lIF9HTF9NVUxUSVBMWV9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICBfX2J1aWx0aW5fbXVsX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKiAoYikpKSAwKQorICNlbHNlCisgIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKG1pbikgPCAwID8gSU5UX0FERF9SQU5HRV9PVkVSRkxPVyAoYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgXAorQEAgLTMxNSw3ICszMzIsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAgIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1cgKGEsIGIsIF9HTF9BRERfT1ZFUkZMT1cpCisgI2RlZmluZSBJTlRfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYikgXAorICAgX0dMX0JJTkFSWV9PUF9PVkVSRkxPVyAoYSwgYiwgX0dMX1NVQlRSQUNUX09WRVJGTE9XKQorLSNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMCisrI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QCisgIyBkZWZpbmUgSU5UX05FR0FURV9PVkVSRkxPVyhhKSBJTlRfU1VCVFJBQ1RfT1ZFUkZMT1cgKDAsIGEpCisgI2Vsc2UKKyAjIGRlZmluZSBJTlRfTkVHQVRFX09WRVJGTE9XKGEpIFwKK0BAIC0zNDksMTAgKzM2Niw2IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICNkZWZpbmUgSU5UX01VTFRJUExZX1dSQVBWKGEsIGIsIHIpIFwKKyAgIF9HTF9JTlRfT1BfV1JBUFYgKGEsIGIsIHIsICosIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3csIElOVF9NVUxUSVBMWV9PVkVSRkxPVykKKyAKKy0jaWZuZGVmIF9faGFzX2J1aWx0aW4KKy0jIGRlZmluZSBfX2hhc19idWlsdGluKHgpIDAKKy0jZW5kaWYKKy0KKyAvKiBOb256ZXJvIGlmIHRoaXMgY29tcGlsZXIgaGFzIEdDQyBidWcgNjgxOTMgb3IgQ2xhbmcgYnVnIDI1MzkwLiAgU2VlOgorICAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY4MTkzCisgICAgaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNTM5MAorQEAgLTM2OSw3ICszODIsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAgICB0aGUgb3BlcmF0aW9uLiAgQlVJTFRJTiBpcyB0aGUgYnVpbHRpbiBvcGVyYXRpb24sIGFuZCBPVkVSRkxPVyB0aGUKKyAgICBvdmVyZmxvdyBwcmVkaWNhdGUuICBSZXR1cm4gMSBpZiB0aGUgcmVzdWx0IG92ZXJmbG93cy4gIFNlZSBhYm92ZQorICAgIGZvciByZXN0cmljdGlvbnMuICAqLworLSNpZiA1IDw9IF9fR05VQ19fIHx8IF9faGFzX2J1aWx0aW4gKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cpCisrI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVworICMgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFYoYSwgYiwgciwgb3AsIGJ1aWx0aW4sIG92ZXJmbG93KSBidWlsdGluIChhLCBiLCByKQorICNlbGlmIDIwMTExMiA8PSBfX1NURENfVkVSU0lPTl9fICYmICFfR0xfX0dFTkVSSUNfQk9HVVMKKyAjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgXAorQEAgLTQxMiw3ICs0MjUsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAjIGVsc2UKKyAjICBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVl9MT05HSVNIKGEsIGIsIHIsIG9wLCBvdmVyZmxvdykgXAorICAgICBfR0xfSU5UX09QX0NBTEMgKGEsIGIsIHIsIG9wLCBvdmVyZmxvdywgdW5zaWduZWQgbG9uZyBpbnQsIFwKKy0gICAgICAgICAgICAgICAgICAgICBsb25nIGludCwgTE9OR19NSU4sIExPTkdfTUFYKSkKKysgICAgICAgICAgICAgICAgICAgICBsb25nIGludCwgTE9OR19NSU4sIExPTkdfTUFYKQorICMgZW5kaWYKKyAjZW5kaWYKKyAKK2RpZmYgLS1naXQgYS9saWIvZ2x0ZXN0cy9pbnRwcm9wcy5oIGIvbGliL2dsdGVzdHMvaW50cHJvcHMuaAoraW5kZXggZTFmY2U1Yy4uZWIwNmI2OSAxMDA2NDQKKy0tLSBhL2xpYi9nbHRlc3RzL2ludHByb3BzLmgKKysrKyBiL2xpYi9nbHRlc3RzL2ludHByb3BzLmgKK0BAIC0xLDE4ICsxLDE4IEBACisgLyogaW50cHJvcHMuaCAtLSBwcm9wZXJ0aWVzIG9mIGludGVnZXIgdHlwZXMKKyAKKy0gICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCistICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKysgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAgIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorIC8qIFdyaXR0ZW4gYnkgUGF1bCBFZ2dlcnQuICAqLworQEAgLTQ3LDEyICs0NywxNiBAQAorIAorIC8qIE1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIGZvciBpbnRlZ2VyIHR5cGVzIGFuZCBleHByZXNzaW9ucy4gICovCisgCisrLyogVGhlIHdpZHRoIGluIGJpdHMgb2YgdGhlIGludGVnZXIgdHlwZSBvciBleHByZXNzaW9uIFQuCisrICAgUGFkZGluZyBiaXRzIGFyZSBub3Qgc3VwcG9ydGVkOyB0aGlzIGlzIGNoZWNrZWQgYXQgY29tcGlsZS10aW1lIGJlbG93LiAgKi8KKysjZGVmaW5lIFRZUEVfV0lEVEgodCkgKHNpemVvZiAodCkgKiBDSEFSX0JJVCkKKysKKyAvKiBUaGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgZm9yIHRoZSBpbnRlZ2VyIHR5cGUgVC4gICovCisgI2RlZmluZSBUWVBFX01JTklNVU0odCkgKCh0KSB+IFRZUEVfTUFYSU1VTSAodCkpCisgI2RlZmluZSBUWVBFX01BWElNVU0odCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKCh0KSAoISBUWVBFX1NJR05FRCAodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgID8gKHQpIC0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICA6ICgoKCh0KSAxIDw8IChzaXplb2YgKHQpICogQ0hBUl9CSVQgLSAyKSkgLSAxKSAqIDIgKyAxKSkpCisrICAgICAgICA6ICgoKCh0KSAxIDw8IChUWVBFX1dJRFRIICh0KSAtIDIpKSAtIDEpICogMiArIDEpKSkKKyAKKyAvKiBUaGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgZm9yIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uIEUsCisgICAgYWZ0ZXIgaW50ZWdlciBwcm9tb3Rpb24uICBFIHNob3VsZCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuICAqLworQEAgLTY1LDcgKzY5LDEzIEBACisgICAgPyBfR0xfU0lHTkVEX0lOVF9NQVhJTVVNIChlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIDogX0dMX0lOVF9ORUdBVEVfQ09OVkVSVCAoZSwgMSkpCisgI2RlZmluZSBfR0xfU0lHTkVEX0lOVF9NQVhJTVVNKGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKCgoX0dMX0lOVF9DT05WRVJUIChlLCAxKSA8PCAoc2l6ZW9mICgoZSkgKyAwKSAqIENIQVJfQklUIC0gMikpIC0gMSkgKiAyICsgMSkKKysgICgoKF9HTF9JTlRfQ09OVkVSVCAoZSwgMSkgPDwgKFRZUEVfV0lEVEggKChlKSArIDApIC0gMikpIC0gMSkgKiAyICsgMSkKKysKKysvKiBXb3JrIGFyb3VuZCBPcGVuVk1TIGluY29tcGF0aWJpbGl0eSB3aXRoIEM5OS4gICovCisrI2lmICFkZWZpbmVkIExMT05HX01BWCAmJiBkZWZpbmVkIF9fSU5UNjRfTUFYCisrIyBkZWZpbmUgTExPTkdfTUFYIF9fSU5UNjRfTUFYCisrIyBkZWZpbmUgTExPTkdfTUlOIF9fSU5UNjRfTUlOCisrI2VuZGlmCisgCisgLyogVGhpcyBpbmNsdWRlIGZpbGUgYXNzdW1lcyB0aGF0IHNpZ25lZCB0eXBlcyBhcmUgdHdvJ3MgY29tcGxlbWVudCB3aXRob3V0CisgICAgcGFkZGluZyBiaXRzOyB0aGUgYWJvdmUgbWFjcm9zIGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9yIG90aGVyd2lzZS4KK0BAIC04NCwxMCArOTQsMTUgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgaW50KSA9PSBMT05HX01BWCk7CisgdmVyaWZ5IChUWVBFX01JTklNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01JTik7CisgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgI2VuZGlmCisrLyogU2ltaWxhcmx5LCBzYW5pdHktY2hlY2sgb25lIElTTy9JRUMgVFMgMTg2NjEtMToyMDE0IG1hY3JvIGlmIGRlZmluZWQuICAqLworKyNpZmRlZiBVSU5UX1dJRFRICisrdmVyaWZ5IChUWVBFX1dJRFRIICh1bnNpZ25lZCBpbnQpID09IFVJTlRfV0lEVEgpOworKyNlbmRpZgorIAorIC8qIERvZXMgdGhlIF9fdHlwZW9mX18ga2V5d29yZCB3b3JrPyAgVGhpcyBjb3VsZCBiZSBkb25lIGJ5CisgICAgJ2NvbmZpZ3VyZScsIGJ1dCBmb3Igbm93IGl0J3MgZWFzaWVyIHRvIGRvIGl0IGJ5IGhhbmQuICAqLworLSNpZiAoMiA8PSBfX0dOVUNfXyB8fCBkZWZpbmVkIF9fSUJNX19UWVBFT0ZfXyBcCisrI2lmICgyIDw9IF9fR05VQ19fIFwKKysgICAgIHx8ICgxMjEwIDw9IF9fSUJNQ19fICYmIGRlZmluZWQgX19JQk1fX1RZUEVPRl9fKSBcCisgICAgICB8fCAoMHg1MTEwIDw9IF9fU1VOUFJPX0MgJiYgIV9fU1REQ19fKSkKKyAjIGRlZmluZSBfR0xfSEFWRV9fX1RZUEVPRl9fIDEKKyAjZWxzZQorQEAgLTExNiw4ICsxMzEsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAgICBzaWduZWQsIHRoaXMgbWFjcm8gbWF5IG92ZXJlc3RpbWF0ZSB0aGUgdHJ1ZSBib3VuZCBieSBvbmUgYnl0ZSB3aGVuCisgICAgYXBwbGllZCB0byB1bnNpZ25lZCB0eXBlcyBvZiBzaXplIDIsIDQsIDE2LCAuLi4gYnl0ZXMuICAqLworICNkZWZpbmUgSU5UX1NUUkxFTl9CT1VORCh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAoSU5UX0JJVFNfU1RSTEVOX0JPVU5EIChzaXplb2YgKHQpICogQ0hBUl9CSVQgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIC0gX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKSAgICAgICAgXAorKyAgKElOVF9CSVRTX1NUUkxFTl9CT1VORCAoVFlQRV9XSURUSCAodCkgLSBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpIFwKKyAgICArIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkKKyAKKyAvKiBCb3VuZCBvbiBidWZmZXIgc2l6ZSBuZWVkZWQgdG8gcmVwcmVzZW50IGFuIGludGVnZXIgdHlwZSBvciBleHByZXNzaW9uIFQsCitAQCAtMjIyLDIwICsyMzYsMjMgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgPyAoYSkgPCAobWluKSA+PiAoYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgOiAobWF4KSA+PiAoYikgPCAoYSkpCisgCistLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChBLCBCLCBQKSB3b3JrcyB3aGVuIFAgaXMgbnVsbC4gICovCistI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMICg3IDw9IF9fR05VQ19fKQorKy8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoQSwgQiwgUCkgd29ya3Mgd2hlbiBQIGlzIG5vbi1udWxsLiAgKi8KKysjZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVyAoNSA8PSBfX0dOVUNfXykKKysKKysvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3dfcCAoQSwgQiwgQykgd29ya3MuICAqLworKyNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AgKDcgPD0gX19HTlVDX18pCisgCisgLyogVGhlIF9HTCpfT1ZFUkZMT1cgbWFjcm9zIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIGFzIHRoZQorICAgICpfUkFOR0VfT1ZFUkZMT1cgbWFjcm9zLCBleGNlcHQgdGhhdCB0aGV5IGRvIG5vdCBhc3N1bWUgdGhhdCBvcGVyYW5kcworICAgIChlLmcuLCBBIGFuZCBCKSBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgTUlOIGFuZCBNQVguICBJbnN0ZWFkLCB0aGV5IGFzc3VtZQorICAgIHRoYXQgdGhlIHJlc3VsdCAoZS5nLiwgQSArIEIpIGhhcyB0aGF0IHR5cGUuICAqLworLSNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMCistIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKKy0gICBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICsgKGIpKSAqKSAwKQorLSMgZGVmaW5lIF9HTF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKKy0gICBfX2J1aWx0aW5fc3ViX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpIC0gKGIpKSAqKSAwKQorLSMgZGVmaW5lIF9HTF9NVUxUSVBMWV9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKKy0gICBfX2J1aWx0aW5fbXVsX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICogKGIpKSAqKSAwKQorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUAorKyMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICBfX2J1aWx0aW5fYWRkX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKyAoYikpKSAwKQorKyMgZGVmaW5lIF9HTF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICBfX2J1aWx0aW5fc3ViX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgLSAoYikpKSAwKQorKyMgZGVmaW5lIF9HTF9NVUxUSVBMWV9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICBfX2J1aWx0aW5fbXVsX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKiAoYikpKSAwKQorICNlbHNlCisgIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKG1pbikgPCAwID8gSU5UX0FERF9SQU5HRV9PVkVSRkxPVyAoYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgXAorQEAgLTMxNSw3ICszMzIsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAgIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1cgKGEsIGIsIF9HTF9BRERfT1ZFUkZMT1cpCisgI2RlZmluZSBJTlRfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYikgXAorICAgX0dMX0JJTkFSWV9PUF9PVkVSRkxPVyAoYSwgYiwgX0dMX1NVQlRSQUNUX09WRVJGTE9XKQorLSNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMCisrI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QCisgIyBkZWZpbmUgSU5UX05FR0FURV9PVkVSRkxPVyhhKSBJTlRfU1VCVFJBQ1RfT1ZFUkZMT1cgKDAsIGEpCisgI2Vsc2UKKyAjIGRlZmluZSBJTlRfTkVHQVRFX09WRVJGTE9XKGEpIFwKK0BAIC0zNDksMTAgKzM2Niw2IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICNkZWZpbmUgSU5UX01VTFRJUExZX1dSQVBWKGEsIGIsIHIpIFwKKyAgIF9HTF9JTlRfT1BfV1JBUFYgKGEsIGIsIHIsICosIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3csIElOVF9NVUxUSVBMWV9PVkVSRkxPVykKKyAKKy0jaWZuZGVmIF9faGFzX2J1aWx0aW4KKy0jIGRlZmluZSBfX2hhc19idWlsdGluKHgpIDAKKy0jZW5kaWYKKy0KKyAvKiBOb256ZXJvIGlmIHRoaXMgY29tcGlsZXIgaGFzIEdDQyBidWcgNjgxOTMgb3IgQ2xhbmcgYnVnIDI1MzkwLiAgU2VlOgorICAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY4MTkzCisgICAgaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNTM5MAorQEAgLTM2OSw3ICszODIsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAgICB0aGUgb3BlcmF0aW9uLiAgQlVJTFRJTiBpcyB0aGUgYnVpbHRpbiBvcGVyYXRpb24sIGFuZCBPVkVSRkxPVyB0aGUKKyAgICBvdmVyZmxvdyBwcmVkaWNhdGUuICBSZXR1cm4gMSBpZiB0aGUgcmVzdWx0IG92ZXJmbG93cy4gIFNlZSBhYm92ZQorICAgIGZvciByZXN0cmljdGlvbnMuICAqLworLSNpZiA1IDw9IF9fR05VQ19fIHx8IF9faGFzX2J1aWx0aW4gKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cpCisrI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVworICMgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFYoYSwgYiwgciwgb3AsIGJ1aWx0aW4sIG92ZXJmbG93KSBidWlsdGluIChhLCBiLCByKQorICNlbGlmIDIwMTExMiA8PSBfX1NURENfVkVSU0lPTl9fICYmICFfR0xfX0dFTkVSSUNfQk9HVVMKKyAjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgXAorQEAgLTQxMiw3ICs0MjUsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAjIGVsc2UKKyAjICBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVl9MT05HSVNIKGEsIGIsIHIsIG9wLCBvdmVyZmxvdykgXAorICAgICBfR0xfSU5UX09QX0NBTEMgKGEsIGIsIHIsIG9wLCBvdmVyZmxvdywgdW5zaWduZWQgbG9uZyBpbnQsIFwKKy0gICAgICAgICAgICAgICAgICAgICBsb25nIGludCwgTE9OR19NSU4sIExPTkdfTUFYKSkKKysgICAgICAgICAgICAgICAgICAgICBsb25nIGludCwgTE9OR19NSU4sIExPTkdfTUFYKQorICMgZW5kaWYKKyAjZW5kaWYKKyAKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zMy5iYgppbmRleCBkM2QwZjU1Li45ZThiZGJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zMy5iYgpAQCAtMTksNiArMTksOCBAQAogICAgICAgICAgICBmaWxlOi8vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYzctY29tcGF0aWJpbGl0eS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYTlhYTdlMDAzNjY1ZGU5YzgyYmQzZjlmYzZjY2YzMDgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJtbmwvbGlibW5sXzEuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJtbmwvbGlibW5sXzEuMC40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1pbmNsdWRlLXN5cy1jZGVmcy5oLWV4cGxpY2l0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtaW5jbHVkZS1zeXMtY2RlZnMuaC1leHBsaWNpdGx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNjQ3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtaW5jbHVkZS1zeXMtY2RlZnMuaC1leHBsaWNpdGx5LnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0Zyb20gNTA4YTBmZjY5MGRmZWJjMTdjNGY1NWE1ZjgxODI0ZWQ1NDliZWQ2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE4IEFwciAyMDE3IDA5OjEzOjMzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBpbmNsdWRlIHN5cy9jZGVmcy5oIGV4cGxpY2l0bHkKKworZ2xpYmMgaW5jbHVkZXMgdGhpcyBoZWFkZXIgaW5kaXJlY3RseSBidXQgbm90IG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvcnBjc3ZjL25pcy5oICAgIHwgMSArCisgc3JjL3JwY3N2Yy9uaXNsaWIuaCB8IDEgKworIHNyYy9ycGNzdmMveXBjbG50LmggfCAxICsKKyBzcmMvcnBjc3ZjL3lwdXBkLmggIHwgMSArCisgNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9ycGNzdmMvbmlzLmggYi9zcmMvcnBjc3ZjL25pcy5oCitpbmRleCA5MzNjNGQ5Li44OGNiY2EwIDEwMDY0NAorLS0tIGEvc3JjL3JwY3N2Yy9uaXMuaAorKysrIGIvc3JjL3JwY3N2Yy9uaXMuaAorQEAgLTMyLDYgKzMyLDcgQEAKKyAjaWZuZGVmIF9SUENTVkNfTklTX0gKKyAjZGVmaW5lIF9SUENTVkNfTklTX0ggMQorIAorKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAjaW5jbHVkZSA8cnBjL3JwYy5oPgorICNpbmNsdWRlIDxycGNzdmMvbmlzX3RhZ3MuaD4KK2RpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL25pc2xpYi5oIGIvc3JjL3JwY3N2Yy9uaXNsaWIuaAoraW5kZXggYTU5YzE5Yi4uYTUzZmFiMyAxMDA2NDQKKy0tLSBhL3NyYy9ycGNzdmMvbmlzbGliLmgKKysrKyBiL3NyYy9ycGNzdmMvbmlzbGliLmgKK0BAIC0xOSw2ICsxOSw3IEBACisgI2lmbmRlZglfX1JQQ1NWQ19OSVNMSUJfSF9fCisgI2RlZmluZQlfX1JQQ1NWQ19OSVNMSUJfSF9fCisgCisrI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorICNpbmNsdWRlIDxmZWF0dXJlcy5oPgorIAorIF9fQkVHSU5fREVDTFMKK2RpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL3lwY2xudC5oIGIvc3JjL3JwY3N2Yy95cGNsbnQuaAoraW5kZXggZmU0M2ZkNC4uYTY4NmI2MSAxMDA2NDQKKy0tLSBhL3NyYy9ycGNzdmMveXBjbG50LmgKKysrKyBiL3NyYy9ycGNzdmMveXBjbG50LmgKK0BAIC0yMCw2ICsyMCw3IEBACisgI2lmbmRlZglfX1JQQ1NWQ19ZUENMTlRfSF9fCisgI2RlZmluZQlfX1JQQ1NWQ19ZUENMTlRfSF9fCisgCisrI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorICNpbmNsdWRlIDxmZWF0dXJlcy5oPgorIAorIC8qIFNvbWUgZGVmaW5lcyAqLworZGlmZiAtLWdpdCBhL3NyYy9ycGNzdmMveXB1cGQuaCBiL3NyYy9ycGNzdmMveXB1cGQuaAoraW5kZXggZDA3ZmQ0ZC4uMmM1NzMwMSAxMDA2NDQKKy0tLSBhL3NyYy9ycGNzdmMveXB1cGQuaAorKysrIGIvc3JjL3JwY3N2Yy95cHVwZC5oCitAQCAtMzMsNiArMzMsNyBAQAorICNpZm5kZWYgX19SUENTVkNfWVBVUERfSF9fCisgI2RlZmluZSBfX1JQQ1NWQ19ZUFVQRF9IX18KKyAKKysjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisgCisgI2luY2x1ZGUgPHJwYy9ycGMuaD4KKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1uaXNfY2FsbC5jLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLW5pc19jYWxsLmMtSW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LWRlZmluaXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlhZTUxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1uaXNfY2FsbC5jLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC1kZWZpbml0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZDcxY2JlYjNiNzZlNTQ3NzhhNGQ1ZWVjNmQzODdjY2U2NTM1MzdjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDkgSnVuIDIwMTcgMDk6NDk6MzUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmlzX2NhbGwuYzogSW5jbHVkZSBzdGRpbnQuaCBmb3IgdWludHB0cl90IGRlZmluaXRpb24KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvbmlzcGx1cy9uaXNfY2FsbC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbmlzcGx1cy9uaXNfY2FsbC5jIGIvc3JjL25pc3BsdXMvbmlzX2NhbGwuYworaW5kZXggMWEyYjkwYy4uMWRjOTgyZCAxMDA2NDQKKy0tLSBhL3NyYy9uaXNwbHVzL25pc19jYWxsLmMKKysrKyBiL3NyYy9uaXNwbHVzL25pc19jYWxsLmMKK0BAIC0yMyw2ICsyMyw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxycGMvcnBjLmg+CisgI2luY2x1ZGUgPHJwYy9hdXRoLmg+CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDItRGVmaW5lLWdsaWJjLXNwZWNpZmljLW1hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMi1EZWZpbmUtZ2xpYmMtc3BlY2lmaWMtbWFjcm9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZmRhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDItRGVmaW5lLWdsaWJjLXNwZWNpZmljLW1hY3Jvcy5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDYwMjgyNTE0ZWEwMWFmMDA0ZDdmOWU2NmRkMzkyOTIyM2I3ZDJlN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwOToxNjoxMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gRGVmaW5lIGdsaWJjIHNwZWNpZmljIG1hY3JvcworCitDaGVjayBhbmQgZGVmaW5lCityYXdtZW1jaHIsIF9fYXNwcmludGYsIF9fbWVtcGNweSwgX19zdHJ0b2tfcgorX19hbHdheXNfaW5saW5lLCBURU1QX0ZBSUxVUkVfUkVUUlkKKworaWYgbm90IGV4aXN0aW5nLiBIZWxwcyBjb21waWxpbmcgd2l0aCBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitkaWZmIC0tZ2l0IGEvc3JjL3JwY3N2Yy9uaXMuaCBiL3NyYy9ycGNzdmMvbmlzLmgKK2luZGV4IDg4Y2JjYTAuLjIzZmMyMGMgMTAwNjQ0CistLS0gYS9zcmMvcnBjc3ZjL25pcy5oCisrKysgYi9zcmMvcnBjc3ZjL25pcy5oCitAQCAtNTcsNiArNTcsMzQgQEAgX19CRUdJTl9ERUNMUworICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrdWt1a0BzdXNlLmRlPgorICAqLworIAorKyNpZm5kZWYgcmF3bWVtY2hyCisrI2RlZmluZSByYXdtZW1jaHIocyxjKSBtZW1jaHIoKHMpLChzaXplX3QpLTEsKGMpKQorKyNlbmRpZgorKworKyNpZm5kZWYgX19hc3ByaW50ZgorKyNkZWZpbmUgX19hc3ByaW50ZiBhc3ByaW50ZgorKyNlbmRpZgorKworKyNpZm5kZWYgX19tZW1wY3B5CisrI2RlZmluZSBfX21lbXBjcHkgbWVtcGNweQorKyNlbmRpZgorKworKyNpZm5kZWYgX19zdHJ0b2tfcgorKyNkZWZpbmUgX19zdHJ0b2tfciBzdHJ0b2tfcgorKyNlbmRpZgorKworKyNpZm5kZWYgX19hbHdheXNfaW5saW5lCisrI2RlZmluZSBfX2Fsd2F5c19pbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQorKyNlbmRpZgorKworKyNpZm5kZWYgVEVNUF9GQUlMVVJFX1JFVFJZCisrI2RlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkoZXhwKSAoeyBcCisrdHlwZW9mIChleHApIF9yYzsgXAorKyBkbyB7IFwKKysgIF9yYyA9IChleHApOyBcCisrIH0gd2hpbGUgKF9yYyA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7IFwKKysgX3JjOyB9KQorKyNlbmRpZgorIAorICNpZm5kZWYgX19uaXNfb2JqZWN0X2gKKyAjZGVmaW5lIF9fbmlzX29iamVjdF9oCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDJfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MzkxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyX2dpdC5iYgpAQCAtMCwwICsxLDM3IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIkxpYnJhcnkgY29udGFpbmluZyBOSVMgZnVuY3Rpb25zIHVzaW5nIFRJLVJQQyAoSVB2NiBlbmFibGVkKSIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBjb250YWlucyB0aGUgcHVibGljIGNsaWVudCBpbnRlcmZhY2UgZm9yIE5JUyhZUCkgYW5kIE5JUytcCisgICAgICAgICAgICAgICBpdCB3YXMgcGFydCBvZiBnbGliYyBhbmQgbm93IGlzIHN0YW5kYWxvbmUgcGFja2FnZXMuIGl0IGFsc28gc3VwcG9ydHMgSVB2NiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aGt1a3VrL2xpYm5zbCIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAibGlidGlycGMiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGJzZC1oZWFkZXJzIgorCitQViA9ICIxLjAuNStnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gImRmYTJmMzEzNTI0YWZmOTI0M2M0ZDhjZTFiYWNlNzM3ODY0NzgzNTYiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS90aGt1a3VrL2xpYm5zbCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLWNkZWZzLmgtZXhwbGljaXRseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURlZmluZS1nbGliYy1zcGVjaWZpYy1tYWNyb3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uaXNfY2FsbC5jLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK0VYVFJBX09FQ09ORiArPSAiLS1saWJkaXI9JHtsaWJkaXJ9L25zbCAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9uc2wiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorCW12ICR7RH0ke2xpYmRpcn0vbnNsL3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbnNsLyouc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtpbmNsdWRlZGlyfS9uc2wgJHtsaWJkaXJ9L25zbC8qLnNvIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbnNsLyouYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1yZXBvX3JwbWRiLmMtaW5jcmVhc2UtTUFYX0hEUl9DTlQtYW5kLU1BWF9IRFJfRFNJWkUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE0ZTVjYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gMWM0YzkzNWNiNzNhYzFjY2I5NjkzZGYxYTUxYmEyMThhMjJlOGNhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgU2VwIDIwMTcgMTE6MTU6MTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVwb19ycG1kYi5jOiBpbmNyZWFzZSBNQVhfSERSX0NOVCBhbmQgTUFYX0hEUl9EU0laRQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8yMzBdCisKK1dlIGVuY291bnRlcmVkICdjb3JydXB0IHJwbScgaXNzdWVzIHdoZW4gaW5zdGFsbGluZyBleHRyZW1lIGJpZyBSUE0KK3BhY2thZ2VzIGxpa2UgdGhlIGtlcm5lbC1kZXZzcmMgcGFja2FnZSBvZiBZb2N0byBwcm9qZWN0LgorCitJdCBjYW4gYmUgZml4ZWQgYnkgaW5jcmVhc2luZyBNQVhfSERSX0NOVCBhbmQgTUFYX0hEUl9EU0laRSBwZXIgdGVzdC4KKworU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgorLS0tCisgZXh0L3JlcG9fcnBtZGIuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHQvcmVwb19ycG1kYi5jIGIvZXh0L3JlcG9fcnBtZGIuYworaW5kZXggYzcwMDBhOS4uNzAwMDgzNSAxMDA2NDQKKy0tLSBhL2V4dC9yZXBvX3JwbWRiLmMKKysrKyBiL2V4dC9yZXBvX3JwbWRiLmMKK0BAIC0xNzAsOCArMTcwLDggQEAKKyAjZGVmaW5lIE1BWF9TSUdfQ05UCQkweDEwMDAwMAorICNkZWZpbmUgTUFYX1NJR19EU0laRQkJMHgxMDAwMDAKKyAKKy0jZGVmaW5lIE1BWF9IRFJfQ05UCQkweDEwMDAwMAorLSNkZWZpbmUgTUFYX0hEUl9EU0laRQkJMHgyMDAwMDAwCisrI2RlZmluZSBNQVhfSERSX0NOVAkJMHgyMDAwMDAKKysjZGVmaW5lIE1BWF9IRFJfRFNJWkUJCTB4NDAwMDAwMAorIAorIHR5cGVkZWYgc3RydWN0IHJwbWhlYWQgeworICAgaW50IGNudDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmQ2M2FlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgotCi1ERVBFTkRTID0gImV4cGF0IHpsaWIgcnBtIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi5naXQgXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDUkVWID0gImJhMzJmODI4NmQzZGVlYzZmYWFhYmM3OTc2MmE0NzYwZTlhZjBhMDciCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRVhUUkFfT0VDTUFLRSA9ICItRExJQj0ke2Jhc2VsaWJ9IC1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX1JQTU1EPU9OIC1ERU5BQkxFX1JQTURCPU9OIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMgJHtQTn1leHQiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzL0ZpbmRMaWJTb2x2LmNtYWtlIgotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfWV4dCA9ICIke2xpYmRpcn0vJHtQTn1leHQuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjOGY3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjguYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCisKK0RFUEVORFMgPSAiZXhwYXQgemxpYiBycG0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ1JFViA9ICJiOGE5ZGRkODhlYjRlMGFiMzUxZWI1NWE1MzE4NmI1ZGM1YWMwODI1IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK0VYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSAtRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMvRmluZExpYlNvbHYuY21ha2UiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtQWRkLW1pc3Npbmctcndsb2NrX3VubG9ja3MtaW4teHBydF9yZWdpc3Rlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1BZGQtbWlzc2luZy1yd2xvY2tfdW5sb2Nrcy1pbi14cHJ0X3JlZ2lzdGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDYxM2JhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1BZGQtbWlzc2luZy1yd2xvY2tfdW5sb2Nrcy1pbi14cHJ0X3JlZ2lzdGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSBBZGQgbWlzc2luZyByd2xvY2tfdW5sb2NrcyBpbiB4cHJ0X3JlZ2lzdGVyCi0KLUl0IGxvb2tzIGxpa2UgaW4gYjJjOTQzMGY0NmM0YWM4NDg5NTdmYjhhZGFhYzE3NmEzZjZhYzAzZiB3aGVuIHN2Y19ydW4KLXN3aXRjaGVkIHRvIHBvbGwsIGFuIGVhcmx5IHJldHVybiB3YXMgYWRkZWQsIGJ1dCB0aGUgcndsb2NrIHdhcyBub3QKLXVubG9ja2VkLgotCi1JIG9ic2VydmVkIHRoYXQgcnBjYmluZCBidWlsdCBhZ2FpbnN0IGxpYnRpcnBjLTEuMC4xIHdvdWxkIGhhbmRsZSBvbmx5Ci1vbmUgcmVxdWVzdCBiZWZvcmUgaGFuZ2luZywgYW5kIHRyYWNrZWQgaXQgZG93biB0byBhIG1pc3NpbmcKLXJ3bG9ja191bmxvY2sgaGVyZS4KLQotRml4ZXM6IGIyYzk0MzBmNDZjNCAoJ1VzZSBwb2xsKCkgaW5zdGVhZCBvZiBzZWxlY3QoKSBpbiBzdmNfcnVuKCknKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgRm9ybmV5IDxtZm9ybmV5QG1mb3JuZXkub3JnPgotU2lnbmVkLW9mZi1ieTogU3RldmUgRGlja3NvbiA8c3RldmVkQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHNyYy9zdmMuYyB8IDcgKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc3ZjLmMgYi9zcmMvc3ZjLmMKLWluZGV4IDljNDE0NDUuLmI1OTQ2N2IgMTAwNjQ0Ci0tLS0gYS9zcmMvc3ZjLmMKLSsrKyBiL3NyYy9zdmMuYwotQEAgLTk5LDcgKzk5LDcgQEAgeHBydF9yZWdpc3RlciAoeHBydCkKLSAgICAgewotICAgICAgIF9fc3ZjX3hwb3J0cyA9IChTVkNYUFJUICoqKSBjYWxsb2MgKF9ycGNfZHRhYmxlc2l6ZSgpLCBzaXplb2YgKFNWQ1hQUlQgKikpOwotICAgICAgIGlmIChfX3N2Y194cG9ydHMgPT0gTlVMTCkKLS0JcmV0dXJuOwotKyAgICAgICAgICAgIGdvdG8gdW5sb2NrOwotICAgICB9Ci0gICBpZiAoc29jayA8IF9ycGNfZHRhYmxlc2l6ZSgpKQotICAgICB7Ci1AQCAtMTIwLDE0ICsxMjAsMTQgQEAgeHBydF9yZWdpc3RlciAoeHBydCkKLSAgICAgICAgICAgICBzdmNfcG9sbGZkW2ldLmZkID0gc29jazsKLSAgICAgICAgICAgICBzdmNfcG9sbGZkW2ldLmV2ZW50cyA9IChQT0xMSU4gfCBQT0xMUFJJIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT0xMUkROT1JNIHwgUE9MTFJEQkFORCk7Ci0tICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgICAgIGdvdG8gdW5sb2NrOwotICAgICAgICAgICB9Ci0gCi0gICAgICAgbmV3X3N2Y19wb2xsZmQgPSAoc3RydWN0IHBvbGxmZCAqKSByZWFsbG9jIChzdmNfcG9sbGZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChzdHJ1Y3QgcG9sbGZkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAoc3ZjX21heF9wb2xsZmQgKyAxKSk7Ci0gICAgICAgaWYgKG5ld19zdmNfcG9sbGZkID09IE5VTEwpIC8qIE91dCBvZiBtZW1vcnkgKi8KLS0gICAgICAgIHJldHVybjsKLSsgICAgICAgIGdvdG8gdW5sb2NrOwotICAgICAgIHN2Y19wb2xsZmQgPSBuZXdfc3ZjX3BvbGxmZDsKLSAgICAgICArK3N2Y19tYXhfcG9sbGZkOwotIAotQEAgLTEzNSw2ICsxMzUsNyBAQCB4cHJ0X3JlZ2lzdGVyICh4cHJ0KQotICAgICAgIHN2Y19wb2xsZmRbc3ZjX21heF9wb2xsZmQgLSAxXS5ldmVudHMgPSAoUE9MTElOIHwgUE9MTFBSSSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT0xMUkROT1JNIHwgUE9MTFJEQkFORCk7Ci0gICAgIH0KLSt1bmxvY2s6Ci0gICByd2xvY2tfdW5sb2NrICgmc3ZjX2ZkX2xvY2spOwotIH0KLSAKLS0tIAotMi41LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlOTgzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBiODBkM2I1NzNjMWRhZGUyYjI5YjIyZjhhY2MzYjllMmM3ZGRlZmQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjAgTWF5IDIwMTcgMTM6MzY6NDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRpbnQuaCBmb3IgdWludHB0cl90CisKK0ZpeGVzCit8IC4uLy4uL2xpYnRpcnBjLTEuMC4xL3NyYy94ZHJfc2l6ZW9mLmM6OTM6MTM6IGVycm9yOiAndWludHB0cl90JyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnX19pbnRwdHJfdCc/Cit8ICAgaWYgKGxlbiA8ICh1aW50cHRyX3QpeGRycy0+eF9iYXNlKSB7Cit8ICAgICAgICAgICAgICBefn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMveGRyX3NpemVvZi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMveGRyX3NpemVvZi5jIGIvc3JjL3hkcl9zaXplb2YuYworaW5kZXggZDIzZmJkMS4uNzlkNjcwNyAxMDA2NDQKKy0tLSBhL3NyYy94ZHJfc2l6ZW9mLmMKKysrKyBiL3NyYy94ZHJfc2l6ZW9mLmMKK0BAIC0zOSw2ICszOSw3IEBACisgI2luY2x1ZGUgPHJwYy94ZHIuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSAidW4tbmFtZXNwYWNlLmgiCisgCisgLyogQVJHU1VTRUQgKi8KKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1yZXBsYWNlLV9fYnplcm8td2l0aC1tZW1zZXQtQVBJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy8wMDAxLXJlcGxhY2UtX19iemVyby13aXRoLW1lbXNldC1BUEkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJiNGRhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1yZXBsYWNlLV9fYnplcm8td2l0aC1tZW1zZXQtQVBJLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMjBiYWRjM2UzNjA4OTUzZmI1YjM2YmIyZTE2ZmE1MWJkNzMxYWViYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE4IEFwciAyMDE3IDA5OjM1OjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlcGxhY2UgX19iemVybygpIHdpdGggbWVtc2V0KCkgQVBJCisKK21lbXNldCBpcyBhdmFpbGFibGUgYWNyb3NzIGFsbCBsaWJjIGltcGxlbWVudGF0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL2Rlc19pbXBsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZGVzX2ltcGwuYyBiL3NyYy9kZXNfaW1wbC5jCitpbmRleCA5ZGJjY2FmLi4xNWJlYzJhIDEwMDY0NAorLS0tIGEvc3JjL2Rlc19pbXBsLmMKKysrKyBiL3NyYy9kZXNfaW1wbC5jCitAQCAtNTg4LDcgKzU4OCw3IEBAIF9kZXNfY3J5cHQgKGNoYXIgKmJ1ZiwgdW5zaWduZWQgbGVuLCBzdHJ1Y3QgZGVzcGFyYW1zICpkZXNwKQorICAgICB9CisgICB0aW4wID0gdGluMSA9IHRvdXQwID0gdG91dDEgPSB4b3IwID0geG9yMSA9IDA7CisgICB0YnVmWzBdID0gdGJ1ZlsxXSA9IDA7CistICBfX2J6ZXJvIChzY2hlZHVsZSwgc2l6ZW9mIChzY2hlZHVsZSkpOworKyAgbWVtc2V0IChzY2hlZHVsZSwgMCwgc2l6ZW9mIChzY2hlZHVsZSkpOworIAorICAgcmV0dXJuICgxKTsKKyB9CistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2V4cG9ydF9rZXlfc2VjcmV0a2V5X2lzX3NldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvZXhwb3J0X2tleV9zZWNyZXRrZXlfaXNfc2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNzZiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2V4cG9ydF9rZXlfc2VjcmV0a2V5X2lzX3NldC5wYXRjaApAQCAtMCwwICsxLDI0IEBACitBZGQga2V5X3NlY3JldGtleV9pc19zZXQgdG8gZXhwb3J0ZWQgc3ltYm9scyBtYXAKKwora2V5X3NlY3JldF9pc19zZXQgaXMgYSB0eXBvIGluIGxpYnRpcnBjIG1hcAorUGF0Y2ggdGFrZW4gZnJvbQorCitodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL2xpYnRpcnBjL2Rpc2N1c3Npb24vNjM3MzIxL3RocmVhZC9mZDczZDQzMS8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBsaWJ0aXJwYy0xLjAuMS9zcmMvbGlidGlycGMubWFwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidGlycGMtMS4wLjEub3JpZy9zcmMvbGlidGlycGMubWFwCisrKysgbGlidGlycGMtMS4wLjEvc3JjL2xpYnRpcnBjLm1hcAorQEAgLTI5OCw3ICsyOTgsNyBAQCBUSVJQQ18wLjMuMiB7CisgICAgIGtleV9nZW5kZXM7CisgICAgIGtleV9nZXRfY29udjsKKyAgICAga2V5X3NldHNlY3JldDsKKy0gICAga2V5X3NlY3JldF9pc19zZXQ7CisrICAgIGtleV9zZWNyZXRrZXlfaXNfc2V0OworICAgICBrZXlfc2V0bmV0OworICAgICBuZXRuYW1lMmhvc3Q7CisgICAgIG5ldG5hbWUydXNlcjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbGlidGlycGMtMC4yLjEtZm9ydGlmeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbGlidGlycGMtMC4yLjEtZm9ydGlmeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE3ODVkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTAuMi4xLWZvcnRpZnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1GaXggYSBwb3NzaWJsZSBvdmVyZmxvdyAocmVwb3J0ZWQgYnkgX0ZPUlRJRllfU09VUkNFPTIpCi0KLVBvcnRlZCBmcm9tIEdlbnRvbwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IGxpYnRpcnBjLTAuMi4xL3NyYy9nZXRycGNwb3J0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ0aXJwYy0wLjIuMS5vcmlnL3NyYy9nZXRycGNwb3J0LmMKLSsrKyBsaWJ0aXJwYy0wLjIuMS9zcmMvZ2V0cnBjcG9ydC5jCi1AQCAtNTQsMTEgKzU0LDExIEBAIGdldHJwY3BvcnQoaG9zdCwgcHJvZ251bSwgdmVyc251bSwgcHJvdG8KLSAKLSAJaWYgKChocCA9IGdldGhvc3RieW5hbWUoaG9zdCkpID09IE5VTEwpCi0gCQlyZXR1cm4gKDApOwotKwlpZiAoaHAtPmhfbGVuZ3RoICE9IHNpemVvZihhZGRyLnNpbl9hZGRyLnNfYWRkcikpCi0rCQlyZXR1cm4gKDApOwotIAltZW1zZXQoJmFkZHIsIDAsIHNpemVvZihhZGRyKSk7Ci0gCWFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0gCWFkZHIuc2luX3BvcnQgPSAgMDsKLS0JaWYgKGhwLT5oX2xlbmd0aCA+IHNpemVvZihhZGRyKSkKLS0JICBocC0+aF9sZW5ndGggPSBzaXplb2YoYWRkcik7Ci0gCW1lbWNweSgmYWRkci5zaW5fYWRkci5zX2FkZHIsIGhwLT5oX2FkZHIsIChzaXplX3QpaHAtPmhfbGVuZ3RoKTsKLSAJLyogSW5jb25zaXN0ZW50IGludGVyZmFjZXMgbmVlZCBjYXN0cyEgOi0oICovCi0gCXJldHVybiAocG1hcF9nZXRwb3J0KCZhZGRyLCAodV9sb25nKXByb2dudW0sICh1X2xvbmcpdmVyc251bSwgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL3JlbW92ZS1kZXMtZnVuY3Rpb25hbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvcmVtb3ZlLWRlcy1mdW5jdGlvbmFsaXR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTJlOTM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvcmVtb3ZlLWRlcy1mdW5jdGlvbmFsaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLXVjbGliYyBhbmQgbXVzbCBkb2VzIG5vdCBwcm92aWRlIGRlcyBmdW5jdGlvbmFsaXR5LiBMZXRzIGRpc2FibGUgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdWNsaWJjIGFuZCBtdXNsIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotZGlmZiAtTmF1ciBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9NYWtlZmlsZS5hbSBsaWJ0aXJwYy0xLjAuMS9zcmMvTWFrZWZpbGUuYW0KLS0tLSBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9NYWtlZmlsZS5hbQkyMDE1LTEwLTMwIDE3OjE1OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYnRpcnBjLTEuMC4xL3NyYy9NYWtlZmlsZS5hbQkyMDE1LTEyLTIxIDE1OjU2OjE3LjA5NDcwMjQyOSArMDIwMAotQEAgLTIyLDkgKzIyLDggQEAKLSAgICAgICAgIHBtYXBfcHJvdC5jIHBtYXBfcHJvdDIuYyBwbWFwX3JtdC5jIHJwY19wcm90LmMgcnBjX2NvbW1vbmRhdGEuYyBcCi0gICAgICAgICBycGNfY2FsbG1zZy5jIHJwY19nZW5lcmljLmMgcnBjX3NvYy5jIHJwY2JfY2xudC5jIHJwY2JfcHJvdC5jIFwKLSAgICAgICAgIHJwY2Jfc3RfeGRyLmMgc3ZjLmMgc3ZjX2F1dGguYyBzdmNfZGcuYyBzdmNfYXV0aF91bml4LmMgc3ZjX2F1dGhfbm9uZS5jIFwKLS0Jc3ZjX2F1dGhfZGVzLmMgXAotICAgICAgICAgc3ZjX2dlbmVyaWMuYyBzdmNfcmF3LmMgc3ZjX3J1bi5jIHN2Y19zaW1wbGUuYyBzdmNfdmMuYyBnZXRwZWVyZWlkLmMgXAotLSAgICAgICAgYXV0aF90aW1lLmMgYXV0aF9kZXMuYyBhdXRoZGVzX3Byb3QuYyBkZWJ1Zy5jCi0rICAgICAgICBkZWJ1Zy5jCi0gCi0gIyMgWERSCi0gbGlidGlycGNfbGFfU09VUkNFUyArPSB4ZHIuYyB4ZHJfcmVjLmMgeGRyX2FycmF5LmMgeGRyX2Zsb2F0LmMgeGRyX21lbS5jIHhkcl9yZWZlcmVuY2UuYyB4ZHJfc3RkaW8uYyB4ZHJfc2l6ZW9mLmMKLUBAIC00MSw4ICs0MCw4IEBACi0gICAgIGxpYnRpcnBjX2xhX0NGTEFHUyA9IC1ESEFWRV9SUENTRUNfR1NTICQoR1NTQVBJX0NGTEFHUykKLSBlbmRpZgotIAotLWxpYnRpcnBjX2xhX1NPVVJDRVMgKz0ga2V5X2NhbGwuYyBrZXlfcHJvdF94ZHIuYyBnZXRwdWJsaWNrZXkuYwotLWxpYnRpcnBjX2xhX1NPVVJDRVMgKz0gbmV0bmFtZS5jIG5ldG5hbWVyLmMgcnBjZG5hbWUuYyBydGltZS5jCi0rI2xpYnRpcnBjX2xhX1NPVVJDRVMgKz0ga2V5X2NhbGwuYyBrZXlfcHJvdF94ZHIuYyBnZXRwdWJsaWNrZXkuYwotKyNsaWJ0aXJwY19sYV9TT1VSQ0VTICs9IG5ldG5hbWUuYyBuZXRuYW1lci5jIHJwY2RuYW1lLmMgcnRpbWUuYwotIAotIENMRUFORklMRVMJICAgICAgID0gY3Njb3BlLiogKn4KLSBESVNUQ0xFQU5GSUxFUwkgICAgICAgPSBNYWtlZmlsZS5pbgotZGlmZiAtTmF1ciBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9ycGNfc29jLmMgbGlidGlycGMtMS4wLjEvc3JjL3JwY19zb2MuYwotLS0tIGxpYnRpcnBjLTEuMC4xLW9yaWcvc3JjL3JwY19zb2MuYwkyMDE1LTEwLTMwIDE3OjE1OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYnRpcnBjLTEuMC4xL3NyYy9ycGNfc29jLmMJMjAxNS0xMi0yMSAxNTo1NjoxNy4wOTU3MDI0MTYgKzAyMDAKLUBAIC02MSw3ICs2MSw2IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLS0jaW5jbHVkZSA8cnBjc3ZjL25pcy5oPgotIAotICNpbmNsdWRlICJycGNfY29tLmgiCi0gCi1AQCAtNTIyLDg2ICs1MjEsNiBAQAotIH0KLSAKLSAvKgotLSAqIENyZWF0ZSB0aGUgY2xpZW50IGRlcyBhdXRoZW50aWNhdGlvbiBvYmplY3QuIE9ic29sZXRlZCBieQotLSAqIGF1dGhkZXNfc2VjY3JlYXRlKCkuCi0tICovCi0tQVVUSCAqCi0tYXV0aGRlc19jcmVhdGUoc2VydmVybmFtZSwgd2luZG93LCBzeW5jYWRkciwgY2tleSkKLS0JY2hhciAqc2VydmVybmFtZTsJCS8qIG5ldHdvcmsgbmFtZSBvZiBzZXJ2ZXIgKi8KLS0JdV9pbnQgd2luZG93OwkJCS8qIHRpbWUgdG8gbGl2ZSAqLwotLQlzdHJ1Y3Qgc29ja2FkZHIgKnN5bmNhZGRyOwkvKiBvcHRpb25hbCBob3N0YWRkciB0byBzeW5jIHdpdGggKi8KLS0JZGVzX2Jsb2NrICpja2V5OwkJLyogb3B0aW9uYWwgY29udmVyc2F0aW9uIGtleSB0byB1c2UgKi8KLS17Ci0tCUFVVEggKm5hdXRoOwotLQljaGFyIGhvc3RuYW1lW05JX01BWEhPU1RdOwotLQotLQlpZiAoc3luY2FkZHIpIHsKLS0JCS8qCi0tCQkgKiBDaGFuZ2UgYWRkciB0byBob3N0bmFtZSwgYmVjYXVzZSB0aGF0IGlzIHRoZSB3YXkKLS0JCSAqIG5ldyBpbnRlcmZhY2UgdGFrZXMgaXQuCi0tCQkgKi8KLS0JICAgICAgICBzd2l0Y2ggKHN5bmNhZGRyLT5zYV9mYW1pbHkpIHsKLS0JCWNhc2UgQUZfSU5FVDoKLS0JCSAgaWYgKGdldG5hbWVpbmZvKHN5bmNhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSwgaG9zdG5hbWUsCi0tCQkJCSAgc2l6ZW9mIGhvc3RuYW1lLCBOVUxMLCAwLCAwKSAhPSAwKQotLQkJICAgIGdvdG8gZmFsbGJhY2s7Ci0tCQkgIGJyZWFrOwotLQkJY2FzZSBBRl9JTkVUNjoKLS0JCSAgaWYgKGdldG5hbWVpbmZvKHN5bmNhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNiksIGhvc3RuYW1lLAotLQkJCQkgIHNpemVvZiBob3N0bmFtZSwgTlVMTCwgMCwgMCkgIT0gMCkKLS0JCSAgICBnb3RvIGZhbGxiYWNrOwotLQkJICBicmVhazsKLS0JCWRlZmF1bHQ6Ci0tCQkgIGdvdG8gZmFsbGJhY2s7Ci0tCQl9Ci0tCQluYXV0aCA9IGF1dGhkZXNfc2VjY3JlYXRlKHNlcnZlcm5hbWUsIHdpbmRvdywgaG9zdG5hbWUsIGNrZXkpOwotLQkJcmV0dXJuIChuYXV0aCk7Ci0tCX0KLS1mYWxsYmFjazoKLS0JcmV0dXJuIGF1dGhkZXNfc2VjY3JlYXRlKHNlcnZlcm5hbWUsIHdpbmRvdywgTlVMTCwgY2tleSk7Ci0tfQotLQotLS8qCi0tICogQ3JlYXRlIHRoZSBjbGllbnQgZGVzIGF1dGhlbnRpY2F0aW9uIG9iamVjdC4gT2Jzb2xldGVkIGJ5Ci0tICogYXV0aGRlc19wa19zZWNjcmVhdGUoKS4KLS0gKi8KLS1leHRlcm4gQVVUSCAqYXV0aGRlc19wa19zZWNjcmVhdGUoY29uc3QgY2hhciAqLCBuZXRvYmogKiwgdV9pbnQsIGNvbnN0IGNoYXIgKiwKLS0gICAgICAgIGNvbnN0IGRlc19ibG9jayAqLCBuaXNfc2VydmVyICopOwotLQotLUFVVEggKgotLWF1dGhkZXNfcGtfY3JlYXRlKHNlcnZlcm5hbWUsIHBrZXksIHdpbmRvdywgc3luY2FkZHIsIGNrZXkpCi0tCWNoYXIgKnNlcnZlcm5hbWU7CQkvKiBuZXR3b3JrIG5hbWUgb2Ygc2VydmVyICovCi0tCW5ldG9iaiAqcGtleTsJCQkvKiBwdWJsaWMga2V5ICovCi0tCXVfaW50IHdpbmRvdzsJCQkvKiB0aW1lIHRvIGxpdmUgKi8KLS0Jc3RydWN0IHNvY2thZGRyICpzeW5jYWRkcjsJLyogb3B0aW9uYWwgaG9zdGFkZHIgdG8gc3luYyB3aXRoICovCi0tCWRlc19ibG9jayAqY2tleTsJCS8qIG9wdGlvbmFsIGNvbnZlcnNhdGlvbiBrZXkgdG8gdXNlICovCi0tewotLQlBVVRIICpuYXV0aDsKLS0JY2hhciBob3N0bmFtZVtOSV9NQVhIT1NUXTsKLS0KLS0JaWYgKHN5bmNhZGRyKSB7Ci0tCQkvKgotLQkJICogQ2hhbmdlIGFkZHIgdG8gaG9zdG5hbWUsIGJlY2F1c2UgdGhhdCBpcyB0aGUgd2F5Ci0tCQkgKiBuZXcgaW50ZXJmYWNlIHRha2VzIGl0LgotLQkJICovCi0tCSAgICAgICAgc3dpdGNoIChzeW5jYWRkci0+c2FfZmFtaWx5KSB7Ci0tCQljYXNlIEFGX0lORVQ6Ci0tCQkgIGlmIChnZXRuYW1laW5mbyhzeW5jYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbiksIGhvc3RuYW1lLAotLQkJCQkgIHNpemVvZiBob3N0bmFtZSwgTlVMTCwgMCwgMCkgIT0gMCkKLS0JCSAgICBnb3RvIGZhbGxiYWNrOwotLQkJICBicmVhazsKLS0JCWRlZmF1bHQ6Ci0tCQkgIGdvdG8gZmFsbGJhY2s7Ci0tCQl9Ci0tCQluYXV0aCA9IGF1dGhkZXNfcGtfc2VjY3JlYXRlKHNlcnZlcm5hbWUsIHBrZXksIHdpbmRvdywgaG9zdG5hbWUsIGNrZXksIE5VTEwpOwotLQkJcmV0dXJuIChuYXV0aCk7Ci0tCX0KLS1mYWxsYmFjazoKLS0JcmV0dXJuIGF1dGhkZXNfcGtfc2VjY3JlYXRlKHNlcnZlcm5hbWUsIHBrZXksIHdpbmRvdywgTlVMTCwgY2tleSwgTlVMTCk7Ci0tfQotLQotLQotLS8qCi0gICogQ3JlYXRlIGEgY2xpZW50IGhhbmRsZSBmb3IgYSB1bml4IGNvbm5lY3Rpb24uIE9ic29sZXRlZCBieSBjbG50X3ZjX2NyZWF0ZSgpCi0gICovCi0gQ0xJRU5UICoKLWRpZmYgLU5hdXIgbGlidGlycGMtMS4wLjEtb3JpZy9zcmMvc3ZjX2F1dGguYyBsaWJ0aXJwYy0xLjAuMS9zcmMvc3ZjX2F1dGguYwotLS0tIGxpYnRpcnBjLTEuMC4xLW9yaWcvc3JjL3N2Y19hdXRoLmMJMjAxNS0xMC0zMCAxNzoxNToxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJ0aXJwYy0xLjAuMS9zcmMvc3ZjX2F1dGguYwkyMDE1LTEyLTIxIDE1OjU2OjE3LjA5NTcwMjQxNiArMDIwMAotQEAgLTExNCw5ICsxMTQsNiBAQAotIAljYXNlIEFVVEhfU0hPUlQ6Ci0gCQlkdW1teSA9IF9zdmNhdXRoX3Nob3J0KHJxc3QsIG1zZyk7Ci0gCQlyZXR1cm4gKGR1bW15KTsKLS0JY2FzZSBBVVRIX0RFUzoKLS0JCWR1bW15ID0gX3N2Y2F1dGhfZGVzKHJxc3QsIG1zZyk7Ci0tCQlyZXR1cm4gKGR1bW15KTsKLSAjaWZkZWYgSEFWRV9SUENTRUNfR1NTCi0gCWNhc2UgUlBDU0VDX0dTUzoKLSAJCWR1bW15ID0gX3N2Y2F1dGhfZ3NzKHJxc3QsIG1zZywgbm9fZGlzcGF0Y2gpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMjFkNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MjtuYW1lPWxpYnRpcnBjIFwKLSAgICAgICAgICAgJHtHRU5UT09fTUlSUk9SfS8ke0JQTn0tZ2xpYmMtbmZzLnRhci54ejtuYW1lPWdsaWJjLW5mcyBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ0aXJwYy0wLjIuMS1mb3J0aWZ5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLW1pc3Npbmctcndsb2NrX3VubG9ja3MtaW4teHBydF9yZWdpc3Rlci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgZmlsZTovL3JlbW92ZS1kZXMtZnVuY3Rpb25hbGl0eS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVtb3ZlLWRlcy1mdW5jdGlvbmFsaXR5LnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL1VzZS1uZXRic2QtcXVldWUuaC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUklbbGlidGlycGMubWQ1c3VtXSA9ICIzNmNlMWMwZmY4MDg2M2JiMDgzOWQ1NGFhMGI5NDAxNCIKLVNSQ19VUklbbGlidGlycGMuc2hhMjU2c3VtXSA9ICI1MTU2OTc0ZjMxYmU3Y2NiYzhhYjFkZTM3YzQ3MzlhZjZkOWQ0MmM4N2IxZDVjYWY0ODM1ZGRhNzVmY2JiODllIgotU1JDX1VSSVtnbGliYy1uZnMubWQ1c3VtXSA9ICI1YWU1MDBiOWQwYjZiNzJjYjg3NWJjMDQ5NDRiOTQ0NSIKLVNSQ19VUklbZ2xpYmMtbmZzLnNoYTI1NnN1bV0gPSAiMjY3N2NmZWRmNjI2ZjNmNWE4ZjZlNTA3YWVkNWJiOGY3OWE3NDUzYjU4OWQ2ODRkYmJjMDg2ZTc1NTE3MGQ4MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIGNwIC1yICR7U30vLi4vdGlycGMgJHtTfQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgY2hvd24gcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9L25ldGNvbmZpZwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk3MThjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjIuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJUcmFuc3BvcnQtSW5kZXBlbmRlbnQgUlBDIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJMaWJ0aXJwYyBpcyBhIHBvcnQgb2YgU3VucyBUcmFuc3BvcnQtSW5kZXBlbmRlbnQgUlBDIGxpYnJhcnkgdG8gTGludXgiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlidGlycGMvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE4MzA3NSZhdGlkPTkwMzc4NCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjgzNWNjZTg4NTI0ODFlNGIyYmJiZGQyM2I1ZTQ3ZjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25ldG5hbWUuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI3O21kNT1mOGE4Y2QyY2IyNWFjNWFhMTY3NjczNjRmYjBlM2MyNCIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJycGMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuYnoyO25hbWU9bGlidGlycGMgXAorICAgICAgICAgICAke0dFTlRPT19NSVJST1J9LyR7QlBOfS1nbGliYy1uZnMudGFyLnh6O25hbWU9Z2xpYmMtbmZzIFwKKyAgICAgICAgICAgZmlsZTovL2V4cG9ydF9rZXlfc2VjcmV0a2V5X2lzX3NldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2UtX19iemVyby13aXRoLW1lbXNldC1BUEkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vVXNlLW5ldGJzZC1xdWV1ZS5oLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSVtsaWJ0aXJwYy5tZDVzdW1dID0gImQ1YTM3ZjFkY2NlYzQ4NGY5Y2FiZTJiOTdlNTRlOWE2IgorU1JDX1VSSVtsaWJ0aXJwYy5zaGEyNTZzdW1dID0gIjcyM2M1Y2U5MjcwNmNiYjYwMWE4ZGIwOTExMGRmMWI0YjY5MzkxNjQzMTU4ZjIwZmY1ODdlMjBlN2M1ZjkwZjUiCitTUkNfVVJJW2dsaWJjLW5mcy5tZDVzdW1dID0gIjVhZTUwMGI5ZDBiNmI3MmNiODc1YmMwNDk0NGI5NDQ1IgorU1JDX1VSSVtnbGliYy1uZnMuc2hhMjU2c3VtXSA9ICIyNjc3Y2ZlZGY2MjZmM2Y1YThmNmU1MDdhZWQ1YmI4Zjc5YTc0NTNiNTg5ZDY4NGRiYmMwODZlNzU1MTcwZDgzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nc3NhcGkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAgICAgY3AgLXIgJHtXT1JLRElSfS90aXJwYyAke1N9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBjaG93biByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vbmV0Y29uZmlnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaAppbmRleCAyZTkzMWEyLi4wNGNiNTg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY4ZjI5YWI0OTBjZjk4N2FhMzRiNWY0Y2FmMTc4NGI1OGEwMjEzMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDUxN2NiZmY2NmM4YmRiZjQ1NWJjM2I3YzFhODVhNGY5OTBkMGY5YTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMTcgRmViIDIwMTUgMjE6MDg6MDcgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gQWN0IGFzIHRoZSAibXYiIGNvbW1hbmQgd2hlbiByb3RhdGUgbG9nCkBAIC0xMCwxNCArMTAsMTQgQEAKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KLSBsb2dyb3RhdGUuYyB8ICAgNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisgbG9ncm90YXRlLmMgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbG9ncm90YXRlLmMgYi9sb2dyb3RhdGUuYwotaW5kZXggZDNkZWI2YS4uY2Y4YmYyYyAxMDA2NDQKK2luZGV4IDRhZDU4ZDQuLmJhMDU4ODQgMTAwNjQ0CiAtLS0gYS9sb2dyb3RhdGUuYwogKysrIGIvbG9ncm90YXRlLmMKLUBAIC0xMTU3LDYgKzExNTcsNTMgQEAgaW50IGZpbmROZWVkUm90YXRpbmcoc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGxvZ051bSwgaW50IGZvcmNlKQorQEAgLTEzMTUsNiArMTMxNSw1NCBAQCBzdGF0aWMgaW50IGZpbmROZWVkUm90YXRpbmcoc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGxvZ051bSwgaW50IGZvcmNlKQogICAgICByZXR1cm4gMDsKICB9CiAgCkBAIC02OCwxMCArNjgsMTEgQEAKICsgICAgcmV0dXJuIDE7CiArfQogKwotIGludCBwcmVyb3RhdGVTaW5nbGVMb2coc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGxvZ051bSwgc3RydWN0IGxvZ1N0YXRlICpzdGF0ZSwKLSAJCSAgICAgICBzdHJ1Y3QgbG9nTmFtZXMgKnJvdE5hbWVzKQorKworIHN0YXRpYyBpbnQgcHJlcm90YXRlU2luZ2xlTG9nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sCisgCQkJICAgICAgc3RydWN0IGxvZ1N0YXRlICpzdGF0ZSwgc3RydWN0IGxvZ05hbWVzICpyb3ROYW1lcykKICB7Ci1AQCAtMTUyMywxNSArMTU3MCwxNSBAQCBpbnQgcHJlcm90YXRlU2luZ2xlTG9nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIHN0cnVjdCBsb2dTdGF0ZSAqc3RhdGUsCitAQCAtMTY3NCwxNSArMTcyMiwxNSBAQCBzdGF0aWMgaW50IHByZXJvdGF0ZVNpbmdsZUxvZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLAogIAkJfQogIAogIAkgICAgbWVzc2FnZShNRVNTX0RFQlVHLApAQCAtOTAsNyArOTEsNyBAQAogIAkJCSAgICBvbGROYW1lLCBuZXdOYW1lLCBzdHJlcnJvcihlcnJubykpOwogIAkJICAgIGhhc0Vycm9ycyA9IDE7CiAgCQl9Ci1AQCAtMTY2OSwyMSArMTcxNiwyMSBAQCBpbnQgcm90YXRlU2luZ2xlTG9nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIHN0cnVjdCBsb2dTdGF0ZSAqc3RhdGUsCitAQCAtMTc2NywyMSArMTgxNSwyMSBAQCBzdGF0aWMgaW50IHJvdGF0ZVNpbmdsZUxvZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLAogIAkJCQlyZXR1cm4gMTsKICAJCQl9CiAgCkBAIC0xMTUsMTkgKzExNiwxOSBAQAogLQkJCQltZXNzYWdlKE1FU1NfRVJST1IsICJmYWlsZWQgdG8gcmVuYW1lICVzIHRvICVzOiAlc1xuIiwKICsJCQltdkZpbGUobG9nLT5maWxlc1tsb2dOdW1dLCByb3ROYW1lcy0+ZmluYWxOYW1lLCBsb2csIHByZXZfYWNsKSkgewogKwkJCQltZXNzYWdlKE1FU1NfRVJST1IsICJmYWlsZWQgdG8gbW92ZSAlcyB0byAlczogJXNcbiIsCi0gCQkJCQlsb2ctPmZpbGVzW2xvZ051bV0sIHRtcEZpbGVuYW1lLAorIAkJCQkJbG9nLT5maWxlc1tsb2dOdW1dLCByb3ROYW1lcy0+ZmluYWxOYW1lLAogIAkJCQkJc3RyZXJyb3IoZXJybm8pKTsKICAJCQkJCWhhc0Vycm9ycyA9IDE7Ci1AQCAtMjA2Myw3ICsyMTEwLDcgQEAgaW50IHJvdGF0ZUxvZ1NldChzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgZm9yY2UpCitAQCAtMjE3MCw3ICsyMjE4LDcgQEAgc3RhdGljIGludCByb3RhdGVMb2dTZXQoc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGZvcmNlKQogICAgICByZXR1cm4gaGFzRXJyb3JzOwogIH0KICAKLS1zdGF0aWMgaW50IHdyaXRlU3RhdGUoY2hhciAqc3RhdGVGaWxlbmFtZSkKKy1zdGF0aWMgaW50IHdyaXRlU3RhdGUoY29uc3QgY2hhciAqc3RhdGVGaWxlbmFtZSkKICtzdGF0aWMgaW50IHdyaXRlU3RhdGUoc3RydWN0IGxvZ0luZm8gKmxvZywgY2hhciAqc3RhdGVGaWxlbmFtZSkKICB7CiAgCXN0cnVjdCBsb2dTdGF0ZSAqcDsKICAJRklMRSAqZjsKLUBAIC0yMjI3LDcgKzIyNzQsNyBAQCBzdGF0aWMgaW50IHdyaXRlU3RhdGUoY2hhciAqc3RhdGVGaWxlbmFtZSkKK0BAIC0yMzIyLDcgKzIzNzAsNyBAQCBzdGF0aWMgaW50IHdyaXRlU3RhdGUoY29uc3QgY2hhciAqc3RhdGVGaWxlbmFtZSkKICAJCWZjbG9zZShmKTsKICAKICAJaWYgKGVycm9yID09IDApIHsKQEAgLTEzNiw3ICsxMzcsNyBAQAogIAkJCXVubGluayh0bXBGaWxlbmFtZSk7CiAgCQkJZXJyb3IgPSAxOwogIAkJCW1lc3NhZ2UoTUVTU19FUlJPUiwgImVycm9yIHJlbmFtaW5nIHRlbXAgc3RhdGUgZmlsZSAlc1xuIiwKLUBAIC0yNTI1LDcgKzI1NzIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCitAQCAtMjY0OCw3ICsyNjk2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQogIAkJcmMgfD0gcm90YXRlTG9nU2V0KGxvZywgZm9yY2UpOwogIAogIAlpZiAoIWRlYnVnKQpAQCAtMTQ1LDMgKzE0Niw2IEBACiAgCiAgCXJldHVybiAocmMgIT0gMCk7CiAgfQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaAppbmRleCA1MGQwMzdkLi43MjU1NjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvdXBkYXRlLXRoZS1tYW51YWwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlMGIwZmUzMGU5YzQ5MjM0OTk0YTIwYTg2YWFjZmFmODBlNjkwMDg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZjIyZTg4MDVkZjY5MzQ0ZjZmMjBjZWEzOTBlODI5YTIyZmE3NDFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE3IEZlYiAyMDE1IDIxOjE0OjM3IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSB0aGUgbWFudWFsCkBAIC05LDE0ICs5LDE0IEBACiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gbG9ncm90YXRlLjggfCAgIDEwICsrKystLS0tLS0KKyBsb2dyb3RhdGUuOC5pbiB8IDEwICsrKystLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvbG9ncm90YXRlLjggYi9sb2dyb3RhdGUuOAotaW5kZXggZTRlNWY0OC4uODQ0MDdkMCAxMDA2NDQKLS0tLSBhL2xvZ3JvdGF0ZS44Ci0rKysgYi9sb2dyb3RhdGUuOAotQEAgLTQwNSwxMiArNDA1LDEwIEBAIERvIG5vdCByb3RhdGUgdGhlIGxvZyBpZiBpdCBpcyBlbXB0eSAodGhpcyBvdmVycmlkZXMgdGhlIFxmQmlmZW1wdHlcZlIgb3B0aW9uKS4KK2RpZmYgLS1naXQgYS9sb2dyb3RhdGUuOC5pbiBiL2xvZ3JvdGF0ZS44LmluCitpbmRleCA5NTFlNDA2Li41ODFiZjQ4IDEwMDY0NAorLS0tIGEvbG9ncm90YXRlLjguaW4KKysrKyBiL2xvZ3JvdGF0ZS44LmluCitAQCAtNDQ1LDEyICs0NDUsMTAgQEAgRG8gbm90IHJvdGF0ZSB0aGUgbG9nIGlmIGl0IGlzIGVtcHR5ICh0aGlzIG92ZXJyaWRlcyB0aGUgXGZCaWZlbXB0eVxmUiBvcHRpb24pLgogIAogIC5UUAogIFxmQm9sZGRpciBcZklkaXJlY3RvcnlcZlIKQEAgLTM0LDUgKzM0LDUgQEAKICAKICAuVFAKIC0tIAotMS43LjkuNQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xMi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjBiMjA4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTIuMy5iYgpAQCAtMCwwICsxLDg1IEBACitTVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCitMSUNFTlNFID0gIkdQTHYyIgorCisjIFRPRE86IERvY3VtZW50IGNvcmV1dGlscyBkZXBlbmRlbmN5LiBXaHkgbm90IFJERVBFTkRTPyBXaHkgbm90IGJ1c3lib3g/CisKK0RFUEVORFM9ImNvcmV1dGlscyBwb3B0IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworIyBXaGVuIHVwZGF0aW5nIGxvZ3JvdGF0ZSB0byBsYXRlc3QgdXBzdHJlYW0sIFNSQ19VUkkgc2hvdWxkIHBvaW50IHRvCisjIGEgcHJvcGVyIHJlbGVhc2UgdGFyYmFsbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzCisjIGFuZCB3ZSBoYXZlIHRvIHRha2UgdGhlIHNuYXBzaG90IGZvciBub3cgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoCisjIHRhcmJhbGwgYXZhaWxhYmxlIGZvciAzLjkuMS4KKworUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibG9ncm90YXRlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNTYwYzU3ZmFjODdjNDViMmZjMTc0MDZjZGY3OTI4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZTZhNDAxY2FjOTAyNGRiMjI4ODI5N2UzYmUxYThhYjYwZTc0MDFiYThlOTEyMjUyMThhYWY0YTI3ZTgyYTA3IgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIiwsYWNsIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICIsLGxpYnNlbGludXgiCisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cyBcCisJCSAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mIgorCisjIElmIFJQTV9PUFRfRkxBR1MgaXMgdW5zZXQsIGl0IGFkZHMgLWcgaXRzZWxmIHJhdGhlciB0aGFuIG9iZXlpbmcgb3VyCisjIG9wdGltaXphdGlvbiB2YXJpYWJsZXMsIHNvIHVzZSBpdCByYXRoZXIgdGhhbiBFWFRSQV9DRkxBR1MuCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIExGUz0gXAorICAgIE9TX05BTUU9JyR7T1NfTkFNRX0nIFwKKyAgICAnQ0M9JHtDQ30nIFwKKyAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKKyAgICAnRVhUUkFfTERGTEFHUz0ke0xERkxBR1N9JyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWNsJywgJ1dJVEhfQUNMPXllcycsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnV0lUSF9TRUxJTlVYPXllcycsICcnLCBkKX0gXAorIgorCisjIE9TX05BTUUgaW4gdGhlIG1ha2VmaWxlIGRlZmF1bHRzIHRvIGB1bmFtZSAtc2AuIFRoZSBiZWhhdmlvciBmb3IKKyMgZnJlZWJzZC9uZXRic2QgaXMgcXVlc3Rpb25hYmxlLCBzbyBsZWF2ZSBpdCBhcyBMaW51eCwgd2hpY2ggb25seSBzZXRzCisjIElOU1RBTEw9aW5zdGFsbCBhbmQgQkFTRURJUj0vdXNyLgorT1NfTkFNRSA9ICJMaW51eCIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAorICAgICR7QlBOfS5zZXJ2aWNlIFwKKyAgICAke0JQTn0udGltZXIgXAorIgorCitMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJUyA/PSAiZGFpbHkiCitMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWSA/PSAiMTJoIgorCitkb19pbnN0YWxsKCl7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtEfSBNQU5ESVI9JHttYW5kaXJ9CisgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKKyAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKKyAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS1kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mCisgICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnNlcnZpY2UKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnRpbWVyICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgorICAgICAgICBzZWQgLWkgLWUgJ3MsT25DYWxlbmRhcj0uKiQsT25DYWxlbmRhcj0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICAgICAgc2VkIC1pIC1lICdzLEFjY3VyYWN5U2VjPS4qJCxBY2N1cmFjeVNlYz0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICBmaQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKKyAgICAgICAgaW5zdGFsbCAtcCAtbSAwNzU1ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9sb2dyb3RhdGUKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTM4ZDlmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVNVTU1BUlkgPSAiUm90YXRlcywgY29tcHJlc3NlcywgcmVtb3ZlcyBhbmQgbWFpbHMgc3lzdGVtIGxvZyBmaWxlcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL2lzc3VlcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLSMgVE9ETzogbG9ncm90YXRlIDMuOC44IGFkZHMgYXV0b3Rvb2xzL2F1dG9tYWtlIHN1cHBvcnQsIHVwZGF0ZSByZWNpcGUgdG8gdXNlIGl0LgotIyBUT0RPOiBEb2N1bWVudCBjb3JldXRpbHMgZGVwZW5kZW5jeS4gV2h5IG5vdCBSREVQRU5EUz8gV2h5IG5vdCBidXN5Ym94PwotCi1ERVBFTkRTPSJjb3JldXRpbHMgcG9wdCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg4MTA2NjlmMTNiODczNDg0NTllNjExZDMxYWI3NjAiCi0KLSMgV2hlbiB1cGRhdGluZyBsb2dyb3RhdGUgdG8gbGF0ZXN0IHVwc3RyZWFtLCBTUkNfVVJJIHNob3VsZCBwb2ludCB0bwotIyBhIHByb3BlciByZWxlYXNlIHRhcmJhbGwgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcwotIyBhbmQgd2UgaGF2ZSB0byB0YWtlIHRoZSBzbmFwc2hvdCBmb3Igbm93IGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaAotIyB0YXJiYWxsIGF2YWlsYWJsZSBmb3IgMy45LjEuCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tcjMtOS0xIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vYXJjaGl2ZS9yMy05LTEudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NTcyYjdjMmNmOWFkZTA5YThhOGUxMDA5ODUwMGZiMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YmY4ZTQ3OGM0MjhlNzc0NGZlZmE0NjUxMThmODI5NmU3ZTc3MWM5ODFmYjZkZmZiNzUyNzg1NmEwZWEzNjE3IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIiwsYWNsIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICIsLGxpYnNlbGludXgiCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cyBcCi0JCSAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mIgotCi0jIElmIFJQTV9PUFRfRkxBR1MgaXMgdW5zZXQsIGl0IGFkZHMgLWcgaXRzZWxmIHJhdGhlciB0aGFuIG9iZXlpbmcgb3VyCi0jIG9wdGltaXphdGlvbiB2YXJpYWJsZXMsIHNvIHVzZSBpdCByYXRoZXIgdGhhbiBFWFRSQV9DRkxBR1MuCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIExGUz0gXAotICAgIE9TX05BTUU9JyR7T1NfTkFNRX0nIFwKLSAgICAnQ0M9JHtDQ30nIFwKLSAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnRVhUUkFfTERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWNsJywgJ1dJVEhfQUNMPXllcycsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnV0lUSF9TRUxJTlVYPXllcycsICcnLCBkKX0gXAotIgotCi0jIE9TX05BTUUgaW4gdGhlIG1ha2VmaWxlIGRlZmF1bHRzIHRvIGB1bmFtZSAtc2AuIFRoZSBiZWhhdmlvciBmb3IKLSMgZnJlZWJzZC9uZXRic2QgaXMgcXVlc3Rpb25hYmxlLCBzbyBsZWF2ZSBpdCBhcyBMaW51eCwgd2hpY2ggb25seSBzZXRzCi0jIElOU1RBTEw9aW5zdGFsbCBhbmQgQkFTRURJUj0vdXNyLgotT1NfTkFNRSA9ICJMaW51eCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgTWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKLSAgICBybSAtZiAke0J9Ly5kZXBlbmQKLX0KLQotZG9faW5zdGFsbCgpewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7RH0gTUFORElSPSR7bWFuZGlyfQotICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQotICAgIG1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYgotICAgIGluc3RhbGwgLXAgLW0gNjQ0IGV4YW1wbGVzL2xvZ3JvdGF0ZS1kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mCi0gICAgaW5zdGFsbCAtcCAtbSA3NTUgZXhhbXBsZXMvbG9ncm90YXRlLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9sb2dyb3RhdGUKLSAgICB0b3VjaCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIKaW5kZXggY2VkZjM5ZS4uMDc4NTYxMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNC4xLmJiCkBAIC0yMiw2ICsyMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9sc2JfcGlkb2Zwcm9jIFwKICAgICAgICAgICAgZmlsZTovL2xzYl9zdGFydF9kYWVtb24gXAogICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjMwNTM3ZWY1YTAxZTBjYTk0YjdiOGViNmEzNmJiMWU0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5MzIxMjg4ZjhkNjJlN2ExZDQ4NWI3YzZiZGNjZjA2NzY2ZmI4Y2E2MDNjNjE5NTgwNmU0NDU3ZmRmMTcxNzIiCkBAIC05MCwxMSArOTEsMTMgQEAKICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWZ1bmN0aW9ucyAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKIAogICAgICAgICMgY3JlYXRlIGxpbmtzIGZvciBMU0IgdGVzdAotICAgICAgIGlmIFsgIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0iICE9ICIke25vbmFyY2hfbGliZGlyfSIgXSA7IHRoZW4KLSAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYgorICAgICAgIGlmIFsgLWUgJHtzYmluZGlyfS9jaGtjb25maWcgXTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7bm9uYXJjaF9saWJkaXJ9IiBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCisgICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9yZW1vdmVfaW5pdGQKICAgICAgICBmaQotICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L2Noa2NvbmZpZyAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiL2luc3RhbGxfaW5pdGQKLSAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9yZW1vdmVfaW5pdGQKIAogICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KICAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaAppbmRleCBhNzU2ZDA0Li45YzU4ZDkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCkBAIC0xLDI2ICsxLDMyIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitGcm9tIDU3NDY4YzVmNGUzNjRiZGFkNTU2NjA0ZGNhMDkwNDZlMWFmY2E5MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorRGF0ZTogTW9uLCA1IEp1biAyMDE3IDE2OjI2OjQ3ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogU2lnbmVkLW9mZi1ieTogWGlhb2ZlbmcgWWFuIDx4aWFvZmVuZy55YW5Ad2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KIAotSW5kZXg6IGluaXRzY3JpcHRzLTkuNDMvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaW5pdHNjcmlwdHMtOS40My5vcmlnL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotKysrIGluaXRzY3JpcHRzLTkuNDMvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1AQCAtMTMsNiArMTMsNyBAQCB1bWFzayAwMjIKLSBQQVRIPSIvc2JpbjovdXNyL3NiaW46L2JpbjovdXNyL2JpbiIKLSBleHBvcnQgUEFUSAotIAotKwotIGlmIFsgJFBQSUQgLW5lIDEgLWEgLXogIiRTWVNURU1DVExfU0tJUF9SRURJUkVDVCIgXSAmJiBcCi0gCQkoIC9iaW4vbW91bnRwb2ludCAtcSAvY2dyb3VwL3N5c3RlbWQgfHwgL2Jpbi9tb3VudHBvaW50IC1xIC9zeXMvZnMvY2dyb3VwL3N5c3RlbWQgKSA7IHRoZW4KLSAgICAgICAgIGNhc2UgIiQwIiBpbgotQEAgLTU0LDcgKzU1LDcgQEAgc3lzdGVtY3RsX3JlZGlyZWN0ICgpIHsKK1JlYmFzZSBvbiA5LjcyCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGluaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMgYi9pbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworaW5kZXggMGY2MjdmMS4uYTZhYTA5MiAxMDA2NDQKKy0tLSBhL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCisrKysgYi9pbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworQEAgLTU5LDcgKzU5LDcgQEAgc3lzdGVtY3RsX3JlZGlyZWN0ICgpIHsKICBbIC16ICIke0NPTFVNTlM6LX0iIF0gJiYgQ09MVU1OUz04MAogIAogIGlmIFsgLXogIiR7Q09OU09MRVRZUEU6LX0iIF07IHRoZW4KLS0gIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiAtYSAtciAiL2Rldi9zdGRlcnIiIF07IHRoZW4KLSsgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiAtYSAtciAiL2Rldi9zdGRlcnIiIC1hIC1lIC9zYmluL2NvbnNvbGV0eXBlIF07IHRoZW4KLSAgICAgQ09OU09MRVRZUEU9IiQoL3NiaW4vY29uc29sZXR5cGUgPCAvZGV2L3N0ZGVyciAyPi9kZXYvbnVsbCkiCi0gICBlbHNlCi0gICAgIENPTlNPTEVUWVBFPSJzZXJpYWwiCistICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiAtYSAtciAiL2Rldi9zdGRlcnIiIF07IHRoZW4KKysgICAgaWYgWyAtYyAiL2Rldi9zdGRlcnIiIC1hIC1yICIvZGV2L3N0ZGVyciIgLWEgLWUgL3NiaW4vY29uc29sZXR5cGUgXTsgdGhlbgorICAgICAgICAgQ09OU09MRVRZUEU9IiQoL3NiaW4vY29uc29sZXR5cGUgPCAvZGV2L3N0ZGVyciAyPi9kZXYvbnVsbCkiCisgICAgIGVsc2UKKyAgICAgICAgIENPTlNPTEVUWVBFPSJzZXJpYWwiCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzA4ZmZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIlN5c1YgaW5pdCBzY3JpcHRzIHdoaWNoIGFyZSBvbmx5IHVzZWQgaW4gYW4gTFNCIGltYWdlIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLURFUEVORFMgPSAicG9wdCBnbGliLTIuMCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViZjRlOGI0OTc4MGFiMTg3ZDUxYmQyNmFhYTAyMmM2IgotCi1TPSIke1dPUktESVJ9L2luaXRzY3JpcHRzLSR7UFZ9IgotU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3MvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtJHtQVn0udGFyLmJ6Mi82YTUxYTVhZjM4ZTAxNDQ1ZjUzOTg5ZWQwNzI3YzNlMS9pbml0c2NyaXB0cy0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2ggXAotICAgICAgICAgICIgCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YTUxYTVhZjM4ZTAxNDQ1ZjUzOTg5ZWQwNzI3YzNlMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYTFjNmU5ZGJhYTM3YTY3NjUxOGY0ODAzYjUwMWUxMDdjMDU4YmIxNGVmN2E4ZGIyNGM1MmI3N2ZiY2JhNTMxIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiZnVuY3Rpb25zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2Z1bmN0aW9uc10gPSAiJHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zIgotCi0jIFNpbmNlIHdlIGFyZSBvbmx5IHRha2luZyB0aGUgcGF0Y2hlZCB2ZXJzaW9uIG9mIGZ1bmN0aW9ucywgbm8gbmVlZCB0bwotIyBjb25maWd1cmUgb3IgY29tcGlsZSBhbnl0aGluZyBzbyBkbyBub3QgZXhlY3V0ZSB0aGVzZQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIgCi1kb19jb21waWxlW25vZXhlY10gPSAiMSIgCi0KLWRvX2luc3RhbGwoKXsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9yYy5kL2luaXQuZC9mdW5jdGlvbnMgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ3NGE2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzIuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJTeXNWIGluaXQgc2NyaXB0cyB3aGljaCBhcmUgb25seSB1c2VkIGluIGFuIExTQiBpbWFnZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL0xTQkluaXRTY3JpcHRzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0RFUEVORFMgPSAicG9wdCBnbGliLTIuMCIKKworUlBST1ZJREVTXyR7UE59ICs9ICJpbml0ZC1mdW5jdGlvbnMiCitSREVQRU5EU18ke1BOfSArPSAidXRpbC1saW51eCIKK1JDT05GTElDVFNfJHtQTn0gPSAiaW5pdHNjcmlwdHMtZnVuY3Rpb25zIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmY0ZThiNDk3ODBhYjE4N2Q1MWJkMjZhYWEwMjJjNiIKKworUz0iJHtXT1JLRElSfS9pbml0c2NyaXB0cy0ke1BWfSIKK1NSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5nei9zaGE1MTIvYjZlZDM4Zjk1NzZlOTIyN2MyZWNmMDQ3ZTJkNjBlMWU4NzJmNDBkNTFkMTM4NjFiMGM5MWRkZGIyODJmMTBmN2U2Yjc5NzA2YTRkMTQzNWQ3YTU3YTE0YTBiNzNhMWI3MTU0MWNmZTQ0YzAwZThlMDNlZjk2YjA4ZGUxOWVjMzIvaW5pdHNjcmlwdHMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5wYXRjaDtzdHJpcGxldmVsPTIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoIFwKKyAgICAgICAgICAiIAorCitTUkNfVVJJW21kNXN1bV0gPSAiZDZjNzk4ZjQwZGNlYjExN2UxMjEyNmQ5NGNiMjVhOWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTc5MzY3N2JkZDFmN2VlNGNiMDA4NzhjZTQzMzQ2MTk2Mzc0Zjg0OGE0YzhlNDU1OWUwODYwNDBmYzc0ODdkYiIKKworIyBTaW5jZSB3ZSBhcmUgb25seSB0YWtpbmcgdGhlIHBhdGNoZWQgdmVyc2lvbiBvZiBmdW5jdGlvbnMsIG5vIG5lZWQgdG8KKyMgY29uZmlndXJlIG9yIGNvbXBpbGUgYW55dGhpbmcgc28gZG8gbm90IGV4ZWN1dGUgdGhlc2UKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiIAorZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiIAorCitkb19pbnN0YWxsKCl7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vcmMuZC9pbml0LmQvZnVuY3Rpb25zICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKaW5kZXggZWExMjUwMi4uMzZmNTJmZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkF1dG9tYXRlcyBMaW51eCBTdGFuZGFyZCBCYXNlIChMU0IpIHRlc3RzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvTFNCSW5pdFNjcmlwdHMiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBMSUNFTlNFID0gIkdQTHYyIgogUFIgPSAicjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvZmlsZXMvbHNvZi1yZW1vdmUtaG9zdC1pbmZvcm1hdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9maWxlcy9sc29mLXJlbW92ZS1ob3N0LWluZm9ybWF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZDIzMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvZmlsZXMvbHNvZi1yZW1vdmUtaG9zdC1pbmZvcm1hdGlvbi5wYXRjaApAQCAtMCwwICsxLDc2IEBACitSZW1vdmUgaG9zdCBpbmZvcm1hdGlvbiBmcm9tIHZlcnNpb24uaAorCittYWtlIGxzb2Ygbm90IGluY2x1ZGUgaG9zdCBpbmZvcm1hdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBkaWFsZWN0cy9saW51eC9NYWtlZmlsZSB8ICAgNTAgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RpYWxlY3RzL2xpbnV4L01ha2VmaWxlIGIvZGlhbGVjdHMvbGludXgvTWFrZWZpbGUKK2luZGV4IDJiZWExMDguLjc5MjE0MmIgMTAwNjQ0CistLS0gYS9kaWFsZWN0cy9saW51eC9NYWtlZmlsZQorKysrIGIvZGlhbGVjdHMvbGludXgvTWFrZWZpbGUKK0BAIC03Niw0OCArNzYsMTYgQEAgdmVyc2lvbi5oOglGUkMKKyAJQGVjaG8gQ29uc3RydWN0aW5nIHZlcnNpb24uaAorIAlAcm0gLWYgdmVyc2lvbi5oCisgCUBlY2hvICcjZGVmaW5lCUxTT0ZfQkxEQ01UCSIke0xTT0ZfQkxEQ01UfSInID4gdmVyc2lvbi5oOworLQlAZWNobyAnI2RlZmluZQlMU09GX0NDCQkiJHtDQ30iJyA+PiB2ZXJzaW9uLmgKKy0JQGVjaG8gJyNkZWZpbmUJTFNPRl9DQ1YJIiR7Q0NWfSInID4+IHZlcnNpb24uaAorLQlAZWNobyAnI2RlZmluZQlMU09GX0NDREFURQkiJ2BkYXRlYCciJyA+PiB2ZXJzaW9uLmgKKy0JQGVjaG8gJyNkZWZpbmUJTFNPRl9DQ0ZMQUdTCSInYGVjaG8gJHtDRkxBR1N9IHwgc2VkICdzL1xcXFwoL1xcKC9nJyB8IHNlZCAncy9cXFxcKS9cXCkvZycgfCBzZWQgJ3MvIi9cXFxcIi9nJ2AnIicgPj4gdmVyc2lvbi5oCisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0MJCSIiJyA+PiB2ZXJzaW9uLmgKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9DQ1YJIiInID4+IHZlcnNpb24uaAorKwlAZWNobyAnI2RlZmluZQlMU09GX0NDREFURQkiIicgPj4gdmVyc2lvbi5oCisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0NGTEFHUwkiIicgPj4gdmVyc2lvbi5oCisgCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0lORk8JIiR7Q0lORk99IicgPj4gdmVyc2lvbi5oCistCUBpZiBbICJYJHtMU09GX0hPU1R9IiA9ICJYIiBdOyB0aGVuIFwKKy0JICBlY2hvICcjZGVmaW5lCUxTT0ZfSE9TVAkiJ2B1bmFtZSAtbmAnIicgPj4gdmVyc2lvbi5oOyBcCistCWVsc2UgXAorLQkgIGlmIFsgIiR7TFNPRl9IT1NUfSIgPSAibm9uZSIgXTsgdGhlbiBcCistCSAgICBlY2hvICcjZGVmaW5lCUxTT0ZfSE9TVAkiIicgPj4gdmVyc2lvbi5oOyBcCistCSAgZWxzZSBcCistCSAgICBlY2hvICcjZGVmaW5lCUxTT0ZfSE9TVAkiJHtMU09GX0hPU1R9IicgPj4gdmVyc2lvbi5oOyBcCistCSAgZmkgXAorLQlmaQorLQlAZWNobyAnI2RlZmluZQlMU09GX0xERkxBR1MJIiR7Q0ZHTH0iJyA+PiB2ZXJzaW9uLmgKKy0JQGlmIFsgIlgke0xTT0ZfTE9HTkFNRX0iID0gIlgiIF07IHRoZW4gXAorLQkgIGVjaG8gJyNkZWZpbmUJTFNPRl9MT0dOQU1FCSIke0xPR05BTUV9IicgPj4gdmVyc2lvbi5oOyBcCistCWVsc2UgXAorLQkgIGlmIFsgIiR7TFNPRl9MT0dOQU1FfSIgPSAibm9uZSIgXTsgdGhlbiBcCistCSAgICBlY2hvICcjZGVmaW5lCUxTT0ZfTE9HTkFNRQkiIicgPj4gdmVyc2lvbi5oOyBcCistCSAgZWxzZSBcCistCSAgICBlY2hvICcjZGVmaW5lCUxTT0ZfTE9HTkFNRQkiJHtMU09GX0xPR05BTUV9IicgPj4gdmVyc2lvbi5oOyBcCistCSAgZmk7IFwKKy0JZmkKKy0JQGlmIFsgIlgke0xTT0ZfU1lTSU5GT30iID0gIlgiIF07IHRoZW4gXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX1NZU0lORk8JIidgdW5hbWUgLWFgJyInID4+IHZlcnNpb24uaDsgXAorLQllbHNlIFwKKy0JICBpZiBbICIke0xTT0ZfU1lTSU5GT30iID0gIm5vbmUiIF07IHRoZW4gXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX1NZU0lORk8JIiInID4+IHZlcnNpb24uaDsgXAorLQkgIGVsc2UgXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX1NZU0lORk8JIiR7TFNPRl9TWVNJTkZPfSInID4+IHZlcnNpb24uaDsgXAorLQkgIGZpIFwKKy0JZmkKKy0JQGlmIFsgIlgke0xTT0ZfVVNFUn0iID0gIlgiIF07IHRoZW4gXAorLQkgIGVjaG8gJyNkZWZpbmUJTFNPRl9VU0VSCSIke1VTRVJ9IicgPj4gdmVyc2lvbi5oOyBcCistCWVsc2UgXAorLQkgIGlmIFsgIiR7TFNPRl9VU0VSfSIgPSAibm9uZSIgXTsgdGhlbiBcCistCSAgICBlY2hvICcjZGVmaW5lCUxTT0ZfVVNFUgkiIicgPj4gdmVyc2lvbi5oOyBcCistCSAgZWxzZSBcCistCSAgICBlY2hvICcjZGVmaW5lCUxTT0ZfVVNFUgkiJHtMU09GX1VTRVJ9IicgPj4gdmVyc2lvbi5oOyBcCistCSAgZmkgXAorLQlmaQorKwlAZWNobyAnI2RlZmluZQlMU09GX0hPU1QJIiInID4+IHZlcnNpb24uaDsKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9MREZMQUdTCSIiJyA+PiB2ZXJzaW9uLmgKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9MT0dOQU1FCSIiJyA+PiB2ZXJzaW9uLmg7CisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfU1lTSU5GTwkiIicgPj4gdmVyc2lvbi5oOworKwlAZWNobyAnI2RlZmluZQlMU09GX1VTRVIJIiInID4+IHZlcnNpb24uaDsKKyAJQHNlZCAnL1ZOL3MvLmRzIFZOIFwoLipcKS8jZGVmaW5lCUxTT0ZfVkVSU0lPTgkiXDEiLycgPCB2ZXJzaW9uID4+IHZlcnNpb24uaAorIAorIEZSQzoKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvbHNvZl80Ljg5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYgppbmRleCAyOTI0NWIxLi4xNDU0NmRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvbHNvZl80Ljg5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuODkuYmIKQEAgLTExLDcgKzExLDkgQEAKICMgaHR0cHM6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfmFiZS8gKS4gaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZyBzZWVtcyB0byBiZQogIyB0aGUgbW9zdCBjb21tb25seSB1c2VkIGFsdGVybmF0aXZlLgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcvc2l0ZXMvbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi9sc29mXyR7UFZ9LnRhci5iejIiCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcvc2l0ZXMvbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi9sc29mXyR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbHNvZi1yZW1vdmUtaG9zdC1pbmZvcm1hdGlvbi5wYXRjaCBcCisgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMWI5Y2QzNGYzZmI4Njg1NmExMjVhYmJmMmJlM2EzODYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODFhYzJmYzVmZGM5NDQ3OTNiYWY0MWExNDAwMmI2ZGViNWEyOTA5NmIzODc3NDRlMjhmOGMzMGEzNjBhMzcxOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoCmluZGV4IDA2ODRiZWUuLjk4NjUwMjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaApAQCAtOSw2ICs5LDcgQEAKIAogU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgbTQvbHRwLW51bWEubTQgfCAxMCArKysrKysrKystCiAgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQWRkLWtub2ItdG8tY29udHJvbC10aXJwYy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQWRkLWtub2ItdG8tY29udHJvbC10aXJwYy1zdXBwb3J0LnBhdGNoCmluZGV4IGJmMTE3NmYuLjVjZjFlMDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2gKQEAgLTgsNiArOCw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjb25maWd1cmUuYWMgfCA5ICsrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IDJkZTkzNjMuLmNmNzQ0NjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMTAsNiArMTAsNyBAQAogRGlzYWJsZSB0ZXN0cyBzcGVjaWZpY2FsbHkgbm90IGJ1aWxkaW5nIF95ZXRfIG9uIG11c2wgYmFzZWQgc3lzdGVtcwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSArKysrKwogIHRlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgfCA1ICsrKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaAppbmRleCA4ZGFiMWVkLi5iOTM5MGUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA1LWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2gKQEAgLTcsNiArNyw3IEBACiBleHRlcm5hbCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIGZ0cyBBUElzCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvTWFrZWZpbGUuaW5jICAgICAgICB8IDMgKysrCiAgdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9jcHVzZXQvTWFrZWZpbGUuaW5jIHwgMyArKysKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA2LWZpeC1QQVRIX01BWC11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDYtZml4LVBBVEhfTUFYLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NzRiOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDYtZml4LVBBVEhfTUFYLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDMyNjQ0YmRlNGQzM2I2Nzc2MTQ1MzRlYzM3MDMwZTU3ODgzYjhlMTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA5IEZlYiAyMDE3IDE2OjQxOjEyICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBmaXggUEFUSF9NQVggdW5kZWNsYXJlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbXVzbAotCi1maXggUEFUSF9NQVggdW5kZWNsYXJlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbXVzbC4KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gaW5jbHVkZS90c3RfdGVzdC5oIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL3RzdF90ZXN0LmggYi9pbmNsdWRlL3RzdF90ZXN0LmgKLWluZGV4IDdmZjMzYjIuLjk3NzljMGUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3RzdF90ZXN0LmgKLSsrKyBiL2luY2x1ZGUvdHN0X3Rlc3QuaAotQEAgLTE5LDYgKzE5LDkgQEAKLSAjZGVmaW5lIFRTVF9URVNUX0hfXwotIAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaWZuZGVmIF9fR0xJQkNfXwotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAidHN0X2NvbW1vbi5oIgotICNpbmNsdWRlICJ0c3RfcmVzX2ZsYWdzLmgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNy1maXgtX19XT1JEU0laRS11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoCmluZGV4IDhkMGU3MzkuLjJmNGNhNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaApAQCAtMSwzMCArMSwzMSBAQAotRnJvbSBhMjYzOWJkMGYwZDNmOWYzMDQ5ZWUzM2U2NzEwZmVkMDYyMjVmNTRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkMWEyNzU3MDQ1N2ZiNmUxZDZiYWZlODFiZmEwZjM1MDdiMTM3ZTMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgOSBGZWIgMjAxNyAxODoyMDo1OCArMDgwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZml4IF9fV09SRFNJWkUgdW5kZWNsYXJlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbXVzbAorU3ViamVjdDogW1BBVENIXSBmaXggX19XT1JEU0laRSB1bmRlY2xhcmVkIHdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsCiAKIGZpeCBfX1dPUkRTSVpFIHVuZGVjbGFyZWQgd2hlbiBidWlsZGluZyB3aXRoIG11c2wuCiAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9wdWxsLzE3N10KKwogU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgaW5jbHVkZS9vbGQvdGVzdC5oIHwgMyArKysKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9pbmNsdWRlL29sZC90ZXN0LmggYi9pbmNsdWRlL29sZC90ZXN0LmgKLWluZGV4IGQ0OTI1NjAuLjI2M2U5MmUgMTAwNjQ0CitpbmRleCBiMzY3NjRkODMuLmNjNmYxYjU1MSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvb2xkL3Rlc3QuaAogKysrIGIvaW5jbHVkZS9vbGQvdGVzdC5oCi1AQCAtNTgsNiArNTgsOSBAQAotICNpbmNsdWRlICJ0c3RfY2xvbmUuaCIKLSAjaW5jbHVkZSAib2xkX2RldmljZS5oIgotICNpbmNsdWRlICJvbGRfdG1wZGlyLmgiCitAQCAtNDQsNiArNDQsOSBAQAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgogKyNpZm5kZWYgX19HTElCQ19fCiArI2luY2x1ZGUgPGJpdHMvcmVnLmg+CiArI2VuZGlmCiAgCi0gLyoKLSAgKiBFbnN1cmUgdGhhdCBOVU1TSUdTIGlzIGRlZmluZWQuCisgI2luY2x1ZGUgInVzY3Rlc3QuaCIKKyAKIC0tIAotMi43LjQKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCmluZGV4IDQxZjI2MjMuLmUzMjVjZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCkBAIC04LDYgKzgsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9hY2NlcHQ0XzAxLmMgICAgIHwgIDkgKysrKy0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldGNwdS9nZXRjcHUwMS5jICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKy0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1maXgtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1tc2didWYtZXJyb3ItYnVpbGRpbmctd2l0LnBhdGNoCmluZGV4IDY4ODZjNTUuLmRkN2QyODMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaApAQCAtMSwxOCArMSwxOSBAQAotRnJvbSAyZDdlYTY3ZThlYWE0MWNiZDY4MTZmN2FiNjU0MjU0YjQwYjUzMGExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZjVkZDI5MzIyMDBlMDE5OWEzOGYzMDI4ZDNiZWYyMjUzZjMyZTM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgOSBGZWIgMjAxNyAxNzoxNzozNyArMDgwMAogU3ViamVjdDogW1BBVENIXSBmaXggcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgbXNnYnVmJyBlcnJvciBidWlsZGluZyB3aXRoIG11c2wKIAogV2hlbiBidWlsZGluZyB3aXRoIG11c2wgdGhlIGZpbGUgInN5cy9tc2cuaCIgYWxyZWFkeSBjb250YWluICdzdHJ1Y3QgbXNnYnVmJwogCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvcHVsbC8xNzddCisKIFNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL21zZ3Jjdi9tc2dyY3YwOC5jIHwgNCArKystCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvbXNncmN2L21zZ3JjdjA4LmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9tc2dyY3YvbXNncmN2MDguYwotaW5kZXggYTc1N2MwZC4uZTAyMzExNCAxMDA2NDQKK2luZGV4IGE3NTdjMGQxOC4uZTAyMzExNGQyIDEwMDY0NAogLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvbXNncmN2L21zZ3JjdjA4LmMKICsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL21zZ3Jjdi9tc2dyY3YwOC5jCiBAQCAtNDcsMTEgKzQ3LDEzIEBAIGNvbnN0IGNoYXIgKlRDSUQgPSAibXNncmN2MDgiOwpAQCAtMzEsNSArMzIsNSBAQAogIHN0YXRpYyB2b2lkIG1zcihpbnQgbXNxaWQpCiAgewogLS0gCi0yLjcuNAorMi4xMS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoCmluZGV4IDViMGM0NDQuLmI5ZmNlODggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtcmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaApAQCAtMTAsNiArMTAsOCBAQAogaXRzIG5vdCBhIGdlbmVyYWxseSBhdmFpbGFibGUgdHlwZWRlZgogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZXBvbGwyL2luY2x1ZGUvZXBvbGwuaCB8IDggKysrKysrLS0KICB1dGlscy9zY3RwL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmggICAgICAgICAgICAgICAgfCA5ICsrKysrKystLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoCmluZGV4IDRhYzE0ZGMuLjI1ZjZiYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2gKQEAgLTcsNiArNyw4IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA0LmMgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQogIHRlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA2LmMgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTItZml4LWZhY2Nlc3NhdDAxLmMtYnVpbGQtZmFpbHMtd2l0aC1zZWN1cml0eS1mbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWZpeC1mYWNjZXNzYXQwMS5jLWJ1aWxkLWZhaWxzLXdpdGgtc2VjdXJpdHktZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MDBiZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTItZml4LWZhY2Nlc3NhdDAxLmMtYnVpbGQtZmFpbHMtd2l0aC1zZWN1cml0eS1mbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gMzJmNTYzMDA4Zjk1OTc1ZDI2ZDFjNGZjYjI2NmM3MmM1NmY5MzRiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIyIEZlYiAyMDE3IDAxOjIxOjU1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBmYWNjZXNzYXQwMS5jIGJ1aWxkIGZhaWxzIHdpdGggc2VjdXJpdHkgZmxhZ3MKLQotV2hlbiB0aGUgZGlzdHJvIGlzIHBva3ktbHNiLCBmaXggdGhlIGZvbGxvd2luZyBlcnJvcjoKLQotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vLi4vLi4vLi4vaW5jbHVkZS9vbGQvdGVzdC5oOjQ3OjAsCi18ICAgICAgICAgICAgICAgICAgZnJvbSBmYWNjZXNzYXQwMS5jOjQ0OgotfCBmYWNjZXNzYXQwMS5jOiBJbiBmdW5jdGlvbiAnc2V0dXAnOgotfCAuLi8uLi8uLi8uLi9pbmNsdWRlL29sZC9vbGRfc2FmZV9maWxlX29wcy5oOjU1OjI3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgICAgICAgICAgICAgIChwYXRoKSwgKGZtdCksICMjIF9fVkFfQVJHU19fKQotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IGZhY2Nlc3NhdDAxLmM6MTMyOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnU0FGRV9GSUxFX1BSSU5URicKLXwgICBTQUZFX0ZJTEVfUFJJTlRGKGNsZWFudXAsIHRlc3RmaWxlLCB0ZXN0ZmlsZSk7Ci18ICAgXn5+fn5+fn5+fn5+fn5+fgotfCAuLi8uLi8uLi8uLi9pbmNsdWRlL29sZC9vbGRfc2FmZV9maWxlX29wcy5oOjU1OjI3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgICAgICAgICAgICAgIChwYXRoKSwgKGZtdCksICMjIF9fVkFfQVJHU19fKQotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IGZhY2Nlc3NhdDAxLmM6MTMzOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnU0FGRV9GSUxFX1BSSU5URicKLXwgICBTQUZFX0ZJTEVfUFJJTlRGKGNsZWFudXAsIHRlc3RmaWxlMiwgdGVzdGZpbGUyKTsKLXwgICBefn5+fn5+fn5+fn5+fn5+Ci0KLVRoaXMgaXMgYmVjYXVzZSBpbiBtYWNybyAiU0FGRV9GSUxFX1BSSU5URiIsIGl0cyB0aGlyZCBhcmd1bWVudCBzaG91bGQgYmUgYQotZm9ybWF0IGFyZ3VtZW50cywgYnV0IGluIGZpbGUgZmFjY2Vzc2F0MDEuYywgaXQgcGFzc2VkIHRoZSBzYW1lIGFyZ3VtZW50IHRvCi1tYWNybyAiU0FGRV9GSUxFX1BSSU5URiIsIHNvIGl0IHJlc3VsdHMgaW4gdGhlIGZhaWxzLiBJdCBzaG91bGQgcGFzcyB0aGUgZm9ybWF0Ci1zdHJpbmcgdG8gdGhlIHRoaXJkIGFyZ3VtZW50LgotCi1UaGUgc2FtZSBmb3IgZmlsZSBmY2htb2RhdDAxLmMuCi0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmFjY2Vzc2F0L2ZhY2Nlc3NhdDAxLmMgfCA0ICsrLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjaG1vZGF0L2ZjaG1vZGF0MDEuYyAgIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZhY2Nlc3NhdC9mYWNjZXNzYXQwMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mYWNjZXNzYXQvZmFjY2Vzc2F0MDEuYwotaW5kZXggNjIyZGZkMy4uMWNhOTBlOSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmFjY2Vzc2F0L2ZhY2Nlc3NhdDAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmFjY2Vzc2F0L2ZhY2Nlc3NhdDAxLmMKLUBAIC0xMjksOCArMTI5LDggQEAgdm9pZCBzZXR1cCh2b2lkKQotIAlmZHNbMF0gPSBTQUZFX09QRU4oY2xlYW51cCwgcGF0aG5hbWUsIE9fRElSRUNUT1JZKTsKLSAJZmRzWzFdID0gZmRzWzRdID0gZmRzWzBdOwotIAotLQlTQUZFX0ZJTEVfUFJJTlRGKGNsZWFudXAsIHRlc3RmaWxlLCB0ZXN0ZmlsZSk7Ci0tCVNBRkVfRklMRV9QUklOVEYoY2xlYW51cCwgdGVzdGZpbGUyLCB0ZXN0ZmlsZTIpOwotKwlTQUZFX0ZJTEVfUFJJTlRGKGNsZWFudXAsIHRlc3RmaWxlLCAiZmFjY2Vzc2F0dGVzdGZpbGUlZC50eHQiKTsKLSsJU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZTIsICIlcy9mYWNjZXNzYXR0ZXN0ZmlsZSVkLnR4dCIpOwotIAotIAlmZHNbMl0gPSBTQUZFX09QRU4oY2xlYW51cCwgdGVzdGZpbGUzLCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKTsKLSAKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjaG1vZGF0L2ZjaG1vZGF0MDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNobW9kYXQvZmNobW9kYXQwMS5jCi1pbmRleCA2YmY2NmQ4Li44OWQwNzJhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY2htb2RhdC9mY2htb2RhdDAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNobW9kYXQvZmNobW9kYXQwMS5jCi1AQCAtMTI3LDggKzEyNyw4IEBAIHZvaWQgc2V0dXAodm9pZCkKLSAJZmRzWzBdID0gU0FGRV9PUEVOKGNsZWFudXAsIHBhdGhuYW1lLCBPX0RJUkVDVE9SWSk7Ci0gCWZkc1sxXSA9IGZkc1s0XSA9IGZkc1swXTsKLSAKLS0JU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZSwgdGVzdGZpbGUpOwotLQlTQUZFX0ZJTEVfUFJJTlRGKGNsZWFudXAsIHRlc3RmaWxlMiwgdGVzdGZpbGUyKTsKLSsJU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZSwgImZjaG1vZGF0dGVzdCVkLnR4dCIpOwotKwlTQUZFX0ZJTEVfUFJJTlRGKGNsZWFudXAsIHRlc3RmaWxlMiwgIiVzL2ZjaG1vZGF0dGVzdCVkLnR4dCIpOwotIAotIAlmZHNbMl0gPSBTQUZFX09QRU4oY2xlYW51cCwgdGVzdGZpbGUzLCBPX0NSRUFUIHwgT19SRFdSLCAwNjAwKTsKLSAJZmRzWzNdID0gMTAwOwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2gKaW5kZXggNTE5OGZlOS4uYTc5NzYzZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDE4LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaApAQCAtNiw2ICs2LDcgQEAKIG1hbGxvY29wdCBpcyBub3QgYXZhaWxhYmxlIG9uIG5vbiBnbGliYyBpbXBsZW1lbnRhdGlvbnMKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdXRpbHMvYmVuY2htYXJrL2ViaXp6eS0wLjMvZWJpenp5LmMgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaAppbmRleCAwZTRlNDU4Li43MDYwYTY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaApAQCAtNyw2ICs3LDggQEAKIGZ1bmN0aW9ucyB3aXRoIHNhbWUgbmFtZSwgaXQgZXJyb3JzIG91dC4KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldGRlbnRzL2dldGRlbnRzLmggfCA2ICsrKystLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKaW5kZXggYzhjYmU1OC4uM2U3OWM5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaApAQCAtMTAsNiArMTAsOCBAQAogZXJyb3I6ICdNUkVNQVBfTUFZTU9WRScgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYyB8IDQgKysrLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMgfCAyICsrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoCmluZGV4IDQ2ODBjMDMuLjUyOWY0ZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoCkBAIC02LDYgKzYsOCBAQAogX19wdHJhY2VfcmVxdWVzdCBpcyBvbmx5IGF2YWlsYWJsZSB3aXRoIGdsaWJjCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9wdHJhY2UvcHRyYWNlMDMuYyAgICAgICAgICAgfCA0ICsrKysKICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3B0cmFjZS9zcGF3bl9wdHJhY2VfY2hpbGQuaCB8IDQgKysrKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2gKaW5kZXggMDNjNjdhNS4uMDNhYTQ1ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNC1ydF9zaWdhY3Rpb24tcnRfc2lncHJvY21hcmstRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCkBAIC03LDYgKzcsOCBAQAogZXJyb3I6ICdTQV9OT01BU0snIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9ydF9zaWdhY3Rpb24vcnRfc2lnYWN0aW9uMDEuYyAgICAgfCAxICsKICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3J0X3NpZ2FjdGlvbi9ydF9zaWdhY3Rpb24wMi5jICAgICB8IDIgKy0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaAppbmRleCBhYWQzY2IwLi5hZmNiYTYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjUtbWNfZ2V0aG9zdC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCkBAIC03LDYgKzcsOCBAQAogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICd1X2NoYXInCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCmluZGV4IDU4YjhlZDQuLmY2NWZhZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCkBAIC03LDYgKzcsOCBAQAogZXJyb3I6ICdTQV9OT01BU0snIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9taXNjL2NyYXNoL2NyYXNoMDEuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoCmluZGV4IGY3NWUzM2IuLmFkZjZmMjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjctc3lzY29uZjAxLVVzZS1fU0NfMl9DX1ZFUlNJT04tY29uZGl0aW9uYWxseS5wYXRjaApAQCAtNyw2ICs3LDggQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zeXNjb25mL3N5c2NvbmYwMS5jIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoCmluZGV4IGIyNmFhMTMuLmM3MzBkNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaApAQCAtOCw2ICs4LDggQEAKIHNpZ2hhbmRsZXJfdCBtYWtlcyBpdCB3b3JrIG9uIG11c2wgdG9vCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgaW5jbHVkZS9sYXBpL3J0X3NpZ2FjdGlvbi5oICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZSB8IDMgKysrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaAppbmRleCBjNWZhYzliLi5lZmE2ZDA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDMwLWxpYi1Vc2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUtaW4tcGxhY2Utb2YtUFRIUkVBRF8ucGF0Y2gKQEAgLTgsNiArOCw4IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGxpYi90c3RfcmVzLmMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2gKaW5kZXggNTljYWVmZS4uYzJlZjg5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzQtcGVyaW9kaWNfb3V0cHV0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLUFkZCBwZXJpb2RpYyBvdXRwdXQgZm9yIGxvbmcgdGltZSB0ZXN0LgorRnJvbSA1YTc3ZTJiZGMwODNmNGY4NDJhOGJhN2MyZGIxYTdhYzZlNWYwNjY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMzEgTWF5IDIwMTcgMjE6MjY6MDUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHBlcmlvZGljIG91dHB1dCBmb3IgbG9uZyB0aW1lIHRlc3QuCiAKIFRoaXMgaXMgbmVlZGVkIGluIGNvbnRleHQgb2YgaGF2aW5nIHNjcmlwdHMgcnVubmluZyBsdHAgdGVzdHMgYW5kCiB3YWl0aW5nIHdpdGggYSB0aW1lb3V0IGZvciB0aGUgb3V0cHV0IG9mIHRoZSB0ZXN0cy4KQEAgLTYsMjAgKzksMjYgQEAKIFNpZ25lZC1vZmYtYnk6IFR1ZG9yIEZsb3JlYSA8dHVkb3IuZmxvcmVhQGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLWRpZmYgLXJ1TiBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvbWVtY2cvc3RyZXNzL21lbWNnX3N0cmVzc190ZXN0LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2gKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvbWVtY2cvc3RyZXNzL21lbWNnX3N0cmVzc190ZXN0LnNoCTIwMTMtMTEtMDggMTU6NTQ6MDkuNTE1MDQ5MDgxICswMTAwCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaAkyMDEzLTExLTA4IDIyOjMyOjE1LjU4NzM3MDQwNiArMDEwMAotQEAgLTM3LDcgKzM3LDggQEAKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyAuLi4va2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaCAgICAgIHwgMTEgKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2ggYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaAoraW5kZXggYWYxYTcwOC4uMDg0ZTYyOCAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvbWVtY2cvc3RyZXNzL21lbWNnX3N0cmVzc190ZXN0LnNoCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaAorQEAgLTM3LDcgKzM3LDggQEAgaWYgWyAieCQoZ3JlcCAtdyBtZW1vcnkgL3Byb2MvY2dyb3VwcyB8IGN1dCAtZjQpIiAhPSAieDEiIF07IHRoZW4KICAgICAgICAgIGV4aXQgMAogIGZpCiAgCi0tUlVOX1RJTUU9JCgoIDYwICogNjAgKSkKKy1SVU5fVElNRT0kKCggMTUgKiA2MCApKQogK09ORV9NSU5VVEU9NjAKLStSVU5fVElNRT02MAorK1JVTl9USU1FPTE1CiAgCiAgY2xlYW51cCgpCiAgewotQEAgLTYyLDcgKzYzLDcgQEAKK0BAIC02Miw3ICs2Myw3IEBAIGRvX21vdW50KCkKICAjICQxIC0gTnVtYmVyIG9mIGNncm91cHMKICAjICQyIC0gQWxsb2NhdGVkIGhvdyBtdWNoIG1lbW9yeSBpbiBvbmUgcHJvY2Vzcz8gaW4gTUIKICAjICQzIC0gVGhlIGludGVydmFsIHRvIHRvdWNoIG1lbW9yeSBpbiBhIHByb2Nlc3MKQEAgLTI4LDE2ICszNywxOSBAQAogIHJ1bl9zdHJlc3MoKQogIHsKICAJZG9fbW91bnQ7Ci1AQCAtODEsNyArODIsMTEgQEAKK0BAIC04MSw3ICs4MiwxMSBAQCBydW5fc3RyZXNzKCkKICAJCWV2YWwgL2Jpbi9raWxsIC1zIFNJR1VTUjEgXCRwaWQkaSAyPiAvZGV2L251bGwKICAJZG9uZQogIAogLQlzbGVlcCAkNAogKwlmb3IgaSBpbiAkKHNlcSAwICQoKCQ0LTEpKSkKICsJZG8KLSsJCWV2YWwgZWNobyAiU3RhcnRlZCAkaSBtaW4gYWdvLiBTdGlsbCBhbGl2ZS4uLiAiIAorKwkJZXZhbCBlY2hvICJTdGFydGVkICRpIG1pbiBhZ28uIFN0aWxsIGFsaXZlLi4uICIKICsJCXNsZWVwICRPTkVfTUlOVVRFCiArCWRvbmUKICAKICAJZm9yIGkgaW4gJChzZXEgMCAkKCgkMS0xKSkpCiAgCWRvCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM3LWx0cC1maXgtUEFHRV9TSVpFLXJlZGVmaW5pdGlvbi1hbmQtT19DUkVBVC11bmRlY2xlYXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NzM4YWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoCkBAIC0wLDAgKzEsMTEzIEBACitGcm9tIGE5ZDU1OTVkMmZhMmFiMjUyZjFjYWJmNjNmNGI2NWMzZWZiYWZlYjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMCBBdWcgMjAxNyAxNToyNzowMyArMDgwMAorU3ViamVjdDogW1BBVENIXSBsdHA6IGZpeCBQQUdFX1NJWkUgcmVkZWZpbml0aW9uIGFuZCBPX0NSRUFUIHVuZGVjbGVhciB3aGVuCisgYnVpbGQgd2l0aCBtdXNsCisKK2Vycm9yIDE6CisKK3xzdGFja19jbGFzaC5jOjUwOjIyOiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBvciAnKCcgYmVmb3JlIG51bWVyaWMgY29uc3RhbnQKK3wgc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFOworCitUaGlzIGlzIGJlY2F1c2UgdGhlIG11c2wgbGliYyBhbHJlYWR5IGNvbnRhaW4gUEFHRV9TSVpFIGRlZmluaXRpb24gaW4gbGltaXRzLmMsCit3ZSBjYW4gY2hlY2sgaXQgaGVyZToKKworICAgIGh0dHBzOi8vZ2l0Lm11c2wtbGliYy5vcmcvY2dpdC9tdXNsL3RyZWUvaW5jbHVkZS9saW1pdHMuaCNuNDMKKworZXJyb3IgMjoKKworfGNrMDEuYzoxNTc6MjI6IGVycm9yOiAnT19DUkVBVCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1NfSVJFQUQnPworfCAgIGZkID0gb3BlbihmaWxlbmFtZSwgT19DUkVBVCB8IE9fVFJVTkMgfCBPX1JEV1IsIDA2NDQpOworfCAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fgorfCAgICAgICAgICAgICAgICAgICAgICAgU19JUkVBRAorCitUaGlzIGlzIGJlY2F1c2UgdGhlIG11c2wgbGliYyBwdXQgdGhvc2UgaW4gZmNudGwuaCwgc28gd2Ugc2hvdWxkIGluY2x1ZGUgdGhhdAorZmlsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9wdWxsLzE5NCBdCisKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jIHwgIDEgKworIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jIHwgIDEgKworIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jIGIvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCitpbmRleCAyZWYxYTgyLi43YzQ1OTkxIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCisrKysgYi90ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMKK0BAIC00Nyw3ICs0Nyw3IEBACisgI2luY2x1ZGUgInRzdF90ZXN0LmgiCisgI2luY2x1ZGUgInRzdF9zYWZlX3N0ZGlvLmgiCisgCistc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFOworK3N0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfU0laRV90c3Q7Cisgc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9NQVNLOworIHN0YXRpYyB1bnNpZ25lZCBsb25nIEdBUF9QQUdFUyA9IDI1NjsKKyBzdGF0aWMgdW5zaWduZWQgbG9uZyBUSFJFU0hPTEQ7CitAQCAtNjYsNyArNjYsNyBAQCB2b2lkIGV4aGF1c3Rfc3RhY2tfaW50b19zaWdzZWd2KHZvaWQpCisgCWV4aGF1c3Rfc3RhY2tfaW50b19zaWdzZWd2KCk7CisgfQorIAorLSNkZWZpbmUgTUFQUEVEX0xFTiBQQUdFX1NJWkUKKysjZGVmaW5lIE1BUFBFRF9MRU4gUEFHRV9TSVpFX3RzdAorIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1hcHBlZF9hZGRyOworIAorIHZvaWQgc2Vndl9oYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCAqaW5mbywgdm9pZCAqZGF0YSBMVFBfQVRUUklCVVRFX1VOVVNFRCkKK0BAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBkb19jaGlsZCh2b2lkKQorIAlzdGFja190IHNpZ25hbF9zdGFjazsKKyAJc3RydWN0IHNpZ2FjdGlvbiBzZWd2X3NpZyA9IHsuc2Ffc2lnYWN0aW9uID0gc2Vndl9oYW5kbGVyLCAuc2FfZmxhZ3MgPSBTQV9PTlNUQUNLfFNBX1NJR0lORk99OworIAl2b2lkICptYXA7CistCXVuc2lnbmVkIGxvbmcgZ2FwID0gR0FQX1BBR0VTICogUEFHRV9TSVpFOworKwl1bnNpZ25lZCBsb25nIGdhcCA9IEdBUF9QQUdFUyAqIFBBR0VfU0laRV90c3Q7CisgCXN0cnVjdCBybGltaXQgcmxpbWl0OworIAorIAlybGltaXQucmxpbV9jdXIgPSBybGltaXQucmxpbV9tYXggPSBSTElNX0lORklOSVRZOworQEAgLTIwMCw4ICsyMDAsOCBAQCB2b2lkIHNldHVwKHZvaWQpCisgeworIAljaGFyIGJ1Zls0MDk2XSwgKnA7CisgCistCVBBR0VfU0laRSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKy0JUEFHRV9NQVNLID0gfihQQUdFX1NJWkUgLSAxKTsKKysJUEFHRV9TSVpFX3RzdCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKysJUEFHRV9NQVNLID0gfihQQUdFX1NJWkVfdHN0IC0gMSk7CisgCisgCWJ1Zls0MDk1XSA9ICdcMCc7CisgCVNBRkVfRklMRV9TQ0FORigiL3Byb2MvY21kbGluZSIsICIlNDA5NVteXG5dIiwgYnVmKTsKK0BAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBzZXR1cCh2b2lkKQorIAkJdHN0X3JlcyhUSU5GTywgInN0YWNrX2d1YXJkX2dhcCA9ICVsZCIsIEdBUF9QQUdFUyk7CisgCX0KKyAKKy0JVEhSRVNIT0xEID0gKEdBUF9QQUdFUyAtIDEpICogUEFHRV9TSVpFOworKwlUSFJFU0hPTEQgPSAoR0FQX1BBR0VTIC0gMSkgKiBQQUdFX1NJWkVfdHN0OworIAorIAl7CisgCQl2b2xhdGlsZSBpbnQgKmEgPSBhbGxvY2EoMTI4KTsKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCitpbmRleCAzZTE3YmU0Li4wNmQ4OWUzIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCitAQCAtNjksNiArNjksNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorICNpbmNsdWRlIDxzeXMvZmlsZS5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlICJ0ZXN0LmgiCisgCisgdm9pZCBzZXR1cCh2b2lkKTsKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCitpbmRleCA0MTRkZjY4Li45ZGRmNzI5IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCitAQCAtNzUsNiArNzUsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAidGVzdC5oIgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdjMGE0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM4LWNvbW1hbmRzLWdkYjAxLXJlcGxhY2Utc3RkaW4td2l0aC1kZXYtbnVsbC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDJmNmFiOGY2OTRiMjZiN2YyNTY2NjI0ZjZkMWYyMzc4OGQ2YWI4YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTEgU2VwIDIwMTcgMTI6NTc6NTggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29tbWFuZHMvZ2RiMDE6IHJlcGxhY2Ugc3RkaW4gd2l0aCAvZGV2L251bGwKKworSWYgdGhpcyB0ZXN0Y2FzZSBydW5zIGFzIGJhY2tncm91bmQgcHJvY2VzcywgZ2RiIGNhbiByZWNlaXZlCitTSUdUVE9VIGFuZCB0aGVuIHRlc3RjYXNlIGdldHMgc3R1Y2suCisKK1NpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0LzJmNmFiOGY2OTRiMjZiN2YyNTY2NjI0ZjZkMWYyMzc4OGQ2YWI4YTBdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2ggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoIGIvdGVzdGNhc2VzL2NvbW1hbmRzL2dkYi9nZGIwMS5zaAoraW5kZXggMDdhZTM2Zi4uZTNhNWI1MSAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKKysrKyBiL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKK0BAIC0yOSw3ICsyOSw3IEBAIFRTVF9ORUVEU19DTURTPSJnZGIgL2Jpbi9jYXQiCisgCisgc2ltcGxlX3Rlc3QoKQorIHsKKy0JZ2RiIC9iaW4vY2F0IC1leCAicnVuIC9ldGMvcGFzc3dkIiAtZXggcXVpdAorKwlnZGIgL2Jpbi9jYXQgLWV4ICJydW4gL2V0Yy9wYXNzd2QiIC1leCBxdWl0IDwgL2Rldi9udWxsCisgCVJDPSQ/CisgCWlmIFsgJFJDIC1lcSAwIF0gOyB0aGVuCisgCQl0c3RfcmVzIFRQQVNTICJnZGIgYXR0YWNoZWQgdG8gcHJvY2VzcyBhbmQgY29tcGxldGVkIHJ1biIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzktZmNudGwtZml4LXRoZS10aW1lLWRlZi10by11c2UtdGltZV90LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzktZmNudGwtZml4LXRoZS10aW1lLWRlZi10by11c2UtdGltZV90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGMxZGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWZjbnRsLWZpeC10aGUtdGltZS1kZWYtdG8tdXNlLXRpbWVfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gN2JjZTNkMjIzNDk0ODAzY2IzMjg5N2NhYmU2NjExOTA3NmU1M2Q4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDggRmViIDIwMTcgMTY6MjM6NTEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIGZjbnRsOiBmaXggdGhlIHRpbWUoKSBkZWYgdG8gdXNlIHRpbWVfdAotCi1UaGlzIGZpeGVzIHRoZSBidWlsZCBvbiBYMzIsIHdoZXJlIGxvbmcgaXMgMzItYml0IHJhdGhlciB0aGFuIDY0LWJpdC4KLQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMTQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwxNC5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDE0LmMKLWluZGV4IGM2MWViMjQuLjk5ZTM4NjcgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMTQuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDE0LmMKLUBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBkb2NoaWxkKHZvaWQpCi0gCi0gdm9pZCBydW5fdGVzdChpbnQgZmlsZV9mbGFnLCBpbnQgZmlsZV9tb2RlLCBpbnQgc2VlaywgaW50IHN0YXJ0LCBpbnQgZW5kKQotIHsKLS0JZXh0ZXJuIGxvbmcgdGltZSgpOwotKwlleHRlcm4gdGltZV90IHRpbWUoKTsKLSAKLSAJZmFpbCA9IDA7Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDExNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDExNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThhZjEwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzAxMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT0yMTZlNDNiNzJlZmJlNGVkOTAxN2NjMTljNGM2OGIwMSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCi0iCi0KLURFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKLUNGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLUNGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgotU1JDUkVWID0gIjJjODQ1N2IwNzY5ZmMwMjZlNGUxNzcyZjRjMmE2ZGEwYmU2M2E2MzEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LWZpeC1QQVRIX01BWC11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1maXgtZmFjY2Vzc2F0MDEuYy1idWlsZC1mYWlscy13aXRoLXNlY3VyaXR5LWZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLXNobWF0MS1Db3Zlci1HTlUtc3BlY2lmaWMtY29kZS11bmRlci1fX1VTRV9HTlUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzOS1mY250bC1maXgtdGhlLXRpbWUtZGVmLXRvLXVzZS10aW1lX3QucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZXhwb3J0IHByZWZpeCA9ICIvb3B0L2x0cCIKLWV4cG9ydCBleGVjX3ByZWZpeCA9ICIvb3B0L2x0cCIKLQotUEFDS0FHRUNPTkZJR1tudW1hXSA9ICItLXdpdGgtbnVtYSwgLS13aXRob3V0LW51bWEsIG51bWFjdGwsIgotRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS90ZXN0Y2FzZXMvcmVhbHRpbWUvbTQiCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1wb3dlci1tYW5hZ2VtZW50LXRlc3RzdWl0ZSAtLXdpdGgtcmVhbHRpbWUtdGVzdHN1aXRlICIKLSMgbHRwIG5ldHdvcmsvcnBjIHRlc3QgY2FzZXMgZnRiZnMgd2hlbiBsaWJ0aXJwYyBpcyBmb3VuZAotRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXRpcnBjICIKLQotIyBUaGUgbWFrZWZpbGVzIG1ha2UgZXhjZXNzaXZlIHVzZSBvZiBtYWtlIC1DIGFuZCBzZXZlcmFsIGluY2x1ZGUgdGVzdGNhc2VzLm1rCi0jIHdoaWNoIHRyaWdnZXJzIGEgYnVpbGQgb2YgdGhlIHN5c2NhbGwgaGVhZGVyLiBUbyByZXByb2R1Y2UsIGJ1aWxkIGx0cCwKLSMgdGhlbiBkZWxldGUgdGhlIGhlYWRlciwgdGhlbiAibWFrZSAtaiBYWCIgYW5kIHdhdGNoIHJlZ2VuLnNoIHJ1biBtdWx0aXBsZQotIyB0aW1lcy4gSXRzIGVhc2llciB0byBnZW5lcmF0ZSB0aGlzIG9uY2UgaGVyZSBpbnN0ZWFkLgotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLQkoIG1ha2UgLUMgJHtCfS90ZXN0Y2FzZXMva2VybmVsIGluY2x1ZGUvbGludXhfc3lzY2FsbF9udW1iZXJzLmggKQotfQotCi1kb19pbnN0YWxsKCl7Ci0gICAgaW5zdGFsbCAtZCAke0R9L29wdC9sdHAvCi0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gU0tJUF9JRENIRUNLPTEgaW5zdGFsbAotCi0gICAgIyBmaXh1cCBub3QgZGVwbG95IFNUUGZhaWx1cmVfcmVwb3J0LnBsIHRvIGF2b2lkIGNvbmZ1c2luZyBhYm91dCBpdCBmYWlscyB0byBydW4KLSAgICAjIGFzIGl0IGxhY2tzIGRlcGVuZGVuY3kgb24gc29tZSBwZXJsIG1vdWRsZSBzdWNoIGFzIExXUDo6U2ltcGxlCi0gICAgIyBBbmQgdGhpcyBzY3JpcHQgcHJldmlvdXNseSB3b3JrcyBhcyBhIHRvb2wgZm9yIGFuYWx5emluZyBmYWlsdXJlcyBmcm9tIExUUAotICAgICMgcnVucyBvbiB0aGUgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtIChTVFApIGFuZCBpdCBtYWlubHkgYWNjZXNzZXMKLSAgICAjIGh0dHA6Ly9raGFjay5vc2RsLm9yZyB0byByZXRyaWV2ZSBsdHAgdGVzdCByZXN1bHRzIHJ1biBvbgotICAgICMgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtLCBidXQgbm93IGh0dHA6Ly9raGFjay5vc2RsLm9yZyB1bmFjY2Vzc2libGUKLSAgICBybSAtcmYgJHtEfS9vcHQvbHRwL2Jpbi9TVFBmYWlsdXJlX3JlcG9ydC5wbAotCi0gICAgIyBJbiBvZS1jb3JlLCB3ZSBkb2Vzbid0IHN1cHBvcnQga3NoIGFuZCBjc2ggbm93LCBzbyByZW1vdmUgaW4uY3NoIGFuZCBpbi5rc2guCi0gICAgcm0gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL2ZpbGUwMS9pbi5jc2gKLSAgICBybSAke0R9L29wdC9sdHAvdGVzdGNhc2VzL2RhdGEvZmlsZTAxL2luLmtzaAotICAgICMgQ29weSBQT1NJWCB0ZXN0IHN1aXRlIGludG8gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcyBieSBtYW51YWwKLSAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcwotfQotCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIGUyZnNwcm9ncy1ta2UyZnMgcHl0aG9uLWNvcmUgbGliYWlvIGJhc2ggZ2F3ayBleHBlY3QgbGRkIHVuemlwIGd6aXAgY3BpbyBjcm9uaWUgbG9ncm90YXRlIHdoaWNoIGF0IgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIi9vcHQvbHRwL2xpYi9saWJtZW0uYSAvb3B0L2x0cC90ZXN0Y2FzZXMvZGF0YS9ubTAxL2xpYi5hIgotCi1GSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIgotCi0jIEF2b2lkIGdlbmVyYXRlZCBiaW5hcmllcyBzdHJpcHBpbmcuIE90aGVyd2lzZSBzb21lIG9mIHRoZSBsdHAgdGVzdHMgc3VjaCBhcyBsZGQwMSAmIG5tMDEgZmFpbHMKLUlOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgotSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCi0jIEhvd2V2ZXIsIHRlc3RfYXJjaF9zdHJpcHBlZCBpcyBhbHJlYWR5IHN0cmlwcGVkLCBzby4uLgotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImFscmVhZHktc3RyaXBwZWQiCi0KLSMgQXZvaWQgZmlsZSBkZXBlbmRlbmN5IHNjYW5zLCBhcyBMVFAgY2hlY2tzIGZvciB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdAotIyBleGlzdCBvbiB0aGUgcnVubmluZyBzeXN0ZW0uICBGb3IgaW5zdGFuY2UgaXQgaGFzIHNwZWNpZmljIGNoZWNrcyBmb3IKLSMgY3NoIGFuZCBrc2ggd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgcGFydCBvZiBPcGVuRW1iZWRkZWQgc3lzdGVtcyAoYnV0Ci0jIGNhbiBiZSBhZGRlZCB2aWEgYWRkaXRpb25hbCBsYXllcnMuKQotU0tJUF9GSUxFREVQU18ke1BOfSA9ICcxJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTcwNTE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTcwNTE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1M2NiZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzA1MTYuYmIKQEAgLTAsMCArMSwxMjMgQEAKK1NVTU1BUlkgPSAiTGludXggVGVzdCBQcm9qZWN0IgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGpvaW50IHByb2plY3Qgd2l0aCBTR0ksIElCTSwgT1NETCwgYW5kIEJ1bGwgd2l0aCBhIGdvYWwgdG8gZGVsaXZlciB0ZXN0IHN1aXRlcyB0byB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRoYXQgdmFsaWRhdGUgdGhlIHJlbGlhYmlsaXR5LCByb2J1c3RuZXNzLCBhbmQgc3RhYmlsaXR5IG9mIExpbnV4LiBUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgdGVzdGluZyB0aGUgTGludXgga2VybmVsIGFuZCByZWxhdGVkIGZlYXR1cmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHAuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsgJiBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvcnVuX2ZyZWV6ZXIuc2g7YmVnaW5saW5lPTU7ZW5kbGluZT0xNzttZDU9ODZhNjFkMmMwNDJkNTk4MzZmZmIzNTNhMjE0NTY0OTggXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvbWVtb3J5X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvY3B1X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvQ09QWUlORzttZDU9NDhiMWM1ZWM2MzNlM2UzMGVjMmNmODg0YWU2OTk5NDcgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMvcmVhbHRpbWUvQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAorICAgIGZpbGU6Ly90b29scy9wb3VuZGVyMjEvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgIGZpbGU6Ly91dGlscy9iZW5jaG1hcmsva2VybmJlbmNoLTAuNDIvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgIGZpbGU6Ly91dGlscy9mZnNiLTYuMC1yYzIvQ09QWUlORzttZDU9YzQ2MDgyMTY3YTMxNGQ3ODVkMDEyYTI0NDc0OGQ4MDMgXAorIgorCitERVBFTkRTID0gImF0dHIgbGliYWlvIGxpYmNhcCBhY2wgb3BlbnNzbCB6aXAtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiIExJQkM9bXVzbCAiCitDRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCitDRkxBR1NfYXBwZW5kX21pcHNhcmNobjY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK1NSQ1JFViA9ICIxODkxNmEyZTZkOGM5OTdiN2IyOWRjZmE5NTUwZDVhMTViMjJlZDIyIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQtX0dOVV9TT1VSQ0UtdG8tcGVjX2xpc3RlbmVyLmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWtub2ItdG8tY29udHJvbC10aXJwYy1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1maXgtX19XT1JEU0laRS11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1maXgtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1tc2didWYtZXJyb3ItYnVpbGRpbmctd2l0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtcmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWdldGRlbnRzLWRlZmluZS1nZXRkZW50cy1nZXRkZW50czY0LW9ubHktZm9yLWdsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtcHRyYWNlLVVzZS1pbnQtaW5zdGVhZC1vZi1lbnVtLV9fcHRyYWNlX3JlcXVlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1ydF9zaWdhY3Rpb24tcnRfc2lncHJvY21hcmstRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtbWNfZ2V0aG9zdC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtY3Jhc2gwMS1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLWxpYi1Vc2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUtaW4tcGxhY2Utb2YtUFRIUkVBRF8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMy1zaG1hdDEtQ292ZXItR05VLXNwZWNpZmljLWNvZGUtdW5kZXItX19VU0VfR05VLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzQtcGVyaW9kaWNfb3V0cHV0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzUtZml4LXRlc3RfcHJvY19raWxsLWhhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNi10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM4LWNvbW1hbmRzLWdkYjAxLXJlcGxhY2Utc3RkaW4td2l0aC1kZXYtbnVsbC5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitleHBvcnQgcHJlZml4ID0gIi9vcHQvbHRwIgorZXhwb3J0IGV4ZWNfcHJlZml4ID0gIi9vcHQvbHRwIgorCitQQUNLQUdFQ09ORklHW251bWFdID0gIi0td2l0aC1udW1hLCAtLXdpdGhvdXQtbnVtYSwgbnVtYWN0bCwiCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L3Rlc3RjYXNlcy9yZWFsdGltZS9tNCIKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLXBvd2VyLW1hbmFnZW1lbnQtdGVzdHN1aXRlIC0td2l0aC1yZWFsdGltZS10ZXN0c3VpdGUgIgorIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCitFWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgorCitkb19pbnN0YWxsKCl7CisgICAgaW5zdGFsbCAtZCAke0R9L29wdC9sdHAvCisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gU0tJUF9JRENIRUNLPTEgaW5zdGFsbAorCisgICAgIyBmaXh1cCBub3QgZGVwbG95IFNUUGZhaWx1cmVfcmVwb3J0LnBsIHRvIGF2b2lkIGNvbmZ1c2luZyBhYm91dCBpdCBmYWlscyB0byBydW4KKyAgICAjIGFzIGl0IGxhY2tzIGRlcGVuZGVuY3kgb24gc29tZSBwZXJsIG1vdWRsZSBzdWNoIGFzIExXUDo6U2ltcGxlCisgICAgIyBBbmQgdGhpcyBzY3JpcHQgcHJldmlvdXNseSB3b3JrcyBhcyBhIHRvb2wgZm9yIGFuYWx5emluZyBmYWlsdXJlcyBmcm9tIExUUAorICAgICMgcnVucyBvbiB0aGUgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtIChTVFApIGFuZCBpdCBtYWlubHkgYWNjZXNzZXMKKyAgICAjIGh0dHA6Ly9raGFjay5vc2RsLm9yZyB0byByZXRyaWV2ZSBsdHAgdGVzdCByZXN1bHRzIHJ1biBvbgorICAgICMgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtLCBidXQgbm93IGh0dHA6Ly9raGFjay5vc2RsLm9yZyB1bmFjY2Vzc2libGUKKyAgICBybSAtcmYgJHtEfS9vcHQvbHRwL2Jpbi9TVFBmYWlsdXJlX3JlcG9ydC5wbAorCisgICAgIyBDb3B5IFBPU0lYIHRlc3Qgc3VpdGUgaW50byAke0R9L29wdC9sdHAvdGVzdGNhc2VzIGJ5IG1hbnVhbAorICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9L29wdC9sdHAvdGVzdGNhc2VzCit9CisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICBhY2wgXAorICAgIGF0IFwKKyAgICBhdHRyIFwKKyAgICBiYXNoIFwKKyAgICBjcGlvIFwKKyAgICBjcm9uaWUgXAorICAgIGN1cmwgXAorICAgIGUyZnNwcm9ncy1ta2UyZnMgXAorICAgIGV4cGVjdCBcCisgICAgZ2F3ayBcCisgICAgZ3ppcCBcCisgICAgaXByb3V0ZTIgXAorICAgIGxkZCBcCisgICAgbGliYWlvIFwKKyAgICBsb2dyb3RhdGUgXAorICAgIHBlcmwgXAorICAgIHB5dGhvbi1jb3JlIFwKKyAgICB1bnppcCBcCisgICAgdXRpbC1saW51eCBcCisgICAgd2hpY2ggXAorIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIi9vcHQvbHRwL2xpYi9saWJtZW0uYSAvb3B0L2x0cC90ZXN0Y2FzZXMvZGF0YS9ubTAxL2xpYi5hIgorCitGSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIgorCisjIEF2b2lkIGdlbmVyYXRlZCBiaW5hcmllcyBzdHJpcHBpbmcuIE90aGVyd2lzZSBzb21lIG9mIHRoZSBsdHAgdGVzdHMgc3VjaCBhcyBsZGQwMSAmIG5tMDEgZmFpbHMKK0lOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCisjIEhvd2V2ZXIsIHRlc3RfYXJjaF9zdHJpcHBlZCBpcyBhbHJlYWR5IHN0cmlwcGVkLCBzby4uLgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImFscmVhZHktc3RyaXBwZWQiCisKKyMgQXZvaWQgZmlsZSBkZXBlbmRlbmN5IHNjYW5zLCBhcyBMVFAgY2hlY2tzIGZvciB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdAorIyBleGlzdCBvbiB0aGUgcnVubmluZyBzeXN0ZW0uICBGb3IgaW5zdGFuY2UgaXQgaGFzIHNwZWNpZmljIGNoZWNrcyBmb3IKKyMgY3NoIGFuZCBrc2ggd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgcGFydCBvZiBPcGVuRW1iZWRkZWQgc3lzdGVtcyAoYnV0CisjIGNhbiBiZSBhZGRlZCB2aWEgYWRkaXRpb25hbCBsYXllcnMuKQorU0tJUF9GSUxFREVQU18ke1BOfSA9ICcxJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxZGM4Y2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiTG9zc2xlc3MgZGF0YSBjb21wcmVzc29yIGJhc2VkIG9uIHRoZSBMWk1BIGFsZ29yaXRobSIKLUhPTUVQQUdFID0gImh0dHA6Ly9semlwLm5vbmdudS5vcmcvbHppcC5odG1sIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NmQ2ZTMwMGZmZDhmYjlkMThiZDliMTM2YTliYmExMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kZWNvZGVyLmNjO2JlZ2lubGluZT0zO2VuZGxpbmU9MTY7bWQ1PWRiMDlmZTNmOTU3M2Y5NGQwMDc2ZjdmMDc5NTllNmUxIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vbHppcC9semlwLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM4Mzg1Njc0NjBjZTRhMTAxNDNkZTRiY2NjNjRmZTFjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3Zjk4ODJhMTA0YWIwNTUzMmY0NjdhN2I4ZjRkZGJiODk4ZmEyZjFlOGQ5ZDQ2ODU1NmQ2YzJkMDRkYjE0ZGQiCi0KLUNPTkZJR1VSRU9QVFMgPSAiXAotICAgICctLXNyY2Rpcj0ke1N9JyBcCi0gICAgJy0tcHJlZml4PSR7cHJlZml4fScgXAotICAgICctLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9JyBcCi0gICAgJy0tYmluZGlyPSR7YmluZGlyfScgXAotICAgICctLWRhdGFkaXI9JHtkYXRhZGlyfScgXAotICAgICctLWluZm9kaXI9JHtpbmZvZGlyfScgXAotICAgICctLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfScgXAotICAgICdDWFg9JHtDWFh9JyBcCi0gICAgJ0NQUEZMQUdTPSR7Q1BQRkxBR1N9JyBcCi0gICAgJ0NYWEZMQUdTPSR7Q1hYRkxBR1N9JyBcCi0gICAgJ0xERkxBR1M9JHtMREZMQUdTfScgXAotIgotRVhUUkFfT0VNQUtFID0gIiIKLQotQiA9ICIke1N9L29iaiIKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfQotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLSAgICAjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgotICAgIGlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgotICAgICAgICBybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKLSAgICBmaQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x6aXAvbHppcF8xLjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTliMzY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOS5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkxvc3NsZXNzIGRhdGEgY29tcHJlc3NvciBiYXNlZCBvbiB0aGUgTFpNQSBhbGdvcml0aG0iCitIT01FUEFHRSA9ICJodHRwOi8vbHppcC5ub25nbnUub3JnL2x6aXAuaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzZkNmUzMDBmZmQ4ZmI5ZDE4YmQ5YjEzNmE5YmJhMTMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGVjb2Rlci5jYztiZWdpbmxpbmU9MztlbmRsaW5lPTE2O21kNT1kYjA5ZmUzZjk1NzNmOTRkMDA3NmY3ZjA3OTU5ZTZlMSIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2x6aXAvbHppcC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZGQ4NzkwZDc1Mjg0NDBkMDM0ZmM3MTNhODY4MGJkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZmFkYzRmNTZiZTFiYzBkM2FlMTU1ZWM0NTI3YmQwMDMxMzNiZGM3MDNhNzUzYjJjYzY4M2Y2MTBlNjQ2YmE5IgorCitDT05GSUdVUkVPUFRTID0gIlwKKyAgICAnLS1zcmNkaXI9JHtTfScgXAorICAgICctLXByZWZpeD0ke3ByZWZpeH0nIFwKKyAgICAnLS1leGVjLXByZWZpeD0ke2V4ZWNfcHJlZml4fScgXAorICAgICctLWJpbmRpcj0ke2JpbmRpcn0nIFwKKyAgICAnLS1kYXRhZGlyPSR7ZGF0YWRpcn0nIFwKKyAgICAnLS1pbmZvZGlyPSR7aW5mb2Rpcn0nIFwKKyAgICAnLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKKyAgICAnQ1hYPSR7Q1hYfScgXAorICAgICdDUFBGTEFHUz0ke0NQUEZMQUdTfScgXAorICAgICdDWFhGTEFHUz0ke0NYWEZMQUdTfScgXAorICAgICdMREZMQUdTPSR7TERGTEFHU30nIFwKKyIKK0VYVFJBX09FTUFLRSA9ICIiCisKK0IgPSAiJHtTfS9vYmoiCitkb19jb25maWd1cmUgKCkgeworICAgICR7U30vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30KK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisgICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KKyAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCisgICAgZmkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9tYWlseF8xMi41LTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRkNzEwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAibWFpbHggaXMgdGhlIHRyYWRpdGlvbmFsIGNvbW1hbmQtbGluZS1tb2RlIG1haWwgdXNlciBhZ2VudCIKLQotREVTQ1JJUFRJT04gPSAiTWFpbHggaXMgZGVyaXZlZCBmcm9tIEJlcmtlbGV5IE1haWwgYW5kIGlzIGludGVuZGVkIHByb3ZpZGUgdGhlIFwKLWZ1bmN0aW9uYWxpdHkgb2YgdGhlIFBPU0lYIG1haWx4IGNvbW1hbmQgd2l0aCBhZGRpdGlvbmFsIHN1cHBvcnQgXAotZm9yIE1JTUUsIElNQVAsIFBPUDMsIFNNVFAsIGFuZCBTL01JTUUuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vaGVpcmxvb20uc291cmNlZm9yZ2UubmV0L21haWx4Lmh0bWwiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiQlNEICYgTVBMLTEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MjAyYTBhNjI5MTBjZjk0ZjdhZjhhMzQzNmEyYTJkZCIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNzI4VDA0MzQ0M1ovcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS5vcmlnLnRhci5nejtuYW1lPWFyY2hpdmUgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1yZXVzZS13ZWFrLXN5bWJvbC1vcHRvcHQtdG8tZml4LUZUQkZTLW9uLW1pcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1QYXRjaGVkLW91dC1TU0wyLXN1cHBvcnQtc2luY2UtaXQtaXMtbm8tbG9uZ2VyLXN1cHBvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtRml4ZWQtTGludGlhbi13YXJuaW5nLXdhcm5pbmctbWFjcm8tTi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLW91dG9mLUludHJvZHVjZS1leHBhbmRhZGRyLWZsYWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi11bnBhY2stRGlzYWJsZS1vcHRpb24tcHJvY2Vzc2luZy1mb3ItZW1haWwtYWRkcmVzc2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtZmlvLmMtVW5jb25kaXRpb25hbGx5LXJlcXVpcmUtd29yZGV4cC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtZ2xvYm5hbWUtSW52b2tlLXdvcmRleHAtd2l0aC1XUkRFX05PQ01ELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtdXNyLXNiaW4tc2VuZG1haWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXhwbGljaXRseS5kaXNhYmxlLmtyYjUuc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyOWE2MDMzZWYxNDEyODI0ZDAyZWI5ZDkyMTNjYjFmMiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjAxNWJhNDIwOTEzNTg2N2YzN2EwMjQ1ZDIyMjM1YTM5MmI4YmJlZDk1NjkxMzI4NmI4ODdjMmUyYTlhNDIxYWQiCi0KLSMgZm9yIHRoaXMgcGFja2FnZSB3ZSdyZSBtb3N0bHkgaW50ZXJlc3RlZCBpbiB0cmFja2luZyBkZWJpYW4gcGF0Y2hlcywKLSMgYW5kIG5vdCBpbiB0aGUgdXBzdHJlYW0gdmVyc2lvbiB3aGVyZSBhbGwgZGV2ZWxvcG1lbnQgaGFzIGVmZmVjdGl2ZWx5IHN0b3BwZWQKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vaC9oZWlybG9vbS1tYWlseC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj4oKFxkK1wuKikrKS0oKFxkK1wuKikrKSlcLihkaWZmfGRlYmlhblwudGFyKVwuKGd6fHh6KSIKLQotUyA9ICIke1dPUktESVJ9L2hlaXJsb29tLW1haWx4LTEyLjUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1DRkxBR1NfYXBwZW5kID0gIiAtRF9CU0RfU09VUkNFIC1EREVCSUFOIC1JJHtTfS9FWFQiCi0KLSMgIlNUUklQPXRydWUiIG1lYW5zIHRoYXQgJ3RydWUnIGNvbW1hbmQgd2lsbCBiZSB1c2VkIHRvICdzdHJpcCcgZmlsZXMgd2hpY2ggd2lsbCBhY2hpZXZlIHRoZSBlZmZlY3Qgb2Ygbm90IHN0cmlwcGluZyB0aGVtCi0jIG1haWx4J3MgTWFrZWZpbGUgZG9lc24ndCBhbGxvdyBhIG1vcmUgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBhdm9pZCBzdHJpcHBpbmcKLUVYVFJBX09FTUFLRSA9ICJTRU5ETUFJTD0ke3NiaW5kaXJ9L3NlbmRtYWlsIElQdjY9LURIQVZFX0lQdjZfRlVOQ1MgUFJFRklYPS91c3IgVUNCSU5TVEFMTD0vdXNyL2Jpbi9pbnN0YWxsIFNUUklQPXRydWUiCi0KLSMgVGhlIG1ha2Vjb25maWcgY2FuJ3QgcnVuIHBhcmFsbGVsbHksIG90aGVyd2lzZSB0aGUgY2hlY2tpbmcgcmVzdWx0cwotIyBtaWdodCBiZSBpbmNvcnJlY3QgYW5kIGxlYWQgdG8gZXJyb3JzOgotIyBmaW8uYzo1NjoxNzogZmF0YWwgZXJyb3I6IHNzbC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0jICNpbmNsdWRlIDxzc2wuaD4KLVBBUkFMTEVMX01BS0UgPSAiIgotCi0jIENhdXNlcyBnY2MgdG8gZ2V0IHN0dWNrIGFuZCBlYXQgYWxsIGF2YWlsYWJsZSBtZW1vcnkgaW4gcWVtdWFybSBidWlsZHMKLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg4LwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMDkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZmMyMWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMDkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT04ZjJhM2Q0MzA1N2Q0NThlNTA2NjcxNDk4MDU2N2E2MCIKLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjllM2M3YjEyYTVmZWNkYTlhNzE3YTRiY2MwYWUzYTY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmYWMzMjRjZWZjZTBmYmZhZTBkZjZjMDZlZjNmNmQ2YWI1MjI3YjlhYWQyYTk0Zjg2NTdhMGUzOTAxZjkxODUiCi0KLVJERVBFTkRTXyR7UE59ID0gIm1hbiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLSMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZwotRklMRVNfJHtQTn0tZG9jID0gIiIKLUZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwNzdhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjExLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiTGludXggbWFuLXBhZ2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0IGRvY3VtZW50cyB0aGUgTGludXgga2VybmVsIGFuZCBDIGxpYnJhcnkgaW50ZXJmYWNlcyB0aGF0IGFyZSBlbXBsb3llZCBieSB1c2VyIHByb2dyYW1zIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9kb2NzL21hbi1wYWdlcyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PThmMmEzZDQzMDU3ZDQ1OGU1MDY2NzE0OTgwNTY3YTYwIgorU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RvY3MvJHtCUE59L0FyY2hpdmUvJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDA4MzAwZWQwOWQxYWQ1OTM4MDcwMTU4YjIxZGExZDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTZkYjkxYTI0ZTY4YzdjNzY1YjdiOGU2MGYxNTkxZWQxMDQ5YmMyZGMzMTQzZGI3NzllYWU0ODM4Yjg5ZDE5NSIKKworUkRFUEVORFNfJHtQTn0gPSAibWFuIgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCitGSUxFU18ke1BOfS1kb2MgPSAiIgorRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMi1UaWNrZXQtMzY5Ny10dHlfaW5pdC11bmlmeS1jdXJzZXMtaW5pdGlhbGl6YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU0ZDRkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMi1UaWNrZXQtMzY5Ny10dHlfaW5pdC11bmlmeS1jdXJzZXMtaW5pdGlhbGl6YXRpb24ucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSA0ZDQ2YTEwODYyOWJlYjY2YTI5MzY3MmRiN2I0NGY4NjNiNjU5OGJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhvbWFzIERpY2tleSA8ZGlja2V5QGhpcy5jb20+CitEYXRlOiBGcmksIDE0IEFwciAyMDE3IDE0OjA2OjEzICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFRpY2tldCAjMzY5NzogKHR0eV9pbml0KTogdW5pZnkgY3Vyc2VzIGluaXRpYWxpemF0aW9uCisKKy4uLmZvciB2YXJpb3VzIGN1cnNlcyBpbXBsZW1lbnRhdGlvbnMuCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJldyBCb3JvZGluIDxhYm9yb2RpbkB2bWFpbC5ydT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL01pZG5pZ2h0Q29tbWFuZGVyL21jLmdpdF0KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBsaWIvdHR5L3R0eS1uY3Vyc2VzLmMgfCAyNiArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3R0eS90dHktbmN1cnNlcy5jIGIvbGliL3R0eS90dHktbmN1cnNlcy5jCitpbmRleCBhN2ExMWYzLi44ZTY5YjM5IDEwMDY0NAorLS0tIGEvbGliL3R0eS90dHktbmN1cnNlcy5jCisrKysgYi9saWIvdHR5L3R0eS1uY3Vyc2VzLmMKK0BAIC0xNzksNiArMTc5LDggQEAgbWNfdHR5X25vcm1hbGl6ZV9saW5lc19jaGFyIChjb25zdCBjaGFyICpjaCkKKyB2b2lkCisgdHR5X2luaXQgKGdib29sZWFuIG1vdXNlX2VuYWJsZSwgZ2Jvb2xlYW4gaXNfeHRlcm0pCisgeworKyAgICBzdHJ1Y3QgdGVybWlvcyBtb2RlOworKworICAgICBpbml0c2NyICgpOworIAorICNpZmRlZiBIQVZFX0VTQ0RFTEFZCitAQCAtMTk0LDI1ICsxOTYsMTUgQEAgdHR5X2luaXQgKGdib29sZWFuIG1vdXNlX2VuYWJsZSwgZ2Jvb2xlYW4gaXNfeHRlcm0pCisgICAgIEVTQ0RFTEFZID0gMjAwOworICNlbmRpZiAvKiBIQVZFX0VTQ0RFTEFZICovCisgCistI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgorKyAgICB0Y2dldGF0dHIgKFNURElOX0ZJTEVOTywgJm1vZGUpOworICAgICAvKiB1c2UgQ3RybC1nIHRvIGdlbmVyYXRlIFNJR0lOVCAqLworLSAgICBjdXJfdGVybS0+TnR0eWIuY19jY1tWSU5UUl0gPSBDVFJMICgnZycpOyAgIC8qIF5nICovCisrICAgIG1vZGUuY19jY1tWSU5UUl0gPSBDVFJMICgnZycpOyAgLyogXmcgKi8KKyAgICAgLyogZGlzYWJsZSBTSUdRVUlUIHRvIGFsbG93IHVzZSBDdHJsLVwga2V5ICovCistICAgIGN1cl90ZXJtLT5OdHR5Yi5jX2NjW1ZRVUlUXSA9IE5VTExfVkFMVUU7CistICAgIHRjc2V0YXR0ciAoY3VyX3Rlcm0tPkZpbGVkZXMsIFRDU0FOT1csICZjdXJfdGVybS0+TnR0eWIpOworLSNlbHNlCistICAgIC8qIG90aGVyIGN1cnNlcyBpbXBsZW1lbnRhdGlvbiAoYnNkIGN1cnNlcywgLi4uKSAqLworLSAgICB7CistICAgICAgICBzdHJ1Y3QgdGVybWlvcyBtb2RlOworLQorLSAgICAgICAgdGNnZXRhdHRyIChTVERJTl9GSUxFTk8sICZtb2RlKTsKKy0gICAgICAgIC8qIHVzZSBDdHJsLWcgdG8gZ2VuZXJhdGUgU0lHSU5UICovCistICAgICAgICBtb2RlLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgIC8qIF5nICovCistICAgICAgICAvKiBkaXNhYmxlIFNJR1FVSVQgdG8gYWxsb3cgdXNlIEN0cmwtXCBrZXkgKi8KKy0gICAgICAgIG1vZGUuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOworLSAgICAgICAgdGNzZXRhdHRyIChTVERJTl9GSUxFTk8sIFRDU0FOT1csICZtb2RlKTsKKy0gICAgfQorLSNlbmRpZiAvKiBOQ1VSU0VTX1ZFUlNJT04gKi8KKysgICAgbW9kZS5jX2NjW1ZRVUlUXSA9IE5VTExfVkFMVUU7CisrICAgIHRjc2V0YXR0ciAoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmbW9kZSk7CisrCisrICAgIC8qIGN1cnNlcyByZW1lbWJlcnMgdGhlICJpbi1wcm9ncmFtIiBtb2RlcyBhZnRlciB0aGlzIGNhbGwgKi8KKysgICAgZGVmX3Byb2dfbW9kZSAoKTsKKyAKKyAgICAgdHR5X3N0YXJ0X2ludGVycnVwdF9rZXkgKCk7CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZjNmNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIk1pZG5pZ2h0IENvbW1hbmRlciBpcyBhbiBuY3Vyc2VzIGJhc2VkIGZpbGUgbWFuYWdlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1jLXJlcGxhY2UtcGVybC13LXdpdGgtdXNlLXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNjNTZmMGM5YWJkNjNjNGNhYTM2MzZiYmEzYTA4YmZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViNTkxZTEwZGNiZWE5NTIzMzQzNGRhNDBjZGFkNDY2M2QzNjAyMjlhZGY4OTgyNjU3NmMzMTk2NjdjMTAzY2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLSMKLSMgQm90aCBTYW1iYSAoc21iKSBhbmQgc2Z0cCByZXF1aXJlIHBhY2thZ2UgZGVsaXZlcmVkIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQKLSMKLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtdmZzLXNtYiwtLWRpc2FibGUtdmZzLXNtYixzYW1iYSwiCi1QQUNLQUdFQ09ORklHW3NmdHBdID0gIi0tZW5hYmxlLXZmcy1zZnRwLC0tZGlzYWJsZS12ZnMtc2Z0cCxsaWJzc2gyLCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1zY3JlZW49bmN1cnNlcyAtLXdpdGhvdXQtZ3BtLW1vdXNlIC0td2l0aG91dC14IgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCi0Jc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLCMhJHtiaW5kaXJ9L2VudiBweXRob24sJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKLX0KLQotUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMtcHl0aG9uICR7QlBOfS1oZWxwZXJzICR7QlBOfS1maXNoIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFBlcmwtYmFzZWQgaGVscGVyIHNjcmlwdHMiCi1GSUxFU18ke0JQTn0taGVscGVycy1wZXJsID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYXB0KyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWIgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViZCAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZHBrZysgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvbWFpbGZzICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9wYXRjaGZzIFwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9ycG1zKyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdWxpYiBcIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvdXppcCIKLVJERVBFTkRTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAicGVybCIKLQotU1VNTUFSWV8ke0JQTn0taGVscGVycy1weXRob24gPSAiTWlkbmlnaHQgQ29tbWFuZGVyIFB5dGhvbi1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzLXB5dGhvbiA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvczMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEiCi1SREVQRU5EU18ke0JQTn0taGVscGVycy1weXRob24gPSAicHl0aG9uIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKLQotU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgotRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2ExNTZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTkuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZjQyM2Y1YjZmODBhMWE1YTVmYzUzYjgzMjRjYWI3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMGRkZGZhZTcxNDlmYWM5MDNmNzRlZjU1Y2ZjYjJhMTk4ZTBmNzAwNDM0NmM3YmRlZDQzNjY5ZDYxYmE0MzZmIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCisjCisjIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCisjCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgorUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgorICAgICAgICAKKyAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKK30KKworUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgorUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKKworU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgorRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLVVzZS1DQy10by1jaGVjay1mb3ItaW1wbGljaXQtZmFsbHRocm91Z2gtd2FybmluZy1zdXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtVXNlLUNDLXRvLWNoZWNrLWZvci1pbXBsaWNpdC1mYWxsdGhyb3VnaC13YXJuaW5nLXN1cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGI3YjhhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLVVzZS1DQy10by1jaGVjay1mb3ItaW1wbGljaXQtZmFsbHRocm91Z2gtd2FybmluZy1zdXAucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBhMTI5ZWU2ZDgwZjNiMmNkYTBkODI3YzM1ZmE4MWE1MTdjZjZkNTA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTMgT2N0IDIwMTcgMTA6Mjc6MzQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIENDIHRvIGNoZWNrIGZvciBpbXBsaWNpdC1mYWxsdGhyb3VnaCB3YXJuaW5nIHN1cHBvcnQKKworVGhpcyB3YXJuaW5nIGl0IG5ldyBpbiBnY2M3IGFuZCBpbiBjcm9zcyBjb21waWxlIGNhc2UKK2l0cyBwb3NzaWJsZSB0aGF0IGJ1aWxkIGhvc3QgZ2NjIGlzIHZlcnNpb24gNysgYnV0IHRoZQorY3Jvc3MgY29tcGlsZSB1c2VkIGZvciBjb21waWxpbmcgbWRhZG0gaXMgPCB2ZXJzaW9uIDcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBkMjA3ZWU0Li45NzFmMjU1IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNDgsNyArNDgsNyBAQCBpZmRlZiBXQVJOX1VOVVNFRAorIENXRkxBR1MgKz0gLVdwLC1EX0ZPUlRJRllfU09VUkNFPTIgLU8zCisgZW5kaWYKKyAKKy1GQUxMVEhST1VHSCA6PSAkKHNoZWxsIGdjYyAtdiAtLWhlbHAgMj4mMSB8IGdyZXAgImltcGxpY2l0LWZhbGx0aHJvdWdoIiB8IHdjIC1sKQorK0ZBTExUSFJPVUdIIDo9ICQoc2hlbGwgJHtDQ30gLXYgLS1oZWxwIDI+JjEgfCBncmVwICJpbXBsaWNpdC1mYWxsdGhyb3VnaCIgfCB3YyAtbCkKKyBpZm5lcSAiJChGQUxMVEhST1VHSCkiICAiMCIKKyBDV0ZMQUdTICs9IC1XaW1wbGljaXQtZmFsbHRocm91Z2g9MAorIGVuZGlmCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtbWRhZG0tQWRkLVdpbXBsaWNpdC1mYWxsdGhyb3VnaC0wLWluLU1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLW1kYWRtLUFkZC1XaW1wbGljaXQtZmFsbHRocm91Z2gtMC1pbi1NYWtlZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTE1MTcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLW1kYWRtLUFkZC1XaW1wbGljaXQtZmFsbHRocm91Z2gtMC1pbi1NYWtlZmlsZS5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIGFhMDlhZjBmZTJlYzA3MzdmYTA0ZmZkMDA5NTc1MzI2ODRlMjU3YjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMTk6NTU6NDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIG1kYWRtOiBBZGQgV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTAgaW4gTWFrZWZpbGUKKworVGhlcmUgYXJlIG1hbnkgZXJyb3JzIGxpa2UgJ2Vycm9yOiB0aGlzIHN0YXRlbWVudCBtYXkgZmFsbCB0aHJvdWdoJy4KK0J1dCB0aGUgbG9naWMgaXMgcmlnaHQuIFNvIGFkZCB0aGUgZmxhZyBXaW1wbGljaXQtZmFsbHRocm91Z2g9MAordG8gZGlzYWJsZSB0aGUgZXJyb3IgbWVzc2FnZXMuIFRoZSBtZXRob2QgSSB1c2UgaXMgZnJvbQoraHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9XYXJuaW5nLU9wdGlvbnMuaHRtbAorI2luZGV4LVdpbXBsaWNpdC1mYWxsdGhyb3VnaC0zNzUKKworU2lnbmVkLW9mZi1ieTogWGlhbyBOaSA8eG5pQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKZXMgU29yZW5zZW4gPEplcy5Tb3JlbnNlbkBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKyBNYWtlZmlsZSB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAwZjMwN2VjLi5lMWE3MDU4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNDgsNiArNDgsMTEgQEAgaWZkZWYgV0FSTl9VTlVTRUQKKyBDV0ZMQUdTICs9IC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1PMworIGVuZGlmCisgCisrRkFMTFRIUk9VR0ggOj0gJChzaGVsbCBnY2MgLXYgLS1oZWxwIDI+JjEgfCBncmVwICJpbXBsaWNpdC1mYWxsdGhyb3VnaCIgfCB3YyAtbCkKKytpZm5lcSAiJChGQUxMVEhST1VHSCkiICAiMCIKKytDV0ZMQUdTICs9IC1XaW1wbGljaXQtZmFsbHRocm91Z2g9MAorK2VuZGlmCisrCisgaWZkZWYgREVCSUFOCisgQ1BQRkxBR1MgKz0gLURERUJJQU4KKyBlbmRpZgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAyLW1kYWRtLVNwZWNpZnktZW5vdWdoLWxlbmd0aC13aGVuLXdyaXRlLXRvLWJ1ZmZlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMi1tZGFkbS1TcGVjaWZ5LWVub3VnaC1sZW5ndGgtd2hlbi13cml0ZS10by1idWZmZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjZTA1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMi1tZGFkbS1TcGVjaWZ5LWVub3VnaC1sZW5ndGgtd2hlbi13cml0ZS10by1idWZmZXIucGF0Y2gKQEAgLTAsMCArMSw3NSBAQAorRnJvbSBiYjRkZjI3MzA0MWJhMjA2MDA4YmRiMGFkYTc1Y2NkOTdjMjlmNjIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWGlhbyBOaSA8eG5pQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDE3IE1hciAyMDE3IDE5OjU1OjQzICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSBtZGFkbTogU3BlY2lmeSBlbm91Z2ggbGVuZ3RoIHdoZW4gd3JpdGUgdG8gYnVmZmVyCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0luIERldGFpbC5jIHRoZSBidWZmZXIgcGF0aCBpbiBmdW5jdGlvbiBEZXRhaWwgaXMgZGVmaW5lZCBhcyBwYXRoWzIwMF0sCitpbiBmYWN0IHRoZSBtYXggbGVudGggb2YgY29udGVudCB3aGljaCBuZWVkcyB0byB3cml0ZSB0byB0aGUgYnVmZmVyIGlzCisyODcuIEJlY2F1c2UgdGhlIGxlbmd0aCBvZiBkbmFtZSBvZiBzdHJ1Y3QgZGlyZW50IGlzIDI1NS4KK0R1cmluZyBidWlsZGluZyBpdCByZXBvcnRzIGVycm9yOgorZXJyb3I6IOKAmCVz4oCZIGRpcmVjdGl2ZSB3cml0aW5nIHVwIHRvIDI1NSBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgMTg5CitbLVdlcnJvcj1mb3JtYXQtb3ZlcmZsb3c9XQorCitJbiBmdW5jdGlvbiBleGFtaW5lX3N1cGVyMCB0aGVyZSBpcyBhIGJ1ZmZlciBuYiB3aXRoIGxlbmd0aCA1LgorQnV0IGl0IG5lZWQgdG8gc2hvdyBhIGludCB0eXBlIGFyZ3VtZW50LiBUaGUgbGVuZ2h0IG9mIG1heAorbnVtYmVyIG9mIGludCBpcyAxMC4gU28gdGhlIGJ1ZmZlciBsZW5ndGggc2hvdWxkIGJlIDExLgorCitJbiBodW1hbl9zaXplIGZ1bmN0aW9uIHRoZSBsZW5ndGggb2YgYnVmIGlzIDMwLiBEdXJpbmcgYnVpbGRpbmcKK3RoZXJlIGlzIGEgZXJyb3I6CitvdXRwdXQgYmV0d2VlbiAyMCBhbmQgNDcgYnl0ZXMgaW50byBhIGRlc3RpbmF0aW9uIG9mIHNpemUgMzAuCitDaGFuZ2UgdGhlIGxlbmd0aCB0byA0Ny4KKworU2lnbmVkLW9mZi1ieTogWGlhbyBOaSA8eG5pQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKZXMgU29yZW5zZW4gPEplcy5Tb3JlbnNlbkBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKyBEZXRhaWwuYyB8IDIgKy0KKyBzdXBlcjAuYyB8IDIgKy0KKyB1dGlsLmMgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0RldGFpbC5jIGIvRGV0YWlsLmMKK2luZGV4IDUwOWIwZDQuLmNiMzM3OTQgMTAwNjQ0CistLS0gYS9EZXRhaWwuYworKysrIGIvRGV0YWlsLmMKK0BAIC01NzUsNyArNTc1LDcgQEAgVGhpcyBpcyBwcmV0dHkgYm9yaW5nCisgCQkJcHJpbnRmKCIgIE1lbWJlciBBcnJheXMgOiIpOworIAorIAkJCXdoaWxlIChkaXIgJiYgKGRlID0gcmVhZGRpcihkaXIpKSAhPSBOVUxMKSB7CistCQkJCWNoYXIgcGF0aFsyMDBdOworKwkJCQljaGFyIHBhdGhbMjg3XTsKKyAJCQkJY2hhciB2YnVmWzEwMjRdOworIAkJCQlpbnQgbmxlbiA9IHN0cmxlbihzcmEtPnN5c19uYW1lKTsKKyAJCQkJZGV2X3QgZGV2aWQ7CitkaWZmIC0tZ2l0IGEvc3VwZXIwLmMgYi9zdXBlcjAuYworaW5kZXggOTM4Y2ZkOS4uZjViNDUwNyAxMDA2NDQKKy0tLSBhL3N1cGVyMC5jCisrKysgYi9zdXBlcjAuYworQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCBleGFtaW5lX3N1cGVyMChzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwgY2hhciAqaG9tZWhvc3QpCisgCSAgICAgZCsrKSB7CisgCQltZHBfZGlza190ICpkcDsKKyAJCWNoYXIgKmR2OworLQkJY2hhciBuYls1XTsKKysJCWNoYXIgbmJbMTFdOworIAkJaW50IHdvbmx5LCBmYWlsZmFzdDsKKyAJCWlmIChkPj0wKSBkcCA9ICZzYi0+ZGlza3NbZF07CisgCQllbHNlIGRwID0gJnNiLT50aGlzX2Rpc2s7CitkaWZmIC0tZ2l0IGEvdXRpbC5jIGIvdXRpbC5jCitpbmRleCBmMTAwOTcyLi4zMmJkOTA5IDEwMDY0NAorLS0tIGEvdXRpbC5jCisrKysgYi91dGlsLmMKK0BAIC04MTEsNyArODExLDcgQEAgdW5zaWduZWQgbG9uZyBjYWxjX2NzdW0odm9pZCAqc3VwZXIsIGludCBieXRlcykKKyAjaWZuZGVmIE1EQVNTRU1CTEUKKyBjaGFyICpodW1hbl9zaXplKGxvbmcgbG9uZyBieXRlcykKKyB7CistCXN0YXRpYyBjaGFyIGJ1ZlszMF07CisrCXN0YXRpYyBjaGFyIGJ1Zls0N107CisgCisgCS8qIFdlIGNvbnZlcnQgYnl0ZXMgdG8gZWl0aGVyIGNlbnRpLU17ZWdhLGliaX1ieXRlcyBvcgorIAkgKiBjZW50aS1He2lnaSxpYml9Ynl0ZXMsIHdpdGggYXBwcm9wcmlhdGUgcm91bmRpbmcsCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDMtUmVwbGFjZS1zbnByaW50Zi13aXRoLXN0cm5jcHktYXQtc29tZS1wbGFjZXMtdG8tYXZvaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMy1SZXBsYWNlLXNucHJpbnRmLXdpdGgtc3RybmNweS1hdC1zb21lLXBsYWNlcy10by1hdm9pLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZWM4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDMtUmVwbGFjZS1zbnByaW50Zi13aXRoLXN0cm5jcHktYXQtc29tZS1wbGFjZXMtdG8tYXZvaS5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIGJjODdhZjEzMTQzMjViMDBjNmFjMDAyYTYwYTJiMGYwY2FhODFlMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KK0RhdGU6IFNhdCwgMTggTWFyIDIwMTcgMTA6MzM6NDQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIFJlcGxhY2Ugc25wcmludGYgd2l0aCBzdHJuY3B5IGF0IHNvbWUgcGxhY2VzIHRvIGF2b2lkCisgdHJ1bmNhdGlvbgorCitJbiBnY2M3IHRoZXJlIGFyZSBzb21lIGJ1aWxkaW5nIGVycm9ycyBsaWtlOgorZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIHdyaXRpbmcgdXAgdG8gMzEgYnl0ZXMgaW50byBhIHJlZ2lvbiBvZiBzaXplIDI0CitzbnByaW50ZihzdHIsIE1QQl9TSUdfTEVOLCAlcywgbXBiLT5zaWcpOworCitJdCBqdXN0IG5lZWQgdG8gY29weSBvbmUgc3RyaW5nIHRvIHRhcmdldC4gU28gdXNlIHN0cm5jcHkgdG8gcmVwbGFjZSBpdC4KKworRm9yIHRoaXMgbGluZSBjb2RlOiBzbnByaW50ZihzdHIsIE1QQl9TSUdfTEVOLCAlcywgbXBiLT5zaWcpOworQmVjYXVzZSBtcGItPnNpZyBoYXMgdGhlIGNvbnRlbnQgb2YgdmVyc2lvbiBhZnRlciBtYWdpYywgc28KK2l0J3MgYmV0dGVyIHRvIHVzZSBzdHJuY3B5IHRvIHJlcGxhY2Ugc25wcmludGYgdG9vLgorCitTaWduZWQtb2ZmLWJ5OiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEplcyBTb3JlbnNlbiA8SmVzLlNvcmVuc2VuQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorIHN1cGVyLWludGVsLmMgfCA5ICsrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zdXBlci1pbnRlbC5jIGIvc3VwZXItaW50ZWwuYworaW5kZXggNTdjN2U3NS4uNTQ5OTA5OCAxMDA2NDQKKy0tLSBhL3N1cGVyLWludGVsLmMKKysrKyBiL3N1cGVyLWludGVsLmMKK0BAIC0xODExLDcgKzE4MTEsOCBAQCBzdGF0aWMgdm9pZCBleGFtaW5lX3N1cGVyX2ltc20oc3RydWN0IHN1cGVydHlwZSAqc3QsIGNoYXIgKmhvbWVob3N0KQorIAlfX3UzMiByZXNlcnZlZCA9IGltc21fcmVzZXJ2ZWRfc2VjdG9ycyhzdXBlciwgc3VwZXItPmRpc2tzKTsKKyAJc3RydWN0IGRsICpkbDsKKyAKKy0Jc25wcmludGYoc3RyLCBNUEJfU0lHX0xFTiwgIiVzIiwgbXBiLT5zaWcpOworKwlzdHJuY3B5KHN0ciwgKGNoYXIgKiltcGItPnNpZywgTVBCX1NJR19MRU4pOworKwlzdHJbTVBCX1NJR19MRU4tMV0gPSAnXDAnOworIAlwcmludGYoIiAgICAgICAgICBNYWdpYyA6ICVzXG4iLCBzdHIpOworIAlzbnByaW50ZihzdHIsIHN0cmxlbihNUEJfVkVSU0lPTl9SQUlEMCksICIlcyIsIGdldF9pbXNtX3ZlcnNpb24obXBiKSk7CisgCXByaW50ZigiICAgICAgICBWZXJzaW9uIDogJXNcbiIsIGdldF9pbXNtX3ZlcnNpb24obXBiKSk7CitAQCAtNzE0MiwxNCArNzE0MywxNiBAQCBzdGF0aWMgaW50IHVwZGF0ZV9zdWJhcnJheV9pbXNtKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBjaGFyICpzdWJhcnJheSwKKyAKKyAJCQl1LT50eXBlID0gdXBkYXRlX3JlbmFtZV9hcnJheTsKKyAJCQl1LT5kZXZfaWR4ID0gdm9sOworLQkJCXNucHJpbnRmKChjaGFyICopIHUtPm5hbWUsIE1BWF9SQUlEX1NFUklBTF9MRU4sICIlcyIsIG5hbWUpOworKwkJCXN0cm5jcHkoKGNoYXIgKikgdS0+bmFtZSwgbmFtZSwgTUFYX1JBSURfU0VSSUFMX0xFTik7CisrCQkJdS0+bmFtZVtNQVhfUkFJRF9TRVJJQUxfTEVOLTFdID0gJ1wwJzsKKyAJCQlhcHBlbmRfbWV0YWRhdGFfdXBkYXRlKHN0LCB1LCBzaXplb2YoKnUpKTsKKyAJCX0gZWxzZSB7CisgCQkJc3RydWN0IGltc21fZGV2ICpkZXY7CisgCQkJaW50IGk7CisgCisgCQkJZGV2ID0gZ2V0X2ltc21fZGV2KHN1cGVyLCB2b2wpOworLQkJCXNucHJpbnRmKChjaGFyICopIGRldi0+dm9sdW1lLCBNQVhfUkFJRF9TRVJJQUxfTEVOLCAiJXMiLCBuYW1lKTsKKysJCQlzdHJuY3B5KChjaGFyICopIGRldi0+dm9sdW1lLCBuYW1lLCBNQVhfUkFJRF9TRVJJQUxfTEVOKTsKKysJCQlkZXYtPnZvbHVtZVtNQVhfUkFJRF9TRVJJQUxfTEVOLTFdID0gJ1wwJzsKKyAJCQlmb3IgKGkgPSAwOyBpIDwgbXBiLT5udW1fcmFpZF9kZXZzOyBpKyspIHsKKyAJCQkJZGV2ID0gZ2V0X2ltc21fZGV2KHN1cGVyLCBpKTsKKyAJCQkJaGFuZGxlX21pc3Npbmcoc3VwZXIsIGRldik7CistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDQtbWRhZG0tRm9yY2VkLXR5cGUtY29udmVyc2lvbi10by1hdm9pZC10cnVuY2F0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDA0LW1kYWRtLUZvcmNlZC10eXBlLWNvbnZlcnNpb24tdG8tYXZvaWQtdHJ1bmNhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGZkZTQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDA0LW1kYWRtLUZvcmNlZC10eXBlLWNvbnZlcnNpb24tdG8tYXZvaWQtdHJ1bmNhdGlvbi5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDVkYTg4OTAzMmUyZDk5NzUxZWQ5ZmU2MDAxNjE0NmU5YWU4MTE0Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KK0RhdGU6IFNhdCwgMTggTWFyIDIwMTcgMTA6MzM6NDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIG1kYWRtOiBGb3JjZWQgdHlwZSBjb252ZXJzaW9uIHRvIGF2b2lkIHRydW5jYXRpb24KKworR2NjIHJlcG9ydHMgaXQgbmVlZHMgMTkgYnl0ZXMgdG8gcmlnaHQgdG8gZGlzay0+c2VyaWFsLiBCZWNhdXNlIHRoZQordHlwZSBvZiBhcmd1bWVudCBpIGlzIGludC4gQnV0IHRoZSBtZWFuaW5nIG9mIGkgaXMgZmFpbGVkIGRpc2sKK251bWJlci4gU28gaXQgZG9lc24ndCBuZWVkIHRvIHVzZSAxOSBieXRlcy4gIEp1c3QgYWRkIGEgdHlwZQorY29udmVyc2lvbiB0byBhdm9pZCB0aGlzIGJ1aWxkaW5nIGVycm9yCisKK1NpZ25lZC1vZmYtYnk6IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmVzIFNvcmVuc2VuIDxKZXMuU29yZW5zZW5AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Cisgc3VwZXItaW50ZWwuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N1cGVyLWludGVsLmMgYi9zdXBlci1pbnRlbC5jCitpbmRleCA1NDk5MDk4Li40ZTQ2NmZmIDEwMDY0NAorLS0tIGEvc3VwZXItaW50ZWwuYworKysrIGIvc3VwZXItaW50ZWwuYworQEAgLTUyMjgsNyArNTIyOCw3IEBAIHN0YXRpYyBpbnQgaW5pdF9zdXBlcl9pbXNtX3ZvbHVtZShzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwgbWR1X2FycmF5X2luZm9fdCAqaW5mbywKKyAJCQlkaXNrLT5zdGF0dXMgPSBDT05GSUdVUkVEX0RJU0sgfCBGQUlMRURfRElTSzsKKyAJCQlkaXNrLT5zY3NpX2lkID0gX19jcHVfdG9fbGUzMih+KF9fdTMyKTApOworIAkJCXNucHJpbnRmKChjaGFyICopIGRpc2stPnNlcmlhbCwgTUFYX1JBSURfU0VSSUFMX0xFTiwKKy0JCQkJICJtaXNzaW5nOiVkIiwgaSk7CisrCQkJCSAibWlzc2luZzolZCIsIChfX3U4KWkpOworIAkJfQorIAkJZmluZF9taXNzaW5nKHN1cGVyKTsKKyAJfSBlbHNlIHsKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwNS1BZGQtYS1jb21tZW50LXRvLWluZGljYXRlLXZhbGlkLWZhbGx0aHJvdWdoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDA1LUFkZC1hLWNvbW1lbnQtdG8taW5kaWNhdGUtdmFsaWQtZmFsbHRocm91Z2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q5ZDNiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwNS1BZGQtYS1jb21tZW50LXRvLWluZGljYXRlLXZhbGlkLWZhbGx0aHJvdWdoLnBhdGNoCkBAIC0wLDAgKzEsMTI4IEBACitGcm9tIDA5MDE0MjMzYmYxMDkwMGY3YmQ4MzkwYjNiNjRmZjgyYmNhNDUyMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOSBBcHIgMjAxNyAxMjowNDoxNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDUvNV0gQWRkIGEgY29tbWVudCB0byBpbmRpY2F0ZSB2YWxpZCBmYWxsdGhyb3VnaAorCitnY2M3IHdhcm5zIGFib3V0IGNvZGUgd2l0aCBmYWxsdGhyb3VnaHMsIHRoaXMgcGF0Y2ggYWRkcwordGhlIGNvbW1lbnQgdG8gaW5kaWNhdGUgYSB2YWxpZCBmYWxsdGhyb3VnaCwgaGVscHMgZ2NjNworY29tcGlsZXIgd2FybmluZ3MKKworVGhpcyB3b3JrcyBpbiBjcm9zcyBhbmQgbmF0aXZlIGNvbXBpbGF0aW9uIGNhc2UKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIEdyb3cuYyAgICAgICAgfCA0ICsrKysKKyBiaXRtYXAuYyAgICAgIHwgOCArKysrKysrKworIG1kYWRtLmMgICAgICAgfCAyICsrCisgc3VwZXItaW50ZWwuYyB8IDEgKworIHV0aWwuYyAgICAgICAgfCAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0dyb3cuYyBiL0dyb3cuYworaW5kZXggNDU1YzVmOS4uMjdjNzNiMSAxMDA3NTUKKy0tLSBhL0dyb3cuYworKysrIGIvR3Jvdy5jCitAQCAtMTI1Nyw2ICsxMjU3LDcgQEAgY2hhciAqYW5hbHlzZV9jaGFuZ2UoY2hhciAqZGV2bmFtZSwgc3RydWN0IG1kaW5mbyAqaW5mbywgc3RydWN0IHJlc2hhcGUgKnJlKQorIAkJc3dpdGNoIChpbmZvLT5uZXdfbGV2ZWwpIHsKKyAJCWNhc2UgNDoKKyAJCQlkZWx0YV9wYXJpdHkgPSAxOworKwkJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDA6CisgCQkJcmUtPmxldmVsID0gNDsKKyAJCQlyZS0+YmVmb3JlLmxheW91dCA9IDA7CitAQCAtMTI4NCwxMCArMTI4NSwxMiBAQCBjaGFyICphbmFseXNlX2NoYW5nZShjaGFyICpkZXZuYW1lLCBzdHJ1Y3QgbWRpbmZvICppbmZvLCBzdHJ1Y3QgcmVzaGFwZSAqcmUpCisgCisgCWNhc2UgNDoKKyAJCWluZm8tPmFycmF5LmxheW91dCA9IEFMR09SSVRITV9QQVJJVFlfTjsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCWNhc2UgNToKKyAJCXN3aXRjaCAoaW5mby0+bmV3X2xldmVsKSB7CisgCQljYXNlIDA6CisgCQkJZGVsdGFfcGFyaXR5ID0gLTE7CisrCQkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgNDoKKyAJCQlyZS0+bGV2ZWwgPSBpbmZvLT5hcnJheS5sZXZlbDsKKyAJCQlyZS0+YmVmb3JlLmRhdGFfZGlza3MgPSBpbmZvLT5hcnJheS5yYWlkX2Rpc2tzIC0gMTsKK0BAIC0xMzQzLDYgKzEzNDYsNyBAQCBjaGFyICphbmFseXNlX2NoYW5nZShjaGFyICpkZXZuYW1lLCBzdHJ1Y3QgbWRpbmZvICppbmZvLCBzdHJ1Y3QgcmVzaGFwZSAqcmUpCisgCQljYXNlIDQ6CisgCQljYXNlIDU6CisgCQkJZGVsdGFfcGFyaXR5ID0gLTE7CisrCQkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgNjoKKyAJCQlyZS0+bGV2ZWwgPSA2OworIAkJCXJlLT5iZWZvcmUuZGF0YV9kaXNrcyA9IGluZm8tPmFycmF5LnJhaWRfZGlza3MgLSAyOworZGlmZiAtLWdpdCBhL2JpdG1hcC5jIGIvYml0bWFwLmMKK2luZGV4IGNjZWRmZDMuLmE2ZmYwOTEgMTAwNjQ0CistLS0gYS9iaXRtYXAuYworKysrIGIvYml0bWFwLmMKK0BAIC04MiwxMyArODIsMjEgQEAgc3RhdGljIGlubGluZSBpbnQgY291bnRfZGlydHlfYml0c19ieXRlKGNoYXIgYnl0ZSwgaW50IG51bV9iaXRzKQorIAorIAlzd2l0Y2ggKG51bV9iaXRzKSB7IC8qIGZhbGwgdGhyb3VnaC4uLiAqLworIAkJY2FzZSA4OglpZiAoYnl0ZSAmIDEyOCkgbnVtKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSA3OglpZiAoYnl0ZSAmICA2NCkgbnVtKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSA2OglpZiAoYnl0ZSAmICAzMikgbnVtKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSA1OglpZiAoYnl0ZSAmICAxNikgbnVtKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSA0OglpZiAoYnl0ZSAmICAgOCkgbnVtKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSAzOiBpZiAoYnl0ZSAmICAgNCkgbnVtKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSAyOglpZiAoYnl0ZSAmICAgMikgbnVtKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSAxOglpZiAoYnl0ZSAmICAgMSkgbnVtKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJZGVmYXVsdDogYnJlYWs7CisgCX0KKyAKK2RpZmYgLS1naXQgYS9tZGFkbS5jIGIvbWRhZG0uYworaW5kZXggYzNhMjY1Yi4uMmQwNmQzYiAxMDA2NDQKKy0tLSBhL21kYWRtLmMKKysrKyBiL21kYWRtLmMKK0BAIC0xNDgsNiArMTQ4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQkgICAgbW9kZSA9PSBDUkVBVEUgfHwgbW9kZSA9PSBHUk9XIHx8CisgCQkJICAgIG1vZGUgPT0gSU5DUkVNRU5UQUwgfHwgbW9kZSA9PSBNQU5BR0UpCisgCQkJCWJyZWFrOyAvKiBiIG1lYW5zIGJpdG1hcCAqLworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgQnJpZWY6CisgCQkJYy5icmllZiA9IDE7CisgCQkJY29udGludWU7CitAQCAtODI4LDYgKzgyOSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCisgCQljYXNlIE8oSU5DUkVNRU5UQUwsTm9EZWdyYWRlZCk6CisgCQkJcHJfZXJyKCItLW5vLWRlZ3JhZGVkIGlzIGRlcHJlY2F0ZWQgaW4gSW5jcmVtZW50YWwgbW9kZVxuIik7CisrCQkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgTyhBU1NFTUJMRSxOb0RlZ3JhZGVkKTogLyogLS1uby1kZWdyYWRlZCAqLworIAkJCWMucnVuc3RvcCA9IC0xOyAvKiAtLXN0b3AgaXNuJ3QgYWxsb3dlZCBmb3IgLS1hc3NlbWJsZSwKKyAJCQkJCSAqIHNvIHdlIG92ZXJsb2FkIHNsaWdodGx5ICovCitkaWZmIC0tZ2l0IGEvc3VwZXItaW50ZWwuYyBiL3N1cGVyLWludGVsLmMKK2luZGV4IDRlNDY2ZmYuLjAwYTI5MjUgMTAwNjQ0CistLS0gYS9zdXBlci1pbnRlbC5jCisrKysgYi9zdXBlci1pbnRlbC5jCitAQCAtMzI3MSw2ICszMjcxLDcgQEAgc3RhdGljIHZvaWQgZ2V0aW5mb19zdXBlcl9pbXNtX3ZvbHVtZShzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwgc3RydWN0IG1kaW5mbyAqaW5mbywKKyAJCQkJCQk8PCBTRUNUX1BFUl9NQl9TSElGVDsKKyAJCQl9CisgCQl9CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSBNSUdSX1ZFUklGWToKKyAJCQkvKiB3ZSBjb3VsZCBlbXVsYXRlIHRoZSBjaGVja3BvaW50aW5nIG9mCisgCQkJICogJ3N5bmNfYWN0aW9uPWNoZWNrJyBtaWdyYXRpb25zLCBidXQgZm9yIG5vdworZGlmZiAtLWdpdCBhL3V0aWwuYyBiL3V0aWwuYworaW5kZXggMzJiZDkwOS4uZjJhNGQxOSAxMDA2NDQKKy0tLSBhL3V0aWwuYworKysrIGIvdXRpbC5jCitAQCAtMzM1LDYgKzMzNSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBwYXJzZV9zaXplKGNoYXIgKnNpemUpCisgCQlzd2l0Y2ggKCpjKSB7CisgCQljYXNlICdLJzoKKyAJCQljKys7CisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJZGVmYXVsdDoKKyAJCQlzICo9IDI7CisgCQkJYnJlYWs7CistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4wLmJiCmluZGV4IDYyNjE0ZjAuLmRjMDk4ZjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4wLmJiCkBAIC0xNiw2ICsxNiwxMiBAQAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWRhZG0uaC1VbmRlZmluZS1kcHJpbnRmLWJlZm9yZS1yZWRlZmluaW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmludGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZGFkbS1BZGQtV2ltcGxpY2l0LWZhbGx0aHJvdWdoLTAtaW4tTWFrZWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tZGFkbS1TcGVjaWZ5LWVub3VnaC1sZW5ndGgtd2hlbi13cml0ZS10by1idWZmZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1SZXBsYWNlLXNucHJpbnRmLXdpdGgtc3RybmNweS1hdC1zb21lLXBsYWNlcy10by1hdm9pLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtbWRhZG0tRm9yY2VkLXR5cGUtY29udmVyc2lvbi10by1hdm9pZC10cnVuY2F0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtQWRkLWEtY29tbWVudC10by1pbmRpY2F0ZS12YWxpZC1mYWxsdGhyb3VnaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1DQy10by1jaGVjay1mb3ItaW1wbGljaXQtZmFsbHRocm91Z2gtd2FybmluZy1zdXAucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMmNiNGZlZmZlYTkxNjdiYTcxYjVmMzQ2YTBjMGE0MGQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWQ2YWU3ZjI0Y2VkM2EwZmE3YjU2MTNiMzJmNGE1ODliYjQ4ODFlMzk0NmE1YTJjMzcyNDA1NjI1NGFkYTNhOSIKQEAgLTUwLDcgKzU2LDcgQEAKIH0KIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtYSAke1N9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwogCWNwICR7U30vdGVzdCAke0R9JHtQVEVTVF9QQVRIfQogCXNlZCAtZSAncyFzbGVlcCAwLiohc2xlZXAgMSFnOyBzIS92YXIvdG1wIS8hZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAogCWxuIC1zICR7YmFzZV9zYmluZGlyfS9tZGFkbSAke0R9JHtQVEVTVF9QQVRIfS9tZGFkbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTMxYTg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJUZXh0LWJhc2VkIG1vZGVtIGNvbnRyb2wgYW5kIHRlcm1pbmFsIGVtdWxhdGlvbiBwcm9ncmFtIgorSE9NRVBBR0UgPSAiaHR0cDovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL21pbmljb20vIgorREVTQ1JJUFRJT04gPSAiTWluaWNvbSBpcyBhIHRleHQtYmFzZWQgbW9kZW0gY29udHJvbCBhbmQgdGVybWluYWwgZW11bGF0aW9uIHByb2dyYW0gZm9yIFVuaXgtbGlrZSBvcGVyYXRpbmcgc3lzdGVtcyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQyMDQ3N2FiYzU2NzQwNGRlYmNhMGEyYTFjYjZiNjQ1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9taW5pY29tLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMjttZDU9YTU4ODM4Y2I3MDlmMGRiNTE3ZjRlNDI3MzBjNDllODEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9mcnMvZG93bmxvYWQucGhwL2xhdGVzdGZpbGUvMy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYWxsb3cudG8uZGlzYWJsZS5sb2NrZGV2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LW1pbmljb20taC12LXJldHVybi12YWx1ZS1pcy1ub3QtMC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1pc3N1cy1zdXJmYWNlZC1kdWUtdG8tbXVzbC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTAyMWNiOGM1NDQ1ZjZlNmU3NGIyYWNjMzk5NjJkNjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTMyZjgzNmI3YTY3N2ViMGNiMWRjYThkNzAzMDJiNzM3MjljM2QzMGRmMjZkNTgzNjhkNzEyZTVjY2EwNDFmMSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvZnJzLz9ncm91cF9pZD0zMDAxOCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbG9ja2Rldl0gPSAiLS1lbmFibGUtbG9ja2RldiwtLWRpc2FibGUtbG9ja2Rldixsb2NrZGV2IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCitkb19pbnN0YWxsKCkgeworCWZvciBkIGluIGRvYyBleHRyYXMgbWFuIGxpYiBzcmM7IGRvIG1ha2UgLUMgJGQgREVTVERJUj0ke0R9IGluc3RhbGw7IGRvbmUKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTE4Njg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dC1iYXNlZCBtb2RlbSBjb250cm9sIGFuZCB0ZXJtaW5hbCBlbXVsYXRpb24gcHJvZ3JhbSIKLURFU0NSSVBUSU9OID0gIk1pbmljb20gaXMgYSB0ZXh0LWJhc2VkIG1vZGVtIGNvbnRyb2wgYW5kIHRlcm1pbmFsIGVtdWxhdGlvbiBwcm9ncmFtIGZvciBVbml4LWxpa2Ugb3BlcmF0aW5nIHN5c3RlbXMiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLURFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmljb252IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MjA0NzdhYmM1Njc0MDRkZWJjYTBhMmExY2I2YjY0NSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWluaWNvbS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTI7bWQ1PWE1ODgzOGNiNzA5ZjBkYjUxN2Y0ZTQyNzMwYzQ5ZTgxIgotCi1TUkNfVVJJID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvZnJzL2Rvd25sb2FkLnBocC9sYXRlc3RmaWxlLzMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LnRvLmRpc2FibGUubG9ja2Rldi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1taW5pY29tLWgtdi1yZXR1cm4tdmFsdWUtaXMtbm90LTAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtaXNzdXMtc3VyZmFjZWQtZHVlLXRvLW11c2wucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcwNDRjYTNlMjkxMjY4YzMzMjk0ZjE3MWQ0MjZkYzJkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhYzNhNjYzYjgyZjRmNWRmNjQxMTRiNDc5MmI5OTI2YjUzNmM4NWY1OWRlMGYyZDJiMzIxYzc2MjZhOTA0ZjQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL2Zycy8/Z3JvdXBfaWQ9MzAwMTgiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2xvY2tkZXZdID0gIi0tZW5hYmxlLWxvY2tkZXYsLS1kaXNhYmxlLWxvY2tkZXYsbG9ja2RldiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKLQotZG9faW5zdGFsbCgpIHsKLQlmb3IgZCBpbiBkb2MgZXh0cmFzIG1hbiBsaWIgc3JjOyBkbyBtYWtlIC1DICRkIERFU1RESVI9JHtEfSBpbnN0YWxsOyBkb25lCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIKaW5kZXggNDVkN2JmNC4uNTY1N2ZkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIKQEAgLTM3LDkgKzM3LDcgQEAKIAogaW5oZXJpdCBnZXR0ZXh0CiAKLWRvX3BhdGNoW2RlcGVuZHNdID0gInF1aWx0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgotCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxpbnRsICIKK2RvX3BhdGNoW2RlcGVuZHNdICs9ICJxdWlsdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAogIyBUaGUgTWFrZWZpbGUgaXMgbGFtZSwgbm8gcGFyYWxsZWwgYnVpbGQKIFBBUkFMTEVMX01BS0UgPSAiIgpAQCAtODMsMjAgKzgxLDEyIEBACiAKIGRvX2NvbXBpbGUoKSB7CiAJIyBuZXQtdG9vbHMgdXNlIENPUFRTL0xPUFRTIHRvIGFsbG93IGFkZGluZyBjdXN0b20gb3B0aW9ucwotCWV4cG9ydCBDT1BUUz0iJENGTEFHUyIKLQlleHBvcnQgTE9QVFM9IiRMREZMQUdTIgotCXVuc2V0IENGTEFHUwotCXVuc2V0IExERkxBR1MKLQotCW9lX3J1bm1ha2UKKwlvZV9ydW5tYWtlIENPUFRTPSIkQ0ZMQUdTIiBMT1BUUz0iJExERkxBR1MiCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JZXhwb3J0IENPUFRTPSIkQ0ZMQUdTIgotCWV4cG9ydCBMT1BUUz0iJExERkxBR1MiCi0JdW5zZXQgQ0ZMQUdTCi0JdW5zZXQgTERGTEFHUwotCW9lX3J1bm1ha2UgJ0JBU0VESVI9JHtEfScgaW5zdGFsbAorCSMgV2UgZG9uJ3QgbmVlZCBDT1BUUyBvciBMT1BUUywgYnV0IGxldCdzIGJlIGNvbnNpc3RlbnQuCisJb2VfcnVubWFrZSBDT1BUUz0iJENGTEFHUyIgTE9QVFM9IiRMREZMQUdTIiAnQkFTRURJUj0ke0R9JyBpbnN0YWxsCiAKIAlpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIi9iaW4iIF07IHRoZW4KIAkJbWtkaXIgLXAgJHtEfS8ke2Jhc2VfYmluZGlyfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dC1weXRob25fMC41Mi4yMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMTkuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjIwLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfMC41Mi4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU3NmNlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIHRleHQgbW9kZSB1c2VyIGludGVyZmFjZXMiCi0KLURFU0NSSVBUSU9OID0gIk5ld3QgaXMgYSBwcm9ncmFtbWluZyBsaWJyYXJ5IGZvciBjb2xvciB0ZXh0IG1vZGUsIHdpZGdldCBiYXNlZCB1c2VyIFwKLWludGVyZmFjZXMuICBOZXd0IGNhbiBiZSB1c2VkIHRvIGFkZCBzdGFja2VkIHdpbmRvd3MsIGVudHJ5IHdpZGdldHMsIFwKLWNoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsIGxhYmVscywgcGxhaW4gdGV4dCBmaWVsZHMsIHNjcm9sbGJhcnMsIFwKLWV0Yy4sIHRvIHRleHQgbW9kZSB1c2VyIGludGVyZmFjZXMuICBUaGlzIHBhY2thZ2UgYWxzbyBjb250YWlucyB0aGUgXAotc2hhcmVkIGxpYnJhcnkgbmVlZGVkIGJ5IHByb2dyYW1zIGJ1aWx0IHdpdGggbmV3dCwgYXMgd2VsbCBhcyBhIFwKLS91c3IvYmluL2RpYWxvZyByZXBsYWNlbWVudCBjYWxsZWQgd2hpcHRhaWwuICBOZXd0IGlzIGJhc2VkIG9uIHRoZSBcCi1zbGFuZyBsaWJyYXJ5LiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL25ld3QvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi0jIHNsYW5nIG5lZWRzIHRvIGJlID49IDIuMgotREVQRU5EUyA9ICJzbGFuZyBwb3B0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9uZXd0L25ld3QtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9TSEFSRURESVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3NfYXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4tQWRkLXRpbmZvLWxpYnJhcnktdG8tdGhlLWxpbmtpbmctbGlicmFyaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9waWUtZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kZXRlY3QtZ29sZC1hcy1HTlUtbGlua2VyLXRvby5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNGFhMGY3OTQzZWRkMzljNTI0ODFhODdmNjhmNDEyYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOGMwZGI1NmMyMTk5NmFmNmE3Y2JhYjk5NDkxYjc3NGM2YzA5Y2VmOTFjZDliMDM5MDNjODQ2MzRiZmYyZTgwIgotCi1TID0gIiR7V09SS0RJUn0vbmV3dC0ke1BWfSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC10Y2wgLS13aXRob3V0LXB5dGhvbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLWV4cG9ydCBDUFBGTEFHUwotCi1QQUNLQUdFU19wcmVwZW5kID0gIndoaXB0YWlsICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2ggYXV0b2dlbi5zaAotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgIyBNYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIHJtIC1mICR7Qn0vLmRlcGVuZAotfQotCi1GSUxFU193aGlwdGFpbCA9ICIke2JpbmRpcn0vd2hpcHRhaWwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfMC41Mi4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVjZTcwYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMjAuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIHRleHQgbW9kZSB1c2VyIGludGVyZmFjZXMiCisKK0RFU0NSSVBUSU9OID0gIk5ld3QgaXMgYSBwcm9ncmFtbWluZyBsaWJyYXJ5IGZvciBjb2xvciB0ZXh0IG1vZGUsIHdpZGdldCBiYXNlZCB1c2VyIFwKK2ludGVyZmFjZXMuICBOZXd0IGNhbiBiZSB1c2VkIHRvIGFkZCBzdGFja2VkIHdpbmRvd3MsIGVudHJ5IHdpZGdldHMsIFwKK2NoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsIGxhYmVscywgcGxhaW4gdGV4dCBmaWVsZHMsIHNjcm9sbGJhcnMsIFwKK2V0Yy4sIHRvIHRleHQgbW9kZSB1c2VyIGludGVyZmFjZXMuICBUaGlzIHBhY2thZ2UgYWxzbyBjb250YWlucyB0aGUgXAorc2hhcmVkIGxpYnJhcnkgbmVlZGVkIGJ5IHByb2dyYW1zIGJ1aWx0IHdpdGggbmV3dCwgYXMgd2VsbCBhcyBhIFwKKy91c3IvYmluL2RpYWxvZyByZXBsYWNlbWVudCBjYWxsZWQgd2hpcHRhaWwuICBOZXd0IGlzIGJhc2VkIG9uIHRoZSBcCitzbGFuZyBsaWJyYXJ5LiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL25ld3QvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCisjIHNsYW5nIG5lZWRzIHRvIGJlID49IDIuMgorREVQRU5EUyA9ICJzbGFuZyBwb3B0IgorCitTUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9uZXd0L25ld3QtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9TSEFSRURESVIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3NfYXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4tQWRkLXRpbmZvLWxpYnJhcnktdG8tdGhlLWxpbmtpbmctbGlicmFyaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9waWUtZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kZXRlY3QtZ29sZC1hcy1HTlUtbGlua2VyLXRvby5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MGIyODhmODIxMjM0NTkzYThlNzkyMGU0MzViMjU5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZDY2YmE2YmVmZmMzZjc4NmQ0Y2NmZWU5ZDJiNDNkOTM0ODQ2ODBlZjhkYjkzOTdhNGZiNzBiNWFkYmI2ZGJjIgorCitTID0gIiR7V09SS0RJUn0vbmV3dC0ke1BWfSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC10Y2wgLS13aXRob3V0LXB5dGhvbiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK2V4cG9ydCBDUFBGTEFHUworCitQQUNLQUdFU19wcmVwZW5kID0gIndoaXB0YWlsICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2ggYXV0b2dlbi5zaAorfQorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgIyBNYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSworICAgIHJtIC1mICR7Qn0vLmRlcGVuZAorfQorCitGSUxFU193aGlwdGFpbCA9ICIke2JpbmRpcn0vd2hpcHRhaWwiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKaW5kZXggZDg5NzVmMi4uZmRlZGU1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCkBAIC04Niw3ICs4Niw2IEBACiAgICAgbWMtZmlzaCBcCiAgICAgbWMtaGVscGVycyBcCiAgICAgbWMtaGVscGVycy1wZXJsIFwKLSAgICBtYy1oZWxwZXJzLXB5dGhvbiBcCiAgICAgbWt0ZW1wIFwKICAgICBuY3Vyc2VzIFwKICAgICBuZXQtdG9vbHMgXApAQCAtMTEwLDcgKzEwOSw2IEBACiAgICAgIgogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtZGV2LXV0aWxzID0gIlwKLSAgICBieWFjYyBcCiAgICAgZGlmZnV0aWxzIFwKICAgICBtNCBcCiAgICAgbWFrZSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgppbmRleCBhMTU2YmNiLi41YmFhZjM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKQEAgLTY2LDcgKzY2LDYgQEAKICAgICBtYy1maXNoIFwKICAgICBtYy1oZWxwZXJzIFwKICAgICBtYy1oZWxwZXJzLXBlcmwgXAotICAgIG1jLWhlbHBlcnMtcHl0aG9uIFwKICAgICBtZGFkbSBcCiAgICAgbWluaWNvbSBcCiAgICAgbmVvbiBcCkBAIC0xNTQsNyArMTUzLDYgQEAKICAgICBsb2NhbGVkZWYgXAogICAgIGxzYiBcCiAgICAgbTQgXAotICAgIG1haWx4IFwKICAgICBtYWtlIFwKICAgICBtYW4gXAogICAgIG1hbi1wYWdlcyBcCkBAIC0xNzgsNyArMTc2LDYgQEAKICAgICBuY3Vyc2VzIFwKICAgICB6bGliIFwKICAgICBuc3ByIFwKLSAgICBsaWJwbmcxMiBcCiAgICAgbnNzIFwKICIKIApAQCAtMjAzLDMxICsyMDAsNiBAQAogICAgIHB5dGhvbi1taXNjIFwKICIKIAotUVQ0UEtHUyA9ICIgXAotICAgIGxpYnF0Y29yZTQgXAotICAgIGxpYnF0Z3VpNCBcCi0gICAgbGlicXRzcWw0IFwKLSAgICBsaWJxdHN2ZzQgXAotICAgIGxpYnF0eG1sNCBcCi0gICAgbGlicXRuZXR3b3JrNCBcCi0gICAgcXQ0LXBsdWdpbi1zcWxkcml2ZXItc3FsaXRlIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICJsaWJxdG9wZW5nbDQiLCAiIiwgZCl9IFwKLSAgICAiCi1RVDRQS0dTX21pcHM2NCA9ICIiCi1RVDRQS0dTX21pcHM2NG4zMiA9ICIiCi0KLWRlZiBnZXRfbGlicXQ0KGQpOgotICAgIGlmICdsaW51eHN0ZGJhc2UnIGluIGQuZ2V0VmFyKCdESVNUUk9PVkVSUklERVMnLCBGYWxzZSkgb3IgIiI6Ci0gICAgICAgIGlmICdxdDQnIGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBGYWxzZSkgb3IgIiI6Ci0gICAgICAgICAgICByZXR1cm4gZC5nZXRWYXIoJ1FUNFBLR1MnLCBGYWxzZSkKLQotICAgICAgICBiYi53YXJuKCdUaGUgbWV0YS1xdDQgbGF5ZXIgc2hvdWxkIGJlIGFkZGVkLCB0aGlzIGxheWVyIHByb3ZpZGVzIFF0IDQueCAnIFwKLSAgICAgICAgICAgICAgICAnbGlicmFyaWVzLiBJdHMgaW50ZW5kZWQgdXNlIGlzIGZvciBwYXNzaW5nIExTQiB0ZXN0cyBhcyBRdDQgaXMgJyBcCi0gICAgICAgICAgICAgICAgJ2EgcmVxdWlyZW1lbnQgZm9yIExTQi4nKQotICAgIHJldHVybiAnJwotIyBXZSBkb24ndCB3YW50IHRoaXMgdG8gcmVidWlsZCBldmVyeSB0aW1lIHlvdSBjaGFuZ2UgeW91ciBsYXllciBjb25maWcKLWdldF9saWJxdDRbdmFyZGVwc2V4Y2x1ZGVdICs9ICJCQkZJTEVfQ09MTEVDVElPTlMiCi0KIFNVTU1BUllfcGFja2FnZWdyb3VwLWNvcmUtbHNiLWRlc2t0b3AgPSAiTFNCIERlc2t0b3AiCiBERVNDUklQVElPTl9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItZGVza3RvcCA9ICJQYWNrYWdlcyByZXF1aXJlZCB0byBzdXBwb3J0IGxpYnJhcmllcyBcCiAgICAgc3BlY2lmaWVkIGluIHRoZSBMU0IgRGVza3RvcCBzcGVjaWZpY2F0aW9uIgpAQCAtMjQ4LDcgKzIyMCw2IEBACiAgICAgZ3RrKyBcCiAgICAgYXRrIFwKICAgICBsaWJhc291bmQgXAotICAgICR7QGdldF9saWJxdDQoZCl9IFwKICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiLXJ1bnRpbWUtYWRkID0gIlwKQEAgLTI2NywxMCArMjM4LDQgQEAKICAgICBnbGliYy1sb2NhbGVkYXRhLXBvc2l4IFwKICAgICBnbGliYy1leHRyYS1uc3MgXAogICAgIGdsaWJjLXBjcHJvZmlsZSBcCi0gICAgbGliY2xhc3MtaXNhLXBlcmwgXAotICAgIGxpYmVudi1wZXJsIFwKLSAgICBsaWJkdW1wdmFsdWUtcGVybCBcCi0gICAgbGliZmlsZS1jaGVja3RyZWUtcGVybCBcCi0gICAgbGliaTE4bi1jb2xsYXRlLXBlcmwgXAotICAgIGxpYnBvZC1wbGFpbmVyLXBlcmwgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3VzZS11dG1weC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS91c2UtdXRtcHgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMDRiYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3VzZS11dG1weC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzMyArMCwwIEBACi11dG1wKCkgbWF5IG5vdCBiZSBjb25maWd1cmVkIGluIGFuZCB1c2UgcG9zaXggY29tcGxpYW50IHV0bXB4IGFsd2F5cwotVVRNUCBpcyBTVklEIGxlZ2FjeSwgVVRNUFggaXMgbWFuZGF0ZWQgYnkgUE9TSVgKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IExpbnV4LVBBTS0xLjIuMS9saWJwYW0vcGFtX21vZHV0aWxfZ2V0bG9naW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjIuMS5vcmlnL2xpYnBhbS9wYW1fbW9kdXRpbF9nZXRsb2dpbi5jCi0rKysgTGludXgtUEFNLTEuMi4xL2xpYnBhbS9wYW1fbW9kdXRpbF9nZXRsb2dpbi5jCi1AQCAtMTAsOCArMTAsNyBAQAotIAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0tI2luY2x1ZGUgPHV0bXAuaD4KLS0KLSsjaW5jbHVkZSA8dXRtcHguaD4KLSAjZGVmaW5lIF9QQU1NT0RVVElMX0dFVExPR0lOICJfcGFtbW9kdXRpbF9nZXRsb2dpbiIKLSAKLSBjb25zdCBjaGFyICoKLUBAIC0yMiw3ICsyMSw3IEBAIHBhbV9tb2R1dGlsX2dldGxvZ2luKHBhbV9oYW5kbGVfdCAqcGFtaCkKLSAgICAgY29uc3Qgdm9pZCAqdm9pZF9jdXJyX3R0eTsKLSAgICAgY29uc3QgY2hhciAqY3Vycl90dHk7Ci0gICAgIGNoYXIgKmN1cnJfdXNlcjsKLS0gICAgc3RydWN0IHV0bXAgKnV0LCBsaW5lOwotKyAgICBzdHJ1Y3QgdXRtcHggKnV0LCBsaW5lOwotIAotICAgICBzdGF0dXMgPSBwYW1fZ2V0X2RhdGEocGFtaCwgX1BBTU1PRFVUSUxfR0VUTE9HSU4sICZsb2duYW1lKTsKLSAgICAgaWYgKHN0YXR1cyA9PSBQQU1fU1VDQ0VTUykgewotQEAgLTQ4LDEwICs0NywxMCBAQCBwYW1fbW9kdXRpbF9nZXRsb2dpbihwYW1faGFuZGxlX3QgKnBhbWgpCi0gICAgIH0KLSAgICAgbG9nbmFtZSA9IE5VTEw7Ci0gCi0tICAgIHNldHV0ZW50KCk7Ci0rICAgIHNldHV0eGVudCgpOwotICAgICBzdHJuY3B5KGxpbmUudXRfbGluZSwgY3Vycl90dHksIHNpemVvZihsaW5lLnV0X2xpbmUpKTsKLSAKLS0gICAgaWYgKCh1dCA9IGdldHV0bGluZSgmbGluZSkpID09IE5VTEwpIHsKLSsgICAgaWYgKCh1dCA9IGdldHV0eGxpbmUoJmxpbmUpKSA9PSBOVUxMKSB7Ci0gCWdvdG8gY2xlYW5fdXBfYW5kX2dvX2hvbWU7Ci0gICAgIH0KLSAKLUBAIC03NCw3ICs3Myw3IEBAIHBhbV9tb2R1dGlsX2dldGxvZ2luKHBhbV9oYW5kbGVfdCAqcGFtaCkKLSAKLSBjbGVhbl91cF9hbmRfZ29faG9tZToKLSAKLS0gICAgZW5kdXRlbnQoKTsKLSsgICAgZW5kdXR4ZW50KCk7Ci0gCi0gICAgIHJldHVybiBsb2duYW1lOwotIH0KLUluZGV4OiBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1faXNzdWUvcGFtX2lzc3VlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBMaW51eC1QQU0tMS4yLjEub3JpZy9tb2R1bGVzL3BhbV9pc3N1ZS9wYW1faXNzdWUuYwotKysrIExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV9pc3N1ZS9wYW1faXNzdWUuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotLSNpbmNsdWRlIDx1dG1wLmg+Ci0rI2luY2x1ZGUgPHV0bXB4Lmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8c3lzbG9nLmg+Ci0gCi1AQCAtMjQ2LDEzICsyNDYsMTMgQEAgcmVhZF9pc3N1ZV9xdW90ZWQocGFtX2hhbmRsZV90ICpwYW1oLCBGSQotIAkgICAgICBjYXNlICdVJzoKLSAJCXsKLSAJCSAgICB1bnNpZ25lZCBpbnQgdXNlcnMgPSAwOwotLQkJICAgIHN0cnVjdCB1dG1wICp1dDsKLS0JCSAgICBzZXR1dGVudCgpOwotLQkJICAgIHdoaWxlICgodXQgPSBnZXR1dGVudCgpKSkgewotKwkJICAgIHN0cnVjdCB1dG1weCAqdXQ7Ci0rCQkgICAgc2V0dXR4ZW50KCk7Ci0rCQkgICAgd2hpbGUgKCh1dCA9IGdldHV0eGVudCgpKSkgewotIAkJCWlmICh1dC0+dXRfdHlwZSA9PSBVU0VSX1BST0NFU1MpCi0gCQkJICAgICsrdXNlcnM7Ci0gCQkgICAgfQotLQkJICAgIGVuZHV0ZW50KCk7Ci0rCQkgICAgZW5kdXR4ZW50KCk7Ci0gCQkgICAgaWYgKGMgPT0gJ1UnKQotIAkJCXNucHJpbnRmIChidWYsIHNpemVvZiBidWYsICIldSAlcyIsIHVzZXJzLAotIAkJCSAgICAgICAgICAodXNlcnMgPT0gMSkgPyAidXNlciIgOiAidXNlcnMiKTsKLUluZGV4OiBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1fbGFzdGxvZy9wYW1fbGFzdGxvZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTGludXgtUEFNLTEuMi4xLm9yaWcvbW9kdWxlcy9wYW1fbGFzdGxvZy9wYW1fbGFzdGxvZy5jCi0rKysgTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX2xhc3Rsb2cvcGFtX2xhc3Rsb2cuYwotQEAgLTE1LDggKzE1LDkgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaWZkZWYgSEFWRV9VVE1QX0gKLSAjIGluY2x1ZGUgPHV0bXAuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8bGFzdGxvZy5oPgotKyNlbmRpZgotKyNpZmRlZiBIQVZFX1VUTVBYX0gKLSsjIGluY2x1ZGUgPHV0bXB4Lmg+Ci0gI2VuZGlmCi0gI2luY2x1ZGUgPHB3ZC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0yNyw2ICsyOCwxMiBAQAotICNpbmNsdWRlIDxzeXNsb2cuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0rI2lmbmRlZiBIQVZFX1VUTVBfSAotKyNkZWZpbmUgVVRfTElORVNJWkUgMzIKLSsjZGVmaW5lIFVUX0hPU1RTSVpFIDMyCi0rI2RlZmluZSBVVF9OQU1FU0laRSAyNTYKLSsjZW5kaWYKLSsKLSAjaWYgZGVmaW5lZChocHV4KSB8fCBkZWZpbmVkKHN1bm9zKSB8fCBkZWZpbmVkKHNvbGFyaXMpCi0gIyBpZm5kZWYgX1BBVEhfTEFTVExPRwotICMgIGRlZmluZSBfUEFUSF9MQVNUTE9HICIvdXNyL2FkbS9sYXN0bG9nIgotQEAgLTM4LDcgKzQ1LDcgQEAKLSAjICBkZWZpbmUgVVRfTElORVNJWkUgMTIKLSAjIGVuZGlmIC8qIFVUX0xJTkVTSVpFICovCi0gI2VuZGlmCi0tI2lmIGRlZmluZWQoaHB1eCkKLSsjaWYgZGVmaW5lZChocHV4KSB8fCAhZGVmaW5lZCBIQVZFX1VUTVBfSAotIHN0cnVjdCBsYXN0bG9nIHsKLSAgICAgdGltZV90ICBsbF90aW1lOwotICAgICBjaGFyICAgIGxsX2xpbmVbVVRfTElORVNJWkVdOwotQEAgLTQ0Nyw4ICs0NTQsOCBAQCBsYXN0X2xvZ2luX2ZhaWxlZChwYW1faGFuZGxlX3QgKnBhbWgsIGluCi0gewotICAgICBpbnQgcmV0dmFsOwotICAgICBpbnQgZmQ7Ci0tICAgIHN0cnVjdCB1dG1wIHV0OwotLSAgICBzdHJ1Y3QgdXRtcCB1dHVzZXI7Ci0rICAgIHN0cnVjdCB1dG1weCB1dDsKLSsgICAgc3RydWN0IHV0bXB4IHV0dXNlcjsKLSAgICAgaW50IGZhaWxlZCA9IDA7Ci0gICAgIGNoYXIgdGhlX3RpbWVbMjU2XTsKLSAgICAgY2hhciAqZGF0ZSA9IE5VTEw7Ci1JbmRleDogTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX2xpbWl0cy9wYW1fbGltaXRzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBMaW51eC1QQU0tMS4yLjEub3JpZy9tb2R1bGVzL3BhbV9saW1pdHMvcGFtX2xpbWl0cy5jCi0rKysgTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX2xpbWl0cy9wYW1fbGltaXRzLmMKLUBAIC0zMyw3ICszMyw3IEBACi0gI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8Z2xvYi5oPgotLSNpbmNsdWRlIDx1dG1wLmg+Ci0rI2luY2x1ZGUgPHV0bXB4Lmg+Ci0gI2lmbmRlZiBVVF9VU0VSICAvKiBzb21lIHN5c3RlbXMgaGF2ZSB1dF9uYW1lIGluc3RlYWQgb2YgdXRfdXNlciAqLwotICNkZWZpbmUgVVRfVVNFUiB1dF91c2VyCi0gI2VuZGlmCi1AQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBpbnQKLSBjaGVja19sb2dpbnMgKHBhbV9oYW5kbGVfdCAqcGFtaCwgY29uc3QgY2hhciAqbmFtZSwgaW50IGxpbWl0LCBpbnQgY3RybCwKLSAgICAgICAgICAgICAgIHN0cnVjdCBwYW1fbGltaXRfcyAqcGwpCi0gewotLSAgICBzdHJ1Y3QgdXRtcCAqdXQ7Ci0rICAgIHN0cnVjdCB1dG1weCAqdXQ7Ci0gICAgIGludCBjb3VudDsKLSAKLSAgICAgaWYgKGN0cmwgJiBQQU1fREVCVUdfQVJHKSB7Ci1AQCAtMjQyLDcgKzI0Miw3IEBAIGNoZWNrX2xvZ2lucyAocGFtX2hhbmRsZV90ICpwYW1oLCBjb25zdAotICAgICAgICAgcmV0dXJuIExPR0lOX0VSUjsKLSAgICAgfQotIAotLSAgICBzZXR1dGVudCgpOwotKyAgICBzZXR1dHhlbnQoKTsKLSAKLSAgICAgLyogQmVjYXVzZSB0aGVyZSBpcyBubyBkZWZpbml0aW9uIGFib3V0IHdoZW4gYW4gYXBwbGljYXRpb24KLSAgICAgICAgYWN0dWFsbHkgYWRkcyBhIHV0bXAgZW50cnksIHNvbWUgYXBwbGljYXRpb25zIGJpemFycmVseSBkbyB0aGUKLUBAIC0yNjAsNyArMjYwLDcgQEAgY2hlY2tfbG9naW5zIChwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0Ci0gCWNvdW50ID0gMTsKLSAgICAgfQotIAotLSAgICB3aGlsZSgodXQgPSBnZXR1dGVudCgpKSkgewotKyAgICB3aGlsZSgodXQgPSBnZXR1dHhlbnQoKSkpIHsKLSAjaWZkZWYgVVNFUl9QUk9DRVNTCi0gICAgICAgICBpZiAodXQtPnV0X3R5cGUgIT0gVVNFUl9QUk9DRVNTKSB7Ci0gICAgICAgICAgICAgY29udGludWU7Ci1AQCAtMjk2LDcgKzI5Niw3IEBAIGNoZWNrX2xvZ2lucyAocGFtX2hhbmRsZV90ICpwYW1oLCBjb25zdAotIAkgICAgYnJlYWs7Ci0gCX0KLSAgICAgfQotLSAgICBlbmR1dGVudCgpOwotKyAgICBlbmR1dHhlbnQoKTsKLSAgICAgaWYgKGNvdW50ID4gbGltaXQpIHsKLSAJaWYgKG5hbWUpIHsKLSAJICAgIHBhbV9zeXNsb2cocGFtaCwgTE9HX1dBUk5JTkcsCi1JbmRleDogTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX3RpbWVzdGFtcC9wYW1fdGltZXN0YW1wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBMaW51eC1QQU0tMS4yLjEub3JpZy9tb2R1bGVzL3BhbV90aW1lc3RhbXAvcGFtX3RpbWVzdGFtcC5jCi0rKysgTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX3RpbWVzdGFtcC9wYW1fdGltZXN0YW1wLmMKLUBAIC01Niw3ICs1Niw3IEBACi0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0tI2luY2x1ZGUgPHV0bXAuaD4KLSsjaW5jbHVkZSA8dXRtcHguaD4KLSAjaW5jbHVkZSA8c3lzbG9nLmg+Ci0gI2luY2x1ZGUgPHBhdGhzLmg+Ci0gI2luY2x1ZGUgImhtYWNzaGExLmgiCi1AQCAtMTk3LDE1ICsxOTcsMTUgQEAgdGltZXN0YW1wX2dvb2QodGltZV90IHRoZW4sIHRpbWVfdCBub3csCi0gc3RhdGljIGludAotIGNoZWNrX2xvZ2luX3RpbWUoY29uc3QgY2hhciAqcnVzZXIsIHRpbWVfdCB0aW1lc3RhbXApCi0gewotLQlzdHJ1Y3QgdXRtcCB1dGJ1ZiwgKnV0OwotKwlzdHJ1Y3QgdXRtcHggdXRidWYsICp1dDsKLSAJdGltZV90IG9sZGVzdF9sb2dpbiA9IDA7Ci0gCi0tCXNldHV0ZW50KCk7Ci0rCXNldHV0eGVudCgpOwotIAl3aGlsZSgKLSAjaWZkZWYgSEFWRV9HRVRVVEVOVF9SCi0tCSAgICAgICFnZXR1dGVudF9yKCZ1dGJ1ZiwgJnV0KQotKwkgICAgICAhZ2V0dXR4ZW50X3IoJnV0YnVmLCAmdXQpCi0gI2Vsc2UKLS0JICAgICAgKHV0ID0gZ2V0dXRlbnQoKSkgIT0gTlVMTAotKwkgICAgICAodXQgPSBnZXR1dHhlbnQoKSkgIT0gTlVMTAotICNlbmRpZgotIAkgICAgICApIHsKLSAJCWlmICh1dC0+dXRfdHlwZSAhPSBVU0VSX1BST0NFU1MpIHsKLUBAIC0yMTgsNyArMjE4LDcgQEAgY2hlY2tfbG9naW5fdGltZShjb25zdCBjaGFyICpydXNlciwgdGltZQotIAkJCW9sZGVzdF9sb2dpbiA9IHV0LT51dF90di50dl9zZWM7Ci0gCQl9Ci0gCX0KLS0JZW5kdXRlbnQoKTsKLSsJZW5kdXR4ZW50KCk7Ci0gCWlmKG9sZGVzdF9sb2dpbiA9PSAwIHx8IHRpbWVzdGFtcCA8IG9sZGVzdF9sb2dpbikgewotIAkJcmV0dXJuIFBBTV9BVVRIX0VSUjsKLSAJfQotSW5kZXg6IExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV91bml4L3N1cHBvcnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjIuMS5vcmlnL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5jCi0rKysgTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5jCi1AQCAtMTMsNyArMTMsNiBAQAotICNpbmNsdWRlIDxwd2QuaD4KLSAjaW5jbHVkZSA8c2hhZG93Lmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotLSNpbmNsdWRlIDx1dG1wLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCmluZGV4IGRmNTZkMjcuLjhmNzc1M2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKQEAgLTI4LDggKzI4LDYgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkYTRiMjI4OWI3Y2ZiMTk1ODNkNTRlOWVhYWVmMWMzYSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNDFhZWQxZWY1MjJmNjZlZDY3MjcxOWVjZjIyMDVlYzUxM2ZkMDA3NWVkODBjZGE4ZTA4NmE1YjFhMDFkMWJiIgogCi1TUkNfVVJJX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgZmlsZTovL3VzZS11dG1weC5wYXRjaCIKLQogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItZGVmaW5pbmctbWlzc2luZy1mdW5jaXRvbmFsaXR5LnBhdGNoIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfcGF0aHNfaGVhZGVyLnBhdGNoIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjhiMTRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gNmU4MmFmNTQ3MTQzOTJkY2RmNzRhOGFlZGFhZTdkZTdkMGFmMTA4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAxNjozNzoyNCArMDMwMAorU3ViamVjdDogW1BBVENIXSBNb3ZlIHB5dGhvbiBoZWxwZXIgc2NyaXB0cyAodXNlZCBvbmx5IGluIHRlc3RzKSB0byBQeXRob24gMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdHMvZ3B0LWhlYWRlci1tb3ZlIHwgMiArLQorIHRlc3RzL21zZG9zLW92ZXJsYXAgICB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ3B0LWhlYWRlci1tb3ZlIGIvdGVzdHMvZ3B0LWhlYWRlci1tb3ZlCitpbmRleCAwNWNkYzY1Li4zY2JjYjdlIDEwMDc1NQorLS0tIGEvdGVzdHMvZ3B0LWhlYWRlci1tb3ZlCisrKysgYi90ZXN0cy9ncHQtaGVhZGVyLW1vdmUKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICMgb3BlbiBpbWcgZmlsZSwgc3VidHJhY3QgMzMgZnJvbSBhbHRsYmEgYWRkcmVzcywgYW5kIG1vdmUgdGhlIGxhc3QgMzMgc2VjdG9ycworICMgYmFjayBieSAzMyBzZWN0b3JzCitkaWZmIC0tZ2l0IGEvdGVzdHMvbXNkb3Mtb3ZlcmxhcCBiL3Rlc3RzL21zZG9zLW92ZXJsYXAKK2luZGV4IDViZGRmYjAuLjNkZTdkMmUgMTAwNzU1CistLS0gYS90ZXN0cy9tc2Rvcy1vdmVybGFwCisrKysgYi90ZXN0cy9tc2Rvcy1vdmVybGFwCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAgICAgV3JpdGUgYW4gb3ZlcmxhcHBpbmcgcGFydGl0aW9uIHRvIGEgbXNkb3MgZGlzaworIAorQEAgLTE0LDcgKzE0LDcgQEAgQkFEX0VOVFJZID0gKDB4NzIsIDB4ZjUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgT0ZGU0VUID0gMHgxYjgKKyAKKyBpZiBsZW4oc3lzLmFyZ3YpIDwgMjoKKy0gICAgcHJpbnQgIiVzOiA8aW1hZ2Ugb3IgZGV2aWNlPiIKKysgICAgcHJpbnQoIiVzOiA8aW1hZ2Ugb3IgZGV2aWNlPiIpCisgICAgIHN5cy5leGl0KDEpCisgCisgZGF0YSA9ICIiLmpvaW4oY2hyKGMpIGZvciBjIGluIEJBRF9FTlRSWSkKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTIyZTFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saWJwYXJ0ZWQtVXNlLXJlYWQtb25seS13aGVuLXByb2JpbmctZGV2aWNlcy1vbi1saW51LnBhdGNoCkBAIC0wLDAgKzEsMjI0IEBACitGcm9tIGQ2ZTE1YTYwZTg0YzE1MTE1MjNhYTgxMjcyYjdkYjdhNmVjNDQxZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI2IFNlcCAyMDE3IDA4OjA0OjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnBhcnRlZDogVXNlIHJlYWQgb25seSB3aGVuIHByb2JpbmcgZGV2aWNlcyBvbiBsaW51eAorICgjMTI0NTE0NCkKKworV2hlbiBhIGRldmljZSBpcyBvcGVuZWQgZm9yIFJXIGNsb3NpbmcgaXQgY2FuIHRyaWdnZXIgb3RoZXIgYWN0aW9ucywKK2xpa2UgdWRldiBzY2FubmluZyBpdCBmb3IgcGFydGl0aW9uIGNoYW5nZXMuIFVzZSByZWFkIG9ubHkgZm9yIHRoZQoraW5pdF8qIG1ldGhvZHMgYW5kIFJXIGZvciBhY3R1YWwgY2hhbmdlcyB0byB0aGUgZGV2aWNlLgorCitUaGlzIGFkZHMgX2RldmljZV9vcGVuIHdoaWNoIHRha2VzIG1vZGUgZmxhZ3MgYXMgYW4gYXJndW1lbnQgYW5kIHR1cm5zCitsaW51eF9vcGVuIGludG8gYSB3cmFwcGVyIGZvciBpdCB3aXRoIFJXX01PREUuCisKK19kZXZpY2Vfb3Blbl9ybyBpcyBhZGRlZCB0byBvcGVuIHRoZSBkZXZpY2Ugd2l0aCBSRF9NT0RFIGFuZCBpbmNyZW1lbnQKK3RoZSBvcGVuX2NvdW50ZXIuIFRoaXMgaXMgdXNlZCBpbiB0aGUgaW5pdF8qIGZ1bmN0aW9ucy4KKworX2RldmljZV9jbG9zZSBpcyBhIHdyYXBwZXIgYXJvdW5kIGxpbnV4X2Nsb3NlIHRoYXQgZGVjcmVtZW50cyB0aGUKK29wZW5fY291bnRlciBhbmQgaXMgdXNlZCBpbiB0aGUgaW5pdF8qIGZ1bmN0aW9ucy4KKworQWxsIG9mIHRoZXNlIGNoYW5nZXMgYXJlIHNlbGYtY29udGFpbmVkIHdpdGggbm8gZXh0ZXJuYWwgQVBJIGNoYW5nZXMuCitUaGUgb25seSB2aXNpYmxlIGNoYW5nZSBpbiBiZWhhdmlvciBpcyB0aGF0IHdoZW4gYSBuZXcgUGVkRGV2aWNlIGlzCitjcmVhdGVkIHRoZSBkZXZpY2UgaXMgb3BlbmVkIGluIFJPX01PREUgaW5zdGVhZCBvZiBSV19NT0RFLgorCitSZXNvbHZlczogcmhieiMxMjQ1MTQ0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworQXV0aG9yOiBCcmlhbiBDLiBMYW5lIDxiY2xAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYnBhcnRlZC9hcmNoL2xpbnV4LmMgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMgYi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCitpbmRleCBmNjEyNjE3Li4wYTA2YTU0IDEwMDY0NAorLS0tIGEvbGlicGFydGVkL2FyY2gvbGludXguYworKysrIGIvbGlicGFydGVkL2FyY2gvbGludXguYworQEAgLTI5NCw3ICsyOTQsOSBAQCBzdHJ1Y3QgYmxrZGV2X2lvY3RsX3BhcmFtIHsKKyBzdGF0aWMgY2hhciogX2RldmljZV9nZXRfcGFydF9wYXRoIChQZWREZXZpY2UgY29uc3QgKmRldiwgaW50IG51bSk7Cisgc3RhdGljIGludCBfcGFydGl0aW9uX2lzX21vdW50ZWRfYnlfcGF0aCAoY29uc3QgY2hhciogcGF0aCk7Cisgc3RhdGljIHVuc2lnbmVkIGludCBfZGV2aWNlX2dldF9wYXJ0aXRpb25fcmFuZ2UoUGVkRGV2aWNlIGNvbnN0KiBkZXYpOworLQorK3N0YXRpYyBpbnQgX2RldmljZV9vcGVuIChQZWREZXZpY2UqIGRldiwgaW50IGZsYWdzKTsKKytzdGF0aWMgaW50IF9kZXZpY2Vfb3Blbl9ybyAoUGVkRGV2aWNlKiBkZXYpOworK3N0YXRpYyBpbnQgX2RldmljZV9jbG9zZSAoUGVkRGV2aWNlKiBkZXYpOworIAorIHN0YXRpYyBpbnQKKyBfcmVhZF9mZCAoaW50IGZkLCBjaGFyICoqYnVmKQorQEAgLTkxMyw3ICs5MTUsNyBAQCBpbml0X2lkZSAoUGVkRGV2aWNlKiBkZXYpCisgICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworIAorLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCisrICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAKKyAgICAgICAgIGlmIChpb2N0bCAoYXJjaF9zcGVjaWZpYy0+ZmQsIEhESU9fR0VUX0lERU5USVRZLCAmaGRpKSkgeworQEAgLTk4MiwxMSArOTg0LDExIEBAIGluaXRfaWRlIChQZWREZXZpY2UqIGRldikKKyAgICAgICAgIGlmICghX2RldmljZV9wcm9iZV9nZW9tZXRyeSAoZGV2KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7CisgCistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyAgICAgICAgIHJldHVybiAxOworIAorIGVycm9yX2Nsb3NlX2RldjoKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworIGVycm9yOgorICAgICAgICAgcmV0dXJuIDA7CisgfQorQEAgLTExMTksNyArMTEyMSw3IEBAIGluaXRfc2NzaSAoUGVkRGV2aWNlKiBkZXYpCisgICAgICAgICBjaGFyKiB2ZW5kb3I7CisgICAgICAgICBjaGFyKiBwcm9kdWN0OworIAorLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCisrICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAKKyAgICAgICAgIGlmIChpb2N0bCAoYXJjaF9zcGVjaWZpYy0+ZmQsIFNDU0lfSU9DVExfR0VUX0lETFVOLCAmaWRsdW4pIDwgMCkgeworQEAgLTExMzMsNyArMTEzNSw3IEBAIGluaXRfc2NzaSAoUGVkRGV2aWNlKiBkZXYpCisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7CisgICAgICAgICAgICAgICAgIGlmICghX2RldmljZV9wcm9iZV9nZW9tZXRyeSAoZGV2KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKKy0gICAgICAgICAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgICAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICB9CisgCitAQCAtMTE1NSwxMSArMTE1NywxMSBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQorICAgICAgICAgaWYgKCFfZGV2aWNlX3Byb2JlX2dlb21ldHJ5IChkZXYpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKKyAKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworICAgICAgICAgcmV0dXJuIDE7CisgCisgZXJyb3JfY2xvc2VfZGV2OgorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgZXJyb3I6CisgICAgICAgICByZXR1cm4gMDsKKyB9CitAQCAtMTE3MSw3ICsxMTczLDcgQEAgaW5pdF9maWxlIChQZWREZXZpY2UqIGRldikKKyAKKyAgICAgICAgIGlmICghX2RldmljZV9zdGF0IChkZXYsICZkZXZfc3RhdCkpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CistICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKKysgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworIAorICAgICAgICAgZGV2LT5zZWN0b3Jfc2l6ZSA9IFBFRF9TRUNUT1JfU0laRV9ERUZBVUxUOworQEAgLTExOTgsNyArMTIwMCw3IEBAIGluaXRfZmlsZSAoUGVkRGV2aWNlKiBkZXYpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OworICAgICAgICAgfQorIAorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgCisgICAgICAgICBkZXYtPmJpb3NfZ2VvbS5jeWxpbmRlcnMgPSBkZXYtPmxlbmd0aCAvIDQgLyAzMjsKKyAgICAgICAgIGRldi0+Ymlvc19nZW9tLmhlYWRzID0gNDsKK0BAIC0xMjA5LDcgKzEyMTEsNyBAQCBpbml0X2ZpbGUgKFBlZERldmljZSogZGV2KQorICAgICAgICAgcmV0dXJuIDE7CisgCisgZXJyb3JfY2xvc2VfZGV2OgorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgZXJyb3I6CisgICAgICAgICByZXR1cm4gMDsKKyB9CitAQCAtMTIyNSw3ICsxMjI3LDcgQEAgaW5pdF9kYXNkIChQZWREZXZpY2UqIGRldiwgY29uc3QgY2hhciogbW9kZWxfbmFtZSkKKyAgICAgICAgIGlmICghX2RldmljZV9zdGF0IChkZXYsICZkZXZfc3RhdCkpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgCistICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKKysgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworIAorICAgICAgICAgTGludXhTcGVjaWZpYyogYXJjaF9zcGVjaWZpYyA9IExJTlVYX1NQRUNJRklDIChkZXYpOworQEAgLTEyNjUsMTEgKzEyNjcsMTEgQEAgaW5pdF9kYXNkIChQZWREZXZpY2UqIGRldiwgY29uc3QgY2hhciogbW9kZWxfbmFtZSkKKyAKKyAgICAgICAgIGRldi0+bW9kZWwgPSBzdHJkdXAgKG1vZGVsX25hbWUpOworIAorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgICAgICAgICByZXR1cm4gMTsKKyAKKyBlcnJvcl9jbG9zZV9kZXY6CistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyBlcnJvcjoKKyAgICAgICAgIHJldHVybiAwOworIH0KK0BAIC0xMjg0LDcgKzEyODYsNyBAQCBpbml0X2dlbmVyaWMgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQorICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAKKy0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQorKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgCisgICAgICAgICBwZWRfZXhjZXB0aW9uX2ZldGNoX2FsbCAoKTsKK0BAIC0xMzMyLDExICsxMzM0LDExIEBAIGluaXRfZ2VuZXJpYyAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCisgCisgICAgICAgICBkZXYtPm1vZGVsID0gc3RyZHVwIChtb2RlbF9uYW1lKTsKKyAKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworICAgICAgICAgcmV0dXJuIDE7CisgCisgZXJyb3JfY2xvc2VfZGV2OgorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgZXJyb3I6CisgICAgICAgICByZXR1cm4gMDsKKyB9CitAQCAtMTYyMywxMiArMTYyNSwyNyBAQCByZXRyeToKKyB9CisgCisgc3RhdGljIGludAorK19kZXZpY2Vfb3Blbl9ybyAoUGVkRGV2aWNlKiBkZXYpCisreworKyAgICBpbnQgcmMgPSBfZGV2aWNlX29wZW4gKGRldiwgUkRfTU9ERSk7CisrICAgIGlmIChyYykKKysgICAgICAgIGRldi0+b3Blbl9jb3VudCsrOworKyAgICByZXR1cm4gcmM7CisrfQorKworK3N0YXRpYyBpbnQKKyBsaW51eF9vcGVuIChQZWREZXZpY2UqIGRldikKKyB7CisrICAgIHJldHVybiBfZGV2aWNlX29wZW4gKGRldiwgUldfTU9ERSk7CisrfQorKworK3N0YXRpYyBpbnQKKytfZGV2aWNlX29wZW4gKFBlZERldmljZSogZGV2LCBpbnQgZmxhZ3MpCisreworICAgICAgICAgTGludXhTcGVjaWZpYyogIGFyY2hfc3BlY2lmaWMgPSBMSU5VWF9TUEVDSUZJQyAoZGV2KTsKKyAKKyByZXRyeToKKy0gICAgICAgIGFyY2hfc3BlY2lmaWMtPmZkID0gb3BlbiAoZGV2LT5wYXRoLCBSV19NT0RFKTsKKysgICAgICAgIGFyY2hfc3BlY2lmaWMtPmZkID0gb3BlbiAoZGV2LT5wYXRoLCBmbGFncyk7CisgCisgICAgICAgICBpZiAoYXJjaF9zcGVjaWZpYy0+ZmQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgY2hhciogICByd19lcnJvcl9tc2cgPSBzdHJlcnJvciAoZXJybm8pOworQEAgLTE2OTcsNiArMTcxNCwxNSBAQCBsaW51eF9yZWZyZXNoX2Nsb3NlIChQZWREZXZpY2UqIGRldikKKyAgICAgICAgIHJldHVybiAxOworIH0KKyAKKytzdGF0aWMgaW50CisrX2RldmljZV9jbG9zZSAoUGVkRGV2aWNlKiBkZXYpCisreworKyAgICBpbnQgcmMgPSBsaW51eF9jbG9zZSAoZGV2KTsKKysgICAgaWYgKGRldi0+b3Blbl9jb3VudCA+IDApCisrICAgICAgICBkZXYtPm9wZW5fY291bnQtLTsKKysgICAgcmV0dXJuIHJjOworK30KKysKKyAjaWYgU0laRU9GX09GRl9UIDwgOAorIAorICNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMjApCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgppbmRleCA5Y2UyZGZlLi5hYjMwMTA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIKQEAgLTE0LDE2ICsxNCwxNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1saWJwYXJ0ZWRfZnNfcmVzaXplLWxpbmstYWdhaW5zdC1saWJ1dWlkLWV4cGxpY2l0bHktLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaCBcCiAJICAgZmlsZTovL3BhcnRlZC0zLjItc3lzbWFjcm9zLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMDI0N2I2YTdiMzE0ZjhlZGViNjE4MTU5ZmE5NWY5Y2IiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODU4YjU4OWMyMjI5N2NhY2RmNDM3ZjNiYWZmNmYwNGIzMzMwODc1MjFhYjI3NGY3YWI2NzdjYjhjNmJiNzhlNCIKIAogRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyIgotTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1saWNvbnYgIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB0ZXhpbmZvIHB0ZXN0CiAKQEAgLTQ2LDQgKzQ3LDQgQEAKIAlzZWQgLWUgJ3N8IC4uL3BhcnRlZHx8JyAtaSAkdC90ZXN0cy8qLnNoCiB9CiAKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggY29yZXV0aWxzIHBlcmwgdXRpbC1saW51eC1sb3NldHVwIHB5dGhvbiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggY29yZXV0aWxzIHBlcmwgdXRpbC1saW51eC1sb3NldHVwIHB5dGhvbjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1BZGQtYS1jb21tZW50LWZvci1mYWxsdGhyb3VnaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUFkZC1hLWNvbW1lbnQtZm9yLWZhbGx0aHJvdWdoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NmY4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1BZGQtYS1jb21tZW50LWZvci1mYWxsdGhyb3VnaC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGU2N2JiM2RlYmU1ODJmMGU3Nzc3MGI3MTRiZDAxMmJiMTA4MmZjNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOSBBcHIgMjAxNyAxMTozMjowMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBBZGQgYSBjb21tZW50IGZvciBmYWxsdGhyb3VnaAorCitGaXhlcyB3YXJuaW5ncyB3aXRoIGdjYzcgZS5nLgorCisuLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9wYXgvc3JjL29wdGlvbnMuYzogSW4gZnVuY3Rpb24gJ3Rhcl9vcHRpb25zJzoKKy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL3BheC9zcmMvb3B0aW9ucy5jOjcyNTo3OiBlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhyb3VnaCBbLVdlcnJvcj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dCisgICAgaWYgKG9wdF9hZGQgKCJ3cml0ZV9vcHQ9bm9kaXIiKSA8IDApCisgICAgICAgXgorLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvcGF4L3NyYy9vcHRpb25zLmM6NzMwOjI6IG5vdGU6IGhlcmUKKyAgY2FzZSAnTyc6CisgIF5+fn4KK2NjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL29wdGlvbnMuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbnMuYyBiL3NyYy9vcHRpb25zLmMKK2luZGV4IGM2NjNiNGUuLmI4MDgxOWEgMTAwNjQ0CistLS0gYS9zcmMvb3B0aW9ucy5jCisrKysgYi9zcmMvb3B0aW9ucy5jCitAQCAtNzI0LDYgKzcyNCw3IEBAIHRhcl9vcHRpb25zIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCWNhc2UgJ28nOgorIAkgIGlmIChvcHRfYWRkICgid3JpdGVfb3B0PW5vZGlyIikgPCAwKQorIAkgICAgdGFyX3VzYWdlICgpOworKwkgIC8qIGZhbGx0aHJ1ICovCisgCWNhc2UgJ08nOgorIAkgIE9mbGFnID0gMTsKKyAJICBicmVhazsKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXhfMy40LmJiCmluZGV4IDliNGUxN2IuLjZkZjlhODEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYgpAQCAtMTUsMTAgKzE1LDExIEBACiBERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzLyR7QlBOfS8ke0JQfS50YXIuYnoyL2ZiZDkwMjNiNTkwYjQ1YWMzYWRlOTU4NzA3MDJhMGQ2LyR7QlB9LnRhci5iejIgXAotCWZpbGU6Ly9maXhfZm9yX2NvbXBpbGVfd2l0aF9nY2MtNC42LjAucGF0Y2ggXAotCWZpbGU6Ly9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIFwKLSIKKyAgICAgICAgICAgZmlsZTovL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS1zdHJ0b2xsLWluc3RlYWQtb2Ytc3RydG9xLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiCmluZGV4IGM4ZmNkZTQuLjQyNzYxM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiUGVybCBtb2R1bGVzIHVzZWZ1bCBmb3IgbWFuaXB1bGF0aW5nIGRhdGUgYW5kIHRpbWUgaW5mb3JtYXRpb24iCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL1RpbWVEYXRlIgogU0VDVElPTiA9ICJsaWJzIgogIyBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwgaXRzZWxmLgogTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTllNzEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgbW9kdWxlIGZvciBzdXBwb3J0aW5nIHNpbXBsZSBnZW5lcmljIG5hbWVzcGFjZXMiCi1ERVNDUklQVElPTiA9ICJYTUw6Ok5hbWVzcGFjZVN1cHBvcnQgb2ZmZXJzIGEgc2ltcGxlIHdheSB0byBwcm9jZXNzIG5hbWVzcGFjZS1iYXNlZCBYTUwgbmFtZXMuIFwKLSAgICAgICAgICAgICAgICBJdCBhbHNvIGhlbHBzIG1haW50YWluIGEgcHJlZml4LXRvLW5hbWVzcGFjZSBVUkkgbWFwLCBhbmQgcHJvdmlkZXMgYSBudW1iZXIgb2YgXAotICAgICAgICAgICAgICAgIGJhc2ljIGNoZWNrcy4gIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotUFIgPSAicjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01FVEEueW1sO2JlZ2lubGluZT0yMjtlbmRsaW5lPTIyO21kNT0zYjJiNTY0ZGFlOGI5YWY5ZTg4OTZlODVjMDdkY2JlNSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9QL1BFL1BFUklHUklOL1hNTC1OYW1lc3BhY2VTdXBwb3J0LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMjJjY2E3NjE2MWNkOTU2ZDcyNDI4NmQzNmI2MDdkYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZDgxNTFmMGEzZjEwMjMxM2Q3NmI2NGJmZDFjMmQ5ZWQ0NmJmZTYzYTE2ZjAzOGU3ZDg2MGZkYTI4N2I3NGVhIgotCi0KLVMgPSAiJHtXT1JLRElSfS9YTUwtTmFtZXNwYWNlU3VwcG9ydC0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQ9Im5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ5OGEyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTIuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3Igc3VwcG9ydGluZyBzaW1wbGUgZ2VuZXJpYyBuYW1lc3BhY2VzIgorSE9NRVBBR0UgPSAiaHR0cDovL3ZlaWxsYXJkLmNvbS9YTUwvIgorREVTQ1JJUFRJT04gPSAiWE1MOjpOYW1lc3BhY2VTdXBwb3J0IG9mZmVycyBhIHNpbXBsZSB3YXkgdG8gcHJvY2VzcyBuYW1lc3BhY2UtYmFzZWQgWE1MIG5hbWVzLiBcCisgICAgICAgICAgICAgICAgSXQgYWxzbyBoZWxwcyBtYWludGFpbiBhIHByZWZpeC10by1uYW1lc3BhY2UgVVJJIG1hcCwgYW5kIHByb3ZpZGVzIGEgbnVtYmVyIG9mIFwKKyAgICAgICAgICAgICAgICBiYXNpYyBjaGVja3MuICIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK1BSID0gInIzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MjI7ZW5kbGluZT0yMjttZDU9OWNhMWE0YTk0MTQ5NmU3ZmVlZGFjNzJjNGZiOGIxMzciCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUC9QRS9QRVJJR1JJTi9YTUwtTmFtZXNwYWNlU3VwcG9ydC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYTg5MTZjNmQwOTViY2YwNzNlMTEwOGFmMDJlNzhjOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDdlOTk1ODU5ZjhkZDA0MTNhYTNmMjJkMzUwYzRhNjJkYTY1MmU4NTQyNjdhYTA1ODZhZTU0NGFlMmJhZTVlZiIKKworCitTID0gIiR7V09SS0RJUn0vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EPSJuYXRpdmUiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0YTMzNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkJhc2UgY2xhc3MgU0FYIERyaXZlcnMgYW5kIEZpbHRlcnMiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBoYXMgYSB2ZXJ5IHNpbXBsZSB0YXNrIC0gdG8gYmUgYSBiYXNlIGNsYXNzIGZvciBcCi1QZXJsU0FYIGRyaXZlcnMgYW5kIGZpbHRlcnMuIEl0J3MgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gcGFzcyBcCi10aGUgaW5wdXQgZGlyZWN0bHkgdG8gdGhlIG91dHB1dCB1bmNoYW5nZWQuIEl0IGNhbiBiZSB1c2VmdWwgdG8gXAotdXNlIHRoaXMgbW9kdWxlIGFzIGEgYmFzZSBjbGFzcyBzbyB5b3UgZG9uJ3QgaGF2ZSB0bywgZm9yIGV4YW1wbGUsIFwKLWltcGxlbWVudCB0aGUgY2hhcmFjdGVycygpIGNhbGxiYWNrLiIKLQotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2Rpc3QuaW5pO2VuZGxpbmU9NTttZDU9OGY5YzlhNTUzNDBhZWZhZWU2ZTk3MDRjODg0NjY0NDYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRy9HUi9HUkFOVE0vWE1MLVNBWC1CYXNlLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM4YzhjMzI0N2RmZDA4MDcxMjU5NjExOGQ3MGRiZTMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NjI3MDMxOGIxNWY4OGI4NDI3ZTU4NTE5OGFiYmMxOWJjMmU2Y2NiMzZkYzRjMGE0ZjJkOTgwNzMzMDIxOWUiCi0KLVMgPSAiJHtXT1JLRElSfS9YTUwtU0FYLUJhc2UtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QzYTU4MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA5LmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiQmFzZSBjbGFzcyBTQVggRHJpdmVycyBhbmQgRmlsdGVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9YTUwtU0FYLUJhc2UvIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgaGFzIGEgdmVyeSBzaW1wbGUgdGFzayAtIHRvIGJlIGEgYmFzZSBjbGFzcyBmb3IgXAorUGVybFNBWCBkcml2ZXJzIGFuZCBmaWx0ZXJzLiBJdCdzIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIHBhc3MgXAordGhlIGlucHV0IGRpcmVjdGx5IHRvIHRoZSBvdXRwdXQgdW5jaGFuZ2VkLiBJdCBjYW4gYmUgdXNlZnVsIHRvIFwKK3VzZSB0aGlzIG1vZHVsZSBhcyBhIGJhc2UgY2xhc3Mgc28geW91IGRvbid0IGhhdmUgdG8sIGZvciBleGFtcGxlLCBcCitpbXBsZW1lbnQgdGhlIGNoYXJhY3RlcnMoKSBjYWxsYmFjay4iCisKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitSREVQRU5EU18ke1BOfSArPSAicGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kaXN0LmluaTtlbmRsaW5lPTU7bWQ1PThmOWM5YTU1MzQwYWVmYWVlNmU5NzA0Yzg4NDY2NDQ2IgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0cvR1IvR1JBTlRNL1hNTC1TQVgtQmFzZS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYzM0N2ExNDA2NWRkN2FlYzdkOWZiMTgxYjJkNzk0NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NmNiMzU1YmE0ZWY0N2MxMGNhNzM4YmQzNTk5OTcyMzY0NDM4NmFjODUzYWJiZWI1MTMyODQxZjVlOGEyYWQwIgorCitTID0gIiR7V09SS0RJUn0vWE1MLVNBWC1CYXNlLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKaW5kZXggNDVkMzk2Ni4uYWQzMWI5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHVzaW5nIGFuZCBidWlsZGluZyBQZXJsIFNBWDIgWE1MIHByb2Nlc3NvcnMiCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvWE1MLVNBWC8iCiBERVNDUklQVElPTiA9ICJYTUw6OlNBWCBjb25zaXN0cyBvZiBzZXZlcmFsIGZyYW1ld29yayBjbGFzc2VzIGZvciB1c2luZyBhbmQgXAogYnVpbGRpbmcgUGVybCBTQVgyIFhNTCBwYXJzZXJzLCBmaWx0ZXJzLCBhbmQgZHJpdmVycy4gIEl0IGlzIGRlc2lnbmVkIFwgCiBhcm91bmQgdGhlIG5lZWQgdG8gYmUgYWJsZSB0byAicGx1ZyBpbiIgZGlmZmVyZW50IFNBWCBwYXJzZXJzIHRvIGFuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jCmluZGV4IDIyYjJlODUuLjY2YTc4NGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBwcm9jZXNzZXMgb24geW91ciBzeXN0ZW0iCitIT01FUEFHRSA9ICJodHRwOi8vcHNtaXNjLnNmLm5ldC8iCiBERVNDUklQVElPTiA9ICJUaGUgcHNtaXNjIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIGZvciBtYW5hZ2luZyBwcm9jZXNzZXMgb24geW91ciBcCiBzeXN0ZW06IHBzdHJlZSwga2lsbGFsbCBhbmQgZnVzZXIuICBUaGUgcHN0cmVlIGNvbW1hbmQgZGlzcGxheXMgYSB0cmVlIFwKIHN0cnVjdHVyZSBvZiBhbGwgb2YgdGhlIHJ1bm5pbmcgcHJvY2Vzc2VzIG9uIHlvdXIgc3lzdGVtLiAgVGhlIGtpbGxhbGwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvbXVzbC1zdW5ycGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9tdXNsLXN1bnJwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiYzYzNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9tdXNsLXN1bnJwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVRoZSBtdXNsIGltcGxlbWVudGF0aW9uIG9mIGdldGFkZHJpbmZvIGFuZCBnZXRzZXJ2YnluYW1lIGRvZXMgbm90Ci1hbGlhc2VzLiBBcyBhIHdvcmthcm91bmQgd2UgdXNlICJzdW5wcmMiIGluc3RlYWQgb2YgInBvcnRtYXBwZXIiCi0KLXBvcnRlZCBmcm9tIGFscGluZSBsaW51eAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBycGNiaW5kLTAuMi4yL3NyYy9ycGNiaW5kLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBycGNiaW5kLTAuMi4yLm9yaWcvc3JjL3JwY2JpbmQuYwotKysrIHJwY2JpbmQtMC4yLjIvc3JjL3JwY2JpbmQuYwotQEAgLTQ5MSw3ICs0OTEsNyBAQCBpbml0X3RyYW5zcG9ydChzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZikKLSAJCQlpZiAoKGFpY29kZSA9IGdldGFkZHJpbmZvKGhvc3RzW25ob3N0c2Jha10sCi0gCQkJICAgIHNlcnZuYW1lLCAmaGludHMsICZyZXMpKSAhPSAwKSB7Ci0gCQkJICBpZiAoKGFpY29kZSA9IGdldGFkZHJpbmZvKGhvc3RzW25ob3N0c2Jha10sCi0tCQkJCQkJICAgICJwb3J0bWFwcGVyIiwgJmhpbnRzLCAmcmVzKSkgIT0gMCkgewotKwkJCQkJCSAgICAic3VucnBjIiwgJmhpbnRzLCAmcmVzKSkgIT0gMCkgewotIAkJCQlzeXNsb2coTE9HX0VSUiwKLSAJCQkJICAgICJjYW5ub3QgZ2V0IGxvY2FsIGFkZHJlc3MgZm9yICVzOiAlcyIsCi0gCQkJCSAgICBuY29uZi0+bmNfbmV0aWQsIGdhaV9zdHJlcnJvcihhaWNvZGUpKTsKLUBAIC01NjQsNyArNTY0LDcgQEAgaW5pdF90cmFuc3BvcnQoc3RydWN0IG5ldGNvbmZpZyAqbmNvbmYpCi0gCQlpZiAoKHN0cmNtcChuY29uZi0+bmNfbmV0aWQsICJsb2NhbCIpICE9IDApICYmCi0gCQkgICAgKHN0cmNtcChuY29uZi0+bmNfbmV0aWQsICJ1bml4IikgIT0gMCkpIHsKLSAJCQlpZiAoKGFpY29kZSA9IGdldGFkZHJpbmZvKE5VTEwsIHNlcnZuYW1lLCAmaGludHMsICZyZXMpKSE9IDApIHsKLS0JCQkgIGlmICgoYWljb2RlID0gZ2V0YWRkcmluZm8oTlVMTCwgInBvcnRtYXBwZXIiLCAmaGludHMsICZyZXMpKSE9IDApIHsKLSsJCQkgIGlmICgoYWljb2RlID0gZ2V0YWRkcmluZm8oTlVMTCwgInN1bnJwYyIsICZoaW50cywgJnJlcykpIT0gMCkgewotIAkJCSAgcHJpbnRmKCJjYW5ub3QgZ2V0IGxvY2FsIGFkZHJlc3MgZm9yICVzOiAlcyIsICBuY29uZi0+bmNfbmV0aWQsIGdhaV9zdHJlcnJvcihhaWNvZGUpKTsKLSAJCQkgIHN5c2xvZyhMT0dfRVJSLAotIAkJCQkgICAgImNhbm5vdCBnZXQgbG9jYWwgYWRkcmVzcyBmb3IgJXM6ICVzIiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JlbW92ZS1zeXMtcXVldWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9yZW1vdmUtc3lzLXF1ZXVlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGZjOTc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JlbW92ZS1zeXMtcXVldWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1tdXNsIGRvZXMgbm90IHByb3ZpZGUgdGhpcyBoZWFkZXIgYW5kIGhlcmUgaXMgcmVhc29uaW5nCi1odHRwOi8vd2lraS5tdXNsLWxpYmMub3JnL3dpa2kvRkFRI1E6X3doeV9pc19zeXMuMkZxdWV1ZS5oX25vdF9pbmNsdWRlZF8uM0YKLQotU28gaW5jbHVkZSBpdCBvbmx5IHdoZW4gX19HTElCQ19fIGlzIGRlZmluZWQgd2hpY2ggaXMgdHJ1ZSBmb3IgdWNsaWJjIGFuZCBnbGliYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBycGNiaW5kLTAuMi4yL3NyYy91dGlsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBycGNiaW5kLTAuMi4yLm9yaWcvc3JjL3V0aWwuYwotKysrIHJwY2JpbmQtMC4yLjIvc3JjL3V0aWwuYwotQEAgLTQxLDcgKzQxLDkgQEAKLSAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSsjaWZkZWYgX19HTElCQ19fCi0gI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxpZmFkZHJzLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiCmluZGV4IDFhMTIwNTUuLjYwZTQ2ZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiCkBAIC0xMiwxOSArMTIsMTEgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcnBjYmluZC9ycGNiaW5kLSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vaW5pdC5kIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zeXMtcXVldWUucGF0Y2ggXAotICAgICAgICAgICAke1VDTElCQ1BBVENIRVN9IFwKLSAgICAgICAgICAgJHtNVVNMUEFUQ0hFU30gXAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZC5jb25mIFwKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc29ja2V0IFwKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwY2JpbmQtcGFpci1hbGwtc3ZjX2dldGFyZ3MtY2FsbHMtd2l0aC1zdmNfZnJlZWFyZ3MucGF0Y2ggXAogICAgICAgICAgICIKLU1VU0xQQVRDSEVTX2xpYmMtbXVzbCA9ICJmaWxlOi8vbXVzbC1zdW5ycGMucGF0Y2giCi0KLVVDTElCQ1BBVENIRVMgPz0gIiIKLU1VU0xQQVRDSEVTID89ICIiCi0KIFNSQ19VUklbbWQ1c3VtXSA9ICJjZjEwY2Q0MWVkODIyOGZjNTRjMzE2MTkxYzFmMDdmZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzRhOWE1MzBkYzdjMTFlMGQ5MDVhYTU5YmNiMDg0N2MwMDkzMTNmMDJlOThkM2Q3OThhYTk1NjhmNDE0YzY2IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGRiMTJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaApAQCAtMCwwICsxLDEwOCBAQAorRnJvbSA0YjI1OGM1YTkwNzhmOGRmNjA2ODRhYjc1MzZjZTNhOGZmMjA3ZTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMiBPY3QgMjAxNyAxMDowMzo1NyArMDAwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGZpeCBjb25maWd1cmUgZmFpbGVkIHdoaWxlIGJ1aWxkIGRpciBjb250YWlucyAieWVzIgorCitXaGlsZSB0aGUgbmFtZSBvZiBidWlsZCBkaXIgY29udGFpbnMgInllcyIsIHRoZSBBQ19FR1JFUF9DUFAKK3Rlc3QgYWx3YXlzIHJldHVybiB0cnVlLgorCitXZSByYXJlbHkgdXNlICJ5ZXM7IiB0byBuYW1lIGJ1aWxkIGRpciwgc28gcy95ZXMveWVzOy9nCitjb3VsZCBmaXggdGhlIGlzc3VlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKaWFuIEthbmcgPGppYW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDEyOTk2Y2QuLjQ3NjVhZjYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEyOCw3ICsxMjgsNyBAQCBmaQorIAorIAorIEFDX0NIRUNLSU5HKGZvciBVbHRyaXgpCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbI2lmIGRlZmluZWQodWx0cml4KSB8fCBkZWZpbmVkKF9fdWx0cml4KQorICAgIHllczsKKyAjZW5kaWYKK0BAIC0xNDUsNyArMTQ1LDcgQEAgZG5sIGdoYXppQGNhaXAucnV0Z2Vycy5lZHUgKEthdmVoIFIuIEdoYXppKToKKyBkbmwgQkJOIGJ1dHRlcmZseSBpcyBub3QgUE9TSVgsIGJ1dCBhIE1BQ0ggQlNEIHN5c3RlbS4KKyBkbmwgRG8gbm90IGRlZmluZSBQT1NJWCBhbmQgVEVSTUlPLgorIEFDX0NIRUNLSU5HKGZvciBidXR0ZXJmbHkpCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbI2lmIGRlZmluZWQoYnV0dGVyZmx5KQorICAgeWVzOworICNlbmRpZgorQEAgLTE1Niw3ICsxNTYsNyBAQCBpZiB0ZXN0IC1uICIkVUxUUklYIjsgdGhlbgorICAgdGVzdCAteiAiJEdDQyIgJiYgQ0M9IiRDQyAtWUJTRCIKKyBmaQorIEFDX0NIRUNLSU5HKGZvciBQT1NJWC4xKQorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgbWFpbiAoKSB7CitAQCAtMTczLDE0ICsxNzMsMTQgQEAgQUNfVFJZX0NPTVBJTEUoCisgI2luY2x1ZGUgPGZjbnRsLmg+XSwgW2ludCB4ID0gU0lHQ0hMRCB8IEZOREVMQVk7XSwgLCBBQ19ERUZJTkUoU1lTVikpCisgCisgQUNfQ0hFQ0tJTkcoZm9yIHNlcXVlbnQvcHR4KQorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgWyNpZmRlZiBfU0VRVUVOVF8KKyAgIHllczsKKyAjZW5kaWYKKyBdLCBMSUJTPSIkTElCUyAtbHNvY2tldCAtbGluZXQiO3NlcXB0eD0xKQorIAorIEFDX0NIRUNLSU5HKFNWUjQpCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbbWFpbiAoKSB7CisgI2lmIGRlZmluZWQoU1ZSNCkgfHwgZGVmaW5lZChfX1NWUjQpCisgICB5ZXM7CitAQCAtMjAwLDkgKzIwMCw5IEBAIGZpCisgQUNfQ0hFQ0tfSEVBREVSUyhbc3Ryb3B0cy5oIHN0cmluZy5oIHN0cmluZ3MuaF0pCisgCisgQUNfQ0hFQ0tJTkcoZm9yIFNvbGFyaXMgMi54KQorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgWyNpZiBkZWZpbmVkKFNWUjQpICYmIGRlZmluZWQoc3VuKQorLSAgeWVzCisrICB5ZXM7CisgI2VuZGlmCisgXSwgTElCUz0iJExJQlMgLWxzb2NrZXQgLWxuc2wgLWxrc3RhdCIpCisgCitAQCAtNjk3LDcgKzY5Nyw3IEBAIGVsc2UKKyBwZGlyPScvZGV2JworIGZpCisgZG5sIFNDTyB1c2VzIHB0eXAlZAorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgWyNpZmRlZiBNX1VOSVgKKyAgICB5ZXM7CisgI2VuZGlmCitAQCAtODgwLDcgKzg4MCw3IEBAIGZpCisgKQorIAorIGlmIHRlc3QgLXogIiRsb2FkIiA7IHRoZW4KKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFsjaWYgZGVmaW5lZChOZVhUKSB8fCBkZWZpbmVkKGFwb2xsbykgfHwgZGVmaW5lZChsaW51eCkKKyAgIHllczsKKyAjZW5kaWYKK0BAIC0xMTEyLDcgKzExMTIsNyBAQCBBQ19DSEVDS0lORyhzeXNsb2cgaW4gbGliYnNkLmEpCisgQUNfVFJZX0xJTksoLCBbY2xvc2Vsb2coKTtdLCBBQ19OT1RFKC0gZm91bmQuKSwgW0xJQlM9IiRvbGRsaWJzIgorIEFDX05PVEUoLSBiYWQgbmV3czogc3lzbG9nIG1pc3NpbmcuKSBBQ19ERUZJTkUoTk9TWVNMT0cpXSldKQorIAorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgWyNpZmRlZiBNX1VOSVgKKyAgICB5ZXM7CisgI2VuZGlmCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vZml4LXBhcmFsbGVsLW1ha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vZml4LXBhcmFsbGVsLW1ha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwY2FmNWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhpcyBmaXhlcyB0aGUgcGFyYWxsZWwgbWFrZSBpbnN0YWxsIGZhaWx1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IHNjcmVlbi00LjAuMy9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNjcmVlbi00LjAuMy5vcmlnL01ha2VmaWxlLmluCi0rKysgc2NyZWVuLTQuMC4zL01ha2VmaWxlLmluCi1AQCAtNzAsNyArNzAsNyBAQCBzY3JlZW46ICQoT0ZJTEVTKQotIC5jLm86Ci0gCSQoQ0MpIC1jIC1JLiAtSSQoc3JjZGlyKSAkKE1fQ0ZMQUdTKSAkKERFRlMpICQoT1BUSU9OUykgJChDRkxBR1MpICQ8Ci0gCi0taW5zdGFsbF9iaW46IC52ZXJzaW9uIHNjcmVlbgotK2luc3RhbGxfYmluOiAudmVyc2lvbiBzY3JlZW4gaW5zdGFsbGRpcnMKLSAJLWlmIFsgLWYgJChERVNURElSKSQoYmluZGlyKS8kKFNDUkVFTikgXSAmJiBbICEgLWYgJChERVNURElSKSQoYmluZGlyKS8kKFNDUkVFTikub2xkIF07IFwKLSAJCXRoZW4gbXYgJChERVNURElSKSQoYmluZGlyKS8kKFNDUkVFTikgJChERVNURElSKSQoYmluZGlyKS8kKFNDUkVFTikub2xkOyBmaQotIAkkKElOU1RBTExfUFJPR1JBTSkgc2NyZWVuICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYzFhNWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKLURFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKLXRoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAotcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKLQotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PTM5NzExNDI5ODkyODlhODE5OGE1NDQyMjA3MDNjMmJmIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgXAotICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfSA9ICJiYXNlLWZpbGVzIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2NyZWVuL3NjcmVlbi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdmaWxlOi8vc2NyZWVuLnBhbScsICcnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLXJlZHVuZGFudC1jb21waWxlci1zYW5pdHktY2hlY2tzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1Byb3ZpZGUtY3Jvc3MtY29tcGlsZS1hbHRlcm5hdGl2ZXMtZm9yLUFDX1RSWV9SVU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vU2tpcC1ob3N0LWZpbGUtc3lzdGVtLWNoZWNrcy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Bdm9pZC1taXMtaWRlbnRpZnlpbmctc3lzdGVtcy1hcy1TVlI0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImE4YzVkYTJmNDJmOGExOGZhNGRhZGEyNDE5ZDE1NDliIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3ZGIyMTE0ZGQ5NjNiMDE2Y2Q0ZGVkMzQ4MzE5NTVkY2JlMzI1MWU1ZWVlNDVhYzI2MDZlNjdlOWYwOTdiMmQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbdXRlbXB0ZXJdID0gImFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPXllcyxhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD1ubyxsaWJ1dGVtcHRlciwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcHR5LW1vZGU9MDYyMCAtLXdpdGgtcHR5LWdyb3VwPTUgXAotICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KLQlmaQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLQlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2Q4M2EyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4xLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiTXVsdGlwbGV4aW5nIHRlcm1pbmFsIG1hbmFnZXIiCitERVNDUklQVElPTiA9ICJTY3JlZW4gaXMgYSBmdWxsLXNjcmVlbiB3aW5kb3cgbWFuYWdlciBcCit0aGF0IG11bHRpcGxleGVzIGEgcGh5c2ljYWwgdGVybWluYWwgYmV0d2VlbiBzZXZlcmFsIFwKK3Byb2Nlc3NlcywgdHlwaWNhbGx5IGludGVyYWN0aXZlIHNoZWxscy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2Z1bmM9YWRkaXRlbSZncm91cD1zY3JlZW4iCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW4uaDtlbmRsaW5lPTI2O21kNT0zOTcxMTQyOTg5Mjg5YTgxOThhNTQ0MjIwNzAzYzJiZiIKKworREVQRU5EUyA9ICJuY3Vyc2VzIFwKKyAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL1JlbW92ZS1yZWR1bmRhbnQtY29tcGlsZXItc2FuaXR5LWNoZWNrcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Qcm92aWRlLWNyb3NzLWNvbXBpbGUtYWx0ZXJuYXRpdmVzLWZvci1BQ19UUllfUlVOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1NraXAtaG9zdC1maWxlLXN5c3RlbS1jaGVja3Mtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQXZvaWQtbWlzLWlkZW50aWZ5aW5nLXN5c3RlbXMtYXMtU1ZSNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTMyYzg5M2FhYmZhZjIwMjAwNzQ3OTAyMTVjOGNhY2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWJhOWFmNjZjYjYyNjE1NWQ2YWJjZTQ3MDNmNDVjY2UwZTMwYTUxMTRhMzY4YmQ2Mzg3Yzk2NmNiYmJiN2M2NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSBcCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgorCWZpCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CisKK3BrZ19wb3N0cm1fJHtQTn0gKCkgeworCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCmluZGV4IDVhYTdkOGEuLmUzMWJlYzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKQEAgLTQ0LDMgKzQ0LDQgQEAKIAlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9CiB9CiAKK1JQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NlZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXNoYWRvdy1DVkUtMjAxNy0xMjQyNCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtc2hhZG93LUNWRS0yMDE3LTEyNDI0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkM2UxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXNoYWRvdy1DVkUtMjAxNy0xMjQyNApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDk1NGUzZDJlNzExM2U5YWMwNjYzMmFlZTNjNjliOGQ4MThjYzg5NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUb21hcyBNcmF6IDx0bXJhekBmZWRvcmFwcm9qZWN0Lm9yZz4KK0RhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTY6MjU6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1ZmZlciBvdmVyZmxvdyBpZiBOVUxMIGxpbmUgaXMgcHJlc2VudCBpbiBkYi4KKworSWYgcHRyLT5saW5lID09IE5VTEwgZm9yIGFuIGVudHJ5LCB0aGUgZmlyc3QgY3ljbGUgd2lsbCBleGl0LAorYnV0IHRoZSBzZWNvbmQgb25lIHdpbGwgaGFwcGlseSB3cml0ZSBwYXN0IGVudHJpZXMgYnVmZmVyLgorV2UgYWN0dWFsbHkgZG8gbm90IHdhbnQgdG8gZXhpdCB0aGUgZmlyc3QgY3ljbGUgcHJlbWF0dXJlbHkKK29uIHB0ci0+bGluZSA9PSBOVUxMLgorU2lnbmVkLW9mZi1ieTogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+CisKK0NWRTogQ1ZFLTIwMTctMTI0MjQKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9jb21tb25pby5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvY29tbW9uaW8uYyBiL2xpYi9jb21tb25pby5jCitpbmRleCBiMTBkYTA2Li4zMWVkYmFhIDEwMDY0NAorLS0tIGEvbGliL2NvbW1vbmlvLmMKKysrKyBiL2xpYi9jb21tb25pby5jCitAQCAtNzUxLDE2ICs3NTEsMTYgQEAgY29tbW9uaW9fc29ydCAoc3RydWN0IGNvbW1vbmlvX2RiICpkYiwgaW50ICgqY21wKSAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKQorIAlmb3IgKHB0ciA9IGRiLT5oZWFkOworIAkgICAgICAgIChOVUxMICE9IHB0cikKKyAjaWYgS0VFUF9OSVNfQVRfRU5ECistCSAgICAgJiYgKE5VTEwgIT0gcHRyLT5saW5lKQorLQkgICAgICYmICggICAoJysnICE9IHB0ci0+bGluZVswXSkKKy0JICAgICAgICAgJiYgKCctJyAhPSBwdHItPmxpbmVbMF0pKQorKwkgICAgICYmICgoTlVMTCA9PSBwdHItPmxpbmUpCisrCSAgICAgICAgIHx8ICgoJysnICE9IHB0ci0+bGluZVswXSkKKysJICAgICAgICAgICAgICYmICgnLScgIT0gcHRyLT5saW5lWzBdKSkpCisgI2VuZGlmCisgCSAgICAgOworIAkgICAgIHB0ciA9IHB0ci0+bmV4dCkgeworIAkJbisrOworIAl9CisgI2lmIEtFRVBfTklTX0FUX0VORAorLQlpZiAoKE5VTEwgIT0gcHRyKSAmJiAoTlVMTCAhPSBwdHItPmxpbmUpKSB7CisrCWlmIChOVUxMICE9IHB0cikgeworIAkJbmlzID0gcHRyOworIAl9CisgI2VuZGlmCistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCmluZGV4IDcwZmY2OGUuLmNjMTg5NjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYwpAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVhZC1sb2dpbi5kZWZzLWJlZm9yZS1kb2luZy1jaHJvb3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vY2hlY2tfc2l6ZV9vZl91aWRfdF9hbmRfZ2lkX3RfdXNpbmdfQUNfQ0hFQ0tfU0laRU9GLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlcmFkZC1jb3B5LWV4dGVuZGVkLWF0dHJpYnV0ZXMtb2YtaG9tZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNoYWRvdy1DVkUtMjAxNy0xMjQyNCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAogICAgICAgICAgICAiCiAKQEAgLTU5LDcgKzYwLDYgQEAKIE5TQ0RPUFQgPSAiIgogTlNDRE9QVF9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LW5zY2QiCiBOU0NET1BUX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGhvdXQtbnNjZCIKLU5TQ0RPUFRfbGliYy11Y2xpYmMgPSAiIC0td2l0aG91dC1uc2NkIgogTlNDRE9QVF9saWJjLWdsaWJjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliYy1zcGF3bicsICctLXdpdGgtbnNjZCcsICctLXdpdGhvdXQtbnNjZCcsIGQpfSIKICAgICAgICAgICAKIFBBTV9QTFVHSU5TID0gImxpYnBhbS1ydW50aW1lIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmNDc0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK21ha2UgLUMgdGVzdCBydW50ZXN0cwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy90ZXJtaW5mb19maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvdGVybWluZm9fZml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U2ZDE1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvdGVybWluZm9fZml4ZXMucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK0RvIG5vdCB1c2UgdGhlIEpEX1RFUk1DQVAgbWFjcm8gc2luY2Ugd2UgY2Fubm90IGdldCB0aGUgdGVybWluZm8gZnJvbQorbmN1cnNlcyBwa2ctY29uZmlnLCBidXQgZml4IHRoZSBtYWNybyB0byBub3QgcmVmZXJlbmNlIGhvc3QgZGlyZWN0b3JpZXMuCitBbHNvIGFkZCBzcmMvdGVzdC9NYWtlZmlsZS5pbiBzbyB0aGF0IHdlIGNhbiB1c2UgLWx0ZXJtY2FwIGlmIHdlIHdhbnQgdG8uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKworLS0tIGEvYXV0b2NvbmYvYWNsb2NhbC5tNAorKysrIGIvYXV0b2NvbmYvYWNsb2NhbC5tNAorQEAgLTUwNiwxNCArNTA2LDEwIEBAIHRoZW4KKyBlbHNlCisgICAgTUlTQ19URVJNSU5GT19ESVJTPSIiCisgZmkKKy1KRF9UZXJtaW5mb19EaXJzPSIkTUlTQ19URVJNSU5GT19ESVJTIFwKKy0gICAgICAgICAgICAgICAgICAvdXNyL2xpYi90ZXJtaW5mbyBcCistICAgICAgICAgICAgICAgICAgL3Vzci9zaGFyZS90ZXJtaW5mbyBcCistICAgICAgICAgICAgICAgICAgL3Vzci9zaGFyZS9saWIvdGVybWluZm8gXAorLQkJICAvdXNyL2xvY2FsL2xpYi90ZXJtaW5mbyIKKysKKyBURVJNQ0FQPS1sdGVybWNhcAorIAorLWZvciB0ZXJtaW5mb19kaXIgaW4gJEpEX1Rlcm1pbmZvX0RpcnMKKytmb3IgdGVybWluZm9fZGlyIGluICRNSVNDX1RFUk1JTkZPX0RJUlMKKyBkbworICAgIGlmIHRlc3QgLWQgJHRlcm1pbmZvX2RpcgorICAgIHRoZW4KKy0tLSBhL2F1dG9jb25mL2NvbmZpZ3VyZS5hYworKysrIGIvYXV0b2NvbmYvY29uZmlndXJlLmFjCitAQCAtMjQ5LDcgKzI0OSwxNCBAQCBBQ19DSEVDS19TSVpFT0Yoc2l6ZV90KQorIEpEX0NIRUNLX0xPTkdfTE9ORworIEpEX0xBUkdFX0ZJTEVfU1VQUE9SVAorIAorLUpEX1RFUk1DQVAKKytkbmwgRG8gbm90IHVzZSBKRF9URVJNQ0FQLCBzaW5jZSB3ZSBjYW5ub3QgZ2V0IHRlcm1pbmZvIGZyb20gbmN1cnNlcyotY29uZmlnIGFueW1vcmUuCisrZG5sIFNldCBURVJNQ0FQPS1sdGVybWNhcCBhbmQgQUNfREVGSU5FKFVTRV9URVJNQ0FQLDEsW0RlZmluZSB0byB1c2UgdGVybWNhcF0pCisrZG5sIHRvIHVzZSBsaWJ0ZXJtY2FwLgorK1RFUk1DQVA9IiIKKytNSVNDX1RFUk1JTkZPX0RJUlM9IiIKKytBQ19TVUJTVChURVJNQ0FQKWRubAorK0FDX1NVQlNUKE1JU0NfVEVSTUlORk9fRElSUylkbmwKKysKKyBKRF9HQ0NfV0FSTklOR1MKKyAKKyBKRF9TRVRfT0JKX1NSQ19ESVIoc3JjKQorQEAgLTM2NCw3ICszNzEsNyBAQCBBQ19DT05GSUdfSEVBREVSKHNyYy9zeXNjb25mLmg6c3JjL2NvbmZpCisgZG5sIEFDX0NPTkZJR19TVUJESVJTKGRlbW8pCisgCisgQUNfT1VUUFVUKE1ha2VmaWxlOmF1dG9jb25mL01ha2VmaWxlLmluIFwKKy0gIHNyYy9NYWtlZmlsZSBzbHNoL01ha2VmaWxlIG1vZHVsZXMvTWFrZWZpbGUgZGVtby9NYWtlZmlsZSBcCisrICBzcmMvTWFrZWZpbGUgc3JjL3Rlc3QvTWFrZWZpbGUgc2xzaC9NYWtlZmlsZSBtb2R1bGVzL01ha2VmaWxlIGRlbW8vTWFrZWZpbGUgXAorICAgc2xhbmcucGM6YXV0b2NvbmYvc2xhbmdwYy5pbiBcCisgKQorIAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL3Rlc3QvTWFrZWZpbGUuaW4KK0BAIC0wLDAgKzEsOTAgQEAKKysjIC0qLSBtYWtlIC0qLQorK1RFU1RfU0NSSVBUU19TTEMgPSBhcmd2IHN5bnRheCBzY2lyY3VpdCBlcXMgc3NjYW5mIGxvb3BzIGFyaXRoIGFycmF5IHN0cm9wcyBcCisrICBic3RyaW5nIHBhY2sgc3RkaW8gYXNzb2Mgc2VsZmxvYWQgc3RydWN0IG5zcGFjZSBwYXRoIGlmZXZhbCBhbnl0eXBlIGFycm11bHQgXAorKyAgdGltZSB1dGY4IGV4Y2VwdCBidWdzIGxpc3QgcmVnZXhwIG1ldGhvZCBkZXJlZiBuYW5pbmYgb3ZlcmZsb3cgc29ydCBcCisrICBsb25nbG9uZyBzaWduYWwgZG9sbGFyIHJlcSBkb2NmdW4gZGVidWcgcXVhbGlmIGNvbXBhcmUgYnJlYWsgbXVsdGxpbmUgXAorKyAgc3RhY2sgbWlzYyBwb3NpeGlvIHBvc2RpciBwcm9jIG1hdGgKKysKKytURVNUX1NDUklQVFNfTk9fU0xDID0gYXV0b2xvYWQgbnNwYWNlMiBwcmVwCisrCisrVEVTVF9TQ1JJUFRTID0gJChURVNUX1NDUklQVFNfU0xDKSAkKFRFU1RfU0NSSVBUU19OT19TTEMpCisrCisrVEVTVF9QR00gPSBzbHRlc3QKKytNRU1DSEVDSyA9IHZhbGdyaW5kIC0tdG9vbD1tZW1jaGVjayAtLWxlYWstY2hlY2s9eWVzIC0tbGVhay1yZXNvbHV0aW9uPW1lZCAtLW51bS1jYWxsZXJzPTIwCisrUlVOX1RFU1RfUEdNID0gLi8kKFRFU1RfUEdNKQorK1NMQU5HSU5DID0gLi4KKytTTEFOR0xJQiA9IC4uLyQoQVJDSClvYmpzCisrT1RIRVJfTElCUyA9IC1sbSBAVEVSTUNBUEAKKytPVEhFUl9DRkxBR1MgPQorKworK3J1bnRlc3RzOiAkKFRFU1RfUEdNKSBjbGVhbnRtcAorKwlAdGVzdHM9IiI7IFwKKysJZm9yIHRlc3QgaW4gJChURVNUX1NDUklQVFMpOyBcCisrCWRvIFwKKysJICAgdGVzdHM9IiQkdGVzdHMgJCR0ZXN0LnNsIjsgXAorKwlkb25lOyBcCisrCWZvciB0ZXN0IGluICQoVEVTVF9TQ1JJUFRTX1NMQyk7IFwKKysJZG8gXAorKwkgICB0ZXN0cz0iJCR0ZXN0cyAkJHRlc3Quc2xjIjsgXAorKwlkb25lOyBcCisrCU1BS0VSVU5OSU5HPTEgLi9ydW50ZXN0cy5zaCAkJHRlc3RzCisrIwlAdG91Y2ggJChURVNUX1BHTSkuYworKworK3VwZGF0ZTogJChURVNUX1BHTSkgY2xlYW50bXAKKysJQHRlc3RzPSIiOyBcCisrCWZvciBYIGluICQoVEVTVF9TQ1JJUFRTKTsgXAorKwlkbyBcCisrCSAgaWYgWyAhIC1lIGxhc3RydW4vJCRYLnNsIF0gfHwgWyAkJFguc2wgLW50IGxhc3RydW4vJCRYLnNsIF0gOyBcCisrCSAgdGhlbiBcCisrCSAgIHRlc3RzPSIkJHRlc3RzICQkWC5zbCI7IFwKKysJICBmaSBcCisrCWRvbmU7IFwKKysJZm9yIFggaW4gJChURVNUX1NDUklQVFNfU0xDKTsgXAorKwlkbyBcCisrCSAgaWYgWyAhIC1lIGxhc3RydW4vJCRYLnNsYyBdIHx8IFsgJCRYLnNsIC1udCBsYXN0cnVuLyQkWC5zbGMgXSA7IFwKKysJICB0aGVuIFwKKysJICAgdGVzdHM9IiQkdGVzdHMgJCRYLnNsYyI7IFwKKysJICBmaSBcCisrCWRvbmU7IFwKKysJaWYgdGVzdCAtbiAiJCR0ZXN0cyI7IFwKKysJdGhlbiBcCisrCSAgTUFLRVJVTk5JTkc9MSAuL3J1bnRlc3RzLnNoICQkdGVzdHM7IFwKKysJZmkKKysjCUB0b3VjaCAkKFRFU1RfUEdNKS5jCisrCisrbWVtY2hlY2tfcnVudGVzdHM6ICQoVEVTVF9QR00pIGNsZWFudG1wCisrCUBlY2hvICIiCisrCUBlY2hvICJSdW5uaW5nIHRlc3RzOiIKKysJQGVjaG8gIiIKKysJLUBmb3IgWCBpbiAkKFRFU1RfU0NSSVBUUyk7IFwKKysJZG8gXAorKwkgICAkKE1FTUNIRUNLKSAtLWxvZy1maWxlPWxvZy4kJHtYfSAkKFJVTl9URVNUX1BHTSkgJCRYLnNsOyBcCisrCSAgIGdyZXAgRVJST1IgbG9nLiQke1h9OyBncmVwICdsb3N0OiBbXjBdJyBsb2cuJCR7WH07IFwKKysJICAgJChNRU1DSEVDSykgLS1sb2ctZmlsZT1sb2cuJCR7WH1fdSAkKFJVTl9URVNUX1BHTSkgLXV0ZjggJCRYLnNsOyBcCisrCSAgIGdyZXAgRVJST1IgbG9nLiQke1h9X3U7IGdyZXAgJ2xvc3Q6IFteMF0nIGxvZy4kJHtYfV91OyBcCisrCWRvbmUKKysjCXRvdWNoICQoVEVTVF9QR00pLmMKKysKKyttZW1jaGVja19ydW50ZXN0c19zbGM6ICQoVEVTVF9QR00pIGNsZWFudG1wCisrCUBlY2hvICIiCisrCUBlY2hvICJSdW5uaW5nIHRlc3RzOiIKKysJQGVjaG8gIiIKKysJLUBmb3IgWCBpbiAkKFRFU1RfU0NSSVBUU19TTEMpOyBcCisrCWRvIFwKKysJICAgJChNRU1DSEVDSykgLS1sb2ctZmlsZT1sb2cuJCR7WH1fYyAkKFJVTl9URVNUX1BHTSkgJCRYLnNsYzsgXAorKwkgICAkKE1FTUNIRUNLKSAtLWxvZy1maWxlPWxvZy4kJHtYfV91YyAkKFJVTl9URVNUX1BHTSkgLXV0ZjggJCRYLnNsYzsgXAorKwlkb25lCisrIwl0b3VjaCAkKFRFU1RfUEdNKS5jCisrCisrbWVtY2hlY2s6IG1lbWNoZWNrX3J1bnRlc3RzIG1lbWNoZWNrX3J1bnRlc3RzX3NsYworKworKyQoVEVTVF9QR00pOiAkKFRFU1RfUEdNKS5jIGFzc29jLmMgbGlzdC5jICQoU0xBTkdMSUIpL2xpYnNsYW5nLmEKKysJJChDQykgJChDRkxBR1MpICQoT1RIRVJfQ0ZMQUdTKSAkKExERkxBR1MpICQoVEVTVF9QR00pLmMgLW8gJChURVNUX1BHTSkgLUkkKFNMQU5HSU5DKSAtTCQoU0xBTkdMSUIpIC1sc2xhbmcgJChPVEhFUl9MSUJTKQorK2NsZWFudG1wOgorKwktL2Jpbi9ybSAtcmYgdG1wZmlsZSouKiB0bXBkaXIqLioKKytjbGVhbjogY2xlYW50bXAKKysJLS9iaW4vcm0gLWYgKn4gKi5vICoubG9nIGxvZy5waWQqICouc2xjIGxvZy4qICoubG9nLSoKKytkaXN0Y2xlYW46IGNsZWFuCisrCS9iaW4vcm0gLWYgJChURVNUX1BHTSkgJChURVNUX1BHTSkuZ2NkYSAkKFRFU1RfUEdNKS5nY25vCisrLlBIT05ZOiBjbGVhbiBtZW1jaGVjayBydW50ZXN0cyBtZW1jaGVja19ydW50ZXN0c19zbGMgbWVtY2hlY2tfcnVudGVzdHMgY2xlYW50bXAKKysKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy90ZXN0LWFkZC1vdXRwdXQtaW4tdGhlLWZvcm1hdC1yZXN1bHQtdGVzdG5hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdhOWJiOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmcvdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMzg2ODhlZTI3NTQ0MTVjZjJhMTkzNWRhZmI4Mjc4ODYxYjczMTVlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZWZhbiBTdHJvZ2luIDxzc3Ryb2dpbkBjaXNjby5jb20+CitEYXRlOiBUaHUsIDIgTWFyIDIwMTcgMDA6MjY6MzEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdDogYWRkIG91dHB1dCBpbiB0aGUgZm9ybWF0ICJyZXN1bHQ6IHRlc3RuYW1lIgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gU3Ryb2dpbiA8c3N0cm9naW5AY2lzY28uY29tPgorLS0tCisgc3JjL3Rlc3QvcnVudGVzdHMuc2ggfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcnVudGVzdHMuc2ggYi9zcmMvdGVzdC9ydW50ZXN0cy5zaAoraW5kZXggYTNlYWFkMC4uNjRmMDcwNSAxMDA3NTUKKy0tLSBhL3NyYy90ZXN0L3J1bnRlc3RzLnNoCisrKysgYi9zcmMvdGVzdC9ydW50ZXN0cy5zaAorQEAgLTM0LDggKzM0LDEwIEBAIGRvCisgICAgIHRoZW4KKyAJbl9mYWlsZWQ9YGV4cHIgJHtuX2ZhaWxlZH0gKyAxYAorIAl0ZXN0c19mYWlsZWQ9IiR0ZXN0c19mYWlsZWQgJHRlc3RmaWxlIgorKwllY2hvICJGQUlMOiAkdGVzdGZpbGUiCisgICAgIGVsc2UKKyAgICAgICAgIHRvdWNoIGxhc3RydW4vJHRlc3RmaWxlCisrCWVjaG8gIlBBU1M6ICR0ZXN0ZmlsZSIKKyAgICAgZmkKKyBkb25lCisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4xYS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCmluZGV4IGM3MWQ4MDQuLjA1ODVjMTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCkBAIC0xNyw2ICsxNyw5IEBACiBTUkNfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlB9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vbm8teC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kb250LWxpbmstdG8taG9zdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LWFkZC1vdXRwdXQtaW4tdGhlLWZvcm1hdC1yZXN1bHQtdGVzdG5hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVybWluZm9fZml4ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjNTIzNTMxMzA0MmVkMGU3MWVjNzA4ZjdiODVlYzI0MSIKQEAgLTI1LDcgKzI4LDcgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nLyIKIFBSRU1JUlJPUlNfYXBwZW5kID0gIlxuIGh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvLiogaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy9vbGQvIFxuIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAogQ0xFQU5CUk9LRU4gPSAiMSIKIAogRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1vbmlnIgpAQCAtNDksNiArNTIsMjcgQEAKICAgICBjZCAke0J9CiB9CiAKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyBzcmMgc3RhdGljCisJb2VfcnVubWFrZSAtQyBzcmMvdGVzdCBzbHRlc3QKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlta2RpciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJZm9yIGYgaW4gTWFrZWZpbGUgc2x0ZXN0IHJ1bnRlc3RzLnNoICouc2wgKi5pbmM7IGRvCisJCWNwICR7U30vc3JjL3Rlc3QvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KKwlkb25lCisJc2VkIC1lICdzL1wgXCQoVEVTVF9QR00pXC5jXCBhc3NvY1wuY1wgbGlzdFwuY1wgXCQoU0xBTkdMSUIpXC9saWJzbGFuZ1wuYS8vJyBcCisJICAgIC1lICcvXCQoQ0MpLiooVEVTVF9QR00pL2QnIFwKKwkgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9NYWtlZmlsZQorCisJY3AgJHtTfS9zbHNoL2xpYi9yZXF1aXJlLnNsICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJc2VkIC1pICdzL1wuXC5cL1wuXC5cL3Nsc2hcL2xpYlwvcmVxdWlyZVwuc2wvcmVxdWlyZVwuc2wvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L3JlcS5zbAorCisJY3AgJHtTfS9kb2MvdGV4dC9zbGFuZ2Z1bi50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KKwlzZWQgLWkgJ3MvXC5cLlwvXC5cLlwvZG9jXC90ZXh0XC9zbGFuZ2Z1blwudHh0L3NsYW5nZnVuXC50eHQvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2RvY2Z1bi5zbAorfQorCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS92Mi9tb2R1bGVzLyAke2RhdGFkaXJ9L3Nsc2gvIgogCiBQQVJBTExFTF9NQUtFID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYgppbmRleCAwNjk3YzczLi44YWM4ZTg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgZmlsZSBzdGF0dXMgZGlzcGxheSB1dGlsaXR5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvdXRpbHMvZmlsZS8iCiBERVNDUklQVElPTiA9ICJEaXNwbGF5cyBhbGwgaW5mb3JtYXRpb24gYWJvdXQgYSBmaWxlIHRoYXQgdGhlIHN0YXQoKSBjYWxsIHByb3ZpZGVzIGFuZCBhbGwgaW5mb3JtYXRpb24gYWJvdXQgYSBmaWxlc3lzdGVtIHRoYXQgc3RhdGZzKCkgcHJvdmlkZXMuIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogTElDRU5TRSA9ICJHUEx2MiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzL2ZpbGVzL3RleGluZm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy9maWxlcy90ZXhpbmZvLnBhdGNoCmluZGV4IDVhYzU5NTEuLmYyM2ExZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzL2ZpbGVzL3RleGluZm8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3MvZmlsZXMvdGV4aW5mby5wYXRjaApAQCAtMSwzICsxLDQgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tIGEvZG9jL3N0cmVzcy50ZXhpCiArKysgYi9kb2Mvc3RyZXNzLnRleGkKIEBAIC02Miw0NyArNjIsNDcgQEAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwppbmRleCBkNDJhMDRhLi44MGVjMGFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCkBAIC00LDcgKzQsNyBAQAogQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LnN1ZG8ud3MvYnVncy8iCiBTRUNUSU9OID0gImFkbWluIgogTElDRU5TRSA9ICJJU0MgJiBCU0QgJiBabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0xJQ0VOU0U7bWQ1PWY2MDBhNDdjMmEyY2RkZTU4OTllNDQ5NjA3ODEwZWQxIFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT02NTJmYjQzMzRjMTNiNTExNTk3ZDc5NDBlZjhiMzMyMyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQxO21kNT1jZmU0MTExMmY5NmMxOWEwNzQ5MzRkMTI4ZjQ1YzY5MyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9yZWFsbG9jYXJyYXkuYztiZWdpbmxpbmU9MztlbmRsaW5lPTE2O21kNT04NWIwOTA1Yjc5NWQ0ZDU4YmYyZTAwNjM1NjQ5ZWVjNiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9mbm1hdGNoLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yNzttZDU9NjdmODNlZTliZDQ1NjU1NzM5NzA4MmY4ZjFiZTBlZmQgXApAQCAtMjcsNiArMjcsMTIgQEAKIAogIyBta3NpZ25hbWUvbWtzaWdsaXN0IGFyZSB1c2VkIG9uIGJ1aWxkIGhvc3QgdG8gZ2VuZXJhdGUgc291cmNlIGZpbGVzCiBkb19jb21waWxlX3ByZXBlbmQgKCkgeworCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHN1ZG9fdXNhZ2UuaAorCXNlZCAtaSAgXAorCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAncywtLWJ1aWxkPSR7QlVJTERfU1lTfSwsZycgXAorCSAgICAtZSAncywtLWhvc3Q9JHtIT1NUX1NZU30sLGcnIFwKKwkgICAgJHtCfS9zcmMvc3Vkb191c2FnZS5oCiAJb2VfcnVubWFrZSBTU1BfQ0ZMQUdTPSIiIFNTUF9MREZMQUdTPSIiIENDPSIkQlVJTERfQ0MiIENGTEFHUz0iJEJVSUxEX0NGTEFHUyIgQ1BQRkxBR1M9IiRCVUlMRF9DUFBGTEFHUyAtSSR7U30vaW5jbHVkZSAtSSR7U30gLUkke0J9IiAgLUMgbGliL3V0aWwgbWtzaWduYW1lIG1rc2lnbGlzdAogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMTlwMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4xOXAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTY1OWMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4xOXAyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotcmVxdWlyZSBzdWRvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuc3Vkby53cy9zdWRvL2Rpc3Qvc3Vkby0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci1pZF90LWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9zdWRvLnBhbSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMxYTYwOTBlZDFkMDk0NmZhMjJjYmExOWU4NmFhZmVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzN2UxOGU2N2MyYWQ1OWVjYWNmYTRiNzcwNzE5OGIwOWZjZjg0OTE0NjIxNTg1YTliYzY3MGRjYzMxYTUyZTAiCi0KLURFUEVORFMgKz0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0gKz0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWxpbWl0cyBwYW0tcGx1Z2luLWtleWluaXQnLCAnJywgZCl9IgotCi1FWFRSQV9PRUNPTkYgKz0gIiBcCi0gICAgICAgICAgICAgYWNfY3ZfdHlwZV9yc2l6ZV90PW5vIFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLWVuYWJsZS10bXBmaWxlcy5kPSR7bGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKLSAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zdWRvLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbwotCWZpCi0KLQljaG1vZCA0MTExICR7RH0ke2JpbmRpcn0vc3VkbwotCWNobW9kIDA0NDAgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2VycwotCi0JIyBFeHBsaWNpdGx5IHJlbW92ZSB0aGUgJHtsb2NhbHN0YXRlZGlyfS9ydW4gZGlyZWN0b3J5IHRvIGF2b2lkIFFBIGVycm9yCi0Jcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3N1ZG8KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90bXBmaWxlcy5kIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vJHtCUE59LyoubGEgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjBwMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjI0YjNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIKQEAgLTAsMCArMSwzNiBAQAorcmVxdWlyZSBzdWRvLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuc3Vkby53cy9zdWRvL2Rpc3Qvc3Vkby0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci1pZF90LWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zdWRvLnBhbSIKKworU1JDX1VSSVttZDVzdW1dID0gIjAzZGE4ZTcxMWNhY2E2ZmQ5M2U1Nzc1MWJmYjc0YWRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkNDJhZTEwNTllOTM1Zjc5NWM2OWVhOTdiM2RlMDlmZTk0MTBhNThhNzRiNWQ1ZTY4MzZlYjUwNjdhNDQ1ZDkiCisKK0RFUEVORFMgKz0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gKz0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWxpbWl0cyBwYW0tcGx1Z2luLWtleWluaXQnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgICAgICAgICAgYWNfY3ZfdHlwZV9yc2l6ZV90PW5vIFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLWVuYWJsZS10bXBmaWxlcy5kPSR7bGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKKyAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zdWRvLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbworCWZpCisKKwljaG1vZCA0MTExICR7RH0ke2JpbmRpcn0vc3VkbworCWNobW9kIDA0NDAgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2VycworCisJIyBFeHBsaWNpdGx5IHJlbW92ZSB0aGUgJHtsb2NhbHN0YXRlZGlyfS9ydW4gZGlyZWN0b3J5IHRvIGF2b2lkIFFBIGVycm9yCisJcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3N1ZG8KK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90bXBmaWxlcy5kIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vJHtCUE59LyoubGEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtZml4LXByb2JsZW1zLXRoYXQtY2F1c2VzLWEtc2VnbWVudGF0aW9uLWZhdWx0LXVuZGVyLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjQzMWFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBjYjcyYjNlMTcyYzIzOGI0YjVhZTU5MzVkYzZiZTU0ZjUwMzRmY2YxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzAgSnVuIDIwMTcgMTg6MjA6MDYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGZpeCBwcm9ibGVtcyB0aGF0IGNhdXNlcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCB1bmRlciBzb21lCisgY29uZGl0aW9ucworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBubyB1cHN0cmVhbSBdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBrc3ltX21vZC5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2tzeW1fbW9kLmMgYi9rc3ltX21vZC5jCitpbmRleCA2ZTI2ZGExLi5hM2RhYTdkIDEwMDY0NAorLS0tIGEva3N5bV9tb2QuYworKysrIGIva3N5bV9tb2QuYworQEAgLTE4Niw3ICsxODYsNiBAQCBleHRlcm4gaW50IEluaXRNc3ltcygpCisgCQllbHNlCisgCQkJU3lzbG9nKExPR19FUlIsICJFcnJvciBsb2FkaW5nIGtlcm5lbCBzeW1ib2xzICIgXAorIAkJCSAgICAgICAiLSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKy0JCWZjbG9zZShrc3ltcyk7CisgCQlyZXR1cm4oMCk7CisgCX0KKyAKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMi1NYWtlLXdheS1mb3ItcmVzcGVjdGluZy1mbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiZGVmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMi1NYWtlLXdheS1mb3ItcmVzcGVjdGluZy1mbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYjIyZjI0NDczMmNkMGY0NzVhZjJmODJmYzdlZWNlYzQ5ZjkwNjIzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEgSnVsIDIwMTcgMDA6MDE6NTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIE1ha2Ugd2F5IGZvciByZXNwZWN0aW5nIGZsYWdzIGZyb20gZW52aXJvbm1lbnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDQgKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDVhZjE2ODkuLmFmNjk5ZDIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xNywxNCArMTcsMTIgQEAKKyAjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAjICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgCistQ0M9IGdjYworICNTS0ZMQUdTPSAtZyAtRFNZU1YgLVdhbGwKKyAjTERGTEFHUz0gLWcKKy1TS0ZMQUdTPSAkKFJQTV9PUFRfRkxBR1MpIC1PMyAtRFNZU1YgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGwgLWZuby1zdHJlbmd0aC1yZWR1Y2UKKytTS0ZMQUdTID0gJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1EU1lTViAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZQorICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEVfU09VUkNFCisgIyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRTY0X1NPVVJDRQorICMgJChzaGVsbCBnZXRjb25mIExGU19TS0ZMQUdTKQorLUxERkxBR1M9IC1zCisgCisgIyBMb29rIHdoZXJlIHlvdXIgaW5zdGFsbCBwcm9ncmFtIGlzLgorIElOU1RBTEwgPSAvdXNyL2Jpbi9pbnN0YWxsCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCmluZGV4IDc4YjhkN2EuLjFhNTM3ZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCkBAIC0xMSwxMSArMTEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xOTttZDU9N2U4N2VkMGFlNjE0MmRlMDc5YmNlNzM4YzEwYzg5OWQgXAogICAgICAgICAgICAgICAgICAgICIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKK2luaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZAogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuaW5mb2Ryb20ub3JnL3Byb2plY3RzL3N5c2tsb2dkL2Rvd25sb2FkL3N5c2tsb2dkLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC1pbnN0YWxsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1NYWtlLXdheS1mb3ItcmVzcGVjdGluZy1mbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3N5c2tsb2dkIFwKICAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jb25mIFwKICAgICAgICAgICAgZmlsZTovL3N5c2xvZ2Quc2VydmljZSBcCkBAIC0zMCwxMSArMzIsMTAgQEAKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgogCiBJTklUU0NSSVBUX05BTUUgPSAic3lzbG9nIgotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYuJHtCUE59IgorQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYiCitSQ09ORkxJQ1RTXyR7UE59LXN5c2xvZyA9ICJyc3lzbG9nIGJ1c3lib3gtc3lzbG9nIHN5c2xvZy1uZyIKIAotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1EU1lTViIKK0NGTEFHUyArPSAiLURTWVNWIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRSIKIAogZG9faW5zdGFsbCAoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggXApAQCAtNTcsMjEgKzU4LDYgQEAKIAogRklMRVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lza2xvZ2QuY29uZicsICcnLCBkKX0iCiAKLSMgc3lza2xvZ2QgcGFja2FnZSBoYXMgbm8gaW50ZXJuYWwgc3lzdGVtZCBzdXBwb3J0LCBzbyB3ZSB3ZWlnaCBidXN5Ym94J3MKLSMgc3lza2xvZ2QgdXRpbGl0eSBvdmVyIGl0IGluIGNhc2Ugb2Ygc3lzdGVtZAotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcxMCcsJzEwMCcsZCl9IgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzeXNsb2dkIGtsb2dkIHN5c2xvZy1jb25mIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCdzeXNsb2ctaW5pdCcsJycsZCl9IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAic3lzbG9nZC44IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N5c2xvZ2QuOF0gPSAiJHttYW5kaXJ9L21hbjgvc3lzbG9nZC44IgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3lzbG9nZF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3N5c2xvZ2QiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVba2xvZ2RdID0gIiR7YmFzZV9zYmluZGlyfS9rbG9nZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2ctaW5pdF0gPSAiJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N5c2xvZy1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mIgotCiBwa2dfcHJlcm1fJHtQTn0gKCkgewogCWlmIHRlc3QgIngkRCIgPSAieCI7IHRoZW4KIAlpZiB0ZXN0ICIkMSIgPSAidXBncmFkZSIgLW8gIiQxIiA9ICJyZW1vdmUiOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKaW5kZXggYmI1NjI5ZC4uMGJjN2UxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYwpAQCAtMTcsOCArMTcsMTAgQEAKICMgYXV0b3Rvb2xzLWJyb2tlbnNlcCBhcyB0aGlzIHBhY2thZ2UgZG9lc24ndCB1c2UgYXV0b21ha2UKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IHN5c3RlbWQKIAotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc2Vuc29ycyIKLUVYVFJBX09FTUFLRSArPSAnTEZMQUdTPSIiJworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbG0tc2Vuc29yc10gPSAiLS1lbmFibGUtc2Vuc29ycywtLWRpc2FibGUtc2Vuc29ycyxsbXNlbnNvcnMsbG1zZW5zb3JzLWxpYnNlbnNvcnMiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXN0cmlwcGluZyIKIAogU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXNzdGF0LnNlcnZpY2UiCkBAIC0zMiwxMCArMzQsMTYgQEAKIAlhdXRvdG9vbHNfZG9faW5zdGFsbAogCiAJIyBkb24ndCBpbnN0YWxsIC92YXIvbG9nL3NhIHdoZW4gcG9wdWxhdGluZyByb290ZnMuIERvIGl0IHRocm91Z2ggdm9sYXRpbGUKLQogCXJtIC1yZiAke0R9L3ZhcgotCWluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9zeXNzdGF0ICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJICAgICAgICBpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X3N5c3N0YXQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKwlmaQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwkgICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvc2EgLSAtIC0gLSIgXAorCQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zeXNzdGF0LmNvbmYKKwlmaQogCiAJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N5c3N0YXQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQpAQCAtNTUsNCArNjMsMyBAQAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9zYSIKIAogVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxpbnRsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmYzNjNiMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgc3lzc3RhdC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImYxNmFlOGVkZDQ2MmY1MTk5ZWUwMzNmN2MwZTJjMTk3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlMTAwODY1NjU3NWU3MDQ4NmI0NTZlNzk3NzVlOThkM2I4NzMyZDdlMmNiNDA4NTU5MjA5YmQwMzE4ZTA4MDciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJhZjkzMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjhmNGE1ZDBkZTI5ZjEwNTYxNTNlMjVlN2E5YzUxOGQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhMzhlZmFhMGNhODVlZTU0ODRkMDQ2YmQ0MjcwMTI5NzkyNjRmZWYxN2YwN2ZkNzg1NTg2MGU1OTI4MTk0ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgppbmRleCA1ZmRiYmNlLi4xZWZmZWYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlNlY3VyaXR5IHRvb2wgdGhhdCBpcyBhIHdyYXBwZXIgZm9yIFRDUCBkYWVtb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zb2Z0cGFub3JhbWEub3JnL05ldC9OZXR3b3JrX3NlY3VyaXR5L1RDUF93cmFwcGVycy8iCiBERVNDUklQVElPTiA9ICJUb29scyBmb3IgbW9uaXRvcmluZyBhbmQgZmlsdGVyaW5nIGluY29taW5nIHJlcXVlc3RzIGZvciB0Y3AgXAogICAgICAgICAgICAgICAgc2VydmljZXMuIgogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCkBAIC03Myw3ICs3NCw2IEBACiAgICAgICAgICAgICAgICAgJ0VYVFJBX0NGTEFHUz0ke0NGTEFHU30gLURTWVNfRVJSTElTVF9ERUZJTkVEIC1ESEFWRV9TVFJFUlJPUiAtREhBVkVfV0VBS1NZTVMgLURfUkVFTlRSQU5UIC1ESU5FVDY9MSAtRHNzX2ZhbWlseT1fX3NzX2ZhbWlseSAtRHNzX2xlbj1fX3NzX2xlbiciCiAKIEVYVFJBX09FTUFLRV9ORVRHUk9VUCA9ICItRE5FVEdST1VQIC1EVVNFX0dFVERPTUFJTiIKLUVYVFJBX09FTUFLRV9ORVRHUk9VUF9saWJjLXVjbGliYyA9ICItRFVTRV9HRVRET01BSU4iCiBFWFRSQV9PRU1BS0VfTkVUR1JPVVBfbGliYy1tdXNsID0gIi1EVVNFX0dFVERPTUFJTiIKIAogRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiICdMSUJTPSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXkvdGVtcGxhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXkvdGVtcGxhdGUucHkKaW5kZXggOGI3MDMzZS4uZTM2OWY3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15L3RlbXBsYXRlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS90ZW1wbGF0ZS5weQpAQCAtMSw0ICsxLDQgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24yLjcKKyMhIC91c3IvYmluL2VudiBweXRob24zCiAKICMgdGVtcGxhdGUucHkgKGFuZCBvdGhlciBmaWxlbmFtZXMpCiAjIEJ5IE1heCBFbGlhc2VyIChtYXguZWxpYXNlckBpbnRlbC5jb20pCkBAIC03MSw3ICs3MSw3IEBACiAgICAgICAgdGhpc19iaW5hcnkgKyAiIGlzIG5vdCBvbmUgb2YgIiArICcsICcuam9pbiAodmFsaWRfYmluYXJpZXMpCiAKIGlmICItLXZlcnNpb24iIGluIHN5cy5hcmd2OgotICAgIHByaW50IHZlcnNpb25fc3RyCisgICAgcHJpbnQodmVyc2lvbl9zdHIpCiAgICAgc3lzLmV4aXQgKDApCiAKICMgRm9yIGRlYnVnZ2luZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4zLmJiCmluZGV4IGQ4MjczMWUuLmY1OGRmOTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjMuYmIKQEAgLTc5LDQgKzc5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCiAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCiAKKyMgTGllIGFib3V0IHByb3ZpZGluZyB0aGUgTG9jYWxlOjpnZXR0ZXh0X3hzIG1vZHVsZS4gSXQgaXMgbm90IGFjdHVhbGx5IGJ1aWx0LAorIyBidXQgdGhlIGNvZGUgd2lsbCB0ZXN0IGZvciBpdCBhbmQgaWYgbm90IGZvdW5kIHVzZSBMb2NhbGU6OmdldHRleHRfcHAgaW5zdGVhZC4KKyMgSG93ZXZlciwgdGhpcyBjYXVzZXMgYSBmaWxlIGRlcGVuZGVuY3kgb24gcGVybChMb2NhbGU6OmdldHRleHRfeHMpIHRvIGJlCisjIGdlbmVyYXRlZCwgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQuCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMS1GaXgtTWFrZWZpbGUtcXVvdGluZy1idWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAxLUZpeC1NYWtlZmlsZS1xdW90aW5nLWJ1Zy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDlmYTA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMS1GaXgtTWFrZWZpbGUtcXVvdGluZy1idWcucGF0Y2gKQEAgLTAsMCArMSwxNzQgQEAKK0Zyb20gYjUyMGQyMGI4MTIyYTc4M2Y5OWYwODg3NThiNzhkOTI4ZjcwZWUzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjQyOjQ1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBNYWtlZmlsZSBxdW90aW5nIGJ1ZworCitQcm9ibGVtIHdpdGggSU5TVEFMTEFSR1MgcmVwb3J0ZWQgYnkgWmVmcmFtIGluOgoraHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTctT2N0b2Jlci8wMjUzNjAuaHRtbAorRml4IHNpbWlsYXIgcHJvYmxlbXMgdG9vLgorKiBNYWtlZmlsZSAoWklDX0lOU1RBTEwsIFZBTElEQVRFX0VOViwgQ0MsIGluc3RhbGwpCisoSU5TVEFMTCwgdmVyc2lvbiwgSU5TVEFMTEFSR1MsIHJpZ2h0X3Bvc2l4LCBwb3NpeF9yaWdodCkKKyhjaGVja19wdWJsaWMpOiBVc2UgYXBvc3Ryb3BoZXMgdG8gcHJldmVudCB1bmRlc2lyYWJsZQoraW50ZXJwcmV0YXRpb24gb2YgbmFtZXMgYnkgdGhlIHNoZWxsLiAgV2Ugc3RpbGwgZG8gbm90IHN1cHBvcnQKK2RpcmVjdG9yeSBuYW1lcyBjb250YWluaW5nIGFwb3N0cm9waGVzIG9yIG5ld2xpbmVzLCBidXQgdGhpcyBpcworZ29vZCBlbm91Z2guCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCisqIE5FV1M6IE1lbnRpb24gdGhpcy4KKy0tLQorIE1ha2VmaWxlIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5FV1MgICAgIHwgIDggKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYzkyZWRjMC4uOTc2NDljYSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTMxMyw3ICszMTMsNyBAQCBaRkxBR1M9CisgCisgIyBIb3cgdG8gdXNlIHppYyB0byBpbnN0YWxsIHR6IGJpbmFyeSBmaWxlcy4KKyAKKy1aSUNfSU5TVEFMTD0JJChaSUMpIC1kICQoREVTVERJUikkKFRaRElSKSAkKExFQVBTRUNPTkRTKQorK1pJQ19JTlNUQUxMPQkkKFpJQykgLWQgJyQoREVTVERJUikkKFRaRElSKScgJChMRUFQU0VDT05EUykKKyAKKyAjIFRoZSBuYW1lIG9mIGEgUG9zaXgtY29tcGxpYW50ICdhd2snIG9uIHlvdXIgc3lzdGVtLgorIEFXSz0JCWF3aworQEAgLTM0MSw4ICszNDEsOCBAQCBTR01MX0NBVEFMT0dfRklMRVM9IFwKKyBWQUxJREFURSA9IG5zZ21scworIFZBTElEQVRFX0ZMQUdTID0gLXMgLUIgLXdhbGwgLXduby11bnVzZWQtcGFyYW0KKyBWQUxJREFURV9FTlYgPSBcCistICBTR01MX0NBVEFMT0dfRklMRVM9JChTR01MX0NBVEFMT0dfRklMRVMpIFwKKy0gIFNHTUxfU0VBUkNIX1BBVEg9JChTR01MX1NFQVJDSF9QQVRIKSBcCisrICBTR01MX0NBVEFMT0dfRklMRVM9JyQoU0dNTF9DQVRBTE9HX0ZJTEVTKScgXAorKyAgU0dNTF9TRUFSQ0hfUEFUSD0nJChTR01MX1NFQVJDSF9QQVRIKScgXAorICAgU1BfQ0hBUlNFVF9GSVhFRD1ZRVMgXAorICAgU1BfRU5DT0RJTkc9VVRGLTgKKyAKK0BAIC0zOTYsNyArMzk2LDcgQEAgR1pJUEZMQUdTPQktOW4KKyAjTUFLRT0JCW1ha2UKKyAKKyBjYz0JCWNjCistQ0M9CQkkKGNjKSAtRFRaRElSPVwiJChUWkRJUilcIgorK0NDPQkJJChjYykgLURUWkRJUj0nIiQoVFpESVIpIicKKyAKKyBBUj0JCWFyCisgCitAQCAtNDczLDI5ICs0NzMsMjkgQEAgYWxsOgkJdHpzZWxlY3QgeWVhcmlzdHlwZSB6aWMgemR1bXAgbGlidHouYSAkKFRBQkRBVEEpCisgQUxMOgkJYWxsIGRhdGUgJChFTkNISUxBREEpCisgCisgaW5zdGFsbDoJYWxsICQoREFUQSkgJChSRURPKSAkKE1BTlMpCistCQlta2RpciAtcCAkKERFU1RESVIpJChFVENESVIpICQoREVTVERJUikkKFRaRElSKSBcCistCQkJJChERVNURElSKSQoTElCRElSKSBcCistCQkJJChERVNURElSKSQoTUFORElSKS9tYW4zICQoREVTVERJUikkKE1BTkRJUikvbWFuNSBcCistCQkJJChERVNURElSKSQoTUFORElSKS9tYW44CisrCQlta2RpciAtcCAnJChERVNURElSKSQoRVRDRElSKScgJyQoREVTVERJUikkKFRaRElSKScgXAorKwkJCSckKERFU1RESVIpJChMSUJESVIpJyBcCisrCQkJJyQoREVTVERJUikkKE1BTkRJUikvbWFuMycgJyQoREVTVERJUikkKE1BTkRJUikvbWFuNScgXAorKwkJCSckKERFU1RESVIpJChNQU5ESVIpL21hbjgnCisgCQkkKFpJQ19JTlNUQUxMKSAtbCAkKExPQ0FMVElNRSkgLXAgJChQT1NJWFJVTEVTKQorLQkJY3AgLWYgJChUQUJEQVRBKSAkKERFU1RESVIpJChUWkRJUikvLgorLQkJY3AgdHpzZWxlY3QgemljIHpkdW1wICQoREVTVERJUikkKEVUQ0RJUikvLgorLQkJY3AgbGlidHouYSAkKERFU1RESVIpJChMSUJESVIpLy4KKy0JCSQoUkFOTElCKSAkKERFU1RESVIpJChMSUJESVIpL2xpYnR6LmEKKy0JCWNwIC1mIG5ld2N0aW1lLjMgbmV3dHpzZXQuMyAkKERFU1RESVIpJChNQU5ESVIpL21hbjMvLgorLQkJY3AgLWYgdHpmaWxlLjUgJChERVNURElSKSQoTUFORElSKS9tYW41Ly4KKy0JCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAkKERFU1RESVIpJChNQU5ESVIpL21hbjgvLgorKwkJY3AgLWYgJChUQUJEQVRBKSAnJChERVNURElSKSQoVFpESVIpLy4nCisrCQljcCB0enNlbGVjdCB6aWMgemR1bXAgJyQoREVTVERJUikkKEVUQ0RJUikvLicKKysJCWNwIGxpYnR6LmEgJyQoREVTVERJUikkKExJQkRJUikvLicKKysJCSQoUkFOTElCKSAnJChERVNURElSKSQoTElCRElSKS9saWJ0ei5hJworKwkJY3AgLWYgbmV3Y3RpbWUuMyBuZXd0enNldC4zICckKERFU1RESVIpJChNQU5ESVIpL21hbjMvLicKKysJCWNwIC1mIHR6ZmlsZS41ICckKERFU1RESVIpJChNQU5ESVIpL21hbjUvLicKKysJCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAnJChERVNURElSKSQoTUFORElSKS9tYW44Ly4nCisgCisgSU5TVEFMTDoJQUxMIGluc3RhbGwgZGF0ZS4xCistCQlta2RpciAtcCAkKERFU1RESVIpJChCSU5ESVIpICQoREVTVERJUikkKE1BTkRJUikvbWFuMQorLQkJY3AgZGF0ZSAkKERFU1RESVIpJChCSU5ESVIpLy4KKy0JCWNwIC1mIGRhdGUuMSAkKERFU1RESVIpJChNQU5ESVIpL21hbjEvLgorKwkJbWtkaXIgLXAgJyQoREVTVERJUikkKEJJTkRJUiknICckKERFU1RESVIpJChNQU5ESVIpL21hbjEnCisrCQljcCBkYXRlICckKERFU1RESVIpJChCSU5ESVIpLy4nCisrCQljcCAtZiBkYXRlLjEgJyQoREVTVERJUikkKE1BTkRJUikvbWFuMS8uJworIAorIHZlcnNpb246CSQoVkVSU0lPTl9ERVBTKQorIAkJeyAodHlwZSBnaXQpID4vZGV2L251bGwgMj4mMSAmJiBcCisgCQkgIFY9YGdpdCBkZXNjcmliZSAtLW1hdGNoICdbMC05XVswLTldWzAtOV1bMC05XVthLXpdKicgXAorIAkJCQktLWFiYnJldj03IC0tZGlydHlgIHx8IFwKKy0JCSAgVj0kKFZFUlNJT04pOyB9ICYmIFwKKysJCSAgVj0nJChWRVJTSU9OKSc7IH0gJiYgXAorIAkJcHJpbnRmICclc1xuJyAiJCRWIiA+JEAub3V0CisgCQltdiAkQC5vdXQgJEAKKyAKK0BAIC01MjksMTIgKzUyOSwxMiBAQCBsZWFwc2Vjb25kczoJJChMRUFQX0RFUFMpCisgIyBBcmd1bWVudHMgdG8gcGFzcyB0byBzdWJtYWtlcyBvZiBpbnN0YWxsX2RhdGEuCisgIyBUaGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGxhdGVyIHN1Ym1ha2UgYXJndW1lbnRzLgorIElOU1RBTExBUkdTID0gXAorLSBCQUNLV0FSRD0kKEJBQ0tXQVJEKSBcCistIERFU1RESVI9JChERVNURElSKSBcCisrIEJBQ0tXQVJEPSckKEJBQ0tXQVJEKScgXAorKyBERVNURElSPSckKERFU1RESVIpJyBcCisgIExFQVBTRUNPTkRTPSckKExFQVBTRUNPTkRTKScgXAorICBQQUNLUkFUREFUQT0nJChQQUNLUkFUREFUQSknIFwKKy0gVFpESVI9JChUWkRJUikgXAorLSBZRUFSSVNUWVBFPSQoWUVBUklTVFlQRSkgXAorKyBUWkRJUj0nJChUWkRJUiknIFwKKysgWUVBUklTVFlQRT0nJChZRUFSSVNUWVBFKScgXAorICBaSUM9JyQoWklDKScKKyAKKyAjICdtYWtlIGluc3RhbGxfZGF0YScgaW5zdGFsbHMgb25lIHNldCBvZiB0eiBiaW5hcnkgZmlsZXMuCitAQCAtNTU4LDE2ICs1NTgsMTYgQEAgcmlnaHRfb25seToKKyAjIFlvdSBtdXN0IHJlcGxhY2UgYWxsIG9mICQoVFpESVIpIHRvIHN3aXRjaCBmcm9tIG5vdCB1c2luZyBsZWFwIHNlY29uZHMKKyAjIHRvIHVzaW5nIHRoZW0sIG9yIHZpY2UgdmVyc2EuCisgcmlnaHRfcG9zaXg6CXJpZ2h0X29ubHkKKy0JCXJtIC1mciAkKERFU1RESVIpJChUWkRJUiktbGVhcHMKKy0JCWxuIC1zICQoVFpESVJfQkFTRU5BTUUpICQoREVTVERJUikkKFRaRElSKS1sZWFwcyB8fCBcCistCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JChUWkRJUiktbGVhcHMgcmlnaHRfb25seQorLQkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5CisrCQlybSAtZnIgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycKKysJCWxuIC1zICckKFRaRElSX0JBU0VOQU1FKScgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycgfHwgXAorKwkJICAkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQorKwkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0nJChUWkRJUiktcG9zaXgnIHBvc2l4X29ubHkKKyAKKyBwb3NpeF9yaWdodDoJcG9zaXhfb25seQorLQkJcm0gLWZyICQoREVTVERJUikkKFRaRElSKS1wb3NpeAorLQkJbG4gLXMgJChUWkRJUl9CQVNFTkFNRSkgJChERVNURElSKSQoVFpESVIpLXBvc2l4IHx8IFwKKy0JCSAgJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5CistCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSQoVFpESVIpLWxlYXBzIHJpZ2h0X29ubHkKKysJCXJtIC1mciAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JworKwkJbG4gLXMgJyQoVFpESVJfQkFTRU5BTUUpJyAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JyB8fCBcCisrCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JyQoVFpESVIpLXBvc2l4JyBwb3NpeF9vbmx5CisrCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQorIAorICMgVGhpcyBvYnNvbGVzY2VudCBydWxlIGlzIHByZXNlbnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAjIHR6IHJlbGVhc2VzIDIwMTRnIHRocm91Z2ggMjAxNWcuICBJdCBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5LgorQEAgLTc2NCw3ICs3NjQsNyBAQCBzZXQtdGltZXN0YW1wcy5vdXQ6ICQoRU5DSElMQURBKQorIAorIGNoZWNrX3B1YmxpYzoKKyAJCSQoTUFLRSkgbWFpbnRhaW5lci1jbGVhbgorLQkJJChNQUtFKSAiQ0ZMQUdTPSQoR0NDX0RFQlVHX0ZMQUdTKSIgQUxMCisrCQkkKE1BS0UpIENGTEFHUz0nJChHQ0NfREVCVUdfRkxBR1MpJyBBTEwKKyAJCW1rZGlyIC1wIHB1YmxpYy5kaXIKKyAJCWZvciBpIGluICQoVERBVEEpIHR6ZGF0YS56aTsgZG8gXAorIAkJICAkKHppYykgLXYgLWQgcHVibGljLmRpciAkJGkgMj4mMSB8fCBleGl0OyBcCitkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKK2luZGV4IGJkMmJlYzIuLjc1YWIwOTUgMTAwNjQ0CistLS0gYS9ORVdTCisrKysgYi9ORVdTCitAQCAtMSw1ICsxLDEzIEBACisgTmV3cyBmb3IgdGhlIHR6IGRhdGFiYXNlCisgCisrVW5yZWxlYXNlZCwgZXhwZXJpbWVudGFsIGNoYW5nZXMKKysKKysgIENoYW5nZXMgdG8gYnVpbGQgcHJvY2VkdXJlCisrCisrICAgIFRoZSBNYWtlZmlsZSBub3cgcXVvdGVzIHZhbHVlcyBsaWtlIEJBQ0tXQVJEIG1vcmUgY2FyZWZ1bGx5IHdoZW4KKysgICAgcGFzc2luZyB0aGVtIHRvIHRoZSBzaGVsbC4gIChQcm9ibGVtIHJlcG9ydGVkIGJ5IFplZnJhbS4pCisrCisrCisgUmVsZWFzZSAyMDE3YyAtIDIwMTctMTAtMjAgMTQ6NDk6MzQgLTA3MDAKKyAKKyAgIEJyaWVmbHk6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAyLVBvcnQtemR1bXAtdG8tQzkwLXNucHJpbnRmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YWZlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAyLVBvcnQtemR1bXAtdG8tQzkwLXNucHJpbnRmLnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIGUyMzFkYTRmYjJiZWIxN2M2MGI0YjFhNWMyNzYzNjZkNmE2ZTQzM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxNzo1ODozNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBQb3J0IHpkdW1wIHRvIEM5MCArIHNucHJpbnRmCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Byb2JsZW0gcmVwb3J0ZWQgYnkgSm9uIFNrZWV0IGluOgoraHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTctT2N0b2Jlci8wMjUzNjIuaHRtbAorKiBORVdTOiBNZW50aW9uIHRoaXMuCisqIHpkdW1wLmMgKG15X3NucHJpbnRmKTogTmV3IG1hY3JvIG9yIGZ1bmN0aW9uLiAgSWYgYSBtYWNybywgaXQgaXMKK2p1c3Qgc25wcmludGYuICBJZiBhIGZ1bmN0aW9uLCBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgb2xkIHNucHJpbnRmCitzdGF0aWMgZnVuY3Rpb24sIHdpdGggYW4gQVRUUklCVVRFX0ZPUk1BVCB0byBwYWNpZnkgbW9kZXJuIEdDQy4KK0FsbCB1c2VzIG9mIHNucHJpbnRmIGNoYW5nZWQgdG8gdXNlIG15X3NucHJpbnRmLiAgVGhpcyB3YXksCitpbnN0YWxsZXJzIGRvbuKAmXQgbmVlZCB0byBzcGVjaWZ5IC1ESEFWRV9TTlBSSU5URiBpZiB0aGV5IGFyZSB1c2luZworYSBwcmUtQzk5IGNvbXBpbGVyIHdpdGggYSBsaWJyYXJ5IHRoYXQgaGFzIHNucHJpbnRmLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworLS0tCisgTkVXUyAgICB8ICA0ICsrKysKKyB6ZHVtcC5jIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKK2luZGV4IDc1YWIwOTUuLmRlYTA4YjggMTAwNjQ0CistLS0gYS9ORVdTCisrKysgYi9ORVdTCitAQCAtNyw2ICs3LDEwIEBAIFVucmVsZWFzZWQsIGV4cGVyaW1lbnRhbCBjaGFuZ2VzCisgICAgIFRoZSBNYWtlZmlsZSBub3cgcXVvdGVzIHZhbHVlcyBsaWtlIEJBQ0tXQVJEIG1vcmUgY2FyZWZ1bGx5IHdoZW4KKyAgICAgcGFzc2luZyB0aGVtIHRvIHRoZSBzaGVsbC4gIChQcm9ibGVtIHJlcG9ydGVkIGJ5IFplZnJhbS4pCisgCisrICAgIEJ1aWxkZXJzIG5vIGxvbmdlciBuZWVkIHRvIHNwZWNpZnkgLURIQVZFX1NOUFJJTlRGIG9uIHBsYXRmb3JtcworKyAgICB0aGF0IGhhdmUgc25wcmludGYgYW5kIHVzZSBwcmUtQzk5IGNvbXBpbGVycy4gIChQcm9ibGVtIHJlcG9ydGVkCisrICAgIGJ5IEpvbiBTa2VldC4pCisrCisgCisgUmVsZWFzZSAyMDE3YyAtIDIwMTctMTAtMjAgMTQ6NDk6MzQgLTA3MDAKKyAKK2RpZmYgLS1naXQgYS96ZHVtcC5jIGIvemR1bXAuYworaW5kZXggOGUzYmYzZS4uZDRlNjA4NCAxMDA2NDQKKy0tLSBhL3pkdW1wLmMKKysrKyBiL3pkdW1wLmMKK0BAIC03OTUsMTIgKzc5NSwxNCBAQCBzaG93KHRpbWV6b25lX3QgdHosIGNoYXIgKnpvbmUsIHRpbWVfdCB0LCBib29sIHYpCisgCQlhYmJyb2soYWJicih0bXApLCB6b25lKTsKKyB9CisgCistI2lmICFIQVZFX1NOUFJJTlRGCisrI2lmIEhBVkVfU05QUklOVEYKKysjIGRlZmluZSBteV9zbnByaW50ZiBzbnByaW50ZgorKyNlbHNlCisgIyBpbmNsdWRlIDxzdGRhcmcuaD4KKyAKKyAvKiBBIHN1YnN0aXR1dGUgZm9yIHNucHJpbnRmIHRoYXQgaXMgZ29vZCBlbm91Z2ggZm9yIHpkdW1wLiAgKi8KKy1zdGF0aWMgaW50Cistc25wcmludGYoY2hhciAqcywgc2l6ZV90IHNpemUsIGNoYXIgY29uc3QgKmZvcm1hdCwgLi4uKQorK3N0YXRpYyBpbnQgQVRUUklCVVRFX0ZPUk1BVCgocHJpbnRmLCAzLCA0KSkKKytteV9zbnByaW50ZihjaGFyICpzLCBzaXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqZm9ybWF0LCAuLi4pCisgeworICAgaW50IG47CisgICB2YV9saXN0IGFyZ3M7CitAQCAtODM5LDEwICs4NDEsMTAgQEAgZm9ybWF0X2xvY2FsX3RpbWUoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgc3RydWN0IHRtIGNvbnN0ICp0bSkKKyB7CisgICBpbnQgc3MgPSB0bS0+dG1fc2VjLCBtbSA9IHRtLT50bV9taW4sIGhoID0gdG0tPnRtX2hvdXI7CisgICByZXR1cm4gKHNzCistCSAgPyBzbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQ6JTAyZCIsIGhoLCBtbSwgc3MpCisrCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQ6JTAyZCIsIGhoLCBtbSwgc3MpCisgCSAgOiBtbQorLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkIiwgaGgsIG1tKQorLQkgIDogc25wcmludGYoYnVmLCBzaXplLCAiJTAyZCIsIGhoKSk7CisrCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQiLCBoaCwgbW0pCisrCSAgOiBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkIiwgaGgpKTsKKyB9CisgCisgLyogU3RvcmUgaW50byBCVUYsIG9mIHNpemUgU0laRSwgYSBmb3JtYXR0ZWQgVVRDIG9mZnNldCBmb3IgdGhlCitAQCAtODc3LDEwICs4NzksMTAgQEAgZm9ybWF0X3V0Y19vZmZzZXQoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgc3RydWN0IHRtIGNvbnN0ICp0bSwgdGltZV90IHQpCisgICBtbSA9IG9mZiAvIDYwICUgNjA7CisgICBoaCA9IG9mZiAvIDYwIC8gNjA7CisgICByZXR1cm4gKHNzIHx8IDEwMCA8PSBoaAorLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCUwMmQlMDJkIiwgc2lnbiwgaGgsIG1tLCBzcykKKysJICA/IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkJTAyZCIsIHNpZ24sIGhoLCBtbSwgc3MpCisgCSAgOiBtbQorLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCUwMmQiLCBzaWduLCBoaCwgbW0pCistCSAgOiBzbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkIiwgc2lnbiwgaGgpKTsKKysJICA/IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkIiwgc2lnbiwgaGgsIG1tKQorKwkgIDogbXlfc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCIsIHNpZ24sIGhoKSk7CisgfQorIAorIC8qIFN0b3JlIGludG8gQlVGIChvZiBzaXplIFNJWkUpIGEgcXVvdGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBQLgorQEAgLTk4MywxNSArOTg1LDE2IEBAIGlzdHJmdGltZShjaGFyICpidWYsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICp0aW1lX2ZtdCwKKyAJICAgIGZvciAoYWJwID0gYWI7IGlzX2FscGhhKCphYnApOyBhYnArKykKKyAJICAgICAgY29udGludWU7CisgCSAgICBsZW4gPSAoISphYnAgJiYgKmFiCistCQkgICA/IHNucHJpbnRmKGIsIHMsICIlcyIsIGFiKQorKwkJICAgPyBteV9zbnByaW50ZihiLCBzLCAiJXMiLCBhYikKKyAJCSAgIDogZm9ybWF0X3F1b3RlZF9zdHJpbmcoYiwgcywgYWIpKTsKKyAJICAgIGlmIChzIDw9IGxlbikKKyAJICAgICAgcmV0dXJuIGZhbHNlOworIAkgICAgYiArPSBsZW4sIHMgLT0gbGVuOworIAkgIH0KKy0JICBmb3JtYXR0ZWRfbGVuID0gKHRtLT50bV9pc2RzdAorLQkJCSAgID8gc25wcmludGYoYiwgcywgJiJcdFx0JWQiW3Nob3dfYWJicl0sIHRtLT50bV9pc2RzdCkKKy0JCQkgICA6IDApOworKwkgIGZvcm1hdHRlZF9sZW4KKysJICAgID0gKHRtLT50bV9pc2RzdAorKwkgICAgICAgPyBteV9zbnByaW50ZihiLCBzLCAmIlx0XHQlZCJbc2hvd19hYmJyXSwgdG0tPnRtX2lzZHN0KQorKwkgICAgICAgOiAwKTsKKyAJfQorIAlicmVhazsKKyAgICAgICB9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxN2IuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMTdiLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjVkMmM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxN2IuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIG5vdGUgdGhhdCB3ZSBhbGxvdyBmb3IgdXMgdG8gdXNlIGRhdGEgbGF0ZXIgdGhhbiBvdXIgY29kZSB2ZXJzaW9uCi0jCi1TVU1NQVJZID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lZjFhMzUyYjkwMWVlN2I3NWE3NWRmODE3MWQ2YWNhNyIKLQotU1JDX1VSSSA9IiBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emNvZGUke1BWfS50YXIuZ3o7bmFtZT10emNvZGUgXAotICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gImFmYWYxNWRlYjEzNzU5ZThiNTQzZDg2MzUwMzg1YjE2IgotU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICI0ZDE3MzViYjU0ZTIyYjhkNzQ0M2Q0ZDFmMWExM2QwMDdhZTExYmU3OWEzNWU1MWY4ZTgzMjJmYjhlMjkyZDQwIgotU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICI1MGRjMGRjNTBjNjg2NDRjMWY3MDgwNGYyZTdhMTYyNSIKLVNSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiZjgyNDJhNTIyZWEzNDk2YjBjZTRmZjRmMmU3NWEwNDkxNzhkYTIxMDAxYTA4YjhlNjY2ZDhjYmUwN2QxODA4NiIKLQotUyA9ICIke1dPUktESVJ9IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Yy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlOWI3MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGMuYmIKQEAgLTAsMCArMSwzMCBAQAorIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgorIworU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCisKK1NSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKKyAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorCitTUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gImU2ZTBkNGIyY2UzZmE2OTA2ZjMwMzE1N2JlZDI2MTJlIgorU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICIzMWZhN2ZjMGY5NGE2ZmYyZDZiYzg3OGMwYTM1ZThhYjhiNWFhMGU4YjAxNDQ1YTFkNGE4ZjE0Nzc3ZDBlNjY1IgorU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICJjNDEyYjE1MzFhZGVmMWJlN2E2NDVhYjczNGY4NmFjYyIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiMjgyNWMzZTRiN2VmNTIwZjI0ZDM5M2JjYzAyOTQyZjk3NjJmZmQzZTdmYzliMjM4NTA3ODllZDhmMjI5MzNmNiIKKworUyA9ICIke1dPUktESVJ9IgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMTdiLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMTdiLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWU4OTc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE3Yi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1TVU1NQVJZID0gIlRpbWV6b25lIGRhdGEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWYxYTM1MmI5MDFlZTdiNzVhNzVkZjgxNzFkNmFjYTciCi0KLURFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gIjUwZGMwZGM1MGM2ODY0NGMxZjcwODA0ZjJlN2ExNjI1IgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICJmODI0MmE1MjJlYTM0OTZiMGNlNGZmNGYyZTc1YTA0OTE3OGRhMjEwMDFhMDhiOGU2NjZkOGNiZTA3ZDE4MDg2IgotCi1pbmhlcml0IGFsbGFyY2gKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCi0gICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAotICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLURFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKLUlOU1RBTExfVElNRVpPTkVfRklMRSA/PSAiMSIKLQotVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAotICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKLSAgICAgICAgIgotIyBwYWNpZmljbmV3IAotCi1kb19jb21waWxlICgpIHsKLSAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICBkb25lCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KLSAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQotICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS96b25lMTk3MC50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLQotICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQotICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgotICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgICAgICAgICAgaWYgWyAiJHtJTlNUQUxMX1RJTUVaT05FX0ZJTEV9IiA9ICIxIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBsbiAtcyAke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJiZXJyb3IgIkRFRkFVTFRfVElNRVpPTkUgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgIGZpCi0KLSAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlldGNfbHQ9IiREJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCi0Jc3JjPSIkRCR7c3lzY29uZmRpcn0vdGltZXpvbmUiCi0KLQlpZiBbIC1lICR7c3JjfSBdIDsgdGhlbgotCQl0ej0kKHNlZCAtZSAnczojLio6OicgLWUgJ3M6W1s6c3BhY2U6XV0qOjpnJyAtZSAnL14kL2QnICIke3NyY30iKQotCWZpCi0JCi0JaWYgWyAteiAiJHt0en0iIF0gOyB0aGVuCi0JCWV4aXQgMAotCWZpCi0JCi0JaWYgWyAhIC1lICIkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iIF0gOyB0aGVuCi0JCWVjaG8gIllvdSBoYXZlIGFuIGludmFsaWQgVElNRVpPTkUgc2V0dGluZyBpbiAke3NyY30iCi0JCWVjaG8gIllvdXIgJHtldGNfbHR9IGhhcyBiZWVuIHJlc2V0IHRvIFVuaXZlcnNhbDsgZW5qb3khIgotCQl0ej0iVW5pdmVyc2FsIgotCQllY2hvICJVcGRhdGluZyAke2V0Y19sdH0gd2l0aCAkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iCi0JCWlmIFsgLUwgJHtldGNfbHR9IF0gOyB0aGVuCi0JCQlybSAtZiAiJHtldGNfbHR9IgotCQlmaQotCQlsbiAtcyAiJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgIiR7ZXRjX2x0fSIKLQlmaQotfQotCi0jIFBhY2thZ2VzIHByaW1hcmlseSBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5IHdpdGggYSBtYWpvciBjaXR5Ci0jIGluIG1vc3QgdGltZSB6b25lcyBpbiB0aGUgYmFzZSBwYWNrYWdlCi0KLVBBQ0tBR0VTID0gInR6ZGF0YSB0emRhdGEtbWlzYyB0emRhdGEtcG9zaXggdHpkYXRhLXJpZ2h0IHR6ZGF0YS1hZnJpY2EgXAotICAgIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYW50YXJjdGljYSB0emRhdGEtYXJjdGljIHR6ZGF0YS1hc2lhIFwKLSAgICB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSB0emRhdGEtZXVyb3BlIHR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtYWZyaWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hZnJpY2EgPSAidHpkYXRhLWFmcmljYSIKLQotRklMRVNfdHpkYXRhLWFtZXJpY2FzICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvKiAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVMvKiAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9CcmF6aWwvKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NhbmFkYS8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWV4aWNvLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DaGlsZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hbWVyaWNhcyA9ICJ0emRhdGEtYW1lcmljYXMiCi0KLUZJTEVTX3R6ZGF0YS1hbnRhcmN0aWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FudGFyY3RpY2EvKiIKLVJQUk9WSURFU190emRhdGEtYW50YXJjdGljYSA9ICJ0emRhdGEtYW50YXJjdGljYSIKLQotRklMRVNfdHpkYXRhLWFyY3RpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BcmN0aWMvKiIKLVJQUk9WSURFU190emRhdGEtYXJjdGljID0gInR6ZGF0YS1hcmN0aWMiCi0KLUZJTEVTX3R6ZGF0YS1hc2lhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvKiAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSW5kaWFuLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NaWRlYXN0LyoiCi1SUFJPVklERVNfdHpkYXRhLWFzaWEgPSAidHpkYXRhLWFzaWEiCi0KLUZJTEVTX3R6ZGF0YS1hdGxhbnRpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdGxhbnRpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1hdGxhbnRpYyA9ICJ0emRhdGEtYXRsYW50aWMiCi0KLUZJTEVTX3R6ZGF0YS1hdXN0cmFsaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhLyoiCi1SUFJPVklERVNfdHpkYXRhLWF1c3RyYWxpYSA9ICJ0emRhdGEtYXVzdHJhbGlhIgotCi1GSUxFU190emRhdGEtZXVyb3BlICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1ldXJvcGUgPSAidHpkYXRhLWV1cm9wZSIKLQotRklMRVNfdHpkYXRhLXBhY2lmaWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1wYWNpZmljID0gInR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtcG9zaXggKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXgvKiIKLVJQUk9WSURFU190emRhdGEtcG9zaXggPSAidHpkYXRhLXBvc2l4IgotCi1GSUxFU190emRhdGEtcmlnaHQgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQvKiIKLVJQUk9WSURFU190emRhdGEtcmlnaHQgPSAidHpkYXRhLXJpZ2h0IgotCi0KLUZJTEVTX3R6ZGF0YS1taXNjICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0N1YmEgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VneXB0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VpcmUgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ZhY3RvcnkgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCLUVpcmUgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hvbmdrb25nICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ljZWxhbmQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lyYW4gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lzcmFlbCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phbWFpY2EgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phcGFuICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0t3YWphbGVpbiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0xpYnlhICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05hdmFqbyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvbGFuZCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvcnR1Z2FsICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1NpbmdhcG9yZSAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1R1cmtleSIKLVJQUk9WSURFU190emRhdGEtbWlzYyA9ICJ0emRhdGEtbWlzYyIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL0hvbm9sdWx1ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0FuY2hvcmFnZSAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0RlbnZlciAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL1Nhb19QYXVsbyAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTG9uZG9uICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvQ2Fpcm8gICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0R1YmFpICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0thcmFjaGkgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0RoYWthICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0JhbmtvayAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL1Rva3lvICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQWRlbGFpZGUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvU3lkbmV5ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL05vdW1lYSAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DU1Q2Q0RUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1Q1RURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQrMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQtMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQwICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HcmVlbndpY2ggICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9IU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1Q3TURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWi1DSEFUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QUkMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QU1Q4UERUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0MgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0sgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VQ1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VVEMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Vbml2ZXJzYWwgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XLVNVICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9adWx1ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lLnRhYiAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lMTk3MC50YWIgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9pc28zMTY2LnRhYiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdGMvKiIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke0AgIiR7c3lzY29uZmRpcn0vdGltZXpvbmUiIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoJ0lOU1RBTExfVElNRVpPTkVfRklMRScpKSBlbHNlICIiIH0iCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNWVjMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGMuYmIKQEAgLTAsMCArMSwyMTUgQEAKK1NVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKKworREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCisKK1NSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiYzQxMmIxNTMxYWRlZjFiZTdhNjQ1YWI3MzRmODZhY2MiCitTUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjI4MjVjM2U0YjdlZjUyMGYyNGQzOTNiY2MwMjk0MmY5NzYyZmZkM2U3ZmM5YjIzODUwNzg5ZWQ4ZjIyOTMzZjYiCisKK2luaGVyaXQgYWxsYXJjaAorCitSQ09ORkxJQ1RTXyR7UE59ID0gInRpbWV6b25lcyB0aW1lem9uZS1hZnJpY2EgdGltZXpvbmUtYW1lcmljYSB0aW1lem9uZS1hbnRhcmN0aWNhIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1hcmN0aWMgdGltZXpvbmUtYXNpYSB0aW1lem9uZS1hdGxhbnRpYyBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXVzdHJhbGlhIHRpbWV6b25lLWV1cm9wZSB0aW1lem9uZS1pbmRpYW4gXAorICAgICAgICAgICAgIHRpbWV6b25lLWlzbzMxNjYudGFiIHRpbWV6b25lLXBhY2lmaWMgdGltZXpvbmUtem9uZS50YWIiCisKK1MgPSAiJHtXT1JLRElSfSIKKworREVGQVVMVF9USU1FWk9ORSA/PSAiVW5pdmVyc2FsIgorSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgorCitUWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCisgICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIHN5c3RlbXYgXAorICAgICAgICAiCisjIHBhY2lmaWNuZXcgCisKK2RvX2NvbXBpbGUgKCkgeworICAgICAgICBmb3Igem9uZSBpbiAke1RaT05FU307IGRvIFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8gLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0IC1MICR7U30vbGVhcHNlY29uZHMgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgIGRvbmUKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8kZXhlY19wcmVmaXggJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQUiAke1N9LyRleGVjX3ByZWZpeCAke0R9LworICAgICAgICAjIGxpYmMgaXMgcmVtb3Zpbmcgem9uZWluZm8gZmlsZXMgZnJvbSBwYWNrYWdlCisgICAgICAgIGNwIC1wUCAiJHtTfS96b25lLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L3pvbmUxOTcwLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L2lzbzMxNjYudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworCisgICAgICAgICMgSW5zdGFsbCBkZWZhdWx0IHRpbWV6b25lCisgICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSBdOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgICAgICBpZiBbICIke0lOU1RBTExfVElNRVpPTkVfRklMRX0iID0gIjEiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICR7REVGQVVMVF9USU1FWk9ORX0gPiAke0R9JHtzeXNjb25mZGlyfS90aW1lem9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKworICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKKwlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKKworCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCisJCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCisJZmkKKwkKKwlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KKwkJZXhpdCAwCisJZmkKKwkKKwlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KKwkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKKwkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCisJCXR6PSJVbml2ZXJzYWwiCisJCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKKwkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KKwkJCXJtIC1mICIke2V0Y19sdH0iCisJCWZpCisJCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgorCWZpCit9CisKKyMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKKyMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKKworUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCisgICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAorICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgorCitGSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCitSUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKKworRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgorCitGSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKKworRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKK1JQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKKworRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCitSUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKKworRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKK1JQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCisKK0ZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCitSUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgorCitGSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCitSUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgorUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCisKK0ZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgorUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCisKKworRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgorUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFua29rICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUxOTcwLnRhYiAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7QCAiJHtzeXNjb25mZGlyfS90aW1lem9uZSIgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcignSU5TVEFMTF9USU1FWk9ORV9GSUxFJykpIGVsc2UgIiIgfSIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwXzYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCmluZGV4IGQ0ZWU0ODcuLjEwNWQwNDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCkBAIC0yMCw2ICsyMCw3IEBACiAJZmlsZTovLzE4LWN2ZS0yMDE0LTk5MTMtdW56aXAtYnVmZmVyLW92ZXJmbG93LnBhdGNoIFwKIAlmaWxlOi8vMTktY3ZlLTIwMTYtOTg0NC16aXBpbmZvLWJ1ZmZlci1vdmVyZmxvdy5wYXRjaCBcCiAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjYyYjQ5MDQwNzQ4OTUyMWRiODYzYjUyM2E3Zjg2Mzc1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzNmQ5Njk5MTY0NmQwNDQ5ZWQwYWE5NTJlNGZiZTIxYjQ3NmNlOTk0YWJjMjc2ZTQ5ZDMwZTY4NjcwOGJkMzciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKaW5kZXggOTY1OWYyNy4uM2QwYjcyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgpAQCAtMjEsOCArMjEsNyBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvd2F0Y2hkb2cvZmlsZXMvd2F0Y2hkb2cvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3dhdGNoZG9nLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzCi1pbmhlcml0IHVwZGF0ZS1yYy5kCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMgIgogQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMgIgpAQCAtMzcsMTIgKzM2LDE4IEBACiBJTklUU0NSSVBUX05BTUVfJHtQTn0ta2VlcGFsaXZlID0gIndkX2tlZXBhbGl2ZSIKIElOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWtlZXBhbGl2ZSA9ICJzdGFydCAxNSAxIDIgMyA0IDUgLiBzdG9wIDg1IDAgNiAuIgogCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1EICR7U30vcmVkaGF0L3dhdGNoZG9nLmluaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC93YXRjaGRvZy5zaAotICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS93ZF9rZWVwYWxpdmUuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvd2Rfa2VlcGFsaXZlCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAid2F0Y2hkb2cuc2VydmljZSB3ZF9rZWVwYWxpdmUuc2VydmljZSIKIAotICAgICMgd2F0Y2hkb2cuY29uZiBpcyBwcm92aWRlZCBieSB0aGUgd2F0Y2hkb2ctY29uZmlnIHJlY2lwZQotICAgIHJtICR7RH0ke3N5c2NvbmZkaXJ9L3dhdGNoZG9nLmNvbmYKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWJpYW4vd2F0Y2hkb2cuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCWluc3RhbGwgLW0gMDY0NCAke1N9L2RlYmlhbi93ZF9rZWVwYWxpdmUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCisJaW5zdGFsbCAtRCAke1N9L3JlZGhhdC93YXRjaGRvZy5pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvd2F0Y2hkb2cuc2gKKwlpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vd2Rfa2VlcGFsaXZlLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3dkX2tlZXBhbGl2ZQorCisJIyB3YXRjaGRvZy5jb25mIGlzIHByb3ZpZGVkIGJ5IHRoZSB3YXRjaGRvZy1jb25maWcgcmVjaXBlCisJcm0gJHtEfSR7c3lzY29uZmRpcn0vd2F0Y2hkb2cuY29uZgogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0ta2VlcGFsaXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiCmluZGV4IDUwMDc0OTguLjM0ZjhkMTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIKQEAgLTEsNSArMSw1IEBACiBTVU1NQVJZID0gIkJhc2ljIGRlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIgotCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS94ZGctdXRpbHMvIgogREVTQ1JJUFRJT04gPSAiVGhlIHhkZy11dGlscyBwYWNrYWdlIGlzIGEgc2V0IG9mIHNpbXBsZSBzY3JpcHRzIHRoYXQgcHJvdmlkZSBiYXNpYyBcCiBkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyBmb3IgYW55IEZyZWUgRGVza3RvcCwgc3VjaCBhcyBMaW51eC4gXAogVGhleSBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHNldCBvZiBkZWZhY3RvIHN0YW5kYXJkcy4gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC1DVkUtMjAxMy00MzQyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC1DVkUtMjAxMy00MzQyLnBhdGNoCmluZGV4IGM0NGM1YTEuLjg1MmE0M2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQtQ1ZFLTIwMTMtNDM0Mi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLUNWRS0yMDEzLTQzNDIucGF0Y2gKQEAgLTExLDYgKzExLDcgQEAKIAogQ1ZFOiBDVkUtMjAxMy00MzQyCiBTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiAtLS0KICB4aW5ldGQvYnVpbHRpbnMuYyB8ICAgIDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGRfMi4zLjE1LmJiCmluZGV4IDZiZmFhYmUuLjFiZWI1NDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkXzIuMy4xNS5iYgpAQCAtMjQsNiArMjQsNyBAQAogICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLVVzZS1IQVZFX1NZU19SRVNPVVJDRV9ILXRvLWd1YXJkLXN5cy1yZXNvdS5wYXRjaCBcCiAgICAgICBmaWxlOi8veGluZXRkLnNlcnZpY2UgXAogICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNSQ1JFViA9ICI2OGJiOWFiOWU5ZjIxNGFkOGEyMzIyZjI4YWMxZDY3MzNlNzBiYzI0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXBfMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgppbmRleCAwODc0MjNhLi5kZTc3OWU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXBfMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIKQEAgLTExLDYgKzExLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaW5mb3ppcC9aaXAlMjAzLnglMjAlMjhsYXRlc3QlMjkvMy4wL3ppcDMwLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI3Yjc0NTUxZTYzZjhlZTZhYWI2ZmJjODY2NzZjMGQzNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMGU4YmIxZjliN2ViMGIwMTI4NTQ5NWEyNjk5ZGYzYTRiNzY2Nzg0YzE3NjVhOGYxYWVlZGY2M2MwODA2MzY5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjIyLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjIuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxZmVmMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjIuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViS2l0IGJhc2VkIHdlYiBicm93c2VyIGZvciBHTk9NRSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAibGlic291cC0yLjQgd2Via2l0Z3RrIGd0ayszIGlzby1jb2RlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIFwKLQkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdub21lLWRlc2t0b3AzIGxpYnhtbDItbmF0aXZlIFwKLQkgICBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0Ci1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZTA4NzYyYzZiYjAxYzRkMjkxYjNkMjJjN2FkYjFhNjUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZTdlYTg3ZGM0NTA3MDJiZGU2MjAwMzNmOWUyY2U4MDc4NTk3MjdkMDA3Mzk2ZDg2YjA5ZjJiODIzOTdmY2MyIgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGgtZGlzdHJpYnV0b3ItbmFtZT0ke0RJU1RST30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOmhlbHA6OmcgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hcHBkYXRhICR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyIKLVJERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MDdkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjQuMy5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gImxpYnNvdXAtMi40IHdlYmtpdGd0ayBndGsrMyBpc28tY29kZXMgYXZhaGkgbGlibm90aWZ5IGdjciBcCisJICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnbm9tZS1kZXNrdG9wMyBsaWJ4bWwyLW5hdGl2ZSBcCisJICAgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGpzb24tZ2xpYiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEteWVscC5tNC1kcm9wLXRoZS1jaGVjay1mb3ItaXRzdG9vbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1ib29rbWFya3MtQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi1mcmVhZC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImMwMjIxYWVjNmEwODkzNWU2ODU0ZWFhOWRlOTQ1MWVmIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZmVmNTE2NzYzMTBkOWYzN2UxOGM5YjJkNzc4MjU0MjMyZWIxN2NjY2Q5ODhjMmQxZWNmNDJjN2IyOTYzYTE1NCIKKworRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLWRpc3RyaWJ1dG9yLW5hbWU9JHtESVNUUk99IC0tZW5hYmxlLWRlYnVnPW5vIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgczpoZWxwOjpnICR7U30vTWFrZWZpbGUuYW0KK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyIKK1JERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRjZDM5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS1ib29rbWFya3MtQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi1mcmVhZC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGFhMjE3NmJlMzJlZWQyNTc4ZGE4MmYzNGQzMTE0OGY5MzRjMTFjMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAxNzowMzo0NSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBib29rbWFya3M6IENoZWNrIGZvciByZXR1cm4gdmFsdWUgb2YgZnJlYWQoKQorCitGaXhlcyBiZWxvdyBjb21waWxlciBlcnJvcgoraWdub3JpbmcgcmV0dXJuIHZhbHVlIG9mICdmcmVhZCcsIGRlY2xhcmVkIHdpdGggYXR0cmlidXRlIHdhcm5fdW51c2VkX3Jlc3VsdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYyBiL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCitpbmRleCBmZjAyMzliLi44NjMzY2U0IDEwMDY0NAorLS0tIGEvc3JjL2Jvb2ttYXJrcy9lcGh5LWJvb2ttYXJrLmMKKysrKyBiL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCitAQCAtMjE3LDcgKzIxNyw4IEBAIGVwaHlfYm9va21hcmtfaW5pdCAoRXBoeUJvb2ttYXJrICpzZWxmKQorICAgYnl0ZXMgPSBnX21hbGxvYyAobnVtX2J5dGVzKTsKKyAKKyAgIGZwID0gZm9wZW4gKCIvZGV2L3VyYW5kb20iLCAiciIpOworLSAgZnJlYWQgKGJ5dGVzLCBzaXplb2YgKGd1aW50OCksIG51bV9ieXRlcywgZnApOworKyAgaWYgKGZyZWFkIChieXRlcywgc2l6ZW9mIChndWludDgpLCBudW1fYnl0ZXMsIGZwKSAhPSBudW1fYnl0ZXMpCisrICAgIGdfd2FybmluZygiVW5hYmxlIHRvIHJlYWQgZGF0YSBmcm9tIC9kZXYvdXJhbmRvbVxuIik7CisgCisgICBzZWxmLT5pZCA9IGdfbWFsbG9jMCAoSURfTEVOICsgMSk7CisgICBmb3IgKGdzaXplIGkgPSAwOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCmluZGV4IGYzMWFiY2UuLjQ0NTBlMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgpAQCAtNSw3ICs1LDggQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKIAotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKzMgcDExLWtpdCBnbGliLTIuMCBsaWJnY3J5cHQiCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KICMgZGVwZW5kcyBvbiBndGsrMywgYnV0IGFsc28geDExIHRocm91Z2ggZ3RrKy14MTEKQEAgLTIzLDE2ICsyNCwzIEBACiAKICMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI5LwogQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLSMgb24geDg2LTY0IHRoZSBpbnRyb3NwZWN0aW9uIGJpbmFyeSBnb2VzIGludG8gCi0jIGFuIGluZmluaXRlIGxvb3AgdW5kZXIgcWVtdSBkdXJpbmcgY29tcGlsYXRpb24sIAotIyBwcmludGluZyB0aGUgZm9sbG93aW5nOgotIyAKLSMgZ2NyeXB0LU1lc3NhZ2U6IHNlbGVjdCgpIGVycm9yOiBCYWQgYWRkcmVzcwotIwotIyBnY3J5cHQtTWVzc2FnZTogc2VsZWN0KCkgZXJyb3I6IEJhZCBhZGRyZXNzCi0jCi0jIGdjcnlwdC1NZXNzYWdlOiBzZWxlY3QoKSBlcnJvcjogQmFkIGFkZHJlc3MKLSMKLSMgVGhpcyB3aWxsIGJlIGludmVzdGlnYXRlZCBsYXRlci4KLUVYVFJBX09FQ09ORl9hcHBlbmRfeDg2LTY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAtLWRpc2FibGUtZ3RrLWRvYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1xdWVyeWxvYWRlcnMtTWFrZS1vdXRwdXQtbW9yZS1yZXByb2R1Y2libGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEyMTQxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gMTA0OWZiZDg4N2U1MmY5NGFmZWIwM2ZjNzk0MmMwMWMxNDNlYmRmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDkgSnVuIDIwMTcgMTI6MDE6MjUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gcXVlcnlsb2FkZXJzOiBNYWtlIG91dHB1dCBtb3JlIHJlcHJvZHVjaWJsZQorCitSZXByb2R1Y2libGUgYnVpbGRzIGFyZSBnb29kOiBTb3J0IHRoZSBvdXRwdXQgYnkgbW9kdWxlIG5hbWUgc28gdGhhdAorc2FtZSBpbnB1dCBhbHdheXMgbGVhZHMgdG8gc2FtZSBvdXRwdXQuCisKK1RoaXMgc2hvdWxkIGFsc28gbWFrZSBnZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgb3V0cHV0IGFuZAorZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciByZXByb2R1Y2libGUuCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM1OTIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBnZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jIHwgMTIgKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jIGIvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYworaW5kZXggMzk1Njc0YS4uNGFjOWIyOCAxMDA2NDQKKy0tLSBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKKysrKyBiL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKK0BAIC0zNDYsNiArMzQ2LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAjaWZkZWYgVVNFX0dNT0RVTEUKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aDsKKyAgICAgICAgICAgICAgICAgR0RpciAqZGlyOworKyAgICAgICAgICAgICAgICBHTGlzdCAqbCwgKm1vZHVsZXMgPSBOVUxMOworIAorICAgICAgICAgICAgICAgICBwYXRoID0gZ19nZXRlbnYgKCJHREtfUElYQlVGX01PRFVMRURJUiIpOworICNpZmRlZiBHX09TX1dJTjMyCitAQCAtMzY1LDEyICszNjYsMTkgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgbGVuID0gc3RybGVuIChkZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBTT0VYVF9MRU4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAgKGRlbnQgKyBsZW4gLSBTT0VYVF9MRU4sIFNPRVhUKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMgPSBnX2xpc3RfcHJlcGVuZCAobW9kdWxlcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3N0cmR1cCAoZGVudCkpOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGRlbnQpKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgZ19kaXJfY2xvc2UgKGRpcik7CisgICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdfbGlzdF9zb3J0IChtb2R1bGVzLCAoR0NvbXBhcmVGdW5jKXN0cmNtcCk7CisrICAgICAgICAgICAgICAgIGZvciAobCA9IG1vZHVsZXM7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVyeV9tb2R1bGUgKGNvbnRlbnRzLCBwYXRoLCBsLT5kYXRhKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKKysKKysgICAgICAgICAgICAgICAgZ19saXN0X2ZyZWVfZnVsbCAobW9kdWxlcywgZ19mcmVlKTsKKyAjZWxzZQorICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChjb250ZW50cywgIiMgZHluYW1pYyBsb2FkaW5nIG9mIG1vZHVsZXMgbm90IHN1cHBvcnRlZFxuIik7CisgI2VuZGlmCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RhNmQxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1TVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXh0ZW5kaW5nLWxpYmluc3RhbGwtZGVwZW5kZW5jaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDE3M2ZkNWMxMWE1ZDIwMzBkMDkyMDEwOTA2MzY0NzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FjZTA2MTcwMjkxYTFmMjE3NzE1NTI3NjhiYWNlMDcyZWNkZWE5YmQ0YTAyZjc2NTg5MzliOWEzMTRjNDBmYyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcGl4YnVmY2FjaGUgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGxpYl9wYWNrYWdlCi0KLUxJQlYgPSAiMi4xMC4wIgotCi1HREtfUElYQlVGX0xPQURFUlMgPz0gInBuZyBqcGVnIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgotUEFDS0FHRUNPTkZJR19saW51eHN0ZGJhc2UgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9ICR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLQotUEFDS0FHRUNPTkZJR1twbmddID0gIi0td2l0aC1saWJwbmcsLS13aXRob3V0LWxpYnBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0td2l0aC1saWJqcGVnLC0td2l0aG91dC1saWJqcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0td2l0aC1saWJ0aWZmLC0td2l0aG91dC1saWJ0aWZmLHRpZmYiCi1QQUNLQUdFQ09ORklHW2pwZWcyMDAwXSA9ICItLXdpdGgtbGliamFzcGVyLC0td2l0aG91dC1saWJqYXNwZXIsamFzcGVyIgotCi0jIFVzZSBHSU8gdG8gc25pZmYgaW1hZ2UgZm9ybWF0IGluc3RlYWQgb2YgdHJ5aW5nIGFsbCBsb2FkZXJzCi1QQUNLQUdFQ09ORklHW2dpby1zbmlmZl0gPSAiLS1lbmFibGUtZ2lvLXNuaWZmaW5nLC0tZGlzYWJsZS1naW8tc25pZmZpbmcsLHNoYXJlZC1taW1lLWluZm8iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgxMSwtLXdpdGhvdXQteDExLHZpcnR1YWwvbGlieDExIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0teGxpYiIKLQotRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKLUFMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLUZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkke2luY2x1ZGVkaXJ9LyogXAotCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCi0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQotCi0gICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQotCi0gICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfZ2RrLXBpeGJ1Zi1wdGVzdCIsICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzM1OTA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zNi44LmJiCkBAIC0wLDAgKzEsMTAyIEBACitTVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHRlbmRpbmctbGliaW5zdGFsbC1kZXBlbmRlbmNpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXF1ZXJ5bG9hZGVycy1NYWtlLW91dHB1dC1tb3JlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImUwYWFhMDA2MWViMTI2NjdiMzJiMjc0NzIyMzBiOTYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkNjhlNTI4M2NkYzBiZjliZGE5OWMzZTZhMWQ1MmFkMDdhMDMzNjRmYTE4NmI2YzI2Y2ZjODZmY2QzOTZhMTkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQorCitMSUJWID0gIjIuMTAuMCIKKworR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKK1BBQ0tBR0VDT05GSUdfbGludXhzdGRiYXNlID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSAke0dES19QSVhCVUZfTE9BREVSU30iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIke0dES19QSVhCVUZfTE9BREVSU30iCisKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItLXdpdGgtbGlicG5nLC0td2l0aG91dC1saWJwbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLXdpdGgtbGlianBlZywtLXdpdGhvdXQtbGlianBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLXdpdGgtbGlidGlmZiwtLXdpdGhvdXQtbGlidGlmZix0aWZmIgorUEFDS0FHRUNPTkZJR1tqcGVnMjAwMF0gPSAiLS13aXRoLWxpYmphc3BlciwtLXdpdGhvdXQtbGliamFzcGVyLGphc3BlciIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14MTEsLS13aXRob3V0LXgxMSx2aXJ0dWFsL2xpYngxMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXhsaWIiCisKKyMgRm9yIEdJTyBpbWFnZSB0eXBlIHNuaWZmaW5nCitSREVQRU5EU18ke1BOfSA9ICJzaGFyZWQtbWltZS1pbmZvIgorCitGSUxFU18ke1BOfS14bGliID0gIiR7bGliZGlyfS8qcGl4YnVmX3hsaWIqJHtTT0xJQlN9IgorQUxMT1dfRU1QVFlfJHtQTn0teGxpYiA9ICIxIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworRklMRVNfJHtQTn0tYmluICs9ICIke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisJJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCisgICAgICAgICR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAorCSR7aW5jbHVkZWRpcn0vKiBcCisJJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy8qLmxhIFwKKyIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmdkay1waXhidWYtbG9hZGVyLS4qIgorUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmUgPSAiIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgcG9zdGluc3RfcGl4YnVmbG9hZGVyID0gZC5nZXRWYXIoInBvc3RpbnN0X3BpeGJ1ZmxvYWRlciIpCisKKyAgICBsb2FkZXJzX3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycycpCisKKyAgICBwYWNrYWdlcyA9ICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxvYWRlcnNfcm9vdCwgJ15saWJwaXhidWZsb2FkZXItKC4qKVwuc28kJywgJ2dkay1waXhidWYtbG9hZGVyLSVzJywgJ0dESyBwaXhidWYgbG9hZGVyIGZvciAlcycpKQorICAgIGQuc2V0VmFyKCdQSVhCVUZfUEFDS0FHRVMnLCBwYWNrYWdlcykKKworICAgICMgVGhlIHRlc3Qgc3VpdGUgZXhlcmNpc2VzIGFsbCB0aGUgbG9hZGVycywgc28gZW5zdXJlIHRoZXkgYXJlIGFsbAorICAgICMgZGVwZW5kZW5jaWVzIG9mIHRoZSBwdGVzdCBwYWNrYWdlLgorICAgIGQuYXBwZW5kVmFyKCJSREVQRU5EU18lcy1wdGVzdCIgJSBkLmdldFZhcignUE4nKSwgIiAiICsgcGFja2FnZXMpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92ZSBnZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgaW50byBsaWJkaXIgc28gaXQgaXMgYWx3YXlzIGF2YWlsYWJsZQorCSMgaW4gbXVsdGlsaWIgYnVpbGRzLgorCW12ICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcXVlcnktbG9hZGVycyAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZSBcCisJCUdES19QSVhCVUZfTU9EVUxFRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMKK30KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1jb25maWd1cmUuYWMtUmVtb3ZlLWdub21lLWNvbW1vbi1tYWNyby1jYWxscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1MzkzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA4MzRiYzg2MTkyMWZlMDM2MWYyZDZhNWI1NzE2ZmM5N2E5NTE5NDc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFRodSwgNiBKdWwgMjAxNyAxMzoxMzo0NSArMDMwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IFJlbW92ZSBnbm9tZS1jb21tb24gbWFjcm8gY2FsbHMKKworZ25vbWUtY29tbW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHRoZXNlIGFyZW4ndCBkb2luZyBtdWNoIGZvciB1cy4KKworVXBzdHJlYW1hYmxlIGZpeCB3b3VsZCBwcm9iYWJseSBpbnZvbHZlIHVzaW5nIGF1dG9jb25mLWFyY2hpdmU6CitUcnlpbmcgdG8gYXZvaWQgdGhhdCBkZXBlbmRlbmN5IGZvciBub3cuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDMgLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDdhZGNmMGUuLmJiNzY1OWQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcxLDkgKzcxLDYgQEAgQUNfU1VCU1QoR05PTUVfREFURSkKKyBBQ19TVUJTVChHTk9NRV9EQVRFX0NPTU1FTlRfU1RBUlQpCisgQUNfU1VCU1QoR05PTUVfREFURV9DT01NRU5UX0VORCkKKyAKKy1HTk9NRV9DT01QSUxFX1dBUk5JTkdTKFttYXhpbXVtXSkKKy1HTk9NRV9NQUlOVEFJTkVSX01PREVfREVGSU5FUworLQorIEFDX0FSR19FTkFCTEUoZGVwcmVjYXRpb25fZmxhZ3MsCisgICAgICAgICAgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWRlcHJlY2F0aW9uLWZsYWdzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlICpfRElTQUJMRV9ERVBSRUNBVEVEIGZsYWdzIEA8OkBkZWZhdWx0PW5vQDo+QF0pXSwsCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjIyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzJjNmNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjIyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLUJQTiA9ICJnbm9tZS1kZXNrdG9wIgotCi1pbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzZDcyMjJkNTMwNWYzZGIwMjJlY2EzMWQ4MTA4ZTAyZCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjUxZDdlYmY3YTZjMzU5YmUxNGMzZGQ3YTAyMjIxM2U5MzE0ODQ2NTM4MTVlYjEwYjAxMzFiZWY0Yzg5NzllMWMiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1jb252ZXJ0LXRpbWVfdC10by1sb25nLnBhdGNoIgotCi1ERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdjb25mIHZpcnR1YWwvbGlieDExIGd0ayszIGdsaWItMi4wIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHhrZXlib2FyZC1jb25maWcgaXNvLWNvZGVzIHVkZXYiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVza3RvcC1kb2NzIgotCi1QQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCi1GSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgotCi1SUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMWMyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNC4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiR05PTUUgbGlicmFyeSBmb3IgcmVhZGluZyAuZGVza3RvcCBmaWxlcyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworQlBOID0gImdub21lLWRlc2t0b3AiCisKK2luaGVyaXQgZ25vbWUgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImFmN2M2YTI0M2RmN2EzMzVhMDEwYmRjMDViMzRjYTkzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOGZhMWRlNjZhNmE3NTk2M2JmZmM3OWIwMWE2MDQzNGM3MTIzN2Q0NGM1MWJlY2EwOWMwZjcxNGEwMzJkNzg1ZSIKKworU1JDX1VSSSArPSAiZmlsZTovL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWNvbnZlcnQtdGltZV90LXRvLWxvbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggXAorIgorCitERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnY29uZiB2aXJ0dWFsL2xpYngxMSBndGsrMyBnbGliLTIuMCBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyB1ZGV2IgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBndGstZG9jCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlc2t0b3AtZG9jcyIKKworUEFDS0FHRVMgPSsgImxpYmdub21lLWRlc2t0b3AzIgorRklMRVNfbGliZ25vbWUtZGVza3RvcDMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtkYXRhZGlyfS9saWJnbm9tZS1kZXNrdG9wKi9wbnAuaWRzICR7ZGF0YWRpcn0vZ25vbWUvKnhtbCIKKworUlJFQ09NTUVORFNfbGliZ25vbWUtZGVza3RvcDMgKz0gImdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YWM5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGQyYjlhZDhhODBiZjkzMjBmZTM1YzlhZWU4ZjUyZTU1ZWJkNDBlMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAxNDo1NTo0OSArMDMwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCB1c2UgQUNfQ0FOT05JQ0FMX0hPU1QKKworVGhpcyB3b24ndCB3b3JrIHdoZW4gYnVpbGRpbmcgYWxsYXJjaCAoYW5kIGlzIG9ubHkgdXNlZCB0byBmaW5kIG91dCBpZgordGFyZ2V0IGlzIHdpbmRvd3MpLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGQ4NTViN2EuLjY5MDhmNTkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMsNyArMyw2IEBAIEFDX1BSRVJFUSgyLjUzKQorIAorIEFDX0lOSVQoW2Fkd2FpdGEtaWNvbi10aGVtZV0sIFszLjI0LjBdLAorICAgICAgICAgW2h0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWFkd2FpdGEtaWNvbi10aGVtZV0pCistQUNfQ0FOT05JQ0FMX0hPU1QKKyBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCisgQUNfQ09ORklHX1NSQ0RJUihbaW5kZXgudGhlbWUuaW5dKQorIAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtUnVuLWluc3RhbGxhdGlvbi1jb21tYW5kcy1hcy1zaGVsbC1qb2JzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMzhlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaApAQCAtMCwwICsxLDgyIEBACitGcm9tIDhkY2Q3M2I0NWE2NjBkYmRjNTYwNjc2ODM1YmE0NmY0OTUzMzRmMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTMgSnVuIDIwMTcgMTg6MTA6MDYgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUnVuIGluc3RhbGxhdGlvbiBjb21tYW5kcyBhcyBzaGVsbCBqb2JzCisKK1RoaXMgZ3JlYXRseSBzcGVlZHMgdXAgaW5zdGFsbGF0aW9uIHRpbWUgb24gbXVsdGktY29yZSBzeXN0ZW1zLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL2Z1bGxjb2xvci9NYWtlZmlsZS5hbSB8IDMgKystCisgc3JjL3NwaW5uZXIvTWFrZWZpbGUuYW0gICB8IDUgKysrLS0KKyBzcmMvc3ltYm9saWMvTWFrZWZpbGUuYW0gIHwgNyArKysrLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZnVsbGNvbG9yL01ha2VmaWxlLmFtIGIvc3JjL2Z1bGxjb2xvci9NYWtlZmlsZS5hbQoraW5kZXggMWM5NDBhNS4uMzk5OGVlNiAxMDA2NDQKKy0tLSBhL3NyYy9mdWxsY29sb3IvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9mdWxsY29sb3IvTWFrZWZpbGUuYW0KK0BAIC05LDkgKzksMTAgQEAgaW5zdGFsbC1kYXRhLWxvY2FsOgorIAkJZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZSAmJiBmaW5kIC4gLW5hbWUgIioucG5nImA7IGRvIFwKKyAJCQljb250ZXh0PSJgZGlybmFtZSAkJGZpbGVgIjsgXAorIAkJCSQobWtkaXJfcCkgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGNvbnRleHQ7IFwKKy0JCQkkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvJCRzaXplLyQkZmlsZSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkZmlsZTsgXAorKwkJCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRmaWxlICYgXAorIAkJZG9uZTsgXAorIAlkb25lOworKwl3YWl0CisgCisgIyMgRklYTUUgd2Ugc2hvdWxkIGFkZCBhIHdheSB0byByZW1vdmUgbGlua3MgZ2VuZXJhdGVkIGJ5IGljb24gbWFwcGluZworIHVuaW5zdGFsbC1sb2NhbDoKK2RpZmYgLS1naXQgYS9zcmMvc3Bpbm5lci9NYWtlZmlsZS5hbSBiL3NyYy9zcGlubmVyL01ha2VmaWxlLmFtCitpbmRleCA4NmY0ZDdjLi4zZmFlOGMxIDEwMDY0NAorLS0tIGEvc3JjL3NwaW5uZXIvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9zcGlubmVyL01ha2VmaWxlLmFtCitAQCAtMjQsMTMgKzI0LDE0IEBAIGluc3RhbGwtZGF0YS1sb2NhbDoKKyAJICAgICAgZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZTsgZmluZCAuIC1uYW1lICIqLnBuZyJgOyBkbyBcCisgCQkgICAgICBjb250ZXh0PSJgZGlybmFtZSAkJGZpbGVgIjsgXAorIAkJICAgICAgJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkY29udGV4dDsgXAorLQkJICAgICAgJChpbnN0YWxsX3NoX0RBVEEpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZS8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGZpbGU7IFwKKysJCSAgICAgICQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRmaWxlICYgXAorIAkgICAgICBkb25lOyBcCisgCWZvciBmaWxlIGluIGBjZCAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS11cC10by0zMjsgZmluZCAuIC1uYW1lICIqLnN2ZyJgOyBkbyBcCisgCQljb250ZXh0PSJgZGlybmFtZSAkJGZpbGVgIjsgXAorIAkJJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvc2NhbGFibGUtdXAtdG8tMzIvJCRjb250ZXh0OyBcCistCQkkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvc2NhbGFibGUtdXAtdG8tMzIvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS9zY2FsYWJsZS11cC10by0zMi8kJGZpbGU7IFwKKysJCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS11cC10by0zMi8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpL3NjYWxhYmxlLXVwLXRvLTMyLyQkZmlsZSAmIFwKKyAJZG9uZQorKwl3YWl0CisgCisgdW5pbnN0YWxsLWxvY2FsOgorIAkgICAgICBmb3IgZmlsZSBpbiBgY2QgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvc2NhbGFibGUtdXAtdG8tMzI7IGZpbmQgLiAtbmFtZSAiKi5zdmciYDsgZG8gXAorZGlmZiAtLWdpdCBhL3NyYy9zeW1ib2xpYy9NYWtlZmlsZS5hbSBiL3NyYy9zeW1ib2xpYy9NYWtlZmlsZS5hbQoraW5kZXggMjRhYWM5Yi4uNjFiYTA3MSAxMDA2NDQKKy0tLSBhL3NyYy9zeW1ib2xpYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL3N5bWJvbGljL01ha2VmaWxlLmFtCitAQCAtMjUsMTggKzI1LDE5IEBAIGluc3RhbGwtZGF0YS1sb2NhbDoKKyAJCWZvciBmaWxlIGluIGBjZCAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemU7IGZpbmQgLiAtbmFtZSAiKi5wbmciYDsgZG8gXAorIAkJCWNvbnRleHQ9ImBkaXJuYW1lICQkZmlsZWAiOyBcCisgCQkJJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkY29udGV4dDsgXAorLQkJCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRmaWxlOyBcCisrCQkJJChpbnN0YWxsX3NoX0RBVEEpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZS8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGZpbGUgJiBcCisgCQlkb25lOyBcCisgCWRvbmUKKyAJZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlOyBmaW5kIC4gLW5hbWUgIiouc3ZnImA7IGRvIFwKKyAJCWNvbnRleHQ9ImBkaXJuYW1lICQkZmlsZWAiOyBcCisgCQkkKG1rZGlyX3ApICQoREVTVERJUikkKHRoZW1lZGlyKS9zY2FsYWJsZS8kJGNvbnRleHQ7IFwKKy0JCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpL3NjYWxhYmxlLyQkZmlsZTsgXAorKwkJJChpbnN0YWxsX3NoX0RBVEEpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlLyQkZmlsZSAkKERFU1RESVIpJCh0aGVtZWRpcikvc2NhbGFibGUvJCRmaWxlICYgXAorIAkJZm9yIHNpemUgaW4gJChzeW1ib2xpY19lbmNvZGVfc2l6ZXMpOyBkbyBcCisgCQkJJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkY29udGV4dDsgXAorLQkJCSQoR1RLX0VOQ09ERV9TWU1CT0xJQ19TVkcpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlLyQkZmlsZSAkJHNpemUgLW8gJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGNvbnRleHQ7IFwKKysJCQkkKEdUS19FTkNPREVfU1lNQk9MSUNfU1ZHKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS8kJGZpbGUgJCRzaXplIC1vICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRjb250ZXh0ICYgXAorIAkJZG9uZSBcCisgCWRvbmUKKysJd2FpdAorIAorIHVuaW5zdGFsbC1sb2NhbDoKKyAJZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlOyBmaW5kIC4gLW5hbWUgIiouc3ZnImA7IGRvIFwKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNiYzFlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1MSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2RlNTFkN2RmY2JjZmEzYjhjZGMzZTVmMGRmOGM3OTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzE4YmY2ZTI2MDg3ZDk4MTlhOTYyYzc3Mjg4YjI5MWVmYWIyNWQwNDE5YjczZDkwOWRkNzcxNzE2YTQ1ZGNiNyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6Ci0gICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgotCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKLQkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKLX0KLQotUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKLQotUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLQotRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKLUZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCi0gICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKLUZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCi0gICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzQwNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yNC4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiR1RLKyBpY29uIHRoZW1lIgorSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvYWR3YWl0YS1pY29uLXRoZW1lLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCisKK0xJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUnVuLWluc3RhbGxhdGlvbi1jb21tYW5kcy1hcy1zaGVsbC1qb2JzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2NjYWMwZDYwMGZmYzkzNmQyYWRmYjgwZTkyNDViYzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NmNzlmZjNiZDM0MDI1NDczN2NlNGQyOGI4N2YwY2NlZTRiMzM1OGNkM2NkNWNkMTFkYzdiNDJmNDFiMjcyYSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6CisgICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgorCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKKwkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKK30KKworUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKKworUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKKworRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCisgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKK0ZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCisgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mXzMuMi42LmJiCmluZGV4IDllOWY3MTQuLjkyZmQxMmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZl8zLjIuNi5iYgpAQCAtMSw1ICsxLDYgQEAKIFNVTU1BUlkgPSAiR05PTUUgY29uZmlndXJhdGlvbiBzeXN0ZW0iCiBTRUNUSU9OID0gIngxMS9nbm9tZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHJvamVjdHMuZ25vbWUub3JnL2djb25mLyIKIExJQ0VOU0UgPSAiTEdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IgogCkBAIC0yMiw5ICsyMyw4IEBACiAKICMgRGlzYWJsZSBQb2xpY3lLaXQgYnkgZGVmYXVsdAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLSMgV2UgcmVhbGx5IGRvbid0IHdhbnQgUG9saWN5S2l0IGZvciBuYXRpdmUgb3IgdWNsaWJjCisjIFdlIHJlYWxseSBkb24ndCB3YW50IFBvbGljeUtpdCBmb3IgbmF0aXZlCiBQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2xpYmMtdWNsaWJjID0gIiIKIAogUEFDS0FHRUNPTkZJR1twb2xpY3lraXRdID0gIi0tZW5hYmxlLWRlZmF1bHRzLXNlcnZpY2UsLS1kaXNhYmxlLWRlZmF1bHRzLXNlcnZpY2UscG9sa2l0IgogUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWc9eWVzLCAtLWVuYWJsZS1kZWJ1Zz1taW5pbXVtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjNjYzk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtdGhlbWVzLXN0YW5kYXJkXzMuMjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKzIgc3RhbmRhcmQgdGhlbWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ25vbWUtdGhlbWVzLXN0YW5kYXJkLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLMkRJU1RST0ZFQVRVUkVTfSIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGd0aysiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg0NjI0ZGJjZWNhYjdhZGQzMjY3MmFiYWUwMzAzMTRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzNDUxNmNkNTliODczYzE4N2MxODk3YzI1YmFjM2I5Y2UyZDMwYTQ3MmYxZmQ3YWU5ZDcxMDVkOTNlMTdkYTUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3RrMy1lbmdpbmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICAjIE9ubHkgYnVpbGRpbmcgQWR3YWl0YSwgcmVtb3ZlIGhpZ2hjb250cmFzdCBmaWxlcwotICAgICAgICBybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS90aGVtZXMvSGlnaENvbnRyYXN0IFwKLSAgICAgICAgICAgICAgICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMKLX0KLQotIyBUaGVyZSBjb3VsZCBiZSBnbm9tZS10aGVtZS1oaWdoY29udHJhc3QgYXMgd2VsbCBidXQgdGhhdCByZXF1aXJlcwotIyBndGsrMyBhbmQgaW5jbHVkZXMgbG90cyBvZiBpY29ucyAoaXMgYWxzbyBicm9rZW4gd2l0aCBCICE9IFMpLgotUEFDS0FHRVMgKz0gImdub21lLXRoZW1lLWFkd2FpdGEgXAotICAgICAgICAgICAgIGdub21lLXRoZW1lLWFkd2FpdGEtZGJnIFwKLSAgICAgICAgICAgICBnbm9tZS10aGVtZS1hZHdhaXRhLWRldsKgXAotICAgICAgICAgICAgIGdub21lLXRoZW1lLWFkd2FpdGEtZGFyayBcCi0gICAgICAgICAgICAgIgotCi1GSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhID0gIiR7cHJlZml4fS9zaGFyZS90aGVtZXMvQWR3YWl0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvZW5naW5lcy9saWJhZHdhaXRhLnNvIgotRklMRVNfZ25vbWUtdGhlbWUtYWR3YWl0YS1kZXYgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2VuZ2luZXMvbGliYWR3YWl0YS5sYSIKLUZJTEVTX2dub21lLXRoZW1lLWFkd2FpdGEtZGJnID0gIiR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9lbmdpbmVzLy5kZWJ1Zy9saWJhZHdhaXRhLnNvIgotCi1GSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhLWRhcmsgPSAiJHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9BZHdhaXRhLWRhcmsiCi1SREVQRU5EU19nbm9tZS10aGVtZS1hZHdhaXRhLWRhcmsgPSAiZ25vbWUtdGhlbWUtYWR3YWl0YSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZWUyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLXRoZW1lcy1zdGFuZGFyZF8zLjIyLjMuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJHVEsrMiBzdGFuZGFyZCB0aGVtZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbm9tZS10aGVtZXMtc3RhbmRhcmQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9nbm9tZSIKKworTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgorCitERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKyIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjUxYzM2MmIxNTdiNjQwNzMwM2Q0NGY5M2MzMWVlMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjFkYzg3YzUyMjYxY2ZkNWI5NGQ2NWU4ZmZkOTIzZGRlYjVkMzk0NDU2MmY4NDk0MmVlZWIxOTdhYjhhYjU2YSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGszLWVuZ2luZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgICMgT25seSBidWlsZGluZyBBZHdhaXRhLCByZW1vdmUgaGlnaGNvbnRyYXN0IGZpbGVzCisgICAgICAgIHJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9IaWdoQ29udHJhc3QgXAorICAgICAgICAgICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucworCisJIyBUaGUgbGlidG9vbCBhcmNoaXZlIGZpbGUgaXMgdW5uZWVkZWQgd2l0aCBzaGFyZWQgbGlicyBvbiBtb2Rlcm4gTGludXgKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9lbmdpbmVzL2xpYmFkd2FpdGEubGEKK30KKworIyBUaGVyZSBjb3VsZCBiZSBnbm9tZS10aGVtZS1oaWdoY29udHJhc3QgYXMgd2VsbCBidXQgdGhhdCByZXF1aXJlcworIyBndGsrMyBhbmQgaW5jbHVkZXMgbG90cyBvZiBpY29ucyAoaXMgYWxzbyBicm9rZW4gd2l0aCBCICE9IFMpLgorUEFDS0FHRVMgKz0gImdub21lLXRoZW1lLWFkd2FpdGEgXAorICAgICAgICAgICAgIGdub21lLXRoZW1lLWFkd2FpdGEtZGFyayBcCisgICAgICAgICAgICAgIgorCitGSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhID0gIiR7cHJlZml4fS9zaGFyZS90aGVtZXMvQWR3YWl0YSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvZW5naW5lcy9saWJhZHdhaXRhLnNvIgorCitGSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhLWRhcmsgPSAiJHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9BZHdhaXRhLWRhcmsiCitSREVQRU5EU19nbm9tZS10aGVtZS1hZHdhaXRhLWRhcmsgPSAiZ25vbWUtdGhlbWUtYWR3YWl0YSIKKworIyBnbm9tZS10aGVtZXMtc3RhbmRhcmQgaXMgZW1wdHkgYW5kIGRvZXNuJ3QgZXhpc3QKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41MC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA5ZmM1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41MC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTBkNTc3NTM1YTM4OThlMWFlNWRiZjBhZTM1MDlhOGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvY29tcGlsZXIuYztlbmRsaW5lPTIwO21kNT1mYzUwMDdmYzIwMDIyNzIwZTZjMGIwY2RkZTQxZmFiZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXNjYW5uZXIvc291cmNlc2Nhbm5lci5jO2VuZGxpbmU9MjI7bWQ1PTE5NGQ2ZTBjMWQwMDY2MmYzMmQwMzBjZTQ0ZGU4ZDM5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpcmVwb3NpdG9yeS9naXJlZ2lzdGVyZWR0eXBlaW5mby5jO2VuZGxpbmU9MjE7bWQ1PTY2MTg0NzYxMWFlNjk3OTQ2NTQxNWYzMWE3NTliYTI3IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMS41MC8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNWFmOGQ3MjRmMjVkMGM5Y2ZiZTZkZjQxYjc3ZTVkYzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM2NTk3YzY2NmY1NDNjNzBlZjNkN2M4OTNhYjA1Mjk2OGFmYWU2MjBlZmRjMDgwYzM2NjU3ZjQyMjYzMzdjNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAotZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKLWV4cG9ydCBCCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAotIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCi0jIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KLSMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi0jIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KLURFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0Ci0gICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KLSAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKLSAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLWctaXItc2Nhbm5lciAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgotICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0Ci0gICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi1wcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotCi0gICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1sZGQtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCAnLS1kaXNhYmxlLWludHJvc3BlY3Rpb24tZGF0YScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tkb2N0b29sXSA9ICItLWVuYWJsZS1kb2N0b29sLC0tZGlzYWJsZS1kb2N0b29sLHB5dGhvbjMtbWFrbywiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotICAgICAgICBleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKLQotICAgICAgICAjIE5lZWRlZCB0byBydW4gZy1pciB1bml0IHRlc3RzLCB3aGljaCB3b24ndCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJ1aWx0IGxpYnJhcmllcyBvdGhlcndpc2UKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9JEIvLmxpYnMKLX0KLQotIyBPdXIgd3JhcHBlcnMgbmVlZCB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgdGhleSB3aWxsIGJlIHVzZWQgCi0jIHRvIGJ1aWxkIGludHJvc3BlY3Rpb24gZmlsZXMgZm9yIGFsbCBvdGhlciBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLX0KLQotIyAudHlwZWxpYiBmaWxlcyBhcmUgbmVlZGVkIGF0IHJ1bnRpbWUgYW5kIHNvIHRoZXkgZ28gdG8gdGhlIG1haW4gcGFja2FnZQotRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LSovKi50eXBlbGliIgotCi0jIC5naXIgZmlsZXMgZ28gdG8gZGV2IHBhY2thZ2UsIGFzIHRoZXkncmUgbmVlZGVkIGZvciBkZXZlbG9waW5nIChidXQgbm90IGZvciBydW5uaW5nKQotIyB0aGluZ3MgdGhhdCBkZXBlbmRzIG9uIGludHJvc3BlY3Rpb24uCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyouZ2lyIgotCi0jIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLSMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgotCi0jIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCi0jIHRlc3RzdWl0ZXMuCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKLQotIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKLSMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCi1TWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgotZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKLSAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAotICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKLSAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCi19Ci0KLSMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKLSMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCi1weXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7Ci0gICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCi1naV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59Ci0JZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0Ci0JZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0Ci0JY2htb2QgNzU1ICRkZXN0Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmU3MWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTIuMS5iYgpAQCAtMCwwICsxLDE4OCBAQAorU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGQ1Nzc1MzVhMzg5OGUxYWU1ZGJmMGFlMzUwOWE4YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjciCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjUyLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNDE1NzA3Mzk5MWY5ZWViMGVkOTUzMzUxYjY1ZWI2MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZWQwYzM4ZDUyZmUxYWE2ZmM0ZGVmMGM4NjhmZTQ4MWNiODdiNTMyZmM2OTQ3NTZiMjZkNmNmYWIyOWZhZmY0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBweXRob24zbmF0aXZlIHFlbXUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0CitleHBvcnQgU1RBR0lOR19ESVJfSE9TVAorZXhwb3J0IEIKKworREVQRU5EU19hcHBlbmQgPSAiIGxpYmZmaSB6bGliIGdsaWItMi4wIHB5dGhvbjMgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCisjIHRhcmdldCBidWlsZCBuZWVkcyBxZW11IHRvIHJ1biB0ZW1wb3JhcnkgaW50cm9zcGVjdGlvbiBiaW5hcmllcyBjcmVhdGVkCisjIG9uIHRoZSBmbHkgYnkgZy1pci1zY2FubmVyIGFuZCBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGl0c2VsZiB0byBydW4KKyMgbmF0aXZlIHZlcnNpb25zIG9mIGl0cyBvd24gdG9vbHMgZHVyaW5nIGJ1aWxkLgorIyBBbHNvIHByZWxpbmstcnRsZCBpcyB1c2VkIHRvIGZpbmQgb3V0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIGludHJvc3BlY3Rpb24gYmluYXJpZXMKKyMgKHN0YW5kYXJkIGxkZCBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorREVQRU5EU19jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIHFlbXUtbmF0aXZlIHByZWxpbmstbmF0aXZlIgorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIGctaXItc2Nhbm5lci13cmFwcGVyIGctaXItY29tcGlsZXItd3JhcHBlciBnLWlyLXNjYW5uZXItbGRkd3JhcHBlciBHaW8tMi4wLmdpciBwb3N0aW5zdC1sZHNvY29uZi0ke1BOfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICAjIFR3ZWFrIHRoZSBuYXRpdmUgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIGZ1bGwgcGF0aCBvZiBuYXRpdmUgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQorICAgICAgICAjIFRoaXMgcmVtb3ZlcyB0aGUgcmlzayBvZiBleGNlZWRpbmcgTGludXgga2VybmVsJ3Mgc2hlYmFuZyBsaW5lIGxpbWl0ICgxMjggYnl0ZXMpCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgICMgV3JpdGUgb3V0IGEgcWVtdSB3cmFwcGVyIHRoYXQgd2lsbCBiZSBnaXZlbiB0byBnaS1zY2FubmVyIHNvIHRoYXQgaXQKKyAgICAgICAgIyBjYW4gcnVuIHRhcmdldCBoZWxwZXIgYmluYXJpZXMgdGhyb3VnaCB0aGF0LgorICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyRTVEFHSU5HX0RJUl9IT1NUJywgWydcJEdJUl9FWFRSQV9MSUJTX1BBVEgnLCcubGlicycsJyRTVEFHSU5HX0RJUl9IT1NULyR7bGliZGlyfScsJyRTVEFHSU5HX0RJUl9IT1NULyR7YmFzZV9saWJkaXJ9J10pfSIKKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVXNlIGEgbW9kdWxlcyBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCBzbyB3ZSBkb24ndCBsb2FkIHJhbmRvbSB0aGluZ3MKKyMgd2hpY2ggbWF5IHRoZW4gZ2V0IGRlbGV0ZWQgKG9yIHRoZWlyIGRlcGVuZGVuY2llcykgYW5kIHBvdGVudGlhbGx5IHNlZ2ZhdWx0CitleHBvcnQgR0lPX01PRFVMRV9ESVI9JHtTVEFHSU5HX0xJQkRJUn0vZ2lvL21vZHVsZXMtZHVtbXkKKworJHFlbXVfYmluYXJ5ICJcJEAiCitpZiBbIFwkPyAtbmUgMCBdOyB0aGVuCisgICAgZWNobyAiSWYgdGhlIGFib3ZlIGVycm9yIG1lc3NhZ2UgaXMgYWJvdXQgbWlzc2luZyAuc28gbGlicmFyaWVzLCB0aGVuIHNldHRpbmcgdXAgR0lSX0VYVFJBX0xJQlNfUEFUSCBpbiB0aGUgcmVjaXBlIHNob3VsZCBoZWxwLiIKKyAgICBlY2hvICIodHlwaWNhbGx5IGxpa2UgdGhpczogR0lSX0VYVFJBX0xJQlNfUEFUSD1cIiQiIntCfS9zb21ldGhpbmcvLmxpYnNcIiApIgorICAgIGV4aXQgMQorZmkKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1zY2FubmVyIGl0c2VsZiwgd2hpY2ggd2lsbCBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcworICAgICAgICAjIGZvciBnbGliLWJhc2VkIHBhY2thZ2VzLiBUaGlzIHdyYXBwZXIgY2FsbHMgdGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIHRoZSBzY2FubmVyLCBhbmQgdGVsbHMgaXQgdG8gdXNlCisgICAgICAgICMgYSBxZW11IHdyYXBwZXIgZm9yIHJ1bm5pbmcgdHJhbnNpZW50IHRhcmdldCBiaW5hcmllcyBwcm9kdWNlZCBieSB0aGUgc2Nhbm5lciwgYW5kIGFuIGluY2x1ZGUgZGlyZWN0b3J5IAorICAgICAgICAjIGZyb20gdGhlIHRhcmdldCBzeXNyb290LgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCisjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCitleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKKworZy1pci1zY2FubmVyIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCisgICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKKyAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKK3ByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCisKKyAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKKyMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCisjIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQorRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCArPSAiLS1lbmFibGUtaG9zdC1naSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhdGljIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktbGRkLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLS1lbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgJy0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbZG9jdG9vbF0gPSAiLS1lbmFibGUtZG9jdG9vbCwtLWRpc2FibGUtZG9jdG9vbCxweXRob24zLW1ha28sIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKKyAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKKyAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCit9CisKKyMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkIAorIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCit9CisKKyMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKKworIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKKyMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCisjIHRvIGdlbmVyYXRlIHRyYW5zaWVudCBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvZ2R1bXAuYyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gcHlnb2JqZWN0KSB0byBidWlsZCB0aGVpcgorIyB0ZXN0c3VpdGVzLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouYyBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCisKKyMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11CisjIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcworU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7YmluZGlyfSIKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2dpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgYmluYXJ5IG5hbWVzIGluIHRoZSBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0CisgICAgICAgICMgcGlja3MgdXAgb3VyIHdyYXBwZXJzIHdoaWNoIGRvIHRoZSBjcm9zcy1jb21waWxlIGFuZCBxZW11IG1hZ2ljLgorICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAtZSAic3xnX2lyX3NjYW5uZXI9Lip8Z19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgLWUgInN8Z19pcl9jb21waWxlcj0uKnxnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXJ8IiBcCisgICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9wa2djb25maWcvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYworfQorCisjIE5lZWQgdG8gZW5zdXJlIGxkLnNvLmNvbmYgZXhpc3RzIHNvIHByZWxpbmstbmF0aXZlIHdvcmtzCisjIGJvdGggYmVmb3JlIHdlIGJ1aWxkIGFuZCBpZiB3ZSBpbnN0YWxsIGZyb20gc3N0YXRlCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlIgorcHl0aG9uIGdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUgKCkgeworICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKK30KKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZCA9ICIgZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKKwlta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KKwlkZXN0PSR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9wb3N0aW5zdC1sZHNvY29uZi0ke1BOfQorCWVjaG8gIiMhL2Jpbi9zaCIgPiAkZGVzdAorCWVjaG8gIm1rZGlyIC1wICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0iID4+ICRkZXN0CisJZWNobyAiZWNobyAke2Jhc2VfbGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJZWNobyAiZWNobyAke2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAorCWNobW9kIDc1NSAkZGVzdAorfQorCisjIFJlbW92ZSB3cmFwcGVyIGZpbGVzIGZyb20gdGhlIHBhY2thZ2UsIG9ubHkgdXNlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gImdpX3BhY2thZ2VfcHJlcHJvY2VzcyIKK2dpX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCmluZGV4IDI3ZGE4NDQuLjBhMzU3ZGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwpAQCAtMTAsNyArMTAsMTEgQEAKIAogTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBndGstZG9jIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ3RrLWltbW9kdWxlcy1jYWNoZSBnc2V0dGluZ3MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MgdXBkYXRlLWFsdGVybmF0aXZlcyBndGstaW1tb2R1bGVzLWNhY2hlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKKyMgdmVyc2lvbnMgPj0gMy45MCBhcmUgZGV2ZWxvcG1lbnQgdmVyc2lvbnMsIG90aGVyd2lzZSBsaWtlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW15cZFwuXSg/UDxwdmVyPjNcLihbMS04XT9bMDI0NjhdKSsoXC5cZCspKylcLnRhciIKKwogQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCiAKICMgVGhpcyBzaG91bGQgYmUgaW4gYXV0b3Rvb2xzLmJiY2xhc3MsIGJ1dCB1bnRpbCBzb21ldGhpbmcgZWxzZXMgdXNlcyBpdCBwdXR0aW5nCkBAIC0zNCw3ICszOCw2IEBACiAgICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IFwKICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiIiwgIi0tZGlzYWJsZS1ndGstZG9jIiwgZCl9IFwKICAgICAgICAgICAgICAgICAgIgotRVhUUkFfT0VDT05GW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgogCiBkb19jb21waWxlX3ByZXBlbmQoKSB7CiAgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dkay8ubGlicyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKaW5kZXggZWFmNmFlYy4uOWNkZWUwZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKQEAgLTk0Miw4ICs5NDIsOCBAQAogKwlnZGtnZWFycwogK2VuZGlmCiArCi0gaWYgVVNFX1gxMQotIG5vaW5zdF9QUk9HUkFNUyArPSB0ZXN0ZXJyb3JzCisgaWYgVVNFX1dBWUxBTkQKKyBub2luc3RfUFJPR1JBTVMgKz0gdGVzdGZvcmVpZ24KICBlbmRpZgogZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jIGIvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMKIGluZGV4IDBiM2E1MTkuLjA3YjA5NmYgMTAwNjQ0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YTU0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4xNy5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIGd0ayszLmluYworCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjlmODU0MzBjZjdjZmE4Y2E4ZDA3MDNiYTY1ZGJlMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjMWZiOGYyMjljNjI2YTNkOWMwZTFjZTZlYTEzOGRlN2Y2NGE1YTZiYzc5OWQ0NWZhMjg2ZmU0NjFjMzQzNyIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYzU3ZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ3RrKzMuaW5jCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiNGZiMzlhODI5ZTQ0MjViM2ZhMDVhZGJlN2Y1MmZlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzI1NGE4OGRmNWMxN2U5NjA5Y2VlOWU4NDhjM2QwMTA0NTEyNzA3ZWRhZDRjM2I0ZjI1NmIxMzFmOGQzYWYxIgotCi1TID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMyZDgyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgorREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKKworTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiMjlmODU0MzBjZjdjZmE4Y2E4ZDA3MDNiYTY1ZGJlMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjMWZiOGYyMjljNjI2YTNkOWMwZTFjZTZlYTEzOGRlN2Y2NGE1YTZiYzc5OWQ0NWZhMjg2ZmU0NjFjMzQzNyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitpbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKKworIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgorCitQS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgorCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KKwkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKKwkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJZmkKKwlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCisJCXRvdWNoIGdkay9jb25maWcuaAorCWZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCisJCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQorCisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAorCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZworfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjgzNDE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJOYXRpdmUgaWNvbiB1dGlscyBmb3IgR1RLKyIKLURFU0NSSVBUSU9OID0gImd0ay11cGRhdGUtaWNvbi1jYWNoZSBhbmQgZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgYnVpbHQgZnJvbSBHVEsrIG5hdGl2ZWx5LCBmb3IgYnVpbGQgdGltZSBhbmQgb24taG9zdCBwb3N0aW5zdCBzY3JpcHQgZXhlY3V0aW9uLiIKLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUgZ2RrLXBpeGJ1Zi1uYXRpdmUgbGlicnN2Zy1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgZmlsZTovL1JlbW92ZS1HZGstZGVwZW5kZW5jeS1mcm9tLWd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImI0ZmIzOWE4MjllNDQyNWIzZmEwNWFkYmU3ZjUyZmVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3MjU0YTg4ZGY1YzE3ZTk2MDljZWU5ZTg0OGMzZDAxMDQ1MTI3MDdlZGFkNGMzYjRmMjU2YjEzMWY4ZDNhZjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgotCi1TID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKLQotaW5oZXJpdCBwa2djb25maWcgbmF0aXZlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1QS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgotCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KLQkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKLQkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JZmkKLQlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCi0JCXRvdWNoIGdkay9jb25maWcuaAotCWZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCi0JCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQotCi0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAotCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZwotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9jb25kaXRpb25hbHRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMTgwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitBbGxvdyB0aGUgdGVzdHMgdG8gYmUgZXhwbGljaXRseSBkaXNhYmxlZCB0byBhdm9pZCBmbG9hdGluZyBkZXBlbmRuZWN5Citpc3N1ZXMuIFRoaXMgaXMgbm90IHJlYWxseSBhbiBpc3N1ZSB3aXRoIFJTUyBidXQgaXMgb24gcHJldmlvdXMgcmVsZWFzZXMuCisKK1JQIDIwMTcvNi8yNworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBndGstZG9jLTEuMjUvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3RrLWRvYy0xLjI1Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ3RrLWRvYy0xLjI1L2NvbmZpZ3VyZS5hYworQEAgLTE2MSw2ICsxNjEsMTEgQEAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisgCWZpCisgZmkKKyAKKytBQ19BUkdfRU5BQkxFKFt0ZXN0c10sCisrCUFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS10ZXN0c10sCisrCVtlbmFibGUgdGVzdHMgKGRlZmF1bHQ9eWVzKV0pLCwKKysJW2VuYWJsZV90ZXN0cz0ieWVzIl0pCisrCisgZG5sIGlmIGdsaWIgaXMgYXZhaWxhYmxlIHdlIGNhbiBlbmFibGUgdGhlIHRlc3RzCisgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPj0gMi42LjAgZ29iamVjdC0yLjAgPj0gMi42LjBdLAorIAlbCWdsaWJfcHJlZml4PSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggZ2xpYi0yLjBgIgorQEAgLTE3MSw2ICsxNzYsMTEgQEAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPgorIAkJYnVpbGRfdGVzdHM9Im5vIgorIAldCisgKQorK2lmIHRlc3QgIngkZW5hYmxlX3Rlc3RzIiAhPSAieHllcyI7IHRoZW4KKysJZ3RrX2RvY191c2VfbGlidG9vbD0ibm8iCisrCWJ1aWxkX3Rlc3RzPSJubyIKKytmaQorKworIEFNX0NPTkRJVElPTkFMKEdUS19ET0NfVVNFX0xJQlRPT0wsIHRlc3QgLW4gIiRMSUJUT09MIiAtYSB4JGd0a19kb2NfdXNlX2xpYnRvb2wgPSB4eWVzICkKKyBkbmwgdGhpcyBlbmFibGUgdGhlIHJ1bGUgaW4gdGVzdC9NYWtlZmlsZS5hbQorIEFNX0NPTkRJVElPTkFMKEJVSUxEX1RFU1RTLCB0ZXN0IHgkYnVpbGRfdGVzdHMgPSB4eWVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjUuYmIKaW5kZXggN2RlMzZhZTkuLmUwZWI5OTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYgpAQCAtMTYsNiArMTYsNyBAQAogIyBob3BlZnVsbHkgbm8gb25lIG1pbmRzIGJlY2F1c2UgaXRzIHNjcmlwdHMgYXJlIG5vdCB1c2VkIGZvciBhbnl0aGluZyBkdXJpbmcgYnVpbGQKICMgYW5kIHNob3VsZG4ndCBiZSB1c2VkIG9uIHRhcmdldHMuCiBQQUNLQUdFQ09ORklHW3dvcmtpbmctc2NyaXB0c10gPSAiLS13aXRoLWhpZ2hsaWdodD1zb3VyY2UtaGlnaGxpZ2h0LC0td2l0aC1oaWdobGlnaHQ9bm8sbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIHNvdXJjZS1oaWdobGlnaHQtbmF0aXZlIHBlcmwtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzLGdsaWItMi4wIgogCiAjIFdlIGNhbm5vdCB1c2UgaG9zdCBwZXJsLCBiZWNhdXNlIGl0IG1heSBiZSB0b28gb2xkIGZvciBndGstZG9jCiBFWFRSQU5BVElWRVBBVEggKz0gInBlcmwtbmF0aXZlIgpAQCAtMjMsNiArMjQsNyBAQAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODY5YmE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiSlNPTi1HTGliIGltcGxlbWVudHMgYSBmdWxsIEpTT04gcGFyc2VyIHVzaW5nIEdMaWIgYW5kIEdPYmplY3QiCi1ERVNDUklQVElPTiA9ICJVc2UgSlNPTi1HTGliIGl0IGlzIHBvc3NpYmxlIHRvIHBhcnNlIGFuZCBnZW5lcmF0ZSB2YWxpZCBKU09OXAotIGRhdGEgc3RydWN0dXJlcywgdXNpbmcgYSBET00tbGlrZSBBUEkuIEpTT04tR0xpYiBhbHNvIG9mZmVycyBHT2JqZWN0IFwKLWludGVncmF0aW9uLCBwcm92aWRpbmcgdGhlIGFiaWxpdHkgdG8gc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBHT2JqZWN0IFwKLWluc3RhbmNlcyB0byBhbmQgZnJvbSBKU09OIGRhdGEgdHlwZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0pzb25HbGliIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImMxZGFlZmI4ZDBmYjU5NjEyYWYwYzA3MmM4YWFiYjU4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZWExMjhhYjUyYTgyNGZjZDA2ZTU0NDhmYmIyYmQ4ZDlhMTM3NDBkNTFjNjZkNDQ1ODI4ZWRiYTcxMzIxYTYyMSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBsaWJfcGFja2FnZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4gLS13aXRoLXhtbC1jYXRhbG9nPSR7U1RBR0lOR19FVENESVJfTkFUSVZFfS94bWwvY2F0YWxvZy54bWwsIC0tZGlzYWJsZS1tYW4sIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNWQzODEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJKU09OLUdMaWIgaW1wbGVtZW50cyBhIGZ1bGwgSlNPTiBwYXJzZXIgdXNpbmcgR0xpYiBhbmQgR09iamVjdCIKK0RFU0NSSVBUSU9OID0gIlVzZSBKU09OLUdMaWIgaXQgaXMgcG9zc2libGUgdG8gcGFyc2UgYW5kIGdlbmVyYXRlIHZhbGlkIEpTT05cCisgZGF0YSBzdHJ1Y3R1cmVzLCB1c2luZyBhIERPTS1saWtlIEFQSS4gSlNPTi1HTGliIGFsc28gb2ZmZXJzIEdPYmplY3QgXAoraW50ZWdyYXRpb24sIHByb3ZpZGluZyB0aGUgYWJpbGl0eSB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIEdPYmplY3QgXAoraW5zdGFuY2VzIHRvIGFuZCBmcm9tIEpTT04gZGF0YSB0eXBlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvSnNvbkdsaWIiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZmYzMWU3ZDA1OTRkZjQ0MzE4ZTEyZmFjZGEzZDA4NmUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmZDU1YTkwMzdkMzllN2ExMGYwZGI2NDMwOWY1ZjAyNjVmYTMyZWM5NjJiZjg1MDY2MDg3YjgzYTI4MDdmNDBhIgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IGxpYl9wYWNrYWdlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIG1hbnBhZ2VzCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbiAtLXdpdGgteG1sLWNhdGFsb2c9JHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3htbC9jYXRhbG9nLnhtbCwgLS1kaXNhYmxlLW1hbiwgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiCmluZGV4IGFlMGYxYzcuLmFkNjc5MjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJHT2JqZWN0IHdyYXBwZXIgZm9yIGxpYnVkZXYiCi0KK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGliZ3VkZXYiCiBTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5MTZjMTBjNTFlYzYxMTMxZTI0NGMzOTM2YmJiMmUwYyIKIFNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjNiMWVmOTlkNGE4OTg0YzM1MDQ0MTAzZDhkZGZjM2NjNTJjODAwMzVjMzZhYmFiMmJjYzVlMzUzMmUwNjNmOTYiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlibm90aWZ5L2xpYm5vdGlmeV8wLjcuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlibm90aWZ5L2xpYm5vdGlmeV8wLjcuNy5iYgppbmRleCAyYWIyZjFmLi42YzI5OWJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYm5vdGlmeS9saWJub3RpZnlfMC43LjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJub3RpZnkvbGlibm90aWZ5XzAuNy43LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzZW5kaW5nIGRlc2t0b3Agbm90aWZpY2F0aW9ucyB0byBhIG5vdGlmaWNhdGlvbiBkYWVtb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdub21lLm9yZyIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTI0M2M4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCi0KLVNFQ1RJT04gPSAieDExL3V0aWxzIgotREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIHBpeGJ1ZmNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImY0NzRmZTM3MTc3YTJiZjgwNTA3ODdkZjIwNDYwOTVjIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZDQ4YmNmNmIwM2ZhOThmMDdkZjEwMzMyZmI0OWQ4YzAxMDc4NmRkY2E2YWIzNGNiYmEyMTc2ODRmNTMzZmYyZSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9HREtfUElYQlVGX1FVRVJZTE9BREVSUz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgotCi0jIFRoZSBvbGRlciBsZCAoMi4yMikgb24gdGhlIGhvc3QgKENlbnRvcyA2LjUpIGRvZXNuJ3QgaGF2ZSB0aGUKLSMgLUJzeW1ib2xpYy1mdW5jdGlvbnMgb3B0aW9uLCB3ZSBjYW4gZGlzYWJsZSBpdCBmb3IgbmF0aXZlLgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ2RrcGl4YnVmIgotIyBUaGUgZ2RrLXBpeGJ1ZiBsb2FkZXIKLVBBQ0tBR0VDT05GSUdbZ2RrcGl4YnVmXSA9ICItLWVuYWJsZS1waXhidWYtbG9hZGVyLC0tZGlzYWJsZS1waXhidWYtbG9hZGVyLGdkay1waXhidWYtbmF0aXZlIgotIyBHVEsrIHRlc3QgYXBwbGljYXRpb24gKHJzdmctdmlldykKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IG5lZWQgLmEgb3IgLmxhIG9uIExpbnV4Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5hICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyoubGEKLX0KLQotUEFDS0FHRVMgPSsgImxpYnJzdmctZ3RrIHJzdmciCi1GSUxFU19yc3ZnID0gIiR7YmluZGlyfS9yc3ZnKiBcCi0JICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N2Zy12aWV3ZXIuc3ZnIFwKLQkgICAgICAke2RhdGFkaXJ9L3RoZW1lcyIKLUZJTEVTX2xpYnJzdmctZ3RrID0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qLyovKi5zbyIKLQotUElYQlVGX1BBQ0tBR0VTID0gImxpYnJzdmctZ3RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhMGRjMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciByZW5kZXJpbmcgU1ZHIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGlicnN2Zy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcnN2Zy5oO2JlZ2lubGluZT0zO2VuZGxpbmU9MjQ7bWQ1PTIwYjQxMTNjNDkwOWJiZjBkNjdlMDA2Nzc4MzAyYmM2IgorCitTRUNUSU9OID0gIngxMS91dGlscyIKK0RFUEVORFMgPSAiY2Fpcm8gZ2RrLXBpeGJ1ZiBnbGliLTIuMCBsaWJjcm9jbyBsaWJ4bWwyIHBhbmdvIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ3RrLWRvYyBwaXhidWZjYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ndGstb3B0aW9uLnBhdGNoIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlYWE1YzhhOGJiZTI2MDBhYjUxOTRjMGQzYjFiNjIxYiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJmYzhjNDg4Yzg5YzFlNzIxMmM0NzhiZWI5NWM0MWI0NDcwMTYzNjEyNWEzZTZkYWI0MTE4N2YxNDg1YjU2NGMiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X3BhdGhfR0RLX1BJWEJVRl9RVUVSWUxPQURFUlM9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworIyBUaGUgb2xkZXIgbGQgKDIuMjIpIG9uIHRoZSBob3N0IChDZW50b3MgNi41KSBkb2Vzbid0IGhhdmUgdGhlCisjIC1Cc3ltYm9saWMtZnVuY3Rpb25zIG9wdGlvbiwgd2UgY2FuIGRpc2FibGUgaXQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdka3BpeGJ1ZiIKKyMgVGhlIGdkay1waXhidWYgbG9hZGVyCitQQUNLQUdFQ09ORklHW2dka3BpeGJ1Zl0gPSAiLS1lbmFibGUtcGl4YnVmLWxvYWRlciwtLWRpc2FibGUtcGl4YnVmLWxvYWRlcixnZGstcGl4YnVmLW5hdGl2ZSIKKyMgR1RLKyB0ZXN0IGFwcGxpY2F0aW9uIChyc3ZnLXZpZXcpCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0azMsLS13aXRob3V0LWd0azMsZ3RrKzMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTG9hZGFibGUgbW9kdWxlcyBkb24ndCBuZWVkIC5hIG9yIC5sYSBvbiBMaW51eAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyouYSAke0R9JHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovbG9hZGVycy8qLmxhCit9CisKK1BBQ0tBR0VTID0rICJsaWJyc3ZnLWd0ayByc3ZnIgorRklMRVNfcnN2ZyA9ICIke2JpbmRpcn0vcnN2ZyogXAorCSAgICAgICR7ZGF0YWRpcn0vcGl4bWFwcy9zdmctdmlld2VyLnN2ZyBcCisJICAgICAgJHtkYXRhZGlyfS90aGVtZXMiCitGSUxFU19saWJyc3ZnLWd0ayA9ICIke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvbGlicnN2Zy50aHVtYm5haWxlciIKKworUElYQlVGX1BBQ0tBR0VTID0gImxpYnJzdmctZ3RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYwppbmRleCA4ZTFlMmUxLi4yMGUwZDJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYwpAQCAtMzAsNiArMzAsNyBAQAogUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQ9eWVzLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKIFBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2w9eWVzLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCiBQQUNLQUdFQ09ORklHW2dsZXN2Ml0gPSAiLS1lbmFibGUtZ2xlc3YyLC0tZGlzYWJsZS1nbGVzdjIsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsdmlydHVhbC9saWJnbCIKIAogI2NoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cyAKIHJlcXVpcmUgY2Fpcm8tZnB1LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby8wMDAxLWNhaXJvLUZpeC1DVkUtMjAxNy05ODE0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby8wMDAxLWNhaXJvLUZpeC1DVkUtMjAxNy05ODE0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMDJhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSAwNDI0MjFlOWUzZDI2NmFkMGJiNzgwNTEzMjA0MWVmNTFhZDMyMzRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWRyaWFuIEpvaG5zb24gPGFqb2huc29uQHJlZG5lb24uY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAyMjo1MjozNSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjYWlybzogRml4IENWRS0yMDE3LTk4MTQKKworVGhlIGJ1ZyBoYXBwZW5zIGJlY2F1c2UgaW4gc29tZSBzY2VuYXJpb3MgdGhlIHZhcmlhYmxlIHNpemUgY2FuCitoYXZlIGEgdmFsdWUgb2YgMCBhdCBsaW5lIDEyODguIEFuZCBtYWxsb2MoMCkgaXMgbm90IHJldHVybmluZworTlVMTCBhcyBzb21lIHBlb3BsZSBjb3VsZCBleHBlY3Q6CisKKyAgICBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDczMTU3L3plcm8tc2l6ZS1tYWxsb2MKKworbWFsbG9jKDApIHJldHVybnMgdGhlIHNtYWxsZXN0IGNodW5rIHBvc3NpYmxlLiBTbyB0aGUgbGluZSAxMjkwCit3aXRoIHRoZSByZXR1cm4gaXMgbm90IGV4ZWN1dGUuIEFuZCB0aGUgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoCithbiBpbnZhbGlkIG1hcC4KKworU2luY2UgdGhlIHNpemUgaXMgMCB0aGUgdmFyaWFibGUgbWFwIGlzIG5vdCBpbml0aWFsaXplZCBjb3JyZWN0bHkKK2F0IGxvYWRfdHJ1dHlwZV90YWJsZS4gU28sIGxhdGVyIHdoZW4gdGhlIHZhcmlhYmxlIG1hcCBpcyBhY2Nlc3NlZAorcHJldmlvdXMgdmFsdWVzIGZyb20gYSBmcmVlZCBjaHVuayBhcmUgdXNlZC4gVGhpcyBjb3VsZCBhbGxvd3MgYW4KK2F0dGFja2VyIHRvIGNvbnRyb2wgdGhlIHZhcmlhYmxlIG1hcC4KKworVGhpcyBwYXRjaCBoYXZlIG5vdCBtZXJnZSBpbiB1cHN0cmVhbSBub3cuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU0N10KK0NWRTogQ1ZFLTIwMTctOTgxNAorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9jYWlyby10cnVldHlwZS1zdWJzZXQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jYWlyby10cnVldHlwZS1zdWJzZXQuYyBiL3NyYy9jYWlyby10cnVldHlwZS1zdWJzZXQuYworaW5kZXggZTM0NDlhMC4uZjc3ZDExYyAxMDA2NDQKKy0tLSBhL3NyYy9jYWlyby10cnVldHlwZS1zdWJzZXQuYworKysrIGIvc3JjL2NhaXJvLXRydWV0eXBlLXN1YnNldC5jCitAQCAtMTI4NSw3ICsxMjg1LDcgQEAgX2NhaXJvX3RydWV0eXBlX3JldmVyc2VfY21hcCAoY2Fpcm9fc2NhbGVkX2ZvbnRfdCAqc2NhbGVkX2ZvbnQsCisgCXJldHVybiBDQUlST19JTlRfU1RBVFVTX1VOU1VQUE9SVEVEOworIAorICAgICBzaXplID0gYmUxNl90b19jcHUgKG1hcC0+bGVuZ3RoKTsKKy0gICAgbWFwID0gbWFsbG9jIChzaXplKTsKKysgICAgbWFwID0gX2NhaXJvX21hbGxvYyAoc2l6ZSk7CisgICAgIGlmICh1bmxpa2VseSAobWFwID09IE5VTEwpKQorIAlyZXR1cm4gX2NhaXJvX2Vycm9yIChDQUlST19TVEFUVVNfTk9fTUVNT1JZKTsKKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWFhZDJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYKQEAgLTAsMCArMSwyMiBAQAorQ2Fpcm86IEZpeCBEZW5pYWwtb2YtU2VydmljZSBBdHRhY2sgZHVlIHRvIExvZ2ljYWwgUHJvYmxlbSBpbiBQcm9ncmFtCisKK2h0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc2MworCitDVkU6IENWRS0yMDE3LTc0NzUKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CisKK0luZGV4OiBjYWlyby0xLjE1LjQvc3JjL2NhaXJvLWZ0LWZvbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNhaXJvLTEuMTUuNC5vcmlnL3NyYy9jYWlyby1mdC1mb250LmMKKysrKyBjYWlyby0xLjE1LjQvc3JjL2NhaXJvLWZ0LWZvbnQuYworQEAgLTExNDksNyArMTE0OSw3IEBAIF9nZXRfYml0bWFwX3N1cmZhY2UgKEZUX0JpdG1hcAkJICAgICAqYmkKKyAgICAgd2lkdGggPSBiaXRtYXAtPndpZHRoOworICAgICBoZWlnaHQgPSBiaXRtYXAtPnJvd3M7CisgCistICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKSB7CisrICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwIHx8IGJpdG1hcC0+YnVmZmVyID09IE5VTEwpIHsKKyAJKnN1cmZhY2UgPSAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV90ICopCisgCSAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSAoTlVMTCwgZm9ybWF0LCAwLCAwLCAwKTsKKyAJcmV0dXJuICgqc3VyZmFjZSktPmJhc2Uuc3RhdHVzOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZGRkYzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIKQEAgLTAsMCArMSw0NiBAQAorcmVxdWlyZSBjYWlyby5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTczZTk5OWUwYzcyYjVhYzkwMTI0MjRmYTE1N2FkNzciCisKK1NSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL2NhaXJvLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYgXCAKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0NmY1ZjRkMGI0NDM5ZmMzNzkyZmQzNDUyYjdiMTJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlODc4Nzg2NThmMmM5OTUxYTE0ZmM2NDExNGQ0OTU4YzBlNjVhYzQ3NTMwYjhhYzMwNzhiMmNlNDFiNjZhMDkiCisKK1BBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgorCitTVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKK0RFU0NSSVBUSU9OXyR7UE59ID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKK3ZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCitvZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKK3dpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCitvcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAorZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAorRXh0ZW5zaW9uLiIKKworU1VNTUFSWV9jYWlyby1nb2JqZWN0ID0gIlRoZSBDYWlybyBsaWJyYXJ5IEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IgorREVTQ1JJUFRJT05fY2Fpcm8tZ29iamVjdCA9ICJBIEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IGZvciB0aGUgQ2Fpcm8gQVBJLiIKKworU1VNTUFSWV9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIGxpYnJhcnkgc2NyaXB0IGludGVycHJldGVyIgorREVTQ1JJUFRJT05fY2Fpcm8tc2NyaXB0LWludGVycHJldGVyID0gIlRoZSBDYWlybyBzY3JpcHQgaW50ZXJwcmV0ZXIgaW1wbGVtZW50cyBcCitDYWlyb1NjcmlwdC4gIENhaXJvU2NyaXB0IGlzIHVzZWQgYnkgdHJhY2luZyB1dGlsaXRpZXMgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IFwKK3RvIHJlcGxheSByZW5kZXJpbmcuIgorCitERVNDUklQVElPTl9jYWlyby1wZXJmLXV0aWxzID0gIlRoZSBDYWlybyBsaWJyYXJ5IHBlcmZvcm1hbmNlIHV0aWxpdGllcyIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgorRklMRVNfJHtQTn0tZ29iamVjdCA9ICIke2xpYmRpcn0vbGliY2Fpcm8tZ29iamVjdC5zby4qIgorRklMRVNfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIiR7bGliZGlyfS9saWJjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIuc28uKiIKK0ZJTEVTXyR7UE59LXBlcmYtdXRpbHMgPSAiJHtiaW5kaXJ9L2NhaXJvLXRyYWNlICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54CisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTNjNzRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotcmVxdWlyZSBjYWlyby5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTczZTk5OWUwYzcyYjVhYzkwMTI0MjRmYTE1N2FkNzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL2NhaXJvLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlZjBkYjJlYWNiMjcxYzc0ZjhhM2ZkODc4MjJhYTk4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQxZjJkOThhZTlhNDExMTU2NGY2ZGU0ZTAxM2Q2MzljZjc3MTU1YmFmMjU1NjU4MjI5NWEwZjAwYTliYzVlMjAiCi0KLVBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgotCi1TVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKLURFU0NSSVBUSU9OXyR7UE59ID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKLXZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCi1vZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKLXdpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCi1vcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAotZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAotRXh0ZW5zaW9uLiIKLQotU1VNTUFSWV9jYWlyby1nb2JqZWN0ID0gIlRoZSBDYWlybyBsaWJyYXJ5IEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IgotREVTQ1JJUFRJT05fY2Fpcm8tZ29iamVjdCA9ICJBIEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IGZvciB0aGUgQ2Fpcm8gQVBJLiIKLQotU1VNTUFSWV9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIGxpYnJhcnkgc2NyaXB0IGludGVycHJldGVyIgotREVTQ1JJUFRJT05fY2Fpcm8tc2NyaXB0LWludGVycHJldGVyID0gIlRoZSBDYWlybyBzY3JpcHQgaW50ZXJwcmV0ZXIgaW1wbGVtZW50cyBcCi1DYWlyb1NjcmlwdC4gIENhaXJvU2NyaXB0IGlzIHVzZWQgYnkgdHJhY2luZyB1dGlsaXRpZXMgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IFwKLXRvIHJlcGxheSByZW5kZXJpbmcuIgotCi1ERVNDUklQVElPTl9jYWlyby1wZXJmLXV0aWxzID0gIlRoZSBDYWlybyBsaWJyYXJ5IHBlcmZvcm1hbmNlIHV0aWxpdGllcyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgotRklMRVNfJHtQTn0tZ29iamVjdCA9ICIke2xpYmRpcn0vbGliY2Fpcm8tZ29iamVjdC5zby4qIgotRklMRVNfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIiR7bGliZGlyfS9saWJjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIuc28uKiIKLUZJTEVTXyR7UE59LXBlcmYtdXRpbHMgPSAiJHtiaW5kaXJ9L2NhaXJvLXRyYWNlICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wXzEuMjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZhMWNmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBjbHV0dGVyLTEuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIwNjVlOWNhNTNkMWY2YmMxZWMyNmFlYjI3MzM4YmI3IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjc1MTRlNzgyNGIzZmViNDcyMzE2NDA4NGIzNmQ2Y2UxYWU0MWNiM2E5ODk3ZTlmMWE1NmM4MzM0OTkzY2UwNiIKLVNSQ19VUkkgKz0gImZpbGU6Ly9pbnN0YWxsLWV4YW1wbGVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4taW5zdGFsbGVkLXRlc3RzLXdpdGgtdGFwLW91dHB1dC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtY2x1dHRlci50eXBlcy1hcy1pdC1pcy1idWlsZC1jb25maWd1cmF0aW9uLXNwLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wXzEuMjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGIwNTAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wXzEuMjYuMi5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIGNsdXR0ZXItMS4wLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYTAzNDgyY2JhY2Y3MzVlY2E4Yzk5NmYyMTBhMjFlZTUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlNzIzMzMxNDk4MzA1NWU5MDE4Zjk0ZjU2ODgyZTI5ZTdmYzM0ZDhkMzVkZTAzMDc4OWZkY2Q5YjJkMGUyZTU2IgorU1JDX1VSSSArPSAiZmlsZTovL2luc3RhbGwtZXhhbXBsZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1pbnN0YWxsZWQtdGVzdHMtd2l0aC10YXAtb3V0cHV0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1jbHV0dGVyLnR5cGVzLWFzLWl0LWlzLWJ1aWxkLWNvbmZpZ3VyYXRpb24tc3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMKaW5kZXggNGM4Nzc5OC4uMjZhZTkxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMKQEAgLTE1LDMgKzE1LDcgQEAKIEZJTEVTXyR7UE59ICAgICAgICAgICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC9saWIqLnNvIgogRklMRVNfJHtQTn0tZGV2ICAgICAgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEiCiBGSUxFU18ke1BOfS1leGFtcGxlcyAgPSAiJHtiaW5kaXJ9L3ZpZGVvLXBsYXllciAke2JpbmRpcn0vdmlkZW8tc2luayIKKworIyBOZWVkcyB0byBiZSBkaXNhYmxlIGR1ZSB0byBhIGRlcGVuZGVuY3kgb24gZ3N0cmVhbWVyLXBsdWdpbnMgaW50cm9zcGVjdGlvbiBmaWxlcworRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzNjQgPSAiIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uICIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE3N2M5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBjbHV0dGVyLWdzdC0zLjAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NsdXR0ZXItZ3N0L2NsdXR0ZXItZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yNDttZDU9OTViYWFjYmExOTRlODE0YzExMGVhM2JkZjI1ZGRiZjQiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjg4ZWVhMmRkNWZjNDM1N2I1YjE4ZjFkZmVlZDU2YzYyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZjFmYzU3ZmIzMmVhN2UzZDkyMzRiNThkYjM1ZWI5ZWYzMDI4Y2YwYjI2NmQ4NTIzNWY5NTllZGMwZmUzZGZkNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1ZTBhZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjI0LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBjbHV0dGVyLWdzdC0zLjAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NsdXR0ZXItZ3N0L2NsdXR0ZXItZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yNDttZDU9OTViYWFjYmExOTRlODE0YzExMGVhM2JkZjI1ZGRiZjQiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjNlMTQ1ZTI0YmIzYzM0MGVlZWRkYWZkMThlZmU1NDdkIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTlmMWM4N2Q4ZjRjNDcwNjJlOTUyZmI4MDA4NzA0Zjg5NDJjZjJkNmYyOTA2ODhmM2Y3ZDEzZTgzNTc4Y2M2YyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuNzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40Ljc1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Njk2M2Q0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuNzUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIGtlcm5lbCBEUk0gc2VydmljZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgcnVudGltZSBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIGtlcm5lbCBEUk0gc2VydmljZXMuICBEUk0gXAotc3RhbmRzIGZvciBcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlclwiLCB3aGljaCBpcyB0aGUga2VybmVsIHBvcnRpb24gb2YgdGhlIFwKLVwiRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZVwiIChEUkkpLiAgRFJJIGlzIHJlcXVpcmVkIGZvciBtYW55IGhhcmR3YXJlIFwKLWFjY2VsZXJhdGVkIE9wZW5HTCBkcml2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veGY4NmRybS5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzI7bWQ1PWM4YTNiOTYxYWY3NjY3YzUzMDgxNjc2MWU5NDlkYzcxIgotUFJPVklERVMgPSAiZHJtIgotREVQRU5EUyA9ICJsaWJwdGhyZWFkLXN0dWJzIGxpYnBjaWFjY2VzcyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZy9saWJkcm0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X09fQ0xPRVhFQ191bmRlY2xhcmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1N2IwNTg5MTIyZWM0YjhkNWRmYjllNDMwYTIxZjBiMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDVhNTAwZWVmNDEyY2MyODdkMTIyNjhlZWQ3OWQ1NzFlMjYyZDQ5NTdhMmVjOTI1ODA3M2YzMDU5ODUwNTRmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbWFucGFnZXMKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtY2Fpcm8tdGVzdHMgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3VuaXQgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1vbWFwLWV4cGVyaW1lbnRhbC1hcGkgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1ldG5hdml2LWV4cGVyaW1lbnRhbC1hcGkgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLXRlc3QtcHJvZ3JhbXMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtdmFsZ3JpbmQgXAotICAgICAgICAgICAgICAgICIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotQUxMT1dfRU1QVFlfJHtQTn0tZHJpdmVycyA9ICIxIgotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzICR7UE59LWRyaXZlcnMgJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCBcCi0gICAgICAgICAgICAgJHtQTn0taW50ZWwgJHtQTn0tZXh5bm9zICR7UE59LWttcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgotCi1SUkVDT01NRU5EU18ke1BOfS1kcml2ZXJzID0gIiR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgJHtQTn0taW50ZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1leHlub3MgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tcmFkZW9uID0gIiR7bGliZGlyfS9saWJkcm1fcmFkZW9uLnNvLioiCi1GSUxFU18ke1BOfS1ub3V2ZWF1ID0gIiR7bGliZGlyfS9saWJkcm1fbm91dmVhdS5zby4qIgotRklMRVNfJHtQTn0tb21hcCA9ICIke2xpYmRpcn0vbGliZHJtX29tYXAuc28uKiIKLUZJTEVTXyR7UE59LWludGVsID0gIiR7bGliZGlyfS9saWJkcm1faW50ZWwuc28uKiIKLUZJTEVTXyR7UE59LWV4eW5vcyA9ICIke2xpYmRpcn0vbGliZHJtX2V4eW5vcy5zby4qIgotRklMRVNfJHtQTn0ta21zID0gIiR7bGliZGlyfS9saWJrbXMqLnNvLioiCi1GSUxFU18ke1BOfS1mcmVlZHJlbm8gPSAiJHtsaWJkaXJ9L2xpYmRybV9mcmVlZHJlbm8uc28uKiIKLUZJTEVTXyR7UE59LWFtZGdwdSA9ICIke2xpYmRpcn0vbGliZHJtX2FtZGdwdS5zby4qIgotRklMRVNfJHtQTn0tZXRuYXZpdiA9ICIke2xpYmRpcn0vbGliZHJtX2V0bmF2aXYuc28uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuODMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjgzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1Y2I3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjgzLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCitzdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAorXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAorYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gIngxMS9iYXNlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCitQUk9WSURFUyA9ICJkcm0iCitERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMgbGlicGNpYWNjZXNzIgorCitTUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2luc3RhbGx0ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjIzODAwOTUzZWQ3NTY0OTg4ODcyZTFlOGM2MWZkZTMxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzYTUyNjY5ZGE2MGVhZDYyNTQ4YTM1YmM0MzBhYWZiNmMyZDhkZDIxZWM5ZGJhM2E5MGY5NmVmZjVmZTM2ZDYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBtYW5wYWdlcworCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jYWlyby10ZXN0cyBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdW5pdCBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9tYXAtZXhwZXJpbWVudGFsLWFwaSBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWV0bmF2aXYtZXhwZXJpbWVudGFsLWFwaSBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdC1wcm9ncmFtcyBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12YWxncmluZCBcCisgICAgICAgICAgICAgICAgIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitBTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKKyAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCisKK1JSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKK0ZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCitGSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgorRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgorRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCitGSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKK0ZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgorRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLioiCitGSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1Bdm9pZC1jb25mbGljdHMtd2l0aC1pbnRlZ2VyLXdpZHRoLW1hY3Jvcy1mcm9tLVRTLTE4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1Bdm9pZC1jb25mbGljdHMtd2l0aC1pbnRlZ2VyLXdpZHRoLW1hY3Jvcy1mcm9tLVRTLTE4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWQ3MTcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnLzAwMDEtQXZvaWQtY29uZmxpY3RzLXdpdGgtaW50ZWdlci13aWR0aC1tYWNyb3MtZnJvbS1UUy0xOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gMjBjZGRjODI0YzY1MDFjMjA4MmNhYzQxYjE2MmMzNGNkNWZjYzUzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDExIERlYyAyMDE2IDE0OjMyOjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGNvbmZsaWN0cyB3aXRoIGludGVnZXIgd2lkdGggbWFjcm9zIGZyb20gVFMKLSAxODY2MS0xOjIwMTQKLQotZ2xpYmMgMi4yNSsgaGFzIG5vdyBkZWZpbmVkIHRoZXNlIG1hY3JvcyBpbiA8bGltaXRzLmg+Ci1odHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD01YjE3ZmQwZGE2MmJmOTIzY2I2MWQxYmI3YjA4Y2YyZTFmMWY5YzFhCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBmb250Y29uZmlnL2ZvbnRjb25maWcuaCB8IDIgKy0KLSBzcmMvZmNvYmpzLmggICAgICAgICAgICB8IDIgKy0KLSBzcmMvZmNvYmpzaGFzaC5ncGVyZiAgICB8IDIgKy0KLSBzcmMvZmNvYmpzaGFzaC5oICAgICAgICB8IDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGZvbnRjb25maWctMi4xMi4xL2ZvbnRjb25maWcvZm9udGNvbmZpZy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZm9udGNvbmZpZy0yLjEyLjEub3JpZy9mb250Y29uZmlnL2ZvbnRjb25maWcuaAotKysrIGZvbnRjb25maWctMi4xMi4xL2ZvbnRjb25maWcvZm9udGNvbmZpZy5oCi1AQCAtMTI4LDcgKzEyOCw4IEBAIHR5cGVkZWYgaW50CQlGY0Jvb2w7Ci0gI2RlZmluZSBGQ19VU0VSX0NBQ0hFX0ZJTEUJICAgICIuZm9udHMuY2FjaGUtIiBGQ19DQUNIRV9WRVJTSU9OCi0gCi0gLyogQWRqdXN0IG91dGxpbmUgcmFzdGVyaXplciAqLwotLSNkZWZpbmUgRkNfQ0hBUl9XSURUSAkgICAgImNoYXJ3aWR0aCIJLyogSW50ICovCi0rI2RlZmluZSBGQ19DSEFSV0lEVEgJICAgICJjaGFyd2lkdGgiCS8qIEludCAqLwotKyNkZWZpbmUgRkNfQ0hBUl9XSURUSAkgICAgRkNfQ0hBUldJRFRICi0gI2RlZmluZSBGQ19DSEFSX0hFSUdIVAkgICAgImNoYXJoZWlnaHQiLyogSW50ICovCi0gI2RlZmluZSBGQ19NQVRSSVgJICAgICJtYXRyaXgiICAgIC8qIEZjTWF0cml4ICovCi0gCi1JbmRleDogZm9udGNvbmZpZy0yLjEyLjEvc3JjL2Zjb2Jqcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZm9udGNvbmZpZy0yLjEyLjEub3JpZy9zcmMvZmNvYmpzLmgKLSsrKyBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzLmgKLUBAIC01MSw3ICs1MSw3IEBAIEZDX09CSkVDVCAoRFBJLAkJCUZjVHlwZURvdWJsZSwJTlVMTCkKLSBGQ19PQkpFQ1QgKFJHQkEsCQlGY1R5cGVJbnRlZ2VyLAlOVUxMKQotIEZDX09CSkVDVCAoU0NBTEUsCQlGY1R5cGVEb3VibGUsCU5VTEwpCi0gRkNfT0JKRUNUIChNSU5TUEFDRSwJCUZjVHlwZUJvb2wsCU5VTEwpCi0tRkNfT0JKRUNUIChDSEFSX1dJRFRILAkJRmNUeXBlSW50ZWdlciwJTlVMTCkKLStGQ19PQkpFQ1QgKENIQVJXSURUSCwJCUZjVHlwZUludGVnZXIsCU5VTEwpCi0gRkNfT0JKRUNUIChDSEFSX0hFSUdIVCwJCUZjVHlwZUludGVnZXIsCU5VTEwpCi0gRkNfT0JKRUNUIChNQVRSSVgsCQlGY1R5cGVNYXRyaXgsCU5VTEwpCi0gRkNfT0JKRUNUIChDSEFSU0VULAkJRmNUeXBlQ2hhclNldCwJRmNDb21wYXJlQ2hhclNldCkKLUluZGV4OiBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzaGFzaC5ncGVyZgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZvbnRjb25maWctMi4xMi4xLm9yaWcvc3JjL2Zjb2Jqc2hhc2guZ3BlcmYKLSsrKyBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzaGFzaC5ncGVyZgotQEAgLTQ0LDcgKzQ0LDcgQEAgaW50IGlkOwotICJyZ2JhIixGQ19SR0JBX09CSkVDVAotICJzY2FsZSIsRkNfU0NBTEVfT0JKRUNUCi0gIm1pbnNwYWNlIixGQ19NSU5TUEFDRV9PQkpFQ1QKLS0iY2hhcndpZHRoIixGQ19DSEFSX1dJRFRIX09CSkVDVAotKyJjaGFyd2lkdGgiLEZDX0NIQVJXSURUSF9PQkpFQ1QKLSAiY2hhcmhlaWdodCIsRkNfQ0hBUl9IRUlHSFRfT0JKRUNUCi0gIm1hdHJpeCIsRkNfTUFUUklYX09CSkVDVAotICJjaGFyc2V0IixGQ19DSEFSU0VUX09CSkVDVAotSW5kZXg6IGZvbnRjb25maWctMi4xMi4xL3NyYy9mY29ianNoYXNoLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmb250Y29uZmlnLTIuMTIuMS5vcmlnL3NyYy9mY29ianNoYXNoLmgKLSsrKyBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzaGFzaC5oCi1AQCAtMjg0LDcgKzI4NCw3IEBAIEZjT2JqZWN0VHlwZUxvb2t1cCAocmVnaXN0ZXIgY29uc3QgY2hhcgotICAgICAgIHsoaW50KShsb25nKSYoKHN0cnVjdCBGY09iamVjdFR5cGVOYW1lUG9vbF90ICopMCktPkZjT2JqZWN0VHlwZU5hbWVQb29sX3N0cjQzLEZDX0NIQVJTRVRfT0JKRUNUfSwKLSAgICAgICB7LTF9LAotICNsaW5lIDQ3ICJmY29ianNoYXNoLmdwZXJmIgotLSAgICAgIHsoaW50KShsb25nKSYoKHN0cnVjdCBGY09iamVjdFR5cGVOYW1lUG9vbF90ICopMCktPkZjT2JqZWN0VHlwZU5hbWVQb29sX3N0cjQ1LEZDX0NIQVJfV0lEVEhfT0JKRUNUfSwKLSsgICAgICB7KGludCkobG9uZykmKChzdHJ1Y3QgRmNPYmplY3RUeXBlTmFtZVBvb2xfdCAqKTApLT5GY09iamVjdFR5cGVOYW1lUG9vbF9zdHI0NSxGQ19DSEFSV0lEVEhfT0JKRUNUfSwKLSAjbGluZSA0OCAiZmNvYmpzaGFzaC5ncGVyZiIKLSAgICAgICB7KGludCkobG9uZykmKChzdHJ1Y3QgRmNPYmplY3RUeXBlTmFtZVBvb2xfdCAqKTApLT5GY09iamVjdFR5cGVOYW1lUG9vbF9zdHI0NixGQ19DSEFSX0hFSUdIVF9PQkpFQ1R9LAotICNsaW5lIDU1ICJmY29ianNoYXNoLmdwZXJmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWIwNjZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJpYyBmb250IGNvbmZpZ3VyYXRpb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkZvbnRjb25maWcgaXMgYSBmb250IGNvbmZpZ3VyYXRpb24gYW5kIGN1c3RvbWl6YXRpb24gbGlicmFyeSwgd2hpY2ggXAotZG9lcyBub3QgZGVwZW5kIG9uIHRoZSBYIFdpbmRvdyBTeXN0ZW0uIEl0IGlzIGRlc2lnbmVkIHRvIGxvY2F0ZSBcCi1mb250cyB3aXRoaW4gdGhlIHN5c3RlbSBhbmQgc2VsZWN0IHRoZW0gYWNjb3JkaW5nIHRvIHJlcXVpcmVtZW50cyBcCi1zcGVjaWZpZWQgYnkgYXBwbGljYXRpb25zLiBcCi1Gb250Y29uZmlnIGlzIG5vdCBhIHJhc3Rlcml6YXRpb24gbGlicmFyeSwgbm9yIGRvZXMgaXQgaW1wb3NlIGEgXAotcGFydGljdWxhciByYXN0ZXJpemF0aW9uIGxpYnJhcnkgb24gdGhlIGFwcGxpY2F0aW9uLiBUaGUgWC1zcGVjaWZpYyBcCi1saWJyYXJ5ICdYZnQnIHVzZXMgZm9udGNvbmZpZyBhbG9uZyB3aXRoIGZyZWV0eXBlIHRvIHNwZWNpZnkgYW5kIFwKLXJhc3Rlcml6ZSBmb250cy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZm9udGNvbmZpZy5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWZvbnRjb25maWciCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlICYgTUlUICYgUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03YTA0NDllOWJjNTM3MDQwMmE5NGMwMDIwNGJlY2EzZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNmcmVldHlwZS5jO2VuZGxpbmU9NDU7bWQ1PTVkOTUxM2UzMTk2YTFmYmZkZmE5NDA1MWMwOWRmYzg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2NhY2hlLmM7YmVnaW5saW5lPTEzNjA7ZW5kbGluZT0xMzc1O21kNT0wMzI2Y2ZlYjRhNzMzM2RkNGRkMjVmYmJjNGI5ZjI3ZiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImV4cGF0IGZyZWV0eXBlIHpsaWIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZvbnRjb25maWcub3JnL3JlbGVhc2UvZm9udGNvbmZpZy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0LXN0YXRpYy1wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Bdm9pZC1jb25mbGljdHMtd2l0aC1pbnRlZ2VyLXdpZHRoLW1hY3Jvcy1mcm9tLVRTLTE4LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNlNTVlNTI1YzM3MTQ3ZWVlMTRjYzJkZTZjYzA5ZjZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5ZjQyZDAzOTQ5Zjk0OGEzYTRmNzYyMjg3ZGJjMTZlNTNhOTI3YzkxYTA3ZWU2NDIwN2ViZDkwYTllNWUyOTIiCi0KLVBBQ0tBR0VTID0rICJmb250Y29uZmlnLXV0aWxzIgotRklMRVNfJHtQTn0gPSsgIiR7ZGF0YWRpcn0veG1sLyoiCi1GSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qIgotCi0jIFdvcmsgYXJvdW5kIHBhc3QgYnJlYWthZ2UgaW4gZGViaWFuLmJiY2xhc3MKLVJQUk9WSURFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1SUkVQTEFDRVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgotUkNPTkZMSUNUU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1ERUJJQU5fTk9BVVRPTkFNRV9mb250Y29uZmlnLXV0aWxzID0gIjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyByZWxhdGl2ZV9zeW1saW5rcwotCi1GT05UQ09ORklHX0NBQ0hFX0RJUiA/PSAiJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9mb250Y29uZmlnIgotCi0jIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMKLSMgL3Vzci9zaGFyZS9mb250cyBpcyBhbHJlYWR5IGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHlvdSBjYW4gY2hhbmdlIGl0IHdpdGggLS13aXRoLWRlZmF1bHQtZm9udHMpCi1GT05UQ09ORklHX0ZPTlRfRElSUyA/PSAibm8iCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3MgLS13aXRoLWRlZmF1bHQtZm9udHM9JHtkYXRhZGlyfS9mb250cyAtLXdpdGgtY2FjaGUtZGlyPSR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IC0td2l0aC1hZGQtZm9udHM9JHtGT05UQ09ORklHX0ZPTlRfRElSU30iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNThiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjQuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJHZW5lcmljIGZvbnQgY29uZmlndXJhdGlvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRm9udGNvbmZpZyBpcyBhIGZvbnQgY29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphdGlvbiBsaWJyYXJ5LCB3aGljaCBcCitkb2VzIG5vdCBkZXBlbmQgb24gdGhlIFggV2luZG93IFN5c3RlbS4gSXQgaXMgZGVzaWduZWQgdG8gbG9jYXRlIFwKK2ZvbnRzIHdpdGhpbiB0aGUgc3lzdGVtIGFuZCBzZWxlY3QgdGhlbSBhY2NvcmRpbmcgdG8gcmVxdWlyZW1lbnRzIFwKK3NwZWNpZmllZCBieSBhcHBsaWNhdGlvbnMuIFwKK0ZvbnRjb25maWcgaXMgbm90IGEgcmFzdGVyaXphdGlvbiBsaWJyYXJ5LCBub3IgZG9lcyBpdCBpbXBvc2UgYSBcCitwYXJ0aWN1bGFyIHJhc3Rlcml6YXRpb24gbGlicmFyeSBvbiB0aGUgYXBwbGljYXRpb24uIFRoZSBYLXNwZWNpZmljIFwKK2xpYnJhcnkgJ1hmdCcgdXNlcyBmb250Y29uZmlnIGFsb25nIHdpdGggZnJlZXR5cGUgdG8gc3BlY2lmeSBhbmQgXAorcmFzdGVyaXplIGZvbnRzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mb250Y29uZmlnLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9Zm9udGNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQtc3R5bGUgJiBNSVQgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhMDQ0OWU5YmM1MzcwNDAyYTk0YzAwMjA0YmVjYTNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2ZyZWV0eXBlLmM7ZW5kbGluZT00NTttZDU9NWQ5NTEzZTMxOTZhMWZiZmRmYTk0MDUxYzA5ZGZjODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjY2FjaGUuYztiZWdpbmxpbmU9MTM2NztlbmRsaW5lPTEzODI7bWQ1PTAzMjZjZmViNGE3MzMzZGQ0ZGQyNWZiYmM0YjlmMjdmIgorCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZXhwYXQgZnJlZXR5cGUgemxpYiBncGVyZi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZvbnRjb25maWcub3JnL3JlbGVhc2UvZm9udGNvbmZpZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0LXN0YXRpYy1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNGZiMDFmYzNmNDE3NjBjNDFjNjllMzdjYzc4NGI2NTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQ1YTZhNjYzZjRjNGEwMGUxOTY1MjM5MDI2MjY2NTRkZDBjNGE3ODY4NmNiYzZlNDcyZjMzOGU1MGZkZjgwNiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyB3b3JrIGFyb3VuZCBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyODAKKyAgICBybSAtZiAke1N9L3NyYy9mY29ianNoYXNoLmggJHtTfS9zcmMvZmNvYmpzaGFzaC5ncGVyZgorfQorCitQQUNLQUdFUyA9KyAiZm9udGNvbmZpZy11dGlscyIKK0ZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L3htbC8qIgorRklMRVNfZm9udGNvbmZpZy11dGlscyA9ICIke2JpbmRpcn0vKiIKKworIyBXb3JrIGFyb3VuZCBwYXN0IGJyZWFrYWdlIGluIGRlYmlhbi5iYmNsYXNzCitSUFJPVklERVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorUlJFUExBQ0VTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKK1JDT05GTElDVFNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorREVCSUFOX05PQVVUT05BTUVfZm9udGNvbmZpZy11dGlscyA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcmVsYXRpdmVfc3ltbGlua3MKKworRk9OVENPTkZJR19DQUNIRV9ESVIgPz0gIiR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvZm9udGNvbmZpZyIKKworIyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzCisjIC91c3Ivc2hhcmUvZm9udHMgaXMgYWxyZWFkeSBpbmNsdWRlZCBieSBkZWZhdWx0ICh5b3UgY2FuIGNoYW5nZSBpdCB3aXRoIC0td2l0aC1kZWZhdWx0LWZvbnRzKQorRk9OVENPTkZJR19GT05UX0RJUlMgPz0gIm5vIgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2NzIC0td2l0aC1kZWZhdWx0LWZvbnRzPSR7ZGF0YWRpcn0vZm9udHMgLS13aXRoLWNhY2hlLWRpcj0ke0ZPTlRDT05GSUdfQ0FDSEVfRElSfSAtLXdpdGgtYWRkLWZvbnRzPSR7Rk9OVENPTkZJR19GT05UX0RJUlN9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDRmODM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAotaGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKLWltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAotaW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9MTNiMjU0MTMyNzRjOWIzYjA5YjYzZTQwMjgyMTZmZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjMyMzAxMTBlMGNhYjc3N2UwZGY3NjMxODM3YWMzNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2EzYmIyYzRlMTVmZmI0MzNmMjAzMmY1MGE1YjVhOTI1NTgyMDY4MjJlMjJiZmU4Y2JlMzM5YWY0YWE4MmY4OCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKLQotIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKLUNPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgotCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgotIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAotUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKLVBBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKLQotVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCi19Ci0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlODhlODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAoraGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKK2ltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAoraW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9MTNiMjU0MTMyNzRjOWIzYjA5YjYzZTQwMjgyMTZmZjQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjQxM2FjM2VhZjUwOGFkYTAxOWM2Mzk1OWVhODFhOTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTNjNjAzZWQ4NGMzYzI0OTVmOWM5MzMxZmU2YmJhM2JiMGVlNjVlMDZlYzMzMWUwYTBmYjUyMTU4MjkxYjQwYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKKworIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKK0NPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAorUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKK1BBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorCitFWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKKworVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCit9CisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIKaW5kZXggOTVjMzNmNC4uOWUwOWNkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYgpAQCAtOCw2ICs4LDcgQEAKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdGVzdC1wYW5nby1nZGsuYztlbmRsaW5lPTI0O21kNT0xZWU3NGVjODUxZWNkYTU3ZWI3YWM2Y2MxODBmNzY1NSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgppbmRleCAxYzkzY2EwLi5mMmFiNzU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgpAQCAtMjQsNiArMjQsNyBAQAogUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIlNZU1RFTT0nbGludXgnLCx2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4ZXh0IGxpYnhpIGxpYnhtdSIKIFBBQ0tBR0VDT05GSUdbZWdsLWdsZXMyXSA9ICJTWVNURU09J2xpbnV4LWVnbCcgR0xFV19OT19HTFU9Jy1ER0xFV19OT19HTFUnIExERkxBR1MuR0w9Jy1sRUdMIC1sR0xFU3YyJywsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiIKIAorQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgogIyBPdmVycmlkZSBTWVNURU0gKHZpYSBQQUNLQUdFQ09ORklHX0NPTkZBUkdTKSB0byBhdm9pZCBjYWxsaW5nIGNvbmZpZy5ndWVzcywKICMgd2UncmUgY3Jvc3MtY29tcGlsaW5nLiBQYXNzIG91ciBDRkxBR1MgdmlhIFBPUFQgYXMgdGhhdCdzIHRoZSBvcHRpbWlzYXRpb24KICMgdmFyaWFibGUgYW5kIHNhZmVseSBvdmVyd3JpdHRlbi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzQ3NzNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgc2hhcGluZyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiSGFyZkJ1enogaXMgYW4gT3BlblR5cGUgdGV4dCBzaGFwaW5nIGVuZ2luZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL0hhcmZCdXp6IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1IYXJmQnV6eiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTAyMWRkNmRkYTZmZjFlNmIxMDQ0MDAyZmM2NjJiOWIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZG4vQ09QWUlORzttZDU9OTk0YmEwZjEyOTVmMTViNGJkYTQ5OTlhNWJiZWRkZWYgXAotIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGNhaXJvIGZvbnRjb25maWcgZnJlZXR5cGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvaGFyZmJ1enovcmVsZWFzZS8ke0JQfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2IzZjQ0NWQwYTU4NDg1YTMxYzE4YzAzY2U5YjRlM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODVhMjdmYWI2MzlhMWQ2NTE3MzdkY2I2YjY5ZTQxMDFlM2ZkMDk1MjJmZGZkY2I3OTNkZjgxMGI1Y2IzMTViZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKLVBBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXdpdGgtY2Fpcm8gXAotICAgIC0td2l0aC1mb250Y29uZmlnIFwKLSAgICAtLXdpdGgtZnJlZXR5cGUgXAotICAgIC0td2l0aC1nbGliIFwKLSAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgotCi1GSUxFU18ke1BOfS1pY3UgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zby4qIgotRklMRVNfJHtQTn0taWN1LWRldiA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvaGFyZmJ1enotaWN1LnBjIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjVlNWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuOC5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIlRleHQgc2hhcGluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSGFyZkJ1enogaXMgYW4gT3BlblR5cGUgdGV4dCBzaGFwaW5nIGVuZ2luZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL0hhcmZCdXp6IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1IYXJmQnV6eiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTAyMWRkNmRkYTZmZjFlNmIxMDQ0MDAyZmM2NjJiOWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZG4vQ09QWUlORzttZDU9OTk0YmEwZjEyOTVmMTViNGJkYTQ5OTlhNWJiZWRkZWYgXAorIgorCitERVBFTkRTID0gImdsaWItMi4wIGNhaXJvIGZvbnRjb25maWcgZnJlZXR5cGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvaGFyZmJ1enovcmVsZWFzZS8ke0JQfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDFhYTQ0NmUxZTY1NzE3MzExYzE1ZDlhYzBjZjMxZWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NlYzQ5MzBmZjBiYjJkMGM0MGFlZTIwMzA3NTQ0Nzk1NGI2NGE4YzI2OTUyMDI0MTNjYzVlNDI4YzkwNzEzMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGgtY2Fpcm8gXAorICAgIC0td2l0aC1mb250Y29uZmlnIFwKKyAgICAtLXdpdGgtZnJlZXR5cGUgXAorICAgIC0td2l0aC1nbGliIFwKKyAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgorCitGSUxFU18ke1BOfS1pY3UgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zby4qIgorRklMRVNfJHtQTn0taWN1LWRldiA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvaGFyZmJ1enotaWN1LnBjIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJiby9maXgtbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvL2ZpeC1taXBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDQxMjM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvL2ZpeC1taXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRml4IGEgcmVncmVzc2lvbiB0aGF0IGNhdXNlcyB0aGUgTUlQUyBjb2RlIGZyb20gYnVpbGRpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gN2JmYjIyYWYxMjNhYzEwNzk4YTlhNGM5ZWM3YjIzZTUwNjVkYjM1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERSQyA8aW5mb3JtYXRpb25AbGlianBlZy10dXJiby5vcmc+Ci1EYXRlOiBNb24sIDI2IFNlcCAyMDE2IDE3OjU5OjE0IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBicm9rZW4gTUlQUyBidWlsZAotCi1SZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgOTA1NWZiNDA4ZGNiNTg1Y2U5MzkyZDM5NWUxNjYzMGQ1MTAwMjE1MgotCi1GaXhlcyAjMTA0Ci0tLS0KLSBDaGFuZ2VMb2cubWQgICAgICB8IDMgKysrCi0gc2ltZC9qc2ltZF9taXBzLmMgfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZy5tZCBiL0NoYW5nZUxvZy5tZAotaW5kZXggZTJiOWRmMy4uNzFkZGNhYSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZy5tZAotKysrIGIvQ2hhbmdlTG9nLm1kCi1AQCAtNiw2ICs2LDkgQEAKLSAxLiBGaXhlZCBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSAxLjUuMVs3XSB0aGF0IHByZXZlbnRlZCBsaWJqcGVnLXR1cmJvIGZyb20KLSBidWlsZGluZyB3aXRoIEFuZHJvaWQgTkRLIHBsYXRmb3JtcyBwcmlvciB0byBhbmRyb2lkLTIxICg1LjApLgotIAotKzIuIEZpeGVkIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IDEuNS4xWzFdIHRoYXQgcHJldmVudGVkIHRoZSBNSVBTIERTUFIyIFNJTUQKLStjb2RlIGluIGxpYmpwZWctdHVyYm8gZnJvbSBidWlsZGluZy4KLSsKLSAKLSAxLjUuMQotID09PT09Ci1kaWZmIC0tZ2l0IGEvc2ltZC9qc2ltZF9taXBzLmMgYi9zaW1kL2pzaW1kX21pcHMuYwotaW5kZXggNjNiODExNS4uMDJlOTBjZCAxMDA2NDQKLS0tLSBhL3NpbWQvanNpbWRfbWlwcy5jCi0rKysgYi9zaW1kL2pzaW1kX21pcHMuYwotQEAgLTYzLDYgKzYzLDggQEAgcGFyc2VfcHJvY19jcHVpbmZvKGNvbnN0IGNoYXIqIHNlYXJjaF9zdHJpbmcpCi0gTE9DQUwodm9pZCkKLSBpbml0X3NpbWQgKHZvaWQpCi0gewotKyAgY2hhciAqZW52ID0gTlVMTDsKLSsKLSAgIGlmIChzaW1kX3N1cHBvcnQgIT0gfjBVKQotICAgICByZXR1cm47Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTJlZWFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9MDViYWI3YzdhZDg5OWQ4NWJmYmE2MGRhMWExMjcxZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YjkwYjZkMmI0MTE5ZjllNTgwN2NkMjczZjUyNWQyYWYgXAotIgotREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LW1pcHMucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiNTVkZWIxMzliMGNhYzNjODIwMGI3NWQ0ODVmYzEzZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDE0MjlkM2QyNTMwMTc0MzNmNjZlM2Q0NzJiOGM3ZDk5ODQ5MWQyZjQxY2FhNzMwNmI4ZDlhNmYyYTJjNjY2YyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUEU9ICIxIgotCi0jIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKLVBST1ZJREVTID0gImpwZWciCi1SUFJPVklERVNfJHtQTn0gKz0gImpwZWciCi1SUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBBZGQgbmFzbS1uYXRpdmUgZGVwZW5kZW5jeSBjb25zaXN0ZW50bHkgZm9yIGFsbCBidWlsZCBhcmNoZXMgaXMgaGFyZAotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1zaW1kIgotCi0jIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0Ci1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNSVBTUEtHU0ZYX0ZQVSIsICItbmYiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgotCi0jIFByb3ZpZGUgYSB3b3JrYXJvdW5kIGlmIEFsdGl2ZWMgdW5pdCBpcyBub3QgcHJlc2VudCBpbiBQUEMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYzY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItLXdpdGhvdXQtc2ltZCIsIGQpfSIKLQotUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgotCi1ERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCi1GSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgotCi1ERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKLUZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODY0NmQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjIuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9MDViYWI3YzdhZDg5OWQ4NWJmYmE2MGRhMWExMjcxZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YjkwYjZkMmI0MTE5ZjllNTgwN2NkMjczZjUyNWQyYWYgXAorIgorREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjQ5MjNlMjk3YTdlYWEyNTVmMDg1MTEwMTdhODgxOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDk4OTQzYjI3MDM4ODcyN2FlNjFkZTgyYWRlYzczY2Y5ZjBkYmIyNDBiM2JjOGIxNzI1OTVlYmY0MDViNTI4IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LXNpbWQiCisKKyMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCisKKyMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgorCitQQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCisKK0RFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKK0ZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0RFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgorRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiNjhmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgpAQCAtMCwwICsxLDE3IEBACitERVNDUklQVElPTiA9ICJEZW1vIGFwcGxpY2F0aW9uIHRvIHNob3djYXNlIDNEIGdyYXBoaWNzIHVzaW5nIGttcyBhbmQgZ2JtIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL2ttc2N1YmUvIgorTElDRU5TRSA9ICJNSVQiCitTRUNUSU9OID0gImdyYXBoaWNzIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIGxpYmRybSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8va21zY3ViZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PThiMzA5ZDRlZTY3YjczMTVmZjczODEyNzBkZDYzMWZiIgorCitTUkNSRVYgPSAiMGQ4ZGU0Y2UzYTAzZjM2YWYxODE3ZjliMDU4NmQxMzJhZDJjNWQyZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9rbXNjdWJlO2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9Z2l0IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvQWRkLWZhbGxiYWNrLWRlZmluaXRpb24tZm9yLUVHTC1DQVNULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyOTcyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvQWRkLWZhbGxiYWNrLWRlZmluaXRpb24tZm9yLUVHTC1DQVNULnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0FkZCBmYWxsYmFjayBkZWZpbml0aW9uIGZvciBFR0xfQ0FTVAorCitUaGUgRUdMIEFQSSB1cGRhdGUgZnJvbSBkMTExMDRmIGludHJvZHVjZWQgYSBkZXBlbmRlbmN5IG9uIHRoZQorRUdMX0NBU1QoKSBtYWNybywgcHJvdmlkZWQgYnkgYW4gdXBkYXRlZCBlZ2xwbGF0Zm9ybS5oLiBHaXZlbiB0aGF0IHdlCitkb24ndCBwcm92aWRlIGVnbHBsYXRmb3JtLmgsIGFkZCBhIGZhbGxiYWNrIGRlZmluaXRpb24gZm9yIGlmIHdlJ3JlCitidWlsZGluZyBhZ2FpbnN0IE1lc2EgMTcuMC54IG9yIHNpbWlsYXIuCisKK2h0dHBzOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM5MjYKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9jb21taXQvZWJlM2E1M2RiMWMwYmIzNGUxY2E5NjNiOTVkMWYyMjIxMTVmOTNmOF0KKworU2lnbmVkLW9mZi1ieTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgorCitJbmRleDogbGliZXBveHktMS40LjMvc3JjL2dlbl9kaXNwYXRjaC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmVwb3h5LTEuNC4zLm9yaWcvc3JjL2dlbl9kaXNwYXRjaC5weQkyMDE3LTA2LTA2IDA0OjI0OjEzLjAwMDAwMDAwMCAtMDUwMAorKysrIGxpYmVwb3h5LTEuNC4zL3NyYy9nZW5fZGlzcGF0Y2gucHkJMjAxNy0xMS0wNiAxMjo0NTo0My41OTQ5NjY0NzMgLTA2MDAKK0BAIC00OTEsNiArNDkxLDE1IEBACisgICAgICAgICAgICAgc2VsZi5vdXRsbignI2luY2x1ZGUgImVwb3h5L2dsLmgiJykKKyAgICAgICAgICAgICBpZiBzZWxmLnRhcmdldCA9PSAiZWdsIjoKKyAgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2luY2x1ZGUgIkVHTC9lZ2xwbGF0Zm9ybS5oIicpCisrICAgICAgICAgICAgICAgICMgQWNjb3VudCBmb3Igb2xkZXIgZWdscGxhdGZvcm0uaCwgd2hpY2ggZG9lc24ndCBkZWZpbmUKKysgICAgICAgICAgICAgICAgIyB0aGUgRUdMX0NBU1QgbWFjcm8uCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpZm5kZWYgRUdMX0NBU1QnKQorKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjaWYgZGVmaW5lZChfX2NwbHVzcGx1cyknKQorKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZGVmaW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpKScpCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbHNlJykKKysgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKCh0eXBlKSAodmFsdWUpKScpCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbmRpZicpCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbmRpZicpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICMgQWRkIHNvbWUgcmlkaWN1bG91cyBpbnR0eXBlcy5oIHJlZGVmaW5pdGlvbnMgdGhhdCBhcmUKKyAgICAgICAgICAgICAjIGZyb20ga2hycGxhdGZvcm0uaCBhbmQgbm90IGluY2x1ZGVkIGluIHRoZSBYTUwuICBXZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlOWY2OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdjEuNC8ke0JQfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDhkOGNiZjJiZWI2NDk3NWQ0MjRmY2M1MTY3YTJhMzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjVhOTA2YjE0YTkyMWJjMmI0ODhjZmVhYTIxYTAwNDg2ZmU5MjYzMGU0YTlkZDM0NmU0ZWNhYmVhZTUyYWI0MSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MgdmlydHVhbC9lZ2wiCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgsIC0tZGlzYWJsZS1nbHgsIHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNzIzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4zLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL0FkZC1mYWxsYmFjay1kZWZpbml0aW9uLWZvci1FR0wtQ0FTVC5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZjRjM2NlMGZiMTE0M2JkYzRlNDNmODU2OTVhOWJlZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjgwOGEwNmM5Njg1YTYyZmNhMzRiNjgwYWJiOGJjN2ZiMmZkYTA3NDQ3OGUzMjliMDYzYzFmODcyYjgyNmY2IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcmVsZWFzZXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyIKKworUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwgLS1kaXNhYmxlLWVnbCwgdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUtZ2x4LCAtLWRpc2FibGUtZ2x4LCB2aXJ0dWFsL2xpYngxMSIKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gZWdsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJmYWtla2V5L2xpYmZha2VrZXlfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJmYWtla2V5L2xpYmZha2VrZXlfZ2l0LmJiCmluZGV4IGM2MGRkZWEuLjRiODAzZGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZmFrZWtleS9saWJmYWtla2V5X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmZha2VrZXkvbGliZmFrZWtleV9naXQuYmIKQEAgLTEwLDggKzEwLDggQEAKIERFUEVORFMgPSAibGlieHRzdCIKIFNFQ1RJT04gPSAieDExL3dtIgogCi1TUkNSRVYgPSAiZTMyN2ZmMDQ5Yjg1MDNhZjJkYWRmZmE4NDM3MGEwODYwYjlmYjY4MiIKLVBWID0gIjAuMCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI3YWQ4ODU5MTJlZmIyMTMxZTgwOTE0ZTk2NGQ1ZTYzNWIwZDA3YjQwIgorUFYgPSAiMC4zK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLTEuMi4xNS8wMDAxLWJ1aWxkLVBhc3MtdGFnLUNDLWV4cGxpY3RseS13aGVuLXVzaW5nLWxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtMS4yLjE1LzAwMDEtYnVpbGQtUGFzcy10YWctQ0MtZXhwbGljdGx5LXdoZW4tdXNpbmctbGlidG9vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzhjMGZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLTEuMi4xNS8wMDAxLWJ1aWxkLVBhc3MtdGFnLUNDLWV4cGxpY3RseS13aGVuLXVzaW5nLWxpYnRvb2wucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSA0NGU0YmI0Y2ZiODEwMjRjOGY1ZmQyZTE3OWU4YTMyYzQyNzU2YTJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjMgSnVsIDIwMTcgMTY6NTI6NDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFBhc3MgLS10YWc9Q0MgZXhwbGljdGx5IHdoZW4gdXNpbmcgbGlidG9vbAorCitEbyBub3QgZGVwZW5kIHNvbGVseSBvbiBsaWJ0b29sIGhldXJpc3RpY3Mgd2hpY2ggZmFpbAoraW4gT0UgY2FzZSB3aGVuIGJ1aWxkaW5nIHdpdGggZXh0ZXJuYWwgY29tcGlsZXIgYW5kCitoYXJkZW5pbmcgZmxhZ3MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgICAgICAgICAgICAgfCA0ICsrLS0KKyBidWlsZC1zY3JpcHRzL21ha2VkZXAuc2ggfCA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBhYjUxMDM1Li43NDNjZTMwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtNzIsMTAgKzcyLDEwIEBAIGRlcGVuZDoKKyBpbmNsdWRlICQoZGVwZW5kKQorIAorICQob2JqZWN0cykvJChUQVJHRVQpOiAkKE9CSkVDVFMpCistCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgLW8gJEAgJF4gJChMREZMQUdTKSAkKEVYVFJBX0xERkxBR1MpICQoTFRfTERGTEFHUykKKysJJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9bGluayAkKENDKSAtbyAkQCAkXiAkKExERkxBR1MpICQoRVhUUkFfTERGTEFHUykgJChMVF9MREZMQUdTKQorIAorICQob2JqZWN0cykvJChTRExNQUlOX1RBUkdFVCk6ICQoU0RMTUFJTl9PQkpFQ1RTKQorLQkkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpIC1vICRAICReICQoTERGTEFHUykgJChFWFRSQV9MREZMQUdTKSAkKExUX0xERkxBR1MpICQoU0RMTUFJTl9MREZMQUdTKQorKwkkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpIC1vICRAICReICQoTERGTEFHUykgJChFWFRSQV9MREZMQUdTKSAkKExUX0xERkxBR1MpICQoU0RMTUFJTl9MREZMQUdTKQorIAorIAorIGluc3RhbGw6IGFsbCBpbnN0YWxsLWJpbiBpbnN0YWxsLWhkcnMgaW5zdGFsbC1saWIgaW5zdGFsbC1kYXRhIGluc3RhbGwtbWFuCitkaWZmIC0tZ2l0IGEvYnVpbGQtc2NyaXB0cy9tYWtlZGVwLnNoIGIvYnVpbGQtc2NyaXB0cy9tYWtlZGVwLnNoCitpbmRleCAzYjM4NjNiLi5kYmEyOGYyIDEwMDc1NQorLS0tIGEvYnVpbGQtc2NyaXB0cy9tYWtlZGVwLnNoCisrKysgYi9idWlsZC1zY3JpcHRzL21ha2VkZXAuc2gKK0BAIC01MSwxOSArNTEsMTkgQEAgZG8gIGVjaG8gIkdlbmVyYXRpbmcgZGVwZW5kZW5jaWVzIGZvciAkc3JjIgorICAgICBjYXNlICRleHQgaW4KKyAgICAgICAgIGMpIGNhdCA+PiR7b3V0cHV0fS5uZXcgPDxfX0VPRl9fCisgCistCVwkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisrCVwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisgCisgX19FT0ZfXworICAgICAgICAgOzsKKyAgICAgICAgIGNjKSBjYXQgPj4ke291dHB1dH0ubmV3IDw8X19FT0ZfXworIAorLQlcJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSBcJChDQykgXCQoQ0ZMQUdTKSBcJChFWFRSQV9DRkxBR1MpIC1jICRzcmMgIC1vIFwkQAorKwlcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSBcJChDQykgXCQoQ0ZMQUdTKSBcJChFWFRSQV9DRkxBR1MpIC1jICRzcmMgIC1vIFwkQAorIAorIF9fRU9GX18KKyAgICAgICAgIDs7CisgICAgICAgICBtKSBjYXQgPj4ke291dHB1dH0ubmV3IDw8X19FT0ZfXworIAorLQlcJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSBcJChDQykgXCQoQ0ZMQUdTKSBcJChFWFRSQV9DRkxBR1MpIC1jICRzcmMgIC1vIFwkQAorKwlcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSBcJChDQykgXCQoQ0ZMQUdTKSBcJChFWFRSQV9DRkxBR1MpIC1jICRzcmMgIC1vIFwkQAorIAorIF9fRU9GX18KKyAgICAgICAgIDs7CitAQCAtNzUsNyArNzUsNyBAQCBfX0VPRl9fCisgICAgICAgICA7OworICAgICAgICAgUykgY2F0ID4+JHtvdXRwdXR9Lm5ldyA8PF9fRU9GX18KKyAKKy0JXCQoTElCVE9PTCkgIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisrCVwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisgCisgX19FT0ZfXworICAgICAgICAgOzsKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbF8xLjIuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGxfMS4yLjE1LmJiCmluZGV4IGM4MDJhNmYuLjM2ODBlYTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbF8xLjIuMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsXzEuMi4xNS5iYgpAQCAtMTcsNiArMTcsNyBAQAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2xpYnNkbC0xLjIuMTUteGRhdGEzMi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1QYXNzLXRhZy1DQy1leHBsaWN0bHktd2hlbi11c2luZy1saWJ0b29sLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlNETC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKQEAgLTUzLDYgKzU0LDEwIEBACiBQQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLCAtLWRpc2FibGUtdmlkZW8tb3BlbmdsLCB2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS12aWRlby14MTEgLS1kaXNhYmxlLXgxMS1zaGFyZWQsIC0tZGlzYWJsZS12aWRlby14MTEsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCiAKKyMgVGhlIGZvbGxvd2luZyB0d28gb3B0aW9ucyBzaG91bGQgb25seSBlbmFibGVkIHdpdGggbWluZ3cgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tzdGRpby1yZWRpcmVjdF0gPSAiLS1lbmFibGUtc3RkaW8tcmVkaXJlY3QsLS1kaXNhYmxlLXN0ZGlvLXJlZGlyZWN0IgorUEFDS0FHRUNPTkZJR1tkaXJlY3R4XSA9ICItLWVuYWJsZS1kaXJlY3R4LC0tZGlzYWJsZS1kaXJlY3R4IgorCiBFWFRSQV9BVVRPUkVDT05GICs9ICItLWluY2x1ZGU9YWNpbmNsdWRlIC0tZXhjbHVkZT1hdXRvaGVhZGVyIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi1QQVRILnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLVBBVEgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5OWMyMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLVBBVEgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDBhZjMwNjAyNTAyMDM1MTU1OTI5ZGQyYTE0NDgyYjgyYTk3NDdjZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVGh1LCAyMyBGZWIgMjAxNyAxNToyMzoxNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IFVzZSB3YXlsYW5kLXNjYW5uZXIgaW4gUEFUSAotCi1wa2ctY29uZmlnIHdpbGwgZ2l2ZSB1cyB0aGUgd3Jvbmcgd2F5bGFuZC1zY2FubmVyIGxvY2F0aW9uLgotVXNlIHRoZSBvbmUgaW4gcGF0aCBpbnN0ZWFkOiBpdCB3aWxsIGJlIGZyb20gbmF0aXZlIHN5c3Jvb3QuCi0KLVRoaXMgaXMgYSB3b3JrYXJvdW5kIGFuZCBzaG91bGQgYmUgZml4ZWQgdXBzdHJlYW06IHByZWZlcmFibHkKLXdpdGggdGhlIHNhbWUgZml4IGFzIGFsbCB0aGUgb3RoZXIgd2F5bGFuZC1zY2FubmVyIHVzZXJzCi0oc2VlIFlPQ1RPICMxMTEwMCkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZF0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA1ICstLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2NGVkZGYyLi41NTM2ZjM1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yNzMsMTAgKzI3Myw3IEBAIGlmIHRlc3QgIiRlbmFibGVfd2F5bGFuZCIgPSAieWVzIjsgdGhlbgotICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF0sIFt3YXlsYW5kLWNsaWVudCA+PSB3YXlsYW5kX2FwaV92ZXJzaW9uXSwKLSAgICAgICAgIFtVU0VfV0FZTEFORD0ieWVzIl0sIFs6XSkKLSAgICAgaWYgdGVzdCAiJFVTRV9XQVlMQU5EIiA9ICJ5ZXMiOyB0aGVuCi0tCi0tICAgICAgICBXQVlMQU5EX1BSRUZJWD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggd2F5bGFuZC1jbGllbnRgCi0tICAgICAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLCwKLS0gICAgICAgICAgICAgICAgICAgICBbJHtXQVlMQU5EX1BSRUZJWH0vYmluJFBBVEhfU0VQQVJBVE9SJFBBVEhdKQotKyAgICAgICAgQUNfUEFUSF9QUk9HKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSkKLSAKLSAgICAgICAgIEFDX0RFRklORShbSEFWRV9WQV9XQVlMQU5EXSwgWzFdLAotICAgICAgICAgICAgICAgICAgIFtEZWZpbmVkIHRvIDEgaWYgVkEvV2F5bGFuZCBBUEkgaXMgYnVpbHRdKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2ZpbGVzLzAwMDEtd2F5bGFuZC1Eb24tdC1jb21taXQtYW5kLXNoaXAtZ2VuZXJhdGVkLWZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9maWxlcy8wMDAxLXdheWxhbmQtRG9uLXQtY29tbWl0LWFuZC1zaGlwLWdlbmVyYXRlZC1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ5N2UyMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2ZpbGVzLzAwMDEtd2F5bGFuZC1Eb24tdC1jb21taXQtYW5kLXNoaXAtZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzM5ICswLDAgQEAKLUZyb20gNTk5M2E3NzEwY2M4ZmQ5YTM5MmQ1MDE1YmU1MTA5OTg3YTQyYjQ5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIzIEZlYiAyMDE3IDE2OjEwOjA5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHdheWxhbmQ6IERvbid0IGNvbW1pdCBhbmQgc2hpcCBnZW5lcmF0ZWQgZmlsZXMKLQotSSBiZWxpZXZlIHNoaXBwaW5nIHdheWxhbmQtZHJtLWNsaWVudC1wcm90b2NvbC5oIGlzIHdyb25nOiBUaGUgaGVhZGVyCi1zaG91bGQgYWx3YXlzIGJlIGdlbmVyYXRlZCBieSB0aGUgd2F5bGFuZC1zY2FubmVyIHRoYXQgbWF0Y2hlcyB0aGUKLXJ1bnRpbWUgd2F5bGFuZCB2ZXJzaW9uLiBDdXJyZW50bHkgd2hlbiBzb21lb25lIGNsb25lcyB0aGUgcmVwbyBhbmQKLWJ1aWxkcywgdGhlIHNoaXBwZWQgdmVyc2lvbiBpcyB1c2VkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhL3B1bGwvMzNdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gdmEvd2F5bGFuZC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICB8ICAgNSArLQotIHZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmggfCAyOTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyOTEgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmgKLQotZGlmZiAtLWdpdCBhL3ZhL3dheWxhbmQvTWFrZWZpbGUuYW0gYi92YS93YXlsYW5kL01ha2VmaWxlLmFtCi1pbmRleCA0ZjgyNjJjLi40YWI4ZDA3IDEwMDY0NAotLS0tIGEvdmEvd2F5bGFuZC9NYWtlZmlsZS5hbQotKysrIGIvdmEvd2F5bGFuZC9NYWtlZmlsZS5hbQotQEAgLTUzLDcgKzUzLDcgQEAgcHJvdG9jb2xfc291cmNlX2ggPSBcCi0gbm9pbnN0X0xUTElCUkFSSUVTCQk9IGxpYnZhX3dheWxhbmQubGEKLSBsaWJ2YV93YXlsYW5kaW5jbHVkZWRpcgkJPSAke2luY2x1ZGVkaXJ9L3ZhCi0gbGlidmFfd2F5bGFuZGluY2x1ZGVfSEVBREVSUwk9ICQoc291cmNlX2gpCi0tbGlidmFfd2F5bGFuZF9sYV9TT1VSQ0VTCT0gJChzb3VyY2VfYykgJChwcm90b2NvbF9zb3VyY2VfaCkKLStsaWJ2YV93YXlsYW5kX2xhX1NPVVJDRVMJPSAkKHNvdXJjZV9jKQotIG5vaW5zdF9IRUFERVJTCQkJPSAkKHNvdXJjZV9oX3ByaXYpCi0gCi0gIyBXYXlsYW5kIHByb3RvY29sCi1AQCAtNjUsNSArNjUsOCBAQCBFWFRSQV9ESVNUID0gXAotIAl3YXlsYW5kLWRybS54bWwgICAgICAgICBcCi0gCSQoTlVMTCkKLSAKLStCVUlMVF9TT1VSQ0VTID0gJChwcm90b2NvbF9zb3VyY2VfaCkKLStDTEVBTkZJTEVTID0gJChCVUlMVF9TT1VSQ0VTKQotKwotICMgRXh0cmEgY2xlYW4gZmlsZXMgc28gdGhhdCBtYWludGFpbmVyLWNsZWFuIHJlbW92ZXMgKmV2ZXJ5dGhpbmcqCi0gTUFJTlRBSU5FUkNMRUFORklMRVMgPSBNYWtlZmlsZS5pbgotZGlmZiAtLWdpdCBhL3ZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmggYi92YS93YXlsYW5kL3dheWxhbmQtZHJtLWNsaWVudC1wcm90b2NvbC5oCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGRhMjY3ZTguLjAwMDAwMDAKLS0tLSBhL3ZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmgKLSsrKyAvZGV2L251bGwKLUBAIC0xLDI5MCArMCwwIEBACi0tLyogR2VuZXJhdGVkIGJ5IHdheWxhbmQtc2Nhbm5lciAxLjExLjkwICovCi0tCi0tI2lmbmRlZiBEUk1fQ0xJRU5UX1BST1RPQ09MX0gKLS0jZGVmaW5lIERSTV9DTElFTlRfUFJPVE9DT0xfSAotLQotLSNpbmNsdWRlIDxzdGRpbnQuaD4KLS0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0tI2luY2x1ZGUgIndheWxhbmQtY2xpZW50LmgiCi0tCi0tI2lmZGVmICBfX2NwbHVzcGx1cwotLWV4dGVybiAiQyIgewotLSNlbmRpZgotLQotLS8qKgotLSAqIEBwYWdlIHBhZ2VfZHJtIFRoZSBkcm0gcHJvdG9jb2wKLS0gKiBAc2VjdGlvbiBwYWdlX2lmYWNlc19kcm0gSW50ZXJmYWNlcwotLSAqIC0gQHN1YnBhZ2UgcGFnZV9pZmFjZV93bF9kcm0gLSAKLS0gKiBAc2VjdGlvbiBwYWdlX2NvcHlyaWdodF9kcm0gQ29weXJpZ2h0Ci0tICogPHByZT4KLS0gKgotLSAqIENvcHlyaWdodCDCqSAyMDA4LTIwMTEgS3Jpc3RpYW4gSMO4Z3NiZXJnCi0tICogQ29weXJpZ2h0IMKpIDIwMTAtMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbgotLSAqCi0tICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcwotLSAqIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQKLS0gKiB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdFxuIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbgotLSAqIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgotLSAqIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgotLSAqIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkKLS0gKiBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywKLS0gKiB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29weXJpZ2h0IGhvbGRlcnMgbWFrZSBubwotLSAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0tICogcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKLS0gKiB3YXJyYW50eS4KLS0gKgotLSAqIFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTCi0tICogU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKLS0gKiBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKLS0gKiBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLS0gKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4KLS0gKiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLAotLSAqIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GCi0tICogVEhJUyBTT0ZUV0FSRS4KLS0gKiA8L3ByZT4KLS0gKi8KLS1zdHJ1Y3Qgd2xfYnVmZmVyOwotLXN0cnVjdCB3bF9kcm07Ci0tCi0tLyoqCi0tICogQHBhZ2UgcGFnZV9pZmFjZV93bF9kcm0gd2xfZHJtCi0tICogQHNlY3Rpb24gcGFnZV9pZmFjZV93bF9kcm1fYXBpIEFQSQotLSAqIFNlZSBAcmVmIGlmYWNlX3dsX2RybS4KLS0gKi8KLS0vKioKLS0gKiBAZGVmZ3JvdXAgaWZhY2Vfd2xfZHJtIFRoZSB3bF9kcm0gaW50ZXJmYWNlCi0tICovCi0tZXh0ZXJuIGNvbnN0IHN0cnVjdCB3bF9pbnRlcmZhY2Ugd2xfZHJtX2ludGVyZmFjZTsKLS0KLS0jaWZuZGVmIFdMX0RSTV9FUlJPUl9FTlVNCi0tI2RlZmluZSBXTF9EUk1fRVJST1JfRU5VTQotLWVudW0gd2xfZHJtX2Vycm9yIHsKLS0JV0xfRFJNX0VSUk9SX0FVVEhFTlRJQ0FURV9GQUlMID0gMCwKLS0JV0xfRFJNX0VSUk9SX0lOVkFMSURfRk9STUFUID0gMSwKLS0JV0xfRFJNX0VSUk9SX0lOVkFMSURfTkFNRSA9IDIsCi0tfTsKLS0jZW5kaWYgLyogV0xfRFJNX0VSUk9SX0VOVU0gKi8KLS0KLS0jaWZuZGVmIFdMX0RSTV9GT1JNQVRfRU5VTQotLSNkZWZpbmUgV0xfRFJNX0ZPUk1BVF9FTlVNCi0tZW51bSB3bF9kcm1fZm9ybWF0IHsKLS0JV0xfRFJNX0ZPUk1BVF9DOCA9IDB4MjAyMDM4NDMsCi0tCVdMX0RSTV9GT1JNQVRfUkdCMzMyID0gMHgzODQyNDc1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1IyMzMgPSAweDM4NTI0NzQyLAotLQlXTF9EUk1fRk9STUFUX1hSR0I0NDQ0ID0gMHgzMjMxNTI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9YQkdSNDQ0NCA9IDB4MzIzMTQyNTgsCi0tCVdMX0RSTV9GT1JNQVRfUkdCWDQ0NDQgPSAweDMyMzE1ODUyLAotLQlXTF9EUk1fRk9STUFUX0JHUlg0NDQ0ID0gMHgzMjMxNTg0MiwKLS0JV0xfRFJNX0ZPUk1BVF9BUkdCNDQ0NCA9IDB4MzIzMTUyNDEsCi0tCVdMX0RSTV9GT1JNQVRfQUJHUjQ0NDQgPSAweDMyMzE0MjQxLAotLQlXTF9EUk1fRk9STUFUX1JHQkE0NDQ0ID0gMHgzMjMxNDE1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1JBNDQ0NCA9IDB4MzIzMTQxNDIsCi0tCVdMX0RSTV9GT1JNQVRfWFJHQjE1NTUgPSAweDM1MzE1MjU4LAotLQlXTF9EUk1fRk9STUFUX1hCR1IxNTU1ID0gMHgzNTMxNDI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9SR0JYNTU1MSA9IDB4MzUzMTU4NTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSWDU1NTEgPSAweDM1MzE1ODQyLAotLQlXTF9EUk1fRk9STUFUX0FSR0IxNTU1ID0gMHgzNTMxNTI0MSwKLS0JV0xfRFJNX0ZPUk1BVF9BQkdSMTU1NSA9IDB4MzUzMTQyNDEsCi0tCVdMX0RSTV9GT1JNQVRfUkdCQTU1NTEgPSAweDM1MzE0MTUyLAotLQlXTF9EUk1fRk9STUFUX0JHUkE1NTUxID0gMHgzNTMxNDE0MiwKLS0JV0xfRFJNX0ZPUk1BVF9SR0I1NjUgPSAweDM2MzE0NzUyLAotLQlXTF9EUk1fRk9STUFUX0JHUjU2NSA9IDB4MzYzMTQ3NDIsCi0tCVdMX0RSTV9GT1JNQVRfUkdCODg4ID0gMHgzNDMyNDc1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1I4ODggPSAweDM0MzI0NzQyLAotLQlXTF9EUk1fRk9STUFUX1hSR0I4ODg4ID0gMHgzNDMyNTI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9YQkdSODg4OCA9IDB4MzQzMjQyNTgsCi0tCVdMX0RSTV9GT1JNQVRfUkdCWDg4ODggPSAweDM0MzI1ODUyLAotLQlXTF9EUk1fRk9STUFUX0JHUlg4ODg4ID0gMHgzNDMyNTg0MiwKLS0JV0xfRFJNX0ZPUk1BVF9BUkdCODg4OCA9IDB4MzQzMjUyNDEsCi0tCVdMX0RSTV9GT1JNQVRfQUJHUjg4ODggPSAweDM0MzI0MjQxLAotLQlXTF9EUk1fRk9STUFUX1JHQkE4ODg4ID0gMHgzNDMyNDE1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1JBODg4OCA9IDB4MzQzMjQxNDIsCi0tCVdMX0RSTV9GT1JNQVRfWFJHQjIxMDEwMTAgPSAweDMwMzM1MjU4LAotLQlXTF9EUk1fRk9STUFUX1hCR1IyMTAxMDEwID0gMHgzMDMzNDI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9SR0JYMTAxMDEwMiA9IDB4MzAzMzU4NTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSWDEwMTAxMDIgPSAweDMwMzM1ODQyLAotLQlXTF9EUk1fRk9STUFUX0FSR0IyMTAxMDEwID0gMHgzMDMzNTI0MSwKLS0JV0xfRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMCA9IDB4MzAzMzQyNDEsCi0tCVdMX0RSTV9GT1JNQVRfUkdCQTEwMTAxMDIgPSAweDMwMzM0MTUyLAotLQlXTF9EUk1fRk9STUFUX0JHUkExMDEwMTAyID0gMHgzMDMzNDE0MiwKLS0JV0xfRFJNX0ZPUk1BVF9ZVVlWID0gMHg1NjU5NTU1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVllVID0gMHg1NTU5NTY1OSwKLS0JV0xfRFJNX0ZPUk1BVF9VWVZZID0gMHg1OTU2NTk1NSwKLS0JV0xfRFJNX0ZPUk1BVF9WWVVZID0gMHg1OTU1NTk1NiwKLS0JV0xfRFJNX0ZPUk1BVF9BWVVWID0gMHg1NjU1NTk0MSwKLS0JV0xfRFJNX0ZPUk1BVF9OVjEyID0gMHgzMjMxNTY0ZSwKLS0JV0xfRFJNX0ZPUk1BVF9OVjIxID0gMHgzMTMyNTY0ZSwKLS0JV0xfRFJNX0ZPUk1BVF9OVjE2ID0gMHgzNjMxNTY0ZSwKLS0JV0xfRFJNX0ZPUk1BVF9OVjYxID0gMHgzMTM2NTY0ZSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVVY0MTAgPSAweDM5NTY1NTU5LAotLQlXTF9EUk1fRk9STUFUX1lWVTQxMCA9IDB4Mzk1NTU2NTksCi0tCVdMX0RSTV9GT1JNQVRfWVVWNDExID0gMHgzMTMxNTU1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVlU0MTEgPSAweDMxMzE1NjU5LAotLQlXTF9EUk1fRk9STUFUX1lVVjQyMCA9IDB4MzIzMTU1NTksCi0tCVdMX0RSTV9GT1JNQVRfWVZVNDIwID0gMHgzMjMxNTY1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVVY0MjIgPSAweDM2MzE1NTU5LAotLQlXTF9EUk1fRk9STUFUX1lWVTQyMiA9IDB4MzYzMTU2NTksCi0tCVdMX0RSTV9GT1JNQVRfWVVWNDQ0ID0gMHgzNDMyNTU1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVlU0NDQgPSAweDM0MzI1NjU5LAotLX07Ci0tI2VuZGlmIC8qIFdMX0RSTV9GT1JNQVRfRU5VTSAqLwotLQotLSNpZm5kZWYgV0xfRFJNX0NBUEFCSUxJVFlfRU5VTQotLSNkZWZpbmUgV0xfRFJNX0NBUEFCSUxJVFlfRU5VTQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqIHdsX2RybSBjYXBhYmlsaXR5IGJpdG1hc2sKLS0gKgotLSAqIEJpdG1hc2sgb2YgY2FwYWJpbGl0aWVzLgotLSAqLwotLWVudW0gd2xfZHJtX2NhcGFiaWxpdHkgewotLQkvKioKLS0JICogd2xfZHJtIHByaW1lIGF2YWlsYWJsZQotLQkgKi8KLS0JV0xfRFJNX0NBUEFCSUxJVFlfUFJJTUUgPSAxLAotLX07Ci0tI2VuZGlmIC8qIFdMX0RSTV9DQVBBQklMSVRZX0VOVU0gKi8KLS0KLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKiBAc3RydWN0IHdsX2RybV9saXN0ZW5lcgotLSAqLwotLXN0cnVjdCB3bF9kcm1fbGlzdGVuZXIgewotLQkvKioKLS0JICovCi0tCXZvaWQgKCpkZXZpY2UpKHZvaWQgKmRhdGEsCi0tCQkgICAgICAgc3RydWN0IHdsX2RybSAqd2xfZHJtLAotLQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwotLQkvKioKLS0JICovCi0tCXZvaWQgKCpmb3JtYXQpKHZvaWQgKmRhdGEsCi0tCQkgICAgICAgc3RydWN0IHdsX2RybSAqd2xfZHJtLAotLQkJICAgICAgIHVpbnQzMl90IGZvcm1hdCk7Ci0tCS8qKgotLQkgKi8KLS0Jdm9pZCAoKmF1dGhlbnRpY2F0ZWQpKHZvaWQgKmRhdGEsCi0tCQkJICAgICAgc3RydWN0IHdsX2RybSAqd2xfZHJtKTsKLS0JLyoqCi0tCSAqLwotLQl2b2lkICgqY2FwYWJpbGl0aWVzKSh2b2lkICpkYXRhLAotLQkJCSAgICAgc3RydWN0IHdsX2RybSAqd2xfZHJtLAotLQkJCSAgICAgdWludDMyX3QgdmFsdWUpOwotLX07Ci0tCi0tLyoqCi0tICogQGluZ3JvdXAgd2xfZHJtX2lmYWNlCi0tICovCi0tc3RhdGljIGlubGluZSBpbnQKLS13bF9kcm1fYWRkX2xpc3RlbmVyKHN0cnVjdCB3bF9kcm0gKndsX2RybSwKLS0JCSAgICBjb25zdCBzdHJ1Y3Qgd2xfZHJtX2xpc3RlbmVyICpsaXN0ZW5lciwgdm9pZCAqZGF0YSkKLS17Ci0tCXJldHVybiB3bF9wcm94eV9hZGRfbGlzdGVuZXIoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sCi0tCQkJCSAgICAgKHZvaWQgKCoqKSh2b2lkKSkgbGlzdGVuZXIsIGRhdGEpOwotLX0KLS0KLS0jZGVmaW5lIFdMX0RSTV9BVVRIRU5USUNBVEUgMAotLSNkZWZpbmUgV0xfRFJNX0NSRUFURV9CVUZGRVIgMQotLSNkZWZpbmUgV0xfRFJNX0NSRUFURV9QTEFOQVJfQlVGRkVSIDIKLS0jZGVmaW5lIFdMX0RSTV9DUkVBVEVfUFJJTUVfQlVGRkVSIDMKLS0KLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS0jZGVmaW5lIFdMX0RSTV9BVVRIRU5USUNBVEVfU0lOQ0VfVkVSU0lPTiAxCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICovCi0tI2RlZmluZSBXTF9EUk1fQ1JFQVRFX0JVRkZFUl9TSU5DRV9WRVJTSU9OIDEKLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS0jZGVmaW5lIFdMX0RSTV9DUkVBVEVfUExBTkFSX0JVRkZFUl9TSU5DRV9WRVJTSU9OIDEKLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS0jZGVmaW5lIFdMX0RSTV9DUkVBVEVfUFJJTUVfQlVGRkVSX1NJTkNFX1ZFUlNJT04gMgotLQotLS8qKiBAaW5ncm91cCBpZmFjZV93bF9kcm0gKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQKLS13bF9kcm1fc2V0X3VzZXJfZGF0YShzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sIHZvaWQgKnVzZXJfZGF0YSkKLS17Ci0tCXdsX3Byb3h5X3NldF91c2VyX2RhdGEoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sIHVzZXJfZGF0YSk7Ci0tfQotLQotLS8qKiBAaW5ncm91cCBpZmFjZV93bF9kcm0gKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQgKgotLXdsX2RybV9nZXRfdXNlcl9kYXRhKHN0cnVjdCB3bF9kcm0gKndsX2RybSkKLS17Ci0tCXJldHVybiB3bF9wcm94eV9nZXRfdXNlcl9kYXRhKChzdHJ1Y3Qgd2xfcHJveHkgKikgd2xfZHJtKTsKLS19Ci0tCi0tc3RhdGljIGlubGluZSB1aW50MzJfdAotLXdsX2RybV9nZXRfdmVyc2lvbihzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0pCi0tewotLQlyZXR1cm4gd2xfcHJveHlfZ2V0X3ZlcnNpb24oKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0pOwotLX0KLS0KLS0vKiogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0td2xfZHJtX2Rlc3Ryb3koc3RydWN0IHdsX2RybSAqd2xfZHJtKQotLXsKLS0Jd2xfcHJveHlfZGVzdHJveSgoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSk7Ci0tfQotLQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZAotLXdsX2RybV9hdXRoZW50aWNhdGUoc3RydWN0IHdsX2RybSAqd2xfZHJtLCB1aW50MzJfdCBpZCkKLS17Ci0tCXdsX3Byb3h5X21hcnNoYWwoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sCi0tCQkJIFdMX0RSTV9BVVRIRU5USUNBVEUsIGlkKTsKLS19Ci0tCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICovCi0tc3RhdGljIGlubGluZSBzdHJ1Y3Qgd2xfYnVmZmVyICoKLS13bF9kcm1fY3JlYXRlX2J1ZmZlcihzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sIHVpbnQzMl90IG5hbWUsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBzdHJpZGUsIHVpbnQzMl90IGZvcm1hdCkKLS17Ci0tCXN0cnVjdCB3bF9wcm94eSAqaWQ7Ci0tCi0tCWlkID0gd2xfcHJveHlfbWFyc2hhbF9jb25zdHJ1Y3Rvcigoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSwKLS0JCQkgV0xfRFJNX0NSRUFURV9CVUZGRVIsICZ3bF9idWZmZXJfaW50ZXJmYWNlLCBOVUxMLCBuYW1lLCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUsIGZvcm1hdCk7Ci0tCi0tCXJldHVybiAoc3RydWN0IHdsX2J1ZmZlciAqKSBpZDsKLS19Ci0tCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICovCi0tc3RhdGljIGlubGluZSBzdHJ1Y3Qgd2xfYnVmZmVyICoKLS13bF9kcm1fY3JlYXRlX3BsYW5hcl9idWZmZXIoc3RydWN0IHdsX2RybSAqd2xfZHJtLCB1aW50MzJfdCBuYW1lLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwgdWludDMyX3QgZm9ybWF0LCBpbnQzMl90IG9mZnNldDAsIGludDMyX3Qgc3RyaWRlMCwgaW50MzJfdCBvZmZzZXQxLCBpbnQzMl90IHN0cmlkZTEsIGludDMyX3Qgb2Zmc2V0MiwgaW50MzJfdCBzdHJpZGUyKQotLXsKLS0Jc3RydWN0IHdsX3Byb3h5ICppZDsKLS0KLS0JaWQgPSB3bF9wcm94eV9tYXJzaGFsX2NvbnN0cnVjdG9yKChzdHJ1Y3Qgd2xfcHJveHkgKikgd2xfZHJtLAotLQkJCSBXTF9EUk1fQ1JFQVRFX1BMQU5BUl9CVUZGRVIsICZ3bF9idWZmZXJfaW50ZXJmYWNlLCBOVUxMLCBuYW1lLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIG9mZnNldDAsIHN0cmlkZTAsIG9mZnNldDEsIHN0cmlkZTEsIG9mZnNldDIsIHN0cmlkZTIpOwotLQotLQlyZXR1cm4gKHN0cnVjdCB3bF9idWZmZXIgKikgaWQ7Ci0tfQotLQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqLwotLXN0YXRpYyBpbmxpbmUgc3RydWN0IHdsX2J1ZmZlciAqCi0td2xfZHJtX2NyZWF0ZV9wcmltZV9idWZmZXIoc3RydWN0IHdsX2RybSAqd2xfZHJtLCBpbnQzMl90IG5hbWUsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qgb2Zmc2V0MCwgaW50MzJfdCBzdHJpZGUwLCBpbnQzMl90IG9mZnNldDEsIGludDMyX3Qgc3RyaWRlMSwgaW50MzJfdCBvZmZzZXQyLCBpbnQzMl90IHN0cmlkZTIpCi0tewotLQlzdHJ1Y3Qgd2xfcHJveHkgKmlkOwotLQotLQlpZCA9IHdsX3Byb3h5X21hcnNoYWxfY29uc3RydWN0b3IoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sCi0tCQkJIFdMX0RSTV9DUkVBVEVfUFJJTUVfQlVGRkVSLCAmd2xfYnVmZmVyX2ludGVyZmFjZSwgTlVMTCwgbmFtZSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBvZmZzZXQwLCBzdHJpZGUwLCBvZmZzZXQxLCBzdHJpZGUxLCBvZmZzZXQyLCBzdHJpZGUyKTsKLS0KLS0JcmV0dXJuIChzdHJ1Y3Qgd2xfYnVmZmVyICopIGlkOwotLX0KLS0KLS0jaWZkZWYgIF9fY3BsdXNwbHVzCi0tfQotLSNlbmRpZgotLQotLSNlbmRpZgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18xLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDgyYzE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18xLjguMy5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgZnJvbSBsaWJ2YSBwcm9qZWN0IgorCitERVNDUklQVElPTiA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIFwKK2FuZCBleGFtcGxlcyB0byBleGVyY2lzZSBWQS1BUEkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWJ2YSBcCitwcm9qZWN0LlZBLUFQSSBpcyBhbiBvcGVuLXNvdXJjZSBsaWJyYXJ5IGFuZCBBUEkgc3BlY2lmaWNhdGlvbiwgXAord2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgXAorZm9yIHZpZGVvIHByb2Nlc3NpbmcuIEl0IGNvbnNpc3RzIG9mIGEgbWFpbiBsaWJyYXJ5IGFuZCBkcml2ZXItc3BlY2lmaWMgXAorYWNjZWxlcmF0aW9uIGJhY2tlbmRzIGZvciBlYWNoIHN1cHBvcnRlZCBoYXJkd2FyZSB2ZW5kb3IiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS11dGlscy9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMTQ4ZmM4YWRmMTlkYzlhZWMxN2NmOWNkMjlhOWE1ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLXV0aWxzLmdpdDticmFuY2g9djEuOC1icmFuY2giCitTUkNSRVYgPSAiMDExYzcwOWI5OGI1MmRiM2IxMGFlYjM2MWRmZWE5ZGE0MzkzMDM2NCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEtdXRpbHMvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJsaWJ2YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS43LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzBiOTBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCi1ERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKLWFuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAotaGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKLWJhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKLWRlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAotc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAotTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAotbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAotbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCi12aWRlbyBkZWNvZGluZy4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS9pc3N1ZXMiCi0KLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS43LWJyYW5jaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLVBBVEgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13YXlsYW5kLURvbi10LWNvbW1pdC1hbmQtc2hpcC1nZW5lcmF0ZWQtZmlsZXMucGF0Y2giCi1TUkNSRVYgPSAiZGJmOWY3ZTMzMzQ5YzNjZWU4ZDEzMWU5M2E2YTRmOTEyNTU2MzVjYiIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImxpYnZhLSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTID0gImxpYmRybSB2aXJ0dWFsL21lc2EgdmlydHVhbC9saWJnbGVzMSB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZHVtbXktZHJpdmVyIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXgxMSAke1BOfS10cGkgJHtQTn0tZ2x4ICR7UE59LWVnbCAke1BOfS13YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfS10cGkgPSsgIiR7UE59IgotUkRFUEVORFNfJHtQTn0teDExID0rICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWdseCA9KyAiJHtQTn0teDExIgotUkRFUEVORFNfJHtQTn0tZWdsID0rICIke1BOfS14MTEiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2RyaS8uZGVidWciCi0KLUZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCi1GSUxFU18ke1BOfS10cGkgPSsgIiR7bGliZGlyfS9saWJ2YS10cGkqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZ2x4ID0rICIke2xpYmRpcn0vbGlidmEtZ2x4KiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWVnbCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWVnbCoke1NPTElCU30iCi1GSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8xLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWVkYTg0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8xLjguMy5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKK2FuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAoraGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKK2Jhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKK2RlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAorc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAorTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAorbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAorbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCit2aWRlbyBkZWNvZGluZy4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS44LWJyYW5jaCAiCitTUkNSRVYgPSAiNDU3NDcwOTg3Y2M5ZGY1OTc2Y2U4YzcyZmZkNGJmYmQ5YmFhZjBmOSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCisKK1BBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tdHBpICR7UE59LWdseCAke1BOfS1lZ2wgJHtQTn0td2F5bGFuZCIKKworUkRFUEVORFNfJHtQTn0tdHBpID0rICIke1BOfSIKK1JERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKK1JERVBFTkRTXyR7UE59LWVnbCA9KyAiJHtQTn0teDExIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kcmkvLmRlYnVnIgorCitGSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tdHBpID0rICIke2xpYmRpcn0vbGlidmEtdHBpKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCitGSUxFU18ke1BOfS1lZ2wgPSsgIiR7bGliZGlyfS9saWJ2YS1lZ2wqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxZTg2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSAzNDIzMTFkYmIxOTA3MzViN2IzMmFiMjBmODFjMWQ4ZGJjZmU3MTdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMSBPY3QgMjAxNyAxNTo0MDo0MiArMDgwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS52dWxrYW4uYW06IGV4cGxpY3RseSBhZGQgbGliIGV4cGF0IHRvIGludGVsCisgbGlidnVsa2FuJ3MgbGliIGRlcGVuZHMKKworV2hpbGUgYnVpbHQgd2l0aCAiLWZ2aXNpYmlsaXR5PWRlZmF1bHQiCisuLi4KK3xpNTg2LW9lLWxpbnV4LWdjYyAuLi4gLWZ2aXNpYmlsaXR5PWRlZmF1bHQgLi4uIC1vIGNvbW1vbi8ubGlicy9jb21tb25fbGliaW50ZWxfY29tbW9uX2xhLWdlbl9kZWNvZGVyLm8KKy4uLgorCitJdCB0cmlnZ2VyZWQgdGhlIGZhaWx1cmUKKy4uLgorfGk1ODYtb2UtbGludXgtZysrICAuLi4gY29tbW9uLy5saWJzL2xpYmludGVsX2NvbW1vbi5hIC4uLiAtbyB2dWxrYW4vLmxpYnMvbGlidnVsa2FuX2ludGVsLnNvCit8Y29tbW9uLy5saWJzL2xpYmludGVsX2NvbW1vbi5hKGNvbW1vbl9saWJpbnRlbF9jb21tb25fbGEtZ2VuX2RlY29kZXIubyk6Cit8SW4gZnVuY3Rpb24gYHN0YXJ0X2VsZW1lbnQnOgorfC91c3Ivc3JjL2RlYnVnL21lc2EvMl8xNy4xLjctcjAvbWVzYS0xNy4xLjcvc3JjL2ludGVsL2NvbW1vbi9nZW5fZGVjb2Rlci5jOjM3MToKK3VuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhNTF9HZXRDdXJyZW50TGluZU51bWJlcicKKy4uLgorCitleHBsaWN0bHkgYWRkIEVYUEFUX0xJQlMgdG8gaW50ZWwncyBWVUxLQU5fTElCX0RFUFMKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21lc2EtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KK2luZGV4IDI3MWIwYTUuLjhmYmUyYzggMTAwNjQ0CistLS0gYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCisrKysgYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCitAQCAtMTQ0LDYgKzE0NCw3IEBAIFZVTEtBTl9MSUJfREVQUyA9IFwKKyAJJChMSUJEUk1fTElCUykgXAorIAkkKFBUSFJFQURfTElCUykgXAorIAkkKERMT1BFTl9MSUJTKSBcCisrCSQoRVhQQVRfTElCUykgXAorIAktbG0KKyAKKyBpZiBIQVZFX1BMQVRGT1JNX1gxMQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaAppbmRleCBlNDk2OTViLi5lYjZmZjRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJmNjhmY2FhZjQ5NjRlN2ZlZWIzODNmNWMyNjg1MTk2NWNkYTAzN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM5MDhmMGMxM2FjODFhM2E1MjE0MGYxMjlhMTNiMmJjOTk3ZmY0ZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAxNSBOb3YgMjAxNiAxNToyMDo0OSArMDIwMAogU3ViamVjdDogW1BBVENIXSBTaW1wbGlmeSB3YXlsYW5kLXNjYW5uZXIgbG9va3VwCkBAIC0xNSwyMyArMTUsMjMgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGU1NmUzNWEuLmE5MjAwNWEgMTAwNjQ0CitpbmRleCAyYzdlNjM2ZmFjLi5kMmIyMzUwNzM5IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMDIwLDEyICsyMDIwLDcgQEAgaWYgdGVzdCAieCR3aXRoX2VnbF9wbGF0Zm9ybXMiICE9ICJ4IiAtYSAieCRlbmFibGVfZWdsIiAhPSB4eWVzOyB0aGVuCi0gICAgIEFDX01TR19FUlJPUihbY2Fubm90IGJ1aWxkIGVnbCBzdGF0ZSB0cmFja2VyIHdpdGhvdXQgRUdMIGxpYnJhcnldKQorQEAgLTIxNzQsMTIgKzIxNzQsNyBAQCBpZiB0ZXN0ICJ4JHdpdGhfcGxhdGZvcm1zIiAhPSB4YXV0bzsgdGhlbgorICAgICB3aXRoX2VnbF9wbGF0Zm9ybXM9JHdpdGhfcGxhdGZvcm1zCiAgZmkKICAKIC1QS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sCiAtICAgICAgICBXQVlMQU5EX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9d2F5bGFuZF9zY2FubmVyIHdheWxhbmQtc2Nhbm5lcmAsCiAtICAgICAgICBXQVlMQU5EX1NDQU5ORVI9JycpCiAtaWYgdGVzdCAieCRXQVlMQU5EX1NDQU5ORVIiID0geDsgdGhlbgotLSAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQorLSAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLCBbOl0pCiAtZmkKICtBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQogIAogICMgRG8gcGVyLUVHTCBwbGF0Zm9ybSBzZXR1cHMgYW5kIGNoZWNrcwogIGVnbF9wbGF0Zm9ybXM9YElGUz0nLCAnOyBlY2hvICR3aXRoX2VnbF9wbGF0Zm9ybXNgCiAtLSAKLTIuMS40CisyLjEzLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyN2EzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA5ODYxNDM3ZTU4ZmRkMGRlMDExOTNhMTAyNjA4ZDM0ZTU5NTI5NTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXN0b3BoIEhhYWcgPGhhYWdjaCttZXNhZGV2QGZyaWNrZWwuY2x1Yj4KK0RhdGU6IFRodSwgMjAgQXByIDIwMTcgMTA6MzQ6MTggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGFjOiBmaXggYnVpbGQgYWZ0ZXIgTExWTSA1LjAgU1ZOIHIzMDA3MTgKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKwordjI6IHByZXZpb3VzbHkgZ2V0V2l0aERlcmVmZXJlbmNlYWJsZUJ5dGVzKCkgZXhpc3RzLCBidXQgYWRkQXR0cigpIGRvZXNuJ3QgdGFrZSB0aGF0IHR5cGUKKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIEhhYWcgPGhhYWdjaCttZXNhZGV2QGZyaWNrZWwuY2x1Yj4KK1Jldmlld2VkLWJ5OiBOaWNvbGFpIEjDpGhubGUgPG5pY29sYWkuaGFlaG5sZUBhbWQuY29tPgorVGVzdGVkLWFuZC1yZXZpZXdlZC1ieTogTWlrZSBMb3RoaWFuIDxtaWtlQGZpcmVidXJuLmNvLnVrPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBzcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAgYi9zcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAKK2luZGV4IGQ5ZWE0YjEuLjExZmE4MDkgMTAwNjQ0CistLS0gYS9zcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAKKysrKyBiL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAorQEAgLTQ0LDkgKzQ0LDEzIEBAIHR5cGVkZWYgQXR0cmlidXRlU2V0IEF0dHJpYnV0ZUxpc3Q7Cisgdm9pZCBhY19hZGRfYXR0cl9kZXJlZmVyZW5jZWFibGUoTExWTVZhbHVlUmVmIHZhbCwgdWludDY0X3QgYnl0ZXMpCisgeworICAgIGxsdm06OkFyZ3VtZW50ICpBID0gbGx2bTo6dW53cmFwPGxsdm06OkFyZ3VtZW50Pih2YWwpOworKyNpZiBIQVZFX0xMVk0gPCAweDA1MDAKKyAgICBsbHZtOjpBdHRyQnVpbGRlciBCOworICAgIEIuYWRkRGVyZWZlcmVuY2VhYmxlQXR0cihieXRlcyk7CisgICAgQS0+YWRkQXR0cihsbHZtOjpBdHRyaWJ1dGVMaXN0OjpnZXQoQS0+Z2V0Q29udGV4dCgpLCBBLT5nZXRBcmdObygpICsgMSwgIEIpKTsKKysjZWxzZQorKyAgIEEtPmFkZEF0dHIobGx2bTo6QXR0cmlidXRlOjpnZXRXaXRoRGVyZWZlcmVuY2VhYmxlQnl0ZXMoQS0+Z2V0Q29udGV4dCgpLCBieXRlcykpOworKyNlbmRpZgorIH0KKyAKKyBib29sIGFjX2lzX3NncHJfcGFyYW0oTExWTVZhbHVlUmVmIGFyZykKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1BbHdheXMtY2hlY2stZm9yLWV4cGF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLUFsd2F5cy1jaGVjay1mb3ItZXhwYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1M2M0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1BbHdheXMtY2hlY2stZm9yLWV4cGF0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMWY3ZDc1MjE5M2YwMmQxNWQ1OTIzY2VlOTkyZThmNDZkNGM2ZGYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDEzOjUxOjQ5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogQWx3YXlzIGNoZWNrIGZvciBleHBhdAorCitleHBhdCB3YXMgbm90IGNoZWNrZWQgaWYgZHJpIHdhcyBub3QgYnVpbHQgbGVhZGluZyB0byBidWlsZCBmYWlsdXJlCitpbiB2dWxrYW4gZHJpdmVyOiBiYWNrcG9ydCBhIGZpeCAoYSBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBjb21taXRzCit0aGF0IHNob3VsZCBlbmQgdXAgaW4gMTcuMykuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxNSArKysrKystLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBmZDM0NmM4YWEyLi42NjJmYWVjZWZhIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNzc3LDYgKzE3NzcsMTIgQEAgaWYgdGVzdCAieCR3aXRoX2RyaV9kcml2ZXJzIiA9IHhubzsgdGhlbgorICAgICB3aXRoX2RyaV9kcml2ZXJzPScnCisgZmkKKyAKKysjIENoZWNrIGZvciBleHBhdAorK1BLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0pCisrUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSwsCisrICAgIFtQS0dfQ0hFQ0tfTU9EVUxFUyhbRVhQQVRdLCBbZXhwYXQyMV0pXQorKykKKysKKyBkbmwgSWYgJHdpdGhfZHJpX2RyaXZlcnMgaXMgeWVzLCBkcml2ZXJzIHdpbGwgYmUgYWRkZWQgdGhyb3VnaAorIGRubCBwbGF0Zm9ybSBjaGVja3MuIFNldCBERUZJTkVTIGFuZCBMSUJfREVQUworIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCitAQCAtMTgxMCwxNSArMTgxNiw2IEBAIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCisgICAgICAgICB3aXRoX2RyaV9kcml2ZXJzPSJpOTE1IGk5NjUgbm91dmVhdSByMjAwIHJhZGVvbiBzd3Jhc3QiCisgICAgIGZpCisgCistICAgICMgQ2hlY2sgZm9yIGV4cGF0CistICAgIFBLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0sIFtdLAorLSAgICAgICAgIyBleHBhdCB2ZXJzaW9uIDIuMCBhbmQgZWFybGllciBkbyBub3QgcHJvdmlkZSBleHBhdC5wYworLSAgICAgICAgW0FDX0NIRUNLX0hFQURFUihbZXhwYXQuaF0sW10sCistICAgICAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGhlYWRlcnMgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCistICAgICAgICAgQUNfQ0hFQ0tfTElCKFtleHBhdF0sW1hNTF9QYXJzZXJDcmVhdGVdLFtdLAorLSAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGxpYnJhcnkgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCistICAgICAgICAgRVhQQVRfTElCUz0iLWxleHBhdCJdKQorLQorICAgICAjIHB1dCBhbGwgdGhlIG5lY2Vzc2FyeSBsaWJzIHRvZ2V0aGVyCisgICAgIERSSV9MSUJfREVQUz0iJERSSV9MSUJfREVQUyAkU0VMSU5VWF9MSUJTICRMSUJEUk1fTElCUyAkRVhQQVRfTElCUyAtbG0gJFBUSFJFQURfTElCUyAkRExPUEVOX0xJQlMiCisgZmkKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ5Yjg2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gZDg3NTA3NzY0MDRiMTAzMWQ3NjI5NjZkMGY1NTFkMTNkMmZlMDVhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDE4OjU4OjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHdpbnN5cy9zdmdhL2RybTogSW5jbHVkZSBzeXMvdHlwZXMuaAorCit2bXdfc2NyZWVuLmggdXNlcyBkZXZfdCB3aGljaCBpcyBkZWZpbmVzIGluIHN5cy90eXBlcy5oCit0aGlzIGhlYWRlciBpcyByZXF1aXJlZCB0byBiZSBpbmNsdWRlZCBmb3IgZ2V0dGluZyBkZXZfdAorZGVmaW5pdGlvbi4gVGhpcyBpc3N1ZSBoYXBwZW5zIG9uIG11c2wgQyBsaWJyYXJ5LCBpdCBpcyBoaWRkZW4KK29uIGdsaWJjIHNpbmNlIHN5cy90eXBlcy5oIGlzIGluY2x1ZGVkIHRocm91Z2ggYW5vdGhlcgorc3lzdGVtIGhlYWRlcnMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaCBiL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmgKK2luZGV4IDBlZjhlODQuLjJlZGE5N2UgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCisrKysgYi9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCitAQCAtNDEsNiArNDEsNyBAQAorICNpbmNsdWRlICJzdmdhX3dpbnN5cy5oIgorICNpbmNsdWRlICJwaXBlYnVmZmVyL3BiX2J1ZmZlcl9mZW5jZWQuaCIKKyAjaW5jbHVkZSA8b3Mvb3NfdGhyZWFkLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNkZWZpbmUgVk1XX0dNUl9QT09MX1NJWkUgKDE2KjEwMjQqMTAyNCkKKyAjZGVmaW5lIFZNV19RVUVSWV9QT09MX1NJWkUgKDgxOTIpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1nYWxsaXZtLUZpeC1idWlsZC1hZ2FpbnN0LUxMVk0tU1ZOLXIzMDI1ODkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1nYWxsaXZtLUZpeC1idWlsZC1hZ2FpbnN0LUxMVk0tU1ZOLXIzMDI1ODkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4Y2FlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWdhbGxpdm0tRml4LWJ1aWxkLWFnYWluc3QtTExWTS1TVk4tcjMwMjU4OS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGEwMmEwZGZkYTI3MTJkMzBhZDYyYjhmMDQyMWVjN2I4MjQ0YmEyY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/TWljaGVsPTIwRD1DMz1BNG56ZXI/PSA8bWljaGVsLmRhZW56ZXJAYW1kLmNvbT4KK0RhdGU6IFdlZCwgMTAgTWF5IDIwMTcgMTc6MjY6MDcgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGdhbGxpdm06IEZpeCBidWlsZCBhZ2FpbnN0IExMVk0gU1ZOID49IHIzMDI1ODkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworZGVyZWdpc3RlckVIRnJhbWVzIGRvZXNuJ3QgdGFrZSBhbnkgcGFyYW1ldGVycyBhbnltb3JlLgorCitSZXZpZXdlZC1ieTogVmVkcmFuIE1pbGV0acSHIDx2ZWRyYW5AbWlsZXRpYy5uZXQ+CitSZXZpZXdlZC1ieTogTWFyZWsgT2zFocOhayA8bWFyZWsub2xzYWtAYW1kLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwIHwgMTIgKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL2F1eGlsaWFyeS9nYWxsaXZtL2xwX2JsZF9taXNjLmNwcCBiL3NyYy9nYWxsaXVtL2F1eGlsaWFyeS9nYWxsaXZtL2xwX2JsZF9taXNjLmNwcAoraW5kZXggMmEzODhjYi4uMGU0YTUzMSAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL2F1eGlsaWFyeS9nYWxsaXZtL2xwX2JsZF9taXNjLmNwcAorKysrIGIvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCitAQCAtMzQyLDE0ICszNDIsMjAgQEAgY2xhc3MgRGVsZWdhdGluZ0pJVE1lbW9yeU1hbmFnZXIgOiBwdWJsaWMgQmFzZU1lbW9yeU1hbmFnZXIgeworICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVIRnJhbWVzKHVpbnQ4X3QgKkFkZHIsIHVpbnQ2NF90IExvYWRBZGRyLCBzaXplX3QgU2l6ZSkgeworICAgICAgICAgIG1ncigpLT5yZWdpc3RlckVIRnJhbWVzKEFkZHIsIExvYWRBZGRyLCBTaXplKTsKKyAgICAgICB9CistICAgICAgdmlydHVhbCB2b2lkIGRlcmVnaXN0ZXJFSEZyYW1lcyh1aW50OF90ICpBZGRyLCB1aW50NjRfdCBMb2FkQWRkciwgc2l6ZV90IFNpemUpIHsKKy0gICAgICAgICBtZ3IoKS0+ZGVyZWdpc3RlckVIRnJhbWVzKEFkZHIsIExvYWRBZGRyLCBTaXplKTsKKy0gICAgICB9CisgI2Vsc2UKKyAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFSEZyYW1lcyhsbHZtOjpTdHJpbmdSZWYgU2VjdGlvbkRhdGEpIHsKKyAgICAgICAgICBtZ3IoKS0+cmVnaXN0ZXJFSEZyYW1lcyhTZWN0aW9uRGF0YSk7CisgICAgICAgfQorICNlbmRpZgorKyNpZiBIQVZFX0xMVk0gPj0gMHgwNTAwCisrICAgICAgdmlydHVhbCB2b2lkIGRlcmVnaXN0ZXJFSEZyYW1lcygpIHsKKysgICAgICAgICBtZ3IoKS0+ZGVyZWdpc3RlckVIRnJhbWVzKCk7CisrICAgICAgfQorKyNlbGlmIEhBVkVfTExWTSA+PSAweDAzMDQKKysgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKHVpbnQ4X3QgKkFkZHIsIHVpbnQ2NF90IExvYWRBZGRyLCBzaXplX3QgU2l6ZSkgeworKyAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOworKyAgICAgIH0KKysjZW5kaWYKKyAgICAgICB2aXJ0dWFsIHZvaWQgKmdldFBvaW50ZXJUb05hbWVkRnVuY3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcgJk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgQWJvcnRPbkZhaWx1cmU9dHJ1ZSkgeworICAgICAgICAgIHJldHVybiBtZ3IoKS0+Z2V0UG9pbnRlclRvTmFtZWRGdW5jdGlvbihOYW1lLCBBYm9ydE9uRmFpbHVyZSk7CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1oYXJkd2FyZS1nbG9hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMDE0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1oYXJkd2FyZS1nbG9hdC5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDAwYmNkNTk5MzEwZGM3ZmNlNGZlMzM2ZmZkODU5MDI0MjkwNTFhMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBJZ29yIEduYXRlbmtvIDxpLmduYXRlbmtvLmJyYWluQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjAgTWFyIDIwMTYgMTM6Mjc6MDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGhhcmR3YXJlIGdsb2F0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KK1NpZ25lZC1vZmYtYnk6IElnb3IgR25hdGVua28gPGkuZ25hdGVua28uYnJhaW5AZ21haWwuY29tPgorLS0tCisgc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYyB8IDcgKysrKysrKworIHNyYy9nYWxsaXVtL2RyaXZlcnMvc29mdHBpcGUvc3Bfc2NyZWVuLmMgfCA3ICsrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvbGx2bXBpcGUvbHBfc2NyZWVuLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jCitpbmRleCA0ZjYxZGU4Li4zYjBlYzc3IDEwMDY0NAorLS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYworKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYworQEAgLTQxMSw2ICs0MTEsMTMgQEAgbGx2bXBpcGVfaXNfZm9ybWF0X3N1cHBvcnRlZCggc3RydWN0IHBpcGVfc2NyZWVuICpfc2NyZWVuLAorICAgIGlmICghZm9ybWF0X2Rlc2MpCisgICAgICAgcmV0dXJuIEZBTFNFOworIAorKyAgIGlmICgoYmluZCAmIFBJUEVfQklORF9SRU5ERVJfVEFSR0VUKSAmJgorKyAgICAgICBmb3JtYXQgIT0gUElQRV9GT1JNQVRfUjlHOUI5RTVfRkxPQVQgJiYKKysgICAgICAgZm9ybWF0ICE9IFBJUEVfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCAmJgorKyAgICAgICB1dGlsX2Zvcm1hdF9pc19mbG9hdChmb3JtYXQpKSB7CisrICAgICAgcmV0dXJuIEZBTFNFOworKyAgIH0KKysKKyAgICBhc3NlcnQodGFyZ2V0ID09IFBJUEVfQlVGRkVSIHx8CisgICAgICAgICAgIHRhcmdldCA9PSBQSVBFX1RFWFRVUkVfMUQgfHwKKyAgICAgICAgICAgdGFyZ2V0ID09IFBJUEVfVEVYVFVSRV8xRF9BUlJBWSB8fAorZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvc29mdHBpcGUvc3Bfc2NyZWVuLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL3NvZnRwaXBlL3NwX3NjcmVlbi5jCitpbmRleCAwMzE2MDJiLi5jMjc5MTIwIDEwMDY0NAorLS0tIGEvc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYworKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYworQEAgLTM1OCw2ICszNTgsMTMgQEAgc29mdHBpcGVfaXNfZm9ybWF0X3N1cHBvcnRlZCggc3RydWN0IHBpcGVfc2NyZWVuICpzY3JlZW4sCisgICAgaWYgKCFmb3JtYXRfZGVzYykKKyAgICAgICByZXR1cm4gRkFMU0U7CisgCisrICAgaWYgKChiaW5kICYgUElQRV9CSU5EX1JFTkRFUl9UQVJHRVQpICYmCisrICAgICAgIGZvcm1hdCAhPSBQSVBFX0ZPUk1BVF9SOUc5QjlFNV9GTE9BVCAmJgorKyAgICAgICBmb3JtYXQgIT0gUElQRV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUICYmCisrICAgICAgIHV0aWxfZm9ybWF0X2lzX2Zsb2F0KGZvcm1hdCkpIHsKKysgICAgICByZXR1cm4gRkFMU0U7CisrICAgfQorKworICAgIGlmIChzYW1wbGVfY291bnQgPiAxKQorICAgICAgIHJldHVybiBGQUxTRTsKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTMzYTFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorV2hlbiBidWlsZGluZyBsbHZtIGZyb20gZ2l0IG9yIHN2biBpdCBlbWJlZHMgdGhlIHN2bi9naXQgcmV2aXNpb24gaW50byBpbnRlcm5hbCB2ZXJzaW9uIHN0cmluZworCiskIC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3JlaTctNjQtYmVjLWxpbnV4L21lc2EvMl8xNy4xLjUtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9sbHZtNS4wL2xsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCis1LjAuMGdpdC05YTVjMzMzMzg4YworCitXZSBuZWVkIHRvIGlnbm9yZSBldmVyeXRoaW5nIGFmdGVyIDUuMC4wIHdoaWNoIGlzIHdoYXQgdGhlIGN1dCBjbWQgaXMgZG9pbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogbWVzYS0xNy4xLjUvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbWVzYS0xNy4xLjUub3JpZy9jb25maWd1cmUuYWMKKysrKyBtZXNhLTE3LjEuNS9jb25maWd1cmUuYWMKK0BAIC05NjcsNyArOTY3LDcgQEAgc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncygpIHsKKyAKKyBsbHZtX3NldF9lbnZpcm9ubWVudF92YXJpYWJsZXMoKSB7CisgICAgIGlmIHRlc3QgIngkTExWTV9DT05GSUciICE9IHhubzsgdGhlbgorLSAgICAgICAgTExWTV9WRVJTSU9OPWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgZWdyZXAgLW8gJ15bWzAtOS5dXSsnYAorKyAgICAgICAgTExWTV9WRVJTSU9OPWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgY3V0IC1jMS01YAorICAgICAgICAgTExWTV9DUFBGTEFHUz1gc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncyAiJExMVk1fQ09ORklHIC0tY3BwZmxhZ3MiYAorICAgICAgICAgTExWTV9JTkNMVURFRElSPWAkTExWTV9DT05GSUcgLS1pbmNsdWRlZGlyYAorICAgICAgICAgTExWTV9MSUJESVI9YCRMTFZNX0NPTkZJRyAtLWxpYmRpcmAKK0BAIC0yNTYwLDcgKzI1NjAsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9sbHZtIiA9IHh5ZXM7IHRoZW4KKyAgICAgZG5sIChTZWUgaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD02ODIzKQorICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9sbHZtX3NoYXJlZF9saWJzIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgIGRubCBXZSBjYW4ndCB1c2UgJExMVk1fVkVSU0lPTiBiZWNhdXNlIGl0IGhhcyAnc3ZuJyBzdHJpcHBlZCBvdXQsCistICAgICAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbmAKKysgICAgICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9ufGN1dCAtYzEtNWAKKyAgICAgICAgIEFTX0lGKFt0ZXN0IC1mICIkTExWTV9MSUJESVIvbGliJExMVk1fU09fTkFNRS4kSU1QX0xJQl9FWFQiXSwgW2xsdm1faGF2ZV9vbmVfc289eWVzXSkKKyAKKyAgICAgICAgIGlmIHRlc3QgIngkbGx2bV9oYXZlX29uZV9zbyIgPSB4eWVzOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3Z1bGthbi1ta2Rpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWVlNWVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3Z1bGthbi1ta2Rpci5wYXRjaApAQCAtMCwwICsxLDM3IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBjNzg5NzlmZDk1YTFjNGY3MzJmN2U2ZWRmMGYzMmM1MjRlNTk1NWI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTc6MTA6MDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbTogY3JlYXRlIHRhcmdldCBkaXJlY3RvcmllcyB3aGVuCisgcmVxdWlyZWQKKworSW4gb3V0LW9mLXRyZWUgYnVpbGRzIHNyYy9pbnRlbC92dWxrYW4gd29uJ3QgZXhpc3QsIHNvIGFsd2F5cyBjcmVhdGUgaXQgYmVmb3JlCit3cml0aW5nIGludG8gaXQuCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CistLS0KKyBzcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0gYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCitpbmRleCAzODU3YTVkYzYyLi4yNmU5Y2Q0MTBjIDEwMDY0NAorLS0tIGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorKysrIGIvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorQEAgLTQ0LDExICs0NCwxMyBAQCBFWFRSQV9ESVNUICs9IFwKKyAJdnVsa2FuL1RPRE8KKyAKKyB2dWxrYW4vZGV2X2ljZC5qc29uIDogdnVsa2FuL2Rldl9pY2QuanNvbi5pbgorKwkkKE1LRElSX0dFTikKKyAJJChBTV9WX0dFTikgJChTRUQpIFwKKyAJCS1lICJzI0BidWlsZF9saWJkaXJAIyR7YWJzX3RvcF9idWlsZGRpcn0vJHtMSUJfRElSfSMiIFwKKyAJCTwgJChzcmNkaXIpL3Z1bGthbi9kZXZfaWNkLmpzb24uaW4gPiAkQAorIAorIHZ1bGthbi9pbnRlbF9pY2QuQGhvc3RfY3B1QC5qc29uIDogdnVsa2FuL2ludGVsX2ljZC5qc29uLmluCisrCSQoTUtESVJfR0VOKQorIAkkKEFNX1ZfR0VOKSAkKFNFRCkgXAorIAkJLWUgInMjQGluc3RhbGxfbGliZGlyQCMke2xpYmRpcn0jIiBcCisgCQk8ICQoc3JjZGlyKS92dWxrYW4vaW50ZWxfaWNkLmpzb24uaW4gPiAkQAorLS0gCisyLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9saWJnbHVfOS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbGliZ2x1XzkuMC4wLmJiCmluZGV4IDhiOTQ2MTMuLmVlYjg5OGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9saWJnbHVfOS4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2xpYmdsdV85LjAuMC5iYgpAQCAtMTIsNyArMTIsNyBAQAogUEUgPSAiMiIKIFBSID0gIjAiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmZyZWVkZXNrdG9wLm9yZy9wdWIvbWVzYS9nbHUvZ2x1LSR7UFZ9LnRhci5iejIiCitTUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9nbHUvZ2x1LSR7UFZ9LnRhci5iejIiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiZTkyNDkxMzJmZjQ5Mjc1NDYxY2Y5MjAzOTA4MzAzMCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZjdhZDBkMzc5YTcyMmZjYmQzMDNhYTU2NTBjNmQ3ZDU1NDRmZGU4MzE5NmI0MmE3M2QxMTkzNTY4YTRkZjEyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3NfOC4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjMuMC5iYgppbmRleCBlNDNiOWVmLi5iYWUzYjE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjMuMC5iYgpAQCAtOSw3ICs5LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy94ZGVtb3MvZ2x4Z2VhcnMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT05MTQyMjU3ODU0NTBlZmY2NDRhODZjODcxZDNhZTAwZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMveGRlbW9zL2dseGRlbW8uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTg7bWQ1PWIwMWQ1YWIxYWVlOTRkMzViN2VmYWEyZWY0OGUxYTA2IgogCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5mcmVlZGVza3RvcC5vcmcvcHViL21lc2EvZGVtb3MvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvZGVtb3MvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNhLWRlbW9zLUFkZC1taXNzaW5nLWRhdGEtZmlsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtQWxsb3ctdG8tZGlzYWJsZS1kZW1vcy13aGljaC1yZXF1aXJlLUdMRVctLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDQtVXNlLURFTU9TX0RBVEFfRElSLXRvLWxvY2F0ZS1kYXRhLWZpbGVzLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM2MDRmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIG1lc2FfJHtQVn0uYmIKLQotU1VNTUFSWSArPSAiIChPcGVuR0wgb25seSwgbm8gRUdML0dMRVMpIgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9tZXNhOiIKLQotUFJPVklERVMgPSAidmlydHVhbC9saWJnbCB2aXJ0dWFsL21lc2EiCi0KLVMgPSAiJHtXT1JLRElSfS9tZXNhLSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiZHJpICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLQotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMyNjdlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjEuNy5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgbWVzYV8ke1BWfS5iYgorCitTVU1NQVJZICs9ICIgKE9wZW5HTCBvbmx5LCBubyBFR0wvR0xFUykiCisKK1BST1ZJREVTID0gInZpcnR1YWwvbGliZ2wgdmlydHVhbC9tZXNhIgorCitTID0gIiR7V09SS0RJUn0vbWVzYS0ke1BWfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCmluZGV4IDI1Y2JmNjMuLjRmMzFlZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKQEAgLTEwLDQ3ICsxMCw2NCBAQAogQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgogU0VDVElPTiA9ICJ4MTEiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5odG1sO21kNT04OTlmYmU3ZTQyZDQ5NGM3YzhjMTU5YzcwMDE2OTNkNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5odG1sO21kNT03MjVmOTkxYTFjYzMyMmFhN2EwY2QzYTIwMTY2MjFjNCIKIAogUEUgPSAiMiIKIAotREVQRU5EUyA9ICJleHBhdCBtYWtlZGVwZW5kLW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCi0KK0RFUEVORFMgPSAiZXhwYXQgbWFrZWRlcGVuZC1uYXRpdmUgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGxpYnhtbDItbmF0aXZlIHpsaWIgY2hycGF0aC1yZXBsYWNlbWVudC1uYXRpdmUiCitFWFRSQU5BVElWRVBBVEggKz0gImNocnBhdGgtbmF0aXZlIgogUFJPVklERVMgPSAidmlydHVhbC9saWJnbCB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wgdmlydHVhbC9tZXNhIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIHZ1bGthbiIKIAotZXhwb3J0IExMVk1fQ09ORklHID0gIiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2xsdm0tY29uZmlnIgotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZC1nbGFwaSIKK1BMQVRGT1JNUyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICd4MTEgd2F5bGFuZCcsIGQpfSBcCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYm0nLCAnZHJtJywgJycsIGQpfSIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gImdibSBlZ2wgZ2xlcyBkcmkgXAotCQkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSBcCi0JCSIKK2V4cG9ydCBMTFZNX0NPTkZJRyA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vbGx2bS1jb25maWcke01FU0FfTExWTV9SRUxFQVNFfSIKK2V4cG9ydCBZT0NUT19BTFRFUk5BVEVfRVhFX1BBVEggPSAiJHtTVEFHSU5HX0xJQkRJUn0vbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9L2xsdm0tY29uZmlnIgorRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZC1nbGFwaSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW9wZW5jbCBcCisgICAgICAgICAgICAgICAgLS13aXRoLWxsdm0tcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9L2xsdm0ke01FU0FfTExWTV9SRUxFQVNFfSBcCisgICAgICAgICAgICAgICAgLS13aXRoLXBsYXRmb3Jtcz0nJHtQTEFURk9STVN9JyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgdnVsa2FuJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB2dWxrYW4nLCAnZHJpMycsICcnLCBkKX0gXAorCQkgICAiCisKKyMgImdibSIgcmVxdWlyZXMgImRyaSIsICJvcGVuZ2wiCiBQQUNLQUdFQ09ORklHW2dibV0gPSAiLS1lbmFibGUtZ2JtLC0tZGlzYWJsZS1nYm0iCiAKIFgxMV9ERVBTID0gInhmODZkcmlwcm90byBnbHByb3RvIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHhmODZ2bSBsaWJ4ZGFtYWdlIGxpYnhmaXhlcyIKKyMgIngxMSIgcmVxdWlyZXMgIm9wZW5nbCIKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgtdGxzLC0tZGlzYWJsZS1nbHgsJHtYMTFfREVQU30iCiBQQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICIsLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgbGliZHJtIgogCiBEUklEUklWRVJTID0gInN3cmFzdCIKIERSSURSSVZFUlNfYXBwZW5kX3g4NiA9ICIscmFkZW9uLHIyMDAsbm91dmVhdSxpOTY1LGk5MTUiCiBEUklEUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiLHJhZGVvbixyMjAwLG5vdXZlYXUsaTk2NSxpOTE1IgorIyAiZHJpIiByZXF1aXJlcyAib3BlbmdsIgogUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSAtLXdpdGgtZHJpLWRyaXZlcnM9JHtEUklEUklWRVJTfSwgLS1kaXNhYmxlLWRyaSwgZHJpMnByb3RvIGxpYmRybSIKIFBBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywgLS1kaXNhYmxlLWRyaTMsIGRyaTNwcm90byBwcmVzZW50cHJvdG8gbGlieHNobWZlbmNlIgogCiAjIFZ1bGthbiBkcml2ZXJzIG5lZWQgZHJpMyBlbmFibGVkCiAjIHJhZGVvbiBjb3VsZCBiZSBlbmFibGVkIGFzIHdlbGwgYnV0IHJlcXVpcmVzIGdhbGxpdW0tbGx2bSB3aXRoIGxsdm0gPj0gMy45Ci1QQUNLQUdFQ09ORklHW3Z1bGthbl0gPSAiLS13aXRoLXZ1bGthbi1kcml2ZXJzPWludGVsLCAtLXdpdGhvdXQtdnVsa2FuLWRyaXZlcnMiCitWVUxLQU5fRFJJVkVSUyA9ICIiCitWVUxLQU5fRFJJVkVSU19hcHBlbmRfeDg2ID0gIixpbnRlbCIKK1ZVTEtBTl9EUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiLGludGVsIgorUEFDS0FHRUNPTkZJR1t2dWxrYW5dID0gIi0td2l0aC12dWxrYW4tZHJpdmVycz0ke1ZVTEtBTl9EUklWRVJTfSwgLS13aXRob3V0LXZ1bGthbi1kcml2ZXJzIgogCitQQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLS1lbmFibGUtb3BlbmdsLCAtLWRpc2FibGUtb3BlbmdsIgorCisjICJnbGVzIiByZXF1aXJlcyAib3BlbmdsIgogUEFDS0FHRUNPTkZJR1tnbGVzXSA9ICItLWVuYWJsZS1nbGVzMSAtLWVuYWJsZS1nbGVzMiwgLS1kaXNhYmxlLWdsZXMxIC0tZGlzYWJsZS1nbGVzMiIKIAotRUdMX1BMQVRGT1JNUyAgPSAiZHJtIgotRUdMX1BMQVRGT1JNUyAuPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnLHgxMScsICcnLCBkKX0iCi1FR0xfUExBVEZPUk1TIC49IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3dheWxhbmQnLCAnLHdheWxhbmQnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLXdpdGgtZWdsLXBsYXRmb3Jtcz0ke0VHTF9QTEFURk9STVN9LCAtLWRpc2FibGUtZWdsIgorIyAiZWdsIiByZXF1aXJlcyAiZHJpIiwgIm9wZW5nbCIKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsIC0tZGlzYWJsZS1lZ2wiCiAKIFBBQ0tBR0VDT05GSUdbZXRuYXZpdl0gPSAiIgogUEFDS0FHRUNPTkZJR1tpbXhdID0gIiIKQEAgLTY1LDkgKzgyLDkgQEAKIEdBTExJVU1EUklWRVJTX2FwcGVuZF94ODYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2FsbGl1bS1sbHZtJywgJywke0dBTExJVU1EUklWRVJTX0xMVk19JywgJycsIGQpfSIKIEdBTExJVU1EUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2FsbGl1bS1sbHZtJywgJywke0dBTExJVU1EUklWRVJTX0xMVk19JywgJycsIGQpfSIKICMga2VlcCAtLXdpdGgtZ2FsbGl1bS1kcml2ZXJzIHNlcGFyYXRlLCBiZWNhdXNlIHdoZW4gb25seSBvbmUgb2YgZ2FsbGl1bSB2ZXJzaW9ucyBpcyBlbmFibGVkLCBvdGhlciAyIHdlcmUgYWRkaW5nIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMKLVBBQ0tBR0VDT05GSUdbZ2FsbGl1bV0gICAgICA9ICItLXdpdGgtZ2FsbGl1bS1kcml2ZXJzPSR7R0FMTElVTURSSVZFUlN9LCAtLXdpdGhvdXQtZ2FsbGl1bS1kcml2ZXJzIgotTUVTQV9MTFZNX1JFTEVBU0UgPz0gIjMuMyIKLVBBQ0tBR0VDT05GSUdbZ2FsbGl1bS1sbHZtXSA9ICItLWVuYWJsZS1nYWxsaXVtLWxsdm0gLS1lbmFibGUtbGx2bS1zaGFyZWQtbGlicywgLS1kaXNhYmxlLWdhbGxpdW0tbGx2bSwgbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IFwKK1BBQ0tBR0VDT05GSUdbZ2FsbGl1bV0gICAgICA9ICItLWVuYWJsZS10ZXh0dXJlLWZsb2F0IC0td2l0aC1nYWxsaXVtLWRyaXZlcnM9JHtHQUxMSVVNRFJJVkVSU30sIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMiCitNRVNBX0xMVk1fUkVMRUFTRSA/PSAiNS4wIgorUEFDS0FHRUNPTkZJR1tnYWxsaXVtLWxsdm1dID0gIi0tZW5hYmxlLWxsdm0gLS1lbmFibGUtbGx2bS1zaGFyZWQtbGlicywgLS1kaXNhYmxlLWxsdm0sIGxsdm0ke01FU0FfTExWTV9SRUxFQVNFfSBsbHZtLW5hdGl2ZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAJ2VsZnV0aWxzJyBpZiAke0dBTExJVU1EUklWRVJTX0xMVk0zM19FTkFCTEVEfSBlbHNlICcnfSIKIGV4cG9ydCBXQU5UX0xMVk1fUkVMRUFTRSA9ICIke01FU0FfTExWTV9SRUxFQVNFfSIKIFBBQ0tBR0VDT05GSUdbeGFdICA9ICItLWVuYWJsZS14YSwgLS1kaXNhYmxlLXhhIgpAQCAtNzUsOSArOTIsMTMgQEAKIE9TTUVTQSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYWxsaXVtJywgJ2dhbGxpdW0tb3NtZXNhJywgJ29zbWVzYScsIGQpfSIKIFBBQ0tBR0VDT05GSUdbb3NtZXNhXSA9ICItLWVuYWJsZS0ke09TTUVTQX0sLS1kaXNhYmxlLSR7T1NNRVNBfSIKIAorUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKKwogIyBsbHZtcGlwZSBpcyBzbG93IGlmIGNvbXBpbGVkIHdpdGggLWZvbWl0LWZyYW1lLXBvaW50ZXIgKGUuZy4gLU8yKQogRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kID0gIiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciIKIAorQ0ZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLURNSVNTSU5HXzY0QklUX0FUT01JQ1MiCisKICMgTXVsdGlwbGUgdmlydHVhbC9nbCBwcm92aWRlcnMgYmVpbmcgYnVpbHQgYnJlYWtzIHN0YWdpbmcKIEVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgogCkBAIC0xMDYsOSArMTI3LDEwIEBACiAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9lZ2wvKi5sYQogICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vZ2FsbGl1bS1waXBlLyoubGEKICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2dibS8qLmxhCi0gICAgCisKICAgICAjIGl0IHdhcyBwYWNrYWdlZCBpbiBsaWJkcmljb3JlOS4xLjMtMSBhbmQgcHJldmVudGluZyB1cGdyYWRlcyB3aGVuIGRlYmlhbi5iYmNsYXNzIHdhcyB1c2VkIAogICAgIHJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2RyaXJjCisgICAgY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtsaWJkaXJ9L2RyaS8qX2RyaS5zbyB8fCB0cnVlCiB9CiAKICMgRm9yIHRoZSBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIE9wZW5HTCBpbnRlcmZhY2VzLCBpbmplY3QgdmFyaWFibGVzIHNvIHRoYXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY4OWU4Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZnJlZWRlc2t0b3Aub3JnL3B1Yi9tZXNhL21lc2EtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjgwOGU5MmI4OTNkNDEyZmJkNjUxMGUxZDE2ZjVjNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmOGYxOTFmOTA5ZTAxZTY1ZGUzOGQ1YmRlYTVmYjA1N2YyMTY0OWEzYWVkMjA5NDhiZTAyMzQ4ZTc3YTY4OWQ0IgotCi0jYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKLSNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5Y2ZjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIKQEAgLTAsMCArMSwyNSBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Z1bGthbi1ta2Rpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTQwYmI0MjhhMjYzYmQyOGNiZjY0NzhkYWU0NWIyMDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjlmNDcyYTg3NGIxMTIyNDA0ZmEwYmQxM2UyZDZiZjg3ZWIzYjlhZDljMjFkMmYzOTg3MmE5NmQ4M2Q5ZTVmNSIKKworI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCisjbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAzNDUxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi1TUkNSRVYgPSAiZWEwZDFmNTc1YzIxNGMwOWJhM2RmMTI2NDRhOTYwZTg2ZTAzMTc2NiIKLVBWID0gIjEwLjUuNCtnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQvbWVzYS9tZXNhO2JyYW5jaD0xMC41IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTICs9ICJweXRob24tbWFrby1uYXRpdmUiCi0KLWluaGVyaXQgcHl0aG9ubmF0aXZlCi0KLSNiZWNhdXNlIHdlIGNhbm5vdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYWxsIGFwcHMgd2lsbCB1c2UgcGtnY29uZmlnLAotI21ha2UgZWdscGxhdGZvcm0uaCBpbmRlcGVuZGVudCBvZiBNRVNBX0VHTF9OT19YMTFfSEVBREVSCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgJ3MvXiNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSQvI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAotICAgIGZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjU5YTgyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJGcmFtZXdvcmsgZm9yIGxheW91dCBhbmQgcmVuZGVyaW5nIG9mIGludGVybmF0aW9uYWxpemVkIHRleHQiCi1ERVNDUklQVElPTiA9ICJQYW5nbyBpcyBhIGxpYnJhcnkgZm9yIGxheWluZyBvdXQgYW5kIHJlbmRlcmluZyBvZiB0ZXh0LCBcCi13aXRoIGFuIGVtcGhhc2lzIG9uIGludGVybmF0aW9uYWxpemF0aW9uLiBQYW5nbyBjYW4gYmUgdXNlZCBhbnl3aGVyZSBcCi10aGF0IHRleHQgbGF5b3V0IGlzIG5lZWRlZCwgdGhvdWdoIG1vc3Qgb2YgdGhlIHdvcmsgb24gUGFuZ28gc28gZmFyIGhhcyBcCi1iZWVuIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIEdUSysgd2lkZ2V0IHRvb2xraXQuIFBhbmdvIGZvcm1zIHRoZSBcCi1jb3JlIG9mIHRleHQgYW5kIGZvbnQgaGFuZGxpbmcgZm9yIEdUSystMi54LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGFuZ28ub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoIFwKLSIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjE3YzI2NzIwZjVhODYyYTEyZjdlMTc0NWUyZjFkOTY2IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYWJiYThiNWNlNzI4NTIwYzNhMGYxNTM1ZWFiMTllYWMzYzE0YWVlZjdmYWE1YWRlZDkwMDE3Y2VhYzI3MTFkMyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZm9udGNvbmZpZyBmcmVldHlwZSB2aXJ0dWFsL2xpYmljb252IGNhaXJvIGhhcmZidXp6IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14ZnQsLS13aXRob3V0LXhmdCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZnQiCi0KLUVYVFJBX0FVVE9SRUNPTkYgPSAiIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLQkgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyBcCi0JICAgICAgICAiCi0KLUxFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCi1MSUJWID0gIjEuOC4wIgotCi0jIFRoaXMgYmluYXJ5IG5lZWRzIHRvIGJlIGNvbXBpbGVkIGZvciB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuICBUaGlzIGlzbid0IHByZXR0eSEKLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQltYWtlIENDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIiIExERkxBR1M9IiR7QlVJTERfTERGTEFHU30iIEFNX0NQUEZMQUdTPSIkKHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGdsaWItMi4wKSIgZ2VuX2FsbF91bmljb2RlX0xEQUREPSIkKHBrZy1jb25maWctbmF0aXZlIC0tbGlicyBnbGliLTIuMCkiIC1DICR7Qn0vdGVzdHMgZ2VuLWFsbC11bmljb2RlCi0JZmkKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhbmdvLyR7TElCVn0vbW9kdWxlcy8qLmxhIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZXJhdGlvbi1mb250cyBjYW50YXJlbGwtZm9udHMiCi0KLVJQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCi0gICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWMzZDJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJGcmFtZXdvcmsgZm9yIGxheW91dCBhbmQgcmVuZGVyaW5nIG9mIGludGVybmF0aW9uYWxpemVkIHRleHQiCitERVNDUklQVElPTiA9ICJQYW5nbyBpcyBhIGxpYnJhcnkgZm9yIGxheWluZyBvdXQgYW5kIHJlbmRlcmluZyBvZiB0ZXh0LCBcCit3aXRoIGFuIGVtcGhhc2lzIG9uIGludGVybmF0aW9uYWxpemF0aW9uLiBQYW5nbyBjYW4gYmUgdXNlZCBhbnl3aGVyZSBcCit0aGF0IHRleHQgbGF5b3V0IGlzIG5lZWRlZCwgdGhvdWdoIG1vc3Qgb2YgdGhlIHdvcmsgb24gUGFuZ28gc28gZmFyIGhhcyBcCitiZWVuIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIEdUSysgd2lkZ2V0IHRvb2xraXQuIFBhbmdvIGZvcm1zIHRoZSBcCitjb3JlIG9mIHRleHQgYW5kIGZvbnQgaGFuZGxpbmcgZm9yIEdUSystMi54LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGFuZ28ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoIFwKKyIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjUwN2M2NzQ2ZmJmNTNmYzlkNDhjNTc3ZjFlMjY1ZGUzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiY2ExNTJiNzM4M2ExZTlmN2ZkNzRhZTk2MDIzZGM2NzcwZGM1MDQzNDE0NzkzYmZlNzY4ZmYwNmI2NzU5ZTU3MyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZm9udGNvbmZpZyBmcmVldHlwZSB2aXJ0dWFsL2xpYmljb252IGNhaXJvIGhhcmZidXp6IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14ZnQsLS13aXRob3V0LXhmdCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZnQiCisKK0VYVFJBX0FVVE9SRUNPTkYgPSAiIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKwkgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyBcCisJICAgICAgICAiCisKK0xFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCitMSUJWID0gIjEuOC4wIgorCisjIFRoaXMgYmluYXJ5IG5lZWRzIHRvIGJlIGNvbXBpbGVkIGZvciB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuICBUaGlzIGlzbid0IHByZXR0eSEKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQltYWtlIENDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIiIExERkxBR1M9IiR7QlVJTERfTERGTEFHU30iIEFNX0NQUEZMQUdTPSIkKHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGdsaWItMi4wKSIgZ2VuX2FsbF91bmljb2RlX0xEQUREPSIkKHBrZy1jb25maWctbmF0aXZlIC0tbGlicyBnbGliLTIuMCkiIC1DICR7Qn0vdGVzdHMgZ2VuLWFsbC11bmljb2RlCisJZmkKK30KKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhbmdvLyR7TElCVn0vbW9kdWxlcy8qLmxhIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZXJhdGlvbi1mb250cyBjYW50YXJlbGwtZm9udHMiCisKK1JQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCisgICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtQ01ha2UtZGVmaW5lLUdCTV9CT19NQVAtb25seS13aGVuLXN5bWJvbC1pcy1mb3VuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLUNNYWtlLWRlZmluZS1HQk1fQk9fTUFQLW9ubHktd2hlbi1zeW1ib2wtaXMtZm91bmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNjM0MjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtQ01ha2UtZGVmaW5lLUdCTV9CT19NQVAtb25seS13aGVuLXN5bWJvbC1pcy1mb3VuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gNDc2OTdhZWUwNWExMTI0MjJhY2YyMDM5ODIwODVlN2IzZTZjMDViMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9EYW5pZWw9MjBEPUMzPUFEYXo/PSA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLURhdGU6IFRodSwgNCBNYXkgMjAxNyAwMDo1NzozOSAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvNF0gQ01ha2U6IGRlZmluZSBHQk1fQk9fTUFQIG9ubHkgd2hlbiBzeW1ib2wgaXMgZm91bmQKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotZ2JtX2JvX21hcCgpIGFuZCBfdW5tYXAoKSBoYXZlIGJlZW4gYWRkZWQgcmVjZW50bHkgdG8gTWVzYSwKLWFuZCB0aGlzIHVwZGF0ZSBtYXkgbm90IGhhdmUgcmVhY2hlZCBhbGwgaW1wbGVtZW50YXRpb25zIG9mCi1HQk0sIHN1Y2ggYXMgdGhlIG9uZSBwcm92aWRlZCBieSBNYWxpIHI2LCB3aGVyZSBzYWlkCi1kZWZpbml0aW9ucyBjYW4gYmUgZm91bmQgaW4gdGhlIGhlYWRlciBmaWxlIGJ1dCBub3QgaW4gdGhlCi1saWJyYXJ5IGl0c2VsZi4gVGhpcyBsZWFkcyB0byBlcnJvcnMgbGlrZSB0aGUgZm9sbG93aW5nIHdoZW4KLWxpbmtpbmc6Ci0gIC4uLy4uLy4uLy4uL2xpYi9saWJwaWdsaXR1dGlsX2dsLnNvLjA6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdibV9ib191bm1hcCcKLSAgLi4vLi4vLi4vLi4vbGliL2xpYnBpZ2xpdHV0aWxfZ2wuc28uMDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2JtX2JvX21hcCcKLSAgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0gIG1ha2VbMl06ICoqKiBbYmluL3BvaW50LXNwcml0ZV0gRXJyb3IgMQotCi1JbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGhlYWRlciBmaWxlLCBhY3R1YWxseSB0cnkgdG8gbGluawotdXNpbmcgdGhhdCBzeW1ib2wgdG8gZGV0ZXJtaW5lIGlmIFBJR0xJVF9IQVNfR0JNX0JPX01BUAotc2hvdWxkIGJlIGRlZmluZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtwaWdsaXRAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXQotCi1TaWduZWQtb2ZmLWJ5OiBEYW5pZWwgRMOtYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+Ci1SZXZpZXdlZC1ieTogSmFuIFZlc2VseSA8amFuLnZlc2VseUBydXRnZXJzLmVkdT4KLVJldmlld2VkLWJ5OiBEeWxhbiBCYWtlciA8ZHlsYW5AcG53YmFrZXJzLmNvbT4KLS0tLQotIENNYWtlTGlzdHMudHh0IHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBhNGZmOTllLi5jYzI2ZmE4IDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTQxLDggKzE0MSw5IEBAIElGKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkxpbnV4IikKLSAJaWYoR0JNX0ZPVU5EKQotIAkJc2V0KFBJR0xJVF9IQVNfR0JNIFRydWUpCi0gCQlhZGRfZGVmaW5pdGlvbnMoLURQSUdMSVRfSEFTX0dCTSkKLS0JCWlmIChHQk1fVkVSU0lPTiBWRVJTSU9OX0VRVUFMICIxMi4xIiBPUiBHQk1fVkVSU0lPTiBWRVJTSU9OX0dSRUFURVIgIjEyLjEiKQotLQkJCXNldChQSUdMSVRfSEFTX0dCTV9CT19NQVAgVHJ1ZSkKLSsJCXNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgJHtDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVN9ICR7R0JNX0xJQlJBUklFU30pCi0rCQlDSEVDS19GVU5DVElPTl9FWElTVFMoZ2JtX2JvX21hcCBQSUdMSVRfSEFTX0dCTV9CT19NQVApCi0rCQlpZiAoUElHTElUX0hBU19HQk1fQk9fTUFQKQotIAkJCWFkZF9kZWZpbml0aW9ucygtRFBJR0xJVF9IQVNfR0JNX0JPX01BUCkKLSAJCWVuZGlmKCkKLSAJZW5kaWYoR0JNX0ZPVU5EKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMi11dGlsLWVnbC1Ib25vdXItU3VyZmFjZWxlc3MtTUVTQS1pbi1nZXRfZGVmYXVsdF9kaXNwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDItdXRpbC1lZ2wtSG9ub3VyLVN1cmZhY2VsZXNzLU1FU0EtaW4tZ2V0X2RlZmF1bHRfZGlzcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNhYTFiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMi11dGlsLWVnbC1Ib25vdXItU3VyZmFjZWxlc3MtTUVTQS1pbi1nZXRfZGVmYXVsdF9kaXNwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBhNjYwOGYyMThiNTAyM2NlZjM2YjNkZTVlYzNjNWYwMGIwMjExZDFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIERpYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDE3IE1heSAyMDE3IDE4OjAwOjE1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSB1dGlsL2VnbDogSG9ub3VyIFN1cmZhY2VsZXNzIE1FU0EgaW4gZ2V0X2RlZmF1bHRfZGlzcGxheQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgRUdMX01FU0FfcGxhdGZvcm1fc3VyZmFjZWxlc3MgZXh0ZW5zaW9uIHdhcyBpbnRyb2R1Y2VkIG5vdCB0b28gbG9uZwotYWdvLiBBZGQgc3VwcG9ydCBmb3IgaXQgb3VyIGhlbHBlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCwgc2luY2UgZ2l0IDdiNzQ2MDIuCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLVJldmlld2VkLWJ5OiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xsYWJvcmEuY29tPgotLS0tCi0gdGVzdHMvdXRpbC9waWdsaXQtdXRpbC1lZ2wuYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL3V0aWwvcGlnbGl0LXV0aWwtZWdsLmMgYi90ZXN0cy91dGlsL3BpZ2xpdC11dGlsLWVnbC5jCi1pbmRleCAxMDZjNzM1Li4zODlmZTEyIDEwMDY0NAotLS0tIGEvdGVzdHMvdXRpbC9waWdsaXQtdXRpbC1lZ2wuYwotKysrIGIvdGVzdHMvdXRpbC9waWdsaXQtdXRpbC1lZ2wuYwotQEAgLTg1LDYgKzg1LDcgQEAgcGlnbGl0X2VnbF9nZXRfZGVmYXVsdF9kaXNwbGF5KEVHTGVudW0gcGxhdGZvcm0pCi0gCXN0YXRpYyBib29sIGhhc194MTEgPSBmYWxzZTsKLSAJc3RhdGljIGJvb2wgaGFzX3dheWxhbmQgPSBmYWxzZTsKLSAJc3RhdGljIGJvb2wgaGFzX2dibSA9IGZhbHNlOwotKwlzdGF0aWMgYm9vbCBoYXNfc3VyZmFjZWxlc3NfbWVzYSA9IGZhbHNlOwotIAotIAlzdGF0aWMgRUdMRGlzcGxheSAoKnBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQpKEVHTGVudW0gcGxhdGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwbGF5LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKLSAKLUBAIC05OSw2ICsxMDAsNyBAQCBwaWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoRUdMZW51bSBwbGF0Zm9ybSkKLSAJCWhhc194MTEgPSBwaWdsaXRfaXNfZWdsX2V4dGVuc2lvbl9zdXBwb3J0ZWQoRUdMX05PX0RJU1BMQVksICJFR0xfRVhUX3BsYXRmb3JtX3gxMSIpOwotIAkJaGFzX3dheWxhbmQgPSBwaWdsaXRfaXNfZWdsX2V4dGVuc2lvbl9zdXBwb3J0ZWQoRUdMX05PX0RJU1BMQVksICJFR0xfRVhUX3BsYXRmb3JtX3dheWxhbmQiKTsKLSAJCWhhc19nYm0gPSBwaWdsaXRfaXNfZWdsX2V4dGVuc2lvbl9zdXBwb3J0ZWQoRUdMX05PX0RJU1BMQVksICJFR0xfRVhUX3BsYXRmb3JtX2dibSIpOwotKwkJaGFzX3N1cmZhY2VsZXNzX21lc2EgPSBwaWdsaXRfaXNfZWdsX2V4dGVuc2lvbl9zdXBwb3J0ZWQoRUdMX05PX0RJU1BMQVksICJFR0xfTUVTQV9wbGF0Zm9ybV9zdXJmYWNlbGVzcyIpOwotIAotIAkJcGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9ICh2b2lkKikgZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCIpOwotIAl9Ci1AQCAtMTIzLDYgKzEyNSwxMSBAQCBwaWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoRUdMZW51bSBwbGF0Zm9ybSkKLSAJCQlyZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0gCQl9Ci0gCQlicmVhazsKLSsJY2FzZSBFR0xfUExBVEZPUk1fU1VSRkFDRUxFU1NfTUVTQToKLSsJCWlmICghaGFzX3N1cmZhY2VsZXNzX21lc2EpIHsKLSsJCQlyZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0rCQl9Ci0rCQlicmVhazsKLSAJZGVmYXVsdDoKLSAJCWZwcmludGYoc3RkZXJyLCAiJXM6IHVucmVjb2duaXplZCBwbGF0Zm9ybSAlI3hcbiIsIF9fZnVuY19fLCBwbGF0Zm9ybSk7Ci0gCQlyZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAzLWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLURvbi10LXVzZS1lZ2xHZXRQbGF0Zm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMy1lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy1Eb24tdC11c2UtZWdsR2V0UGxhdGZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjI0ZGMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAzLWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLURvbi10LXVzZS1lZ2xHZXRQbGF0Zm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGMwZGM0MzBiOGY1ZGVlYWNkYjExY2QxODgxOTVlMTZmNTEyYWYyMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgRGlheiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLURhdGU6IFdlZCwgMTcgTWF5IDIwMTcgMTg6MDA6MTYgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIGVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzOiBEb24ndCB1c2UKLSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXkgZGlyZWN0bHkKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhlIGVudHJ5IHBvaW50IGlzIG5vdCBndWFyYW50ZWVkIHRvIGV4aXN0LCBzbyB1c2UgdGhlCi1waWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoKSBoZWxwZXIgd2hpY2ggZG9lcyB0aGUgY29ycmVjdCB0aGluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCwgc2luY2UgZ2l0IDdiNzQ2MDIuCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLVJldmlld2VkLWJ5OiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xsYWJvcmEuY29tPgotLS0tCi0gLi4uL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYyAgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9lZ2wvc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jIGIvdGVzdHMvZWdsL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYwotaW5kZXggM2JiZDZhYS4uODFhMzkxOSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMKLSsrKyBiL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMKLUBAIC0zMSw3ICszMSw3IEBAIHRlc3Rfc2V0dXAoRUdMRGlzcGxheSAqZHB5KQotIAotIAlwaWdsaXRfcmVxdWlyZV9lZ2xfZXh0ZW5zaW9uKEVHTF9OT19ESVNQTEFZLCAiRUdMX01FU0FfcGxhdGZvcm1fc3VyZmFjZWxlc3MiKTsKLSAKLS0JKmRweSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheShFR0xfUExBVEZPUk1fU1VSRkFDRUxFU1NfTUVTQSwgTlVMTCwgTlVMTCk7Ci0rCSpkcHkgPSBwaWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoRUdMX1BMQVRGT1JNX1NVUkZBQ0VMRVNTX01FU0EpOwotIAlpZiAoKmRweSA9PSBFR0xfTk9fRElTUExBWSkgewotIAkJcHJpbnRmKCJmYWlsZWQgdG8gZ2V0IEVHTERpc3BsYXlcbiIpOwotIAkJcGlnbGl0X3JlcG9ydF9yZXN1bHQoUElHTElUX1NLSVApOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwNC1lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy1Vc2UtRVhULWZ1bmN0aW9ucy1mb3ItLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDQtZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MtVXNlLUVYVC1mdW5jdGlvbnMtZm9yLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk1MmFmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwNC1lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy1Vc2UtRVhULWZ1bmN0aW9ucy1mb3ItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSA1N2RlMWZmNjc1OGVjNWVhNGE1MjYzN2YyMzNlM2UzMTUwMDg2MjU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIERpYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDE3IE1heSAyMDE3IDE4OjAwOjE3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBlZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzczogVXNlIEVYVCBmdW5jdGlvbnMgZm9yCi0gc3VyZmFjZXMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhlc2UgRVhUIHN5bWJvbHMgYXJlIGd1YXJhbnRlZWQgdG8gZXhpc3Qgc2luY2UgdGhleSByZXF1aXJlCi1FR0xfRVhUX3BsYXRmb3JtX2Jhc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQsIHNpbmNlIGdpdCA3Yjc0NjAyLgotCi1TaWduZWQtb2ZmLWJ5OiBEYW5pZWwgRMOtYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+Ci1SZXZpZXdlZC1ieTogRW1pbCBWZWxpa292IDxlbWlsLnZlbGlrb3ZAY29sbGFib3JhLmNvbT4KLS0tLQotIC4uLi9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jICAgICAgICAgICAgICAgIHwgMjMgKysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZWdsL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYyBiL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMKLWluZGV4IDgxYTM5MTkuLjI2NGVkNzEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9lZ2wvc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jCi0rKysgYi90ZXN0cy9lZ2wvc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jCi1AQCAtMjQsNiArMjQsMjQgQEAKLSAjaW5jbHVkZSAicGlnbGl0LXV0aWwuaCIKLSAjaW5jbHVkZSAicGlnbGl0LXV0aWwtZWdsLmgiCi0gCi0rLyogRXh0ZW5zaW9uIGZ1bmN0aW9uIHBvaW50ZXJzLgotKyAqCi0rICogVXNlIHByZWZpeCAncGVnbCcgKHBpZ2xpdCBlZ2wpIGluc3RlYWQgb2YgJ2VnbCcgdG8gYXZvaWQgY29sbGlzaW9ucyB3aXRoCi0rICogcHJvdG90eXBlcyBpbiBlZ2xleHQuaC4gKi8KLStFR0xTdXJmYWNlICgqcGVnbENyZWF0ZVBsYXRmb3JtUGl4bWFwU3VyZmFjZUVYVCkoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcgY29uZmlnLAotKwkgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVfcGl4bWFwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKLStFR0xTdXJmYWNlICgqcGVnbENyZWF0ZVBsYXRmb3JtV2luZG93U3VyZmFjZUVYVCkoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcgY29uZmlnLAotKwkgICAgTmF0aXZlV2luZG93VHlwZSBuYXRpdmVfd2luZG93LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKLSsKLStzdGF0aWMgdm9pZAotK2luaXRfZWdsX2V4dGVuc2lvbl9mdW5jcyh2b2lkKQotK3sKLSsJcGVnbENyZWF0ZVBsYXRmb3JtUGl4bWFwU3VyZmFjZUVYVCA9ICh2b2lkKikKLSsJCWVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVQbGF0Zm9ybVBpeG1hcFN1cmZhY2VFWFQiKTsKLSsJcGVnbENyZWF0ZVBsYXRmb3JtV2luZG93U3VyZmFjZUVYVCA9ICh2b2lkKikKLSsJCWVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZhY2VFWFQiKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSB0ZXN0X3NldHVwKEVHTERpc3BsYXkgKmRweSkKLSB7Ci1AQCAtNzIsNyArOTAsNyBAQCB0ZXN0X2NyZWF0ZV93aW5kb3codm9pZCAqdGVzdF9kYXRhKQotIAotIAl0ZXN0X3NldHVwKCZkcHkpOwotIAotLQlzdXJmID0gZWdsQ3JlYXRlUGxhdGZvcm1XaW5kb3dTdXJmYWNlKGRweSwgRUdMX05PX0NPTkZJR19LSFIsCi0rCXN1cmYgPSBwZWdsQ3JlYXRlUGxhdGZvcm1XaW5kb3dTdXJmYWNlRVhUKGRweSwgRUdMX05PX0NPTkZJR19LSFIsCi0gCQkJCQkgICAgICAvKm5hdGl2ZV93aW5kb3cqLyBOVUxMLAotIAkJCQkJICAgICAgLyphdHRyaWJfbGlzdCovIE5VTEwpOwotIAlpZiAoc3VyZikgewotQEAgLTEwMyw3ICsxMjEsNyBAQCB0ZXN0X2NyZWF0ZV9waXhtYXAodm9pZCAqdGVzdF9kYXRhKQotIAotIAl0ZXN0X3NldHVwKCZkcHkpOwotIAotLQlzdXJmID0gZWdsQ3JlYXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlKGRweSwgRUdMX05PX0NPTkZJR19LSFIsCi0rCXN1cmYgPSBwZWdsQ3JlYXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlRVhUKGRweSwgRUdMX05PX0NPTkZJR19LSFIsCi0gCQkJCQkgICAgICAvKm5hdGl2ZV93aW5kb3cqLyBOVUxMLAotIAkJCQkJICAgICAgLyphdHRyaWJfbGlzdCovIE5VTEwpOwotIAlpZiAoc3VyZikgewotQEAgLTIwNSw2ICsyMjMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCXBpZ2xpdF9yZXBvcnRfcmVzdWx0KFBJR0xJVF9GQUlMKTsKLSAJfQotIAotKwlpbml0X2VnbF9leHRlbnNpb25fZnVuY3MoKTsKLSAJcmVzdWx0ID0gcGlnbGl0X3J1bl9zZWxlY3RlZF9zdWJ0ZXN0cyhzdWJ0ZXN0cywgc2VsZWN0ZWRfbmFtZXMsCi0gCQkJCQkgICAgICBudW1fc2VsZWN0ZWQsIHJlc3VsdCk7Ci0gCXBpZ2xpdF9yZXBvcnRfcmVzdWx0KHJlc3VsdCk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCmluZGV4IDJlYTU3NzkuLmQyNzRhOGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgpAQCAtNSwxNCArNSwxMSBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9waWdsaXQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1pbnN0YWxsLWJhc2gtY29tcGxldGlvbnMtaW4tdGhlLXJpZ2h0LXBsYWNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtVXNlLUZFX1VQV0FSRC1vbmx5LWlmLWl0cy1kZWZpbmVkLWluLWZlbnYuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNNYWtlLWRlZmluZS1HQk1fQk9fTUFQLW9ubHktd2hlbi1zeW1ib2wtaXMtZm91bmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi11dGlsLWVnbC1Ib25vdXItU3VyZmFjZWxlc3MtTUVTQS1pbi1nZXRfZGVmYXVsdF9kaXNwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MtRG9uLXQtdXNlLWVnbEdldFBsYXRmby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLVVzZS1FWFQtZnVuY3Rpb25zLWZvci0ucGF0Y2ggXAogICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAotIyBGcm9tIDIwMTctMDItMDYKLVNSQ1JFViA9ICJjYTU4ZWVjMGI5NjU2NTVjN2ViYTU5MmE2MzRjYmY0YWFkZmJjNjc1IgorIyBGcm9tIDIwMTctMDctMDMKK1NSQ1JFViA9ICJjOGY0ZmQ5ZWViMjk4YTJlZjA4NTU5MjdmMjI2MzRmNzk0ZWYzZWZmIgogIyAod2hlbiBQViBnb2VzIGFib3ZlIDEuMCByZW1vdmUgdGhlIHRyYWlsaW5nIHIpCiBQViA9ICIxLjArZ2l0ciR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy9saWJlcmF0aW9uLWZvbnRzXzEuMDQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy9saWJlcmF0aW9uLWZvbnRzXzEuMDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MjEyZTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvbGliZXJhdGlvbi1mb250c18xLjA0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJlcmF0aW9uKHRtKSBGb250cyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaWJlcmF0aW9uKHRtKSBGb250cyBpcyBhIGZvbnQgZmFtaWx5IG9yaWdpbmFsbHkgXAotY3JlYXRlZCBieSBBc2NlbmRlcihjKSB3aGljaCBhaW1zIGF0IG1ldHJpYyBjb21wYXRpYmlsaXR5IHdpdGggXAotQXJpYWwsIFRpbWVzIE5ldyBSb21hbiwgQ291cmllciBOZXcuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL2xpYmVyYXRpb24tZm9udHMvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vIgotCi1SRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICIyLnggZGVwZW5kcyBvbiBmb250Zm9yZ2UgcGFja2FnZSwgd2hpY2ggaXMgbm90IHlldCBwcm92aWRlZCBpbiBvZS1jb3JlIgotCi1TRUNUSU9OID0gIngxMS9mb250cyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLVBSID0gInI0IgotUEUgPSAiMSIKLQotaW5oZXJpdCBhbGxhcmNoIGZvbnRjYWNoZQotCi1GT05UX1BBQ0tBR0VTID0gIiR7UE59IgotCi1TUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9saWJlcmF0aW9uLWZvbnRzL2xpYmVyYXRpb24tZm9udHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzMwLWxpYmVyYXRpb24tYWxpYXNlcy5jb25mIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDg0Njc5N2VmMGZjNzBiMGNiYWVkZTI1MTQ2NzdjNTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGUwZDA5NTdjODViNzU4NTYxYTNkNGFlZjRlYmNkMmMzOTk1OWU1MzI4NDI5ZDk2YWUxMDYyNDlkODM1MzFhMSIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9mb250cy90dGYvCi0JZm9yIGkgaW4gKi50dGY7IGRvCi0JCWluc3RhbGwgLW0gMDY0NCAkaSAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8ke2l9Ci0JZG9uZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9mb250cy9jb25mLmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMzAtbGliZXJhdGlvbi1hbGlhc2VzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMvY29uZi5kLwotCi0JaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9L3NoYXJlL2RvYy8ke0JQTn0vCi0JaW5zdGFsbCAtbSAwNjQ0IExpY2Vuc2UudHh0ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCi19Ci0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gJHtkYXRhZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL2xpYmVyYXRpb24tZm9udHNfMi4wMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvbGliZXJhdGlvbi1mb250c18yLjAwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEyZGE0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL2xpYmVyYXRpb24tZm9udHNfMi4wMC4xLmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiTGliZXJhdGlvbih0bSkgRm9udHMiCitERVNDUklQVElPTiA9ICJUaGUgTGliZXJhdGlvbih0bSkgRm9udHMgaXMgYSBmb250IGZhbWlseSBvcmlnaW5hbGx5IFwKK2NyZWF0ZWQgYnkgQXNjZW5kZXIoYykgd2hpY2ggYWltcyBhdCBtZXRyaWMgY29tcGF0aWJpbGl0eSB3aXRoIFwKK0FyaWFsLCBUaW1lcyBOZXcgUm9tYW4sIENvdXJpZXIgTmV3LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9saWJlcmF0aW9uLWZvbnRzLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tLyIKKworU0VDVElPTiA9ICJ4MTEvZm9udHMiCitMSUNFTlNFID0gIk9GTC0xLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mOTZkYjk3MGE5YTQ2YzUzNjkxNDJiOTlmNTMwMzY2YiIKK1BFID0gIjEiCisKK2luaGVyaXQgYWxsYXJjaCBmb250Y2FjaGUKKworRk9OVF9QQUNLQUdFUyA9ICIke1BOfSIKKworU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvbGliZXJhdGlvbi1mb250cy9saWJlcmF0aW9uLWZvbnRzLXR0Zi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMzAtbGliZXJhdGlvbi1hbGlhc2VzLmNvbmYiCisKK1MgPSAiJHtXT1JLRElSfS9saWJlcmF0aW9uLWZvbnRzLXR0Zi0ke1BWfSIKKworU1JDX1VSSVttZDVzdW1dID0gIjVjNzgxNzIzYTBkOWVkNjE4ODk2MGRlZmJhOGU5MWNmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4OTAyNzhhNmNkMTc4NzNjNTdkOWNkNzg1YzJkMjMwZDlhYmRlYTgzN2U5NjUxNjAxOWM1ODg1ZGQyNzE1MDQiCisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZm9udHMvdHRmLworCWZvciBpIGluICoudHRmOyBkbworCQlpbnN0YWxsIC1tIDA2NDQgJGkgJHtEfSR7cHJlZml4fS9zaGFyZS9mb250cy90dGYvJHtpfQorCWRvbmUKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMvY29uZi5kLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzMwLWxpYmVyYXRpb24tYWxpYXNlcy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2ZvbnRzL2NvbmYuZC8KKworCWluc3RhbGwgLWQgJHtEfSR7cHJlZml4fS9zaGFyZS9kb2MvJHtCUE59LworCWluc3RhbGwgLW0gMDY0NCBMSUNFTlNFICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCit9CisKK1BBQ0tBR0VTID0gIiR7UE59IgorRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gJHtkYXRhZGlyfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTk2YTRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMC4wLmJiCkBAIC0wLDAgKzEsMjIgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCisgICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgorCitERVBFTkRTID0gInpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjUyYzhkMDZmNWQ2NDk4YWZkNjZkZjk4M2RhMzQ4YTZiMTEyZjEzMTQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMyYzhmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKQEAgLTAsMCArMSw5MSBAQAorRnJvbSA1NTc3MGZiMDdjNDJmZTQxMGNmOGQwOWY4ZjU5NzZiYWJjODliOWVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgNCBKdWwgMjAxNyAxNzoxMzo0NSArMDMwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZCBkZW1vcyB3aXRoIHF1ZXN0aW9uYWJseSBsaWNlbnNlZCBkYXRhCisKK1NvbWUgb2YgdGhlIG1vZGVscyBkb24ndCBoYXZlIG9wZW4gc291cmNlIGNvbXBhdGlibGUgbGljZW5zZXM6Citkb24ndCBidWlsZCBkZW1vcyB1c2luZyB0aG9zZS4gQWxzbyBkb24ndCBidWlsZCBkZW1vcyB0aGF0IG5lZWQKK3Jlc291cmNlcyB0aGF0IGFyZSBub3QgaW5jbHVkZWQuCisKK3NzYW86CitzY2VuZXJlbmRlcmluZzoKKwlTaWJlbmlrIG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCisKK2RlZmVycmVkOgorZGVmZXJyZWRtdWx0aXNhbXBsaW5nOgorZGVmZXJyZWRzaGFkb3dzOgorCWFybW9yIG1vZGVsLCBDQy1CWS0zLjAKKwordnVsa2Fuc2NlbmU6CitpbWd1aToKK3NoYWRvd21hcHBpbmc6CisJdnVsa2Fuc2NlbmUgbW9kZWwsIG5vIGxpY2Vuc2UgZm91bmQKKworaW5kaXJlY3RkcmF3OgorCXBsYW50IG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCisKK2hkcjoKK3BicmlibDoKK3BicnRleHR1cmU6CisJUmVxdWlyZSBleHRlcm5hbCBWdWxrYW4gQXNzZXQgUGFjaworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAxMyAtLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggNDk1OGZmZi4uMGY5ZDNlNCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTE1MCwxNyArMTUwLDExIEBAIHNldChFWEFNUExFUworIAljb21wdXRlcGFydGljbGVzCisgCWNvbXB1dGVzaGFkZXIKKyAJZGVidWdtYXJrZXIKKy0JZGVmZXJyZWQKKy0JZGVmZXJyZWRtdWx0aXNhbXBsaW5nCistCWRlZmVycmVkc2hhZG93cworIAlkaXNwbGFjZW1lbnQKKyAJZGlzdGFuY2VmaWVsZGZvbnRzCisgCWR5bmFtaWN1bmlmb3JtYnVmZmVyCisgCWdlYXJzCisgCWdlb21ldHJ5c2hhZGVyCistCWhkcgorLQlpbWd1aQorLQlpbmRpcmVjdGRyYXcJCisgCWluc3RhbmNpbmcKKyAJbWVzaAorIAltdWx0aXNhbXBsaW5nCitAQCAtMTcwLDIwICsxNjQsMTQgQEAgc2V0KEVYQU1QTEVTCisgCXBhcmFsbGF4bWFwcGluZworIAlwYXJ0aWNsZWZpcmUKKyAJcGJyYmFzaWMKKy0JcGJyaWJsCistCXBicnRleHR1cmUKKyAJcGlwZWxpbmVzCisgCXB1c2hjb25zdGFudHMKKyAJcmFkaWFsYmx1cgorIAlyYXl0cmFjaW5nCistCXNjZW5lcmVuZGVyaW5nCisgCXNjcmVlbnNob3QKKy0Jc2hhZG93bWFwcGluZworLQlzaGFkb3dtYXBwaW5nb21uaQorIAlza2VsZXRhbGFuaW1hdGlvbgorIAlzcGVjaWFsaXphdGlvbmNvbnN0YW50cworIAlzcGhlcmljYWxlbnZtYXBwaW5nCistCXNzYW8KKyAJc3VicGFzc2VzCisgCXRlcnJhaW50ZXNzZWxsYXRpb24KKyAJdGVzc2VsbGF0aW9uCitAQCAtMTk2LDcgKzE4NCw2IEBAIHNldChFWEFNUExFUworIAl0ZXh0dXJlc3BhcnNlcmVzaWRlbmN5CisgCXRyaWFuZ2xlCisgCXZpZXdwb3J0YXJyYXkKKy0JdnVsa2Fuc2NlbmUKKyApCisgCisgYnVpbGRFeGFtcGxlcygpCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODFiMzQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGIwNDk1ZWZiNmMzZWEzYTUzMGZjYmFkZGFjODZkYTU3ZWNjZTVhNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAxMCBKdWwgMjAxNyAxMzoxMToxMiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24geDg2CitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3zCoGZ1bmNfY29tbW9uLmlubDoxOTM6NTE6IGVycm9yOiB3cm9uZyBudW1iZXIgb2YgdGVtcGxhdGUgYXJndW1lbnRzCit8wqAoNSwgc2hvdWxkIGJlIDYpIHN0cnVjdCBjb21wdXRlX3NpZ248VCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+CisKK1RoZSBmaXggaXMgYmFja3BvcnRlZCBmcm9tIHRoZSB1cHN0cmVhbSBnbG0gcHJvamVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdGh1Yi5jb20vU2FzY2hhV2lsbGVtcy9WdWxrYW4vaXNzdWVzLzM1Nl0KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBleHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sIGIvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sCitpbmRleCBjYWZhZWQ1Li4yZGQ5NGUxIDEwMDY0NAorLS0tIGEvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sCisrKysgYi9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwKK0BAIC0xOTAsMTIgKzE5MCwxMiBAQCBuYW1lc3BhY2UgZGV0YWlsCisgCisgIwlpZiBHTE1fQVJDSCA9PSBHTE1fQVJDSF9YODYKKyAJdGVtcGxhdGU8bGVuZ3RoX3QgTCwgdHlwZW5hbWUgVCwgcHJlY2lzaW9uIFAsIHRlbXBsYXRlPGxlbmd0aF90LCB0eXBlbmFtZSwgcHJlY2lzaW9uPiBjbGFzcyB2ZWNUeXBlLCBib29sIEFsaWduZWQ+CistCXN0cnVjdCBjb21wdXRlX3NpZ248VCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+CisrCXN0cnVjdCBjb21wdXRlX3NpZ248TCwgVCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+CisgCXsKKyAJCUdMTV9GVU5DX1FVQUxJRklFUiBzdGF0aWMgdmVjVHlwZTxMLCBULCBQPiBjYWxsKHZlY1R5cGU8TCwgVCwgUD4gY29uc3QgJiB4KQorIAkJeworIAkJCVQgY29uc3QgU2hpZnQoc3RhdGljX2Nhc3Q8VD4oc2l6ZW9mKFQpICogOCAtIDEpKTsKKy0JCQl2ZWNUeXBlPEwsIFQsIFA+IGNvbnN0IHkodmVjVHlwZTx0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlLCBQPigteCkgPj4gdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxUPjo6dHlwZShTaGlmdCkpOworKwkJCXZlY1R5cGU8TCwgVCwgUD4gY29uc3QgeSh2ZWNUeXBlPEwsIHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUsIFA+KC14KSA+PiB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlKFNoaWZ0KSk7CisgCisgCQkJcmV0dXJuICh4ID4+IFNoaWZ0KSB8IHk7CisgCQl9CistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLVN1cHBvcnQtaW5zdGFsbGluZy1kZW1vcy1zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLVN1cHBvcnQtaW5zdGFsbGluZy1kZW1vcy1zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWRkZWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtU3VwcG9ydC1pbnN0YWxsaW5nLWRlbW9zLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gZWRjYTY2NzY4NDc2NGNmY2MwNDYwZTQ0OGU4MzRmYWRmNjIzYTg4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDMgSnVsIDIwMTcgMTQ6NDk6MTggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBpbnN0YWxsaW5nIGRlbW9zLCBzdXBwb3J0IG91dC1vZi10cmVlIGJ1aWxkcworCitUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvciBjcm9zcy1jb21waWxlIHNpdHVhdGlvbiB3aGVyZSB0ZXN0aW5nCitoYXBwZW5zIG9uIHRhcmdldC4KKworLURSRVNPVVJDRV9JTlNUQUxMX0RJUj08cGF0aD4gZGVjaWRlcyB3aGVyZSBkYXRhIGlzIGluc3RhbGxlZCAoYW5kCit3aGVyZSB0aGUgYmluYXJpZXMgd2lsbCBsb2FkIHRoZSBkYXRhIGZyb20pOiBpZiBpdCdzIGxlZnQgZW1wdHksCit0aGVuIG5vdGhpbmcgd2lsbCBiZSBpbnN0YWxsZWQgYW5kIGJpbmFyaWVzIHdpbGwgbG9hZCB0aGUgZGF0YSBmcm9tCitDTUFLRV9TT1VSQ0VfRElSLgorCitCaW5hcmllcyBhcmUgbm93IGNvcnJlY3RseSBidWlsdCBpbiBDTUFLRV9CSU5BUllfRElSLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL1Nhc2NoYVdpbGxlbXMvVnVsa2FuL3B1bGwvMzUyXQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKystCisgYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAgfCAgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGI5ODg2YmMuLjQ5NThmZmYgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNiw2ICsxNiw4IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoYmFzZSkKKyBPUFRJT04oVVNFX0QyRF9XU0kgIkJ1aWxkIHRoZSBwcm9qZWN0IHVzaW5nIERpcmVjdCB0byBEaXNwbGF5IHN3YXBjaGFpbiIgT0ZGKQorIE9QVElPTihVU0VfV0FZTEFORF9XU0kgIkJ1aWxkIHRoZSBwcm9qZWN0IHVzaW5nIFdheWxhbmQgc3dhcGNoYWluIiBPRkYpCisgCisrc2V0KFJFU09VUkNFX0lOU1RBTExfRElSICIiIENBQ0hFIFBBVEggIlBhdGggdG8gaW5zdGFsbCByZXNvdXJjZXMgdG8gKGxlYXZlIGVtcHR5IGZvciBydW5uaW5nIHVuaW5zdGFsbGVkKSIpCisrCisgIyBVc2UgRmluZFZ1bGthbiBtb2R1bGUgYWRkZWQgd2l0aCBDTUFLRSAzLjcKKyBpZiAoTk9UIENNQUtFX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDMuNy4wKQorIAltZXNzYWdlKFNUQVRVUyAiVXNpbmcgbW9kdWxlIHRvIGZpbmQgVnVsa2FuIikKK0BAIC0xMDgsNiArMTEwLDEwIEBAIGZ1bmN0aW9uKGJ1aWxkRXhhbXBsZSBFWEFNUExFX05BTUUpCisgCQlhZGRfZXhlY3V0YWJsZSgke0VYQU1QTEVfTkFNRX0gJHtNQUlOX0NQUH0gJHtTT1VSQ0V9ICR7U0hBREVSU30pCisgCQl0YXJnZXRfbGlua19saWJyYXJpZXMoJHtFWEFNUExFX05BTUV9ICR7VnVsa2FuX0xJQlJBUll9ICR7QVNTSU1QX0xJQlJBUklFU30gJHtXQVlMQU5EX0NMSUVOVF9MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0pCisgCWVuZGlmKFdJTjMyKQorKworKwlpZihSRVNPVVJDRV9JTlNUQUxMX0RJUikKKysJCWluc3RhbGwoVEFSR0VUUyAke0VYQU1QTEVfTkFNRX0gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0pCisrCWVuZGlmKCkKKyBlbmRmdW5jdGlvbihidWlsZEV4YW1wbGUpCisgCisgIyBCdWlsZCBhbGwgZXhhbXBsZXMKK0BAIC0xMTcsNiArMTIzLDEzIEBAIGZ1bmN0aW9uKGJ1aWxkRXhhbXBsZXMpCisgCWVuZGZvcmVhY2goRVhBTVBMRSkKKyBlbmRmdW5jdGlvbihidWlsZEV4YW1wbGVzKQorIAorK2lmKFJFU09VUkNFX0lOU1RBTExfRElSKQorKwlhZGRfZGVmaW5pdGlvbnMoLURWS19FWEFNUExFX0RBVEFfRElSPVwiJHtSRVNPVVJDRV9JTlNUQUxMX0RJUn0vXCIpCisrCWluc3RhbGwoRElSRUNUT1JZIGRhdGEvIERFU1RJTkFUSU9OICR7UkVTT1VSQ0VfSU5TVEFMTF9ESVJ9LykKKytlbHNlKCkKKysJYWRkX2RlZmluaXRpb25zKC1EVktfRVhBTVBMRV9EQVRBX0RJUj1cIiR7Q01BS0VfU09VUkNFX0RJUn0vZGF0YS9cIikKKytlbmRpZigpCisrCisgIyBDb21waWxlciBzcGVjaWZpYyBzdHVmZgorIElGKE1TVkMpCisgCVNFVChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAvRUhzYyIpCitAQCAtMTI4LDcgKzE0MSw3IEBAIEVMU0UoV0lOMzIpCisgCWxpbmtfbGlicmFyaWVzKCR7WENCX0xJQlJBUklFU30gJHtWdWxrYW5fTElCUkFSWX0pCisgRU5ESUYoV0lOMzIpCisgCistc2V0KENNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9TT1VSQ0VfRElSfS9iaW4vIikKKytzZXQoQ01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9L2Jpbi8iKQorIAorIHNldChFWEFNUExFUyAKKyAJYmxvb20KK2RpZmYgLS1naXQgYS9iYXNlL3Z1bGthbmV4YW1wbGViYXNlLmNwcCBiL2Jhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwCitpbmRleCA2NDczNjhhLi5hMGYyOGE1IDEwMDY0NAorLS0tIGEvYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAKKysrKyBiL2Jhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwCitAQCAtODQsNyArODQsNyBAQCBjb25zdCBzdGQ6OnN0cmluZyBWdWxrYW5FeGFtcGxlQmFzZTo6Z2V0QXNzZXRQYXRoKCkKKyAjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAJcmV0dXJuICIiOworICNlbHNlCistCXJldHVybiAiLi8uLi9kYXRhLyI7CisrCXJldHVybiBWS19FWEFNUExFX0RBVEFfRElSOworICNlbmRpZgorIH0KKyAjZW5kaWYKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiODk0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0RFU0NSSVBUSU9OID0gIkNvbGxlY3Rpb24gb2YgVnVsa2FuIGV4YW1wbGVzIgorTElDRU5TRSA9ICJNSVQiCitERVBFTkRTID0gInpsaWIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWRjZjQ3MzcyM2ZhYWJmMTdiYWE5YjVmMjIwNzU5OWQwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyaWFuZ2xlL3RyaWFuZ2xlLmNwcDtlbmRsaW5lPTEyO21kNT1iY2NkMWJmOWNhZGQ5ZTEwMDg2Y2Y3ODcyMTU3ZTRmYSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1Nhc2NoYVdpbGxlbXMvVnVsa2FuLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtaW5zdGFsbGluZy1kZW1vcy1zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoIFwKKyIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorU1JDUkVWID0gIjE4ZGYwMGM3YjQ2NzdiMDg4OTQ4NmUxNjk3Nzg1N2FhOTg3OTQ3ZTIiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJUaGVzZSBhcmUgbm90IHRoZSByZWxlYXNlcyB5b3UncmUgbG9va2luZyBmb3IiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAndnVsa2FuJworCitpbmhlcml0IGNtYWtlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworREVQRU5EUyA9ICJ2dWxrYW4gYXNzaW1wIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBSZW1vdmUgYXNzZXRzIHRoYXQgaGF2ZSB1bmNlcnRhaW4gbGljZW5zZXMKKyAgICBybSAke0R9JHtkYXRhZGlyfS92dWxrYW4tZGVtb3MvbW9kZWxzL2FybW9yLyogXAorICAgICAgICR7RH0ke2RhdGFkaXJ9L3Z1bGthbi1kZW1vcy9tb2RlbHMvc2liZW5pay8qIFwKKyAgICAgICAke0R9JHtkYXRhZGlyfS92dWxrYW4tZGVtb3MvbW9kZWxzL3Z1bGthbnNjZW5lKiBcCisgICAgICAgJHtEfSR7ZGF0YWRpcn0vdnVsa2FuLWRlbW9zL21vZGVscy9wbGFudHMuZGFlIFwKKyAgICAgICAke0R9JHtkYXRhZGlyfS92dWxrYW4tZGVtb3MvdGV4dHVyZXMvdGV4dHVyZWFycmF5X3BsYW50cyoKKworICAgIG12ICR7RH0ke2JpbmRpcn0vc2NyZWVuc2hvdCAke0R9JHtiaW5kaXJ9L3Z1bGthbi1zY3JlZW5zaG90Cit9CisKK0VYVFJBX09FQ01BS0UgPSAiLURSRVNPVVJDRV9JTlNUQUxMX0RJUj0ke2RhdGFkaXJ9L3Z1bGthbi1kZW1vcyIKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKKworIyBDYW4gb25seSBwaWNrIG9uZSBvZiBbd2F5bGFuZCx4Y2JdCitQQUNLQUdFQ09ORklHID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJ3hjYicgLGQpfSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURVU0VfV0FZTEFORF9XU0k9T04sIC1EVVNFX1dBWUxBTkRfV1NJPU9GRiwgd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbeGNiXSA9ICIsLGxpYnhjYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi8wMDAxLVVzZS1nZXRlbnYtaWYtc2VjdXJlX2dldGVudi1kb2VzLW5vdC1leGlzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi8wMDAxLVVzZS1nZXRlbnYtaWYtc2VjdXJlX2dldGVudi1kb2VzLW5vdC1leGlzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk0OTIyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4vMDAwMS1Vc2UtZ2V0ZW52LWlmLXNlY3VyZV9nZXRlbnYtZG9lcy1ub3QtZXhpc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDIwNTI1YWRkMWRmOGUxZmIxM2ZlZjkwYWMwNjhmOTgyZGVmOGI5NTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA4IE1hciAyMDE3IDEzOjIzOjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBnZXRlbnYoKSBpZiBzZWN1cmVfZ2V0ZW52KCkgZG9lcyBub3QgZXhpc3QKLQotbXVzbCBkb2VzIG5vdCBpbXBsZW1lbnQgc2VjdXJlIHZlcnNpb246IGRlZmF1bHQgdG8gZ2V0ZW52KCkgaW4gdGhhdAotY2FzZS4KLQotaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycy9pc3N1ZXMvMTUzOAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBsb2FkZXIvbG9hZGVyLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sb2FkZXIvbG9hZGVyLmMgYi9sb2FkZXIvbG9hZGVyLmMKLWluZGV4IDI0NzU4ZjQuLmJmZjc5YzEgMTAwNjQ0Ci0tLS0gYS9sb2FkZXIvbG9hZGVyLmMKLSsrKyBiL2xvYWRlci9sb2FkZXIuYwotQEAgLTU0LDYgKzU0LDEwIEBACi0gI2VuZGlmCi0gI2VuZGlmCi0gCi0rI2lmICFkZWZpbmVkKF9fc2VjdXJlX2dldGVudikKLSsjZGVmaW5lIF9fc2VjdXJlX2dldGVudiBnZXRlbnYKLSsjZW5kaWYKLSsKLSBzdHJ1Y3QgbG9hZGVyX3N0cnVjdCBsb2FkZXIgPSB7MH07Ci0gLy8gVExTIGZvciBpbnN0YW5jZSBmb3IgYWxsb2MvZnJlZSBjYWxsYmFja3MKLSBUSFJFQURfTE9DQUxfREVDTCBzdHJ1Y3QgbG9hZGVyX2luc3RhbmNlICp0bHNfaW5zdGFuY2U7Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuMzkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuMzkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVkMWM0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjM5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgotREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKLXRoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAotcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCi10aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT05OWM2NDdjYTNkNGY2YTRiOWQ4NjI4Zjc1N2FhZDE1NiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sb2FkZXIvbG9hZGVyLmM7ZW5kbGluZT0yNTttZDU9YTg3Y2Q1NDQyMjkxYzIzZDFmY2U0ZWVjZTRjZmRlOWQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzLmdpdDticmFuY2g9c2RrLTEuMC4zOSBcCi0gICAgICAgICAgIGZpbGU6Ly9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1nZXRlbnYtaWYtc2VjdXJlX2dldGVudi1kb2VzLW5vdC1leGlzdC5wYXRjaCBcCi0iCi1TUkNSRVYgPSAiOWMyMWVkMGZiMjc1NTg5YzNhZjYxMThhZWM5ZWY0ZjFkMTU0NGRjMSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotCi1pbmhlcml0IGNtYWtlIHB5dGhvbjNuYXRpdmUgbGliX3BhY2thZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfV1NJX01JUl9TVVBQT1JUPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfTEFZRVJTPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIgotCi0jIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnICxkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OIC1EREVNT1NfV1NJX1NFTEVDVElPTj1YQ0IsIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGIC1EREVNT1NfV1NJX1NFTEVDVElPTj1XQVlMQU5ELCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjUxLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjUxLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRlMzliYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNTEuMC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgorREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKK3RoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAorcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCit0aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT05OWM2NDdjYTNkNGY2YTRiOWQ4NjI4Zjc1N2FhZDE1NiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sb2FkZXIvbG9hZGVyLmM7ZW5kbGluZT0yNTttZDU9YTg3Y2Q1NDQyMjkxYzIzZDFmY2U0ZWVjZTRjZmRlOWQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzLmdpdDticmFuY2g9c2RrLTEuMC41MSBcCisgICAgICAgICAgIGZpbGU6Ly9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBcCisiCitTUkNSRVYgPSAiOGQwMjFlNGQ1YTlmOTE0MzZmNDQ2MmRmMWRhZmIyMjI5MDhlMjk2ZCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCisKK2luaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBsaWJfcGFja2FnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCisKK0VYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9XU0lfTUlSX1NVUFBPUlQ9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9MQVlFUlM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYiCisKKyMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnICxkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycgLGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04gLURERU1PU19XU0lfU0VMRUNUSU9OPVhDQiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYgLURERU1PU19XU0lfU0VMRUNUSU9OPVdBWUxBTkQsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2Njc1MzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDVlODg2NGM1YjdhMmUyNThlZWEwNDFiMGVmNjZkYWM3ZmNhYjliN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCA5IEF1ZyAyMDE3IDA5OjQ3OjE0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRvb2xzOiBGaXggcmFjZSBpbiAoYXV0b3Rvb2xzKSBpbnN0YWxsCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK2V4ZWMvZGF0YSBkaXN0aW5jdGlvbiBpcyBkb25lIGJhc2VkIG9uIGluc3RhbGwgZGlyIHNvIGNvbXBhdCBzY3JpcHRzCittdXN0IGJlIG1vdmVkIGluIGV4ZWMgaG9vay4KKworVGhpcyBzaG91bGQgZml4IHRoaXMgb2NjYXNpb25hbCBmYWlsdXJlOgorfMKgaW5zdGFsbDogY2Fubm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZgorfMKg4oCYL3Vzci9iaW4vbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdOKAmTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKy0tLQorIHRvb2xzL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUuYW0gYi90b29scy9NYWtlZmlsZS5hbQoraW5kZXggMmM4NjYwYi4uN2VlOGI5MCAxMDA2NDQKKy0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCisrKysgYi90b29scy9NYWtlZmlsZS5hbQorQEAgLTYzLDcgKzYzLDcgQEAgZW5kaWYKKyAKKyBFWFRSQV9ESVNUID0gbWFrZS1wdHJhY2NlbC1ncmFwaHMuc2ggaW5zdGFsbC1jb21wYXQtc2NyaXB0cy5zaCAkKGJpbl9TQ1JJUFRTKQorIAorLWluc3RhbGwtZGF0YS1ob29rOgorK2luc3RhbGwtZXhlYy1ob29rOgorIAkoY2QgJChERVNURElSKSQoYmluZGlyKSAmJiBtdiBsaWJpbnB1dC1saXN0LWRldmljZXMuY29tcGF0IGxpYmlucHV0LWxpc3QtZGV2aWNlcykKKyAJKGNkICQoREVTVERJUikkKGJpbmRpcikgJiYgbXYgbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdCBsaWJpbnB1dC1kZWJ1Zy1ldmVudHMpCisgCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvdG91Y2hwYWQtc2VyaWFsLXN5bmFwdGljcy1uZWVkLXRvLWZha2UtbmV3LXRvdWNoZXMtb24tVFJJUExFVEFQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0L3RvdWNocGFkLXNlcmlhbC1zeW5hcHRpY3MtbmVlZC10by1mYWtlLW5ldy10b3VjaGVzLW9uLVRSSVBMRVRBUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUyYjQ5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvdG91Y2hwYWQtc2VyaWFsLXN5bmFwdGljcy1uZWVkLXRvLWZha2UtbmV3LXRvdWNoZXMtb24tVFJJUExFVEFQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotVGhpcyBpcyBhIHdvcmthcm91bmQgdXBzdHJlYW0gc3VnZ2VzdHMgZm9yIHVzZSB3aXRoIGtlcm5lbCA0LjEuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdGVtcG9yYXJ5IHdvcmstYXJvdW5kXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLQotCi0KLUZyb206IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci1EYXRlOiBNb24gQXVnIDMgMTg6MjM6MTIgUERUIDIwMTUKLVN1YmplY3Q6IFtQQVRDSCB2MyBsaWJpbnB1dF0gdG91Y2hwYWQ6IHNlcmlhbCBzeW5hcHRpY3MgbmVlZCB0byBmYWtlIG5ldyB0b3VjaGVzIG9uIFRSSVBMRVRBUAotCi1PbiB0aGUgNC4xIGtlcm5lbHMgc3luYXB0aWNzIHByZXRlbmRzIHRvIGhhdmUgMyBzbG90cyAodGhlIHNlcmlhbCBmdyBvbmx5IGRvZXMKLTIpLiBUaGlzIHdhcyBhZGRlZCB0byBhdm9pZCBjdXJzb3IganVtcHMgYnV0IGhhcyBzaW5jZSBiZWVuIHJldmVydGVkIGZvciA0LjIKLShrZXJuZWwgY29tbWl0IGRiZjNjMzcwODYsIDQuMS4zIGlzIHN0aWxsIGJ1Z2d5KS4gSW4gc29tZSBjYXNlcyBhIFRSSVBMRVRBUAotbWF5IGJlIHRyaWdnZXJlZCB3aXRob3V0IHNsb3QgMiBldmVyIGFjdGl2YXRpbmcuCi0KLVdoaWxlIHRoZXJlIGFyZSBzdGlsbCB0aG9zZSBrZXJuZWxzIG91dCB0aGVyZSwgd29yayBhcm91bmQgdGhpcyBidWcgYnkgb3BlbmluZwotYSBuZXcgdG91Y2ggcG9pbnQgd2hlcmUgbm9uZSBleGlzdHMgaWYgdGhlIGZha2UgZmluZ2VyIGNvdW50IGV4Y2VlZHMgdGhlIHNsb3QKLWNvdW50LgotCi1SZXBvcnRlZC1ieTogSmFuIEFsZXhhbmRlciBTdGVmZmVucyA8amFuLnN0ZWZmZW5zIGF0IGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlciBhdCB3aG8tdC5uZXQ+Ci1UZXN0ZWQtYnk6IEphbiBBbGV4YW5kZXIgU3RlZmZlbnMgPGphbi5zdGVmZmVucyBhdCBnbWFpbC5jb20+Ci1SZXZpZXdlZC1ieTogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGUgYXQgcmVkaGF0LmNvbT4KLS0tLQotQ2hhbmdlcyB0byB2MjoKLS0gc3BsaXQgb3V0IHRoZSBoYW5kbGluZyBpbnN0ZWFkIG9mIGhhdmluZyBhIHRtcCBzdGF0ZSB2YXJpYWJsZSwgc2VlIEhhbnMnCi0gIGNvbW1lbnRzIGZyb20gdjIKLQotTWFpbmx5IHNlbmRpbmcgdGhpcyB0byB0aGUgbGlzdCBhZ2FpbiBzbyBJIGhhdmUgYSBsaW5rIHRvIHBvaW50IHBlb3BsZSB0by4KLUlmIHlvdSdyZSBvbiA0LjEueCBhZGQgdGhpcyBwYXRjaCB0byB5b3VyIGRpc3RyaWJ1dGlvbiBwYWNrYWdlLgotCi0gc3JjL2V2ZGV2LW10LXRvdWNocGFkLmMgfCAyMiArKysrKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZXZkZXYtbXQtdG91Y2hwYWQuYyBiL3NyYy9ldmRldi1tdC10b3VjaHBhZC5jCi1pbmRleCBhNjgzZDlhLi41ZWYwM2Q1IDEwMDY0NAotLS0tIGEvc3JjL2V2ZGV2LW10LXRvdWNocGFkLmMKLSsrKyBiL3NyYy9ldmRldi1tdC10b3VjaHBhZC5jCi1AQCAtMzY5LDEzICszNjksMjMgQEAgdHBfcmVzdG9yZV9zeW5hcHRpY3NfdG91Y2hlcyhzdHJ1Y3QgdHBfZGlzcGF0Y2ggKnRwLAotIAlmb3IgKGkgPSAwOyBpIDwgdHAtPm51bV9zbG90czsgaSsrKSB7Ci0gCQlzdHJ1Y3QgdHBfdG91Y2ggKnQgPSB0cF9nZXRfdG91Y2godHAsIGkpOwotIAotLQkJaWYgKHQtPnN0YXRlICE9IFRPVUNIX0VORCkKLSsJCXN3aXRjaCh0LT5zdGF0ZSkgewotKwkJY2FzZSBUT1VDSF9IT1ZFUklORzoKLSsJCWNhc2UgVE9VQ0hfQkVHSU46Ci0rCQljYXNlIFRPVUNIX1VQREFURToKLSAJCQljb250aW51ZTsKLS0KLS0JCS8qIG5ldyB0b3VjaCwgbW92ZSBpdCB0aHJvdWdoIGJlZ2luIHRvIHVwZGF0ZSBpbW1lZGlhdGVseSAqLwotLQkJdHBfbmV3X3RvdWNoKHRwLCB0LCB0aW1lKTsKLS0JCXRwX2JlZ2luX3RvdWNoKHRwLCB0LCB0aW1lKTsKLS0JCXQtPnN0YXRlID0gVE9VQ0hfVVBEQVRFOwotKwkJY2FzZSBUT1VDSF9OT05FOgotKwkJCS8qIG5ldyB0b3VjaCwgbW92ZSBpdCB0aHJvdWdoIHRvIGJlZ2luIGltbWVkaWF0ZWx5ICovCi0rCQkJdHBfbmV3X3RvdWNoKHRwLCB0LCB0aW1lKTsKLSsJCQl0cF9iZWdpbl90b3VjaCh0cCwgdCwgdGltZSk7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlIFRPVUNIX0VORDoKLSsJCQkvKiB0b3VjaCBqdXN0IGVuZGVkICx3ZSBuZWVkIG5lZWQgdG8gcmVzdG9yZSBpdCB0byB1cGRhdGUgKi8KLSsJCQl0cF9uZXdfdG91Y2godHAsIHQsIHRpbWUpOwotKwkJCXRwX2JlZ2luX3RvdWNoKHRwLCB0LCB0aW1lKTsKLSsJCQl0LT5zdGF0ZSA9IFRPVUNIX1VQREFURTsKLSsJCQlicmVhazsKLSsJCX0KLSAJfQotIH0KLSAKLS0tIAotMi40LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODcxNGYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjE4NGFlZjM4ZmYxMzdlZDMzY2U5YTYzYjlkMWViOGYiCi0KLURFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3RvdWNocGFkLXNlcmlhbC1zeW5hcHRpY3MtbmVlZC10by1mYWtlLW5ldy10b3VjaGVzLW9uLVRSSVBMRVRBUC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiN2UyODIzNDRmOGVkN2VjNWNmODdjYTlmYzIyNjc0ZmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQ4MTZmMTNlZWU2M2JjY2EwZTljM2JiNjUyYzUyYWI1NWYzOWJlNGQxYjkwYjU0ZTRiZmQxZGM5MmVmNTVhOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLVBBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi0tZW5hYmxlLWxpYndhY29tLC0tZGlzYWJsZS1saWJ3YWNvbSxsaWJ3YWNvbSIKLVBBQ0tBR0VDT05GSUdbZ3VpXSA9ICItLWVuYWJsZS1ldmVudC1ndWksLS1kaXNhYmxlLWV2ZW50LWd1aSxjYWlybyBndGsrMyIKLQotVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXVkZXYtZGlyPSR7VURFVkRJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIxYmFiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjguMS5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxODRhZWYzOGZmMTM3ZWQzM2NlOWE2M2I5ZDFlYjhmIgorCitERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjgyNDdmMGJiNjcwNTJmZmIyNzJjNTBjM2NiOWM1OTk4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzNTkwYTkwMzdlNTYxYTU3OTFjOGJkM2IzNGJmZDMwZmFkNWNhY2Q4Y2JlZmMwZDc1ZmFmZTNhNDFkMDcxNDciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCitQQUNLQUdFQ09ORklHW2xpYndhY29tXSA9ICItLWVuYWJsZS1saWJ3YWNvbSwtLWRpc2FibGUtbGlid2Fjb20sbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLS1lbmFibGUtZGVidWctZ3VpLC0tZGlzYWJsZS1kZWJ1Zy1ndWksY2Fpcm8gZ3RrKzMiCisKK1VERVZESVIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC11ZGV2LWRpcj0ke1VERVZESVJ9IC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS10ZXN0cyIKKworIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCitSUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCitSUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjllOWYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODRhNzg0NmMyYjZhNmEzZTI2NWZjOWJlMzY0NTNlNjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTcxOWM1MWQ3MzU0ODY0OTgzMTcxYzUwODNlOTNhNzJhYzk5MjI5ZTJiNDYwYzRiYjEwNTEzZGUwODgzOWMwYSIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQyZjBkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCi1hdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCi1jb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCi1wcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKLXdheWxhbmQtcHJvdG9jb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiOWFjZmM5NTU2ZjdjZmVkYzQ0ZDk3YWY2MGRhNjZhNWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM1ZjJhOTM3ZDMxOGYxZmVjYjk3YjU0MDc0Y2EyMTE0ODZlMzhhZjk0Mzg2OGRkMGZhODJlYTM4ZDA5MWMxZiIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRVMgPSAiJHtQTn0iCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi93ZXN0b24tZ2wtcmVuZGVyZXItU2V0LXBpdGNoLWNvcnJlY3RseS1mb3Itc3Vic2FtcGxlZC10ZXh0dXJlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE4ODAxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotTXVsdGktcGxhbmUgc3ViLXNhbXBsZWQgdGV4dHVyZXMgaGF2ZSBwYXJ0aWFsIHdpZHRoL2hlaWdodCwgZS5nLgotWVVWNDIwL0k0MjAgaGFzIGEgZnVsbC1zaXplIFkgcGxhbmUsIGZvbGxvd2VkIGJ5IGEgaGFsZi13aWR0aC9oZWlnaHQgVQotcGxhbmUsIGFuZCBhIGhhbGYtd2lkdGgvaGVpZ2h0IFYgcGxhbmUuCi0KLXp3cF9saW51eF9kbWFidWZfdjEgYWxsb3dzIGNsaWVudHMgdG8gcGFzcyBhbiBleHBsaWNpdCBwaXRjaCBmb3IgZWFjaAotcGxhbmUsIGJ1dCBmb3Igd2xfc2htIHRoaXMgbXVzdCBiZSBpbmZlcnJlZC4gZ2wtcmVuZGVyZXIgd2FzIGNvcnJlY3RseQotYWNjb3VudGluZyBmb3IgdGhlIHdpZHRoIGFuZCBoZWlnaHQgd2hlbiBzdWJzYW1wbGluZywgYnV0IHRoZSBwaXRjaCB3YXMKLWJlaW5nIHRha2VuIGFzIHRoZSBwaXRjaCBmb3IgdGhlIGZpcnN0IHBsYW5lLgotCi1UaGlzIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlbWVudHMgZm9yIEdTdHJlYW1lcidzIHdheWxhbmRzaW5rLCBpbgotcGFydGljdWxhciwgYXMgd2VsbCBhcyBvdGhlciBjbGllbnRzLiBGaXggdGhlIFNITSB1cGxvYWQgcGF0aCB0bwotY29ycmVjdGx5IHNldCB0aGUgcGl0Y2ggZm9yIGVhY2ggcGxhbmUsIGFjY29yZGluZyB0byBzdWJzYW1wbGluZy4KLQotVGVzdGVkIHdpdGg6Ci0gICQgZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgd2F5bGFuZHNpbmsKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE4MDc2Ny9dCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgotRml4ZXM6IGZkZWVmZTQyNDE4ICgiZ2wtcmVuZGVyZXI6IGFkZCBzdXBwb3J0IG9mIFdMX1NITV9GT1JNQVRfWVVWNDIwIikKLVJlcG9ydGVkLWJ5OiBGYWJpZW4gTGFob3VkZXJlIDxmYWJpZW4ubGFob3VkZXJlQGNvbGxhYm9yYS5jby51az4KLUJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwNjMKLQotLS0tCi0gbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMgYi9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYwotaW5kZXggMjQ0Y2UzMDkuLjQwYmYwYmI2IDEwMDY0NAotLS0tIGEvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKLSsrKyBiL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCi1AQCAtMTI4NSwxNCArMTI4NSwxMyBAQCBnbF9yZW5kZXJlcl9mbHVzaF9kYW1hZ2Uoc3RydWN0IHdlc3Rvbl9zdXJmYWNlICpzdXJmYWNlKQotIAkJZ290byBkb25lOwotIAl9Ci0gCi0tCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEhfRVhULCBncy0+cGl0Y2gpOwotLQotIAlpZiAoZ3MtPm5lZWRzX2Z1bGxfdXBsb2FkKSB7Ci0gCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMU19FWFQsIDApOwotIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTX0VYVCwgMCk7Ci0gCQl3bF9zaG1fYnVmZmVyX2JlZ2luX2FjY2VzcyhidWZmZXItPnNobV9idWZmZXIpOwotIAkJZm9yIChqID0gMDsgaiA8IGdzLT5udW1fdGV4dHVyZXM7IGorKykgewotIAkJCWdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZ3MtPnRleHR1cmVzW2pdKTsKLSsJCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0pOwotIAkJCWdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotIAkJCQkgICAgIGdzLT5nbF9mb3JtYXRbal0sCi0gCQkJCSAgICAgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0sCi1AQCAtMTMxNyw2ICsxMzE2LDcgQEAgZ2xfcmVuZGVyZXJfZmx1c2hfZGFtYWdlKHN0cnVjdCB3ZXN0b25fc3VyZmFjZSAqc3VyZmFjZSkKLSAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XU19FWFQsIHIueTEpOwotIAkJZm9yIChqID0gMDsgaiA8IGdzLT5udW1fdGV4dHVyZXM7IGorKykgewotIAkJCWdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZ3MtPnRleHR1cmVzW2pdKTsKLSsJCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0pOwotIAkJCWdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotIAkJCQkJci54MSAvIGdzLT5oc3ViW2pdLAotIAkJCQkJci55MSAvIGdzLT52c3ViW2pdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIKaW5kZXggMDYzNDk0Yy4uNTRiMDdiZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8yLjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzIuMC4wLmJiCkBAIC0xMiw3ICsxMiw2IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoIFwKICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIxNWYzODk0NTk0MmJmMmE5MWZlMjY4NzE0NWZiNGM3ZCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNGU0NDZhYzI3ZjExODE5NmYxNjA5ZGFiODliYjNjYjNlODE2NTJkOTgxNDE0YWQ4NjBlNzMzYjM1NTM2NWQ4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiCmluZGV4IGI4NzFkODkuLjczM2ViY2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZS94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIKQEAgLTExLDYgKzExLDcgQEAKIFBWID0gIjAuMS4xK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfTticmFuY2g9bWFzdGVyIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMC5iYgppbmRleCA0ZTkzNTU4Li5hMDZhYTI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94MTFwZXJmXzEuNi4wLmJiCkBAIC0xMyw2ICsxMywxMCBAQAogCiBQRSA9ICIxIgogCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworICAgIHNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgJHtEfSR7YmluZGlyfS94MTFwZXJmY29tcAorfQorCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L1gxMS94MTFwZXJmY29tcC8qIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZjBiMjRlNGQ4YmViNjIyYTQxOWU4NDMxZTFjMDNjZDciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjOTgzNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNvbXBpbGUgWEtCIGtleWJvYXJkIGRlc2NyaXB0aW9uIgotCi1ERVNDUklQVElPTiA9ICJUaGUgeGtiY29tcCBrZXltYXAgY29tcGlsZXIgY29udmVydHMgYSBkZXNjcmlwdGlvbiBvZiBhbiBcCi1YS0Iga2V5bWFwIGludG8gb25lIG9mIHNldmVyYWwgb3V0cHV0IGZvcm1hdHMuIFRoZSBtb3N0IGNvbW1vbiB1c2UgZm9yIFwKLXhrYmNvbXAgaXMgdG8gY3JlYXRlIGEgY29tcGlsZWQga2V5bWFwIGZpbGUgKC54a20gZXh0ZW5zaW9uKSB3aGljaCBjYW4gXAotYmUgcmVhZCBkaXJlY3RseSBieSBYS0ItY2FwYWJsZSBYIHNlcnZlcnMgb3IgdXRpbGl0aWVzLiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDg0MzZlNGY0NDc2OTY0ZTJlMmRkN2U3ZTQxZTA3NmEiCi0KLVBSID0gIiR7SU5DX1BSfS4wIgotCi1ERVBFTkRTICs9ICJsaWJ4a2JmaWxlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImE0ZDgzNTNkYWY2Y2IwYTljNDczNzliNzQxM2M0MmM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzMDRkYzllMGQ0YWMxMDgzMWE5ZWY1ZDU0MTk3MjIzNzVkZGJjM2VhYzNmZjQ0MTMwOTRkNTdiYzFmMTkyM2QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkYzMyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMC5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY29tcGlsZSBYS0Iga2V5Ym9hcmQgZGVzY3JpcHRpb24iCisKK0RFU0NSSVBUSU9OID0gIlRoZSB4a2Jjb21wIGtleW1hcCBjb21waWxlciBjb252ZXJ0cyBhIGRlc2NyaXB0aW9uIG9mIGFuIFwKK1hLQiBrZXltYXAgaW50byBvbmUgb2Ygc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cy4gVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgXAoreGtiY29tcCBpcyB0byBjcmVhdGUgYSBjb21waWxlZCBrZXltYXAgZmlsZSAoLnhrbSBleHRlbnNpb24pIHdoaWNoIGNhbiBcCitiZSByZWFkIGRpcmVjdGx5IGJ5IFhLQi1jYXBhYmxlIFggc2VydmVycyBvciB1dGlsaXRpZXMuIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wODQzNmU0ZjQ0NzY5NjRlMmUyZGQ3ZTdlNDFlMDc2YSIKKworUFIgPSAiJHtJTkNfUFJ9LjAiCisKK0RFUEVORFMgKz0gImxpYnhrYmZpbGUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2MyMmIyMzJiYzc4YTMwMzM3MTk4M2UxYjQ4Nzk0YWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM2OWM4NzQ4YzAzYzVhZDlhZmRjOGRmZjlkYjExOTk0ZGQ4NzFiNjE0YzY1Zjg5NDA1MTZkYTZiZjYxY2U2YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGIxMjcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIkdlbmVyaWMgaW5wdXQgZHJpdmVyIGZvciB0aGUgWC5Pcmcgc2VydmVyIGJhc2VkIG9uIGxpYmlucHV0IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWU2YjIwZWEyZWY5NGE5OTgxNDVmMGVhM2Y3ODhlZTAiCi0KLURFUEVORFMgKz0gImxpYmlucHV0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmQzZmExMThlNGFiYWRiODgwNGRjNmEwOTliYjRhYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRjYjA3MzUwYWVkNTliMjk5NmE5MmExYjRmZjY0ZDFjMGIwYzg2YTNmMGRkY2ExNWIyYjFjOGM4YmIxMzYyOCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IzZWExNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKKworU1VNTUFSWSA9ICJHZW5lcmljIGlucHV0IGRyaXZlciBmb3IgdGhlIFguT3JnIHNlcnZlciBiYXNlZCBvbiBsaWJpbnB1dCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlNmIyMGVhMmVmOTRhOTk4MTQ1ZjBlYTNmNzg4ZWUwIgorCitERVBFTkRTICs9ICJsaWJpbnB1dCIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0MDAzMTM5NjE0YjI1Y2M3NmM5YTRjYWQwNTlkZjg5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4OWY3ZDU5MWM5ZWYwODQ2M2Q0OTY2ZTYxZjdjNmVhNDMzZjVmY2JiOWY1MzcwZmI2MjFkYTYzOWE4NGM3ZTAiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94b3JnLmNvbmYuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCmluZGV4IGY4NmRlNmYuLjEzOGRmZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYgpAQCAtMjQsNyArMjQsNyBAQAogCiBERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSBkcm0gbGlicGNpYWNjZXNzIHBpeG1hbiIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gInh2bWMgc25hIHVkZXYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZHJpIGRyaTEgZHJpMicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHID8/PSAieHZtYyB1eGEgdWRldiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmkgZHJpMSBkcmkyJywgJycsIGQpfSIKIAogUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSwtLWRpc2FibGUtZHJpIgogUEFDS0FHRUNPTkZJR1tkcmkxXSA9ICItLWVuYWJsZS1kcmkxLC0tZGlzYWJsZS1kcmkxLHhmODZkcmlwcm90byIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMS1QcmV2ZW50cy1vbWFwZmItZnJvbS1mcm9tLWNyYXNoaW5nLXdoZW4tcGl4ZWxjbG9jay1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2gKaW5kZXggYzRjZjE2ZS4uYWMxOTIxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2gKQEAgLTYsNiArNiw4IEBACiAKIER1ZSB0byBhIExpbnV4IGRlc2lnbiBidWcgaXQgaXMgZWFzeSB0byBnZXQgYSBwaXhlbGNsb2NrIHNldCB0byB6ZXJvCiB3aGVuIGNoYW5naW5nIGRpc3BsYXlzIGF0IHJ1bnRpbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgc3JjL29tYXBmYi1vdXRwdXQuYyB8IDkgKysrKysrKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDEtSW5jbHVkZS1jb25maWcuaC1iZWZvcmUtYW55dGhpbmctZWxzZS1pbi0uYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDEtSW5jbHVkZS1jb25maWcuaC1iZWZvcmUtYW55dGhpbmctZWxzZS1pbi0uYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyZmMwZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAxLUluY2x1ZGUtY29uZmlnLmgtYmVmb3JlLWFueXRoaW5nLWVsc2UtaW4tLmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODcgKzAsMCBAQAotRnJvbSBiMTQ2OTZhNTU3OTZlNzM5NjI0YmJkYTRmNzcyNDI3MDMyZWZmZjJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVsaWVuIENyaXN0YXUgPGpjcmlzdGF1QGRlYmlhbi5vcmc+Ci1EYXRlOiBTdW4sIDI2IEFwciAyMDE1IDE1OjIwOjU3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBJbmNsdWRlIGNvbmZpZy5oIGJlZm9yZSBhbnl0aGluZyBlbHNlIGluICouYwotCi1EZWJpYW4gYnVnIzc0OTAwOCA8aHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzQ5MDA4PgotCi1SZXBvcnRlZC1ieTogTWljaGFlbCBUYXV0c2NobmlnIDxtdEBkZWJpYW4ub3JnPgotU2lnbmVkLW9mZi1ieTogSnVsaWVuIENyaXN0YXUgPGpjcmlzdGF1QGRlYmlhbi5vcmc+Ci1SZXZpZXdlZC1ieTogQWxhbiBDb29wZXJzbWl0aCA8YWxhbi5jb29wZXJzbWl0aEBvcmFjbGUuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBzcmMvY29tbW9uX2NhcGFiaWxpdHkuYyAgfCAzICsrKwotIHNyYy9jb21tb25faW5pdC5jICAgICAgICB8IDMgKysrCi0gc3JjL2NvbW1vbl9pbnRlcmZhY2UuYyAgIHwgMyArKysKLSBzcmMvY29tbW9uX2lvLmMgICAgICAgICAgfCAzICsrKwotIHNyYy9jb21tb25faXRlcmF0b3IuYyAgICB8IDMgKysrCi0gc3JjL2NvbW1vbl9tYXAuYyAgICAgICAgIHwgMyArKysKLSBzcmMvY29tbW9uX3ZnYWFyYl9zdHViLmMgfCAzICsrKwotIHNyYy9saW51eF9kZXZtZW0uYyAgICAgICB8IDUgKysrLS0KLSBzcmMvb3BlbmJzZF9wY2kuYyAgICAgICAgfCAzICsrKwotIHNyYy9zb2x4X2RldmZzLmMgICAgICAgICB8IDMgKysrCi0gc3JjL3g4Nl9wY2kuYyAgICAgICAgICAgIHwgNCArKystCi0gMTEgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25fY2FwYWJpbGl0eS5jIGIvc3JjL2NvbW1vbl9jYXBhYmlsaXR5LmMKLWluZGV4IDQ4ODc0M2QuLjE1ZDM5NWQgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uX2NhcGFiaWxpdHkuYwotKysrIGIvc3JjL2NvbW1vbl9jYXBhYmlsaXR5LmMKLUBAIC0zMSw2ICszMSw5IEBACi0gICoKLSAgKiBcYXV0aG9yIElhbiBSb21hbmljayA8aWRyQHVzLmlibS5jb20+Ci0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25faW5pdC5jIGIvc3JjL2NvbW1vbl9pbml0LmMKLWluZGV4IGIxYzBjM2UuLmY3YjU5YmQgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uX2luaXQuYwotKysrIGIvc3JjL2NvbW1vbl9pbml0LmMKLUBAIC0yOCw2ICsyOCw5IEBACi0gICoKLSAgKiBcYXV0aG9yIElhbiBSb21hbmljayA8aWRyQHVzLmlibS5jb20+Ci0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25faW50ZXJmYWNlLmMgYi9zcmMvY29tbW9uX2ludGVyZmFjZS5jCi1pbmRleCA1OTc3OGNmLi5jYjk1ZTkwIDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbl9pbnRlcmZhY2UuYwotKysrIGIvc3JjL2NvbW1vbl9pbnRlcmZhY2UuYwotQEAgLTI4LDYgKzI4LDkgQEAKLSAgKgotICAqIFxhdXRob3IgSWFuIFJvbWFuaWNrIDxpZHJAdXMuaWJtLmNvbT4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25faW8uYyBiL3NyYy9jb21tb25faW8uYwotaW5kZXggZjVjOWU0NS4uZTk1ODZhZCAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25faW8uYwotKysrIGIvc3JjL2NvbW1vbl9pby5jCi1AQCAtMjIsNiArMjIsOSBAQAotICAqIEF1dGhvcjoKLSAgKglBZGFtIEphY2tzb24gPGFqYXhAcmVkaGF0LmNvbT4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25faXRlcmF0b3IuYyBiL3NyYy9jb21tb25faXRlcmF0b3IuYwotaW5kZXggY2NmNjU2ZC4uMmJlYjE4MCAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25faXRlcmF0b3IuYwotKysrIGIvc3JjL2NvbW1vbl9pdGVyYXRvci5jCi1AQCAtMjgsNiArMjgsOSBAQAotICAqCi0gICogXGF1dGhvciBJYW4gUm9tYW5pY2sgPGlkckB1cy5pYm0uY29tPgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbl9tYXAuYyBiL3NyYy9jb21tb25fbWFwLmMKLWluZGV4IDg3NTcxNTEuLmYxODU0YmIgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uX21hcC5jCi0rKysgYi9zcmMvY29tbW9uX21hcC5jCi1AQCAtMjEsNiArMjEsOSBAQAotICAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKLSAgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotZGlmZiAtLWdpdCBhL3NyYy9jb21tb25fdmdhYXJiX3N0dWIuYyBiL3NyYy9jb21tb25fdmdhYXJiX3N0dWIuYwotaW5kZXggOTM5NDI3My4uYzE3MDhmNiAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25fdmdhYXJiX3N0dWIuYwotKysrIGIvc3JjL2NvbW1vbl92Z2FhcmJfc3R1Yi5jCi1AQCAtMjMsNiArMjMsOSBAQAotICAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgKgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJwY2lhY2Nlc3MuaCIKLWRpZmYgLS1naXQgYS9zcmMvbGludXhfZGV2bWVtLmMgYi9zcmMvbGludXhfZGV2bWVtLmMKLWluZGV4IDEwZTNiZGUuLjBkMDU2N2MgMTAwNjQ0Ci0tLS0gYS9zcmMvbGludXhfZGV2bWVtLmMKLSsrKyBiL3NyYy9saW51eF9kZXZtZW0uYwotQEAgLTMyLDggKzMyLDkgQEAKLSAgKgotICAqIFxhdXRob3IgSWFuIFJvbWFuaWNrIDxpZHJAdXMuaWJtLmNvbT4KLSAgKi8KLS0KLS0jZGVmaW5lIF9HTlVfU09VUkNFCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLWRpZmYgLS1naXQgYS9zcmMvb3BlbmJzZF9wY2kuYyBiL3NyYy9vcGVuYnNkX3BjaS5jCi1pbmRleCA0ZDFiNWNkLi5iOGNlMzE4IDEwMDY0NAotLS0tIGEvc3JjL29wZW5ic2RfcGNpLmMKLSsrKyBiL3NyYy9vcGVuYnNkX3BjaS5jCi1AQCAtMTMsNiArMTMsOSBAQAotICAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GCi0gICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9zb2x4X2RldmZzLmMgYi9zcmMvc29seF9kZXZmcy5jCi1pbmRleCBmNTcyMzkzLi5jZjk2NDY3IDEwMDY0NAotLS0tIGEvc3JjL3NvbHhfZGV2ZnMuYwotKysrIGIvc3JjL3NvbHhfZGV2ZnMuYwotQEAgLTI1LDYgKzI1LDkgQEAKLSAvKgotICAqIFNvbGFyaXMgZGV2ZnMgaW50ZXJmYWNlcwotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5ncy5oPgotZGlmZiAtLWdpdCBhL3NyYy94ODZfcGNpLmMgYi9zcmMveDg2X3BjaS5jCi1pbmRleCA0OWMxY2FiLi4zMmRhYTA0IDEwMDY0NAotLS0tIGEvc3JjL3g4Nl9wY2kuYwotKysrIGIvc3JjL3g4Nl9wY2kuYwotQEAgLTE4LDggKzE4LDEwIEBACi0gICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YKLSAgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotLSNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAyLUZpeC1xdW90aW5nLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3MvMDAwMi1GaXgtcXVvdGluZy1pc3N1ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZkNjlhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAyLUZpeC1xdW90aW5nLWlzc3VlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA3NjVlMGEzOGNiOGM0MGY4ODY1YWY1Y2IzNTZmZmU2MDM5ZmZiMDhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIEtsYXVzbmVyIDx3aXpATmV0QlNELm9yZz4KLURhdGU6IFN1biwgMjIgTWFyIDIwMTUgMjE6Mzg6MjMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIEZpeCBxdW90aW5nIGlzc3VlLgotCi1tNCBoYXMgJ1tdJyBhcyBxdW90aW5nIGNoYXJhY3RlcnMsIHNvIGlmIHdlIHdhbnQgJ1tdJyB0bwotZW5kIHVwIGluIHRoZSBjb25maWd1cmUgc2NyaXB0LCB3ZSBuZWVkIHRvIHF1b3RlIHRoZW0gYWdhaW4uCi0KLVJlcG9ydGVkIGJ5IEdyZWcgVHJveGVsIDxnZHRAaXIuYmJuLmNvbT4uCi0KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBLbGF1c25lciA8d2l6QE5ldEJTRC5vcmc+Ci1SZXZpZXdlZC1ieTogQWxhbiBDb29wZXJzbWl0aCA8YWxhbi5jb29wZXJzbWl0aEBvcmFjbGUuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGU2N2U5ZTEuLjg4ODMzMGIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTc2LDcgKzc2LDcgQEAgY2FzZSAkaG9zdF9vcyBpbgotIAkJOzsKLSAJKm5ldGJzZCopCi0gCQljYXNlICRob3N0IGluCi0tCQkqaVszLTldODYqKQotKwkJKmlbWzMtOV1dODYqKQotIAkJCVBDSUFDQ0VTU19MSUJTPSIkUENJQUNDRVNTX0xJQlMgLWxpMzg2IgotIAkJCTs7Ci0gCQkqeDg2XzY0KnwqYW1kNjQqKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAzLWxpbnV4X3N5c2ZzLmMtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAzLWxpbnV4X3N5c2ZzLmMtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MTNjOGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3MvMDAwMy1saW51eF9zeXNmcy5jLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA2YmQyZjdmOTJlYWU3MTM2NjNmNGUxM2Y2ZTJjYjIzNTI2NjA3YjhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IEZyaSwgMSBNYXkgMjAxNSAxNjozNjo1MCArMDIwMAotU3ViamVjdDogW1BBVENIIDMvNF0gbGludXhfc3lzZnMuYzogSW5jbHVkZSA8bGltaXRzLmg+IGZvciBQQVRIX01BWAotCi1GaXhlcyBjb21waWxhdGlvbiB3aXRoIG11c2wgbGliYy4KLQotVGVzdGVkLWJ5OiBCZXJuZCBLdWhscyA8YmVybmQua3VobHNAdC1vbmxpbmUuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgotUmV2aWV3ZWQtYnk6IEFsYW4gQ29vcGVyc21pdGggPGFsYW4uY29vcGVyc21pdGhAb3JhY2xlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsYW4gQ29vcGVyc21pdGggPGFsYW4uY29vcGVyc21pdGhAb3JhY2xlLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gc3JjL2xpbnV4X3N5c2ZzLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saW51eF9zeXNmcy5jIGIvc3JjL2xpbnV4X3N5c2ZzLmMKLWluZGV4IDUwZDk0Y2YuLjNmOTVlNTMgMTAwNjQ0Ci0tLS0gYS9zcmMvbGludXhfc3lzZnMuYwotKysrIGIvc3JjL2xpbnV4X3N5c2ZzLmMKLUBAIC00NSw2ICs0NSw3IEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZhNmE2MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgUENJIGFjY2VzcyBsaWJyYXJ5IGZvciBYIgotCi1ERVNDUklQVElPTiA9ICJsaWJwY2lhY2Nlc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgWCB0byBhY2Nlc3MgdGhlIFwKLVBDSSBidXMgYW5kIGRldmljZXMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1jb25maWcuaC1iZWZvcmUtYW55dGhpbmctZWxzZS1pbi0uYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtcXVvdGluZy1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1saW51eF9zeXNmcy5jLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LURvbi10LWluY2x1ZGUtc3lzLWlvLmgtb24tYXJtLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImFjZTc4YWVjNzk5YjFjZjZkZmFlYTU1ZDM4NzllZDlmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3Zjg2NDY1NDU2MWU0YWM4NjI5YTBlZjljOGYwN2ZiYzFmODU5MmQxYjZjNDE4NDMxNTkzZTliYTJjZjJmY2YiCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Mjc3YWFkYTUyMjJiOWEyMmZiZjM0NzFmZjM2ODcwNjgiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNiNjgyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNS5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkdlbmVyaWMgUENJIGFjY2VzcyBsaWJyYXJ5IGZvciBYIgorCitERVNDUklQVElPTiA9ICJsaWJwY2lhY2Nlc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgWCB0byBhY2Nlc3MgdGhlIFwKK1BDSSBidXMgYW5kIGRldmljZXMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRG9uLXQtaW5jbHVkZS1zeXMtaW8uaC1vbi1hcm0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDgxMGFiMTdlMjRjMTQxOGRlZGY3MjA3ZmIyODQxZDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzUyYzU0ZTliM2MzMTFiNDM0N2NiNTBhZWE4NTY2ZmE0OGVhYjI3NDM0NmVhOGEwNmY3ZjE1ZGUzMjQwYjk5OSIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzdhYWRhNTIyMmI5YTIyZmJmMzQ3MWZmMzY4NzA2OCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTE0YzdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdGhhdCBwcm92aWRlcyB3ZWFrIGFsaWFzZXMgZm9yIHB0aHJlYWQgZnVuY3Rpb25zIgotREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHdlYWsgYWxpYXNlcyBmb3IgcHRocmVhZCBmdW5jdGlvbnMgXAotbm90IHByb3ZpZGVkIGluIGxpYmMgb3Igb3RoZXJ3aXNlIGF2YWlsYWJsZSBieSBkZWZhdWx0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1YQ0IiCi1TRUNUSU9OID0gIngxMS9saWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZWRjMWZlYTAzZDk1OWYwYzJkNzQzZmU1Y2E3NDZhZCIKLQotI0RFUEVORFMgPSAieGNiLXByb3RvIHhwcm90byBsaWJ4YXUgbGlieHNsdC1uYXRpdmUiCi0jIERFUEVORFMgKz0gInhzbHRwcm9jLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC9saWJwdGhyZWFkLXN0dWJzLSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlOGZhMzFiNDJlMTNmODdlOGY1YTdhMmI3MzFkYjdlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNWI2ZDU0ZTNjYzZmM2JhMjgwNjFkYTgxYWY2NGI5YTkyYjdiNzU3MzE5MDk4MTcyNDg4YTY2MGUzZDg3Mjk5IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OTk4NDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC40LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0aGF0IHByb3ZpZGVzIHdlYWsgYWxpYXNlcyBmb3IgcHRocmVhZCBmdW5jdGlvbnMiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgd2VhayBhbGlhc2VzIGZvciBwdGhyZWFkIGZ1bmN0aW9ucyBcCitub3QgcHJvdmlkZWQgaW4gbGliYyBvciBvdGhlcndpc2UgYXZhaWxhYmxlIGJ5IGRlZmF1bHQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PVhDQiIKK1NFQ1RJT04gPSAieDExL2xpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlZGMxZmVhMDNkOTU5ZjBjMmQ3NDNmZTVjYTc0NmFkIgorCisjREVQRU5EUyA9ICJ4Y2ItcHJvdG8geHByb3RvIGxpYnhhdSBsaWJ4c2x0LW5hdGl2ZSIKKyMgREVQRU5EUyArPSAieHNsdHByb2MtbmF0aXZlIGdwZXJmLW5hdGl2ZSIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0L2xpYnB0aHJlYWQtc3R1YnMtJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ4YzE1NDQ4NTRhOTRkYjBlNTE0OTljYzNhZmQ3OTdmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0ZDA1OTExYTMxNjVkM2IxODMyMWNjMDY3ZmRkMmYwMjNmMDY0MzZlMzkxYzZhMjhkZmY2MThhNzhkMmU3MzMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNzYxZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgbGlieDExLmluYwotCi1ERVNDUklQVElPTiArPSAiIFN1cHBvcnQgZm9yIFhDTVMgYW5kIFhMT0NBTEUgaXMgZGlzYWJsZWQgaW4gXAotdGhpcyB2ZXJzaW9uLiIKLQotU1JDX1VSSSArPSAiZmlsZTovL1gxOE5DTVNzdHVicy5kaWZmIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtZGlzYWJsZS14bG9jYWxlLmRpZmYgXAotICAgICAgICAgICAgZmlsZTovL2ZpeC11dGY4LXdyb25nLWRlZmluZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUlBST1ZJREVTXyR7UE59LWRldiA9ICJsaWJ4MTEtZGV2IgotUlBST1ZJREVTXyR7UE59LWxvY2FsZSA9ICJsaWJ4MTEtbG9jYWxlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQ1NDIyNzA4MmYzYWEyYzU5NmYwYjNhM2ZiYjkxNzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjdjNzQ4YmUzYWExNmVjMmNiZDgxZWRjODQ3ZTliNmVlMDNmODgxNDNhYjI3MGZiNTlmNThhMDQ0ZDM0ZTQ0MSIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUteGxvY2FsZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NWY5NmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi41LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgbGlieDExLmluYworCitERVNDUklQVElPTiArPSAiIFN1cHBvcnQgZm9yIFhDTVMgYW5kIFhMT0NBTEUgaXMgZGlzYWJsZWQgaW4gXAordGhpcyB2ZXJzaW9uLiIKKworU1JDX1VSSSArPSAiZmlsZTovL1gxOE5DTVNzdHVicy5kaWZmIFwKKyAgICAgICAgICAgIGZpbGU6Ly9maXgtZGlzYWJsZS14bG9jYWxlLmRpZmYgXAorICAgICAgICAgICAgZmlsZTovL2ZpeC11dGY4LXdyb25nLWRlZmluZS5wYXRjaCBcCisgICAgICAgICAgICIKKworUlBST1ZJREVTXyR7UE59LWRldiA9ICJsaWJ4MTEtZGV2IgorUlBST1ZJREVTXyR7UE59LWxvY2FsZSA9ICJsaWJ4MTEtbG9jYWxlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGY2MThkYjcwYzQwNTRjYTY3Y2VlMGNjMTU2YTQyNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQzODkwZGIyYmEyMjViYThjNTVjYTYzYzY0MDljMWViYjA3OGEyODA2ZGU1OWZiMTYzNDI3NjhhZTYzNDM1ZCIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUteGxvY2FsZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9GaXgtaGFuZ2luZy1pc3N1ZS1pbi1fWFJlcGx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5Nzg4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9GaXgtaGFuZ2luZy1pc3N1ZS1pbi1fWFJlcGx5LnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gNTIzNWE3ZjM2OTJhNGMzYzkwZGQ0YWMxYmUzYzY3MDM4ODkwNGJiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRhdHUgRnJpc2sgPHRhdHUuZnJpc2tAZ2UuY29tPgorRGF0ZTogVHVlLCAxNCBNYXIgMjAxNyAxNDo0MToyNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBGaXggaGFuZ2luZyBpc3N1ZSBpbiBfWFJlcGx5CisKK0Fzc3VtZSBldmVudCBxdWV1ZSBpcyBlbXB0eSBpZiBhbm90aGVyIHRocmVhZCBpcyBibG9ja2luZyB3YWl0aW5nIGZvciBldmVudC4KKworSWYgb25lIHRocmVhZCB3YXMgYmxvY2tpbmcgd2FpdGluZyBmb3IgYW4gZXZlbnQgYW5kIGFub3RoZXIgdGhyZWFkIHNlbnQgYQorcmVwbHkgdG8gdGhlIFggc2VydmVyLCBib3RoIHRocmVhZHMgZ290IGJsb2NrZWQgdW50aWwgYW4gZXZlbnQgd2FzCityZWNlaXZlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xNzE0NTgvXQorCitUaGlzIHBhdGNoIG5lZWRzIHRvIGJlIHJlbW92ZWQgb25jZSB0aGUgY29ycmVzcG9uZGluZyBwYXRjaCBoYXMgYmVlbiBtZXJnZWQgdXBzdHJlYW0uCisKK2h0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xNzE0NTgvCisKK1NpZ25lZC1vZmYtYnk6IFRhdHUgRnJpc2sgPHRhdHUuZnJpc2tAZ2UuY29tPgorU2lnbmVkLW9mZi1ieTogSm9zZSBBbGFyY29uIDxqb3NlLmFsYXJjb25AZ2UuY29tPgorLS0tCisgc3JjL3hjYl9pby5jIHwgMTkgKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3hjYl9pby5jIGIvc3JjL3hjYl9pby5jCitpbmRleCA1OTg3MzI5Li5jNjRlYjA0IDEwMDY0NAorLS0tIGEvc3JjL3hjYl9pby5jCisrKysgYi9zcmMveGNiX2lvLmMKK0BAIC02MDksMjIgKzYwOSwxNyBAQCBTdGF0dXMgX1hSZXBseShEaXNwbGF5ICpkcHksIHhSZXBseSAqcmVwLCBpbnQgZXh0cmEsIEJvb2wgZGlzY2FyZCkKKyAJCSAqIGxldHRpbmcgYW55b25lIGVsc2UgcHJvY2VzcyB0aGlzIHNlcXVlbmNlIG51bWJlciwgd2UKKyAJCSAqIG5lZWQgdG8gcHJvY2VzcyBhbnkgZXZlbnRzIHRoYXQgc2hvdWxkIGhhdmUgY29tZQorIAkJICogZWFybGllci4gKi8KKy0KKyAJCWlmKGRweS0+eGNiLT5ldmVudF9vd25lciA9PSBYbGliT3duc0V2ZW50UXVldWUpCisgCQl7CisgCQkJeGNiX2dlbmVyaWNfcmVwbHlfdCAqZXZlbnQ7CistCQkJLyogSWYgc29tZSB0aHJlYWQgaXMgYWxyZWFkeSB3YWl0aW5nIGZvciBldmVudHMsCistCQkJICogaXQgd2lsbCBnZXQgdGhlIGZpcnN0IG9uZS4gVGhhdCB0aHJlYWQgbXVzdAorLQkJCSAqIHByb2Nlc3MgdGhhdCBldmVudCBiZWZvcmUgd2UgY2FuIGNvbnRpbnVlLiAqLworLQkJCS8qIEZJWE1FOiBUaGF0IGV2ZW50IG1pZ2h0IGJlIGFmdGVyIHRoaXMgcmVwbHksCistCQkJICogYW5kIG1pZ2h0IG5ldmVyIGV2ZW4gY29tZS0tb3IgdGhlcmUgbWlnaHQgYmUKKy0JCQkgKiBtdWx0aXBsZSB0aHJlYWRzIHRyeWluZyB0byBnZXQgZXZlbnRzLiAqLworLQkJCXdoaWxlKGRweS0+eGNiLT5ldmVudF93YWl0ZXIpCistCQkJeyAvKiBuZWVkIGJyYWNlcyBhcm91bmQgQ29uZGl0aW9uV2FpdCAqLworLQkJCQlDb25kaXRpb25XYWl0KGRweSwgZHB5LT54Y2ItPmV2ZW50X25vdGlmeSk7CisrCisrCQkJLyogQXNzdW1lIGV2ZW50IHF1ZXVlIGlzIGVtcHR5IGlmIGFub3RoZXIgdGhyZWFkIGlzIGJsb2NraW5nCisrCQkJICogd2FpdGluZyBmb3IgZXZlbnQuICovCisrCQkJaWYoIWRweS0+eGNiLT5ldmVudF93YWl0ZXIpCisrCQkJeworKwkJCQl3aGlsZSgoZXZlbnQgPSBwb2xsX2Zvcl9yZXNwb25zZShkcHkpKSkKKysJCQkJCWhhbmRsZV9yZXNwb25zZShkcHksIGV2ZW50LCBUcnVlKTsKKyAJCQl9CistCQkJd2hpbGUoKGV2ZW50ID0gcG9sbF9mb3JfZXZlbnQoZHB5KSkpCistCQkJCWhhbmRsZV9yZXNwb25zZShkcHksIGV2ZW50LCBUcnVlKTsKKyAJCX0KKyAKKyAJCXJlcS0+cmVwbHlfd2FpdGVyID0gMDsKKy0tIAorMi4xMC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhYTk1ZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIGxpYngxMS5pbmMKLWluaGVyaXQgZ2V0dGV4dAotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kaXNhYmxlX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQ1NDIyNzA4MmYzYWEyYzU5NmYwYjNhM2ZiYjkxNzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjdjNzQ4YmUzYWExNmVjMmNiZDgxZWRjODQ3ZTliNmVlMDNmODgxNDNhYjI3MGZiNTlmNThhMDQ0ZDM0ZTQ0MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3YmYyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi41LmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgbGlieDExLmluYworaW5oZXJpdCBnZXR0ZXh0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiZmlsZTovL2Rpc2FibGVfdGVzdHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2ggXAorICAgICAgICAgICAiCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICBzZWQgLWkgLWUgIi9YMTFfQ0ZMQUdTL2QiICR7Qn0vc3JjL3V0aWwvTWFrZWZpbGUKK30KKworU1JDX1VSSVttZDVzdW1dID0gIjBmNjE4ZGI3MGM0MDU0Y2E2N2NlZTBjYzE1NmE0MjU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRkMzg5MGRiMmJhMjI1YmE4YzU1Y2E2M2M2NDA5YzFlYmIwNzhhMjgwNmRlNTlmYjE2MzQyNzY4YWU2MzQzNWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgppbmRleCA0NTVlODY5Li43YzdmYTNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKQEAgLTE2LDYgKzE2LDcgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQveG9yZy9saWIvbGliWENhbGlicmF0ZSBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgteGNiLnBhdGNoIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHQvMDAwMS1saWJYdC11dGlsLWRvbi10LWxpbmstbWFrZXN0cnMtd2l0aC10YXJnZXQtY2ZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dC8wMDAxLWxpYlh0LXV0aWwtZG9uLXQtbGluay1tYWtlc3Rycy13aXRoLXRhcmdldC1jZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE2OTFhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHQvMDAwMS1saWJYdC11dGlsLWRvbi10LWxpbmstbWFrZXN0cnMtd2l0aC10YXJnZXQtY2ZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYjBjMGU2ZDkwYmQ5OWE2OTk3MDFjOTU0MjY0MGFkYjIxOGY1ZDUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorRGF0ZTogTW9uLCAxMCBKdWwgMjAxNyAxNjo1MToxMyArMDMwMAorU3ViamVjdDogW1BBVENIXSBsaWJYdDogdXRpbDogZG9uJ3QgbGluayBtYWtlc3RycyB3aXRoIHRhcmdldCBjZmxhZ3MKKworVGhlIGxpbmU6IEFNX0NGTEFHUyA9ICQoWFRfQ0ZMQUdTKQoraW4gdXRpbC9NYWtlZmlsZS5hbSBpcyB3cm9uZyBiZWNhdXNlIGl0IGFkZHMgdGFyZ2V0IGNmbGFncyB0byB0aGUKK2NvbXBpbGF0aW9uIG9mIG1ha2VzdHJzLCB3aGljaCBpcyBidWlsdCBmb3IgdGhlIGJ1aWxkIG1hY2hpbmUsIHdoaWNoCitsZWFkcyB0byBidWlsZCBmYWlsdXJlcyB3aGVuIGNyb3NzLWNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyB1dGlsL01ha2VmaWxlLmFtIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3V0aWwvTWFrZWZpbGUuYW0gYi91dGlsL01ha2VmaWxlLmFtCitpbmRleCA4MDBiMzViLi5mMmRkMWY5IDEwMDY0NAorLS0tIGEvdXRpbC9NYWtlZmlsZS5hbQorKysrIGIvdXRpbC9NYWtlZmlsZS5hbQorQEAgLTExLDcgKzExLDYgQEAgRVhUUkFfRElTVCA9IFwKKyAJU3RyRGVmcy5odCBcCisgCXN0cmluZy5saXN0CisgCistQU1fQ0ZMQUdTID0gJChYVF9DRkxBR1MpCisgbWFrZXN0cnNfU09VUkNFUyA9IG1ha2VzdHJzLmMKKyAKKyAKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHRfMS4xLjUuYmIKaW5kZXggYzFlZDBiYi4uMTgwZDAwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0XzEuMS41LmJiCkBAIC0yMyw3ICsyMyw5IEBACiAKIFhPUkdfUE4gPSAibGliWHQiCiAKLVNSQ19VUkkgKz0gICJmaWxlOi8vbGlieHRfZml4X2Zvcl94MzIucGF0Y2giCitTUkNfVVJJICs9ICAiZmlsZTovL2xpYnh0X2ZpeF9mb3JfeDMyLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJYdC11dGlsLWRvbi10LWxpbmstbWFrZXN0cnMtd2l0aC10YXJnZXQtY2ZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMDkwNGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgotCi1ERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCi1XaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKLWZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAotV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAotc3lzdGVtcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCi0KLVNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiMWY2ODg4NjMzOTExNmFlMzg3NzA1MjIwNGM5YjliODgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDFiZmM3MjU1M2M0ZTNlZjFjZDZmMTNlZWMwNDg4Y2Y5NDA0OThiNjEyYWI4YTBiMzYyZTcwOTBjOTRiYzEzNCIKLQotU0VDVElPTiA9ICJ4MTEvbGlicyIKLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIHZpcnR1YWwvZ2V0dGV4dCB1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKLSAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFhNTFhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIxLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCisKK0RFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKK1dpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAorZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCitXaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCitzeXN0ZW1zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKKworU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZjk0OThlODk1NDkwN2QwYTQ3ZjBmN2IzZDIxZTFlZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGMxNzA0OWZhZTEyOWZjMTQ4NzU2NTZkYTlhYTMwOTllMzAzMWQ2Y2UwZWUxZDc3YWFlMTkwZmQ5ZWRjZWM1IgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgppbmRleCBiODhkMTU3Li4zYTk4OTI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIKQEAgLTE3LDMgKzE3LDUgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvcHJvdG8vY2FsaWJyYXRlcHJvdG8gXAogICAgICAgICAgICBmaWxlOi8vZml4LnBhdGNoO2FwcGx5PXllcyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKaW5kZXggMTY1MGM3OS4uODYzZDgwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCkBAIC0xMjMsNyArMTIzLDcgQEAKIE9QRU5HTF9QS0dDT05GSUdTID0gImRyaSBnbHggZ2xhbW9yIGRyaTMgeHNobWZlbmNlIgogUEFDS0FHRUNPTkZJRyA/Pz0gImRyaTIgdWRldiAke1hPUkdfQ1JZUFRPfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnJHtPUEVOR0xfUEtHQ09ORklHU30nLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDZkZjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1yZXF1aXJlIHhzZXJ2ZXIteG9yZy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL211c2wtYXJtLWluYi1vdXRiLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtY2hlY2stZm9yLUNMT0NLX01PTk9UT05JQy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtc2Nhbm5lci1hbmQtcHJvdG9jb2xzLWxvY2F0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1vZGVzZXR0aW5nLUZpeC0xNi1iaXQtZGVwdGgtYnBwLW1vZGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtUmVtb3ZlLWNoZWNrLWZvci11c2VTSUdJTy1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwOTcxLTEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwOTcxLTIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwOTcxLTMucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNhYThlZTdiMjk1MGFiYmY3MzQzNDdkMTM3NTI5ZmI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc5YWUyY2YzOWQzZjZjNGE5MTIwMWQ4ZGFkNTQ5ZDFkNzc0YjM0MjAwNzNjNWE3MGQzOTAwNDBhYTk2NWE3ZmIiCi0KLSMgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgbm93IGludGVncmF0ZWQgaW50byB0aGUgc2VydmVyLCBzbyBkZWNsYXJlIHRoZSBtaWdyYXRpb24KLSMgcGF0aCBmb3IgaW4tcGxhY2UgdXBncmFkZXMuCi0KLVJSRVBMQUNFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SUFJPVklERVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgotUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZWY2YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS4zLmJiCkBAIC0wLDAgKzEsMzUgQEAKK3JlcXVpcmUgeHNlcnZlci14b3JnLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vbXVzbC1hcm0taW5iLW91dGIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBcCisgICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDE1ZDJmYzRiOWYyYmZlN2E2MjZlZGI2M2E2MmM2NWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjc3YTgxNjZlMDM0NzQ3MTkyMzhkZmUzOTZjZTY3M2M0MjM0NzM1NDY0ZDZkYWRmMjk1OWI2MDBkMjBlNWE5OCIKKworIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgorIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KKworUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCitSQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHZpZGVvLXRlc3RzL3h2aWRlby10ZXN0c19naXQuYmIKaW5kZXggNTE4MzlkZC4uMjY2N2RkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiCkBAIC04LDYgKzgsNyBAQAogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Rlc3QteHZpZGVvIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgppbmRleCA5NTdjYjcwLi43NzA1NzVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJHZW5lcmF0ZXMgdHJhY2VzIG9mIEkvTyB0cmFmZmljIG9uIGJsb2NrIGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwOi8vYnJpY2sua2VybmVsLmRrL3NuYXBzLyIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1saW51eF8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LWxpbnV4XzEuOS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1saW51eF8xLjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbGludXhfMS45LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LXRlc3RzXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDAwNTI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSBjcnlwdG9kZXYuaW5jCi0KLVNVTU1BUlkgPSAiQSB0ZXN0IHN1aXRlIGZvciAvZGV2L2NyeXB0byBkZXZpY2UgZHJpdmVyIgotCi1ERVBFTkRTICs9ICJvcGVuc3NsIgotCi1TUkNfVVJJICs9ICIgXAotZmlsZTovLzAwMDEtQWRkLXRoZS1jb21waWxlLWFuZC1pbnN0YWxsLXJ1bGVzLWZvci1jcnlwdG9kZXYtdGVzdC5wYXRjaCBcCi0iCi0KLUVYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IiBQUkVGSVg9IiR7RH0iJwotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UgdGVzdHByb2dzCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsX3Rlc3RzCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS90ZXN0c19jcnlwdG9kZXYvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFmYjNkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS45LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgY3J5cHRvZGV2LmluYworCitTVU1NQVJZID0gIkEgdGVzdCBzdWl0ZSBmb3IgL2Rldi9jcnlwdG8gZGV2aWNlIGRyaXZlciIKKworREVQRU5EUyArPSAib3BlbnNzbDEwIgorCitTUkNfVVJJICs9ICIgXAorZmlsZTovLzAwMDEtQWRkLXRoZS1jb21waWxlLWFuZC1pbnN0YWxsLXJ1bGVzLWZvci1jcnlwdG9kZXYtdGVzdC5wYXRjaCBcCisiCisKK0VYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IiBQUkVGSVg9IiR7RH0iJworCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UgdGVzdHByb2dzCit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsX3Rlc3RzCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwppbmRleCA0YWUwYTJiLi41MDM2NmU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwpAQCAtMywxNCArMywxMCBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1TUkNfVVJJID0gImh0dHA6Ly9ud2wuY2MvcHViL2NyeXB0b2Rldi1saW51eC9jcnlwdG9kZXYtbGludXgtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzA2ZDZiNTYwYzZlNDVkYzMxN2RhZTQ3Yzc0NzA2ZmE0M2Y0YTMxZDgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2IxODZmNjgyNjc5MzgzZThiNTgwNjI0MDkyNzkwMzczMGNlODVkOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkanVzdC10by1hbm90aGVyLWNoYW5nZS1pbi10aGUtdXNlci1wYWdlLUFQSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9rZXJuZWwtNC0xMC1jaGFuZ2VzLnBhdGNoIgorU1JDX1VSSSA9ICJodHRwOi8vbndsLmNjL3B1Yi9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4LSR7UFZ9LnRhci5neiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjAyNjQ0Y2M0Y2QwMjMwMWUwYjUwM2EzMzJlYjJmMGI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3ZmFiZGU5ZmI2N2IyODZhOTZjNGY0NWI1OTRiMGVjY2QwZjc2MWI0OTU3MDVjMThmMmFlOTQ2MWI4MzEzNzYiCitTUkNfVVJJW21kNXN1bV0gPSAiY2I0ZTBlZDllNTkzNzcxNmM3YzhhN2JlODQ4OTViNmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWY0YzBiNDliMzBlMjY3ZDc3NmY3OTQ1NWQwOWM3MGNjOWMxMmM4NmVlZTQwMGEwZDBhMGNkMWQ4ZTQ2Nzk1MCIKIAogUyA9ICIke1dPUktESVJ9L2NyeXB0b2Rldi1saW51eC0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRqdXN0LXRvLWFub3RoZXItY2hhbmdlLWluLXRoZS11c2VyLXBhZ2UtQVBJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRqdXN0LXRvLWFub3RoZXItY2hhbmdlLWluLXRoZS11c2VyLXBhZ2UtQVBJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjc1Mjc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUFkanVzdC10by1hbm90aGVyLWNoYW5nZS1pbi10aGUtdXNlci1wYWdlLUFQSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gZjEyNmU0ODM3ZTYzMzRkMDQ2NDU0MDk5NWRmNzQyNmZlZGY2YjE3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgV2Vpc2VyIDxtaWNoYWVsLndlaXNlckBnbXguZGU+Ci1EYXRlOiBGcmksIDExIE5vdiAyMDE2IDE4OjA5OjMyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkanVzdCB0byBhbm90aGVyIGNoYW5nZSBpbiB0aGUgdXNlciBwYWdlIEFQSQotCi00LjkuMCB3aWxsIHJlcGxhY2UgdGhlIHdyaXRlIGFuZCBmb3JjZSBmbGFncyBvZiBnZXRfdXNlcl9wYWdlc19yZW1vdGUoKQotd2l0aCBhIGd1cF9mbGFncyBwYXJhbWV0ZXJbMV0uIERpc3Rpbmd1aXNoIHRoZSB0d28gQVBJcyBiYXNlZCBvbiBrZXJuZWwKLXZlcnNpb24gd2UncmUgY29tcGlsaW5nIGZvci4KLQotWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9jb21taXQvOWJlYWUxZWE4OTMwNWE5NjY3Y2VhYWI2ZDBiZjQ2YTA0NWFkNzFlNwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBTY2h1bHR6IDxkLnNjaHVsdHpAcGh5dGVjLmRlPgotLS0tCi0gemMuYyB8IDggKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS96Yy5jIGIvemMuYwotaW5kZXggYTk3YjQ5Zi4uZTc2NmVlMyAxMDA2NDQKLS0tLSBhL3pjLmMKLSsrKyBiL3pjLmMKLUBAIC02NSw3ICs2NSwxMyBAQCBpbnQgX19nZXRfdXNlcmJ1Zih1aW50OF90IF9fdXNlciAqYWRkciwgdWludDMyX3QgbGVuLCBpbnQgd3JpdGUsCi0gCXJldCA9IGdldF91c2VyX3BhZ2VzKAotICNlbmRpZgotIAkJCXRhc2ssIG1tLAotLQkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIHBnY291bnQsIHdyaXRlLCAwLCBwZywgTlVMTCk7Ci0rCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwKLSsjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA5LCAwKSkKLSsJCQl3cml0ZSA/IEZPTExfV1JJVEUgOiAwLAotKyNlbHNlCi0rCQkJd3JpdGUsIDAsCi0rI2VuZGlmCi0rCQkJcGcsIE5VTEwpOwotIAl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwotIAlpZiAocmV0ICE9IHBnY291bnQpCi0gCQlyZXR1cm4gLUVJTlZBTDsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRGlzYWJsZS1pbnN0YWxsaW5nLWhlYWRlci1maWxlLXByb3ZpZGVkLWJ5LWFub3RoZXItcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLURpc2FibGUtaW5zdGFsbGluZy1oZWFkZXItZmlsZS1wcm92aWRlZC1ieS1hbm90aGVyLXAucGF0Y2gKaW5kZXggYTU4MGZjNi4uODg1YjU4MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRGlzYWJsZS1pbnN0YWxsaW5nLWhlYWRlci1maWxlLXByb3ZpZGVkLWJ5LWFub3RoZXItcC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1EaXNhYmxlLWluc3RhbGxpbmctaGVhZGVyLWZpbGUtcHJvdmlkZWQtYnktYW5vdGhlci1wLnBhdGNoCkBAIC03LDIyICs3LDE4IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIE9FIHNwZWNpZmljIF0KIC0tLQotIE1ha2VmaWxlIHwgMiAtLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorIE1ha2VmaWxlIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGQ2NmVmMjYuLjhlOTdjNmEgMTAwNjQ0CitpbmRleCA1YTA4MGUwLi5iZjAyMzk2IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtMjMsOCArMjMsNiBAQCBpbnN0YWxsOiBtb2R1bGVzX2luc3RhbGwKK0BAIC0zMyw3ICszMyw2IEBAIGluc3RhbGw6IG1vZHVsZXNfaW5zdGFsbAogIAogIG1vZHVsZXNfaW5zdGFsbDoKLSAJbWFrZSAtQyAkKEtFUk5FTF9ESVIpIFNVQkRJUlM9YHB3ZGAgbW9kdWxlc19pbnN0YWxsCi0tCUBlY2hvICJJbnN0YWxsaW5nIGNyeXB0b2Rldi5oIGluICQoUFJFRklYKS91c3IvaW5jbHVkZS9jcnlwdG8gLi4uIgotLQlAaW5zdGFsbCAtRCBjcnlwdG8vY3J5cHRvZGV2LmggJChQUkVGSVgpL3Vzci9pbmNsdWRlL2NyeXB0by9jcnlwdG9kZXYuaAorIAkkKE1BS0UpICQoS0VSTkVMX01BS0VfT1BUUykgbW9kdWxlc19pbnN0YWxsCistCWluc3RhbGwgLW0gNjQ0IC1EIGNyeXB0by9jcnlwdG9kZXYuaCAkKERFU1RESVIpLyQoaW5jbHVkZWRpcikvY3J5cHRvL2NyeXB0b2Rldi5oCiAgCiAgY2xlYW46Ci0gCW1ha2UgLUMgJChLRVJORUxfRElSKSBTVUJESVJTPWBwd2RgIGNsZWFuCi0tLSAKLTEuOS4xCi0KKyAJJChNQUtFKSAkKEtFUk5FTF9NQUtFX09QVFMpIGNsZWFuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDZkNmI1NjBjNmU0NWRjMzE3ZGFlNDdjNzQ3MDZmYTQzZjRhMzFkOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wNmQ2YjU2MGM2ZTQ1ZGMzMTdkYWU0N2M3NDcwNmZhNDNmNGEzMWQ4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjU1NmUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wNmQ2YjU2MGM2ZTQ1ZGMzMTdkYWU0N2M3NDcwNmZhNDNmNGEzMWQ4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBmMTRiNDcwNmIwZDA0OTg4ZTdlNWJjOGM0ZDJhZWZlZjlmMDI5ZDlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBXZWlzZXIgPG1pY2hhZWwud2Vpc2VyQGdteC5kZT4KLURhdGU6IEZyaSwgNSBBdWcgMjAxNiAxODo0Mzo1NSArMDIwMAotU3ViamVjdDogW1BBVENIXSBBZGp1c3QgdG8gcmVjZW50IHVzZXIgcGFnZSBBUEkgY2hhbmdlcwotCi00LjYuMCBiYXNpY2FsbHkgcmVuYW1lZCBnZXRfdXNlcl9wYWdlcygpIHRvIGdldF91c2VyX3BhZ2VzX3JlbW90ZSgpIGFuZAotaW50cm9kdWNlZCBhIG5ldyBnZXRfdXNlcl9wYWdlcygpIHRoYXQgYWx3YXlzIHdvcmtzIG9uIHRoZSBjdXJyZW50Ci10YXNrLlsxXSBEaXN0aW5ndWlzaCB0aGUgdHdvIEFQSXMgYmFzZWQgb24ga2VybmVsIHZlcnNpb24gd2UncmUKLWNvbXBpbGluZyBmb3IuCi0KLUFsc28sIHRoZXJlIHNlZW1zIHRvIGhhdmUgYmVlbiBhIG1hc3NpdmUgY2xlYW5zaW5nIG9mCi1wYWdlX2NhY2hlX3JlbGVhc2UocGFnZSkgaW4gZmF2b3VyIG9mIHB1dF9wYWdlKHBhZ2UpWzJdIHdoaWNoIHdhcyBhbgotYWxpYXMgZm9yIHB1dF9wYWdlKHBhZ2UpWzNdIHNpbmNlIDIuNi4wLiBCZWZvcmUgdGhhdCBiZWdpbm5pbmcgd2l0aAotMi40LjAgYm90aCBwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSkgYW5kIHB1dF9wYWdlKHBhZ2UpIGhhdmUgYmVlbiBhbGlhc2VzCi1mb3IgX19mcmVlX3BhZ2UocGFnZSkuIFNvIHVzaW5nIHB1dF9wYWdlKCkgaW5zdGVhZCBvZgotcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpIHdpbGwgcHJvZHVjZSBpZGVudGljYWwgY29kZSBmb3IgYW55dGhpbmcgYWZ0ZXIKLTIuNC4wLgotCi1bMV0gaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTYvMi8xMC81NTUKLVsyXSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1mc2RldmVsL21zZzk1OTIzLmh0bWwKLVszXSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1mc2RldmVsL21zZzk1OTIyLmh0bWwKLS0tLQotIHpjLmMgfCA5ICsrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gbWFzdGVyIGZvciA0Ljgga2VybmVsc10KLQotSW5kZXg6IGNyeXB0b2Rldi1saW51eC0xLjgvemMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNyeXB0b2Rldi1saW51eC0xLjgub3JpZy96Yy5jCi0rKysgY3J5cHRvZGV2LWxpbnV4LTEuOC96Yy5jCi1AQCAtNTksNyArNTksMTIgQEAgaW50IF9fZ2V0X3VzZXJidWYodWludDhfdCBfX3VzZXIgKmFkZHIsCi0gCX0KLSAKLSAJZG93bl9yZWFkKCZtbS0+bW1hcF9zZW0pOwotLQlyZXQgPSBnZXRfdXNlcl9wYWdlcyh0YXNrLCBtbSwKLSsjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA2LCAwKSkKLSsJcmV0ID0gZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKAotKyNlbHNlCi0rCXJldCA9IGdldF91c2VyX3BhZ2VzKAotKyNlbmRpZgotKwkJCXRhc2ssIG1tLAotIAkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIHBnY291bnQsIHdyaXRlLCAwLCBwZywgTlVMTCk7Ci0gCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7Ci0gCWlmIChyZXQgIT0gcGdjb3VudCkKLUBAIC0xMTksNyArMTI0LDcgQEAgdm9pZCByZWxlYXNlX3VzZXJfcGFnZXMoc3RydWN0IGNzZXNzaW9uCi0gCQllbHNlCi0gCQkJc2VzLT5yZWFkb25seV9wYWdlcy0tOwotIAotLQkJcGFnZV9jYWNoZV9yZWxlYXNlKHNlcy0+cGFnZXNbaV0pOwotKwkJcHV0X3BhZ2Uoc2VzLT5wYWdlc1tpXSk7Ci0gCX0KLSAJc2VzLT51c2VkX3BhZ2VzID0gMDsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvY2IxODZmNjgyNjc5MzgzZThiNTgwNjI0MDkyNzkwMzczMGNlODVkOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9jYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjBlYWI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9jYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjc5ICswLDAgQEAKLUZyb20gY2IxODZmNjgyNjc5MzgzZThiNTgwNjI0MDkyNzkwMzczMGNlODVkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgV2Vpc2VyIDxtaWNoYWVsLndlaXNlckBnbXguZGU+Ci1EYXRlOiBGcmksIDUgQXVnIDIwMTYgMTc6MjY6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBza2NpcGhlciBpbiBhZGRpdGlvbiB0byBhYmxrY2lwaGVyIEFQSQotCi1UaGUgYWJsa2NpcGhlciBBUEkgaXMgYmVpbmcgcGhhc2VkIG91dFsxXS4gVGhlIHVuaWZpZWQgc2tjaXBoZXIgQVBJCi1zZWVtcyB0byBoYXZlIG1hZGUgaXRzIGVudHJ5IHdpdGggNC4zLlszLCA0XSBCeSB3aGF0IGNhbiBiZSBzZWVuIGZyb20KLW1pZ3JhdGlvbiBwYXRjaGVzWzEuZmYuXSwgaXQncyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuCi0KLUFsc28sIGRlYWxsb2NhdG9ycyBzdWNoIGFzIGNyeXB0b19mcmVlX3NrY2lwaGVyKCkgYXJlIE5VTEwtc2FmZSBub3dbMl0uCi0KLUFkZCBhIG5ldyBoZWFkZXIgY2lwaGVyYXBpLmggdG8gYWlkIG1pZ3JhdGlvbiBmcm9tIGFibGtjaXBoZXIgdG8gc2tjaXBoZXIgYW5kCi1yZXRhaW4gc3VwcG9ydCBmb3Igb2xkIGtlcm5lbHMuIE1ha2UgaXQgZGVjaWRlIHdoaWNoIEFQSSB0byB1c2UgYW5kIHByb3ZpZGUKLWFwcHJvcHJpYXRlIGZ1bmN0aW9uIGNhbGxzIGFuZCB0eXBlIGRlZmluaXRpb25zLiBTaW5jZSB0aGUgYWJsa2NpcGhlciBhbmQKLXNrY2lwaGVyIEFQSXMgYXJlIHNvIHNpbWlsYXIsIHRob3NlIGFyZSBtYWlubHkgZGVmaW5lcyBmb3IgY29ycmVzcG9uZGluZwotcHNldWRvLWZ1bmN0aW9ucyBpbiBuYW1lc3BhY2UgY3J5cHRvZGV2XyBkZXJpdmVkIGRpcmVjdGx5IGZyb20gdGhlaXIgQVBJCi1jb3VudGVycGFydHMuCi0KLUNvbXBpbGVzIGFuZCB3b3JrcyAoaS5lLiBjaGVja3MgcGFzcykgd2l0aCBEZWJpYW4gdGVzdGluZyA0LjYuNCBrZXJuZWwKLWFzIHdlbGwgYXMgNC44LXJjMisgTGludXMgZ2l0IHRyZWUgYXMgb2YgdG9kYXkuIChCb3RoIHJlcXVpcmUgYSBmaXggZm9yCi1jaGFuZ2VkIHBhZ2UgYWNjZXNzIEFQSVs1XS4pCi0KLVsxXSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1jcnlwdG8vbXNnMTgxMzMuaHRtbAotWzJdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWNyeXB0by9tc2cxODE1NC5odG1sLCBsaW5lIDEyMAotWzNdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWNyeXB0by9tc2cxNjM3My5odG1sCi1bNF0gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtY3J5cHRvL21zZzE2Mjk0Lmh0bWwKLVs1XSBodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eC9wdWxsLzE0Ci0tLS0KLSBjaXBoZXJhcGkuaCB8IDYwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGNyeXB0bGliLmMgIHwgNDAgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGNyeXB0bGliLmggIHwgIDYgKysrKy0tCi0gaW9jdGwuYyAgICAgfCAgNCArKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY2lwaGVyYXBpLmgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBtYXN0ZXIgZm9yIDQuOCBrZXJuZWxzXQotCi1JbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC9jaXBoZXJhcGkuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGNyeXB0b2Rldi1saW51eC0xLjgvY2lwaGVyYXBpLmgKLUBAIC0wLDAgKzEsNjAgQEAKLSsjaWZuZGVmIENJUEhFUkFQSV9ICi0rIyBkZWZpbmUgQ0lQSEVSQVBJX0gKLSsKLSsjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgotKwotKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkpCi0rIyBpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KLSsKLSt0eXBlZGVmIHN0cnVjdCBhYmxrY2lwaGVyX2FsZyBjcnlwdG9kZXZfYmxrY2lwaGVyX2FsZ190OwotK3R5cGVkZWYgc3RydWN0IGNyeXB0b19hYmxrY2lwaGVyIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0IGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF90OwotKwotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYWxsb2NfYmxrY2lwaGVyIGNyeXB0b19hbGxvY19hYmxrY2lwaGVyCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYWxnIGNyeXB0b19hYmxrY2lwaGVyX2FsZwotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2Jsb2Nrc2l6ZSBjcnlwdG9fYWJsa2NpcGhlcl9ibG9ja3NpemUKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9pdnNpemUgY3J5cHRvX2FibGtjaXBoZXJfaXZzaXplCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYWxpZ25tYXNrIGNyeXB0b19hYmxrY2lwaGVyX2FsaWdubWFzawotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3NldGtleSBjcnlwdG9fYWJsa2NpcGhlcl9zZXRrZXkKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgY3J5cHRvZGV2X2NyeXB0b19mcmVlX2Jsa2NpcGhlcihjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90ICpjKSB7Ci0rCWlmIChjKQotKwkJY3J5cHRvX2ZyZWVfYWJsa2NpcGhlcihjKTsKLSt9Ci0rCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2FsbG9jIGFibGtjaXBoZXJfcmVxdWVzdF9hbGxvYwotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2sgYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjawotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfZnJlZShjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfdCAqcikgewotKwlpZiAocikKLSsJCWFibGtjaXBoZXJfcmVxdWVzdF9mcmVlKHIpOwotK30KLSsKLSsjIGRlZmluZSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0IGFibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9lbmNyeXB0IGNyeXB0b19hYmxrY2lwaGVyX2VuY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9kZWNyeXB0IGNyeXB0b19hYmxrY2lwaGVyX2RlY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90Zm0gY3J5cHRvX2FibGtjaXBoZXJfdGZtCi0rI2Vsc2UKLSsjaW5jbHVkZSA8Y3J5cHRvL3NrY2lwaGVyLmg+Ci0rCi0rdHlwZWRlZiBzdHJ1Y3Qgc2tjaXBoZXJfYWxnIGNyeXB0b2Rldl9ibGtjaXBoZXJfYWxnX3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3Q7Ci0rdHlwZWRlZiBzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfdDsKLSsKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2FsbG9jX2Jsa2NpcGhlciBjcnlwdG9fYWxsb2Nfc2tjaXBoZXIKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGcgY3J5cHRvX3NrY2lwaGVyX2FsZwotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2Jsb2Nrc2l6ZSBjcnlwdG9fc2tjaXBoZXJfYmxvY2tzaXplCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfaXZzaXplIGNyeXB0b19za2NpcGhlcl9pdnNpemUKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGlnbm1hc2sgY3J5cHRvX3NrY2lwaGVyX2FsaWdubWFzawotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3NldGtleSBjcnlwdG9fc2tjaXBoZXJfc2V0a2V5Ci0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19mcmVlX2Jsa2NpcGhlciBjcnlwdG9fZnJlZV9za2NpcGhlcgotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9hbGxvYyBza2NpcGhlcl9yZXF1ZXN0X2FsbG9jCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjayBza2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjawotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9mcmVlIHNrY2lwaGVyX3JlcXVlc3RfZnJlZQotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQgc2tjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9lbmNyeXB0IGNyeXB0b19za2NpcGhlcl9lbmNyeXB0Ci0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfZGVjcnlwdCBjcnlwdG9fc2tjaXBoZXJfZGVjcnlwdAotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3RmbSBjcnlwdG9fc2tjaXBoZXJfdGZtCi0rI2VuZGlmCi0rCi0rI2VuZGlmCi1JbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC9jcnlwdGxpYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3J5cHRvZGV2LWxpbnV4LTEuOC5vcmlnL2NyeXB0bGliLmMKLSsrKyBjcnlwdG9kZXYtbGludXgtMS44L2NyeXB0bGliLmMKLUBAIC0yMyw3ICsyMyw2IEBACi0gICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSwgVVNBLgotICAqLwotIAotLSNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KLSAjaW5jbHVkZSA8bGludXgvbW0uaD4KLSAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgotICNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgotQEAgLTM3LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+Ci0gI2luY2x1ZGUgPGNyeXB0by9hdXRoZW5jLmg+Ci0gI2luY2x1ZGUgImNyeXB0b2Rldl9pbnQuaCIKLSsjaW5jbHVkZSAiY2lwaGVyYXBpLmgiCi0gCi0gCi0gc3RydWN0IGNyeXB0b2Rldl9yZXN1bHQgewotQEAgLTEzMywxNSArMTMzLDE1IEBAIGludCBjcnlwdG9kZXZfY2lwaGVyX2luaXQoc3RydWN0IGNpcGhlcl8KLSAJaW50IHJldDsKLSAKLSAJaWYgKGFlYWQgPT0gMCkgewotLQkJc3RydWN0IGFibGtjaXBoZXJfYWxnICphbGc7Ci0rCQljcnlwdG9kZXZfYmxrY2lwaGVyX2FsZ190ICphbGc7Ci0gCi0tCQlvdXQtPmFzeW5jLnMgPSBjcnlwdG9fYWxsb2NfYWJsa2NpcGhlcihhbGdfbmFtZSwgMCwgMCk7Ci0rCQlvdXQtPmFzeW5jLnMgPSBjcnlwdG9kZXZfY3J5cHRvX2FsbG9jX2Jsa2NpcGhlcihhbGdfbmFtZSwgMCwgMCk7Ci0gCQlpZiAodW5saWtlbHkoSVNfRVJSKG91dC0+YXN5bmMucykpKSB7Ci0gCQkJZGRlYnVnKDEsICJGYWlsZWQgdG8gbG9hZCBjaXBoZXIgJXMiLCBhbGdfbmFtZSk7Ci0gCQkJCXJldHVybiAtRUlOVkFMOwotIAkJfQotIAotLQkJYWxnID0gY3J5cHRvX2FibGtjaXBoZXJfYWxnKG91dC0+YXN5bmMucyk7Ci0rCQlhbGcgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGcob3V0LT5hc3luYy5zKTsKLSAJCWlmIChhbGcgIT0gTlVMTCkgewotIAkJCS8qIFdhcyBjb3JyZWN0IGtleSBsZW5ndGggc3VwcGxpZWQ/ICovCi0gCQkJaWYgKGFsZy0+bWF4X2tleXNpemUgPiAwICYmCi1AQCAtMTU0LDExICsxNTQsMTEgQEAgaW50IGNyeXB0b2Rldl9jaXBoZXJfaW5pdChzdHJ1Y3QgY2lwaGVyXwotIAkJCX0KLSAJCX0KLSAKLS0JCW91dC0+YmxvY2tzaXplID0gY3J5cHRvX2FibGtjaXBoZXJfYmxvY2tzaXplKG91dC0+YXN5bmMucyk7Ci0tCQlvdXQtPml2c2l6ZSA9IGNyeXB0b19hYmxrY2lwaGVyX2l2c2l6ZShvdXQtPmFzeW5jLnMpOwotLQkJb3V0LT5hbGlnbm1hc2sgPSBjcnlwdG9fYWJsa2NpcGhlcl9hbGlnbm1hc2sob3V0LT5hc3luYy5zKTsKLSsJCW91dC0+YmxvY2tzaXplID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYmxvY2tzaXplKG91dC0+YXN5bmMucyk7Ci0rCQlvdXQtPml2c2l6ZSA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2l2c2l6ZShvdXQtPmFzeW5jLnMpOwotKwkJb3V0LT5hbGlnbm1hc2sgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGlnbm1hc2sob3V0LT5hc3luYy5zKTsKLSAKLS0JCXJldCA9IGNyeXB0b19hYmxrY2lwaGVyX3NldGtleShvdXQtPmFzeW5jLnMsIGtleXAsIGtleWxlbik7Ci0rCQlyZXQgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9zZXRrZXkob3V0LT5hc3luYy5zLCBrZXlwLCBrZXlsZW4pOwotIAl9IGVsc2UgewotIAkJb3V0LT5hc3luYy5hcyA9IGNyeXB0b19hbGxvY19hZWFkKGFsZ19uYW1lLCAwLCAwKTsKLSAJCWlmICh1bmxpa2VseShJU19FUlIob3V0LT5hc3luYy5hcykpKSB7Ci1AQCAtMTkxLDE0ICsxOTEsMTQgQEAgaW50IGNyeXB0b2Rldl9jaXBoZXJfaW5pdChzdHJ1Y3QgY2lwaGVyXwotIAlpbml0X2NvbXBsZXRpb24oJm91dC0+YXN5bmMucmVzdWx0LT5jb21wbGV0aW9uKTsKLSAKLSAJaWYgKGFlYWQgPT0gMCkgewotLQkJb3V0LT5hc3luYy5yZXF1ZXN0ID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2FsbG9jKG91dC0+YXN5bmMucywgR0ZQX0tFUk5FTCk7Ci0rCQlvdXQtPmFzeW5jLnJlcXVlc3QgPSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfYWxsb2Mob3V0LT5hc3luYy5zLCBHRlBfS0VSTkVMKTsKLSAJCWlmICh1bmxpa2VseSghb3V0LT5hc3luYy5yZXF1ZXN0KSkgewotIAkJCWRlcnIoMSwgImVycm9yIGFsbG9jYXRpbmcgYXN5bmMgY3J5cHRvIHJlcXVlc3QiKTsKLSAJCQlyZXQgPSAtRU5PTUVNOwotIAkJCWdvdG8gZXJyb3I7Ci0gCQl9Ci0gCi0tCQlhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKG91dC0+YXN5bmMucmVxdWVzdCwKLSsJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2sob3V0LT5hc3luYy5yZXF1ZXN0LAotIAkJCQkJQ1JZUFRPX1RGTV9SRVFfTUFZX0JBQ0tMT0csCi0gCQkJCQljcnlwdG9kZXZfY29tcGxldGUsIG91dC0+YXN5bmMucmVzdWx0KTsKLSAJfSBlbHNlIHsKLUBAIC0yMTgsMTAgKzIxOCw4IEBAIGludCBjcnlwdG9kZXZfY2lwaGVyX2luaXQoc3RydWN0IGNpcGhlcl8KLSAJcmV0dXJuIDA7Ci0gZXJyb3I6Ci0gCWlmIChhZWFkID09IDApIHsKLS0JCWlmIChvdXQtPmFzeW5jLnJlcXVlc3QpCi0tCQkJYWJsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUob3V0LT5hc3luYy5yZXF1ZXN0KTsKLS0JCWlmIChvdXQtPmFzeW5jLnMpCi0tCQkJY3J5cHRvX2ZyZWVfYWJsa2NpcGhlcihvdXQtPmFzeW5jLnMpOwotKwkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUob3V0LT5hc3luYy5yZXF1ZXN0KTsKLSsJCWNyeXB0b2Rldl9jcnlwdG9fZnJlZV9ibGtjaXBoZXIob3V0LT5hc3luYy5zKTsKLSAJfSBlbHNlIHsKLSAJCWlmIChvdXQtPmFzeW5jLmFyZXF1ZXN0KQotIAkJCWFlYWRfcmVxdWVzdF9mcmVlKG91dC0+YXN5bmMuYXJlcXVlc3QpOwotQEAgLTIzNywxMCArMjM1LDggQEAgdm9pZCBjcnlwdG9kZXZfY2lwaGVyX2RlaW5pdChzdHJ1Y3QgY2lwaAotIHsKLSAJaWYgKGNkYXRhLT5pbml0KSB7Ci0gCQlpZiAoY2RhdGEtPmFlYWQgPT0gMCkgewotLQkJCWlmIChjZGF0YS0+YXN5bmMucmVxdWVzdCkKLS0JCQkJYWJsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOwotLQkJCWlmIChjZGF0YS0+YXN5bmMucykKLS0JCQkJY3J5cHRvX2ZyZWVfYWJsa2NpcGhlcihjZGF0YS0+YXN5bmMucyk7Ci0rCQkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOwotKwkJCWNyeXB0b2Rldl9jcnlwdG9fZnJlZV9ibGtjaXBoZXIoY2RhdGEtPmFzeW5jLnMpOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoY2RhdGEtPmFzeW5jLmFyZXF1ZXN0KQotIAkJCQlhZWFkX3JlcXVlc3RfZnJlZShjZGF0YS0+YXN5bmMuYXJlcXVlc3QpOwotQEAgLTI4OSwxMCArMjg1LDEwIEBAIHNzaXplX3QgY3J5cHRvZGV2X2NpcGhlcl9lbmNyeXB0KHN0cnVjdAotIAlyZWluaXRfY29tcGxldGlvbigmY2RhdGEtPmFzeW5jLnJlc3VsdC0+Y29tcGxldGlvbik7Ci0gCi0gCWlmIChjZGF0YS0+YWVhZCA9PSAwKSB7Ci0tCQlhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0LAotKwkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCwKLSAJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopc3JjLCBkc3QsCi0gCQkJbGVuLCBjZGF0YS0+YXN5bmMuaXYpOwotLQkJcmV0ID0gY3J5cHRvX2FibGtjaXBoZXJfZW5jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCk7Ci0rCQlyZXQgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9lbmNyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0KTsKLSAJfSBlbHNlIHsKLSAJCWFlYWRfcmVxdWVzdF9zZXRfY3J5cHQoY2RhdGEtPmFzeW5jLmFyZXF1ZXN0LAotIAkJCShzdHJ1Y3Qgc2NhdHRlcmxpc3QgKilzcmMsIGRzdCwKLUBAIC0zMTEsMTAgKzMwNywxMCBAQCBzc2l6ZV90IGNyeXB0b2Rldl9jaXBoZXJfZGVjcnlwdChzdHJ1Y3QKLSAKLSAJcmVpbml0X2NvbXBsZXRpb24oJmNkYXRhLT5hc3luYy5yZXN1bHQtPmNvbXBsZXRpb24pOwotIAlpZiAoY2RhdGEtPmFlYWQgPT0gMCkgewotLQkJYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCwKLSsJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QsCi0gCQkJKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNyYywgZHN0LAotIAkJCWxlbiwgY2RhdGEtPmFzeW5jLml2KTsKLS0JCXJldCA9IGNyeXB0b19hYmxrY2lwaGVyX2RlY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOwotKwkJcmV0ID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfZGVjcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCk7Ci0gCX0gZWxzZSB7Ci0gCQlhZWFkX3JlcXVlc3Rfc2V0X2NyeXB0KGNkYXRhLT5hc3luYy5hcmVxdWVzdCwKLSAJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopc3JjLCBkc3QsCi1JbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC9jcnlwdGxpYi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3J5cHRvZGV2LWxpbnV4LTEuOC5vcmlnL2NyeXB0bGliLmgKLSsrKyBjcnlwdG9kZXYtbGludXgtMS44L2NyeXB0bGliLmgKLUBAIC0zLDYgKzMsOCBAQAotIAotICNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+Ci0gCi0rI2luY2x1ZGUgImNpcGhlcmFwaS5oIgotKwotIHN0cnVjdCBjaXBoZXJfZGF0YSB7Ci0gCWludCBpbml0OyAvKiAwIHVuaW5pdGlhbGl6ZWQgKi8KLSAJaW50IGJsb2Nrc2l6ZTsKLUBAIC0xMiw4ICsxNCw4IEBAIHN0cnVjdCBjaXBoZXJfZGF0YSB7Ci0gCWludCBhbGlnbm1hc2s7Ci0gCXN0cnVjdCB7Ci0gCQkvKiBibG9jayBjaXBoZXJzICovCi0tCQlzdHJ1Y3QgY3J5cHRvX2FibGtjaXBoZXIgKnM7Ci0tCQlzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXF1ZXN0OwotKwkJY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfdCAqczsKLSsJCWNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF90ICpyZXF1ZXN0OwotIAotIAkJLyogQUVBRCBjaXBoZXJzICovCi0gCQlzdHJ1Y3QgY3J5cHRvX2FlYWQgKmFzOwotSW5kZXg6IGNyeXB0b2Rldi1saW51eC0xLjgvaW9jdGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNyeXB0b2Rldi1saW51eC0xLjgub3JpZy9pb2N0bC5jCi0rKysgY3J5cHRvZGV2LWxpbnV4LTEuOC9pb2N0bC5jCi1AQCAtMzQsNyArMzQsNiBAQAotICAqLwotIAotICNpbmNsdWRlIDxjcnlwdG8vaGFzaC5oPgotLSNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KLSAjaW5jbHVkZSA8bGludXgvbW0uaD4KLSAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgotICNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgotQEAgLTUzLDYgKzUyLDcgQEAKLSAjaW5jbHVkZSAiY3J5cHRvZGV2X2ludC5oIgotICNpbmNsdWRlICJ6Yy5oIgotICNpbmNsdWRlICJ2ZXJzaW9uLmgiCi0rI2luY2x1ZGUgImNpcGhlcmFwaS5oIgotIAotIE1PRFVMRV9BVVRIT1IoIk5pa29zIE1hdnJvZ2lhbm5vcG91bG9zIDxubWF2QGdudXRscy5vcmc+Iik7Ci0gTU9EVUxFX0RFU0NSSVBUSU9OKCJDcnlwdG9EZXYgZHJpdmVyIik7Ci1AQCAtNzY1LDcgKzc2NSw3IEBAIHN0YXRpYyBpbnQgZ2V0X3Nlc3Npb25faW5mbyhzdHJ1Y3QgZmNyeXAKLSAKLSAJaWYgKHNlc19wdHItPmNkYXRhLmluaXQpIHsKLSAJCWlmIChzZXNfcHRyLT5jZGF0YS5hZWFkID09IDApCi0tCQkJdGZtID0gY3J5cHRvX2FibGtjaXBoZXJfdGZtKHNlc19wdHItPmNkYXRhLmFzeW5jLnMpOwotKwkJCXRmbSA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3RmbShzZXNfcHRyLT5jZGF0YS5hc3luYy5zKTsKLSAJCWVsc2UKLSAJCQl0Zm0gPSBjcnlwdG9fYWVhZF90Zm0oc2VzX3B0ci0+Y2RhdGEuYXN5bmMuYXMpOwotIAkJdGZtX2luZm9fdG9fYWxnX2luZm8oJnNpb3AtPmNpcGhlcl9pbmZvLCB0Zm0pOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzL2tlcm5lbC00LTEwLWNoYW5nZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMva2VybmVsLTQtMTAtY2hhbmdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNkNjA4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMva2VybmVsLTQtMTAtY2hhbmdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMmIyOWJlOGFjNDE0MTRlZDE5Y2I0ZjVkNTYyNmQ5YmQwZDdiMTFhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENyaXN0aWFuIFN0b2ljYSA8Y3Jpc3RpYW4uc3RvaWNhQG54cC5jb20+Ci1EYXRlOiBXZWQsIDggRmViIDIwMTcgMTI6MTE6MDQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWRqdXN0IHRvIEFQSSBjaGFuZ2VzIGluIGtlcm5lbCA+PTQuMTAKLQotVGhlcmUgYXJlIG1hbnkgY2hhbmdlcyByZWxhdGVkIHRvIGdldF91c2VyX3BhZ2VzIGFuZCB0aGUgY29kZSBpcyByZXdyaXR0ZW4KLWZvciBjbGFyaXR5LgotCi1TaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBTdG9pY2EgPGNyaXN0aWFuLnN0b2ljYUBueHAuY29tPgotLS0tCi0gemMuYyB8IDI4ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS96Yy5jIGIvemMuYwotaW5kZXggZTc2NmVlMy4uMmY0ZWE5OSAxMDA2NDQKLS0tLSBhL3pjLmMKLSsrKyBiL3pjLmMKLUBAIC01OSwxOSArNTksMjUgQEAgaW50IF9fZ2V0X3VzZXJidWYodWludDhfdCBfX3VzZXIgKmFkZHIsIHVpbnQzMl90IGxlbiwgaW50IHdyaXRlLAotIAl9Ci0gCi0gCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKLS0jaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA2LCAwKSkKLS0JcmV0ID0gZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKAotKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgNiwgMCkpCi0rCXJldCA9IGdldF91c2VyX3BhZ2VzKHRhc2ssIG1tLAotKwkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIHBnY291bnQsIHdyaXRlLCAwLCBwZywgTlVMTCk7Ci0gI2Vsc2UKLS0JcmV0ID0gZ2V0X3VzZXJfcGFnZXMoCi0tI2VuZGlmCi0tCQkJdGFzaywgbW0sCi0tCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwKLS0jaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA5LCAwKSkKLS0JCQl3cml0ZSA/IEZPTExfV1JJVEUgOiAwLAotLSNlbHNlCi0tCQkJd3JpdGUsIDAsCi0tI2VuZGlmCi0rIyAgaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsIDksIDApKQotKwlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUodGFzaywgbW0sCi0rCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwgd3JpdGUsIDAsIHBnLCBOVUxMKTsKLSsjICBlbHNlCi0rIyAgICBpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgMTAsIDApKQotKwlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUodGFzaywgbW0sCi0rCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwgd3JpdGUgPyBGT0xMX1dSSVRFIDogMCwKLSAJCQlwZywgTlVMTCk7Ci0rIyAgICBlbHNlCi0rCXJldCA9IGdldF91c2VyX3BhZ2VzX3JlbW90ZSh0YXNrLCBtbSwKLSsJCQkodW5zaWduZWQgbG9uZylhZGRyLCBwZ2NvdW50LCB3cml0ZSA/IEZPTExfV1JJVEUgOiAwLAotKwkJCXBnLCBOVUxMLCBOVUxMKTsKLSsjICAgIGVuZGlmCi0rIyAgZW5kaWYKLSsjZW5kaWYKLSAJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKLSAJaWYgKHJldCAhPSBwZ2NvdW50KQotIAkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCmluZGV4IDBjNDA5YjAuLmQ3NTk5NDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJEZXZpY2UgVHJlZSBDb21waWxlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2aWNldHJlZS5vcmcvIgogREVTQ1JJUFRJT04gPSAiVGhlIERldmljZSBUcmVlIENvbXBpbGVyIGlzIGEgdG9vbCB1c2VkIHRvIG1hbmlwdWxhdGUgdGhlIE9wZW4tRmlybXdhcmUtbGlrZSBkZXZpY2UgdHJlZSB1c2VkIGJ5IFBvd2VyUEMga2VybmVscy4iCiBTRUNUSU9OID0gImJvb3Rsb2FkZXIiCiBMSUNFTlNFID0gIkdQTHYyIHwgQlNEIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNzJhZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgZHRjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLQkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTM7ZW5kbGluZT01MjttZDU9ZmIzNjA5NjMxNTFmOGVjMmQ2YzA2YjA1NWJjYmI2OGMiCi0KLVNSQ1JFViA9ICJlYzAyYjM0YzA1YmUwNGYyNDlmZmFhY2E0YjY2NmY1MjQ2ODc3ZGVhIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWRiN2JhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIGR0Yy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisJCSAgICBmaWxlOi8vbGliZmR0L2xpYmZkdC5oO2JlZ2lubGluZT0zO2VuZGxpbmU9NTI7bWQ1PWZiMzYwOTYzMTUxZjhlYzJkNmMwNmIwNTViY2JiNjhjIgorCitTUkNSRVYgPSAiNTU4Y2Q4MWJkZDQzMjc2OWI1OWJmZjAxMjQwYzQ0ZjgyY2ZiMWE5ZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgppbmRleCA1ZTY1NDY5Li4zYTM5OTJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgpAQCAtNCw3ICs0LDcgQEAKIAogREVQRU5EUyA9ICJnaXQtbmF0aXZlIgogCi1TUkNSRVYgPSAiYmQ3NDQ3Y2Q2Mjc0ZDc2NGExMjlkY2RjMjQ2Y2RiZmQ4YzQ3Yjk5MSIKK1NSQ1JFViA9ICJiNDZiMWM0ZjA5NzNiZjFlYjA5Y2YxMTkxZjVmNGU2OWJjZDA0NzVkIgogUFIgPSAicjEyIgogUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMKaW5kZXggYmRmZTAyNC4uYzY4OWJlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYwpAQCAtMTEsNiArMTEsNyBAQAogU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8va2R1bXAgXAogICAgICAgICAgICBmaWxlOi8va2R1bXAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKICIKIAogUFIgPSAicjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjJmODVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGVhN2JlNmQ3MWI4NTg4MGU4ZThhMmM4YTRmNDlhNjk2YzVmMzFhZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAxMToxODo0OSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIFBJRSBkdXJpbmcgbGluaworCitXZSBoYXZlIGV4cGxjaXRseSBkaXNhYmxlZCBQSUUgZHVyaW5nIGNvbXBpbGUgc28gd2UKK2p1c3QgbmVlZCB0byBtYXRjaCBpdCB3aXRoIGxpbmtlciBmbGFncworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHB1cmdhdG9yeS9NYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3B1cmdhdG9yeS9NYWtlZmlsZSBiL3B1cmdhdG9yeS9NYWtlZmlsZQoraW5kZXggNTY0YmRiNy4uYTA4ZTQxZiAxMDA2NDQKKy0tLSBhL3B1cmdhdG9yeS9NYWtlZmlsZQorKysrIGIvcHVyZ2F0b3J5L01ha2VmaWxlCitAQCAtNTksNyArNTksNyBAQCAkKFBVUkdBVE9SWSk6IENQUEZMQUdTPSQoJChBUkNIKV9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTKSBcCisgCQkJLUlpbmNsdWRlIFwKKyAJCQktSSQoc2hlbGwgJChDQykgLXByaW50LWZpbGUtbmFtZT1pbmNsdWRlKQorICQoUFVSR0FUT1JZKTogTERGTEFHUz0kKCQoQVJDSClfUFVSR0FUT1JZX0VYVFJBX0NGTEFHUylcCistCQkJLVdsLC0tbm8tdW5kZWZpbmVkIC1ub3N0YXJ0ZmlsZXMgLW5vc3RkbGliIFwKKysJCQktV2wsLS1uby11bmRlZmluZWQgLW5vLXBpZSAtbm9zdGFydGZpbGVzIC1ub3N0ZGxpYiBcCisgCQkJLW5vZGVmYXVsdGxpYnMgLWUgcHVyZ2F0b3J5X3N0YXJ0IC1XbCwtciBcCisgCQkJLVdsLC1NYXA9JChQVVJHQVRPUllfTUFQKQorIAorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlOTRkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAzYmI3M2U1ZTU2NDliNDU1ZTE1ZDVjYTNhN2FkMWE5MGM0OTYwOTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMTE6NTQ6MzYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXJtNjQ6IERpc2FibGUgUElDCisKK0ZpeAorfCBjYzE6IHNvcnJ5LCB1bmltcGxlbWVudGVkOiBjb2RlIG1vZGVsICdsYXJnZScgd2l0aCAtZlBJQworfCBtYWtlOiAqKiogW01ha2VmaWxlOjExODogcHVyZ2F0b3J5L2FyY2gvYXJtNjQvZW50cnkub10gRXJyb3IgMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZSBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCitpbmRleCA2MzZhYmVhLi44MDA2OGNhIDEwMDY0NAorLS0tIGEvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKKysrKyBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCitAQCAtMSw2ICsxLDcgQEAKKyAKKyBhcm02NF9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTID0gXAorIAktbWNtb2RlbD1sYXJnZSBcCisrCS1mbm8tUElDIFwKKyAJLWZuby1zdGFjay1wcm90ZWN0b3IgXAorIAktZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIFwKKyAJLVd1bmRlZiBcCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2R1bXAuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTY1YTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2R1bXAuc2VydmljZQpAQCAtMCwwICsxLDEyIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVJlYm9vdCBhbmQgZHVtcCB2bWNvcmUgdmlhIGtleGVjCitEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCisKK1tTZXJ2aWNlXQorVHlwZT1vbmVzaG90CitSZW1haW5BZnRlckV4aXQ9eWVzCitFeGVjU3RhcnQ9QExJQkVYRUNESVJAL2tkdW1wLWhlbHBlciBzdGFydAorRXhlY1N0b3A9QExJQkVYRUNESVJAL2tkdW1wLWhlbHBlciBzdG9wCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNC5iYgppbmRleCA5MGQ1OTg1Li4wZjYzOThmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE0LmJiCkBAIC0xOSwzMCArMTksNDcgQEAKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBwYy1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL2tleGVjLXgzMi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaCBcCiAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiMmIyYzVlNmIyOWQ0NjdkNmU5OWQ1ODdmYjZiN2NmNSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiM2U2OTUxOWQyYWNjZWQyNTY4NDNiMWU4ZjFlY2ZhMDBkOWI1NGZhMDc0NDllZDc4ZjA1YjkxOTNmMjM5MzcwIgogCitTRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgorCiBQQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgogCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgogCiBGSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgotRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCAke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcCBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIgorRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCisiCisKIEZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZAoraW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAia2R1bXAiCiBJTklUU0NSSVBUX05BTUVfa2R1bXAgPSAia2R1bXAiCiBJTklUU0NSSVBUX1BBUkFNU19rZHVtcCA9ICJzdGFydCA1NiAyIDMgNCA1IC4gc3RvcCA1NiAwIDEgNiAuIgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZworCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAorICAgICAgICBmaQorCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCisgICAgICAgICAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QuaW5jCmluZGV4IGJhODBmYzUuLjdmYjEwYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYwpAQCAtMTQsMTUgKzE0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIgogaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBwa2djb25maWcgbWFucGFnZXMKIAotU1JDUkVWID0gIjY1YTg4NWRmNWY2ZjE1MjIyYjQ0ZmQ2OTVjNWVhY2ExN2U4MzdhMTQiCitTUkNSRVYgPSAiZWY0MjU3YjU5YzQzMDdiOGM2MjdkODlmM2M3ZjFmZWVkYjMyNTgyZiIKICMgTG9va291dCBmb3IgUFYgYnVtcCB0b28gd2hlbiBTUkNSRVYgaXMgY2hhbmdlZAotUFYgPSAiMjMrZ2l0JHtTUkNQVn0iCitQViA9ICIyNCtnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2tlcm5lbC9rbW9kL2ttb2QuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2RlcG1vZC1zZWFyY2guY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtT19DTE9FWEVDLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2tjbWRsaW5lX3F1b3Rlcy5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2tjbWRsaW5lX3F1b3Rlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9rY21kbGluZV9xdW90ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YmRlYzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2tjbWRsaW5lX3F1b3Rlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gNGE2ZjkyYTEwNjgwZTdlMzY4MDdmNWUyYWU4ZTQ5N2U4ZDczYTA0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbWVzIE1pbm9yIDxqYW1lcy5taW5vckBuaS5jb20+Ci1EYXRlOiBGcmksIDIwIEphbiAyMDE3IDE3OjE1OjUwIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmttb2Q6IEZpeCBoYW5kbGluZyBvZiBxdW90ZXMgaW4ga2VybmVsIGNvbW1hbmQgbGluZQotCi1JZiBhIG1vZHVsZSBwYXJhbWV0ZXIgb24gdGhlIGNvbW1hbmQgbGluZSBjb250YWlucyBxdW90ZXMsIGFueQotc3BhY2VzIGluc2lkZSB0aG9zZSBxdW90ZXMgc2hvdWxkIGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCi1wYXJhbWV0ZXIuCi0KLVNpZ25lZC1vZmYtYnk6IEphbWVzIE1pbm9yIDxqYW1lcy5taW5vckBuaS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLS0tLQotIGxpYmttb2QvbGlia21vZC1jb25maWcuYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmttb2QvbGlia21vZC1jb25maWcuYyBiL2xpYmttb2QvbGlia21vZC1jb25maWcuYwotaW5kZXggNTdmYmUzNy4uZWE0MGQxOSAxMDA2NDQKLS0tLSBhL2xpYmttb2QvbGlia21vZC1jb25maWcuYwotKysrIGIvbGlia21vZC9saWJrbW9kLWNvbmZpZy5jCi1AQCAtNDk3LDYgKzQ5Nyw3IEBAIHN0YXRpYyBpbnQga21vZF9jb25maWdfcGFyc2Vfa2NtZGxpbmUoc3RydWN0IGttb2RfY29uZmlnICpjb25maWcpCi0gCWNoYXIgYnVmW0tDTURfTElORV9TSVpFXTsKLSAJaW50IGZkLCBlcnI7Ci0gCWNoYXIgKnAsICptb2RuYW1lLCAgKnBhcmFtID0gTlVMTCwgKnZhbHVlID0gTlVMTCwgaXNfbW9kdWxlID0gMTsKLSsJYm9vbCBpc19xdW90ZWQgPSBmYWxzZTsKLSAKLSAJZmQgPSBvcGVuKCIvcHJvYy9jbWRsaW5lIiwgT19SRE9OTFl8T19DTE9FWEVDKTsKLSAJaWYgKGZkIDwgMCkgewotQEAgLTUxNCw2ICs1MTUsMTIgQEAgc3RhdGljIGludCBrbW9kX2NvbmZpZ19wYXJzZV9rY21kbGluZShzdHJ1Y3Qga21vZF9jb25maWcgKmNvbmZpZykKLSAJfQotIAotIAlmb3IgKHAgPSBidWYsIG1vZG5hbWUgPSBidWY7ICpwICE9ICdcMCcgJiYgKnAgIT0gJ1xuJzsgcCsrKSB7Ci0rCQlpZiAoKnAgPT0gJyInKSB7Ci0rCQkJaXNfcXVvdGVkID0gIWlzX3F1b3RlZDsKLSsJCQljb250aW51ZTsKLSsJCX0KLSsJCWlmIChpc19xdW90ZWQpCi0rCQkJY29udGludWU7Ci0gCQlzd2l0Y2ggKCpwKSB7Ci0gCQljYXNlICcgJzoKLSAJCQkqcCA9ICdcMCc7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaAppbmRleCBhZjE5YjM3Li43MTQ3ZmRhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41L2xhdGVuY3l0b3AtbWFrZWZpbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoCkBAIC0xLDMgKzEsNyBAQAorCitTaWduZWQtb2ZmLWJ5OiBKYWNrIE1pdGNoZWxsIDxqYWNrLm1pdGNoZWxsQGRiYnJvYWRjYXN0LmNvLnVrPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5vcmlnIGIvTWFrZWZpbGUKIGluZGV4IDE2YTIzNjkuLmZhNzk3YTIgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5vcmlnCkBAIC01LDggKzksOCBAQAogQEAgLTEsMTAgKzEsMTEgQEAKIC0jIEZJWE1FOiBVc2UgYXV0b2NvbmYgPwogLUhBU19HVEtfR1VJID0gMQotKyMgVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotKyMgU2lnbmVkLW9mZi1ieTogSmFjayBNaXRjaGVsbCA8amFjay5taXRjaGVsbEBkYmJyb2FkY2FzdC5jby51az4KKysjCisrIwogIAogIERFU1RESVIgPQogIFNCSU5ESVIgPSAvdXNyL3NiaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgppbmRleCBmZjYwZDMwLi45MDU0YjMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCkBAIC0xODQsNiArMTg0LDggQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZmlybXdhcmUvbGludXgtZmlybXdhcmUuZ2l0IgogCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhbGxhcmNoCkBAIC0yMTYsNyArMjE4LDYgQEAKIAogCSMgZml4dXAgd2wxMnh4IGxvY2F0aW9uLCBhZnRlciAyLjYuMzcgdGhlIGtlcm5lbCBzZWFyY2hlcyBhIGRpZmZlcmVudCBsb2NhdGlvbiBmb3IgaXQKIAkoIGNkICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIDsgbG4gLXNmIHRpLWNvbm5lY3Rpdml0eS8qIC4gKQotCiB9CiAKIApAQCAtMjQ3LDcgKzI0OCw3IEBACiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDUwLTQgJHtQTn0taXdsd2lmaS02MDUwLTUgXAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2MCBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjVkICR7UE59LWl3bHdpZmktODI2NSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1ZCAke1BOfS1pd2x3aWZpLTgwMDBjICR7UE59LWl3bHdpZmktODI2NSBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1taXNjIFwKICAgICAgICAgICAgICAke1BOfS1pYnQtbGljZW5zZSAke1BOfS1pYnQgJHtQTn0taWJ0LW1pc2MgXAogICAgICAgICAgICAgICR7UE59LWlidC0xMS01ICR7UE59LWlidC0xMi0xNiAke1BOfS1pYnQtaHctMzctNyAke1BOfS1pYnQtaHctMzctOCBcCkBAIC02MTksNiArNjIwLDcgQEAKIEZJTEVTXyR7UE59LWl3bHdpZmktNzI2MCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjYwLSoudWNvZGUiCiBGSUxFU18ke1BOfS1pd2x3aWZpLTcyNjUgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NS0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ZCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjY1RC0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS04MDAwYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MDAwQy0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS04MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTgyNjUtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktbWlzYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0qLnVjb2RlIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MjYyNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBsaW51eC1saWJjLWhlYWRlcnMuaW5jCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKLSAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImI1ZTdmNmI5YjJmZTFiNmNjN2JjNTZhM2EwYmZjMDkwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjOTVkOWYwNDliZDA4NWU1YzM0NmQyYzc3ZjA2M2I4NDI1ZjE5MTQ2MGZjZDNhZTlmZTdlOTRlMDQ3N2RjNGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBkMGFiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xMi5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAorICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmM0NTQxNTdlMmQwMjRkNDAxYTYwOTA1ZDY0ODFjNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQ1YzNiZWNkNGQwOGNlNDExYzE0NjI4YTk0OWQwOGUyNDMzZDhjZGVjYTkyMDM2YzcwMTM5ODBlOTM4NThhYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCmluZGV4IDcwMDQyNjEuLmMxYjViNzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgpAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICBjZCAke0J9CiAgICAgICAgIGZpbmQgLiAtdHlwZSBkIC1uYW1lICcuZ2l0KicgLXBydW5lIC1vIC1wYXRoICcuZGVidWcnIC1wcnVuZSAtbyAtdHlwZSBmIC1wcmludDAgfCBjcGlvIC0tbnVsbCAtcGRsdSAka2VybmVsZGlyCiAgICAgICAgIGNkICR7U30KLSAgICAgICAgZmluZCAuIC10eXBlIGQgLW5hbWUgJy5naXQqJyAtcHJ1bmUgLW8gLXR5cGUgZiAtcHJpbnQwIHwgY3BpbyAtLW51bGwgLXBkbHUgJGtlcm5lbGRpcgorCWZpbmQgLiAtdHlwZSBkIC1uYW1lICcuZ2l0KicgLXBydW5lIC1vIC10eXBlIGQgLW5hbWUgJy5rZXJuZWwtbWV0YScgLXBydW5lIC1vIC10eXBlIGYgLXByaW50MCB8IGNwaW8gLS1udWxsIC1wZGx1ICRrZXJuZWxkaXIKIAogICAgICAgICAjIEV4cGxpY2l0bHkgc2V0IEtCVUlMRF9PVVRQVVQgdG8gZW5zdXJlIHRoYXQgdGhlIGltYWdlIGRpcmVjdG9yeSBpcyBjbGVhbmVkIGFuZCBub3QKICAgICAgICAgIyBUaGUgbWFpbiBidWlsZCBhcnRpZmFjdHMuIFdlIGNsZWFuIHRoZSBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3JzIG9uIG1pc21hdGNoZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jCmluZGV4IDAxNzRjODAuLmYxOTEyNzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYwpAQCAtMSw5MSArMSwzIEBACi0jIFN1cHBvcnQgZm9yIGRldmljZSB0cmVlIGdlbmVyYXRpb24KLUZJTEVTX2tlcm5lbC1kZXZpY2V0cmVlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9L2RldmljZXRyZWUqIgotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcy1uYXRpdmUiCi0KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgZC5hcHBlbmRWYXIoIlBBQ0tBR0VTIiwgIiBrZXJuZWwtZGV2aWNldHJlZSIpCi19Ci0KLW5vcm1hbGl6ZV9kdGIgKCkgewotCURUQj0iJDEiCi0JaWYgZWNobyAke0RUQn0gfCBncmVwIC1xICcvZHRzLyc7IHRoZW4KLQkJYmJ3YXJuICIke0RUQn0gY29udGFpbnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgdGhlIGR0cyBmaWxlLCBidXQgb25seSB0aGUgZHRiIG5hbWUgc2hvdWxkIGJlIHVzZWQuIgotCQlEVEI9YGJhc2VuYW1lICR7RFRCfSB8IHNlZCAncyxcLmR0cyQsLmR0YixnJ2AKLQlmaQotCWVjaG8gIiR7RFRCfSIKLX0KLQotZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICgpIHsKLQlEVEI9IiQxIgotCURUQl9QQVRIPSIke0J9L2FyY2gvJHtBUkNIfS9ib290L2R0cy8ke0RUQn0iCi0JaWYgWyAhIC1lICIke0RUQl9QQVRIfSIgXTsgdGhlbgotCQlEVEJfUEFUSD0iJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC8ke0RUQn0iCi0JZmkKLQllY2hvICIke0RUQl9QQVRIfSIKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlvZV9ydW5tYWtlICR7RFRCfQotCWRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlEVEJfRVhUPSR7RFRCIyMqLn0KLQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCi0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCURUQl9QQVRIPWBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgIiR7RFRCfSJgCi0JCQlpbnN0YWxsIC1tIDA2NDQgJHtEVEJfUEFUSH0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9L2RldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9Ci0JCWRvbmUKLQlkb25lCi19Ci0KLWRvX2RlcGxveV9hcHBlbmQoKSB7Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlEVEJfRVhUPSR7RFRCIyMqLn0KLQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCi0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQliYXNlX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX0JBU0VfTkFNRX0KLQkJCXN5bWxpbmtfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQotCQkJRFRCX05BTUU9YGVjaG8gJHtiYXNlX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCURUQl9QQVRIPWBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgIiR7RFRCfSJgCi0JCQlpbnN0YWxsIC1kICR7REVQTE9ZRElSfQotCQkJaW5zdGFsbCAtbSAwNjQ0ICR7RFRCX1BBVEh9ICR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9Ci0JCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSAke0RFUExPWURJUn0vJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9Ci0JCWRvbmUKLQlkb25lCi19Ci0KLXBrZ19wb3N0aW5zdF9rZXJuZWwtZGV2aWNldHJlZSAoKSB7Ci0JY2QgLyR7S0VSTkVMX0lNQUdFREVTVH0KLQlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbwotCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9OyBkbwotCQkJc3ltbGlua19uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUV9Ci0JCQlEVEJfRVhUPSR7RFRCIyMqLn0KLQkJCURUQl9CQVNFX05BTUU9YGJhc2VuYW1lICR7RFRCfSAuIiR7RFRCX0VYVH0iYAotCQkJRFRCX1NZTUxJTktfTkFNRT1gZWNobyAke3N5bWxpbmtfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAotCQkJdXBkYXRlLWFsdGVybmF0aXZlcyAtLWluc3RhbGwgLyR7S0VSTkVMX0lNQUdFREVTVH0vJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9ICR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSBkZXZpY2V0cmVlLSR7RFRCX1NZTUxJTktfTkFNRX0uJHtEVEJfRVhUfSAke0tFUk5FTF9QUklPUklUWX0gfHwgdHJ1ZQotCQlkb25lCi0JZG9uZQotfQotCi1wa2dfcG9zdHJtX2tlcm5lbC1kZXZpY2V0cmVlICgpIHsKLQljZCAvJHtLRVJORUxfSU1BR0VERVNUfQotCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCi0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJCURUQl9FWFQ9JHtEVEIjIyoufQotCQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCi0JCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCi0JCQl1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tcmVtb3ZlICR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSBkZXZpY2V0cmVlLSR7RFRCX1NZTUxJTktfTkFNRX0uJHtEVEJfRVhUfSAke0tFUk5FTF9QUklPUklUWX0gfHwgdHJ1ZQotCQlkb25lCi0JZG9uZQorcHl0aG9uKCkgeworICAgIGJiLndhcm4oIllvdSBhcmUgdXNpbmcgdGhlIGxpbnV4LWR0Yi5pbmMgd2hpY2ggaXMgZGVwcmVjYXRlZC4gWW91IGNhbiBzYWZlbHkgcmVtb3ZlIGl0IGFzIHRoZSBEZXZpY2UgVHJlZSBzdXBwb3J0IGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCB3aGVuIEtFUk5FTF9ERVZJQ0VUUkVFIGlzIHNldC4iKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHVtbXkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdW1teS5iYgppbmRleCA5OTRhYzc0Li5lMWM3Zjc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdW1teS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdW1teS5iYgpAQCAtMTMsMTAgKzEzLDE0IEBACiBQQUNLQUdFU19EWU5BTUlDICs9ICJea2VybmVsLWltYWdlLS4qIgogUEFDS0FHRVNfRFlOQU1JQyArPSAiXmtlcm5lbC1maXJtd2FyZS0uKiIKIAotUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGVzIgorUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGVzIGtlcm5lbC12bWxpbnV4IgogRklMRVNfa2VybmVsLW1vZHVsZXMgPSAiIgogQUxMT1dfRU1QVFlfa2VybmVsLW1vZHVsZXMgPSAiMSIKIERFU0NSSVBUSU9OX2tlcm5lbC1tb2R1bGVzID0gIktlcm5lbCBtb2R1bGVzIG1ldGEgcGFja2FnZSIKK0ZJTEVTX2tlcm5lbC12bWxpbnV4ID0gIiIKK0FMTE9XX0VNUFRZX2tlcm5lbC12bWxpbnV4ID0gIjEiCitERVNDUklQVElPTl9rZXJuZWwtdm1saW51eCA9ICJLZXJuZWwgdm1saW51eCBtZXRhIHBhY2thZ2UiCisKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCmluZGV4IGJmNjdmODEuLjU4NTJiNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKQEAgLTI4LDcgKzI4LDcgQEAKIFNSQ1JFVl9tYWNoaW5lID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgImxpbnV4LXlvY3RvLWRldiIsICIke0FVVE9SRVZ9IiwgIjI5NTk0NDA0ZDdmZTczY2Q4MGVhYTRlZThjNDNkY2M1Mzk3MGM2MGUiLCBkKX0nCiBTUkNSRVZfbWV0YSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjExLXJjKyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTItcmMrIgogTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz0gIi15b2N0b2Rldi0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzgyNDY4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gIjhjYzYyYWMzZjI2YmQ2ZGRlNjhhZDJkODYwMjZhMjUyZmU3YWRkNDQiCi1TUkNSRVZfbWV0YSA/PSAiOWY5YzlhNjZlZjM0NTIzNDM1ODZhZGYxNTAxMzc5NjdlOTU1ZDcxYSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMS40MyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEwLmJiCmluZGV4IGY5M2Q5NTMuLmZkMzFiZjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMC5iYgpAQCAtMTIsNyArMTIsNyBAQAogfQogCiBTUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICI0MGVlNDhhYzA5OWMwNGY2MGQyYzEzMjAzMWQ5NjI1YTRlMGM0YzllIgorU1JDUkVWX21ldGEgPz0gIjFkOWE4MjAwMTg0YWYyMmY4OTgxZmEyNGIwZTgyYWY0OWM3OTg4ZGQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEwO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWIwMTU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgpAQCAtMCwwICsxLDM4IEBACitLQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKKyMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCisjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCisjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKK30KKworU1JDUkVWX21hY2hpbmUgPz0gIjMzYWExYTRlYTQ0Mzk5ZjEyZGZiMjYxNDZlYTA2ZGI1Y2QwMmNhNjkiCitTUkNSRVZfbWV0YSA/PSAiMTlkODE1ZDVhMzRiZmFhZDk1ZDg3Y2MwOTdjZWYxOGI1OTRkYWFjOCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiCmluZGV4IDI1ZDg4ODMuLjk3NTM4ZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjQuYmIKQEAgLTExLDEzICsxMSwxMyBAQAogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiMWU2OTFkYjdhZjY0MmZmZjAyMjJhMWYxZDFlOTA0M2MxNzI2OTlkNSIKLVNSQ1JFVl9tZXRhID89ICI4MDRkMmIzMTY0ZWMyNWVkNTE5ZmQ2OTVkZTlhYTA5MDg0NjBjOTJlIgorU1JDUkVWX21hY2hpbmUgPz0gImQ1ZWZlZWViOTI4YTAxMTFmYzE4N2ZkMWU4ZDAzZDJlNGUzNWQ0YTAiCitTUkNSRVZfbWV0YSA/PSAiYjE0OWQxNGNjYWU4MzQ5YWIzM2UxMDFmNmFmMjMzYTEyZjRiMTdiYSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjQuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC44NyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYgppbmRleCA2NzM0ZGMwLi41YzAxNmVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC45LmJiCkBAIC0xMSwxMyArMTEsMTMgQEAKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKIH0KIAotU1JDUkVWX21hY2hpbmUgPz0gIjA4MTdhN2IzYTg1M2QxYmRkM2I4N2EyNjU0ZWQyZWU2MmY2MjQ4MDYiCi1TUkNSRVZfbWV0YSA/PSAiNmFjYWU2ZjcyMDBhZjE3YjNjMmJlNWVjYWIyY2ZmZGM1OWEwMmIzNSIKK1NSQ1JFVl9tYWNoaW5lID89ICI5MGQxZmZhMzZjYmQzNjcyMjYzOGM5N2MxYmI0NmE1ODc0ZGJlMjhlIgorU1JDUkVWX21ldGEgPz0gIjA3NzRlYWNlYTJhN2QzYTE1MDU5NDUzM2I4YzgwZDBjMGJmZGZkZWQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC45LmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuOTtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1MSU5VWF9WRVJTSU9OID89ICI0LjkuNDkiCitMSU5VWF9WRVJTSU9OID89ICI0LjkuODIiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzN2VmYjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIKLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xLjQzIgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZSA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tZXRhID89ICI5ZjljOWE2NmVmMzQ1MjM0MzU4NmFkZjE1MDEzNzk2N2U5NTVkNzFhIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMS5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2JCkiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYgppbmRleCAzMTM5NmFiLi5iMjIzNDk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiCkBAIC0xMCwxNCArMTAsMTQgQEAKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCiBTUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICI0MGVlNDhhYzA5OWMwNGY2MGQyYzEzMjAzMWQ5NjI1YTRlMGM0YzllIgorU1JDUkVWX21ldGEgPz0gIjFkOWE4MjAwMTg0YWYyMmY4OTgxZmEyNGIwZTgyYWY0OWM3OTg4ZGQiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEwO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NiQpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKIAogIyBGdW5jdGlvbmFsaXR5IGZsYWdzCiBLRVJORUxfRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZjJlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIKQEAgLTAsMCArMSwyNSBAQAorS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCitMSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgorS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjAiCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK1NSQ1JFVl9tYWNoaW5lID89ICI0MDE0NjA1NTY3N2E2OTczMGIyYzM2ZGExYzhjMWI0ZTliYWU3YmIwIgorU1JDUkVWX21ldGEgPz0gIjE5ZDgxNWQ1YTM0YmZhYWQ5NWQ4N2NjMDk3Y2VmMThiNTk0ZGFhYzgiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMi5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEyO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0ZFQVRVUkVTID0gIiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgppbmRleCA1MGI5YTU2Li44YTk4MTg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYgpAQCAtNCwyMCArNCwyMCBAQAogCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjQuODciCitMSU5VWF9WRVJTSU9OID89ICI0LjQuMTEzIgogCiBLTUVUQSA9ICJrZXJuZWwtbWV0YSIKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCi1TUkNSRVZfbWFjaGluZSA/PSAiYjcxYzdiNzg2YWVkMjZjMGExZTRlY2E2NmYxZDg3NGVjMDE3ZDY5OSIKLVNSQ1JFVl9tZXRhID89ICI4MDRkMmIzMTY0ZWMyNWVkNTE5ZmQ2OTVkZTlhYTA5MDg0NjBjOTJlIgorU1JDUkVWX21hY2hpbmUgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWV0YSA/PSAiYjE0OWQxNGNjYWU4MzQ5YWIzM2UxMDFmNmFmMjMzYTEyZjRiMTdiYSIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjQuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NiQpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKIAogIyBGdW5jdGlvbmFsaXR5IGZsYWdzCiBLRVJORUxfRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYgppbmRleCBlMGM1MjM2Li40ZDQ2ODAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYgpAQCAtNCwyMCArNCwyMCBAQAogCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjkuNDkiCitMSU5VWF9WRVJTSU9OID89ICI0LjkuODIiCiAKIEtNRVRBID0gImtlcm5lbC1tZXRhIgogS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCiAKLVNSQ1JFVl9tYWNoaW5lID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21ldGEgPz0gIjZhY2FlNmY3MjAwYWYxN2IzYzJiZTVlY2FiMmNmZmRjNTlhMDJiMzUiCitTUkNSRVZfbWFjaGluZSA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKK1NSQ1JFVl9tZXRhID89ICIwNzc0ZWFjZWEyYTdkM2ExNTA1OTQ1MzNiOGM4MGQwYzBiZmRmZGVkIgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuOS5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2JCkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgogCiAjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKIEtFUk5FTF9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKaW5kZXggNjM3NTA2YS4uOWMxZjYxYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwpAQCAtMzMsNyArMzMsOCBAQAogIyBhbmQgaXQgY2FuIGJlIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIG9yIHNoYXJlZAogIyBLTUFDSElORSA9ICJVTkRFRklORUQiCiAKLUxJTlVYX0tFUk5FTF9UWVBFID89ICJzdGFuZGFyZCIKKyMgVGhlIGRpc3RybyBvciBsb2NhbC5jb25mIHNob3VsZCBzZXQgdGhpcywgYnV0IGlmIG5vYm9keSBjYXJlcy4uLgorTElOVVhfS0VSTkVMX1RZUEUgPz89ICJzdGFuZGFyZCIKIAogIyBLTUVUQSA/PSAiIgogS0JSQU5DSCA/PSAibWFzdGVyIgpAQCAtNDgsMTIgKzQ5LDExIEBACiBLQ09ORl9CU1BfQVVESVRfTEVWRUwgPz0gIjAiCiBLTUVUQV9BVURJVCA/PSAieWVzIgogCi1MSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/PSAiLXlvY3RvLSR7TElOVVhfS0VSTkVMX1RZUEV9IgorTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz89ICIteW9jdG8tJHtMSU5VWF9LRVJORUxfVFlQRX0iCiAKICMgUGljayB1cCBzaGFyZWQgZnVuY3Rpb25zCiBpbmhlcml0IGtlcm5lbAogaW5oZXJpdCBrZXJuZWwteW9jdG8KLXJlcXVpcmUgbGludXgtZHRiLmluYwogCiBCID0gIiR7V09SS0RJUn0vbGludXgtJHtQQUNLQUdFX0FSQ0h9LSR7TElOVVhfS0VSTkVMX1RZUEV9LWJ1aWxkIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxNmJjMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAic3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAic3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJzdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjY0MmU5Yjk1Zjk3ZjhlMDBlZjgxOWJiZmIyZjI4MWMxMDc5YmZiYjEiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjc4MjEzM2Q4MTY2YWM3MWVmMWZmYWJhNThiN2NmODFlYzllNTMyYTEiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiNTRkNDU3NWQwZGYxODA1ZTEyN2M1ZmE1OTIwMWNkOTc4ODQ5ZmIzZiIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjU4OTA2ZjI3MzdjNjQ0ZTY3YTdjOTc1NGI3ZTM2NjMwMDA1YTAwMTEiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI3ODIxMzNkODE2NmFjNzFlZjFmZmFiYTU4YjdjZjgxZWM5ZTUzMmExIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjAzZjBjMDI5M2FiZmU1MjI2YzJmZGQyMjMyODQ3Njg1NGZhMDEyN2YiCi1TUkNSRVZfbWFjaGluZSA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tZXRhID89ICI5ZjljOWE2NmVmMzQ1MjM0MzU4NmFkZjE1MDEzNzk2N2U5NTVkNzFhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMS5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMS40MyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYgppbmRleCA3ZmNjNzUzLi4xZmUzY2NhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmIKQEAgLTE5LDcgKzE5LDcgQEAKIFNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCiBTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI4YmIxMzVlNzEwMzdjNDYxNzViYmNjN2FjZjM4NzMwOWIyZTE3MTMzIgogU1JDUkVWX21hY2hpbmUgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWV0YSA/PSAiNDBlZTQ4YWMwOTljMDRmNjBkMmMxMzIwMzFkOTYyNWE0ZTBjNGM5ZSIKK1NSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMGI4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCkBAIC0wLDAgKzEsNDQgQEAKK0tCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInN0YW5kYXJkL3FlbXVhcm02NCIKK0tCUkFOQ0hfcWVtdW1pcHMgPz0gInN0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAic3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI2ZTVhOTlkYjNhNDk1ZTAyMzA0MWEzMGQ0MzI2MjA0Nzc5NWU2NDVhIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI0MDE0NjA1NTY3N2E2OTczMGIyYzM2ZGExYzhjMWI0ZTliYWU3YmIwIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjQzZGM0N2Y5MDAwN2Q1NGM3MDg2Y2MwM2IyOGU5NDZlMzAxMzVmMWMiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI0MDE0NjA1NTY3N2E2OTczMGIyYzM2ZGExYzhjMWI0ZTliYWU3YmIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNDAxNDYwNTU2NzdhNjk3MzBiMmMzNmRhMWM4YzFiNGU5YmFlN2JiMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjQwMTQ2MDU1Njc3YTY5NzMwYjJjMzZkYTFjOGMxYjRlOWJhZTdiYjAiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI2OWYwYzk2ZDhlNDdiMGRjY2ZiMzc0ODA5ZDcyOWYwMDQyYzc3ODY4IgorU1JDUkVWX21hY2hpbmUgPz0gIjQwMTQ2MDU1Njc3YTY5NzMwYjJjMzZkYTFjOGMxYjRlOWJhZTdiYjAiCitTUkNSRVZfbWV0YSA/PSAiMTlkODE1ZDVhMzRiZmFhZDk1ZDg3Y2MwOTdjZWYxOGI1OTRkYWFjOCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEyO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjAiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmIKaW5kZXggZDMwMGU2OS4uOTdjMTZkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYgpAQCAtMTEsMjAgKzExLDIwIEBACiBLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCiBLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgogCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI4NDBlMmMwMmRkZTk4ZWU5YzU4NGNhY2RkNWJiMDgxMmU5ZGNkMDE2IgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjI3YTU0N2ZlNzdiMDVhZTYzYzNiOTczYTAyOWMzOTMzZWY2MmMxNjQiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiYjcxYzdiNzg2YWVkMjZjMGExZTRlY2E2NmYxZDg3NGVjMDE3ZDY5OSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI3ZTMzM2MyMjNiNTY4NzA0Y2MzMzAzYjJlOTIyZmY4NWEyYThmN2VmIgotU1JDUkVWX21hY2hpbmUgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWV0YSA/PSAiODA0ZDJiMzE2NGVjMjVlZDUxOWZkNjk1ZGU5YWEwOTA4NDYwYzkyZSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjQwMGMwZjM5Yjk1NGNkOGZmZmRmNTNlNmVjOTc4NTJiNzNmZWE3YWYiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiZmIwM2E5NDcyMzY3YjZjMTc3NzI5YWM2MzEzMjZhYWZkNWQxN2M5MiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjI2YjhiYTE4NmE2ZDM5NzI4ZmMxNTEwYmQyMjY0MTEwYzc1ODQyZjUiCitTUkNSRVZfbWFjaGluZSA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tZXRhID89ICJiMTQ5ZDE0Y2NhZTgzNDlhYjMzZTEwMWY2YWYyMzNhMTJmNGIxN2JhIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC44NyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYgppbmRleCBkYmU0MGEzLi5hNWExNjVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiCkBAIC0xMSwyMCArMTEsMjAgQEAKIEtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKIEtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCiAKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjhjYWEzNWE3NDc1M2Q0NTE3ODcyMDkzM2YwM2Q4ZDUxNTBhOGZmMTciCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjQ4MGVlNTk5ZmI4ZGY3MTJjMTBkY2Y0YjdhYTYzOThiNzlmN2Q0MDQiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiZmMyYTNiOWY5MzI3NzlmZGYwNTM2NzVhNWE3M2U4Zjk5MTc1MDdhNSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjQ4MGVlNTk5ZmI4ZGY3MTJjMTBkY2Y0YjdhYTYzOThiNzlmN2Q0MDQiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImFlZTYzOTc4MDA1YzA0ZWE4NTMwOTk3NjRhY2FhMDgxMzBlNjU1NTQiCi1TUkNSRVZfbWFjaGluZSA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tZXRhID89ICI2YWNhZTZmNzIwMGFmMTdiM2MyYmU1ZWNhYjJjZmZkYzU5YTAyYjM1IgorU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiMjMzNjllYjdlMDdjODM5ZmE3M2E4YzFlODVhYmEzN2EwN2JmMTRjMSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJjYWI5ZTA1OTQ0Nzg3OGY1MzgzZjkxYTA1ZGIxMjgxM2Y2OWNiZmMxIgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiYzJlNWVmODNiNjEyZDUwZjUwZmFmZWVkOTkzMGRiZWEzMDJmYmU4YyIKK1NSQ1JFVl9tYWNoaW5lID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgorU1JDUkVWX21ldGEgPz0gIjA3NzRlYWNlYTJhN2QzYTE1MDU5NDUzM2I4YzgwZDBjMGJmZGZkZWQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC45LmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC45LjQ5IgorTElOVVhfVkVSU0lPTiA/PSAiNC45LjgyIgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdlYTVjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgotREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgotCi1MSUNFTlNFID0gIk1JVCAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vZmlsZXMvYmFiZWx0cmFjZS9iYWJlbHRyYWNlLSR7UFZ9LnRhci5iejIgXAotIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxMTc2ZTdmNjllMTI4MTEyZDVmMjlmZWZlYzM5YzZjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTZlZTQ2ZTU3NTBhYjU3YTI1ODY2M2U3MzkxNWQyOTAxYjdjZDRmYzUzYjA2ZWIzZjdhMGQ3YjEwMTJmYTU2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4MWRhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjMuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgorREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgorCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vZmlsZXMvYmFiZWx0cmFjZS9iYWJlbHRyYWNlLSR7UFZ9LnRhci5iejIgXAorIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwY2VjMjc0NWFjMzE2NjQ5NzkxYzQzZjQxNmQ3MWVhMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMjQ5ZmVlNWJlYmE2NTc3MzFmNWQ2YTg0YzUyOTZjNjUxN2Y1NDRiZmJlNzU3MWJkMWZkN2FmMjM3MjYxMzdjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MDYzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBhYjA3NTc0ZWY5MGZhNTEwZjI5M2MzNzg5N2Q1NzcwNjZhODhmZTBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0aGFuIEx5bmNoIDxuYXRoYW5fbHluY2hAbWVudG9yLmNvbT4KK0RhdGU6IFR1ZSwgMjUgQXByIDIwMTcgMTY6MjY6NTcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQlVJTERfUlVOVElNRV9CVUdfT04gdnMgZ2NjNworCitBdm9pZCB1c2luZyBMVFRuZydzIEJVSUxEX1JVTlRJTUVfQlVHX09OIG1hY3JvLCBhcyBpdCBhcHBlYXJzIHRvIHJ1bgoraW50byBhIHNpbWlsYXIgcHJvYmxlbSBhcyBMaW51eCBleHBlcmllbmNlZCB3aXRoIGlsb2cyLgorCitTZWU6CitodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvY29tbWl0Lz9pZD00NzRjOTAxNTZjOGRjYzJmYTgxNWU2NzE2Y2M5Mzk0ZDc5MzBjYjljCitodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03Mjc4NQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IE5hdGhhbiBMeW5jaCA8bmF0aGFuX2x5bmNoQG1lbnRvci5jb20+CistLS0KKyBsaWIvYWxpZ24uaCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvYWxpZ24uaCBiL2xpYi9hbGlnbi5oCitpbmRleCA1YjkxYWU4NzQxMGIuLjVlMTM0Y2Q0ODVmZSAxMDA2NDQKKy0tLSBhL2xpYi9hbGlnbi5oCisrKysgYi9saWIvYWxpZ24uaAorQEAgLTQ4LDcgKzQ4LDcgQEAKKyAgKi8KKyAjZGVmaW5lIG9mZnNldF9hbGlnbihhbGlnbl9kcmlmdCwgYWxpZ25tZW50KQkJCQkgICAgICAgXAorIAkoewkJCQkJCQkJICAgICAgIFwKKy0JCUJVSUxEX1JVTlRJTUVfQlVHX09OKChhbGlnbm1lbnQpID09IDAJCQkgICAgICAgXAorKwkJQlVHX09OKChhbGlnbm1lbnQpID09IDAJCQkJCSAgICAgICBcCisgCQkJCSAgIHx8ICgoYWxpZ25tZW50KSAmICgoYWxpZ25tZW50KSAtIDEpKSk7ICAgICAgXAorIAkJKCgoYWxpZ25tZW50KSAtIChhbGlnbl9kcmlmdCkpICYgKChhbGlnbm1lbnQpIC0gMSkpOwkgICAgICAgXAorIAl9KQorQEAgLTYzLDcgKzYzLDcgQEAKKyAgKi8KKyAjZGVmaW5lIG9mZnNldF9hbGlnbl9mbG9vcihhbGlnbl9kcmlmdCwgYWxpZ25tZW50KQkJCSAgICAgICBcCisgCSh7CQkJCQkJCQkgICAgICAgXAorLQkJQlVJTERfUlVOVElNRV9CVUdfT04oKGFsaWdubWVudCkgPT0gMAkJCSAgICAgICBcCisrCQlCVUdfT04oKGFsaWdubWVudCkgPT0gMAkJCQkJICAgICAgIFwKKyAJCQkJICAgfHwgKChhbGlnbm1lbnQpICYgKChhbGlnbm1lbnQpIC0gMSkpKTsgICAgICBcCisgCQkoKChhbGlnbl9kcmlmdCkgLSAoYWxpZ25tZW50KSkgJiAoKGFsaWdubWVudCkgLSAxKSk7CSAgICAgICBcCisgCX0pCistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaAppbmRleCA2YTkxZjMyLi5lNDExMjQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoCkBAIC0xMCw3ICsxMCw3IEBACiBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgYnVpbGQgZG8gbm90IGZhaWwgd2hlbiBDT05GSUdfVFJBQ0VQT0lOVFMgaXMgbm90CiBhdmFpbGFibGUsIGFsbG93aW5nIGl0IHRvIGJlIGtlcHQgYmVpbmcgcHVsbGVkIGJ5IGRlZmF1bHQuCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CiAtLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmZmNzlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TRUNUSU9OID0gImRldmVsIgotU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IEtFUk5FTCBNT0RVTEUiCi1ERVNDUklQVElPTiA9ICJUaGUgbHR0bmctbW9kdWxlcyAyLjAgcGFja2FnZSBjb250YWlucyB0aGUga2VybmVsIHRyYWNlciBtb2R1bGVzIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzYyODQ0NjMzYTA4NzUzYmQ5NmFiMzIyYTZjN2Y5ZjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MjQzYjcyNWQ3MWJiNWRmNGExZTU5MjBiMzQ0Yjg2YWQiCi0KLWluaGVyaXQgbW9kdWxlCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhYXJjaDY0fG1pcHN8bmlvczJ8YXJtKS4qLWxpbnV4JwotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWExNmJjYTUyMjMzY2MyYmRmZjU3MmIxMTIwYTg4ZjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjIwNzhmZTMyNTRjYTY1OTY5ZGI0YjcyZTU5MDQyY2Q3OTdkYmYyNzQwODQ4ZjhmODIzODQ4NzdhZTQ2MGQ1NCIKLQotZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL2x0dG5nLW1vZHVsZXMiCi0KLUVYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIERlbGV0ZSBlbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCBRQSBmYWlsdXJlcyBpZiBubyBtb2R1bGVzIHdlcmUgYnVpbHQKLQlmaW5kICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfSAtZGVwdGggLXR5cGUgZCAtZW1wdHkgLWV4ZWMgcm1kaXIge30gXDsKLX0KLQotcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdEJyksIGQuZ2V0VmFyKCdub25hcmNoX2Jhc2VfbGliZGlyJylbMTpdLCAnbW9kdWxlcycpKToKLSAgICAgICAgYmIud2FybigiJXM6IG5vIG1vZHVsZXMgd2VyZSBjcmVhdGVkOyB0aGlzIG1heSBiZSBkdWUgdG8gQ09ORklHX1RSQUNFUE9JTlRTIG5vdCBiZWluZyBlbmFibGVkIGluIHlvdXIga2VybmVsLiIgJSBkLmdldFZhcignUE4nKSkKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkOTc0NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjUuYmIKQEAgLTAsMCArMSwzNCBAQAorU0VDVElPTiA9ICJkZXZlbCIKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBLRVJORUwgTU9EVUxFIgorREVTQ1JJUFRJT04gPSAiVGhlIGx0dG5nLW1vZHVsZXMgMi4wIHBhY2thZ2UgY29udGFpbnMgdGhlIGtlcm5lbCB0cmFjZXIgbW9kdWxlcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM2Mjg0NDYzM2EwODc1M2JkOTZhYjMyMmE2YzdmOWY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIgorCitpbmhlcml0IG1vZHVsZQorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YWFyY2g2NHxtaXBzfG5pb3MyfGFybSkuKi1saW51eCcKKworU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImFmOTdhYWFmODYxMzNmZDc4M2JiOTkzN2RjM2I0ZDU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmNGU4MmNlYjFjM2MxODc1ZWMxZmU4OWZiYTA4Mjk0ZWQ3ZmVlYzIxNjEzMzlhNWE3MWEwNjZiMjdmYzNlMjIiCisKK2V4cG9ydCBJTlNUQUxMX01PRF9ESVI9Imtlcm5lbC9sdHRuZy1tb2R1bGVzIgorCitFWFRSQV9PRU1BS0UgKz0gIktFUk5FTERJUj0nJHtTVEFHSU5HX0tFUk5FTF9ESVJ9JyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBEZWxldGUgZW1wdHkgZGlyZWN0b3JpZXMgdG8gYXZvaWQgUUEgZmFpbHVyZXMgaWYgbm8gbW9kdWxlcyB3ZXJlIGJ1aWx0CisJZmluZCAke0R9LyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0gLWRlcHRoIC10eXBlIGQgLWVtcHR5IC1leGVjIHJtZGlyIHt9IFw7Cit9CisKK3B5dGhvbiBkb19wYWNrYWdlX3ByZXBlbmQoKSB7CisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihkLmdldFZhcignRCcpLCBkLmdldFZhcignbm9uYXJjaF9iYXNlX2xpYmRpcicpWzE6XSwgJ21vZHVsZXMnKSk6CisgICAgICAgIGJiLndhcm4oIiVzOiBubyBtb2R1bGVzIHdlcmUgY3JlYXRlZDsgdGhpcyBtYXkgYmUgZHVlIHRvIENPTkZJR19UUkFDRVBPSU5UUyBub3QgYmVpbmcgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4iICUgZC5nZXRWYXIoJ1BOJykpCit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiZjNhZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotU0VDVElPTiA9ICJkZXZlbCIKLVNVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBDb250cm9sIgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IHRyYWNlIHRvb2xraXQgaXMgYSBzdWl0ZSBvZiB0b29scyBkZXNpZ25lZCBcCi10byBleHRyYWN0IHByb2dyYW0gZXhlY3V0aW9uIGRldGFpbHMgZnJvbSB0aGUgTGludXggb3BlcmF0aW5nIHN5c3RlbSBcCi1hbmQgaW50ZXJwcmV0IHRoZW0uIgotCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMWQ3ZmM0NDk2YWFjZjM3ZDkwZGY5MGI5MGIwY2FjMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0wZjBkNzE1MDBlNmE1N2ZkMjRkODI1ZjMzMjQyYjljYSIKLQotREVQRU5EUyA9ICJsaWJ1cmN1IHBvcHQgbGlieG1sMiB1dGlsLWxpbnV4IgotUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBiYXNoIGdhd2sgJHtQTn0gYmFiZWx0cmFjZSBwcm9jcHMiCi0jIGJhYmVsc3RhdHMucGwgd2FudHMgZ2V0b3B0LWxvbmcKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyIKLQotUFlUSE9OX09QVElPTiA9ICJhbV9jdl9weXRob25fcHlleGVjZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAotICAgICAgICAgICAgICAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAotICAgICAgICAgICAgICAgICBQWVRIT05fSU5DTFVERT0nLUkke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9JyBcCi0iCi1QQUNLQUdFQ09ORklHID8/PSAibHR0bmctdXN0IgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbi1iaW5kaW5ncyAke1BZVEhPTl9PUFRJT059LCxweXRob24zIHN3aWctbmF0aXZlIgotUEFDS0FHRUNPTkZJR1tsdHRuZy11c3RdID0gIi0td2l0aC1sdHRuZy11c3QsIC0td2l0aG91dC1sdHRuZy11c3QsIGx0dG5nLXVzdCIKLVBBQ0tBR0VDT05GSUdba21vZF0gPSAiLS1lbmFibGUta21vZCwgLS1kaXNhYmxlLWttb2QsIGttb2QiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAibHR0bmctdXN0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXRvb2xzL2x0dG5nLXRvb2xzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8veDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEwZjQ3YWJmYTIxNGIxNjc1ODAzNTgzODg0Mjg3NzBkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjNzI0NTZiY2VlZjk2MWZhZDFkMDg2MWYwNzQ3OGRiMTZiNzY1OWVmYTY5MDk5YmEzNjY0NWRhODljYTJjYzUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IHBrZ2NvbmZpZyB1c2VyYWRkIHB5dGhvbjMtZGlyIG1hbnBhZ2VzCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICJ0cmFjaW5nIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvKiAke2RhdGFkaXJ9L3htbC9sdHRuZyBcCi0gICAgICAgICAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgotCi0jIFNpbmNlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW50byAke2xpYmRpcn0vbHR0bmcvbGliZXhlYyB3ZSBtYXRjaCAKLSMgdGhlIGxpYmV4ZWMgaW5zYW5lIHRlc3Qgc28gc2tpcCBpdC4KLSMgUHl0aG9uIG1vZHVsZSBuZWVkcyB0byBrZWVwIF9sdHRuZy5zbwotSU5TQU5FX1NLSVBfJHtQTn0gPSAibGliZXhlYyBkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZXhlYyIKLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgZm9yIGYgaW4gTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvdXRpbHMvdXRpbHMuc2ggOyBkbwotICAgICAgICBpbnN0YWxsIC1EICIke0J9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCi0gICAgZG9uZQotCi0gICAgZm9yIGYgaW4gY29uZmlnL3RhcC1kcml2ZXIuc2ggY29uZmlnL3Rlc3QtZHJpdmVyIDsgZG8KLSAgICAgICAgaW5zdGFsbCAtRCAiJHtTfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgotICAgIGRvbmUKLQotICAgICMgUHJldmVudCAnbWFrZSBjaGVjaycgZnJvbSByZWN1cnNpbmcgaW50byBub24tdGVzdCBzdWJkaXJlY3Rvcmllcy4KLSAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSAuKiFTVUJESVJTID0gdGVzdHMhJyAiJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUiCi0KLSAgICAjIFdlIGRvbid0IG5lZWQgdGhlc2UKLSAgICBzZWQgLWkgLWUgJy9kaXN0X25vaW5zdF9TQ1JJUFRTID0gLywvXiQvZCcgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgotCi0gICAgIyBXZSBzaG91bGRuJ3QgbmVlZCB0byBidWlsZCBhbnl0aGluZyBpbiB0ZXN0cy91dGlscwotICAgIHNlZCAtaSAtZSAncyFhbV9fYXBwZW5kXzEgPSAuIHV0aWxzIWFtX19hcHBlbmRfMSA9IC4gIScgXAotICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUiCi0KLSAgICAjIENvcHkgdGhlIHRlc3RzIGRpcmVjdG9yeSB0cmVlIGFuZCB0aGUgZXhlY3V0YWJsZXMgYW5kCi0gICAgIyBNYWtlZmlsZXMgZm91bmQgd2l0aGluLgotICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiCi0gICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAotICAgICAgICAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKLSAgICAgICAgdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAotICAgICAgICAgICAgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIgotICAgIGRvbmUKLQotICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvcmVncmVzc2lvbi90b29scwotICAgIHNlZCAtaSAtZSAncyFeU1VCRElSUyA9IHRvb2xzICFTVUJESVJTID0gIScgXAotICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZSIKLQotICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAotICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgotICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLSAgICAgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAotICAgICAgICAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKLSAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAotICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAotICAgICAgICAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCi0gICAgICAgIHt9ICsKLQotICAgICMgVGhlc2Ugb2JqZWN0cyB0cmlnZ2VyIFtycGF0aHNdIFFBIGNoZWNrczsgdGhlIHRlc3QgaGFybmVzcwotICAgICMgc2tpcHMgdGhlIGFzc29jaWF0ZWQgdGVzdHMgaWYgdGhleSdyZSBtaXNzaW5nLCBzbyBkZWxldGUKLSAgICAjIHRoZW0uCi0gICAgb2Jqcz0iIgotICAgIG9ianM9IiRvYmpzIHJlZ3Jlc3Npb24vdXN0L3VzdC1kbC9saWJiYXIuc28iCi0gICAgb2Jqcz0iJG9ianMgcmVncmVzc2lvbi91c3QvdXN0LWRsL2xpYmZvby5zbyIKLSAgICBmb3Igb2JqIGluICRvYmpzIDsgZG8KLSAgICAgICAgcm0gLWYgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyR7b2JqfSIKLSAgICBkb25lCi0KLSAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCi0gICAgICAgIHRvdWNoIC1yICIke0J9L01ha2VmaWxlIiB7fSArCi0KLSAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgotICAgIGZvciBwcm9nIGluIGx0dG5nIGx0dG5nLXJlbGF5ZCBsdHRuZy1zZXNzaW9uZCBsdHRuZy1jb25zdW1lcmQgOyBkbwotICAgICAgICBleGVkaXI9IiR7RH0ke1BURVNUX1BBVEh9L3NyYy9iaW4vJHtwcm9nfSIKLSAgICAgICAgaW5zdGFsbCAtZCAiJGV4ZWRpciIKLSAgICAgICAgY2FzZSAiJHByb2ciIGluCi0gICAgICAgICAgICBsdHRuZy1jb25zdW1lcmQpCi0gICAgICAgICAgICAgICAgbG4gLXMgIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyRwcm9nIiAiJGV4ZWRpciIKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKikKLSAgICAgICAgICAgICAgICBsbiAtcyAiJHtiaW5kaXJ9LyRwcm9nIiAiJGV4ZWRpciIKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgZG9uZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTkyYzIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKQEAgLTAsMCArMSwxMjIgQEAKK1NFQ1RJT04gPSAiZGV2ZWwiCitTVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgQ29udHJvbCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCB0cmFjZSB0b29sa2l0IGlzIGEgc3VpdGUgb2YgdG9vbHMgZGVzaWduZWQgXAordG8gZXh0cmFjdCBwcm9ncmFtIGV4ZWN1dGlvbiBkZXRhaWxzIGZyb20gdGhlIExpbnV4IG9wZXJhdGluZyBzeXN0ZW0gXAorYW5kIGludGVycHJldCB0aGVtLiIKKworTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDFkN2ZjNDQ5NmFhY2YzN2Q5MGRmOTBiOTBiMGNhYzEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MGYwZDcxNTAwZTZhNTdmZDI0ZDgyNWYzMzI0MmI5Y2EiCisKK0RFUEVORFMgPSAibGlidXJjdSBwb3B0IGxpYnhtbDIgdXRpbC1saW51eCIKK1JERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIHBlcmwgYmFzaCBnYXdrICR7UE59IGJhYmVsdHJhY2UgcHJvY3BzIgorIyBiYWJlbHN0YXRzLnBsIHdhbnRzIGdldG9wdC1sb25nCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZ2V0b3B0LWxvbmciCisKK1BZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAorIgorUEFDS0FHRUNPTkZJRyA/Pz0gImx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24tYmluZGluZ3MgJHtQWVRIT05fT1BUSU9OfSwscHl0aG9uMyBzd2lnLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbHR0bmctdXN0XSA9ICItLXdpdGgtbHR0bmctdXN0LCAtLXdpdGhvdXQtbHR0bmctdXN0LCBsdHRuZy11c3QiCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi0tZW5hYmxlLWttb2QsIC0tZGlzYWJsZS1rbW9kLCBrbW9kIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLXBhZ2VzLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gImx0dG5nLXVzdCIKKworU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy10b29scy9sdHRuZy10b29scy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3gzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNTEyMjRlYjk5MWFlZTA3Zjg3MjFmZjE4NzdkMGI5NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NzgzOWViNmZjNmM2NTIxMjVmMDhhY2ZkOTM2OTcwMWMyNTE2ZWIwNWNjMjA4NDE2MGU3ZWZjN2EzZmI3MzFjIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBwa2djb25maWcgdXNlcmFkZCBweXRob24zLWRpciBtYW5wYWdlcworCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAidHJhY2luZyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyogJHtkYXRhZGlyfS94bWwvbHR0bmcgXAorICAgICAgICAgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5sYSIKKworIyBTaW5jZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGludG8gJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMgd2UgbWF0Y2ggCisjIHRoZSBsaWJleGVjIGluc2FuZSB0ZXN0IHNvIHNraXAgaXQuCisjIFB5dGhvbiBtb2R1bGUgbmVlZHMgdG8ga2VlcCBfbHR0bmcuc28KK0lOU0FORV9TS0lQXyR7UE59ID0gImxpYmV4ZWMgZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImxpYmV4ZWMiCisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGZvciBmIGluIE1ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL3V0aWxzL3V0aWxzLnNoIDsgZG8KKyAgICAgICAgaW5zdGFsbCAtRCAiJHtCfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgorICAgIGRvbmUKKworICAgIGZvciBmIGluIGNvbmZpZy90YXAtZHJpdmVyLnNoIGNvbmZpZy90ZXN0LWRyaXZlciA7IGRvCisgICAgICAgIGluc3RhbGwgLUQgIiR7U30vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKKyAgICBkb25lCisKKyAgICAjIFByZXZlbnQgJ21ha2UgY2hlY2snIGZyb20gcmVjdXJzaW5nIGludG8gbm9uLXRlc3Qgc3ViZGlyZWN0b3JpZXMuCisgICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gLiohU1VCRElSUyA9IHRlc3RzIScgIiR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlIgorCisgICAgIyBXZSBkb24ndCBuZWVkIHRoZXNlCisgICAgc2VkIC1pIC1lICcvZGlzdF9ub2luc3RfU0NSSVBUUyA9IC8sL14kL2QnICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKKworICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvdXRpbHMKKyAgICBzZWQgLWkgLWUgJ3MhYW1fX2FwcGVuZF8xID0gLiB1dGlscyFhbV9fYXBwZW5kXzEgPSAuICEnIFwKKyAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgorCisgICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAorICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5vdCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisgICAgICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgorICAgICAgICBmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKyAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisgICAgICAgIHRlc3QgLXIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiICYmIFwKKyAgICAgICAgICAgIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIKKyAgICBkb25lCisKKyAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMKKyAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSB0b29scyAhU1VCRElSUyA9ICEnIFwKKyAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUiCisKKyAgICAjIFByZXZlbnQgYXR0ZW1wdHMgdG8gdXBkYXRlIE1ha2VmaWxlcyBkdXJpbmcgdGVzdCBydW5zLCBhbmQKKyAgICAjIHNpbGVuY2UgIk1ha2luZyBjaGVjayBpbiAkU1VCRElSIiBtZXNzYWdlcy4KKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKyAgICAgICAgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCisgICAgICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKKyAgICAgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKKyAgICAgICAgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAorICAgICAgICB7fSArCisKKyAgICAjIFRoZXNlIG9iamVjdHMgdHJpZ2dlciBbcnBhdGhzXSBRQSBjaGVja3M7IHRoZSB0ZXN0IGhhcm5lc3MKKyAgICAjIHNraXBzIHRoZSBhc3NvY2lhdGVkIHRlc3RzIGlmIHRoZXkncmUgbWlzc2luZywgc28gZGVsZXRlCisgICAgIyB0aGVtLgorICAgIG9ianM9IiIKKyAgICBvYmpzPSIkb2JqcyByZWdyZXNzaW9uL3VzdC91c3QtZGwvbGliYmFyLnNvIgorICAgIG9ianM9IiRvYmpzIHJlZ3Jlc3Npb24vdXN0L3VzdC1kbC9saWJmb28uc28iCisgICAgZm9yIG9iaiBpbiAkb2JqcyA7IGRvCisgICAgICAgIHJtIC1mICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8ke29ian0iCisgICAgZG9uZQorCisgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorICAgICAgICB0b3VjaCAtciAiJHtCfS9NYWtlZmlsZSIge30gKworCisgICAgIyBTdWJzdGl0dXRlIGxpbmtzIHRvIGluc3RhbGxlZCBiaW5hcmllcy4KKyAgICBmb3IgcHJvZyBpbiBsdHRuZyBsdHRuZy1yZWxheWQgbHR0bmctc2Vzc2lvbmQgbHR0bmctY29uc3VtZXJkIDsgZG8KKyAgICAgICAgZXhlZGlyPSIke0R9JHtQVEVTVF9QQVRIfS9zcmMvYmluLyR7cHJvZ30iCisgICAgICAgIGluc3RhbGwgLWQgIiRleGVkaXIiCisgICAgICAgIGNhc2UgIiRwcm9nIiBpbgorICAgICAgICAgICAgbHR0bmctY29uc3VtZXJkKQorICAgICAgICAgICAgICAgIGxuIC1zICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8kcHJvZyIgIiRleGVkaXIiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgbG4gLXMgIiR7YmluZGlyfS8kcHJvZyIgIiRleGVkaXIiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgIGRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg4YjVlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgVXNlcnNwYWNlIFRyYWNlciAyLngiCi1ERVNDUklQVElPTiA9ICJUaGUgTFRUbmcgVVNUIDIueCBwYWNrYWdlIGNvbnRhaW5zIHRoZSB1c2Vyc3BhY2UgdHJhY2VyIGxpYnJhcnkgdG8gdHJhY2UgdXNlcnNwYWNlIGNvZGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXN0IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2x0dG5nLXVzdCIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5NjNlYjM2NmI3ODEyNTJiMGJmMGZkZjE2MjRkOWU5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NucHJpbnRmL3NucHJpbnRmLmM7ZW5kbGluZT0zMjttZDU9ZDNkNTQ0OTU5ZDhhMzc4MmIyZTA3NDUxYmUwYTkwM2MgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvdmFyaW91cy5oO2VuZGxpbmU9MzE7bWQ1PTg5ZjI1MDliNmI0NjgyYzRmYzk1MjU1ZWVjNGFiZTQ0IgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBtYW5wYWdlcwotCi1ERVBFTkRTID0gImxpYnVyY3UgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59LWJpbiA9ICJweXRob24zLWNvcmUiCi0KLSMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGFmdGVyIHJlbmFtZQotUlBST1ZJREVTXyR7UE59ID0gImx0dG5nMi11c3QiCi1SUkVQTEFDRVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLVJDT05GTElDVFNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLQotUEUgPSAiMiIKLQotU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy11c3QvbHR0bmctdXN0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzdmMzM3OGJhMzdhMzY4MDE0MjBiY2U4N2I3MDJlOWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQ1NDFhODYzZjQyZGZjNjg1Y2EwNTAyNDAyN2E0NDJjNzBkMDM1OTRjMTU0YTQzZTYyYmMxMDliMWVhNWRhZiIKLQotQ1ZFX1BST0RVQ1QgPSAidXN0IgotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICAjIFBhdGNoIHB5dGhvbiB0b29scyB0byB1c2UgUHl0aG9uIDM7IHRoZXkgc2hvdWxkIGJlIHNvdXJjZSBjb21wYXRpYmxlLCBidXQKLSAgICAgICAgIyBzdGlsbCByZWZlciB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZwotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7YmluZGlyfS9sdHRuZy1nZW4tdHAKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2RhNGNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuOS4xLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBVc2Vyc3BhY2UgVHJhY2VyIDIueCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMVFRuZyBVU1QgMi54IHBhY2thZ2UgY29udGFpbnMgdGhlIHVzZXJzcGFjZSB0cmFjZXIgbGlicmFyeSB0byB0cmFjZSB1c2Vyc3BhY2UgY29kZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91c3QiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvbHR0bmctdXN0IgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzk2M2ViMzY2Yjc4MTI1MmIwYmYwZmRmMTYyNGQ5ZTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvc25wcmludGYuYztlbmRsaW5lPTMyO21kNT1kM2Q1NDQ5NTlkOGEzNzgyYjJlMDc0NTFiZTBhOTAzYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi92YXJpb3VzLmg7ZW5kbGluZT0zMTttZDU9ODlmMjUwOWI2YjQ2ODJjNGZjOTUyNTVlZWM0YWJlNDQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIG1hbnBhZ2VzCisKK0RFUEVORFMgPSAibGlidXJjdSB1dGlsLWxpbnV4IgorUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbjMtY29yZSIKKworIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWZ0ZXIgcmVuYW1lCitSUFJPVklERVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsdHRuZzItdXN0IgorUkNPTkZMSUNUU18ke1BOfSA9ICJsdHRuZzItdXN0IgorCitQRSA9ICIyIgorCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXVzdC9sdHRuZy11c3QtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YTU2MzZmYzNkOWFhMzcwZjY1YjI1YTgwMmE3OWU2ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODkxZDI2N2NkYmJiZDExY2YzNDc1MWY2NmMyMWM0YTdmZGMwZWVjM2MxYjUzYmUyYzQwZGNhMDczYjdkYWE0IgorCitDVkVfUFJPRFVDVCA9ICJ1c3QiCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgICMgUGF0Y2ggcHl0aG9uIHRvb2xzIHRvIHVzZSBQeXRob24gMzsgdGhleSBzaG91bGQgYmUgc291cmNlIGNvbXBhdGlibGUsIGJ1dAorICAgICAgICAjIHN0aWxsIHJlZmVyIHRvIFB5dGhvbiAyIGluIHRoZSBzaGViYW5nCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L2x0dG5nLWdlbi10cAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCmluZGV4IDk2ZWY0M2QuLjRiMDE2NTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKQEAgLTI3LDYgKzI3LDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoIFwKICIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm9wcm9maWxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvb3Byb2ZpbGUvZmlsZXMvb3Byb2ZpbGUvIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLnBhdGNoIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKaW5kZXggMWJhZDZmNC4uYjc5Yjk3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgpAQCAtMjYsNyArMjYsNyBAQAogICAgIHZpcnR1YWwvJHtNTFBSRUZJWH1saWJjIFwKICAgICAke01MUFJFRklYfWVsZnV0aWxzIFwKICAgICAke01MUFJFRklYfWJpbnV0aWxzIFwKLSAgICBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgeHogXAorICAgIGJpc29uIGZsZXggeHogXAogICAgIHhtbHRvLW5hdGl2ZSBcCiAgICAgYXNjaWlkb2MtbmF0aXZlIFwKICIKQEAgLTM1LDEwICszNSw5IEBACiAKIFBST1ZJREVTID0gInZpcnR1YWwvcGVyZiIKIAotaW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtYXJjaAoraW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtYXJjaCBweXRob25uYXRpdmUKIAogIyBuZWVkZWQgZm9yIGJ1aWxkaW5nIHRoZSB0b29scy9wZXJmIFB5dGhvbiBiaW5kaW5ncwotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfQogaW5oZXJpdCBweXRob24tZGlyCiBleHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKIApAQCAtNDgsOCArNDcsNyBAQAogZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKIAogIyBuZWVkZWQgZm9yIGJ1aWxkaW5nIHRoZSB0b29scy9wZXJmIFBlcmwgYmluZGluZwotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAncGVybG5hdGl2ZScsICcnLCBkKX0KLWluaGVyaXQgY3Bhbi1iYXNlCitpbmhlcml0IHBlcmxuYXRpdmUgY3Bhbi1iYXNlCiAjIEVudiB2YXIgd2hpY2ggdGVsbHMgcGVybCBpZiBpdCBzaG91bGQgdXNlIGhvc3QgKG5vKSBvciB0YXJnZXQgKHllcykgc2V0dGluZ3MKIGV4cG9ydCBQRVJMQ09ORklHVEFSR0VUID0gIiR7QGlzX3RhcmdldChkKX0iCiBleHBvcnQgUEVSTF9JTkMgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9DT1JFIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiCmluZGV4IDFmMmRmYjguLjRkN2EzZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjguYmIKQEAgLTE3LDExICsxNyw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCiAKLSMgd2UgbmVlZCB0byBleHBsaWNpdGx5IGxpbmsgd2l0aCBsaWJpbnRsIGluIHVDbGliYyBzeXN0ZW1zCi1FWFRSQV9MREZMQUdTID89ICIiCi1FWFRSQV9MREZMQUdTX2xpYmMtdWNsaWJjID0gIi1saW50bCIKLUxERkxBR1MgKz0gIiR7RVhUUkFfTERGTEFHU30iCi0KICMgd2UgZG8gbm90IHdhbnQgbGlibmN1cnNlc3cgaWYgd2UgY2FuCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICAjIGNvbmZpZ3VyZS5hYyBjaGVja3MgZm9yIGRlbHdpbigpIGluICJuY3Vyc2VzdyBuY3Vyc2VzIiBzbyBsZXQncyBkcm9wIGZpcnN0IG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjIyLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MzEwNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTZkY2EzMjViMzAxNDQ0MGY0NTdhOTJkYjE4ZmZlMzQyYTM1ODg4ZGIzZjA3NTY2OTRhOTliOTY1Mjc5NjM2NyIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjk1MTQwNjVkYzc1MjEwNTI0MGU1NTY3YzEzNzA4YWY0IgotCi1BVVRPVE9PTFNfQVVYRElSID0gIiR7U30vYnVpbGQtYXV4IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtY29tcGlsZS13YXJuaW5ncyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IGRidXMiCi0KLVNPTElCUyA9ICIuc28iCi1GSUxFU19TT0xJQlNERVYgPSAiIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMvIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgotCi0jIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YTI3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtcG9sa2l0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1jaGVjay1mb3ItcG9sa2l0LWZvci1VSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjJiNDRhZTFkOGNkODk5NDE3Mjk0YTljNDUwOWQ3ODcwIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDU0ZWViZTJhZmI2ZmUzYzA2YWM4YzQ2YmMwNDVjNDJmNjc1ZDRmZDY0ZTZmMTZjYmM2MDJkNWM3Y2UyN2JlYyIKKworQVVUT1RPT0xTX0FVWERJUiA9ICIke1N9L2J1aWxkLWF1eCIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3MiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi0tZW5hYmxlLWd0aywtLWRpc2FibGUtZ3RrLGd0ayszIgorUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0tZW5hYmxlLXBvbGtpdCwtLWRpc2FibGUtcG9sa2l0LHBvbGtpdCBkYnVzIgorCitTT0xJQlMgPSAiLnNvIgorRklMRVNfU09MSUJTREVWID0gIiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKKworIyBXZSBkbyBub3QgeWV0IHdvcmsgZm9yIGFhcmNoNjQuCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLW5hdGl2ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLW5hdGl2ZV9naXQuYmIKaW5kZXggYzNkYTc3Yy4uMTljYzFjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC1uYXRpdmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAtbmF0aXZlX2dpdC5iYgpAQCAtMyw1ICszLDQgQEAKIAogaW5oZXJpdCBuYXRpdmUKIAotUk1fV09SS19FWENMVURFX0lURU1TICs9ICJyZWNpcGUtc3lzcm9vdC1uYXRpdmUiCiBhZGR0YXNrIGFkZHRvX3JlY2lwZV9zeXNyb290IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QgYmVmb3JlIGRvX2J1aWxkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3RhcHJ1bi1zdGFwYnBmLWRvbi10LXN1cHBvcnQtaW5zdGFsbGluZy1hLW5vbi1yb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjExNjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDNlMTNhMDA2ZmUzZGZmOTQ4OTI2OTI3NDA5M2JmODY4NTMyMDM2ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDUgU2VwIDIwMTcgMTY6MDI6NTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RhcHJ1bi9zdGFwYnBmOiBkb24ndCBzdXBwb3J0IGluc3RhbGxpbmcgYSBub24tcm9vdAorCitTaW5jZSB3ZSBhcmUgaW4gYSBrbm93biBlbnZpcm9ubWVudCBhbmQgaW5zdGFsbGluZyBhcyByb290IGFuZAorZXhwZWN0IHRvIGJlIHJ1bm5pbmcgYXMgcm9vdCwgZG9uJ3QgY3JlYXRlIHRoZSBncm91cCBvciBjaG1vZAordGhlIGJpbmFyaWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0VtYmVkZGVkXQorU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorLS0tCisgc3RhcGJwZi9NYWtlZmlsZS5hbSB8IDE0ICsrKysrKystLS0tLS0tCisgc3RhcHJ1bi9NYWtlZmlsZS5hbSB8IDEyICsrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zdGFwYnBmL01ha2VmaWxlLmFtIGIvc3RhcGJwZi9NYWtlZmlsZS5hbQoraW5kZXggNDIxYjA0NGVmLi5mN2RhZWIyYjIgMTAwNjQ0CistLS0gYS9zdGFwYnBmL01ha2VmaWxlLmFtCisrKysgYi9zdGFwYnBmL01ha2VmaWxlLmFtCitAQCAtMzksMTEgKzM5LDExIEBAIGdpdF92ZXJzaW9uLnN0YW1wIC4uL2dpdF92ZXJzaW9uLmg6CisgCisgIyBXaHkgdGhlICJpZCAtdSIgY29uZGl0aW9uPyAgVGhpcyB3YXksIGFuIHVucHJpdmlsZWdlZCB1c2VyIGNhbiBydW4KKyAjIG1ha2UgaW5zdGFsbCwgYW5kIGhhdmUgInN1ZG8gc3RhcCAuLi4uIiBvciAic3VkbyBzdGFwYnBmIC4uLi4iIHdvcmsgbGF0ZXIuCistaW5zdGFsbC1leGVjLWhvb2s6CistCWlmIFsgYGlkIC11YCAtZXEgMCBdOyB0aGVuIFwKKy0JCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLWcgMTU2IC1yIHN0YXB1c3IgMj4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLXIgc3RhcHVzcjsgXAorLQkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCBcCistCQkmJiBjaGdycCBzdGFwdXNyICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBicGYiIFwKKy0JCSYmIGNobW9kIDA0MTEwICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBicGYiOyBcCistCWZpCisrI2luc3RhbGwtZXhlYy1ob29rOgorKyMJaWYgWyBgaWQgLXVgIC1lcSAwIF07IHRoZW4gXAorKyMJCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLWcgMTU2IC1yIHN0YXB1c3IgMj4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLXIgc3RhcHVzcjsgXAorKyMJCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgXAorKyMJCSYmIGNoZ3JwIHN0YXB1c3IgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcGJwZiIgXAorKyMJCSYmIGNobW9kIDA0MTEwICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBicGYiOyBcCisrIwlmaQorIGVuZGlmCitkaWZmIC0tZ2l0IGEvc3RhcHJ1bi9NYWtlZmlsZS5hbSBiL3N0YXBydW4vTWFrZWZpbGUuYW0KK2luZGV4IDQwNzNhYTAxYy4uMjkyNWUzNGMzIDEwMDY0NAorLS0tIGEvc3RhcHJ1bi9NYWtlZmlsZS5hbQorKysrIGIvc3RhcHJ1bi9NYWtlZmlsZS5hbQorQEAgLTcyLDkgKzcyLDkgQEAgZ2l0X3ZlcnNpb24uc3RhbXAgLi4vZ2l0X3ZlcnNpb24uaDoKKyAKKyAjIFdoeSB0aGUgImlkIC11IiBjb25kaXRpb24/ICBUaGlzIHdheSwgYW4gdW5wcml2aWxlZ2VkIHVzZXIgY2FuIHJ1bgorICMgbWFrZSBpbnN0YWxsLCBhbmQgaGF2ZSAic3VkbyBzdGFwIC4uLi4iIG9yICJzdWRvIHN0YXBydW4gLi4uLiIgd29yayBsYXRlci4KKy1pbnN0YWxsLWV4ZWMtaG9vazoKKy0JaWYgWyBgaWQgLXVgIC1lcSAwIF07IHRoZW4gXAorLQkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtZyAxNTYgLXIgc3RhcHVzciAyPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtciBzdGFwdXNyOyBcCistCQlnZXRlbnQgZ3JvdXAgc3RhcHVzciA+L2Rldi9udWxsICYmIGNoZ3JwIHN0YXB1c3IgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcHJ1biI7IFwKKy0JCWNobW9kIDA0MTEwICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBydW4iOyBcCistCWZpCisrI2luc3RhbGwtZXhlYy1ob29rOgorKyMJaWYgWyBgaWQgLXVgIC1lcSAwIF07IHRoZW4gXAorKyMJCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLWcgMTU2IC1yIHN0YXB1c3IgMj4vZGV2L251bGwgfHwgZ3JvdXBhZGQgLXIgc3RhcHVzcjsgXAorKyMJCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgJiYgY2hncnAgc3RhcHVzciAiJChERVNURElSKSQoYmluZGlyKS9zdGFwcnVuIjsgXAorKyMJCWNobW9kIDA0MTEwICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBydW4iOyBcCisrIwlmaQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgppbmRleCBiM2ZkOTczLi40NzViMjA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiU2NyaXB0LWRpcmVjdGVkIGR5bmFtaWMgdHJhY2luZyBhbmQgcGVyZm9ybWFuY2UgYW5hbHlzaXMgdG9vbCBmb3IgTGludXgiCitIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL3N5c3RlbXRhcC8iCiAKIHJlcXVpcmUgc3lzdGVtdGFwX2dpdC5pbmMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCmluZGV4IGE2YWVkZDMuLjNkYzY4OGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKQEAgLTEsNiArMSw2IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1TUkNSRVYgPSAiYjhlYTM1MGRjMTNhZGI2MTkwZDkwNDRhNWI4MDExMGE0YzQ0MTI3MCIKK1NSQ1JFViA9ICI0NWQwZTdhMDlhMTVhMjEwNzhkMGViZjJkYjUxNzVlZDllODcwMTRlIgogUFYgPSAiMy4xIgogCiBTUkNfVVJJID0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9zeXN0ZW10YXAuZ2l0IFwKQEAgLTEyLDcgKzEyLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWxldC1jb25maWd1cmUtd3JpdGUtYS1weXRob24tbG9jYXRpb24taW50by10aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtcHl0aG9uLW1vZHVsZXMtdG8tY29ycmVjdC1saWJyYXJ5LWRpci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkcnVuLXJlbW92ZS1xdW90ZXMtYXJvdW5kLUktaW5jbHVkZS1saW5lLnBhdGNoIFwKLSAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaCBcCisgICAgICAgICAgICIKIAogIyBzeXN0ZW10YXAgZG9lc24ndCBzdXBwb3J0IG1pcHMKIENPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm18YWFyY2g2NCkuKi1saW51eCcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC9rZXJuZWxzaGFya19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQva2VybmVsc2hhcmtfZ2l0LmJiCmluZGV4IDU2MzE4MmMuLjlhNWU4MDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC9rZXJuZWxzaGFya19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL2tlcm5lbHNoYXJrX2dpdC5iYgpAQCAtMTUsNyArMTUsNyBAQAogRVhUUkFfT0VNQUtFID0gIlwKICAgICAncHJlZml4PSR7cHJlZml4fScgXAogICAgICdiaW5kaXJfcmVsYXRpdmU9JHtAb2UucGF0aC5yZWxhdGl2ZShwcmVmaXgsIGJpbmRpcil9JyBcCi0gICAgJ2xpYmRpcj0ke0BvZS5wYXRoLnJlbGF0aXZlKHByZWZpeCwgbGliZGlyKX0nIFwKKyAgICAnbGliZGlyPSR7bGliZGlyfScgXAogICAgIE5PX1BZVEhPTj0xIFwKICAgICBndWkgXAogIgpAQCAtMjgsNSArMjgsNiBAQAogICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbF9ndWkKICAgICBybSAke0R9JHtiaW5kaXJ9L3RyYWNlLWNtZAogICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L3RyYWNlLWNtZAorICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC90cmFjZS1jbWQuYmFzaAogICAgIHJtZGlyICR7RH0ke2xpYmRpcn0KIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKaW5kZXggM2FkMDZmYS4uMDAyZWU2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKQEAgLTEsNSArMSw1IEBACi1TUkNSRVYgPSAiOWJlNWQ3NDgwNTgzMGEyOTE2MTVmMmYzNGEyN2M5MDNmNmEzN2IxZSIKLVBWID0gIjIuNiIKK1NSQ1JFViA9ICIwMjE3MTBlMTA3M2ZlMjAzMzQxYjQyN2NkMWE0YmFjNTc3ZWM4OTljIgorUFYgPSAiMi42LjEiCiAKIGluaGVyaXQgcGtnY29uZmlnCiAKQEAgLTcsNiArNyw3IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3Jvc3RlZHQvdHJhY2UtY21kLmdpdDticmFuY2g9dHJhY2UtY21kLXN0YWJsZS12Mi42IFwKICAgICAgICAgICAgZmlsZTovL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQvMDAwMS1JbmNsdWRlLWxpbWl0cy5oLXNvLXRoYXQtUEFUSF9NQVgtaXMtZGVmaW5lZC1hbi1pc3N1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NjMwODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDk0ODhmOTJjMWQwYzc5MzFjM2UxNzk1MGQxZjllZWEyYWViM2UyYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTU6NTY6MTggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBsaW1pdHMuaCBzbyB0aGF0IFBBVEhfTUFYIGlzIGRlZmluZWQgKGFuIGlzc3VlIG9uCisgbXVzbCkuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0cmFjZS1saXN0ZW4uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdHJhY2UtbGlzdGVuLmMgYi90cmFjZS1saXN0ZW4uYworaW5kZXggMTdmZjlkOC4uODM4ZDZiYyAxMDA2NDQKKy0tLSBhL3RyYWNlLWxpc3Rlbi5jCisrKysgYi90cmFjZS1saXN0ZW4uYworQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJ0cmFjZS1sb2NhbC5oIgorICNpbmNsdWRlICJ0cmFjZS1tc2cuaCIKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIKaW5kZXggZGQ5YThhMC4uMjdjN2MxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIKQEAgLTEsMTEgKzEsMTIgQEAKIFNVTU1BUlkgPSAiVXNlciBpbnRlcmZhY2UgdG8gRnRyYWNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC5rZXJuZWwub3JnLyIKIExJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKIAogcmVxdWlyZSB0cmFjZS1jbWQuaW5jCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyYWNlLWNtZC5jO2JlZ2lubGluZT02O2VuZGxpbmU9ODttZDU9MmMyMmM5NjVhNjQ5ZGRkNzk3M2Q3OTEzYzU2MzRhNWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1lZGIxOTVmZTUzOGU0NTUyYzFmNmNhMGZkN2JmNGYwYSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZS1pbnB1dC5jO2JlZ2lubGluZT01O2VuZGxpbmU9ODttZDU9M2VjODJmNDNiYmUwY2ZiNTk1MWZmNDE0ZWY0ZDQ0ZDAgXAogIgogCkBAIC0xNyw3ICsxOCw3IEBACiAgICAgJ2ltZ19pbnN0YWxsPSR7ZGF0YWRpcn0va2VybmVsc2hhcmsvaHRtbC9pbWFnZXMnIFwKICAgICBcCiAgICAgJ2JpbmRpcl9yZWxhdGl2ZT0ke0BvZS5wYXRoLnJlbGF0aXZlKHByZWZpeCwgYmluZGlyKX0nIFwKLSAgICAnbGliZGlyPSR7QG9lLnBhdGgucmVsYXRpdmUocHJlZml4LCBsaWJkaXIpfScgXAorICAgICdsaWJkaXI9JHtsaWJkaXJ9JyBcCiAgICAgXAogICAgIE5PX1BZVEhPTj0xIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9saWJwbmcvbGlicG5nMTJfMS4yLjU3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L2xpYnBuZy9saWJwbmcxMl8xLjIuNTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNzRmNWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L2xpYnBuZy9saWJwbmcxMl8xLjIuNTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIlBORyBpbWFnZSBmb3JtYXQgZGVjb2RpbmcgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxpYnBuZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU5N2I4YTkxOTk0YTNlMjdhZTZhYTc5YmYwMjY3N2Q5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2JlZ2lubGluZT0xOTtlbmRsaW5lPTEwOTttZDU9MTY2NDA2Mzk3NzE4OTI1YjY2MGYwMDMzZjc1NThlZjciCi1ERVBFTkRTID0gInpsaWIiCi0KLVBOID0gImxpYnBuZzEyIgotUyA9ICIke1dPUktESVJ9L2xpYnBuZy0ke1BWfSIKLQotU1JDX1VSSSA9ICIke0dFTlRPT19NSVJST1J9L2xpYnBuZy0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMDcwNTJlNWU4YWY5N2I4MmIxN2I2NGZiMWIzNjc3YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjQ2MjBlMTFmYTI4M2ZlZGFmYjQ3NDQyN2M4ZTk2YmYxNDk1MTFhMTgwNGJkYzQ3MzUwOTYzYWU1Y2Y1NGQ4IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJwbmcvZmlsZXMvbGlicG5nMTIvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYnBuZzEyLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLUJJTkNPTkZJR19HTE9CID0gIiR7UE59LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFRoZSBmb2xsb3cgbGluayBmaWxlcyBsaW5rIHRvIGNvcnJlc3BvbmRpbmcgcG5nMTIqLmggYW5kIGxpYnBuZzEyKiBmaWxlcwotCSMgVGhleSBjb25mbGljdCB3aXRoIGhpZ2hlciB2ZXJpc29uLCBzbyBkcm9wIHRoZW0KLQlybSAke0R9LyR7aW5jbHVkZWRpcn0vcG5nLmgKLQlybSAke0R9LyR7aW5jbHVkZWRpcn0vcG5nY29uZi5oCi0KLQlybSAke0R9LyR7bGliZGlyfS9saWJwbmcubGEKLQlybSAke0R9LyR7bGliZGlyfS9saWJwbmcuc28KLQlybSAke0R9LyR7bGliZGlyfS9saWJwbmcuYSB8fCB0cnVlCi0Jcm0gJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnL2xpYnBuZy5wYwotCi0Jcm0gJHtEfS8ke2JpbmRpcn0vbGlicG5nLWNvbmZpZwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliY2xhc3MtaXNhLXBlcmxfMC4zNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmNsYXNzLWlzYS1wZXJsXzAuMzYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5Mzg0MWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliY2xhc3MtaXNhLXBlcmxfMC4zNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHJlcG9ydGluZyB0aGUgc2VhcmNoIHBhdGggZm9yIGEgY2xhc3MncyBJU0EgdHJlZSIKLURFU0NSSVBUSU9OID0gIlN1cHBvc2UgeW91IGhhdmUgYSBjbGFzcyAobGlrZSBGb29kOjpGaXNoOjpGaXNoc3RpY2spIHRoYXQgaXMgZGVyaXZlZCwgXAotdmlhIGl0cyBASVNBLCBmcm9tIG9uZSBvciBtb3JlIHN1cGVyY2xhc3NlcyAoYXMgRm9vZDo6RmlzaDo6RmlzaHN0aWNrIGlzIGZyb20gRm9vZDo6RmlzaCxcCi1MaWZlOjpGdW5ndXMsIGFuZCBDaGVtaWNhbHMpLCBhbmQgc29tZSBvZiB0aG9zZSBzdXBlcmNsYXNzZXMgbWF5IHRoZW1zZWx2ZXMgZWFjaCBiZVwKLWRlcml2ZWQsIHZpYSBpdHMgQElTQSwgZnJvbSBvbmUgb3IgbW9yZSBzdXBlcmNsYXNzZXMgKGFzIGFib3ZlKS5cCi1cCi1XaGVuLCB0aGVuLCB5b3UgY2FsbCBhIG1ldGhvZCBpbiB0aGF0IGNsYXNzICgkZmlzaHN0aWNrLT5jYWxvcmllcyksIFBlcmwgZmlyc3Qgc2VhcmNoZXNcCi10aGVyZSBmb3IgdGhhdCBtZXRob2QsIGJ1dCBpZiBpdCdzIG5vdCB0aGVyZSwgaXQgZ29lcyBzZWFyY2hpbmcgaW4gaXRzIHN1cGVyY2xhc3NlcywgYW5kXAotc28gb24sIGluIGEgZGVwdGgtZmlyc3QgKG9yIG1heWJlICJoZWlnaHQtZmlyc3QiIGlzIHRoZSB3b3JkKSBzZWFyY2guIEluIHRoZSBhYm92ZSBleGFtcGxlLFwKLWl0J2QgZmlyc3QgbG9vayBpbiBGb29kOjpGaXNoLCB0aGVuIEZvb2QsIHRoZW4gTWF0dGVyLCB0aGVuIExpZmU6OkZ1bmd1cywgdGhlbiBMaWZlLCB0aGVuXAotQ2hlbWljYWxzLlwKLVwKLVRoaXMgbGlicmFyeSwgQ2xhc3M6OklTQSwgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHRoYXQgbGlzdCAtLSB0aGUgbGlzdFwKLShpbiBvcmRlcikgb2YgbmFtZXMgb2YgY2xhc3NlcyBQZXJsIHdvdWxkIHNlYXJjaCB0byBmaW5kIGEgbWV0aG9kLCB3aXRoIG5vIGR1cGxpY2F0ZXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvQ2xhc3MtSVNBLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTA3O2VuZGxpbmU9MTExO21kNT02YTVjNjg0MmE2M2NmZTRkYWIxZjY2ZTIzNTBlNGQyNSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9TL1NNL1NNVUVMTEVSL0NsYXNzLUlTQS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYTJhZDIwM2M4ZGM4N2Q2YzlkZTE2MjE1ZDAwYWY0NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ODE2ZjM0ZTlhMzhlODQ5YTEwZGY3NTYwMzBkY2NmOWZlMDYxYTE5NmMxMWFjM2ZhYWZkNzExM2M5MjliOTY0IgotCi1TID0gIiR7V09SS0RJUn0vQ2xhc3MtSVNBLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJkdW1wdmFsdWUtcGVybF8xLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZHVtcHZhbHVlLXBlcmxfMS4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3NDYxNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJkdW1wdmFsdWUtcGVybF8xLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcHJvdmlkZXMgc2NyZWVuIGR1bXAgb2YgUGVybCBkYXRhIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35mbG9yYS9EdW1wdmFsdWUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjczNmJlYzVhZGExZmM1ZTM5YjJhOGU3ZTA2YmJjYmIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRi9GTC9GTE9SQS9EdW1wdmFsdWUtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmVkZTlmNjkzZDRhOWM0NTU1NTQxY2IxYTFjYzIwMDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWVhNzQ2MDZiNTQ1Zjc2OWE3ODdlYzJhZTIyOTU0OWEyYWQwYThlM2NkNGIxNGVmZjJjZTM4NDE4MzZiM2JkYiIKLQotUyA9ICIke1dPUktESVJ9L0R1bXB2YWx1ZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZW52LXBlcmxfMS4wNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmVudi1wZXJsXzEuMDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkOGUxMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZW52LXBlcmxfMS4wNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgdGhhdCBpbXBvcnRzIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcyBzY2FsYXJzIG9yIGFycmF5cyIKLURFU0NSSVBUSU9OID0gIlBlcmwgbWFpbnRhaW5zIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBhIHNwZWNpYWwgaGFzaCBuYW1lZCAlRU5WLiBcCi1Gb3Igd2hlbiB0aGlzIGFjY2VzcyBtZXRob2QgaXMgaW5jb252ZW5pZW50LCB0aGUgUGVybCBtb2R1bGUgRW52IGFsbG93cyBlbnZpcm9ubWVudCBcCi12YXJpYWJsZXMgdG8gYmUgdHJlYXRlZCBhcyBzY2FsYXIgb3IgYXJyYXkgdmFyaWFibGVzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+ZmxvcmEvRW52LyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YzFjYmYxOGRiNTZiMzM0MGQ5MWNiOTQ3OTQzYmQzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0YvRkwvRkxPUkEvRW52LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImZkYmE1YzA2OTBlNjY5NzJjOTZmZWUxMTJjZjVmMjVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NGEzZDQxMmRmMjQ2YWZkYzMxYTIxOTljYmQ4YWU5MTUxNjdhM2Y0Njg0ZjdiNzAxNGNlMTIwMDI1MWViYjAiCi0KLVMgPSAiJHtXT1JLRElSfS9FbnYtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmZpbGUtY2hlY2t0cmVlLXBlcmxfNC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmZpbGUtY2hlY2t0cmVlLXBlcmxfNC40MS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UzN2M3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJmaWxlLWNoZWNrdHJlZS1wZXJsXzQuNDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRoYXQgcnVuIG1hbnkgZmlsZXRlc3QgY2hlY2tzIG9uIGEgdHJlZSIKLURFU0NSSVBUSU9OID0gIlRoZSB2YWxpZGF0ZSgpIHJvdXRpbmUgdGFrZXMgYSBzaW5nbGUgbXVsdGlsaW5lIHN0cmluZyBjb25zaXN0aW5nIFwKLW9mIGRpcmVjdGl2ZXMsIGVhY2ggY29udGFpbmluZyBhIGZpbGVuYW1lIHBsdXMgYSBmaWxlIHRlc3QgdG8gdHJ5IG9uIGl0LiAoVGhlIGZpbGUgXAotdGVzdCBtYXkgYWxzbyBiZSBhICJjZCIsIGNhdXNpbmcgc3Vic2VxdWVudCByZWxhdGl2ZSBmaWxlbmFtZXMgdG8gYmUgaW50ZXJwcmV0ZWQgXAotcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuKSBBZnRlciB0aGUgZmlsZSB0ZXN0IHlvdSBtYXkgcHV0IHx8IGRpZSB0byBtYWtlIGl0IGEgXAotZmF0YWwgZXJyb3IgaWYgdGhlIGZpbGUgdGVzdCBmYWlscy4gVGhlIGRlZmF1bHQgaXMgfHwgd2Fybi4gVGhlIGZpbGUgdGVzdCBtYXkgXAotb3B0aW9uYWxseSBoYXZlIGEgIiEnIHByZXBlbmRlZCB0byB0ZXN0IGZvciB0aGUgb3Bwb3NpdGUgY29uZGl0aW9uLiBJZiB5b3UgZG8gYSBcCi1jZCBhbmQgdGhlbiBsaXN0IHNvbWUgcmVsYXRpdmUgZmlsZW5hbWVzLCB5b3UgbWF5IHdhbnQgdG8gaW5kZW50IHRoZW0gc2xpZ2h0bHkgZm9yIFwKLXJlYWRhYmlsaXR5LiBJZiB5b3Ugc3VwcGx5IHlvdXIgb3duIGRpZSgpIG9yIHdhcm4oKSBtZXNzYWdlLCB5b3UgY2FuIHVzZSAkZmlsZSB0byBcCi1pbnRlcnBvbGF0ZSB0aGUgZmlsZW5hbWUuIFwKLVwKLUZpbGV0ZXN0cyBtYXkgYmUgYnVuY2hlZDogIi1yd3giIHRlc3RzIGZvciBhbGwgb2YgLXIsIC13LCBhbmQgLXguIE9ubHkgdGhlIGZpcnN0IGZhaWxlZCBcCi10ZXN0IG9mIHRoZSBidW5jaCB3aWxsIHByb2R1Y2UgYSB3YXJuaW5nLiBcCi1cCi1UaGUgcm91dGluZSByZXR1cm5zIHRoZSBudW1iZXIgb2Ygd2FybmluZ3MgaXNzdWVkLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+ZmxvcmEvRmlsZS1DaGVja1RyZWUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzZmY2FjYzVkZjgwZTAzNzA2MDMwMGE3ZjRiOTNiZjkiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRi9GTC9GTE9SQS9GaWxlLUNoZWNrVHJlZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTljODJhYTdlNWI3Zjc1MmI0ZGExNGE2YzhhZDc0MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYzk5YWI2YmI1YWY0NjY0ODMyNzE1OTc0YjVhMTllMzI4MDcxZGM5MjAyYWI3MmU1ZDVhNTk0ZWJkNDZhNzI5IgotCi1TID0gIiR7V09SS0RJUn0vRmlsZS1DaGVja1RyZWUtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmkxOG4tY29sbGF0ZS1wZXJsXzEuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJpMThuLWNvbGxhdGUtcGVybF8xLjAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTgzOWUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmkxOG4tY29sbGF0ZS1wZXJsXzEuMDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRoYXQgY29tcGFyZSA4LWJpdCBzY2FsYXIgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgeW91IHdpdGggb2JqZWN0cyB0aGF0IHdpbGwgY29sbGF0ZSBhY2NvcmRpbmcgdG8gXAoteW91ciBuYXRpb25hbCBjaGFyYWN0ZXIgc2V0LCBwcm92aWRlZCB0aGF0IHRoZSBQT1NJWCBzZXRsb2NhbGUoKSBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQgXAotb24geW91ciBzeXN0ZW0uIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35mbG9yYS9JMThOLUNvbGxhdGUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZmY2ZDYyOTE0NGE2ZWMxZWE4YzMwMGY3NTc2MDE4NGYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRi9GTC9GTE9SQS9JMThOLUNvbGxhdGUtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzJkZGI2ZDFjNTljZmRmMzFhYTNiMDQ3OTliODZhZjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTE3NDUwNmJjOTAzZWRhODk2OTAzOTRlM2Y0NTU1OGFiN2UwMTMxMTQyMjc4OTZkODU2OWQ2MTY0NjQ4ZmUzNyIKLQotUyA9ICIke1dPUktESVJ9L0kxOE4tQ29sbGF0ZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGlicG9kLXBsYWluZXItcGVybF8xLjA0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGlicG9kLXBsYWluZXItcGVybF8xLjA0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2U1OGYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYnBvZC1wbGFpbmVyLXBlcmxfMS4wNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBleHRlbnNpb24gZm9yIGNvbnZlcnRpbmcgUG9kIHRvIG9sZC1zdHlsZSBQb2QiCi1ERVNDUklQVElPTiA9ICJQb2Q6OlBsYWluZXIgdXNlcyBQb2Q6OlBhcnNlciB3aGljaCB0YWtlcyBQb2Qgd2l0aCB0aGUgKG5ldykgJ0M8PCAuLiA+PicgXAotY29uc3RydWN0cyBhbmQgcmV0dXJucyB0aGUgb2xkKGVyKSBzdHlsZSB3aXRoIGp1c3QgJ0M8Pic7ICc8JyBhbmQgJz4nIGFyZSByZXBsYWNlZCBieSBcCi0nRTxsdD4nIGFuZCAnRTxndD4nLiBcCi1cCi1UaGlzIGNhbiBiZSB1c2VkIHRvIHByZS1wcm9jZXNzIFBvZCBiZWZvcmUgdXNpbmcgdG9vbHMgd2hpY2ggZG8gbm90IHJlY29nbmlzZSB0aGUgbmV3IHN0eWxlIFBvZHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvUG9kLVBsYWluZXIvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNzttZDU9MjI3Y2Y4Mzk3MGZjNjEyNjQ4NDU4MjVkOWQyYmY2ZjgiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUi9STS9STUJBUktFUi9Qb2QtUGxhaW5lci0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNTAyZWFjZDFhNDA4OTRiOWRmZWE1NWZjMmNkNWU3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYmJmYmY3ZDFkNDg3MWU1YTgzYmFiMjEzN2UyMmQwODkwNzgyMDY4MTUxOTBlYjFkNWMxMjYwYTM0OTk0NTZmIgotCi1TID0gIiR7V09SS0RJUn0vUG9kLVBsYWluZXItJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWNtLXBhcnNlci1uZWVkcy1saW1pdHMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWNtLXBhcnNlci1uZWVkcy1saW1pdHMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVkYWY0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVjbS1wYXJzZXItbmVlZHMtbGltaXRzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDAwNWFjOWQyZmEwMDA5MTJjOGZiODI1NzAyMGEwNDcxYjFjNjE3NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHdXN0YXZvIFphY2FyaWFzIDxndXN0YXZvQHphY2FyaWFzLmNvbS5hcj4KLURhdGU6IFdlZCwgMjEgRGVjIDIwMTYgMTk6NDY6MzQgLTAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gdWNtOiBwYXJzZXIgbmVlZHMgbGltaXRzLmgKLQotSXQncyB1c2luZyBQQVRIX01BWCB3aGljaCBpcyBkZWZpbmVkIHRoZXJlLCBvdGhlcndpc2UgdGhlIGJ1aWxkIGZhaWxzIG9uCi1tdXNsIGxpYmMuCi0KLVNpZ25lZC1vZmYtYnk6IEd1c3Rhdm8gWmFjYXJpYXMgPGd1c3Rhdm9AemFjYXJpYXMuY29tLmFyPgotU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtleHBlY3RlZCBpbiAxLjEuNF0KLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gc3JjL3VjbS9wYXJzZXIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VjbS9wYXJzZXIuYyBiL3NyYy91Y20vcGFyc2VyLmMKLWluZGV4IGM5ODM3M2E5Li5mNTIwYWJjNSAxMDA2NDQKLS0tLSBhL3NyYy91Y20vcGFyc2VyLmMKLSsrKyBiL3NyYy91Y20vcGFyc2VyLmMKLUBAIC0zMiw2ICszMiw3IEBACi0gCi0gI2luY2x1ZGUgInVjbV9sb2NhbC5oIgotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gLyoqIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb250YWluaW5nIHRoZSBVQ00gZGlyZWN0b3J5ICovCi0gI2RlZmluZSBBTFNBX0NPTkZJR19VQ01fVkFSICJBTFNBX0NPTkZJR19VQ00iCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTFhMDM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI2O21kNT0xMWZmODlhOGE3YTRhNjkwYTVjNzhlZmZlODE1OTU0NSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9DaGVjay1pZi13b3JkZXhwLWZ1bmN0aW9uLWlzLXN1cHBvcnRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVjbS1wYXJzZXItbmVlZHMtbGltaXRzLmgucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImVlZmU1OTkyNTY3YmEwMGQ2MTEwYTU0MDY1N2FhZjVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxMjgyNTAyMTg0YzU5MmMxYTAwOGUyNTZjMjJlZDBiYTU3MjhjYTY1ZTA1MjczY2ViNDgwYzcwZjUxNTk2OWMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1yZXF1aXJlIGFsc2EtZnB1LmluYwotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfYWxzYV9mcHVfc2V0dGluZyhiYiwgZCl9ICIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcHl0aG9uIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLXdpdGgtdmVyc2lvbmVkPW5vICIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGxpYmFzb3VuZCBhbHNhLWNvbmYgYWxzYS1kb2MiCi1GSUxFU19saWJhc291bmQgPSAiJHtsaWJkaXJ9L2xpYmFzb3VuZC5zby4qIgotRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKLQotUkRFUEVORFNfbGliYXNvdW5kID0gImFsc2EtY29uZiIKLQotIyBhbHNhLWxpYiBnZXRzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxzYS1saWItZGV2IGRlcGVuZGVuY2llcywgYnV0IHRoZQotIyBhbHNhLWxpYiBwYWNrYWdlIGRvZXNuJ3QgZXhpc3QuIGxpYmFzb3VuZCBpcyB0aGUgcmVhbCBsaWJyYXJ5IHBhY2thZ2UuCi1SREVQRU5EU18ke1BOfS1kZXYgPSAibGliYXNvdW5kIgotCi0jIHVwZ3JhZGUgcGF0aAotUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLQotUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZGVhZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNC4xLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MTFmZjg5YThhN2E0YTY5MGE1Yzc4ZWZmZTgxNTk1NDUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvbGliLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vQ2hlY2staWYtd29yZGV4cC1mdW5jdGlvbi1pcy1zdXBwb3J0ZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjI5ZmEzZTY5MTIyZDNjZjNlOGYwZTAxYTBjYjFkMTgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxYmI4NzBjMTRkMWM3YzI2OTIxMzI4NWVlZWQ4NzRmYTNkMjgxMTIwNzdkYjA2MWEzYWY4MDEwZDA4ODViNzYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCityZXF1aXJlIGFsc2EtZnB1LmluYworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfYWxzYV9mcHVfc2V0dGluZyhiYiwgZCl9ICIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcHl0aG9uIgorCitQQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgbGliYXNvdW5kIGFsc2EtY29uZiBhbHNhLWRvYyIKK0ZJTEVTX2xpYmFzb3VuZCA9ICIke2xpYmRpcn0vbGliYXNvdW5kLnNvLioiCitGSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgorCitSREVQRU5EU19saWJhc291bmQgPSAiYWxzYS1jb25mIgorCisjIGFsc2EtbGliIGdldHMgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbHNhLWxpYi1kZXYgZGVwZW5kZW5jaWVzLCBidXQgdGhlCisjIGFsc2EtbGliIHBhY2thZ2UgZG9lc24ndCBleGlzdC4gbGliYXNvdW5kIGlzIHRoZSByZWFsIGxpYnJhcnkgcGFja2FnZS4KK1JERVBFTkRTXyR7UE59LWRldiA9ICJsaWJhc291bmQiCisKKyMgdXBncmFkZSBwYXRoCitSUFJPVklERVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUlJFUExBQ0VTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JDT05GTElDVFNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorCitSUFJPVklERVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUlJFUExBQ0VTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKK1JDT05GTElDVFNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjY4NmEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1TVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLSMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCi0jCi0jIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCi0jIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KLSMKLSMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50Ci0jIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKLSMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAotICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCi0iCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2OWY5ZjNlMmRlM2M5N2ZjNzFkNDk2ZTkxZTI3MWZlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWE0ZDFlMDgyYzM2NTI4YTg5NmEyNTgxZTVlYjYyZDRkYzI2ODMyMzhlMzUzMDUwZDBkNjI0ZTY1ZjkwMWYxIgotCi1ERVBFTkRTICs9ICJhbHNhLWxpYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJcCi0gICAgICAgIHNhbXBsZXJhdGUgXAotICAgICAgICBzcGVleGRzcCBcCi0gICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjLGxpYmF2IgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgotUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgotCi0jIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KLSMgYWxsIGJ1aWx0IHBsdWdpbnMuCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKLQotCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLCBzbyBqdXN0IGRyb3AgdGhlIC5leGFtcGxlIHN1ZmZpeC4KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCW12ICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCi0JZmkKLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgcGx1Z2luZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nKQotICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCAnXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCi0gICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQotfQotCi0jIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KLSMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKLSMKLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KLSMKLSMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCi0jIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAotIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCi0jIHRoZSBzeW1saW5rcykuCi0jCi0jIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCi0jIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCi0jIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZjcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgotCi0jIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQotIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgotIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKLSMgUHVsc2VBdWRpbyBwbHVnaW4uCi1GSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2Y3OWI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS40LmJiCkBAIC0wLDAgKzEsMTAzIEBACitTVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKKyMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCisjCisjIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCisjIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KKyMKKyMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50CisjIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKKyMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAorICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAorICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCisiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZTUxMTMwYTc0NDRiNzliMmRkM2MyNWUyODQyMDc1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MzBkMWMzYmRhZWIwNThmMmEwMzYwN2EzM2I5ZTE2ZWU1MzY5YmZkMzBhOTZiYzA5YmQyYzY5YjRkZGQxYThhIgorCitERVBFTkRTICs9ICJhbHNhLWxpYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgICAgIHNhbXBsZXJhdGUgXAorICAgICAgICBzcGVleGRzcCBcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjLGxpYmF2IgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgorUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgorCisjIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KKyMgYWxsIGJ1aWx0IHBsdWdpbnMuCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKKworCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLCBzbyBqdXN0IGRyb3AgdGhlIC5leGFtcGxlIHN1ZmZpeC4KKwlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCW12ICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCisJZmkKK30KKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CisgICAgcGx1Z2luZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nKQorICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCAnXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCisgICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQorfQorCisjIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KKyMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKKyMKKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KKyMKKyMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCisjIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAorIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCisjIHRoZSBzeW1saW5rcykuCisjCisjIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCisjIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCisjIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZjcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgorCisjIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQorIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgorIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKKyMgUHVsc2VBdWRpbyBwbHVnaW4uCitGSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCisiCisKK1JERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzc0YTE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU5NTI2YjA1NWUyNDZiNTU1ODgwOWE1YWUyNWMwYjkiCi1ERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgotCi0jIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KLSMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgotIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKLSMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3Ci0jIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgotUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgotCi1QQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwsdWRldiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJiZjk0ZDNlMzQxMGRjYzc0YmIwZGFlMTBkNDZhOTc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyNzIxN2E1NGVlYTBmOWE0OTcwMGEyZjIzOWEyZDRmNTM4NGFhMDk0ZDY4ZGYwNGE4ZWI4MDEzMmViNjE2N2MiCi0KLSMgT24gYnVpbGQgbWFjaGluZXMgd2l0aCBweXRob24tZG9jdXRpbHMgKG5vdCBweXRob24zLWRvY3V0aWxzICEhKSBpbnN0YWxsZWQKLSMgcnN0Mm1hbiAobm90IHJzdDJtYW4ucHkpIGlzIGRldGVjdGVkIGFuZCBjb21waWxlIGZhaWxzIHdpdGgKLSMgfCBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnYWxzYXVjbS4xJywgbmVlZGVkIGJ5ICdhbGwtYW0nLiAgU3RvcC4KLSMgQXZvaWQgdGhpcyBieSBkaXNhYmxpbmcgZXhwaWNpdGx5Ci1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJzdDJtYW4iCi0KLSMgbGF6eSBoYWNrLiBuZWVkcyBwcm9wZXIgZml4aW5nIGluIGdldHRleHQubTQsIHNlZQotIyBodHRwOi8vYnVncy5vcGVuZW1iZWRkZWQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4Ci0jIHBsZWFzZSBjbG9zZSBidWcgYW5kIHJlbW92ZSB0aGlzIGNvbW1lbnQgd2hlbiBwcm9wZXJseSBmaXhlZAotIwotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1kaXNhYmxlLW5scyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKLQotIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscwotIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgotCi1BTFNBX1VUSUxTX1BLR1MgPSAiXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAotICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgotRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQiCi1GSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCi1GSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKLUZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgotRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKLUZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kICovKi91ZGV2L3J1bGVzLmQgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgotRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20iCi0KLVNVTU1BUllfYWxzYS11dGlscy1hbHNhYmF0ICAgICAgPSAiQ29tbWFuZC1saW5lIHNvdW5kIHRlc3RlciBmb3IgQUxTQSBzb3VuZCBjYXJkIGRyaXZlciIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhdHBsZyAgICAgPSAiQ29udmVydHMgdG9wb2xvZ3kgdGV4dCBmaWxlcyBpbnRvIGJpbmFyeSBmb3JtYXQgZm9yIGtlcm5lbCIKLVNVTU1BUllfYWxzYS11dGlscy1hcGxheSAgICAgICAgPSAiUGxheSAoYW5kIHJlY29yZCkgc291bmQgZmlsZXMgdXNpbmcgQUxTQSIKLVNVTU1BUllfYWxzYS11dGlscy1hbWl4ZXIgICAgICAgPSAiQ29tbWFuZC1saW5lIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FtaXhlciAgICA9ICJuY3Vyc2VzLWJhc2VkIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgotU1VNTUFSWV9hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ICA9ICJBTFNBIHN1cnJvdW5kIHNwZWFrZXIgdGVzdCB1dGlsaXR5IgotU1VNTUFSWV9hbHNhLXV0aWxzLW1pZGkgICAgICAgICA9ICJNaXNjZWxsYW5lb3VzIE1JREkgdXRpbGl0aWVzIGZvciBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFjb25uZWN0ICAgICA9ICJBTFNBIHNlcXVlbmNlciBjb25uZWN0aW9uIG1hbmFnZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgID0gIk5ldHdvcmsgY2xpZW50L3NlcnZlciBmb3IgQUxTQSBzZXF1ZW5jZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgID0gIkFMU0EgdXRpbGl0eSBmb3Igc2V0dGluZy9zaG93aW5nIElFQzk1OCAoUy9QRElGKSBzdGF0dXMgYml0cyIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhY3RsICAgICAgPSAiU2F2ZXMvcmVzdG9yZXMgQUxTQS1zZXR0aW5ncyBpbiAvZXRjL2Fzb3VuZC5zdGF0ZSIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxZHVtcCAgICAgPSAiU2hvd3MgdGhlIGV2ZW50cyByZWNlaXZlZCBhdCBhbiBBTFNBIHNlcXVlbmNlciBwb3J0IgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2Fsb29wICAgICA9ICJBTFNBIFBDTSBsb29wYmFjayB1dGlsaXR5IgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F1Y20gICAgICA9ICJBTFNBIFVzZSBDYXNlIE1hbmFnZXIiCi0KLVJSRUNPTU1FTkRTX2Fsc2EtdXRpbHMtYWxzYWN0bCA9ICJhbHNhLXN0YXRlcyIKLQotQUxMT1dfRU1QVFlfYWxzYS11dGlscyA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIFdlIGRvbid0IHNoaXAgdGhpcyBoZXJlIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBkZXBlbmRlbmN5IG9uIGJhc2guCi0JIyBTZWUgYWxzYS11dGlscy1zY3JpcHRzXyR7UFZ9LmJiCi0Jcm0gJHtEfSR7c2JpbmRpcn0vYWxzYWNvbmYKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhLWluZm8uc2gKLQlybSAtZiAke0R9JHtzYmluZGlyfS9hbHNhYmF0LXRlc3Quc2gKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VkZXYnLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFRoaXMgaXMgd2hlcmUgYWxzYS11dGlscyB3aWxsIGluc3RhbGwgaXRzIHJ1bGVzIGlmIHdlIGRvbid0IHRlbGwgaXQgYW55dGhpbmcgZWxzZS4KLQkJcm0gLXJmICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYKLQkJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0KLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhmNGI4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjQuYmIKQEAgLTAsMCArMSwxMDkgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWxzYWN0bC91dGlscy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlOTUyNmIwNTVlMjQ2YjU1NTg4MDlhNWFlMjVjMGI5IgorREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGxpYnNhbXBsZXJhdGUwIgorCitQQUNLQUdFQ09ORklHID8/PSAidWRldiIKKworIyBhbHNhYmF0IGNhbiBiZSBidWlsdCBhbHNvIHdpdGhvdXQgZmZ0dyBzdXBwb3J0ICh3aXRoIHJlZHVjZWQgZnVuY3Rpb25hbGl0eSkuCisjIEl0IHdvdWxkIGJlIGJldHRlciB0byBhbHdheXMgZW5hYmxlIGFsc2FiYXQsIGJ1dCBwcm92aWRlIGFuIG9wdGlvbiBmb3IKKyMgZW5hYmxpbmcvZGlzYWJsaW5nIGZmdHcuIFRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0LCBob3dldmVyCisjIChhdCBsZWFzdCBpbiBhbnkgb2J2aW91cyB3YXkpLCBzbyBmb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBhbHNhYmF0IHdpdGggZmZ0dworIyBvciBubyBhbHNhYmF0IGF0IGFsbC4KK1BBQ0tBR0VDT05GSUdbYmF0XSA9ICItLWVuYWJsZS1iYXQsLS1kaXNhYmxlLWJhdCxmZnR3ZiIKKworUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldi1ydWxlcy1kaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQsLHVkZXYiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS14bWx0bywgLS1kaXNhYmxlLXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMWUzOTM0Y2E1YmQyMmE4MGMyNzI4OWQxYjBhZGNkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzgzMTA0NGRlOTJjNWJmMzNiZjMzNjVhM2YzNmU0OTM5N2Y0MTkxZTkzNGRmNDYwYWUxY2ExNTEzOGM5ZDlkIgorCisjIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCisjIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCisjIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCisjIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQorRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcworCisjIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCisjIGlwayBkZXBlbmRzIG9uIHRoZW0uCisKK0FMU0FfVVRJTFNfUEtHUyA9ICJcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCisgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCitSREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgorRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCitGSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgPSAiJHtiaW5kaXJ9L2FtaXhlciIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgPSAiJHtiaW5kaXJ9L2Fsc2FtaXhlciIKK0ZJTEVTX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgPSAiJHtiaW5kaXJ9L3NwZWFrZXItdGVzdCAke2RhdGFkaXJ9L3NvdW5kcy9hbHNhLyAke2RhdGFkaXJ9L2Fsc2Evc3BlYWtlci10ZXN0LyIKK0ZJTEVTX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5bWlkaSAke2JpbmRpcn0vYXJlY29yZG1pZGkgJHtiaW5kaXJ9L2FtaWRpIgorRklMRVNfYWxzYS11dGlscy1hY29ubmVjdCAgICA9ICIke2JpbmRpcn0vYWNvbm5lY3QiCitGSUxFU19hbHNhLXV0aWxzLWFzZXFuZXQgICAgID0gIiR7YmluZGlyfS9hc2VxbmV0IgorRklMRVNfYWxzYS11dGlscy1pZWNzZXQgICAgICA9ICIke2JpbmRpcn0vaWVjc2V0IgorRklMRVNfYWxzYS11dGlscy1hbHNhY3RsICAgICA9ICIke3NiaW5kaXJ9L2Fsc2FjdGwgKi91ZGV2L3J1bGVzLmQgKi8qL3VkZXYvcnVsZXMuZCAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCitGSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgorRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSIKKworU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKK1NVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKK1NVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKKworUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgorCitBTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KKwkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAorCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndWRldicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCSMgVGhpcyBpcyB3aGVyZSBhbHNhLXV0aWxzIHdpbGwgaW5zdGFsbCBpdHMgcnVsZXMgaWYgd2UgZG9uJ3QgdGVsbCBpdCBhbnl0aGluZyBlbHNlLgorCQlybSAtcmYgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldgorCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnLzAwMDEtYnVpbGQtZml4LWZvci1taXBzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmODIyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGYzNGM1NjcwNDViZWE1YTdkZWQ5YmNmYThlNzg1Y2ZkMjRjYzdkZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTaGl2cmFqIFBhdGlsIDxzaGl2cmFqLnBhdGlsQGltZ3RlYy5jb20+CitEYXRlOiBUdWUsIDQgQXByIDIwMTcgMTg6NTY6MDEgKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQgZml4IGZvciBtaXBzCisKK1NpZ25lZC1vZmYtYnk6IFNoaXZyYWogUGF0aWwgPHNoaXZyYWoucGF0aWxAaW1ndGVjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJvbmFsZCBTLiBCdWx0amUgPHJzYnVsdGplQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX2luaXRfbWlwcy5jIHwgMyArKy0KKyBsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKK2luZGV4IDMzMWNmYWMxMTUuLmU5ODc2OThkNjYgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKKysrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYworQEAgLTE4LDcgKzE4LDggQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCistI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgorKyNpbmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKyAjaW5jbHVkZSAibGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21pcHMuaCIKKyAKKyAjaWYgSEFWRV9NU0EKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKK2luZGV4IDZhM2IyODE1ZmQuLjk2M2M2NGM4NjEgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKKysrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYworQEAgLTE4LDcgKzE4LDcgQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCistI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgorKyNpbmNsdWRlICJsaWJhdmNvZGVjL2hldmNkZWMuaCIKKyAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvZ2VuZXJpY19tYWNyb3NfbXNhLmgiCisgI2luY2x1ZGUgImhldmNwcmVkX21pcHMuaCIKKyAKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiYWExOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU0LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMTI0ZWIyMDJlNzA2Nzg1Mzk1NDRmNjI2OGVmYzk4MTMxZjE5ZmE0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQorID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNToyOCArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9ybWRlYzogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKKworRml4ZXM6IGxvb3AuaXZyCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MDU0CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L3JtZGVjLmMgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcm1kZWMuYyBiL2xpYmF2Zm9ybWF0L3JtZGVjLmMKK2luZGV4IDE3OGVhZWEuLmQ2ZDdkOWMgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9ybWRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9ybWRlYy5jCitAQCAtMTIyMyw4ICsxMjIzLDExIEBAIHN0YXRpYyBpbnQgaXZyX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKKyAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJXMgPSAnJXMnXG4iLCBrZXksIHZhbCk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gNCkgeworICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICIlcyA9ICcweCIsIGtleSk7CistICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKQorKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsZW47IGorKykgeworKyAgICAgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJVgiLCBhdmlvX3I4KHBiKSk7CisrICAgICAgICAgICAgfQorICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICInXG4iKTsKKyAgICAgICAgIH0gZWxzZSBpZiAobGVuID09IDQgJiYgdHlwZSA9PSAzICYmICFzdHJuY21wKGtleSwgIlN0cmVhbUNvdW50IiwgdGxlbikpIHsKKyAgICAgICAgICAgICBuYl9zdHJlYW1zID0gdmFsdWUgPSBhdmlvX3JiMzIocGIpOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZDBkMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDRmMDVlMmUyZGMxYTg5ZjM4Y2Q5ZjA5NjBhNjU2MTA4M2Q3MTRmMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNTozMCArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9tdmRlYzogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKKworRml4ZXM6IGxvb3AubXYKKworRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTUKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvbXZkZWMuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tdmRlYy5jIGIvbGliYXZmb3JtYXQvbXZkZWMuYworaW5kZXggMGUxMmM4Yy4uZjdhYTRjYiAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L212ZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L212ZGVjLmMKK0BAIC0zNDIsNiArMzQyLDggQEAgc3RhdGljIGludCBtdl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKmF2Y3R4KQorICAgICAgICAgICAgIHVpbnQzMl90IHBvcyAgID0gYXZpb19yYjMyKHBiKTsKKyAgICAgICAgICAgICB1aW50MzJfdCBhc2l6ZSA9IGF2aW9fcmIzMihwYik7CisgICAgICAgICAgICAgdWludDMyX3QgdnNpemUgPSBhdmlvX3JiMzIocGIpOworKyAgICAgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAgICBhdmlvX3NraXAocGIsIDgpOworICAgICAgICAgICAgIGF2X2FkZF9pbmRleF9lbnRyeShhc3QsIHBvcywgdGltZXN0YW1wLCBhc2l6ZSwgMCwgQVZJTkRFWF9LRVlGUkFNRSk7CisgICAgICAgICAgICAgYXZfYWRkX2luZGV4X2VudHJ5KHZzdCwgcG9zICsgYXNpemUsIGksIHZzaXplLCAwLCBBVklOREVYX0tFWUZSQU1FKTsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODhiMzU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTYucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSA5NmYyNGQxYmVlN2ZlN2JhYzA4ZTJiN2M3NGRiMWEwNDZjOWRjMGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89CisgPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjI5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L3JsMjogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKKworRml4ZXM6IGxvb3AucmwyCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MDU2CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L3JsMi5jIHwgMTUgKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ybDIuYyBiL2xpYmF2Zm9ybWF0L3JsMi5jCitpbmRleCAwYmVjOGYxLi5lYjE2ODJkIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvcmwyLmMKKysrKyBiL2xpYmF2Zm9ybWF0L3JsMi5jCitAQCAtMTcwLDEyICsxNzAsMjEgQEAgc3RhdGljIGF2X2NvbGQgaW50IHJsMl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCisgICAgIH0KKyAKKyAgICAgLyoqIHJlYWQgb2Zmc2V0IGFuZCBzaXplIHRhYmxlcyAqLworLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQorKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7CisrICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgIGNodW5rX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpOworLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQorKyAgICB9CisrICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKKysgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgY2h1bmtfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKTsKKy0gICAgZm9yKGk9MDsgaSA8IGZyYW1lX2NvdW50O2krKykKKysgICAgfQorKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7CisrICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgIGF1ZGlvX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpICYgMHhGRkZGOworKyAgICB9CisgCisgICAgIC8qKiBidWlsZCB0aGUgc2FtcGxlIGluZGV4ICovCisgICAgIGZvcihpPTA7aTxmcmFtZV9jb3VudDtpKyspeworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzMDFkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ny5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDdmOWVjNTU5M2UwNDgyNzI0OWU3YWViNDY2ZGEwNmE5OGEwZDczMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTIwYW5kPTIwPUU1PUJDPUEwPUU2PUI0PUFBPUU0PUJBPUFFPTI4Pz0KKyA9P1VURi04P3E/PUU2PTlDPTlCPUU1PTg4PTlEPTI5Pz0gPHRvbnkuc2ggYW5kIHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KK0RhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTI6Mzc6MjUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvYXNmZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjaworCitGaXhlczogbG9vcC5hc2YKKworRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTcKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvYXNmZGVjX2YuYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCitpbmRleCBiZTA5YTkyLi5mM2FjYmFlIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYworKysrIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYworQEAgLTc0OSwxMyArNzQ5LDE1IEBAIHN0YXRpYyBpbnQgYXNmX3JlYWRfbWFya2VyKEFWRm9ybWF0Q29udGV4dCAqcywgaW50NjRfdCBzaXplKQorICAgICBjb3VudCA9IGF2aW9fcmwzMihwYik7ICAgIC8vIG1hcmtlcnMgY291bnQKKyAgICAgYXZpb19ybDE2KHBiKTsgICAgICAgICAgICAvLyByZXNlcnZlZCAyIGJ5dGVzCisgICAgIG5hbWVfbGVuID0gYXZpb19ybDE2KHBiKTsgLy8gbmFtZSBsZW5ndGgKKy0gICAgZm9yIChpID0gMDsgaSA8IG5hbWVfbGVuOyBpKyspCistICAgICAgICBhdmlvX3I4KHBiKTsgLy8gc2tpcCB0aGUgbmFtZQorKyAgICBhdmlvX3NraXAocGIsIG5hbWVfbGVuKTsKKyAKKyAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgIGludDY0X3QgcHJlc190aW1lOworICAgICAgICAgaW50IG5hbWVfbGVuOworIAorKyAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisrCisgICAgICAgICBhdmlvX3JsNjQocGIpOyAgICAgICAgICAgICAvLyBvZmZzZXQsIDggYnl0ZXMKKyAgICAgICAgIHByZXNfdGltZSA9IGF2aW9fcmw2NChwYik7IC8vIHByZXNlbnRhdGlvbiB0aW1lCisgICAgICAgICBwcmVzX3RpbWUgLT0gYXNmLT5oZHIucHJlcm9sbCAqIDEwMDAwOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ODAzY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaApAQCAtMCwwICsxLDk0IEBACitGcm9tIDdlYzQxNDg5MmRkY2FkODgzMTM4NDg0OTRiNmZjNWY0MzdjOWNhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorRGF0ZTogU2F0LCAyNiBBdWcgMjAxNyAwMToyNjo1OCArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9obHM6IEZpeCBEb1MgZHVlIHRvIGluZmluaXRlIGxvb3AKKworRml4ZXM6IGxvb3AubTN1CisKK1RoZSBkZWZhdWx0IG1heCBpdGVyYXRpb24gY291bnQgb2YgMTAwMCBpcyBhcmJpdHJhcnkgYW5kIGlkZWFzIGZvciBhIGJldHRlciBzb2x1dGlvbiBhcmUgd2VsY29tZQorCitGb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQorCitQcmV2aW91cyB2ZXJzaW9uIHJldmlld2VkLWJ5OiBTdGV2ZW4gTGl1IDxsaW5naml1amlhbmtlQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTgKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgZG9jL2RlbXV4ZXJzLnRleGkgfCAxOCArKysrKysrKysrKysrKysrKysKKyBsaWJhdmZvcm1hdC9obHMuYyB8ICA3ICsrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2RvYy9kZW11eGVycy50ZXhpIGIvZG9jL2RlbXV4ZXJzLnRleGkKK2luZGV4IDI5YTIzZDQuLjczZGMwZmUgMTAwNjQ0CistLS0gYS9kb2MvZGVtdXhlcnMudGV4aQorKysrIGIvZG9jL2RlbXV4ZXJzLnRleGkKK0BAIC0zMDAsNiArMzAwLDI0IEBAIHVzZWQgdG8gZW5kIHRoZSBvdXRwdXQgdmlkZW8gYXQgdGhlIGxlbmd0aCBvZiB0aGUgc2hvcnRlc3QgaW5wdXQgZmlsZSwKKyB3aGljaCBpbiB0aGlzIGNhc2UgaXMgQGZpbGV7aW5wdXQubXA0fSBhcyB0aGUgR0lGIGluIHRoaXMgZXhhbXBsZSBsb29wcworIGluZmluaXRlbHkuCisgCisrQHNlY3Rpb24gaGxzCisrCisrSExTIGRlbXV4ZXIKKysKKytJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKKysKKytAdGFibGUgQG9wdGlvbgorK0BpdGVtIGxpdmVfc3RhcnRfaW5kZXgKKytzZWdtZW50IGluZGV4IHRvIHN0YXJ0IGxpdmUgc3RyZWFtcyBhdCAobmVnYXRpdmUgdmFsdWVzIGFyZSBmcm9tIHRoZSBlbmQpLgorKworK0BpdGVtIGFsbG93ZWRfZXh0ZW5zaW9ucworKycsJyBzZXBhcmF0ZWQgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgdGhhdCBobHMgaXMgYWxsb3dlZCB0byBhY2Nlc3MuCisrCisrQGl0ZW0gbWF4X3JlbG9hZAorK01heGltdW0gbnVtYmVyIG9mIHRpbWVzIGEgaW5zdWZmaWNpZW50IGxpc3QgaXMgYXR0ZW1wdGVkIHRvIGJlIHJlbG9hZGVkLgorK0RlZmF1bHQgdmFsdWUgaXMgMTAwMC4KKytAZW5kIHRhYmxlCisrCisgQHNlY3Rpb24gaW1hZ2UyCisgCisgSW1hZ2UgZmlsZSBkZW11eGVyLgorZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2hscy5jIGIvbGliYXZmb3JtYXQvaGxzLmMKK2luZGV4IDAxNzMxYmQuLjA5OTUzNDUgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9obHMuYworKysrIGIvbGliYXZmb3JtYXQvaGxzLmMKK0BAIC0yMDUsNiArMjA1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSExTQ29udGV4dCB7CisgICAgIEFWRGljdGlvbmFyeSAqYXZpb19vcHRzOworICAgICBpbnQgc3RyaWN0X3N0ZF9jb21wbGlhbmNlOworICAgICBjaGFyICphbGxvd2VkX2V4dGVuc2lvbnM7CisrICAgIGludCBtYXhfcmVsb2FkOworIH0gSExTQ29udGV4dDsKKyAKKyBzdGF0aWMgaW50IHJlYWRfY2hvbXBfbGluZShBVklPQ29udGV4dCAqcywgY2hhciAqYnVmLCBpbnQgbWF4bGVuKQorQEAgLTEyNjMsNiArMTI2NCw3IEBAIHN0YXRpYyBpbnQgcmVhZF9kYXRhKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUpCisgICAgIEhMU0NvbnRleHQgKmMgPSB2LT5wYXJlbnQtPnByaXZfZGF0YTsKKyAgICAgaW50IHJldCwgaTsKKyAgICAgaW50IGp1c3Rfb3BlbmVkID0gMDsKKysgICAgaW50IHJlbG9hZF9jb3VudCA9IDA7CisgCisgcmVzdGFydDoKKyAgICAgaWYgKCF2LT5uZWVkZWQpCitAQCAtMTI5NCw2ICsxMjk2LDkgQEAgcmVzdGFydDoKKyAgICAgICAgIHJlbG9hZF9pbnRlcnZhbCA9IGRlZmF1bHRfcmVsb2FkX2ludGVydmFsKHYpOworIAorIHJlbG9hZDoKKysgICAgICAgIHJlbG9hZF9jb3VudCsrOworKyAgICAgICAgaWYgKHJlbG9hZF9jb3VudCA+IGMtPm1heF9yZWxvYWQpCisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRU9GOworICAgICAgICAgaWYgKCF2LT5maW5pc2hlZCAmJgorICAgICAgICAgICAgIGF2X2dldHRpbWVfcmVsYXRpdmUoKSAtIHYtPmxhc3RfbG9hZF90aW1lID49IHJlbG9hZF9pbnRlcnZhbCkgeworICAgICAgICAgICAgIGlmICgocmV0ID0gcGFyc2VfcGxheWxpc3QoYywgdi0+dXJsLCB2LCBOVUxMKSkgPCAwKSB7CitAQCAtMjE1MCw2ICsyMTU1LDggQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIGhsc19vcHRpb25zW10gPSB7CisgICAgICAgICBPRkZTRVQoYWxsb3dlZF9leHRlbnNpb25zKSwgQVZfT1BUX1RZUEVfU1RSSU5HLAorICAgICAgICAgey5zdHIgPSAiM2dwLGFhYyxhdmksZmxhYyxta3YsbTN1OCxtNGEsbTRzLG00dixtcGcsbW92LG1wMixtcDMsbXA0LG1wZWcsbXBlZ3RzLG9nZyxvZ3Ysb2dhLHRzLHZvYix3YXYifSwKKyAgICAgICAgIElOVF9NSU4sIElOVF9NQVgsIEZMQUdTfSwKKysgICAgeyJtYXhfcmVsb2FkIiwgIk1heGltdW0gbnVtYmVyIG9mIHRpbWVzIGEgaW5zdWZmaWNpZW50IGxpc3QgaXMgYXR0ZW1wdGVkIHRvIGJlIHJlbG9hZGVkIiwKKysgICAgICAgIE9GRlNFVChtYXhfcmVsb2FkKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2NCA9IDEwMDB9LCAwLCBJTlRfTUFYLCBGTEFHU30sCisgICAgIHtOVUxMfQorIH07CisgCistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmZGUwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU5LnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gN2U4MGI2M2VjZDI1OWQ2OWQzODM2MjNlNzViMzE4YmYyYmQ0OTFmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQorID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNToyNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9jaW5lZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjaworCitGaXhlczogbG9vcC5jaW5lCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MDU5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L2NpbmVkZWMuYyB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvY2luZWRlYy5jIGIvbGliYXZmb3JtYXQvY2luZWRlYy5jCitpbmRleCA3NjNiOTNiLi5kZTM0ZmI5IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvY2luZWRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9jaW5lZGVjLmMKK0BAIC0yNjcsOCArMjY3LDEyIEBAIHN0YXRpYyBpbnQgY2luZV9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKmF2Y3R4KQorIAorICAgICAvKiBwYXJzZSBpbWFnZSBvZmZzZXRzICovCisgICAgIGF2aW9fc2VlayhwYiwgb2ZmSW1hZ2VPZmZzZXRzLCBTRUVLX1NFVCk7CistICAgIGZvciAoaSA9IDA7IGkgPCBzdC0+ZHVyYXRpb247IGkrKykKKysgICAgZm9yIChpID0gMDsgaSA8IHN0LT5kdXJhdGlvbjsgaSsrKSB7CisrICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKysKKyAgICAgICAgIGF2X2FkZF9pbmRleF9lbnRyeShzdCwgYXZpb19ybDY0KHBiKSwgaSwgMCwgMCwgQVZJTkRFWF9LRVlGUkFNRSk7CisrICAgIH0KKyAKKyAgICAgcmV0dXJuIDA7CisgfQorLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMjg0ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE2OS5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDlkMDBmYjlkNzBlZThjMGNjNzAwMmI4OTMxOGM1YmUwMGYxYmJkYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTI4PUU2PTk5PTkzPUU5PUJCPTkxPTI5Pz0KKyA8dG9ueS5zaEBhbGliYWJhLWluYy5jb20+CitEYXRlOiBUdWUsIDI5IEF1ZyAyMDE3IDIzOjU5OjIxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L214ZmRlYzogRml4IFNpZ24gZXJyb3IgaW4gbXhmX3JlYWRfcHJpbWVyX3BhY2soKQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitGaXhlczogMjAxNzA4MjlCLm14ZgorCitDby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQxNjkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvbXhmZGVjLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9teGZkZWMuYyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCitpbmRleCA2YWRiNzdkLi45MTczMWE3IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvbXhmZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCitAQCAtNTAwLDcgKzUwMCw3IEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfcHJpbWVyX3BhY2sodm9pZCAqYXJnLCBBVklPQ29udGV4dCAqcGIsIGludCB0YWcsIGludCBzaXplLCBVCisgICAgICAgICBhdnByaXZfcmVxdWVzdF9zYW1wbGUocGIsICJQcmltZXIgcGFjayBpdGVtIGxlbmd0aCAlZCIsIGl0ZW1fbGVuKTsKKyAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsKKyAgICAgfQorLSAgICBpZiAoaXRlbV9udW0gPiA2NTUzNikgeworKyAgICBpZiAoaXRlbV9udW0gPiA2NTUzNiB8fCBpdGVtX251bSA8IDApIHsKKyAgICAgICAgIGF2X2xvZyhteGYtPmZjLCBBVl9MT0dfRVJST1IsICJpdGVtX251bSAlZCBpcyB0b28gbGFyZ2VcbiIsIGl0ZW1fbnVtKTsKKyAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICB9CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2MDEyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gOTAwZjM5NjkyY2EwMzM3YTk4YTdjZjA0N2U0ZTI2MTEwNzE4MTBjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9Mjg9RTY9OTk9OTM9RTk9QkI9OTE9Mjk/PQorIDx0b255LnNoQGFsaWJhYmEtaW5jLmNvbT4KK0RhdGU6IFR1ZSwgMjkgQXVnIDIwMTcgMjM6NTk6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbXhmZGVjOiBGaXggRG9TIGlzc3VlcyBpbgorIG14Zl9yZWFkX2luZGV4X2VudHJ5X2FycmF5KCkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworRml4ZXM6IDIwMTcwODI5QS5teGYKKworQ28tQXV0aG9yOiDlvKDmtKrkuq4o5pyb5YidKSIgPHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MTcwCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L214ZmRlYy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmZGVjLmMgYi9saWJhdmZvcm1hdC9teGZkZWMuYworaW5kZXggZjhkMGY5ZS4uNmFkYjc3ZCAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9teGZkZWMuYworQEAgLTg5OSw2ICs4OTksOCBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX2luZGV4X2VudHJ5X2FycmF5KEFWSU9Db250ZXh0ICpwYiwgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZworICAgICBzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzID0gYXZpb19yYjMyKHBiKTsKKyAKKyAgICAgbGVuZ3RoID0gYXZpb19yYjMyKHBiKTsKKysgICAgaWYoc2VnbWVudC0+bmJfaW5kZXhfZW50cmllcyAmJiBsZW5ndGggPCAxMSkKKysgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworIAorICAgICBpZiAoIShzZWdtZW50LT50ZW1wb3JhbF9vZmZzZXRfZW50cmllcz1hdl9jYWxsb2Moc2VnbWVudC0+bmJfaW5kZXhfZW50cmllcywgc2l6ZW9mKCpzZWdtZW50LT50ZW1wb3JhbF9vZmZzZXRfZW50cmllcykpKSB8fAorICAgICAgICAgIShzZWdtZW50LT5mbGFnX2VudHJpZXMgICAgICAgICAgPSBhdl9jYWxsb2Moc2VnbWVudC0+bmJfaW5kZXhfZW50cmllcywgc2l6ZW9mKCpzZWdtZW50LT5mbGFnX2VudHJpZXMpKSkgfHwKK0BAIC05MDksNiArOTExLDggQEAgc3RhdGljIGludCBteGZfcmVhZF9pbmRleF9lbnRyeV9hcnJheShBVklPQ29udGV4dCAqcGIsIE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWcKKyAgICAgfQorIAorICAgICBmb3IgKGkgPSAwOyBpIDwgc2VnbWVudC0+bmJfaW5kZXhfZW50cmllczsgaSsrKSB7CisrICAgICAgICBpZihhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgc2VnbWVudC0+dGVtcG9yYWxfb2Zmc2V0X2VudHJpZXNbaV0gPSBhdmlvX3I4KHBiKTsKKyAgICAgICAgIGF2aW9fcjgocGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBLZXlGcmFtZU9mZnNldCAqLworICAgICAgICAgc2VnbWVudC0+ZmxhZ19lbnRyaWVzW2ldID0gYXZpb19yOChwYik7CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhZTIwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcxLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gYzI0YmNiNTUzNjUwYjkxZTllZmYxNWVmNmU1NGNhNzNkZTI0NTNiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9Mjg9RTY9OTk9OTM9RTk9QkI9OTE9Mjk/PQorIDx0b255LnNoQGFsaWJhYmEtaW5jLmNvbT4KK0RhdGU6IFR1ZSwgMjkgQXVnIDIwMTcgMjM6NTk6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbnN2ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjayBpbgorIG5zdnNfZmlsZV9vZmZzZXQgbG9vcC4KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworRml4ZXM6IDIwMTcwODI5Lm5zdgorCitDby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQxNzEKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvbnN2ZGVjLmMgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbnN2ZGVjLmMgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYworaW5kZXggYzZkZGI2Ny4uZDhjZTY1NiAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L25zdmRlYy5jCisrKysgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYworQEAgLTMzNSw4ICszMzUsMTEgQEAgc3RhdGljIGludCBuc3ZfcGFyc2VfTlNWZl9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQorICAgICAgICAgaWYgKCFuc3YtPm5zdnNfZmlsZV9vZmZzZXQpCisgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAKKy0gICAgICAgIGZvcihpPTA7aTx0YWJsZV9lbnRyaWVzX3VzZWQ7aSsrKQorKyAgICAgICAgZm9yKGk9MDtpPHRhYmxlX2VudHJpZXNfdXNlZDtpKyspIHsKKysgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICAgbnN2LT5uc3ZzX2ZpbGVfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKSArIHNpemU7CisrICAgICAgICB9CisgCisgICAgICAgICBpZih0YWJsZV9lbnRyaWVzID4gdGFibGVfZW50cmllc191c2VkICYmCisgICAgICAgICAgICBhdmlvX3JsMzIocGIpID09IE1LVEFHKCdUJywnTycsJ0MnLCcyJykpIHsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTAyMDM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjIucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA5Y2I0ZWI3NzI4MzljNWUxZGUyODU1ZDEyNmJmNzRmZjE2ZDEzMzgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KK0RhdGU6IFR1ZSwgNSBTZXAgMjAxNyAwMDoxNjoyOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9tb3Y6IEZpeCBEb1MgaW4gcmVhZF90ZnJhKCkKKworRml4ZXM6IE1pc3NpbmcgRU9GIGNoZWNrIGluIGxvb3AKK05vIHRlc3RjYXNlCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MjIyCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L21vdi5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbW92LmMgYi9saWJhdmZvcm1hdC9tb3YuYworaW5kZXggOTk0ZTljNi4uMjUxOTcwNyAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L21vdi5jCisrKysgYi9saWJhdmZvcm1hdC9tb3YuYworQEAgLTYwOTQsNiArNjA5NCwxMyBAQCBzdGF0aWMgaW50IHJlYWRfdGZyYShNT1ZDb250ZXh0ICptb3YsIEFWSU9Db250ZXh0ICpmKQorICAgICB9CisgICAgIGZvciAoaSA9IDA7IGkgPCBpbmRleC0+aXRlbV9jb3VudDsgaSsrKSB7CisgICAgICAgICBpbnQ2NF90IHRpbWUsIG9mZnNldDsKKysKKysgICAgICAgIGlmIChhdmlvX2Zlb2YoZikpIHsKKysgICAgICAgICAgICBpbmRleC0+aXRlbV9jb3VudCA9IDA7CisrICAgICAgICAgICAgYXZfZnJlZXAoJmluZGV4LT5pdGVtcyk7CisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisrICAgICAgICB9CisrCisgICAgICAgICBpZiAodmVyc2lvbiA9PSAxKSB7CisgICAgICAgICAgICAgdGltZSAgID0gYXZpb19yYjY0KGYpOworICAgICAgICAgICAgIG9mZnNldCA9IGF2aW9fcmI2NChmKTsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWZlZjZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBhZmM5YzY4M2VkOWRiMDFlZGIzNTdiYzhjMTllZGFkNDI4MmIzYTk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KK0RhdGU6IFR1ZSwgNSBTZXAgMjAxNyAwMDoxNjoyOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9hc2ZkZWM6IEZpeCBEb1MgaW4gYXNmX2J1aWxkX3NpbXBsZV9pbmRleCgpCisKK0ZpeGVzOiBNaXNzaW5nIEVPRiBjaGVjayBpbiBsb29wCitObyB0ZXN0Y2FzZQorCitGb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KKworQ1ZFOiBDVkUtMjAxNy0xNDIyMworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJhdmZvcm1hdC9hc2ZkZWNfZi5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCitpbmRleCBmM2FjYmFlLi5jYzY0OGI5IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYworKysrIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYworQEAgLTE2MTAsNiArMTYxMCwxMSBAQCBzdGF0aWMgaW50IGFzZl9idWlsZF9zaW1wbGVfaW5kZXgoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgc3RyZWFtX2luZGV4KQorICAgICAgICAgICAgIGludDY0X3QgcG9zICAgICAgID0gcy0+aW50ZXJuYWwtPmRhdGFfb2Zmc2V0ICsgcy0+cGFja2V0X3NpemUgKiAoaW50NjRfdClwa3RudW07CisgICAgICAgICAgICAgaW50NjRfdCBpbmRleF9wdHMgPSBGRk1BWChhdl9yZXNjYWxlKGl0aW1lLCBpLCAxMDAwMCkgLSBhc2YtPmhkci5wcmVyb2xsLCAwKTsKKyAKKysgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHMtPnBiKSkgeworKyAgICAgICAgICAgICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOworKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgICAgICB9CisrCisgICAgICAgICAgICAgaWYgKHBvcyAhPSBsYXN0X3BvcykgeworICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAicGt0bnVtOiVkLCBwa3RjdDolZCAgcHRzOiAlIlBSSWQ2NCJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBwa3RudW0sIHBrdGN0LCBpbmRleF9wdHMpOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjI1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNjg0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyNS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitTdWJqZWN0OiBbUEFUQ0hdIGZmcHJvYmU6IEZpeCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aCBjb2xvciBwcmltYXJpZXMKKworRm91bmQtYnk6IEFELWxhYiBvZiB2ZW51c3RlY2gKK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQyMjUKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgZmZwcm9iZS5jIHwgMTUgKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9mZnByb2JlLmMgYi9mZnByb2JlLmMKK2luZGV4IGEyMTlmYzEuLmRmMjJiMzAgMTAwNjQ0CistLS0gYS9mZnByb2JlLmMKKysrKyBiL2ZmcHJvYmUuYworQEAgLTE4OTksNiArMTg5OSwxNiBAQCBzdGF0aWMgdm9pZCBwcmludF9wa3Rfc2lkZV9kYXRhKFdyaXRlckNvbnRleHQgKncsCisgICAgIHdyaXRlcl9wcmludF9zZWN0aW9uX2Zvb3Rlcih3KTsKKyB9CisgCisrc3RhdGljIHZvaWQgcHJpbnRfcHJpbWFyaWVzKFdyaXRlckNvbnRleHQgKncsIGVudW0gQVZDb2xvclByaW1hcmllcyBjb2xvcl9wcmltYXJpZXMpCisreworKyAgICBjb25zdCBjaGFyICp2YWwgPSBhdl9jb2xvcl9wcmltYXJpZXNfbmFtZShjb2xvcl9wcmltYXJpZXMpOworKyAgICBpZiAoIXZhbCB8fCBjb2xvcl9wcmltYXJpZXMgPT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEKSB7CisrCXByaW50X3N0cl9vcHQoImNvbG9yX3ByaW1hcmllcyIsICJ1bmtub3duIik7CisrICAgIH0gZWxzZSB7CisrCXByaW50X3N0cigiY29sb3JfcHJpbWFyaWVzIiwgdmFsKTsKKysgICAgfQorK30KKysKKyBzdGF0aWMgdm9pZCBjbGVhcl9sb2coaW50IG5lZWRfbG9jaykKKyB7CisgICAgIGludCBpOworQEAgLTI0MjAsMTAgKzI0MzAsNyBAQCBzdGF0aWMgaW50IHNob3dfc3RyZWFtKFdyaXRlckNvbnRleHQgKncsIEFWRm9ybWF0Q29udGV4dCAqZm10X2N0eCwgaW50IHN0cmVhbV9pZAorICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHByaW50X3N0cl9vcHQoImNvbG9yX3RyYW5zZmVyIiwgYXZfY29sb3JfdHJhbnNmZXJfbmFtZShwYXItPmNvbG9yX3RyYykpOworIAorLSAgICAgICAgaWYgKHBhci0+Y29sb3JfcHJpbWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCkKKy0gICAgICAgICAgICBwcmludF9zdHIoImNvbG9yX3ByaW1hcmllcyIsIGF2X2NvbG9yX3ByaW1hcmllc19uYW1lKHBhci0+Y29sb3JfcHJpbWFyaWVzKSk7CistICAgICAgICBlbHNlCistICAgICAgICAgICAgcHJpbnRfc3RyX29wdCgiY29sb3JfcHJpbWFyaWVzIiwgYXZfY29sb3JfcHJpbWFyaWVzX25hbWUocGFyLT5jb2xvcl9wcmltYXJpZXMpKTsKKysgICAgICAgIHByaW50X3ByaW1hcmllcyh3LCBwYXItPmNvbG9yX3ByaW1hcmllcyk7CisgCisgICAgICAgICBpZiAocGFyLT5jaHJvbWFfbG9jYXRpb24gIT0gQVZDSFJPTUFfTE9DX1VOU1BFQ0lGSUVEKQorICAgICAgICAgICAgIHByaW50X3N0cigiY2hyb21hX2xvY2F0aW9uIiwgYXZfY2hyb21hX2xvY2F0aW9uX25hbWUocGFyLT5jaHJvbWFfbG9jYXRpb24pKTsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIxNmY4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi1TVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCi1ERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAotICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKLSAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjM5ZmQ3MTAyNGFjNzZiYTM1ZjA0Mzk3MDIxYWY1NjA2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlMzhmZjE0ZjA4MGM5OGI1OGNmNTk2NzU3MzUwMWI4Y2I1ODZlM2ExNzNiNTkxZjM4MDdkOGYwNjYwZGFmN2EiCi0KLSMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKLSMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQotUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCi0KLURFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgeWFzbS1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAotICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEgeHYnLCAnJywgZCl9IgotCi0jIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKLVBBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKLVBBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKLVBBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKLVBBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKLVBBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKLVBBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKLVBBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKLVBBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKLQotIyBmZWF0dXJlcyB0byBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2dwbF0gPSAiLS1lbmFibGUtZ3BsLC0tZGlzYWJsZS1ncGwiCi1QQUNLQUdFQ09ORklHW2dzbV0gPSAiLS1lbmFibGUtbGliZ3NtLC0tZGlzYWJsZS1saWJnc20sbGliZ3NtIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1pbmRldj1qYWNrLC0tZGlzYWJsZS1pbmRldj1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2xpYnZvcmJpc10gPSAiLS1lbmFibGUtbGlidm9yYmlzLC0tZGlzYWJsZS1saWJ2b3JiaXMsbGlidm9yYmlzIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6IgotUEFDS0FHRUNPTkZJR1ttcDNsYW1lXSA9ICItLWVuYWJsZS1saWJtcDNsYW1lLC0tZGlzYWJsZS1saWJtcDNsYW1lLGxhbWUiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2Nocm9lZGluZ2VyXSA9ICItLWVuYWJsZS1saWJzY2hyb2VkaW5nZXIsLS1kaXNhYmxlLWxpYnNjaHJvZWRpbmdlcixzY2hyb2VkaW5nZXIiCi1QQUNLQUdFQ09ORklHW3NwZWV4XSA9ICItLWVuYWJsZS1saWJzcGVleCwtLWRpc2FibGUtbGlic3BlZXgsc3BlZXgiCi1QQUNLQUdFQ09ORklHW3RoZW9yYV0gPSAiLS1lbmFibGUtbGlidGhlb3JhLC0tZGlzYWJsZS1saWJ0aGVvcmEsbGlidGhlb3JhIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTFncmFiLC0tZGlzYWJsZS14MTFncmFiLHZpcnR1YWwvbGlieDExIGxpYnhmaXhlcyBsaWJ4ZXh0IHhwcm90byB2aXJ0dWFsL2xpYnNkbCIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgotUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCi0KLSMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCi1VU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotZGVmIGNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KLSAgICByZXR1cm4gJ2dlbmVyaWMnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAotICAgIC0tZW5hYmxlLXBpYyBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCi0gICAgXAotICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAotICAgIFwKLSAgICAtLWxkPSIke0NDTER9IiBcCi0gICAgLS1jYz0iJHtDQ30iIFwKLSAgICAtLWN4eD0iJHtDWFh9IiBcCi0gICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKLSAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKLSAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKLSAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAotICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKLSAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAotICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAotICAgICR7RVhUUkFfRkZDT05GfSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCi0gICAgLS1jcHU9JHtAY3B1KGQpfSBcCi0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKLSAgICAgICAgICAgICBsaWJhdmRldmljZSBcCi0gICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAotICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKLSAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJhdnV0aWwgXAotICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKLSAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJzd3NjYWxlIgotCi1GSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgotRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgotRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgotRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgotRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgotRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgotRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCi0KLSMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZWJlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYgpAQCAtMCwwICsxLDE2NSBAQAorU1VNTUFSWSA9ICJBIGNvbXBsZXRlLCBjcm9zcy1wbGF0Zm9ybSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVhbSBhdWRpbyBhbmQgdmlkZW8uIgorREVTQ1JJUFRJT04gPSAiRkZtcGVnIGlzIHRoZSBsZWFkaW5nIG11bHRpbWVkaWEgZnJhbWV3b3JrLCBhYmxlIHRvIGRlY29kZSwgZW5jb2RlLCB0cmFuc2NvZGUsIFwKKyAgICAgICAgICAgICAgIG11eCwgZGVtdXgsIHN0cmVhbSwgZmlsdGVyIGFuZCBwbGF5IHByZXR0eSBtdWNoIGFueXRoaW5nIHRoYXQgaHVtYW5zIGFuZCBtYWNoaW5lcyBcCisgICAgICAgICAgICAgICBoYXZlIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIHRoZSBtb3N0IG9ic2N1cmUgYW5jaWVudCBmb3JtYXRzIHVwIHRvIHRoZSBjdXR0aW5nIGVkZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErICYgTUlUIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmF2Y29kZWMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZGV2aWNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZpbHRlciA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmb3JtYXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2dXRpbCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlicG9zdHByb2MgPSAiR1BMdjIrIgorTElDRU5TRV9saWJzd3Jlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJzd3NjYWxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQwNTkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNjkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNzAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNzEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQyMjIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQyMjMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQyMjUucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NDNkYzY2ZWJlNjcxODAyODNiOTJkMDI5ZjY5MGQwZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMmE5MDAyY2RjNmI1MzNiNTk3Mjg4MjcxODZjMDQ0YWQwMmJhNjQ4NDFmMWI3Y2Q2YzIxNzc5ODc1NDUzYTFlIgorCisjIEJ1aWxkIGZhaWxzIHdoZW4gdGh1bWIgaXMgZW5hYmxlZDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE3CitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworIyBTaG91bGQgYmUgQVBJIGNvbXBhdGlibGUgd2l0aCBsaWJhdiAod2hpY2ggd2FzIGEgZm9yayBvZiBmZm1wZWcpCisjIGxpYnBvc3Rwcm9jIHdhcyBwcmV2aW91c2x5IHBhY2thZ2VkIGZyb20gYSBzZXBhcmF0ZSByZWNpcGUKK1BST1ZJREVTID0gImxpYmF2IGxpYnBvc3Rwcm9jIgorCitERVBFTkRTID0gImFsc2EtbGliIHpsaWIgbGlib2dnIHlhc20tbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImF2ZGV2aWNlIGF2ZmlsdGVyIGF2Y29kZWMgYXZmb3JtYXQgc3dyZXNhbXBsZSBzd3NjYWxlIHBvc3Rwcm9jIFwKKyAgICAgICAgICAgICAgICAgICBiemxpYiBncGwgbHptYSB0aGVvcmEgeDI2NCBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneHYnLCAnJywgZCl9IgorCisjIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKK1BBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKK1BBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKK1BBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKK1BBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKK1BBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKK1BBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKK1BBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKK1BBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKKworIyBmZWF0dXJlcyB0byBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCitQQUNLQUdFQ09ORklHW2dwbF0gPSAiLS1lbmFibGUtZ3BsLC0tZGlzYWJsZS1ncGwiCitQQUNLQUdFQ09ORklHW2dzbV0gPSAiLS1lbmFibGUtbGliZ3NtLC0tZGlzYWJsZS1saWJnc20sbGliZ3NtIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1pbmRldj1qYWNrLC0tZGlzYWJsZS1pbmRldj1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW2xpYnZvcmJpc10gPSAiLS1lbmFibGUtbGlidm9yYmlzLC0tZGlzYWJsZS1saWJ2b3JiaXMsbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6IgorUEFDS0FHRUNPTkZJR1ttcDNsYW1lXSA9ICItLWVuYWJsZS1saWJtcDNsYW1lLC0tZGlzYWJsZS1saWJtcDNsYW1lLGxhbWUiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2Nocm9lZGluZ2VyXSA9ICItLWVuYWJsZS1saWJzY2hyb2VkaW5nZXIsLS1kaXNhYmxlLWxpYnNjaHJvZWRpbmdlcixzY2hyb2VkaW5nZXIiCitQQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSIKK1BBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLC0tZGlzYWJsZS12YWFwaSxsaWJ2YSIKK1BBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS1saWJ2cHgsLS1kaXNhYmxlLWxpYnZweCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLWxpYngyNjQsLS1kaXNhYmxlLWxpYngyNjQseDI2NCIKK1BBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgorCisjIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQorVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK2RlZiBjcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmdbNjpdCisgICAgcmV0dXJuICdnZW5lcmljJworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKKyAgICAtLWVuYWJsZS1waWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2IgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2htIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXhmaXhlcyBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi1zaGFwZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCisgICAgXAorICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAorICAgIFwKKyAgICAtLWxkPSIke0NDTER9IiBcCisgICAgLS1jYz0iJHtDQ30iIFwKKyAgICAtLWN4eD0iJHtDWFh9IiBcCisgICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKKyAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKKyAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCisgICAgLS1jcHU9JHtAY3B1KGQpfSBcCisgICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKworZG9fY29uZmlndXJlKCkgeworICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitQQUNLQUdFUyA9KyAibGliYXZjb2RlYyBcCisgICAgICAgICAgICAgbGliYXZkZXZpY2UgXAorICAgICAgICAgICAgIGxpYmF2ZmlsdGVyIFwKKyAgICAgICAgICAgICBsaWJhdmZvcm1hdCBcCisgICAgICAgICAgICAgbGliYXZyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGliYXZ1dGlsIFwKKyAgICAgICAgICAgICBsaWJwb3N0cHJvYyBcCisgICAgICAgICAgICAgbGlic3dyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGlic3dzY2FsZSIKKworRklMRVNfbGliYXZjb2RlYyA9ICIke2xpYmRpcn0vbGliYXZjb2RlYyR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZGV2aWNlID0gIiR7bGliZGlyfS9saWJhdmRldmljZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZmlsdGVyID0gIiR7bGliZGlyfS9saWJhdmZpbHRlciR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2Zm9ybWF0ID0gIiR7bGliZGlyfS9saWJhdmZvcm1hdCR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYmF2cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJhdnV0aWwgPSAiJHtsaWJkaXJ9L2xpYmF2dXRpbCR7U09MSUJTfSIKK0ZJTEVTX2xpYnBvc3Rwcm9jID0gIiR7bGliZGlyfS9saWJwb3N0cHJvYyR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYnN3cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJzd3NjYWxlID0gIiR7bGliZGlyfS9saWJzd3NjYWxlJHtTT0xJQlN9IgorCisjIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyLzAwMDEtZ3RrLXBsYXktRGlzYWJsZS12aXN1YWxpemF0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci8wMDAxLWd0ay1wbGF5LURpc2FibGUtdmlzdWFsaXphdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhODgxMjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyLzAwMDEtZ3RrLXBsYXktRGlzYWJsZS12aXN1YWxpemF0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gNmNmNDJjNDY4ZTkzYjBhYWExNzE5NjFlMDU5YmMzZTJmYjkxNTg4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDI4IEFwciAyMDE3IDE0OjM1OjE5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGd0ay1wbGF5OiBEaXNhYmxlIHZpc3VhbGl6YXRpb25zCi0KLVRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBbWU9DVE8gIzExNDEwXSAoYXVkaW8gcGxheWJhY2sgaXMgYnJva2VuIGluCi1tZWRpYXBsYXllciBpZiB2YWFwaSBpcyB1c2VkKS4gSXQgZGlzYWJsZXMgdmlzdWFsaXphdGlvbnMgYW5kIG1ha2VzCi1zdXJlIHdlIGNsZWFyIHRoZSB3aW5kb3cgKG90aGVyd2lzZSBub3RoaW5nIGRvZXMgdGhhdCBhbmQgcmVzdWx0IGlzCi12ZXJ5IHVnbHkpLgotCi1UaGlzIHBhdGNoIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gMTE0MTAgaXMgZml4ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbYnVnIHdvcmthcm91bmRdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gZ3RrL2d0ay1wbGF5LmMgfCAxMyArKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2d0ay9ndGstcGxheS5jIGIvZ3RrL2d0ay1wbGF5LmMKLWluZGV4IDhhZTBmZWEuLjYzYjliYjAgMTAwNjQ0Ci0tLS0gYS9ndGsvZ3RrLXBsYXkuYwotKysrIGIvZ3RrL2d0ay1wbGF5LmMKLUBAIC0xNDAxLDYgKzE0MDEsMTUgQEAgZ2V0X2NoaWxkX3Bvc2l0aW9uIChHdGtPdmVybGF5ICogb3ZlcmxheSwgR3RrV2lkZ2V0ICogd2lkZ2V0LAotICAgcmV0dXJuIFRSVUU7Ci0gfQotIAotKy8qIEhhY2sgdG8gbWFrZSBzdXJlIHNvbWV0aGluZyBnZXRzIGRyYXduIGlmIHZpc3VhbGl6YXRpb25zIGFyZSBkaXNhYmxlZCAqLwotK3N0YXRpYyBnYm9vbGVhbgotK2RyYXdfY2IgKEd0a1dpZGdldCAqd2lkZ2V0LCBjYWlyb190ICpjciwgZ3BvaW50ZXIgZGF0YSkKLSt7Ci0rICBjYWlyb19zZXRfc291cmNlX3JnYiAoY3IsIDAsIDAsIDApOwotKyAgY2Fpcm9fcGFpbnQgKGNyKTsKLSsgIHJldHVybiBGQUxTRTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQotIHsKLUBAIC0xNDMxLDYgKzE0NDAsOCBAQCBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQotICAgICBwbGF5LT52aWRlb19hcmVhID0gZ3RrX2RyYXdpbmdfYXJlYV9uZXcgKCk7Ci0gICAgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXktPnZpZGVvX2FyZWEsICJyZWFsaXplIiwKLSAgICAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX2FyZWFfcmVhbGl6ZV9jYiksIHBsYXkpOwotKyAgICBnX3NpZ25hbF9jb25uZWN0IChwbGF5LT52aWRlb19hcmVhLCAiZHJhdyIsCi0rICAgICAgICBHX0NBTExCQUNLIChkcmF3X2NiKSwgTlVMTCk7Ci0gICB9Ci0gICBndGtfd2lkZ2V0X3NldF9ldmVudHMgKHBsYXktPnZpZGVvX2FyZWEsIEdES19FWFBPU1VSRV9NQVNLCi0gICAgICAgfCBHREtfTEVBVkVfTk9USUZZX01BU0sKLUBAIC0xNzUzLDcgKzE3NjQsNyBAQCBndGtfcGxheV9jb25zdHJ1Y3RvciAoR1R5cGUgdHlwZSwgZ3VpbnQgbl9jb25zdHJ1Y3RfcGFyYW1zLAotIAotICAgLyogZW5hYmxlIHZpc3VhbGl6YXRpb24gKGJ5IGRlZmF1bHQgcGxheWJpbiB1c2VzIGdvb20pICovCi0gICAvKiBpZiB2aXN1YWxpemF0aW9uIGlzIGVuYWJsZWQgdGhlbiB1c2UgdGhlIGZpcnN0IGVsZW1lbnQgKi8KLS0gIGdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZCAoc2VsZi0+cGxheWVyLCBUUlVFKTsKLSsgIGdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZCAoc2VsZi0+cGxheWVyLCBGQUxTRSk7Ci0gCi0gICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoc2VsZiksICJzaG93IiwgR19DQUxMQkFDSyAoc2hvd19jYiksIE5VTEwpOwotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvQWRkLWVycm9yLXNpZ25hbC1lbWlzc2lvbi1mb3ItbWlzc2luZy1wbHVnaW5zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL0FkZC1lcnJvci1zaWduYWwtZW1pc3Npb24tZm9yLW1pc3NpbmctcGx1Z2lucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEyZDQ2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvQWRkLWVycm9yLXNpZ25hbC1lbWlzc2lvbi1mb3ItbWlzc2luZy1wbHVnaW5zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUyICswLDAgQEAKLUZyb20gZDY0YzdlZGI2NmY0YTY0ZmY0OWM0MzA2Y2Y3N2ZkMjY5YjcwNzlhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDE2IE1hciAyMDE1IDEzOjQ1OjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBlcnJvciBzaWduYWwgZW1pc3Npb24gZm9yIG1pc3NpbmcgcGx1Z2lucwotCi1BZGQgYSBtaXNzaW5nIHBsdWdpbnMgZXJyb3Igc2lnbmFsIHRvIGdzdC1wbGF5ZXIuIE5vdGUgdGhhdCB0aGlzIGVycm9yCi1kb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoZSBwbGF5YmFjayBoYXMgY29tcGxldGVseSBmYWlsZWQsIGJ1dCBpbgotcHJhY3RpY2UgdGhlIHVzZXIgZXhwZXJpZW5jZSB3aWxsIGJlIGJhZCAodGhpbmssIGUuZy4gb2YgYSBtcDQgZmlsZQotd2hlcmUgSC4yNjQgY29kZWMgaXMgbWlzc2luZzogQUFDIHBsYXliYWNrIHN0aWxsIHdvcmtzLi4uKS4KLQotVXNlIHRoZSBzaWduYWwgaW4gZ3RrLXBsYXkgdG8gc2hvdyBhIGluZm9iYXIgaWYgcGx1Z2lucyBhcmUgbWlzc2luZy4KLQotU3VibWl0dGVkIHVwc3RyZWFtIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9zZHJvZWdlL2dzdC1wbGF5ZXIvcHVsbC8xMQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSBndGsvZ3RrLXBsYXkuYyAgICAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBsaWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYyB8IDIyICsrKysrKysrKysrKysrKysrKysKLSBsaWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCB8ICAzICsrLQotIDQgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTBhYjc0Yy4uNmNkYjRlYiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTMsNyArNTMsNyBAQCBBQ19TVUJTVChMVF9BR0UpCi0gUEtHX1BST0dfUEtHX0NPTkZJRwotIAotIFBLR19DSEVDS19NT0RVTEVTKEdMSUIsIFtnbGliLTIuMCBnb2JqZWN0LTIuMF0pCi0tUEtHX0NIRUNLX01PRFVMRVMoR1NUUkVBTUVSLCBbZ3N0cmVhbWVyLTEuMCA+PSAxLjQgZ3N0cmVhbWVyLXZpZGVvLTEuMCA+PSAxLjRdKQotK1BLR19DSEVDS19NT0RVTEVTKEdTVFJFQU1FUiwgW2dzdHJlYW1lci0xLjAgPj0gMS40IGdzdHJlYW1lci12aWRlby0xLjAgPj0gMS40IGdzdHJlYW1lci1wYnV0aWxzLTEuMF0pCi0gCi0gR0xJQl9QUkVGSVg9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXByZWZpeCBnbGliLTIuMGAiCi0gQUNfU1VCU1QoR0xJQl9QUkVGSVgpCi1kaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYwotaW5kZXggYjkyNzczYi4uZTJiNjA1YSAxMDA2NDQKLS0tLSBhL2d0ay9ndGstcGxheS5jCi0rKysgYi9ndGsvZ3RrLXBsYXkuYwotQEAgLTMwLDYgKzMwLDggQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIEd0a1dpZGdldCAqcHJldl9idXR0b24sICpuZXh0X2J1dHRvbjsKLSAgIEd0a1dpZGdldCAqc2Vla2JhcjsKLSAgIEd0a1dpZGdldCAqdmlkZW9fYXJlYTsKLSsgIEd0a1dpZGdldCAqaW5mb19sYWJlbDsKLSsgIEd0a1dpZGdldCAqaW5mb19iYXI7Ci0gICBHdGtXaWRnZXQgKnZvbHVtZV9idXR0b247Ci0gICBndWxvbmcgc2Vla2Jhcl92YWx1ZV9jaGFuZ2VkX3NpZ25hbF9pZDsKLSAgIGdib29sZWFuIHBsYXlpbmc7Ci1AQCAtMTQxLDYgKzE0MywxMyBAQCBwbGF5X3BhdXNlX2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgR3RrUGxheSAqIHBsYXkpCi0gfQotIAotIHN0YXRpYyB2b2lkCi0rY2xlYXJfbWlzc2luZ19wbHVnaW5zIChHdGtQbGF5ICogcGxheSkKLSt7Ci0rICBndGtfbGFiZWxfc2V0X3RleHQgKEdUS19MQUJFTCAocGxheS0+aW5mb19sYWJlbCksICIiKTsKLSsgIGd0a193aWRnZXRfaGlkZSAocGxheS0+aW5mb19iYXIpOwotK30KLSsKLStzdGF0aWMgdm9pZAotIHNraXBfcHJldl9jbGlja2VkX2NiIChHdGtCdXR0b24gKiBidXR0b24sIEd0a1BsYXkgKiBwbGF5KQotIHsKLSAgIEdMaXN0ICpwcmV2OwotQEAgLTE1NSw2ICsxNjQsNyBAQCBza2lwX3ByZXZfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSAKLSAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZSAocGxheS0+bmV4dF9idXR0b24sIFRSVUUpOwotICAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5LT5wbGF5ZXIsIHByZXYtPmRhdGEpOwotKyAgY2xlYXJfbWlzc2luZ19wbHVnaW5zIChwbGF5KTsKLSAgIGdzdF9wbGF5ZXJfcGxheSAocGxheS0+cGxheWVyKTsKLSAgIHNldF90aXRsZSAocGxheSwgcHJldi0+ZGF0YSk7Ci0gICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUgKHBsYXktPnByZXZfYnV0dG9uLCBnX2xpc3RfcHJldmlvdXMgKHByZXYpICE9IE5VTEwpOwotQEAgLTE3NSw2ICsxODUsNyBAQCBza2lwX25leHRfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSAKLSAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZSAocGxheS0+cHJldl9idXR0b24sIFRSVUUpOwotICAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5LT5wbGF5ZXIsIG5leHQtPmRhdGEpOwotKyAgY2xlYXJfbWlzc2luZ19wbHVnaW5zIChwbGF5KTsKLSAgIGdzdF9wbGF5ZXJfcGxheSAocGxheS0+cGxheWVyKTsKLSAgIHNldF90aXRsZSAocGxheSwgbmV4dC0+ZGF0YSk7Ci0gICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUgKHBsYXktPm5leHRfYnV0dG9uLCBnX2xpc3RfbmV4dCAobmV4dCkgIT0gTlVMTCk7Ci1AQCAtMTkzLDEwICsyMDQsMTYgQEAgdm9sdW1lX2NoYW5nZWRfY2IgKEd0a1NjYWxlQnV0dG9uICogYnV0dG9uLCBnZG91YmxlIHZhbHVlLCBHdGtQbGF5ICogcGxheSkKLSAgIGdzdF9wbGF5ZXJfc2V0X3ZvbHVtZSAocGxheS0+cGxheWVyLCB2YWx1ZSk7Ci0gfQotIAotK3ZvaWQKLStpbmZvX2Jhcl9yZXNwb25zZV9jYiAoR3RrSW5mb0JhciAqIGJhciwgZ2ludCByZXNwb25zZSwgR3RrUGxheSAqIHBsYXkpCi0rewotKyAgZ3RrX3dpZGdldF9oaWRlIChHVEtfV0lER0VUIChiYXIpKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQotIHsKLS0gIEd0a1dpZGdldCAqY29udHJvbHMsICptYWluX2hib3gsICptYWluX3Zib3g7Ci0rICBHdGtXaWRnZXQgKmNvbnRyb2xzLCAqbWFpbl9oYm94LCAqbWFpbl92Ym94LCAqaW5mb19iYXIsICpjb250ZW50X2FyZWE7Ci0gCi0gICBwbGF5LT53aW5kb3cgPSBndGtfd2luZG93X25ldyAoR1RLX1dJTkRPV19UT1BMRVZFTCk7Ci0gICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAocGxheS0+d2luZG93KSwgImRlbGV0ZS1ldmVudCIsCi1AQCAtMjA4LDYgKzIyNSwyMCBAQCBjcmVhdGVfdWkgKEd0a1BsYXkgKiBwbGF5KQotICAgZ19zaWduYWxfY29ubmVjdCAocGxheS0+dmlkZW9fYXJlYSwgInJlYWxpemUiLAotICAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX2FyZWFfcmVhbGl6ZV9jYiksIHBsYXkpOwotIAotKyAgcGxheS0+aW5mb19iYXIgPSBndGtfaW5mb19iYXJfbmV3ICgpOwotKyAgZ3RrX2luZm9fYmFyX3NldF9tZXNzYWdlX3R5cGUgKEdUS19JTkZPX0JBUiAocGxheS0+aW5mb19iYXIpLAotKyAgICAgIEdUS19NRVNTQUdFX1dBUk5JTkcpOwotKyAgLy9ndGtfaW5mb19iYXJfc2V0X3Nob3dfY2xvc2VfYnV0dG9uIChHVEtfSU5GT19CQVIgKHBsYXktPmluZm9fYmFyKSwKLSsgIC8vICAgIFRSVUUpOwotKyAgZ3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwgKHBsYXktPmluZm9fYmFyLCBUUlVFKTsKLSsgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXktPmluZm9fYmFyLCAicmVzcG9uc2UiLAotKyAgICAgIEdfQ0FMTEJBQ0sgKGluZm9fYmFyX3Jlc3BvbnNlX2NiKSwgcGxheSk7Ci0rCi0rICBjb250ZW50X2FyZWEgPSBndGtfaW5mb19iYXJfZ2V0X2NvbnRlbnRfYXJlYSAoR1RLX0lORk9fQkFSIChwbGF5LT5pbmZvX2JhcikpOwotKyAgcGxheS0+aW5mb19sYWJlbCA9IGd0a19sYWJlbF9uZXcgKCIiKTsKLSsgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChjb250ZW50X2FyZWEpLCBwbGF5LT5pbmZvX2xhYmVsKTsKLSsgIGd0a193aWRnZXRfc2hvdyAocGxheS0+aW5mb19sYWJlbCk7Ci0rCi0gICAvKiBVbmlmaWVkIHBsYXkvcGF1c2UgYnV0dG9uICovCi0gICBwbGF5LT5wbGF5X3BhdXNlX2J1dHRvbiA9Ci0gICAgICAgZ3RrX2J1dHRvbl9uZXdfZnJvbV9pY29uX25hbWUgKCJtZWRpYS1wbGF5YmFjay1wYXVzZSIsCi1AQCAtMjU4LDYgKzI4OSw3IEBAIGNyZWF0ZV91aSAoR3RrUGxheSAqIHBsYXkpCi0gCi0gICBtYWluX3Zib3ggPSBndGtfYm94X25ldyAoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKLSAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAobWFpbl92Ym94KSwgbWFpbl9oYm94LCBUUlVFLCBUUlVFLCAwKTsKLSsgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAobWFpbl92Ym94KSwgcGxheS0+aW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7Ci0gICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKG1haW5fdmJveCksIGNvbnRyb2xzLCBGQUxTRSwgRkFMU0UsIDApOwotICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKHBsYXktPndpbmRvdyksIG1haW5fdmJveCk7Ci0gCi1AQCAtMzIyLDYgKzM1NCw3IEBAIGVvc19jYiAoR3N0UGxheWVyICogdW51c2VkLCBHdGtQbGF5ICogcGxheSkKLSAgICAgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUgKHBsYXktPm5leHRfYnV0dG9uLCBnX2xpc3RfbmV4dCAobmV4dCkgIT0gTlVMTCk7Ci0gCi0gICAgICAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5LT5wbGF5ZXIsIG5leHQtPmRhdGEpOwotKyAgICAgIGNsZWFyX21pc3NpbmdfcGx1Z2lucyAocGxheSk7Ci0gICAgICAgZ3N0X3BsYXllcl9wbGF5IChwbGF5LT5wbGF5ZXIpOwotICAgICAgIHNldF90aXRsZSAocGxheSwgbmV4dC0+ZGF0YSk7Ci0gICAgIH0gZWxzZSB7Ci1AQCAtMzMwLDYgKzM2MywyNCBAQCBlb3NfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgR3RrUGxheSAqIHBsYXkpCi0gICB9Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rZXJyb3JfY2IgKEdzdFBsYXllciAqIHBsYXllciwgR0Vycm9yICogZXJyLCBHdGtQbGF5ICogcGxheSkKLSt7Ci0rICBjaGFyICptZXNzYWdlOwotKwotKyAgaWYgKGdfZXJyb3JfbWF0Y2hlcyAoZXJyLCBnc3RfcGxheWVyX2Vycm9yX3F1YXJrICgpLAotKyAgICAgIEdTVF9QTEFZRVJfRVJST1JfTUlTU0lOR19QTFVHSU4pKSB7Ci0rICAgIC8vIGFkZCBtZXNzYWdlIHRvIGVuZCBvZiBhbnkgZXhpc3RpbmcgbWVzc2FnZTogdGhlcmUgbWF5IGJlCi0rICAgIC8vIG11bHRpcGxlIG1pc3NpbmcgcGx1Z2lucy4KLSsgICAgbWVzc2FnZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzJXMuICIsCi0rICAgICAgICBndGtfbGFiZWxfZ2V0X3RleHQgKEdUS19MQUJFTCAocGxheS0+aW5mb19sYWJlbCkpLCBlcnItPm1lc3NhZ2UpOwotKyAgICBndGtfbGFiZWxfc2V0X3RleHQgKEdUS19MQUJFTCAocGxheS0+aW5mb19sYWJlbCksIG1lc3NhZ2UpOwotKyAgICBnX2ZyZWUgKG1lc3NhZ2UpOwotKwotKyAgICBndGtfd2lkZ2V0X3Nob3cgKHBsYXktPmluZm9fYmFyKTsKLSsgIH0KLSt9Ci0rCi0gaW50Ci0gbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKiBhcmd2KQotIHsKLUBAIC00MjIsNiArNDczLDcgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKiBhcmd2KQotICAgZ19zaWduYWxfY29ubmVjdCAocGxheS5wbGF5ZXIsICJ2aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiLAotICAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZF9jYiksICZwbGF5KTsKLSAgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXkucGxheWVyLCAiZW5kLW9mLXN0cmVhbSIsIEdfQ0FMTEJBQ0sgKGVvc19jYiksICZwbGF5KTsKLSsgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXkucGxheWVyLCAiZXJyb3IiLCBHX0NBTExCQUNLIChlcnJvcl9jYiksICZwbGF5KTsKLSAKLSAgIC8qIFdlIGhhdmUgZmlsZShzKSB0aGF0IG5lZWQgcGxheWluZy4gKi8KLSAgIHNldF90aXRsZSAoJnBsYXksIGdfbGlzdF9maXJzdCAocGxheS51cmlzKS0+ZGF0YSk7Ci1kaWZmIC0tZ2l0IGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMgYi9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYwotaW5kZXggYmQ2ODJkOS4uNzhlN2JhMSAxMDA2NDQKLS0tLSBhL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCi0rKysgYi9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYwotQEAgLTQ3LDYgKzQ3LDcgQEAKLSAKLSAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSsjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+Ci0gCi0gR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3BsYXllcl9kZWJ1Zyk7Ci0gI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3BsYXllcl9kZWJ1ZwotQEAgLTIzOCw2ICsyMzksNyBAQCBnc3RfcGxheWVyX2NsYXNzX2luaXQgKEdzdFBsYXllckNsYXNzICoga2xhc3MpCi0gICAgICAgZ19zaWduYWxfbmV3ICgidmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKLSAgICAgICBHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX05PX1JFQ1VSU0UgfCBHX1NJR05BTF9OT19IT09LUywgMCwgTlVMTCwKLSAgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMiwgR19UWVBFX0lOVCwgR19UWVBFX0lOVCk7Ci0rCi0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtNjE5LDYgKzYyMSwyMSBAQCBlcnJvcl9jYiAoR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCi0gICBnX211dGV4X3VubG9jayAoJnNlbGYtPnByaXYtPmxvY2spOwotIH0KLSAKLStzdGF0aWMgdm9pZAotK2VsZW1lbnRfY2IgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQotK3sKLSsgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7Ci0rCi0rICBpZiAoZ3N0X2lzX21pc3NpbmdfcGx1Z2luX21lc3NhZ2UgKG1zZykpIHsKLSsgICAgZ2NoYXIgKmRlc2M7Ci0rCi0rICAgIGRlc2MgPSBnc3RfbWlzc2luZ19wbHVnaW5fbWVzc2FnZV9nZXRfZGVzY3JpcHRpb24gKG1zZyk7Ci0rICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLAotKyAgICAgICAgR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTiwgIk1pc3NpbmcgcGx1Z2luICclcyciLCBkZXNjKSk7Ci0rICAgIGdfZnJlZSAoZGVzYyk7Ci0rICB9Ci0rfQotKwotIHN0YXRpYyBnYm9vbGVhbgotIGVvc19kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQotIHsKLUBAIC0xMDU5LDYgKzEwNzYsOCBAQCBnc3RfcGxheWVyX21haW4gKGdwb2ludGVyIGRhdGEpCi0gICAgICAgTlVMTCwgTlVMTCk7Ci0gICBnX3NvdXJjZV9hdHRhY2ggKGJ1c19zb3VyY2UsIHNlbGYtPnByaXYtPmNvbnRleHQpOwotIAotKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjplbGVtZW50IiwKLSsgICAgICBHX0NBTExCQUNLIChlbGVtZW50X2NiKSwgc2VsZik7Ci0gICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoYnVzKSwgIm1lc3NhZ2U6OmVycm9yIiwgR19DQUxMQkFDSyAoZXJyb3JfY2IpLAotICAgICAgIHNlbGYpOwotICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjplb3MiLCBHX0NBTExCQUNLIChlb3NfY2IpLCBzZWxmKTsKLUBAIC0xNTYwLDYgKzE1NzksNyBAQCBnc3RfcGxheWVyX2Vycm9yX2dldF90eXBlICh2b2lkKQotICAgc3RhdGljIGdzaXplIGlkID0gMDsKLSAgIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIHZhbHVlc1tdID0gewotICAgICB7Q19FTlVNIChHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCksICJHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCIsICJmYWlsZWQifSwKLSsgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTiksICJHU1RfUExBWUVSX0VSUk9SX01JU1NJTkdfUExVR0lOIiwgIm1pc3NpbmctcGx1Z2luIn0sCi0gICAgIHswLCBOVUxMLCBOVUxMfQotICAgfTsKLSAKLUBAIC0xNTc3LDYgKzE1OTcsOCBAQCBnc3RfcGxheWVyX2Vycm9yX2dldF9uYW1lIChHc3RQbGF5ZXJFcnJvciBlcnJvcikKLSAgIHN3aXRjaCAoZXJyb3IpIHsKLSAgICAgY2FzZSBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRDoKLSAgICAgICByZXR1cm4gImZhaWxlZCI7Ci0rICAgIGNhc2UgR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTjoKLSsgICAgICByZXR1cm4gIm1pc3NpbmctcGx1Z2luIjsKLSAgIH0KLSAKLSAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotZGlmZiAtLWdpdCBhL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKLWluZGV4IGM0Mzg1MTMuLjM1ZmI1YmIgMTAwNjQ0Ci0tLS0gYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaAotKysrIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKLUBAIC00NCw3ICs0NCw4IEBAIEdUeXBlICAgICAgICBnc3RfcGxheWVyX2Vycm9yX2dldF90eXBlICAgICAgICAgICAgICAgICh2b2lkKTsKLSAjZGVmaW5lICAgICAgR1NUX1RZUEVfUExBWUVSX0VSUk9SICAgICAgICAgICAgICAgICAgICAoZ3N0X3BsYXllcl9lcnJvcl9nZXRfdHlwZSAoKSkKLSAKLSB0eXBlZGVmIGVudW0gewotLSAgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQgPSAwCi0rICBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCA9IDAsCi0rICBHU1RfUExBWUVSX0VSUk9SX01JU1NJTkdfUExVR0lOCi0gfSBHc3RQbGF5ZXJFcnJvcjsKLSAKLSBjb25zdCBnY2hhciAqZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZSAgICAgICAgICAgICAgICAoR3N0UGxheWVyRXJyb3IgZXJyb3IpOwotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvRml4LXBhdXNlLXBsYXkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvRml4LXBhdXNlLXBsYXkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4M2M0MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL0ZpeC1wYXVzZS1wbGF5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLUZpeCBwYXVzZS9wbGF5Ci0KLVRoZSBjdXJyZW50IHBsYXllciBzdGF0ZSBpcyBub3cgbm90aWZpZWQgdmlhIHRoZSBzdGF0ZS1jaGFuZ2VkIHNpZ25hbCwKLWFuZCBpbiB0aGUgR1RLIFVJIGl0IHdhcyBvbmx5IHVzZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgZGVzaXJlZCBzdGF0ZS4KLQotVGhpcyBpcyBhIGJhY2twb3J0IG9mIHVwc3RyZWFtIGNvbW1pdCA3Mzg0NzljN2EwLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi0tLS0KLSBndGsvZ3RrLXBsYXkuYyAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCi0gbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMgfCAxMiAtLS0tLS0tLS0tLS0KLSBsaWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCB8ICAyIC0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYwotaW5kZXggNmU3YTA5OC4uZTJiNjA1YSAxMDA2NDQKLS0tLSBhL2d0ay9ndGstcGxheS5jCi0rKysgYi9ndGsvZ3RrLXBsYXkuYwotQEAgLTM0LDYgKzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIEd0a1dpZGdldCAqaW5mb19iYXI7Ci0gICBHdGtXaWRnZXQgKnZvbHVtZV9idXR0b247Ci0gICBndWxvbmcgc2Vla2Jhcl92YWx1ZV9jaGFuZ2VkX3NpZ25hbF9pZDsKLSsgIGdib29sZWFuIHBsYXlpbmc7Ci0gfSBHdGtQbGF5OwotIAotIC8qIENvbXBhdCBzdHVicyAqLwotQEAgLTExOCwxMiArMTE5LDEzIEBAIHBsYXlfcGF1c2VfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSB7Ci0gICBHdGtXaWRnZXQgKmltYWdlOwotIAotLSAgaWYgKGdzdF9wbGF5ZXJfaXNfcGxheWluZyAocGxheS0+cGxheWVyKSkgewotKyAgaWYgKHBsYXktPnBsYXlpbmcpIHsKLSAgICAgZ3N0X3BsYXllcl9wYXVzZSAocGxheS0+cGxheWVyKTsKLSAgICAgaW1hZ2UgPQotICAgICAgICAgZ3RrX2ltYWdlX25ld19mcm9tX2ljb25fbmFtZSAoIm1lZGlhLXBsYXliYWNrLXN0YXJ0IiwKLSAgICAgICAgIEdUS19JQ09OX1NJWkVfQlVUVE9OKTsKLSAgICAgZ3RrX2J1dHRvbl9zZXRfaW1hZ2UgKEdUS19CVVRUT04gKHBsYXktPnBsYXlfcGF1c2VfYnV0dG9uKSwgaW1hZ2UpOwotKyAgICBwbGF5LT5wbGF5aW5nID0gRkFMU0U7Ci0gICB9IGVsc2UgewotICAgICBnY2hhciAqdGl0bGU7Ci0gCi1AQCAtMTM2LDYgKzEzOCw3IEBAIHBsYXlfcGF1c2VfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSAgICAgdGl0bGUgPSBnc3RfcGxheWVyX2dldF91cmkgKHBsYXktPnBsYXllcik7Ci0gICAgIHNldF90aXRsZSAocGxheSwgdGl0bGUpOwotICAgICBnX2ZyZWUgKHRpdGxlKTsKLSsgICAgcGxheS0+cGxheWluZyA9IFRSVUU7Ci0gICB9Ci0gfQotIAotQEAgLTMzNSw3ICszMzgsNyBAQCB2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsCi0gc3RhdGljIHZvaWQKLSBlb3NfY2IgKEdzdFBsYXllciAqIHVudXNlZCwgR3RrUGxheSAqIHBsYXkpCi0gewotLSAgaWYgKGdzdF9wbGF5ZXJfaXNfcGxheWluZyAocGxheS0+cGxheWVyKSkgewotKyAgaWYgKHBsYXktPnBsYXlpbmcpIHsKLSAgICAgR0xpc3QgKm5leHQgPSBOVUxMOwotICAgICBnY2hhciAqdXJpOwotIAotQEAgLTQ1Miw2ICs0NTUsNyBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqIGFyZ3YpCi0gICB9Ci0gCi0gICBwbGF5LnBsYXllciA9IGdzdF9wbGF5ZXJfbmV3ICgpOwotKyAgcGxheS5wbGF5aW5nID0gVFJVRTsKLSAKLSAgIGdfb2JqZWN0X3NldCAocGxheS5wbGF5ZXIsICJkaXNwYXRjaC10by1tYWluLWNvbnRleHQiLCBUUlVFLCBOVUxMKTsKLSAKLWRpZmYgLS1naXQgYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCi1pbmRleCAwNjliMjg0Li43OGU3YmExIDEwMDY0NAotLS0tIGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKLSsrKyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCi1AQCAtMTQyMiwxOCArMTQyMiw2IEBAIGdzdF9wbGF5ZXJfc2V0X3VyaSAoR3N0UGxheWVyICogc2VsZiwgY29uc3QgZ2NoYXIgKiB2YWwpCi0gICBnX29iamVjdF9zZXQgKHNlbGYsICJ1cmkiLCB2YWwsIE5VTEwpOwotIH0KLSAKLS1nYm9vbGVhbgotLWdzdF9wbGF5ZXJfaXNfcGxheWluZyAoR3N0UGxheWVyICogc2VsZikKLS17Ci0tICBnYm9vbGVhbiB2YWw7Ci0tCi0tICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIEZBTFNFKTsKLS0KLS0gIGdfb2JqZWN0X2dldCAoc2VsZiwgImlzLXBsYXlpbmciLCAmdmFsLCBOVUxMKTsKLS0KLS0gIHJldHVybiB2YWw7Ci0tfQotLQotIEdzdENsb2NrVGltZQotIGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uIChHc3RQbGF5ZXIgKiBzZWxmKQotIHsKLWRpZmYgLS1naXQgYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCi1pbmRleCA2OTMzZGQ3Li4zNWZiNWJiIDEwMDY0NAotLS0tIGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKLSsrKyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCi1AQCAtOTMsOCArOTMsNiBAQCBnY2hhciAqICAgICAgZ3N0X3BsYXllcl9nZXRfdXJpICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKLSB2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfdXJpICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgKiB1cmkpOwotIAotLWdib29sZWFuICAgICBnc3RfcGxheWVyX2lzX3BsYXlpbmcgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwotLQotIEdzdENsb2NrVGltZSBnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwotIEdzdENsb2NrVGltZSBnc3RfcGxheWVyX2dldF9kdXJhdGlvbiAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvZmlsZWNob29zZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvZmlsZWNob29zZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZjFiMDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2ZpbGVjaG9vc2VyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gNDNkNGIxOWFiNjExZDg0NDE1NmUyNmM0ODQwY2M1NGRkYjczYWUwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDI2IEZlYiAyMDE1IDE3OjE3OjA1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGd0ay1wbGF5OiBzaG93IGEgZmlsZSBjaG9vc2VyIGlmIG5vIFVSSXMgd2VyZSBwYXNzZWQKLQotLS0tCi0gZ3RrL2d0ay1wbGF5LmMgfCAgIDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2d0ay9ndGstcGxheS5jIGIvZ3RrL2d0ay1wbGF5LmMKLWluZGV4IGYwMTUwNzcuLjk3NjZhNzIgMTAwNjQ0Ci0tLS0gYS9ndGsvZ3RrLXBsYXkuYwotKysrIGIvZ3RrL2d0ay1wbGF5LmMKLUBAIC0zMTksOCArMzE5LDMyIEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiogYXJndikKLSAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcGxheWxpc3RzIGFuZCBzdHVmZgotICAgLyogUGFyc2UgdGhlIGxpc3Qgb2YgdGhlIGZpbGUgbmFtZXMgd2UgaGF2ZSB0byBwbGF5LiAqLwotICAgaWYgKCFmaWxlX25hbWVzKSB7Ci0tICAgIGdfcHJpbnQgKCJVc2FnZTogJXMgRklMRShzKXxVUkkocylcbiIsIEFQUF9OQU1FKTsKLS0gICAgcmV0dXJuIDE7Ci0rICAgIEd0a1dpZGdldCAqY2hvb3NlcjsKLSsgICAgaW50IHJlczsKLSsKLSsgICAgY2hvb3NlciA9IGd0a19maWxlX2Nob29zZXJfZGlhbG9nX25ldyAoIlNlbGVjdCBmaWxlcyB0byBwbGF5IiwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRklMRV9DSE9PU0VSX0FDVElPTl9PUEVOLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfQ2FuY2VsIiwgR1RLX1JFU1BPTlNFX0NBTkNFTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX09wZW4iLCBHVEtfUkVTUE9OU0VfQUNDRVBULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotKyAgICBnX29iamVjdF9zZXQgKGNob29zZXIsCi0rICAgICAgICAgICAgICAgICAgImxvY2FsLW9ubHkiLCBGQUxTRSwKLSsgICAgICAgICAgICAgICAgICAic2VsZWN0LW11bHRpcGxlIiwgVFJVRSwKLSsgICAgICAgICAgICAgICAgICBOVUxMKTsKLSsKLSsgICAgcmVzID0gZ3RrX2RpYWxvZ19ydW4gKEdUS19ESUFMT0cgKGNob29zZXIpKTsKLSsgICAgaWYgKHJlcyA9PSBHVEtfUkVTUE9OU0VfQUNDRVBUKSB7Ci0rICAgICAgR1NMaXN0ICpsOwotKwotKyAgICAgIGwgPSBndGtfZmlsZV9jaG9vc2VyX2dldF91cmlzIChHVEtfRklMRV9DSE9PU0VSIChjaG9vc2VyKSk7Ci0rICAgICAgd2hpbGUgKGwpIHsKLSsgICAgICAgIHBsYXkudXJpcyA9IGdfbGlzdF9hcHBlbmQgKHBsYXkudXJpcywgbC0+ZGF0YSk7Ci0rICAgICAgICBsID0gZ19zbGlzdF9kZWxldGVfbGluayAobCwgbCk7Ci0rICAgICAgfQotKyAgICB9IGVsc2UgewotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIGd0a193aWRnZXRfZGVzdHJveSAoY2hvb3Nlcik7Ci0gICB9IGVsc2UgewotICAgICBndWludCBpOwotIAotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyX2dpdC5iYgppbmRleCBjYjEyYTQ2Li40ZmU4ZmRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIKQEAgLTUsMTQgKzUsMTEgQEAKIERFUEVORFMgPSAiZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIGd0ayszIGdsaWItMi4wLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Nkcm9lZ2UvZ3N0LXBsYXllci5naXQgXAotICAgICAgICAgICBmaWxlOi8vZmlsZWNob29zZXIucGF0Y2g7YXBwbHk9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtcGF1c2UtcGxheS5wYXRjaDthcHBseT0wIFwKLSAgICAgICAgICAgZmlsZTovL0FkZC1lcnJvci1zaWduYWwtZW1pc3Npb24tZm9yLW1pc3NpbmctcGx1Z2lucy5wYXRjaDthcHBseT0wIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ3RrLXBsYXktRGlzYWJsZS12aXN1YWxpemF0aW9ucy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9nc3QtcGxheWVyLmRlc2t0b3AiCiAKIFNSQ1JFViA9ICJlZTNjMjI2YzgyNzY3YTA4OTc0M2U0ZTA2MDU4NzQzZTY3ZjczY2RiIgogUFYgPSAiMC4wLjErZ2l0JHtTUkNQVn0iCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXItdmFhcGkvdmFhcGl2aWRlb2J1ZmZlcnBvb2wtY3JlYXRlLWFsbG9jYXRvci1pZi1uZWVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lci12YWFwaS92YWFwaXZpZGVvYnVmZmVycG9vbC1jcmVhdGUtYWxsb2NhdG9yLWlmLW5lZWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY2NmFkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lci12YWFwaS92YWFwaXZpZGVvYnVmZmVycG9vbC1jcmVhdGUtYWxsb2NhdG9yLWlmLW5lZWRlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtjb21taXQgNTlhNzMxYmU2YiBpbiAnMS4xMCcgYnJhbmNoXQotCi0KLUZyb20gMDJhNjAwMmMzYTgwYjNhNTMwMWMwOTQzYjFhMTUxOGJiZGY0MzlmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9WPUMzPUFEY3Rvcj0yME1hbnVlbD0yMEo9QzM9QTFxdWV6PTIwTGVhbD89Ci0gPHZqYXF1ZXpAaWdhbGlhLmNvbT4KLURhdGU6IEZyaSwgMjEgQXByIDIwMTcgMTk6MDc6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdmFhcGl2aWRlb2J1ZmZlcnBvb2w6IGNyZWF0ZSBhbGxvY2F0b3IgaWYgbmVlZGVkCi0KLUJhY2twb3J0IHRvIGJyYW5jaCAxLjEwCi0KLVNvbWV0aW1lcyBhIHZpZGVvIGRlY29kZXIgY291bGQgc2V0IGRpZmZlcmVudCBidWZmZXIgcG9vbAotY29uZmlndXJhdGlvbnMsIGJlY2F1c2UgdGhlaXIgZnJhbWUgc2l6ZSBjaGFuZ2VzLiBJbiB0aGlzIGNhc2Ugd2UKLWRpZCBub3QgcmVjb25maWd1cmUgdGhlIGFsbG9jYXRvci4KLQotVGhpcyBwYXRjaCBlbmFibGVzIHRoaXMgdXNlIGNhc2UsIGNyZWF0aW5nIGEgbmV3IGFsbG9jYXRvciBpbnNpZGUKLXRoZSBWQUFQSSBidWZmZXIgcG9vbCBpZiB0aGUgY2FwcyBjaGFuZ2VkLCBpZiBpdCBpcyBub3QgZG1hYnVmLWJhc2VkLgotSWYgc28sIGl0IGlzIGp1c3QgcmVjb25maWd1cmVkLCBzaW5jZSBpdCBkb2Vzbid0IGhhdmUgYSBzdXJmYWNlIHBvb2wuCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE1NzcKLS0tLQotIGdzdC92YWFwaS9nc3R2YWFwaXZpZGVvYnVmZmVycG9vbC5jIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dzdC92YWFwaS9nc3R2YWFwaXZpZGVvYnVmZmVycG9vbC5jIGIvZ3N0L3ZhYXBpL2dzdHZhYXBpdmlkZW9idWZmZXJwb29sLmMKLWluZGV4IGEzYjkyMjNmLi45YTUwNjE0YiAxMDA2NDQKLS0tLSBhL2dzdC92YWFwaS9nc3R2YWFwaXZpZGVvYnVmZmVycG9vbC5jCi0rKysgYi9nc3QvdmFhcGkvZ3N0dmFhcGl2aWRlb2J1ZmZlcnBvb2wuYwotQEAgLTE1OSw2ICsxNTksMjcgQEAgZ3N0X3ZhYXBpX3ZpZGVvX2J1ZmZlcl9wb29sX3NldF9jb25maWcgKEdzdEJ1ZmZlclBvb2wgKiBwb29sLAotICAgICBnc3Rfb2JqZWN0X3JlcGxhY2UgKChHc3RPYmplY3QgKiopICYgcHJpdi0+YWxsb2NhdG9yLCBOVUxMKTsKLSAgIHByaXYtPnZpZGVvX2luZm8gPSBuZXdfdmlwOwotIAotKyAgewotKyAgICBndWludCBzdXJmYWNlX2FsbG9jX2ZsYWdzOwotKyAgICBnYm9vbGVhbiB2aW5mb19jaGFuZ2VkID0gRkFMU0U7Ci0rCi0rICAgIGlmIChhbGxvY2F0b3IpIHsKLSsgICAgICBjb25zdCBHc3RWaWRlb0luZm8gKmFsbG9jX3ZpbmZvID0KLSsgICAgICAgICAgZ3N0X2FsbG9jYXRvcl9nZXRfdmFhcGlfdmlkZW9faW5mbyAoYWxsb2NhdG9yLCAmc3VyZmFjZV9hbGxvY19mbGFncyk7Ci0rICAgICAgdmluZm9fY2hhbmdlZCA9IGdzdF92aWRlb19pbmZvX2NoYW5nZWQgKGFsbG9jX3ZpbmZvLCAmbmV3X3ZpcCk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKHZpbmZvX2NoYW5nZWQgJiYgYWxsb2NhdG9yICYmIHByaXYtPnVzZV9kbWFidWZfbWVtb3J5KSB7Ci0rICAgICAgZ3N0X2FsbG9jYXRvcl9zZXRfdmFhcGlfdmlkZW9faW5mbyAoYWxsb2NhdG9yLCAmbmV3X3ZpcCwKLSsgICAgICAgICAgc3VyZmFjZV9hbGxvY19mbGFncyk7Ci0rICAgIH0gZWxzZSBpZiAoIXByaXYtPnVzZV9kbWFidWZfbWVtb3J5ICYmICh2aW5mb19jaGFuZ2VkIHx8ICFhbGxvY2F0b3IpKSB7Ci0rICAgICAgLyogbGV0J3MgZGVzdHJveSB0aGUgb3RoZXIgYWxsb2NhdG9yIGFuZCBjcmVhdGUgYSBuZXcgb25lICovCi0rICAgICAgYWxsb2NhdG9yID0gZ3N0X3ZhYXBpX3ZpZGVvX2FsbG9jYXRvcl9uZXcgKHByaXYtPmRpc3BsYXksICZuZXdfdmlwLAotKyAgICAgICAgICBzdXJmYWNlX2FsbG9jX2ZsYWdzKTsKLSsgICAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9hbGxvY2F0b3IgKGNvbmZpZywgYWxsb2NhdG9yLCBOVUxMKTsKLSsgICAgfQotKyAgfQotKwotICAgaWYgKCFnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2hhc19vcHRpb24gKGNvbmZpZywKLSAgICAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9WQUFQSV9WSURFT19NRVRBKSkKLSAgICAgZ290byBlcnJvcl9ub192YWFwaV92aWRlb19tZXRhX29wdGlvbjsKLS0tIAotMi4xMS4wCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgwZDA3MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhYWM1OTAyZDNjOWNiMzVjNzcxZTc2MGQwZTQ4NzYyMmFhMmUxMTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjAgQXByIDIwMTcgMTA6Mzg6MTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBjaGVjayBmb3IgYXJtdjd2ZSB2YXJpYW50CisKK09FIHBhc3NlcyAtbWNwdSBhbmQgLW1hcmNoIHZpYSBjbWRsaW5lIGFuZCBpZgorcGFja2FnZSB0cmllcyB0byBkZXRlY3Qgb25lIG9mIGl0IG93biB0aGVuIGl0CitzaG91bGQgYmUgY29tcGF0aWJsZSBvdGhlcndpc2UsIG5ld2VyIGdjYzcrIHdpbGwKK2Vycm9yIG91dAorCitDaGVjayBmb3IgcmVsZXZhbnQgcHJlcHJvY2Vzc29yIG1hY3JvIHRvIGRldGVybWluZQorYXJtdjd2ZSBhcmNoaXRlY3R1cmUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQoraW5kZXggNGE1ZTQ3Ny4uNzI3ODE4ZSAxMDA3NTUKKy0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKKysrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKK0BAIC00Mjk1LDYgKzQyOTUsNyBAQCBlbGlmIGVuYWJsZWQgYXJtOyB0aGVuCisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZaOyAgICAgICB0aGVuIGVjaG8gYXJtdjZ6CisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZaSzsgICAgICB0aGVuIGVjaG8gYXJtdjZ6aworICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA2VDI7ICAgICAgdGhlbiBlY2hvIGFybXY2dDIKKysgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggRVhUX0lESVY7IHRoZW4gZWNobyBhcm12N3ZlCisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDc7ICAgICAgICB0aGVuIGVjaG8gYXJtdjcKKyAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggN0EgIDdfQTsgIHRoZW4gZWNobyBhcm12Ny1hCisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDdTOyAgICAgICB0aGVuIGVjaG8gYXJtdjctYQorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYmZjODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBiNTIyNmMwOTZhMGI3MDQ5ODc0ODU4ZTk0YTU5ZDQzZTEwYmEzZmQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgU2VwIDIwMTcgMTA6MjI6NTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaGV2Y3ByZWRfbXNhLmM6IEZpeCBidWlsZCBieSBJbmNsdWRpbmcgbGliYXZjb2RlYy9oZXZjZGVjLmgKKworc3JjL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYzoxOTEzOjMyOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ0hFVkNDb250ZXh0JzsgZGlkIHlvdSBtZWFuICdIRVZDUHJlZENvbnRleHQnPworIHZvaWQgZmZfaW50cmFfcHJlZF84XzE2eDE2X21zYShIRVZDQ29udGV4dCAqcywgaW50IHgwLCBpbnQgeTAsIGludCBjX2lkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEVWQ1ByZWRDb250ZXh0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jCitpbmRleCA2YTNiMjgxLi45NjNjNjRjIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYworKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYworQEAgLTE4LDcgKzE4LDcgQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCistI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgorKyNpbmNsdWRlICJsaWJhdmNvZGVjL2hldmNkZWMuaCIKKyAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvZ2VuZXJpY19tYWNyb3NfbXNhLmgiCisgI2luY2x1ZGUgImhldmNwcmVkX21pcHMuaCIKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlkODFkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEwLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1saWJhdi5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V4dC9saWJhdi9nc3Rhdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PWE3NTJjMzUyNjdkODI3NmZkOWNhM2RiNjk5NGZjYTljIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAotICAgIGZpbGU6Ly93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaCBcCi0gICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMmJkZDlmZGU2Y2EzZmY3ZWZmZmI5M2RmMTIxZjRmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Y2EwZmVjYTc1ZTNkNDgzMTVlMDdmMjBlYzM3Y2Y2MjYwZWQxZTlkZGU1OGRmMzU1ZmViZDUwMTYyNDYyNjhiIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNWJiZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODc4OGFlY2MwMzJhMjg3MjI3YjRiZDIzOWQxYjk5OGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJiNzM1YjliYjIxOGI2NTJhZTQwNzFlYTZmNmJlOGVhYWU1NWU5ZDMyMzNhZWMyZjM2Yjg4MmEyNzU0MmRiMyIKKworUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZS5iYgppbmRleCBjNTQyYjEzLi4wMTZlMTc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1tZXRhLWJhc2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbWV0YS1iYXNlLmJiCkBAIC0zNyw3ICszNyw3IEBACiAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS12aWRlb3NjYWxlIFwKICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXZpZGVvY29udmVydCBcCiAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC1hdXRvZGV0ZWN0IFwKLSAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLXNvdXBodHRwc3JjIgorICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2Qtc291cCIKIAogUlJFQ09NTUVORFNfZ3N0cmVhbWVyMS4wLW1ldGEteDExLWJhc2UgPSAiXAogICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UteGltYWdlc2luayBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LmluYwppbmRleCAwNTU2MmIxLi41ZDkyMzUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC5pbmMKQEAgLTI5LDEwICsyOSwxNyBAQAogICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIpKQogfQogCitkZWxldGVfcGtnX200X2ZpbGUoKSB7CisgICAgIyBEZWxldGUgbTQgZmlsZXMgd2hpY2ggd2UgcHJvdmlkZSBwYXRjaGVkIHZlcnNpb25zIG9mIGJ1dCB3aWxsIGJlIGlnbm9yZWQKKyAgICAjIGlmIHRoZXNlIGV4aXN0CisJcm0gLWYgIiR7U30vY29tbW9uL200L3BrZy5tNCIKKwlybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKK30KK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKKwogc2V0X29teF9jb3JlX25hbWUoKSB7CiAJc2VkIC1pIC1lICJzO15jb3JlLW5hbWU9Lio7Y29yZS1uYW1lPSR7R1NUUkVBTUVSXzFfMF9PTVhfQ09SRV9OQU1FfTsiICIke0R9JHtzeXNjb25mZGlyfS94ZGcvZ3N0b214LmNvbmYiCiB9Ci0KIGRvX2luc3RhbGxbcG9zdGZ1bmNzXSArPSAiIHNldF9vbXhfY29yZV9uYW1lICIKIAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZlZWZhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtb214LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZWRiMjMwZjFjNDdkMGNmNGI1NzVkNzBkZmY2NmZmMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NTA3MjkyNWNmMjYyZjBmZDUyOGZhYjc4ZjBkZTUyNzM0ZTQ2YTVhODhhYTgwMmZhZTUxYzY3YzA5YzgxYWEyIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZDQ1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMTEgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLW9teC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGExNDA0YTIwYjcyZTRhYjZlODI2NTAwMjE4ZWMzMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWIyMjM5OGY0NWEwMjdlOTc3ZDJiNTMwOTYyNWVjOTFjZGNhZjBkYTg3NTFjYmM3ZjU5NmQ2MzlhNDViYTI5OCIKKworUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKaW5kZXggMGNjZmM4OS4uN2JlMTVkOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwpAQCAtMjAsNyArMjAsNyBAQAogICAgICR7R1NUUkVBTUVSX09SQ30gXAogICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmInLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2RpcmVjdGZiIHZ1bGthbicsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZWdsJywgJycsIGQpfSBcCiAgICAgYnoyIGN1cmwgZGFzaCBkdGxzIGhscyBuZW9uIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHV2Y2gyNjQgd2VicCBcCiAiCkBAIC00MCw5ICs0MCw3IEBACiBQQUNLQUdFQ09ORklHW2ZsdWlkc3ludGhdICAgICAgPSAiLS1lbmFibGUtZmx1aWRzeW50aCwtLWRpc2FibGUtZmx1aWRzeW50aCxmbHVpZHN5bnRoIgogUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICAgICAgID0gIi0tZW5hYmxlLWdsZXMyLC0tZGlzYWJsZS1nbGVzMix2aXJ0dWFsL2xpYmdsZXMyIgogUEFDS0FHRUNPTkZJR1tndGtdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWd0azMsLS1kaXNhYmxlLWd0azMsZ3RrKzMiCi0jIGVuc3VyZSBPcGVuU1NMIGlzIHVzZWQgZm9yIEhMUyBBRVMgZGVzY3JpcHRpb24gaW5zdGVhZCBvZiBuZXR0bGUKLSMgKE9wZW5TU0wgaXMgYSBzaGFyZWQgZGVwZW5kZW5jeSB3aXRoIGR0bHMpCi1QQUNLQUdFQ09ORklHW2hsc10gICAgICAgICAgICAgPSAiLS1lbmFibGUtaGxzIC0td2l0aC1obHMtY3J5cHRvPW9wZW5zc2wsLS1kaXNhYmxlLWhscyxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tobHNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWhscyAtLXdpdGgtaGxzLWNyeXB0bz1uZXR0bGUsLS1kaXNhYmxlLWhscyxuZXR0bGUiCiBQQUNLQUdFQ09ORklHW2ttc10gICAgICAgICAgICAgPSAiLS1lbmFibGUta21zLC0tZGlzYWJsZS1rbXMsbGliZHJtIgogUEFDS0FHRUNPTkZJR1tsaWJtbXNdICAgICAgICAgID0gIi0tZW5hYmxlLWxpYm1tcywtLWRpc2FibGUtbGlibW1zLGxpYm1tcyIKIFBBQ0tBR0VDT05GSUdbbGlic3NoMl0gICAgICAgICA9ICItLWVuYWJsZS1saWJzc2gyLC0tZGlzYWJsZS1saWJzc2gyLGxpYnNzaDIiCkBAIC02NiwxOSArNjQsMTUgQEAKIFBBQ0tBR0VDT05GSUdbdXZjaDI2NF0gICAgICAgICA9ICItLWVuYWJsZS11dmNoMjY0LC0tZGlzYWJsZS11dmNoMjY0LGxpYnVzYjEgbGliZ3VkZXYiCiBQQUNLQUdFQ09ORklHW3ZvYWFjZW5jXSAgICAgICAgPSAiLS1lbmFibGUtdm9hYWNlbmMsLS1kaXNhYmxlLXZvYWFjZW5jLHZvLWFhY2VuYyIKIFBBQ0tBR0VDT05GSUdbdm9hbXJ3YmVuY10gICAgICA9ICItLWVuYWJsZS12b2FtcndiZW5jLC0tZGlzYWJsZS12b2FtcndiZW5jLHZvLWFtcndiZW5jIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgICAgID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyIKK1BBQ0tBR0VDT05GSUdbdnVsa2FuXSAgICAgICAgICA9ICItLWVuYWJsZS12dWxrYW4sLS1kaXNhYmxlLXZ1bGthbix2dWxrYW4iCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKIFBBQ0tBR0VDT05GSUdbd2VicF0gICAgICAgICAgICA9ICItLWVuYWJsZS13ZWJwLC0tZGlzYWJsZS13ZWJwLGxpYndlYnAiCiAKLSMgdGhlc2UgcGx1Z2lucyBoYXZlIG5vdCBiZWVuIHBvcnRlZCB0byAxLjAgKHlldCk6Ci0jICAgYXBleHNpbmsgbGluc3lzIG5hcyB0aW1pZGl0eSBzZGwgeHZpZCB3aW5pbmV0Ci0jICAgc25kaW8gY2R4YXBhcnNlIGRjY3AgZmFjZW92ZXJsYXkgaGR2cGFyc2UgdHRhIG12ZSBudXZkZW11eAotIyAgIHBhdGNoZGV0ZWN0IHNkaSB2aWRlb21lYXN1cmUKLQogIyB0aGVzZSBwbHVnaW5zIGhhdmUgbm8gY29ycmVzcG9uZGluZyBsaWJyYXJ5IGluIE9FLWNvcmUgb3IgbWV0YS1vcGVuZW1iZWRkZWQ6Ci0jICAgb3Blbm5pMiB3aW5rcyBkaXJlY3QzZCBkaXJlY3Rzb3VuZCB3aW5zY3JlZW5jYXAgYWNtIGFwcGxlX21lZGlhCisjICAgb3Blbm5pMiB3aW5rcyBkaXJlY3QzZCBkaXJlY3Rzb3VuZCB3aW5zY3JlZW5jYXAgYWNtIGFwcGxlX21lZGlhIGlxYQogIyAgIGFuZHJvaWRfbWVkaWEgYXZjIGJzMmIgY2hyb21hcHJpbnQgZGFhbGEgZHRzIGZka2FhYyBnbWUgZ3NtIGthdGUgbGFkc3BhIGxpYmRlMjY1Ci0jICAgbHYyIG1pbWljIG1wZWcyZW5jIG1wbGV4IG11c2VwYWNrIG52ZW5jIG9mYSBvcGVuaDI2NCBvcGVuc2xlcyBwdnIgc291bmR0b3VjaCBzcGFuZHNwCi0jICAgc3BjIHRlbGV0ZXh0ZGVjIHRpbnlhbHNhIHZkcGF1IHZ1bGthbiB3YXNhcGkgeDI2NSB6YmFyCisjICAgbHYyIG1wZWcyZW5jIG1wbGV4IG1zZGsgbXVzZXBhY2sgbnZlbmMgb2ZhIG9wZW5oMjY0IG9wZW5zbGVzIHNvdW5kdG91Y2ggc3BhbmRzcAorIyAgIHNwYyB0ZWxldGV4dGRlYyB0aW55YWxzYSB2ZHBhdSB3YXNhcGkgeDI2NSB6YmFyIHdlYnJ0Y2RzcAogCiAjIHF0NSBzdXBwb3J0IGlzIGRpc2FibGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBwcmVzZW50IGluIE9FIGNvcmUsIGFuZCByZXF1aXJlcyBtb3JlIHdvcmsgdGhhbgogIyBqdXN0IGFkZGluZyBhIHBhY2thZ2Vjb25maWcgKGl0IHJlcXVpcmVzIGFjY2VzcyB0byBtb2MsIHVpYywgcmNjLCBhbmQgcW1ha2UgcGF0aHMpLgpAQCAtOTQsNyArODgsNiBAQAogICAgIC0tZW5hYmxlLXZjZCBcCiAgICAgLS1kaXNhYmxlLWFjbSBcCiAgICAgLS1kaXNhYmxlLWFuZHJvaWRfbWVkaWEgXAotICAgIC0tZGlzYWJsZS1hcGV4c2luayBcCiAgICAgLS1kaXNhYmxlLWFwcGxlX21lZGlhIFwKICAgICAtLWRpc2FibGUtYXZjIFwKICAgICAtLWRpc2FibGUtYnMyYiBcCkBAIC0xMDcsNDMgKzEwMCwzNCBAQAogICAgIC0tZGlzYWJsZS1mZGtfYWFjIFwKICAgICAtLWRpc2FibGUtZ21lIFwKICAgICAtLWRpc2FibGUtZ3NtIFwKKyAgICAtLWRpc2FibGUtaXFhIFwKICAgICAtLWRpc2FibGUta2F0ZSBcCiAgICAgLS1kaXNhYmxlLWxhZHNwYSBcCiAgICAgLS1kaXNhYmxlLWxpYmRlMjY1IFwKLSAgICAtLWRpc2FibGUtbGlidmlzdWFsIFwKLSAgICAtLWRpc2FibGUtbGluc3lzIFwKICAgICAtLWRpc2FibGUtbHYyIFwKLSAgICAtLWRpc2FibGUtbWltaWMgXAogICAgIC0tZGlzYWJsZS1tcGVnMmVuYyBcCiAgICAgLS1kaXNhYmxlLW1wbGV4IFwKKyAgICAtLWRpc2FibGUtbXNkayBcCiAgICAgLS1kaXNhYmxlLW11c2VwYWNrIFwKLSAgICAtLWRpc2FibGUtbmFzIFwKICAgICAtLWRpc2FibGUtbnZlbmMgXAogICAgIC0tZGlzYWJsZS1vZmEgXAogICAgIC0tZGlzYWJsZS1vcGVuZXhyIFwKICAgICAtLWRpc2FibGUtb3BlbmgyNjQgXAogICAgIC0tZGlzYWJsZS1vcGVubmkyIFwKICAgICAtLWRpc2FibGUtb3BlbnNsZXMgXAotICAgIC0tZGlzYWJsZS1wdnIgXAogICAgIC0tZGlzYWJsZS1xdCBcCi0gICAgLS1kaXNhYmxlLXNkbCBcCi0gICAgLS1kaXNhYmxlLXNkbHRlc3QgXAotICAgIC0tZGlzYWJsZS1zbmRpbyBcCiAgICAgLS1kaXNhYmxlLXNvdW5kdG91Y2ggXAogICAgIC0tZGlzYWJsZS1zcGFuZHNwIFwKICAgICAtLWRpc2FibGUtc3BjIFwKICAgICAtLWRpc2FibGUtdGVsZXRleHRkZWMgXAotICAgIC0tZGlzYWJsZS10aW1pZGl0eSBcCiAgICAgLS1kaXNhYmxlLXRpbnlhbHNhIFwKICAgICAtLWRpc2FibGUtdmRwYXUgXAotICAgIC0tZGlzYWJsZS12dWxrYW4gXAogICAgIC0tZGlzYWJsZS13YXNhcGkgXAorICAgIC0tZGlzYWJsZS13ZWJydGNkc3AgXAogICAgIC0tZGlzYWJsZS13aWxkbWlkaSBcCi0gICAgLS1kaXNhYmxlLXdpbmluZXQgXAogICAgIC0tZGlzYWJsZS13aW5rcyBcCiAgICAgLS1kaXNhYmxlLXdpbnNjcmVlbmNhcCBcCiAgICAgLS1kaXNhYmxlLXgyNjUgXAotICAgIC0tZGlzYWJsZS14dmlkIFwKICAgICAtLWRpc2FibGUtemJhciBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLWRpc2FibGUteWFkaWYiLCAiIiwgZCl9IFwKICIKQEAgLTE1NywzICsxNDEsNyBAQAogRklMRVNfJHtQTn0tZnJlZXZlcmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RGcmVldmVyYi5wcnMiCiBGSUxFU18ke1BOfS1vcGVuY3YgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFkLyR7TElCVn0vb3BlbmN2KiIKIEZJTEVTXyR7UE59LXZvYW1yd2JlbmMgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RWb0FtcndiRW5jLnBycyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzLy5saWJzIgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCmluZGV4IDQzZjFlZTAuLjhkOTlkYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGNmZjZmYmY1NTVhMDcyNDA4YzIxZGExZTgxODIwOWM5ZDM4MTRkZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc1OTJlNzkzYjM5MDYzNTVkNzZjYTlhNTlmOGZlYTI3NDllYTJhNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMjcgT2N0IDIwMTUgMTQ6MzY6NTggKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGRvbid0IGhhcmRjb2RlIGxpYnRvb2wgbmFtZSB3aGVuIHJ1bm5pbmcKQEAgLTcsMTcgKzcsMzQgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCi0tLS0KLSBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQotIGdzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0gfCAyICstCi0gZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbSAgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKIAotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS5vcmlnL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi1AQCAtMTcxLDcgKzE3MSw3IEBAIEdzdEdMLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUMKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0gfCAyICstCisgZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtICAgICAgICAgfCAyICstCisgZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbSAgfCAyICstCisgZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbSAgICAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCitpbmRleCBlNTBkMDc3Li42MjNmMDkyIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCitAQCAtMzcsNyArMzcsNyBAQCBHc3RCYWRBbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGJhZGFsbG9jYQorIAkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisgCQktLWxpYnJhcnk9bGliZ3N0YmFkYWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKKy0JCS0tbGlidG9vbD0iJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wiIFwKKysJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAorIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKKyAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItYmFkYWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQCBcCisgCQktLW91dHB1dCAkQCBcCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCitpbmRleCAyYWU0NzczLi5kZmE3YTdkIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KK0BAIC0xNzgsNyArMTc4LDcgQEAgR3N0R0wtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTI2LDExICs0MywxMSBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS5vcmlnL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KLUBAIC00NSw3ICs0NSw3IEBAIEdzdEluc2VydEJpbi1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU4KK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQoraW5kZXggMWY4ZWEzMC4uNGI5OGVmNiAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KK0BAIC00NSw3ICs0NSw3IEBAIEdzdEluc2VydEJpbi1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RpbnNlcnRiaW4tQEdTCiAgCQktLWxpYnJhcnk9bGliZ3N0aW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMzksMTEgKzU2LDExIEBACiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1pbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAgXAotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEub3JpZy9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCi1AQCAtNzksNyArNzksNyBAQCBHc3RNcGVndHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KK2luZGV4IGFlZWEzMmUuLjkyOWQ5Y2MgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCitAQCAtNzksNyArNzksNyBAQCBHc3RNcGVndHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0bXBlZ3RzLUBHU1RfQVBJXwogIAkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AYCBcCiAgCQktLWxpYnJhcnk9bGliZ3N0bXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtNTIsMyArNjksNiBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLW1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQCBcCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2gKaW5kZXggODZhNDQ5NS4uNDhkOTNhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2gKQEAgLTEsMzQgKzEsMzggQEAKLUZyb20gYzI3MTUwM2Q3ZTIzMzQyOGFjMDMyM2M1MWQ2NTE3MTEzZTI2YmVmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2M4ZjY4YzU0MjgzODBiOTMwNTc5ZGM5ZWYyN2M4NTMyNjQ0NDhmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEgRGVjIDIwMTYgMDA6Mjc6MTMgLTA4MDAKK0RhdGU6IE1vbiwgMTUgTWF5IDIwMTcgMTU6MDY6MTEgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gUHJlcGVuZCBQS0dfQ09ORklHX1NZU1JPT1RfRElSIHRvIHBrZy1jb25maWcgb3V0cHV0CiAKIEluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQogcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAogaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gSWYgYnVpbGQgaG9zdCBoYXMgd2F5bGFuZCBpbnN0YWxsZWQKLXRoZSBidWlsZCB3aWxsIHN1Y2NlZWQgYnV0IGlmIHlvdSBkb250IGhhdmUgd2F5bGFuZC1wcm90b2NvbHMgaW5zdGFsbGVkIG9uIGJ1aWxkIGhvc3QgdGhlbgotaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBidWlsZCBob3N0Cit0aGUgYnVpbGQgd2lsbCBzdWNjZWVkIGJ1dCBpZiB5b3UgZG9udCBoYXZlIHdheWxhbmQtcHJvdG9jb2xzIGluc3RhbGxlZCBvbiBidWlsZAoraG9zdCB0aGVuIGl0IHdvbnQgZmluZCB0aGUgZmlsZXMgb24gYnVpbGQgaG9zdAogCi1UaGlzIHNob3VsZCB3b3JrIG9rIHdpdGggbm9uIHN5c3Jvb3RlZCBidWlsZHMgdG9vIHNpbmNlIGluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLXdpbGwgYmUgZW1wdHkKK1RoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UKK2luIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIgd2lsbCBiZSBlbXB0eQogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgogLS0tCiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9jb25maWd1cmUuYWMKLUBAIC0yMjMzLDcgKzIyMzMsNyBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXQVlMQU5ELCBbd2F5bGFuZCBzCi0gICAgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkRfUFJPVE9DT0xTLCB3YXlsYW5kLXByb3RvY29scyA+PSAxLjQsIFsKLSAgICAgICBpZiB0ZXN0ICJ4JHdheWxhbmRfc2Nhbm5lciIgIT0gIngiOyB0aGVuCi0gICAgICAgICBIQVZFX1dBWUxBTkQ9InllcyIKLS0gICAgICAgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsIGAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotKyAgICAgICAgQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSAgICAgICBlbHNlCi0gICAgICAgICBBQ19NU0dfUkVTVUxUKFt3YXlsYW5kLXNjYW5uZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHdheWxhbmQgcGx1Z2luXSkKLSAgICAgICAgIEhBVkVfV0FZTEFORD0ibm8iCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlMzA3YmU2Li44M2NkZWIwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMjcyLDcgKzIyNzIsNyBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXQVlMQU5ELCBbd2F5bGFuZCBzaW5rXSwgd2F5bGFuZCAsIFsKKyAgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wIGxpYmRybSA+PSAyLjQuNTUgd2F5bGFuZC1wcm90b2NvbHMgPj0gMS40LCBbCisgICAgIGlmIHRlc3QgIngkd2F5bGFuZF9zY2FubmVyIiAhPSAieCI7IHRoZW4KKyAgICAgICBIQVZFX1dBWUxBTkQ9InllcyIKKy0gICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKKysgICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCAke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQorICAgICBlbHNlCisgICAgICAgQUNfTVNHX1JFU1VMVChbd2F5bGFuZC1zY2FubmVyIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSB3YXlsYW5kIHBsdWdpbl0pCisgICAgICAgSEFWRV9XQVlMQU5EPSJubyIKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaAppbmRleCA5ZmM5MWQ4Li4yMjM1YTU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaApAQCAtMSwyNCArMSwyOSBAQAotRnJvbSBhOTNjYTYzZDAxZTdjZDFlNDBiNWJlNTc2OTkyZjc3ZmFjMzY0YmQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1NjIyY2EzYjYxNjAzZGMzMTZhMGYxZmJlZGUzZjlhYTM1M2E1ZTQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIxIE1hciAyMDE2IDE4OjIxOjE3ICswMjAwCitEYXRlOiBGcmksIDEyIE1heSAyMDE3IDE2OjQ3OjEyICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lci1nbC5wYy5pbjogZG9uJ3QgYXBwZW5kIEdMX0NGTEFHUyB0byBDRkxBR1MKIAogRGVwZW5kZW5jaWVzJyBpbmNsdWRlIGRpcmVjdG9yaWVzIHNob3VsZCBub3QgYmUgYWRkZWQgaW4gdGhpcyB3YXk7CiBpdCBjYXVzZXMgcHJvYmxlbXMgd2hlbiBjcm9zcy1jb21waWxpbmcgaW4gc3lzcm9vdCBlbnZpcm9ubWVudHMuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgogLS0tCiAgcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEub3JpZy9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi1AQCAtMTAsNCArMTAsNCBAQCBWZXJzaW9uOiBAVkVSU0lPTkAKK2RpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgoraW5kZXggOGU3YTMwMy4uZDE2N2JlMSAxMDA2NDQKKy0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KKysrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KK0BAIC0xMyw0ICsxMyw0IEBAIFZlcnNpb246IEBWRVJTSU9OQAogIFJlcXVpcmVzOiBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKICAKLSBMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGdsLUBHU1RfQVBJX1ZFUlNJT05AIEBHTF9MSUJTQAorIExpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKIC1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSSR7bGliZGlyfS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZSBAR0xfQ0ZMQUdTQAogK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtbXNzZGVtdXgtaW1wcm92ZWQtbGl2ZS1wbGF5YmFjay1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tc3NkZW11eC1pbXByb3ZlZC1saXZlLXBsYXliYWNrLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4MzJjMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tc3NkZW11eC1pbXByb3ZlZC1saXZlLXBsYXliYWNrLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MjkgKzAsMCBAQAotRnJvbSA3MzcyMWFkNGU5ZTJkMzJlMWM4YjZhM2I0YWFhOTg0MDE1MzBlNThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KLURhdGU6IFR1ZSwgMjkgTm92IDIwMTYgMTQ6NDM6NDEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gbXNzZGVtdXg6IGltcHJvdmVkIGxpdmUgcGxheWJhY2sgc3VwcG9ydAotCi1XaGVuIGEgTVNTIHNlcnZlciBob3N0cyBhIGxpdmUgc3RyZWFtIHRoZSBmcmFnbWVudHMgbGlzdGVkIGluIHRoZQotbWFuaWZlc3QgdXN1YWxseSBkb24ndCBoYXZlIGFjY3VyYXRlIHRpbWVzdGFtcHMgYW5kIGR1cmF0aW9uLCBleGNlcHQKLWZvciB0aGUgZmlyc3QgZnJhZ21lbnQsIHdoaWNoIGFkZGl0aW9uYWxseSBzdG9yZXMgdGltaW5nIGluZm9ybWF0aW9uCi1mb3IgdGhlIGZldyB1cGNvbWluZyBmcmFnbWVudHMuIEluIHRoaXMgc2NlbmFyaW8gaXQgaXMgdXNlbGVzcyB0bwotcGVyaW9kaWNhbGx5IGZldGNoIGFuZCB1cGRhdGUgdGhlIG1hbmlmZXN0IGFuZCB0aGUgZnJhZ21lbnRzIGxpc3QgY2FuCi1iZSBpbmNyZW1lbnRhbGx5IGJ1aWx0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0L2N1cnJlbnQgZnJhZ21lbnQuCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUwMzYKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGV4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICB8ICAgMiArCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jICAgICAgICAgICAgIHwgIDYwICsrKysrKwotIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuYyAgICB8IDI2NiArKysrKysrKysrKysrKysrKysrKysrKysrKwotIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCAgICB8ICA4NCArKysrKysrKwotIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYyAgICAgICAgICB8IDE1OCArKysrKysrKysrKysrKy0KLSBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmggICAgICAgICAgfCAgIDcgKwotIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYyB8ICAyNyArKy0KLSBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmggfCAgMTQgKysKLSA4IGZpbGVzIGNoYW5nZWQsIDYwNiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaAotCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbSBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW0KLWluZGV4IDRmYWY5ZGY5Zi4uYTVlMWFkNmFlIDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbQotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbQotQEAgLTEzLDggKzEzLDEwIEBAIGxpYmdzdHNtb290aHN0cmVhbWluZ19sYV9MSUJBREQgPSBcCi0gbGliZ3N0c21vb3Roc3RyZWFtaW5nX2xhX0xERkxBR1MgPSAke0dTVF9QTFVHSU5fTERGTEFHU30KLSBsaWJnc3RzbW9vdGhzdHJlYW1pbmdfbGFfU09VUkNFUyA9IGdzdHNtb290aHN0cmVhbWluZy1wbHVnaW4uYyBcCi0gCWdzdG1zc2RlbXV4LmMgXAotKwlnc3Rtc3NmcmFnbWVudHBhcnNlci5jIFwKLSAJZ3N0bXNzbWFuaWZlc3QuYwotIGxpYmdzdHNtb290aHN0cmVhbWluZ19sYV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0YXRpYwotIAotIG5vaW5zdF9IRUFERVJTID0gZ3N0bXNzZGVtdXguaCBcCi0rCWdzdG1zc2ZyYWdtZW50cGFyc2VyLmggXAotIAlnc3Rtc3NtYW5pZmVzdC5oCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi1pbmRleCAxMmZiNDA0OTcuLjEyMGQ5YzIyYiAxMDA2NDQKLS0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguYwotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi1AQCAtMTM1LDExICsxMzUsMTggQEAgZ3N0X21zc19kZW11eF9zdHJlYW1fdXBkYXRlX2ZyYWdtZW50X2luZm8gKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOwotIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXNzX2RlbXV4X3NlZWsgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwgR3N0RXZlbnQgKiBzZWVrKTsKLSBzdGF0aWMgZ2ludDY0Ci0gZ3N0X21zc19kZW11eF9nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwotK3N0YXRpYyBnaW50NjQKLStnc3RfbXNzX2RlbXV4X3N0cmVhbV9nZXRfZnJhZ21lbnRfd2FpdGluZ190aW1lIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKLSsgICAgc3RyZWFtKTsKLSBzdGF0aWMgR3N0Rmxvd1JldHVybgotIGdzdF9tc3NfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGEgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgICAgR3N0QnVmZmVyICogYnVmZmVyKTsKLSBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0gICAgIGdpbnQ2NCAqIHN0YXJ0LCBnaW50NjQgKiBzdG9wKTsKLStzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfbXNzX2RlbXV4X2RhdGFfcmVjZWl2ZWQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSsgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0QnVmZmVyICogYnVmZmVyKTsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfbXNzX2RlbXV4X3JlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwotIAotIHN0YXRpYyB2b2lkCi0gZ3N0X21zc19kZW11eF9jbGFzc19pbml0IChHc3RNc3NEZW11eENsYXNzICoga2xhc3MpCi1AQCAtMTkyLDEwICsxOTksMTUgQEAgZ3N0X21zc19kZW11eF9jbGFzc19pbml0IChHc3RNc3NEZW11eENsYXNzICoga2xhc3MpCi0gICAgICAgZ3N0X21zc19kZW11eF9zdHJlYW1fc2VsZWN0X2JpdHJhdGU7Ci0gICBnc3RhZGFwdGl2ZWRlbXV4X2NsYXNzLT5zdHJlYW1fdXBkYXRlX2ZyYWdtZW50X2luZm8gPQotICAgICAgIGdzdF9tc3NfZGVtdXhfc3RyZWFtX3VwZGF0ZV9mcmFnbWVudF9pbmZvOwotKyAgZ3N0YWRhcHRpdmVkZW11eF9jbGFzcy0+c3RyZWFtX2dldF9mcmFnbWVudF93YWl0aW5nX3RpbWUgPQotKyAgICAgIGdzdF9tc3NfZGVtdXhfc3RyZWFtX2dldF9mcmFnbWVudF93YWl0aW5nX3RpbWU7Ci0gICBnc3RhZGFwdGl2ZWRlbXV4X2NsYXNzLT51cGRhdGVfbWFuaWZlc3RfZGF0YSA9Ci0gICAgICAgZ3N0X21zc19kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YTsKLSAgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPmdldF9saXZlX3NlZWtfcmFuZ2UgPQotICAgICAgIGdzdF9tc3NfZGVtdXhfZ2V0X2xpdmVfc2Vla19yYW5nZTsKLSsgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPmRhdGFfcmVjZWl2ZWQgPSBnc3RfbXNzX2RlbXV4X2RhdGFfcmVjZWl2ZWQ7Ci0rICBnc3RhZGFwdGl2ZWRlbXV4X2NsYXNzLT5yZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZSA9Ci0rICAgICAgZ3N0X21zc19kZW11eF9yZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZTsKLSAKLSAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChtc3NkZW11eF9kZWJ1ZywgIm1zc2RlbXV4IiwgMCwgIm1zc2RlbXV4IHBsdWdpbiIpOwotIH0KLUBAIC02NTAsNiArNjYyLDEzIEBAIGdzdF9tc3NfZGVtdXhfZ2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQotICAgcmV0dXJuIGludGVydmFsOwotIH0KLSAKLStzdGF0aWMgZ2ludDY0Ci0rZ3N0X21zc19kZW11eF9zdHJlYW1fZ2V0X2ZyYWdtZW50X3dhaXRpbmdfdGltZSAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKLSt7Ci0rICAvKiBXYWl0IGEgc2Vjb25kIGZvciBsaXZlIHN0cmVhbXMgc28gd2UgZG9uJ3QgdHJ5IHByZW1hdHVyZSBmcmFnbWVudHMgZG93bmxvYWRpbmcgKi8KLSsgIHJldHVybiBHU1RfU0VDT05EOwotK30KLSsKLSBzdGF0aWMgR3N0Rmxvd1JldHVybgotIGdzdF9tc3NfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGEgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgICAgR3N0QnVmZmVyICogYnVmZmVyKQotQEAgLTY3MCwzICs2ODksNDQgQEAgZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsIGdpbnQ2NCAqIHN0YXJ0LAotIAotICAgcmV0dXJuIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2xpdmVfc2Vla19yYW5nZSAobXNzZGVtdXgtPm1hbmlmZXN0LCBzdGFydCwgc3RvcCk7Ci0gfQotKwotK3N0YXRpYyBHc3RGbG93UmV0dXJuCi0rZ3N0X21zc19kZW11eF9kYXRhX3JlY2VpdmVkIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0rICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLSt7Ci0rICBHc3RNc3NEZW11eCAqbXNzZGVtdXggPSBHU1RfTVNTX0RFTVVYX0NBU1QgKGRlbXV4KTsKLSsgIEdzdE1zc0RlbXV4U3RyZWFtICptc3NzdHJlYW0gPSAoR3N0TXNzRGVtdXhTdHJlYW0gKikgc3RyZWFtOwotKyAgZ3NpemUgYXZhaWxhYmxlOwotKwotKyAgaWYgKCFnc3RfbXNzX21hbmlmZXN0X2lzX2xpdmUgKG1zc2RlbXV4LT5tYW5pZmVzdCkpIHsKLSsgICAgcmV0dXJuIEdTVF9BREFQVElWRV9ERU1VWF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGF0YV9yZWNlaXZlZCAoZGVtdXgsCi0rICAgICAgICBzdHJlYW0sIGJ1ZmZlcik7Ci0rICB9Ci0rCi0rICBpZiAoZ3N0X21zc19zdHJlYW1fZnJhZ21lbnRfcGFyc2luZ19uZWVkZWQgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtKSkgewotKyAgICBnc3RfbXNzX21hbmlmZXN0X2xpdmVfYWRhcHRlcl9wdXNoIChtc3NzdHJlYW0tPm1hbmlmZXN0X3N0cmVhbSwgYnVmZmVyKTsKLSsgICAgYXZhaWxhYmxlID0KLSsgICAgICAgIGdzdF9tc3NfbWFuaWZlc3RfbGl2ZV9hZGFwdGVyX2F2YWlsYWJsZSAobXNzc3RyZWFtLT5tYW5pZmVzdF9zdHJlYW0pOwotKyAgICAvLyBGSVhNRTogdHJ5IHRvIHJlZHVjZSB0aGlzIG1pbmltYWwgc2l6ZS4KLSsgICAgaWYgKGF2YWlsYWJsZSA8IDQwOTYpIHsKLSsgICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgR1NUX0xPR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiZW5vdWdoIGRhdGEsIHBhcnNpbmcgZnJhZ21lbnQuIik7Ci0rICAgICAgYnVmZmVyID0KLSsgICAgICAgICAgZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfdGFrZV9idWZmZXIgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtLAotKyAgICAgICAgICBhdmFpbGFibGUpOwotKyAgICAgIGdzdF9tc3Nfc3RyZWFtX3BhcnNlX2ZyYWdtZW50IChtc3NzdHJlYW0tPm1hbmlmZXN0X3N0cmVhbSwgYnVmZmVyKTsKLSsgICAgfQotKyAgfQotKwotKyAgcmV0dXJuIEdTVF9BREFQVElWRV9ERU1VWF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGF0YV9yZWNlaXZlZCAoZGVtdXgsIHN0cmVhbSwKLSsgICAgICBidWZmZXIpOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfbXNzX2RlbXV4X3JlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCi0rewotKyAgR3N0TXNzRGVtdXggKm1zc2RlbXV4ID0gR1NUX01TU19ERU1VWF9DQVNUIChkZW11eCk7Ci0rCi0rICByZXR1cm4gKCFnc3RfbXNzX21hbmlmZXN0X2lzX2xpdmUgKG1zc2RlbXV4LT5tYW5pZmVzdCkpOwotK30KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2ZyYWdtZW50cGFyc2VyLmMgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2ZyYWdtZW50cGFyc2VyLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmI1NTRkNGYzMQotLS0tIC9kZXYvbnVsbAotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5jCi1AQCAtMCwwICsxLDI2NiBAQAotKy8qCi0rICogTWljcm9zb2Z0IFNtb290aC1TdHJlYW1pbmcgZnJhZ21lbnQgcGFyc2luZyBsaWJyYXJ5Ci0rICoKLSsgKiBnc3Rtc3NmcmFnbWVudHBhcnNlci5oCi0rICoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTAotKyAqIENvcHlyaWdodCAoQykgMjAxNiBNZXRyb2xvZ2ljYWwKLSsgKiAgIEF1dGhvcjogUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5IChDT1BZSU5HKTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsgKi8KLSsKLSsjaW5jbHVkZSAiZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCIKLSsjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLStHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChtc3NkZW11eF9kZWJ1Zyk7Ci0rI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgbXNzZGVtdXhfZGVidWcKLSsKLSt2b2lkCi0rZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfaW5pdCAoR3N0TXNzRnJhZ21lbnRQYXJzZXIgKiBwYXJzZXIpCi0rewotKyAgcGFyc2VyLT5zdGF0dXMgPSBHU1RfTVNTX0ZSQUdNRU5UX0hFQURFUl9QQVJTRVJfSU5JVDsKLSsgIHBhcnNlci0+dGZyZi5lbnRyaWVzX2NvdW50ID0gMDsKLSt9Ci0rCi0rdm9pZAotK2dzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2NsZWFyIChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlcikKLSt7Ci0rICBwYXJzZXItPnRmcmYuZW50cmllc19jb3VudCA9IDA7Ci0rICBpZiAocGFyc2VyLT50ZnJmLmVudHJpZXMpIHsKLSsgICAgZ19mcmVlIChwYXJzZXItPnRmcmYuZW50cmllcyk7Ci0rICAgIHBhcnNlci0+dGZyZi5lbnRyaWVzID0gMDsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rX3BhcnNlX3RmcmZfYm94IChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlciwgR3N0Qnl0ZVJlYWRlciAqIHJlYWRlcikKLSt7Ci0rICBndWludDggdmVyc2lvbjsKLSsgIGd1aW50MzIgZmxhZ3MgPSAwOwotKyAgZ3VpbnQ4IGZyYWdtZW50X2NvdW50ID0gMDsKLSsgIGd1aW50OCBpbmRleCA9IDA7Ci0rCi0rICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDggKHJlYWRlciwgJnZlcnNpb24pKSB7Ci0rICAgIEdTVF9FUlJPUiAoIkVycm9yIGdldHRpbmcgYm94J3MgdmVyc2lvbiBmaWVsZCIpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDI0X2JlIChyZWFkZXIsICZmbGFncykpIHsKLSsgICAgR1NUX0VSUk9SICgiRXJyb3IgZ2V0dGluZyBib3gncyBmbGFncyBmaWVsZCIpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ4IChyZWFkZXIsICZmcmFnbWVudF9jb3VudCk7Ci0rICBwYXJzZXItPnRmcmYuZW50cmllc19jb3VudCA9IGZyYWdtZW50X2NvdW50OwotKyAgcGFyc2VyLT50ZnJmLmVudHJpZXMgPQotKyAgICAgIGdfbWFsbG9jIChzaXplb2YgKEdzdFRmcmZCb3hFbnRyeSkgKiBwYXJzZXItPnRmcmYuZW50cmllc19jb3VudCk7Ci0rICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBmcmFnbWVudF9jb3VudDsgaW5kZXgrKykgewotKyAgICBndWludDY0IGFic29sdXRlX3RpbWUgPSAwOwotKyAgICBndWludDY0IGFic29sdXRlX2R1cmF0aW9uID0gMDsKLSsgICAgaWYgKHZlcnNpb24gJiAweDAxKSB7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50NjRfYmUgKHJlYWRlciwgJmFic29sdXRlX3RpbWUpOwotKyAgICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDY0X2JlIChyZWFkZXIsICZhYnNvbHV0ZV9kdXJhdGlvbik7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgZ3VpbnQzMiB0aW1lID0gMDsKLSsgICAgICBndWludDMyIGR1cmF0aW9uID0gMDsKLSsgICAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZSAocmVhZGVyLCAmdGltZSk7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmUgKHJlYWRlciwgJmR1cmF0aW9uKTsKLSsgICAgICB0aW1lID0gfnRpbWU7Ci0rICAgICAgZHVyYXRpb24gPSB+ZHVyYXRpb247Ci0rICAgICAgYWJzb2x1dGVfdGltZSA9IH50aW1lOwotKyAgICAgIGFic29sdXRlX2R1cmF0aW9uID0gfmR1cmF0aW9uOwotKyAgICB9Ci0rICAgIHBhcnNlci0+dGZyZi5lbnRyaWVzW2luZGV4XS50aW1lID0gYWJzb2x1dGVfdGltZTsKLSsgICAgcGFyc2VyLT50ZnJmLmVudHJpZXNbaW5kZXhdLmR1cmF0aW9uID0gYWJzb2x1dGVfZHVyYXRpb247Ci0rICB9Ci0rCi0rICBHU1RfTE9HICgidGZyZiBib3ggcGFyc2VkIik7Ci0rICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rX3BhcnNlX3RmeGRfYm94IChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlciwgR3N0Qnl0ZVJlYWRlciAqIHJlYWRlcikKLSt7Ci0rICBndWludDggdmVyc2lvbjsKLSsgIGd1aW50MzIgZmxhZ3MgPSAwOwotKyAgZ3VpbnQ2NCBhYnNvbHV0ZV90aW1lID0gMDsKLSsgIGd1aW50NjQgYWJzb2x1dGVfZHVyYXRpb24gPSAwOwotKwotKyAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ4IChyZWFkZXIsICZ2ZXJzaW9uKSkgewotKyAgICBHU1RfRVJST1IgKCJFcnJvciBnZXR0aW5nIGJveCdzIHZlcnNpb24gZmllbGQiKTsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotKwotKyAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQyNF9iZSAocmVhZGVyLCAmZmxhZ3MpKSB7Ci0rICAgIEdTVF9FUlJPUiAoIkVycm9yIGdldHRpbmcgYm94J3MgZmxhZ3MgZmllbGQiKTsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotKwotKyAgaWYgKHZlcnNpb24gJiAweDAxKSB7Ci0rICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDY0X2JlIChyZWFkZXIsICZhYnNvbHV0ZV90aW1lKTsKLSsgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50NjRfYmUgKHJlYWRlciwgJmFic29sdXRlX2R1cmF0aW9uKTsKLSsgIH0gZWxzZSB7Ci0rICAgIGd1aW50MzIgdGltZSA9IDA7Ci0rICAgIGd1aW50MzIgZHVyYXRpb24gPSAwOwotKyAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZSAocmVhZGVyLCAmdGltZSk7Ci0rICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2JlIChyZWFkZXIsICZkdXJhdGlvbik7Ci0rICAgIHRpbWUgPSB+dGltZTsKLSsgICAgZHVyYXRpb24gPSB+ZHVyYXRpb247Ci0rICAgIGFic29sdXRlX3RpbWUgPSB+dGltZTsKLSsgICAgYWJzb2x1dGVfZHVyYXRpb24gPSB+ZHVyYXRpb247Ci0rICB9Ci0rCi0rICBwYXJzZXItPnRmeGQudGltZSA9IGFic29sdXRlX3RpbWU7Ci0rICBwYXJzZXItPnRmeGQuZHVyYXRpb24gPSBhYnNvbHV0ZV9kdXJhdGlvbjsKLSsgIEdTVF9MT0cgKCJ0ZnhkIGJveCBwYXJzZWQiKTsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLStnYm9vbGVhbgotK2dzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2FkZF9idWZmZXIgKEdzdE1zc0ZyYWdtZW50UGFyc2VyICogcGFyc2VyLAotKyAgICBHc3RCdWZmZXIgKiBidWZmZXIpCi0rewotKyAgR3N0Qnl0ZVJlYWRlciByZWFkZXI7Ci0rICBHc3RNYXBJbmZvIGluZm87Ci0rICBndWludDMyIHNpemU7Ci0rICBndWludDMyIGZvdXJjYzsKLSsgIGNvbnN0IGd1aW50OCAqdXVpZDsKLSsgIGdib29sZWFuIGVycm9yID0gRkFMU0U7Ci0rICBnYm9vbGVhbiBtZGF0X2JveF9mb3VuZCA9IEZBTFNFOwotKwotKyAgc3RhdGljIGNvbnN0IGd1aW50OCB0ZnJmX3V1aWRbXSA9IHsKLSsgICAgMHhkNCwgMHg4MCwgMHg3ZSwgMHhmMiwgMHhjYSwgMHgzOSwgMHg0NiwgMHg5NSwKLSsgICAgMHg4ZSwgMHg1NCwgMHgyNiwgMHhjYiwgMHg5ZSwgMHg0NiwgMHhhNywgMHg5ZgotKyAgfTsKLSsKLSsgIHN0YXRpYyBjb25zdCBndWludDggdGZ4ZF91dWlkW10gPSB7Ci0rICAgIDB4NmQsIDB4MWQsIDB4OWIsIDB4MDUsIDB4NDIsIDB4ZDUsIDB4NDQsIDB4ZTYsCi0rICAgIDB4ODAsIDB4ZTIsIDB4MTQsIDB4MWQsIDB4YWYsIDB4ZjcsIDB4NTcsIDB4YjIKLSsgIH07Ci0rCi0rICBzdGF0aWMgY29uc3QgZ3VpbnQ4IHBpZmZfdXVpZFtdID0gewotKyAgICAweGEyLCAweDM5LCAweDRmLCAweDUyLCAweDVhLCAweDliLCAweDRmLCAweDE0LAotKyAgICAweGEyLCAweDQ0LCAweDZjLCAweDQyLCAweDdjLCAweDY0LCAweDhkLCAweGY0Ci0rICB9OwotKwotKyAgaWYgKCFnc3RfYnVmZmVyX21hcCAoYnVmZmVyLCAmaW5mbywgR1NUX01BUF9SRUFEKSkgewotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICBnc3RfYnl0ZV9yZWFkZXJfaW5pdCAoJnJlYWRlciwgaW5mby5kYXRhLCBpbmZvLnNpemUpOwotKyAgR1NUX1RSQUNFICgiVG90YWwgYnVmZmVyIHNpemU6ICV1IiwgZ3N0X2J5dGVfcmVhZGVyX2dldF9zaXplICgmcmVhZGVyKSk7Ci0rCi0rICBzaXplID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICBpZiAoZm91cmNjID09IEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01PT0YpIHsKLSsgICAgR1NUX1RSQUNFICgibW9vZiBib3ggZm91bmQiKTsKLSsgICAgc2l6ZSA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgIGlmIChmb3VyY2MgPT0gR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfTUZIRCkgewotKyAgICAgIGdzdF9ieXRlX3JlYWRlcl9za2lwX3VuY2hlY2tlZCAoJnJlYWRlciwgc2l6ZSAtIDgpOwotKwotKyAgICAgIHNpemUgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZyZWFkZXIpOwotKyAgICAgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgICAgaWYgKGZvdXJjYyA9PSBHU1RfTVNTX0ZSQUdNRU5UX0ZPVVJDQ19UUkFGKSB7Ci0rICAgICAgICBzaXplID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgICAgICAgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgICAgICBpZiAoZm91cmNjID09IEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RGSEQpIHsKLSsgICAgICAgICAgZ3N0X2J5dGVfcmVhZGVyX3NraXBfdW5jaGVja2VkICgmcmVhZGVyLCBzaXplIC0gOCk7Ci0rCi0rICAgICAgICAgIHNpemUgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZyZWFkZXIpOwotKyAgICAgICAgICBmb3VyY2MgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9sZV91bmNoZWNrZWQgKCZyZWFkZXIpOwotKyAgICAgICAgICBpZiAoZm91cmNjID09IEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RSVU4pIHsKLSsgICAgICAgICAgICBHU1RfVFJBQ0UgKCJ0cnVuIGJveCBmb3VuZCwgc2l6ZTogJSIgR19HVUlOVDMyX0ZPUk1BVCwgc2l6ZSk7Ci0rICAgICAgICAgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfc2tpcCAoJnJlYWRlciwgc2l6ZSAtIDgpKSB7Ci0rICAgICAgICAgICAgICBHU1RfV0FSTklORyAoIkZhaWxlZCB0byBza2lwIHRydW4gYm94LCBlbm91Z2ggZGF0YT8iKTsKLSsgICAgICAgICAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICAgICAgICAgIGdvdG8gYmVhY2g7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rCi0rICB3aGlsZSAoIW1kYXRfYm94X2ZvdW5kKSB7Ci0rICAgIEdTVF9UUkFDRSAoInJlbWFpbmluZyBkYXRhOiAldSIsIGdzdF9ieXRlX3JlYWRlcl9nZXRfcmVtYWluaW5nICgmcmVhZGVyKSk7Ci0rICAgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmUgKCZyZWFkZXIsICZzaXplKSkgewotKyAgICAgIEdTVF9XQVJOSU5HICgiRmFpbGVkIHRvIGdldCBib3ggc2l6ZSwgZW5vdWdoIGRhdGE/Iik7Ci0rICAgICAgZXJyb3IgPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIEdTVF9UUkFDRSAoImJveCBzaXplOiAlIiBHX0dVSU5UMzJfRk9STUFULCBzaXplKTsKLSsgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9sZSAoJnJlYWRlciwgJmZvdXJjYykpIHsKLSsgICAgICBHU1RfV0FSTklORyAoIkZhaWxlZCB0byBnZXQgZm91cmNjLCBlbm91Z2ggZGF0YT8iKTsKLSsgICAgICBlcnJvciA9IFRSVUU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGZvdXJjYyA9PSBHU1RfTVNTX0ZSQUdNRU5UX0ZPVVJDQ19NREFUKSB7Ci0rICAgICAgR1NUX0xPRyAoIm1kYXQgYm94IGZvdW5kIik7Ci0rICAgICAgbWRhdF9ib3hfZm91bmQgPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIGlmIChmb3VyY2MgIT0gR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfVVVJRCkgewotKyAgICAgIEdTVF9FUlJPUiAoImludmFsaWQgVVVJRCBmb3VyY2M6ICUiIEdTVF9GT1VSQ0NfRk9STUFULAotKyAgICAgICAgICBHU1RfRk9VUkNDX0FSR1MgKGZvdXJjYykpOwotKyAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9wZWVrX2RhdGEgKCZyZWFkZXIsIDE2LCAmdXVpZCkpIHsKLSsgICAgICBHU1RfRVJST1IgKCJub3QgZW5vdWdoIGRhdGEgaW4gVVVJRCBib3giKTsKLSsgICAgICBlcnJvciA9IFRSVUU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgaWYgKG1lbWNtcCAodXVpZCwgcGlmZl91dWlkLCAxNikgPT0gMCkgewotKyAgICAgIGdzdF9ieXRlX3JlYWRlcl9za2lwX3VuY2hlY2tlZCAoJnJlYWRlciwgc2l6ZSAtIDgpOwotKyAgICAgIEdTVF9MT0cgKCJwaWZmIGJveCBkZXRlY3RlZCIpOwotKyAgICB9Ci0rCi0rICAgIGlmIChtZW1jbXAgKHV1aWQsIHRmcmZfdXVpZCwgMTYpID09IDApIHsKLSsgICAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X2RhdGEgKCZyZWFkZXIsIDE2LCAmdXVpZCk7Ci0rICAgICAgaWYgKCFfcGFyc2VfdGZyZl9ib3ggKHBhcnNlciwgJnJlYWRlcikpIHsKLSsgICAgICAgIEdTVF9FUlJPUiAoInR4cmYgYm94IHBhcnNpbmcgZXJyb3IiKTsKLSsgICAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKwotKyAgICBpZiAobWVtY21wICh1dWlkLCB0ZnhkX3V1aWQsIDE2KSA9PSAwKSB7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF9kYXRhICgmcmVhZGVyLCAxNiwgJnV1aWQpOwotKyAgICAgIGlmICghX3BhcnNlX3RmeGRfYm94IChwYXJzZXIsICZyZWFkZXIpKSB7Ci0rICAgICAgICBHU1RfRVJST1IgKCJ0ZnJmIGJveCBwYXJzaW5nIGVycm9yIik7Ci0rICAgICAgICBlcnJvciA9IFRSVUU7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsKLStiZWFjaDoKLSsKLSsgIGlmICghZXJyb3IpCi0rICAgIHBhcnNlci0+c3RhdHVzID0gR1NUX01TU19GUkFHTUVOVF9IRUFERVJfUEFSU0VSX0ZJTklTSEVEOwotKwotKyAgR1NUX0xPRyAoIkZyYWdtZW50IHBhcnNpbmcgc3VjY2Vzc2Z1bDogJXMiLCBlcnJvciA/ICJubyIgOiAieWVzIik7Ci0rICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZpbmZvKTsKLSsgIHJldHVybiAhZXJyb3I7Ci0rfQotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uY2Y0NzExODY1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2ZyYWdtZW50cGFyc2VyLmgKLUBAIC0wLDAgKzEsODQgQEAKLSsvKgotKyAqIE1pY3Jvc29mdCBTbW9vdGgtU3RyZWFtaW5nIGZyYWdtZW50IHBhcnNpbmcgbGlicmFyeQotKyAqCi0rICogZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaAotKyAqCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWV0cm9sb2dpY2FsCi0rICogICBBdXRob3I6IFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+Ci0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeSAoQ09QWUlORyk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0rICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rICovCi0rCi0rI2lmbmRlZiBfX0dTVF9NU1NfRlJBR01FTlRfUEFSU0VSX0hfXwotKyNkZWZpbmUgX19HU1RfTVNTX0ZSQUdNRU5UX1BBUlNFUl9IX18KLSsKLSsjaW5jbHVkZSA8Z3N0L2dzdC5oPgotKwotK0dfQkVHSU5fREVDTFMKLSsKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01PT0YgR1NUX01BS0VfRk9VUkNDKCdtJywnbycsJ28nLCdmJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01GSEQgR1NUX01BS0VfRk9VUkNDKCdtJywnZicsJ2gnLCdkJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RSQUYgR1NUX01BS0VfRk9VUkNDKCd0JywncicsJ2EnLCdmJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RGSEQgR1NUX01BS0VfRk9VUkNDKCd0JywnZicsJ2gnLCdkJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RSVU4gR1NUX01BS0VfRk9VUkNDKCd0JywncicsJ3UnLCduJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1VVSUQgR1NUX01BS0VfRk9VUkNDKCd1JywndScsJ2knLCdkJykKLSsjZGVmaW5lIEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01EQVQgR1NUX01BS0VfRk9VUkNDKCdtJywnZCcsJ2EnLCd0JykKLSsKLSt0eXBlZGVmIHN0cnVjdCBfR3N0VGZ4ZEJveAotK3sKLSsgIGd1aW50OCB2ZXJzaW9uOwotKyAgZ3VpbnQzMiBmbGFnczsKLSsKLSsgIGd1aW50NjQgdGltZTsKLSsgIGd1aW50NjQgZHVyYXRpb247Ci0rfSBHc3RUZnhkQm94OwotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RUZnJmQm94RW50cnkKLSt7Ci0rICBndWludDY0IHRpbWU7Ci0rICBndWludDY0IGR1cmF0aW9uOwotK30gR3N0VGZyZkJveEVudHJ5OwotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RUZnJmQm94Ci0rewotKyAgZ3VpbnQ4IHZlcnNpb247Ci0rICBndWludDMyIGZsYWdzOwotKwotKyAgZ2ludCBlbnRyaWVzX2NvdW50OwotKyAgR3N0VGZyZkJveEVudHJ5ICplbnRyaWVzOwotK30gR3N0VGZyZkJveDsKLSsKLSt0eXBlZGVmIGVudW0gX0dzdEZyYWdtZW50SGVhZGVyUGFyc2VyU3RhdHVzCi0rewotKyAgR1NUX01TU19GUkFHTUVOVF9IRUFERVJfUEFSU0VSX0lOSVQsCi0rICBHU1RfTVNTX0ZSQUdNRU5UX0hFQURFUl9QQVJTRVJfRklOSVNIRUQKLSt9IEdzdEZyYWdtZW50SGVhZGVyUGFyc2VyU3RhdHVzOwotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RNc3NGcmFnbWVudFBhcnNlcgotK3sKLSsgIEdzdEZyYWdtZW50SGVhZGVyUGFyc2VyU3RhdHVzIHN0YXR1czsKLSsgIEdzdFRmeGRCb3ggdGZ4ZDsKLSsgIEdzdFRmcmZCb3ggdGZyZjsKLSt9IEdzdE1zc0ZyYWdtZW50UGFyc2VyOwotKwotK3ZvaWQgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfaW5pdCAoR3N0TXNzRnJhZ21lbnRQYXJzZXIgKiBwYXJzZXIpOwotK3ZvaWQgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfY2xlYXIgKEdzdE1zc0ZyYWdtZW50UGFyc2VyICogcGFyc2VyKTsKLStnYm9vbGVhbiBnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9hZGRfYnVmZmVyIChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlciwgR3N0QnVmZmVyICogYnVmKTsKLSsKLStHX0VORF9ERUNMUwotKwotKyNlbmRpZiAvKiBfX0dTVF9NU1NfRlJBR01FTlRfUEFSU0VSX0hfXyAqLwotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotaW5kZXggMTQ0YmJiNDJkLi5lMTAzMWJhNTUgMTAwNjQ0Ci0tLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLSsrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotQEAgLTEsNSArMSw3IEBACi0gLyogR1N0cmVhbWVyCi0gICogQ29weXJpZ2h0IChDKSAyMDEyIFNtYXJ0IFRWIEFsbGlhbmNlCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWV0cm9sb2dpY2FsCi0gICogIEF1dGhvcjogVGhpYWdvIFNvdXNhIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY29tPiwgQ29sbGFib3JhIEx0ZC4KLSAgKgotICAqIGdzdG1zc21hbmlmZXN0LmM6Ci1AQCAtMzEsNiArMzMsNyBAQAotICNpbmNsdWRlIDxnc3QvY29kZWNwYXJzZXJzL2dzdGgyNjRwYXJzZXIuaD4KLSAKLSAjaW5jbHVkZSAiZ3N0bXNzbWFuaWZlc3QuaCIKLSsjaW5jbHVkZSAiZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCIKLSAKLSBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChtc3NkZW11eF9kZWJ1Zyk7Ci0gI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgbXNzZGVtdXhfZGVidWcKLUBAIC03NCwxMiArNzcsMTcgQEAgc3RydWN0IF9Hc3RNc3NTdHJlYW0KLSAgIGdib29sZWFuIGFjdGl2ZTsgICAgICAgICAgICAgIC8qIGlmIHRoZSBzdHJlYW0gaXMgY3VycmVudGx5IGJlaW5nIHVzZWQgKi8KLSAgIGdpbnQgc2VsZWN0ZWRRdWFsaXR5SW5kZXg7Ci0gCi0rICBnYm9vbGVhbiBoYXNfbGl2ZV9mcmFnbWVudHM7Ci0rICBHc3RBZGFwdGVyICpsaXZlX2FkYXB0ZXI7Ci0rCi0gICBHTGlzdCAqZnJhZ21lbnRzOwotICAgR0xpc3QgKnF1YWxpdGllczsKLSAKLSAgIGdjaGFyICp1cmw7Ci0gICBnY2hhciAqbGFuZzsKLSAKLSsgIEdzdE1zc0ZyYWdtZW50UGFyc2VyIGZyYWdtZW50X3BhcnNlcjsKLSsKLSAgIGd1aW50IGZyYWdtZW50X3JlcGV0aXRpb25faW5kZXg7Ci0gICBHTGlzdCAqY3VycmVudF9mcmFnbWVudDsKLSAgIEdMaXN0ICpjdXJyZW50X3F1YWxpdHk7Ci1AQCAtOTYsNiArMTA0LDcgQEAgc3RydWN0IF9Hc3RNc3NNYW5pZmVzdAotIAotICAgZ2Jvb2xlYW4gaXNfbGl2ZTsKLSAgIGdpbnQ2NCBkdnJfd2luZG93OwotKyAgZ3VpbnQ2NCBsb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50OwotIAotICAgR1N0cmluZyAqcHJvdGVjdGlvbl9zeXN0ZW1faWQ7Ci0gICBnY2hhciAqcHJvdGVjdGlvbl9kYXRhOwotQEAgLTIzNSw3ICsyNDQsOCBAQCBjb21wYXJlX2JpdHJhdGUgKEdzdE1zc1N0cmVhbVF1YWxpdHkgKiBhLCBHc3RNc3NTdHJlYW1RdWFsaXR5ICogYikKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1fZ3N0X21zc19zdHJlYW1faW5pdCAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCB4bWxOb2RlUHRyIG5vZGUpCi0rX2dzdF9tc3Nfc3RyZWFtX2luaXQgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsIEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwKLSsgICAgeG1sTm9kZVB0ciBub2RlKQotIHsKLSAgIHhtbE5vZGVQdHIgaXRlcjsKLSAgIEdzdE1zc0ZyYWdtZW50TGlzdEJ1aWxkZXIgYnVpbGRlcjsKLUBAIC0yNDgsOSArMjU4LDIxIEBAIF9nc3RfbXNzX3N0cmVhbV9pbml0IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIHhtbE5vZGVQdHIgbm9kZSkKLSAgIHN0cmVhbS0+dXJsID0gKGdjaGFyICopIHhtbEdldFByb3AgKG5vZGUsICh4bWxDaGFyICopIE1TU19QUk9QX1VSTCk7Ci0gICBzdHJlYW0tPmxhbmcgPSAoZ2NoYXIgKikgeG1sR2V0UHJvcCAobm9kZSwgKHhtbENoYXIgKikgTVNTX1BST1BfTEFOR1VBR0UpOwotIAotKyAgLyogZm9yIGxpdmUgcGxheWJhY2sgZWFjaCBmcmFnbWVudCB1c3VhbGx5IGhhcyB0aW1pbmcKLSsgICAqIGluZm9ybWF0aW9uIGZvciB0aGUgZmV3IG5leHQgbG9vay1haGVhZCBmcmFnbWVudHMgc28gdGhlCi0rICAgKiBwbGF5bGlzdCBjYW4gYmUgYnVpbHQgaW5jcmVtZW50YWxseSBmcm9tIHRoZSBmaXJzdCBmcmFnbWVudAotKyAgICogb2YgdGhlIG1hbmlmZXN0LgotKyAgICovCi0rCi0rICBHU1RfREVCVUcgKCJMaXZlIHN0cmVhbTogJXMsIGxvb2stYWhlYWQgZnJhZ21lbnRzOiAlIiBHX0dVSU5UNjRfRk9STUFULAotKyAgICAgIG1hbmlmZXN0LT5pc19saXZlID8gInllcyIgOiAibm8iLCBtYW5pZmVzdC0+bG9va19haGVhZF9mcmFnbWVudF9jb3VudCk7Ci0rICBzdHJlYW0tPmhhc19saXZlX2ZyYWdtZW50cyA9IG1hbmlmZXN0LT5pc19saXZlCi0rICAgICAgJiYgbWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQ7Ci0rCi0gICBmb3IgKGl0ZXIgPSBub2RlLT5jaGlsZHJlbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpIHsKLSAgICAgaWYgKG5vZGVfaGFzX3R5cGUgKGl0ZXIsIE1TU19OT0RFX1NUUkVBTV9GUkFHTUVOVCkpIHsKLS0gICAgICBnc3RfbXNzX2ZyYWdtZW50X2xpc3RfYnVpbGRlcl9hZGQgKCZidWlsZGVyLCBpdGVyKTsKLSsgICAgICBpZiAoIXN0cmVhbS0+aGFzX2xpdmVfZnJhZ21lbnRzIHx8ICFidWlsZGVyLmZyYWdtZW50cykKLSsgICAgICAgIGdzdF9tc3NfZnJhZ21lbnRfbGlzdF9idWlsZGVyX2FkZCAoJmJ1aWxkZXIsIGl0ZXIpOwotICAgICB9IGVsc2UgaWYgKG5vZGVfaGFzX3R5cGUgKGl0ZXIsIE1TU19OT0RFX1NUUkVBTV9RVUFMSVRZKSkgewotICAgICAgIEdzdE1zc1N0cmVhbVF1YWxpdHkgKnF1YWxpdHkgPSBnc3RfbXNzX3N0cmVhbV9xdWFsaXR5X25ldyAoaXRlcik7Ci0gICAgICAgc3RyZWFtLT5xdWFsaXRpZXMgPSBnX2xpc3RfcHJlcGVuZCAoc3RyZWFtLT5xdWFsaXRpZXMsIHF1YWxpdHkpOwotQEAgLTI1OSwxNyArMjgxLDI0IEBAIF9nc3RfbXNzX3N0cmVhbV9pbml0IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIHhtbE5vZGVQdHIgbm9kZSkKLSAgICAgfQotICAgfQotIAotLSAgc3RyZWFtLT5mcmFnbWVudHMgPSBnX2xpc3RfcmV2ZXJzZSAoYnVpbGRlci5mcmFnbWVudHMpOwotKyAgaWYgKHN0cmVhbS0+aGFzX2xpdmVfZnJhZ21lbnRzKSB7Ci0rICAgIHN0cmVhbS0+bGl2ZV9hZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3ICgpOwotKyAgfQotKwotKyAgaWYgKGJ1aWxkZXIuZnJhZ21lbnRzKSB7Ci0rICAgIHN0cmVhbS0+ZnJhZ21lbnRzID0gZ19saXN0X3JldmVyc2UgKGJ1aWxkZXIuZnJhZ21lbnRzKTsKLSsgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gc3RyZWFtLT5mcmFnbWVudHM7Ci0rICB9Ci0gCi0gICAvKiBvcmRlciB0aGVtIGZyb20gc21hbGxlciB0byBiaWdnZXIgYmFzZWQgb24gYml0cmF0ZXMgKi8KLSAgIHN0cmVhbS0+cXVhbGl0aWVzID0KLSAgICAgICBnX2xpc3Rfc29ydCAoc3RyZWFtLT5xdWFsaXRpZXMsIChHQ29tcGFyZUZ1bmMpIGNvbXBhcmVfYml0cmF0ZSk7Ci0tCi0tICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBzdHJlYW0tPmZyYWdtZW50czsKLSAgIHN0cmVhbS0+Y3VycmVudF9xdWFsaXR5ID0gc3RyZWFtLT5xdWFsaXRpZXM7Ci0gCi0gICBzdHJlYW0tPnJlZ2V4X2JpdHJhdGUgPSBnX3JlZ2V4X25ldyAoIlxce1tCYl1pdHJhdGVcXH0iLCAwLCAwLCBOVUxMKTsKLSAgIHN0cmVhbS0+cmVnZXhfcG9zaXRpb24gPSBnX3JlZ2V4X25ldyAoIlxce3N0YXJ0WyBfXXRpbWVcXH0iLCAwLCAwLCBOVUxMKTsKLSsKLSsgIGdzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2luaXQgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlcik7Ci0gfQotIAotIAotQEAgLTMxNSw2ICszNDQsNyBAQCBnc3RfbXNzX21hbmlmZXN0X25ldyAoR3N0QnVmZmVyICogZGF0YSkKLSAgIHhtbE5vZGVQdHIgbm9kZWl0ZXI7Ci0gICBnY2hhciAqbGl2ZV9zdHI7Ci0gICBHc3RNYXBJbmZvIG1hcGluZm87Ci0rICBnY2hhciAqbG9va19haGVhZF9mcmFnbWVudF9jb3VudF9zdHI7Ci0gCi0gICBpZiAoIWdzdF9idWZmZXJfbWFwIChkYXRhLCAmbWFwaW5mbywgR1NUX01BUF9SRUFEKSkgewotICAgICByZXR1cm4gTlVMTDsKLUBAIC0zMzUsNiArMzY1LDcgQEAgZ3N0X21zc19tYW5pZmVzdF9uZXcgKEdzdEJ1ZmZlciAqIGRhdGEpCi0gICAvKiB0aGUgZW50aXJlIGZpbGUgaXMgYWx3YXlzIGF2YWlsYWJsZSBmb3Igbm9uLWxpdmUgc3RyZWFtcyAqLwotICAgaWYgKCFtYW5pZmVzdC0+aXNfbGl2ZSkgewotICAgICBtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9IDA7Ci0rICAgIG1hbmlmZXN0LT5sb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50ID0gMDsKLSAgIH0gZWxzZSB7Ci0gICAgIC8qIGlmIDAsIG9yIG5vbi1leGlzdGVudCwgdGhlIGxlbmd0aCBpcyBpbmZpbml0ZSAqLwotICAgICBnY2hhciAqZHZyX3dpbmRvd19zdHIgPSAoZ2NoYXIgKikgeG1sR2V0UHJvcCAocm9vdCwKLUBAIC0zNDYsNiArMzc3LDE3IEBAIGdzdF9tc3NfbWFuaWZlc3RfbmV3IChHc3RCdWZmZXIgKiBkYXRhKQotICAgICAgICAgbWFuaWZlc3QtPmR2cl93aW5kb3cgPSAwOwotICAgICAgIH0KLSAgICAgfQotKwotKyAgICBsb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50X3N0ciA9Ci0rICAgICAgICAoZ2NoYXIgKikgeG1sR2V0UHJvcCAocm9vdCwgKHhtbENoYXIgKikgIkxvb2tBaGVhZEZyYWdtZW50Q291bnQiKTsKLSsgICAgaWYgKGxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnRfc3RyKSB7Ci0rICAgICAgbWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQgPQotKyAgICAgICAgICBnX2FzY2lpX3N0cnRvdWxsIChsb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50X3N0ciwgTlVMTCwgMTApOwotKyAgICAgIHhtbEZyZWUgKGxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnRfc3RyKTsKLSsgICAgICBpZiAobWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQgPD0gMCkgewotKyAgICAgICAgbWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQgPSAwOwotKyAgICAgIH0KLSsgICAgfQotICAgfQotIAotICAgZm9yIChub2RlaXRlciA9IHJvb3QtPmNoaWxkcmVuOyBub2RlaXRlcjsgbm9kZWl0ZXIgPSBub2RlaXRlci0+bmV4dCkgewotQEAgLTM1NCw3ICszOTYsNyBAQCBnc3RfbXNzX21hbmlmZXN0X25ldyAoR3N0QnVmZmVyICogZGF0YSkKLSAgICAgICBHc3RNc3NTdHJlYW0gKnN0cmVhbSA9IGdfbmV3MCAoR3N0TXNzU3RyZWFtLCAxKTsKLSAKLSAgICAgICBtYW5pZmVzdC0+c3RyZWFtcyA9IGdfc2xpc3RfYXBwZW5kIChtYW5pZmVzdC0+c3RyZWFtcywgc3RyZWFtKTsKLS0gICAgICBfZ3N0X21zc19zdHJlYW1faW5pdCAoc3RyZWFtLCBub2RlaXRlcik7Ci0rICAgICAgX2dzdF9tc3Nfc3RyZWFtX2luaXQgKG1hbmlmZXN0LCBzdHJlYW0sIG5vZGVpdGVyKTsKLSAgICAgfQotIAotICAgICBpZiAobm9kZWl0ZXItPnR5cGUgPT0gWE1MX0VMRU1FTlRfTk9ERQotQEAgLTM3MSw2ICs0MTMsMTEgQEAgZ3N0X21zc19tYW5pZmVzdF9uZXcgKEdzdEJ1ZmZlciAqIGRhdGEpCi0gc3RhdGljIHZvaWQKLSBnc3RfbXNzX3N0cmVhbV9mcmVlIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pCi0gewotKyAgaWYgKHN0cmVhbS0+bGl2ZV9hZGFwdGVyKSB7Ci0rICAgIGdzdF9hZGFwdGVyX2NsZWFyIChzdHJlYW0tPmxpdmVfYWRhcHRlcik7Ci0rICAgIGdfb2JqZWN0X3VucmVmIChzdHJlYW0tPmxpdmVfYWRhcHRlcik7Ci0rICB9Ci0rCi0gICBnX2xpc3RfZnJlZV9mdWxsIChzdHJlYW0tPmZyYWdtZW50cywgZ19mcmVlKTsKLSAgIGdfbGlzdF9mcmVlX2Z1bGwgKHN0cmVhbS0+cXVhbGl0aWVzLAotICAgICAgIChHRGVzdHJveU5vdGlmeSkgZ3N0X21zc19zdHJlYW1fcXVhbGl0eV9mcmVlKTsKLUBAIC0zNzksNiArNDI2LDcgQEAgZ3N0X21zc19zdHJlYW1fZnJlZSAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotICAgZ19yZWdleF91bnJlZiAoc3RyZWFtLT5yZWdleF9wb3NpdGlvbik7Ci0gICBnX3JlZ2V4X3VucmVmIChzdHJlYW0tPnJlZ2V4X2JpdHJhdGUpOwotICAgZ19mcmVlIChzdHJlYW0pOwotKyAgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfY2xlYXIgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlcik7Ci0gfQotIAotIHZvaWQKLUBAIC0xMDc5LDYgKzExMjcsOSBAQCBHc3RGbG93UmV0dXJuCi0gZ3N0X21zc19zdHJlYW1fYWR2YW5jZV9mcmFnbWVudCAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotIHsKLSAgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpmcmFnbWVudDsKLSsgIGNvbnN0IGdjaGFyICpzdHJlYW1fdHlwZV9uYW1lID0KLSsgICAgICBnc3RfbXNzX3N0cmVhbV90eXBlX25hbWUgKGdzdF9tc3Nfc3RyZWFtX2dldF90eXBlIChzdHJlYW0pKTsKLSsKLSAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJlYW0tPmFjdGl2ZSwgR1NUX0ZMT1dfRVJST1IpOwotIAotICAgaWYgKHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9PSBOVUxMKQotQEAgLTEwODYsMTQgKzExMzcsMjAgQEAgZ3N0X21zc19zdHJlYW1fYWR2YW5jZV9mcmFnbWVudCAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotIAotICAgZnJhZ21lbnQgPSBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQtPmRhdGE7Ci0gICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXgrKzsKLS0gIGlmIChzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPCBmcmFnbWVudC0+cmVwZXRpdGlvbnMpIHsKLS0gICAgcmV0dXJuIEdTVF9GTE9XX09LOwotLSAgfQotKyAgaWYgKHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA8IGZyYWdtZW50LT5yZXBldGl0aW9ucykKLSsgICAgZ290byBiZWFjaDsKLSAKLSAgIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA9IDA7Ci0gICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBnX2xpc3RfbmV4dCAoc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50KTsKLSsKLSsgIEdTVF9ERUJVRyAoIkFkdmFuY2VkIHRvIGZyYWdtZW50ICMlZCBvbiAlcyBzdHJlYW0iLCBmcmFnbWVudC0+bnVtYmVyLAotKyAgICAgIHN0cmVhbV90eXBlX25hbWUpOwotICAgaWYgKHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9PSBOVUxMKQotICAgICByZXR1cm4gR1NUX0ZMT1dfRU9TOwotKwotK2JlYWNoOgotKyAgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfY2xlYXIgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlcik7Ci0rICBnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9pbml0ICgmc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIpOwotICAgcmV0dXJuIEdTVF9GTE9XX09LOwotIH0KLSAKLUBAIC0xMTczLDYgKzEyMzAsMTEgQEAgZ3N0X21zc19zdHJlYW1fc2VlayAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkLAotICAgR1NUX0RFQlVHICgiU3RyZWFtICVzIHNlZWtpbmcgdG8gJSIgR19HVUlOVDY0X0ZPUk1BVCwgc3RyZWFtLT51cmwsIHRpbWUpOwotICAgZm9yIChpdGVyID0gc3RyZWFtLT5mcmFnbWVudHM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKLSAgICAgZnJhZ21lbnQgPSBpdGVyLT5kYXRhOwotKyAgICBpZiAoc3RyZWFtLT5oYXNfbGl2ZV9mcmFnbWVudHMpIHsKLSsgICAgICBpZiAoZnJhZ21lbnQtPnRpbWUgKyBmcmFnbWVudC0+cmVwZXRpdGlvbnMgKiBmcmFnbWVudC0+ZHVyYXRpb24gPiB0aW1lKQotKyAgICAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gaXRlcjsKLSsgICAgICBicmVhazsKLSsgICAgfQotICAgICBpZiAoZnJhZ21lbnQtPnRpbWUgKyBmcmFnbWVudC0+cmVwZXRpdGlvbnMgKiBmcmFnbWVudC0+ZHVyYXRpb24gPiB0aW1lKSB7Ci0gICAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gaXRlcjsKLSAgICAgICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPQotQEAgLTEyNTYsOSArMTMxOCwxNCBAQCBzdGF0aWMgdm9pZAotIGdzdF9tc3Nfc3RyZWFtX3JlbG9hZF9mcmFnbWVudHMgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgeG1sTm9kZVB0ciBzdHJlYW1JbmRleCkKLSB7Ci0gICB4bWxOb2RlUHRyIGl0ZXI7Ci0tICBndWludDY0IGN1cnJlbnRfZ3N0X3RpbWUgPSBnc3RfbXNzX3N0cmVhbV9nZXRfZnJhZ21lbnRfZ3N0X3RpbWVzdGFtcCAoc3RyZWFtKTsKLSsgIGd1aW50NjQgY3VycmVudF9nc3RfdGltZTsKLSAgIEdzdE1zc0ZyYWdtZW50TGlzdEJ1aWxkZXIgYnVpbGRlcjsKLSAKLSsgIGlmIChzdHJlYW0tPmhhc19saXZlX2ZyYWdtZW50cykKLSsgICAgcmV0dXJuOwotKwotKyAgY3VycmVudF9nc3RfdGltZSA9IGdzdF9tc3Nfc3RyZWFtX2dldF9mcmFnbWVudF9nc3RfdGltZXN0YW1wIChzdHJlYW0pOwotKwotICAgZ3N0X21zc19mcmFnbWVudF9saXN0X2J1aWxkZXJfaW5pdCAoJmJ1aWxkZXIpOwotIAotICAgR1NUX0RFQlVHICgiQ3VycmVudCBwb3NpdGlvbjogJSIgR1NUX1RJTUVfRk9STUFULAotQEAgLTE1MTQsMyArMTU4MSw3NCBAQCBnc3RfbXNzX21hbmlmZXN0X2dldF9saXZlX3NlZWtfcmFuZ2UgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsIGdpbnQ2NCAqIHN0YXJ0LAotIAotICAgcmV0dXJuIHJldDsKLSB9Ci0rCi0rdm9pZAotK2dzdF9tc3NfbWFuaWZlc3RfbGl2ZV9hZGFwdGVyX3B1c2ggKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgR3N0QnVmZmVyICogYnVmZmVyKQotK3sKLSsgIGdzdF9hZGFwdGVyX3B1c2ggKHN0cmVhbS0+bGl2ZV9hZGFwdGVyLCBidWZmZXIpOwotK30KLSsKLStnc2l6ZQotK2dzdF9tc3NfbWFuaWZlc3RfbGl2ZV9hZGFwdGVyX2F2YWlsYWJsZSAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotK3sKLSsgIHJldHVybiBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKHN0cmVhbS0+bGl2ZV9hZGFwdGVyKTsKLSt9Ci0rCi0rR3N0QnVmZmVyICoKLStnc3RfbXNzX21hbmlmZXN0X2xpdmVfYWRhcHRlcl90YWtlX2J1ZmZlciAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnc2l6ZSBuYnl0ZXMpCi0rewotKyAgcmV0dXJuIGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyIChzdHJlYW0tPmxpdmVfYWRhcHRlciwgbmJ5dGVzKTsKLSt9Ci0rCi0rZ2Jvb2xlYW4KLStnc3RfbXNzX3N0cmVhbV9mcmFnbWVudF9wYXJzaW5nX25lZWRlZCAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotK3sKLSsgIHJldHVybiBzdHJlYW0tPmZyYWdtZW50X3BhcnNlci5zdGF0dXMgPT0gR1NUX01TU19GUkFHTUVOVF9IRUFERVJfUEFSU0VSX0lOSVQ7Ci0rfQotKwotK3ZvaWQKLStnc3RfbXNzX3N0cmVhbV9wYXJzZV9mcmFnbWVudCAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBHc3RCdWZmZXIgKiBidWZmZXIpCi0rewotKyAgR3N0TXNzU3RyZWFtRnJhZ21lbnQgKmN1cnJlbnRfZnJhZ21lbnQgPSBOVUxMOwotKyAgY29uc3QgZ2NoYXIgKnN0cmVhbV90eXBlX25hbWU7Ci0rICBndWludDggaW5kZXg7Ci0rCi0rICBpZiAoIXN0cmVhbS0+aGFzX2xpdmVfZnJhZ21lbnRzKQotKyAgICByZXR1cm47Ci0rCi0rICBpZiAoIWdzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2FkZF9idWZmZXIgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlciwgYnVmZmVyKSkKLSsgICAgcmV0dXJuOwotKwotKyAgY3VycmVudF9mcmFnbWVudCA9IHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudC0+ZGF0YTsKLSsgIGN1cnJlbnRfZnJhZ21lbnQtPnRpbWUgPSBzdHJlYW0tPmZyYWdtZW50X3BhcnNlci50ZnhkLnRpbWU7Ci0rICBjdXJyZW50X2ZyYWdtZW50LT5kdXJhdGlvbiA9IHN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLnRmeGQuZHVyYXRpb247Ci0rCi0rICBzdHJlYW1fdHlwZV9uYW1lID0KLSsgICAgICBnc3RfbXNzX3N0cmVhbV90eXBlX25hbWUgKGdzdF9tc3Nfc3RyZWFtX2dldF90eXBlIChzdHJlYW0pKTsKLSsKLSsgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLnRmcmYuZW50cmllc19jb3VudDsgaW5kZXgrKykgewotKyAgICBHTGlzdCAqbCA9IGdfbGlzdF9sYXN0IChzdHJlYW0tPmZyYWdtZW50cyk7Ci0rICAgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpsYXN0OwotKyAgICBHc3RNc3NTdHJlYW1GcmFnbWVudCAqZnJhZ21lbnQ7Ci0rCi0rICAgIGlmIChsID09IE5VTEwpCi0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGxhc3QgPSAoR3N0TXNzU3RyZWFtRnJhZ21lbnQgKikgbC0+ZGF0YTsKLSsKLSsgICAgaWYgKGxhc3QtPnRpbWUgPT0gc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIudGZyZi5lbnRyaWVzW2luZGV4XS50aW1lKQotKyAgICAgIGNvbnRpbnVlOwotKwotKyAgICBmcmFnbWVudCA9IGdfbmV3IChHc3RNc3NTdHJlYW1GcmFnbWVudCwgMSk7Ci0rICAgIGZyYWdtZW50LT5udW1iZXIgPSBsYXN0LT5udW1iZXIgKyAxOwotKyAgICBmcmFnbWVudC0+cmVwZXRpdGlvbnMgPSAxOwotKyAgICBmcmFnbWVudC0+dGltZSA9IHN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLnRmcmYuZW50cmllc1tpbmRleF0udGltZTsKLSsgICAgZnJhZ21lbnQtPmR1cmF0aW9uID0gc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIudGZyZi5lbnRyaWVzW2luZGV4XS5kdXJhdGlvbjsKLSsKLSsgICAgc3RyZWFtLT5mcmFnbWVudHMgPSBnX2xpc3RfYXBwZW5kIChzdHJlYW0tPmZyYWdtZW50cywgZnJhZ21lbnQpOwotKyAgICBHU1RfTE9HICgiQWRkaW5nIGZyYWdtZW50IG51bWJlcjogJXUgdG8gJXMgc3RyZWFtLCB0aW1lOiAlIiBHX0dVSU5UNjRfRk9STUFUCi0rICAgICAgICAiLCBkdXJhdGlvbjogJSIgR19HVUlOVDY0X0ZPUk1BVCAiLCByZXBldGl0aW9uczogJXUiLAotKyAgICAgICAgZnJhZ21lbnQtPm51bWJlciwgc3RyZWFtX3R5cGVfbmFtZSwKLSsgICAgICAgIGZyYWdtZW50LT50aW1lLCBmcmFnbWVudC0+ZHVyYXRpb24sIGZyYWdtZW50LT5yZXBldGl0aW9ucyk7Ci0rICB9Ci0rfQotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaCBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAotaW5kZXggNmI3YjFmOTcxLi4wM2IwNjZhZTUgMTAwNjQ0Ci0tLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKLSsrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0gI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSsjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgotIAotIEdfQkVHSU5fREVDTFMKLSAKLUBAIC03Myw1ICs3NCwxMSBAQCBjb25zdCBnY2hhciAqIGdzdF9tc3Nfc3RyZWFtX2dldF9sYW5nIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pOwotIAotIGNvbnN0IGdjaGFyICogZ3N0X21zc19zdHJlYW1fdHlwZV9uYW1lIChHc3RNc3NTdHJlYW1UeXBlIHN0cmVhbXR5cGUpOwotIAotK3ZvaWQgZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfcHVzaChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci0rZ3NpemUgZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfYXZhaWxhYmxlKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7Ci0rR3N0QnVmZmVyICogZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfdGFrZV9idWZmZXIoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnc2l6ZSBuYnl0ZXMpOwotK2dib29sZWFuIGdzdF9tc3Nfc3RyZWFtX2ZyYWdtZW50X3BhcnNpbmdfbmVlZGVkKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7Ci0rdm9pZCBnc3RfbXNzX3N0cmVhbV9wYXJzZV9mcmFnbWVudChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci0rCi0gR19FTkRfREVDTFMKLSAjZW5kaWYgLyogX19HU1RfTVNTX01BTklGRVNUX0hfXyAqLwotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYwotaW5kZXggNjM0ZTRmMzg4Li5kZGNhNzI2YjYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmMKLSsrKyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYwotQEAgLTI5MSw2ICsyOTEsOSBAQCBnc3RfYWRhcHRpdmVfZGVtdXhfd2FpdF91bnRpbCAoR3N0Q2xvY2sgKiBjbG9jaywgR0NvbmQgKiBjb25kLCBHTXV0ZXggKiBtdXRleCwKLSAgICAgR3N0Q2xvY2tUaW1lIGVuZF90aW1lKTsKLSBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FkYXB0aXZlX2RlbXV4X2Nsb2NrX2NhbGxiYWNrIChHc3RDbG9jayAqIGNsb2NrLAotICAgICBHc3RDbG9ja1RpbWUgdGltZSwgR3N0Q2xvY2tJRCBpZCwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfYWRhcHRpdmVfZGVtdXhfcmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGVfZGVmYXVsdCAoR3N0QWRhcHRpdmVEZW11eAotKyAgICAqIGRlbXV4KTsKLSAKLSAvKiB3ZSBjYW4ndCB1c2UgR19ERUZJTkVfQUJTVFJBQ1RfVFlQRSBiZWNhdXNlIHdlIG5lZWQgdGhlIGtsYXNzIGluIHRoZSBfaW5pdAotICAqIG1ldGhvZCB0byBnZXQgdG8gdGhlIHBhZHRlbXBsYXRlcyAqLwotQEAgLTQxMiw2ICs0MTUsOSBAQCBnc3RfYWRhcHRpdmVfZGVtdXhfY2xhc3NfaW5pdCAoR3N0QWRhcHRpdmVEZW11eENsYXNzICoga2xhc3MpCi0gICBrbGFzcy0+ZGF0YV9yZWNlaXZlZCA9IGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZGF0YV9yZWNlaXZlZF9kZWZhdWx0OwotICAga2xhc3MtPmZpbmlzaF9mcmFnbWVudCA9IGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZmluaXNoX2ZyYWdtZW50X2RlZmF1bHQ7Ci0gICBrbGFzcy0+dXBkYXRlX21hbmlmZXN0ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdF9kZWZhdWx0OwotKyAga2xhc3MtPnJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlID0KLSsgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfcmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGVfZGVmYXVsdDsKLSsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC02ODYsNyArNjkyLDkgQEAgZ3N0X2FkYXB0aXZlX2RlbXV4X3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgICAgICAgICAgIGRlbXV4LT5wcml2LT5zdG9wX3VwZGF0ZXNfdGFzayA9IEZBTFNFOwotICAgICAgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfbG9jayk7Ci0gICAgICAgICAgICAgLyogVGFzayB0byBwZXJpb2RpY2FsbHkgdXBkYXRlIHRoZSBtYW5pZmVzdCAqLwotLSAgICAgICAgICAgIGdzdF90YXNrX3N0YXJ0IChkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrKTsKLSsgICAgICAgICAgICBpZiAoZGVtdXhfY2xhc3MtPnJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlIChkZW11eCkpIHsKLSsgICAgICAgICAgICAgIGdzdF90YXNrX3N0YXJ0IChkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIC8qIG5vIHN0cmVhbXMgKi8KLUBAIC0yMTI1LDYgKzIxMzMsMTMgQEAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kYXRhX3JlY2VpdmVkX2RlZmF1bHQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgIHJldHVybiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3B1c2hfYnVmZmVyIChzdHJlYW0sIGJ1ZmZlcik7Ci0gfQotIAotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9hZGFwdGl2ZV9kZW11eF9yZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZV9kZWZhdWx0IChHc3RBZGFwdGl2ZURlbXV4Ci0rICAgICogZGVtdXgpCi0rewotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotIHN0YXRpYyBHc3RGbG93UmV0dXJuCi0gX3NyY19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLSB7Ci1AQCAtMzMzOCw3ICszMzUzLDE1IEBAIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfbG9vcCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKLSAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIkVPUywgY2hlY2tpbmcgdG8gc3RvcCBkb3dubG9hZCBsb29wIik7Ci0gICAgICAgLyogd2UgcHVzaCB0aGUgRU9TIGFmdGVyIHJlbGVhc2luZyB0aGUgb2JqZWN0IGxvY2sgKi8KLSAgICAgICBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KSkgewotLSAgICAgICAgaWYgKGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fd2FpdF9tYW5pZmVzdF91cGRhdGUgKGRlbXV4LCBzdHJlYW0pKSB7Ci0rICAgICAgICBHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKmRlbXV4X2NsYXNzID0KLSsgICAgICAgICAgICBHU1RfQURBUFRJVkVfREVNVVhfR0VUX0NMQVNTIChkZW11eCk7Ci0rCi0rICAgICAgICAvKiB0aGlzIG1pZ2h0IGJlIGEgZnJhZ21lbnQgZG93bmxvYWQgZXJyb3IsIHJlZnJlc2ggdGhlIG1hbmlmZXN0LCBqdXN0IGluIGNhc2UgKi8KLSsgICAgICAgIGlmICghZGVtdXhfY2xhc3MtPnJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlIChkZW11eCkpIHsKLSsgICAgICAgICAgcmV0ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdCAoZGVtdXgpOwotKyAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0gZWxzZSBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV93YWl0X21hbmlmZXN0X3VwZGF0ZSAoZGVtdXgsCi0rICAgICAgICAgICAgICAgIHN0cmVhbSkpIHsKLSAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBnc3RfdGFza19zdG9wIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOwotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaCBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaAotaW5kZXggNzgwZjRkOTNmLi45YTFhMWI3ZDEgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmgKLSsrKyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaAotQEAgLTQ1OSw2ICs0NTksMjAgQEAgc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4Q2xhc3MKLSAgICAqIHNlbGVjdGVkIHBlcmlvZC4KLSAgICAqLwotICAgR3N0Q2xvY2tUaW1lICgqZ2V0X3BlcmlvZF9zdGFydF90aW1lKSAoR3N0QWRhcHRpdmVEZW11eCAqZGVtdXgpOwotKwotKyAgLyoqCi0rICAgKiByZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZToKLSsgICAqIEBkZW11eDogI0dzdEFkYXB0aXZlRGVtdXgKLSsgICAqCi0rICAgKiBTb21lIGFkYXB0aXZlIHN0cmVhbWluZyBwcm90b2NvbHMgYWxsb3cgdGhlIGNsaWVudCB0byBkb3dubG9hZAotKyAgICogdGhlIHBsYXlsaXN0IG9uY2UgYW5kIGJ1aWxkIHVwIHRoZSBmcmFnbWVudCBsaXN0IGJhc2VkIG9uIHRoZQotKyAgICogY3VycmVudCBmcmFnbWVudCBtZXRhZGF0YS4gRm9yIHRob3NlIHByb3RvY29scyB0aGUgZGVtdXhlcgotKyAgICogZG9lc24ndCBuZWVkIHRvIHBlcmlvZGljYWxseSByZWZyZXNoIHRoZSBwbGF5bGlzdC4gVGhpcyB2ZnVuYwotKyAgICogaXMgcmVsZXZhbnQgb25seSBmb3IgbGl2ZSBwbGF5YmFjayBzY2VuYXJpb3MuCi0rICAgKgotKyAgICogUmV0dXJuOiAlVFJVRSBpZiB0aGUgcGxheWxpc3QgbmVlZHMgdG8gYmUgcmVmcmVzaGVkIHBlcmlvZGljYWxseSBieSB0aGUgZGVtdXhlci4KLSsgICAqLwotKyAgZ2Jvb2xlYW4gKCpyZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZSkgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7Ci0gfTsKLSAKLSBHVHlwZSAgICBnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X3R5cGUgKHZvaWQpOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1zbW9vdGhzdHJlYW1pbmctaW1wbGVtZW50LWFkYXB0aXZlZGVtdXgtcy1nZXRfbGl2ZV9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1zbW9vdGhzdHJlYW1pbmctaW1wbGVtZW50LWFkYXB0aXZlZGVtdXgtcy1nZXRfbGl2ZV9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmQyOWUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtc21vb3Roc3RyZWFtaW5nLWltcGxlbWVudC1hZGFwdGl2ZWRlbXV4LXMtZ2V0X2xpdmVfcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi1Gcm9tIGU5MTc4ZmEwODIxMTZkNGJmNzMzYjE4NGE4YjY5NTExMTJjMTc5MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Ci1EYXRlOiBUaHUsIDEwIE5vdiAyMDE2IDE3OjE4OjM2ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNtb290aHN0cmVhbWluZzogaW1wbGVtZW50IGFkYXB0aXZlZGVtdXgncwotIGdldF9saXZlX3NlZWtfcmFuZ2UoKQotCi1BbGxvd3Mgc2Vla2luZyB0aHJvdWdoIHRoZSBhdmFpbGFibGUgZnJhZ21lbnRzIHRoYXQgYXJlIHN0aWxsIGF2YWlsYWJsZQotb24gdGhlIHNlcnZlciBhcyBzcGVjaWZpZWQgYnkgdGhlIERWUldpbmRvd0xlbmd0aCBhdHRyaWJ1dGUgaW4gdGhlCi1tYW5pZmVzdC4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3NDE3OAotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jICAgIHwgMTMgKysrKysrCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jIHwgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oIHwgIDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi1pbmRleCA5ZDBhZWNlMmIuLmI2NmUxOTUxNCAxMDA2NDQKLS0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguYwotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi1AQCAtMTM4LDYgKzEzOCw4IEBAIGdzdF9tc3NfZGVtdXhfZ2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KTsKLSBzdGF0aWMgR3N0Rmxvd1JldHVybgotIGdzdF9tc3NfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGEgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgICAgR3N0QnVmZmVyICogYnVmZmVyKTsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0rICAgIGdpbnQ2NCAqIHN0YXJ0LCBnaW50NjQgKiBzdG9wKTsKLSAKLSBzdGF0aWMgdm9pZAotIGdzdF9tc3NfZGVtdXhfY2xhc3NfaW5pdCAoR3N0TXNzRGVtdXhDbGFzcyAqIGtsYXNzKQotQEAgLTE5Miw2ICsxOTQsOCBAQCBnc3RfbXNzX2RlbXV4X2NsYXNzX2luaXQgKEdzdE1zc0RlbXV4Q2xhc3MgKiBrbGFzcykKLSAgICAgICBnc3RfbXNzX2RlbXV4X3N0cmVhbV91cGRhdGVfZnJhZ21lbnRfaW5mbzsKLSAgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPnVwZGF0ZV9tYW5pZmVzdF9kYXRhID0KLSAgICAgICBnc3RfbXNzX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdF9kYXRhOwotKyAgZ3N0YWRhcHRpdmVkZW11eF9jbGFzcy0+Z2V0X2xpdmVfc2Vla19yYW5nZSA9Ci0rICAgICAgZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlOwotIAotICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKG1zc2RlbXV4X2RlYnVnLCAibXNzZGVtdXgiLCAwLCAibXNzZGVtdXggcGx1Z2luIik7Ci0gfQotQEAgLTY1OSwzICs2NjMsMTIgQEAgZ3N0X21zc19kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgZ3N0X21zc19tYW5pZmVzdF9yZWxvYWRfZnJhZ21lbnRzIChtc3NkZW11eC0+bWFuaWZlc3QsIGJ1ZmZlcik7Ci0gICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0gfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9tc3NfZGVtdXhfZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBnaW50NjQgKiBzdGFydCwKLSsgICAgZ2ludDY0ICogc3RvcCkKLSt7Ci0rICBHc3RNc3NEZW11eCAqbXNzZGVtdXggPSBHU1RfTVNTX0RFTVVYX0NBU1QgKGRlbXV4KTsKLSsKLSsgIHJldHVybiBnc3RfbXNzX21hbmlmZXN0X2dldF9saXZlX3NlZWtfcmFuZ2UgKG1zc2RlbXV4LT5tYW5pZmVzdCwgc3RhcnQsIHN0b3ApOwotK30KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLWluZGV4IDFiNzJlOGRlMS4uMzE3YjNjZWY5IDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLUBAIC00Miw2ICs0Miw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4gKG1zc2RlbXV4X2RlYnVnKTsKLSAKLSAjZGVmaW5lIE1TU19QUk9QX0JJVFJBVEUgICAgICAgICAgICAgICJCaXRyYXRlIgotICNkZWZpbmUgTVNTX1BST1BfRFVSQVRJT04gICAgICAgICAgICAgImQiCi0rI2RlZmluZSBNU1NfUFJPUF9EVlJfV0lORE9XX0xFTkdUSCAgICAiRFZSV2luZG93TGVuZ3RoIgotICNkZWZpbmUgTVNTX1BST1BfTEFOR1VBR0UgICAgICAgICAgICAgIkxhbmd1YWdlIgotICNkZWZpbmUgTVNTX1BST1BfTlVNQkVSICAgICAgICAgICAgICAgIm4iCi0gI2RlZmluZSBNU1NfUFJPUF9SRVBFVElUSU9OUyAgICAgICAgICAiciIKLUBAIC05NCw2ICs5NSw3IEBAIHN0cnVjdCBfR3N0TXNzTWFuaWZlc3QKLSAgIHhtbE5vZGVQdHIgeG1scm9vdG5vZGU7Ci0gCi0gICBnYm9vbGVhbiBpc19saXZlOwotKyAgZ2ludDY0IGR2cl93aW5kb3c7Ci0gCi0gICBHU3RyaW5nICpwcm90ZWN0aW9uX3N5c3RlbV9pZDsKLSAgIGdjaGFyICpwcm90ZWN0aW9uX2RhdGE7Ci1AQCAtMzMwLDYgKzMzMiwyMiBAQCBnc3RfbXNzX21hbmlmZXN0X25ldyAoR3N0QnVmZmVyICogZGF0YSkKLSAgICAgeG1sRnJlZSAobGl2ZV9zdHIpOwotICAgfQotIAotKyAgLyogdGhlIGVudGlyZSBmaWxlIGlzIGFsd2F5cyBhdmFpbGFibGUgZm9yIG5vbi1saXZlIHN0cmVhbXMgKi8KLSsgIGlmICghbWFuaWZlc3QtPmlzX2xpdmUpIHsKLSsgICAgbWFuaWZlc3QtPmR2cl93aW5kb3cgPSAwOwotKyAgfSBlbHNlIHsKLSsgICAgLyogaWYgMCwgb3Igbm9uLWV4aXN0ZW50LCB0aGUgbGVuZ3RoIGlzIGluZmluaXRlICovCi0rICAgIGdjaGFyICpkdnJfd2luZG93X3N0ciA9IChnY2hhciAqKSB4bWxHZXRQcm9wIChyb290LAotKyAgICAgICAgKHhtbENoYXIgKikgTVNTX1BST1BfRFZSX1dJTkRPV19MRU5HVEgpOwotKyAgICBpZiAoZHZyX3dpbmRvd19zdHIpIHsKLSsgICAgICBtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9IGdfYXNjaWlfc3RydG91bGwgKGR2cl93aW5kb3dfc3RyLCBOVUxMLCAxMCk7Ci0rICAgICAgeG1sRnJlZSAoZHZyX3dpbmRvd19zdHIpOwotKyAgICAgIGlmIChtYW5pZmVzdC0+ZHZyX3dpbmRvdyA8PSAwKSB7Ci0rICAgICAgICBtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9IDA7Ci0rICAgICAgfQotKyAgICB9Ci0rICB9Ci0rCi0gICBmb3IgKG5vZGVpdGVyID0gcm9vdC0+Y2hpbGRyZW47IG5vZGVpdGVyOyBub2RlaXRlciA9IG5vZGVpdGVyLT5uZXh0KSB7Ci0gICAgIGlmIChub2RlaXRlci0+dHlwZSA9PSBYTUxfRUxFTUVOVF9OT0RFCi0gICAgICAgICAmJiAoc3RyY21wICgoY29uc3QgY2hhciAqKSBub2RlaXRlci0+bmFtZSwgIlN0cmVhbUluZGV4IikgPT0gMCkpIHsKLUBAIC0xNDA2LDMgKzE0MjQsNjkgQEAgZ3N0X21zc19zdHJlYW1fZ2V0X2xhbmcgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSkKLSB7Ci0gICByZXR1cm4gc3RyZWFtLT5sYW5nOwotIH0KLSsKLStzdGF0aWMgR3N0Q2xvY2tUaW1lCi0rZ3N0X21zc19tYW5pZmVzdF9nZXRfZHZyX3dpbmRvd19sZW5ndGhfY2xvY2tfdGltZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCkKLSt7Ci0rICBnaW50NjQgdGltZXNjYWxlOwotKwotKyAgLyogdGhlIGVudGlyZSBmaWxlIGlzIGFsd2F5cyBhdmFpbGFibGUgZm9yIG5vbi1saXZlIHN0cmVhbXMgKi8KLSsgIGlmIChtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9PSAwKQotKyAgICByZXR1cm4gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSsKLSsgIHRpbWVzY2FsZSA9IGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3RpbWVzY2FsZSAobWFuaWZlc3QpOwotKyAgcmV0dXJuIChHc3RDbG9ja1RpbWUpIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCAobWFuaWZlc3QtPmR2cl93aW5kb3csCi0rICAgICAgR1NUX1NFQ09ORCwgdGltZXNjYWxlKTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X21zc19zdHJlYW1fZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnaW50NjQgKiBzdGFydCwKLSsgICAgZ2ludDY0ICogc3RvcCkKLSt7Ci0rICBHTGlzdCAqbDsKLSsgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpmcmFnbWVudDsKLSsgIGd1aW50NjQgdGltZXNjYWxlID0gZ3N0X21zc19zdHJlYW1fZ2V0X3RpbWVzY2FsZSAoc3RyZWFtKTsKLSsKLSsgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJlYW0tPmFjdGl2ZSwgRkFMU0UpOwotKwotKyAgLyogWFhYOiBhc3N1bWVzIGFsbCB0aGUgZGF0YSBpbiB0aGUgc3RyZWFtIGlzIHN0aWxsIGF2YWlsYWJsZSAqLwotKyAgbCA9IGdfbGlzdF9maXJzdCAoc3RyZWFtLT5mcmFnbWVudHMpOwotKyAgZnJhZ21lbnQgPSAoR3N0TXNzU3RyZWFtRnJhZ21lbnQgKikgbC0+ZGF0YTsKLSsgICpzdGFydCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCAoZnJhZ21lbnQtPnRpbWUsIEdTVF9TRUNPTkQsIHRpbWVzY2FsZSk7Ci0rCi0rICBsID0gZ19saXN0X2xhc3QgKHN0cmVhbS0+ZnJhZ21lbnRzKTsKLSsgIGZyYWdtZW50ID0gKEdzdE1zc1N0cmVhbUZyYWdtZW50ICopIGwtPmRhdGE7Ci0rICAqc3RvcCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCAoZnJhZ21lbnQtPnRpbWUgKyBmcmFnbWVudC0+ZHVyYXRpb24gKgotKyAgICAgIGZyYWdtZW50LT5yZXBldGl0aW9ucywgR1NUX1NFQ09ORCwgdGltZXNjYWxlKTsKLSsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLStnYm9vbGVhbgotK2dzdF9tc3NfbWFuaWZlc3RfZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ2ludDY0ICogc3RhcnQsCi0rICAgIGdpbnQ2NCAqIHN0b3ApCi0rewotKyAgR1NMaXN0ICppdGVyOwotKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0rCi0rICBmb3IgKGl0ZXIgPSBtYW5pZmVzdC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfc2xpc3RfbmV4dCAoaXRlcikpIHsKLSsgICAgR3N0TXNzU3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwotKwotKyAgICBpZiAoc3RyZWFtLT5hY3RpdmUpIHsKLSsgICAgICAvKiBGSVhNRTogYm91bmQgdGhpcyBjb3JyZWN0bHkgZm9yIG11bHRpcGxlIHN0cmVhbXMgKi8KLSsgICAgICBpZiAoIShyZXQgPSBnc3RfbXNzX3N0cmVhbV9nZXRfbGl2ZV9zZWVrX3JhbmdlIChzdHJlYW0sIHN0YXJ0LCBzdG9wKSkpCi0rICAgICAgICBicmVhazsKLSsgICAgfQotKyAgfQotKwotKyAgaWYgKHJldCAmJiBnc3RfbXNzX21hbmlmZXN0X2lzX2xpdmUgKG1hbmlmZXN0KSkgewotKyAgICBHc3RDbG9ja1RpbWUgZHZyX3dpbmRvdyA9Ci0rICAgICAgICBnc3RfbXNzX21hbmlmZXN0X2dldF9kdnJfd2luZG93X2xlbmd0aF9jbG9ja190aW1lIChtYW5pZmVzdCk7Ci0rCi0rICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZHZyX3dpbmRvdykgJiYgKnN0b3AgLSAqc3RhcnQgPiBkdnJfd2luZG93KSB7Ci0rICAgICAgKnN0YXJ0ID0gKnN0b3AgLSBkdnJfd2luZG93OwotKyAgICB9Ci0rICB9Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmggYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKLWluZGV4IGFmNzQxOWMyMy4uNmI3YjFmOTcxIDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKLUBAIC01NCw2ICs1NCw3IEBAIHZvaWQgZ3N0X21zc19tYW5pZmVzdF9yZWxvYWRfZnJhZ21lbnRzIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0LCBHc3RCdWZmZXIgKiBkCi0gR3N0Q2xvY2tUaW1lIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X21pbl9mcmFnbWVudF9kdXJhdGlvbiAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7Ci0gY29uc3QgZ2NoYXIgKiBnc3RfbXNzX21hbmlmZXN0X2dldF9wcm90ZWN0aW9uX3N5c3RlbV9pZCAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7Ci0gY29uc3QgZ2NoYXIgKiBnc3RfbXNzX21hbmlmZXN0X2dldF9wcm90ZWN0aW9uX2RhdGEgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpOwotK2dib29sZWFuIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ2ludDY0ICogc3RhcnQsIGdpbnQ2NCAqIHN0b3ApOwotIAotIEdzdE1zc1N0cmVhbVR5cGUgZ3N0X21zc19zdHJlYW1fZ2V0X3R5cGUgKEdzdE1zc1N0cmVhbSAqc3RyZWFtKTsKLSBHc3RDYXBzICogZ3N0X21zc19zdHJlYW1fZ2V0X2NhcHMgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXNtb290aHN0cmVhbWluZy11c2UtdGhlLWR1cmF0aW9uLWZyb20tdGhlLWxpc3Qtb2YtZnIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXNtb290aHN0cmVhbWluZy11c2UtdGhlLWR1cmF0aW9uLWZyb20tdGhlLWxpc3Qtb2YtZnIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNTEwNDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1zbW9vdGhzdHJlYW1pbmctdXNlLXRoZS1kdXJhdGlvbi1mcm9tLXRoZS1saXN0LW9mLWZyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSAwZmJlZThmMzc0MjdiODgzMzkxOTRiMjJiYTlhYTIxMDc3MmE4NjEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgotRGF0ZTogVGh1LCAxMCBOb3YgMjAxNiAxNzoyMDoyNyArMTEwMAotU3ViamVjdDogW1BBVENIXSBzbW9vdGhzdHJlYW1pbmc6IHVzZSB0aGUgZHVyYXRpb24gZnJvbSB0aGUgbGlzdCBvZiBmcmFnbWVudHMKLSBpZiBub3QgcHJlc2VudCBpbiB0aGUgbWFuaWZlc3QKLQotUHJvdmlkZXMgYSBtb3JlIGFjY3VyYXRlIGR1cmF0aW9uIGZvciBsaXZlIHN0cmVhbXMgdGhhdCBtYXkgYmUgbWludXRlcwotb3IgaG91cnMgaW4gZnJvbnQgb2YgdGhlIGVhcmxpZXN0IGZyYWdtZW50LgotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0MTc4Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi1pbmRleCAzMTdiM2NlZjkuLjE0NGJiYjQyZCAxMDA2NDQKLS0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi1AQCAtODg4LDYgKzg4OCw3IEBAIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2R1cmF0aW9uIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KQotICAgZ2NoYXIgKmR1cmF0aW9uOwotICAgZ3VpbnQ2NCBkdXIgPSAtMTsKLSAKLSsgIC8qIHRyeSB0aGUgcHJvcGVydHkgKi8KLSAgIGR1cmF0aW9uID0KLSAgICAgICAoZ2NoYXIgKikgeG1sR2V0UHJvcCAobWFuaWZlc3QtPnhtbHJvb3Rub2RlLAotICAgICAgICh4bWxDaGFyICopIE1TU19QUk9QX1NUUkVBTV9EVVJBVElPTik7Ci1AQCAtODk1LDYgKzg5NiwyOSBAQCBnc3RfbXNzX21hbmlmZXN0X2dldF9kdXJhdGlvbiAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCkKLSAgICAgZHVyID0gZ19hc2NpaV9zdHJ0b3VsbCAoZHVyYXRpb24sIE5VTEwsIDEwKTsKLSAgICAgeG1sRnJlZSAoZHVyYXRpb24pOwotICAgfQotKyAgLyogZWxzZSB1c2UgdGhlIGZyYWdtZW50IGxpc3QgKi8KLSsgIGlmIChkdXIgPD0gMCkgewotKyAgICBndWludDY0IG1heF9kdXIgPSAwOwotKyAgICBHU0xpc3QgKml0ZXI7Ci0rCi0rICAgIGZvciAoaXRlciA9IG1hbmlmZXN0LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19zbGlzdF9uZXh0IChpdGVyKSkgewotKyAgICAgIEdzdE1zc1N0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKLSsKLSsgICAgICBpZiAoc3RyZWFtLT5hY3RpdmUpIHsKLSsgICAgICAgIGlmIChzdHJlYW0tPmZyYWdtZW50cykgewotKyAgICAgICAgICBHTGlzdCAqbCA9IGdfbGlzdF9sYXN0IChzdHJlYW0tPmZyYWdtZW50cyk7Ci0rICAgICAgICAgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpmcmFnbWVudCA9IChHc3RNc3NTdHJlYW1GcmFnbWVudCAqKSBsLT5kYXRhOwotKyAgICAgICAgICBndWludDY0IGZyYWdfZHVyID0KLSsgICAgICAgICAgICAgIGZyYWdtZW50LT50aW1lICsgZnJhZ21lbnQtPmR1cmF0aW9uICogZnJhZ21lbnQtPnJlcGV0aXRpb25zOwotKyAgICAgICAgICBtYXhfZHVyID0gTUFYIChmcmFnX2R1ciwgbWF4X2R1cik7Ci0rICAgICAgICB9Ci0rICAgICAgfQotKyAgICB9Ci0rCi0rICAgIGlmIChtYXhfZHVyICE9IDApCi0rICAgICAgZHVyID0gbWF4X2R1cjsKLSsgIH0KLSsKLSAgIHJldHVybiBkdXI7Ci0gfQotIAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYWE2MmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSAxNTIzYWI0NjJjMWJmMTkwNTU5NjBjZWQyNTVmNDg3MmI2Y2Y5ZjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxMTowMDo0MiArMDMwMAorU3ViamVjdDogW1BBVENIIDEvMl0gdmtkaXNwbGF5OiBVc2UgaWZkZWYgZm9yIHBsYXRmb3JtIHNwZWNpZmljIGRlZmluZXMKKworVktfS0hSXypfU1VSRkFDRV9FWFRFTlNJT05fTkFNRSBhcmUgb25seSBhdmFpbGFibGUgd2hlbiBjb3JyZXNwb25kaW5nCitXU0kgaXMgZW5hYmxlZC4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NTM5XQorLS0tCisgZXh0L3Z1bGthbi92a2Rpc3BsYXkuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMgYi9leHQvdnVsa2FuL3ZrZGlzcGxheS5jCitpbmRleCA1NTAxMzRjZDguLmFkZTVkNDU4MyAxMDA2NDQKKy0tLSBhL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKKysrKyBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKK0BAIC00NDgsMTEgKzQ0OCwxNSBAQCBnc3RfdnVsa2FuX2Rpc3BsYXlfdHlwZV90b19leHRlbnNpb25fc3RyaW5nIChHc3RWdWxrYW5EaXNwbGF5VHlwZSB0eXBlKQorICAgaWYgKHR5cGUgPT0gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORSkKKyAgICAgcmV0dXJuIE5VTEw7CisgCisrI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWENCCisgICBpZiAodHlwZSAmIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1hDQikKKyAgICAgcmV0dXJuIFZLX0tIUl9YQ0JfU1VSRkFDRV9FWFRFTlNJT05fTkFNRTsKKysjZW5kaWYKKyAKKysjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19XQVlMQU5ECisgICBpZiAodHlwZSAmIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1dBWUxBTkQpCisgICAgIHJldHVybiBWS19LSFJfV0FZTEFORF9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FOworKyNlbmRpZgorIAorICAgcmV0dXJuIE5VTEw7CisgfQorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMi12dWxrYW4tVXNlLXRoZS1nZW5lcmF0ZWQtdmVyc2lvbi1vZi12a2NvbmZpZy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMi12dWxrYW4tVXNlLXRoZS1nZW5lcmF0ZWQtdmVyc2lvbi1vZi12a2NvbmZpZy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZjE0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSBjMjNlMWRjMjJkZWI0OTU1NjFjZmZiODc3ZWRiMjc0NmI3NDBhMWZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxMTowNzowNSArMDMwMAorU3ViamVjdDogW1BBVENIIDIvMl0gdnVsa2FuOiBVc2UgdGhlIGdlbmVyYXRlZCB2ZXJzaW9uIG9mIHZrY29uZmlnLmgKKworQnVpbGQgZmFpbHMgaW4gZXh0L3Z1bGthbi94Y2IgYW5kIGV4dC92dWxrYW4vd2F5bGFuZCB3aGVuOgorKiBidWlsZGluZyBmcm9tIHRhcmJhbGwKKyogYnVpbGRpbmcgb3V0LW9mLXRyZWUKKyogT25seSBvbmUgV1NJIGludGVncmF0aW9uICh4Y2Igb3Igd2F5bGFuZCkgaXMgZW5hYmxlZCBieSBjb25maWd1cmUuYWMKK1RoaXMgaXMgYmVjYXVzZSB2a2NvbmZpZy5oIGZyb20gc291cmNlIGRpcmVjdG9yeSBnZXRzIHVzZWQgaW5zdGVhZAorb2YgdGhlIGdlbmVyYXRlZCBvbmUuCisKK0FkZCB0aGUgY29ycmVjdCBidWlsZCBkaXJlY3RvcnkgdG8gIi1JIi4gVXNlIGFuZ2xlIGJyYWNrZXQKK2luY2x1ZGUgaW4gdmthcGkuaCBzbyB0aGF0IGl0IGFjdHVhbGx5IGxvb2tzIGluIHRoZSBpbmNsdWRlIHNlYXJjaAorcGF0aCBpbnN0ZWFkIG9mIGRlZmF1bHRpbmcgdG8gdGhlIHNhbWUgKHNvdXJjZSB0cmVlKSBkaXJlY3RvcnkuCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDUzOV0KKy0tLQorIGV4dC92dWxrYW4vdmthcGkuaCAgICAgICAgICAgICB8IDIgKy0KKyBleHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0gfCAxICsKKyBleHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbSAgICAgfCAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2FwaS5oIGIvZXh0L3Z1bGthbi92a2FwaS5oCitpbmRleCBlOWMyM2FhOTIuLmEzN2MyOWQwZiAxMDA2NDQKKy0tLSBhL2V4dC92dWxrYW4vdmthcGkuaAorKysrIGIvZXh0L3Z1bGthbi92a2FwaS5oCitAQCAtMjMsNyArMjMsNyBAQAorIAorICNkZWZpbmUgVktfUFJPVE9UWVBFUworIAorLSNpbmNsdWRlICJ2a2NvbmZpZy5oIgorKyNpbmNsdWRlIDx2a2NvbmZpZy5oPgorICNpbmNsdWRlICJ2a19md2QuaCIKKyAjaW5jbHVkZSAidmttYWNyb3MuaCIKKyAKK2RpZmYgLS1naXQgYS9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0gYi9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0KK2luZGV4IGY5MmQ4NWUyYy4uMTBjZmI3MGU2IDEwMDY0NAorLS0tIGEvZXh0L3Z1bGthbi93YXlsYW5kL01ha2VmaWxlLmFtCisrKysgYi9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0KK0BAIC0xNCw2ICsxNCw3IEBAIG5vaW5zdF9IRUFERVJTID0gXAorIAorIGxpYmdzdHZ1bGthbl93YXlsYW5kX2xhX0NGTEFHUyA9IFwKKyAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKysJLUkkKHRvcF9idWlsZGRpcikvZXh0L3Z1bGthbiBcCisgCS1JJCh0b3Bfc3JjZGlyKS9leHQvdnVsa2FuIFwKKyAJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCitkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0gYi9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbQoraW5kZXggN2RlYmNmZjllLi5iNTEwMzU1MWIgMTAwNjQ0CistLS0gYS9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbQorKysrIGIvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0KK0BAIC0xNCw2ICsxNCw3IEBAIG5vaW5zdF9IRUFERVJTID0gXAorIAorIGxpYmdzdHZ1bGthbl94Y2JfbGFfQ0ZMQUdTID0gXAorIAktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorKwktSSQodG9wX2J1aWxkZGlyKS9leHQvdnVsa2FuIFwKKyAJLUkkKHRvcF9zcmNkaXIpL2V4dC92dWxrYW4gXAorIAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisgCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzgyYjE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0FkZCAtbHZjaG9zdGlmIHRvIGxpbmsgd2hlbiB1c2luZyAtbEVHTCBvbiBycGkKKworVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGxpYkVHTCBmcm9tIHVzZXJsYW5kIHVzZXMgc3lib2xzCitmcm9tIHRoaXMgbGlicmFyeS4KKworbGliL2xpYkVHTC5zby4xLjAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCisgIDE1NTI6IDAwMDAwMDAwICAgICAwIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgIFVORCB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAorCitUaGVzZSBzeW1ib2xzIGFyZSBwcm92aWRlZCBieSBsaWJ2Y2hvc3RpZiBhcyBzZWVuIGJlbG93CisKK2xpYi9saWJ2Y2hvc3RpZi5zbworICAgMjUyOiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKKyAgIDgwOTogMDAwMGIxNjEgICAxOTIgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgICA5IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCisKK1dpdGggdGhpcyBleHBsaWNpdCBsaW5rLCBwbHVnaW5zIGZhaWwgZHVyaW5nIHJ1bnRpbWUKKworKGdzdC1wbHVnaW4tc2Nhbm5lcjo1NzEpOiBHU3RyZWFtZXItV0FSTklORyAqKjogRmFpbGVkIHRvIGxvYWQgcGx1Z2luICcvdXNyL2xpYi9nc3RyZWFtZXItMS4wL2xpYmdzdG9teC5zbyc6IEVycm9yIHJlbG9jYXRpbmcgL3Vzci9saWIvbGliZ3N0Z2wtMS4wLnNvLjA6IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkOiBzeW1ib2wgbm90IGZvdW5kCisoZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b3BlbmdsLnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitJbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuNC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYWQtMS4xMC40Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuNC9jb25maWd1cmUuYWMKK0BAIC03ODUsNyArNzg1LDcgQEAgY2FzZSAkaG9zdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0VHTD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9HTEVTMj15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9FR0xfUlBJPXllcworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTElCUz0iLWxiY21faG9zdCAtbHZjb3MgLWx2Y2hpcV9hcm0iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9MSUJTPSItbGJjbV9ob3N0IC1sdmNob3N0aWYgLWx2Y29zIC1sdmNoaXFfYXJtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfQ0ZMQUdTPSIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0RFRklORShVU0VfRUdMX1JQSSwgWzFdLCBbVXNlIFJQaSBwbGF0Zm9ybV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmI0MDUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3R0YS9jcmMzMi5oO2JlZ2lubGluZT0xMjtlbmRsaW5lPTI5O21kNT0yN2RiMjY5YzU3NWQxZTUzMTdmZmZjYTJkMzNiM2I1MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvdHRhL2ZpbHRlcnMuaDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0yOTttZDU9OGEwODI3MDY1NmYyZjhhZDdiYjM2NTViODMxMzhlNWEiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXNtb290aHN0cmVhbWluZy1pbXBsZW1lbnQtYWRhcHRpdmVkZW11eC1zLWdldF9saXZlX3MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXNtb290aHN0cmVhbWluZy11c2UtdGhlLWR1cmF0aW9uLWZyb20tdGhlLWxpc3Qtb2YtZnIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLW1zc2RlbXV4LWltcHJvdmVkLWxpdmUtcGxheWJhY2stc3VwcG9ydC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMjc1NzEwM2U1N2EwOTZhMWEwNWIzYWI4NWI4MzgxYWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjNkZGFlNTA2YjNhMjIzYjk0ODY5YTBkM2VlYTNlOWExMmU4NDdmOTRkMmQwZTBiOTcxMDJjZTEzZWNkNjk2NiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKLQotRVhUUkFfT0VDT05GICs9ICJXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUj0ke1JFQ0lQRV9TWVNST09UfSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMjFkYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIKQEAgLTAsMCArMSwyNiBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCisgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2ggXAorICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjU2ODNmMGVhOTFmOWUxZTA2MTNiMGY2ZjcyOTk4MGE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMmM3ZWRkZTRmNTlkNzRlYjQxNGUwNzAxYzU1MTMxZjU2MmU1YzYwNWEzY2U5YjA5MTc1NGYxMDZjMDllMzciCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCisKK0VYVFJBX09FQ09ORiArPSAiV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9lbmNvZGViaW4tTmVlZC1tb3JlLWJ1ZmZlcnMtaW4tb3V0cHV0LXF1ZXVlLWZvci1iZXR0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDFlM2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDU0MGUwMmM5MmM3NWUwOGI5MDMyNjg2M2RjNzg3ZmE1Y2FkZjlkYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTb25nIEJpbmcgPGIwNjQ5OEBmcmVlc2NhbGUuY29tPgotRGF0ZTogRnJpLCAxMyBNYXIgMjAxNSAxODowNDozMSArMDgwMAotU3ViamVjdDogW1BBVENIXSBlbmNvZGViaW46IE5lZWQgbW9yZSBidWZmZXJzIGluIG91dHB1dCBxdWV1ZSBmb3IgYmV0dGVyCi0gcGVyZm9ybWFuY2UKLQotTmVlZCBtb3JlIGJ1ZmZlcnMgaW4gb3V0cHV0IHF1ZXVlIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxOTFdCi0KLVNpZ25lZC1vZmYtYnk6IFNvbmcgQmluZyA8YjA2NDk4QGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBnc3QvZW5jb2RpbmcvZ3N0ZW5jb2RlYmluLmMgfCAgICAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC9lbmNvZGluZy9nc3RlbmNvZGViaW4uYyBiL2dzdC9lbmNvZGluZy9nc3RlbmNvZGViaW4uYwotaW5kZXggNjcyOGU1OC4uMzJkYWFlNCAxMDA2NDQKLS0tLSBhL2dzdC9lbmNvZGluZy9nc3RlbmNvZGViaW4uYwotKysrIGIvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jCi1AQCAtMTIyOCw4ICsxMjI4LDcgQEAgX2NyZWF0ZV9zdHJlYW1fZ3JvdXAgKEdzdEVuY29kZUJpbiAqIGViaW4sIEdzdEVuY29kaW5nUHJvZmlsZSAqIHNwcm9mLAotICAgICogV2Ugb25seSB1c2UgYSAxYnVmZmVyIGxvbmcgcXVldWUgaGVyZSwgdGhlIGFjdHVhbCBxdWV1ZWluZyB3aWxsIGJlIGRvbmUKLSAgICAqIGluIHRoZSBpbnB1dCBxdWV1ZSAqLwotICAgbGFzdCA9IHNncm91cC0+b3V0cXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJxdWV1ZSIsIE5VTEwpOwotLSAgZ19vYmplY3Rfc2V0IChzZ3JvdXAtPm91dHF1ZXVlLCAibWF4LXNpemUtYnVmZmVycyIsIChndWludDMyKSAxLAotLSAgICAgICJtYXgtc2l6ZS1ieXRlcyIsIChndWludDMyKSAwLCAibWF4LXNpemUtdGltZSIsIChndWludDY0KSAwLAotKyAgZ19vYmplY3Rfc2V0IChzZ3JvdXAtPm91dHF1ZXVlLCAibWF4LXNpemUtdGltZSIsIChndWludDY0KSAwLAotICAgICAgICJzaWxlbnQiLCBUUlVFLCBOVUxMKTsKLSAKLSAgIGdzdF9iaW5fYWRkIChHU1RfQklOIChlYmluKSwgc2dyb3VwLT5vdXRxdWV1ZSk7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjODE2NzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzU0Y2U5MzQ1NzI3MTc1ZmY2NmQxN2I2N2ZmNTFmNTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaCBcCi0gICAgZmlsZTovL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2ggXAotICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZjZiNDZmOGZhYzAxZWI3NzNkNTU2ZTNlZmMzNjllODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjZkMjQ1YjZiM2Q0Y2I3MzNmODFlYmIwMjEwNzRjNTI1ZWNlODNkYjBjMTBlOTMyNzk0YjMzOWI4ZDkzNWViNyIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGUwYjhiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuMi5iYgpAQCAtMCwwICsxLDE4IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1NGNlOTM0NTcyNzE3NWZmNjZkMTdiNjdmZjUxZjU4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2ggXAorICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNzdmNTM3OWM0Y2E2Nzc2MTZiNDE1ZTNiM2ZmOTU1NzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA2N2RjZTNhZmUxOTdhOTUzNmZlYTAxMDdjNzcyMTNmYWI1MzZkZmY0YTIxM2IwN2ZjNjAzNzhkNTUxMDY3NSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDItRml4LTRLLWNvbG9yaW1ldHJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ODgxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDU0NTY0NmNjY2JhMjQzMjM2ZTEwMzYyZmU3MzI1Zjg5YmU1N2RhMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CitEYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDExOjI4OjM3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHY0bDI6IEZpeCA0SyBjb2xvcmltZXRyeQorCitTaW5jZSAxLjYsIHRoZSB0cmFuc2ZlciBmdW5jdGlvbiBmb3IgQlQyMDIwIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSBCVDcwOQordG8gQlQyMDIwXzEyLiBJdCdzIHRoZSBzYW1lIGZ1bmN0aW9uLCBidXQgd2l0aCBtb3JlIHByZWNpc2lvbi4gQXMgYSBzaWRlCitlZmZlY3QsIHRoZSBWNEwyIGNvbG9ycHNhY2UgZGlkbid0IG1hdGNoIEdTdHJlYW1lciBjb2xvcnNwYWNlLiBXaGVuCitHU3RyZWFtZXIgZW5kZWQgdXAgbWFraW5nIGEgZ3Vlc3MsIGl0IHdvdWxkIG5vdCBtYXRjaCBhbnl0aGluZyBzdXBwb3J0ZWQKK2J5IFY0TDIgYW55bW9yZS4gVGhpcyB0aGlzIGJ5IHVzaW5nIEJUMjAyMF8xMiBmb3IgQlQyMDIwIGNvbG9yc3BhY2UgYW5kCitCVDIwMjAgdHJhbnNmZXIgZnVuY3Rpb24gaW4gcmVwbGFjZW1lbnQgb2YgQlQ3MDkgd2hlbmV2ZXIgYSA0SworcmVzb2x1dGlvbiBpcyBkZXRlY3RlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogTmljb2xhcyBEZWNoZXNuZSA8bmljb2xhcy5kZWNoZXNuZUBsaW5hcm8ub3JnPgorCistLS0KKyBzeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMgfCA3ICsrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jIGIvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCitpbmRleCA2MTI0NDQ1NWYuLmFhZTJjNTVlNyAxMDA2NDQKKy0tLSBhL3N5cy92NGwyL2dzdHY0bDJvYmplY3QuYworKysrIGIvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCitAQCAtMTk2MCw3ICsxOTYwLDcgQEAgZ3N0X3Y0bDJfb2JqZWN0X2dldF9jb2xvcnNwYWNlIChzdHJ1Y3QgdjRsMl9mb3JtYXQgKmZtdCwKKyAgICAgY2FzZSBWNEwyX0NPTE9SU1BBQ0VfQlQyMDIwOgorICAgICAgIGNpbmZvLT5yYW5nZSA9IEdTVF9WSURFT19DT0xPUl9SQU5HRV8xNl8yMzU7CisgICAgICAgY2luZm8tPm1hdHJpeCA9IEdTVF9WSURFT19DT0xPUl9NQVRSSVhfQlQyMDIwOworLSAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKKysgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQyMDIwXzEyOworICAgICAgIGNpbmZvLT5wcmltYXJpZXMgPSBHU1RfVklERU9fQ09MT1JfUFJJTUFSSUVTX0JUMjAyMDsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBWNEwyX0NPTE9SU1BBQ0VfU01QVEUyNDBNOgorQEAgLTIwNjIsNyArMjA2MiwxMCBAQCBnc3RfdjRsMl9vYmplY3RfZ2V0X2NvbG9yc3BhY2UgKHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10LAorIAorICAgc3dpdGNoICh0cmFuc2ZlcikgeworICAgICBjYXNlIFY0TDJfWEZFUl9GVU5DXzcwOToKKy0gICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQ3MDk7CisrICAgICAgaWYgKGZtdC0+Zm10LnBpeC5oZWlnaHQgPiAyMTYwKQorKyAgICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUMjAyMF8xMjsKKysgICAgICBlbHNlCisrICAgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQ3MDk7CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgVjRMMl9YRkVSX0ZVTkNfU1JHQjoKKyAgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfU1JHQjsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDJvYmplY3QtQWxzby1hZGQtdmlkZW9tZXRhLWlmLXRoZXJlLWlzLXBhZGRpbmctdG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyb2JqZWN0LUFsc28tYWRkLXZpZGVvbWV0YS1pZi10aGVyZS1pcy1wYWRkaW5nLXRvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTlhMjNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDJvYmplY3QtQWxzby1hZGQtdmlkZW9tZXRhLWlmLXRoZXJlLWlzLXBhZGRpbmctdG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDIyYmUwMjYxMmFkYzc1N2Y2YTQzY2VmYzZlZTY1ZWNhZWY2OGYwZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci1EYXRlOiBUaHUsIDIzIE1hciAyMDE3IDIyOjEzOjA1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHY0bDJvYmplY3Q6IEFsc28gYWRkIHZpZGVvbWV0YSBpZiB0aGVyZSBpcyBwYWRkaW5nIHRvIHRoZQotIHJpZ2h0IGFuZCBib3R0b20KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDQ3OAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxLjEwLjVdCi0KLVNpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLS0tLQotIHN5cy92NGwyL2dzdHY0bDJvYmplY3QuYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jIGIvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCi1pbmRleCA5MWM4ZmYwLi5lZDQ2NTRlIDEwMDY0NAotLS0tIGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCi0rKysgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLUBAIC0zMDcwLDkgKzMwNzAsMTAgQEAgc3RvcmVfaW5mbzoKLSAgIEdTVF9ERUJVR19PQkpFQ1QgKHY0bDJvYmplY3QtPmVsZW1lbnQsICJHb3Qgc2l6ZWltYWdlICUiIEdfR1NJWkVfRk9STUFULAotICAgICAgIGluZm8tPnNpemUpOwotIAotLSAgLyogdG8gYXZvaWQgY29waWVzIHdlIG5lZWQgdmlkZW8gbWV0YSBpZiB0b3Agb3IgbGVmdCBwYWRkaW5nICovCi0rICAvKiB0byBhdm9pZCBjb3BpZXMgd2UgbmVlZCB2aWRlbyBtZXRhIGlmIHRoZXJlIGlzIHBhZGRpbmcgKi8KLSAgIHY0bDJvYmplY3QtPm5lZWRfdmlkZW9fbWV0YSA9Ci0tICAgICAgKChhbGlnbi0+cGFkZGluZ190b3AgKyBhbGlnbi0+cGFkZGluZ19sZWZ0KSAhPSAwKTsKLSsgICAgICAoKGFsaWduLT5wYWRkaW5nX3RvcCArIGFsaWduLT5wYWRkaW5nX2xlZnQgKyBhbGlnbi0+cGFkZGluZ19yaWdodCArCi0rICAgICAgICAgIGFsaWduLT5wYWRkaW5nX2JvdHRvbSkgIT0gMCk7Ci0gCi0gICAvKiAuLi4gb3IgaWYgc3RyaWRlIGlzIG5vbiAic3RhbmRhcmQiICovCi0gICBpZiAoIXN0YW5kYXJkX3N0cmlkZSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NDQ3YmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdjRsMm9iamVjdC1BbHNvLWFkZC12aWRlb21ldGEtaWYtdGhlcmUtaXMtcGFkZGluZy10by5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiY2MwY2MxM2NkYjA3ZDQyMzc2MDBiNjg4NmI4MWYzMWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGE4NmM2MTQzNGE4YzQ0NjY1MzY1YmQwYjM1NTdhMDQwOTM3ZDFmNDRiZjY5Y2FlZTRlOWVhODE2Y2U3NGQ3ZSIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTU5M2M5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWdzdHJ0cG1wNGdwYXktc2V0LWRhZmF1bHQtdmFsdWUtZm9yLU1QRUc0LXdpdGhvdXQtY28ucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbC1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXY0bDItRml4LTRLLWNvbG9yaW1ldHJ5LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMDI1NDIxN2Q5ODA1NDg0NTMyZTA4ZmYxYzNhYTI5NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NTkxZWU3MjA4YWIzMDI4OWEzMDY1OGE4MmI3NmJmODcxNjljOTI3NTcyZDliNzk0ZjNhNDFlZDQ4ZTFlZTk2IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfSIKKworUlBST1ZJREVTXyR7UE59LXB1bHNlYXVkaW8gKz0gIiR7UE59LXB1bHNlIgorUlBST1ZJREVTXyR7UE59LXNvdXAgKz0gIiR7UE59LXNvdXBodHRwc3JjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKaW5kZXggNzA4YWQ3YS4uNjBhYTk2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCkBAIC0xOCw3ICsxOCw2IEBACiBQQUNLQUdFQ09ORklHW2NkaW9dICAgICA9ICItLWVuYWJsZS1jZGlvLC0tZGlzYWJsZS1jZGlvLGxpYmNkaW8iCiBQQUNLQUdFQ09ORklHW2R2ZHJlYWRdICA9ICItLWVuYWJsZS1kdmRyZWFkLC0tZGlzYWJsZS1kdmRyZWFkLGxpYmR2ZHJlYWQiCiBQQUNLQUdFQ09ORklHW2xhbWVdICAgICA9ICItLWVuYWJsZS1sYW1lLC0tZGlzYWJsZS1sYW1lLGxhbWUiCi1QQUNLQUdFQ09ORklHW21hZF0gICAgICA9ICItLWVuYWJsZS1tYWQsLS1kaXNhYmxlLW1hZCxsaWJtYWQiCiBQQUNLQUdFQ09ORklHW21wZWcyZGVjXSA9ICItLWVuYWJsZS1tcGVnMmRlYywtLWRpc2FibGUtbXBlZzJkZWMsbXBlZzJkZWMiCiBQQUNLQUdFQ09ORklHW21wZzEyM10gICA9ICItLWVuYWJsZS1tcGcxMjMsLS1kaXNhYmxlLW1wZzEyMyxtcGcxMjMiCiBQQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItLWVuYWJsZS14MjY0LC0tZGlzYWJsZS14MjY0LHgyNjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhMmNhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtdWdseS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYzY4ZDA1MDljOTk4MGIwYjcwYTRiODM2ZmY3M2ZmZjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM4NmM3N2NhODQ1OWNiYTQzMWVkMGI2M2RhNzgwYzcwNjJjN2NjNDgwNTVkMjIyMDI0ZDhlYWYxOThmZmE1OSIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTU2Yzg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuMi5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjYzOTAyMTkwNWEzMmNmMzAxM2NhNWJhYzFiNjk0ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxY2MzOTQyYmJmM2VhODdkYTNlMzU0MzdkNGUwMTRlOTkxYjEwM2RiMjJhNjE3NGY2MmE5OGM4OWMzZjVmNDY2IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKaW5kZXggM2Y2ZDRjMy4uYzQwZDM5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKQEAgLTQ5LDMgKzQ5LDYgQEAKIGRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUgcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMiCiAKIFBBQ0tBR0VTX0RZTkFNSUMgPSAiXiR7UE59LS4qIgorCisjIHFlbXUtbWlwczY0OiBlcnJvciB3aGlsZSBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXM6IC4uLi9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xpYmd0aHJlYWQtMi4wLnNvLjA6IEVMRiBmaWxlIGRhdGEgZW5jb2Rpbmcgbm90IGxpdHRsZS1lbmRpYW4KK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjFiOTMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYwpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKK1JERVBFTkRTXyR7UE59ICs9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCisKK1BOUkVBTCA9ICJnc3QtcHl0aG9uIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKKworUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgZ3N0cHl0aG9ucGx1Z2luIGhhcmRjb2RlcyB0aGUgbG9jYXRpb24gb2YgdGhlIGxpYnB5dGhvbiBmcm9tIHRoZSBidWlsZAorICAgICMgd29ya3NwYWNlIGFuZCB0aGVuIGZhaWxzIGF0IHJ1bnRpbWUuIFdlIGNhbiBvdmVycmlkZSBpdCB1c2luZworICAgICMgLS13aXRoLWxpYnB5dGhvbi1kaXI9JHtsaWJkaXJ9LCBidXQgaXQgc3RpbGwgZmFpbHMgYmVjYXVzZSBpdCBsb29rcyBmb3IgYQorICAgICMgc3ltbGlua2VkIGxpYnJhcnkgZW5kaW5nIGluIC5zbyBpbnN0ZWFkIG9mIHRoZSBhY3R1YWxseSBsaWJyYXJ5IHdpdGgKKyAgICAjIExJQk5BTUUuc28uTUFKT1IuTUlOT1IuIEFsdGhvdWdoIHdlIGNvdWxkIHBhdGNoIHRoZSBjb2RlIHRvIHVzZSB0aGUgcGF0aAorICAgICMgd2Ugd2FudCwgaXQgd2lsbCBicmVhayBhZ2FpbiBpZiB0aGUgbGlicmFyeSB2ZXJzaW9uIGV2ZXIgY2hhbmdlcy4gV2UgbmVlZAorICAgICMgdG8gdGhpbmsgYWJvdXQgdGhlIGJlc3Qgd2F5IG9mIGhhbmRsaW5nIHRoaXMgYW5kIHBvc3NpYmx5IGNvbnN1bHQKKyAgICAjIHVwc3RyZWFtLgorICAgICMKKyAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCisgICAgIyBnc3QtcHl0aG9uMS4wLgorICAgIGZpbmQgIiR7RH0iIFwKKyAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCisgICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAorICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAorICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAorICAgICAgICAtZGVsZXRlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmRjMDViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZGE1YzlmYTQyMjkwYmMzMDA2NjYxYzg2OWUwNzZmZmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjRjYzMyYWQ0NmE2NTNlMWFlMmYyN2FjMmExNjA3OGIwMDA3NWM5MTA2YjI3ODRhMWE4ZDFmMzFjNTA2OWU0NyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzM0ZGVhZTRlMzk1Y2EwN2U3MjVhYjAwNzZhNWY3NDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKaW5kZXggNzE5MWY5OC4uNjgxNzNjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYwpAQCAtMzYsMyArMzYsNSBAQAogCiBkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIHBhdGNoX2d0a19kb2NfbWFrZWZpbGVzIgogCisjIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWE5YTUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZjU4N2ZhNjM5M2UwOWJjMjZmODg0NTEwNTk2ZTMwNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZjZlMTJmZDRlMzU2OGVlMTkwZGMyNGU1N2U0YzNhODc4OTcxYzNhM2ZiNjkwNGE5Njc0NDA0ZmFjMjU2ZGU2IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDI2Y2NhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMjI3NTdjYWIxODNmNWI5NzAwODZlOTEwMWM2MGE5OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGJhOTI2NGU4YWU2ZTQ0MDI5MzMyOGU3NTllNDA0NTZmMTYxYWE2NjA3N2IzMTQzZGQwNzU4MTEzNjE5MGIzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLmluYwppbmRleCBlZjA3MzRiLi5hYmZjYzY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkuaW5jCkBAIC0yMiwxMiArMjIsMjEgQEAKIAogUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgogCisjIE9wZW5HTCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgZ2x4LCBlZ2wsIG9yIG5vIEdMLiBCeSBkZWZhdWx0LAorIyB0cnkgZGV0ZWN0aW5nIFgxMSBmaXJzdCwgYW5kIGlmIGZvdW5kICh3aXRoIE9wZW5HTCksIHVzZSBHTFgsCisjIG90aGVyd2lzZSB0cnkgdG8gY2hlY2sgaWYgRUdMIGNhbiBiZSB1c2VkLgorUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ2dseCcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAgICAgJ29wZW5nbCcsICdlZ2wnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBkKSwgZCl9IgorCiBQQUNLQUdFQ09ORklHID8/PSAiZHJtIFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCB4MTEnLCAnZ2x4JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUdbZHJtXSA9ICItLWVuYWJsZS1kcm0sLS1kaXNhYmxlLWRybSx1ZGV2IGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCx2aXJ0dWFsL21lc2EiCitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgsdmlydHVhbC9saWJnbCIKIFBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhyYW5kciBsaWJ4cmVuZGVyIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YzY2ZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC12YWFwaS5pbmMKLVNSQ19VUklbbWQ1c3VtXSA9ICIzMThhZjE3ZjkwNjYzNzU3MGI2MWRkN2JlOWI1NTgxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwM2U2OTA2MjE1OTRkOWY5NDk1ZDg2YzdkYWM4Yjg1OTBiM2ExNTA0NjI3NzBlZDA3MGRjNzZmNjZhNzBkZTc1IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vdmFhcGl2aWRlb2J1ZmZlcnBvb2wtY3JlYXRlLWFsbG9jYXRvci1pZi1uZWVkZWQucGF0Y2giCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmQ5Zjg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi4yLmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtdmFhcGkuaW5jCitTUkNfVVJJW21kNXN1bV0gPSAiYmVhMDE1ZjMzNjk2YTE1YWQ5NTc1ZmI3MWFmODYyZWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjNjNzE0ZTA0NzRiM2M3YWU2ZmY4ODg0YWViZjg1MDNhMWJjM2RlZDMzNWZhMmQyYjJhYzMxNzg4NDY2MTYzYSIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCmluZGV4IDcyZDdjZTYuLjMyOTE5MzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKQEAgLTI1LDEwICsyNSwxMCBAQAogUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKIFBBQ0tBR0VDT05GSUdbZ3N0LXRyYWNlci1ob29rc10gPSAiLS1lbmFibGUtZ3N0LXRyYWNlci1ob29rcywtLWRpc2FibGUtZ3N0LXRyYWNlci1ob29rcywiCiBQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS13aXRoLXVud2luZCwtLXdpdGhvdXQtdW53aW5kLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbZHddID0gIi0td2l0aC1kdywtLXdpdGhvdXQtZHcsZWxmdXRpbHMiCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKLSAgICAtLWRpc2FibGUtZG9jYm9vayBcCiAgICAgLS1kaXNhYmxlLWV4YW1wbGVzIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMzJmZDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSBhMGNiNDFiYTcyOTEzZWRhMDYwNDlkMjY2ZWM0M2VhOGY1MmI1YmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgorRGF0ZTogRnJpLCAxMSBBdWcgMjAxNyAyMToyMTozNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEFkZCBzd2l0Y2hlcyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpYmR3IGFuZAorIGxpYnVud2luZAorCitbT3JpZ2luYWwgcGF0Y2ggbW9kaWZpZWQgdG8gYmUgYXBwbGljYWJsZSB0byAxLjEyLjJdCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4MTkzXQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+CistLS0KKyBjb25maWd1cmUuYWMgfCAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiNmIyOTIzLi4zMmRkODI3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC04MjEsMTUgKzgyMSw0MSBAQCBmaQorIEFNX0NPTkRJVElPTkFMKEhBVkVfR1RLLCB0ZXN0ICJ4JEhBVkVfR1RLIiA9ICJ4eWVzIikKKyAKKyBkbmwgbGlidW53aW5kIGlzIG9wdGlvbmFsbHkgdXNlZCBieSB0aGUgbGVha3MgdHJhY2VyCistUEtHX0NIRUNLX01PRFVMRVMoVU5XSU5ELCBsaWJ1bndpbmQsIEhBVkVfVU5XSU5EPXllcywgSEFWRV9VTldJTkQ9bm8pCistaWYgdGVzdCAieCRIQVZFX1VOV0lORCIgPSAieHllcyI7IHRoZW4KKy0gIEFDX0RFRklORShIQVZFX1VOV0lORCwgMSwgW2xpYnVud2luZCBhdmFpbGFibGVdKQorK0FDX0FSR19XSVRIKFt1bndpbmRdLFtBU19IRUxQX1NUUklORyhbLS13aXRoLXVud2luZD15ZXN8bm98YXV0b10sW3VzZSBsaWJ1bndpbmRdKV0sCisrICAgICAgICAgICAgW10sIFt3aXRoX3Vud2luZD1hdXRvXSkKKytpZiBbIHRlc3QgIngke3dpdGhfdW53aW5kfSIgIT0gInhubyIgXTsgdGhlbgorKyAgUEtHX0NIRUNLX01PRFVMRVMoVU5XSU5ELCBbbGlidW53aW5kXSwKKysgICAgICBbCisrICAgICAgICBIQVZFX1VOV0lORD15ZXMKKysgICAgICAgIEFDX0RFRklORShIQVZFX1VOV0lORCwgMSwgW2xpYnVud2luZCBhdmFpbGFibGVdKQorKyAgICAgIF0sCisrICAgICAgWworKyAgICAgICAgSEFWRV9VTldJTkQ9bm8KKysgICAgICAgIGlmIFsgdGVzdCAieCR7d2l0aF91bndpbmR9IiA9ICJ4eWVzIiBdOyB0aGVuCisrICAgICAgICAgIEFDX01TR19FUlJPUihbY291bGQgbm90IGZpbmQgbGlidW53aW5kXSkKKysgICAgICAgIGZpCisrICAgICAgXSkKKytlbHNlCisrICBIQVZFX1VOV0lORD1ubworIGZpCisgCisgZG5sIGxpYmR3IGlzIG9wdGlvbmFsbHkgdXNlZCB0byBhZGQgc291cmNlIGxpbmVzIGFuZCBudW1iZXJzIHRvIGJhY2t0cmFjZXMKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhEVywgbGliZHcsIEhBVkVfRFc9eWVzLCBIQVZFX0RXPW5vKQorLWlmIHRlc3QgIngkSEFWRV9EVyIgPSAieHllcyI7IHRoZW4KKy0gIEFDX0RFRklORShIQVZFX0RXLCAxLCBbbGliZHcgYXZhaWxhYmxlXSkKKytBQ19BUkdfV0lUSChbZHddLFtBU19IRUxQX1NUUklORyhbLS13aXRoLWR3PXllc3xub3xhdXRvXSxbdXNlIGxpYmR3XSldLAorKyAgICAgICAgICAgIFtdLCBbd2l0aF9kdz1hdXRvXSkKKytpZiBbIHRlc3QgIngke3dpdGhfZHd9IiAhPSAieG5vIiBdOyB0aGVuCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhEVywgW2xpYmR3XSwKKysgICAgICBbCisrICAgICAgICBIQVZFX0RXPXllcworKyAgICAgICAgQUNfREVGSU5FKEhBVkVfRFcsIDEsIFtsaWJkdyBhdmFpbGFibGVdKQorKyAgICAgIF0sCisrICAgICAgWworKyAgICAgICAgSEFWRV9EVz1ubworKyAgICAgICAgaWYgWyB0ZXN0ICJ4JHt3aXRoX2R3fSIgPSAieHllcyIgXTsgdGhlbgorKyAgICAgICAgICBBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBmaW5kIGxpYmR3XSkKKysgICAgICAgIGZpCisrICAgICAgXSkKKytlbHNlCisrICBIQVZFX0RXPW5vCisgZmkKKyAKKyBkbmwgQ2hlY2sgZm9yIGJhY2t0cmFjZSgpIGZyb20gbGliYworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC9kZXRlcm1pbmlzdGljLXVud2luZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2RldGVybWluaXN0aWMtdW53aW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzllNmNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2RldGVybWluaXN0aWMtdW53aW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotTWFrZSB0aGUgZGV0ZWN0aW9uIG9mIGxpYnVud2luZCBkZXRlcm1pbmlzdGljLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGFjODhmYjIuLjE4MmMxOWEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTgyOSwzICs4MjgsMCBAQCBBTV9DT05ESVRJT05BTChIQVZFX0dUSywgdGVzdCAieCRIQVZFX0dUSyIgPSAieHllcyIpCi0tZG5sIGxpYnVud2luZCBpcyBvcHRpb25hbGx5IHVzZWQgYnkgdGhlIGxlYWtzIHRyYWNlcgotLVBLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgbGlidW53aW5kLCBIQVZFX1VOV0lORD15ZXMsIEhBVkVfVU5XSU5EPW5vKQotLQotQEAgLTgzOSwzICs4MzYsNyBAQCBBQ19DSEVDS19GVU5DKGJhY2t0cmFjZSwgWwotLWlmIHRlc3QgIngkSEFWRV9VTldJTkQiID0gInh5ZXMiOyB0aGVuCi0tICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSkKLS1maQotK2RubCBsaWJ1bndpbmQgaXMgb3B0aW9uYWxseSB1c2VkIGJ5IHRoZSBsZWFrcyB0cmFjZXIKLStBQ19BUkdfV0lUSChbdW53aW5kXSxbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC11bndpbmRdLFt1c2UgbGlidW53aW5kXSldLAotKyAgICAgICAgICAgIFtdLCBbd2l0aF91bndpbmQ9eWVzXSkKLStBU19JRihbdGVzdCAiJHdpdGhfdW53aW5kIiA9IHllc10sCi0rICAgICAgW1BLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgbGlidW53aW5kKQotKyAgICAgICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSldCi0rKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTY3OTkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9kZXRlcm1pbmlzdGljLXVud2luZC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiN2M5MWE5N2U0YTJkYzgxZWFmZDU5ZDBhMmY4YjBkNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTBjMmY1YWY1MGE2Y2M2YzBhM2YzZWQ0M2JkZDhiNWUyYmZmMDBiYWNmYjc2NmQ0YmUxMzllYzA2ZDhiNTIxOCIKLQotUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDQxYTU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjQ3NDg4NjA2MjE2MDdmZmQ5NjI0NGZiNzljODZjMjM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZGUzZjM5YTJlYTk4NGY5ZTA3Y2UwOTI1MDI4NWNlOTFmNmUzNjE5ZDE4Njg4OWY3NWI1MTU0ZWNmOTk0YmEiCisKK1MgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL0NWRS0yMDE3LTEzNzEyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9DVkUtMjAxNy0xMzcxMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWVjNzY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9DVkUtMjAxNy0xMzcxMi5wYXRjaApAQCAtMCwwICsxLDMwOSBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2xhbWUuY3ZzLnNvdXJjZWZvcmdlLm5ldC92aWV3dmMvbGFtZS9sYW1lL2xpYm1wM2xhbWUvaWQzdGFnLmM/cjE9MS43OSZyMj0xLjgwXQorCitCYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTctMTM3MTIgZm9yIGxhbWUuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCistLS0gYS9saWJtcDNsYW1lL2lkM3RhZy5jCTIwMTcvMDgvMjIgMTk6NDQ6MDUJMS43OQorKysrIGIvbGlibXAzbGFtZS9pZDN0YWcuYwkyMDE3LzA4LzI4IDE1OjM5OjUxCTEuODAKK0BAIC0xOTQsNyArMTk0LDExIEBACisgfQorICNlbmRpZgorIAorLQorK3N0YXRpYyBpbnQKKytpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwobGFtZV90IGdmcCkKKyt7CisrICAgIHJldHVybiAoZ2ZwICYmIGdmcC0+aW50ZXJuYWxfZmxhZ3MpID8gMCA6IDE7CisrfQorIAorIHN0YXRpYyBpbnQKKyBpZDN2Ml9hZGRfdWNzMl9sbmcobGFtZV90IGdmcCwgdWludDMyX3QgZnJhbWVfaWQsIHVuc2lnbmVkIHNob3J0IGNvbnN0ICpkZXNjLCB1bnNpZ25lZCBzaG9ydCBjb25zdCAqdGV4dCk7CitAQCAtMjM4LDggKzI0Miw3IEBACisgc3RhdGljIHZvaWQKKyBpZDN2MkFkZEF1ZGlvRHVyYXRpb24obGFtZV90IGdmcCwgZG91YmxlIG1zKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwICE9IDAgPyBnZnAtPmludGVybmFsX2ZsYWdzIDogMDsKKy0gICAgU2Vzc2lvbkNvbmZpZ190IGNvbnN0ICpjb25zdCBjZmcgPSAmZ2ZjLT5jZmc7CisrICAgIFNlc3Npb25Db25maWdfdCBjb25zdCAqY29uc3QgY2ZnID0gJmdmcC0+aW50ZXJuYWxfZmxhZ3MtPmNmZzsgLyogY2FsbGVyIGNoZWNrZWQgcG9pbnRlcnMgKi8KKyAgICAgY2hhciAgICBidWZmZXJbMTAyNF07CisgICAgIGRvdWJsZSBjb25zdCBtYXhfdWxvbmcgPSBNQVhfVV8zMl9OVU07CisgICAgIHVuc2lnbmVkIGxvbmcgcGxheWxlbmd0aF9tczsKK0BAIC0yODAsNyArMjgzLDEyIEBACisgdm9pZAorIGlkM3RhZ19pbml0KGxhbWVfdCBnZnApCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICAgICBmcmVlX2lkM3RhZyhnZmMpOworICAgICBtZW1zZXQoJmdmYy0+dGFnX3NwZWMsIDAsIHNpemVvZiBnZmMtPnRhZ19zcGVjKTsKKyAgICAgZ2ZjLT50YWdfc3BlYy5nZW5yZV9pZDN2MSA9IEdFTlJFX05VTV9VTktOT1dOOworQEAgLTI5Myw3ICszMDEsMTIgQEAKKyB2b2lkCisgaWQzdGFnX2FkZF92MihsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyAmPSB+VjFfT05MWV9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IEFERF9WMl9GTEFHOworIH0KK0BAIC0zMDEsNyArMzE0LDEyIEBACisgdm9pZAorIGlkM3RhZ192MV9vbmx5KGxhbWVfdCBnZnApCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzICY9IH4oQUREX1YyX0ZMQUcgfCBWMl9PTkxZX0ZMQUcpOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IFYxX09OTFlfRkxBRzsKKyB9CitAQCAtMzA5LDcgKzMyNywxMiBAQAorIHZvaWQKKyBpZDN0YWdfdjJfb25seShsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyAmPSB+VjFfT05MWV9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IFYyX09OTFlfRkxBRzsKKyB9CitAQCAtMzE3LDcgKzM0MCwxMiBAQAorIHZvaWQKKyBpZDN0YWdfc3BhY2VfdjEobGFtZV90IGdmcCkKKyB7CistICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IDA7CisrCisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgJj0gflYyX09OTFlfRkxBRzsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyB8PSBTUEFDRV9WMV9GTEFHOworIH0KK0BAIC0zMzEsNyArMzU5LDEyIEBACisgdm9pZAorIGlkM3RhZ19zZXRfcGFkKGxhbWVfdCBnZnAsIHNpemVfdCBuKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyAmPSB+VjFfT05MWV9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IFBBRF9WMl9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IEFERF9WMl9GTEFHOworQEAgLTU4MywyMiArNjE2LDI5IEBACisgaW50CisgaWQzdGFnX3NldF9hbGJ1bWFydChsYW1lX3QgZ2ZwLCBjb25zdCBjaGFyICppbWFnZSwgc2l6ZV90IHNpemUpCisgeworLSAgICBpbnQgICAgIG1pbWV0eXBlID0gMDsKKy0gICAgdW5zaWduZWQgY2hhciBjb25zdCAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyIGNvbnN0ICopIGltYWdlOworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworLQorLSAgICAvKiBkZXRlcm1pbmUgTUlNRSB0eXBlIGZyb20gdGhlIGFjdHVhbCBpbWFnZSBkYXRhICovCistICAgIGlmICgyIDwgc2l6ZSAmJiBkYXRhWzBdID09IDB4RkYgJiYgZGF0YVsxXSA9PSAweEQ4KSB7CistICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX0pQRUc7CistICAgIH0KKy0gICAgZWxzZSBpZiAoNCA8IHNpemUgJiYgZGF0YVswXSA9PSAweDg5ICYmIHN0cm5jbXAoKGNvbnN0IGNoYXIgKikgJmRhdGFbMV0sICJQTkciLCAzKSA9PSAwKSB7CistICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX1BORzsKKy0gICAgfQorLSAgICBlbHNlIGlmICg0IDwgc2l6ZSAmJiBzdHJuY21wKChjb25zdCBjaGFyICopIGRhdGEsICJHSUY4IiwgNCkgPT0gMCkgeworLSAgICAgICAgbWltZXR5cGUgPSBNSU1FVFlQRV9HSUY7CisrICAgIGludCAgICAgbWltZXR5cGUgPSBNSU1FVFlQRV9OT05FOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworICAgICB9CistICAgIGVsc2UgeworLSAgICAgICAgcmV0dXJuIC0xOworKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKworKyAgICBpZiAoaW1hZ2UgIT0gMCkgeworKyAgICAgICAgdW5zaWduZWQgY2hhciBjb25zdCAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyIGNvbnN0ICopIGltYWdlOworKyAgICAgICAgLyogZGV0ZXJtaW5lIE1JTUUgdHlwZSBmcm9tIHRoZSBhY3R1YWwgaW1hZ2UgZGF0YSAqLworKyAgICAgICAgaWYgKDIgPCBzaXplICYmIGRhdGFbMF0gPT0gMHhGRiAmJiBkYXRhWzFdID09IDB4RDgpIHsKKysgICAgICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX0pQRUc7CisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmICg0IDwgc2l6ZSAmJiBkYXRhWzBdID09IDB4ODkgJiYgc3RybmNtcCgoY29uc3QgY2hhciAqKSAmZGF0YVsxXSwgIlBORyIsIDMpID09IDApIHsKKysgICAgICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX1BORzsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYgKDQgPCBzaXplICYmIHN0cm5jbXAoKGNvbnN0IGNoYXIgKikgZGF0YSwgIkdJRjgiLCA0KSA9PSAwKSB7CisrICAgICAgICAgICAgbWltZXR5cGUgPSBNSU1FVFlQRV9HSUY7CisrICAgICAgICB9CisrICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICB9CisgICAgIH0KKyAgICAgaWYgKGdmYy0+dGFnX3NwZWMuYWxidW1hcnQgIT0gMCkgeworICAgICAgICAgZnJlZShnZmMtPnRhZ19zcGVjLmFsYnVtYXJ0KTsKK0BAIC02MDYsNyArNjQ2LDcgQEAKKyAgICAgICAgIGdmYy0+dGFnX3NwZWMuYWxidW1hcnRfc2l6ZSA9IDA7CisgICAgICAgICBnZmMtPnRhZ19zcGVjLmFsYnVtYXJ0X21pbWV0eXBlID0gTUlNRVRZUEVfTk9ORTsKKyAgICAgfQorLSAgICBpZiAoc2l6ZSA8IDEpIHsKKysgICAgaWYgKHNpemUgPCAxIHx8IG1pbWV0eXBlID09IE1JTUVUWVBFX05PTkUpIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgICAgIGdmYy0+dGFnX3NwZWMuYWxidW1hcnQgPSBsYW1lX2NhbGxvYyh1bnNpZ25lZCBjaGFyLCBzaXplKTsKK0BAIC05NTksNiArOTk5LDkgQEAKKyAgICAgaWYgKGZyYW1lX2lkID09IDApIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIGlmICh0ZXh0ID09IDApIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CitAQCAtMTAwOCw2ICsxMDUxLDkgQEAKKyAgICAgaWYgKGZyYW1lX2lkID09IDApIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIGlmICh0ZXh0ID09IDApIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CitAQCAtMTAzNyw2ICsxMDgzLDkgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2NvbW1lbnRfbGF0aW4xKGxhbWVfdCBnZnAsIGNoYXIgY29uc3QgKmxhbmcsIGNoYXIgY29uc3QgKmRlc2MsIGNoYXIgY29uc3QgKnRleHQpCisgeworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIHJldHVybiBpZDN2Ml9hZGRfbGF0aW4xKGdmcCwgSURfQ09NTUVOVCwgbGFuZywgZGVzYywgdGV4dCk7CisgfQorIAorQEAgLTEwNDQsNiArMTA5Myw5IEBACisgaW50CisgaWQzdGFnX3NldF9jb21tZW50X3V0ZjE2KGxhbWVfdCBnZnAsIGNoYXIgY29uc3QgKmxhbmcsIHVuc2lnbmVkIHNob3J0IGNvbnN0ICpkZXNjLCB1bnNpZ25lZCBzaG9ydCBjb25zdCAqdGV4dCkKKyB7CisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAgICAgcmV0dXJuIGlkM3YyX2FkZF91Y3MyKGdmcCwgSURfQ09NTUVOVCwgbGFuZywgZGVzYywgdGV4dCk7CisgfQorIAorQEAgLTEwNTQsNiArMTEwNiw5IEBACisgaW50CisgaWQzdGFnX3NldF9jb21tZW50X3VjczIobGFtZV90IGdmcCwgY2hhciBjb25zdCAqbGFuZywgdW5zaWduZWQgc2hvcnQgY29uc3QgKmRlc2MsIHVuc2lnbmVkIHNob3J0IGNvbnN0ICp0ZXh0KQorIHsKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorICAgICByZXR1cm4gaWQzdGFnX3NldF9jb21tZW50X3V0ZjE2KGdmcCwgbGFuZywgZGVzYywgdGV4dCk7CisgfQorIAorQEAgLTEyNDQsOSArMTI5OSw5IEBACisgaW50CisgaWQzdGFnX3NldF9nZW5yZShsYW1lX3QgZ2ZwLCBjb25zdCBjaGFyICpnZW5yZSkKKyB7CistICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcCAhPSAwID8gZ2ZwLT5pbnRlcm5hbF9mbGFncyA6IDA7CisgICAgIGludCAgICAgcmV0ID0gMDsKKy0gICAgaWYgKGdlbnJlICYmICpnZW5yZSkgeworKyAgICBpZiAoZ2ZjICYmIGdlbnJlICYmICpnZW5yZSkgeworICAgICAgICAgaW50IGNvbnN0IG51bSA9IGxvb2t1cEdlbnJlKGdlbnJlKTsKKyAgICAgICAgIGlmIChudW0gPT0gLTEpIHJldHVybiBudW07CisgICAgICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IENIQU5HRURfRkxBRzsKK0BAIC0xNTM5LDYgKzE1OTQsOSBAQAorIGludAorIGlkM3RhZ19zZXRfZmllbGR2YWx1ZShsYW1lX3QgZ2ZwLCBjb25zdCBjaGFyICpmaWVsZHZhbHVlKQorIHsKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorICAgICBpZiAoZmllbGR2YWx1ZSAmJiAqZmllbGR2YWx1ZSkgeworICAgICAgICAgaWYgKHN0cmxlbihmaWVsZHZhbHVlKSA8IDUgfHwgZmllbGR2YWx1ZVs0XSAhPSAnPScpIHsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CitAQCAtMTU1MSw2ICsxNjA5LDkgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2ZpZWxkdmFsdWVfdXRmMTYobGFtZV90IGdmcCwgY29uc3QgdW5zaWduZWQgc2hvcnQgKmZpZWxkdmFsdWUpCisgeworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIGlmIChmaWVsZHZhbHVlICYmICpmaWVsZHZhbHVlKSB7CisgICAgICAgICBzaXplX3QgZHggPSBoYXNVY3MyQnl0ZU9yZGVyTWFya2VyKGZpZWxkdmFsdWVbMF0pOworICAgICAgICAgdW5zaWduZWQgc2hvcnQgY29uc3Qgc2VwYXJhdG9yID0gZnJvbUxhdGluMUNoYXIoZmllbGR2YWx1ZSwgJz0nKTsKK0BAIC0xNTgxLDIwICsxNjQyLDIxIEBACisgaW50CisgaWQzdGFnX3NldF9maWVsZHZhbHVlX3VjczIobGFtZV90IGdmcCwgY29uc3QgdW5zaWduZWQgc2hvcnQgKmZpZWxkdmFsdWUpCisgeworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIHJldHVybiBpZDN0YWdfc2V0X2ZpZWxkdmFsdWVfdXRmMTYoZ2ZwLCBmaWVsZHZhbHVlKTsKKyB9CisgCisgc2l6ZV90CisgbGFtZV9nZXRfaWQzdjJfdGFnKGxhbWVfdCBnZnAsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmM7CistICAgIGlmIChnZnAgPT0gMCkgeworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CistICAgIGlmIChnZmMgPT0gMCkgeworLSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKyAgICAgaWYgKHRlc3RfdGFnX3NwZWNfZmxhZ3MoZ2ZjLCBWMV9PTkxZX0ZMQUcpKSB7CisgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorQEAgLTE3MzYsNyArMTc5OCwxMiBAQAorIGludAorIGlkM3RhZ193cml0ZV92MihsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICNpZiAwCisgICAgIGRlYnVnX3RhZ19zcGVjX2ZsYWdzKGdmYywgIndyaXRlIHYyIik7CisgI2VuZGlmCitAQCAtMTgzNywxMCArMTkwNCwxNSBAQAorIGludAorIGlkM3RhZ193cml0ZV92MShsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqY29uc3QgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyogZ2ZjID0gMDsKKyAgICAgc2l6ZV90ICBpLCBuLCBtOworICAgICB1bnNpZ25lZCBjaGFyIHRhZ1sxMjhdOworIAorKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrCisgICAgIG0gPSBzaXplb2YodGFnKTsKKyAgICAgbiA9IGxhbWVfZ2V0X2lkM3YxX3RhZyhnZnAsIHRhZywgbSk7CisgICAgIGlmIChuID4gbSkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYgppbmRleCAwNDc3NjExLi5lNTMyMWJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYgpAQCAtMTQsNyArMTQsOSBAQAogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9sYW1lL2xhbWUtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL25vLWd0azEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2ggIgorICAgICAgICAgICBmaWxlOi8vbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MTIucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4NDgzNWIzMTNkNGE4YjY4ZjUzNDk4MTZkMzNlMDdjZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNDM0NmI0MTU4ZTRhZjNiZDlmMmUxOTRiYjIzZWI0NzNjNzVmYjczNzcwMTE1MjMzNTMxOTZiMTliOWEyM2ZmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWcvMDAwMS1GaXgtZ3BlcmYtMy4xLWluY29tcGF0aWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJpZDN0YWcvbGliaWQzdGFnLzAwMDEtRml4LWdwZXJmLTMuMS1pbmNvbXBhdGliaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRmNDlmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJpZDN0YWcvbGliaWQzdGFnLzAwMDEtRml4LWdwZXJmLTMuMS1pbmNvbXBhdGliaWxpdHkucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA5MWZjZjY2YjkxODJjNzVjZDJiOTZkODg5OTFkNWExYzYzMDdkNGI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIgQXVnIDIwMTcgMTY6Mjc6NTIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGdwZXJmIDMuMSBpbmNvbXBhdGliaWxpdHkuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb21wYXQuaCAgICB8IDIgKy0KKyBmcmFtZXR5cGUuaCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbXBhdC5oIGIvY29tcGF0LmgKK2luZGV4IDhhZjcxZWMuLmIzZDgwZDkgMTAwNjQ0CistLS0gYS9jb21wYXQuaAorKysrIGIvY29tcGF0LmgKK0BAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBpZDNfY29tcGF0IHsKKyB9OworIAorIHN0cnVjdCBpZDNfY29tcGF0IGNvbnN0ICppZDNfY29tcGF0X2xvb2t1cChyZWdpc3RlciBjaGFyIGNvbnN0ICosCistCQkJCQkgICByZWdpc3RlciB1bnNpZ25lZCBpbnQpOworKwkJCQkJICAgcmVnaXN0ZXIgc2l6ZV90KTsKKyAKKyBpbnQgaWQzX2NvbXBhdF9maXh1cChzdHJ1Y3QgaWQzX3RhZyAqKTsKKyAKK2RpZmYgLS1naXQgYS9mcmFtZXR5cGUuaCBiL2ZyYW1ldHlwZS5oCitpbmRleCBkZDA2NGIyLi5iNWI3NTkzIDEwMDY0NAorLS0tIGEvZnJhbWV0eXBlLmgKKysrKyBiL2ZyYW1ldHlwZS5oCitAQCAtMzcsNiArMzcsNiBAQCBleHRlcm4gc3RydWN0IGlkM19mcmFtZXR5cGUgY29uc3QgaWQzX2ZyYW1ldHlwZV91bmtub3duOworIGV4dGVybiBzdHJ1Y3QgaWQzX2ZyYW1ldHlwZSBjb25zdCBpZDNfZnJhbWV0eXBlX29ic29sZXRlOworIAorIHN0cnVjdCBpZDNfZnJhbWV0eXBlIGNvbnN0ICppZDNfZnJhbWV0eXBlX2xvb2t1cChyZWdpc3RlciBjaGFyIGNvbnN0ICosCistCQkJCQkJIHJlZ2lzdGVyIHVuc2lnbmVkIGludCk7CisrCQkJCQkJIHJlZ2lzdGVyIHNpemVfdCk7CisgCisgIyBlbmRpZgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWdfMC4xNS4xYi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJpZDN0YWcvbGliaWQzdGFnXzAuMTUuMWIuYmIKaW5kZXggMDVhOGE0Ny4uZjYxMzlkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWdfMC4xNS4xYi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGliaWQzdGFnL2xpYmlkM3RhZ18wLjE1LjFiLmJiCkBAIC05LDEwICs5LDEzIEBACiBERVBFTkRTID0gInpsaWIgZ3BlcmYtbmF0aXZlIgogUFIgPSAicjciCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLm1hcnMub3JnL3B1Yi9tcGVnL2xpYmlkM3RhZy0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbWFkL2xpYmlkM3RhZy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vYWRkcGtnY29uZmlnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29ic29sZXRlX2F1dG9tYWtlX21hY3Jvcy5wYXRjaCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1ncGVyZi0zLjEtaW5jb21wYXRpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL21hZC9maWxlcy9saWJpZDN0YWcvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3Byb2plY3RzL21hZC9maWxlcy9saWJpZDN0YWcvKD9QPHB2ZXI+LiopLyQiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlNTgwOGFkOTk3YmEzMmM0OTg4MDM4MjIwNzg3NDhjMyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2M2RhNGY2ZTc5OTcyNzhmOGEzZmVmNGM2YTM3MmQzNDJmNzA1MDUxZDFlZWI2YTQ2YTg2YjAzNjEwZTI2MTUxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2IyOTY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiUE5HIGltYWdlIGZvcm1hdCBkZWNvZGluZyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJwbmcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTGlicG5nIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjdkODgzNzQxMDg2M2Y5ODIxYmJkNjA2NTM2ZjAzMjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcG5nLmg7ZW5kbGluZT0xNDQ7bWQ1PWFiZmEwNDk3ZmViMzkzYjU4NDJkM2Q4MmMxMDA5NTIwIgotREVQRU5EUyA9ICJ6bGliIgotCi1TUkNfVVJJID0gIiR7R0VOVE9PX01JUlJPUn0vbGlicG5nLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQyNTM1NGY4NmMzOTIzMThkMzFhZWRjYTcxMDE5MzcyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4ZDNlYzlkZTZiNWRiNzQwZmVmYWM3MDJjMzdmZmNmOTZhZTQ2Y2IxN2MxOGMxNTQ0NjM1YTM4NTJmNzhmN2EiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NmVhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMaWJwbmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZjIxZTRlMWY3OTU4MTBiNWVhNDkxYjMzM2JjNmVhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9YWYzMDBjNDE5YTQ1YzUzYThkMmRhYTBiN2QxNjdhNjYiCitERVBFTkRTID0gInpsaWIiCisKK0xJQlYgPSAiMTYiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjFiMzRlYWI0NDAyNjNlMzJjZmEzOWQxOTQxM2ZhZDU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMmE2MDJkZTA0OTE2YjJiNWNlNmY5MDE4MjljYWY0MTk1MTllNmExNmNjOWNkN2MxYzkxMTg3ZDNlZThiNDEiCisKK01JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKKyMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyIKKworRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTEvQ1ZFLTIwMTctODM2Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxL0NWRS0yMDE3LTgzNjIucGF0Y2gKaW5kZXggNzcxZWM5Mi4uOWVlN2U0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTEvQ1ZFLTIwMTctODM2Mi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMS9DVkUtMjAxNy04MzYyLnBhdGNoCkBAIC0xNCwyMCArMTQsMTcgQEAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9lcmlrZC9saWJzbmRmaWxlL2NvbW1pdC9lZjFkYmIyZGYxYzBlNzQxNDg2NjQ2ZGU0MGJkNjM4YTljNGNkODA4XQogCiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotCi1yZW1vdmVkIGh1bmsgIzIgYXMgaXQgd2FzIG9ubHkgY29zbWVudGljIGFuZCBjYXVzZWQgYSBtZXJnZSBjb25mbGljdC4KLXNpZ25lZi1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAtLS0KICBzcmMvZmxhYy5jIHwgMTEgKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogbGlic25kZmlsZS0xLjAuMjcvc3JjL2ZsYWMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnNuZGZpbGUtMS4wLjI3Lm9yaWcvc3JjL2ZsYWMuYwotKysrIGxpYnNuZGZpbGUtMS4wLjI3L3NyYy9mbGFjLmMKK2RpZmYgLS1naXQgYS9zcmMvZmxhYy5jIGIvc3JjL2ZsYWMuYworaW5kZXggNWE0ZjhjMi4uZTRmOWFhYSAxMDA2NDQKKy0tLSBhL3NyYy9mbGFjLmMKKysrKyBiL3NyYy9mbGFjLmMKIEBAIC0xNjksNiArMTY5LDE0IEBAIGZsYWNfYnVmZmVyX2NvcHkgKFNGX1BSSVZBVEUgKnBzZikKLSAJY29uc3QgRkxBQ19faW50MzIqIGNvbnN0ICpidWZmZXIgPSBwZmxhYy0+d2J1ZmZlciA7Ci0gCXVuc2lnbmVkIGkgPSAwLCBqLCBvZmZzZXQgOworIAljb25zdCBpbnQzMl90KiBjb25zdCAqYnVmZmVyID0gcGZsYWMtPndidWZmZXIgOworIAl1bnNpZ25lZCBpID0gMCwgaiwgb2Zmc2V0LCBjaGFubmVscywgbGVuIDsKICAKICsJaWYgKHBzZi0+c2YuY2hhbm5lbHMgIT0gKGludCkgZnJhbWUtPmhlYWRlci5jaGFubmVscykKICsJewlwc2ZfbG9nX3ByaW50ZiAocHNmLCAiRXJyb3I6IEZMQUMgZnJhbWUgY2hhbmdlZCBmcm9tICVkIHRvICVkIGNoYW5uZWxzXG4iCkBAIC00MCw3ICszNywxNSBAQAogIAkvKgogIAkqKglmcmFtZS0+aGVhZGVyLmJsb2Nrc2l6ZSBpcyB2YXJpYWJsZSBhbmQgd2UncmUgdXNpbmcgYSBjb25zdGFudCBibG9ja3NpemUKICAJKioJb2YgRkxBQ19fTUFYX0JMT0NLX1NJWkUuCi1AQCAtNDEwLDcgKzQxOCw3IEBAIHNmX2ZsYWNfbWV0YV9jYWxsYmFjayAoY29uc3QgRkxBQ19fU3RyZWEKK0BAIC0yMDIsNyArMjEwLDYgQEAgZmxhY19idWZmZXJfY29weSAoU0ZfUFJJVkFURSAqcHNmKQorIAkJcmV0dXJuIDAgOworIAkJfSA7CisgCistCisgCWxlbiA9IFNGX01JTiAocGZsYWMtPmxlbiwgZnJhbWUtPmhlYWRlci5ibG9ja3NpemUpIDsKKyAKKyAJaWYgKHBmbGFjLT5yZW1haW4gJSBjaGFubmVscyAhPSAwKQorQEAgLTQzNiw3ICs0NDMsNyBAQCBzZl9mbGFjX21ldGFfY2FsbGJhY2sgKGNvbnN0IEZMQUNfX1N0cmVhbURlY29kZXIgKiBVTlVTRUQgKGRlY29kZXIpLCBjb25zdCBGTEFDXwogIAl7CWNhc2UgRkxBQ19fTUVUQURBVEFfVFlQRV9TVFJFQU1JTkZPIDoKICAJCQlpZiAocHNmLT5zZi5jaGFubmVscyA+IDAgJiYgcHNmLT5zZi5jaGFubmVscyAhPSAoaW50KSBtZXRhZGF0YS0+ZGF0YS5zdHJlYW1faW5mby5jaGFubmVscykKICAJCQl7CXBzZl9sb2dfcHJpbnRmIChwc2YsICJFcnJvcjogRkxBQyBzdHJlYW0gY2hhbmdlZCBmcm9tICVkIHRvICVkIGNoYW5uZWxzXG4iCkBAIC00OSwzICs1NCw2IEBACiAgCQkJCQkJCQkJcHNmLT5zZi5jaGFubmVscywgbWV0YWRhdGEtPmRhdGEuc3RyZWFtX2luZm8uY2hhbm5lbHMpIDsKICAJCQkJcHNmLT5lcnJvciA9IFNGRV9GTEFDX0NIQU5ORUxfQ09VTlRfQ0hBTkdFRCA7CiAgCQkJCXJldHVybiA7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZkZjRlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkF1ZGlvIGZvcm1hdCBDb252ZXJzaW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1lZ2EtbmVyZC5jb20vbGlic25kZmlsZSIKLUFVVEhPUiA9ICJFcmlrIGRlIENhc3RybyBMb3BvIgotREVQRU5EUyA9ICJmbGFjIGxpYm9nZyBsaWJ2b3JiaXMgc3FsaXRlMyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1lZ2EtbmVyZC5jb20vbGlic25kZmlsZS9maWxlcy9saWJzbmRmaWxlLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy02ODkyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTgzNjEtODM2NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy04MzYyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTgzNjMucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZkMWQ5N2M2MDc3ZjAzYjVkOTg0ZDc5NTZmZmVkYjdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzOTE5NTJmMjdmNGE5MmNlYjJiNGMwNjQ5M2FjMTA3ODk2ZWQ2Yzc2YmU5YTYxM2E0NzMxZjA3NmQzMGZhYzAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU3N2ZlOTMyMDI3MzZiNDdjMDcwMzU5MTBmNDc5NzRhIgotCi1DVkVfUFJPRFVDVCA9ICJsaWJzbmRmaWxlIgotCi1TID0gIiR7V09SS0RJUn0vbGlic25kZmlsZS0ke1BWfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi1kb19jb25maWd1cmVfcHJlcGVuZF9hcm0oKSB7Ci0JZXhwb3J0IGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPTEKLQlleHBvcnQgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9NjQKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MWFjODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJBdWRpbyBmb3JtYXQgQ29udmVyc2lvbiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tZWdhLW5lcmQuY29tL2xpYnNuZGZpbGUiCitBVVRIT1IgPSAiRXJpayBkZSBDYXN0cm8gTG9wbyIKK0RFUEVORFMgPSAiZmxhYyBsaWJvZ2cgbGlidm9yYmlzIHNxbGl0ZTMiCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5tZWdhLW5lcmQuY29tL2xpYnNuZGZpbGUvZmlsZXMvbGlic25kZmlsZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNjg5Mi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy04MzYxLTgzNjUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctODM2Mi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy04MzYzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NDZiNWY5OGNlODlhYzYwY2RiMDYwZmNkMzk4MjQ3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmYzMzkyOWYwNDJmYTMzM2FlZDFlODkyM2FhNjI4YzNlZTllMWViODU1MTI2ODZjNTUwOTJkMWU1YTlkZmE5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzdmZTkzMjAyNzM2YjQ3YzA3MDM1OTEwZjQ3OTc0YSIKKworQ1ZFX1BST0RVQ1QgPSAibGlic25kZmlsZSIKKworUyA9ICIke1dPUktESVJ9L2xpYnNuZGZpbGUtJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhJywgZCl9IgorUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcKKworZG9fY29uZmlndXJlX3ByZXBlbmRfYXJtKCkgeworCWV4cG9ydCBhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZT0xCisJZXhwb3J0IGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPTY0Cit9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMDkzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAwOTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwOWJiN2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAwOTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIDc4N2MwZWU5MDY0MzBiNzcyZjMzY2E1MGI5N2I4YjVjYTA3MGZhZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBTYXQsIDMgRGVjIDIwMTYgMTY6NDA6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiB0b29scy90aWZmY3AuYzogZml4IHVpbnQzMiB1bmRlcmZsb3cvb3ZlcmZsb3cgdGhhdCBjYW4KLSBjYXVzZSBoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdy4gUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjEwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMTAwOTMKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci0KLS0tLQotIENoYW5nZUxvZyAgICAgIHwgNyArKysrKysrCi0gdG9vbHMvdGlmZmNwLmMgfCA2ICsrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IHRpZmYtNC4wLjcvdG9vbHMvdGlmZmNwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvdG9vbHMvdGlmZmNwLmMKLSsrKyB0aWZmLTQuMC43L3Rvb2xzL3RpZmZjcC5jCi1AQCAtMTE2Myw3ICsxMTYzLDcgQEAgYmFkOgotIAotIHN0YXRpYyB2b2lkCi0gY3BTdHJpcFRvVGlsZSh1aW50OCogb3V0LCB1aW50OCogaW4sCi0tICAgIHVpbnQzMiByb3dzLCB1aW50MzIgY29scywgaW50IG91dHNrZXcsIGludCBpbnNrZXcpCi0rICAgIHVpbnQzMiByb3dzLCB1aW50MzIgY29scywgaW50IG91dHNrZXcsIGludDY0IGluc2tldykKLSB7Ci0gCXdoaWxlIChyb3dzLS0gPiAwKSB7Ci0gCQl1aW50MzIgaiA9IGNvbHM7Ci1AQCAtMTMyMCw3ICsxMzIwLDcgQEAgREVDTEFSRXJlYWRGdW5jKHJlYWRDb250aWdUaWxlc0ludG9CdWZmZQotIAl0ZGF0YV90IHRpbGVidWY7Ci0gCXVpbnQzMiBpbWFnZXcgPSBUSUZGU2NhbmxpbmVTaXplKGluKTsKLSAJdWludDMyIHRpbGV3ICA9IFRJRkZUaWxlUm93U2l6ZShpbik7Ci0tCWludCBpc2tldyA9IGltYWdldyAtIHRpbGV3OwotKwlpbnQ2NCBpc2tldyA9IChpbnQ2NClpbWFnZXcgLSAoaW50NjQpdGlsZXc7Ci0gCXVpbnQ4KiBidWZwID0gKHVpbnQ4KikgYnVmOwotIAl1aW50MzIgdHcsIHRsOwotIAl1aW50MzIgcm93OwotQEAgLTEzNDgsNyArMTM0OCw3IEBAIERFQ0xBUkVyZWFkRnVuYyhyZWFkQ29udGlnVGlsZXNJbnRvQnVmZmUKLSAJCQkJc3RhdHVzID0gMDsKLSAJCQkJZ290byBkb25lOwotIAkJCX0KLS0JCQlpZiAoY29sYiArIHRpbGV3ID4gaW1hZ2V3KSB7Ci0rCQkJaWYgKGNvbGIgPiBpc2tldykgewotIAkJCQl1aW50MzIgd2lkdGggPSBpbWFnZXcgLSBjb2xiOwotIAkJCQl1aW50MzIgb3NrZXcgPSB0aWxldyAtIHdpZHRoOwotIAkJCQljcFN0cmlwVG9UaWxlKGJ1ZnAgKyBjb2xiLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFjOTBjNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gMTg1NTQwN2M0ZTVhMjdhZGUwMDZiMjZjMmRlYzhhMzE3NDVjMzU2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IEZyaSwgMiBEZWMgMjAxNiAyMTo1Njo1NiArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX3JlYWQuYywgbGlidGlmZi90aWZmaW9wLmg6IGZpeCB1aW50MzIgb3ZlcmZsb3cKLSBpbiBUSUZGUmVhZEVuY29kZWRTdHJpcCgpIHRoYXQgY2F1c2VkIGFuIGludGVnZXIgZGl2aXNpb24gYnkgemVyby4gUmVwb3J0ZWQKLSBieSBBZ29zdGlubyBTYXJ1YmJvLiBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTk2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNi0xMDI2NgotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICB8IDcgKysrKysrKwotIGxpYnRpZmYvdGlmX3JlYWQuYyB8IDIgKy0KLSBsaWJ0aWZmL3RpZmZpb3AuaCAgfCA0ICsrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNi0xMi0wMiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKyAgICAgICAqIGxpYnRpZmYvdGlmX3JlYWQuYywgbGlidGlmZi90aWZmaW9wLmg6IGZpeCB1aW50MzIgb3ZlcmZsb3cgaW4KLSsgICAgICAgVElGRlJlYWRFbmNvZGVkU3RyaXAoKSB0aGF0IGNhdXNlZCBhbiBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8uCi0rICAgICAgIFJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uCi0rICAgICAgIEZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTYKLSsKLSAyMDE3LTA3LTE1ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIHRvb2xzL3RpZmYycGRmLmM6IHByZXZlbnQgaGVhcCBidWZmZXIgb3ZlcmZsb3cgd3JpdGUgaW4gIlJhdyIKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3JlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9yZWFkLmMKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3JlYWQuYwotQEAgLTM0Niw3ICszNDYsNyBAQCBUSUZGUmVhZEVuY29kZWRTdHJpcChUSUZGKiB0aWYsIHVpbnQzMiBzCi0gCXJvd3NwZXJzdHJpcD10ZC0+dGRfcm93c3BlcnN0cmlwOwotIAlpZiAocm93c3BlcnN0cmlwPnRkLT50ZF9pbWFnZWxlbmd0aCkKLSAJCXJvd3NwZXJzdHJpcD10ZC0+dGRfaW1hZ2VsZW5ndGg7Ci0tCXN0cmlwc3BlcnBsYW5lPSgodGQtPnRkX2ltYWdlbGVuZ3RoK3Jvd3NwZXJzdHJpcC0xKS9yb3dzcGVyc3RyaXApOwotKwlzdHJpcHNwZXJwbGFuZT0gVElGRmhvd21hbnlfMzJfbWF4dWludF9jb21wYXQodGQtPnRkX2ltYWdlbGVuZ3RoLCByb3dzcGVyc3RyaXApOwotIAlzdHJpcGlucGxhbmU9KHN0cmlwJXN0cmlwc3BlcnBsYW5lKTsKLSAJcGxhbmU9KHVpbnQxNikoc3RyaXAvc3RyaXBzcGVycGxhbmUpOwotIAlyb3dzPXRkLT50ZF9pbWFnZWxlbmd0aC1zdHJpcGlucGxhbmUqcm93c3BlcnN0cmlwOwotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZmaW9wLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZmaW9wLmgKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmZmlvcC5oCi1AQCAtMjUwLDYgKzI1MCwxMCBAQCBzdHJ1Y3QgdGlmZiB7Ci0gI2RlZmluZSBUSUZGaG93bWFueV8zMih4LCB5KSAoKCh1aW50MzIpeCA8ICgweGZmZmZmZmZmIC0gKHVpbnQzMikoeS0xKSkpID8gXAotIAkJCSAgICgoKCh1aW50MzIpKHgpKSsoKCh1aW50MzIpKHkpKS0xKSkvKCh1aW50MzIpKHkpKSkgOiBcCi0gCQkJICAgMFUpCi0rLyogVmFyaWFudCBvZiBUSUZGaG93bWFueV8zMigpIHRoYXQgZG9lc24ndCByZXR1cm4gMCBpZiB4IGNsb3NlIHRvIE1BWFVJTlQuICovCi0rLyogQ2F1dGlvbjogVElGRmhvd21hbnlfMzJfbWF4dWludF9jb21wYXQoeCx5KSp5IG1pZ2h0IG92ZXJmbG93ICovCi0rI2RlZmluZSBUSUZGaG93bWFueV8zMl9tYXh1aW50X2NvbXBhdCh4LCB5KSBcCi0rCQkJICAgKCgodWludDMyKSh4KSAvICh1aW50MzIpKHkpKSArICgoKCh1aW50MzIpKHgpICUgKHVpbnQzMikoeSkpICE9IDApID8gMSA6IDApKQotICNkZWZpbmUgVElGRmhvd21hbnk4XzMyKHgpICgoKHgpJjB4MDcpPygodWludDMyKSh4KT4+MykrMToodWludDMyKSh4KT4+MykKLSAjZGVmaW5lIFRJRkZyb3VuZHVwXzMyKHgsIHkpIChUSUZGaG93bWFueV8zMih4LHkpKih5KSkKLSAjZGVmaW5lIFRJRkZob3dtYW55XzY0KHgsIHkpICgoKCh1aW50NjQpKHgpKSsoKCh1aW50NjQpKHkpKS0xKSkvKCh1aW50NjQpKHkpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YzU3OTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGY4MjAzYzdhYjFkYmQ3YjVjNTkxNTg1NzZiZWM3ZGE5MDE5MWY0MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBTYXQsIDMgRGVjIDIwMTYgMTE6MTU6MTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBtYWtlIE9KUEVHRGVjb2RlKCkgZWFybHkgZXhpdCBpbiBjYXNlCi0gb2YgZmFpbHVyZSBpbiBPSlBFR1ByZURlY29kZSgpLiBUaGlzIHdpbGwgYXZvaWQgYSBkaXZpZGUgYnkgemVybywgYW5kCi0gcG90ZW50aWFsIG90aGVyIGlzc3Vlcy4gUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjExCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNi0xMDI2NwotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgfCA3ICsrKysrKysKLSBsaWJ0aWZmL3RpZl9vanBlZy5jIHwgOCArKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA3MzM5YzFhLi42NmZiY2RjIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE2LTEyLTAzIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rIAotKwkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IG1ha2UgT0pQRUdEZWNvZGUoKSBlYXJseSBleGl0IGluIGNhc2Ugb2YgZmFpbHVyZSBpbgotKwlPSlBFR1ByZURlY29kZSgpLiBUaGlzIHdpbGwgYXZvaWQgYSBkaXZpZGUgYnkgemVybywgYW5kIHBvdGVudGlhbCBvdGhlciBpc3N1ZXMuCi0rCVJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTEKLSsKLSAyMDE2LTEyLTAyIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfcmVhZC5jLCBsaWJ0aWZmL3RpZmZpb3AuaDogZml4IHVpbnQzMiBvdmVyZmxvdyBpbgotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX29qcGVnLmMgYi9saWJ0aWZmL3RpZl9vanBlZy5jCi1pbmRleCAxY2NjM2Y5Li5mMTllOGZkIDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfb2pwZWcuYwotKysrIGIvbGlidGlmZi90aWZfb2pwZWcuYwotQEAgLTI0NCw2ICsyNDQsNyBAQCB0eXBlZGVmIGVudW0gewotIAotIHR5cGVkZWYgc3RydWN0IHsKLSAJVElGRiogdGlmOwotKyAgICAgICAgaW50IGRlY29kZXJfb2s7Ci0gCSNpZm5kZWYgTElCSlBFR19FTkNBUF9FWFRFUk5BTAotIAlKTVBfQlVGIGV4aXRfam1wYnVmOwotIAkjZW5kaWYKLUBAIC03MjIsNiArNzIzLDcgQEAgT0pQRUdQcmVEZWNvZGUoVElGRiogdGlmLCB1aW50MTYgcykKLSAJCX0KLSAJCXNwLT53cml0ZV9jdXJzdHJpbGUrKzsKLSAJfQotKwlzcC0+ZGVjb2Rlcl9vayA9IDE7Ci0gCXJldHVybigxKTsKLSB9Ci0gCi1AQCAtNzg0LDggKzc4NiwxNCBAQCBPSlBFR1ByZURlY29kZVNraXBTY2FubGluZXMoVElGRiogdGlmKQotIHN0YXRpYyBpbnQKLSBPSlBFR0RlY29kZShUSUZGKiB0aWYsIHVpbnQ4KiBidWYsIHRtc2l6ZV90IGNjLCB1aW50MTYgcykKLSB7Ci0rICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBtb2R1bGVbXT0iT0pQRUdEZWNvZGUiOwotIAlPSlBFR1N0YXRlKiBzcD0oT0pQRUdTdGF0ZSopdGlmLT50aWZfZGF0YTsKLSAJKHZvaWQpczsKLSsgICAgICAgIGlmKCAhc3AtPmRlY29kZXJfb2sgKQotKyAgICAgICAgewotKyAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLG1vZHVsZSwiQ2Fubm90IGRlY29kZTogZGVjb2RlciBub3QgY29ycmVjdGx5IGluaXRpYWxpemVkIik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0gCWlmIChzcC0+bGlianBlZ19qcGVnX3F1ZXJ5X3N0eWxlPT0wKQotIAl7Ci0gCQlpZiAoT0pQRUdEZWNvZGVSYXcodGlmLGJ1ZixjYyk9PTApCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYjk4MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDUzOTdhNDE3ZTYxMjU4YzY5MjA5OTA0ZTY1MmExZjQwOWVjM2I5ZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBGcmksIDIgRGVjIDIwMTYgMjI6MTM6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiB0b29scy90aWZmY3AuYzogYXZvaWQgdWludDMyIHVuZGVyZmxvdyBpbiBjcERlY29kZWRTdHJpcHMKLSB0aGF0IGNhbiBjYXVzZSB2YXJpb3VzIGlzc3Vlcywgc3VjaCBhcyBidWZmZXIgb3ZlcmZsb3dzIGluIHRoZSBsaWJyYXJ5LgotIFJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU5OAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMjY4Ci1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi0tLS0KLSBDaGFuZ2VMb2cgICAgICB8IDcgKysrKysrKwotIHRvb2xzL3RpZmZjcC5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiB0aWZmLTQuMC43L3Rvb2xzL3RpZmZjcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL3Rvb2xzL3RpZmZjcC5jCi0rKysgdGlmZi00LjAuNy90b29scy90aWZmY3AuYwotQEAgLTk4NSw3ICs5ODUsNyBAQCBERUNMQVJFY3BGdW5jKGNwRGVjb2RlZFN0cmlwcykKLSAJCXRzdHJpcF90IHMsIG5zID0gVElGRk51bWJlck9mU3RyaXBzKGluKTsKLSAJCXVpbnQzMiByb3cgPSAwOwotIAkJX1RJRkZtZW1zZXQoYnVmLCAwLCBzdHJpcHNpemUpOwotLQkJZm9yIChzID0gMDsgcyA8IG5zOyBzKyspIHsKLSsJCWZvciAocyA9IDA7IHMgPCBucyAmJiByb3cgPCBpbWFnZWxlbmd0aDsgcysrKSB7Ci0gCQkJdHNpemVfdCBjYyA9IChyb3cgKyByb3dzcGVyc3RyaXAgPiBpbWFnZWxlbmd0aCkgPwotIAkJCSAgICBUSUZGVlN0cmlwU2l6ZShpbiwgaW1hZ2VsZW5ndGggLSByb3cpIDogc3RyaXBzaXplOwotIAkJCWlmIChUSUZGUmVhZEVuY29kZWRTdHJpcChpbiwgcywgYnVmLCBjYykgPCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWY0YTE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLUZyb20gMTBmNzJkZDIzMjg0OWQwMTQyYTA2ODhiY2M5YWE3MTAyNWYxMjBhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IEZyaSwgMiBEZWMgMjAxNiAyMzowNTo1MSArMDAwMAotU3ViamVjdDogW1BBVENIIDIvNF0gKiBsaWJ0aWZmL3RpZl9waXhhcmxvZy5jLCBsaWJ0aWZmL3RpZl9sdXYuYzogZml4Ci0gaGVhcC1iYXNlZCBidWZmZXIgb3ZlcmZsb3cgb24gZ2VuZXJhdGlvbiBvZiBQaXhhckxvZyAvIExVViBjb21wcmVzc2VkIGZpbGVzLAotIHdpdGggQ29sb3JNYXAsIFRyYW5zZmVyRnVuY3Rpb24gYXR0YWNoZWQgYW5kIG5hc3R5IHBsYXlzIHdpdGggYml0c3BlcnNhbXBsZS4KLSBUaGUgZml4IGZvciBMVVYgaGFzIG5vdCBiZWVuIHRlc3RlZCwgYnV0IHN1ZmZlcnMgZnJvbSB0aGUgc2FtZSBraW5kIG9mIGlzc3VlCi0gb2YgUGl4YXJMb2cuIFJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTYtMTAyNjkKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKwotIGxpYnRpZmYvdGlmX2x1di5jICAgICAgfCAxOCArKysrKysrKysrKysrKy0tLS0KLSBsaWJ0aWZmL3RpZl9waXhhcmxvZy5jIHwgMTcgKysrKysrKysrKysrKysrLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDJlOTEzYjYuLjBhMmMyYTcgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsNCArMSwxNCBAQAotIDIwMTYtMTItMDMgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9waXhhcmxvZy5jLCBsaWJ0aWZmL3RpZl9sdXYuYzogZml4IGhlYXAtYmFzZWQgYnVmZmVyCi0rCW92ZXJmbG93IG9uIGdlbmVyYXRpb24gb2YgUGl4YXJMb2cgLyBMVVYgY29tcHJlc3NlZCBmaWxlcywgd2l0aAotKwlDb2xvck1hcCwgVHJhbnNmZXJGdW5jdGlvbiBhdHRhY2hlZCBhbmQgbmFzdHkgcGxheXMgd2l0aCBiaXRzcGVyc2FtcGxlLgotKwlUaGUgZml4IGZvciBMVVYgaGFzIG5vdCBiZWVuIHRlc3RlZCwgYnV0IHN1ZmZlcnMgZnJvbSB0aGUgc2FtZSBraW5kCi0rCW9mIGlzc3VlIG9mIFBpeGFyTG9nLgotKwlSZXBvcnRlZCBieSBBZ29zdGlubyBTYXJ1YmJvLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA0Ci0rCi0rMjAxNi0xMi0wMyBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotICAKLSAJKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBtYWtlIE9KUEVHRGVjb2RlKCkgZWFybHkgZXhpdCBpbiBjYXNlIG9mIGZhaWx1cmUgaW4KLSAJT0pQRUdQcmVEZWNvZGUoKS4gVGhpcyB3aWxsIGF2b2lkIGEgZGl2aWRlIGJ5IHplcm8sIGFuZCBwb3RlbnRpYWwgb3RoZXIgaXNzdWVzLgotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2x1di5jIGIvbGlidGlmZi90aWZfbHV2LmMKLWluZGV4IGY2OGE5YjEuLmU2NzgzZGIgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9sdXYuYwotKysrIGIvbGlidGlmZi90aWZfbHV2LmMKLUBAIC0xNTgsNiArMTU4LDcgQEAKLSB0eXBlZGVmIHN0cnVjdCBsb2dMdXZTdGF0ZSBMb2dMdXZTdGF0ZTsKLSAKLSBzdHJ1Y3QgbG9nTHV2U3RhdGUgewotKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlcl9zdGF0ZTsgIC8qIDEgaWYgZW5jb2RlciBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgKi8KLSAJaW50ICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhZm10OyAgIC8qIHVzZXIgZGF0YSBmb3JtYXQgKi8KLSAJaW50ICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX21ldGg7ICAgIC8qIGVuY29kaW5nIG1ldGhvZCAqLwotIAlpbnQgICAgICAgICAgICAgICAgICAgICBwaXhlbF9zaXplOyAgICAgLyogYnl0ZXMgcGVyIHBpeGVsICovCi1AQCAtMTU1Miw2ICsxNTUzLDcgQEAgTG9nTHV2U2V0dXBFbmNvZGUoVElGRiogdGlmKQotIAkJICAgIHRkLT50ZF9waG90b21ldHJpYywgIm11c3QgYmUgZWl0aGVyIExvZ0xVViBvciBMb2dMIik7Ci0gCQlicmVhazsKLSAJfQotKwlzcC0+ZW5jb2Rlcl9zdGF0ZSA9IDE7Ci0gCXJldHVybiAoMSk7Ci0gbm90c3VwcG9ydGVkOgotIAlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAotQEAgLTE1NjMsMTkgKzE1NjUsMjcgQEAgbm90c3VwcG9ydGVkOgotIHN0YXRpYyB2b2lkCi0gTG9nTHV2Q2xvc2UoVElGRiogdGlmKQotIHsKLSsgICAgICAgIExvZ0x1dlN0YXRlKiBzcCA9IChMb2dMdXZTdGF0ZSopIHRpZi0+dGlmX2RhdGE7Ci0gCVRJRkZEaXJlY3RvcnkgKnRkID0gJnRpZi0+dGlmX2RpcjsKLSAKLSsJYXNzZXJ0KHNwICE9IDApOwotIAkvKgotIAkgKiBGb3IgY29uc2lzdGVuY3ksIHdlIGFsd2F5cyB3YW50IHRvIHdyaXRlIG91dCB0aGUgc2FtZQotIAkgKiBiaXRzcGVyc2FtcGxlIGFuZCBzYW1wbGVmb3JtYXQgZm9yIG91ciBUSUZGIGZpbGUsCi0gCSAqIHJlZ2FyZGxlc3Mgb2YgdGhlIGRhdGEgZm9ybWF0IGJlaW5nIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgotIAkgKiBTaW5jZSB0aGlzIHJvdXRpbmUgaXMgY2FsbGVkIGFmdGVyIHRhZ3MgaGF2ZSBiZWVuIHNldCBidXQKLSAJICogYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIHJlY29yZGVkIGluIHRoZSBmaWxlLCB3ZSByZXNldCB0aGVtIGhlcmUuCi0rICAgICAgICAgKiBOb3RlOiB0aGlzIGlzIHJlYWxseSBhIG5hc3R5IGFwcHJvYWNoLiBTZWUgUGl4YXJMb2dDbG9zZQotIAkgKi8KLS0JdGQtPnRkX3NhbXBsZXNwZXJwaXhlbCA9Ci0tCSAgICAodGQtPnRkX3Bob3RvbWV0cmljID09IFBIT1RPTUVUUklDX0xPR0wpID8gMSA6IDM7Ci0tCXRkLT50ZF9iaXRzcGVyc2FtcGxlID0gMTY7Ci0tCXRkLT50ZF9zYW1wbGVmb3JtYXQgPSBTQU1QTEVGT1JNQVRfSU5UOwotKyAgICAgICAgaWYoIHNwLT5lbmNvZGVyX3N0YXRlICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICAvKiBTZWUgUGl4YXJMb2dDbG9zZS4gTWlnaHQgYXZvaWQgaXNzdWVzIHdpdGggdGFncyB3aG9zZSBzaXplIGRlcGVuZHMKLSsgICAgICAgICAgICAgKiBvbiB0aG9zZSBiZWxvdywgYnV0IG5vdCBjb21wbGV0ZWx5IHN1cmUgdGhpcyBpcyBlbm91Z2guICovCi0rICAgICAgICAgICAgdGQtPnRkX3NhbXBsZXNwZXJwaXhlbCA9Ci0rICAgICAgICAgICAgICAgICh0ZC0+dGRfcGhvdG9tZXRyaWMgPT0gUEhPVE9NRVRSSUNfTE9HTCkgPyAxIDogMzsKLSsgICAgICAgICAgICB0ZC0+dGRfYml0c3BlcnNhbXBsZSA9IDE2OwotKyAgICAgICAgICAgIHRkLT50ZF9zYW1wbGVmb3JtYXQgPSBTQU1QTEVGT1JNQVRfSU5UOwotKyAgICAgICAgfQotIH0KLSAKLSBzdGF0aWMgdm9pZAotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX3BpeGFybG9nLmMgYi9saWJ0aWZmL3RpZl9waXhhcmxvZy5jCi1pbmRleCBkMTI0NmMzLi5hYTk5YmM5IDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfcGl4YXJsb2cuYwotKysrIGIvbGlidGlmZi90aWZfcGl4YXJsb2cuYwotQEAgLTEyMzMsOCArMTIzMywxMCBAQCBQaXhhckxvZ1Bvc3RFbmNvZGUoVElGRiogdGlmKQotIHN0YXRpYyB2b2lkCi0gUGl4YXJMb2dDbG9zZShUSUZGKiB0aWYpCi0gewotKyAgICAgICAgUGl4YXJMb2dTdGF0ZSogc3AgPSAoUGl4YXJMb2dTdGF0ZSopIHRpZi0+dGlmX2RhdGE7Ci0gCVRJRkZEaXJlY3RvcnkgKnRkID0gJnRpZi0+dGlmX2RpcjsKLSAKLSsJYXNzZXJ0KHNwICE9IDApOwotIAkvKiBJbiBhIHJlYWxseSBzbmVha3kgKGFuZCByZWFsbHkgaW5jb3JyZWN0LCBhbmQgdW50cnV0aGZ1bCwgYW5kCi0gCSAqIHRyb3VibGVzb21lLCBhbmQgZXJyb3ItcHJvbmUpIG1hbmV1dmVyIHRoYXQgY29tcGxldGVseSBnb2VzIGFnYWluc3QKLSAJICogdGhlIHNwaXJpdCBvZiBUSUZGLCBhbmQgYnJlYWtzIFRJRkYsIG9uIGNsb3NlLCB3ZSBjb3ZlcnRseQotQEAgLTEyNDMsOCArMTI0NSwxOSBAQCBQaXhhckxvZ0Nsb3NlKFRJRkYqIHRpZikKLSAJICogcmVhZGVycyB0aGF0IGRvbid0IGtub3cgYWJvdXQgUGl4YXJMb2csIG9yIGhvdyB0byBzZXQKLSAJICogdGhlIFBJWEFSTE9HREFURk1UIHBzZXVkby10YWcuCi0gCSAqLwotLQl0ZC0+dGRfYml0c3BlcnNhbXBsZSA9IDg7Ci0tCXRkLT50ZF9zYW1wbGVmb3JtYXQgPSBTQU1QTEVGT1JNQVRfVUlOVDsKLSsKLSsgICAgICAgIGlmIChzcC0+c3RhdGUmUExTVEFURV9JTklUKSB7Ci0rICAgICAgICAgICAgLyogV2UgdGVzdCB0aGUgc3RhdGUgdG8gYXZvaWQgYW4gaXNzdWUgc3VjaCBhcyBpbgotKyAgICAgICAgICAgICAqIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDQKLSsgICAgICAgICAgICAgKiBXaGF0IGFwcGVuZHMgaW4gdGhhdCBjYXNlIGlzIHRoYXQgdGhlIGJpdHNwZXJzYW1wbGUgaXMgMSBhbmQKLSsgICAgICAgICAgICAgKiBhIFRyYW5zZmVyRnVuY3Rpb24gaXMgc2V0LiBUaGUgc2l6ZSBvZiB0aGUgVHJhbnNmZXJGdW5jdGlvbgotKyAgICAgICAgICAgICAqIGRlcGVuZHMgb24gMTw8Yml0c3BlcnNhbXBsZS4gU28gaWYgd2UgaW5jcmVhc2UgaXQsIGFuIGFjY2VzcwotKyAgICAgICAgICAgICAqIG91dCBvZiB0aGUgYnVmZmVyIHdpbGwgaGFwcGVuIGF0IGRpcmVjdG9yeSBmbHVzaGluZy4KLSsgICAgICAgICAgICAgKiBBbm90aGVyIG9wdGlvbiB3b3VsZCBiZSB0byBjbGVhciB0aG9zZSB0YXJncy4gCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgdGQtPnRkX2JpdHNwZXJzYW1wbGUgPSA4OwotKyAgICAgICAgICAgIHRkLT50ZF9zYW1wbGVmb3JtYXQgPSBTQU1QTEVGT1JNQVRfVUlOVDsKLSsgICAgICAgIH0KLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNzAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNhZDZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1Gcm9tIDZlNzA0MmM2MWUzMDBjZjk5NzFjNjQ1Yzc5ZDA1ZGU5NzRiMjQzMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBTYXQsIDMgRGVjIDIwMTYgMTE6MDI6MTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdICogbGlidGlmZi90aWZfZGlycmVhZC5jOiBtb2RpZnkKLSBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcCgpIHRvIGluc3RhbmNpYXRlIGNvbXB1dGUgbnRyaXBzIGFzCi0gVElGRmhvd21hbnlfMzIodGQtPnRkX2ltYWdlbGVuZ3RoLCByb3dzcGVyc3RyaXApLCBpbnN0ZWFkIG9mIGEgbG9naWMgYmFzZWQgb24KLSB0aGUgdG90YWwgc2l6ZSBvZiBkYXRhLiBXaGljaCBpcyBmYXVsdHkgaXMgdGhlIHRvdGFsIHNpemUgb2YgZGF0YSBpcyBub3QKLSBzdWZmaWNpZW50IHRvIGZpbGwgdGhlIHdob2xlIGltYWdlLCBhbmQgdGh1cyByZXN1bHRzIGluIHJlYWRpbmcgb3V0c2lkZSBvZgotIHRoZSBTdHJpcEJ5Q291bnRzL1N0cmlwT2Zmc2V0cyBhcnJheXMgd2hlbiB1c2luZyBUSUZGUmVhZFNjYW5saW5lKCkuIFJlcG9ydGVkCi0gYnkgQWdvc3Rpbm8gU2FydWJiby4gRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwOC4KLQotKiBsaWJ0aWZmL3RpZl9zdHJpcC5jOiByZXZlcnQgdGhlIGNoYW5nZSBpbiBUSUZGTnVtYmVyT2ZTdHJpcHMoKSBkb25lCi1mb3IgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NyAvIENWRS0yMDE2LTkyNzMgc2luY2UKLXRoZSBhYm92ZSBjaGFuZ2UgaXMgYSBiZXR0ZXIgZml4IHRoYXQgbWFrZXMgaXQgdW5uZWNlc3NhcnkuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNi0xMDI3MAotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKwotIGxpYnRpZmYvdGlmX2RpcnJlYWQuYyB8IDIyICsrKysrKysrKystLS0tLS0tLS0tLS0KLSBsaWJ0aWZmL3RpZl9zdHJpcC5jICAgfCAgOSAtLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAwYTJjMmE3Li42ZTMwZTQxIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDUgKzEsMjAgQEAKLSAyMDE2LTEyLTAzIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0rCSogbGlidGlmZi90aWZfZGlycmVhZC5jOiBtb2RpZnkgQ2hvcFVwU2luZ2xlVW5jb21wcmVzc2VkU3RyaXAoKSB0bwotKwlpbnN0YW5jaWF0ZSBjb21wdXRlIG50cmlwcyBhcyBUSUZGaG93bWFueV8zMih0ZC0+dGRfaW1hZ2VsZW5ndGgsIHJvd3NwZXJzdHJpcCksCi0rCWluc3RlYWQgb2YgYSBsb2dpYyBiYXNlZCBvbiB0aGUgdG90YWwgc2l6ZSBvZiBkYXRhLiBXaGljaCBpcyBmYXVsdHkgaXMKLSsJdGhlIHRvdGFsIHNpemUgb2YgZGF0YSBpcyBub3Qgc3VmZmljaWVudCB0byBmaWxsIHRoZSB3aG9sZSBpbWFnZSwgYW5kIHRodXMKLSsJcmVzdWx0cyBpbiByZWFkaW5nIG91dHNpZGUgb2YgdGhlIFN0cmlwQnlDb3VudHMvU3RyaXBPZmZzZXRzIGFycmF5cyB3aGVuCi0rCXVzaW5nIFRJRkZSZWFkU2NhbmxpbmUoKS4KLSsJUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwOC4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9zdHJpcC5jOiByZXZlcnQgdGhlIGNoYW5nZSBpbiBUSUZGTnVtYmVyT2ZTdHJpcHMoKSBkb25lCi0rCWZvciBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3IC8gQ1ZFLTIwMTYtOTI3MyBzaW5jZQotKwl0aGUgYWJvdmUgY2hhbmdlIGlzIGEgYmV0dGVyIGZpeCB0aGF0IG1ha2VzIGl0IHVubmVjZXNzYXJ5LgotKwotKzIwMTYtMTItMDMgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9waXhhcmxvZy5jLCBsaWJ0aWZmL3RpZl9sdXYuYzogZml4IGhlYXAtYmFzZWQgYnVmZmVyCi0gCW92ZXJmbG93IG9uIGdlbmVyYXRpb24gb2YgUGl4YXJMb2cgLyBMVVYgY29tcHJlc3NlZCBmaWxlcywgd2l0aAotIAlDb2xvck1hcCwgVHJhbnNmZXJGdW5jdGlvbiBhdHRhY2hlZCBhbmQgbmFzdHkgcGxheXMgd2l0aCBiaXRzcGVyc2FtcGxlLgotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcnJlYWQuYyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotaW5kZXggM2VlYzc5Yy4uNTcwZDBjMyAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotKysrIGIvbGlidGlmZi90aWZfZGlycmVhZC5jCi1AQCAtNTUwMiw4ICs1NTAyLDcgQEAgQ2hvcFVwU2luZ2xlVW5jb21wcmVzc2VkU3RyaXAoVElGRiogdGlmKQotIAl1aW50NjQgcm93YmxvY2tieXRlczsKLSAJdWludDY0IHN0cmlwYnl0ZXM7Ci0gCXVpbnQzMiBzdHJpcDsKLS0JdWludDY0IG5zdHJpcHM2NDsKLS0JdWludDMyIG5zdHJpcHMzMjsKLSsJdWludDMyIG5zdHJpcHM7Ci0gCXVpbnQzMiByb3dzcGVyc3RyaXA7Ci0gCXVpbnQ2NCogbmV3Y291bnRzOwotIAl1aW50NjQqIG5ld29mZnNldHM7Ci1AQCAtNTUzNCwxOCArNTUzMywxNyBAQCBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcChUSUZGKiB0aWYpCi0gCSAgICByZXR1cm47Ci0gCi0gCS8qCi0tCSAqIG5ldmVyIGluY3JlYXNlIHRoZSBudW1iZXIgb2Ygc3RyaXBzIGluIGFuIGltYWdlCi0rCSAqIG5ldmVyIGluY3JlYXNlIHRoZSBudW1iZXIgb2Ygcm93cyBwZXIgc3RyaXAKLSAJICovCi0gCWlmIChyb3dzcGVyc3RyaXAgPj0gdGQtPnRkX3Jvd3NwZXJzdHJpcCkKLSAJCXJldHVybjsKLS0JbnN0cmlwczY0ID0gVElGRmhvd21hbnlfNjQoYnl0ZWNvdW50LCBzdHJpcGJ5dGVzKTsKLS0JaWYgKChuc3RyaXBzNjQ9PTApfHwobnN0cmlwczY0PjB4RkZGRkZGRkYpKSAvKiBzb21ldGhpbmcgaXMgd29ua3ksIGRvIG5vdGhpbmcuICovCi0tCSAgICByZXR1cm47Ci0tCW5zdHJpcHMzMiA9ICh1aW50MzIpbnN0cmlwczY0OwotKyAgICAgICAgbnN0cmlwcyA9IFRJRkZob3dtYW55XzMyKHRkLT50ZF9pbWFnZWxlbmd0aCwgcm93c3BlcnN0cmlwKTsKLSsgICAgICAgIGlmKCBuc3RyaXBzID09IDAgKQotKyAgICAgICAgICAgIHJldHVybjsKLSAKLS0JbmV3Y291bnRzID0gKHVpbnQ2NCopIF9USUZGQ2hlY2tNYWxsb2ModGlmLCBuc3RyaXBzMzIsIHNpemVvZiAodWludDY0KSwKLSsJbmV3Y291bnRzID0gKHVpbnQ2NCopIF9USUZGQ2hlY2tNYWxsb2ModGlmLCBuc3RyaXBzLCBzaXplb2YgKHVpbnQ2NCksCi0gCQkJCSJmb3IgY2hvcHBlZCBcIlN0cmlwQnl0ZUNvdW50c1wiIGFycmF5Iik7Ci0tCW5ld29mZnNldHMgPSAodWludDY0KikgX1RJRkZDaGVja01hbGxvYyh0aWYsIG5zdHJpcHMzMiwgc2l6ZW9mICh1aW50NjQpLAotKwluZXdvZmZzZXRzID0gKHVpbnQ2NCopIF9USUZGQ2hlY2tNYWxsb2ModGlmLCBuc3RyaXBzLCBzaXplb2YgKHVpbnQ2NCksCi0gCQkJCSJmb3IgY2hvcHBlZCBcIlN0cmlwT2Zmc2V0c1wiIGFycmF5Iik7Ci0gCWlmIChuZXdjb3VudHMgPT0gTlVMTCB8fCBuZXdvZmZzZXRzID09IE5VTEwpIHsKLSAJCS8qCi1AQCAtNTU2MiwxOCArNTU2MCwxOCBAQCBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcChUSUZGKiB0aWYpCi0gCSAqIEZpbGwgdGhlIHN0cmlwIGluZm9ybWF0aW9uIGFycmF5cyB3aXRoIG5ldyBieXRlY291bnRzIGFuZCBvZmZzZXRzCi0gCSAqIHRoYXQgcmVmbGVjdCB0aGUgYnJva2VuLXVwIGZvcm1hdC4KLSAJICovCi0tCWZvciAoc3RyaXAgPSAwOyBzdHJpcCA8IG5zdHJpcHMzMjsgc3RyaXArKykgewotKwlmb3IgKHN0cmlwID0gMDsgc3RyaXAgPCBuc3RyaXBzOyBzdHJpcCsrKSB7Ci0gCQlpZiAoc3RyaXBieXRlcyA+IGJ5dGVjb3VudCkKLSAJCQlzdHJpcGJ5dGVzID0gYnl0ZWNvdW50OwotIAkJbmV3Y291bnRzW3N0cmlwXSA9IHN0cmlwYnl0ZXM7Ci0tCQluZXdvZmZzZXRzW3N0cmlwXSA9IG9mZnNldDsKLSsJCW5ld29mZnNldHNbc3RyaXBdID0gc3RyaXBieXRlcyA/IG9mZnNldCA6IDA7Ci0gCQlvZmZzZXQgKz0gc3RyaXBieXRlczsKLSAJCWJ5dGVjb3VudCAtPSBzdHJpcGJ5dGVzOwotIAl9Ci0gCS8qCi0gCSAqIFJlcGxhY2Ugb2xkIHNpbmdsZSBzdHJpcCBpbmZvIHdpdGggbXVsdGktc3RyaXAgaW5mby4KLSAJICovCi0tCXRkLT50ZF9zdHJpcHNwZXJpbWFnZSA9IHRkLT50ZF9uc3RyaXBzID0gbnN0cmlwczMyOwotKwl0ZC0+dGRfc3RyaXBzcGVyaW1hZ2UgPSB0ZC0+dGRfbnN0cmlwcyA9IG5zdHJpcHM7Ci0gCVRJRkZTZXRGaWVsZCh0aWYsIFRJRkZUQUdfUk9XU1BFUlNUUklQLCByb3dzcGVyc3RyaXApOwotIAotIAlfVElGRmZyZWUodGQtPnRkX3N0cmlwYnl0ZWNvdW50KTsKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9zdHJpcC5jIGIvbGlidGlmZi90aWZfc3RyaXAuYwotaW5kZXggNGM0NmVjZi4uMTY3NmU0NyAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX3N0cmlwLmMKLSsrKyBiL2xpYnRpZmYvdGlmX3N0cmlwLmMKLUBAIC02MywxNSArNjMsNiBAQCBUSUZGTnVtYmVyT2ZTdHJpcHMoVElGRiogdGlmKQotIAlUSUZGRGlyZWN0b3J5ICp0ZCA9ICZ0aWYtPnRpZl9kaXI7Ci0gCXVpbnQzMiBuc3RyaXBzOwotIAotLSAgICAvKiBJZiB0aGUgdmFsdWUgd2FzIGFscmVhZHkgY29tcHV0ZWQgYW5kIHN0b3JlIGluIHRkX25zdHJpcHMsIHRoZW4gcmV0dXJuIGl0LAotLSAgICAgICBzaW5jZSBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcCBtaWdodCBoYXZlIGFsdGVyZWQgYW5kIHJlc2l6ZWQgdGhlCi0tICAgICAgIHNpbmNlIHRoZSB0ZF9zdHJpcGJ5dGVjb3VudCBhbmQgdGRfc3RyaXBvZmZzZXQgYXJyYXlzIHRvIHRoZSBuZXcgdmFsdWUKLS0gICAgICAgYWZ0ZXIgdGhlIGluaXRpYWwgYWZmZWN0YXRpb24gb2YgdGRfbnN0cmlwcyA9IFRJRkZOdW1iZXJPZlN0cmlwcygpIGluCi0tICAgICAgIHRpZl9kaXJyZWFkLmMgfmxpbmUgMzYxMi4KLS0gICAgICAgU2VlIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODcgKi8KLS0gICAgaWYoIHRkLT50ZF9uc3RyaXBzICkKLS0gICAgICAgIHJldHVybiB0ZC0+dGRfbnN0cmlwczsKLS0KLSAJbnN0cmlwcyA9ICh0ZC0+dGRfcm93c3BlcnN0cmlwID09ICh1aW50MzIpIC0xID8gMSA6Ci0gCSAgICAgVElGRmhvd21hbnlfMzIodGQtPnRkX2ltYWdlbGVuZ3RoLCB0ZC0+dGRfcm93c3BlcnN0cmlwKSk7Ci0gCWlmICh0ZC0+dGRfcGxhbmFyY29uZmlnID09IFBMQU5BUkNPTkZJR19TRVBBUkFURSkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZlNWJjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gOTY1N2JiZTNjZGNlNGFhYTkwZTA3ZDUwYzFjNzBhZTUyZGEwYmE2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFNhdCwgMyBEZWMgMjAxNiAxMTozNTo1NiArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIHRvb2xzL3RpZmZjcm9wLmM6IGZpeCByZWFkQ29udGlnU3RyaXBzSW50b0J1ZmZlcigpIGluIC1pCi0gKGlnbm9yZSkgbW9kZSBzbyB0aGF0IHRoZSBvdXRwdXQgYnVmZmVyIGlzIGNvcnJlY3RseSBpbmNyZW1lbnRlZCB0byBhdm9pZAotIHdyaXRlIG91dHNpZGUgYm91bmRzLiBSZXBvcnRlZCBieSBBZ29zdGlubyBTYXJ1YmJvLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjAKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xMDI3MQotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gQ2hhbmdlTG9nICAgICAgICB8IDcgKysrKysrKwotIHRvb2xzL3RpZmZjcm9wLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IHRpZmYtNC4wLjcvdG9vbHMvdGlmZmNyb3AuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy90b29scy90aWZmY3JvcC5jCi0rKysgdGlmZi00LjAuNy90b29scy90aWZmY3JvcC5jCi1AQCAtMzY5OCw3ICszNjk4LDcgQEAgc3RhdGljIGludCByZWFkQ29udGlnU3RyaXBzSW50b0J1ZmZlciAoVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgc3RyaXAsICh1bnNpZ25lZCBsb25nKXJvd3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgIGJ1ZnAgKz0gYnl0ZXNfcmVhZDsKLSsgICAgICAgICAgICAgICAgYnVmcCArPSBzdHJpcHNpemU7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICByZXR1cm4gMTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEwNjg4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKaW5kZXggZWQ5YzBmNS4uYjBkYjk2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKQEAgLTE4LDEwICsxOCwxMCBAQAogIGxpYnRpZmYvdGlmX2RpcndyaXRlLmMgfCAyMCArKysrKysrKysrKysrKysrLS0tLQogIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCAwMjQwZjBiLi40MmVhZWI3IDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKIEBAIC0xLDMgKzEsMTEgQEAKICsyMDE3LTA2LTMwICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgogKwpAQCAtMzQsMTEgKzM0LDExIEBACiAgMjAxNy0wNi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KICAKICAJKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YgSkJJR0RlY29kZSgpCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC0yMDQ3LDcgKzIwNDcsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4KFRJRkYqCitkaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKK2luZGV4IDI5NjdkYTUuLjhkNjY4NmIgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCisrKysgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCitAQCAtMjExMSw3ICsyMTExLDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOChUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHVpCiAgewogIAl1aW50NjQgbTsKICAJYXNzZXJ0KHNpemVvZih1aW50NjQpPT04KTsKQEAgLTUwLDcgKzUwLDcgQEAKICAJbT12YWx1ZTsKICAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKICAJCVRJRkZTd2FiTG9uZzgoJm0pOwotQEAgLTIwNjAsNyArMjA2MywxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzhBcnJheShUCitAQCAtMjEyNCw3ICsyMTI3LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOEFycmF5KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpCiAgewogIAlhc3NlcnQoY291bnQ8MHgyMDAwMDAwMCk7CiAgCWFzc2VydChzaXplb2YodWludDY0KT09OCk7CkBAIC02Miw3ICs2Miw3IEBACiAgCWlmICh0aWYtPnRpZl9mbGFncyZUSUZGX1NXQUIpCiAgCQlUSUZGU3dhYkFycmF5T2ZMb25nOCh2YWx1ZSxjb3VudCk7CiAgCXJldHVybihUSUZGV3JpdGVEaXJlY3RvcnlUYWdEYXRhKHRpZixuZGlyLGRpcix0YWcsVElGRl9MT05HOCxjb3VudCxjb3VudCo4LHZhbHVlKSk7Ci1AQCAtMjA3Miw3ICsyMDc4LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRTbG9uZzgoVElGRioKK0BAIC0yMTM2LDcgKzIxNDIsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFNsb25nOChUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHUKICB7CiAgCWludDY0IG07CiAgCWFzc2VydChzaXplb2YoaW50NjQpPT04KTsKQEAgLTc0LDcgKzc0LDcgQEAKICAJbT12YWx1ZTsKICAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKICAJCVRJRkZTd2FiTG9uZzgoKHVpbnQ2NCopKCZtKSk7Ci1AQCAtMjA4NSw3ICsyMDk0LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRTbG9uZzhBcnJheSgKK0BAIC0yMTQ5LDcgKzIxNTgsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFNsb25nOEFycmF5KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGQKICB7CiAgCWFzc2VydChjb3VudDwweDIwMDAwMDAwKTsKICAJYXNzZXJ0KHNpemVvZihpbnQ2NCk9PTgpOwpAQCAtODYsMyArODYsNiBAQAogIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQogIAkJVElGRlN3YWJBcnJheU9mTG9uZzgoKHVpbnQ2NCopdmFsdWUsY291bnQpOwogIAlyZXR1cm4oVElGRldyaXRlRGlyZWN0b3J5VGFnRGF0YSh0aWYsbmRpcixkaXIsdGFnLFRJRkZfU0xPTkc4LGNvdW50LGNvdW50KjgsdmFsdWUpKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjBmZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSA1MzE3Y2UyMTU5MzZjZTYxMTg0NjU1N2JiMTA0YjQ5ZDNiNGM4MzQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTM6MjE6NDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdAorIGZpbmRpbmcgdGhlIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjay4gRml4ZXMKKyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI3IFJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC9mOTFjYTgzYTIxYTZhNTgzMDUwZTVhNTc1NWNlMTQ0MWIyYmYxZDdlXQorCitDVkU6IENWRS0yMDE3LTEzNzI2CisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIENoYW5nZUxvZyAgICAgICAgICAgICAgfCA3ICsrKysrKysKKyBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIHwgNyArKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDY5ODBkYTguLjNlMjk5ZDkgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZworQEAgLTEsMyArMSwxMCBAQAorKzIwMTctMDgtMjMgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CisrCisrCSogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gcmVsYXRlZCB0byBub3QgZmluZGluZyB0aGUKKysJU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrLgorKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI3CisrCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3CisrCisgMjAxNy0wNy0xNSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKyAKKyAJKiB0b29scy90aWZmMnBkZi5jOiBwcmV2ZW50IGhlYXAgYnVmZmVyIG92ZXJmbG93IHdyaXRlIGluICJSYXciCitkaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKK2luZGV4IDhkNjY4NmIuLjE0MDkwYWUgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCisrKysgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCitAQCAtODIxLDcgKzgyMSwxMiBAQCBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoVElGRiogdGlmLCBpbnQgaXNpbWFnZSwgaW50IGltYWdlZG9uZSwgdWludDY0KiBwZGlyb2ZmKQorIAkJCVRJRkZEaXJFbnRyeSogbmI7CisgCQkJZm9yIChuYT0wLCBuYj1kaXI7IDsgbmErKywgbmIrKykKKyAJCQl7CistCQkJCWFzc2VydChuYTxuZGlyKTsKKysJCQkJaWYoIG5hID09IG5kaXIgKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLG1vZHVsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBmaW5kIFN1YklGRCB0YWciKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGJhZDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAJCQkJaWYgKG5iLT50ZGlyX3RhZz09VElGRlRBR19TVUJJRkQpCisgCQkJCQlicmVhazsKKyAJCQl9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIyOGMyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI3LnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gYTVlODI0NWNjNjc2NDZmN2I0NDhiNGNhMjkyNThlYWFjNDE4MTAyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDEzOjMzOjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gdG8gdGFnIHZhbHVlIG5vdAorIGZpdHRpbmcgb24gdWludDMyIHdoZW4gc2VsZWN0aW5nIHRoZSB2YWx1ZSBvZiBTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2sgKGluCisgVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLiBGaXhlcworIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjggUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKKworU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrIChpbiBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoKSkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2I2YWYxMzdiZjllZjg1MmYxYTQ4YTUwYTVhZmI4OGY5ZTlkYTAxY2NdCisKK0NWRTogQ1ZFLTIwMTctMTM3MjcKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDEwICsrKysrKysrKy0KKyBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIHwgIDkgKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCAzZTI5OWQ5Li44ZjVlZmU5IDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKK0BAIC0xLDcgKzEsMTUgQEAKKyAyMDE3LTA4LTIzICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgorIAorKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHRvIHRhZyB2YWx1ZSBub3QgZml0dGluZworKwlvbiB1aW50MzIgd2hlbiBzZWxlY3RpbmcgdGhlIHZhbHVlIG9mIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjaworKwkoaW4gVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLgorKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI4CisrCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3CisrCisrMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKysKKyAJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQorLQlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCisrCVN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjayAoaW4gVElGRldyaXRlRGlyZWN0b3J5U2VjKCkpCisgCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKKyAJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKKyAKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYworaW5kZXggMTQwOTBhZS4uZjBhNGJhYSAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKKysrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKK0BAIC0xOTQ5LDcgKzE5NDksMTQgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpcikKKyAJCWZvciAocD0wOyBwIDwgdGlmLT50aWZfZGlyLnRkX25zdWJpZmQ7IHArKykKKyAJCXsKKyAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGEgIT0gMCk7CistCQkJYXNzZXJ0KCpwYSA8PSAweEZGRkZGRkZGVUwpOworKworKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdWxkIGhhcHBlbiBpZiBhbiBjbGFzc2ljVElGRiBoYXMgYSBTdWJJRkQgb2YgdHlwZSBMT05HOCAod2hpY2ggaXMgaWxsZWdhbCkgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICBpZiggKnBhID4gMHhGRkZGRkZGRlVMKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLCJJbGxlZ2FsIHZhbHVlIGZvciBTdWJJRkQgdGFnIik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9USUZGZnJlZShvKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKDApOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAJCQkqcGIrKz0odWludDMyKSgqcGErKyk7CisgCQl9CisgCQluPVRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRJZmRBcnJheSh0aWYsbmRpcixkaXIsVElGRlRBR19TVUJJRkQsdGlmLT50aWZfZGlyLnRkX25zdWJpZmQsbyk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTkyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjgwNDQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDQ4NzgwYjRmY2M0MjVjZGRjNGVmOGZmZGY1MzZmOTZhMGQxYjMxM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBXZWQsIDExIEphbiAyMDE3IDE2OjM4OjI2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZ2V0aW1hZ2UuYzogYWRkIGV4cGxpY2l0IHVpbnQzMiBjYXN0IGluIHB1dGFncmV5dGlsZSB0bwotYXZvaWQgVW5kZWZpbmVkQmVoYXZpb3JTYW5pdGl6ZXIgd2FybmluZy4KLVBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy03NTkyCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTQ6MjU6MTAuMTQzOTI2MDI1ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNCAxNToyMDoyMS4yOTE4MzkyMzAgKzA1MzAKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfZ2V0aW1hZ2UuYzogYWRkIGV4cGxpY2l0IHVpbnQzMiBjYXN0IGluIHB1dGFncmV5dGlsZSB0bwotKwlhdm9pZCBVbmRlZmluZWRCZWhhdmlvclNhbml0aXplciB3YXJuaW5nLgotKwlQYXRjaCBieSBOaWNvbGFzIFBlbmEuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTgKLSsKLSAyMDE2LTEyLTAzIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfZGlycmVhZC5jOiBtb2RpZnkgQ2hvcFVwU2luZ2xlVW5jb21wcmVzc2VkU3RyaXAoKSB0bwotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZ2V0aW1hZ2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9nZXRpbWFnZS5jCTIwMTYtMTEtMTggMDg6MTc6NDUuMDAwMDAwMDAwICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9nZXRpbWFnZS5jCTIwMTctMDQtMjQgMTU6MTc6NDYuNjcxODQzMjgzICswNTMwCi1AQCAtMTMwNSw3ICsxMzA1LDcgQEAKLSAgICAgd2hpbGUgKGgtLSA+IDApIHsKLSAJZm9yICh4ID0gdzsgeC0tID4gMDspCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgKmNwKysgPSBCV21hcFsqcHBdWzBdICYgKCoocHArMSkgPDwgMjQgfCB+QTEpOwotKyAgICAgICAgICAgICpjcCsrID0gQldtYXBbKnBwXVswXSAmICgodWludDMyKSoocHArMSkgPDwgMjQgfCB+QTEpOwotICAgICAgICAgICAgIHBwICs9IHNhbXBsZXNwZXJwaXhlbDsKLSAgICAgICAgIH0KLSAJY3AgKz0gdG9za2V3OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MGRmY2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLUZyb20gZDYwMzMyMDU3Yjk1NzVhZGE0ZjI2NDQ4OTU4MmIxM2UzMDEzN2JlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTk6MDI6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZmZpb3AuaCwgdGlmX3VuaXguYywgdGlmX3dpbjMyLmMsIHRpZl92bXMuYzogYWRkCi0gX1RJRkZjYWxsb2MoKQotCi0qIGxpYnRpZmYvdGlmX3JlYWQuYzogVElGRlJlYWRCdWZmZXJTZXR1cCgpOiB1c2UgX1RJRkZjYWxsb2MoKSB0byB6ZXJvCi1pbml0aWFsaXplIHRpZl9yYXdkYXRhLgotRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzU5MwotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxOTowMzoyMC41ODQxNTU0NTIgKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI2IDEyOjA5OjQxLjk4Njg2Njg5NiArMDUzMAotQEAgLTQ0LDYgKzQ0LDE0IEBACi0gCi0gMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmZmlvcC5oLCB0aWZfdW5peC5jLCB0aWZfd2luMzIuYyA6IGFkZCBfVElGRmNhbGxvYygpCi0rCi0rCSogbGlidGlmZi90aWZfcmVhZC5jOiBUSUZGUmVhZEJ1ZmZlclNldHVwKCk6IHVzZSBfVElGRmNhbGxvYygpIHRvIHplcm8KLSsJaW5pdGlhbGl6ZSB0aWZfcmF3ZGF0YS4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MQotKwotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBhZGQgZXhwbGljaXQgdWludDMyIGNhc3QgaW4gcHV0YWdyZXl0aWxlIHRvCi0gCWF2b2lkIFVuZGVmaW5lZEJlaGF2aW9yU2FuaXRpemVyIHdhcm5pbmcuCi0gCVBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3JlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9yZWFkLmMJMjAxNy0wNC0yNSAxOTowMzoyMC41ODQxNTU0NTIgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3JlYWQuYwkyMDE3LTA0LTI2IDEyOjExOjQyLjgxNDg2MzcyOSArMDUzMAotQEAgLTk4Niw3ICs5ODYsOSBAQAotIAkJCQkgIkludmFsaWQgYnVmZmVyIHNpemUiKTsKLSAJCSAgICByZXR1cm4gKDApOwotIAkJfQotLQkJdGlmLT50aWZfcmF3ZGF0YSA9ICh1aW50OCopIF9USUZGbWFsbG9jKHRpZi0+dGlmX3Jhd2RhdGFzaXplKTsKLSsgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSB0byB6ZXJvIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgYnVmZmVycyBpbiBjYXNlIG9mICovCi0rICAgICAgICAgICAgICAgIC8qIHNob3J0IHJlYWRzIChodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUxKSAqLwotKyAgICAgICAgICAgICAgICB0aWYtPnRpZl9yYXdkYXRhID0gKHVpbnQ4KikgX1RJRkZjYWxsb2MoMSwgdGlmLT50aWZfcmF3ZGF0YXNpemUpOwotIAkJdGlmLT50aWZfZmxhZ3MgfD0gVElGRl9NWUJVRkZFUjsKLSAJfQotIAlpZiAodGlmLT50aWZfcmF3ZGF0YSA9PSBOVUxMKSB7Ci1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl91bml4LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfdW5peC5jCTIwMTUtMDgtMjkgMDM6NDY6MjIuNzA3ODE3MDQxICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl91bml4LmMJMjAxNy0wNC0yNiAxMjoxMzowNy40NDI4NjE1MTAgKzA1MzAKLUBAIC0zMTYsNiArMzE2LDE0IEBACi0gCXJldHVybiAobWFsbG9jKChzaXplX3QpIHMpKTsKLSB9Ci0gCi0rdm9pZCogX1RJRkZjYWxsb2ModG1zaXplX3Qgbm1lbWIsIHRtc2l6ZV90IHNpeikKLSt7Ci0rICAgIGlmKCBubWVtYiA9PSAwIHx8IHNpeiA9PSAwICkKLSsgICAgICAgIHJldHVybiAoKHZvaWQgKikgTlVMTCk7Ci0rCi0rICAgIHJldHVybiBjYWxsb2MoKHNpemVfdCkgbm1lbWIsIChzaXplX3Qpc2l6KTsKLSt9Ci0rCi0gdm9pZAotIF9USUZGZnJlZSh2b2lkKiBwKQotIHsKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3dpbjMyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfd2luMzIuYwkyMDE1LTA4LTI5IDAzOjQ2OjIyLjczMDU3MDE2OSArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfd2luMzIuYwkyMDE3LTA0LTI2IDEyOjE0OjEyLjkxODg1OTc5NCArMDUzMAotQEAgLTM2MCw2ICszNjAsMTQgQEAKLSAJcmV0dXJuIChtYWxsb2MoKHNpemVfdCkgcykpOwotIH0KLSAKLSt2b2lkKiBfVElGRmNhbGxvYyh0bXNpemVfdCBubWVtYiwgdG1zaXplX3Qgc2l6KQotK3sKLSsgICAgaWYoIG5tZW1iID09IDAgfHwgc2l6ID09IDAgKQotKyAgICAgICAgcmV0dXJuICgodm9pZCAqKSBOVUxMKTsKLSsKLSsgICAgcmV0dXJuIGNhbGxvYygoc2l6ZV90KSBubWVtYiwgKHNpemVfdClzaXopOwotK30KLSsKLSB2b2lkCi0gX1RJRkZmcmVlKHZvaWQqIHApCi0gewotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZmaW8uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZmZpby5oCTIwMTYtMDEtMjQgMjE6MDk6NTEuODk0NDQyMDQyICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZmZpby5oCTIwMTctMDQtMjYgMTI6MTU6NTUuMDM0ODU3MTE3ICswNTMwCi1AQCAtMjkzLDYgKzI5Myw3IEBACi0gICovCi0gCi0gZXh0ZXJuIHZvaWQqIF9USUZGbWFsbG9jKHRtc2l6ZV90IHMpOwotK2V4dGVybiB2b2lkKiBfVElGRmNhbGxvYyh0bXNpemVfdCBubWVtYiwgdG1zaXplX3Qgc2l6KTsKLSBleHRlcm4gdm9pZCogX1RJRkZyZWFsbG9jKHZvaWQqIHAsIHRtc2l6ZV90IHMpOwotIGV4dGVybiB2b2lkIF9USUZGbWVtc2V0KHZvaWQqIHAsIGludCB2LCB0bXNpemVfdCBjKTsKLSBleHRlcm4gdm9pZCBfVElGRm1lbWNweSh2b2lkKiBkLCBjb25zdCB2b2lkKiBzLCB0bXNpemVfdCBjKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTQtcDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk0LXAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzdlNDYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTQtcDEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1yb20gODI4M2U0ZDFiN2U1MzM0MDY4NGQxMjkzMjg4MGNiY2JhZjIzYThjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFRodSwgMTIgSmFuIDIwMTcgMTc6NDM6MjUgKzAwMDAKLQotKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBmaXggbGVhayBpbiBPSlBFR1JlYWRIZWFkZXJJbmZvU2VjVGFibGVzQWNUYWJsZQotICB3aGVuIHJlYWQgZmFpbHMuCi0gIFBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLSAgRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzU5NCAjcGF0Y2gxCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwkyMDE3LTA0LTI0IDE2OjEzOjE1LjAwMDAwMDAwMCArMDUzMAotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTY6NTA6MjYuNDY1ODk3NjQ2ICswNTMwCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wMS0xMiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNBY1RhYmxlCi0rCXdoZW4gcmVhZCBmYWlscy4KLSsJUGF0Y2ggYnkgTmljb2zDoXMgUGXDsWEuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTkKLSsKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfZ2V0aW1hZ2UuYzogYWRkIGV4cGxpY2l0IHVpbnQzMiBjYXN0IGluIHB1dGFncmV5dGlsZSB0bwotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfb2pwZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9vanBlZy5jCTIwMTctMDQtMjQgMTY6MDI6MjkuODE3OTczMDUxICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9vanBlZy5jCTIwMTctMDQtMjQgMTY6NTI6MjcuMzQ5ODk0NDc3ICswNTMwCi1AQCAtMTkxOCw3ICsxOTE4LDEwIEBACi0gCQkJCXJiW3NpemVvZih1aW50MzIpKzUrbl09b1tuXTsKLSAJCQlwPSh1aW50MzIpVElGRlJlYWRGaWxlKHRpZiwmKHJiW3NpemVvZih1aW50MzIpKzIxXSkscSk7Ci0gCQkJaWYgKHAhPXEpCi0rICAgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RJRkZmcmVlKHJiKTsKLSAJCQkJcmV0dXJuKDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAJCQlzcC0+YWN0YWJsZVttXT1yYjsKLSAJCQlzcC0+c29zX3RkYVttXT0oc3AtPnNvc190ZGFbbV18bSk7Ci0gCQl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk0LXAyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5NC1wMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJhMTljNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk0LXAyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSAyZWEzMmY3MzcyYjY1YzI0YjI4MTZmMTFjMDRiZjU5YjUwOTBkMDViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogVGh1LCAxMiBKYW4gMjAxNyAxOToyMzoyMCArMDAwMAotU3ViamVjdDogW1BBVENIIDIvMl0gKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBmaXggbGVhayBpbgotIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNRVGFibGUsIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNEY1RhYmxlIGFuZAotIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNBY1RhYmxlCi0KLVVwc3RyZWFtLXN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NTk0ICNwYXRjaDIKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTY6NTA6MjYuNDY1ODk3NjQ2ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNCAxNjo1NjoyMC42ODU4ODgzNjAgKzA1MzAKLUBAIC0xLDYgKzEsNyBAQAotIDIwMTctMDEtMTIgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLS0JKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBmaXggbGVhayBpbiBPSlBFR1JlYWRIZWFkZXJJbmZvU2VjVGFibGVzQWNUYWJsZQotKwkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNRVGFibGUsCi0rCU9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNEY1RhYmxlIGFuZCBPSlBFR1JlYWRIZWFkZXJJbmZvU2VjVGFibGVzQWNUYWJsZQotIAl3aGVuIHJlYWQgZmFpbHMuCi0gCVBhdGNoIGJ5IE5pY29sw6FzIFBlw7FhLgotIAlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU5Ci1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9vanBlZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX29qcGVnLmMJMjAxNy0wNC0yNCAxNjo1MjoyNy4zNDk4OTQ0NzcgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX29qcGVnLmMJMjAxNy0wNC0yNCAxNjo1OToyMC4wMDE4ODM2NjAgKzA1MzAKLUBAIC0xNzkwLDcgKzE3OTAsMTAgQEAKLSAJCQlUSUZGU2Vla0ZpbGUodGlmLHNwLT5xdGFibGVfb2Zmc2V0W21dLFNFRUtfU0VUKTsgCi0gCQkJcD0odWludDMyKVRJRkZSZWFkRmlsZSh0aWYsJm9iW3NpemVvZih1aW50MzIpKzVdLDY0KTsKLSAJCQlpZiAocCE9NjQpCi0rICAgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RJRkZmcmVlKG9iKTsKLSAJCQkJcmV0dXJuKDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAJCQlzcC0+cXRhYmxlW21dPW9iOwotIAkJCXNwLT5zb2ZfdHFbbV09bTsKLSAJCX0KLUBAIC0xODU0LDcgKzE4NTcsMTAgQEAKLSAJCQkJcmJbc2l6ZW9mKHVpbnQzMikrNStuXT1vW25dOwotIAkJCXA9KHVpbnQzMilUSUZGUmVhZEZpbGUodGlmLCYocmJbc2l6ZW9mKHVpbnQzMikrMjFdKSxxKTsKLSAJCQlpZiAocCE9cSkKLSsgICAgICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVElGRmZyZWUocmIpOwotIAkJCQlyZXR1cm4oMCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCXNwLT5kY3RhYmxlW21dPXJiOwotIAkJCXNwLT5zb3NfdGRhW21dPShtPDw0KTsKLSAJCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTFhMzdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1jb21taXQgNjE4ZDQ5MDA5MGJmZDEwZTYxM2FjNTc0ZWNmZjMxYTI5MzkwNGI0NAotQXV0aG9yOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTEgMTI6MTU6MDEgMjAxNyArMDAwMAotCi0gICAgKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IGF2b2lkIGludGVnZXIgZGl2aXNpb24gYnkgemVybwotICAgICAgaW4gSlBFR1NldHVwRW5jb2RlKCkgd2hlbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHNhbXBsaW5nIGlzIHNldCB0byAwLgotICAgICAgRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzU5NQotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLQotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwkyMDE3LTA0LTI0IDE3OjMxOjQwLjAxMzgzMjgwNyArMDUzMAotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTg6MDM6MzQuNzY5NzgyNjE2ICswNTMwCi1AQCAtOCw2ICs4LDEyIEBACi0gCi0gMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmX2pwZWcuYzogYXZvaWQgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIGluCi0rCUpQRUdTZXR1cEVuY29kZSgpIHdoZW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBzYW1wbGluZyBpcyBzZXQgdG8gMC4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MwotKwotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBhZGQgZXhwbGljaXQgdWludDMyIGNhc3QgaW4gcHV0YWdyZXl0aWxlIHRvCi0gCWF2b2lkIFVuZGVmaW5lZEJlaGF2aW9yU2FuaXRpemVyIHdhcm5pbmcuCi0gCVBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2pwZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9qcGVnLmMJMjAxNi0wMS0yNCAyMTowOTo1MS43ODE2NDE2MjUgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2pwZWcuYwkyMDE3LTA0LTI0IDE4OjA1OjU5Ljc3Nzc3ODgxNSArMDUzMAotQEAgLTE2MjYsNiArMTYyNiwxMyBAQAotIAljYXNlIFBIT1RPTUVUUklDX1lDQkNSOgotIAkJc3AtPmhfc2FtcGxpbmcgPSB0ZC0+dGRfeWNiY3JzdWJzYW1wbGluZ1swXTsKLSAJCXNwLT52X3NhbXBsaW5nID0gdGQtPnRkX3ljYmNyc3Vic2FtcGxpbmdbMV07Ci0rICAgICAgICAgICAgICAgIGlmKCBzcC0+aF9zYW1wbGluZyA9PSAwIHx8IHNwLT52X3NhbXBsaW5nID09IDAgKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCBtb2R1bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZyBob3Jpem9udGFsL3ZlcnRpY2FsIHNhbXBsaW5nIHZhbHVlIik7Ci0rICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSAJCS8qCi0gCQkgKiBBIFJlZmVyZW5jZUJsYWNrV2hpdGUgZmllbGQgKm11c3QqIGJlIHByZXNlbnQgc2luY2UgdGhlCi0gCQkgKiBkZWZhdWx0IHZhbHVlIGlzIGluYXBwcm9wcmlhdGUgZm9yIFlDYkNyLiAgRmlsbCBpbiB0aGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTQ1YzNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDggKzAsMCBAQAotRnJvbSAzMTQ0ZTU3NzcwYzFlNGQyNjUyMGQ4YWJlZTc1MGY4YWM4Yjc1NDkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogV2VkLCAxMSBKYW4gMjAxNyAxNjowOTowMiArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2Rpci5jLCB0aWZfZGlycmVhZC5jLCB0aWZfZGlyd3JpdGUuYzogaW1wbGVtZW50Ci0gdmFyaW91cyBjbGFtcGluZ3Mgb2YgZG91YmxlIHRvIG90aGVyIGRhdGEgdHlwZXMgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91cgotIGlmIHRoZSBvdXRwdXQgcmFuZ2UgaXNuJ3QgYmlnIGVub3VnaCB0byBob2xkIHRoZSBpbnB1dCB2YWx1ZS4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0MgotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDYKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NTk2Ci1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjUgMTU6NTM6NDAuMjk0NTkyODEyICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxNjowMjowMy4yMzg2MDA2NDEgKzA1MzAKLUBAIC02LDYgKzYsMTYgQEAKLSAJUGF0Y2ggYnkgTmljb2zDoXMgUGXDsWEuCi0gCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTkKLSAKLSsyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfZGlyLmMsIHRpZl9kaXJyZWFkLmMsIHRpZl9kaXJ3cml0ZS5jOiBpbXBsZW1lbnQgdmFyaW91cyBjbGFtcGluZ3MKLSsJb2YgZG91YmxlIHRvIG90aGVyIGRhdGEgdHlwZXMgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBpZiB0aGUgb3V0cHV0IHJhbmdlCi0rCWlzbid0IGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgaW5wdXQgdmFsdWUuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDMKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0MgotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ2Ci0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDcKLSsKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfanBlZy5jOiBhdm9pZCBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gaW4KLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2Rpci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2Rpci5jCTIwMTYtMTAtMzAgMDQ6MzM6MTguODU2NTk4MDcyICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXIuYwkyMDE3LTA0LTI1IDE2OjAyOjAzLjIzODYwMDY0MSArMDUzMAotQEAgLTMxLDYgKzMxLDcgQEAKLSAgKiAoYW5kIGFsc28gc29tZSBtaXNjZWxsYW5lb3VzIHN0dWZmKQotICAqLwotICNpbmNsdWRlICJ0aWZmaW9wLmgiCi0rI2luY2x1ZGUgPGZsb2F0Lmg+Ci0gCi0gLyoKLSAgKiBUaGVzZSBhcmUgdXNlZCBpbiB0aGUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgY29kZS4uLgotQEAgLTE1NCw2ICsxNTUsMTUgQEAKLSAJcmV0dXJuICgwKTsKLSB9Ci0gCi0rc3RhdGljIGZsb2F0IFRJRkZDbGFtcERvdWJsZVRvRmxvYXQoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA+IEZMVF9NQVggKQotKyAgICAgICAgcmV0dXJuIEZMVF9NQVg7Ci0rICAgIGlmKCB2YWwgPCAtRkxUX01BWCApCi0rICAgICAgICByZXR1cm4gLUZMVF9NQVg7Ci0rICAgIHJldHVybiAoZmxvYXQpdmFsOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gX1RJRkZWU2V0RmllbGQoVElGRiogdGlmLCB1aW50MzIgdGFnLCB2YV9saXN0IGFwKQotIHsKLUBAIC0zMTIsMTMgKzMyMiwxMyBAQAotICAgICAgICAgZGJsdmFsID0gdmFfYXJnKGFwLCBkb3VibGUpOwotICAgICAgICAgaWYoIGRibHZhbCA8IDAgKQotICAgICAgICAgICAgIGdvdG8gYmFkdmFsdWVkb3VibGU7Ci0tCQl0ZC0+dGRfeHJlc29sdXRpb24gPSAoZmxvYXQpIGRibHZhbDsKLSsJCXRkLT50ZF94cmVzb2x1dGlvbiA9IFRJRkZDbGFtcERvdWJsZVRvRmxvYXQoIGRibHZhbCApOwotIAkJYnJlYWs7Ci0gCWNhc2UgVElGRlRBR19ZUkVTT0xVVElPTjoKLSAgICAgICAgIGRibHZhbCA9IHZhX2FyZyhhcCwgZG91YmxlKTsKLSAgICAgICAgIGlmKCBkYmx2YWwgPCAwICkKLSAgICAgICAgICAgICBnb3RvIGJhZHZhbHVlZG91YmxlOwotLQkJdGQtPnRkX3lyZXNvbHV0aW9uID0gKGZsb2F0KSBkYmx2YWw7Ci0rCQl0ZC0+dGRfeXJlc29sdXRpb24gPSBUSUZGQ2xhbXBEb3VibGVUb0Zsb2F0KCBkYmx2YWwgKTsKLSAJCWJyZWFrOwotIAljYXNlIFRJRkZUQUdfUExBTkFSQ09ORklHOgotIAkJdiA9ICh1aW50MTYpIHZhX2FyZyhhcCwgdWludDE2X3ZhcCk7Ci1AQCAtMzI3LDEwICszMzcsMTAgQEAKLSAJCXRkLT50ZF9wbGFuYXJjb25maWcgPSAodWludDE2KSB2OwotIAkJYnJlYWs7Ci0gCWNhc2UgVElGRlRBR19YUE9TSVRJT046Ci0tCQl0ZC0+dGRfeHBvc2l0aW9uID0gKGZsb2F0KSB2YV9hcmcoYXAsIGRvdWJsZSk7Ci0rCQl0ZC0+dGRfeHBvc2l0aW9uID0gVElGRkNsYW1wRG91YmxlVG9GbG9hdCggdmFfYXJnKGFwLCBkb3VibGUpICk7Ci0gCQlicmVhazsKLSAJY2FzZSBUSUZGVEFHX1lQT1NJVElPTjoKLS0JCXRkLT50ZF95cG9zaXRpb24gPSAoZmxvYXQpIHZhX2FyZyhhcCwgZG91YmxlKTsKLSsJCXRkLT50ZF95cG9zaXRpb24gPSBUSUZGQ2xhbXBEb3VibGVUb0Zsb2F0KCB2YV9hcmcoYXAsIGRvdWJsZSkgKTsKLSAJCWJyZWFrOwotIAljYXNlIFRJRkZUQUdfUkVTT0xVVElPTlVOSVQ6Ci0gCQl2ID0gKHVpbnQxNikgdmFfYXJnKGFwLCB1aW50MTZfdmFwKTsKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9kaXJyZWFkLmMJMjAxNy0wNC0yNSAxNTo1Mzo0MC4xMzQ1OTI4MTAgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcnJlYWQuYwkyMDE3LTA0LTI1IDE2OjAyOjAzLjI0MjYwMDY0MSArMDUzMAotQEAgLTQwLDYgKzQwLDcgQEAKLSAgKi8KLSAKLSAjaW5jbHVkZSAidGlmZmlvcC5oIgotKyNpbmNsdWRlIDxmbG9hdC5oPgotIAotICNkZWZpbmUgSUdOT1JFIDAgICAgICAgICAgLyogdGFnIHBsYWNlaG9sZGVyIHVzZWQgYmVsb3cgKi8KLSAjZGVmaW5lIEZBSUxFRF9GSUkgICAgKCh1aW50MzIpIC0xKQotQEAgLTI0MDYsNyArMjQwNywxNCBAQAotIAkJCQltYT0oZG91YmxlKilvcmlnZGF0YTsKLSAJCQkJbWI9ZGF0YTsKLSAJCQkJZm9yIChuPTA7IG48Y291bnQ7IG4rKykKLS0JCQkJCSptYisrPShmbG9hdCkoKm1hKyspOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSAqbWErKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggdmFsID4gRkxUX01BWCApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IEZMVF9NQVg7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiggdmFsIDwgLUZMVF9NQVggKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSAtRkxUX01BWDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbWIrKz0oZmxvYXQpdmFsOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCX0KLSAJCQlicmVhazsKLSAJfQotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCTIwMTYtMTAtMzAgMDQ6MzM6MTguODc2ODU0NTAxICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCTIwMTctMDQtMjUgMTY6MDc6NDguNjcwNjA2MDE4ICswNTMwCi1AQCAtMzAsNiArMzAsNyBAQAotICAqIERpcmVjdG9yeSBXcml0ZSBTdXBwb3J0IFJvdXRpbmVzLgotICAqLwotICNpbmNsdWRlICJ0aWZmaW9wLmgiCi0rI2luY2x1ZGUgPGZsb2F0Lmg+Ci0gCi0gI2lmZGVmIEhBVkVfSUVFRUZQCi0gI2RlZmluZSBUSUZGQ3Z0TmF0aXZlVG9JRUVFRmxvYXQodGlmLCBuLCBmcCkKLUBAIC05MzksNiArOTQwLDY5IEBACi0gCXJldHVybigwKTsKLSB9Ci0gCi0rc3RhdGljIGZsb2F0IFRJRkZDbGFtcERvdWJsZVRvRmxvYXQoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA+IEZMVF9NQVggKQotKyAgICAgICAgcmV0dXJuIEZMVF9NQVg7Ci0rICAgIGlmKCB2YWwgPCAtRkxUX01BWCApCi0rICAgICAgICByZXR1cm4gLUZMVF9NQVg7Ci0rICAgIHJldHVybiAoZmxvYXQpdmFsOwotK30KLSsKLStzdGF0aWMgaW50OCBUSUZGQ2xhbXBEb3VibGVUb0ludDgoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA+IDEyNyApCi0rICAgICAgICByZXR1cm4gMTI3OwotKyAgICBpZiggdmFsIDwgLTEyOCB8fCB2YWwgIT0gdmFsICkKLSsgICAgICAgIHJldHVybiAtMTI4OwotKyAgICByZXR1cm4gKGludDgpdmFsOwotK30KLSsKLStzdGF0aWMgaW50MTYgVElGRkNsYW1wRG91YmxlVG9JbnQxNiggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsID4gMzI3NjcgKQotKyAgICAgICAgcmV0dXJuIDMyNzY3OwotKyAgICBpZiggdmFsIDwgLTMyNzY4IHx8IHZhbCAhPSB2YWwgKQotKyAgICAgICAgcmV0dXJuIC0zMjc2ODsKLSsgICAgcmV0dXJuIChpbnQxNil2YWw7Ci0rfQotKwotK3N0YXRpYyBpbnQzMiBUSUZGQ2xhbXBEb3VibGVUb0ludDMyKCBkb3VibGUgdmFsICkKLSt7Ci0rICAgIGlmKCB2YWwgPiAweDdGRkZGRkZGICkKLSsgICAgICAgIHJldHVybiAweDdGRkZGRkZGOwotKyAgICBpZiggdmFsIDwgLTB4N0ZGRkZGRkYtMSB8fCB2YWwgIT0gdmFsICkKLSsgICAgICAgIHJldHVybiAtMHg3RkZGRkZGRi0xOwotKyAgICByZXR1cm4gKGludDMyKXZhbDsKLSt9Ci0rCi0rc3RhdGljIHVpbnQ4IFRJRkZDbGFtcERvdWJsZVRvVUludDgoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA8IDAgKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmKCB2YWwgPiAyNTUgfHwgdmFsICE9IHZhbCApCi0rICAgICAgICByZXR1cm4gMjU1OwotKyAgICByZXR1cm4gKHVpbnQ4KXZhbDsKLSt9Ci0rCi0rc3RhdGljIHVpbnQxNiBUSUZGQ2xhbXBEb3VibGVUb1VJbnQxNiggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsIDwgMCApCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYoIHZhbCA+IDY1NTM1IHx8IHZhbCAhPSB2YWwgKQotKyAgICAgICAgcmV0dXJuIDY1NTM1OwotKyAgICByZXR1cm4gKHVpbnQxNil2YWw7Ci0rfQotKwotK3N0YXRpYyB1aW50MzIgVElGRkNsYW1wRG91YmxlVG9VSW50MzIoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA8IDAgKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmKCB2YWwgPiAweEZGRkZGRkZGVSB8fCB2YWwgIT0gdmFsICkKLSsgICAgICAgIHJldHVybiAweEZGRkZGRkZGVTsKLSsgICAgcmV0dXJuICh1aW50MzIpdmFsOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gVElGRldyaXRlRGlyZWN0b3J5VGFnU2FtcGxlZm9ybWF0QXJyYXkoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZGlyLCB1aW50MTYgdGFnLCB1aW50MzIgY291bnQsIGRvdWJsZSogdmFsdWUpCi0gewotQEAgLTk1OSw3ICsxMDIzLDcgQEAKLSAJCQlpZiAodGlmLT50aWZfZGlyLnRkX2JpdHNwZXJzYW1wbGU8PTMyKQotIAkJCXsKLSAJCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCi0tCQkJCQkoKGZsb2F0Kiljb252KVtpXSA9IChmbG9hdCl2YWx1ZVtpXTsKLSsJCQkJCSgoZmxvYXQqKWNvbnYpW2ldID0gVElGRkNsYW1wRG91YmxlVG9GbG9hdCh2YWx1ZVtpXSk7Ci0gCQkJCW9rID0gVElGRldyaXRlRGlyZWN0b3J5VGFnRmxvYXRBcnJheSh0aWYsbmRpcixkaXIsdGFnLGNvdW50LChmbG9hdCopY29udik7Ci0gCQkJfQotIAkJCWVsc2UKLUBAIC05NzEsMTkgKzEwMzUsMTkgQEAKLSAJCQlpZiAodGlmLT50aWZfZGlyLnRkX2JpdHNwZXJzYW1wbGU8PTgpCi0gCQkJewotIAkJCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLS0JCQkJCSgoaW50OCopY29udilbaV0gPSAoaW50OCl2YWx1ZVtpXTsKLSsJCQkJCSgoaW50OCopY29udilbaV0gPSBUSUZGQ2xhbXBEb3VibGVUb0ludDgodmFsdWVbaV0pOwotIAkJCQlvayA9IFRJRkZXcml0ZURpcmVjdG9yeVRhZ1NieXRlQXJyYXkodGlmLG5kaXIsZGlyLHRhZyxjb3VudCwoaW50OCopY29udik7Ci0gCQkJfQotIAkJCWVsc2UgaWYgKHRpZi0+dGlmX2Rpci50ZF9iaXRzcGVyc2FtcGxlPD0xNikKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKChpbnQxNiopY29udilbaV0gPSAoaW50MTYpdmFsdWVbaV07Ci0rCQkJCQkoKGludDE2Kiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvSW50MTYodmFsdWVbaV0pOwotIAkJCQlvayA9IFRJRkZXcml0ZURpcmVjdG9yeVRhZ1NzaG9ydEFycmF5KHRpZixuZGlyLGRpcix0YWcsY291bnQsKGludDE2Kiljb252KTsKLSAJCQl9Ci0gCQkJZWxzZQotIAkJCXsKLSAJCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCi0tCQkJCQkoKGludDMyKiljb252KVtpXSA9IChpbnQzMil2YWx1ZVtpXTsKLSsJCQkJCSgoaW50MzIqKWNvbnYpW2ldID0gVElGRkNsYW1wRG91YmxlVG9JbnQzMih2YWx1ZVtpXSk7Ci0gCQkJCW9rID0gVElGRldyaXRlRGlyZWN0b3J5VGFnU2xvbmdBcnJheSh0aWYsbmRpcixkaXIsdGFnLGNvdW50LChpbnQzMiopY29udik7Ci0gCQkJfQotIAkJCWJyZWFrOwotQEAgLTk5MSwxOSArMTA1NSwxOSBAQAotIAkJCWlmICh0aWYtPnRpZl9kaXIudGRfYml0c3BlcnNhbXBsZTw9OCkKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKCh1aW50OCopY29udilbaV0gPSAodWludDgpdmFsdWVbaV07Ci0rCQkJCQkoKHVpbnQ4Kiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvVUludDgodmFsdWVbaV0pOwotIAkJCQlvayA9IFRJRkZXcml0ZURpcmVjdG9yeVRhZ0J5dGVBcnJheSh0aWYsbmRpcixkaXIsdGFnLGNvdW50LCh1aW50OCopY29udik7Ci0gCQkJfQotIAkJCWVsc2UgaWYgKHRpZi0+dGlmX2Rpci50ZF9iaXRzcGVyc2FtcGxlPD0xNikKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKCh1aW50MTYqKWNvbnYpW2ldID0gKHVpbnQxNil2YWx1ZVtpXTsKLSsJCQkJCSgodWludDE2Kiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvVUludDE2KHZhbHVlW2ldKTsKLSAJCQkJb2sgPSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTaG9ydEFycmF5KHRpZixuZGlyLGRpcix0YWcsY291bnQsKHVpbnQxNiopY29udik7Ci0gCQkJfQotIAkJCWVsc2UKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKCh1aW50MzIqKWNvbnYpW2ldID0gKHVpbnQzMil2YWx1ZVtpXTsKLSsJCQkJCSgodWludDMyKiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvVUludDMyKHZhbHVlW2ldKTsKLSAJCQkJb2sgPSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdMb25nQXJyYXkodGlmLG5kaXIsZGlyLHRhZyxjb3VudCwodWludDMyKiljb252KTsKLSAJCQl9Ci0gCQkJYnJlYWs7Ci1AQCAtMjA5NCwxNSArMjE1OCwyNSBAQAotIHN0YXRpYyBpbnQKLSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkUmF0aW9uYWwoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZGlyLCB1aW50MTYgdGFnLCBkb3VibGUgdmFsdWUpCi0gewotKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgbW9kdWxlW10gPSAiVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFJhdGlvbmFsIjsKLSAJdWludDMyIG1bMl07Ci0tCWFzc2VydCh2YWx1ZT49MC4wKTsKLSAJYXNzZXJ0KHNpemVvZih1aW50MzIpPT00KTsKLS0JaWYgKHZhbHVlPD0wLjApCi0rCWlmICh2YWx1ZTwwKQotKwl7Ci0rICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLCJOZWdhdGl2ZSB2YWx1ZSBpcyBpbGxlZ2FsIik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rCX0KLSsgICAgICAgIGVsc2UgaWYoIHZhbHVlICE9IHZhbHVlICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSxtb2R1bGUsIk5vdC1hLW51bWJlciB2YWx1ZSBpcyBpbGxlZ2FsIik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmICh2YWx1ZT09MC4wKQotIAl7Ci0gCQltWzBdPTA7Ci0gCQltWzFdPTE7Ci0tCX0KLS0JZWxzZSBpZiAodmFsdWU9PShkb3VibGUpKHVpbnQzMil2YWx1ZSkKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgaWYgKHZhbHVlIDw9IDB4RkZGRkZGRkZVICYmIHZhbHVlPT0oZG91YmxlKSh1aW50MzIpdmFsdWUpCi0gCXsKLSAJCW1bMF09KHVpbnQzMil2YWx1ZTsKLSAJCW1bMV09MTsKLUBAIC0yMTQzLDcgKzIyMTcsNyBAQAotIAl9Ci0gCWZvciAobmE9dmFsdWUsIG5iPW0sIG5jPTA7IG5jPGNvdW50OyBuYSsrLCBuYis9MiwgbmMrKykKLSAJewotLQkJaWYgKCpuYTw9MC4wKQotKyAgICAgICAgICAgICAgICBpZiAoKm5hPD0wLjAgfHwgKm5hICE9ICpuYSkKLSAJCXsKLSAJCQluYlswXT0wOwotIAkJCW5iWzFdPTE7Ci1AQCAtMjE1Myw3ICsyMjI3LDggQEAKLSAJCQluYlswXT0odWludDMyKSgqbmEpOwotIAkJCW5iWzFdPTE7Ci0gCQl9Ci0tCQllbHNlIGlmICgqbmE8MS4wKQotKwkJZWxzZSBpZiAoKm5hID49IDAgJiYgKm5hIDw9IChmbG9hdCkweEZGRkZGRkZGVSAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAqbmE9PShmbG9hdCkodWludDMyKSgqbmEpKQotIAkJewotIAkJCW5iWzBdPSh1aW50MzIpKChkb3VibGUpKCpuYSkqMHhGRkZGRkZGRik7Ci0gCQkJbmJbMV09MHhGRkZGRkZGRjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDA4MmJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1Gcm9tIDNjZmQ2MmQ3N2MyYTdlMTQ3YTA1YmQ2Nzg1MjRjMzQ1ZmE5YzJiYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBXZWQsIDExIEphbiAyMDE3IDEzOjI4OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlycmVhZC5jOiBhdm9pZCBkaXZpc2lvbiBieSBmbG9hdGluZyBwb2ludCAwCi0gaW4gVElGRlJlYWREaXJFbnRyeUNoZWNrZWRSYXRpb25hbCgpIGFuZCBUSUZGUmVhZERpckVudHJ5Q2hlY2tlZFNyYXRpb25hbCgpLAotIGFuZCByZXR1cm4gMCBpbiB0aGF0IGNhc2UgKGluc3RlYWQgb2YgaW5maW5pdHkgYXMgYmVmb3JlIHByZXN1bWFibHkpCi0gQXBwYXJlbnRseSBzb21lIHNhbml0aXplcnMgZG8gbm90IGxpa2UgdGhvc2UgZGl2aXNpb25zIGJ5IHplcm8uIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0NAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzU5OAotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxNjoxNDo1OS44NTg2MTI3MzAgKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI1IDE4OjExOjM2LjA0ODEwNzEyNyArMDUzMAotQEAgLTEsMyArMSw0IEBACi0rCi0gMjAxNy0wMS0xMiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNRVGFibGUsCi1AQCAtOCw2ICs5LDE0IEBACi0gCi0gMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmX2RpcnJlYWQuYzogYXZvaWQgZGl2aXNpb24gYnkgZmxvYXRpbmcgcG9pbnQgMCBpbgotKwlUSUZGUmVhZERpckVudHJ5Q2hlY2tlZFJhdGlvbmFsKCkgYW5kIFRJRkZSZWFkRGlyRW50cnlDaGVja2VkU3JhdGlvbmFsKCksCi0rCWFuZCByZXR1cm4gMCBpbiB0aGF0IGNhc2UgKGluc3RlYWQgb2YgaW5maW5pdHkgYXMgYmVmb3JlIHByZXN1bWFibHkpCi0rCUFwcGFyZW50bHkgc29tZSBzYW5pdGl6ZXJzIGRvIG5vdCBsaWtlIHRob3NlIGRpdmlzaW9ucyBieSB6ZXJvLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ0Ci0rCi0rMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotIAkqIGxpYnRpZmYvdGlmX2Rpci5jLCB0aWZfZGlycmVhZC5jLCB0aWZfZGlyd3JpdGUuYzogaW1wbGVtZW50IHZhcmlvdXMgY2xhbXBpbmdzCi0gCW9mIGRvdWJsZSB0byBvdGhlciBkYXRhIHR5cGVzIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvdXIgaWYgdGhlIG91dHB1dCByYW5nZQotIAlpc24ndCBiaWcgZW5vdWdoIHRvIGhvbGQgdGhlIGlucHV0IHZhbHVlLgotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwkyMDE3LTA0LTI1IDE2OjE0OjU5Ljg1ODYxMjczMCArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCTIwMTctMDQtMjUgMTg6MTY6MjEuODM2MTExNTc2ICswNTMwCi1AQCAtMjg4MCw3ICsyODgwLDEwIEBACi0gCQltLmwgPSBkaXJlbnRyeS0+dGRpcl9vZmZzZXQudG9mZl9sb25nODsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiQXJyYXlPZkxvbmcobS5pLDIpOwotLQlpZiAobS5pWzBdPT0wKQotKyAgICAgICAgLyogTm90IGNvbXBsZXRlbHkgc3VyZSB3aGF0IHdlIHNob3VsZCBkbyB3aGVuIG0uaVsxXT09MCwgYnV0IHNvbWUgKi8KLSsgICAgICAgIC8qIHNhbml0aXplcnMgZG8gbm90IGxpa2UgZGl2aXNpb24gYnkgMC4wOiAqLwotKyAgICAgICAgLyogaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0NCAqLwotKwlpZiAobS5pWzBdPT0wIHx8IG0uaVsxXT09MCkKLSAJCSp2YWx1ZT0wLjA7Ci0gCWVsc2UKLSAJCSp2YWx1ZT0oZG91YmxlKW0uaVswXS8oZG91YmxlKW0uaVsxXTsKLUBAIC0yOTA4LDcgKzI5MTEsMTAgQEAKLSAJCW0ubD1kaXJlbnRyeS0+dGRpcl9vZmZzZXQudG9mZl9sb25nODsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiQXJyYXlPZkxvbmcobS5pLDIpOwotLQlpZiAoKGludDMyKW0uaVswXT09MCkKLSsgICAgICAgIC8qIE5vdCBjb21wbGV0ZWx5IHN1cmUgd2hhdCB3ZSBzaG91bGQgZG8gd2hlbiBtLmlbMV09PTAsIGJ1dCBzb21lICovCi0rICAgICAgICAvKiBzYW5pdGl6ZXJzIGRvIG5vdCBsaWtlIGRpdmlzaW9uIGJ5IDAuMDogKi8KLSsgICAgICAgIC8qIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDQgKi8KLSsJaWYgKChpbnQzMiltLmlbMF09PTAgfHwgbS5pWzFdPT0wKQotIAkJKnZhbHVlPTAuMDsKLSAJZWxzZQotIAkJKnZhbHVlPShkb3VibGUpKChpbnQzMiltLmlbMF0pLyhkb3VibGUpbS5pWzFdOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzYwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc2MDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiM2M2YzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzYwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMGE3NmE4Yzc2NWM3YjgzMjdjNTk2NDYyODRmYTc4YzNjMjdlNTQ5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTY6MTM6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IHZhbGlkYXRlIEJpdHNQZXJTYW1wbGUgaW4KLSBKUEVHU2V0dXBFbmNvZGUoKSB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGNhdXNlZCBieSBpbnZhbGlkIHNoaWZ0Ci0gZXhwb25lbnQuIEZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE3LTc2MDEKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjUgMTg6MjE6MzIuODU2MTE2NDE3ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxODozNTozMS45MDQxMjk0NzcgKzA1MzAKLUBAIC0xLDQgKzEsMyBAQAotLQotIDIwMTctMDEtMTIgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9vanBlZy5jOiBmaXggbGVhayBpbiBPSlBFR1JlYWRIZWFkZXJJbmZvU2VjVGFibGVzUVRhYmxlLAotQEAgLTksNiArOCwxMiBAQAotIAotIDIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSsJKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IHZhbGlkYXRlIEJpdHNQZXJTYW1wbGUgaW4gSlBFR1NldHVwRW5jb2RlKCkgdG8gYXZvaWQKLSsJdW5kZWZpbmVkIGJlaGF2aW91ciBjYXVzZWQgYnkgaW52YWxpZCBzaGlmdCBleHBvbmVudC4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0OAotKwotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9kaXJyZWFkLmM6IGF2b2lkIGRpdmlzaW9uIGJ5IGZsb2F0aW5nIHBvaW50IDAgaW4KLSAJVElGRlJlYWREaXJFbnRyeUNoZWNrZWRSYXRpb25hbCgpIGFuZCBUSUZGUmVhZERpckVudHJ5Q2hlY2tlZFNyYXRpb25hbCgpLAotIAlhbmQgcmV0dXJuIDAgaW4gdGhhdCBjYXNlIChpbnN0ZWFkIG9mIGluZmluaXR5IGFzIGJlZm9yZSBwcmVzdW1hYmx5KQotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfanBlZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2pwZWcuYwkyMDE3LTA0LTI1IDE4OjIxOjMyLjc0NDExNjQxNSArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfanBlZy5jCTIwMTctMDQtMjUgMTg6Mzg6MDIuMjAwMTMxODE3ICswNTMwCi1AQCAtMTYzMiw3ICsxNjMyLDEzIEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZyBob3Jpem9udGFsL3ZlcnRpY2FsIHNhbXBsaW5nIHZhbHVlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCk7Ci0gICAgICAgICAgICAgICAgIH0KLS0KLSsgICAgICAgICAgICAgICAgaWYoIHRkLT50ZF9iaXRzcGVyc2FtcGxlID4gMTYgKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICBUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCaXRzUGVyU2FtcGxlICVkIG5vdCBhbGxvd2VkIGZvciBKUEVHIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+dGRfYml0c3BlcnNhbXBsZSk7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOwotKyAgICAgICAgICAgICAgICB9Ci0gCQkvKgotIAkJICogQSBSZWZlcmVuY2VCbGFja1doaXRlIGZpZWxkICptdXN0KiBiZSBwcmVzZW50IHNpbmNlIHRoZQotIAkJICogZGVmYXVsdCB2YWx1ZSBpcyBpbmFwcHJvcHJpYXRlIGZvciBZQ2JDci4gIEZpbGwgaW4gdGhlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NjAyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzYwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVkOTdlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NjAyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSA2NmU3YmQ1OTUyMDk5Njc0MGU0ZGY1NDk1YTgzMGI0MmZhZTQ4YmM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogV2VkLCAxMSBKYW4gMjAxNyAxNjozMzozNCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX3JlYWQuYzogYXZvaWQgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvdXIgb24KLSBzaWduZWQgaW50ZWdlciBhZGRpdGlvbiBpbiBUSUZGUmVhZFJhd1N0cmlwMSgpIGluIGlzTWFwcGVkKCkgY2FzZS4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NjAyCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjUgMTg6NDI6MDcuNjU2MTM1NjM4ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxODo1NDozNi44MTIxNDcyOTkgKzA1MzAKLUBAIC04LDYgKzgsMTIgQEAKLSAKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0rCSogbGlidGlmZi90aWZfcmVhZC5jOiBhdm9pZCBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW91ciBvbiBzaWduZWQgaW50ZWdlcgotKwlhZGRpdGlvbiBpbiBUSUZGUmVhZFJhd1N0cmlwMSgpIGluIGlzTWFwcGVkKCkgY2FzZS4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MAotKwotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IHZhbGlkYXRlIEJpdHNQZXJTYW1wbGUgaW4gSlBFR1NldHVwRW5jb2RlKCkgdG8gYXZvaWQKLSAJdW5kZWZpbmVkIGJlaGF2aW91ciBjYXVzZWQgYnkgaW52YWxpZCBzaGlmdCBleHBvbmVudC4KLSAJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0OAotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX3JlYWQuYwkyMDE3LTA0LTI1IDE4OjQyOjA3LjEzMjEzNTYyOSArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfcmVhZC5jCTIwMTctMDQtMjUgMTg6NTg6MjUuMjcyMTUwODU1ICswNTMwCi1AQCAtNDIwLDE2ICs0MjAsMjYgQEAKLSAJCQlyZXR1cm4gKCh0bXNpemVfdCkoLTEpKTsKLSAJCX0KLSAJfSBlbHNlIHsKLS0JCXRtc2l6ZV90IG1hLG1iOwotKwkJdG1zaXplX3QgbWE7Ci0gCQl0bXNpemVfdCBuOwotLQkJbWE9KHRtc2l6ZV90KXRkLT50ZF9zdHJpcG9mZnNldFtzdHJpcF07Ci0tCQltYj1tYStzaXplOwotLQkJaWYgKCh0ZC0+dGRfc3RyaXBvZmZzZXRbc3RyaXBdID4gKHVpbnQ2NClUSUZGX1RNU0laRV9UX01BWCl8fChtYT50aWYtPnRpZl9zaXplKSkKLS0JCQluPTA7Ci0tCQllbHNlIGlmICgobWI8bWEpfHwobWI8c2l6ZSl8fChtYj50aWYtPnRpZl9zaXplKSkKLS0JCQluPXRpZi0+dGlmX3NpemUtbWE7Ci0tCQllbHNlCi0tCQkJbj1zaXplOwotKyAgICAgICAgICAgICAgICBpZiAoKHRkLT50ZF9zdHJpcG9mZnNldFtzdHJpcF0gPiAodWludDY0KVRJRkZfVE1TSVpFX1RfTUFYKXx8Ci0rICAgICAgICAgICAgICAgICAgICAgKChtYT0odG1zaXplX3QpdGQtPnRkX3N0cmlwb2Zmc2V0W3N0cmlwXSk+dGlmLT50aWZfc2l6ZSkpCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIG49MDsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBlbHNlIGlmKCBtYSA+IFRJRkZfVE1TSVpFX1RfTUFYIC0gc2l6ZSApCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIG49MDsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIHRtc2l6ZV90IG1iPW1hK3NpemU7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAobWI+dGlmLT50aWZfc2l6ZSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbj10aWYtPnRpZl9zaXplLW1hOwotKyAgICAgICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuPXNpemU7Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSAJCWlmIChuIT1zaXplKSB7Ci0gI2lmIGRlZmluZWQoX19XSU4zMl9fKSAmJiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX01JTkdXMzJfXykpCi0gCQkJVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsIG1vZHVsZSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTkxNDcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoCmluZGV4IDk0ZjMzOTAuLjMzOTIyODUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTkxNDcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTE0Ny5wYXRjaApAQCAtMzIsMzggKzMyLDM4IEBACiAgbGlidGlmZi90aWZfZGlycmVhZC5jIHwgICA0ICsrCiAgNCBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKQogCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IGVlOGQ5ZDAuLjU3MzkyOTIgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZwogQEAgLTEsMyArMSwyMyBAQAogKzIwMTctMDYtMDEgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CiArCi0rICAgICAgICogbGlidGlmZi90aWZfZGlyaW5mby5jLCB0aWZfZGlycmVhZC5jOiBhZGQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKCksCi0rICAgICAgIGFuZCB1c2UgaXQgaW4gVElGRlJlYWREaXJlY3RvcnkoKSBzbyBhcyB0byBpZ25vcmUgZmllbGRzIHdob3NlIHRhZyBpcyBhCi0rICAgICAgIGNvZGVjLXNwZWNpZmllZCB0YWcgYnV0IHRoaXMgY29kZWMgaXMgbm90IGVuYWJsZWQuIFRoaXMgYXZvaWRzIFRJRkZHZXRGaWVsZCgpCi0rICAgICAgIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgY29kZWMgaXMgZW5hYmxlZCBvciBub3QsIGFuZAotKyAgICAgICB0aHVzIGNhbiBhdm9pZCBzdGFjayBiYXNlZCBidWZmZXIgb3ZlcmZsb3dzIGluIGEgbnVtYmVyIG9mIFRJRkYgdXRpbGl0aWVzCi0rICAgICAgIHN1Y2ggYXMgdGlmZnNwbGl0LCB0aWZmY21wLCB0aHVtYm5haWwsIGV0Yy4KLSsgICAgICAgUGF0Y2ggZGVyaXZlZCBmcm9tIDAwNjMtSGFuZGxlLXByb3Blcmx5LUNPREVDLXNwZWNpZmljLXRhZ3MucGF0Y2gKLSsgICAgICAgKGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODApIGJ5IFJhcGhhw6tsIEhlcnR6b2cuCi0rICAgICAgIEZpeGVzOgotKyAgICAgICBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTgwCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyNSAoQ1ZFLTIwMTYtMTAwOTUpCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjQgKENWRS0yMDE1LTc1NTQpCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjEgKENWRS0yMDE2LTUzMTgpCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0OTkgKENWRS0yMDE0LTgxMjgpCi0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMworKwkqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAorKwlhbmQgdXNlIGl0IGluIFRJRkZSZWFkRGlyZWN0b3J5KCkgc28gYXMgdG8gaWdub3JlIGZpZWxkcyB3aG9zZSB0YWcgaXMgYQorKwljb2RlYy1zcGVjaWZpZWQgdGFnIGJ1dCB0aGlzIGNvZGVjIGlzIG5vdCBlbmFibGVkLiBUaGlzIGF2b2lkcyBUSUZGR2V0RmllbGQoKQorKwl0byBiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGNvZGVjIGlzIGVuYWJsZWQgb3Igbm90LCBhbmQKKysJdGh1cyBjYW4gYXZvaWQgc3RhY2sgYmFzZWQgYnVmZmVyIG92ZXJmbG93cyBpbiBhIG51bWJlciBvZiBUSUZGIHV0aWxpdGllcworKwlzdWNoIGFzIHRpZmZzcGxpdCwgdGlmZmNtcCwgdGh1bWJuYWlsLCBldGMuCisrCVBhdGNoIGRlcml2ZWQgZnJvbSAwMDYzLUhhbmRsZS1wcm9wZXJseS1DT0RFQy1zcGVjaWZpYy10YWdzLnBhdGNoCisrCShodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTgwKSBieSBSYXBoYcOrbCBIZXJ0em9nLgorKwlGaXhlczoKKysJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MAorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjUgKENWRS0yMDE2LTEwMDk1KQorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY0IChDVkUtMjAxNS03NTU0KQorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTYxIChDVkUtMjAxNi01MzE4KQorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDk5IChDVkUtMjAxNC04MTI4KQorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQxCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzMKICsKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CisgMjAxNy0wNS0yMSAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KICAKLSAJKiB0b29scy90aWZmY3AuYzogZXJyb3Igb3V0IGNsZWFubHkgaW4gY3BDb250aWcyU2VwYXJhdGVCeVJvdyBhbmQKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2Rpci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2Rpci5oCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXIuaAorIAkqIGNvbmZpZ3VyZS5hYzogbGlidGlmZiA0LjAuOCByZWxlYXNlZC4KK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXIuaCBiL2xpYnRpZmYvdGlmX2Rpci5oCitpbmRleCBlMTJiNDRiLi41MjA2YmU0IDEwMDY0NAorLS0tIGEvbGlidGlmZi90aWZfZGlyLmgKKysrKyBiL2xpYnRpZmYvdGlmX2Rpci5oCiBAQCAtMjkxLDYgKzI5MSw3IEBAIHN0cnVjdCBfVElGRkZpZWxkIHsKICBleHRlcm4gaW50IF9USUZGTWVyZ2VGaWVsZHMoVElGRiosIGNvbnN0IFRJRkZGaWVsZFtdLCB1aW50MzIpOwogIGV4dGVybiBjb25zdCBUSUZGRmllbGQqIF9USUZGRmluZE9yUmVnaXN0ZXJGaWVsZChUSUZGICosIHVpbnQzMiwgVElGRkRhdGFUeXBlKTsKQEAgLTcyLDExICs3MiwxMSBAQAogIAogICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogIH0KLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcmluZm8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9kaXJpbmZvLmMKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcmluZm8uYwotQEAgLTk1Niw2ICs5NTYsMTA5IEBAIFRJRkZNZXJnZUZpZWxkSW5mbyhUSUZGKiB0aWYsIGNvbnN0IFRJRkYKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJpbmZvLmMgYi9saWJ0aWZmL3RpZl9kaXJpbmZvLmMKK2luZGV4IDBjOGVmNDIuLjk3YzBkZjAgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXJpbmZvLmMKKysrKyBiL2xpYnRpZmYvdGlmX2RpcmluZm8uYworQEAgLTk1Niw2ICs5NTYsMTA5IEBAIFRJRkZNZXJnZUZpZWxkSW5mbyhUSUZGKiB0aWYsIGNvbnN0IFRJRkZGaWVsZEluZm8gaW5mb1tdLCB1aW50MzIgbikKICAJcmV0dXJuIDA7CiAgfQogIApAQCAtMTg2LDExICsxODYsMTEgQEAKICAvKiB2aW06IHNldCB0cz04IHN0cz04IHN3PTggbm9ldDogKi8KICAKICAvKgotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCi1AQCAtMzU2Niw2ICszNTY2LDEwIEBAIFRJRkZSZWFkRGlyZWN0b3J5KFRJRkYqIHRpZikKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMgYi9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKK2luZGV4IDFkNGYwYjkuLmYxZGMzZDcgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKKysrKyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYworQEAgLTM1ODAsNiArMzU4MCwxMCBAQCBUSUZGUmVhZERpcmVjdG9yeShUSUZGKiB0aWYpCiAgCQkJCQkJCWdvdG8gYmFkOwogIAkJCQkJCWRwLT50ZGlyX3RhZz1JR05PUkU7CiAgCQkJCQkJYnJlYWs7CkBAIC0yMDEsMyArMjAxLDYgQEAKICAJCQkJfQogIAkJCX0KICAJCX0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzYucGF0Y2gKaW5kZXggMjA0OTQ5Yi4uZmM5OTM2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoCkBAIC0xOCwxMCArMTgsMTAgQEAKICBsaWJ0aWZmL3RpZl9qYmlnLmMgfCAxICsKICAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQogCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDU3MzkyOTIuLjAyNDBmMGIgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZwogQEAgLTEsMyArMSw5IEBACiArMjAxNy0wNi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KICsKQEAgLTMxLDEyICszMSwxMiBAQAogKwogIDIwMTctMDYtMDEgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CiAgCi0gICAgICAgICogbGlidGlmZi90aWZfZGlyaW5mby5jLCB0aWZfZGlycmVhZC5jOiBhZGQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKCksCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9qYmlnLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfamJpZy5jCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9qYmlnLmMKLUBAIC05NCw2ICs5NCw3IEBAIHN0YXRpYyBpbnQgSkJJR0RlY29kZShUSUZGKiB0aWYsIHVpbnQ4KgorIAkqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAorZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2piaWcuYyBiL2xpYnRpZmYvdGlmX2piaWcuYworaW5kZXggNWY1Zjc1ZS4uYzc1ZjMxZCAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2piaWcuYworKysrIGIvbGlidGlmZi90aWZfamJpZy5jCitAQCAtOTQsNiArOTQsNyBAQCBzdGF0aWMgaW50IEpCSUdEZWNvZGUoVElGRiogdGlmLCB1aW50OCogYnVmZmVyLCB0bXNpemVfdCBzaXplLCB1aW50MTYgcykKICAJCQkgICAgIGpiZ19zdHJlcnJvcihkZWNvZGVTdGF0dXMpCiAgI2VuZGlmCiAgCQkJICAgICApOwpAQCAtNDQsMyArNDQsNiBAQAogIAkJcmV0dXJuIDA7CiAgCX0KICAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvbGlidGlmZi1DVkUtMjAxNy01MjI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvbGlidGlmZi1DVkUtMjAxNy01MjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjYzMzUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL2xpYnRpZmYtQ1ZFLTIwMTctNTIyNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLUZyb20gYTI0ZGYxZTkzODMzZGZlYWE2OWJmNGQ1MTA1MThkYzQ2ODRkYjY0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjUgSmFuIDIwMTcgMTc6MDc6MjEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlidGlmZjogZml4IENWRS0yMDE3LTUyMjUKLQotdG9vbHMvdGlmZmNwLmM6IGVycm9yIG91dCBjbGVhbmx5IGluIGNwQ29udGlnMlNlcGFyYXRlQnlSb3cKLWFuZCBjcFNlcGFyYXRlMkNvbnRpZ0J5Um93IGlmIEJpdHNQZXJTYW1wbGUgIT0gOCB0byBhdm9pZCBoZWFwIGJhc2VkCi1vdmVyZmxvdy4gRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1NiBhbmQKLWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy01MjI1Ci1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICB8ICA3ICsrKysrKysKLSB0b29scy90aWZmY3AuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggOWI5ZDM5Ny4uN2U4Mjc5NSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIHRvb2xzL3RpZmZjcC5jOiBlcnJvciBvdXQgY2xlYW5seSBpbiBjcENvbnRpZzJTZXBhcmF0ZUJ5Um93IGFuZAotKwljcFNlcGFyYXRlMkNvbnRpZ0J5Um93IGlmIEJpdHNQZXJTYW1wbGUgIT0gOCB0byBhdm9pZCBoZWFwIGJhc2VkIG92ZXJmbG93LgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU2IGFuZAotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU3Ci0rCi0gMjAxNi0xMS0xOSAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KLSAKLSAJKiBsaWJ0aWZmIDQuMC43IHJlbGVhc2VkLgotZGlmZiAtLWdpdCBhL3Rvb2xzL3RpZmZjcC5jIGIvdG9vbHMvdGlmZmNwLmMKLWluZGV4IDMzOGEzZDEuLjJlODQ1NzcgMTAwNjQ0Ci0tLS0gYS90b29scy90aWZmY3AuYwotKysrIGIvdG9vbHMvdGlmZmNwLmMKLUBAIC01OTIsNyArNTkyLDcgQEAgc3RhdGljCWNvcHlGdW5jIHBpY2tDb3B5RnVuYyhUSUZGKiwgVElGRiosIHVpbnQxNiwgdWludDE2KTsKLSBzdGF0aWMgaW50Ci0gdGlmZmNwKFRJRkYqIGluLCBUSUZGKiBvdXQpCi0gewotLQl1aW50MTYgYml0c3BlcnNhbXBsZSwgc2FtcGxlc3BlcnBpeGVsID0gMTsKLSsJdWludDE2IGJpdHNwZXJzYW1wbGUgPSAxLCBzYW1wbGVzcGVycGl4ZWwgPSAxOwotIAl1aW50MTYgaW5wdXRfY29tcHJlc3Npb24sIGlucHV0X3Bob3RvbWV0cmljID0gUEhPVE9NRVRSSUNfTUlOSVNCTEFDSzsKLSAJY29weUZ1bmMgY2Y7Ci0gCXVpbnQzMiB3aWR0aCwgbGVuZ3RoOwotQEAgLTEwNjgsNiArMTA2OCwxNiBAQCBERUNMQVJFY3BGdW5jKGNwQ29udGlnMlNlcGFyYXRlQnlSb3cpCi0gCXJlZ2lzdGVyIHVpbnQzMiBuOwotIAl1aW50MzIgcm93OwotIAl0c2FtcGxlX3QgczsKLSsgICAgICAgIHVpbnQxNiBicHMgPSAwOwotKwotKyAgICAgICAgKHZvaWQpIFRJRkZHZXRGaWVsZChpbiwgVElGRlRBR19CSVRTUEVSU0FNUExFLCAmYnBzKTsKLSsgICAgICAgIGlmKCBicHMgIT0gOCApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgVElGRkVycm9yKFRJRkZGaWxlTmFtZShpbiksCi0rICAgICAgICAgICAgICAgICAgICAgICJFcnJvciwgY2FuIG9ubHkgaGFuZGxlIEJpdHNQZXJTYW1wbGU9OCBpbiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICJjcENvbnRpZzJTZXBhcmF0ZUJ5Um93Iik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0gCi0gCWluYnVmID0gX1RJRkZtYWxsb2Moc2NhbmxpbmVzaXplaW4pOwotIAlvdXRidWYgPSBfVElGRm1hbGxvYyhzY2FubGluZXNpemVvdXQpOwotQEAgLTExMjEsNiArMTEzMSwxNiBAQCBERUNMQVJFY3BGdW5jKGNwU2VwYXJhdGUyQ29udGlnQnlSb3cpCi0gCXJlZ2lzdGVyIHVpbnQzMiBuOwotIAl1aW50MzIgcm93OwotIAl0c2FtcGxlX3QgczsKLSsgICAgICAgIHVpbnQxNiBicHMgPSAwOwotKwotKyAgICAgICAgKHZvaWQpIFRJRkZHZXRGaWVsZChpbiwgVElGRlRBR19CSVRTUEVSU0FNUExFLCAmYnBzKTsKLSsgICAgICAgIGlmKCBicHMgIT0gOCApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgVElGRkVycm9yKFRJRkZGaWxlTmFtZShpbiksCi0rICAgICAgICAgICAgICAgICAgICAgICJFcnJvciwgY2FuIG9ubHkgaGFuZGxlIEJpdHNQZXJTYW1wbGU9OCBpbiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICJjcFNlcGFyYXRlMkNvbnRpZ0J5Um93Iik7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0gCi0gCWluYnVmID0gX1RJRkZtYWxsb2Moc2NhbmxpbmVzaXplaW4pOwotIAlvdXRidWYgPSBfVElGRm1hbGxvYyhzY2FubGluZXNpemVvdXQpOwotQEAgLTE3NjMsNyArMTc4Myw3IEBAIHBpY2tDb3B5RnVuYyhUSUZGKiBpbiwgVElGRiogb3V0LCB1aW50MTYgYml0c3BlcnNhbXBsZSwgdWludDE2IHNhbXBsZXNwZXJwaXhlbCkKLSAJdWludDMyIHcsIGwsIHR3LCB0bDsKLSAJaW50IGJ5Y2h1bms7Ci0gCi0tCSh2b2lkKSBUSUZGR2V0RmllbGQoaW4sIFRJRkZUQUdfUExBTkFSQ09ORklHLCAmc2hvcnR2KTsKLSsJKHZvaWQpIFRJRkZHZXRGaWVsZERlZmF1bHRlZChpbiwgVElGRlRBR19QTEFOQVJDT05GSUcsICZzaG9ydHYpOwotIAlpZiAoc2hvcnR2ICE9IGNvbmZpZyAmJiBiaXRzcGVyc2FtcGxlICE9IDggJiYgc2FtcGxlc3BlcnBpeGVsID4gMSkgewotIAkJZnByaW50ZihzdGRlcnIsCi0gCQkgICAgIiVzOiBDYW5ub3QgaGFuZGxlIGRpZmZlcmVudCBwbGFuYXIgY29uZmlndXJhdGlvbiB3LyBiaXRzL3NhbXBsZSAhPSA4XG4iLAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY2ZTg1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgVGFnIEltYWdlIEZpbGUgRm9ybWF0IChUSUZGKSIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zNGRhM2RiNDZmYWI3NTAxOTkyZjk2MTVkN2UxNThjZiIKLQotQ1ZFX1BST0RVQ1QgPSAibGlidGlmZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL2xpYnRpZmYvdGlmZi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGlidG9vbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlidGlmZi1DVkUtMjAxNy01MjI1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTkxNDcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTkzNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDY4OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMTMzNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI3MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDA5My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI2OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI2Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI2Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI2OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDI3MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NTkyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc1OTQtcDEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzU5NC1wMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NTk1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc1OTYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzU5OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NjAxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc2MDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzU5My5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc3YWU5MjhkMmM2YjdmYjQ2YTIxYzNhMjkzMjUxNTdiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmNDNhMmNmYjk1ODllNWNlY2FhNjZlMTZiZjg3ZjgxNGM5NDVmMjJkZjdiYTYwMGQ2M2FhYzQ2MzJjNGYwMTkiCi0KLSMgZXhjbHVkZSBiZXRhcwotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidGlmZi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1pbmhlcml0IGF1dG90b29scwotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJheF9jdl9jaGVja19nbF9saWJnbD1ubyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiY3h4IGpwZWcgemxpYiBsem1hIFwKLSAgICAgICAgICAgICAgICAgIHN0cmlwLWNob3BwaW5nIGV4dHJhc2FtcGxlLWFzLWFscGhhIGNoZWNrLXljYmNyLXN1YnNhbXBsaW5nIgotCi1QQUNLQUdFQ09ORklHW2N4eF0gPSAiLS1lbmFibGUtY3h4LC0tZGlzYWJsZS1jeHgsLCIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnLCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliLCIKLVBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiwiCi0KLSMgQ29udmVydCBzaW5nbGUtc3RyaXAgdW5jb21wcmVzc2VkIGltYWdlcyB0byBtdWx0aXBsZSBzdHJpcHMgb2Ygc3BlY2lmaWVkCi0jIHNpemUgKGRlZmF1bHQ6IDgxOTIpIHRvIHJlZHVjZSBtZW1vcnkgdXNhZ2UKLVBBQ0tBR0VDT05GSUdbc3RyaXAtY2hvcHBpbmddID0gIi0tZW5hYmxlLXN0cmlwLWNob3BwaW5nLC0tZGlzYWJsZS1zdHJpcC1jaG9wcGluZywsIgotCi0jIFRyZWF0IGEgZm91cnRoIHNhbXBsZSB3aXRoIG5vIEVYVFJBU0FNUExFXyB2YWx1ZSBhcyBiZWluZyBBU1NPQ0FMUEhBCi1QQUNLQUdFQ09ORklHW2V4dHJhc2FtcGxlLWFzLWFscGhhXSA9ICItLWVuYWJsZS1leHRyYXNhbXBsZS1hcy1hbHBoYSwtLWRpc2FibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLCIKLQotIyBDb250cm9sIHBpY2tpbmcgdXAgWUNiQ3Igc3Vic2FtcGxlIGluZm8uIERpc2FibGUgdG8gc3VwcG9ydCBmaWxlcyBsYWNraW5nCi0jIHRoZSB0YWcKLVBBQ0tBR0VDT05GSUdbY2hlY2steWNiY3Itc3Vic2FtcGxpbmddID0gIi0tZW5hYmxlLWNoZWNrLXljYmNyLXN1YnNhbXBsaW5nLC0tZGlzYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywsIgotCi0jIFN1cHBvcnQgYSBtZWNoYW5pc20gYWxsb3dpbmcgcmVhZGluZyBsYXJnZSBzdHJpcHMgKHVzdWFsbHkgb25lIHN0cmlwIGZpbGVzKQotIyBpbiBjaHVua3Mgd2hlbiB1c2luZyBUSUZGUmVhZFNjYW5saW5lLiBFeHBlcmltZW50YWwgNC4wKyBmZWF0dXJlCi1QQUNLQUdFQ09ORklHW2NodW5reS1zdHJpcC1yZWFkXSA9ICItLWVuYWJsZS1jaHVua3ktc3RyaXAtcmVhZCwtLWRpc2FibGUtY2h1bmt5LXN0cmlwLXJlYWQsLCIKLQotUEFDS0FHRVMgPSsgInRpZmZ4eCB0aWZmLXV0aWxzIgotRklMRVNfdGlmZnh4ID0gIiR7bGliZGlyfS9saWJ0aWZmeHguc28uKiIKLUZJTEVTX3RpZmYtdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I5MWJhYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjguYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJQcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgVGFnIEltYWdlIEZpbGUgRm9ybWF0IChUSUZGKSIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zNGRhM2RiNDZmYWI3NTAxOTkyZjk2MTVkN2UxNThjZiIKKworQ1ZFX1BST0RVQ1QgPSAibGlidGlmZiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL2xpYnRpZmYvdGlmZi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbGlidG9vbDIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTE0Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNjg4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExMzM1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI3LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYTdkMWMxMzE4NDE2ZGRmMzZkNWY2ZmE0NjAwMDY5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWQ3YTVhOGNjZDkyMDU5OTEzZjI0Njg3N2RiOTVhMjkxOGU2YzA0ZmI5ZDQzZmQ3NGU1YzMzOTBkYWMyOTEwIgorCisjIGV4Y2x1ZGUgYmV0YXMKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInRpZmYtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYXhfY3ZfY2hlY2tfZ2xfbGliZ2w9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz0gImN4eCBqcGVnIHpsaWIgbHptYSBcCisgICAgICAgICAgICAgICAgICBzdHJpcC1jaG9wcGluZyBleHRyYXNhbXBsZS1hcy1hbHBoYSBjaGVjay15Y2Jjci1zdWJzYW1wbGluZyIKKworUEFDS0FHRUNPTkZJR1tjeHhdID0gIi0tZW5hYmxlLWN4eCwtLWRpc2FibGUtY3h4LCwiCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZywiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiwiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHosIgorCisjIENvbnZlcnQgc2luZ2xlLXN0cmlwIHVuY29tcHJlc3NlZCBpbWFnZXMgdG8gbXVsdGlwbGUgc3RyaXBzIG9mIHNwZWNpZmllZAorIyBzaXplIChkZWZhdWx0OiA4MTkyKSB0byByZWR1Y2UgbWVtb3J5IHVzYWdlCitQQUNLQUdFQ09ORklHW3N0cmlwLWNob3BwaW5nXSA9ICItLWVuYWJsZS1zdHJpcC1jaG9wcGluZywtLWRpc2FibGUtc3RyaXAtY2hvcHBpbmcsLCIKKworIyBUcmVhdCBhIGZvdXJ0aCBzYW1wbGUgd2l0aCBubyBFWFRSQVNBTVBMRV8gdmFsdWUgYXMgYmVpbmcgQVNTT0NBTFBIQQorUEFDS0FHRUNPTkZJR1tleHRyYXNhbXBsZS1hcy1hbHBoYV0gPSAiLS1lbmFibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLS1kaXNhYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLCwiCisKKyMgQ29udHJvbCBwaWNraW5nIHVwIFlDYkNyIHN1YnNhbXBsZSBpbmZvLiBEaXNhYmxlIHRvIHN1cHBvcnQgZmlsZXMgbGFja2luZworIyB0aGUgdGFnCitQQUNLQUdFQ09ORklHW2NoZWNrLXljYmNyLXN1YnNhbXBsaW5nXSA9ICItLWVuYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywtLWRpc2FibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLCIKKworIyBTdXBwb3J0IGEgbWVjaGFuaXNtIGFsbG93aW5nIHJlYWRpbmcgbGFyZ2Ugc3RyaXBzICh1c3VhbGx5IG9uZSBzdHJpcCBmaWxlcykKKyMgaW4gY2h1bmtzIHdoZW4gdXNpbmcgVElGRlJlYWRTY2FubGluZS4gRXhwZXJpbWVudGFsIDQuMCsgZmVhdHVyZQorUEFDS0FHRUNPTkZJR1tjaHVua3ktc3RyaXAtcmVhZF0gPSAiLS1lbmFibGUtY2h1bmt5LXN0cmlwLXJlYWQsLS1kaXNhYmxlLWNodW5reS1zdHJpcC1yZWFkLCwiCisKK1BBQ0tBR0VTID0rICJ0aWZmeHggdGlmZi11dGlscyIKK0ZJTEVTX3RpZmZ4eCA9ICIke2xpYmRpcn0vbGlidGlmZnh4LnNvLioiCitGSUxFU190aWZmLXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy8wMDAxLWNoZWNrLWZvci1hdmFpbGFibGUtYXJtLW9wdGltaXphdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvMDAwMS1jaGVjay1mb3ItYXZhaWxhYmxlLWFybS1vcHRpbWl6YXRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZjY4YjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvMDAwMS1jaGVjay1mb3ItYXZhaWxhYmxlLWFybS1vcHRpbWl6YXRpb25zLnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK0Zyb20gY2JjZmY1OGVkNjcwYzhlZGMwYmUxMDA0Mzg0Y2JlMGZkMDdkOGQyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDUgSnVsIDIwMTcgMTg6NDk6MjEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGNoZWNrIGZvciBhdmFpbGFibGUgYXJtIG9wdGltaXphdGlvbnMKKworVGFrZW4gRnJvbQoraHR0cDovL3NvdXJjZXMuZGViaWFuLm5ldC9zcmMvbXBlZzJkZWMvMC41LjEtNy9kZWJpYW4vcGF0Y2hlcy82NV9hcm0tdGVzdC13aXRoLWNvbXBpbGVyLnBhdGNoLworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEyICsrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGFjZGNiMWUuLjJjMGE3MjEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU5LDcgKzU5LDcgQEAgZWxpZiB0ZXN0IHgiJEdDQyIgPSB4InllcyI7IHRoZW4KKyAgICAgQUNfVFJZX0NGTEFHUyhbJFRSWV9DRkxBR1MgJENGTEFHU10sW09QVF9DRkxBR1M9IiRUUllfQ0ZMQUdTIl0pCisgCisgICAgIGRubCBhcmNoLXNwZWNpZmljIGZsYWdzCistICAgIGFybV9jb25kaXRpb25hbD1mYWxzZQorKyAgICBidWlsZF9hcm1fb3B0PWZhbHNlCisgICAgIGNhc2UgIiRob3N0IiBpbgorICAgICBpPzg2LSogfCBrPy0qIHwgeDg2XzY0LSogfCBhbWQ2NC0qKQorIAlBQ19ERUZJTkUoW0FSQ0hfWDg2XSwsW3g4NiBhcmNoaXRlY3R1cmVdKQorQEAgLTEwMiw4ICsxMDIsMTIgQEAgZWxpZiB0ZXN0IHgiJEdDQyIgPSB4InllcyI7IHRoZW4KKyAgICAgYWxwaGEqKQorIAlBQ19ERUZJTkUoW0FSQ0hfQUxQSEFdLCxbYWxwaGEgYXJjaGl0ZWN0dXJlXSk7OworICAgICBhcm0qKQorLQlhcm1fY29uZGl0aW9uYWw9OgorLQlBQ19ERUZJTkUoW0FSQ0hfQVJNXSwsW0FSTSBhcmNoaXRlY3R1cmVdKTs7CisrCUFDX0xBTkcoQykKKysJQUNfQ09NUElMRV9JRkVMU0UoCisrCQlbQUNfTEFOR19TT1VSQ0UoW1sKKysJCQl2b2lkIGZvbyh2b2lkKSB7IF9fYXNtX18gdm9sYXRpbGUoInBsZCBbcjFdIik7IH1dXSldLAorKwkJYnVpbGRfYXJtX29wdD10cnVlOyBBQ19ERUZJTkUoW0FSQ0hfQVJNXSwsW0FSTSBhcmNoaXRlY3R1cmVdKSwKKysJCWJ1aWxkX2FybV9vcHQ9ZmFsc2UpOzsKKyAgICAgZXNhYworIGVsaWYgdGVzdCB4IiRDQyIgPSB4InRlbmRyYWNjIjsgdGhlbgorICAgICBkbmwgVGVuRFJBIHBvcnRhYmlsaXR5IGNoZWNraW5nIGNvbXBpbGVyCitAQCAtMTIzLDcgKzEyNyw3IEBAIGVsc2UKKyAgICAgZXNhYworIGZpCisgCistQU1fQ09ORElUSU9OQUwoQVJDSF9BUk0sICR7YXJtX2NvbmRpdGlvbmFsfSkKKytBTV9DT05ESVRJT05BTChBUkNIX0FSTSwgdGVzdCB4JGJ1aWxkX2FybV9vcHQgPSB4dHJ1ZSkKKyAKKyBkbmwgQ2hlY2tzIGZvciBsaWJ0b29sIC0gdGhpcyBtdXN0IGJlIGRvbmUgYWZ0ZXIgd2Ugc2V0IGNmbGFncworIEFDX0xJQlRPT0xfV0lOMzJfRExMCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvMDAwMi1TZXQtdmlzaWJpbGl0eS1vZi1nbG9iYWwtc3ltYm9scy11c2VkLWluLUFSTS1zcGVjaWZpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL2ZpbGVzLzAwMDItU2V0LXZpc2liaWxpdHktb2YtZ2xvYmFsLXN5bWJvbHMtdXNlZC1pbi1BUk0tc3BlY2lmaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzAxNjkyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL2ZpbGVzLzAwMDItU2V0LXZpc2liaWxpdHktb2YtZ2xvYmFsLXN5bWJvbHMtdXNlZC1pbi1BUk0tc3BlY2lmaS5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIGY5ZDlkYzkyZDc1Zjg5MTBlM2NkNWZkY2JlYTcyZTUwNWNkZjM0OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDE5OjAzOjM2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBTZXQgdmlzaWJpbGl0eSBvZiBnbG9iYWwgc3ltYm9scyB1c2VkIGluIEFSTSBzcGVjaWZpYworIGFzc2VtYmx5IGZpbGUgdG8gaW50ZXJuYWwKKworVGFrZW4gZnJvbQoraHR0cDovL3NvdXJjZXMuZGViaWFuLm5ldC9zcmMvbXBlZzJkZWMvMC41LjEtNy9kZWJpYW4vcGF0Y2hlcy82MF9hcm0tcHJpdmF0ZS1zeW1ib2xzLnBhdGNoLworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYm1wZWcyL21vdGlvbl9jb21wX2FybV9zLlMgfCAxMiArKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlibXBlZzIvbW90aW9uX2NvbXBfYXJtX3MuUyBiL2xpYm1wZWcyL21vdGlvbl9jb21wX2FybV9zLlMKK2luZGV4IGY2YzNkN2QuLmM5MjFmN2MgMTAwNjQ0CistLS0gYS9saWJtcGVnMi9tb3Rpb25fY29tcF9hcm1fcy5TCisrKysgYi9saWJtcGVnMi9tb3Rpb25fY29tcF9hcm1fcy5TCitAQCAtMjMsNyArMjMsOCBAQAorIAorIEAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAkuYWxpZ24KKy0JLmdsb2JhbCBNQ19wdXRfb18xNl9hcm0KKysJLmdsb2JhbCAgIE1DX3B1dF9vXzE2X2FybQorKwkuaW50ZXJuYWwgTUNfcHV0X29fMTZfYXJtCisgTUNfcHV0X29fMTZfYXJtOgorIAlAQCB2b2lkIGZ1bmModWludDhfdCAqIGRlc3QsIGNvbnN0IHVpbnQ4X3QgKiByZWYsIGludCBzdHJpZGUsIGludCBoZWlnaHQpCisgCXBsZCBbcjFdCitAQCAtODMsNyArODQsOCBAQCBNQ19wdXRfb18xNl9hcm1fYWxpZ25fanQ6CisgCisgQCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCS5hbGlnbgorLQkuZ2xvYmFsIE1DX3B1dF9vXzhfYXJtCisrCS5nbG9iYWwgICBNQ19wdXRfb184X2FybQorKwkuaW50ZXJuYWwgTUNfcHV0X29fOF9hcm0KKyBNQ19wdXRfb184X2FybToKKyAJQEAgdm9pZCBmdW5jKHVpbnQ4X3QgKiBkZXN0LCBjb25zdCB1aW50OF90ICogcmVmLCBpbnQgc3RyaWRlLCBpbnQgaGVpZ2h0KQorIAlwbGQgW3IxXQorQEAgLTE1Miw3ICsxNTQsOCBAQCBNQ19wdXRfb184X2FybV9hbGlnbl9qdDoKKyAuZW5kbQorIAorIAkuYWxpZ24KKy0JLmdsb2JhbCBNQ19wdXRfeF8xNl9hcm0KKysJLmdsb2JhbCAgIE1DX3B1dF94XzE2X2FybQorKwkuaW50ZXJuYWwgTUNfcHV0X3hfMTZfYXJtCisgTUNfcHV0X3hfMTZfYXJtOgorIAlAQCB2b2lkIGZ1bmModWludDhfdCAqIGRlc3QsIGNvbnN0IHVpbnQ4X3QgKiByZWYsIGludCBzdHJpZGUsIGludCBoZWlnaHQpCisgCXBsZCBbcjFdCitAQCAtMjQ0LDcgKzI0Nyw4IEBAIE1DX3B1dF94XzE2X2FybV9hbGlnbl9qdDoKKyAKKyBAIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAJLmFsaWduCistCS5nbG9iYWwgTUNfcHV0X3hfOF9hcm0KKysJLmdsb2JhbCAgIE1DX3B1dF94XzhfYXJtCisrCS5pbnRlcm5hbCBNQ19wdXRfeF84X2FybQorIE1DX3B1dF94XzhfYXJtOgorIAlAQCB2b2lkIGZ1bmModWludDhfdCAqIGRlc3QsIGNvbnN0IHVpbnQ4X3QgKiByZWYsIGludCBzdHJpZGUsIGludCBoZWlnaHQpCisgCXBsZCBbcjFdCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvYWx0aXZlY19oX25lZWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMTNhZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvYWx0aXZlY19oX25lZWRlZC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitBZGQgbmV3IG1ldGhvZCB0byBqdWRnZSB3aGV0aGVyIDxhbHRpdmVjLmg+IGlzIG5lZWRlZAorCitUaGUgb3JpZ2luYWwgbG9naWMgd2lsbCB1c2UgInR5cGVkZWYgdmVjdG9yIGludCB0OyIgdG8ganVkZ2UKK3doZXRoZXIgPGFsdGl2ZWMuaD4gaXMgbmVlZGVkLiBhbHRpdmVjLmggY29udGFpbnMgdGhlIGZvbGxvd2luZworc3RhdGVtZW50OgorCisgI2lmICFkZWZpbmVkKF9fQVBQTEVfQUxUSVZFQ19fKQorICNkZWZpbmUgdmVjdG9yIF9fdmVjdG9yCisgI2RlZmluZSBwaXhlbCBfX3BpeGVsCisgI2RlZmluZSBib29sIAorICNlbmRpZgorCitJbiBnY2MtNC4zLjMsIF9fQVBQTEVfQUxUSVZFQ19fIGlzIG5vdCBkZWZpbmVkIGJ5IGNvbXBpbGVyLCBuZWl0aGVyCithcyB2ZWN0b3IsIHBpeGVsLCBhbmQgYm9vbC4gSW4gb3JkZXIgdG8gbWFrZSAidHlwZWRlZiB2ZWN0b3IgaW50IHQ7IgorcGFzcyB0aGUgY29tcGlsYXRpb24sIHdlIG5lZWQgdG8gaW5jbHVkZSBhbHRpdmVjLmguCisKK0hvd2V2ZXIgaW4gZ2NjLTQuNS4wLCBfX0FQUExFX0FMVElWRUNfXyBpcyBkZWZpbmVkIGJ5IGNvbXBpbGVyLAorc28gYXMgdmVjdG9yLCBwaXhlbCwgYW5kIGJvb2wuIFdlIGNvdWxkIG5vdCBqdWRnZSB3aGV0aGVyCithbHRpdmVjLmggaXMgbmVlZGVkIGJ5ICJ0eXBlZGVmIHZlY3RvciBpbnQgdDsiLgorSGVyZSB3ZSBpbmNsdWRlIGFub3RoZXIgc3RhdGVtZW50ICJpbnQgdG1wID0gX19DUjZfRVE7IiwgaW4KK3doaWNoIF9fQ1I2X0VRIGlzIGRlZmluZWQgaW4gYWx0aXZlYy5oLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KKworZGlmZiAtcnVOIGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCistLS0gYS9jb25maWd1cmUuYWMJMjAxMC0wOS0xNCAyMDo1NTo0Mi4zOTk2ODc2NjMgKzA4MDAKKysrKyBiL2NvbmZpZ3VyZS5hYwkyMDEwLTA5LTE0IDIwOjU2OjQzLjQwMzIwNDY0OCArMDgwMAorQEAgLTc5LDExICs3OSwxMSBAQAorIAkJIENGTEFHUz0iJE9QVF9DRkxBR1MgJFRSWV9DRkxBR1MgJENGTEFHUyIKKyAJCSBBQ19NU0dfQ0hFQ0tJTkcoW2lmIDxhbHRpdmVjLmg+IGlzIG5lZWRlZF0pCisgCQkgQUNfVFJZX0NPTVBJTEUoW10sCistCQkgICAgW3R5cGVkZWYgdmVjdG9yIGludCB0OworKwkJICAgIFt0eXBlZGVmIHZlY3RvciBpbnQgdDsgaW50IHRtcCA9IF9fQ1I2X0VROworIAkJICAgICB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAorIAkJICAgIFtoYXZlX2FsdGl2ZWM9eWVzOyBBQ19NU0dfUkVTVUxUKG5vKV0sCisgCQkgICAgW0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8YWx0aXZlYy5oPl0sCistCQkJW3R5cGVkZWYgdmVjdG9yIGludCB0OyB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAorKwkJCVt0eXBlZGVmIHZlY3RvciBpbnQgdDsgaW50IHRtcCA9IF9fQ1I2X0VROyB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAorIAkJCVtBQ19ERUZJTkUoW0hBVkVfQUxUSVZFQ19IXSwsCisgCQkJICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFsdGl2ZWMuaD4gaGVhZGVyLl0pCisgCQkJIGhhdmVfYWx0aXZlYz15ZXM7IEFDX01TR19SRVNVTFQoeWVzKV0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvbXBlZzJkZWMtMC40LjEvYWx0aXZlY19oX25lZWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlYy0wLjQuMS9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGM1NjQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlYy0wLjQuMS9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotQWRkIG5ldyBtZXRob2QgdG8ganVkZ2Ugd2hldGhlciA8YWx0aXZlYy5oPiBpcyBuZWVkZWQKLQotVGhlIG9yaWdpbmFsIGxvZ2ljIHdpbGwgdXNlICJ0eXBlZGVmIHZlY3RvciBpbnQgdDsiIHRvIGp1ZGdlCi13aGV0aGVyIDxhbHRpdmVjLmg+IGlzIG5lZWRlZC4gYWx0aXZlYy5oIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKLXN0YXRlbWVudDoKLQotICNpZiAhZGVmaW5lZChfX0FQUExFX0FMVElWRUNfXykKLSAjZGVmaW5lIHZlY3RvciBfX3ZlY3RvcgotICNkZWZpbmUgcGl4ZWwgX19waXhlbAotICNkZWZpbmUgYm9vbCAKLSAjZW5kaWYKLQotSW4gZ2NjLTQuMy4zLCBfX0FQUExFX0FMVElWRUNfXyBpcyBub3QgZGVmaW5lZCBieSBjb21waWxlciwgbmVpdGhlcgotYXMgdmVjdG9yLCBwaXhlbCwgYW5kIGJvb2wuIEluIG9yZGVyIHRvIG1ha2UgInR5cGVkZWYgdmVjdG9yIGludCB0OyIKLXBhc3MgdGhlIGNvbXBpbGF0aW9uLCB3ZSBuZWVkIHRvIGluY2x1ZGUgYWx0aXZlYy5oLgotCi1Ib3dldmVyIGluIGdjYy00LjUuMCwgX19BUFBMRV9BTFRJVkVDX18gaXMgZGVmaW5lZCBieSBjb21waWxlciwKLXNvIGFzIHZlY3RvciwgcGl4ZWwsIGFuZCBib29sLiBXZSBjb3VsZCBub3QganVkZ2Ugd2hldGhlcgotYWx0aXZlYy5oIGlzIG5lZWRlZCBieSAidHlwZWRlZiB2ZWN0b3IgaW50IHQ7Ii4KLUhlcmUgd2UgaW5jbHVkZSBhbm90aGVyIHN0YXRlbWVudCAiaW50IHRtcCA9IF9fQ1I2X0VROyIsIGluCi13aGljaCBfX0NSNl9FUSBpcyBkZWZpbmVkIGluIGFsdGl2ZWMuaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IERvbmd4aWFvIFh1IDxkb25neGlhby54dUBpbnRlbC5jb20+Ci0KLWRpZmYgLXJ1TiBtcGVnMmRlYy0wLjQuMS1vcmlnL2NvbmZpZ3VyZS5pbiBtcGVnMmRlYy0wLjQuMS9jb25maWd1cmUuaW4KLS0tLSBtcGVnMmRlYy0wLjQuMS1vcmlnL2NvbmZpZ3VyZS5pbgkyMDEwLTA5LTE0IDIwOjU1OjQyLjM5OTY4NzY2MyArMDgwMAotKysrIG1wZWcyZGVjLTAuNC4xL2NvbmZpZ3VyZS5pbgkyMDEwLTA5LTE0IDIwOjU2OjQzLjQwMzIwNDY0OCArMDgwMAotQEAgLTc1LDExICs3NSwxMSBAQAotIAkJIENGTEFHUz0iJE9QVF9DRkxBR1MgJFRSWV9DRkxBR1MgJENGTEFHUyIKLSAJCSBBQ19NU0dfQ0hFQ0tJTkcoW2lmIDxhbHRpdmVjLmg+IGlzIG5lZWRlZF0pCi0gCQkgQUNfVFJZX0NPTVBJTEUoW10sCi0tCQkgICAgW3R5cGVkZWYgdmVjdG9yIGludCB0OwotKwkJICAgIFt0eXBlZGVmIHZlY3RvciBpbnQgdDsgaW50IHRtcCA9IF9fQ1I2X0VROwotIAkJICAgICB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAotIAkJICAgIFtoYXZlX2FsdGl2ZWM9eWVzOyBBQ19NU0dfUkVTVUxUKG5vKV0sCi0gCQkgICAgW0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8YWx0aXZlYy5oPl0sCi0tCQkJW3R5cGVkZWYgdmVjdG9yIGludCB0OyB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAotKwkJCVt0eXBlZGVmIHZlY3RvciBpbnQgdDsgaW50IHRtcCA9IF9fQ1I2X0VROyB2ZWNfbGQoMCwgKHVuc2lnbmVkIGNoYXIgKikwKTtdLAotIAkJCVtBQ19ERUZJTkUoW0hBVkVfQUxUSVZFQ19IXSwsCi0gCQkJICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFsdGl2ZWMuaD4gaGVhZGVyLl0pCi0gCQkJIGhhdmVfYWx0aXZlYz15ZXM7IEFDX01TR19SRVNVTFQoeWVzKV0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvbXBlZzJkZWNfMC40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvbXBlZzJkZWNfMC40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNzY1ZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL21wZWcyZGVjXzAuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGFuZCB0ZXN0IHByb2dyYW0gZm9yIGRlY29kaW5nIE1QRUctMiBhbmQgTVBFRy0xIHZpZGVvIHN0cmVhbXMiCi1IT01FUEFHRSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9tcGVnMi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PWVhZDYyNjAyZDQ2MzgzMjlkM2I1Yjg2YTU1ODAzMTU0IgotCi1QUiA9ICJyMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0L2ZpbGVzL21wZWcyZGVjLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzYzMWIwYTRiY2ZkZDBkNzhjMGJiMDA4MzA4MGIwZGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc0YTc2MDY4ZjhlYzM2ZDRiYjU5YTAzYmYxMTU3YmU0NDExOGNhMDIyNTIxODBlOGIzNThiMGI1ZTNlZGVlZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJtcGVnMi5zb3VyY2Vmb3JnZS5uZXQvZG93bmxvYWRzLmh0bWwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zZGwiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh2IgotCi1QQUNLQUdFUyA9ICJtcGVnMmRlYy1kYmcgbXBlZzJkZWMgbXBlZzJkZWMtZG9jIGxpYm1wZWcyIGxpYm1wZWcyLWRldiBsaWJtcGVnMmNvbnZlcnQgbGlibXBlZzJjb252ZXJ0LWRldiBsaWJtcGVnMi1zdGF0aWNkZXYgbGlibXBlZzJjb252ZXJ0LXN0YXRpY2RldiIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19saWJtcGVnMiA9ICIke2xpYmRpcn0vbGlibXBlZzIuc28uKiIKLUZJTEVTX2xpYm1wZWcyY29udmVydCA9ICIke2xpYmRpcn0vbGlibXBlZzJjb252ZXJ0LnNvLioiCi1GSUxFU19saWJtcGVnMi1kZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibXBlZzIubGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGlibXBlZzIucGMgXAotICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbXBlZzJkZWMvbXBlZzIuaCIKLUZJTEVTX2xpYm1wZWcyLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlibXBlZzIuYSIKLUZJTEVTX2xpYm1wZWcyY29udmVydC1kZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydC5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYm1wZWcyY29udmVydC5wYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbXBlZzJkZWMvbXBlZzJjb252ZXJ0LmgiCi1GSUxFU19saWJtcGVnMmNvbnZlcnQtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQuYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlY18wLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlY18wLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzExYzJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL21wZWcyZGVjXzAuNS4xLmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBhbmQgdGVzdCBwcm9ncmFtIGZvciBkZWNvZGluZyBNUEVHLTIgYW5kIE1QRUctMSB2aWRlbyBzdHJlYW1zIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYm1wZWcyLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvbXBlZzIuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIyO21kNT03NzY2ZjRmY2I1OGYwZjg0MTNjNDlhNzQ2ZjJhYjg5YiIKKworU1JDX1VSSSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0L2ZpbGVzL2xpYm1wZWcyLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2hlY2stZm9yLWF2YWlsYWJsZS1hcm0tb3B0aW1pemF0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVNldC12aXNpYmlsaXR5LW9mLWdsb2JhbC1zeW1ib2xzLXVzZWQtaW4tQVJNLXNwZWNpZmkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9saWJtcGVnMi0ke1BWfSIKKworU1JDX1VSSVttZDVzdW1dID0gIjBmOTJjNzQ1NGU1ODM3OWI0YTVhMzc4NDg1YmJkOGVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlZTIyZTg5M2NiNWZjMmIyYjZlYmQ2MGI4ODQ3OGFiODU1NmNiM2I5M2Y5YTBkN2NlOGYzYjYxODUxODcxZDQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0L2Rvd25sb2Fkcy5odG1sIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtc2RsIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4diIKKworUEFDS0FHRVMgPSAibXBlZzJkZWMtZGJnIG1wZWcyZGVjIG1wZWcyZGVjLWRvYyBsaWJtcGVnMiBsaWJtcGVnMi1kZXYgbGlibXBlZzJjb252ZXJ0IGxpYm1wZWcyY29udmVydC1kZXYgbGlibXBlZzItc3RhdGljZGV2IGxpYm1wZWcyY29udmVydC1zdGF0aWNkZXYiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgorRklMRVNfbGlibXBlZzIgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyLnNvLioiCitGSUxFU19saWJtcGVnMmNvbnZlcnQgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydC5zby4qIgorRklMRVNfbGlibXBlZzItZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm1wZWcyLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibXBlZzJhcmNoLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYm1wZWcyLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L21wZWcyZGVjL21wZWcyLmgiCitGSUxFU19saWJtcGVnMi1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyLmEiCitGSUxFU19saWJtcGVnMmNvbnZlcnQtZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibXBlZzJjb252ZXJ0LmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydGFyY2gubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYm1wZWcyY29udmVydC5wYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbXBlZzJkZWMvbXBlZzJjb252ZXJ0LmgiCitGSUxFU19saWJtcGVnMmNvbnZlcnQtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQuYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjMuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjMuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBhNzAzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjIzLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIkF1ZGlvIGRlY29kZXIgZm9yIE1QRUctMSBMYXllciAxLzIvMyIKLURFU0NSSVBUSU9OID0gIlRoZSBjb3JlIG9mIG1wZzEyMyBpcyBhbiBNUEVHLTEgTGF5ZXIgMS8yLzMgZGVjb2RpbmcgbGlicmFyeSwgd2hpY2ggY2FuIGJlIHVzZWQgYnkgb3RoZXIgcHJvZ3JhbXMuIFwKLW1wZzEyMyBhbHNvIGNvbWVzIHdpdGggYSBjb21tYW5kLWxpbmUgdG9vbCB3aGljaCBjYW4gcGxheWJhY2sgdXNpbmcgQUxTQSwgUHVsc2VBdWRpbywgT1NTLCBhbmQgc2V2ZXJhbCBvdGhlciBBUElzLCBcCi1hbmQgYWxzbyBjYW4gd3JpdGUgdGhlIGRlY29kZWQgYXVkaW8gdG8gV0FWLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tcGcxMjMuZGUvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbXBnMTIzL2J1Z3MvIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWU4Njc1MzYzOGQzY2YyNTEyNTI4Yjk5MDc5YmM0ZjMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cubXBnMTIzLmRlL2Rvd25sb2FkLyR7QlB9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZGRlMDQ1MTIzYTJhZDFlMzg1YTBhODJjMGVmOTI2OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTIzMDNjOGVjYjY1NTkzZTM5ODE1YzBhMmYyZjJkOTFmNzA4YzQzYjg1YTU1ZmRkMTkzNGM4MmU2NzdjZjhlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBUaGUgb3B0aW9ucyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBjb25maWd1cmF0aW9uIHNjcmlwdC4KLSMgSWYgYm90aCBhbHNhIGFuZCBwdWxzZWF1ZGlvIGFyZSBzcGVjaWZpZWQgKGFzIGluIHRoZSBkZWZhdWx0IGRpc3RybyBmZWF0dXJlcykKLSMgcHVsc2VhdWRpbyB0YWtlcyBwcmVjZWRlbmNlLgotUEFDS0FHRUNPTkZJR19BTFNBID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlYXVkaW8nLCAnJHtQQUNLQUdFQ09ORklHX0FMU0F9JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPWFsc2EsLGFsc2EtbGliIgotUEFDS0FHRUNPTkZJR1tlc2RdID0gIiwsZXNvdW5kIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICIsLGphY2siCi1QQUNLQUdFQ09ORklHW29wZW5hbF0gPSAiLCxvcGVuYWwtc29mdCIKLVBBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICIsLHBvcnRhdWRpby12MTkiCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPXB1bHNlLCxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzZGxdID0gIiwsbGlic2RsIgotCi0jIEZvbGxvd2luZyBhcmUgcG9zc2libGUgc291bmQgb3V0cHV0IG1vZHVsZXM6Ci0jIGFsc2EgYXJ0cyBjb3JlYXVkaW8gZHVtbXkgZXNkIGphY2sgbmFzIG9wZW5hbCBvczIgb3NzIHBvcnRhdWRpbyBwdWxzZSBzZGwgc25kaW8gc3VuIHRpbnlhbHNhIHdpbjMyIHdpbjMyX3dhc2FwaQotQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYWxzYSBlc2QgamFjayBvcGVuYWwgcG9ydGF1ZGlvIHNkbCcsIGQpfSIKLUFVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdwdWxzZScsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS13aXRoLWF1ZGlvPScke0FVRElPTU9EU30nIFwKLSAgICAtLXdpdGgtbW9kdWxlLXN1ZmZpeD0uc28gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWNwdT1uZW9uJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWx0aXZlYycsICctLXdpdGgtY3B1PWFsdGl2ZWMnLCAnJywgZCl9IFwKLSIKLQotIyBUaGUgeDg2IGFzc2VtYmxlciBvcHRpbWlzYXRpb25zIGNvbnRhaW5zIHRleHQgcmVsb2NhdGlvbnMgYW5kIHRoZXJlIGFyZSBubwotIyB1cHN0cmVhbSBwbGFucyB0byBmaXggdGhlbTogaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL21wZzEyMy9idWdzLzE2OC8KLUlOU0FORV9TS0lQXyR7UE59X2FwcGVuZF94ODYgPSAiIHRleHRyZWwiCi0KLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgotI3wge3N0YW5kYXJkIGlucHV0fTo0NzogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHI1LHI2LHI3LHI0JwotI3wge3N0YW5kYXJkIGlucHV0fTo0ODogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByNSxyNSxsc3IjMjQnCi0jLi4uCi0jfCBtYWtlWzNdOiAqKiogW2VxdWFsaXplci5sb10gRXJyb3IgMQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjg2MTk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yNS42LmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiQXVkaW8gZGVjb2RlciBmb3IgTVBFRy0xIExheWVyIDEvMi8zIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgb2YgbXBnMTIzIGlzIGFuIE1QRUctMSBMYXllciAxLzIvMyBkZWNvZGluZyBsaWJyYXJ5LCB3aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBwcm9ncmFtcy4gXAorbXBnMTIzIGFsc28gY29tZXMgd2l0aCBhIGNvbW1hbmQtbGluZSB0b29sIHdoaWNoIGNhbiBwbGF5YmFjayB1c2luZyBBTFNBLCBQdWxzZUF1ZGlvLCBPU1MsIGFuZCBzZXZlcmFsIG90aGVyIEFQSXMsIFwKK2FuZCBhbHNvIGNhbiB3cml0ZSB0aGUgZGVjb2RlZCBhdWRpbyB0byBXQVYuIgorSE9NRVBBR0UgPSAiaHR0cDovL21wZzEyMy5kZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9tcGcxMjMvYnVncy8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTg2NzUzNjM4ZDNjZjI1MTI1MjhiOTkwNzliYzRmMyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5tcGcxMjMuZGUvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MzMzNmJlZjc4ZjY3YzJlNjZjNGY2YzI4OGNhMWViMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjA0NThjOWI4Nzc5OWJjMmM5YmY5NDU1Mjc5Y2M0ZDMwNWUyNDVkYjQzYjUxYTM5ZWYyN2FmZTAyNWM1YThlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBUaGUgb3B0aW9ucyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBjb25maWd1cmF0aW9uIHNjcmlwdC4KKyMgSWYgYm90aCBhbHNhIGFuZCBwdWxzZWF1ZGlvIGFyZSBzcGVjaWZpZWQgKGFzIGluIHRoZSBkZWZhdWx0IGRpc3RybyBmZWF0dXJlcykKKyMgcHVsc2VhdWRpbyB0YWtlcyBwcmVjZWRlbmNlLgorUEFDS0FHRUNPTkZJR19BTFNBID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlYXVkaW8nLCAnJHtQQUNLQUdFQ09ORklHX0FMU0F9JywgZCl9IgorCitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPWFsc2EsLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tlc2RdID0gIiwsZXNvdW5kIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICIsLGphY2siCitQQUNLQUdFQ09ORklHW29wZW5hbF0gPSAiLCxvcGVuYWwtc29mdCIKK1BBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICIsLHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPXB1bHNlLCxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzZGxdID0gIiwsbGlic2RsIgorCisjIEZvbGxvd2luZyBhcmUgcG9zc2libGUgc291bmQgb3V0cHV0IG1vZHVsZXM6CisjIGFsc2EgYXJ0cyBjb3JlYXVkaW8gZHVtbXkgZXNkIGphY2sgbmFzIG9wZW5hbCBvczIgb3NzIHBvcnRhdWRpbyBwdWxzZSBzZGwgc25kaW8gc3VuIHRpbnlhbHNhIHdpbjMyIHdpbjMyX3dhc2FwaQorQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYWxzYSBlc2QgamFjayBvcGVuYWwgcG9ydGF1ZGlvIHNkbCcsIGQpfSIKK0FVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdwdWxzZScsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS13aXRoLWF1ZGlvPScke0FVRElPTU9EU30nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1jcHU9bmVvbicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FsdGl2ZWMnLCAnLS13aXRoLWNwdT1hbHRpdmVjJywgJycsIGQpfSBcCisiCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDc6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGBzbXVsbCByNSxyNixyNyxyNCcKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDg6IEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjUscjUsbHNyIzI0JworIy4uLgorI3wgbWFrZVszXTogKioqIFtlcXVhbGl6ZXIubG9dIEVycm9yIDEKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYjU2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIHBhdGNod29yayBTYXQgRmViICA0IDEyOjE5OjAxIDIwMTcKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAorU3ViamVjdDogW3B1bHNlYXVkaW8tZGlzY3Vzc10gaW9jaGFubmVsOiBkb24ndCB1c2UgdmFyaWFibGUgbGVuZ3RoIGFycmF5IGluCisgdW5pb24KK0Zyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KK1gtUGF0Y2h3b3JrLUlkOiAxMzY4ODUKK01lc3NhZ2UtSWQ6IDwyMDE3MDIwNDEyMTkwMS4xNzQyOC0xLXRhbnVrQGlraS5maT4KK1RvOiBwdWxzZWF1ZGlvLWRpc2N1c3NAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitEYXRlOiBTYXQsICA0IEZlYiAyMDE3IDE0OjE5OjAxICswMjAwCisKK0NsYW5nIGRpZG4ndCBsaWtlIHRoZSB2YXJpYWJsZSBsZW5ndGggYXJyYXk6CisKK3B1bHNlY29yZS9pb2NoYW5uZWwuYzozNTg6MTc6IGVycm9yOiBmaWVsZHMgbXVzdCBoYXZlIGEgY29uc3RhbnQgc2l6ZToKKyd2YXJpYWJsZSBsZW5ndGggYXJyYXkgaW4gc3RydWN0dXJlJyBleHRlbnNpb24gd2lsbCBuZXZlciBiZSBzdXBwb3J0ZWQKKyAgICAgICAgdWludDhfdCBkYXRhW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBuZmQpXTsKKyAgICAgICAgICAgICAgICBeCisKK0NvbW1pdCA0NTFkMWQ2NzYyIGludHJvZHVjZWQgdGhlIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBpbiBvcmRlciB0byBoYXZlCit0aGUgY29ycmVjdCB2YWx1ZSBpbiBtc2dfY29udHJvbGxlbi4gVGhpcyBwYXRjaCByZXZlcnRzIHRoYXQgY29tbWl0IGFuZAordXNlcyBhIGRpZmZlcmVudCB3YXkgdG8gYWNoaWV2ZSB0aGUgc2FtZSBnb2FsLgorCitCdWdMaW5rOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQ1OAorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYyB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYyBiL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKK2luZGV4IDhhY2UyOTdmZi4uODk3MzM3NTIyIDEwMDY0NAorLS0tIGEvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYworKysrIGIvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYworQEAgLTM1NSw3ICszNTUsNyBAQCBzc2l6ZV90IHBhX2lvY2hhbm5lbF93cml0ZV93aXRoX2ZkcyhwYV9pb2NoYW5uZWwqaW8sIGNvbnN0IHZvaWQqZGF0YSwgc2l6ZV90IGwsCisgICAgIHN0cnVjdCBpb3ZlYyBpb3Y7CisgICAgIHVuaW9uIHsKKyAgICAgICAgIHN0cnVjdCBjbXNnaGRyIGhkcjsKKy0gICAgICAgIHVpbnQ4X3QgZGF0YVtDTVNHX1NQQUNFKHNpemVvZihpbnQpICogbmZkKV07CisrICAgICAgICB1aW50OF90IGRhdGFbQ01TR19TUEFDRShzaXplb2YoaW50KSAqIE1BWF9BTkNJTF9EQVRBX0ZEUyldOworICAgICB9IGNtc2c7CisgCisgICAgIHBhX2Fzc2VydChpbyk7CitAQCAtMzgyLDcgKzM4MiwxMyBAQCBzc2l6ZV90IHBhX2lvY2hhbm5lbF93cml0ZV93aXRoX2ZkcyhwYV9pb2NoYW5uZWwqaW8sIGNvbnN0IHZvaWQqZGF0YSwgc2l6ZV90IGwsCisgICAgIG1oLm1zZ19pb3YgPSAmaW92OworICAgICBtaC5tc2dfaW92bGVuID0gMTsKKyAgICAgbWgubXNnX2NvbnRyb2wgPSAmY21zZzsKKy0gICAgbWgubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY21zZyk7CisrCisrICAgIC8qIElmIHdlIGZvbGxvd2VkIHRoZSBleGFtcGxlIG9uIHRoZSBjbXNnIG1hbiBwYWdlLCB3ZSdkIHVzZQorKyAgICAgKiBzaXplb2YoY21zZy5kYXRhKSBoZXJlLCBidXQgaWYgbmZkIDwgTUFYX0FOQ0lMX0RBVEFfRkRTLCB0aGVuIHRoZSBkYXRhCisrICAgICAqIGJ1ZmZlciBpcyBsYXJnZXIgdGhhbiBuZWVkZWQsIGFuZCB0aGUga2VybmVsIGRvZXNuJ3QgbGlrZSBpdCBpZiB3ZSBzZXQKKysgICAgICogbXNnX2NvbnRyb2xsZW4gdG8gYSBsYXJnZXIgdGhhbiBuZWNlc3NhcnkgdmFsdWUuIFRoZSBjb21taXQgbWVzc2FnZSBmb3IKKysgICAgICogY29tbWl0IDQ1MWQxZDY3NjIgY29udGFpbnMgYSBsb25nZXIgZXhwbGFuYXRpb24uICovCisrICAgIG1oLm1zZ19jb250cm9sbGVuID0gQ01TR19TUEFDRShzaXplb2YoaW50KSAqIG5mZCk7CisgCisgICAgIGlmICgociA9IHNlbmRtc2coaW8tPm9mZCwgJm1oLCBNU0dfTk9TSUdOQUwpKSA+PSAwKSB7CisgICAgICAgICBpby0+d3JpdGFibGUgPSBpby0+aHVuZ3VwID0gZmFsc2U7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEwLjAuYmIKaW5kZXggZjNhODU3My4uOWEzNGFmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTAuMC5iYgpAQCAtMyw2ICszLDcgQEAKIFNSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhZHNwLU1ha2UtaXQtY29tcGlsZS1vbi1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY2xpZW50LWNvbmYtQWRkLWFsbG93LWF1dG9zcGF3bi1mb3Itcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdWxzZWF1ZGlvLWRpc2N1c3MtaW9jaGFubmVsLWRvbi10LXVzZS12YXJpYWJsZS1sZW5ndGgtYXJyYXktaW4tdW5pb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI0OTUwZDI3OTliZjU1YWI5MWY2YjdmOTkwYjdmMDk3MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zYmMvc2JjXzEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zYmMvc2JjXzEuMy5iYgppbmRleCAyZDdmMzFiLi4yYmI4OTVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc2JjL3NiY18xLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NiYy9zYmNfMS4zLmJiCkBAIC0yLDggKzIsMTIgQEAKIERFU0NSSVBUSU9OID0gIkJsdWV0b290aCBsb3ctY29tcGxleGl0eSwgc3ViYmFuZCBjb2RlYyAoU0JDKSBsaWJyYXJ5LiIKIEhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmJsdWV6Lm9yZyIKIFNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1leGFtcGxlcyA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NiY2VuYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTA4ZTdhNzBiMTI3ZjQxMDBmZjJjZDdkNjI5MTQ3ZDhkIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NiYy9zYmMuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI2O21kNT0wZjU3ZDBkZjIyYjBkNDA3NDZiZGQyOTgwNWE0MzYxYiIKIAogREVQRU5EUyA9ICJsaWJzbmRmaWxlMSIKQEAgLTE0LDMgKzE4LDYgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNjEwMjJjZjU3NmYxNDE5MDI0MWU3MDcxNzUzZmRhY2RjZTVkMWRlYTg5ZmZkNzA0MTEwZmM1MGJlNjg5MzA5IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSsgIiR7UE59LWV4YW1wbGVzIgorRklMRVNfJHtQTn0tZXhhbXBsZXMgKz0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4XzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4XzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NjM2YmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4yLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJTcGVlY2ggQXVkaW8gQ29kZWMiCitERVNDUklQVElPTiA9ICJTcGVleCBpcyBhbiBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIHBhdGVudC1mcmVlIGF1ZGlvIGNvbXByZXNzaW9uIGZvcm1hdCBkZXNpZ25lZCBmb3Igc3BlZWNoLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3NwZWV4L3NwZWV4Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0zNDttZDU9ZWY4YzhlYTRmNzE5OGQ3MWNmMzUwOWM2ZWQwNWVhNTAiCitERVBFTkRTID0gImxpYm9nZyBzcGVleGRzcCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4LSR7UFZ9LnRhci5neiIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInNwZWV4LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGFiN2JiMjU4OTExMGRmYWYwZWQ3ZmE3NzU3ZGM0OWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWFhZThhZjBhYzc0MmRjN2Q1NDJjOTQzOWFjNzJmMWYzODVjZTgzODM5MmRjODQ5Y2FlNDUzNmFmOTIxMDA5NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS1lbmFibGUtZml4ZWQtcG9pbnQgLS1kaXNhYmxlLWZsb2F0LWFwaSAtLWRpc2FibGUtdmJyJywgJycsIGQpfSBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4ycmMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4XzEuMnJjMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdkMjNkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4ycmMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTcGVlY2ggQXVkaW8gQ29kZWMiCi1ERVNDUklQVElPTiA9ICJTcGVleCBpcyBhbiBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIHBhdGVudC1mcmVlIGF1ZGlvIGNvbXByZXNzaW9uIGZvcm1hdCBkZXNpZ25lZCBmb3Igc3BlZWNoLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3NwZWV4L3NwZWV4Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0zNDttZDU9ZWY4YzhlYTRmNzE5OGQ3MWNmMzUwOWM2ZWQwNWVhNTAiCi1ERVBFTkRTID0gImxpYm9nZyBzcGVleGRzcCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnVzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZhZTdkYjNiYWIwMWUxZDRiODZiYWNmYThjYTMzZTgxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhYTI3YzcyNDdmZjE1Yzg1MjFjMmFlMGVhMjE5ODdjOWU5NzEwYThmMmQzNDQ4ZThiNzlkYTk4MDZiY2U4OTEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0ZQVScsICdzb2Z0JywgJy0tZW5hYmxlLWZpeGVkLXBvaW50IC0tZGlzYWJsZS1mbG9hdC1hcGkgLS1kaXNhYmxlLXZicicsICcnLCBkKX0gXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgppbmRleCA2OWY1MmMyLi5jNTQ3NmM3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogICAgICAgICAgICBmaWxlOi8vZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0ZpeC1YMzItYnVpbGQtYnktZGlzYWJsaW5nLWFzbS5wYXRjaCBcCiAgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTUkNSRVYgPSAiMmI3NDFmODFlNTFmOTJkMDUzZDg3YTQ5ZjU5ZmYxMDI2NTUzYTBmNiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiCmluZGV4IDkzZTVhNGUuLjUzMTU3MWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXNkay1wdGVzdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QuYmIKQEAgLTQsMyArNCw4IEBACiAKIElNQUdFX0ZFQVRVUkVTICs9ICJwdGVzdC1wa2dzIgogCisjIFRoaXMgaW1hZ2UgaXMgc3VmZmljaWVudGx5IGxhcmdlICh+M0dCKSB0aGF0IGl0IGNhbid0IGFjdHVhbGx5IGZpdCBpbiBhIGxpdmUKKyMgaW1hZ2UgKHdoaWNoIGhhcyBhIDRHQiBsaW1pdCksIHNvIG51bGxpZnkgdGhlIG92ZXJoZWFkIGZhY3RvciAoMS4zeCBvdXQgb2YgdGhlCisjIGJveCkgYW5kIGV4cGxpY2l0bHkgYWRkIGp1c3QgNTAwTUIuCitJTUFHRV9PVkVSSEVBRF9GQUNUT1IgPSAiMS4wIgorSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjUyNDI4OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIKaW5kZXggOTlkYWQxMS4uYjg5Nzk1MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIKQEAgLTgsNyArOCw1IEBACiAKIGluaGVyaXQgY29yZS1pbWFnZQogCi1JTUFHRV9JTlNUQUxMICs9ICJwYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by1nYW1lcyIKLQogVE9PTENIQUlOX0hPU1RfVEFTS19hcHBlbmQgPSAiIG5hdGl2ZXNkay1pbnRsdG9vbCBuYXRpdmVzZGstZ2xpYi0yLjAiCiBUT09MQ0hBSU5fSE9TVF9UQVNLX3JlbW92ZV90YXNrLXBvcHVsYXRlLXNkay1leHQgPSAiIG5hdGl2ZXNkay1pbnRsdG9vbCBuYXRpdmVzZGstZ2xpYi0yLjAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wXzIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWE3YjRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJNYXRjaGJveCBXaW5kb3cgTWFuYWdlciBEZXNrdG9wIgotSE9NRVBBR0UgPSAiaHR0cDovL21hdGNoYm94LXByb2plY3Qub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZGVza3RvcC5jO2VuZGxpbmU9MjA7bWQ1PTM2YzliZjI5NWU2MDA3ZjM0MjMwOTVmNDA1YWY1YTJkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmM7ZW5kbGluZT0xOTttZDU9MjA0NDI0NGY5N2ExOTVjMjViN2RjNjAyYWM3ZTlhMDAiCi0KLURFUEVORFMgPSAiZ25vbWUtY29tbW9uLW5hdGl2ZSBndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBkYnVzIgotU0VDVElPTiA9ICJ4MTEvd20iCi0KLSMgU1JDUkVWIHRhZ2dlZCAyLjEKLVNSQ1JFViA9ICJjODQ3MzUxOWEwZjM3NDg4YjhiM2U4MzllMjc1YjAwMGNkZGUwYjgwIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0tMiBcCi0gICAgICAgICAgIGZpbGU6Ly92Zm9sZGVycy8qIFwKLSAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24gLS13aXRoLWRidXMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92Zm9sZGVycy8qICR7RH0ke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wXzIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwY2RmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtZGVza3RvcC9tYXRjaGJveC1kZXNrdG9wXzIuMi5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIk1hdGNoYm94IFdpbmRvdyBNYW5hZ2VyIERlc2t0b3AiCitIT01FUEFHRSA9ICJodHRwOi8vbWF0Y2hib3gtcHJvamVjdC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9kZXNrdG9wLmM7ZW5kbGluZT0yMDttZDU9MzZjOWJmMjk1ZTYwMDdmMzQyMzA5NWY0MDVhZjVhMmQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztlbmRsaW5lPTE5O21kNT0yMDQ0MjQ0Zjk3YTE5NWMyNWI3ZGM2MDJhYzdlOWEwMCIKKworREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBkYnVzIgorU0VDVElPTiA9ICJ4MTEvd20iCisKKyMgU1JDUkVWIHRhZ2dlZCAyLjIKK1NSQ1JFViA9ICI2YmM2N2QwOWRhNDE0N2U1NTUyZmUzMDAxMWEwNWEyYzU5ZDJmNzc3IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0tMiBcCisgICAgICAgICAgIGZpbGU6Ly92Zm9sZGVycy8qIFwKKyAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24gLS13aXRoLWRidXMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92Zm9sZGVycy8qICR7RH0ke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLworfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9tYXRjaGJveC92Zm9sZGVycy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCmluZGV4IDZmYjFiNjcuLjk3Y2NlZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCkBAIC0xOSw3ICsxOSw2IEBACiAgICAgIgogCiBORVRXT1JLX01BTkFHRVIgPz0gImNvbm5tYW4tZ25vbWUiCi1ORVRXT1JLX01BTkFHRVJfbGliYy11Y2xpYmMgPSAiIgogCiBTVU1NQVJZXyR7UE59LWJhc2UgPSAiU2F0byBkZXNrdG9wIC0gYmFzZSBwYWNrYWdlcyIKIFJERVBFTkRTXyR7UE59LWJhc2UgPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtV25vLWVycm9yLWZvcm1hdC1vdmVyZmxvdy1pZi10aGUtY29tcGlsZXItc3VwcG9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtV25vLWVycm9yLWZvcm1hdC1vdmVyZmxvdy1pZi10aGUtY29tcGlsZXItc3VwcG9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MGEzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLVVzZS1Xbm8tZXJyb3ItZm9ybWF0LW92ZXJmbG93LWlmLXRoZS1jb21waWxlci1zdXBwb3IucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAzMzc3OTllNDAzNTBiM2RiMjQ0MWNjOThmNjVlYzM2YTc0ZGZiMzU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjEgQXByIDIwMTcgMTI6MTg6MDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIC1Xbm8tZXJyb3I9Zm9ybWF0LW92ZXJmbG93PSBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgaXQKKword2UgbmVlZCB0aGlzIHdhcm5pbmcgdG8gYmUgc3VwcHJlc3NlZCB3aXRoIGdjYzcrCitob3dldmVyIG9sZGVyIGNvbXBpbGVycyBkb250IHN1cHBvcnQgaXQgc28gd2UgbmVlZAorYSB3YXkgdG8gZGlzYmxlIGl0IG9ubHkgaWYgY29tcGlsZXIgc3VwcG9ydHMgaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDNhMzhjOTUuLmJiOTAzNWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQyLDcgKzQyLDcgQEAgZmkKKyBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgIEFDX01TR19DSEVDS0lORyhbZm9yIHVzYWJsZSBnY2Mgd2FybmluZyBmbGFnc10pCisgICBnY2N3YXJuaW5nZmxhZ3M9CistICBmb3IgZmxhZyBpbiAtV2FsbCAtV2Vycm9yIC1zdGQ9Yzg5IC1wZWRhbnRpYzsgZG8KKysgIGZvciBmbGFnIGluIC1XYWxsIC1XZXJyb3IgLXN0ZD1jODkgLXBlZGFudGljIC1Xbm8tZXJyb3I9Zm9ybWF0LW92ZXJmbG93PTsgZG8KKyAgICAgYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIGFjX3NhdmVfTElCUz0iJExJQlMiCisgICAgIENGTEFHUz0iJENGTEFHUyRnY2N3YXJuaW5nZmxhZ3MgJGZsYWcgJEdUS19DRkxBR1MiCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCmluZGV4IGEyNWMwMDcuLmRlY2QyYTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCkBAIC0xNCw3ICsxNCw5IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1Xbm8tZXJyb3ItZm9ybWF0LW92ZXJmbG93LWlmLXRoZS1jb21waWxlci1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIFNSQ1JFViA9ICI4ZGZlNWNlYzMxZTc4NGU0ZWNlMjk1NWVjYzhjYzM1ZWU3ZThmYmIzIgogUEUgPSAiMSIKIFBWID0gIjAuMCtnaXQke1NSQ1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaAppbmRleCA5M2E2OWMwLi4wZjZlZWVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoCkBAIC05LDYgKzksOCBAQAogdGhyb3VnaCB0aGUgdXNlIG9mIHFlbXUgdGFyZ2V0IGVtdWxhdGlvbi4KIAogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgfCA2IC0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA2IGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjRhZWUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy53ZWJraXQub3JnLyIKLQotTElDRU5TRSA9ICJCU0QgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vU291cmNlL0phdmFTY3JpcHRDb3JlL0NPUFlJTkcuTElCO21kNT1kMGM2ZDYzOTdhNWQ4NDI4NmRkYTc1OGRhNTdiZDY5MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCi0JCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKLQkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMi4xO21kNT1hNzc4YTMzZWYzMzhhYmJhZjhiOGE3YzM2YjZlZWM4MCBcCi0JCSAgICIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8veDMyX3N1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZXRlY3QtYXRvbWljcy1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjE4YzJjZmEwMGNhZGZkMGI0ZDhkYjIxY2FiMDExZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzZkODBjYzdlYjVkMzJmODA2MzA0MWZhMTFhMWE2ZjE3YTI5NzY1YzJmNjljNmJjODYyY2Q0N2MyZDUzOWI4IgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKLQotIyBkZXBlbmRzIG9uIGxpYnh0Ci1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1ERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCi0gICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKLQkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAotCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCi0JICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCi0JICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCi0gICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKLVBBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgotUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotCQktRFBPUlQ9R1RLIFwKLQkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAotCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKLQkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAotICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbmAgXAotCQkiCi0KLSMgR0wvR0xFUyBoZWFkZXIgY2xhc2g6IGJvdGggZGVmaW5lIHRoZSBzYW1lIHRoaW5nLCBkaWZmZXJlbnRseSwgb24gMzIgYml0IHg4NgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFVTRV9HU1RSRUFNRVJfR0w9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIGJpbnV0aWxzIDIuMjUuMSBoYXMgYSBidWcgb24gYWFyY2g2NDoKLSMgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg0MzAKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FhcmNoNjQgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURXVEZfQ1BVX0FSTTY0X0NPUlRFWEE1Mz1PTiIKLQotIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBNSVBTIGVpdGhlcgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgotIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcwotIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1TRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCi0KLSMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKLSMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgotIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgotCi0jIHFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZAotIyBTZWdtZW50YXRpb24gZmF1bHQKLUdJX0RBVEFfRU5BQkxFRF9hcm12N2EgPSAiRmFsc2UiCi1HSV9EQVRBX0VOQUJMRURfYXJtdjd2ZSA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjBmZjhmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiCkBAIC0wLDAgKzEsMTIxIEBACitTVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy53ZWJraXQub3JnLyIKKworTElDRU5TRSA9ICJCU0QgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vU291cmNlL0phdmFTY3JpcHRDb3JlL0NPUFlJTkcuTElCO21kNT1kMGM2ZDYzOTdhNWQ4NDI4NmRkYTc1OGRhNTdiZDY5MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCisJCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMi4xO21kNT1hNzc4YTMzZWYzMzhhYmJhZjhiOGE3YzM2YjZlZWM4MCBcCisJCSAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8veDMyX3N1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZXRlY3QtYXRvbWljcy1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMWE1NDg1OTUxMzVlZTc1YWQzYmYyZTE4YWM4MzExMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzkxMmNjMmY0MGYxMmU0NTJiZTFjYTRiYWJkYmRhYWMwZWM0ZjgyOGQ0NDEyNTdhNmIwNmMyOTYzYmJhYzNjIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKKworIyBkZXBlbmRzIG9uIGxpYnh0CitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCisgICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKKwkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAorCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCisJICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCisJICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKKyAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCisgICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgorUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKK1BBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgorUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCitQQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgorUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorCQktRFBPUlQ9R1RLIFwKKwkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAorCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKKwkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAorICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbmAgXAorCQkiCisKKyMgR0wvR0xFUyBoZWFkZXIgY2xhc2g6IGJvdGggZGVmaW5lIHRoZSBzYW1lIHRoaW5nLCBkaWZmZXJlbnRseSwgb24gMzIgYml0IHg4NgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFVTRV9HU1RSRUFNRVJfR0w9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgorCisjIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYworRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIGJpbnV0aWxzIDIuMjUuMSBoYXMgYSBidWcgb24gYWFyY2g2NDoKKyMgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg0MzAKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FhcmNoNjQgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKKworRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURXVEZfQ1BVX0FSTTY0X0NPUlRFWEE1Mz1PTiIKKworIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBNSVBTIGVpdGhlcgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgorIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcworIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KK0VYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCitTRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCitTRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCisKKyMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0CisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKKyMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgorIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgorCisjIHFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZAorIyBTZWdtZW50YXRpb24gZmF1bHQKK0dJX0RBVEFfRU5BQkxFRF9hcm12N2EgPSAiRmFsc2UiCitHSV9EQVRBX0VOQUJMRURfYXJtdjd2ZSA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjg2NzZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi1TVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGNvbXBhbmlvbiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2Fwci5hcGFjaGUub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiYXByIGV4cGF0IGdkYm0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTE5ZTBhMThlMDNmN2MwMjMwNzA1NjhjMTRiMDc3YmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9hcHVfdmVyc2lvbi5oO2VuZGxpbmU9MTc7bWQ1PTgwNjY4NWE4NGU3MWYxMGM4MDE0NGM0OGViMzVkZjQyIgotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9maXhlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODY2ODI1YzA0ZGE4MjdjNmU1ZjUzZGFmZjU1NjlmNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTc2YTEyYTU5YmMyODZkNjM0YTIxZDdiZTA4NDFjYzc0Mjg5ZWE5MDc3YWExYWY0NmJlMTlkMWE2ZTg0NGMxOSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIFwgCi0JCS0td2l0aG91dC1vZGJjIFwKLQkJLS13aXRob3V0LXBnc3FsIFwKLQkJLS13aXRoLWRibT1nZGJtIFwKLQkJLS13aXRoLWdkYm09JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0JCS0td2l0aG91dC1zcWxpdGUyIFwKLQkJLS13aXRoLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCi0KLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnCi0KLVBSID0gInIxIgotCi1PRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0JaWYgWyAiJHtDTEFTU09WRVJSSURFfSIgPSAiY2xhc3MtdGFyZ2V0IiBdOyB0aGVuCi0JCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlmaQotfQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotCW1rZGlyICR7Qn0vYnVpbGQKLQljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5tawotfQotZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0Jc2VkIC1pICJzI0xJQlRPT0w9XCQoU0hFTEwpIFwkKGFwcl9idWlsZGRpcikjTElCVE9PTD1cJChTSEVMTCkgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5tawotCSMgc29tZXRpbWVzIHRoZXJlIGlzbid0IFNIRUxMCi0Jc2VkIC1pICJzI0xJQlRPT0w9XCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7U30vYnVpbGQvcnVsZXMubWsKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0Jc2VkIC1pICJzI1woYXByX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0Jc2VkIC1pICJzI1woYXByX2J1aWxkZXJzXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0Jc2VkIC1pICJzI1wodG9wX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0Jc2VkIC1pICJzI1woTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpXCkuKiNcMS9saWJ0b29sIyIgJHtCfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLQkgICAgICAgLWUgJ3MsQVBVX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKLQkgICAgICAgLWUgJ3MsQVBVX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2FwdS0xLWNvbmZpZwotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiY3J5cHRvIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKLVBBQ0tBR0VDT05GSUdbY3J5cHRvXSA9ICItLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aC1jcnlwdG8sLS13aXRob3V0LWNyeXB0byxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1zcWxpdGUzLHNxbGl0ZTMiCi0KLSNmaWxlcyAke2xpYmRpcn0vYXByLXV0aWwtMS8qLnNvIGFyZSBub3Qgc3ltbGlua3MgYnV0IGxvYWRhYmxlIG1vZHVsZXMgdGh1cyB0aGV5IGFyZSBwYWNrYWdlZCBpbiAke1BOfQotRklMRVNfJHtQTn0gICAgICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlN9ICR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU0RFVn0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHJ1dGlsLmV4cCAke2xpYmRpcn0vYXByLXV0aWwtMS8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS8qLmEiCi0KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCi0KLWluaGVyaXQgcHRlc3QKLQotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWlzbzg4NTktMSBnbGliYy1nY29udi1pc284ODU5LTIgZ2xpYmMtZ2NvbnYtdXRmLTciCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JY2QgJHtCfS90ZXN0Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCW1rZGlyICR0Ci0JZm9yIGkgaW4gdGVzdGFsbCBkYXRhOyBkbyBcCi0JICBjcCAtciAke0J9L3Rlc3QvJGkgJHQ7IFwKLQlkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDhkMTk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYgpAQCAtMCwwICsxLDk1IEBACitTVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGNvbXBhbmlvbiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2Fwci5hcGFjaGUub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAiYXByIGV4cGF0IGdkYm0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTU4YWEwYjFlZmUwYzEyZjIzZDRiMDA3ZGRiOWE1ZGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9hcHVfdmVyc2lvbi5oO2VuZGxpbmU9MTc7bWQ1PTgwNjY4NWE4NGU3MWYxMGM4MDE0NGM0OGViMzVkZjQyIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2IwM2RiZmY2MDcyOGE0ZjRjMzNmNWQ5MjllOGIzNWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDgzZWY0ZDU5ZTZhYzlhMzZjN2QzZmQ4N2FkN2I5ZGI3YWQ4YWUyOWMwNmI5ZGQ4ZmYyMmRkYTFjYzQxNjM4OSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIFwgCisJCS0td2l0aG91dC1vZGJjIFwKKwkJLS13aXRob3V0LXBnc3FsIFwKKwkJLS13aXRoLWRibT1nZGJtIFwKKwkJLS13aXRoLWdkYm09JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisJCS0td2l0aG91dC1zcWxpdGUyIFwKKwkJLS13aXRoLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCisKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnCisKK1BSID0gInIxIgorCitPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJaWYgWyAiJHtDTEFTU09WRVJSSURFfSIgPSAiY2xhc3MtdGFyZ2V0IiBdOyB0aGVuCisJCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKKwlmaQorfQorZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworCW1rZGlyICR7Qn0vYnVpbGQKKwljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5taworfQorZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJc2VkIC1pICJzI0xJQlRPT0w9XCQoU0hFTEwpIFwkKGFwcl9idWlsZGRpcikjTElCVE9PTD1cJChTSEVMTCkgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5taworCSMgc29tZXRpbWVzIHRoZXJlIGlzbid0IFNIRUxMCisJc2VkIC1pICJzI0xJQlRPT0w9XCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7U30vYnVpbGQvcnVsZXMubWsKK30KKworZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJc2VkIC1pICJzI1woYXByX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1woYXByX2J1aWxkZXJzXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1wodG9wX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1woTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpXCkuKiNcMS9saWJ0b29sIyIgJHtCfS9idWlsZC9ydWxlcy5taworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKwkgICAgICAgLWUgJ3MsQVBVX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKKwkgICAgICAgLWUgJ3MsQVBVX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2FwdS0xLWNvbmZpZworfQorCitQQUNLQUdFQ09ORklHID8/PSAiY3J5cHRvIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbY3J5cHRvXSA9ICItLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aC1jcnlwdG8sLS13aXRob3V0LWNyeXB0byxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1zcWxpdGUzLHNxbGl0ZTMiCisKKyNmaWxlcyAke2xpYmRpcn0vYXByLXV0aWwtMS8qLnNvIGFyZSBub3Qgc3ltbGlua3MgYnV0IGxvYWRhYmxlIG1vZHVsZXMgdGh1cyB0aGV5IGFyZSBwYWNrYWdlZCBpbiAke1BOfQorRklMRVNfJHtQTn0gICAgICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlN9ICR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHJ1dGlsLmV4cCAke2xpYmRpcn0vYXByLXV0aWwtMS8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS8qLmEiCisKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWlzbzg4NTktMSBnbGliYy1nY29udi1pc284ODU5LTIgZ2xpYmMtZ2NvbnYtdXRmLTciCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJY2QgJHtCfS90ZXN0CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCW1rZGlyICR0CisJZm9yIGkgaW4gdGVzdGFsbCBkYXRhOyBkbyBcCisJICBjcCAtciAke0J9L3Rlc3QvJGkgJHQ7IFwKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2gKaW5kZXggMTIzNzE0Mi4uYzVlOTJhYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaApAQCAtMjcsNiArMjcsOCBAQAogQ2hhbmdlIHRoZSBhYm92ZSBjb3JyZXNwb25kaW5nbHkuCiAKIFNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY29uZmlndXJlLmluIHwgOCArKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTJiNTYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gInV0aWwtbGludXgiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRkZmQ0Y2QyMTY4MjhjOGNhZTVkZTVhMTJmMzg0NGM4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXByX2xpYi5oO2VuZGxpbmU9MTc7bWQ1PWVlNDJmYTc1NzVkYzQwNTgwYTllMDFjMWI3NWZhZTk2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFudXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGdyYWRlLWFuZC1maXgtMS41LjEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZTk3NjlmMzM0OWZlMTFmYzBhNWUxYjIyNGMyMzZhYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZDAzZWQyOWMyMmE3MTUyYmU0NWI4ZTUwNDMxMDYzNzM2ZGY5ZTFkYWExZGRmOTNmNmE1NDdiYTdhMjhmNjdhIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX2hlYWRlciBwdGVzdAotCi1PRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCi0KLSMgQWRkZWQgdG8gZml4IHNvbWUgaXNzdWVzIHdpdGggY21ha2UuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ibXdjYXJpdC9tZXRhLXJvcy9pc3N1ZXMvNjgjaXNzdWVjb21tZW50LTE5ODk2OTI4Ci1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYXByX2N2X211dGV4X3JlY3Vyc2l2ZT15ZXMiCi0KLSMgQWxzbyBzdXBwcmVzcyB0cnlpbmcgdG8gdXNlIHNjdHAuCi0jCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vIGFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm8iCi0KLSMgT3RoZXJ3aXNlIGxpYnRvb2wgZmFpbHMgdG8gY29tcGlsZSBhcHItdXRpbHMKLSMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgotIyB4ODZfNjQtbGludXgtbGlidG9vbDogICBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKLUNDQUNIRSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKLQkjIHdoZW4gdXNpbmcgc3N0YXRlIGJldHdlZW4gZGlmZmVyZW50IGhvc3RzIHdpdGggZGlmZmVyZW50Ci0JIyBpbnN0YWxsIHBhdGhzIGZvciBncmVwLgotCWV4cG9ydCBHUkVQPSJncmVwIgotCi0JY2QgJHtTfQotCS4vYnVpbGRjb25mCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Fwci5leHAgJHtkYXRhZGlyfS9idWlsZC0xLyoiCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCi0KLSNmb3Igc29tZSByZWFzb24sIGJ1aWxkL2xpYnRvb2wubTQgaGFuZGxlZCBieSBidWlsZGNvbmYgc3RpbGwgYmUgb3ZlcndyaXR0ZW4KLSN3aGVuIGF1dG9jb25mLCBzbyBoYW5kbGUgaXQgYWdhaW4uCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9saWJ0b29sLm00Ci0Jc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2Fwcl9ydWxlcy5tawotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYXByLmgKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgotCWluc3RhbGwgLWQgJGQvCi0JY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCi0Jc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKLQlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5tawotCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCi0JY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KLQljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCi0JY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLwotCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCWNkICR7U30vdGVzdAotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlta2RpciAtcCAkdC8ubGlicwotCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LwotCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLwotCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LwotCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCi0JY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KLQljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCi0JY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCi0JY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCi19Ci0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJlZWQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00ZGZkNGNkMjE2ODI4YzhjYWU1ZGU1YTEyZjM4NDRjOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2Fwcl9saWIuaDtlbmRsaW5lPTE3O21kNT1lZTQyZmE3NTc1ZGM0MDU4MGE5ZTAxYzFiNzVmYWU5NiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGVhbnVwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ2ZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTgxYTg1MTk2N2M3OWI1Y2U5YmZiYzkwOWU0YmY3MzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDkxMDljZWEzNzdiYWIwMDI4YmJhMTlhOTJiNWIwZTg5NjAzZGY5ZWFiMDVjMGY3ZGJkNGRkODNkNDhkY2ViZCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgorCisjIEFkZGVkIHRvIGZpeCBzb21lIGlzc3VlcyB3aXRoIGNtYWtlLiBSZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vYm13Y2FyaXQvbWV0YS1yb3MvaXNzdWVzLzY4I2lzc3VlY29tbWVudC0xOTg5NjkyOAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFwcl9jdl9tdXRleF9yZWN1cnNpdmU9eWVzIgorCisjIEFsc28gc3VwcHJlc3MgdHJ5aW5nIHRvIHVzZSBzY3RwLgorIworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ubyBhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vIgorCisjIE90aGVyd2lzZSBsaWJ0b29sIGZhaWxzIHRvIGNvbXBpbGUgYXByLXV0aWxzCisjIHg4Nl82NC1saW51eC1saWJ0b29sOiBjb21waWxlOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24KKyMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6ICAgZXJyb3I6IHNwZWNpZnkgYSB0YWcgd2l0aCAnLS10YWcnCitDQ0FDSEUgPSAiIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgQXZvaWQgYWJzb2x1dGUgcGF0aHMgZm9yIGdyZXAgc2luY2UgaXQgY2F1c2VzIGZhaWx1cmVzCisJIyB3aGVuIHVzaW5nIHNzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBob3N0cyB3aXRoIGRpZmZlcmVudAorCSMgaW5zdGFsbCBwYXRocyBmb3IgZ3JlcC4KKwlleHBvcnQgR1JFUD0iZ3JlcCIKKworCWNkICR7U30KKwkuL2J1aWxkY29uZgorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHIuZXhwICR7ZGF0YWRpcn0vYnVpbGQtMS8qIgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorCisjZm9yIHNvbWUgcmVhc29uLCBidWlsZC9saWJ0b29sLm00IGhhbmRsZWQgYnkgYnVpbGRjb25mIHN0aWxsIGJlIG92ZXJ3cml0dGVuCisjd2hlbiBhdXRvY29uZiwgc28gaGFuZGxlIGl0IGFnYWluLgorZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlzZWQgLWkgLWUgJ3MvTElCVE9PTD1cKC4qXCl0b3BfYnVpbGQvTElCVE9PTD1cMWFwcl9idWlsZC8nICR7U30vYnVpbGQvbGlidG9vbC5tNAorCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGFwci5oCisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAke0R9JHtkYXRhZGlyfS9idWlsZC0xL2Fwcl9ydWxlcy5taworCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCisJICAgICAgIC1lICdzLEFQUl9TT1VSQ0VfRElSPS4qLEFQUl9TT1VSQ0VfRElSPSxnJyBcCisJICAgICAgIC1lICdzLEFQUl9CVUlMRF9ESVI9LiosQVBSX0JVSUxEX0RJUj0sZycgJHtEfSR7YmluZGlyfS9hcHItMS1jb25maWcKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImFwcl9ydWxlcy5tayBsaWJ0b29sIgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImFwcl9zeXNyb290X3ByZXByb2Nlc3MiCisKK2Fwcl9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworCWQ9JHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9hcHIKKwlpbnN0YWxsIC1kICRkLworCWNwICR7U30vYnVpbGQvYXByX3J1bGVzLm1rICRkLworCXNlZCAtaSBzLGFwcl9idWlsZGRpcj0uKixhcHJfYnVpbGRkaXI9LGcgJGQvYXByX3J1bGVzLm1rCisJc2VkIC1pIHMsYXByX2J1aWxkZXJzPS4qLGFwcl9idWlsZGVycz0sZyAkZC9hcHJfcnVsZXMubWsKKwlzZWQgLWkgcyxMSUJUT09MPS4qLExJQlRPT0w9JHtIT1NUX1NZU30tbGlidG9vbCxnICRkL2Fwcl9ydWxlcy5taworCXNlZCAtaSBzLFwkXChhcHJfYnVpbGRlcnNcKSwke1NUQUdJTkdfREFUQURJUn0vYXByLyxnICRkL2Fwcl9ydWxlcy5taworCWNwICR7U30vYnVpbGQvbWtkaXIuc2ggJGQvCisJY3AgJHtTfS9idWlsZC9tYWtlX2V4cG9ydHMuYXdrICRkLworCWNwICR7U30vYnVpbGQvbWFrZV92YXJfZXhwb3J0LmF3ayAkZC8KKwljcCAke1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9idWlsZC0xL2xpYnRvb2wKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwljZCAke1N9L3Rlc3QKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJbWtkaXIgLXAgJHQvLmxpYnMKKwljcCAtciAke1N9L3Rlc3QvZGF0YSAkdC8KKwljcCAtciAke1N9L3Rlc3QvLmxpYnMvKi5zbyAkdC8ubGlicy8KKwljcCAke1N9L3Rlc3QvcHJvY19jaGlsZCAkdC8KKwljcCAke1N9L3Rlc3QvcmVhZGNoaWxkICR0LworCWNwICR7U30vdGVzdC9zb2NrY2hpbGQgJHQvCisJY3AgJHtTfS90ZXN0L3NvY2twZXJmICR0LworCWNwICR7U30vdGVzdC90ZXN0YWxsICR0LworCWNwICR7U30vdGVzdC90cnlyZWFkICR0LworfQorCitleHBvcnQgQ09ORklHX1NIRUxMPSIvYmluL2Jhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXJncC1zdGFuZGFsb25lL2FyZ3Atc3RhbmRhbG9uZV8xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXJncC1zdGFuZGFsb25lL2FyZ3Atc3RhbmRhbG9uZV8xLjMuYmIKaW5kZXggYmQwY2ZkZi4uMjFiYmNhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FyZ3Atc3RhbmRhbG9uZS9hcmdwLXN0YW5kYWxvbmVfMS4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcmdwLXN0YW5kYWxvbmUvYXJncC1zdGFuZGFsb25lXzEuMy5iYgpAQCAtMTksNiArMTksOSBAQAogCiBDRkxBR1MgKz0gIi1mUElDIC1VX19PUFRJTUlaRV9fIgogCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiIKKwogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1EIC1tIDA2NDQgJHtCfS9saWJhcmdwLmEgJHtEfSR7bGliZGlyfS9saWJhcmdwLmEKIAlpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9hcmdwLmggJHtEfSR7aW5jbHVkZWRpcn0vYXJncC5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbC9nY2M3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGwvZ2NjNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmZkMDc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGwvZ2NjNy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDgwODlmYTAyMTIyZmVkMGE2Mzk0ZWJhMTRiYmVkY2IxZDE4ZTIzODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLZXZpbiBBdGtpbnNvbiA8a2V2aW5hQGdudS5vcmc+CitEYXRlOiBUaHUsIDI5IERlYyAyMDE2IDAwOjUwOjMxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIENvbXBpbGUgRml4ZXMgZm9yIEdDQyA3LgorCitDbG9zZXMgIzUxOS4KKy0tLQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworIG1vZHVsZXMvZmlsdGVyL3RleC5jcHAgfCAyICstCisgcHJvZy9jaGVja19mdW5zLmNwcCAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvZmlsdGVyL3RleC5jcHAgYi9tb2R1bGVzL2ZpbHRlci90ZXguY3BwCitpbmRleCBhOTc5NTM5Li4xOWFiNjNjIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9maWx0ZXIvdGV4LmNwcAorKysrIGIvbW9kdWxlcy9maWx0ZXIvdGV4LmNwcAorQEAgLTE3NCw3ICsxNzQsNyBAQCBuYW1lc3BhY2UgeworIAorICAgICBpZiAoYyA9PSAneycpIHsKKyAKKy0gICAgICBpZiAodG9wLmluX3doYXQgPT0gUGFybSB8fCB0b3AuaW5fd2hhdCA9PSBPcHQgfHwgdG9wLmRvX2NoZWNrID09ICdcMCcpCisrICAgICAgaWYgKHRvcC5pbl93aGF0ID09IFBhcm0gfHwgdG9wLmluX3doYXQgPT0gT3B0IHx8ICp0b3AuZG9fY2hlY2sgPT0gJ1wwJykKKyAJcHVzaF9jb21tYW5kKFBhcm0pOworIAorICAgICAgIHRvcC5pbl93aGF0ID0gUGFybTsKK2RpZmYgLS1naXQgYS9wcm9nL2NoZWNrX2Z1bnMuY3BwIGIvcHJvZy9jaGVja19mdW5zLmNwcAoraW5kZXggZGI1NGYzZC4uODllZTA5ZCAxMDA2NDQKKy0tLSBhL3Byb2cvY2hlY2tfZnVucy5jcHAKKysrKyBiL3Byb2cvY2hlY2tfZnVucy5jcHAKK0BAIC02NDcsNyArNjQ3LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfdHJ1bmNhdGUoRklMRSAqIG91dCwgY29uc3QgY2hhciAqIHdvcmQsIGludCB3aWR0aCkgeworICAgICB9CisgICB9CisgICBpZiAoaSA9PSB3aWR0aC0xKSB7CistICAgIGlmICh3b3JkID09ICdcMCcpCisrICAgIGlmICgqd29yZCA9PSAnXDAnKQorICAgICAgIHB1dChvdXQsJyAnKTsKKyAgICAgZWxzZSBpZiAod29yZFtsZW5dID09ICdcMCcpCisgICAgICAgcHV0KG91dCwgd29yZCwgbGVuKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hc3BlbGwvYXNwZWxsXzAuNjAuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIKaW5kZXggNWEyMzc1NC4uMTlhNzE1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIKQEAgLTYsNyArNiw5IEBACiAKIFBSID0gInIxIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYXNwZWxsL2FzcGVsbC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYXNwZWxsL2FzcGVsbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZ2NjNy5wYXRjaCBcCisgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImU2NmE5YzlhZjZhNjBkYzQ2MTM0ZmRhY2Y2Y2U5N2Q3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1MjU4M2E4M2E2MzYzMzcwMWM1ZjcxZGIzZGM0MGFhYjg3YjdmNzZiMjk3MjNhZWIyNzk0MWVmZjQyZGY2ZTEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjIyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZWRiNmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImFhNjJhZWQyMWI4ZTAzZGM0NGFiODFhZTQ5ZDg5M2NhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4YmRlZGJlYjg3M2ViMjI5ZWIwOGM4OGUxMWQwNzcxM2VjMjVhZTE3NTI1MTY0OGFkMWE5ZGE2YzIxMTEzYzEiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgYXRrIGF0LXNwaTItY29yZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotIyBUaGUgYXQtc3BpMi1jb3JlIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1nbm9tZSAke1BOfS1ndGsyIgotCi1GSUxFU18ke1BOfS1nbm9tZSA9ICIke2xpYmRpcn0vZ25vbWUtc2V0dGluZ3MtZGFlbW9uLTMuMC9ndGstbW9kdWxlcyIKLUZJTEVTXyR7UE59LWd0azIgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvbW9kdWxlcy9saWJhdGstYnJpZGdlLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMGU0MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjQuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OTM4OGZiYzRkYzdmMjczOTQ1NTZkZDM4OWFlYjU5NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGRjOTBhYzRmNzRiOGZmZTk2YTkzNjNjMjUyMDhhNDQzYjM4MWJhY2VjZmVmZWE2ZGU1NDlmMjBlZDY5NTdkIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgVGhlIGF0LXNwaTItY29yZSByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKKworRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCitGSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzI4NDllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiQXNzaXN0aXZlIFRlY2hub2xvZ3kgU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2UgKGRidXMgY29yZSkiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2RhNWZlNjJhNjUzZTQ5ZGFkMWM0N2Y5YTQ2ZmVlNTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDE1ZWEzYWYyMTMxODMwODc5OGUwOThiZThiM2ExN2IyZjBjZjJmZTE2Y2VjZGU1YWQ4NDBjZjRlMGYyYzgwYSIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS14ZXZpZSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKLSAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4N2FlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjQuMS5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MWQwYTQ3MWU2OTMyOTI5MzRhNzNmMjg4ZWJmZjM1YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTkwZDA2NGI5MzdhYWNmZTc5YTk2MjMyYWM3ZTYzZDI4ZDcxNmU4NWJkOWZmNDMzM2Y4NjUzMDVhOTU5YjViIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgdmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXhldmllIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy1kYWVtb25kaXI9JHtiaW5kaXJ9IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAorICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM4MGY5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImM3ZjJhZGNmNzVlNDA1ODcyNzE3NGNkZTk3MGU5MTI5IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZDM0OWY1Y2E0OTc0YzljNzZhNDk2M2U1YjI1NDcyMDUyM2IwYzc4NjcyY2JjMGUxYTM0NzVkYmQ5YjNkNDRiNiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ2xpYnRlc3QgXAotICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MjMxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2xpYnMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNzQ3YTgwMDg5ZGZhM2MwYmJjZjIxYWRmZmY5OTY4YiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJiMmRhYTlhODA4YzczYTdhNzlkMjk4M2YzMzNlMGJhNzRiZTQyZmM1MWUzYmExZmFmMjU1MWE2MzY0ODdhNDkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdsaWJ0ZXN0IFwKKyAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoCmluZGV4IGNkNDUxMGMuLmU2NDk5MGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWRpcmVjdG9yeS1wZXJtaXNzaW9ucy5wYXRjaApAQCAtMSw2ICsxLDkgQEAKK0Zyb20gMzExNTg5ZmVkZjE5NjE2ODM4MmQ4ZjBkYjMwM2FiMzI4YmNmOWQ4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTEgTWF5IDIwMTYgMTU6MTY6MDYgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWNsLmluYywgcnVuLXB0ZXN0OiBpbXByb3ZlIHB0ZXN0IGZ1bmN0aW9uYWxpdHkgb24gbGltaXRlZAorCiBjb21taXQgYzQ1YmFlODQ4MTdhNzBmZWY2YzJiNjYxYTA3YTQ5MmEwZDIzYWU4NQotQXV0aG9yOiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+Ci1EYXRlOiAgIFdlZCBNYXkgMTEgMTU6MTY6MDYgMjAxNiAtMDUwMAogCiAgICAgRml4IHBlcm1pc3Npb25zIG9uIHRlbXBvcmFyeSBkaXJlY3RvcnkKIApAQCAtMTAsNiArMTMsMTMgQEAKIAogICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KIAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD1jNjc3MmE5NTg4MDBkZTA2NDQ4MjYzNGY3N2MyMGEwZmFhZmM1YWY2IF0KKworU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKIGRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0CiBpbmRleCA0MjYxNWY1Li4wOThiNTJhIDEwMDY0NAogLS0tIGEvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKQEAgLTIyLDMgKzMyLDYgQEAKICAJJCBta2RpciBkCiAgCSQgY2QgZAogIAkkIHVtYXNrIDAyNworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41Mi5iYgppbmRleCAzMDZjN2I1Li44ZjNkYzQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKQEAgLTQzLDYgKzQzLDExIEBACiAJdGFyIC1jIC0tZXhjbHVkZT1uZnMgdGVzdC8gfCAoIGNkICR7RH0ke1BURVNUX1BBVEh9ICYmIHRhciAteGYgLSApCiAJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vaW5jbHVkZQogCWNwICR7U30vaW5jbHVkZS9idWlsZGRlZnMgJHtTfS9pbmNsdWRlL2J1aWxkbWFjcm9zICR7U30vaW5jbHVkZS9idWlsZHJ1bGVzICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvCisJIyBSZW1vdmUgYW55IGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworCXNlZCAtZSAiczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnIiBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlL2J1aWxkZGVmcwogfQogCiBSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJhY2wgYmFzaCBjb3JldXRpbHMgcGVybCBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIHBlcmwtbW9kdWxlLWdldG9wdC1zdGQgcGVybC1tb2R1bGUtcG9zaXggc2hhZG93IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwppbmRleCBlOGI1ZDA1Li4yNGVmNWFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwpAQCAtMzIsNiArMzIsMTIgQEAKIAkgIGRvIGNwICR7U30vaW5jbHVkZS8kaSAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlLzsgXAogCWRvbmUKIAlzZWQgLWUgJ3N8OyBAZWNob3w7IGVjaG98JyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L01ha2VmaWxlCisgICAgCisJIyBSZW1vdmUgYW55IGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworCXNlZCAtZSAiczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnIiBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlL2J1aWxkZGVmcwogfQogCiBSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJhdHRyIGNvcmV1dGlscyBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIHBlcmwtbW9kdWxlLWdldG9wdC1zdGQgcGVybC1tb2R1bGUtcG9zaXgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNkNjUwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDM3YTI3YjZmZDA5ZWNiMzcwOTdiODVlNWRiNzRlNGY3N2I4MGZlMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogVHVlLCAxMiBKYW4gMjAxNiAyMjoyMDozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2Ugc3RkaW50IHR5cGVzIGNvbnNpc3RlbnRseQorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBpbmNsdWRlL2F0dHJpYnV0ZXMuaCB8IDYgKysrKy0tCisgbWFuL21hbjMvYXR0cl9saXN0LjMgfCA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK0luZGV4OiBhdHRyLTIuNC40Ny9pbmNsdWRlL2F0dHJpYnV0ZXMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF0dHItMi40LjQ3Lm9yaWcvaW5jbHVkZS9hdHRyaWJ1dGVzLmgKKysrKyBhdHRyLTIuNC40Ny9pbmNsdWRlL2F0dHJpYnV0ZXMuaAorQEAgLTIyLDYgKzIyLDcgQEAKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKyAKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgLyoKKyAgKglBbiBhbG1vc3QtSVJJWC1jb21wYXRpYmxlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgQVBJCisgICoJKHRoZSBJUklYIGF0dHJpYnV0ZSAibGlzdCIgb3BlcmF0aW9uIGlzIG1pc3NpbmcsIGFkZGVkIEFUVFJfU0VDVVJFKS4KK0BAIC02OSw3ICs3MCw3IEBAIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0IHsKKyAgKiBhbF9vZmZzZXRbaV0gZW50cnkgcG9pbnRzIHRvLgorICAqLworIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0X2VudCB7CS8qIGRhdGEgZnJvbSBhdHRyX2xpc3QoKSAqLworLQl1X2ludDMyX3QJYV92YWx1ZWxlbjsJLyogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgKi8KKysJdWludDMyX3QJYV92YWx1ZWxlbjsJLyogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgKi8KKyAJY2hhcgkJYV9uYW1lWzFdOwkvKiBhdHRyIG5hbWUgKE5VTEwgdGVybWluYXRlZCkgKi8KKyB9IGF0dHJsaXN0X2VudF90OworIAorQEAgLTkwLDcgKzkxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfZW50IHsJLyogZGF0YSBmcgorICAqIG9wZXJhdGlvbiBvbiBhIGN1cnNvciBpcyB0byBiemVybygpIGl0LgorICAqLworIHR5cGVkZWYgc3RydWN0IGF0dHJsaXN0X2N1cnNvciB7CistCXVfaW50MzJfdAlvcGFxdWVbNF07CS8qIGFuIG9wYXF1ZSBjb29raWUgKi8KKysJdWludDMyX3QJb3BhcXVlWzRdOwkvKiBhbiBvcGFxdWUgY29va2llICovCisgfSBhdHRybGlzdF9jdXJzb3JfdDsKKyAKKyAvKgorSW5kZXg6IGF0dHItMi40LjQ3L21hbi9tYW4zL2F0dHJfbGlzdC4zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXR0ci0yLjQuNDcub3JpZy9tYW4vbWFuMy9hdHRyX2xpc3QuMworKysrIGF0dHItMi40LjQ3L21hbi9tYW4zL2F0dHJfbGlzdC4zCitAQCAtNzIsOSArNzIsOSBAQCBUaGUgY29udGVudHMgb2YgYW4gXGY0YXR0cmxpc3RfdFxmUCBzdHJ1CisgLm5mCisgLmZ0IDQKKyAudGEgOW4gMjJuCistX19pbnQzMl90IGFsX2NvdW50OyAvXCgqKiBudW1iZXIgb2YgZW50cmllcyBpbiBhdHRybGlzdCBcKCoqLworLV9faW50MzJfdCBhbF9tb3JlOyAvXCgqKiBUL0Y6IG1vcmUgYXR0cnMgKGRvIHN5c2NhbGwgYWdhaW4pIFwoKiovCistX19pbnQzMl90IGFsX29mZnNldFsxXTsgL1woKiogYnl0ZSBvZmZzZXRzIG9mIGF0dHJzIFt2YXItc2l6ZWRdIFwoKiovCisraW50MzJfdCBhbF9jb3VudDsgL1woKiogbnVtYmVyIG9mIGVudHJpZXMgaW4gYXR0cmxpc3QgXCgqKi8KKytpbnQzMl90IGFsX21vcmU7IC9cKCoqIFQvRjogbW9yZSBhdHRycyAoZG8gc3lzY2FsbCBhZ2FpbikgXCgqKi8KKytpbnQzMl90IGFsX29mZnNldFsxXTsgL1woKiogYnl0ZSBvZmZzZXRzIG9mIGF0dHJzIFt2YXItc2l6ZWRdIFwoKiovCisgLmZ0IDEKKyAuZmkKKyAuUkUKK0BAIC0xMTMsNyArMTEzLDcgQEAgaW5jbHVkZSB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CisgLm5mCisgLmZ0IDQKKyAudGEgOW4gMjJuCistdV9pbnQzMl90IGFfdmFsdWVsZW47IC9cKCoqIG51bWJlciBieXRlcyBpbiB2YWx1ZSBvZiBhdHRyIFwoKiovCisrdWludDMyX3QgYV92YWx1ZWxlbjsgL1woKiogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgXCgqKi8KKyBjaGFyIGFfbmFtZVtdOyAvXCgqKiBhdHRyIG5hbWUgKE5VTEwgdGVybWluYXRlZCkgXCgqKi8KKyAuZnQgMQorIC5maQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0cl8yLjQuNDcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgppbmRleCA1NTZjOGU0Li5mYzg4YmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgpAQCAtNCw2ICs0LDkgQEAKICMgZnV0dXJlIHJlbGVhc2VzIG9mIGF0dHIsIHJlbW92ZSB0aGlzIHdoZW4gdXBkYXRpbmcgdGhlIHJlY2lwZS4KIFNSQ19VUkkgKz0gImZpbGU6Ly9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly9kb250LXVzZS1kZWNsLW1hY3Jvcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLXRoZS1zZWN0aW9uLTItbWFuLXBhZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4NGY1OGRlYzAwYjYwZjJkYzhmZDFjOTcwOTI5MWNjNyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jCmluZGV4IGM1ODdiM2MuLmU2ZjRjNzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYwpAQCAtNDcsNiArNDcsMyBAQAogRklMRVNfbGliJHtCUE59ID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotIyBPbmx5IGFwcGVuZCBsZGZsYWdzIGZvciB0YXJnZXQgcmVjaXBlIGFuZCBpZiBVU0VfTkxTIGlzIGVuYWJsZWQKLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjX2NsYXNzLXRhcmdldCA9ICIke0BbJycsICcgLWxpbnRsICddWyhkLmdldFZhcignVVNFX05MUycpID09ICd5ZXMnKV19IgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliY19jbGFzcy10YXJnZXQgPSAiJHtAWycnLCAnIC0tZGlzYWJsZS1nZXR0ZXh0ICddWyhkLmdldFZhcignVVNFX05MUycpID09ICdubycpXX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhYjgzZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaApAQCAtMCwwICsxLDI0MCBAQAorRnJvbSA2MDQ3Yzg1MjJiOTEyMzVhZDFlODM1ZjQ0ZjVlMzY0NzJkOWQ0OWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhcyBHcnVlbmJhY2hlciA8YW5kcmVhcy5ncnVlbmJhY2hlckBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIyIEFwciAyMDE1IDExOjQ2OjU5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBSZW1vdmUgdGhlIGF0dHIuNSBtYW4gcGFnZSAobW92ZWQgdG8gbWFuLXBhZ2VzKQorCitDb21taXQgZGNlOWI0NDQ4YzdmMmIyMmJkMjA2Y2QwNjhmYjA1Y2IyZjMyNTViOSBmcm9tCitodHRwczovL2dpdC5zYXZhbm5haC5ub25nbnUub3JnL2dpdC9hdHRyLmdpdAorCitUaGUgYXR0ci41IHBhZ2UgaXMgcGFydCBvZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIHN5c3RlbSBjYWxsIGRvY3VtZW50YXRpb24sCit3aGljaCBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBtYW4tcGFnZXMgcGFja2FnZS4gTW92ZSB0aGUgYXR0ci41IHBhZ2UgdGhlcmUKK2FzIHdlbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworW01BOiB1cGRhdGVkIHRvIGFwcGx5IGRpcmVjdGx5IHRvIHYyLjQuNDddCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorLS0tCisgbWFuL01ha2VmaWxlICAgICAgfCAgIDIgKy0KKyBtYW4vbWFuNS9NYWtlZmlsZSB8ICAzNSAtLS0tLS0tLS0tLS0tCisgbWFuL21hbjUvYXR0ci41ICAgfCAxNTMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTg5IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuNS9NYWtlZmlsZQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuNS9hdHRyLjUKKworZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZSBiL21hbi9NYWtlZmlsZQoraW5kZXggNzU1ZGFlZC4uOTMwMWYwOSAxMDA2NDQKKy0tLSBhL21hbi9NYWtlZmlsZQorKysrIGIvbWFuL01ha2VmaWxlCitAQCAtMTksNyArMTksNyBAQAorIFRPUERJUiA9IC4uCisgaW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKKyAKKy1TVUJESVJTID0gbWFuMSBtYW4zIG1hbjUKKytTVUJESVJTID0gbWFuMSBtYW4zCisgCisgZGVmYXVsdCA6ICQoU1VCRElSUykKKyAKK2RpZmYgLS1naXQgYS9tYW4vbWFuNS9NYWtlZmlsZSBiL21hbi9tYW41L01ha2VmaWxlCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDZiNzBkM2QuLjAwMDAwMDAKKy0tLSBhL21hbi9tYW41L01ha2VmaWxlCisrKysgL2Rldi9udWxsCitAQCAtMSwzNSArMCwwIEBACistIworLSMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDAyIFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCistIyBDb3B5cmlnaHQgKEMpIDIwMDkgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CistIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistIworLQorLVRPUERJUiA9IC4uLy4uCistaW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKKy0KKy1NQU5fU0VDVElPTgk9IDUKKy0KKy1NQU5fUEFHRVMJPSAkKHNoZWxsIGVjaG8gKi4kKE1BTl9TRUNUSU9OKSkKKy1NQU5fREVTVAk9ICQoUEtHX01BTl9ESVIpL21hbiQoTUFOX1NFQ1RJT04pCistTFNSQ0ZJTEVTCT0gJChNQU5fUEFHRVMpCistCistZGVmYXVsdCA6ICQoTUFOX1BBR0VTKQorLQorLWluY2x1ZGUgJChCVUlMRFJVTEVTKQorLQorLWluc3RhbGwgOiBkZWZhdWx0CistCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoTUFOX0RFU1QpCistCSQoSU5TVEFMTF9NQU4pCistaW5zdGFsbC1kZXYgaW5zdGFsbC1saWI6CitkaWZmIC0tZ2l0IGEvbWFuL21hbjUvYXR0ci41IGIvbWFuL21hbjUvYXR0ci41CitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGEwMjc1N2QuLjAwMDAwMDAKKy0tLSBhL21hbi9tYW41L2F0dHIuNQorKysrIC9kZXYvbnVsbAorQEAgLTEsMTUzICswLDAgQEAKKy0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBtYW51YWwgcGFnZQorLS5cIgorLS5cIiBDb3B5cmlnaHQgKEMpIDIwMDAsIDIwMDIsIDIwMDcgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgorLS5cIiBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDQsIDIwMDcgU2lsaWNvbiBHcmFwaGljcywgSW5jLgorLS5cIiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLS5cIgorLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCistLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCistLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCistLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLS5cIgorLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKKy0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55CistLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKKy0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KKy0uXCIKKy0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLS5cIgorLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKy0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKKy0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLS5cIgorLS5USCBBVFRSIDUKKy0uU0ggTkFNRQorLWF0dHIgLSBFeHRlbmRlZCBhdHRyaWJ1dGVzCistLlNIIERFU0NSSVBUSU9OCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbmFtZTp2YWx1ZSBwYWlycyBhc3NvY2lhdGVkIHBlcm1hbmVudGx5IHdpdGgKKy1maWxlcyBhbmQgZGlyZWN0b3JpZXMsIHNpbWlsYXIgdG8gdGhlIGVudmlyb25tZW50IHN0cmluZ3MgYXNzb2NpYXRlZAorLXdpdGggYSBwcm9jZXNzLgorLUFuIGF0dHJpYnV0ZSBtYXkgYmUgZGVmaW5lZCBvciB1bmRlZmluZWQuCistSWYgaXQgaXMgZGVmaW5lZCwgaXRzIHZhbHVlIG1heSBiZSBlbXB0eSBvciBub24tZW1wdHkuCistLlBQCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlCistYXNzb2NpYXRlZCB3aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKKy0uQlIgc3RhdCAoMikKKy1kYXRhKS4KKy1UaGV5IGFyZSBvZnRlbiB1c2VkIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5CistdG8gYSBmaWxlc3lzdGVtIFwtIGZvciBleGFtcGxlLCBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHN1Y2ggYXMKKy1BY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgbWF5IGJlIGltcGxlbWVudGVkIHVzaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCistLlBQCistVXNlcnMgd2l0aCBzZWFyY2ggYWNjZXNzIHRvIGEgZmlsZSBvciBkaXJlY3RvcnkgbWF5IHJldHJpZXZlIGEgbGlzdCBvZgorLWF0dHJpYnV0ZSBuYW1lcyBkZWZpbmVkIGZvciB0aGF0IGZpbGUgb3IgZGlyZWN0b3J5LgorLS5QUAorLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2VkIGFzIGF0b21pYyBvYmplY3RzLgorLVJlYWRpbmcgcmV0cmlldmVzIHRoZSB3aG9sZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUgYW5kIHN0b3JlcyBpdCBpbiBhIGJ1ZmZlci4KKy1Xcml0aW5nIHJlcGxhY2VzIGFueSBwcmV2aW91cyB2YWx1ZSB3aXRoIHRoZSBuZXcgdmFsdWUuCistLlBQCistU3BhY2UgY29uc3VtZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaXMgY291bnRlZCB0b3dhcmRzIHRoZSBkaXNrIHF1b3RhcworLW9mIHRoZSBmaWxlIG93bmVyIGFuZCBmaWxlIGdyb3VwLgorLS5QUAorLUN1cnJlbnRseSwgc3VwcG9ydCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyBpcyBpbXBsZW1lbnRlZCBvbiBMaW51eCBieSB0aGUKKy1leHQyLCBleHQzLCBleHQ0LCBYRlMsIEpGUyBhbmQgcmVpc2VyZnMgZmlsZXN5c3RlbXMuCistLlNIIEVYVEVOREVEIEFUVFJJQlVURSBOQU1FU1BBQ0VTCistQXR0cmlidXRlIG5hbWVzIGFyZSB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5ncy4KKy1UaGUgYXR0cmlidXRlIG5hbWUgaXMgYWx3YXlzIHNwZWNpZmllZCBpbiB0aGUgZnVsbHkgcXVhbGlmaWVkCistLklSIG5hbWVzcGFjZS5hdHRyaWJ1dGUKKy1mb3JtLCBlZy4KKy0uSVIgdXNlci5taW1lX3R5cGUgLAorLS5JUiB0cnVzdGVkLm1kNXN1bSAsCistLklSIHN5c3RlbS5wb3NpeF9hY2xfYWNjZXNzICwKKy1vcgorLS5JUiBzZWN1cml0eS5zZWxpbnV4IC4KKy0uUFAKKy1UaGUgbmFtZXNwYWNlIG1lY2hhbmlzbSBpcyB1c2VkIHRvIGRlZmluZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBleHRlbmRlZAorLWF0dHJpYnV0ZXMuCistVGhlc2UgZGlmZmVyZW50IGNsYXNzZXMgZXhpc3QgZm9yIHNldmVyYWwgcmVhc29ucywgZS5nLiB0aGUgcGVybWlzc2lvbnMKKy1hbmQgY2FwYWJpbGl0aWVzIHJlcXVpcmVkIGZvciBtYW5pcHVsYXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcyBvZiBvbmUKKy1uYW1lc3BhY2UgbWF5IGRpZmZlciB0byBhbm90aGVyLgorLS5QUAorLUN1cnJlbnRseSB0aGUKKy0uSVIgc2VjdXJpdHkgLAorLS5JUiBzeXN0ZW0gLAorLS5JUiB0cnVzdGVkICwKKy1hbmQKKy0uSVIgdXNlcgorLWV4dGVuZGVkIGF0dHJpYnV0ZSBjbGFzc2VzIGFyZSBkZWZpbmVkIGFzIGRlc2NyaWJlZCBiZWxvdy4gQWRkaXRpb25hbAorLWNsYXNzZXMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCistLlNTIEV4dGVuZGVkIHNlY3VyaXR5IGF0dHJpYnV0ZXMKKy1UaGUgc2VjdXJpdHkgYXR0cmlidXRlIG5hbWVzcGFjZSBpcyB1c2VkIGJ5IGtlcm5lbCBzZWN1cml0eSBtb2R1bGVzLAorLXN1Y2ggYXMgU2VjdXJpdHkgRW5oYW5jZWQgTGludXguICAKKy1SZWFkIGFuZCB3cml0ZSBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gc2VjdXJpdHkgYXR0cmlidXRlcyBkZXBlbmQgb24gdGhlCistcG9saWN5IGltcGxlbWVudGVkIGZvciBlYWNoIHNlY3VyaXR5IGF0dHJpYnV0ZSBieSB0aGUgc2VjdXJpdHkgbW9kdWxlLgorLVdoZW4gbm8gc2VjdXJpdHkgbW9kdWxlIGlzIGxvYWRlZCwgYWxsIHByb2Nlc3NlcyBoYXZlIHJlYWQgYWNjZXNzIHRvCistZXh0ZW5kZWQgc2VjdXJpdHkgYXR0cmlidXRlcywgYW5kIHdyaXRlIGFjY2VzcyBpcyBsaW1pdGVkIHRvIHByb2Nlc3NlcworLXRoYXQgaGF2ZSB0aGUgQ0FQX1NZU19BRE1JTiBjYXBhYmlsaXR5LgorLS5TUyBFeHRlbmRlZCBzeXN0ZW0gYXR0cmlidXRlcworLUV4dGVuZGVkIHN5c3RlbSBhdHRyaWJ1dGVzIGFyZSB1c2VkIGJ5IHRoZSBrZXJuZWwgdG8gc3RvcmUgc3lzdGVtCistb2JqZWN0cyBzdWNoIGFzIEFjY2VzcyBDb250cm9sIExpc3RzIGFuZCBDYXBhYmlsaXRpZXMuICBSZWFkIGFuZCB3cml0ZQorLWFjY2VzcyBwZXJtaXNzaW9ucyB0byBzeXN0ZW0gYXR0cmlidXRlcyBkZXBlbmQgb24gdGhlIHBvbGljeSBpbXBsZW1lbnRlZAorLWZvciBlYWNoIHN5c3RlbSBhdHRyaWJ1dGUgaW1wbGVtZW50ZWQgYnkgZmlsZXN5c3RlbXMgaW4gdGhlIGtlcm5lbC4KKy0uU1MgVHJ1c3RlZCBleHRlbmRlZCBhdHRyaWJ1dGVzCistVHJ1c3RlZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSB2aXNpYmxlIGFuZCBhY2Nlc3NpYmxlIG9ubHkgdG8gcHJvY2Vzc2VzIHRoYXQKKy1oYXZlIHRoZSBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkgKHRoZSBzdXBlciB1c2VyIHVzdWFsbHkgaGFzIHRoaXMKKy1jYXBhYmlsaXR5KS4KKy1BdHRyaWJ1dGVzIGluIHRoaXMgY2xhc3MgYXJlIHVzZWQgdG8gaW1wbGVtZW50IG1lY2hhbmlzbXMgaW4gdXNlcgorLXNwYWNlIChpLmUuLCBvdXRzaWRlIHRoZSBrZXJuZWwpIHdoaWNoIGtlZXAgaW5mb3JtYXRpb24gaW4gZXh0ZW5kZWQgYXR0cmlidXRlcworLXRvIHdoaWNoIG9yZGluYXJ5IHByb2Nlc3NlcyBzaG91bGQgbm90IGhhdmUgYWNjZXNzLgorLS5TUyBFeHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMKKy1FeHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgbWF5IGJlIGFzc2lnbmVkIHRvIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBmb3IKKy1zdG9yaW5nIGFyYml0cmFyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgdGhlIG1pbWUgdHlwZSwKKy1jaGFyYWN0ZXIgc2V0IG9yIGVuY29kaW5nIG9mIGEgZmlsZS4gVGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBmb3IgdXNlcgorLWF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgYnkgdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzLgorLS5QUAorLVRoZSBmaWxlIHBlcm1pc3Npb24gYml0cyBvZiByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhcmUKKy1pbnRlcnByZXRlZCBkaWZmZXJlbnRseSBmcm9tIHRoZSBmaWxlIHBlcm1pc3Npb24gYml0cyBvZiBzcGVjaWFsIGZpbGVzCistYW5kIHN5bWJvbGljIGxpbmtzLiBGb3IgcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhlIGZpbGUKKy1wZXJtaXNzaW9uIGJpdHMgZGVmaW5lIGFjY2VzcyB0byB0aGUgZmlsZSdzIGNvbnRlbnRzLCB3aGlsZSBmb3IgZGV2aWNlIHNwZWNpYWwKKy1maWxlcyB0aGV5IGRlZmluZSBhY2Nlc3MgdG8gdGhlIGRldmljZSBkZXNjcmliZWQgYnkgdGhlIHNwZWNpYWwgZmlsZS4KKy1UaGUgZmlsZSBwZXJtaXNzaW9ucyBvZiBzeW1ib2xpYyBsaW5rcyBhcmUgbm90IHVzZWQgaW4gYWNjZXNzCistY2hlY2tzLiBUaGVzZSBkaWZmZXJlbmNlcyB3b3VsZCBhbGxvdyB1c2VycyB0byBjb25zdW1lIGZpbGVzeXN0ZW0gcmVzb3VyY2VzIGluCistYSB3YXkgbm90IGNvbnRyb2xsYWJsZSBieSBkaXNrIHF1b3RhcyBmb3IgZ3JvdXAgb3Igd29ybGQgd3JpdGFibGUgc3BlY2lhbCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCistLlBQCistRm9yIHRoaXMgcmVhc29uLCBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGFuZCBhY2Nlc3MgdG8gZXh0ZW5kZWQgdXNlciBhdHRyaWJ1dGVzIGlzIHJlc3RyaWN0ZWQgdG8gdGhlCistb3duZXIgYW5kIHRvIHVzZXJzIHdpdGggYXBwcm9wcmlhdGUgY2FwYWJpbGl0aWVzIGZvciBkaXJlY3RvcmllcyB3aXRoIHRoZQorLXN0aWNreSBiaXQgc2V0IChzZWUgdGhlCistLkJSIGNobW9kICgxKQorLW1hbnVhbCBwYWdlIGZvciBhbiBleHBsYW5hdGlvbiBvZiBTdGlja3kgRGlyZWN0b3JpZXMpLgorLS5TSCBGSUxFU1lTVEVNIERJRkZFUkVOQ0VTCistVGhlIGtlcm5lbCBhbmQgdGhlIGZpbGVzeXN0ZW0gbWF5IHBsYWNlIGxpbWl0cyBvbiB0aGUgbWF4aW11bSBudW1iZXIKKy1hbmQgc2l6ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUuCistU29tZSBmaWxlIHN5c3RlbXMsIHN1Y2ggYXMgZXh0Mi8zIGFuZCByZWlzZXJmcywgcmVxdWlyZSB0aGUgZmlsZXN5c3RlbQorLXRvIGJlIG1vdW50ZWQgd2l0aCB0aGUKKy0uQiB1c2VyX3hhdHRyCistbW91bnQgb3B0aW9uIGluIG9yZGVyIGZvciBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgdG8gYmUgdXNlZC4KKy0uUFAKKy1JbiB0aGUgY3VycmVudCBleHQyLCBleHQzIGFuZCBleHQ0IGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLCBlYWNoCistZXh0ZW5kZWQgYXR0cmlidXRlIG11c3QgZml0IG9uIGEgc2luZ2xlIGZpbGVzeXN0ZW0gYmxvY2sgKDEwMjQsIDIwNDgKKy1vciA0MDk2IGJ5dGVzLCBkZXBlbmRpbmcgb24gdGhlIGJsb2NrIHNpemUgc3BlY2lmaWVkIHdoZW4gdGhlCistZmlsZXN5c3RlbSB3YXMgY3JlYXRlZCkuCistLlBQCistSW4gdGhlIFhGUyBhbmQgcmVpc2VyZnMgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMsIHRoZXJlIGlzIG5vCistcHJhY3RpY2FsIGxpbWl0IG9uIHRoZSBudW1iZXIgb3Igc2l6ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzCistYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSwgYW5kIHRoZSBhbGdvcml0aG1zIHVzZWQgdG8gc3RvcmUgZXh0ZW5kZWQKKy1hdHRyaWJ1dGUgaW5mb3JtYXRpb24gb24gZGlzayBhcmUgc2NhbGFibGUuCistLlBQCistSW4gdGhlIEpGUyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uLCBuYW1lcyBjYW4gYmUgdXAgdG8gMjU1IGJ5dGVzIGFuZAorLXZhbHVlcyB1cCB0byA2NSw1MzUgYnl0ZXMuCistLlNIIEFERElUSU9OQUwgTk9URVMKKy1TaW5jZSB0aGUgZmlsZXN5c3RlbXMgb24gd2hpY2ggZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgc3RvcmVkIG1pZ2h0IGFsc28KKy1iZSB1c2VkIG9uIGFyY2hpdGVjdHVyZXMgd2l0aCBhIGRpZmZlcmVudCBieXRlIG9yZGVyIGFuZCBtYWNoaW5lIHdvcmQKKy1zaXplLCBjYXJlIHNob3VsZCBiZSB0YWtlbiB0byBzdG9yZSBhdHRyaWJ1dGUgdmFsdWVzIGluIGFuIGFyY2hpdGVjdHVyZQorLWluZGVwZW5kZW50IGZvcm1hdC4KKy0uU0ggQVVUSE9SUworLUFuZHJlYXMgR3J1ZW5iYWNoZXIsCistLlJJIDwgYS5ncnVlbmJhY2hlckBiZXN0Yml0cy5hdCA+CistYW5kIHRoZSBTR0kgWEZTIGRldmVsb3BtZW50IHRlYW0sCistLlJJIDwgbGludXgteGZzQG9zcy5zZ2kuY29tID4uCistLlNIIFNFRSBBTFNPCistZ2V0ZmF0dHIoMSksCistc2V0ZmF0dHIoMSkuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDRjNWEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvUmVtb3ZlLXRoZS1zZWN0aW9uLTItbWFuLXBhZ2VzLnBhdGNoCkBAIC0wLDAgKzEsNjY2IEBACitGcm9tIGI5NzI2MDBhMjZmM2E5MzBlNTNlMmZjZTI2MjUyNjZhNWQyOTgxM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTQgQXByIDIwMTUgMjM6NTM6MTEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFJlbW92ZSB0aGUgc2VjdGlvbiAyIG1hbiBwYWdlcworCitDb21taXQgOGQxMjYzYmNhOTU3MjJkNjZhNmY4ZTgzNDUwZjQ5ZDA5NTZlYTUzNCBmcm9tIHVwc3RyZWFtCitodHRwczovL2dpdC5zYXZhbm5haC5ub25nbnUub3JnL2dpdC9hdHRyLmdpdC8KKworVGhlIHNlY3Rpb24gMiBtYW4gcGFnZXMgaGF2ZSBsb25nIHNpbmNlIGJlZW4gYWRkZWQgdG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlCit3aGljaCBkb2N1bWVudHMgYWxsIHN5c3RlbSBjYWxsczsgdGhleSB3ZXJlIGRpc2FibGVkIGluIGF0dHIgYnkgZGVmYXVsdCBzaW5jZQorSmFudWFyeSAyMDE0LiAgR2V0IHJpZCBvZiB0aGVtIGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworW01BOiBtb2RpZmllZCB0byBhcHBseSBkaXJlY3RseSB0byB2Mi40LjQ3XQorU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1hbi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDIgKy0KKyBtYW4vbWFuMi9NYWtlZmlsZSAgICAgIHwgIDM1IC0tLS0tLS0tLS0tCisgbWFuL21hbjIvZ2V0eGF0dHIuMiAgICB8IDE0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1hbi9tYW4yL2xpc3R4YXR0ci4yICAgfCAxNTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1hbi9tYW4yL3JlbW92ZXhhdHRyLjIgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1hbi9tYW4yL3NldHhhdHRyLjIgICAgfCAxNDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1OTEgZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL01ha2VmaWxlCisgZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL2dldHhhdHRyLjIKKyBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvbGlzdHhhdHRyLjIKKyBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvcmVtb3ZleGF0dHIuMgorIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9zZXR4YXR0ci4yCisKK2RpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUgYi9tYW4vTWFrZWZpbGUKK2luZGV4IDk1MzU0MjYuLjc1NWRhZWQgMTAwNjQ0CistLS0gYS9tYW4vTWFrZWZpbGUKKysrKyBiL21hbi9NYWtlZmlsZQorQEAgLTE5LDcgKzE5LDcgQEAKKyBUT1BESVIgPSAuLgorIGluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCisgCistU1VCRElSUyA9IG1hbjEgbWFuMiBtYW4zIG1hbjUKKytTVUJESVJTID0gbWFuMSBtYW4zIG1hbjUKKyAKKyBkZWZhdWx0IDogJChTVUJESVJTKQorIAorZGlmZiAtLWdpdCBhL21hbi9tYW4yL01ha2VmaWxlIGIvbWFuL21hbjIvTWFrZWZpbGUKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggZDc3MzA5ZC4uMDAwMDAwMAorLS0tIGEvbWFuL21hbjIvTWFrZWZpbGUKKysrKyAvZGV2L251bGwKK0BAIC0xLDM1ICswLDAgQEAKKy0jCistIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLSMgQ29weXJpZ2h0IChDKSAyMDA5ICBBbmRyZWFzIEdydWVuYmFjaGVyIDxhZ3J1ZW5Ac3VzZS5kZT4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorLSMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLSMKKy0KKy1UT1BESVIgPSAuLi8uLgorLWluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCistCistTUFOX1NFQ1RJT04JPSAyCistCistTUFOX1BBR0VTCT0gJChzaGVsbCBlY2hvICouJChNQU5fU0VDVElPTikpCistTUFOX0RFU1QJPSAkKFBLR19NQU5fRElSKS9tYW4kKE1BTl9TRUNUSU9OKQorLUxTUkNGSUxFUwk9ICQoTUFOX1BBR0VTKQorLQorLWRlZmF1bHQgaW5zdGFsbCA6ICQoTUFOX1BBR0VTKQorLQorLWluY2x1ZGUgJChCVUlMRFJVTEVTKQorLQorLWluc3RhbGwtZGV2IDogZGVmYXVsdAorLQkkKElOU1RBTEwpIC1tIDc1NSAtZCAkKE1BTl9ERVNUKQorLQkkKElOU1RBTExfTUFOKQorLWluc3RhbGwtbGliOgorZGlmZiAtLWdpdCBhL21hbi9tYW4yL2dldHhhdHRyLjIgYi9tYW4vbWFuMi9nZXR4YXR0ci4yCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDQwNWFkODkuLjAwMDAwMDAKKy0tLSBhL21hbi9tYW4yL2dldHhhdHRyLjIKKysrKyAvZGV2L251bGwKK0BAIC0xLDE0MyArMCwwIEBACistLlwiCistLlwiIEV4dGVuZGVkIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGxzIG1hbnVhbCBwYWdlcworLS5cIgorLS5cIiAoQykgQW5kcmVhcyBHcnVlbmJhY2hlciwgRmVicnVhcnkgMjAwMQorLS5cIiAoQykgU2lsaWNvbiBHcmFwaGljcyBJbmMsIFNlcHRlbWJlciAyMDAxCistLlwiCistLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKy0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKy0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKy0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistLlwiCistLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgorLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKKy0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZworLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgorLS5cIgorLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistLlwiCistLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQorLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistLlwiCistLlRIIEdFVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKKy0uU0ggTkFNRQorLWdldHhhdHRyLCBsZ2V0eGF0dHIsIGZnZXR4YXR0ciBcLSByZXRyaWV2ZSBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKKy0uU0ggU1lOT1BTSVMKKy0uZmFtIEMKKy0ubmYKKy0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KKy0uc3AKKy0uQkkgInNzaXplX3QgZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAorLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5CSSAic3NpemVfdCBsZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAorLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5CSSAic3NpemVfdCBmZ2V0eGF0dHIgKGludCAiIGZpbGVkZXMgIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAorLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5maQorLS5mYW0gVAorLS5TSCBERVNDUklQVElPTgorLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCistLklSIG5hbWUgOlxjCistLkkgdmFsdWUKKy1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgorLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCistd2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCistLkJSIHN0YXQgKDIpCistZGF0YSkuCistQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgorLS5CUiBhdHRyICg1KS4KKy0uUFAKKy0uQiBnZXR4YXR0cgorLXJldHJpZXZlcyB0aGUKKy0uSSB2YWx1ZQorLW9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaWRlbnRpZmllZCBieQorLS5JIG5hbWUKKy1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgorLS5JIHBhdGgKKy1pbiB0aGUgZmlsZXN5c3RlbS4KKy1UaGUgbGVuZ3RoIG9mIHRoZSBhdHRyaWJ1dGUKKy0uSSB2YWx1ZQorLWlzIHJldHVybmVkLgorLS5QUAorLS5CIGxnZXR4YXR0cgorLWlzIGlkZW50aWNhbCB0byAKKy0uQlIgZ2V0eGF0dHIgLAorLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBsaW5rIGl0c2VsZiBpcworLWludGVycm9nYXRlZCwgbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgorLS5QUAorLS5CIGZnZXR4YXR0cgorLWlzIGlkZW50aWNhbCB0bworLS5CUiBnZXR4YXR0ciAsCistb25seSB0aGUgb3BlbiBmaWxlIHBvaW50ZWQgdG8gYnkKKy0uSSBmaWxlZGVzCistKGFzIHJldHVybmVkIGJ5CistLkJSIG9wZW4gKDIpKQorLWlzIGludGVycm9nYXRlZCBpbiBwbGFjZSBvZgorLS5JUiBwYXRoIC4KKy0uUFAKKy1BbiBleHRlbmRlZCBhdHRyaWJ1dGUKKy0uSSBuYW1lCistaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KKy1UaGUgbmFtZSBpbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50CistbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KKy1UaGUgdmFsdWUgb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgY2h1bmsgb2YgYXJiaXRyYXJ5IHRleHR1YWwgb3IKKy1iaW5hcnkgZGF0YSBvZiBzcGVjaWZpZWQgbGVuZ3RoLgorLS5QUAorLUFuIGVtcHR5IGJ1ZmZlciBvZgorLS5JIHNpemUKKy16ZXJvIGNhbiBiZSBwYXNzZWQgaW50byB0aGVzZSBjYWxscyB0byByZXR1cm4gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUKKy1uYW1lZCBleHRlbmRlZCBhdHRyaWJ1dGUsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVzdGltYXRlIHRoZSBzaXplIG9mIGEKKy1idWZmZXIgd2hpY2ggaXMgc3VmZmljaWVudGx5IGxhcmdlIHRvIGhvbGQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aAorLXRoZSBleHRlbmRlZCBhdHRyaWJ1dGUuCistLlBQCistVGhlIGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBhbGxvdyBndWVzc2luZyBvZiBpbml0aWFsIGJ1ZmZlcgorLXNpemVzLCBhbmQgdG8gZW5sYXJnZSBidWZmZXJzIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKKy10aGF0IHRoZSBidWZmZXIgcHJvdmlkZWQgd2FzIHRvbyBzbWFsbC4KKy0uU0ggUkVUVVJOIFZBTFVFCistT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKKy1leHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUuCistT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAorLS5JIGVycm5vCistaXMgc2V0IGFwcHJvcHJpYXRlbHkuCistLlBQCistSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgb3IgdGhlIHByb2Nlc3MgaGFzIG5vIGFjY2VzcyB0bworLXRoaXMgYXR0cmlidXRlLAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVOT0FUVFIuCistLlBQCistSWYgdGhlCistLkkgc2l6ZQorLW9mIHRoZQorLS5JIHZhbHVlCistYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRVJBTkdFLgorLS5QUAorLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9UU1VQLgorLS5QUAorLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCistLkJSIHN0YXQgKDIpCistc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgorLS5TSCBBVVRIT1JTCistQW5kcmVhcyBHcnVlbmJhY2hlciwKKy0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KKy1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKKy0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KKy1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgorLS5TSCBTRUUgQUxTTworLS5CUiBnZXRmYXR0ciAoMSksCistLkJSIHNldGZhdHRyICgxKSwKKy0uQlIgb3BlbiAoMiksCistLkJSIHN0YXQgKDIpLAorLS5CUiBzZXR4YXR0ciAoMiksCistLkJSIGxpc3R4YXR0ciAoMiksCistLkJSIHJlbW92ZXhhdHRyICgyKSwKKy1hbmQKKy0uQlIgYXR0ciAoNSkuCitkaWZmIC0tZ2l0IGEvbWFuL21hbjIvbGlzdHhhdHRyLjIgYi9tYW4vbWFuMi9saXN0eGF0dHIuMgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCA4YjQzNzFjLi4wMDAwMDAwCistLS0gYS9tYW4vbWFuMi9saXN0eGF0dHIuMgorKysrIC9kZXYvbnVsbAorQEAgLTEsMTU4ICswLDAgQEAKKy0uXCIKKy0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCistLlwiCistLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCistLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKKy0uXCIKKy0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0uXCIKKy0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCistLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQorLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCistLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCistLlwiCistLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0uXCIKKy0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCistLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCistLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0uXCIKKy0uVEggTElTVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKKy0uU0ggTkFNRQorLWxpc3R4YXR0ciwgbGxpc3R4YXR0ciwgZmxpc3R4YXR0ciBcLSBsaXN0IGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcworLS5TSCBTWU5PUFNJUworLS5mYW0gQworLS5uZgorLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorLS5zcAorLS5CSSAic3NpemVfdCBsaXN0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwKKy0uQkkgIlx0XHRcdFx0IGNoYXJcICoiIGxpc3QgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5CSSAic3NpemVfdCBsbGlzdHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsCistLkJJICJcdFx0XHRcdCBjaGFyXCAqIiBsaXN0ICIsIHNpemVfdCAiIHNpemUgKTsKKy0uQkkgInNzaXplX3QgZmxpc3R4YXR0ciAoaW50ICIgZmlsZWRlcyAiLAorLS5CSSAiXHRcdFx0XHQgY2hhclwgKiIgbGlzdCAiLCBzaXplX3QgIiBzaXplICk7CistLmZpCistLmZhbSBUCistLlNIIERFU0NSSVBUSU9OCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbmFtZTp2YWx1ZQorLXBhaXJzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZXMgKGZpbGVzLCBkaXJlY3Rvcmllcywgc3ltbGlua3MsIGV0YykuCistVGhleSBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQKKy13aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKKy0uQlIgc3RhdCAoMikKKy1kYXRhKS4KKy1BIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29uY2VwdHMgY2FuIGJlIGZvdW5kIGluCistLkJSIGF0dHIgKDUpLgorLS5QUAorLS5CIGxpc3R4YXR0cgorLXJldHJpZXZlcyB0aGUKKy0uSSBsaXN0Cistb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KKy0uSSBwYXRoCistaW4gdGhlIGZpbGVzeXN0ZW0uCistVGhlIGxpc3QgaXMgdGhlIHNldCBvZiAoTlVMTC10ZXJtaW5hdGVkKSBuYW1lcywgb25lIGFmdGVyIHRoZSBvdGhlci4KKy1OYW1lcyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIHdoaWNoIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QKKy1oYXZlIGFjY2VzcyBtYXkgYmUgb21pdHRlZCBmcm9tIHRoZSBsaXN0LgorLVRoZSBsZW5ndGggb2YgdGhlIGF0dHJpYnV0ZSBuYW1lCistLkkgbGlzdAorLWlzIHJldHVybmVkLgorLS5QUAorLS5CIGxsaXN0eGF0dHIKKy1pcyBpZGVudGljYWwgdG8KKy0uQlIgbGlzdHhhdHRyICwKKy1leGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBzeW1ib2xpYyBsaW5rLCB3aGVyZSB0aGUgbGlzdCBvZiBuYW1lcyBvZgorLWV4dGVuZGVkIGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rIGl0c2VsZiBpcyByZXRyaWV2ZWQsCistbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgorLS5JIGxpc3QKKy1pcyBhIGNhbGxlci1hbGxvY2F0ZWQgYnVmZmVyIG9mIHNpemUKKy0uSVIgc2l6ZSAuCistLlBQCistLkIgZmxpc3R4YXR0cgorLWlzIGlkZW50aWNhbCB0bworLS5CUiBsaXN0eGF0dHIgLAorLW9ubHkgdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5CistLkkgZmlsZWRlcworLShhcyByZXR1cm5lZCBieQorLS5CUiBvcGVuICgyKSkKKy1pcyBpbnRlcnJvZ2F0ZWQgaW4gcGxhY2Ugb2YKKy0uSVIgcGF0aCAuCistLlBQCistQSBzaW5nbGUgZXh0ZW5kZWQgYXR0cmlidXRlCistLkkgbmFtZQorLWlzIGEgc2ltcGxlIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuCistVGhlIG5hbWUgaW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAorLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCistLlBQCistQW4gZW1wdHkgYnVmZmVyIG9mCistLkkgc2l6ZQorLXplcm8gY2FuIGJlIHBhc3NlZCBpbnRvIHRoZXNlIGNhbGxzIHRvIHJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIHRoZQorLWxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBlc3RpbWF0ZSB0aGUKKy1zaXplIG9mIGEgYnVmZmVyIHdoaWNoIGlzIHN1ZmZpY2llbnRseSBsYXJnZSB0byBob2xkIHRoZSBsaXN0IG9mIG5hbWVzLgorLS5TSCBFWEFNUExFUworLVRoZQorLS5JIGxpc3QKKy1vZiBuYW1lcyBpcyByZXR1cm5lZCBhcyBhbiB1bm9yZGVyZWQgYXJyYXkgb2YgTlVMTC10ZXJtaW5hdGVkIGNoYXJhY3RlcgorLXN0cmluZ3MgKGF0dHJpYnV0ZSBuYW1lcyBhcmUgc2VwYXJhdGVkIGJ5IE5VTEwgY2hhcmFjdGVycyksIGxpa2UgdGhpczoKKy0uZmFtIEMKKy0uUlMKKy0ubmYKKy11c2VyLm5hbWUxXFwwc3lzdGVtLm5hbWUxXFwwdXNlci5uYW1lMlxcMAorLS5maQorLS5SRQorLS5mYW0gVAorLS5QCistRmlsZXN5c3RlbXMgbGlrZSBleHQyLCBleHQzIGFuZCBYRlMgd2hpY2ggaW1wbGVtZW50IFBPU0lYIEFDTHMgdXNpbmcKKy1leHRlbmRlZCBhdHRyaWJ1dGVzLCBtaWdodCByZXR1cm4gYQorLS5JIGxpc3QKKy1saWtlIHRoaXM6CistLmZhbSBDCistLlJTCistLm5mCistc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3NcXDBzeXN0ZW0ucG9zaXhfYWNsX2RlZmF1bHRcXDAKKy0uZmkKKy0uUkUKKy0uZmFtIFQKKy0uU0ggUkVUVVJOIFZBTFVFCistT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKKy1leHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBsaXN0LgorLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKKy0uSSBlcnJubworLWlzIHNldCBhcHByb3ByaWF0ZWx5LgorLS5QUAorLUlmIHRoZQorLS5JIHNpemUKKy1vZiB0aGUKKy0uSSBsaXN0CistYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRVJBTkdFLgorLS5QUAorLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9UU1VQLgorLS5QUAorLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCistLkJSIHN0YXQgKDIpCistc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgorLS5TSCBBVVRIT1JTCistQW5kcmVhcyBHcnVlbmJhY2hlciwKKy0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KKy1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKKy0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KKy1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgorLS5TSCBTRUUgQUxTTworLS5CUiBnZXRmYXR0ciAoMSksCistLkJSIHNldGZhdHRyICgxKSwKKy0uQlIgb3BlbiAoMiksCistLkJSIHN0YXQgKDIpLAorLS5CUiBnZXR4YXR0ciAoMiksCistLkJSIHNldHhhdHRyICgyKSwKKy0uQlIgcmVtb3ZleGF0dHIgKDIpLAorLWFuZAorLS5CUiBhdHRyICg1KS4KK2RpZmYgLS1naXQgYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yIGIvbWFuL21hbjIvcmVtb3ZleGF0dHIuMgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAyYzdkOTM0Li4wMDAwMDAwCistLS0gYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yCisrKysgL2Rldi9udWxsCitAQCAtMSwxMTEgKzAsMCBAQAorLS5cIgorLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxscyBtYW51YWwgcGFnZXMKKy0uXCIKKy0uXCIgKEMpIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIEZlYnJ1YXJ5IDIwMDEKKy0uXCIgKEMpIFNpbGljb24gR3JhcGhpY3MgSW5jLCBTZXB0ZW1iZXIgMjAwMQorLS5cIgorLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCistLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCistLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCistLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLS5cIgorLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKKy0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55CistLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKKy0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KKy0uXCIKKy0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLS5cIgorLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKy0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKKy0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLS5cIgorLS5USCBSRU1PVkVYQVRUUiAyICJFeHRlbmRlZCBBdHRyaWJ1dGVzIiAiRGVjIDIwMDEiICJTeXN0ZW0gY2FsbHMiCistLlNIIE5BTUUKKy1yZW1vdmV4YXR0ciwgbHJlbW92ZXhhdHRyLCBmcmVtb3ZleGF0dHIgXC0gcmVtb3ZlIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZQorLS5TSCBTWU5PUFNJUworLS5mYW0gQworLS5uZgorLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorLS5zcAorLS5CSSAiaW50IHJlbW92ZXhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgKTsKKy0uQkkgImludCBscmVtb3ZleGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSApOworLS5CSSAiaW50IGZyZW1vdmV4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICk7CistLmZpCistLmZhbSBUCistLlNIIERFU0NSSVBUSU9OCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUKKy0uSVIgbmFtZSA6XGMKKy12YWx1ZSBwYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgorLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCistd2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCistLkJSIHN0YXQgKDIpCistZGF0YSkuCistQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgorLS5CUiBhdHRyICg1KS4KKy0uUFAKKy0uQiByZW1vdmV4YXR0cgorLXJlbW92ZXMgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpZGVudGlmaWVkIGJ5CistLkkgbmFtZQorLWFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCistLkkgcGF0aAorLWluIHRoZSBmaWxlc3lzdGVtLgorLS5QUAorLS5CIGxyZW1vdmV4YXR0cgorLWlzIGlkZW50aWNhbCB0byAKKy0uQlIgcmVtb3ZleGF0dHIgLAorLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMKKy1yZW1vdmVkIGZyb20gdGhlIGxpbmsgaXRzZWxmLCBub3QgdGhlIGZpbGUgdGhhdCBpdCByZWZlcnMgdG8uCistLlBQCistLkIgZnJlbW92ZXhhdHRyCistaXMgaWRlbnRpY2FsIHRvCistLkJSIHJlbW92ZXhhdHRyICwKKy1vbmx5IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBvcGVuIGZpbGUgcG9pbnRlZCB0byBieQorLS5JIGZpbGVkZXMKKy0oYXMgcmV0dXJuZWQgYnkKKy0uQlIgb3BlbiAoMikpCistaW4gcGxhY2Ugb2YKKy0uSVIgcGF0aCAuCistLlBQCistQW4gZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWUgaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KKy1UaGUKKy0uSSBuYW1lCistaW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAorLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCistLlNIIFJFVFVSTiBWQUxVRQorLU9uIHN1Y2Nlc3MsIHplcm8gaXMgcmV0dXJuZWQuCistT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAorLS5JIGVycm5vCistaXMgc2V0IGFwcHJvcHJpYXRlbHkuCistLlBQCistSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9BVFRSLgorLS5QUAorLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9UU1VQLgorLS5QUAorLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCistLkJSIHN0YXQgKDIpCistc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgorLS5TSCBBVVRIT1JTCistQW5kcmVhcyBHcnVlbmJhY2hlciwKKy0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KKy1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKKy0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KKy1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgorLS5TSCBTRUUgQUxTTworLS5CUiBnZXRmYXR0ciAoMSksCistLkJSIHNldGZhdHRyICgxKSwKKy0uQlIgb3BlbiAoMiksCistLkJSIHN0YXQgKDIpLAorLS5CUiBzZXR4YXR0ciAoMiksCistLkJSIGdldHhhdHRyICgyKSwKKy0uQlIgbGlzdHhhdHRyICgyKSwKKy1hbmQKKy0uQlIgYXR0ciAoNSkuCitkaWZmIC0tZ2l0IGEvbWFuL21hbjIvc2V0eGF0dHIuMiBiL21hbi9tYW4yL3NldHhhdHRyLjIKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYjIwZGM5Zi4uMDAwMDAwMAorLS0tIGEvbWFuL21hbjIvc2V0eGF0dHIuMgorKysrIC9kZXYvbnVsbAorQEAgLTEsMTQzICswLDAgQEAKKy0uXCIKKy0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCistLlwiCistLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCistLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKKy0uXCIKKy0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0uXCIKKy0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCistLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQorLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCistLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCistLlwiCistLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0uXCIKKy0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCistLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCistLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0uXCIKKy0uVEggU0VUWEFUVFIgMiAiRXh0ZW5kZWQgQXR0cmlidXRlcyIgIkRlYyAyMDAxIiAiU3lzdGVtIGNhbGxzIgorLS5TSCBOQU1FCistc2V0eGF0dHIsIGxzZXR4YXR0ciwgZnNldHhhdHRyIFwtIHNldCBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKKy0uU0ggU1lOT1BTSVMKKy0uZmFtIEMKKy0ubmYKKy0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KKy0uc3AKKy0uQkkgImludCBzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOworLS5CSSAiaW50IGxzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOworLS5CSSAiaW50IGZzZXR4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOworLS5maQorLS5mYW0gVAorLS5TSCBERVNDUklQVElPTgorLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCistLklSIG5hbWUgOlxjCistLkkgdmFsdWUKKy1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgorLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCistd2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCistLkJSIHN0YXQgKDIpCistZGF0YSkuCistQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgorLS5CUiBhdHRyICg1KS4KKy0uUFAKKy0uQiBzZXR4YXR0cgorLXNldHMgdGhlCistLkkgdmFsdWUKKy1vZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlkZW50aWZpZWQgYnkKKy0uSSBuYW1lCistYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KKy0uSSBwYXRoCistaW4gdGhlIGZpbGVzeXN0ZW0uCistVGhlCistLkkgc2l6ZQorLW9mIHRoZQorLS5JIHZhbHVlCistbXVzdCBiZSBzcGVjaWZpZWQuCistLlBQCistLkIgbHNldHhhdHRyCistaXMgaWRlbnRpY2FsIHRvIAorLS5CUiBzZXR4YXR0ciAsCistZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgc3ltYm9saWMgbGluaywgd2hlcmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcworLXNldCBvbiB0aGUgbGluayBpdHNlbGYsIG5vdCB0aGUgZmlsZSB0aGF0IGl0IHJlZmVycyB0by4KKy0uUFAKKy0uQiBmc2V0eGF0dHIKKy1pcyBpZGVudGljYWwgdG8KKy0uQlIgc2V0eGF0dHIgLAorLW9ubHkgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5CistLkkgZmlsZWRlcworLShhcyByZXR1cm5lZCBieQorLS5CUiBvcGVuICgyKSkKKy1pbiBwbGFjZSBvZgorLS5JUiBwYXRoIC4KKy0uUFAKKy1BbiBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBpcyBhIHNpbXBsZSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLgorLVRoZQorLS5JIG5hbWUKKy1pbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50CistbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KKy1UaGUKKy0uSSB2YWx1ZQorLW9mIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBhIGNodW5rIG9mIGFyYml0cmFyeSB0ZXh0dWFsIG9yCistYmluYXJ5IGRhdGEgb2Ygc3BlY2lmaWVkIGxlbmd0aC4KKy0uUFAKKy1UaGUKKy0uSSBmbGFncworLXBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byByZWZpbmUgdGhlIHNlbWFudGljcyBvZiB0aGUgb3BlcmF0aW9uLgorLVhBVFRSX0NSRUFURSBzcGVjaWZpZXMgYSBwdXJlIGNyZWF0ZSwgd2hpY2ggZmFpbHMgaWYgdGhlIG5hbWVkCistYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LgorLVhBVFRSX1JFUExBQ0Ugc3BlY2lmaWVzIGEgcHVyZSByZXBsYWNlIG9wZXJhdGlvbiwgd2hpY2ggZmFpbHMgaWYgdGhlCistbmFtZWQgYXR0cmlidXRlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCistQnkgZGVmYXVsdCAobm8gZmxhZ3MpLCB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBpZgorLW5lZWQgYmUsIG9yIHdpbGwgc2ltcGx5IHJlcGxhY2UgdGhlIHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLgorLS5TSCBSRVRVUk4gVkFMVUUKKy1PbiBzdWNjZXNzLCB6ZXJvIGlzIHJldHVybmVkLgorLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKKy0uSSBlcnJubworLWlzIHNldCBhcHByb3ByaWF0ZWx5LgorLS5QUAorLUlmIFhBVFRSX0NSRUFURSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVFWElTVC4KKy1JZiBYQVRUUl9SRVBMQUNFIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRU5PQVRUUi4KKy0uUFAKKy1JZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2UgcmVtYWluaW5nIHRvIHN0b3JlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gZWl0aGVyIEVOT1NQQywgb3IgRURRVU9UIGlmIHF1b3RhIGVuZm9yY2VtZW50IHdhcyB0aGUgY2F1c2UuCistLlBQCistSWYgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbSwgb3IgYXJlIGRpc2FibGVkLAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVOT1RTVVAuCistLlBQCistVGhlIGVycm9ycyBkb2N1bWVudGVkIGZvciB0aGUKKy0uQlIgc3RhdCAoMikKKy1zeXN0ZW0gY2FsbCBhcmUgYWxzbyBhcHBsaWNhYmxlIGhlcmUuCistLlNIIEFVVEhPUlMKKy1BbmRyZWFzIEdydWVuYmFjaGVyLAorLS5SSSA8IGEuZ3J1ZW5iYWNoZXJAYmVzdGJpdHMuYXQgPgorLWFuZCB0aGUgU0dJIFhGUyBkZXZlbG9wbWVudCB0ZWFtLAorLS5SSSA8IGxpbnV4LXhmc0Bvc3Muc2dpLmNvbSA+LgorLVBsZWFzZSBzZW5kIGFueSBidWcgcmVwb3J0cyBvciBjb21tZW50cyB0byB0aGVzZSBhZGRyZXNzZXMuCistLlNIIFNFRSBBTFNPCistLkJSIGdldGZhdHRyICgxKSwKKy0uQlIgc2V0ZmF0dHIgKDEpLAorLS5CUiBvcGVuICgyKSwKKy0uQlIgc3RhdCAoMiksCistLkJSIGdldHhhdHRyICgyKSwKKy0uQlIgbGlzdHhhdHRyICgyKSwKKy0uQlIgcmVtb3ZleGF0dHIgKDIpLAorLWFuZAorLS5CUiBhdHRyICg1KS4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDIyODU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvZ3JhbW1hYmxlIENvbXBsZXRpb24gZm9yIEJhc2ggNCIKLUhPTUVQQUdFID0gImh0dHA6Ly9iYXNoLWNvbXBsZXRpb24uYWxpb3RoLmRlYmlhbi5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2Jhc2gtY29tcGxldGlvbi8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTUzMDAwMTBiZDQwMzRkZTEyYzNmYzRmMTcxNjkyZTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjBiOTU0MGM2NTUzMjgyNWVjYTAzMGYxMjQxNzMxMzgzZjg5YjJiNjVlODBmMzQ5MmM1ZGQyZjA0MzhjOTVjZiIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJhc2gtY29tcGxldGlvbi0oP1A8cHZlcj4oPyEyMDA4KS4rKVwudGFyIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgY29tcGF0ZGlyCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC8KLQllY2hvICcuICR7ZGF0YWRpcn0vJHtCUE59L2Jhc2hfY29tcGxldGlvbicgPiR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbgotCi0JIyBEZWxldGUgZmlsZXMgYWxyZWFkeSBwcm92aWRlZCBieSB1dGlsLWxpbnV4Ci0JbG9jYWwgaQotCWZvciBpIGluIG1vdW50IHVtb3VudDsgZG8KLQkJcm0gJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyRpCi0JZG9uZQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotCi0jIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcwotUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgotRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTE5YjNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi43LmJiCkBAIC0wLDAgKzEsNDIgQEAKK1NVTU1BUlkgPSAiUHJvZ3JhbW1hYmxlIENvbXBsZXRpb24gZm9yIEJhc2ggNCIKK0hPTUVQQUdFID0gImh0dHA6Ly9iYXNoLWNvbXBsZXRpb24uYWxpb3RoLmRlYmlhbi5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2Jhc2gtY29tcGxldGlvbi8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjgxMTc0OTJiZGM5NDA4NDM4ZTYwNDE2ODNhNDIzY2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFiYTg5MmQzZjQyN2Q0YTY4NmRlMzI2NzNmMzU0MDFiYzk0N2E3ODAxZjY4NDEyNzEyMGNkYjEzNjQxNDQxZSIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJhc2gtY29tcGxldGlvbi0oP1A8cHZlcj4oPyEyMDA4KS4rKVwudGFyIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcyIKKworUEFSQUxMRUxfTUFLRSA9ICIiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgY29tcGF0ZGlyCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC8KKwllY2hvICcuICR7ZGF0YWRpcn0vJHtCUE59L2Jhc2hfY29tcGxldGlvbicgPiR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbgorCisJIyBEZWxldGUgZmlsZXMgYWxyZWFkeSBwcm92aWRlZCBieSB1dGlsLWxpbnV4CisJbG9jYWwgaQorCWZvciBpIGluIG1vdW50IHVtb3VudCByZmtpbGw7IGRvCisJCXJtICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jb21wbGV0aW9ucy8kaQorCWRvbmUKK30KKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKKworIyBTb21lIHJlY2lwZXMgYXJlIHByb3ZpZGluZyAke1BOfS1iYXNoLWNvbXBsZXRpb24gcGFja2FnZXMKK1BBQ0tBR0VTID0rICIke1BOfS1leHRyYSIKK0ZJTEVTXyR7UE59LWV4dHJhID0gIiR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vaGVscGVycy8iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTBmNWZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyB0byBnZW5lcmF0ZSBibG9jayBtYXAgKEFLQSBibWFwKSBhbmQgZmxhc2ggaW1hZ2VzIHVzaW5nIGJtYXAiCi1ERVNDUklQVElPTiA9ICJCbWFwLXRvb2xzIC0gdG9vbHMgdG8gZ2VuZXJhdGUgYmxvY2sgbWFwIChBS0EgYm1hcCkgYW5kIGZsYXNoIGltYWdlcyB1c2luZyBcCi1ibWFwLiBCbWFwdG9vbCBpcyBhIGdlbmVyaWMgdG9vbCBmb3IgY3JlYXRpbmcgdGhlIGJsb2NrIG1hcCAoYm1hcCkgZm9yIGEgZmlsZSwgXAotYW5kIGNvcHlpbmcgZmlsZXMgdXNpbmcgdGhlIGJsb2NrIG1hcC4gVGhlIGlkZWEgaXMgdGhhdCBsYXJnZSBmaWxlIGNvbnRhaW5pbmcgXAotdW51c2VkIGJsb2NrcywgbGlrZSByYXcgc3lzdGVtIGltYWdlIGZpbGVzLCBjYW4gYmUgY29waWVkIG9yIGZsYXNoZWQgYSBsb3QgXAotZmFzdGVyIHdpdGggYm1hcHRvb2wgdGhhbiB3aXRoIHRyYWRpdGlvbmFsIHRvb2xzIGxpa2UgImRkIiBvciAiY3AiLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9kZWRla2luZC9ibWFwLXRvb2xzLmdpdCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaW5mcmFkZWFkLm9yZy9wdWIvJHtCUE59LyR7QlBOfS0ke1BWfS50Z3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTJjZGFkMWNiNGRmYTBjY2E3MTc2YzhlMjI3NTI2MTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2M2YzdmN2RjMGEzN2UyYTMyZGViMTI3MzA4ZTI0ZTZjNGI4MGJmYjU0ZjM4MDNjMzA4ZWZhYjAyYmYyZDQzNCIKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWNvcmUgcHl0aG9uLWNvbXByZXNzaW9uIgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBzZWQgLWkgLWUgJ3N8XiMhLiovdXNyL2Jpbi9lbnYgcHl0aG9ufCMhIC91c3IvYmluL2VudiBuYXRpdmVweXRob258JyAke0R9JHtiaW5kaXJ9L2JtYXB0b29sCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYjZlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuNC5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlRvb2xzIHRvIGdlbmVyYXRlIGJsb2NrIG1hcCAoQUtBIGJtYXApIGFuZCBmbGFzaCBpbWFnZXMgdXNpbmcgYm1hcCIKK0RFU0NSSVBUSU9OID0gIkJtYXAtdG9vbHMgLSB0b29scyB0byBnZW5lcmF0ZSBibG9jayBtYXAgKEFLQSBibWFwKSBhbmQgZmxhc2ggaW1hZ2VzIHVzaW5nIFwKK2JtYXAuIEJtYXB0b29sIGlzIGEgZ2VuZXJpYyB0b29sIGZvciBjcmVhdGluZyB0aGUgYmxvY2sgbWFwIChibWFwKSBmb3IgYSBmaWxlLCBcCithbmQgY29weWluZyBmaWxlcyB1c2luZyB0aGUgYmxvY2sgbWFwLiBUaGUgaWRlYSBpcyB0aGF0IGxhcmdlIGZpbGUgY29udGFpbmluZyBcCit1bnVzZWQgYmxvY2tzLCBsaWtlIHJhdyBzeXN0ZW0gaW1hZ2UgZmlsZXMsIGNhbiBiZSBjb3BpZWQgb3IgZmxhc2hlZCBhIGxvdCBcCitmYXN0ZXIgd2l0aCBibWFwdG9vbCB0aGFuIHdpdGggdHJhZGl0aW9uYWwgdG9vbHMgbGlrZSAiZGQiIG9yICJjcCIuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2JtYXAtdG9vbHMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC9ibWFwLXRvb2xzLmdpdCIKK1NSQ1JFViA9ICI5ZGFkNzI0MTA0ZGYyNjU0NDIyMjY5NzJhMWUzMTA4MTNmOWZmY2JhIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLW1tYXAgcHl0aG9uMy1zZXR1cHRvb2xzIgorCitpbmhlcml0IHB5dGhvbjNuYXRpdmUKK2luaGVyaXQgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS42My4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjMuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjMuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42My4wLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0MGE4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42My4wLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQotIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAotIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCi0jIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKLSMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKLUxJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgotCi1CT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgotQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgotQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWM4MzdlY2Q5OTBiYjAyMmQwN2U3YWFiMzJiMDk4NDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmVhZTI1MjlmNzU5ZjZiM2JmM2Y0OTY5YTE5YzJlOWQ2ZjBjNTAzZWRjYjJkZTRhNjFkMTQyODUxOWZjYjNiMCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2Rvd25sb2FkLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJvb3N0b3JnL3JlbGVhc2UvKD9QPHB2ZXI+LiopL3NvdXJjZS8iCi0KLVBSID0gInIxIgotCi1TID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY0LjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3YjFhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY0LjAuaW5jCkBAIC0wLDAgKzEsMjEgQEAKKyMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQorIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAorIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCisjIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKKyMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKK0xJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgorCitCT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgorQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgorQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjkzZWVjY2UyYWJlZDlkMjQ0MmM5Njc2OTE0NzA5MzQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiY2M1Y2FhY2U5N2JhYTk0ODkzMWQ3MTJlYTVmMzcwMzhkYmIxYzVkODliNDNhZDRkZWY0ZWQ3Y2I2ODMzMzIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgorCitTID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCmluZGV4IDRmZjcwZTMuLjQxZmM5MGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwpAQCAtMzgsNyArMzgsNyBAQAogQk9PU1RfTElCU19yZW1vdmVfbWlwczE2ZSA9ICJ3YXZlIgogCiAjIG9wdGlvbmFsIGxpYnJhcmllcwotUEFDS0FHRUNPTkZJRyA/Pz0gImxvY2FsZSIKK1BBQ0tBR0VDT05GSUcgPz89ICJsb2NhbGUgcHl0aG9uIgogUEFDS0FHRUNPTkZJR1tsb2NhbGVdID0gIiwsaWN1IgogUEFDS0FHRUNPTkZJR1tncmFwaF9wYXJhbGxlbF0gPSAiLCwsYm9vc3QtbXBpIG1waWNoIgogUEFDS0FHRUNPTkZJR1ttcGldID0gIiwsbXBpY2giCkBAIC0xNjksNyArMTY5LDcgQEAKIEJKQU1fT1BUU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gJyAtc05PX0JaSVAyPTEnCiAKICMgQWRqdXN0IHRoZSBidWlsZCBmb3IgeDMyCi1CSkFNX09QVFNfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYWJpPXgzMiBhZGRyZXNzLW1vZGVsPTY0IgorQkpBTV9PUFRTX2FwcGVuZF94ODYteDMyID0gIiBhYmk9eDMyIGFkZHJlc3MtbW9kZWw9NjQiCiAKIGRvX2NvbmZpZ3VyZSgpIHsKIAljcCAtZiAke1N9L2Jvb3N0L2NvbmZpZy9wbGF0Zm9ybS9saW51eC5ocHAgJHtTfS9ib29zdC9jb25maWcvcGxhdGZvcm0vbGludXgtZ251ZWFiaS5ocHAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLVdoZW4tdXNpbmctc29mdC1mbG9hdC1vbi1BUk0td2Utc2hvdWxkLW5vdC1leHBlY3QtdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1XaGVuLXVzaW5nLXNvZnQtZmxvYXQtb24tQVJNLXdlLXNob3VsZC1ub3QtZXhwZWN0LXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWZkNWNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLVdoZW4tdXNpbmctc29mdC1mbG9hdC1vbi1BUk0td2Utc2hvdWxkLW5vdC1leHBlY3QtdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDlhYjA5MTQyMDdlNmQwZTZiNzVjZTEyMTQ3YzU0Yjk2NDc4ZmViNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjEgRmViIDIwMTcgMTI6NTA6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gV2hlbiB1c2luZyBzb2Z0LWZsb2F0LCBvbiBBUk0gd2Ugc2hvdWxkIG5vdCBleHBlY3QgdGhlIEZFXyoKLSBzeW1ib2xzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcCBiL2Jvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwCi1pbmRleCBmNTMzNDhhLi44NjI1MmQ3IDEwMDY0NAotLS0tIGEvYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAKLSsrKyBiL2Jvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwCi1AQCAtNDk4LDcgKzQ5OCw3IEBAIGVudW0gbWFza3MgewotIAotICAgICBCT09TVF9GUEVfQUxMICAgICAgID0gTUNXX0VNLAotIAotLSNlbGlmIGRlZmluZWQoQk9PU1RfTk9fRkVOVl9IKSB8fCBkZWZpbmVkKEJPT1NUX0NMQU5HKSAvKiAqKiogKi8KLSsjZWxpZiBkZWZpbmVkKEJPT1NUX05PX0ZFTlZfSCkgfHwgZGVmaW5lZChCT09TVF9DTEFORykgfHwgZGVmaW5lZChfX0FSTV9QQ1MpIC8qICoqKiAqLwotICAgICBCT09TVF9GUEVfQUxMICAgICAgID0gQk9PU1RfRlBFX09GRiwKLSAKLSAjZWxzZSAvKiAqKiogKi8KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLWNvcnJlY3QtZXJyb3Itd2hpY2gtYXBwZWFyZWQtd2hlbi1jb21waWxpbmctbm9uLWMtY28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjAwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gMDJmYTVjZWUxYjhkMDMyMTc4NzExM2UyZGMxMGIxNjJjNjU3ZjMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBSYW1leSA8cmFtZXlAcnJzZC5jb20+CitEYXRlOiBXZWQsIDEgRmViIDIwMTcgMTY6NDM6NTkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29ycmVjdCBlcnJvciB3aGljaCBhcHBlYXJlZCB3aGVuIGNvbXBpbGluZyBub24gYysrIGNvbXBsaWFudAorIGNvZGUgZm9yIGFycmF5cworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtleHBlY3RlZCB0byBiZSByZWxlYXNlZCBpbiB2MS42NV0KKworLS0tCisgYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAgYi9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcAoraW5kZXggNjE3MDhiMy4uNjEyZDFhNiAxMDA2NDQKKy0tLSBhL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwCisrKysgYi9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcAorQEAgLTIzLDYgKzIzLDggQEAgbmFtZXNwYWNlIHN0ZHsKKyB9IC8vIG5hbWVzcGFjZSBzdGQKKyAjZW5kaWYKKyAKKysjaW5jbHVkZSA8Ym9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheV93cmFwcGVyLmhwcD4KKysKKyAjaWZuZGVmIEJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQorIAorICNpbmNsdWRlIDxhcnJheT4KKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDQtVXNlLWF0b21pYy1ieS1kZWZhdWx0LXdoZW4tQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDA0LVVzZS1hdG9taWMtYnktZGVmYXVsdC13aGVuLUJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNzgyNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDQtVXNlLWF0b21pYy1ieS1kZWZhdWx0LXdoZW4tQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gYzIzNGNjNTU3ZjYwNzI5ZTA3MWQ2ZGE1OTc0N2MxYTkyODk1NTVjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldGVyIERpbW92IDxwZGltb3ZAcGRpbW92LmNvbT4KLURhdGU6IFN1biwgMjggQXVnIDIwMTYgMjE6Mjg6MjEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIFVzZSA8YXRvbWljPiBieSBkZWZhdWx0IHdoZW4gQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQyBpcwotIG5vdCBkZWZpbmVkCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2Jvb3N0b3JnL3NtYXJ0X3B0ci9jb21taXQvMjBmZWRjZmYyY2EzMTQzNTAzZWM0ZTg3NmQ0Nzc0NWFiMGVjN2IwY10KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxnaXRAYW5kcmVkLm5ldD4KLSBib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHAgICAgfCAzICsrKwotIGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcCB8IDMgKysrCi0gYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAgICAgICAgIHwgMyArKysKLSAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwIGIvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwCi1pbmRleCA4YWVmZDQ0Li42ZTRmNzFhIDEwMDY0NAotLS0tIGEvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwCi0rKysgYi9ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHAKLUBAIC03Myw2ICs3Myw5IEBACi0gI2VsaWYgZGVmaW5lZCggQk9PU1RfRElTQUJMRV9USFJFQURTICkgJiYgIWRlZmluZWQoIEJPT1NUX1NQX0VOQUJMRV9USFJFQURTICkgJiYgIWRlZmluZWQoIEJPT1NUX0RJU0FCTEVfV0lOMzIgKQotICMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfbnQuaHBwPgotIAotKyNlbGlmICFkZWZpbmVkKCBCT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDICkKLSsjIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3N0ZF9hdG9taWMuaHBwPgotKwotICNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX2kzODZfXyApIHx8IGRlZmluZWQoIF9feDg2XzY0X18gKSApICYmICFkZWZpbmVkKCBfX1BBVEhTQ0FMRV9fICkKLSAjIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djY194ODYuaHBwPgotIAotZGlmZiAtLWdpdCBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcCBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAotaW5kZXggMDk5NWNhOC4uODNlZGUyMyAxMDA2NDQKLS0tLSBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAotKysrIGIvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCi1AQCAtNDQsNiArNDQsOSBAQAotICNlbGlmIGRlZmluZWQoIEJPT1NUX1NQX0hBU19DTEFOR19DMTFfQVRPTUlDUyApCi0gIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jbGFuZy5ocHA+Ci0gCi0rI2VsaWYgIWRlZmluZWQoIEJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMgKQotKyMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3RkX2F0b21pYy5ocHA+Ci0rCi0gI2VsaWYgZGVmaW5lZCggX19TTkNfXyApCi0gIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zbmNfcHMzLmhwcD4KLSAKLWRpZmYgLS1naXQgYS9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcCBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwCi1pbmRleCAxOWY5M2Q3Li4wYjYxOGRmIDEwMDY0NAotLS0tIGEvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAKLSsrKyBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwCi1AQCAtNDMsNiArNDMsOSBAQAotICNlbGlmIGRlZmluZWQoIEJPT1NUX1NQX1VTRV9QVEhSRUFEUyApCi0gIyAgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHA+Ci0gCi0rI2VsaWYgIWRlZmluZWQoIEJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMgKQotKyMgIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfc3RkX2F0b21pYy5ocHA+Ci0rCi0gI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZCggX19hcm1fXyApICYmICFkZWZpbmVkKCBfX3RodW1iX18gKQotICMgIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfZ2NjX2FybS5ocHA+Ci0gCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC9weTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvcHkzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjFmZjE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC9weTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjkgKzAsMCBAQAotQmFja3BvcnQgZml4ZXMgZnJvbSB1cHN0cmVhbSAoYXMgb2YgYm9vc3Qgc3VwZXItbW9kdWxlIGNvbW1pdCAwZDUyYjkpIHRvIGltcHJvdmUKLXRoZSBidWlsZGluZyBvZiB0aGUgQm9vc3QgUHl0aG9uIG1vZHVsZSB3aXRoIFB5dGhvbiAzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvYnVpbGQvSmFtZmlsZSBiL2J1aWxkL0phbWZpbGUKLWluZGV4IDMxM2ZkYWIuLmYxNGRjMTEgMTAwNjQ0Ci0tLS0gYS9saWJzL3B5dGhvbi9idWlsZC9KYW1maWxlCi0rKysgYi9saWJzL3B5dGhvbi9idWlsZC9KYW1maWxlCi1AQCAtNiw2ICs2LDcgQEAgaW1wb3J0IG9zIDsKLSBpbXBvcnQgaW5kaXJlY3QgOwotIGltcG9ydCBtb2R1bGVzIDsKLSBpbXBvcnQgZmVhdHVyZSA7Ci0raW1wb3J0IHByb3BlcnR5IDsKLSAKLSBpbXBvcnQgcHl0aG9uIDsKLSAKLUBAIC0zMCwyMSArMzEsOCBAQCBlbHNlCi0gICAgICAgICA7Ci0gfQotIAotLXJ1bGUgZmluZC1weTMtdmVyc2lvbgotLXsKLS0gICAgbG9jYWwgdmVyc2lvbnMgPSBbIGZlYXR1cmUudmFsdWVzIHB5dGhvbiBdIDsKLS0gICAgbG9jYWwgcHkzdmVyIDsKLS0gICAgZm9yIGxvY2FsIHYgaW4gJCh2ZXJzaW9ucykKLS0gICAgewotLSAgICAgICAgaWYgJCh2KSA+PSAzLjAKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBweTN2ZXIgPSAkKHYpIDsKLS0gICAgICAgIH0KLS0gICAgfQotLSAgICByZXR1cm4gJChweTN2ZXIpIDsKLS19Ci0tCi0tcHkzLXZlcnNpb24gPSBbIGZpbmQtcHkzLXZlcnNpb24gXSA7Ci0rcHkyLXZlcnNpb24gPSBbIHB5LXZlcnNpb24gMiBdIDsKLStweTMtdmVyc2lvbiA9IFsgcHktdmVyc2lvbiAzIF0gOwotIAotIHByb2plY3QgYm9vc3QvcHl0aG9uCi0gICA6IHNvdXJjZS1sb2NhdGlvbiAuLi9zcmMKLUBAIC01MiwxMSArNDAsMTcgQEAgcHJvamVjdCBib29zdC9weXRob24KLSAKLSBydWxlIGNvbmQgKCB0ZXN0ID8gOiB5ZXMgKiA6IG5vICogKSB7IGlmICQodGVzdCkgeyByZXR1cm4gJCh5ZXMpIDsgfSBlbHNlIHsgcmV0dXJuICQobm8pIDsgfSB9Ci0gcnVsZSB1bmxlc3MgKCB0ZXN0ID8gOiB5ZXMgKiA6IG5vICogKSB7IGlmICEgJCh0ZXN0KSB7IHJldHVybiAkKHllcykgOyB9IGVsc2UgeyByZXR1cm4gJChubykgOyB9IH0KLStsb2NhbCBydWxlIGVxICggYSA6IGIgKSB7IGlmICQoYSkgPSAkKGIpIHsgcmV0dXJuIDEgOyB9IH0KLSAKLS1ydWxlIGxpYl9ib29zdF9weXRob24gKCBpcy1weTMgPyApCi0tewotK2xpYl9ib29zdF9weXRob24oMikgPSBib29zdF9weXRob24gOwotK2xpYl9ib29zdF9weXRob24oMykgPSBib29zdF9weXRob24zIDsKLSAKLS0gICAgbGliIFsgY29uZCAkKGlzLXB5MykgOiBib29zdF9weXRob24zIDogYm9vc3RfcHl0aG9uIF0KLStsaWJfYm9vc3RfcHl0aG9uKCQocHkyLXZlcnNpb24pKSA9ICQobGliX2Jvb3N0X3B5dGhvbigyKSkgOwotK2xpYl9ib29zdF9weXRob24oJChweTMtdmVyc2lvbikpID0gJChsaWJfYm9vc3RfcHl0aG9uKDMpKSA7Ci0rCi0rcnVsZSBsaWJfYm9vc3RfcHl0aG9uICggdmVyc2lvbiApCi0rewotKyAgICBsaWIgJChsaWJfYm9vc3RfcHl0aG9uKCQodmVyc2lvbikpKQotICAgICAgICAgOiAjIHNvdXJjZXMKLSAgICAgICAgIG51bWVyaWMuY3BwCi0gICAgICAgICBsaXN0LmNwcAotQEAgLTExMiwxMSArMTA2LDEzIEBAIHJ1bGUgbGliX2Jvb3N0X3B5dGhvbiAoIGlzLXB5MyA/ICkKLSAgICAgICAgICAgICA8ZGVwZW5kZW5jeT5jb25maWctd2FybmluZwotIAotICAgICAgICAgICAgIDxweXRob24tZGVidWdnaW5nPm9uOjxkZWZpbmU+Qk9PU1RfREVCVUdfUFlUSE9OCi0tICAgICAgICAgICAgWyBjb25kICQoaXMtcHkzKSA6IDxweXRob24+JChweTMtdmVyc2lvbikgXQotKyAgICAgICAgICAgIDxweXRob24+JCh2ZXJzaW9uKQotIAotICAgICAgICAgICAgIC08dGFnPkAkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKSUkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKS50YWcKLSAgICAgICAgICAgICA8dGFnPkAkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKSUkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKS5weXRob24tdGFnCi0gCi0rICAgICAgICAgICAgPGNvbmRpdGlvbmFsPkBweXRob24ucmVxdWlyZS1weQotKwotICAgICAgICAgOiAgICMgZGVmYXVsdCBidWlsZAotICAgICAgICAgICAgIDxsaW5rPnNoYXJlZAotICAgICAgICAgOiAgICMgdXNhZ2UgcmVxdWlyZW1lbnRzCi1AQCAtMTI1LDUxICsxMjEsNjggQEAgcnVsZSBsaWJfYm9vc3RfcHl0aG9uICggaXMtcHkzID8gKQotICAgICAgICAgOwotIH0KLSAKLS1ydWxlIGxpYl9ib29zdF9udW1weSAoIGlzLXB5MyA/ICkKLStsaWJfYm9vc3RfbnVtcHkoMikgPSBib29zdF9udW1weSA7Ci0rbGliX2Jvb3N0X251bXB5KDMpID0gYm9vc3RfbnVtcHkzIDsKLSsKLStsaWJfYm9vc3RfbnVtcHkoJChweTItdmVyc2lvbikpID0gJChsaWJfYm9vc3RfcHl0aG9uKDIpKSA7Ci0rbGliX2Jvb3N0X251bXB5KCQocHkzLXZlcnNpb24pKSA9ICQobGliX2Jvb3N0X3B5dGhvbigzKSkgOwotKwotK3J1bGUgbGliX2Jvb3N0X251bXB5ICggdmVyc2lvbiApCi0gewotICAgICBudW1weS1pbmNsdWRlID0gWyBweXRob24ubnVtcHktaW5jbHVkZSBdIDsKLS0gICAgbGliIFsgY29uZCAkKGlzLXB5MykgOiBib29zdF9udW1weTMgOiBib29zdF9udW1weSBdCi0rICAgIGxpYiAkKGxpYl9ib29zdF9udW1weSgkKHZlcnNpb24pKSkKLSAgICAgICAgIDogIyBzb3VyY2VzCi0gICAgICAgICBudW1weS9kdHlwZS5jcHAKLSAgICAgICAgIG51bXB5L21hdHJpeC5jcHAKLSAgICAgICAgIG51bXB5L25kYXJyYXkuY3BwCi0tCW51bXB5L251bXB5LmNwcAotLQludW1weS9zY2FsYXJzLmNwcAotLQludW1weS91ZnVuYy5jcHAKLSsgICAgICAgIG51bXB5L251bXB5LmNwcAotKyAgICAgICAgbnVtcHkvc2NhbGFycy5jcHAKLSsgICAgICAgIG51bXB5L3VmdW5jLmNwcAotICAgICAgICAgOiAgICMgcmVxdWlyZW1lbnRzCi0rICAgICAgICAgICAgPGxpbms+c3RhdGljOjxkZWZpbmU+Qk9PU1RfTlVNUFlfU1RBVElDX0xJQiAKLSsgICAgICAgICAgICA8ZGVmaW5lPkJPT1NUX05VTVBZX1NPVVJDRQotICAgICAgICAgICAgIFsgY29uZCBbIHB5dGhvbi5udW1weSBdIDogPGxpYnJhcnk+L3B5dGhvbi8vcHl0aG9uX2Zvcl9leHRlbnNpb25zIF0KLSAgICAgICAgICAgICBbIHVubGVzcyBbIHB5dGhvbi5udW1weSBdIDogPGJ1aWxkPm5vIF0KLS0JICAgIDxpbmNsdWRlPiQobnVtcHktaW5jbHVkZSkKLS0JICAgIDxsaWJyYXJ5PmJvb3N0X3B5dGhvbgotKyAgICAgICAgICAgIDxpbmNsdWRlPiQobnVtcHktaW5jbHVkZSkKLSsgICAgICAgICAgICA8bGlicmFyeT4kKGxpYl9ib29zdF9weXRob24oJCh2ZXJzaW9uKSkpCi0gICAgICAgICAgICAgPHB5dGhvbi1kZWJ1Z2dpbmc+b246PGRlZmluZT5CT09TVF9ERUJVR19QWVRIT04KLS0gICAgICAgICAgICBbIGNvbmQgJChpcy1weTMpIDogPHB5dGhvbj4kKHB5My12ZXJzaW9uKSBdCi0rICAgICAgICAgICAgPHB5dGhvbj4kKHZlcnNpb24pCi0gCi0gICAgICAgICAgICAgLTx0YWc+QCQoQk9PU1RfSkFNUk9PVF9NT0RVTEUpJSQoQk9PU1RfSkFNUk9PVF9NT0RVTEUpLnRhZwotICAgICAgICAgICAgIDx0YWc+QCQoQk9PU1RfSkFNUk9PVF9NT0RVTEUpJSQoQk9PU1RfSkFNUk9PVF9NT0RVTEUpLnB5dGhvbi10YWcKLSAKLSsgICAgICAgICAgICA8Y29uZGl0aW9uYWw+QHB5dGhvbi5yZXF1aXJlLXB5Ci0rCi0gICAgICAgICA6ICAgIyBkZWZhdWx0IGJ1aWxkCi0gICAgICAgICAgICAgPGxpbms+c2hhcmVkCi0gICAgICAgICA6ICAgIyB1c2FnZSByZXF1aXJlbWVudHMKLSsJCQk8bGluaz5zdGF0aWM6PGRlZmluZT5CT09TVF9OVU1QWV9TVEFUSUNfTElCCi0gICAgICAgICAgICAgPHB5dGhvbi1kZWJ1Z2dpbmc+b246PGRlZmluZT5CT09TVF9ERUJVR19QWVRIT04KLSAgICAgICAgIDsKLSB9Ci0gCi0tbGlicmFyaWVzID0gYm9vc3RfcHl0aG9uIDsKLS1saWJyYXJpZXMzID0gYm9vc3RfcHl0aG9uMyA7Ci0taWYgWyBweXRob24ubnVtcHkgXQotLXsKLS0gICAgbGlicmFyaWVzICs9IGJvb3N0X251bXB5IDsKLS0gICAgbGlicmFyaWVzMyArPSBib29zdF9udW1weTMgOwotLX0KLS0KLS1saWJfYm9vc3RfcHl0aG9uIDsKLS1saWJfYm9vc3RfbnVtcHkgOwotK2xpYnJhcmllcyA9IDsKLSAKLS1pZiAkKHB5My12ZXJzaW9uKQotK2ZvciBsb2NhbCBOIGluIDIgMwotIHsKLS0gICAgbGliX2Jvb3N0X3B5dGhvbiB5ZXMgOwotLSAgICBsaWJfYm9vc3RfbnVtcHkgeWVzIDsKLS0gICAgbGlicmFyaWVzICs9ICQobGlicmFyaWVzMykgOwotKyAgICBpZiAkKHB5JChOKS12ZXJzaW9uKQotKyAgICB7Ci0rICAgICAgICBsaWJfYm9vc3RfcHl0aG9uICQocHkkKE4pLXZlcnNpb24pIDsKLSsgICAgICAgIGxpYnJhcmllcyArPSAkKGxpYl9ib29zdF9weXRob24oJChweSQoTiktdmVyc2lvbikpKSA7Ci0rICAgIH0KLSsgICAgZWxzZQotKyAgICB7Ci0rICAgICAgICBhbGlhcyAkKGxpYl9ib29zdF9weXRob24oJChOKSkpIDsKLSsgICAgfQotKyAgICBpZiAkKHB5JChOKS12ZXJzaW9uKSAmJiBbIHB5dGhvbi5udW1weSBdCi0rICAgIHsKLSsgICAgICAgIGxpYl9ib29zdF9udW1weSAkKHB5JChOKS12ZXJzaW9uKSA7Ci0rICAgICAgICBsaWJyYXJpZXMgKz0gJChsaWJfYm9vc3RfbnVtcHkoJChweSQoTiktdmVyc2lvbikpKSA7Ci0rICAgIH0KLSsgICAgZWxzZQotKyAgICB7Ci0rICAgICAgICBhbGlhcyAkKGxpYl9ib29zdF9udW1weSgkKE4pKSkgOwotKyAgICB9Ci0gfQotIAotIGJvb3N0LWluc3RhbGwgJChsaWJyYXJpZXMpIDsKLWRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcHl0aG9uLmphbSBiL3NyYy90b29scy9weXRob24uamFtCi1pbmRleCBjYzEzMzg1Li5iZjMwMGI4IDEwMDY0NAotLS0tIGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL3B5dGhvbi5qYW0KLSsrKyBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9weXRob24uamFtCi1AQCAtMzQsNiArMzQsNyBAQCBpbXBvcnQgcGF0aCA7Ci0gaW1wb3J0IGZlYXR1cmUgOwotIGltcG9ydCBzZXQgOwotIGltcG9ydCBidWlsdGluIDsKLStpbXBvcnQgcHJvcGVydHktc2V0IDsKLSAKLSAKLSAjIE1ha2UgdGhpcyBtb2R1bGUgYSBwcm9qZWN0LgotQEAgLTYwLDYgKzYxLDEwIEBAIGxpYiBydCA7Ci0gIyBpbnN0YWxsZWQgaW4gdGhlIGRldmVsb3BtZW50IHN5c3RlbSdzIGRlZmF1bHQgcGF0aHMuCi0gZmVhdHVyZS5mZWF0dXJlIHB5dGhvbnBhdGggOiA6IGZyZWUgb3B0aW9uYWwgcGF0aCA7Ci0gCi0rIyBUaGUgYmVzdCBjb25maWd1cmVkIHZlcnNpb24gb2YgUHl0aG9uIDIgYW5kIDMuCi0rcHkyLXZlcnNpb24gPSA7Ci0rcHkzLXZlcnNpb24gPSA7Ci0rCi0gIyBJbml0aWFsaXplcyB0aGUgUHl0aG9uIHRvb2xzZXQuIE5vdGUgdGhhdCBhbGwgcGFyYW1ldGVycyBhcmUgb3B0aW9uYWwuCi0gIwotICMgLSB2ZXJzaW9uIC0tIHRoZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB1c2UuIFNob3VsZCBiZSBpbiBNYWpvci5NaW5vciBmb3JtYXQsCi1AQCAtODYxLDYgKzg2NiwxMSBAQCBsb2NhbCBydWxlIGNvbmZpZ3VyZSAoIHZlcnNpb24gPyA6IGNtZC1vci1wcmVmaXggPyA6IGluY2x1ZGVzICogOiBsaWJyYXJpZXMgPyA6Ci0gICAgICAgICBpZiAhICQodmVyc2lvbikgaW4gWyBmZWF0dXJlLnZhbHVlcyBweXRob24gXQotICAgICAgICAgewotICAgICAgICAgICAgIGZlYXR1cmUuZXh0ZW5kIHB5dGhvbiA6ICQodmVyc2lvbikgOwotKyAgICAgICAgICAgIHB5JChtYWpvci1taW5vclsxXSktdmVyc2lvbiA/PSAkKHZlcnNpb24pIDsKLSsgICAgICAgICAgICBpZiAkKHB5JChtYWpvci1taW5vclsxXSktdmVyc2lvbikgPCAkKHZlcnNpb24pCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICBweSQobWFqb3ItbWlub3JbMV0pLXZlcnNpb24gPSAkKHZlcnNpb24pIDsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICB0YXJnZXQtcmVxdWlyZW1lbnRzICs9IDxweXRob24+JCh2ZXJzaW9uOkU9ZGVmYXVsdCkgOwotICAgICB9Ci1AQCAtOTE2LDYgKzkyNiw5IEBAIGxvY2FsIHJ1bGUgY29uZmlndXJlICggdmVyc2lvbiA/IDogY21kLW9yLXByZWZpeCA/IDogaW5jbHVkZXMgKiA6IGxpYnJhcmllcyA/IDoKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICAjIEluIGNhc2Ugd2UgYWRkZWQgZHVwbGljYXRlIHJlcXVpcmVtZW50cyBmcm9tIHdoYXQgdGhlIHVzZXIgc3BlY2lmaWVkLgotKyAgICB0YXJnZXQtcmVxdWlyZW1lbnRzID0gWyBzZXF1ZW5jZS51bmlxdWUgJCh0YXJnZXQtcmVxdWlyZW1lbnRzKSBdIDsKLSsKLSAgICAgIyBHbG9iYWwsIGJ1dCBjb25kaXRpb25hbCwgcmVxdWlyZW1lbnRzIHRvIGdpdmUgYWNjZXNzIHRvIHRoZSBpbnRlcnByZXRlcgotICAgICAjIGZvciBnZW5lcmFsIHV0aWxpdGllcywgbGlrZSBvdGhlciB0b29sc2V0cywgdGhhdCBydW4gUHl0aG9uIHNjcmlwdHMuCi0gICAgIHRvb2xzZXQuYWRkLXJlcXVpcmVtZW50cwotQEAgLTkzNCwxOSArOTQ3LDYgQEAgbG9jYWwgcnVsZSBjb25maWd1cmUgKCB2ZXJzaW9uID8gOiBjbWQtb3ItcHJlZml4ID8gOiBpbmNsdWRlcyAqIDogbGlicmFyaWVzID8gOgotICAgICAgICAgdG9vbHNldC5hZGQtcmVxdWlyZW1lbnRzIDx0YXJnZXQtb3M+JCh0YXJnZXQtb3MpOjxweXRob24+JCh2ZXJzaW9uOkU9ZGVmYXVsdCkgOwotICAgICB9Ci0gCi0tICAgICMgV2UgYWxzbyBzZXQgYSBkZWZhdWx0IHJlcXVpcmVtZW50IHRoYXQgYXNzaWducyB0aGUgZmlyc3QgcHl0aG9uIGNvbmZpZ3VyZWQKLS0gICAgIyBmb3IgYSBwYXJ0aWN1bGFyIHRhcmdldCBPUyBhcyB0aGUgZGVmYXVsdC4gVGhpcyBtYWtlcyBpdCBzbyB0aGF0IHdlIGNhbgotLSAgICAjIHNlbGVjdCBhIHB5dGhvbiBpbnRlcnByZXRlciB3aXRoIG9ubHkga25vd2xlZGdlIG9mIHRoZSB0YXJnZXQgT1MuIEFuZCBoZW5jZQotLSAgICAjIGNhbiBjb25maWd1cmUgZGlmZmVyZW50IFB5dGhvbnMgYmFzZWQgb24gdGhlIHRhcmdldCBPUyBvbmx5LgotLSAgICBsb2NhbCB0b29sc2V0LXJlcXVpcmVtZW50cyA9IFsgdG9vbHNldC5yZXF1aXJlbWVudHMgXSA7Ci0tICAgIGxvY2FsIHRvb2xzZXQtdGFyZ2V0LW9zLXJlcXVpcmVtZW50cwotLSAgICAgICAgPSBbIHByb3BlcnR5LmV2YWx1YXRlLWNvbmRpdGlvbmFscy1pbi1jb250ZXh0Ci0tICAgICAgICAgICAgWyAkKHRvb2xzZXQtcmVxdWlyZW1lbnRzKS5yYXcgXSA6IDx0YXJnZXQtb3M+JCh0YXJnZXQtb3MpIF0gOwotLSAgICBpZiAhIDxweXRob24+IGluICQodG9vbHNldC10YXJnZXQtb3MtcmVxdWlyZW1lbnRzOkcpCi0tICAgIHsKLS0gICAgICAgIHRvb2xzZXQuYWRkLXJlcXVpcmVtZW50cyA8dGFyZ2V0LW9zPiQodGFyZ2V0LW9zKTo8cHl0aG9uPiQodmVyc2lvbjpFPWRlZmF1bHQpIDsKLS0gICAgfQotLQotICAgICAjIFJlZ2lzdGVyIHRoZSByaWdodCBzdWZmaXggZm9yIGV4dGVuc2lvbnMuCi0gICAgIHJlZ2lzdGVyLWV4dGVuc2lvbi1zdWZmaXggJChleHRlbnNpb24tc3VmZml4KSA6ICQodGFyZ2V0LXJlcXVpcmVtZW50cykgOwotIAotQEAgLTEwMzgsNiArMTAzOCwyMiBAQCBsb2NhbCBydWxlIGNvbmZpZ3VyZSAoIHZlcnNpb24gPyA6IGNtZC1vci1wcmVmaXggPyA6IGluY2x1ZGVzICogOiBsaWJyYXJpZXMgPyA6Ci0gICAgICAgICAgICAgOiAkKHVzYWdlLXJlcXVpcmVtZW50cykKLSAgICAgICAgICAgICA7Ci0gICAgIH0KLSsgICAgCi0rfQotKwotKyMgQ29uZGl0aW9uYWwgcnVsZSBzcGVjaWZpY2F0aW9uIHRoYXQgd2lsbCBwcmV2ZW50IGJ1aWxkaW5nIG9mIGEgdGFyZ2V0Ci0rIyBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyBweXRob24gY29uZmlndXJhdGlvbiBhdmFpbGFibGUgd2l0aCB0aGUgZ2l2ZW4KLSsjIHJlcXVpcmVkIHByb3BlcnRpZXMuCi0rcnVsZSByZXF1aXJlLXB5ICggcHJvcGVydGllcyAqICkKLSt7Ci0rICAgIGxvY2FsIHB5LWV4dC10YXJnZXQgPSBbICQoLnByb2plY3QpLmZpbmQgcHl0aG9uX2Zvcl9leHRlbnNpb25zIF0gOwotKyAgICBsb2NhbCBwcm9wZXJ0eS1zZXQgPSBbIHByb3BlcnR5LXNldC5jcmVhdGUgJChwcm9wZXJ0aWVzKSBdIDsKLSsgICAgcHJvcGVydHktc2V0ID0gWyAkKHByb3BlcnR5LXNldCkuZXhwYW5kIF0gOwotKyAgICBsb2NhbCBweS1leHQtYWx0ZXJuYXRpdmUgPSBbICQocHktZXh0LXRhcmdldCkuc2VsZWN0LWFsdGVybmF0aXZlcyAkKHByb3BlcnR5LXNldCkgXSA7Ci0rICAgIGlmICEgJChweS1leHQtYWx0ZXJuYXRpdmUpCi0rICAgIHsKLSsgICAgICAgIHJldHVybiA8YnVpbGQ+bm8gOwotKyAgICB9Ci0gfQotIAotIAotQEAgLTEyOTgsNSArMTMxNCwxMSBAQCBydWxlIG51bXB5LXRlc3QgKCBuYW1lIDogc291cmNlcyAqIDogcmVxdWlyZW1lbnRzICogKQotICAgICAgICAgOiAkKG5hbWUpIF0gOwotIH0KLSAKLStydWxlIHB5LXZlcnNpb24gKCBuICkKLSt7Ci0rICAgIHJldHVybiAkKHB5JChuKS12ZXJzaW9uKSA7Ci0rfQotKwotIElNUE9SVCAkKF9fbmFtZV9fKSA6IGJwbC10ZXN0IDogOiBicGwtdGVzdCA7Ci0gSU1QT1JUICQoX19uYW1lX18pIDogbnVtcHktdGVzdCA6IDogbnVtcHktdGVzdCA7Ci0rSU1QT1JUICQoX19uYW1lX18pIDogcHktdmVyc2lvbiA6IDogcHktdmVyc2lvbiA7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42My4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwNzY4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42My4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKLXJlcXVpcmUgYm9vc3QuaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLVdoZW4tdXNpbmctc29mdC1mbG9hdC1vbi1BUk0td2Utc2hvdWxkLW5vdC1leHBlY3QtdGgucGF0Y2ggXAotICAgIGZpbGU6Ly9ib29zdC1DVkUtMjAxMi0yNjc3LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1Vc2UtYXRvbWljLWJ5LWRlZmF1bHQtd2hlbi1CT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDLnBhdGNoIFwKLSAgICBmaWxlOi8vYm9vc3QtbWF0aC1kaXNhYmxlLXBjaC1mb3ItZ2NjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaCBcCi0gICAgZmlsZTovL3B5My5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42NC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWMyMGUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjQuMC5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGJvb3N0LSR7UFZ9LmluYworcmVxdWlyZSBib29zdC5pbmMKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly9hcm0taW50cmluc2ljcy5wYXRjaCBcCisgICAgZmlsZTovL2Jvb3N0LUNWRS0yMDEyLTI2NzcucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWJvb3N0LWFzaW8tZGV0YWlsLXNvY2tldF90eXBlcy5ocHAtZml4LXBvbGwuaC1pbmNsdWQucGF0Y2ggXAorICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUFwcGx5LWJvb3N0LTEuNjIuMC1uby1mb3JjZWQtZmxhZ3MucGF0Y2gucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTYxMTMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNjExMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyODJhY2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNjExMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1vbiBDQSBjZXJ0aWZpY2F0ZXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaW5jbHVkZXMgUEVNIGZpbGVzIG9mIENBIGNlcnRpZmljYXRlcyB0byBhbGxvdyBcCi1TU0wtYmFzZWQgYXBwbGljYXRpb25zIHRvIGNoZWNrIGZvciB0aGUgYXV0aGVudGljaXR5IG9mIFNTTCBjb25uZWN0aW9ucy4gXAotVGhpcyBkZXJpdmVkIGZyb20gRGViaWFuJ3MgQ0EgQ2VydGlmaWNhdGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3NpZC9jYS1jZXJ0aWZpY2F0ZXMiCi1TRUNUSU9OID0gIm1pc2MiCi1MSUNFTlNFID0gIkdQTC0yLjArICYgTVBMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWU3MzU4Yjk1NDFjY2YzMDI5ZTk3MDVlZDhkZTU3OTY4IgotCi0jIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gcnVuIHRoZSBwb3N0aW5zdCBhdCBpbWFnZSBjcmVhdGlvbiB0aW1lCi1ERVBFTkRTID0gIiIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAib3BlbnNzbC1uYXRpdmUiCi0jIE5lZWQgY19yZWhhc2ggZnJvbSBvcGVuc3NsIGFuZCBydW4tcGFydHMgZnJvbSBkZWJpYW51dGlscwotUEFDS0FHRV9XUklURV9ERVBTICs9ICJvcGVuc3NsLW5hdGl2ZSBkZWJpYW51dGlscy1uYXRpdmUiCi0KLVNSQ1JFViA9ICI2MWI3MGExMDA3ZGMyNjlkNTY4ODFhMGQ0ODBmYzg0MWRhYWNjNzdjIgotCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvY2EtY2VydGlmaWNhdGVzLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLVNZU1JPT1QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtc3VwcG9ydC1Ub3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NiaW5kaXIucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgICdDRVJUU0RJUj0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcycgXAotICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgY2xlYW4KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMgXAotICAgICAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzIFwKLSAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy91cGRhdGUuZAotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1tIDA2NDQgc2Jpbi91cGRhdGUtY2EtY2VydGlmaWNhdGVzLjggJHtEfSR7bWFuZGlyfS9tYW44LwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgIHsKLSAgICAgICAgZWNobyAiIyBMaW5lcyBzdGFydGluZyB3aXRoICMgd2lsbCBiZSBpZ25vcmVkIgotICAgICAgICBlY2hvICIjIExpbmVzIHN0YXJ0aW5nIHdpdGggISB3aWxsIHJlbW92ZSBjZXJ0aWZpY2F0ZSBvbiBuZXh0IHVwZGF0ZSIKLSAgICAgICAgZWNobyAiIyIKLSAgICAgICAgZmluZCAke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMgLXR5cGUgZiAtbmFtZSAnKi5jcnQnIHwgXAotICAgICAgICAgICAgc2VkICdzLF4ke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMvLCwnCi0gICAgfSA+JHtEfSR7c3lzY29uZmRpcn0vY2EtY2VydGlmaWNhdGVzLmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLSAgICBzZWQgLWkgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sJyBcCi0gICAgICAgICAgIC1lICdzLC91c3Ivc2hhcmUvLCR7ZGF0YWRpcn0vLCcgXAotICAgICAgICAgICAtZSAncywvdXNyL2xvY2FsLCR7cHJlZml4fS9sb2NhbCwnIFwKLSAgICAgICAgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcyBcCi0gICAgICAgICR7RH0ke21hbmRpcn0vbWFuOC91cGRhdGUtY2EtY2VydGlmaWNhdGVzLjgKLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBTWVNST09UPSIkRCIgJEQke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKLX0KLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mIgotCi0jIFBvc3RpbnN0cyBkb24ndCBzZWVtIHRvIGJlIHJ1biBmb3IgbmF0aXZlc2RrIHBhY2thZ2VzIHdoZW4gcG9wdWxhdGluZyBTREtzLgotQ09ORkZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQiCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotICAgIFNZU1JPT1Q9IiR7RH0ke1NES1BBVEhOQVRJVkV9IiAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgU1lTUk9PVD0iJHtEfSR7YmFzZV9wcmVmaXh9IiAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTcwNzE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNTlmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgpAQCAtMCwwICsxLDg1IEBACitTVU1NQVJZID0gIkNvbW1vbiBDQSBjZXJ0aWZpY2F0ZXMiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaW5jbHVkZXMgUEVNIGZpbGVzIG9mIENBIGNlcnRpZmljYXRlcyB0byBhbGxvdyBcCitTU0wtYmFzZWQgYXBwbGljYXRpb25zIHRvIGNoZWNrIGZvciB0aGUgYXV0aGVudGljaXR5IG9mIFNTTCBjb25uZWN0aW9ucy4gXAorVGhpcyBkZXJpdmVkIGZyb20gRGViaWFuJ3MgQ0EgQ2VydGlmaWNhdGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3NpZC9jYS1jZXJ0aWZpY2F0ZXMiCitTRUNUSU9OID0gIm1pc2MiCitMSUNFTlNFID0gIkdQTC0yLjArICYgTVBMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWU3MzU4Yjk1NDFjY2YzMDI5ZTk3MDVlZDhkZTU3OTY4IgorCisjIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gcnVuIHRoZSBwb3N0aW5zdCBhdCBpbWFnZSBjcmVhdGlvbiB0aW1lCitERVBFTkRTID0gIiIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAib3BlbnNzbC1uYXRpdmUiCisjIE5lZWQgY19yZWhhc2ggZnJvbSBvcGVuc3NsIGFuZCBydW4tcGFydHMgZnJvbSBkZWJpYW51dGlscworUEFDS0FHRV9XUklURV9ERVBTICs9ICJvcGVuc3NsLW5hdGl2ZSBkZWJpYW51dGlscy1uYXRpdmUiCisKK1NSQ1JFViA9ICIzNGI4ZTE5ZTU0MWI4YWY0MDc2NjE2YjJlMTcwYzdhNzBjZGFkZWQwIgorCitTUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvY2EtY2VydGlmaWNhdGVzLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLVNZU1JPT1QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtc3VwcG9ydC1Ub3lib3gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC1zeXNyb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NiaW5kaXIucGF0Y2giCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTWVNST09UX0RJUlNfY2xhc3MtbmF0aXZlICs9ICIvZXRjIgorCitpbmhlcml0IGFsbGFyY2gKKworRVhUUkFfT0VNQUtFID0gIlwKKyAgICAnQ0VSVFNESVI9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMnIFwKKyAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCisiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBvZV9ydW5tYWtlIGNsZWFuCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIFwKKyAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cyBcCisgICAgICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMvdXBkYXRlLmQKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtbSAwNjQ0IHNiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcy44ICR7RH0ke21hbmRpcn0vbWFuOC8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICB7CisgICAgICAgIGVjaG8gIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAjIHdpbGwgYmUgaWdub3JlZCIKKyAgICAgICAgZWNobyAiIyBMaW5lcyBzdGFydGluZyB3aXRoICEgd2lsbCByZW1vdmUgY2VydGlmaWNhdGUgb24gbmV4dCB1cGRhdGUiCisgICAgICAgIGVjaG8gIiMiCisgICAgICAgIGZpbmQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIC10eXBlIGYgLW5hbWUgJyouY3J0JyB8IFwKKyAgICAgICAgICAgIHNlZCAncyxeJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzLywsJworICAgIH0gPiR7RH0ke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgc2VkIC1pIC1lICdzLC9ldGMvLCR7c3lzY29uZmRpcn0vLCcgXAorICAgICAgICAgICAtZSAncywvdXNyL3NoYXJlLywke2RhdGFkaXJ9LywnIFwKKyAgICAgICAgICAgLWUgJ3MsL3Vzci9sb2NhbCwke3ByZWZpeH0vbG9jYWwsJyBcCisgICAgICAgICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgXAorICAgICAgICAke0R9JHttYW5kaXJ9L21hbjgvdXBkYXRlLWNhLWNlcnRpZmljYXRlcy44Cit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgU1lTUk9PVD0iJEQiICREJHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCit9CisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMuY29uZiIKKworIyBQb3N0aW5zdHMgZG9uJ3Qgc2VlbSB0byBiZSBydW4gZm9yIG5hdGl2ZXNkayBwYWNrYWdlcyB3aGVuIHBvcHVsYXRpbmcgU0RLcy4KK0NPTkZGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKyAgICBTWVNST09UPSIke0R9JHtTREtQQVRITkFUSVZFfSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgIFNZU1JPT1Q9IiR7RH0ke2Jhc2VfcHJlZml4fSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworfQorCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZmYxYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBjOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNzowNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBmaWxlOiBvdXRwdXQgdGhlIGNvcnJlY3QgYnVmZmVyIHRvIHRoZSB1c2VyCisKK1JlZ3Jlc3Npb24gYnJvdWdodCBieSA3YzMxMmY4NGVhOTMwZDggKEFwcmlsIDIwMTcpCisKK0NWRTogQ1ZFLTIwMTctMTAwMDA5OQorCitCdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5Qy5odG1sCisKK0NyZWRpdCB0byBPU1MtRnV6eiBmb3IgdGhlIGRpc2NvdmVyeQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC9jOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL2ZpbGUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9maWxlLmMgYi9saWIvZmlsZS5jCitpbmRleCBiZDQyNmVhYzIuLjY2NmNiZTc1YiAxMDA2NDQKKy0tLSBhL2xpYi9maWxlLmMKKysrKyBiL2xpYi9maWxlLmMKK0BAIC00OTksMTEgKzQ5OSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgZmlsZV9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCisgICAgICAgICAgICAgIEN1cmxfbW9udGhbdG0tPnRtX21vbl0sCisgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCisgICAgICAgICAgICAgIHRtLT50bV9taW4sCisgICAgICAgICAgICAgIHRtLT50bV9zZWMpOworLSAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBidWYsIDApOworKyAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBoZWFkZXIsIDApOworICAgICBpZighcmVzdWx0KQorICAgICAgIC8qIHNldCB0aGUgZmlsZSBzaXplIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHBvc3QgdHJhbnNmZXIgKi8KKyAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgZXhwZWN0ZWRfc2l6ZSk7CisgICAgIHJldHVybiByZXN1bHQ7CisgICB9CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2gKaW5kZXggNTA4ZGY4Yy4uZjc0ZjFkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMC5wYXRjaApAQCAtNiw3ICs2LDcgQEAKIC4uLiBhbmQgdGhlcmVieSBhdm9pZCB0ZWxsaW5nIHNlbmQoKSB0byBzZW5kIG9mZiBtb3JlIGJ5dGVzIHRoYW4gdGhlCiBzaXplIG9mIHRoZSBidWZmZXIhCiAKLUNWRS0yMDE3LTEwMDAxMDAKK0NWRTogQ1ZFLTIwMTctMTAwMDEwMAogCiBCdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5Qi5odG1sCiBSZXBvcnRlZC1ieTogRXZlbiBSb3VhdWx0CkBAIC0xNiwxNyArMTYsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvY29tbWl0LzM1OGIyYjEzMWFkNmMwOTU2OTZmMjBkY2ZhNjJiODMwNTI2M2Y4OTgKIAotQ1ZFOiBDVkUtMjAxNy0xMDAwMTAwCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQorU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CiAtLS0KLSBsaWIvdGZ0cC5jIHwgNyArKysrKystCisgbGliL3RmdHAuYyB8ICAgIDcgKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGN1cmwtNy41My4xL2xpYi90ZnRwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXJsLTcuNTMuMS5vcmlnL2xpYi90ZnRwLmMKLSsrKyBjdXJsLTcuNTMuMS9saWIvdGZ0cC5jCitkaWZmIC0tZ2l0IGEvbGliL3RmdHAuYyBiL2xpYi90ZnRwLmMKK2luZGV4IDAyYmQ4NDIuLmY2ZjRiY2UgMTAwNjQ0CistLS0gYS9saWIvdGZ0cC5jCisrKysgYi9saWIvdGZ0cC5jCiBAQCAtNSw3ICs1LDcgQEAKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffApAQCAtMzYsNyArMzQsNyBAQAogICAqCiAgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi1AQCAtNDkwLDYgKzQ5MCwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgdGZ0cF9zZW5kX2ZpcnN0KHRmdHBfc3RhCitAQCAtNDkxLDYgKzQ5MSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgdGZ0cF9zZW5kX2ZpcnN0KHRmdHBfc3RhdGVfZGF0YV90ICpzdGF0ZSwgdGZ0cF9ldmVudF90IGV2ZW50KQogICAgICBpZihyZXN1bHQpCiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAKQEAgLTQ4LDMgKzQ2LDYgQEAKICAgICAgc25wcmludGYoKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhKzIsCiAgICAgICAgICAgICAgIHN0YXRlLT5ibGtzaXplLAogICAgICAgICAgICAgICAiJXMlYyVzJWMiLCBmaWxlbmFtZSwgJ1wwJywgIG1vZGUsICdcMCcpOworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaAppbmRleCA5ZWVmNWUyLi5jMzAwZmZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoCkBAIC02LDE1ICs2LDE3IEBACiAKIEFkZGVkIHRlc3QgMTI4OSB0byB2ZXJpZnkuCiAKLUNWRS0yMDE3LTEwMDAxMDEKK0NWRTogQ1ZFLTIwMTctMTAwMDEwMQogCiBCdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5QS5odG1sCiBSZXBvcnRlZC1ieTogQnJpYW4gQ2FycGVudGVyCiAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTAwMDEwMQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CitodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC80NTNlN2E3YTAzYTJjZWM3NDlhYmQzODc4YTQ4ZTcyOGM1MTVjY2E3CiAKK1JlYmFzZSB0aGUgdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgY2hhbmdlcyBmb3IgY3VybCA3LjU0LjEuCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3JjL3Rvb2xfdXJsZ2xvYi5jICAgICAgfCAgNSArKysrLQogIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKy0KQEAgLTIyLDExICsyNCwxMSBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZGF0YS90ZXN0MTI4OQogCi1JbmRleDogY3VybC03LjUzLjEvc3JjL3Rvb2xfdXJsZ2xvYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3VybC03LjUzLjEub3JpZy9zcmMvdG9vbF91cmxnbG9iLmMKLSsrKyBjdXJsLTcuNTMuMS9zcmMvdG9vbF91cmxnbG9iLmMKLUBAIC0yNjksNyArMjY5LDEwIEBAIHN0YXRpYyBDVVJMY29kZSBnbG9iX3JhbmdlKFVSTEdsb2IgKmdsb2IKK2RpZmYgLS1naXQgYS9zcmMvdG9vbF91cmxnbG9iLmMgYi9zcmMvdG9vbF91cmxnbG9iLmMKK2luZGV4IDZiMWVjZTAuLmQ1NmRjZDkgMTAwNjQ0CistLS0gYS9zcmMvdG9vbF91cmxnbG9iLmMKKysrKyBiL3NyYy90b29sX3VybGdsb2IuYworQEAgLTI3Myw3ICsyNzMsMTAgQEAgc3RhdGljIENVUkxjb2RlIGdsb2JfcmFuZ2UoVVJMR2xvYiAqZ2xvYiwgY2hhciAqKnBhdHRlcm5wLAogICAgICAgICAgfQogICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICAgbWF4X24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7CkBAIC0zOCwyMiArNDAsMjQgQEAKICAgICAgICAgICAgcGF0dGVybiA9IGVuZHArMTsKICAgICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICAgICBzdGVwX24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7Ci1JbmRleDogY3VybC03LjUzLjEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXJsLTcuNTMuMS5vcmlnL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi0rKysgY3VybC03LjUzLjEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLUBAIC0xMzEsNiArMTMxLDcgQEAgdGVzdDEyNDQgdGVzdDEyNDUgdGVzdDEyNDYgdGVzdDEyNDcgdGVzdAotIHRlc3QxMjUyIHRlc3QxMjUzIHRlc3QxMjU0IHRlc3QxMjU1IHRlc3QxMjU2IHRlc3QxMjU3IHRlc3QxMjU4IHRlc3QxMjU5IFwKK2RpZmYgLS1naXQgYS90ZXN0cy9kYXRhL01ha2VmaWxlLmluYyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCitpbmRleCAxNTUzMjBhLi43YWRiZWU2IDEwMDY0NAorLS0tIGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKKysrKyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCitAQCAtMTMyLDcgKzEzMiw3IEBAIHRlc3QxMjUyIHRlc3QxMjUzIHRlc3QxMjU0IHRlc3QxMjU1IHRlc3QxMjU2IHRlc3QxMjU3IHRlc3QxMjU4IHRlc3QxMjU5IFwKKyB0ZXN0MTI2MCB0ZXN0MTI2MSB0ZXN0MTI2MiBcCiAgXAotIHRlc3QxMjgwIHRlc3QxMjgxIHRlc3QxMjgyIHRlc3QxMjgzIHRlc3QxMjg0IHRlc3QxMjg1IHRlc3QxMjg2IFwKLSt0ZXN0MTI4OSBcCisgdGVzdDEyODAgdGVzdDEyODEgdGVzdDEyODIgdGVzdDEyODMgdGVzdDEyODQgdGVzdDEyODUgdGVzdDEyODYgdGVzdDEyODcgXAorLXRlc3QxMjg4IFwKKyt0ZXN0MTI4OCB0ZXN0MTI4OSBcCiAgXAogIHRlc3QxMzAwIHRlc3QxMzAxIHRlc3QxMzAyIHRlc3QxMzAzIHRlc3QxMzA0IHRlc3QxMzA1IHRlc3QxMzA2IHRlc3QxMzA3IFwKICB0ZXN0MTMwOCB0ZXN0MTMwOSB0ZXN0MTMxMCB0ZXN0MTMxMSB0ZXN0MTMxMiB0ZXN0MTMxMyB0ZXN0MTMxNCB0ZXN0MTMxNSBcCi1JbmRleDogY3VybC03LjUzLjEvdGVzdHMvZGF0YS90ZXN0MTI4OQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyODkgYi90ZXN0cy9kYXRhL3Rlc3QxMjg5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDY3OWNjMAogLS0tIC9kZXYvbnVsbAotKysrIGN1cmwtNy41My4xL3Rlc3RzL2RhdGEvdGVzdDEyODkKKysrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyODkKIEBAIC0wLDAgKzEsMzUgQEAKICs8dGVzdGNhc2U+CiArPGluZm8+CkBAIC05MCwzICs5NCw2IEBACiArPC9lcnJvcmNvZGU+CiArPC92ZXJpZnk+CiArPC90ZXN0Y2FzZT4KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA3OThiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMjU0LnBhdGNoCkBAIC0wLDAgKzEsMTM4IEBACitGcm9tIDFiMmViYTZmOTc0NWMwNjRmNzI4M2UwYWRhOGY0NmRmOWQ5ZDZlNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDAwOjI2OjUwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZUUDogemVybyB0ZXJtaW5hdGUgdGhlIGVudHJ5IHBhdGggZXZlbiBvbiBiYWQgaW5wdXQKKworLi4uIGEgc2luZ2xlIGRvdWJsZSBxdW90ZSBjb3VsZCBsZWF2ZSB0aGUgZW50cnkgcGF0aCBidWZmZXIgd2l0aG91dCBhIHplcm8KK3Rlcm1pbmF0aW5nIGJ5dGUuIENWRS0yMDE3LTEwMDAyNTQKKworVGVzdCAxMTUyIGFkZGVkIHRvIHZlcmlmeS4KKworUmVwb3J0ZWQtYnk6IE1heCBEeW1vbmQKK0J1ZzogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxNzEwMDQuaHRtbAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTEwMDAyNTQKK1NpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9mdHAuYyAgICAgICAgICAgICAgIHwgIDcgKysrKy0tCisgdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgfCAgMiArKworIHRlc3RzL2RhdGEvdGVzdDExNTIgICAgIHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZGF0YS90ZXN0MTE1MgorCitkaWZmIC0tZ2l0IGEvbGliL2Z0cC5jIGIvbGliL2Z0cC5jCitpbmRleCA1ZWRlYzM3Li40OTNkYmY5IDEwMDY0NAorLS0tIGEvbGliL2Z0cC5jCisrKysgYi9saWIvZnRwLmMKK0BAIC0yODI2LDYgKzI4MjYsNyBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQorICAgICAgICAgY29uc3Qgc2l6ZV90IGJ1Zl9zaXplID0gZGF0YS0+c2V0LmJ1ZmZlcl9zaXplOworICAgICAgICAgY2hhciAqZGlyOworICAgICAgICAgY2hhciAqc3RvcmU7CisrICAgICAgICBib29sIGVudHJ5X2V4dHJhY3RlZCA9IEZBTFNFOworIAorICAgICAgICAgZGlyID0gbWFsbG9jKG5yZWFkICsgMSk7CisgICAgICAgICBpZighZGlyKQorQEAgLTI4NTcsNyArMjg1OCw3IEBAIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVtYWNoX2FjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgLyogZW5kIG9mIHBhdGggKi8KKy0gICAgICAgICAgICAgICAgKnN0b3JlID0gJ1wwJzsgLyogemVybyB0ZXJtaW5hdGUgKi8KKysgICAgICAgICAgICAgICAgZW50cnlfZXh0cmFjdGVkID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIGdldCBvdXQgb2YgdGhpcyBsb29wICovCisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorQEAgLTI4NjYsNyArMjg2Nyw5IEBAIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVtYWNoX2FjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCisgICAgICAgICAgICAgc3RvcmUrKzsKKyAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgfQorLQorKyAgICAgICAgICAqc3RvcmUgPSAnXDAnOyAvKiB6ZXJvIHRlcm1pbmF0ZSAqLworKyAgICAgICAgfQorKyAgICAgICAgaWYoZW50cnlfZXh0cmFjdGVkKSB7CisgICAgICAgICAgIC8qIElmIHRoZSBwYXRoIG5hbWUgZG9lcyBub3QgbG9vayBsaWtlIGFuIGFic29sdXRlIHBhdGggKGkuZS46IGl0CisgICAgICAgICAgICAgIGRvZXMgbm90IHN0YXJ0IHdpdGggYSAnLycpLCB3ZSBwcm9iYWJseSBuZWVkIHNvbWUgc2VydmVyLWRlcGVuZGVudAorICAgICAgICAgICAgICBhZGp1c3RtZW50cy4gRm9yIGV4YW1wbGUsIHRoaXMgaXMgdGhlIGNhc2Ugd2hlbiBjb25uZWN0aW5nIHRvCitkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYworaW5kZXggN2FkYmVlNi4uNTI4NDY1NCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCisrKysgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYworQEAgLTEyMSw2ICsxMjEsOCBAQCB0ZXN0MTEyMCB0ZXN0MTEyMSB0ZXN0MTEyMiB0ZXN0MTEyMyB0ZXN0MTEyNCB0ZXN0MTEyNSB0ZXN0MTEyNiB0ZXN0MTEyNyBcCisgdGVzdDExMjggdGVzdDExMjkgdGVzdDExMzAgdGVzdDExMzEgdGVzdDExMzIgdGVzdDExMzMgdGVzdDExMzQgdGVzdDExMzUgXAorIHRlc3QxMTM2IHRlc3QxMTM3IHRlc3QxMTM4IHRlc3QxMTM5IHRlc3QxMTQwIHRlc3QxMTQxIHRlc3QxMTQyIHRlc3QxMTQzIFwKKyB0ZXN0MTE0NCB0ZXN0MTE0NSB0ZXN0MTE0NiBcCisrdGVzdDExNTIgXAorK1wKKyB0ZXN0MTIwMCB0ZXN0MTIwMSB0ZXN0MTIwMiB0ZXN0MTIwMyB0ZXN0MTIwNCB0ZXN0MTIwNSB0ZXN0MTIwNiB0ZXN0MTIwNyBcCisgdGVzdDEyMDggdGVzdDEyMDkgdGVzdDEyMTAgdGVzdDEyMTEgdGVzdDEyMTIgdGVzdDEyMTMgdGVzdDEyMTQgdGVzdDEyMTUgXAorIHRlc3QxMjE2IHRlc3QxMjE3IHRlc3QxMjE4IHRlc3QxMjE5IFwKK2RpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMTUyIGIvdGVzdHMvZGF0YS90ZXN0MTE1MgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFhOGMwYTcKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3RzL2RhdGEvdGVzdDExNTIKK0BAIC0wLDAgKzEsNjEgQEAKKys8dGVzdGNhc2U+CisrPGluZm8+CisrPGtleXdvcmRzPgorK0ZUUAorK1BBU1YKKytMSVNUCisrPC9rZXl3b3Jkcz4KKys8L2luZm8+CisrIworKyMgU2VydmVyLXNpZGUKKys8cmVwbHk+CisrPHNlcnZlcmNtZD4KKytSRVBMWSBQV0QgMjU3ICJqdXN0IG9uZQorKzwvc2VydmVyY21kPgorKworKyMgV2hlbiBkb2luZyBMSVNULCB3ZSBnZXQgdGhlIGRlZmF1bHQgbGlzdCBvdXRwdXQgaGFyZC1jb2RlZCBpbiB0aGUgdGVzdAorKyMgRlRQIHNlcnZlcgorKzxkYXRhIG1vZGU9InRleHQiPgorK3RvdGFsIDIwCisrZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgorK2Ryd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCisrZHJ3eHIteHIteCAgIDIgOTggICAgICAgOTggICAgICAgICAgIDUxMiBNYXkgIDIgIDE5OTYgY3VybC1yZWxlYXNlcworKy1yLS1yLS1yLS0gICAxIDAgICAgICAgIDEgICAgICAgICAgICAgMzUgSnVsIDE2ICAxOTk2IFJFQURNRQorK2xyd3hyd3hyd3ggICAxIDAgICAgICAgIDEgICAgICAgICAgICAgIDcgRGVjICA5ICAxOTk5IGJpbiAtPiB1c3IvYmluCisrZHIteHIteHIteCAgIDIgMCAgICAgICAgMSAgICAgICAgICAgIDUxMiBPY3QgIDEgIDE5OTcgZGV2CisrZHJ3eHJ3eHJ3eCAgIDIgOTggICAgICAgOTggICAgICAgICAgIDUxMiBNYXkgMjkgMTY6MDQgZG93bmxvYWQuaHRtbAorK2RyLXhyLXhyLXggICAyIDAgICAgICAgIDEgICAgICAgICAgICA1MTIgTm92IDMwICAxOTk1IGV0YworK2Ryd3hyd3hyd3ggICAyIDk4ICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0IDMwIDE0OjMzIHB1YgorK2RyLXhyLXhyLXggICA1IDAgICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0ICAxICAxOTk3IHVzcgorKzwvZGF0YT4KKys8L3JlcGx5PgorKworKyMKKysjIENsaWVudC1zaWRlCisrPGNsaWVudD4KKys8c2VydmVyPgorK2Z0cAorKzwvc2VydmVyPgorKyA8bmFtZT4KKytGVFAgd2l0aCB1bmV2ZW4gcXVvdGUgaW4gUFdEIHJlc3BvbnNlCisrIDwvbmFtZT4KKysgPGNvbW1hbmQ+CisrZnRwOi8vJUhPU1RJUDolRlRQUE9SVC90ZXN0LTExNTIvCisrPC9jb21tYW5kPgorKzwvY2xpZW50PgorKworKyMKKysjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorKzx2ZXJpZnk+CisrPHByb3RvY29sPgorK1VTRVIgYW5vbnltb3VzCisrUEFTUyBmdHBAZXhhbXBsZS5jb20KKytQV0QKKytDV0QgdGVzdC0xMTUyCisrRVBTVgorK1RZUEUgQQorK0xJU1QKKytRVUlUCisrPC9wcm90b2NvbD4KKys8L3ZlcmlmeT4KKys8L3Rlc3RjYXNlPgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9yZXByb2R1Y2libGUtbWtoZWxwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9yZXByb2R1Y2libGUtbWtoZWxwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OGJiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL3JlcHJvZHVjaWJsZS1ta2hlbHAucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAxZmU5MmZkM2RkNjRjNzIyOGY2ZmY0MWUzZmMxNmM0ZjIzOTI0NzFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMDg6Mjg6MjUgLTA3MDAKK1N1YmplY3Q6IG1raGVscC5wbDogc3VwcG9ydCByZXByb2R1Y2libGUgYnVpbGQKKworRG8gbm90IGdlbmVyYXRlIGxpbmUgd2l0aCB0aGUgY3VycmVudCBkYXRlLCBzdWNoIGFzOgorCisqIEdlbmVyYXRpb24gdGltZTogVHVlIE9jdC0yNCAxODowMTo0MSAyMDE3CisKK1RoaXMgd2lsbCBpbXByb3ZlIHJlcHJvZHVjaWJpbGl0eS4gVGhlIGdlbmVyYXRlZCBzdHJpbmcgaXMgb25seQorcGFydCBvZiBhIGNvbW1lbnQsIHNvIHRoZXJlIHNob3VsZCBiZSBubyBhZHZlcnNlIGNvbnNlcXVlbmNlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL3B1bGwvMjAyNiBdCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9zcmMvbWtoZWxwLnBsIGIvc3JjL21raGVscC5wbAoraW5kZXggMjcwZGFhMi4uNzU3ZjAyNCAxMDA3NTUKKy0tLSBhL3NyYy9ta2hlbHAucGwKKysrKyBiL3NyYy9ta2hlbHAucGwKK0BAIC0xMDIsMTEgKzEwMiw5IEBAIHdoaWxlKDxSRUFEPikgeworIH0KKyBjbG9zZShSRUFEKTsKKyAKKy0kbm93ID0gbG9jYWx0aW1lOworIHByaW50IDw8SEVBRAorIC8qCisgICogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwLnBsIHNjcmlwdCBpbnN0ZWFkIQorLSAqIEdlbmVyYXRpb24gdGltZTogJG5vdworICAqLworICNpZmRlZiBVU0VfTUFOVUFMCisgI2luY2x1ZGUgInRvb2xfaHVnZWhlbHAuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41My4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjUzLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZTFmODkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjUzLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1hbmQgbGluZSB0b29sIGFuZCBsaWJyYXJ5IGZvciBjbGllbnQtc2lkZSBVUkwgdHJhbnNmZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saXN0LmNnaT9saXN0PWN1cmwtdHJhY2tlciIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT04O21kNT0zYTM0OTQyZjRhZTNmYmYxYTMwMzE2MDcxNGU2NjRhYyIKLQotU1JDX1VSSSA9ICJodHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkL2N1cmwtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoIFwKLSIKLQotIyBjdXJsIGxpa2VzIHRvIHNldCAtZzAgaW4gQ0ZMQUdTLCBzbyB3ZSBzdG9wIGl0Ci0jIGZyb20gbXVja2luZyBhcm91bmQgd2l0aCBkZWJ1ZyBvcHRpb25zCi0jCi1TUkNfVVJJICs9ICIgZmlsZTovL2NvbmZpZ3VyZV9hYy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoIFwKLSAgICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYjFmMDNhMTQyMjM2ODQwYzFhNzdjMDM1ZmE0YzU0MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzcyMDdjMDZkNzVlOTEzNmE5NDRhMmUwNTI4MzM3Y2U3NmYxNWI5ZWM5YWU0YmIzMGQ3MDNiNTliZjUzMGU4IgotCi1DVkVfUFJPRFVDVCA9ICJsaWJjdXJsIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKLQotUEFDS0FHRUNPTkZJR1tkaWN0XSA9ICItLWVuYWJsZS1kaWN0LC0tZGlzYWJsZS1kaWN0LCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnb3BoZXJdID0gIi0tZW5hYmxlLWdvcGhlciwtLWRpc2FibGUtZ29waGVyLCIKLVBBQ0tBR0VDT05GSUdbaW1hcF0gPSAiLS1lbmFibGUtaW1hcCwtLWRpc2FibGUtaW1hcCwiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKLVBBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbiwtLXdpdGhvdXQtbGliaWRuLGxpYmlkbiIKLVBBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbcG9wM10gPSAiLS1lbmFibGUtcG9wMywtLWRpc2FibGUtcG9wMywiCi1QQUNLQUdFQ09ORklHW3Byb3h5XSA9ICItLWVuYWJsZS1wcm94eSwtLWRpc2FibGUtcHJveHksIgotUEFDS0FHRUNPTkZJR1tydG1wZHVtcF0gPSAiLS13aXRoLWxpYnJ0bXAsLS13aXRob3V0LWxpYnJ0bXAscnRtcGR1bXAiCi1QQUNLQUdFQ09ORklHW3J0c3BdID0gIi0tZW5hYmxlLXJ0c3AsLS1kaXNhYmxlLXJ0c3AsIgotUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXNtYiwtLWRpc2FibGUtc21iLCIKLVBBQ0tBR0VDT05GSUdbc210cF0gPSAiLS1lbmFibGUtc210cCwtLWRpc2FibGUtc210cCwiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLXNzbCAtLXdpdGgtcmFuZG9tPS9kZXYvdXJhbmRvbSwtLXdpdGhvdXQtc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgotUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKLVBBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCi1QQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1jcnlwdG8tYXV0aCBcCi0gICAgLS13aXRoLWNhLWJ1bmRsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKLSAgICAtLXdpdGhvdXQtbGlibWV0YWxpbmsgXAotICAgIC0td2l0aG91dC1saWJwc2wgXAotICAgIC0td2l0aG91dC1uZ2h0dHAyIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGN1cmwvY3VybGJ1aWxkLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZwotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotCi1GSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLVJSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41NC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjU0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmMDUzMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41NC4xLmJiCkBAIC0wLDAgKzEsODcgQEAKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgorCitTUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBcCisiCisKKyMgY3VybCBsaWtlcyB0byBzZXQgLWcwIGluIENGTEFHUywgc28gd2Ugc3RvcCBpdAorIyBmcm9tIG11Y2tpbmcgYXJvdW5kIHdpdGggZGVidWcgb3B0aW9ucworIworU1JDX1VSSSArPSAiIGZpbGU6Ly9jb25maWd1cmVfYWMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjZlYjcyMmY1MTJlN2EyNDg1NWZmMDg0ZjU0ZmU1NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZGZjNGRmMmQwMDFlZTBjNDRlYzA3MTE4NmU3NzAwNDYyNDkyNjNjNDkxZmNhZTQ4ZGYwZTFhM2NhOGYyNWEwIgorCitDVkVfUFJPRFVDVCA9ICJsaWJjdXJsIgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKKworIyAnYXJlcycgYW5kICd0aHJlYWRlZC1yZXNvbHZlcicgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQorUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLWVuYWJsZS1hcmVzLC0tZGlzYWJsZS1hcmVzLGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCitQQUNLQUdFQ09ORklHW2ltYXBdID0gIi0tZW5hYmxlLWltYXAsLS1kaXNhYmxlLWltYXAsIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCitQQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4sLS13aXRob3V0LWxpYmlkbixsaWJpZG4iCitQQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCitQQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgorUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKK1BBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgorUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKK1BBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCitQQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKK1BBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCitQQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgorUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKK1BBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS13aXRoLW5naHR0cDIsLS13aXRob3V0LW5naHR0cDIsbmdodHRwMiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAorICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCisgICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKKyAgICAtLXdpdGhvdXQtbGlicHNsIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGN1cmwvY3VybGJ1aWxkLmgKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKKwlzZWQgLWkgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZworfQorCitQQUNLQUdFUyA9KyAibGliJHtCUE59IgorCitGSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi8wMDAxLWNvbmZpZ3VyZS1BZGQtZXhwbGljaXQtdGFnLW9wdGlvbnMtdG8tbGlidG9vbC1pbnZvY2EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jb25maWd1cmUtQWRkLWV4cGxpY2l0LXRhZy1vcHRpb25zLXRvLWxpYnRvb2wtaW52b2NhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMjhkYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jb25maWd1cmUtQWRkLWV4cGxpY2l0LXRhZy1vcHRpb25zLXRvLWxpYnRvb2wtaW52b2NhLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMzJlNTk0M2EzYzQ2MzdkMzllNGQ2NWI1NDRkY2I5OWUyODAyMTBlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDIzIEp1bCAyMDE3IDEwOjU0OjI2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIGV4cGxpY2l0IHRhZyBvcHRpb25zIHRvIGxpYnRvb2wgaW52b2NhdGlvbgorCitUaGlzIGhlbHBzIGNyb3NzIGNvbXBpbGUgd2hlbiB0YWcgaW5mZXJlbmNlIHZpYSBoZXVyaXN0aWNzCitmYWlsIGJlY2F1c2UgQ0MgdmFyaWFibGUgaXMgaGF2aW5nIC1mUElFIC1waWUgYW5kIGxpYnRvb2wKK3NtYXJ0bHkgcmVtb3ZlcyBpdCB3aGVuIGJ1aWxkaW5nIGxpYnJhcmllcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRpc3QvY29uZmlndXJlLmFjIHwgMTIgKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Rpc3QvY29uZmlndXJlLmFjIGIvZGlzdC9jb25maWd1cmUuYWMKK2luZGV4IDY4OWYzYjguLjljMTRiZGIgMTAwNjQ0CistLS0gYS9kaXN0L2NvbmZpZ3VyZS5hYworKysrIGIvZGlzdC9jb25maWd1cmUuYWMKK0BAIC0zNjYsMTIgKzM2NiwxMiBAQCBMSUJUT09MPSIuL2xpYnRvb2wiCisgCisgSU5TVEFMTEVSPSJcJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBjcCAtcCIKKyAKKy1NQUtFRklMRV9DQz0iXCQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJHtNQUtFRklMRV9DQ30iCistTUFLRUZJTEVfU09MSU5LPSJcJChMSUJUT09MKSAtLW1vZGU9bGluayAke01BS0VGSUxFX0NDTElOS30gLWF2b2lkLXZlcnNpb24iCistTUFLRUZJTEVfQ0NMSU5LPSJcJChMSUJUT09MKSAtLW1vZGU9bGluayAke01BS0VGSUxFX0NDTElOS30iCistTUFLRUZJTEVfQ1hYPSJcJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAke01BS0VGSUxFX0NYWH0iCistTUFLRUZJTEVfWFNPTElOSz0iXCQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJHtNQUtFRklMRV9DWFhMSU5LfSAtYXZvaWQtdmVyc2lvbiIKKy1NQUtFRklMRV9DWFhMSU5LPSJcJChMSUJUT09MKSAtLW1vZGU9bGluayAke01BS0VGSUxFX0NYWExJTkt9IgorK01BS0VGSUxFX0NDPSJcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSAke01BS0VGSUxFX0NDfSIKKytNQUtFRklMRV9TT0xJTks9IlwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ0NMSU5LfSAtYXZvaWQtdmVyc2lvbiIKKytNQUtFRklMRV9DQ0xJTks9IlwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ0NMSU5LfSIKKytNQUtFRklMRV9DWFg9IlwkKExJQlRPT0wpIC0tdGFnPUNYWCAtLW1vZGU9Y29tcGlsZSAke01BS0VGSUxFX0NYWH0iCisrTUFLRUZJTEVfWFNPTElOSz0iXCQoTElCVE9PTCkgLS10YWc9Q1hYIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ1hYTElOS30gLWF2b2lkLXZlcnNpb24iCisrTUFLRUZJTEVfQ1hYTElOSz0iXCQoTElCVE9PTCkgLS10YWc9Q1hYIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ1hYTElOS30iCisgCisgCisgY2FzZSAiJGhvc3Rfb3MiIGluCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvc2VxdWVuY2UtdHlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9zZXF1ZW5jZS10eXBlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZmUzZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvc2VxdWVuY2UtdHlwZS5wYXRjaApAQCAtMCwwICsxLDU5IEBACitjb25maWd1cmUgd2FudHMgdG8gdXNlIGhvc3Qtc3BlY2lmaWMgdHlwZXMgdG8gZ2V0IGEgNjQtYml0IGludGVnZXIgaW4gZGIuaAoraW5zdGVhZCBvZiB1c2luZyBhbiBhbGlhcyBzdWNoIGFzIGludDY0X3QuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGhlYWRlciBkaWZmZXJzCitpbiBtdWx0aWxpYiBlbnZpcm9ubWVudHMgZm9yIG5vIGdvb2QgcmVhc29uLCBzbyByZXBsYWNlIHRoZSB0eXBlIHdpdGggdGhlIGFsaWFzCitpbiBzdGRpbnQuaC4KKworVGhpcyB0aGVuIGJyZWFrcyB0aGUgb3Zlcmx5IGNvbXBsaWNhdGVkIHR5cGUgY2hlY2sgYnV0IGFzIHdlIGtub3cgdGhhdCBpbnQ2NF90CitleGlzdHMgYW5kIHdvcmtzLCB3ZSBjYW4ganVzdCBkZWxldGUgdGhhdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCistLS0gYS9kaXN0L2FjbG9jYWwvc2VxdWVuY2UubTR+CTIwMTMtMDktMDkgMTY6MzU6MDIuMDAwMDAwMDAwICswMTAwCisrKysgYi9kaXN0L2FjbG9jYWwvc2VxdWVuY2UubTQJMjAxNy0xMS0wMSAxMzoyMTo0NS40NzIyOTU5NzEgKzAwMDAKK0BAIC0yNCArMjQgQEAKKy0JCWRiX2N2X3NlcV90eXBlPSJsb25nIgorKwkJZGJfY3Zfc2VxX3R5cGU9ImludDY0X3QiCitAQCAtMzEgKzMxIEBACistCQlkYl9jdl9zZXFfdHlwZT0ibG9uZyBsb25nIgorKwkJZGJfY3Zfc2VxX3R5cGU9ImludDY0X3QiCitAQCAtNDEsMzggKzQxIEBACistCSMgVGVzdCB0byBzZWUgaWYgd2UgY2FuIGRlY2xhcmUgdmFyaWFibGVzIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplCistCSMgYW5kIGZvcm1hdCB0aGVtLiAgSWYgd2UncmUgY3Jvc3MtY29tcGlsaW5nLCBhbGwgd2UgZ2V0IGlzIGEgbGluaworLQkjIHRlc3QsIHdoaWNoIHdvbid0IHRlc3QgZm9yIHRoZSBhcHByb3ByaWF0ZSBwcmludGYgZm9ybWF0IHN0cmluZ3MuCistCWlmIHRlc3QgIiRkYl9jdl9idWlsZF9zZXF1ZW5jZSIgPSAieWVzIjsgdGhlbgorLQkJQUNfVFJZX1JVTihbCistCQltYWluKCkgeworLQkJCSRkYl9jdl9zZXFfdHlwZSBsOworLQkJCXVuc2lnbmVkICRkYl9jdl9zZXFfdHlwZSB1OworLQkJCWNoYXIgYnVmQDw6QDEwMEA6PkA7CistCistCQkJYnVmQDw6QDBAOj5AID0gJ2EnOworLQkJCWwgPSA5MjIzMzcyMDM2ODU0Nzc1ODA3TEw7CistCQkJKHZvaWQpc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJGRiX2N2X3NlcV9mbXQsIGwpOworLQkJCWlmIChzdHJjbXAoYnVmLCAiOTIyMzM3MjAzNjg1NDc3NTgwNyIpKQorLQkJCQlyZXR1cm4gKDEpOworLQkJCXUgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTDsKKy0JCQkodm9pZClzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAkZGJfY3Zfc2VxX3VmbXQsIHUpOworLQkJCWlmIChzdHJjbXAoYnVmLCAiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKSkKKy0JCQkJcmV0dXJuICgxKTsKKy0JCQlyZXR1cm4gKDApOworLQkJfV0sLCBbZGJfY3ZfYnVpbGRfc2VxdWVuY2U9Im5vIl0sCistCQlBQ19UUllfTElOSygsWworLQkJCSRkYl9jdl9zZXFfdHlwZSBsOworLQkJCXVuc2lnbmVkICRkYl9jdl9zZXFfdHlwZSB1OworLQkJCWNoYXIgYnVmQDw6QDEwMEA6PkA7CistCistCQkJYnVmQDw6QDBAOj5AID0gJ2EnOworLQkJCWwgPSA5MjIzMzcyMDM2ODU0Nzc1ODA3TEw7CistCQkJKHZvaWQpc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJGRiX2N2X3NlcV9mbXQsIGwpOworLQkJCWlmIChzdHJjbXAoYnVmLCAiOTIyMzM3MjAzNjg1NDc3NTgwNyIpKQorLQkJCQlyZXR1cm4gKDEpOworLQkJCXUgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTDsKKy0JCQkodm9pZClzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAkZGJfY3Zfc2VxX3VmbXQsIHUpOworLQkJCWlmIChzdHJjbXAoYnVmLCAiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKSkKKy0JCQkJcmV0dXJuICgxKTsKKy0JCQlyZXR1cm4gKDApOworLQkJXSwsIFtkYl9jdl9idWlsZF9zZXF1ZW5jZT0ibm8iXSkpCistCWZpCisrCWRiX2N2X2J1aWxkX3NlcXVlbmNlPSJ5ZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgppbmRleCAyNjA2NWJiLi5mYjRiZWZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKQEAgLTIyLDE0ICsyMiwyMCBAQAogU1JDX1VSSSArPSAiZmlsZTovL2FybS10aHVtYi1tdXRleF9kYjUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1hdG9taWMtUmVuYW1lLWxvY2FsLV9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UtdG8tYXZvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtZXhwbGljaXQtdGFnLW9wdGlvbnMtdG8tbGlidG9vbC1pbnZvY2EucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NlcXVlbmNlLXR5cGUucGF0Y2ggXAogICAgICAgICAgICAiCisjIFdlIGFyZSBub3QgaW50ZXJlc3RlZCBpbiBvZmZpY2lhbCBsYXRlc3QgNi54IHZlcnNpb25zOworIyBsZXQncyB0cmFjayB3aGF0IGRlYmlhbiBpcyB1c2luZy4KK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC9kYjUuMy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJkYjVcLjNfKD9QPHB2ZXI+LispXC5vcmlnIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYjk5NDU0NTY0ZDViNDQ3OTc1MDU2NzAzMWQ2NmZlMjQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBhOTkyZDc0MDcwOTg5MmU4MWY5ZDkzZjA2ZGFmMzA1Y2Y3M2ZiODFiNTQ1YWZlNzI0NzgwNDMxNzJjMzYyOCIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWQxMTU4ZTMxNDM3ZjRmODdjZGQ0YWIyYjg2MTM5NTUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlcgoraW5oZXJpdCBhdXRvdG9vbHMKIAogIyBQdXQgdmlydHVhbC9kYiBpbiBhbnkgYXBwcm9wcmlhdGUgcHJvdmlkZXIgb2YgYQogIyByZWxhdGlvbmFsIGRhdGFiYXNlLCB1c2UgaXQgYXMgYSBkZXBlbmRlbmN5IGluCkBAIC03MiwyMiArNzgsMzIgQEAKIE1VVEVYX2FybSA9ICIke0FSTV9NVVRFWH0iCiBNVVRFWF9hcm1lYiA9ICIke0FSTV9NVVRFWH0iCiBFWFRSQV9PRUNPTkYgKz0gIiR7TVVURVh9IFNUUklQPXRydWUiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgorRVhUUkFfT0VNQUtFICs9ICJMSUJUT09MPScuLyR7SE9TVF9TWVN9LWxpYnRvb2wnIgogCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAgLUkgJHtTfS9kaXN0L2FjbG9jYWwgLUkke1N9L2Rpc3QvYWNsb2NhbF9qYXZhIgogQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vZGlzdCIKIAogIyBDYW5jZWwgdGhlIHNpdGUgc3R1ZmYgLSBpdCdzIHNldCBmb3IgZGIzIGFuZCBkZXN0cm95cyB0aGUKICMgY29uZmlndXJlLgogQ09ORklHX1NJVEUgPSAiIgotZG9fY29uZmlndXJlKCkgewotICAgIGNkICR7Qn0KLQlnbnUtY29uZmlnaXplIC0tZm9yY2UgJHtBVVRPVE9PTFNfU0NSSVBUX1BBVEh9Ci0Jb2VfcnVuY29uZgorCitvZV9ydW5jb25mX3ByZXBlbmQoKSB7CisJLiAke1N9L2Rpc3QvUkVMRUFTRQorCSMgRWRpdCB2ZXJzaW9uIGluZm9ybWF0aW9uIHdlIGNvdWxkbid0IHByZS1jb21wdXRlLgorCXNlZCAtaSAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9GQU1JTFlfXy8kREJfVkVSU0lPTl9GQU1JTFkvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9SRUxFQVNFX18vJERCX1ZFUlNJT05fUkVMRUFTRS9nIiBcCisJICAgIC1lICJzL19fRURJVF9EQl9WRVJTSU9OX01BSk9SX18vJERCX1ZFUlNJT05fTUFKT1IvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9NSU5PUl9fLyREQl9WRVJTSU9OX01JTk9SL2ciIFwKKwkgICAgLWUgInMvX19FRElUX0RCX1ZFUlNJT05fUEFUQ0hfXy8kREJfVkVSU0lPTl9QQVRDSC9nIiBcCisJICAgIC1lICJzL19fRURJVF9EQl9WRVJTSU9OX1NUUklOR19fLyREQl9WRVJTSU9OX1NUUklORy9nIiBcCisJICAgIC1lICJzL19fRURJVF9EQl9WRVJTSU9OX0ZVTExfU1RSSU5HX18vJERCX1ZFUlNJT05fRlVMTF9TVFJJTkcvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9VTklRVUVfTkFNRV9fLyREQl9WRVJTSU9OX1VOSVFVRV9OQU1FL2ciIFwKKwkgICAgLWUgInMvX19FRElUX0RCX1ZFUlNJT05fXy8kREJfVkVSU0lPTi9nIiAke1N9L2Rpc3QvY29uZmlndXJlCiB9CiAKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKICAgICAjIFN0b3AgbGlidG9vbCBhZGRpbmcgUlBBVEhzCi0gICAgc2VkIC1pIC1lICdzfGhhcmRjb2RlX2ludG9fbGlicz15ZXN8aGFyZGNvZGVfaW50b19saWJzPW5vfCcgJHtCfS9saWJ0b29sCisgICAgc2VkIC1pIC1lICdzfGhhcmRjb2RlX2ludG9fbGlicz15ZXN8aGFyZGNvZGVfaW50b19saWJzPW5vfCcgJHtCfS8ke0hPU1RfU1lTfS1saWJ0b29sCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewpAQCAtOTcsOCArMTEzLDYgQEAKIAlsbiAtcyBkYjUxL2RiLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2RiLmgKIAlsbiAtcyBkYjUxL2RiX2N4eC5oICR7RH0vJHtpbmNsdWRlZGlyfS9kYl9jeHguaAogCi0gICAgICAgIG9lX211bHRpbGliX2hlYWRlciBkYjUxL2RiLmgKLQogCSMgVGhlIGRvY3MgZW5kIHVwIGluIC91c3IvZG9jcyAtIG5vdCByaWdodC4KIAlpZiB0ZXN0IC1kICIke0R9LyR7cHJlZml4fS9kb2NzIgogCXRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1N2Q0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguMS4xLmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgorCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTcwNDAyVDIxMTczMlovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCisjIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQorIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKKworU1JDX1VSSVttZDVzdW1dID0gImVlNWZjZWNhYWIwNzFiZDBjOTNlOGEwY2VlNjVkNmM0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NDQ2Y2Q0YzBkMzA5ZmQzMWEwNjgyYzVjMmYwN2Y3NjEzZmI4NjdmNzY5NDE0YjljYzUxZjE1NWFkNzMxNzIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KKyAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCisgICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKKyAgICAgICAgZG9uZQorICAgIGZpCit9CisKKyMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KKyMKK1BBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCitGSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKK0FMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYzYzZWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgU01BSUxfR1BMIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZjAxYTUyMDNkNTA1MTJmYzQ4MzBiNDMzMmI2OTZhOWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjExMThUMDMzMDE5Wi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiIKLSMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCi0jIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NDA4M2ZjNjYxNjQ3NDY4ODBkZmZkMzBkNjJkMDU0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzM5NWMwYmRjZmU4OWRlMzA4MjhiMWQyNWNjNTU0OWRlZDUyMjVhNmQzNjI1ZmJjYjJjYzA4ODFlZjVmMDI2IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0gICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbwotICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCi0gICAgICAgIGRvbmUKLSAgICBmaQotfQotCi0jIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCi0jCi1QQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgotRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgotQUxURVJOQVRJVkVfJHtQTn0tcnVuLXBhcnRzID0gInJ1bi1wYXJ0cyIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIndoaWNoLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2guMV0gPSAiJHttYW5kaXJ9L21hbjEvd2hpY2guMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZC1zaGVsbF09IiR7c2JpbmRpcn0vYWRkLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luc3RhbGxrZXJuZWxdPSIke3NiaW5kaXJ9L2luc3RhbGxrZXJuZWwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVtb3ZlLXNoZWxsXT0iJHtzYmluZGlyfS9yZW1vdmUtc2hlbGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVuLXBhcnRzXT0iJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NhdmVsb2ddPSIke2JpbmRpcn0vc2F2ZWxvZyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZW1wZmlsZV09IiR7YmFzZV9iaW5kaXJ9L3RlbXBmaWxlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoXT0iJHtiaW5kaXJ9L3doaWNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2ZpbGVzL3B0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2gKaW5kZXggNjUyMzZmYi4uYjk0NjFiZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2gKQEAgLTEsMzAgKzEsNDEgQEAKLUFkZCBpbnN0YWxsLXB0ZXN0IHJ1bGVzLgorRnJvbSA0ZTRiNzBhNGEzZGNmMWZkYmVlOWU2OGJlZDNiNjJmNDJiMTk3YTNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zZXAgUHVpZ2RlbW9udCA8am9zZXAucHVpZ2RlbW9udEBlbmVhLmNvbT4KK0RhdGU6IFN1biwgNCBNYXkgMjAxNCAxNjowMjowNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBBZGQgaW5zdGFsbC1wdGVzdCBydWxlcy4KIAogU2lnbmVkLW9mZi1ieTogSm9zZXAgUHVpZ2RlbW9udCA8am9zZXAucHVpZ2RlbW9udEBlbmVhLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AZW5lYS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotZGlmZiAtdXIgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi0tLS0gYS9NYWtlZmlsZS5hbQkyMDExLTA4LTE2IDEwOjEzOjEwLjAwMDAwMDAwMCArMDIwMAotKysrIGIvTWFrZWZpbGUuYW0JMjAxMy0wNC0xMiAxODowMjoxNi40NzM3MTU4NzMgKzAyMDAKLUBAIC0zMSwzICszMSw4IEBACi0gCWQ9YGRhdGUgJyslZC8lbS8lWSdgOyBcCi0gCXNlZCAnc3wvXCpARElTVF9EQVRFQFwqL3wiJyIkJGQiJyJ8JyAkKHNyY2Rpcikvc3JjL3ZlcnNpb24uYyA+IFwKLSAJCSQoZGlzdGRpcikvc3JjL3ZlcnNpb24uYworLS0tCisgTWFrZWZpbGUuYW0gICAgICAgfCAgNSArKysrKworIHRlc3RzL01ha2VmaWxlLmFtIHwgMTIgKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA0Y2RjNzM0Li4yNGI5OWYwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNDUsMyArNDUsOCBAQCBDaGFuZ2VMb2c6CisgICAgICAgICAgICAgICAgIGF3ayAtZiAkKHRvcF9zcmNkaXIpL2dpdDJjaGcuYXdrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIC12IGFwcGVuZD0kKHRvcF9zcmNkaXIpLyQocHJldl9jaGFuZ2VfbG9nKSA+IENoYW5nZUxvZzsgXAorICAgICAgICAgZmkKICsKICtpbnN0YWxsLXB0ZXN0OgogKwlAZm9yIHN1YmRpciBpbiAkKFNVQkRJUlMpOyBkbyBcCiArCQkkKE1BS0UpIC1DICQkc3ViZGlyIERFU1RESVI9JChERVNURElSKS8kJHN1YmRpciAkQDsgXAogKwlkb25lCi1kaWZmIC11ciBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCTIwMTEtMTEtMTEgMTk6Mzk6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQkyMDEzLTA0LTEyIDE4OjMwOjU3LjA2NjMwMTAzNyArMDIwMAotQEAgLTEzMiw0ICsxMzIsMTQgQEAKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAzZGJiNTgwLi4yMmZmYzQ0IDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTMwLDQgKzEzMCwxNCBAQCBkdGZldGNoX0xEQUREID0gLi4vc3JjL2xpYmdkYm0ubGEgLi4vY29tcGF0L2xpYmdkYm1fY29tcGF0LmxhCiAgZHRkZWxfTERBREQgPSAuLi9zcmMvbGliZ2RibS5sYSAuLi9jb21wYXQvbGliZ2RibV9jb21wYXQubGEKICBkX2NyZWF0X2NlX0xEQUREID0gLi4vc3JjL2xpYmdkYm0ubGEgLi4vY29tcGF0L2xpYmdkYm1fY29tcGF0LmxhCiAgCistCiArYnVpbGR0ZXN0czogJChjaGVja19QUk9HUkFNUykgJChURVNUU1VJVEUpCi0gCisrCiAraW5zdGFsbC1wdGVzdDogJChjaGVja19QUk9HUkFNUykgJChURVNUU1VJVEUpCiArCUAkKElOU1RBTEwpIC1kICQoREVTVERJUikKICsJQGZvciBmaWxlIGluICReOyBkbyBcCkBAIC0zNCwzICs0NSw2IEBACiArCQkJJChJTlNUQUxMX1BST0dSQU0pICQkZmlsZSAkKERFU1RESVIpIDsgXAogKwkJZmkgXAogKwlkb25lCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzODAwNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJLZXkvdmFsdWUgZGF0YWJhc2UgbGlicmFyeSB3aXRoIGV4dGVuc2libGUgaGFzaGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGJtLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNDFkYTFiOWZlNDJlNjQyY2JiMmMyNGQ1ZTBjNGQyNCIKLQotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RibS9nZGJtLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjljZTk2ZmY0Yzk5ZTc0Mjk1ZWExOTA0MDkzMWM4ZmI5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5N2IyMTY2ZWU4NjdmZDZjYTVjMDIyZWZlZTgwNzAyZDZmMzBkZDY2YWYwZTAzZWQwOTIyODVjM2FmOWJjZWEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBsaWJfcGFja2FnZSBwdGVzdAotCi0jIE5lZWRlZCBmb3IgZGJtIHB5dGhvbiBtb2R1bGUKLUVYVFJBX09FQ09ORiA9ICItZW5hYmxlLWxpYmdkYm0tY29tcGF0IgotCi0jIFN0b3AgcHJlc2VuY2Ugb2YgZGJtL25iZG0gb24gdGhlIGhvc3QgY29udGFtaW5hdGluZyBidWlsZHMKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9saWJfbmRibV9tYWluPW5vIGFjX2N2X2xpYl9kYm1fbWFpbj1ubyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgIyBDcmVhdGUgYSBzeW1saW5rIHRvIG5kYm0uaCBhbmQgZ2RibS5oIGluIGluY2x1ZGUvZ2RibSB0byBsZXQgb3RoZXIgcGFja2FnZXMgdG8gZmluZAotICAgICMgdGhlc2UgaGVhZGVycwotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vZ2RibQotICAgIGxuIC1zZiAuLi9uZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vbmRibS5oCi0gICAgbG4gLXNmIC4uL2dkYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9nZGJtLmgKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImRpZmZ1dGlscyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICBvZV9ydW5tYWtlIC1DIHRlc3RzIGJ1aWxkdGVzdHMKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWNvbXBhdCBcCi0gICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1jb21wYXQgPSAiJHtsaWJkaXJ9L2xpYmdkYm1fY29tcGF0JHtTT0xJQlN9IFwKLSAgICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmJlMTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCisKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OTI5ZGNkYTJhOGRlM2ZkMjM2N2JkYmY2Njc2OTM3NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDI1MmNiZDdkNzkzZjdiMTJiY2NlYWRkZGE5OGQyNTdjMTRmNGQxODkwZDg1MWMzODZjMzcyMDcwMDBhMjUzIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKKworIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCitFWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKKworIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKKyAgICAjIHRoZXNlIGhlYWRlcnMKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KKyAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAorICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAorICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCisgICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCmluZGV4IDVlNjUwNzUuLmIwMDg3MTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCkBAIC0yNSw4ICsyNSwxMSBAQAogUEFDS0FHRVMgPSsgImxpYmdtcHh4IgogRklMRVNfbGliZ21weHggPSAiJHtsaWJkaXJ9L2xpYmdtcHh4JHtTT0xJQlN9IgogCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgIHNlZCAtaSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgJHtEfSR7aW5jbHVkZWRpcn0vZ21wLmgKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgIHNlZCAtaSBcCisgICAgICAgIC1lICJzfC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9fHxnIiBcCisgICAgICAgIC1lICJzfCR7REVCVUdfUFJFRklYX01BUH18fGciIFwKKyAgICAgICAgICR7Qn0vZ21wLmgKIH0KIAogU1NUQVRFX1NDQU5fRklMRVMgKz0gImdtcC5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjOWMwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2gKQEAgLTAsMCArMSwxMDUgQEAKK0Zyb20gNTlhM2M3NmQ0MDE2ZmZjNjE1ZjFjNDUxODRmNGM2ODIwMDYxZDY5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMToxNDoxMiArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gVXNlIHBrZy1jb25maWcgdG8gZmluZCBwdGggaW5zdGVhZCBvZiBwdGgtY29uZmlnLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAorW25vdCBzdWJtaXR0ZWQgYnV0IHRoZXkndmUgYmVlbiBjbGVhciB0aGV5IGRvbid0IHdhbnQgYSBwa2ctY29uZmlnCitkZXBlbmRlbmN5XQorCitSUCAyMDE0LzUvMjIKKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1JlYmFzZSB0byAyLjEuMjMKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG00L2dudXBnLXB0aC5tNCB8IDUzICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9nbnVwZy1wdGgubTQgYi9tNC9nbnVwZy1wdGgubTQKK2luZGV4IDZkYzllMGUuLjU4OTI1MzEgMTAwNjQ0CistLS0gYS9tNC9nbnVwZy1wdGgubTQKKysrKyBiL200L2dudXBnLXB0aC5tNAorQEAgLTE3LDMzICsxNyw5IEBAIGRubCBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAjIFRha2VuIGFuZCBtb2RpZmllZCBmcm9tIHRoZSBtNCBtYWNyb3Mgd2hpY2ggY29tZSB3aXRoIFB0aC4KKyBBQ19ERUZVTihbR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0tdLAorICAgWworLSAgICBfcHRoX3ZlcnNpb249YCRQVEhfQ09ORklHIC0tdmVyc2lvbiB8IGF3ayAnTlI9PTEge3ByaW50IFskXTN9J2AKKyAgICAgX3JlcV92ZXJzaW9uPSJpZmVsc2UoWyQxXSwsMS4yLjAsJDEpIgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhQVEgsIFtwdGggPj0gJF9yZXFfdmVyc2lvbl0sIFtoYXZlX3B0aD15ZXNdLCBbaGF2ZV9wdGg9bm9dKQorIAorLSAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIFBUSCAtIHZlcnNpb24gPj0gJF9yZXFfdmVyc2lvbikKKy0gICAgZm9yIF92YXIgaW4gX3B0aF92ZXJzaW9uIF9yZXFfdmVyc2lvbjsgZG8KKy0gICAgICAgIGV2YWwgIl92YWw9XCJcJCR7X3Zhcn1cIiIKKy0gICAgICAgIF9tYWpvcj1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1wxLydgCistICAgICAgICBfbWlub3I9YGVjaG8gJF92YWwgfCBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcKFtbYWIuXV1cKVwoW1swLTldXSpcKS9cMi8nYAorLSAgICAgICAgX3J0eXBlPWBlY2hvICRfdmFsIHwgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXChbW2FiLl1dXClcKFtbMC05XV0qXCkvXDMvJ2AKKy0gICAgICAgIF9taWNybz1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1w0LydgCistICAgICAgICBjYXNlICRfcnR5cGUgaW4KKy0gICAgICAgICAgICAiYSIgKSBfcnR5cGU9MCA7OworLSAgICAgICAgICAgICJiIiApIF9ydHlwZT0xIDs7CistICAgICAgICAgICAgIi4iICkgX3J0eXBlPTIgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIF9oZXg9YGVjaG8gZHVtbXkgfCBhd2sgJ3sgcHJpbnRmKCIlZCUwMmQlMWQlMDJkIiwgbWFqb3IsIG1pbm9yLCBydHlwZSwgbWljcm8pOyB9JyBcCistICAgICAgICAgICAgICAibWFqb3I9JF9tYWpvciIgIm1pbm9yPSRfbWlub3IiICJydHlwZT0kX3J0eXBlIiAibWljcm89JF9taWNybyJgCistICAgICAgICBldmFsICIke192YXJ9X2hleD1cIlwkX2hleFwiIgorLSAgICBkb25lCistICAgIGhhdmVfcHRoPW5vCistICAgIGlmIHRlc3QgIi4kX3B0aF92ZXJzaW9uX2hleCIgIT0gLjsgdGhlbgorLSAgICAgICAgaWYgdGVzdCAiLiRfcmVxX3ZlcnNpb25faGV4IiAhPSAuOyB0aGVuCistICAgICAgICAgICAgaWYgdGVzdCAkX3B0aF92ZXJzaW9uX2hleCAtZ2UgJF9yZXFfdmVyc2lvbl9oZXg7IHRoZW4KKy0gICAgICAgICAgICAgICAgaGF2ZV9wdGg9eWVzCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCisgICAgIGlmIHRlc3QgJGhhdmVfcHRoID0geWVzOyB0aGVuCisgICAgICAgIEFDX01TR19SRVNVTFQoeWVzKQorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgUFRIIGluc3RhbGxhdGlvbiBpcyBzYW5lXSkKK0BAIC01MSw5ICsyNyw5IEBAIEFDX0RFRlVOKFtHTlVQR19QVEhfVkVSU0lPTl9DSEVDS10sCisgICAgICAgICAgX2dudXBnX3B0aF9zYXZlX2NmbGFncz0kQ0ZMQUdTCisgICAgICAgICAgX2dudXBnX3B0aF9zYXZlX2xkZmxhZ3M9JExERkxBR1MKKyAgICAgICAgICBfZ251cGdfcHRoX3NhdmVfbGlicz0kTElCUworLSAgICAgICAgIENGTEFHUz0iJENGTEFHUyBgJFBUSF9DT05GSUcgLS1jZmxhZ3NgIgorLSAgICAgICAgIExERkxBR1M9IiRMREZMQUdTIGAkUFRIX0NPTkZJRyAtLWxkZmxhZ3NgIgorLSAgICAgICAgIExJQlM9IiRMSUJTIGAkUFRIX0NPTkZJRyAtLWxpYnMgLS1hbGxgIgorKyAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIX0NGTEFHUyIKKysgICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAkUFRIX0xERkxBR1MiCisrICAgICAgICAgTElCUz0iJExJQlMgJFBUSF9MSUJTIgorICAgICAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxwdGguaD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWyBwdGhfaW5pdCAoKTtdXSldLAorQEAgLTgwLDI2ICs1NiwxMyBAQCBBQ19ERUZVTihbR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0tdLAorICMgUFRIX0NMRkFHUyBhbmQgUFRIX0xJQlMgYXJlIEFTX1NVQlNULgorICMKKyBBQ19ERUZVTihbR05VUEdfUEFUSF9QVEhdLAorLVsgQUNfQVJHX1dJVEgocHRoLXByZWZpeCwKKy0gICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1wdGgtcHJlZml4PVBGWF0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeCB3aGVyZSBHTlUgUHRoIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpXSksCistICAgICBwdGhfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiLCBwdGhfY29uZmlnX3ByZWZpeD0iIikKKy0gIGlmIHRlc3QgeCRwdGhfY29uZmlnX3ByZWZpeCAhPSB4IDsgdGhlbgorLSAgICAgUFRIX0NPTkZJRz0iJHB0aF9jb25maWdfcHJlZml4L2Jpbi9wdGgtY29uZmlnIgorLSAgZmkKKy0gIEFDX1BBVEhfUFJPRyhQVEhfQ09ORklHLCBwdGgtY29uZmlnLCBubykKKytbCisgICB0bXA9aWZlbHNlKFskMV0sICwxLjMuNywkMSkKKy0gIGlmIHRlc3QgIiRQVEhfQ09ORklHIiAhPSAibm8iOyB0aGVuCistICAgIEdOVVBHX1BUSF9WRVJTSU9OX0NIRUNLKCR0bXApCistICAgIGlmIHRlc3QgJGhhdmVfcHRoID0geWVzOyB0aGVuICAgICAgCistICAgICAgIFBUSF9DRkxBR1M9YCRQVEhfQ09ORklHIC0tY2ZsYWdzYAorLSAgICAgICBQVEhfTElCUz1gJFBUSF9DT05GSUcgLS1sZGZsYWdzYAorLSAgICAgICBQVEhfTElCUz0iJFBUSF9MSUJTIGAkUFRIX0NPTkZJRyAtLWxpYnMgLS1hbGxgIgorLSAgICAgICBBQ19ERUZJTkUoSEFWRV9QVEgsIDEsCisrICBHTlVQR19QVEhfVkVSU0lPTl9DSEVDSygkdG1wKQorKyAgaWYgdGVzdCAkaGF2ZV9wdGggPSB5ZXM7IHRoZW4KKysgICAgICBBQ19ERUZJTkUoSEFWRV9QVEgsIDEsCisgICAgICAgICAgICAgICAgIFtEZWZpbmVkIGlmIHRoZSBHTlUgUHRoIGlzIGF2YWlsYWJsZV0pCistICAgIGZpCisgICBmaQorICAgQUNfU1VCU1QoUFRIX0NGTEFHUykKKyAgIEFDX1NVQlNUKFBUSF9MSUJTKQorIF0pCistCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkODZlNWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSA1M2MyYWVjMmUxM2Y0ZTJkMDliZTcxNDg4NjljODYyZjA3ZGZkZDRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMToxNjozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDIvNF0gdXNlIHBrZ2NvbmZpZyBpbnN0ZWFkIG9mIG5wdGggY29uZmlnCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3BlbmVtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CisKK1JlYmFzZSB0byAyLjEuMjMKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG00L25wdGgubTQgfCAzNCArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9ucHRoLm00IGIvbTQvbnB0aC5tNAoraW5kZXggMTdjMjY0NC4uMTVhOTMxYiAxMDA2NDQKKy0tLSBhL200L25wdGgubTQKKysrKyBiL200L25wdGgubTQKK0BAIC0xNywxMCArMTcsMTAgQEAgQUNfREVGVU4oW19BTV9QQVRIX05QVEhfQ09ORklHXSwKKyAgIGlmIHRlc3QgIngkbnB0aF9jb25maWdfcHJlZml4IiAhPSB4IDsgdGhlbgorICAgICAgIE5QVEhfQ09ORklHPSIkbnB0aF9jb25maWdfcHJlZml4L2Jpbi9ucHRoLWNvbmZpZyIKKyAgIGZpCistICBBQ19QQVRIX1BST0coTlBUSF9DT05GSUcsIG5wdGgtY29uZmlnLCBubykKKysgIEFDX1BBVEhfUFJPRyhQS0dDT05GSUcsIHBrZy1jb25maWcsIG5vKQorIAorLSAgaWYgdGVzdCAiJE5QVEhfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorLSAgICBucHRoX3ZlcnNpb249YCROUFRIX0NPTkZJRyAtLXZlcnNpb25gCisrICBpZiB0ZXN0ICIkUEtHQ09ORklHIiAhPSAibm8iIDsgdGhlbgorKyAgICBucHRoX3ZlcnNpb249YCRQS0dDT05GSUcgLS1tb2R2ZXJzaW9uIG5wdGhgCisgICBmaQorICAgbnB0aF92ZXJzaW9uX21ham9yPWBlY2hvICRucHRoX3ZlcnNpb24gfCBcCisgICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKK0BAIC00NSw3ICs0NSw3IEBAIEFDX0RFRlVOKFtBTV9QQVRIX05QVEhdLAorIAorICAgQUNfTVNHX0NIRUNLSU5HKGZvciBOUFRIIC0gdmVyc2lvbiA+PSAkbWluX25wdGhfdmVyc2lvbikKKyAgIG9rPW5vCistICBpZiB0ZXN0ICIkTlBUSF9DT05GSUciICE9ICJubyIgOyB0aGVuCisrICBpZiB0ZXN0ICIkUEtHQ09ORklHIiAhPSAibm8iIDsgdGhlbgorICAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ucHRoX3ZlcnNpb24gfCBcCisgICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCisgICAgIHJlcV9taW5vcj1gZWNobyAkbWluX25wdGhfdmVyc2lvbiB8IFwKK0BAIC02NiwyOCArNjYsOSBAQCBBQ19ERUZVTihbQU1fUEFUSF9OUFRIXSwKKyAgIGZpCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgKCRucHRoX3ZlcnNpb24pXSkKKy0gIGVsc2UKKy0gICAgQUNfTVNHX1JFU1VMVChubykKKy0gIGZpCistICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IE5QVEgsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCistICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgorLSAgICAgaWYgdGVzdCAiJHJlcV9ucHRoX2FwaSIgLWd0IDAgOyB0aGVuCistICAgICAgICB0bXA9YCROUFRIX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKy0gICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorLSAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtOUFRIIEFQSSB2ZXJzaW9uXSkKKy0gICAgICAgICAgIGlmIHRlc3QgIiRyZXFfbnB0aF9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCistICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW29rYXldKQorLSAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICBvaz1ubworLSAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtkb2VzIG5vdCBtYXRjaC4gd2FudD0kcmVxX25wdGhfYXBpIGdvdD0kdG1wXSkKKy0gICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICAgZmkKKy0gIGZpCistICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBOUFRIX0NGTEFHUz1gJE5QVEhfQ09ORklHIC0tY2ZsYWdzYAorLSAgICBOUFRIX0xJQlM9YCROUFRIX0NPTkZJRyAtLWxpYnNgCisrICAgIE5QVEhfQ0ZMQUdTPWAkUEtHQ09ORklHIC0tY2ZsYWdzIG5wdGhgCisrICAgIE5QVEhfTElCUz1gJFBLR0NPTkZJRyAtLWxpYnMgbnB0aGAKKysgICAgQUNfTVNHX1dBUk4oW1tHT1QgSEVSRSAtICROUFRIX0xJQlMgXV0pCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICAgIG5wdGhfY29uZmlnX2hvc3Q9YCROUFRIX0NPTkZJRyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAorICAgICBpZiB0ZXN0IHgiJG5wdGhfY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgorQEAgLTEwMyw2ICs4NCw3IEBAIEFDX0RFRlVOKFtBTV9QQVRIX05QVEhdLAorICAgICAgIGZpCisgICAgIGZpCisgICBlbHNlCisrICAgIEFDX01TR19SRVNVTFQobm8pCisgICAgIE5QVEhfQ0ZMQUdTPSIiCisgICAgIE5QVEhfTElCUz0iIgorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNzk4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gOWMzODU4ZmZkYTYyNDZiZjllMWU2YWVlYjkyMDUzMmE1NmIxOTQwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTE6MTg6MDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGRpcm1uZ3IgdXNlcyBsaWJncGcgZXJyb3IKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CisKK1JlYmFzZSB0byAyLjEuMjMKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgZGlybW5nci9NYWtlZmlsZS5hbSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZGlybW5nci9NYWtlZmlsZS5hbSBiL2Rpcm1uZ3IvTWFrZWZpbGUuYW0KK2luZGV4IGI0MDQxNjUuLmQzZjkxNmUgMTAwNjQ0CistLS0gYS9kaXJtbmdyL01ha2VmaWxlLmFtCisrKysgYi9kaXJtbmdyL01ha2VmaWxlLmFtCitAQCAtODIsNyArODIsOCBAQCBlbmRpZgorIGRpcm1uZ3JfTERBREQgPSAkKGxpYmNvbW1vbnB0aCkgXAorICAgICAgICAgJChETlNMSUJTKSAkKExJQkFTU1VBTl9MSUJTKSBcCisgCSQoTElCR0NSWVBUX0xJQlMpICQoS1NCQV9MSUJTKSAkKE5QVEhfTElCUykgXAorLQkkKE5UQlRMU19MSUJTKSAkKExJQkdOVVRMU19MSUJTKSAkKExJQklOVEwpICQoTElCSUNPTlYpCisrCSQoTlRCVExTX0xJQlMpICQoTElCR05VVExTX0xJQlMpICQoTElCSU5UTCkgJChMSUJJQ09OVikgXAorKwkkKEdQR19FUlJPUl9MSUJTKQorIGlmIFVTRV9MREFQCisgZGlybW5ncl9MREFERCArPSAkKGxkYXBsaWJzKQorIGVuZGlmCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZDg1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA5MTRhZTRhM2Y3NTI5ZmIwNjk0NjdiZjBkZWQ1N2RkMjRlZTJlNzYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDExOjIzOjIyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBhdXRvZ2VuLnNoOiBmaXggZmluZC12ZXJzaW9uIGZvciBiZXRhIGNoZWNraW5nCisKK2ZpbmQtdmVyc2lvbiBhbHdheXMgYXNzdW1lcyB0aGF0IGdudXBnIGlzIGJldGEgaWYgYXV0b2dlbi5zaCBpcyBydW4KK291dCBvZiBnaXQtcmVwby4gVGhpcyBkb2Vzbid0IHdvcmsgZm9yIHVzZXJzIHdob20ganVzdCB0YWtlIHJlbGVhc2UKK3RhcmJhbGwgYW5kIHJlLXJ1biBhdXRvY29uZiBpbiB0aGVpciBsb2NhbCBidWlsZCBkaXIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDIuMS4yMworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYXV0b2dlbi5zaCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9hdXRvZ2VuLnNoIGIvYXV0b2dlbi5zaAoraW5kZXggZTViYTViZi4uMDVlMGUxMSAxMDA3NTUKKy0tLSBhL2F1dG9nZW4uc2gKKysrKyBiL2F1dG9nZW4uc2gKK0BAIC0yNDUsNyArMjQ1LDYgQEAgaWYgWyAiJG15aG9zdCIgPSAiZmluZC12ZXJzaW9uIiBdOyB0aGVuCisgICAgICAgcnZkPSQoKDB4JChlY2hvICR7cmV2fSB8IGRkIGJzPTEgY291bnQ9NCAyPi9kZXYvbnVsbCkpKQorICAgICBlbHNlCisgICAgICAgaW5naXQ9bm8KKy0gICAgICBiZXRhPXllcworICAgICAgIHRtcD0iLXVua25vd24iCisgICAgICAgcmV2PSIwMDAwMDAwIgorICAgICAgIHJ2ZD0iMCIKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL2F1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI0MWJjMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA3MTdmOTk0YmUyNDY2ZDM3OGU2NjExYTQ3MzljNjA2ZGI2ZDBkYzQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTdW4sIDI1IE9jdCAyMDE1IDIyOjQ0OjQ3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF1dG9nZW4uc2g6IGZpeCBmaW5kLXZlcnNpb24gZm9yIGJldGEgY2hlY2tpbmcKLQotZmluZC12ZXJzaW9uIGFsd2F5cyBhc3N1bWVzIHRoYXQgZ251cGcgaXMgYmV0YSBpZiBhdXRvZ2VuLnNoIGlzIHJ1bgotb3V0IG9mIGdpdC1yZXBvLiBUaGlzIGRvZXNuJ3Qgd29yayBmb3IgdXNlcnMgd2hvbSBqdXN0IHRha2UgcmVsZWFzZQotdGFyYmFsbCBhbmQgcmUtcnVuIGF1dG9jb25mIGluIHRoZWlyIGxvY2FsIGJ1aWxkIGRpci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gYXV0b2dlbi5zaCB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRvZ2VuLnNoIGIvYXV0b2dlbi5zaAotaW5kZXggN2VmZmQ1Ni4uZDY3MzQzMiAxMDA3NTUKLS0tLSBhL2F1dG9nZW4uc2gKLSsrKyBiL2F1dG9nZW4uc2gKLUBAIC0yMjgsNyArMjI4LDYgQEAgaWYgWyAiJG15aG9zdCIgPSAiZmluZC12ZXJzaW9uIiBdOyB0aGVuCi0gICAgICAgcnZkPSQoKDB4JChlY2hvICR7cmV2fSB8IGhlYWQgLWMgNCkpKQotICAgICBlbHNlCi0gICAgICAgaW5naXQ9bm8KLS0gICAgICBiZXRhPXllcwotICAgICAgIHRtcD0iLXVua25vd24iCi0gICAgICAgcmV2PSIwMDAwMDAwIgotICAgICAgIHJ2ZD0iMCIKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL2Rpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FmMTk1NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotSW5kZXg6IGdudXBnLTIuMS4wL2Rpcm1uZ3IvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnVwZy0yLjEuMC5vcmlnL2Rpcm1uZ3IvTWFrZWZpbGUuYW0KLSsrKyBnbnVwZy0yLjEuMC9kaXJtbmdyL01ha2VmaWxlLmFtCi1AQCAtNzgsNyArNzgsOCBAQCBlbmRpZgotIGRpcm1uZ3JfTERBREQgPSAkKGxpYmNvbW1vbnRsc25wdGgpICQobGliY29tbW9ucHRoKSBcCi0gICAgICAgICAkKEROU0xJQlMpICQoTElCQVNTVUFOX0xJQlMpIFwKLSAJJChMSUJHQ1JZUFRfTElCUykgJChLU0JBX0xJQlMpICQoTlBUSF9MSUJTKSBcCi0tCSQoTlRCVExTX0xJQlMpICQoTElCR05VVExTX0xJQlMpICQoTElCSU5UTCkgJChMSUJJQ09OVikKLSsJJChOVEJUTFNfTElCUykgJChMSUJHTlVUTFNfTElCUykgJChMSUJJTlRMKSAkKExJQklDT05WKSBcCi0rCSQoR1BHX0VSUk9SX0xJQlMpCi0gaWYgVVNFX0xEQVAKLSBkaXJtbmdyX0xEQUREICs9ICQobGRhcGxpYnMpCi0gZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTU4NjAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9wa2djb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1Vc2UgcGtnLWNvbmZpZyB0byBmaW5kIHB0aCBpbnN0ZWFkIG9mIHB0aC1jb25maWcuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi1bbm90IHN1Ym1pdHRlZCBidXQgdGhleSd2ZSBiZWVuIGNsZWFyIHRoZXkgZG9uJ3Qgd2FudCBhIHBrZy1jb25maWcgZGVwZW5kZW5jeV0KLQotUlAgMjAxNC81LzIyCi0KLUluZGV4OiBnbnVwZy0yLjEuMC9tNC9nbnVwZy1wdGgubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnVwZy0yLjEuMC5vcmlnL200L2dudXBnLXB0aC5tNAotKysrIGdudXBnLTIuMS4wL200L2dudXBnLXB0aC5tNAotQEAgLTE3LDMzICsxNyw5IEBAIGRubCBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQotICMgVGFrZW4gYW5kIG1vZGlmaWVkIGZyb20gdGhlIG00IG1hY3JvcyB3aGljaCBjb21lIHdpdGggUHRoLgotIEFDX0RFRlVOKFtHTlVQR19QVEhfVkVSU0lPTl9DSEVDS10sCi0gICBbCi0tICAgIF9wdGhfdmVyc2lvbj1gJFBUSF9DT05GSUcgLS12ZXJzaW9uIHwgYXdrICdOUj09MSB7cHJpbnQgWyRdM30nYAotICAgICBfcmVxX3ZlcnNpb249ImlmZWxzZShbJDFdLCwxLjIuMCwkMSkiCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFBUSCwgW3B0aCA+PSAkX3JlcV92ZXJzaW9uXSwgW2hhdmVfcHRoPXllc10sIFtoYXZlX3B0aD1ub10pCi0gCi0tICAgIEFDX01TR19DSEVDS0lORyhmb3IgUFRIIC0gdmVyc2lvbiA+PSAkX3JlcV92ZXJzaW9uKQotLSAgICBmb3IgX3ZhciBpbiBfcHRoX3ZlcnNpb24gX3JlcV92ZXJzaW9uOyBkbwotLSAgICAgICAgZXZhbCAiX3ZhbD1cIlwkJHtfdmFyfVwiIgotLSAgICAgICAgX21ham9yPWBlY2hvICRfdmFsIHwgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXChbW2FiLl1dXClcKFtbMC05XV0qXCkvXDEvJ2AKLS0gICAgICAgIF9taW5vcj1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1wyLydgCi0tICAgICAgICBfcnR5cGU9YGVjaG8gJF92YWwgfCBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcKFtbYWIuXV1cKVwoW1swLTldXSpcKS9cMy8nYAotLSAgICAgICAgX21pY3JvPWBlY2hvICRfdmFsIHwgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXChbW2FiLl1dXClcKFtbMC05XV0qXCkvXDQvJ2AKLS0gICAgICAgIGNhc2UgJF9ydHlwZSBpbgotLSAgICAgICAgICAgICJhIiApIF9ydHlwZT0wIDs7Ci0tICAgICAgICAgICAgImIiICkgX3J0eXBlPTEgOzsKLS0gICAgICAgICAgICAiLiIgKSBfcnR5cGU9MiA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgX2hleD1gZWNobyBkdW1teSB8IGF3ayAneyBwcmludGYoIiVkJTAyZCUxZCUwMmQiLCBtYWpvciwgbWlub3IsIHJ0eXBlLCBtaWNybyk7IH0nIFwKLS0gICAgICAgICAgICAgICJtYWpvcj0kX21ham9yIiAibWlub3I9JF9taW5vciIgInJ0eXBlPSRfcnR5cGUiICJtaWNybz0kX21pY3JvImAKLS0gICAgICAgIGV2YWwgIiR7X3Zhcn1faGV4PVwiXCRfaGV4XCIiCi0tICAgIGRvbmUKLS0gICAgaGF2ZV9wdGg9bm8KLS0gICAgaWYgdGVzdCAiLiRfcHRoX3ZlcnNpb25faGV4IiAhPSAuOyB0aGVuCi0tICAgICAgICBpZiB0ZXN0ICIuJF9yZXFfdmVyc2lvbl9oZXgiICE9IC47IHRoZW4KLS0gICAgICAgICAgICBpZiB0ZXN0ICRfcHRoX3ZlcnNpb25faGV4IC1nZSAkX3JlcV92ZXJzaW9uX2hleDsgdGhlbgotLSAgICAgICAgICAgICAgICBoYXZlX3B0aD15ZXMKLS0gICAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgZmkKLSAgICAgaWYgdGVzdCAkaGF2ZV9wdGggPSB5ZXM7IHRoZW4KLSAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBQVEggaW5zdGFsbGF0aW9uIGlzIHNhbmVdKQotQEAgLTUxLDkgKzI3LDkgQEAgQUNfREVGVU4oW0dOVVBHX1BUSF9WRVJTSU9OX0NIRUNLXSwKLSAgICAgICAgICBfZ251cGdfcHRoX3NhdmVfY2ZsYWdzPSRDRkxBR1MKLSAgICAgICAgICBfZ251cGdfcHRoX3NhdmVfbGRmbGFncz0kTERGTEFHUwotICAgICAgICAgIF9nbnVwZ19wdGhfc2F2ZV9saWJzPSRMSUJTCi0tICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIGAkUFRIX0NPTkZJRyAtLWNmbGFnc2AiCi0tICAgICAgICAgTERGTEFHUz0iJExERkxBR1MgYCRQVEhfQ09ORklHIC0tbGRmbGFnc2AiCi0tICAgICAgICAgTElCUz0iJExJQlMgYCRQVEhfQ09ORklHIC0tbGlicyAtLWFsbGAiCi0rICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRQVEhfQ0ZMQUdTIgotKyAgICAgICAgIExERkxBR1M9IiRMREZMQUdTICRQVEhfTERGTEFHUyIKLSsgICAgICAgICBMSUJTPSIkTElCUyAkUFRIX0xJQlMiCi0gICAgICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPHB0aC5oPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbIHB0aF9pbml0ICgpO11dKV0sCi1AQCAtODAsMjYgKzU2LDEzIEBAIEFDX0RFRlVOKFtHTlVQR19QVEhfVkVSU0lPTl9DSEVDS10sCi0gIyBQVEhfQ0xGQUdTIGFuZCBQVEhfTElCUyBhcmUgQVNfU1VCU1QuCi0gIwotIEFDX0RFRlVOKFtHTlVQR19QQVRIX1BUSF0sCi0tWyBBQ19BUkdfV0lUSChwdGgtcHJlZml4LAotLSAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS13aXRoLXB0aC1wcmVmaXg9UEZYXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIEdOVSBQdGggaXMgaW5zdGFsbGVkIChvcHRpb25hbCldKSwKLS0gICAgIHB0aF9jb25maWdfcHJlZml4PSIkd2l0aHZhbCIsIHB0aF9jb25maWdfcHJlZml4PSIiKQotLSAgaWYgdGVzdCB4JHB0aF9jb25maWdfcHJlZml4ICE9IHggOyB0aGVuCi0tICAgICBQVEhfQ09ORklHPSIkcHRoX2NvbmZpZ19wcmVmaXgvYmluL3B0aC1jb25maWciCi0tICBmaQotLSAgQUNfUEFUSF9QUk9HKFBUSF9DT05GSUcsIHB0aC1jb25maWcsIG5vKQotK1sKLSAgIHRtcD1pZmVsc2UoWyQxXSwgLDEuMy43LCQxKQotLSAgaWYgdGVzdCAiJFBUSF9DT05GSUciICE9ICJubyI7IHRoZW4KLS0gICAgR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0soJHRtcCkKLS0gICAgaWYgdGVzdCAkaGF2ZV9wdGggPSB5ZXM7IHRoZW4gICAgICAKLS0gICAgICAgUFRIX0NGTEFHUz1gJFBUSF9DT05GSUcgLS1jZmxhZ3NgCi0tICAgICAgIFBUSF9MSUJTPWAkUFRIX0NPTkZJRyAtLWxkZmxhZ3NgCi0tICAgICAgIFBUSF9MSUJTPSIkUFRIX0xJQlMgYCRQVEhfQ09ORklHIC0tbGlicyAtLWFsbGAiCi0tICAgICAgIEFDX0RFRklORShIQVZFX1BUSCwgMSwKLSsgIEdOVVBHX1BUSF9WRVJTSU9OX0NIRUNLKCR0bXApCi0rICBpZiB0ZXN0ICRoYXZlX3B0aCA9IHllczsgdGhlbgotKyAgICAgIEFDX0RFRklORShIQVZFX1BUSCwgMSwKLSAgICAgICAgICAgICAgICAgW0RlZmluZWQgaWYgdGhlIEdOVSBQdGggaXMgYXZhaWxhYmxlXSkKLS0gICAgZmkKLSAgIGZpCi0gICBBQ19TVUJTVChQVEhfQ0ZMQUdTKQotICAgQUNfU1VCU1QoUFRIX0xJQlMpCi0gXSkKLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy91c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmRiZjFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy91c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29wZW5lbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotCi0KLUluZGV4OiBnbnVwZy0yLjEuMC9tNC9ucHRoLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251cGctMi4xLjAub3JpZy9tNC9ucHRoLm00Ci0rKysgZ251cGctMi4xLjAvbTQvbnB0aC5tNAotQEAgLTE3LDEwICsxNywxMCBAQCBBQ19ERUZVTihbX0FNX1BBVEhfTlBUSF9DT05GSUddLAotICAgaWYgdGVzdCAieCRucHRoX2NvbmZpZ19wcmVmaXgiICE9IHggOyB0aGVuCi0gICAgICAgTlBUSF9DT05GSUc9IiRucHRoX2NvbmZpZ19wcmVmaXgvYmluL25wdGgtY29uZmlnIgotICAgZmkKLS0gIEFDX1BBVEhfUFJPRyhOUFRIX0NPTkZJRywgbnB0aC1jb25maWcsIG5vKQotKyAgQUNfUEFUSF9QUk9HKFBLR0NPTkZJRywgcGtnLWNvbmZpZywgbm8pCi0gCi0tICBpZiB0ZXN0ICIkTlBUSF9DT05GSUciICE9ICJubyIgOyB0aGVuCi0tICAgIG5wdGhfdmVyc2lvbj1gJE5QVEhfQ09ORklHIC0tdmVyc2lvbmAKLSsgIGlmIHRlc3QgIiRQS0dDT05GSUciICE9ICJubyIgOyB0aGVuCi0rICAgIG5wdGhfdmVyc2lvbj1gJFBLR0NPTkZJRyAtLW1vZHZlcnNpb24gbnB0aGAKLSAgIGZpCi0gICBucHRoX3ZlcnNpb25fbWFqb3I9YGVjaG8gJG5wdGhfdmVyc2lvbiB8IFwKLSAgICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMS8nYAotQEAgLTQ1LDcgKzQ1LDcgQEAgQUNfREVGVU4oW0FNX1BBVEhfTlBUSF0sCi0gCi0gICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIE5QVEggLSB2ZXJzaW9uID49ICRtaW5fbnB0aF92ZXJzaW9uKQotICAgb2s9bm8KLS0gIGlmIHRlc3QgIiROUFRIX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLSsgIGlmIHRlc3QgIiRQS0dDT05GSUciICE9ICJubyIgOyB0aGVuCi0gICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX25wdGhfdmVyc2lvbiB8IFwKLSAgICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKLSAgICAgcmVxX21pbm9yPWBlY2hvICRtaW5fbnB0aF92ZXJzaW9uIHwgXAotQEAgLTY2LDI4ICs2Niw5IEBAIEFDX0RFRlVOKFtBTV9QQVRIX05QVEhdLAotICAgZmkKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0gICAgIEFDX01TR19SRVNVTFQoW3llcyAoJG5wdGhfdmVyc2lvbildKQotLSAgZWxzZQotLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotLSAgZmkKLS0gIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgTlBUSCwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKLS0gICAgICMgQVBJIGlzIGNvbXBhdGlibGUuCi0tICAgICBpZiB0ZXN0ICIkcmVxX25wdGhfYXBpIiAtZ3QgMCA7IHRoZW4KLS0gICAgICAgIHRtcD1gJE5QVEhfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAotLSAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCi0tICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW05QVEggQVBJIHZlcnNpb25dKQotLSAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ucHRoX2FwaSIgLWVxICIkdG1wIiA7IHRoZW4KLS0gICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbb2theV0pCi0tICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgIG9rPW5vCi0tICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW2RvZXMgbm90IG1hdGNoLiB3YW50PSRyZXFfbnB0aF9hcGkgZ290PSR0bXBdKQotLSAgICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0tICAgICBmaQotLSAgZmkKLS0gIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgIE5QVEhfQ0ZMQUdTPWAkTlBUSF9DT05GSUcgLS1jZmxhZ3NgCi0tICAgIE5QVEhfTElCUz1gJE5QVEhfQ09ORklHIC0tbGlic2AKLSsgICAgTlBUSF9DRkxBR1M9YCRQS0dDT05GSUcgLS1jZmxhZ3MgbnB0aGAKLSsgICAgTlBUSF9MSUJTPWAkUEtHQ09ORklHIC0tbGlicyBucHRoYAotKyAgICBBQ19NU0dfV0FSTihbW0dPVCBIRVJFIC0gJE5QVEhfTElCUyBdXSkKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLSAgICAgbnB0aF9jb25maWdfaG9zdD1gJE5QVEhfQ09ORklHIC0taG9zdCAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vbmVgCi0gICAgIGlmIHRlc3QgeCIkbnB0aF9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCi1AQCAtMTAzLDYgKzg0LDcgQEAgQUNfREVGVU4oW0FNX1BBVEhfTlBUSF0sCi0gICAgICAgZmkKLSAgICAgZmkKLSAgIGVsc2UKLSsgICAgQUNfTVNHX1JFU1VMVChubykKLSAgICAgTlBUSF9DRkxBR1M9IiIKLSAgICAgTlBUSF9MSUJTPSIiCi0gICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4xLjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMS4xOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA2MTFhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4xLjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgotCi1ERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzY3ZjkwOGIwYjM1YzdlYmM2MjE0NGYzNjI3NTdlMWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA0YzZmYWI3ZTU1NjJjZTRiOTE1YjIyMDIwZTM0ZDRjMWEyNTY4NDc2OTBjZjE0OTg0MjI2NGZjN2NlZjk5NCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKLQkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKLQkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgIC0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLVJERVBFTkRTXyR7UE59ID0gImdudXRscyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNzZkZGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjAuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YTJiNmJmMmNiMzhlZTUyNjE5ZTYwZjMwYTFmYzcyNTciCisKK0RFUEVORFMgPSAibnB0aCBsaWJhc3N1YW4gbGlia3NiYSB6bGliIGJ6aXAyIHJlYWRsaW5lIGxpYmdjcnlwdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZworCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4OWYxNjk0OWZhZTJkMDAzZDM4N2Y0OWU5ZGE0Yjc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0NTE0YTBiZTBmN2ExZmYyNjMxOTMzMzAwMTllYjRiNTNjODJmMGY1ZTIzMGFmM2MxNGRmMzcxMjcxYTQ1ZTYiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCBcCisJCS0tZGlzYWJsZS1jY2lkLWRyaXZlciBcCisJCS0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLWJ6aXAyPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS1lbmFibGUtZ3BnLWlzLWdwZzIgXAorICAgICAgICAgICAgICAgIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQva3NiYS5tNAorCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCisJbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgorfQorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKaW5kZXggMWVjYWQxZi4uMjliNWRkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYwpAQCAtNDYsNyArNDYsNiBAQAogIgogCiBMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sYXJncCIKLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHVhcmdwIC1wdGhyZWFkIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAlmb3IgZGlyIGluIC4gbGliOyBkbwpAQCAtNTksNSArNTgsMyBAQAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ251dGxzLWNsaS1kZWJ1ZyIKIEZJTEVTXyR7UE59LW9wZW5zc2wgPSAiJHtsaWJkaXJ9L2xpYmdudXRscy1vcGVuc3NsLnNvLioiCiBGSUxFU18ke1BOfS14eCA9ICIke2xpYmRpcn0vbGliZ251dGxzeHguc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvY29ycmVjdF9ycGxfZ2V0dGltZW9mZGF5X3NpZ25hdHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL2NvcnJlY3RfcnBsX2dldHRpbWVvZmRheV9zaWduYXR1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YjAyM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvY29ycmVjdF9ycGxfZ2V0dGltZW9mZGF5X3NpZ25hdHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gODFiMGYwNGMxNGY2NzNiOTk3NzhkMmU3ZDhlODU0NjFlMGJmMjAxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZhbGVudGluIFBvcGEgPHZhbGVudGluLnBvcGFAaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyNSBBcHIgMjAxNCAxMzo1ODo1NSArMDMwMAotU3ViamVjdDogW1BBVENIIDEvM10gQ29ycmVjdCBycGxfZ2V0dGltZW9mZGF5IHNpZ25hdHVyZQotCi1DdXJyZW50bHkgd2UgZmFpbCBvbiB1Y2xpYmMgbGlrZSBiZWxvdwotCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtdWNsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2luY2x1ZGUvc3lzL3Byb2Nmcy5oOjMyOjAsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtdWNsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0Lmg6MjYsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtdWNsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2luY2x1ZGUvc2lnbmFsLmg6MzkyLAotfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2wvc2lnbmFsLmg6NTIsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi9nbC9zeXMvc2VsZWN0Lmg6NTgsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtdWNsaWJjL3N5c3Jvb3RzL3FlbXVhcm0vdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmg6MjIwLAotfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2wvc3lzL3R5cGVzLmg6MjgsCi18ICAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi9saWIvaW5jbHVkZXMvZ251dGxzL2dudXRscy5oOjQ2LAotfCAgICAgICAgICAgICAgICAgIGZyb20gZXgtY3h4LmNwcDozOgotfCAuLi8uLi9nbC9zeXMvdGltZS5oOjM5Njo2NjogZXJyb3I6IGNvbmZsaWN0aW5nIGRlY2xhcmF0aW9uICd2b2lkKiByZXN0cmljdCcKLXwgLi4vLi4vZ2wvc3lzL3RpbWUuaDozOTY6NTA6IGVycm9yOiAncmVzdHJpY3QnIGhhcyBhIHByZXZpb3VzIGRlY2xhcmF0aW9uIGFzICd0aW1ldmFsKiByZXN0cmljdCcKLXwgbWFrZVs0XTogKioqIFtleC1jeHgub10gRXJyb3IgMQotfCBtYWtlWzRdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgotCi1HQ0MgZGV0ZWN0cyB0aGF0IHdlIGNhbGwgJ3Jlc3RyaWN0JyBhcyBwYXJhbSBuYW1lIGluIGZ1bmN0aW9uCi1zaWduYXR1cmVzIGFuZCBjb21wbGFpbnMgc2luY2UgYm90aCBwYXJhbXMgYXJlIGNhbGxlZCAncmVzdHJpY3QnCi10aGVyZWZvcmUgd2UgdXNlIF9fcmVzdHJpY3QgdG8gZGVub3RlIHRoZSBDOTkga2V5d29yawotCi1UaGlzIG9ubHkgaGFwcGVucyBvZiB1Y2xpYmMgc2luY2UgdGhpcyBjb2RlIGlzIG5vdCBleGNlcmNpc2VkIHdpdGgKLWVnbGliYyBvdGhlcndpc2Ugd2Ugd2lsbCBoYXZlIHNhbWUgaXNzdWUgdGhlcmUgdG9vCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0KLSBnbC9zeXNfdGltZS5pbi5oIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nbC9zeXNfdGltZS5pbi5oIGIvZ2wvc3lzX3RpbWUuaW4uaAotaW5kZXggNWE4Y2FmMy4uMmRjNTcxOCAxMDA2NDQKLS0tLSBhL2dsL3N5c190aW1lLmluLmgKLSsrKyBiL2dsL3N5c190aW1lLmluLmgKLUBAIC05MywyMCArOTMsMjAgQEAgc3RydWN0IHRpbWV2YWwKLSAjICAgZGVmaW5lIGdldHRpbWVvZmRheSBycGxfZ2V0dGltZW9mZGF5Ci0gIyAgZW5kaWYKLSBfR0xfRlVOQ0RFQ0xfUlBMIChnZXR0aW1lb2ZkYXksIGludCwKLS0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKLSsgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLSBfR0xfQ1hYQUxJQVNfUlBMIChnZXR0aW1lb2ZkYXksIGludCwKLS0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkpOwotKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOwotICMgZWxzZQotICMgIGlmICFASEFWRV9HRVRUSU1FT0ZEQVlACi0gX0dMX0ZVTkNERUNMX1NZUyAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpCi0rICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KQotICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7Ci0gIyAgZW5kaWYKLSAvKiBOZWVkIHRvIGNhc3QsIGJlY2F1c2Ugb24gZ2xpYmMgc3lzdGVtcywgYnkgZGVmYXVsdCwgdGhlIHNlY29uZCBhcmd1bWVudCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV6b25lICouICAqLwotIF9HTF9DWFhBTElBU19TWVNfQ0FTVCAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkpOwotKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7Ci0gIyBlbmRpZgotIF9HTF9DWFhBTElBU1dBUk4gKGdldHRpbWVvZmRheSk7Ci0gIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaAppbmRleCAwZTFiN2M4Li5hZTE0MWE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaApAQCAtMSw3ICsxLDkgQEAKLUZyb20gY2VlODBhZjFmZTkzZjViNzY3NjVhZmVlYmZjYzNiOTAyNzY4ZjVkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI2IE1heSAyMDE1IDIxOjQxOjI0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzZSBwa2ctY29uZmlnIHRvIGxvY2F0ZSB6bGliCitGcm9tIDE4MDgxMDY4YTk3YzAwMDE1YWFiYzVmYTMyMTY2NDk1MTQ1OGVhMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorRGF0ZTogRnJpLCA5IEp1biAyMDE3IDE1OjIwOjMxICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZyb20gY2VlODBhZjFmZTkzZjViNzY3NjVhZmVlYmZjYzNiOTAyNzY4ZjVkNiBNb24gU2VwIDE3CisgMDA6MDA6MDAgMjAwMSBGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPiBEYXRlOiBUdWUsIDI2IE1heQorIDIwMTUgMjE6NDE6MjQgLTA3MDAgU3ViamVjdDogW1BBVENIXSB1c2UgcGtnLWNvbmZpZyB0byBsb2NhdGUgemxpYgogCiBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FuIHNvbWV0aW1lcyBmaW5kIGhvc3QgbGlicyBhbmQgaXMgdGhlcmVmb3JlIG5vdAogcm9idXN0IHdoZW4gY3Jvc3MtY29tcGlsaW5nLiBSZW1vdmUgaXQgZm9yIHpsaWIgYW5kIHVzZSBQS0dfQ0hFQ0tfTU9EVUxFUwpAQCAtMTgsMTUgKzIwLDE5IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CisKK1JlYmFzZSBvbiBnbnV0bHMgMy41LjEzCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CiAtLS0KLSBjb25maWd1cmUuYWMgfCAyNCArKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmFjIHwgMjUgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxYjU2MWQ1Li4wYzc4N2RjIDEwMDY0NAoraW5kZXggYzY1MjY4ZS4uZjZhMThhYSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTA4LDI1ICs1MDgsMjEgQEAgQUNfQVJHX1dJVEgoemxpYiwgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC16bGliXSwKK0BAIC03MzUsMjggKzczNSwyMSBAQCBBQ19BUkdfV0lUSCh6bGliLCBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LXpsaWJdLAogIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBpbmNsdWRlIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydF0pCiAgaWYgdGVzdCB4JGFjX3psaWIgIT0geG5vOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoeWVzKQpAQCAtNDksNiArNTUsNyBAQAogLSAgICBlbHNlCiAtICAgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IiRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSwgemxpYiIKIC0gICAgZmkKKy0gICAgTElCWl9QQz0iIgogKyAgUEtHX0NIRUNLX01PRFVMRVMoWkxJQiwgemxpYikKICsgIEhBVkVfTElCWj15ZXMKICsgIEFDX0RFRklORShbSEFWRV9MSUJaXSwgWzFdLCBbemxpYiBpcyBlbmFibGVkXSkKQEAgLTU3LDExICs2NCwxMiBAQAogKyAgQUNfU1VCU1QoTFRMSUJaKQogKyAgaWYgdGVzdCAieCRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSIgPSB4OyB0aGVuCiArICAgIEdOVVRMU19SRVFVSVJFU19QUklWQVRFPSJSZXF1aXJlcy5wcml2YXRlOiB6bGliIgotKyAgZWxzZQorICAgZWxzZQorLSAgICBMSUJaX1BDPSRMSUJaCiArICAgIEdOVVRMU19SRVFVSVJFU19QUklWQVRFPSIkR05VVExTX1JFUVVJUkVTX1BSSVZBVEUsIHpsaWIiCiAgICBmaQogIGZpCi0gQUNfU1VCU1QoR05VVExTX1JFUVVJUkVTX1BSSVZBVEUpCisgQUNfU1VCU1QoTElCWl9QQykKIC0tIAogMS45LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZDdkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBnbnV0bHMuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmQ0MWFkODY1NzI5MzNjMjM3OWI0Y2MzMjFhMDk1OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3OWY1NDgwYWQxOThkYWQ1YmM3OGUwNzVmNGE0MGM0YTMxNWExYjIwNzI2NjY5MTlkMmQwNWEwOGFlYzEzMDk2IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Zjg0ZGJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBnbnV0bHMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb3JyZWN0X3JwbF9nZXR0aW1lb2ZkYXlfc2lnbmF0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwYWIyNWViNmExNTA5MzQ1ZGQwODViYzIxYTM4Nzk1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmIxMGYwYzRlZjE4ZjRlNjRhZDhjZWY1ZGJhZjE0YmU3MzJmNTA5NWE0MWNmMzY2YjRlY2I0MDUwMzgyOTUxIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYzdmMTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBBU04uMSBhbmQgREVSIG1hbmlwdWxhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0YXNuMS8iCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2VuZGxpbmU9ODttZDU9YzM4MDNhM2U4Y2E1YWI1ZWIxZTU5MTJmYWE0MDUzNTEiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ0YXNuMS9saWJ0YXNuMS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGRpbnQubTQtcmVpbnRyb2R1Y2UtR05VTElCX09WRVJSSURFU19XSU5UX1QtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA3OTAucGF0Y2ggXAotICAgICAgICAgICAiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjRmYWZmZGY2Mzk2OWQwZTRlNmRmNDNiOTY3OWU4ZTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjgxYTRkOWEwZDI1OWYyMTI1NzEzZjJlNTc2NmM1ODA5ZjE1MWIzYTEzOTJmZDkxMzkwZjc4MGI0YjhmNWEwMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWcgbGliX3BhY2thZ2UgZ3RrLWRvYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTc1NzFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtlbmRsaW5lPTg7bWQ1PWMzODAzYTNlOGNhNWFiNWViMWU1OTEyZmFhNDA1MzUxIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3RkaW50Lm00LXJlaW50cm9kdWNlLUdOVUxJQl9PVkVSUklERVNfV0lOVF9ULWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNzkwLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjVjNzI0YmQxZjczYWFmNGEzMTE4MzNlMWNkMjk3YjIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3NTNkYTJlNjIxMjU3ZjMzZjViMDUxY2MxMTRkNDE3ZTUyMDZhMDgxOGZlMGIxZWNmZDYxNTNmNzA5MzQ3NTMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjY1NWZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSA0ZDcxNGMwOTdlNDk3YjYzZDJlOGIyMmE4MzRjNjcxMDQ1ZTIxNWU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDkgTWFyIDIwMTcgMjE6MzQ6NTUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ29ycmVjdGx5IGluc3RhbGwgcHl0aG9uIG1vZHVsZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQotaW5kZXggZTMyZmQxMi4uNWVjZjZmYiAxMDA2NDQKLS0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCi0rKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTEwMiw2ICsxMDIsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6Ci0gCWZvciBQWVRIT04gaW4gJChQWVRIT05TKTsgZG8gXAotIAkgICQkUFlUSE9OIHNldHVwLnB5IGluc3RhbGwgXAotIAkgIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgXAotKyAgICAgICAgICAtLWluc3RhbGwtbGliPSQoREVTVERJUikke3B5dGhvbmRpcn0gXAotIAkgIC0tcmVjb3JkIGZpbGVzLnR4dCBcCi0gCSAgLS12ZXJib3NlIDsgXAotIAkgIGNhdCBmaWxlcy50eHQgPj4gaW5zdGFsbF9maWxlcy50eHQgOyBcCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkNTViOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA4YzMxN2Y2MTg2YmQzYTlhMWM4MGI0ZDFlODcyYjNkYjk1OTM0YmI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE2OjQwOjI3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdwZ21lLWNvbmZpZzogc2tpcCBhbGwgL2xpYiogb3IgL3Vzci9saWIqIGRpcmVjdG9yaWVzIGluCi0gb3V0cHV0Ci0KLVRoZSBsb2dpYyB3YXMgbm90IHdvcmtpbmcgaW4gbXVsdGlsaWIgc2V0dXBzIHdoaWNoIHVzZSBvdGhlcgotZGlyZWN0b3J5IG5hbWVzIHRoYW4gcGxhaW4gL2xpYiBvciAvdXNyL2xpYi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvZ3BnbWUtY29uZmlnLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLWNvbmZpZy5pbiBiL3NyYy9ncGdtZS1jb25maWcuaW4KLWluZGV4IGE0ZDE1MmUuLjgzNDI4NjUgMTAwNjQ0Ci0tLS0gYS9zcmMvZ3BnbWUtY29uZmlnLmluCi0rKysgYi9zcmMvZ3BnbWUtY29uZmlnLmluCi1AQCAtMTU0LDcgKzE1NCw3IEBAIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCi0gICAgICAgICAgICAgZm9yIGkgaW4gJGxpYnMgJHRtcF9sICRhc3N1YW5fbGlicyAkZ3BnX2Vycm9yX2xpYnMgJHRtcF94OyBkbwotICAgICAgICAgICAgICAgc2tpcD1ubwotICAgICAgICAgICAgICAgY2FzZSAkaSBpbgotLSAgICAgICAgICAgICAgICAgIC1ML3Vzci9saWJ8LUwvbGliKQotKyAgICAgICAgICAgICAgICAgIC1ML3Vzci9saWIqfC1ML2xpYiopCi0gICAgICAgICAgICAgICAgICAgICAgIHNraXA9eWVzCi0gICAgICAgICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAgICAgICAgLUwqfC1sKikKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGE0M2VlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzAzIEBACitGcm9tIDhhZTE0OTAzNWM5N2QyN2NkMmM2MjQ3MDRkMTY1MTgwNmM1MzU3N2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDA6MDggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIHBrZ2NvbmZpZworCitVcGRhdGUgZ3BnbWUgdG8gdXNlIHBrZ2NvbmZpZyBpbnN0ZWFkIG9mIC1jb25maWcgZmlsZXMgc2luY2UgaXRzCitzaW1wbGVyIGFuZCBsZXNzIGVycm9yIHByb25lIHdoZW4gY3Jvc3MgY29tcGlsaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbVXBzdHJlYW0gbm90IGludGVyZXN0ZWQgaW4gcGtnLWNvbmZpZyBzdXBwb3J0XQorUlAgMjAxNS80LzE3CisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitSZWJhc2UgdG8gMS45LjAKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgfCAgIDEgKworIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgIHwgICA0ICstCisgc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4gfCAgMTUgKysrKysrKworIHNyYy9ncGdtZS5tNCAgICAgICAgICAgIHwgMTE0ICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9ncGdtZS5wYy5pbiAgICAgICAgIHwgIDE1ICsrKysrKysKKyA1IGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLnBjLmluCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDBkYWM2Y2UuLjZhOWU1MDcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTg2Niw2ICs4NjYsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCisgICAgICAgICAgICAgICAgIHNyYy92ZXJzaW9uaW5mby5yYworICAgICAgICAgICAgICAgICBzcmMvZ3BnbWUuaCkKKyBBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLWNvbmZpZywgY2htb2QgK3ggc3JjL2dwZ21lLWNvbmZpZykKKytBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLnBjIHNyYy9ncGdtZS1wdGhyZWFkLnBjKQorIEFDX0NPTkZJR19GSUxFUyhsYW5nL2NwcC9NYWtlZmlsZSBsYW5nL2NwcC9zcmMvTWFrZWZpbGUpCisgQUNfQ09ORklHX0ZJTEVTKGxhbmcvY3BwL3NyYy9HcGdtZXBwQ29uZmlnLXczMi5jbWFrZS5pbikKKyBBQ19DT05GSUdfRklMRVMobGFuZy9jcHAvc3JjL0dwZ21lcHBDb25maWcuY21ha2UuaW4pCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCBjZTZmMWQ0Li41ZjM4ZmVlIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0xOSwxMiArMTksMTQgQEAKKyAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4KKyAKKyBFWFRSQV9ESVNUID0gZ3BnbWUtY29uZmlnLmluIGdwZ21lLm00IGxpYmdwZ21lLnZlcnMgQ2hhbmdlTG9nLTIwMTEgXAorLQkgICAgIGdwZ21lLmguaW4gdmVyc2lvbmluZm8ucmMuaW4gZ3BnbWUuZGVmCisrCSAgICAgZ3BnbWUuaC5pbiB2ZXJzaW9uaW5mby5yYy5pbiBncGdtZS5kZWYgZ3BnbWUucGMuaW4gZ3BnbWUtcHRocmVhZC5wYy5pbgorIAorIGJpbl9TQ1JJUFRTID0gZ3BnbWUtY29uZmlnCisgbTRkYXRhZGlyID0gJChkYXRhZGlyKS9hY2xvY2FsCisgbTRkYXRhX0RBVEEgPSBncGdtZS5tNAorIG5vZGlzdF9pbmNsdWRlX0hFQURFUlMgPSBncGdtZS5oCisrcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZworK3BrZ2NvbmZpZ19EQVRBID0gZ3BnbWUucGMgZ3BnbWUtcHRocmVhZC5wYworIAorIGJpbl9QUk9HUkFNUyA9IGdwZ21lLXRvb2wKKyAKK2RpZmYgLS1naXQgYS9zcmMvZ3BnbWUtcHRocmVhZC5wYy5pbiBiL3NyYy9ncGdtZS1wdGhyZWFkLnBjLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMDc0YmJmNgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KK0BAIC0wLDAgKzEsMTUgQEAKKytwcmVmaXg9QHByZWZpeEAKKytleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACisrbGliZGlyPUBsaWJkaXJACisraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKysKKysjIEFQSSBpbmZvCisrYXBpX3ZlcnNpb249QEdQR01FX0NPTkZJR19BUElfVkVSU0lPTkAKKytob3N0PUBHUEdNRV9DT05GSUdfSE9TVEAKKysKKytOYW1lOiBncGdtZQorK0Rlc2NyaXB0aW9uOiBHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIEMgbGFuZ3VhZ2UgbGlicmFyeSB0aGF0IGFsbG93cyB0byBhZGRzdXBwb3J0IGZvciBjcnlwdG9ncmFwaHkgdG8gYSBwcm9ncmFtIChkZXByZWNhdGVkKQorK1ZlcnNpb246IEBWRVJTSU9OQAorK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3BnbWUgLWxwdGhyZWFkCisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KKytSZXF1aXJlczogbGliYXNzdWFuIGdwZy1lcnJvcgorZGlmZiAtLWdpdCBhL3NyYy9ncGdtZS5tNCBiL3NyYy9ncGdtZS5tNAoraW5kZXggNmMyYmU0NC4uZDhhNzVjYiAxMDA2NDQKKy0tLSBhL3NyYy9ncGdtZS5tNAorKysrIGIvc3JjL2dwZ21lLm00CitAQCAtNzksNyArNzksNyBAQCBkbmwgY29uZmlnIHNjcmlwdCBkb2VzIG5vdCBtYXRjaCB0aGUgaG9zdCBzcGVjaWZpY2F0aW9uIHRoZSBzY3JpcHQKKyBkbmwgaXMgYWRkZWQgdG8gdGhlIGdwZ19jb25maWdfc2NyaXB0X3dhcm4gdmFyaWFibGUuCisgZG5sCisgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAorLVsgQUNfUkVRVUlSRShbX0FNX1BBVEhfR1BHTUVfQ09ORklHXSlkbmwKKytbCisgICB0bXA9aWZlbHNlKFskMV0sICwxOjAuNC4yLCQxKQorICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgcmVxX2dwZ21lX2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKK0BAIC04OSwzNiArODksMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAorICAgICAgbWluX2dwZ21lX3ZlcnNpb249IiR0bXAiCisgICBmaQorIAorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBHUEdNRSAtIHZlcnNpb24gPj0gJG1pbl9ncGdtZV92ZXJzaW9uKQorLSAgb2s9bm8KKy0gIGlmIHRlc3QgIiRHUEdNRV9DT05GSUciICE9ICJubyIgOyB0aGVuCistICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKKy0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAorLSAgICByZXFfbWljcm89YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCistICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICBvaz15ZXMKKy0gICAgZWxzZQorLSAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoR1BHTUUsIFtncGdtZSA+PSAkbWluX2dwZ21lX3ZlcnNpb25dLCBbb2s9eWVzXSwgW29rPW5vXSkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgR1BHTUUsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCisgICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgorICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1ndCAwIDsgdGhlbgorLSAgICAgICAgdG1wPWAkR1BHTUVfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAorKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGdwZ21lIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCisgICAgICAgICAgICAgIG9rPW5vCitAQCAtMTI3LDE5ICsxMDMsMTEgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAorICAgICAgZmkKKyAgIGZpCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBHUEdNRV9DRkxBR1M9YCRHUEdNRV9DT05GSUcgLS1jZmxhZ3NgCistICAgIEdQR01FX0xJQlM9YCRHUEdNRV9DT05GSUcgLS1saWJzYAorLSAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKKyAgICAgX0FNX1BBVEhfR1BHTUVfQ09ORklHX0hPU1RfQ0hFQ0sKKyAgIGVsc2UKKy0gICAgR1BHTUVfQ0ZMQUdTPSIiCistICAgIEdQR01FX0xJQlM9IiIKKy0gICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKKyAgIGZpCistICBBQ19TVUJTVChHUEdNRV9DRkxBR1MpCistICBBQ19TVUJTVChHUEdNRV9MSUJTKQorIF0pCisgCisgZG5sIEFNX1BBVEhfR1BHTUVfUFRIUkVBRChbTUlOSU1VTS1WRVJTSU9OLAorQEAgLTE0OCw3ICsxMTYsNyBAQCBkbmwgVGVzdCBmb3IgbGliZ3BnbWUgYW5kIGRlZmluZSBHUEdNRV9QVEhSRUFEX0NGTEFHUworIGRubCAgYW5kIEdQR01FX1BUSFJFQURfTElCUy4KKyBkbmwKKyBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9QVEhSRUFEXSwKKy1bIEFDX1JFUVVJUkUoW19BTV9QQVRIX0dQR01FX0NPTkZJR10pZG5sCisrWworICAgdG1wPWlmZWxzZShbJDFdLCAsMTowLjQuMiwkMSkKKyAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgIHJlcV9ncGdtZV9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCitAQCAtMTU4LDM4ICsxMjYsMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfUFRIUkVBRF0sCisgICAgICBtaW5fZ3BnbWVfdmVyc2lvbj0iJHRtcCIKKyAgIGZpCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdQR01FIHB0aHJlYWQgLSB2ZXJzaW9uID49ICRtaW5fZ3BnbWVfdmVyc2lvbikKKy0gIG9rPW5vCistICBpZiB0ZXN0ICIkR1BHTUVfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorLSAgICBpZiBgJEdQR01FX0NPTkZJRyAtLXRocmVhZD1wdGhyZWFkIDI+IC9kZXYvbnVsbGAgOyB0aGVuCistICAgICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAorLSAgICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKKy0gICAgICByZXFfbWljcm89YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCistICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICAgIGVsc2UKKy0gICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KKy0gICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICAgIGZpCistICAgIGZpCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoR1BHTUVfUFRIUkVBRCwgW2dwZ21lLXB0aHJlYWQgPj0gJG1pbl9ncGdtZV92ZXJzaW9uXSwgW29rPXllc10sIFtvaz1ub10pCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IEdQR01FLCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZS4KKyAgICAgIGlmIHRlc3QgIiRyZXFfZ3BnbWVfYXBpIiAtZ3QgMCA7IHRoZW4KKy0gICAgICAgIHRtcD1gJEdQR01FX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKysgICAgICAgIHRtcD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hcGlfdmVyc2lvbiBncGdtZS1wdGhyZWFkIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCisgICAgICAgICAgICAgIG9rPW5vCitAQCAtMTk4LDE5ICsxNDAsMTEgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfUFRIUkVBRF0sCisgICAgICBmaQorICAgZmkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIEdQR01FX1BUSFJFQURfQ0ZMQUdTPWAkR1BHTUVfQ09ORklHIC0tdGhyZWFkPXB0aHJlYWQgLS1jZmxhZ3NgCistICAgIEdQR01FX1BUSFJFQURfTElCUz1gJEdQR01FX0NPTkZJRyAtLXRocmVhZD1wdGhyZWFkIC0tbGlic2AKKy0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICAgIF9BTV9QQVRIX0dQR01FX0NPTkZJR19IT1NUX0NIRUNLCisgICBlbHNlCistICAgIEdQR01FX1BUSFJFQURfQ0ZMQUdTPSIiCistICAgIEdQR01FX1BUSFJFQURfTElCUz0iIgorLSAgICBBQ19NU0dfUkVTVUxUKG5vKQorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorICAgZmkKKy0gIEFDX1NVQlNUKEdQR01FX1BUSFJFQURfQ0ZMQUdTKQorLSAgQUNfU1VCU1QoR1BHTUVfUFRIUkVBRF9MSUJTKQorIF0pCisgCisgCitAQCAtMjI5LDM2ICsxNjMsMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfR0xJQl0sCisgICAgICBtaW5fZ3BnbWVfdmVyc2lvbj0iJHRtcCIKKyAgIGZpCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdQR01FIC0gdmVyc2lvbiA+PSAkbWluX2dwZ21lX3ZlcnNpb24pCistICBvaz1ubworLSAgaWYgdGVzdCAiJEdQR01FX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KKy0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAorLSAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCistICAgIHJlcV9taWNybz1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKKy0gICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICBlbHNlCistICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgorLSAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgZmkKKy0gIGZpCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdNRV9HTElCLCBbZ3BnbWUgPj0gJG1pbl9ncGdtZV92ZXJzaW9uIGdsaWItMi4wXSwgW29rPXllc10sIFtvaz1ub10pICAKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgR1BHTUUsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCisgICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgorICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1ndCAwIDsgdGhlbgorLSAgICAgICAgdG1wPWAkR1BHTUVfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAorKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGdwZ21lIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCisgICAgICAgICAgICAgIG9rPW5vCitAQCAtMjY3LDE3ICsxNzcsOSBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9HTElCXSwKKyAgICAgIGZpCisgICBmaQorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgR1BHTUVfR0xJQl9DRkxBR1M9YCRHUEdNRV9DT05GSUcgLS1nbGliIC0tY2ZsYWdzYAorLSAgICBHUEdNRV9HTElCX0xJQlM9YCRHUEdNRV9DT05GSUcgLS1nbGliIC0tbGlic2AKKy0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICAgIF9BTV9QQVRIX0dQR01FX0NPTkZJR19IT1NUX0NIRUNLCisgICBlbHNlCistICAgIEdQR01FX0dMSUJfQ0ZMQUdTPSIiCistICAgIEdQR01FX0dMSUJfTElCUz0iIgorLSAgICBBQ19NU0dfUkVTVUxUKG5vKQorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorICAgZmkKKy0gIEFDX1NVQlNUKEdQR01FX0dMSUJfQ0ZMQUdTKQorLSAgQUNfU1VCU1QoR1BHTUVfR0xJQl9MSUJTKQorIF0pCitkaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLnBjLmluIGIvc3JjL2dwZ21lLnBjLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYjY5NTM5ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2dwZ21lLnBjLmluCitAQCAtMCwwICsxLDE1IEBACisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2xpYmRpcj1AbGliZGlyQAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrCisrIyBBUEkgaW5mbworK2FwaV92ZXJzaW9uPUBHUEdNRV9DT05GSUdfQVBJX1ZFUlNJT05ACisraG9zdD1AR1BHTUVfQ09ORklHX0hPU1RACisrCisrTmFtZTogZ3BnbWUKKytEZXNjcmlwdGlvbjogR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBDIGxhbmd1YWdlIGxpYnJhcnkgdGhhdCBhbGxvd3MgdG8gYWRkc3VwcG9ydCBmb3IgY3J5cHRvZ3JhcGh5IHRvIGEgcHJvZ3JhbS4KKytWZXJzaW9uOiBAVkVSU0lPTkAKKytMaWJzOiAtTCR7bGliZGlyfSAtbGdwZ21lCisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KKytSZXF1aXJlczogbGliYXNzdWFuIGdwZy1lcnJvcgorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjhjOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gZmIxNjVjOWJkOTZhY2E4YzllZTNlNDUwOWM5YjZlMzVkMjM4YWQyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDI6NDcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIGdwZ21lL2xhbmcvcHl0aG9uOiBncGctZXJyb3ItY29uZmlnIHNob3VsZCBub3QgYmUgdXNlZC4KKworZ3BnLWVycm9yLWNvbmZpZyB3YXMgbW9kaWZpZWQgYnkgT0UgdG8gYWx3YXlzIHJldHVybiBhbiBlcnJvci4gIFNvIHdlIHdhbnQKK3RvIGZpbmQgYW4gYWx0ZXJuYXRpdmUgd2F5IHRvIHJldHJpZXZlIHdoYXRldmVyIGl0IGlzIHdlIG5lZWQuICBJdCB0dXJucworb3V0IHRoYXQgdGhlIHN5c3RlbSBpcyBqdXN0IHRyeWluZyB0byBmaW5kIHRoZSBwYXRoIHRvIHRoZSBncGctZXJyb3IuaCwgd2hpY2gKK3dlIGNhbiBwdWxsIGluIGZyb20gdGhlIFNUQUdJTkdfSU5DIGVudmlyb25tZW50LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NoYW5nZXMgYXJlIHNwZWNpZmljIHRvIE9FXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjkuMAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsYW5nL3B5dGhvbi9zZXR1cC5weS5pbiB8IDE1ICsrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vc2V0dXAucHkuaW4gYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgoraW5kZXggYmY0ZWZhMy4uN2MzNDQ4NyAxMDA3NTUKKy0tLSBhL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCisrKysgYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgorQEAgLTI0LDcgKzI0LDYgQEAgaW1wb3J0IGdsb2IKKyBpbXBvcnQgc3VicHJvY2VzcworIAorICMgT3V0LW9mLXRyZWUgYnVpbGQgb2YgdGhlIGdwZyBiaW5kaW5ncy4KKy1ncGdfZXJyb3JfY29uZmlnID0gWyJncGctZXJyb3ItY29uZmlnIl0KKyBncGdtZV9jb25maWdfZmxhZ3MgPSBbIi0tdGhyZWFkPXB0aHJlYWQiXQorIGdwZ21lX2NvbmZpZyA9IFsiZ3BnbWUtY29uZmlnIl0gKyBncGdtZV9jb25maWdfZmxhZ3MKKyBncGdtZV9oID0gIiIKK0BAIC01MiwxMyArNTEsNiBAQCBlbHNlOgorICAgICBkZXZudWxsID0gb3Blbihvcy5kZXZudWxsLCAidyIpCisgCisgdHJ5OgorLSAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoZ3BnX2Vycm9yX2NvbmZpZyArIFsnLS12ZXJzaW9uJ10sCistICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9ZGV2bnVsbCkKKy1leGNlcHQ6CistICAgIHN5cy5leGl0KCJDb3VsZCBub3QgZmluZCBncGctZXJyb3ItY29uZmlnLiAgIiArCistICAgICAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB0aGUgbGliZ3BnLWVycm9yIGRldmVsb3BtZW50IHBhY2thZ2UuIikKKy0KKy10cnk6CisgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdtZV9jb25maWcgKyBbJy0tdmVyc2lvbiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCisgZXhjZXB0OgorQEAgLTgxLDEyICs3Myw5IEBAIGlmIG5vdCAobWFqb3IgPiAxIG9yIChtYWpvciA9PSAxIGFuZCBtaW5vciA+PSA3KSk6CisgaWYgbm90IGdwZ21lX2g6CisgICAgIGdwZ21lX2ggPSBvcy5wYXRoLmpvaW4oZ2V0Y29uZmlnKCJwcmVmaXgiKVswXSwgImluY2x1ZGUiLCAiZ3BnbWUuaCIpCisgCistZ3BnX2Vycm9yX3ByZWZpeCA9IGdldGNvbmZpZygicHJlZml4IiwgY29uZmlnPWdwZ19lcnJvcl9jb25maWcpWzBdCistZ3BnX2Vycm9yX2ggPSBvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLCAiZ3BnLWVycm9yLmgiKQorK2dwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKG9zLmdldGVudignU1RBR0lOR19JTkNESVInKSwgImdwZy1lcnJvci5oIikKKyBpZiBub3Qgb3MucGF0aC5leGlzdHMoZ3BnX2Vycm9yX2gpOgorLSAgICBncGdfZXJyb3JfaCA9IFwKKy0gICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiIsICJncGctZXJyb3IuaCIpKVswXQorKyAgICBzeXMuZXhpdCgiZ3BnX2Vycm9yX2ggbm90IGZvdW5kOiAlcyIgJSBncGdfZXJyb3JfaCkKKyAKKyBwcmludCgiQnVpbGRpbmcgcHl0aG9uIGdwZyBtb2R1bGUgdXNpbmcge30gYW5kIHt9LiIuZm9ybWF0KGdwZ21lX2gsIGdwZ19lcnJvcl9oKSkKKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzgzMzExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSA2MjMzMmVlYzc1MmRkNzkwZjRkZDA3MWRmYjBkYmU4NmJlMzc3MjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjA1OjM0IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBDb3JyZWN0bHkgaW5zdGFsbCBweXRob24gbW9kdWxlcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworUmViYXNlIHRvIDEuOS4wCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCBkOTFlYWQ5Li42N2Y3Y2RjIDEwMDY0NAorLS0tIGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KKysrKyBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtMTA2LDYgKzEwNiw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbDoKKyAJICBjZCBweXRob24kJHtWRVJTSU9OfS1ncGcgOyBcCisgCSAgJCRQWVRIT04gc2V0dXAucHkgaW5zdGFsbCBcCisgCSAgLS1wcmVmaXggJChERVNURElSKSQocHJlZml4KSBcCisrCSAgLS1pbnN0YWxsLWxpYj0kKERFU1RESVIpJHtweXRob25kaXJ9IFwKKyAJICAtLXJlY29yZCBmaWxlcy50eHQgXAorIAkgIC0tdmVyYm9zZSA7IFwKKyAJICBjYXQgZmlsZXMudHh0ID4+IC4uL2luc3RhbGxfZmlsZXMudHh0IDsgXAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzA3MTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGNjYmYwMjhlZWE4ODE1ZDNiMTZkNmMzNGI1MjcyNTNhNmIxMDhlYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowNjo0NSAtMDQwMAorU3ViamVjdDogW1BBVENIIDQvNV0gcHl0aG9uIGltcG9ydAorCitEb24ndCBjaGVjayBmb3Igb3V0cHV0IG9uIHN0ZGVyciB0byBrbm93IGlmIGFuIGltcG9ydCB3b3JrZWQsIGhvc3QgaW5wdXRyYyBhbmQKK3N5c3Jvb3QgcmVhZGxpbmUgY2FuIGNhdXNlIHdhcm5pbmdzIG9uIHN0ZGVyci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAoZnJvbSBhdXRvY29uZi1hcmNoaXZlIDg4M2EyYWJkKQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworUmViYXNlIHRvIDEuOS4wCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG00L2F4X3B5dGhvbl9kZXZlbC5tNCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL200L2F4X3B5dGhvbl9kZXZlbC5tNCBiL200L2F4X3B5dGhvbl9kZXZlbC5tNAoraW5kZXggYjk5MGQ1Yi4uMzE4YjA4OSAxMDA2NDQKKy0tLSBhL200L2F4X3B5dGhvbl9kZXZlbC5tNAorKysrIGIvbTQvYXhfcHl0aG9uX2RldmVsLm00CitAQCAtMTM3LDcgKzEzNyw3IEBAIHZhcmlhYmxlIHRvIGNvbmZpZ3VyZS4gU2VlIGBgY29uZmlndXJlIC0taGVscCcnIGZvciByZWZlcmVuY2UuCisgCSMKKyAJQUNfTVNHX0NIRUNLSU5HKFtmb3IgdGhlIGRpc3R1dGlscyBQeXRob24gcGFja2FnZV0pCisgCWFjX2Rpc3R1dGlsc19yZXN1bHQ9YCRQWVRIT04gLWMgImltcG9ydCBkaXN0dXRpbHMiIDI+JjFgCistCWlmIHRlc3QgLXogIiRhY19kaXN0dXRpbHNfcmVzdWx0IjsgdGhlbgorKwlpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuCisgCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorIAllbHNlCisgCQlBQ19NU0dfUkVTVUxUKFtub10pCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNmNjN2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMDY0YWU0NDQxZTJjMTEzMjk3NDhhMTgxNTc5ODhmOWU5NTNmOTc1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNjo0MDoyNyArMDMwMAorU3ViamVjdDogW1BBVENIIDUvNV0gZ3BnbWUtY29uZmlnOiBza2lwIGFsbCAvbGliKiBvciAvdXNyL2xpYiogZGlyZWN0b3JpZXMgaW4KKyBvdXRwdXQKKworVGhlIGxvZ2ljIHdhcyBub3Qgd29ya2luZyBpbiBtdWx0aWxpYiBzZXR1cHMgd2hpY2ggdXNlIG90aGVyCitkaXJlY3RvcnkgbmFtZXMgdGhhbiBwbGFpbiAvbGliIG9yIC91c3IvbGliLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9ncGdtZS1jb25maWcuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZ3BnbWUtY29uZmlnLmluIGIvc3JjL2dwZ21lLWNvbmZpZy5pbgoraW5kZXggYTRkMTUyZS4uODM0Mjg2NSAxMDA2NDQKKy0tLSBhL3NyYy9ncGdtZS1jb25maWcuaW4KKysrKyBiL3NyYy9ncGdtZS1jb25maWcuaW4KK0BAIC0xNTQsNyArMTU0LDcgQEAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgICAgICAgICBmb3IgaSBpbiAkbGlicyAkdG1wX2wgJGFzc3Vhbl9saWJzICRncGdfZXJyb3JfbGlicyAkdG1wX3g7IGRvCisgICAgICAgICAgICAgICBza2lwPW5vCisgICAgICAgICAgICAgICBjYXNlICRpIGluCistICAgICAgICAgICAgICAgICAgLUwvdXNyL2xpYnwtTC9saWIpCisrICAgICAgICAgICAgICAgICAgLUwvdXNyL2xpYip8LUwvbGliKikKKyAgICAgICAgICAgICAgICAgICAgICAgc2tpcD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICAtTCp8LWwqKQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3BrZ2NvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQxY2FiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLVVwZGF0ZSBncGdtZSB0byB1c2UgcGtnY29uZmlnIGluc3RlYWQgb2YgLWNvbmZpZyBmaWxlcyBzaW5jZSBpdHMKLXNpbXBsZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUgd2hlbiBjcm9zcyBjb21waWxpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtVcHN0cmVhbSBub3QgaW50ZXJlc3RlZCBpbiBwa2ctY29uZmlnIHN1cHBvcnRdCi1SUCAyMDE1LzQvMTcKLQotUmViYXNlIHRvIDEuOC4wCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICB8ICAgMSArCi0gc3JjL01ha2VmaWxlLmFtICAgICAgICAgfCAgIDQgKy0KLSBzcmMvZ3BnbWUtcHRocmVhZC5wYy5pbiB8ICAxNSArKysrKysrCi0gc3JjL2dwZ21lLm00ICAgICAgICAgICAgfCAxMTQgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2dwZ21lLnBjLmluICAgICAgICAgfCAgMTUgKysrKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZ3BnbWUtcHRocmVhZC5wYy5pbgotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZ3BnbWUucGMuaW4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMGE2N2I0OC4uZTQwMmRkMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODc1LDYgKzg3NSw3IEBAIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZSBzcmMvTWFrZWZpbGUKLSAgICAgICAgICAgICAgICAgc3JjL3ZlcnNpb25pbmZvLnJjCi0gICAgICAgICAgICAgICAgIHNyYy9ncGdtZS5oKQotIEFDX0NPTkZJR19GSUxFUyhzcmMvZ3BnbWUtY29uZmlnLCBjaG1vZCAreCBzcmMvZ3BnbWUtY29uZmlnKQotK0FDX0NPTkZJR19GSUxFUyhzcmMvZ3BnbWUucGMgc3JjL2dwZ21lLXB0aHJlYWQucGMpCi0gQUNfQ09ORklHX0ZJTEVTKGxhbmcvY3BwL01ha2VmaWxlIGxhbmcvY3BwL3NyYy9NYWtlZmlsZSkKLSBBQ19DT05GSUdfRklMRVMobGFuZy9jcHAvc3JjL0dwZ21lcHBDb25maWctdzMyLmNtYWtlLmluKQotIEFDX0NPTkZJR19GSUxFUyhsYW5nL2NwcC9zcmMvR3BnbWVwcENvbmZpZy5jbWFrZS5pbikKLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IGNlNmYxZDQuLjVmMzhmZWUgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTE5LDEyICsxOSwxNCBAQAotICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbgotIAotIEVYVFJBX0RJU1QgPSBncGdtZS1jb25maWcuaW4gZ3BnbWUubTQgbGliZ3BnbWUudmVycyBDaGFuZ2VMb2ctMjAxMSBcCi0tCSAgICAgZ3BnbWUuaC5pbiB2ZXJzaW9uaW5mby5yYy5pbiBncGdtZS5kZWYKLSsJICAgICBncGdtZS5oLmluIHZlcnNpb25pbmZvLnJjLmluIGdwZ21lLmRlZiBncGdtZS5wYy5pbiBncGdtZS1wdGhyZWFkLnBjLmluCi0gCi0gYmluX1NDUklQVFMgPSBncGdtZS1jb25maWcKLSBtNGRhdGFkaXIgPSAkKGRhdGFkaXIpL2FjbG9jYWwKLSBtNGRhdGFfREFUQSA9IGdwZ21lLm00Ci0gbm9kaXN0X2luY2x1ZGVfSEVBREVSUyA9IGdwZ21lLmgKLStwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCi0rcGtnY29uZmlnX0RBVEEgPSBncGdtZS5wYyBncGdtZS1wdGhyZWFkLnBjCi0gCi0gYmluX1BST0dSQU1TID0gZ3BnbWUtdG9vbAotIAotZGlmZiAtLWdpdCBhL3NyYy9ncGdtZS1wdGhyZWFkLnBjLmluIGIvc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45ODBhNDhlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvZ3BnbWUtcHRocmVhZC5wYy5pbgotQEAgLTAsMCArMSwxNSBAQAotK3ByZWZpeD1AcHJlZml4QAotK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKLStsaWJkaXI9QGxpYmRpckAKLStpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAotKwotKyMgQVBJIGluZm8KLSthcGlfdmVyc2lvbj1AR1BHTUVfQ09ORklHX0FQSV9WRVJTSU9OQAotK2hvc3Q9QEdQR01FX0NPTkZJR19IT1NUQAotKwotK05hbWU6IGdwZ21lCi0rRGVzY3JpcHRpb246IEdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgQyBsYW5ndWFnZSBsaWJyYXJ5IHRoYXQgYWxsb3dzIHRvIGFkZHN1cHBvcnQgZm9yIGNyeXB0b2dyYXBoeSB0byBhIHByb2dyYW0gKGRlcHJlY2F0ZWQpCi0rVmVyc2lvbjogQFZFUlNJT05ACi0rTGliczogLUwke2xpYmRpcn0gLWxncGdtZSAtbHB0aHJlYWQKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQotK1JlcXVpcmVzOiBsaWJhc3N1YW4gZ3BnLWVycm9yCi1kaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLm00IGIvc3JjL2dwZ21lLm00Ci1pbmRleCA2YzJiZTQ0Li5kOGE3NWNiIDEwMDY0NAotLS0tIGEvc3JjL2dwZ21lLm00Ci0rKysgYi9zcmMvZ3BnbWUubTQKLUBAIC03OSw3ICs3OSw3IEBAIGRubCBjb25maWcgc2NyaXB0IGRvZXMgbm90IG1hdGNoIHRoZSBob3N0IHNwZWNpZmljYXRpb24gdGhlIHNjcmlwdAotIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KLSBkbmwKLSBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV0sCi0tWyBBQ19SRVFVSVJFKFtfQU1fUEFUSF9HUEdNRV9DT05GSUddKWRubAotK1sKLSAgIHRtcD1pZmVsc2UoWyQxXSwgLDE6MC40LjIsJDEpCi0gICBpZiBlY2hvICIkdG1wIiB8IGdyZXAgJzonID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCi0gICAgICByZXFfZ3BnbWVfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAotQEAgLTg5LDM2ICs4OSwxMiBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV0sCi0gICAgICBtaW5fZ3BnbWVfdmVyc2lvbj0iJHRtcCIKLSAgIGZpCi0gCi0tICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdQR01FIC0gdmVyc2lvbiA+PSAkbWluX2dwZ21lX3ZlcnNpb24pCi0tICBvaz1ubwotLSAgaWYgdGVzdCAiJEdQR01FX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLS0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAotLSAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCi0tICAgIHJlcV9taWNybz1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKLS0gICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KLS0gICAgICAgIG9rPXllcwotLSAgICBlbHNlCi0tICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgZmkKLS0gIGZpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdNRSwgW2dwZ21lID49ICRtaW5fZ3BnbWVfdmVyc2lvbl0sIFtvaz15ZXNdLCBbb2s9bm9dKQotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLSAgICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBHUEdNRSwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKLSAgICAgICMgQVBJIGlzIGNvbXBhdGlibGUuCi0gICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLWd0IDAgOyB0aGVuCi0tICAgICAgICB0bXA9YCRHUEdNRV9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCi0rICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9YXBpX3ZlcnNpb24gZ3BnbWUgMj4vZGV2L251bGwgfHwgZWNobyAwYAotICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLW5lICIkdG1wIiA7IHRoZW4KLSAgICAgICAgICAgICAgb2s9bm8KLUBAIC0xMjcsMTkgKzEwMywxMSBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV0sCi0gICAgICBmaQotICAgZmkKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgIEdQR01FX0NGTEFHUz1gJEdQR01FX0NPTkZJRyAtLWNmbGFnc2AKLS0gICAgR1BHTUVfTElCUz1gJEdQR01FX0NPTkZJRyAtLWxpYnNgCi0tICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQotICAgICBfQU1fUEFUSF9HUEdNRV9DT05GSUdfSE9TVF9DSEVDSwotICAgZWxzZQotLSAgICBHUEdNRV9DRkxBR1M9IiIKLS0gICAgR1BHTUVfTElCUz0iIgotLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotICAgZmkKLS0gIEFDX1NVQlNUKEdQR01FX0NGTEFHUykKLS0gIEFDX1NVQlNUKEdQR01FX0xJQlMpCi0gXSkKLSAKLSBkbmwgQU1fUEFUSF9HUEdNRV9QVEhSRUFEKFtNSU5JTVVNLVZFUlNJT04sCi1AQCAtMTQ4LDcgKzExNiw3IEBAIGRubCBUZXN0IGZvciBsaWJncGdtZSBhbmQgZGVmaW5lIEdQR01FX1BUSFJFQURfQ0ZMQUdTCi0gZG5sICBhbmQgR1BHTUVfUFRIUkVBRF9MSUJTLgotIGRubAotIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FX1BUSFJFQURdLAotLVsgQUNfUkVRVUlSRShbX0FNX1BBVEhfR1BHTUVfQ09ORklHXSlkbmwKLStbCi0gICB0bXA9aWZlbHNlKFskMV0sICwxOjAuNC4yLCQxKQotICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgotICAgICAgcmVxX2dwZ21lX2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKLUBAIC0xNTgsMzggKzEyNiwxMiBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9QVEhSRUFEXSwKLSAgICAgIG1pbl9ncGdtZV92ZXJzaW9uPSIkdG1wIgotICAgZmkKLSAKLS0gIEFDX01TR19DSEVDS0lORyhmb3IgR1BHTUUgcHRocmVhZCAtIHZlcnNpb24gPj0gJG1pbl9ncGdtZV92ZXJzaW9uKQotLSAgb2s9bm8KLS0gIGlmIHRlc3QgIiRHUEdNRV9DT05GSUciICE9ICJubyIgOyB0aGVuCi0tICAgIGlmIGAkR1BHTUVfQ09ORklHIC0tdGhyZWFkPXB0aHJlYWQgMj4gL2Rldi9udWxsYCA7IHRoZW4KLS0gICAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCi0tICAgICAgcmVxX21pbm9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAotLSAgICAgIHJlcV9taWNybz1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKLS0gICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgb2s9eWVzCi0tICAgICAgZWxzZQotLSAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KLS0gICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KLS0gICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgotLSAgICAgICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgZmkKLS0gICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0tICAgICAgZmkKLS0gICAgZmkKLS0gIGZpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdNRV9QVEhSRUFELCBbZ3BnbWUtcHRocmVhZCA+PSAkbWluX2dwZ21lX3ZlcnNpb25dLCBbb2s9eWVzXSwgW29rPW5vXSkKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0gICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgR1BHTUUsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCi0gICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgotICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1ndCAwIDsgdGhlbgotLSAgICAgICAgdG1wPWAkR1BHTUVfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAotKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGdwZ21lLXB0aHJlYWQgMj4vZGV2L251bGwgfHwgZWNobyAwYAotICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLW5lICIkdG1wIiA7IHRoZW4KLSAgICAgICAgICAgICAgb2s9bm8KLUBAIC0xOTgsMTkgKzE0MCwxMSBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9QVEhSRUFEXSwKLSAgICAgIGZpCi0gICBmaQotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLS0gICAgR1BHTUVfUFRIUkVBRF9DRkxBR1M9YCRHUEdNRV9DT05GSUcgLS10aHJlYWQ9cHRocmVhZCAtLWNmbGFnc2AKLS0gICAgR1BHTUVfUFRIUkVBRF9MSUJTPWAkR1BHTUVfQ09ORklHIC0tdGhyZWFkPXB0aHJlYWQgLS1saWJzYAotLSAgICBBQ19NU0dfUkVTVUxUKHllcykKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLSAgICAgX0FNX1BBVEhfR1BHTUVfQ09ORklHX0hPU1RfQ0hFQ0sKLSAgIGVsc2UKLS0gICAgR1BHTUVfUFRIUkVBRF9DRkxBR1M9IiIKLS0gICAgR1BHTUVfUFRIUkVBRF9MSUJTPSIiCi0tICAgIEFDX01TR19SRVNVTFQobm8pCi0gICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCi0gICBmaQotLSAgQUNfU1VCU1QoR1BHTUVfUFRIUkVBRF9DRkxBR1MpCi0tICBBQ19TVUJTVChHUEdNRV9QVEhSRUFEX0xJQlMpCi0gXSkKLSAKLSAKLUBAIC0yMjksMzYgKzE2MywxMiBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9HTElCXSwKLSAgICAgIG1pbl9ncGdtZV92ZXJzaW9uPSIkdG1wIgotICAgZmkKLSAKLS0gIEFDX01TR19DSEVDS0lORyhmb3IgR1BHTUUgLSB2ZXJzaW9uID49ICRtaW5fZ3BnbWVfdmVyc2lvbikKLS0gIG9rPW5vCi0tICBpZiB0ZXN0ICIkR1BHTUVfQ09ORklHIiAhPSAibm8iIDsgdGhlbgotLSAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCi0tICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKLS0gICAgcmVxX21pY3JvPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAotLSAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgb2s9eWVzCi0tICAgIGVsc2UKLS0gICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KLS0gICAgICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1lcSAiJHJlcV9taW5vciI7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICBmaQotLSAgZmkKLSsgIFBLR19DSEVDS19NT0RVTEVTKEdQR01FX0dMSUIsIFtncGdtZSA+PSAkbWluX2dwZ21lX3ZlcnNpb24gZ2xpYi0yLjBdLCBbb2s9eWVzXSwgW29rPW5vXSkgIAotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLSAgICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBHUEdNRSwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKLSAgICAgICMgQVBJIGlzIGNvbXBhdGlibGUuCi0gICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLWd0IDAgOyB0aGVuCi0tICAgICAgICB0bXA9YCRHUEdNRV9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCi0rICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9YXBpX3ZlcnNpb24gZ3BnbWUgMj4vZGV2L251bGwgfHwgZWNobyAwYAotICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCi0gICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLW5lICIkdG1wIiA7IHRoZW4KLSAgICAgICAgICAgICAgb2s9bm8KLUBAIC0yNjcsMTcgKzE3Nyw5IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FX0dMSUJdLAotICAgICAgZmkKLSAgIGZpCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotLSAgICBHUEdNRV9HTElCX0NGTEFHUz1gJEdQR01FX0NPTkZJRyAtLWdsaWIgLS1jZmxhZ3NgCi0tICAgIEdQR01FX0dMSUJfTElCUz1gJEdQR01FX0NPTkZJRyAtLWdsaWIgLS1saWJzYAotLSAgICBBQ19NU0dfUkVTVUxUKHllcykKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLSAgICAgX0FNX1BBVEhfR1BHTUVfQ09ORklHX0hPU1RfQ0hFQ0sKLSAgIGVsc2UKLS0gICAgR1BHTUVfR0xJQl9DRkxBR1M9IiIKLS0gICAgR1BHTUVfR0xJQl9MSUJTPSIiCi0tICAgIEFDX01TR19SRVNVTFQobm8pCi0gICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCi0gICBmaQotLSAgQUNfU1VCU1QoR1BHTUVfR0xJQl9DRkxBR1MpCi0tICBBQ19TVUJTVChHUEdNRV9HTElCX0xJQlMpCi0gXSkKLWRpZmYgLS1naXQgYS9zcmMvZ3BnbWUucGMuaW4gYi9zcmMvZ3BnbWUucGMuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iNjk1MzlmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvZ3BnbWUucGMuaW4KLUBAIC0wLDAgKzEsMTUgQEAKLStwcmVmaXg9QHByZWZpeEAKLStleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACi0rbGliZGlyPUBsaWJkaXJACi0raW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLSsKLSsjIEFQSSBpbmZvCi0rYXBpX3ZlcnNpb249QEdQR01FX0NPTkZJR19BUElfVkVSU0lPTkAKLStob3N0PUBHUEdNRV9DT05GSUdfSE9TVEAKLSsKLStOYW1lOiBncGdtZQotK0Rlc2NyaXB0aW9uOiBHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIEMgbGFuZ3VhZ2UgbGlicmFyeSB0aGF0IGFsbG93cyB0byBhZGRzdXBwb3J0IGZvciBjcnlwdG9ncmFwaHkgdG8gYSBwcm9ncmFtLgotK1ZlcnNpb246IEBWRVJTSU9OQAotK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3BnbWUKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQotK1JlcXVpcmVzOiBsaWJhc3N1YW4gZ3BnLWVycm9yCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3B5dGhvbi1pbXBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcHl0aG9uLWltcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFiNzdhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcHl0aG9uLWltcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURvbid0IGNoZWNrIGZvciBvdXRwdXQgb24gc3RkZXJyIHRvIGtub3cgaWYgYW4gaW1wb3J0IHdvcmtlZCwgaG9zdCBpbnB1dHJjIGFuZAotc3lzcm9vdCByZWFkbGluZSBjYW4gY2F1c2Ugd2FybmluZ3Mgb24gc3RkZXJyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChmcm9tIGF1dG9jb25mLWFyY2hpdmUgODgzYTJhYmQpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvbTQvYXhfcHl0aG9uX2RldmVsLm00IGIvbTQvYXhfcHl0aG9uX2RldmVsLm00Ci1pbmRleCBiOTkwZDViLi4zMThiMDg5IDEwMDY0NAotLS0tIGEvbTQvYXhfcHl0aG9uX2RldmVsLm00Ci0rKysgYi9tNC9heF9weXRob25fZGV2ZWwubTQKLUBAIC0xMzcsNyArMTM3LDcgQEAgdmFyaWFibGUgdG8gY29uZmlndXJlLiBTZWUgYGBjb25maWd1cmUgLS1oZWxwJycgZm9yIHJlZmVyZW5jZS4KLSAJIwotIAlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgZGlzdHV0aWxzIFB5dGhvbiBwYWNrYWdlXSkKLSAJYWNfZGlzdHV0aWxzX3Jlc3VsdD1gJFBZVEhPTiAtYyAiaW1wb3J0IGRpc3R1dGlscyIgMj4mMWAKLS0JaWYgdGVzdCAteiAiJGFjX2Rpc3R1dGlsc19yZXN1bHQiOyB0aGVuCi0rCWlmIHRlc3QgJD8gLWVxIDA7IHRoZW4KLSAJCUFDX01TR19SRVNVTFQoW3llc10pCi0gCWVsc2UKLSAJCUFDX01TR19SRVNVTFQoW25vXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS9weXRob24tbGFuZy1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcHl0aG9uLWxhbmctY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzJlNDI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS9weXRob24tbGFuZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1ncGdtZS9sYW5nL3B5dGhvbjogZ3BnLWVycm9yLWNvbmZpZyBzaG91bGQgbm90IGJlIHVzZWQuCi0KLWdwZy1lcnJvci1jb25maWcgd2FzIG1vZGlmaWVkIGJ5IE9FIHRvIGFsd2F5cyByZXR1cm4gYW4gZXJyb3IuICBTbyB3ZSB3YW50Ci10byBmaW5kIGFuIGFsdGVybmF0aXZlIHdheSB0byByZXRyaWV2ZSB3aGF0ZXZlciBpdCBpcyB3ZSBuZWVkLiAgSXQgdHVybnMKLW91dCB0aGF0IHRoZSBzeXN0ZW0gaXMganVzdCB0cnlpbmcgdG8gZmluZCB0aGUgcGF0aCB0byB0aGUgZ3BnLWVycm9yLmgsIHdoaWNoCi13ZSBjYW4gcHVsbCBpbiBmcm9tIHRoZSBTVEFHSU5HX0lOQyBlbnZpcm9ubWVudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBPRV0KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogZ3BnbWUtMS44LjAvbGFuZy9weXRob24vc2V0dXAucHkuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncGdtZS0xLjguMC5vcmlnL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi0rKysgZ3BnbWUtMS44LjAvbGFuZy9weXRob24vc2V0dXAucHkuaW4KLUBAIC0yNCw3ICsyNCw2IEBAIGltcG9ydCBnbG9iCi0gaW1wb3J0IHN1YnByb2Nlc3MKLSAKLSAjIE91dC1vZi10cmVlIGJ1aWxkIG9mIHRoZSBncGcgYmluZGluZ3MuCi0tZ3BnX2Vycm9yX2NvbmZpZyA9IFsiZ3BnLWVycm9yLWNvbmZpZyJdCi0gZ3BnbWVfY29uZmlnX2ZsYWdzID0gWyItLXRocmVhZD1wdGhyZWFkIl0KLSBncGdtZV9jb25maWcgPSBbImdwZ21lLWNvbmZpZyJdICsgZ3BnbWVfY29uZmlnX2ZsYWdzCi0gZ3BnbWVfaCA9ICIiCi1AQCAtNTIsMTMgKzUxLDYgQEAgZWxzZToKLSAgICAgZGV2bnVsbCA9IG9wZW4ob3MuZGV2bnVsbCwgInciKQotIAotIHRyeToKLS0gICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGdwZ19lcnJvcl9jb25maWcgKyBbJy0tdmVyc2lvbiddLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCi0tZXhjZXB0OgotLSAgICBzeXMuZXhpdCgiQ291bGQgbm90IGZpbmQgZ3BnLWVycm9yLWNvbmZpZy4gICIgKwotLSAgICAgICAgICAgICAiUGxlYXNlIGluc3RhbGwgdGhlIGxpYmdwZy1lcnJvciBkZXZlbG9wbWVudCBwYWNrYWdlLiIpCi0tCi0tdHJ5OgotICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoZ3BnbWVfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotIGV4Y2VwdDoKLUBAIC04MSwxMiArNzMsOSBAQCBpZiBub3QgKG1ham9yID4gMSBvciAobWFqb3IgPT0gMSBhbmQgbWluCi0gaWYgbm90IGdwZ21lX2g6Ci0gICAgIGdwZ21lX2ggPSBvcy5wYXRoLmpvaW4oZ2V0Y29uZmlnKCJwcmVmaXgiKVswXSwgImluY2x1ZGUiLCAiZ3BnbWUuaCIpCi0gCi0tZ3BnX2Vycm9yX3ByZWZpeCA9IGdldGNvbmZpZygicHJlZml4IiwgY29uZmlnPWdwZ19lcnJvcl9jb25maWcpWzBdCi0tZ3BnX2Vycm9yX2ggPSBvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLCAiZ3BnLWVycm9yLmgiKQotK2dwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKG9zLmdldGVudignU1RBR0lOR19JTkNESVInKSwgImdwZy1lcnJvci5oIikKLSBpZiBub3Qgb3MucGF0aC5leGlzdHMoZ3BnX2Vycm9yX2gpOgotLSAgICBncGdfZXJyb3JfaCA9IFwKLS0gICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiIsICJncGctZXJyb3IuaCIpKVswXQotKyAgICBzeXMuZXhpdCgiZ3BnX2Vycm9yX2ggbm90IGZvdW5kOiAlcyIgJSBncGdfZXJyb3JfaCkKLSAKLSBwcmludCgiQnVpbGRpbmcgcHl0aG9uIGdwZyBtb2R1bGUgdXNpbmcge30gYW5kIHt9LiIuZm9ybWF0KGdwZ21lX2gsIGdwZ19lcnJvcl9oKSkKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRkZjZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2gtbGV2ZWwgR251UEcgZW5jcnlwdGlvbi9zaWduaW5nIEFQSSIKLURFU0NSSVBUSU9OID0gIkdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBtYWtlIGFjY2VzcyB0byBHbnVQRyBlYXNpZXIgZm9yIGFwcGxpY2F0aW9ucy4gSXQgcHJvdmlkZXMgYSBIaWdoLUxldmVsIENyeXB0byBBUEkgZm9yIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIHNpZ25pbmcsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kIGtleSBtYW5hZ2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvZ3BnbWUuaHRtbCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnbWUuaC5pbjtlbmRsaW5lPTIzO21kNT0wZjcwNTk2NjVjNGI3ODk3ZjRmNGQwY2I5M2FhOWY5OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5naW5lLmg7ZW5kbGluZT0yMjttZDU9NGI2ZDhiYTMxM2Q5YjU2NGNjNGQ0Y2ZiMTY0MGFmOWQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vZ3BnbWUvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWxhbmctY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWltcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcyMmE0MTUzOTA0YjliNWRjMTU0ODVhMjJkMjkyNjNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5NjA5NzI1N2MyY2UyMmU3NDc3NDFmOGZmM2Q3ZTI0ZjZlMjYyMzFmYTE5OGE0MWIyYTA3MmU2MmQxZTVkMzMiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIGxpYmFzc3VhbiIKLVJERVBFTkRTXyR7UE59LWNwcCArPSAibGlic3RkYysrIgotCi1SREVQRU5EU19weXRob24yLWdwZyArPSAicHl0aG9uLXVuaXhhZG1pbiIKLVJERVBFTkRTX3B5dGhvbjMtZ3BnICs9ICJweXRob24zLXVuaXhhZG1pbiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGdtZS1jb25maWciCi0KLSMgTm90ZSBzZWxlY3QgcHl0aG9uMiBvciBweXRob24zLCBidXQgeW91IGNhbid0IHNlbGVjdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgotUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICIsLHB5dGhvbiBzd2lnLW5hdGl2ZSwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIiwscHl0aG9uMyBzd2lnLW5hdGl2ZSwiCi0KLSMgRGVmYXVsdCBpbiBjb25maWd1cmUuYWM6ICJjbCBjcHAgcHl0aG9uIHF0IgotIyBTdXBwb3J0ZWQ6ICJjbCBjcHAgcHl0aG9uIHB5dGhvbjIgcHl0aG9uMyBxdCIKLSMgcHl0aG9uIHNheXMgJ3NlYXJjaCBhbmQgZmluZCBweXRob24yIG9yIHB5dGhvbjMnCi0KLSMgQnVpbGRpbmcgdGhlIEMrKyBiaW5kaW5ncyBmb3IgbmF0aXZlIHJlcXVpcmVzIGEgQysrIGNvbXBpbGVyIHdpdGggQysrMTEKLSMgc3VwcG9ydC4gU2luY2UgdGhlc2UgYmluZGluZ3MgYXJlIGN1cnJlbnRseSBub3QgbmVlZGVkLCB3ZSBjYW4gZGlzYWJsZSB0aGVtLgotREVGQVVMVF9MQU5HVUFHRVMgPSAiIgotREVGQVVMVF9MQU5HVUFHRVNfY2xhc3MtdGFyZ2V0ID0gImNwcCIKLUxBTkdVQUdFUyA/PSAiJHtERUZBVUxUX0xBTkdVQUdFU30iCi1MQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnIHB5dGhvbjInLCAnJywgZCl9IgotTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJyBweXRob24zJywgJycsIGQpfSIKLQotUFlUSE9OX0lOSEVSSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob25uYXRpdmUnLCAnJywgZCl9IgotUFlUSE9OX0lOSEVSSVQgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAnLS1lbmFibGUtbGFuZ3VhZ2VzPSIke0xBTkdVQUdFU30iJwotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgJHtQWVRIT05fSU5IRVJJVH0KLQotZXhwb3J0IFBLR19DT05GSUc9J3BrZy1jb25maWcnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNwcCIKLVBBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbjItZ3BnICcsICcnLCBkKX0iCi1QQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWdwZyAnLCAnJywgZCl9IgotCi1GSUxFU18ke1BOfS1jcHAgPSAiJHtsaWJkaXJ9L2xpYmdwZ21lcHAuc28uKiIKLUZJTEVTX3B5dGhvbjItZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU19weXRob24zLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NvbW1vbi1saXNwL3NvdXJjZS9ncGdtZS8qIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NtYWtlLyogXAotIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfX2Vycm9yX3RfZGVmaW5lZCAiCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY1YzM0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjkuMC5iYgpAQCAtMCwwICsxLDc3IEBACitTVU1NQVJZID0gIkhpZ2gtbGV2ZWwgR251UEcgZW5jcnlwdGlvbi9zaWduaW5nIEFQSSIKK0RFU0NSSVBUSU9OID0gIkdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBtYWtlIGFjY2VzcyB0byBHbnVQRyBlYXNpZXIgZm9yIGFwcGxpY2F0aW9ucy4gSXQgcHJvdmlkZXMgYSBIaWdoLUxldmVsIENyeXB0byBBUEkgZm9yIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIHNpZ25pbmcsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kIGtleSBtYW5hZ2VtZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvZ3BnbWUuaHRtbCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnbWUuaC5pbjtlbmRsaW5lPTIzO21kNT05ZDE1N2QwOGE2OTA1OTM0NGU2ZjgyYWJkMmQyNTc4MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5naW5lLmg7ZW5kbGluZT0yMjttZDU9NGI2ZDhiYTMxM2Q5YjU2NGNjNGQ0Y2ZiMTY0MGFmOWQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vZ3BnbWUvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZTAwYmI4ZWYwNGQxZDA1ZDVhMGYxOWUxNDM4NTRjMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjI5ZmVkYjhiZmFkNzc1ZTcwZWFmYWM1YjA1OTA2MjE2ODNiMmQ5ODY5ZGI5OTQ1NjhlNjQwMWY0MDM0Y2ViIgorCitERVBFTkRTID0gImxpYmdwZy1lcnJvciBsaWJhc3N1YW4iCitSREVQRU5EU18ke1BOfS1jcHAgKz0gImxpYnN0ZGMrKyIKKworUkRFUEVORFNfcHl0aG9uMi1ncGcgKz0gInB5dGhvbi11bml4YWRtaW4iCitSREVQRU5EU19weXRob24zLWdwZyArPSAicHl0aG9uMy11bml4YWRtaW4iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnbWUtY29uZmlnIgorCisjIE5vdGUgc2VsZWN0IHB5dGhvbjIgb3IgcHl0aG9uMywgYnV0IHlvdSBjYW4ndCBzZWxlY3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLCxweXRob24gc3dpZy1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICIsLHB5dGhvbjMgc3dpZy1uYXRpdmUsIgorCisjIERlZmF1bHQgaW4gY29uZmlndXJlLmFjOiAiY2wgY3BwIHB5dGhvbiBxdCIKKyMgU3VwcG9ydGVkOiAiY2wgY3BwIHB5dGhvbiBweXRob24yIHB5dGhvbjMgcXQiCisjIHB5dGhvbiBzYXlzICdzZWFyY2ggYW5kIGZpbmQgcHl0aG9uMiBvciBweXRob24zJworCisjIEJ1aWxkaW5nIHRoZSBDKysgYmluZGluZ3MgZm9yIG5hdGl2ZSByZXF1aXJlcyBhIEMrKyBjb21waWxlciB3aXRoIEMrKzExCisjIHN1cHBvcnQuIFNpbmNlIHRoZXNlIGJpbmRpbmdzIGFyZSBjdXJyZW50bHkgbm90IG5lZWRlZCwgd2UgY2FuIGRpc2FibGUgdGhlbS4KK0RFRkFVTFRfTEFOR1VBR0VTID0gIiIKK0RFRkFVTFRfTEFOR1VBR0VTX2NsYXNzLXRhcmdldCA9ICJjcHAiCitMQU5HVUFHRVMgPz0gIiR7REVGQVVMVF9MQU5HVUFHRVN9IgorTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJyBweXRob24yJywgJycsIGQpfSIKK0xBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICcgcHl0aG9uMycsICcnLCBkKX0iCisKK1BZVEhPTl9JTkhFUklUID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfSIKK1BZVEhPTl9JTkhFUklUIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gJy0tZW5hYmxlLWxhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IicKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnICR7UFlUSE9OX0lOSEVSSVR9CisKK2V4cG9ydCBQS0dfQ09ORklHPSdwa2ctY29uZmlnJworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jcHAiCitQQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24yLWdwZyAnLCAnJywgZCl9IgorUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy1ncGcgJywgJycsIGQpfSIKKworRklMRVNfJHtQTn0tY3BwID0gIiR7bGliZGlyfS9saWJncGdtZXBwLnNvLioiCitGSUxFU19weXRob24yLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfcHl0aG9uMy1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jb21tb24tbGlzcC9zb3VyY2UvZ3BnbWUvKiBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jbWFrZS8qIFwKKyIKKworQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX19lcnJvcl90X2RlZmluZWQgIgorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQvcHl0aG9uLm00Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKaW5kZXggZmU0ODEwMS4uYTFlZjllYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYwpAQCAtMTUsOCArMTUsNiBAQAogU1BEWF9TID0gIiR7V09SS0RJUn0vaWN1IgogU1RBR0lOR19JQ1VfRElSX05BVElWRSA9ICIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9LyR7QlBOfS8ke1BWfSIKIAotQ1BQRkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtRFVfVElNRVpPTkU9MCIKLQogQklOQ09ORklHID0gIiR7YmluZGlyfS9pY3UtY29uZmlnIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9DVkUtMjAxNy0xNDk1Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NTllZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9DVkUtMjAxNy0xNDk1Mi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGZjODNjZDgzMjcyNWQzOTY4MDExZjExODYzN2I5ZjVkMjEyZTg3MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDEwIE5vdiAyMDE3IDE2OjUxOjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZWQgcmVkdW5kYW50IFVWZWN0b3IgZW50cnkgY2xlYW4gdXAgZnVuY3Rpb24gY2FsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNDk1MgorCitTaWduZWQtb2ZmLWJ5OiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CistLS0KKyBpMThuL3pvbmVtZXRhLmNwcCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pMThuL3pvbmVtZXRhLmNwcCBiL2kxOG4vem9uZW1ldGEuY3BwCitpbmRleCA4NGE5NjU3Li5lMTYzYjAwIDEwMDY0NAorLS0tIGEvaTE4bi96b25lbWV0YS5jcHAKKysrKyBiL2kxOG4vem9uZW1ldGEuY3BwCitAQCAtNjkwLDcgKzY5MCw2IEBAIFpvbmVNZXRhOjpjcmVhdGVNZXRhem9uZU1hcHBpbmdzKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnR6aWQpIHsKKyAgICAgICAgICAgICAgICAgICAgIG16TWFwcGluZ3MgPSBuZXcgVVZlY3RvcihkZWxldGVPbHNvblRvTWV0YU1hcHBpbmdFbnRyeSwgTlVMTCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBtek1hcHBpbmdzOworLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZU9sc29uVG9NZXRhTWFwcGluZ0VudHJ5KGVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB1cHJ2X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgfQorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoCmluZGV4IDZlNDA2NTkuLmU3NThhNjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9pY3UtcGtnZGF0YS1sYXJnZS1jbWQucGF0Y2gKQEAgLTgsMTQgKzgsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KLSB0b29scy9wa2dkYXRhL3BrZ2RhdGEuY3BwIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorIHRvb2xzL3BrZ2RhdGEvcGtnZGF0YS5jcHAgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS90b29scy9wa2dkYXRhL3BrZ2RhdGEuY3BwIGIvdG9vbHMvcGtnZGF0YS9wa2dkYXRhLmNwcAoraW5kZXggNjAxNjdkZC4uNTA2ZGQzMiAxMDA2NDQKIC0tLSBhL3Rvb2xzL3BrZ2RhdGEvcGtnZGF0YS5jcHAKICsrKyBiL3Rvb2xzL3BrZ2RhdGEvcGtnZGF0YS5jcHAKLUBAIC0xMDE5LDcgKzEwMTksNyBAQCBub3JtYWxfc3ltbGlua19tb2RlOgorQEAgLTEwODQsNyArMTA4NCw3IEBAIG5vcm1hbF9zeW1saW5rX21vZGU6CiAgCiAgc3RhdGljIGludDMyX3QgcGtnX2luc3RhbGxMaWJyYXJ5KGNvbnN0IGNoYXIgKmluc3RhbGxEaXIsIGNvbnN0IGNoYXIgKnRhcmdldERpciwgVUJvb2wgbm9WZXJzaW9uKSB7CiAgICAgIGludDMyX3QgcmVzdWx0ID0gMDsKQEAgLTI0LDYgKzI2LDI0IEBACiAgCiAgICAgIHNwcmludGYoY21kLCAiY2QgJXMgJiYgJXMgJXMgJXMlcyVzIiwKICAgICAgICAgICAgICB0YXJnZXREaXIsCitAQCAtMTE1Miw3ICsxMTUyLDcgQEAgc3RhdGljIGludDMyX3QgcGtnX2luc3RhbGxMaWJyYXJ5KGNvbnN0IGNoYXIgKmluc3RhbGxEaXIsIGNvbnN0IGNoYXIgKnRhcmdldERpciwKKyAKKyBzdGF0aWMgaW50MzJfdCBwa2dfaW5zdGFsbENvbW1vbk1vZGUoY29uc3QgY2hhciAqaW5zdGFsbERpciwgY29uc3QgY2hhciAqZmlsZU5hbWUpIHsKKyAgICAgaW50MzJfdCByZXN1bHQgPSAwOworLSAgICBjaGFyIGNtZFtTTUFMTF9CVUZGRVJfTUFYX1NJWkVdID0gIiI7CisrICAgIGNoYXIgY21kW0xBUkdFX0JVRkZFUl9NQVhfU0laRV0gPSAiIjsKKyAKKyAgICAgaWYgKCFUX0ZpbGVTdHJlYW1fZmlsZV9leGlzdHMoaW5zdGFsbERpcikpIHsKKyAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworQEAgLTExODQsNyArMTE4NCw3IEBAIHN0YXRpYyBpbnQzMl90IHBrZ19pbnN0YWxsQ29tbW9uTW9kZShjb25zdCBjaGFyICppbnN0YWxsRGlyLCBjb25zdCBjaGFyICpmaWxlTmFtCisgI2VuZGlmCisgc3RhdGljIGludDMyX3QgcGtnX2luc3RhbGxGaWxlTW9kZShjb25zdCBjaGFyICppbnN0YWxsRGlyLCBjb25zdCBjaGFyICpzcmNEaXIsIGNvbnN0IGNoYXIgKmZpbGVMaXN0TmFtZSkgeworICAgICBpbnQzMl90IHJlc3VsdCA9IDA7CistICAgIGNoYXIgY21kW1NNQUxMX0JVRkZFUl9NQVhfU0laRV0gPSAiIjsKKysgICAgY2hhciBjbWRbTEFSR0VfQlVGRkVSX01BWF9TSVpFXSA9ICIiOworIAorICAgICBpZiAoIVRfRmlsZVN0cmVhbV9maWxlX2V4aXN0cyhpbnN0YWxsRGlyKSkgeworICAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAtLSAKLTEuNy4xMC40CisxLjkuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc2ODRhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotcmVxdWlyZSBpY3UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTFiM2I3NWMxNzc3Y2Q0OWFkNWM2YTI0Y2QzMzhjZmM5IgotCi1kZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1CQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmYWMyMTJiMzJiN2VjN2FiMDA3YTEyZGZmMWYzYWVhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYjBhNDQxMDE1M2E5YjIwZGUwZTIwYzdkOGI2NjA0OWE3MmFlZjI0NGI1MzY4M2QwZDc1MjEzNzE2ODNkYTBjIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU5LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiMWJlOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU5LjEuYmIKQEAgLTAsMCArMSwzMCBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PWZlOWUxZjJjNTAwNDY2ZDhmMThkZjJjZDA2OGU0Yjc0IgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitCQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0OTUyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NDkyM2ZhOWZhYjViMmI4M2YyMzVmYjcyNTIzZGUzNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MTMyZmRhZjkzNzk0MjlkMDA0MDA1MjE3ZjEwZTAwYjdkMjMxOWQwZmVhMjJiZGZkZGVmODk5MWM0NWI3NWZlIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MzZhMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiSVNPIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGN1cnJlbmN5LCBzY3JpcHQgY29kZXMgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJodHRwczovL3BrZy1pc29jb2Rlcy5hbGlvdGguZGViaWFuLm9yZy9kb3dubG9hZHMvaXNvLWNvZGVzLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNTQ0ODQ3NWQwODc3NTZiNzgzOTFiOGM1M2M1YjgzYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMWY0ZjNjZWE4ZmUwOWY1YjUzNzg0NTIyMzAzYTBlMWU3ZDA4Mzk2NGVjYWYxYzc1YjE0NDFkNGQ5ZWM2YWVlIgotCi0jIGluaGVyaXQgZ2V0dGV4dCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBhZGRzIGdldHRleHQtbmF0aXZlIHRvIEJBU0VERVBFTkRTIHdoaWNoCi0jIGFyZSBpbmhpYml0ZWQgYnkgYWxsYXJjaAotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94bWwvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYzZDUzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzUuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJJU08gbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY3VycmVuY3ksIHNjcmlwdCBjb2RlcyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vcGtnLWlzb2NvZGVzLmFsaW90aC5kZWJpYW4ub3JnL2Rvd25sb2Fkcy9pc28tY29kZXMtJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjliYTE3M2I2OWQ0MzYwMDAzNDE0ZjIzODM3NTk3YTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczMzVlMDMwMWNkNzdjZDRlZTAxOWJmNWQzNzA5YWE3OTMwOWQ0OWRkNjZlODViYTM1MGNhZjY3ZTAwYjAwY2QiCisKKyMgaW5oZXJpdCBnZXR0ZXh0IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IGFkZHMgZ2V0dGV4dC1uYXRpdmUgdG8gQkFTRURFUEVORFMgd2hpY2gKKyMgYXJlIGluaGliaXRlZCBieSBhbGxhcmNoCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3htbC8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMwYzFiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGF0b21pYyBpbnRlZ2VyIG9wZXJhdGlvbnMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy8iCi1TRUNUSU9OID0gIm9wdGlvbmFsIgotUFJPVklERVMgKz0gImxpYmF0b21pY3Mtb3BzIgotTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9MSUNFTlNJTkcudHh0O21kNT1lMDBkZDVjOGFjMDNhMTRjNWFlNTIyNWE0NTI1ZmEyZCBcCi0JCSAgICIKLQotU1JDX1VSSSA9ICJcCi0JaHR0cDovL3d3dy5pdm1haXNvZnQuY29tL19iaW4vYXRvbWljX29wcy9saWJhdG9taWNfb3BzLSR7UFZ9LnRhci5neiBcCi0JZmlsZTovLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2ggXAotCSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQyNmQ4MDRiYWFlMTJjMzcyOTY3YTZkMTgzZTI1YWYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmMjEwYTYwMGRkMWJlY2JmNzkzNmRkMjkxNGNmNWY1ZDMzNTYwNDY5MDQ4NDhkY2ZkMjdkMGM4YjEyYjZmOGYiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJhdG9taWNfb3BzLSR7UFZ9IgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgdGhvc2UgY29udGFpbiBvbmx5IGRvY3MsIG5vdCBuZWNlc3NhcnkgZm9yIG5vdy4KLQlpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7ZG9jZGlyfQotCW12ICR7RH0ke2RhdGFkaXJ9L2xpYmF0b21pY19vcHMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ2M2Q4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGF0b21pYyBpbnRlZ2VyIG9wZXJhdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy8iCitTRUNUSU9OID0gIm9wdGlvbmFsIgorUFJPVklERVMgKz0gImxpYmF0b21pY3Mtb3BzIgorTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9MSUNFTlNJTkcudHh0O21kNT1lMDBkZDVjOGFjMDNhMTRjNWFlNTIyNWE0NTI1ZmEyZCBcCisJCSAgICIKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICI3M2M2MGM1ZWYxZWQzNzAxMTE1NDllZTVhYWI2ZDQwMjBiYTcwZWQ0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaAppbmRleCA4M2NlN2M4Li42MGRhMTVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2gKQEAgLTE1LDE3ICsxNSwxNyBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5hbSBiL21hbi9NYWtlZmlsZS5hbQotaW5kZXggZTRkNmU0YS4uYzcwMWQ5NCAxMDA2NDQKK2luZGV4IDI4MTkyYzAuLmEyMjc4N2QgMTAwNjQ0CiAtLS0gYS9tYW4vTWFrZWZpbGUuYW0KICsrKyBiL21hbi9NYWtlZmlsZS5hbQotQEAgLTI5LDcgKzI5LDYgQEAgZGlzdF9tYW5fTUFOUyA9IFwKLSAJZmxvcGVuLjMgXAotIAlmbXRjaGVjay4zIFwKLSAJZnBhcnNlbG4uMyBcCitAQCAtMTY4LDcgKzE2OCw2IEBAIGRpc3RfbWFuX01BTlMgPSBcCisgCWZtdGNoZWNrLjNic2QgXAorIAlmcGFyc2Vsbi4zYnNkIFwKKyAJZnB1cmdlLjNic2QgXAogLQlmdW5vcGVuLjNic2QgXAotIAlnZXRic2l6ZS4zIFwKLSAJZ2V0bW9kZS4zIFwKLSAJZ2V0cGVlcmVpZC4zIFwKKyAJZ2V0YnNpemUuM2JzZCBcCisgCWdldG1vZGUuM2JzZCBcCisgCWdldHBlZXJlaWQuM2JzZCBcCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCiBpbmRleCBhZDgzZGJmLi4xMzIyNWEzIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlLmFtCkBAIC0zOSw3ICszOSw3IEBACiAgCWdldHBlZXJlaWQuYyBcCiAgCWhhc2gvbWQ1LmMgXAogZGlmZiAtLWdpdCBhL3Rlc3QvTWFrZWZpbGUuYW0gYi90ZXN0L01ha2VmaWxlLmFtCi1pbmRleCBhNzVjOGZmLi5lM2ExZDQxIDEwMDY0NAoraW5kZXggZDg2NTM5YS4uYjMyZWQyZSAxMDA2NDQKIC0tLSBhL3Rlc3QvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3QvTWFrZWZpbGUuYW0KIEBAIC0zNiw3ICszNiw2IEBAIGNoZWNrX1BST0dSQU1TID0gXApAQCAtNTAsNiArNTAsMyBAQAogIAlmcGFyc2VsbiBcCiAgCWZwdXJnZSBcCiAgCW1kNSBcCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAzLUZpeC1idWlsZC1icmVha3MtZHVlLXRvLW1pc3NpbmctYS5vdXQuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDMtRml4LWJ1aWxkLWJyZWFrcy1kdWUtdG8tbWlzc2luZy1hLm91dC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzZkOTQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDMtRml4LWJ1aWxkLWJyZWFrcy1kdWUtdG8tbWlzc2luZy1hLm91dC5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLUZyb20gYTFiOTNjMjUzMTE4MzRmMmY0MTFlOWJmZTJlNjE2ODk5YmEyMTIyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDYgTm92IDIwMTYgMTA6MjM6NTUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIEZpeCBidWlsZCBicmVha3MgZHVlIHRvIG1pc3NpbmcgYS5vdXQuaAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGluY2x1ZGUvYnNkL25saXN0LmggICAgICAgICAgICAgICAgICAgICB8ICAxIC0KLSBpbmNsdWRlL2JzZC9ubGlzdC5oID0+IHNyYy9sb2NhbC1hb3V0LmggfCA0NyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSBzcmMvbmxpc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLSBjb3B5IGluY2x1ZGUvYnNkL25saXN0LmggPT4gc3JjL2xvY2FsLWFvdXQuaCAoNjMlKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvbmxpc3QuaCBiL2luY2x1ZGUvYnNkL25saXN0LmgKLWluZGV4IDAzODlhYjcuLjljN2UzZDggMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC9ubGlzdC5oCi0rKysgYi9pbmNsdWRlL2JzZC9ubGlzdC5oCi1AQCAtMjgsNyArMjgsNiBAQAotICNkZWZpbmUgTElCQlNEX05MSVNUX0gKLSAKLSAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0tI2luY2x1ZGUgPGEub3V0Lmg+Ci0gCi0gLyogX19CRUdJTl9ERUNMUyAqLwotICNpZmRlZiBfX2NwbHVzcGx1cwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL25saXN0LmggYi9zcmMvbG9jYWwtYW91dC5oCi1zaW1pbGFyaXR5IGluZGV4IDYzJQotY29weSBmcm9tIGluY2x1ZGUvYnNkL25saXN0LmgKLWNvcHkgdG8gc3JjL2xvY2FsLWFvdXQuaAotaW5kZXggMDM4OWFiNy4uMmFkYjkzZSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL25saXN0LmgKLSsrKyBiL3NyYy9sb2NhbC1hb3V0LmgKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICogQ29weXJpZ2h0IMKpIDIwMDkgR3VpbGxlbSBKb3ZlciA8Z3VpbGxlbUBoYWRyb25zLm9yZz4KLSsgKiBDb3B5cmlnaHQgwqkgMjAxNiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotICAqCi0gICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi1AQCAtMjQsMjAgKzI0LDM3IEBACi0gICogQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gICovCi0gCi0tI2lmbmRlZiBMSUJCU0RfTkxJU1RfSAotLSNkZWZpbmUgTElCQlNEX05MSVNUX0gKLSsjaWZuZGVmIExJQkJTRF9MT0NBTF9BT1VUX0gKLSsjZGVmaW5lIExJQkJTRF9MT0NBTF9BT1VUX0gKLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0tI2luY2x1ZGUgPGEub3V0Lmg+Ci0rI2RlZmluZSBOX1VOREYgIDAKLSsjZGVmaW5lIE5fQUJTICAgMgotKyNkZWZpbmUgTl9URVhUICA0Ci0rI2RlZmluZSBOX0RBVEEgIDYKLSsjZGVmaW5lIE5fQlNTICAgOAotKyNkZWZpbmUgTl9GTiAgICAxNQotKyNkZWZpbmUgTl9FWFQgICAxCi0rI2RlZmluZSBOX1RZUEUgIDAzNgotKyNkZWZpbmUgTl9TVEFCICAwMzQwCi0rI2RlZmluZSBOX0lORFIgIDB4YQotKyNkZWZpbmUgTl9TRVRBICAweDE0ICAgIC8qIEFic29sdXRlIHNldCBlbGVtZW50IHN5bWJvbC4gICovCi0rI2RlZmluZSBOX1NFVFQgIDB4MTYgICAgLyogVGV4dCBzZXQgZWxlbWVudCBzeW1ib2wuICAqLwotKyNkZWZpbmUgTl9TRVREICAweDE4ICAgIC8qIERhdGEgc2V0IGVsZW1lbnQgc3ltYm9sLiAgKi8KLSsjZGVmaW5lIE5fU0VUQiAgMHgxQSAgICAvKiBCc3Mgc2V0IGVsZW1lbnQgc3ltYm9sLiAgKi8KLSsjZGVmaW5lIE5fU0VUViAgMHgxQyAgICAvKiBQb2ludGVyIHRvIHNldCB2ZWN0b3IgaW4gZGF0YSBhcmVhLiAgKi8KLSAKLS0vKiBfX0JFR0lOX0RFQ0xTICovCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tZXh0ZXJuICJDIiB7Ci0tI2VuZGlmCi0tZXh0ZXJuIGludCBubGlzdChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IG5saXN0ICpsaXN0KTsKLS0jaWZkZWYgX19jcGx1c3BsdXMKLS19Ci0tI2VuZGlmCi0tLyogX19FTkRfREVDTFMgKi8KLStzdHJ1Y3Qgbmxpc3QKLSt7Ci0rICB1bmlvbgotKyAgICB7Ci0rICAgICAgY2hhciAqbl9uYW1lOwotKyAgICAgIHN0cnVjdCBubGlzdCAqbl9uZXh0OwotKyAgICAgIGxvbmcgbl9zdHJ4OwotKyAgICB9IG5fdW47Ci0rICB1bnNpZ25lZCBjaGFyIG5fdHlwZTsKLSsgIGNoYXIgbl9vdGhlcjsKLSsgIHNob3J0IG5fZGVzYzsKLSsgIHVuc2lnbmVkIGxvbmcgbl92YWx1ZTsKLSt9OwotIAotLSNlbmRpZgotKyNlbmRpZiAvKiBMSUJCU0RfTE9DQUxfQU9VVF9IICovCi1kaWZmIC0tZ2l0IGEvc3JjL25saXN0LmMgYi9zcmMvbmxpc3QuYwotaW5kZXggMGNmZmU1NS4uNjI1ZDMxMCAxMDA2NDQKLS0tLSBhL3NyYy9ubGlzdC5jCi0rKysgYi9zcmMvbmxpc3QuYwotQEAgLTQwLDcgKzQwLDExIEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylubGlzdC5jCTguMSAoQmVya2VsZXkpIDYvNC85MyI7Ci0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2lmZGVmIF9fR0xJQkNfXwotICNpbmNsdWRlIDxhLm91dC5oPgotKyNlbHNlCi0rI2RlZmluZSBfX05PX0FfT1VUX1NVUFBPUlQKLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotQEAgLTQ4LDEyICs1MiwxNyBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpbmxpc3QuYwk4LjEgKEJlcmtlbGV5KSA2LzQvOTMiOwotICNpZiAhZGVmaW5lZChfX05PX0FfT1VUX1NVUFBPUlQpCi0gI2RlZmluZSBfTkxJU1RfRE9fQU9VVAotICNlbmRpZgotKwotICNkZWZpbmUgX05MSVNUX0RPX0VMRgotIAotICNpZmRlZiBfTkxJU1RfRE9fRUxGCi0gI2luY2x1ZGUgImxvY2FsLWVsZi5oIgotICNlbmRpZgotIAotKyNpZmRlZiBfTkxJU1RfRE9fRUxGCi0rI2luY2x1ZGUgImxvY2FsLWFvdXQuaCIKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIFNJWkVfVF9NQVggMHhmZmZmZmZmZlUKLSAKLSAjaWZkZWYgX05MSVNUX0RPX0FPVVQKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NWVlMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1TVU1NQVJZID0gIkxpYnJhcnkgb2YgdXRpbGl0eSBmdW5jdGlvbnMgZnJvbSBCU0Qgc3lzdGVtcyIKLURFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBwcm92aWRlcyB1c2VmdWwgZnVuY3Rpb25zIGNvbW1vbmx5IGZvdW5kIG9uIEJTRCBzeXN0ZW1zLCBcCi0gICAgICAgICAgICAgICBhbmQgbGFja2luZyBvbiBvdGhlcnMgbGlrZSBHTlUgc3lzdGVtcywgdGh1cyBtYWtpbmcgaXQgZWFzaWVyIHRvIHBvcnQgXAotICAgICAgICAgICAgICAgcHJvamVjdHMgd2l0aCBzdHJvbmcgQlNEIG9yaWdpbnMsIHdpdGhvdXQgbmVlZGluZyB0byBlbWJlZCB0aGUgc2FtZSBcCi0gICAgICAgICAgICAgICBjb2RlIG92ZXIgYW5kIG92ZXIgYWdhaW4gb24gZWFjaCBwcm9qZWN0LiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvd2lraS8iCi0jIFRoZXJlIHNlZW1zIHRvIGJlIG1vcmUgbGljZW5zZXMgdXNlZCBpbiB0aGUgY29kZSwgSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZSwgY29tcGxldGUgbGlzdDoKLSMgT0UgQCB+L3Byb2plY3RzL2xpYmJzZCAkIGdyZXAgXkxpY2Vuc2U6IENPUFlJTkcgIHwgc29ydAotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1OZXRCU0QKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLWF1dGhvcgotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtdmVyYmF0aW0KLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlLVBldGVyLVdlbW0KLSMgTGljZW5zZTogQlNELTMtY2xhdXNlLVJlZ2VudHMKLSMgTGljZW5zZTogQlNELTQtY2xhdXNlLUNocmlzdG9waGVyLUctRGVtZXRyaW91Ci0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1OaWVscy1Qcm92b3MKLSMgTGljZW5zZTogQlNELTUtY2xhdXNlLVBldGVyLVdlbW0KLSMgTGljZW5zZTogQmVlcndhcmUKLSMgTGljZW5zZTogRXhwYXQKLSMgTGljZW5zZTogSVNDCi0jIExpY2Vuc2U6IElTQy1PcmlnaW5hbAotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluCi0jIExpY2Vuc2U6IHB1YmxpYy1kb21haW4tQ29saW4tUGx1bWIKLUxJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlICYgSVNDICYgUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYjljODlkODYxOTE1Yjg2NjU1Yjk2ZTVlMzJmYTJhYSIKLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLXNyYy1saWJic2Qtb3ZlcmxheS5wYy5pbi1TZXQtQ2ZsYWdzLXRvLXVzZS1JLWluc3RlYWQucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsICA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1GaXgtYnVpbGQtYnJlYWtzLWR1ZS10by1taXNzaW5nLWEub3V0LmgucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTkzNWMxYmI2Y2M5OGE0YTQzY2IxZGEyMjc5NTQ5M2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTM0YjYzNGY0ZGZkODY1YjY0ODI2NTBiOGY1MjJjNzBhZTY1YzQ2MzUyOWRlOGJlOTA3YjUzYzg5YzNhMzRhOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgyNTQzZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCkBAIC0wLDAgKzEsNTAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK1NVTU1BUlkgPSAiTGlicmFyeSBvZiB1dGlsaXR5IGZ1bmN0aW9ucyBmcm9tIEJTRCBzeXN0ZW1zIgorREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHVzZWZ1bCBmdW5jdGlvbnMgY29tbW9ubHkgZm91bmQgb24gQlNEIHN5c3RlbXMsIFwKKyAgICAgICAgICAgICAgIGFuZCBsYWNraW5nIG9uIG90aGVycyBsaWtlIEdOVSBzeXN0ZW1zLCB0aHVzIG1ha2luZyBpdCBlYXNpZXIgdG8gcG9ydCBcCisgICAgICAgICAgICAgICBwcm9qZWN0cyB3aXRoIHN0cm9uZyBCU0Qgb3JpZ2lucywgd2l0aG91dCBuZWVkaW5nIHRvIGVtYmVkIHRoZSBzYW1lIFwKKyAgICAgICAgICAgICAgIGNvZGUgb3ZlciBhbmQgb3ZlciBhZ2FpbiBvbiBlYWNoIHByb2plY3QuIgorCitIT01FUEFHRSA9ICJodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKKyMgVGhlcmUgc2VlbXMgdG8gYmUgbW9yZSBsaWNlbnNlcyB1c2VkIGluIHRoZSBjb2RlLCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLCBjb21wbGV0ZSBsaXN0OgorIyBPRSBAIH4vcHJvamVjdHMvbGliYnNkICQgZ3JlcCBeTGljZW5zZTogQ09QWUlORyAgfCBzb3J0CisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLU5ldEJTRAorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtYXV0aG9yCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS12ZXJiYXRpbQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UtUGV0ZXItV2VtbQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UtUmVnZW50cworIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtQ2hyaXN0b3BoZXItRy1EZW1ldHJpb3UKKyMgTGljZW5zZTogQlNELTQtY2xhdXNlLU5pZWxzLVByb3ZvcworIyBMaWNlbnNlOiBCU0QtNS1jbGF1c2UtUGV0ZXItV2VtbQorIyBMaWNlbnNlOiBCZWVyd2FyZQorIyBMaWNlbnNlOiBFeHBhdAorIyBMaWNlbnNlOiBJU0MKKyMgTGljZW5zZTogSVNDLU9yaWdpbmFsCisjIExpY2Vuc2U6IHB1YmxpYy1kb21haW4KKyMgTGljZW5zZTogcHVibGljLWRvbWFpbi1Db2xpbi1QbHVtYgorTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UgJiBJU0MgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA4ZmM0ZTY2YmU0NTI2NzE1ZGFiMDljNWZiYTVlOWU4IgorU0VDVElPTiA9ICJsaWJzIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtc3JjLWxpYmJzZC1vdmVybGF5LnBjLmluLVNldC1DZmxhZ3MtdG8tdXNlLUktaW5zdGVhZC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgID0gIiBcCisgICAgZmlsZTovLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGFiN2JlYzYzOWFmMTdkMGFhY2I1MDIyMmI0NzkxMTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY3ZmJmOWRmMWY0OWFmMTFmN2Y2ODY2OTEwNTdjOGMwYTc2MTNhZTVhODcwNTc3YmVmOTE1NWRlMzlmOTY4NyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1ncGVyZi0zLjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ3BlcmYtMy4xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMGVmOTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ3BlcmYtMy4xLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gYTA1ZWJhNjhjNDIyMjJmMDI0NjVkN2JhMzc2MDE1OTI2NDMzYzUzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyNiBKdWwgMjAxNyAxMzozNzo0OSArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBncGVyZiAzLjEKKworVGhlIGdlbmVyYXRlZCBncGVyZiBmaWxlIHJlZmVycyB0byBzaXplX3Qgd2hpY2ggbmVlZHMgdG8gYmUKK3Byb3ZpZGVkIGJ5IHN0ZGRlZi5oIGluY2x1ZGUuIEFsc28sIGFkanVzdCB0aGUgbWFrZWZpbGUKK3RvIG1hdGNoIHRoZSBkZWNsYXJhdGlvbiBpbiB0aGUgZ3BlcmYgZmlsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgbGliY2FwL01ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNhcC9NYWtlZmlsZSBiL2xpYmNhcC9NYWtlZmlsZQoraW5kZXggZDE4OTc3Ny4uMWE1NzIwNiAxMDA2NDQKKy0tLSBhL2xpYmNhcC9NYWtlZmlsZQorKysrIGIvbGliY2FwL01ha2VmaWxlCitAQCAtMjIsNyArMjIsNyBAQCBhbGw6ICQoTUlOTElCTkFNRSkgJChTVEFMSUJOQU1FKSBsaWJjYXAucGMKKyAKKyBpZmVxICgkKEJVSUxEX0dQRVJGKSx5ZXMpCisgVVNFX0dQRVJGX09VVFBVVCA9ICQoR1BFUkZfT1VUUFVUKQorLUlOQ0xVREVfR1BFUkZfT1VUUFVUID0gLWluY2x1ZGUgJChHUEVSRl9PVVRQVVQpCisrSU5DTFVERV9HUEVSRl9PVVRQVVQgPSAtaW5jbHVkZSBzdGRkZWYuaCAtaW5jbHVkZSAkKEdQRVJGX09VVFBVVCkKKyBlbmRpZgorIAorIGxpYmNhcC5wYzogbGliY2FwLnBjLmluCitAQCAtNDEsNyArNDEsNyBAQCBjYXBfbmFtZXMuaDogX21ha2VuYW1lcworIAkuL19tYWtlbmFtZXMgPiBjYXBfbmFtZXMuaAorIAorICQoR1BFUkZfT1VUUFVUKTogY2FwX25hbWVzLmxpc3QuaAorLQlwZXJsIC1lICdwcmludCAic3RydWN0IF9fY2FwX3Rva2VuX3MgeyBjb25zdCBjaGFyICpuYW1lOyBpbnQgaW5kZXg7IH07XG4le1xuY29uc3Qgc3RydWN0IF9fY2FwX3Rva2VuX3MgKl9fY2FwX2xvb2t1cF9uYW1lKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTtcbiV9XG4lJVxuIjsgd2hpbGUgKCQkbCA9IDw+KSB7ICQkbCA9fiBzL1tce1wiXS8vZzsgJCRsID1+IHMvXH0uKi8vIDsgcHJpbnQgJCRsOyB9JyA8ICQ8IHwgZ3BlcmYgLS1pZ25vcmUtY2FzZSAtLWxhbmd1YWdlPUFOU0ktQyAtLXJlYWRvbmx5IC0tbnVsbC1zdHJpbmdzIC0tZ2xvYmFsLXRhYmxlIC0taGFzaC1mdW5jdGlvbi1uYW1lPV9fY2FwX2hhc2hfbmFtZSAtLWxvb2t1cC1mdW5jdGlvbi1uYW1lPSJfX2NhcF9sb29rdXBfbmFtZSIgLWMgLXQgLW0yMCAkKElOREVOVCkgPiAkQAorKwlwZXJsIC1lICdwcmludCAic3RydWN0IF9fY2FwX3Rva2VuX3MgeyBjb25zdCBjaGFyICpuYW1lOyBpbnQgaW5kZXg7IH07XG4le1xuY29uc3Qgc3RydWN0IF9fY2FwX3Rva2VuX3MgKl9fY2FwX2xvb2t1cF9uYW1lKGNvbnN0IGNoYXIgKiwgcmVnaXN0ZXIgc2l6ZV90KTtcbiV9XG4lJVxuIjsgd2hpbGUgKCQkbCA9IDw+KSB7ICQkbCA9fiBzL1tce1wiXS8vZzsgJCRsID1+IHMvXH0uKi8vIDsgcHJpbnQgJCRsOyB9JyA8ICQ8IHwgZ3BlcmYgLS1pZ25vcmUtY2FzZSAtLWxhbmd1YWdlPUFOU0ktQyAtLXJlYWRvbmx5IC0tbnVsbC1zdHJpbmdzIC0tZ2xvYmFsLXRhYmxlIC0taGFzaC1mdW5jdGlvbi1uYW1lPV9fY2FwX2hhc2hfbmFtZSAtLWxvb2t1cC1mdW5jdGlvbi1uYW1lPSJfX2NhcF9sb29rdXBfbmFtZSIgLWMgLXQgLW0yMCAkKElOREVOVCkgPiAkQAorIAorIGNhcF9uYW1lcy5saXN0Lmg6IE1ha2VmaWxlICQoS0VSTkVMX0hFQURFUlMpL2xpbnV4L2NhcGFiaWxpdHkuaAorIAlAZWNobyAiPT4gbWFraW5nICRAIGZyb20gJChLRVJORUxfSEVBREVSUykvbGludXgvY2FwYWJpbGl0eS5oIgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMjUuYmIKaW5kZXggMDU4N2U3Ny4uZDYxOWEyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI1LmJiCkBAIC05LDcgKzksOCBAQAogCiBTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbGlicy9zZWN1cml0eS9saW51eC1wcml2cy8ke0JQTn0yLyR7QlBOfS0ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1lbnN1cmUtdGhlLVhBVFRSX05BTUVfQ0FQUy1pcy1kZWZpbmVkLXdoZW4taXQtaXMtdXNlLnBhdGNoIFwKLSIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ3BlcmYtMy4xLnBhdGNoIFwKKyAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjY2NjZiODM5ZTVkNDZjMmFkMzNmYzhhYTJjZWI1Zjc3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5M2M4YWM1MWU5ODNlZTY3ODIwNTU3MWVmMjcyNDM5ZDgzYWZlNjJkZDhlNDI0ZWExNGFkOTc5MGJjMzUxNjIiCiAKQEAgLTIyLDkgKzIzLDYgQEAKIAkjIG9uIHdoYXQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggPz0KIAlzZWQgLWUgJ3MsOj0sPz0sZycgLWkgTWFrZS5SdWxlcwogCXNlZCAtZSAncyxeQlVJTERfQ0ZMQUdTID89ICQoLipDRkxBR1MpLEJVSUxEX0NGTEFHUyA6PSAkKEJVSUxEX0NGTEFHUyksJyAtaSBNYWtlLlJ1bGVzCi0KLQkjIGRpc2FibGUgZ3BlcmYgZGV0ZWN0aW9uCi0Jc2VkIC1lICcvc2hlbGwgZ3BlcmYvY2lmZXEgKCx5ZXMpJyAtaSBsaWJjYXAvTWFrZWZpbGUKIH0KIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKQEAgLTM3LDYgKzM1LDcgQEAKICAgbGliPSR7QG9zLnBhdGguYmFzZW5hbWUoJyR7bGliZGlyfScpfSBcCiAgIFJBSVNFX1NFVEZDQVA9bm8gXAogICBEWU5BTUlDPXllcyBcCisgIEJVSUxEX0dQRVJGPXllcyBcCiAiCiAKIEVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1fSEVBREVSUz0ke1NUQUdJTkdfSU5DRElSfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGY3OTIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkNhc2NhZGluZyBTdHlsZSBTaGVldCAoQ1NTKSBwYXJzaW5nIGFuZCBtYW5pcHVsYXRpb24gdG9vbGtpdCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NyLXJnYi5jO2VuZGxpbmU9MjI7bWQ1PTMxZDVmMDk0NGQ1NTZjODU4OWQwNGVhNjA1NWZjYzY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NyLXRlc3QtdXRpbHMuYztlbmRsaW5lPTIxO21kNT0yMzgyYzI3OTM0Y2FlMWQzNzkyZmNiMTdhNjE0MmM0ZSIKLQotU0VDVElPTiA9ICJ4MTEvdXRpbHMiCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDIgemxpYiIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9jcm9jby0wLjYtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGd0ay1kb2MgYmluY29uZmlnLWRpc2FibGVkCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRhYmMxOTExZGZiZmE4NWY4ZTY4NTljYTQ3ODYzMTY4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMTMyYjUyOGE5NDg1ODZiMGRmYTA1ZDdlOWUwNTk5MDFiY2E1YTNiZTY3NWI2MDcxYTkwYTkwYjgxYWU1YTA1NiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYWY3NTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQ2FzY2FkaW5nIFN0eWxlIFNoZWV0IChDU1MpIHBhcnNpbmcgYW5kIG1hbmlwdWxhdGlvbiB0b29sa2l0IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3ItcmdiLmM7ZW5kbGluZT0yMjttZDU9MzFkNWYwOTQ0ZDU1NmM4NTg5ZDA0ZWE2MDU1ZmNjNjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY3ItdGVzdC11dGlscy5jO2VuZGxpbmU9MjE7bWQ1PTIzODJjMjc5MzRjYWUxZDM3OTJmY2IxN2E2MTQyYzRlIgorCitTRUNUSU9OID0gIngxMS91dGlscyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMiB6bGliIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2Nyb2NvLTAuNi1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ3RrLWRvYyBiaW5jb25maWctZGlzYWJsZWQKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmMwOTg0ZmNlMDc4YmEyY2UyOWY5NTAwYzZiOWRkY2UiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGM0YjU1NDZjOWZiNDI4MGE1MDE3ZTI3MDdmYmQ0ODM5MDM0ZWQxYWJhNWI3ZDQzNzIyMTJmMzRmODRmODYwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjg0NTU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiV3JhcHBlciBsaWJyYXJ5IGZvciBldmRldiBkZXZpY2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJldmRldi8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlULVgiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NWFhZTBkMzhmZWVhNmZkYTk3Y2EzODFjYjkxMzJlYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJldmRldi9saWJldmRldi5oO2VuZGxpbmU9MjE7bWQ1PTdmZjRmMGI1MTEzMjUyYzJmMWE4MjhlMGJiYWQ5OGQxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ0Y2U5ZjA2MWY4Zjk1NGJlYTdhZGJhMGNiNzY4YTUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjZWM3ZTlkNjZiMWQzNjkyZjEwYjNiMjBhYTk3ZmIyNWU4NzRhNzg0YzU1NTJhN2IxNjk4MDkxZmVmNWE2ODgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NDBkYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjcuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJXcmFwcGVyIGxpYnJhcnkgZm9yIGV2ZGV2IGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmV2ZGV2LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQtWCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGYxY2ZhZWU4ZDc1ZWEzZmJiZmViOTlhOTg3MzA5NTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTFlNTllMzdhMmYwZDM5N2ZmZDdlODNiNzNhZjBlNjM4ZGI4M2I4ZGQwODkwMmVmMGY2NTFhMjFjYzFkZDQyMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC9NYWtlZmlsZS1taXNzaW5nLXRlc3QtZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODBiZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGaXggbWlzc2luZyB0ZXN0IGRpcmVjdG9yeSBjcmVhdGlvbi4KKworR0NDIHVzZWQgaW4gT0UtY29yZSBoYXMgImRlcGVuZGVuY3kgdHJhY2tpbmciIGRpc2FibGVkIGFuZAorbGliZXZlbnQgaGFzIHByb2JsZW0gd2l0aCB0aGlzLgorRHVlIHRvIHJlbW92ZWQgbWFrZWZpbGUuYW0vaW4gZmlsZXMgaW4gdGVzdC9zYW1wbGUvaW5jbHVkZQorZGlyZWN0b3JpZXMsIG91dHB1dCBkaXJlY3RvcmllcyBhcmUgbm90IGNyZWF0ZWQgaW4KK2NvbmZpZ3VyYXRpb24gc3RlcC4gQ29tcGlsYXRpb24gc3RlcCB3aWxsIGZhaWxzLCB3aGVuCit0cnlpbmcgdG8gd3JpdGUgdG8gbm9uLWV4aXN0aW5nIGRpcmVjdG9yeS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPdGhlcl0KK1dvcmthcm91bmQgc3BlY2lmaWMgdG8gb3VyIGJ1aWxkIHN5c3RlbS4KKworU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CitTaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CisKK2RpZmYgLS1naXQgYS9saWJldmVudC0yLjEuOC1zdGFibGUvdGVzdC9pbmNsdWRlLmFtIGIvbGliZXZlbnQtMi4xLjgtc3RhYmxlL3Rlc3QvaW5jbHVkZS5hbQoraW5kZXggZWVhMjQ5Zi4uZDMyM2RmZiAxMDA2NDQKKy0tLSBhL3Rlc3QvaW5jbHVkZS5hbQorKysrIGIvdGVzdC9pbmNsdWRlLmFtCitAQCAtMTYxLDYgKzE2MSw3IEBAIHRlc3RfYmVuY2hfaHR0cGNsaWVudF9MREFERCA9ICQoTElCRVZFTlRfR0NfU0VDVElPTlMpIGxpYmV2ZW50X2NvcmUubGEKKyB0ZXN0L3JlZ3Jlc3MuZ2VuLmMgdGVzdC9yZWdyZXNzLmdlbi5oOiB0ZXN0L3JwY2dlbi1hdHRlbXB0ZWQKKyAKKyB0ZXN0L3JwY2dlbi1hdHRlbXB0ZWQ6IHRlc3QvcmVncmVzcy5ycGMgZXZlbnRfcnBjZ2VuLnB5IHRlc3QvcnBjZ2VuX3dyYXBwZXIuc2gKKysJQCQoTUtESVJfUCkgdGVzdAorIAkkKEFNX1ZfR0VOKWRhdGUgLXUgPiAkQAorIAkkKEFNX1ZfYXQpaWYgJChzcmNkaXIpL3Rlc3QvcnBjZ2VuX3dyYXBwZXIuc2ggJChzcmNkaXIpL3Rlc3Q7IHRoZW4gXAorIAkgICB0cnVlOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4wLjIyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMC4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4YTMxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4wLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBhc3luY2hyb25vdXMgZXZlbnQgbm90aWZpY2F0aW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vbGliZXZlbnQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD01MDg4NCZhdGlkPTQ2MTMyMiIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00NWM1MzE2ZmY2ODRiY2ZlMmY5Zjg2ZDhiMTI3OTU1OSIKLQotU1JDX1VSSSA9ICIgXAotICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9sZXZlbnQvJHtCUH0tc3RhYmxlLnRhci5neiBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNGM1NmY5ODZhYTk4NTY3N2NhMWRiODk2MzBhMmUxMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWMyYzQ5ZjBhZGFkYWNmZGJlNjMzMmEzNzJjMzhjZjljOGI3ODk1YmI3M2RhYmVhYTUzY2RjYzFkNGUxZmEzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2xpYmV2ZW50Lm9yZy8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0tc3RhYmxlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLSMgTmVlZGVkIGZvciBEZWJpYW4gcGFja2FnaW5nCi1MRUFEX1NPTkFNRSA9ICJsaWJldmVudC0yLjAuc28iCi0KLWluaGVyaXQgcHRlc3QKLQotREVQRU5EUyA9ICJ6bGliIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JZm9yIGZpbGUgaW4gJHtCfS90ZXN0Ly5saWJzL3JlZ3Jlc3MgJHtCfS90ZXN0Ly5saWJzL3Rlc3QqCi0JZG8KLQkJaW5zdGFsbCAtbSAwNzU1ICRmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI3MGQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIkFuIGFzeW5jaHJvbm91cyBldmVudCBub3RpZmljYXRpb24gbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJldmVudC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZXZlbnQvbGliZXZlbnQvaXNzdWVzIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRCAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE3ZjIwNTc0YzBiMTU0ZDEyMjM2ZDVmYmU5NjRmNTQ5IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cHM6Ly9naXRodWIuY29tL2xpYmV2ZW50L2xpYmV2ZW50L3JlbGVhc2VzL2Rvd25sb2FkL3JlbGVhc2UtJHtQVn0tc3RhYmxlLyR7QlB9LXN0YWJsZS50YXIuZ3ogXAorICAgIGZpbGU6Ly9NYWtlZmlsZS1taXNzaW5nLXRlc3QtZGlyLnBhdGNoIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImYzZWVhZWQwMTg1NDI5NjNiN2QyNDE2ZWYxMTM1ZWNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2NWNjNWE4YmI0NmNlNDE5OWE0N2U5YjJjOWUxY2FlM2IxMzdlODM1NmZmZGFkNmQ5NGQzYjkwNjliNzFkYzIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGliZXZlbnQub3JnLyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfS1zdGFibGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyBOZWVkZWQgZm9yIERlYmlhbiBwYWNrYWdpbmcKK0xFQURfU09OQU1FID0gImxpYmV2ZW50LTIuMS5zbyIKKworaW5oZXJpdCBwdGVzdAorCitERVBFTkRTID0gInpsaWIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlmb3IgZmlsZSBpbiAke0J9L3Rlc3QvLmxpYnMvcmVncmVzcyAke0J9L3Rlc3QvLmxpYnMvdGVzdCoKKwlkbworCQlpbnN0YWxsIC1tIDA3NTUgJGZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtbGliZmZpLVN1cHBvcnQtbXVzbC14MzItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLWxpYmZmaS1TdXBwb3J0LW11c2wteDMyLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMTY3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLWxpYmZmaS1TdXBwb3J0LW11c2wteDMyLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNjljMzkwNmM4NWM3OTE3MTZiZjY1MGFhMzZkOTM2MWQyMmFjZjNmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorRGF0ZTogVGh1LCA2IEp1bCAyMDE3IDE2OjMyOjQ2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmZmaTogU3VwcG9ydCBtdXNsIHgzMiBidWlsZAorCitTdXBwb3J0IGxpYmZmaSBidWlsZCB3aXRoIHRhcmdldCBtdXNsLXgzMi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhN2JmNWVlLi44ZWJlOTljIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNzcsNyArMTc3LDcgQEAgY2FzZSAiJGhvc3QiIGluCisgCVRBUkdFVERJUj14ODYKKyAJaWYgdGVzdCAkYWNfY3Zfc2l6ZW9mX3NpemVfdCA9IDQ7IHRoZW4KKyAJICBjYXNlICIkaG9zdCIgaW4KKy0JICAgICotZ251eDMyKQorKwkgICAgKi1nbnV4MzIgfCAqLW11c2x4MzIpCisgCSAgICAgIFRBUkdFVD1YODZfNjQKKyAJICAgICAgOzsKKyAJICAgICopCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4yLjEuYmIKaW5kZXggNDNlZWU4ZS4uYTBiMWZjZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4yLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4yLjEuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkEgcG9ydGFibGUgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9saWJmZmkvIgogREVTQ1JJUFRJT04gPSAiVGhlIGBsaWJmZmknIGxpYnJhcnkgcHJvdmlkZXMgYSBwb3J0YWJsZSwgaGlnaCBsZXZlbCBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8gdmFyaW91cyBjYWxsaW5nIFwKIGNvbnZlbnRpb25zLiAgVGhpcyBhbGxvd3MgYSBwcm9ncmFtbWVyIHRvIGNhbGwgYW55IGZ1bmN0aW9uIHNwZWNpZmllZCBieSBhIGNhbGwgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGF0IHJ1biBcCiB0aW1lLiBGRkkgc3RhbmRzIGZvciBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZS4gIEEgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgaXMgdGhlIHBvcHVsYXIgbmFtZSBmb3IgdGhlIFwKQEAgLTEzLDEzICsxNCwxNCBAQAogICAgICAgICAgICBmaWxlOi8vbm90LXdpbjMyLnBhdGNoIFwKIAkgICBmaWxlOi8vMDAwMS1taXBzLVVzZS1jb21waWxlci1pbnRlcm5hbC1kZWZpbmUtZm9yLWxpbnV4LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlwcy1maXgtTUlQUy1zb2Z0ZmxvYXQtYnVpbGQtaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJmZmktU3VwcG9ydC1tdXNsLXgzMi1idWlsZC5wYXRjaCBcCiAJICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiODNiODk1ODc2MDdlM2ViNjVjNzBkMzYxZjEzYmFiNDMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA2ZWJiOGUxZDlhMjJkMTllMzhkNjNmZGI4Mzk1NDI1M2YzOWJlZGM1ZDQ2MjMyYTA1NjQ1Njg1NzIyY2EzNyIKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtYnVpbGRkaXIiCi0KK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCiBpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmZmaS0ke1BWfSIKQEAgLTI5LDMgKzMxLDQgQEAKIE1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiCmluZGV4IGFjYTU5ZTEuLjFkZGRkZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIKQEAgLTMyLDYgKzMyLDcgQEAKICAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbS0xLjAvZm0teG1sLWZpbGUuaAogICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmZtLTEuMC9mbS12ZXJzaW9uLmgKICAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbS0xLjAvZm0tZXh0cmEuaAorICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmZtCiAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbGliZm0tZXh0cmEucGMKICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmZtLWV4dHJhLnNvKgogICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vbGliZm0tZXh0cmEuYQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDEtQWRkLWFuZC11c2UtcGtnLWNvbmZpZy1mb3ItbGliZ2NyeXB0LWluc3RlYWQtb2YtY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDFjM2RlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2gKQEAgLTAsMCArMSwxODMgQEAKK0Zyb20gNzJiOWU5MDQwZDU4YzE1ZjAzMDJiZDhhYmRhMjgxNzlmMDRlMWM1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDo0MzoxOCArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gQWRkIGFuZCB1c2UgcGtnLWNvbmZpZyBmb3IgbGliZ2NyeXB0IGluc3RlYWQgb2YgLWNvbmZpZworIHNjcmlwdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBoYXZlIGluZGljYXRlZCB0aGV5IGRvbid0IHdhbnQgYQorcGtnLWNvbmZpZyBkZXBlbmRlbmN5XQorCitSUCAyMDE0LzUvMjIKKworUmViYXNlIHRvIDEuOC4wCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgfCAgMSArCisgc3JjL2xpYmdjcnlwdC5tNCAgICB8IDcxICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2xpYmdjcnlwdC5wYy5pbiB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbGliZ2NyeXB0LnBjLmluCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGJiZTgxMDQuLjNkMmRlNzMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI2MDcsNiArMjYwNyw3IEBAIHJhbmRvbS9NYWtlZmlsZQorIGRvYy9NYWtlZmlsZQorIHNyYy9NYWtlZmlsZQorIHNyYy9nY3J5cHQuaAorK3NyYy9saWJnY3J5cHQucGMKKyBzcmMvbGliZ2NyeXB0LWNvbmZpZworIHNyYy92ZXJzaW9uaW5mby5yYworIHRlc3RzL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvc3JjL2xpYmdjcnlwdC5tNCBiL3NyYy9saWJnY3J5cHQubTQKK2luZGV4IGM2N2NmZWMuLjRlYTVmMmMgMTAwNjQ0CistLS0gYS9zcmMvbGliZ2NyeXB0Lm00CisrKysgYi9zcmMvbGliZ2NyeXB0Lm00CitAQCAtMjksMzAgKzI5LDYgQEAgZG5sIGlzIGFkZGVkIHRvIHRoZSBncGdfY29uZmlnX3NjcmlwdF93YXJuIHZhcmlhYmxlLgorIGRubAorIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCisgWyBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCistICBBQ19BUkdfV0lUSChsaWJnY3J5cHQtcHJlZml4LAorLSAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtbGliZ2NyeXB0LXByZWZpeD1QRlhdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVmaXggd2hlcmUgTElCR0NSWVBUIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpXSksCistICAgICBsaWJnY3J5cHRfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiLCBsaWJnY3J5cHRfY29uZmlnX3ByZWZpeD0iIikKKy0gIGlmIHRlc3QgeCIke0xJQkdDUllQVF9DT05GSUd9IiA9IHggOyB0aGVuCistICAgICBpZiB0ZXN0IHgiJHtsaWJnY3J5cHRfY29uZmlnX3ByZWZpeH0iICE9IHggOyB0aGVuCistICAgICAgICBMSUJHQ1JZUFRfQ09ORklHPSIke2xpYmdjcnlwdF9jb25maWdfcHJlZml4fS9iaW4vbGliZ2NyeXB0LWNvbmZpZyIKKy0gICAgIGVsc2UKKy0gICAgICAgY2FzZSAiJHtTWVNST09UfSIgaW4KKy0gICAgICAgICAvKikKKy0gICAgICAgICAgIGlmIHRlc3QgLXggIiR7U1lTUk9PVH0vYmluL2xpYmdjcnlwdC1jb25maWciIDsgdGhlbgorLSAgICAgICAgICAgICBMSUJHQ1JZUFRfQ09ORklHPSIke1NZU1JPT1R9L2Jpbi9saWJnY3J5cHQtY29uZmlnIgorLSAgICAgICAgICAgZmkKKy0gICAgICAgICAgIDs7CistICAgICAgICAgJycpCistICAgICAgICAgICA7OworLSAgICAgICAgICAqKQorLSAgICAgICAgICAgQUNfTVNHX1dBUk4oW0lnbm9yaW5nIFwkU1lTUk9PVCBhcyBpdCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aC5dKQorLSAgICAgICAgICAgOzsKKy0gICAgICAgZXNhYworLSAgICAgZmkKKy0gIGZpCistCistICBBQ19QQVRIX1BST0coTElCR0NSWVBUX0NPTkZJRywgbGliZ2NyeXB0LWNvbmZpZywgbm8pCisgICB0bXA9aWZlbHNlKFskMV0sICwxOjEuMi4wLCQxKQorICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgcmVxX2xpYmdjcnlwdF9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCitAQCAtNjIsNDggKzM4LDEzIEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCisgICAgICBtaW5fbGliZ2NyeXB0X3ZlcnNpb249IiR0bXAiCisgICBmaQorIAorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBMSUJHQ1JZUFQgLSB2ZXJzaW9uID49ICRtaW5fbGliZ2NyeXB0X3ZlcnNpb24pCistICBvaz1ubworLSAgaWYgdGVzdCAiJExJQkdDUllQVF9DT05GSUciICE9ICJubyIgOyB0aGVuCistICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2xpYmdjcnlwdF92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCistICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2xpYmdjcnlwdF92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCistICAgIHJlcV9taWNybz1gZWNobyAkbWluX2xpYmdjcnlwdF92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCistICAgIGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbj1gJExJQkdDUllQVF9DT05GSUcgLS12ZXJzaW9uYAorLSAgICBtYWpvcj1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKKy0gICAgbWlub3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wyLydgCistICAgIG1pY3JvPWBlY2hvICRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMy8nYAorLSAgICBpZiB0ZXN0ICIkbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICBlbHNlCistICAgICAgICBpZiB0ZXN0ICIkbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICBvaz15ZXMKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCistICBmaQorLSAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgQUNfTVNHX1JFU1VMVChbeWVzICgkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uKV0pCistICBlbHNlCistICAgIEFDX01TR19SRVNVTFQobm8pCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoTElCR0NSWVBULCBbbGliZ2NyeXB0ID49ICRtaW5fbGliZ2NyeXB0X3ZlcnNpb25dLCBbb2s9eWVzXSwgW29rPW5vXSkKKysKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgbGliZ2NyeXB0LCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZQorICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZ3QgMCA7IHRoZW4KKy0gICAgICAgIHRtcD1gJExJQkdDUllQVF9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisrICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9YXBpX3ZlcnNpb24gbGliZ2NyeXB0YAorICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCisgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW0xJQkdDUllQVCBBUEkgdmVyc2lvbl0pCisgICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2xpYmdjcnlwdF9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCitAQCAtMTE2LDEwICs1Nyw4IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCisgICAgICBmaQorICAgZmkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIExJQkdDUllQVF9DRkxBR1M9YCRMSUJHQ1JZUFRfQ09ORklHIC0tY2ZsYWdzYAorLSAgICBMSUJHQ1JZUFRfTElCUz1gJExJQkdDUllQVF9DT05GSUcgLS1saWJzYAorICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQorLSAgICBsaWJnY3J5cHRfY29uZmlnX2hvc3Q9YCRMSUJHQ1JZUFRfQ09ORklHIC0taG9zdCAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vbmVgCisrICAgIGxpYmdjcnlwdF9jb25maWdfaG9zdD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1ob3N0IGxpYmdjcnlwdGAKKyAgICAgaWYgdGVzdCB4IiRsaWJnY3J5cHRfY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgorICAgICAgIGlmIHRlc3QgeCIkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IiAhPSB4IiRob3N0IiA7IHRoZW4KKyAgIEFDX01TR19XQVJOKFtbCitAQCAtMTM0LDggKzczLDYgQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKKyAgICAgICBmaQorICAgICBmaQorICAgZWxzZQorLSAgICBMSUJHQ1JZUFRfQ0ZMQUdTPSIiCistICAgIExJQkdDUllQVF9MSUJTPSIiCisgICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCisgICBmaQorICAgQUNfU1VCU1QoTElCR0NSWVBUX0NGTEFHUykKK2RpZmYgLS1naXQgYS9zcmMvbGliZ2NyeXB0LnBjLmluIGIvc3JjL2xpYmdjcnlwdC5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjJmYzhmNTMKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9saWJnY3J5cHQucGMuaW4KK0BAIC0wLDAgKzEsMzMgQEAKKysjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIHBrZy1jb25maWcgbWV0YWRhdGEgZmlsZS4KKysjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKysjIEF1dGhvcjogU2ltb24gSm9zZWZzc29uCisrIworKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdGhlIGF1dGhvciBnaXZlcworKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisrIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKysjCisrIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrIyBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0IGV2ZW4gdGhlCisrIyBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKysKKytwcmVmaXg9QHByZWZpeEAKKytleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACisrbGliZGlyPUBsaWJkaXJACisraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKysKKysjIEFQSSBpbmZvCisrYXBpX3ZlcnNpb249QExJQkdDUllQVF9DT05GSUdfQVBJX1ZFUlNJT05ACisraG9zdD1ATElCR0NSWVBUX0NPTkZJR19IT1NUQAorKworKyMgTWlzYyBpbmZvcm1hdGlvbi4KKytzeW1tZXRyaWNfY2lwaGVycz1ATElCR0NSWVBUX0NJUEhFUlNACisrYXN5bW1ldHJpY19jaXBoZXJzPUBMSUJHQ1JZUFRfUFVCS0VZX0NJUEhFUlNACisrZGlnZXN0cz1ATElCR0NSWVBUX0RJR0VTVFNACisrCisrTmFtZTogbGliZ2NyeXB0CisrRGVzY3JpcHRpb246IEdOVSBjcnlwdG8gbGlicmFyeQorK1VSTDogaHR0cDovL3d3dy5nbnVwZy5vcmcKKytWZXJzaW9uOiBAVkVSU0lPTkAKKytMaWJzOiAtTCR7bGliZGlyfSAtbGdjcnlwdAorK0xpYnMucHJpdmF0ZTogLUwke2xpYmRpcn0gLWxncGctZXJyb3IKKytDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDEtZWNjLVN0b3JlLUVkRFNBLXNlc3Npb24ta2V5LWluLXNlY3VyZS1tZW1vcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDEtZWNjLVN0b3JlLUVkRFNBLXNlc3Npb24ta2V5LWluLXNlY3VyZS1tZW1vcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNGRmZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLWVjYy1TdG9yZS1FZERTQS1zZXNzaW9uLWtleS1pbi1zZWN1cmUtbWVtb3J5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotQ1ZFOiBDVkUtMjAxNy05NTI2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDRhMTc2OGQ2ODNmNjU3MmFkODZkODMzNTA4YzcwZTZiM2RjMWVmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKbyBWYW4gQnVsY2sgPGpvLnZhbmJ1bGNrQGNzLmt1bGV1dmVuLmJlPgotRGF0ZTogVGh1LCAxOSBKYW4gMjAxNyAxNzowMDoxNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBlY2M6IFN0b3JlIEVkRFNBIHNlc3Npb24ga2V5IGluIHNlY3VyZSBtZW1vcnkuCi0KLSogY2lwaGVyL2VjYy1lZGRzYS5jIChfZ2NyeV9lY2NfZWRkc2Ffc2lnbik6IHVzZSBtcGlfc25ldyB0byBhbGxvY2F0ZQotc2Vzc2lvbiBrZXkuCi0tLQotCi1BbiBhdHRhY2tlciB3aG8gbGVhcm5zIHRoZSBFZERTQSBzZXNzaW9uIGtleSBmcm9tIHNpZGUtY2hhbm5lbAotb2JzZXJ2YXRpb24gZHVyaW5nIHRoZSBzaWduaW5nIHByb2Nlc3MsIGNhbiBlYXNpbHkgcmV2b3ZlciB0aGUgbG9uZy0KLXRlcm0gc2VjcmV0IGtleS4gU3RvcmluZyB0aGUgc2Vzc2lvbiBrZXkgaW4gc2VjdXJlIG1lbW9yeSBlbnN1cmVzIHRoYXQKLWNvbnN0YW50IHRpbWUgcG9pbnQgb3BlcmF0aW9ucyBhcmUgdXNlZCBpbiB0aGUgTVBJIGxpYnJhcnkuCi0KLVNpZ25lZC1vZmYtYnk6IEpvIFZhbiBCdWxjayA8am8udmFuYnVsY2tAY3Mua3VsZXV2ZW4uYmU+Ci0tLS0KLSBjaXBoZXIvZWNjLWVkZHNhLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvZWNjLWVkZHNhLmMgYi9jaXBoZXIvZWNjLWVkZHNhLmMKLWluZGV4IGY5MWY4NDg5Li44MTNlMDMwZCAxMDA2NDQKLS0tLSBhL2NpcGhlci9lY2MtZWRkc2EuYwotKysrIGIvY2lwaGVyL2VjYy1lZGRzYS5jCi1AQCAtNjAzLDcgKzYwMyw3IEBAIF9nY3J5X2VjY19lZGRzYV9zaWduIChnY3J5X21waV90IGlucHV0LCBFQ0Nfc2VjcmV0X2tleSAqc2tleSwKLSAgIGEgPSBtcGlfc25ldyAoMCk7Ci0gICB4ID0gbXBpX25ldyAoMCk7Ci0gICB5ID0gbXBpX25ldyAoMCk7Ci0tICByID0gbXBpX25ldyAoMCk7Ci0rICByID0gbXBpX3NuZXcgKDApOwotICAgY3R4ID0gX2djcnlfbXBpX2VjX3BfaW50ZXJuYWxfbmV3IChza2V5LT5FLm1vZGVsLCBza2V5LT5FLmRpYWxlY3QsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrZXktPkUucCwgc2tleS0+RS5hLCBza2V5LT5FLmIpOwotICAgYiA9IChjdHgtPm5iaXRzKzcpLzg7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwMi1saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NTU0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDk3NTcwZWYyNzFlYTFmYjdiNWNhOTAzZWVjODhmNjg0MDdiMGVjNzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDEwOjQ0OjQxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBsaWJnY3J5cHQ6IGZpeCBidWlsZGluZyBlcnJvciB3aXRoICctTzInIGluIHN5c3Jvb3QgcGF0aAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworQ2hhcmFjdGVycyBsaWtlICctTzInIG9yICctT2Zhc3QnIHdpbGwgYmUgcmVwbGFjZWQgYnkgJy1PMScgd2hlbgorY29tcGlsaW5nIGNpcGhlci4KK0lmIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgbGliZ2NyeXB0IGFuZCBzeXNyb290IGNvbnRhaW5zIHN1Y2gKK2NoYXJhY3RlcnMsIHdlIHdvdWxkCitnZXQgY29tcGlsZSBlcnJvcnMgYmVjYXVzZSB0aGUgc3lzcm9vdCBwYXRoIGhhcyBiZWVuIG1vZGlmaWVkLgorCitGaXggdGhpcyBieSBhZGRpbmcgYmxhbmsgc3BhY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9yaWdpbmFsIG1hdGNoaW5nCitwYXR0ZXJuIGluIHRoZQorc2VkIGNvbW1hbmQuCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDEuOC4wCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjaXBoZXIvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jaXBoZXIvTWFrZWZpbGUuYW0gYi9jaXBoZXIvTWFrZWZpbGUuYW0KK2luZGV4IDk1YzQ1MTAuLmJkNTJlYzcgMTAwNjQ0CistLS0gYS9jaXBoZXIvTWFrZWZpbGUuYW0KKysrKyBiL2NpcGhlci9NYWtlZmlsZS5hbQorQEAgLTExNiw3ICsxMTYsNyBAQCBnb3N0LXMtYm94OiBnb3N0LXMtYm94LmMKKyAKKyAKKyBpZiBFTkFCTEVfT19GTEFHX01VTkdJTkcKKy1vX2ZsYWdfbXVuZ2luZyA9IHNlZCAtZSAncy8tT1woWzItOXNdWzItOXNdKlwpLy1PMS8nIC1lICdzLy1PZmFzdC8tTzEvZycKKytvX2ZsYWdfbXVuZ2luZyA9IHNlZCAtZSAncy8gLU9cKFsyLTlzXVsyLTlzXSpcKSAvIC1PMSAvJyAtZSAncy8gLU9mYXN0IC8gLU8xIC9nJworIGVsc2UKKyBvX2ZsYWdfbXVuZ2luZyA9IGNhdAorIGVuZGlmCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAzLXRlc3RzLWJlbmNoLXNsb3BlLmMtd29ya2Fyb3VuZC1JQ0UtZmFpbHVyZS1vbi1taXBzLXcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDMtdGVzdHMtYmVuY2gtc2xvcGUuYy13b3JrYXJvdW5kLUlDRS1mYWlsdXJlLW9uLW1pcHMtdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDVkZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAzLXRlc3RzLWJlbmNoLXNsb3BlLmMtd29ya2Fyb3VuZC1JQ0UtZmFpbHVyZS1vbi1taXBzLXcucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSA3Y2M3MDJjN2I1YTFjY2MyYjAwOTFmM2VmZmExMzkxYjZjMzAzMGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDo0NjoyOCArMDgwMAorU3ViamVjdDogW1BBVENIIDMvNF0gdGVzdHMvYmVuY2gtc2xvcGUuYzogd29ya2Fyb3VuZCBJQ0UgZmFpbHVyZSBvbiBtaXBzIHdpdGgKKyAnLU8gLWcnCisKK0hpdCBhIElDRSBhbmQgY291bGQgcmVkdWNlIGl0IHRvIHRoZSBmb2xsb3dpbmcgbWluaW1hbCBleGFtcGxlOgorCisxLiBPbmx5IHRoZSBzaXplIG9mIGFycmF5IGFzc2lnbmVkIHdpdGggMiBjYXVzZWQgdGhlIGlzc3VlOgorJCBjYXQgPiBtaXBnY2MtdGVzdC5jIDw8IEVORAorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgICAgICBjaGFyICpwU3RyQXJyeVtBUlJBWV9TSVpFX01BWF0gPSB7ImhlbGxvIn07CisgICAgICAgIGludCBpID0gMDsKKworICAgICAgICB3aGlsZShwU3RyQXJyeVtpXSAmJiBpPEFSUkFZX1NJWkVfTUFYKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgcFN0ckFycnlbaV0pOworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAwOworfQorCitFTkQKKworMi4gT25seSAtTzEgYW5kIC1nIG9uIG1pcHMgY2F1c2VkIHRoZSBpc3N1ZToKKyQgbWlwcy1wb2t5LWxpbnV4LWdjYyAtTzEgLWcgLW8gbWlwZ2NjLXRlc3QgbWlwZ2NjLXRlc3QuYworbWlwZ2NjLXRlc3QuYzogSW4gZnVuY3Rpb24gJ21haW4nOgorbWlwZ2NjLXRlc3QuYzoxODoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiwKK2F0IGR3YXJmMm91dC5jOjIwODEwCisgfQorIF4KK1BsZWFzZSBzdWJtaXQgYSBmdWxsIGJ1ZyByZXBvcnQsCit3aXRoIHByZXByb2Nlc3NlZCBzb3VyY2UgaWYgYXBwcm9wcmlhdGUuCitTZWUgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+IGZvciBpbnN0cnVjdGlvbnMKKworMy4gVGhlIHF1aWNrIHdvcmtyb3VuZCBpcyB0cnlpbmcgdG8gZW5sYXJnZSB0aGUgc2l6ZSBvZiBhcnJheSB3aXRoCitsYXJnZXIKK3RoYW4gMi4KKworNC4gRmlsZSBhIGJ1ZyB0byBHTlUsIGJ1dCBpdCBjb3VsZCBub3QgYmUgcmVwcm9kdWNlZCBvbiB0aGVyZQorZW52aXJvbm1lbnQuCitodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTYwNjQzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1JlYmFzZSB0byAxLjguMAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdHMvYmVuY2gtc2xvcGUuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9iZW5jaC1zbG9wZS5jIGIvdGVzdHMvYmVuY2gtc2xvcGUuYworaW5kZXggNzVlNmU0My4uNGU3MDg0MiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2JlbmNoLXNsb3BlLmMKKysrKyBiL3Rlc3RzL2JlbmNoLXNsb3BlLmMKK0BAIC0xNDYzLDcgKzE0NjMsNyBAQCBzdGF0aWMgc3RydWN0IGJlbmNoX29wcyBoYXNoX29wcyA9IHsKKyB9OworIAorIAorLXN0YXRpYyBzdHJ1Y3QgYmVuY2hfaGFzaF9tb2RlIGhhc2hfbW9kZXNbXSA9IHsKKytzdGF0aWMgc3RydWN0IGJlbmNoX2hhc2hfbW9kZSBoYXNoX21vZGVzWzNdID0geworICAgeyIiLCAmaGFzaF9vcHN9LAorICAgezB9LAorIH07CitAQCAtMTYyOSw3ICsxNjI5LDcgQEAgc3RhdGljIHN0cnVjdCBiZW5jaF9vcHMgbWFjX29wcyA9IHsKKyB9OworIAorIAorLXN0YXRpYyBzdHJ1Y3QgYmVuY2hfbWFjX21vZGUgbWFjX21vZGVzW10gPSB7Cisrc3RhdGljIHN0cnVjdCBiZW5jaF9tYWNfbW9kZSBtYWNfbW9kZXNbM10gPSB7CisgICB7IiIsICZtYWNfb3BzfSwKKyAgIHswfSwKKyB9OworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA0LXRlc3RzLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYyMmRmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZTIwZGJkYjBiOGYwYWY4NDBlZjkwYjI5OWM0ZTIyNzdjNTJkZGY4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTIgSnVuIDIwMTYgMDQ6NDQ6MjkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIHRlc3RzL01ha2VmaWxlLmFtOiBmaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0bworIGBwdGhyZWFkX2NyZWF0ZScKKworQWRkIG1pc3NpbmcgJy1scHRocmVhZCcgdG8gQ0ZMQUdTCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDE3NDRlYTcuLjA0Y2Y0MjUgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC02NCw0ICs2NCw0IEBAIEVYVFJBX0RJU1QgPSBSRUFETUUgcnNhLTE2ay5rZXkgY2F2c190ZXN0cy5zaCBjYXZzX2RyaXZlci5wbCBcCisgCisgTERBREQgPSAkKHN0YW5kYXJkX2xkYWRkKSAkKEdQR19FUlJPUl9MSUJTKQorIHRfbG9ja19MREFERCA9ICQoc3RhbmRhcmRfbGRhZGQpICQoR1BHX0VSUk9SX01UX0xJQlMpCistdF9sb2NrX0NGTEFHUyA9ICQoR1BHX0VSUk9SX01UX0NGTEFHUykKKyt0X2xvY2tfQ0ZMQUdTID0gJChHUEdfRVJST1JfTVRfQ0ZMQUdTKSAtbHB0aHJlYWQKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmZGQ3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNS1lY2MtQWRkLWlucHV0LXZhbGlkYXRpb24tZm9yLVgyNTUxOS5wYXRjaApAQCAtMCwwICsxLDE1OCBAQAorRnJvbSBlZjU3MGUzZDI3NzNjMTIxMjZlN2QzZmNkYzRkYjllZjgwYTVlMjE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDE4OjEzOjI4ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIGVjYzogQWRkIGlucHV0IHZhbGlkYXRpb24gZm9yIFgyNTUxOS4KKworKiBjaXBoZXIvZWNjLmMgKGVjY19kZWNyeXB0X3Jhdyk6IEFkZCBpbnB1dCB2YWxpZGF0aW9uLgorKiBtcGkvZWMuYyAoZWNfcF9pbml0KTogVXNlIHNjcmF0Y2ggYnVmZmVyIGZvciBiYWQgcG9pbnRzLgorKF9nY3J5X21waV9lY19iYWRfcG9pbnQpOiBOZXcuCisKKy0tCisKK0ZvbGxvd2luZyBpcyB0aGUgcGFwZXIgZGVzY3JpYmluZyB0aGUgYXR0YWNrOgorCisgICAgTWF5IHRoZSBGb3VydGggQmUgV2l0aCBZb3U6IEEgTWljcm9hcmNoaXRlY3R1cmFsIFNpZGUgQ2hhbm5lbCBBdHRhY2sKKyAgICBvbiBSZWFsLVdvcmxkIEFwcGxpY2F0aW9ucyBvZiBDdXJ2ZTI1NTE5CisgICAgYnkgRGFuaWVsIEdlbmtpbiwgTHVrZSBWYWxlbnRhLCBhbmQgWXV2YWwgWWFyb20KKworSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHdlIGRvIG91dHB1dCBjaGVja2luZyBhbmQgaXQgcmVzdWx0cyBhbgorZXJyb3IgZm9yIHRob3NlIGJhZCBwb2ludHMuICBIb3dldmVyLCB3aGVuIGF0dGFja2VkLCB0aGUgY29tcHV0YXRpb24KK3dpbGwgZG9uZSB3aXRoIGxlYWsgb2YgcHJpdmF0ZSBrZXksIGV2ZW4gaXQgd2lsbCByZXN1bHRzIGVycm9ycy4gIFRvCittaXRpZ2F0ZSBsZWFrLCB3ZSBhZGRlZCBpbnB1dCB2YWxpZGF0aW9uLgorCitOb3RlIHRoYXQgd2Ugb25seSBsaXN0IGJhZCBwb2ludHMgd2l0aCBNU0I9MC4gIEJ5IFgyNTUxOSwgTVNCIGlzCithbHdheXMgY2xlYXJlZC4KKworSW4gZnV0dXJlLCB3ZSBzaG91bGQgaW1wbGVtZW50IGNvbnN0YW50LXRpbWUgZmllbGQgY29tcHV0YXRpb24uICBUaGVuLAordGhpcyBpbnB1dCB2YWxpZGF0aW9uIGNvdWxkIGJlIHJlbW92ZWQsIGlmIHBlcmZvcm1hbmNlIGlzIGltcG9ydGFudAorYW5kIHdlIGFyZSBzdXJlIGZvciBubyBsZWFrLgorCitDVkUtaWQ6IENWRS0yMDE3LTAzNzkKK1NpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTAzNzkKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNpcGhlci9lY2MuYyB8IDE3ICsrKysrKysrKysrKysrKy0tCisgbXBpL2VjLmMgICAgIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCisgc3JjL21waS5oICAgIHwgIDEgKworIDMgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NpcGhlci9lY2MuYyBiL2NpcGhlci9lY2MuYworaW5kZXggZTI1YmYwOS4uNGUzZTViMSAxMDA2NDQKKy0tLSBhL2NpcGhlci9lY2MuYworKysrIGIvY2lwaGVyL2VjYy5jCitAQCAtMTYyOCw5ICsxNjI4LDIyIEBAIGVjY19kZWNyeXB0X3JhdyAoZ2NyeV9zZXhwX3QgKnJfcGxhaW4sIGdjcnlfc2V4cF90IHNfZGF0YSwgZ2NyeV9zZXhwX3Qga2V5cGFybXMpCisgICBpZiAoREJHX0NJUEhFUikKKyAgICAgbG9nX3ByaW50cG50ICgiZWNjX2RlY3J5cHQgICAga0ciLCAma0csIE5VTEwpOworIAorLSAgaWYgKCEoZmxhZ3MgJiBQVUJLRVlfRkxBR19ESkJfVFdFQUspCisrICBpZiAoKGZsYWdzICYgUFVCS0VZX0ZMQUdfREpCX1RXRUFLKSkKKysgICAgeworICAgICAgIC8qIEZvciBYMjU1MTksIGJ5IGl0cyBkZWZpbml0aW9uLCB2YWxpZGF0aW9uIHNob3VsZCBub3QgYmUgZG9uZS4gICovCistICAgICAgJiYgIV9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoJmtHLCBlYykpCisrICAgICAgLyogKEluc3RlYWQsIHdlIGRvIG91dHB1dCBjaGVjay4pCisrICAgICAgICoKKysgICAgICAgKiBIb3dldmVyLCB0byBtaXRpZ2F0ZSBzZWNyZXQga2V5IGxlYWsgZnJvbSBvdXIgaW1wbGVtZW50YXRpb24sCisrICAgICAgICogd2UgYWxzbyBkbyBpbnB1dCB2YWxpZGF0aW9uIGhlcmUuICBGb3IgY29uc3RhbnQtdGltZQorKyAgICAgICAqIGltcGxlbWVudGF0aW9uLCB3ZSBjYW4gcmVtb3ZlIHRoaXMgaW5wdXQgdmFsaWRhdGlvbi4KKysgICAgICAgKi8KKysgICAgICBpZiAoX2djcnlfbXBpX2VjX2JhZF9wb2ludCAoJmtHLCBlYykpCisrICAgICAgICB7CisrICAgICAgICAgIHJjID0gR1BHX0VSUl9JTlZfREFUQTsKKysgICAgICAgICAgZ290byBsZWF2ZTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoIV9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoJmtHLCBlYykpCisgICAgIHsKKyAgICAgICByYyA9IEdQR19FUlJfSU5WX0RBVEE7CisgICAgICAgZ290byBsZWF2ZTsKK2RpZmYgLS1naXQgYS9tcGkvZWMuYyBiL21waS9lYy5jCitpbmRleCBhMGY3MzU3Li40YzE2NjAzIDEwMDY0NAorLS0tIGEvbXBpL2VjLmMKKysrKyBiL21waS9lYy5jCitAQCAtMzk2LDYgKzM5NiwyOSBAQCBlY19nZXRfdHdvX2ludl9wIChtcGlfZWNfdCBlYykKKyB9CisgCisgCisrc3RhdGljIGNvbnN0IGNoYXIgKmN1cnZlMjU1MTlfYmFkX3BvaW50c1tdID0geworKyAgIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCisrICAiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxIiwKKysgICIweDAwYjg0OTVmMTYwNTYyODZmZGIxMzI5Y2ViOGQwOWRhNmFjNDlmZjFmYWUzNTYxNmFlYjg0MTNiN2M3YWViZTAiLAorKyAgIjB4NTcxMTlmZDBkZDRlMjJkODg2OGUxYzU4YzQ1YzQ0MDQ1YmVmODM5YzU1YjFkMGIxMjQ4YzUwYTNiYzk1OWM1ZiIsCisrICAiMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVjIiwKKysgICIweDdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWQiLAorKyAgIjB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZSIsCisrICBOVUxMCisrfTsKKysKKytzdGF0aWMgZ2NyeV9tcGlfdAorK3NjYW52YWwgKGNvbnN0IGNoYXIgKnN0cmluZykKKyt7CisrICBncGdfZXJyX2NvZGVfdCByYzsKKysgIGdjcnlfbXBpX3QgdmFsOworKworKyAgcmMgPSBfZ2NyeV9tcGlfc2NhbiAoJnZhbCwgR0NSWU1QSV9GTVRfSEVYLCBzdHJpbmcsIDAsIE5VTEwpOworKyAgaWYgKHJjKQorKyAgICBsb2dfZmF0YWwgKCJzY2FubmluZyBFQ0MgcGFyYW1ldGVyIGZhaWxlZDogJXNcbiIsIGdwZ19zdHJlcnJvciAocmMpKTsKKysgIHJldHVybiB2YWw7CisrfQorKworIAorIC8qIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZWQgYSBjb250ZXh0IGZvciBlbGxpcHRpYyBjdXJ2ZSBiYXNlZCBvbiB0aGUKKyAgICBmaWVsZCBHRihwKS4gIFAgaXMgdGhlIHByaW1lIHNwZWNpZnlpbmcgdGhpcyBmaWVsZCwgQSBpcyB0aGUgZmlyc3QKK0BAIC00MzQsOSArNDU3LDE3IEBAIGVjX3BfaW5pdCAobXBpX2VjX3QgY3R4LCBlbnVtIGdjcnlfbXBpX2VjX21vZGVscyBtb2RlbCwKKyAKKyAgIF9nY3J5X21waV9lY19nZXRfcmVzZXQgKGN0eCk7CisgCistICAvKiBBbGxvY2F0ZSBzY3JhdGNoIHZhcmlhYmxlcy4gICovCistICBmb3IgKGk9MDsgaTwgRElNKGN0eC0+dC5zY3JhdGNoKTsgaSsrKQorLSAgICBjdHgtPnQuc2NyYXRjaFtpXSA9IG1waV9hbGxvY19saWtlIChjdHgtPnApOworKyAgaWYgKG1vZGVsID09IE1QSV9FQ19NT05UR09NRVJZKQorKyAgICB7CisrICAgICAgZm9yIChpPTA7IGk8IERJTShjdHgtPnQuc2NyYXRjaCkgJiYgY3VydmUyNTUxOV9iYWRfcG9pbnRzW2ldOyBpKyspCisrICAgICAgICBjdHgtPnQuc2NyYXRjaFtpXSA9IHNjYW52YWwgKGN1cnZlMjU1MTlfYmFkX3BvaW50c1tpXSk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIC8qIEFsbG9jYXRlIHNjcmF0Y2ggdmFyaWFibGVzLiAgKi8KKysgICAgICBmb3IgKGk9MDsgaTwgRElNKGN0eC0+dC5zY3JhdGNoKTsgaSsrKQorKyAgICAgICAgY3R4LT50LnNjcmF0Y2hbaV0gPSBtcGlfYWxsb2NfbGlrZSAoY3R4LT5wKTsKKysgICAgfQorIAorICAgLyogUHJlcGFyZSBmb3IgZmFzdCByZWR1Y3Rpb24uICAqLworICAgLyogRklYTUU6IG5lZWQgYSB0ZXN0IGZvciBOSVNUIHZhbHVlcy4gIEhvd2V2ZXIgaXQgZG9lcyBub3QgZ2FpbiB1cworQEAgLTE1NzIsMyArMTYwMywxNyBAQCBfZ2NyeV9tcGlfZWNfY3VydmVfcG9pbnQgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGN0eCkKKyAKKyAgIHJldHVybiByZXM7CisgfQorKworKworK2ludAorK19nY3J5X21waV9lY19iYWRfcG9pbnQgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGN0eCkKKyt7CisrICBpbnQgaTsKKysgIGdjcnlfbXBpX3QgeF9iYWQ7CisrCisrICBmb3IgKGkgPSAwOyAoeF9iYWQgPSBjdHgtPnQuc2NyYXRjaFtpXSk7IGkrKykKKysgICAgaWYgKCFtcGlfY21wIChwb2ludC0+eCwgeF9iYWQpKQorKyAgICAgIHJldHVybiAxOworKworKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL3NyYy9tcGkuaCBiL3NyYy9tcGkuaAoraW5kZXggYjUzODViNS4uYWViYTdmOCAxMDA2NDQKKy0tLSBhL3NyYy9tcGkuaAorKysrIGIvc3JjL21waS5oCitAQCAtMjk2LDYgKzI5Niw3IEBAIHZvaWQgX2djcnlfbXBpX2VjX211bF9wb2ludCAobXBpX3BvaW50X3QgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NyeV9tcGlfdCBzY2FsYXIsIG1waV9wb2ludF90IHBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBpX2VjX3QgY3R4KTsKKyBpbnQgIF9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KTsKKytpbnQgX2djcnlfbXBpX2VjX2JhZF9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KTsKKyAKKyBnY3J5X21waV90IF9nY3J5X21waV9lY19lYzJvcyAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgZWN0eCk7CisgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA2LUZpeC1idWlsZGluZy1BQXJjaDMyLUNFLWltcGxlbWVudGF0aW9ucy13aGVuLXRhcmdldC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDYtRml4LWJ1aWxkaW5nLUFBcmNoMzItQ0UtaW1wbGVtZW50YXRpb25zLXdoZW4tdGFyZ2V0LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWI5ZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA2LUZpeC1idWlsZGluZy1BQXJjaDMyLUNFLWltcGxlbWVudGF0aW9ucy13aGVuLXRhcmdldC0ucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSA0YTdhYTMwYWU5ZjNjZTc5OGRkODg2YzJmMmQ0MTY0YzQzMDI3NzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgorRGF0ZTogU2F0LCAyOSBKdWwgMjAxNyAxNDozNDoyMyArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGRpbmcgQUFyY2gzMiBDRSBpbXBsZW1lbnRhdGlvbnMgd2hlbiB0YXJnZXQgaXMgQVJNdjYKKyBhcmNoCisKKyogY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TOiBTZWxlY3QgQVJNdjggYXJjaGl0ZWN1cmUuCisqIGNpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgorKiBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgorKiBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUzogRGl0dG8uCisqIGNvbmZpZ3VyZS5hYyAoZ2NyeV9jdl9nY2NfaW5saW5lX2FzbV9hYXJjaDMyX2NyeXB0byk6IERpdHRvLgorLS0KKworUmFzcGJpYW4gZGlzdHJpYnV0aW9uIGRlZmF1bHRzIHRvIEFSTXY2IGFyY2hpdGVjdHVyZSB0aHVzICdyYml0JworaW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSB3aXRoIGRlZmF1bHQgY29tcGlsZXIgZmxhZ3MuIFBhdGNoCithZGRzIGV4cGxpY2l0IGFyY2hpdGVjdHVyZSBzZWxlY3Rpb24gZm9yIEFSTXY4IHRvIGVuYWJsZSAncmJpdCcKK3VzYWdlIHdpdGggQVJNdjgvQUFyY2gzMi1DRSBhc3NlbWJseSBpbXBsZW1lbnRhdGlvbnMgb2YgU0hBLAorR0hBU0ggYW5kIEFFUy4KKworUmVwb3J0ZWQtYnk6IENocmlzIEhvcnJ5IDx6ZXJiZXlAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCistLS0KKyBjaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMgfCAxICsKKyBjaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TICAgfCAxICsKKyBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMgICAgICAgfCAxICsKKyBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUyAgICAgfCAxICsKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TCitpbmRleCBiNjFhNzg3MS4uMWRlNjZhMTYgMTAwNjQ0CistLS0gYS9jaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMKKysrKyBiL2NpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKQorIAorIC5zeW50YXggdW5pZmllZAorKy5hcmNoIGFybXY4LWEKKyAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4CisgLmFybQorIAorZGlmZiAtLWdpdCBhL2NpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCitpbmRleCBmMzc1ZjY3My4uNWM4ZmEzYzAgMTAwNjQ0CistLS0gYS9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCisrKysgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCitAQCAtMjQsNiArMjQsNyBAQAorICAgICBkZWZpbmVkKEhBVkVfR0NDX0lOTElORV9BU01fQUFSQ0gzMl9DUllQVE8pCisgCisgLnN5bnRheCB1bmlmaWVkCisrLmFyY2ggYXJtdjgtYQorIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKKyAuYXJtCisgCitkaWZmIC0tZ2l0IGEvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TCitpbmRleCBiMGJjNWZmZS4uYmYyYjIzM2IgMTAwNjQ0CistLS0gYS9jaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMKKysrKyBiL2NpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEExKQorIAorIC5zeW50YXggdW5pZmllZAorKy5hcmNoIGFybXY4LWEKKyAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4CisgLmFybQorIAorZGlmZiAtLWdpdCBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMKK2luZGV4IDIwNDFhMjM3Li4yYjE3YWIxYiAxMDA2NDQKKy0tLSBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TCisrKysgYi9jaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEEyNTYpCisgCisgLnN5bnRheCB1bmlmaWVkCisrLmFyY2ggYXJtdjgtYQorIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKKyAuYXJtCisgCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAyN2ZhYTdmNC4uNjZlN2NkNjcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE2MTksNiArMTYxOSw3IEBAIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIEdDQyBpbmxpbmUgYXNzZW1ibGVyIHN1cHBvcnRzIEFBcmNoMzIgQ3J5cHRvIEV4dGVuc2lvbiBpCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgW1tfX2FzbV9fKAorICAgICAgICAgICAgICAgICAiLnN5bnRheCB1bmlmaWVkXG5cdCIKKysgICAgICAgICAgICAgICAgIi5hcmNoIGFybXY4LWFcblx0IgorICAgICAgICAgICAgICAgICAiLmFybVxuXHQiCisgICAgICAgICAgICAgICAgICIuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4XG5cdCIKKyAKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvQ1ZFLTIwMTctNzUyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvQ1ZFLTIwMTctNzUyNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg0ZmE5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL0NWRS0yMDE3LTc1MjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NTUgKzAsMCBAQAotRmx1c2grcmVsb2FkIHNpZGUtY2hhbm5lbCBhdHRhY2sgb24gUlNBIHNlY3JldCBrZXlzIGR1YmJlZCAiU2xpZGluZyByaWdodAotaW50byBkaXNhc3RlciIuCi0KLUNWRTogQ1ZFLTIwMTctNzUyNgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAxMmVlNDAwYzM5ZTBlYmI1ZmI4MTljMzkyNmQ0NTljMjc4ZmM5OWZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1EYXRlOiBUdWUsIDQgQXByIDIwMTcgMTc6Mzg6MDUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIG1waTogU2ltcGxpZnkgbXBpX3Bvd20uCi0KLSogbXBpL21waS1wb3cuYyAoX2djcnlfbXBpX3Bvd20pOiBTaW1wbGlmeSB0aGUgbG9vcC4KLQotLS0KLQotVGhpcyBmaXggaXMgbm90IGEgc29sdXRpb24gZm9yIHRoZSBwcm9ibGVtIHJlcG9ydGVkICh5ZXQpLiAgVGhlCi1wcm9ibGVtIGlzIHRoYXQgdGhlIGN1cnJlbnQgYWxnb3JpdGhtIG9mIF9nY3J5X21waV9wb3dtIGRlcGVuZHMgb24KLWV4cG9uZW50IGFuZCBzb21lIGluZm9ybWF0aW9uIGxlYWtzIGlzIHBvc3NpYmxlLgotCi1SZXBvcnRlZC1ieTogQW5kcmVhcyBaYW5rbCA8YW5kcmVhcy56YW5rbEBhaXNlYy5mcmF1bmhvZmVyLmRlPgotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci0KLShiYWNrcG9ydCBmcm9tIG1hc3RlciBjb21taXQ6Ci03MTk0NjhlNTMxMzNkM2JkZjEyMTU2YzViZmRlYTJiZjE1ZjlmNmYxKQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gbXBpL21waS1wb3cuYyB8IDEwNSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbXBpL21waS1wb3cuYyBiL21waS9tcGktcG93LmMKLWluZGV4IGE3ODBlYmQxLi43YjNkYzMxOCAxMDA2NDQKLS0tLSBhL21waS9tcGktcG93LmMKLSsrKyBiL21waS9tcGktcG93LmMKLUBAIC02MDksMTIgKzYwOSw4IEBAIF9nY3J5X21waV9wb3dtIChnY3J5X21waV90IHJlcywKLSAgICAgICBpZiAoZSA9PSAwKQotICAgICAgICAgewotICAgICAgICAgICBqICs9IGM7Ci0tICAgICAgICAgIGktLTsKLS0gICAgICAgICAgaWYgKCBpIDwgMCApCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgYyA9IDA7Ci0tICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgICB9Ci0rICAgICAgICAgIGlmICggLS1pIDwgMCApCi0rICAgICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAgIGUgPSBlcFtpXTsKLSAgICAgICAgICAgYyA9IEJJVFNfUEVSX01QSV9MSU1COwotQEAgLTYyOSwzOCArNjI1LDMzIEBAIF9nY3J5X21waV9wb3dtIChnY3J5X21waV90IHJlcywKLSAgICAgICAgICAgYyAtPSBjMDsKLSAgICAgICAgICAgaiArPSBjMDsKLSAKLSsgICAgICAgICAgZTAgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBXKSk7Ci0gICAgICAgICAgIGlmIChjID49IFcpCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgZTAgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBXKSk7Ci0tICAgICAgICAgICAgICBlID0gKGUgPDwgVyk7Ci0tICAgICAgICAgICAgICBjIC09IFc7Ci0tICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGMwID0gMDsKLSAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgIGktLTsKLS0gICAgICAgICAgICAgIGlmICggaSA8IDAgKQotKyAgICAgICAgICAgICAgaWYgKCAtLWkgPCAwICkKLSAgICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgIGUgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBjKSk7Ci0tICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgZTAgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBjKSk7Ci0rICAgICAgICAgICAgICAgICAgaiArPSBjIC0gVzsKLSsgICAgICAgICAgICAgICAgICBnb3RvIGxhc3Rfc3RlcDsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgYzAgPSBjOwotKyAgICAgICAgICAgICAgICAgIGUgPSBlcFtpXTsKLSsgICAgICAgICAgICAgICAgICBjID0gQklUU19QRVJfTVBJX0xJTUI7Ci0rICAgICAgICAgICAgICAgICAgZTAgfD0gKGUgPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gKFcgLSBjMCkpKTsKLSAgICAgICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAgICAgYzAgPSBjOwotLSAgICAgICAgICAgICAgZTAgPSAoZSA+PiAoQklUU19QRVJfTVBJX0xJTUIgLSBXKSkKLS0gICAgICAgICAgICAgICAgfCAoZXBbaV0gPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gVyArIGMwKSk7Ci0tICAgICAgICAgICAgICBlID0gKGVwW2ldIDw8IChXIC0gYzApKTsKLS0gICAgICAgICAgICAgIGMgPSBCSVRTX1BFUl9NUElfTElNQiAtIFcgKyBjMDsKLSAgICAgICAgICAgICB9Ci0gCi0rICAgICAgICAgIGUgPSBlIDw8IChXIC0gYzApOwotKyAgICAgICAgICBjIC09IChXIC0gYzApOwotKwotKyAgICAgICAgbGFzdF9zdGVwOgotICAgICAgICAgICBjb3VudF90cmFpbGluZ196ZXJvcyAoYzAsIGUwKTsKLSAgICAgICAgICAgZTAgPSAoZTAgPj4gYzApID4+IDE7Ci0gCi0tICAgICAgICAgIGZvciAoaiArPSBXIC0gYzA7IGo7IGotLSkKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsIHJwLCByc2l6ZSwgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0tICAgICAgICAgICAgICB0cCA9IHJwOyBycCA9IHhwOyB4cCA9IHRwOwotLSAgICAgICAgICAgICAgcnNpemUgPSB4c2l6ZTsKLS0gICAgICAgICAgICB9Ci0tCi0gICAgICAgICAgIC8qCi0gICAgICAgICAgICAqICBiYXNlX3UgPD0gcHJlY29tcFtlMF0KLSAgICAgICAgICAgICogIGJhc2VfdV9zaXplIDw9IHByZWNvbXBfc2l6ZVtlMF0KLUBAIC02NzcsMjUgKzY2OCwyMyBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgICAgICAgICB1LmQgPSBwcmVjb21wW2tdOwotIAotICAgICAgICAgICAgICAgbXBpX3NldF9jb25kICgmdywgJnUsIGsgPT0gZTApOwotLSAgICAgICAgICAgICAgYmFzZV91X3NpemUgfD0gKHByZWNvbXBfc2l6ZVtrXSAmICgobXBpX3NpemVfdCkwIC0gKGsgPT0gZTApKSApOwotKyAgICAgICAgICAgICAgYmFzZV91X3NpemUgfD0gKCBwcmVjb21wX3NpemVba10gJiAoKG1waV9zaXplX3QpMCAtIChrID09IGUwKSkgKTsKLSAgICAgICAgICAgICB9Ci0gCi0tICAgICAgICAgIG11bF9tb2QgKHhwLCAmeHNpemUsIHJwLCByc2l6ZSwgYmFzZV91LCBiYXNlX3Vfc2l6ZSwKLS0gICAgICAgICAgICAgICAgICAgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0tICAgICAgICAgIHRwID0gcnA7IHJwID0geHA7IHhwID0gdHA7Ci0tICAgICAgICAgIHJzaXplID0geHNpemU7Ci0rICAgICAgICAgIGZvciAoaiArPSBXIC0gYzA7IGogPj0gMDsgai0tKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG11bF9tb2QgKHhwLCAmeHNpemUsIHJwLCByc2l6ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGogPT0gMCA/IGJhc2VfdSA6IHJwLCBqID09IDAgPyBiYXNlX3Vfc2l6ZSA6IHJzaXplLAotKyAgICAgICAgICAgICAgICAgICAgICAgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0rICAgICAgICAgICAgICB0cCA9IHJwOyBycCA9IHhwOyB4cCA9IHRwOwotKyAgICAgICAgICAgICAgcnNpemUgPSB4c2l6ZTsKLSsgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgIGogPSBjMDsKLSsgICAgICAgICAgaWYgKCBpIDwgMCApCi0rICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gCi0tICAgIGlmIChjICE9IDApCi0tICAgICAgewotLSAgICAgICAgaiArPSBjOwotLSAgICAgICAgY291bnRfdHJhaWxpbmdfemVyb3MgKGMsIGUpOwotLSAgICAgICAgZSA9IChlID4+IGMpOwotLSAgICAgICAgaiAtPSBjOwotLSAgICAgIH0KLS0KLSAgICAgd2hpbGUgKGotLSkKLSAgICAgICB7Ci0gICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsIHJwLCByc2l6ZSwgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci1AQCAtNzAzLDQwICs2OTIsNiBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgICByc2l6ZSA9IHhzaXplOwotICAgICAgIH0KLSAKLS0gICAgaWYgKGUgIT0gMCkKLS0gICAgICB7Ci0tICAgICAgICAvKgotLSAgICAgICAgICogYmFzZV91IDw9IHByZWNvbXBbKGU+PjEpXQotLSAgICAgICAgICogYmFzZV91X3NpemUgPD0gcHJlY29tcF9zaXplWyhlPj4xKV0KLS0gICAgICAgICAqLwotLSAgICAgICAgYmFzZV91X3NpemUgPSAwOwotLSAgICAgICAgZm9yIChrID0gMDsgayA8ICgxPDwgKFcgLSAxKSk7IGsrKykKLS0gICAgICAgICAgewotLSAgICAgICAgICAgIHN0cnVjdCBnY3J5X21waSB3LCB1OwotLSAgICAgICAgICAgIHcuYWxsb2NlZCA9IHcubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotLSAgICAgICAgICAgIHUuYWxsb2NlZCA9IHUubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotLSAgICAgICAgICAgIHcuc2lnbiA9IHUuc2lnbiA9IDA7Ci0tICAgICAgICAgICAgdy5mbGFncyA9IHUuZmxhZ3MgPSAwOwotLSAgICAgICAgICAgIHcuZCA9IGJhc2VfdTsKLS0gICAgICAgICAgICB1LmQgPSBwcmVjb21wW2tdOwotLQotLSAgICAgICAgICAgIG1waV9zZXRfY29uZCAoJncsICZ1LCBrID09IChlPj4xKSk7Ci0tICAgICAgICAgICAgYmFzZV91X3NpemUgfD0gKHByZWNvbXBfc2l6ZVtrXSAmICgobXBpX3NpemVfdCkwIC0gKGsgPT0gKGU+PjEpKSkgKTsKLS0gICAgICAgICAgfQotLQotLSAgICAgICAgbXVsX21vZCAoeHAsICZ4c2l6ZSwgcnAsIHJzaXplLCBiYXNlX3UsIGJhc2VfdV9zaXplLAotLSAgICAgICAgICAgICAgICAgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0tICAgICAgICB0cCA9IHJwOyBycCA9IHhwOyB4cCA9IHRwOwotLSAgICAgICAgcnNpemUgPSB4c2l6ZTsKLS0KLS0gICAgICAgIGZvciAoOyBjOyBjLS0pCi0tICAgICAgICAgIHsKLS0gICAgICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsIHJwLCByc2l6ZSwgbXAsIG1zaXplLCAma2FyYWN0eCk7Ci0tICAgICAgICAgICAgdHAgPSBycDsgcnAgPSB4cDsgeHAgPSB0cDsKLS0gICAgICAgICAgICByc2l6ZSA9IHhzaXplOwotLSAgICAgICAgICB9Ci0tICAgICAgfQotLQotICAgICAvKiBXZSBzaGlmdGVkIE1PRCwgdGhlIG1vZHVsbyByZWR1Y3Rpb24gYXJndW1lbnQsIGxlZnQKLSAgICAgICAgTU9EX1NISUZUX0NOVCBzdGVwcy4gIEFkanVzdCB0aGUgcmVzdWx0IGJ5IHJlZHVjaW5nIGl0IHdpdGggdGhlCi0gICAgICAgIG9yaWdpbmFsIE1PRC4KLS0tIAotMi4xMS4wCi0KLQotRnJvbSBhNGIyNzVjNGQ1Mzc4ODM3ZTgyMGZkYzg0ZjRhZGE4NzZmOWM4Y2NkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1EYXRlOiBTYXQsIDI0IEp1biAyMDE3IDIwOjQ2OjIwICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBTYW1lIGNvbXB1dGF0aW9uIGZvciBzcXVhcmUgYW5kIG11bHRpcGx5LgotCi0qIG1waS9tcGktcG93LmMgKF9nY3J5X21waV9wb3dtKTogQ29tcGFyZSBtc2l6ZSBmb3IgbWF4X3Vfc2l6ZS4gIE1vdmUKLXRoZSBhc3NpZ25tZW50IHRvIGJhc2VfdSBpbnRvIHRoZSBsb29wLiAgQ29weSBjb250ZW50IHJlZmVyZWQgYnkgUlAgdG8KLUJBU0VfVSBleGNlcHQgdGhlIGxhc3Qgb2YgdGhlIGxvb3AuCi0KLS0tCi0KLVNpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotKGJhY2twb3J0IGZyb20gbWFzdGVyIGNvbW1pdDoKLTc4MTMwODI4ZTlhMTQwYTlkZTRkYWZhZGJjODQ0ZGJiNjRjYjcwOWEpCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBtcGkvbXBpLXBvdy5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tcGkvbXBpLXBvdy5jIGIvbXBpL21waS1wb3cuYwotaW5kZXggN2IzZGMzMTguLjNjYmE2OTAzIDEwMDY0NAotLS0tIGEvbXBpL21waS1wb3cuYwotKysrIGIvbXBpL21waS1wb3cuYwotQEAgLTU3Myw2ICs1NzMsOCBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgICBNUE5fQ09QWSAocHJlY29tcFtpXSwgcnAsIHJzaXplKTsKLSAgICAgICB9Ci0gCi0rICAgIGlmIChtc2l6ZSA+IG1heF91X3NpemUpCi0rICAgICAgbWF4X3Vfc2l6ZSA9IG1zaXplOwotICAgICBiYXNlX3UgPSBtcGlfYWxsb2NfbGltYl9zcGFjZSAobWF4X3Vfc2l6ZSwgZXNlYyk7Ci0gICAgIE1QTl9aRVJPIChiYXNlX3UsIG1heF91X3NpemUpOwotIAotQEAgLTYxOSw2ICs2MjEsMTAgQEAgX2djcnlfbXBpX3Bvd20gKGdjcnlfbXBpX3QgcmVzLAotICAgICAgICAgewotICAgICAgICAgICBpbnQgYzA7Ci0gICAgICAgICAgIG1waV9saW1iX3QgZTA7Ci0rICAgICAgICAgIHN0cnVjdCBnY3J5X21waSB3LCB1OwotKyAgICAgICAgICB3LnNpZ24gPSB1LnNpZ24gPSAwOwotKyAgICAgICAgICB3LmZsYWdzID0gdS5mbGFncyA9IDA7Ci0rICAgICAgICAgIHcuZCA9IGJhc2VfdTsKLSAKLSAgICAgICAgICAgY291bnRfbGVhZGluZ196ZXJvcyAoYzAsIGUpOwotICAgICAgICAgICBlID0gKGUgPDwgYzApOwotQEAgLTY1MiwyOSArNjU4LDMxIEBAIF9nY3J5X21waV9wb3dtIChnY3J5X21waV90IHJlcywKLSAgICAgICAgICAgY291bnRfdHJhaWxpbmdfemVyb3MgKGMwLCBlMCk7Ci0gICAgICAgICAgIGUwID0gKGUwID4+IGMwKSA+PiAxOwotIAotLSAgICAgICAgICAvKgotLSAgICAgICAgICAgKiAgYmFzZV91IDw9IHByZWNvbXBbZTBdCi0tICAgICAgICAgICAqICBiYXNlX3Vfc2l6ZSA8PSBwcmVjb21wX3NpemVbZTBdCi0tICAgICAgICAgICAqLwotLSAgICAgICAgICBiYXNlX3Vfc2l6ZSA9IDA7Ci0tICAgICAgICAgIGZvciAoayA9IDA7IGsgPCAoMTw8IChXIC0gMSkpOyBrKyspCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgc3RydWN0IGdjcnlfbXBpIHcsIHU7Ci0tICAgICAgICAgICAgICB3LmFsbG9jZWQgPSB3Lm5saW1icyA9IHByZWNvbXBfc2l6ZVtrXTsKLS0gICAgICAgICAgICAgIHUuYWxsb2NlZCA9IHUubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotLSAgICAgICAgICAgICAgdy5zaWduID0gdS5zaWduID0gMDsKLS0gICAgICAgICAgICAgIHcuZmxhZ3MgPSB1LmZsYWdzID0gMDsKLS0gICAgICAgICAgICAgIHcuZCA9IGJhc2VfdTsKLS0gICAgICAgICAgICAgIHUuZCA9IHByZWNvbXBba107Ci0tCi0tICAgICAgICAgICAgICBtcGlfc2V0X2NvbmQgKCZ3LCAmdSwgayA9PSBlMCk7Ci0tICAgICAgICAgICAgICBiYXNlX3Vfc2l6ZSB8PSAoIHByZWNvbXBfc2l6ZVtrXSAmICgobXBpX3NpemVfdCkwIC0gKGsgPT0gZTApKSApOwotLSAgICAgICAgICAgIH0KLS0KLSAgICAgICAgICAgZm9yIChqICs9IFcgLSBjMDsgaiA+PSAwOyBqLS0pCi0gICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgbXVsX21vZCAoeHAsICZ4c2l6ZSwgcnAsIHJzaXplLAotLSAgICAgICAgICAgICAgICAgICAgICAgaiA9PSAwID8gYmFzZV91IDogcnAsIGogPT0gMCA/IGJhc2VfdV9zaXplIDogcnNpemUsCi0rCi0rICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICogIGJhc2VfdSA8PSBwcmVjb21wW2UwXQotKyAgICAgICAgICAgICAgICogIGJhc2VfdV9zaXplIDw9IHByZWNvbXBfc2l6ZVtlMF0KLSsgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgYmFzZV91X3NpemUgPSAwOwotKyAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8ICgxPDwgKFcgLSAxKSk7IGsrKykKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIHcuYWxsb2NlZCA9IHcubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotKyAgICAgICAgICAgICAgICAgIHUuYWxsb2NlZCA9IHUubmxpbWJzID0gcHJlY29tcF9zaXplW2tdOwotKyAgICAgICAgICAgICAgICAgIHUuZCA9IHByZWNvbXBba107Ci0rCi0rICAgICAgICAgICAgICAgICAgbXBpX3NldF9jb25kICgmdywgJnUsIGsgPT0gZTApOwotKyAgICAgICAgICAgICAgICAgIGJhc2VfdV9zaXplIHw9ICggcHJlY29tcF9zaXplW2tdICYgKDBVTCAtIChrID09IGUwKSkgKTsKLSsgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgdy5hbGxvY2VkID0gdy5ubGltYnMgPSByc2l6ZTsKLSsgICAgICAgICAgICAgIHUuYWxsb2NlZCA9IHUubmxpbWJzID0gcnNpemU7Ci0rICAgICAgICAgICAgICB1LmQgPSBycDsKLSsgICAgICAgICAgICAgIG1waV9zZXRfY29uZCAoJncsICZ1LCBqICE9IDApOwotKyAgICAgICAgICAgICAgYmFzZV91X3NpemUgXj0gKChiYXNlX3Vfc2l6ZSBeIHJzaXplKSAgJiAoMFVMIC0gKGogIT0gMCkpKTsKLSsKLSsgICAgICAgICAgICAgIG11bF9tb2QgKHhwLCAmeHNpemUsIHJwLCByc2l6ZSwgYmFzZV91LCBiYXNlX3Vfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1wLCBtc2l6ZSwgJmthcmFjdHgpOwotICAgICAgICAgICAgICAgdHAgPSBycDsgcnAgPSB4cDsgeHAgPSB0cDsKLSAgICAgICAgICAgICAgIHJzaXplID0geHNpemU7Ci0tLSAKLTIuMTEuMAotCi0KLUZyb20gMTI5YzE5NjBlNTU2MDNlYzNmNmZkMWNkOWNkNTFiMjJlOWE5YTdlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAxMTo0ODo0NCArMDkwMAotU3ViamVjdDogW1BBVENIIDMvNV0gcnNhOiBBZGQgZXhwb25lbnQgYmxpbmRpbmcuCi0KLSogY2lwaGVyL3JzYS5jIChzZWNyZXQpOiBCbGluZCBzZWNyZXQgRCB3aXRoIHJhbmRvbWl6ZWQgbm9uY2UgUiBmb3IKLW1waV9wb3dtIGNvbXB1dGF0aW9uLgotCi0tLQotCi1Dby1hdXRob3JlZC1ieTogV2VybmVyIEtvY2ggPHdrQGdudXBnLm9yZz4KLVNpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotCi1UaGUgcGFwZXIgZGVzY3JpYmluZyBhdHRhY2s6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTcvNjI3Ci0KLVNsaWRpbmcgcmlnaHQgaW50byBkaXNhc3RlcjogTGVmdC10by1yaWdodCBzbGlkaW5nIHdpbmRvd3MgbGVhawotYnkgRGFuaWVsIEouIEJlcm5zdGVpbiBhbmQgSm9hY2hpbSBCcmVpdG5lciBhbmQgRGFuaWVsIEdlbmtpbiBhbmQKLUxlb24gR3Jvb3QgQnJ1aW5kZXJpbmsgYW5kIE5hZGlhIEhlbmluZ2VyIGFuZCBUYW5qYSBMYW5nZSBhbmQKLUNocmlzdGluZSB2YW4gVnJlZGVuZGFhbCBhbmQgWXV2YWwgWWFyb20KLQotICBJdCBpcyB3ZWxsIGtub3duIHRoYXQgY29uc3RhbnQtdGltZSBpbXBsZW1lbnRhdGlvbnMgb2YgbW9kdWxhcgotICBleHBvbmVudGlhdGlvbiBjYW5ub3QgdXNlIHNsaWRpbmcgd2luZG93cy4gSG93ZXZlciwgc29mdHdhcmUKLSAgbGlicmFyaWVzIHN1Y2ggYXMgTGliZ2NyeXB0LCB1c2VkIGJ5IEdudVBHLCBjb250aW51ZSB0byB1c2Ugc2xpZGluZwotICB3aW5kb3dzLiBJdCBpcyB3aWRlbHkgYmVsaWV2ZWQgdGhhdCwgZXZlbiBpZiB0aGUgY29tcGxldGUgcGF0dGVybiBvZgotICBzcXVhcmluZ3MgYW5kIG11bHRpcGxpY2F0aW9ucyBpcyBvYnNlcnZlZCB0aHJvdWdoIGEgc2lkZS1jaGFubmVsCi0gIGF0dGFjaywgdGhlIG51bWJlciBvZiBleHBvbmVudCBiaXRzIGxlYWtlZCBpcyBub3Qgc3VmZmljaWVudCB0bwotICBjYXJyeSBvdXQgYSBmdWxsIGtleS1yZWNvdmVyeSBhdHRhY2sgYWdhaW5zdCBSU0EuIFNwZWNpZmljYWxseSwKLSAgNC1iaXQgc2xpZGluZyB3aW5kb3dzIGxlYWsgb25seSA0MCUgb2YgdGhlIGJpdHMsIGFuZCA1LWJpdCBzbGlkaW5nCi0gIHdpbmRvd3MgbGVhayBvbmx5IDMzJSBvZiB0aGUgYml0cy4KLQotICBJbiB0aGlzIHBhcGVyIHdlIGRlbW9uc3RyYXRlIGEgY29tcGxldGUgYnJlYWsgb2YgUlNBLTEwMjQgYXMKLSAgaW1wbGVtZW50ZWQgaW4gTGliZ2NyeXB0LiBPdXIgYXR0YWNrIG1ha2VzIGVzc2VudGlhbCB1c2Ugb2YgdGhlIGZhY3QKLSAgdGhhdCBMaWJnY3J5cHQgdXNlcyB0aGUgbGVmdC10by1yaWdodCBtZXRob2QgZm9yIGNvbXB1dGluZyB0aGUKLSAgc2xpZGluZy13aW5kb3cgZXhwYW5zaW9uLiBXZSBzaG93IGZvciB0aGUgZmlyc3QgdGltZSB0aGF0IHRoZQotICBkaXJlY3Rpb24gb2YgdGhlIGVuY29kaW5nIG1hdHRlcnM6IHRoZSBwYXR0ZXJuIG9mIHNxdWFyaW5ncyBhbmQKLSAgbXVsdGlwbGljYXRpb25zIGluIGxlZnQtdG8tcmlnaHQgc2xpZGluZyB3aW5kb3dzIGxlYWtzIHNpZ25pZmljYW50bHkKLSAgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBleHBvbmVudCBiaXRzIHRoYW4gZm9yIHJpZ2h0LXRvLWxlZnQuIFdlIHNob3cKLSAgaG93IHRvIGluY29ycG9yYXRlIHRoaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbnRvIHRoZQotICBIZW5pbmdlci1TaGFjaGFtIGFsZ29yaXRobSBmb3IgcGFydGlhbCBrZXkgcmVjb25zdHJ1Y3Rpb24sIGFuZCB1c2UKLSAgaXQgdG8gb2J0YWluIHZlcnkgZWZmaWNpZW50IGZ1bGwga2V5IHJlY292ZXJ5IGZvciBSU0EtMTAyNC4gV2UgYWxzbwotICBwcm92aWRlIHN0cm9uZyBldmlkZW5jZSB0aGF0IHRoZSBzYW1lIGF0dGFjayB3b3JrcyBmb3IgUlNBLTIwNDggd2l0aAotICBvbmx5IG1vZGVyYXRlbHkgbW9yZSBjb21wdXRhdGlvbi4KLQotRXhwb25lbnQgYmxpbmRpbmcgaXMgYSBraW5kIG9mIHdvcmthcm91bmQgdG8gYWRkIG5vaXNlLiAgU2lnbmFsIChsZWFrKQotaXMgc3RpbGwgdGhlcmUgZm9yIG5vbi1jb25zdGFudC10aW1lIGltcGxlbWVudGF0aW9uLgotCi0oYmFja3BvcnRlZCBmcm9tIG1hc3RlciBjb21taXQ6Ci04NzI1Yzk5ZmZhNDE3NzhmMzgyY2E5NzIzMzE4M2JjZDY4N2JiMGNlKQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gY2lwaGVyL3JzYS5jIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NpcGhlci9yc2EuYyBiL2NpcGhlci9yc2EuYwotaW5kZXggYjZjNzM3NDEuLjI1ZTI5YjVjIDEwMDY0NAotLS0tIGEvY2lwaGVyL3JzYS5jCi0rKysgYi9jaXBoZXIvcnNhLmMKLUBAIC0xMDIxLDE1ICsxMDIxLDMzIEBAIHNlY3JldCAoZ2NyeV9tcGlfdCBvdXRwdXQsIGdjcnlfbXBpX3QgaW5wdXQsIFJTQV9zZWNyZXRfa2V5ICpza2V5ICkKLSAgICAgICBnY3J5X21waV90IG0xID0gbXBpX2FsbG9jX3NlY3VyZSggbXBpX2dldF9ubGltYnMoc2tleS0+bikrMSApOwotICAgICAgIGdjcnlfbXBpX3QgbTIgPSBtcGlfYWxsb2Nfc2VjdXJlKCBtcGlfZ2V0X25saW1icyhza2V5LT5uKSsxICk7Ci0gICAgICAgZ2NyeV9tcGlfdCBoICA9IG1waV9hbGxvY19zZWN1cmUoIG1waV9nZXRfbmxpbWJzKHNrZXktPm4pKzEgKTsKLS0KLS0gICAgICAvKiBtMSA9IGMgXiAoZCBtb2QgKHAtMSkpIG1vZCBwICovCi0rICAgICAgZ2NyeV9tcGlfdCBEX2JsaW5kID0gbXBpX2FsbG9jX3NlY3VyZSAoIG1waV9nZXRfbmxpbWJzKHNrZXktPm4pICsgMSApOwotKyAgICAgIGdjcnlfbXBpX3QgcjsKLSsgICAgICB1bnNpZ25lZCBpbnQgcl9uYml0czsKLSsKLSsgICAgICByX25iaXRzID0gbXBpX2dldF9uYml0cyAoc2tleS0+cCkgLyA0OwotKyAgICAgIGlmIChyX25iaXRzIDwgOTYpCi0rICAgICAgICByX25iaXRzID0gOTY7Ci0rICAgICAgciA9IG1waV9hbGxvY19zZWN1cmUgKChyX25iaXRzICsgQklUU19QRVJfTVBJX0xJTUItMSkvQklUU19QRVJfTVBJX0xJTUIpOwotKwotKyAgICAgIC8qIGRfYmxpbmQgPSAoZCBtb2QgKHAtMSkpICsgKHAtMSkgKiByICovCi0rICAgICAgLyogbTEgPSBjIF4gZF9ibGluZCBtb2QgcCAqLwotKyAgICAgIF9nY3J5X21waV9yYW5kb21pemUgKHIsIHJfbmJpdHMsIEdDUllfV0VBS19SQU5ET00pOwotKyAgICAgIG1waV9zZXRfaGlnaGJpdCAociwgcl9uYml0cyAtIDEpOwotICAgICAgIG1waV9zdWJfdWkoIGgsIHNrZXktPnAsIDEgICk7Ci0tICAgICAgbXBpX2ZkaXZfciggaCwgc2tleS0+ZCwgaCApOwotLSAgICAgIG1waV9wb3dtKCBtMSwgaW5wdXQsIGgsIHNrZXktPnAgKTsKLS0gICAgICAvKiBtMiA9IGMgXiAoZCBtb2QgKHEtMSkpIG1vZCBxICovCi0rICAgICAgbXBpX211bCAoIERfYmxpbmQsIGgsIHIgKTsKLSsgICAgICBtcGlfZmRpdl9yICggaCwgc2tleS0+ZCwgaCApOwotKyAgICAgIG1waV9hZGQgKCBEX2JsaW5kLCBEX2JsaW5kLCBoICk7Ci0rICAgICAgbXBpX3Bvd20oIG0xLCBpbnB1dCwgRF9ibGluZCwgc2tleS0+cCApOwotKyAgICAgIC8qIGRfYmxpbmQgPSAoZCBtb2QgKHEtMSkpICsgKHEtMSkgKiByICovCi0rICAgICAgLyogbTIgPSBjIF4gZF9ibGluZCBtb2QgcSAqLwotKyAgICAgIF9nY3J5X21waV9yYW5kb21pemUgKHIsIHJfbmJpdHMsIEdDUllfV0VBS19SQU5ET00pOwotKyAgICAgIG1waV9zZXRfaGlnaGJpdCAociwgcl9uYml0cyAtIDEpOwotICAgICAgIG1waV9zdWJfdWkoIGgsIHNrZXktPnEsIDEgICk7Ci0tICAgICAgbXBpX2ZkaXZfciggaCwgc2tleS0+ZCwgaCApOwotLSAgICAgIG1waV9wb3dtKCBtMiwgaW5wdXQsIGgsIHNrZXktPnEgKTsKLSsgICAgICBtcGlfbXVsICggRF9ibGluZCwgaCwgciApOwotKyAgICAgIG1waV9mZGl2X3IgKCBoLCBza2V5LT5kLCBoICk7Ci0rICAgICAgbXBpX2FkZCAoIERfYmxpbmQsIERfYmxpbmQsIGggKTsKLSsgICAgICBtcGlfcG93bSggbTIsIGlucHV0LCBEX2JsaW5kLCBza2V5LT5xICk7Ci0gICAgICAgLyogaCA9IHUgKiAoIG0yIC0gbTEgKSBtb2QgcSAqLwotICAgICAgIG1waV9zdWIoIGgsIG0yLCBtMSApOwotICAgICAgIGlmICggbXBpX2hhc19zaWduICggaCApICkKLS0tIAotMi4xMS4wCi0KLQotRnJvbSA4ZTFhNjI4OWI3ZDExYThiZjZjOTRhZmZhMDZjOTc5NGU3MjE2ZTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1EYXRlOiBUaHUsIDI5IEp1biAyMDE3IDEyOjM2OjI3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSByc2E6IEZpeCBleHBvbmVudCBibGluZGluZy4KLQotKiBjaXBoZXIvcnNhLmMgKHNlY3JldCk6IEZyZWUgRF9CTElORC4KLQotLS0KLQotRml4ZXMtY29tbWl0OiBhOWY2MTJkZWY4MDFjODE0NWQ1NTFkOTk1NDc1ZTVkNTFhNGM5ODhjCi1TaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBjaXBoZXIvcnNhLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2NpcGhlci9yc2EuYyBiL2NpcGhlci9yc2EuYwotaW5kZXggMjVlMjliNWMuLjMzZjkyZWJkIDEwMDY0NAotLS0tIGEvY2lwaGVyL3JzYS5jCi0rKysgYi9jaXBoZXIvcnNhLmMKLUBAIC0xMDU3LDYgKzEwNTcsNyBAQCBzZWNyZXQgKGdjcnlfbXBpX3Qgb3V0cHV0LCBnY3J5X21waV90IGlucHV0LCBSU0Ffc2VjcmV0X2tleSAqc2tleSApCi0gICAgICAgbXBpX211bCAoIGgsIGgsIHNrZXktPnAgKTsKLSAgICAgICBtcGlfYWRkICggb3V0cHV0LCBtMSwgaCApOwotIAotKyAgICAgIG1waV9mcmVlICggRF9ibGluZCApOwotICAgICAgIG1waV9mcmVlICggaCApOwotICAgICAgIG1waV9mcmVlICggbTEgKTsKLSAgICAgICBtcGlfZnJlZSAoIG0yICk7Ci0tLSAKLTIuMTEuMAotCi0KLUZyb20gNGU1NDk3NzUyMTcyZWRjNDQ0MDI5YWY2NDVmMjhjYjg4Y2U5MzkwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAxMjo0MDoxOSArMDkwMAotU3ViamVjdDogW1BBVENIIDUvNV0gcnNhOiBNb3JlIGZpeC4KLQotKiBjaXBoZXIvcnNhLmMgKHNlY3JldCk6IEZyZWUgUi4KLQotLS0KLQotRml4ZXMtY29tbWl0OiBhOWY2MTJkZWY4MDFjODE0NWQ1NTFkOTk1NDc1ZTVkNTFhNGM5ODhjCi1TaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBjaXBoZXIvcnNhLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2NpcGhlci9yc2EuYyBiL2NpcGhlci9yc2EuYwotaW5kZXggMzNmOTJlYmQuLjhkOGQxNTdiIDEwMDY0NAotLS0tIGEvY2lwaGVyL3JzYS5jCi0rKysgYi9jaXBoZXIvcnNhLmMKLUBAIC0xMDU3LDYgKzEwNTcsNyBAQCBzZWNyZXQgKGdjcnlfbXBpX3Qgb3V0cHV0LCBnY3J5X21waV90IGlucHV0LCBSU0Ffc2VjcmV0X2tleSAqc2tleSApCi0gICAgICAgbXBpX211bCAoIGgsIGgsIHNrZXktPnAgKTsKLSAgICAgICBtcGlfYWRkICggb3V0cHV0LCBtMSwgaCApOwotIAotKyAgICAgIG1waV9mcmVlICggciApOwotICAgICAgIG1waV9mcmVlICggRF9ibGluZCApOwotICAgICAgIG1waV9mcmVlICggaCApOwotICAgICAgIG1waV9mcmVlICggbTEgKTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NTg5ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotQWRkIGFuZCB1c2UgcGtnLWNvbmZpZyBmb3IgbGliZ2NyeXB0IGluc3RlYWQgb2YgLWNvbmZpZyBzY3JpcHRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbdXBzdHJlYW0gaGF2ZSBpbmRpY2F0ZWQgdGhleSBkb24ndCB3YW50IGEgcGtnLWNvbmZpZyBkZXBlbmRlbmN5XQotCi1SUCAyMDE0LzUvMjIKLQotUmViYXNlIHRvIDEuNy4wCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgIHwgIDEgKwotIHNyYy9saWJnY3J5cHQubTQgICAgfCA3MSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9saWJnY3J5cHQucGMuaW4gfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpYmdjcnlwdC5wYy5pbgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmNjgzZTIxLi41NjZlMWM4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMzE0LDYgKzIzMTQsNyBAQCByYW5kb20vTWFrZWZpbGUKLSBkb2MvTWFrZWZpbGUKLSBzcmMvTWFrZWZpbGUKLSBzcmMvZ2NyeXB0LmgKLStzcmMvbGliZ2NyeXB0LnBjCi0gc3JjL2xpYmdjcnlwdC1jb25maWcKLSBzcmMvdmVyc2lvbmluZm8ucmMKLSB0ZXN0cy9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL3NyYy9saWJnY3J5cHQubTQgYi9zcmMvbGliZ2NyeXB0Lm00Ci1pbmRleCBjNjdjZmVjLi40ZWE1ZjJjIDEwMDY0NAotLS0tIGEvc3JjL2xpYmdjcnlwdC5tNAotKysrIGIvc3JjL2xpYmdjcnlwdC5tNAotQEAgLTI5LDMwICsyOSw2IEBAIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KLSBkbmwKLSBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAotIFsgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQotLSAgQUNfQVJHX1dJVEgobGliZ2NyeXB0LXByZWZpeCwKLS0gICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS13aXRoLWxpYmdjcnlwdC1wcmVmaXg9UEZYXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIExJQkdDUllQVCBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0pLAotLSAgICAgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiIpCi0tICBpZiB0ZXN0IHgiJHtMSUJHQ1JZUFRfQ09ORklHfSIgPSB4IDsgdGhlbgotLSAgICAgaWYgdGVzdCB4IiR7bGliZ2NyeXB0X2NvbmZpZ19wcmVmaXh9IiAhPSB4IDsgdGhlbgotLSAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0iJHtsaWJnY3J5cHRfY29uZmlnX3ByZWZpeH0vYmluL2xpYmdjcnlwdC1jb25maWciCi0tICAgICBlbHNlCi0tICAgICAgIGNhc2UgIiR7U1lTUk9PVH0iIGluCi0tICAgICAgICAgLyopCi0tICAgICAgICAgICBpZiB0ZXN0IC14ICIke1NZU1JPT1R9L2Jpbi9saWJnY3J5cHQtY29uZmlnIiA7IHRoZW4KLS0gICAgICAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0iJHtTWVNST09UfS9iaW4vbGliZ2NyeXB0LWNvbmZpZyIKLS0gICAgICAgICAgIGZpCi0tICAgICAgICAgICA7OwotLSAgICAgICAgICcnKQotLSAgICAgICAgICAgOzsKLS0gICAgICAgICAgKikKLS0gICAgICAgICAgIEFDX01TR19XQVJOKFtJZ25vcmluZyBcJFNZU1JPT1QgYXMgaXQgaXMgbm90IGFuIGFic29sdXRlIHBhdGguXSkKLS0gICAgICAgICAgIDs7Ci0tICAgICAgIGVzYWMKLS0gICAgIGZpCi0tICBmaQotLQotLSAgQUNfUEFUSF9QUk9HKExJQkdDUllQVF9DT05GSUcsIGxpYmdjcnlwdC1jb25maWcsIG5vKQotICAgdG1wPWlmZWxzZShbJDFdLCAsMToxLjIuMCwkMSkKLSAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAgIHJlcV9saWJnY3J5cHRfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAotQEAgLTYyLDQ4ICszOCwxMyBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAotICAgICAgbWluX2xpYmdjcnlwdF92ZXJzaW9uPSIkdG1wIgotICAgZmkKLSAKLS0gIEFDX01TR19DSEVDS0lORyhmb3IgTElCR0NSWVBUIC0gdmVyc2lvbiA+PSAkbWluX2xpYmdjcnlwdF92ZXJzaW9uKQotLSAgb2s9bm8KLS0gIGlmIHRlc3QgIiRMSUJHQ1JZUFRfQ09ORklHIiAhPSAibm8iIDsgdGhlbgotLSAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAotLSAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAotLSAgICByZXFfbWljcm89YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAotLSAgICBsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb249YCRMSUJHQ1JZUFRfQ09ORklHIC0tdmVyc2lvbmAKLS0gICAgbWFqb3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wxLydgCi0tICAgIG1pbm9yPWBlY2hvICRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMi8nYAotLSAgICBtaWNybz1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDMvJ2AKLS0gICAgaWYgdGVzdCAiJG1ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICBvaz15ZXMKLS0gICAgZWxzZQotLSAgICAgICAgaWYgdGVzdCAiJG1ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgotLSAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgICBvaz15ZXMKLS0gICAgICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICBmaQotLSAgZmkKLS0gIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgIEFDX01TR19SRVNVTFQoW3llcyAoJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbildKQotLSAgZWxzZQotLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotLSAgZmkKLSsgIFBLR19DSEVDS19NT0RVTEVTKExJQkdDUllQVCwgW2xpYmdjcnlwdCA+PSAkbWluX2xpYmdjcnlwdF92ZXJzaW9uXSwgW29rPXllc10sIFtvaz1ub10pCi0rCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotICAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IGxpYmdjcnlwdCwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKLSAgICAgICMgQVBJIGlzIGNvbXBhdGlibGUKLSAgICAgIGlmIHRlc3QgIiRyZXFfbGliZ2NyeXB0X2FwaSIgLWd0IDAgOyB0aGVuCi0tICAgICAgICB0bXA9YCRMSUJHQ1JZUFRfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAotKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGxpYmdjcnlwdGAKLSAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgotICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJHQ1JZUFQgQVBJIHZlcnNpb25dKQotICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgotQEAgLTExNiwxMCArNTcsOCBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAotICAgICAgZmkKLSAgIGZpCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotLSAgICBMSUJHQ1JZUFRfQ0ZMQUdTPWAkTElCR0NSWVBUX0NPTkZJRyAtLWNmbGFnc2AKLS0gICAgTElCR0NSWVBUX0xJQlM9YCRMSUJHQ1JZUFRfQ09ORklHIC0tbGlic2AKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLS0gICAgbGliZ2NyeXB0X2NvbmZpZ19ob3N0PWAkTElCR0NSWVBUX0NPTkZJRyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAotKyAgICBsaWJnY3J5cHRfY29uZmlnX2hvc3Q9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9aG9zdCBsaWJnY3J5cHRgCi0gICAgIGlmIHRlc3QgeCIkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KLSAgICAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geCIkaG9zdCIgOyB0aGVuCi0gICBBQ19NU0dfV0FSTihbWwotQEAgLTEzNCw4ICs3Myw2IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCi0gICAgICAgZmkKLSAgICAgZmkKLSAgIGVsc2UKLS0gICAgTElCR0NSWVBUX0NGTEFHUz0iIgotLSAgICBMSUJHQ1JZUFRfTElCUz0iIgotICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotICAgZmkKLSAgIEFDX1NVQlNUKExJQkdDUllQVF9DRkxBR1MpCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYmdjcnlwdC5wYy5pbiBiL3NyYy9saWJnY3J5cHQucGMuaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yZmM4ZjUzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvbGliZ2NyeXB0LnBjLmluCi1AQCAtMCwwICsxLDMzIEBACi0rIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBwa2ctY29uZmlnIG1ldGFkYXRhIGZpbGUuCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0rIyBBdXRob3I6IFNpbW9uIEpvc2Vmc3NvbgotKyMKLSsjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRoZSBhdXRob3IgZ2l2ZXMKLSsjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0rIwotKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dCBldmVuIHRoZQotKyMgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0rCi0rcHJlZml4PUBwcmVmaXhACi0rZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotK2xpYmRpcj1AbGliZGlyQAotK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACi0rCi0rIyBBUEkgaW5mbwotK2FwaV92ZXJzaW9uPUBMSUJHQ1JZUFRfQ09ORklHX0FQSV9WRVJTSU9OQAotK2hvc3Q9QExJQkdDUllQVF9DT05GSUdfSE9TVEAKLSsKLSsjIE1pc2MgaW5mb3JtYXRpb24uCi0rc3ltbWV0cmljX2NpcGhlcnM9QExJQkdDUllQVF9DSVBIRVJTQAotK2FzeW1tZXRyaWNfY2lwaGVycz1ATElCR0NSWVBUX1BVQktFWV9DSVBIRVJTQAotK2RpZ2VzdHM9QExJQkdDUllQVF9ESUdFU1RTQAotKwotK05hbWU6IGxpYmdjcnlwdAotK0Rlc2NyaXB0aW9uOiBHTlUgY3J5cHRvIGxpYnJhcnkKLStVUkw6IGh0dHA6Ly93d3cuZ251cGcub3JnCi0rVmVyc2lvbjogQFZFUlNJT05ACi0rTGliczogLUwke2xpYmRpcn0gLWxnY3J5cHQKLStMaWJzLnByaXZhdGU6IC1MJHtsaWJkaXJ9IC1sZ3BnLWVycm9yCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZml4LUlDRS1mYWlsdXJlLW9uLW1pcHMtd2l0aC1vcHRpb24tTy1hbmQtZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZml4LUlDRS1mYWlsdXJlLW9uLW1pcHMtd2l0aC1vcHRpb24tTy1hbmQtZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyZTYyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2ZpeC1JQ0UtZmFpbHVyZS1vbi1taXBzLXdpdGgtb3B0aW9uLU8tYW5kLWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi10ZXN0cy9iZW5jaC1zbG9wZS5jOiB3b3JrYXJvdW5kIElDRSBmYWlsdXJlIG9uIG1pcHMgd2l0aCAnLU8gLWcnCi0KLUhpdCBhIElDRSBhbmQgY291bGQgcmVkdWNlIGl0IHRvIHRoZSBmb2xsb3dpbmcgbWluaW1hbCBleGFtcGxlOgotCi0xLiBPbmx5IHRoZSBzaXplIG9mIGFycmF5IGFzc2lnbmVkIHdpdGggMiBjYXVzZWQgdGhlIGlzc3VlOgotJCBjYXQgPiBtaXBnY2MtdGVzdC5jIDw8IEVORAotCi1pbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgICAgICBjaGFyICpwU3RyQXJyeVtBUlJBWV9TSVpFX01BWF0gPSB7ImhlbGxvIn07Ci0gICAgICAgIGludCBpID0gMDsKLQotICAgICAgICB3aGlsZShwU3RyQXJyeVtpXSAmJiBpPEFSUkFZX1NJWkVfTUFYKQotICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgcFN0ckFycnlbaV0pOwotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAwOwotfQotCi1FTkQKLQotMi4gT25seSAtTzEgYW5kIC1nIG9uIG1pcHMgY2F1c2VkIHRoZSBpc3N1ZToKLSQgbWlwcy1wb2t5LWxpbnV4LWdjYyAtTzEgLWcgLW8gbWlwZ2NjLXRlc3QgbWlwZ2NjLXRlc3QuYwotbWlwZ2NjLXRlc3QuYzogSW4gZnVuY3Rpb24gJ21haW4nOgotbWlwZ2NjLXRlc3QuYzoxODoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiwgYXQgZHdhcmYyb3V0LmM6MjA4MTAKLSB9Ci0gXgotUGxlYXNlIHN1Ym1pdCBhIGZ1bGwgYnVnIHJlcG9ydCwKLXdpdGggcHJlcHJvY2Vzc2VkIHNvdXJjZSBpZiBhcHByb3ByaWF0ZS4KLVNlZSA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbD4gZm9yIGluc3RydWN0aW9ucwotCi0zLiBUaGUgcXVpY2sgd29ya3JvdW5kIGlzIHRyeWluZyB0byBlbmxhcmdlIHRoZSBzaXplIG9mIGFycmF5IHdpdGggbGFyZ2VyCi10aGFuIDIuCi0KLTQuIEZpbGUgYSBidWcgdG8gR05VLCBidXQgaXQgY291bGQgbm90IGJlIHJlcHJvZHVjZWQgb24gdGhlcmUgZW52aXJvbm1lbnQuCi1odHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTYwNjQzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RzL2JlbmNoLXNsb3BlLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYmVuY2gtc2xvcGUuYyBiL3Rlc3RzL2JlbmNoLXNsb3BlLmMKLWluZGV4IGJkMDUwNjQuLjI4YzI0MzggMTAwNjQ0Ci0tLS0gYS90ZXN0cy9iZW5jaC1zbG9wZS5jCi0rKysgYi90ZXN0cy9iZW5jaC1zbG9wZS5jCi1AQCAtMTE5Nyw3ICsxMTk3LDcgQEAgc3RhdGljIHN0cnVjdCBiZW5jaF9vcHMgaGFzaF9vcHMgPSB7Ci0gfTsKLSAKLSAKLS1zdGF0aWMgc3RydWN0IGJlbmNoX2hhc2hfbW9kZSBoYXNoX21vZGVzW10gPSB7Ci0rc3RhdGljIHN0cnVjdCBiZW5jaF9oYXNoX21vZGUgaGFzaF9tb2Rlc1szXSA9IHsKLSAgIHsiIiwgJmhhc2hfb3BzfSwKLSAgIHswfSwKLSB9OwotQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmVuY2hfb3BzIG1hY19vcHMgPSB7Ci0gfTsKLSAKLSAKLS1zdGF0aWMgc3RydWN0IGJlbmNoX21hY19tb2RlIG1hY19tb2Rlc1tdID0gewotK3N0YXRpYyBzdHJ1Y3QgYmVuY2hfbWFjX21vZGUgbWFjX21vZGVzWzNdID0gewotICAgeyIiLCAmbWFjX29wc30sCi0gICB7MH0sCi0gfTsKLS0tIAotMS44LjEuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2ZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2ZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZGU4YmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBjYzBlMmI0MDNkMzM4OTI5NjM1MTNhM2JhOThlNGFlNWEwNWE0ZDNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCAxMiBKdW4gMjAxNiAwNDo0NDoyOSAtMDQwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0cy9NYWtlZmlsZS5hbTogZml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHB0aHJlYWRfY3JlYXRlJwotCi1BZGQgbWlzc2luZyAnLWxwdGhyZWFkJyB0byBDRkxBR1MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggZDQ2MmYzMC4uYmVmNmRkNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTYyLDQgKzYyLDQgQEAgRVhUUkFfRElTVCA9IFJFQURNRSByc2EtMTZrLmtleSBjYXZzX3Rlc3RzLnNoIGNhdnNfZHJpdmVyLnBsIFwKLSAKLSBMREFERCA9ICQoc3RhbmRhcmRfbGRhZGQpICQoR1BHX0VSUk9SX0xJQlMpCi0gdF9sb2NrX0xEQUREID0gJChzdGFuZGFyZF9sZGFkZCkgJChHUEdfRVJST1JfTVRfTElCUykKLS10X2xvY2tfQ0ZMQUdTID0gJChHUEdfRVJST1JfTVRfQ0ZMQUdTKQotK3RfbG9ja19DRkxBR1MgPSAkKEdQR19FUlJPUl9NVF9DRkxBR1MpIC1scHRocmVhZAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2xpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2xpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZTU0MDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWxpYmdjcnlwdDogZml4IGJ1aWxkaW5nIGVycm9yIHdpdGggJy1PMicgaW4gc3lzcm9vdCBwYXRoCi0KLUNoYXJhY3RlcnMgbGlrZSAnLU8yJyBvciAnLU9mYXN0JyB3aWxsIGJlIHJlcGxhY2VkIGJ5ICctTzEnIHdoZW4gY29tcGlsaW5nIGNpcGhlci4KLUlmIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgbGliZ2NyeXB0IGFuZCBzeXNyb290IGNvbnRhaW5zIHN1Y2ggY2hhcmFjdGVycywgd2Ugd291bGQKLWdldCBjb21waWxlIGVycm9ycyBiZWNhdXNlIHRoZSBzeXNyb290IHBhdGggaGFzIGJlZW4gbW9kaWZpZWQuCi0KLUZpeCB0aGlzIGJ5IGFkZGluZyBibGFuayBzcGFjZXMgYmVmb3JlIGFuZCBhZnRlciB0aGUgb3JpZ2luYWwgbWF0Y2hpbmcgcGF0dGVybiBpbiB0aGUKLXNlZCBjb21tYW5kLgotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjaXBoZXIvTWFrZWZpbGUuYW0gfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvTWFrZWZpbGUuYW0gYi9jaXBoZXIvTWFrZWZpbGUuYW0KLWluZGV4IDc2Y2RjOTYuLjlhODk3OTIgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvTWFrZWZpbGUuYW0KLSsrKyBiL2NpcGhlci9NYWtlZmlsZS5hbQotQEAgLTY5LDcgKzY5LDcgQEAgcmZjMjI2OC5jIFwKLSBjYW1lbGxpYS5jIGNhbWVsbGlhLmggY2FtZWxsaWEtZ2x1ZS5jCi0gCi0gaWYgRU5BQkxFX09fRkxBR19NVU5HSU5HCi0tb19mbGFnX211bmdpbmcgPSBzZWQgLWUgJ3MvLU9cKFsyLTlzXVsyLTlzXSpcKS8tTzEvJyAtZSAncy8tT2Zhc3QvLU8xL2cnCi0rb19mbGFnX211bmdpbmcgPSBzZWQgLWUgJ3MvIC1PXChbMi05c11bMi05c10qXCkgLyAtTzEgLycgLWUgJ3MvIC1PZmFzdCAvIC1PMSAvZycKLSBlbHNlCi0gb19mbGFnX211bmdpbmcgPSBjYXQKLSBlbmRpZgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQwMzU3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKLUhPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLVNFQ1RJT04gPSAibGlicyIKLQotIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKLQotREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LUlDRS1mYWlsdXJlLW9uLW1pcHMtd2l0aC1vcHRpb24tTy1hbmQtZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZWNjLVN0b3JlLUVkRFNBLXNlc3Npb24ta2V5LWluLXNlY3VyZS1tZW1vcnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzUyNi5wYXRjaCBcCi0iCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliZ2NyeXB0LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYXNtIgotCi1QQUNLQUdFQ09ORklHID8/PSAiY2FwYWJpbGl0aWVzIgotUEFDS0FHRUNPTkZJR1tjYXBhYmlsaXRpZXNdID0gIi0td2l0aC1jYXBhYmlsaXRpZXMsLS13aXRob3V0LWNhcGFiaWxpdGllcyxsaWJjYXAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIEVsc2UgdGhpcyBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIG9uZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotfQotCi0jIGxpYmdjcnlwdC5wYyBpcyBhZGRlZCBsb2NhbGx5IGFuZCB0aHVzIGluc3RhbGxlZCBoZXJlCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy9saWJnY3J5cHQucGMgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnLwotfQotCi1QQUNLQUdFUyA9KyAiZHVtcHNleHAtZGV2IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9obWFjMjU2IgotRklMRVNfZHVtcHNleHAtZGV2ICs9ICIke2JpbmRpcn0vZHVtcHNleHAiCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjcuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTBhMWZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuNy42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIGxpYmdjcnlwdC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImVhYzZkMTE5OTk2NTBlOGExNDkzNjc0YzFiZGJjN2Y4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjMGFlYzc3MTRkNzVkODEyYjY2NWJkNTEwZDY2MDMxYjFiMmNlOGZhODU1Y2MyYzAyMjM4Yzk1NGVhMzY5ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyOTgyZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMC5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKK0hPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKK1NFQ1RJT04gPSAibGlicyIKKworIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgorTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYW5kLXVzZS1wa2ctY29uZmlnLWZvci1saWJnY3J5cHQtaW5zdGVhZC1vZi1jb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtYmVuY2gtc2xvcGUuYy13b3JrYXJvdW5kLUlDRS1mYWlsdXJlLW9uLW1pcHMtdy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMTBjZTQzNTJmOWVhNmY1NjBiZGM2YzU2NDRhZTkzYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmU0NzBiN2YyZDNhNzAzZTg3NDdmMDVhOGMxOWQ5ZTEwZTI2ZWJmMmQ1ZjNkNzFmZjc1YTQwZjUwNGUxMmVlIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmdjcnlwdC1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWFzbSIKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjYXBhYmlsaXRpZXMiCitQQUNLQUdFQ09ORklHW2NhcGFiaWxpdGllc10gPSAiLS13aXRoLWNhcGFiaWxpdGllcywtLXdpdGhvdXQtY2FwYWJpbGl0aWVzLGxpYmNhcCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGlzIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgb25lIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Cit9CisKKyMgbGliZ2NyeXB0LnBjIGlzIGFkZGVkIGxvY2FsbHkgYW5kIHRodXMgaW5zdGFsbGVkIGhlcmUKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vc3JjL2xpYmdjcnlwdC5wYyAke0R9LyR7bGliZGlyfS9wa2djb25maWcvCit9CisKK1BBQ0tBR0VTID0rICJkdW1wc2V4cC1kZXYiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2htYWMyNTYiCitGSUxFU19kdW1wc2V4cC1kZXYgKz0gIiR7YmluZGlyfS9kdW1wc2V4cCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MGRiMWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVNVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2VuZGxpbmU9MjM7bWQ1PTY0YWY5ODQ2YmFhZjg1Mjc5M2ZkM2E1YWYzOTNhY2JmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7ZW5kbGluZT0yMDttZDU9ODcyYjIzODlmZTliYWU3ZmZiODBkMmI5MTIyNWFmYmMiCi0KLQotU0VDVElPTiA9ICJsaWJzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTc0NTY3MDlkYmJjYmI2OTM1NDMxN2ZmZTNlMzQ3Y2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM0YmNiYzkwMTE2OTMyZTNhY2QzN2IzNzgxMmQ4NjUzYjFiMTg5YzE5MDQ5ODU4OThlODYwYWY4MThhZWU2OSIKLVBSID0gInIxIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZy1lcnJvci1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dAotQ1BQRkxBR1MgKz0gIi1QIgotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCVRBUkdFVF9GSUxFPWxpbnV4LWdudQotCWlmIFsgJHtUQVJHRVRfT1N9ID0gIm1pbmd3MzIiIF07IHRoZW4KLQkJIyBUaGVyZSBhcmUgbm8gYXJjaCBzcGVjaWZpYyBzeXNjZmcgZmlsZXMgZm9yIG1pbmd3MzIKLQkJVEFSR0VUX0ZJTEU9Ci0JZWxpZiBbICR7VEFSR0VUX09TfSAhPSAibGludXgiIF07IHRoZW4KLQkJVEFSR0VUX0ZJTEU9JHtUQVJHRVRfT1N9Ci0JZmkKLQotCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KLQkgIGFhcmNoNjRfYmUpIFRVUExFPWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIGFybSkJICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OwotCSAgYXJtZWIpICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OwotCSAgaTU4NnxpNjg2KSAgVFVQTEU9aTY4Ni1wYy1saW51eC1nbnUgOzsKLQkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKLQkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OwotCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXBjLWxpbnV4LWdudSA7OwotCSAgKikgICAgICAgICAgVFVQTEU9JHtUQVJHRVRfQVJDSH0tdW5rbm93bi1saW51eC1nbnUgOzsgCi0JZXNhYwotCi0JaWYgWyAtbiAiJFRBUkdFVF9GSUxFIiBdOyB0aGVuCi0JCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAotCQkJJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQotCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJlMmQ1MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKQEAgLTAsMCArMSw2MSBAQAorU1VNTUFSWSA9ICJTbWFsbCBsaWJyYXJ5IHRoYXQgZGVmaW5lcyBjb21tb24gZXJyb3IgdmFsdWVzIGZvciBhbGwgR251UEcgY29tcG9uZW50cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvbGliZ3BnLWVycm9yLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnLWVycm9yLmguaW47ZW5kbGluZT0yMzttZDU9YmVhZTFlNDRkOGQ1YzI2NWQxOTQ3NjAyNzYwMzNhN2MgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2luaXQuYztlbmRsaW5lPTIwO21kNT04NzJiMjM4OWZlOWJhZTdmZmI4MGQyYjkxMjI1YWZiYyIKKworCitTRUNUSU9OID0gImxpYnMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MjE3ZWYzZTc2YTcyNzVhMmEzYjU2OWExMmRkYzk4OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZjkzYWFjNmZlY2I3ZGEyYjkyODcxYmI5ZWUzMzAzMmJlNmE4N2IxNzRmNTRhYmY4ZGRmMDkxMWEyMmQyOWQyIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZy1lcnJvci1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dAorQ1BQRkxBR1MgKz0gIi1QIgorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCVRBUkdFVF9GSUxFPWxpbnV4LWdudQorCWlmIFsgJHtUQVJHRVRfT1N9ID0gIm1pbmd3MzIiIF07IHRoZW4KKwkJIyBUaGVyZSBhcmUgbm8gYXJjaCBzcGVjaWZpYyBzeXNjZmcgZmlsZXMgZm9yIG1pbmd3MzIKKwkJVEFSR0VUX0ZJTEU9CisJZWxpZiBbICR7VEFSR0VUX09TfSAhPSAibGludXgiIF07IHRoZW4KKwkJVEFSR0VUX0ZJTEU9JHtUQVJHRVRfT1N9CisJZmkKKworCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KKwkgIGFhcmNoNjRfYmUpIFRVUExFPWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIGFybSkJICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OworCSAgYXJtZWIpICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OworCSAgaTU4NnxpNjg2KSAgVFVQTEU9aTY4Ni1wYy1saW51eC1nbnUgOzsKKwkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKKwkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OworCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OworCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXBjLWxpbnV4LWdudSA7OworCSAgKikgICAgICAgICAgVFVQTEU9JHtUQVJHRVRfQVJDSH0tdW5rbm93bi1saW51eC1nbnUgOzsgCisJZXNhYworCisJaWYgWyAtbiAiJFRBUkdFVF9GSUxFIiBdOyB0aGVuCisJCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAorCQkJJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQorCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252LTEuMTQvYWRkLXJlbG9jYXRhYmxlLW1vZHVsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udi0xLjE0L2FkZC1yZWxvY2F0YWJsZS1tb2R1bGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZjM3N2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252LTEuMTQvYWRkLXJlbG9jYXRhYmxlLW1vZHVsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwMDggKzAsMCBAQAotVGhpcyBwYXRjaCBpcyBuZWVkZWQgdG8gc29sdmUgaXNzdWVzIGxpa2UKLXwgaWNvbnYubzogSW4gZnVuY3Rpb24gYG1haW4nOgotfCAvaG9tZS9qYW1lcy9zdHVmZi9iZWFnbGUvdG1wLWVnbGliYy93b3JrL2FybXY3YS12ZnAtbmVvbi1vZS1saW51eC1nbnVlYWJpL2xpYmljb252LTEuMTQtcjAvbGliaWNvbnYtMS4xNC9zcmMvLi9pY29udi5jOjg2MTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcmVsb2NhdGUnCi18IC4uL3NyY2xpYi9saWJpY3J0LmEocHJvZ3JlbG9jLm8pOiBJbiBmdW5jdGlvbiBgcHJlcGFyZV9yZWxvY2F0ZSc6Ci18IC9ob21lL2phbWVzL3N0dWZmL2JlYWdsZS90bXAtZWdsaWJjL3dvcmsvYXJtdjdhLXZmcC1uZW9uLW9lLWxpbnV4LWdudWVhYmkvbGliaWNvbnYtMS4xNC1yMC9saWJpY29udi0xLjE0L3NyY2xpYi9wcm9ncmVsb2MuYzoyOTc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGNvbXB1dGVfY3Vycl9wcmVmaXgnCi18IC9ob21lL2phbWVzL3N0dWZmL2JlYWdsZS90bXAtZWdsaWJjL3dvcmsvYXJtdjdhLXZmcC1uZW9uLW9lLWxpbnV4LWdudWVhYmkvbGliaWNvbnYtMS4xNC1yMC9saWJpY29udi0xLjE0L3NyY2xpYi9wcm9ncmVsb2MuYzozMDI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldF9yZWxvY2F0aW9uX3ByZWZpeCcKLXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLXwgbWFrZVsxXTogKioqIFtpbnN0YWxsXSBFcnJvciAxCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L2FyZy1ub25udWxsLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvYXJnLW5vbm51bGwuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvYXJnLW5vbm51bGwuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotKysrIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L2FyZy1ub25udWxsLmgJMjAxMi0wMS0wOCAwMjowNzozOS45MzA0ODQ0MzggLTA4MDAKLUBAIC0wLDAgKzEsMjYgQEAKLSsvKiBBIEMgbWFjcm8gZm9yIGRlY2xhcmluZyB0aGF0IHNwZWNpZmljIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBOVUxMLgotKyAgIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsvKiBfR0xfQVJHX05PTk5VTEwoKG4sLi4uLG0pKSB0ZWxscyB0aGUgY29tcGlsZXIgYW5kIHN0YXRpYyBhbmFseXplciB0b29scwotKyAgIHRoYXQgdGhlIHZhbHVlcyBwYXNzZWQgYXMgYXJndW1lbnRzIG4sIC4uLiwgbSBtdXN0IGJlIG5vbi1OVUxMIHBvaW50ZXJzLgotKyAgIG4gPSAxIHN0YW5kcyBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LCBuID0gMiBmb3IgdGhlIHNlY29uZCBhcmd1bWVudCBldGMuICAqLwotKyNpZm5kZWYgX0dMX0FSR19OT05OVUxMCi0rIyBpZiAoX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA+PSAzKSB8fCBfX0dOVUNfXyA+IDMKLSsjICBkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFtcykgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fIHBhcmFtcykpCi0rIyBlbHNlCi0rIyAgZGVmaW5lIF9HTF9BUkdfTk9OTlVMTChwYXJhbXMpCi0rIyBlbmRpZgotKyNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9jKytkZWZzLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvYysrZGVmcy5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9jKytkZWZzLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9jKytkZWZzLmgJMjAxMi0wMS0wOCAwMjowNzozOS45NDI0ODQ0MzggLTA4MDAKLUBAIC0wLDAgKzEsMjcxIEBACi0rLyogQysrIGNvbXBhdGlibGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gbWFjcm9zLgotKyAgIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZuZGVmIF9HTF9DWFhERUZTX0gKLSsjZGVmaW5lIF9HTF9DWFhERUZTX0gKLSsKLSsvKiBUaGUgdGhyZWUgbW9zdCBmcmVxdWVudCB1c2UgY2FzZXMgb2YgdGhlc2UgbWFjcm9zIGFyZToKLSsKLSsgICAqIEZvciBwcm92aWRpbmcgYSBzdWJzdGl0dXRlIGZvciBhIGZ1bmN0aW9uIHRoYXQgaXMgbWlzc2luZyBvbiBzb21lCi0rICAgICBwbGF0Zm9ybXMsIGJ1dCBpcyBkZWNsYXJlZCBhbmQgd29ya3MgZmluZSBvbiB0aGUgcGxhdGZvcm1zIG9uIHdoaWNoCi0rICAgICBpdCBleGlzdHM6Ci0rCi0rICAgICAgICNpZiBAR05VTElCX0ZPT0AKLSsgICAgICAgIyBpZiAhQEhBVkVfRk9PQAotKyAgICAgICBfR0xfRlVOQ0RFQ0xfU1lTIChmb28sIC4uLik7Ci0rICAgICAgICMgZW5kaWYKLSsgICAgICAgX0dMX0NYWEFMSUFTX1NZUyAoZm9vLCAuLi4pOwotKyAgICAgICBfR0xfQ1hYQUxJQVNXQVJOIChmb28pOwotKyAgICAgICAjZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0rICAgICAgIC4uLgotKyAgICAgICAjZW5kaWYKLSsKLSsgICAqIEZvciBwcm92aWRpbmcgYSByZXBsYWNlbWVudCBmb3IgYSBmdW5jdGlvbiB0aGF0IGV4aXN0cyBvbiBhbGwgcGxhdGZvcm1zLAotKyAgICAgYnV0IGlzIGJyb2tlbi9pbnN1ZmZpY2llbnQgYW5kIG5lZWRzIHRvIGJlIHJlcGxhY2VkIG9uIHNvbWUgcGxhdGZvcm1zOgotKwotKyAgICAgICAjaWYgQEdOVUxJQl9GT09ACi0rICAgICAgICMgaWYgQFJFUExBQ0VfRk9PQAotKyAgICAgICAjICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotKyAgICAgICAjICAgdW5kZWYgZm9vCi0rICAgICAgICMgICBkZWZpbmUgZm9vIHJwbF9mb28KLSsgICAgICAgIyAgZW5kaWYKLSsgICAgICAgX0dMX0ZVTkNERUNMX1JQTCAoZm9vLCAuLi4pOwotKyAgICAgICBfR0xfQ1hYQUxJQVNfUlBMIChmb28sIC4uLik7Ci0rICAgICAgICMgZWxzZQotKyAgICAgICBfR0xfQ1hYQUxJQVNfU1lTIChmb28sIC4uLik7Ci0rICAgICAgICMgZW5kaWYKLSsgICAgICAgX0dMX0NYWEFMSUFTV0FSTiAoZm9vKTsKLSsgICAgICAgI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotKyAgICAgICAuLi4KLSsgICAgICAgI2VuZGlmCi0rCi0rICAgKiBGb3IgcHJvdmlkaW5nIGEgcmVwbGFjZW1lbnQgZm9yIGEgZnVuY3Rpb24gdGhhdCBleGlzdHMgb24gc29tZSBwbGF0Zm9ybXMKLSsgICAgIGJ1dCBpcyBicm9rZW4vaW5zdWZmaWNpZW50IGFuZCBuZWVkcyB0byBiZSByZXBsYWNlZCBvbiBzb21lIG9mIHRoZW0gYW5kCi0rICAgICBpcyBhZGRpdGlvbmFsbHkgZWl0aGVyIG1pc3Npbmcgb3IgdW5kZWNsYXJlZCBvbiBzb21lIG90aGVyIHBsYXRmb3JtczoKLSsKLSsgICAgICAgI2lmIEBHTlVMSUJfRk9PQAotKyAgICAgICAjIGlmIEBSRVBMQUNFX0ZPT0AKLSsgICAgICAgIyAgaWYgIShkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRSkKLSsgICAgICAgIyAgIHVuZGVmIGZvbwotKyAgICAgICAjICAgZGVmaW5lIGZvbyBycGxfZm9vCi0rICAgICAgICMgIGVuZGlmCi0rICAgICAgIF9HTF9GVU5DREVDTF9SUEwgKGZvbywgLi4uKTsKLSsgICAgICAgX0dMX0NYWEFMSUFTX1JQTCAoZm9vLCAuLi4pOwotKyAgICAgICAjIGVsc2UKLSsgICAgICAgIyAgaWYgIUBIQVZFX0ZPT0AgICBvciAgIGlmICFASEFWRV9ERUNMX0ZPT0AKLSsgICAgICAgX0dMX0ZVTkNERUNMX1NZUyAoZm9vLCAuLi4pOwotKyAgICAgICAjICBlbmRpZgotKyAgICAgICBfR0xfQ1hYQUxJQVNfU1lTIChmb28sIC4uLik7Ci0rICAgICAgICMgZW5kaWYKLSsgICAgICAgX0dMX0NYWEFMSUFTV0FSTiAoZm9vKTsKLSsgICAgICAgI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotKyAgICAgICAuLi4KLSsgICAgICAgI2VuZGlmCi0rKi8KLSsKLSsvKiBfR0xfRVhURVJOX0MgZGVjbGFyYXRpb247Ci0rICAgcGVyZm9ybXMgdGhlIGRlY2xhcmF0aW9uIHdpdGggQyBsaW5rYWdlLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cwotKyMgZGVmaW5lIF9HTF9FWFRFUk5fQyBleHRlcm4gIkMiCi0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfRVhURVJOX0MgZXh0ZXJuCi0rI2VuZGlmCi0rCi0rLyogX0dMX0ZVTkNERUNMX1JQTCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyk7Ci0rICAgZGVjbGFyZXMgYSByZXBsYWNlbWVudCBmdW5jdGlvbiwgbmFtZWQgcnBsX2Z1bmMsIHdpdGggdGhlIGdpdmVuIHByb3RvdHlwZSwKLSsgICBjb25zaXN0aW5nIG9mIHJldHVybiB0eXBlLCBwYXJhbWV0ZXJzLCBhbmQgYXR0cmlidXRlcy4KLSsgICBFeGFtcGxlOgotKyAgICAgX0dMX0ZVTkNERUNMX1JQTCAob3BlbiwgaW50LCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotKyAqLwotKyNkZWZpbmUgX0dMX0ZVTkNERUNMX1JQTChmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgX0dMX0ZVTkNERUNMX1JQTF8xIChycGxfIyNmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKQotKyNkZWZpbmUgX0dMX0ZVTkNERUNMX1JQTF8xKHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgX0dMX0VYVEVSTl9DIHJldHR5cGUgcnBsX2Z1bmMgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcwotKwotKy8qIF9HTF9GVU5DREVDTF9TWVMgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpOwotKyAgIGRlY2xhcmVzIHRoZSBzeXN0ZW0gZnVuY3Rpb24sIG5hbWVkIGZ1bmMsIHdpdGggdGhlIGdpdmVuIHByb3RvdHlwZSwKLSsgICBjb25zaXN0aW5nIG9mIHJldHVybiB0eXBlLCBwYXJhbWV0ZXJzLCBhbmQgYXR0cmlidXRlcy4KLSsgICBFeGFtcGxlOgotKyAgICAgX0dMX0ZVTkNERUNMX1NZUyAob3BlbiwgaW50LCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotKyAqLwotKyNkZWZpbmUgX0dMX0ZVTkNERUNMX1NZUyhmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgX0dMX0VYVEVSTl9DIHJldHR5cGUgZnVuYyBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzCi0rCi0rLyogX0dMX0NYWEFMSUFTX1JQTCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgZGVjbGFyZXMgYSBDKysgYWxpYXMgY2FsbGVkIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMKLSsgICB0aGF0IHJlZGlyZWN0cyB0byBycGxfZnVuYywgaWYgR05VTElCX05BTUVTUEFDRSBpcyBkZWZpbmVkLgotKyAgIEV4YW1wbGU6Ci0rICAgICBfR0xfQ1hYQUxJQVNfUlBMIChvcGVuLCBpbnQsIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzLCAuLi4pKTsKLSsgKi8KLSsjZGVmaW5lIF9HTF9DWFhBTElBU19SUEwoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgIF9HTF9DWFhBTElBU19SUExfMSAoZnVuYywgcnBsXyMjZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycykKLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMXzEoZnVuYyxycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICByZXR0eXBlICgqY29uc3QgZnVuYykgcGFyYW1ldGVycyA9IDo6cnBsX2Z1bmM7ICAgICAgICAgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjZWxzZQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19SUExfMShmdW5jLHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbmRpZgotKwotKy8qIF9HTF9DWFhBTElBU19SUExfQ0FTVF8xIChmdW5jLCBycGxfZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgaXMgbGlrZSAgX0dMX0NYWEFMSUFTX1JQTF8xIChmdW5jLCBycGxfZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgZXhjZXB0IHRoYXQgdGhlIEMgZnVuY3Rpb24gcnBsX2Z1bmMgbWF5IGhhdmUgYSBzbGlnaHRseSBkaWZmZXJlbnQKLSsgICBkZWNsYXJhdGlvbi4gIEEgY2FzdCBpcyB1c2VkIHRvIHNpbGVuY2UgdGhlICJpbnZhbGlkIGNvbnZlcnNpb24iIGVycm9yCi0rICAgdGhhdCB3b3VsZCBvdGhlcndpc2Ugb2NjdXIuICAqLwotKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19SUExfQ0FTVF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgIHJldHR5cGUgKCpjb25zdCBmdW5jKSBwYXJhbWV0ZXJzID0gICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICByZWludGVycHJldF9jYXN0PHJldHR5cGUoKilwYXJhbWV0ZXJzPig6OnJwbF9mdW5jKTsgICAgICAgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTF9DQVNUXzEoZnVuYyxycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjZW5kaWYKLSsKLSsvKiBfR0xfQ1hYQUxJQVNfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLSsgICBkZWNsYXJlcyBhIEMrKyBhbGlhcyBjYWxsZWQgR05VTElCX05BTUVTUEFDRTo6ZnVuYwotKyAgIHRoYXQgcmVkaXJlY3RzIHRvIHRoZSBzeXN0ZW0gcHJvdmlkZWQgZnVuY3Rpb24gZnVuYywgaWYgR05VTElCX05BTUVTUEFDRQotKyAgIGlzIGRlZmluZWQuCi0rICAgRXhhbXBsZToKLSsgICAgIF9HTF9DWFhBTElBU19TWVMgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikpOwotKyAqLwotKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotKyAgLyogSWYgd2Ugd2VyZSB0byB3cml0ZQotKyAgICAgICByZXR0eXBlICgqY29uc3QgZnVuYykgcGFyYW1ldGVycyA9IDo6ZnVuYzsKLSsgICAgIGxpa2UgYWJvdmUgaW4gX0dMX0NYWEFMSUFTX1JQTF8xLCB0aGUgY29tcGlsZXIgY291bGQgb3B0aW1pemUgY2FsbHMKLSsgICAgIGJldHRlciAocmVtb3ZlIGFuIGluZGlyZWN0aW9uIHRocm91Z2ggYSAnc3RhdGljJyBwb2ludGVyIHZhcmlhYmxlKSwKLSsgICAgIGJ1dCB0aGVuIHRoZSBfR0xfQ1hYQUxJQVNXQVJOIG1hY3JvIGJlbG93IHdvdWxkIGNhdXNlIGEgd2FybmluZyBub3Qgb25seQotKyAgICAgZm9yIHVzZXMgb2YgOjpmdW5jIGJ1dCBhbHNvIGZvciB1c2VzIG9mIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMuICAqLwotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVMoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgIHN0YXRpYyByZXR0eXBlICgqZnVuYykgcGFyYW1ldGVycyA9IDo6ZnVuYzsgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTX1NZU19DQVNUIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLSsgICBpcyBsaWtlICBfR0xfQ1hYQUxJQVNfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLSsgICBleGNlcHQgdGhhdCB0aGUgQyBmdW5jdGlvbiBmdW5jIG1heSBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGRlY2xhcmF0aW9uLgotKyAgIEEgY2FzdCBpcyB1c2VkIHRvIHNpbGVuY2UgdGhlICJpbnZhbGlkIGNvbnZlcnNpb24iIGVycm9yIHRoYXQgd291bGQKLSsgICBvdGhlcndpc2Ugb2NjdXIuICAqLwotKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVNfQ0FTVChmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotKyAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgIHN0YXRpYyByZXR0eXBlICgqZnVuYykgcGFyYW1ldGVycyA9ICAgICAgICAgICAgICAgXAotKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyZXR0eXBlKCopcGFyYW1ldGVycz4oOjpmdW5jKTsgXAotKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTX1NZU19DQVNUMiAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycywgcmV0dHlwZTIsIHBhcmFtZXRlcnMyKTsKLSsgICBpcyBsaWtlICBfR0xfQ1hYQUxJQVNfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLSsgICBleGNlcHQgdGhhdCB0aGUgQyBmdW5jdGlvbiBpcyBwaWNrZWQgYW1vbmcgYSBzZXQgb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbnMsCi0rICAgbmFtZWx5IHRoZSBvbmUgd2l0aCByZXR0eXBlMiBhbmQgcGFyYW1ldGVyczIuICBUd28gY29uc2VjdXRpdmUgY2FzdHMKLSsgICBhcmUgdXNlZCB0byBzaWxlbmNlIHRoZSAiY2Fubm90IGZpbmQgYSBtYXRjaCIgYW5kICJpbnZhbGlkIGNvbnZlcnNpb24iCi0rICAgZXJyb3JzIHRoYXQgd291bGQgb3RoZXJ3aXNlIG9jY3VyLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsgIC8qIFRoZSBvdXRlciBjYXN0IG11c3QgYmUgYSByZWludGVycHJldF9jYXN0LgotKyAgICAgVGhlIGlubmVyIGNhc3Q6IFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQgYXMgYSBzZXQgb2Ygb3ZlcmxvYWRlZAotKyAgICAgZnVuY3Rpb25zLCBpdCB3b3JrcyBhcyBhIHN0YXRpY19jYXN0PD4sIGNob29zaW5nIHRoZSBkZXNpZ25hdGVkIHZhcmlhbnQuCi0rICAgICBXaGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkIGFzIGEgc2luZ2xlIHZhcmlhbnQsIGl0IHdvcmtzIGFzIGEKLSsgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Pi4gVGhlIHBhcmVudGhlc2l6ZWQgY2FzdCBzeW50YXggd29ya3MgYm90aCB3YXlzLiAgKi8KLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QyKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzLHJldHR5cGUyLHBhcmFtZXRlcnMyKSBcCi0rICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICBzdGF0aWMgcmV0dHlwZSAoKmZ1bmMpIHBhcmFtZXRlcnMgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICByZWludGVycHJldF9jYXN0PHJldHR5cGUoKilwYXJhbWV0ZXJzPiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAocmV0dHlwZTIoKilwYXJhbWV0ZXJzMikoOjpmdW5jKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QyKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzLHJldHR5cGUyLHBhcmFtZXRlcnMyKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTV0FSTiAoZnVuYyk7Ci0rICAgY2F1c2VzIGEgd2FybmluZyB0byBiZSBlbWl0dGVkIHdoZW4gOjpmdW5jIGlzIHVzZWQgYnV0IG5vdCB3aGVuCi0rICAgR05VTElCX05BTUVTUEFDRTo6ZnVuYyBpcyB1c2VkLiAgZnVuYyBtdXN0IGJlIGRlZmluZWQgd2l0aG91dCBvdmVybG9hZGVkCi0rICAgdmFyaWFudHMuICAqLwotKyNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4oZnVuYykgXAotKyAgIF9HTF9DWFhBTElBU1dBUk5fMSAoZnVuYywgR05VTElCX05BTUVTUEFDRSkKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOXzEoZnVuYyxuYW1lc3BhY2UpIFwKLSsgICBfR0xfQ1hYQUxJQVNXQVJOXzIgKGZ1bmMsIG5hbWVzcGFjZSkKLSsvKiBUbyB3b3JrIGFyb3VuZCBHQ0MgYnVnIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQzODgxPiwKLSsgICB3ZSBlbmFibGUgdGhlIHdhcm5pbmcgb25seSB3aGVuIG5vdCBvcHRpbWl6aW5nLiAgKi8KLSsjIGlmICFfX09QVElNSVpFX18KLSsjICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8yKGZ1bmMsbmFtZXNwYWNlKSBcCi0rICAgIF9HTF9XQVJOX09OX1VTRSAoZnVuYywgXAotKyAgICAgICAgICAgICAgICAgICAgICJUaGUgc3ltYm9sIDo6IiAjZnVuYyAiIHJlZmVycyB0byB0aGUgc3lzdGVtIGZ1bmN0aW9uLiAiIFwKLSsgICAgICAgICAgICAgICAgICAgICAiVXNlICIgI25hbWVzcGFjZSAiOjoiICNmdW5jICIgaW5zdGVhZC4iKQotKyMgZWxpZiBfX0dOVUNfXyA+PSAzICYmIEdOVUxJQl9TVFJJQ1RfQ0hFQ0tJTkcKLSsjICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8yKGZ1bmMsbmFtZXNwYWNlKSBcCi0rICAgICBleHRlcm4gX190eXBlb2ZfXyAoZnVuYykgZnVuYwotKyMgZWxzZQotKyMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOXzIoZnVuYyxuYW1lc3BhY2UpIFwKLSsgICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rIyBlbmRpZgotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTihmdW5jKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTV0FSTjEgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpOwotKyAgIGNhdXNlcyBhIHdhcm5pbmcgdG8gYmUgZW1pdHRlZCB3aGVuIHRoZSBnaXZlbiBvdmVybG9hZGVkIHZhcmlhbnQgb2YgOjpmdW5jCi0rICAgaXMgdXNlZCBidXQgbm90IHdoZW4gR05VTElCX05BTUVTUEFDRTo6ZnVuYyBpcyB1c2VkLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMShmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgIF9HTF9DWFhBTElBU1dBUk4xXzEgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHTlVMSUJfTkFNRVNQQUNFKQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4xXzEoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbmFtZXNwYWNlKSBcCi0rICAgX0dMX0NYWEFMSUFTV0FSTjFfMiAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcywgbmFtZXNwYWNlKQotKy8qIFRvIHdvcmsgYXJvdW5kIEdDQyBidWcgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDM4ODE+LAotKyAgIHdlIGVuYWJsZSB0aGUgd2FybmluZyBvbmx5IHdoZW4gbm90IG9wdGltaXppbmcuICAqLwotKyMgaWYgIV9fT1BUSU1JWkVfXwotKyMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8yKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotKyAgICBfR0xfV0FSTl9PTl9VU0VfQ1hYIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc3ltYm9sIDo6IiAjZnVuYyAiIHJlZmVycyB0byB0aGUgc3lzdGVtIGZ1bmN0aW9uLiAiIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIlVzZSAiICNuYW1lc3BhY2UgIjo6IiAjZnVuYyAiIGluc3RlYWQuIikKLSsjIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0rIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4xXzIoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbmFtZXNwYWNlKSBcCi0rICAgICBleHRlcm4gX190eXBlb2ZfXyAoZnVuYykgZnVuYwotKyMgZWxzZQotKyMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8yKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotKyAgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjIGVuZGlmCi0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMShmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBfR0xfQ1hYREVGU19IICovCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaCBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaAkyMDExLTA4LTA3IDA2OjIyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsMjYgKzAsMCBAQAotLS8qIEEgQyBtYWNybyBmb3IgZGVjbGFyaW5nIHRoYXQgc3BlY2lmaWMgYXJndW1lbnRzIG11c3Qgbm90IGJlIE5VTEwuCi0tICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotLQotLS8qIF9HTF9BUkdfTk9OTlVMTCgobiwuLi4sbSkpIHRlbGxzIHRoZSBjb21waWxlciBhbmQgc3RhdGljIGFuYWx5emVyIHRvb2xzCi0tICAgdGhhdCB0aGUgdmFsdWVzIHBhc3NlZCBhcyBhcmd1bWVudHMgbiwgLi4uLCBtIG11c3QgYmUgbm9uLU5VTEwgcG9pbnRlcnMuCi0tICAgbiA9IDEgc3RhbmRzIGZvciB0aGUgZmlyc3QgYXJndW1lbnQsIG4gPSAyIGZvciB0aGUgc2Vjb25kIGFyZ3VtZW50IGV0Yy4gICovCi0tI2lmbmRlZiBfR0xfQVJHX05PTk5VTEwKLS0jIGlmIChfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fID49IDMpIHx8IF9fR05VQ19fID4gMwotLSMgIGRlZmluZSBfR0xfQVJHX05PTk5VTEwocGFyYW1zKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gcGFyYW1zKSkKLS0jIGVsc2UKLS0jICBkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFtcykKLS0jIGVuZGlmCi0tI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L2MrK2RlZnMuaAkyMDExLTA4LTA3IDA2OjIyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi1AQCAtMSwyNzEgKzAsMCBAQAotLS8qIEMrKyBjb21wYXRpYmxlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG1hY3Jvcy4KLS0gICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0tICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0tCi0tI2lmbmRlZiBfR0xfQ1hYREVGU19ICi0tI2RlZmluZSBfR0xfQ1hYREVGU19ICi0tCi0tLyogVGhlIHRocmVlIG1vc3QgZnJlcXVlbnQgdXNlIGNhc2VzIG9mIHRoZXNlIG1hY3JvcyBhcmU6Ci0tCi0tICAgKiBGb3IgcHJvdmlkaW5nIGEgc3Vic3RpdHV0ZSBmb3IgYSBmdW5jdGlvbiB0aGF0IGlzIG1pc3Npbmcgb24gc29tZQotLSAgICAgcGxhdGZvcm1zLCBidXQgaXMgZGVjbGFyZWQgYW5kIHdvcmtzIGZpbmUgb24gdGhlIHBsYXRmb3JtcyBvbiB3aGljaAotLSAgICAgaXQgZXhpc3RzOgotLQotLSAgICAgICAjaWYgQEdOVUxJQl9GT09ACi0tICAgICAgICMgaWYgIUBIQVZFX0ZPT0AKLS0gICAgICAgX0dMX0ZVTkNERUNMX1NZUyAoZm9vLCAuLi4pOwotLSAgICAgICAjIGVuZGlmCi0tICAgICAgIF9HTF9DWFhBTElBU19TWVMgKGZvbywgLi4uKTsKLS0gICAgICAgX0dMX0NYWEFMSUFTV0FSTiAoZm9vKTsKLS0gICAgICAgI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotLSAgICAgICAuLi4KLS0gICAgICAgI2VuZGlmCi0tCi0tICAgKiBGb3IgcHJvdmlkaW5nIGEgcmVwbGFjZW1lbnQgZm9yIGEgZnVuY3Rpb24gdGhhdCBleGlzdHMgb24gYWxsIHBsYXRmb3JtcywKLS0gICAgIGJ1dCBpcyBicm9rZW4vaW5zdWZmaWNpZW50IGFuZCBuZWVkcyB0byBiZSByZXBsYWNlZCBvbiBzb21lIHBsYXRmb3JtczoKLS0KLS0gICAgICAgI2lmIEBHTlVMSUJfRk9PQAotLSAgICAgICAjIGlmIEBSRVBMQUNFX0ZPT0AKLS0gICAgICAgIyAgaWYgIShkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRSkKLS0gICAgICAgIyAgIHVuZGVmIGZvbwotLSAgICAgICAjICAgZGVmaW5lIGZvbyBycGxfZm9vCi0tICAgICAgICMgIGVuZGlmCi0tICAgICAgIF9HTF9GVU5DREVDTF9SUEwgKGZvbywgLi4uKTsKLS0gICAgICAgX0dMX0NYWEFMSUFTX1JQTCAoZm9vLCAuLi4pOwotLSAgICAgICAjIGVsc2UKLS0gICAgICAgX0dMX0NYWEFMSUFTX1NZUyAoZm9vLCAuLi4pOwotLSAgICAgICAjIGVuZGlmCi0tICAgICAgIF9HTF9DWFhBTElBU1dBUk4gKGZvbyk7Ci0tICAgICAgICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLS0gICAgICAgLi4uCi0tICAgICAgICNlbmRpZgotLQotLSAgICogRm9yIHByb3ZpZGluZyBhIHJlcGxhY2VtZW50IGZvciBhIGZ1bmN0aW9uIHRoYXQgZXhpc3RzIG9uIHNvbWUgcGxhdGZvcm1zCi0tICAgICBidXQgaXMgYnJva2VuL2luc3VmZmljaWVudCBhbmQgbmVlZHMgdG8gYmUgcmVwbGFjZWQgb24gc29tZSBvZiB0aGVtIGFuZAotLSAgICAgaXMgYWRkaXRpb25hbGx5IGVpdGhlciBtaXNzaW5nIG9yIHVuZGVjbGFyZWQgb24gc29tZSBvdGhlciBwbGF0Zm9ybXM6Ci0tCi0tICAgICAgICNpZiBAR05VTElCX0ZPT0AKLS0gICAgICAgIyBpZiBAUkVQTEFDRV9GT09ACi0tICAgICAgICMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tICAgICAgICMgICB1bmRlZiBmb28KLS0gICAgICAgIyAgIGRlZmluZSBmb28gcnBsX2ZvbwotLSAgICAgICAjICBlbmRpZgotLSAgICAgICBfR0xfRlVOQ0RFQ0xfUlBMIChmb28sIC4uLik7Ci0tICAgICAgIF9HTF9DWFhBTElBU19SUEwgKGZvbywgLi4uKTsKLS0gICAgICAgIyBlbHNlCi0tICAgICAgICMgIGlmICFASEFWRV9GT09AICAgb3IgICBpZiAhQEhBVkVfREVDTF9GT09ACi0tICAgICAgIF9HTF9GVU5DREVDTF9TWVMgKGZvbywgLi4uKTsKLS0gICAgICAgIyAgZW5kaWYKLS0gICAgICAgX0dMX0NYWEFMSUFTX1NZUyAoZm9vLCAuLi4pOwotLSAgICAgICAjIGVuZGlmCi0tICAgICAgIF9HTF9DWFhBTElBU1dBUk4gKGZvbyk7Ci0tICAgICAgICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLS0gICAgICAgLi4uCi0tICAgICAgICNlbmRpZgotLSovCi0tCi0tLyogX0dMX0VYVEVSTl9DIGRlY2xhcmF0aW9uOwotLSAgIHBlcmZvcm1zIHRoZSBkZWNsYXJhdGlvbiB3aXRoIEMgbGlua2FnZS4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMKLS0jIGRlZmluZSBfR0xfRVhURVJOX0MgZXh0ZXJuICJDIgotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0VYVEVSTl9DIGV4dGVybgotLSNlbmRpZgotLQotLS8qIF9HTF9GVU5DREVDTF9SUEwgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpOwotLSAgIGRlY2xhcmVzIGEgcmVwbGFjZW1lbnQgZnVuY3Rpb24sIG5hbWVkIHJwbF9mdW5jLCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsCi0tICAgY29uc2lzdGluZyBvZiByZXR1cm4gdHlwZSwgcGFyYW1ldGVycywgYW5kIGF0dHJpYnV0ZXMuCi0tICAgRXhhbXBsZToKLS0gICAgIF9HTF9GVU5DREVDTF9SUEwgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLS0gKi8KLS0jZGVmaW5lIF9HTF9GVU5DREVDTF9SUEwoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gIF9HTF9GVU5DREVDTF9SUExfMSAocnBsXyMjZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykKLS0jZGVmaW5lIF9HTF9GVU5DREVDTF9SUExfMShycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gIF9HTF9FWFRFUk5fQyByZXR0eXBlIHJwbF9mdW5jIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMKLS0KLS0vKiBfR0xfRlVOQ0RFQ0xfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKTsKLS0gICBkZWNsYXJlcyB0aGUgc3lzdGVtIGZ1bmN0aW9uLCBuYW1lZCBmdW5jLCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsCi0tICAgY29uc2lzdGluZyBvZiByZXR1cm4gdHlwZSwgcGFyYW1ldGVycywgYW5kIGF0dHJpYnV0ZXMuCi0tICAgRXhhbXBsZToKLS0gICAgIF9HTF9GVU5DREVDTF9TWVMgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLS0gKi8KLS0jZGVmaW5lIF9HTF9GVU5DREVDTF9TWVMoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gIF9HTF9FWFRFUk5fQyByZXR0eXBlIGZ1bmMgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcwotLQotLS8qIF9HTF9DWFhBTElBU19SUEwgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGRlY2xhcmVzIGEgQysrIGFsaWFzIGNhbGxlZCBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jCi0tICAgdGhhdCByZWRpcmVjdHMgdG8gcnBsX2Z1bmMsIGlmIEdOVUxJQl9OQU1FU1BBQ0UgaXMgZGVmaW5lZC4KLS0gICBFeGFtcGxlOgotLSAgICAgX0dMX0NYWEFMSUFTX1JQTCAob3BlbiwgaW50LCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKSk7Ci0tICovCi0tI2RlZmluZSBfR0xfQ1hYQUxJQVNfUlBMKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICBfR0xfQ1hYQUxJQVNfUlBMXzEgKGZ1bmMsIHJwbF8jI2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgcmV0dHlwZSAoKmNvbnN0IGZ1bmMpIHBhcmFtZXRlcnMgPSA6OnJwbF9mdW5jOyAgICAgICAgICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tI2Vsc2UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMXzEoZnVuYyxycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZW5kaWYKLS0KLS0vKiBfR0xfQ1hYQUxJQVNfUlBMX0NBU1RfMSAoZnVuYywgcnBsX2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGlzIGxpa2UgIF9HTF9DWFhBTElBU19SUExfMSAoZnVuYywgcnBsX2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGV4Y2VwdCB0aGF0IHRoZSBDIGZ1bmN0aW9uIHJwbF9mdW5jIG1heSBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50Ci0tICAgZGVjbGFyYXRpb24uICBBIGNhc3QgaXMgdXNlZCB0byBzaWxlbmNlIHRoZSAiaW52YWxpZCBjb252ZXJzaW9uIiBlcnJvcgotLSAgIHRoYXQgd291bGQgb3RoZXJ3aXNlIG9jY3VyLiAgKi8KLS0jaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMX0NBU1RfMShmdW5jLHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICByZXR0eXBlICgqY29uc3QgZnVuYykgcGFyYW1ldGVycyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyZXR0eXBlKCopcGFyYW1ldGVycz4oOjpycGxfZnVuYyk7ICAgICAgICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU19SUExfQ0FTVF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tI2VuZGlmCi0tCi0tLyogX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0tICAgZGVjbGFyZXMgYSBDKysgYWxpYXMgY2FsbGVkIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMKLS0gICB0aGF0IHJlZGlyZWN0cyB0byB0aGUgc3lzdGVtIHByb3ZpZGVkIGZ1bmN0aW9uIGZ1bmMsIGlmIEdOVUxJQl9OQU1FU1BBQ0UKLS0gICBpcyBkZWZpbmVkLgotLSAgIEV4YW1wbGU6Ci0tICAgICBfR0xfQ1hYQUxJQVNfU1lTIChvcGVuLCBpbnQsIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzLCAuLi4pKTsKLS0gKi8KLS0jaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0gIC8qIElmIHdlIHdlcmUgdG8gd3JpdGUKLS0gICAgICAgcmV0dHlwZSAoKmNvbnN0IGZ1bmMpIHBhcmFtZXRlcnMgPSA6OmZ1bmM7Ci0tICAgICBsaWtlIGFib3ZlIGluIF9HTF9DWFhBTElBU19SUExfMSwgdGhlIGNvbXBpbGVyIGNvdWxkIG9wdGltaXplIGNhbGxzCi0tICAgICBiZXR0ZXIgKHJlbW92ZSBhbiBpbmRpcmVjdGlvbiB0aHJvdWdoIGEgJ3N0YXRpYycgcG9pbnRlciB2YXJpYWJsZSksCi0tICAgICBidXQgdGhlbiB0aGUgX0dMX0NYWEFMSUFTV0FSTiBtYWNybyBiZWxvdyB3b3VsZCBjYXVzZSBhIHdhcm5pbmcgbm90IG9ubHkKLS0gICAgIGZvciB1c2VzIG9mIDo6ZnVuYyBidXQgYWxzbyBmb3IgdXNlcyBvZiBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jLiAgKi8KLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgXAotLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBzdGF0aWMgcmV0dHlwZSAoKmZ1bmMpIHBhcmFtZXRlcnMgPSA6OmZ1bmM7ICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZUyhmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU19TWVNfQ0FTVCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0tICAgaXMgbGlrZSAgX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0tICAgZXhjZXB0IHRoYXQgdGhlIEMgZnVuY3Rpb24gZnVuYyBtYXkgaGF2ZSBhIHNsaWdodGx5IGRpZmZlcmVudCBkZWNsYXJhdGlvbi4KLS0gICBBIGNhc3QgaXMgdXNlZCB0byBzaWxlbmNlIHRoZSAiaW52YWxpZCBjb252ZXJzaW9uIiBlcnJvciB0aGF0IHdvdWxkCi0tICAgb3RoZXJ3aXNlIG9jY3VyLiAgKi8KLS0jaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLS0gICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBzdGF0aWMgcmV0dHlwZSAoKmZ1bmMpIHBhcmFtZXRlcnMgPSAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cmV0dHlwZSgqKXBhcmFtZXRlcnM+KDo6ZnVuYyk7IFwKLS0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVNfQ0FTVChmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU19TWVNfQ0FTVDIgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMsIHJldHR5cGUyLCBwYXJhbWV0ZXJzMik7Ci0tICAgaXMgbGlrZSAgX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0tICAgZXhjZXB0IHRoYXQgdGhlIEMgZnVuY3Rpb24gaXMgcGlja2VkIGFtb25nIGEgc2V0IG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zLAotLSAgIG5hbWVseSB0aGUgb25lIHdpdGggcmV0dHlwZTIgYW5kIHBhcmFtZXRlcnMyLiAgVHdvIGNvbnNlY3V0aXZlIGNhc3RzCi0tICAgYXJlIHVzZWQgdG8gc2lsZW5jZSB0aGUgImNhbm5vdCBmaW5kIGEgbWF0Y2giIGFuZCAiaW52YWxpZCBjb252ZXJzaW9uIgotLSAgIGVycm9ycyB0aGF0IHdvdWxkIG90aGVyd2lzZSBvY2N1ci4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tICAvKiBUaGUgb3V0ZXIgY2FzdCBtdXN0IGJlIGEgcmVpbnRlcnByZXRfY2FzdC4KLS0gICAgIFRoZSBpbm5lciBjYXN0OiBXaGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkIGFzIGEgc2V0IG9mIG92ZXJsb2FkZWQKLS0gICAgIGZ1bmN0aW9ucywgaXQgd29ya3MgYXMgYSBzdGF0aWNfY2FzdDw+LCBjaG9vc2luZyB0aGUgZGVzaWduYXRlZCB2YXJpYW50LgotLSAgICAgV2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCBhcyBhIHNpbmdsZSB2YXJpYW50LCBpdCB3b3JrcyBhcyBhCi0tICAgICByZWludGVycHJldF9jYXN0PD4uIFRoZSBwYXJlbnRoZXNpemVkIGNhc3Qgc3ludGF4IHdvcmtzIGJvdGggd2F5cy4gICovCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUMihmdW5jLHJldHR5cGUscGFyYW1ldGVycyxyZXR0eXBlMixwYXJhbWV0ZXJzMikgXAotLSAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgc3RhdGljIHJldHR5cGUgKCpmdW5jKSBwYXJhbWV0ZXJzID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyZXR0eXBlKCopcGFyYW1ldGVycz4oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgKHJldHR5cGUyKCopcGFyYW1ldGVyczIpKDo6ZnVuYykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUMihmdW5jLHJldHR5cGUscGFyYW1ldGVycyxyZXR0eXBlMixwYXJhbWV0ZXJzMikgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU1dBUk4gKGZ1bmMpOwotLSAgIGNhdXNlcyBhIHdhcm5pbmcgdG8gYmUgZW1pdHRlZCB3aGVuIDo6ZnVuYyBpcyB1c2VkIGJ1dCBub3Qgd2hlbgotLSAgIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMgaXMgdXNlZC4gIGZ1bmMgbXVzdCBiZSBkZWZpbmVkIHdpdGhvdXQgb3ZlcmxvYWRlZAotLSAgIHZhcmlhbnRzLiAgKi8KLS0jaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOKGZ1bmMpIFwKLS0gICBfR0xfQ1hYQUxJQVNXQVJOXzEgKGZ1bmMsIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8xKGZ1bmMsbmFtZXNwYWNlKSBcCi0tICAgX0dMX0NYWEFMSUFTV0FSTl8yIChmdW5jLCBuYW1lc3BhY2UpCi0tLyogVG8gd29yayBhcm91bmQgR0NDIGJ1ZyA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00Mzg4MT4sCi0tICAgd2UgZW5hYmxlIHRoZSB3YXJuaW5nIG9ubHkgd2hlbiBub3Qgb3B0aW1pemluZy4gICovCi0tIyBpZiAhX19PUFRJTUlaRV9fCi0tIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk5fMihmdW5jLG5hbWVzcGFjZSkgXAotLSAgICBfR0xfV0FSTl9PTl9VU0UgKGZ1bmMsIFwKLS0gICAgICAgICAgICAgICAgICAgICAiVGhlIHN5bWJvbCA6OiIgI2Z1bmMgIiByZWZlcnMgdG8gdGhlIHN5c3RlbSBmdW5jdGlvbi4gIiBcCi0tICAgICAgICAgICAgICAgICAgICAgIlVzZSAiICNuYW1lc3BhY2UgIjo6IiAjZnVuYyAiIGluc3RlYWQuIikKLS0jIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0tIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk5fMihmdW5jLG5hbWVzcGFjZSkgXAotLSAgICAgZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmMpIGZ1bmMKLS0jIGVsc2UKLS0jICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8yKGZ1bmMsbmFtZXNwYWNlKSBcCi0tICAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSMgZW5kaWYKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4oZnVuYykgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU1dBUk4xIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKTsKLS0gICBjYXVzZXMgYSB3YXJuaW5nIHRvIGJlIGVtaXR0ZWQgd2hlbiB0aGUgZ2l2ZW4gb3ZlcmxvYWRlZCB2YXJpYW50IG9mIDo6ZnVuYwotLSAgIGlzIHVzZWQgYnV0IG5vdCB3aGVuIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMgaXMgdXNlZC4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjEoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gICBfR0xfQ1hYQUxJQVNXQVJOMV8xIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgR05VTElCX05BTUVTUEFDRSkKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8xKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotLSAgIF9HTF9DWFhBTElBU1dBUk4xXzIgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsIG5hbWVzcGFjZSkKLS0vKiBUbyB3b3JrIGFyb3VuZCBHQ0MgYnVnIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQzODgxPiwKLS0gICB3ZSBlbmFibGUgdGhlIHdhcm5pbmcgb25seSB3aGVuIG5vdCBvcHRpbWl6aW5nLiAgKi8KLS0jIGlmICFfX09QVElNSVpFX18KLS0jICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjFfMihmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxuYW1lc3BhY2UpIFwKLS0gICAgX0dMX1dBUk5fT05fVVNFX0NYWCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcywgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN5bWJvbCA6OiIgI2Z1bmMgIiByZWZlcnMgdG8gdGhlIHN5c3RlbSBmdW5jdGlvbi4gIiBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgIiAjbmFtZXNwYWNlICI6OiIgI2Z1bmMgIiBpbnN0ZWFkLiIpCi0tIyBlbGlmIF9fR05VQ19fID49IDMgJiYgR05VTElCX1NUUklDVF9DSEVDS0lORwotLSMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8yKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotLSAgICAgZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmMpIGZ1bmMKLS0jIGVsc2UKLS0jICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjFfMihmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxuYW1lc3BhY2UpIFwKLS0gICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tIyBlbmRpZgotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjEoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZW5kaWYKLS0KLS0jZW5kaWYgLyogX0dMX0NYWERFRlNfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvX05vcmV0dXJuLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3NuaXBwZXQvX05vcmV0dXJuLmgJMjAxMS0wOC0wNyAwNjoyMjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi1AQCAtMSwxMCArMCwwIEBACi0tI2lmbmRlZiBfTm9yZXR1cm4KLS0jIGlmICgzIDw9IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSAyICYmIDggPD0gX19HTlVDX01JTk9SX18pIFwKLS0gICAgICB8fCAweDUxMTAgPD0gX19TVU5QUk9fQykKLS0jICBkZWZpbmUgX05vcmV0dXJuIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKQotLSMgZWxpZiAxMjAwIDw9IF9NU0NfVkVSCi0tIyAgZGVmaW5lIF9Ob3JldHVybiBfX2RlY2xzcGVjIChub3JldHVybikKLS0jIGVsc2UKLS0jICBkZWZpbmUgX05vcmV0dXJuCi0tIyBlbmRpZgotLSNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvc25pcHBldC93YXJuLW9uLXVzZS5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgJMjAxMS0wOC0wNyAwNjoyMjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLUBAIC0xLDEwOSArMCwwIEBACi0tLyogQSBDIG1hY3JvIGZvciBlbWl0dGluZyB3YXJuaW5ncyBpZiBhIGZ1bmN0aW9uIGlzIHVzZWQuCi0tICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotLQotLS8qIF9HTF9XQVJOX09OX1VTRSAoZnVuY3Rpb24sICJsaXRlcmFsIHN0cmluZyIpIGlzc3VlcyBhIGRlY2xhcmF0aW9uCi0tICAgZm9yIEZVTkNUSU9OIHdoaWNoIHdpbGwgdGhlbiB0cmlnZ2VyIGEgY29tcGlsZXIgd2FybmluZyBjb250YWluaW5nCi0tICAgdGhlIHRleHQgb2YgImxpdGVyYWwgc3RyaW5nIiBhbnl3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCwgaWYKLS0gICBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyLiAgSWYgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcwotLSAgIGZlYXR1cmUsIHRoZSBtYWNybyBleHBhbmRzIHRvIGFuIHVudXNlZCBleHRlcm4gZGVjbGFyYXRpb24uCi0tCi0tICAgVGhpcyBtYWNybyBpcyB1c2VmdWwgZm9yIG1hcmtpbmcgYSBmdW5jdGlvbiBhcyBhIHBvdGVudGlhbAotLSAgIHBvcnRhYmlsaXR5IHRyYXAsIHdpdGggdGhlIGludGVudCB0aGF0ICJsaXRlcmFsIHN0cmluZyIgaW5jbHVkZQotLSAgIGluc3RydWN0aW9ucyBvbiB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgdXNlZAotLSAgIGluc3RlYWQuICBIb3dldmVyLCBvbmUgb2YgdGhlIHJlYXNvbnMgdGhhdCBhIGZ1bmN0aW9uIGlzIGEKLS0gICBwb3J0YWJpbGl0eSB0cmFwIGlzIGlmIGl0IGhhcyB0aGUgd3Jvbmcgc2lnbmF0dXJlLiAgRGVjbGFyaW5nCi0tICAgRlVOQ1RJT04gd2l0aCBhIGRpZmZlcmVudCBzaWduYXR1cmUgaW4gQyBpcyBhIGNvbXBpbGF0aW9uIGVycm9yLCBzbwotLSAgIHRoaXMgbWFjcm8gbXVzdCB1c2UgdGhlIHNhbWUgdHlwZSBhcyBhbnkgZXhpc3RpbmcgZGVjbGFyYXRpb24gc28KLS0gICB0aGF0IHByb2dyYW1zIHRoYXQgYXZvaWQgdGhlIHByb2JsZW1hdGljIEZVTkNUSU9OIGRvIG5vdCBmYWlsIHRvCi0tICAgY29tcGlsZSBtZXJlbHkgYmVjYXVzZSB0aGV5IGluY2x1ZGVkIGEgaGVhZGVyIHRoYXQgcG9pc29uZWQgdGhlCi0tICAgZnVuY3Rpb24uICBCdXQgdGhpcyBpbXBsaWVzIHRoYXQgX0dMX1dBUk5fT05fVVNFIGlzIG9ubHkgc2FmZSB0bwotLSAgIHVzZSBpZiBGVU5DVElPTiBpcyBrbm93biB0byBhbHJlYWR5IGhhdmUgYSBkZWNsYXJhdGlvbi4gIFVzZSBvZgotLSAgIHRoaXMgbWFjcm8gaW1wbGllcyB0aGF0IHRoZXJlIG11c3Qgbm90IGJlIGFueSBvdGhlciBtYWNybyBoaWRpbmcKLS0gICB0aGUgZGVjbGFyYXRpb24gb2YgRlVOQ1RJT047IGJ1dCB1bmRlZmluaW5nIEZVTkNUSU9OIGZpcnN0IGlzIHBhcnQKLS0gICBvZiB0aGUgcG9pc29uaW5nIHByb2Nlc3MgYW55d2F5IChhbHRob3VnaCBmb3Igc3ltYm9scyB0aGF0IGFyZQotLSAgIHByb3ZpZGVkIG9ubHkgdmlhIGEgbWFjcm8sIHRoZSByZXN1bHQgaXMgYSBjb21waWxhdGlvbiBlcnJvciByYXRoZXIKLS0gICB0aGFuIGEgd2FybmluZyBjb250YWluaW5nICJsaXRlcmFsIHN0cmluZyIpLiAgQWxzbyBub3RlIHRoYXQgaW4KLS0gICBDKyssIGl0IGlzIG9ubHkgc2FmZSB0byB1c2UgaWYgRlVOQ1RJT04gaGFzIG5vIG92ZXJsb2Fkcy4KLS0KLS0gICBGb3IgYW4gZXhhbXBsZSwgaXQgaXMgcG9zc2libGUgdG8gcG9pc29uICdnZXRsaW5lJyBieToKLS0gICAtIGFkZGluZyBhIGNhbGwgdG8gZ2xfV0FSTl9PTl9VU0VfUFJFUEFSRShbWyNpbmNsdWRlIDxzdGRpby5oPl1dLAotLSAgICAgW2dldGxpbmVdKSBpbiBjb25maWd1cmUuYWMsIHdoaWNoIHBvdGVudGlhbGx5IGRlZmluZXMKLS0gICAgIEhBVkVfUkFXX0RFQ0xfR0VUTElORQotLSAgIC0gYWRkaW5nIHRoaXMgY29kZSB0byBhIGhlYWRlciB0aGF0IHdyYXBzIHRoZSBzeXN0ZW0gPHN0ZGlvLmg+OgotLSAgICAgI3VuZGVmIGdldGxpbmUKLS0gICAgICNpZiBIQVZFX1JBV19ERUNMX0dFVExJTkUKLS0gICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0bGluZSwgImdldGxpbmUgaXMgcmVxdWlyZWQgYnkgUE9TSVggMjAwOCwgYnV0IgotLSAgICAgICAibm90IHVuaXZlcnNhbGx5IHByZXNlbnQ7IHVzZSB0aGUgZ251bGliIG1vZHVsZSBnZXRsaW5lIik7Ci0tICAgICAjZW5kaWYKLS0KLS0gICBJdCBpcyBub3QgcG9zc2libGUgdG8gZGlyZWN0bHkgcG9pc29uIGdsb2JhbCB2YXJpYWJsZXMuICBCdXQgaXQgaXMKLS0gICBwb3NzaWJsZSB0byB3cml0ZSBhIHdyYXBwZXIgYWNjZXNzb3IgZnVuY3Rpb24sIGFuZCBwb2lzb24gdGhhdAotLSAgIChsZXNzIGNvbW1vbiB1c2FnZSwgbGlrZSAmZW52aXJvbiwgd2lsbCBjYXVzZSBhIGNvbXBpbGF0aW9uIGVycm9yCi0tICAgcmF0aGVyIHRoYW4gaXNzdWUgdGhlIG5pY2Ugd2FybmluZywgYnV0IHRoZSBlbmQgcmVzdWx0IG9mIGluZm9ybWluZwotLSAgIHRoZSBkZXZlbG9wZXIgYWJvdXQgdGhlaXIgcG9ydGFiaWxpdHkgcHJvYmxlbSBpcyBzdGlsbCBhY2hpZXZlZCk6Ci0tICAgI2lmIEhBVkVfUkFXX0RFQ0xfRU5WSVJPTgotLSAgIHN0YXRpYyBpbmxpbmUgY2hhciAqKipycGxfZW52aXJvbiAodm9pZCkgeyByZXR1cm4gJmVudmlyb247IH0KLS0gICBfR0xfV0FSTl9PTl9VU0UgKHJwbF9lbnZpcm9uLCAiZW52aXJvbiBpcyBub3QgYWx3YXlzIHByb3Blcmx5IGRlY2xhcmVkIik7Ci0tICAgIyB1bmRlZiBlbnZpcm9uCi0tICAgIyBkZWZpbmUgZW52aXJvbiAoKnJwbF9lbnZpcm9uICgpKQotLSAgICNlbmRpZgotLSAgICovCi0tI2lmbmRlZiBfR0xfV0FSTl9PTl9VU0UKLS0KLS0jIGlmIDQgPCBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gNCAmJiAzIDw9IF9fR05VQ19NSU5PUl9fKQotLS8qIEEgY29tcGlsZXIgYXR0cmlidXRlIGlzIGF2YWlsYWJsZSBpbiBnY2MgdmVyc2lvbnMgNC4zLjAgYW5kIGxhdGVyLiAgKi8KLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFKGZ1bmN0aW9uLCBtZXNzYWdlKSBcCi0tZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmN0aW9uKSBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fICgoX193YXJuaW5nX18gKG1lc3NhZ2UpKSkKLS0jIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0tLyogVmVyaWZ5IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZ1bmN0aW9uLiAgKi8KLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFKGZ1bmN0aW9uLCBtZXNzYWdlKSBcCi0tZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmN0aW9uKSBmdW5jdGlvbgotLSMgZWxzZSAvKiBVbnN1cHBvcnRlZC4gICovCi0tIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbiwgbWVzc2FnZSkgXAotLV9HTF9XQVJOX0VYVEVSTl9DIGludCBfZ2xfd2Fybl9vbl91c2UKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tLyogX0dMX1dBUk5fT05fVVNFX0NYWCAoZnVuY3Rpb24sIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsICJzdHJpbmciKQotLSAgIGlzIGxpa2UgX0dMX1dBUk5fT05fVVNFIChmdW5jdGlvbiwgInN0cmluZyIpLCBleGNlcHQgdGhhdCB0aGUgZnVuY3Rpb24gaXMKLS0gICBkZWNsYXJlZCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsIGNvbnNpc3Rpbmcgb2YgcmV0dXJuIHR5cGUsIHBhcmFtZXRlcnMsCi0tICAgYW5kIGF0dHJpYnV0ZXMuCi0tICAgVGhpcyB2YXJpYW50IGlzIHVzZWZ1bCBmb3Igb3ZlcmxvYWRlZCBmdW5jdGlvbnMgaW4gQysrLiBfR0xfV0FSTl9PTl9VU0UgZG9lcwotLSAgIG5vdCB3b3JrIGluIHRoaXMgY2FzZS4gICovCi0tI2lmbmRlZiBfR0xfV0FSTl9PTl9VU0VfQ1hYCi0tIyBpZiA0IDwgX19HTlVDX18gfHwgKF9fR05VQ19fID09IDQgJiYgMyA8PSBfX0dOVUNfTUlOT1JfXykKLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0tZXh0ZXJuIHJldHR5cGUgZnVuY3Rpb24gcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyBcCi0tICAgICBfX2F0dHJpYnV0ZV9fICgoX193YXJuaW5nX18gKG1zZykpKQotLSMgZWxpZiBfX0dOVUNfXyA+PSAzICYmIEdOVUxJQl9TVFJJQ1RfQ0hFQ0tJTkcKLS0vKiBWZXJpZnkgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZnVuY3Rpb24uICAqLwotLSMgIGRlZmluZSBfR0xfV0FSTl9PTl9VU0VfQ1hYKGZ1bmN0aW9uLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxtc2cpIFwKLS1leHRlcm4gcmV0dHlwZSBmdW5jdGlvbiBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzCi0tIyBlbHNlIC8qIFVuc3VwcG9ydGVkLiAgKi8KLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0tX0dMX1dBUk5fRVhURVJOX0MgaW50IF9nbF93YXJuX29uX3VzZQotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0vKiBfR0xfV0FSTl9FWFRFUk5fQyBkZWNsYXJhdGlvbjsKLS0gICBwZXJmb3JtcyB0aGUgZGVjbGFyYXRpb24gd2l0aCBDIGxpbmthZ2UuICAqLwotLSNpZm5kZWYgX0dMX1dBUk5fRVhURVJOX0MKLS0jIGlmIGRlZmluZWQgX19jcGx1c3BsdXMKLS0jICBkZWZpbmUgX0dMX1dBUk5fRVhURVJOX0MgZXh0ZXJuICJDIgotLSMgZWxzZQotLSMgIGRlZmluZSBfR0xfV0FSTl9FWFRFUk5fQyBleHRlcm4KLS0jIGVuZGlmCi0tI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3dhcm4tb24tdXNlLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvd2Fybi1vbi11c2UuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvd2Fybi1vbi11c2UuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotKysrIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgJMjAxMi0wMS0wOCAwMjowNzozOS45NTA0ODQ0MzkgLTA4MDAKLUBAIC0wLDAgKzEsMTA5IEBACi0rLyogQSBDIG1hY3JvIGZvciBlbWl0dGluZyB3YXJuaW5ncyBpZiBhIGZ1bmN0aW9uIGlzIHVzZWQuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIF9HTF9XQVJOX09OX1VTRSAoZnVuY3Rpb24sICJsaXRlcmFsIHN0cmluZyIpIGlzc3VlcyBhIGRlY2xhcmF0aW9uCi0rICAgZm9yIEZVTkNUSU9OIHdoaWNoIHdpbGwgdGhlbiB0cmlnZ2VyIGEgY29tcGlsZXIgd2FybmluZyBjb250YWluaW5nCi0rICAgdGhlIHRleHQgb2YgImxpdGVyYWwgc3RyaW5nIiBhbnl3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCwgaWYKLSsgICBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyLiAgSWYgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcwotKyAgIGZlYXR1cmUsIHRoZSBtYWNybyBleHBhbmRzIHRvIGFuIHVudXNlZCBleHRlcm4gZGVjbGFyYXRpb24uCi0rCi0rICAgVGhpcyBtYWNybyBpcyB1c2VmdWwgZm9yIG1hcmtpbmcgYSBmdW5jdGlvbiBhcyBhIHBvdGVudGlhbAotKyAgIHBvcnRhYmlsaXR5IHRyYXAsIHdpdGggdGhlIGludGVudCB0aGF0ICJsaXRlcmFsIHN0cmluZyIgaW5jbHVkZQotKyAgIGluc3RydWN0aW9ucyBvbiB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgdXNlZAotKyAgIGluc3RlYWQuICBIb3dldmVyLCBvbmUgb2YgdGhlIHJlYXNvbnMgdGhhdCBhIGZ1bmN0aW9uIGlzIGEKLSsgICBwb3J0YWJpbGl0eSB0cmFwIGlzIGlmIGl0IGhhcyB0aGUgd3Jvbmcgc2lnbmF0dXJlLiAgRGVjbGFyaW5nCi0rICAgRlVOQ1RJT04gd2l0aCBhIGRpZmZlcmVudCBzaWduYXR1cmUgaW4gQyBpcyBhIGNvbXBpbGF0aW9uIGVycm9yLCBzbwotKyAgIHRoaXMgbWFjcm8gbXVzdCB1c2UgdGhlIHNhbWUgdHlwZSBhcyBhbnkgZXhpc3RpbmcgZGVjbGFyYXRpb24gc28KLSsgICB0aGF0IHByb2dyYW1zIHRoYXQgYXZvaWQgdGhlIHByb2JsZW1hdGljIEZVTkNUSU9OIGRvIG5vdCBmYWlsIHRvCi0rICAgY29tcGlsZSBtZXJlbHkgYmVjYXVzZSB0aGV5IGluY2x1ZGVkIGEgaGVhZGVyIHRoYXQgcG9pc29uZWQgdGhlCi0rICAgZnVuY3Rpb24uICBCdXQgdGhpcyBpbXBsaWVzIHRoYXQgX0dMX1dBUk5fT05fVVNFIGlzIG9ubHkgc2FmZSB0bwotKyAgIHVzZSBpZiBGVU5DVElPTiBpcyBrbm93biB0byBhbHJlYWR5IGhhdmUgYSBkZWNsYXJhdGlvbi4gIFVzZSBvZgotKyAgIHRoaXMgbWFjcm8gaW1wbGllcyB0aGF0IHRoZXJlIG11c3Qgbm90IGJlIGFueSBvdGhlciBtYWNybyBoaWRpbmcKLSsgICB0aGUgZGVjbGFyYXRpb24gb2YgRlVOQ1RJT047IGJ1dCB1bmRlZmluaW5nIEZVTkNUSU9OIGZpcnN0IGlzIHBhcnQKLSsgICBvZiB0aGUgcG9pc29uaW5nIHByb2Nlc3MgYW55d2F5IChhbHRob3VnaCBmb3Igc3ltYm9scyB0aGF0IGFyZQotKyAgIHByb3ZpZGVkIG9ubHkgdmlhIGEgbWFjcm8sIHRoZSByZXN1bHQgaXMgYSBjb21waWxhdGlvbiBlcnJvciByYXRoZXIKLSsgICB0aGFuIGEgd2FybmluZyBjb250YWluaW5nICJsaXRlcmFsIHN0cmluZyIpLiAgQWxzbyBub3RlIHRoYXQgaW4KLSsgICBDKyssIGl0IGlzIG9ubHkgc2FmZSB0byB1c2UgaWYgRlVOQ1RJT04gaGFzIG5vIG92ZXJsb2Fkcy4KLSsKLSsgICBGb3IgYW4gZXhhbXBsZSwgaXQgaXMgcG9zc2libGUgdG8gcG9pc29uICdnZXRsaW5lJyBieToKLSsgICAtIGFkZGluZyBhIGNhbGwgdG8gZ2xfV0FSTl9PTl9VU0VfUFJFUEFSRShbWyNpbmNsdWRlIDxzdGRpby5oPl1dLAotKyAgICAgW2dldGxpbmVdKSBpbiBjb25maWd1cmUuYWMsIHdoaWNoIHBvdGVudGlhbGx5IGRlZmluZXMKLSsgICAgIEhBVkVfUkFXX0RFQ0xfR0VUTElORQotKyAgIC0gYWRkaW5nIHRoaXMgY29kZSB0byBhIGhlYWRlciB0aGF0IHdyYXBzIHRoZSBzeXN0ZW0gPHN0ZGlvLmg+OgotKyAgICAgI3VuZGVmIGdldGxpbmUKLSsgICAgICNpZiBIQVZFX1JBV19ERUNMX0dFVExJTkUKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0bGluZSwgImdldGxpbmUgaXMgcmVxdWlyZWQgYnkgUE9TSVggMjAwOCwgYnV0IgotKyAgICAgICAibm90IHVuaXZlcnNhbGx5IHByZXNlbnQ7IHVzZSB0aGUgZ251bGliIG1vZHVsZSBnZXRsaW5lIik7Ci0rICAgICAjZW5kaWYKLSsKLSsgICBJdCBpcyBub3QgcG9zc2libGUgdG8gZGlyZWN0bHkgcG9pc29uIGdsb2JhbCB2YXJpYWJsZXMuICBCdXQgaXQgaXMKLSsgICBwb3NzaWJsZSB0byB3cml0ZSBhIHdyYXBwZXIgYWNjZXNzb3IgZnVuY3Rpb24sIGFuZCBwb2lzb24gdGhhdAotKyAgIChsZXNzIGNvbW1vbiB1c2FnZSwgbGlrZSAmZW52aXJvbiwgd2lsbCBjYXVzZSBhIGNvbXBpbGF0aW9uIGVycm9yCi0rICAgcmF0aGVyIHRoYW4gaXNzdWUgdGhlIG5pY2Ugd2FybmluZywgYnV0IHRoZSBlbmQgcmVzdWx0IG9mIGluZm9ybWluZwotKyAgIHRoZSBkZXZlbG9wZXIgYWJvdXQgdGhlaXIgcG9ydGFiaWxpdHkgcHJvYmxlbSBpcyBzdGlsbCBhY2hpZXZlZCk6Ci0rICAgI2lmIEhBVkVfUkFXX0RFQ0xfRU5WSVJPTgotKyAgIHN0YXRpYyBpbmxpbmUgY2hhciAqKipycGxfZW52aXJvbiAodm9pZCkgeyByZXR1cm4gJmVudmlyb247IH0KLSsgICBfR0xfV0FSTl9PTl9VU0UgKHJwbF9lbnZpcm9uLCAiZW52aXJvbiBpcyBub3QgYWx3YXlzIHByb3Blcmx5IGRlY2xhcmVkIik7Ci0rICAgIyB1bmRlZiBlbnZpcm9uCi0rICAgIyBkZWZpbmUgZW52aXJvbiAoKnJwbF9lbnZpcm9uICgpKQotKyAgICNlbmRpZgotKyAgICovCi0rI2lmbmRlZiBfR0xfV0FSTl9PTl9VU0UKLSsKLSsjIGlmIDQgPCBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gNCAmJiAzIDw9IF9fR05VQ19NSU5PUl9fKQotKy8qIEEgY29tcGlsZXIgYXR0cmlidXRlIGlzIGF2YWlsYWJsZSBpbiBnY2MgdmVyc2lvbnMgNC4zLjAgYW5kIGxhdGVyLiAgKi8KLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFKGZ1bmN0aW9uLCBtZXNzYWdlKSBcCi0rZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmN0aW9uKSBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fICgoX193YXJuaW5nX18gKG1lc3NhZ2UpKSkKLSsjIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0rLyogVmVyaWZ5IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZ1bmN0aW9uLiAgKi8KLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFKGZ1bmN0aW9uLCBtZXNzYWdlKSBcCi0rZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmN0aW9uKSBmdW5jdGlvbgotKyMgZWxzZSAvKiBVbnN1cHBvcnRlZC4gICovCi0rIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbiwgbWVzc2FnZSkgXAotK19HTF9XQVJOX0VYVEVSTl9DIGludCBfZ2xfd2Fybl9vbl91c2UKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyogX0dMX1dBUk5fT05fVVNFX0NYWCAoZnVuY3Rpb24sIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsICJzdHJpbmciKQotKyAgIGlzIGxpa2UgX0dMX1dBUk5fT05fVVNFIChmdW5jdGlvbiwgInN0cmluZyIpLCBleGNlcHQgdGhhdCB0aGUgZnVuY3Rpb24gaXMKLSsgICBkZWNsYXJlZCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsIGNvbnNpc3Rpbmcgb2YgcmV0dXJuIHR5cGUsIHBhcmFtZXRlcnMsCi0rICAgYW5kIGF0dHJpYnV0ZXMuCi0rICAgVGhpcyB2YXJpYW50IGlzIHVzZWZ1bCBmb3Igb3ZlcmxvYWRlZCBmdW5jdGlvbnMgaW4gQysrLiBfR0xfV0FSTl9PTl9VU0UgZG9lcwotKyAgIG5vdCB3b3JrIGluIHRoaXMgY2FzZS4gICovCi0rI2lmbmRlZiBfR0xfV0FSTl9PTl9VU0VfQ1hYCi0rIyBpZiA0IDwgX19HTlVDX18gfHwgKF9fR05VQ19fID09IDQgJiYgMyA8PSBfX0dOVUNfTUlOT1JfXykKLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0rZXh0ZXJuIHJldHR5cGUgZnVuY3Rpb24gcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyBcCi0rICAgICBfX2F0dHJpYnV0ZV9fICgoX193YXJuaW5nX18gKG1zZykpKQotKyMgZWxpZiBfX0dOVUNfXyA+PSAzICYmIEdOVUxJQl9TVFJJQ1RfQ0hFQ0tJTkcKLSsvKiBWZXJpZnkgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZnVuY3Rpb24uICAqLwotKyMgIGRlZmluZSBfR0xfV0FSTl9PTl9VU0VfQ1hYKGZ1bmN0aW9uLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxtc2cpIFwKLStleHRlcm4gcmV0dHlwZSBmdW5jdGlvbiBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzCi0rIyBlbHNlIC8qIFVuc3VwcG9ydGVkLiAgKi8KLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0rX0dMX1dBUk5fRVhURVJOX0MgaW50IF9nbF93YXJuX29uX3VzZQotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsvKiBfR0xfV0FSTl9FWFRFUk5fQyBkZWNsYXJhdGlvbjsKLSsgICBwZXJmb3JtcyB0aGUgZGVjbGFyYXRpb24gd2l0aCBDIGxpbmthZ2UuICAqLwotKyNpZm5kZWYgX0dMX1dBUk5fRVhURVJOX0MKLSsjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMKLSsjICBkZWZpbmUgX0dMX1dBUk5fRVhURVJOX0MgZXh0ZXJuICJDIgotKyMgZWxzZQotKyMgIGRlZmluZSBfR0xfV0FSTl9FWFRFUk5fQyBleHRlcm4KLSsjIGVuZGlmCi0rI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2FsbG9jYXRvci5oIGxpYmljb252LTEuMTQvc3JjbGliL2FsbG9jYXRvci5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9hbGxvY2F0b3IuaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2FsbG9jYXRvci5oCTIwMTItMDEtMDggMDI6MDc6NDAuMDUwNDg0NDQ0IC0wODAwCi1AQCAtNDUsMTEgKzQ1LDEwIEBAIHN0cnVjdCBhbGxvY2F0b3IKLSAgIC8qIENhbGwgRlJFRSB0byBmcmVlIG1lbW9yeSwgbGlrZSAnZnJlZScuICAqLwotICAgdm9pZCAoKmZyZWUpICh2b2lkICopOwotIAotLSAgLyogSWYgbm9ubnVsbCwgY2FsbCBESUUgKFNJWkUpIGlmIE1BTExPQyAoU0laRSkgb3IgUkVBTExPQyAoLi4uLAotLSAgICAgU0laRSkgZmFpbHMuICBESUUgc2hvdWxkIG5vdCByZXR1cm4uICBTSVpFIHNob3VsZCBlcXVhbCBTSVpFX01BWAotLSAgICAgaWYgc2l6ZV90IG92ZXJmbG93IHdhcyBkZXRlY3RlZCB3aGlsZSBjYWxjdWxhdGluZyBzaXplcyB0byBiZQotLSAgICAgcGFzc2VkIHRvIE1BTExPQyBvciBSRUFMTE9DLiAgKi8KLS0gIHZvaWQgKCpkaWUpIChzaXplX3QpOwotKyAgLyogSWYgbm9ubnVsbCwgY2FsbCBESUUgaWYgTUFMTE9DIG9yIFJFQUxMT0MgZmFpbHMuICBESUUgc2hvdWxkIG5vdAotKyAgICAgcmV0dXJuLiAgRElFIGNhbiBiZSB1c2VkIGJ5IGNvZGUgdGhhdCBkZXRlY3RzIG1lbW9yeSBvdmVyZmxvdwotKyAgICAgd2hpbGUgY2FsY3VsYXRpbmcgc2l6ZXMgdG8gYmUgcGFzc2VkIHRvIE1BTExPQyBvciBSRUFMTE9DLiAgKi8KLSsgIHZvaWQgKCpkaWUpICh2b2lkKTsKLSB9OwotIAotIC8qIEFuIGFsbG9jYXRvciB1c2luZyB0aGUgc3RkbGliIGZ1bmN0aW9ucyBhbmQgYSBudWxsIERJRSBmdW5jdGlvbi4gICovCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2Nhbm9uaWNhbGl6ZS1sZ3BsLmMgbGliaWNvbnYtMS4xNC9zcmNsaWIvY2Fub25pY2FsaXplLWxncGwuYwotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvY2Fub25pY2FsaXplLWxncGwuYwkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2Nhbm9uaWNhbGl6ZS1sZ3BsLmMJMjAxMi0wMS0wOCAwMjowNzo0MC4wOTQ0ODQ0NDYgLTA4MDAKLUBAIC0xMjUsNyArMTI1LDcgQEAgX19yZWFscGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY2hhciAqcmVzbwotICNlbHNlCi0gICBwYXRoX21heCA9IHBhdGhjb25mIChuYW1lLCBfUENfUEFUSF9NQVgpOwotICAgaWYgKHBhdGhfbWF4IDw9IDApCi0tICAgIHBhdGhfbWF4ID0gODE5MjsKLSsgICAgcGF0aF9tYXggPSAxMDI0OwotICNlbmRpZgotIAotICAgaWYgKHJlc29sdmVkID09IE5VTEwpCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2NhcmVhZGxpbmthdC5jIGxpYmljb252LTEuMTQvc3JjbGliL2NhcmVhZGxpbmthdC5jCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9jYXJlYWRsaW5rYXQuYwkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2NhcmVhZGxpbmthdC5jCTIwMTItMDEtMDggMDI6MDc6NDAuMTAyNDg0NDQ1IC0wODAwCi1AQCAtMTMzLDcgKzEzMyw2IEBAIGNhcmVhZGxpbmthdCAoaW50IGZkLCBjaGFyIGNvbnN0ICpmaWxlbmEKLSAgICAgICAgICAgaWYgKGJ1ZiA9PSBzdGFja19idWYpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgY2hhciAqYiA9IChjaGFyICopIGFsbG9jLT5hbGxvY2F0ZSAobGlua19zaXplKTsKLS0gICAgICAgICAgICAgIGJ1Zl9zaXplID0gbGlua19zaXplOwotICAgICAgICAgICAgICAgaWYgKCEgYikKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICBtZW1jcHkgKGIsIGJ1ZiwgbGlua19zaXplKTsKLUBAIC0xNTcsMTEgKzE1Niw2IEBAIGNhcmVhZGxpbmthdCAoaW50IGZkLCBjaGFyIGNvbnN0ICpmaWxlbmEKLSAgICAgICAgIGJ1Zl9zaXplICo9IDI7Ci0gICAgICAgZWxzZSBpZiAoYnVmX3NpemUgPCBidWZfc2l6ZV9tYXgpCi0gICAgICAgICBidWZfc2l6ZSA9IGJ1Zl9zaXplX21heDsKLS0gICAgICBlbHNlIGlmIChidWZfc2l6ZV9tYXggPCBTSVpFX01BWCkKLS0gICAgICAgIHsKLS0gICAgICAgICAgZXJybm8gPSBFTkFNRVRPT0xPTkc7Ci0tICAgICAgICAgIHJldHVybiBOVUxMOwotLSAgICAgICAgfQotICAgICAgIGVsc2UKLSAgICAgICAgIGJyZWFrOwotICAgICAgIGJ1ZiA9IChjaGFyICopIGFsbG9jLT5hbGxvY2F0ZSAoYnVmX3NpemUpOwotQEAgLTE2OSw3ICsxNjMsNyBAQCBjYXJlYWRsaW5rYXQgKGludCBmZCwgY2hhciBjb25zdCAqZmlsZW5hCi0gICB3aGlsZSAoYnVmKTsKLSAKLSAgIGlmIChhbGxvYy0+ZGllKQotLSAgICBhbGxvYy0+ZGllIChidWZfc2l6ZSk7Ci0rICAgIGFsbG9jLT5kaWUgKCk7Ci0gICBlcnJubyA9IEVOT01FTTsKLSAgIHJldHVybiBOVUxMOwotIH0KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvZXJybm8uaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9lcnJuby5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9lcnJuby5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvZXJybm8uaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjEyMjQ4NDQ0NiAtMDgwMAotQEAgLTE2LDcgKzE2LDcgQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9FUlJOT19ICi0rI2lmbmRlZiBfR0xfRVJSTk9fSAotIAotICNpZiBfX0dOVUNfXyA+PSAzCi0gQFBSQUdNQV9TWVNURU1fSEVBREVSQAotQEAgLTI2LDggKzI2LDggQEAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gI0BJTkNMVURFX05FWFRAIEBORVhUX0VSUk5PX0hACi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfRVJSTk9fSAotLSNkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX0VSUk5PX0gKLSsjaWZuZGVmIF9HTF9FUlJOT19ICi0rI2RlZmluZSBfR0xfRVJSTk9fSAotIAotIAotIC8qIE9uIG5hdGl2ZSBXaW5kb3dzIHBsYXRmb3JtcywgbWFueSBtYWNyb3MgYXJlIG5vdCBkZWZpbmVkLiAgKi8KLUBAIC0xNDcsMTYgKzE0Nyw2IEBACi0gIyAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX0VOT1RTVVAgMQotICMgZW5kaWYKLSAKLS0jIGlmbmRlZiBFTkVUUkVTRVQKLS0jICBkZWZpbmUgRU5FVFJFU0VUIDIwMTEKLS0jICBkZWZpbmUgR05VTElCX2RlZmluZWRfRU5FVFJFU0VUIDEKLS0jIGVuZGlmCi0tCi0tIyBpZm5kZWYgRUNPTk5BQk9SVEVECi0tIyAgZGVmaW5lIEVDT05OQUJPUlRFRCAyMDEyCi0tIyAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX0VDT05OQUJPUlRFRCAxCi0tIyBlbmRpZgotLQotICMgaWZuZGVmIEVTVEFMRQotICMgIGRlZmluZSBFU1RBTEUgICAgMjAwOQotICMgIGRlZmluZSBHTlVMSUJfZGVmaW5lZF9FU1RBTEUgMQotQEAgLTE3Myw1ICsxNjMsNSBAQAotICMgZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX0VSUk5PX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX0VSUk5PX0ggKi8KLSsjZW5kaWYgLyogX0dMX0VSUk5PX0ggKi8KLSsjZW5kaWYgLyogX0dMX0VSUk5PX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvZXJyb3IuYyBsaWJpY29udi0xLjE0L3NyY2xpYi9lcnJvci5jCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9lcnJvci5jCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvZXJyb3IuYwkyMDEyLTAxLTA4IDAyOjA3OjQwLjEzNDQ4NDQ0OCAtMDgwMAotQEAgLTk3LDE1ICs5NywxMSBAQCBleHRlcm4gdm9pZCBfX2Vycm9yX2F0X2xpbmUgKGludCBzdGF0dXMsCi0gLyogVGhlIGdudWxpYiBvdmVycmlkZSBvZiBmY250bCBpcyBub3QgbmVlZGVkIGluIHRoaXMgZmlsZS4gICovCi0gIyB1bmRlZiBmY250bAotIAotLSMgaWYgIUhBVkVfREVDTF9TVFJFUlJPUl9SCi0rIyBpZiAhSEFWRV9ERUNMX1NUUkVSUk9SX1IgJiYgU1RSRVJST1JfUl9DSEFSX1AKLSAjICBpZm5kZWYgSEFWRV9ERUNMX1NUUkVSUk9SX1IKLSAidGhpcyBjb25maWd1cmUtdGltZSBkZWNsYXJhdGlvbiB0ZXN0IHdhcyBub3QgcnVuIgotICMgIGVuZGlmCi0tIyAgaWYgU1RSRVJST1JfUl9DSEFSX1AKLSBjaGFyICpzdHJlcnJvcl9yICgpOwotLSMgIGVsc2UKLS1pbnQgc3RyZXJyb3JfciAoKTsKLS0jICBlbmRpZgotICMgZW5kaWYKLSAKLSAvKiBUaGUgY2FsbGluZyBwcm9ncmFtIHNob3VsZCBkZWZpbmUgcHJvZ3JhbV9uYW1lIGFuZCBzZXQgaXQgdG8gdGhlCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2ZjbnRsLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvZmNudGwuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvZmNudGwuaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2ZjbnRsLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4xNTQ0ODQ0NDkgLTA4MDAKLUBAIC00MCw3ICs0MCw3IEBACi0gI2Vsc2UKLSAvKiBOb3JtYWwgaW52b2NhdGlvbiBjb252ZW50aW9uLiAgKi8KLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9GQ05UTF9ICi0rI2lmbmRlZiBfR0xfRkNOVExfSAotIAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAvKiBPbiBzb21lIHN5c3RlbXMgb3RoZXIgdGhhbiBnbGliYywgPHN5cy9zdGF0Lmg+IGlzIGEgcHJlcmVxdWlzaXRlIG9mCi1AQCAtNTUsOCArNTUsOCBAQAotIC8qIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjQElOQ0xVREVfTkVYVEAgQE5FWFRfRkNOVExfSEAKLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9GQ05UTF9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfRkNOVExfSAotKyNpZm5kZWYgX0dMX0ZDTlRMX0gKLSsjZGVmaW5lIF9HTF9GQ05UTF9ICi0gCi0gI2lmbmRlZiBfX0dMSUJDX18gLyogQXZvaWQgbmFtZXNwYWNlIHBvbGx1dGlvbiBvbiBnbGliYyBzeXN0ZW1zLiAgKi8KLSAjIGluY2x1ZGUgPHVuaXN0ZC5oPgotQEAgLTMyMCw2ICszMjAsNiBAQCBfR0xfV0FSTl9PTl9VU0UgKG9wZW5hdCwgIm9wZW5hdCBpcyBub3QKLSAjZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX0ZDTlRMX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX0ZDTlRMX0ggKi8KLSsjZW5kaWYgLyogX0dMX0ZDTlRMX0ggKi8KLSsjZW5kaWYgLyogX0dMX0ZDTlRMX0ggKi8KLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvaW50cHJvcHMuaCBsaWJpY29udi0xLjE0L3NyY2xpYi9pbnRwcm9wcy5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9pbnRwcm9wcy5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvaW50cHJvcHMuaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjE3NDQ4NDQ1MCAtMDgwMAotQEAgLTIyLDEzICsyMiwxNCBAQAotIAotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLS0vKiBSZXR1cm4gYW4gaW50ZWdlciB2YWx1ZSwgY29udmVydGVkIHRvIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGludGVnZXIKLS0gICBleHByZXNzaW9uIEUgYWZ0ZXIgaW50ZWdlciB0eXBlIHByb21vdGlvbi4gIFYgaXMgdGhlIHVuY29udmVydGVkIHZhbHVlLiAgKi8KLS0jZGVmaW5lIF9HTF9JTlRfQ09OVkVSVChlLCB2KSAoMCAqIChlKSArICh2KSkKLSsvKiBSZXR1cm4gYSBpbnRlZ2VyIHZhbHVlLCBjb252ZXJ0ZWQgdG8gdGhlIHNhbWUgdHlwZSBhcyB0aGUgaW50ZWdlcgotKyAgIGV4cHJlc3Npb24gRSBhZnRlciBpbnRlZ2VyIHR5cGUgcHJvbW90aW9uLiAgViBpcyB0aGUgdW5jb252ZXJ0ZWQgdmFsdWUuCi0rICAgRSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLiAgKi8KLSsjZGVmaW5lIF9HTF9JTlRfQ09OVkVSVChlLCB2KSAoKGUpIC0gKGUpICsgKHYpKQotIAotIC8qIEFjdCBsaWtlIF9HTF9JTlRfQ09OVkVSVCAoRSwgLVYpIGJ1dCB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBJUklYIDYuNSBjYzsgc2VlCi0gICAgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctZ251bGliLzIwMTEtMDUvbXNnMDA0MDYuaHRtbD4uICAqLwotLSNkZWZpbmUgX0dMX0lOVF9ORUdBVEVfQ09OVkVSVChlLCB2KSAoMCAqIChlKSAtICh2KSkKLSsjZGVmaW5lIF9HTF9JTlRfTkVHQVRFX0NPTlZFUlQoZSwgdikgKChlKSAtIChlKSAtICh2KSkKLSAKLSAvKiBUaGUgZXh0cmEgY2FzdHMgaW4gdGhlIGZvbGxvd2luZyBtYWNyb3Mgd29yayBhcm91bmQgY29tcGlsZXIgYnVncywKLSAgICBlLmcuLCBpbiBDcmF5IEMgNS4wLjMuMC4gICovCi1AQCAtNTIsNyArNTMsNyBAQAotICNkZWZpbmUgVFlQRV9TSUdORUQodCkgKCEgKCh0KSAwIDwgKHQpIC0xKSkKLSAKLSAvKiBSZXR1cm4gMSBpZiB0aGUgaW50ZWdlciBleHByZXNzaW9uIEUsIGFmdGVyIGludGVnZXIgcHJvbW90aW9uLCBoYXMKLS0gICBhIHNpZ25lZCB0eXBlLiAgKi8KLSsgICBhIHNpZ25lZCB0eXBlLiAgRSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLiAgKi8KLSAjZGVmaW5lIF9HTF9JTlRfU0lHTkVEKGUpIChfR0xfSU5UX05FR0FURV9DT05WRVJUIChlLCAxKSA8IDApCi0gCi0gCi1AQCAtMzEwLDEwICszMTEsMTMgQEAKLSAvKiBSZXR1cm4gMSBpZiB0aGUgZXhwcmVzc2lvbiBBIDxvcD4gQiB3b3VsZCBvdmVyZmxvdywKLSAgICB3aGVyZSBPUF9SRVNVTFRfT1ZFUkZMT1cgKEEsIEIsIE1JTiwgTUFYKSBkb2VzIHRoZSBhY3R1YWwgdGVzdCwKLSAgICBhc3N1bWluZyBNSU4gYW5kIE1BWCBhcmUgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gZm9yIHRoZSByZXN1bHQgdHlwZS4KLS0gICBBcmd1bWVudHMgc2hvdWxkIGJlIGZyZWUgb2Ygc2lkZSBlZmZlY3RzLiAgKi8KLSsKLSsgICBUaGlzIG1hY3JvIGFzc3VtZXMgdGhhdCBBIHwgQiBpcyBhIHZhbGlkIGludGVnZXIgaWYgYm90aCBBIGFuZCBCIGFyZSwKLSsgICB3aGljaCBpcyB0cnVlIG9mIGFsbCBrbm93biBwcmFjdGljYWwgaG9zdHMuICBJZiB0aGlzIGlzIGEgcHJvYmxlbQotKyAgIGZvciB5b3UsIHBsZWFzZSBsZXQgdXMga25vdyBob3cgdG8gZml4IGl0IGZvciB5b3VyIGhvc3QuICAqLwotICNkZWZpbmUgX0dMX0JJTkFSWV9PUF9PVkVSRkxPVyhhLCBiLCBvcF9yZXN1bHRfb3ZlcmZsb3cpICAgICAgICBcCi0gICBvcF9yZXN1bHRfb3ZlcmZsb3cgKGEsIGIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgICAgICAgX0dMX0lOVF9NSU5JTVVNICgwICogKGIpICsgKGEpKSwgICAgICAgICAgXAotLSAgICAgICAgICAgICAgICAgICAgICBfR0xfSU5UX01BWElNVU0gKDAgKiAoYikgKyAoYSkpKQotKyAgICAgICAgICAgICAgICAgICAgICBfR0xfSU5UX01JTklNVU0gKChhKSB8IChiKSksICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgIF9HTF9JTlRfTUFYSU1VTSAoKGEpIHwgKGIpKSkKLSAKLSAjZW5kaWYgLyogX0dMX0lOVFBST1BTX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvTWFrZWZpbGUuZ251bGliIGxpYmljb252LTEuMTQvc3JjbGliL01ha2VmaWxlLmdudWxpYgotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvTWFrZWZpbGUuZ251bGliCTIwMTItMDEtMDggMDI6MDU6MTguNzU0NDc3NjA2IC0wODAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvTWFrZWZpbGUuZ251bGliCTIwMTItMDEtMDggMDI6MDc6NDMuMTM4NDg0NTkyIC0wODAwCi1AQCAtOSw3ICs5LDcgQEAKLSAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0gIwotICMgR2VuZXJhdGVkIGJ5IGdudWxpYi10b29sLgotLSMgUmVwcm9kdWNlIGJ5OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbG9jYWwtZGlyPWdudWxpYi1sb2NhbCAtLWxpYj1saWJpY3J0IC0tc291cmNlLWJhc2U9c3JjbGliIC0tbTQtYmFzZT1zcmNtNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLW1ha2VmaWxlLW5hbWU9TWFrZWZpbGUuZ251bGliIC0tbm8tY29uZGl0aW9uYWwtZGVwZW5kZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3JvLXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGJpbmFyeS1pbyBlcnJvciBnZXR0ZXh0IGdldHRleHQtaCBsaWJpY29udi1taXNjIG1ic3RhdGUgbWVtbW92ZSBwcm9nbmFtZSByZWxvY2F0YWJsZS1wcm9nIHNhZmUtcmVhZCBzaWdwaXBlIHN0ZGlvIHN0ZGxpYiBzdHJlcnJvciB1bmlzdGQgdW5pd2lkdGgvd2lkdGggdW5sb2NrZWQtaW8geGFsbG9jCi0rIyBSZXByb2R1Y2UgYnk6IGdudWxpYi10b29sIC0taW1wb3J0IC0tZGlyPS4gLS1sb2NhbC1kaXI9Z251bGliLWxvY2FsIC0tbGliPWxpYmljcnQgLS1zb3VyY2UtYmFzZT1zcmNsaWIgLS1tNC1iYXNlPXNyY200IC0tZG9jLWJhc2U9ZG9jIC0tdGVzdHMtYmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tbWFrZWZpbGUtbmFtZT1NYWtlZmlsZS5nbnVsaWIgLS1uby1saWJ0b29sIC0tbWFjcm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYmluYXJ5LWlvIGVycm9yIGdldHRleHQgZ2V0dGV4dC1oIGxpYmljb252LW1pc2MgbWJzdGF0ZSBtZW1tb3ZlIHByb2duYW1lIHJlbG9jYXRhYmxlIHJlbG9jYXRhYmxlLXByb2cgc2FmZS1yZWFkIHNpZ3BpcGUgc3RkaW8gc3RkbGliIHN0cmVycm9yIHVuaXN0ZCB1bml3aWR0aC93aWR0aCB1bmxvY2tlZC1pbyB4YWxsb2MKLSAKLSAKLSBNT1NUTFlDTEVBTkZJTEVTICs9IGNvcmUgKi5zdGFja2R1bXAKLUBAIC02MCwxMiArNjAsNjAgQEAgRVhUUkFfRElTVCArPSBhcmVhZGxpbmsuaAotIAotICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgYXJlYWRsaW5rCi0gCi0rIyMgYmVnaW4gZ251bGliIG1vZHVsZSBhcmctbm9ubnVsbAotKwotKyMgVGhlIEJVSUxUX1NPVVJDRVMgY3JlYXRlZCBieSB0aGlzIE1ha2VmaWxlIHNuaXBwZXQgYXJlIG5vdCB1c2VkIHZpYSAjaW5jbHVkZQotKyMgc3RhdGVtZW50cyBidXQgdGhyb3VnaCBkaXJlY3QgZmlsZSByZWZlcmVuY2UuIFRoZXJlZm9yZSB0aGlzIHNuaXBwZXQgbXVzdCBiZQotKyMgcHJlc2VudCBpbiBhbGwgTWFrZWZpbGUuYW0gdGhhdCBuZWVkIGl0LiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIGFwcGxpY2FiaWxpdHkKLSsjICdhbGwnIGRlZmluZWQgYWJvdmUuCi0rCi0rQlVJTFRfU09VUkNFUyArPSBhcmctbm9ubnVsbC5oCi0rIyBUaGUgYXJnLW5vbm51bGwuaCB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byBnZW5lcmF0ZWQgLmggZmlsZXMgaXMgdGhlIHNhbWUgYXMKLSsjIGJ1aWxkLWF1eC9hcmctbm9ubnVsbC5oLCBleGNlcHQgdGhhdCBpdCBoYXMgdGhlIGNvcHlyaWdodCBoZWFkZXIgY3V0IG9mZi4KLSthcmctbm9ubnVsbC5oOiAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9hcmctbm9ubnVsbC5oCi0rCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0rCXNlZCAtbiAtZSAnL0dMX0FSR19OT05OVUxMLywkJHAnIFwKLSsJICA8ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2FyZy1ub25udWxsLmggXAotKwkgID4gJEAtdCAmJiBcCi0rCW12ICRALXQgJEAKLStNT1NUTFlDTEVBTkZJTEVTICs9IGFyZy1ub25udWxsLmggYXJnLW5vbm51bGwuaC10Ci0rCi0rQVJHX05PTk5VTExfSD1hcmctbm9ubnVsbC5oCi0rCi0rRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9hcmctbm9ubnVsbC5oCi0rCi0rIyMgZW5kICAgZ251bGliIG1vZHVsZSBhcmctbm9ubnVsbAotKwotICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgYmluYXJ5LWlvCi0gCi0gbGliaWNydF9hX1NPVVJDRVMgKz0gYmluYXJ5LWlvLmgKLSAKLSAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGJpbmFyeS1pbwotIAotKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgYysrZGVmcwotKwotKyMgVGhlIEJVSUxUX1NPVVJDRVMgY3JlYXRlZCBieSB0aGlzIE1ha2VmaWxlIHNuaXBwZXQgYXJlIG5vdCB1c2VkIHZpYSAjaW5jbHVkZQotKyMgc3RhdGVtZW50cyBidXQgdGhyb3VnaCBkaXJlY3QgZmlsZSByZWZlcmVuY2UuIFRoZXJlZm9yZSB0aGlzIHNuaXBwZXQgbXVzdCBiZQotKyMgcHJlc2VudCBpbiBhbGwgTWFrZWZpbGUuYW0gdGhhdCBuZWVkIGl0LiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIGFwcGxpY2FiaWxpdHkKLSsjICdhbGwnIGRlZmluZWQgYWJvdmUuCi0rCi0rQlVJTFRfU09VUkNFUyArPSBjKytkZWZzLmgKLSsjIFRoZSBjKytkZWZzLmggdGhhdCBnZXRzIGluc2VydGVkIGludG8gZ2VuZXJhdGVkIC5oIGZpbGVzIGlzIHRoZSBzYW1lIGFzCi0rIyBidWlsZC1hdXgvYysrZGVmcy5oLCBleGNlcHQgdGhhdCBpdCBoYXMgdGhlIGNvcHlyaWdodCBoZWFkZXIgY3V0IG9mZi4KLStjKytkZWZzLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2MrK2RlZnMuaAotKwkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotKwlzZWQgLW4gLWUgJy9fR0xfQ1hYREVGUy8sJCRwJyBcCi0rCSAgPCAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9jKytkZWZzLmggXAotKwkgID4gJEAtdCAmJiBcCi0rCW12ICRALXQgJEAKLStNT1NUTFlDTEVBTkZJTEVTICs9IGMrK2RlZnMuaCBjKytkZWZzLmgtdAotKwotK0NYWERFRlNfSD1jKytkZWZzLmgKLSsKLStFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2MrK2RlZnMuaAotKwotKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgYysrZGVmcwotKwotICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgY2Fub25pY2FsaXplLWxncGwKLSAKLSAKLUBAIC0xMDAsOCArMTQ4LDcgQEAgaWYgR0xfR0VORVJBVEVfRVJSTk9fSAotIGVycm5vLmg6IGVycm5vLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJyAmJiBcCi0tCSAgc2VkIC1lICdzfEAnJ0dVQVJEX1BSRUZJWCcnQHxHTHxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotKwkgIHNlZCAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotIAkgICAgICAtZSAnc3xAJydORVhUX0VSUk5PX0gnJ0B8JChORVhUX0VSUk5PX0gpfGcnIFwKLUBAIC0xNDIsMTUgKzE4OSwxNCBAQCBCVUlMVF9TT1VSQ0VTICs9IGZjbnRsLmgKLSBmY250bC5oOiBmY250bC5pbi5oICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoQ1hYREVGU19IKSAkKEFSR19OT05OVUxMX0gpICQoV0FSTl9PTl9VU0VfSCkKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJzsgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9GQ05UTF9IJydAfCQoTkVYVF9GQ05UTF9IKXxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GQ05UTCcnQC8kKEdOVUxJQl9GQ05UTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTk9OQkxPQ0tJTkcnJ0AvJChHTlVMSUJfTk9OQkxPQ0tJTkcpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX09QRU4nJ0AvJChHTlVMSUJfT1BFTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfT1BFTkFUJydALyQoR05VTElCX09QRU5BVCkvZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRkNOVEwnJ0B8JChHTlVMSUJfRkNOVEwpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX05PTkJMT0NLSU5HJydAfCQoR05VTElCX05PTkJMT0NLSU5HKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9PUEVOJydAfCQoR05VTElCX09QRU4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX09QRU5BVCcnQHwkKEdOVUxJQl9PUEVOQVQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9GQ05UTCcnQHwkKEhBVkVfRkNOVEwpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9PUEVOQVQnJ0B8JChIQVZFX09QRU5BVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydSRVBMQUNFX0ZDTlRMJydAfCQoUkVQTEFDRV9GQ05UTCl8ZycgXAotQEAgLTI5Nyw3ICszNDMsNyBAQCBFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2NvCi0gIyMgYmVnaW4gZ251bGliIG1vZHVsZSByZWxvY2F0YWJsZS1wcm9nLXdyYXBwZXIKLSAKLSAKLS1FWFRSQV9ESVNUICs9IGFsbG9jYXRvci5jIGFsbG9jYXRvci5oIGFyZWFkbGluay5jIGFyZWFkbGluay5oIGMtY3R5cGUuYyBjLWN0eXBlLmggY2Fub25pY2FsaXplLWxncGwuYyBjYXJlYWRsaW5rYXQuYyBjYXJlYWRsaW5rYXQuaCBtYWxsb2NhLmMgbWFsbG9jYS5oIHByb2duYW1lLmMgcHJvZ25hbWUuaCBwcm9ncmVsb2MuYyByZWFkbGluay5jIHJlbG9jYXRhYmxlLmMgcmVsb2NhdGFibGUuaCByZWxvY3dyYXBwZXIuYyBzZXRlbnYuYwotK0VYVFJBX0RJU1QgKz0gYWxsb2NhdG9yLmMgYWxsb2NhdG9yLmggYXJlYWRsaW5rLmMgYXJlYWRsaW5rLmggYy1jdHlwZS5jIGMtY3R5cGUuaCBjYW5vbmljYWxpemUtbGdwbC5jIGNhcmVhZGxpbmthdC5jIGNhcmVhZGxpbmthdC5oIG1hbGxvY2EuYyBtYWxsb2NhLmggcHJvZ25hbWUuYyBwcm9nbmFtZS5oIHByb2dyZWxvYy5jIHJlYWRsaW5rLmMgcmVsb2NhdGFibGUuYyByZWxvY2F0YWJsZS5oIHJlbG9jd3JhcHBlci5jIHNldGVudi5jIHN0cmVycm9yLmMKLSAKLSBFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2luc3RhbGwtcmVsb2MKLSAKLUBAIC0zMDUsOSArMzUxLDEwIEBAIEVYVFJBX0RJU1QgKz0gJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvaW4KLSAKLSAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHNhZmUtcmVhZAotIAotLWxpYmljcnRfYV9TT1VSQ0VTICs9IHNhZmUtcmVhZC5jCi0gCi0tRVhUUkFfRElTVCArPSBzYWZlLXJlYWQuaAotK0VYVFJBX0RJU1QgKz0gc2FmZS1yZWFkLmMgc2FmZS1yZWFkLmgKLSsKLStFWFRSQV9saWJpY3J0X2FfU09VUkNFUyArPSBzYWZlLXJlYWQuYwotIAotICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgc2FmZS1yZWFkCi0gCi1AQCAtMzIwLDI0ICszNjcsMjAgQEAgQlVJTFRfU09VUkNFUyArPSBzaWduYWwuaAotIHNpZ25hbC5oOiBzaWduYWwuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TSUdOQUxfSCcnQHwkKE5FWFRfU0lHTkFMX0gpfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnR05VTElCX1BUSFJFQURfU0lHTUFTSycnQHwkKEdOVUxJQl9QVEhSRUFEX1NJR01BU0spfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NJR05BTF9IX1NJR1BJUEUnJ0AvJChHTlVMSUJfU0lHTkFMX0hfU0lHUElQRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU0lHUFJPQ01BU0snJ0AvJChHTlVMSUJfU0lHUFJPQ01BU0spL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NJR0FDVElPTicnQC8kKEdOVUxJQl9TSUdBQ1RJT04pL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NJR05BTF9IX1NJR1BJUEUnJ0B8JChHTlVMSUJfU0lHTkFMX0hfU0lHUElQRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU0lHUFJPQ01BU0snJ0B8JChHTlVMSUJfU0lHUFJPQ01BU0spfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NJR0FDVElPTicnQHwkKEdOVUxJQl9TSUdBQ1RJT04pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9QT1NJWF9TSUdOQUxCTE9DS0lORycnQHwkKEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkcpfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSEFWRV9QVEhSRUFEX1NJR01BU0snJ0B8JChIQVZFX1BUSFJFQURfU0lHTUFTSyl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX1NJR1NFVF9UJydAfCQoSEFWRV9TSUdTRVRfVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX1NJR0lORk9fVCcnQHwkKEhBVkVfU0lHSU5GT19UKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfU0lHQUNUSU9OJydAfCQoSEFWRV9TSUdBQ1RJT04pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9TVFJVQ1RfU0lHQUNUSU9OX1NBX1NJR0FDVElPTicnQHwkKEhBVkVfU1RSVUNUX1NJR0FDVElPTl9TQV9TSUdBQ1RJT04pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9UWVBFX1ZPTEFUSUxFX1NJR19BVE9NSUNfVCcnQHwkKEhBVkVfVFlQRV9WT0xBVElMRV9TSUdfQVRPTUlDX1QpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9TSUdIQU5ETEVSX1QnJ0B8JChIQVZFX1NJR0hBTkRMRVJfVCl8ZycgXAotLQkgICAgICAtZSAnc3xAJydSRVBMQUNFX1BUSFJFQURfU0lHTUFTSycnQHwkKFJFUExBQ0VfUFRIUkVBRF9TSUdNQVNLKXxnJyBcCi0gCSAgICAgIC1lICcvZGVmaW5pdGlvbnMgb2YgX0dMX0ZVTkNERUNMX1JQTC9yICQoQ1hYREVGU19IKScgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb24gb2YgX0dMX0FSR19OT05OVUxML3IgJChBUkdfTk9OTlVMTF9IKScgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb24gb2YgX0dMX1dBUk5fT05fVVNFL3IgJChXQVJOX09OX1VTRV9IKScgXAotQEAgLTM2OCw4NyArNDExLDYgQEAgRVhUUkFfbGliaWNydF9hX1NPVVJDRVMgKz0gc2lncHJvY21hc2suYwotIAotICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgc2lncHJvY21hc2sKLSAKLS0jIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvX05vcmV0dXJuCi0tCi0tIyBCZWNhdXNlIHRoaXMgTWFrZWZpbGUgc25pcHBldCBkZWZpbmVzIGEgdmFyaWFibGUgdXNlZCBieSBvdGhlcgotLSMgZ251bGliIE1ha2VmaWxlIHNuaXBwZXRzLCBpdCBtdXN0IGJlIHByZXNlbnQgaW4gYWxsIE1ha2VmaWxlLmFtIHRoYXQKLS0jIG5lZWQgaXQuIFRoaXMgaXMgZW5zdXJlZCBieSB0aGUgYXBwbGljYWJpbGl0eSAnYWxsJyBkZWZpbmVkIGFib3ZlLgotLQotLV9OT1JFVFVSTl9IPSQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvX05vcmV0dXJuLmgKLS0KLS1FWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvX05vcmV0dXJuLmgKLS0KLS0jIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvX05vcmV0dXJuCi0tCi0tIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzbmlwcGV0L2FyZy1ub25udWxsCi0tCi0tIyBUaGUgQlVJTFRfU09VUkNFUyBjcmVhdGVkIGJ5IHRoaXMgTWFrZWZpbGUgc25pcHBldCBhcmUgbm90IHVzZWQgdmlhICNpbmNsdWRlCi0tIyBzdGF0ZW1lbnRzIGJ1dCB0aHJvdWdoIGRpcmVjdCBmaWxlIHJlZmVyZW5jZS4gVGhlcmVmb3JlIHRoaXMgc25pcHBldCBtdXN0IGJlCi0tIyBwcmVzZW50IGluIGFsbCBNYWtlZmlsZS5hbSB0aGF0IG5lZWQgaXQuIFRoaXMgaXMgZW5zdXJlZCBieSB0aGUgYXBwbGljYWJpbGl0eQotLSMgJ2FsbCcgZGVmaW5lZCBhYm92ZS4KLS0KLS1CVUlMVF9TT1VSQ0VTICs9IGFyZy1ub25udWxsLmgKLS0jIFRoZSBhcmctbm9ubnVsbC5oIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIGdlbmVyYXRlZCAuaCBmaWxlcyBpcyB0aGUgc2FtZSBhcwotLSMgYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaCwgZXhjZXB0IHRoYXQgaXQgaGFzIHRoZSBjb3B5cmlnaHQgaGVhZGVyIGN1dAotLSMgb2ZmLgotLWFyZy1ub25udWxsLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaAotLQkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotLQlzZWQgLW4gLWUgJy9HTF9BUkdfTk9OTlVMTC8sJCRwJyBcCi0tCSAgPCAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmggXAotLQkgID4gJEAtdCAmJiBcCi0tCW12ICRALXQgJEAKLS1NT1NUTFlDTEVBTkZJTEVTICs9IGFyZy1ub25udWxsLmggYXJnLW5vbm51bGwuaC10Ci0tCi0tQVJHX05PTk5VTExfSD1hcmctbm9ubnVsbC5oCi0tCi0tRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmgKLS0KLS0jIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvYXJnLW5vbm51bGwKLS0KLS0jIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvYysrZGVmcwotLQotLSMgVGhlIEJVSUxUX1NPVVJDRVMgY3JlYXRlZCBieSB0aGlzIE1ha2VmaWxlIHNuaXBwZXQgYXJlIG5vdCB1c2VkIHZpYSAjaW5jbHVkZQotLSMgc3RhdGVtZW50cyBidXQgdGhyb3VnaCBkaXJlY3QgZmlsZSByZWZlcmVuY2UuIFRoZXJlZm9yZSB0aGlzIHNuaXBwZXQgbXVzdCBiZQotLSMgcHJlc2VudCBpbiBhbGwgTWFrZWZpbGUuYW0gdGhhdCBuZWVkIGl0LiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIGFwcGxpY2FiaWxpdHkKLS0jICdhbGwnIGRlZmluZWQgYWJvdmUuCi0tCi0tQlVJTFRfU09VUkNFUyArPSBjKytkZWZzLmgKLS0jIFRoZSBjKytkZWZzLmggdGhhdCBnZXRzIGluc2VydGVkIGludG8gZ2VuZXJhdGVkIC5oIGZpbGVzIGlzIHRoZSBzYW1lIGFzCi0tIyBidWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmgsIGV4Y2VwdCB0aGF0IGl0IGhhcyB0aGUgY29weXJpZ2h0IGhlYWRlciBjdXQgb2ZmLgotLWMrK2RlZnMuaDogJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmgKLS0JJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLS0Jc2VkIC1uIC1lICcvX0dMX0NYWERFRlMvLCQkcCcgXAotLQkgIDwgJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmggXAotLQkgID4gJEAtdCAmJiBcCi0tCW12ICRALXQgJEAKLS1NT1NUTFlDTEVBTkZJTEVTICs9IGMrK2RlZnMuaCBjKytkZWZzLmgtdAotLQotLUNYWERFRlNfSD1jKytkZWZzLmgKLS0KLS1FWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oCi0tCi0tIyMgZW5kICAgZ251bGliIG1vZHVsZSBzbmlwcGV0L2MrK2RlZnMKLS0KLS0jIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvd2Fybi1vbi11c2UKLS0KLS1CVUlMVF9TT1VSQ0VTICs9IHdhcm4tb24tdXNlLmgKLS0jIFRoZSB3YXJuLW9uLXVzZS5oIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIGdlbmVyYXRlZCAuaCBmaWxlcyBpcyB0aGUgc2FtZSBhcwotLSMgYnVpbGQtYXV4L3NuaXBwZXQvd2Fybi1vbi11c2UuaCwgZXhjZXB0IHRoYXQgaXQgaGFzIHRoZSBjb3B5cmlnaHQgaGVhZGVyIGN1dAotLSMgb2ZmLgotLXdhcm4tb24tdXNlLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvd2Fybi1vbi11c2UuaAotLQkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotLQlzZWQgLW4gLWUgJy9eLmlmbmRlZi8sJCRwJyBcCi0tCSAgPCAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmggXAotLQkgID4gJEAtdCAmJiBcCi0tCW12ICRALXQgJEAKLS1NT1NUTFlDTEVBTkZJTEVTICs9IHdhcm4tb24tdXNlLmggd2Fybi1vbi11c2UuaC10Ci0tCi0tV0FSTl9PTl9VU0VfSD13YXJuLW9uLXVzZS5oCi0tCi0tRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgKLS0KLS0jIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNuaXBwZXQvd2Fybi1vbi11c2UKLS0KLSAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHN0YXQKLSAKLSAKLUBAIC00OTEsOCArNDUzLDcgQEAgaWYgR0xfR0VORVJBVEVfU1REREVGX0gKLSBzdGRkZWYuaDogc3RkZGVmLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJyAmJiBcCi0tCSAgc2VkIC1lICdzfEAnJ0dVQVJEX1BSRUZJWCcnQHxHTHxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotKwkgIHNlZCAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotIAkgICAgICAtZSAnc3xAJydORVhUX1NURERFRl9IJydAfCQoTkVYVF9TVERERUZfSCl8ZycgXAotQEAgLTUyMSw4ICs0ODIsNyBAQCBpZiBHTF9HRU5FUkFURV9TVERJTlRfSAotIHN0ZGludC5oOiBzdGRpbnQuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nOyBcCi0tCSAgc2VkIC1lICdzfEAnJ0dVQVJEX1BSRUZJWCcnQHxHTHxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0hBVkVfU1RESU5UX0gnJ0AvJChIQVZFX1NURElOVF9IKS9nJyBcCi0rCSAgc2VkIC1lICdzL0AnJ0hBVkVfU1RESU5UX0gnJ0AvJChIQVZFX1NURElOVF9IKS9nJyBcCi0gCSAgICAgIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi1AQCAtNTcwLDYzICs1MzAsNjIgQEAgQlVJTFRfU09VUkNFUyArPSBzdGRpby5oCi0gc3RkaW8uaDogc3RkaW8uaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TVERJT19IJydAfCQoTkVYVF9TVERJT19IKXxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9EUFJJTlRGJydALyQoR05VTElCX0RQUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZDTE9TRScnQC8kKEdOVUxJQl9GQ0xPU0UpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZGTFVTSCcnQC8kKEdOVUxJQl9GRkxVU0gpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZHRVRDJydALyQoR05VTElCX0ZHRVRDKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GR0VUUycnQC8kKEdOVUxJQl9GR0VUUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRk9QRU4nJ0AvJChHTlVMSUJfRk9QRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZQUklOVEYnJ0AvJChHTlVMSUJfRlBSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlBSSU5URl9QT1NJWCcnQC8kKEdOVUxJQl9GUFJJTlRGX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GUFVSR0UnJ0AvJChHTlVMSUJfRlBVUkdFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GUFVUQycnQC8kKEdOVUxJQl9GUFVUQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlBVVFMnJ0AvJChHTlVMSUJfRlBVVFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZSRUFEJydALyQoR05VTElCX0ZSRUFEKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GUkVPUEVOJydALyQoR05VTElCX0ZSRU9QRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZTQ0FORicnQC8kKEdOVUxJQl9GU0NBTkYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZTRUVLJydALyQoR05VTElCX0ZTRUVLKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GU0VFS08nJ0AvJChHTlVMSUJfRlNFRUtPKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GVEVMTCcnQC8kKEdOVUxJQl9GVEVMTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlRFTExPJydALyQoR05VTElCX0ZURUxMTykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRldSSVRFJydALyQoR05VTElCX0ZXUklURSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUQycnQC8kKEdOVUxJQl9HRVRDKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRDSEFSJydALyQoR05VTElCX0dFVENIQVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVERFTElNJydALyQoR05VTElCX0dFVERFTElNKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRMSU5FJydALyQoR05VTElCX0dFVExJTkUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVFMnJ0AvJChHTlVMSUJfR0VUUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfT0JTVEFDS19QUklOVEYnJ0AvJChHTlVMSUJfT0JTVEFDS19QUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX09CU1RBQ0tfUFJJTlRGX1BPU0lYJydALyQoR05VTElCX09CU1RBQ0tfUFJJTlRGX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QRVJST1InJ0AvJChHTlVMSUJfUEVSUk9SKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QT1BFTicnQC8kKEdOVUxJQl9QT1BFTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFJJTlRGJydALyQoR05VTElCX1BSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFJJTlRGX1BPU0lYJydALyQoR05VTElCX1BSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFVUQycnQC8kKEdOVUxJQl9QVVRDKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QVVRDSEFSJydALyQoR05VTElCX1BVVENIQVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BVVFMnJ0AvJChHTlVMSUJfUFVUUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVNT1ZFJydALyQoR05VTElCX1JFTU9WRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVOQU1FJydALyQoR05VTElCX1JFTkFNRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVOQU1FQVQnJ0AvJChHTlVMSUJfUkVOQU1FQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NDQU5GJydALyQoR05VTElCX1NDQU5GKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TTlBSSU5URicnQC8kKEdOVUxJQl9TTlBSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1BSSU5URl9QT1NJWCcnQC8kKEdOVUxJQl9TUFJJTlRGX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVERJT19IX05PTkJMT0NLSU5HJydALyQoR05VTElCX1NURElPX0hfTk9OQkxPQ0tJTkcpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NURElPX0hfU0lHUElQRScnQC8kKEdOVUxJQl9TVERJT19IX1NJR1BJUEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1RNUEZJTEUnJ0AvJChHTlVMSUJfVE1QRklMRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVkFTUFJJTlRGJydALyQoR05VTElCX1ZBU1BSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVkRQUklOVEYnJ0AvJChHTlVMSUJfVkRQUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZGUFJJTlRGJydALyQoR05VTElCX1ZGUFJJTlRGKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9WRlBSSU5URl9QT1NJWCcnQC8kKEdOVUxJQl9WRlBSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVkZTQ0FORicnQC8kKEdOVUxJQl9WRlNDQU5GKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9WU0NBTkYnJ0AvJChHTlVMSUJfVlNDQU5GKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9WUFJJTlRGJydALyQoR05VTElCX1ZQUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZQUklOVEZfUE9TSVgnJ0AvJChHTlVMSUJfVlBSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVlNOUFJJTlRGJydALyQoR05VTElCX1ZTTlBSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVlNQUklOVEZfUE9TSVgnJ0AvJChHTlVMSUJfVlNQUklOVEZfUE9TSVgpL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0RQUklOVEYnJ0B8JChHTlVMSUJfRFBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRkNMT1NFJydAfCQoR05VTElCX0ZDTE9TRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRkZMVVNIJydAfCQoR05VTElCX0ZGTFVTSCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRkdFVEMnJ0B8JChHTlVMSUJfRkdFVEMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZHRVRTJydAfCQoR05VTElCX0ZHRVRTKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GT1BFTicnQHwkKEdOVUxJQl9GT1BFTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlBSSU5URicnQHwkKEdOVUxJQl9GUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GUFJJTlRGX1BPU0lYJydAfCQoR05VTElCX0ZQUklOVEZfUE9TSVgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZQVVJHRScnQHwkKEdOVUxJQl9GUFVSR0UpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZQVVRDJydAfCQoR05VTElCX0ZQVVRDKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GUFVUUycnQHwkKEdOVUxJQl9GUFVUUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlJFQUQnJ0B8JChHTlVMSUJfRlJFQUQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZSRU9QRU4nJ0B8JChHTlVMSUJfRlJFT1BFTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlNDQU5GJydAfCQoR05VTElCX0ZTQ0FORil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlNFRUsnJ0B8JChHTlVMSUJfRlNFRUspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZTRUVLTycnQHwkKEdOVUxJQl9GU0VFS08pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZURUxMJydAfCQoR05VTElCX0ZURUxMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GVEVMTE8nJ0B8JChHTlVMSUJfRlRFTExPKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GV1JJVEUnJ0B8JChHTlVMSUJfRldSSVRFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRDJydAfCQoR05VTElCX0dFVEMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVENIQVInJ0B8JChHTlVMSUJfR0VUQ0hBUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUREVMSU0nJ0B8JChHTlVMSUJfR0VUREVMSU0pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVExJTkUnJ0B8JChHTlVMSUJfR0VUTElORSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUUycnQHwkKEdOVUxJQl9HRVRTKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9PQlNUQUNLX1BSSU5URicnQHwkKEdOVUxJQl9PQlNUQUNLX1BSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfT0JTVEFDS19QUklOVEZfUE9TSVgnJ0B8JChHTlVMSUJfT0JTVEFDS19QUklOVEZfUE9TSVgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BFUlJPUicnQHwkKEdOVUxJQl9QRVJST1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BPUEVOJydAfCQoR05VTElCX1BPUEVOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QUklOVEYnJ0B8JChHTlVMSUJfUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QUklOVEZfUE9TSVgnJ0B8JChHTlVMSUJfUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QVVRDJydAfCQoR05VTElCX1BVVEMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BVVENIQVInJ0B8JChHTlVMSUJfUFVUQ0hBUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFVUUycnQHwkKEdOVUxJQl9QVVRTKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRU1PVkUnJ0B8JChHTlVMSUJfUkVNT1ZFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRU5BTUUnJ0B8JChHTlVMSUJfUkVOQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRU5BTUVBVCcnQHwkKEdOVUxJQl9SRU5BTUVBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU0NBTkYnJ0B8JChHTlVMSUJfU0NBTkYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NOUFJJTlRGJydAfCQoR05VTElCX1NOUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TUFJJTlRGX1BPU0lYJydAfCQoR05VTElCX1NQUklOVEZfUE9TSVgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NURElPX0hfTk9OQkxPQ0tJTkcnJ0B8JChHTlVMSUJfU1RESU9fSF9OT05CTE9DS0lORyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RESU9fSF9TSUdQSVBFJydAfCQoR05VTElCX1NURElPX0hfU0lHUElQRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVE1QRklMRScnQHwkKEdOVUxJQl9UTVBGSUxFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WQVNQUklOVEYnJ0B8JChHTlVMSUJfVkFTUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WRFBSSU5URicnQHwkKEdOVUxJQl9WRFBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVkZQUklOVEYnJ0B8JChHTlVMSUJfVkZQUklOVEYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1ZGUFJJTlRGX1BPU0lYJydAfCQoR05VTElCX1ZGUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WRlNDQU5GJydAfCQoR05VTElCX1ZGU0NBTkYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1ZTQ0FORicnQHwkKEdOVUxJQl9WU0NBTkYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1ZQUklOVEYnJ0B8JChHTlVMSUJfVlBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVlBSSU5URl9QT1NJWCcnQHwkKEdOVUxJQl9WUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WU05QUklOVEYnJ0B8JChHTlVMSUJfVlNOUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WU1BSSU5URl9QT1NJWCcnQHwkKEdOVUxJQl9WU1BSSU5URl9QT1NJWCl8ZycgXAotIAkgICAgICA8ICQoc3JjZGlyKS9zdGRpby5pbi5oIHwgXAotIAkgIHNlZCAtZSAnc3xAJydIQVZFX0RFQ0xfRlBVUkdFJydAfCQoSEFWRV9ERUNMX0ZQVVJHRSl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0RFQ0xfRlNFRUtPJydAfCQoSEFWRV9ERUNMX0ZTRUVLTyl8ZycgXAotQEAgLTY5MSw0MyArNjUwLDQxIEBAIEJVSUxUX1NPVVJDRVMgKz0gc3RkbGliLmgKLSAKLSAjIFdlIG5lZWQgdGhlIGZvbGxvd2luZyBpbiBvcmRlciB0byBjcmVhdGUgPHN0ZGxpYi5oPiB3aGVuIHRoZSBzeXN0ZW0KLSAjIGRvZXNuJ3QgaGF2ZSBvbmUgdGhhdCB3b3JrcyB3aXRoIHRoZSBnaXZlbiBjb21waWxlci4KLS1zdGRsaWIuaDogc3RkbGliLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChDWFhERUZTX0gpIFwKLS0gICQoX05PUkVUVVJOX0gpICQoQVJHX05PTk5VTExfSCkgJChXQVJOX09OX1VTRV9IKQotK3N0ZGxpYi5oOiBzdGRsaWIuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TVERMSUJfSCcnQHwkKE5FWFRfU1RETElCX0gpfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX19FWElUJydALyQoR05VTElCX19FWElUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9BVE9MTCcnQC8kKEdOVUxJQl9BVE9MTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfQ0FMTE9DX1BPU0lYJydALyQoR05VTElCX0NBTExPQ19QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRScnQC8kKEdOVUxJQl9DQU5PTklDQUxJWkVfRklMRV9OQU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRMT0FEQVZHJydALyQoR05VTElCX0dFVExPQURBVkcpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVFNVQk9QVCcnQC8kKEdOVUxJQl9HRVRTVUJPUFQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dSQU5UUFQnJ0AvJChHTlVMSUJfR1JBTlRQVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUFMTE9DX1BPU0lYJydALyQoR05VTElCX01BTExPQ19QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJUT1dDJydALyQoR05VTElCX01CVE9XQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtEVEVNUCcnQC8kKEdOVUxJQl9NS0RURU1QKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS09TVEVNUCcnQC8kKEdOVUxJQl9NS09TVEVNUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtPU1RFTVBTJydALyQoR05VTElCX01LT1NURU1QUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtTVEVNUCcnQC8kKEdOVUxJQl9NS1NURU1QKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS1NURU1QUycnQC8kKEdOVUxJQl9NS1NURU1QUykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFRTTkFNRScnQC8kKEdOVUxJQl9QVFNOQU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QVVRFTlYnJ0AvJChHTlVMSUJfUFVURU5WKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9SQU5ET01fUicnQC8kKEdOVUxJQl9SQU5ET01fUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVBTExPQ19QT1NJWCcnQC8kKEdOVUxJQl9SRUFMTE9DX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9SRUFMUEFUSCcnQC8kKEdOVUxJQl9SRUFMUEFUSCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUlBNQVRDSCcnQC8kKEdOVUxJQl9SUE1BVENIKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TRVRFTlYnJ0AvJChHTlVMSUJfU0VURU5WKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJUT0QnJ0AvJChHTlVMSUJfU1RSVE9EKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJUT0xMJydALyQoR05VTElCX1NUUlRPTEwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlRPVUxMJydALyQoR05VTElCX1NUUlRPVUxMKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TWVNURU1fUE9TSVgnJ0AvJChHTlVMSUJfU1lTVEVNX1BPU0lYKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VTkxPQ0tQVCcnQC8kKEdOVUxJQl9VTkxPQ0tQVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVU5TRVRFTlYnJ0AvJChHTlVMSUJfVU5TRVRFTlYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1dDVE9NQicnQC8kKEdOVUxJQl9XQ1RPTUIpL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX19FWElUJydAfCQoR05VTElCX19FWElUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9BVE9MTCcnQHwkKEdOVUxJQl9BVE9MTCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfQ0FMTE9DX1BPU0lYJydAfCQoR05VTElCX0NBTExPQ19QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRScnQHwkKEdOVUxJQl9DQU5PTklDQUxJWkVfRklMRV9OQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRMT0FEQVZHJydAfCQoR05VTElCX0dFVExPQURBVkcpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVFNVQk9QVCcnQHwkKEdOVUxJQl9HRVRTVUJPUFQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dSQU5UUFQnJ0B8JChHTlVMSUJfR1JBTlRQVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUFMTE9DX1BPU0lYJydAfCQoR05VTElCX01BTExPQ19QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJUT1dDJydAfCQoR05VTElCX01CVE9XQyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtEVEVNUCcnQHwkKEdOVUxJQl9NS0RURU1QKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS09TVEVNUCcnQHwkKEdOVUxJQl9NS09TVEVNUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtPU1RFTVBTJydAfCQoR05VTElCX01LT1NURU1QUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtTVEVNUCcnQHwkKEdOVUxJQl9NS1NURU1QKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS1NURU1QUycnQHwkKEdOVUxJQl9NS1NURU1QUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFRTTkFNRScnQHwkKEdOVUxJQl9QVFNOQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QVVRFTlYnJ0B8JChHTlVMSUJfUFVURU5WKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SQU5ET01fUicnQHwkKEdOVUxJQl9SQU5ET01fUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkVBTExPQ19QT1NJWCcnQHwkKEdOVUxJQl9SRUFMTE9DX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRUFMUEFUSCcnQHwkKEdOVUxJQl9SRUFMUEFUSCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUlBNQVRDSCcnQHwkKEdOVUxJQl9SUE1BVENIKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TRVRFTlYnJ0B8JChHTlVMSUJfU0VURU5WKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJUT0QnJ0B8JChHTlVMSUJfU1RSVE9EKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJUT0xMJydAfCQoR05VTElCX1NUUlRPTEwpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlRPVUxMJydAfCQoR05VTElCX1NUUlRPVUxMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TWVNURU1fUE9TSVgnJ0B8JChHTlVMSUJfU1lTVEVNX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VTkxPQ0tQVCcnQHwkKEdOVUxJQl9VTkxPQ0tQVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVU5TRVRFTlYnJ0B8JChHTlVMSUJfVU5TRVRFTlYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1dDVE9NQicnQHwkKEdOVUxJQl9XQ1RPTUIpfGcnIFwKLSAJICAgICAgPCAkKHNyY2Rpcikvc3RkbGliLmluLmggfCBcCi0gCSAgc2VkIC1lICdzfEAnJ0hBVkVfX0VYSVQnJ0B8JChIQVZFX19FWElUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfQVRPTEwnJ0B8JChIQVZFX0FUT0xMKXxnJyBcCi1AQCAtNzY2LDcgKzcyMyw2IEBAIHN0ZGxpYi5oOiBzdGRsaWIuaW4uaCAkKHRvcF9idWlsZGRpcikvY28KLSAJICAgICAgLWUgJ3N8QCcnUkVQTEFDRV9VTlNFVEVOVicnQHwkKFJFUExBQ0VfVU5TRVRFTlYpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUkVQTEFDRV9XQ1RPTUInJ0B8JChSRVBMQUNFX1dDVE9NQil8ZycgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb25zIG9mIF9HTF9GVU5DREVDTF9SUEwvciAkKENYWERFRlNfSCknIFwKLS0JICAgICAgLWUgJy9kZWZpbml0aW9uIG9mIF9Ob3JldHVybi9yICQoX05PUkVUVVJOX0gpJyBcCi0gCSAgICAgIC1lICcvZGVmaW5pdGlvbiBvZiBfR0xfQVJHX05PTk5VTEwvciAkKEFSR19OT05OVUxMX0gpJyBcCi0gCSAgICAgIC1lICcvZGVmaW5pdGlvbiBvZiBfR0xfV0FSTl9PTl9VU0UvciAkKFdBUk5fT05fVVNFX0gpJzsgXAotIAl9ID4gJEAtdCAmJiBcCi1AQCAtNzkzLDE1ICs3NDksNiBAQCBFWFRSQV9saWJpY3J0X2FfU09VUkNFUyArPSBzdHJlcnJvci5jCi0gCi0gIyMgZW5kICAgZ251bGliIG1vZHVsZSBzdHJlcnJvcgotIAotLSMjIGJlZ2luIGdudWxpYiBtb2R1bGUgc3RyZXJyb3Itb3ZlcnJpZGUKLS0KLS0KLS1FWFRSQV9ESVNUICs9IHN0cmVycm9yLW92ZXJyaWRlLmMgc3RyZXJyb3Itb3ZlcnJpZGUuaAotLQotLUVYVFJBX2xpYmljcnRfYV9TT1VSQ0VTICs9IHN0cmVycm9yLW92ZXJyaWRlLmMKLS0KLS0jIyBlbmQgICBnbnVsaWIgbW9kdWxlIHN0cmVycm9yLW92ZXJyaWRlCi0tCi0gIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzdHJpbmcKLSAKLSBCVUlMVF9TT1VSQ0VTICs9IHN0cmluZy5oCi1AQCAtODExLDUyICs3NTgsNDcgQEAgQlVJTFRfU09VUkNFUyArPSBzdHJpbmcuaAotIHN0cmluZy5oOiBzdHJpbmcuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TVFJJTkdfSCcnQHwkKE5FWFRfU1RSSU5HX0gpfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZGU0wnJ0AvJChHTlVMSUJfRkZTTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRkZTTEwnJ0AvJChHTlVMSUJfRkZTTEwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU0xFTicnQC8kKEdOVUxJQl9NQlNMRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU05MRU4nJ0AvJChHTlVMSUJfTUJTTkxFTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTQ0hSJydALyQoR05VTElCX01CU0NIUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTUkNIUicnQC8kKEdOVUxJQl9NQlNSQ0hSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNTVFInJ0AvJChHTlVMSUJfTUJTU1RSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNDQVNFQ01QJydALyQoR05VTElCX01CU0NBU0VDTVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU05DQVNFQ01QJydALyQoR05VTElCX01CU05DQVNFQ01QKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNQQ0FTRUNNUCcnQC8kKEdOVUxJQl9NQlNQQ0FTRUNNUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTQ0FTRVNUUicnQC8kKEdOVUxJQl9NQlNDQVNFU1RSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNDU1BOJydALyQoR05VTElCX01CU0NTUE4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU1BCUksnJ0AvJChHTlVMSUJfTUJTUEJSSykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTU1BOJydALyQoR05VTElCX01CU1NQTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTU0VQJydALyQoR05VTElCX01CU1NFUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTVE9LX1InJ0AvJChHTlVMSUJfTUJTVE9LX1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01FTUNIUicnQC8kKEdOVUxJQl9NRU1DSFIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01FTU1FTScnQC8kKEdOVUxJQl9NRU1NRU0pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01FTVBDUFknJ0AvJChHTlVMSUJfTUVNUENQWSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUVNUkNIUicnQC8kKEdOVUxJQl9NRU1SQ0hSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9SQVdNRU1DSFInJ0AvJChHTlVMSUJfUkFXTUVNQ0hSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFBDUFknJ0AvJChHTlVMSUJfU1RQQ1BZKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFBOQ1BZJydALyQoR05VTElCX1NUUE5DUFkpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUkNIUk5VTCcnQC8kKEdOVUxJQl9TVFJDSFJOVUwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUkRVUCcnQC8kKEdOVUxJQl9TVFJEVVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUk5DQVQnJ0AvJChHTlVMSUJfU1RSTkNBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSTkRVUCcnQC8kKEdOVUxJQl9TVFJORFVQKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJOTEVOJydALyQoR05VTElCX1NUUk5MRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlBCUksnJ0AvJChHTlVMSUJfU1RSUEJSSykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSU0VQJydALyQoR05VTElCX1NUUlNFUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSU1RSJydALyQoR05VTElCX1NUUlNUUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSQ0FTRVNUUicnQC8kKEdOVUxJQl9TVFJDQVNFU1RSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJUT0tfUicnQC8kKEdOVUxJQl9TVFJUT0tfUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSRVJST1InJ0AvJChHTlVMSUJfU1RSRVJST1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUkVSUk9SX1InJ0AvJChHTlVMSUJfU1RSRVJST1JfUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSU0lHTkFMJydALyQoR05VTElCX1NUUlNJR05BTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSVkVSU0NNUCcnQC8kKEdOVUxJQl9TVFJWRVJTQ01QKS9nJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNMRU4nJ0B8JChHTlVMSUJfTUJTTEVOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNOTEVOJydAfCQoR05VTElCX01CU05MRU4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU0NIUicnQHwkKEdOVUxJQl9NQlNDSFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1JDSFInJ0B8JChHTlVMSUJfTUJTUkNIUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTU1RSJydAfCQoR05VTElCX01CU1NUUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTQ0FTRUNNUCcnQHwkKEdOVUxJQl9NQlNDQVNFQ01QKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNOQ0FTRUNNUCcnQHwkKEdOVUxJQl9NQlNOQ0FTRUNNUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTUENBU0VDTVAnJ0B8JChHTlVMSUJfTUJTUENBU0VDTVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU0NBU0VTVFInJ0B8JChHTlVMSUJfTUJTQ0FTRVNUUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTQ1NQTicnQHwkKEdOVUxJQl9NQlNDU1BOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNQQlJLJydAfCQoR05VTElCX01CU1BCUkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1NQTicnQHwkKEdOVUxJQl9NQlNTUE4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1NFUCcnQHwkKEdOVUxJQl9NQlNTRVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1RPS19SJydAfCQoR05VTElCX01CU1RPS19SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NRU1DSFInJ0B8JChHTlVMSUJfTUVNQ0hSKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NRU1NRU0nJ0B8JChHTlVMSUJfTUVNTUVNKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NRU1QQ1BZJydAfCQoR05VTElCX01FTVBDUFkpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01FTVJDSFInJ0B8JChHTlVMSUJfTUVNUkNIUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkFXTUVNQ0hSJydAfCQoR05VTElCX1JBV01FTUNIUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RQQ1BZJydAfCQoR05VTElCX1NUUENQWSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RQTkNQWScnQHwkKEdOVUxJQl9TVFBOQ1BZKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJDSFJOVUwnJ0B8JChHTlVMSUJfU1RSQ0hSTlVMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJEVVAnJ0B8JChHTlVMSUJfU1RSRFVQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJOQ0FUJydAfCQoR05VTElCX1NUUk5DQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUk5EVVAnJ0B8JChHTlVMSUJfU1RSTkRVUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSTkxFTicnQHwkKEdOVUxJQl9TVFJOTEVOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJQQlJLJydAfCQoR05VTElCX1NUUlBCUkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlNFUCcnQHwkKEdOVUxJQl9TVFJTRVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlNUUicnQHwkKEdOVUxJQl9TVFJTVFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUkNBU0VTVFInJ0B8JChHTlVMSUJfU1RSQ0FTRVNUUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSVE9LX1InJ0B8JChHTlVMSUJfU1RSVE9LX1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUkVSUk9SJydAfCQoR05VTElCX1NUUkVSUk9SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJFUlJPUl9SJydAfCQoR05VTElCX1NUUkVSUk9SX1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlNJR05BTCcnQHwkKEdOVUxJQl9TVFJTSUdOQUwpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlZFUlNDTVAnJ0B8JChHTlVMSUJfU1RSVkVSU0NNUCl8ZycgXAotIAkgICAgICA8ICQoc3JjZGlyKS9zdHJpbmcuaW4uaCB8IFwKLS0JICBzZWQgLWUgJ3N8QCcnSEFWRV9GRlNMJydAfCQoSEFWRV9GRlNMKXxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0hBVkVfRkZTTEwnJ0B8JChIQVZFX0ZGU0xMKXxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0hBVkVfTUJTTEVOJydAfCQoSEFWRV9NQlNMRU4pfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSEFWRV9NQlNMRU4nJ0B8JChIQVZFX01CU0xFTil8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX01FTUNIUicnQHwkKEhBVkVfTUVNQ0hSKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfREVDTF9NRU1NRU0nJ0B8JChIQVZFX0RFQ0xfTUVNTUVNKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfTUVNUENQWScnQHwkKEhBVkVfTUVNUENQWSl8ZycgXAotQEAgLTkxMiwyMyArODU0LDIyIEBAIHN5cy9zdGF0Lmg6IHN5c19zdGF0LmluLmggJCh0b3BfYnVpbGRkaXIKLSAJJChBTV9WX2F0KSQoTUtESVJfUCkgc3lzCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLyc7IFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfU1lTX1NUQVRfSCcnQHwkKE5FWFRfU1lTX1NUQVRfSCl8ZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRkNITU9EQVQnJ0AvJChHTlVMSUJfRkNITU9EQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZTVEFUQVQnJ0AvJChHTlVMSUJfRlNUQVRBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlVUSU1FTlMnJ0AvJChHTlVMSUJfRlVUSU1FTlMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0xDSE1PRCcnQC8kKEdOVUxJQl9MQ0hNT0QpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0xTVEFUJydALyQoR05VTElCX0xTVEFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS0RJUkFUJydALyQoR05VTElCX01LRElSQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LRklGTycnQC8kKEdOVUxJQl9NS0ZJRk8pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LRklGT0FUJydALyQoR05VTElCX01LRklGT0FUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS05PRCcnQC8kKEdOVUxJQl9NS05PRCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtOT0RBVCcnQC8kKEdOVUxJQl9NS05PREFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVEFUJydALyQoR05VTElCX1NUQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VUSU1FTlNBVCcnQC8kKEdOVUxJQl9VVElNRU5TQVQpL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZDSE1PREFUJydAfCQoR05VTElCX0ZDSE1PREFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GU1RBVEFUJydAfCQoR05VTElCX0ZTVEFUQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZVVElNRU5TJydAfCQoR05VTElCX0ZVVElNRU5TKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9MQ0hNT0QnJ0B8JChHTlVMSUJfTENITU9EKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9MU1RBVCcnQHwkKEdOVUxJQl9MU1RBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtESVJBVCcnQHwkKEdOVUxJQl9NS0RJUkFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS0ZJRk8nJ0B8JChHTlVMSUJfTUtGSUZPKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS0ZJRk9BVCcnQHwkKEdOVUxJQl9NS0ZJRk9BVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtOT0QnJ0B8JChHTlVMSUJfTUtOT0QpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01LTk9EQVQnJ0B8JChHTlVMSUJfTUtOT0RBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RBVCcnQHwkKEdOVUxJQl9TVEFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VVElNRU5TQVQnJ0B8JChHTlVMSUJfVVRJTUVOU0FUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfRkNITU9EQVQnJ0B8JChIQVZFX0ZDSE1PREFUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfRlNUQVRBVCcnQHwkKEhBVkVfRlNUQVRBVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0ZVVElNRU5TJydAfCQoSEFWRV9GVVRJTUVOUyl8ZycgXAotQEAgLTk3MSwxNiArOTEyLDE1IEBAIEJVSUxUX1NPVVJDRVMgKz0gdGltZS5oCi0gdGltZS5oOiB0aW1lLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChDWFhERUZTX0gpICQoQVJHX05PTk5VTExfSCkgJChXQVJOX09OX1VTRV9IKQotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nICYmIFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfVElNRV9IJydAfCQoTkVYVF9USU1FX0gpfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LVElNRScnQC8kKEdOVUxJQl9NS1RJTUUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX05BTk9TTEVFUCcnQC8kKEdOVUxJQl9OQU5PU0xFRVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlBUSU1FJydALyQoR05VTElCX1NUUlBUSU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9USU1FR00nJ0AvJChHTlVMSUJfVElNRUdNKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9USU1FX1InJ0AvJChHTlVMSUJfVElNRV9SKS9nJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS1RJTUUnJ0B8JChHTlVMSUJfTUtUSU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9OQU5PU0xFRVAnJ0B8JChHTlVMSUJfTkFOT1NMRUVQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJQVElNRScnQHwkKEdOVUxJQl9TVFJQVElNRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVElNRUdNJydAfCQoR05VTElCX1RJTUVHTSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVElNRV9SJydAfCQoR05VTElCX1RJTUVfUil8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0RFQ0xfTE9DQUxUSU1FX1InJ0B8JChIQVZFX0RFQ0xfTE9DQUxUSU1FX1IpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9OQU5PU0xFRVAnJ0B8JChIQVZFX05BTk9TTEVFUCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX1NUUlBUSU1FJydAfCQoSEFWRV9TVFJQVElNRSl8ZycgXAotQEAgLTEwMTMsNTYgKzk1Myw1NSBAQCBCVUlMVF9TT1VSQ0VTICs9IHVuaXN0ZC5oCi0gdW5pc3RkLmg6IHVuaXN0ZC5pbi5oICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoQ1hYREVGU19IKSAkKEFSR19OT05OVUxMX0gpICQoV0FSTl9PTl9VU0VfSCkKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJzsgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydIQVZFX1VOSVNURF9IJydAfCQoSEFWRV9VTklTVERfSCl8ZycgXAotKwkgIHNlZCAtZSAnc3xAJydIQVZFX1VOSVNURF9IJydAfCQoSEFWRV9VTklTVERfSCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotIAkgICAgICAtZSAnc3xAJydORVhUX1VOSVNURF9IJydAfCQoTkVYVF9VTklTVERfSCl8ZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfQ0hPV04nJ0AvJChHTlVMSUJfQ0hPV04pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0NMT1NFJydALyQoR05VTElCX0NMT1NFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9EVVAyJydALyQoR05VTElCX0RVUDIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0RVUDMnJ0AvJChHTlVMSUJfRFVQMykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRU5WSVJPTicnQC8kKEdOVUxJQl9FTlZJUk9OKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9FVUlEQUNDRVNTJydALyQoR05VTElCX0VVSURBQ0NFU1MpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZBQ0NFU1NBVCcnQC8kKEdOVUxJQl9GQUNDRVNTQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZDSERJUicnQC8kKEdOVUxJQl9GQ0hESVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZDSE9XTkFUJydALyQoR05VTElCX0ZDSE9XTkFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GU1lOQycnQC8kKEdOVUxJQl9GU1lOQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlRSVU5DQVRFJydALyQoR05VTElCX0ZUUlVOQ0FURSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUQ1dEJydALyQoR05VTElCX0dFVENXRCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VURE9NQUlOTkFNRScnQC8kKEdOVUxJQl9HRVRET01BSU5OQU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVREVEFCTEVTSVpFJydALyQoR05VTElCX0dFVERUQUJMRVNJWkUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVEdST1VQUycnQC8kKEdOVUxJQl9HRVRHUk9VUFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVEhPU1ROQU1FJydALyQoR05VTElCX0dFVEhPU1ROQU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRMT0dJTicnQC8kKEdOVUxJQl9HRVRMT0dJTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUTE9HSU5fUicnQC8kKEdOVUxJQl9HRVRMT0dJTl9SKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRQQUdFU0laRScnQC8kKEdOVUxJQl9HRVRQQUdFU0laRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUVVNFUlNIRUxMJydALyQoR05VTElCX0dFVFVTRVJTSEVMTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR1JPVVBfTUVNQkVSJydALyQoR05VTElCX0dST1VQX01FTUJFUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTENIT1dOJydALyQoR05VTElCX0xDSE9XTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTElOSycnQC8kKEdOVUxJQl9MSU5LKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9MSU5LQVQnJ0AvJChHTlVMSUJfTElOS0FUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9MU0VFSycnQC8kKEdOVUxJQl9MU0VFSykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUElQRScnQC8kKEdOVUxJQl9QSVBFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QSVBFMicnQC8kKEdOVUxJQl9QSVBFMikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFJFQUQnJ0AvJChHTlVMSUJfUFJFQUQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BXUklURScnQC8kKEdOVUxJQl9QV1JJVEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFQUQnJ0AvJChHTlVMSUJfUkVBRCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVBRExJTksnJ0AvJChHTlVMSUJfUkVBRExJTkspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFQURMSU5LQVQnJ0AvJChHTlVMSUJfUkVBRExJTktBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUk1ESVInJ0AvJChHTlVMSUJfUk1ESVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NMRUVQJydALyQoR05VTElCX1NMRUVQKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TWU1MSU5LJydALyQoR05VTElCX1NZTUxJTkspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NZTUxJTktBVCcnQC8kKEdOVUxJQl9TWU1MSU5LQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1RUWU5BTUVfUicnQC8kKEdOVUxJQl9UVFlOQU1FX1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOSVNURF9IX0dFVE9QVCcnQC8kKEdOVUxJQl9VTklTVERfSF9HRVRPUFQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOSVNURF9IX05PTkJMT0NLSU5HJydALyQoR05VTElCX1VOSVNURF9IX05PTkJMT0NLSU5HKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VTklTVERfSF9TSUdQSVBFJydALyQoR05VTElCX1VOSVNURF9IX1NJR1BJUEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOTElOSycnQC8kKEdOVUxJQl9VTkxJTkspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOTElOS0FUJydALyQoR05VTElCX1VOTElOS0FUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VU0xFRVAnJ0AvJChHTlVMSUJfVVNMRUVQKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9XUklURScnQC8kKEdOVUxJQl9XUklURSkvZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfQ0hPV04nJ0B8JChHTlVMSUJfQ0hPV04pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0NMT1NFJydAfCQoR05VTElCX0NMT1NFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9EVVAyJydAfCQoR05VTElCX0RVUDIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0RVUDMnJ0B8JChHTlVMSUJfRFVQMyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRU5WSVJPTicnQHwkKEdOVUxJQl9FTlZJUk9OKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9FVUlEQUNDRVNTJydAfCQoR05VTElCX0VVSURBQ0NFU1MpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZBQ0NFU1NBVCcnQHwkKEdOVUxJQl9GQUNDRVNTQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZDSERJUicnQHwkKEdOVUxJQl9GQ0hESVIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZDSE9XTkFUJydAfCQoR05VTElCX0ZDSE9XTkFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GU1lOQycnQHwkKEdOVUxJQl9GU1lOQyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlRSVU5DQVRFJydAfCQoR05VTElCX0ZUUlVOQ0FURSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUQ1dEJydAfCQoR05VTElCX0dFVENXRCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VURE9NQUlOTkFNRScnQHwkKEdOVUxJQl9HRVRET01BSU5OQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVREVEFCTEVTSVpFJydAfCQoR05VTElCX0dFVERUQUJMRVNJWkUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVEdST1VQUycnQHwkKEdOVUxJQl9HRVRHUk9VUFMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVEhPU1ROQU1FJydAfCQoR05VTElCX0dFVEhPU1ROQU1FKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRMT0dJTicnQHwkKEdOVUxJQl9HRVRMT0dJTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUTE9HSU5fUicnQHwkKEdOVUxJQl9HRVRMT0dJTl9SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRQQUdFU0laRScnQHwkKEdOVUxJQl9HRVRQQUdFU0laRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUVVNFUlNIRUxMJydAfCQoR05VTElCX0dFVFVTRVJTSEVMTCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR1JPVVBfTUVNQkVSJydAfCQoR05VTElCX0dST1VQX01FTUJFUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTENIT1dOJydAfCQoR05VTElCX0xDSE9XTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTElOSycnQHwkKEdOVUxJQl9MSU5LKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9MSU5LQVQnJ0B8JChHTlVMSUJfTElOS0FUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9MU0VFSycnQHwkKEdOVUxJQl9MU0VFSyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUElQRScnQHwkKEdOVUxJQl9QSVBFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QSVBFMicnQHwkKEdOVUxJQl9QSVBFMil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFJFQUQnJ0B8JChHTlVMSUJfUFJFQUQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BXUklURScnQHwkKEdOVUxJQl9QV1JJVEUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JFQUQnJ0B8JChHTlVMSUJfUkVBRCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkVBRExJTksnJ0B8JChHTlVMSUJfUkVBRExJTkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JFQURMSU5LQVQnJ0B8JChHTlVMSUJfUkVBRExJTktBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUk1ESVInJ0B8JChHTlVMSUJfUk1ESVIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NMRUVQJydAfCQoR05VTElCX1NMRUVQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TWU1MSU5LJydAfCQoR05VTElCX1NZTUxJTkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NZTUxJTktBVCcnQHwkKEdOVUxJQl9TWU1MSU5LQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1RUWU5BTUVfUicnQHwkKEdOVUxJQl9UVFlOQU1FX1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOSVNURF9IX0dFVE9QVCcnQHwkKEdOVUxJQl9VTklTVERfSF9HRVRPUFQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOSVNURF9IX05PTkJMT0NLSU5HJydAfCQoR05VTElCX1VOSVNURF9IX05PTkJMT0NLSU5HKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VTklTVERfSF9TSUdQSVBFJydAfCQoR05VTElCX1VOSVNURF9IX1NJR1BJUEUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOTElOSycnQHwkKEdOVUxJQl9VTkxJTkspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOTElOS0FUJydAfCQoR05VTElCX1VOTElOS0FUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VU0xFRVAnJ0B8JChHTlVMSUJfVVNMRUVQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9XUklURScnQHwkKEdOVUxJQl9XUklURSl8ZycgXAotIAkgICAgICA8ICQoc3JjZGlyKS91bmlzdGQuaW4uaCB8IFwKLSAJICBzZWQgLWUgJ3N8QCcnSEFWRV9DSE9XTicnQHwkKEhBVkVfQ0hPV04pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9EVVAyJydAfCQoSEFWRV9EVVAyKXxnJyBcCi1AQCAtMTE5OCw2ICsxMTM3LDI1IEBAIEVYVFJBX0RJU1QgKz0gdmVyaWZ5LmgKLSAKLSAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHZlcmlmeQotIAotKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgd2Fybi1vbi11c2UKLSsKLStCVUlMVF9TT1VSQ0VTICs9IHdhcm4tb24tdXNlLmgKLSsjIFRoZSB3YXJuLW9uLXVzZS5oIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIGdlbmVyYXRlZCAuaCBmaWxlcyBpcyB0aGUgc2FtZSBhcwotKyMgYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgsIGV4Y2VwdCB0aGF0IGl0IGhhcyB0aGUgY29weXJpZ2h0IGhlYWRlciBjdXQgb2ZmLgotK3dhcm4tb24tdXNlLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgKLSsJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSsJc2VkIC1uIC1lICcvXi5pZm5kZWYvLCQkcCcgXAotKwkgIDwgJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvd2Fybi1vbi11c2UuaCBcCi0rCSAgPiAkQC10ICYmIFwKLSsJbXYgJEAtdCAkQAotK01PU1RMWUNMRUFORklMRVMgKz0gd2Fybi1vbi11c2UuaCB3YXJuLW9uLXVzZS5oLXQKLSsKLStXQVJOX09OX1VTRV9IPXdhcm4tb24tdXNlLmgKLSsKLStFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgKLSsKLSsjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHdhcm4tb24tdXNlCi0rCi0gIyMgYmVnaW4gZ251bGliIG1vZHVsZSB4YWxsb2MKLSAKLSBsaWJpY3J0X2FfU09VUkNFUyArPSB4YWxsb2MuaCB4bWFsbG9jLmMgeHN0cmR1cC5jCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3BhdGhtYXguaCBsaWJpY29udi0xLjE0L3NyY2xpYi9wYXRobWF4LmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3BhdGhtYXguaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3BhdGhtYXguaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjIxODQ4NDQ1MSAtMDgwMAotQEAgLTE5LDI3ICsxOSw2IEBACi0gI2lmbmRlZiBfUEFUSE1BWF9ICi0gIyBkZWZpbmUgX1BBVEhNQVhfSAotIAotLS8qIFBPU0lYOjIwMDggZGVmaW5lcyBQQVRIX01BWCB0byBiZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgaW4gYSBmaWxlbmFtZSwKLS0gICBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIE5VTCBieXRlLgotLSAgIDxodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9iYXNlZGVmcy9saW1pdHMuaC5odG1sPgotLSAgIFBBVEhfTUFYIGlzIG5vdCBkZWZpbmVkIG9uIHN5c3RlbXMgd2hpY2ggaGF2ZSBubyBsaW1pdCBvbiBmaWxlbmFtZSBsZW5ndGgsCi0tICAgc3VjaCBhcyBHTlUvSHVyZC4KLS0KLS0gICBUaGlzIGZpbGUgZG9lcyAqbm90KiBkZWZpbmUgUEFUSF9NQVggYWx3YXlzLiAgUHJvZ3JhbXMgdGhhdCB1c2UgdGhpcyBmaWxlCi0tICAgY2FuIGhhbmRsZSB0aGUgR05VL0h1cmQgY2FzZSBpbiBzZXZlcmFsIHdheXM6Ci0tICAgICAtIEVpdGhlciB3aXRoIGEgcGFja2FnZS13aWRlIGhhbmRsaW5nLCBvciB3aXRoIGEgcGVyLWZpbGUgaGFuZGxpbmcsCi0tICAgICAtIEVpdGhlciB0aHJvdWdoIGEKLS0gICAgICAgICAjaWZkZWYgUEFUSF9NQVgKLS0gICAgICAgb3IgdGhyb3VnaCBhIGZhbGxiYWNrIGxpa2UKLS0gICAgICAgICAjaWZuZGVmIFBBVEhfTUFYCi0tICAgICAgICAgIyBkZWZpbmUgUEFUSF9NQVggODE5MgotLSAgICAgICAgICNlbmRpZgotLSAgICAgICBvciB0aHJvdWdoIGEgZmFsbGJhY2sgbGlrZQotLSAgICAgICAgICNpZm5kZWYgUEFUSF9NQVgKLS0gICAgICAgICAjIGRlZmluZSBQQVRIX01BWCBwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpCi0tICAgICAgICAgI2VuZGlmCi0tICovCi0tCi0gIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjIGluY2x1ZGUgPGxpbWl0cy5oPgotQEAgLTQ4LDYgKzI3LDExIEBACi0gIyAgZGVmaW5lIF9QT1NJWF9QQVRIX01BWCAyNTYKLSAjIGVuZGlmCi0gCi0rIyBpZiAhZGVmaW5lZCBQQVRIX01BWCAmJiBkZWZpbmVkIF9QQ19QQVRIX01BWCAmJiBkZWZpbmVkIEhBVkVfUEFUSENPTkYKLSsjICBkZWZpbmUgUEFUSF9NQVggKHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkgPCAxID8gMTAyNCBcCi0rICAgICAgICAgICAgICAgICAgICA6IHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkpCi0rIyBlbmRpZgotKwotIC8qIERvbid0IGluY2x1ZGUgc3lzL3BhcmFtLmggaWYgaXQgYWxyZWFkeSBoYXMgYmVlbi4gICovCi0gIyBpZiBkZWZpbmVkIEhBVkVfU1lTX1BBUkFNX0ggJiYgIWRlZmluZWQgUEFUSF9NQVggJiYgIWRlZmluZWQgTUFYUEFUSExFTgotICMgIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotQEAgLTU3LDEzICs0MSw4IEBACi0gIyAgZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KLSAjIGVuZGlmCi0gCi0tIyBpZmRlZiBfX2hwdXgKLS0vKiBPbiBIUC1VWCwgUEFUSF9NQVggZGVzaWduYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgaW4gYSBmaWxlbmFtZSwKLS0gICAqbm90KiBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIE5VTCBieXRlLCBhbmQgaXMgc2V0IHRvIDEwMjMuCi0tICAgQWRkaXRpb25hbGx5LCB3aGVuIF9YT1BFTl9TT1VSQ0UgaXMgZGVmaW5lZCB0byA1MDAgb3IgbW9yZSwgUEFUSF9NQVggaXMKLS0gICBub3QgZGVmaW5lZCBhdCBhbGwgYW55IG1vcmUuICAqLwotLSMgIHVuZGVmIFBBVEhfTUFYCi0tIyAgZGVmaW5lIFBBVEhfTUFYIDEwMjQKLSsjIGlmbmRlZiBQQVRIX01BWAotKyMgIGRlZmluZSBQQVRIX01BWCBfUE9TSVhfUEFUSF9NQVgKLSAjIGVuZGlmCi0gCi0gI2VuZGlmIC8qIF9QQVRITUFYX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvcmVsb2N3cmFwcGVyLmMgbGliaWNvbnYtMS4xNC9zcmNsaWIvcmVsb2N3cmFwcGVyLmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3JlbG9jd3JhcHBlci5jCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvcmVsb2N3cmFwcGVyLmMJMjAxMi0wMS0wOCAwMjowNzo0MC4yODI0ODQ0NTUgLTA4MDAKLUBAIC0yOSw2ICsyOSw3IEBACi0gICAgIC0+IHJlbG9jYXRhYmxlCi0gICAgIC0+IHNldGVudgotICAgICAgICAtPiBtYWxsb2NhCi0rICAgIC0+IHN0cmVycm9yCi0gICAgIC0+IGMtY3R5cGUKLSAKLSAgICBNYWNyb3MgdGhhdCBuZWVkIHRvIGJlIHNldCB3aGlsZSBjb21waWxpbmcgdGhpcyBmaWxlOgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zYWZlLXJlYWQuaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zYWZlLXJlYWQuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc2FmZS1yZWFkLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zYWZlLXJlYWQuaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjI5ODQ4NDQ1NSAtMDgwMAotQEAgLTE0LDE5ICsxNCw2IEBACi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0tLyogU29tZSBzeXN0ZW0gY2FsbHMgbWF5IGJlIGludGVycnVwdGVkIGFuZCBmYWlsIHdpdGggZXJybm8gPSBFSU5UUiBpbiB0aGUKLS0gICBmb2xsb3dpbmcgc2l0dWF0aW9uczoKLS0gICAgIC0gVGhlIHByb2Nlc3MgaXMgc3RvcHBlZCBhbmQgcmVzdGFydGVkIChzaWduYWwgU0lHU1RPUCBhbmQgU0lHQ09OVCwgdXNlcgotLSAgICAgICB0eXBlcyBDdHJsLVopIG9uIHNvbWUgcGxhdGZvcm1zOiBNYWNPUyBYLgotLSAgICAgLSBUaGUgcHJvY2VzcyByZWNlaXZlcyBhIHNpZ25hbCBmb3Igd2hpY2ggYSBzaWduYWwgaGFuZGxlciB3YXMgaW5zdGFsbGVkCi0tICAgICAgIHdpdGggc2lnYWN0aW9uKCkgd2l0aCBhbiBzYV9mbGFncyBmaWVsZCB0aGF0IGRvZXMgbm90IGNvbnRhaW4KLS0gICAgICAgU0FfUkVTVEFSVC4KLS0gICAgIC0gVGhlIHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWduYWwgZm9yIHdoaWNoIGEgc2lnbmFsIGhhbmRsZXIgd2FzIGluc3RhbGxlZAotLSAgICAgICB3aXRoIHNpZ25hbCgpIGFuZCBmb3Igd2hpY2ggbm8gY2FsbCB0byBzaWdpbnRlcnJ1cHQoc2lnLDApIHdhcyBkb25lLAotLSAgICAgICBvbiBzb21lIHBsYXRmb3JtczogQUlYLCBIUC1VWCwgSVJJWCwgT1NGLzEsIFNvbGFyaXMuCi0tCi0tICAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCByZWFkKCkgdGhhdCBoYW5kbGVzIEVJTlRSLiAgKi8KLS0KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3NpZ25hbC5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL3NpZ25hbC5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zaWduYWwuaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3NpZ25hbC5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuMzE0NDg0NDU2IC0wODAwCi1AQCAtMjAsNDkgKzIwLDIxIEBACi0gI2VuZGlmCi0gQFBSQUdNQV9DT0xVTU5TQAotIAotLSNpZiBkZWZpbmVkIF9fbmVlZF9zaWdfYXRvbWljX3QgfHwgZGVmaW5lZCBfX25lZWRfc2lnc2V0X3QgfHwgZGVmaW5lZCBfR0xfQUxSRUFEWV9JTkNMVURJTkdfU0lHTkFMX0ggfHwgKGRlZmluZWQgX1NJR05BTF9IICYmICFkZWZpbmVkIF9fU0laRU9GX1BUSFJFQURfTVVURVhfVCkKLS0vKiBTcGVjaWFsIGludm9jYXRpb24gY29udmVudGlvbjoKLS0gICAtIEluc2lkZSBnbGliYyBoZWFkZXIgZmlsZXMuCi0tICAgLSBPbiBnbGliYyBzeXN0ZW1zIHdlIGhhdmUgYSBzZXF1ZW5jZSBvZiBuZXN0ZWQgaW5jbHVkZXMKLS0gICAgIDxzaWduYWwuaD4gLT4gPHVjb250ZXh0Lmg+IC0+IDxzaWduYWwuaD4uCi0tICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIGZ1bmN0aW9ucyBhcmUgbm90IHlldCBkZWNsYXJlZCwgdGhlcmVmb3JlIHdlIGNhbm5vdAotLSAgICAgcHJvdmlkZSB0aGUgQysrIGFsaWFzZXMuCi0tICAgLSBPbiBnbGliYyBzeXN0ZW1zIHdpdGggR0NDIDQuMyB3ZSBoYXZlIGEgc2VxdWVuY2Ugb2YgbmVzdGVkIGluY2x1ZGVzCi0tICAgICA8Y3NpZ25hbD4gLT4gPC91c3IvaW5jbHVkZS9zaWduYWwuaD4gLT4gPHN5cy91Y29udGV4dC5oPiAtPiA8c2lnbmFsLmg+LgotLSAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBhcmUgbm90IHlldCBkZWNsYXJlZCwgdGhlcmVmb3JlCi0tICAgICB3ZSBjYW5ub3QgcHJvdmlkZSB0aGUgQysrIGFsaWFzZXMuICAqLwotKyNpZiBkZWZpbmVkIF9fbmVlZF9zaWdfYXRvbWljX3QgfHwgZGVmaW5lZCBfX25lZWRfc2lnc2V0X3QKLSsvKiBTcGVjaWFsIGludm9jYXRpb24gY29udmVudGlvbiBpbnNpZGUgZ2xpYmMgaGVhZGVyIGZpbGVzLiAgKi8KLSAKLSAjIEBJTkNMVURFX05FWFRAIEBORVhUX1NJR05BTF9IQAotIAotICNlbHNlCi0gLyogTm9ybWFsIGludm9jYXRpb24gY29udmVudGlvbi4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU0lHTkFMX0gKLS0KLS0jZGVmaW5lIF9HTF9BTFJFQURZX0lOQ0xVRElOR19TSUdOQUxfSAotLQotLS8qIERlZmluZSBwaWRfdCwgdWlkX3QuCi0tICAgQWxzbywgbWluZ3cgZGVmaW5lcyBzaWdzZXRfdCBub3QgaW4gPHNpZ25hbC5oPiwgYnV0IGluIDxzeXMvdHlwZXMuaD4uCi0tICAgT24gU29sYXJpcyAxMCwgPHNpZ25hbC5oPiBpbmNsdWRlcyA8c3lzL3R5cGVzLmg+LCB3aGljaCBldmVudHVhbGx5IGluY2x1ZGVzCi0tICAgdXM7IHNvIGluY2x1ZGUgPHN5cy90eXBlcy5oPiBub3csIGJlZm9yZSB0aGUgc2Vjb25kIGluY2x1c2lvbiBndWFyZC4gICovCi0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpZm5kZWYgX0dMX1NJR05BTF9ICi0gCi0gLyogVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotICNASU5DTFVERV9ORVhUQCBATkVYVF9TSUdOQUxfSEAKLSAKLS0jdW5kZWYgX0dMX0FMUkVBRFlfSU5DTFVESU5HX1NJR05BTF9ICi0tCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU0lHTkFMX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TSUdOQUxfSAotLQotLS8qIE1hY09TIFggMTAuMywgRnJlZUJTRCA2LjQsIE9wZW5CU0QgMy44LCBPU0YvMSA0LjAsIFNvbGFyaXMgMi42IGRlY2xhcmUKLS0gICBwdGhyZWFkX3NpZ21hc2sgaW4gPHB0aHJlYWQuaD4sIG5vdCBpbiA8c2lnbmFsLmg+LgotLSAgIEJ1dCBhdm9pZCBuYW1lc3BhY2UgcG9sbHV0aW9uIG9uIGdsaWJjIHN5c3RlbXMuKi8KLS0jaWYgKEBHTlVMSUJfUFRIUkVBRF9TSUdNQVNLQCB8fCBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLKSBcCi0tICAgICYmICgoZGVmaW5lZCBfX0FQUExFX18gJiYgZGVmaW5lZCBfX01BQ0hfXykgfHwgZGVmaW5lZCBfX0ZyZWVCU0RfXyB8fCBkZWZpbmVkIF9fT3BlbkJTRF9fIHx8IGRlZmluZWQgX19vc2ZfXyB8fCBkZWZpbmVkIF9fc3VuKSBcCi0tICAgICYmICEgZGVmaW5lZCBfX0dMSUJDX18KLS0jIGluY2x1ZGUgPHB0aHJlYWQuaD4KLS0jZW5kaWYKLSsjaWZuZGVmIF9HTF9TSUdOQUxfSAotKyNkZWZpbmUgX0dMX1NJR05BTF9ICi0gCi0gLyogVGhlIGRlZmluaXRpb25zIG9mIF9HTF9GVU5DREVDTF9SUEwgZXRjLiBhcmUgY29waWVkIGhlcmUuICAqLwotIAotQEAgLTcwLDYgKzQyLDEwIEBACi0gCi0gLyogVGhlIGRlZmluaXRpb24gb2YgX0dMX1dBUk5fT05fVVNFIGlzIGNvcGllZCBoZXJlLiAgKi8KLSAKLSsvKiBEZWZpbmUgcGlkX3QsIHVpZF90LgotKyAgIEFsc28sIG1pbmd3IGRlZmluZXMgc2lnc2V0X3Qgbm90IGluIDxzaWduYWwuaD4sIGJ1dCBpbiA8c3lzL3R5cGVzLmg+LiAgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0gLyogT24gQUlYLCBzaWdfYXRvbWljX3QgYWxyZWFkeSBpbmNsdWRlcyB2b2xhdGlsZS4gIEM5OSByZXF1aXJlcyB0aGF0Ci0gICAgJ3ZvbGF0aWxlIHNpZ19hdG9taWNfdCcgaWdub3JlIHRoZSBleHRyYSBtb2RpZmllciwgYnV0IEM4OSBkaWQgbm90LgotICAgIEhlbmNlLCByZWRlZmluZSB0aGlzIHRvIGEgbm9uLXZvbGF0aWxlIHR5cGUgYXMgbmVlZGVkLiAgKi8KLUBAIC0xMjQsMzQgKzEwMCw2IEBAIHR5cGVkZWYgdm9pZCAoKnNpZ2hhbmRsZXJfdCkgKGludCk7Ci0gI2VuZGlmCi0gCi0gCi0tI2lmIEBHTlVMSUJfUFRIUkVBRF9TSUdNQVNLQAotLSMgaWYgQFJFUExBQ0VfUFRIUkVBRF9TSUdNQVNLQAotLSMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyAgIHVuZGVmIHB0aHJlYWRfc2lnbWFzawotLSMgICBkZWZpbmUgcHRocmVhZF9zaWdtYXNrIHJwbF9wdGhyZWFkX3NpZ21hc2sKLS0jICBlbmRpZgotLV9HTF9GVU5DREVDTF9SUEwgKHB0aHJlYWRfc2lnbWFzaywgaW50LAotLSAgICAgICAgICAgICAgICAgIChpbnQgaG93LCBjb25zdCBzaWdzZXRfdCAqbmV3X21hc2ssIHNpZ3NldF90ICpvbGRfbWFzaykpOwotLV9HTF9DWFhBTElBU19SUEwgKHB0aHJlYWRfc2lnbWFzaywgaW50LAotLSAgICAgICAgICAgICAgICAgIChpbnQgaG93LCBjb25zdCBzaWdzZXRfdCAqbmV3X21hc2ssIHNpZ3NldF90ICpvbGRfbWFzaykpOwotLSMgZWxzZQotLSMgIGlmICFASEFWRV9QVEhSRUFEX1NJR01BU0tACi0tX0dMX0ZVTkNERUNMX1NZUyAocHRocmVhZF9zaWdtYXNrLCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKGludCBob3csIGNvbnN0IHNpZ3NldF90ICpuZXdfbWFzaywgc2lnc2V0X3QgKm9sZF9tYXNrKSk7Ci0tIyAgZW5kaWYKLS1fR0xfQ1hYQUxJQVNfU1lTIChwdGhyZWFkX3NpZ21hc2ssIGludCwKLS0gICAgICAgICAgICAgICAgICAoaW50IGhvdywgY29uc3Qgc2lnc2V0X3QgKm5ld19tYXNrLCBzaWdzZXRfdCAqb2xkX21hc2spKTsKLS0jIGVuZGlmCi0tX0dMX0NYWEFMSUFTV0FSTiAocHRocmVhZF9zaWdtYXNrKTsKLS0jZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0tIyB1bmRlZiBwdGhyZWFkX3NpZ21hc2sKLS0jIGlmIEhBVkVfUkFXX0RFQ0xfUFRIUkVBRF9TSUdNQVNLCi0tX0dMX1dBUk5fT05fVVNFIChwdGhyZWFkX3NpZ21hc2ssICJwdGhyZWFkX3NpZ21hc2sgaXMgbm90IHBvcnRhYmxlIC0gIgotLSAgICAgICAgICAgICAgICAgInVzZSBnbnVsaWIgbW9kdWxlIHB0aHJlYWRfc2lnbWFzayBmb3IgcG9ydGFiaWxpdHkiKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tCi0gI2lmIEBHTlVMSUJfU0lHUFJPQ01BU0tACi0gIyBpZiAhQEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkdACi0gCi1AQCAtNDIzLDYgKzM3MSw2IEBAIF9HTF9XQVJOX09OX1VTRSAoc2lnYWN0aW9uLCAic2lnYWN0aW9uIGkKLSAjZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NJR05BTF9IICovCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TSUdOQUxfSCAqLwotKyNlbmRpZiAvKiBfR0xfU0lHTkFMX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NJR05BTF9IICovCi0gI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0YXQuYyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGF0LmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0YXQuYwkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3N0YXQuYwkyMDEyLTAxLTA4IDAyOjA3OjQwLjMzMDQ4NDQ1NyAtMDgwMAotQEAgLTM4LDcgKzM4LDYgQEAgb3JpZ19zdGF0IChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgImRvc25hbWUuaCIKLS0jaW5jbHVkZSAidmVyaWZ5LmgiCi0gCi0gLyogU3RvcmUgaW5mb3JtYXRpb24gYWJvdXQgTkFNRSBpbnRvIFNULiAgV29yayBhcm91bmQgYnVncyB3aXRoCi0gICAgdHJhaWxpbmcgc2xhc2hlcy4gIE1pbmd3IGhhcyBvdGhlciBidWdzIChzdWNoIGFzIHN0X2lubyBhbHdheXMKLUBAIC02NCwxMiArNjMsNiBAQCBycGxfc3RhdCAoY2hhciBjb25zdCAqbmFtZSwgc3RydWN0IHN0YXQKLSAgICAgfQotICNlbmRpZiAvKiBSRVBMQUNFX0ZVTkNfU1RBVF9GSUxFICovCi0gI2lmIFJFUExBQ0VfRlVOQ19TVEFUX0RJUgotLSAgLyogVGhlIG9ubHkga25vd24gc3lzdGVtcyB3aGVyZSBSRVBMQUNFX0ZVTkNfU1RBVF9ESVIgaXMgbmVlZGVkIGFsc28KLS0gICAgIGhhdmUgYSBjb25zdGFudCBQQVRIX01BWC4gICovCi0tIyBpZm5kZWYgUEFUSF9NQVgKLS0jICBlcnJvciAiUGxlYXNlIHBvcnQgdGhpcyByZXBsYWNlbWVudCB0byB5b3VyIHBsYXRmb3JtIgotLSMgZW5kaWYKLS0KLSAgIGlmIChyZXN1bHQgPT0gLTEgJiYgZXJybm8gPT0gRU5PRU5UKQotICAgICB7Ci0gICAgICAgLyogRHVlIHRvIG1pbmd3J3Mgb2RkaXRpZXMsIHRoZXJlIGFyZSBzb21lIGRpcmVjdG9yaWVzIChsaWtlCi1AQCAtODQsNyArNzcsNiBAQCBycGxfc3RhdCAoY2hhciBjb25zdCAqbmFtZSwgc3RydWN0IHN0YXQKLSAgICAgICBjaGFyIGZpeGVkX25hbWVbUEFUSF9NQVggKyAxXSA9IHswfTsKLSAgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChuYW1lKTsKLSAgICAgICBib29sIGNoZWNrX2RpciA9IGZhbHNlOwotLSAgICAgIHZlcmlmeSAoUEFUSF9NQVggPD0gNDA5Nik7Ci0gICAgICAgaWYgKFBBVEhfTUFYIDw9IGxlbikKLSAgICAgICAgIGVycm5vID0gRU5BTUVUT09MT05HOwotICAgICAgIGVsc2UgaWYgKGxlbikKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkZGVmLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkZGVmLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0ZGRlZi5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkZGVmLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4zNDY0ODQ0NTggLTA4MDAKLUBAIC0zOCw5ICszOCw5IEBACi0gICAgcmVtZW1iZXIgaWYgc3BlY2lhbCBpbnZvY2F0aW9uIGhhcyBldmVyIGJlZW4gdXNlZCB0byBvYnRhaW4gd2ludF90LAotICAgIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0byBjbGVhbiB1cCBOVUxMIHlldCBhZ2Fpbi4gICovCi0gCi0tIyBpZiAhKGRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1NURERFRl9IICYmIGRlZmluZWQgX0dMX1NURERFRl9XSU5UX1QpCi0rIyBpZiAhKGRlZmluZWQgX0dMX1NURERFRl9IICYmIGRlZmluZWQgX0dMX1NURERFRl9XSU5UX1QpCi0gIyAgaWZkZWYgX19uZWVkX3dpbnRfdAotLSMgICB1bmRlZiBfQEdVQVJEX1BSRUZJWEBfU1REREVGX0gKLSsjICAgdW5kZWYgX0dMX1NURERFRl9ICi0gIyAgIGRlZmluZSBfR0xfU1REREVGX1dJTlRfVAotICMgIGVuZGlmCi0gIyAgQElOQ0xVREVfTkVYVEAgQE5FWFRfU1REREVGX0hACi1AQCAtNDksMTQgKzQ5LDE0IEBACi0gI2Vsc2UKLSAvKiBOb3JtYWwgaW52b2NhdGlvbiBjb252ZW50aW9uLiAgKi8KLSAKLS0jIGlmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1REREVGX0gKLSsjIGlmbmRlZiBfR0xfU1REREVGX0gKLSAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gCi0gIyAgQElOQ0xVREVfTkVYVEAgQE5FWFRfU1REREVGX0hACi0gCi0tIyAgaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9TVERERUZfSAotLSMgICBkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX1NURERFRl9ICi0rIyAgaWZuZGVmIF9HTF9TVERERUZfSAotKyMgICBkZWZpbmUgX0dMX1NURERFRl9ICi0gCi0gLyogT24gTmV0QlNEIDUuMCwgdGhlIGRlZmluaXRpb24gb2YgTlVMTCBsYWNrcyBwcm9wZXIgcGFyZW50aGVzZXMuICAqLwotICNpZiBAUkVQTEFDRV9OVUxMQAotQEAgLTgyLDYgKzgyLDYgQEAKLSAjIGRlZmluZSB3Y2hhcl90IGludAotICNlbmRpZgotIAotLSMgIGVuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TVERERUZfSCAqLwotLSMgZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NURERFRl9IICovCi0rIyAgZW5kaWYgLyogX0dMX1NURERFRl9IICovCi0rIyBlbmRpZiAvKiBfR0xfU1REREVGX0ggKi8KLSAjZW5kaWYgLyogX19uZWVkX1hYWCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGRpbnQuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRpbnQuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkaW50LmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRpbnQuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjM1ODQ4NDQ1OCAtMDgwMAotQEAgLTIxLDcgKzIxLDcgQEAKLSAgKiA8aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL3N1c3YzeGJkL3N0ZGludC5oLmh0bWw+Ci0gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0gKLSsjaWZuZGVmIF9HTF9TVERJTlRfSAotIAotICNpZiBfX0dOVUNfXyA+PSAzCi0gQFBSQUdNQV9TWVNURU1fSEVBREVSQAotQEAgLTUyLDEzICs1MiwxMyBAQAotICAgLyogT3RoZXIgc3lzdGVtcyBtYXkgaGF2ZSBhbiBpbmNvbXBsZXRlIG9yIGJ1Z2d5IDxzdGRpbnQuaD4uCi0gICAgICBJbmNsdWRlIGl0IGJlZm9yZSA8aW50dHlwZXMuaD4sIHNpbmNlIGFueSAiI2luY2x1ZGUgPHN0ZGludC5oPiIKLSAgICAgIGluIDxpbnR0eXBlcy5oPiB3b3VsZCByZWluY2x1ZGUgdXMsIHNraXBwaW5nIG91ciBjb250ZW50cyBiZWNhdXNlCi0tICAgICBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0ggaXMgZGVmaW5lZC4KLSsgICAgIF9HTF9TVERJTlRfSCBpcyBkZWZpbmVkLgotICAgICAgVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotICMgQElOQ0xVREVfTkVYVEAgQE5FWFRfU1RESU5UX0hACi0gI2VuZGlmCi0gCi0tI2lmICEgZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0ggJiYgISBkZWZpbmVkIF9HTF9KVVNUX0lOQ0xVREVfU1lTVEVNX1NURElOVF9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0gKLSsjaWYgISBkZWZpbmVkIF9HTF9TVERJTlRfSCAmJiAhIGRlZmluZWQgX0dMX0pVU1RfSU5DTFVERV9TWVNURU1fU1RESU5UX0gKLSsjZGVmaW5lIF9HTF9TVERJTlRfSAotIAotIC8qIDxzeXMvdHlwZXMuaD4gZGVmaW5lcyBzb21lIG9mIHRoZSBzdGRpbnQuaCB0eXBlcyBhcyB3ZWxsLCBvbiBnbGliYywKLSAgICBJUklYIDYuNSwgYW5kIE9wZW5CU0QgMy44ICh2aWEgPG1hY2hpbmUvdHlwZXMuaD4pLgotQEAgLTI3MCwzNiArMjcwLDI2IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgZ2xfdWludHB0cl90OwotIC8qIE5vdGU6IFRoZXNlIHR5cGVzIGFyZSBjb21waWxlciBkZXBlbmRlbnQuIEl0IG1heSBiZSB1bndpc2UgdG8gdXNlIHRoZW0gaW4KLSAgICBwdWJsaWMgaGVhZGVyIGZpbGVzLiAqLwotIAotLS8qIElmIHRoZSBzeXN0ZW0gZGVmaW5lcyBJTlRNQVhfTUFYLCBhc3N1bWUgdGhhdCBpbnRtYXhfdCB3b3JrcywgYW5kCi0tICAgc2ltaWxhcmx5IGZvciBVSU5UTUFYX01BWCBhbmQgdWludG1heF90LiAgVGhpcyBhdm9pZHMgcHJvYmxlbXMgd2l0aAotLSAgIGFzc3VtaW5nIG9uZSB0eXBlIHdoZXJlIGFub3RoZXIgaXMgdXNlZCBieSB0aGUgc3lzdGVtLiAgKi8KLS0KLS0jaWZuZGVmIElOVE1BWF9NQVgKLS0jIHVuZGVmIElOVE1BWF9DCi0tIyB1bmRlZiBpbnRtYXhfdAotLSMgaWYgQEhBVkVfTE9OR19MT05HX0lOVEAgJiYgTE9OR19NQVggPj4gMzAgPT0gMQotKyN1bmRlZiBpbnRtYXhfdAotKyNpZiBASEFWRV9MT05HX0xPTkdfSU5UQCAmJiBMT05HX01BWCA+PiAzMCA9PSAxCi0gdHlwZWRlZiBsb25nIGxvbmcgaW50IGdsX2ludG1heF90OwotLSMgIGRlZmluZSBpbnRtYXhfdCBnbF9pbnRtYXhfdAotLSMgZWxpZiBkZWZpbmVkIEdMX0lOVDY0X1QKLS0jICBkZWZpbmUgaW50bWF4X3QgaW50NjRfdAotLSMgZWxzZQotKyMgZGVmaW5lIGludG1heF90IGdsX2ludG1heF90Ci0rI2VsaWYgZGVmaW5lZCBHTF9JTlQ2NF9UCi0rIyBkZWZpbmUgaW50bWF4X3QgaW50NjRfdAotKyNlbHNlCi0gdHlwZWRlZiBsb25nIGludCBnbF9pbnRtYXhfdDsKLS0jICBkZWZpbmUgaW50bWF4X3QgZ2xfaW50bWF4X3QKLS0jIGVuZGlmCi0rIyBkZWZpbmUgaW50bWF4X3QgZ2xfaW50bWF4X3QKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIFVJTlRNQVhfTUFYCi0tIyB1bmRlZiBVSU5UTUFYX0MKLS0jIHVuZGVmIHVpbnRtYXhfdAotLSMgaWYgQEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVEAgJiYgVUxPTkdfTUFYID4+IDMxID09IDEKLSsjdW5kZWYgdWludG1heF90Ci0rI2lmIEBIQVZFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlRAICYmIFVMT05HX01BWCA+PiAzMSA9PSAxCi0gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGdsX3VpbnRtYXhfdDsKLS0jICBkZWZpbmUgdWludG1heF90IGdsX3VpbnRtYXhfdAotLSMgZWxpZiBkZWZpbmVkIEdMX1VJTlQ2NF9UCi0tIyAgZGVmaW5lIHVpbnRtYXhfdCB1aW50NjRfdAotLSMgZWxzZQotKyMgZGVmaW5lIHVpbnRtYXhfdCBnbF91aW50bWF4X3QKLSsjZWxpZiBkZWZpbmVkIEdMX1VJTlQ2NF9UCi0rIyBkZWZpbmUgdWludG1heF90IHVpbnQ2NF90Ci0rI2Vsc2UKLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IGdsX3VpbnRtYXhfdDsKLS0jICBkZWZpbmUgdWludG1heF90IGdsX3VpbnRtYXhfdAotLSMgZW5kaWYKLSsjIGRlZmluZSB1aW50bWF4X3QgZ2xfdWludG1heF90Ci0gI2VuZGlmCi0gCi0gLyogVmVyaWZ5IHRoYXQgaW50bWF4X3QgYW5kIHVpbnRtYXhfdCBoYXZlIHRoZSBzYW1lIHNpemUuICBUb28gbXVjaCBjb2RlCi1AQCAtNDQxLDIzICs0MzEsMjEgQEAgdHlwZWRlZiBpbnQgX3ZlcmlmeV9pbnRtYXhfc2l6ZVtzaXplb2YgKAotIAotIC8qIDcuMTguMi41LiBMaW1pdHMgb2YgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciB0eXBlcyAqLwotIAotLSNpZm5kZWYgSU5UTUFYX01BWAotLSMgdW5kZWYgSU5UTUFYX01JTgotLSMgaWZkZWYgSU5UNjRfTUFYCi0tIyAgZGVmaW5lIElOVE1BWF9NSU4gIElOVDY0X01JTgotLSMgIGRlZmluZSBJTlRNQVhfTUFYICBJTlQ2NF9NQVgKLS0jIGVsc2UKLS0jICBkZWZpbmUgSU5UTUFYX01JTiAgSU5UMzJfTUlOCi0tIyAgZGVmaW5lIElOVE1BWF9NQVggIElOVDMyX01BWAotLSMgZW5kaWYKLSsjdW5kZWYgSU5UTUFYX01JTgotKyN1bmRlZiBJTlRNQVhfTUFYCi0rI2lmZGVmIElOVDY0X01BWAotKyMgZGVmaW5lIElOVE1BWF9NSU4gIElOVDY0X01JTgotKyMgZGVmaW5lIElOVE1BWF9NQVggIElOVDY0X01BWAotKyNlbHNlCi0rIyBkZWZpbmUgSU5UTUFYX01JTiAgSU5UMzJfTUlOCi0rIyBkZWZpbmUgSU5UTUFYX01BWCAgSU5UMzJfTUFYCi0gI2VuZGlmCi0gCi0tI2lmbmRlZiBVSU5UTUFYX01BWAotLSMgaWZkZWYgVUlOVDY0X01BWAotLSMgIGRlZmluZSBVSU5UTUFYX01BWCAgVUlOVDY0X01BWAotLSMgZWxzZQotLSMgIGRlZmluZSBVSU5UTUFYX01BWCAgVUlOVDMyX01BWAotLSMgZW5kaWYKLSsjdW5kZWYgVUlOVE1BWF9NQVgKLSsjaWZkZWYgVUlOVDY0X01BWAotKyMgZGVmaW5lIFVJTlRNQVhfTUFYICBVSU5UNjRfTUFYCi0rI2Vsc2UKLSsjIGRlZmluZSBVSU5UTUFYX01BWCAgVUlOVDMyX01BWAotICNlbmRpZgotIAotIC8qIDcuMTguMy4gTGltaXRzIG9mIG90aGVyIGludGVnZXIgdHlwZXMgKi8KLUBAIC01ODAsMjcgKzU2OCwyNSBAQCB0eXBlZGVmIGludCBfdmVyaWZ5X2ludG1heF9zaXplW3NpemVvZiAoCi0gCi0gLyogNy4xOC40LjIuIE1hY3JvcyBmb3IgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciBjb25zdGFudHMgKi8KLSAKLS0jaWZuZGVmIElOVE1BWF9DCi0tIyBpZiBASEFWRV9MT05HX0xPTkdfSU5UQCAmJiBMT05HX01BWCA+PiAzMCA9PSAxCi0tIyAgZGVmaW5lIElOVE1BWF9DKHgpICAgeCMjTEwKLS0jIGVsaWYgZGVmaW5lZCBHTF9JTlQ2NF9UCi0tIyAgZGVmaW5lIElOVE1BWF9DKHgpICAgSU5UNjRfQyh4KQotLSMgZWxzZQotLSMgIGRlZmluZSBJTlRNQVhfQyh4KSAgIHgjI0wKLS0jIGVuZGlmCi0rI3VuZGVmIElOVE1BWF9DCi0rI2lmIEBIQVZFX0xPTkdfTE9OR19JTlRAICYmIExPTkdfTUFYID4+IDMwID09IDEKLSsjIGRlZmluZSBJTlRNQVhfQyh4KSAgIHgjI0xMCi0rI2VsaWYgZGVmaW5lZCBHTF9JTlQ2NF9UCi0rIyBkZWZpbmUgSU5UTUFYX0MoeCkgICBJTlQ2NF9DKHgpCi0rI2Vsc2UKLSsjIGRlZmluZSBJTlRNQVhfQyh4KSAgIHgjI0wKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIFVJTlRNQVhfQwotLSMgaWYgQEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVEAgJiYgVUxPTkdfTUFYID4+IDMxID09IDEKLS0jICBkZWZpbmUgVUlOVE1BWF9DKHgpICB4IyNVTEwKLS0jIGVsaWYgZGVmaW5lZCBHTF9VSU5UNjRfVAotLSMgIGRlZmluZSBVSU5UTUFYX0MoeCkgIFVJTlQ2NF9DKHgpCi0tIyBlbHNlCi0tIyAgZGVmaW5lIFVJTlRNQVhfQyh4KSAgeCMjVUwKLS0jIGVuZGlmCi0rI3VuZGVmIFVJTlRNQVhfQwotKyNpZiBASEFWRV9VTlNJR05FRF9MT05HX0xPTkdfSU5UQCAmJiBVTE9OR19NQVggPj4gMzEgPT0gMQotKyMgZGVmaW5lIFVJTlRNQVhfQyh4KSAgeCMjVUxMCi0rI2VsaWYgZGVmaW5lZCBHTF9VSU5UNjRfVAotKyMgZGVmaW5lIFVJTlRNQVhfQyh4KSAgVUlOVDY0X0MoeCkKLSsjZWxzZQotKyMgZGVmaW5lIFVJTlRNQVhfQyh4KSAgeCMjVUwKLSAjZW5kaWYKLSAKLSAjZW5kaWYgLyogIWRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfX1NURENfQ09OU1RBTlRfTUFDUk9TICovCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TVERJTlRfSCAqLwotLSNlbmRpZiAvKiAhZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0ggJiYgIWRlZmluZWQgX0dMX0pVU1RfSU5DTFVERV9TWVNURU1fU1RESU5UX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NURElOVF9IICovCi0rI2VuZGlmIC8qICFkZWZpbmVkIF9HTF9TVERJTlRfSCAmJiAhZGVmaW5lZCBfR0xfSlVTVF9JTkNMVURFX1NZU1RFTV9TVERJTlRfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGRpby5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL3N0ZGlvLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0ZGlvLmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRpby5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuMzc4NDg0NDU5IC0wODAwCi1AQCAtMzUsNyArMzUsNyBAQAotICNlbHNlCi0gLyogTm9ybWFsIGludm9jYXRpb24gY29udmVudGlvbi4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RESU9fSAotKyNpZm5kZWYgX0dMX1NURElPX0gKLSAKLSAjZGVmaW5lIF9HTF9BTFJFQURZX0lOQ0xVRElOR19TVERJT19ICi0gCi1AQCAtNDQsOCArNDQsOCBAQAotIAotICN1bmRlZiBfR0xfQUxSRUFEWV9JTkNMVURJTkdfU1RESU9fSAotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NURElPX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TVERJT19ICi0rI2lmbmRlZiBfR0xfU1RESU9fSAotKyNkZWZpbmUgX0dMX1NURElPX0gKLSAKLSAvKiBHZXQgdmFfbGlzdC4gIE5lZWRlZCBvbiBtYW55IHN5c3RlbXMsIGluY2x1ZGluZyBnbGliYyAyLjguICAqLwotICNpbmNsdWRlIDxzdGRhcmcuaD4KLUBAIC00NjEsNiArNDYxLDI1IEBAIF9HTF9GVU5DREVDTF9TWVMgKGZzZWVrbywgaW50LCAoRklMRSAqZnAKLSBfR0xfQ1hYQUxJQVNfU1lTIChmc2Vla28sIGludCwgKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpKTsKLSAjIGVuZGlmCi0gX0dMX0NYWEFMSUFTV0FSTiAoZnNlZWtvKTsKLSsjIGlmIChAUkVQTEFDRV9GU0VFS09AIHx8ICFASEFWRV9GU0VFS09AKSAmJiAhQEdOVUxJQl9GU0VFS0AKLSsgICAvKiBQcm92aWRlIGFuIGZzZWVrIGZ1bmN0aW9uIHRoYXQgaXMgY29uc2lzdGVudCB3aXRoIGZzZWVrby4gICovCi0rICAgLyogSW4gb3JkZXIgdG8gYXZvaWQgdGhhdCBmc2VlayBnZXRzIGRlZmluZWQgYXMgYSBtYWNybyBoZXJlLCB0aGUKLSsgICAgICBkZXZlbG9wZXIgY2FuIHJlcXVlc3QgdGhlICdmc2VlaycgbW9kdWxlLiAgKi8KLSsjICBpZiAhR05VTElCX2RlZmluZWRfZnNlZWtfZnVuY3Rpb24KLSsjICAgdW5kZWYgZnNlZWsKLSsjICAgZGVmaW5lIGZzZWVrIHJwbF9mc2VlawotK3N0YXRpYyBpbmxpbmUgaW50IF9HTF9BUkdfTk9OTlVMTCAoKDEpKQotK3JwbF9mc2VlayAoRklMRSAqZnAsIGxvbmcgb2Zmc2V0LCBpbnQgd2hlbmNlKQotK3sKLSsjICAgaWYgQFJFUExBQ0VfRlNFRUtPQAotKyAgcmV0dXJuIHJwbF9mc2Vla28gKGZwLCBvZmZzZXQsIHdoZW5jZSk7Ci0rIyAgIGVsc2UKLSsgIHJldHVybiBmc2Vla28gKGZwLCBvZmZzZXQsIHdoZW5jZSk7Ci0rIyAgIGVuZGlmCi0rfQotKyMgICBkZWZpbmUgR05VTElCX2RlZmluZWRfZnNlZWtfZnVuY3Rpb24gMQotKyMgIGVuZGlmCi0rIyBlbmRpZgotICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLSAjIGRlZmluZSBfR0xfRlNFRUtfV0FSTiAvKiBDYXRlZ29yeSAxLCBhYm92ZS4gICovCi0gIyB1bmRlZiBmc2VlawotQEAgLTUyMCw2ICs1MzksMjUgQEAgX0dMX0ZVTkNERUNMX1NZUyAoZnRlbGxvLCBvZmZfdCwgKEZJTEUgKgotIF9HTF9DWFhBTElBU19TWVMgKGZ0ZWxsbywgb2ZmX3QsIChGSUxFICpmcCkpOwotICMgZW5kaWYKLSBfR0xfQ1hYQUxJQVNXQVJOIChmdGVsbG8pOwotKyMgaWYgKEBSRVBMQUNFX0ZURUxMT0AgfHwgIUBIQVZFX0ZURUxMT0ApICYmICFAR05VTElCX0ZURUxMQAotKyAgIC8qIFByb3ZpZGUgYW4gZnRlbGwgZnVuY3Rpb24gdGhhdCBpcyBjb25zaXN0ZW50IHdpdGggZnRlbGxvLiAgKi8KLSsgICAvKiBJbiBvcmRlciB0byBhdm9pZCB0aGF0IGZ0ZWxsIGdldHMgZGVmaW5lZCBhcyBhIG1hY3JvIGhlcmUsIHRoZQotKyAgICAgIGRldmVsb3BlciBjYW4gcmVxdWVzdCB0aGUgJ2Z0ZWxsJyBtb2R1bGUuICAqLwotKyMgIGlmICFHTlVMSUJfZGVmaW5lZF9mdGVsbF9mdW5jdGlvbgotKyMgICB1bmRlZiBmdGVsbAotKyMgICBkZWZpbmUgZnRlbGwgcnBsX2Z0ZWxsCi0rc3RhdGljIGlubGluZSBsb25nIF9HTF9BUkdfTk9OTlVMTCAoKDEpKQotK3JwbF9mdGVsbCAoRklMRSAqZikKLSt7Ci0rIyAgIGlmIEBSRVBMQUNFX0ZURUxMT0AKLSsgIHJldHVybiBycGxfZnRlbGxvIChmKTsKLSsjICAgZWxzZQotKyAgcmV0dXJuIGZ0ZWxsbyAoZik7Ci0rIyAgIGVuZGlmCi0rfQotKyMgICBkZWZpbmUgR05VTElCX2RlZmluZWRfZnRlbGxfZnVuY3Rpb24gMQotKyMgIGVuZGlmCi0rIyBlbmRpZgotICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLSAjIGRlZmluZSBfR0xfRlRFTExfV0FSTiAvKiBDYXRlZ29yeSAxLCBhYm92ZS4gICovCi0gIyB1bmRlZiBmdGVsbAotQEAgLTEzMDcsNiArMTM0NSw2IEBAIF9HTF9XQVJOX09OX1VTRSAodnNwcmludGYsICJ2c3ByaW50ZiBpcwotICNlbmRpZgotIAotIAotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RESU9fSCAqLwotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RESU9fSCAqLwotKyNlbmRpZiAvKiBfR0xfU1RESU9fSCAqLwotKyNlbmRpZiAvKiBfR0xfU1RESU9fSCAqLwotICNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGRsaWIuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRsaWIuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkbGliLmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRsaWIuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjM5MDQ4NDQ1OSAtMDgwMAotQEAgLTI4LDEzICsyOCwxMyBAQAotICNlbHNlCi0gLyogTm9ybWFsIGludm9jYXRpb24gY29udmVudGlvbi4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RETElCX0gKLSsjaWZuZGVmIF9HTF9TVERMSUJfSAotIAotIC8qIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjQElOQ0xVREVfTkVYVEAgQE5FWFRfU1RETElCX0hACi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RETElCX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TVERMSUJfSAotKyNpZm5kZWYgX0dMX1NURExJQl9ICi0rI2RlZmluZSBfR0xfU1RETElCX0gKLSAKLSAvKiBOZXRCU0QgNS4wIG1pcy1kZWZpbmVzIE5VTEwuICAqLwotICNpbmNsdWRlIDxzdGRkZWYuaD4KLUBAIC04OSw3ICs4OSwxMSBAQCBzdHJ1Y3QgcmFuZG9tX2RhdGEKLSAjIGluY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotIAotLS8qIFRoZSBkZWZpbml0aW9uIG9mIF9Ob3JldHVybiBpcyBjb3BpZWQgaGVyZS4gICovCi0rI2lmIDMgPD0gX19HTlVDX18gfHwgX19HTlVDX18gPT0gMiAmJiA4IDw9IF9fR05VQ19NSU5PUl9fCi0rIyBkZWZpbmUgX0dMX0FUVFJJQlVURV9OT1JFVFVSTiBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSkKLSsjZWxzZQotKyMgZGVmaW5lIF9HTF9BVFRSSUJVVEVfTk9SRVRVUk4KLSsjZW5kaWYKLSAKLSAvKiBUaGUgZGVmaW5pdGlvbnMgb2YgX0dMX0ZVTkNERUNMX1JQTCBldGMuIGFyZSBjb3BpZWQgaGVyZS4gICovCi0gCi1AQCAtMTE2LDcgKzEyMCw3IEBAIHN0cnVjdCByYW5kb21fZGF0YQotIC8qIFRlcm1pbmF0ZSB0aGUgY3VycmVudCBwcm9jZXNzIHdpdGggdGhlIGdpdmVuIHJldHVybiBjb2RlLCB3aXRob3V0IHJ1bm5pbmcKLSAgICB0aGUgJ2F0ZXhpdCcgaGFuZGxlcnMuICAqLwotICMgaWYgIUBIQVZFX19FWElUQAotLV9HTF9GVU5DREVDTF9TWVMgKF9FeGl0LCBfTm9yZXR1cm4gdm9pZCwgKGludCBzdGF0dXMpKTsKLStfR0xfRlVOQ0RFQ0xfU1lTIChfRXhpdCwgdm9pZCwgKGludCBzdGF0dXMpIF9HTF9BVFRSSUJVVEVfTk9SRVRVUk4pOwotICMgZW5kaWYKLSBfR0xfQ1hYQUxJQVNfU1lTIChfRXhpdCwgdm9pZCwgKGludCBzdGF0dXMpKTsKLSBfR0xfQ1hYQUxJQVNXQVJOIChfRXhpdCk7Ci1AQCAtNzU3LDYgKzc2MSw2IEBAIF9HTF9DWFhBTElBU1dBUk4gKHdjdG9tYik7Ci0gI2VuZGlmCi0gCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TVERMSUJfSCAqLwotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RETElCX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NURExJQl9IICovCi0rI2VuZGlmIC8qIF9HTF9TVERMSUJfSCAqLwotICNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJlcnJvci5jIGxpYmljb252LTEuMTQvc3JjbGliL3N0cmVycm9yLmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0cmVycm9yLmMJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJlcnJvci5jCTIwMTItMDEtMDggMDI6MDc6NDAuNDA2NDg0NDYxIC0wODAwCi1AQCAtMTcsNTQgKzE3LDM0MCBAQAotIAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAKLS0vKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWYgUkVQTEFDRV9TVFJFUlJPUgotKwotKyMgaW5jbHVkZSA8ZXJybm8uaD4KLSsjIGluY2x1ZGUgPHN0ZGlvLmg+Ci0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FU09DSyAvKiBuYXRpdmUgV2luZG93cyBwbGF0Zm9ybXMgKi8KLSsjICBpZiBIQVZFX1dJTlNPQ0syX0gKLSsjICAgaW5jbHVkZSA8d2luc29jazIuaD4KLSsjICBlbmRpZgotKyMgZW5kaWYKLSAKLS0jaW5jbHVkZSAiaW50cHJvcHMuaCIKLS0jaW5jbHVkZSAic3RyZXJyb3Itb3ZlcnJpZGUuaCIKLS0jaW5jbHVkZSAidmVyaWZ5LmgiCi0rIyBpbmNsdWRlICJpbnRwcm9wcy5oIgotIAotIC8qIFVzZSB0aGUgc3lzdGVtIGZ1bmN0aW9ucywgbm90IHRoZSBnbnVsaWIgb3ZlcnJpZGVzIGluIHRoaXMgZmlsZS4gICovCi0tI3VuZGVmIHNwcmludGYKLSsjIHVuZGVmIHNwcmludGYKLSsKLSsjIHVuZGVmIHN0cmVycm9yCi0rIyBpZiAhIEhBVkVfREVDTF9TVFJFUlJPUgotKyMgIGRlZmluZSBzdHJlcnJvcihuKSBOVUxMCi0rIyBlbmRpZgotIAotIGNoYXIgKgotLXN0cmVycm9yIChpbnQgbikKLS0jdW5kZWYgc3RyZXJyb3IKLStycGxfc3RyZXJyb3IgKGludCBuKQotIHsKLS0gIHN0YXRpYyBjaGFyIGJ1ZltTVEFDS0JVRl9MRU5dOwotLSAgc2l6ZV90IGxlbjsKLSsgIGNoYXIgY29uc3QgKm1zZyA9IE5VTEw7Ci0rICAvKiBUaGVzZSBlcnJvciBtZXNzYWdlcyBhcmUgdGFrZW4gZnJvbSBnbGliYy9zeXNkZXBzL2dudS9lcnJsaXN0LmMuICAqLwotKyAgc3dpdGNoIChuKQotKyAgICB7Ci0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FVFhUQlNZCi0rICAgIGNhc2UgRVRYVEJTWToKLSsgICAgICBtc2cgPSAiVGV4dCBmaWxlIGJ1c3kiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VTT0NLIC8qIG5hdGl2ZSBXaW5kb3dzIHBsYXRmb3JtcyAqLwotKyAgICAvKiBFV09VTERCTE9DSyBpcyB0aGUgc2FtZSBhcyBFQUdBSU4uICAqLwotKyAgICBjYXNlIEVJTlBST0dSRVNTOgotKyAgICAgIG1zZyA9ICJPcGVyYXRpb24gbm93IGluIHByb2dyZXNzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFQUxSRUFEWToKLSsgICAgICBtc2cgPSAiT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVOT1RTT0NLOgotKyAgICAgIG1zZyA9ICJTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVERVNUQUREUlJFUToKLSsgICAgICBtc2cgPSAiRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU1TR1NJWkU6Ci0rICAgICAgbXNnID0gIk1lc3NhZ2UgdG9vIGxvbmciOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVQUk9UT1RZUEU6Ci0rICAgICAgbXNnID0gIlByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU5PUFJPVE9PUFQ6Ci0rICAgICAgbXNnID0gIlByb3RvY29sIG5vdCBhdmFpbGFibGUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVQUk9UT05PU1VQUE9SVDoKLSsgICAgICBtc2cgPSAiUHJvdG9jb2wgbm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVNPQ0tUTk9TVVBQT1JUOgotKyAgICAgIG1zZyA9ICJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFT1BOT1RTVVBQOgotKyAgICAgIG1zZyA9ICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVBGTk9TVVBQT1JUOgotKyAgICAgIG1zZyA9ICJQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUFGTk9TVVBQT1JUOgotKyAgICAgIG1zZyA9ICJBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFQUREUklOVVNFOgotKyAgICAgIG1zZyA9ICJBZGRyZXNzIGFscmVhZHkgaW4gdXNlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFQUREUk5PVEFWQUlMOgotKyAgICAgIG1zZyA9ICJDYW5ub3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTkVURE9XTjoKLSsgICAgICBtc2cgPSAiTmV0d29yayBpcyBkb3duIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTkVUVU5SRUFDSDoKLSsgICAgICBtc2cgPSAiTmV0d29yayBpcyB1bnJlYWNoYWJsZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU5FVFJFU0VUOgotKyAgICAgIG1zZyA9ICJOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlvbiBvbiByZXNldCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUNPTk5BQk9SVEVEOgotKyAgICAgIG1zZyA9ICJTb2Z0d2FyZSBjYXVzZWQgY29ubmVjdGlvbiBhYm9ydCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUNPTk5SRVNFVDoKLSsgICAgICBtc2cgPSAiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTk9CVUZTOgotKyAgICAgIG1zZyA9ICJObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFSVNDT05OOgotKyAgICAgIG1zZyA9ICJUcmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVOT1RDT05OOgotKyAgICAgIG1zZyA9ICJUcmFuc3BvcnQgZW5kcG9pbnQgaXMgbm90IGNvbm5lY3RlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVNIVVRET1dOOgotKyAgICAgIG1zZyA9ICJDYW5ub3Qgc2VuZCBhZnRlciB0cmFuc3BvcnQgZW5kcG9pbnQgc2h1dGRvd24iOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVUT09NQU5ZUkVGUzoKLSsgICAgICBtc2cgPSAiVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fubm90IHNwbGljZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVRJTUVET1VUOgotKyAgICAgIG1zZyA9ICJDb25uZWN0aW9uIHRpbWVkIG91dCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUNPTk5SRUZVU0VEOgotKyAgICAgIG1zZyA9ICJDb25uZWN0aW9uIHJlZnVzZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVMT09QOgotKyAgICAgIG1zZyA9ICJUb28gbWFueSBsZXZlbHMgb2Ygc3ltYm9saWMgbGlua3MiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVIT1NURE9XTjoKLSsgICAgICBtc2cgPSAiSG9zdCBpcyBkb3duIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFSE9TVFVOUkVBQ0g6Ci0rICAgICAgbXNnID0gIk5vIHJvdXRlIHRvIGhvc3QiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVQUk9DTElNOgotKyAgICAgIG1zZyA9ICJUb28gbWFueSBwcm9jZXNzZXMiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVVU0VSUzoKLSsgICAgICBtc2cgPSAiVG9vIG1hbnkgdXNlcnMiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVEUVVPVDoKLSsgICAgICBtc2cgPSAiRGlzayBxdW90YSBleGNlZWRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRVNUQUxFOgotKyAgICAgIG1zZyA9ICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVSRU1PVEU6Ci0rICAgICAgbXNnID0gIk9iamVjdCBpcyByZW1vdGUiOwotKyAgICAgIGJyZWFrOwotKyMgIGlmIEhBVkVfV0lOU09DSzJfSAotKyAgICAvKiBXU0FfSU5WQUxJRF9IQU5ETEUgbWFwcyB0byBFQkFERiAqLwotKyAgICAvKiBXU0FfTk9UX0VOT1VHSF9NRU1PUlkgbWFwcyB0byBFTk9NRU0gKi8KLSsgICAgLyogV1NBX0lOVkFMSURfUEFSQU1FVEVSIG1hcHMgdG8gRUlOVkFMICovCi0rICAgIGNhc2UgV1NBX09QRVJBVElPTl9BQk9SVEVEOgotKyAgICAgIG1zZyA9ICJPdmVybGFwcGVkIG9wZXJhdGlvbiBhYm9ydGVkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FfSU9fSU5DT01QTEVURToKLSsgICAgICBtc2cgPSAiT3ZlcmxhcHBlZCBJL08gZXZlbnQgb2JqZWN0IG5vdCBpbiBzaWduYWxlZCBzdGF0ZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBX0lPX1BFTkRJTkc6Ci0rICAgICAgbXNnID0gIk92ZXJsYXBwZWQgb3BlcmF0aW9ucyB3aWxsIGNvbXBsZXRlIGxhdGVyIjsKLSsgICAgICBicmVhazsKLSsgICAgLyogV1NBRUlOVFIgbWFwcyB0byBFSU5UUiAqLwotKyAgICAvKiBXU0FFQkFERiBtYXBzIHRvIEVCQURGICovCi0rICAgIC8qIFdTQUVBQ0NFUyBtYXBzIHRvIEVBQ0NFUyAqLwotKyAgICAvKiBXU0FFRkFVTFQgbWFwcyB0byBFRkFVTFQgKi8KLSsgICAgLyogV1NBRUlOVkFMIG1hcHMgdG8gRUlOVkFMICovCi0rICAgIC8qIFdTQUVNRklMRSBtYXBzIHRvIEVNRklMRSAqLwotKyAgICAvKiBXU0FFV09VTERCTE9DSyBtYXBzIHRvIEVXT1VMREJMT0NLICovCi0rICAgIC8qIFdTQUVJTlBST0dSRVNTIGlzIEVJTlBST0dSRVNTICovCi0rICAgIC8qIFdTQUVBTFJFQURZIGlzIEVBTFJFQURZICovCi0rICAgIC8qIFdTQUVOT1RTT0NLIGlzIEVOT1RTT0NLICovCi0rICAgIC8qIFdTQUVERVNUQUREUlJFUSBpcyBFREVTVEFERFJSRVEgKi8KLSsgICAgLyogV1NBRU1TR1NJWkUgaXMgRU1TR1NJWkUgKi8KLSsgICAgLyogV1NBRVBST1RPVFlQRSBpcyBFUFJPVE9UWVBFICovCi0rICAgIC8qIFdTQUVOT1BST1RPT1BUIGlzIEVOT1BST1RPT1BUICovCi0rICAgIC8qIFdTQUVQUk9UT05PU1VQUE9SVCBpcyBFUFJPVE9OT1NVUFBPUlQgKi8KLSsgICAgLyogV1NBRVNPQ0tUTk9TVVBQT1JUIGlzIEVTT0NLVE5PU1VQUE9SVCAqLwotKyAgICAvKiBXU0FFT1BOT1RTVVBQIGlzIEVPUE5PVFNVUFAgKi8KLSsgICAgLyogV1NBRVBGTk9TVVBQT1JUIGlzIEVQRk5PU1VQUE9SVCAqLwotKyAgICAvKiBXU0FFQUZOT1NVUFBPUlQgaXMgRUFGTk9TVVBQT1JUICovCi0rICAgIC8qIFdTQUVBRERSSU5VU0UgaXMgRUFERFJJTlVTRSAqLwotKyAgICAvKiBXU0FFQUREUk5PVEFWQUlMIGlzIEVBRERSTk9UQVZBSUwgKi8KLSsgICAgLyogV1NBRU5FVERPV04gaXMgRU5FVERPV04gKi8KLSsgICAgLyogV1NBRU5FVFVOUkVBQ0ggaXMgRU5FVFVOUkVBQ0ggKi8KLSsgICAgLyogV1NBRU5FVFJFU0VUIGlzIEVORVRSRVNFVCAqLwotKyAgICAvKiBXU0FFQ09OTkFCT1JURUQgaXMgRUNPTk5BQk9SVEVEICovCi0rICAgIC8qIFdTQUVDT05OUkVTRVQgaXMgRUNPTk5SRVNFVCAqLwotKyAgICAvKiBXU0FFTk9CVUZTIGlzIEVOT0JVRlMgKi8KLSsgICAgLyogV1NBRUlTQ09OTiBpcyBFSVNDT05OICovCi0rICAgIC8qIFdTQUVOT1RDT05OIGlzIEVOT1RDT05OICovCi0rICAgIC8qIFdTQUVTSFVURE9XTiBpcyBFU0hVVERPV04gKi8KLSsgICAgLyogV1NBRVRPT01BTllSRUZTIGlzIEVUT09NQU5ZUkVGUyAqLwotKyAgICAvKiBXU0FFVElNRURPVVQgaXMgRVRJTUVET1VUICovCi0rICAgIC8qIFdTQUVDT05OUkVGVVNFRCBpcyBFQ09OTlJFRlVTRUQgKi8KLSsgICAgLyogV1NBRUxPT1AgaXMgRUxPT1AgKi8KLSsgICAgLyogV1NBRU5BTUVUT09MT05HIG1hcHMgdG8gRU5BTUVUT09MT05HICovCi0rICAgIC8qIFdTQUVIT1NURE9XTiBpcyBFSE9TVERPV04gKi8KLSsgICAgLyogV1NBRUhPU1RVTlJFQUNIIGlzIEVIT1NUVU5SRUFDSCAqLwotKyAgICAvKiBXU0FFTk9URU1QVFkgbWFwcyB0byBFTk9URU1QVFkgKi8KLSsgICAgLyogV1NBRVBST0NMSU0gaXMgRVBST0NMSU0gKi8KLSsgICAgLyogV1NBRVVTRVJTIGlzIEVVU0VSUyAqLwotKyAgICAvKiBXU0FFRFFVT1QgaXMgRURRVU9UICovCi0rICAgIC8qIFdTQUVTVEFMRSBpcyBFU1RBTEUgKi8KLSsgICAgLyogV1NBRVJFTU9URSBpcyBFUkVNT1RFICovCi0rICAgIGNhc2UgV1NBU1lTTk9UUkVBRFk6Ci0rICAgICAgbXNnID0gIk5ldHdvcmsgc3Vic3lzdGVtIGlzIHVuYXZhaWxhYmxlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FWRVJOT1RTVVBQT1JURUQ6Ci0rICAgICAgbXNnID0gIldpbnNvY2suZGxsIHZlcnNpb24gb3V0IG9mIHJhbmdlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FOT1RJTklUSUFMSVNFRDoKLSsgICAgICBtc2cgPSAiU3VjY2Vzc2Z1bCBXU0FTdGFydHVwIG5vdCB5ZXQgcGVyZm9ybWVkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FFRElTQ09OOgotKyAgICAgIG1zZyA9ICJHcmFjZWZ1bCBzaHV0ZG93biBpbiBwcm9ncmVzcyI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBRU5PTU9SRTogY2FzZSBXU0FfRV9OT19NT1JFOgotKyAgICAgIG1zZyA9ICJObyBtb3JlIHJlc3VsdHMiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUVDQU5DRUxMRUQ6IGNhc2UgV1NBX0VfQ0FOQ0VMTEVEOgotKyAgICAgIG1zZyA9ICJDYWxsIHdhcyBjYW5jZWxlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBRUlOVkFMSURQUk9DVEFCTEU6Ci0rICAgICAgbXNnID0gIlByb2NlZHVyZSBjYWxsIHRhYmxlIGlzIGludmFsaWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUVJTlZBTElEUFJPVklERVI6Ci0rICAgICAgbXNnID0gIlNlcnZpY2UgcHJvdmlkZXIgaXMgaW52YWxpZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBRVBST1ZJREVSRkFJTEVESU5JVDoKLSsgICAgICBtc2cgPSAiU2VydmljZSBwcm92aWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBU1lTQ0FMTEZBSUxVUkU6Ci0rICAgICAgbXNnID0gIlN5c3RlbSBjYWxsIGZhaWx1cmUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQVNFUlZJQ0VfTk9UX0ZPVU5EOgotKyAgICAgIG1zZyA9ICJTZXJ2aWNlIG5vdCBmb3VuZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBVFlQRV9OT1RfRk9VTkQ6Ci0rICAgICAgbXNnID0gIkNsYXNzIHR5cGUgbm90IGZvdW5kIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FFUkVGVVNFRDoKLSsgICAgICBtc2cgPSAiRGF0YWJhc2UgcXVlcnkgd2FzIHJlZnVzZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUhPU1RfTk9UX0ZPVU5EOgotKyAgICAgIG1zZyA9ICJIb3N0IG5vdCBmb3VuZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBVFJZX0FHQUlOOgotKyAgICAgIG1zZyA9ICJOb25hdXRob3JpdGF0aXZlIGhvc3Qgbm90IGZvdW5kIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FOT19SRUNPVkVSWToKLSsgICAgICBtc2cgPSAiTm9ucmVjb3ZlcmFibGUgZXJyb3IiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQU5PX0RBVEE6Ci0rICAgICAgbXNnID0gIlZhbGlkIG5hbWUsIG5vIGRhdGEgcmVjb3JkIG9mIHJlcXVlc3RlZCB0eXBlIjsKLSsgICAgICBicmVhazsKLSsgICAgLyogV1NBX1FPU18qIG9taXR0ZWQgKi8KLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VOT01TRwotKyAgICBjYXNlIEVOT01TRzoKLSsgICAgICBtc2cgPSAiTm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VJRFJNCi0rICAgIGNhc2UgRUlEUk06Ci0rICAgICAgbXNnID0gIklkZW50aWZpZXIgcmVtb3ZlZCI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRU5PTElOSwotKyAgICBjYXNlIEVOT0xJTks6Ci0rICAgICAgbXNnID0gIkxpbmsgaGFzIGJlZW4gc2V2ZXJlZCI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRVBST1RPCi0rICAgIGNhc2UgRVBST1RPOgotKyAgICAgIG1zZyA9ICJQcm90b2NvbCBlcnJvciI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRU1VTFRJSE9QCi0rICAgIGNhc2UgRU1VTFRJSE9QOgotKyAgICAgIG1zZyA9ICJNdWx0aWhvcCBhdHRlbXB0ZWQiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VCQURNU0cKLSsgICAgY2FzZSBFQkFETVNHOgotKyAgICAgIG1zZyA9ICJCYWQgbWVzc2FnZSI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRU9WRVJGTE9XCi0rICAgIGNhc2UgRU9WRVJGTE9XOgotKyAgICAgIG1zZyA9ICJWYWx1ZSB0b28gbGFyZ2UgZm9yIGRlZmluZWQgZGF0YSB0eXBlIjsKLSsgICAgICBicmVhazsKLSsjIGVuZGlmCi0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FTk9UU1VQCi0rICAgIGNhc2UgRU5PVFNVUDoKLSsgICAgICBtc2cgPSAiTm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRVNUQUxFCi0rICAgIGNhc2UgRVNUQUxFOgotKyAgICAgIG1zZyA9ICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VEUVVPVAotKyAgICBjYXNlIEVEUVVPVDoKLSsgICAgICBtc2cgPSAiRGlzayBxdW90YSBleGNlZWRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRUNBTkNFTEVECi0rICAgIGNhc2UgRUNBTkNFTEVEOgotKyAgICAgIG1zZyA9ICJPcGVyYXRpb24gY2FuY2VsZWQiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsgICAgfQotIAotLSAgLyogQ2FzdCBhd2F5IGNvbnN0LCBkdWUgdG8gdGhlIGhpc3RvcmljYWwgc2lnbmF0dXJlIG9mIHN0cmVycm9yOwotLSAgICAgY2FsbGVycyBzaG91bGQgbm90IGJlIG1vZGlmeWluZyB0aGUgc3RyaW5nLiAgKi8KLS0gIGNvbnN0IGNoYXIgKm1zZyA9IHN0cmVycm9yX292ZXJyaWRlIChuKTsKLSAgIGlmIChtc2cpCi0gICAgIHJldHVybiAoY2hhciAqKSBtc2c7Ci0gCi0tICBtc2cgPSBzdHJlcnJvciAobik7Ci0rICB7Ci0rICAgIGNoYXIgKnJlc3VsdCA9IHN0cmVycm9yIChuKTsKLSAKLS0gIC8qIE91ciBzdHJlcnJvcl9yIGltcGxlbWVudGF0aW9uIG1pZ2h0IHVzZSB0aGUgc3lzdGVtJ3Mgc3RyZXJyb3IKLS0gICAgIGJ1ZmZlciwgc28gYWxsIG90aGVyIGNsaWVudHMgb2Ygc3RyZXJyb3IgaGF2ZSB0byBzZWUgdGhlIGVycm9yCi0tICAgICBjb3BpZWQgaW50byBhIGJ1ZmZlciB0aGF0IHdlIG1hbmFnZS4gIFRoaXMgaXMgbm90IHRocmVhZC1zYWZlLAotLSAgICAgZXZlbiBpZiB0aGUgc3lzdGVtIHN0cmVycm9yIGlzLCBidXQgcG9ydGFibGUgcHJvZ3JhbXMgc2hvdWxkbid0Ci0tICAgICBiZSB1c2luZyBzdHJlcnJvciBpZiB0aGV5IGNhcmUgYWJvdXQgdGhyZWFkLXNhZmV0eS4gICovCi0tICBpZiAoIW1zZyB8fCAhKm1zZykKLS0gICAgewotLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGZtdFtdID0gIlVua25vd24gZXJyb3IgJWQiOwotLSAgICAgIHZlcmlmeSAoc2l6ZW9mIGJ1ZiA+PSBzaXplb2YgKGZtdCkgKyBJTlRfU1RSTEVOX0JPVU5EIChuKSk7Ci0tICAgICAgc3ByaW50ZiAoYnVmLCBmbXQsIG4pOwotLSAgICAgIGVycm5vID0gRUlOVkFMOwotLSAgICAgIHJldHVybiBidWY7Ci0tICAgIH0KLSsgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IHJlc3VsdFswXSA9PSAnXDAnKQotKyAgICAgIHsKLSsgICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGZtdFtdID0gIlVua25vd24gZXJyb3IgKCVkKSI7Ci0rICAgICAgICBzdGF0aWMgY2hhciBtc2dfYnVmW3NpemVvZiBmbXQgKyBJTlRfU1RSTEVOX0JPVU5EIChuKV07Ci0rICAgICAgICBzcHJpbnRmIChtc2dfYnVmLCBmbXQsIG4pOwotKyAgICAgICAgcmV0dXJuIG1zZ19idWY7Ci0rICAgICAgfQotIAotLSAgLyogRml4IFNUQUNLQlVGX0xFTiBpZiB0aGlzIGV2ZXIgYWJvcnRzLiAgKi8KLS0gIGxlbiA9IHN0cmxlbiAobXNnKTsKLS0gIGlmIChzaXplb2YgYnVmIDw9IGxlbikKLS0gICAgYWJvcnQgKCk7Ci0tCi0tICByZXR1cm4gbWVtY3B5IChidWYsIG1zZywgbGVuICsgMSk7Ci0rICAgIHJldHVybiByZXN1bHQ7Ci0rICB9Ci0gfQotKwotKyNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5jIGxpYmljb252LTEuMTQvc3JjbGliL3N0cmVycm9yLW92ZXJyaWRlLmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0cmVycm9yLW92ZXJyaWRlLmMJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi1AQCAtMSwyNzkgKzAsMCBAQAotLS8qIHN0cmVycm9yLW92ZXJyaWRlLmMgLS0tIFBPU0lYIGNvbXBhdGlibGUgc3lzdGVtIGVycm9yIHJvdXRpbmUKLS0KLS0gICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0tCi0tLyogV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4sIDIwMTAuICAqLwotLQotLSNpbmNsdWRlIDxjb25maWcuaD4KLS0KLS0jaW5jbHVkZSAic3RyZXJyb3Itb3ZlcnJpZGUuaCIKLS0KLS0jaW5jbHVkZSA8ZXJybm8uaD4KLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRVNPQ0sgLyogbmF0aXZlIFdpbmRvd3MgcGxhdGZvcm1zICovCi0tIyBpZiBIQVZFX1dJTlNPQ0syX0gKLS0jICBpbmNsdWRlIDx3aW5zb2NrMi5oPgotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0vKiBJZiBFUlJOVU0gbWFwcyB0byBhbiBlcnJubyB2YWx1ZSBkZWZpbmVkIGJ5IGdudWxpYiwgcmV0dXJuIGEgc3RyaW5nCi0tICAgZGVzY3JpYmluZyB0aGUgZXJyb3IuICBPdGhlcndpc2UgcmV0dXJuIE5VTEwuICAqLwotLWNvbnN0IGNoYXIgKgotLXN0cmVycm9yX292ZXJyaWRlIChpbnQgZXJybnVtKQotLXsKLS0gIC8qIFRoZXNlIGVycm9yIG1lc3NhZ2VzIGFyZSB0YWtlbiBmcm9tIGdsaWJjL3N5c2RlcHMvZ251L2Vycmxpc3QuYy4gICovCi0tICBzd2l0Y2ggKGVycm51bSkKLS0gICAgewotLSNpZiBSRVBMQUNFX1NUUkVSUk9SXzAKLS0gICAgY2FzZSAwOgotLSAgICAgIHJldHVybiAiU3VjY2VzcyI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VUWFRCU1kKLS0gICAgY2FzZSBFVFhUQlNZOgotLSAgICAgIHJldHVybiAiVGV4dCBmaWxlIGJ1c3kiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FU09DSyAvKiBuYXRpdmUgV2luZG93cyBwbGF0Zm9ybXMgKi8KLS0gICAgICAvKiBFV09VTERCTE9DSyBpcyB0aGUgc2FtZSBhcyBFQUdBSU4uICAqLwotLSAgICBjYXNlIEVJTlBST0dSRVNTOgotLSAgICAgIHJldHVybiAiT3BlcmF0aW9uIG5vdyBpbiBwcm9ncmVzcyI7Ci0tICAgIGNhc2UgRUFMUkVBRFk6Ci0tICAgICAgcmV0dXJuICJPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyI7Ci0tICAgIGNhc2UgRU5PVFNPQ0s6Ci0tICAgICAgcmV0dXJuICJTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQiOwotLSAgICBjYXNlIEVERVNUQUREUlJFUToKLS0gICAgICByZXR1cm4gIkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiOwotLSAgICBjYXNlIEVNU0dTSVpFOgotLSAgICAgIHJldHVybiAiTWVzc2FnZSB0b28gbG9uZyI7Ci0tICAgIGNhc2UgRVBST1RPVFlQRToKLS0gICAgICByZXR1cm4gIlByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCI7Ci0tICAgIGNhc2UgRU5PUFJPVE9PUFQ6Ci0tICAgICAgcmV0dXJuICJQcm90b2NvbCBub3QgYXZhaWxhYmxlIjsKLS0gICAgY2FzZSBFUFJPVE9OT1NVUFBPUlQ6Ci0tICAgICAgcmV0dXJuICJQcm90b2NvbCBub3Qgc3VwcG9ydGVkIjsKLS0gICAgY2FzZSBFU09DS1ROT1NVUFBPUlQ6Ci0tICAgICAgcmV0dXJuICJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIjsKLS0gICAgY2FzZSBFT1BOT1RTVVBQOgotLSAgICAgIHJldHVybiAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiOwotLSAgICBjYXNlIEVQRk5PU1VQUE9SVDoKLS0gICAgICByZXR1cm4gIlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIjsKLS0gICAgY2FzZSBFQUZOT1NVUFBPUlQ6Ci0tICAgICAgcmV0dXJuICJBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sIjsKLS0gICAgY2FzZSBFQUREUklOVVNFOgotLSAgICAgIHJldHVybiAiQWRkcmVzcyBhbHJlYWR5IGluIHVzZSI7Ci0tICAgIGNhc2UgRUFERFJOT1RBVkFJTDoKLS0gICAgICByZXR1cm4gIkNhbm5vdCBhc3NpZ24gcmVxdWVzdGVkIGFkZHJlc3MiOwotLSAgICBjYXNlIEVORVRET1dOOgotLSAgICAgIHJldHVybiAiTmV0d29yayBpcyBkb3duIjsKLS0gICAgY2FzZSBFTkVUVU5SRUFDSDoKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgaXMgdW5yZWFjaGFibGUiOwotLSAgICBjYXNlIEVORVRSRVNFVDoKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgZHJvcHBlZCBjb25uZWN0aW9uIG9uIHJlc2V0IjsKLS0gICAgY2FzZSBFQ09OTkFCT1JURUQ6Ci0tICAgICAgcmV0dXJuICJTb2Z0d2FyZSBjYXVzZWQgY29ubmVjdGlvbiBhYm9ydCI7Ci0tICAgIGNhc2UgRUNPTk5SRVNFVDoKLS0gICAgICByZXR1cm4gIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlciI7Ci0tICAgIGNhc2UgRU5PQlVGUzoKLS0gICAgICByZXR1cm4gIk5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUiOwotLSAgICBjYXNlIEVJU0NPTk46Ci0tICAgICAgcmV0dXJuICJUcmFuc3BvcnQgZW5kcG9pbnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiOwotLSAgICBjYXNlIEVOT1RDT05OOgotLSAgICAgIHJldHVybiAiVHJhbnNwb3J0IGVuZHBvaW50IGlzIG5vdCBjb25uZWN0ZWQiOwotLSAgICBjYXNlIEVTSFVURE9XTjoKLS0gICAgICByZXR1cm4gIkNhbm5vdCBzZW5kIGFmdGVyIHRyYW5zcG9ydCBlbmRwb2ludCBzaHV0ZG93biI7Ci0tICAgIGNhc2UgRVRPT01BTllSRUZTOgotLSAgICAgIHJldHVybiAiVG9vIG1hbnkgcmVmZXJlbmNlczogY2Fubm90IHNwbGljZSI7Ci0tICAgIGNhc2UgRVRJTUVET1VUOgotLSAgICAgIHJldHVybiAiQ29ubmVjdGlvbiB0aW1lZCBvdXQiOwotLSAgICBjYXNlIEVDT05OUkVGVVNFRDoKLS0gICAgICByZXR1cm4gIkNvbm5lY3Rpb24gcmVmdXNlZCI7Ci0tICAgIGNhc2UgRUxPT1A6Ci0tICAgICAgcmV0dXJuICJUb28gbWFueSBsZXZlbHMgb2Ygc3ltYm9saWMgbGlua3MiOwotLSAgICBjYXNlIEVIT1NURE9XTjoKLS0gICAgICByZXR1cm4gIkhvc3QgaXMgZG93biI7Ci0tICAgIGNhc2UgRUhPU1RVTlJFQUNIOgotLSAgICAgIHJldHVybiAiTm8gcm91dGUgdG8gaG9zdCI7Ci0tICAgIGNhc2UgRVBST0NMSU06Ci0tICAgICAgcmV0dXJuICJUb28gbWFueSBwcm9jZXNzZXMiOwotLSAgICBjYXNlIEVVU0VSUzoKLS0gICAgICByZXR1cm4gIlRvbyBtYW55IHVzZXJzIjsKLS0gICAgY2FzZSBFRFFVT1Q6Ci0tICAgICAgcmV0dXJuICJEaXNrIHF1b3RhIGV4Y2VlZGVkIjsKLS0gICAgY2FzZSBFU1RBTEU6Ci0tICAgICAgcmV0dXJuICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiOwotLSAgICBjYXNlIEVSRU1PVEU6Ci0tICAgICAgcmV0dXJuICJPYmplY3QgaXMgcmVtb3RlIjsKLS0jIGlmIEhBVkVfV0lOU09DSzJfSAotLSAgICAgIC8qIFdTQV9JTlZBTElEX0hBTkRMRSBtYXBzIHRvIEVCQURGICovCi0tICAgICAgLyogV1NBX05PVF9FTk9VR0hfTUVNT1JZIG1hcHMgdG8gRU5PTUVNICovCi0tICAgICAgLyogV1NBX0lOVkFMSURfUEFSQU1FVEVSIG1hcHMgdG8gRUlOVkFMICovCi0tICAgIGNhc2UgV1NBX09QRVJBVElPTl9BQk9SVEVEOgotLSAgICAgIHJldHVybiAiT3ZlcmxhcHBlZCBvcGVyYXRpb24gYWJvcnRlZCI7Ci0tICAgIGNhc2UgV1NBX0lPX0lOQ09NUExFVEU6Ci0tICAgICAgcmV0dXJuICJPdmVybGFwcGVkIEkvTyBldmVudCBvYmplY3Qgbm90IGluIHNpZ25hbGVkIHN0YXRlIjsKLS0gICAgY2FzZSBXU0FfSU9fUEVORElORzoKLS0gICAgICByZXR1cm4gIk92ZXJsYXBwZWQgb3BlcmF0aW9ucyB3aWxsIGNvbXBsZXRlIGxhdGVyIjsKLS0gICAgICAvKiBXU0FFSU5UUiBtYXBzIHRvIEVJTlRSICovCi0tICAgICAgLyogV1NBRUJBREYgbWFwcyB0byBFQkFERiAqLwotLSAgICAgIC8qIFdTQUVBQ0NFUyBtYXBzIHRvIEVBQ0NFUyAqLwotLSAgICAgIC8qIFdTQUVGQVVMVCBtYXBzIHRvIEVGQVVMVCAqLwotLSAgICAgIC8qIFdTQUVJTlZBTCBtYXBzIHRvIEVJTlZBTCAqLwotLSAgICAgIC8qIFdTQUVNRklMRSBtYXBzIHRvIEVNRklMRSAqLwotLSAgICAgIC8qIFdTQUVXT1VMREJMT0NLIG1hcHMgdG8gRVdPVUxEQkxPQ0sgKi8KLS0gICAgICAvKiBXU0FFSU5QUk9HUkVTUyBpcyBFSU5QUk9HUkVTUyAqLwotLSAgICAgIC8qIFdTQUVBTFJFQURZIGlzIEVBTFJFQURZICovCi0tICAgICAgLyogV1NBRU5PVFNPQ0sgaXMgRU5PVFNPQ0sgKi8KLS0gICAgICAvKiBXU0FFREVTVEFERFJSRVEgaXMgRURFU1RBRERSUkVRICovCi0tICAgICAgLyogV1NBRU1TR1NJWkUgaXMgRU1TR1NJWkUgKi8KLS0gICAgICAvKiBXU0FFUFJPVE9UWVBFIGlzIEVQUk9UT1RZUEUgKi8KLS0gICAgICAvKiBXU0FFTk9QUk9UT09QVCBpcyBFTk9QUk9UT09QVCAqLwotLSAgICAgIC8qIFdTQUVQUk9UT05PU1VQUE9SVCBpcyBFUFJPVE9OT1NVUFBPUlQgKi8KLS0gICAgICAvKiBXU0FFU09DS1ROT1NVUFBPUlQgaXMgRVNPQ0tUTk9TVVBQT1JUICovCi0tICAgICAgLyogV1NBRU9QTk9UU1VQUCBpcyBFT1BOT1RTVVBQICovCi0tICAgICAgLyogV1NBRVBGTk9TVVBQT1JUIGlzIEVQRk5PU1VQUE9SVCAqLwotLSAgICAgIC8qIFdTQUVBRk5PU1VQUE9SVCBpcyBFQUZOT1NVUFBPUlQgKi8KLS0gICAgICAvKiBXU0FFQUREUklOVVNFIGlzIEVBRERSSU5VU0UgKi8KLS0gICAgICAvKiBXU0FFQUREUk5PVEFWQUlMIGlzIEVBRERSTk9UQVZBSUwgKi8KLS0gICAgICAvKiBXU0FFTkVURE9XTiBpcyBFTkVURE9XTiAqLwotLSAgICAgIC8qIFdTQUVORVRVTlJFQUNIIGlzIEVORVRVTlJFQUNIICovCi0tICAgICAgLyogV1NBRU5FVFJFU0VUIGlzIEVORVRSRVNFVCAqLwotLSAgICAgIC8qIFdTQUVDT05OQUJPUlRFRCBpcyBFQ09OTkFCT1JURUQgKi8KLS0gICAgICAvKiBXU0FFQ09OTlJFU0VUIGlzIEVDT05OUkVTRVQgKi8KLS0gICAgICAvKiBXU0FFTk9CVUZTIGlzIEVOT0JVRlMgKi8KLS0gICAgICAvKiBXU0FFSVNDT05OIGlzIEVJU0NPTk4gKi8KLS0gICAgICAvKiBXU0FFTk9UQ09OTiBpcyBFTk9UQ09OTiAqLwotLSAgICAgIC8qIFdTQUVTSFVURE9XTiBpcyBFU0hVVERPV04gKi8KLS0gICAgICAvKiBXU0FFVE9PTUFOWVJFRlMgaXMgRVRPT01BTllSRUZTICovCi0tICAgICAgLyogV1NBRVRJTUVET1VUIGlzIEVUSU1FRE9VVCAqLwotLSAgICAgIC8qIFdTQUVDT05OUkVGVVNFRCBpcyBFQ09OTlJFRlVTRUQgKi8KLS0gICAgICAvKiBXU0FFTE9PUCBpcyBFTE9PUCAqLwotLSAgICAgIC8qIFdTQUVOQU1FVE9PTE9ORyBtYXBzIHRvIEVOQU1FVE9PTE9ORyAqLwotLSAgICAgIC8qIFdTQUVIT1NURE9XTiBpcyBFSE9TVERPV04gKi8KLS0gICAgICAvKiBXU0FFSE9TVFVOUkVBQ0ggaXMgRUhPU1RVTlJFQUNIICovCi0tICAgICAgLyogV1NBRU5PVEVNUFRZIG1hcHMgdG8gRU5PVEVNUFRZICovCi0tICAgICAgLyogV1NBRVBST0NMSU0gaXMgRVBST0NMSU0gKi8KLS0gICAgICAvKiBXU0FFVVNFUlMgaXMgRVVTRVJTICovCi0tICAgICAgLyogV1NBRURRVU9UIGlzIEVEUVVPVCAqLwotLSAgICAgIC8qIFdTQUVTVEFMRSBpcyBFU1RBTEUgKi8KLS0gICAgICAvKiBXU0FFUkVNT1RFIGlzIEVSRU1PVEUgKi8KLS0gICAgY2FzZSBXU0FTWVNOT1RSRUFEWToKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgc3Vic3lzdGVtIGlzIHVuYXZhaWxhYmxlIjsKLS0gICAgY2FzZSBXU0FWRVJOT1RTVVBQT1JURUQ6Ci0tICAgICAgcmV0dXJuICJXaW5zb2NrLmRsbCB2ZXJzaW9uIG91dCBvZiByYW5nZSI7Ci0tICAgIGNhc2UgV1NBTk9USU5JVElBTElTRUQ6Ci0tICAgICAgcmV0dXJuICJTdWNjZXNzZnVsIFdTQVN0YXJ0dXAgbm90IHlldCBwZXJmb3JtZWQiOwotLSAgICBjYXNlIFdTQUVESVNDT046Ci0tICAgICAgcmV0dXJuICJHcmFjZWZ1bCBzaHV0ZG93biBpbiBwcm9ncmVzcyI7Ci0tICAgIGNhc2UgV1NBRU5PTU9SRTogY2FzZSBXU0FfRV9OT19NT1JFOgotLSAgICAgIHJldHVybiAiTm8gbW9yZSByZXN1bHRzIjsKLS0gICAgY2FzZSBXU0FFQ0FOQ0VMTEVEOiBjYXNlIFdTQV9FX0NBTkNFTExFRDoKLS0gICAgICByZXR1cm4gIkNhbGwgd2FzIGNhbmNlbGVkIjsKLS0gICAgY2FzZSBXU0FFSU5WQUxJRFBST0NUQUJMRToKLS0gICAgICByZXR1cm4gIlByb2NlZHVyZSBjYWxsIHRhYmxlIGlzIGludmFsaWQiOwotLSAgICBjYXNlIFdTQUVJTlZBTElEUFJPVklERVI6Ci0tICAgICAgcmV0dXJuICJTZXJ2aWNlIHByb3ZpZGVyIGlzIGludmFsaWQiOwotLSAgICBjYXNlIFdTQUVQUk9WSURFUkZBSUxFRElOSVQ6Ci0tICAgICAgcmV0dXJuICJTZXJ2aWNlIHByb3ZpZGVyIGZhaWxlZCB0byBpbml0aWFsaXplIjsKLS0gICAgY2FzZSBXU0FTWVNDQUxMRkFJTFVSRToKLS0gICAgICByZXR1cm4gIlN5c3RlbSBjYWxsIGZhaWx1cmUiOwotLSAgICBjYXNlIFdTQVNFUlZJQ0VfTk9UX0ZPVU5EOgotLSAgICAgIHJldHVybiAiU2VydmljZSBub3QgZm91bmQiOwotLSAgICBjYXNlIFdTQVRZUEVfTk9UX0ZPVU5EOgotLSAgICAgIHJldHVybiAiQ2xhc3MgdHlwZSBub3QgZm91bmQiOwotLSAgICBjYXNlIFdTQUVSRUZVU0VEOgotLSAgICAgIHJldHVybiAiRGF0YWJhc2UgcXVlcnkgd2FzIHJlZnVzZWQiOwotLSAgICBjYXNlIFdTQUhPU1RfTk9UX0ZPVU5EOgotLSAgICAgIHJldHVybiAiSG9zdCBub3QgZm91bmQiOwotLSAgICBjYXNlIFdTQVRSWV9BR0FJTjoKLS0gICAgICByZXR1cm4gIk5vbmF1dGhvcml0YXRpdmUgaG9zdCBub3QgZm91bmQiOwotLSAgICBjYXNlIFdTQU5PX1JFQ09WRVJZOgotLSAgICAgIHJldHVybiAiTm9ucmVjb3ZlcmFibGUgZXJyb3IiOwotLSAgICBjYXNlIFdTQU5PX0RBVEE6Ci0tICAgICAgcmV0dXJuICJWYWxpZCBuYW1lLCBubyBkYXRhIHJlY29yZCBvZiByZXF1ZXN0ZWQgdHlwZSI7Ci0tICAgICAgLyogV1NBX1FPU18qIG9taXR0ZWQgKi8KLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VOT01TRwotLSAgICBjYXNlIEVOT01TRzoKLS0gICAgICByZXR1cm4gIk5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRUlEUk0KLS0gICAgY2FzZSBFSURSTToKLS0gICAgICByZXR1cm4gIklkZW50aWZpZXIgcmVtb3ZlZCI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VOT0xJTksKLS0gICAgY2FzZSBFTk9MSU5LOgotLSAgICAgIHJldHVybiAiTGluayBoYXMgYmVlbiBzZXZlcmVkIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRVBST1RPCi0tICAgIGNhc2UgRVBST1RPOgotLSAgICAgIHJldHVybiAiUHJvdG9jb2wgZXJyb3IiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FTVVMVElIT1AKLS0gICAgY2FzZSBFTVVMVElIT1A6Ci0tICAgICAgcmV0dXJuICJNdWx0aWhvcCBhdHRlbXB0ZWQiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FQkFETVNHCi0tICAgIGNhc2UgRUJBRE1TRzoKLS0gICAgICByZXR1cm4gIkJhZCBtZXNzYWdlIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRU9WRVJGTE9XCi0tICAgIGNhc2UgRU9WRVJGTE9XOgotLSAgICAgIHJldHVybiAiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VOT1RTVVAKLS0gICAgY2FzZSBFTk9UU1VQOgotLSAgICAgIHJldHVybiAiTm90IHN1cHBvcnRlZCI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VORVRSRVNFVAotLSAgICBjYXNlIEVORVRSRVNFVDoKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgZHJvcHBlZCBjb25uZWN0aW9uIG9uIHJlc2V0IjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRUNPTk5BQk9SVEVECi0tICAgIGNhc2UgRUNPTk5BQk9SVEVEOgotLSAgICAgIHJldHVybiAiU29mdHdhcmUgY2F1c2VkIGNvbm5lY3Rpb24gYWJvcnQiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FU1RBTEUKLS0gICAgY2FzZSBFU1RBTEU6Ci0tICAgICAgcmV0dXJuICJTdGFsZSBORlMgZmlsZSBoYW5kbGUiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FRFFVT1QKLS0gICAgY2FzZSBFRFFVT1Q6Ci0tICAgICAgcmV0dXJuICJEaXNrIHF1b3RhIGV4Y2VlZGVkIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRUNBTkNFTEVECi0tICAgIGNhc2UgRUNBTkNFTEVEOgotLSAgICAgIHJldHVybiAiT3BlcmF0aW9uIGNhbmNlbGVkIjsKLS0jZW5kaWYKLS0KLS0gICAgZGVmYXVsdDoKLS0gICAgICByZXR1cm4gTlVMTDsKLS0gICAgfQotLX0KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsNTIgKzAsMCBAQAotLS8qIHN0cmVycm9yLW92ZXJyaWRlLmggLS0tIFBPU0lYIGNvbXBhdGlibGUgc3lzdGVtIGVycm9yIHJvdXRpbmUKLS0KLS0gICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0tCi0tI2lmbmRlZiBfR0xfU1RSRVJST1JfT1ZFUlJJREVfSAotLSMgZGVmaW5lIF9HTF9TVFJFUlJPUl9PVkVSUklERV9ICi0tCi0tIyBpbmNsdWRlIDxlcnJuby5oPgotLSMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0tCi0tLyogUmVhc29uYWJsZSBidWZmZXIgc2l6ZSB0aGF0IHNob3VsZCBuZXZlciB0cmlnZ2VyIEVSQU5HRTsgaWYgdGhpcwotLSAgIHByb3ZlcyB0b28gc21hbGwsIHdlIGludGVudGlvbmFsbHkgYWJvcnQoKSwgdG8gcmVtaW5kIHVzIHRvIGZpeAotLSAgIHRoaXMgdmFsdWUuICAqLwotLSMgZGVmaW5lIFNUQUNLQlVGX0xFTiAyNTYKLS0KLS0vKiBJZiBFUlJOVU0gbWFwcyB0byBhbiBlcnJubyB2YWx1ZSBkZWZpbmVkIGJ5IGdudWxpYiwgcmV0dXJuIGEgc3RyaW5nCi0tICAgZGVzY3JpYmluZyB0aGUgZXJyb3IuICBPdGhlcndpc2UgcmV0dXJuIE5VTEwuICAqLwotLSMgaWYgUkVQTEFDRV9TVFJFUlJPUl8wIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VUWFRCU1kgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRVNPQ0sgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRU5PTVNHIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VJRFJNIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VOT0xJTksgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRVBST1RPIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VNVUxUSUhPUCBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FQkFETVNHIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VPVkVSRkxPVyBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FTk9UU1VQIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VORVRSRVNFVCBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FQ09OTkFCT1JURUQgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRVNUQUxFIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VEUVVPVCBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FQ0FOQ0VMRUQKLS1leHRlcm4gY29uc3QgY2hhciAqc3RyZXJyb3Jfb3ZlcnJpZGUgKGludCBlcnJudW0pOwotLSMgZWxzZQotLSMgIGRlZmluZSBzdHJlcnJvcl9vdmVycmlkZShpZ25vcmVkKSBOVUxMCi0tIyBlbmRpZgotLQotLSNlbmRpZiAvKiBfR0xfU1RSRVJST1JfT1ZFUlJJREVfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJpbmcuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJpbmcuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RyaW5nLmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJpbmcuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjQxODQ4NDQ2MSAtMDgwMAotQEAgLTE2LDcgKzE2LDcgQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9TVFJJTkdfSAotKyNpZm5kZWYgX0dMX1NUUklOR19ICi0gCi0gI2lmIF9fR05VQ19fID49IDMKLSBAUFJBR01BX1NZU1RFTV9IRUFERVJACi1AQCAtMjYsOCArMjYsOCBAQAotIC8qIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjQElOQ0xVREVfTkVYVEAgQE5FWFRfU1RSSU5HX0hACi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RSSU5HX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TVFJJTkdfSAotKyNpZm5kZWYgX0dMX1NUUklOR19ICi0rI2RlZmluZSBfR0xfU1RSSU5HX0gKLSAKLSAvKiBOZXRCU0QgNS4wIG1pcy1kZWZpbmVzIE5VTEwuICAqLwotICNpbmNsdWRlIDxzdGRkZWYuaD4KLUBAIC01OSwzNiArNTksNiBAQAotIC8qIFRoZSBkZWZpbml0aW9uIG9mIF9HTF9XQVJOX09OX1VTRSBpcyBjb3BpZWQgaGVyZS4gICovCi0gCi0gCi0tLyogRmluZCB0aGUgaW5kZXggb2YgdGhlIGxlYXN0LXNpZ25pZmljYW50IHNldCBiaXQuICAqLwotLSNpZiBAR05VTElCX0ZGU0xACi0tIyBpZiAhQEhBVkVfRkZTTEAKLS1fR0xfRlVOQ0RFQ0xfU1lTIChmZnNsLCBpbnQsIChsb25nIGludCBpKSk7Ci0tIyBlbmRpZgotLV9HTF9DWFhBTElBU19TWVMgKGZmc2wsIGludCwgKGxvbmcgaW50IGkpKTsKLS1fR0xfQ1hYQUxJQVNXQVJOIChmZnNsKTsKLS0jZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0tIyB1bmRlZiBmZnNsCi0tIyBpZiBIQVZFX1JBV19ERUNMX0ZGU0wKLS1fR0xfV0FSTl9PTl9VU0UgKGZmc2wsICJmZnNsIGlzIG5vdCBwb3J0YWJsZSAtIHVzZSB0aGUgZmZzbCBtb2R1bGUiKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tCi0tLyogRmluZCB0aGUgaW5kZXggb2YgdGhlIGxlYXN0LXNpZ25pZmljYW50IHNldCBiaXQuICAqLwotLSNpZiBAR05VTElCX0ZGU0xMQAotLSMgaWYgIUBIQVZFX0ZGU0xMQAotLV9HTF9GVU5DREVDTF9TWVMgKGZmc2xsLCBpbnQsIChsb25nIGxvbmcgaW50IGkpKTsKLS0jIGVuZGlmCi0tX0dMX0NYWEFMSUFTX1NZUyAoZmZzbGwsIGludCwgKGxvbmcgbG9uZyBpbnQgaSkpOwotLV9HTF9DWFhBTElBU1dBUk4gKGZmc2xsKTsKLS0jZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0tIyB1bmRlZiBmZnNsbAotLSMgaWYgSEFWRV9SQVdfREVDTF9GRlNMTAotLV9HTF9XQVJOX09OX1VTRSAoZmZzbGwsICJmZnNsbCBpcyBub3QgcG9ydGFibGUgLSB1c2UgdGhlIGZmc2xsIG1vZHVsZSIpOwotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0KLSAvKiBSZXR1cm4gdGhlIGZpcnN0IGluc3RhbmNlIG9mIEMgd2l0aGluIE4gYnl0ZXMgb2YgUywgb3IgTlVMTC4gICovCi0gI2lmIEBHTlVMSUJfTUVNQ0hSQAotICMgaWYgQFJFUExBQ0VfTUVNQ0hSQAotQEAgLTEwMDcsNSArOTc3LDUgQEAgX0dMX1dBUk5fT05fVVNFIChzdHJ2ZXJzY21wLCAic3RydmVyc2NtcAotICNlbmRpZgotIAotIAotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RSSU5HX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NUUklOR19IICovCi0rI2VuZGlmIC8qIF9HTF9TVFJJTkdfSCAqLwotKyNlbmRpZiAvKiBfR0xfU1RSSU5HX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3lzX3N0YXQuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zeXNfc3RhdC5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zeXNfc3RhdC5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3lzX3N0YXQuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjQzMDQ4NDQ2MSAtMDgwMAotQEAgLTM0LDcgKzM0LDcgQEAKLSAjZWxzZQotIC8qIE5vcm1hbCBpbnZvY2F0aW9uIGNvbnZlbnRpb24uICAqLwotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NZU19TVEFUX0gKLSsjaWZuZGVmIF9HTF9TWVNfU1RBVF9ICi0gCi0gLyogR2V0IG5saW5rX3QuICAqLwotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUBAIC00NSw4ICs0NSw4IEBACi0gLyogVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotICNASU5DTFVERV9ORVhUQCBATkVYVF9TWVNfU1RBVF9IQAotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NZU19TVEFUX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TWVNfU1RBVF9ICi0rI2lmbmRlZiBfR0xfU1lTX1NUQVRfSAotKyNkZWZpbmUgX0dMX1NZU19TVEFUX0gKLSAKLSAvKiBUaGUgZGVmaW5pdGlvbnMgb2YgX0dMX0ZVTkNERUNMX1JQTCBldGMuIGFyZSBjb3BpZWQgaGVyZS4gICovCi0gCi1AQCAtNjUzLDYgKzY1Myw2IEBAIF9HTF9XQVJOX09OX1VTRSAodXRpbWVuc2F0LCAidXRpbWVuc2F0IGkKLSAjZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NZU19TVEFUX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NZU19TVEFUX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NZU19TVEFUX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NZU19TVEFUX0ggKi8KLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdGltZS5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL3RpbWUuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdGltZS5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvdGltZS5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuNDM4NDg0NDYyIC0wODAwCi1AQCAtMjgsMTMgKzI4LDEzIEBACi0gICAgd2l0aG91dCBhZGRpbmcgb3VyIG93biBkZWNsYXJhdGlvbnMuICAqLwotICNpZiAoZGVmaW5lZCBfX25lZWRfdGltZV90IHx8IGRlZmluZWQgX19uZWVkX2Nsb2NrX3QgXAotICAgICAgfHwgZGVmaW5lZCBfX25lZWRfdGltZXNwZWMgXAotLSAgICAgfHwgZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfVElNRV9IKQotKyAgICAgfHwgZGVmaW5lZCBfR0xfVElNRV9IKQotIAotICMgQElOQ0xVREVfTkVYVEAgQE5FWFRfVElNRV9IQAotIAotICNlbHNlCi0gCi0tIyBkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX1RJTUVfSAotKyMgZGVmaW5lIF9HTF9USU1FX0gKLSAKLSAjIEBJTkNMVURFX05FWFRAIEBORVhUX1RJTUVfSEAKLSAKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdW5pc3RkLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvdW5pc3RkLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3VuaXN0ZC5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvdW5pc3RkLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC40NTA0ODQ0NjIgLTA4MDAKLUBAIC0zNiw3ICszNiw3IEBACi0gIyBkZWZpbmUgX0dMX1dJTlNPQ0syX0hfV0lUTkVTUwotIAotIC8qIE5vcm1hbCBpbnZvY2F0aW9uLiAgKi8KLS0jZWxpZiAhZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0gKLSsjZWxpZiAhZGVmaW5lZCBfR0xfVU5JU1REX0gKLSAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gI2lmIEBIQVZFX1VOSVNURF9IQAotQEAgLTUxLDggKzUxLDggQEAKLSAjIHVuZGVmIF9HTF9JTkNMVURJTkdfV0lOU09DSzJfSAotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZCBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0ggJiYgIWRlZmluZWQgX0dMX0lOQ0xVRElOR19XSU5TT0NLMl9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0gKLSsjaWYgIWRlZmluZWQgX0dMX1VOSVNURF9IICYmICFkZWZpbmVkIF9HTF9JTkNMVURJTkdfV0lOU09DSzJfSAotKyNkZWZpbmUgX0dMX1VOSVNURF9ICi0gCi0gLyogTmV0QlNEIDUuMCBtaXMtZGVmaW5lcyBOVUxMLiAgQWxzbyBnZXQgc2l6ZV90LiAgKi8KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci1AQCAtMTE3LDc3ICsxMTcsNzggQEAKLSAvKiBUaGUgZGVmaW5pdGlvbiBvZiBfR0xfV0FSTl9PTl9VU0UgaXMgY29waWVkIGhlcmUuICAqLwotIAotIAotLS8qIEhpZGUgc29tZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZnJvbSA8d2luc29jazIuaD4uICAqLwotLQotLSNpZiBAR05VTElCX0dFVEhPU1ROQU1FQCAmJiBAVU5JU1REX0hfSEFWRV9XSU5TT0NLMl9IQAotLSMgaWYgIWRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1NZU19TT0NLRVRfSAotLSMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyAgIHVuZGVmIHNvY2tldAotLSMgICBkZWZpbmUgc29ja2V0ICAgICAgICAgICAgICBzb2NrZXRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgY29ubmVjdAotLSMgICBkZWZpbmUgY29ubmVjdCAgICAgICAgICAgICBjb25uZWN0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGFjY2VwdAotLSMgICBkZWZpbmUgYWNjZXB0ICAgICAgICAgICAgICBhY2NlcHRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgYmluZAotLSMgICBkZWZpbmUgYmluZCAgICAgICAgICAgICAgICBiaW5kX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGdldHBlZXJuYW1lCi0tIyAgIGRlZmluZSBnZXRwZWVybmFtZSAgICAgICAgIGdldHBlZXJuYW1lX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGdldHNvY2tuYW1lCi0tIyAgIGRlZmluZSBnZXRzb2NrbmFtZSAgICAgICAgIGdldHNvY2tuYW1lX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGdldHNvY2tvcHQKLS0jICAgZGVmaW5lIGdldHNvY2tvcHQgICAgICAgICAgZ2V0c29ja29wdF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBsaXN0ZW4KLS0jICAgZGVmaW5lIGxpc3RlbiAgICAgICAgICAgICAgbGlzdGVuX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIHJlY3YKLS0jICAgZGVmaW5lIHJlY3YgICAgICAgICAgICAgICAgcmVjdl91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBzZW5kCi0tIyAgIGRlZmluZSBzZW5kICAgICAgICAgICAgICAgIHNlbmRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgcmVjdmZyb20KLS0jICAgZGVmaW5lIHJlY3Zmcm9tICAgICAgICAgICAgcmVjdmZyb21fdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgc2VuZHRvCi0tIyAgIGRlZmluZSBzZW5kdG8gICAgICAgICAgICAgIHNlbmR0b191c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBzZXRzb2Nrb3B0Ci0tIyAgIGRlZmluZSBzZXRzb2Nrb3B0ICAgICAgICAgIHNldHNvY2tvcHRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgc2h1dGRvd24KLS0jICAgZGVmaW5lIHNodXRkb3duICAgICAgICAgICAgc2h1dGRvd25fdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICBlbHNlCi0tICAgIF9HTF9XQVJOX09OX1VTRSAoc29ja2V0LAotLSAgICAgICAgICAgICAgICAgICAgICJzb2NrZXQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoY29ubmVjdCwKLS0gICAgICAgICAgICAgICAgICAgICAiY29ubmVjdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChhY2NlcHQsCi0tICAgICAgICAgICAgICAgICAgICAgImFjY2VwdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChiaW5kLAotLSAgICAgICAgICAgICAgICAgICAgICJiaW5kKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKGdldHBlZXJuYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICJnZXRwZWVybmFtZSgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChnZXRzb2NrbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja25hbWUoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0c29ja29wdCwKLS0gICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja29wdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChsaXN0ZW4sCi0tICAgICAgICAgICAgICAgICAgICAgImxpc3RlbigpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChyZWN2LAotLSAgICAgICAgICAgICAgICAgICAgICJyZWN2KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNlbmQsCi0tICAgICAgICAgICAgICAgICAgICAgInNlbmQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAocmVjdmZyb20sCi0tICAgICAgICAgICAgICAgICAgICAgInJlY3Zmcm9tKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNlbmR0bywKLS0gICAgICAgICAgICAgICAgICAgICAic2VuZHRvKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNldHNvY2tvcHQsCi0tICAgICAgICAgICAgICAgICAgICAgInNldHNvY2tvcHQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoc2h1dGRvd24sCi0tICAgICAgICAgICAgICAgICAgICAgInNodXRkb3duKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyNpZiBAR05VTElCX0dFVEhPU1ROQU1FQAotKy8qIEdldCBhbGwgcG9zc2libGUgZGVjbGFyYXRpb25zIG9mIGdldGhvc3RuYW1lKCkuICAqLwotKyMgaWYgQFVOSVNURF9IX0hBVkVfV0lOU09DSzJfSEAKLSsjICBpZiAhZGVmaW5lZCBfR0xfU1lTX1NPQ0tFVF9ICi0rIyAgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0rIyAgICB1bmRlZiBzb2NrZXQKLSsjICAgIGRlZmluZSBzb2NrZXQgICAgICAgICAgICAgIHNvY2tldF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgY29ubmVjdAotKyMgICAgZGVmaW5lIGNvbm5lY3QgICAgICAgICAgICAgY29ubmVjdF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgYWNjZXB0Ci0rIyAgICBkZWZpbmUgYWNjZXB0ICAgICAgICAgICAgICBhY2NlcHRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIGJpbmQKLSsjICAgIGRlZmluZSBiaW5kICAgICAgICAgICAgICAgIGJpbmRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIGdldHBlZXJuYW1lCi0rIyAgICBkZWZpbmUgZ2V0cGVlcm5hbWUgICAgICAgICBnZXRwZWVybmFtZV91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgZ2V0c29ja25hbWUKLSsjICAgIGRlZmluZSBnZXRzb2NrbmFtZSAgICAgICAgIGdldHNvY2tuYW1lX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgICB1bmRlZiBnZXRzb2Nrb3B0Ci0rIyAgICBkZWZpbmUgZ2V0c29ja29wdCAgICAgICAgICBnZXRzb2Nrb3B0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgICB1bmRlZiBsaXN0ZW4KLSsjICAgIGRlZmluZSBsaXN0ZW4gICAgICAgICAgICAgIGxpc3Rlbl91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgcmVjdgotKyMgICAgZGVmaW5lIHJlY3YgICAgICAgICAgICAgICAgcmVjdl91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgc2VuZAotKyMgICAgZGVmaW5lIHNlbmQgICAgICAgICAgICAgICAgc2VuZF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgcmVjdmZyb20KLSsjICAgIGRlZmluZSByZWN2ZnJvbSAgICAgICAgICAgIHJlY3Zmcm9tX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgICB1bmRlZiBzZW5kdG8KLSsjICAgIGRlZmluZSBzZW5kdG8gICAgICAgICAgICAgIHNlbmR0b191c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgc2V0c29ja29wdAotKyMgICAgZGVmaW5lIHNldHNvY2tvcHQgICAgICAgICAgc2V0c29ja29wdF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgc2h1dGRvd24KLSsjICAgIGRlZmluZSBzaHV0ZG93biAgICAgICAgICAgIHNodXRkb3duX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgIGVsc2UKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoc29ja2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAic29ja2V0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChjb25uZWN0LAotKyAgICAgICAgICAgICAgICAgICAgICAiY29ubmVjdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoYWNjZXB0LAotKyAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChiaW5kLAotKyAgICAgICAgICAgICAgICAgICAgICAiYmluZCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0cGVlcm5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZXRwZWVybmFtZSgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0c29ja25hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2NrbmFtZSgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0c29ja29wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2tvcHQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKGxpc3RlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgImxpc3RlbigpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAocmVjdiwKLSsgICAgICAgICAgICAgICAgICAgICAgInJlY3YoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKHNlbmQsCi0rICAgICAgICAgICAgICAgICAgICAgICJzZW5kKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChyZWN2ZnJvbSwKLSsgICAgICAgICAgICAgICAgICAgICAgInJlY3Zmcm9tKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChzZW5kdG8sCi0rICAgICAgICAgICAgICAgICAgICAgICJzZW5kdG8oKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKHNldHNvY2tvcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICJzZXRzb2Nrb3B0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChzaHV0ZG93biwKLSsgICAgICAgICAgICAgICAgICAgICAgInNodXRkb3duKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyMgICBlbmRpZgotICMgIGVuZGlmCi0tIyBlbmRpZgotLSMgaWYgIWRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1NZU19TRUxFQ1RfSAotLSMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyAgIHVuZGVmIHNlbGVjdAotLSMgICBkZWZpbmUgc2VsZWN0ICAgICAgICAgICAgICBzZWxlY3RfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc2VsZWN0X2gKLS0jICBlbHNlCi0tICAgIF9HTF9XQVJOX09OX1VTRSAoc2VsZWN0LAotLSAgICAgICAgICAgICAgICAgICAgICJzZWxlY3QoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc2VsZWN0Lmg+Iik7Ci0rIyAgaWYgIWRlZmluZWQgX0dMX1NZU19TRUxFQ1RfSAotKyMgICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotKyMgICAgdW5kZWYgc2VsZWN0Ci0rIyAgICBkZWZpbmUgc2VsZWN0ICAgICAgICAgICAgICBzZWxlY3RfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc2VsZWN0X2gKLSsjICAgZWxzZQotKyAgICAgX0dMX1dBUk5fT05fVVNFIChzZWxlY3QsCi0rICAgICAgICAgICAgICAgICAgICAgICJzZWxlY3QoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc2VsZWN0Lmg+Iik7Ci0rIyAgIGVuZGlmCi0gIyAgZW5kaWYKLSAjIGVuZGlmCi0gI2VuZGlmCi1AQCAtMTA2MSw3ICsxMDYyLDYgQEAgX0dMX1dBUk5fT05fVVNFIChwaXBlMiwgInBpcGUyIGlzIHVucG9ydAotICAgIHNwZWNpZmljYXRpb24gPGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9zdXN2M3hzaC9wcmVhZC5odG1sPi4gICovCi0gIyBpZiBAUkVQTEFDRV9QUkVBREAKLSAjICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotLSMgICB1bmRlZiBwcmVhZAotICMgICBkZWZpbmUgcHJlYWQgcnBsX3ByZWFkCi0gIyAgZW5kaWYKLSBfR0xfRlVOQ0RFQ0xfUlBMIChwcmVhZCwgc3NpemVfdCwKLUBAIC0xMDk2LDcgKzEwOTYsNiBAQCBfR0xfV0FSTl9PTl9VU0UgKHByZWFkLCAicHJlYWQgaXMgdW5wb3J0Ci0gICAgPGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9zdXN2M3hzaC9wd3JpdGUuaHRtbD4uICAqLwotICMgaWYgQFJFUExBQ0VfUFdSSVRFQAotICMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyAgIHVuZGVmIHB3cml0ZQotICMgICBkZWZpbmUgcHdyaXRlIHJwbF9wd3JpdGUKLSAjICBlbmRpZgotIF9HTF9GVU5DREVDTF9SUEwgKHB3cml0ZSwgc3NpemVfdCwKLUBAIC0xNDE3LDUgKzE0MTYsNSBAQCBfR0xfQ1hYQUxJQVNXQVJOICh3cml0ZSk7Ci0gI2VuZGlmCi0gCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9VTklTVERfSCAqLwotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0ggKi8KLSsjZW5kaWYgLyogX0dMX1VOSVNURF9IICovCi0rI2VuZGlmIC8qIF9HTF9VTklTVERfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi92ZXJpZnkuaCBsaWJpY29udi0xLjE0L3NyY2xpYi92ZXJpZnkuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdmVyaWZ5LmgJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi92ZXJpZnkuaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjQ5NDQ4NDQ2NCAtMDgwMAotQEAgLTE2NCwxMyArMTY0LDEwIEBACi0gICAgICghIXNpemVvZiAoX0dMX1ZFUklGWV9UWVBFIChSLCBESUFHTk9TVElDKSkpCi0gCi0gIyBpZmRlZiBfX2NwbHVzcGx1cwotLSMgIGlmICFHTlVMSUJfZGVmaW5lZF9zdHJ1Y3RfX2dsX3ZlcmlmeV90eXBlCi0gdGVtcGxhdGUgPGludCB3PgotICAgc3RydWN0IF9nbF92ZXJpZnlfdHlwZSB7Ci0gICAgIHVuc2lnbmVkIGludCBfZ2xfdmVyaWZ5X2Vycm9yX2lmX25lZ2F0aXZlOiB3OwotICAgfTsKLS0jICAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX3N0cnVjdF9fZ2xfdmVyaWZ5X3R5cGUgMQotLSMgIGVuZGlmCi0gIyAgZGVmaW5lIF9HTF9WRVJJRllfVFlQRShSLCBESUFHTk9TVElDKSBcCi0gICAgIF9nbF92ZXJpZnlfdHlwZTwoUikgPyAxIDogLTE+Ci0gIyBlbGlmIGRlZmluZWQgX0dMX0hBVkVfX1NUQVRJQ19BU1NFUlQKLUBAIC0yMDksNyArMjA2LDcgQEAgdGVtcGxhdGUgPGludCB3PgotICMgIGVuZGlmCi0gIyBlbmRpZgotIAotLS8qIEBhc3NlcnQuaCBvbWl0IHN0YXJ0QCAgKi8KLSsjIGlmZGVmIF9HTF9WRVJJRllfSAotIAotIC8qIEVhY2ggb2YgdGhlc2UgbWFjcm9zIHZlcmlmaWVzIHRoYXQgaXRzIGFyZ3VtZW50IFIgaXMgbm9uemVyby4gIFRvCi0gICAgYmUgcG9ydGFibGUsIFIgc2hvdWxkIGJlIGFuIGludGVnZXIgY29uc3RhbnQgZXhwcmVzc2lvbi4gIFVubGlrZQotQEAgLTIyMSwyMyArMjE4LDE1IEBAIHRlbXBsYXRlIDxpbnQgdz4KLSAgICBjb250ZXh0cywgZS5nLiwgdGhlIHRvcCBsZXZlbC4gICovCi0gCi0gLyogVmVyaWZ5IHJlcXVpcmVtZW50IFIgYXQgY29tcGlsZS10aW1lLCBhcyBhbiBpbnRlZ2VyIGNvbnN0YW50IGV4cHJlc3Npb24uCi0tICAgUmV0dXJuIDEuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdmVyaWZ5X2V4cHIgKFIsIDEpLgotLQotLSAgIHZlcmlmeV90cnVlIGlzIG9ic29sZXNjZW50OyBwbGVhc2UgdXNlIHZlcmlmeV9leHByIGluc3RlYWQuICAqLwotLQotLSMgZGVmaW5lIHZlcmlmeV90cnVlKFIpIF9HTF9WRVJJRllfVFJVRSAoUiwgInZlcmlmeV90cnVlICgiICNSICIpIikKLSsgICBSZXR1cm4gMS4gICovCi0gCi0tLyogVmVyaWZ5IHJlcXVpcmVtZW50IFIgYXQgY29tcGlsZS10aW1lLiAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUKLS0gICBleHByZXNzaW9uIEUuICAqLwotLQotLSMgZGVmaW5lIHZlcmlmeV9leHByKFIsIEUpIFwKLS0gICAgKF9HTF9WRVJJRllfVFJVRSAoUiwgInZlcmlmeV9leHByICgiICNSICIsICIgI0UgIikiKSA/IChFKSA6IChFKSkKLSsjICBkZWZpbmUgdmVyaWZ5X3RydWUoUikgX0dMX1ZFUklGWV9UUlVFIChSLCAidmVyaWZ5X3RydWUgKCIgI1IgIikiKQotIAotIC8qIFZlcmlmeSByZXF1aXJlbWVudCBSIGF0IGNvbXBpbGUtdGltZSwgYXMgYSBkZWNsYXJhdGlvbiB3aXRob3V0IGEKLSAgICB0cmFpbGluZyAnOycuICAqLwotIAotLSMgZGVmaW5lIHZlcmlmeShSKSBfR0xfVkVSSUZZIChSLCAidmVyaWZ5ICgiICNSICIpIikKLSsjICBkZWZpbmUgdmVyaWZ5KFIpIF9HTF9WRVJJRlkgKFIsICJ2ZXJpZnkgKCIgI1IgIikiKQotIAotLS8qIEBhc3NlcnQuaCBvbWl0IGVuZEAgICovCi0rIyBlbmRpZgotIAotICNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2Nhbm9uaWNhbGl6ZS5tNCBsaWJpY29udi0xLjE0L3NyY200L2Nhbm9uaWNhbGl6ZS5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9jYW5vbmljYWxpemUubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2Nhbm9uaWNhbGl6ZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjU2NjQ4NDQ2OSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBjYW5vbmljYWxpemUubTQgc2VyaWFsIDIzCi0rIyBjYW5vbmljYWxpemUubTQgc2VyaWFsIDIxCi0gCi0gZG5sIENvcHlyaWdodCAoQykgMjAwMy0yMDA3LCAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi1AQCAtMTAsNiArMTAsOCBAQCBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvCi0gIyBub3QgcHJvdmlkZSBvciBmaXggcmVhbHBhdGguCi0gQUNfREVGVU4oW2dsX0ZVTkNfQ0FOT05JQ0FMSVpFX0ZJTEVOQU1FX01PREVdLAotIFsKLSsgIEFDX0xJQk9CSihbY2Fub25pY2FsaXplXSkKLSsKLSAgIEFDX1JFUVVJUkUoW2dsX1VTRV9TWVNURU1fRVhURU5TSU9OU10pCi0gICBBQ19DSEVDS19GVU5DU19PTkNFKFtjYW5vbmljYWxpemVfZmlsZV9uYW1lXSkKLSAgIEFDX1JFUVVJUkUoW2dsX0RPVUJMRV9TTEFTSF9ST09UXSkKLUBAIC0yOCwxNCArMzAsMTYgQEAgQUNfREVGVU4oW2dsX0NBTk9OSUNBTElaRV9MR1BMXSwKLSAgIEFDX1JFUVVJUkUoW2dsX0NBTk9OSUNBTElaRV9MR1BMX1NFUEFSQVRFXSkKLSAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfY2Fub25pY2FsaXplX2ZpbGVfbmFtZSA9IG5vOyB0aGVuCi0gICAgIEhBVkVfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRT0wCi0rICAgIEFDX0xJQk9CSihbY2Fub25pY2FsaXplLWxncGxdKQotICAgICBpZiB0ZXN0ICRhY19jdl9mdW5jX3JlYWxwYXRoID0gbm87IHRoZW4KLSAgICAgICBIQVZFX1JFQUxQQVRIPTAKLSAgICAgZWxpZiB0ZXN0ICIkZ2xfY3ZfZnVuY19yZWFscGF0aF93b3JrcyIgIT0geWVzOyB0aGVuCi0gICAgICAgUkVQTEFDRV9SRUFMUEFUSD0xCi0gICAgIGZpCi0gICBlbGlmIHRlc3QgIiRnbF9jdl9mdW5jX3JlYWxwYXRoX3dvcmtzIiAhPSB5ZXM7IHRoZW4KLS0gICAgUkVQTEFDRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FPTEKLSsgICAgQUNfTElCT0JKKFtjYW5vbmljYWxpemUtbGdwbF0pCi0gICAgIFJFUExBQ0VfUkVBTFBBVEg9MQotKyAgICBSRVBMQUNFX0NBTk9OSUNBTElaRV9GSUxFX05BTUU9MQotICAgZmkKLSBdKQotIAotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2Vycm5vX2gubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9lcnJub19oLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2Vycm5vX2gubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2Vycm5vX2gubTQJMjAxMi0wMS0wOCAwMjowNzo0MC41OTA0ODQ0NjkgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgZXJybm9faC5tNCBzZXJpYWwgMTAKLSsjIGVycm5vX2gubTQgc2VyaWFsIDkKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA4LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMzQsMTIgKzM0LDYgQEAgYm9vYm9vCi0gI2lmICFkZWZpbmVkIEVOT1RTVVAKLSBib29ib28KLSAjZW5kaWYKLS0jaWYgIWRlZmluZWQgRU5FVFJFU0VUCi0tYm9vYm9vCi0tI2VuZGlmCi0tI2lmICFkZWZpbmVkIEVDT05OQUJPUlRFRAotLWJvb2JvbwotLSNlbmRpZgotICNpZiAhZGVmaW5lZCBFU1RBTEUKLSBib29ib28KLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9lcnJvci5tNCBsaWJpY29udi0xLjE0L3NyY200L2Vycm9yLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2Vycm9yLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9lcnJvci5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjU5ODQ4NDQ3MCAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tI3NlcmlhbCAxNAotKyNzZXJpYWwgMTMKLSAKLSAjIENvcHlyaWdodCAoQykgMTk5Ni0xOTk4LCAyMDAxLTIwMDQsIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi1AQCAtOCw4ICs4LDE2IEBACi0gCi0gQUNfREVGVU4oW2dsX0VSUk9SXSwKLSBbCi0tICBkbmwgV2UgZG9uJ3QgdXNlIEFDX0ZVTkNfRVJST1JfQVRfTElORSBhbnkgbW9yZSwgYmVjYXVzZSBpdCBpcyBubyBsb25nZXIKLS0gIGRubCBtYWludGFpbmVkIGluIEF1dG9jb25mIGFuZCBiZWNhdXNlIGl0IGludm9rZXMgQUNfTElCT0JKLgotKyAgQUNfRlVOQ19FUlJPUl9BVF9MSU5FCi0rICBkbmwgTm90ZTogQUNfRlVOQ19FUlJPUl9BVF9MSU5FIGRvZXMgQUNfTElCU09VUkNFUyhbZXJyb3IuaCwgZXJyb3IuY10pLgotKyAgZ2xfUFJFUkVRX0VSUk9SCi0rXSkKLSsKLSsjIFJlZGVmaW5lIEFDX0ZVTkNfRVJST1JfQVRfTElORSwgYmVjYXVzZSBpdCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBpbgotKyMgQXV0b2NvbmYuCi0rQUNfREVGVU4oW0FDX0ZVTkNfRVJST1JfQVRfTElORV0sCi0rWwotKyAgQUNfTElCU09VUkNFUyhbZXJyb3IuaCwgZXJyb3IuY10pZG5sCi0gICBBQ19DQUNIRV9DSEVDSyhbZm9yIGVycm9yX2F0X2xpbmVdLCBbYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmVdLAotICAgICBbQUNfTElOS19JRkVMU0UoCi0gICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCi1AQCAtMTcsNiArMjUsOSBAQCBBQ19ERUZVTihbZ2xfRVJST1JdLAotICAgICAgICAgICBbW2Vycm9yX2F0X2xpbmUgKDAsIDAsICIiLCAwLCAiYW4gZXJyb3Igb2NjdXJyZWQiKTtdXSldLAotICAgICAgICBbYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmU9eWVzXSwKLSAgICAgICAgW2FjX2N2X2xpYl9lcnJvcl9hdF9saW5lPW5vXSldKQotKyAgaWYgdGVzdCAkYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmUgPSBubzsgdGhlbgotKyAgICBBQ19MSUJPQkooW2Vycm9yXSkKLSsgIGZpCi0gXSkKLSAKLSAjIFByZXJlcXVpc2l0ZXMgb2YgbGliL2Vycm9yLmMuCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvZXh0ZW5zaW9ucy5tNCBsaWJpY29udi0xLjE0L3NyY200L2V4dGVuc2lvbnMubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvZXh0ZW5zaW9ucy5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvZXh0ZW5zaW9ucy5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjYwNjQ4NDQ3MSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBzZXJpYWwgMTAgIC0qLSBBdXRvY29uZiAtKi0KLSsjIHNlcmlhbCA5ICAtKi0gQXV0b2NvbmYgLSotCi0gIyBFbmFibGUgZXh0ZW5zaW9ucyBvbiBzeXN0ZW1zIHRoYXQgbm9ybWFsbHkgZGlzYWJsZSB0aGVtLgotIAotICMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1AQCAtNjcsMTAgKzY3LDYgQEAgQUNfQkVGT1JFKFskMF0sIFtBQ19SVU5fSUZFTFNFXSlkbmwKLSAjaWZuZGVmIF9BTExfU09VUkNFCi0gIyB1bmRlZiBfQUxMX1NPVVJDRQotICNlbmRpZgotLS8qIEVuYWJsZSBnZW5lcmFsIGV4dGVuc2lvbnMgb24gTWFjT1MgWC4gICovCi0tI2lmbmRlZiBfREFSV0lOX0NfU09VUkNFCi0tIyB1bmRlZiBfREFSV0lOX0NfU09VUkNFCi0tI2VuZGlmCi0gLyogRW5hYmxlIEdOVSBleHRlbnNpb25zIG9uIHN5c3RlbXMgdGhhdCBoYXZlIHRoZW0uICAqLwotICNpZm5kZWYgX0dOVV9TT1VSQ0UKLSAjIHVuZGVmIF9HTlVfU09VUkNFCi1AQCAtOTksNyArOTUsNiBAQCBBQ19CRUZPUkUoWyQwXSwgW0FDX1JVTl9JRkVMU0VdKWRubAotICAgdGVzdCAkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX18gPSB5ZXMgJiYKLSAgICAgQUNfREVGSU5FKFtfX0VYVEVOU0lPTlNfX10pCi0gICBBQ19ERUZJTkUoW19BTExfU09VUkNFXSkKLS0gIEFDX0RFRklORShbX0RBUldJTl9DX1NPVVJDRV0pCi0gICBBQ19ERUZJTkUoW19HTlVfU09VUkNFXSkKLSAgIEFDX0RFRklORShbX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTXSkKLSAgIEFDX0RFRklORShbX1RBTkRFTV9TT1VSQ0VdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2dudWxpYi1jYWNoZS5tNCBsaWJpY29udi0xLjE0L3NyY200L2dudWxpYi1jYWNoZS5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9nbnVsaWItY2FjaGUubTQJMjAxMS0wOC0wNyAwNjo0MjoxMS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2dudWxpYi1jYWNoZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQzLjE1NDQ4NDU5MyAtMDgwMAotQEAgLTE1LDcgKzE1LDcgQEAKLSAKLSAKLSAjIFNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm0gb2YgYSBjb21tYW5kLWxpbmUgaW52b2NhdGlvbjoKLS0jICAgZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9LiAtLWxvY2FsLWRpcj1nbnVsaWItbG9jYWwgLS1saWI9bGliaWNydCAtLXNvdXJjZS1iYXNlPXNyY2xpYiAtLW00LWJhc2U9c3JjbTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0cy1iYXNlPXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1tYWtlZmlsZS1uYW1lPU1ha2VmaWxlLmdudWxpYiAtLW5vLWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcyAtLW5vLWxpYnRvb2wgLS1tYWNyby1wcmVmaXg9Z2wgLS1uby12Yy1maWxlcyBiaW5hcnktaW8gZXJyb3IgZ2V0dGV4dCBnZXR0ZXh0LWggbGliaWNvbnYtbWlzYyBtYnN0YXRlIG1lbW1vdmUgcHJvZ25hbWUgcmVsb2NhdGFibGUtcHJvZyBzYWZlLXJlYWQgc2lncGlwZSBzdGRpbyBzdGRsaWIgc3RyZXJyb3IgdW5pc3RkIHVuaXdpZHRoL3dpZHRoIHVubG9ja2VkLWlvIHhhbGxvYwotKyMgICBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbG9jYWwtZGlyPWdudWxpYi1sb2NhbCAtLWxpYj1saWJpY3J0IC0tc291cmNlLWJhc2U9c3JjbGliIC0tbTQtYmFzZT1zcmNtNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLW1ha2VmaWxlLW5hbWU9TWFrZWZpbGUuZ251bGliIC0tbm8tbGlidG9vbCAtLW1hY3JvLXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGJpbmFyeS1pbyBlcnJvciBnZXR0ZXh0IGdldHRleHQtaCBsaWJpY29udi1taXNjIG1ic3RhdGUgbWVtbW92ZSBwcm9nbmFtZSByZWxvY2F0YWJsZSByZWxvY2F0YWJsZS1wcm9nIHNhZmUtcmVhZCBzaWdwaXBlIHN0ZGlvIHN0ZGxpYiBzdHJlcnJvciB1bmlzdGQgdW5pd2lkdGgvd2lkdGggdW5sb2NrZWQtaW8geGFsbG9jCi0gCi0gIyBTcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtIG9mIGEgZmV3IGdudWxpYi10b29sLm00IG1hY3JvIGludm9jYXRpb25zOgotIGdsX0xPQ0FMX0RJUihbZ251bGliLWxvY2FsXSkKLUBAIC0yOCw2ICsyOCw3IEBAIGdsX01PRFVMRVMoWwotICAgbWJzdGF0ZQotICAgbWVtbW92ZQotICAgcHJvZ25hbWUKLSsgIHJlbG9jYXRhYmxlCi0gICByZWxvY2F0YWJsZS1wcm9nCi0gICBzYWZlLXJlYWQKLSAgIHNpZ3BpcGUKLUBAIC00OSw1ICs1MCw0IEBAIGdsX0xJQihbbGliaWNydF0pCi0gZ2xfTUFLRUZJTEVfTkFNRShbTWFrZWZpbGUuZ251bGliXSkKLSBnbF9NQUNST19QUkVGSVgoW2dsXSkKLSBnbF9QT19ET01BSU4oW10pCi0tZ2xfV0lUTkVTU19DX0RPTUFJTihbXSkKLSBnbF9WQ19GSUxFUyhbZmFsc2VdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2dudWxpYi1jb21tb24ubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9nbnVsaWItY29tbW9uLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2dudWxpYi1jb21tb24ubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2dudWxpYi1jb21tb24ubTQJMjAxMi0wMS0wOCAwMjowNzo0MC42MzQ0ODQ0NzEgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgZ251bGliLWNvbW1vbi5tNCBzZXJpYWwgMjkKLSsjIGdudWxpYi1jb21tb24ubTQgc2VyaWFsIDI0Ci0gZG5sIENvcHlyaWdodCAoQykgMjAwNy0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTEyLDE5ICsxMiw2IEBAIEFDX0RFRlVOKFtnbF9DT01NT05dLCBbCi0gICBBQ19SRVFVSVJFKFtnbF9DT01NT05fQk9EWV0pCi0gXSkKLSBBQ19ERUZVTihbZ2xfQ09NTU9OX0JPRFldLCBbCi0tICBBSF9WRVJCQVRJTShbX05vcmV0dXJuXSwKLS1bLyogVGhlIF9Ob3JldHVybiBrZXl3b3JkIG9mIGRyYWZ0IEMxWC4gICovCi0tI2lmbmRlZiBfTm9yZXR1cm4KLS0jIGlmICgzIDw9IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSAyICYmIDggPD0gX19HTlVDX01JTk9SX18pIFwKLS0gICAgICB8fCAweDUxMTAgPD0gX19TVU5QUk9fQykKLS0jICBkZWZpbmUgX05vcmV0dXJuIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKQotLSMgZWxpZiAxMjAwIDw9IF9NU0NfVkVSCi0tIyAgZGVmaW5lIF9Ob3JldHVybiBfX2RlY2xzcGVjIChub3JldHVybikKLS0jIGVsc2UKLS0jICBkZWZpbmUgX05vcmV0dXJuCi0tIyBlbmRpZgotLSNlbmRpZgotLV0pCi0gICBBSF9WRVJCQVRJTShbaXNvYzk5X2lubGluZV0sCi0gWy8qIFdvcmsgYXJvdW5kIGEgYnVnIGluIEFwcGxlIEdDQyA0LjAuMSBidWlsZCA1NDY1OiBJbiBDOTkgbW9kZSwgaXQgc3VwcG9ydHMKLSAgICB0aGUgSVNPIEMgOTkgc2VtYW50aWNzIG9mICdleHRlcm4gaW5saW5lJyAodW5saWtlIHRoZSBHTlUgQyBzZW1hbnRpY3Mgb2YKLUBAIC00NywyMCArMzQsNiBAQCBBQ19ERUZVTihbZ2xfQ09NTU9OX0JPRFldLCBbCi0gLyogVGhlIG5hbWUgX1VOVVNFRF9QQVJBTUVURVJfIGlzIGFuIGVhcmxpZXIgc3BlbGxpbmcsIGFsdGhvdWdoIHRoZSBuYW1lCi0gICAgaXMgYSBtaXNub21lciBvdXRzaWRlIG9mIHBhcmFtZXRlciBsaXN0cy4gICovCi0gI2RlZmluZSBfVU5VU0VEX1BBUkFNRVRFUl8gX0dMX1VOVVNFRAotLQotLS8qIFRoZSBfX3B1cmVfXyBhdHRyaWJ1dGUgd2FzIGFkZGVkIGluIGdjYyAyLjk2LiAgKi8KLS0jaWYgX19HTlVDX18gPiAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDk2KQotLSMgZGVmaW5lIF9HTF9BVFRSSUJVVEVfUFVSRSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0FUVFJJQlVURV9QVVJFIC8qIGVtcHR5ICovCi0tI2VuZGlmCi0tCi0tLyogVGhlIF9fY29uc3RfXyBhdHRyaWJ1dGUgd2FzIGFkZGVkIGluIGdjYyAyLjk1LiAgKi8KLS0jaWYgX19HTlVDX18gPiAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDk1KQotLSMgZGVmaW5lIF9HTF9BVFRSSUJVVEVfQ09OU1QgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpCi0tI2Vsc2UKLS0jIGRlZmluZSBfR0xfQVRUUklCVVRFX0NPTlNUIC8qIGVtcHR5ICovCi0tI2VuZGlmCi0gXSkKLSAgIGRubCBQcmVwYXJhdGlvbiBmb3IgcnVubmluZyB0ZXN0IHByb2dyYW1zOgotICAgZG5sIFRlbGwgZ2xpYmMgdG8gd3JpdGUgZGlhZ25vc3RpY3MgZnJvbSAtRF9GT1JUSUZZX1NPVVJDRT0yIHRvIHN0ZGVyciwgbm90Ci1AQCAtNzQsNDkgKzQ3LDE2IEBAIEFDX0RFRlVOKFtnbF9DT01NT05fQk9EWV0sIFsKLSAjIGV4cGFuZHMgdG8gYSBDIHByZXByb2Nlc3NvciBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIDEgb3IgMCwgZGVwZW5kaW5nCi0gIyB3aGV0aGVyIGEgZ251bGliIG1vZHVsZSB0aGF0IGhhcyBiZWVuIHJlcXVlc3RlZCBzaGFsbCBiZSBjb25zaWRlcmVkIHByZXNlbnQKLSAjIG9yIG5vdC4KLS1tNF9kZWZpbmUoW2dsX01PRFVMRV9JTkRJQ0FUT1JfQ09ORElUSU9OXSwgWzFdKQotK0FDX0RFRlVOKFtnbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTl0sIFsxXSkKLSAKLSAjIGdsX01PRFVMRV9JTkRJQ0FUT1JfU0VUX1ZBUklBQkxFKFttb2R1bGVuYW1lXSkKLSAjIHNldHMgdGhlIHNoZWxsIHZhcmlhYmxlIHRoYXQgaW5kaWNhdGVzIHRoZSBwcmVzZW5jZSBvZiB0aGUgZ2l2ZW4gbW9kdWxlIHRvCi0gIyBhIEMgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb24gdGhhdCB3aWxsIGV2YWx1YXRlIHRvIDEuCi0gQUNfREVGVU4oW2dsX01PRFVMRV9JTkRJQ0FUT1JfU0VUX1ZBUklBQkxFXSwKLSBbCi0tICBnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVgoCi0tICAgIFtHTlVMSUJfW11tNF90cmFuc2xpdChbWyQxXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fXSldLAotLSAgICBbZ2xfTU9EVUxFX0lORElDQVRPUl9DT05ESVRJT05dKQotLV0pCi0tCi0tIyBnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVgoW3ZhcmlhYmxlXSkKLS0jIG1vZGlmaWVzIHRoZSBzaGVsbCB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZSBnbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTi4KLS0jIFRoZSBzaGVsbCB2YXJpYWJsZSdzIHZhbHVlIGlzIGEgQyBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcwotLSMgdG8gMCBvciAxLgotLUFDX0RFRlVOKFtnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVhdLAotLVsKLS0gIG00X2lmKG00X2RlZm4oW2dsX01PRFVMRV9JTkRJQ0FUT1JfQ09ORElUSU9OXSksIFsxXSwKLS0gICAgWwotLSAgICAgZG5sIFNpbXBsaWZ5IHRoZSBleHByZXNzaW9uIFZBTFVFIHx8IDEgdG8gMS4KLS0gICAgICQxPTEKLS0gICAgXSwKLS0gICAgW2dsX01PRFVMRV9JTkRJQ0FUT1JfU0VUX1ZBUklBQkxFX0FVWF9PUihbJDFdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTl0pXSkKLS1dKQotLQotLSMgZ2xfTU9EVUxFX0lORElDQVRPUl9TRVRfVkFSSUFCTEVfQVVYX09SKFt2YXJpYWJsZV0sIFtjb25kaXRpb25dKQotLSMgbW9kaWZpZXMgdGhlIHNoZWxsIHZhcmlhYmxlIHRvIGluY2x1ZGUgdGhlIGdpdmVuIGNvbmRpdGlvbi4gIFRoZSBzaGVsbAotLSMgdmFyaWFibGUncyB2YWx1ZSBpcyBhIEMgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gMCBvciAxLgotLUFDX0RFRlVOKFtnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVhfT1JdLAotLVsKLS0gIGRubCBTaW1wbGlmeSB0aGUgZXhwcmVzc2lvbiAxIHx8IENPTkRJVElPTiB0byAxLgotLSAgaWYgdGVzdCAiJFtdJDEiICE9IDE7IHRoZW4KLS0gICAgZG5sIFNpbXBsaWZ5IHRoZSBleHByZXNzaW9uIDAgfHwgQ09ORElUSU9OIHRvIENPTkRJVElPTi4KLS0gICAgaWYgdGVzdCAiJFtdJDEiID0gMDsgdGhlbgotLSAgICAgICQxPSQyCi0tICAgIGVsc2UKLS0gICAgICAkMT0iKCRbXSQxIHx8ICQyKSIKLS0gICAgZmkKLS0gIGZpCi0rICBHTlVMSUJfW11tNF90cmFuc2xpdChbWyQxXV0sCi0rICAgIFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLV0sCi0rICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX10pPWdsX01PRFVMRV9JTkRJQ0FUT1JfQ09ORElUSU9OCi0gXSkKLSAKLSAjIGdsX01PRFVMRV9JTkRJQ0FUT1IoW21vZHVsZW5hbWVdKQotQEAgLTIxMSwzNSArMTUxLDYgQEAgbTRfaWZuZGVmKFtBU19WQVJfSUZdLAotIFttNF9kZWZpbmUoW0FTX1ZBUl9JRl0sCi0gW0FTX0lGKFt0ZXN0IHgiQVNfVkFSX0dFVChbJDFdKSIgPSB4IiIkMl0sIFskM10sIFskNF0pXSldKQotIAotLSMgZ2xfUFJPR19BUl9SQU5MSUIKLS0jIERldGVybWluZXMgdGhlIHZhbHVlcyBmb3IgQVIsIEFSRkxBR1MsIFJBTkxJQiB0aGF0IGZpdCB3aXRoIHRoZSBjb21waWxlci4KLS1BQ19ERUZVTihbZ2xfUFJPR19BUl9SQU5MSUJdLAotLVsKLS0gIGRubCBNaW5peCAzIGNvbWVzIHdpdGggdHdvIHRvb2xjaGFpbnM6IFRoZSBBbXN0ZXJkYW0gQ29tcGlsZXIgS2l0IGNvbXBpbGVyCi0tICBkbmwgYXMgImNjIiwgYW5kIEdDQyBhcyAiZ2NjIi4gVGhleSBoYXZlIGRpZmZlcmVudCBvYmplY3QgZmlsZSBmb3JtYXRzIGFuZAotLSAgZG5sIGxpYnJhcnkgZm9ybWF0cy4gSW4gcGFydGljdWxhciwgdGhlIEdOVSBiaW51dGlscyBwcm9ncmFtcyBhciwgcmFubGliCi0tICBkbmwgcHJvZHVjZSBsaWJyYXJpZXMgdGhhdCB3b3JrIG9ubHkgd2l0aCBnY2MsIG5vdCB3aXRoIGNjLgotLSAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCi0tICBBQ19FR1JFUF9DUFAoW0Ftc3RlcmRhbV0sCi0tICAgIFsKLS0jaWZkZWYgX19BQ0tfXwotLUFtc3RlcmRhbQotLSNlbmRpZgotLSAgICBdLAotLSAgICBbQVI9J2NjIC1jLmEnCi0tICAgICBBUkZMQUdTPSctbycKLS0gICAgIFJBTkxJQj0nOicKLS0gICAgXSwKLS0gICAgW2RubCBVc2UgdGhlIEF1dG9tYWtlLWRvY3VtZW50ZWQgZGVmYXVsdCB2YWx1ZXMgZm9yIEFSIGFuZCBBUkZMQUdTLgotLSAgICAgQVI9J2FyJwotLSAgICAgQVJGTEFHUz0nY3J1JwotLSAgICAgZG5sIFVzZSB0aGUgcmFubGliIHByb2dyYW0gaWYgaXQgaXMgYXZhaWxhYmxlLgotLSAgICAgQUNfUFJPR19SQU5MSUIKLS0gICAgXSkKLS0gIEFDX1NVQlNUKFtBUl0pCi0tICBBQ19TVUJTVChbQVJGTEFHU10pCi0tXSkKLS0KLSAjIEFDX1BST0dfTUtESVJfUAotICMgaXMgYSBiYWNrcG9ydCBvZiBhdXRvY29uZi0yLjYwJ3MgQUNfUFJPR19NS0RJUl9QLCB3aXRoIGEgZml4Ci0gIyBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIGF1dG9tYWtlLTEuOS42IGZyb20gYXV0b2NvbmYtMi42Mi4KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9nbnVsaWItY29tcC5tNCBsaWJpY29udi0xLjE0L3NyY200L2dudWxpYi1jb21wLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2dudWxpYi1jb21wLm00CTIwMTEtMDgtMDcgMDY6NDI6MTIuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9nbnVsaWItY29tcC5tNAkyMDEyLTAxLTA4IDAyOjA3OjQzLjkyMjQ4NDYzMCAtMDgwMAotQEAgLTI1LDEyICsyNSwxNCBAQCBBQ19ERUZVTihbZ2xfRUFSTFldLAotICAgbTRfcGF0dGVybl9hbGxvdyhbXmdsX0VTJF0pZG5sIGEgdmFsaWQgbG9jYWxlIG5hbWUKLSAgIG00X3BhdHRlcm5fYWxsb3coW15nbF9MSUJPQkpTJF0pZG5sIGEgdmFyaWFibGUKLSAgIG00X3BhdHRlcm5fYWxsb3coW15nbF9MVExJQk9CSlMkXSlkbmwgYSB2YXJpYWJsZQotLSAgQUNfUkVRVUlSRShbZ2xfUFJPR19BUl9SQU5MSUJdKQotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19SQU5MSUJdKQotICAgQUNfUkVRVUlSRShbQU1fUFJPR19DQ19DX09dKQotICAgIyBDb2RlIGZyb20gbW9kdWxlIGFsbG9jYS1vcHQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgYWxsb2NhdG9yOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIGFyZWFkbGluazoKLSsgICMgQ29kZSBmcm9tIG1vZHVsZSBhcmctbm9ubnVsbDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBiaW5hcnktaW86Ci0rICAjIENvZGUgZnJvbSBtb2R1bGUgYysrZGVmczoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBjYW5vbmljYWxpemUtbGdwbDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBjYXJlYWRsaW5rYXQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgZG9zbmFtZToKLUBAIC00Niw3ICs0OCw2IEBAIEFDX0RFRlVOKFtnbF9FQVJMWV0sCi0gICAjIENvZGUgZnJvbSBtb2R1bGUgaGF2ZWxpYjoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBpbmNsdWRlX25leHQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgaW50cHJvcHM6Ci0tICAjIENvZGUgZnJvbSBtb2R1bGUgbGFyZ2VmaWxlOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIGxpYmljb252LW1pc2M6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgbHN0YXQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgbWFsbG9jYToKLUBAIC02NCwxMCArNjUsNiBAQCBBQ19ERUZVTihbZ2xfRUFSTFldLAotICAgIyBDb2RlIGZyb20gbW9kdWxlIHNpZ25hbDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzaWdwaXBlOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHNpZ3Byb2NtYXNrOgotLSAgIyBDb2RlIGZyb20gbW9kdWxlIHNuaXBwZXQvX05vcmV0dXJuOgotLSAgIyBDb2RlIGZyb20gbW9kdWxlIHNuaXBwZXQvYXJnLW5vbm51bGw6Ci0tICAjIENvZGUgZnJvbSBtb2R1bGUgc25pcHBldC9jKytkZWZzOgotLSAgIyBDb2RlIGZyb20gbW9kdWxlIHNuaXBwZXQvd2Fybi1vbi11c2U6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc3NpemVfdDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdGF0OgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHN0ZGJvb2w6Ci1AQCAtNzcsNyArNzQsNiBAQCBBQ19ERUZVTihbZ2xfRUFSTFldLAotICAgIyBDb2RlIGZyb20gbW9kdWxlIHN0ZGxpYjoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJlcToKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJlcnJvcjoKLS0gICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJlcnJvci1vdmVycmlkZToKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJpbmc6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc3lzX3N0YXQ6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgdGltZToKLUBAIC04Nyw2ICs4Myw3IEBAIEFDX0RFRlVOKFtnbF9FQVJMWV0sCi0gICAjIENvZGUgZnJvbSBtb2R1bGUgdW5pd2lkdGgvd2lkdGg6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgdW5sb2NrZWQtaW86Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgdmVyaWZ5OgotKyAgIyBDb2RlIGZyb20gbW9kdWxlIHdhcm4tb24tdXNlOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHhhbGxvYzoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSB4cmVhZGxpbms6Ci0gXSkKLUBAIC0xMDksOSArMTA2LDYgQEAgQUNfREVGVU4oW2dsX0lOSVRdLAotICAgZ2xfc291cmNlX2Jhc2U9J3NyY2xpYicKLSBnbF9GVU5DX0FMTE9DQQotIGdsX0NBTk9OSUNBTElaRV9MR1BMCi0taWYgdGVzdCAkSEFWRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FID0gMCB8fCB0ZXN0ICRSRVBMQUNFX0NBTk9OSUNBTElaRV9GSUxFX05BTUUgPSAxOyB0aGVuCi0tICBBQ19MSUJPQkooW2Nhbm9uaWNhbGl6ZS1sZ3BsXSkKLS1maQotIGdsX01PRFVMRV9JTkRJQ0FUT1IoW2Nhbm9uaWNhbGl6ZS1sZ3BsXSkKLSBnbF9TVERMSUJfTU9EVUxFX0lORElDQVRPUihbY2Fub25pY2FsaXplX2ZpbGVfbmFtZV0pCi0gZ2xfU1RETElCX01PRFVMRV9JTkRJQ0FUT1IoW3JlYWxwYXRoXSkKLUBAIC0xMjEsMTAgKzExNSw2IEBAIGdsX0VOVklST04KLSBnbF9VTklTVERfTU9EVUxFX0lORElDQVRPUihbZW52aXJvbl0pCi0gZ2xfSEVBREVSX0VSUk5PX0gKLSBnbF9FUlJPUgotLWlmIHRlc3QgJGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lID0gbm87IHRoZW4KLS0gIEFDX0xJQk9CSihbZXJyb3JdKQotLSAgZ2xfUFJFUkVRX0VSUk9SCi0tZmkKLSBtNF9pZmRlZihbQU1fWEdFVFRFWFRfT1BUSU9OXSwKLSAgIFtBTV9dW1hHRVRURVhUX09QVElPTihbLS1mbGFnPWVycm9yOjM6Yy1mb3JtYXRdKQotICAgIEFNX11bWEdFVFRFWFRfT1BUSU9OKFstLWZsYWc9ZXJyb3JfYXRfbGluZTo1OmMtZm9ybWF0XSldKQotQEAgLTEzNCw0MyArMTI0LDI2IEBAIEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oWzAuMTguMV0pCi0gQUNfU1VCU1QoW0xJQklOVExdKQotIEFDX1NVQlNUKFtMVExJQklOVExdKQotIGdsX0ZVTkNfTFNUQVQKLS1pZiB0ZXN0ICRSRVBMQUNFX0xTVEFUID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtsc3RhdF0pCi0tICBnbF9QUkVSRVFfTFNUQVQKLS1maQotIGdsX1NZU19TVEFUX01PRFVMRV9JTkRJQ0FUT1IoW2xzdGF0XSkKLSBnbF9NQUxMT0NBCi0gQUNfVFlQRV9NQlNUQVRFX1QKLSBnbF9GVU5DX01FTU1PVkUKLS1pZiB0ZXN0ICRhY19jdl9mdW5jX21lbW1vdmUgPSBubzsgdGhlbgotLSAgQUNfTElCT0JKKFttZW1tb3ZlXSkKLS0gIGdsX1BSRVJFUV9NRU1NT1ZFCi0tZmkKLSBnbF9NVUxUSUFSQ0gKLSBnbF9QQVRITUFYCi0gQUNfQ0hFQ0tfREVDTFMoW3Byb2dyYW1faW52b2NhdGlvbl9uYW1lXSwgW10sIFtdLCBbI2luY2x1ZGUgPGVycm5vLmg+XSkKLSBBQ19DSEVDS19ERUNMUyhbcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWVdLCBbXSwgW10sIFsjaW5jbHVkZSA8ZXJybm8uaD5dKQotIGdsX0ZVTkNfUkVBRAotLWlmIHRlc3QgJFJFUExBQ0VfUkVBRCA9IDE7IHRoZW4KLS0gIEFDX0xJQk9CSihbcmVhZF0pCi0tZmkKLSBnbF9VTklTVERfTU9EVUxFX0lORElDQVRPUihbcmVhZF0pCi0gZ2xfRlVOQ19SRUFETElOSwotLWlmIHRlc3QgJEhBVkVfUkVBRExJTksgPSAwIHx8IHRlc3QgJFJFUExBQ0VfUkVBRExJTksgPSAxOyB0aGVuCi0tICBBQ19MSUJPQkooW3JlYWRsaW5rXSkKLS0gIGdsX1BSRVJFUV9SRUFETElOSwotLWZpCi0gZ2xfVU5JU1REX01PRFVMRV9JTkRJQ0FUT1IoW3JlYWRsaW5rXSkKLSBnbF9SRUxPQ0FUQUJMRShbJGdsX3NvdXJjZV9iYXNlXSkKLS1pZiB0ZXN0ICRSRUxPQ0FUQUJMRSA9IHllczsgdGhlbgotLSAgQUNfTElCT0JKKFtwcm9ncmVsb2NdKQotLWZpCi0gZ2xfRlVOQ19SRUFETElOS19TRVBBUkFURQotIGdsX0NBTk9OSUNBTElaRV9MR1BMX1NFUEFSQVRFCi0gZ2xfTUFMTE9DQQotLWdsX1JFTE9DQVRBQkxFX0xJQlJBUlkKLStnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZX1NFUEFSQVRFCi0gZ2xfRlVOQ19TRVRFTlZfU0VQQVJBVEUKLS1nbF9QUkVSRVFfU0FGRV9SRUFECi0rZ2xfRlVOQ19TVFJFUlJPUl9TRVBBUkFURQotK2dsX1NBRkVfUkVBRAotIGdsX1NJR05BTF9ICi0gZ2xfU0lHTkFMX1NJR1BJUEUKLSBkbmwgRGVmaW5lIHRoZSBDIG1hY3JvIEdOVUxJQl9TSUdQSVBFIHRvIDEuCi1AQCAtMTg2LDE3ICsxNTksOSBAQCBkbmwgRGVmaW5lIHRoZSBzdWJzdGl0dXRlZCB2YXJpYWJsZSBHTlVMCi0gQUNfUkVRVUlSRShbZ2xfVU5JU1REX0hfREVGQVVMVFNdKQotIEdOVUxJQl9VTklTVERfSF9TSUdQSVBFPTEKLSBnbF9TSUdOQUxCTE9DS0lORwotLWlmIHRlc3QgJEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkcgPSAwOyB0aGVuCi0tICBBQ19MSUJPQkooW3NpZ3Byb2NtYXNrXSkKLS0gIGdsX1BSRVJFUV9TSUdQUk9DTUFTSwotLWZpCi0gZ2xfU0lHTkFMX01PRFVMRV9JTkRJQ0FUT1IoW3NpZ3Byb2NtYXNrXSkKLSBndF9UWVBFX1NTSVpFX1QKLSBnbF9GVU5DX1NUQVQKLS1pZiB0ZXN0ICRSRVBMQUNFX1NUQVQgPSAxOyB0aGVuCi0tICBBQ19MSUJPQkooW3N0YXRdKQotLSAgZ2xfUFJFUkVRX1NUQVQKLS1maQotIGdsX1NZU19TVEFUX01PRFVMRV9JTkRJQ0FUT1IoW3N0YXRdKQotIEFNX1NUREJPT0xfSAotIGdsX1NURERFRl9ICi1AQCAtMjA0LDE3ICsxNjksNyBAQCBnbF9TVERJTlRfSAotIGdsX1NURElPX0gKLSBnbF9TVERMSUJfSAotIGdsX0ZVTkNfU1RSRVJST1IKLS1pZiB0ZXN0ICRSRVBMQUNFX1NUUkVSUk9SID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtzdHJlcnJvcl0pCi0tZmkKLS1nbF9NT0RVTEVfSU5ESUNBVE9SKFtzdHJlcnJvcl0pCi0gZ2xfU1RSSU5HX01PRFVMRV9JTkRJQ0FUT1IoW3N0cmVycm9yXSkKLS1BQ19SRVFVSVJFKFtnbF9IRUFERVJfRVJSTk9fSF0pCi0tQUNfUkVRVUlSRShbZ2xfRlVOQ19TVFJFUlJPUl8wXSkKLS1pZiB0ZXN0IC1uICIkRVJSTk9fSCIgfHwgdGVzdCAkUkVQTEFDRV9TVFJFUlJPUl8wID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtzdHJlcnJvci1vdmVycmlkZV0pCi0tICBnbF9QUkVSRVFfU1lTX0hfV0lOU09DSzIKLS1maQotIGdsX0hFQURFUl9TVFJJTkdfSAotIGdsX0hFQURFUl9TWVNfU1RBVF9ICi0gQUNfUFJPR19NS0RJUl9QCi1AQCAtMzY0LDE0ICszMTksMTMgQEAgQUNfREVGVU4oW2dsdGVzdHNfTElCU09VUkNFU10sIFsKLSAjIFRoaXMgbWFjcm8gcmVjb3JkcyB0aGUgbGlzdCBvZiBmaWxlcyB3aGljaCBoYXZlIGJlZW4gaW5zdGFsbGVkIGJ5Ci0gIyBnbnVsaWItdG9vbCBhbmQgbWF5IGJlIHJlbW92ZWQgYnkgZnV0dXJlIGdudWxpYi10b29sIGludm9jYXRpb25zLgotIEFDX0RFRlVOKFtnbF9GSUxFX0xJU1RdLCBbCi0rICBidWlsZC1hdXgvYXJnLW5vbm51bGwuaAotKyAgYnVpbGQtYXV4L2MrK2RlZnMuaAotICAgYnVpbGQtYXV4L2NvbmZpZy5saWJwYXRoCi0gICBidWlsZC1hdXgvY29uZmlnLnJwYXRoCi0gICBidWlsZC1hdXgvaW5zdGFsbC1yZWxvYwotICAgYnVpbGQtYXV4L3JlbG9jLWxkZmxhZ3MKLS0gIGJ1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oCi0tICBidWlsZC1hdXgvc25pcHBldC9hcmctbm9ubnVsbC5oCi0tICBidWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmgKLS0gIGJ1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgKLSsgIGJ1aWxkLWF1eC93YXJuLW9uLXVzZS5oCi0gICBkb2MvcmVsb2NhdGFibGUudGV4aQotICAgbGliL2FsbG9jYS5pbi5oCi0gICBsaWIvYWxsb2NhdG9yLmMKLUBAIC00MTksOCArMzczLDYgQEAgQUNfREVGVU4oW2dsX0ZJTEVfTElTVF0sIFsKLSAgIGxpYi9zdGRpby5pbi5oCi0gICBsaWIvc3RkbGliLmluLmgKLSAgIGxpYi9zdHJlcS5oCi0tICBsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuYwotLSAgbGliL3N0cmVycm9yLW92ZXJyaWRlLmgKLSAgIGxpYi9zdHJlcnJvci5jCi0gICBsaWIvc3RyaW5nLmluLmgKLSAgIGxpYi9zeXNfc3RhdC5pbi5oCi1AQCAtNDYzLDcgKzQxNSw2IEBAIEFDX0RFRlVOKFtnbF9GSUxFX0xJU1RdLCBbCi0gICBtNC9pbnRtYXgubTQKLSAgIG00L2ludHR5cGVzLXByaS5tNAotICAgbTQvaW50dHlwZXNfaC5tNAotLSAgbTQvbGFyZ2VmaWxlLm00Ci0gICBtNC9sY21lc3NhZ2UubTQKLSAgIG00L2xpYi1sZC5tNAotICAgbTQvbGliLWxpbmsubTQKLUBAIC01MDIsNyArNDUzLDYgQEAgQUNfREVGVU4oW2dsX0ZJTEVfTElTVF0sIFsKLSAgIG00L3N0ZGxpYl9oLm00Ci0gICBtNC9zdHJlcnJvci5tNAotICAgbTQvc3RyaW5nX2gubTQKLS0gIG00L3N5c19zb2NrZXRfaC5tNAotICAgbTQvc3lzX3N0YXRfaC5tNAotICAgbTQvdGhyZWFkbGliLm00Ci0gICBtNC90aW1lX2gubTQKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9pbmNsdWRlX25leHQubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9pbmNsdWRlX25leHQubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvaW5jbHVkZV9uZXh0Lm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9pbmNsdWRlX25leHQubTQJMjAxMi0wMS0wOCAwMjowNzo0MC42NTA0ODQ0NzIgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgaW5jbHVkZV9uZXh0Lm00IHNlcmlhbCAyMAotKyMgaW5jbHVkZV9uZXh0Lm00IHNlcmlhbCAxOAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xNzUsMTMgKzE3NSwxMSBAQCBBQ19ERUZVTihbZ2xfTkVYVF9IRUFERVJTX0lOVEVSTkFMXSwKLSAgICAgW0FDX0NIRUNLX0hFQURFUlNfT05DRShbJDFdKQotICAgICBdKQotIAotLWRubCBGSVhNRTogZ2xfbmV4dF9oZWFkZXIgYW5kIGdsX2hlYWRlcl9leGlzdHMgbXVzdCBiZSB1c2VkIHVucXVvdGVkCi0tZG5sIHVudGlsIHdlIGNhbiBhc3N1bWUgYXV0b2NvbmYgMi42NCBvciBuZXdlci4KLSAgIG00X2ZvcmVhY2hfdyhbZ2xfSEVBREVSX05BTUVdLCBbJDFdLAotICAgICBbQVNfVkFSX1BVU0hERUYoW2dsX25leHRfaGVhZGVyXSwKLSAgICAgICAgICAgICAgICAgICAgIFtnbF9jdl9uZXh0X11tNF9kZWZuKFtnbF9IRUFERVJfTkFNRV0pKQotICAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KLS0gICAgICAgQVNfVkFSX1NFVChnbF9uZXh0X2hlYWRlciwgWyc8J2dsX0hFQURFUl9OQU1FJz4nXSkKLSsgICAgICAgQVNfVkFSX1NFVChbZ2xfbmV4dF9oZWFkZXJdLCBbJzwnZ2xfSEVBREVSX05BTUUnPiddKQotICAgICAgZWxzZQotICAgICAgICBBQ19DQUNIRV9DSEVDSygKLSAgICAgICAgICBbYWJzb2x1dGUgbmFtZSBvZiA8XW00X2RlZm4oW2dsX0hFQURFUl9OQU1FXSlbPl0sCi1AQCAtMjEwLDcgKzIwOCw3IEBAIGRubCB1bnRpbCB3ZSBjYW4gYXNzdW1lIGF1dG9jb25mIDIuNjQgb3IKLSAgICAgICAgICAgICAgICBkbmwgZXZhbCBpcyBuZWNlc3NhcnkgdG8gZXhwYW5kIGdsX2Fic25hbWVfY3BwLgotICAgICAgICAgICAgICAgIGRubCBVbHRyaXggYW5kIFB5cmFtaWQgc2ggcmVmdXNlIHRvIHJlZGlyZWN0IG91dHB1dCBvZiBldmFsLAotICAgICAgICAgICAgICAgIGRubCBzbyB1c2Ugc3Vic2hlbGwuCi0tICAgICAgICAgICAgICAgQVNfVkFSX1NFVChnbF9uZXh0X2hlYWRlciwKLSsgICAgICAgICAgICAgICBBU19WQVJfU0VUKFtnbF9uZXh0X2hlYWRlcl0sCi0gICAgICAgICAgICAgICAgICBbJyInYChldmFsICIkZ2xfYWJzbmFtZV9jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JkFTX01FU1NBR0VfTE9HX0ZEIHwKLSAgICAgICAgICAgICAgICAgICBzZWQgLW4gJ1wjL11tNF9kZWZuKFtnbF9IRUFERVJfTkFNRV0pWyN7Ci0gICAgICAgICAgICAgICAgICAgICBzIy4qIlwoLiovXW00X2RlZm4oW2dsX0hFQURFUl9OQU1FXSlbXCkiLiojXDEjCi1AQCAtMjIwLDIwICsyMTgsMjAgQEAgZG5sIHVudGlsIHdlIGNhbiBhc3N1bWUgYXV0b2NvbmYgMi42NCBvcgotICAgICAgICAgICAgICAgICAgIH0nYCciJ10pCi0gICAgICAgICAgIG00X2lmKFskMl0sIFtjaGVja10sCi0gICAgICAgICAgICAgW2Vsc2UKLS0gICAgICAgICAgICAgICBBU19WQVJfU0VUKGdsX25leHRfaGVhZGVyLCBbJzwnZ2xfSEVBREVSX05BTUUnPiddKQotKyAgICAgICAgICAgICAgIEFTX1ZBUl9TRVQoW2dsX25leHRfaGVhZGVyXSwgWyc8J2dsX0hFQURFUl9OQU1FJz4nXSkKLSAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICBdKQotICAgICAgICAgIF0pCi0gICAgICBmaQotICAgICAgQUNfU1VCU1QoCi0gICAgICAgIEFTX1RSX0NQUChbTkVYVF9dbTRfZGVmbihbZ2xfSEVBREVSX05BTUVdKSksCi0tICAgICAgIFtBU19WQVJfR0VUKGdsX25leHRfaGVhZGVyKV0pCi0rICAgICAgIFtBU19WQVJfR0VUKFtnbF9uZXh0X2hlYWRlcl0pXSkKLSAgICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzIHx8IHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0gYnVnZ3k7IHRoZW4KLSAgICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlX25leHQnCi0gICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8J2dsX0hFQURFUl9OQU1FJz4nCi0gICAgICBlbHNlCi0gICAgICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJUkVDVElWRT0naW5jbHVkZScKLS0gICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9QVNfVkFSX0dFVChnbF9uZXh0X2hlYWRlcikKLSsgICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9QVNfVkFSX0dFVChbZ2xfbmV4dF9oZWFkZXJdKQotICAgICAgZmkKLSAgICAgIEFDX1NVQlNUKAotICAgICAgICBBU19UUl9DUFAoW05FWFRfQVNfRklSU1RfRElSRUNUSVZFX11tNF9kZWZuKFtnbF9IRUFERVJfTkFNRV0pKSwKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9sYXJnZWZpbGUubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9sYXJnZWZpbGUubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbGFyZ2VmaWxlLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9sYXJnZWZpbGUubTQJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLUBAIC0xLDEwNCArMCwwIEBACi0tIyBFbmFibGUgbGFyZ2UgZmlsZXMgb24gc3lzdGVtcyB3aGVyZSB0aGlzIGlzIG5vdCB0aGUgZGVmYXVsdC4KLS0KLS0jIENvcHlyaWdodCAxOTkyLTE5OTYsIDE5OTgtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0tIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotLSMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotLQotLSMgVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiB3b3JrcyBhcm91bmQgYSBwcm9ibGVtIGluIGF1dG9jb25mIDw9IDIuNjg7Ci0tIyBBQ19TWVNfTEFSR0VGSUxFIGRvZXMgbm90IGNvbmZpZ3VyZSBmb3IgbGFyZ2UgaW5vZGVzIG9uIE1hYyBPUyBYIDEwLjUuCi0tbTRfdmVyc2lvbl9wcmVyZXEoWzIuNjldLCBbXSAsWwotLQotLSMgX0FDX1NZU19MQVJHRUZJTEVfVEVTVF9JTkNMVURFUwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbX0FDX1NZU19MQVJHRUZJTEVfVEVTVF9JTkNMVURFU10sCi0tW0AlOkBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0gLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCi0tICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLS0gICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotLSAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCi0tQCU6QGRlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0tICBpbnQgb2ZmX3RfaXNfbGFyZ2VbWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCi0tCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0tCQkgICAgICA/IDEgOiAtMV1dO1tdZG5sCi0tXSkKLS0KLS0KLS0jIF9BQ19TWVNfTEFSR0VGSUxFX01BQ1JPX1ZBTFVFKEMtTUFDUk8sIFZBTFVFLAotLSMJCQkJQ0FDSEUtVkFSLAotLSMJCQkJREVTQ1JJUFRJT04sCi0tIwkJCQlQUk9MT0dVRSwgW0ZVTkNUSU9OLUJPRFldKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW19BQ19TWVNfTEFSR0VGSUxFX01BQ1JPX1ZBTFVFXSwKLS1bQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkMSB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzXSwgWyQzXSwKLS1bd2hpbGUgOjsgZG8KLS0gIG00X2lmdmFsKFskNl0sIFtBQ19MSU5LX0lGRUxTRV0sIFtBQ19DT01QSUxFX0lGRUxTRV0pKAotLSAgICBbQUNfTEFOR19QUk9HUkFNKFskNV0sIFskNl0pXSwKLS0gICAgWyQzPW5vOyBicmVha10pCi0tICBtNF9pZnZhbChbJDZdLCBbQUNfTElOS19JRkVMU0VdLCBbQUNfQ09NUElMRV9JRkVMU0VdKSgKLS0gICAgW0FDX0xBTkdfUFJPR1JBTShbQCU6QGRlZmluZSAkMSAkMgotLSQ1XSwgWyQ2XSldLAotLSAgICBbJDM9JDI7IGJyZWFrXSkKLS0gICQzPXVua25vd24KLS0gIGJyZWFrCi0tZG9uZV0pCi0tY2FzZSAkJDMgaW4gIygKLS0gIG5vIHwgdW5rbm93bikgOzsKLS0gICopIEFDX0RFRklORV9VTlFVT1RFRChbJDFdLCBbJCQzXSwgWyQ0XSk7OwotLWVzYWMKLS1ybSAtcmYgY29uZnRlc3QqW11kbmwKLS1dKSMgX0FDX1NZU19MQVJHRUZJTEVfTUFDUk9fVkFMVUUKLS0KLS0KLS0jIEFDX1NZU19MQVJHRUZJTEUKLS0jIC0tLS0tLS0tLS0tLS0tLS0KLS0jIEJ5IGRlZmF1bHQsIG1hbnkgaG9zdHMgd29uJ3QgbGV0IHByb2dyYW1zIGFjY2VzcyBsYXJnZSBmaWxlczsKLS0jIG9uZSBtdXN0IHVzZSBzcGVjaWFsIGNvbXBpbGVyIG9wdGlvbnMgdG8gZ2V0IGxhcmdlLWZpbGUgYWNjZXNzIHRvIHdvcmsuCi0tIyBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoaXMgYnJhaW4gZGFtYWdlIHBsZWFzZSBzZWU6Ci0tIyBodHRwOi8vd3d3LnVuaXgtc3lzdGVtcy5vcmcvdmVyc2lvbjIvd2hhdHNuZXcvbGZzMjBtYXIuaHRtbAotLUFDX0RFRlVOKFtBQ19TWVNfTEFSR0VGSUxFXSwKLS1bQUNfQVJHX0VOQUJMRShsYXJnZWZpbGUsCi0tCSAgICAgICBbICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzXSkKLS1pZiB0ZXN0ICIkZW5hYmxlX2xhcmdlZmlsZSIgIT0gbm87IHRoZW4KLS0KLS0gIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9wdGlvbnMgbmVlZGVkIGZvciBsYXJnZSBmaWxlc10sCi0tICAgIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MsCi0tICAgIFthY19jdl9zeXNfbGFyZ2VmaWxlX0NDPW5vCi0tICAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgYWNfc2F2ZV9DQz0kQ0MKLS0gICAgICAgd2hpbGUgOjsgZG8KLS0JICMgSVJJWCA2LjIgYW5kIGxhdGVyIGRvIG5vdCBzdXBwb3J0IGxhcmdlIGZpbGVzIGJ5IGRlZmF1bHQsCi0tCSAjIHNvIHVzZSB0aGUgQyBjb21waWxlcidzIC1uMzIgb3B0aW9uIGlmIHRoYXQgaGVscHMuCi0tCSBBQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oW19BQ19TWVNfTEFSR0VGSUxFX1RFU1RfSU5DTFVERVNdKV0pCi0tCSBBQ19DT01QSUxFX0lGRUxTRShbXSwgW2JyZWFrXSkKLS0JIENDPSIkQ0MgLW4zMiIKLS0JIEFDX0NPTVBJTEVfSUZFTFNFKFtdLCBbYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz0nIC1uMzInOyBicmVha10pCi0tCSBicmVhawotLSAgICAgICBkb25lCi0tICAgICAgIENDPSRhY19zYXZlX0NDCi0tICAgICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgZmldKQotLSAgaWYgdGVzdCAiJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiICE9IG5vOyB0aGVuCi0tICAgIENDPSRDQyRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDCi0tICBmaQotLQotLSAgX0FDX1NZU19MQVJHRUZJTEVfTUFDUk9fVkFMVUUoX0ZJTEVfT0ZGU0VUX0JJVFMsIDY0LAotLSAgICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cywKLS0gICAgW051bWJlciBvZiBiaXRzIGluIGEgZmlsZSBvZmZzZXQsIG9uIGhvc3RzIHdoZXJlIHRoaXMgaXMgc2V0dGFibGUuXSwKLS0gICAgW19BQ19TWVNfTEFSR0VGSUxFX1RFU1RfSU5DTFVERVNdKQotLSAgaWYgdGVzdCAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgPSB1bmtub3duOyB0aGVuCi0tICAgIF9BQ19TWVNfTEFSR0VGSUxFX01BQ1JPX1ZBTFVFKF9MQVJHRV9GSUxFUywgMSwKLS0gICAgICBhY19jdl9zeXNfbGFyZ2VfZmlsZXMsCi0tICAgICAgW0RlZmluZSBmb3IgbGFyZ2UgZmlsZXMsIG9uIEFJWC1zdHlsZSBob3N0cy5dLAotLSAgICAgIFtfQUNfU1lTX0xBUkdFRklMRV9URVNUX0lOQ0xVREVTXSkKLS0gIGZpCi0tCi0tICBBSF9WRVJCQVRJTShbX0RBUldJTl9VU0VfNjRfQklUX0lOT0RFXSwKLS1bLyogRW5hYmxlIGxhcmdlIGlub2RlIG51bWJlcnMgb24gTWFjIE9TIFguICAqLwotLSNpZm5kZWYgX0RBUldJTl9VU0VfNjRfQklUX0lOT0RFCi0tIyBkZWZpbmUgX0RBUldJTl9VU0VfNjRfQklUX0lOT0RFIDEKLS0jZW5kaWZdKQotLWZpCi0tXSkjIEFDX1NZU19MQVJHRUZJTEUKLS0KLS1dKSMgbTRfdmVyc2lvbl9wcmVyZXEgMi42OQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2xzdGF0Lm00IGxpYmljb252LTEuMTQvc3JjbTQvbHN0YXQubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbHN0YXQubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2xzdGF0Lm00CTIwMTItMDEtMDggMDI6MDc6NDAuNzIyNDg0NDc2IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHNlcmlhbCAyMwotKyMgc2VyaWFsIDIxCi0gCi0gIyBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMSwgMjAwMy0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMKLUBAIC0xNSwyOCArMTUsMjQgQEAgQUNfREVGVU4oW2dsX0ZVTkNfTFNUQVRdLAotICAgZG5sICIjZGVmaW5lIGxzdGF0IHN0YXQiLCBhbmQgbHN0YXQuYyBpcyBhIG5vLW9wLgotICAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbbHN0YXRdKQotICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19sc3RhdCA9IHllczsgdGhlbgotLSAgICBBQ19SRVFVSVJFKFtnbF9GVU5DX0xTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LXSkKLS0gICAgaWYgdGVzdCAkZ2xfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rID0gbm87IHRoZW4KLSsgICAgQUNfUkVRVUlSRShbQUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOS10pCi0rICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IG5vOyB0aGVuCi0rICAgICAgZG5sIE5vdGU6IEFDX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTksgZG9lcyBBQ19MSUJPQkooW2xzdGF0XSkuCi0gICAgICAgUkVQTEFDRV9MU1RBVD0xCi0gICAgIGZpCi0rICAgICMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvbHN0YXQuYy4KLSsgICAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKQotICAgZWxzZQotICAgICBIQVZFX0xTVEFUPTAKLSAgIGZpCi0gXSkKLSAKLS0jIFByZXJlcXVpc2l0ZXMgb2YgbGliL2xzdGF0LmMuCi0tQUNfREVGVU4oW2dsX1BSRVJFUV9MU1RBVF0sCi0rIyBSZWRlZmluZSBBQ19GVU5DX0xTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LLCBiZWNhdXNlIGl0IGlzIG5vIGxvbmdlcgotKyMgbWFpbnRhaW5lZCBpbiBBdXRvY29uZi4KLStBQ19ERUZVTihbQUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOS10sCi0gWwotLSAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKQotLSAgOgotLV0pCi0tCi0tQUNfREVGVU4oW2dsX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTktdLAotLVsKLS0gIGRubCBXZSBkb24ndCB1c2UgQUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSyBhbnkgbW9yZSwgYmVjYXVzZSBpdAotLSAgZG5sIGlzIG5vIGxvbmdlciBtYWludGFpbmVkIGluIEF1dG9jb25mIGFuZCBiZWNhdXNlIGl0IGludm9rZXMgQUNfTElCT0JKLgotICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgbHN0YXQgY29ycmVjdGx5IGhhbmRsZXMgdHJhaWxpbmcgc2xhc2hdLAotLSAgICBbZ2xfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rXSwKLSsgICAgW2FjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGlua10sCi0gICAgIFtybSAtZiBjb25mdGVzdC5zeW0gY29uZnRlc3QuZmlsZQotICAgICAgZWNobyA+Y29uZnRlc3QuZmlsZQotICAgICAgaWYgdGVzdCAiJGFzX2xuX3MiID0gImxuIC1zIiAmJiBsbiAtcyBjb25mdGVzdC5maWxlIGNvbmZ0ZXN0LnN5bTsgdGhlbgotQEAgLTQ5LDIyICs0NSwyNSBAQCBBQ19ERUZVTihbZ2xfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfCi0gICAgICAgICAgICAgICAgICBoYXZlIHRvIGNvbXBpbGUgYW5kIHVzZSB0aGUgbHN0YXQgd3JhcHBlci4gICovCi0gICAgICAgICAgICAgICByZXR1cm4gbHN0YXQgKCJjb25mdGVzdC5zeW0vIiwgJnNidWYpID09IDA7Ci0gICAgICAgICAgICAgXV0pXSwKLS0gICAgICAgICBbZ2xfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPXllc10sCi0tICAgICAgICAgW2dsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz1ub10sCi0rICAgICAgICAgW2FjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz15ZXNdLAotKyAgICAgICAgIFthY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm9dLAotICAgICAgICAgIFsjIFdoZW4gY3Jvc3MtY29tcGlsaW5nLCBiZSBwZXNzaW1pc3RpYyBzbyB3ZSB3aWxsIGVuZCB1cCB1c2luZyB0aGUKLSAgICAgICAgICAgIyByZXBsYWNlbWVudCB2ZXJzaW9uIG9mIGxzdGF0IHRoYXQgY2hlY2tzIGZvciB0cmFpbGluZyBzbGFzaGVzIGFuZAotICAgICAgICAgICAjIGNhbGxzIGxzdGF0IGEgc2Vjb25kIHRpbWUgd2hlbiBuZWNlc3NhcnkuCi0tICAgICAgICAgIGdsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz1ubwotKyAgICAgICAgICBhY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm8KLSAgICAgICAgICBdKQotICAgICAgZWxzZQotICAgICAgICAjIElmIHRoZSAnbG4gLXMnIGNvbW1hbmQgZmFpbGVkLCB0aGVuIHdlIHByb2JhYmx5IGRvbid0IGV2ZW4KLSAgICAgICAgIyBoYXZlIGFuIGxzdGF0IGZ1bmN0aW9uLgotLSAgICAgICBnbF9jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm8KLSsgICAgICAgYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPW5vCi0gICAgICBmaQotICAgICAgcm0gLWYgY29uZnRlc3Quc3ltIGNvbmZ0ZXN0LmZpbGUKLSAgICAgXSkKLS0gIHRlc3QgJGdsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IHllcyAmJgotKyAgdGVzdCAkYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rID0geWVzICYmCi0gICAgIEFDX0RFRklORV9VTlFVT1RFRChbTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTktdLCBbMV0sCi0gICAgICAgW0RlZmluZSB0byAxIGlmIGBsc3RhdCcgZGVyZWZlcmVuY2VzIGEgc3ltbGluayBzcGVjaWZpZWQKLSAgICAgICAgd2l0aCBhIHRyYWlsaW5nIHNsYXNoLl0pCi0rICBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayIgPSB4bm87IHRoZW4KLSsgICAgQUNfTElCT0JKKFtsc3RhdF0pCi0rICBmaQotIF0pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbWVtbW92ZS5tNCBsaWJpY29udi0xLjE0L3NyY200L21lbW1vdmUubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbWVtbW92ZS5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvbWVtbW92ZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjczODQ4NDQ3NyAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBtZW1tb3ZlLm00IHNlcmlhbCA0Ci0rIyBtZW1tb3ZlLm00IHNlcmlhbCAzCi0gZG5sIENvcHlyaWdodCAoQykgMjAwMiwgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTYsNyArNiwxMCBAQCBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvCi0gCi0gQUNfREVGVU4oW2dsX0ZVTkNfTUVNTU9WRV0sCi0gWwotLSAgQUNfQ0hFQ0tfRlVOQ1MoW21lbW1vdmVdKQotKyAgQUNfUkVQTEFDRV9GVU5DUyhbbWVtbW92ZV0pCi0rICBpZiB0ZXN0ICRhY19jdl9mdW5jX21lbW1vdmUgPSBubzsgdGhlbgotKyAgICBnbF9QUkVSRVFfTUVNTU9WRQotKyAgZmkKLSBdKQotIAotICMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvbWVtbW92ZS5jLgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3BhdGhtYXgubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9wYXRobWF4Lm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3BhdGhtYXgubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3BhdGhtYXgubTQJMjAxMi0wMS0wOCAwMjowNzo0MC43NTg0ODQ0NzggLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgcGF0aG1heC5tNCBzZXJpYWwgOQotKyMgcGF0aG1heC5tNCBzZXJpYWwgOAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMywgMjAwNS0yMDA2LCAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIGRubCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1AQCAtOCw1ICs4LDYgQEAgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsbwotIEFDX0RFRlVOKFtnbF9QQVRITUFYXSwKLSBbCi0gICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBsaWIvcGF0aG1heC5oLgotKyAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbcGF0aGNvbmZdKQotICAgQUNfQ0hFQ0tfSEVBREVSU19PTkNFKFtzeXMvcGFyYW0uaF0pCi0gXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9wby5tNCBsaWJpY29udi0xLjE0L3NyY200L3BvLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3BvLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9wby5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjc2NjQ4NDQ3NyAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBwby5tNCBzZXJpYWwgMTdhCi0rIyBwby5tNCBzZXJpYWwgMTcgKGdldHRleHQtMC4xOCkKLSBkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMTE4LDggKzExOCw3IEBAIGNoYW5nZXF1b3RlKFssXSlkbmwKLSAgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiI7IHRoZW4KLSAgICAgICAgICAgcm0gLWYgIiRhY19kaXIvUE9URklMRVMiCi0gICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIgotLSAgICAgICAgICBndF90YWI9YHByaW50ZiAnXHQnYAotLSAgICAgICAgICBjYXQgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiIgfCBzZWQgLWUgIi9eIy9kIiAtZSAiL15bICR7Z3RfdGFifV0qXCQvZCIgLWUgInMsLiosICAgICAkdG9wX3NyY2Rpci8mIFxcXFwsIiB8IHNlZCAtZSAiXCRzL1woLipcKSBcXFxcL1wxLyIgPiAiJGFjX2Rpci9QT1RGSUxFUyIKLSsgICAgICAgICAgY2F0ICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iIHwgc2VkIC1lICIvXiMvZCIgLWUgIi9eWyAJXSpcJC9kIiAtZSAicywuKiwgICAgICR0b3Bfc3JjZGlyLyYgXFxcXCwiIHwgc2VkIC1lICJcJHMvXCguKlwpIFxcXFwvXDEvIiA+ICIkYWNfZGlyL1BPVEZJTEVTIgotICAgICAgICAgICBQT01BS0VGSUxFREVQUz0iUE9URklMRVMuaW4iCi0gICAgICAgICAgICMgQUxMX0xJTkdVQVMsIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMgZGVwZW5kCi0gICAgICAgICAgICMgb24gJGFjX2RpciBidXQgZG9uJ3QgZGVwZW5kIG9uIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24KLUBAIC0yNTUsNyArMjU0LDYgQEAgRU9UCi0gICBmaQotIAotICAgIyBBIHNlZCBzY3JpcHQgdGhhdCBleHRyYWN0cyB0aGUgdmFsdWUgb2YgVkFSSUFCTEUgZnJvbSBhIE1ha2VmaWxlLgotLSAgdGFiPWBwcmludGYgJ1x0J2AKLSAgIHNlZF94X3ZhcmlhYmxlPScKLSAjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCi0geAotQEAgLTI2Myw5ICsyNjEsOSBAQCBzL1AvUC8KLSB4Ci0gdGEKLSAjIFllcyBpdCB3YXMgZW1wdHkuIExvb2sgaWYgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbi4KLS0vXlsnIiR7dGFifSInIF0qVkFSSUFCTEVbJyIke3RhYn0iJyBdKj0vewotKy9eWwkgXSpWQVJJQUJMRVsJIF0qPS97Ci0gICAjIFNlZW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24uCi0tICBzL15bJyIke3RhYn0iJyBdKlZBUklBQkxFWyciJHt0YWJ9IicgXSo9Ly8KLSsgIHMvXlsJIF0qVkFSSUFCTEVbCSBdKj0vLwotICAgYmEKLSB9Ci0gYmQKLUBAIC00MDcsMTUgKzQwNSwxNCBAQCBjaGFuZ2VxdW90ZShbLF0pZG5sCi0gICBmaQotIAotICAgc2VkIC1lICJzfEBQT1RGSUxFU19ERVBTQHwkUE9URklMRVNfREVQU3xnIiAtZSAic3xAUE9GSUxFU0B8JFBPRklMRVN8ZyIgLWUgInN8QFVQREFURVBPRklMRVNAfCRVUERBVEVQT0ZJTEVTfGciIC1lICJzfEBEVU1NWVBPRklMRVNAfCREVU1NWVBPRklMRVN8ZyIgLWUgInN8QEdNT0ZJTEVTQHwkR01PRklMRVN8ZyIgLWUgInN8QFBST1BFUlRJRVNGSUxFU0B8JFBST1BFUlRJRVNGSUxFU3xnIiAtZSAic3xAQ0xBU1NGSUxFU0B8JENMQVNTRklMRVN8ZyIgLWUgInN8QFFNRklMRVNAfCRRTUZJTEVTfGciIC1lICJzfEBNU0dGSUxFU0B8JE1TR0ZJTEVTfGciIC1lICJzfEBSRVNPVVJDRVNETExGSUxFU0B8JFJFU09VUkNFU0RMTEZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBKQVZBQ0FUQUxPR1NAfCRKQVZBQ0FUQUxPR1N8ZyIgLWUgInN8QFFUQ0FUQUxPR1NAfCRRVENBVEFMT0dTfGciIC1lICJzfEBUQ0xDQVRBTE9HU0B8JFRDTENBVEFMT0dTfGciIC1lICJzfEBDU0hBUlBDQVRBTE9HU0B8JENTSEFSUENBVEFMT0dTfGciIC1lICdzLF4jZGlzdGRpcjosZGlzdGRpcjosJyA8ICIkYWNfZmlsZSIgPiAiJGFjX2ZpbGUudG1wIgotLSAgdGFiPWBwcmludGYgJ1x0J2AKLSAgIGlmIGdyZXAgLWwgJ0BUQ0xDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIyBBZGQgZGVwZW5kZW5jaWVzIHRoYXQgY2Fubm90IGJlIGZvcm11bGF0ZWQgYXMgYSBzaW1wbGUgc3VmZml4IHJ1bGUuCi0gICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSAgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAotICAgICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgotICRmcm9iYmVkbGFuZy5tc2c6ICRsYW5nLnBvCi0tJHt0YWJ9QGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8iOyBcCi0tJHt0YWJ9XCQoTVNHRk1UKSAtYyAtLXRjbCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQotKwlAZWNobyAiXCQoTVNHRk1UKSAtYyAtLXRjbCAtZCBcJChzcmNkaXIpIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyI7IFwKLSsJXCQoTVNHRk1UKSAtYyAtLXRjbCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQotIEVPRgotICAgICBkb25lCi0gICBmaQotQEAgLTQyNSw4ICs0MjIsOCBAQCBFT0YKLSAgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZycgLWUgJ3MvXnNyLUNTL3NyLVNQLycgLWUgJ3MvQGxhdGluJC8tTGF0bi8nIC1lICdzL0BjeXJpbGxpYyQvLUN5cmwvJyAtZSAncy9ec3ItU1AkL3NyLVNQLUxhdG4vJyAtZSAncy9edXotVVokL3V6LVVaLUxhdG4vJ2AKLSAgICAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKLSAkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsOiAkbGFuZy5wbwotLSR7dGFifUBlY2hvICJcJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yIFwkKERPTUFJTikiOyBcCi0tJHt0YWJ9XCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yICJcJChET01BSU4pIiB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLSsJQGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgXCQoRE9NQUlOKSI7IFwKLSsJXCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yICJcJChET01BSU4pIiB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLSBFT0YKLSAgICAgZG9uZQotICAgZmkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWFkbGluay5tNCBsaWJpY29udi0xLjE0L3NyY200L3JlYWRsaW5rLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3JlYWRsaW5rLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWFkbGluay5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjc5MDQ4NDQ3OSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyByZWFkbGluay5tNCBzZXJpYWwgMTEKLSsjIHJlYWRsaW5rLm00IHNlcmlhbCAxMAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xMCw2ICsxMCw4IEBAIEFDX0RFRlVOKFtnbF9GVU5DX1JFQURMSU5LXSwKLSAgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW3JlYWRsaW5rXSkKLSAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfcmVhZGxpbmsgPSBubzsgdGhlbgotICAgICBIQVZFX1JFQURMSU5LPTAKLSsgICAgQUNfTElCT0JKKFtyZWFkbGlua10pCi0rICAgIGdsX1BSRVJFUV9SRUFETElOSwotICAgZWxzZQotICAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciByZWFkbGluayBzaWduYXR1cmUgaXMgY29ycmVjdF0sCi0gICAgICAgW2dsX2N2X2RlY2xfcmVhZGxpbmtfd29ya3NdLAotQEAgLTM4LDggKzQwLDEwIEBAIEFDX0RFRlVOKFtnbF9GVU5DX1JFQURMSU5LXSwKLSAgICAgICBBQ19ERUZJTkUoW1JFQURMSU5LX1RSQUlMSU5HX1NMQVNIX0JVR10sIFsxXSwgW0RlZmluZSB0byAxIGlmIHJlYWRsaW5rCi0gICAgICAgICBmYWlscyB0byByZWNvZ25pemUgYSB0cmFpbGluZyBzbGFzaC5dKQotICAgICAgIFJFUExBQ0VfUkVBRExJTks9MQotKyAgICAgIEFDX0xJQk9CSihbcmVhZGxpbmtdKQotICAgICBlbGlmIHRlc3QgIiRnbF9jdl9kZWNsX3JlYWRsaW5rX3dvcmtzIiAhPSB5ZXM7IHRoZW4KLSAgICAgICBSRVBMQUNFX1JFQURMSU5LPTEKLSsgICAgICBBQ19MSUJPQkooW3JlYWRsaW5rXSkKLSAgICAgZmkKLSAgIGZpCi0gXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWFkLm00IGxpYmljb252LTEuMTQvc3JjbTQvcmVhZC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWFkLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWFkLm00CTIwMTItMDEtMDggMDI6MDc6NDAuNzgyNDg0NDc4IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHJlYWQubTQgc2VyaWFsIDIKLSsjIHJlYWQubTQgc2VyaWFsIDEKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTE0LDYgKzE0LDcgQEAgQUNfREVGVU4oW2dsX0ZVTkNfUkVBRF0sCi0gICAgIGdsX05PTkJMT0NLSU5HX0lPCi0gICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfbm9uYmxvY2tpbmcgIT0geWVzOyB0aGVuCi0gICAgICAgUkVQTEFDRV9SRUFEPTEKLSsgICAgICBBQ19MSUJPQkooW3JlYWRdKQotICAgICBmaQotICAgXSkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3JlbG9jYXRhYmxlLWxpYi5tNCBsaWJpY29udi0xLjE0L3NyY200L3JlbG9jYXRhYmxlLWxpYi5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWxvY2F0YWJsZS1saWIubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3JlbG9jYXRhYmxlLWxpYi5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjc5ODQ4NDQ4MCAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyByZWxvY2F0YWJsZS1saWIubTQgc2VyaWFsIDYKLSsjIHJlbG9jYXRhYmxlLWxpYi5tNCBzZXJpYWwgNQotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUtMjAwNywgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTEwLDYgKzEwLDkgQEAgZG5sIFN1cHBvcnQgZm9yIHJlbG9jYXRhYmxlIGxpYnJhcmllcy4KLSBBQ19ERUZVTihbZ2xfUkVMT0NBVEFCTEVfTElCUkFSWV0sCi0gWwotICAgQUNfUkVRVUlSRShbZ2xfUkVMT0NBVEFCTEVfTElCUkFSWV9CT0RZXSkKLSsgIGlmIHRlc3QgJFJFTE9DQVRBQkxFID0geWVzOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbcmVsb2NhdGFibGVdKQotKyAgZmkKLSBdKQotIEFDX0RFRlVOKFtnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZX0JPRFldLAotIFsKLUBAIC0yOSw2ICszMiwxMyBAQCBBQ19ERUZVTihbZ2xfUkVMT0NBVEFCTEVfTElCUkFSWV9CT0RZXSwKLSAgIGZpCi0gXSkKLSAKLStkbmwgTGlrZSBnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZLCBleGNlcHQgcHJlcGFyZSBmb3Igc2VwYXJhdGUgY29tcGlsYXRpb24KLStkbmwgKG5vIEFDX0xJQk9CSikuCi0rQUNfREVGVU4oW2dsX1JFTE9DQVRBQkxFX0xJQlJBUllfU0VQQVJBVEVdLAotK1sKLSsgIEFDX1JFUVVJUkUoW2dsX1JFTE9DQVRBQkxFX0xJQlJBUllfQk9EWV0pCi0rXSkKLSsKLSBkbmwgU3VwcG9ydCBmb3IgcmVsb2NhdGFibGUgcGFja2FnZXMgZm9yIHdoaWNoIGl0IGlzIGEgbm9wLgotIEFDX0RFRlVOKFtnbF9SRUxPQ0FUQUJMRV9OT1BdLAotIFsKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWxvY2F0YWJsZS5tNCBsaWJpY29udi0xLjE0L3NyY200L3JlbG9jYXRhYmxlLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3JlbG9jYXRhYmxlLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWxvY2F0YWJsZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjgwMjQ4NDQ3OSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyByZWxvY2F0YWJsZS5tNCBzZXJpYWwgMTcKLSsjIHJlbG9jYXRhYmxlLm00IHNlcmlhbCAxNgotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUtMjAwNywgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTE0LDYgKzE0LDkgQEAgQUNfREVGVU4oW2dsX1JFTE9DQVRBQkxFXSwKLSBbCi0gICBBQ19SRVFVSVJFKFtnbF9SRUxPQ0FUQUJMRV9CT0RZXSkKLSAgIGdsX1JFTE9DQVRBQkxFX0xJQlJBUlkKLSsgIGlmIHRlc3QgJFJFTE9DQVRBQkxFID0geWVzOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbcHJvZ3JlbG9jXSkKLSsgIGZpCi0gICA6ICR7UkVMT0NBVEFCTEVfQ09ORklHX0hfRElSPSckKHRvcF9idWlsZGRpciknfQotICAgUkVMT0NBVEFCTEVfU1JDX0RJUj0iXCQodG9wX3NyY2RpcikvJGdsX3NvdXJjZV9iYXNlIgotICAgUkVMT0NBVEFCTEVfQlVJTERfRElSPSJcJCh0b3BfYnVpbGRkaXIpLyRnbF9zb3VyY2VfYmFzZSIKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zYWZlLXJlYWQubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zYWZlLXJlYWQubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2FmZS1yZWFkLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9zYWZlLXJlYWQubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44MTA0ODQ0ODAgLTA4MDAKLUBAIC0xLDEwICsxLDE3IEBACi0tIyBzYWZlLXJlYWQubTQgc2VyaWFsIDYKLSsjIHNhZmUtcmVhZC5tNCBzZXJpYWwgNQotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMywgMjAwNS0yMDA2LCAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIGRubCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi0gZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLStBQ19ERUZVTihbZ2xfU0FGRV9SRUFEXSwKLStbCi0rICBBQ19MSUJPQkooW3NhZmUtcmVhZF0pCi0rCi0rICBnbF9QUkVSRVFfU0FGRV9SRUFECi0rXSkKLSsKLSAjIFByZXJlcXVpc2l0ZXMgb2YgbGliL3NhZmUtcmVhZC5jLgotIEFDX0RFRlVOKFtnbF9QUkVSRVFfU0FGRV9SRUFEXSwKLSBbCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2V0ZW52Lm00IGxpYmljb252LTEuMTQvc3JjbTQvc2V0ZW52Lm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3NldGVudi5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvc2V0ZW52Lm00CTIwMTItMDEtMDggMDI6MDc6NDAuODE4NDg0NDgxIC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHNldGVudi5tNCBzZXJpYWwgMjQKLSsjIHNldGVudi5tNCBzZXJpYWwgMjIKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDQsIDIwMDYtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0zOCw2ICszOCw5IEBAIEFDX0RFRlVOKFtnbF9GVU5DX1NFVEVOVl0sCi0gICAgICAgUkVQTEFDRV9TRVRFTlY9MQotICAgICBmaQotICAgZmkKLSsgIGlmIHRlc3QgJEhBVkVfU0VURU5WJFJFUExBQ0VfU0VURU5WICE9IDEwOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbc2V0ZW52XSkKLSsgIGZpCi0gXSkKLSAKLSAjIExpa2UgZ2xfRlVOQ19TRVRFTlYsIGV4Y2VwdCBwcmVwYXJlIGZvciBzZXBhcmF0ZSBjb21waWxhdGlvbgotQEAgLTYyLDkgKzY1LDkgQEAgQUNfREVGVU4oW2dsX0ZVTkNfVU5TRVRFTlZdLAotICAgZmkKLSAgIEFDX0NIRUNLX0ZVTkNTKFt1bnNldGVudl0pCi0gICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Vuc2V0ZW52ID0gbm87IHRoZW4KLS0gICAgSEFWRV9VTlNFVEVOVj0wCi0rICAgIEFDX0xJQk9CSihbdW5zZXRlbnZdKQotKyAgICBnbF9QUkVSRVFfVU5TRVRFTlYKLSAgIGVsc2UKLS0gICAgSEFWRV9VTlNFVEVOVj0xCi0gICAgIGRubCBTb21lIEJTRHMgcmV0dXJuIHZvaWQsIGZhaWxpbmcgdG8gZG8gZXJyb3IgY2hlY2tpbmcuCi0gICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgdW5zZXRlbnYoKSByZXR1cm4gdHlwZV0sIFtndF9jdl9mdW5jX3Vuc2V0ZW52X3JldF0sCi0gICAgICAgW0FDX0NPTVBJTEVfSUZFTFNFKAotQEAgLTkwLDYgKzkzLDcgQEAgaW50IHVuc2V0ZW52KCk7Ci0gICAgICAgQUNfREVGSU5FKFtWT0lEX1VOU0VURU5WXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgdW5zZXRlbnYgcmV0dXJucyB2b2lkCi0gICAgICAgIGluc3RlYWQgb2YgaW50Ll0pCi0gICAgICAgUkVQTEFDRV9VTlNFVEVOVj0xCi0rICAgICAgQUNfTElCT0JKKFt1bnNldGVudl0pCi0gICAgIGZpCi0gCi0gICAgIGRubCBTb2xhcmlzIDEwIHVuc2V0ZW52IGRvZXMgbm90IHJlbW92ZSBhbGwgY29waWVzIG9mIGEgbmFtZS4KLUBAIC0xMjIsNiArMTI2LDcgQEAgaW50IHVuc2V0ZW52KCk7Ci0gICAgICAgW2dsX2N2X2Z1bmNfdW5zZXRlbnZfd29ya3M9Imd1ZXNzaW5nIG5vIl0pXSkKLSAgICAgaWYgdGVzdCAiJGdsX2N2X2Z1bmNfdW5zZXRlbnZfd29ya3MiICE9IHllczsgdGhlbgotICAgICAgIFJFUExBQ0VfVU5TRVRFTlY9MQotKyAgICAgIEFDX0xJQk9CSihbdW5zZXRlbnZdKQotICAgICBmaQotICAgZmkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3NpZ25hbGJsb2NraW5nLm00IGxpYmljb252LTEuMTQvc3JjbTQvc2lnbmFsYmxvY2tpbmcubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2lnbmFsYmxvY2tpbmcubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3NpZ25hbGJsb2NraW5nLm00CTIwMTItMDEtMDggMDI6MDc6NDAuODM0NDg0NDgyIC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHNpZ25hbGJsb2NraW5nLm00IHNlcmlhbCAxMgotKyMgc2lnbmFsYmxvY2tpbmcubTQgc2VyaWFsIDEwCi0gZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCAyMDA2LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMTIsMTQgKzEyLDMxIEBAIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG8KLSBBQ19ERUZVTihbZ2xfU0lHTkFMQkxPQ0tJTkddLAotIFsKLSAgIEFDX1JFUVVJUkUoW2dsX1NJR05BTF9IX0RFRkFVTFRTXSkKLS0gIEFDX1JFUVVJUkUoW2dsX0NIRUNLX1RZUEVfU0lHU0VUX1RdKQotLSAgaWYgdGVzdCAkZ2xfY3ZfdHlwZV9zaWdzZXRfdCA9IHllczsgdGhlbgotKyAgc2lnbmFsc19ub3RfcG9zaXg9Ci0rICBBQ19FR1JFUF9IRUFERVIoW3NpZ3NldF90XSwgW3NpZ25hbC5oXSwgLCBbc2lnbmFsc19ub3RfcG9zaXg9MV0pCi0rICBpZiB0ZXN0IC16ICIkc2lnbmFsc19ub3RfcG9zaXgiOyB0aGVuCi0gICAgIEFDX0NIRUNLX0ZVTkMoW3NpZ3Byb2NtYXNrXSwgW2dsX2N2X2Z1bmNfc2lncHJvY21hc2s9MV0pCi0gICBmaQotICAgaWYgdGVzdCAteiAiJGdsX2N2X2Z1bmNfc2lncHJvY21hc2siOyB0aGVuCi0gICAgIEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkc9MAotKyAgICBBQ19MSUJPQkooW3NpZ3Byb2NtYXNrXSkKLSsgICAgZ2xfUFJFUkVRX1NJR1BST0NNQVNLCi0gICBmaQotIF0pCi0gCi0tIyBQcmVyZXF1aXNpdGVzIG9mIGxpYi9zaWdwcm9jbWFzay5jLgotLUFDX0RFRlVOKFtnbF9QUkVSRVFfU0lHUFJPQ01BU0tdLCBbOl0pCi0rIyBQcmVyZXF1aXNpdGVzIG9mIHRoZSBwYXJ0IG9mIGxpYi9zaWduYWwuaW4uaCBhbmQgb2YgbGliL3NpZ3Byb2NtYXNrLmMuCi0rQUNfREVGVU4oW2dsX1BSRVJFUV9TSUdQUk9DTUFTS10sCi0rWwotKyAgQUNfUkVRVUlSRShbZ2xfU0lHTkFMX0hfREVGQVVMVFNdKQotKyAgQUNfQ0hFQ0tfVFlQRVMoW3NpZ3NldF90XSwKLSsgICAgW2dsX2N2X3R5cGVfc2lnc2V0X3Q9eWVzXSwgW2dsX2N2X3R5cGVfc2lnc2V0X3Q9bm9dLAotKyAgICBbI2luY2x1ZGUgPHNpZ25hbC5oPgotKy8qIE1pbmd3IGRlZmluZXMgc2lnc2V0X3Qgbm90IGluIDxzaWduYWwuaD4sIGJ1dCBpbiA8c3lzL3R5cGVzLmg+LiAgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSkKLSsgIGlmIHRlc3QgJGdsX2N2X3R5cGVfc2lnc2V0X3QgIT0geWVzOyB0aGVuCi0rICAgIEhBVkVfU0lHU0VUX1Q9MAotKyAgZmkKLSsgIGRubCBIQVZFX1NJR1NFVF9UIGlzIDEgaWYgdGhlIHN5c3RlbSBsYWNrcyB0aGUgc2lncHJvY21hc2sgZnVuY3Rpb24gYnV0IGhhcwotKyAgZG5sIHRoZSBzaWdzZXRfdCB0eXBlLgotKyAgQUNfU1VCU1QoW0hBVkVfU0lHU0VUX1RdKQotK10pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2lnbmFsX2gubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zaWduYWxfaC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zaWduYWxfaC5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvc2lnbmFsX2gubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44MjY0ODQ0ODAgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgc2lnbmFsX2gubTQgc2VyaWFsIDE2Ci0rIyBzaWduYWxfaC5tNCBzZXJpYWwgMTIKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtNyw3ICs3LDYgQEAgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsbwotIEFDX0RFRlVOKFtnbF9TSUdOQUxfSF0sCi0gWwotICAgQUNfUkVRVUlSRShbZ2xfU0lHTkFMX0hfREVGQVVMVFNdKQotLSAgQUNfUkVRVUlSRShbZ2xfQ0hFQ0tfVFlQRV9TSUdTRVRfVF0pCi0gICBnbF9ORVhUX0hFQURFUlMoW3NpZ25hbC5oXSkKLSAKLSAjIEFJWCBkZWNsYXJlcyBzaWdfYXRvbWljX3QgdG8gYWxyZWFkeSBpbmNsdWRlIHZvbGF0aWxlLCBhbmQgQzg5IGNvbXBpbGVycwotQEAgLTI4LDI1ICsyNywxMCBAQCBBQ19ERUZVTihbZ2xfU0lHTkFMX0hdLAotICAgZG5sIENoZWNrIGZvciBkZWNsYXJhdGlvbnMgb2YgYW55dGhpbmcgd2Ugd2FudCB0byBwb2lzb24gaWYgdGhlCi0gICBkbmwgY29ycmVzcG9uZGluZyBnbnVsaWIgbW9kdWxlIGlzIG5vdCBpbiB1c2UuCi0gICBnbF9XQVJOX09OX1VTRV9QUkVQQVJFKFtbI2luY2x1ZGUgPHNpZ25hbC5oPgotLSAgICBdXSwgW3B0aHJlYWRfc2lnbWFzayBzaWdhY3Rpb24KLS0gICAgc2lnYWRkc2V0IHNpZ2RlbHNldCBzaWdlbXB0eXNldCBzaWdmaWxsc2V0IHNpZ2lzbWVtYmVyCi0rICAgIF1dLCBbc2lnYWN0aW9uIHNpZ2FkZHNldCBzaWdkZWxzZXQgc2lnZW1wdHlzZXQgc2lnZmlsbHNldCBzaWdpc21lbWJlcgotICAgICBzaWdwZW5kaW5nIHNpZ3Byb2NtYXNrXSkKLSBdKQotIAotLUFDX0RFRlVOKFtnbF9DSEVDS19UWVBFX1NJR1NFVF9UXSwKLS1bCi0tICBBQ19DSEVDS19UWVBFUyhbc2lnc2V0X3RdLAotLSAgICBbZ2xfY3ZfdHlwZV9zaWdzZXRfdD15ZXNdLCBbZ2xfY3ZfdHlwZV9zaWdzZXRfdD1ub10sCi0tICAgIFtbCi0tICAgICAgI2luY2x1ZGUgPHNpZ25hbC5oPgotLSAgICAgIC8qIE1pbmd3IGRlZmluZXMgc2lnc2V0X3Qgbm90IGluIDxzaWduYWwuaD4sIGJ1dCBpbiA8c3lzL3R5cGVzLmg+LiAgKi8KLS0gICAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tICAgIF1dKQotLSAgaWYgdGVzdCAkZ2xfY3ZfdHlwZV9zaWdzZXRfdCAhPSB5ZXM7IHRoZW4KLS0gICAgSEFWRV9TSUdTRVRfVD0wCi0tICBmaQotLV0pCi0tCi0gQUNfREVGVU4oW2dsX1NJR05BTF9NT0RVTEVfSU5ESUNBVE9SXSwKLSBbCi0gICBkbmwgVXNlIEFDX1JFUVVJUkUgaGVyZSwgc28gdGhhdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgZXhwYW5kZWQgb25jZSBvbmx5LgotQEAgLTU4LDEzICs0MiwxMSBAQCBBQ19ERUZVTihbZ2xfU0lHTkFMX01PRFVMRV9JTkRJQ0FUT1JdLAotIAotIEFDX0RFRlVOKFtnbF9TSUdOQUxfSF9ERUZBVUxUU10sCi0gWwotLSAgR05VTElCX1BUSFJFQURfU0lHTUFTSz0wOyAgICBBQ19TVUJTVChbR05VTElCX1BUSFJFQURfU0lHTUFTS10pCi0gICBHTlVMSUJfU0lHTkFMX0hfU0lHUElQRT0wOyAgIEFDX1NVQlNUKFtHTlVMSUJfU0lHTkFMX0hfU0lHUElQRV0pCi0gICBHTlVMSUJfU0lHUFJPQ01BU0s9MDsgICAgICAgIEFDX1NVQlNUKFtHTlVMSUJfU0lHUFJPQ01BU0tdKQotICAgR05VTElCX1NJR0FDVElPTj0wOyAgICAgICAgICBBQ19TVUJTVChbR05VTElCX1NJR0FDVElPTl0pCi0gICBkbmwgQXNzdW1lIHByb3BlciBHTlUgYmVoYXZpb3IgdW5sZXNzIGFub3RoZXIgbW9kdWxlIHNheXMgb3RoZXJ3aXNlLgotICAgSEFWRV9QT1NJWF9TSUdOQUxCTE9DS0lORz0xOyBBQ19TVUJTVChbSEFWRV9QT1NJWF9TSUdOQUxCTE9DS0lOR10pCi0tICBIQVZFX1BUSFJFQURfU0lHTUFTSz0xOyAgICAgIEFDX1NVQlNUKFtIQVZFX1BUSFJFQURfU0lHTUFTS10pCi0gICBIQVZFX1NJR1NFVF9UPTE7ICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX1NJR1NFVF9UXSkKLSAgIEhBVkVfU0lHSU5GT19UPTE7ICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfU0lHSU5GT19UXSkKLSAgIEhBVkVfU0lHQUNUSU9OPTE7ICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfU0lHQUNUSU9OXSkKLUBAIC03Myw1ICs1NSw0IEBAIEFDX0RFRlVOKFtnbF9TSUdOQUxfSF9ERUZBVUxUU10sCi0gICBIQVZFX1RZUEVfVk9MQVRJTEVfU0lHX0FUT01JQ19UPTE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX1RZUEVfVk9MQVRJTEVfU0lHX0FUT01JQ19UXSkKLSAgIEhBVkVfU0lHSEFORExFUl9UPTE7ICAgICAgICAgQUNfU1VCU1QoW0hBVkVfU0lHSEFORExFUl9UXSkKLS0gIFJFUExBQ0VfUFRIUkVBRF9TSUdNQVNLPTA7ICAgQUNfU1VCU1QoW1JFUExBQ0VfUFRIUkVBRF9TSUdNQVNLXSkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N0YXQubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zdGF0Lm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N0YXQubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3N0YXQubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44NTQ0ODQ0ODMgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgc2VyaWFsIDgKLSsjIHNlcmlhbCA3Ci0gCi0gIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi1AQCAtNTgsMTEgKzU4LDkgQEAgQUNfREVGVU4oW2dsX0ZVTkNfU1RBVF0sCi0gICAgICAgQUNfREVGSU5FKFtSRVBMQUNFX0ZVTkNfU1RBVF9GSUxFXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgc3RhdCBuZWVkcwotICAgICAgICAgaGVscCB3aGVuIHBhc3NlZCBhIGZpbGUgbmFtZSB3aXRoIGEgdHJhaWxpbmcgc2xhc2hdKTs7Ci0gICBlc2FjCi0tXSkKLS0KLS0jIFByZXJlcXVpc2l0ZXMgb2YgbGliL3N0YXQuYy4KLS1BQ19ERUZVTihbZ2xfUFJFUkVRX1NUQVRdLAotLVsKLS0gIEFDX1JFUVVJUkUoW0FDX0NfSU5MSU5FXSkKLS0gIDoKLSsgIGlmIHRlc3QgJFJFUExBQ0VfU1RBVCA9IDE7IHRoZW4KLSsgICAgQUNfTElCT0JKKFtzdGF0XSkKLSsgICAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgbGliL3N0YXQuYy4KLSsgICAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKQotKyAgZmkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N0cmVycm9yLm00IGxpYmljb252LTEuMTQvc3JjbTQvc3RyZXJyb3IubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc3RyZXJyb3IubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3N0cmVycm9yLm00CTIwMTItMDEtMDggMDI6MDc6NDAuODkwNDg0NDg0IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHN0cmVycm9yLm00IHNlcmlhbCAxNgotKyMgc3RyZXJyb3IubTQgc2VyaWFsIDkKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA3LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtNiw3MyArNiw2MyBAQCBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvCi0gCi0gQUNfREVGVU4oW2dsX0ZVTkNfU1RSRVJST1JdLAotIFsKLSsgIEFDX1JFUVVJUkUoW2dsX0ZVTkNfU1RSRVJST1JfU0VQQVJBVEVdKQotKyAgaWYgdGVzdCAkUkVQTEFDRV9TVFJFUlJPUiA9IDE7IHRoZW4KLSsgICAgQUNfTElCT0JKKFtzdHJlcnJvcl0pCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChbUkVQTEFDRV9TVFJFUlJPUl0sIFskUkVQTEFDRV9TVFJFUlJPUl0sCi0rICAgICAgW0RlZmluZSB0aGlzIHRvIDEgaWYgc3RyZXJyb3IgaXMgYnJva2VuLl0pCi0rICBmaQotK10pCi0rCi0rIyBMaWtlIGdsX0ZVTkNfU1RSRVJST1IsIGV4Y2VwdCBwcmVwYXJlIGZvciBzZXBhcmF0ZSBjb21waWxhdGlvbiAobm8gQUNfTElCT0JKKS4KLStBQ19ERUZVTihbZ2xfRlVOQ19TVFJFUlJPUl9TRVBBUkFURV0sCi0rWwotICAgQUNfUkVRVUlSRShbZ2xfSEVBREVSX1NUUklOR19IX0RFRkFVTFRTXSkKLSAgIEFDX1JFUVVJUkUoW2dsX0hFQURFUl9FUlJOT19IXSkKLS0gIEFDX1JFUVVJUkUoW2dsX0ZVTkNfU1RSRVJST1JfMF0pCi0tICBtNF9pZmRlZihbZ2xfRlVOQ19TVFJFUlJPUl9SX1dPUktTXSwgWwotLSAgICBBQ19SRVFVSVJFKFtnbF9GVU5DX1NUUkVSUk9SX1JfV09SS1NdKQotLSAgXSkKLS0gIGlmIHRlc3QgIiRFUlJOT19IOiRSRVBMQUNFX1NUUkVSUk9SXzAiID0gOjA7IHRoZW4KLSsgIGlmIHRlc3QgLXogIiRFUlJOT19IIjsgdGhlbgotICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdvcmtpbmcgc3RyZXJyb3IgZnVuY3Rpb25dLAotICAgICAgW2dsX2N2X2Z1bmNfd29ya2luZ19zdHJlcnJvcl0sCi0gICAgICBbQUNfUlVOX0lGRUxTRSgKLSAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCi0gICAgICAgICAgICBbWyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAgICAgICAgICAgIF1dLAotLSAgICAgICAgICAgW1tpZiAoISpzdHJlcnJvciAoLTIpKSByZXR1cm4gMTtdXSldLAotKyAgICAgICAgICAgW1tyZXR1cm4gISpzdHJlcnJvciAoLTIpO11dKV0sCi0gICAgICAgICBbZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yPXllc10sCi0gICAgICAgICBbZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yPW5vXSwKLS0gICAgICAgIFtkbmwgQmUgcGVzc2ltaXN0aWMgb24gY3Jvc3MtY29tcGlsZXMgZm9yIG5vdy4KLS0gICAgICAgICBnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3I9Imd1ZXNzaW5nIG5vIl0pCi0rICAgICAgICBbZG5sIEFzc3VtZSBjcm9zc2J1aWxkIHdvcmtzIGlmIGl0IGNvbXBpbGVzLgotKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAotKyAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKLSsgICAgICAgICAgICAgIFtbI2luY2x1ZGUgPHN0cmluZy5oPgotKyAgICAgICAgICAgICAgXV0sCi0rICAgICAgICAgICAgICBbW3JldHVybiAhKnN0cmVycm9yICgtMik7XV0pXSwKLSsgICAgICAgICAgIFtnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3I9eWVzXSwKLSsgICAgICAgICAgIFtnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3I9bm9dKQotKyAgICAgIF0pCi0gICAgIF0pCi0tICAgIGlmIHRlc3QgIiRnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3IiICE9IHllczsgdGhlbgotKyAgICBpZiB0ZXN0ICRnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3IgPSBubzsgdGhlbgotICAgICAgIGRubCBUaGUgc3lzdGVtJ3Mgc3RyZXJyb3IoKSBmYWlscyB0byByZXR1cm4gYSBzdHJpbmcgZm9yIG91dC1vZi1yYW5nZQotICAgICAgIGRubCBpbnRlZ2Vycy4gUmVwbGFjZSBpdC4KLSAgICAgICBSRVBMQUNFX1NUUkVSUk9SPTEKLSAgICAgZmkKLS0gICAgbTRfaWZkZWYoW2dsX0ZVTkNfU1RSRVJST1JfUl9XT1JLU10sIFsKLS0gICAgICBkbmwgSWYgdGhlIHN5c3RlbSdzIHN0cmVycm9yX3Igb3IgX194cGdfc3RyZXJyb3JfciBjbG9iYmVycyBzdHJlcnJvcidzCi0tICAgICAgZG5sIGJ1ZmZlciwgd2UgbXVzdCByZXBsYWNlIHN0cmVycm9yLgotLSAgICAgIGNhc2UgIiRnbF9jdl9mdW5jX3N0cmVycm9yX3Jfd29ya3MiIGluCi0tICAgICAgICAqbm8pIFJFUExBQ0VfU1RSRVJST1I9MSA7OwotLSAgICAgIGVzYWMKLS0gICAgXSkKLSAgIGVsc2UKLSAgICAgZG5sIFRoZSBzeXN0ZW0ncyBzdHJlcnJvcigpIGNhbm5vdCBrbm93IGFib3V0IHRoZSBuZXcgZXJybm8gdmFsdWVzIHdlIGFkZAotLSAgICBkbmwgdG8gPGVycm5vLmg+LCBvciBhbnkgZml4IGZvciBzdHJlcnJvcigwKS4gUmVwbGFjZSBpdC4KLSsgICAgZG5sIHRvIDxlcnJuby5oPi4gUmVwbGFjZSBpdC4KLSAgICAgUkVQTEFDRV9TVFJFUlJPUj0xCi0gICBmaQotKyAgaWYgdGVzdCAkUkVQTEFDRV9TVFJFUlJPUiA9IDE7IHRoZW4KLSsgICAgZ2xfUFJFUkVRX1NUUkVSUk9SCi0rICBmaQotIF0pCi0gCi0tZG5sIERldGVjdCBpZiBzdHJlcnJvcigwKSBwYXNzZXMgKHRoYXQgaXMsIGRvZXMgbm90IHNldCBlcnJubywgYW5kIGRvZXMgbm90Ci0tZG5sIHJldHVybiBhIHN0cmluZyB0aGF0IG1hdGNoZXMgc3RyZXJyb3IoLTEpKS4KLS1BQ19ERUZVTihbZ2xfRlVOQ19TVFJFUlJPUl8wXSwKLS1bCi0tICBSRVBMQUNFX1NUUkVSUk9SXzA9MAotLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgc3RyZXJyb3IoMCkgc3VjY2VlZHNdLAotLSAgIFtnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29ya3NdLAotLSAgIFtBQ19SVU5fSUZFTFNFKAotLSAgICAgIFtBQ19MQU5HX1BST0dSQU0oCi0tICAgICAgICAgW1sjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tICAgICAgICAgICAjaW5jbHVkZSA8ZXJybm8uaD4KLS0gICAgICAgICBdXSwKLS0gICAgICAgICBbW2ludCByZXN1bHQgPSAwOwotLSAgICAgICAgICAgY2hhciAqc3RyOwotLSAgICAgICAgICAgZXJybm8gPSAwOwotLSAgICAgICAgICAgc3RyID0gc3RyZXJyb3IgKDApOwotLSAgICAgICAgICAgaWYgKCEqc3RyKSByZXN1bHQgfD0gMTsKLS0gICAgICAgICAgIGlmIChlcnJubykgcmVzdWx0IHw9IDI7Ci0tICAgICAgICAgICBpZiAoc3Ryc3RyIChzdHIsICJua25vd24iKSB8fCBzdHJzdHIgKHN0ciwgIm5kZWZpbmVkIikpCi0tICAgICAgICAgICAgIHJlc3VsdCB8PSA0OwotLSAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtdXSldLAotLSAgICAgIFtnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29ya3M9eWVzXSwKLS0gICAgICBbZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtzPW5vXSwKLS0gICAgICBbZG5sIEJlIHBlc3NpbWlzdGljIG9uIGNyb3NzLWNvbXBpbGVzIGZvciBub3cuCi0tICAgICAgIGdsX2N2X2Z1bmNfc3RyZXJyb3JfMF93b3Jrcz0iZ3Vlc3Npbmcgbm8iXSkKLS0gIF0pCi0tICBpZiB0ZXN0ICIkZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtzIiAhPSB5ZXM7IHRoZW4KLS0gICAgUkVQTEFDRV9TVFJFUlJPUl8wPTEKLS0gICAgQUNfREVGSU5FKFtSRVBMQUNFX1NUUkVSUk9SXzBdLCBbMV0sIFtEZWZpbmUgdG8gMSBpZiBzdHJlcnJvcigwKQotLSAgICAgIGRvZXMgbm90IHJldHVybiBhIG1lc3NhZ2UgaW1wbHlpbmcgc3VjY2Vzcy5dKQotKyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvc3RyZXJyb3IuYy4KLStBQ19ERUZVTihbZ2xfUFJFUkVRX1NUUkVSUk9SXSwgWwotKyAgQUNfQ0hFQ0tfREVDTFMoW3N0cmVycm9yXSkKLSsgIEFDX0NIRUNLX0hFQURFUlNfT05DRShbc3lzL3NvY2tldC5oXSkKLSsgIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfc29ja2V0X2ggIT0geWVzOyB0aGVuCi0rICAgIGRubCBXZSBjYW5ub3QgdXNlIEFDX0NIRUNLX0hFQURFUlNfT05DRSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgbWFrZQotKyAgICBkbmwgdGhlIGNoZWNrIGZvciB0aG9zZSBoZWFkZXJzIHVuY29uZGl0aW9uYWw7IHlldCBjeWd3aW4gcmVwb3J0cwotKyAgICBkbmwgdGhhdCB0aGUgaGVhZGVycyBhcmUgcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIChzaW5jZSBvbgotKyAgICBkbmwgY3lnd2luLCBhbGwgc29ja2V0IGluZm9ybWF0aW9uIHNob3VsZCBjb21lIGZyb20gc3lzL3NvY2tldC5oKS4KLSsgICAgQUNfQ0hFQ0tfSEVBREVSUyhbd2luc29jazIuaF0pCi0gICBmaQotIF0pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc3RyaW5nX2gubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zdHJpbmdfaC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zdHJpbmdfaC5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvc3RyaW5nX2gubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44OTQ0ODQ0ODUgLTA4MDAKLUBAIC01LDcgKzUsNyBAQAotICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLSAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIHNlcmlhbCAyMQotKyMgc2VyaWFsIDIwCi0gCi0gIyBXcml0dGVuIGJ5IFBhdWwgRWdnZXJ0LgotIAotQEAgLTI3LDkgKzI3LDkgQEAgQUNfREVGVU4oW2dsX0hFQURFUl9TVFJJTkdfSF9CT0RZXSwKLSAgIGRubCBndWFyYW50ZWVkIGJ5IEM4OS4KLSAgIGdsX1dBUk5fT05fVVNFX1BSRVBBUkUoW1sjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gICAgIF1dLAotLSAgICBbZmZzbCBmZnNsbCBtZW1tZW0gbWVtcGNweSBtZW1yY2hyIHJhd21lbWNociBzdHBjcHkgc3RwbmNweSBzdHJjaHJudWwKLS0gICAgIHN0cmR1cCBzdHJuY2F0IHN0cm5kdXAgc3RybmxlbiBzdHJwYnJrIHN0cnNlcCBzdHJjYXNlc3RyIHN0cnRva19yCi0tICAgICBzdHJlcnJvcl9yIHN0cnNpZ25hbCBzdHJ2ZXJzY21wXSkKLSsgICAgW21lbW1lbSBtZW1wY3B5IG1lbXJjaHIgcmF3bWVtY2hyIHN0cGNweSBzdHBuY3B5IHN0cmNocm51bCBzdHJkdXAKLSsgICAgIHN0cm5jYXQgc3RybmR1cCBzdHJubGVuIHN0cnBicmsgc3Ryc2VwIHN0cmNhc2VzdHIgc3RydG9rX3Igc3RyZXJyb3JfcgotKyAgICAgc3Ryc2lnbmFsIHN0cnZlcnNjbXBdKQotIF0pCi0gCi0gQUNfREVGVU4oW2dsX1NUUklOR19NT0RVTEVfSU5ESUNBVE9SXSwKLUBAIC00Myw4ICs0Myw2IEBAIEFDX0RFRlVOKFtnbF9TVFJJTkdfTU9EVUxFX0lORElDQVRPUl0sCi0gCi0gQUNfREVGVU4oW2dsX0hFQURFUl9TVFJJTkdfSF9ERUZBVUxUU10sCi0gWwotLSAgR05VTElCX0ZGU0w9MDsgICAgICAgIEFDX1NVQlNUKFtHTlVMSUJfRkZTTF0pCi0tICBHTlVMSUJfRkZTTEw9MDsgICAgICAgQUNfU1VCU1QoW0dOVUxJQl9GRlNMTF0pCi0gICBHTlVMSUJfTUVNQ0hSPTA7ICAgICAgQUNfU1VCU1QoW0dOVUxJQl9NRU1DSFJdKQotICAgR05VTElCX01FTU1FTT0wOyAgICAgIEFDX1NVQlNUKFtHTlVMSUJfTUVNTUVNXSkKLSAgIEdOVUxJQl9NRU1QQ1BZPTA7ICAgICBBQ19TVUJTVChbR05VTElCX01FTVBDUFldKQotQEAgLTgyLDggKzgwLDYgQEAgQUNfREVGVU4oW2dsX0hFQURFUl9TVFJJTkdfSF9ERUZBVUxUU10sCi0gICBHTlVMSUJfU1RSVkVSU0NNUD0wOyAgQUNfU1VCU1QoW0dOVUxJQl9TVFJWRVJTQ01QXSkKLSAgIEhBVkVfTUJTTEVOPTA7ICAgICAgICBBQ19TVUJTVChbSEFWRV9NQlNMRU5dKQotICAgZG5sIEFzc3VtZSBwcm9wZXIgR05VIGJlaGF2aW9yIHVubGVzcyBhbm90aGVyIG1vZHVsZSBzYXlzIG90aGVyd2lzZS4KLS0gIEhBVkVfRkZTTD0xOyAgICAgICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX0ZGU0xdKQotLSAgSEFWRV9GRlNMTD0xOyAgICAgICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfRkZTTExdKQotICAgSEFWRV9NRU1DSFI9MTsgICAgICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfTUVNQ0hSXSkKLSAgIEhBVkVfREVDTF9NRU1NRU09MTsgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX0RFQ0xfTUVNTUVNXSkKLSAgIEhBVkVfTUVNUENQWT0xOyAgICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX01FTVBDUFldKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N5c19zb2NrZXRfaC5tNCBsaWJpY29udi0xLjE0L3NyY200L3N5c19zb2NrZXRfaC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zeXNfc29ja2V0X2gubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3N5c19zb2NrZXRfaC5tNAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsMTc3ICswLDAgQEAKLS0jIHN5c19zb2NrZXRfaC5tNCBzZXJpYWwgMjIKLS1kbmwgQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0tZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi0tZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLS0KLS1kbmwgRnJvbSBTaW1vbiBKb3NlZnNzb24uCi0tCi0tQUNfREVGVU4oW2dsX0hFQURFUl9TWVNfU09DS0VUXSwKLS1bCi0tICBBQ19SRVFVSVJFKFtnbF9TWVNfU09DS0VUX0hfREVGQVVMVFNdKQotLSAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQotLSAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKQotLQotLSAgZG5sIE9uIE9TRi8xLCB0aGUgZnVuY3Rpb25zIHJlY3YoKSwgc2VuZCgpLCByZWN2ZnJvbSgpLCBzZW5kdG8oKSBoYXZlCi0tICBkbmwgb2xkLXN0eWxlIGRlY2xhcmF0aW9ucyAod2l0aCByZXR1cm4gdHlwZSAnaW50JyBpbnN0ZWFkIG9mICdzc2l6ZV90JykKLS0gIGRubCB1bmxlc3MgX1BPU0lYX1BJSV9TT0NLRVQgaXMgZGVmaW5lZC4KLS0gIGNhc2UgIiRob3N0X29zIiBpbgotLSAgICBvc2YqKQotLSAgICAgIEFDX0RFRklORShbX1BPU0lYX1BJSV9TT0NLRVRdLCBbMV0sCi0tICAgICAgICBbRGVmaW5lIHRvIDEgaW4gb3JkZXIgdG8gZ2V0IHRoZSBQT1NJWCBjb21wYXRpYmxlIGRlY2xhcmF0aW9ucwotLSAgICAgICAgIG9mIHNvY2tldCBmdW5jdGlvbnMuXSkKLS0gICAgICA7OwotLSAgZXNhYwotLQotLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgPHN5cy9zb2NrZXQuaD4gaXMgc2VsZi1jb250YWluZWRdLAotLSAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zZWxmY29udGFpbmVkXSwKLS0gICAgWwotLSAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8c3lzL3NvY2tldC5oPl1dLCBbW11dKV0sCi0tICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zZWxmY29udGFpbmVkPXllc10sCi0tICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zZWxmY29udGFpbmVkPW5vXSkKLS0gICAgXSkKLS0gIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9zeXNfc29ja2V0X2hfc2VsZmNvbnRhaW5lZCA9IHllczsgdGhlbgotLSAgICBkbmwgSWYgdGhlIHNodXRkb3duIGZ1bmN0aW9uIGV4aXN0cywgPHN5cy9zb2NrZXQuaD4gc2hvdWxkIGRlZmluZQotLSAgICBkbmwgU0hVVF9SRCwgU0hVVF9XUiwgU0hVVF9SRFdSLgotLSAgICBBQ19DSEVDS19GVU5DUyhbc2h1dGRvd25dKQotLSAgICBpZiB0ZXN0ICRhY19jdl9mdW5jX3NodXRkb3duID0geWVzOyB0aGVuCi0tICAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgPHN5cy9zb2NrZXQuaD4gZGVmaW5lcyB0aGUgU0hVVF8qIG1hY3Jvc10sCi0tICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zaHV0XSwKLS0gICAgICAgIFsKLS0gICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCi0tICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+XV0sCi0tICAgICAgICAgICAgICAgW1tpbnQgYVtdID0geyBTSFVUX1JELCBTSFVUX1dSLCBTSFVUX1JEV1IgfTtdXSldLAotLSAgICAgICAgICAgIFtnbF9jdl9oZWFkZXJfc3lzX3NvY2tldF9oX3NodXQ9eWVzXSwKLS0gICAgICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zaHV0PW5vXSkKLS0gICAgICAgIF0pCi0tICAgICAgaWYgdGVzdCAkZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zaHV0ID0gbm87IHRoZW4KLS0gICAgICAgIFNZU19TT0NLRVRfSD0nc3lzL3NvY2tldC5oJwotLSAgICAgIGZpCi0tICAgIGZpCi0tICBmaQotLSAgIyBXZSBuZWVkIHRvIGNoZWNrIGZvciB3czJ0Y3BpcC5oIG5vdy4KLS0gIGdsX1BSRVJFUV9TWVNfSF9TT0NLRVQKLS0gIEFDX0NIRUNLX1RZUEVTKFtzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSwgc2FfZmFtaWx5X3RdLCwsWwotLSAgLyogc3lzL3R5cGVzLmggaXMgbm90IG5lZWRlZCBhY2NvcmRpbmcgdG8gUE9TSVgsIGJ1dCB0aGUKLS0gICAgIHN5cy9zb2NrZXQuaCBpbiBpMzg2LXVua25vd24tZnJlZWJzZDQuMTAgYW5kCi0tICAgICBwb3dlcnBjLWFwcGxlLWRhcndpbjUuNSByZXF1aXJlZCBpdC4gKi8KLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICi0tI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jZW5kaWYKLS0jaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICi0tI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0tI2VuZGlmCi0tXSkKLS0gIGlmIHRlc3QgJGFjX2N2X3R5cGVfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UgPSBubzsgdGhlbgotLSAgICBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFPTAKLS0gIGZpCi0tICBpZiB0ZXN0ICRhY19jdl90eXBlX3NhX2ZhbWlseV90ID0gbm87IHRoZW4KLS0gICAgSEFWRV9TQV9GQU1JTFlfVD0wCi0tICBmaQotLSAgaWYgdGVzdCAkYWNfY3ZfdHlwZV9zdHJ1Y3Rfc29ja2FkZHJfc3RvcmFnZSAhPSBubzsgdGhlbgotLSAgICBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZS5zc19mYW1pbHldLAotLSAgICAgIFtdLAotLSAgICAgIFtIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFX1NTX0ZBTUlMWT0wXSwKLS0gICAgICBbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSAgICAgICAjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKLS0gICAgICAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0gICAgICAgI2VuZGlmCi0tICAgICAgICNpZmRlZiBIQVZFX1dTMlRDUElQX0gKLS0gICAgICAgI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0tICAgICAgICNlbmRpZgotLSAgICAgIF0pCi0tICBmaQotLSAgaWYgdGVzdCAkSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRSA9IDAgfHwgdGVzdCAkSEFWRV9TQV9GQU1JTFlfVCA9IDAgXAotLSAgICAgfHwgdGVzdCAkSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFkgPSAwOyB0aGVuCi0tICAgIFNZU19TT0NLRVRfSD0nc3lzL3NvY2tldC5oJwotLSAgZmkKLS0gIGdsX1BSRVJFUV9TWVNfSF9XSU5TT0NLMgotLQotLSAgZG5sIENoZWNrIGZvciBkZWNsYXJhdGlvbnMgb2YgYW55dGhpbmcgd2Ugd2FudCB0byBwb2lzb24gaWYgdGhlCi0tICBkbmwgY29ycmVzcG9uZGluZyBnbnVsaWIgbW9kdWxlIGlzIG5vdCBpbiB1c2UuCi0tICBnbF9XQVJOX09OX1VTRV9QUkVQQVJFKFtbCi0tLyogU29tZSBzeXN0ZW1zIHJlcXVpcmUgcHJlcmVxdWlzaXRlIGhlYWRlcnMuICAqLwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotLSAgICBdXSwgW3NvY2tldCBjb25uZWN0IGFjY2VwdCBiaW5kIGdldHBlZXJuYW1lIGdldHNvY2tuYW1lIGdldHNvY2tvcHQKLS0gICAgbGlzdGVuIHJlY3Ygc2VuZCByZWN2ZnJvbSBzZW5kdG8gc2V0c29ja29wdCBzaHV0ZG93biBhY2NlcHQ0XSkKLS1dKQotLQotLUFDX0RFRlVOKFtnbF9QUkVSRVFfU1lTX0hfU09DS0VUXSwKLS1bCi0tICBkbmwgQ2hlY2sgcHJlcmVxdWlzaXRlcyBvZiB0aGUgPHN5cy9zb2NrZXQuaD4gcmVwbGFjZW1lbnQuCi0tICBBQ19SRVFVSVJFKFtnbF9DSEVDS19TT0NLRVRfSEVBREVSU10pCi0tICBnbF9DSEVDS19ORVhUX0hFQURFUlMoW3N5cy9zb2NrZXQuaF0pCi0tICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX3NvY2tldF9oID0geWVzOyB0aGVuCi0tICAgIEhBVkVfU1lTX1NPQ0tFVF9IPTEKLS0gICAgSEFWRV9XUzJUQ1BJUF9IPTAKLS0gIGVsc2UKLS0gICAgSEFWRV9TWVNfU09DS0VUX0g9MAotLSAgICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfd3MydGNwaXBfaCA9IHllczsgdGhlbgotLSAgICAgIEhBVkVfV1MyVENQSVBfSD0xCi0tICAgIGVsc2UKLS0gICAgICBIQVZFX1dTMlRDUElQX0g9MAotLSAgICBmaQotLSAgZmkKLS0gIEFDX1NVQlNUKFtIQVZFX1NZU19TT0NLRVRfSF0pCi0tICBBQ19TVUJTVChbSEFWRV9XUzJUQ1BJUF9IXSkKLS1dKQotLQotLSMgQ29tbW9uIHByZXJlcXVpc2l0ZXMgb2YgdGhlIDxzeXMvc29ja2V0Lmg+IHJlcGxhY2VtZW50IGFuZCBvZiB0aGUKLS0jIDxzeXMvc2VsZWN0Lmg+IHJlcGxhY2VtZW50LgotLSMgU2V0cyBhbmQgc3Vic3RpdHV0ZXMgSEFWRV9XSU5TT0NLMl9ILgotLUFDX0RFRlVOKFtnbF9QUkVSRVFfU1lTX0hfV0lOU09DSzJdLAotLVsKLS0gIG00X2lmZGVmKFtnbF9VTklTVERfSF9ERUZBVUxUU10sIFtBQ19SRVFVSVJFKFtnbF9VTklTVERfSF9ERUZBVUxUU10pXSkKLS0gIG00X2lmZGVmKFtnbF9TWVNfSU9DVExfSF9ERUZBVUxUU10sIFtBQ19SRVFVSVJFKFtnbF9TWVNfSU9DVExfSF9ERUZBVUxUU10pXSkKLS0gIEFDX0NIRUNLX0hFQURFUlNfT05DRShbc3lzL3NvY2tldC5oXSkKLS0gIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfc29ja2V0X2ggIT0geWVzOyB0aGVuCi0tICAgIGRubCBXZSBjYW5ub3QgdXNlIEFDX0NIRUNLX0hFQURFUlNfT05DRSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgbWFrZQotLSAgICBkbmwgdGhlIGNoZWNrIGZvciB0aG9zZSBoZWFkZXJzIHVuY29uZGl0aW9uYWw7IHlldCBjeWd3aW4gcmVwb3J0cwotLSAgICBkbmwgdGhhdCB0aGUgaGVhZGVycyBhcmUgcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIChzaW5jZSBvbgotLSAgICBkbmwgY3lnd2luLCBhbGwgc29ja2V0IGluZm9ybWF0aW9uIHNob3VsZCBjb21lIGZyb20gc3lzL3NvY2tldC5oKS4KLS0gICAgQUNfQ0hFQ0tfSEVBREVSUyhbd2luc29jazIuaF0pCi0tICBmaQotLSAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl93aW5zb2NrMl9oIiA9IHllczsgdGhlbgotLSAgICBIQVZFX1dJTlNPQ0syX0g9MQotLSAgICBVTklTVERfSF9IQVZFX1dJTlNPQ0syX0g9MQotLSAgICBTWVNfSU9DVExfSF9IQVZFX1dJTlNPQ0syX0g9MQotLSAgZWxzZQotLSAgICBIQVZFX1dJTlNPQ0syX0g9MAotLSAgZmkKLS0gIEFDX1NVQlNUKFtIQVZFX1dJTlNPQ0syX0hdKQotLV0pCi0tCi0tQUNfREVGVU4oW2dsX1NZU19TT0NLRVRfTU9EVUxFX0lORElDQVRPUl0sCi0tWwotLSAgZG5sIFVzZSBBQ19SRVFVSVJFIGhlcmUsIHNvIHRoYXQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGV4cGFuZGVkIG9uY2Ugb25seS4KLS0gIEFDX1JFUVVJUkUoW2dsX1NZU19TT0NLRVRfSF9ERUZBVUxUU10pCi0tICBnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRShbJDFdKQotLSAgZG5sIERlZmluZSBpdCBhbHNvIGFzIGEgQyBtYWNybywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSB1bml0IHRlc3RzLgotLSAgZ2xfTU9EVUxFX0lORElDQVRPUl9GT1JfVEVTVFMoWyQxXSkKLS1dKQotLQotLUFDX0RFRlVOKFtnbF9TWVNfU09DS0VUX0hfREVGQVVMVFNdLAotLVsKLS0gIEdOVUxJQl9TT0NLRVQ9MDsgICAgICBBQ19TVUJTVChbR05VTElCX1NPQ0tFVF0pCi0tICBHTlVMSUJfQ09OTkVDVD0wOyAgICAgQUNfU1VCU1QoW0dOVUxJQl9DT05ORUNUXSkKLS0gIEdOVUxJQl9BQ0NFUFQ9MDsgICAgICBBQ19TVUJTVChbR05VTElCX0FDQ0VQVF0pCi0tICBHTlVMSUJfQklORD0wOyAgICAgICAgQUNfU1VCU1QoW0dOVUxJQl9CSU5EXSkKLS0gIEdOVUxJQl9HRVRQRUVSTkFNRT0wOyBBQ19TVUJTVChbR05VTElCX0dFVFBFRVJOQU1FXSkKLS0gIEdOVUxJQl9HRVRTT0NLTkFNRT0wOyBBQ19TVUJTVChbR05VTElCX0dFVFNPQ0tOQU1FXSkKLS0gIEdOVUxJQl9HRVRTT0NLT1BUPTA7ICBBQ19TVUJTVChbR05VTElCX0dFVFNPQ0tPUFRdKQotLSAgR05VTElCX0xJU1RFTj0wOyAgICAgIEFDX1NVQlNUKFtHTlVMSUJfTElTVEVOXSkKLS0gIEdOVUxJQl9SRUNWPTA7ICAgICAgICBBQ19TVUJTVChbR05VTElCX1JFQ1ZdKQotLSAgR05VTElCX1NFTkQ9MDsgICAgICAgIEFDX1NVQlNUKFtHTlVMSUJfU0VORF0pCi0tICBHTlVMSUJfUkVDVkZST009MDsgICAgQUNfU1VCU1QoW0dOVUxJQl9SRUNWRlJPTV0pCi0tICBHTlVMSUJfU0VORFRPPTA7ICAgICAgQUNfU1VCU1QoW0dOVUxJQl9TRU5EVE9dKQotLSAgR05VTElCX1NFVFNPQ0tPUFQ9MDsgIEFDX1NVQlNUKFtHTlVMSUJfU0VUU09DS09QVF0pCi0tICBHTlVMSUJfU0hVVERPV049MDsgICAgQUNfU1VCU1QoW0dOVUxJQl9TSFVURE9XTl0pCi0tICBHTlVMSUJfQUNDRVBUND0wOyAgICAgQUNfU1VCU1QoW0dOVUxJQl9BQ0NFUFQ0XSkKLS0gIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0U9MTsgQUNfU1VCU1QoW0hBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VdKQotLSAgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFk9MTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBBQ19TVUJTVChbSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFldKQotLSAgSEFWRV9TQV9GQU1JTFlfVD0xOyAgIEFDX1NVQlNUKFtIQVZFX1NBX0ZBTUlMWV9UXSkKLS0gIEhBVkVfQUNDRVBUND0xOyAgICAgICBBQ19TVUJTVChbSEFWRV9BQ0NFUFQ0XSkKLS1dKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3dhcm4tb24tdXNlLm00IGxpYmljb252LTEuMTQvc3JjbTQvd2Fybi1vbi11c2UubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvd2Fybi1vbi11c2UubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3dhcm4tb24tdXNlLm00CTIwMTItMDEtMDggMDI6MDc6NDAuOTM0NDg0NDg3IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHdhcm4tb24tdXNlLm00IHNlcmlhbCA0Ci0rIyB3YXJuLW9uLXVzZS5tNCBzZXJpYWwgMgotIGRubCBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0yNyw4ICsyNyw2IEBAIEFDX0RFRlVOKFtnbF9XQVJOX09OX1VTRV9QUkVQQVJFXSwKLSAgICAgW0FIX1RFTVBMQVRFKFtIQVZFX1JBV19ERUNMX11BU19UUl9DUFAobTRfZGVmbihbZ2xfZGVjbF0pKSwKLSAgICAgICBbRGVmaW5lIHRvIDEgaWYgXW00X2RlZm4oW2dsX2RlY2xdKVsgaXMgZGVjbGFyZWQgZXZlbiBhZnRlcgotICAgICAgICB1bmRlZmluaW5nIG1hY3Jvcy5dKV0pZG5sCi0tZG5sIEZJWE1FOiBnbF9TeW1ib2wgbXVzdCBiZSB1c2VkIHVucXVvdGVkIHVudGlsIHdlIGNhbiBhc3N1bWUKLS1kbmwgYXV0b2NvbmYgMi42NCBvciBuZXdlci4KLSAgIGZvciBnbF9mdW5jIGluIG00X2ZsYXR0ZW4oWyQyXSk7IGRvCi0gICAgIEFTX1ZBUl9QVVNIREVGKFtnbF9TeW1ib2xdLCBbZ2xfY3ZfaGF2ZV9yYXdfZGVjbF8kZ2xfZnVuY10pZG5sCi0gICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyICRnbF9mdW5jIGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNyb10sCi1AQCAtMzcsOCArMzUsOCBAQCBkbmwgYXV0b2NvbmYgMi42NCBvciBuZXdlci4KLSBbQCU6QHVuZGVmICRnbF9mdW5jCi0gICAodm9pZCkgJGdsX2Z1bmM7XSldLAotICAgICAgICAgW0FTX1ZBUl9TRVQoZ2xfU3ltYm9sLCBbeWVzXSldLCBbQVNfVkFSX1NFVChnbF9TeW1ib2wsIFtub10pXSldKQotLSAgICBBU19WQVJfSUYoZ2xfU3ltYm9sLCBbeWVzXSwKLS0gICAgICBbQUNfREVGSU5FX1VOUVVPVEVEKEFTX1RSX0NQUChbSEFWRV9SQVdfREVDTF8kZ2xfZnVuY10pLCBbMV0pCi0rICAgICBBU19WQVJfSUYoZ2xfU3ltYm9sLCBbeWVzXSwKLSsgICAgICAgW0FDX0RFRklORV9VTlFVT1RFRChBU19UUl9DUFAoW0hBVkVfUkFXX0RFQ0xfJGdsX2Z1bmNdKSwgWzFdKQotICAgICAgICBkbmwgc2hvcnRjdXQgLSBpZiB0aGUgcmF3IGRlY2xhcmF0aW9uIGV4aXN0cywgdGhlbiBzZXQgYSBjYWNoZQotICAgICAgICBkbmwgdmFyaWFibGUgdG8gYWxsb3cgc2tpcHBpbmcgYW55IGxhdGVyIEFDX0NIRUNLX0RFQ0wgZWZmb3J0cwotICAgICAgICBldmFsIGFjX2N2X2hhdmVfZGVjbF8kZ2xfZnVuYz15ZXNdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252LTEuMTQvYXV0b2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNvbnYvbGliaWNvbnYtMS4xNC9hdXRvY29uZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQzNGNlNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNvbnYvbGliaWNvbnYtMS4xNC9hdXRvY29uZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUl0IGFkZHMgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBuZWVkZWQKLWZvciBhdXRvY29uZiAyLjY1IHRvIHJlY29uZmlndXJlIGxpYmljb252IGFuZCBkZWxldGUgdGhlIG00IG1hY3JvcwotZGlyZWN0b3J5LiBJdHMgaW1wb3J0ZWQgZnJvbSBPRS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBsaWJpY29udi0xLjEzLjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliaWNvbnYtMS4xMy4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgbGliaWNvbnYtMS4xMy4xL2NvbmZpZ3VyZS5hYwotQEAgLTIzLDcgKzIzLDcgQEAgQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi0gQU1fSU5JVF9BVVRPTUFLRShbbGliaWNvbnZdLCBbMS4xMy4xXSkKLSBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmggbGliL2NvbmZpZy5oXSkKLSBBQ19QUk9HX01BS0VfU0VUCi0tCi0rQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQotIGRubCAgICAgICAgICAgY2hlY2tzIGZvciBiYXNpYyBwcm9ncmFtcwotIAotIEFDX1BST0dfQ0MKLUluZGV4OiBsaWJpY29udi0xLjEzLjEvbGliY2hhcnNldC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJpY29udi0xLjEzLjEub3JpZy9saWJjaGFyc2V0L2NvbmZpZ3VyZS5hYwotKysrIGxpYmljb252LTEuMTMuMS9saWJjaGFyc2V0L2NvbmZpZ3VyZS5hYwotQEAgLTE2LDE3ICsxNiwxNyBAQCBkbmwgYWxvbmcgd2l0aCB0aGUgR05VIENIQVJTRVQgTGlicmFyeTsKLSBkbmwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LAotIGRubCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gCi0tQUNfUFJFUkVRKFsyLjEzXSkKLStBQ19QUkVSRVEoMi42MSkKLStBQ19JTklUKFtsaWJjaGFyc2V0XSxbMS40XSApCi0rQUNfQ09ORklHX1NSQ0RJUihbbGliL2xvY2FsY2hhcnNldC5jXSkKLSAKLS1QQUNLQUdFPWxpYmNoYXJzZXQKLS1WRVJTSU9OPTEuNAotLQotLUFDX0lOSVQoW2xpYi9sb2NhbGNoYXJzZXQuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi0gQUNfQ09ORklHX0hFQURFUihbY29uZmlnLmhdKQotIEFDX1BST0dfTUFLRV9TRVQKLS1BQ19TVUJTVChbUEFDS0FHRV0pCi0tQUNfU1VCU1QoW1ZFUlNJT05dKQotK2RubCBBQ19TVUJTVChQQUNLQUdFKQotK2RubCBBQ19TVUJTVChWRVJTSU9OKQotKwotK0FDX0NPTkZJR19NQUNST19ESVIoW200XSkKLSAKLSBkbmwgICAgICAgICAgIGNoZWNrcyBmb3IgYmFzaWMgcHJvZ3JhbXMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udl8xLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252XzEuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZDUxMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252XzEuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkNoYXJhY3RlciBlbmNvZGluZyBzdXBwb3J0IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJHTlUgbGliaWNvbnYgLSBsaWJpY29udiBpcyBmb3IgeW91IGlmIHlvdXIgYXBwbGljYXRpb24gbmVlZHMgdG8gc3VwcG9ydCBcCi1tdWx0aXBsZSBjaGFyYWN0ZXIgZW5jb2RpbmdzLCBidXQgdGhhdCBzdXBwb3J0IGxhY2tzIGZyb20geW91ciBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmljb252IgotU0VDVElPTiA9ICJsaWJzIgotTk9URVMgPSAiTmVlZHMgdG8gYmUgc3RyaXBwZWQgZG93biB0bzogYXNjaWkgaXNvODg1OS0xIGV1Y2pwIGlzby0yMDIyanAgZ2IgdXRmOCIKLVBST1ZJREVTID0gInZpcnR1YWwvbGliaWNvbnYiCi1QUiA9ICJyMSIKLUxJQ0VOU0UgPSAiTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmNoYXJzZXQvQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYXV0b2NvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLXJlbG9jYXRhYmxlLW1vZHVsZS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTM0NTA5YjE2MjNjZWM0NDlkZmViNzNkN2NlOWM2YzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzJiMjRkZWQxN2Q2ODcxOTNjMzM2NmQwZWJlN2NkZTFlNmIxOGYwZGY4YzU1NDM4YWM5NWJlMzllOGEzMDYxMyIKLQotUyA9ICIke1dPUktESVJ9L2xpYmljb252LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgZC5nZXRWYXIoIlRBUkdFVF9PUyIpICE9ICJsaW51eCI6Ci0gICAgICAgIHJldHVybgotICAgIGlmIGQuZ2V0VmFyKCJUQ0xJQkMiKSA9PSAiZ2xpYmMiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgibGliaWNvbnYgaXMgcHJvdmlkZWQgZm9yIHVzZSB3aXRoIHVDbGliYyBvbmx5IC0gZ2xpYmMgYWxyZWFkeSBwcm92aWRlcyBpY29udiIpCi19Ci0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJsZS1yZWxvY2F0YWJsZSIKLQotTEVBRF9TT05BTUUgPSAibGliaWNvbnYuc28iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L200L2xpYnRvb2wubTQgJHtTfS9tNC9sdG9wdGlvbnMubTQgJHtTfS9tNC9sdHN1Z2FyLm00ICR7U30vbTQvbHR2ZXJzaW9uLm00ICR7U30vbTQvbHR+b2Jzb2xldGUubTQgJHtTfS9saWJjaGFyc2V0L200L2xpYnRvb2wubTQgJHtTfS9saWJjaGFyc2V0L200L2x0b3B0aW9ucy5tNCAke1N9L2xpYmNoYXJzZXQvbTQvbHRzdWdhci5tNCAke1N9L2xpYmNoYXJzZXQvbTQvbHR2ZXJzaW9uLm00ICR7U30vbGliY2hhcnNldC9tNC9sdH5vYnNvbGV0ZS5tNAotfQotCi1kb19jb25maWd1cmVfYXBwZW5kICgpIHsKLSAgICAgICAgIyBmb3JjaWJseSByZW1vdmUgUlBBVEggZnJvbSBsaWJ0b29sCi0gICAgICAgIHNlZCAtaSAnc3xeaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0uKnxoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIifGcnICpsaWJ0b29sCi0gICAgICAgIHNlZCAtaSAnc3xecnVucGF0aF92YXI9TERfUlVOX1BBVEh8cnVucGF0aF92YXI9X05PX1JQQVRIX3xnJyAqbGlidG9vbAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vcHJlbG9hZGFibGVfbGliaWNvbnYuc28KLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctNzE4Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTcxODYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhM2JmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTcxODYucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorbGlicGNyZTItMTAuMjM6IEZpeCBDVkUtMjAxNy03MTg2CisKK0EgZnV6eiBvbiBsaWJwY3JlMSB0aHJvdWdoIHRoZSBwY3JldGVzdCB1dGlsaXR5IHJldmVhbGVkIGFuIGludmFsaWQgcmVhZCBpbiB0aGUKK2xpYnJhcnkuIEZvciB3aG8gaXMgaW50ZXJlc3RlZCBpbiBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcsIHdpbGwKK2ZvbGxvdyBhIGZlZWRiYWNrIGZyb20gdXBzdHJlYW06CisKK1RoaXMgd2FzIGEgZ2VudWluZSBidWcgaW4gdGhlIDMyLWJpdCBsaWJyYXJ5LiBUaGFua3MgZm9yIGZpbmRpbmcgaXQuIFRoZSBjcmFzaAord2FzIGNhdXNlZCBieSB0cnlpbmcgdG8gZmluZCBhIFVuaWNvZGUgcHJvcGVydHkgZm9yIGEgY29kZSB2YWx1ZSBncmVhdGVyIHRoYW4KKzB4MTBmZmZmLCB0aGUgVW5pY29kZSBtYXhpbXVtLCB3aGVuIHJ1bm5pbmcgaW4gbm9uLVVURiBtb2RlICh3aGVyZSBjaGFyYWN0ZXIKK3ZhbHVlcyBjYW4gYmUgdXAgdG8gMHhmZmZmZmZmZikuCisKK1RoZSBjb21wbGV0ZSBBU2FuIG91dHB1dDoKKworIyBwY3JldGVzdCAtMzIgLWQgJEZJTEUKKz09MTQ3ODg9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBTRUdWIG9uIHVua25vd24gYWRkcmVzcyAweDdmMWJiZmZlZDRkZiAocGMgMHg3ZjFiYmVlM2ZlNmIgYnAgMHg3ZmZmOGI1MGQ4YzAgc3AgMHg3ZmZmOGI1MGQzYTAgVDApCis9PTE0Nzg4PT1UaGUgc2lnbmFsIGlzIGNhdXNlZCBieSBhIFJFQUQgbWVtb3J5IGFjY2Vzcy4KKyAgICAjMCAweDdmMWJiZWUzZmU2YSBpbiBtYXRjaCAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjU0NzM6MTgKKyAgICAjMSAweDdmMWJiZWUwOTIyNiBpbiBwY3JlMzJfZXhlYyAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjY5MzY6OAorICAgICMyIDB4NTI3ZDZjIGluIG1haW4gL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JldGVzdC5jOjUyMTg6OQorICAgICMzIDB4N2YxYmJkZGQ2NzhmIGluIF9fbGliY19zdGFydF9tYWluIC90bXAvcG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjIzLXIzL3dvcmsvZ2xpYmMtMi4yMy9jc3UvLi4vY3N1L2xpYmMtc3RhcnQuYzoyODkKKyAgICAjNCAweDQxYjQzOCBpbiBfaW5pdCAoL3Vzci9iaW4vcGNyZXRlc3QrMHg0MWI0MzgpCisKK0FkZHJlc3NTYW5pdGl6ZXIgY2FuIG5vdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mby4KK1NVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IFNFR1YgL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JlX2V4ZWMuYzo1NDczOjE4IGluIG1hdGNoCis9PTE0Nzg4PT1BQk9SVElORworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMl91Y2QuYz92aWV3PXBhdGNoJnIxPTMxNiZyMj02NzAmc29ydGJ5PWRhdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly92Y3MucGNyZS5vcmcvcGNyZTIvY29kZS90cnVuay9zcmMvcGNyZTJfaW50ZXJuYWwuaD92aWV3PXBhdGNoJnIxPTYwMCZyMj02NzAmc29ydGJ5PWRhdGVdCitDVkU6IENWRS0yMDE3LTcxODYKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKKy0tLSB0cnVuay9zcmMvcGNyZTJfdWNkLmMgIDIwMTUvMDcvMTcgMTU6NDQ6NTEgMzE2CisrKysgdHJ1bmsvc3JjL3BjcmUyX3VjZC5jICAyMDE3LzAyLzI0IDE4OjI1OjMyIDY3MAorQEAgLTQxLDYgKzQxLDIwIEBACisgCisgY29uc3QgY2hhciAqUFJJVih1bmljb2RlX3ZlcnNpb24pID0gIjguMC4wIjsKKyAKKysvKiBJZiB0aGUgMzItYml0IGxpYnJhcnkgaXMgcnVuIGluIG5vbi0zMi1iaXQgbW9kZSwgY2hhcmFjdGVyIHZhbHVlcworK2dyZWF0ZXIgdGhhbiAweDEwZmZmZiBtYXkgYmUgZW5jb3VudGVyZWQuIEZvciB0aGVzZSB3ZSBzZXQgdXAgYQorK3NwZWNpYWwgcmVjb3JkLiAqLworKworKyNpZiBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggPT0gMzIKKytjb25zdCB1Y2RfcmVjb3JkIFBSSVYoZHVtbXlfdWNkX3JlY29yZClbXSA9IHt7CisrICB1Y3BfQ29tbW9uLCAgICAvKiBzY3JpcHQgKi8KKysgIHVjcF9DbiwgICAgICAgIC8qIHR5cGUgdW5hc3NpZ25lZCAqLworKyAgdWNwX2diT3RoZXIsICAgLyogZ3JhcGhlbWUgYnJlYWsgcHJvcGVydHkgKi8KKysgIDAsICAgICAgICAgICAgIC8qIGNhc2Ugc2V0ICovCisrICAwLCAgICAgICAgICAgICAvKiBvdGhlciBjYXNlICovCisrICB9fTsKKysjZW5kaWYKKysKKyAvKiBXaGVuIHJlY29tcGlsaW5nIHRhYmxlcyB3aXRoIGEgbmV3IFVuaWNvZGUgdmVyc2lvbiwgcGxlYXNlIGNoZWNrIHRoZQorIHR5cGVzIGluIHRoaXMgc3RydWN0dXJlIGRlZmluaXRpb24gZnJvbSBwY3JlMl9pbnRlcm5hbC5oICh0aGUgYWN0dWFsCisgZmllbGQgbmFtZXMgd2lsbCBiZSBkaWZmZXJlbnQpOgorLS0tIHRydW5rL3NyYy9wY3JlMl9pbnRlcm5hbC5oIDIwMTYvMTEvMTkgMTI6NDY6MjQgNjAwCisrKysgdHJ1bmsvc3JjL3BjcmUyX2ludGVybmFsLmggMjAxNy8wMi8yNCAxODoyNTozMiA2NzAKK0BAIC0xNzc0LDEwICsxNzc0LDE3IEBACisgLyogVUNEIGFjY2VzcyBtYWNyb3MgKi8KKyAKKyAjZGVmaW5lIFVDRF9CTE9DS19TSVpFIDEyOAorLSNkZWZpbmUgR0VUX1VDRChjaCkgKFBSSVYodWNkX3JlY29yZHMpICsgXAorKyNkZWZpbmUgUkVBTF9HRVRfVUNEKGNoKSAoUFJJVih1Y2RfcmVjb3JkcykgKyBcCisgICAgICAgICBQUklWKHVjZF9zdGFnZTIpW1BSSVYodWNkX3N0YWdlMSlbKGludCkoY2gpIC8gVUNEX0JMT0NLX1NJWkVdICogXAorICAgICAgICAgVUNEX0JMT0NLX1NJWkUgKyAoaW50KShjaCkgJSBVQ0RfQkxPQ0tfU0laRV0pCisgCisrI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgorKyNkZWZpbmUgR0VUX1VDRChjaCkgKChjaCA+IE1BWF9VVEZfQ09ERV9QT0lOVCk/IFwKKysgIFBSSVYoZHVtbXlfdWNkX3JlY29yZCkgOiBSRUFMX0dFVF9VQ0QoY2gpKQorKyNlbHNlCisrI2RlZmluZSBHRVRfVUNEKGNoKSBSRUFMX0dFVF9VQ0QoY2gpCisrI2VuZGlmCisrCisgI2RlZmluZSBVQ0RfQ0hBUlRZUEUoY2gpICAgIEdFVF9VQ0QoY2gpLT5jaGFydHlwZQorICNkZWZpbmUgVUNEX1NDUklQVChjaCkgICAgICBHRVRfVUNEKGNoKS0+c2NyaXB0CisgI2RlZmluZSBVQ0RfQ0FURUdPUlkoY2gpICAgIFBSSVYodWNwX2dlbnR5cGUpW1VDRF9DSEFSVFlQRShjaCldCitAQCAtMTgzNCw2ICsxODQxLDkgQEAKKyAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X2NvbXBpbGVfY29udGV4dCBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfY29tcGlsZV9jb250ZXh0XykKKyAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X21hdGNoX2NvbnRleHQgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfbWF0Y2hfY29udGV4dF8pCisgI2RlZmluZSBfcGNyZTJfZGVmYXVsdF90YWJsZXMgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9kZWZhdWx0X3RhYmxlc18pCisrI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgorKyNkZWZpbmUgX3BjcmUyX2R1bW15X3VjZF9yZWNvcmQgICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfZHVtbXlfdWNkX3JlY29yZF8pCisrI2VuZGlmCisgI2RlZmluZSBfcGNyZTJfaHNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9oc3BhY2VfbGlzdF8pCisgI2RlZmluZSBfcGNyZTJfdnNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl92c3BhY2VfbGlzdF8pCisgI2RlZmluZSBfcGNyZTJfdWNkX2Nhc2VsZXNzX3NldHMgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl91Y2RfY2FzZWxlc3Nfc2V0c18pCitAQCAtMTg1OCw2ICsxODY4LDkgQEAKKyBleHRlcm4gY29uc3QgdWludDMyX3QgICAgICAgICAgICAgICAgICBQUklWKHZzcGFjZV9saXN0KVtdOworIGV4dGVybiBjb25zdCB1aW50MzJfdCAgICAgICAgICAgICAgICAgIFBSSVYodWNkX2Nhc2VsZXNzX3NldHMpW107CisgZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVih1Y2RfcmVjb3JkcylbXTsKKysjaWYgUENSRTJfQ09ERV9VTklUX1dJRFRIID09IDMyCisrZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVihkdW1teV91Y2RfcmVjb3JkKVtdOworKyNlbmRpZgorIGV4dGVybiBjb25zdCB1aW50OF90ICAgICAgICAgICAgICAgICAgIFBSSVYodWNkX3N0YWdlMSlbXTsKKyBleHRlcm4gY29uc3QgdWludDE2X3QgICAgICAgICAgICAgICAgICBQUklWKHVjZF9zdGFnZTIpW107CisgZXh0ZXJuIGNvbnN0IHVpbnQzMl90ICAgICAgICAgICAgICAgICAgUFJJVih1Y3BfZ2J0YWJsZSlbXTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZmFmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoCkBAIC0wLDAgKzEsOTMgQEAKK2xpYnBjcmUyLTEwLjIzOiBGaXggQ1ZFLTIwMTctODc4NgorCitUaGUgcGNyZTJ0ZXN0LmMgaW4gUENSRTIgMTAuMjMgYWxsb3dzIHJlbW90ZSBhdHRhY2tlcnMgdG8gY2F1c2UgYSBkZW5pYWwgb2YKK3NlcnZpY2UgKGhlYXAtYmFzZWQgYnVmZmVyIG92ZXJmbG93KSBvciBwb3NzaWJseSBoYXZlIHVuc3BlY2lmaWVkIG90aGVyIGltcGFjdAordmlhIGEgY3JhZnRlZCByZWd1bGFyIGV4cHJlc3Npb24uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vdmNzLnBjcmUub3JnL3BjcmUyL2NvZGUvdHJ1bmsvc3JjL3BjcmUydGVzdC5jP3IxPTY5MiZyMj02OTcmdmlldz1wYXRjaF0KK0NWRTogQ1ZFLTIwMTctODc4NgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworLS0tIHRydW5rL3NyYy9wY3JlMnRlc3QuYyAgMjAxNy8wMy8yMSAxNjoxODo1NCA2OTIKKysrKyB0cnVuay9zcmMvcGNyZTJ0ZXN0LmMgIDIwMTcvMDMvMjEgMTg6MzY6MTMgNjk3CitAQCAtMTAxNyw5ICsxMDE3LDkgQEAKKyAgIGlmICh0ZXN0X21vZGUgPT0gUENSRThfTU9ERSkgXAorICAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfOChhLEcoYiw4KSxHKEcoYiw4KSxfc2l6ZSkpOyBcCisgICBlbHNlIGlmICh0ZXN0X21vZGUgPT0gUENSRTE2X01PREUpIFwKKy0gICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUpKTsgXAorKyAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMTYoYSxHKGIsMTYpLEcoRyhiLDE2KSxfc2l6ZS8yKSk7IFwKKyAgIGVsc2UgXAorLSAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZSkpCisrICAgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8zMihhLEcoYiwzMiksRyhHKGIsMzIpLF9zaXplLzQpKQorIAorICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBcCisgICBpZiAodGVzdF9tb2RlID09IFBDUkU4X01PREUpIFwKK0BAIC0xMzk5LDYgKzEzOTksOSBAQAorIAorIC8qIC0tLS0tIENvbW1vbiBtYWNyb3MgZm9yIHR3by1tb2RlIGNhc2VzIC0tLS0tICovCisgCisrI2RlZmluZSBCWVRFT05FIChCSVRPTkUvOCkKKysjZGVmaW5lIEJZVEVUV08gKEJJVFRXTy84KQorKworICNkZWZpbmUgQ0FTVEZMRCh0LGEsYikgXAorICAgKCh0ZXN0X21vZGUgPT0gRyhHKFBDUkUsQklUT05FKSxfTU9ERSkpPyAodCkoRyhhLEJJVE9ORSktPmIpIDogXAorICAgICAodCkoRyhhLEJJVFRXTyktPmIpKQorQEAgLTE0ODEsOSArMTQ4NCw5IEBACisgCisgI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAorICAgaWYgKHRlc3RfbW9kZSA9PSBHKEcoUENSRSxCSVRPTkUpLF9NT0RFKSkgXAorLSAgICByID0gRyhwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8sQklUT05FKShhLEcoYixCSVRPTkUpLEcoRyhiLEJJVE9ORSksX3NpemUpKTsgXAorKyAgICByID0gRyhwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8sQklUT05FKShhLEcoYixCSVRPTkUpLEcoRyhiLEJJVE9ORSksX3NpemUvQllURU9ORSkpOyBcCisgICBlbHNlIFwKKy0gICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVFRXTykoYSxHKGIsQklUVFdPKSxHKEcoYixCSVRUV08pLF9zaXplKSkKKysgICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVFRXTykoYSxHKGIsQklUVFdPKSxHKEcoYixCSVRUV08pLF9zaXplL0JZVEVUV08pKQorIAorICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBcCisgICBpZiAodGVzdF9tb2RlID09IEcoRyhQQ1JFLEJJVE9ORSksX01PREUpKSBcCitAQCAtMTkwNCw3ICsxOTA3LDcgQEAKKyAjZGVmaW5lIFBDUkUyX0RGQV9NQVRDSChhLGIsYyxkLGUsZixnLGgsaSxqKSBcCisgICBhID0gcGNyZTJfZGZhX21hdGNoXzE2KEcoYiwxNiksKFBDUkUyX1NQVFIxNiljLGQsZSxmLEcoZywxNiksaCxpLGopCisgI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAorLSAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUpKQorKyAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUvMikpCisgI2RlZmluZSBQQ1JFMl9HRVRfT1ZFQ1RPUl9DT1VOVChhLGIpIGEgPSBwY3JlMl9nZXRfb3ZlY3Rvcl9jb3VudF8xNihHKGIsMTYpKQorICNkZWZpbmUgUENSRTJfR0VUX1NUQVJUQ0hBUihhLGIpIGEgPSBwY3JlMl9nZXRfc3RhcnRjaGFyXzE2KEcoYiwxNikpCisgI2RlZmluZSBQQ1JFMl9KSVRfQ09NUElMRShyLGEsYikgciA9IHBjcmUyX2ppdF9jb21waWxlXzE2KEcoYSwxNiksYikKK0BAIC0yMDAwLDcgKzIwMDMsNyBAQAorICNkZWZpbmUgUENSRTJfREZBX01BVENIKGEsYixjLGQsZSxmLGcsaCxpLGopIFwKKyAgIGEgPSBwY3JlMl9kZmFfbWF0Y2hfMzIoRyhiLDMyKSwoUENSRTJfU1BUUjMyKWMsZCxlLGYsRyhnLDMyKSxoLGksaikKKyAjZGVmaW5lIFBDUkUyX0dFVF9FUlJPUl9NRVNTQUdFKHIsYSxiKSBcCistICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZSkpCisrICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZS80KSkKKyAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgYSA9IHBjcmUyX2dldF9vdmVjdG9yX2NvdW50XzMyKEcoYiwzMikpCisgI2RlZmluZSBQQ1JFMl9HRVRfU1RBUlRDSEFSKGEsYikgYSA9IHBjcmUyX2dldF9zdGFydGNoYXJfMzIoRyhiLDMyKSkKKyAjZGVmaW5lIFBDUkUyX0pJVF9DT01QSUxFKHIsYSxiKSByID0gcGNyZTJfaml0X2NvbXBpbGVfMzIoRyhhLDMyKSxiKQorQEAgLTI4ODksNyArMjg5Miw3IEBACisgICB7CisgICBpZiAocGJ1ZmZlcjMyICE9IE5VTEwpIGZyZWUocGJ1ZmZlcjMyKTsKKyAgIHBidWZmZXIzMl9zaXplID0gNCpsZW4gKyA0OworLSAgaWYgKHBidWZmZXIzMl9zaXplIDwgMjU2KSBwYnVmZmVyMzJfc2l6ZSA9IDI1NjsKKysgIGlmIChwYnVmZmVyMzJfc2l6ZSA8IDUxMikgcGJ1ZmZlcjMyX3NpemUgPSA1MTI7CisgICBwYnVmZmVyMzIgPSAodWludDMyX3QgKiltYWxsb2MocGJ1ZmZlcjMyX3NpemUpOworICAgaWYgKHBidWZmZXIzMiA9PSBOVUxMKQorICAgICB7CitAQCAtNzYwMCw3ICs3NjAzLDggQEAKKyAgIGludCBlcnJjb2RlOworICAgY2hhciAqZW5kcHRyOworIAorLS8qIEVuc3VyZSB0aGUgcmVsZXZhbnQgbm9uLTgtYml0IGJ1ZmZlciBpcyBhdmFpbGFibGUuICovCisrLyogRW5zdXJlIHRoZSByZWxldmFudCBub24tOC1iaXQgYnVmZmVyIGlzIGF2YWlsYWJsZS4gRW5zdXJlIHRoYXQgaXQgaXMgYXQgCisrbGVhc3QgMTI4IGNvZGUgdW5pdHMsIGJlY2F1c2UgaXQgaXMgdXNlZCBmb3IgcmV0cmlldmluZyBlcnJvciBtZXNzYWdlcy4gKi8KKyAKKyAjaWZkZWYgU1VQUE9SVF9QQ1JFMl8xNgorICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFMTZfTU9ERSkKK0BAIC03NjIwLDcgKzc2MjQsNyBAQAorICNpZmRlZiBTVVBQT1JUX1BDUkUyXzMyCisgICBpZiAodGVzdF9tb2RlID09IFBDUkUzMl9NT0RFKQorICAgICB7CistICAgIHBidWZmZXIzMl9zaXplID0gMjU2OworKyAgICBwYnVmZmVyMzJfc2l6ZSA9IDUxMjsKKyAgICAgcGJ1ZmZlcjMyID0gKHVpbnQzMl90ICopbWFsbG9jKHBidWZmZXIzMl9zaXplKTsKKyAgICAgaWYgKHBidWZmZXIzMiA9PSBOVUxMKQorICAgICAgIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZjgxYzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCi1uZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKLWxpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKLWRlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAotIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKLW5vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKLVNVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWFiOTYzM2VmZDM4ZDZmNzk5Mzk4ZGYyYzI0OGI1YWVjIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMGMwMjUxNzkzOGVlMmIwZDM1MGQ1M2VkZjQ1MDY2NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMmI0NDYxOWY0YWM2YzUwYWQ3NGMyODY1ZmQ1NjgwNzU3MTM5MjQ5NmZhZTFjOWFkN2E3MDk5M2QwMThmNDE2IgotCi1DVkVfUFJPRFVDVCA9ICJwY3JlMiIKLQotUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgotCi1QUk9WSURFUyArPSAicGNyZTIiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCi0gICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKLSAgICAtLXdpdGgtbGluay1zaXplPTIgXAotICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCi0iCi0KLSMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCi0jIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCi1CVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKLUNGTEFHUyArPSAiLURfUkVFTlRSQU5UIgotQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgotCi1leHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgotCi1QQUNLQUdFUyA9KyAicGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCi0KLVNVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKLVNVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgotU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgotU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCi0KLUZJTEVTX3BjcmUyZ3JlcCA9ICIke2JpbmRpcn0vcGNyZTJncmVwIgotRklMRVNfcGNyZTJncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMmdyZXAuMSIKLUZJTEVTX3BjcmUydGVzdCA9ICIke2JpbmRpcn0vcGNyZTJ0ZXN0IgotRklMRVNfcGNyZTJ0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMnRlc3QuMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4yMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTJiMDI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjMuYmIKQEAgLTAsMCArMSw2MCBAQAorREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAorbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCitsaWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCitkZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKKyB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCitub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zZGUzNGRmNDllMWZlM2MzYjU5YTA4ZGZmMjE0NDg4YiIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImIyY2QwMGNhN2UyNDA0OTA0MDA5OWIwYTQ2YmIzNjQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRmYzc5YjkxODc3MWYwMmQzMzk2OGJkMzRhNzQ5YWQ3NDg3ZmExMDE0YWViNzg3ZmFkMjlkZDM5MmI3OGM1NmUiCisKK0NWRV9QUk9EVUNUID0gInBjcmUyIgorCitTID0gIiR7V09SS0RJUn0vcGNyZTItJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlMiIKK0RFUEVORFMgKz0gImJ6aXAyIHpsaWIiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZTItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKKyAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAorICAgIC0td2l0aC1saW5rLXNpemU9MiBcCisgICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKKyIKKworIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KKyMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KK0JVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0vc3JjIgorQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCitDWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCisKK2V4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCisKK1BBQ0tBR0VTID0rICJwY3JlMmdyZXAgcGNyZTJncmVwLWRvYyBwY3JlMnRlc3QgcGNyZTJ0ZXN0LWRvYyIKKworU1VNTUFSWV9wY3JlMmdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgorU1VNTUFSWV9wY3JlMmdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCitTVU1NQVJZX3BjcmUydGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCitTVU1NQVJZX3BjcmUydGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKKworRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCitGSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgorRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCitGSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNmFiMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIFBDUkUgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBpbXBsZW1lbnQgcmVndWxhciBcCi1leHByZXNzaW9uIHBhdHRlcm4gbWF0Y2hpbmcgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFuZCBzZW1hbnRpY3MgYXMgUGVybCA1LiBQQ1JFIFwKLWhhcyBpdHMgb3duIG5hdGl2ZSBBUEksIGFzIHdlbGwgYXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjb3JyZXNwb25kIFwKLXRvIHRoZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb24gQVBJLiIKLVNVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9NjBkYTMyZDg0ZDA2N2Y1M2UyMjA3MWM0ZWNiNDM4NGQiCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5jc3guY2FtLmFjLnVrL3B1Yi9zb2Z0d2FyZS9wcm9ncmFtbWluZy9wY3JlL3BjcmUtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wY3JlLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wY3JlLW5hbWUtY29sbGlzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MWE4NDJiZjdkY2VjZDY2MzQyMTkzMzZlMjE2N2QxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMGUyN2EyOWVhZDQyNjdlM2RlODExMWZjYWE1OWIxMzJkMDUzM2NkZmRiZGRkZjRiMDYwNDI3OWFjYmNmNGY0IgotCi1DVkVfUFJPRFVDVCA9ICJwY3JlIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZS0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZTggdW5pY29kZS1wcm9wZXJ0aWVzIgotCi1QQUNLQUdFQ09ORklHW3BjcmU4XSA9ICItLWVuYWJsZS1wY3JlOCwtLWRpc2FibGUtcGNyZTgiCi1QQUNLQUdFQ09ORklHW3BjcmUxNl0gPSAiLS1lbmFibGUtcGNyZTE2LC0tZGlzYWJsZS1wY3JlMTYiCi1QQUNLQUdFQ09ORklHW3BjcmUzMl0gPSAiLS1lbmFibGUtcGNyZTMyLC0tZGlzYWJsZS1wY3JlMzIiCi1QQUNLQUdFQ09ORklHW3BjcmV0ZXN0LXJlYWRsaW5lXSA9ICItLWVuYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSwtLWRpc2FibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUscmVhZGxpbmUsIgotUEFDS0FHRUNPTkZJR1t1bmljb2RlLXByb3BlcnRpZXNdID0gIi0tZW5hYmxlLXVuaWNvZGUtcHJvcGVydGllcywtLWRpc2FibGUtdW5pY29kZS1wcm9wZXJ0aWVzIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKLSAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAotICAgIC0tZW5hYmxlLXV0ZiBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotIgotCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfSIKLUNGTEFHUyArPSAiLURfUkVFTlRSQU5UIgotQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgotCi1leHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgotCi1QQUNLQUdFUyA9KyAibGlicGNyZWNwcCBsaWJwY3JlcG9zaXggcGNyZWdyZXAgcGNyZWdyZXAtZG9jIHBjcmV0ZXN0IHBjcmV0ZXN0LWRvYyIKLQotU1VNTUFSWV9saWJwY3JlY3BwID0gIiR7U1VNTUFSWX0gLSBDKysgd3JhcHBlciBmdW5jdGlvbnMiCi1TVU1NQVJZX2xpYnBjcmVwb3NpeCA9ICIke1NVTU1BUll9IC0gQyB3cmFwcGVyIGZ1bmN0aW9ucyBiYXNlZCBvbiB0aGUgUE9TSVggcmVnZXggQVBJIgotU1VNTUFSWV9wY3JlZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmVncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgotU1VNTUFSWV9wY3JldGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1TVU1NQVJZX3BjcmV0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19saWJwY3JlY3BwID0gIiR7bGliZGlyfS9saWJwY3JlY3BwLnNvLioiCi1GSUxFU19saWJwY3JlcG9zaXggPSAiJHtsaWJkaXJ9L2xpYnBjcmVwb3NpeC5zby4qIgotRklMRVNfcGNyZWdyZXAgPSAiJHtiaW5kaXJ9L3BjcmVncmVwIgotRklMRVNfcGNyZWdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmVncmVwLjEiCi1GSUxFU19wY3JldGVzdCA9ICIke2JpbmRpcn0vcGNyZXRlc3QiCi1GSUxFU19wY3JldGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZXRlc3QuMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQljcCAke1dPUktESVJ9L01ha2VmaWxlICR0Ci0JY3AgLXIgJHtTfS90ZXN0ZGF0YSAkdAotCWZvciBpIGluIHBjcmVfc3RyaW5ncGllY2VfdW5pdHRlc3QgcGNyZWdyZXAgcGNyZXRlc3Q7IFwKLQkgIGRvIGNwICR7Qn0vLmxpYnMvJGkgJHQ7IFwKLQlkb25lCi0JZm9yIGkgaW4gUnVuVGVzdCBSdW5HcmVwVGVzdCB0ZXN0LWRyaXZlcjsgXAotCSAgZG8gY3AgJHtTfS8kaSAkdDsgXAotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWFlZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQxLmJiCkBAIC0wLDAgKzEsODMgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAorZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCitoYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCit0byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTYwZGEzMmQ4NGQwNjdmNTNlMjIwNzFjNGVjYjQzODRkIgorU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGNyZS1uYW1lLWNvbGxpc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzE2MGQyMjcyM2IxNjcwNDQ3MzQxYjA4YzU4OTgxYzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTYyYzdlYWM1YWU3YzBlNzI4NmRiNjFmZjgyOTEyZTFjMGI3YTBjMTM3MDY2MTZlOTRhN2RkNzI5MzIxYjUzMCIKKworQ1ZFX1BST0RVQ1QgPSAicGNyZSIKKworUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlIgorREVQRU5EUyArPSAiYnppcDIgemxpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyIKKworUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgorUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgorUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgorUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKK1BBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLWVuYWJsZS11dGYgXAorICAgIC0td2l0aC1saW5rLXNpemU9MiBcCisgICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKKyIKKworIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KKyMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KK0JVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0iCitDRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKK0NYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKKworZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKKworUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCisKK1NVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgorU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKK1NVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgorU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKK1NVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKKworRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgorRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKK0ZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKK0ZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgorRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgorRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAorCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKKwlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCisJICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCisJZG9uZQorCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKKwkgIGRvIGNwICR7U30vJGkgJHQ7IFwKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNC5iYgppbmRleCA2MmE2YTEzLi40YzM5ZjUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTQuYmIKQEAgLTMxLDYgKzMxLDcgQEAKICAgICAtRExJQl9JTlNUQUxMX0RJUj0ke2xpYmRpcn0gXAogICAgIC1ETElCRVhFQ19JTlNUQUxMX0RJUj0ke2xpYmV4ZWNkaXJ9IFwKICIKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCiAKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyR7UFZ9L21vZHVsZXMiCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZjI5NGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41Ni4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBIVFRQIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW4gQyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGlic291cCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDIgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDY1MDgzZjc0YjdiYjAzNTk1OWRkYjA1OTkzMTM5ODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDgyMTZiNzFkZTgyNDdiYzZmMjc0ZWMwNTRjMDg1NDdiMmUwNDM2OWMxZjhhZGQ3MTNlOTM1MGM4ZWY4MWZlNSIKLQotUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCi0KLSMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCi0jIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAotIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKLQotIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KLVJSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWY5NWU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41OC4yLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImViMzNhZGI0NTljMjI4M2VmYzVjN2QwOWNjZGJiY2ZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ0MjMwMGNhMWIxYmY4YTNiYmYyZjc4ODIwMzI4N2ZmODYyNTQyZDRmYzA0OGYxOWE5MmEwNjhhMjdkMTdiNzIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKK1BBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS12YWxhIgorCisjIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgorIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKKyMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisjIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCisKKyMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCitSUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMKaW5kZXggYzhmZjgzNi4uZWQzMmQxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLmluYwpAQCAtMiwyMyArMiwxOCBAQAogREVTQ1JJUFRJT04gPSAiYSBwb3J0YWJsZSBhbmQgZWZmaWNpZW50IEMgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIChBUEkpIHRvIGRldGVybWluZSB0aGUgY2FsbC1jaGFpbiBvZiBhIHByb2dyYW0iCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5vbmdudS5vcmcvbGlidW53aW5kIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zZmNlZDExZDZkZjcxOWI0NzUwNTgzN2E1MWMxNmFlNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTM7bWQ1PTNmY2VkMTFkNmRmNzE5YjQ3NTA1ODM3YTUxYzE2YWU1IgogREVQRU5EUyArPSAibGliYXRvbWljLW9wcyIKIAogaW5oZXJpdCBhdXRvdG9vbHMKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbWluaWRlYnVnaW5mbywtLWRpc2FibGUtbWluaWRlYnVnaW5mbyx4eiIKLVBBQ0tBR0VDT05GSUdbbGF0ZXhkb2NzXSA9ICItLWVuYWJsZS1kb2N1bWVudGFpdG9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgbGF0ZXgybWFuLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbGF0ZXhkb2NzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgbGF0ZXgybWFuLW5hdGl2ZSIKIAogRVhUUkFfT0VDT05GX2FybSA9ICItLWVuYWJsZS1kZWJ1Zy1mcmFtZSIKIEVYVFJBX09FQ09ORl9hYXJjaDY0ID0gIi0tZW5hYmxlLWRlYnVnLWZyYW1lIgogCi1DRkxBR1MgKz0gIiR7QVRPTUlDT1BTfSIKLUFUT01JQ09QU19hcm12NSA9ICItREFPX1VTRV9QVEhSRUFEX0RFRlM9MSIKLUFUT01JQ09QU19hcm12NCA9ICItREFPX1VTRV9QVEhSRUFEX0RFRlM9MSIKLUFUT01JQ09QUyA/PSAiIgotCiBTRUNVUklUWV9MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sc3NwX25vbnNoYXJlZCAtbHNzcCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL2ZpeC1taXBzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMjIyMzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaApAQCAtMCwwICsxLDEzNCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSA1ZjM1NGNiN2I5Yzg0ZGFlMDA2ZjBlYmQ4YWQ3YTc4ZDdlMmFhZDBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2ZSBXYXRzb24gPGRhdmVqd2F0c29uQGZiLmNvbT4KK0RhdGU6IFdlZCwgMjUgSmFuIDIwMTcgMTY6MTg6MDIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWlwcy90aWxlZ3g6IEFkZCBtaXNzaW5nIHVud2luZF9pLmggaGVhZGVyIGZpbGUKKworcmVwb3J0ZWQtYnk6IEpvaG4gS25pZ2h0IDxKb2huLktuaWdodEBiZWxraW4uY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggNWQ4NzQ3NTUuLjdkZTRjNDI1IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0yODAsNyArMjgwLDcgQEAgbGlidW53aW5kX2hwcGFfbGFfU09VUkNFU19ocHBhID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19ocHBhX2NvbW1vbikJXAorIAlocHBhL0dyZXN1bWUuYyBocHBhL0dzdGVwLmMKKyAKKyAjIFRoZSBsaXN0IG9mIGZpbGVzIHRoYXQgZ28gaW5mbyBsaWJ1bndpbmQgYW5kIGxpYnVud2luZC1taXBzOgorLW5vaW5zdF9IRUFERVJTICs9IG1pcHMvaW5pdC5oIG1pcHMvb2Zmc2V0cy5oCisrbm9pbnN0X0hFQURFUlMgKz0gbWlwcy9pbml0LmggbWlwcy9vZmZzZXRzLmggbWlwcy91bndpbmRfaS5oCisgbGlidW53aW5kX2xhX1NPVVJDRVNfbWlwc19jb21tb24gPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2NvbW1vbikJICAgIFwKKyAJbWlwcy9pc19mcHJlZy5jIG1pcHMvcmVnbmFtZS5jCisgCitAQCAtMjk5LDcgKzI5OSw3IEBAIGxpYnVud2luZF9taXBzX2xhX1NPVVJDRVNfbWlwcyA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfbWlwc19jb21tb24pCSAgICBcCisgCW1pcHMvR2lzX3NpZ25hbF9mcmFtZS5jIG1pcHMvR3JlZ3MuYyBtaXBzL0dyZXN1bWUuYyBtaXBzL0dzdGVwLmMKKyAKKyAjIFRoZSBsaXN0IG9mIGZpbGVzIHRoYXQgZ28gaW5mbyBsaWJ1bndpbmQgYW5kIGxpYnVud2luZC10aWxlZ3g6Cistbm9pbnN0X0hFQURFUlMgKz0gdGlsZWd4L2luaXQuaCB0aWxlZ3gvb2Zmc2V0cy5oCisrbm9pbnN0X0hFQURFUlMgKz0gdGlsZWd4L2luaXQuaCB0aWxlZ3gvb2Zmc2V0cy5oIHRpbGVneC91bndpbmRfaS5oCisgbGlidW53aW5kX2xhX1NPVVJDRVNfdGlsZWd4X2NvbW1vbiA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfY29tbW9uKQkgICAgXAorIAl0aWxlZ3gvaXNfZnByZWcuYyB0aWxlZ3gvcmVnbmFtZS5jCisgCitkaWZmIC0tZ2l0IGEvc3JjL21pcHMvdW53aW5kX2kuaCBiL3NyYy9taXBzL3Vud2luZF9pLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4zMzgyZGNmCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvbWlwcy91bndpbmRfaS5oCitAQCAtMCwwICsxLDQzIEBACisrLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQorKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKKysKKytUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCisrCisrUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisrYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisrIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKytkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKytwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisrCisrVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKytpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKysKKytUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKytFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKytNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKKytMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisrT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisrV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLworKworKyNpZm5kZWYgdW53aW5kX2lfaAorKyNkZWZpbmUgdW53aW5kX2lfaAorKworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKysjaW5jbHVkZSA8bGlidW53aW5kLW1pcHMuaD4KKysKKysjaW5jbHVkZSAibGlidW53aW5kX2kuaCIKKysKKysjZGVmaW5lIG1pcHNfbG9jayAgICAgICAgICAgICAgICAgICAgICAgVU5XX09CSihsb2NrKQorKyNkZWZpbmUgbWlwc19sb2NhbF9yZXN1bWUgICAgICAgICAgICAgICBVTldfT0JKKGxvY2FsX3Jlc3VtZSkKKysjZGVmaW5lIG1pcHNfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICAgICAgVU5XX09CSihsb2NhbF9hZGRyX3NwYWNlX2luaXQpCisrCisrZXh0ZXJuIGludCBtaXBzX2xvY2FsX3Jlc3VtZSAodW53X2FkZHJfc3BhY2VfdCBhcywgdW53X2N1cnNvcl90ICpjdXJzb3IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworKworK2V4dGVybiB2b2lkIG1pcHNfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICh2b2lkKTsKKysKKysjZW5kaWYgLyogdW53aW5kX2lfaCAqLworZGlmZiAtLWdpdCBhL3NyYy90aWxlZ3gvdW53aW5kX2kuaCBiL3NyYy90aWxlZ3gvdW53aW5kX2kuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFhYzdiZTMKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy90aWxlZ3gvdW53aW5kX2kuaAorQEAgLTAsMCArMSw0NCBAQAorKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKKysgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5CisrCisrVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgorKworK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisrZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisrcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisrdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKworK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCisraW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisrCisrVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisrRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisrTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKytOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisrTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KKysKKysjaWZuZGVmIHVud2luZF9pX2gKKysjZGVmaW5lIHVud2luZF9pX2gKKysKKysjaW5jbHVkZSA8bWVtb3J5Lmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorKworKyNpbmNsdWRlIDxsaWJ1bndpbmQtdGlsZWd4Lmg+CisrCisrI2luY2x1ZGUgImxpYnVud2luZF9pLmgiCisrCisrI2RlZmluZSB0aWxlZ3hfbG9jYWxfcmVzdW1lICAgICAgICAgICAgVU5XX09CSihsb2NhbF9yZXN1bWUpCisrI2RlZmluZSB0aWxlZ3hfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICAgVU5XX09CSihsb2NhbF9hZGRyX3NwYWNlX2luaXQpCisrCisrZXh0ZXJuIGludCB0aWxlZ3hfbG9jYWxfcmVzdW1lICh1bndfYWRkcl9zcGFjZV90IGFzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW53X2N1cnNvcl90ICpjdXJzb3IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworKworK2V4dGVybiB2b2lkIHRpbGVneF9sb2NhbF9hZGRyX3NwYWNlX2luaXQgKHZvaWQpOworKworKyNlbmRpZiAvKiB1bndpbmRfaV9oICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzMTJmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYgpAQCAtMCwwICsxLDI0IEBACityZXF1aXJlIGxpYnVud2luZC5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gImVlZmNiNWQ3Zjc4ZmRjOGYxZWQxNzJhMjZlYTQyMDJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkZTM4ZmZiZGM4OGJkNjk0ZDEwMDgxODY1ODcxY2QyYmZiYjAyYWQ4ZWY5ZTE2MDZhZWUxOGQ2NTUzMmI5OTIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMvbGlidW53aW5kL2xpYnVud2luZC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1iYWNrdHJhY2UtVXNlLW9ubHktd2l0aC1nbGliYy1hbmQtdWNsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEteDg2LVN0dWItb3V0LXg4Nl9sb2NhbF9yZXN1bWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWtub2JzLXRvLWRpc2FibGUtZW5hYmxlLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjMzItQ29uc2lkZXItdWNvbnRleHQtbWlzbWF0Y2hlcy1iZXR3ZWVuLWdsaWJjLWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ1bndpbmQtMS4xLXgzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtbWlwcy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC1oZWFkZXItY29uZmxpY3QucGF0Y2giCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLXRlc3RzICIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODcvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitMREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MzdjNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotcmVxdWlyZSBsaWJ1bndpbmQuaW5jCi0KLVBWID0gIjEuMStnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gImJjODY5OGZkN2VkMTNhNjI5YThlYzNjYjJhODliZDc0ZjlkOGI1YzAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnN2LmdudS5vcmcvbGlidW53aW5kLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYtU3R1Yi1vdXQteDg2X2xvY2FsX3Jlc3VtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1taXBzLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQta25vYnMtdG8tZGlzYWJsZS1lbmFibGUtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGMzMi1Db25zaWRlci11Y29udGV4dC1taXNtYXRjaGVzLWJldHdlZW4tZ2xpYmMtYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnVud2luZC0xLjEteDMyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLWhlYWRlci1jb25mbGljdC5wYXRjaCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMgIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ny8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLSMgc2VlIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE5OTg3Ci1TRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1LzAwMDEtU3VwcG9ydC1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdS8wMDAxLVN1cHBvcnQtZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI5NjIzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1LzAwMDEtU3VwcG9ydC1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLUZyb20gZjM3YzViNTYzNzZkOWJiNTA2ZGE2OGJiMTFkMGQ3NDYzZTZlNTYzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotRGF0ZTogVHVlLCA5IEZlYiAyMDE2IDAxOjUyOjI2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQgZm9yIE5JT1MyIGFyY2hpdGVjdHVyZQotCi1BZGQgc3VwcG9ydCBmb3IgdGhlIEFsdGVyYSBOSU9TMiBDUFUgYXJjaGlyZWN0dXJlLiBUaGUgYXRvbWljIG9wZXJhdGlvbnMKLWFyZSBoYW5kbGVkIGJ5IHRoZSBHQ0MuIFRoZSBtZW1vcnkgYmFycmllcnMgb24gdGhpcyBzeXN0ZW1zIGFyZSBlbnRpcmVseQotdHJpdmlhbCB0b28sIHNpbmNlIHRoZSBDUFUgZG9lcyBub3Qgc3VwcG9ydCBTTVAgYXQgYWxsLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwOi8vZ2l0Lmx0dG5nLm9yZy8/cD11c2Vyc3BhY2UtcmN1LmdpdDthPWNvbW1pdDtoPTg1OTA1MGIzMDg4YWEzZjBjYjU5ZDdmNTFjZTI0YjlhMGYxOGZhYTUgXQotCi0tLS0KLSBMSUNFTlNFICAgICAgICAgICAgICB8ICAxICsKLSBSRUFETUUubWQgICAgICAgICAgICB8ICAxICsKLSBjb25maWd1cmUuYWMgICAgICAgICB8ICAxICsKLSB1cmN1L2FyY2gvbmlvczIuaCAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSB1cmN1L3VhdG9taWMvbmlvczIuaCB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHVyY3UvYXJjaC9uaW9zMi5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHVyY3UvdWF0b21pYy9uaW9zMi5oCi0KLWRpZmYgLS1naXQgYS9MSUNFTlNFIGIvTElDRU5TRQotaW5kZXggMzE0NzA5NC4uYTA2ZmRjYyAxMDA2NDQKLS0tLSBhL0xJQ0VOU0UKLSsrKyBiL0xJQ0VOU0UKLUBAIC00NSw2ICs0NSw3IEBAIGNvbXBpbGVyLmgKLSBhcmNoL3MzOTAuaAotIHVhdG9taWMvYWxwaGEuaAotIHVhdG9taWMvbWlwcy5oCi0rdWF0b21pYy9uaW9zMi5oCi0gdWF0b21pYy9zMzkwLmgKLSBzeXN0ZW0uaAotIAotZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAotaW5kZXggZjZiMjkwZi4uNmZlOWMxZSAxMDA2NDQKLS0tLSBhL1JFQURNRS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAtNDMsNiArNDMsNyBAQCBDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgYXJjaGl0ZWN0dXJlcyBhcmUgc3VwcG9ydGVkOgotICAgLSBTMzkwLCBTMzkweAotICAgLSBBUk0gMzIvNjQKLSAgIC0gTUlQUwotKyAgLSBOSU9TMgotICAgLSBBbHBoYQotICAgLSBpYTY0Ci0gICAtIFNwYXJjdjkgMzIvNjQKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGVlYmVkNTYuLjgwMTRlMWQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEzNiw2ICsxMzYsNyBAQCBBU19DQVNFKFskaG9zdF9jcHVdLAotIAlbYXJtKl0sIFtBUkNIVFlQRT0iYXJtIl0sCi0gCVthYXJjaDY0Kl0sIFtBUkNIVFlQRT0iYWFyY2g2NCJdLAotIAlbbWlwcypdLCBbQVJDSFRZUEU9Im1pcHMiXSwKLSsJW25pb3MyKl0sIFtBUkNIVFlQRT0ibmlvczIiXSwKLSAJW3RpbGUqXSwgW0FSQ0hUWVBFPSJ0aWxlIl0sCi0gCVtocHBhKl0sIFtBUkNIVFlQRT0iaHBwYSJdLAotIAlbQVJDSFRZUEU9InVua25vd24iXQotZGlmZiAtLWdpdCBhL3VyY3UvYXJjaC9uaW9zMi5oIGIvdXJjdS9hcmNoL25pb3MyLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iNGYzZTUwCi0tLS0gL2Rldi9udWxsCi0rKysgYi91cmN1L2FyY2gvbmlvczIuaAotQEAgLTAsMCArMSw0MCBAQAotKyNpZm5kZWYgX1VSQ1VfQVJDSF9OSU9TMl9ICi0rI2RlZmluZSBfVVJDVV9BUkNIX05JT1MyX0gKLSsKLSsvKgotKyAqIGFyY2hfbmlvczIuaDogdHJpdmlhbCBkZWZpbml0aW9ucyBmb3IgdGhlIE5JT1MyIGFyY2hpdGVjdHVyZS4KLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotKyAqLwotKwotKyNpbmNsdWRlIDx1cmN1L2NvbXBpbGVyLmg+Ci0rI2luY2x1ZGUgPHVyY3UvY29uZmlnLmg+Ci0rI2luY2x1ZGUgPHVyY3Uvc3lzY2FsbC1jb21wYXQuaD4KLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIGNtbV9tYigpCWNtbV9iYXJyaWVyKCkKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHVyY3UvYXJjaC9nZW5lcmljLmg+Ci0rCi0rI2VuZGlmIC8qIF9VUkNVX0FSQ0hfTklPUzJfSCAqLwotZGlmZiAtLWdpdCBhL3VyY3UvdWF0b21pYy9uaW9zMi5oIGIvdXJjdS91YXRvbWljL25pb3MyLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41YjNjMzAzCi0tLS0gL2Rldi9udWxsCi0rKysgYi91cmN1L3VhdG9taWMvbmlvczIuaAotQEAgLTAsMCArMSwzMiBAQAotKyNpZm5kZWYgX1VSQ1VfVUFUT01JQ19BUkNIX05JT1MyX0gKLSsjZGVmaW5lIF9VUkNVX1VBVE9NSUNfQVJDSF9OSU9TMl9ICi0rCi0rLyoKLSsgKiBBdG9taWMgZXhjaGFuZ2Ugb3BlcmF0aW9ucyBmb3IgdGhlIE5JT1MyIGFyY2hpdGVjdHVyZS4gTGV0IEdDQyBkbyBpdC4KLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLSsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQotKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgotKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0rICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsgKgotKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0rICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKLSsgKiBJTiBUSEUgU09GVFdBUkUuCi0rICovCi0rCi0rI2luY2x1ZGUgPHVyY3UvY29tcGlsZXIuaD4KLSsjaW5jbHVkZSA8dXJjdS9zeXN0ZW0uaD4KLSsjaW5jbHVkZSA8dXJjdS91YXRvbWljL2dlbmVyaWMuaD4KLSsKLSsjZW5kaWYgLyogX1VSQ1VfVUFUT01JQ19BUkNIX05JT1MyX0ggKi8KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjYjIwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIFJDVSAocmVhZC1jb3B5LXVwZGF0ZSkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXJjdSIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2x0dG5nLm9yZy9wcm9qZWN0L2lzc3VlcyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTQ4ZDI4NzM3Mjg5ZDc1YThmMWUwMWJhMmZkNzgyNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgorCitTUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2OWRhYjg1YjY5MjljMzc4MzM4Yjk1MDRhZGM2YWVhNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2I1OGE3YmE1MTUxMTk4MDg3ZjAyNWRjOGQxOWQ4OTE4ZTljNmQ1Njc3MmYwMzk2OTZjMTExZDlhYWQzMTkwIgorCitTID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuOS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjkuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ4NmUwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VyY3UuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTMyO21kNT00ZGUwZDY4ZDNhOTk3NjQzNzE1MDM2ZDIyMDlhZTFkOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkyMDk3MGUzNWExYTIwNjZjODM1M2VhYmZlYWI4NzMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiY2UzMmU2YTZjOTY3ZmVmNmQzN2FkYWFkZjMzZGYxOTg3OGQ2OTY3M2Y5ZWY5ZDNmMjQ3MGUwYzZlZDQwMDYiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotQ0ZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLURfR05VX1NPVVJDRSIKLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCmluZGV4IGQyN2M3MDYuLjViMTFiYzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCkBAIC04LDcgKzgsNyBAQAogU0VDVElPTiA9ICJsaWJzIgogREVQRU5EUyA9ICJsaWJ4bWwyIgogCi1TUkNfVVJJID0gImZ0cDovL3htbHNvZnQub3JnL2xpYnhzbHQvbGlieHNsdC0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwOi8veG1sc29mdC5vcmcvc291cmNlcy9saWJ4c2x0LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWdfZml4LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1nY3J5cHQtYW5kLWxpYnhtbDIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9maWxlcy8wMDAxLXRlc3RzLU1ha2VmaWxlLWRvbi10LXVzZS1MSUJESVItYXMtdmFyaWFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2ZpbGVzLzAwMDEtdGVzdHMtTWFrZWZpbGUtZG9uLXQtdXNlLUxJQkRJUi1hcy12YXJpYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDQ5NGU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9maWxlcy8wMDAxLXRlc3RzLU1ha2VmaWxlLWRvbi10LXVzZS1MSUJESVItYXMtdmFyaWFibGUucGF0Y2gKQEAgLTAsMCArMSw4MiBAQAorRnJvbSBkNDc2OGQ5ZTI5YjgwNTA5NmE4NmFhMTNjMGQzMGVlODIxNWFmNGRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTI6MDc6MDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHMvTWFrZWZpbGU6IGRvbid0IHVzZSBMSUJESVIgYXMgdmFyaWFibGUKKworTElCRElSIG1heSBiZSBvdmVycmlkZW4gd2l0aCBhIGVudmlyb25tZW50IHZhcmlhYmxlOiBJbiB0aGlzIGNhc2UgbWFrZQorY2xlYW4gYnJlYWtzLiBVc2UgYW5vdGhlciB2YXJpYWJsZSBuYW1lLgorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorLS0tCisgdGVzdHMvTWFrZWZpbGUgfCAyNiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZpbGUKK2luZGV4IDk3ZmE3ODIuLjUxZGQwMzggMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZQorKysrIGIvdGVzdHMvTWFrZWZpbGUKK0BAIC0zMiw3ICszMiw3IEBAIERFU1RESVIgPz0KKyBQUkVGSVggID89IC91c3IvbG9jYWwKKyBCSU5ESVIgIDo9ICQoUFJFRklYKS9iaW4KKyBNQU5ESVIgIDo9ICQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMQorLUxJQkRJUiAgOj0gLi4vbGliCisrTFo0RElSICA6PSAuLi9saWIKKyBQUkdESVIgIDo9IC4uL3Byb2dyYW1zCisgVk9JRCAgICA6PSAvZGV2L251bGwKKyBURVNURElSIDo9IHZlcnNpb25zVGVzdAorQEAgLTQzLDcgKzQzLDcgQEAgQ0ZMQUdTICArPSAtZyAtV2FsbCAtV2V4dHJhIC1XdW5kZWYgLVdjYXN0LXF1YWwgLVdjYXN0LWFsaWduIC1Xc2hhZG93IC1Xc3dpdGNoLWUKKyAgICAgICAgICAgIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IC1Xc3RyaWN0LXByb3RvdHlwZXMgXAorICAgICAgICAgICAgLVdwb2ludGVyLWFyaXRoIC1Xc3RyaWN0LWFsaWFzaW5nPTEKKyBDRkxBR1MgICs9ICQoTU9SRUZMQUdTKQorLUNQUEZMQUdTOj0gLUkkKExJQkRJUikgLUkkKFBSR0RJUikgLURYWEhfTkFNRVNQQUNFPUxaNF8KKytDUFBGTEFHUzo9IC1JJChMWjRESVIpIC1JJChQUkdESVIpIC1EWFhIX05BTUVTUEFDRT1MWjRfCisgRkxBR1MgICAgPSAkKENGTEFHUykgJChDUFBGTEFHUykgJChMREZMQUdTKQorIAorIAorQEAgLTc5LDMxICs3OSwzMSBAQCBsejRjMzI6ICAgIyBjcmVhdGUgYSAzMi1iaXRzIHZlcnNpb24gZm9yIDMyLzY0IGludGVyb3AgdGVzdHMKKyAJJChNQUtFKSAtQyAkKFBSR0RJUikgY2xlYW4gJEAgQ0ZMQUdTPSItbTMyICQoQ0ZMQUdTKSIKKyAJY3AgJChMWjQpICQoTFo0KWMzMgorIAorLWZ1bGxiZW5jaCAgOiAkKExJQkRJUikvbHo0Lm8gJChMSUJESVIpL2x6NGhjLm8gJChMSUJESVIpL2x6NGZyYW1lLm8gJChMSUJESVIpL3h4aGFzaC5vIGZ1bGxiZW5jaC5jCisrZnVsbGJlbmNoICA6ICQoTFo0RElSKS9sejQubyAkKExaNERJUikvbHo0aGMubyAkKExaNERJUikvbHo0ZnJhbWUubyAkKExaNERJUikveHhoYXNoLm8gZnVsbGJlbmNoLmMKKyAJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkKKyAKKy1mdWxsYmVuY2gtbGliOiBmdWxsYmVuY2guYyAkKExJQkRJUikveHhoYXNoLmMKKy0JJChNQUtFKSAtQyAkKExJQkRJUikgbGlibHo0LmEKKy0JJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkgJChMSUJESVIpL2xpYmx6NC5hCisrZnVsbGJlbmNoLWxpYjogZnVsbGJlbmNoLmMgJChMWjRESVIpL3h4aGFzaC5jCisrCSQoTUFLRSkgLUMgJChMWjRESVIpIGxpYmx6NC5hCisrCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpICQoTFo0RElSKS9saWJsejQuYQorIAorLWZ1bGxiZW5jaC1kbGw6IGZ1bGxiZW5jaC5jICQoTElCRElSKS94eGhhc2guYworLQkkKE1BS0UpIC1DICQoTElCRElSKSBsaWJsejQKKy0JJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkgLURMWjRfRExMX0lNUE9SVD0xICQoTElCRElSKS9kbGwvbGlibHo0LmRsbAorK2Z1bGxiZW5jaC1kbGw6IGZ1bGxiZW5jaC5jICQoTFo0RElSKS94eGhhc2guYworKwkkKE1BS0UpIC1DICQoTFo0RElSKSBsaWJsejQKKysJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkgLURMWjRfRExMX0lNUE9SVD0xICQoTFo0RElSKS9kbGwvbGlibHo0LmRsbAorIAorLWZ1enplciAgOiAkKExJQkRJUikvbHo0Lm8gJChMSUJESVIpL2x6NGhjLm8gJChMSUJESVIpL3h4aGFzaC5vIGZ1enplci5jCisrZnV6emVyICA6ICQoTFo0RElSKS9sejQubyAkKExaNERJUikvbHo0aGMubyAkKExaNERJUikveHhoYXNoLm8gZnV6emVyLmMKKyAJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkKKyAKKy1mcmFtZXRlc3Q6ICQoTElCRElSKS9sejRmcmFtZS5vICQoTElCRElSKS9sejQubyAkKExJQkRJUikvbHo0aGMubyAkKExJQkRJUikveHhoYXNoLm8gZnJhbWV0ZXN0LmMKKytmcmFtZXRlc3Q6ICQoTFo0RElSKS9sejRmcmFtZS5vICQoTFo0RElSKS9sejQubyAkKExaNERJUikvbHo0aGMubyAkKExaNERJUikveHhoYXNoLm8gZnJhbWV0ZXN0LmMKKyAJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkKKyAKKy1mYXN0dGVzdDogJChMSUJESVIpL2x6NC5vIGZhc3R0ZXN0LmMKKytmYXN0dGVzdDogJChMWjRESVIpL2x6NC5vIGZhc3R0ZXN0LmMKKyAJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkKKyAKKyBkYXRhZ2VuIDogJChQUkdESVIpL2RhdGFnZW4uYyBkYXRhZ2VuY2xpLmMKKyAJJChDQykgJChGTEFHUykgLUkkKFBSR0RJUikgJF4gLW8gJEAkKEVYVCkKKyAKKyBjbGVhbjoKKy0JQCQoTUFLRSkgLUMgJChMSUJESVIpICRAID4gJChWT0lEKQorKwlAJChNQUtFKSAtQyAkKExaNERJUikgJEAgPiAkKFZPSUQpCisgCUAkKE1BS0UpIC1DICQoUFJHRElSKSAkQCA+ICQoVk9JRCkKKyAJQCQoUk0pIGNvcmUgKi5vICoudGVzdCB0bXAqIFwKKyAgICAgICAgIGZ1bGxiZW5jaC1kbGwkKEVYVCkgZnVsbGJlbmNoLWxpYiQoRVhUKSBcCistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9maWxlcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNiZmM0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsNDMgQEAKKyMhL2Jpbi9zaAorY2QgdGVzdHN1aXRlCisKK2VjaG8gLW4gIi0tLS0gdGVzdC1sejQgLS0tLSIKK21ha2UgLUMgdGVzdHMgdGVzdC1sejQgID4gL2Rldi9udWxsIDI+JjEKKworaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gIlBBU1MiCitlbHNlCisgIGVjaG8gIkZBSUwiCitmaQorCitlY2hvIC1uICItLS0tIHRlc3QtZmFzdHRlc3QgLS0tLSIKK21ha2UgLUMgdGVzdHMgdGVzdC1mYXN0dGVzdCAgPiAvZGV2L251bGwgMj4mMQoraWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gIlBBU1MiCitlbHNlCisgIGVjaG8gIkZBSUwiCitmaQorCitlY2hvIC1uICItLS0tIHRlc3QtZnJhbWV0ZXN0IC0tLS0iCittYWtlIC1DIHRlc3RzIHRlc3QtZnJhbWV0ZXN0ID4gL2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICBlY2hvICJQQVNTIgorZWxzZQorICBlY2hvICJGQUlMIgorZmkKKworZWNobyAtbiAiLS0tLSB0ZXN0LWZ1bGxiZW5jaCAtLS0tIgorbWFrZSAtQyB0ZXN0cyB0ZXN0LWZ1bGxiZW5jaCA+ICAvZGV2L251bGwgMj4mMQoraWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gIlBBU1MiCitlbHNlCisgIGVjaG8gIkZBSUwiCitmaQorCitlY2hvIC1uICItLS0tIHRlc3QtZnV6emVyIC0tLS0iCittYWtlIC1DIHRlc3RzIHRlc3QtZnV6emVyID4gIC9kZXYvbnVsbCAyPiYxCitpZiBbICQ/IC1lcSAwIF07IHRoZW4KKyAgZWNobyAiUEFTUyIKK2Vsc2UKKyAgZWNobyAiRkFJTCIKK2ZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2M1YTdhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRyZW1lbHkgRmFzdCBDb21wcmVzc2lvbiBhbGdvcml0aG0iCi1ERVNDUklQVElPTiA9ICJMWjQgaXMgYSB2ZXJ5IGZhc3QgbG9zc2xlc3MgY29tcHJlc3Npb24gYWxnb3JpdGhtLCBwcm92aWRpbmcgY29tcHJlc3Npb24gc3BlZWQgYXQgNDAwIE1CL3MgcGVyIGNvcmUsIHNjYWxhYmxlIHdpdGggbXVsdGktY29yZXMgQ1BVLiBJdCBhbHNvIGZlYXR1cmVzIGFuIGV4dHJlbWVseSBmYXN0IGRlY29kZXIsIHdpdGggc3BlZWQgaW4gbXVsdGlwbGUgR0IvcyBwZXIgY29yZSwgdHlwaWNhbGx5IHJlYWNoaW5nIFJBTSBzcGVlZCBsaW1pdHMgb24gbXVsdGktY29yZSBzeXN0ZW1zLiIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9saWIvTElDRU5TRTttZDU9MGIwZDA2M2YzN2E0NDc3YjU0YWYyNDU5NDc3ZGNhZmQiCi0KLVNSQ1JFViA9ICJkODZkYzkxNjc3MWMxMjZhZmI3OTc2MzdkZGE5ZjY0MjFjMGNiOTk4IgotCi1QViA9ICIxMzErZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9DeWFuNDk3My9sejQuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRU1BS0UgPSAiUFJFRklYPSR7cHJlZml4fSBDQz0nJHtDQ30nIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfSIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejRfMS43LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NF8xLjcuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmExYWI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejRfMS43LjQuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJFeHRyZW1lbHkgRmFzdCBDb21wcmVzc2lvbiBhbGdvcml0aG0iCitERVNDUklQVElPTiA9ICJMWjQgaXMgYSB2ZXJ5IGZhc3QgbG9zc2xlc3MgY29tcHJlc3Npb24gYWxnb3JpdGhtLCBwcm92aWRpbmcgY29tcHJlc3Npb24gc3BlZWQgYXQgNDAwIE1CL3MgcGVyIGNvcmUsIHNjYWxhYmxlIHdpdGggbXVsdGktY29yZXMgQ1BVLiBJdCBhbHNvIGZlYXR1cmVzIGFuIGV4dHJlbWVseSBmYXN0IGRlY29kZXIsIHdpdGggc3BlZWQgaW4gbXVsdGlwbGUgR0IvcyBwZXIgY29yZSwgdHlwaWNhbGx5IHJlYWNoaW5nIFJBTSBzcGVlZCBsaW1pdHMgb24gbXVsdGktY29yZSBzeXN0ZW1zLiIKKworTElDRU5TRSA9ICJCU0QgfCBCU0QtMi1DbGF1c2UgfCBHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGliL0xJQ0VOU0U7bWQ1PWViYzJlYTQ4MTRhNjRkZTc3MDhmMTU3MTkwNGIzMmNjXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcHJvZ3JhbXMvQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9N2YyODU3ZDU4YmVmZjZkMDQxMzdiZjliMDllNWZmYjYiCisKK1BFID0gIjEiCisKK1NSQ1JFViA9ICI3YmI2NGZmMmI2OWE5ZjgzNjdkZTlhYjQ4M2NkYWRmNDJiNGMxYjY1IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbHo0L2x6NC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1NYWtlZmlsZS1kb24tdC11c2UtTElCRElSLWFzLXZhcmlhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRU1BS0UgPSAiUFJFRklYPSR7cHJlZml4fSBDQz0nJHtDQ30nIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfSIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vMDAwMS1BZGQtcGtnY29uZmlnZGlyLXRvLXNvbHZlLXRoZS11bmRlZmluZS1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvLzAwMDEtQWRkLXBrZ2NvbmZpZ2Rpci10by1zb2x2ZS10aGUtdW5kZWZpbmUtZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIzNWExNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvLzAwMDEtQWRkLXBrZ2NvbmZpZ2Rpci10by1zb2x2ZS10aGUtdW5kZWZpbmUtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBlNzMwYmZkN2MyZDNhNGI1ZjM2MDU4Nzg1OTljYjliMjBkMzFiMWZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KK0RhdGU6IEZyaSwgMiBKdW4gMjAxNyAxMTo1MjoyNSArMDkwMAorU3ViamVjdDogW1BBVENIXSBBZGQgcGtnY29uZmlnZGlyIHRvIHNvbHZlIHRoZSB1bmRlZmluZSBlcnJvci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZTRkMzgzYi4uYzc1MDIzZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTE0LDYgKzE0LDcgQEAgQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSSQodG9wX3NyY2RpcikKKyBMREFERCA9IHNyYy9saWJsem8yLmxhCisgbGliX0xUTElCUkFSSUVTID0KKyBub2luc3RfUFJPR1JBTVMgPQorK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKKyBwa2djb25maWdfREFUQSA9IGx6bzIucGMKKyAKKyAKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMDkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5Nzg2MTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4wOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiTG9zc2xlc3MgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2x6b19pbml0LmM7YmVnaW5saW5lPTU7ZW5kbGluZT0yNTttZDU9MzU1MDIzODM1YTliOWVlYjcwYWI4OTUzOTVlOTUxZmYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvL2Rvd25sb2FkL2x6by0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbWVtY3B5LWluc3RlYWQtb2YtcmVpbnZlbnRpbmctaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWNpbmNsdWRlLm00IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImM3ZmZjOWExMDNhZmUyZDFiYmEwYjAxNWU3YWE4ODdmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyOTRhN2NlZDMxMzA2M2MwNTdjNTA0MjU3ZjQzN2M4MzM1YzQxYmZlZWQyMzUzMWVlNGU2YTJiODdiY2IzNGMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQljcCAke1N9L3V0aWwvY2hlY2suc2ggJHQKLQljcCAke0J9L21pbmlsem8vdGVzdG1pbmkgJHQKLQlmb3IgaSBpbiB0ZXN0cy9hbGlnbiB0ZXN0cy9jaGtzdW0gbHpvdGVzdC9sem90ZXN0IGV4YW1wbGVzL3NpbXBsZQotCQlkbyBjcCAke0J9L2BkaXJuYW1lICRpYC8ubGlicy9gYmFzZW5hbWUgJGlgICR0OyBcCi0JZG9uZQotfQotCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MGQyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiTG9zc2xlc3MgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2x6b19pbml0LmM7YmVnaW5saW5lPTU7ZW5kbGluZT0yNTttZDU9OWFlNjk3Y2EwMTgyOWIwYTM4M2M1ZDJkMTYzZTAxMDgiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvL2Rvd25sb2FkL2x6by0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbWVtY3B5LWluc3RlYWQtb2YtcmVpbnZlbnRpbmctaXQucGF0Y2ggXAorCSAgIGZpbGU6Ly8wMDAxLUFkZC1wa2djb25maWdkaXItdG8tc29sdmUtdGhlLXVuZGVmaW5lLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzOWQzZjNmOWM1NWM4N2IxZTVkNjg4OGUxNDIwZjRiNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMGY4OTI5NDMyMDgyNjZmOWI2NTQzYjNhZTMwOGZhYjYyODRjNWM5MGU2Mjc5MzE0NDZmYjQ5YjQyMjFhMDcyIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJY3AgJHtTfS91dGlsL2NoZWNrLnNoICR0CisJY3AgJHtCfS9taW5pbHpvL3Rlc3RtaW5pICR0CisJZm9yIGkgaW4gdGVzdHMvYWxpZ24gdGVzdHMvY2hrc3VtIGx6b3Rlc3QvbHpvdGVzdCBleGFtcGxlcy9zaW1wbGUKKwkJZG8gY3AgJHtCfS9gZGlybmFtZSAkaWAvLmxpYnMvYGJhc2VuYW1lICRpYCAkdDsgXAorCWRvbmUKK30KKworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvZGxvcGVuLXRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvZGxvcGVuLXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRmMGI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuMy9kbG9wZW4tdGVzdC5wYXRjaApAQCAtMCwwICsxLDIwIEBACitSZXBsYWNlIHJlbGF0aXZlIHBhdGggb2YgbGlibmV0dGxlLnNvIHdpdGggYWJzb2x1dGUgcGF0aCBzbyB0aGUgdGVzdAorcHJvZ3JhbSBjYW4gZmluZCBpdC4KK1JlbGF0aXZlIHBhdGhzIGFyZSBub3Qgc3VpdGFibGUsIGFzIHRoZSBmb2xkZXIgc3RydWN1cmUgZm9yIHB0ZXN0CitpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIGV4cGVjdGVkIGJ5IHRoZSBuZXR0bGUgdGVzdHN1aXRlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCistLS0gYS90ZXN0c3VpdGUvZGxvcGVuLXRlc3QuYwkyMDE2LTEwLTAxIDAwOjI4OjM4LjAwMDAwMDAwMCAtMDcwMAorKysrIGIvdGVzdHN1aXRlL2Rsb3Blbi10ZXN0LmMJMjAxNy0xMC0xMyAxMTowODo1Ny4yMjc1NzI4NjAgLTA3MDAKK0BAIC05LDcgKzksNyBAQAorIG1haW4gKGludCBhcmdjIFVOVVNFRCwgY2hhciAqKmFyZ3YgVU5VU0VEKQorIHsKKyAjaWYgSEFWRV9MSUJETAorLSAgdm9pZCAqaGFuZGxlID0gZGxvcGVuICgiLi4vbGlibmV0dGxlLnNvIiwgUlRMRF9OT1cpOworKyAgdm9pZCAqaGFuZGxlID0gZGxvcGVuICgiL3Vzci9saWIvbGlibmV0dGxlLnNvIiwgUlRMRF9OT1cpOworICAgaW50ICgqZ2V0X3ZlcnNpb24pKHZvaWQpOworICAgaWYgKCFoYW5kbGUpCisgICAgIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYgppbmRleCBiNzZiYWJmLi4zOTUxNjc4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGVfMy4zLmJiCkBAIC0xMSw1ICsxMSw5IEBACiAgICAgICAgICAgICBmaWxlOi8vY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoIFwKICAgICAgICAgICAgICIKIAorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgIGZpbGU6Ly9kbG9wZW4tdGVzdC5wYXRjaCBcCisgICAgICAgICAgICAiCisKIFNSQ19VUklbbWQ1c3VtXSA9ICIxMGY5NjlmNzhhNDYzNzA0YWU3MzUyOTk3ODE0OGRiZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Njk0MjYyN2Q1ZDBjYTExNzIwZmVjMThkODFmYzM4ZjdlZjgzN2VhNDE5N2MxZjYzMGU3MWNlMGQ0NzBiMTFlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRmYzA2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiTmV3IEdOVSBQb3J0YWJsZSBUaHJlYWRzIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9zb2Z0d2FyZS9wdGgvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjMrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCi0gICAgIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ucHRoL25wdGgtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImVmZTE1MjRjNTM2NzBiNTc1NWRjMjc4OTNkMmQ2OGEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjYTgxOTQwNDM2YWVkMDczNGViOGQwZmY4YjE3OWUwNGNjOGMwODdmNTYyNTIwNDQxOWY1ZjQ1ZDczNmE4MmEiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZGU3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIk5ldyBHTlUgUG9ydGFibGUgVGhyZWFkcyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvc29mdHdhcmUvcHRoLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmNhY2VkMGIyNWRmZWZkNGM2MDFkOTJiZDE1MTE2ZGVcCisgICAgIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ucHRoL25wdGgtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjliYTJkYzQzMDJkMmYzMmM2NjczN2M0M2VkMTkxYjFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5NGE2OTBjMWY1MzdiOTJlZDgyOWQ4NjdiZWU1MzdlNDZiZTkzZmJkNjBiMTZjMDQ2MzBmYmJmY2Q5ZGIzYzIiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzY2Q2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDE0N2YzYzJhY2JkOTZkNDQwMjVjZWMxMTgwMGRlZDAyODIzMjc3NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxOCBTZXAgMjAxNyAxNzoyMjo0MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtZDogRml4IGJ1aWxkIHdpdGggbXVzbAorCitUaGUgTUlQUyBzcGVjaWZpYyBoZWFkZXIgPHNnaWRlZnMuaD4gaXMgbm90IHByb3ZpZGVkIGJ5IG11c2wKK2xpbnV4IGtlcm5lbCBoZWFkZXJzIHByb3ZpZGUgPGFzbS9zZ2lkZWZzLmg+IHdoaWNoIGhhcyBzYW1lIGRlZmluaXRpb25zCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCitpbmRleCA2NDBiMTljLi4zMTI5NmE4IDEwMDY0NAorLS0tIGEvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCisrKysgYi9wci9pbmNsdWRlL21kL19saW51eC5jZmcKK0BAIC00OTksNyArNDk5LDcgQEAKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorIAorIC8qIEZvciBfQUJJNjQgKi8KKy0jaW5jbHVkZSA8c2dpZGVmcy5oPgorKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgorIAorICNpZmRlZiBfX01JUFNFQl9fCisgI2RlZmluZSBJU19CSUdfRU5ESUFOIDEKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjEzLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZWJlY2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjEzLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXRzY2FwZSBQb3J0YWJsZSBSdW50aW1lIExpYnJhcnkiCi1IT01FUEFHRSA9ICAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uc3ByLyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCB8IE1QTC0yLjAgfCBMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NvbmZpZ3VyZS5pbjtiZWdpbmxpbmU9MztlbmRsaW5lPTY7bWQ1PTkwYzJmZGVlMzhlNDVkNjMwMmFiY2ZlNDc1YzhiNWM1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluO2JlZ2lubGluZT00O2VuZGxpbmU9Mzg7bWQ1PWJlZGExZGJiOThhNTE1ZjU1N2QzZTU4ZWYwNmJjYTk5IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy92JHtQVn0vc3JjL25zcHItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKLSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5YzQ0Mjk4YTZmYzQ3OGIzYzBhNGU5OGY0Zjk5ODFlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZTRjMTc1MTMzOWE3NmU3Yzc3MmMwYzA0NzQ3NDg4ZDdmOGM5ODk4MGI0MzRkYzg0Njk3N2U0MzExNzgzM2FiIgotCi1DVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgotCi1TID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotVEVTVFMgPSAiIFwKLSAgICBhY2NlcHQgXAotICAgIGFjY2VwdHJlYWQgXAotICAgIGFjY2VwdHJlYWRlbXUgXAotICAgIGFmZmluaXR5IFwKLSAgICBhbGFybSBcCi0gICAgYW5vbmZtIFwKLSAgICBhdG9taWMgXAotICAgIGF0dGFjaCBcCi0gICAgYmlnZmlsZSBcCi0gICAgY2xlYW51cCBcCi0gICAgY2x0c3J2ICBcCi0gICAgY29uY3VyIFwKLSAgICBjdmFyIFwKLSAgICBjdmFyMiBcCi0gICAgZGxsdGVzdCBcCi0gICAgZHRvYSBcCi0gICAgZXJyY29kZXMgXAotICAgIGV4aXQgXAotICAgIGZkY2FjaCBcCi0gICAgZmlsZWlvIFwKLSAgICBmb3JlaWduIFwKLSAgICBmb3JtYXR0bSBcCi0gICAgZnN5bmMgXAotICAgIGdldGhvc3QgXAotICAgIGdldHByb3RvIFwKLSAgICBpMmwgXAotICAgIGluaXRjbGsgXAotICAgIGlucnZhbCBcCi0gICAgaW5zdHJ1bXQgXAotICAgIGludHJpbyBcCi0gICAgaW50cnVwdCBcCi0gICAgaW9fdGltZW91dCBcCi0gICAgaW9jb250aHIgXAotICAgIGpvaW4gXAotICAgIGpvaW5rayBcCi0gICAgam9pbmt1IFwKLSAgICBqb2ludWsgXAotICAgIGpvaW51dSBcCi0gICAgbGF5ZXIgXAotICAgIGxhenlpbml0IFwKLSAgICBsaWJmaWxlbmFtZSBcCi0gICAgbGx0ZXN0IFwKLSAgICBsb2NrIFwKLSAgICBsb2NrZmlsZSBcCi0gICAgbG9nZmlsZSBcCi0gICAgbG9nZ2VyIFwKLSAgICBtYW55X2N2IFwKLSAgICBtdWx0aXdhaXQgXAotICAgIG5hbWVzaG0xIFwKLSAgICBuYmxheWVyIFwKLSAgICBub25ibG9jayBcCi0gICAgbnRpb3RvIFwKLSAgICBudG9oIFwKLSAgICBvcF8ybG9uZyBcCi0gICAgb3BfZXhjbCBcCi0gICAgb3BfZmlsbmYgXAotICAgIG9wX2ZpbG9rIFwKLSAgICBvcF9ub2ZpbCBcCi0gICAgcGFyZW50IFwKLSAgICBwYXJzZXRtIFwKLSAgICBwZWVrIFwKLSAgICBwZXJmIFwKLSAgICBwaXBlcGluZyBcCi0gICAgcGlwZXBpbmcyIFwKLSAgICBwaXBlc2VsZiBcCi0gICAgcG9sbF9ubSBcCi0gICAgcG9sbF90byBcCi0gICAgcG9sbGFibGUgXAotICAgIHByZnRlc3QgXAotICAgIHByaW1ibG9rIFwKLSAgICBwcm92aWRlciBcCi0gICAgcHJwb2xsbWwgXAotICAgIHJhbmZpbGUgXAotICAgIHJhbmRzZWVkIFwKLSAgICByZWluaXQgXAotICAgIHJ3bG9ja3Rlc3QgXAotICAgIHNlbF9zcGQgXAotICAgIHNlbGN0X2VyIFwKLSAgICBzZWxjdF9ubSBcCi0gICAgc2VsY3RfdG8gXAotICAgIHNlbGludHIgXAotICAgIHNlbWEgXAotICAgIHNlbWFlcnIgXAotICAgIHNlbWFwaW5nIFwKLSAgICBzZW5kemxmIFwKLSAgICBzZXJ2ZXJfdGVzdCBcCi0gICAgc2VydnJfa2sgXAotICAgIHNlcnZyX3VrIFwKLSAgICBzZXJ2cl9rdSBcCi0gICAgc2VydnJfdXUgXAotICAgIHNob3J0X3RocmVhZCBcCi0gICAgc2lncGlwZSBcCi0gICAgc29ja2V0IFwKLSAgICBzb2Nrb3B0IFwKLSAgICBzb2NrcGluZyBcCi0gICAgc3ByaW50ZiBcCi0gICAgc3RhY2sgXAotICAgIHN0ZGlvIFwKLSAgICBzdHIyYWRkciBcCi0gICAgc3Ryb2QgXAotICAgIHN3aXRjaCBcCi0gICAgc3lzdGVtIFwKLSAgICB0ZXN0Yml0IFwKLSAgICB0ZXN0ZmlsZSBcCi0gICAgdGhyZWFkcyBcCi0gICAgdGltZW1hYyBcCi0gICAgdGltZXRlc3QgXAotICAgIHRwZCBcCi0gICAgdWRwc3J2IFwKLSAgICB2ZXJjaGVjayBcCi0gICAgdmVyc2lvbiBcCi0gICAgd3JpdGV2IFwKLSAgICB4bm90aWZ5IFwKLSAgICB6ZXJvbGVuIgotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCIgTERGTEFHUz0iIiBDQz1nY2MgLUMgY29uZmlnIGV4cG9ydAotfQotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLQlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKLSAgICBzZWQgLWkgIFwKLSAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCi0gICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKLSAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAotICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAotICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCi0gICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYwotCi0gICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0gICAgY2QgJHtCfS9wci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLQotICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQotICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCi0gICAgIyB0aW1lCi0gICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcwotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKLUZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAotICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGVmOTk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiCkBAIC0wLDAgKzEsMTkxIEBACitTVU1NQVJZID0gIk5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUgTGlicmFyeSIKK0hPTUVQQUdFID0gICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25zcHIvIgorTElDRU5TRSA9ICJHUEwtMi4wIHwgTVBMLTIuMCB8IExHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlndXJlLmluO2JlZ2lubGluZT0zO2VuZGxpbmU9NjttZDU9OTBjMmZkZWUzOGU0NWQ2MzAyYWJjZmU0NzVjOGI1YzUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW47YmVnaW5saW5lPTQ7ZW5kbGluZT0zODttZDU9YmVkYTFkYmI5OGE1MTVmNTU3ZDNlNThlZjA2YmNhOTkiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzL3Yke1BWfS9zcmMvbnNwci0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1TU0laRV9NQVgtYW5kLVNJWkVfTUFYLWRlZmluaXRpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKKyIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MmZkODk2M2E0YjM5NGY2MmQ0M2JhNjA0ZjAzZmFiNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjMxMDJkOTc2NjU1MDRhZWVlNzMzNjNjMTFhMjFjMDYyYWQ2N2EyNTIyMjQyMzY4YjdmMDE5Zjk2YTUzY2QxIgorCitDVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgorCitTID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgorCitSREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworVEVTVFMgPSAiIFwKKyAgICBhY2NlcHQgXAorICAgIGFjY2VwdHJlYWQgXAorICAgIGFjY2VwdHJlYWRlbXUgXAorICAgIGFmZmluaXR5IFwKKyAgICBhbGFybSBcCisgICAgYW5vbmZtIFwKKyAgICBhdG9taWMgXAorICAgIGF0dGFjaCBcCisgICAgYmlnZmlsZSBcCisgICAgY2xlYW51cCBcCisgICAgY2x0c3J2ICBcCisgICAgY29uY3VyIFwKKyAgICBjdmFyIFwKKyAgICBjdmFyMiBcCisgICAgZGxsdGVzdCBcCisgICAgZHRvYSBcCisgICAgZXJyY29kZXMgXAorICAgIGV4aXQgXAorICAgIGZkY2FjaCBcCisgICAgZmlsZWlvIFwKKyAgICBmb3JlaWduIFwKKyAgICBmb3JtYXR0bSBcCisgICAgZnN5bmMgXAorICAgIGdldGhvc3QgXAorICAgIGdldHByb3RvIFwKKyAgICBpMmwgXAorICAgIGluaXRjbGsgXAorICAgIGlucnZhbCBcCisgICAgaW5zdHJ1bXQgXAorICAgIGludHJpbyBcCisgICAgaW50cnVwdCBcCisgICAgaW9fdGltZW91dCBcCisgICAgaW9jb250aHIgXAorICAgIGpvaW4gXAorICAgIGpvaW5rayBcCisgICAgam9pbmt1IFwKKyAgICBqb2ludWsgXAorICAgIGpvaW51dSBcCisgICAgbGF5ZXIgXAorICAgIGxhenlpbml0IFwKKyAgICBsaWJmaWxlbmFtZSBcCisgICAgbGx0ZXN0IFwKKyAgICBsb2NrIFwKKyAgICBsb2NrZmlsZSBcCisgICAgbG9nZmlsZSBcCisgICAgbG9nZ2VyIFwKKyAgICBtYW55X2N2IFwKKyAgICBtdWx0aXdhaXQgXAorICAgIG5hbWVzaG0xIFwKKyAgICBuYmxheWVyIFwKKyAgICBub25ibG9jayBcCisgICAgbnRpb3RvIFwKKyAgICBudG9oIFwKKyAgICBvcF8ybG9uZyBcCisgICAgb3BfZXhjbCBcCisgICAgb3BfZmlsbmYgXAorICAgIG9wX2ZpbG9rIFwKKyAgICBvcF9ub2ZpbCBcCisgICAgcGFyZW50IFwKKyAgICBwYXJzZXRtIFwKKyAgICBwZWVrIFwKKyAgICBwZXJmIFwKKyAgICBwaXBlcGluZyBcCisgICAgcGlwZXBpbmcyIFwKKyAgICBwaXBlc2VsZiBcCisgICAgcG9sbF9ubSBcCisgICAgcG9sbF90byBcCisgICAgcG9sbGFibGUgXAorICAgIHByZnRlc3QgXAorICAgIHByaW1ibG9rIFwKKyAgICBwcm92aWRlciBcCisgICAgcHJwb2xsbWwgXAorICAgIHJhbmZpbGUgXAorICAgIHJhbmRzZWVkIFwKKyAgICByZWluaXQgXAorICAgIHJ3bG9ja3Rlc3QgXAorICAgIHNlbF9zcGQgXAorICAgIHNlbGN0X2VyIFwKKyAgICBzZWxjdF9ubSBcCisgICAgc2VsY3RfdG8gXAorICAgIHNlbGludHIgXAorICAgIHNlbWEgXAorICAgIHNlbWFlcnIgXAorICAgIHNlbWFwaW5nIFwKKyAgICBzZW5kemxmIFwKKyAgICBzZXJ2ZXJfdGVzdCBcCisgICAgc2VydnJfa2sgXAorICAgIHNlcnZyX3VrIFwKKyAgICBzZXJ2cl9rdSBcCisgICAgc2VydnJfdXUgXAorICAgIHNob3J0X3RocmVhZCBcCisgICAgc2lncGlwZSBcCisgICAgc29ja2V0IFwKKyAgICBzb2Nrb3B0IFwKKyAgICBzb2NrcGluZyBcCisgICAgc3ByaW50ZiBcCisgICAgc3RhY2sgXAorICAgIHN0ZGlvIFwKKyAgICBzdHIyYWRkciBcCisgICAgc3Ryb2QgXAorICAgIHN3aXRjaCBcCisgICAgc3lzdGVtIFwKKyAgICB0ZXN0Yml0IFwKKyAgICB0ZXN0ZmlsZSBcCisgICAgdGhyZWFkcyBcCisgICAgdGltZW1hYyBcCisgICAgdGltZXRlc3QgXAorICAgIHRwZCBcCisgICAgdWRwc3J2IFwKKyAgICB2ZXJjaGVjayBcCisgICAgdmVyc2lvbiBcCisgICAgd3JpdGV2IFwKKyAgICB4bm90aWZ5IFwKKyAgICB6ZXJvbGVuIgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCAke0JVSUxEX0NGTEFHU30iIExERkxBR1M9IiIgQ0M9IiR7QlVJTERfQ0N9IiAtQyBjb25maWcgZXhwb3J0Cit9CisKK2RvX2NvbXBpbGVfYXBwZW5kKCkgeworCW9lX3J1bm1ha2UgLUMgcHIvdGVzdHMKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtRCAke1dPUktESVJ9L25zcHIucGMuaW4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworICAgIHNlZCAtaSAgXAorICAgIC1lICdzOk5TUFJWRVJTSU9OOiR7UFZ9OmcnIFwKKyAgICAtZSAnczpPRVBSRUZJWDoke3ByZWZpeH06ZycgXAorICAgIC1lICdzOk9FTElCRElSOiR7bGliZGlyfTpnJyBcCisgICAgLWUgJ3M6T0VJTkNESVI6JHtpbmNsdWRlZGlyfTpnJyBcCisgICAgLWUgJ3M6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcnIFwKKyAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCisKKyAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5wbCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5zaCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBjZCAke0J9L3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7VEVTVFN9ICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cworCisgICAgIyBkZWxldGUgY29tcGlsZS1ldC5wbCBhbmQgcGVyci5wcm9wZXJ0aWVzIGZyb20gJHtiaW5kaXJ9IGJlY2F1c2UgdGhlc2UgYXJlCisgICAgIyBvbmx5IHVzZWQgdG8gZ2VuZXJhdGUgcHJlcnIuYyBhbmQgcHJlcnIuaCBmaWxlcyBmcm9tIHByZXJyLmV0IGF0IGNvbXBpbGUKKyAgICAjIHRpbWUKKyAgICBybSAke0R9JHtiaW5kaXJ9L2NvbXBpbGUtZXQucGwgJHtEfSR7YmluZGlyfS9wcmVyci5wcm9wZXJ0aWVzCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9uc3ByL3Rlc3RzLyogJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCisgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8qICR7ZGF0YWRpcn0vYWNsb2NhbC8qICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaAppbmRleCBmN2YyYzIxLi44MGI4NjkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaApAQCAtNiw2ICs2LDggQEAKIFgzMiB1c2VzIDMyLWJpdCBwb2ludGVycywgbm90IDY0LWJpdC4KIAogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBuc3MvbGliL2ZyZWVibC9wb2x5MTMwNS1kb25uYS14NjQtc3NlMi1pbmNyZW1lbnRhbC1zb3VyY2UuYyB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVkODZmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjI4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCi1ERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCi1kZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKLXNlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCi1BcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAotVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCi12MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNUEwtMi4wIHwgKE1QTC0yLjAgJiBHUEwtMi4wKykgfCAoTVBMLTIuMCAmIExHUEwtMi4xKykiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25zcy9DT1BZSU5HO21kNT0zYjFlODhlMWI5YzBiNWE0YjI4ODFkNDZjY2UwNmExOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0U7bWQ1PTQ5MWYxNThkMDlkOTQ4NDY2YWZjZTg1ZDZmMWZlMThmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRS1NUEw7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgotCi1TUkNfVVJJID0gIlwKLSAgICBodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9zZWN1cml0eS9uc3MvcmVsZWFzZXMvTlNTXzNfMjhfMV9SVE0vc3JjLyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIFwKLSAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAotICAgIGZpbGU6Ly9wcWcuYy1VTExfYWRkZW5kLnBhdGNoIFwKLSAgICBmaWxlOi8vRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggXAotICAgIGZpbGU6Ly9uc3MucGMuaW4gXAotICAgIGZpbGU6Ly9zaWdubGlicy5zaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZTk4ZDQ4NDM1Y2VlNTc5MmY5N2VmN2ZjMzVhNjAyYzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNThjYzBjMDVjMGVkOTUyM2U2ZDgyMGJlYTc0ZjUxMzUzOGY0OGM4N2FhYzkzMTg3NmUzZDM3NzVkZTFhODJhZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1MvTlNTX1JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTlNTXyg/UDxwdmVyPi4rKV9yZWxlYXNlX25vdGVzIgotCi1pbmhlcml0IHNpdGVpbmZvCi0KLURFUEVORFMgPSAic3FsaXRlMyBuc3ByIHpsaWIgbnNzLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInNxbGl0ZTMtbmF0aXZlIG5zcHItbmF0aXZlIHpsaWItbmF0aXZlIgotUkRFUEVORFNfJHtQTn0tc21pbWUgPSAicGVybCIKLQotVEQgPSAiJHtTfS90ZW50YXRpdmUtZGlzdCIKLVREUyA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0LXN0YWdpbmciCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9saWJjLW11c2wgKCkgewotICAgIHNlZCAtaSAtZSAnLy1ESEFWRV9TWVNfQ0RFRlNfSC9kJyAke1N9L25zcy9saWIvZGJtL2NvbmZpZy9jb25maWcubWsKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0KLSAgICBleHBvcnQgTlNQUl9MSUJfRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX1dFUlJPUj0wCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgZXhwb3J0IExERkxBR1M9IiIKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAjIE5lZWQgdG8gc2V0IFJQQVRIIHNvIHRoYXQgY2hycGF0aCB3aWxsIGRvIGl0cyBqb2IgY29ycmVjdGx5Ci0gICAgUlBBVEg9Ii1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0iCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9ImdjYyIKLSAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0hPU1RfQ0ZMQUdTfSIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLSAgICBleHBvcnQgRlJFRUJMX0xPV0hBU0g9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICAjIFdlIGNhbiBtb2RpZnkgQ0MgaW4gdGhlIGVudmlyb25tZW50LCBidXQgaWYgd2Ugc2V0IGl0IHZpYSBhbgotICAgICMgYXJndW1lbnQgdG8gbWFrZSwgbnNpbnN0YWxsLCBhIGhvc3QgcHJvZ3JhbSwgd2lsbCBhbHNvIGJ1aWxkIHdpdGggaXQhCi0gICAgIwotICAgIGV4cG9ydCBDQz0iJHtDQ30gLWciCi0gICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCi19Ci1kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9ImdjYyIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgIG1ha2UgLUMgLi9uc3MgXAotICAgICAgICBDQ0M9IiR7Q1hYfSIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBTT1VSQ0VfTElCX0RJUj0iJHtURH0vJHtsaWJkaXJ9IiBcCi0gICAgICAgIFNPVVJDRV9CSU5fRElSPSIke1REfS8ke2JpbmRpcn0iIFwKLSAgICAgICAgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS8KLSAgICBmb3IgZmlsZSBpbiAke1N9L2Rpc3QvKi5PQkovbGliLyouc287IGRvCi0gICAgICAgIGVjaG8gIkluc3RhbGxpbmcgYGJhc2VuYW1lICRmaWxlYC4uLiIKLSAgICAgICAgY3AgJGZpbGUgICR7RH0vJHtsaWJkaXJ9LwotICAgIGRvbmUKLQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvLio7IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgICAgIGxuIC1zZiAkKGJhc2VuYW1lICRzaGFyZWRfbGliKSAke0R9LyR7bGliZGlyfS8kKGJhc2VuYW1lICRzaGFyZWRfbGliIC4xb2UpCi0gICAgICAgIGZpCi0gICAgZG9uZQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIC1hICEgLWUgJHtEfS8ke2xpYmRpcn0vJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgZmkKLSAgICBkb25lCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzCi0gICAgaW5zdGFsbCAtbSA2NDQgLXQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMgZGlzdC9wdWJsaWMvbnNzLyoKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBmb3IgYmluYXJ5IGluICR7VER9LyR7YmluZGlyfS8qOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSAtdCAke0R9LyR7YmluZGlyfSAkYmluYXJ5Ci0gICAgZG9uZQotfQotZG9faW5zdGFsbFt2YXJkZXBzZXhjbHVkZV0gKz0gIlNJVEVJTkZPX0JJVFMiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgQ3JlYXRlIGVtcHR5IC5jaGsgZmlsZXMgZm9yIHRoZSBOU1MgbGlicmFyaWVzIGF0IGJ1aWxkIHRpbWUuIFRoZXkgY291bGQKLSAgICAjIGJlIHJlZ2VuZXJhdGVkIGF0IHRhcmdldCdzIGJvb3QgdGltZS4KLSAgICBmb3IgZmlsZSBpbiBsaWJzb2Z0b2tuMy5jaGsgbGliZnJlZWJsMy5jaGsgbGlibnNzZGJtMy5jaGs7IGRvCi0gICAgICAgIHRvdWNoICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgICAgIGNobW9kIDc1NSAke0R9LyR7bGliZGlyfS8kZmlsZQotICAgIGRvbmUKLSAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1dPUktESVJ9L3NpZ25saWJzLnNoICR7RH0vJHtiaW5kaXJ9L3NpZ25saWJzLnNoCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotICAgIHNlZCAncy8lTlNTX1ZFUlNJT04lLyR7UFZ9LycgJHtXT1JLRElSfS9uc3MucGMuaW4gfCBzZWQgJ3MvJU5TUFJfVkVSU0lPTiUvNC45LjIvJyA+ICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FUFJFRklYOiR7cHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FTElCRElSOiR7bGliZGlyfTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn0vbnNzMzpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgIyBDcmVhdGUgYSBibGFuayBjZXJ0aWZpY2F0ZQotICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8KLSAgICB0b3VjaCAuL2VtcHR5X3Bhc3N3b3JkCi0gICAgY2VydHV0aWwgLU4gLWQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyAtZiAuL2VtcHR5X3Bhc3N3b3JkCi0gICAgY2htb2QgNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8qLmRiCi0gICAgcm0gLi9lbXB0eV9wYXNzd29yZAotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gIm5zcy1uYXRpdmUiCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGlmIFsgLW4gIiREIiBdOyB0aGVuCi0gICAgICAgIGZvciBJIGluICREJHtsaWJkaXJ9L2xpYiouY2hrOyBkbwotICAgICAgICAgICAgRE49YGRpcm5hbWUgJElgCi0gICAgICAgICAgICBCTj1gYmFzZW5hbWUgJEkgLmNoa2AKLSAgICAgICAgICAgIEZOPSRETi8kQk4uc28KLSAgICAgICAgICAgIHNobGlic2lnbiAtaSAkRk4KLSAgICAgICAgICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgotICAgICAgICAgICAgICAgIGV4aXQgMQotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgIGVsc2UKLSAgICAgICAgc2lnbmxpYnMuc2gKLSAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc21pbWUiCi1GSUxFU18ke1BOfS1zbWltZSA9ICJcCi0gICAgJHtiaW5kaXJ9L3NtaW1lIFwKLSIKLUZJTEVTXyR7UE59ID0gIlwKLSAgICAke3N5c2NvbmZkaXJ9IFwKLSAgICAke2JpbmRpcn0gXAotICAgICR7bGliZGlyfS9saWIqLmNoayBcCi0gICAgJHtsaWJkaXJ9L2xpYiouc28gXAotICAgICIKLUZJTEVTXyR7UE59LWRldiA9ICJcCi0gICAgJHtsaWJkaXJ9L25zcyBcCi0gICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIFwKLSAgICAke2luY2x1ZGVkaXJ9LyogXAotICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJiOWJkYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzEuMS5iYgpAQCAtMCwwICsxLDI1MyBAQAorU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCitERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCitkZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKK3NlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCitBcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAorVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCit2MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNUEwtMi4wIHwgKE1QTC0yLjAgJiBHUEwtMi4wKykgfCAoTVBMLTIuMCAmIExHUEwtMi4xKykiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25zcy9DT1BZSU5HO21kNT0zYjFlODhlMWI5YzBiNWE0YjI4ODFkNDZjY2UwNmExOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0U7bWQ1PTQ5MWYxNThkMDlkOTQ4NDY2YWZjZTg1ZDZmMWZlMThmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRS1NUEw7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgorCitWRVJTSU9OX0RJUiA9ICIke0BkLmdldFZhcignQlAnKS51cHBlcigpLnJlcGxhY2UoJy0nLCAnXycpLnJlcGxhY2UoJy4nLCAnXycpICsgJ19SVE0nfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9zZWN1cml0eS9uc3MvcmVsZWFzZXMvJHtWRVJTSU9OX0RJUn0vc3JjLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MucGMuaW4gXAorICAgICAgICAgICBmaWxlOi8vc2lnbmxpYnMuc2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImViYjQ0ZjEzOTQyNTBkMmNmNmVjM2MyZTNkNzFmYTIwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzMzQzOTIxNGRjMDNlZTYwZTg2ZDE0MTljMTllMTU2ODk5OGIwNzc2ZGRlOTg3ZjQxZmE3MGNlZDZjZDA4ZGMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKKworaW5oZXJpdCBzaXRlaW5mbworCitERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCisKK1REID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCitURFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKKyAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KKyAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQorICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgorfQorCitkb19jb21waWxlKCkgeworICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKKyAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKKyAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisgICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKKworICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9CisgICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKKyAgICBleHBvcnQgTlNfVVNFX0dDQz0xCisgICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCisgICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKKworICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAorICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKKyAgICBleHBvcnQgT1NfQVJDSD1MaW51eAorCisgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGM2NAorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPW1pcHMKKyAgICBlbHNlCisgICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgorICAgIGZpCisKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KKyAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQorICAgICMKKyAgICAjIG5zcyBwcmV0dHkgbXVjaCBkb2VzIGl0cyBvd24gdGhpbmcgd2l0aCBDRkxBR1MsIHNvIHdlIHB1dCB0aGVtIGludG8gQ0MuCisgICAgIyBPcHRpbWl6YXRpb24gd2lsbCBnZXQgY2xvYmJlcmVkLCBidXQgbW9zdCBvZiB0aGUgc3R1ZmYgd2lsbCBzdXJ2aXZlLgorICAgICMgVGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgaXMgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIGRlYnVnCisgICAgIyBzb3VyY2UgZmlsZXMgYW5kIENGTEFHUyBkb2VzIHRoYXQuICBOb3RoaW5nIHVzZXMgQ0NDLgorICAgICMKKyAgICBleHBvcnQgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSIKKyAgICBtYWtlIC1DIC4vbnNzIENDQz0iJHtDWFh9IC1nIiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFJQQVRIPSIke1JQQVRIfSIKK30KK2RvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCisKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgZXhwb3J0IExERkxBR1M9IiIKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisKKyAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQorICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCisgICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQorICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCisKKyAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKKyAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4CisgICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKKworICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjNjQKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1taXBzCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBVU0VfNjQ9MQorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKKyAgICBmaQorCisgICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCisKKyAgICBtYWtlIC1DIC4vbnNzIFwKKyAgICAgICAgQ0NDPSIke0NYWH0iIFwKKyAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKKyAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAorICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCisgICAgICAgIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCisgICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbworICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCisgICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KKyAgICBkb25lCisKKyAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbworICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KKyAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9CisgICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQorICAgICAgICBmaQorICAgIGRvbmUKKyAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KKyAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9CisgICAgICAgIGZpCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMworICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQorICAgIGRvbmUKK30KK2RvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCisgICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCisgICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbworICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQorICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICBkb25lCisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKyAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgQ3JlYXRlIGEgYmxhbmsgY2VydGlmaWNhdGUKKyAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCisgICAgdG91Y2ggLi9lbXB0eV9wYXNzd29yZAorICAgIGNlcnR1dGlsIC1OIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8gLWYgLi9lbXB0eV9wYXNzd29yZAorICAgIGNobW9kIDY0NCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvKi5kYgorICAgIHJtIC4vZW1wdHlfcGFzc3dvcmQKK30KKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJuc3MtbmF0aXZlIgorcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICBpZiBbIC1uICIkRCIgXTsgdGhlbgorICAgICAgICBmb3IgSSBpbiAkRCR7bGliZGlyfS9saWIqLmNoazsgZG8KKyAgICAgICAgICAgIEROPWBkaXJuYW1lICRJYAorICAgICAgICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCisgICAgICAgICAgICBGTj0kRE4vJEJOLnNvCisgICAgICAgICAgICBzaGxpYnNpZ24gLWkgJEZOCisgICAgICAgICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KKyAgICAgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICBlbHNlCisgICAgICAgIHNpZ25saWJzLnNoCisgICAgZmkKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXNtaW1lIgorRklMRVNfJHtQTn0tc21pbWUgPSAiXAorICAgICR7YmluZGlyfS9zbWltZSBcCisiCitGSUxFU18ke1BOfSA9ICJcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtiaW5kaXJ9IFwKKyAgICAke2xpYmRpcn0vbGliKi5jaGsgXAorICAgICR7bGliZGlyfS9saWIqLnNvIFwKKyAgICAiCitGSUxFU18ke1BOfS1kZXYgPSAiXAorICAgICR7bGliZGlyfS9uc3MgXAorICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCisgICAgJHtpbmNsdWRlZGlyfS8qIFwKKyAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvZ3BnLWVycm9yX3BrY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzFlZGIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0NvbnZlcnQgdG8gcGtnLWNvbmZpZyBzdXBwb3J0IHRvIG1hdGNoIGNoYW5nZXMgZG9uZSB0byAKK3RoZSBncGctZXJyb3IgcmVjaXBlIGZvciBncGctZXJyb3IucGMgIGdlbmVyYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogcGluZW50cnktMS4wLjAvbTQvZ3BnLWVycm9yLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGluZW50cnktMS4wLjAub3JpZy9tNC9ncGctZXJyb3IubTQKKysrKyBwaW5lbnRyeS0xLjAuMC9tNC9ncGctZXJyb3IubTQKK0BAIC0yNSw3NCArMjUsMTIgQEAgZG5sIGNvbmZpZyBzY3JpcHQgZG9lcyBub3QgbWF0Y2ggdGhlIGhvcworIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KKyBkbmwKKyBBQ19ERUZVTihbQU1fUEFUSF9HUEdfRVJST1JdLAorLVsgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorLSAgZ3BnX2Vycm9yX2NvbmZpZ19wcmVmaXg9IiIKKy0gIGRubCAtLXdpdGgtbGliZ3BnLWVycm9yLXByZWZpeD1QRlggaXMgdGhlIHByZWZlcnJlZCBuYW1lIGZvciB0aGlzIG9wdGlvbiwKKy0gIGRubCBzaW5jZSB0aGF0IGlzIGNvbnNpc3RlbnQgd2l0aCBob3cgb3VyIHRocmVlIHNpYmxpbmdzIHVzZSB0aGUgZGlyZWN0b3J5LworLSAgZG5sIHBhY2thZ2UgbmFtZSBpbiAtLXdpdGgtJGRpcl9uYW1lLXByZWZpeD1QRlguCistICBBQ19BUkdfV0lUSChsaWJncGctZXJyb3ItcHJlZml4LAorLSAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJncGctZXJyb3ItcHJlZml4PVBGWF0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIEdQRyBFcnJvciBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0pLAorLSAgICAgICAgICAgICAgW2dwZ19lcnJvcl9jb25maWdfcHJlZml4PSIkd2l0aHZhbCJdKQorLQorLSAgZG5sIEFjY2VwdCAtLXdpdGgtZ3BnLWVycm9yLXByZWZpeCBhbmQgbWFrZSBpdCB3b3JrIHRoZSBzYW1lIGFzCistICBkbmwgLS13aXRoLWxpYmdwZy1lcnJvci1wcmVmaXggYWJvdmUsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwKKy0gIGRubCBidXQgZG8gbm90IGRvY3VtZW50IHRoaXMgb2xkLCBpbmNvbnNpc3RlbnRseS1uYW1lZCBvcHRpb24uCistICBBQ19BUkdfV0lUSChncGctZXJyb3ItcHJlZml4LCwKKy0gICAgICAgICAgICAgIFtncGdfZXJyb3JfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiXSkKKy0KKy0gIGlmIHRlc3QgeCIke0dQR19FUlJPUl9DT05GSUd9IiA9IHggOyB0aGVuCistICAgICBpZiB0ZXN0IHgiJHtncGdfZXJyb3JfY29uZmlnX3ByZWZpeH0iICE9IHggOyB0aGVuCistICAgICAgICBHUEdfRVJST1JfQ09ORklHPSIke2dwZ19lcnJvcl9jb25maWdfcHJlZml4fS9iaW4vZ3BnLWVycm9yLWNvbmZpZyIKKy0gICAgIGVsc2UKKy0gICAgICAgY2FzZSAiJHtTWVNST09UfSIgaW4KKy0gICAgICAgICAvKikKKy0gICAgICAgICAgIGlmIHRlc3QgLXggIiR7U1lTUk9PVH0vYmluL2dwZy1lcnJvci1jb25maWciIDsgdGhlbgorLSAgICAgICAgICAgICBHUEdfRVJST1JfQ09ORklHPSIke1NZU1JPT1R9L2Jpbi9ncGctZXJyb3ItY29uZmlnIgorLSAgICAgICAgICAgZmkKKy0gICAgICAgICAgIDs7CistICAgICAgICAgJycpCistICAgICAgICAgICA7OworLSAgICAgICAgICAqKQorLSAgICAgICAgICAgQUNfTVNHX1dBUk4oW0lnbm9yaW5nIFwkU1lTUk9PVCBhcyBpdCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aC5dKQorLSAgICAgICAgICAgOzsKKy0gICAgICAgZXNhYworLSAgICAgZmkKKy0gIGZpCistCistICBBQ19QQVRIX1BST0coR1BHX0VSUk9SX0NPTkZJRywgZ3BnLWVycm9yLWNvbmZpZywgbm8pCisrWworICAgbWluX2dwZ19lcnJvcl92ZXJzaW9uPWlmZWxzZShbJDFdLCAsMC4wLCQxKQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBHUEcgRXJyb3IgLSB2ZXJzaW9uID49ICRtaW5fZ3BnX2Vycm9yX3ZlcnNpb24pCistICBvaz1ubworLSAgaWYgdGVzdCAiJEdQR19FUlJPUl9DT05GSUciICE9ICJubyIgXAorLSAgICAgJiYgdGVzdCAtZiAiJEdQR19FUlJPUl9DT05GSUciIDsgdGhlbgorLSAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ncGdfZXJyb3JfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKKy0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fZ3BnX2Vycm9yX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCistICAgIGdwZ19lcnJvcl9jb25maWdfdmVyc2lvbj1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLXZlcnNpb25gCistICAgIG1ham9yPWBlY2hvICRncGdfZXJyb3JfY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKKy0gICAgbWlub3I9YGVjaG8gJGdwZ19lcnJvcl9jb25maWdfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMi8nYAorLSAgICBpZiB0ZXN0ICIkbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICBlbHNlCistICAgICAgICBpZiB0ZXN0ICIkbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1nZSAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICBvaz15ZXMKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgZmkKKy0gIGZpCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdfRVJST1IsIFtncGctZXJyb3IgPj0gJG1pbl9ncGdfZXJyb3JfdmVyc2lvbiBncGctZXJyb3JdLCBbb2s9eWVzXSwgW29rPW5vXSkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIEdQR19FUlJPUl9DRkxBR1M9YCRHUEdfRVJST1JfQ09ORklHICRncGdfZXJyb3JfY29uZmlnX2FyZ3MgLS1jZmxhZ3NgCistICAgIEdQR19FUlJPUl9MSUJTPWAkR1BHX0VSUk9SX0NPTkZJRyAkZ3BnX2Vycm9yX2NvbmZpZ19hcmdzIC0tbGlic2AKKy0gICAgR1BHX0VSUk9SX01UX0NGTEFHUz1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLW10IC0tY2ZsYWdzIDI+L2Rldi9udWxsYAorLSAgICBHUEdfRVJST1JfTVRfTElCUz1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLW10IC0tbGlicyAyPi9kZXYvbnVsbGAKKy0gICAgQUNfTVNHX1JFU1VMVChbeWVzICgkZ3BnX2Vycm9yX2NvbmZpZ192ZXJzaW9uKV0pCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCistICAgIGdwZ19lcnJvcl9jb25maWdfaG9zdD1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAorKyAgICBncGdfZXJyb3JfY29uZmlnX2hvc3Q9YCRQS0dfQ09ORklHIC0taG9zdCBncGctZXJyb3IgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAorICAgICBpZiB0ZXN0IHgiJGdwZ19lcnJvcl9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCisgICAgICAgaWYgdGVzdCB4IiRncGdfZXJyb3JfY29uZmlnX2hvc3QiICE9IHgiJGhvc3QiIDsgdGhlbgorICAgQUNfTVNHX1dBUk4oW1sKK0BAIC0xMDcsMTAgKzQ1LDYgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHX0VSUk9SXSwKKyAgICAgICBmaQorICAgICBmaQorICAgZWxzZQorLSAgICBHUEdfRVJST1JfQ0ZMQUdTPSIiCistICAgIEdQR19FUlJPUl9MSUJTPSIiCistICAgIEdQR19FUlJPUl9NVF9DRkxBR1M9IiIKKy0gICAgR1BHX0VSUk9SX01UX0xJQlM9IiIKKyAgICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKKyAgIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkNTY0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9saWJhc3N1YW5fcGtnY29uZi5wYXRjaApAQCAtMCwwICsxLDE1MyBAQAorQ29udmVydCB0byBwa2ctY29uZmlnIHN1cHBvcnQgdG8gbWF0Y2ggY2hhbmdlcyBkb25lIHRvCit0aGUgbGliYXNzdWFuIHJlY2lwZSBmb3IgbGliYXNzdWFuLnBjIGdlbmVyYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogcGluZW50cnktMS4wLjAvbTQvbGliYXNzdWFuLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGluZW50cnktMS4wLjAub3JpZy9tNC9saWJhc3N1YW4ubTQKKysrKyBwaW5lbnRyeS0xLjAuMC9tNC9saWJhc3N1YW4ubTQKK0BAIC0xMywzNCArMTMsOCBAQCBkbmwKKyBkbmwgQ29tbW9uIGNvZGUgdXNlZCBmb3IgbGliYXNzdWFuIGRldGVjdGlvbiBbaW50ZXJuYWxdCisgZG5sIFJldHVybnMgb2sgc2V0IHRvIHllcyBvciBuby4KKyBkbmwKKy1BQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCistWyBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCistICBBQ19BUkdfV0lUSChsaWJhc3N1YW4tcHJlZml4LAorLSAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJhc3N1YW4tcHJlZml4PVBGWF0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIExJQkFTU1VBTiBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0pLAorLSAgICAgbGliYXNzdWFuX2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgbGliYXNzdWFuX2NvbmZpZ19wcmVmaXg9IiIpCistICBpZiB0ZXN0IHgkbGliYXNzdWFuX2NvbmZpZ19wcmVmaXggIT0geCA7IHRoZW4KKy0gICAgbGliYXNzdWFuX2NvbmZpZ19hcmdzPSIkbGliYXNzdWFuX2NvbmZpZ19hcmdzIC0tcHJlZml4PSRsaWJhc3N1YW5fY29uZmlnX3ByZWZpeCIKKy0gICAgaWYgdGVzdCB4JHtMSUJBU1NVQU5fQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KKy0gICAgICBMSUJBU1NVQU5fQ09ORklHPSRsaWJhc3N1YW5fY29uZmlnX3ByZWZpeC9iaW4vbGliYXNzdWFuLWNvbmZpZworLSAgICBmaQorLSAgZWxzZQorLSAgICBjYXNlICIke1NZU1JPT1R9IiBpbgorLSAgICAgICAvKikKKy0gICAgICAgICBpZiB0ZXN0IC14ICIke1NZU1JPT1R9L2Jpbi9saWJhc3N1YW4tY29uZmlnIiA7IHRoZW4KKy0gICAgICAgICAgIExJQkFTU1VBTl9DT05GSUc9IiR7U1lTUk9PVH0vYmluL2xpYmFzc3Vhbi1jb25maWciCistICAgICAgICAgZmkKKy0gICAgICAgICA7OworLSAgICAgICAnJykKKy0gICAgICAgICA7OworLSAgICAgICAgKikKKy0gICAgICAgICBBQ19NU0dfV0FSTihbSWdub3JpbmcgXCRTWVNST09UIGFzIGl0IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoLl0pCistICAgICAgICAgOzsKKy0gICAgIGVzYWMKKy0gIGZpCistCistICBBQ19QQVRIX1RPT0woTElCQVNTVUFOX0NPTkZJRywgbGliYXNzdWFuLWNvbmZpZywgbm8pCistCisrQUNfREVGVU4oW0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCisrWworICAgdG1wPWlmZWxzZShbJDFdLCAsMTowLjkuMiwkMSkKKyAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgcmVxX2xpYmFzc3Vhbl9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCitAQCAtNTAsNTEgKzI0LDExIEBAIEFDX0RFRlVOKFtfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OXSwKKyAgICAgbWluX2xpYmFzc3Vhbl92ZXJzaW9uPSIkdG1wIgorICAgZmkKKyAKKy0gIEFDX01TR19DSEVDS0lORyhmb3IgTElCQVNTVUFOIC0gdmVyc2lvbiA+PSAkbWluX2xpYmFzc3Vhbl92ZXJzaW9uKQorLSAgb2s9bm8KKy0gIGlmIHRlc3QgIiRMSUJBU1NVQU5fQ09ORklHIiAhPSAibm8iIFwKKy0gICAgICYmIHRlc3QgLWYgIiRMSUJBU1NVQU5fQ09ORklHIiA7IHRoZW4KKy0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fbGliYXNzdWFuX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKKy0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fbGliYXNzdWFuX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKKy0gICAgcmVxX21pY3JvPWBlY2hvICRtaW5fbGliYXNzdWFuX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKKy0KKy0gICAgbGliYXNzdWFuX2NvbmZpZ192ZXJzaW9uPWAkTElCQVNTVUFOX0NPTkZJRyAtLXZlcnNpb25gCistICAgIG1ham9yPWBlY2hvICRsaWJhc3N1YW5fY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMS8nYAorLSAgICBtaW5vcj1gZWNobyAkbGliYXNzdWFuX2NvbmZpZ192ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDIvJ2AKKy0gICAgbWljcm89YGVjaG8gJGxpYmFzc3Vhbl9jb25maWdfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wzLydgCistCistICAgIGlmIHRlc3QgIiRtYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgorLSAgICAgICAgb2s9eWVzCistICAgIGVsc2UKKy0gICAgICAgIGlmIHRlc3QgIiRtYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgorLSAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1lcSAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJG1pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgZmkKKy0gIGZpCistCistICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgKCRsaWJhc3N1YW5fY29uZmlnX3ZlcnNpb24pXSkKKy0gIGVsc2UKKy0gICAgQUNfTVNHX1JFU1VMVChubykKKy0gIGZpCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJBU1NVQU5fQ09NTU9OLCBbbGliYXNzdWFuID49ICRtaW5fbGliYXNzdWFuX3ZlcnNpb24gbGliYXNzdWFuXSwgW29rPXllc10sIFtvaz1ub10pCisgCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICBpZiB0ZXN0ICIkcmVxX2xpYmFzc3Vhbl9hcGkiIC1ndCAwIDsgdGhlbgorLSAgICAgIHRtcD1gJExJQkFTU1VBTl9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisrICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGxpYmFzc3VhbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCisgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW0xJQkFTU1VBTiBBUEkgdmVyc2lvbl0pCisgICAgICAgICBpZiB0ZXN0ICIkcmVxX2xpYmFzc3Vhbl9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCitAQCAtMTA5LDcgKzQzLDcgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAorIAorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKyAgICAgaWYgdGVzdCB4IiRob3N0IiAhPSB4IDsgdGhlbgorLSAgICAgIGxpYmFzc3Vhbl9jb25maWdfaG9zdD1gJExJQkFTU1VBTl9DT05GSUcgLS1ob3N0IDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZWAKKysgICAgICBsaWJhc3N1YW5fY29uZmlnX2hvc3Q9YCRQS0dfQ09ORklHIC0taG9zdCBsaWJhc3N1YW4gMj4vZGV2L251bGwgfHwgZWNobyAwYAorICAgICAgIGlmIHRlc3QgeCIkbGliYXNzdWFuX2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KKyAgICAgICAgIGlmIHRlc3QgeCIkbGliYXNzdWFuX2NvbmZpZ19ob3N0IiAhPSB4IiRob3N0IiA7IHRoZW4KKyAgIEFDX01TR19XQVJOKFtbCitAQCAtMTMyLDcgKzY2LDcgQEAgZG5sIFRlc3Qgd2hldGhlciBsaWJhc3N1YW4gaGFzIGF0IGxlYXN0CisgZG5sIHVzZWQgdG8gdGVzdCBmb3IgZmVhdHVyZXMgb25seSBhdmFpbGFibGUgaW4gbmV3ZXIgdmVyc2lvbnMuCisgZG5sCisgQUNfREVGVU4oW0FNX0NIRUNLX0xJQkFTU1VBTl0sCistWyBfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OKCQxKQorK1sgQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OKCQxKQorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKyAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKKyAgIGVsc2UKK0BAIC0xNDgsMTYgKzgyLDEwIEBAIGRubCAgICAgICAgICAgICAgICAgICBbQUNUSU9OLUlGLUZPVU5EIFsKKyBkbmwgVGVzdCBmb3IgbGliYXNzdWFuIGFuZCBkZWZpbmUgTElCQVNTVUFOX0NGTEFHUyBhbmQgTElCQVNTVUFOX0xJQlMKKyBkbmwKKyBBQ19ERUZVTihbQU1fUEFUSF9MSUJBU1NVQU5dLAorLVsgX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTigkMSkKKytbIEFNX1BBVEhfTElCQVNTVUFOX0NPTU1PTigkMSkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIExJQkFTU1VBTl9DRkxBR1M9YCRMSUJBU1NVQU5fQ09ORklHICRsaWJhc3N1YW5fY29uZmlnX2FyZ3MgLS1jZmxhZ3NgCistICAgIExJQkFTU1VBTl9MSUJTPWAkTElCQVNTVUFOX0NPTkZJRyAkbGliYXNzdWFuX2NvbmZpZ19hcmdzIC0tbGlic2AKKyAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKKyAgIGVsc2UKKy0gICAgTElCQVNTVUFOX0NGTEFHUz0iIgorLSAgICBMSUJBU1NVQU5fTElCUz0iIgorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorICAgZmkKKy0gIEFDX1NVQlNUKExJQkFTU1VBTl9DRkxBR1MpCistICBBQ19TVUJTVChMSUJBU1NVQU5fTElCUykKKyBdKQorSW5kZXg6IHBpbmVudHJ5LTEuMC4wL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBpbmVudHJ5LTEuMC4wLm9yaWcvY29uZmlndXJlLmFjCisrKysgcGluZW50cnktMS4wLjAvY29uZmlndXJlLmFjCitAQCAtMjY2LDggKzI2Niw4IEBAIGlmIHRlc3QgIiRoYXZlX2xpYmFzc3VhbiIgPSAieWVzIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIFt2ZXJzaW9uIG9mIHRoZSBsaWJhc3N1YW4gbGlicmFyeV0pCisgZmkKKyAKKy1DT01NT05fQ0ZMQUdTPSIkTElCQVNTVUFOX0NGTEFHUyAkQ09NTU9OX0NGTEFHUyIKKy1DT01NT05fTElCUz0iJExJQkFTU1VBTl9MSUJTICRDT01NT05fTElCUyIKKytDT01NT05fQ0ZMQUdTPSIkTElCQVNTVUFOX0NPTU1PTl9DRkxBR1MgJENPTU1PTl9DRkxBR1MiCisrQ09NTU9OX0xJQlM9IiRMSUJBU1NVQU5fQ09NTU9OX0xJQlMgJENPTU1PTl9MSUJTIgorIAorIAorIGRubCBDaGVja3MgZm9yIGxpYnNlY21lbS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8wLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8wLjkuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxNWE5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMC45LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3MiCi1ERVNDUklQVElPTiA9ICJcCi0JUGluZW50cnkgaXMgYSBjb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIHdoaWNoIFwKLQl1dGlsaXplIHRoZSBBc3N1YW4gcHJvdG9jb2wgYXMgZGVzY3JpYmVkIGJ5IHRoZSBhZWd5cHRlbiBwcm9qZWN0OyBzZWUgXAotCWh0dHA6Ly93d3cuZ251cGcub3JnL2FlZ3lwdGVuLyBmb3IgZGV0YWlscy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvcGluZW50cnkvaW5kZXguZW4uaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJkNzk0ZTJhMGEyODliOWRmY2M5ZjUxM2QxOTk2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNTFkNDU0ZjkyMTExMWI1MTU2YTIyOTFjYmY3MDI3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDhiYzE1OTJjZWIyMmJiNDkyYjA3Y2IyOWIxYjE0MGJiODgyYzg1OWU2NTAzYjk3NDI1NGMwYTRiNDEzNGQxIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJwYXRoIFwKLQkJICAgICAgICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyBcCi0gICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJuY3Vyc2VzIGxpYmNhcCIKLQotUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzICAtLXdpdGgtbmN1cnNlcy1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfSwgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwgLS13aXRob3V0LWxpYmNhcCwgbGliY2FwIgotUEFDS0FHRUNPTkZJR1txdDRdID0gIi0tZW5hYmxlLXBpbmVudHJ5LXF0NCwgLS1kaXNhYmxlLXBpbmVudHJ5LXF0NCwgcXQ0LXgxMSIKLVBBQ0tBR0VDT05GSUdbcXQ0X2NsaXBib2FyZF0gPSAiLS1lbmFibGUtcGluZW50cnktcXQ0LWNsaXBib2FyZCAtLWVuYWJsZS1waW5lbnRyeS1xdDQsIC0tZGlzYWJsZS1waW5lbnRyeS1xdDQtY2xpcGJvYXJkLCBxdDQteDExIgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItLWVuYWJsZS1waW5lbnRyeS1ndGsyLCAtLWRpc2FibGUtcGluZW50cnktZ3RrMiwgZ3RrKyBnbGliLTIuMCIKLQotI1RvIHVzZSBsaWJzZWNyZXQsIGFkZCBtZXRhLWdub21lCi1QQUNLQUdFQ09ORklHW3NlY3JldF0gPSAiLS1lbmFibGUtbGlic2VjcmV0LCAtLWRpc2FibGUtbGlic2VjcmV0LCBsaWJzZWNyZXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5YWNkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjAuMC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3MiCitERVNDUklQVElPTiA9ICJcCisJUGluZW50cnkgaXMgYSBjb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIHdoaWNoIFwKKwl1dGlsaXplIHRoZSBBc3N1YW4gcHJvdG9jb2wgYXMgZGVzY3JpYmVkIGJ5IHRoZSBhZWd5cHRlbiBwcm9qZWN0OyBzZWUgXAorCWh0dHA6Ly93d3cuZ251cGcub3JnL2FlZ3lwdGVuLyBmb3IgZGV0YWlscy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvcGluZW50cnkvaW5kZXguZW4uaHRtbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJkNzk0ZTJhMGEyODliOWRmY2M5ZjUxM2QxOTk2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgbGliYXNzdWFuIGxpYmdwZy1lcnJvciIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3BnLWVycm9yX3BrY29uZi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YTNmYWQ4YjMxZjliNGM1NTI2Yzg4Mzc0OTUwMTVkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNjcyYzJlZGMxZmViMDM2MDc1YjE4N2MwNzczNzg3YjJhZmQwNTQ0ZjU1MDI1YzY0NWE3MWI0YzJmNzkyNzVhIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGluZW50cnktcXQ1ICBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJuY3Vyc2VzIGxpYmNhcCIKKworUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzICAtLXdpdGgtbmN1cnNlcy1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfSwgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwgLS13aXRob3V0LWxpYmNhcCwgbGliY2FwIgorUEFDS0FHRUNPTkZJR1txdF0gPSAiLS1lbmFibGUtcGluZW50cnktcXQsIC0tZGlzYWJsZS1waW5lbnRyeS1xdCwgcXQ0LXgxMSIKK1BBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLS1lbmFibGUtcGluZW50cnktZ3RrMiwgLS1kaXNhYmxlLXBpbmVudHJ5LWd0azIsIGd0aysgZ2xpYi0yLjAiCisKKyNUbyB1c2UgbGlic2VjcmV0LCBhZGQgbWV0YS1nbm9tZQorUEFDS0FHRUNPTkZJR1tzZWNyZXRdID0gIi0tZW5hYmxlLWxpYnNlY3JldCwgLS1kaXNhYmxlLWxpYnNlY3JldCwgbGlic2VjcmV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlOWE3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgotREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCi1wcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAotcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ1JFViA9ICI2ZDI4NzIxMTZjZDlkNmUxNjE3YTc2OGY5ZDcyYmJmMDkxNDg5YjJkIgotUFYgPSAiMi4wLjIrZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHRlc3QtcnVubmVyMiIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wdGVzdC1ydW5uZXIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYzFkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjEuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJBIEMgcHJvZ3JhbSB0byBydW4gYWxsIGluc3RhbGxlZCBwdGVzdHMiCitERVNDUklQVElPTiA9ICJUaGUgcHRlc3QtcnVubmVyMiBwYWNrYWdlIGluc3RhbGxzIGEgcHRlc3QtcnVubmVyIFwKK3Byb2dyYW0gd2hpY2ggbG9vcHMgdGhyb3VnaCBhbGwgaW5zdGFsbGVkIHB0ZXN0IHRlc3Qgc3VpdGVzIGFuZCBcCitydW5zIHRoZW0gaW4gc2VxdWVuY2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcHRlc3QtcnVubmVyMi9hYm91dC8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDUkVWID0gIjhhOTM4MzJkYWQ2MjE1MzVlOTBhYThlMWZiNzRhZTViYTc0M2ZjM2UiCitQViA9ICIyLjErZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHRlc3QtcnVubmVyMiIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wdGVzdC1ydW5uZXIiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyYy9ta2Rpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmMvbWtkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU5ZjAxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmMvbWtkaXIucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9za3ZhZHJpay9yZTJjL3B1bGwvMTkxKQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBiY2NjMTBjNjA1MjNmODhjOGY4MTQxMzE1MWNkY2Q2MTJlYjE2MTk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMzEgSnVsIDIwMTcgMTU6NDM6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3J5IGJlZm9yZSB3cml0aW5nIGludG8gaXQKKworSW4gc29tZSBzaXR1YXRpb25zIHNyYy9wYXJzZS8gbWF5IG5vdCBleGlzdCBiZWZvcmUgYSBmaWxlIGlzIGNvcGllZCBpbnRvIHRoZQorZGlyZWN0b3J5LiBFbnN1cmUgdGhhdCB0aGlzIGRvZXNuJ3QgaGFwcGVuIGJ5IGNyZWF0aW5nIHRoZSBkaXJlY3RvcnkgZmlyc3QuCistLS0KKyByZTJjL01ha2VmaWxlLmFtIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9yZTJjL01ha2VmaWxlLmFtIGIvcmUyYy9NYWtlZmlsZS5hbQoraW5kZXggM2IzYjJjNWUuLjA3MDdmYzVhIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTg3LDYgKzE4Nyw3IEBAIENMRUFORklMRVMgPSBcCisgCSQoRE9DKQorIAorICQoQVVUT0dFTl9QQVJTRVIpOiAkKENVU1RPTV9QQVJTRVIpCisrCSQoQU1fVl9hdCkkKE1LRElSX1ApICQoZGlyICRAKQorIAkkKEFNX1ZfR0VOKSBpZiB0ZXN0ICQoQklTT04pID0gIm5vIjsgXAorIAl0aGVuIFwKKyAJCWNwICQodG9wX3NyY2RpcikvJChCT09UU1RSQVBfUEFSU0VSKSAkQCAmJiBcCitAQCAtMjExLDYgKzIxMiw3IEBAICQoQk9PVFNUUkFQX1BBUlNFUik6ICQoQ1VTVE9NX1BBUlNFUikKKyAJCSQodG9wX3NyY2RpcikvJChDVVNUT01fUEFSU0VSKTsKKyAKKyAucmUuY2M6CisrCSQoQU1fVl9hdCkkKE1LRElSX1ApICQoZGlyICRAKQorIAkkKEFNX1ZfR0VOKSBpZiB0ZXN0IC14ICQoUkUyQyk7IFwKKyAJdGhlbiBcCisgCQkkKHRvcF9idWlsZGRpcikvJChSRTJDKSAkKFJFMkNGTEFHUykgLW8gJEAgJDwgJiYgXAorLS0gCisyLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGRkN2I3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyY18wLjE2LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiVG9vbCBmb3Igd3JpdGluZyB2ZXJ5IGZhc3QgYW5kIHZlcnkgZmxleGlibGUgc2Nhbm5lcnMiCitIT01FUEFHRSA9ICJodHRwOi8vcmUyYy5zb3VyY2Vmb3JnZS5uZXQvIgorQVVUSE9SID0gIk1hcmN1cyBCw7ZyZ2VyIDxoZWxseUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE0NjttZDU9ODgxMDU2YzlhZGQxN2Y4MDE5Y2NkOGMzODJiYTk2M2EiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL21rZGlyLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjNiZjUwOGZhYmQ1MmVkNzMzNDY0N2QwY2NiOTU2ZThkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4YzEyNTY0Mjk3NjQxY2NlYjVmZjA1YWVhZDU3ZjI4MTE4ZGI2Mjc3ZjMxZTIyNjI0MzdmZWJhODkwNjllODQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvZGVmYXVsdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL2RlZmF1bHQKaW5kZXggN2FlZGU5Yi4uYWI3Y2Q5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvZGVmYXVsdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9kZWZhdWx0CkBAIC0xLDMgKzEsMiBAQAogIyBTcGVjaWZ5IHJuZyBkZXZpY2UKLSNSTkdfREVWSUNFPS9kZXYvaHdybmcKLVJOR19ERVZJQ0U9L2Rldi91cmFuZG9tCitSTkdfREVWSUNFPS9kZXYvaHdybmcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nLXRvb2xzLTUtZml4LXRleHRyZWxzLW9uLVBJQy14ODYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNhNTg2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoCkBAIC0wLDAgKzEsMTAzIEBACitGcm9tOiBGcmFuY2lzY28gQmxhcyBJenF1aWVyZG8gUmllcmEgKGtsb25kaWtlKSA8a2xvbmRpa2VAZ2VudG9vLm9yZz4KK1N1YmplY3Q6IFtQQVRDSF0gRml4IGFzc2VtYnkgdGV4dHJlbHMgb24gcmRyYW5kX2FzbS5TIG9uIFBJQyB4ODYKKworVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBmaXhlcyBpbiB0aGUgYXNzZW1ibHkgaW4gcmRyYW5kX2FzbS5TIGluCitzeXMtYXBwcy9ybmctdG9vbHMtNSBzbyBpdCB3b24ndCBnZW5lcmF0ZSB0ZXh0cmVscyBvbiBQSUMgc3lzdGVtcy4KK1RoZSBtYWluIGZpeGVzIGFyZSBpbiB0aGUgdXNlIG9mIGxlYWwgaW4gU0VUUFRSIGZvciBzdWNoIHN5c3RlbXMsIHRoZSByZXN0IGlzCit0aGUgdXN1YWwgUElDIHN1cHBvcnQgc3R1ZmYuCisKK1RoaXMgc2hvdWxkIGZpeCBHZW50b28gYnVnICM0Njk5NjIgYW5kIGhlbHAgZml4ICM1MTgyMTAKKworVGhpcyBwYXRjaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgR1BMdjIgb3IgYSBoaWdoZXIgdmVyc2lvbiBsaWNlbnNlIGFzIGlzIHRoZQorb3JpZ2luYWwgZmlsZSBhcyBsb25nIGFzIHRoZSBhdXRob3IgYW5kIHRoZSB0ZXN0ZXIgYXJlIGNyZWRpdGVkLgorCitHZW50b28tYnVnLXVybDogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTk2MgorR2VudG9vLWJ1Zy11cmw6IGh0dHBzOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTgyMTAKK1NpZ25lZC1vZmYtYnk6IEZyYW5jaXNjbyBCbGFzIEl6cXVpZXJkbyBSaWVyYSAoa2xvbmRpa2UpIDxrbG9uZGlrZUBnZW50b28ub3JnPgorUmVwb3J0ZWQtYnk6IGNpbGx5IDxjaWxseUBjaWxseS5taW5lLm51PgorUmVwb3J0ZWQtYnk6IE1hbnVlbCBSw7xnZXIgPG1ydWVnQGdlbnRvby5vcmc+CitUZXN0ZWQtYnk6IEFudGhvbnkgQmFzaWxlIDxibHVlbmVzc0BnZW50b28ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW5kZXg6IHJuZy10b29scy01L3JkcmFuZF9hc20uUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHJuZy10b29scy01Lm9yaWcvcmRyYW5kX2FzbS5TCisrKysgcm5nLXRvb2xzLTUvcmRyYW5kX2FzbS5TCitAQCAtMiw2ICsyLDcgQEAKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNCwgSW50ZWwgQ29ycG9yYXRpb24KKyAgKiBBdXRob3JzOiBGZW5naHVhIFl1IDxmZW5naHVhLnl1QGludGVsLmNvbT4sCisgICogICAgICAgICAgSC4gUGV0ZXIgQW52aW4gPGhwYUBsaW51eC5pbnRlbC5jb20+CisrICogUElDIGNvZGUgYnk6IEZyYW5jaXNjbyBCbGFzIEl6cXVpZXJkbyBSaWVyYSAoa2xvbmRpa2UpIDxrbG9uZGlrZUBnZW50b28ub3JnPgorICAqCisgICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorQEAgLTE3NCw3ICsxNzUsMTkgQEAgRU5UUlkoeDg2X3Jkc2VlZF9vcl9yZHJhbmRfYnl0ZXMpCisgCWptcAk0YgorIEVORFBST0MoeDg2X3Jkc2VlZF9vcl9yZHJhbmRfYnl0ZXMpCisgCisrI2lmIGRlZmluZWQoX19QSUNfXykKKysjZGVmaW5lIElOSVRfUElDKCkgXAorKwlwdXNobAklZWJ4IDsgXAorKwljYWxsICAgIF9feDg2LmdldF9wY190aHVuay5ieCA7IFwKKysJYWRkbCAgICAkX0dMT0JBTF9PRkZTRVRfVEFCTEVfLCAlZWJ4CisrI2RlZmluZSBFTkRfUElDKCkgXAorKwlwb3BsCSVlYngKKysjZGVmaW5lIFNFVFBUUih2YXIscHRyKSBsZWFsICh2YXIpQEdPVE9GRiglZWJ4KSxwdHIKKysjZWxzZQorKyNkZWZpbmUgSU5JVF9QSUMoKQorKyNkZWZpbmUgRU5EX1BJQygpCisgI2RlZmluZSBTRVRQVFIodmFyLHB0cikJbW92bCAkKHZhcikscHRyCisrI2VuZGlmCisgI2RlZmluZSBQVFIwCSVlYXgKKyAjZGVmaW5lIFBUUjEJJWVkeAorICNkZWZpbmUgUFRSMgklZWN4CitAQCAtMTkwLDYgKzIwMyw3IEBAIEVOVFJZKHg4Nl9hZXNfbWFuZ2xlKQorIAltb3ZsCTgoJWVicCksICVlYXgKKyAJbW92bAkxMiglZWJwKSwgJWVkeAorIAlwdXNoCSVlc2kKKysJSU5JVF9QSUMoKQorICNlbmRpZgorIAltb3ZsCSQ1MTIsIENUUjMJLyogTnVtYmVyIG9mIHJvdW5kcyAqLworIAkKK0BAIC0yODAsNiArMjk0LDcgQEAgb2Zmc2V0ID0gb2Zmc2V0ICsgMTYKKyAJbW92ZHFhCSV4bW03LCAoNyoxNikoUFRSMSkKKyAKKyAjaWZkZWYgX19pMzg2X18KKysJRU5EX1BJQygpCisgCXBvcAklZXNpCisgCXBvcAklZWJwCisgI2VuZGlmCitAQCAtMjk0LDYgKzMwOSw3IEBAIEVOVFJZKHg4Nl9hZXNfZXhwYW5kX2tleSkKKyAJcHVzaAklZWJwCisgCW1vdgklZXNwLCAlZWJwCisgCW1vdmwJOCglZWJwKSwgJWVheAorKwlJTklUX1BJQygpCisgI2VuZGlmCisgCisgCVNFVFBUUihhZXNfcm91bmRfa2V5cywgUFRSMSkKK0BAIC0zMjMsNiArMzM5LDcgQEAgRU5UUlkoeDg2X2Flc19leHBhbmRfa2V5KQorIAljYWxsCTFmCisgCisgI2lmZGVmIF9faTM4Nl9fCisrCUVORF9QSUMoKQorIAlwb3AJJWVicAorICNlbmRpZgorIAlyZXQKK0BAIC0zNDMsNiArMzYwLDE2IEBAIEVOVFJZKHg4Nl9hZXNfZXhwYW5kX2tleSkKKyAKKyBFTkRQUk9DKHg4Nl9hZXNfZXhwYW5kX2tleSkKKyAKKysjaWYgZGVmaW5lZChfX2kzODZfXykgJiYgZGVmaW5lZChfX1BJQ19fKQorKwkuc2VjdGlvbgkudGV4dC5fX3g4Ni5nZXRfcGNfdGh1bmsuYngsImF4RyIsQHByb2diaXRzLF9feDg2LmdldF9wY190aHVuay5ieCxjb21kYXQKKysJLmdsb2JsCV9feDg2LmdldF9wY190aHVuay5ieAorKwkuaGlkZGVuCV9feDg2LmdldF9wY190aHVuay5ieAorKwkudHlwZQlfX3g4Ni5nZXRfcGNfdGh1bmsuYngsIEBmdW5jdGlvbgorK19feDg2LmdldF9wY190aHVuay5ieDoKKysJbW92bAkoJWVzcCksICVlYngKKysJcmV0CisrI2VuZGlmCisrCisgCS5ic3MKKyAJLmJhbGlnbiA2NAorIGFlc19yb3VuZF9rZXlzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NGFkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UKQEAgLTAsMCArMSw5IEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPUhhcmR3YXJlIFJORyBFbnRyb3B5IEdhdGhlcmVyIERhZW1vbgorCitbU2VydmljZV0KK0V4ZWNTdGFydD1AU0JJTkRJUkAvcm5nZCAtZiAtciAvZGV2L3VyYW5kb20KK1N1Y2Nlc3NFeGl0U3RhdHVzPTY2CisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3VjbGliYy1saWJ1YXJncC1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91Y2xpYmMtbGlidWFyZ3AtY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjkxMzE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3VjbGliYy1saWJ1YXJncC1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1JbiBjYXNlIG9mIHVjbGliYywgdXNlIGxpYnVhcmdwCi0KLUlmIHdlIHVzZSB1Y2xpYmMgZm9yIHN5c3RlbSBsaWJyYXJpZXMsIHNlbGVjdCBsaWJ1YXJncAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLU5hdXIgcm5nLXRvb2xzLTUtb3JpZy9jb25maWd1cmUuYWMgcm5nLXRvb2xzLTUvY29uZmlndXJlLmFjCi0tLS0gcm5nLXRvb2xzLTUtb3JpZy9jb25maWd1cmUuYWMJMjAxNi0wMi0yNCAxODoxMToyNC4wMjM2OTAyMzUgKzAyMDAKLSsrKyBybmctdG9vbHMtNS9jb25maWd1cmUuYWMJMjAxNi0wMi0yNCAxODoxNDo0OS43NjMxMTgxMzggKzAyMDAKLUBAIC0zOSw2ICszOSwxMyBAQAotIAlbd2l0aF9saWJhcmdwPWNoZWNrXQotICkKLSAKLStBQ19BUkdfRU5BQkxFKFt1Y2xpYmNdLAotKyAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdWNsaWJjXSwgW1VzZSB1Y2xpYmMgZm9yIHN5c3RlbSBsaWJyYXJpZXNdKSwKLSsgICAgICAgIHVzZV91Y2xpYmM9eWVzLCB1c2VfdWNsaWJjPW5vKQotK0FNX0NPTkRJVElPTkFMKFVTRV9VQ0xJQkMsIHRlc3QgIngkdXNlX3VjbGliYyIgPSAieHllcyIpCi0rQVNfSUYoW3Rlc3QgIngkdXNlX3VjbGliYyIgPSAieHllcyJdLCBbQUNfREVGSU5FKFVTRV9VQ0xJQkMpXSkKLStBSF9URU1QTEFURShbVVNFX1VDTElCQ10sIFtEZWZpbmVkIGlmIHVjbGliYyBsaWJyYXJpZXMgYXJlIHVzZWQuXSkKLSsKLSBkbmwgTWFrZSBzdXJlIGFueW9uZSBjaGFuZ2luZyBjb25maWd1cmUuYWMvTWFrZWZpbGUuYW0gaGFzIGEgY2x1ZQotIEFNX01BSU5UQUlORVJfTU9ERQotIAotQEAgLTEwMSw3ICsxMDgsNyBAQAotIAkJCVtuZWVkX2xpYmFyZ3A9bm9dLAotIAkJCVtuZWVkX2xpYmFyZ3A9eWVzCi0gCQkJIGlmIHRlc3QgIngkd2l0aF9saWJhcmdwIiA9ICJ4bm8iOyB0aGVuCi0tCQkJCUFDX01TR19GQUlMVVJFKFtsaWJhcmdwIGRpc2FibGVkIGFuZCBsaWJjIGRvZXMgbm90IGhhdmUgYXJncF0pCi0rCQkJCUFDX01TR19XQVJOKFtsaWJhcmdwIGRpc2FibGVkIGFuZCBsaWJjIGRvZXMgbm90IGhhdmUgYXJncF0pCi0gCQkJIGZpXQotIAkJKQotIAldLAotQEAgLTExMCw3ICsxMTcsNyBAQAotIAotIGRubCBDaGVjayBmb3IgbGliYXJncAotIEFTX0lGKAotLQlbdGVzdCAieCRuZWVkX2xpYmFyZ3AiID0gInh5ZXMiXSwKLSsJW3Rlc3QgIngkbmVlZF9saWJhcmdwIiA9ICJ4eWVzIiAtYSAieCR1c2VfdWNsaWJjIiA9ICJ4bm8iXSwKLSAJWwotIAkJQUNfQ0hFQ0tfTElCKAotIAkJCVthcmdwXSwKLUBAIC0xMjAsNiArMTI3LDE5IEBACi0gCQkpCi0gCV0KLSApCi0rCi0rZG5sIENoZWNrIGZvciBsaWJ1YXJncAotK0FTX0lGKAotKwlbdGVzdCAieCR1c2VfdWNsaWJjIiA9ICJ4eWVzIl0sCi0rCVsKLSsJCUFDX0NIRUNLX0xJQigKLSsJCQlbdWFyZ3BdLAotKwkJCVthcmdwX3BhcnNlXSwKLSsJCQlbTElCUz0iJExJQlMgLWx1YXJncCJdLAotKwkJCVtBQ19NU0dfRkFJTFVSRShbbGlidWFyZ3Agbm90IGZvdW5kXSldCi0rCQkpCi0rCV0KLSspCi0gCi0gZG5sIC0tLS0tLS0tLS0tLS0tLS0tCi0gZG5sIENvbmZpZ3VyZSBvcHRpb25zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91bmRlcnF1b3RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvdW5kZXJxdW90ZS5wYXRjaAppbmRleCAxNDIyNTcxLi5hZmQwOGQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91bmRlcnF1b3RlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3VuZGVycXVvdGUucGF0Y2gKQEAgLTcsNiArNyw4IEBACiBSUAogMjAxNi8yLzE2CiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiBJbmRleDogcm5nLXRvb2xzLTUvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gcm5nLXRvb2xzLTUub3JpZy9jb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCmluZGV4IDkzMjllOGEuLjRhNjZiZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgpAQCAtNiw5ICs2LDExIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlmLXRoZS1saWJjLWlzLWxhY2tpbmctYXJncC11c2UtbGliYXJncC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1hcmd1bWVudC10by1jb250cm9sLXRoZS1saWJhcmdwLWRlcGVuZGVuY3kucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdW5kZXJxdW90ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91Y2xpYmMtbGlidWFyZ3AtY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vZGVmYXVsdCIKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vcm5nZC5zZXJ2aWNlIFwKKyIKIAogU1JDX1VSSVttZDVzdW1dID0gIjY3MjZjZGM2ZmFlMWY1MTIyNDYzZjI0YWU5ODBkZDY4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwYTEwMmI2NjAzYmJjY2UyZGEzNDE0NzBjYWQ0MmVlYWE5NTY0YTE2YjQ0OTBlNzg2NzAyNmNhMTFhMzA3OGUiCkBAIC0yMCwxMyArMjIsMTEgQEAKICAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCiB9CiAKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIFBBQ0tBR0VDT05GSUcgPSAibGliZ2NyeXB0IgogUEFDS0FHRUNPTkZJR19saWJjLW11c2wgPSAibGliYXJncCIKLVBBQ0tBR0VDT05GSUdfbGliYy11Y2xpYmMgPSAibGlidWFyZ3AiCiBQQUNLQUdFQ09ORklHW2xpYmFyZ3BdID0gIi0td2l0aC1saWJhcmdwLC0td2l0aG91dC1saWJhcmdwLGFyZ3Atc3RhbmRhbG9uZSwiCi1QQUNLQUdFQ09ORklHW2xpYnVhcmdwXSA9ICItLWVuYWJsZS11Y2xpYmMsLCwiCiBQQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLS13aXRoLWxpYmdjcnlwdCwtLXdpdGhvdXQtbGliZ2NyeXB0LGxpYmdjcnlwdCwiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewpAQCAtNDAsNyArNDAsMTUgQEAKICAgICAgICAgaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdCIKICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3JuZy10b29scwogICAgIGZpCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcm5nZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ybmdkLnNlcnZpY2UKKyAgICBmaQogfQogCiBJTklUU0NSSVBUX05BTUUgPSAicm5nLXRvb2xzIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgMiAzIDQgNSAuIHN0b3AgMzAgMCA2IDEgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJuZ2Quc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKaW5kZXggNmVlZGI2ZC4uMWY1MTIyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKQEAgLTYsNyArNiw2IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAogREVQRU5EUyA9ICJsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMCBzaGFyZWQtbWltZS1pbmZvLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhtbDItbmF0aXZlIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9+aGFkZXNzL3NoYXJlZC1taW1lLWluZm8tJHtQVn0udGFyLnh6IgogCkBAIC0zMyw0ICszMiw0IEBACiAJYXV0b3Rvb2xzX2RvX2luc3RhbGwKIH0KIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL3NxbGl0ZTMtZml4LUNWRS0yMDE3LTEzNjg1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWM0MjhjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGaXggQ1ZFLTIwMTctMTM2ODUKKworVGhlIGR1bXBfY2FsbGJhY2sgZnVuY3Rpb24gaW4gU1FMaXRlIDMuMjAuMCBhbGxvd3MgcmVtb3RlIGF0dGFja2VycyB0bworY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZSAoRVhDX0JBRF9BQ0NFU1MgYW5kIGFwcGxpY2F0aW9uIGNyYXNoKSB2aWEgYQorY3JhZnRlZCBmaWxlLgorCitSZWZlcmVuY2VzOgoraHR0cHM6Ly9zcWxpdGUub3JnL3NyYy9pbmZvLzAyZjBmNGM1NGYyODE5YjMKK2h0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9zcWxpdGUtdXNlcnMlNDBtYWlsaW5nbGlzdHMuc3FsaXRlLm9yZy9tc2cxMDUzMTQuaHRtbAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NxbGl0ZS5vcmcvc3JjL2luZm8vY2YwZDM3MTVjYWFjOTE0OV0KKworQ1ZFOiBDVkUtMjAxNy0xMzY4NQorCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKworSW5kZXg6IHNyYy9zaGVsbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzcmMvc2hlbGwuYworKysrIHNyYy9zaGVsbC5jCitAQCAtMjY1NywxMCArMjY1NywxMSBAQAorICAgaW50ICphaVR5cGUgICAgICAvKiBDb2x1bW4gdHlwZXMgKi8KKyApeworICAgaW50IGk7CisgICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUqKXBBcmc7CisgCisrICBpZiggYXpBcmc9PTAgKSByZXR1cm4gMDsKKyAgIHN3aXRjaCggcC0+Y01vZGUgKXsKKyAgICAgY2FzZSBNT0RFX0xpbmU6IHsKKyAgICAgICBpbnQgdyA9IDU7CisgICAgICAgaWYoIGF6QXJnPT0wICkgYnJlYWs7CisgICAgICAgZm9yKGk9MDsgaTxuQXJnOyBpKyspeworQEAgLTMwMDcsMTAgKzMwMDgsMTEgQEAKKyAqLworIHN0YXRpYyBpbnQgY2FwdHVyZU91dHB1dENhbGxiYWNrKHZvaWQgKnBBcmcsIGludCBuQXJnLCBjaGFyICoqYXpBcmcsIGNoYXIgKipheil7CisgICBTaGVsbFRleHQgKnAgPSAoU2hlbGxUZXh0KilwQXJnOworICAgaW50IGk7CisgICBVTlVTRURfUEFSQU1FVEVSKGF6KTsKKysgIGlmKCBhekFyZz09MCApIHJldHVybiAwOworICAgaWYoIHAtPm4gKSBhcHBlbmRUZXh0KHAsICJ8IiwgMCk7CisgICBmb3IoaT0wOyBpPG5Bcmc7IGkrKyl7CisgICAgIGlmKCBpICkgYXBwZW5kVGV4dChwLCAiLCIsIDApOworICAgICBpZiggYXpBcmdbaV0gKSBhcHBlbmRUZXh0KHAsIGF6QXJnW2ldLCAwKTsKKyAgIH0KK0BAIC0zODg4LDExICszODkwLDExIEBACisgICBjb25zdCBjaGFyICp6VHlwZTsKKyAgIGNvbnN0IGNoYXIgKnpTcWw7CisgICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUgKilwQXJnOworIAorICAgVU5VU0VEX1BBUkFNRVRFUihhek5vdFVzZWQpOworLSAgaWYoIG5BcmchPTMgKSByZXR1cm4gMTsKKysgIGlmKCBuQXJnIT0zIHx8IGF6QXJnPT0wICkgcmV0dXJuIDA7CisgICB6VGFibGUgPSBhekFyZ1swXTsKKyAgIHpUeXBlID0gYXpBcmdbMV07CisgICB6U3FsID0gYXpBcmdbMl07CisgCisgICBpZiggc3RyY21wKHpUYWJsZSwgInNxbGl0ZV9zZXF1ZW5jZSIpPT0wICl7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4xNy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMTcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkzY2IzMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4xNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBzcWxpdGUzLmluYwotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTY1ZjBhNTdjYTY5Mjg3MTBiNDE4YzA5NGIzNTcwYmIwIgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTcvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAotICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDUwYTk1YTdiZGU2OTdjOWZlNGRlOWFlMmZmZmRjY2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTRlNDg1YWQzYTE2ZTA1NDc2NWJhZjYzNzE4MjZiNTAwMGJlZWQwN2U2MjY1MTA4OTYwNjljMGJmMDEzODc0YyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MDgyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgc3FsaXRlMy5pbmMKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKKworU1JDX1VSSSA9ICJcCisgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE3L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKKyAgZmlsZTovL3NxbGl0ZTMtZml4LUNWRS0yMDE3LTEzNjg1LnBhdGNoIFwKKyAgIgorU1JDX1VSSVttZDVzdW1dID0gImUyNjJhMjhiNzNjYzMzMGU3ZTgzNTIwYzhjZTE0ZTRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM4MTRjNmY2MjlmZjkzOTY4YjJiMzdhNzA0OTdjZmU5OGIzNjZiZjU4N2EyMjYxYTU2YTVmNzUwYWY2YWU2YTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZmU2MjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40Ni4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotIyB2YXBpZ2VuLm00IGlzIHJlcXVpcmVkIHdoZW4gdmFsYSBpcyBub3QgcHJlc2VudCAoYnV0IHRoZSBvbmUgZnJvbSB2YWxhIHNob3VsZCBiZSB1c2VkIG5vcm1hbGx5KQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG9uLXQtZW5hYmxlLXN0YWNrLXByb3RlY3Rpb24tYnktZGVmYXVsdC5wYXRjaCBcCi0gICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2YWxhJywgJycsICdmaWxlOi8vMDAwMS1BZGQtbTQtdmFwaWdlbi5tNC5wYXRjaCcsIGQpIH0gXAotICAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZThmNDM5M2I5ZjFlYzJlMmYzY2RiM2ZkNGY1YTE2ZGUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4ODAwY2Y4YmMyNTk3MDRhMTJhZDE4NTNmYjBlYjQzYmZlMzg1N2FmMTUyNDJlNmZiOWYyYzNmZDk1YjNmNWM2IgotCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKLQotIyBJbnN0ZWFkIG9mICJpbmhlcml0IHZhbGEiIHdlIGRvIHRoZSByZWxldmFudCBzZXR0aW5ncyBoZXJlIHNvIHdlIGNhbgotIyBzZXQgREVQRU5EUyBiYXNlZCBvbiBQQUNLQUdFQ09ORklHLgotCi0jIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgU1RBR0lOR19EQVRBRElSCi0jIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgotCi0jIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcwotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItLWVuYWJsZS12YWxhLC0tZGlzYWJsZS12YWxhLHZhbGEtbmF0aXZlIHZhbGEiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3QtYXBwbGljYXRpb24iCi0KLSMgbGlidG9vbCBhZGRzICItbm9zdGRsaWIiIHdoZW4gZysrIGlzIHVzZWQuIFRoaXMgYnJlYWtzIFBJRSBidWlsZHMuCi0jIFVzZSBsaWJ0b29sLWNyb3NzICh3aGljaCBoYXMgYSBoYWNrIHRvIHByZXZlbnQgdGhhdCkgaW5zdGVhZC4KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgotCi1QQUNLQUdFUyA9KyAibGlidnRlIgotRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDguMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzIwODQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40OC4zLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBpbnRsdG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCisjIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eb24tdC1lbmFibGUtc3RhY2stcHJvdGVjdGlvbi1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGEnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFkZC1tNC12YXBpZ2VuLm00LnBhdGNoJywgZCkgfSBcCisgICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiMzAwNjc1YWM1ZjI2OWFhNmViNDhmZTg5YTBkNzI2ZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImEzYTlmYjE4Mjc0MGIzOTJhNDVjZDNmNDZmYTYxYTk4NWY2OGJiNmIxODE3YjUyZGFlYzIyMDM0YzQ2MTU4YzMiCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCisjIEluc3RlYWQgb2YgImluaGVyaXQgdmFsYSIgd2UgZG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIGhlcmUgc28gd2UgY2FuCisjIHNldCBERVBFTkRTIGJhc2VkIG9uIFBBQ0tBR0VDT05GSUcuCisKKyMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBTVEFHSU5HX0RBVEFESVIKKyMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCisKKyMgSGVscCBnLWlyLXNjYW5uZXIgZmluZCB0aGUgLnNvIGZvciBsaW5raW5nCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKK30KKworIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLS1lbmFibGUtdmFsYSwtLWRpc2FibGUtdmFsYSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0LWFwcGxpY2F0aW9uIgorCisjIGxpYnRvb2wgYWRkcyAiLW5vc3RkbGliIiB3aGVuIGcrKyBpcyB1c2VkLiBUaGlzIGJyZWFrcyBQSUUgYnVpbGRzLgorIyBVc2UgbGlidG9vbC1jcm9zcyAod2hpY2ggaGFzIGEgaGFjayB0byBwcmV2ZW50IHRoYXQpIGluc3RlYWQuCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSIKK0ZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1saW51eC11Y2xpYmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZTdjNmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm0tbGludXgtdWNsaWJjCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ubwotYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQotYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLWFjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9NH0KLWFjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD00fQotYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KLWFjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQotYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KLWFjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTR9Ci1hY19jdl9zaXplb2Zfdm9pZF9wPSR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcD00fQotYWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPSR7YWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPTh9Ci0KLWFjX2N2X3VjaGFyPSR7YWNfY3ZfdWNoYXI9bm99Ci1hY19jdl91aW50PSR7YWNfY3ZfdWludD15ZXN9Ci1hY19jdl91bG9uZz0ke2FjX2N2X3Vsb25nPXllc30KLWFjX2N2X3VzaG9ydD0ke2FjX2N2X3VzaG9ydD15ZXN9Ci0KLWFjX2N2X3RpbWVfcl90eXBlPSR7YWNfY3ZfdGltZV9yX3R5cGU9UE9TSVh9Ci0KLSMgc2FtYmEKLXNhbWJhX2N2X0JST0tFTl9OSVNQTFVTX0lOQ0xVREVfRklMRVM9JHtzYW1iYV9jdl9CUk9LRU5fTklTUExVU19JTkNMVURFX0ZJTEVTPXllc30KLXNhbWJhX2N2X0JST0tFTl9SRURIQVRfN19TWVNURU1fSEVBREVSUz0ke3NhbWJhX2N2X0JST0tFTl9SRURIQVRfN19TWVNURU1fSEVBREVSUz1ub30KLXNhbWJhX2N2X0ZUUlVOQ0FURV9ORUVEU19ST09UPSR7c2FtYmFfY3ZfRlRSVU5DQVRFX05FRURTX1JPT1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9GQ05UTDY0X0xPQ0tTPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fRkNOVEw2NF9MT0NLUz1ub30KLXNhbWJhX2N2X0hBVkVfQlJPS0VOX0dFVEdST1VQUz0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX0dFVEdST1VQUz1ub30KLXNhbWJhX2N2X0hBVkVfQlJPS0VOX0xJTlVYX1NFTkRGSUxFPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fTElOVVhfU0VOREZJTEU9eWVzfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX1JFQURESVI9bm99Ci1zYW1iYV9jdl9IQVZFX0M5OV9WU05QUklOVEY9JHtzYW1iYV9jdl9IQVZFX0M5OV9WU05QUklOVEY9eWVzfQotc2FtYmFfY3ZfSEFWRV9ERVY2NF9UPSR7c2FtYmFfY3ZfSEFWRV9ERVY2NF9UPW5vfQotc2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUFKT1JfRk49JHtzYW1iYV9jdl9IQVZFX0RFVklDRV9NQUpPUl9GTj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RFVklDRV9NSU5PUl9GTj0ke3NhbWJhX2N2X0hBVkVfREVWSUNFX01JTk9SX0ZOPXllc30KLXNhbWJhX2N2X0hBVkVfRFFCX0ZTT0ZUTElNSVQ9JHtzYW1iYV9jdl9IQVZFX0RRQl9GU09GVExJTUlUPW5vfQotc2FtYmFfY3ZfSEFWRV9FWFBMSUNJVF9MQVJHRUZJTEVfU1VQUE9SVD0ke3NhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPSR7c2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPXllc30KLXNhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD0ke3NhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0ZVTkNUSU9OX01BQ1JPPSR7c2FtYmFfY3ZfSEFWRV9GVU5DVElPTl9NQUNSTz15ZXN9Ci1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLXNhbWJhX2N2X0hBVkVfSU5PNjRfVD0ke3NhbWJhX2N2X0hBVkVfSU5PNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfSU5UMTZfRlJPTV9SUENfUlBDX0g9JHtzYW1iYV9jdl9IQVZFX0lOVDE2X0ZST01fUlBDX1JQQ19IPW5vfQotc2FtYmFfY3ZfSEFWRV9JTlQzMl9GUk9NX1JQQ19SUENfSD0ke3NhbWJhX2N2X0hBVkVfSU5UMzJfRlJPTV9SUENfUlBDX0g9bm99Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfQ0hBTkdFX05PVElGWT15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfT1BMT0NLU19MSU5VWD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9TSEFSRV9NT0RFUz0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPXllc30KLXNhbWJhX2N2X0hBVkVfTU1BUD0ke3NhbWJhX2N2X0hBVkVfTU1BUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX05BVElWRV9JQ09OVj0ke3NhbWJhX2N2X0hBVkVfTkFUSVZFX0lDT05WPXllc30KLXNhbWJhX2N2X0hBVkVfT0ZGNjRfVD0ke3NhbWJhX2N2X0hBVkVfT0ZGNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfUVVPVEFDVExfNEE9JHtzYW1iYV9jdl9IQVZFX1FVT1RBQ1RMXzRBPXllc30KLXNhbWJhX2N2X0hBVkVfUk9PVD0ke3NhbWJhX2N2X0hBVkVfUk9PVD1ub30KLXNhbWJhX2N2X0hBVkVfUlBDX0FVVEhfRVJST1JfQ09ORkxJQ1Q9JHtzYW1iYV9jdl9IQVZFX1JQQ19BVVRIX0VSUk9SX0NPTkZMSUNUPW5vfQotc2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD0ke3NhbWJhX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9eWVzfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRT0ke3NhbWJhX2N2X0hBVkVfU0VOREZJTEU9bm99Ci1zYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9JHtzYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9bm99Ci1zYW1iYV9jdl9IQVZFX1NPQ0tfU0lOX0xFTj0ke3NhbWJhX2N2X0hBVkVfU09DS19TSU5fTEVOPW5vfQotc2FtYmFfY3ZfSEFWRV9TVEFUX1NUX0JMS1NJWkU9JHtzYW1iYV9jdl9IQVZFX1NUQVRfU1RfQkxLU0laRT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NUQVRfU1RfQkxPQ0tTPSR7c2FtYmFfY3ZfSEFWRV9TVEFUX1NUX0JMT0NLUz15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NUUlVDVF9ESVJFTlQ2ND0ke3NhbWJhX2N2X0hBVkVfU1RSVUNUX0RJUkVOVDY0PW5vfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRkxPQ0s2ND0ke3NhbWJhX2N2X0hBVkVfU1RSVUNUX0ZMT0NLNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfSUZfRFFCTEs9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9JRl9EUUJMSz1ub30KLXNhbWJhX2N2X0hBVkVfU1RSVUNUX01FTV9EUUJMSz0ke3NhbWJhX2N2X0hBVkVfU1RSVUNUX01FTV9EUUJMSz1ub30KLXNhbWJhX2N2X0hBVkVfVFJVTkNBVEVEX1NBTFQ9JHtzYW1iYV9jdl9IQVZFX1RSVU5DQVRFRF9TQUxUPW5vfQotc2FtYmFfY3ZfSEFWRV9VSU5UMTZfRlJPTV9SUENfUlBDX0g9JHtzYW1iYV9jdl9IQVZFX1VJTlQxNl9GUk9NX1JQQ19SUENfSD1ub30KLXNhbWJhX2N2X0hBVkVfVUlOVDMyX0ZST01fUlBDX1JQQ19IPSR7c2FtYmFfY3ZfSEFWRV9VSU5UMzJfRlJPTV9SUENfUlBDX0g9bm99Ci1zYW1iYV9jdl9IQVZFX1VOU0lHTkVEX0NIQVI9JHtzYW1iYV9jdl9IQVZFX1VOU0lHTkVEX0NIQVI9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVElNQlVGPSR7c2FtYmFfY3ZfSEFWRV9VVElNQlVGPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfQUREUj0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfQUREUj15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX0VYSVQ9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX0VYSVQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVF9VVF9IT1NUPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9IT1NUPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfSUQ9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX0lEPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfTkFNRT0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfTkFNRT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX1BJRD0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfUElEPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfVElNRT0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfVElNRT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX1RWPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9UVj15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX1RZUEU9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX1RZUEU9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVF9VVF9VU0VSPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9VU0VSPXllc30KLXNhbWJhX2N2X0hBVkVfVVhfVVRfU1lTTEVOPSR7c2FtYmFfY3ZfSEFWRV9VWF9VVF9TWVNMRU49bm99Ci1zYW1iYV9jdl9IQVZFX1ZBX0NPUFk9JHtzYW1iYV9jdl9IQVZFX1ZBX0NPUFk9eWVzfQotc2FtYmFfY3ZfSEFWRV9XT1JLSU5HX0FGX0xPQ0FMPSR7c2FtYmFfY3ZfSEFWRV9XT1JLSU5HX0FGX0xPQ0FMPW5vfQotc2FtYmFfY3ZfSEFWRV9XZXJyb3I9JHtzYW1iYV9jdl9IQVZFX1dlcnJvcj15ZXN9Ci1zYW1iYV9jdl9QVVRVVExJTkVfUkVUVVJOU19VVE1QPSR7c2FtYmFfY3ZfUFVUVVRMSU5FX1JFVFVSTlNfVVRNUD15ZXN9Ci1zYW1iYV9jdl9RVU9UQV9XT1JLUz0ke3NhbWJhX2N2X1FVT1RBX1dPUktTPXllc30KLXNhbWJhX2N2X1JFUExBQ0VfR0VUUEFTUz0ke3NhbWJhX2N2X1JFUExBQ0VfR0VUUEFTUz15ZXN9Ci1zYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT0ke3NhbWJhX2N2X1JFUExBQ0VfSU5FVF9OVE9BPW5vfQotc2FtYmFfY3ZfUlVOX1FVT1RBX1RFU1RTPSR7c2FtYmFfY3ZfUlVOX1FVT1RBX1RFU1RTPWF1dG99Ci1zYW1iYV9jdl9TRUVLRElSX1JFVFVSTlNfVk9JRD0ke3NhbWJhX2N2X1NFRUtESVJfUkVUVVJOU19WT0lEPXllc30KLXNhbWJhX2N2X1NJWkVPRl9JTk9fVD0ke3NhbWJhX2N2X1NJWkVPRl9JTk9fVD15ZXN9Ci1zYW1iYV9jdl9TSVpFT0ZfT0ZGX1Q9JHtzYW1iYV9jdl9TSVpFT0ZfT0ZGX1Q9eWVzfQotc2FtYmFfY3ZfU1lTQ09ORl9TQ19OR1JPVVBTX01BWD0ke3NhbWJhX2N2X1NZU0NPTkZfU0NfTkdST1VQU19NQVg9eWVzfQotc2FtYmFfY3ZfU1lTUVVPVEFfRk9VTkQ9JHtzYW1iYV9jdl9TWVNRVU9UQV9GT1VORD15ZXN9Ci1zYW1iYV9jdl9TWVNRVU9UQV9XT1JLUz0ke3NhbWJhX2N2X1NZU1FVT1RBX1dPUktTPXllc30KLXNhbWJhX2N2X1RSWV9RVU9UQVM9JHtzYW1iYV9jdl9UUllfUVVPVEFTPW5vfQotc2FtYmFfY3ZfVFJZX1NZU19RVU9UQVM9JHtzYW1iYV9jdl9UUllfU1lTX1FVT1RBUz1ub30KLXNhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9JHtzYW1iYV9jdl9VU0VfU0VUUkVTVUlEPXllc30KLXNhbWJhX2N2X1dJVEhfUVVPVEFTPSR7c2FtYmFfY3ZfV0lUSF9RVU9UQVM9YXV0b30KLXNhbWJhX2N2X1dJVEhfU1lTX1FVT1RBUz0ke3NhbWJhX2N2X1dJVEhfU1lTX1FVT1RBUz1hdXRvfQotc2FtYmFfY3ZfY29tcGlsZXJfc3VwcG9ydHNfbGw9JHtzYW1iYV9jdl9jb21waWxlcl9zdXBwb3J0c19sbD15ZXN9Ci1zYW1iYV9jdl9oYXZlX2xvbmdsb25nPSR7c2FtYmFfY3ZfaGF2ZV9sb25nbG9uZz15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc2dpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzZ2lkPXllc30KLXNhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPSR7c2FtYmFfY3ZfaGF2ZV9zZXRyZXN1aWQ9eWVzfQotc2FtYmFfY3ZfaW1tZWRpYXRlX3N0cnVjdHVyZXM9JHtzYW1iYV9jdl9pbW1lZGlhdGVfc3RydWN0dXJlcz15ZXN9Ci1zYW1iYV9jdl9vcHRpbWl6ZV9vdXRfZnVuY2F0aW9uX2NhbGxzPSR7c2FtYmFfY3Zfb3B0aW1pemVfb3V0X2Z1bmNhdGlvbl9jYWxscz15ZXN9Ci1zYW1iYV9jdl9zaWdfYXRvbWljX3Q9JHtzYW1iYV9jdl9zaWdfYXRvbWljX3Q9eWVzfQotc2FtYmFfY3Zfc29ja2xlbl90PSR7c2FtYmFfY3Zfc29ja2xlbl90PXllc30KLXNhbWJhX2N2X3VuaXhzb2NrZXQ9JHtzYW1iYV9jdl91bml4c29ja2V0PXllc30KLXNhbWJhX2N2X3ZvbGF0aWxlPSR7c2FtYmFfY3Zfdm9sYXRpbGU9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm1lYi1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybWViLWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMxZTg1Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybWViLWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ubwotYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQotYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLWFjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9NH0KLWFjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD00fQotYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KLWFjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQotYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KLWFjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTR9Ci1hY19jdl9zaXplb2Zfdm9pZF9wPSR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcD00fQotYWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPSR7YWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlPTh9Ci1hY19jdl9zaXplb2ZfY2hhcl9wPSR7YWNfY3Zfc2l6ZW9mX2NoYXJfcD00fQotYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkPSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkPTR9Ci1hY19jdl9zaXplb2ZfcHRyZGlmZl90PSR7Z2xpYl9jdl9zaXplb2ZfcHRyZGlmZl90PTR9Ci0KLWFjX2N2X3VjaGFyPSR7YWNfY3ZfdWNoYXI9bm99Ci1hY19jdl91aW50PSR7YWNfY3ZfdWludD15ZXN9Ci1hY19jdl91bG9uZz0ke2FjX2N2X3Vsb25nPXllc30KLWFjX2N2X3VzaG9ydD0ke2FjX2N2X3VzaG9ydD15ZXN9Ci0KLWFjX2N2X3RpbWVfcl90eXBlPSR7YWNfY3ZfdGltZV9yX3R5cGU9UE9TSVh9Ci0KLSMgc2FtYmEKLXNhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7c2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVEVVSUQ9JHtzYW1iYV9jdl9VU0VfU0VURVVJRD15ZXN9Ci1zYW1iYV9jdl9VU0VfU0VUUkVTVUlEPSR7c2FtYmFfY3ZfVVNFX1NFVFJFU1VJRD15ZXN9Ci1zYW1iYV9jdl9VU0VfU0VUUkVVSUQ9JHtzYW1iYV9jdl9VU0VfU0VUUkVVSUQ9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVFVJRFg9JHtzYW1iYV9jdl9VU0VfU0VUVUlEWD15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc2dpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzZ2lkPXllc30KLXNhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPSR7c2FtYmFfY3ZfaGF2ZV9zZXRyZXN1aWQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRT0ke3NhbWJhX2N2X0hBVkVfU0VOREZJTEU9eWVzfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PSR7c2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PXllc30KLXNhbWJhX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9JHtzYW1iYV9jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPXllc30KLXNhbWJhX2N2X0hBVkVfTU1BUD0ke3NhbWJhX2N2X0hBVkVfTU1BUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfT1BMT0NLU19MSU5VWD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfQ0hBTkdFX05PVElGWT15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9TSEFSRV9NT0RFUz0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLXVjbGliYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZmYzEwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD0ke2FjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD1ub30KLWFjX2N2X2Z1bmNfcmVhbGxvY193b3Jrcz0ke2FjX2N2X2Z1bmNfcmVhbGxvY193b3Jrcz15ZXN9Ci1hY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPSR7YWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD15ZXN9Ci1hY19jdl9mdW5jX21hbGxvY193b3Jrcz0ke2FjX2N2X2Z1bmNfbWFsbG9jX3dvcmtzPXllc30KLWFjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfbWFsbG9jXzBfbm9ubnVsbD15ZXN9Ci1hY19jdl9mdW5jX2dldHBncnBfdm9pZD15ZXMKLWFjX2N2X2Z1bmNfc2V0cGdycF92b2lkPXllcwotYWNfY3ZfZnVuY19zZXRncmVudF92b2lkPXllcwotYWNfY3ZfZnVuY19nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19nZXRncmdpZF9yPXllc30KLWFjX2N2X2Z1bmNfZ2V0cHd1aWRfcj0ke2FjX2N2X2Z1bmNfZ2V0cHd1aWRfcj15ZXN9Ci1hY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPXllc30KLWFjX2N2X2Z1bmNfZ2V0YWRkcmluZm89JHthY19jdl9mdW5jX2dldGFkZHJpbmZvPXllc30KLQotIyBnbGliCi1nbGliX2N2X3N0cmxjcHk9JHtnbGliX2N2X3N0cmxjcHk9bm99Ci1hY19jdl9mdW5jX3ByaW50Zl91bml4OTg9JHthY19jdl9mdW5jX3ByaW50Zl91bml4OTg9eWVzfQotYWNfY3ZfZnVuY19zbnByaW50Zl9jOTk9JHthY19jdl9mdW5jX3NucHJpbnRmX2M5OT15ZXN9Ci1hY19jdl9mdW5jX3ZzbnByaW50Zl9jOTk9JHthY19jdl9mdW5jX3ZzbnByaW50Zl9jOTk9eWVzfQotZ2xpYl9jdl9jb21wbGlhbnRfcG9zaXhfbWVtYWxpZ249JHtnbGliX2N2X2NvbXBsaWFudF9wb3NpeF9tZW1hbGlnbj0xfQotZ2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PSR7Z2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotZ2xpYl9jdl9oYXZlX3Fzb3J0X3I9JHtnbGliX2N2X2hhdmVfcXNvcnRfcj1ub30KLQotI2RidXMtZ2xpYgotYWNfY3ZfaGF2ZV9hYnN0cmFjdF9zb2NrZXRzPSR7YWNfY3ZfaGF2ZV9hYnN0cmFjdF9zb2NrZXRzPXllc30KLQotIyBiYXNoCi1iYXNoX2N2X3VuZGVyX3N5c19zaWdsaXN0PSR7YmFzaF9jdl91bmRlcl9zeXNfc2lnbGlzdD1ub30KLWJhc2hfY3Zfc3lzX3NpZ2xpc3Q9JHtiYXNoX2N2X3N5c19zaWdsaXN0PW5vfQotCi0jIGNvcmV1dGlscwotZnVfY3Zfc3lzX3N0YXRfc3RhdGZzMl9ic2l6ZT0ke2Z1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9eWVzfQotZ2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfY2xvYmJlcj0ke2dsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXI9bm99Ci1nbF9jdl9mdW5jX3R6c2V0X2Nsb2JiZXI9JHtnbF9jdl9mdW5jX3R6c2V0X2Nsb2JiZXI9bm99Ci1nbF9jdl9mdW5jX2dldHRpbWVvZmRheV9wb3NpeF9zaWduYXR1cmU9JHtnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9wb3NpeF9zaWduYXR1cmU9eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9zcGF3bj0ke2FjX2N2X2Z1bmNfcG9zaXhfc3Bhd249eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9zcGF3bl93b3Jrcz0ke2FjX2N2X2Z1bmNfcG9zaXhfc3Bhd25fd29ya3M9eWVzfQotCi0jIHZhX2NvcHkgYW5kIF92YV9jb3B5Ci1hY19jdl92YV9jb3B5PSR7YWNfY3ZfdmFfY29weT15ZXN9Ci1hY19jdl9fX3ZhX2NvcHk9JHthY19jdl9fX3ZhX2NvcHk9eWVzfQotYWNfY3ZfZnVuY192YV9jb3B5PSR7YWNfY3ZfZnVuY192YV9jb3B5PXllc30KLWFjX2N2X2Z1bmNfX192YV9jb3B5PSR7YWNfY3ZfZnVuY19fX3ZhX2NvcHk9eWVzfQotCi0jIHBvc2l4X2dldHB3dWlkX3IgcG9zaXhfZ2V0Z3JnaWRfciBwb3NpeF9nZXRwd25hbV9yCi1hY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPXllc30KLWFjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9Ci0KLSMgWG9yZwoteG9yZ19jdl9tYWxsb2MwX3JldHVybnNfbnVsbD0ke3hvcmdfY3ZfbWFsbG9jMF9yZXR1cm5zX251bGw9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KaW5kZXggZjRjZjBiOC4uNGZiZjU4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCkBAIC0xOSw3ICsxOSw2IEBACiBhY19jdl9zaXplb2ZfZmxvYXQ9JHthY19jdl9zaXplb2ZfZmxvYXQ9NH0KIGFjX2N2X3NpemVvZl91aWRfdD0ke2FjX2N2X3NpemVvZl91aWRfdD00fQogYWNfY3Zfc2l6ZW9mX2dpZF90PSR7YWNfY3Zfc2l6ZW9mX2dpZF90PTR9Ci1hY19jdl9zaXplb2ZfaW5vX3Q9JHthY19jdl9zaXplb2ZfaW5vX3Q9NH0KIGFjX2N2X3NpemVvZl9kZXZfdD0ke2FjX2N2X3NpemVvZl9kZXZfdD04fQogYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPSR7YWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPXllc30KIGFjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz0ke2FjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwcy1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHMtbGludXgtdWNsaWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjMzNjNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwcy1saW51eC11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLQotIyBiYXNoCi1hY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KLWJhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9Ci0KLSMgb3BlbnNzaAotYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQotYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KLWFjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KLWFjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KLWFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KLQotIyBmZ2V0Ci1jb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KLQotIyBnbGliCi1nbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQotCi0jIGdsaWItMi4wCi1nbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KLXV0aWxzX2N2X3N5c19vcGVuX21heD0ke3V0aWxzX2N2X3N5c19vcGVuX21heD0xMDE1fQotZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQotCi0jIGxpYnBjYXAKLWFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci0KLSMgc3RhcnR1cC1ub3RpZmljYXRpb24KLWxmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci0KLSMgbGliaWRsCi1saWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotCi0jIG5jZnRwCi13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KLXdpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9Ci13aV9jdl91bml4X2RvbWFpbl9zb2NrZXRzPSR7d2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz15ZXN9Ci0KLSMgZGIKLWRiX2N2X2FsaWduX3Q9JHtkYl9jdl9hbGlnbl90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQotZGJfY3ZfYWxpZ25wX3Q9JHtkYl9jdl9hbGlnbnBfdD0ndW5zaWduZWQgbG9uZyd9Ci1kYl9jdl9mY250bF9mX3NldGZkPSR7ZGJfY3ZfZmNudGxfZl9zZXRmZD15ZXN9Ci1kYl9jdl9zcHJpbnRmX2NvdW50PSR7ZGJfY3Zfc3ByaW50Zl9jb3VudD15ZXN9Ci0KLSMgcnJkdG9vbAotcmRfY3ZfaWVlZV93b3Jrcz0ke3JkX2N2X2llZWVfd29ya3M9eWVzfQotIyBhY19jdl9wYXRoX1BFUkw9JHthY19jdl9wYXRoX1BFUkw9bm99Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgc2FtYmEKLXNhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7c2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotCi0jIHZpbQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLQotIyBpbnRlcmNvbQotYWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPSR7YWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPXllc30KLQotIyBsbWJlbmNoCi1hY19jdl91aW50PSR7YWNfY3ZfdW5pdD15ZXN9Ci0KLSMgRC1CVVMKLWFjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9Ci0KLSMgZXZvbHV0aW9uLWRhdGEtc2VydmVyCi1hY19jdl9saWJpY29udl91dGY4PSR7YWNfY3ZfbGliaWNvbnZfdXRmOD15ZXN9Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwczY0LWxpbnV4LXVjbGliYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwczY0LWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JiYTU1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NC1saW51eC11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLQotIyBiYXNoCi1hY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KLWJhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9Ci0KLSMgb3BlbnNzaAotYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQotYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KLWFjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KLWFjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KLWFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KLQotIyBmZ2V0Ci1jb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KLQotIyBnbGliCi1nbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQotCi0jIGdsaWItMi4wCi1nbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KLXV0aWxzX2N2X3N5c19vcGVuX21heD0ke3V0aWxzX2N2X3N5c19vcGVuX21heD0xMDE1fQotZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQotYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKLWFjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04Ci1hY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9OAotCi0jIGxpYnBjYXAKLWFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci0KLSMgc3RhcnR1cC1ub3RpZmljYXRpb24KLWxmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci0KLSMgbGliaWRsCi1saWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotCi0jIG5jZnRwCi13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KLXdpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9Ci13aV9jdl91bml4X2RvbWFpbl9zb2NrZXRzPSR7d2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz15ZXN9Ci0KLSMgZGIKLWRiX2N2X2FsaWduX3Q9JHtkYl9jdl9hbGlnbl90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQotZGJfY3ZfYWxpZ25wX3Q9JHtkYl9jdl9hbGlnbnBfdD0ndW5zaWduZWQgbG9uZyd9Ci1kYl9jdl9mY250bF9mX3NldGZkPSR7ZGJfY3ZfZmNudGxfZl9zZXRmZD15ZXN9Ci1kYl9jdl9zcHJpbnRmX2NvdW50PSR7ZGJfY3Zfc3ByaW50Zl9jb3VudD15ZXN9Ci0KLSMgcnJkdG9vbAotcmRfY3ZfaWVlZV93b3Jrcz0ke3JkX2N2X2llZWVfd29ya3M9eWVzfQotIyBhY19jdl9wYXRoX1BFUkw9JHthY19jdl9wYXRoX1BFUkw9bm99Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgc2FtYmEKLXNhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPSR7c2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9eWVzfQotCi0jIHZpbQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLQotIyBpbnRlcmNvbQotYWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPSR7YWNfY3ZfZnVuY19mbm1hdGNoX3dvcmtzPXllc30KLQotIyBsbWJlbmNoCi1hY19jdl91aW50PSR7YWNfY3ZfdW5pdD15ZXN9Ci0KLSMgRC1CVVMKLWFjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0cHduYW1fcj15ZXN9Ci0KLSMgZWRzLWRidXMKLWFjX2N2X2xpYmljb252X3V0Zjg9JHthY19jdl9saWJpY29udl91dGY4PXllc30KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzNjRlbC1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NGVsLWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwNDk5ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NGVsLWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLQotIyBiYXNoCi1hY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KLWJhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9Ci0KLSMgb3BlbnNzaAotYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQotYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KLWFjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KLWFjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KLWFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KLQotIyBmZ2V0Ci1jb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KLQotIyBnbGliCi1nbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQotCi0jIGdsaWItMi4wCi1nbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KLXV0aWxzX2N2X3N5c19vcGVuX21heD0ke3V0aWxzX2N2X3N5c19vcGVuX21heD0xMDE1fQotZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQotYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKLWFjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04Ci1hY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9OAotCi0jIGxpYnBjYXAKLWFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci0KLSMgc3RhcnR1cC1ub3RpZmljYXRpb24KLWxmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci0KLSMgbGliaWRsCi1saWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotCi0jIG5jZnRwCi13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KLXdpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9Ci13aV9jdl91bml4X2RvbWFpbl9zb2NrZXRzPSR7d2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz15ZXN9Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgc2FtYmEKLSMgZnJvbSBzYW1iYSAzLjAuMTRhIG9uIDUvMjkvMjAwNQotYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz0ke2FjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzfQotYWNfY3ZfaGF2ZV9hc3ByaW50Zl9kZWNsPSR7YWNfY3ZfaGF2ZV9hc3ByaW50Zl9kZWNsPXllc30KLWFjX2N2X2hhdmVfc2V0cmVzZ2lkX2RlY2w9JHthY19jdl9oYXZlX3NldHJlc2dpZF9kZWNsPXllc30KLWFjX2N2X2hhdmVfc2V0cmVzdWlkX2RlY2w9JHthY19jdl9oYXZlX3NldHJlc3VpZF9kZWNsPXllc30KLWFjX2N2X2hhdmVfdmFzcHJpbnRmX2RlY2w9JHthY19jdl9oYXZlX3Zhc3ByaW50Zl9kZWNsPXllc30KLWZ1X2N2X3N5c19zdGF0X3N0YXR2ZnM2ND0ke2Z1X2N2X3N5c19zdGF0X3N0YXR2ZnM2ND15ZXN9Ci1zYW1iYV9jdl9GVFJVTkNBVEVfTkVFRFNfUk9PVD0ke3NhbWJhX2N2X0ZUUlVOQ0FURV9ORUVEU19ST09UPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fRkNOVEw2NF9MT0NLUz0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX0ZDTlRMNjRfTE9DS1M9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9JHtzYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9SRUFERElSPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj1ub30KLXNhbWJhX2N2X0hBVkVfQzk5X1ZTTlBSSU5URj0ke3NhbWJhX2N2X0hBVkVfQzk5X1ZTTlBSSU5URj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RFVjY0X1Q9JHtzYW1iYV9jdl9IQVZFX0RFVjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0RFVklDRV9NQUpPUl9GTj0ke3NhbWJhX2N2X0hBVkVfREVWSUNFX01BSk9SX0ZOPXllc30KLXNhbWJhX2N2X0hBVkVfREVWSUNFX01JTk9SX0ZOPSR7c2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUlOT1JfRk49eWVzfQotc2FtYmFfY3ZfSEFWRV9FWFBMSUNJVF9MQVJHRUZJTEVfU1VQUE9SVD0ke3NhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPSR7c2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPXllc30KLXNhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD0ke3NhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLXNhbWJhX2N2X0hBVkVfSU5PNjRfVD0ke3NhbWJhX2N2X0hBVkVfSU5PNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX0NIQU5HRV9OT1RJRlk9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPXllc30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX09QTE9DS1NfTElOVVg9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPXllc30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfU0hBUkVfTU9ERVM9eWVzfQotc2FtYmFfY3ZfSEFWRV9NQUtFREVWPSR7c2FtYmFfY3ZfSEFWRV9NQUtFREVWPXllc30KLXNhbWJhX2N2X0hBVkVfTU1BUD0ke3NhbWJhX2N2X0hBVkVfTU1BUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX09GRjY0X1Q9JHtzYW1iYV9jdl9IQVZFX09GRjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1FVT1RBQ1RMXzRBPSR7c2FtYmFfY3ZfSEFWRV9RVU9UQUNUTF80QT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1JPT1Q9JHtzYW1iYV9jdl9IQVZFX1JPT1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPSR7c2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9JHtzYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRElSRU5UNjQ9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9ESVJFTlQ2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NUUlVDVF9GTE9DSzY0PSR7c2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRkxPQ0s2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1RSVU5DQVRFRF9TQUxUPSR7c2FtYmFfY3ZfSEFWRV9UUlVOQ0FURURfU0FMVD1ub30KLXNhbWJhX2N2X0hBVkVfVU5TSUdORURfQ0hBUj0ke3NhbWJhX2N2X0hBVkVfVU5TSUdORURfQ0hBUj1ub30KLXNhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD0ke3NhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD1ub30KLXNhbWJhX2N2X0hBVkVfV2Vycm9yPSR7c2FtYmFfY3ZfSEFWRV9XZXJyb3I9eWVzfQotc2FtYmFfY3ZfUkVBTFBBVEhfVEFLRVNfTlVMTD0ke3NhbWJhX2N2X1JFQUxQQVRIX1RBS0VTX05VTEw9bm99Ci1zYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT0ke3NhbWJhX2N2X1JFUExBQ0VfSU5FVF9OVE9BPW5vfQotc2FtYmFfY3ZfU0laRU9GX0lOT19UPSR7c2FtYmFfY3ZfU0laRU9GX0lOT19UPXllc30KLXNhbWJhX2N2X1NJWkVPRl9PRkZfVD0ke3NhbWJhX2N2X1NJWkVPRl9PRkZfVD15ZXN9Ci1zYW1iYV9jdl9TWVNDT05GX1NDX05HUk9VUFNfTUFYPSR7c2FtYmFfY3ZfU1lTQ09ORl9TQ19OR1JPVVBTX01BWD15ZXN9Ci1zYW1iYV9jdl9TWVNDT05GX1NDX05QUk9DX09OTE49JHtzYW1iYV9jdl9TWVNDT05GX1NDX05QUk9DX09OTE49bm99Ci1zYW1iYV9jdl9TWVNRVU9UQV9GT1VORD0ke3NhbWJhX2N2X1NZU1FVT1RBX0ZPVU5EPXllc30KLXNhbWJhX2N2X1NZU1FVT1RBX1dPUktTPSR7c2FtYmFfY3ZfU1lTUVVPVEFfV09SS1M9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVFJFU1VJRD0ke3NhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9eWVzfQotc2FtYmFfY3ZfaGF2ZV9sb25nbG9uZz0ke3NhbWJhX2N2X2hhdmVfbG9uZ2xvbmc9eWVzfQotc2FtYmFfY3ZfaGF2ZV9zZXRyZXNnaWQ9JHtzYW1iYV9jdl9oYXZlX3NldHJlc2dpZD15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc3VpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPXllc30KLXNhbWJhX2N2X3N5c3F1b3Rhc19maWxlPSR7c2FtYmFfY3Zfc3lzcXVvdGFzX2ZpbGU9bGliL3N5c3F1b3Rhc180QS5jfQotIyBUaGlzIGNhY2hlZCB2YWx1ZSBuZWVkcyBhIGxvY2FsIHBhdGNoIHRvIHBpY2sgaXQgdXAsIHVwc3RyZWFtIDMuMC4xNGEKLSMgZG9lc24ndCBjYWNoZSBpdC4KLXNhbWJhX2N2X0xJTlVYX0xGU19TVVBQT1JUPSR7c2FtYmFfY3ZfTElOVVhfTEZTX1NVUFBPUlQ9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzZWwtbGludXgtdWNsaWJjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzZWwtbGludXgtdWNsaWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTIxY2RhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwc2VsLWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLQotIyBiYXNoCi1hY19jdl9jX2xvbmdfZG91YmxlPSR7YWNfY3ZfY19sb25nX2RvdWJsZT1ub30KLWJhc2hfY3ZfZnVuY19zaWdzZXRqbXA9JHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnR9Ci0KLSMgb3BlbnNzaAotYWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9hY2NyaWdodHNfaW5fbXNnaGRyPW5vfQotYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KLWFjX2N2X2hhdmVfY29udHJvbF9pbl9tc2doZHI9JHthY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPXllc30KLWFjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz0ke2FjX2N2X2hhdmVfb3BlbnB0eV9jdHR5X2J1Zz1ub30KLWFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PXllc30KLQotIyBmZ2V0Ci1jb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz0ke2NvbXBhdF9jdl9mdW5jX3NucHJpbnRmX3dvcmtzPXllc30KLQotIyBnbGliCi1nbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49JHtnbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPW5vfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD00fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQotCi0jIGxpYnBjYXAKLWFjX2N2X2xpbnV4X3ZlcnM9JHthY19jdl9saW51eF92ZXJzPTJ9Ci0KLSMgc3RhcnR1cC1ub3RpZmljYXRpb24KLWxmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci0KLSMgbGliaWRsCi1saWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2xpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotCi0jIG5jZnRwCi13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl9zZWM9bG9uZ30KLXdpX2N2X3N0cnVjdF90aW1ldmFsX3R2X3VzZWM9JHt3aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPWxvbmd9Ci13aV9jdl91bml4X2RvbWFpbl9zb2NrZXRzPSR7d2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz15ZXN9Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgc2FtYmEKLSMgZnJvbSBzYW1iYSAzLjAuMTRhIG9uIDUvMjkvMjAwNQotYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz0ke2FjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzfQotYWNfY3ZfaGF2ZV9hc3ByaW50Zl9kZWNsPSR7YWNfY3ZfaGF2ZV9hc3ByaW50Zl9kZWNsPXllc30KLWFjX2N2X2hhdmVfc2V0cmVzZ2lkX2RlY2w9JHthY19jdl9oYXZlX3NldHJlc2dpZF9kZWNsPXllc30KLWFjX2N2X2hhdmVfc2V0cmVzdWlkX2RlY2w9JHthY19jdl9oYXZlX3NldHJlc3VpZF9kZWNsPXllc30KLWFjX2N2X2hhdmVfdmFzcHJpbnRmX2RlY2w9JHthY19jdl9oYXZlX3Zhc3ByaW50Zl9kZWNsPXllc30KLWZ1X2N2X3N5c19zdGF0X3N0YXR2ZnM2ND0ke2Z1X2N2X3N5c19zdGF0X3N0YXR2ZnM2ND15ZXN9Ci1zYW1iYV9jdl9GVFJVTkNBVEVfTkVFRFNfUk9PVD0ke3NhbWJhX2N2X0ZUUlVOQ0FURV9ORUVEU19ST09UPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fRkNOVEw2NF9MT0NLUz0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX0ZDTlRMNjRfTE9DS1M9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9JHtzYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9SRUFERElSPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj1ub30KLXNhbWJhX2N2X0hBVkVfQzk5X1ZTTlBSSU5URj0ke3NhbWJhX2N2X0hBVkVfQzk5X1ZTTlBSSU5URj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RFVjY0X1Q9JHtzYW1iYV9jdl9IQVZFX0RFVjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0RFVklDRV9NQUpPUl9GTj0ke3NhbWJhX2N2X0hBVkVfREVWSUNFX01BSk9SX0ZOPXllc30KLXNhbWJhX2N2X0hBVkVfREVWSUNFX01JTk9SX0ZOPSR7c2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUlOT1JfRk49eWVzfQotc2FtYmFfY3ZfSEFWRV9FWFBMSUNJVF9MQVJHRUZJTEVfU1VQUE9SVD0ke3NhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPSR7c2FtYmFfY3ZfSEFWRV9GQ05UTF9MT0NLPXllc30KLXNhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD0ke3NhbWJhX2N2X0hBVkVfRlRSVU5DQVRFX0VYVEVORD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLXNhbWJhX2N2X0hBVkVfSU5PNjRfVD0ke3NhbWJhX2N2X0hBVkVfSU5PNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX0NIQU5HRV9OT1RJRlk9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPXllc30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX09QTE9DS1NfTElOVVg9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPXllc30KLXNhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfU0hBUkVfTU9ERVM9eWVzfQotc2FtYmFfY3ZfSEFWRV9NQUtFREVWPSR7c2FtYmFfY3ZfSEFWRV9NQUtFREVWPXllc30KLXNhbWJhX2N2X0hBVkVfTU1BUD0ke3NhbWJhX2N2X0hBVkVfTU1BUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX09GRjY0X1Q9JHtzYW1iYV9jdl9IQVZFX09GRjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1FVT1RBQ1RMXzRBPSR7c2FtYmFfY3ZfSEFWRV9RVU9UQUNUTF80QT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1JPT1Q9JHtzYW1iYV9jdl9IQVZFX1JPT1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPSR7c2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9JHtzYW1iYV9jdl9IQVZFX1NFTkRGSUxFNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRElSRU5UNjQ9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9ESVJFTlQ2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NUUlVDVF9GTE9DSzY0PSR7c2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRkxPQ0s2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1RSVU5DQVRFRF9TQUxUPSR7c2FtYmFfY3ZfSEFWRV9UUlVOQ0FURURfU0FMVD1ub30KLXNhbWJhX2N2X0hBVkVfVU5TSUdORURfQ0hBUj0ke3NhbWJhX2N2X0hBVkVfVU5TSUdORURfQ0hBUj1ub30KLXNhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD0ke3NhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD1ub30KLXNhbWJhX2N2X0hBVkVfV2Vycm9yPSR7c2FtYmFfY3ZfSEFWRV9XZXJyb3I9eWVzfQotc2FtYmFfY3ZfUkVBTFBBVEhfVEFLRVNfTlVMTD0ke3NhbWJhX2N2X1JFQUxQQVRIX1RBS0VTX05VTEw9bm99Ci1zYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT0ke3NhbWJhX2N2X1JFUExBQ0VfSU5FVF9OVE9BPW5vfQotc2FtYmFfY3ZfU0laRU9GX0lOT19UPSR7c2FtYmFfY3ZfU0laRU9GX0lOT19UPXllc30KLXNhbWJhX2N2X1NJWkVPRl9PRkZfVD0ke3NhbWJhX2N2X1NJWkVPRl9PRkZfVD15ZXN9Ci1zYW1iYV9jdl9TWVNDT05GX1NDX05HUk9VUFNfTUFYPSR7c2FtYmFfY3ZfU1lTQ09ORl9TQ19OR1JPVVBTX01BWD15ZXN9Ci1zYW1iYV9jdl9TWVNDT05GX1NDX05QUk9DX09OTE49JHtzYW1iYV9jdl9TWVNDT05GX1NDX05QUk9DX09OTE49bm99Ci1zYW1iYV9jdl9TWVNRVU9UQV9GT1VORD0ke3NhbWJhX2N2X1NZU1FVT1RBX0ZPVU5EPXllc30KLXNhbWJhX2N2X1NZU1FVT1RBX1dPUktTPSR7c2FtYmFfY3ZfU1lTUVVPVEFfV09SS1M9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVFJFU1VJRD0ke3NhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9eWVzfQotc2FtYmFfY3ZfaGF2ZV9sb25nbG9uZz0ke3NhbWJhX2N2X2hhdmVfbG9uZ2xvbmc9eWVzfQotc2FtYmFfY3ZfaGF2ZV9zZXRyZXNnaWQ9JHtzYW1iYV9jdl9oYXZlX3NldHJlc2dpZD15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc3VpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPXllc30KLXNhbWJhX2N2X3N5c3F1b3Rhc19maWxlPSR7c2FtYmFfY3Zfc3lzcXVvdGFzX2ZpbGU9bGliL3N5c3F1b3Rhc180QS5jfQotIyBUaGlzIGNhY2hlZCB2YWx1ZSBuZWVkcyBhIGxvY2FsIHBhdGNoIHRvIHBpY2sgaXQgdXAsIHVwc3RyZWFtIDMuMC4xNGEKLSMgZG9lc24ndCBjYWNoZSBpdC4KLXNhbWJhX2N2X0xJTlVYX0xGU19TVVBQT1JUPSR7c2FtYmFfY3ZfTElOVVhfTEZTX1NVUFBPUlQ9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKaW5kZXggMmY0ZTU3MC4uNWJhZTc0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CkBAIC0zMyw3ICszMyw2IEBACiBkYl9jdl9wYXRoX3N0cmlwPSR7ZGJfY3ZfcGF0aF9zdHJpcD0vdXNyL2Jpbi9zdHJpcH0KIGRiX2N2X2FsaWduX3Q9JHtkYl9jdl9hbGlnbl90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQogZGJfY3ZfYWxpZ25wX3Q9JHtkYl9jdl9hbGlnbnBfdD0ndW5zaWduZWQgbG9uZyd9Ci1kYl9jdl9tdXRleD0ke2RiX2N2X211dGV4PUFSTS9nY2MtYXNzZW1ibHl9CiBkYl9jdl9wb3NpeG11dGV4ZXM9JHtkYl9jdl9wb3NpeG11dGV4ZXM9bm99CiBkYl9jdl91aW11dGV4ZXM9JHtkYl9jdl91aW11dGV4ZXM9bm99CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDMyLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94MzItbGludXgKaW5kZXggMzA4ZDZlMi4uNGI3MDQyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94MzItbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94MzItbGludXgKQEAgLTEsNiArMSw1IEBACiAjIGdlbmVyYWwKIGFjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0xNn0KLWFjX2N2X3NpemVvZl9pbm9fdD0ke2FjX2N2X3NpemVvZl9pbm9fdD04fQogYWNfY3Zfc2l6ZW9mX2Rldl90PSR7YWNfY3Zfc2l6ZW9mX2Rldl90PTh9CiBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz0ke2FjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPTY0fQogYWNfY3ZfYWxpZ25vZl9kb3VibGU9OApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3g4Nl82NC1saW51eAppbmRleCBlYmRjZjY5Li43NzhlMmM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3g4Nl82NC1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3g4Nl82NC1saW51eApAQCAtMjQsNyArMjQsNiBAQAogYWNfY3Zfc2l6ZW9mX3NpemVfdD0ke2FjX2N2X3NpemVvZl9zaXplX3Q9OH0KIGFjX2N2X3NpemVvZl91aWRfdD0ke2FjX2N2X3NpemVvZl91aWRfdD00fQogYWNfY3Zfc2l6ZW9mX2dpZF90PSR7YWNfY3Zfc2l6ZW9mX2dpZF90PTR9Ci1hY19jdl9zaXplb2ZfaW5vX3Q9JHthY19jdl9zaXplb2ZfaW5vX3Q9OH0KIGFjX2N2X3NpemVvZl9kZXZfdD0ke2FjX2N2X3NpemVvZl9kZXZfdD04fQogYWNfY3Zfc2l6ZW9mX3ZvaWRfcD0ke2FjX2N2X3NpemVvZl92b2lkX3A9OH0KIGFjX2N2X3N0cmVycm9yX3JfU1VTdjM9JHthY19jdl9zdHJlcnJvcl9yX1NVU3YzPW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXgtdWNsaWJjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXgtdWNsaWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDI2OWY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDg2XzY0LWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLSMgZ2VuZXJhbAotYWNfY3ZfdmFfdmFsX2NvcHk9JHthY19jdl92YV92YWxfY29weT1ub30KLWFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz0ke2FjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz15ZXN9Ci1hY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9bm99Ci1hY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9eWVzfQotYWNfY3ZfZnVuY19zZXR2YnVmX3JldmVyc2VkPSR7YWNfY3ZfZnVuY19zZXR2YnVmX3JldmVyc2VkPW5vfQotYWNfY3ZfZnVuY19zdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX3N0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KLWFjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPSR7YWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9bm99Ci1hY19saWJuZXRfaGF2ZV9wYWNrZXRfc29ja2V0PSR7YWNfbGlibmV0X2hhdmVfcGFja2V0X3NvY2tldD15ZXN9Ci1hY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQotYWNfY3ZfbmVlZF90cmlvPSR7YWNfY3ZfbmVlZF90cmlvPW5vfQotYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KLWFjX2N2X3NpemVvZl9fX2ludDY0PSR7YWNfY3Zfc2l6ZW9mX19faW50NjQ9MH0KLWFjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9OH0KLWFjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0xNn0KLWFjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD04fQotYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KLWFjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQotYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KLWFjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTh9Ci1hY19jdl9zaXplb2Zfdm9pZF9wPSR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcD04fQotYWNfY3Zfc3RyZXJyb3Jfcl9TVVN2Mz0ke2FjX2N2X3N0cmVycm9yX3JfU1VTdjM9bm99Ci1kYl9jdl9hbGlnbnBfdD0ke2RiX2N2X2FsaWducF90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQotZGJfY3ZfYWxpZ25fdD0ke2RiX2N2X2FsaWduX3Q9J3Vuc2lnbmVkIGxvbmcgbG9uZyd9Ci1kYl9jdl9mY250bF9mX3NldGZkPSR7ZGJfY3ZfZmNudGxfZl9zZXRmZD15ZXN9Ci1kYl9jdl9zcHJpbnRmX2NvdW50PSR7ZGJfY3Zfc3ByaW50Zl9jb3VudD15ZXN9Ci1nbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KLWdsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9Ci1nbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9Ci1nbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPSR7Z2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj15ZXN9Ci1nbGliX2N2X3NhbmVfcmVhbGxvYz0ke2dsaWJfY3Zfc2FuZV9yZWFsbG9jPXllc30KLWdsaWJfY3Zfc2l6ZW9mX2dtdXRleD0ke2dsaWJfY3Zfc2l6ZW9mX2dtdXRleD00MH0KLWdsaWJfY3Zfc2l6ZW9mX2ludG1heF90PSR7Z2xpYl9jdl9zaXplb2ZfaW50bWF4X3Q9OH0KLWdsaWJfY3Zfc2l6ZW9mX3B0cmRpZmZfdD0ke2dsaWJfY3Zfc2l6ZW9mX3B0cmRpZmZfdD04fQotZ2xpYl9jdl9zaXplb2Zfc2l6ZV90PSR7Z2xpYl9jdl9zaXplb2Zfc2l6ZV90PTh9Ci1nbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPSR7Z2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD04fQotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci1nbGliX2N2X3N5c19wdGhyZWFkX2NvbmRfdGltZWR3YWl0X3Bvc2l4PSR7Z2xpYl9jdl9zeXNfcHRocmVhZF9jb25kX3RpbWVkd2FpdF9wb3NpeD15ZXN9Ci1nbGliX2N2X3N5c19wdGhyZWFkX2dldHNwZWNpZmljX3Bvc2l4PSR7Z2xpYl9jdl9zeXNfcHRocmVhZF9nZXRzcGVjaWZpY19wb3NpeD15ZXN9Ci1nbGliX2N2X3N5c19wdGhyZWFkX211dGV4X3RyeWxvY2tfcG9zaXg9JHtnbGliX2N2X3N5c19wdGhyZWFkX211dGV4X3RyeWxvY2tfcG9zaXg9eWVzfQotZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KLWdsaWJfY3ZfdmFfdmFsX2NvcHk9JHtnbGliX2N2X3ZhX3ZhbF9jb3B5PW5vfQotbmFub19jdl9mdW5jX3JlZ2V4ZWNfc2Vndl9lbXB0eXN0cj0ke25hbm9fY3ZfZnVuY19yZWdleGVjX3NlZ3ZfZW1wdHlzdHI9bm99Ci1zYW1iYV9jdl9IQVZFX1ZBX0NPUFk9JHtzYW1iYV9jdl9IQVZFX1ZBX0NPUFk9eWVzfQotc2NyZWVuX2N2X3N5c19iY29weV9vdmVybGFwPSR7c2NyZWVuX2N2X3N5c19iY29weV9vdmVybGFwPW5vfQotc2NyZWVuX2N2X3N5c19maWZvX2Jyb2tlbl9pbXBsPSR7c2NyZWVuX2N2X3N5c19maWZvX2Jyb2tlbl9pbXBsPXllc30KLXNjcmVlbl9jdl9zeXNfZmlmb191c2FibGU9JHtzY3JlZW5fY3Zfc3lzX2ZpZm9fdXNhYmxlPXllc30KLXNjcmVlbl9jdl9zeXNfbWVtY3B5X292ZXJsYXA9JHtzY3JlZW5fY3Zfc3lzX21lbWNweV9vdmVybGFwPW5vfQotc2NyZWVuX2N2X3N5c19tZW1tb3ZlX292ZXJsYXA9JHtzY3JlZW5fY3Zfc3lzX21lbW1vdmVfb3ZlcmxhcD1ub30KLXNjcmVlbl9jdl9zeXNfc2VsZWN0X2Jyb2tlbl9yZXR2YWw9JHtzY3JlZW5fY3Zfc3lzX3NlbGVjdF9icm9rZW5fcmV0dmFsPW5vfQotc2NyZWVuX2N2X3N5c19zb2NrZXRzX25vZnM9JHtzY3JlZW5fY3Zfc3lzX3NvY2tldHNfbm9mcz1ub30KLXNjcmVlbl9jdl9zeXNfc29ja2V0c191c2FibGU9JHtzY3JlZW5fY3Zfc3lzX3NvY2tldHNfdXNhYmxlPXllc30KLXNjcmVlbl9jdl9zeXNfdGVybWluZm9fdXNlZD0ke3NjcmVlbl9jdl9zeXNfdGVybWluZm9fdXNlZD15ZXN9Ci11dGlsc19jdl9zeXNfb3Blbl9tYXg9JHt1dGlsc19jdl9zeXNfb3Blbl9tYXg9MTAxNX0KLQotIyBnZXR0ZXh0Ci1hbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT0ke2FtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPXllc30KLQotIyBnbGliLTIuMAotZ2xpYl9jdl91c2VfcGlkX3N1cnJvZ2F0ZT0ke2dsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9eWVzfQotYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKLWFjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04Ci1hY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9OAotCi0jIGxpYmlkbAotbGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLQotIyBPUkJpdDIKLWFjX2N2X2FsaWdub2ZfQ09SQkFfYm9vbGVhbj0xCi1hY19jdl9hbGlnbm9mX0NPUkJBX2NoYXI9MQotYWNfY3ZfYWxpZ25vZl9DT1JCQV9kb3VibGU9NAotYWNfY3ZfYWxpZ25vZl9DT1JCQV9mbG9hdD00Ci1hY19jdl9hbGlnbm9mX0NPUkJBX2xvbmc9NAotYWNfY3ZfYWxpZ25vZl9DT1JCQV9sb25nX2RvdWJsZT04Ci1hY19jdl9hbGlnbm9mX0NPUkJBX2xvbmdfbG9uZz04Ci1hY19jdl9hbGlnbm9mX0NPUkJBX29jdGV0PTEKLWFjX2N2X2FsaWdub2ZfQ09SQkFfcG9pbnRlcj04Ci1hY19jdl9hbGlnbm9mX0NPUkJBX3Nob3J0PTIKLWFjX2N2X2FsaWdub2ZfQ09SQkFfc3RydWN0PTEKLWFjX2N2X2FsaWdub2ZfQ09SQkFfd2NoYXI9MgotCi0jIHN0YXJ0dXAtbm90aWZpY2F0aW9uCi1sZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotCi0jIGxmdHAKLWxmdHBfY3ZfdmFfdmFsX2NvcHk9JHtsZnRwX2N2X3ZhX3ZhbF9jb3B5PW5vfQotCi0jIHNscm4KLXNscm5fY3ZfdmFfdmFsX2NvcHk9JHtzbHJuX2N2X3ZhX3ZhbF9jb3B5PW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L29lLWluaXQtYnVpbGQtZW52IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L29lLWluaXQtYnVpbGQtZW52CmluZGV4IDVmZTY4ZDEuLmU4MTMyMzAgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9vZS1pbml0LWJ1aWxkLWVudgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvb2UtaW5pdC1idWlsZC1lbnYKQEAgLTU3LDExICs1NywzIEBACiAKIFsgLXogIiRCVUlMRERJUiIgXSB8fCBjZCAiJEJVSUxERElSIgogCi0jIFNodXRkb3duIGFueSBiaXRiYWtlIHNlcnZlciBpZiB0aGUgQkJTRVJWRVIgdmFyaWFibGUgaXMgbm90IHNldAotaWYgWyAteiAiJEJCU0VSVkVSIiBdICYmIFsgLWYgYml0YmFrZS5sb2NrIF07IHRoZW4KLSAgICBncmVwICI6IiBiaXRiYWtlLmxvY2sgPiAvZGV2L251bGwgJiYgQkJTRVJWRVI9JChjYXQgYml0YmFrZS5sb2NrKSBiaXRiYWtlIC0tc3RhdHVzLW9ubHkKLSAgICBpZiBbICQ/ID0gMCBdOyB0aGVuCi0gICAgICAgIGVjaG8gIlNodXR0aW5nIGRvd24gYml0YmFrZSBtZW1vcnkgcmVzaWRlbnQgc2VydmVyIHdpdGggYml0YmFrZSAtbSIKLSAgICAgICAgQkJTRVJWRVI9JChjYXQgYml0YmFrZS5sb2NrKSBiaXRiYWtlIC1tCi0gICAgZmkKLWZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L29lLWluaXQtYnVpbGQtZW52LW1lbXJlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWUxNDI1ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotIyEvYmluL3NoCi0KLSMgT0UgQnVpbGQgRW52aXJvbm1lbnQgU2V0dXAgU2NyaXB0Ci0jCi0jIENvcHlyaWdodCAoQykgMjAwNi0yMDExIExpbnV4IEZvdW5kYXRpb24KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQotCi0jCi0jIE5vcm1hbGx5IHRoaXMgaXMgY2FsbGVkIGFzICcuIC4vb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzIDxwb3J0bnVtYmVyPiA8YnVpbGRkaXI+JwotIwotIyBUaGlzIHdvcmtzIGluIG1vc3Qgc2hlbGxzIChub3QgZGFzaCksIGJ1dCBub3QgYWxsIG9mIHRoZW0gcGFzcyB0aGUgYXJndW1lbnRzCi0jIHdoZW4gYmVpbmcgc291cmNlZC4gIFRvIHdvcmthcm91bmQgdGhlIHNoZWxsIGxpbWl0YXRpb24gdXNlICJzZXQgPHBvcnRudW1iZXI+Ci0jIDxidWlsZGRpcj4iIHByaW9yIHRvIHNvdXJjaW5nIHRoaXMgc2NyaXB0LgotIwotaWYgWyAteiAiJDEiIF07IHRoZW4KLSAgICBlY2hvICJObyBwb3J0IHNwZWNpZmllZCwgdXNpbmcgZHluYW1pY2FsbHkgc2VsZWN0ZWQgcG9ydCIKLSAgICBwb3J0PS0xCi1lbHNlCi0gICAgcG9ydD0kMQotICAgIHNoaWZ0Ci1maQotCi1pZiBbIC1uICIkQkFTSF9TT1VSQ0UiIF07IHRoZW4KLSAgICBUSElTX1NDUklQVD0kQkFTSF9TT1VSQ0UKLWVsaWYgWyAtbiAiJFpTSF9OQU1FIiBdOyB0aGVuCi0gICAgVEhJU19TQ1JJUFQ9JDAKLWVsc2UKLSAgICBUSElTX1NDUklQVD0iJChwd2QpL29lLWluaXQtYnVpbGQtZW52IgotZmkKLWlmIFsgLW4gIiRCQlNFUlZFUiIgXTsgdGhlbgotICAgIHVuc2V0IEJCU0VSVkVSCi1maQotCi1pZiBbIC16ICIkWlNIX05BTUUiIF0gJiYgWyAiJDAiID0gIiRUSElTX1NDUklQVCIgXTsgdGhlbgotICAgIGVjaG8gIkVycm9yOiBUaGlzIHNjcmlwdCBuZWVkcyB0byBiZSBzb3VyY2VkLiBQbGVhc2UgcnVuIGFzICcuICRUSElTX1NDUklQVCciCi0gICAgZXhpdCAxCi1maQotCi1pZiBbIC16ICIkT0VST09UIiBdOyB0aGVuCi0gICAgT0VST09UPSQoZGlybmFtZSAiJFRISVNfU0NSSVBUIikKLSAgICBPRVJPT1Q9JChyZWFkbGluayAtZiAiJE9FUk9PVCIpCi1maQotdW5zZXQgVEhJU19TQ1JJUFQKLQotZXhwb3J0IE9FUk9PVAotLiAkT0VST09UL3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwgJiYKLSAgICBURU1QTEFURUNPTkY9IiRURU1QTEFURUNPTkYiICRPRVJPT1Qvc2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpciB8fCB7Ci0gICAgdW5zZXQgT0VST09UCi0gICAgcmV0dXJuIDEKLX0KLXVuc2V0IE9FUk9PVAotCi1bIC16ICIkQlVJTERESVIiIF0gfHwgY2QgIiRCVUlMRERJUiIKLQotcmVzPTEKLWlmIFsgLWUgYml0YmFrZS5sb2NrIF0gJiYgZ3JlcCA6IGJpdGJha2UubG9jayA+IC9kZXYvbnVsbDsgdGhlbgotICAgIEJCU0VSVkVSPSQoY2F0IGJpdGJha2UubG9jaykgYml0YmFrZSAtLXN0YXR1cy1vbmx5Ci0gICAgcmVzPSQ/Ci1maQotCi1pZiBbICRyZXMgIT0gMCBdOyB0aGVuCi0gICAgYml0YmFrZSAtLXNlcnZlci1vbmx5IC10IHhtbHJwYyAtQiBsb2NhbGhvc3Q6JHBvcnQKLWZpCi0KLWlmIFsgJHBvcnQgPSAtMSBdOyB0aGVuCi0gICAgZXhwb3J0IEJCU0VSVkVSPWxvY2FsaG9zdDotMQotICAgIGVjaG8gIkJpdGJha2Ugc2VydmVyIHN0YXJ0ZWQgb24gZGVtYW5kIGFzIG5lZWRlZCwgdXNlIGJpdGJha2UgLW0gdG8gc2h1dCBpdCBkb3duIgotZWxzZQotICAgIGV4cG9ydCBCQlNFUlZFUj0kKGNhdCBiaXRiYWtlLmxvY2spCi0KLSAgICBpZiBbICRyZXMgPSAwIF07IHRoZW4KLSAgICAgICAgZWNobyAiVXNpbmcgZXhpc3RpbmcgYml0YmFrZSBzZXJ2ZXIgYXQ6ICRCQlNFUlZFUiwgdXNlIGJpdGJha2UgLW0gdG8gc2h1dCBpdCBkb3duIgotICAgIGVsc2UKLSAgICAgICAgZWNobyAiQml0YmFrZSBzZXJ2ZXIgc3RhcnRlZCBhdDogJEJCU0VSVkVSLCB1c2UgYml0YmFrZSAtbSB0byBzaHV0IGl0IGRvd24iCi0gICAgZmkKLWZpCi11bnNldCBwb3J0IHJlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRoaXN0b3J5LWRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZGhpc3RvcnktZGlmZgppbmRleCBkZDk3NDVlLi5lNzljYjdhIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZGhpc3RvcnktZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZGhpc3RvcnktZGlmZgpAQCAtNyw3ICs3LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCi1pbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBhcmdwYXJzZQogZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCiAKICMgRW5zdXJlIFB5dGhvbkdpdCBpcyBpbnN0YWxsZWQgKGJ1aWxkaGlzdG9yeV9hbmFseXNpcyBuZWVkcyBpdCkKQEAgLTE3LDQ3ICsxNyw3MCBAQAogICAgIHByaW50KCJQbGVhc2UgaW5zdGFsbCBHaXRQeXRob24gKHB5dGhvbjMtZ2l0KSAwLjMuNCBvciBsYXRlciBpbiBvcmRlciB0byB1c2UgdGhpcyBzY3JpcHQiKQogICAgIHN5cy5leGl0KDEpCiAKK2RlZiBnZXRfYXJnc19wYXJzZXIoKToKKyAgICBkZXNjcmlwdGlvbiA9ICJSZXBvcnRzIHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGluIHRoZSBidWlsZGhpc3RvcnkgcmVwb3NpdG9yeS4iCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZT0iIiIKKyAgICAlKHByb2cpcyBbb3B0aW9uc10gW2Zyb20tcmV2aXNpb24gW3RvLXJldmlzaW9uXV0KKyAgICAoaWYgbm90IHNwZWNpZmllZCwgZnJvbS1yZXZpc2lvbiBkZWZhdWx0cyB0byBidWlsZC1taW51cy0xLCBhbmQgdG8tcmV2aXNpb24gZGVmYXVsdHMgdG8gSEVBRCkiIiIpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcCcsICctLWJ1aWxkaGlzdG9yeS1kaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdidWlsZGhpc3RvcnlfZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J2J1aWxkaGlzdG9yeS8nLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iU3BlY2lmeSBwYXRoIHRvIGJ1aWxkaGlzdG9yeSBkaXJlY3RvcnkgKGRlZmF1bHRzIHRvIGJ1aWxkaGlzdG9yeS8gdW5kZXIgY3dkKSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS1yZXBvcnQtdmVyc2lvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVwb3J0X3ZlcicsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUmVwb3J0IGNoYW5nZXMgaW4gUEtHRS9QS0dWL1BLR1IgZXZlbiB3aGVuIHRoZSB2YWx1ZXMgYXJlIHN0aWxsIHRoZSBkZWZhdWx0IChQRS9QVi9QUikiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1hJywgJy0tcmVwb3J0LWFsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmVwb3J0X2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdGYWxzZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSZXBvcnQgYWxsIGNoYW5nZXMsIG5vdCBqdXN0IHRoZSBkZWZhdWx0IHNpZ25pZmljYW50IG9uZXMiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tLXNpZ25hdHVyZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NpZ3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJlcG9ydCBsaXN0IG9mIHNpZ25hdHVyZXMgZGlmZmVyaW5nIGluc3RlYWQgb2Ygb3V0cHV0IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctUycsICctLXNpZ25hdHVyZXMtd2l0aC1kaWZmJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzaWdzZGlmZicsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUmVwb3J0IG9uIGFjdHVhbCBzaWduYXR1cmUgZGlmZmVyZW5jZXMgaW5zdGVhZCBvZiBvdXRwdXQgKHJlcXVpcmVzIHNpZ25hdHVyZSBkYXRhIHRvIGhhdmUgYmVlbiBnZW5lcmF0ZWQsIGVpdGhlciBieSBydW5uaW5nIHRoZSBhY3R1YWwgdGFza3Mgb3IgdXNpbmcgYml0YmFrZSAtUykiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZXhjbHVkZS1wYXRoJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nYXBwZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkV4Y2x1ZGUgcGF0aCBmcm9tIHRoZSBvdXRwdXQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3JldmlzaW9ucycsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gWydidWlsZC1taW51cy0xJywgJ0hFQUQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hcmdzPScqJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCisgICAgcmV0dXJuIHBhcnNlcgorCiBkZWYgbWFpbigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigKLSAgICAgICAgZGVzY3JpcHRpb24gPSAiUmVwb3J0cyBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpbiB0aGUgYnVpbGRoaXN0b3J5IHJlcG9zaXRvcnkuIiwKLSAgICAgICAgdXNhZ2UgPSAiIiIKLSAgICAlcHJvZyBbb3B0aW9uc10gW2Zyb20tcmV2aXNpb24gW3RvLXJldmlzaW9uXV0KLShpZiBub3Qgc3BlY2lmaWVkLCBmcm9tLXJldmlzaW9uIGRlZmF1bHRzIHRvIGJ1aWxkLW1pbnVzLTEsIGFuZCB0by1yZXZpc2lvbiBkZWZhdWx0cyB0byBIRUFEKSIiIikKIAotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItcCIsICItLWJ1aWxkaGlzdG9yeS1kaXIiLAotICAgICAgICAgICAgaGVscCA9ICJTcGVjaWZ5IHBhdGggdG8gYnVpbGRoaXN0b3J5IGRpcmVjdG9yeSAoZGVmYXVsdHMgdG8gYnVpbGRoaXN0b3J5LyB1bmRlciBjd2QpIiwKLSAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJidWlsZGhpc3RvcnlfZGlyIiwgZGVmYXVsdD0nYnVpbGRoaXN0b3J5LycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi12IiwgIi0tcmVwb3J0LXZlcnNpb24iLAotICAgICAgICAgICAgaGVscCA9ICJSZXBvcnQgY2hhbmdlcyBpbiBQS0dFL1BLR1YvUEtHUiBldmVuIHdoZW4gdGhlIHZhbHVlcyBhcmUgc3RpbGwgdGhlIGRlZmF1bHQgKFBFL1BWL1BSKSIsCi0gICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJyZXBvcnRfdmVyIiwgZGVmYXVsdD1GYWxzZSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWEiLCAiLS1yZXBvcnQtYWxsIiwKLSAgICAgICAgICAgIGhlbHAgPSAiUmVwb3J0IGFsbCBjaGFuZ2VzLCBub3QganVzdCB0aGUgZGVmYXVsdCBzaWduaWZpY2FudCBvbmVzIiwKLSAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlcG9ydF9hbGwiLCBkZWZhdWx0PUZhbHNlKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItcyIsICItLXNpZ25hdHVyZXMiLAotICAgICAgICAgICAgaGVscCA9ICJSZXBvcnQgbGlzdCBvZiBzaWduYXR1cmVzIGRpZmZlcmluZyBpbnN0ZWFkIG9mIG91dHB1dCIsCi0gICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJzaWdzIiwgZGVmYXVsdD1GYWxzZSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLVMiLCAiLS1zaWduYXR1cmVzLXdpdGgtZGlmZiIsCi0gICAgICAgICAgICBoZWxwID0gIlJlcG9ydCBvbiBhY3R1YWwgc2lnbmF0dXJlIGRpZmZlcmVuY2VzIGluc3RlYWQgb2Ygb3V0cHV0IChyZXF1aXJlcyBzaWduYXR1cmUgZGF0YSB0byBoYXZlIGJlZW4gZ2VuZXJhdGVkLCBlaXRoZXIgYnkgcnVubmluZyB0aGUgYWN0dWFsIHRhc2tzIG9yIHVzaW5nIGJpdGJha2UgLVMpIiwKLSAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNpZ3NkaWZmIiwgZGVmYXVsdD1GYWxzZSkKLQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhzeXMuYXJndikKLQotICAgIGlmIGxlbihhcmdzKSA+IDM6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0ludmFsaWQgYXJndW1lbnQocykgc3BlY2lmaWVkOiAlc1xuXG4nICUgJyAnLmpvaW4oYXJnc1szOl0pKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHN5cy5leGl0KDEpCisgICAgcGFyc2VyID0gZ2V0X2FyZ3NfcGFyc2VyKCkKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgaWYgTG9vc2VWZXJzaW9uKGdpdC5fX3ZlcnNpb25fXykgPCAnMC4zLjEnOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJWZXJzaW9uIG9mIEdpdFB5dGhvbiBpcyB0b28gb2xkLCBwbGVhc2UgaW5zdGFsbCBHaXRQeXRob24gKHB5dGhvbi1naXQpIDAuMy4xIG9yIGxhdGVyIGluIG9yZGVyIHRvIHVzZSB0aGlzIHNjcmlwdFxuIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcHRpb25zLmJ1aWxkaGlzdG9yeV9kaXIpOgotICAgICAgICBpZiBvcHRpb25zLmJ1aWxkaGlzdG9yeV9kaXIgPT0gJ2J1aWxkaGlzdG9yeS8nOgorICAgIGlmIGxlbihhcmdzLnJldmlzaW9ucykgPiAyOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJbnZhbGlkIGFyZ3VtZW50KHMpIHNwZWNpZmllZDogJXNcblxuJyAlICcgJy5qb2luKGFyZ3MucmV2aXNpb25zWzI6XSkpCisgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKKworICAgICAgICBzeXMuZXhpdCgxKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhhcmdzLmJ1aWxkaGlzdG9yeV9kaXIpOgorICAgICAgICBpZiBhcmdzLmJ1aWxkaGlzdG9yeV9kaXIgPT0gJ2J1aWxkaGlzdG9yeS8nOgogICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoY3dkKSA9PSAnYnVpbGRoaXN0b3J5JzoKLSAgICAgICAgICAgICAgICBvcHRpb25zLmJ1aWxkaGlzdG9yeV9kaXIgPSBjd2QKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3B0aW9ucy5idWlsZGhpc3RvcnlfZGlyKToKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQnVpbGRoaXN0b3J5IGRpcmVjdG9yeSAiJXMiIGRvZXMgbm90IGV4aXN0XG5cbicgJSBvcHRpb25zLmJ1aWxkaGlzdG9yeV9kaXIpCisgICAgICAgICAgICAgICAgYXJncy5idWlsZGhpc3RvcnlfZGlyID0gY3dkCisKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYXJncy5idWlsZGhpc3RvcnlfZGlyKToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQnVpbGRoaXN0b3J5IGRpcmVjdG9yeSAiJXMiIGRvZXMgbm90IGV4aXN0XG5cbicgJSBhcmdzLmJ1aWxkaGlzdG9yeV9kaXIpCiAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICAgc3lzLmV4aXQoMSkKIApAQCAtNzEsMzAgKzk0LDI5IEBACiAgICAgc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQogICAgICMgU2V0IHBhdGggdG8gYml0YmFrZSBsaWIgZGlyIHNvIHRoZSBidWlsZGhpc3RvcnlfYW5hbHlzaXMgbW9kdWxlIGNhbiBsb2FkIGJiLnV0aWxzCiAgICAgYml0YmFrZXBhdGggPSBzY3JpcHRwYXRoLmFkZF9iaXRiYWtlX2xpYl9wYXRoKCkKKwogICAgIGlmIG5vdCBiaXRiYWtlcGF0aDoKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiVW5hYmxlIHRvIGZpbmQgYml0YmFrZSBieSBzZWFyY2hpbmcgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGlzIHNjcmlwdCBvciBQQVRIXG4iKQogICAgICAgICBzeXMuZXhpdCgxKQogCi0gICAgaW1wb3J0IG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcwotCi0gICAgZnJvbXJldiA9ICdidWlsZC1taW51cy0xJwotICAgIHRvcmV2ID0gJ0hFQUQnCi0gICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDIgYW5kICcuLicgaW4gYXJnc1sxXToKLSAgICAgICAgICAgIHJldnMgPSBhcmdzWzFdLnNwbGl0KCcuLicpCi0gICAgICAgICAgICBmcm9tcmV2ID0gcmV2c1swXQotICAgICAgICAgICAgaWYgcmV2c1sxXToKLSAgICAgICAgICAgICAgICB0b3JldiA9IHJldnNbMV0KKyAgICBpZiBsZW4oYXJncy5yZXZpc2lvbnMpID09IDE6CisgICAgICAgIGlmICcuLicgIGluIGFyZ3MucmV2aXNpb25zWzBdOgorICAgICAgICAgICAgZnJvbXJldiwgdG9yZXYgPSBhcmdzLnJldmlzaW9uc1swXS5zcGxpdCgnLi4nKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJvbXJldiA9IGFyZ3NbMV0KLSAgICBpZiBsZW4oYXJncykgPiAyOgotICAgICAgICB0b3JldiA9IGFyZ3NbMl0KKyAgICAgICAgICAgIGZyb21yZXYsIHRvcmV2ID0gYXJncy5yZXZpc2lvbnNbMF0sICdIRUFEJworICAgIGVsaWYgbGVuKGFyZ3MucmV2aXNpb25zKSA9PSAyOgorICAgICAgICBmcm9tcmV2LCB0b3JldiA9IGFyZ3MucmV2aXNpb25zCisKKyAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgcHJvY2Vzc19jaGFuZ2VzCiAKICAgICBpbXBvcnQgZ2l0ZGIKKwogICAgIHRyeToKLSAgICAgICAgY2hhbmdlcyA9IG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcy5wcm9jZXNzX2NoYW5nZXMob3B0aW9ucy5idWlsZGhpc3RvcnlfZGlyLCBmcm9tcmV2LCB0b3Jldiwgb3B0aW9ucy5yZXBvcnRfYWxsLCBvcHRpb25zLnJlcG9ydF92ZXIsIG9wdGlvbnMuc2lncywgb3B0aW9ucy5zaWdzZGlmZikKKyAgICAgICAgY2hhbmdlcyA9IHByb2Nlc3NfY2hhbmdlcyhhcmdzLmJ1aWxkaGlzdG9yeV9kaXIsIGZyb21yZXYsIHRvcmV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucmVwb3J0X2FsbCwgYXJncy5yZXBvcnRfdmVyLCBhcmdzLnNpZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5zaWdzZGlmZiwgYXJncy5leGNsdWRlX3BhdGgpCiAgICAgZXhjZXB0IGdpdGRiLmV4Yy5CYWRPYmplY3QgYXMgZToKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDE6CisgICAgICAgIGlmIG5vdCBhcmdzLnJldmlzaW9uczoKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlVuYWJsZSB0byBmaW5kIHByZXZpb3VzIGJ1aWxkIHJldmlzaW9uIGluIGJ1aWxkaGlzdG9yeSByZXBvc2l0b3J5XG5cbiIpCiAgICAgICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCiAgICAgICAgIGVsc2U6CkBAIC0xMDIsMTAgKzEyNCwxMSBAQAogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgZm9yIGNoZyBpbiBjaGFuZ2VzOgotICAgICAgICBwcmludCgnJXMnICUgY2hnKQorICAgICAgICBvdXQgPSBzdHIoY2hnKQorICAgICAgICBpZiBvdXQ6CisgICAgICAgICAgICBwcmludChvdXQpCiAKICAgICBzeXMuZXhpdCgwKQogCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZHN0YXRzLWRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9idWlsZHN0YXRzLWRpZmYKaW5kZXggYWRlYmE0NC4uYTEyOGRkMyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRzdGF0cy1kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2J1aWxkc3RhdHMtZGlmZgpAQCAtMTUsMTUgKzE1LDE4IEBACiAjCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBnbG9iCi1pbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBtYXRoCiBpbXBvcnQgb3MKLWltcG9ydCByZQogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSBvcGVyYXRvciBpbXBvcnQgYXR0cmdldHRlcgogCisjIEltcG9ydCBvZSBsaWJzCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCitzeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKHNjcmlwdHNfcGF0aCwgJ2xpYicpKQorZnJvbSBidWlsZHN0YXRzIGltcG9ydCBCdWlsZFN0YXRzLCBkaWZmX2J1aWxkc3RhdHMsIHRhc2tkaWZmX2ZpZWxkcywgQlNWZXJEaWZmCisKKwogIyBTZXR1cCBsb2dnaW5nCiBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTywgZm9ybWF0PSIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpCiBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigpCkBAIC0zNCwxODAgKzM3LDE2IEBACiAgICAgcGFzcwogCiAKLXRhc2tkaWZmX2ZpZWxkcyA9ICgncGtnJywgJ3BrZ19vcCcsICd0YXNrJywgJ3Rhc2tfb3AnLCAndmFsdWUxJywgJ3ZhbHVlMicsCi0gICAgICAgICAgICAgICAgICAgJ2Fic2RpZmYnLCAncmVsZGlmZicpCi1UYXNrRGlmZiA9IG5hbWVkdHVwbGUoJ1Rhc2tEaWZmJywgJyAnLmpvaW4odGFza2RpZmZfZmllbGRzKSkKLQotCi1jbGFzcyBCU1Rhc2soZGljdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGZbJ3N0YXJ0X3RpbWUnXSA9IE5vbmUKLSAgICAgICAgc2VsZlsnZWxhcHNlZF90aW1lJ10gPSBOb25lCi0gICAgICAgIHNlbGZbJ3N0YXR1cyddID0gTm9uZQotICAgICAgICBzZWxmWydpb3N0YXQnXSA9IHt9Ci0gICAgICAgIHNlbGZbJ3J1c2FnZSddID0ge30KLSAgICAgICAgc2VsZlsnY2hpbGRfcnVzYWdlJ10gPSB7fQotICAgICAgICBzdXBlcihCU1Rhc2ssIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBjcHV0aW1lKHNlbGYpOgotICAgICAgICAiIiJTdW0gb2YgdXNlciBhbmQgc3lzdGVtIHRpbWUgdGFrZW4gYnkgdGhlIHRhc2siIiIKLSAgICAgICAgcmV0dXJuIHNlbGZbJ3J1c2FnZSddWydydV9zdGltZSddICsgc2VsZlsncnVzYWdlJ11bJ3J1X3V0aW1lJ10gKyBcCi0gICAgICAgICAgICAgICBzZWxmWydjaGlsZF9ydXNhZ2UnXVsncnVfc3RpbWUnXSArIHNlbGZbJ2NoaWxkX3J1c2FnZSddWydydV91dGltZSddCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgd2FsbHRpbWUoc2VsZik6Ci0gICAgICAgICIiIkVsYXBzZWQgd2FsbCBjbG9jayB0aW1lIiIiCi0gICAgICAgIHJldHVybiBzZWxmWydlbGFwc2VkX3RpbWUnXQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHJlYWRfYnl0ZXMoc2VsZik6Ci0gICAgICAgICIiIkJ5dGVzIHJlYWQgZnJvbSB0aGUgYmxvY2sgbGF5ZXIiIiIKLSAgICAgICAgcmV0dXJuIHNlbGZbJ2lvc3RhdCddWydyZWFkX2J5dGVzJ10KLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiB3cml0ZV9ieXRlcyhzZWxmKToKLSAgICAgICAgIiIiQnl0ZXMgd3JpdHRlbiB0byB0aGUgYmxvY2sgbGF5ZXIiIiIKLSAgICAgICAgcmV0dXJuIHNlbGZbJ2lvc3RhdCddWyd3cml0ZV9ieXRlcyddCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgcmVhZF9vcHMoc2VsZik6Ci0gICAgICAgICIiIk51bWJlciBvZiByZWFkIG9wZXJhdGlvbnMgb24gdGhlIGJsb2NrIGxheWVyIiIiCi0gICAgICAgIHJldHVybiBzZWxmWydydXNhZ2UnXVsncnVfaW5ibG9jayddICsgc2VsZlsnY2hpbGRfcnVzYWdlJ11bJ3J1X2luYmxvY2snXQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHdyaXRlX29wcyhzZWxmKToKLSAgICAgICAgIiIiTnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgb24gdGhlIGJsb2NrIGxheWVyIiIiCi0gICAgICAgIHJldHVybiBzZWxmWydydXNhZ2UnXVsncnVfb3VibG9jayddICsgc2VsZlsnY2hpbGRfcnVzYWdlJ11bJ3J1X291YmxvY2snXQotCi0KLWRlZiByZWFkX2J1aWxkc3RhdHNfZmlsZShidWlsZHN0YXRfZmlsZSk6Ci0gICAgIiIiQ29udmVydCBidWlsZHN0YXQgdGV4dCBmaWxlIGludG8gZGljdC9qc29uIiIiCi0gICAgYnNfdGFzayA9IEJTVGFzaygpCi0gICAgbG9nLmRlYnVnKCJSZWFkaW5nIHRhc2sgYnVpbGRzdGF0cyBmcm9tICVzIiwgYnVpbGRzdGF0X2ZpbGUpCi0gICAgd2l0aCBvcGVuKGJ1aWxkc3RhdF9maWxlKSBhcyBmb2JqOgotICAgICAgICBmb3IgbGluZSBpbiBmb2JqLnJlYWRsaW5lcygpOgotICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnNwbGl0KCc6JywgMSkKLSAgICAgICAgICAgIHZhbCA9IHZhbC5zdHJpcCgpCi0gICAgICAgICAgICBpZiBrZXkgPT0gJ1N0YXJ0ZWQnOgotICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBmbG9hdCh2YWwpCi0gICAgICAgICAgICAgICAgYnNfdGFza1snc3RhcnRfdGltZSddID0gc3RhcnRfdGltZQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ0VuZGVkJzoKLSAgICAgICAgICAgICAgICBlbmRfdGltZSA9IGZsb2F0KHZhbCkKLSAgICAgICAgICAgIGVsaWYga2V5LnN0YXJ0c3dpdGgoJ0lPICcpOgotICAgICAgICAgICAgICAgIHNwbGl0ID0ga2V5LnNwbGl0KCkKLSAgICAgICAgICAgICAgICBic190YXNrWydpb3N0YXQnXVtzcGxpdFsxXV0gPSBpbnQodmFsKQotICAgICAgICAgICAgZWxpZiBrZXkuZmluZCgncnVzYWdlJykgPj0gMDoKLSAgICAgICAgICAgICAgICBzcGxpdCA9IGtleS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgcnVfa2V5ID0gc3BsaXRbLTFdCi0gICAgICAgICAgICAgICAgaWYgcnVfa2V5IGluICgncnVfc3RpbWUnLCAncnVfdXRpbWUnKToKLSAgICAgICAgICAgICAgICAgICAgdmFsID0gZmxvYXQodmFsKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHZhbCA9IGludCh2YWwpCi0gICAgICAgICAgICAgICAgcnVfdHlwZSA9ICdydXNhZ2UnIGlmIHNwbGl0WzBdID09ICdydXNhZ2UnIGVsc2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGRfcnVzYWdlJwotICAgICAgICAgICAgICAgIGJzX3Rhc2tbcnVfdHlwZV1bcnVfa2V5XSA9IHZhbAotICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ1N0YXR1cyc6Ci0gICAgICAgICAgICAgICAgYnNfdGFza1snc3RhdHVzJ10gPSB2YWwKLSAgICBic190YXNrWydlbGFwc2VkX3RpbWUnXSA9IGVuZF90aW1lIC0gc3RhcnRfdGltZQotICAgIHJldHVybiBic190YXNrCi0KLQotZGVmIHJlYWRfYnVpbGRzdGF0c19kaXIoYnNfZGlyKToKLSAgICAiIiJSZWFkIGJ1aWxkc3RhdHMgZGlyZWN0b3J5IiIiCi0gICAgZGVmIHNwbGl0X25ldnIobmV2cik6Ci0gICAgICAgICIiIlNwbGl0IG5hbWUgYW5kIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSByZWNpcGUgIm5ldnIiIHN0cmluZyIiIgotICAgICAgICBuX2VfdiwgcmV2aXNpb24gPSBuZXZyLnJzcGxpdCgnLScsIDEpCi0gICAgICAgIG1hdGNoID0gcmUubWF0Y2gocideKD9QPG5hbWU+XFMrKS0oKD9QPGVwb2NoPlswLTldezEsNX0pXyk/KD9QPHZlcnNpb24+WzAtOV1cUyopJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbl9lX3YpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAgICMgSWYgd2UncmUgbm90IGFibGUgdG8gcGFyc2UgYSB2ZXJzaW9uIHN0YXJ0aW5nIHdpdGggYSBudW1iZXIsIGp1c3QKLSAgICAgICAgICAgICMgdGFrZSB0aGUgcGFydCBhZnRlciBsYXN0IGRhc2gKLSAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocideKD9QPG5hbWU+XFMrKS0oKD9QPGVwb2NoPlswLTldezEsNX0pXyk/KD9QPHZlcnNpb24+W14tXSspJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fZV92KQotICAgICAgICBuYW1lID0gbWF0Y2guZ3JvdXAoJ25hbWUnKQotICAgICAgICB2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoJ3ZlcnNpb24nKQotICAgICAgICBlcG9jaCA9IG1hdGNoLmdyb3VwKCdlcG9jaCcpCi0gICAgICAgIHJldHVybiBuYW1lLCBlcG9jaCwgdmVyc2lvbiwgcmV2aXNpb24KLQotICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oYnNfZGlyLCAnYnVpbGRfc3RhdHMnKSk6Ci0gICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJ7fSBkb2VzIG5vdCBsb29rIGxpa2UgYSBidWlsZHN0YXRzIGRpcmVjdG9yeSIuZm9ybWF0KGJzX2RpcikpCi0KLSAgICBsb2cuZGVidWcoIlJlYWRpbmcgYnVpbGRzdGF0cyBkaXJlY3RvcnkgJXMiLCBic19kaXIpCi0KLSAgICBidWlsZHN0YXRzID0ge30KLSAgICBzdWJkaXJzID0gb3MubGlzdGRpcihic19kaXIpCi0gICAgZm9yIGRpcm5hbWUgaW4gc3ViZGlyczoKLSAgICAgICAgcmVjaXBlX2RpciA9IG9zLnBhdGguam9pbihic19kaXIsIGRpcm5hbWUpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHJlY2lwZV9kaXIpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgbmFtZSwgZXBvY2gsIHZlcnNpb24sIHJldmlzaW9uID0gc3BsaXRfbmV2cihkaXJuYW1lKQotICAgICAgICByZWNpcGVfYnMgPSB7J25ldnInOiBkaXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgJ2Vwb2NoJzogZXBvY2gsCi0gICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6IHZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAncmV2aXNpb24nOiByZXZpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICd0YXNrcyc6IHt9fQotICAgICAgICBmb3IgdGFzayBpbiBvcy5saXN0ZGlyKHJlY2lwZV9kaXIpOgotICAgICAgICAgICAgcmVjaXBlX2JzWyd0YXNrcyddW3Rhc2tdID0gW3JlYWRfYnVpbGRzdGF0c19maWxlKAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmVjaXBlX2RpciwgdGFzaykpXQotICAgICAgICBpZiBuYW1lIGluIGJ1aWxkc3RhdHM6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiQ2Fubm90IGhhbmRsZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgc2FtZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2FnZSAoe30pIi5mb3JtYXQobmFtZSkpCi0gICAgICAgIGJ1aWxkc3RhdHNbbmFtZV0gPSByZWNpcGVfYnMKLQotICAgIHJldHVybiBidWlsZHN0YXRzCi0KLQotZGVmIGJzX2FwcGVuZChkc3QsIHNyYyk6Ci0gICAgIiIiQXBwZW5kIGRhdGEgZnJvbSBhbm90aGVyIGJ1aWxkc3RhdHMiIiIKLSAgICBpZiBzZXQoZHN0LmtleXMoKSkgIT0gc2V0KHNyYy5rZXlzKCkpOgotICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiUmVmdXNpbmcgdG8gam9pbiBidWlsZHN0YXRzLCBzZXQgb2YgcGFja2FnZXMgaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyZW50IikKLSAgICBmb3IgcGtnLCBkYXRhIGluIGRzdC5pdGVtcygpOgotICAgICAgICBpZiBkYXRhWyduZXZyJ10gIT0gc3JjW3BrZ11bJ25ldnInXToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJSZWZ1c2luZyB0byBqb2luIGJ1aWxkc3RhdHMsIHBhY2thZ2UgdmVyc2lvbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyczoge30gdnMuIHt9Ii5mb3JtYXQoZGF0YVsnbmV2ciddLCBzcmNbcGtnXVsnbmV2ciddKSkKLSAgICAgICAgaWYgc2V0KGRhdGFbJ3Rhc2tzJ10ua2V5cygpKSAhPSBzZXQoc3JjW3BrZ11bJ3Rhc2tzJ10ua2V5cygpKToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJSZWZ1c2luZyB0byBqb2luIGJ1aWxkc3RhdHMsIHNldCBvZiB0YXNrcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4ge30gZGlmZmVyIi5mb3JtYXQocGtnKSkKLSAgICAgICAgZm9yIHRhc2tuYW1lLCB0YXNrZGF0YSBpbiBkYXRhWyd0YXNrcyddLml0ZW1zKCk6Ci0gICAgICAgICAgICB0YXNrZGF0YS5leHRlbmQoc3JjW3BrZ11bJ3Rhc2tzJ11bdGFza25hbWVdKQotCi0KLWRlZiByZWFkX2J1aWxkc3RhdHNfanNvbihwYXRoKToKLSAgICAiIiJSZWFkIGJ1aWxkc3RhdHMgZnJvbSBKU09OIGZpbGUiIiIKLSAgICBidWlsZHN0YXRzID0ge30KLSAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZm9iajoKLSAgICAgICAgYnNfanNvbiA9IGpzb24ubG9hZChmb2JqKQotICAgIGZvciByZWNpcGVfYnMgaW4gYnNfanNvbjoKLSAgICAgICAgaWYgcmVjaXBlX2JzWyduYW1lJ10gaW4gYnVpbGRzdGF0czoKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJDYW5ub3QgaGFuZGxlIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlICh7fSkiLmZvcm1hdChyZWNpcGVfYnNbJ25hbWUnXSkpCi0KLSAgICAgICAgaWYgcmVjaXBlX2JzWydlcG9jaCddIGlzIE5vbmU6Ci0gICAgICAgICAgICByZWNpcGVfYnNbJ25ldnInXSA9ICJ7fS17fS17fSIuZm9ybWF0KHJlY2lwZV9ic1snbmFtZSddLCByZWNpcGVfYnNbJ3ZlcnNpb24nXSwgcmVjaXBlX2JzWydyZXZpc2lvbiddKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVjaXBlX2JzWyduZXZyJ10gPSAie30te31fe30te30iLmZvcm1hdChyZWNpcGVfYnNbJ25hbWUnXSwgcmVjaXBlX2JzWydlcG9jaCddLCByZWNpcGVfYnNbJ3ZlcnNpb24nXSwgcmVjaXBlX2JzWydyZXZpc2lvbiddKQotCi0gICAgICAgIGZvciB0YXNrLCBkYXRhIGluIHJlY2lwZV9ic1sndGFza3MnXS5jb3B5KCkuaXRlbXMoKToKLSAgICAgICAgICAgIHJlY2lwZV9ic1sndGFza3MnXVt0YXNrXSA9IFtCU1Rhc2soZGF0YSldCi0KLSAgICAgICAgYnVpbGRzdGF0c1tyZWNpcGVfYnNbJ25hbWUnXV0gPSByZWNpcGVfYnMKLQotICAgIHJldHVybiBidWlsZHN0YXRzCi0KLQogZGVmIHJlYWRfYnVpbGRzdGF0cyhwYXRoLCBtdWx0aSk6CiAgICAgIiIiUmVhZCBidWlsZHN0YXRzIiIiCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeToge30iLmZvcm1hdChwYXRoKSkKIAogICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgotICAgICAgICByZXR1cm4gcmVhZF9idWlsZHN0YXRzX2pzb24ocGF0aCkKKyAgICAgICAgcmV0dXJuIEJ1aWxkU3RhdHMuZnJvbV9maWxlX2pzb24ocGF0aCkKIAogICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihwYXRoLCAnYnVpbGRfc3RhdHMnKSk6Ci0gICAgICAgIHJldHVybiByZWFkX2J1aWxkc3RhdHNfZGlyKHBhdGgpCisgICAgICAgIHJldHVybiBCdWlsZFN0YXRzLmZyb21fZGlyKHBhdGgpCiAKICAgICAjIEhhbmRsZSBhIG5vbi1idWlsZHN0YXQgZGlyZWN0b3J5CiAgICAgc3VicGF0aHMgPSBzb3J0ZWQoZ2xvYi5nbG9iKHBhdGggKyAnLyonKSkKQEAgLTIyMiw4OCArNjEsNjMgQEAKICAgICBicyA9IE5vbmUKICAgICBmb3Igc3VicGF0aCBpbiBzdWJwYXRoczoKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc3VicGF0aCk6Ci0gICAgICAgICAgICB0bXBicyA9IHJlYWRfYnVpbGRzdGF0c19qc29uKHN1YnBhdGgpCisgICAgICAgICAgICBfYnMgPSBCdWlsZFN0YXRzLmZyb21fZmlsZV9qc29uKHN1YnBhdGgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0bXBicyA9IHJlYWRfYnVpbGRzdGF0c19kaXIoc3VicGF0aCkKLSAgICAgICAgaWYgbm90IGJzOgotICAgICAgICAgICAgYnMgPSB0bXBicworICAgICAgICAgICAgX2JzID0gQnVpbGRTdGF0cy5mcm9tX2RpcihzdWJwYXRoKQorICAgICAgICBpZiBicyBpcyBOb25lOgorICAgICAgICAgICAgYnMgPSBfYnMKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZy5kZWJ1ZygiSm9pbmluZyBidWlsZHN0YXRzIikKLSAgICAgICAgICAgIGJzX2FwcGVuZChicywgdG1wYnMpCi0KKyAgICAgICAgICAgIGJzLmFnZ3JlZ2F0ZShfYnMpCiAgICAgaWYgbm90IGJzOgogICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiTm8gYnVpbGRzdGF0cyBmb3VuZCB1bmRlciB7fSIuZm9ybWF0KHBhdGgpKQorCiAgICAgcmV0dXJuIGJzCiAKIAogZGVmIHByaW50X3Zlcl9kaWZmKGJzMSwgYnMyKToKICAgICAiIiJQcmludCBwYWNrYWdlIHZlcnNpb24gZGlmZmVyZW5jZXMiIiIKLSAgICBwa2dzMSA9IHNldChiczEua2V5cygpKQotICAgIHBrZ3MyID0gc2V0KGJzMi5rZXlzKCkpCi0gICAgbmV3X3BrZ3MgPSBwa2dzMiAtIHBrZ3MxCi0gICAgZGVsZXRlZF9wa2dzID0gcGtnczEgLSBwa2dzMgogCi0gICAgZWNoYW5nZWQgPSBbXQotICAgIHZjaGFuZ2VkID0gW10KLSAgICByY2hhbmdlZCA9IFtdCi0gICAgdW5jaGFuZ2VkID0gW10KLSAgICBjb21tb25fcGtncyA9IHBrZ3MyLmludGVyc2VjdGlvbihwa2dzMSkKLSAgICBpZiBjb21tb25fcGtnczoKLSAgICAgICAgZm9yIHBrZyBpbiBjb21tb25fcGtnczoKLSAgICAgICAgICAgIGlmIGJzMVtwa2ddWydlcG9jaCddICE9IGJzMltwa2ddWydlcG9jaCddOgotICAgICAgICAgICAgICAgIGVjaGFuZ2VkLmFwcGVuZChwa2cpCi0gICAgICAgICAgICBlbGlmIGJzMVtwa2ddWyd2ZXJzaW9uJ10gIT0gYnMyW3BrZ11bJ3ZlcnNpb24nXToKLSAgICAgICAgICAgICAgICB2Y2hhbmdlZC5hcHBlbmQocGtnKQotICAgICAgICAgICAgZWxpZiBiczFbcGtnXVsncmV2aXNpb24nXSAhPSBiczJbcGtnXVsncmV2aXNpb24nXToKLSAgICAgICAgICAgICAgICByY2hhbmdlZC5hcHBlbmQocGtnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB1bmNoYW5nZWQuYXBwZW5kKHBrZykKKyAgICBkaWZmID0gQlNWZXJEaWZmKGJzMSwgYnMyKQogCi0gICAgbWF4bGVuID0gbWF4KFtsZW4ocGtnKSBmb3IgcGtnIGluIHBrZ3MxLnVuaW9uKHBrZ3MyKV0pCisgICAgbWF4bGVuID0gbWF4KFtsZW4ocikgZm9yIHIgaW4gc2V0KGJzMS5rZXlzKCkpLnVuaW9uKHNldChiczIua2V5cygpKSldKQogICAgIGZtdF9zdHIgPSAiICB7OnttYXhsZW59fSAoe30pIgotIyAgICBpZiB1bmNoYW5nZWQ6Ci0jICAgICAgICBwcmludCgiXG5VTkNIQU5HRUQgUEFDS0FHRVM6IikKLSMgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tIikKLSMgICAgICAgIG1heGxlbiA9IG1heChbbGVuKHBrZykgZm9yIHBrZyBpbiB1bmNoYW5nZWRdKQotIyAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQodW5jaGFuZ2VkKToKLSMgICAgICAgICAgICBwcmludChmbXRfc3RyLmZvcm1hdChwa2csIGJzMltwa2ddWyduZXZyJ10sIG1heGxlbj1tYXhsZW4pKQogCi0gICAgaWYgbmV3X3BrZ3M6Ci0gICAgICAgIHByaW50KCJcbk5FVyBQQUNLQUdFUzoiKQotICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLSIpCi0gICAgICAgIGZvciBwa2cgaW4gc29ydGVkKG5ld19wa2dzKToKLSAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KHBrZywgYnMyW3BrZ11bJ25ldnInXSwgbWF4bGVuPW1heGxlbikpCisgICAgaWYgZGlmZi5uZXc6CisgICAgICAgIHByaW50KCJcbk5FVyBSRUNJUEVTOiIpCisgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0iKQorICAgICAgICBmb3IgbmFtZSwgdmFsIGluIHNvcnRlZChkaWZmLm5ldy5pdGVtcygpKToKKyAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KG5hbWUsIHZhbC5uZXZyLCBtYXhsZW49bWF4bGVuKSkKIAotICAgIGlmIGRlbGV0ZWRfcGtnczoKLSAgICAgICAgcHJpbnQoIlxuREVMRVRFRCBQQUNLQUdFUzoiKQotICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLS0iKQotICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChkZWxldGVkX3BrZ3MpOgotICAgICAgICAgICAgcHJpbnQoZm10X3N0ci5mb3JtYXQocGtnLCBiczFbcGtnXVsnbmV2ciddLCBtYXhsZW49bWF4bGVuKSkKKyAgICBpZiBkaWZmLmRyb3BwZWQ6CisgICAgICAgIHByaW50KCJcbkRST1BQRUQgUkVDSVBFUzoiKQorICAgICAgICBwcmludCgiLS0tLS0tLS0tLS0tLS0tLSIpCisgICAgICAgIGZvciBuYW1lLCB2YWwgaW4gc29ydGVkKGRpZmYuZHJvcHBlZC5pdGVtcygpKToKKyAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KG5hbWUsIHZhbC5uZXZyLCBtYXhsZW49bWF4bGVuKSkKIAogICAgIGZtdF9zdHIgPSAiICB7MDp7bWF4bGVufX0gezE6PDIwfSAgICAoezJ9KSIKLSAgICBpZiByY2hhbmdlZDoKKyAgICBpZiBkaWZmLnJjaGFuZ2VkOgogICAgICAgICBwcmludCgiXG5SRVZJU0lPTiBDSEFOR0VEOiIpCiAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLSIpCi0gICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHJjaGFuZ2VkKToKLSAgICAgICAgICAgIGZpZWxkMSA9ICJ7fSAtPiB7fSIuZm9ybWF0KHBrZywgYnMxW3BrZ11bJ3JldmlzaW9uJ10sIGJzMltwa2ddWydyZXZpc2lvbiddKQotICAgICAgICAgICAgZmllbGQyID0gInt9IC0+IHt9Ii5mb3JtYXQoYnMxW3BrZ11bJ25ldnInXSwgYnMyW3BrZ11bJ25ldnInXSkKLSAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KHBrZywgZmllbGQxLCBmaWVsZDIsIG1heGxlbj1tYXhsZW4pKQorICAgICAgICBmb3IgbmFtZSwgdmFsIGluIHNvcnRlZChkaWZmLnJjaGFuZ2VkLml0ZW1zKCkpOgorICAgICAgICAgICAgZmllbGQxID0gInt9IC0+IHt9Ii5mb3JtYXQodmFsLmxlZnQucmV2aXNpb24sIHZhbC5yaWdodC5yZXZpc2lvbikKKyAgICAgICAgICAgIGZpZWxkMiA9ICJ7fSAtPiB7fSIuZm9ybWF0KHZhbC5sZWZ0Lm5ldnIsIHZhbC5yaWdodC5uZXZyKQorICAgICAgICAgICAgcHJpbnQoZm10X3N0ci5mb3JtYXQobmFtZSwgZmllbGQxLCBmaWVsZDIsIG1heGxlbj1tYXhsZW4pKQogCi0gICAgaWYgdmNoYW5nZWQ6CisgICAgaWYgZGlmZi52Y2hhbmdlZDoKICAgICAgICAgcHJpbnQoIlxuVkVSU0lPTiBDSEFOR0VEOiIpCiAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tIikKLSAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQodmNoYW5nZWQpOgotICAgICAgICAgICAgZmllbGQxID0gInt9IC0+IHt9Ii5mb3JtYXQoYnMxW3BrZ11bJ3ZlcnNpb24nXSwgYnMyW3BrZ11bJ3ZlcnNpb24nXSkKLSAgICAgICAgICAgIGZpZWxkMiA9ICJ7fSAtPiB7fSIuZm9ybWF0KGJzMVtwa2ddWyduZXZyJ10sIGJzMltwa2ddWyduZXZyJ10pCi0gICAgICAgICAgICBwcmludChmbXRfc3RyLmZvcm1hdChwa2csIGZpZWxkMSwgZmllbGQyLCBtYXhsZW49bWF4bGVuKSkKKyAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBzb3J0ZWQoZGlmZi52Y2hhbmdlZC5pdGVtcygpKToKKyAgICAgICAgICAgIGZpZWxkMSA9ICJ7fSAtPiB7fSIuZm9ybWF0KHZhbC5sZWZ0LnZlcnNpb24sIHZhbC5yaWdodC52ZXJzaW9uKQorICAgICAgICAgICAgZmllbGQyID0gInt9IC0+IHt9Ii5mb3JtYXQodmFsLmxlZnQubmV2ciwgdmFsLnJpZ2h0Lm5ldnIpCisgICAgICAgICAgICBwcmludChmbXRfc3RyLmZvcm1hdChuYW1lLCBmaWVsZDEsIGZpZWxkMiwgbWF4bGVuPW1heGxlbikpCiAKLSAgICBpZiBlY2hhbmdlZDoKKyAgICBpZiBkaWZmLmVjaGFuZ2VkOgogICAgICAgICBwcmludCgiXG5FUE9DSCBDSEFOR0VEOiIpCiAgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLSIpCi0gICAgICAgIGZvciBwa2cgaW4gc29ydGVkKGVjaGFuZ2VkKToKLSAgICAgICAgICAgIGZpZWxkMSA9ICJ7fSAtPiB7fSIuZm9ybWF0KGJzMVtwa2ddWydlcG9jaCddLCBiczJbcGtnXVsnZXBvY2gnXSkKLSAgICAgICAgICAgIGZpZWxkMiA9ICJ7fSAtPiB7fSIuZm9ybWF0KGJzMVtwa2ddWyduZXZyJ10sIGJzMltwa2ddWyduZXZyJ10pCi0gICAgICAgICAgICBwcmludChmbXRfc3RyLmZvcm1hdChwa2csIGZpZWxkMSwgZmllbGQyLCBtYXhsZW49bWF4bGVuKSkKKyAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBzb3J0ZWQoZGlmZi5lY2hhbmdlZC5pdGVtcygpKToKKyAgICAgICAgICAgIGZpZWxkMSA9ICJ7fSAtPiB7fSIuZm9ybWF0KHZhbC5sZWZ0LmVwb2NoLCB2YWwucmlnaHQuZXBvY2gpCisgICAgICAgICAgICBmaWVsZDIgPSAie30gLT4ge30iLmZvcm1hdCh2YWwubGVmdC5uZXZyLCB2YWwucmlnaHQubmV2cikKKyAgICAgICAgICAgIHByaW50KGZtdF9zdHIuZm9ybWF0KG5hbWUsIGZpZWxkMSwgZmllbGQyLCBtYXhsZW49bWF4bGVuKSkKIAogCiBkZWYgcHJpbnRfdGFza19kaWZmKGJzMSwgYnMyLCB2YWxfdHlwZSwgbWluX3ZhbD0wLCBtaW5fYWJzZGlmZj0wLCBzb3J0X2J5PSgnYWJzZGlmZicsKSk6CkBAIC0zNDMsMTIgKzE1NywxMCBAQAogICAgICAgICAiIiJHZXQgY3VtdWxhdGl2ZSBzdW0gb2YgYWxsIHRhc2tzIiIiCiAgICAgICAgIHRvdGFsID0gMC4wCiAgICAgICAgIGZvciByZWNpcGVfZGF0YSBpbiBidWlsZHN0YXRzLnZhbHVlcygpOgotICAgICAgICAgICAgZm9yIGJzX3Rhc2sgaW4gcmVjaXBlX2RhdGFbJ3Rhc2tzJ10udmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgdG90YWwgKz0gc3VtKFtnZXRhdHRyKGIsIHZhbF90eXBlKSBmb3IgYiBpbiBic190YXNrXSkgLyBsZW4oYnNfdGFzaykKKyAgICAgICAgICAgIGZvciBic190YXNrIGluIHJlY2lwZV9kYXRhLnRhc2tzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIHRvdGFsICs9IGdldGF0dHIoYnNfdGFzaywgdmFsX3R5cGUpCiAgICAgICAgIHJldHVybiB0b3RhbAogCi0gICAgdGFza3NfZGlmZiA9IFtdCi0KICAgICBpZiBtaW5fdmFsOgogICAgICAgICBwcmludCgiSWdub3JpbmcgdGFza3MgbGVzcyB0aGFuIHt9ICh7fSkiLmZvcm1hdCgKICAgICAgICAgICAgICAgICB2YWxfdG9fc3RyKG1pbl92YWwsIFRydWUpLCB2YWxfdG9fc3RyKG1pbl92YWwpKSkKQEAgLTM1Nyw0OSArMTY5LDcgQEAKICAgICAgICAgICAgICAgICB2YWxfdG9fc3RyKG1pbl9hYnNkaWZmLCBUcnVlKSwgdmFsX3RvX3N0cihtaW5fYWJzZGlmZikpKQogCiAgICAgIyBQcmVwYXJlIHRoZSBkYXRhCi0gICAgcGtncyA9IHNldChiczEua2V5cygpKS51bmlvbihzZXQoYnMyLmtleXMoKSkpCi0gICAgZm9yIHBrZyBpbiBwa2dzOgotICAgICAgICB0YXNrczEgPSBiczFbcGtnXVsndGFza3MnXSBpZiBwa2cgaW4gYnMxIGVsc2Uge30KLSAgICAgICAgdGFza3MyID0gYnMyW3BrZ11bJ3Rhc2tzJ10gaWYgcGtnIGluIGJzMiBlbHNlIHt9Ci0gICAgICAgIGlmIG5vdCB0YXNrczE6Ci0gICAgICAgICAgICBwa2dfb3AgPSAnKyAnCi0gICAgICAgIGVsaWYgbm90IHRhc2tzMjoKLSAgICAgICAgICAgIHBrZ19vcCA9ICctICcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBrZ19vcCA9ICcgICcKLQotICAgICAgICBmb3IgdGFzayBpbiBzZXQodGFza3MxLmtleXMoKSkudW5pb24oc2V0KHRhc2tzMi5rZXlzKCkpKToKLSAgICAgICAgICAgIHRhc2tfb3AgPSAnICAnCi0gICAgICAgICAgICBpZiB0YXNrIGluIHRhc2tzMToKLSAgICAgICAgICAgICAgICAjIEF2ZXJhZ2Ugb3ZlciBhbGwgdmFsdWVzCi0gICAgICAgICAgICAgICAgdmFsMSA9IFtnZXRhdHRyKGIsIHZhbF90eXBlKSBmb3IgYiBpbiBiczFbcGtnXVsndGFza3MnXVt0YXNrXV0KLSAgICAgICAgICAgICAgICB2YWwxID0gc3VtKHZhbDEpIC8gbGVuKHZhbDEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRhc2tfb3AgPSAnKyAnCi0gICAgICAgICAgICAgICAgdmFsMSA9IDAKLSAgICAgICAgICAgIGlmIHRhc2sgaW4gdGFza3MyOgotICAgICAgICAgICAgICAgICMgQXZlcmFnZSBvdmVyIGFsbCB2YWx1ZXMKLSAgICAgICAgICAgICAgICB2YWwyID0gW2dldGF0dHIoYiwgdmFsX3R5cGUpIGZvciBiIGluIGJzMltwa2ddWyd0YXNrcyddW3Rhc2tdXQotICAgICAgICAgICAgICAgIHZhbDIgPSBzdW0odmFsMikgLyBsZW4odmFsMikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsMiA9IDAKLSAgICAgICAgICAgICAgICB0YXNrX29wID0gJy0gJwotCi0gICAgICAgICAgICBpZiB2YWwxID09IDA6Ci0gICAgICAgICAgICAgICAgcmVsZGlmZiA9IGZsb2F0KCdpbmYnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZWxkaWZmID0gMTAwICogKHZhbDIgLSB2YWwxKSAvIHZhbDEKLQotICAgICAgICAgICAgaWYgbWF4KHZhbDEsIHZhbDIpIDwgbWluX3ZhbDoKLSAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkZpbHRlcmluZyBvdXQgJXM6JXMgKCVzKSIsIHBrZywgdGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsX3RvX3N0cihtYXgodmFsMSwgdmFsMikpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBhYnModmFsMiAtIHZhbDEpIDwgbWluX2Fic2RpZmY6Ci0gICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJGaWx0ZXJpbmcgb3V0ICVzOiVzIChkaWZmZXJlbmNlIG9mICVzKSIsIHBrZywgdGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsX3RvX3N0cih2YWwyLXZhbDEpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0YXNrc19kaWZmLmFwcGVuZChUYXNrRGlmZihwa2csIHBrZ19vcCwgdGFzaywgdGFza19vcCwgdmFsMSwgdmFsMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbDItdmFsMSwgcmVsZGlmZikpCisgICAgdGFza3NfZGlmZiA9IGRpZmZfYnVpbGRzdGF0cyhiczEsIGJzMiwgdmFsX3R5cGUsIG1pbl92YWwsIG1pbl9hYnNkaWZmKQogCiAgICAgIyBTb3J0IG91ciBsaXN0CiAgICAgZm9yIGZpZWxkIGluIHJldmVyc2VkKHNvcnRfYnkpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9idWlsZC1wZXJmLXRlc3Qtd3JhcHBlci5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYnVpbGQtcGVyZi10ZXN0LXdyYXBwZXIuc2gKaW5kZXggM2RhMzI1My4uMTliZWUxZCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9idWlsZC1wZXJmLXRlc3Qtd3JhcHBlci5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL2J1aWxkLXBlcmYtdGVzdC13cmFwcGVyLnNoCkBAIC0zNSw2ICszNSw3IEBACiAgIC1DIEdJVF9SRVBPICAgICAgIGNvbW1pdCByZXN1bHRzIGludG8gR2l0CiAgIC1FIEVNQUlMX0FERFIgICAgIHNlbmQgZW1haWwgcmVwb3J0CiAgIC1QIEdJVF9SRU1PVEUgICAgIHB1c2ggcmVzdWx0cyB0byBhIHJlbW90ZSBHaXQgcmVwb3NpdG9yeQorICAtUiBERVNUICAgICAgICAgICByc3luYyByZXBvcnRzIHRvIGEgcmVtb3RlIGRlc3RpbmF0aW9uCiAgIC13IFdPUktfRElSICAgICAgIHdvcmsgZGlyIGZvciB0aGlzIHNjcmlwdAogICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogR0lUX1RPUF9ESVIvYnVpbGQtcGVyZi10ZXN0KQogICAteCAgICAgICAgICAgICAgICBjcmVhdGUgeG1sIHJlcG9ydCAoaW5zdGVhZCBvZiBqc29uKQpAQCAtNTAsNyArNTEsNyBAQAogY29tbWl0aXNoPSIiCiBvZV9idWlsZF9wZXJmX3Rlc3RfZXh0cmFfb3B0cz0oKQogb2VfZ2l0X2FyY2hpdmVfZXh0cmFfb3B0cz0oKQotd2hpbGUgZ2V0b3B0cyAiaGE6YzpDOkU6UDp3OngiIG9wdDsgZG8KK3doaWxlIGdldG9wdHMgImhhOmM6QzpFOlA6Ujp3OngiIG9wdDsgZG8KICAgICBjYXNlICRvcHQgaW4KICAgICAgICAgaCkgIHVzYWdlCiAgICAgICAgICAgICBleGl0IDAKQEAgLTY1LDYgKzY2LDggQEAKICAgICAgICAgICAgIDs7CiAgICAgICAgIFApICBvZV9naXRfYXJjaGl2ZV9leHRyYV9vcHRzKz0oIi0tcHVzaCIgIiRPUFRBUkciKQogICAgICAgICAgICAgOzsKKyAgICAgICAgUikgIHJzeW5jX2RzdD0iJE9QVEFSRyIKKyAgICAgICAgICAgIDs7CiAgICAgICAgIHcpICBiYXNlX2Rpcj1gcmVhbHBhdGggLXMgIiRPUFRBUkciYAogICAgICAgICAgICAgOzsKICAgICAgICAgeCkgIG9lX2J1aWxkX3BlcmZfdGVzdF9leHRyYV9vcHRzKz0oIi0teG1sIikKQEAgLTEzMiw2ICsxMzUsMTEgQEAKICAgICBnaXQgcmVzZXQgLS1oYXJkICRjb21taXQgPiAvZGV2L251bGwKIGZpCiAKKyMgRGV0ZXJtaW5lIG5hbWUgb2YgdGhlIGN1cnJlbnQgYnJhbmNoCiticmFuY2g9YGdpdCBzeW1ib2xpYy1yZWYgSEVBRCAyPiAvZGV2L251bGxgCisjIFN0cmlwIHJlZnMvaGVhZHMvCiticmFuY2g9JHticmFuY2g6MTF9CisKICMgU2V0dXAgYnVpbGQgZW52aXJvbm1lbnQKIGlmIFsgLXogIiRiYXNlX2RpciIgXTsgdGhlbgogICAgIGJhc2VfZGlyPSIkZ2l0X3RvcGRpci9idWlsZC1wZXJmLXRlc3QiCkBAIC0xODcsMTMgKzE5NSwyNSBAQAogICAgICAgICAiJHtvZV9naXRfYXJjaGl2ZV9leHRyYV9vcHRzW0BdfSIgXAogICAgICAgICAiJHJlc3VsdHNfZGlyIgogCisgICAgIyBHZW5lcmF0ZSB0ZXN0IHJlcG9ydHMKKyAgICBzYW5pdGl6ZWRfYnJhbmNoPWBlY2hvICRicmFuY2ggfCB0ciAvIF9gCisgICAgcmVwb3J0X3R4dD1gaG9zdG5hbWVgXyR7c2FuaXRpemVkX2JyYW5jaH1fJHttYWNoaW5lfS50eHQKKyAgICByZXBvcnRfaHRtbD1gaG9zdG5hbWVgXyR7c2FuaXRpemVkX2JyYW5jaH1fJHttYWNoaW5lfS5odG1sCisgICAgZWNobyAtZSAiXG5HZW5lcmF0aW5nIHRlc3QgcmVwb3J0IgorICAgIG9lLWJ1aWxkLXBlcmYtcmVwb3J0IC1yICIkcmVzdWx0c19yZXBvIiA+ICRyZXBvcnRfdHh0CisgICAgb2UtYnVpbGQtcGVyZi1yZXBvcnQgLXIgIiRyZXN1bHRzX3JlcG8iIC0taHRtbCA+ICRyZXBvcnRfaHRtbAorCiAgICAgIyBTZW5kIGVtYWlsIHJlcG9ydAogICAgIGlmIFsgLW4gIiRlbWFpbF90byIgXTsgdGhlbgotICAgICAgICBlY2hvIC1lICJcbkVtYWlsaW5nIHRlc3QgcmVwb3J0IgorICAgICAgICBlY2hvICJFbWFpbGluZyB0ZXN0IHJlcG9ydCIKICAgICAgICAgb3NfbmFtZT1gZ2V0X29zX3JlbGVhc2VfdmFyIFBSRVRUWV9OQU1FYAotICAgICAgICBvZS1idWlsZC1wZXJmLXJlcG9ydCAtciAiJHJlc3VsdHNfcmVwbyIgPiByZXBvcnQudHh0Ci0gICAgICAgIG9lLWJ1aWxkLXBlcmYtcmVwb3J0IC1yICIkcmVzdWx0c19yZXBvIiAtLWh0bWwgPiByZXBvcnQuaHRtbAotICAgICAgICAiJHNjcmlwdF9kaXIiL29lLWJ1aWxkLXBlcmYtcmVwb3J0LWVtYWlsLnB5IC0tdG8gIiRlbWFpbF90byIgLS1zdWJqZWN0ICJCdWlsZCBQZXJmIFRlc3QgUmVwb3J0IGZvciAkb3NfbmFtZSIgLS10ZXh0IHJlcG9ydC50eHQgLS1odG1sIHJlcG9ydC5odG1sICIke09FX0JVSUxEX1BFUkZfUkVQT1JUX0VNQUlMX0VYVFJBX0FSR1NbQF19IgorICAgICAgICAiJHNjcmlwdF9kaXIiL29lLWJ1aWxkLXBlcmYtcmVwb3J0LWVtYWlsLnB5IC0tdG8gIiRlbWFpbF90byIgLS1zdWJqZWN0ICJCdWlsZCBQZXJmIFRlc3QgUmVwb3J0IGZvciAkb3NfbmFtZSIgLS10ZXh0ICRyZXBvcnRfdHh0IC0taHRtbCAkcmVwb3J0X2h0bWwgIiR7T0VfQlVJTERfUEVSRl9SRVBPUlRfRU1BSUxfRVhUUkFfQVJHU1tAXX0iCisgICAgZmkKKworICAgICMgVXBsb2FkIHJlcG9ydCBmaWxlcywgdW5sZXNzIHdlJ3JlIG9uIGRldGFjaGVkIGhlYWQKKyAgICBpZiBbIC1uICIkcnN5bmNfZHN0IiAtYSAtbiAiJGJyYW5jaCIgXTsgdGhlbgorICAgICAgICBlY2hvICJVcGxvYWRpbmcgdGVzdCByZXBvcnQiCisgICAgICAgIHJzeW5jICRyZXBvcnRfdHh0ICRyZXBvcnRfaHRtbCAkcnN5bmNfZHN0CiAgICAgZmkKIGZpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvb2UtYnVpbGQtcGVyZi1yZXBvcnQtZW1haWwucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL29lLWJ1aWxkLXBlcmYtcmVwb3J0LWVtYWlsLnB5CmluZGV4IDI2MWNhNTEuLjkxMzg0N2IgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvb2UtYnVpbGQtcGVyZi1yZXBvcnQtZW1haWwucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9vZS1idWlsZC1wZXJmLXJlcG9ydC1lbWFpbC5weQpAQCAtMjUsNiArMjUsNyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQorZnJvbSBlbWFpbC5taW1lLmltYWdlIGltcG9ydCBNSU1FSW1hZ2UKIGZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKIGZyb20gZW1haWwubWltZS50ZXh0IGltcG9ydCBNSU1FVGV4dAogCkBAIC03MSw2ICs3MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iT25seSBwcmludCBlcnJvcnMiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdG8nLCBhY3Rpb249J2FwcGVuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSZWNpcGllbnRzIG9mIHRoZSBlbWFpbCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jYycsIGFjdGlvbj0nYXBwZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkNhcmJvbiBjb3B5IHJlY2lwaWVudHMgb2YgdGhlIGVtYWlsIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJjYycsIGFjdGlvbj0nYXBwZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkJsaW5kIGNhcmJvbiBjb3B5IHJlY2lwaWVudHMgb2YgdGhlIGVtYWlsIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN1YmplY3QnLCBkZWZhdWx0PSJZb2N0byBidWlsZCBwZXJmIHRlc3QgcmVwb3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVtYWlsIHN1YmplY3QiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0ZGlyJywgJy1vJywKQEAgLTEwNywxNSArMTEyLDYgQEAKICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ29wdGlwbmcnLCBvdXRmaWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiAKLWRlZiBlbmNvZGVfcG5nKHBuZ2ZpbGUpOgotICAgICIiIkVuY29kZSBwbmcgaW50byBhIDxpbWc+IGh0bWwgZWxlbWVudCIiIgotICAgIHdpdGggb3BlbihwbmdmaWxlLCAncmInKSBhcyBmOgotICAgICAgICBkYXRhID0gZi5yZWFkKCkKLQotICAgIGI2NF9kYXRhID0gYmFzZTY0LmI2NGVuY29kZShkYXRhKQotICAgIHJldHVybiAnPGltZyBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgYjY0X2RhdGEuZGVjb2RlKCd1dGYtOCcpICsgJyI+XG4nCi0KLQogZGVmIG1hbmdsZV9odG1sX3JlcG9ydChpbmZpbGUsIG91dGZpbGUsIHBuZ3MpOgogICAgICIiIk1hbmdsZSBodG1sIGZpbGUgaW50byBhIGVtYWlsIGNvbXBhdGlibGUgZm9ybWF0IiIiCiAgICAgcGFzdGUgPSBUcnVlCkBAIC0xNDAsOSArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBSZXBsYWNlIGNoYXJ0cyB3aXRoIDxpbWc+IGVsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goJzxkaXYgaWQ9Iig/UDxpZD5cdyspIicsIHN0cmlwcGVkKQogICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaCBhbmQgbWF0Y2guZ3JvdXAoJ2lkJykgaW4gcG5nczoKLSAgICAgICAgICAgICAgICAgICAgICAgICNmX291dC53cml0ZSgnPGltZyBzcmM9Int9Ij5cbicuZm9ybWF0KG1hdGNoLmdyb3VwKCdpZCcpICsgJy5wbmcnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19maWxlID0gb3MucGF0aC5qb2luKHBuZ19kaXIsIG1hdGNoLmdyb3VwKCdpZCcpICsgJy5wbmcnKQotICAgICAgICAgICAgICAgICAgICAgICAgZl9vdXQud3JpdGUoZW5jb2RlX3BuZyhwbmdfZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmX291dC53cml0ZSgnPGltZyBzcmM9ImNpZDp7fSJcbicuZm9ybWF0KG1hdGNoLmdyb3VwKCdpZCcpKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGZfb3V0LndyaXRlKGxpbmUpCiAKQEAgLTE2Niw3ICsxNjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICAgICAgcG5ncyA9IFtdCi0gICAgICAgIGF0dGFjaG1lbnRzID0gW10KKyAgICAgICAgaW1hZ2VzID0gW10KICAgICAgICAgZm9yIGZuYW1lIGluIG9zLmxpc3RkaXIodG1wZGlyKToKICAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZm5hbWUpCiAgICAgICAgICAgICBpZiBleHQgPT0gJy5wbmcnOgpAQCAtMTc0LDcgKzE2OCw3IEBACiAgICAgICAgICAgICAgICAgZGVjb2RlX3BuZyhvcy5wYXRoLmpvaW4odG1wZGlyLCBmbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3V0ZGlyLCBmbmFtZSkpCiAgICAgICAgICAgICAgICAgcG5ncy5hcHBlbmQoYmFzZSkKLSAgICAgICAgICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoZm5hbWUpCisgICAgICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChmbmFtZSkKICAgICAgICAgICAgIGVsaWYgZXh0IGluICgnLmh0bWwnLCAnLmh0bScpOgogICAgICAgICAgICAgICAgIHJlcG9ydF9maWxlID0gZm5hbWUKICAgICAgICAgICAgIGVsc2U6CkBAIC0xODQsMTEgKzE3OCwxMyBAQAogICAgICAgICBsb2cuZGVidWcoIk1hbmdsaW5nIGh0bWwgcmVwb3J0IGZpbGUgJXMiLCByZXBvcnRfZmlsZSkKICAgICAgICAgbWFuZ2xlX2h0bWxfcmVwb3J0KG9zLnBhdGguam9pbih0bXBkaXIsIHJlcG9ydF9maWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvdXRkaXIsIHJlcG9ydF9maWxlKSwgcG5ncykKLSAgICAgICAgcmV0dXJuIHJlcG9ydF9maWxlLCBhdHRhY2htZW50cworICAgICAgICByZXR1cm4gKG9zLnBhdGguam9pbihvdXRkaXIsIHJlcG9ydF9maWxlKSwKKyAgICAgICAgICAgICAgICBbb3MucGF0aC5qb2luKG91dGRpciwgaSkgZm9yIGkgaW4gaW1hZ2VzXSkKICAgICBmaW5hbGx5OgogICAgICAgICBzaHV0aWwucm10cmVlKHRtcGRpcikKIAotZGVmIHNlbmRfZW1haWwodGV4dF9mbiwgaHRtbF9mbiwgc3ViamVjdCwgcmVjaXBpZW50cyk6CitkZWYgc2VuZF9lbWFpbCh0ZXh0X2ZuLCBodG1sX2ZuLCBpbWFnZV9mbnMsIHN1YmplY3QsIHJlY2lwaWVudHMsIGNvcHk9W10sCisgICAgICAgICAgICAgICBibGluZF9jb3B5PVtdKToKICAgICAiIiJTZW5kIGVtYWlsIiIiCiAgICAgIyBHZW5lcmF0ZSBlbWFpbCBtZXNzYWdlCiAgICAgdGV4dF9tc2cgPSBodG1sX21zZyA9IE5vbmUKQEAgLTE5Nyw4ICsxOTMsMTYgQEAKICAgICAgICAgICAgIHRleHRfbXNnID0gTUlNRVRleHQoIllvY3RvIGJ1aWxkIHBlcmZvcm1hbmNlIHRlc3QgcmVwb3J0LlxuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYucmVhZCgpLCAncGxhaW4nKQogICAgIGlmIGh0bWxfZm46CisgICAgICAgIGh0bWxfbXNnID0gbXNnID0gTUlNRU11bHRpcGFydCgncmVsYXRlZCcpCiAgICAgICAgIHdpdGggb3BlbihodG1sX2ZuKSBhcyBmOgotICAgICAgICAgICAgaHRtbF9tc2cgPSBNSU1FVGV4dChmLnJlYWQoKSwgJ2h0bWwnKQorICAgICAgICAgICAgaHRtbF9tc2cuYXR0YWNoKE1JTUVUZXh0KGYucmVhZCgpLCAnaHRtbCcpKQorICAgICAgICBmb3IgaW1nX2ZuIGluIGltYWdlX2ZuczoKKyAgICAgICAgICAgICMgRXhwZWN0IHRoYXQgY29udGVudCBpZCBpcyBzYW1lIGFzIHRoZSBmaWxlbmFtZQorICAgICAgICAgICAgY2lkID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGltZ19mbikpWzBdCisgICAgICAgICAgICB3aXRoIG9wZW4oaW1nX2ZuLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIGltYWdlX21zZyA9IE1JTUVJbWFnZShmLnJlYWQoKSkKKyAgICAgICAgICAgIGltYWdlX21zZ1snQ29udGVudC1JRCddID0gJzx7fT4nLmZvcm1hdChjaWQpCisgICAgICAgICAgICBodG1sX21zZy5hdHRhY2goaW1hZ2VfbXNnKQogCiAgICAgaWYgdGV4dF9tc2cgYW5kIGh0bWxfbXNnOgogICAgICAgICBtc2cgPSBNSU1FTXVsdGlwYXJ0KCdhbHRlcm5hdGl2ZScpCkBAIC0yMTcsNiArMjIxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAne31Ae30nLmZvcm1hdChwd19kYXRhLnB3X25hbWUsIHNvY2tldC5nZXRmcWRuKCkpKQogICAgIG1zZ1snRnJvbSddID0gInt9IDx7fT4iLmZvcm1hdChmdWxsX25hbWUsIGVtYWlsKQogICAgIG1zZ1snVG8nXSA9ICcsICcuam9pbihyZWNpcGllbnRzKQorICAgIGlmIGNvcHk6CisgICAgICAgIG1zZ1snQ2MnXSA9ICcsICcuam9pbihjb3B5KQorICAgIGlmIGJsaW5kX2NvcHk6CisgICAgICAgIG1zZ1snQmNjJ10gPSAnLCAnLmpvaW4oYmxpbmRfY29weSkKICAgICBtc2dbJ1N1YmplY3QnXSA9IHN1YmplY3QKIAogICAgICMgU2VuZCBlbWFpbApAQCAtMjQzLDE0ICsyNTEsMTkgQEAKIAogICAgIHRyeToKICAgICAgICAgbG9nLmRlYnVnKCJTdG9yaW5nIGVtYWlsIHBhcnRzIGluICVzIiwgb3V0ZGlyKQotICAgICAgICBodG1sX3JlcG9ydCA9IE5vbmUKKyAgICAgICAgaHRtbF9yZXBvcnQgPSBpbWFnZXMgPSBOb25lCiAgICAgICAgIGlmIGFyZ3MuaHRtbDoKLSAgICAgICAgICAgIHNjcmFwZV9odG1sX3JlcG9ydChhcmdzLmh0bWwsIG91dGRpciwgYXJncy5waGFudG9tanNfYXJncykKLSAgICAgICAgICAgIGh0bWxfcmVwb3J0ID0gb3MucGF0aC5qb2luKG91dGRpciwgb3MucGF0aC5iYXNlbmFtZShhcmdzLmh0bWwpKQorICAgICAgICAgICAgaHRtbF9yZXBvcnQsIGltYWdlcyA9IHNjcmFwZV9odG1sX3JlcG9ydChhcmdzLmh0bWwsIG91dGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5waGFudG9tanNfYXJncykKIAogICAgICAgICBpZiBhcmdzLnRvOgogICAgICAgICAgICAgbG9nLmluZm8oIlNlbmRpbmcgZW1haWwgdG8gJXMiLCAnLCAnLmpvaW4oYXJncy50bykpCi0gICAgICAgICAgICBzZW5kX2VtYWlsKGFyZ3MudGV4dCwgaHRtbF9yZXBvcnQsIGFyZ3Muc3ViamVjdCwgYXJncy50bykKKyAgICAgICAgICAgIGlmIGFyZ3MuY2M6CisgICAgICAgICAgICAgICAgbG9nLmluZm8oIkNvcHlpbmcgdG8gJXMiLCAnLCAnLmpvaW4oYXJncy5jYykpCisgICAgICAgICAgICBpZiBhcmdzLmJjYzoKKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiQmxpbmQgY29weWluZyB0byAlcyIsICcsICcuam9pbihhcmdzLmJjYykpCisgICAgICAgICAgICBzZW5kX2VtYWlsKGFyZ3MudGV4dCwgaHRtbF9yZXBvcnQsIGltYWdlcywgYXJncy5zdWJqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnRvLCBhcmdzLmNjLCBhcmdzLmJjYykKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgogICAgICAgICBsb2cuZXJyb3IoIiVzLCB3aXRoIG91dHB1dDpcbiVzIiwgc3RyKGVyciksIGVyci5vdXRwdXQuZGVjb2RlKCkpCiAgICAgICAgIHJldHVybiAxCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3BhdGNocmV2aWV3LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHJldmlldy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40ZTNlNzNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHJldmlldy5weQpAQCAtMCwwICsxLDIxMSBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBUT0RPCisjIC0gb3B0aW9uIHRvIGp1c3QgbGlzdCBhbGwgYnJva2VuIGZpbGVzCisjIC0gdGVzdCBzdWl0ZQorIyAtIHZhbGlkYXRlIHNpZ25lZC1vZmYtYnkKKworCitjbGFzcyBSZXN1bHQ6CisgICAgIyBXaGV0aGVyIHRoZSBwYXRjaCBoYXMgYW4gVXBzdHJlYW0tU3RhdHVzIG9yIG5vdAorICAgIG1pc3NpbmdfdXBzdHJlYW1fc3RhdHVzID0gRmFsc2UKKyAgICAjIElmIHRoZSBVcHN0cmVhbS1TdGF0dXMgdGFnIGlzIG1hbGZvcm1lZCBpbiBzb21lIHdheSAoc3RyaW5nIGZvciBiYWQgYml0KQorICAgIG1hbGZvcm1lZF91cHN0cmVhbV9zdGF0dXMgPSBOb25lCisgICAgIyBJZiB0aGUgVXBzdHJlYW0tU3RhdHVzIHZhbHVlIGlzIHVua25vd24gKGJvb2xlYW4pCisgICAgdW5rbm93bl91cHN0cmVhbV9zdGF0dXMgPSBGYWxzZQorICAgICMgVGhlIHVwc3RyZWFtIHN0YXR1cyB2YWx1ZSAoUGVuZGluZywgZXRjKQorICAgIHVwc3RyZWFtX3N0YXR1cyA9IE5vbmUKKyAgICAjIFdoZXRoZXIgdGhlIHBhdGNoIGhhcyBhIFNpZ25lZC1vZmYtYnkgb3Igbm90CisgICAgbWlzc2luZ19zb2IgPSBGYWxzZQorICAgICMgV2hldGhlciB0aGUgU2lnbmVkLW9mZi1ieSB0YWcgaXMgbWFsZm9ybWVkIGluIHNvbWUgd2F5CisgICAgbWFsZm9ybWVkX3NvYiA9IEZhbHNlCisgICAgIyBUaGUgU2lnbmVkLW9mZi1ieSB0YWcgdmFsdWUKKyAgICBzb2IgPSBOb25lCisgICAgIyBXaGV0aGVyIGEgcGF0Y2ggbG9va3MgbGlrZSBhIENWRSBidXQgZG9lc24ndCBoYXZlIGEgQ1ZFIHRhZworICAgIG1pc3NpbmdfY3ZlID0gRmFsc2UKKworZGVmIGJsYW1lX3BhdGNoKHBhdGNoKToKKyAgICAiIiIKKyAgICBGcm9tIGEgcGF0Y2ggZmlsZW5hbWUsIHJldHVybiBhIGxpc3Qgb2YgImNvbW1pdCBzdW1tYXJ5IChhdXRob3IgbmFtZSA8YXV0aG9yCisgICAgZW1haWw+KSIgc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGhpc3RvcnkuCisgICAgIiIiCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKCJnaXQiLCAibG9nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWZvbGxvdyIsICItLWZpbmQtcmVuYW1lcyIsICItLWRpZmYtZmlsdGVyPUEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZm9ybWF0PSVzICglYU4gPCVhRT4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLSIsIHBhdGNoKSkuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0bGluZXMoKQorCitkZWYgcGF0Y2hyZXZpZXcocGF0Y2hlcyk6CisgICAgaW1wb3J0IHJlCisKKyAgICAjIEdlbmVyYWwgcGF0dGVybjogc3RhcnQgb2YgbGluZSwgb3B0aW9uYWwgd2hpdGVzcGFjZSwgdGFnIHdpdGggb3B0aW9uYWwKKyAgICAjIGh5cGhlbiBvciBzcGFjZXMsIG1heWJlIGEgY29sb24sIHNvbWUgd2hpdGVzcGFjZSwgdGhlbiB0aGUgdmFsdWUsIGFsbCBjYXNlCisgICAgIyBpbnNlbnNpdGl2ZS4KKyAgICBzb2JfcmUgPSByZS5jb21waWxlKHIiXltcdCBdKihTaWduZWRbLV8gXW9mZlstXyBdYnk6PylbXHQgXSooLispIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLk1VTFRJTElORSkKKyAgICBzdGF0dXNfcmUgPSByZS5jb21waWxlKHIiXltcdCBdKihVcHN0cmVhbVstXyBdU3RhdHVzOj8pW1x0IF0qKFx3KikiLCByZS5JR05PUkVDQVNFIHwgcmUuTVVMVElMSU5FKQorICAgIHN0YXR1c192YWx1ZXMgPSAoImFjY2VwdGVkIiwgInBlbmRpbmciLCAiaW5hcHByb3ByaWF0ZSIsICJiYWNrcG9ydCIsICJzdWJtaXR0ZWQiLCAiZGVuaWVkIikKKyAgICBjdmVfdGFnX3JlID0gcmUuY29tcGlsZShyIl5bXHQgXSooQ1ZFOilbXHQgXSooLiopIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLk1VTFRJTElORSkKKyAgICBjdmVfcmUgPSByZS5jb21waWxlKHIiY3ZlLVswLTldezR9LVswLTldezQsNn0iLCByZS5JR05PUkVDQVNFKQorCisgICAgcmVzdWx0cyA9IHt9CisKKyAgICBmb3IgcGF0Y2ggaW4gcGF0Y2hlczoKKyAgICAgICAgcmVzdWx0ID0gUmVzdWx0KCkKKyAgICAgICAgcmVzdWx0c1twYXRjaF0gPSByZXN1bHQKKworICAgICAgICBjb250ZW50ID0gb3BlbihwYXRjaCwgZW5jb2Rpbmc9J2FzY2lpJywgZXJyb3JzPSdpZ25vcmUnKS5yZWFkKCkKKworICAgICAgICAjIEZpbmQgdGhlIFNpZ25lZC1vZmYtYnkgdGFnCisgICAgICAgIG1hdGNoID0gc29iX3JlLnNlYXJjaChjb250ZW50KQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIHZhbHVlID0gbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAgICAgIGlmIHZhbHVlICE9ICJTaWduZWQtb2ZmLWJ5OiI6CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1hbGZvcm1lZF9zb2IgPSB2YWx1ZQorICAgICAgICAgICAgcmVzdWx0LnNvYiA9IG1hdGNoLmdyb3VwKDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQubWlzc2luZ19zb2IgPSBUcnVlCisKKworICAgICAgICAjIEZpbmQgdGhlIFVwc3RyZWFtLVN0YXR1cyB0YWcKKyAgICAgICAgbWF0Y2ggPSBzdGF0dXNfcmUuc2VhcmNoKGNvbnRlbnQpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgdmFsdWUgPSBtYXRjaC5ncm91cCgxKQorICAgICAgICAgICAgaWYgdmFsdWUgIT0gIlVwc3RyZWFtLVN0YXR1czoiOgorICAgICAgICAgICAgICAgIHJlc3VsdC5tYWxmb3JtZWRfdXBzdHJlYW1fc3RhdHVzID0gdmFsdWUKKworICAgICAgICAgICAgdmFsdWUgPSBtYXRjaC5ncm91cCgyKS5sb3dlcigpCisgICAgICAgICAgICAjIFRPRE86IGNoZWNrIGNhc2UKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBzdGF0dXNfdmFsdWVzOgorICAgICAgICAgICAgICAgIHJlc3VsdC51bmtub3duX3Vwc3RyZWFtX3N0YXR1cyA9IFRydWUKKyAgICAgICAgICAgIHJlc3VsdC51cHN0cmVhbV9zdGF0dXMgPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdfdXBzdHJlYW1fc3RhdHVzID0gVHJ1ZQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBwYXRjaGVzIHdoaWNoIGxvb2tzIGxpa2UgQ1ZFcyBoYXZlIENWRSB0YWdzCisgICAgICAgIGlmIGN2ZV9yZS5zZWFyY2gocGF0Y2gpIG9yIGN2ZV9yZS5zZWFyY2goY29udGVudCk6CisgICAgICAgICAgICBpZiBub3QgY3ZlX3RhZ19yZS5zZWFyY2goY29udGVudCk6CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdfY3ZlID0gVHJ1ZQorICAgICAgICAjIFRPRE86IGV4dHJhY3QgQ1ZFIGxpc3QKKworICAgIHJldHVybiByZXN1bHRzCisKKworZGVmIGFuYWx5c2UocmVzdWx0cywgd2FudF9ibGFtZT1GYWxzZSwgdmVyYm9zZT1UcnVlKToKKyAgICAiIiIKKyAgICB3YW50X2JsYW1lOiBkaXNwbGF5IGJsYW1lIGRhdGEgZm9yIGVhY2ggbWFsZm9ybWVkIHBhdGNoCisgICAgdmVyYm9zZTogZGlzcGxheSBwZXItZmlsZSByZXN1bHRzIGluc3RlYWQgb2YganVzdCBzdW1tYXJ5CisgICAgIiIiCisKKyAgICAjIHdhbnRfYmxhbWUgcmVxdWlyZXMgdmVyYm9zZSwgc28gZGlzYWJsZSBibGFtZSBpZiB3ZSdyZSBub3QgdmVyYm9zZQorICAgIGlmIHdhbnRfYmxhbWUgYW5kIG5vdCB2ZXJib3NlOgorICAgICAgICB3YW50X2JsYW1lID0gRmFsc2UKKworICAgIHRvdGFsX3BhdGNoZXMgPSAwCisgICAgbWlzc2luZ19zb2IgPSAwCisgICAgbWFsZm9ybWVkX3NvYiA9IDAKKyAgICBtaXNzaW5nX3N0YXR1cyA9IDAKKyAgICBtYWxmb3JtZWRfc3RhdHVzID0gMAorICAgIG1pc3NpbmdfY3ZlID0gMAorICAgIHBlbmRpbmdfcGF0Y2hlcyA9IDAKKworICAgIGZvciBwYXRjaCBpbiBzb3J0ZWQocmVzdWx0cyk6CisgICAgICAgIHIgPSByZXN1bHRzW3BhdGNoXQorICAgICAgICB0b3RhbF9wYXRjaGVzICs9IDEKKyAgICAgICAgbmVlZF9ibGFtZSA9IEZhbHNlCisKKyAgICAgICAgIyBCdWlsZCBzdGF0aXN0aWNzCisgICAgICAgIGlmIHIubWlzc2luZ19zb2I6CisgICAgICAgICAgICBtaXNzaW5nX3NvYiArPSAxCisgICAgICAgIGlmIHIubWFsZm9ybWVkX3NvYjoKKyAgICAgICAgICAgIG1hbGZvcm1lZF9zb2IgKz0gMQorICAgICAgICBpZiByLm1pc3NpbmdfdXBzdHJlYW1fc3RhdHVzOgorICAgICAgICAgICAgbWlzc2luZ19zdGF0dXMgKz0gMQorICAgICAgICBpZiByLm1hbGZvcm1lZF91cHN0cmVhbV9zdGF0dXMgb3Igci51bmtub3duX3Vwc3RyZWFtX3N0YXR1czoKKyAgICAgICAgICAgIG1hbGZvcm1lZF9zdGF0dXMgKz0gMQorICAgICAgICBpZiByLm1pc3NpbmdfY3ZlOgorICAgICAgICAgICAgbWlzc2luZ19jdmUgKz0gMQorICAgICAgICBpZiByLnVwc3RyZWFtX3N0YXR1cyA9PSAicGVuZGluZyI6CisgICAgICAgICAgICBwZW5kaW5nX3BhdGNoZXMgKz0gMQorCisgICAgICAgICMgT3V0cHV0IHdhcm5pbmdzCisgICAgICAgIGlmIHIubWlzc2luZ19zb2I6CisgICAgICAgICAgICBuZWVkX2JsYW1lID0gVHJ1ZQorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiTWlzc2luZyBTaWduZWQtb2ZmLWJ5IHRhZyAoJXMpIiAlIHBhdGNoKQorICAgICAgICAjIFRPRE86IGRpc2FibGUgdGhpcyBmb3Igbm93IGFzIHRvbyBtdWNoIGZhaWxzCisgICAgICAgIGlmIEZhbHNlIGFuZCByLm1hbGZvcm1lZF9zb2I6CisgICAgICAgICAgICBuZWVkX2JsYW1lID0gVHJ1ZQorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiTWFsZm9ybWVkIFNpZ25lZC1vZmYtYnkgJyVzJyAoJXMpIiAlIChyLm1hbGZvcm1lZF9zb2IsIHBhdGNoKSkKKyAgICAgICAgaWYgci5taXNzaW5nX2N2ZToKKyAgICAgICAgICAgIG5lZWRfYmxhbWUgPSBUcnVlCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCJNaXNzaW5nIENWRSB0YWcgKCVzKSIgJSBwYXRjaCkKKyAgICAgICAgaWYgci5taXNzaW5nX3Vwc3RyZWFtX3N0YXR1czoKKyAgICAgICAgICAgIG5lZWRfYmxhbWUgPSBUcnVlCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCJNaXNzaW5nIFVwc3RyZWFtLVN0YXR1cyB0YWcgKCVzKSIgJSBwYXRjaCkKKyAgICAgICAgaWYgci5tYWxmb3JtZWRfdXBzdHJlYW1fc3RhdHVzOgorICAgICAgICAgICAgbmVlZF9ibGFtZSA9IFRydWUKKyAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIk1hbGZvcm1lZCBVcHN0cmVhbS1TdGF0dXMgJyVzJyAoJXMpIiAlIChyLm1hbGZvcm1lZF91cHN0cmVhbV9zdGF0dXMsIHBhdGNoKSkKKyAgICAgICAgaWYgci51bmtub3duX3Vwc3RyZWFtX3N0YXR1czoKKyAgICAgICAgICAgIG5lZWRfYmxhbWUgPSBUcnVlCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCJVbmtub3duIFVwc3RyZWFtLVN0YXR1cyB2YWx1ZSAnJXMnICglcykiICUgKHIudXBzdHJlYW1fc3RhdHVzLCBwYXRjaCkpCisKKyAgICAgICAgaWYgd2FudF9ibGFtZSBhbmQgbmVlZF9ibGFtZToKKyAgICAgICAgICAgIHByaW50KCJcbiIuam9pbihibGFtZV9wYXRjaChwYXRjaCkpICsgIlxuIikKKworICAgIGRlZiBwZXJjZW50KG51bSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiAiJWQgKCVkJSUpIiAlIChudW0sIHJvdW5kKG51bSAqIDEwMC4wIC8gdG90YWxfcGF0Y2hlcykpCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHJldHVybiAiTi9BIgorCisgICAgaWYgdmVyYm9zZToKKyAgICAgICAgcHJpbnQoKQorCisgICAgcHJpbnQoIiIiVG90YWwgcGF0Y2hlcyBmb3VuZDogJWQKK1BhdGNoZXMgbWlzc2luZyBTaWduZWQtb2ZmLWJ5OiAlcworUGF0Y2hlcyB3aXRoIG1hbGZvcm1lZCBTaWduZWQtb2ZmLWJ5OiAlcworUGF0Y2hlcyBtaXNzaW5nIENWRTogJXMKK1BhdGNoZXMgbWlzc2luZyBVcHN0cmVhbS1TdGF0dXM6ICVzCitQYXRjaGVzIHdpdGggbWFsZm9ybWVkIFVwc3RyZWFtLVN0YXR1czogJXMKK1BhdGNoZXMgaW4gUGVuZGluZyBzdGF0ZTogJXMiIiIgJSAodG90YWxfcGF0Y2hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudChtaXNzaW5nX3NvYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQobWFsZm9ybWVkX3NvYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQobWlzc2luZ19jdmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50KG1pc3Npbmdfc3RhdHVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudChtYWxmb3JtZWRfc3RhdHVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudChwZW5kaW5nX3BhdGNoZXMpKSkKKworCisKK2RlZiBoaXN0b2dyYW0ocmVzdWx0cyk6CisgICAgZnJvbSB0b29seiBpbXBvcnQgcmVjaXBlcywgZGljdHRvb2x6CisgICAgaW1wb3J0IG1hdGgKKyAgICBjb3VudHMgPSByZWNpcGVzLmNvdW50YnkobGFtYmRhIHI6IHIudXBzdHJlYW1fc3RhdHVzLCByZXN1bHRzLnZhbHVlcygpKQorICAgIGJhcnMgPSBkaWN0dG9vbHoudmFsbWFwKGxhbWJkYSB2OiAiIyIgKiBpbnQobWF0aC5jZWlsKGZsb2F0KHYpIC8gbGVuKHJlc3VsdHMpICogMTAwKSksIGNvdW50cykKKyAgICBmb3IgayBpbiBiYXJzOgorICAgICAgICBwcmludCgiJS0yMHMgJXMgKCVkKSIgJSAoay5jYXBpdGFsaXplKCkgaWYgayBlbHNlICJObyBzdGF0dXMiLCBiYXJzW2tdLCBjb3VudHNba10pKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgaW1wb3J0IGFyZ3BhcnNlLCBzdWJwcm9jZXNzLCBvcworCisgICAgYXJncyA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJQYXRjaCBSZXZpZXcgVG9vbCIpCisgICAgYXJncy5hZGRfYXJndW1lbnQoIi1iIiwgIi0tYmxhbWUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJzaG93IGJsYW1lIGZvciBtYWxmb3JtZWQgcGF0Y2hlcyIpCisgICAgYXJncy5hZGRfYXJndW1lbnQoIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9InNob3cgcGVyLXBhdGNoIHJlc3VsdHMiKQorICAgIGFyZ3MuYWRkX2FyZ3VtZW50KCItZyIsICItLWhpc3RvZ3JhbSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9InNob3cgcGF0Y2ggaGlzdG9ncmFtIikKKyAgICBhcmdzLmFkZF9hcmd1bWVudCgiZGlyZWN0b3J5IiwgbmFyZ3M9Ij8iLCBoZWxwPSJkaXJlY3RvcnkgdG8gc2NhbiIpCisgICAgYXJncyA9IGFyZ3MucGFyc2VfYXJncygpCisKKyAgICBpZiBhcmdzLmRpcmVjdG9yeToKKyAgICAgICAgb3MuY2hkaXIoYXJncy5kaXJlY3RvcnkpCisgICAgcGF0Y2hlcyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgiZ2l0IiwgImxzLWZpbGVzIiwgIioucGF0Y2giLCAiKi5kaWZmIikpLmRlY29kZSgidXRmLTgiKS5zcGxpdCgpCisgICAgcmVzdWx0cyA9IHBhdGNocmV2aWV3KHBhdGNoZXMpCisgICAgYW5hbHlzZShyZXN1bHRzLCB3YW50X2JsYW1lPWFyZ3MuYmxhbWUsIHZlcmJvc2U9YXJncy52ZXJib3NlKQorICAgIGlmIGFyZ3MuaGlzdG9ncmFtOgorICAgICAgICBwcmludCgpCisgICAgICAgIGhpc3RvZ3JhbShyZXN1bHRzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHRlc3Quc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3BhdGNodGVzdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZmU1NjY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHRlc3Quc2gKQEAgLTAsMCArMSwxMTggQEAKKyMhL2Jpbi9iYXNoCisjIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAorIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQorIworIyBwYXRjaHRlc3Q6IFJ1biBwYXRjaHRlc3Qgb24gY29tbWl0cyBzdGFydGluZyBhdCBtYXN0ZXIKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMKK3NldCAtbyBlcnJleGl0CisKKyMgRGVmYXVsdCB2YWx1ZXMKK3Bva3lkaXI9JycKKwordXNhZ2UoKSB7CitDTUQ9JChiYXNlbmFtZSAkMCkKK2NhdCA8PEVPTQorVXNhZ2U6ICRDTUQgWy1oXSBbLXAgcG9reWRpcl0KKyAgLXAgcG9reWRpciAgRGVmYXVsdHMgdG8gY3VycmVudCBkaXJlY3RvcnkKK0VPTQorPiYyCisgICAgZXhpdCAxCit9CisKK2Z1bmN0aW9uIGNsb25lKCkgeworICAgIGxvY2FsIFJFUE9SRU1PVEU9JDEKKyAgICBsb2NhbCBSRVBPRElSPSQyCisgICAgaWYgWyAhIC1kICRSRVBPRElSIF07IHRoZW4KKwlnaXQgY2xvbmUgJFJFUE9SRU1PVEUgJFJFUE9ESVIgLS1xdWlldAorICAgIGVsc2UKKwkoIGNkICRSRVBPRElSOyBnaXQgcHVsbCAtLXF1aWV0ICkKKyAgICBmaQorfQorCit3aGlsZSBnZXRvcHRzICI6cDpoIiBvcHQ7IGRvCisgICAgY2FzZSAkb3B0IGluCisJcCkKKwkgICAgcG9reWRpcj0kT1BUQVJHCisJICAgIDs7CisJaCkKKwkgICAgdXNhZ2UKKwkgICAgOzsKKwlcPykKKwkgICAgZWNobyAiSW52YWxpZCBvcHRpb246IC0kT1BUQVJHIiA+JjIKKwkgICAgdXNhZ2UKKwkgICAgOzsKKwk6KQorCSAgICBlY2hvICJPcHRpb24gLSRPUFRBUkcgcmVxdWlyZXMgYW4gYXJndW1lbnQuIiA+JjIKKwkgICAgdXNhZ2UKKwkgICAgOzsKKyAgICBlc2FjCitkb25lCitzaGlmdCAkKChPUFRJTkQtMSkpCisKK0NESVI9IiRQV0QiCisKKyMgZGVmYXVsdCBwb2t5ZGlyIHRvIGN1cnJlbnQgZGlyZWN0b3J5IGlmIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IG9uZQoraWYgWyAteiAiJHBva3lkaXIiIF07IHRoZW4KKyAgICBwb2t5ZGlyPSIkQ0RJUiIKK2ZpCisKK1BURU5WPSIkUFdEL3BhdGNodGVzdCIKK1BUPSIkUFRFTlYvcGF0Y2h0ZXN0IgorUFRPRT0iJFBURU5WL3BhdGNodGVzdC1vZSIKKworaWYgISB3aGljaCB2aXJ0dWFsZW52ID4gL2Rldi9udWxsOyB0aGVuCisgICAgZWNobyAiSW5zdGFsbCB2aXJ0dWFsZW52IGJlZm9yZSBwcm9jZWVkaW5nIgorICAgIGV4aXQgMTsKK2ZpCisKKyMgYWN0aXZhdGUgdGhlIHZpcnR1YWwgZW52Cit2aXJ0dWFsZW52ICRQVEVOViAtLXF1aWV0Citzb3VyY2UgJFBURU5WL2Jpbi9hY3RpdmF0ZQorCitjZCAkUFRFTlYKKworIyBjbG9uZSBvciBwdWxsCitjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wYXRjaHRlc3QgJFBUCitjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wYXRjaHRlc3Qtb2UgJFBUT0UKKworIyBpbnN0YWxsIHJlcXVpcmVtZW50cworcGlwIGluc3RhbGwgLXIgJFBUL3JlcXVpcmVtZW50cy50eHQgLS1xdWlldAorcGlwIGluc3RhbGwgLXIgJFBUT0UvcmVxdWlyZW1lbnRzLnR4dCAtLXF1aWV0CisKK1BBVEg9IiRQVDokUFQvc2NyaXB0czokUEFUSCIKKworIyBsb29wIHRocm91Z2ggcGFyZW50IHRvIEhFQUQgYW5kIGV4ZWN1dGUgcGF0Y2h0ZXN0IG9uIGVhY2ggY29tbWl0Citmb3IgY29tbWl0IGluICQoZ2l0IHJldi1saXN0IG1hc3Rlci4uSEVBRCAtLXJldmVyc2UpCitkbworICAgIHNob3J0bG9nPSIkKGdpdCBsb2cgIiRjb21taXReMS4uJGNvbW1pdCIgLS1wcmV0dHk9JyVoOiAlYU46ICVjZDogJXMnKSIKKyAgICBsb2c9IiQoZ2l0IGZvcm1hdC1wYXRjaCAiJGNvbW1pdF4xLi4kY29tbWl0IiAtLXN0ZG91dCB8IHBhdGNodGVzdCAtIC1yICRwb2t5ZGlyIC1zICRQVE9FL3Rlc3RzIC0tYmFzZS1jb21taXQgJGNvbW1pdF4xIC0tanNvbiAyPi9kZXYvbnVsbCB8IGNyZWF0ZS1zdW1tYXJ5IC0tZmFpbCAtLW9ubHktcmVzdWx0cykiCisgICAgaWYgWyAteiAiJGxvZyIgXTsgdGhlbgorCXNob3J0bG9nPSIkc2hvcnRsb2c6IE9LIgorICAgIGVsc2UKKwlzaG9ydGxvZz0iJHNob3J0bG9nOiBGQUlMIgorICAgIGZpCisgICAgZWNobyAiJHNob3J0bG9nIgorICAgIGVjaG8gIiRsb2ciIHwgc2VkIC1uIC1lICcvSXNzdWUvcCcgLWUgJy9TdWdnZXN0ZWQgZml4L3AnCisgICAgZWNobyAiIgorZG9uZQorCitkZWFjdGl2YXRlCisKK2NkICRDRElSCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkKaW5kZXggOGMzNjU1ZC4uNTg2YjMyOSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weQpAQCAtMjgsNiArMjgsNyBAQAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgb3V0ZmlsZSwgaXNOYXRpdmUgKToKICAgICAgICAgIiIiaW5pdGlhbGl6ZSIiIgogICAgICAgICBzZWxmLnBhY2thZ2VzID0ge30KKyAgICAgICAgc2VsZi5leGNsdWRlZF9wa2dzID0gW10KICAgICAgICAgc2VsZi50YXJnZXRQcmVmaXggPSAiJHtsaWJkaXJ9L3B5dGhvbiVzLyIgJSBWRVJTSU9OWzozXQogICAgICAgICBzZWxmLmlzTmF0aXZlID0gaXNOYXRpdmUKICAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRmaWxlCkBAIC01Miw3ICs1Myw3IEBACiAgICAgICAgIHNlbGYub3V0KCAiIiIgIiIiICkKICAgICAgICAgc2VsZi5vdXQoICIiICkKIAotICAgIGRlZiBhZGRQYWNrYWdlKCBzZWxmLCBuYW1lLCBkZXNjcmlwdGlvbiwgZGVwZW5kZW5jaWVzLCBmaWxlbmFtZXMgKToKKyAgICBkZWYgYWRkUGFja2FnZSggc2VsZiwgbmFtZSwgZGVzY3JpcHRpb24sIGRlcGVuZGVuY2llcywgZmlsZW5hbWVzLCBtb2RfZXhjbHVkZSA9IEZhbHNlICk6CiAgICAgICAgICIiImFkZCBhIHBhY2thZ2UgdG8gdGhlIE1ha2VmaWxlIiIiCiAgICAgICAgIGlmIHR5cGUoIGZpbGVuYW1lcyApID09IHR5cGUoICIiICk6CiAgICAgICAgICAgICBmaWxlbmFtZXMgPSBmaWxlbmFtZXMuc3BsaXQoKQpAQCAtNjIsNiArNjMsOCBAQAogICAgICAgICAgICAgICAgIGZ1bGxGaWxlbmFtZXMuYXBwZW5kKCAiJXMlcyIgJSAoIHNlbGYudGFyZ2V0UHJlZml4LCBmaWxlbmFtZSApICkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoIGZpbGVuYW1lICkKKyAgICAgICAgaWYgbW9kX2V4Y2x1ZGU6CisgICAgICAgICAgICBzZWxmLmV4Y2x1ZGVkX3BrZ3MuYXBwZW5kKCBuYW1lICkKICAgICAgICAgc2VsZi5wYWNrYWdlc1tuYW1lXSA9IGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZ1bGxGaWxlbmFtZXMKIAogICAgIGRlZiBkb0JvZHkoIHNlbGYgKToKQEAgLTc0LDEzICs3NywxMSBAQAogICAgICAgICAjCiAKICAgICAgICAgaWYgc2VsZi5pc05hdGl2ZToKLSAgICAgICAgICAgIHJwcm92aWRlTGluZSA9ICdSUFJPVklERVMrPSInCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICAgICAgcnByb3ZpZGVMaW5lICs9ICIlcy1uYXRpdmUgIiAlIG5hbWUucmVwbGFjZSggJyR7UE59JywgJ3B5dGhvbicgKQotICAgICAgICAgICAgcnByb3ZpZGVMaW5lICs9ICciJworICAgICAgICAgICAgcGtnbGlzdCA9IFtdCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBbJyR7UE59LW1vZHVsZXMnXSArIHNvcnRlZChzZWxmLnBhY2thZ2VzKToKKyAgICAgICAgICAgICAgICBwa2dsaXN0LmFwcGVuZCgnJXMtbmF0aXZlJyAlIG5hbWUucmVwbGFjZSgnJHtQTn0nLCAncHl0aG9uJykpCiAKLSAgICAgICAgICAgIHNlbGYub3V0KCBycHJvdmlkZUxpbmUgKQotICAgICAgICAgICAgc2VsZi5vdXQoICIiICkKKyAgICAgICAgICAgIHNlbGYub3V0KCdSUFJPVklERVMgKz0gIiVzIicgJSAiICIuam9pbihwa2dsaXN0KSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMKQEAgLTE0OSw3ICsxNTAsNyBAQAogICAgICAgICBsaW5lID0gJ1JERVBFTkRTXyR7UE59LW1vZHVsZXM9IicKIAogICAgICAgICBmb3IgbmFtZSwgZGF0YSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIFsnJHtQTn0tZGV2JywgJyR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYnXToKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIFsnJHtQTn0tZGV2JywgJyR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYnXSBhbmQgbmFtZSBub3QgaW4gc2VsZi5leGNsdWRlZF9wa2dzOgogICAgICAgICAgICAgICAgIGxpbmUgKz0gIiVzICIgJSBuYW1lCiAKICAgICAgICAgc2VsZi5vdXQoICIlcyBcIiIgJSBsaW5lICkKQEAgLTM4NCw3ICszODUsNyBAQAogICAgICJwdHkuKiB0dHkuKiIgKQogCiAgICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGVzdHMiLCAiUHl0aG9uIHRlc3RzIiwgIiR7UE59LWNvcmUgJHtQTn0tbW9kdWxlcyIsCi0gICAgInRlc3QiICkgIyBwYWNrYWdlCisgICAgInRlc3QiLCBUcnVlICkgIyBwYWNrYWdlCiAKICAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10aHJlYWRpbmciLCAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCiAgICAgIl90aHJlYWRpbmdfbG9jYWwuKiBkdW1teV90aHJlYWQuKiBkdW1teV90aHJlYWRpbmcuKiBtdXRleC4qIHRocmVhZGluZy4qIFF1ZXVlLioiICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weQppbmRleCAwNzU4NjBjLi42MzUyZjhmIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5CkBAIC0zMSw2ICszMSw3IEBACiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBvdXRmaWxlLCBpc05hdGl2ZSApOgogICAgICAgICAiIiJpbml0aWFsaXplIiIiCiAgICAgICAgIHNlbGYucGFja2FnZXMgPSB7fQorICAgICAgICBzZWxmLmV4Y2x1ZGVkX3BrZ3MgPSBbXQogICAgICAgICBzZWxmLnRhcmdldFByZWZpeCA9ICIke2xpYmRpcn0vcHl0aG9uJXMvIiAlIFZFUlNJT05bOjNdCiAgICAgICAgIHNlbGYuaXNOYXRpdmUgPSBpc05hdGl2ZQogICAgICAgICBzZWxmLm91dHB1dCA9IG91dGZpbGUKQEAgLTU1LDcgKzU2LDcgQEAKICAgICAgICAgc2VsZi5vdXQoICIiIiAiIiIgKQogICAgICAgICBzZWxmLm91dCggIiIgKQogCi0gICAgZGVmIGFkZFBhY2thZ2UoIHNlbGYsIG5hbWUsIGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZpbGVuYW1lcyApOgorICAgIGRlZiBhZGRQYWNrYWdlKCBzZWxmLCBuYW1lLCBkZXNjcmlwdGlvbiwgZGVwZW5kZW5jaWVzLCBmaWxlbmFtZXMsIG1vZF9leGNsdWRlID0gRmFsc2UgKToKICAgICAgICAgIiIiYWRkIGEgcGFja2FnZSB0byB0aGUgTWFrZWZpbGUiIiIKICAgICAgICAgaWYgdHlwZSggZmlsZW5hbWVzICkgPT0gdHlwZSggIiIgKToKICAgICAgICAgICAgIGZpbGVuYW1lcyA9IGZpbGVuYW1lcy5zcGxpdCgpCkBAIC02Nyw2ICs2OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5weWNhY2hlUGF0aCggZmlsZW5hbWUgKSApICkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoIGZpbGVuYW1lICkKKyAgICAgICAgaWYgbW9kX2V4Y2x1ZGU6CisgICAgICAgICAgICBzZWxmLmV4Y2x1ZGVkX3BrZ3MuYXBwZW5kKCBuYW1lICkKICAgICAgICAgc2VsZi5wYWNrYWdlc1tuYW1lXSA9IGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZ1bGxGaWxlbmFtZXMKIAogICAgIGRlZiBweWNhY2hlUGF0aCggc2VsZiwgZmlsZW5hbWUgKToKQEAgLTg3LDEzICs5MCwxMSBAQAogICAgICAgICAjCiAKICAgICAgICAgaWYgc2VsZi5pc05hdGl2ZToKLSAgICAgICAgICAgIHJwcm92aWRlTGluZSA9ICdSUFJPVklERVMrPSInCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICAgICAgcnByb3ZpZGVMaW5lICs9ICIlcy1uYXRpdmUgIiAlIG5hbWUucmVwbGFjZSggJyR7UE59JywgJ3B5dGhvbjMnICkKLSAgICAgICAgICAgIHJwcm92aWRlTGluZSArPSAnIicKKyAgICAgICAgICAgIHBrZ2xpc3QgPSBbXQorICAgICAgICAgICAgZm9yIG5hbWUgaW4gWycke1BOfS1tb2R1bGVzJ10gKyBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6CisgICAgICAgICAgICAgICAgcGtnbGlzdC5hcHBlbmQoJyVzLW5hdGl2ZScgJSBuYW1lLnJlcGxhY2UoJyR7UE59JywgJ3B5dGhvbjMnKSkKIAotICAgICAgICAgICAgc2VsZi5vdXQoIHJwcm92aWRlTGluZSApCi0gICAgICAgICAgICBzZWxmLm91dCggIiIgKQorICAgICAgICAgICAgc2VsZi5vdXQoJ1JQUk9WSURFUyArPSAiJXMiJyAlICIgIi5qb2luKHBrZ2xpc3QpKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIwpAQCAtMTYyLDcgKzE2Myw3IEBACiAgICAgICAgIGxpbmUgPSAnUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJwogCiAgICAgICAgIGZvciBuYW1lLCBkYXRhIGluIHNvcnRlZChzZWxmLnBhY2thZ2VzLml0ZW1zKCkpOgotICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gWycke1BOfS1kZXYnLCAnJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiddOgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gWycke1BOfS1kZXYnLCAnJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiddIGFuZCBuYW1lIG5vdCBpbiBzZWxmLmV4Y2x1ZGVkX3BrZ3M6CiAgICAgICAgICAgICAgICAgbGluZSArPSAiJXMgIiAlIG5hbWUKIAogICAgICAgICBzZWxmLm91dCggIiVzIFwiIiAlIGxpbmUgKQpAQCAtMjI0LDcgKzIyNSw3IEBACiAgICAgIiR7YmFzZV9saWJkaXJ9LyoubyAiICsKICAgICAiJHtkYXRhZGlyfS9hY2xvY2FsICIgKwogICAgICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyAiICsKLSAgICAiY29uZmlnL01ha2VmaWxlICIpCisgICAgImNvbmZpZyovTWFrZWZpbGUgIikKIAogICAgIG0uYWRkUGFja2FnZSggIiR7UE59LTJ0bzMiLCAiUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIsICIke1BOfS1jb3JlIiwKICAgICAibGliMnRvMyIgKSAjIHBhY2thZ2UKQEAgLTI1NCw3ICsyNTUsNyBAQAogICAgICJweV9jb21waWxlLiogY29tcGlsZWFsbC4qIiApCiAKICAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb21wcmVzc2lvbiIsICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LWltcG9ydGxpYiAke1BOfS10aHJlYWRpbmcgJHtQTn0tc2hlbGwiLAotICAgICJnemlwLiogemlwZmlsZS4qIHRhcmZpbGUuKiBsaWItZHlubG9hZC9iejIuKi5zbyBsaWItZHlubG9hZC96bGliLiouc28iICkKKyAgICAiZ3ppcC4qIHppcGZpbGUuKiB0YXJmaWxlLiogbGliLWR5bmxvYWQvYnoyLiouc28gbGliLWR5bmxvYWQvemxpYi4qLnNvIGJ6Mi5weSBsem1hLnB5IF9jb21wcmVzc2lvbi5weSIgKQogCiAgICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tY3J5cHQiLCAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKICAgICAiaGFzaGxpYi4qIG1kNS4qIHNoYS4qIGxpYi1keW5sb2FkL2NyeXB0Liouc28gbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyBsaWItZHlubG9hZC9fc2hhMjU2Liouc28gbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIiApCkBAIC00MDIsOCArNDAzLDggQEAKICAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10ZXJtaW5hbCIsICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKICAgICAicHR5LiogdHR5LioiICkKIAotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXRlc3RzIiwgIlB5dGhvbiB0ZXN0cyIsICIke1BOfS1jb3JlIiwKLSAgICAidGVzdCIgKSAjIHBhY2thZ2UKKyAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10ZXN0cyIsICJQeXRob24gdGVzdHMiLCAiJHtQTn0tY29yZSAke1BOfS1jb21wcmVzc2lvbiIsCisgICAgInRlc3QiLCBUcnVlICkgIyBwYWNrYWdlCiAKICAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10aHJlYWRpbmciLCAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCiAgICAgIl90aHJlYWRpbmdfbG9jYWwuKiBkdW1teV90aHJlYWQuKiBkdW1teV90aHJlYWRpbmcuKiBtdXRleC4qIHRocmVhZGluZy4qIHF1ZXVlLioiICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NyZWF0ZS1wdWxsLXJlcXVlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jcmVhdGUtcHVsbC1yZXF1ZXN0CmluZGV4IGU4Mjg1OGIuLjI4MDg4MGIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NyZWF0ZS1wdWxsLXJlcXVlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdApAQCAtMzQsNyArMzQsNyBAQAogdXNhZ2UoKSB7CiBDTUQ9JChiYXNlbmFtZSAkMCkKIGNhdCA8PEVPTQotVXNhZ2U6ICRDTUQgWy1oXSBbLW8gb3V0cHV0X2Rpcl0gWy1tIG1zZ19ib2R5X2ZpbGVdIFstcyBzdWJqZWN0XSBbLXIgcmVsYXRpdmVfdG9dIFstaSBjb21taXRfaWRdIFstZCByZWxhdGl2ZV9kaXJdIC11IHJlbW90ZSBbLWIgYnJhbmNoXQorVXNhZ2U6ICRDTUQgWy1oXSBbLW8gb3V0cHV0X2Rpcl0gWy1tIG1zZ19ib2R5X2ZpbGVdIFstcyBzdWJqZWN0XSBbLXIgcmVsYXRpdmVfdG9dIFstaSBjb21taXRfaWRdIFstZCByZWxhdGl2ZV9kaXJdIC11IHJlbW90ZSBbLWIgYnJhbmNoXSBbLS0gPGZvcm1hdC1wYXRjaCBvcHRpb25zPl0KICAgLWIgYnJhbmNoICAgICAgICAgICBCcmFuY2ggbmFtZSBpbiB0aGUgc3BlY2lmaWVkIHJlbW90ZSAoZGVmYXVsdDogY3VycmVudCBicmFuY2gpCiAgIC1sIGxvY2FsIGJyYW5jaCAgICAgTG9jYWwgYnJhbmNoIG5hbWUgKGRlZmF1bHQ6IEhFQUQpCiAgIC1jICAgICAgICAgICAgICAgICAgQ3JlYXRlIGFuIFJGQyAoUmVxdWVzdCBmb3IgQ29tbWVudCkgcGF0Y2ggc2VyaWVzCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAkQ01EIC11IGNvbnRyaWIgLXIgbWFzdGVyIC1pIG1pc2MgLWIgbml0aW4vbWlzYyAtbyBwdWxsLW1pc2MKICAgICRDTUQgLXUgY29udHJpYiAtcCAiUkZDIFBBVENIIiAtYiBuaXRpbi9leHBlcmltZW50YWwKICAgICRDTUQgLXUgY29udHJpYiAtaSBtaXNjIC1iIG5pdGluL21pc2MgLWQgLi9iaXRiYWtlCisgICAkQ01EIC11IGNvbnRyaWIgLXIgb3JpZ2luL21hc3RlciAtbyAvdG1wL291dC52MyAtLSAtdjMgLS1pbi1yZXBseS10bz0yMDE3MDUxMTEyMDEzNC5YWDc3OTlAc2l0ZS5jb20KIEVPTQogfQogCkBAIC0xMDgsOSArMTA5LDE2IEBACiAJYSkKIAkJQ1BSX0NPTlRSSUJfQVVUT19QVVNIPSIxIgogCQk7OworCS0tKQorCQlzaGlmdAorCQlicmVhaworCQk7OwogCWVzYWMKIGRvbmUKIAorc2hpZnQgIiQoKE9QVElORCAtIDEpKSIKK2V4dHJhb3B0cz0iJEAiCisKIGlmIFsgLXogIiRSRU1PVEUiIF07IHRoZW4KIAllY2hvICJFUlJPUjogTWlzc2luZyBwYXJhbWV0ZXIgLXUgb3IgQ1BSX0NPTlRSSUJfUkVNT1RFIGluIGVudiwgbm8gZ2l0IHJlbW90ZSEiCiAJdXNhZ2UKQEAgLTIwMSw3ICsyMDksNyBAQAogCU9ESVI9JChyZWFscGF0aCAkT0RJUikKIAlwZGlyPSQocHdkKQogCWNkICRSRUxESVIKLQlleHRyYW9wdHM9Ii0tcmVsYXRpdmUiCisJZXh0cmFvcHRzPSIkZXh0cmFvcHRzIC0tcmVsYXRpdmUiCiBmaQogCiAjIEdlbmVyYXRlIHRoZSBwYXRjaGVzIGFuZCBjb3ZlciBsZXR0ZXIKQEAgLTIxOCw3ICsyMjYsNyBAQAogWyAtbiAiJFJFTERJUiIgXSAmJiBjZCAkcGRpcgogCiAjIEN1c3RvbWl6ZSB0aGUgY292ZXIgbGV0dGVyCi1DTD0iJE9ESVIvMDAwMC1jb3Zlci1sZXR0ZXIucGF0Y2giCitDTD0iJChlY2hvICRPRElSLyowMDAwLWNvdmVyLWxldHRlci5wYXRjaCkiCiBQTT0iJE9ESVIvcHVsbC1tc2ciCiBHSVRfVkVSU0lPTj0kKGBnaXQgLS12ZXJzaW9uYCB8IHRyIC1kICdbOmFscGhhOl1bOnNwYWNlOl0uJyB8IHNlZCAncy9cKC4uLlwpLiovXDEvJykKIE5FV0VSX0dJVF9WRVJTSU9OPTIxMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvZGV2dG9vbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2RldnRvb2wKaW5kZXggYzlhZDlkZC4uNTI5MmYxOCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvZGV2dG9vbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kZXZ0b29sCkBAIC0xMzAsMjUgKzEzMCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2lwZWZpbGUnOiByZWNpcGVmaWxlfQogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0ZvdW5kIHJlY2lwZSAlcycgJSB3b3Jrc3BhY2VbcG5dKQogCi1kZWYgY3JlYXRlX3VubG9ja2Vkc2lncygpOgotICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgbWFrZSB1bmxvY2tlZC1zaWdzLmluYyBtYXRjaCB0aGUgcmVjaXBlcyBpbiB0aGUKLSAgICB3b3Jrc3BhY2UuIFRoaXMgcnVucyBvbiBldmVyeSBydW4gb2YgZGV2dG9vbCwgYnV0IGl0IGxldHMgdXMgZW5zdXJlCi0gICAgdGhlIHVubG9ja2VkIGl0ZW1zIGFyZSBpbiBzeW5jIHdpdGggdGhlIHdvcmtzcGFjZS4gIiIiCi0KLSAgICBjb25mZGlyID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCAnY29uZicpCi0gICAgdW5sb2NrZWRzaWdzID0gb3MucGF0aC5qb2luKGNvbmZkaXIsICd1bmxvY2tlZC1zaWdzLmluYycpCi0gICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbmZkaXIpCi0gICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjb25mZGlyLCAndW5sb2NrZWQtc2lncy5pbmMnKSwgJ3cnKSBhcyBmOgotICAgICAgICBmLndyaXRlKCIjIERPIE5PVCBNT0RJRlkhIFlPVVIgQ0hBTkdFUyBXSUxMIEJFIExPU1QuXG4iICsKLSAgICAgICAgICAgICAgICAiIyBUaGlzIGxheWVyIHdhcyBjcmVhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgZGV2dG9vbCIgKwotICAgICAgICAgICAgICAgICIgdXRpbGl0eSBpbiBvcmRlciB0b1xuIiArCi0gICAgICAgICAgICAgICAgIiMgY29udGFpbiByZWNpcGVzIHRoYXQgYXJlIHVubG9ja2VkLlxuIikKLQotICAgICAgICBmLndyaXRlKCdTSUdHRU5fVU5MT0NLRURfUkVDSVBFUyArPSAiXFxcbicpCi0gICAgICAgIGZvciBwbiBpbiB3b3Jrc3BhY2U6Ci0gICAgICAgICAgICBmLndyaXRlKCcgICAgJyArIHBuKQotICAgICAgICBmLndyaXRlKCciJykKLQogZGVmIGNyZWF0ZV93b3Jrc3BhY2UoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICBpZiBhcmdzLmxheWVycGF0aDoKICAgICAgICAgd29ya3NwYWNlZGlyID0gb3MucGF0aC5hYnNwYXRoKGFyZ3MubGF5ZXJwYXRoKQpAQCAtMzMyLDcgKzMxMyw2IEBACiAKICAgICBpZiBub3QgZ2V0YXR0cihhcmdzLCAnbm9fd29ya3NwYWNlJywgRmFsc2UpOgogICAgICAgICByZWFkX3dvcmtzcGFjZSgpCi0gICAgICAgIGNyZWF0ZV91bmxvY2tlZHNpZ3MoKQogCiAgICAgdHJ5OgogICAgICAgICByZXQgPSBhcmdzLmZ1bmMoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2FyZ3BhcnNlX29lLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2FyZ3BhcnNlX29lLnB5CmluZGV4IGJmNmViMTcuLjliZGZjMWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9hcmdwYXJzZV9vZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYXJncGFyc2Vfb2UucHkKQEAgLTE2NywzICsxNjcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc3VwZXIoT2VIZWxwRm9ybWF0dGVyLCBzZWxmKS5fZm9ybWF0X2FjdGlvbihhY3Rpb24pCisKK2RlZiBpbnRfcG9zaXRpdmUodmFsdWUpOgorICAgIGl2YWx1ZSA9IGludCh2YWx1ZSkKKyAgICBpZiBpdmFsdWUgPD0gMDoKKyAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgIiVzIGlzIG5vdCBhIHBvc2l0aXZlIGludCB2YWx1ZSIgJSB2YWx1ZSkKKyAgICByZXR1cm4gaXZhbHVlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2hlbHAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2hlbHAucHkKaW5kZXggNGYwZDc3Mi4uODVkNDQ2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9oZWxwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3AvaGVscC5weQpAQCAtODE4LDYgKzgxOCwxMCBAQAogCiB5b2N0b19sYXllcl9jcmVhdGVfdXNhZ2UgPSAiIiIKIAorIFdBUk5JTkc6IHRoaXMgcGx1Z2luIHdpbGwgYmUgcmVtb3ZlZCBzdGFydGluZyAyLjUgZGV2ZWxvcG1lbnQgaW4gZmF2b3VyCisgb2YgdXNpbmcgJ2JpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcicgc2NyaXB0L3BsdWdpbiwgb2ZmZXJpbmcgYSBzaW5nbGUKKyBzY3JpcHQgdG8gbWFuYWdlIGxheWVycy4KKwogIENyZWF0ZSBhIG5ldyBnZW5lcmljIFlvY3RvIGxheWVyCiAKICB1c2FnZTogeW9jdG8tbGF5ZXIgY3JlYXRlIDxsYXllci1uYW1lPiBbbGF5ZXJfcHJpb3JpdHldCkBAIC04NDUsNiArODQ5LDEwIEBACiAKIHlvY3RvX2xheWVyX2NyZWF0ZV9oZWxwID0gIiIiCiAKK1dBUk5JTkc6IHRoaXMgcGx1Z2luIHdpbGwgYmUgcmVtb3ZlZCBzdGFydGluZyAyLjUgZGV2ZWxvcG1lbnQgaW4gZmF2b3VyCitvZiB1c2luZyAnYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyJyBzY3JpcHQvcGx1Z2luLCBvZmZlcmluZyBhIHNpbmdsZQorc2NyaXB0IHRvIG1hbmFnZSBsYXllcnMuCisKIE5BTUUKICAgICB5b2N0by1sYXllciBjcmVhdGUgLSBDcmVhdGUgYSBuZXcgZ2VuZXJpYyBZb2N0byBsYXllcgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKaW5kZXggODI4NDAwZC4uZmIzODY2ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwpAQCAtNCw1ICs0LDMgQEAKIAogaW5jbHVkZSBmZWF0dXJlcy91c2ItbmV0L3VzYi1uZXQuc2NjCiAKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKLWluY2x1ZGUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmluZGV4IDIwZjIwNTkuLjkxN2YwZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAppbmRleCBjMzM2MDA3Li4yMmVkMjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKQEAgLTE5LDcgKzE5LDEwIEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWExNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKaW5kZXggNWNjODJlOC4uYmFlOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCkBAIC0yMCw3ICsyMCw5IEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmM2UxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmluZGV4IDA3MGJkODcuLjYyZDE4MTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzkxMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTdkN2NiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAppbmRleCBlYWY0MzY3Li5kZmJlY2I1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc0YzllCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19CitLQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaWYgc21wID09ICJ5IjogfX0KK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKKyNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgorS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IDU2ZThhZDMuLmE4MDljNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NzUyYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuOCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5iYgppbmRleCBmZGE5NTViLi4zYmE0MjI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20uYmIKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKICAgICAgICAgICAgIgogCiB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX25lZWRfa2JyYW5jaCA9PSAieSIgYW5kIGN1c3RvbV9rZXJuZWxfa2JyYW5jaCBhbmQgY3VzdG9tX2tlcm5lbF9rYnJhbmNoICE9ICJtYXN0ZXIiOiB9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4Mjc1OWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKQEAgLTAsMCArMSBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLnNjYwppbmRleCAwYjZiNDEzLi42NGQzZWQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS5zY2MKQEAgLTE0LDUgKzE0LDMgQEAKICMgVGhlc2UgYXJlIHVzZWQgYnkgeW9jdG8ta2VybmVsIHRvIGFkZCBjb25maWcgZnJhZ21lbnRzIGFuZCBmZWF0dXJlcy4KICMgRG9uJ3QgcmVtb3ZlIGlmIHlvdSBwbGFuIG9uIHVzaW5nIHlvY3RvLWtlcm5lbCB3aXRoIHRoaXMgQlNQLgogCi1rY29uZiBoYXJkd2FyZSB7ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCAzZDMyZjExLi4zZTRjNTRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKQEAgLTE3LDUgKzE3LDMgQEAKIGluY2x1ZGUgY2ZnL2Jvb3QtbGl2ZS5zY2MKIGluY2x1ZGUgZmVhdHVyZXMvcG93ZXIvaW50ZWwuc2NjCiAKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKLWluY2x1ZGUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKaW5kZXggMjBmMjA1OS4uOTE3ZjBlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKQEAgLTEsNSArMSw1IEBACiB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTApIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InVzZV9kZWZhdWx0X2tlcm5lbCIgcHJpbzoiMTAiIG1zZzoiV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjEyKSBrZXJuZWw/ICh5L24pIiBkZWZhdWx0OiJ5In19CiAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIHVzZV9kZWZhdWx0X2tlcm5lbCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJrZXJuZWxfY2hvaWNlIiBnZW46ImJzcC5rZXJuZWwua2VybmVscyIgcHJpbzoiMTAiIG1zZzoiUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUDoiIGRlZmF1bHQ6ImxpbnV4LXlvY3RvXzQuMTAifX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMiJ9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAppbmRleCBjMzM2MDA3Li4yMmVkMjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApAQCAtMTksNyArMTksMTAgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTVhMTc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuMSI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCmluZGV4IDVjYzgyZTguLmJhZTk0M2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCkBAIC0yMCw3ICsyMCw5IEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzZTEwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKaW5kZXggMDcwYmQ4Ny4uNjJkMTgxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCkBAIC0yMCw3ICsyMCw5IEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzkxMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuOCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWQxNDRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZDpzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMSIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAppbmRleCAwMjA1OTIwLi5mODYxNmVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkNTdmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtMCwwICsxLDM3IEBACisjIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZDpzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAiCisKKyMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKKyMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCitTUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAppbmRleCBhYjY0NGJkLi4wYTlkNDc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjguYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzNWFlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuOCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkOnN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCBmMzlkYzNlLi43OTJmZGM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKQEAgLTQsNSArNCwzIEBACiBpbmNsdWRlIGNmZy91c2ItbWFzcy1zdG9yYWdlLnNjYwogaW5jbHVkZSBjZmcvZnMvdmZhdC5zY2MKIAota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwotaW5jbHVkZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAppbmRleCAyMGYyMDU5Li45MTdmMGUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IGMzMzYwMDcuLjIyZWQyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCkBAIC0xOSw3ICsxOSwxMCBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWExNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMSIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKaW5kZXggNWNjODJlOC4uYmFlOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjNlMTA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAppbmRleCAwNzBiZDg3Li42MmQxODE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzOTEzMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlN2Q3Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmluZGV4IGVhZjQzNjcuLmRmYmVjYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKQEAgLTIwLDkgKzIwLDEyIEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAiCiAKICMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc0YzllCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCisKK1BSIDo9ICIke1BSfS4xIgorCitDT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKK1NSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IDU2ZThhZDMuLmE4MDljNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTc1MmE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCBmMzlkYzNlLi43OTJmZGM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCkBAIC00LDUgKzQsMyBAQAogaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKIGluY2x1ZGUgY2ZnL2ZzL3ZmYXQuc2NjCiAKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKLWluY2x1ZGUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmluZGV4IDIwZjIwNTkuLjkxN2YwZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAppbmRleCBjMzM2MDA3Li4yMmVkMjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKQEAgLTE5LDcgKzE5LDEwIEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWExNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKaW5kZXggNWNjODJlOC4uYmFlOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCkBAIC0yMCw3ICsyMCw5IEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmM2UxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmluZGV4IDA3MGJkODcuLjYyZDE4MTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzkxMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDJlNWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9lZGdlcm91dGVyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2VkZ2Vyb3V0ZXIiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAppbmRleCA1MTJiNTk3Li4zMzZhOTU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzMzYzMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMiI6IH19IHRoaXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworUFIgOj0gIiR7UFJ9LjEiCisKK0NPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2VkZ2Vyb3V0ZXIiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvZWRnZXJvdXRlciIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19CitLQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgorCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaWYgc21wID09ICJ5IjogfX0KK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKKyNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgorS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IGRiYjBmZDUuLjdkMTg1NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApAQCAtMjAsOSArMjAsMTIgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKIAogIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZWI0MGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuOCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2VkZ2Vyb3V0ZXIiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvZWRnZXJvdXRlciIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCA3YWFjOGIwLi44OWJiOTdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKQEAgLTYsNSArNiwzIEBACiAKIGluY2x1ZGUgY2ZnL2RtYWVuZ2luZS5zY2MKIAota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwotaW5jbHVkZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAppbmRleCAyMGYyMDU5Li45MTdmMGUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IGMzMzYwMDcuLjIyZWQyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCkBAIC0xOSw3ICsxOSwxMCBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWExNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMSIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKaW5kZXggNWNjODJlOC4uYmFlOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjNlMTA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAppbmRleCAwNzBiZDg3Li42MmQxODE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzOTEzMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlN2Q3Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmluZGV4IGVhZjQzNjcuLmRmYmVjYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKQEAgLTIwLDkgKzIwLDEyIEBACiB7eyBpZiBzbXAgPT0gInkiOiB9fQogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKIAotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAiCiAKICMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc0YzllCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCkBAIC0wLDAgKzEsMzcgQEAKKyMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCisKK1BSIDo9ICIke1BSfS4xIgorCitDT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKK1NSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IDU2ZThhZDMuLmE4MDljNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTc1MmE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCmluZGV4IDgzMDFlMDUuLmQyNWQwYTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwpAQCAtMSw1ICsxLDMgQEAKICMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5zY2MKIGtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS5jZmcKIAota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwotaW5jbHVkZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAppbmRleCAyMGYyMDU5Li45MTdmMGUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApAQCAtMSw1ICsxLDUgQEAKIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMCkga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMCJ9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IDdlM2NlNWIuLmQ3YjljZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCkBAIC00NSwxMSArNDUsMTUgQEAKIHt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQogS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKIAore3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19CiB7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMzkyY2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAppbmRleCAyOWFkMTdiLi44YzBmZDE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZApAQCAtNDUsMTEgKzQ1LDE0IEBACiB7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KIEtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCiAKK3t7IGlmIHFlbXVhcmNoICE9ICJhcm0iOiB9fQoge3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2ViMjE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSw2NyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19CitLQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgorCit7eyBpZiBxZW11YXJjaCAhPSAiYXJtIjogfX0KK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgorU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKaW5kZXggYTczYjFhYS4uMjJhYmMyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCkBAIC00NSwxMSArNDUsMTQgQEAKIHt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQogS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKIAore3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19CiB7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0MDY3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjgiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImFybSIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6ImFybSIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9jb21tb24tcGMiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJ4ODZfNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJ4ODZfNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIm1pcHMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwcyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjgiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWZkOWVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMSIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAppbmRleCA1ODczZGE0Li44NTFkOTZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCkBAIC00NSwxMyArNDUsMTcgQEAKIHt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQogS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKIAore3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19CiB7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdjZTM3ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtMCwwICsxLDY3IEBACisjIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KK3t7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlmIHFlbXVhcmNoICE9ICJhcm0iOiB9fQore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICIKKworIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAorIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KK1NSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKK1NSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmluZGV4IGNkZWU3NzMuLjcxYmU5MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC00NSwxMyArNDUsMTcgQEAKIHt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQogS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKIAore3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19CiB7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGMyODgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwppbmRleCA5YjdjMjkxLi45ZDIwZDE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCkBAIC0xMCw1ICsxMCwzIEBACiBpbmNsdWRlIGNmZy91c2ItbWFzcy1zdG9yYWdlLnNjYwogaW5jbHVkZSBmZWF0dXJlcy9wb3dlci9pbnRlbC5zY2MKIAota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwotaW5jbHVkZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKaW5kZXggMjBmMjA1OS4uOTE3ZjBlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCkBAIC0xLDUgKzEsNSBAQAoge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InVzZV9kZWZhdWx0X2tlcm5lbCIgcHJpbzoiMTAiIG1zZzoiV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjEwKSBrZXJuZWw/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMikga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQogCiB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCB1c2VfZGVmYXVsdF9rZXJuZWwgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEwIn19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJrZXJuZWxfY2hvaWNlIiBnZW46ImJzcC5rZXJuZWwua2VybmVscyIgcHJpbzoiMTAiIG1zZzoiUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUDoiIGRlZmF1bHQ6ImxpbnV4LXlvY3RvXzQuMTIifX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IGMzMzYwMDcuLjIyZWQyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApAQCAtMTksNyArMTksMTAgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCiAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE1YTE3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuMSI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAppbmRleCA1Y2M4MmU4Li5iYWU5NDNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKQEAgLTIwLDcgKzIwLDkgQEAKIHt7IGlmIHNtcCA9PSAieSI6IH19CiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgogCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzZTEwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKQEAgLTAsMCArMSwzNyBAQAorIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQore3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19CisKK3t7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQorS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKKwore3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KK3t7IGlmIHNtcCA9PSAieSI6IH19CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgorCitTUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKKyAgICAgICAgICAgIgorCisjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCisjIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbworU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKKyNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCisjUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKK0tFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKaW5kZXggMDcwYmQ4Ny4uNjJkMTgxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZApAQCAtMjAsNyArMjAsOSBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAorU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCiAgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAogICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjguYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzOTEzMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjgiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC44IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlN2Q3Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMSI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmluZGV4IGVhZjQzNjcuLmRmYmVjYjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NzRjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtMCwwICsxLDM3IEBACisjIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgorCitQUiA6PSAiJHtQUn0uMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KKwore3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Cit7eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQorCit7eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KK0tCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCisKK3t7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Cit7eyBpZiBzbXAgPT0gInkiOiB9fQorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKKworU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCisgICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAorICAgICAgICAgICAiCisKKyMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKKyMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCitTUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCitTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCisjTElOVVhfVkVSU0lPTiA9ICI0LjEwIgorI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCitLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKaW5kZXggNTZlOGFkMy4uYTgwOWM3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCkBAIC0yMCw5ICsyMCwxMiBAQAoge3sgaWYgc21wID09ICJ5IjogfX0KIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKKyAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKICAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAorICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKICAgICAgICAgICAgIgogCiAjIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk3NTJhOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC44LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC44IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuOCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL2h0bWwvcmVwb3J0Lmh0bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnVpbGRfcGVyZi9odG1sL3JlcG9ydC5odG1sCmluZGV4IDE2NWNiYjguLjI5MWFkOWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL2h0bWwvcmVwb3J0Lmh0bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvaHRtbC9yZXBvcnQuaHRtbApAQCAtNTMsOSArNTMsMTEgQEAKICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKIH0KIC5kZXRhaWxzIHRoIHsKLSAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgcGFkZGluZy1yaWdodDogOHB4OwogfQorLmRldGFpbHMucGxhaW4gdGggeworICBmb250LXdlaWdodDogbm9ybWFsOworfQogLnByZWZvcm1hdHRlZCB7CiAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKQEAgLTExOCwyOSArMTIwLDMyIEBACiAgICAgICB7JSBlbHNlICV9CiAgICAgICAgIHslIHNldCByb3dfc3R5bGUgPSAnc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYiJyAlfQogICAgICAgeyUgZW5kaWYgJX0KLSAgICAgIDx0ciB7eyByb3dfc3R5bGUgfX0+PHRkPnt7IHRlc3QubmFtZSB9fToge3sgdGVzdC5kZXNjcmlwdGlvbiB9fTwvdGQ+CiAgICAgICB7JSBpZiB0ZXN0LnN0YXR1cyA9PSAnU1VDQ0VTUycgJX0KICAgICAgICAgeyUgZm9yIG1lYXN1cmVtZW50IGluIHRlc3QubWVhc3VyZW1lbnRzICV9Ci0gICAgICAgICAgeyMgYWRkIGVtcHR5IGNlbGwgaW4gcGxhY2Ugb2YgdGhlIHRlc3QgbmFtZSN9Ci0gICAgICAgICAgeyUgaWYgbG9vcC5pbmRleCA+IDEgJX08dGQ+PC90ZD57JSBlbmRpZiAlfQotICAgICAgICAgIHslIGlmIG1lYXN1cmVtZW50LmFic2RpZmYgPiAwICV9Ci0gICAgICAgICAgICB7JSBzZXQgcmVzdWx0X3N0eWxlID0gImNvbG9yOiByZWQiICV9Ci0gICAgICAgICAgeyUgZWxpZiBtZWFzdXJlbWVudC5hYnNkaWZmID09IG1lYXN1cmVtZW50LmFic2RpZmYgJX0KLSAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IGdyZWVuIiAlfQotICAgICAgICAgIHslIGVsc2UgJX0KLSAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IG9yYW5nZSIgJX0KLSAgICAgICAgICB7JWVuZGlmICV9Ci0gICAgICAgICAgPHRkPnt7IG1lYXN1cmVtZW50LmRlc2NyaXB0aW9uIH19PC90ZD4KLSAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIj57eyBtZWFzdXJlbWVudC52YWx1ZS5tZWFuIH19PC90ZD4KLSAgICAgICAgICA8dGQgc3R5bGU9Int7IHJlc3VsdF9zdHlsZSB9fSI+e3sgbWVhc3VyZW1lbnQuYWJzZGlmZl9zdHIgfX08L3RkPgotICAgICAgICAgIDx0ZCBzdHlsZT0ie3sgcmVzdWx0X3N0eWxlIH19Ij57eyBtZWFzdXJlbWVudC5yZWxkaWZmIH19PC90ZD4KLSAgICAgICAgICA8L3RyPjx0ciB7eyByb3dfc3R5bGUgfX0+CisgICAgICAgICAgPHRyIHt7IHJvd19zdHlsZSB9fT4KKyAgICAgICAgICAgIHslIGlmIGxvb3AuaW5kZXggPT0gMSAlfQorICAgICAgICAgICAgICA8dGQ+e3sgdGVzdC5uYW1lIH19OiB7eyB0ZXN0LmRlc2NyaXB0aW9uIH19PC90ZD4KKyAgICAgICAgICAgIHslIGVsc2UgJX0KKyAgICAgICAgICAgICAgeyMgYWRkIGVtcHR5IGNlbGwgaW4gcGxhY2Ugb2YgdGhlIHRlc3QgbmFtZSN9CisgICAgICAgICAgICAgIDx0ZD48L3RkPgorICAgICAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgICAgIHslIGlmIG1lYXN1cmVtZW50LmFic2RpZmYgPiAwICV9CisgICAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IHJlZCIgJX0KKyAgICAgICAgICAgIHslIGVsaWYgbWVhc3VyZW1lbnQuYWJzZGlmZiA9PSBtZWFzdXJlbWVudC5hYnNkaWZmICV9CisgICAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IGdyZWVuIiAlfQorICAgICAgICAgICAgeyUgZWxzZSAlfQorICAgICAgICAgICAgICB7JSBzZXQgcmVzdWx0X3N0eWxlID0gImNvbG9yOiBvcmFuZ2UiICV9CisgICAgICAgICAgICB7JWVuZGlmICV9CisgICAgICAgICAgICA8dGQ+e3sgbWVhc3VyZW1lbnQuZGVzY3JpcHRpb24gfX08L3RkPgorICAgICAgICAgICAgPHRkIHN0eWxlPSJmb250LXdlaWdodDogYm9sZCI+e3sgbWVhc3VyZW1lbnQudmFsdWUubWVhbiB9fTwvdGQ+CisgICAgICAgICAgICA8dGQgc3R5bGU9Int7IHJlc3VsdF9zdHlsZSB9fSI+e3sgbWVhc3VyZW1lbnQuYWJzZGlmZl9zdHIgfX08L3RkPgorICAgICAgICAgICAgPHRkIHN0eWxlPSJ7eyByZXN1bHRfc3R5bGUgfX0iPnt7IG1lYXN1cmVtZW50LnJlbGRpZmYgfX08L3RkPgorICAgICAgICAgIDwvdHI+CiAgICAgICAgIHslIGVuZGZvciAlfQogICAgICAgeyUgZWxzZSAlfQogICAgICAgICA8dGQgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogcmVkOyI+e3t0ZXN0LnN0YXR1cyB9fTwvdGQ+CiAgICAgICAgIDx0ZD48L3RkPiA8dGQ+PC90ZD4gPHRkPjwvdGQ+IDx0ZD48L3RkPgogICAgICAgeyUgZW5kaWYgJX0KLSAgICAgIDwvdHI+CiAgICAgeyUgZW5kZm9yICV9CiAgIDwvdGFibGU+CiAKQEAgLTE2NSw2ICsxNzAsNyBAQAogICAgICAgICAgICAge3sgbWVhc3VyZW1lbnQuYWJzZGlmZl9zdHIgfX0gKHt7bWVhc3VyZW1lbnQucmVsZGlmZn19KQogICAgICAgICAgICAgPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICB7IyBUYWJsZSBmb3IgdHJlbmRjaGFydCBhbmQgdGhlIHN0YXRpc3RpY3MgI30KICAgICAgICAgICA8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlIj4KICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogNzUlIj4KQEAgLTE3Myw3ICsxNzksNyBAQAogICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgeyMgTWVhc3VyZW1lbnQgc3RhdGlzdGljcyAjfQotICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZGV0YWlscyI+CisgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJkZXRhaWxzIHBsYWluIj4KICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgPHRoPlRlc3QgcnVuczwvdGg+PHRkPnt7IG1lYXN1cmVtZW50LnZhbHVlLnNhbXBsZV9jbnQgfX08L3RkPgogICAgICAgICAgICAgICAgICAgPC90cj48dHI+CkBAIC0xODYsMTEgKzE5Miw4NSBAQAogICAgICAgICAgICAgICAgICAgICA8dGg+U3RkZXY8L3RoPjx0ZD57eyBtZWFzdXJlbWVudC52YWx1ZS5zdGRldiB9fTwvdGQ+CiAgICAgICAgICAgICAgICAgICA8L3RyPjx0cj4KICAgICAgICAgICAgICAgICAgICAgPHRoPjxkaXYgaWQ9Int7IHRlc3QubmFtZSB9fV97eyBtZWFzdXJlbWVudC5uYW1lIH19X2NoYXJ0X3BuZyI+PC9kaXY+PC90aD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICB7IyBUYXNrIGFuZCByZWNpcGUgc3VtbWFyeSBmcm9tIGJ1aWxkc3RhdHMgI30KKyAgICAgICAgICB7JSBpZiAnYnVpbGRzdGF0cycgaW4gbWVhc3VyZW1lbnQgJX0KKyAgICAgICAgICAgIFRhc2sgcmVzb3VyY2UgdXNhZ2UKKyAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZGV0YWlscyIgc3R5bGU9IndpZHRoOjEwMCUiPgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoPk51bWJlciBvZiB0YXNrczwvdGg+CisgICAgICAgICAgICAgICAgPHRoPlRvcCBjb25zdW1lcnMgb2YgY3B1dGltZTwvdGg+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3AiPnt7IG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudGFza3MuY291bnQgfX0gKHt7IG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudGFza3MuY2hhbmdlIH19KTwvdGQ+CisgICAgICAgICAgICAgICAgeyMgVGFibGUgb2YgbW9zdCByZXNvdXJjZS1odW5ncnkgdGFza3MgI30KKyAgICAgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImRldGFpbHMgcGxhaW4iPgorICAgICAgICAgICAgICAgICAgICB7JSBmb3IgZGlmZiBpbiBtZWFzdXJlbWVudC5idWlsZHN0YXRzLnRvcF9jb25zdW1lcnxyZXZlcnNlICV9CisgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgZGlmZi5wa2cgfX0ue3sgZGlmZi50YXNrIH19PC90aD4KKyAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJyUwLjBmJyAlIGRpZmYudmFsdWUyIH19IHM8L3RkPgorICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0KKyAgICAgICAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aD5CaWdnZXN0IGluY3JlYXNlIGluIGNwdXRpbWU8L3RoPgorICAgICAgICAgICAgICAgIDx0aD5CaWdnZXN0IGRlY3JlYXNlIGluIGNwdXRpbWU8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgeyMgVGFibGUgYmlnZ2VzdCBpbmNyZWFzZSBpbiByZXNvdXJjZSB1c2FnZSAjfQorICAgICAgICAgICAgICAgIDx0ZD4KKyAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZGV0YWlscyBwbGFpbiI+CisgICAgICAgICAgICAgICAgICAgIHslIGZvciBkaWZmIGluIG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudG9wX2luY3JlYXNlfHJldmVyc2UgJX0KKyAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyBkaWZmLnBrZyB9fS57eyBkaWZmLnRhc2sgfX08L3RoPgorICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnJSswLjBmJyAlIGRpZmYuYWJzZGlmZiB9fSBzPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgeyMgVGFibGUgYmlnZ2VzdCBkZWNyZWFzZSBpbiByZXNvdXJjZSB1c2FnZSAjfQorICAgICAgICAgICAgICAgIDx0ZD4KKyAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iZGV0YWlscyBwbGFpbiI+CisgICAgICAgICAgICAgICAgICAgIHslIGZvciBkaWZmIGluIG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudG9wX2RlY3JlYXNlICV9CisgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgZGlmZi5wa2cgfX0ue3sgZGlmZi50YXNrIH19PC90aD4KKyAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJyUrMC4wZicgJSBkaWZmLmFic2RpZmYgfX0gczwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgIHslIGVuZGZvciAlfQorICAgICAgICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgICAgeyMgUmVjaXBlIHZlcnNpb24gZGlmZmVyZW5jZXMgI30KKyAgICAgICAgICAgIHslIGlmIG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudmVyX2RpZmYgJX0KKyAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTZweCI+UmVjaXBlIHZlcnNpb24gY2hhbmdlczwvZGl2PgorICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImRldGFpbHMiPgorICAgICAgICAgICAgICAgIHslIGZvciBoZWFkLCByZWNpcGVzIGluIG1lYXN1cmVtZW50LmJ1aWxkc3RhdHMudmVyX2RpZmYuaXRlbXMoKSAlfQorICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGggY29sc3Bhbj0iMiI+e3sgaGVhZCB9fTwvdGg+CisgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgeyUgZm9yIG5hbWUsIGluZm8gaW4gcmVjaXBlc3xzb3J0ICV9CisgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgbmFtZSB9fTwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZm8gfX08L3RkPgorICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICB7JSBlbHNlICV9CisgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHgiPk5vIHJlY2lwZSB2ZXJzaW9uIGNoYW5nZXMgZGV0ZWN0ZWQ8L2Rpdj4KKyAgICAgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgPC9kaXY+CiAgICAgICB7JSBlbmRmb3IgJX0KICAgICB7IyBVbnN1Y2Nlc3NmdWwgdGVzdCAjfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvcmVwb3J0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvcmVwb3J0LnB5CmluZGV4IGViMDBjY2MuLmQ5OWEzNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL3JlcG9ydC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnVpbGRfcGVyZi9yZXBvcnQucHkKQEAgLTExLDEyICsxMSwxNSBAQAogIyBtb3JlIGRldGFpbHMuCiAjCiAiIiJIYW5kbGluZyBvZiBidWlsZCBwZXJmIHRlc3QgcmVwb3J0cyIiIgotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIE1hcHBpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBNYXBwaW5nLCBuYW1lZHR1cGxlCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUKIGZyb20gbnVtYmVycyBpbXBvcnQgTnVtYmVyCiBmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1lYW4sIHN0ZGV2LCB2YXJpYW5jZQogCiAKK0FnZ3JlZ2F0ZVRlc3REYXRhID0gbmFtZWR0dXBsZSgnQWdncmVnYXRlVGVzdERhdGEnLCBbJ21ldGFkYXRhJywgJ3Jlc3VsdHMnXSkKKworCiBkZWYgaXNvZm10X3RvX3RpbWVzdGFtcChzdHJpbmcpOgogICAgICIiIkNvbnZlcnQgdGltZXN0YW1wIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQgaW50byB1bml4IHRpbWVzdGFtcCIiIgogICAgIGlmICcuJyBpbiBzdHJpbmc6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnVpbGRzdGF0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9idWlsZHN0YXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YWFkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnVpbGRzdGF0cy5weQpAQCAtMCwwICsxLDM0OSBAQAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisjIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisjIG1vcmUgZGV0YWlscy4KKyMKKyIiIkZ1bmN0aW9uYWxpdHkgZm9yIGFuYWx5emluZyBidWlsZHN0YXRzIiIiCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlLE9yZGVyZWREaWN0Citmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1lYW4KKworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigpCisKKwordGFza2RpZmZfZmllbGRzID0gKCdwa2cnLCAncGtnX29wJywgJ3Rhc2snLCAndGFza19vcCcsICd2YWx1ZTEnLCAndmFsdWUyJywKKyAgICAgICAgICAgICAgICAgICAnYWJzZGlmZicsICdyZWxkaWZmJykKK1Rhc2tEaWZmID0gbmFtZWR0dXBsZSgnVGFza0RpZmYnLCAnICcuam9pbih0YXNrZGlmZl9maWVsZHMpKQorCisKK2NsYXNzIEJTRXJyb3IoRXhjZXB0aW9uKToKKyAgICAiIiJFcnJvciBoYW5kbGluZyBvZiBidWlsZHN0YXRzIiIiCisgICAgcGFzcworCisKK2NsYXNzIEJTVGFzayhkaWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZlsnc3RhcnRfdGltZSddID0gTm9uZQorICAgICAgICBzZWxmWydlbGFwc2VkX3RpbWUnXSA9IE5vbmUKKyAgICAgICAgc2VsZlsnc3RhdHVzJ10gPSBOb25lCisgICAgICAgIHNlbGZbJ2lvc3RhdCddID0ge30KKyAgICAgICAgc2VsZlsncnVzYWdlJ10gPSB7fQorICAgICAgICBzZWxmWydjaGlsZF9ydXNhZ2UnXSA9IHt9CisgICAgICAgIHN1cGVyKEJTVGFzaywgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNwdXRpbWUoc2VsZik6CisgICAgICAgICIiIlN1bSBvZiB1c2VyIGFuZCBzeXN0ZW0gdGltZSB0YWtlbiBieSB0aGUgdGFzayIiIgorICAgICAgICBydXNhZ2UgPSBzZWxmWydydXNhZ2UnXVsncnVfc3RpbWUnXSArIHNlbGZbJ3J1c2FnZSddWydydV91dGltZSddCisgICAgICAgIGlmIHNlbGZbJ2NoaWxkX3J1c2FnZSddOgorICAgICAgICAgICAgIyBDaGlsZCBydXNhZ2UgbWF5IGhhdmUgYmVlbiBvcHRpbWl6ZWQgb3V0CisgICAgICAgICAgICByZXR1cm4gcnVzYWdlICsgc2VsZlsnY2hpbGRfcnVzYWdlJ11bJ3J1X3N0aW1lJ10gKyBzZWxmWydjaGlsZF9ydXNhZ2UnXVsncnVfdXRpbWUnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHJ1c2FnZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdhbGx0aW1lKHNlbGYpOgorICAgICAgICAiIiJFbGFwc2VkIHdhbGwgY2xvY2sgdGltZSIiIgorICAgICAgICByZXR1cm4gc2VsZlsnZWxhcHNlZF90aW1lJ10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZWFkX2J5dGVzKHNlbGYpOgorICAgICAgICAiIiJCeXRlcyByZWFkIGZyb20gdGhlIGJsb2NrIGxheWVyIiIiCisgICAgICAgIHJldHVybiBzZWxmWydpb3N0YXQnXVsncmVhZF9ieXRlcyddCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd3JpdGVfYnl0ZXMoc2VsZik6CisgICAgICAgICIiIkJ5dGVzIHdyaXR0ZW4gdG8gdGhlIGJsb2NrIGxheWVyIiIiCisgICAgICAgIHJldHVybiBzZWxmWydpb3N0YXQnXVsnd3JpdGVfYnl0ZXMnXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlYWRfb3BzKHNlbGYpOgorICAgICAgICAiIiJOdW1iZXIgb2YgcmVhZCBvcGVyYXRpb25zIG9uIHRoZSBibG9jayBsYXllciIiIgorICAgICAgICBpZiBzZWxmWydjaGlsZF9ydXNhZ2UnXToKKyAgICAgICAgICAgICMgQ2hpbGQgcnVzYWdlIG1heSBoYXZlIGJlZW4gb3B0aW1pemVkIG91dAorICAgICAgICAgICAgcmV0dXJuIHNlbGZbJ3J1c2FnZSddWydydV9pbmJsb2NrJ10gKyBzZWxmWydjaGlsZF9ydXNhZ2UnXVsncnVfaW5ibG9jayddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZlsncnVzYWdlJ11bJ3J1X2luYmxvY2snXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdyaXRlX29wcyhzZWxmKToKKyAgICAgICAgIiIiTnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgb24gdGhlIGJsb2NrIGxheWVyIiIiCisgICAgICAgIGlmIHNlbGZbJ2NoaWxkX3J1c2FnZSddOgorICAgICAgICAgICAgIyBDaGlsZCBydXNhZ2UgbWF5IGhhdmUgYmVlbiBvcHRpbWl6ZWQgb3V0CisgICAgICAgICAgICByZXR1cm4gc2VsZlsncnVzYWdlJ11bJ3J1X291YmxvY2snXSArIHNlbGZbJ2NoaWxkX3J1c2FnZSddWydydV9vdWJsb2NrJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmWydydXNhZ2UnXVsncnVfb3VibG9jayddCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9maWxlKGNscywgYnVpbGRzdGF0X2ZpbGUpOgorICAgICAgICAiIiJSZWFkIGJ1aWxkc3RhdCB0ZXh0IGZpbGUiIiIKKyAgICAgICAgYnNfdGFzayA9IGNscygpCisgICAgICAgIGxvZy5kZWJ1ZygiUmVhZGluZyB0YXNrIGJ1aWxkc3RhdHMgZnJvbSAlcyIsIGJ1aWxkc3RhdF9maWxlKQorICAgICAgICBlbmRfdGltZSA9IE5vbmUKKyAgICAgICAgd2l0aCBvcGVuKGJ1aWxkc3RhdF9maWxlKSBhcyBmb2JqOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZm9iai5yZWFkbGluZXMoKToKKyAgICAgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmUuc3BsaXQoJzonLCAxKQorICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICdTdGFydGVkJzoKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSA9IGZsb2F0KHZhbCkKKyAgICAgICAgICAgICAgICAgICAgYnNfdGFza1snc3RhcnRfdGltZSddID0gc3RhcnRfdGltZQorICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdFbmRlZCc6CisgICAgICAgICAgICAgICAgICAgIGVuZF90aW1lID0gZmxvYXQodmFsKQorICAgICAgICAgICAgICAgIGVsaWYga2V5LnN0YXJ0c3dpdGgoJ0lPICcpOgorICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IGtleS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgIGJzX3Rhc2tbJ2lvc3RhdCddW3NwbGl0WzFdXSA9IGludCh2YWwpCisgICAgICAgICAgICAgICAgZWxpZiBrZXkuZmluZCgncnVzYWdlJykgPj0gMDoKKyAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSBrZXkuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICBydV9rZXkgPSBzcGxpdFstMV0KKyAgICAgICAgICAgICAgICAgICAgaWYgcnVfa2V5IGluICgncnVfc3RpbWUnLCAncnVfdXRpbWUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGZsb2F0KHZhbCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGludCh2YWwpCisgICAgICAgICAgICAgICAgICAgIHJ1X3R5cGUgPSAncnVzYWdlJyBpZiBzcGxpdFswXSA9PSAncnVzYWdlJyBlbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGlsZF9ydXNhZ2UnCisgICAgICAgICAgICAgICAgICAgIGJzX3Rhc2tbcnVfdHlwZV1bcnVfa2V5XSA9IHZhbAorICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdTdGF0dXMnOgorICAgICAgICAgICAgICAgICAgICBic190YXNrWydzdGF0dXMnXSA9IHZhbAorICAgICAgICBpZiBlbmRfdGltZSBpcyBub3QgTm9uZSBhbmQgc3RhcnRfdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGJzX3Rhc2tbJ2VsYXBzZWRfdGltZSddID0gZW5kX3RpbWUgLSBzdGFydF90aW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBCU0Vycm9yKCJ7fSBsb29rcyBsaWtlIGEgaW52YWxpZCBidWlsZHN0YXRzIGZpbGUiLmZvcm1hdChidWlsZHN0YXRfZmlsZSkpCisgICAgICAgIHJldHVybiBic190YXNrCisKKworY2xhc3MgQlNUYXNrQWdncmVnYXRlKG9iamVjdCk6CisgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIG11bHRpcGxlIHJ1bnMgb2YgdGhlIHNhbWUgdGFzayIiIgorICAgIHByb3BlcnRpZXMgPSAoJ2NwdXRpbWUnLCAnd2FsbHRpbWUnLCAncmVhZF9ieXRlcycsICd3cml0ZV9ieXRlcycsCisgICAgICAgICAgICAgICAgICAncmVhZF9vcHMnLCAnd3JpdGVfb3BzJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXNrcz1Ob25lKToKKyAgICAgICAgc2VsZi5fdGFza3MgPSB0YXNrcyBvciBbXQorICAgICAgICBzZWxmLl9wcm9wZXJ0aWVzID0ge30KKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLnByb3BlcnRpZXM6CisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9wcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgICMgQ2FsY3VsYXRlIHByb3BlcnRpZXMgb24gZGVtYW5kIG9ubHkuIFdlIG9ubHkgcHJvdmlkZSBtZWFuCisgICAgICAgICAgICAgICAgIyB2YWx1ZSwgc28gZmFyCisgICAgICAgICAgICAgICAgc2VsZi5fcHJvcGVydGllc1tuYW1lXSA9IG1lYW4oW2dldGF0dHIodCwgbmFtZSkgZm9yIHQgaW4gc2VsZi5fdGFza3NdKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb3BlcnRpZXNbbmFtZV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCInQlNUYXNrQWdncmVnYXRlJyBoYXMgbm8gYXR0cmlidXRlICd7fSciLmZvcm1hdChuYW1lKSkKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgdGFzayk6CisgICAgICAgICIiIkFwcGVuZCBuZXcgdGFzayIiIgorICAgICAgICAjIFJlc2V0IHByZS1jYWxjdWxhdGVkIHByb3BlcnRpZXMKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGFzaywgQlNUYXNrKSwgIlR5cGUgaXMgJ3t9JyBpbnN0ZWFkIG9mICdCU1Rhc2snIi5mb3JtYXQodHlwZSh0YXNrKSkKKyAgICAgICAgc2VsZi5fcHJvcGVydGllcyA9IHt9CisgICAgICAgIHNlbGYuX3Rhc2tzLmFwcGVuZCh0YXNrKQorCisKK2NsYXNzIEJTUmVjaXBlKG9iamVjdCk6CisgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIGJ1aWxkc3RhdHMgb2Ygb25lIHJlY2lwZSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBlcG9jaCwgdmVyc2lvbiwgcmV2aXNpb24pOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuZXBvY2ggPSBlcG9jaAorICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCisgICAgICAgIHNlbGYucmV2aXNpb24gPSByZXZpc2lvbgorICAgICAgICBpZiBlcG9jaCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5ldnIgPSAie30te30iLmZvcm1hdCh2ZXJzaW9uLCByZXZpc2lvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZXZyID0gInt9X3t9LXt9Ii5mb3JtYXQoZXBvY2gsIHZlcnNpb24sIHJldmlzaW9uKQorICAgICAgICBzZWxmLnRhc2tzID0ge30KKworICAgIGRlZiBhZ2dyZWdhdGUoc2VsZiwgYnNyZWNpcGUpOgorICAgICAgICAiIiJBZ2dyZWdhdGUgZGF0YSBvZiBhbm90aGVyIHJlY2lwZSBidWlsZHN0YXRzIiIiCisgICAgICAgIGlmIHNlbGYubmV2ciAhPSBic3JlY2lwZS5uZXZyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUmVmdXNpbmcgdG8gYWdncmVnYXRlIGJ1aWxkc3RhdHMsIHJlY2lwZSB2ZXJzaW9uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcnM6IHt9IHZzLiB7fSIuZm9ybWF0KHNlbGYubmV2ciwgYnNyZWNpcGUubmV2cikpCisgICAgICAgIGlmIHNldChzZWxmLnRhc2tzLmtleXMoKSkgIT0gc2V0KGJzcmVjaXBlLnRhc2tzLmtleXMoKSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZWZ1c2luZyB0byBhZ2dyZWdhdGUgYnVpbGRzdGF0cywgc2V0IG9mIHRhc2tzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHt9IGRpZmZlciIuZm9ybWF0KHNlbGYubmFtZSkpCisKKyAgICAgICAgZm9yIHRhc2tuYW1lLCB0YXNrZGF0YSBpbiBic3JlY2lwZS50YXNrcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi50YXNrc1t0YXNrbmFtZV0sIEJTVGFza0FnZ3JlZ2F0ZSk6CisgICAgICAgICAgICAgICAgc2VsZi50YXNrc1t0YXNrbmFtZV0gPSBCU1Rhc2tBZ2dyZWdhdGUoW3NlbGYudGFza3NbdGFza25hbWVdXSkKKyAgICAgICAgICAgIHNlbGYudGFza3NbdGFza25hbWVdLmFwcGVuZCh0YXNrZGF0YSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuZXZyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lICsgJy0nICsgc2VsZi5ldnIKKworCitjbGFzcyBCdWlsZFN0YXRzKGRpY3QpOgorICAgICIiIkNsYXNzIHJlcHJlc2VudGluZyBidWlsZHN0YXRzIG9mIG9uZSBidWlsZCIiIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG51bV90YXNrcyhzZWxmKToKKyAgICAgICAgIiIiR2V0IG51bWJlciBvZiB0YXNrcyIiIgorICAgICAgICBudW0gPSAwCisgICAgICAgIGZvciByZWNpcGUgaW4gc2VsZi52YWx1ZXMoKToKKyAgICAgICAgICAgIG51bSArPSBsZW4ocmVjaXBlLnRhc2tzKQorICAgICAgICByZXR1cm4gbnVtCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9qc29uKGNscywgYnNfanNvbik6CisgICAgICAgICIiIkNyZWF0ZSBuZXcgQnVpbGRTdGF0cyBvYmplY3QgZnJvbSBKU09OIG9iamVjdCIiIgorICAgICAgICBidWlsZHN0YXRzID0gY2xzKCkKKyAgICAgICAgZm9yIHJlY2lwZSBpbiBic19qc29uOgorICAgICAgICAgICAgaWYgcmVjaXBlWyduYW1lJ10gaW4gYnVpbGRzdGF0czoKKyAgICAgICAgICAgICAgICByYWlzZSBCU0Vycm9yKCJDYW5ub3QgaGFuZGxlIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBzYW1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlICh7fSkiLmZvcm1hdChyZWNpcGVbJ25hbWUnXSkpCisgICAgICAgICAgICBic3JlY2lwZSA9IEJTUmVjaXBlKHJlY2lwZVsnbmFtZSddLCByZWNpcGVbJ2Vwb2NoJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZVsndmVyc2lvbiddLCByZWNpcGVbJ3JldmlzaW9uJ10pCisgICAgICAgICAgICBmb3IgdGFzaywgZGF0YSBpbiByZWNpcGVbJ3Rhc2tzJ10uaXRlbXMoKToKKyAgICAgICAgICAgICAgICBic3JlY2lwZS50YXNrc1t0YXNrXSA9IEJTVGFzayhkYXRhKQorCisgICAgICAgICAgICBidWlsZHN0YXRzW3JlY2lwZVsnbmFtZSddXSA9IGJzcmVjaXBlCisKKyAgICAgICAgcmV0dXJuIGJ1aWxkc3RhdHMKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbV9maWxlX2pzb24ocGF0aCk6CisgICAgICAgICIiIkxvYWQgYnVpbGRzdGF0cyBmcm9tIGEgSlNPTiBmaWxlIiIiCisgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBmb2JqOgorICAgICAgICAgICAgYnNfanNvbiA9IGpzb24ubG9hZChmb2JqKQorICAgICAgICByZXR1cm4gQnVpbGRTdGF0cy5mcm9tX2pzb24oYnNfanNvbikKKworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzcGxpdF9uZXZyKG5ldnIpOgorICAgICAgICAiIiJTcGxpdCBuYW1lIGFuZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gcmVjaXBlICJuZXZyIiBzdHJpbmciIiIKKyAgICAgICAgbl9lX3YsIHJldmlzaW9uID0gbmV2ci5yc3BsaXQoJy0nLCAxKQorICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHInXig/UDxuYW1lPlxTKyktKCg/UDxlcG9jaD5bMC05XXsxLDV9KV8pPyg/UDx2ZXJzaW9uPlswLTldXFMqKSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5fZV92KQorICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICAjIElmIHdlJ3JlIG5vdCBhYmxlIHRvIHBhcnNlIGEgdmVyc2lvbiBzdGFydGluZyB3aXRoIGEgbnVtYmVyLCBqdXN0CisgICAgICAgICAgICAjIHRha2UgdGhlIHBhcnQgYWZ0ZXIgbGFzdCBkYXNoCisgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHInXig/UDxuYW1lPlxTKyktKCg/UDxlcG9jaD5bMC05XXsxLDV9KV8pPyg/UDx2ZXJzaW9uPlteLV0rKSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2VfdikKKyAgICAgICAgbmFtZSA9IG1hdGNoLmdyb3VwKCduYW1lJykKKyAgICAgICAgdmVyc2lvbiA9IG1hdGNoLmdyb3VwKCd2ZXJzaW9uJykKKyAgICAgICAgZXBvY2ggPSBtYXRjaC5ncm91cCgnZXBvY2gnKQorICAgICAgICByZXR1cm4gbmFtZSwgZXBvY2gsIHZlcnNpb24sIHJldmlzaW9uCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9kaXIoY2xzLCBwYXRoKToKKyAgICAgICAgIiIiTG9hZCBidWlsZHN0YXRzIGZyb20gYSBidWlsZHN0YXRzIGRpcmVjdG9yeSIiIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHBhdGgsICdidWlsZF9zdGF0cycpKToKKyAgICAgICAgICAgIHJhaXNlIEJTRXJyb3IoInt9IGRvZXMgbm90IGxvb2sgbGlrZSBhIGJ1aWxkc3RhdHMgZGlyZWN0b3J5Ii5mb3JtYXQocGF0aCkpCisKKyAgICAgICAgbG9nLmRlYnVnKCJSZWFkaW5nIGJ1aWxkc3RhdHMgZGlyZWN0b3J5ICVzIiwgcGF0aCkKKworICAgICAgICBidWlsZHN0YXRzID0gY2xzKCkKKyAgICAgICAgc3ViZGlycyA9IG9zLmxpc3RkaXIocGF0aCkKKyAgICAgICAgZm9yIGRpcm5hbWUgaW4gc3ViZGlyczoKKyAgICAgICAgICAgIHJlY2lwZV9kaXIgPSBvcy5wYXRoLmpvaW4ocGF0aCwgZGlybmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHJlY2lwZV9kaXIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBuYW1lLCBlcG9jaCwgdmVyc2lvbiwgcmV2aXNpb24gPSBjbHMuc3BsaXRfbmV2cihkaXJuYW1lKQorICAgICAgICAgICAgYnNyZWNpcGUgPSBCU1JlY2lwZShuYW1lLCBlcG9jaCwgdmVyc2lvbiwgcmV2aXNpb24pCisgICAgICAgICAgICBmb3IgdGFzayBpbiBvcy5saXN0ZGlyKHJlY2lwZV9kaXIpOgorICAgICAgICAgICAgICAgIGJzcmVjaXBlLnRhc2tzW3Rhc2tdID0gQlNUYXNrLmZyb21fZmlsZSgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlY2lwZV9kaXIsIHRhc2spKQorICAgICAgICAgICAgaWYgbmFtZSBpbiBidWlsZHN0YXRzOgorICAgICAgICAgICAgICAgIHJhaXNlIEJTRXJyb3IoIkNhbm5vdCBoYW5kbGUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UgKHt9KSIuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgYnVpbGRzdGF0c1tuYW1lXSA9IGJzcmVjaXBlCisKKyAgICAgICAgcmV0dXJuIGJ1aWxkc3RhdHMKKworICAgIGRlZiBhZ2dyZWdhdGUoc2VsZiwgYnVpbGRzdGF0cyk6CisgICAgICAgICIiIkFnZ3JlZ2F0ZSBvdGhlciBidWlsZHN0YXRzIGludG8gdGhpcyIiIgorICAgICAgICBpZiBzZXQoc2VsZi5rZXlzKCkpICE9IHNldChidWlsZHN0YXRzLmtleXMoKSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZWZ1c2luZyB0byBhZ2dyZWdhdGUgYnVpbGRzdGF0cywgc2V0IG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY2lwZXMgaXMgZGlmZmVyZW50IikKKyAgICAgICAgZm9yIHBrZywgZGF0YSBpbiBidWlsZHN0YXRzLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmW3BrZ10uYWdncmVnYXRlKGRhdGEpCisKKworZGVmIGRpZmZfYnVpbGRzdGF0cyhiczEsIGJzMiwgc3RhdF9hdHRyLCBtaW5fdmFsPU5vbmUsIG1pbl9hYnNkaWZmPU5vbmUpOgorICAgICIiIkNvbXBhcmUgdGhlIHRhc2tzIG9mIHR3byBidWlsZHN0YXRzIiIiCisgICAgdGFza3NfZGlmZiA9IFtdCisgICAgcGtncyA9IHNldChiczEua2V5cygpKS51bmlvbihzZXQoYnMyLmtleXMoKSkpCisgICAgZm9yIHBrZyBpbiBwa2dzOgorICAgICAgICB0YXNrczEgPSBiczFbcGtnXS50YXNrcyBpZiBwa2cgaW4gYnMxIGVsc2Uge30KKyAgICAgICAgdGFza3MyID0gYnMyW3BrZ10udGFza3MgaWYgcGtnIGluIGJzMiBlbHNlIHt9CisgICAgICAgIGlmIG5vdCB0YXNrczE6CisgICAgICAgICAgICBwa2dfb3AgPSAnKycKKyAgICAgICAgZWxpZiBub3QgdGFza3MyOgorICAgICAgICAgICAgcGtnX29wID0gJy0nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwa2dfb3AgPSAnICcKKworICAgICAgICBmb3IgdGFzayBpbiBzZXQodGFza3MxLmtleXMoKSkudW5pb24oc2V0KHRhc2tzMi5rZXlzKCkpKToKKyAgICAgICAgICAgIHRhc2tfb3AgPSAnICcKKyAgICAgICAgICAgIGlmIHRhc2sgaW4gdGFza3MxOgorICAgICAgICAgICAgICAgIHZhbDEgPSBnZXRhdHRyKGJzMVtwa2ddLnRhc2tzW3Rhc2tdLCBzdGF0X2F0dHIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRhc2tfb3AgPSAnKycKKyAgICAgICAgICAgICAgICB2YWwxID0gMAorICAgICAgICAgICAgaWYgdGFzayBpbiB0YXNrczI6CisgICAgICAgICAgICAgICAgdmFsMiA9IGdldGF0dHIoYnMyW3BrZ10udGFza3NbdGFza10sIHN0YXRfYXR0cikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdmFsMiA9IDAKKyAgICAgICAgICAgICAgICB0YXNrX29wID0gJy0nCisKKyAgICAgICAgICAgIGlmIHZhbDEgPT0gMDoKKyAgICAgICAgICAgICAgICByZWxkaWZmID0gZmxvYXQoJ2luZicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlbGRpZmYgPSAxMDAgKiAodmFsMiAtIHZhbDEpIC8gdmFsMQorCisgICAgICAgICAgICBpZiBtaW5fdmFsIGFuZCBtYXgodmFsMSwgdmFsMikgPCBtaW5fdmFsOgorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiRmlsdGVyaW5nIG91dCAlczolcyAoJXMpIiwgcGtnLCB0YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgodmFsMSwgdmFsMikpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG1pbl9hYnNkaWZmIGFuZCBhYnModmFsMiAtIHZhbDEpIDwgbWluX2Fic2RpZmY6CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJGaWx0ZXJpbmcgb3V0ICVzOiVzIChkaWZmZXJlbmNlIG9mICVzKSIsIHBrZywgdGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsMi12YWwxKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB0YXNrc19kaWZmLmFwcGVuZChUYXNrRGlmZihwa2csIHBrZ19vcCwgdGFzaywgdGFza19vcCwgdmFsMSwgdmFsMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbDItdmFsMSwgcmVsZGlmZikpCisgICAgcmV0dXJuIHRhc2tzX2RpZmYKKworCitjbGFzcyBCU1ZlckRpZmYob2JqZWN0KToKKyAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgcmVjaXBlIHZlcnNpb24gZGlmZmVyZW5jZXMgYmV0d2VlbiB0d28gYnVpbGRzdGF0cyIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiczEsIGJzMik6CisgICAgICAgIFJlY2lwZVZlckRpZmYgPSBuYW1lZHR1cGxlKCdSZWNpcGVWZXJEaWZmJywgJ2xlZnQgcmlnaHQnKQorCisgICAgICAgIHJlY2lwZXMxID0gc2V0KGJzMS5rZXlzKCkpCisgICAgICAgIHJlY2lwZXMyID0gc2V0KGJzMi5rZXlzKCkpCisKKyAgICAgICAgc2VsZi5uZXcgPSBkaWN0KFsociwgYnMyW3JdKSBmb3IgciBpbiBzb3J0ZWQocmVjaXBlczIgLSByZWNpcGVzMSldKQorICAgICAgICBzZWxmLmRyb3BwZWQgPSBkaWN0KFsociwgYnMxW3JdKSBmb3IgciBpbiBzb3J0ZWQocmVjaXBlczEgLSByZWNpcGVzMildKQorICAgICAgICBzZWxmLmVjaGFuZ2VkID0ge30KKyAgICAgICAgc2VsZi52Y2hhbmdlZCA9IHt9CisgICAgICAgIHNlbGYucmNoYW5nZWQgPSB7fQorICAgICAgICBzZWxmLnVuY2hhbmdlZCA9IHt9CisgICAgICAgIHNlbGYuZW1wdHlfZGlmZiA9IEZhbHNlCisKKyAgICAgICAgY29tbW9uID0gcmVjaXBlczIuaW50ZXJzZWN0aW9uKHJlY2lwZXMxKQorICAgICAgICBpZiBjb21tb246CisgICAgICAgICAgICBmb3IgcmVjaXBlIGluIGNvbW1vbjoKKyAgICAgICAgICAgICAgICByZGlmZiA9IFJlY2lwZVZlckRpZmYoYnMxW3JlY2lwZV0sIGJzMltyZWNpcGVdKQorICAgICAgICAgICAgICAgIGlmIGJzMVtyZWNpcGVdLmVwb2NoICE9IGJzMltyZWNpcGVdLmVwb2NoOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVjaGFuZ2VkW3JlY2lwZV0gPSByZGlmZgorICAgICAgICAgICAgICAgIGVsaWYgYnMxW3JlY2lwZV0udmVyc2lvbiAhPSBiczJbcmVjaXBlXS52ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnZjaGFuZ2VkW3JlY2lwZV0gPSByZGlmZgorICAgICAgICAgICAgICAgIGVsaWYgYnMxW3JlY2lwZV0ucmV2aXNpb24gIT0gYnMyW3JlY2lwZV0ucmV2aXNpb246CisgICAgICAgICAgICAgICAgICAgIHNlbGYucmNoYW5nZWRbcmVjaXBlXSA9IHJkaWZmCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi51bmNoYW5nZWRbcmVjaXBlXSA9IHJkaWZmCisKKyAgICAgICAgaWYgbGVuKHJlY2lwZXMxKSA9PSBsZW4ocmVjaXBlczIpID09IGxlbihzZWxmLnVuY2hhbmdlZCk6CisgICAgICAgICAgICBzZWxmLmVtcHR5X2RpZmYgPSBUcnVlCisKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5lbXB0eV9kaWZmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzOTUyNjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9fX2luaXRfXy5weQpAQCAtMCwwICsxLDM5MiBAQAorIyBZb2N0byBQcm9qZWN0IGxheWVyIGNoZWNrIHRvb2wKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2Zyb20gZW51bSBpbXBvcnQgRW51bQorCitpbXBvcnQgYmIudGluZm9pbAorCitjbGFzcyBMYXllclR5cGUoRW51bSk6CisgICAgQlNQID0gMAorICAgIERJU1RSTyA9IDEKKyAgICBTT0ZUV0FSRSA9IDIKKyAgICBFUlJPUl9OT19MQVlFUl9DT05GID0gOTgKKyAgICBFUlJPUl9CU1BfRElTVFJPID0gOTkKKworZGVmIF9nZXRfY29uZmlndXJhdGlvbnMocGF0aCk6CisgICAgY29uZmlncyA9IFtdCisKKyAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKHBhdGgpOgorICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgZikKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9wYXRoKSBhbmQgZi5lbmRzd2l0aCgnLmNvbmYnKToKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKGZbOi01XSkgIyBzdHJpcCAuY29uZgorICAgIHJldHVybiBjb25maWdzCisKK2RlZiBfZ2V0X2xheWVyX2NvbGxlY3Rpb25zKGxheWVyX3BhdGgsIGxjb25mPU5vbmUsIGRhdGE9Tm9uZSk6CisgICAgaW1wb3J0IGJiLnBhcnNlCisgICAgaW1wb3J0IGJiLmRhdGEKKworICAgIGlmIGxjb25mIGlzIE5vbmU6CisgICAgICAgIGxjb25mID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsICdjb25mJywgJ2xheWVyLmNvbmYnKQorCisgICAgaWYgZGF0YSBpcyBOb25lOgorICAgICAgICBsZGF0YSA9IGJiLmRhdGEuaW5pdCgpCisgICAgICAgIGJiLnBhcnNlLmluaXRfcGFyc2VyKGxkYXRhKQorICAgIGVsc2U6CisgICAgICAgIGxkYXRhID0gZGF0YS5jcmVhdGVDb3B5KCkKKworICAgIGxkYXRhLnNldFZhcignTEFZRVJESVInLCBsYXllcl9wYXRoKQorICAgIHRyeToKKyAgICAgICAgbGRhdGEgPSBiYi5wYXJzZS5oYW5kbGUobGNvbmYsIGxkYXRhLCBpbmNsdWRlPVRydWUpCisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgorICAgICAgICByYWlzZSBMYXllckVycm9yKGV4YykKKyAgICBsZGF0YS5leHBhbmRWYXJyZWYoJ0xBWUVSRElSJykKKworICAgIGNvbGxlY3Rpb25zID0gKGxkYXRhLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykgb3IgJycpLnNwbGl0KCkKKyAgICBpZiBub3QgY29sbGVjdGlvbnM6CisgICAgICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGxheWVyX3BhdGgpCisgICAgICAgIGNvbGxlY3Rpb25zID0gW25hbWVdCisKKyAgICBjb2xsZWN0aW9ucyA9IHtjOiB7fSBmb3IgYyBpbiBjb2xsZWN0aW9uc30KKyAgICBmb3IgbmFtZSBpbiBjb2xsZWN0aW9uczoKKyAgICAgICAgcHJpb3JpdHkgPSBsZGF0YS5nZXRWYXIoJ0JCRklMRV9QUklPUklUWV8lcycgJSBuYW1lKQorICAgICAgICBwYXR0ZXJuID0gbGRhdGEuZ2V0VmFyKCdCQkZJTEVfUEFUVEVSTl8lcycgJSBuYW1lKQorICAgICAgICBkZXBlbmRzID0gbGRhdGEuZ2V0VmFyKCdMQVlFUkRFUEVORFNfJXMnICUgbmFtZSkKKyAgICAgICAgY29sbGVjdGlvbnNbbmFtZV1bJ3ByaW9yaXR5J10gPSBwcmlvcml0eQorICAgICAgICBjb2xsZWN0aW9uc1tuYW1lXVsncGF0dGVybiddID0gcGF0dGVybgorICAgICAgICBjb2xsZWN0aW9uc1tuYW1lXVsnZGVwZW5kcyddID0gZGVwZW5kcworCisgICAgcmV0dXJuIGNvbGxlY3Rpb25zCisKK2RlZiBfZGV0ZWN0X2xheWVyKGxheWVyX3BhdGgpOgorICAgICIiIgorICAgICAgICBTY2FucyBsYXllciBkaXJlY3RvcnkgdG8gZGV0ZWN0IHdoYXQgdHlwZSBvZiBsYXllcgorICAgICAgICBpcyBCU1AsIERpc3RybyBvciBTb2Z0d2FyZS4KKworICAgICAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIGxheWVyIG5hbWUsIHR5cGUgYW5kIHBhdGguCisgICAgIiIiCisKKyAgICBsYXllciA9IHt9CisgICAgbGF5ZXJfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobGF5ZXJfcGF0aCkKKworICAgIGxheWVyWyduYW1lJ10gPSBsYXllcl9uYW1lCisgICAgbGF5ZXJbJ3BhdGgnXSA9IGxheWVyX3BhdGgKKyAgICBsYXllclsnY29uZiddID0ge30KKworICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKToKKyAgICAgICAgbGF5ZXJbJ3R5cGUnXSA9IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GCisgICAgICAgIHJldHVybiBsYXllcgorCisgICAgbWFjaGluZV9jb25mID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsICdjb25mJywgJ21hY2hpbmUnKQorICAgIGRpc3Ryb19jb25mID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsICdjb25mJywgJ2Rpc3RybycpCisKKyAgICBpc19ic3AgPSBGYWxzZQorICAgIGlzX2Rpc3RybyA9IEZhbHNlCisKKyAgICBpZiBvcy5wYXRoLmlzZGlyKG1hY2hpbmVfY29uZik6CisgICAgICAgIG1hY2hpbmVzID0gX2dldF9jb25maWd1cmF0aW9ucyhtYWNoaW5lX2NvbmYpCisgICAgICAgIGlmIG1hY2hpbmVzOgorICAgICAgICAgICAgaXNfYnNwID0gVHJ1ZQorCisgICAgaWYgb3MucGF0aC5pc2RpcihkaXN0cm9fY29uZik6CisgICAgICAgIGRpc3Ryb3MgPSBfZ2V0X2NvbmZpZ3VyYXRpb25zKGRpc3Ryb19jb25mKQorICAgICAgICBpZiBkaXN0cm9zOgorICAgICAgICAgICAgaXNfZGlzdHJvID0gVHJ1ZQorCisgICAgaWYgaXNfYnNwIGFuZCBpc19kaXN0cm86CisgICAgICAgIGxheWVyWyd0eXBlJ10gPSBMYXllclR5cGUuRVJST1JfQlNQX0RJU1RSTworICAgIGVsaWYgaXNfYnNwOgorICAgICAgICBsYXllclsndHlwZSddID0gTGF5ZXJUeXBlLkJTUAorICAgICAgICBsYXllclsnY29uZiddWydtYWNoaW5lcyddID0gbWFjaGluZXMKKyAgICBlbGlmIGlzX2Rpc3RybzoKKyAgICAgICAgbGF5ZXJbJ3R5cGUnXSA9IExheWVyVHlwZS5ESVNUUk8KKyAgICAgICAgbGF5ZXJbJ2NvbmYnXVsnZGlzdHJvcyddID0gZGlzdHJvcworICAgIGVsc2U6CisgICAgICAgIGxheWVyWyd0eXBlJ10gPSBMYXllclR5cGUuU09GVFdBUkUKKworICAgIGxheWVyWydjb2xsZWN0aW9ucyddID0gX2dldF9sYXllcl9jb2xsZWN0aW9ucyhsYXllclsncGF0aCddKQorCisgICAgcmV0dXJuIGxheWVyCisKK2RlZiBkZXRlY3RfbGF5ZXJzKGxheWVyX2RpcmVjdG9yaWVzLCBub19hdXRvKToKKyAgICBsYXllcnMgPSBbXQorCisgICAgZm9yIGRpcmVjdG9yeSBpbiBsYXllcl9kaXJlY3RvcmllczoKKyAgICAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5yZWFscGF0aChkaXJlY3RvcnkpCisgICAgICAgIGlmIGRpcmVjdG9yeVstMV0gPT0gJy8nOgorICAgICAgICAgICAgZGlyZWN0b3J5ID0gZGlyZWN0b3J5WzA6LTFdCisKKyAgICAgICAgaWYgbm9fYXV0bzoKKyAgICAgICAgICAgIGNvbmZfZGlyID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgJ2NvbmYnKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihjb25mX2Rpcik6CisgICAgICAgICAgICAgICAgbGF5ZXIgPSBfZGV0ZWN0X2xheWVyKGRpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBpZiBsYXllcjoKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLmFwcGVuZChsYXllcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHJvb3QpCisgICAgICAgICAgICAgICAgY29uZl9kaXIgPSBvcy5wYXRoLmpvaW4ocm9vdCwgJ2NvbmYnKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoY29uZl9kaXIpOgorICAgICAgICAgICAgICAgICAgICBsYXllciA9IF9kZXRlY3RfbGF5ZXIocm9vdCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKQorCisgICAgcmV0dXJuIGxheWVycworCitkZWYgX2ZpbmRfbGF5ZXJfZGVwZW5kcyhkZXBlbmQsIGxheWVycyk6CisgICAgZm9yIGxheWVyIGluIGxheWVyczoKKyAgICAgICAgZm9yIGNvbGxlY3Rpb24gaW4gbGF5ZXJbJ2NvbGxlY3Rpb25zJ106CisgICAgICAgICAgICBpZiBkZXBlbmQgPT0gY29sbGVjdGlvbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXIKKyAgICByZXR1cm4gTm9uZQorCitkZWYgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGxheWVyLCBsYXllcnMsIGxvZ2dlcik6CisgICAgZGVmIHJlY3Vyc2VfZGVwZW5kZW5jaWVzKGRlcGVuZHMsIGxheWVyLCBsYXllcnMsIGxvZ2dlciwgcmV0ID0gW10pOgorICAgICAgICBsb2dnZXIuZGVidWcoJ1Byb2Nlc3NpbmcgZGVwZW5kZW5jaWVzICVzIGZvciBsYXllciAlcy4nICUgXAorICAgICAgICAgICAgICAgICAgICAoZGVwZW5kcywgbGF5ZXJbJ25hbWUnXSkpCisKKyAgICAgICAgZm9yIGRlcGVuZCBpbiBkZXBlbmRzLnNwbGl0KCk6CisgICAgICAgICAgICAjIGNvcmUgKG9lLWNvcmUpIGlzIHN1cHBvc2UgdG8gYmUgcHJvdmlkZWQKKyAgICAgICAgICAgIGlmIGRlcGVuZCA9PSAnY29yZSc6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbGF5ZXJfZGVwZW5kID0gX2ZpbmRfbGF5ZXJfZGVwZW5kcyhkZXBlbmQsIGxheWVycykKKyAgICAgICAgICAgIGlmIG5vdCBsYXllcl9kZXBlbmQ6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdMYXllciAlcyBkZXBlbmRzIG9uICVzIGFuZCBpc25cJ3QgZm91bmQuJyAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYXllclsnbmFtZSddLCBkZXBlbmQpKQorICAgICAgICAgICAgICAgIHJldCA9IE5vbmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIFdlIGtlZXAgcHJvY2Vzc2luZywgZXZlbiBpZiByZXQgaXMgTm9uZSwgdGhpcyBhbGxvd3MgdXMgdG8gcmVwb3J0CisgICAgICAgICAgICAjIG11bHRpcGxlIGVycm9ycyBhdCBvbmNlCisgICAgICAgICAgICBpZiByZXQgaXMgbm90IE5vbmUgYW5kIGxheWVyX2RlcGVuZCBub3QgaW4gcmV0OgorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQobGF5ZXJfZGVwZW5kKQorCisgICAgICAgICAgICAjIFJlY3Vyc2l2ZWx5IHByb2Nlc3MuLi4KKyAgICAgICAgICAgIGlmICdjb2xsZWN0aW9ucycgbm90IGluIGxheWVyX2RlcGVuZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBmb3IgY29sbGVjdGlvbiBpbiBsYXllcl9kZXBlbmRbJ2NvbGxlY3Rpb25zJ106CisgICAgICAgICAgICAgICAgY29sbGVjdF9kZXBzID0gbGF5ZXJfZGVwZW5kWydjb2xsZWN0aW9ucyddW2NvbGxlY3Rpb25dWydkZXBlbmRzJ10KKyAgICAgICAgICAgICAgICBpZiBub3QgY29sbGVjdF9kZXBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJldCA9IHJlY3Vyc2VfZGVwZW5kZW5jaWVzKGNvbGxlY3RfZGVwcywgbGF5ZXJfZGVwZW5kLCBsYXllcnMsIGxvZ2dlciwgcmV0KQorCisgICAgICAgIHJldHVybiByZXQKKworICAgIGxheWVyX2RlcGVuZHMgPSBbXQorICAgIGZvciBjb2xsZWN0aW9uIGluIGxheWVyWydjb2xsZWN0aW9ucyddOgorICAgICAgICBkZXBlbmRzID0gbGF5ZXJbJ2NvbGxlY3Rpb25zJ11bY29sbGVjdGlvbl1bJ2RlcGVuZHMnXQorICAgICAgICBpZiBub3QgZGVwZW5kczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgbGF5ZXJfZGVwZW5kcyA9IHJlY3Vyc2VfZGVwZW5kZW5jaWVzKGRlcGVuZHMsIGxheWVyLCBsYXllcnMsIGxvZ2dlciwgbGF5ZXJfZGVwZW5kcykKKworICAgICMgTm90ZTogW10gKGVtcHR5KSBpcyBhbGxvd2VkLCBOb25lIGlzIG5vdCEKKyAgICBpZiBsYXllcl9kZXBlbmRzIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6CisgICAgICAgICMgRG9uJ3QgYWRkIGEgbGF5ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQuCisgICAgICAgIGFkZGVkID0gc2V0KCkKKyAgICAgICAgb3V0cHV0ID0gY2hlY2tfY29tbWFuZCgnR2V0dGluZyBleGlzdGluZyBsYXllcnMgZmFpbGVkLicsICdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpLmRlY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgbGF5ZXIsIHBhdGgsIHByaSBpbiByZS5maW5kYWxsKHInXihcUyspICsoW15cbl0qPykgKyhcZCspJCcsIG91dHB1dCwgcmUuTVVMVElMSU5FKToKKyAgICAgICAgICAgIGFkZGVkLmFkZChwYXRoKQorCisgICAgICAgIGZvciBsYXllcl9kZXBlbmQgaW4gbGF5ZXJfZGVwZW5kczoKKyAgICAgICAgICAgIG5hbWUgPSBsYXllcl9kZXBlbmRbJ25hbWUnXQorICAgICAgICAgICAgcGF0aCA9IGxheWVyX2RlcGVuZFsncGF0aCddCisgICAgICAgICAgICBpZiBwYXRoIGluIGFkZGVkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFkZGVkLmFkZChwYXRoKQorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0FkZGluZyBsYXllciBkZXBlbmRlbmN5ICVzJyAlIG5hbWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oYmJsYXllcnNjb25mLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoIlxuQkJMQVlFUlMgKz0gXCIlc1wiXG4iICUgcGF0aCkKKyAgICByZXR1cm4gVHJ1ZQorCitkZWYgYWRkX2xheWVyKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGxheWVycywgbG9nZ2VyKToKKyAgICBsb2dnZXIuaW5mbygnQWRkaW5nIGxheWVyICVzJyAlIGxheWVyWyduYW1lJ10pCisgICAgd2l0aCBvcGVuKGJibGF5ZXJzY29uZiwgJ2ErJykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgiXG5CQkxBWUVSUyArPSBcIiVzXCJcbiIgJSBsYXllclsncGF0aCddKQorCisgICAgcmV0dXJuIFRydWUKKworZGVmIGNoZWNrX2NvbW1hbmQoZXJyb3JfbXNnLCBjbWQpOgorICAgICcnJworICAgIFJ1biBhIGNvbW1hbmQgdW5kZXIgYSBzaGVsbCwgY2FwdHVyZSBzdGRvdXQgYW5kIHN0ZGVyciBpbiBhIHNpbmdsZSBzdHJlYW0sCisgICAgdGhyb3cgYW4gZXJyb3Igd2hlbiBjb21tYW5kIHJldHVybnMgbm9uLXplcm8gZXhpdCBjb2RlLiBSZXR1cm5zIHRoZSBvdXRwdXQuCisgICAgJycnCisKKyAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICBvdXRwdXQsIF8gPSBwLmNvbW11bmljYXRlKCkKKyAgICBpZiBwLnJldHVybmNvZGU6CisgICAgICAgIG1zZyA9ICIlc1xuQ29tbWFuZDogJXNcbk91dHB1dDpcbiVzIiAlIChlcnJvcl9tc2csIGNtZCwgb3V0cHV0LmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1zZykKKyAgICByZXR1cm4gb3V0cHV0CisKK2RlZiBnZXRfc2lnbmF0dXJlcyhidWlsZGRpciwgZmFpbHNhZmU9RmFsc2UsIG1hY2hpbmU9Tm9uZSk6CisgICAgaW1wb3J0IHJlCisKKyAgICAjIHNvbWUgcmVjaXBlcyBuZWVkcyB0byBiZSBleGNsdWRlZCBsaWtlIG1ldGEtd29ybGQtcGtnZGF0YQorICAgICMgYmVjYXVzZSBhIGxheWVyIGNhbiBhZGQgcmVjaXBlcyB0byBhIHdvcmxkIGJ1aWxkIHNvIHNpZ25hdHVyZQorICAgICMgd2lsbCBiZSBjaGFuZ2UKKyAgICBleGNsdWRlX3JlY2lwZXMgPSAoJ21ldGEtd29ybGQtcGtnZGF0YScsKQorCisgICAgc2lncyA9IHt9CisgICAgdHVuZTJ0YXNrcyA9IHt9CisKKyAgICBjbWQgPSAnJworICAgIGlmIG1hY2hpbmU6CisgICAgICAgIGNtZCArPSAnTUFDSElORT0lcyAnICUgbWFjaGluZQorICAgIGNtZCArPSAnYml0YmFrZSAnCisgICAgaWYgZmFpbHNhZmU6CisgICAgICAgIGNtZCArPSAnLWsgJworICAgIGNtZCArPSAnLVMgbm9uZSB3b3JsZCcKKyAgICBzaWdzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdsb2NrZWQtc2lncy5pbmMnKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKHNpZ3NfZmlsZSk6CisgICAgICAgIG9zLnVubGluayhzaWdzX2ZpbGUpCisgICAgdHJ5OgorICAgICAgICBjaGVja19jb21tYW5kKCdHZW5lcmF0aW5nIHNpZ25hdHVyZXMgZmFpbGVkLiBUaGlzIG1pZ2h0IGJlIGR1ZSB0byBzb21lIHBhcnNlIGVycm9yIGFuZC9vciBnZW5lcmFsIGxheWVyIGluY29tcGF0aWJpbGl0aWVzLicsCisgICAgICAgICAgICAgICAgICAgICAgY21kKQorICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXg6CisgICAgICAgIGlmIGZhaWxzYWZlIGFuZCBvcy5wYXRoLmV4aXN0cyhzaWdzX2ZpbGUpOgorICAgICAgICAgICAgIyBJZ25vcmUgdGhlIGVycm9yIGhlcmUuIE1vc3QgbGlrZWx5IHNvbWUgcmVjaXBlcyBhY3RpdmUKKyAgICAgICAgICAgICMgaW4gYSB3b3JsZCBidWlsZCBsYWNrIHNvbWUgZGVwZW5kZW5jaWVzLiBUaGVyZSBpcyBhCisgICAgICAgICAgICAjIHNlcGFyYXRlIHRlc3RfbWFjaGluZV93b3JsZF9idWlsZCB3aGljaCBleHBvc2VzIHRoZQorICAgICAgICAgICAgIyBmYWlsdXJlLgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UKKworICAgIHNpZ19yZWdleCA9IHJlLmNvbXBpbGUoIl4oP1A8dGFzaz4uKjouKik6KD9QPGhhc2g+LiopIC4kIikKKyAgICB0dW5lX3JlZ2V4ID0gcmUuY29tcGlsZSgiKF58XHMpU0lHR0VOX0xPQ0tFRFNJR1NfdC0oP1A8dHVuZT5cUyopXHMqPVxzKiIpCisgICAgY3VycmVudF90dW5lID0gTm9uZQorICAgIHdpdGggb3BlbihzaWdzX2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIHQgPSB0dW5lX3JlZ2V4LnNlYXJjaChsaW5lKQorICAgICAgICAgICAgaWYgdDoKKyAgICAgICAgICAgICAgICBjdXJyZW50X3R1bmUgPSB0Lmdyb3VwKCd0dW5lJykKKyAgICAgICAgICAgIHMgPSBzaWdfcmVnZXgubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIHM6CisgICAgICAgICAgICAgICAgZXhjbHVkZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZm9yIGVyIGluIGV4Y2x1ZGVfcmVjaXBlczoKKyAgICAgICAgICAgICAgICAgICAgKHJlY2lwZSwgdGFzaykgPSBzLmdyb3VwKCd0YXNrJykuc3BsaXQoJzonKQorICAgICAgICAgICAgICAgICAgICBpZiBlciA9PSByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBleGNsdWRlOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2lnc1tzLmdyb3VwKCd0YXNrJyldID0gcy5ncm91cCgnaGFzaCcpCisgICAgICAgICAgICAgICAgdHVuZTJ0YXNrcy5zZXRkZWZhdWx0KGN1cnJlbnRfdHVuZSwgW10pLmFwcGVuZChzLmdyb3VwKCd0YXNrJykpCisKKyAgICBpZiBub3Qgc2lnczoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDYW5cJ3QgbG9hZCBzaWduYXR1cmVzIGZyb20gJXMnICUgc2lnc19maWxlKQorCisgICAgcmV0dXJuIChzaWdzLCB0dW5lMnRhc2tzKQorCitkZWYgZ2V0X2RlcGdyYXBoKHRhcmdldHM9Wyd3b3JsZCddLCBmYWlsc2FmZT1GYWxzZSk6CisgICAgJycnCisgICAgUmV0dXJucyB0aGUgZGVwZW5kZW5jeSBncmFwaCBmb3IgdGhlIGdpdmVuIHRhcmdldChzKS4KKyAgICBUaGUgZGVwZW5kZW5jeSBncmFwaCBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIERlcFRyZWVFdmVudC4KKyAgICAnJycKKyAgICBkZXBncmFwaCA9IE5vbmUKKyAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSkKKyAgICAgICAgdGluZm9pbC5zZXRfZXZlbnRfbWFzayhbJ2JiLmV2ZW50Lk5vUHJvdmlkZXInLCAnYmIuZXZlbnQuRGVwVHJlZUdlbmVyYXRlZCcsICdiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQnXSkKKyAgICAgICAgaWYgbm90IHRpbmZvaWwucnVuX2NvbW1hbmQoJ2dlbmVyYXRlRGVwVHJlZUV2ZW50JywgdGFyZ2V0cywgJ2RvX2J1aWxkJyk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3N0YXJ0aW5nIGdlbmVyYXRlRGVwVHJlZUV2ZW50IGZhaWxlZCcpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBldmVudCA9IHRpbmZvaWwud2FpdF9ldmVudCh0aW1lb3V0PTEwMDApCisgICAgICAgICAgICBpZiBldmVudDoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0dlbmVyYXRpbmcgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBmYWlsZWQ6ICVzJyAlIGV2ZW50LmVycm9yKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk5vUHJvdmlkZXIpOgorICAgICAgICAgICAgICAgICAgICBpZiBmYWlsc2FmZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIGV2ZW50IGlzIGluZm9ybWF0aW9uYWwsIHdlIHdpbGwgZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1haW5pbmcgZGVwZW5kZW5jaWVzIGV2ZW50dWFsbHkgYW5kIHRodXMgY2FuIGlnbm9yZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAjIGhlcmUgbGlrZSB3ZSBkbyBpbiBnZXRfc2lnbmF0dXJlcygpLCBpZiBkZXNpcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQuX3JlYXNvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ05vdGhpbmcgcHJvdmlkZXMgJXM6ICVzJyAlIChldmVudC5faXRlbSwgZXZlbnQuX3JlYXNvbnMpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdOb3RoaW5nIHByb3ZpZGVzICVzLicgJSAoZXZlbnQuX2l0ZW0pKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuRGVwVHJlZUdlbmVyYXRlZCk6CisgICAgICAgICAgICAgICAgICAgIGRlcGdyYXBoID0gZXZlbnQuX2RlcGdyYXBoCisKKyAgICBpZiBkZXBncmFwaCBpcyBOb25lOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvdWxkIG5vdCByZXRyaWV2ZSB0aGUgZGVwZ3JhcGguJykKKyAgICByZXR1cm4gZGVwZ3JhcGgKKworZGVmIGNvbXBhcmVfc2lnbmF0dXJlcyhvbGRfc2lncywgY3Vycl9zaWdzKToKKyAgICAnJycKKyAgICBDb21wYXJlcyB0aGUgcmVzdWx0IG9mIHR3byBnZXRfc2lnbmF0dXJlcygpIGNhbGxzLiBSZXR1cm5zIE5vbmUgaWYgbm8KKyAgICBwcm9ibGVtcyBmb3VuZCwgb3RoZXJ3aXNlIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHVzZWQgYXMgYWRkaXRpb25hbAorICAgIGV4cGxhbmF0aW9uIGluIHNlbGYuZmFpbCgpLgorICAgICcnJworICAgICMgdGFzayAtPiAob2xkIHNpZ25hdHVyZSwgbmV3IHNpZ25hdHVyZSkKKyAgICBzaWdfZGlmZiA9IHt9CisgICAgZm9yIHRhc2sgaW4gb2xkX3NpZ3M6CisgICAgICAgIGlmIHRhc2sgaW4gY3Vycl9zaWdzIGFuZCBcCisgICAgICAgICAgIG9sZF9zaWdzW3Rhc2tdICE9IGN1cnJfc2lnc1t0YXNrXToKKyAgICAgICAgICAgIHNpZ19kaWZmW3Rhc2tdID0gKG9sZF9zaWdzW3Rhc2tdLCBjdXJyX3NpZ3NbdGFza10pCisKKyAgICBpZiBub3Qgc2lnX2RpZmY6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICAjIEJld2FyZSwgZGVwZ3JhcGggdXNlcyB0YXNrPTxwbj4uPHRhc2tuYW1lPiB3aGVyZWFzIGdldF9zaWduYXR1cmVzKCkKKyAgICAjIHVzZXMgPHBuPjo8dGFza25hbWU+LiBOZWVkIHRvIGNvbnZlcnQgc29tZXRpbWVzLiBUaGUgb3V0cHV0IGZvbGxvd3MKKyAgICAjIHRoZSBjb252ZW50aW9uIGZyb20gZ2V0X3NpZ25hdHVyZXMoKSBiZWNhdXNlIHRoYXQgc2VlbXMgY2xvc2VyIHRvCisgICAgIyBub3JtYWwgYml0YmFrZSBvdXRwdXQuCisgICAgZGVmIHNpZzJncmFwaCh0YXNrKToKKyAgICAgICAgcG4sIHRhc2tuYW1lID0gdGFzay5yc3BsaXQoJzonLCAxKQorICAgICAgICByZXR1cm4gcG4gKyAnLicgKyB0YXNrbmFtZQorICAgIGRlZiBncmFwaDJzaWcodGFzayk6CisgICAgICAgIHBuLCB0YXNrbmFtZSA9IHRhc2sucnNwbGl0KCcuJywgMSkKKyAgICAgICAgcmV0dXJuIHBuICsgJzonICsgdGFza25hbWUKKyAgICBkZXBncmFwaCA9IGdldF9kZXBncmFwaChmYWlsc2FmZT1UcnVlKQorICAgIGRlcGVuZHMgPSBkZXBncmFwaFsndGRlcGVuZHMnXQorCisgICAgIyBJZiBhIHRhc2sgQSBoYXMgYSBjaGFuZ2VkIHNpZ25hdHVyZSwgYnV0IG5vbmUgb2YgaXRzCisgICAgIyBkZXBlbmRlbmNpZXMsIHRoZW4gd2UgbmVlZCB0byByZXBvcnQgaXQgYmVjYXVzZSBpdCBpcworICAgICMgdGhlIG9uZSB3aGljaCBpbnRyb2R1Y2VzIGEgY2hhbmdlLiBBbnkgdGFzayBkZXBlbmRpbmcgb24KKyAgICAjIEEgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHdpbGwgYWxzbyBoYXZlIGEgY2hhbmdlZAorICAgICMgc2lnbmF0dXJlLCBidXQgd2UgZG9uJ3QgbmVlZCB0byByZXBvcnQgaXQuIEl0IG1pZ2h0IGhhdmUKKyAgICAjIGl0cyBvd24gY2hhbmdlcywgd2hpY2ggd2lsbCBiZWNvbWUgYXBwYXJlbnQgb25jZSB0aGUKKyAgICAjIGlzc3VlcyB0aGF0IHdlIGRvIHJlcG9ydCBhcmUgZml4ZWQgYW5kIHRoZSB0ZXN0IGdldHMgcnVuCisgICAgIyBhZ2Fpbi4KKyAgICBzaWdfZGlmZl9maWx0ZXJlZCA9IFtdCisgICAgZm9yIHRhc2ssIChvbGRfc2lnLCBuZXdfc2lnKSBpbiBzaWdfZGlmZi5pdGVtcygpOgorICAgICAgICBkZXBzX3RhaW50ZWQgPSBGYWxzZQorICAgICAgICBmb3IgZGVwIGluIGRlcGVuZHMuZ2V0KHNpZzJncmFwaCh0YXNrKSwgKCkpOgorICAgICAgICAgICAgaWYgZ3JhcGgyc2lnKGRlcCkgaW4gc2lnX2RpZmY6CisgICAgICAgICAgICAgICAgZGVwc190YWludGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBkZXBzX3RhaW50ZWQ6CisgICAgICAgICAgICBzaWdfZGlmZl9maWx0ZXJlZC5hcHBlbmQoKHRhc2ssIG9sZF9zaWcsIG5ld19zaWcpKQorCisgICAgbXNnID0gW10KKyAgICBtc2cuYXBwZW5kKCclZCBzaWduYXR1cmVzIGNoYW5nZWQsIGluaXRpYWwgZGlmZmVyZW5jZXMgKGZpcnN0IGhhc2ggYmVmb3JlLCBzZWNvbmQgYWZ0ZXIpOicgJQorICAgICAgICAgICAgICAgbGVuKHNpZ19kaWZmKSkKKyAgICBmb3IgZGlmZiBpbiBzb3J0ZWQoc2lnX2RpZmZfZmlsdGVyZWQpOgorICAgICAgICByZWNpcGUsIHRhc2tuYW1lID0gZGlmZlswXS5yc3BsaXQoJzonLCAxKQorICAgICAgICBjbWQgPSAnYml0YmFrZS1kaWZmc2lncyAtLXRhc2sgJXMgJXMgLS1zaWduYXR1cmUgJXMgJXMnICUgXAorICAgICAgICAgICAgICAocmVjaXBlLCB0YXNrbmFtZSwgZGlmZlsxXSwgZGlmZlsyXSkKKyAgICAgICAgbXNnLmFwcGVuZCgnICAgJXM6ICVzIC0+ICVzJyAlIGRpZmYpCisgICAgICAgIG1zZy5hcHBlbmQoJyAgICAgICVzJyAlIGNtZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gY2hlY2tfY29tbWFuZCgnRGV0ZXJtaW5pbmcgc2lnbmF0dXJlIGRpZmZlcmVuY2UgZmFpbGVkLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCkuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAgICBvdXRwdXQgPSBzdHIoZXJyb3IpCisgICAgICAgIGlmIG91dHB1dDoKKyAgICAgICAgICAgIG1zZy5leHRlbmQoWycgICAgICAnICsgbGluZSBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpXSkKKyAgICAgICAgICAgIG1zZy5hcHBlbmQoJycpCisgICAgcmV0dXJuICdcbicuam9pbihtc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGQwMDQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZS5weQpAQCAtMCwwICsxLDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCisKK2NsYXNzIE9FQ2hlY2tMYXllclRlc3RDYXNlKE9FVGVzdENhc2UpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9jYXNlcy9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvX19pbml0X18ucHkKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9ic3AucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9ic3AucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZiNjExYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2JzcC5weQpAQCAtMCwwICsxLDIwNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIGNoZWNrbGF5ZXIgaW1wb3J0IExheWVyVHlwZSwgZ2V0X3NpZ25hdHVyZXMsIGNoZWNrX2NvbW1hbmQsIGdldF9kZXBncmFwaAorZnJvbSBjaGVja2xheWVyLmNhc2UgaW1wb3J0IE9FQ2hlY2tMYXllclRlc3RDYXNlCisKK2NsYXNzIEJTUENoZWNrTGF5ZXIoT0VDaGVja0xheWVyVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnRjLmxheWVyWyd0eXBlJ10gIT0gTGF5ZXJUeXBlLkJTUDoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJCU1BDaGVja0xheWVyOiBMYXllciAlcyBpc24ndCBCU1Agb25lLiIgJVwKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxheWVyWyduYW1lJ10pCisKKyAgICBkZWYgdGVzdF9ic3BfZGVmaW5lc19tYWNoaW5lcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudGMubGF5ZXJbJ2NvbmYnXVsnbWFjaGluZXMnXSwgCisgICAgICAgICAgICAgICAgIkxheWVyIGlzIEJTUCBidXQgZG9lc24ndCBkZWZpbmVzIG1hY2hpbmVzLiIpCisKKyAgICBkZWYgdGVzdF9ic3Bfbm9fc2V0X21hY2hpbmUoc2VsZik6CisgICAgICAgIGZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcgorCisgICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRkWydiYnZhcnMnXVsnTUFDSElORSddLCBtYWNoaW5lLAorICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgJXMgbW9kaWZpZWQgbWFjaGluZSAlcyAtPiAlcyIgJSBcCisgICAgICAgICAgICAgICAgICAgIChzZWxmLnRjLmxheWVyWyduYW1lJ10sIHNlbGYudGRbJ2JidmFycyddWydNQUNISU5FJ10sIG1hY2hpbmUpKQorCisKKyAgICBkZWYgdGVzdF9tYWNoaW5lX3dvcmxkKHNlbGYpOgorICAgICAgICAnJycKKyAgICAgICAgImJpdGJha2Ugd29ybGQiIGlzIGV4cGVjdGVkIHRvIHdvcmsgcmVnYXJkbGVzcyB3aGljaCBtYWNoaW5lIGlzIHNlbGVjdGVkLgorICAgICAgICBCU1AgbGF5ZXJzIHNvbWV0aW1lcyBicmVhayB0aGF0IGJ5IGVuYWJsaW5nIGEgcmVjaXBlIGZvciBhIGNlcnRhaW4gbWFjaGluZQorICAgICAgICB3aXRob3V0IGNoZWNraW5nIHdoZXRoZXIgdGhhdCByZWNpcGUgYWN0dWFsbHkgY2FuIGJlIGJ1aWx0IGluIHRoZSBjdXJyZW50CisgICAgICAgIGRpc3RybyBjb25maWd1cmF0aW9uIChmb3IgZXhhbXBsZSwgT3BlbkdMIG1pZ2h0IG5vdCBlbmFibGVkKS4KKworICAgICAgICBUaGlzIHRlc3QgaXRlcmF0ZXMgb3ZlciBhbGwgbWFjaGluZXMuIEl0IHdvdWxkIGJlIG5pY2VyIHRvIGluc3RhbnRpYXRlCisgICAgICAgIGl0IG9uY2UgcGVyIG1hY2hpbmUuIEl0IG1lcmVseSBjaGVja3MgZm9yIGVycm9ycyBkdXJpbmcgcGFyc2UKKyAgICAgICAgdGltZS4gSXQgZG9lcyBub3QgYWN0dWFsbHkgYXR0ZW1wdCB0byBidWlsZCBhbnl0aGluZy4KKyAgICAgICAgJycnCisKKyAgICAgICAgaWYgbm90IHNlbGYudGRbJ21hY2hpbmVzJ106CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdObyBtYWNoaW5lcyBzZXQgd2l0aCAtLW1hY2hpbmVzLicpCisgICAgICAgIG1zZyA9IFtdCisgICAgICAgIGZvciBtYWNoaW5lIGluIHNlbGYudGRbJ21hY2hpbmVzJ106CisgICAgICAgICAgICAjIEluIGNvbnRyYXN0IHRvIHRlc3RfbWFjaGluZV9zaWduYXR1cmVzKCkgYmVsb3csIGVycm9ycyBhcmUgZmF0YWwgaGVyZS4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnZXRfc2lnbmF0dXJlcyhzZWxmLnRkWydidWlsZGRpciddLCBmYWlsc2FmZT1GYWxzZSwgbWFjaGluZT1tYWNoaW5lKQorICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBleDoKKyAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKHN0cihleCkpCisgICAgICAgIGlmIG1zZzoKKyAgICAgICAgICAgIG1zZy5pbnNlcnQoMCwgJ1RoZSBmb2xsb3dpbmcgbWFjaGluZXMgYnJva2UgYSB3b3JsZCBidWlsZDonKQorICAgICAgICAgICAgc2VsZi5mYWlsKCdcbicuam9pbihtc2cpKQorCisgICAgZGVmIHRlc3RfbWFjaGluZV9zaWduYXR1cmVzKHNlbGYpOgorICAgICAgICAnJycKKyAgICAgICAgU2VsZWN0aW5nIGEgbWFjaGluZSBtYXkgb25seSBhZmZlY3QgdGhlIHNpZ25hdHVyZSBvZiB0YXNrcyB0aGF0IGFyZSBzcGVjaWZpYworICAgICAgICB0byB0aGF0IG1hY2hpbmUuIEluIG90aGVyIHdvcmRzLCB3aGVuIE1BQ0hJTkU9QSBhbmQgTUFDSElORT1CIHNoYXJlIGEgcmVjaXBlCisgICAgICAgIGZvbyBhbmQgdGhlIG91dHB1dCBvZiBmb28sIHRoZW4gYm90aCBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zIG11c3QgYnVpbGQgZm9vCisgICAgICAgIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5LiBPdGhlcndpc2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBib3RoIG1hY2hpbmVzCisgICAgICAgIGluIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbi4KKworICAgICAgICBUaGlzIGNyaXRlcmlhIGNhbiBvbmx5IGJlIHRlc3RlZCBieSB0ZXN0aW5nIGRpZmZlcmVudCBtYWNoaW5lcyBpbiBjb21iaW5hdGlvbiwKKyAgICAgICAgaS5lLiBvbmUgbWFpbiBsYXllciwgcG90ZW50aWFsbHkgc2V2ZXJhbCBhZGRpdGlvbmFsIEJTUCBsYXllcnMgYW5kIGFuIGV4cGxpY2l0CisgICAgICAgIGNob2ljZSBvZiBtYWNoaW5lczoKKyAgICAgICAgeW9jdG8tY2hlY2stbGF5ZXIgLS1hZGRpdGlvbmFsLWxheWVycyAuLi4vbWV0YS1pbnRlbCAtLW1hY2hpbmVzIGludGVsLWNvcmVpNy02NCBpbXg2c2xldmsgLS0gLi4uL21ldGEtZnJlZXNjYWxlCisgICAgICAgICcnJworCisgICAgICAgIGlmIG5vdCBzZWxmLnRkWydtYWNoaW5lcyddOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm8gbWFjaGluZXMgc2V0IHdpdGggLS1tYWNoaW5lcy4nKQorCisgICAgICAgICMgQ29sbGVjdCBzaWduYXR1cmVzIGZvciBhbGwgbWFjaGluZXMgdGhhdCB3ZSBhcmUgdGVzdGluZworICAgICAgICAjIGFuZCBtZXJnZSB0aGF0IGludG8gYSBoYXNoOgorICAgICAgICAjIHR1bmUgLT4gdGFzayAtPiBzaWduYXR1cmUgLT4gbGlzdCBvZiBtYWNoaW5lcyB3aXRoIHRoYXQgY29tYmluYXRpb24KKyAgICAgICAgIworICAgICAgICAjIEl0IGlzIGFuIGVycm9yIGlmIGFueSB0dW5lL3Rhc2sgcGFpciBoYXMgbW9yZSB0aGFuIG9uZSBzaWduYXR1cmUsCisgICAgICAgICMgYmVjYXVzZSB0aGF0IGltcGxpZXMgdGhhdCB0aGUgbWFjaGluZXMgdGhhdCBjYXVzZWQgdGhvc2UgZGlmZmVyZW50CisgICAgICAgICMgc2lnbmF0dXJlcyBkbyBub3QgYWdyZWUgb24gaG93IHRvIGV4ZWN1dGUgdGhlIHRhc2suCisgICAgICAgIHR1bmVzID0ge30KKyAgICAgICAgIyBQcmVzZXJ2ZSBvcmRlcmluZyBvZiBtYWNoaW5lcyBhcyBjaG9zZW4gYnkgdGhlIHVzZXIuCisgICAgICAgIGZvciBtYWNoaW5lIGluIHNlbGYudGRbJ21hY2hpbmVzJ106CisgICAgICAgICAgICBjdXJyX3NpZ3MsIHR1bmUydGFza3MgPSBnZXRfc2lnbmF0dXJlcyhzZWxmLnRkWydidWlsZGRpciddLCBmYWlsc2FmZT1UcnVlLCBtYWNoaW5lPW1hY2hpbmUpCisgICAgICAgICAgICAjIEludmVydCB0aGUgdHVuZSAtPiBbdGFza3NdIG1hcHBpbmcuCisgICAgICAgICAgICB0YXNrczJ0dW5lID0ge30KKyAgICAgICAgICAgIGZvciB0dW5lLCB0YXNrcyBpbiB0dW5lMnRhc2tzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9yIHRhc2sgaW4gdGFza3M6CisgICAgICAgICAgICAgICAgICAgIHRhc2tzMnR1bmVbdGFza10gPSB0dW5lCisgICAgICAgICAgICBmb3IgdGFzaywgc2lnaGFzaCBpbiBjdXJyX3NpZ3MuaXRlbXMoKToKKyAgICAgICAgICAgICAgICB0dW5lcy5zZXRkZWZhdWx0KHRhc2tzMnR1bmVbdGFza10sIHt9KS5zZXRkZWZhdWx0KHRhc2ssIHt9KS5zZXRkZWZhdWx0KHNpZ2hhc2gsIFtdKS5hcHBlbmQobWFjaGluZSkKKworICAgICAgICBtc2cgPSBbXQorICAgICAgICBwcnVuZWQgPSAwCisgICAgICAgIGxhc3RfbGluZV9rZXkgPSBOb25lCisgICAgICAgICMgZG9fZmV0Y2gsIGRvX3VucGFjaywgLi4uLCBkb19idWlsZAorICAgICAgICB0YXNrbmFtZV9saXN0ID0gW10KKyAgICAgICAgaWYgdHVuZXM6CisgICAgICAgICAgICAjIFRoZSBvdXRwdXQgYmVsb3cgaXMgbW9zdCB1c2VmdWwgd2hlbiB3ZSBzdGFydCB3aXRoIHRhc2tzIHRoYXQgYXJlIGF0CisgICAgICAgICAgICAjIHRoZSBib3R0b20gb2YgdGhlIGRlcGVuZGVuY3kgY2hhaW4sIGkuZS4gdGhvc2UgdGhhdCBydW4gZmlyc3QuIElmCisgICAgICAgICAgICAjIHRob3NlIHRhc2tzIGRpZmZlciwgdGhlIHJlc3QgYWxzbyBkb2VzLgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBUbyBnZXQgYW4gb3JkZXJpbmcgb2YgdGFza3MsIHdlIGRvIGEgdG9wb2xvZ2ljYWwgc29ydCBvZiB0aGUgZW50aXJlCisgICAgICAgICAgICAjIGRlcGdyYXBoIGZvciB0aGUgYmFzZSBjb25maWd1cmF0aW9uLCB0aGVuIG9uLXRoZS1mbHkgZmxhdHRlbiB0aGF0IGxpc3QgYnkgc3RyaXBwaW5nCisgICAgICAgICAgICAjIG91dCB0aGUgcmVjaXBlIG5hbWVzIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzLiBUaGUgYmFzZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAjIGlzIG5vdCBuZWNlc3NhcmlseSByZXByZXNlbnRhdGl2ZSwgYnV0IHNob3VsZCBiZSBjbG9zZSBlbm91Z2guIFRhc2tzCisgICAgICAgICAgICAjIHRoYXQgd2VyZSBub3QgZW5jb3VudGVyZWQgZ2V0IGEgZGVmYXVsdCBwcmlvcml0eS4KKyAgICAgICAgICAgIGRlcGdyYXBoID0gZ2V0X2RlcGdyYXBoKCkKKyAgICAgICAgICAgIGRlcGVuZHMgPSBkZXBncmFwaFsndGRlcGVuZHMnXQorICAgICAgICAgICAgV0hJVEUgPSAxCisgICAgICAgICAgICBHUkFZID0gMgorICAgICAgICAgICAgQkxBQ0sgPSAzCisgICAgICAgICAgICBjb2xvciA9IHt9CisgICAgICAgICAgICBmb3VuZCA9IHNldCgpCisgICAgICAgICAgICBkZWYgdmlzaXQodGFzayk6CisgICAgICAgICAgICAgICAgY29sb3JbdGFza10gPSBHUkFZCisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBkZXBlbmRzLmdldCh0YXNrLCAoKSk6CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbG9yLnNldGRlZmF1bHQoZGVwLCBXSElURSkgPT0gV0hJVEU6CisgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdChkZXApCisgICAgICAgICAgICAgICAgY29sb3JbdGFza10gPSBCTEFDSworICAgICAgICAgICAgICAgIHBuLCB0YXNrbmFtZSA9IHRhc2sucnNwbGl0KCcuJywgMSkKKyAgICAgICAgICAgICAgICBpZiB0YXNrbmFtZSBub3QgaW4gZm91bmQ6CisgICAgICAgICAgICAgICAgICAgIHRhc2tuYW1lX2xpc3QuYXBwZW5kKHRhc2tuYW1lKQorICAgICAgICAgICAgICAgICAgICBmb3VuZC5hZGQodGFza25hbWUpCisgICAgICAgICAgICBmb3IgdGFzayBpbiBkZXBlbmRzLmtleXMoKToKKyAgICAgICAgICAgICAgICBpZiBjb2xvci5zZXRkZWZhdWx0KHRhc2ssIFdISVRFKSA9PSBXSElURToKKyAgICAgICAgICAgICAgICAgICAgdmlzaXQodGFzaykKKworICAgICAgICB0YXNrbmFtZV9vcmRlciA9IGRpY3QoWyh0YXNrLCBpbmRleCkgZm9yIGluZGV4LCB0YXNrIGluIGVudW1lcmF0ZSh0YXNrbmFtZV9saXN0KSBdKQorICAgICAgICBkZWYgdGFza19rZXkodGFzayk6CisgICAgICAgICAgICBwbiwgdGFza25hbWUgPSB0YXNrLnJzcGxpdCgnOicsIDEpCisgICAgICAgICAgICByZXR1cm4gKHBuLCB0YXNrbmFtZV9vcmRlci5nZXQodGFza25hbWUsIGxlbih0YXNrbmFtZV9saXN0KSksIHRhc2tuYW1lKQorCisgICAgICAgIGZvciB0dW5lIGluIHNvcnRlZCh0dW5lcy5rZXlzKCkpOgorICAgICAgICAgICAgdGFza3MgPSB0dW5lc1t0dW5lXQorICAgICAgICAgICAgIyBBcyBmb3IgdGVzdF9zaWduYXR1cmVzIGl0IHdvdWxkIGJlIG5pY2VyIHRvIHNvcnQgdGFza3MKKyAgICAgICAgICAgICMgYnkgZGVwZW5kZW5jaWVzIGhlcmUsIGJ1dCB0aGF0IGlzIGhhcmRlciBiZWNhdXNlIHdlIGhhdmUKKyAgICAgICAgICAgICMgdG8gcmVwb3J0IG9uIHRhc2tzIGZyb20gZGlmZmVyZW50IG1hY2hpbmVzLCB3aGljaCBtaWdodAorICAgICAgICAgICAgIyBoYXZlIGRpZmZlcmVudCBkZXBlbmRlbmNpZXMuIFdlIHJlc29ydCB0byBwcnVuaW5nIHRoZQorICAgICAgICAgICAgIyBvdXRwdXQgYnkgcmVwb3J0aW5nIG9ubHkgb25lIHRhc2sgcGVyIHJlY2lwZSBpZiB0aGUgc2V0CisgICAgICAgICAgICAjIG9mIG1hY2hpbmVzIG1hdGNoZXMuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjICJiaXRiYWtlLWRpZmZzaWdzIC10IC1zIiBpcyBpbnRlbGxpZ2VudCBlbm91Z2ggdG8gcHJpbnQKKyAgICAgICAgICAgICMgZGlmZnMgcmVjdXJzaXZlbHksIHNvIG9mdGVuIGl0IGRvZXMgbm90IG1hdHRlciB0aGF0IG11Y2gKKyAgICAgICAgICAgICMgaWYgd2UgZG9uJ3QgcGljayB0aGUgdW5kZXJseWluZyBkaWZmZXJlbmNlCisgICAgICAgICAgICAjIGhlcmUuIEhvd2V2ZXIsIHNvbWV0aW1lcyByZWN1cnNpb24gZmFpbHMKKyAgICAgICAgICAgICMgKGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyOCkuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIFRvIG1pdGlnYXRlIHRoYXQgYSBiaXQsIHdlIHVzZSBhIGhhcmQtY29kZWQgb3JkZXJpbmcgb2YKKyAgICAgICAgICAgICMgdGFza3MgdGhhdCByZXByZXNlbnRzIGhvdyB0aGV5IG5vcm1hbGx5IHJ1biBhbmQgcHJlZmVyCisgICAgICAgICAgICAjIHRvIHByaW50IHRoZSBvbmVzIHRoYXQgcnVuIGZpcnN0LgorICAgICAgICAgICAgZm9yIHRhc2sgaW4gc29ydGVkKHRhc2tzLmtleXMoKSwga2V5PXRhc2tfa2V5KToKKyAgICAgICAgICAgICAgICBzaWduYXR1cmVzID0gdGFza3NbdGFza10KKyAgICAgICAgICAgICAgICAjIGRvX2J1aWxkIGNhbiBiZSBpZ25vcmVkOiBpdCBpcyBrbm93IHRvIGhhdmUKKyAgICAgICAgICAgICAgICAjIGRpZmZlcmVudCBzaWduYXR1cmVzIGluIHNvbWUgY2FzZXMsIGZvciBleGFtcGxlIGluCisgICAgICAgICAgICAgICAgIyB0aGUgYWxsYXJjaCBjYS1jZXJ0aWZpY2F0ZXMgZHVlIHRvIFJERVBFTkRTPW9wZW5zc2wuCisgICAgICAgICAgICAgICAgIyBUaGF0IHBhcnRpY3VsYXIgZGVwZW5kZW5jeSBpcyB3aGl0ZWxpc3RlZCB2aWEKKyAgICAgICAgICAgICAgICAjIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMsIGJ1dCBzdGlsbCBzaG93cyB1cAorICAgICAgICAgICAgICAgICMgaW4gdGhlIHNzdGF0ZSBzaWduYXR1cmUgaGFzaCBiZWNhdXNlIGZpbHRlcmluZyBpdAorICAgICAgICAgICAgICAgICMgb3V0IHdvdWxkIGJlIGhhcmQgYW5kIHJ1bm5pbmcgZG9fYnVpbGQgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAjIHRpbWVzIGRvZXNuJ3QgcmVhbGx5IG1hdHRlci4KKyAgICAgICAgICAgICAgICBpZiBsZW4oc2lnbmF0dXJlcy5rZXlzKCkpID4gMSBhbmQgXAorICAgICAgICAgICAgICAgICAgIG5vdCB0YXNrLmVuZHN3aXRoKCc6ZG9fYnVpbGQnKToKKyAgICAgICAgICAgICAgICAgICAgIyBFcnJvciEKKyAgICAgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICAgICAjIFNvcnQgc2lnbmF0dXJlcyBieSBtYWNoaW5lcywgYmVjYXVzZSB0aGUgaGV4IHZhbHVlcyBkb24ndCBtZWFuIGFueXRoaW5nLgorICAgICAgICAgICAgICAgICAgICAjID0+IGFsbC1hcmNoIGFkd2FpdGEtaWNvbi10aGVtZTpkb19idWlsZDogMTIzNC4uLiAoYmVhZ2xlYm9uZSwgcWVtdXg4NikgIT0gYWJjZGYuLi4gKHFlbXV4ODYtNjQpCisgICAgICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAgICAgIyBTa2lwIHRoZSBsaW5lIGlmIGl0IGlzIGNvdmVyZWQgYWxyZWFkeSBieSB0aGUgcHJlZGVjZXNzb3IgKHNhbWUgcG4sIHNhbWUgc2V0cyBvZiBtYWNoaW5lcykuCisgICAgICAgICAgICAgICAgICAgIHBuLCB0YXNrbmFtZSA9IHRhc2sucnNwbGl0KCc6JywgMSkKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9saW5lX2tleSA9IChwbiwgc29ydGVkKHNpZ25hdHVyZXMudmFsdWVzKCkpKQorICAgICAgICAgICAgICAgICAgICBpZiBuZXh0X2xpbmVfa2V5ICE9IGxhc3RfbGluZV9rZXk6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gJyAgICVzICVzOiAnICUgKHR1bmUsIHRhc2spCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lICs9ICcgIT0gJy5qb2luKFsnJXMgKCVzKScgJSAoc2lnbmF0dXJlLCAnLCAnLmpvaW4oW20gZm9yIG0gaW4gc2lnbmF0dXJlc1tzaWduYXR1cmVdXSkpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlIGluIHNvcnRlZChzaWduYXR1cmVzLmtleXMoKSwga2V5PWxhbWJkYSBzOiBzaWduYXR1cmVzW3NdKV0pCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmVfa2V5ID0gbmV4dF9saW5lX2tleQorICAgICAgICAgICAgICAgICAgICAgICAgbXNnLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBSYW5kb21seSBwaWNrIHR3byBtaXNtYXRjaGVkIHNpZ25hdHVyZXMgYW5kIHJlbWVtYmVyIGhvdyB0byBpbnZva2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYml0YmFrZS1kaWZmc2lncyBmb3IgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gaXRlcihzaWduYXR1cmVzLml0ZW1zKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBhID0gbmV4dChpdGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBuZXh0KGl0ZXJhdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZnNpZ19tYWNoaW5lcyA9ICcoJXMpICE9ICglcyknICUgKCcsICcuam9pbihhWzFdKSwgJywgJy5qb2luKGJbMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZnNpZ19wYXJhbXMgPSAnLXQgJXMgJXMgLXMgJXMgJXMnICUgKHBuLCB0YXNrbmFtZSwgYVswXSwgYlswXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZCArPSAxCisKKyAgICAgICAgaWYgbXNnOgorICAgICAgICAgICAgbXNnLmluc2VydCgwLCAnVGhlIG1hY2hpbmVzIGhhdmUgY29uZmxpY3Rpbmcgc2lnbmF0dXJlcyBmb3Igc29tZSBzaGFyZWQgdGFza3M6JykKKyAgICAgICAgICAgIGlmIHBydW5lZCA+IDA6CisgICAgICAgICAgICAgICAgbXNnLmFwcGVuZCgnJykKKyAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKCclZCB0YXNrcyB3aGVyZSBub3QgbGlzdGVkIGJlY2F1c2Ugc29tZSBvdGhlciB0YXNrIG9mIHRoZSByZWNpcGUgYWxyZWFkeSBkaWZmZXJlZC4nICUgcHJ1bmVkKQorICAgICAgICAgICAgICAgIG1zZy5hcHBlbmQoJ0l0IGlzIGxpa2VseSB0aGF0IGRpZmZlcmVuY2VzIGZyb20gZGlmZmVyZW50IHJlY2lwZXMgYWxzbyBoYXZlIHRoZSBzYW1lIHJvb3QgY2F1c2UuJykKKyAgICAgICAgICAgIG1zZy5hcHBlbmQoJycpCisgICAgICAgICAgICAjIEV4cGxhaW4gaG93IHRvIGludmVzdGlnYXRlLi4uCisgICAgICAgICAgICBtc2cuYXBwZW5kKCdUbyBpbnZlc3RpZ2F0ZSwgcnVuIGJpdGJha2UtZGlmZnNpZ3MgLXQgcmVjaXBlbmFtZSB0YXNrbmFtZSAtcyBmcm9tc2lnIHRvc2lnLicpCisgICAgICAgICAgICBjbWQgPSAnYml0YmFrZS1kaWZmc2lncyAlcycgJSBkaWZmc2lnX3BhcmFtcworICAgICAgICAgICAgbXNnLmFwcGVuZCgnRXhhbXBsZTogJXMgaW4gdGhlIGxhc3QgbGluZScgJSBkaWZmc2lnX21hY2hpbmVzKQorICAgICAgICAgICAgbXNnLmFwcGVuZCgnQ29tbWFuZDogJXMnICUgY21kKQorICAgICAgICAgICAgIyAuLi4gYW5kIGFjdHVhbGx5IGRvIGl0IGF1dG9tYXRpY2FsbHkgZm9yIHRoYXQgZXhhbXBsZSwgYnV0IHdpdGhvdXQgYWJvcnRpbmcKKyAgICAgICAgICAgICMgd2hlbiB0aGF0IGZhaWxzLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dCA9IGNoZWNrX2NvbW1hbmQoJ0NvbXBhcmluZyBzaWduYXR1cmVzIGZhaWxlZC4nLCBjbWQpLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBleDoKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdHIoZXgpCisgICAgICAgICAgICBtc2cuZXh0ZW5kKFsnICAgJyArIGxpbmUgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKV0pCisgICAgICAgICAgICBzZWxmLmZhaWwoJ1xuJy5qb2luKG1zZykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzYzEwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2NvbW1vbi5weQpAQCAtMCwwICsxLDUzIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworaW1wb3J0IGdsb2IKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGNoZWNrbGF5ZXIgaW1wb3J0IGdldF9zaWduYXR1cmVzLCBMYXllclR5cGUsIGNoZWNrX2NvbW1hbmQsIGdldF9kZXBncmFwaCwgY29tcGFyZV9zaWduYXR1cmVzCitmcm9tIGNoZWNrbGF5ZXIuY2FzZSBpbXBvcnQgT0VDaGVja0xheWVyVGVzdENhc2UKKworY2xhc3MgQ29tbW9uQ2hlY2tMYXllcihPRUNoZWNrTGF5ZXJUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmVhZG1lKHNlbGYpOgorICAgICAgICAjIFRoZSB0b3AtbGV2ZWwgUkVBRE1FIGZpbGUgbWF5IGhhdmUgYSBzdWZmaXggKGxpa2UgUkVBRE1FLnJzdCBvciBSRUFETUUudHh0KS4KKyAgICAgICAgcmVhZG1lX2ZpbGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLnRjLmxheWVyWydwYXRoJ10sICdSRUFETUUqJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocmVhZG1lX2ZpbGVzKSA+IDAsCisgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IkxheWVyIGRvZXNuJ3QgY29udGFpbnMgUkVBRE1FIGZpbGUuIikKKworICAgICAgICAjIFRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiBvbmUgZmlsZSBtYXRjaGluZyB0aGUgZmlsZSBwYXR0ZXJuIGFib3ZlCisgICAgICAgICMgKGZvciBleGFtcGxlLCBSRUFETUUucnN0IGFuZCBSRUFETUUtQ09QWUlORy5yc3QpLiBUaGUgb25lIHdpdGggdGhlIHNob3J0ZXN0CisgICAgICAgICMgbmFtZSBpcyBjb25zaWRlcmVkIHRoZSAibWFpbiIgb25lLgorICAgICAgICByZWFkbWVfZmlsZSA9IHNvcnRlZChyZWFkbWVfZmlsZXMpWzBdCisgICAgICAgIGRhdGEgPSAnJworICAgICAgICB3aXRoIG9wZW4ocmVhZG1lX2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGF0YSwKKyAgICAgICAgICAgICAgICBtc2c9IkxheWVyIGNvbnRhaW5zIGEgUkVBRE1FIGZpbGUgYnV0IGl0IGlzIGVtcHR5LiIpCisKKyAgICBkZWYgdGVzdF9wYXJzZShzZWxmKToKKyAgICAgICAgY2hlY2tfY29tbWFuZCgnTGF5ZXIgJXMgZmFpbGVkIHRvIHBhcnNlLicgJSBzZWxmLnRjLmxheWVyWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgJ2JpdGJha2UgLXAnKQorCisgICAgZGVmIHRlc3Rfc2hvd19lbnZpcm9ubWVudChzZWxmKToKKyAgICAgICAgY2hlY2tfY29tbWFuZCgnTGF5ZXIgJXMgZmFpbGVkIHRvIHNob3cgZW52aXJvbm1lbnQuJyAlIHNlbGYudGMubGF5ZXJbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAnYml0YmFrZSAtZScpCisKKyAgICBkZWYgdGVzdF93b3JsZChzZWxmKToKKyAgICAgICAgJycnCisgICAgICAgICJiaXRiYWtlIHdvcmxkIiBpcyBleHBlY3RlZCB0byB3b3JrLiB0ZXN0X3NpZ25hdHVyZXMgZG9lcyBub3QgY292ZXIgdGhhdAorICAgICAgICBiZWNhdXNlIGl0IGlzIG1vcmUgbGVuaWVudCBhbmQgaWdub3JlcyByZWNpcGVzIGluIGEgd29ybGQgYnVpbGQgdGhhdAorICAgICAgICBhcmUgbm90IGFjdHVhbGx5IGJ1aWxkYWJsZSwgc28gaGVyZSB3ZSBmYWlsIHdoZW4gImJpdGJha2UgLVMgbm9uZSB3b3JsZCIKKyAgICAgICAgZmFpbHMuCisgICAgICAgICcnJworICAgICAgICBnZXRfc2lnbmF0dXJlcyhzZWxmLnRkWydidWlsZGRpciddLCBmYWlsc2FmZT1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYudGMubGF5ZXJbJ3R5cGUnXSA9PSBMYXllclR5cGUuU09GVFdBUkUgYW5kIFwKKyAgICAgICAgICAgbm90IHNlbGYudGMudGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIk5vdCB0ZXN0aW5nIGZvciBzaWduYXR1cmUgY2hhbmdlcyBpbiBhIHNvZnR3YXJlIGxheWVyICVzLiIgXAorICAgICAgICAgICAgICAgICAgICAgJSBzZWxmLnRjLmxheWVyWyduYW1lJ10pCisKKyAgICAgICAgY3Vycl9zaWdzLCBfID0gZ2V0X3NpZ25hdHVyZXMoc2VsZi50ZFsnYnVpbGRkaXInXSwgZmFpbHNhZmU9VHJ1ZSkKKyAgICAgICAgbXNnID0gY29tcGFyZV9zaWduYXR1cmVzKHNlbGYudGRbJ3NpZ3MnXSwgY3Vycl9zaWdzKQorICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ0FkZGluZyBsYXllciAlcyBjaGFuZ2VkIHNpZ25hdHVyZXMuXG4lcycgJSAoc2VsZi50Yy5sYXllclsnbmFtZSddLCBtc2cpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvZGlzdHJvLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvZGlzdHJvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMWIzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9kaXN0cm8ucHkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIGNoZWNrbGF5ZXIgaW1wb3J0IExheWVyVHlwZQorZnJvbSBjaGVja2xheWVyLmNhc2UgaW1wb3J0IE9FQ2hlY2tMYXllclRlc3RDYXNlCisKK2NsYXNzIERpc3Ryb0NoZWNrTGF5ZXIoT0VDaGVja0xheWVyVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnRjLmxheWVyWyd0eXBlJ10gIT0gTGF5ZXJUeXBlLkRJU1RSTzoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJEaXN0cm9DaGVja0xheWVyOiBMYXllciAlcyBpc24ndCBEaXN0cm8gb25lLiIgJVwKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxheWVyWyduYW1lJ10pCisKKyAgICBkZWYgdGVzdF9kaXN0cm9fZGVmaW5lc19kaXN0cm9zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50Yy5sYXllclsnY29uZiddWydkaXN0cm9zJ10sIAorICAgICAgICAgICAgICAgICJMYXllciBpcyBCU1AgYnV0IGRvZXNuJ3QgZGVmaW5lcyBtYWNoaW5lcy4iKQorCisgICAgZGVmIHRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm9zKHNlbGYpOgorICAgICAgICBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIKKworICAgICAgICBkaXN0cm8gPSBnZXRfYmJfdmFyKCdESVNUUk8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGRbJ2JidmFycyddWydESVNUUk8nXSwgZGlzdHJvLAorICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgJXMgbW9kaWZpZWQgZGlzdHJvICVzIC0+ICVzIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYudGMubGF5ZXJbJ25hbWUnXSwgc2VsZi50ZFsnYmJ2YXJzJ11bJ0RJU1RSTyddLCBkaXN0cm8pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY29udGV4dC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2NvbnRleHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJlYzJjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2NvbnRleHQucHkKQEAgLTAsMCArMSwxNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IGdsb2IKK2ltcG9ydCByZQorCitmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0CisKK2NsYXNzIENoZWNrTGF5ZXJUZXN0Q29udGV4dChPRVRlc3RDb250ZXh0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGQ9Tm9uZSwgbG9nZ2VyPU5vbmUsIGxheWVyPU5vbmUsIHRlc3Rfc29mdHdhcmVfbGF5ZXJfc2lnbmF0dXJlcz1UcnVlKToKKyAgICAgICAgc3VwZXIoQ2hlY2tMYXllclRlc3RDb250ZXh0LCBzZWxmKS5fX2luaXRfXyh0ZCwgbG9nZ2VyKQorICAgICAgICBzZWxmLmxheWVyID0gbGF5ZXIKKyAgICAgICAgc2VsZi50ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXMgPSB0ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE5N2U4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOTIgKzAsMCBAQAotIyBZb2N0byBQcm9qZWN0IGNvbXBhdGliaWxpdHkgbGF5ZXIgdG9vbAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJvY2VzcwotZnJvbSBlbnVtIGltcG9ydCBFbnVtCi0KLWltcG9ydCBiYi50aW5mb2lsCi0KLWNsYXNzIExheWVyVHlwZShFbnVtKToKLSAgICBCU1AgPSAwCi0gICAgRElTVFJPID0gMQotICAgIFNPRlRXQVJFID0gMgotICAgIEVSUk9SX05PX0xBWUVSX0NPTkYgPSA5OAotICAgIEVSUk9SX0JTUF9ESVNUUk8gPSA5OQotCi1kZWYgX2dldF9jb25maWd1cmF0aW9ucyhwYXRoKToKLSAgICBjb25maWdzID0gW10KLQotICAgIGZvciBmIGluIG9zLmxpc3RkaXIocGF0aCk6Ci0gICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCBmKQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpIGFuZCBmLmVuZHN3aXRoKCcuY29uZicpOgotICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoZls6LTVdKSAjIHN0cmlwIC5jb25mCi0gICAgcmV0dXJuIGNvbmZpZ3MKLQotZGVmIF9nZXRfbGF5ZXJfY29sbGVjdGlvbnMobGF5ZXJfcGF0aCwgbGNvbmY9Tm9uZSwgZGF0YT1Ob25lKToKLSAgICBpbXBvcnQgYmIucGFyc2UKLSAgICBpbXBvcnQgYmIuZGF0YQotCi0gICAgaWYgbGNvbmYgaXMgTm9uZToKLSAgICAgICAgbGNvbmYgPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpCi0KLSAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgIGxkYXRhID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgYmIucGFyc2UuaW5pdF9wYXJzZXIobGRhdGEpCi0gICAgZWxzZToKLSAgICAgICAgbGRhdGEgPSBkYXRhLmNyZWF0ZUNvcHkoKQotCi0gICAgbGRhdGEuc2V0VmFyKCdMQVlFUkRJUicsIGxheWVyX3BhdGgpCi0gICAgdHJ5OgotICAgICAgICBsZGF0YSA9IGJiLnBhcnNlLmhhbmRsZShsY29uZiwgbGRhdGEsIGluY2x1ZGU9VHJ1ZSkKLSAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6Ci0gICAgICAgIHJhaXNlIExheWVyRXJyb3IoZXhjKQotICAgIGxkYXRhLmV4cGFuZFZhcnJlZignTEFZRVJESVInKQotCi0gICAgY29sbGVjdGlvbnMgPSAobGRhdGEuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBUcnVlKSBvciAnJykuc3BsaXQoKQotICAgIGlmIG5vdCBjb2xsZWN0aW9uczoKLSAgICAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobGF5ZXJfcGF0aCkKLSAgICAgICAgY29sbGVjdGlvbnMgPSBbbmFtZV0KLQotICAgIGNvbGxlY3Rpb25zID0ge2M6IHt9IGZvciBjIGluIGNvbGxlY3Rpb25zfQotICAgIGZvciBuYW1lIGluIGNvbGxlY3Rpb25zOgotICAgICAgICBwcmlvcml0eSA9IGxkYXRhLmdldFZhcignQkJGSUxFX1BSSU9SSVRZXyVzJyAlIG5hbWUsIFRydWUpCi0gICAgICAgIHBhdHRlcm4gPSBsZGF0YS5nZXRWYXIoJ0JCRklMRV9QQVRURVJOXyVzJyAlIG5hbWUsIFRydWUpCi0gICAgICAgIGRlcGVuZHMgPSBsZGF0YS5nZXRWYXIoJ0xBWUVSREVQRU5EU18lcycgJSBuYW1lLCBUcnVlKQotICAgICAgICBjb2xsZWN0aW9uc1tuYW1lXVsncHJpb3JpdHknXSA9IHByaW9yaXR5Ci0gICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydwYXR0ZXJuJ10gPSBwYXR0ZXJuCi0gICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydkZXBlbmRzJ10gPSBkZXBlbmRzCi0KLSAgICByZXR1cm4gY29sbGVjdGlvbnMKLQotZGVmIF9kZXRlY3RfbGF5ZXIobGF5ZXJfcGF0aCk6Ci0gICAgIiIiCi0gICAgICAgIFNjYW5zIGxheWVyIGRpcmVjdG9yeSB0byBkZXRlY3Qgd2hhdCB0eXBlIG9mIGxheWVyCi0gICAgICAgIGlzIEJTUCwgRGlzdHJvIG9yIFNvZnR3YXJlLgotCi0gICAgICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggbGF5ZXIgbmFtZSwgdHlwZSBhbmQgcGF0aC4KLSAgICAiIiIKLQotICAgIGxheWVyID0ge30KLSAgICBsYXllcl9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShsYXllcl9wYXRoKQotCi0gICAgbGF5ZXJbJ25hbWUnXSA9IGxheWVyX25hbWUKLSAgICBsYXllclsncGF0aCddID0gbGF5ZXJfcGF0aAotICAgIGxheWVyWydjb25mJ10gPSB7fQotCi0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsYXllcl9wYXRoLCAnY29uZicsICdsYXllci5jb25mJykpOgotICAgICAgICBsYXllclsndHlwZSddID0gTGF5ZXJUeXBlLkVSUk9SX05PX0xBWUVSX0NPTkYKLSAgICAgICAgcmV0dXJuIGxheWVyCi0KLSAgICBtYWNoaW5lX2NvbmYgPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgJ2NvbmYnLCAnbWFjaGluZScpCi0gICAgZGlzdHJvX2NvbmYgPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgJ2NvbmYnLCAnZGlzdHJvJykKLQotICAgIGlzX2JzcCA9IEZhbHNlCi0gICAgaXNfZGlzdHJvID0gRmFsc2UKLQotICAgIGlmIG9zLnBhdGguaXNkaXIobWFjaGluZV9jb25mKToKLSAgICAgICAgbWFjaGluZXMgPSBfZ2V0X2NvbmZpZ3VyYXRpb25zKG1hY2hpbmVfY29uZikKLSAgICAgICAgaWYgbWFjaGluZXM6Ci0gICAgICAgICAgICBpc19ic3AgPSBUcnVlCi0KLSAgICBpZiBvcy5wYXRoLmlzZGlyKGRpc3Ryb19jb25mKToKLSAgICAgICAgZGlzdHJvcyA9IF9nZXRfY29uZmlndXJhdGlvbnMoZGlzdHJvX2NvbmYpCi0gICAgICAgIGlmIGRpc3Ryb3M6Ci0gICAgICAgICAgICBpc19kaXN0cm8gPSBUcnVlCi0KLSAgICBpZiBpc19ic3AgYW5kIGlzX2Rpc3RybzoKLSAgICAgICAgbGF5ZXJbJ3R5cGUnXSA9IExheWVyVHlwZS5FUlJPUl9CU1BfRElTVFJPCi0gICAgZWxpZiBpc19ic3A6Ci0gICAgICAgIGxheWVyWyd0eXBlJ10gPSBMYXllclR5cGUuQlNQCi0gICAgICAgIGxheWVyWydjb25mJ11bJ21hY2hpbmVzJ10gPSBtYWNoaW5lcwotICAgIGVsaWYgaXNfZGlzdHJvOgotICAgICAgICBsYXllclsndHlwZSddID0gTGF5ZXJUeXBlLkRJU1RSTwotICAgICAgICBsYXllclsnY29uZiddWydkaXN0cm9zJ10gPSBkaXN0cm9zCi0gICAgZWxzZToKLSAgICAgICAgbGF5ZXJbJ3R5cGUnXSA9IExheWVyVHlwZS5TT0ZUV0FSRQotCi0gICAgbGF5ZXJbJ2NvbGxlY3Rpb25zJ10gPSBfZ2V0X2xheWVyX2NvbGxlY3Rpb25zKGxheWVyWydwYXRoJ10pCi0KLSAgICByZXR1cm4gbGF5ZXIKLQotZGVmIGRldGVjdF9sYXllcnMobGF5ZXJfZGlyZWN0b3JpZXMsIG5vX2F1dG8pOgotICAgIGxheWVycyA9IFtdCi0KLSAgICBmb3IgZGlyZWN0b3J5IGluIGxheWVyX2RpcmVjdG9yaWVzOgotICAgICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLnJlYWxwYXRoKGRpcmVjdG9yeSkKLSAgICAgICAgaWYgZGlyZWN0b3J5Wy0xXSA9PSAnLyc6Ci0gICAgICAgICAgICBkaXJlY3RvcnkgPSBkaXJlY3RvcnlbMDotMV0KLQotICAgICAgICBpZiBub19hdXRvOgotICAgICAgICAgICAgY29uZl9kaXIgPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCAnY29uZicpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGNvbmZfZGlyKToKLSAgICAgICAgICAgICAgICBsYXllciA9IF9kZXRlY3RfbGF5ZXIoZGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGlmIGxheWVyOgotICAgICAgICAgICAgICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKLSAgICAgICAgICAgICAgICBkaXJfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocm9vdCkKLSAgICAgICAgICAgICAgICBjb25mX2RpciA9IG9zLnBhdGguam9pbihyb290LCAnY29uZicpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihjb25mX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIGxheWVyID0gX2RldGVjdF9sYXllcihyb290KQotICAgICAgICAgICAgICAgICAgICBpZiBsYXllcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVycy5hcHBlbmQobGF5ZXIpCi0KLSAgICByZXR1cm4gbGF5ZXJzCi0KLWRlZiBfZmluZF9sYXllcl9kZXBlbmRzKGRlcGVuZCwgbGF5ZXJzKToKLSAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgotICAgICAgICBmb3IgY29sbGVjdGlvbiBpbiBsYXllclsnY29sbGVjdGlvbnMnXToKLSAgICAgICAgICAgIGlmIGRlcGVuZCA9PSBjb2xsZWN0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiBsYXllcgotICAgIHJldHVybiBOb25lCi0KLWRlZiBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGxheWVycywgbG9nZ2VyKToKLSAgICBkZWYgcmVjdXJzZV9kZXBlbmRlbmNpZXMoZGVwZW5kcywgbGF5ZXIsIGxheWVycywgbG9nZ2VyLCByZXQgPSBbXSk6Ci0gICAgICAgIGxvZ2dlci5kZWJ1ZygnUHJvY2Vzc2luZyBkZXBlbmRlbmNpZXMgJXMgZm9yIGxheWVyICVzLicgJSBcCi0gICAgICAgICAgICAgICAgICAgIChkZXBlbmRzLCBsYXllclsnbmFtZSddKSkKLQotICAgICAgICBmb3IgZGVwZW5kIGluIGRlcGVuZHMuc3BsaXQoKToKLSAgICAgICAgICAgICMgY29yZSAob2UtY29yZSkgaXMgc3VwcG9zZSB0byBiZSBwcm92aWRlZAotICAgICAgICAgICAgaWYgZGVwZW5kID09ICdjb3JlJzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBsYXllcl9kZXBlbmQgPSBfZmluZF9sYXllcl9kZXBlbmRzKGRlcGVuZCwgbGF5ZXJzKQotICAgICAgICAgICAgaWYgbm90IGxheWVyX2RlcGVuZDoKLSAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0xheWVyICVzIGRlcGVuZHMgb24gJXMgYW5kIGlzblwndCBmb3VuZC4nICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgKGxheWVyWyduYW1lJ10sIGRlcGVuZCkpCi0gICAgICAgICAgICAgICAgcmV0ID0gTm9uZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICMgV2Uga2VlcCBwcm9jZXNzaW5nLCBldmVuIGlmIHJldCBpcyBOb25lLCB0aGlzIGFsbG93cyB1cyB0byByZXBvcnQKLSAgICAgICAgICAgICMgbXVsdGlwbGUgZXJyb3JzIGF0IG9uY2UKLSAgICAgICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBhbmQgbGF5ZXJfZGVwZW5kIG5vdCBpbiByZXQ6Ci0gICAgICAgICAgICAgICAgcmV0LmFwcGVuZChsYXllcl9kZXBlbmQpCi0KLSAgICAgICAgICAgICMgUmVjdXJzaXZlbHkgcHJvY2Vzcy4uLgotICAgICAgICAgICAgaWYgJ2NvbGxlY3Rpb25zJyBub3QgaW4gbGF5ZXJfZGVwZW5kOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGZvciBjb2xsZWN0aW9uIGluIGxheWVyX2RlcGVuZFsnY29sbGVjdGlvbnMnXToKLSAgICAgICAgICAgICAgICBjb2xsZWN0X2RlcHMgPSBsYXllcl9kZXBlbmRbJ2NvbGxlY3Rpb25zJ11bY29sbGVjdGlvbl1bJ2RlcGVuZHMnXQotICAgICAgICAgICAgICAgIGlmIG5vdCBjb2xsZWN0X2RlcHM6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcmV0ID0gcmVjdXJzZV9kZXBlbmRlbmNpZXMoY29sbGVjdF9kZXBzLCBsYXllcl9kZXBlbmQsIGxheWVycywgbG9nZ2VyLCByZXQpCi0KLSAgICAgICAgcmV0dXJuIHJldAotCi0gICAgbGF5ZXJfZGVwZW5kcyA9IFtdCi0gICAgZm9yIGNvbGxlY3Rpb24gaW4gbGF5ZXJbJ2NvbGxlY3Rpb25zJ106Ci0gICAgICAgIGRlcGVuZHMgPSBsYXllclsnY29sbGVjdGlvbnMnXVtjb2xsZWN0aW9uXVsnZGVwZW5kcyddCi0gICAgICAgIGlmIG5vdCBkZXBlbmRzOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBsYXllcl9kZXBlbmRzID0gcmVjdXJzZV9kZXBlbmRlbmNpZXMoZGVwZW5kcywgbGF5ZXIsIGxheWVycywgbG9nZ2VyLCBsYXllcl9kZXBlbmRzKQotCi0gICAgIyBOb3RlOiBbXSAoZW1wdHkpIGlzIGFsbG93ZWQsIE5vbmUgaXMgbm90IQotICAgIGlmIGxheWVyX2RlcGVuZHMgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgIyBEb24ndCBhZGQgYSBsYXllciB0aGF0IGlzIGFscmVhZHkgcHJlc2VudC4KLSAgICAgICAgYWRkZWQgPSBzZXQoKQotICAgICAgICBvdXRwdXQgPSBjaGVja19jb21tYW5kKCdHZXR0aW5nIGV4aXN0aW5nIGxheWVycyBmYWlsZWQuJywgJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIGZvciBsYXllciwgcGF0aCwgcHJpIGluIHJlLmZpbmRhbGwocideKFxTKykgKyhbXlxuXSo/KSArKFxkKykkJywgb3V0cHV0LCByZS5NVUxUSUxJTkUpOgotICAgICAgICAgICAgYWRkZWQuYWRkKHBhdGgpCi0KLSAgICAgICAgZm9yIGxheWVyX2RlcGVuZCBpbiBsYXllcl9kZXBlbmRzOgotICAgICAgICAgICAgbmFtZSA9IGxheWVyX2RlcGVuZFsnbmFtZSddCi0gICAgICAgICAgICBwYXRoID0gbGF5ZXJfZGVwZW5kWydwYXRoJ10KLSAgICAgICAgICAgIGlmIHBhdGggaW4gYWRkZWQ6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYWRkZWQuYWRkKHBhdGgpCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIGxheWVyIGRlcGVuZGVuY3kgJXMnICUgbmFtZSkKLSAgICAgICAgICAgIHdpdGggb3BlbihiYmxheWVyc2NvbmYsICdhKycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiXG5CQkxBWUVSUyArPSBcIiVzXCJcbiIgJSBwYXRoKQotICAgIHJldHVybiBUcnVlCi0KLWRlZiBhZGRfbGF5ZXIoYmJsYXllcnNjb25mLCBsYXllciwgbGF5ZXJzLCBsb2dnZXIpOgotICAgIGxvZ2dlci5pbmZvKCdBZGRpbmcgbGF5ZXIgJXMnICUgbGF5ZXJbJ25hbWUnXSkKLSAgICB3aXRoIG9wZW4oYmJsYXllcnNjb25mLCAnYSsnKSBhcyBmOgotICAgICAgICBmLndyaXRlKCJcbkJCTEFZRVJTICs9IFwiJXNcIlxuIiAlIGxheWVyWydwYXRoJ10pCi0KLSAgICByZXR1cm4gVHJ1ZQotCi1kZWYgY2hlY2tfY29tbWFuZChlcnJvcl9tc2csIGNtZCk6Ci0gICAgJycnCi0gICAgUnVuIGEgY29tbWFuZCB1bmRlciBhIHNoZWxsLCBjYXB0dXJlIHN0ZG91dCBhbmQgc3RkZXJyIGluIGEgc2luZ2xlIHN0cmVhbSwKLSAgICB0aHJvdyBhbiBlcnJvciB3aGVuIGNvbW1hbmQgcmV0dXJucyBub24temVybyBleGl0IGNvZGUuIFJldHVybnMgdGhlIG91dHB1dC4KLSAgICAnJycKLQotICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIG91dHB1dCwgXyA9IHAuY29tbXVuaWNhdGUoKQotICAgIGlmIHAucmV0dXJuY29kZToKLSAgICAgICAgbXNnID0gIiVzXG5Db21tYW5kOiAlc1xuT3V0cHV0OlxuJXMiICUgKGVycm9yX21zZywgY21kLCBvdXRwdXQuZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IobXNnKQotICAgIHJldHVybiBvdXRwdXQKLQotZGVmIGdldF9zaWduYXR1cmVzKGJ1aWxkZGlyLCBmYWlsc2FmZT1GYWxzZSwgbWFjaGluZT1Ob25lKToKLSAgICBpbXBvcnQgcmUKLQotICAgICMgc29tZSByZWNpcGVzIG5lZWRzIHRvIGJlIGV4Y2x1ZGVkIGxpa2UgbWV0YS13b3JsZC1wa2dkYXRhCi0gICAgIyBiZWNhdXNlIGEgbGF5ZXIgY2FuIGFkZCByZWNpcGVzIHRvIGEgd29ybGQgYnVpbGQgc28gc2lnbmF0dXJlCi0gICAgIyB3aWxsIGJlIGNoYW5nZQotICAgIGV4Y2x1ZGVfcmVjaXBlcyA9ICgnbWV0YS13b3JsZC1wa2dkYXRhJywpCi0KLSAgICBzaWdzID0ge30KLSAgICB0dW5lMnRhc2tzID0ge30KLQotICAgIGNtZCA9ICcnCi0gICAgaWYgbWFjaGluZToKLSAgICAgICAgY21kICs9ICdNQUNISU5FPSVzICcgJSBtYWNoaW5lCi0gICAgY21kICs9ICdiaXRiYWtlICcKLSAgICBpZiBmYWlsc2FmZToKLSAgICAgICAgY21kICs9ICctayAnCi0gICAgY21kICs9ICctUyBub25lIHdvcmxkJwotICAgIHNpZ3NfZmlsZSA9IG9zLnBhdGguam9pbihidWlsZGRpciwgJ2xvY2tlZC1zaWdzLmluYycpCi0gICAgaWYgb3MucGF0aC5leGlzdHMoc2lnc19maWxlKToKLSAgICAgICAgb3MudW5saW5rKHNpZ3NfZmlsZSkKLSAgICB0cnk6Ci0gICAgICAgIGNoZWNrX2NvbW1hbmQoJ0dlbmVyYXRpbmcgc2lnbmF0dXJlcyBmYWlsZWQuIFRoaXMgbWlnaHQgYmUgZHVlIHRvIHNvbWUgcGFyc2UgZXJyb3IgYW5kL29yIGdlbmVyYWwgbGF5ZXIgaW5jb21wYXRpYmlsaXRpZXMuJywKLSAgICAgICAgICAgICAgICAgICAgICBjbWQpCi0gICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBleDoKLSAgICAgICAgaWYgZmFpbHNhZmUgYW5kIG9zLnBhdGguZXhpc3RzKHNpZ3NfZmlsZSk6Ci0gICAgICAgICAgICAjIElnbm9yZSB0aGUgZXJyb3IgaGVyZS4gTW9zdCBsaWtlbHkgc29tZSByZWNpcGVzIGFjdGl2ZQotICAgICAgICAgICAgIyBpbiBhIHdvcmxkIGJ1aWxkIGxhY2sgc29tZSBkZXBlbmRlbmNpZXMuIFRoZXJlIGlzIGEKLSAgICAgICAgICAgICMgc2VwYXJhdGUgdGVzdF9tYWNoaW5lX3dvcmxkX2J1aWxkIHdoaWNoIGV4cG9zZXMgdGhlCi0gICAgICAgICAgICAjIGZhaWx1cmUuCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZQotCi0gICAgc2lnX3JlZ2V4ID0gcmUuY29tcGlsZSgiXig/UDx0YXNrPi4qOi4qKTooP1A8aGFzaD4uKikgLiQiKQotICAgIHR1bmVfcmVnZXggPSByZS5jb21waWxlKCIoXnxccylTSUdHRU5fTE9DS0VEU0lHU190LSg/UDx0dW5lPlxTKilccyo9XHMqIikKLSAgICBjdXJyZW50X3R1bmUgPSBOb25lCi0gICAgd2l0aCBvcGVuKHNpZ3NfZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICAgICAgdCA9IHR1bmVfcmVnZXguc2VhcmNoKGxpbmUpCi0gICAgICAgICAgICBpZiB0OgotICAgICAgICAgICAgICAgIGN1cnJlbnRfdHVuZSA9IHQuZ3JvdXAoJ3R1bmUnKQotICAgICAgICAgICAgcyA9IHNpZ19yZWdleC5tYXRjaChsaW5lKQotICAgICAgICAgICAgaWYgczoKLSAgICAgICAgICAgICAgICBleGNsdWRlID0gRmFsc2UKLSAgICAgICAgICAgICAgICBmb3IgZXIgaW4gZXhjbHVkZV9yZWNpcGVzOgotICAgICAgICAgICAgICAgICAgICAocmVjaXBlLCB0YXNrKSA9IHMuZ3JvdXAoJ3Rhc2snKS5zcGxpdCgnOicpCi0gICAgICAgICAgICAgICAgICAgIGlmIGVyID09IHJlY2lwZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIGV4Y2x1ZGU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBzaWdzW3MuZ3JvdXAoJ3Rhc2snKV0gPSBzLmdyb3VwKCdoYXNoJykKLSAgICAgICAgICAgICAgICB0dW5lMnRhc2tzLnNldGRlZmF1bHQoY3VycmVudF90dW5lLCBbXSkuYXBwZW5kKHMuZ3JvdXAoJ3Rhc2snKSkKLQotICAgIGlmIG5vdCBzaWdzOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NhblwndCBsb2FkIHNpZ25hdHVyZXMgZnJvbSAlcycgJSBzaWdzX2ZpbGUpCi0KLSAgICByZXR1cm4gKHNpZ3MsIHR1bmUydGFza3MpCi0KLWRlZiBnZXRfZGVwZ3JhcGgodGFyZ2V0cz1bJ3dvcmxkJ10sIGZhaWxzYWZlPUZhbHNlKToKLSAgICAnJycKLSAgICBSZXR1cm5zIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGZvciB0aGUgZ2l2ZW4gdGFyZ2V0KHMpLgotICAgIFRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gRGVwVHJlZUV2ZW50LgotICAgICcnJwotICAgIGRlcGdyYXBoID0gTm9uZQotICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlKQotICAgICAgICB0aW5mb2lsLnNldF9ldmVudF9tYXNrKFsnYmIuZXZlbnQuTm9Qcm92aWRlcicsICdiYi5ldmVudC5EZXBUcmVlR2VuZXJhdGVkJywgJ2JiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCddKQotICAgICAgICBpZiBub3QgdGluZm9pbC5ydW5fY29tbWFuZCgnZ2VuZXJhdGVEZXBUcmVlRXZlbnQnLCB0YXJnZXRzLCAnZG9fYnVpbGQnKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignc3RhcnRpbmcgZ2VuZXJhdGVEZXBUcmVlRXZlbnQgZmFpbGVkJykKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGV2ZW50ID0gdGluZm9pbC53YWl0X2V2ZW50KHRpbWVvdXQ9MTAwMCkKLSAgICAgICAgICAgIGlmIGV2ZW50OgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignR2VuZXJhdGluZyBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZhaWxlZDogJXMnICUgZXZlbnQuZXJyb3IpCi0gICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTm9Qcm92aWRlcik6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZhaWxzYWZlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgZXZlbnQgaXMgaW5mb3JtYXRpb25hbCwgd2Ugd2lsbCBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHJlbWFpbmluZyBkZXBlbmRlbmNpZXMgZXZlbnR1YWxseSBhbmQgdGh1cyBjYW4gaWdub3JlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgaGVyZSBsaWtlIHdlIGRvIGluIGdldF9zaWduYXR1cmVzKCksIGlmIGRlc2lyZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiBldmVudC5fcmVhc29uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignTm90aGluZyBwcm92aWRlcyAlczogJXMnICUgKGV2ZW50Ll9pdGVtLCBldmVudC5fcmVhc29ucykpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ05vdGhpbmcgcHJvdmlkZXMgJXMuJyAlIChldmVudC5faXRlbSkpCi0gICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5EZXBUcmVlR2VuZXJhdGVkKToKLSAgICAgICAgICAgICAgICAgICAgZGVwZ3JhcGggPSBldmVudC5fZGVwZ3JhcGgKLQotICAgIGlmIGRlcGdyYXBoIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ291bGQgbm90IHJldHJpZXZlIHRoZSBkZXBncmFwaC4nKQotICAgIHJldHVybiBkZXBncmFwaAotCi1kZWYgY29tcGFyZV9zaWduYXR1cmVzKG9sZF9zaWdzLCBjdXJyX3NpZ3MpOgotICAgICcnJwotICAgIENvbXBhcmVzIHRoZSByZXN1bHQgb2YgdHdvIGdldF9zaWduYXR1cmVzKCkgY2FsbHMuIFJldHVybnMgTm9uZSBpZiBubwotICAgIHByb2JsZW1zIGZvdW5kLCBvdGhlcndpc2UgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBhcyBhZGRpdGlvbmFsCi0gICAgZXhwbGFuYXRpb24gaW4gc2VsZi5mYWlsKCkuCi0gICAgJycnCi0gICAgIyB0YXNrIC0+IChvbGQgc2lnbmF0dXJlLCBuZXcgc2lnbmF0dXJlKQotICAgIHNpZ19kaWZmID0ge30KLSAgICBmb3IgdGFzayBpbiBvbGRfc2lnczoKLSAgICAgICAgaWYgdGFzayBpbiBjdXJyX3NpZ3MgYW5kIFwKLSAgICAgICAgICAgb2xkX3NpZ3NbdGFza10gIT0gY3Vycl9zaWdzW3Rhc2tdOgotICAgICAgICAgICAgc2lnX2RpZmZbdGFza10gPSAob2xkX3NpZ3NbdGFza10sIGN1cnJfc2lnc1t0YXNrXSkKLQotICAgIGlmIG5vdCBzaWdfZGlmZjoKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICMgQmV3YXJlLCBkZXBncmFwaCB1c2VzIHRhc2s9PHBuPi48dGFza25hbWU+IHdoZXJlYXMgZ2V0X3NpZ25hdHVyZXMoKQotICAgICMgdXNlcyA8cG4+Ojx0YXNrbmFtZT4uIE5lZWQgdG8gY29udmVydCBzb21ldGltZXMuIFRoZSBvdXRwdXQgZm9sbG93cwotICAgICMgdGhlIGNvbnZlbnRpb24gZnJvbSBnZXRfc2lnbmF0dXJlcygpIGJlY2F1c2UgdGhhdCBzZWVtcyBjbG9zZXIgdG8KLSAgICAjIG5vcm1hbCBiaXRiYWtlIG91dHB1dC4KLSAgICBkZWYgc2lnMmdyYXBoKHRhc2spOgotICAgICAgICBwbiwgdGFza25hbWUgPSB0YXNrLnJzcGxpdCgnOicsIDEpCi0gICAgICAgIHJldHVybiBwbiArICcuJyArIHRhc2tuYW1lCi0gICAgZGVmIGdyYXBoMnNpZyh0YXNrKToKLSAgICAgICAgcG4sIHRhc2tuYW1lID0gdGFzay5yc3BsaXQoJy4nLCAxKQotICAgICAgICByZXR1cm4gcG4gKyAnOicgKyB0YXNrbmFtZQotICAgIGRlcGdyYXBoID0gZ2V0X2RlcGdyYXBoKGZhaWxzYWZlPVRydWUpCi0gICAgZGVwZW5kcyA9IGRlcGdyYXBoWyd0ZGVwZW5kcyddCi0KLSAgICAjIElmIGEgdGFzayBBIGhhcyBhIGNoYW5nZWQgc2lnbmF0dXJlLCBidXQgbm9uZSBvZiBpdHMKLSAgICAjIGRlcGVuZGVuY2llcywgdGhlbiB3ZSBuZWVkIHRvIHJlcG9ydCBpdCBiZWNhdXNlIGl0IGlzCi0gICAgIyB0aGUgb25lIHdoaWNoIGludHJvZHVjZXMgYSBjaGFuZ2UuIEFueSB0YXNrIGRlcGVuZGluZyBvbgotICAgICMgQSAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgd2lsbCBhbHNvIGhhdmUgYSBjaGFuZ2VkCi0gICAgIyBzaWduYXR1cmUsIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIHJlcG9ydCBpdC4gSXQgbWlnaHQgaGF2ZQotICAgICMgaXRzIG93biBjaGFuZ2VzLCB3aGljaCB3aWxsIGJlY29tZSBhcHBhcmVudCBvbmNlIHRoZQotICAgICMgaXNzdWVzIHRoYXQgd2UgZG8gcmVwb3J0IGFyZSBmaXhlZCBhbmQgdGhlIHRlc3QgZ2V0cyBydW4KLSAgICAjIGFnYWluLgotICAgIHNpZ19kaWZmX2ZpbHRlcmVkID0gW10KLSAgICBmb3IgdGFzaywgKG9sZF9zaWcsIG5ld19zaWcpIGluIHNpZ19kaWZmLml0ZW1zKCk6Ci0gICAgICAgIGRlcHNfdGFpbnRlZCA9IEZhbHNlCi0gICAgICAgIGZvciBkZXAgaW4gZGVwZW5kcy5nZXQoc2lnMmdyYXBoKHRhc2spLCAoKSk6Ci0gICAgICAgICAgICBpZiBncmFwaDJzaWcoZGVwKSBpbiBzaWdfZGlmZjoKLSAgICAgICAgICAgICAgICBkZXBzX3RhaW50ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgbm90IGRlcHNfdGFpbnRlZDoKLSAgICAgICAgICAgIHNpZ19kaWZmX2ZpbHRlcmVkLmFwcGVuZCgodGFzaywgb2xkX3NpZywgbmV3X3NpZykpCi0KLSAgICBtc2cgPSBbXQotICAgIG1zZy5hcHBlbmQoJyVkIHNpZ25hdHVyZXMgY2hhbmdlZCwgaW5pdGlhbCBkaWZmZXJlbmNlcyAoZmlyc3QgaGFzaCBiZWZvcmUsIHNlY29uZCBhZnRlcik6JyAlCi0gICAgICAgICAgICAgICBsZW4oc2lnX2RpZmYpKQotICAgIGZvciBkaWZmIGluIHNvcnRlZChzaWdfZGlmZl9maWx0ZXJlZCk6Ci0gICAgICAgIHJlY2lwZSwgdGFza25hbWUgPSBkaWZmWzBdLnJzcGxpdCgnOicsIDEpCi0gICAgICAgIGNtZCA9ICdiaXRiYWtlLWRpZmZzaWdzIC0tdGFzayAlcyAlcyAtLXNpZ25hdHVyZSAlcyAlcycgJSBcCi0gICAgICAgICAgICAgIChyZWNpcGUsIHRhc2tuYW1lLCBkaWZmWzFdLCBkaWZmWzJdKQotICAgICAgICBtc2cuYXBwZW5kKCcgICAlczogJXMgLT4gJXMnICUgZGlmZikKLSAgICAgICAgbXNnLmFwcGVuZCgnICAgICAgJXMnICUgY21kKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvdXRwdXQgPSBjaGVja19jb21tYW5kKCdEZXRlcm1pbmluZyBzaWduYXR1cmUgZGlmZmVyZW5jZSBmYWlsZWQuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kKS5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlcnJvcjoKLSAgICAgICAgICAgIG91dHB1dCA9IHN0cihlcnJvcikKLSAgICAgICAgaWYgb3V0cHV0OgotICAgICAgICAgICAgbXNnLmV4dGVuZChbJyAgICAgICcgKyBsaW5lIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCldKQotICAgICAgICAgICAgbXNnLmFwcGVuZCgnJykKLSAgICByZXR1cm4gJ1xuJy5qb2luKG1zZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9jYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2Nhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0Y2U3OGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2Nhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1mcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCi0KLWNsYXNzIE9FQ29tcGF0TGF5ZXJUZXN0Q2FzZShPRVRlc3RDYXNlKToKLSAgICBwYXNzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvYnNwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2Nhc2VzL2JzcC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNlZmFlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvYnNwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSBjb21wYXRsYXllciBpbXBvcnQgTGF5ZXJUeXBlLCBnZXRfc2lnbmF0dXJlcywgY2hlY2tfY29tbWFuZCwgZ2V0X2RlcGdyYXBoCi1mcm9tIGNvbXBhdGxheWVyLmNhc2UgaW1wb3J0IE9FQ29tcGF0TGF5ZXJUZXN0Q2FzZQotCi1jbGFzcyBCU1BDb21wYXRMYXllcihPRUNvbXBhdExheWVyVGVzdENhc2UpOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnRjLmxheWVyWyd0eXBlJ10gIT0gTGF5ZXJUeXBlLkJTUDoKLSAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJCU1BDb21wYXRMYXllcjogTGF5ZXIgJXMgaXNuJ3QgQlNQIG9uZS4iICVcCi0gICAgICAgICAgICAgICAgc2VsZi50Yy5sYXllclsnbmFtZSddKQotCi0gICAgZGVmIHRlc3RfYnNwX2RlZmluZXNfbWFjaGluZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnRjLmxheWVyWydjb25mJ11bJ21hY2hpbmVzJ10sIAotICAgICAgICAgICAgICAgICJMYXllciBpcyBCU1AgYnV0IGRvZXNuJ3QgZGVmaW5lcyBtYWNoaW5lcy4iKQotCi0gICAgZGVmIHRlc3RfYnNwX25vX3NldF9tYWNoaW5lKHNlbGYpOgotICAgICAgICBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIKLQotICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZFsnYmJ2YXJzJ11bJ01BQ0hJTkUnXSwgbWFjaGluZSwKLSAgICAgICAgICAgICAgICBtc2c9IkxheWVyICVzIG1vZGlmaWVkIG1hY2hpbmUgJXMgLT4gJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAoc2VsZi50Yy5sYXllclsnbmFtZSddLCBzZWxmLnRkWydiYnZhcnMnXVsnTUFDSElORSddLCBtYWNoaW5lKSkKLQotCi0gICAgZGVmIHRlc3RfbWFjaGluZV93b3JsZChzZWxmKToKLSAgICAgICAgJycnCi0gICAgICAgICJiaXRiYWtlIHdvcmxkIiBpcyBleHBlY3RlZCB0byB3b3JrIHJlZ2FyZGxlc3Mgd2hpY2ggbWFjaGluZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgQlNQIGxheWVycyBzb21ldGltZXMgYnJlYWsgdGhhdCBieSBlbmFibGluZyBhIHJlY2lwZSBmb3IgYSBjZXJ0YWluIG1hY2hpbmUKLSAgICAgICAgd2l0aG91dCBjaGVja2luZyB3aGV0aGVyIHRoYXQgcmVjaXBlIGFjdHVhbGx5IGNhbiBiZSBidWlsdCBpbiB0aGUgY3VycmVudAotICAgICAgICBkaXN0cm8gY29uZmlndXJhdGlvbiAoZm9yIGV4YW1wbGUsIE9wZW5HTCBtaWdodCBub3QgZW5hYmxlZCkuCi0KLSAgICAgICAgVGhpcyB0ZXN0IGl0ZXJhdGVzIG92ZXIgYWxsIG1hY2hpbmVzLiBJdCB3b3VsZCBiZSBuaWNlciB0byBpbnN0YW50aWF0ZQotICAgICAgICBpdCBvbmNlIHBlciBtYWNoaW5lLiBJdCBtZXJlbHkgY2hlY2tzIGZvciBlcnJvcnMgZHVyaW5nIHBhcnNlCi0gICAgICAgIHRpbWUuIEl0IGRvZXMgbm90IGFjdHVhbGx5IGF0dGVtcHQgdG8gYnVpbGQgYW55dGhpbmcuCi0gICAgICAgICcnJwotCi0gICAgICAgIGlmIG5vdCBzZWxmLnRkWydtYWNoaW5lcyddOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm8gbWFjaGluZXMgc2V0IHdpdGggLS1tYWNoaW5lcy4nKQotICAgICAgICBtc2cgPSBbXQotICAgICAgICBmb3IgbWFjaGluZSBpbiBzZWxmLnRkWydtYWNoaW5lcyddOgotICAgICAgICAgICAgIyBJbiBjb250cmFzdCB0byB0ZXN0X21hY2hpbmVfc2lnbmF0dXJlcygpIGJlbG93LCBlcnJvcnMgYXJlIGZhdGFsIGhlcmUuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZ2V0X3NpZ25hdHVyZXMoc2VsZi50ZFsnYnVpbGRkaXInXSwgZmFpbHNhZmU9RmFsc2UsIG1hY2hpbmU9bWFjaGluZSkKLSAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXg6Ci0gICAgICAgICAgICAgICAgbXNnLmFwcGVuZChzdHIoZXgpKQotICAgICAgICBpZiBtc2c6Ci0gICAgICAgICAgICBtc2cuaW5zZXJ0KDAsICdUaGUgZm9sbG93aW5nIG1hY2hpbmVzIGJyb2tlIGEgd29ybGQgYnVpbGQ6JykKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnXG4nLmpvaW4obXNnKSkKLQotICAgIGRlZiB0ZXN0X21hY2hpbmVfc2lnbmF0dXJlcyhzZWxmKToKLSAgICAgICAgJycnCi0gICAgICAgIFNlbGVjdGluZyBhIG1hY2hpbmUgbWF5IG9ubHkgYWZmZWN0IHRoZSBzaWduYXR1cmUgb2YgdGFza3MgdGhhdCBhcmUgc3BlY2lmaWMKLSAgICAgICAgdG8gdGhhdCBtYWNoaW5lLiBJbiBvdGhlciB3b3Jkcywgd2hlbiBNQUNISU5FPUEgYW5kIE1BQ0hJTkU9QiBzaGFyZSBhIHJlY2lwZQotICAgICAgICBmb28gYW5kIHRoZSBvdXRwdXQgb2YgZm9vLCB0aGVuIGJvdGggbWFjaGluZSBjb25maWd1cmF0aW9ucyBtdXN0IGJ1aWxkIGZvbwotICAgICAgICBpbiBleGFjdGx5IHRoZSBzYW1lIHdheS4gT3RoZXJ3aXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYm90aCBtYWNoaW5lcwotICAgICAgICBpbiB0aGUgc2FtZSBkaXN0cmlidXRpb24uCi0KLSAgICAgICAgVGhpcyBjcml0ZXJpYSBjYW4gb25seSBiZSB0ZXN0ZWQgYnkgdGVzdGluZyBkaWZmZXJlbnQgbWFjaGluZXMgaW4gY29tYmluYXRpb24sCi0gICAgICAgIGkuZS4gb25lIG1haW4gbGF5ZXIsIHBvdGVudGlhbGx5IHNldmVyYWwgYWRkaXRpb25hbCBCU1AgbGF5ZXJzIGFuZCBhbiBleHBsaWNpdAotICAgICAgICBjaG9pY2Ugb2YgbWFjaGluZXM6Ci0gICAgICAgIHlvY3RvLWNvbXBhdC1sYXllciAtLWFkZGl0aW9uYWwtbGF5ZXJzIC4uLi9tZXRhLWludGVsIC0tbWFjaGluZXMgaW50ZWwtY29yZWk3LTY0IGlteDZzbGV2ayAtLSAuLi4vbWV0YS1mcmVlc2NhbGUKLSAgICAgICAgJycnCi0KLSAgICAgICAgaWYgbm90IHNlbGYudGRbJ21hY2hpbmVzJ106Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdObyBtYWNoaW5lcyBzZXQgd2l0aCAtLW1hY2hpbmVzLicpCi0KLSAgICAgICAgIyBDb2xsZWN0IHNpZ25hdHVyZXMgZm9yIGFsbCBtYWNoaW5lcyB0aGF0IHdlIGFyZSB0ZXN0aW5nCi0gICAgICAgICMgYW5kIG1lcmdlIHRoYXQgaW50byBhIGhhc2g6Ci0gICAgICAgICMgdHVuZSAtPiB0YXNrIC0+IHNpZ25hdHVyZSAtPiBsaXN0IG9mIG1hY2hpbmVzIHdpdGggdGhhdCBjb21iaW5hdGlvbgotICAgICAgICAjCi0gICAgICAgICMgSXQgaXMgYW4gZXJyb3IgaWYgYW55IHR1bmUvdGFzayBwYWlyIGhhcyBtb3JlIHRoYW4gb25lIHNpZ25hdHVyZSwKLSAgICAgICAgIyBiZWNhdXNlIHRoYXQgaW1wbGllcyB0aGF0IHRoZSBtYWNoaW5lcyB0aGF0IGNhdXNlZCB0aG9zZSBkaWZmZXJlbnQKLSAgICAgICAgIyBzaWduYXR1cmVzIGRvIG5vdCBhZ3JlZSBvbiBob3cgdG8gZXhlY3V0ZSB0aGUgdGFzay4KLSAgICAgICAgdHVuZXMgPSB7fQotICAgICAgICAjIFByZXNlcnZlIG9yZGVyaW5nIG9mIG1hY2hpbmVzIGFzIGNob3NlbiBieSB0aGUgdXNlci4KLSAgICAgICAgZm9yIG1hY2hpbmUgaW4gc2VsZi50ZFsnbWFjaGluZXMnXToKLSAgICAgICAgICAgIGN1cnJfc2lncywgdHVuZTJ0YXNrcyA9IGdldF9zaWduYXR1cmVzKHNlbGYudGRbJ2J1aWxkZGlyJ10sIGZhaWxzYWZlPVRydWUsIG1hY2hpbmU9bWFjaGluZSkKLSAgICAgICAgICAgICMgSW52ZXJ0IHRoZSB0dW5lIC0+IFt0YXNrc10gbWFwcGluZy4KLSAgICAgICAgICAgIHRhc2tzMnR1bmUgPSB7fQotICAgICAgICAgICAgZm9yIHR1bmUsIHRhc2tzIGluIHR1bmUydGFza3MuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBmb3IgdGFzayBpbiB0YXNrczoKLSAgICAgICAgICAgICAgICAgICAgdGFza3MydHVuZVt0YXNrXSA9IHR1bmUKLSAgICAgICAgICAgIGZvciB0YXNrLCBzaWdoYXNoIGluIGN1cnJfc2lncy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHR1bmVzLnNldGRlZmF1bHQodGFza3MydHVuZVt0YXNrXSwge30pLnNldGRlZmF1bHQodGFzaywge30pLnNldGRlZmF1bHQoc2lnaGFzaCwgW10pLmFwcGVuZChtYWNoaW5lKQotCi0gICAgICAgIG1zZyA9IFtdCi0gICAgICAgIHBydW5lZCA9IDAKLSAgICAgICAgbGFzdF9saW5lX2tleSA9IE5vbmUKLSAgICAgICAgIyBkb19mZXRjaCwgZG9fdW5wYWNrLCAuLi4sIGRvX2J1aWxkCi0gICAgICAgIHRhc2tuYW1lX2xpc3QgPSBbXQotICAgICAgICBpZiB0dW5lczoKLSAgICAgICAgICAgICMgVGhlIG91dHB1dCBiZWxvdyBpcyBtb3N0IHVzZWZ1bCB3aGVuIHdlIHN0YXJ0IHdpdGggdGFza3MgdGhhdCBhcmUgYXQKLSAgICAgICAgICAgICMgdGhlIGJvdHRvbSBvZiB0aGUgZGVwZW5kZW5jeSBjaGFpbiwgaS5lLiB0aG9zZSB0aGF0IHJ1biBmaXJzdC4gSWYKLSAgICAgICAgICAgICMgdGhvc2UgdGFza3MgZGlmZmVyLCB0aGUgcmVzdCBhbHNvIGRvZXMuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIFRvIGdldCBhbiBvcmRlcmluZyBvZiB0YXNrcywgd2UgZG8gYSB0b3BvbG9naWNhbCBzb3J0IG9mIHRoZSBlbnRpcmUKLSAgICAgICAgICAgICMgZGVwZ3JhcGggZm9yIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24sIHRoZW4gb24tdGhlLWZseSBmbGF0dGVuIHRoYXQgbGlzdCBieSBzdHJpcHBpbmcKLSAgICAgICAgICAgICMgb3V0IHRoZSByZWNpcGUgbmFtZXMgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXMuIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICMgaXMgbm90IG5lY2Vzc2FyaWx5IHJlcHJlc2VudGF0aXZlLCBidXQgc2hvdWxkIGJlIGNsb3NlIGVub3VnaC4gVGFza3MKLSAgICAgICAgICAgICMgdGhhdCB3ZXJlIG5vdCBlbmNvdW50ZXJlZCBnZXQgYSBkZWZhdWx0IHByaW9yaXR5LgotICAgICAgICAgICAgZGVwZ3JhcGggPSBnZXRfZGVwZ3JhcGgoKQotICAgICAgICAgICAgZGVwZW5kcyA9IGRlcGdyYXBoWyd0ZGVwZW5kcyddCi0gICAgICAgICAgICBXSElURSA9IDEKLSAgICAgICAgICAgIEdSQVkgPSAyCi0gICAgICAgICAgICBCTEFDSyA9IDMKLSAgICAgICAgICAgIGNvbG9yID0ge30KLSAgICAgICAgICAgIGZvdW5kID0gc2V0KCkKLSAgICAgICAgICAgIGRlZiB2aXNpdCh0YXNrKToKLSAgICAgICAgICAgICAgICBjb2xvclt0YXNrXSA9IEdSQVkKLSAgICAgICAgICAgICAgICBmb3IgZGVwIGluIGRlcGVuZHMuZ2V0KHRhc2ssICgpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgY29sb3Iuc2V0ZGVmYXVsdChkZXAsIFdISVRFKSA9PSBXSElURToKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0KGRlcCkKLSAgICAgICAgICAgICAgICBjb2xvclt0YXNrXSA9IEJMQUNLCi0gICAgICAgICAgICAgICAgcG4sIHRhc2tuYW1lID0gdGFzay5yc3BsaXQoJy4nLCAxKQotICAgICAgICAgICAgICAgIGlmIHRhc2tuYW1lIG5vdCBpbiBmb3VuZDoKLSAgICAgICAgICAgICAgICAgICAgdGFza25hbWVfbGlzdC5hcHBlbmQodGFza25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kLmFkZCh0YXNrbmFtZSkKLSAgICAgICAgICAgIGZvciB0YXNrIGluIGRlcGVuZHMua2V5cygpOgotICAgICAgICAgICAgICAgIGlmIGNvbG9yLnNldGRlZmF1bHQodGFzaywgV0hJVEUpID09IFdISVRFOgotICAgICAgICAgICAgICAgICAgICB2aXNpdCh0YXNrKQotCi0gICAgICAgIHRhc2tuYW1lX29yZGVyID0gZGljdChbKHRhc2ssIGluZGV4KSBmb3IgaW5kZXgsIHRhc2sgaW4gZW51bWVyYXRlKHRhc2tuYW1lX2xpc3QpIF0pCi0gICAgICAgIGRlZiB0YXNrX2tleSh0YXNrKToKLSAgICAgICAgICAgIHBuLCB0YXNrbmFtZSA9IHRhc2sucnNwbGl0KCc6JywgMSkKLSAgICAgICAgICAgIHJldHVybiAocG4sIHRhc2tuYW1lX29yZGVyLmdldCh0YXNrbmFtZSwgbGVuKHRhc2tuYW1lX2xpc3QpKSwgdGFza25hbWUpCi0KLSAgICAgICAgZm9yIHR1bmUgaW4gc29ydGVkKHR1bmVzLmtleXMoKSk6Ci0gICAgICAgICAgICB0YXNrcyA9IHR1bmVzW3R1bmVdCi0gICAgICAgICAgICAjIEFzIGZvciB0ZXN0X3NpZ25hdHVyZXMgaXQgd291bGQgYmUgbmljZXIgdG8gc29ydCB0YXNrcwotICAgICAgICAgICAgIyBieSBkZXBlbmRlbmNpZXMgaGVyZSwgYnV0IHRoYXQgaXMgaGFyZGVyIGJlY2F1c2Ugd2UgaGF2ZQotICAgICAgICAgICAgIyB0byByZXBvcnQgb24gdGFza3MgZnJvbSBkaWZmZXJlbnQgbWFjaGluZXMsIHdoaWNoIG1pZ2h0Ci0gICAgICAgICAgICAjIGhhdmUgZGlmZmVyZW50IGRlcGVuZGVuY2llcy4gV2UgcmVzb3J0IHRvIHBydW5pbmcgdGhlCi0gICAgICAgICAgICAjIG91dHB1dCBieSByZXBvcnRpbmcgb25seSBvbmUgdGFzayBwZXIgcmVjaXBlIGlmIHRoZSBzZXQKLSAgICAgICAgICAgICMgb2YgbWFjaGluZXMgbWF0Y2hlcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgImJpdGJha2UtZGlmZnNpZ3MgLXQgLXMiIGlzIGludGVsbGlnZW50IGVub3VnaCB0byBwcmludAotICAgICAgICAgICAgIyBkaWZmcyByZWN1cnNpdmVseSwgc28gb2Z0ZW4gaXQgZG9lcyBub3QgbWF0dGVyIHRoYXQgbXVjaAotICAgICAgICAgICAgIyBpZiB3ZSBkb24ndCBwaWNrIHRoZSB1bmRlcmx5aW5nIGRpZmZlcmVuY2UKLSAgICAgICAgICAgICMgaGVyZS4gSG93ZXZlciwgc29tZXRpbWVzIHJlY3Vyc2lvbiBmYWlscwotICAgICAgICAgICAgIyAoaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD02NDI4KS4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVG8gbWl0aWdhdGUgdGhhdCBhIGJpdCwgd2UgdXNlIGEgaGFyZC1jb2RlZCBvcmRlcmluZyBvZgotICAgICAgICAgICAgIyB0YXNrcyB0aGF0IHJlcHJlc2VudHMgaG93IHRoZXkgbm9ybWFsbHkgcnVuIGFuZCBwcmVmZXIKLSAgICAgICAgICAgICMgdG8gcHJpbnQgdGhlIG9uZXMgdGhhdCBydW4gZmlyc3QuCi0gICAgICAgICAgICBmb3IgdGFzayBpbiBzb3J0ZWQodGFza3Mua2V5cygpLCBrZXk9dGFza19rZXkpOgotICAgICAgICAgICAgICAgIHNpZ25hdHVyZXMgPSB0YXNrc1t0YXNrXQotICAgICAgICAgICAgICAgICMgZG9fYnVpbGQgY2FuIGJlIGlnbm9yZWQ6IGl0IGlzIGtub3cgdG8gaGF2ZQotICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IHNpZ25hdHVyZXMgaW4gc29tZSBjYXNlcywgZm9yIGV4YW1wbGUgaW4KLSAgICAgICAgICAgICAgICAjIHRoZSBhbGxhcmNoIGNhLWNlcnRpZmljYXRlcyBkdWUgdG8gUkRFUEVORFM9b3BlbnNzbC4KLSAgICAgICAgICAgICAgICAjIFRoYXQgcGFydGljdWxhciBkZXBlbmRlbmN5IGlzIHdoaXRlbGlzdGVkIHZpYQotICAgICAgICAgICAgICAgICMgU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUywgYnV0IHN0aWxsIHNob3dzIHVwCi0gICAgICAgICAgICAgICAgIyBpbiB0aGUgc3N0YXRlIHNpZ25hdHVyZSBoYXNoIGJlY2F1c2UgZmlsdGVyaW5nIGl0Ci0gICAgICAgICAgICAgICAgIyBvdXQgd291bGQgYmUgaGFyZCBhbmQgcnVubmluZyBkb19idWlsZCBtdWx0aXBsZQotICAgICAgICAgICAgICAgICMgdGltZXMgZG9lc24ndCByZWFsbHkgbWF0dGVyLgotICAgICAgICAgICAgICAgIGlmIGxlbihzaWduYXR1cmVzLmtleXMoKSkgPiAxIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgbm90IHRhc2suZW5kc3dpdGgoJzpkb19idWlsZCcpOgotICAgICAgICAgICAgICAgICAgICAjIEVycm9yIQotICAgICAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgICAgICMgU29ydCBzaWduYXR1cmVzIGJ5IG1hY2hpbmVzLCBiZWNhdXNlIHRoZSBoZXggdmFsdWVzIGRvbid0IG1lYW4gYW55dGhpbmcuCi0gICAgICAgICAgICAgICAgICAgICMgPT4gYWxsLWFyY2ggYWR3YWl0YS1pY29uLXRoZW1lOmRvX2J1aWxkOiAxMjM0Li4uIChiZWFnbGVib25lLCBxZW11eDg2KSAhPSBhYmNkZi4uLiAocWVtdXg4Ni02NCkKLSAgICAgICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICAgICAjIFNraXAgdGhlIGxpbmUgaWYgaXQgaXMgY292ZXJlZCBhbHJlYWR5IGJ5IHRoZSBwcmVkZWNlc3NvciAoc2FtZSBwbiwgc2FtZSBzZXRzIG9mIG1hY2hpbmVzKS4KLSAgICAgICAgICAgICAgICAgICAgcG4sIHRhc2tuYW1lID0gdGFzay5yc3BsaXQoJzonLCAxKQotICAgICAgICAgICAgICAgICAgICBuZXh0X2xpbmVfa2V5ID0gKHBuLCBzb3J0ZWQoc2lnbmF0dXJlcy52YWx1ZXMoKSkpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5leHRfbGluZV9rZXkgIT0gbGFzdF9saW5lX2tleToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSAnICAgJXMgJXM6ICcgJSAodHVuZSwgdGFzaykKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gJyAhPSAnLmpvaW4oWyclcyAoJXMpJyAlIChzaWduYXR1cmUsICcsICcuam9pbihbbSBmb3IgbSBpbiBzaWduYXR1cmVzW3NpZ25hdHVyZV1dKSkgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUgaW4gc29ydGVkKHNpZ25hdHVyZXMua2V5cygpLCBrZXk9bGFtYmRhIHM6IHNpZ25hdHVyZXNbc10pXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZV9rZXkgPSBuZXh0X2xpbmVfa2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFJhbmRvbWx5IHBpY2sgdHdvIG1pc21hdGNoZWQgc2lnbmF0dXJlcyBhbmQgcmVtZW1iZXIgaG93IHRvIGludm9rZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBiaXRiYWtlLWRpZmZzaWdzIGZvciB0aGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBpdGVyKHNpZ25hdHVyZXMuaXRlbXMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBuZXh0KGl0ZXJhdG9yKQotICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG5leHQoaXRlcmF0b3IpCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWZmc2lnX21hY2hpbmVzID0gJyglcykgIT0gKCVzKScgJSAoJywgJy5qb2luKGFbMV0pLCAnLCAnLmpvaW4oYlsxXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWZmc2lnX3BhcmFtcyA9ICctdCAlcyAlcyAtcyAlcyAlcycgJSAocG4sIHRhc2tuYW1lLCBhWzBdLCBiWzBdKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkICs9IDEKLQotICAgICAgICBpZiBtc2c6Ci0gICAgICAgICAgICBtc2cuaW5zZXJ0KDAsICdUaGUgbWFjaGluZXMgaGF2ZSBjb25mbGljdGluZyBzaWduYXR1cmVzIGZvciBzb21lIHNoYXJlZCB0YXNrczonKQotICAgICAgICAgICAgaWYgcHJ1bmVkID4gMDoKLSAgICAgICAgICAgICAgICBtc2cuYXBwZW5kKCcnKQotICAgICAgICAgICAgICAgIG1zZy5hcHBlbmQoJyVkIHRhc2tzIHdoZXJlIG5vdCBsaXN0ZWQgYmVjYXVzZSBzb21lIG90aGVyIHRhc2sgb2YgdGhlIHJlY2lwZSBhbHJlYWR5IGRpZmZlcmVkLicgJSBwcnVuZWQpCi0gICAgICAgICAgICAgICAgbXNnLmFwcGVuZCgnSXQgaXMgbGlrZWx5IHRoYXQgZGlmZmVyZW5jZXMgZnJvbSBkaWZmZXJlbnQgcmVjaXBlcyBhbHNvIGhhdmUgdGhlIHNhbWUgcm9vdCBjYXVzZS4nKQotICAgICAgICAgICAgbXNnLmFwcGVuZCgnJykKLSAgICAgICAgICAgICMgRXhwbGFpbiBob3cgdG8gaW52ZXN0aWdhdGUuLi4KLSAgICAgICAgICAgIG1zZy5hcHBlbmQoJ1RvIGludmVzdGlnYXRlLCBydW4gYml0YmFrZS1kaWZmc2lncyAtdCByZWNpcGVuYW1lIHRhc2tuYW1lIC1zIGZyb21zaWcgdG9zaWcuJykKLSAgICAgICAgICAgIGNtZCA9ICdiaXRiYWtlLWRpZmZzaWdzICVzJyAlIGRpZmZzaWdfcGFyYW1zCi0gICAgICAgICAgICBtc2cuYXBwZW5kKCdFeGFtcGxlOiAlcyBpbiB0aGUgbGFzdCBsaW5lJyAlIGRpZmZzaWdfbWFjaGluZXMpCi0gICAgICAgICAgICBtc2cuYXBwZW5kKCdDb21tYW5kOiAlcycgJSBjbWQpCi0gICAgICAgICAgICAjIC4uLiBhbmQgYWN0dWFsbHkgZG8gaXQgYXV0b21hdGljYWxseSBmb3IgdGhhdCBleGFtcGxlLCBidXQgd2l0aG91dCBhYm9ydGluZwotICAgICAgICAgICAgIyB3aGVuIHRoYXQgZmFpbHMuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gY2hlY2tfY29tbWFuZCgnQ29tcGFyaW5nIHNpZ25hdHVyZXMgZmFpbGVkLicsIGNtZCkuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGV4OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cihleCkKLSAgICAgICAgICAgIG1zZy5leHRlbmQoWycgICAnICsgbGluZSBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpXSkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnXG4nLmpvaW4obXNnKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9jYXNlcy9jb21tb24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWU4YmE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jb21wYXRsYXllci9jYXNlcy9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGNvbXBhdGxheWVyIGltcG9ydCBnZXRfc2lnbmF0dXJlcywgTGF5ZXJUeXBlLCBjaGVja19jb21tYW5kLCBnZXRfZGVwZ3JhcGgsIGNvbXBhcmVfc2lnbmF0dXJlcwotZnJvbSBjb21wYXRsYXllci5jYXNlIGltcG9ydCBPRUNvbXBhdExheWVyVGVzdENhc2UKLQotY2xhc3MgQ29tbW9uQ29tcGF0TGF5ZXIoT0VDb21wYXRMYXllclRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZWFkbWUoc2VsZik6Ci0gICAgICAgICMgVGhlIHRvcC1sZXZlbCBSRUFETUUgZmlsZSBtYXkgaGF2ZSBhIHN1ZmZpeCAobGlrZSBSRUFETUUucnN0IG9yIFJFQURNRS50eHQpLgotICAgICAgICByZWFkbWVfZmlsZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYudGMubGF5ZXJbJ3BhdGgnXSwgJ1JFQURNRSonKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihyZWFkbWVfZmlsZXMpID4gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgZG9lc24ndCBjb250YWlucyBSRUFETUUgZmlsZS4iKQotCi0gICAgICAgICMgVGhlcmUgbWlnaHQgYmUgbW9yZSB0aGFuIG9uZSBmaWxlIG1hdGNoaW5nIHRoZSBmaWxlIHBhdHRlcm4gYWJvdmUKLSAgICAgICAgIyAoZm9yIGV4YW1wbGUsIFJFQURNRS5yc3QgYW5kIFJFQURNRS1DT1BZSU5HLnJzdCkuIFRoZSBvbmUgd2l0aCB0aGUgc2hvcnRlc3QKLSAgICAgICAgIyBuYW1lIGlzIGNvbnNpZGVyZWQgdGhlICJtYWluIiBvbmUuCi0gICAgICAgIHJlYWRtZV9maWxlID0gc29ydGVkKHJlYWRtZV9maWxlcylbMF0KLSAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgIHdpdGggb3BlbihyZWFkbWVfZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkYXRhLAotICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgY29udGFpbnMgYSBSRUFETUUgZmlsZSBidXQgaXQgaXMgZW1wdHkuIikKLQotICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYpOgotICAgICAgICBjaGVja19jb21tYW5kKCdMYXllciAlcyBmYWlsZWQgdG8gcGFyc2UuJyAlIHNlbGYudGMubGF5ZXJbJ25hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAnYml0YmFrZSAtcCcpCi0KLSAgICBkZWYgdGVzdF9zaG93X2Vudmlyb25tZW50KHNlbGYpOgotICAgICAgICBjaGVja19jb21tYW5kKCdMYXllciAlcyBmYWlsZWQgdG8gc2hvdyBlbnZpcm9ubWVudC4nICUgc2VsZi50Yy5sYXllclsnbmFtZSddLAotICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlIC1lJykKLQotICAgIGRlZiB0ZXN0X3dvcmxkKHNlbGYpOgotICAgICAgICAnJycKLSAgICAgICAgImJpdGJha2Ugd29ybGQiIGlzIGV4cGVjdGVkIHRvIHdvcmsuIHRlc3Rfc2lnbmF0dXJlcyBkb2VzIG5vdCBjb3ZlciB0aGF0Ci0gICAgICAgIGJlY2F1c2UgaXQgaXMgbW9yZSBsZW5pZW50IGFuZCBpZ25vcmVzIHJlY2lwZXMgaW4gYSB3b3JsZCBidWlsZCB0aGF0Ci0gICAgICAgIGFyZSBub3QgYWN0dWFsbHkgYnVpbGRhYmxlLCBzbyBoZXJlIHdlIGZhaWwgd2hlbiAiYml0YmFrZSAtUyBub25lIHdvcmxkIgotICAgICAgICBmYWlscy4KLSAgICAgICAgJycnCi0gICAgICAgIGdldF9zaWduYXR1cmVzKHNlbGYudGRbJ2J1aWxkZGlyJ10sIGZhaWxzYWZlPUZhbHNlKQotCi0gICAgZGVmIHRlc3Rfc2lnbmF0dXJlcyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi50Yy5sYXllclsndHlwZSddID09IExheWVyVHlwZS5TT0ZUV0FSRSBhbmQgXAotICAgICAgICAgICBub3Qgc2VsZi50Yy50ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXM6Ci0gICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiTm90IHRlc3RpbmcgZm9yIHNpZ25hdHVyZSBjaGFuZ2VzIGluIGEgc29mdHdhcmUgbGF5ZXIgJXMuIiBcCi0gICAgICAgICAgICAgICAgICAgICAlIHNlbGYudGMubGF5ZXJbJ25hbWUnXSkKLQotICAgICAgICBjdXJyX3NpZ3MsIF8gPSBnZXRfc2lnbmF0dXJlcyhzZWxmLnRkWydidWlsZGRpciddLCBmYWlsc2FmZT1UcnVlKQotICAgICAgICBtc2cgPSBjb21wYXJlX3NpZ25hdHVyZXMoc2VsZi50ZFsnc2lncyddLCBjdXJyX3NpZ3MpCi0gICAgICAgIGlmIG1zZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnQWRkaW5nIGxheWVyICVzIGNoYW5nZWQgc2lnbmF0dXJlcy5cbiVzJyAlIChzZWxmLnRjLmxheWVyWyduYW1lJ10sIG1zZykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvZGlzdHJvLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2Nhc2VzL2Rpc3Ryby5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIzYWNjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY2FzZXMvZGlzdHJvLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIGNvbXBhdGxheWVyIGltcG9ydCBMYXllclR5cGUKLWZyb20gY29tcGF0bGF5ZXIuY2FzZSBpbXBvcnQgT0VDb21wYXRMYXllclRlc3RDYXNlCi0KLWNsYXNzIERpc3Ryb0NvbXBhdExheWVyKE9FQ29tcGF0TGF5ZXJUZXN0Q2FzZSk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIGlmIHNlbGYudGMubGF5ZXJbJ3R5cGUnXSAhPSBMYXllclR5cGUuRElTVFJPOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkRpc3Ryb0NvbXBhdExheWVyOiBMYXllciAlcyBpc24ndCBEaXN0cm8gb25lLiIgJVwKLSAgICAgICAgICAgICAgICBzZWxmLnRjLmxheWVyWyduYW1lJ10pCi0KLSAgICBkZWYgdGVzdF9kaXN0cm9fZGVmaW5lc19kaXN0cm9zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50Yy5sYXllclsnY29uZiddWydkaXN0cm9zJ10sIAotICAgICAgICAgICAgICAgICJMYXllciBpcyBCU1AgYnV0IGRvZXNuJ3QgZGVmaW5lcyBtYWNoaW5lcy4iKQotCi0gICAgZGVmIHRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm9zKHNlbGYpOgotICAgICAgICBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIKLQotICAgICAgICBkaXN0cm8gPSBnZXRfYmJfdmFyKCdESVNUUk8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGRbJ2JidmFycyddWydESVNUUk8nXSwgZGlzdHJvLAotICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgJXMgbW9kaWZpZWQgZGlzdHJvICVzIC0+ICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgKHNlbGYudGMubGF5ZXJbJ25hbWUnXSwgc2VsZi50ZFsnYmJ2YXJzJ11bJ0RJU1RSTyddLCBkaXN0cm8pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NvbXBhdGxheWVyL2NvbnRleHQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY29udGV4dC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgxMWQ0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY29tcGF0bGF5ZXIvY29udGV4dC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBnbG9iCi1pbXBvcnQgcmUKLQotZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dAotCi1jbGFzcyBDb21wYXRMYXllclRlc3RDb250ZXh0KE9FVGVzdENvbnRleHQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZD1Ob25lLCBsb2dnZXI9Tm9uZSwgbGF5ZXI9Tm9uZSwgdGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzPVRydWUpOgotICAgICAgICBzdXBlcihDb21wYXRMYXllclRlc3RDb250ZXh0LCBzZWxmKS5fX2luaXRfXyh0ZCwgbG9nZ2VyKQotICAgICAgICBzZWxmLmxheWVyID0gbGF5ZXIKLSAgICAgICAgc2VsZi50ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXMgPSB0ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvX19pbml0X18ucHkKaW5kZXggZDY0NmIwYy4uOTRlM2Q3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvX19pbml0X18ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvX19pbml0X18ucHkKQEAgLTExNSw4ICsxMTUsOCBAQAogICAgICAgICBpbXBvcnQgYmIudGluZm9pbAogICAgICAgICB0aW5mb2lsID0gYmIudGluZm9pbC5UaW5mb2lsKHRyYWNraW5nPXRyYWNraW5nKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHkpCiAgICAgICAgICAgICB0aW5mb2lsLmxvZ2dlci5zZXRMZXZlbChsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seSkKICAgICAgICAgZXhjZXB0IGJiLnRpbmZvaWwuVGluZm9pbFVJRXhjZXB0aW9uOgogICAgICAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBiaXRiYWtlIGVudmlyb25tZW50JykKQEAgLTE5MSw3ICsxOTEsNyBAQAogICAgICAgICBsb2dnZXIuaW5mbygnVXNpbmcgc291cmNlIHRyZWUgYXMgYnVpbGQgZGlyZWN0b3J5IHNpbmNlIC0tc2FtZS1kaXIgc3BlY2lmaWVkJykKICAgICBlbGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2F1dG90b29scy1icm9rZW5zZXAnLCBkKToKICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIHNvdXJjZSB0cmVlIGFzIGJ1aWxkIGRpcmVjdG9yeSBzaW5jZSByZWNpcGUgaW5oZXJpdHMgYXV0b3Rvb2xzLWJyb2tlbnNlcCcpCi0gICAgZWxpZiBkLmdldFZhcignQicpID09IG9zLnBhdGguYWJzcGF0aChkLmdldFZhcignUycpKToKKyAgICBlbGlmIG9zLnBhdGguYWJzcGF0aChkLmdldFZhcignQicpKSA9PSBvcy5wYXRoLmFic3BhdGgoZC5nZXRWYXIoJ1MnKSk6CiAgICAgICAgIGxvZ2dlci5pbmZvKCdVc2luZyBzb3VyY2UgdHJlZSBhcyBidWlsZCBkaXJlY3Rvcnkgc2luY2UgdGhhdCB3b3VsZCBiZSB0aGUgZGVmYXVsdCBmb3IgdGhpcyByZWNpcGUnKQogICAgIGVsc2U6CiAgICAgICAgIGJfaXNfcyA9IEZhbHNlCkBAIC0yNjEsMzQgKzI2MSw3OSBAQAogICAgICAgICAgICAgICAgIHRhcmdldHMuYXBwZW5kKCclcy0lcycgJSAocG4sIHZhcmlhbnQpKQogICAgIHJldHVybiB0YXJnZXRzCiAKLWRlZiBlbnN1cmVfbnBtKGNvbmZpZywgYmFzZXBhdGgsIGZpeGVkX3NldHVwPUZhbHNlLCBjaGVja19leGlzdHM9VHJ1ZSk6Ci0gICAgIiIiCi0gICAgRW5zdXJlIHRoYXQgbnBtIGlzIGF2YWlsYWJsZSBhbmQgZWl0aGVyIGJ1aWxkIGl0IG9yIHNob3cgYQotICAgIHJlYXNvbmFibGUgZXJyb3IgbWVzc2FnZQotICAgICIiIgotICAgIGlmIGNoZWNrX2V4aXN0czoKLSAgICAgICAgdGluZm9pbCA9IHNldHVwX3RpbmZvaWwoY29uZmlnX29ubHk9RmFsc2UsIGJhc2VwYXRoPWJhc2VwYXRoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKCdub2RlanMtbmF0aXZlJykKLSAgICAgICAgICAgIG5hdGl2ZXBhdGggPSByZC5nZXRWYXIoJ1NUQUdJTkdfQklORElSX05BVElWRScpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICB0aW5mb2lsLnNodXRkb3duKCkKLSAgICAgICAgbnBtcGF0aCA9IG9zLnBhdGguam9pbihuYXRpdmVwYXRoLCAnbnBtJykKLSAgICAgICAgYnVpbGRfbnBtID0gbm90IG9zLnBhdGguZXhpc3RzKG5wbXBhdGgpCi0gICAgZWxzZToKLSAgICAgICAgYnVpbGRfbnBtID0gVHJ1ZQorZGVmIHJlcGxhY2VfZnJvbV9maWxlKHBhdGgsIG9sZCwgbmV3KToKKyAgICAiIiJSZXBsYWNlIHN0cmluZ3Mgb24gYSBmaWxlIiIiCiAKLSAgICBpZiBidWlsZF9ucG06Ci0gICAgICAgIGxvZ2dlci5pbmZvKCdCdWlsZGluZyBub2RlanMtbmF0aXZlJykKKyAgICBkZWYgcmVhZF9maWxlKHBhdGgpOgorICAgICAgICBkYXRhID0gTm9uZQorICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHdyaXRlX2ZpbGUocGF0aCwgZGF0YSk6CisgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB3ZGF0YSA9IGRhdGEucnN0cmlwKCkgKyAiXG4iCisgICAgICAgIHdpdGggb3BlbihwYXRoLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHdkYXRhKQorCisgICAgIyBJbiBjYXNlIG9sZCBpcyBOb25lLCByZXR1cm4gaW1tZWRpYXRlbHkKKyAgICBpZiBvbGQgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisgICAgdHJ5OgorICAgICAgICByZGF0YSA9IHJlYWRfZmlsZShwYXRoKQorICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICMgaWYgZmlsZSBkb2VzIG5vdCBleGl0LCBqdXN0IHF1aXQsIG90aGVyd2lzZSByYWlzZSBhbiBleGNlcHRpb24KKyAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBvbGRfY29udGVudHMgPSByZGF0YS5zcGxpdGxpbmVzKCkKKyAgICBuZXdfY29udGVudHMgPSBbXQorICAgIGZvciBvbGRfY29udGVudCBpbiBvbGRfY29udGVudHM6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQoY29uZmlnLmluaXRfcGF0aCwgYmFzZXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlIC1xIG5vZGVqcy1uYXRpdmUgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3QnLCB3YXRjaD1UcnVlKQotICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgIk5vdGhpbmcgUFJPVklERVMgJ25vZGVqcy1uYXRpdmUnIiBpbiBlLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBpZiBmaXhlZF9zZXR1cDoKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBTREsnCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSAtIHlvdSB3aWxsIGxpa2VseSBuZWVkIHRvIGFkZCBhIGxheWVyIHRoYXQgcHJvdmlkZXMgbm9kZWpzJwotICAgICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcihtc2cpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBuZXdfY29udGVudHMuYXBwZW5kKG9sZF9jb250ZW50LnJlcGxhY2Uob2xkLCBuZXcpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICB3cml0ZV9maWxlKHBhdGgsICJcbiIuam9pbihuZXdfY29udGVudHMpKQorCisKK2RlZiB1cGRhdGVfdW5sb2NrZWRzaWdzKGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGZpeGVkX3NldHVwLCBleHRyYT1Ob25lKToKKyAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIG1ha2UgdW5sb2NrZWQtc2lncy5pbmMgbWF0Y2ggdGhlIHJlY2lwZXMgaW4gdGhlCisgICAgd29ya3NwYWNlIHBsdXMgYW55IGV4dHJhcyB3ZSB3YW50IHVubG9ja2VkLiAiIiIKKworICAgIGlmIG5vdCBmaXhlZF9zZXR1cDoKKyAgICAgICAgIyBPbmx5IG5lZWQgdG8gd3JpdGUgdGhpcyBvdXQgd2l0aGluIHRoZSBlU0RLCisgICAgICAgIHJldHVybgorCisgICAgaWYgbm90IGV4dHJhOgorICAgICAgICBleHRyYSA9IFtdCisKKyAgICBjb25mZGlyID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCAnY29uZicpCisgICAgdW5sb2NrZWRzaWdzID0gb3MucGF0aC5qb2luKGNvbmZkaXIsICd1bmxvY2tlZC1zaWdzLmluYycpCisKKyAgICAjIEdldCBjdXJyZW50IHVubG9ja2VkIGxpc3QgaWYgYW55CisgICAgdmFsdWVzID0ge30KKyAgICBkZWYgZ2V0X3VubG9ja2Vkc2lnc192YXJmdW5jKHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKKyAgICAgICAgdmFsdWVzW3Zhcm5hbWVdID0gb3JpZ3ZhbHVlCisgICAgICAgIHJldHVybiBvcmlndmFsdWUsIE5vbmUsIDAsIFRydWUKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyh1bmxvY2tlZHNpZ3MpOgorICAgICAgICB3aXRoIG9wZW4odW5sb2NrZWRzaWdzLCAncicpIGFzIGY6CisgICAgICAgICAgICBiYi51dGlscy5lZGl0X21ldGFkYXRhKGYsIFsnU0lHR0VOX1VOTE9DS0VEX1JFQ0lQRVMnXSwgZ2V0X3VubG9ja2Vkc2lnc192YXJmdW5jKQorICAgIHVubG9ja2VkID0gc29ydGVkKHZhbHVlcy5nZXQoJ1NJR0dFTl9VTkxPQ0tFRF9SRUNJUEVTJywgW10pKQorCisgICAgIyBJZiB0aGUgbmV3IGxpc3QgaXMgZGlmZmVyZW50IHRvIHRoZSBjdXJyZW50IGxpc3QsIHdyaXRlIGl0IG91dAorICAgIG5ld3VubG9ja2VkID0gc29ydGVkKGxpc3Qod29ya3NwYWNlLmtleXMoKSkgKyBleHRyYSkKKyAgICBpZiB1bmxvY2tlZCAhPSBuZXd1bmxvY2tlZDoKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbmZkaXIpCisgICAgICAgIHdpdGggb3Blbih1bmxvY2tlZHNpZ3MsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIiMgRE8gTk9UIE1PRElGWSEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVC5cbiIgKworICAgICAgICAgICAgICAgICAgICAiIyBUaGlzIGxheWVyIHdhcyBjcmVhdGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgZGV2dG9vbCIgKworICAgICAgICAgICAgICAgICAgICAiIHV0aWxpdHkgaW4gb3JkZXIgdG9cbiIgKworICAgICAgICAgICAgICAgICAgICAiIyBjb250YWluIHJlY2lwZXMgdGhhdCBhcmUgdW5sb2NrZWQuXG4iKQorCisgICAgICAgICAgICBmLndyaXRlKCdTSUdHRU5fVU5MT0NLRURfUkVDSVBFUyArPSAiXFxcbicpCisgICAgICAgICAgICBmb3IgcG4gaW4gbmV3dW5sb2NrZWQ6CisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICcgKyBwbikKKyAgICAgICAgICAgIGYud3JpdGUoJyInKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZGVwbG95LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZGVwbG95LnB5CmluZGV4IGIzNzMwYWUuLjljYzQ5MjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2RlcGxveS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9kZXBsb3kucHkKQEAgLTE2LDEyICsxNiwxNiBAQAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogIiIiRGV2dG9vbCBwbHVnaW4gY29udGFpbmluZyB0aGUgZGVwbG95IHN1YmNvbW1hbmRzIiIiCiAKLWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0ZW1wZmlsZQorCitpbXBvcnQgYmIudXRpbHMKIGltcG9ydCBhcmdwYXJzZV9vZQoraW1wb3J0IG9lLnR5cGVzCisKIGZyb20gZGV2dG9vbCBpbXBvcnQgZXhlY19mYWtlcm9vdCwgc2V0dXBfdGluZm9pbCwgY2hlY2tfd29ya3NwYWNlX3JlY2lwZSwgRGV2dG9vbEVycm9yCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdkZXZ0b29sJykKQEAgLTY0LDcgKzY4LDcgQEAKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICAgICAgcm1kaXIgJGZpbGUgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICBmaScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBlbHNlJykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICBybSAkZmlsZScpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgcm0gLWYgJGZpbGUnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgZmknKQogICAgIGxpbmVzLmFwcGVuZCgnICAgIGRvbmUnKQogICAgIGlmIG5vdCBkcnlydW46CkBAIC0xMTksNyArMTIzLDExIEBACiAgICAgICAgICMgUHV0IGFueSBwcmVzZXJ2ZWQgZmlsZXMgYmFjawogICAgICAgICBsaW5lcy5hcHBlbmQoJ2lmIFsgLWQgJHByZXNlcnZlZGlyIF0gOyB0aGVuJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgY2QgJHByZXNlcnZlZGlyJykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgZmluZCAuIC10eXBlIGYgLWV4ZWMgbXYge30gL3t9IFw7JykKKyAgICAgICAgIyBmaW5kIGZyb20gYnVzeWJveCBtaWdodCBub3QgaGF2ZSAtZXhlYywgc28gd2UgZG9uJ3QgdXNlIHRoYXQKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgZmluZCAuIC10eXBlIGYgfCB3aGlsZSByZWFkIGZpbGUnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBkbycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBtdiAkZmlsZSAvJGZpbGUnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBkb25lJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgY2QgLycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJtIC1yZiAkcHJlc2VydmVkaXInKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ2ZpJykKQEAgLTEzNiwxMSArMTQ0LDEyIEBACiAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKIAogCisKIGRlZiBkZXBsb3koYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2RlcGxveScgc3ViY29tbWFuZCIiIgotICAgIGltcG9ydCByZQogICAgIGltcG9ydCBtYXRoCiAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCisgICAgaW1wb3J0IG9lLnBhY2thZ2UKIAogICAgIGNoZWNrX3dvcmtzcGFjZV9yZWNpcGUod29ya3NwYWNlLCBhcmdzLnJlY2lwZW5hbWUsIGNoZWNrc3JjPUZhbHNlKQogCkBAIC0xNjYsNiArMTc1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2lwZT8gSWYgc28sIHRoZSBpbnN0YWxsIHN0ZXAgaGFzIG5vdCBpbnN0YWxsZWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbnkgZmlsZXMuJyAlIGFyZ3MucmVjaXBlbmFtZSkKIAorICAgICAgICBpZiBhcmdzLnN0cmlwIGFuZCBub3QgYXJncy5kcnlfcnVuOgorICAgICAgICAgICAgIyBGYWtlcm9vdCBjb3B5IHRvIG5ldyBkZXN0aW5hdGlvbgorICAgICAgICAgICAgc3JjZGlyID0gcmVjaXBlX291dGRpcgorICAgICAgICAgICAgcmVjaXBlX291dGRpciA9IG9zLnBhdGguam9pbihyZC5nZXRWYXIoJ1dPUktESVInKSwgJ2RlcGxveS10YXJnZXQtc3RyaXBwZWQnKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihyZWNpcGVfb3V0ZGlyKToKKyAgICAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUocmVjaXBlX291dGRpciwgVHJ1ZSkKKyAgICAgICAgICAgIGV4ZWNfZmFrZXJvb3QocmQsICJjcCAtYWYgJXMgJXMiICUgKG9zLnBhdGguam9pbihzcmNkaXIsICcuJyksIHJlY2lwZV9vdXRkaXIpLCBzaGVsbD1UcnVlKQorICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gJzonLmpvaW4oW29zLmVudmlyb25bJ1BBVEgnXSwgcmQuZ2V0VmFyKCdQQVRIJykgb3IgJyddKQorICAgICAgICAgICAgb2UucGFja2FnZS5zdHJpcF9leGVjcyhhcmdzLnJlY2lwZW5hbWUsIHJlY2lwZV9vdXRkaXIsIHJkLmdldFZhcignU1RSSVAnKSwgcmQuZ2V0VmFyKCdsaWJkaXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJkLmdldFZhcignYmFzZV9saWJkaXInKSkKKwogICAgICAgICBmaWxlbGlzdCA9IFtdCiAgICAgICAgIGZ0b3RhbHNpemUgPSAwCiAgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHJlY2lwZV9vdXRkaXIpOgpAQCAtMTg1LDcgKzIwNSw2IEBACiAgICAgICAgICAgICAgICAgcHJpbnQoJyAgJXMnICUgaXRlbSkKICAgICAgICAgICAgIHJldHVybiAwCiAKLQogICAgICAgICBleHRyYW9wdGlvbnMgPSAnJwogICAgICAgICBpZiBhcmdzLm5vX2hvc3RfY2hlY2s6CiAgICAgICAgICAgICBleHRyYW9wdGlvbnMgKz0gJy1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vJwpAQCAtMjk3LDYgKzMxNiw3IEBACiAKIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzdWJwYXJzZXJzLCBjb250ZXh0KToKICAgICAiIiJSZWdpc3RlciBkZXZ0b29sIHN1YmNvbW1hbmRzIGZyb20gdGhlIGRlcGxveSBwbHVnaW4iIiIKKwogICAgIHBhcnNlcl9kZXBsb3kgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2RlcGxveS10YXJnZXQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRGVwbG95IHJlY2lwZSBvdXRwdXQgZmlsZXMgdG8gbGl2ZSB0YXJnZXQgbWFjaGluZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nRGVwbG95cyBhIHJlY2lwZVwncyBidWlsZCBvdXRwdXQgKGkuZS4gdGhlIG91dHB1dCBvZiB0aGUgZG9faW5zdGFsbCB0YXNrKSB0byBhIGxpdmUgdGFyZ2V0IG1hY2hpbmUgb3ZlciBzc2guIEJ5IGRlZmF1bHQsIGFueSBleGlzdGluZyBmaWxlcyB3aWxsIGJlIHByZXNlcnZlZCBpbnN0ZWFkIG9mIGJlaW5nIG92ZXJ3cml0dGVuIGFuZCB3aWxsIGJlIHJlc3RvcmVkIGlmIHlvdSBydW4gZGV2dG9vbCB1bmRlcGxveS10YXJnZXQuIE5vdGU6IHRoaXMgb25seSBkZXBsb3lzIHRoZSByZWNpcGUgaXRzZWxmIGFuZCBub3QgYW55IHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCBzbyBpdCBpcyBhc3N1bWVkIHRoYXQgdGhvc2UgaGF2ZSBiZWVuIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0IGJlZm9yZWhhbmQuJywKQEAgLTMwOSw2ICszMjksMTUgQEAKICAgICBwYXJzZXJfZGVwbG95LmFkZF9hcmd1bWVudCgnLXAnLCAnLS1uby1wcmVzZXJ2ZScsIGhlbHA9J0RvIG5vdCBwcmVzZXJ2ZSBleGlzdGluZyBmaWxlcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy0tbm8tY2hlY2stc3BhY2UnLCBoZWxwPSdEbyBub3QgY2hlY2sgZm9yIGF2YWlsYWJsZSBzcGFjZSBiZWZvcmUgZGVwbG95aW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICBwYXJzZXJfZGVwbG95LmFkZF9hcmd1bWVudCgnLVAnLCAnLS1wb3J0JywgZGVmYXVsdD0nMjInLCBoZWxwPSdQb3J0IHRvIHVzZSBmb3IgY29ubmVjdGlvbiB0byB0aGUgdGFyZ2V0JykKKworICAgIHN0cmlwX29wdHMgPSBwYXJzZXJfZGVwbG95LmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAocmVxdWlyZWQ9RmFsc2UpCisgICAgc3RyaXBfb3B0cy5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3RyaXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1N0cmlwIGV4ZWN1dGFibGVzIHByaW9yIHRvIGRlcGxveWluZyAoZGVmYXVsdDogJShkZWZhdWx0KXMpLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBvcHRpb24gY2FuIGJlIGNvbnRyb2xsZWQgYnkgc2V0dGluZyB0aGUgc3RyaXAgb3B0aW9uIGluIHRoZSBbRGVwbG95XSBzZWN0aW9uIHRvIFRydWUgb3IgRmFsc2UuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PW9lLnR5cGVzLmJvb2xlYW4oY29udGV4dC5jb25maWcuZ2V0KCdEZXBsb3knLCAnc3RyaXAnLCBkZWZhdWx0PScwJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgc3RyaXBfb3B0cy5hZGRfYXJndW1lbnQoJy0tbm8tc3RyaXAnLCBoZWxwPSdEbyBub3Qgc3RyaXAgZXhlY3V0YWJsZXMgcHJpb3IgdG8gZGVwbG95JywgZGVzdD0nc3RyaXAnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJykKKwogICAgIHBhcnNlcl9kZXBsb3kuc2V0X2RlZmF1bHRzKGZ1bmM9ZGVwbG95KQogCiAgICAgcGFyc2VyX3VuZGVwbG95ID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCd1bmRlcGxveS10YXJnZXQnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZXhwb3J0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZXhwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZWUyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9leHBvcnQucHkKQEAgLTAsMCArMSwxMTkgQEAKKyMgRGV2ZWxvcG1lbnQgdG9vbCAtIGV4cG9ydCBjb21tYW5kIHBsdWdpbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyIiIkRldnRvb2wgZXhwb3J0IHBsdWdpbiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IHRhcmZpbGUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29uCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdkZXZ0b29sJykKKworIyBvdXRwdXQgZmlsZXMKK2RlZmF1bHRfYXJjbmFtZV9wcmVmaXggPSAid29ya3NwYWNlLWV4cG9ydCIKK21ldGFkYXRhID0gJy5leHBvcnRfbWV0YWRhdGEnCisKK2RlZiBleHBvcnQoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKKyAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2V4cG9ydCcgc3ViY29tbWFuZCIiIgorCisgICAgZGVmIGFkZF9tZXRhZGF0YSh0YXIpOgorICAgICAgICAiIiJBcmNoaXZlIHRoZSB3b3Jrc3BhY2Ugb2JqZWN0IiIiCisgICAgICAgICMgZmluYWxseSBzdG9yZSB0aGUgd29ya3NwYWNlIG1ldGFkYXRhCisgICAgICAgIHdpdGggb3BlbihtZXRhZGF0YSwgJ3cnKSBhcyBmZDoKKyAgICAgICAgICAgIGZkLndyaXRlKGpzb24uZHVtcHMoKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgd29ya3NwYWNlKSkpCisgICAgICAgIHRhci5hZGQobWV0YWRhdGEpCisgICAgICAgIG9zLnVubGluayhtZXRhZGF0YSkKKworICAgIGRlZiBhZGRfcmVjaXBlKHRhciwgcmVjaXBlLCBkYXRhKToKKyAgICAgICAgIiIiQXJjaGl2ZSByZWNpcGUgd2l0aCBwcm9wZXIgYXJjbmFtZSIiIgorICAgICAgICAjIENyZWF0ZSBhIG1hcCBvZiBuYW1lL2FyY25hbWVzCisgICAgICAgIGFyY25hbWVzID0gW10KKyAgICAgICAgZm9yIGtleSwgbmFtZSBpbiBkYXRhLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnc3JjdHJlZSc6CisgICAgICAgICAgICAgICAgICAgICMgYWxsIHNvdXJjZXMsIG5vIG1hdHRlciB3aGVyZSBhcmUgbG9jYXRlZCwgZ29lcyBpbnRvIHRoZSBzb3VyY2VzIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBhcmNuYW1lID0gJ3NvdXJjZXMvJXMnICUgcmVjaXBlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXJjbmFtZSA9IG5hbWUucmVwbGFjZShjb25maWcud29ya3NwYWNlX3BhdGgsICcnKQorICAgICAgICAgICAgICAgIGFyY25hbWVzLmFwcGVuZCgobmFtZSwgYXJjbmFtZSkpCisKKyAgICAgICAgZm9yIG5hbWUsIGFyY25hbWUgaW4gYXJjbmFtZXM6CisgICAgICAgICAgICB0YXIuYWRkKG5hbWUsIGFyY25hbWU9YXJjbmFtZSkKKworCisgICAgIyBNYWtlIHN1cmUgd29ya3NwYWNlIGlzIG5vbi1lbXB0eSBhbmQgcG9zc2libGUgbGlzdGVkIGluY2x1ZGUvZXhjbHVkZWQgcmVjaXBlcyBhcmUgaW4gd29ya3NwYWNlCisgICAgaWYgbm90IHdvcmtzcGFjZToKKyAgICAgICAgbG9nZ2VyLmluZm8oJ1dvcmtzcGFjZSBjb250YWlucyBubyByZWNpcGVzLCBub3RoaW5nIHRvIGV4cG9ydCcpCisgICAgICAgIHJldHVybiAwCisgICAgZWxzZToKKyAgICAgICAgZm9yIHBhcmFtLCByZWNpcGVzIGluIHsnaW5jbHVkZSc6YXJncy5pbmNsdWRlLCdleGNsdWRlJzphcmdzLmV4Y2x1ZGV9Lml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgcmVjaXBlIGluIHJlY2lwZXM6CisgICAgICAgICAgICAgICAgaWYgcmVjaXBlIG5vdCBpbiB3b3Jrc3BhY2U6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignUmVjaXBlICglcykgb24gJXMgYXJndW1lbnQgbm90IGluIHRoZSBjdXJyZW50IHdvcmtzcGFjZScgJSAocmVjaXBlLCBwYXJhbSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICBuYW1lID0gYXJncy5maWxlCisKKyAgICBkZWZhdWx0X25hbWUgPSAiJXMtJXMudGFyLmd6IiAlIChkZWZhdWx0X2FyY25hbWVfcHJlZml4LCBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJUglTSVTJykpCisgICAgaWYgbm90IG5hbWU6CisgICAgICAgIG5hbWUgPSBkZWZhdWx0X25hbWUKKyAgICBlbHNlOgorICAgICAgICAjIGlmIG5hbWUgaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgZGVmYXVsdCBuYW1lCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobmFtZSk6CisgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKG5hbWUsIGRlZmF1bHRfbmFtZSkKKworICAgIGlmIG9zLnBhdGguZXhpc3RzKG5hbWUpIGFuZCBub3QgYXJncy5vdmVyd3JpdGU6CisgICAgICAgIGxvZ2dlci5lcnJvcignVGFyIGFyY2hpdmUgJXMgZXhpc3RzLiBVc2UgLS1vdmVyd3JpdGUvLW8gdG8gb3ZlcndyaXRlIGl0JykKKyAgICAgICAgcmV0dXJuIDEKKworICAgICMgaWYgYWxsIHdvcmtzcGFjZSBpcyBleGNsdWRlZCwgcXVpdAorICAgIGlmIG5vdCBsZW4oc2V0KHdvcmtzcGFjZS5rZXlzKCkpLmRpZmZlcmVuY2Uoc2V0KGFyZ3MuZXhjbHVkZSkpKToKKyAgICAgICAgbG9nZ2VyLndhcm4oJ0FsbCByZWNpcGVzIGluIHdvcmtzcGFjZSBleGNsdWRlZCwgbm90aGluZyB0byBleHBvcnQnKQorICAgICAgICByZXR1cm4gMAorCisgICAgZXhwb3J0ZWQgPSBbXQorICAgIHdpdGggdGFyZmlsZS5vcGVuKG5hbWUsICd3Omd6JykgYXMgdGFyOgorICAgICAgICBpZiBhcmdzLmluY2x1ZGU6CisgICAgICAgICAgICBmb3IgcmVjaXBlIGluIGFyZ3MuaW5jbHVkZToKKyAgICAgICAgICAgICAgICBhZGRfcmVjaXBlKHRhciwgcmVjaXBlLCB3b3Jrc3BhY2VbcmVjaXBlXSkKKyAgICAgICAgICAgICAgICBleHBvcnRlZC5hcHBlbmQocmVjaXBlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIHJlY2lwZSwgZGF0YSBpbiB3b3Jrc3BhY2UuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiByZWNpcGUgbm90IGluIGFyZ3MuZXhjbHVkZToKKyAgICAgICAgICAgICAgICAgICAgYWRkX3JlY2lwZSh0YXIsIHJlY2lwZSwgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWQuYXBwZW5kKHJlY2lwZSkKKworICAgICAgICBhZGRfbWV0YWRhdGEodGFyKQorCisgICAgbG9nZ2VyLmluZm8oJ1RhciBhcmNoaXZlIGNyZWF0ZWQgYXQgJXMgd2l0aCB0aGUgZm9sbG93aW5nIHJlY2lwZXM6ICVzJyAlIChuYW1lLCAnLCAnLmpvaW4oZXhwb3J0ZWQpKSkKKyAgICByZXR1cm4gMAorCitkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2VycywgY29udGV4dCk6CisgICAgIiIiUmVnaXN0ZXIgZGV2dG9vbCBleHBvcnQgc3ViY29tbWFuZHMiIiIKKyAgICBwYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2V4cG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0V4cG9ydCB3b3Jrc3BhY2UgaW50byBhIHRhciBhcmNoaXZlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J0V4cG9ydCBvbmUgb3IgbW9yZSByZWNpcGVzIGZyb20gY3VycmVudCB3b3Jrc3BhY2UgaW50byBhIHRhciBhcmNoaXZlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9J2FkdmFuY2VkJykKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZmlsZScsICctZicsIGhlbHA9J091dHB1dCBhcmNoaXZlIGZpbGUgbmFtZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdmVyd3JpdGUnLCAnLW8nLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdPdmVyd3JpdGUgcHJldmlvdXMgZXhwb3J0IHRhciBhcmNoaXZlJykKKyAgICBncm91cCA9IHBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0taW5jbHVkZScsICctaScsIG5hcmdzPScrJywgZGVmYXVsdD1bXSwgaGVscD0nSW5jbHVkZSByZWNpcGVzIGludG8gdGhlIHRhciBhcmNoaXZlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tZXhjbHVkZScsICctZScsIG5hcmdzPScrJywgZGVmYXVsdD1bXSwgaGVscD0nRXhjbHVkZSByZWNpcGVzIGludG8gdGhlIHRhciBhcmNoaXZlJykKKyAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZXhwb3J0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvaW1wb3J0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvaW1wb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxM2ExODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9pbXBvcnQucHkKQEAgLTAsMCArMSwxNDQgQEAKKyMgRGV2ZWxvcG1lbnQgdG9vbCAtIGltcG9ydCBjb21tYW5kIHBsdWdpbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyIiIkRldnRvb2wgaW1wb3J0IHBsdWdpbiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCB0YXJmaWxlCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQganNvbgoraW1wb3J0IGZubWF0Y2gKKworZnJvbSBkZXZ0b29sIGltcG9ydCBzdGFuZGFyZCwgc2V0dXBfdGluZm9pbCwgcmVwbGFjZV9mcm9tX2ZpbGUsIERldnRvb2xFcnJvcgorZnJvbSBkZXZ0b29sIGltcG9ydCBleHBvcnQKKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2RldnRvb2wnKQorCitkZWYgZGV2aW1wb3J0KGFyZ3MsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSk6CisgICAgIiIiRW50cnkgcG9pbnQgZm9yIHRoZSBkZXZ0b29sICdpbXBvcnQnIHN1YmNvbW1hbmQiIiIKKworICAgIGRlZiBnZXRfcG4obmFtZSk6CisgICAgICAgICIiIiBSZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiBhIHdvcmtzcGFjZSByZWNpcGUvYXBwZW5kIiIiCisgICAgICAgIG1ldGFkYXRhID0gbmFtZS5zcGxpdCgnLycpWy0xXQorICAgICAgICBmbiwgXyA9IG9zLnBhdGguc3BsaXRleHQobWV0YWRhdGEpCisgICAgICAgIHJldHVybiBmbgorCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFyZ3MuZmlsZSk6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVGFyIGFyY2hpdmUgJXMgZG9lcyBub3QgZXhpc3QuIEV4cG9ydCB5b3VyIHdvcmtzcGFjZSB1c2luZyAiZGV2dG9vbCBleHBvcnQiJyAlIGFyZ3MuZmlsZSkKKworICAgIHdpdGggdGFyZmlsZS5vcGVuKGFyZ3MuZmlsZSkgYXMgdGFyOgorICAgICAgICAjIEdldCBleHBvcnRlZCBtZXRhZGF0YQorICAgICAgICBleHBvcnRfd29ya3NwYWNlX3BhdGggPSBleHBvcnRfd29ya3NwYWNlID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtZXRhZGF0YSA9IHRhci5nZXRtZW1iZXIoZXhwb3J0Lm1ldGFkYXRhKQorICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMga2U6CisgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ1RoZSBleHBvcnQgbWV0YWRhdGEgZmlsZSBjcmVhdGVkIGJ5ICJkZXZ0b29sIGV4cG9ydCIgd2FzIG5vdCBmb3VuZC4gImRldnRvb2wgaW1wb3J0IiBjYW4gb25seSBiZSB1c2VkIHRvIGltcG9ydCB0YXIgYXJjaGl2ZXMgY3JlYXRlZCBieSAiZGV2dG9vbCBleHBvcnQiLicpCisKKyAgICAgICAgdGFyLmV4dHJhY3QobWV0YWRhdGEpCisgICAgICAgIHdpdGggb3BlbihtZXRhZGF0YS5uYW1lKSBhcyBmZG06CisgICAgICAgICAgICBleHBvcnRfd29ya3NwYWNlX3BhdGgsIGV4cG9ydF93b3Jrc3BhY2UgPSBqc29uLmxvYWQoZmRtKQorICAgICAgICBvcy51bmxpbmsobWV0YWRhdGEubmFtZSkKKworICAgICAgICBtZW1iZXJzID0gdGFyLmdldG1lbWJlcnMoKQorCisgICAgICAgICMgR2V0IGFwcGVuZHMgYW5kIHJlY2lwZXMgZnJvbSB0aGUgZXhwb3J0ZWQgYXJjaGl2ZSwgdGhlc2UKKyAgICAgICAgIyB3aWxsIGJlIG5lZWRlZCB0byBmaW5kIG91dCB0aG9zZSBhcHBlbmRzIHdpdGhvdXQgY29ycmVzcG9uZGluZworICAgICAgICAjIHJlY2lwZSBwYWlyCisgICAgICAgIGFwcGVuZF9mbnMsIHJlY2lwZV9mbnMgPSBzZXQoKSwgc2V0KCkKKyAgICAgICAgZm9yIG1lbWJlciBpbiBtZW1iZXJzOgorICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3RhcnRzd2l0aCgnYXBwZW5kcycpOgorICAgICAgICAgICAgICAgIGFwcGVuZF9mbnMuYWRkKGdldF9wbihtZW1iZXIubmFtZSkpCisgICAgICAgICAgICBlbGlmIG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoJ3JlY2lwZXMnKToKKyAgICAgICAgICAgICAgICByZWNpcGVfZm5zLmFkZChnZXRfcG4obWVtYmVyLm5hbWUpKQorCisgICAgICAgICMgU2V0dXAgdGluZm9pbCwgZ2V0IHJlcXVpcmVkIGRhdGEgYW5kIHNodXRkb3duCisgICAgICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGNvbmZpZ19vbmx5PUZhbHNlLCBiYXNlcGF0aD1iYXNlcGF0aCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY3VycmVudF9mbnMgPSBbb3MucGF0aC5iYXNlbmFtZShyZWNpcGVbMF0pIGZvciByZWNpcGUgaW4gdGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfZm4uaXRlbXMoKV0KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQorCisgICAgICAgICMgRmluZCB0aG9zZSBhcHBlbmRzIHRoYXQgZG8gbm90IGhhdmUgcmVjaXBlcyBpbiBjdXJyZW50IG1ldGFkYXRhCisgICAgICAgIG5vbl9pbXBvcnRhYmxlcyA9IFtdCisgICAgICAgIGZvciBmbiBpbiBhcHBlbmRfZm5zIC0gcmVjaXBlX2ZuczoKKyAgICAgICAgICAgICMgQ2hlY2sgb24gY3VycmVudCBtZXRhZGF0YSAoY292ZXJpbmcgdGhvc2UgbGF5ZXJzIGluZGljYXRlZCBpbiBiYmxheWVycy5jb25mKQorICAgICAgICAgICAgZm9yIGN1cnJlbnRfZm4gaW4gY3VycmVudF9mbnM6CisgICAgICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGN1cnJlbnRfZm4sICcqJyArIGZuLnJlcGxhY2UoJyUnLCAnJykgKyAnKicpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBub25faW1wb3J0YWJsZXMuYXBwZW5kKGZuKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdObyByZWNpcGUgdG8gYXBwZW5kICVzLmJiYXBwcGVuZCwgc2tpcHBpbmcnICUgZm4pCisKKyAgICAgICAgIyBFeHRyYWN0CisgICAgICAgIGltcG9ydGVkID0gW10KKyAgICAgICAgZm9yIG1lbWJlciBpbiBtZW1iZXJzOgorICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUgPT0gZXhwb3J0Lm1ldGFkYXRhOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGZvciBub25pbXAgaW4gbm9uX2ltcG9ydGFibGVzOgorICAgICAgICAgICAgICAgIHBuID0gbm9uaW1wLnNwbGl0KCdfJylbMF0KKyAgICAgICAgICAgICAgICAjIGRvIG5vdCBleHRyYWN0IGRhdGEgZnJvbSBub24taW1wb3J0YWJsZSByZWNpcGVzIG9yIG1ldGFkYXRhCisgICAgICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3RhcnRzd2l0aCgnYXBwZW5kcy8lcycgJSBub25pbXApIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoJ3JlY2lwZXMvJXMnICUgbm9uaW1wKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIubmFtZS5zdGFydHN3aXRoKCdzb3VyY2VzLyVzJyAlIHBuKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihjb25maWcud29ya3NwYWNlX3BhdGgsIG1lbWJlci5uYW1lKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICAjIGJ5IGRlZmF1bHQsIG5vIGZpbGUgb3ZlcndyaXRlIGlzIGRvbmUgdW5sZXNzIC1vIGlzIGdpdmVuIGJ5IHRoZSB1c2VyCisgICAgICAgICAgICAgICAgICAgIGlmIGFyZ3Mub3ZlcndyaXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhci5leHRyYWN0KG1lbWJlciwgcGF0aD1jb25maWcud29ya3NwYWNlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIHBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKHBlKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0ZpbGUgYWxyZWFkeSBwcmVzZW50LiBVc2UgLS1vdmVyd3JpdGUvLW8gdG8gb3ZlcndyaXRlIGl0OiAlcycgJSBtZW1iZXIubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGFyLmV4dHJhY3QobWVtYmVyLCBwYXRoPWNvbmZpZy53b3Jrc3BhY2VfcGF0aCkKKworICAgICAgICAgICAgICAgICMgVXBkYXRlIEVYVEVSTkFMU1JDIGFuZCB0aGUgZGV2dG9vbCBtZDUgZmlsZQorICAgICAgICAgICAgICAgIGlmIG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoJ2FwcGVuZHMnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZXhwb3J0X3dvcmtzcGFjZV9wYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBlbmRzIGNyZWF0ZWQgYnkgJ2RldnRvb2wgbW9kaWZ5JyBqdXN0IG5lZWQgdG8gdXBkYXRlIHRoZSB3b3Jrc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VfZnJvbV9maWxlKHBhdGgsIGV4cG9ydF93b3Jrc3BhY2VfcGF0aCwgY29uZmlnLndvcmtzcGFjZV9wYXRoKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGVuZHMgY3JlYXRlZCBieSAnZGV2dG9vbCBhZGQnIG5lZWQgcmVwbGFjZW1lbnQgb2YgZXhwb3J0ZWQgc291cmNlIHRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBuID0gZ2V0X3BuKG1lbWJlci5uYW1lKS5zcGxpdCgnXycpWzBdCisgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRlZF9zcmN0cmVlID0gZXhwb3J0X3dvcmtzcGFjZVtwbl1bJ3NyY3RyZWUnXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhwb3J0ZWRfc3JjdHJlZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlX2Zyb21fZmlsZShwYXRoLCBleHBvcnRlZF9zcmN0cmVlLCBvcy5wYXRoLmpvaW4oY29uZmlnLndvcmtzcGFjZV9wYXRoLCAnc291cmNlcycsIHBuKSkKKworICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZC5fYWRkX21kNShjb25maWcsIHBuLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICBpbXBvcnRlZC5hcHBlbmQocG4pCisKKyAgICBpZiBpbXBvcnRlZDoKKyAgICAgICAgbG9nZ2VyLmluZm8oJ0ltcG9ydGVkIHJlY2lwZXMgaW50byB3b3Jrc3BhY2UgJXM6ICVzJyAlIChjb25maWcud29ya3NwYWNlX3BhdGgsICcsICcuam9pbihpbXBvcnRlZCkpKQorICAgIGVsc2U6CisgICAgICAgIGxvZ2dlci53YXJuKCdObyByZWNpcGVzIGltcG9ydGVkIGludG8gdGhlIHdvcmtzcGFjZScpCisKKyAgICByZXR1cm4gMAorCitkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2VycywgY29udGV4dCk6CisgICAgIiIiUmVnaXN0ZXIgZGV2dG9vbCBpbXBvcnQgc3ViY29tbWFuZHMiIiIKKyAgICBwYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2ltcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0ltcG9ydCBleHBvcnRlZCB0YXIgYXJjaGl2ZSBpbnRvIHdvcmtzcGFjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdJbXBvcnQgdGFyIGFyY2hpdmUgcHJldmlvdXNseSBjcmVhdGVkIGJ5ICJkZXZ0b29sIGV4cG9ydCIgaW50byB3b3Jrc3BhY2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0nYWR2YW5jZWQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2ZpbGUnLCBtZXRhdmFyPSdGSUxFJywgaGVscD0nTmFtZSBvZiB0aGUgdGFyIGFyY2hpdmUgdG8gaW1wb3J0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW92ZXJ3cml0ZScsICctbycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J092ZXJ3cml0ZSBmaWxlcyB3aGVuIGV4dHJhY3RpbmcnKQorICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZnVuYz1kZXZpbXBvcnQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zZGsucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zZGsucHkKaW5kZXggZThiZjBhZC4uZjQ2NTc3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc2RrLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3Nkay5weQpAQCAtMTU1LDcgKzE1NSw3IEBACiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihiYXNlcGF0aCwgJ2xheWVycy8uZ2l0JykpOgogICAgICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImdpdCBzdGF0dXMgLS1wb3JjZWxhaW4iLCBzaGVsbD1UcnVlLCBjd2Q9bGF5ZXJzX2RpcikKICAgICAgICAgICAgIGlmIG5vdCBvdXQ6Ci0gICAgICAgICAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKCJnaXQgZmV0Y2ggLS1hbGw7IGdpdCByZXNldCAtLWhhcmQiLCBzaGVsbD1UcnVlLCBjd2Q9bGF5ZXJzX2RpcikKKyAgICAgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoImdpdCBmZXRjaCAtLWFsbDsgZ2l0IHJlc2V0IC0taGFyZCBAe3V9Iiwgc2hlbGw9VHJ1ZSwgY3dkPWxheWVyc19kaXIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIHVwZGF0ZSBtZXRhZGF0YSBhcyB0aGVyZSBoYXZlIGJlZW4gY2hhbmdlcyBtYWRlIHRvIGl0LiBBYm9ydGluZy4iKTsKICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNoYW5nZWQgZmlsZXM6XG4lcyIgJSBvdXQpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCA1ZmYxZTIzLi5iZWVhMGQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQpAQCAtMSw2ICsxLDYgQEAKICMgRGV2ZWxvcG1lbnQgdG9vbCAtIHN0YW5kYXJkIGNvbW1hbmRzIHBsdWdpbgogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpAQCAtMzAsNyArMzAsNyBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBmaWxlY21wCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotZnJvbSBkZXZ0b29sIGltcG9ydCBleGVjX2J1aWxkX2Vudl9jb21tYW5kLCBzZXR1cF90aW5mb2lsLCBjaGVja193b3Jrc3BhY2VfcmVjaXBlLCB1c2VfZXh0ZXJuYWxfYnVpbGQsIHNldHVwX2dpdF9yZXBvLCByZWNpcGVfdG9fYXBwZW5kLCBnZXRfYmJjbGFzc2V4dGVuZF90YXJnZXRzLCBlbnN1cmVfbnBtLCBEZXZ0b29sRXJyb3IKK2Zyb20gZGV2dG9vbCBpbXBvcnQgZXhlY19idWlsZF9lbnZfY29tbWFuZCwgc2V0dXBfdGluZm9pbCwgY2hlY2tfd29ya3NwYWNlX3JlY2lwZSwgdXNlX2V4dGVybmFsX2J1aWxkLCBzZXR1cF9naXRfcmVwbywgcmVjaXBlX3RvX2FwcGVuZCwgZ2V0X2JiY2xhc3NleHRlbmRfdGFyZ2V0cywgdXBkYXRlX3VubG9ja2Vkc2lncywgRGV2dG9vbEVycm9yCiBmcm9tIGRldnRvb2wgaW1wb3J0IHBhcnNlX3JlY2lwZQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZGV2dG9vbCcpCkBAIC02Niw2ICs2NiwxMiBAQAogICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoYXJncy5yZWNpcGVuYW1lKToKICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdBbWJpZ3VvdXMgYXJndW1lbnQgIiVzIiAtIGFzc3VtaW5nIHlvdSBtZWFuIGl0IHRvIGJlIHRoZSByZWNpcGUgbmFtZScgJSBhcmdzLnJlY2lwZW5hbWUpCiAKKyAgICBpZiBub3QgYXJncy5mZXRjaHVyaToKKyAgICAgICAgaWYgYXJncy5zcmNyZXY6CisgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ1RoZSAtUy8tLXNyY3JldiBvcHRpb24gaXMgb25seSB2YWxpZCB3aGVuIGZldGNoaW5nIGZyb20gYW4gU0NNIHJlcG9zaXRvcnknKQorICAgICAgICBpZiBhcmdzLnNyY2JyYW5jaDoKKyAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVGhlIC1CLy0tc3JjYnJhbmNoIG9wdGlvbiBpcyBvbmx5IHZhbGlkIHdoZW4gZmV0Y2hpbmcgZnJvbSBhbiBTQ00gcmVwb3NpdG9yeScpCisKICAgICBpZiBhcmdzLnNyY3RyZWUgYW5kIG9zLnBhdGguaXNmaWxlKGFyZ3Muc3JjdHJlZSk6CiAgICAgICAgIGFyZ3MuZmV0Y2h1cmkgPSAnZmlsZTovLycgKyBvcy5wYXRoLmFic3BhdGgoYXJncy5zcmN0cmVlKQogICAgICAgICBhcmdzLnNyY3RyZWUgPSAnJwpAQCAtMTI4LDkgKzEzNCw2IEBACiAgICAgICAgIGNvbG9yID0gYXJncy5jb2xvcgogICAgIGV4dHJhY21kb3B0cyA9ICcnCiAgICAgaWYgYXJncy5mZXRjaHVyaToKLSAgICAgICAgaWYgYXJncy5mZXRjaHVyaS5zdGFydHN3aXRoKCducG06Ly8nKToKLSAgICAgICAgICAgIGVuc3VyZV9ucG0oY29uZmlnLCBiYXNlcGF0aCwgYXJncy5maXhlZF9zZXR1cCkKLQogICAgICAgICBzb3VyY2UgPSBhcmdzLmZldGNodXJpCiAgICAgICAgIGlmIHNyY3RyZWU6CiAgICAgICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAteCAlcycgJSBzcmN0cmVlCkBAIC0xNTIsMzEgKzE1NSwyNCBAQAogICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtYScKICAgICBpZiBhcmdzLmZldGNoX2RldjoKICAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1mZXRjaC1kZXYnCisgICAgaWYgYXJncy5taXJyb3JzOgorICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtLW1pcnJvcnMnCisgICAgaWYgYXJncy5zcmNyZXY6CisgICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC0tc3JjcmV2ICVzJyAlIGFyZ3Muc3JjcmV2CisgICAgaWYgYXJncy5zcmNicmFuY2g6CisgICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC0tc3JjYnJhbmNoICVzJyAlIGFyZ3Muc3JjYnJhbmNoCisgICAgaWYgYXJncy5wcm92aWRlczoKKyAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1wcm92aWRlcyAlcycgJSBhcmdzLnByb3ZpZGVzCiAKICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2wnKQogICAgIHRyeToKLSAgICAgICAgYnVpbHRucG0gPSBGYWxzZQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN0ZG91dCwgXyA9IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQoY29uZmlnLmluaXRfcGF0aCwgYmFzZXBhdGgsICdyZWNpcGV0b29sIC0tY29sb3I9JXMgY3JlYXRlIC0tZGV2dG9vbCAtbyAlcyBcJyVzXCcgJXMnICUgKGNvbG9yLCB0ZW1wZGlyLCBzb3VyY2UsIGV4dHJhY21kb3B0cyksIHdhdGNoPVRydWUpCi0gICAgICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXhpdGNvZGUgPT0gMTQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJ1aWx0bnBtOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdSZS1ydW5uaW5nIHJlY2lwZXRvb2wgc3RpbGwgZmFpbGVkIHRvIGZpbmQgbnBtJykKLSAgICAgICAgICAgICAgICAgICAgIyBGSVhNRSB0aGlzIGlzIGEgaG9ycmlibGUgaGFjayB0aGF0IGlzIHVuZm9ydHVuYXRlbHkKLSAgICAgICAgICAgICAgICAgICAgIyBuZWNlc3NhcnkgZHVlIHRvIHRoZSBmYWN0IHRoYXQgd2UgY2FuJ3QgcnVuIGJpdGJha2UgZnJvbQotICAgICAgICAgICAgICAgICAgICAjIGluc2lkZSByZWNpcGV0b29sIHNpbmNlIHJlY2lwZXRvb2wga2VlcHMgdGluZm9pbCBhY3RpdmUKLSAgICAgICAgICAgICAgICAgICAgIyB3aXRoIHJlZmVyZW5jZXMgdG8gaXQgdGhyb3VnaG91dCB0aGUgY29kZSwgc28gd2UgaGF2ZQotICAgICAgICAgICAgICAgICAgICAjIHRvIGV4aXQgb3V0IGFuZCBjb21lIGJhY2sgaGVyZSB0byBkbyBpdC4KLSAgICAgICAgICAgICAgICAgICAgZW5zdXJlX25wbShjb25maWcsIGJhc2VwYXRoLCBhcmdzLmZpeGVkX3NldHVwLCBjaGVja19leGlzdHM9RmFsc2UpCi0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdSZS1ydW5uaW5nIHJlY2lwZSBjcmVhdGlvbiBwcm9jZXNzIGFmdGVyIGJ1aWxkaW5nIG5vZGVqcycpCi0gICAgICAgICAgICAgICAgICAgIGJ1aWx0bnBtID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsaWYgZS5leGl0Y29kZSA9PSAxNToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdDb3VsZCBub3QgYXV0by1kZXRlcm1pbmUgcmVjaXBlIG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUnKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignQ29tbWFuZCBcJyVzXCcgZmFpbGVkJyAlIGUuY29tbWFuZCkKLSAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0ZG91dCwgXyA9IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQoY29uZmlnLmluaXRfcGF0aCwgYmFzZXBhdGgsICdyZWNpcGV0b29sIC0tY29sb3I9JXMgY3JlYXRlIC0tZGV2dG9vbCAtbyAlcyBcJyVzXCcgJXMnICUgKGNvbG9yLCB0ZW1wZGlyLCBzb3VyY2UsIGV4dHJhY21kb3B0cyksIHdhdGNoPVRydWUpCisgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmV4aXRjb2RlID09IDE1OgorICAgICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignQ291bGQgbm90IGF1dG8tZGV0ZXJtaW5lIHJlY2lwZSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBpdCBvbiB0aGUgY29tbWFuZCBsaW5lJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdDb21tYW5kIFwnJXNcJyBmYWlsZWQnICUgZS5jb21tYW5kKQogCiAgICAgICAgIHJlY2lwZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHRlbXBkaXIsICcqLmJiJykpCiAgICAgICAgIGlmIHJlY2lwZXM6CkBAIC0yODIsNiArMjc4LDI0IEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIGRvbmVcbicpCiAgICAgICAgICAgICAgICAgZi53cml0ZSgnfVxuJykKIAorICAgICAgICAjIENoZWNrIGlmIHRoZSBuZXcgbGF5ZXIgcHJvdmlkZXMgcmVjaXBlcyB3aG9zZSBwcmlvcml0aWVzIGhhdmUgYmVlbgorICAgICAgICAjIG92ZXJyaWRlbiBieSBQUkVGRVJSRURfUFJPVklERVIuCisgICAgICAgIHJlY2lwZV9uYW1lID0gcmQuZ2V0VmFyKCdQTicpCisgICAgICAgIHByb3ZpZGVzID0gcmQuZ2V0VmFyKCdQUk9WSURFUycpCisgICAgICAgICMgU2VhcmNoIGV2ZXJ5IGl0ZW0gZGVmaW5lZCBpbiBQUk9WSURFUworICAgICAgICBmb3IgcmVjaXBlX3Byb3ZpZGVkIGluIHByb3ZpZGVzLnNwbGl0KCk6CisgICAgICAgICAgICBwcmVmZXJyZWRfcHJvdmlkZXIgPSAnUFJFRkVSUkVEX1BST1ZJREVSXycgKyByZWNpcGVfcHJvdmlkZWQKKyAgICAgICAgICAgIGN1cnJlbnRfcHByb3ZpZGVyID0gcmQuZ2V0VmFyKHByZWZlcnJlZF9wcm92aWRlcikKKyAgICAgICAgICAgIGlmIGN1cnJlbnRfcHByb3ZpZGVyIGFuZCBjdXJyZW50X3Bwcm92aWRlciAhPSByZWNpcGVfbmFtZToKKyAgICAgICAgICAgICAgICBpZiBhcmdzLmZpeGVkX3NldHVwOgorICAgICAgICAgICAgICAgICAgICAjaWYgd2UgYXJlIGluc2lkZSB0aGUgZVNESyBhZGQgdGhlIG5ldyBQUkVGRVJSRURfUFJPVklERVIgaW4gdGhlIHdvcmtzcGFjZSBsYXllci5jb25mCisgICAgICAgICAgICAgICAgICAgIGxheWVyY29uZl9maWxlID0gb3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgImNvbmYiLCAibGF5ZXIuY29uZiIpCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllcmNvbmZfZmlsZSwgJ2EnKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnJXMgPSAiJXMiXG4nICUgKHByZWZlcnJlZF9wcm92aWRlciwgcmVjaXBlX25hbWUpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdTZXQgXCclc1wnIGluIG9yZGVyIHRvIHVzZSB0aGUgcmVjaXBlJyAlIHByZWZlcnJlZF9wcm92aWRlcikKKyAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgIF9hZGRfbWQ1KGNvbmZpZywgcmVjaXBlbmFtZSwgYXBwZW5kZmlsZSkKIAogICAgICAgICBsb2dnZXIuaW5mbygnUmVjaXBlICVzIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgY3JlYXRlZDsgZnVydGhlciBlZGl0aW5nIG1heSBiZSByZXF1aXJlZCB0byBtYWtlIGl0IGZ1bGx5IGZ1bmN0aW9uYWwnICUgcmVjaXBlZmlsZSkKQEAgLTM4Myw3ICszOTcsNyBAQAogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnZXh0cmFjdCcgc3ViY29tbWFuZCIiIgogICAgIGltcG9ydCBiYgogCi0gICAgdGluZm9pbCA9IF9wcmVwX2V4dHJhY3Rfb3BlcmF0aW9uKGNvbmZpZywgYmFzZXBhdGgsIGFyZ3MucmVjaXBlbmFtZSkKKyAgICB0aW5mb2lsID0gc2V0dXBfdGluZm9pbChiYXNlcGF0aD1iYXNlcGF0aCkKICAgICBpZiBub3QgdGluZm9pbDoKICAgICAgICAgIyBFcnJvciBhbHJlYWR5IHNob3duCiAgICAgICAgIHJldHVybiAxCkBAIC0zOTMsNyArNDA3LDcgQEAKICAgICAgICAgICAgIHJldHVybiAxCiAKICAgICAgICAgc3JjdHJlZSA9IG9zLnBhdGguYWJzcGF0aChhcmdzLnNyY3RyZWUpCi0gICAgICAgIGluaXRpYWxfcmV2ID0gX2V4dHJhY3Rfc291cmNlKHNyY3RyZWUsIGFyZ3Mua2VlcF90ZW1wLCBhcmdzLmJyYW5jaCwgRmFsc2UsIHJkLCB0aW5mb2lsKQorICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQogICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCiAKICAgICAgICAgaWYgaW5pdGlhbF9yZXY6CkBAIC00MDcsNyArNDIxLDcgQEAKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ3N5bmMnIHN1YmNvbW1hbmQiIiIKICAgICBpbXBvcnQgYmIKIAotICAgIHRpbmZvaWwgPSBfcHJlcF9leHRyYWN0X29wZXJhdGlvbihjb25maWcsIGJhc2VwYXRoLCBhcmdzLnJlY2lwZW5hbWUpCisgICAgdGluZm9pbCA9IHNldHVwX3RpbmZvaWwoYmFzZXBhdGg9YmFzZXBhdGgpCiAgICAgaWYgbm90IHRpbmZvaWw6CiAgICAgICAgICMgRXJyb3IgYWxyZWFkeSBzaG93bgogICAgICAgICByZXR1cm4gMQpAQCAtNDE3LDcgKzQzMSw3IEBACiAgICAgICAgICAgICByZXR1cm4gMQogCiAgICAgICAgIHNyY3RyZWUgPSBvcy5wYXRoLmFic3BhdGgoYXJncy5zcmN0cmVlKQotICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIFRydWUsIHJkLCB0aW5mb2lsKQorICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIFRydWUsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgcmQsIHRpbmZvaWwpCiAgICAgICAgIGxvZ2dlci5pbmZvKCdTb3VyY2UgdHJlZSAlcyBzeW5jaHJvbml6ZWQnICUgc3JjdHJlZSkKIAogICAgICAgICBpZiBpbml0aWFsX3JldjoKQEAgLTQyOCwzMSArNDQyLDEwIEBACiAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQogCiAKLWRlZiBfcHJlcF9leHRyYWN0X29wZXJhdGlvbihjb25maWcsIGJhc2VwYXRoLCByZWNpcGVuYW1lLCB0aW5mb2lsPU5vbmUpOgotICAgICIiIkhBQ0s6IFVnbHkgd29ya2Fyb3VuZCBmb3IgbWFraW5nIHN1cmUgdGhhdCByZXF1aXJlbWVudHMgYXJlIG1ldCB3aGVuCi0gICAgICAgdHJ5aW5nIHRvIGV4dHJhY3QgYSBwYWNrYWdlLiBSZXR1cm5zIHRoZSB0aW5mb2lsIGluc3RhbmNlIHRvIGJlIHVzZWQuIiIiCi0gICAgaWYgbm90IHRpbmZvaWw6Ci0gICAgICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoKQotCi0gICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCByZWNpcGVuYW1lLCBUcnVlKQotICAgIGlmIG5vdCByZDoKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbC15b2N0bycsIHJkKToKLSAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHN0ZG91dCwgXyA9IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQoY29uZmlnLmluaXRfcGF0aCwgYmFzZXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlIGtlcm4tdG9vbHMtbmF0aXZlJykKLSAgICAgICAgICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoKQotICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIkZhaWxlZCB0byBidWlsZCBrZXJuLXRvb2xzLW5hdGl2ZTpcbiVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnN0ZG91dCkKLSAgICByZXR1cm4gdGluZm9pbAotCi0KLWRlZiBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwga2VlcF90ZW1wLCBkZXZicmFuY2gsIHN5bmMsIGQsIHRpbmZvaWwpOgorZGVmIF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBrZWVwX3RlbXAsIGRldmJyYW5jaCwgc3luYywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBmaXhlZF9zZXR1cCwgZCwgdGluZm9pbCk6CiAgICAgIiIiRXh0cmFjdCBzb3VyY2VzIG9mIGEgcmVjaXBlIiIiCiAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCisgICAgaW1wb3J0IG9lLnBhdGNoCiAKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAKQEAgLTQ4MCw2ICs0NzMsMTIgQEAKICAgICAgICAgb3Mucm1kaXIoc3JjdHJlZSkKIAogICAgIGluaXRpYWxfcmV2ID0gTm9uZQorCisgICAgYXBwZW5kZXhpc3RlZCA9IEZhbHNlCisgICAgcmVjaXBlZmlsZSA9IGQuZ2V0VmFyKCdGSUxFJykKKyAgICBhcHBlbmRmaWxlID0gcmVjaXBlX3RvX2FwcGVuZChyZWNpcGVmaWxlLCBjb25maWcpCisgICAgaXNfa2VybmVsX3lvY3RvID0gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkKKwogICAgICMgV2UgbmVlZCB0byByZWRpcmVjdCBXT1JLRElSLCBTVEFNUFNfRElSIGV0Yy4gdW5kZXIgYSB0ZW1wb3JhcnkKICAgICAjIGRpcmVjdG9yeSBzbyB0aGF0OgogICAgICMgKGEpIHdlIHBpY2sgdXAgYWxsIGZpbGVzIHRoYXQgZ2V0IHVucGFja2VkIHRvIHRoZSBXT1JLRElSLCBhbmQKQEAgLTQ5OCwxMzcgKzQ5Nyw1NiBAQAogICAgIHRyeToKICAgICAgICAgdGluZm9pbC5sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5XQVJOSU5HKQogCi0gICAgICAgIGNyZCA9IGQuY3JlYXRlQ29weSgpCi0gICAgICAgICMgTWFrZSBhIHN1YmRpciBzbyB3ZSBndWFyZCBhZ2FpbnN0IFdPUktESVI9PVMKLSAgICAgICAgd29ya2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnd29ya2RpcicpCi0gICAgICAgIGNyZC5zZXRWYXIoJ1dPUktESVInLCB3b3JrZGlyKQotICAgICAgICBpZiBub3QgY3JkLmdldFZhcignUycpLnN0YXJ0c3dpdGgod29ya2Rpcik6Ci0gICAgICAgICAgICAjIFVzdWFsbHkgYSBzaGFyZWQgd29ya2RpciByZWNpcGUgKGtlcm5lbCwgZ2NjKQotICAgICAgICAgICAgIyBUcnkgdG8gc2V0IGEgcmVhc29uYWJsZSBkZWZhdWx0Ci0gICAgICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBkKToKLSAgICAgICAgICAgICAgICBjcmQuc2V0VmFyKCdTJywgJyR7V09SS0RJUn0vc291cmNlJykKKyAgICAgICAgIyBGSVhNRSB0aGlzIHJlc3VsdHMgaW4gYSBjYWNoZSByZWxvYWQgdW5kZXIgY29udHJvbCBvZiB0aW5mb2lsLCB3aGljaCBpcyBmaW5lCisgICAgICAgICMgZXhjZXB0IHdlIGRvbid0IGdldCB0aGUga25vdHR5IHByb2dyZXNzIGJhcgorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGFwcGVuZGZpbGUpOgorICAgICAgICAgICAgYXBwZW5kYmFja3VwID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIG9zLnBhdGguYmFzZW5hbWUoYXBwZW5kZmlsZSkgKyAnLmJhaycpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoYXBwZW5kZmlsZSwgYXBwZW5kYmFja3VwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXBwZW5kYmFja3VwID0gTm9uZQorICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShhcHBlbmRmaWxlKSkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCd3cml0aW5nIGFwcGVuZCBmaWxlICVzJyAlIGFwcGVuZGZpbGUpCisgICAgICAgIHdpdGggb3BlbihhcHBlbmRmaWxlLCAnYScpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCcjIyMtLS0gX2V4dHJhY3Rfc291cmNlXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnREVWVE9PTF9URU1QRElSID0gIiVzIlxuJyAlIHRlbXBkaXIpCisgICAgICAgICAgICBmLndyaXRlKCdERVZUT09MX0RFVkJSQU5DSCA9ICIlcyJcbicgJSBkZXZicmFuY2gpCisgICAgICAgICAgICBpZiBub3QgaXNfa2VybmVsX3lvY3RvOgorICAgICAgICAgICAgICAgIGYud3JpdGUoJ1BBVENIVE9PTCA9ICJnaXQiXG4nKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJ1BBVENIX0NPTU1JVF9GVU5DVElPTlMgPSAiMSJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdpbmhlcml0IGRldnRvb2wtc291cmNlXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnIyMjLS0tIF9leHRyYWN0X3NvdXJjZVxuJykKKworICAgICAgICB1cGRhdGVfdW5sb2NrZWRzaWdzKGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGZpeGVkX3NldHVwLCBbcG5dKQorCisgICAgICAgIHNzdGF0ZV9tYW5pZmVzdHMgPSBkLmdldFZhcignU1NUQVRFX01BTklGRVNUUycpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzc3RhdGVfbWFuaWZlc3RzKQorICAgICAgICBwcmVzZXJ2ZXN0YW1wZmlsZSA9IG9zLnBhdGguam9pbihzc3RhdGVfbWFuaWZlc3RzLCAncHJlc2VydmUtc3RhbXBzJykKKyAgICAgICAgd2l0aCBvcGVuKHByZXNlcnZlc3RhbXBmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGQuZ2V0VmFyKCdTVEFNUCcpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKToKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIGtlcm5lbCBjb25maWcKKyAgICAgICAgICAgICAgICB0YXNrID0gJ2RvX2NvbmZpZ3VyZScKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY3JkLnNldFZhcignUycsICcke1dPUktESVJ9LyVzJyAlIG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoJ1MnKSkpCi0gICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpOgotICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIG1vdmUgdGhlIHNvdXJjZSB0byBTVEFHSU5HX0tFUk5FTF9ESVIgaGVyZQotICAgICAgICAgICAgY3JkLnNldFZhcignU1RBR0lOR19LRVJORUxfRElSJywgJyR7U30nKQorICAgICAgICAgICAgICAgIHRhc2sgPSAnZG9fcGF0Y2gnCiAKLSAgICAgICAgaXNfa2VybmVsX3lvY3RvID0gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkKLSAgICAgICAgaWYgbm90IGlzX2tlcm5lbF95b2N0bzoKLSAgICAgICAgICAgIGNyZC5zZXRWYXIoJ1BBVENIVE9PTCcsICdnaXQnKQotICAgICAgICAgICAgY3JkLnNldFZhcignUEFUQ0hfQ09NTUlUX0ZVTkNUSU9OUycsICcxJykKKyAgICAgICAgICAgICMgUnVuIHRoZSBmZXRjaCArIHVucGFjayB0YXNrcworICAgICAgICAgICAgcmVzID0gdGluZm9pbC5idWlsZF90YXJnZXRzKHBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2V2ZW50cz1UcnVlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocHJlc2VydmVzdGFtcGZpbGUpOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwcmVzZXJ2ZXN0YW1wZmlsZSkKIAotICAgICAgICAjIEFwcGx5IG91ciBjaGFuZ2VzIHRvIHRoZSBkYXRhc3RvcmUgdG8gdGhlIHNlcnZlcidzIGRhdGFzdG9yZQotICAgICAgICBmb3Iga2V5IGluIGNyZC5sb2NhbGtleXMoKToKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCclc19wbi0lcycgJSAoa2V5LCBwbiksIGNyZC5nZXRWYXIoa2V5LCBGYWxzZSkpCisgICAgICAgIGlmIG5vdCByZXM6CisgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ0V4dHJhY3Rpbmcgc291cmNlIGZvciAlcyBmYWlsZWQnICUgcG4pCiAKLSAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1NUQU1QU19ESVInLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3N0YW1wcycpKQotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVCcsIG9zLnBhdGguam9pbih0ZW1wZGlyLCAndGVtcCcpKQotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignQlVJTERDRkdfRlVOQ1MnLCAnJykKLSAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ0JVSUxEQ0ZHX0hFQURFUicsICcnKQotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignQkJfSEFTSF9JR05PUkVfTUlTTUFUQ0gnLCAnMScpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2luaXRpYWxfcmV2JyksICdyJykgYXMgZjoKKyAgICAgICAgICAgIGluaXRpYWxfcmV2ID0gZi5yZWFkKCkKIAotICAgICAgICB0aW5mb2lsLnNldF9ldmVudF9tYXNrKFsnYmIuZXZlbnQuQnVpbGRTdGFydGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmV2ZW50LkJ1aWxkQ29tcGxldGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuTG9nUmVjb3JkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza1N0YXJ0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYi5idWlsZC5UYXNrRmFpbGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQnXSkKLQotICAgICAgICBkZWYgcnVudGFzayh0YXJnZXQsIHRhc2spOgotICAgICAgICAgICAgaWYgdGluZm9pbC5idWlsZF9maWxlKHRhcmdldCwgdGFzayk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSB0aW5mb2lsLndhaXRfZXZlbnQoMC4yNSkKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdUYXNrIGRvXyVzIGZhaWxlZDogJXMnICUgKHRhc2ssIGV2ZW50LmVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza0ZhaWxlZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdUYXNrIGRvXyVzIGZhaWxlZCcgJSB0YXNrKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrU3RhcnRlZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0V4ZWN1dGluZyAlcy4uLicgJSBldmVudC5fdGFzaykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LmxldmVsbm8gPD0gbG9nZ2luZy5JTkZPOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGUoZXZlbnQpCi0KLSAgICAgICAgIyB3ZSBuZWVkIHZpcnR1YWw6bmF0aXZlOi9wYXRoL3RvL3JlY2lwZSBpZiBpdCdzIGEgQkJDTEFTU0VYVEVORAotICAgICAgICBmbiA9IHRpbmZvaWwuZ2V0X3JlY2lwZV9maWxlKHBuKQotICAgICAgICBydW50YXNrKGZuLCAndW5wYWNrJykKLQotICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKToKLSAgICAgICAgICAgICMgRXh0cmEgc3RlcCBmb3Iga2VybmVsIHRvIHBvcHVsYXRlIHRoZSBzb3VyY2UgZGlyZWN0b3J5Ci0gICAgICAgICAgICBydW50YXNrKGZuLCAna2VybmVsX2NoZWNrb3V0JykKLQotICAgICAgICBzcmNzdWJkaXIgPSBjcmQuZ2V0VmFyKCdTJykKLQotICAgICAgICAjIE1vdmUgbG9jYWwgc291cmNlIGZpbGVzIGludG8gc2VwYXJhdGUgc3ViZGlyCi0gICAgICAgIHJlY2lwZV9wYXRjaGVzID0gW29zLnBhdGguYmFzZW5hbWUocGF0Y2gpIGZvciBwYXRjaCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3BhdGNoZXMoY3JkKV0KLSAgICAgICAgbG9jYWxfZmlsZXMgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX2xvY2FsX2ZpbGVzKGNyZCkKLQotICAgICAgICAjIElnbm9yZSBsb2NhbCBmaWxlcyB3aXRoIHN1YmRpcj17QlB9Ci0gICAgICAgIHNyY2Fic3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc3Jjc3ViZGlyKQotICAgICAgICBsb2NhbF9maWxlcyA9IFtmbmFtZSBmb3IgZm5hbWUgaW4gbG9jYWxfZmlsZXMgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHdvcmtkaXIsIGZuYW1lKSkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgIChzcmNhYnNwYXRoID09IHdvcmtkaXIgb3Igbm90Ci0gICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3b3JrZGlyLCBmbmFtZSkuc3RhcnRzd2l0aChzcmNhYnNwYXRoICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNlcCkpXQotICAgICAgICBpZiBsb2NhbF9maWxlczoKLSAgICAgICAgICAgIGZvciBmbmFtZSBpbiBsb2NhbF9maWxlczoKLSAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbih3b3JrZGlyLCBmbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ29lLWxvY2FsLWZpbGVzJywgZm5hbWUpKQotICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnb2UtbG9jYWwtZmlsZXMnLCAnLmdpdGlnbm9yZScpLAotICAgICAgICAgICAgICAgICAgICAgICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcjIElnbm9yZSBsb2NhbCBmaWxlcywgYnkgZGVmYXVsdC4gUmVtb3ZlIHRoaXMgZmlsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnaWYgeW91IHdhbnQgdG8gY29tbWl0IHRoZSBkaXJlY3RvcnkgdG8gR2l0XG4qXG4nKQotCi0gICAgICAgIGlmIHNyY3N1YmRpciA9PSB3b3JrZGlyOgotICAgICAgICAgICAgIyBGaW5kIG5vbi1wYXRjaCBub24tbG9jYWwgc291cmNlcyB0aGF0IHdlcmUgInVucGFja2VkIiB0byBzcmN0cmVlCi0gICAgICAgICAgICAjIGRpcmVjdG9yeQotICAgICAgICAgICAgc3JjX2ZpbGVzID0gW2ZuYW1lIGZvciBmbmFtZSBpbiBfbHNfdHJlZSh3b3JrZGlyKSBpZgotICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoZm5hbWUpIG5vdCBpbiByZWNpcGVfcGF0Y2hlc10KLSAgICAgICAgICAgICMgRm9yY2Ugc2VwYXJhdGUgUyBzbyB0aGF0IHBhdGNoIGZpbGVzIGNhbiBiZSBsZWZ0IG91dCBmcm9tIHNyY3RyZWUKLSAgICAgICAgICAgIHNyY3N1YmRpciA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPXdvcmtkaXIpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignU190YXNrLXBhdGNoJywgc3Jjc3ViZGlyKQotICAgICAgICAgICAgIyBNb3ZlIHNvdXJjZSBmaWxlcyB0byBTCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBzcmNfZmlsZXM6Ci0gICAgICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4od29ya2RpciwgcGF0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3Jjc3ViZGlyLCBwYXRoKSkKLSAgICAgICAgZWxpZiBvcy5wYXRoLmRpcm5hbWUoc3Jjc3ViZGlyKSAhPSB3b3JrZGlyOgotICAgICAgICAgICAgIyBIYW5kbGUgaWYgUyBpcyBzZXQgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgdGhlIHNvdXJjZQotICAgICAgICAgICAgc3Jjc3ViZGlyID0gb3MucGF0aC5qb2luKHdvcmtkaXIsIG9zLnBhdGgucmVscGF0aChzcmNzdWJkaXIsIHdvcmtkaXIpLnNwbGl0KG9zLnNlcClbMF0pCi0KLSAgICAgICAgc2NyaXB0dXRpbHMuZ2l0X2NvbnZlcnRfc3RhbmRhbG9uZV9jbG9uZShzcmNzdWJkaXIpCi0KLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBzcmNzdWJkaXIgZXhpc3RzCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmNzdWJkaXIpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzcmNzdWJkaXIpIG9yIG5vdCBvcy5saXN0ZGlyKHNyY3N1YmRpcik6Ci0gICAgICAgICAgICBsb2dnZXIud2FybmluZygibm8gc291cmNlIHVucGFja2VkIHRvIFMsIGVpdGhlciB0aGUgJXMgcmVjaXBlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2Vzbid0IHVzZSBhbnkgc291cmNlIG9yIHRoZSBjb3JyZWN0IHNvdXJjZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIiAlIHBuKQotCi0gICAgICAgIHNldHVwX2dpdF9yZXBvKHNyY3N1YmRpciwgY3JkLmdldFZhcignUFYnKSwgZGV2YnJhbmNoLCBkPWQpCi0KLSAgICAgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXNyY3N1YmRpcikKLSAgICAgICAgaW5pdGlhbF9yZXYgPSBzdGRvdXQucnN0cmlwKCkKLQotICAgICAgICBsb2dnZXIuaW5mbygnUGF0Y2hpbmcuLi4nKQotICAgICAgICBydW50YXNrKGZuLCAncGF0Y2gnKQotCi0gICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgdGFnIC1mIGRldnRvb2wtcGF0Y2hlZCcsIGN3ZD1zcmNzdWJkaXIpCi0KLSAgICAgICAga2NvbmZpZyA9IE5vbmUKLSAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCk6Ci0gICAgICAgICAgICAjIFN0b3JlIGdlbmVyYXRlIGFuZCBzdG9yZSBrZXJuZWwgY29uZmlnCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygnR2VuZXJhdGluZyBrZXJuZWwgY29uZmlnJykKLSAgICAgICAgICAgIHJ1bnRhc2soZm4sICdjb25maWd1cmUnKQotICAgICAgICAgICAga2NvbmZpZyA9IG9zLnBhdGguam9pbihjcmQuZ2V0VmFyKCdCJyksICcuY29uZmlnJykKLQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdzcmNzdWJkaXInKSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc3Jjc3ViZGlyID0gZi5yZWFkKCkKIAogICAgICAgICB0ZW1wZGlyX2xvY2FsZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdvZS1sb2NhbC1maWxlcycpCiAgICAgICAgIHNyY3RyZWVfbG9jYWxkaXIgPSBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgJ29lLWxvY2FsLWZpbGVzJykKQEAgLTY4MiwxMSArNjAwLDE1IEBACiAgICAgICAgICAgICAgICAgb2UucGF0Y2guR2l0QXBwbHlUcmVlLmdpdENvbW1hbmRVc2VyT3B0aW9ucyh1c2Vyb3B0aW9ucywgZD1kKQogICAgICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgJXMgY29tbWl0IC1hIC1tICJDb21taXR0aW5nIGxvY2FsIGZpbGUgc3ltbGlua3NcblxuJXMiJyAlICgnICcuam9pbih1c2Vyb3B0aW9ucyksIG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5pZ25vcmVfY29tbWl0X3ByZWZpeCksIGN3ZD1zcmN0cmVlKQogCi0gICAgICAgIGlmIGtjb25maWc6CisgICAgICAgIGlmIGlzX2tlcm5lbF95b2N0bzoKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDb3B5aW5nIGtlcm5lbCBjb25maWcgdG8gc3JjdHJlZScpCi0gICAgICAgICAgICBzaHV0aWwuY29weTIoa2NvbmZpZywgc3JjdHJlZSkKKyAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4odGVtcGRpciwgJy5jb25maWcnKSwgc3JjdHJlZSkKIAogICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGFwcGVuZGJhY2t1cDoKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShhcHBlbmRiYWNrdXAsIGFwcGVuZGZpbGUpCisgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoYXBwZW5kZmlsZSk6CisgICAgICAgICAgICBvcy5yZW1vdmUoYXBwZW5kZmlsZSkKICAgICAgICAgaWYga2VlcF90ZW1wOgogICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1ByZXNlcnZpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yeSAlcycgJSB0ZW1wZGlyKQogICAgICAgICBlbHNlOgpAQCAtNjk5LDggKzYyMSwxMSBAQAogCiAgICAgZGVmIGFkZGZpbGUoZm4pOgogICAgICAgICBtZDUgPSBiYi51dGlscy5tZDVfZmlsZShmbikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjb25maWcud29ya3NwYWNlX3BhdGgsICcuZGV2dG9vbF9tZDUnKSwgJ2EnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgnJXN8JXN8JXNcbicgJSAocmVjaXBlbmFtZSwgb3MucGF0aC5yZWxwYXRoKGZuLCBjb25maWcud29ya3NwYWNlX3BhdGgpLCBtZDUpKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgJy5kZXZ0b29sX21kNScpLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgbWQ1X3N0ciA9ICclc3wlc3wlc1xuJyAlIChyZWNpcGVuYW1lLCBvcy5wYXRoLnJlbHBhdGgoZm4sIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCksIG1kNSkKKyAgICAgICAgICAgIGYuc2VlaygwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIGlmIG5vdCBtZDVfc3RyIGluIGYucmVhZCgpOgorICAgICAgICAgICAgICAgIGYud3JpdGUobWQ1X3N0cikKIAogICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZW5hbWUpOgogICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhmaWxlbmFtZSk6CkBAIC03NzIsMTMgKzY5Nyw2IEBACiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIi0tbm8tZXh0cmFjdCBzcGVjaWZpZWQgYW5kIHNvdXJjZSBwYXRoICVzIGRvZXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgZXhpc3Qgb3IgaXMgbm90IGEgZGlyZWN0b3J5IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjdHJlZSkKLSAgICAgICAgaWYgbm90IGFyZ3Mubm9fZXh0cmFjdDoKLSAgICAgICAgICAgIHRpbmZvaWwgPSBfcHJlcF9leHRyYWN0X29wZXJhdGlvbihjb25maWcsIGJhc2VwYXRoLCBwbiwgdGluZm9pbCkKLSAgICAgICAgICAgIGlmIG5vdCB0aW5mb2lsOgotICAgICAgICAgICAgICAgICMgRXJyb3IgYWxyZWFkeSBzaG93bgotICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gcmUtcGFyc2UgYmVjYXVzZSB0aW5mb2lsIG1heSBoYXZlIGJlZW4gcmUtaW5pdGlhbGlzZWQKLSAgICAgICAgICAgIHJkID0gcGFyc2VfcmVjaXBlKGNvbmZpZywgdGluZm9pbCwgYXJncy5yZWNpcGVuYW1lLCBUcnVlKQogCiAgICAgICAgIHJlY2lwZWZpbGUgPSByZC5nZXRWYXIoJ0ZJTEUnKQogICAgICAgICBhcHBlbmRmaWxlID0gcmVjaXBlX3RvX2FwcGVuZChyZWNpcGVmaWxlLCBjb25maWcsIGFyZ3Mud2lsZGNhcmQpCkBAIC03OTMsNyArNzExLDcgQEAKICAgICAgICAgaW5pdGlhbF9yZXYgPSBOb25lCiAgICAgICAgIGNvbW1pdHMgPSBbXQogICAgICAgICBpZiBub3QgYXJncy5ub19leHRyYWN0OgotICAgICAgICAgICAgaW5pdGlhbF9yZXYgPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBGYWxzZSwgcmQsIHRpbmZvaWwpCisgICAgICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQogICAgICAgICAgICAgaWYgbm90IGluaXRpYWxfcmV2OgogICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCkBAIC04NDIsNyArNzYwLDEwIEBACiAKICAgICAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIHJkKToKICAgICAgICAgICAgICAgICBmLndyaXRlKCdTUkNUUkVFQ09WRVJFRFRBU0tTID0gImRvX3ZhbGlkYXRlX2JyYW5jaGVzIGRvX2tlcm5lbF9jaGVja291dCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9fZmV0Y2ggZG9fdW5wYWNrIGRvX3BhdGNoIGRvX2tlcm5lbF9jb25maWdtZSBkb19rZXJuZWxfY29uZmlnY2hlY2siXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2ZldGNoIGRvX3VucGFjayBkb19rZXJuZWxfY29uZmlnbWUgZG9fa2VybmVsX2NvbmZpZ2NoZWNrIlxuJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdcbmRvX3BhdGNoKCkge1xuJworICAgICAgICAgICAgICAgICAgICAgICAgJyAgICA6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJykKICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbmRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGNwICR7Qn0vLmNvbmZpZyAke1N9Ly5jb25maWcuYmFzZWxpbmVcbicKICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgbG4gLXNmVCAke0J9Ly5jb25maWcgJHtTfS8uY29uZmlnLm5ld1xuJwpAQCAtODUyLDYgKzc3Myw4IEBACiAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcjIGNvbW1pdDogJXNcbicgJSBjb21taXQpCiAKKyAgICAgICAgdXBkYXRlX3VubG9ja2Vkc2lncyhiYXNlcGF0aCwgd29ya3NwYWNlLCBhcmdzLmZpeGVkX3NldHVwLCBbcG5dKQorCiAgICAgICAgIF9hZGRfbWQ1KGNvbmZpZywgcG4sIGFwcGVuZGZpbGUpCiAKICAgICAgICAgbG9nZ2VyLmluZm8oJ1JlY2lwZSAlcyBub3cgc2V0IHVwIHRvIGJ1aWxkIGZyb20gJXMnICUgKHBuLCBzcmN0cmVlKSkKQEAgLTEzNzUsMTIgKzEyOTgsMTMgQEAKICAgICAgICAgaWYgbm90IG5vX3JlbW92ZToKICAgICAgICAgICAgICMgRmluZCBsaXN0IG9mIGV4aXN0aW5nIHBhdGNoZXMgaW4gcmVjaXBlIGZpbGUKICAgICAgICAgICAgIHBhdGNoZXNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dGVtcGRpcikKLSAgICAgICAgICAgIG9sZF9zcmNyZXYgPSAocmQuZ2V0VmFyKCdTUkNSRVYnLCBGYWxzZSkgb3IgJycpCisgICAgICAgICAgICBvbGRfc3JjcmV2ID0gcmQuZ2V0VmFyKCdTUkNSRVYnKSBvciAnJwogICAgICAgICAgICAgdXBkX3AsIG5ld19wLCBkZWxfcCA9IF9leHBvcnRfcGF0Y2hlcyhzcmN0cmVlLCByZCwgb2xkX3NyY3JldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hlc19kaXIpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1BhdGNoZXM6IHVwZGF0ZSAlcywgbmV3ICVzLCBkZWxldGUgJXMnICUgKGRpY3QodXBkX3ApLCBkaWN0KG5ld19wKSwgZGljdChkZWxfcCkpKQogCiAgICAgICAgICAgICAjIFJlbW92ZSBkZWxldGVkIGxvY2FsIGZpbGVzIGFuZCAib3ZlcmxhcHBpbmciIHBhdGNoZXMKLSAgICAgICAgICAgIHJlbW92ZV9maWxlcyA9IGxpc3QoZGVsX2YudmFsdWVzKCkpICsgbGlzdCh1cGRfcC52YWx1ZXMoKSkKKyAgICAgICAgICAgIHJlbW92ZV9maWxlcyA9IGxpc3QoZGVsX2YudmFsdWVzKCkpICsgbGlzdCh1cGRfcC52YWx1ZXMoKSkgKyBsaXN0KGRlbF9wLnZhbHVlcygpKQogICAgICAgICAgICAgaWYgcmVtb3ZlX2ZpbGVzOgogICAgICAgICAgICAgICAgIHJlbW92ZWRlbnRyaWVzID0gX3JlbW92ZV9maWxlX2VudHJpZXMoc3JjdXJpLCByZW1vdmVfZmlsZXMpWzBdCiAgICAgICAgICAgICAgICAgdXBkYXRlX3NyY3VyaSA9IFRydWUKQEAgLTE2MTIsNyArMTUzNiw3IEBACiBkZWYgc3RhdHVzKGFyZ3MsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSk6CiAgICAgIiIiRW50cnkgcG9pbnQgZm9yIHRoZSBkZXZ0b29sICdzdGF0dXMnIHN1YmNvbW1hbmQiIiIKICAgICBpZiB3b3Jrc3BhY2U6Ci0gICAgICAgIGZvciByZWNpcGUsIHZhbHVlIGluIHdvcmtzcGFjZS5pdGVtcygpOgorICAgICAgICBmb3IgcmVjaXBlLCB2YWx1ZSBpbiBzb3J0ZWQod29ya3NwYWNlLml0ZW1zKCkpOgogICAgICAgICAgICAgcmVjaXBlZmlsZSA9IHZhbHVlWydyZWNpcGVmaWxlJ10KICAgICAgICAgICAgIGlmIHJlY2lwZWZpbGU6CiAgICAgICAgICAgICAgICAgcmVjaXBlc3RyID0gJyAoJXMpJyAlIHJlY2lwZWZpbGUKQEAgLTE2MjcsNiArMTU1MSwyNiBAQAogZGVmIF9yZXNldChyZWNpcGVzLCBub19jbGVhbiwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJSZXNldCBvbmUgb3IgbW9yZSByZWNpcGVzIiIiCiAKKyAgICBkZWYgY2xlYW5fcHJlZmVycmVkX3Byb3ZpZGVyKHBuLCBsYXllcmNvbmZfcGF0aCk6CisgICAgICAgICIiIlJlbW92ZSBQUkVGRVJSRURfUFJPVklERVIgZnJvbSBsYXllci5jb25mJyIiIgorICAgICAgICBpbXBvcnQgcmUKKyAgICAgICAgbGF5ZXJjb25mX2ZpbGUgPSBvcy5wYXRoLmpvaW4obGF5ZXJjb25mX3BhdGgsICdjb25mJywgJ2xheWVyLmNvbmYnKQorICAgICAgICBuZXdfbGF5ZXJjb25mX2ZpbGUgPSBvcy5wYXRoLmpvaW4obGF5ZXJjb25mX3BhdGgsICdjb25mJywgJy5sYXllci5jb25mJykKKyAgICAgICAgcHByb3ZpZGVyX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgd2l0aCBvcGVuKGxheWVyY29uZl9maWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgIHdpdGggb3BlbihuZXdfbGF5ZXJjb25mX2ZpbGUsICdhJykgYXMgbmY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgICAgIHBwcm92aWRlcl9leHAgPSByJ15QUkVGRVJSRURfUFJPVklERVJfLio/ID0gIicgKyBwbiArIHInIiQnCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaChwcHJvdmlkZXJfZXhwLCBsaW5lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5mLndyaXRlKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwcHJvdmlkZXJfZm91bmQgPSBUcnVlCisgICAgICAgIGlmIHBwcm92aWRlcl9mb3VuZDoKKyAgICAgICAgICAgIHNodXRpbC5tb3ZlKG5ld19sYXllcmNvbmZfZmlsZSwgbGF5ZXJjb25mX2ZpbGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcy5yZW1vdmUobmV3X2xheWVyY29uZl9maWxlKQorCiAgICAgaWYgcmVjaXBlcyBhbmQgbm90IG5vX2NsZWFuOgogICAgICAgICBpZiBsZW4ocmVjaXBlcykgPT0gMToKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDbGVhbmluZyBzeXNyb290IGZvciByZWNpcGUgJXMuLi4nICUgcmVjaXBlc1swXSkKQEAgLTE2NzksNiArMTYyMyw3IEBACiAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHVubGlrZWx5LCBidXQgaWYgaXQncyBlbXB0eSB3ZSBjYW4ganVzdCByZW1vdmUgaXQKICAgICAgICAgICAgICAgICBvcy5ybWRpcihzcmN0cmVlKQogCisgICAgICAgIGNsZWFuX3ByZWZlcnJlZF9wcm92aWRlcihwbiwgY29uZmlnLndvcmtzcGFjZV9wYXRoKQogCiBkZWYgcmVzZXQoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ3Jlc2V0JyBzdWJjb21tYW5kIiIiCkBAIC0xODM0LDEwICsxNzc5LDE1IEBACiAgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tZmV0Y2gtZGV2JywgaGVscD0nRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMnLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCAnLVYnLCBoZWxwPSdWZXJzaW9uIHRvIHVzZSB3aXRoaW4gcmVjaXBlIChQViknKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLW5vLWdpdCcsICctZycsIGhlbHA9J0lmIGZldGNoaW5nIHNvdXJjZSwgZG8gbm90IHNldCB1cCBzb3VyY2UgdHJlZSBhcyBhIGdpdCByZXBvc2l0b3J5JywgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1hdXRvcmV2JywgJy1hJywgaGVscD0nV2hlbiBmZXRjaGluZyBmcm9tIGEgZ2l0IHJlcG9zaXRvcnksIHNldCBTUkNSRVYgaW4gdGhlIHJlY2lwZSB0byBhIGZsb2F0aW5nIHJldmlzaW9uIGluc3RlYWQgb2YgZml4ZWQnLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIGdyb3VwID0gcGFyc2VyX2FkZC5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc3JjcmV2JywgJy1TJywgaGVscD0nU291cmNlIHJldmlzaW9uIHRvIGZldGNoIGlmIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IGxhdGVzdCknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1hdXRvcmV2JywgJy1hJywgaGVscD0nV2hlbiBmZXRjaGluZyBmcm9tIGEgZ2l0IHJlcG9zaXRvcnksIHNldCBTUkNSRVYgaW4gdGhlIHJlY2lwZSB0byBhIGZsb2F0aW5nIHJldmlzaW9uIGluc3RlYWQgb2YgZml4ZWQnLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLXNyY2JyYW5jaCcsICctQicsIGhlbHA9J0JyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCAoZGVmYXVsdCBtYXN0ZXIpJykKICAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1iaW5hcnknLCAnLWInLCBoZWxwPSdUcmVhdCB0aGUgc291cmNlIHRyZWUgYXMgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCB2ZXJiYXRpbSAobm8gY29tcGlsYXRpb24sIHNhbWUgZGlyZWN0b3J5IHN0cnVjdHVyZSkuIFVzZWZ1bCB3aXRoIGJpbmFyeSBwYWNrYWdlcyBlLmcuIFJQTXMuJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1hbHNvLW5hdGl2ZScsIGhlbHA9J0Fsc28gYWRkIG5hdGl2ZSB2YXJpYW50IChpLmUuIHN1cHBvcnQgYnVpbGRpbmcgcmVjaXBlIGZvciB0aGUgYnVpbGQgaG9zdCBhcyB3ZWxsIGFzIHRoZSB0YXJnZXQgbWFjaGluZSknLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLXNyYy1zdWJkaXInLCBoZWxwPSdTcGVjaWZ5IHN1YmRpcmVjdG9yeSB3aXRoaW4gc291cmNlIHRyZWUgdG8gdXNlJywgbWV0YXZhcj0nU1VCRElSJykKKyAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1taXJyb3JzJywgaGVscD0nRW5hYmxlIFBSRU1JUlJPUlMgYW5kIE1JUlJPUlMgZm9yIHNvdXJjZSB0cmVlIGZldGNoaW5nIChkaXNhYmxlIGJ5IGRlZmF1bHQpLicsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tcHJvdmlkZXMnLCAnLXAnLCBoZWxwPSdTcGVjaWZ5IGFuIGFsaWFzIGZvciB0aGUgaXRlbSBwcm92aWRlZCBieSB0aGUgcmVjaXBlLiBFLmcuIHZpcnR1YWwvbGliZ2wnKQogICAgIHBhcnNlcl9hZGQuc2V0X2RlZmF1bHRzKGZ1bmM9YWRkLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQogCiAgICAgcGFyc2VyX21vZGlmeSA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignbW9kaWZ5JywgaGVscD0nTW9kaWZ5IHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIHJlY2lwZScsCkBAIC0xODU0LDcgKzE4MDQsNyBAQAogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1uby1zYW1lLWRpcicsIGhlbHA9J0ZvcmNlIGJ1aWxkIGluIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5JywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBwYXJzZXJfbW9kaWZ5LmFkZF9hcmd1bWVudCgnLS1icmFuY2gnLCAnLWInLCBkZWZhdWx0PSJkZXZ0b29sIiwgaGVscD0nTmFtZSBmb3IgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0ICh3aGVuIG5vdCB1c2luZyAtbi8tLW5vLWV4dHJhY3QpIChkZWZhdWx0ICIlKGRlZmF1bHQpcyIpJykKICAgICBwYXJzZXJfbW9kaWZ5LmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJywgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICBwYXJzZXJfbW9kaWZ5LnNldF9kZWZhdWx0cyhmdW5jPW1vZGlmeSkKKyAgICBwYXJzZXJfbW9kaWZ5LnNldF9kZWZhdWx0cyhmdW5jPW1vZGlmeSwgZml4ZWRfc2V0dXA9Y29udGV4dC5maXhlZF9zZXR1cCkKIAogICAgIHBhcnNlcl9leHRyYWN0ID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdleHRyYWN0JywgaGVscD0nRXh0cmFjdCB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J0V4dHJhY3RzIHRoZSBzb3VyY2UgZm9yIGFuIGV4aXN0aW5nIHJlY2lwZScsCkBAIC0xODYzLDcgKzE4MTMsNyBAQAogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnc3JjdHJlZScsIGhlbHA9J1BhdGggdG8gd2hlcmUgdG8gZXh0cmFjdCB0aGUgc291cmNlIHRyZWUnKQogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnLS1icmFuY2gnLCAnLWInLCBkZWZhdWx0PSJkZXZ0b29sIiwgaGVscD0nTmFtZSBmb3IgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0IChkZWZhdWx0ICIlKGRlZmF1bHQpcyIpJykKICAgICBwYXJzZXJfZXh0cmFjdC5hZGRfYXJndW1lbnQoJy0ta2VlcC10ZW1wJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nS2VlcCB0ZW1wb3JhcnkgZGlyZWN0b3J5IChmb3IgZGVidWdnaW5nKScpCi0gICAgcGFyc2VyX2V4dHJhY3Quc2V0X2RlZmF1bHRzKGZ1bmM9ZXh0cmFjdCwgbm9fd29ya3NwYWNlPVRydWUpCisgICAgcGFyc2VyX2V4dHJhY3Quc2V0X2RlZmF1bHRzKGZ1bmM9ZXh0cmFjdCwgZml4ZWRfc2V0dXA9Y29udGV4dC5maXhlZF9zZXR1cCkKIAogICAgIHBhcnNlcl9zeW5jID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzeW5jJywgaGVscD0nU3luY2hyb25pemUgdGhlIHNvdXJjZSB0cmVlIGZvciBhbiBleGlzdGluZyByZWNpcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J1N5bmNocm9uaXplIHRoZSBwcmV2aW91c2x5IGV4dHJhY3RlZCBzb3VyY2UgdHJlZSBmb3IgYW4gZXhpc3RpbmcgcmVjaXBlJywKQEAgLTE4NzMsNyArMTgyMyw3IEBACiAgICAgcGFyc2VyX3N5bmMuYWRkX2FyZ3VtZW50KCdzcmN0cmVlJywgaGVscD0nUGF0aCB0byB0aGUgc291cmNlIHRyZWUnKQogICAgIHBhcnNlcl9zeW5jLmFkZF9hcmd1bWVudCgnLS1icmFuY2gnLCAnLWInLCBkZWZhdWx0PSJkZXZ0b29sIiwgaGVscD0nTmFtZSBmb3IgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0JykKICAgICBwYXJzZXJfc3luYy5hZGRfYXJndW1lbnQoJy0ta2VlcC10ZW1wJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nS2VlcCB0ZW1wb3JhcnkgZGlyZWN0b3J5IChmb3IgZGVidWdnaW5nKScpCi0gICAgcGFyc2VyX3N5bmMuc2V0X2RlZmF1bHRzKGZ1bmM9c3luYykKKyAgICBwYXJzZXJfc3luYy5zZXRfZGVmYXVsdHMoZnVuYz1zeW5jLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQogCiAgICAgcGFyc2VyX3JlbmFtZSA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcigncmVuYW1lJywgaGVscD0nUmVuYW1lIGEgcmVjaXBlIGZpbGUgaW4gdGhlIHdvcmtzcGFjZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nUmVuYW1lcyB0aGUgcmVjaXBlIGZpbGUgZm9yIGEgcmVjaXBlIGluIHRoZSB3b3Jrc3BhY2UsIGNoYW5naW5nIHRoZSBuYW1lIG9yIHZlcnNpb24gcGFydCBvciBib3RoLCBlbnN1cmluZyB0aGF0IGFsbCByZWZlcmVuY2VzIHdpdGhpbiB0aGUgd29ya3NwYWNlIGFyZSB1cGRhdGVkIGF0IHRoZSBzYW1lIHRpbWUuIE9ubHkgd29ya3Mgd2hlbiB0aGUgcmVjaXBlIGZpbGUgaXRzZWxmIGlzIGluIHRoZSB3b3Jrc3BhY2UsIGUuZy4gYWZ0ZXIgZGV2dG9vbCBhZGQuIFBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBkZXZ0b29sIGFkZCBkaWQgbm90IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IG5hbWUuJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3VwZ3JhZGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5CmluZGV4IDA1ZmI5ZTUuLmYxYjNmZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3VwZ3JhZGUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXBncmFkZS5weQpAQCAtMSw2ICsxLDYgQEAKICMgRGV2ZWxvcG1lbnQgdG9vbCAtIHVwZ3JhZGUgY29tbWFuZCBwbHVnaW4KICMKLSMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgSW50ZWwgQ29ycG9yYXRpb24KICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKQEAgLTMzLDcgKzMzLDcgQEAKIAogaW1wb3J0IG9lLnJlY2lwZXV0aWxzCiBmcm9tIGRldnRvb2wgaW1wb3J0IHN0YW5kYXJkCi1mcm9tIGRldnRvb2wgaW1wb3J0IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQsIHNldHVwX3RpbmZvaWwsIERldnRvb2xFcnJvciwgcGFyc2VfcmVjaXBlLCB1c2VfZXh0ZXJuYWxfYnVpbGQKK2Zyb20gZGV2dG9vbCBpbXBvcnQgZXhlY19idWlsZF9lbnZfY29tbWFuZCwgc2V0dXBfdGluZm9pbCwgRGV2dG9vbEVycm9yLCBwYXJzZV9yZWNpcGUsIHVzZV9leHRlcm5hbF9idWlsZCwgdXBkYXRlX3VubG9ja2Vkc2lncwogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZGV2dG9vbCcpCiAKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICAgICAgc3JjdXJpID0gcmV2X3JlLnN1YignJywgc3JjdXJpKQogICAgIHJldHVybiBzcmN1cmksIHNyY3JldgogCi1kZWYgX2V4dHJhY3RfbmV3X3NvdXJjZShuZXdwdiwgc3JjdHJlZSwgbm9fcGF0Y2gsIHNyY3JldiwgYnJhbmNoLCBrZWVwX3RlbXAsIHRpbmZvaWwsIHJkKToKK2RlZiBfZXh0cmFjdF9uZXdfc291cmNlKG5ld3B2LCBzcmN0cmVlLCBub19wYXRjaCwgc3JjcmV2LCBzcmNicmFuY2gsIGJyYW5jaCwga2VlcF90ZW1wLCB0aW5mb2lsLCByZCk6CiAgICAgIiIiRXh0cmFjdCBzb3VyY2VzIG9mIGEgcmVjaXBlIHdpdGggYSBuZXcgdmVyc2lvbiIiIgogCiAgICAgZGVmIF9fcnVuKGNtZCk6CkBAIC0yMDIsMTUgKzIwMiwzOCBAQAogICAgICAgICBfX3J1bignZ2l0IHRhZyAtZiBkZXZ0b29sLWJhc2UtbmV3JykKICAgICAgICAgbWQ1ID0gTm9uZQogICAgICAgICBzaGEyNTYgPSBOb25lCisgICAgICAgIGlmIG5vdCBzcmNicmFuY2g6CisgICAgICAgICAgICBjaGVja19icmFuY2gsIGNoZWNrX2JyYW5jaF9lcnIgPSBfX3J1bignZ2l0IGJyYW5jaCAtciAtLWNvbnRhaW5zICVzJyAlIHNyY3JldikKKyAgICAgICAgICAgIGdldF9icmFuY2ggPSBbeC5zdHJpcCgpIGZvciB4IGluIGNoZWNrX2JyYW5jaC5zcGxpdGxpbmVzKCldCisgICAgICAgICAgICAjIFJlbW92ZSBIRUFEIHJlZmVyZW5jZSBwb2ludCBhbmQgZHJvcCByZW1vdGUgcHJlZml4CisgICAgICAgICAgICBnZXRfYnJhbmNoID0gW3guc3BsaXQoJy8nLCAxKVsxXSBmb3IgeCBpbiBnZXRfYnJhbmNoIGlmIG5vdCB4LnN0YXJ0c3dpdGgoJ29yaWdpbi9IRUFEJyldCisgICAgICAgICAgICBpZiAnbWFzdGVyJyBpbiBnZXRfYnJhbmNoOgorICAgICAgICAgICAgICAgICMgSWYgaXQgaXMgbWFzdGVyLCB3ZSBkbyBub3QgbmVlZCB0byBhcHBlbmQgJ2JyYW5jaD1tYXN0ZXInIGFzIHRoaXMgaXMgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAjIEV2ZW4gd2l0aCB0aGUgY2FzZSB3aGVyZSBnZXRfYnJhbmNoIGhhcyBtdWx0aXBsZSBvYmplY3RzLCBpZiAnbWFzdGVyJyBpcyBvbmUKKyAgICAgICAgICAgICAgICAjIG9mIHRoZW0sIHdlIHNob3VsZCBkZWZhdWx0IHRha2UgZnJvbSAnbWFzdGVyJworICAgICAgICAgICAgICAgIHNyY2JyYW5jaCA9ICcnCisgICAgICAgICAgICBlbGlmIGxlbihnZXRfYnJhbmNoKSA9PSAxOgorICAgICAgICAgICAgICAgICMgSWYgJ21hc3RlcicgaXNuJ3QgaW4gZ2V0X2JyYW5jaCBhbmQgZ2V0X2JyYW5jaCBjb250YWlucyBvbmx5IE9ORSBvYmplY3QsIHRoZW4gc3RvcmUgcmVzdWx0IGludG8gJ3NyY2JyYW5jaCcKKyAgICAgICAgICAgICAgICBzcmNicmFuY2ggPSBnZXRfYnJhbmNoWzBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSWYgZ2V0X2JyYW5jaCBjb250YWlucyBtb3JlIHRoYW4gb25lIG9iamVjdHMsIHRoZW4gZGlzcGxheSBlcnJvciBhbmQgZXhpdC4KKyAgICAgICAgICAgICAgICBtYnJjaCA9ICdcbiAgJyArICdcbiAgJy5qb2luKGdldF9icmFuY2gpCisgICAgICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdSZXZpc2lvbiAlcyB3YXMgZm91bmQgb24gbXVsdGlwbGUgYnJhbmNoZXM6ICVzXG5QbGVhc2UgcHJvdmlkZSB0aGUgY29ycmVjdCBicmFuY2ggaW4gdGhlIGRldnRvb2wgY29tbWFuZCB3aXRoICItLXNyY2JyYW5jaCIgb3IgIi1CIiBvcHRpb24uJyAlIChzcmNyZXYsIG1icmNoKSkKICAgICBlbHNlOgogICAgICAgICBfX3J1bignZ2l0IGNoZWNrb3V0IGRldnRvb2wtYmFzZSAtYiBkZXZ0b29sLSVzJyAlIG5ld3B2KQogCiAgICAgICAgIHRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29sJykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWQ1LCBzaGEyNTYgPSBzY3JpcHR1dGlscy5mZXRjaF91cmkodGluZm9pbC5jb25maWdfZGF0YSwgdXJpLCB0bXBkaXIsIHJldikKLSAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5GZXRjaEVycm9yIGFzIGU6CisgICAgICAgICAgICBjaGVja3N1bXMsIGZ0bXBkaXIgPSBzY3JpcHR1dGlscy5mZXRjaF91cmwodGluZm9pbCwgdXJpLCByZXYsIHRtcGRpciwgbG9nZ2VyLCBwcmVzZXJ2ZV90bXA9a2VlcF90ZW1wKQorICAgICAgICBleGNlcHQgc2NyaXB0dXRpbHMuRmV0Y2hVcmxGYWlsdXJlIGFzIGU6CiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoZSkKIAorICAgICAgICBpZiBmdG1wZGlyIGFuZCBrZWVwX3RlbXA6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2ggdGVtcCBkaXJlY3RvcnkgaXMgJXMnICUgZnRtcGRpcikKKworICAgICAgICBtZDUgPSBjaGVja3N1bXNbJ21kNXN1bSddCisgICAgICAgIHNoYTI1NiA9IGNoZWNrc3Vtc1snc2hhMjU2c3VtJ10KKwogICAgICAgICB0bXBzcmN0cmVlID0gX2dldF9zcmN0cmVlKHRtcGRpcikKICAgICAgICAgc3JjdHJlZSA9IG9zLnBhdGguYWJzcGF0aChzcmN0cmVlKQogCkBAIC0yNjksNyArMjkyLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodG1wc3JjdHJlZSkKIAotICAgIHJldHVybiAocmV2LCBtZDUsIHNoYTI1NikKKyAgICByZXR1cm4gKHJldiwgbWQ1LCBzaGEyNTYsIHNyY2JyYW5jaCkKIAogZGVmIF9jcmVhdGVfbmV3X3JlY2lwZShuZXdwdiwgbWQ1LCBzaGEyNTYsIHNyY3Jldiwgc3JjYnJhbmNoLCB3b3Jrc3BhY2UsIHRpbmZvaWwsIHJkKToKICAgICAiIiJDcmVhdGVzIHRoZSBuZXcgcmVjaXBlIHVuZGVyIHdvcmtzcGFjZSIiIgpAQCAtMjc3LDcgKzMwMCwxMCBAQAogICAgIGJwbiA9IHJkLmdldFZhcignQlBOJykKICAgICBwYXRoID0gb3MucGF0aC5qb2luKHdvcmtzcGFjZSwgJ3JlY2lwZXMnLCBicG4pCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKHBhdGgpCi0gICAgY29waWVkLCBfID0gb2UucmVjaXBldXRpbHMuY29weV9yZWNpcGVfZmlsZXMocmQsIHBhdGgpCisgICAgY29waWVkLCBfID0gb2UucmVjaXBldXRpbHMuY29weV9yZWNpcGVfZmlsZXMocmQsIHBhdGgsIGFsbF92YXJpYW50cz1UcnVlKQorICAgIGlmIG5vdCBjb3BpZWQ6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignSW50ZXJuYWwgZXJyb3IgLSBubyBmaWxlcyB3ZXJlIGNvcGllZCBmb3IgcmVjaXBlICVzJyAlIGJwbikKKyAgICBsb2dnZXIuZGVidWcoJ0NvcGllZCAlcyB0byAlcycgJSAoY29waWVkLCBwYXRoKSkKIAogICAgIG9sZHB2ID0gcmQuZ2V0VmFyKCdQVicpCiAgICAgaWYgbm90IG5ld3B2OgpAQCAtMzI5LDYgKzM1NSwyOSBAQAogCiAgICAgcmV0dXJuIGZ1bGxwYXRoLCBjb3BpZWQKIAorCitkZWYgX2NoZWNrX2dpdF9jb25maWcoKToKKyAgICBkZWYgZ2V0Y29uZmlnKG5hbWUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB2YWx1ZSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgY29uZmlnIC0tZ2xvYmFsICVzJyAlIG5hbWUpWzBdLnN0cmlwKCkKKyAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXhpdGNvZGUgPT0gMToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICB1c2VybmFtZSA9IGdldGNvbmZpZygndXNlci5uYW1lJykKKyAgICB1c2VyZW1haWwgPSBnZXRjb25maWcoJ3VzZXIuZW1haWwnKQorICAgIGNvbmZpZ2VyciA9IFtdCisgICAgaWYgbm90IHVzZXJuYW1lOgorICAgICAgICBjb25maWdlcnIuYXBwZW5kKCdQbGVhc2Ugc2V0IHlvdXIgbmFtZSB1c2luZzpcbiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUnKQorICAgIGlmIG5vdCB1c2VyZW1haWw6CisgICAgICAgIGNvbmZpZ2Vyci5hcHBlbmQoJ1BsZWFzZSBzZXQgeW91ciBlbWFpbCB1c2luZzpcbiAgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsJykKKyAgICBpZiBjb25maWdlcnI6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignWW91ciBnaXQgY29uZmlndXJhdGlvbiBpcyBpbmNvbXBsZXRlIHdoaWNoIHdpbGwgcHJldmVudCByZWJhc2VzIGZyb20gd29ya2luZzpcbicgKyAnXG4nLmpvaW4oY29uZmlnZXJyKSkKKworCiBkZWYgdXBncmFkZShhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAndXBncmFkZScgc3ViY29tbWFuZCIiIgogCkBAIC0zMzksNiArMzg4LDggQEAKICAgICBpZiBhcmdzLnNyY2JyYW5jaCBhbmQgbm90IGFyZ3Muc3JjcmV2OgogICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIklmIHlvdSBzcGVjaWZ5IC0tc3JjYnJhbmNoLy1CIHRoZW4geW91IG11c3QgdXNlIC0tc3JjcmV2Ly1TIHRvIHNwZWNpZnkgdGhlIHJldmlzaW9uIiAlIGFyZ3MucmVjaXBlbmFtZSkKIAorICAgIF9jaGVja19naXRfY29uZmlnKCkKKwogICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQogICAgIHRyeToKICAgICAgICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCBhcmdzLnJlY2lwZW5hbWUsIFRydWUpCkBAIC0zNjcsMTEgKzQxOCwxMSBAQAogCiAgICAgICAgIHJmID0gTm9uZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXYxID0gc3RhbmRhcmQuX2V4dHJhY3Rfc291cmNlKHNyY3RyZWUsIEZhbHNlLCAnZGV2dG9vbC1vcmlnJywgRmFsc2UsIHJkLCB0aW5mb2lsKQotICAgICAgICAgICAgcmV2MiwgbWQ1LCBzaGEyNTYgPSBfZXh0cmFjdF9uZXdfc291cmNlKGFyZ3MudmVyc2lvbiwgc3JjdHJlZSwgYXJncy5ub19wYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnNyY3JldiwgYXJncy5icmFuY2gsIGFyZ3Mua2VlcF90ZW1wLAorICAgICAgICAgICAgcmV2MSA9IHN0YW5kYXJkLl9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBGYWxzZSwgJ2RldnRvb2wtb3JpZycsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQorICAgICAgICAgICAgcmV2MiwgbWQ1LCBzaGEyNTYsIHNyY2JyYW5jaCA9IF9leHRyYWN0X25ld19zb3VyY2UoYXJncy52ZXJzaW9uLCBzcmN0cmVlLCBhcmdzLm5vX3BhdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc3JjcmV2LCBhcmdzLnNyY2JyYW5jaCwgYXJncy5icmFuY2gsIGFyZ3Mua2VlcF90ZW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbmZvaWwsIHJkKQotICAgICAgICAgICAgcmYsIGNvcGllZCA9IF9jcmVhdGVfbmV3X3JlY2lwZShhcmdzLnZlcnNpb24sIG1kNSwgc2hhMjU2LCBhcmdzLnNyY3JldiwgYXJncy5zcmNicmFuY2gsIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgdGluZm9pbCwgcmQpCisgICAgICAgICAgICByZiwgY29waWVkID0gX2NyZWF0ZV9uZXdfcmVjaXBlKGFyZ3MudmVyc2lvbiwgbWQ1LCBzaGEyNTYsIGFyZ3Muc3JjcmV2LCBzcmNicmFuY2gsIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgdGluZm9pbCwgcmQpCiAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkNtZEVycm9yIGFzIGU6CiAgICAgICAgICAgICBfdXBncmFkZV9lcnJvcihlLCByZiwgc3JjdHJlZSkKICAgICAgICAgZXhjZXB0IERldnRvb2xFcnJvciBhcyBlOgpAQCAtMzgxLDYgKzQzMiw5IEBACiAgICAgICAgIGFmID0gX3dyaXRlX2FwcGVuZChyZiwgc3JjdHJlZSwgYXJncy5zYW1lX2RpciwgYXJncy5ub19zYW1lX2RpciwgcmV2MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZCwgY29uZmlnLndvcmtzcGFjZV9wYXRoLCByZCkKICAgICAgICAgc3RhbmRhcmQuX2FkZF9tZDUoY29uZmlnLCBwbiwgYWYpCisKKyAgICAgICAgdXBkYXRlX3VubG9ja2Vkc2lncyhiYXNlcGF0aCwgd29ya3NwYWNlLCBbcG5dLCBhcmdzLmZpeGVkX3NldHVwKQorCiAgICAgICAgIGxvZ2dlci5pbmZvKCdVcGdyYWRlZCBzb3VyY2UgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCiAgICAgICAgIGxvZ2dlci5pbmZvKCdOZXcgcmVjaXBlIGlzICVzJyAlIHJmKQogICAgIGZpbmFsbHk6CkBAIC00MDYsNCArNDYwLDQgQEAKICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2FtZS1kaXInLCAnLXMnLCBoZWxwPSdCdWlsZCBpbiBzYW1lIGRpcmVjdG9yeSBhcyBzb3VyY2UnLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1uby1zYW1lLWRpcicsIGhlbHA9J0ZvcmNlIGJ1aWxkIGluIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5JywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBwYXJzZXJfdXBncmFkZS5hZGRfYXJndW1lbnQoJy0ta2VlcC10ZW1wJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nS2VlcCB0ZW1wb3JhcnkgZGlyZWN0b3J5IChmb3IgZGVidWdnaW5nKScpCi0gICAgcGFyc2VyX3VwZ3JhZGUuc2V0X2RlZmF1bHRzKGZ1bmM9dXBncmFkZSkKKyAgICBwYXJzZXJfdXBncmFkZS5zZXRfZGVmYXVsdHMoZnVuYz11cGdyYWRlLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXRpbGNtZHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91dGlsY21kcy5weQppbmRleCAwNDM3ZTY0Li5iNzQ1MTE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91dGlsY21kcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91dGlsY21kcy5weQpAQCAtMzAsMTUgKzMwLDEzIEBACiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdkZXZ0b29sJykKIAotCi1kZWYgZWRpdF9yZWNpcGUoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKLSAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2VkaXQtcmVjaXBlJyBzdWJjb21tYW5kIiIiCitkZWYgX2ZpbmRfcmVjaXBlX3BhdGgoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICBpZiBhcmdzLmFueV9yZWNpcGU6CiAgICAgICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGNvbmZpZ19vbmx5PUZhbHNlLCBiYXNlcGF0aD1iYXNlcGF0aCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCBhcmdzLnJlY2lwZW5hbWUsIFRydWUpCiAgICAgICAgICAgICBpZiBub3QgcmQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIkZhaWxlZCB0byBmaW5kIHNwZWNpZmllZCByZWNpcGUiKQogICAgICAgICAgICAgcmVjaXBlZmlsZSA9IHJkLmdldFZhcignRklMRScpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0aW5mb2lsLnNodXRkb3duKCkKQEAgLTQ4LDggKzQ2LDE5IEBACiAgICAgICAgIGlmIG5vdCByZWNpcGVmaWxlOgogICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJSZWNpcGUgZmlsZSBmb3IgJXMgaXMgbm90IHVuZGVyIHRoZSB3b3Jrc3BhY2UiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJlY2lwZW5hbWUpCisgICAgcmV0dXJuIHJlY2lwZWZpbGUKIAotICAgIHJldHVybiBzY3JpcHR1dGlscy5ydW5fZWRpdG9yKHJlY2lwZWZpbGUpCisKK2RlZiBmaW5kX3JlY2lwZShhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgorICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnZmluZC1yZWNpcGUnIHN1YmNvbW1hbmQiIiIKKyAgICByZWNpcGVmaWxlID0gX2ZpbmRfcmVjaXBlX3BhdGgoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKQorICAgIHByaW50KHJlY2lwZWZpbGUpCisgICAgcmV0dXJuIDAKKworCitkZWYgZWRpdF9yZWNpcGUoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKKyAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2VkaXQtcmVjaXBlJyBzdWJjb21tYW5kIiIiCisgICAgcmV0dXJuIHNjcmlwdHV0aWxzLnJ1bl9lZGl0b3IoX2ZpbmRfcmVjaXBlX3BhdGgoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKSwgbG9nZ2VyKQogCiAKIGRlZiBjb25maWd1cmVfaGVscChhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgpAQCAtMjIwLDYgKzIyOSwxNCBAQAogICAgIHBhcnNlcl9lZGl0X3JlY2lwZS5hZGRfYXJndW1lbnQoJy0tYW55LXJlY2lwZScsICctYScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0VkaXQgYW55IHJlY2lwZSwgbm90IGp1c3Qgd2hlcmUgdGhlIHJlY2lwZSBmaWxlIGl0c2VsZiBpcyBpbiB0aGUgd29ya3NwYWNlJykKICAgICBwYXJzZXJfZWRpdF9yZWNpcGUuc2V0X2RlZmF1bHRzKGZ1bmM9ZWRpdF9yZWNpcGUpCiAKKyAgICAjIEZpbmQtcmVjaXBlCisgICAgcGFyc2VyX2ZpbmRfcmVjaXBlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdmaW5kLXJlY2lwZScsIGhlbHA9J0ZpbmQgYSByZWNpcGUgZmlsZSBpbiB5b3VyIHdvcmtzcGFjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdCeSBkZWZhdWx0LCB0aGlzIHdpbGwgZmluZCBhIHJlY2lwZSBmaWxlIGluIHlvdXIgd29ya3NwYWNlOyB5b3UgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCB0aGUgLWEvLS1hbnktcmVjaXBlIG9wdGlvbi4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0nd29ya2luZycpCisgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J1JlY2lwZSB0byBmaW5kJykKKyAgICBwYXJzZXJfZmluZF9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLWFueS1yZWNpcGUnLCAnLWEnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGaW5kIGFueSByZWNpcGUsIG5vdCBqdXN0IHdoZXJlIHRoZSByZWNpcGUgZmlsZSBpdHNlbGYgaXMgaW4gdGhlIHdvcmtzcGFjZScpCisgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLnNldF9kZWZhdWx0cyhmdW5jPWZpbmRfcmVjaXBlKQorCiAgICAgIyBOT1RFOiBOZWVkZWQgdG8gb3ZlcnJpZGUgdGhlIHVzYWdlIHN0cmluZyBoZXJlIHNpbmNlIHRoZSBkZWZhdWx0CiAgICAgIyBnZXRzIHRoZSBvcmRlciB3cm9uZyAtIHJlY2lwZW5hbWUgbXVzdCBjb21lIGJlZm9yZSAtLWFyZwogICAgIHBhcnNlcl9jb25maWd1cmVfaGVscCA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignY29uZmlndXJlLWhlbHAnLCBoZWxwPSdHZXQgaGVscCBvbiBjb25maWd1cmUgc2NyaXB0IG9wdGlvbnMnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CmluZGV4IDRkZTUyZmMuLjViZjkzOWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKQEAgLTEsNiArMSw2IEBACiAjIFJlY2lwZSBjcmVhdGlvbiB0b29sIC0gY3JlYXRlIGNvbW1hbmQgcGx1Z2luCiAjCi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEludGVsIENvcnBvcmF0aW9uCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC0xNTYsMTAgKzE1NiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUmVjaXBlSGFuZGxlci5yZWNpcGViaW5tYXBbcHJvZ10gPSBwbgogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjaGVja2ZpbGVzKHBhdGgsIHNwZWNsaXN0LCByZWN1cnNpdmU9RmFsc2UpOgorICAgIGRlZiBjaGVja2ZpbGVzKHBhdGgsIHNwZWNsaXN0LCByZWN1cnNpdmU9RmFsc2UsIGV4Y2x1ZGVkaXJzPU5vbmUpOgogICAgICAgICByZXN1bHRzID0gW10KICAgICAgICAgaWYgcmVjdXJzaXZlOgotICAgICAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsocGF0aCk6CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoLCB0b3Bkb3duPVRydWUpOgorICAgICAgICAgICAgICAgIGlmIGV4Y2x1ZGVkaXJzOgorICAgICAgICAgICAgICAgICAgICBkaXJzWzpdID0gW2QgZm9yIGQgaW4gZGlycyBpZiBkIG5vdCBpbiBleGNsdWRlZGlyc10KICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGZvciBzcGVjIGluIHNwZWNsaXN0OgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZuLCBzcGVjKToKQEAgLTMzOSw5ICszNDEsMTQgQEAKICAgICAgICAgICAgICAgICBwbiA9IHJlcy5ncm91cCgxKS5zdHJpcCgpLnJlcGxhY2UoJ18nLCAnLScpCiAgICAgICAgICAgICAgICAgcHYgPSByZXMuZ3JvdXAoMikuc3RyaXAoKS5yZXBsYWNlKCdfJywgJy4nKQogCi0gICAgICAgIGlmIG5vdCBwbiBhbmQgbm90IHB2IGFuZCBwYXJzZXJlcy5zY2hlbWUgbm90IGluIFsnZ2l0JywgJ2dpdHNtJywgJ3N2bicsICdoZyddOgotICAgICAgICAgICAgc3JjZmlsZSA9IG9zLnBhdGguYmFzZW5hbWUocGFyc2VyZXMucGF0aC5yc3RyaXAoJy8nKSkKLSAgICAgICAgICAgIHBuLCBwdiA9IGRldGVybWluZV9mcm9tX2ZpbGVuYW1lKHNyY2ZpbGUpCisgICAgICAgIGlmIG5vdCBwbiBhbmQgbm90IHB2OgorICAgICAgICAgICAgaWYgcGFyc2VyZXMuc2NoZW1lIG5vdCBpbiBbJ2dpdCcsICdnaXRzbScsICdzdm4nLCAnaGcnXToKKyAgICAgICAgICAgICAgICBzcmNmaWxlID0gb3MucGF0aC5iYXNlbmFtZShwYXJzZXJlcy5wYXRoLnJzdHJpcCgnLycpKQorICAgICAgICAgICAgICAgIHBuLCBwdiA9IGRldGVybWluZV9mcm9tX2ZpbGVuYW1lKHNyY2ZpbGUpCisgICAgICAgICAgICBlbGlmIHBhcnNlcmVzLnNjaGVtZSBpbiBbJ2dpdCcsICdnaXRzbSddOgorICAgICAgICAgICAgICAgIHBuID0gb3MucGF0aC5iYXNlbmFtZShwYXJzZXJlcy5wYXRoLnJzdHJpcCgnLycpKS5sb3dlcigpLnJlcGxhY2UoJ18nLCAnLScpCisgICAgICAgICAgICAgICAgaWYgcG4uZW5kc3dpdGgoJy5naXQnKToKKyAgICAgICAgICAgICAgICAgICAgcG4gPSBwbls6LTRdCiAKICAgICBsb2dnZXIuZGVidWcoJ0RldGVybWluZWQgZnJvbSBzb3VyY2UgVVJMOiBuYW1lID0gIiVzIiwgdmVyc2lvbiA9ICIlcyInICUgKHBuLCBwdikpCiAgICAgcmV0dXJuIChwbiwgcHYpCkBAIC00MTIsMTEgKzQxOSwxNSBAQAogICAgICAgICBwa2dhcmNoID0gIiR7TUFDSElORV9BUkNIfSIKIAogICAgIGV4dHJhdmFsdWVzID0ge30KLSAgICBjaGVja3N1bXMgPSAoTm9uZSwgTm9uZSkKKyAgICBjaGVja3N1bXMgPSB7fQogICAgIHRlbXBzcmMgPSAnJwogICAgIHNvdXJjZSA9IGFyZ3Muc291cmNlCiAgICAgc3Jjc3ViZGlyID0gJycKICAgICBzcmNyZXYgPSAnJHtBVVRPUkVWfScKKyAgICBzcmNicmFuY2ggPSAnJworICAgIHNjaGVtZSA9ICcnCisgICAgc3RvcmVUYWdOYW1lID0gJycKKyAgICBwdl9zcmNwdiA9IEZhbHNlCiAKICAgICBpZiBvcy5wYXRoLmlzZmlsZShzb3VyY2UpOgogICAgICAgICBzb3VyY2UgPSAnZmlsZTovLyVzJyAlIG9zLnBhdGguYWJzcGF0aChzb3VyY2UpCkBAIC00MzIsMjQgKzQ0Myw2NSBAQAogICAgICAgICByZXZfcmUgPSByZS5jb21waWxlKCc7cmV2PShbXjtdKyknKQogICAgICAgICByZXMgPSByZXZfcmUuc2VhcmNoKHNyY3VyaSkKICAgICAgICAgaWYgcmVzOgorICAgICAgICAgICAgaWYgYXJncy5zcmNyZXY6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdyZXY9IHBhcmFtZXRlciBhbmQgLVMvLS1zcmNyZXYgb3B0aW9uIGNhbm5vdCBib3RoIGJlIHNwZWNpZmllZCAtIHVzZSBvbmUgb3IgdGhlIG90aGVyJykKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAgaWYgYXJncy5hdXRvcmV2OgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigncmV2PSBwYXJhbWV0ZXIgYW5kIC1hLy0tYXV0b3JldiBvcHRpb24gY2Fubm90IGJvdGggYmUgc3BlY2lmaWVkIC0gdXNlIG9uZSBvciB0aGUgb3RoZXInKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgICAgICBzcmNyZXYgPSByZXMuZ3JvdXAoMSkKICAgICAgICAgICAgIHNyY3VyaSA9IHJldl9yZS5zdWIoJycsIHNyY3VyaSkKLSAgICAgICAgdGVtcHNyYyA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLScpCi0gICAgICAgIHNyY3RyZWUgPSB0ZW1wc3JjCi0gICAgICAgIGQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgaWYgZmV0Y2h1cmkuc3RhcnRzd2l0aCgnbnBtOi8vJyk6Ci0gICAgICAgICAgICAjIENoZWNrIGlmIG5wbSBpcyBhdmFpbGFibGUKLSAgICAgICAgICAgIG5wbV9iaW5kaXIgPSBjaGVja19ucG0odGluZm9pbCwgYXJncy5kZXZ0b29sKQotICAgICAgICAgICAgZC5wcmVwZW5kVmFyKCdQQVRIJywgJyVzOicgJSBucG1fYmluZGlyKQotICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2hpbmcgJXMuLi4nICUgc3JjdXJpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGVja3N1bXMgPSBzY3JpcHR1dGlscy5mZXRjaF91cmkoZCwgZmV0Y2h1cmksIHNyY3RyZWUsIHNyY3JldikKLSAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGUpLnJzdHJpcCgpKQorICAgICAgICBlbGlmIGFyZ3Muc3JjcmV2OgorICAgICAgICAgICAgc3JjcmV2ID0gYXJncy5zcmNyZXYKKworICAgICAgICAjIENoZWNrIHdoZXRoZXIgdXNlcnMgcHJvdmlkZXMgYW55IGJyYW5jaCBpbmZvIGluIGZldGNodXJpLgorICAgICAgICAjIElmIHRydWUsIHdlIHdpbGwgc2tpcCBhbGwgYnJhbmNoIGNoZWNraW5nIHByb2Nlc3MgdG8gaG9ub3IgYWxsIHVzZXIncyBpbnB1dC4KKyAgICAgICAgc2NoZW1lLCBuZXR3b3JrLCBwYXRoLCB1c2VyLCBwYXNzd2QsIHBhcmFtcyA9IGJiLmZldGNoMi5kZWNvZGV1cmwoZmV0Y2h1cmkpCisgICAgICAgIHNyY2JyYW5jaCA9IHBhcmFtcy5nZXQoJ2JyYW5jaCcpCisgICAgICAgIGlmIGFyZ3Muc3JjYnJhbmNoOgorICAgICAgICAgICAgaWYgc3JjYnJhbmNoOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignYnJhbmNoPSBwYXJhbWV0ZXIgYW5kIC1CLy0tc3JjYnJhbmNoIG9wdGlvbiBjYW5ub3QgYm90aCBiZSBzcGVjaWZpZWQgLSB1c2Ugb25lIG9yIHRoZSBvdGhlcicpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgIHNyY2JyYW5jaCA9IGFyZ3Muc3JjYnJhbmNoCisgICAgICAgIG5vYnJhbmNoID0gcGFyYW1zLmdldCgnbm9icmFuY2gnKQorICAgICAgICBpZiBub2JyYW5jaCBhbmQgc3JjYnJhbmNoOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdub2JyYW5jaD0gY2Fubm90IGJlIHVzZWQgaWYgeW91IHNwZWNpZnkgYSBicmFuY2gnKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgdGFnID0gcGFyYW1zLmdldCgndGFnJykKKyAgICAgICAgaWYgbm90IHNyY2JyYW5jaCBhbmQgbm90IG5vYnJhbmNoIGFuZCBzcmNyZXYgIT0gJyR7QVVUT1JFVn0nOgorICAgICAgICAgICAgIyBBcHBlbmQgbm9icmFuY2g9MSBpbiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgICAgICAgICAgICAjIDEuIFVzZXIgZGlkIG5vdCBzZXQgJ2JyYW5jaD0nIGluIHNyY3VyaSwgYW5kCisgICAgICAgICAgICAjIDIuIFVzZXIgZGlkIG5vdCBzZXQgJ25vYnJhbmNoPTEnIGluIHNyY3VyaSwgYW5kCisgICAgICAgICAgICAjIDMuIFNvdXJjZSByZXZpc2lvbiBpcyBub3QgJyR7QVVUT1JFVn0nCisgICAgICAgICAgICBwYXJhbXNbJ25vYnJhbmNoJ10gPSAnMScKKyAgICAgICAgaWYgdGFnOgorICAgICAgICAgICAgIyBLZWVwIGEgY29weSBvZiB0YWcgYW5kIGFwcGVuZCBub2JyYW5jaD0xIHRoZW4gcmVtb3ZlIHRhZyBmcm9tIFVSTC4KKyAgICAgICAgICAgICMgQml0YmFrZSBmZXRjaGVyIHVuYWJsZSB0byBmZXRjaCB3aGVuIHtBVVRPUkVWfSBhbmQgdGFnIGlzIHNldCBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICAgICAgc3RvcmVUYWdOYW1lID0gcGFyYW1zWyd0YWcnXQorICAgICAgICAgICAgcGFyYW1zWydub2JyYW5jaCddID0gJzEnCisgICAgICAgICAgICBkZWwgcGFyYW1zWyd0YWcnXQorICAgICAgICBpZiBzY2hlbWUgPT0gJ25wbSc6CisgICAgICAgICAgICBwYXJhbXNbJ25vdmVyaWZ5J10gPSAnMScKKyAgICAgICAgZmV0Y2h1cmkgPSBiYi5mZXRjaDIuZW5jb2RldXJsKChzY2hlbWUsIG5ldHdvcmssIHBhdGgsIHVzZXIsIHBhc3N3ZCwgcGFyYW1zKSkKKworICAgICAgICB0bXBwYXJlbnQgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkFTRV9XT1JLRElSJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRtcHBhcmVudCkKKyAgICAgICAgdGVtcHNyYyA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLScsIGRpcj10bXBwYXJlbnQpCisgICAgICAgIHNyY3RyZWUgPSBvcy5wYXRoLmpvaW4odGVtcHNyYywgJ3NvdXJjZScpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY2hlY2tzdW1zLCBmdG1wZGlyID0gc2NyaXB0dXRpbHMuZmV0Y2hfdXJsKHRpbmZvaWwsIGZldGNodXJpLCBzcmNyZXYsIHNyY3RyZWUsIGxvZ2dlciwgcHJlc2VydmVfdG1wPWFyZ3Mua2VlcF90ZW1wKQorICAgICAgICBleGNlcHQgc2NyaXB0dXRpbHMuRmV0Y2hVcmxGYWlsdXJlIGFzIGU6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGUpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBmdG1wZGlyIGFuZCBhcmdzLmtlZXBfdGVtcDoKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdGZXRjaCB0ZW1wIGRpcmVjdG9yeSBpcyAlcycgJSBmdG1wZGlyKQorCiAgICAgICAgIGRpcmxpc3QgPSBvcy5saXN0ZGlyKHNyY3RyZWUpCi0gICAgICAgIGlmICdnaXQuaW5kaXJlY3Rpb25zeW1saW5rJyBpbiBkaXJsaXN0OgotICAgICAgICAgICAgZGlybGlzdC5yZW1vdmUoJ2dpdC5pbmRpcmVjdGlvbnN5bWxpbmsnKQorICAgICAgICBmaWx0ZXJvdXQgPSBbJ2dpdC5pbmRpcmVjdGlvbnN5bWxpbmsnXQorICAgICAgICBkaXJsaXN0ID0gW3ggZm9yIHggaW4gZGlybGlzdCBpZiB4IG5vdCBpbiBmaWx0ZXJvdXRdCisgICAgICAgIGxvZ2dlci5kZWJ1ZygnRGlyZWN0b3J5IGxpc3RpbmcgKGV4Y2x1ZGluZyBmaWx0ZXJlZCBvdXQpOlxuICAlcycgJSAnXG4gICcuam9pbihkaXJsaXN0KSkKICAgICAgICAgaWYgbGVuKGRpcmxpc3QpID09IDE6CiAgICAgICAgICAgICBzaW5nbGVpdGVtID0gb3MucGF0aC5qb2luKHNyY3RyZWUsIGRpcmxpc3RbMF0pCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNpbmdsZWl0ZW0pOgpAQCAtNDU3LDMwICs1MDksNzQgQEAKICAgICAgICAgICAgICAgICBzcmNzdWJkaXIgPSBkaXJsaXN0WzBdCiAgICAgICAgICAgICAgICAgc3JjdHJlZSA9IG9zLnBhdGguam9pbihzcmN0cmVlLCBzcmNzdWJkaXIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihzaW5nbGVpdGVtLCAncicsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgaWYgJzxodG1sJyBpbiBmLnJlYWQoMTAwKS5sb3dlcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdGZXRjaGluZyAiJXMiIHJldHVybmVkIGEgc2luZ2xlIEhUTUwgcGFnZSAtIGNoZWNrIHRoZSBVUkwgaXMgY29ycmVjdCBhbmQgZnVuY3Rpb25hbCcgJSBmZXRjaHVyaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICAgICAgY2hlY2tfc2luZ2xlX2ZpbGUoZGlybGlzdFswXSwgZmV0Y2h1cmkpCisgICAgICAgIGVsaWYgbGVuKGRpcmxpc3QpID09IDA6CisgICAgICAgICAgICBpZiAnLycgaW4gZmV0Y2h1cmk6CisgICAgICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4odGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0RMX0RJUicpLCBmZXRjaHVyaS5zcGxpdCgnLycpWy0xXSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrX3NpbmdsZV9maWxlKGZuLCBmZXRjaHVyaSkKKyAgICAgICAgICAgICMgSWYgd2UndmUgZ290IHRvIGhlcmUgdGhlbiB0aGVyZSdzIG5vIHNvdXJjZSBzbyB3ZSBtaWdodCBhcyB3ZWxsIGdpdmUgdXAKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcignVVJMICVzIHJlc3VsdGVkIGluIGFuIGVtcHR5IHNvdXJjZSB0cmVlJyAlIGZldGNodXJpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICAjIFdlIG5lZWQgdGhpcyBjaGVja2luZyBtZWNoYW5pc20gdG8gaW1wcm92ZSB0aGUgcmVjaXBlIGNyZWF0ZWQgYnkgcmVjaXBldG9vbCBhbmQgZGV2dG9vbAorICAgICAgICAjIGlzIGFibGUgdG8gcGFyc2UgYW5kIGJ1aWxkIGJ5IGJpdGJha2UuCisgICAgICAgICMgSWYgdGhlcmUgaXMgbm8gaW5wdXQgZm9yIGJyYW5jaCBuYW1lLCB0aGVuIGNoZWNrIGZvciBicmFuY2ggbmFtZSB3aXRoIFNSQ1JFViBwcm92aWRlZC4KKyAgICAgICAgaWYgbm90IHNyY2JyYW5jaCBhbmQgbm90IG5vYnJhbmNoIGFuZCBzcmNyZXYgYW5kIChzcmNyZXYgIT0gJyR7QVVUT1JFVn0nKSBhbmQgc2NoZW1lIGluIFsnZ2l0JywgJ2dpdHNtJ106CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY21kID0gJ2dpdCBicmFuY2ggLXIgLS1jb250YWlucycKKyAgICAgICAgICAgICAgICBjaGVja19icmFuY2gsIGNoZWNrX2JyYW5jaF9lcnIgPSBiYi5wcm9jZXNzLnJ1bignJXMgJXMnICUgKGNtZCwgc3JjcmV2KSwgY3dkPXNyY3RyZWUpCisgICAgICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihlcnIpKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICBnZXRfYnJhbmNoID0gW3guc3RyaXAoKSBmb3IgeCBpbiBjaGVja19icmFuY2guc3BsaXRsaW5lcygpXQorICAgICAgICAgICAgIyBSZW1vdmUgSEVBRCByZWZlcmVuY2UgcG9pbnQgYW5kIGRyb3AgcmVtb3RlIHByZWZpeAorICAgICAgICAgICAgZ2V0X2JyYW5jaCA9IFt4LnNwbGl0KCcvJywgMSlbMV0gZm9yIHggaW4gZ2V0X2JyYW5jaCBpZiBub3QgeC5zdGFydHN3aXRoKCdvcmlnaW4vSEVBRCcpXQorICAgICAgICAgICAgaWYgJ21hc3RlcicgaW4gZ2V0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICAjIElmIGl0IGlzIG1hc3Rlciwgd2UgZG8gbm90IG5lZWQgdG8gYXBwZW5kICdicmFuY2g9bWFzdGVyJyBhcyB0aGlzIGlzIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgIyBFdmVuIHdpdGggdGhlIGNhc2Ugd2hlcmUgZ2V0X2JyYW5jaCBoYXMgbXVsdGlwbGUgb2JqZWN0cywgaWYgJ21hc3RlcicgaXMgb25lCisgICAgICAgICAgICAgICAgIyBvZiB0aGVtLCB3ZSBzaG91bGQgZGVmYXVsdCB0YWtlIGZyb20gJ21hc3RlcicKKyAgICAgICAgICAgICAgICBzcmNicmFuY2ggPSAnJworICAgICAgICAgICAgZWxpZiBsZW4oZ2V0X2JyYW5jaCkgPT0gMToKKyAgICAgICAgICAgICAgICAjIElmICdtYXN0ZXInIGlzbid0IGluIGdldF9icmFuY2ggYW5kIGdldF9icmFuY2ggY29udGFpbnMgb25seSBPTkUgb2JqZWN0LCB0aGVuIHN0b3JlIHJlc3VsdCBpbnRvICdzcmNicmFuY2gnCisgICAgICAgICAgICAgICAgc3JjYnJhbmNoID0gZ2V0X2JyYW5jaFswXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIElmIGdldF9icmFuY2ggY29udGFpbnMgbW9yZSB0aGFuIG9uZSBvYmplY3RzLCB0aGVuIGRpc3BsYXkgZXJyb3IgYW5kIGV4aXQuCisgICAgICAgICAgICAgICAgbWJyY2ggPSAnXG4gICcgKyAnXG4gICcuam9pbihnZXRfYnJhbmNoKQorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignUmV2aXNpb24gJXMgd2FzIGZvdW5kIG9uIG11bHRpcGxlIGJyYW5jaGVzOiAlc1xuUGxlYXNlIHByb3ZpZGUgdGhlIGNvcnJlY3QgYnJhbmNoIHdpdGggLUIvLS1zcmNicmFuY2gnICUgKHNyY3JldiwgbWJyY2gpKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgIyBTaW5jZSB3ZSBtaWdodCBoYXZlIGEgdmFsdWUgaW4gc3JjYnJhbmNoLCB3ZSBuZWVkIHRvCisgICAgICAgICMgcmVjb250cnVjdCB0aGUgc3JjdXJpIHRvIGluY2x1ZGUgJ2JyYW5jaCcgaW4gcGFyYW1zLgorICAgICAgICBzY2hlbWUsIG5ldHdvcmssIHBhdGgsIHVzZXIsIHBhc3N3ZCwgcGFyYW1zID0gYmIuZmV0Y2gyLmRlY29kZXVybChzcmN1cmkpCisgICAgICAgIGlmIHNyY2JyYW5jaDoKKyAgICAgICAgICAgIHBhcmFtc1snYnJhbmNoJ10gPSBzcmNicmFuY2gKKworICAgICAgICBpZiBzdG9yZVRhZ05hbWUgYW5kIHNjaGVtZSBpbiBbJ2dpdCcsICdnaXRzbSddOgorICAgICAgICAgICAgIyBDaGVjayBzcmNyZXYgdXNpbmcgdGFnIGFuZCBjaGVjayB2YWxpZGl0eSBvZiB0aGUgdGFnCisgICAgICAgICAgICBjbWQgPSAoJ2dpdCByZXYtcGFyc2UgLS12ZXJpZnkgJXMnICUgKHN0b3JlVGFnTmFtZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY2hlY2tfdGFnLCBjaGVja190YWdfZXJyID0gYmIucHJvY2Vzcy5ydW4oJyVzJyAlIGNtZCwgY3dkPXNyY3RyZWUpCisgICAgICAgICAgICAgICAgc3JjcmV2ID0gY2hlY2tfdGFnLnNwbGl0KClbMF0KKyAgICAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGVycikpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJQb3NzaWJseSB3cm9uZyB0YWcgbmFtZSBpcyBwcm92aWRlZCIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgICMgRHJvcCB0YWcgZnJvbSBzcmN1cmkgYXMgaXQgd2lsbCBoYXZlIGNvbmZsaWN0cyB3aXRoIFNSQ1JFViBkdXJpbmcgcmVjaXBlIHBhcnNlLgorICAgICAgICAgICAgZGVsIHBhcmFtc1sndGFnJ10KKyAgICAgICAgc3JjdXJpID0gYmIuZmV0Y2gyLmVuY29kZXVybCgoc2NoZW1lLCBuZXR3b3JrLCBwYXRoLCB1c2VyLCBwYXNzd2QsIHBhcmFtcykpCisKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNyY3RyZWUsICcuZ2l0bW9kdWxlcycpKSBhbmQgc3JjdXJpLnN0YXJ0c3dpdGgoJ2dpdDovLycpOgogICAgICAgICAgICAgc3JjdXJpID0gJ2dpdHNtOi8vJyArIHNyY3VyaVs2Ol0KICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdGZXRjaGluZyBzdWJtb2R1bGVzLi4uJykKICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUnLCBjd2Q9c3JjdHJlZSkKIAogICAgICAgICBpZiBpc19wYWNrYWdlKGZldGNodXJpKToKLSAgICAgICAgICAgIHRtcGZkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbC0nKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBrZ2ZpbGUgPSBOb25lCisgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKKyAgICAgICAgICAgIHBrZ2ZpbGUgPSBiYi5mZXRjaDIubG9jYWxwYXRoKGZldGNodXJpLCBsb2NhbGRhdGEpCisgICAgICAgICAgICBpZiBwa2dmaWxlOgorICAgICAgICAgICAgICAgIHRtcGZkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbC0nKQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZmlsZXVyaSA9IGZldGNodXJpICsgJzt1bnBhY2s9MCcKLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0dXRpbHMuZmV0Y2hfdXJpKHRpbmZvaWwuY29uZmlnX2RhdGEsIGZpbGV1cmksIHRtcGZkaXIsIHNyY3JldikKLSAgICAgICAgICAgICAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsodG1wZmRpcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1NlY29uZCBmZXRjaCB0byBnZXQgbWV0YWRhdGEgZmFpbGVkOiAlcycgJSBzdHIoZSkucnN0cmlwKCkpCi0KLSAgICAgICAgICAgICAgICBpZiBwa2dmaWxlOgogICAgICAgICAgICAgICAgICAgICBpZiBwa2dmaWxlLmVuZHN3aXRoKCgnLmRlYicsICcuaXBrJykpOgogICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBfID0gYmIucHJvY2Vzcy5ydW4oJ2FyIHggJXMnICUgcGtnZmlsZSwgY3dkPXRtcGZkaXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIF8gPSBiYi5wcm9jZXNzLnJ1bigndGFyIHhmIGNvbnRyb2wudGFyLmd6JywgY3dkPXRtcGZkaXIpCkBAIC00OTAsOCArNTg2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgXyA9IGJiLnByb2Nlc3MucnVuKCdycG0gLXFwIC0teG1sICVzID4gcGtnaW5mby54bWwnICUgcGtnZmlsZSwgY3dkPXRtcGZkaXIpCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjb252ZXJ0X3JwbV94bWwob3MucGF0aC5qb2luKHRtcGZkaXIsICdwa2dpbmZvLnhtbCcpKQogICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXMudXBkYXRlKHZhbHVlcykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBmZGlyKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodG1wZmRpcikKICAgICBlbHNlOgogICAgICAgICAjIEFzc3VtZSB3ZSdyZSBwb2ludGluZyB0byBhbiBleGlzdGluZyBzb3VyY2UgdHJlZQogICAgICAgICBpZiBhcmdzLmV4dHJhY3RfdG86CkBAIC01MTksOSArNjE1LDkgQEAKIAogICAgIGlmIGFyZ3Muc3JjX3N1YmRpcjoKICAgICAgICAgc3Jjc3ViZGlyID0gb3MucGF0aC5qb2luKHNyY3N1YmRpciwgYXJncy5zcmNfc3ViZGlyKQotICAgICAgICBzcmN0cmVlX3VzZSA9IG9zLnBhdGguam9pbihzcmN0cmVlLCBhcmdzLnNyY19zdWJkaXIpCisgICAgICAgIHNyY3RyZWVfdXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmN0cmVlLCBhcmdzLnNyY19zdWJkaXIpKQogICAgIGVsc2U6Ci0gICAgICAgIHNyY3RyZWVfdXNlID0gc3JjdHJlZQorICAgICAgICBzcmN0cmVlX3VzZSA9IG9zLnBhdGguYWJzcGF0aChzcmN0cmVlKQogCiAgICAgaWYgYXJncy5vdXRmaWxlIGFuZCBvcy5wYXRoLmlzZGlyKGFyZ3Mub3V0ZmlsZSk6CiAgICAgICAgIG91dGZpbGUgPSBOb25lCkBAIC01NDMsOSArNjM5LDEwIEBACiAgICAgIyBXZSBuZWVkIGEgYmxhbmsgbGluZSBoZXJlIHNvIHRoYXQgcGF0Y2hfcmVjaXBlX2xpbmVzIGNhbiByZXdpbmQgYmVmb3JlIHRoZSBMSUNFTlNFIGNvbW1lbnRzCiAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnJykKIAotICAgIGhhbmRsZWQgPSBbXQotICAgIGxpY3ZhbHVlcyA9IGhhbmRsZV9saWNlbnNlX3ZhcnMoc3JjdHJlZV91c2UsIGxpbmVzX2JlZm9yZSwgaGFuZGxlZCwgZXh0cmF2YWx1ZXMsIHRpbmZvaWwuY29uZmlnX2RhdGEpCisgICAgIyBXZSdsbCBjb21lIGJhY2sgYW5kIHJlcGxhY2UgdGhpcyBsYXRlciBpbiBoYW5kbGVfbGljZW5zZV92YXJzKCkKKyAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjI0xJQ0VOU0VfUExBQ0VIT0xERVIjIycpCiAKKyAgICBoYW5kbGVkID0gW10KICAgICBjbGFzc2VzID0gW10KIAogICAgICMgRklYTUUgVGhpcyBpcyBraW5kIG9mIGEgaGFjaywgd2UgcHJvYmFibHkgb3VnaHQgdG8gYmUgdXNpbmcgYml0YmFrZSB0byBkbyB0aGlzCkBAIC01ODEsMzAgKzY3OCwzMSBAQAogICAgIGVsc2U6CiAgICAgICAgIHJlYWxwdiA9IE5vbmUKIAotICAgIGlmIHNyY3VyaSBhbmQgbm90IHJlYWxwdiBvciBub3QgcG46Ci0gICAgICAgIG5hbWVfcG4sIG5hbWVfcHYgPSBkZXRlcm1pbmVfZnJvbV91cmwoc3JjdXJpKQotICAgICAgICBpZiBuYW1lX3BuIGFuZCBub3QgcG46Ci0gICAgICAgICAgICBwbiA9IG5hbWVfcG4KLSAgICAgICAgaWYgbmFtZV9wdiBhbmQgbm90IHJlYWxwdjoKLSAgICAgICAgICAgIHJlYWxwdiA9IG5hbWVfcHYKLQogICAgIGlmIG5vdCBzcmN1cmk6CiAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTm8gaW5mb3JtYXRpb24gZm9yIFNSQ19VUkkgeWV0IChvbmx5IGFuIGV4dGVybmFsIHNvdXJjZSB0cmVlIHdhcyBzcGVjaWZpZWQpJykKICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdTUkNfVVJJID0gIiVzIicgJSBzcmN1cmkpCi0gICAgKG1kNXZhbHVlLCBzaGEyNTZ2YWx1ZSkgPSBjaGVja3N1bXMKLSAgICBpZiBtZDV2YWx1ZToKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnU1JDX1VSSVttZDVzdW1dID0gIiVzIicgJSBtZDV2YWx1ZSkKLSAgICBpZiBzaGEyNTZ2YWx1ZToKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnU1JDX1VSSVtzaGEyNTZzdW1dID0gIiVzIicgJSBzaGEyNTZ2YWx1ZSkKKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzb3J0ZWQoY2hlY2tzdW1zLml0ZW1zKCkpOgorICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdTUkNfVVJJWyVzXSA9ICIlcyInICUgKGtleSwgdmFsdWUpKQogICAgIGlmIHNyY3VyaSBhbmQgc3VwcG9ydHNfc3JjcmV2KHNyY3VyaSk6CiAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJycpCiAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTW9kaWZ5IHRoZXNlIGFzIGRlc2lyZWQnKQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdQViA9ICIlcytnaXQke1NSQ1BWfSInICUgKHJlYWxwdiBvciAnMS4wJykpCisgICAgICAgICMgTm90ZTogd2UgaGF2ZSBjb2RlIHRvIHJlcGxhY2UgcmVhbHB2IGZ1cnRoZXIgZG93biBpZiBpdCBnZXRzIHNldCB0byBzb21lIG90aGVyIHZhbHVlCisgICAgICAgIHNjaGVtZSwgXywgXywgXywgXywgXyA9IGJiLmZldGNoMi5kZWNvZGV1cmwoc3JjdXJpKQorICAgICAgICBpZiBzY2hlbWUgaW4gWydnaXQnLCAnZ2l0c20nXToKKyAgICAgICAgICAgIHNyY3B2cHJlZml4ID0gJ2dpdCcKKyAgICAgICAgZWxpZiBzY2hlbWUgPT0gJ3N2bic6CisgICAgICAgICAgICBzcmNwdnByZWZpeCA9ICdzdm5yJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3JjcHZwcmVmaXggPSBzY2hlbWUKKyAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnUFYgPSAiJXMrJXMke1NSQ1BWfSInICUgKHJlYWxwdiBvciAnMS4wJywgc3JjcHZwcmVmaXgpKQorICAgICAgICBwdl9zcmNwdiA9IFRydWUKICAgICAgICAgaWYgbm90IGFyZ3MuYXV0b3JldiBhbmQgc3JjcmV2ID09ICcke0FVVE9SRVZ9JzoKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzcmN0cmVlLCAnLmdpdCcpKToKICAgICAgICAgICAgICAgICAoc3Rkb3V0LCBfKSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9c3JjdHJlZSkKICAgICAgICAgICAgIHNyY3JldiA9IHN0ZG91dC5yc3RyaXAoKQogICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdTUkNSRVYgPSAiJXMiJyAlIHNyY3JldikKKyAgICBpZiBhcmdzLnByb3ZpZGVzOgorICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdQUk9WSURFUyA9ICIlcyInICUgYXJncy5wcm92aWRlcykKICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcnKQogCiAgICAgaWYgc3Jjc3ViZGlyIGFuZCBub3QgYXJncy5iaW5hcnk6CkBAIC02NzcsNiArNzc1LDE1IEBACiAgICAgICAgICAgICBpZiAnXycgaW4gcG46CiAgICAgICAgICAgICAgICAgcG4gPSBwbi5yZXBsYWNlKCdfJywgJy0nKQogCisgICAgaWYgc3JjdXJpIGFuZCBub3QgcmVhbHB2IG9yIG5vdCBwbjoKKyAgICAgICAgbmFtZV9wbiwgbmFtZV9wdiA9IGRldGVybWluZV9mcm9tX3VybChzcmN1cmkpCisgICAgICAgIGlmIG5hbWVfcG4gYW5kIG5vdCBwbjoKKyAgICAgICAgICAgIHBuID0gbmFtZV9wbgorICAgICAgICBpZiBuYW1lX3B2IGFuZCBub3QgcmVhbHB2OgorICAgICAgICAgICAgcmVhbHB2ID0gbmFtZV9wdgorCisgICAgbGljdmFsdWVzID0gaGFuZGxlX2xpY2Vuc2VfdmFycyhzcmN0cmVlX3VzZSwgbGluZXNfYmVmb3JlLCBoYW5kbGVkLCBleHRyYXZhbHVlcywgdGluZm9pbC5jb25maWdfZGF0YSkKKwogICAgIGlmIG5vdCBvdXRmaWxlOgogICAgICAgICBpZiBub3QgcG46CiAgICAgICAgICAgICBsb2dfZXJyb3JfY29uZCgnVW5hYmxlIHRvIGRldGVybWluZSBzaG9ydCBwcm9ncmFtIG5hbWUgZnJvbSBzb3VyY2UgdHJlZSAtIHBsZWFzZSBzcGVjaWZ5IG5hbWUgd2l0aCAtTi8tLW5hbWUgb3Igb3V0cHV0IGZpbGUgbmFtZSB3aXRoIC1vLy0tb3V0ZmlsZScsIGFyZ3MuZGV2dG9vbCkKQEAgLTcyNiwxMCArODMzLDExIEBACiAgICAgICAgICAgICAgICAgc2tpcGJsYW5rID0gVHJ1ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdTUkNfVVJJID0gJyk6Ci0gICAgICAgICAgICBpZiByZWFscHY6CisgICAgICAgICAgICBpZiByZWFscHYgYW5kIG5vdCBwdl9zcmNwdjoKICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKHJlYWxwdiwgJyR7UFZ9JykKICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BWID0gJyk6CiAgICAgICAgICAgICBpZiByZWFscHY6CisgICAgICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBQViB2YWx1ZQogICAgICAgICAgICAgICAgIGxpbmUgPSByZS5zdWIoJyJbXitdKlwrJywgJyIlcysnICUgcmVhbHB2LCBsaW5lKQogICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKGxpbmUpCiAKQEAgLTc2OCw5ICs4NzYsNiBAQAogICAgIG91dGxpbmVzLmV4dGVuZChsaW5lc19hZnRlcikKIAogICAgIGlmIGV4dHJhdmFsdWVzOgotICAgICAgICBpZiAnTElDRU5TRScgaW4gZXh0cmF2YWx1ZXMgYW5kIG5vdCBsaWN2YWx1ZXM6Ci0gICAgICAgICAgICAjIERvbid0IGJsb3cgYXdheSAnQ0xPU0VEJyB2YWx1ZSB0aGF0IGNvbW1lbnRzIHNheSB3ZSBzZXQKLSAgICAgICAgICAgIGRlbCBleHRyYXZhbHVlc1snTElDRU5TRSddCiAgICAgICAgIF8sIG91dGxpbmVzID0gb2UucmVjaXBldXRpbHMucGF0Y2hfcmVjaXBlX2xpbmVzKG91dGxpbmVzLCBleHRyYXZhbHVlcywgdHJhaWxpbmdfbmV3bGluZT1GYWxzZSkKIAogICAgIGlmIGFyZ3MuZXh0cmFjdF90bzoKQEAgLTgwNyw1NCArOTEyLDEwMSBAQAogCiAgICAgcmV0dXJuIDAKIAorZGVmIGNoZWNrX3NpbmdsZV9maWxlKGZuLCBmZXRjaHVyaSk6CisgICAgIiIiRGV0ZXJtaW5lIGlmIGEgc2luZ2xlIGRvd25sb2FkZWQgZmlsZSBpcyBzb21ldGhpbmcgd2UgY2FuJ3QgaGFuZGxlIiIiCisgICAgd2l0aCBvcGVuKGZuLCAncicsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykgYXMgZjoKKyAgICAgICAgaWYgJzxodG1sJyBpbiBmLnJlYWQoMTAwKS5sb3dlcigpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdGZXRjaGluZyAiJXMiIHJldHVybmVkIGEgc2luZ2xlIEhUTUwgcGFnZSAtIGNoZWNrIHRoZSBVUkwgaXMgY29ycmVjdCBhbmQgZnVuY3Rpb25hbCcgJSBmZXRjaHVyaSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKK2RlZiBzcGxpdF92YWx1ZSh2YWx1ZSk6CisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgcmV0dXJuIHZhbHVlLnNwbGl0KCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gdmFsdWUKKwogZGVmIGhhbmRsZV9saWNlbnNlX3ZhcnMoc3JjdHJlZSwgbGluZXNfYmVmb3JlLCBoYW5kbGVkLCBleHRyYXZhbHVlcywgZCk6CisgICAgbGljaGFuZGxlZCA9IFt4IGZvciB4IGluIGhhbmRsZWQgaWYgeFswXSA9PSAnbGljZW5zZSddCisgICAgaWYgbGljaGFuZGxlZDoKKyAgICAgICAgIyBTb21lb25lIGVsc2UgaGFzIGFscmVhZHkgaGFuZGxlZCB0aGUgbGljZW5zZSB2YXJzLCBqdXN0IHJldHVybiB0aGVpciB2YWx1ZQorICAgICAgICByZXR1cm4gbGljaGFuZGxlZFswXVsxXQorCiAgICAgbGljdmFsdWVzID0gZ3Vlc3NfbGljZW5zZShzcmN0cmVlLCBkKQorICAgIGxpY2Vuc2VzID0gW10KICAgICBsaWNfZmlsZXNfY2hrc3VtID0gW10KICAgICBsaWNfdW5rbm93biA9IFtdCisgICAgbGluZXMgPSBbXQogICAgIGlmIGxpY3ZhbHVlczoKLSAgICAgICAgbGljZW5zZXMgPSBbXQogICAgICAgICBmb3IgbGljdmFsdWUgaW4gbGljdmFsdWVzOgogICAgICAgICAgICAgaWYgbm90IGxpY3ZhbHVlWzBdIGluIGxpY2Vuc2VzOgogICAgICAgICAgICAgICAgIGxpY2Vuc2VzLmFwcGVuZChsaWN2YWx1ZVswXSkKICAgICAgICAgICAgIGxpY19maWxlc19jaGtzdW0uYXBwZW5kKCdmaWxlOi8vJXM7bWQ1PSVzJyAlIChsaWN2YWx1ZVsxXSwgbGljdmFsdWVbMl0pKQogICAgICAgICAgICAgaWYgbGljdmFsdWVbMF0gPT0gJ1Vua25vd24nOgogICAgICAgICAgICAgICAgIGxpY191bmtub3duLmFwcGVuZChsaWN2YWx1ZVsxXSkKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIyBXQVJOSU5HOiB0aGUgZm9sbG93aW5nIExJQ0VOU0UgYW5kIExJQ19GSUxFU19DSEtTVU0gdmFsdWVzIGFyZSBiZXN0IGd1ZXNzZXMgLSBpdCBpcycpCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgeW91ciByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgdmFsdWVzIGFyZSBjb21wbGV0ZSBhbmQgY29ycmVjdC4nKQotICAgICAgICBpZiBsZW4obGljdmFsdWVzKSA+IDE6Ci0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjJykKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTk9URTogbXVsdGlwbGUgbGljZW5zZXMgaGF2ZSBiZWVuIGRldGVjdGVkOyB0aGV5IGhhdmUgYmVlbiBzZXBhcmF0ZWQgd2l0aCAmJykKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgaW4gdGhlIExJQ0VOU0UgdmFsdWUgZm9yIG5vdyBzaW5jZSBpdCBpcyBhIHJlYXNvbmFibGUgYXNzdW1wdGlvbiB0aGF0IGFsbCcpCi0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIG9mIHRoZSBsaWNlbnNlcyBhcHBseS4gSWYgaW5zdGVhZCB0aGVyZSBpcyBhIGNob2ljZSBiZXR3ZWVuIHRoZSBtdWx0aXBsZScpCi0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIGxpY2Vuc2VzIHRoZW4geW91IHNob3VsZCBjaGFuZ2UgdGhlIHZhbHVlIHRvIHNlcGFyYXRlIHRoZSBsaWNlbnNlcyB3aXRoIHwnKQotICAgICAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIyBpbnN0ZWFkIG9mICYuIElmIHRoZXJlIGlzIGFueSBkb3VidCwgY2hlY2sgdGhlIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uJykKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgdG8gZGV0ZXJtaW5lIHdoaWNoIHNpdHVhdGlvbiBpcyBhcHBsaWNhYmxlLicpCiAgICAgICAgIGlmIGxpY191bmtub3duOgotICAgICAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIycpCi0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIFRoZSBmb2xsb3dpbmcgbGljZW5zZSBmaWxlcyB3ZXJlIG5vdCBhYmxlIHRvIGJlIGlkZW50aWZpZWQgYW5kIGFyZScpCi0gICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIHJlcHJlc2VudGVkIGFzICJVbmtub3duIiBiZWxvdywgeW91IHdpbGwgbmVlZCB0byBjaGVjayB0aGVtIHlvdXJzZWxmOicpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyMnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcjIFRoZSBmb2xsb3dpbmcgbGljZW5zZSBmaWxlcyB3ZXJlIG5vdCBhYmxlIHRvIGJlIGlkZW50aWZpZWQgYW5kIGFyZScpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyMgcmVwcmVzZW50ZWQgYXMgIlVua25vd24iIGJlbG93LCB5b3Ugd2lsbCBuZWVkIHRvIGNoZWNrIHRoZW0geW91cnNlbGY6JykKICAgICAgICAgICAgIGZvciBsaWNmaWxlIGluIGxpY191bmtub3duOgotICAgICAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgICAlcycgJSBsaWNmaWxlKQotICAgICAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIycpCi0gICAgZWxzZToKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIyBVbmFibGUgdG8gZmluZCBhbnkgZmlsZXMgdGhhdCBsb29rZWQgbGlrZSBsaWNlbnNlIHN0YXRlbWVudHMuIENoZWNrIHRoZSBhY2NvbXBhbnlpbmcnKQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjIGRvY3VtZW50YXRpb24gYW5kIHNvdXJjZSBoZWFkZXJzIGFuZCBzZXQgTElDRU5TRSBhbmQgTElDX0ZJTEVTX0NIS1NVTSBhY2NvcmRpbmdseS4nKQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCcjJykKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnIyBOT1RFOiBMSUNFTlNFIGlzIGJlaW5nIHNldCB0byAiQ0xPU0VEIiB0byBhbGxvdyB5b3UgdG8gYXQgbGVhc3Qgc3RhcnQgYnVpbGRpbmcgLSBpZicpCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgdGhpcyBpcyBub3QgYWNjdXJhdGUgd2l0aCByZXNwZWN0IHRvIHRoZSBsaWNlbnNpbmcgb2YgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IChpdCcpCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgd2lsbCBub3QgYmUgaW4gbW9zdCBjYXNlcykgeW91IG11c3Qgc3BlY2lmeSB0aGUgY29ycmVjdCB2YWx1ZSBiZWZvcmUgdXNpbmcgdGhpcycpCi0gICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgcmVjaXBlIGZvciBhbnl0aGluZyBvdGhlciB0aGFuIGluaXRpYWwgdGVzdGluZy9kZXZlbG9wbWVudCEnKQotICAgICAgICBsaWNlbnNlcyA9IFsnQ0xPU0VEJ10KLSAgICBwa2dfbGljZW5zZSA9IGV4dHJhdmFsdWVzLnBvcCgnTElDRU5TRScsIE5vbmUpCi0gICAgaWYgcGtnX2xpY2Vuc2U6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcjICAgJXMnICUgbGljZmlsZSkKKworICAgIGV4dHJhX2xpY2Vuc2UgPSBzcGxpdF92YWx1ZShleHRyYXZhbHVlcy5wb3AoJ0xJQ0VOU0UnLCBbXSkpCisgICAgaWYgJyYnIGluIGV4dHJhX2xpY2Vuc2U6CisgICAgICAgIGV4dHJhX2xpY2Vuc2UucmVtb3ZlKCcmJykKKyAgICBpZiBleHRyYV9saWNlbnNlOgogICAgICAgICBpZiBsaWNlbnNlcyA9PSBbJ1Vua25vd24nXToKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTk9URTogVGhlIGZvbGxvd2luZyBMSUNFTlNFIHZhbHVlIHdhcyBkZXRlcm1pbmVkIGZyb20gdGhlIG9yaWdpbmFsIHBhY2thZ2UgbWV0YWRhdGEnKQotICAgICAgICAgICAgbGljZW5zZXMgPSBbcGtnX2xpY2Vuc2VdCisgICAgICAgICAgICBsaWNlbnNlcyA9IGV4dHJhX2xpY2Vuc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQoJyMgTk9URTogT3JpZ2luYWwgcGFja2FnZSBtZXRhZGF0YSBpbmRpY2F0ZXMgbGljZW5zZSBpczogJXMnICUgcGtnX2xpY2Vuc2UpCi0gICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnTElDRU5TRSA9ICIlcyInICUgJyAmICcuam9pbihsaWNlbnNlcykpCi0gICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnTElDX0ZJTEVTX0NIS1NVTSA9ICIlcyInICUgJyBcXFxuICAgICAgICAgICAgICAgICAgICAnLmpvaW4obGljX2ZpbGVzX2Noa3N1bSkpCi0gICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnJykKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGV4dHJhX2xpY2Vuc2U6CisgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gbGljZW5zZXM6CisgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzLmFwcGVuZChpdGVtKQorICAgIGV4dHJhX2xpY19maWxlc19jaGtzdW0gPSBzcGxpdF92YWx1ZShleHRyYXZhbHVlcy5wb3AoJ0xJQ19GSUxFU19DSEtTVU0nLCBbXSkpCisgICAgZm9yIGl0ZW0gaW4gZXh0cmFfbGljX2ZpbGVzX2Noa3N1bToKKyAgICAgICAgaWYgaXRlbSBub3QgaW4gbGljX2ZpbGVzX2Noa3N1bToKKyAgICAgICAgICAgIGxpY19maWxlc19jaGtzdW0uYXBwZW5kKGl0ZW0pCisKKyAgICBpZiBsaWNfZmlsZXNfY2hrc3VtOgorICAgICAgICAjIFdlIGFyZSBnb2luZyB0byBzZXQgdGhlIHZhcnMsIHNvIHByZXBlbmQgdGhlIHN0YW5kYXJkIGRpc2NsYWltZXIKKyAgICAgICAgbGluZXMuaW5zZXJ0KDAsICcjIFdBUk5JTkc6IHRoZSBmb2xsb3dpbmcgTElDRU5TRSBhbmQgTElDX0ZJTEVTX0NIS1NVTSB2YWx1ZXMgYXJlIGJlc3QgZ3Vlc3NlcyAtIGl0IGlzJykKKyAgICAgICAgbGluZXMuaW5zZXJ0KDEsICcjIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gdmVyaWZ5IHRoYXQgdGhlIHZhbHVlcyBhcmUgY29tcGxldGUgYW5kIGNvcnJlY3QuJykKKyAgICBlbHNlOgorICAgICAgICAjIFdpdGhvdXQgTElDX0ZJTEVTX0NIS1NVTSB3ZSBzZXQgTElDRU5TRSA9ICJDTE9TRUQiIHRvIGFsbG93IHRoZQorICAgICAgICAjIHVzZXIgdG8gZ2V0IHN0YXJ0ZWQgZWFzaWx5CisgICAgICAgIGxpbmVzLmFwcGVuZCgnIyBVbmFibGUgdG8gZmluZCBhbnkgZmlsZXMgdGhhdCBsb29rZWQgbGlrZSBsaWNlbnNlIHN0YXRlbWVudHMuIENoZWNrIHRoZSBhY2NvbXBhbnlpbmcnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgZG9jdW1lbnRhdGlvbiBhbmQgc291cmNlIGhlYWRlcnMgYW5kIHNldCBMSUNFTlNFIGFuZCBMSUNfRklMRVNfQ0hLU1VNIGFjY29yZGluZ2x5LicpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnIycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnIyBOT1RFOiBMSUNFTlNFIGlzIGJlaW5nIHNldCB0byAiQ0xPU0VEIiB0byBhbGxvdyB5b3UgdG8gYXQgbGVhc3Qgc3RhcnQgYnVpbGRpbmcgLSBpZicpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnIyB0aGlzIGlzIG5vdCBhY2N1cmF0ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGxpY2Vuc2luZyBvZiB0aGUgc29mdHdhcmUgYmVpbmcgYnVpbHQgKGl0JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjIHdpbGwgbm90IGJlIGluIG1vc3QgY2FzZXMpIHlvdSBtdXN0IHNwZWNpZnkgdGhlIGNvcnJlY3QgdmFsdWUgYmVmb3JlIHVzaW5nIHRoaXMnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgcmVjaXBlIGZvciBhbnl0aGluZyBvdGhlciB0aGFuIGluaXRpYWwgdGVzdGluZy9kZXZlbG9wbWVudCEnKQorICAgICAgICBsaWNlbnNlcyA9IFsnQ0xPU0VEJ10KKworICAgIGlmIGV4dHJhX2xpY2Vuc2UgYW5kIHNvcnRlZChsaWNlbnNlcykgIT0gc29ydGVkKGV4dHJhX2xpY2Vuc2UpOgorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgTk9URTogT3JpZ2luYWwgcGFja2FnZSAvIHNvdXJjZSBtZXRhZGF0YSBpbmRpY2F0ZXMgbGljZW5zZSBpczogJXMnICUgJyAmICcuam9pbihleHRyYV9saWNlbnNlKSkKKworICAgIGlmIGxlbihsaWNlbnNlcykgPiAxOgorICAgICAgICBsaW5lcy5hcHBlbmQoJyMnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgTk9URTogbXVsdGlwbGUgbGljZW5zZXMgaGF2ZSBiZWVuIGRldGVjdGVkOyB0aGV5IGhhdmUgYmVlbiBzZXBhcmF0ZWQgd2l0aCAmJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjIGluIHRoZSBMSUNFTlNFIHZhbHVlIGZvciBub3cgc2luY2UgaXQgaXMgYSByZWFzb25hYmxlIGFzc3VtcHRpb24gdGhhdCBhbGwnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgb2YgdGhlIGxpY2Vuc2VzIGFwcGx5LiBJZiBpbnN0ZWFkIHRoZXJlIGlzIGEgY2hvaWNlIGJldHdlZW4gdGhlIG11bHRpcGxlJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjIGxpY2Vuc2VzIHRoZW4geW91IHNob3VsZCBjaGFuZ2UgdGhlIHZhbHVlIHRvIHNlcGFyYXRlIHRoZSBsaWNlbnNlcyB3aXRoIHwnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyMgaW5zdGVhZCBvZiAmLiBJZiB0aGVyZSBpcyBhbnkgZG91YnQsIGNoZWNrIHRoZSBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbicpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnIyB0byBkZXRlcm1pbmUgd2hpY2ggc2l0dWF0aW9uIGlzIGFwcGxpY2FibGUuJykKKworICAgIGxpbmVzLmFwcGVuZCgnTElDRU5TRSA9ICIlcyInICUgJyAmICcuam9pbihsaWNlbnNlcykpCisgICAgbGluZXMuYXBwZW5kKCdMSUNfRklMRVNfQ0hLU1VNID0gIiVzIicgJSAnIFxcXG4gICAgICAgICAgICAgICAgICAgICcuam9pbihsaWNfZmlsZXNfY2hrc3VtKSkKKyAgICBsaW5lcy5hcHBlbmQoJycpCisKKyAgICAjIFJlcGxhY2UgdGhlIHBsYWNlaG9sZGVyIHNvIHdlIGdldCB0aGUgdmFsdWVzIGluIHRoZSByaWdodCBwbGFjZSBpbiB0aGUgcmVjaXBlIGZpbGUKKyAgICB0cnk6CisgICAgICAgIHBvcyA9IGxpbmVzX2JlZm9yZS5pbmRleCgnIyNMSUNFTlNFX1BMQUNFSE9MREVSIyMnKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICBwb3MgPSAtMQorICAgIGlmIHBvcyA9PSAtMToKKyAgICAgICAgbGluZXNfYmVmb3JlLmV4dGVuZChsaW5lcykKKyAgICBlbHNlOgorICAgICAgICBsaW5lc19iZWZvcmVbcG9zOnBvcysxXSA9IGxpbmVzCisKICAgICBoYW5kbGVkLmFwcGVuZCgoJ2xpY2Vuc2UnLCBsaWN2YWx1ZXMpKQogICAgIHJldHVybiBsaWN2YWx1ZXMKIApAQCAtOTUxLDYgKzExMDMsMTAgQEAKICAgICBjcnVuY2hlZF9tZDVzdW1zWycxZGFlYmQ5NDkxZDFlODQyNjkwMGI0ZmE1YTQyMjgxNCddID0gJ0xHUEx2Mi4xJwogICAgICMgaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi9tYXN0ZXIvQ09QWUlORy5MR1BMdjMKICAgICBjcnVuY2hlZF9tZDVzdW1zWycyZWJmYjNiYjQ5YjlhNDhhMDc1Y2MxNDI1ZTdmNDEyOSddID0gJ0xHUEx2MycKKyAgICAjIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lY2xpcHNlL21vc3F1aXR0by92MS40LjE0L2VwbC12MTAKKyAgICBjcnVuY2hlZF9tZDVzdW1zWydlZmUyY2I5YTM1ODI2OTkyYjlkZjY4MjI0ZTNjMjYyOCddID0gJ0VQTC0xLjAnCisgICAgIyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZWNsaXBzZS9tb3NxdWl0dG8vdjEuNC4xNC9lZGwtdjEwCisgICAgY3J1bmNoZWRfbWQ1c3Vtc1snMGE5Yzc4YzBhMzk4ZDFiYmNlNGExNjY3NTdkNjAzODcnXSA9ICdFREwtMS4wJwogICAgIGxpY3RleHQgPSBbXQogICAgIHdpdGggb3BlbihsaWNmaWxlLCAncicsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykgYXMgZjoKICAgICAgICAgZm9yIGxpbmUgaW4gZjoKQEAgLTk4Myw3ICsxMTM5LDcgQEAKICAgICBtZDVzdW1zID0gZ2V0X2xpY2Vuc2VfbWQ1c3VtcyhkKQogCiAgICAgbGljZW5zZXMgPSBbXQotICAgIGxpY3NwZWNzID0gWycqTElDRU5bQ1NdRSonLCAnQ09QWUlORyonLCAnKltMbF1pY2Vuc2UqJywgJ0xFR0FMKicsICdbTGxdZWdhbConLCAnKkdQTConLCAnUkVBRE1FLmxpYyonLCAnQ09QWVJJR0hUKicsICdbQ2Ndb3B5cmlnaHQqJ10KKyAgICBsaWNzcGVjcyA9IFsnKkxJQ0VOW0NTXUUqJywgJ0NPUFlJTkcqJywgJypbTGxdaWNlbnNlKicsICdMRUdBTConLCAnW0xsXWVnYWwqJywgJypHUEwqJywgJ1JFQURNRS5saWMqJywgJ0NPUFlSSUdIVConLCAnW0NjXW9weXJpZ2h0KicsICdlW2RwXWwtdjEwJ10KICAgICBsaWNmaWxlcyA9IFtdCiAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjdHJlZSk6CiAgICAgICAgIGZvciBmbiBpbiBmaWxlczoKQEAgLTExNDIsMjggKzEyOTgsMTMgQEAKICAgICByZXR1cm4gdmFsdWVzCiAKIAotZGVmIGNoZWNrX25wbSh0aW5mb2lsLCBkZWJ1Z29ubHk9RmFsc2UpOgotICAgIHRyeToKLSAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZSgnbm9kZWpzLW5hdGl2ZScpCi0gICAgZXhjZXB0IGJiLnByb3ZpZGVycy5Ob1Byb3ZpZGVyOgotICAgICAgICAjIFdlIHN0aWxsIGNvbmRpdGlvbmFsbHkgc2hvdyB0aGUgbWVzc2FnZSBhbmQgZXhpdCB3aXRoIHRoZSBzcGVjaWFsCi0gICAgICAgICMgcmV0dXJuIGNvZGUsIG90aGVyd2lzZSB3ZSBjYW4ndCBzaG93IHRoZSBwcm9wZXIgbWVzc2FnZSBmb3IgZVNESwotICAgICAgICAjIHVzZXJzCi0gICAgICAgIGxvZ19lcnJvcl9jb25kKCdub2RlanMtbmF0aXZlIGlzIHJlcXVpcmVkIGZvciBucG0gYnV0IGlzIG5vdCBhdmFpbGFibGUgLSB5b3Ugd2lsbCBsaWtlbHkgbmVlZCB0byBhZGQgYSBsYXllciB0aGF0IHByb3ZpZGVzIG5vZGVqcycsIGRlYnVnb25seSkKLSAgICAgICAgc3lzLmV4aXQoMTQpCi0gICAgYmluZGlyID0gcmQuZ2V0VmFyKCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnKQotICAgIG5wbXBhdGggPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAnbnBtJykKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobnBtcGF0aCk6Ci0gICAgICAgIGxvZ19lcnJvcl9jb25kKCducG0gcmVxdWlyZWQgdG8gcHJvY2VzcyBzcGVjaWZpZWQgc291cmNlLCBidXQgbnBtIGlzIG5vdCBhdmFpbGFibGUgLSB5b3UgbmVlZCB0byBydW4gYml0YmFrZSAtYyBhZGR0b19yZWNpcGVfc3lzcm9vdCBub2RlanMtbmF0aXZlIGZpcnN0JywgZGVidWdvbmx5KQotICAgICAgICBzeXMuZXhpdCgxNCkKLSAgICByZXR1cm4gYmluZGlyCi0KIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzdWJwYXJzZXJzKToKICAgICBwYXJzZXJfY3JlYXRlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdjcmVhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQ3JlYXRlIGEgbmV3IHJlY2lwZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nQ3JlYXRlcyBhIG5ldyByZWNpcGUgZnJvbSBhIHNvdXJjZSB0cmVlJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnc291cmNlJywgaGVscD0nUGF0aCBvciBVUkwgdG8gc291cmNlJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXRmaWxlJywgaGVscD0nU3BlY2lmeSBmaWxlbmFtZSBmb3IgcmVjaXBlIHRvIGNyZWF0ZScpCisgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy1wJywgJy0tcHJvdmlkZXMnLCBoZWxwPSdTcGVjaWZ5IGFuIGFsaWFzIGZvciB0aGUgaXRlbSBwcm92aWRlZCBieSB0aGUgcmVjaXBlJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tYWNoaW5lJywgaGVscD0nTWFrZSByZWNpcGUgbWFjaGluZS1zcGVjaWZpYyBhcyBvcHBvc2VkIHRvIGFyY2hpdGVjdHVyZS1zcGVjaWZpYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy14JywgJy0tZXh0cmFjdC10bycsIG1ldGF2YXI9J0VYVFJBQ1RQQVRIJywgaGVscD0nQXNzdW1pbmcgc291cmNlIGlzIGEgVVJMLCBmZXRjaCBpdCBhbmQgZXh0cmFjdCBpdCB0byB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBhcyAlKG1ldGF2YXIpcycpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy1OJywgJy0tbmFtZScsIGhlbHA9J05hbWUgdG8gdXNlIHdpdGhpbiByZWNpcGUgKFBOKScpCkBAIC0xMTcxLDEyICsxMzEyLDEzIEBACiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy1iJywgJy0tYmluYXJ5JywgaGVscD0nVHJlYXQgdGhlIHNvdXJjZSB0cmVlIGFzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgdmVyYmF0aW0gKG5vIGNvbXBpbGF0aW9uLCBzYW1lIGRpcmVjdG9yeSBzdHJ1Y3R1cmUpJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1hbHNvLW5hdGl2ZScsIGhlbHA9J0Fsc28gYWRkIG5hdGl2ZSB2YXJpYW50IChpLmUuIHN1cHBvcnQgYnVpbGRpbmcgcmVjaXBlIGZvciB0aGUgYnVpbGQgaG9zdCBhcyB3ZWxsIGFzIHRoZSB0YXJnZXQgbWFjaGluZSknLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLXNyYy1zdWJkaXInLCBoZWxwPSdTcGVjaWZ5IHN1YmRpcmVjdG9yeSB3aXRoaW4gc291cmNlIHRyZWUgdG8gdXNlJywgbWV0YXZhcj0nU1VCRElSJykKLSAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1hdXRvcmV2JywgaGVscD0nV2hlbiBmZXRjaGluZyBmcm9tIGEgZ2l0IHJlcG9zaXRvcnksIHNldCBTUkNSRVYgaW4gdGhlIHJlY2lwZSB0byBhIGZsb2F0aW5nIHJldmlzaW9uIGluc3RlYWQgb2YgZml4ZWQnLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIGdyb3VwID0gcGFyc2VyX2NyZWF0ZS5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1hJywgJy0tYXV0b3JldicsIGhlbHA9J1doZW4gZmV0Y2hpbmcgZnJvbSBhIGdpdCByZXBvc2l0b3J5LCBzZXQgU1JDUkVWIGluIHRoZSByZWNpcGUgdG8gYSBmbG9hdGluZyByZXZpc2lvbiBpbnN0ZWFkIG9mIGZpeGVkJywgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3JjcmV2JywgaGVscD0nU291cmNlIHJldmlzaW9uIHRvIGZldGNoIGlmIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IGxhdGVzdCknKQorICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctQicsICctLXNyY2JyYW5jaCcsIGhlbHA9J0JyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCAoZGVmYXVsdCBtYXN0ZXIpJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1mZXRjaC1kZXYnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcycpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tZGV2dG9vbCcsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCi0gICAgIyBGSVhNRSBJIHJlYWxseSBoYXRlIGhhdmluZyB0byBzZXQgcGFyc2VyZWNpcGVzIGZvciB0aGlzLCBidXQgZ2l2ZW4gd2UgbWF5IG5lZWQKLSAgICAjIHRvIGNhbGwgaW50byBucG0gKGFuZCB3ZSBkb24ndCBrbm93IGluIGFkdmFuY2UgaWYgd2Ugd2lsbCBvciBub3QpIGFuZCBpbiBvcmRlcgotICAgICMgdG8gZG8gc28gd2UgbmVlZCB0byBrbm93IG5wbSdzIHJlY2lwZSBzeXNyb290IHBhdGgsIHRoZXJlJ3Mgbm90IG11Y2ggYWx0ZXJuYXRpdmUKLSAgICBwYXJzZXJfY3JlYXRlLnNldF9kZWZhdWx0cyhmdW5jPWNyZWF0ZV9yZWNpcGUsIHBhcnNlcmVjaXBlcz1UcnVlKQorICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLW1pcnJvcnMnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdFbmFibGUgUFJFTUlSUk9SUyBhbmQgTUlSUk9SUyBmb3Igc291cmNlIHRyZWUgZmV0Y2hpbmcgKGRpc2FibGVkIGJ5IGRlZmF1bHQpLicpCisgICAgcGFyc2VyX2NyZWF0ZS5zZXRfZGVmYXVsdHMoZnVuYz1jcmVhdGVfcmVjaXBlKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkKaW5kZXggZTkxNGU1My4uNDc0M2M3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5cy5weQpAQCAtODYzLDYgKzg2MywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihmb3VuZHZhbHVlcykgPT0gbGVuKHZhbHVlbWFwKToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICMgRHJvcCB2YWx1ZXMgY29udGFpbmluZyB1bmV4cGFuZGVkIFJQTSBtYWNyb3MKKyAgICAgICAgZm9yIGsgaW4gbGlzdChmb3VuZHZhbHVlcy5rZXlzKCkpOgorICAgICAgICAgICAgaWYgJyUnIGluIGZvdW5kdmFsdWVzW2tdOgorICAgICAgICAgICAgICAgIGRlbCBmb3VuZHZhbHVlc1trXQogICAgICAgICBpZiAnUFYnIGluIGZvdW5kdmFsdWVzOgogICAgICAgICAgICAgaWYgbm90IHZhbGlkYXRlX3B2KGZvdW5kdmFsdWVzWydQViddKToKICAgICAgICAgICAgICAgICBkZWwgZm91bmR2YWx1ZXNbJ1BWJ10KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5c19weXRob24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXNfcHl0aG9uLnB5CmluZGV4IGVjNTQ0OWIuLjViZDJhYTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5c19weXRob24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzX3B5dGhvbi5weQpAQCAtMzU2LDYgKzM1Niw4IEBACiAgICAgICAgICMgTmFpdmUgbWFwcGluZyBvZiBzZXR1cCgpIGFyZ3VtZW50cyB0byBQS0ctSU5GTyBmaWVsZCBuYW1lcwogICAgICAgICBmb3IgZCBpbiBbaW5mbywgbm9uX2xpdGVyYWxzXToKICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGxpc3QoZC5pdGVtcygpKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBuZXdfa2V5ID0gX21hcChrZXkpCiAgICAgICAgICAgICAgICAgaWYgbmV3X2tleSAhPSBrZXk6CiAgICAgICAgICAgICAgICAgICAgIGRlbCBkW2tleV0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9rbW9kLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkKaW5kZXggN2NmMTg4ZC4uNDU2OWI1MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkKQEAgLTQwLDcgKzQwLDcgQEAKIAogICAgICAgICBtYWtlZmlsZXMgPSBbXQogCi0gICAgICAgIGZpbGVzID0gUmVjaXBlSGFuZGxlci5jaGVja2ZpbGVzKHNyY3RyZWUsIFsnKi5jJywgJyouaCddLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICAgICAgZmlsZXMgPSBSZWNpcGVIYW5kbGVyLmNoZWNrZmlsZXMoc3JjdHJlZSwgWycqLmMnLCAnKi5oJ10sIHJlY3Vyc2l2ZT1UcnVlLCBleGNsdWRlZGlycz1bJ2NvbnRyaWInLCAndGVzdCcsICdleGFtcGxlcyddKQogICAgICAgICBpZiBmaWxlczoKICAgICAgICAgICAgIGZvciBjZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAjIExvb2sgaW4gc2FtZSBkaXIgb3IgcGFyZW50IGZvciBNYWtlZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkKaW5kZXggY2I4ZjMzOC4uYWU1Mzk3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CkBAIC0yMSw3ICsyMSw3IEBACiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBqc29uCi1mcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBSZWNpcGVIYW5kbGVyLCBzcGxpdF9wa2dfbGljZW5zZXMsIGhhbmRsZV9saWNlbnNlX3ZhcnMsIGNoZWNrX25wbQorZnJvbSByZWNpcGV0b29sLmNyZWF0ZSBpbXBvcnQgUmVjaXBlSGFuZGxlciwgc3BsaXRfcGtnX2xpY2Vuc2VzLCBoYW5kbGVfbGljZW5zZV92YXJzCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdyZWNpcGV0b29sJykKIApAQCAtMzYsNiArMzYsMjcgQEAKIGNsYXNzIE5wbVJlY2lwZUhhbmRsZXIoUmVjaXBlSGFuZGxlcik6CiAgICAgbG9ja2Rvd25wYXRoID0gTm9uZQogCisgICAgZGVmIF9lbnN1cmVfbnBtKHNlbGYsIGZpeGVkX3NldHVwPUZhbHNlKToKKyAgICAgICAgaWYgbm90IHRpbmZvaWwucmVjaXBlc19wYXJzZWQ6CisgICAgICAgICAgICB0aW5mb2lsLnBhcnNlX3JlY2lwZXMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKCdub2RlanMtbmF0aXZlJykKKyAgICAgICAgZXhjZXB0IGJiLnByb3ZpZGVycy5Ob1Byb3ZpZGVyOgorICAgICAgICAgICAgaWYgZml4ZWRfc2V0dXA6CisgICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBTREsnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1zZyA9ICdub2RlanMtbmF0aXZlIGlzIHJlcXVpcmVkIGZvciBucG0gYnV0IGlzIG5vdCBhdmFpbGFibGUgLSB5b3Ugd2lsbCBsaWtlbHkgbmVlZCB0byBhZGQgYSBsYXllciB0aGF0IHByb3ZpZGVzIG5vZGVqcycKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBiaW5kaXIgPSByZC5nZXRWYXIoJ1NUQUdJTkdfQklORElSX05BVElWRScpCisgICAgICAgIG5wbXBhdGggPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAnbnBtJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5wbXBhdGgpOgorICAgICAgICAgICAgdGluZm9pbC5idWlsZF90YXJnZXRzKCdub2RlanMtbmF0aXZlJywgJ2FkZHRvX3JlY2lwZV9zeXNyb290JykKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhucG1wYXRoKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ25wbSByZXF1aXJlZCB0byBwcm9jZXNzIHNwZWNpZmllZCBzb3VyY2UsIGJ1dCBub2RlanMtbmF0aXZlIGRpZCBub3Qgc2VlbSB0byBwb3B1bGF0ZSBpdCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGJpbmRpcgorCiAgICAgZGVmIF9oYW5kbGVfbGljZW5zZShzZWxmLCBkYXRhKToKICAgICAgICAgJycnCiAgICAgICAgIEhhbmRsZSB0aGUgbGljZW5zZSB2YWx1ZSBmcm9tIGFuIG5wbSBwYWNrYWdlLmpzb24gZmlsZQpAQCAtMTA5LDcgKzEzMCw2IEBACiAgICAgICAgICAgICBpZiB2YXJuYW1lID09ICdTUkNfVVJJJzoKICAgICAgICAgICAgICAgICBpZiBub3Qgb3JpZ3ZhbHVlLnN0YXJ0c3dpdGgoJ25wbTovLycpOgogICAgICAgICAgICAgICAgICAgICBzcmNfdXJpID0gb3JpZ3ZhbHVlLnNwbGl0KCkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIGRlcGxpc3QgPSB7fQogICAgICAgICAgICAgICAgICAgICBmb3IgZGVwLCBkZXB2ZXIgaW4gb3B0ZGVwcy5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgZGVwZGF0YSA9IHNlbGYuZ2V0X25wbV9kYXRhKGRlcCwgZGVwdmVyLCBkKQpAQCAtMTIzLDE0ICsxNDMsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGRhdGEgPSBzZWxmLmdldF9ucG1fZGF0YShkZXAsIGRlcHZlciwgZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxpc3RbZGVwXSA9IGRlcGRhdGEKIAorICAgICAgICAgICAgICAgICAgICBleHRyYV91cmxzID0gW10KICAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCwgZGVwZGF0YSBpbiBkZXBsaXN0Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZGF0YS5nZXQoJ3ZlcnNpb24nLCBOb25lKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmVyc2lvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9JXM7dmVyc2lvbj0lcztzdWJkaXI9bm9kZV9tb2R1bGVzLyVzJyAlIChkZXAsIHZlcnNpb24sIGRlcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHR1dGlscy5mZXRjaF91cmkoZCwgdXJsLCBzcmN0cmVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY191cmkuYXBwZW5kKHVybCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBpZiBjaGFuZ2VkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX3VybHMuYXBwZW5kKHVybCkKKyAgICAgICAgICAgICAgICAgICAgaWYgZXh0cmFfdXJsczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHV0aWxzLmZldGNoX3VybCh0aW5mb2lsLCAnICcuam9pbihleHRyYV91cmxzKSwgTm9uZSwgc3JjdHJlZSwgbG9nZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3VyaS5leHRlbmQoZXh0cmFfdXJscykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcmNfdXJpLCBOb25lLCAtMSwgVHJ1ZQogICAgICAgICAgICAgcmV0dXJuIG9yaWd2YWx1ZSwgTm9uZSwgMCwgVHJ1ZQogICAgICAgICB1cGRhdGVkLCBuZXdsaW5lcyA9IGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEobGluZXNfYmVmb3JlLCBbJ1NSQ19VUkknXSwgdmFyZnVuYykKQEAgLTE0Myw0MCArMTY0LDkgQEAKICAgICAgICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKGxpbmUpCiAgICAgICAgIHJldHVybiB1cGRhdGVkCiAKLSAgICBkZWYgX3JlcGxhY2VfbGljZW5zZV92YXJzKHNlbGYsIHNyY3RyZWUsIGxpbmVzX2JlZm9yZSwgaGFuZGxlZCwgZXh0cmF2YWx1ZXMsIGQpOgotICAgICAgICBmb3IgaXRlbSBpbiBoYW5kbGVkOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCB0dXBsZSk6Ci0gICAgICAgICAgICAgICAgaWYgaXRlbVswXSA9PSAnbGljZW5zZSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBpdGVtCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgY2FsbGVkdmFycyA9IFtdCi0gICAgICAgIGRlZiB2YXJmdW5jKHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKLSAgICAgICAgICAgIGlmIHZhcm5hbWUgaW4gWydMSUNFTlNFJywgJ0xJQ19GSUxFU19DSEtTVU0nXToKLSAgICAgICAgICAgICAgICBmb3IgaSwgZSBpbiBlbnVtZXJhdGUocmV2ZXJzZWQobmV3bGluZXMpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGUuc3RhcnRzd2l0aCgnIycpOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCA9IGkKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHN0b3AgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmVzLnBvcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCAtPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGNhbGxlZHZhcnMuYXBwZW5kKHZhcm5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGNhbGxlZHZhcnMpID4gMToKLSAgICAgICAgICAgICAgICAgICAgIyBUaGUgc2Vjb25kIHRpbWUgYXJvdW5kLCBwdXQgdGhlIG5ldyBsaWNlbnNlIHRleHQgaW4KLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cG9zID0gbGVuKG5ld2xpbmVzKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbGljZW5zZV92YXJzKHNyY3RyZWUsIG5ld2xpbmVzLCBoYW5kbGVkLCBleHRyYXZhbHVlcywgZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgMCwgVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIG9yaWd2YWx1ZSwgTm9uZSwgMCwgVHJ1ZQotICAgICAgICB1cGRhdGVkLCBuZXdsaW5lcyA9IGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEobGluZXNfYmVmb3JlLCBbJ0xJQ0VOU0UnLCAnTElDX0ZJTEVTX0NIS1NVTSddLCB2YXJmdW5jKQotICAgICAgICBpZiB1cGRhdGVkOgotICAgICAgICAgICAgZGVsIGxpbmVzX2JlZm9yZVs6XQotICAgICAgICAgICAgbGluZXNfYmVmb3JlLmV4dGVuZChuZXdsaW5lcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRGlkIG5vdCBmaW5kIGxpY2Vuc2UgdmFyaWFibGVzJykKLQogICAgIGRlZiBwcm9jZXNzKHNlbGYsIHNyY3RyZWUsIGNsYXNzZXMsIGxpbmVzX2JlZm9yZSwgbGluZXNfYWZ0ZXIsIGhhbmRsZWQsIGV4dHJhdmFsdWVzKToKICAgICAgICAgaW1wb3J0IGJiLnV0aWxzCi0gICAgICAgIGltcG9ydCBvZQorICAgICAgICBpbXBvcnQgb2UucGFja2FnZQogICAgICAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogCiAgICAgICAgIGlmICdidWlsZHN5c3RlbScgaW4gaGFuZGxlZDoKQEAgLTE4OSw3ICsxNzksOSBAQAogICAgICAgICBmaWxlcyA9IFJlY2lwZUhhbmRsZXIuY2hlY2tmaWxlcyhzcmN0cmVlLCBbJ3BhY2thZ2UuanNvbiddKQogICAgICAgICBpZiBmaWxlczoKICAgICAgICAgICAgIGQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgICAgIG5wbV9iaW5kaXIgPSBjaGVja19ucG0odGluZm9pbCwgc2VsZi5fZGV2dG9vbCkKKyAgICAgICAgICAgIG5wbV9iaW5kaXIgPSBzZWxmLl9lbnN1cmVfbnBtKCkKKyAgICAgICAgICAgIGlmIG5vdCBucG1fYmluZGlyOgorICAgICAgICAgICAgICAgIHN5cy5leGl0KDE0KQogICAgICAgICAgICAgZC5wcmVwZW5kVmFyKCdQQVRIJywgJyVzOicgJSBucG1fYmluZGlyKQogCiAgICAgICAgICAgICBkYXRhID0gcmVhZF9wYWNrYWdlX2pzb24oZmlsZXNbMF0pCkBAIC0yMDUsMTAgKzE5Nyw3IEBACiAKICAgICAgICAgICAgICAgICBmZXRjaGRldiA9IGV4dHJhdmFsdWVzWydmZXRjaGRldiddIG9yIE5vbmUKICAgICAgICAgICAgICAgICBkZXBzLCBvcHRkZXBzLCBkZXZkZXBzID0gc2VsZi5nZXRfbnBtX3BhY2thZ2VfZGVwZW5kZW5jaWVzKGRhdGEsIGZldGNoZGV2KQotICAgICAgICAgICAgICAgIHVwZGF0ZWQgPSBzZWxmLl9oYW5kbGVfZGVwZW5kZW5jaWVzKGQsIGRlcHMsIG9wdGRlcHMsIGRldmRlcHMsIGxpbmVzX2JlZm9yZSwgc3JjdHJlZSkKLSAgICAgICAgICAgICAgICBpZiB1cGRhdGVkOgotICAgICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcmVkbyB0aGUgbGljZW5zZSBzdHVmZgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXBsYWNlX2xpY2Vuc2VfdmFycyhzcmN0cmVlLCBsaW5lc19iZWZvcmUsIGhhbmRsZWQsIGV4dHJhdmFsdWVzLCBkKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9kZXBlbmRlbmNpZXMoZCwgZGVwcywgb3B0ZGVwcywgZGV2ZGVwcywgbGluZXNfYmVmb3JlLCBzcmN0cmVlKQogCiAgICAgICAgICAgICAgICAgIyBTaHJpbmt3cmFwCiAgICAgICAgICAgICAgICAgbG9jYWxmaWxlc2RpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLW5wbScpCkBAIC0yMTksMTEgKzIwOCwxNCBAQAogCiAgICAgICAgICAgICAgICAgIyBTcGxpdCBlYWNoIG5wbSBtb2R1bGUgb3V0IHRvIGlzIG93biBwYWNrYWdlCiAgICAgICAgICAgICAgICAgbnBtcGFja2FnZXMgPSBvZS5wYWNrYWdlLm5wbV9zcGxpdF9wYWNrYWdlX2RpcnMoc3JjdHJlZSkKKyAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBOb25lCiAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaGFuZGxlZDoKICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCB0dXBsZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtWzBdID09ICdsaWNlbnNlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBpdGVtWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBub3QgbGljdmFsdWVzOgorICAgICAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBoYW5kbGVfbGljZW5zZV92YXJzKHNyY3RyZWUsIGxpbmVzX2JlZm9yZSwgaGFuZGxlZCwgZXh0cmF2YWx1ZXMsIGQpCiAgICAgICAgICAgICAgICAgaWYgbGljdmFsdWVzOgogICAgICAgICAgICAgICAgICAgICAjIEF1Z21lbnQgdGhlIGxpY2Vuc2UgbGlzdCB3aXRoIGluZm9ybWF0aW9uIHdlIGhhdmUgaW4gdGhlIHBhY2thZ2VzCiAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzID0ge30KQEAgLTI0NCwxMyArMjM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYWxsX2xpY2Vuc2VzID0gbGlzdChzZXQoW2l0ZW0ucmVwbGFjZSgnXycsICcgJykgZm9yIHBrZ2xpY2Vuc2UgaW4gcGtnbGljZW5zZXMudmFsdWVzKCkgZm9yIGl0ZW0gaW4gcGtnbGljZW5zZV0pKQogICAgICAgICAgICAgICAgICAgICBpZiAnJicgaW4gYWxsX2xpY2Vuc2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgYWxsX2xpY2Vuc2VzLnJlbW92ZSgnJicpCi0gICAgICAgICAgICAgICAgICAgICMgR28gYmFjayBhbmQgdXBkYXRlIHRoZSBMSUNFTlNFIHZhbHVlIHNpbmNlIHdlIGhhdmUgYSBiaXQgbW9yZQotICAgICAgICAgICAgICAgICAgICAjIGluZm9ybWF0aW9uIHRoYW4gd2hlbiB0aGF0IHdhcyB3cml0dGVuIG91dCAoYW5kIHdlIGtub3cgYWxsIGFwcGx5Ci0gICAgICAgICAgICAgICAgICAgICMgdnMuIHRoZXJlIGJlaW5nIGEgY2hvaWNlLCBzbyB3ZSBjYW4gam9pbiB0aGVtIHdpdGggJikKLSAgICAgICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzX2JlZm9yZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0xJQ0VOU0UgPSAnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc19iZWZvcmVbaV0gPSAnTElDRU5TRSA9ICIlcyInICUgJyAmICcuam9pbihhbGxfbGljZW5zZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXNbJ0xJQ0VOU0UnXSA9ICcgJiAnLmpvaW4oYWxsX2xpY2Vuc2VzKQogCiAgICAgICAgICAgICAgICAgIyBOZWVkIHRvIG1vdmUgUyBzZXR0aW5nIGFmdGVyIGluaGVyaXQgbnBtCiAgICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzX2JlZm9yZSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9uZXdhcHBlbmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9uZXdhcHBlbmQucHkKaW5kZXggMGI2Mzc1OS4uZGVjY2U4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvbmV3YXBwZW5kLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL25ld2FwcGVuZC5weQpAQCAtNzQsNyArNzQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgIGlmIGFyZ3MuZWRpdDoKLSAgICAgICAgcmV0dXJuIHNjcmlwdHV0aWxzLnJ1bl9lZGl0b3IoW2FwcGVuZF9wYXRoLCByZWNpcGVfcGF0aF0pCisgICAgICAgIHJldHVybiBzY3JpcHR1dGlscy5ydW5fZWRpdG9yKFthcHBlbmRfcGF0aCwgcmVjaXBlX3BhdGhdLCBsb2dnZXIpCiAgICAgZWxzZToKICAgICAgICAgcHJpbnQoYXBwZW5kX3BhdGgpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQppbmRleCA5MmI2MDFjLi44NWIxYzk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CkBAIC0yMyw2ICsyMyw4IEBACiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RyaW5nCiAKIGRlZiBsb2dnZXJfY3JlYXRlKG5hbWUsIHN0cmVhbT1Ob25lKToKICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihuYW1lKQpAQCAtNzgsNTIgKzgwLDEzOSBAQAogICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCByZXBhY2sgLWEnLCBjd2Q9cmVwb2RpcikKICAgICAgICAgICAgIG9zLnJlbW92ZShhbHRlcm5hdGVzZmlsZSkKIAotZGVmIGZldGNoX3VyaShkLCB1cmksIGRlc3RkaXIsIHNyY3Jldj1Ob25lKToKLSAgICAiIiJGZXRjaCBhIFVSSSB0byBhIGxvY2FsIGRpcmVjdG9yeSIiIgorZGVmIF9nZXRfdGVtcF9yZWNpcGVfZGlyKGQpOgorICAgICMgVGhpcyBpcyBhIGxpdHRsZSBiaXQgaGFja3kgYnV0IHdlIG5lZWQgdG8gZmluZCBhIHBsYWNlIHdoZXJlIHdlIGNhbiBwdXQKKyAgICAjIHRoZSByZWNpcGUgc28gdGhhdCBiaXRiYWtlIGNhbiBmaW5kIGl0LiBXZSdyZSBnb2luZyB0byBkZWxldGUgaXQgYXQgdGhlCisgICAgIyBlbmQgc28gaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHdoZXJlIHdlIHB1dCBpdC4KKyAgICBiYmZpbGVzID0gZC5nZXRWYXIoJ0JCRklMRVMnKS5zcGxpdCgpCisgICAgZmV0Y2hyZWNpcGVkaXIgPSBOb25lCisgICAgZm9yIHB0aCBpbiBiYmZpbGVzOgorICAgICAgICBpZiBwdGguZW5kc3dpdGgoJy5iYicpOgorICAgICAgICAgICAgcHRoZGlyID0gb3MucGF0aC5kaXJuYW1lKHB0aCkKKyAgICAgICAgICAgIGlmIG9zLmFjY2Vzcyhvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHB0aGRpcikpLCBvcy5XX09LKToKKyAgICAgICAgICAgICAgICBmZXRjaHJlY2lwZWRpciA9IHB0aGRpci5yZXBsYWNlKCcqJywgJ3JlY2lwZXRvb2wnKQorICAgICAgICAgICAgICAgIGlmIHB0aGRpci5lbmRzd2l0aCgnd29ya3NwYWNlL3JlY2lwZXMvKicpOgorICAgICAgICAgICAgICAgICAgICAjIFByZWZlciB0aGUgd29ya3NwYWNlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIGZldGNocmVjaXBlZGlyCisKK2NsYXNzIEZldGNoVXJsRmFpbHVyZShFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwpOgorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkZhaWxlZCB0byBmZXRjaCBVUkwgJXMiICUgc2VsZi51cmwKKworZGVmIGZldGNoX3VybCh0aW5mb2lsLCBzcmN1cmksIHNyY3JldiwgZGVzdGRpciwgbG9nZ2VyLCBwcmVzZXJ2ZV90bXA9RmFsc2UsIG1pcnJvcnM9RmFsc2UpOgorICAgICIiIgorICAgIEZldGNoIHRoZSBzcGVjaWZpZWQgVVJMIHVzaW5nIG5vcm1hbCBkb19mZXRjaCBhbmQgZG9fdW5wYWNrIHRhc2tzLCBpLmUuCisgICAgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgdG8gYmUgc2F0aXNmaWVkIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIGZldGNoCisgICAgb3BlcmF0aW9uIHdpbGwgYmUgdGFrZW4gY2FyZSBvZgorICAgICIiIgorCiAgICAgaW1wb3J0IGJiCi0gICAgdG1wcGFyZW50ID0gZC5nZXRWYXIoJ0JBU0VfV09SS0RJUicpCisKKyAgICBjaGVja3N1bXMgPSB7fQorICAgIGZldGNocmVjaXBlcG4gPSBOb25lCisKKyAgICAjIFdlIG5lZWQgdG8gcHV0IG91ciB0ZW1wIGRpcmVjdG9yeSB1bmRlciAke0JBU0VfV09SS0RJUn0gb3RoZXJ3aXNlCisgICAgIyB3ZSBtYXkgaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSByZWNpcGUtc3BlY2lmaWMgc3lzcm9vdCBwb3B1bGF0aW9uCisgICAgdG1wcGFyZW50ID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0JBU0VfV09SS0RJUicpCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRtcHBhcmVudCkKLSAgICB0bXB3b3JrZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dG1wcGFyZW50KQorICAgIHRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLScsIGRpcj10bXBwYXJlbnQpCiAgICAgdHJ5OgotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKLSAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgICAgIHRtcHdvcmtkaXIgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnd29yaycpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygnZmV0Y2hfdXJsOiB0ZW1wIGRpciBpcyAlcycgJSB0bXBkaXIpCiAKLSAgICAgICAgIyBTZXQgc29tZSB2YWx1ZXMgdG8gYWxsb3cgZXh0ZW5kX3JlY2lwZV9zeXNyb290IHRvIHdvcmsgaGVyZSB3ZSdyZSB3ZSBhcmUgbm90IHJ1bm5pbmcgZnJvbSBhIHRhc2sKLSAgICAgICAgbG9jYWxkYXRhLnNldFZhcignV09SS0RJUicsIHRtcHdvcmtkaXIpCi0gICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0JCX1JVTlRBU0snLCAnZG9fZmV0Y2gnKQotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQTicsICdkdW1teScpCi0gICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0JCX0xJTUlURURERVBTJywgJzEnKQotICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIsIGxvY2FsZGF0YSkKLQotICAgICAgICAjIFNldCBzb21lIHZhbHVlcyBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIGZldGNoZXIgY29kZQotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdCQl9TVFJJQ1RfQ0hFQ0tTVU0nLCAnJykKLSAgICAgICAgbG9jYWxkYXRhLnNldFZhcignU1JDUkVWJywgc3JjcmV2KQotICAgICAgICByZXQgPSAoTm9uZSwgTm9uZSkKLSAgICAgICAgb2xkZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgZmV0Y2hyZWNpcGVkaXIgPSBfZ2V0X3RlbXBfcmVjaXBlX2Rpcih0aW5mb2lsLmNvbmZpZ19kYXRhKQorICAgICAgICBpZiBub3QgZmV0Y2hyZWNpcGVkaXI6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ1NlYXJjaGVkIEJCRklMRVMgYnV0IHVuYWJsZSB0byBmaW5kIGEgd3JpdGVhYmxlIHBsYWNlIHRvIHB1dCB0ZW1wb3JhcnkgcmVjaXBlJykKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgIGZldGNocmVjaXBlID0gTm9uZQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZmV0Y2hyZWNpcGVkaXIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goW3VyaV0sIGxvY2FsZGF0YSkKLSAgICAgICAgICAgIGZvciB1IGluIGZldGNoZXIudWQ6Ci0gICAgICAgICAgICAgICAgdWQgPSBmZXRjaGVyLnVkW3VdCi0gICAgICAgICAgICAgICAgdWQuaWdub3JlX2NoZWNrc3VtcyA9IFRydWUKLSAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQotICAgICAgICAgICAgZm9yIHUgaW4gZmV0Y2hlci51ZDoKLSAgICAgICAgICAgICAgICB1ZCA9IGZldGNoZXIudWRbdV0KLSAgICAgICAgICAgICAgICBpZiB1ZC5sb2NhbHBhdGgucnN0cmlwKG9zLnNlcCkgPT0gbG9jYWxkYXRhLmdldFZhcignRExfRElSJykucnN0cmlwKG9zLnNlcCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTG9jYWwgcGF0aCBpcyBkb3dubG9hZCBkaXJlY3RvcnkgLSBwbGVhc2UgY2hlY2sgdGhhdCB0aGUgVVJJICIlcyIgaXMgY29ycmVjdCcgJSB1cmkpCi0gICAgICAgICAgICBmZXRjaGVyLnVucGFjayhkZXN0ZGlyKQotICAgICAgICAgICAgZm9yIHUgaW4gZmV0Y2hlci51ZDoKLSAgICAgICAgICAgICAgICB1ZCA9IGZldGNoZXIudWRbdV0KLSAgICAgICAgICAgICAgICBpZiB1ZC5tZXRob2QucmVjb21tZW5kc19jaGVja3N1bSh1ZCk6Ci0gICAgICAgICAgICAgICAgICAgIG1kNXZhbHVlID0gYmIudXRpbHMubWQ1X2ZpbGUodWQubG9jYWxwYXRoKQotICAgICAgICAgICAgICAgICAgICBzaGEyNTZ2YWx1ZSA9IGJiLnV0aWxzLnNoYTI1Nl9maWxlKHVkLmxvY2FscGF0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0ID0gKG1kNXZhbHVlLCBzaGEyNTZ2YWx1ZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLmNoZGlyKG9sZGRpcikKLSAgICBmaW5hbGx5OgotICAgICAgICBzaHV0aWwucm10cmVlKHRtcHdvcmtkaXIpCi0gICAgcmV0dXJuIHJldAorICAgICAgICAgICAgIyBHZW5lcmF0ZSBhIGR1bW15IHJlY2lwZSBzbyB3ZSBjYW4gZm9sbG93IG1vcmUgb3IgbGVzcyBub3JtYWwgcGF0aHMKKyAgICAgICAgICAgICMgZm9yIGRvX2ZldGNoIGFuZCBkb191bnBhY2sKKyAgICAgICAgICAgICMgSSdkIHVzZSB0ZW1wZmlsZSBmdW5jdGlvbnMgaGVyZSBidXQgdW5kZXJzY29yZXMgY2FuIGJlIHByb2R1Y2VkIGJ5IHRoYXQgYW5kIHRob3NlCisgICAgICAgICAgICAjIGFyZW4ndCBhbGxvd2VkIGluIHJlY2lwZSBmaWxlIG5hbWVzIGV4Y2VwdCB0byBzZXBhcmF0ZSB0aGUgdmVyc2lvbgorICAgICAgICAgICAgcm5kc3RyaW5nID0gJycuam9pbihyYW5kb20uY2hvaWNlKHN0cmluZy5hc2NpaV9sb3dlcmNhc2UgKyBzdHJpbmcuZGlnaXRzKSBmb3IgXyBpbiByYW5nZSg4KSkKKyAgICAgICAgICAgIGZldGNocmVjaXBlID0gb3MucGF0aC5qb2luKGZldGNocmVjaXBlZGlyLCAndG1wLXJlY2lwZXRvb2wtJXMuYmInICUgcm5kc3RyaW5nKQorICAgICAgICAgICAgZmV0Y2hyZWNpcGVwbiA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmZXRjaHJlY2lwZSkpWzBdCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0dlbmVyYXRpbmcgaW5pdGlhbCByZWNpcGUgJXMgZm9yIGZldGNoaW5nJyAlIGZldGNocmVjaXBlKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZldGNocmVjaXBlLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIGhhdmUgdG8gc3BlY2lmeSBMSUNfRklMRVNfQ0hLU1VNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnTElDRU5TRSA9ICJDTE9TRUQiXG4nKQorICAgICAgICAgICAgICAgICMgV2UgZG9uJ3QgbmVlZCB0aGUgY3Jvc3MtY29tcGlsZXIKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIlxuJykKKyAgICAgICAgICAgICAgICAjIFdlIGRvbid0IGhhdmUgdGhlIGNoZWNrc3VtcyB5ZXQgc28gd2UgY2FuJ3QgcmVxdWlyZSB0aGVtCisgICAgICAgICAgICAgICAgZi53cml0ZSgnQkJfU1RSSUNUX0NIRUNLU1VNID0gImlnbm9yZSJcbicpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnU1JDX1VSSSA9ICIlcyJcbicgJSBzcmN1cmkpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnU1JDUkVWID0gIiVzIlxuJyAlIHNyY3JldikKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdXT1JLRElSID0gIiVzIlxuJyAlIHRtcHdvcmtkaXIpCisgICAgICAgICAgICAgICAgIyBTZXQgUyBvdXQgb2YgdGhlIHdheSBzbyBpdCBkb2Vzbid0IGdldCBjcmVhdGVkIHVuZGVyIHRoZSB3b3JrZGlyCisgICAgICAgICAgICAgICAgZi53cml0ZSgnUyA9ICIlcyJcbicgJSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZW1wdHlzcmMnKSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbWlycm9yczoKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBkbyBub3QgbmVlZCBQUkVNSVJST1JTIHNpbmNlIHdlIGFyZSBhbG1vc3QgY2VydGFpbmx5CisgICAgICAgICAgICAgICAgICAgICMgZmV0Y2hpbmcgbmV3IHNvdXJjZSByYXRoZXIgdGhhbiBzb21ldGhpbmcgdGhhdCBoYXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAjIGJlZW4gZmV0Y2hlZC4gSGVuY2UsIHdlIGRpc2FibGUgdGhlbSBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICAjIEhvd2V2ZXIsIHdlIHByb3ZpZGUgYW4gb3B0aW9uIGZvciB1c2VycyB0byBlbmFibGUgaXQuCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ1BSRU1JUlJPUlMgPSAiIlxuJykKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnTUlSUk9SUyA9ICIiXG4nKQogCi1kZWYgcnVuX2VkaXRvcihmbik6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnRmV0Y2hpbmcgJXMuLi4nICUgc3JjdXJpKQorCisgICAgICAgICAgICAjIEZJWE1FIHRoaXMgaXMgdG9vIG5vaXN5IGF0IHRoZSBtb21lbnQKKworICAgICAgICAgICAgIyBQYXJzZSByZWNpcGVzIHNvIG91ciBuZXcgcmVjaXBlIGdldHMgcGlja2VkIHVwCisgICAgICAgICAgICB0aW5mb2lsLnBhcnNlX3JlY2lwZXMoKQorCisgICAgICAgICAgICBkZWYgZXZlbnRoYW5kbGVyKGV2ZW50KToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5mZXRjaDIuTWlzc2luZ0NoZWNrc3VtRXZlbnQpOgorICAgICAgICAgICAgICAgICAgICBjaGVja3N1bXMudXBkYXRlKGV2ZW50LmNoZWNrc3VtcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgIyBSdW4gdGhlIGZldGNoICsgdW5wYWNrIHRhc2tzCisgICAgICAgICAgICByZXMgPSB0aW5mb2lsLmJ1aWxkX3RhcmdldHMoZmV0Y2hyZWNpcGVwbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9fdW5wYWNrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZXZlbnRzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZXZlbnRzPVsnYmIuZmV0Y2gyLk1pc3NpbmdDaGVja3N1bUV2ZW50J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfY2FsbGJhY2s9ZXZlbnRoYW5kbGVyKQorICAgICAgICAgICAgaWYgbm90IHJlczoKKyAgICAgICAgICAgICAgICByYWlzZSBGZXRjaFVybEZhaWx1cmUoc3JjdXJpKQorCisgICAgICAgICAgICAjIFJlbW92ZSB1bm5lZWRlZCBkaXJlY3RvcmllcworICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZShmZXRjaHJlY2lwZXBuKQorICAgICAgICAgICAgaWYgcmQ6CisgICAgICAgICAgICAgICAgcGF0aHZhcnMgPSBbJ1QnLCAnUkVDSVBFX1NZU1JPT1QnLCAnUkVDSVBFX1NZU1JPT1RfTkFUSVZFJ10KKyAgICAgICAgICAgICAgICBmb3IgcGF0aHZhciBpbiBwYXRodmFyczoKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHJkLmdldFZhcihwYXRodmFyKQorICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBmZXRjaHJlY2lwZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmZXRjaHJlY2lwZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihmZXRjaHJlY2lwZWRpcikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaW1wb3J0IGVycm5vCisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9URU1QVFk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKHRtcHdvcmtkaXIpOgorICAgICAgICAgICAgc2h1dGlsLm1vdmUob3MucGF0aC5qb2luKHRtcHdvcmtkaXIsIGZuKSwgZGVzdGRpcikKKworICAgIGZpbmFsbHk6CisgICAgICAgIGlmIG5vdCBwcmVzZXJ2ZV90bXA6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHRtcGRpcikKKyAgICAgICAgICAgIHRtcGRpciA9IE5vbmUKKworICAgIHJldHVybiBjaGVja3N1bXMsIHRtcGRpcgorCisKK2RlZiBydW5fZWRpdG9yKGZuLCBsb2dnZXI9Tm9uZSk6CiAgICAgaWYgaXNpbnN0YW5jZShmbiwgc3RyKToKICAgICAgICAgcGFyYW1zID0gJyIlcyInICUgZm4KICAgICBlbHNlOgpAQCAtMTM0LDggKzIyMyw4IEBACiAgICAgZWRpdG9yID0gb3MuZ2V0ZW52KCdWSVNVQUwnLCBvcy5nZXRlbnYoJ0VESVRPUicsICd2aScpKQogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCgnJXMgJXMnICUgKGVkaXRvciwgcGFyYW1zKSwgc2hlbGw9VHJ1ZSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6Ci0gICAgICAgIGxvZ2dlci5lcnJvcigiRXhlY3V0aW9uIG9mIGVkaXRvciAnJXMnIGZhaWxlZDogJXMiLCBlZGl0b3IsIGV4YykKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhjOgorICAgICAgICBsb2dnZXIuZXJyb3IoIkV4ZWN1dGlvbiBvZiAnJXMnIGZhaWxlZDogJXMiICUgKGVkaXRvciwgZXhjKSkKICAgICAgICAgcmV0dXJuIDEKIAogZGVmIGlzX3NyY191cmwocGFyYW0pOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2NvbW1vbi53a3MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2NvbW1vbi53a3MuaW5jCmluZGV4IDVjZjJmZDEuLjg5ODgwYjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9jb21tb24ud2tzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvY29tbW9uLndrcy5pbmMKQEAgLTEsMyArMSwzIEBACiAjIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCBpbnRvIDMgY2FubmVkIHdrcyBmaWxlcyBmcm9tIHRoaXMgZGlyZWN0b3J5CiBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGNiaW9zIC0tb25kaXNrIHNkYSAtLWxhYmVsIGJvb3QgLS1hY3RpdmUgLS1hbGlnbiAxMDI0Ci1wYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgcGxhdGZvcm0gLS1hbGlnbiAxMDI0CitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tdXNlLXV1aWQgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcuY2ZnCmluZGV4IGQ1YTA3ZDIuLmM1OGU3NGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9kaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnLmNmZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZy5jZmcKQEAgLTEyLDE2ICsxMiwxNiBAQAogCiBMQUJFTCBHcmFwaGljcyBjb25zb2xlIGJvb3QKIEtFUk5FTCAvdm1saW51egotQVBQRU5EIGxhYmVsPWJvb3Qgcm9vdD0vZGV2L3NkYTIgcm9vdHdhaXQKK0FQUEVORCBsYWJlbD1ib290IHJvb3R3YWl0CiAKIExBQkVMIFNlcmlhbCBjb25zb2xlIGJvb3QKIEtFUk5FTCAvdm1saW51egotQVBQRU5EIGxhYmVsPWJvb3Qgcm9vdD0vZGV2L3NkYTIgcm9vdHdhaXQgY29uc29sZT10dHlTMCwxMTUyMDAKK0FQUEVORCBsYWJlbD1ib290IHJvb3R3YWl0IGNvbnNvbGU9dHR5UzAsMTE1MjAwCiAKIExBQkVMIEdyYXBoaWNzIGNvbnNvbGUgaW5zdGFsbAogS0VSTkVMIC92bWxpbnV6Ci1BUFBFTkQgbGFiZWw9aW5zdGFsbCByb290PS9kZXYvc2RhMiByb290d2FpdAorQVBQRU5EIGxhYmVsPWluc3RhbGwgcm9vdHdhaXQKIAogTEFCRUwgU2VyaWFsIGNvbnNvbGUgaW5zdGFsbAogS0VSTkVMIC92bWxpbnV6Ci1BUFBFTkQgbGFiZWw9aW5zdGFsbCByb290PS9kZXYvc2RhMiByb290d2FpdCBjb25zb2xlPXR0eVMwLDExNTIwMAorQVBQRU5EIGxhYmVsPWluc3RhbGwgcm9vdHdhaXQgY29uc29sZT10dHlTMCwxMTUyMDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9xZW11eDg2LWRpcmVjdGRpc2sud2tzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKaW5kZXggZGIzMGJiYy4uMWY4NDY2YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKQEAgLTQsNSArNCw1IEBACiAKIGluY2x1ZGUgY29tbW9uLndrcy5pbmMKIAotYm9vdGxvYWRlciAgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJ2Z2E9MCB1dmVzYWZiLm1vZGVfb3B0aW9uPTY0MHg0ODAtMzIgcm9vdD0vZGV2L3NkYTIgcncgbWVtPTI1Nk0gaXA9MTkyLjE2OC43LjI6OjE5Mi4xNjguNy4xOjI1NS4yNTUuMjU1LjAgb3Byb2ZpbGUudGltZXI9MSByb290ZnN0eXBlPWV4dDQgIgorYm9vdGxvYWRlciAgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJ2Z2E9MCB1dmVzYWZiLm1vZGVfb3B0aW9uPTY0MHg0ODAtMzIgcncgbWVtPTI1Nk0gaXA9MTkyLjE2OC43LjI6OjE5Mi4xNjguNy4xOjI1NS4yNTUuMjU1LjAgb3Byb2ZpbGUudGltZXI9MSByb290ZnN0eXBlPWV4dDQgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3Mvc3lzdGVtZC1ib290ZGlzay53a3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3Mvc3lzdGVtZC1ib290ZGlzay53a3MKaW5kZXggNGJkOWQ2YS4uOTVkN2I5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3N5c3RlbWQtYm9vdGRpc2sud2tzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9zeXN0ZW1kLWJvb3RkaXNrLndrcwpAQCAtMiwxMCArMiwxMCBAQAogIyBsb25nLWRlc2NyaXB0aW9uOiBDcmVhdGVzIGEgcGFydGl0aW9uZWQgRUZJIGRpc2sgaW1hZ2UgdGhhdCB0aGUgdXNlcgogIyBjYW4gZGlyZWN0bHkgZGQgdG8gYm9vdCBtZWRpYS4gVGhlIHNlbGVjdGVkIGJvb3Rsb2FkZXIgaXMgc3lzdGVtZC1ib290LgogCi1wYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctZWZpIC0tc291cmNlcGFyYW1zPSJsb2FkZXI9c3lzdGVtZC1ib290IiAtLW9uZGlzayBzZGEgLS1sYWJlbCBtc2RvcyAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKK3BhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1lZmkgLS1zb3VyY2VwYXJhbXM9ImxvYWRlcj1zeXN0ZW1kLWJvb3QiIC0tb25kaXNrIHNkYSAtLWxhYmVsIG1zZG9zIC0tYWN0aXZlIC0tYWxpZ24gMTAyNCAtLXVzZS11dWlkCiAKIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZAogCi1wYXJ0IHN3YXAgLS1vbmRpc2sgc2RhIC0tc2l6ZSA0NCAtLWxhYmVsIHN3YXAxIC0tZnN0eXBlPXN3YXAKK3BhcnQgc3dhcCAtLW9uZGlzayBzZGEgLS1zaXplIDQ0IC0tbGFiZWwgc3dhcDEgLS1mc3R5cGU9c3dhcCAtLXVzZS11dWlkCiAKIGJvb3Rsb2FkZXIgLS1wdGFibGUgZ3B0IC0tdGltZW91dD01IC0tYXBwZW5kPSJyb290d2FpdCByb290ZnN0eXBlPWV4dDQgY29uc29sZT10dHlTMCwxMTUyMDAgY29uc29sZT10dHkwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQppbmRleCBmNTk4MjFmLi5lZGNmYWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQpAQCAtMzAsMTAgKzMwLDE3IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGpzb24KK2ltcG9ydCBzdWJwcm9jZXNzCisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIE9yZGVyZWREaWN0Citmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgorZnJvbSB3aWMuZmlsZW1hcCBpbXBvcnQgc3BhcnNlX2NvcHkKIGZyb20gd2ljLnBsdWdpbmJhc2UgaW1wb3J0IFBsdWdpbk1ncgotZnJvbSB3aWMudXRpbHMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyCitmcm9tIHdpYy5taXNjIGltcG9ydCBnZXRfYml0YmFrZV92YXIsIGV4ZWNfY21kCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC0yMDEsMTcgKzIwOCwxOCBAQAogICAgICIiIgogICAgIFByaW50IHRoZSBsaXN0IG9mIGltYWdlcyBvciBzb3VyY2UgcGx1Z2lucy4KICAgICAiIiIKLSAgICBpZiBsZW4oYXJncykgPCAxOgorICAgIGlmIGFyZ3MubGlzdF90eXBlIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgaWYgYXJncyA9PSBbImltYWdlcyJdOgorICAgIGlmIGFyZ3MubGlzdF90eXBlID09ICJpbWFnZXMiOgorCiAgICAgICAgIGxpc3RfY2FubmVkX2ltYWdlcyhzY3JpcHRzX3BhdGgpCiAgICAgICAgIHJldHVybiBUcnVlCi0gICAgZWxpZiBhcmdzID09IFsic291cmNlLXBsdWdpbnMiXToKKyAgICBlbGlmIGFyZ3MubGlzdF90eXBlID09ICJzb3VyY2UtcGx1Z2lucyI6CiAgICAgICAgIGxpc3Rfc291cmNlX3BsdWdpbnMoKQogICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGVsaWYgbGVuKGFyZ3MpID09IDIgYW5kIGFyZ3NbMV0gPT0gImhlbHAiOgotICAgICAgICB3a3NfZmlsZSA9IGFyZ3NbMF0KKyAgICBlbGlmIGxlbihhcmdzLmhlbHBfZm9yKSA9PSAxIGFuZCBhcmdzLmhlbHBfZm9yWzBdID09ICdoZWxwJzoKKyAgICAgICAgd2tzX2ZpbGUgPSBhcmdzLmxpc3RfdHlwZQogICAgICAgICBmdWxscGF0aCA9IGZpbmRfY2FubmVkX2ltYWdlKHNjcmlwdHNfcGF0aCwgd2tzX2ZpbGUpCiAgICAgICAgIGlmIG5vdCBmdWxscGF0aDoKICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJObyBpbWFnZSBuYW1lZCAlcyBmb3VuZCwgZXhpdGluZy4gIgpAQCAtMjI0LDYgKzIzMiwzMDYgQEAKIAogICAgIHJldHVybiBGYWxzZQogCisKK2NsYXNzIERpc2s6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGltYWdlcGF0aCwgbmF0aXZlX3N5c3Jvb3QsIGZzdHlwZXM9KCdmYXQnLCAnZXh0JykpOgorICAgICAgICBzZWxmLmltYWdlcGF0aCA9IGltYWdlcGF0aAorICAgICAgICBzZWxmLm5hdGl2ZV9zeXNyb290ID0gbmF0aXZlX3N5c3Jvb3QKKyAgICAgICAgc2VsZi5mc3R5cGVzID0gZnN0eXBlcworICAgICAgICBzZWxmLl9wYXJ0aXRpb25zID0gTm9uZQorICAgICAgICBzZWxmLl9wYXJ0aW1hZ2VzID0ge30KKyAgICAgICAgc2VsZi5fbHNlY3Rvcl9zaXplID0gTm9uZQorICAgICAgICBzZWxmLl9wc2VjdG9yX3NpemUgPSBOb25lCisgICAgICAgIHNlbGYuX3B0YWJsZV9mb3JtYXQgPSBOb25lCisKKyAgICAgICAgIyBmaW5kIHBhcnRlZAorICAgICAgICBzZWxmLnBhdGhzID0gIi9iaW46L3Vzci9iaW46L3Vzci9zYmluOi9zYmluLyIKKyAgICAgICAgaWYgbmF0aXZlX3N5c3Jvb3Q6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLnBhdGhzLnNwbGl0KCc6Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRocyA9ICIlcyVzOiVzIiAlIChuYXRpdmVfc3lzcm9vdCwgcGF0aCwgc2VsZi5wYXRocykKKworICAgICAgICBzZWxmLnBhcnRlZCA9IGZpbmRfZXhlY3V0YWJsZSgicGFydGVkIiwgc2VsZi5wYXRocykKKyAgICAgICAgaWYgbm90IHNlbGYucGFydGVkOgorICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNhbid0IGZpbmQgZXhlY3V0YWJsZSBwYXJ0ZWQiKQorCisgICAgICAgIHNlbGYucGFydGl0aW9ucyA9IHNlbGYuZ2V0X3BhcnRpdGlvbnMoKQorCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgIGZvciBwYXRoIGluIHNlbGYuX3BhcnRpbWFnZXMudmFsdWVzKCk6CisgICAgICAgICAgICBvcy51bmxpbmsocGF0aCkKKworICAgIGRlZiBnZXRfcGFydGl0aW9ucyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fcGFydGl0aW9ucyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fcGFydGl0aW9ucyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKCIlcyAtc20gJXMgdW5pdCBCIHByaW50IiAlIChzZWxmLnBhcnRlZCwgc2VsZi5pbWFnZXBhdGgpKQorICAgICAgICAgICAgcGFydHR5cGUgPSBuYW1lZHR1cGxlKCJQYXJ0IiwgInBudW0gc3RhcnQgZW5kIHNpemUgZnN0eXBlIikKKyAgICAgICAgICAgIHNwbGl0dGVkID0gb3V0LnNwbGl0bGluZXMoKQorICAgICAgICAgICAgbHNlY3Rvcl9zaXplLCBwc2VjdG9yX3NpemUsIHNlbGYuX3B0YWJsZV9mb3JtYXQgPSBzcGxpdHRlZFsxXS5zcGxpdCgiOiIpWzM6Nl0KKyAgICAgICAgICAgIHNlbGYuX2xzZWN0b3Jfc2l6ZSA9IGludChsc2VjdG9yX3NpemUpCisgICAgICAgICAgICBzZWxmLl9wc2VjdG9yX3NpemUgPSBpbnQocHNlY3Rvcl9zaXplKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3BsaXR0ZWRbMjpdOgorICAgICAgICAgICAgICAgIHBudW0sIHN0YXJ0LCBlbmQsIHNpemUsIGZzdHlwZSA9IGxpbmUuc3BsaXQoJzonKVs6NV0KKyAgICAgICAgICAgICAgICBwYXJ0aXRpb24gPSBwYXJ0dHlwZShpbnQocG51bSksIGludChzdGFydFs6LTFdKSwgaW50KGVuZFs6LTFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2l6ZVs6LTFdKSwgZnN0eXBlKQorICAgICAgICAgICAgICAgIHNlbGYuX3BhcnRpdGlvbnNbcG51bV0gPSBwYXJ0aXRpb24KKworICAgICAgICByZXR1cm4gc2VsZi5fcGFydGl0aW9ucworCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJHZXQgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSBpbiBhIGxhenkgd2F5LiIiIgorICAgICAgICBpZiBuYW1lIGluICgibWRpciIsICJtY29weSIsICJtZGVsIiwgIm1kZWx0cmVlIiwgInNmZGlzayIsICJlMmZzY2siLAorICAgICAgICAgICAgICAgICAgICAicmVzaXplMmZzIiwgIm1rc3dhcCIsICJta2Rvc2ZzIiwgImRlYnVnZnMiKToKKyAgICAgICAgICAgIGFuYW1lID0gIl8lcyIgJSBuYW1lCisgICAgICAgICAgICBpZiBhbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGFuYW1lLCBmaW5kX2V4ZWN1dGFibGUobmFtZSwgc2VsZi5wYXRocykpCisgICAgICAgICAgICAgICAgaWYgYW5hbWUgbm90IGluIHNlbGYuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDYW4ndCBmaW5kIGV4ZWN1dGFibGUge30iLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fW2FuYW1lXQorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfX1tuYW1lXQorCisgICAgZGVmIF9nZXRfcGFydF9pbWFnZShzZWxmLCBwbnVtKToKKyAgICAgICAgaWYgcG51bSBub3QgaW4gc2VsZi5wYXJ0aXRpb25zOgorICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlBhcnRpdGlvbiAlcyBpcyBub3QgaW4gdGhlIGltYWdlIikKKyAgICAgICAgcGFydCA9IHNlbGYucGFydGl0aW9uc1twbnVtXQorICAgICAgICAjIGNoZWNrIGlmIGZzdHlwZSBpcyBzdXBwb3J0ZWQKKyAgICAgICAgZm9yIGZzdHlwZSBpbiBzZWxmLmZzdHlwZXM6CisgICAgICAgICAgICBpZiBwYXJ0LmZzdHlwZS5zdGFydHN3aXRoKGZzdHlwZSk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJOb3Qgc3VwcG9ydGVkIGZzdHlwZToge30iLmZvcm1hdChwYXJ0LmZzdHlwZSkpCisgICAgICAgIGlmIHBudW0gbm90IGluIHNlbGYuX3BhcnRpbWFnZXM6CisgICAgICAgICAgICB0bXBmID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHByZWZpeD0id2ljLXBhcnQiKQorICAgICAgICAgICAgZHN0X2ZuYW1lID0gdG1wZi5uYW1lCisgICAgICAgICAgICB0bXBmLmNsb3NlKCkKKyAgICAgICAgICAgIHNwYXJzZV9jb3B5KHNlbGYuaW1hZ2VwYXRoLCBkc3RfZm5hbWUsIHNraXA9cGFydC5zdGFydCwgbGVuZ3RoPXBhcnQuc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuX3BhcnRpbWFnZXNbcG51bV0gPSBkc3RfZm5hbWUKKworICAgICAgICByZXR1cm4gc2VsZi5fcGFydGltYWdlc1twbnVtXQorCisgICAgZGVmIF9wdXRfcGFydF9pbWFnZShzZWxmLCBwbnVtKToKKyAgICAgICAgIiIiUHV0IHBhcnRpdGlvbiBpbWFnZSBpbnRvIHBhcnRpdGlvbmVkIGltYWdlLiIiIgorICAgICAgICBzcGFyc2VfY29weShzZWxmLl9wYXJ0aW1hZ2VzW3BudW1dLCBzZWxmLmltYWdlcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgc2Vlaz1zZWxmLnBhcnRpdGlvbnNbcG51bV0uc3RhcnQpCisKKyAgICBkZWYgZGlyKHNlbGYsIHBudW0sIHBhdGgpOgorICAgICAgICBpZiBzZWxmLnBhcnRpdGlvbnNbcG51bV0uZnN0eXBlLnN0YXJ0c3dpdGgoJ2V4dCcpOgorICAgICAgICAgICAgcmV0dXJuIGV4ZWNfY21kKCJ7fSB7fSAtUiAnbHMgLWwge30nIi5mb3JtYXQoc2VsZi5kZWJ1Z2ZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoKSwgYXNfc2hlbGw9VHJ1ZSkKKyAgICAgICAgZWxzZTogIyBmYXQKKyAgICAgICAgICAgIHJldHVybiBleGVjX2NtZCgie30gLWkge30gOjp7fSIuZm9ybWF0KHNlbGYubWRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCkpCisKKyAgICBkZWYgY29weShzZWxmLCBzcmMsIHBudW0sIHBhdGgpOgorICAgICAgICAiIiJDb3B5IHBhcnRpdGlvbiBpbWFnZSBpbnRvIHdpYyBpbWFnZS4iIiIKKyAgICAgICAgaWYgc2VsZi5wYXJ0aXRpb25zW3BudW1dLmZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKKyAgICAgICAgICAgIGNtZCA9ICJlY2hvIC1lICdjZCB7fVxud3JpdGUge30ge30nIHwge30gLXcge30iLlwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQocGF0aCwgc3JjLCBvcy5wYXRoLmJhc2VuYW1lKHNyYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVidWdmcywgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkpCisgICAgICAgIGVsc2U6ICMgZmF0CisgICAgICAgICAgICBjbWQgPSAie30gLWkge30gLXNub3Age30gOjp7fSIuZm9ybWF0KHNlbGYubWNvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMsIHBhdGgpCisgICAgICAgIGV4ZWNfY21kKGNtZCwgYXNfc2hlbGw9VHJ1ZSkKKyAgICAgICAgc2VsZi5fcHV0X3BhcnRfaW1hZ2UocG51bSkKKworICAgIGRlZiByZW1vdmUoc2VsZiwgcG51bSwgcGF0aCk6CisgICAgICAgICIiIlJlbW92ZSBmaWxlcy9kaXJzIGZyb20gdGhlIHBhcnRpdGlvbi4iIiIKKyAgICAgICAgcGFydGltZyA9IHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pCisgICAgICAgIGlmIHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUuc3RhcnRzd2l0aCgnZXh0Jyk6CisgICAgICAgICAgICBleGVjX2NtZCgie30ge30gLXdSICdybSB7fSciLmZvcm1hdChzZWxmLmRlYnVnZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpLCBhc19zaGVsbD1UcnVlKQorICAgICAgICBlbHNlOiAjIGZhdAorICAgICAgICAgICAgY21kID0gInt9IC1pIHt9IDo6e30iLmZvcm1hdChzZWxmLm1kZWwsIHBhcnRpbWcsIHBhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZXhlY19jbWQoY21kKQorICAgICAgICAgICAgZXhjZXB0IFdpY0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiAibm90IGZvdW5kIiBpbiBzdHIoZXJyKSBvciAibm9uIGVtcHR5IiBpbiBzdHIoZXJyKToKKyAgICAgICAgICAgICAgICAgICAgIyBtZGVsIG91dHB1dHMgJ0ZpbGUgLi4uIG5vdCBmb3VuZCcgb3IgJ2RpcmVjdG9yeSAuLiBub24gZW1wdHkiCisgICAgICAgICAgICAgICAgICAgICMgdHJ5IHRvIHVzZSBtZGVsdHJlZSBhcyBwYXRoIGNvdWxkIGJlIGEgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSA6Ont9Ii5mb3JtYXQoc2VsZi5tZGVsdHJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aW1nLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICBleGVjX2NtZChjbWQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyCisgICAgICAgIHNlbGYuX3B1dF9wYXJ0X2ltYWdlKHBudW0pCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgdGFyZ2V0LCBleHBhbmQpOgorICAgICAgICAiIiJXcml0ZSBkaXNrIGltYWdlIHRvIHRoZSBtZWRpYSBvciBmaWxlLiIiIgorICAgICAgICBkZWYgd3JpdGVfc2ZkaXNrX3NjcmlwdChvdXRmLCBwYXJ0cyk6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWwgaW4gcGFydHNbJ3BhcnRpdGlvbnRhYmxlJ10uaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gKCJwYXJ0aXRpb25zIiwgImRldmljZSIsICJmaXJzdGxiYSIsICJsYXN0bGJhIik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICJpZCI6CisgICAgICAgICAgICAgICAgICAgIGtleSA9ICJsYWJlbC1pZCIKKyAgICAgICAgICAgICAgICBvdXRmLndyaXRlKCJ7fToge31cbiIuZm9ybWF0KGtleSwgdmFsKSkKKyAgICAgICAgICAgIG91dGYud3JpdGUoIlxuIikKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIHBhcnRzWydwYXJ0aXRpb250YWJsZSddWydwYXJ0aXRpb25zJ106CisgICAgICAgICAgICAgICAgbGluZSA9ICcnCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCdhdHRycycsICduYW1lJywgJ3NpemUnLCAndHlwZScsICd1dWlkJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ3NpemUnIGFuZCBwYXJ0Wyd0eXBlJ10gPT0gJ2YnOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBkb24ndCB3cml0ZSBzaXplIGZvciBleHRlbmRlZCBwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnQuZ2V0KG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHZhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gJ3t9PXt9LCAnLmZvcm1hdChuYW1lLCB2YWwpCisgICAgICAgICAgICAgICAgaWYgbGluZToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXSAjIHN0cmlwICcsICcKKyAgICAgICAgICAgICAgICBpZiBwYXJ0LmdldCgnYm9vdGFibGUnKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSArPSAnICxib290YWJsZScKKyAgICAgICAgICAgICAgICBvdXRmLndyaXRlKCJ7fVxuIi5mb3JtYXQobGluZSkpCisgICAgICAgICAgICBvdXRmLmZsdXNoKCkKKworICAgICAgICBkZWYgcmVhZF9wdGFibGUocGF0aCk6CisgICAgICAgICAgICBvdXQgPSBleGVjX2NtZCgie30gLWRKIHt9Ii5mb3JtYXQoc2VsZi5zZmRpc2ssIHBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMob3V0KQorCisgICAgICAgIGRlZiB3cml0ZV9wdGFibGUocGFydHMsIHRhcmdldCk6CisgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShwcmVmaXg9IndpYy1zZmRpc2stIiwgbW9kZT0ndycpIGFzIG91dGY6CisgICAgICAgICAgICAgICAgd3JpdGVfc2ZkaXNrX3NjcmlwdChvdXRmLCBwYXJ0cykKKyAgICAgICAgICAgICAgICBjbWQgPSAie30gLS1uby1yZXJlYWQge30gPCB7fSAyPi9kZXYvbnVsbCIuZm9ybWF0KHNlbGYuc2ZkaXNrLCB0YXJnZXQsIG91dGYubmFtZSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ2FuJ3QgcnVuICd7fScgY29tbWFuZDoge30iLmZvcm1hdChjbWQsIGVycikpCisKKyAgICAgICAgaWYgZXhwYW5kIGlzIE5vbmU6CisgICAgICAgICAgICBzcGFyc2VfY29weShzZWxmLmltYWdlcGF0aCwgdGFyZ2V0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBjb3B5IGZpcnN0IHNlY3RvcnMgdGhhdCBtYXkgY29udGFpbiBib290bG9hZGVyCisgICAgICAgICAgICBzcGFyc2VfY29weShzZWxmLmltYWdlcGF0aCwgdGFyZ2V0LCBsZW5ndGg9MjA0OCAqIHNlbGYuX2xzZWN0b3Jfc2l6ZSkKKworICAgICAgICAgICAgIyBjb3B5IHNvdXJjZSBwYXJ0aXRpb24gdGFibGUgdG8gdGhlIHRhcmdldAorICAgICAgICAgICAgcGFydHMgPSByZWFkX3B0YWJsZShzZWxmLmltYWdlcGF0aCkKKyAgICAgICAgICAgIHdyaXRlX3B0YWJsZShwYXJ0cywgdGFyZ2V0KQorCisgICAgICAgICAgICAjIGdldCBzaXplIG9mIHVucGFydGl0aW9uZWQgc3BhY2UKKyAgICAgICAgICAgIGZyZWUgPSBOb25lCisgICAgICAgICAgICBmb3IgbGluZSBpbiBleGVjX2NtZCgie30gLUYge30iLmZvcm1hdChzZWxmLnNmZGlzaywgdGFyZ2V0KSkuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiVW5wYXJ0aXRpb25lZCBzcGFjZSAiKSBhbmQgbGluZS5lbmRzd2l0aCgic2VjdG9ycyIpOgorICAgICAgICAgICAgICAgICAgICBmcmVlID0gaW50KGxpbmUuc3BsaXQoKVstMl0pCisgICAgICAgICAgICBpZiBmcmVlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNhbid0IGdldCBzaXplIG9mIHVucGFydGl0aW9uZWQgc3BhY2UiKQorCisgICAgICAgICAgICAjIGNhbGN1bGF0ZSBleHBhbmRlZCBwYXJ0aXRpb25zIHNpemVzCisgICAgICAgICAgICBzaXplcyA9IHt9CisgICAgICAgICAgICBmb3IgbnVtLCBwYXJ0IGluIGVudW1lcmF0ZShwYXJ0c1sncGFydGl0aW9udGFibGUnXVsncGFydGl0aW9ucyddLCAxKToKKyAgICAgICAgICAgICAgICBpZiBudW0gaW4gZXhwYW5kOgorICAgICAgICAgICAgICAgICAgICBpZiBleHBhbmRbbnVtXSAhPSAwOiAjIGRvbid0IHJlc2l6ZSBwYXJ0aXRpb24gaWYgc2l6ZSBpcyBzZXQgdG8gMAorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdG9ycyA9IGV4cGFuZFtudW1dIC8vIHNlbGYuX2xzZWN0b3Jfc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSAtPSBzZWN0b3JzIC0gcGFydFsnc2l6ZSddCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0WydzaXplJ10gPSBzZWN0b3JzCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplc1tudW1dID0gc2VjdG9ycworICAgICAgICAgICAgICAgIGVsaWYgcGFydFsndHlwZSddICE9ICdmJzoKKyAgICAgICAgICAgICAgICAgICAgc2l6ZXNbbnVtXSA9IC0xCisKKyAgICAgICAgICAgIGZvciBudW0sIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzWydwYXJ0aXRpb250YWJsZSddWydwYXJ0aXRpb25zJ10sIDEpOgorICAgICAgICAgICAgICAgIGlmIHNpemVzLmdldChudW0pID09IC0xOgorICAgICAgICAgICAgICAgICAgICBwYXJ0WydzaXplJ10gKz0gZnJlZSAvLyBsZW4oc2l6ZXMpCisKKyAgICAgICAgICAgICMgd3JpdGUgcmVzaXplZCBwYXJ0aXRpb24gdGFibGUgdG8gdGhlIHRhcmdldAorICAgICAgICAgICAgd3JpdGVfcHRhYmxlKHBhcnRzLCB0YXJnZXQpCisKKyAgICAgICAgICAgICMgcmVhZCByZXNpemVkIHBhcnRpdGlvbiB0YWJsZQorICAgICAgICAgICAgcGFydHMgPSByZWFkX3B0YWJsZSh0YXJnZXQpCisKKyAgICAgICAgICAgICMgY29weSBwYXJ0aXRpb25zIGNvbnRlbnQKKyAgICAgICAgICAgIGZvciBudW0sIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzWydwYXJ0aXRpb250YWJsZSddWydwYXJ0aXRpb25zJ10sIDEpOgorICAgICAgICAgICAgICAgIHBudW0gPSBzdHIobnVtKQorICAgICAgICAgICAgICAgIGZzdHlwZSA9IHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUKKworICAgICAgICAgICAgICAgICMgY29weSB1bmNoYW5nZWQgcGFydGl0aW9uCisgICAgICAgICAgICAgICAgaWYgcGFydFsnc2l6ZSddID09IHNlbGYucGFydGl0aW9uc1twbnVtXS5zaXplIC8vIHNlbGYuX2xzZWN0b3Jfc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImNvcHlpbmcgdW5jaGFuZ2VkIHBhcnRpdGlvbiB7fSIuZm9ybWF0KHBudW0pKQorICAgICAgICAgICAgICAgICAgICBzcGFyc2VfY29weShzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwgdGFyZ2V0LCBzZWVrPXBhcnRbJ3N0YXJ0J10gKiBzZWxmLl9sc2VjdG9yX3NpemUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAjIHJlc2l6ZSBvciByZS1jcmVhdGUgcGFydGl0aW9ucworICAgICAgICAgICAgICAgIGlmIGZzdHlwZS5zdGFydHN3aXRoKCdleHQnKSBvciBmc3R5cGUuc3RhcnRzd2l0aCgnZmF0Jykgb3IgXAorICAgICAgICAgICAgICAgICAgIGZzdHlwZS5zdGFydHN3aXRoKCdsaW51eC1zd2FwJyk6CisKKyAgICAgICAgICAgICAgICAgICAgcGFydGZuYW1lID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShwcmVmaXg9IndpYy1wYXJ0e30tIi5mb3JtYXQocG51bSkpIGFzIHBhcnRmOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFydGZuYW1lID0gcGFydGYubmFtZQorCisgICAgICAgICAgICAgICAgICAgIGlmIGZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJyZXNpemluZyBleHQgcGFydGl0aW9uIHt9Ii5mb3JtYXQocG51bSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aW1nID0gc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwYXJzZV9jb3B5KHBhcnRpbWcsIHBhcnRmbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfY21kKCJ7fSAtcGYge30iLmZvcm1hdChzZWxmLmUyZnNjaywgcGFydGZuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfY21kKCJ7fSB7fSB7fXMiLmZvcm1hdChcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc2l6ZTJmcywgcGFydGZuYW1lLCBwYXJ0WydzaXplJ10pKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGZzdHlwZS5zdGFydHN3aXRoKCdmYXQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjb3B5aW5nIGNvbnRlbnQgb2YgdGhlIGZhdCBwYXJ0aXRpb24ge30iLmZvcm1hdChwbnVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0nd2ljLWZhdGRpci0nKSBhcyB0bXBkaXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb3B5IGNvbnRlbnQgdG8gdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSAie30gLXNub21waSB7fSA6OiB7fSIuZm9ybWF0KHNlbGYubWNvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcGRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2NtZChjbWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgbmV3IG1zZG9zIHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gcGFydC5nZXQoIm5hbWUiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItbiB7fSIuZm9ybWF0KGxhYmVsKSBpZiBsYWJlbCBlbHNlICcnCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSAie30ge30gLUMge30ge30iLmZvcm1hdChzZWxmLm1rZG9zZnMsIGxhYmVsX3N0ciwgcGFydGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRbJ3NpemUnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2NtZChjbWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb3B5IGNvbnRlbnQgZnJvbSB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byB0aGUgbmV3IHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9ICJ7fSAtc25vbXBpIHt9IHt9LyogOjoiLmZvcm1hdChzZWxmLm1jb3B5LCBwYXJ0Zm5hbWUsIHRtcGRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2NtZChjbWQsIGFzX3NoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgZnN0eXBlLnN0YXJ0c3dpdGgoJ2xpbnV4LXN3YXAnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjcmVhdGluZyBzd2FwIHBhcnRpdGlvbiB7fSIuZm9ybWF0KHBudW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBwYXJ0LmdldCgibmFtZSIpCisgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9zdHIgPSAiLUwge30iLmZvcm1hdChsYWJlbCkgaWYgbGFiZWwgZWxzZSAnJworICAgICAgICAgICAgICAgICAgICAgICAgdXVpZCA9IHBhcnQuZ2V0KCJ1dWlkIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHV1aWRfc3RyID0gIi1VIHt9Ii5mb3JtYXQodXVpZCkgaWYgdXVpZCBlbHNlICcnCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGFydGZuYW1lLCAndycpIGFzIHNwYXJzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5mdHJ1bmNhdGUoc3BhcnNlLmZpbGVubygpLCBwYXJ0WydzaXplJ10gKiBzZWxmLl9sc2VjdG9yX3NpemUpCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2NtZCgie30ge30ge30ge30iLmZvcm1hdChzZWxmLm1rc3dhcCwgbGFiZWxfc3RyLCB1dWlkX3N0ciwgcGFydGZuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgc3BhcnNlX2NvcHkocGFydGZuYW1lLCB0YXJnZXQsIHNlZWs9cGFydFsnc3RhcnQnXSAqIHNlbGYuX2xzZWN0b3Jfc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKHBhcnRmbmFtZSkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcnRbJ3R5cGUnXSAhPSAnZic6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJza2lwcGluZyBwYXJ0aXRpb24ge306IHVuc3VwcG9ydGVkIGZzdHlwZSB7fSIuZm9ybWF0KHBudW0sIGZzdHlwZSkpCisKK2RlZiB3aWNfbHMoYXJncywgbmF0aXZlX3N5c3Jvb3QpOgorICAgICIiIkxpc3QgY29udGVudHMgb2YgcGFydGl0aW9uZWQgaW1hZ2Ugb3IgdmZhdCBwYXJ0aXRpb24uIiIiCisgICAgZGlzayA9IERpc2soYXJncy5wYXRoLmltYWdlLCBuYXRpdmVfc3lzcm9vdCkKKyAgICBpZiBub3QgYXJncy5wYXRoLnBhcnQ6CisgICAgICAgIGlmIGRpc2sucGFydGl0aW9uczoKKyAgICAgICAgICAgIHByaW50KCdOdW0gICAgIFN0YXJ0ICAgICAgICBFbmQgICAgICAgICAgU2l6ZSAgICAgIEZzdHlwZScpCisgICAgICAgICAgICBmb3IgcGFydCBpbiBkaXNrLnBhcnRpdGlvbnMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgcHJpbnQoIns6MmR9ICB7OjEyZH0gezoxMmR9IHs6MTJkfSAge30iLmZvcm1hdChcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQucG51bSwgcGFydC5zdGFydCwgcGFydC5lbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQuc2l6ZSwgcGFydC5mc3R5cGUpKQorICAgIGVsc2U6CisgICAgICAgIHBhdGggPSBhcmdzLnBhdGgucGF0aCBvciAnLycKKyAgICAgICAgcHJpbnQoZGlzay5kaXIoYXJncy5wYXRoLnBhcnQsIHBhdGgpKQorCitkZWYgd2ljX2NwKGFyZ3MsIG5hdGl2ZV9zeXNyb290KToKKyAgICAiIiIKKyAgICBDb3B5IGxvY2FsIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHRoZSB2ZmF0IHBhcnRpdGlvbiBvZgorICAgIHBhcnRpdGlvbmVkIGltYWdlLgorICAgICIiIgorICAgIGRpc2sgPSBEaXNrKGFyZ3MuZGVzdC5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QpCisgICAgZGlzay5jb3B5KGFyZ3Muc3JjLCBhcmdzLmRlc3QucGFydCwgYXJncy5kZXN0LnBhdGgpCisKK2RlZiB3aWNfcm0oYXJncywgbmF0aXZlX3N5c3Jvb3QpOgorICAgICIiIgorICAgIFJlbW92ZSBmaWxlcyBvciBkaXJlY3RvcmllcyBmcm9tIHRoZSB2ZmF0IHBhcnRpdGlvbiBvZgorICAgIHBhcnRpdGlvbmVkIGltYWdlLgorICAgICIiIgorICAgIGRpc2sgPSBEaXNrKGFyZ3MucGF0aC5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QpCisgICAgZGlzay5yZW1vdmUoYXJncy5wYXRoLnBhcnQsIGFyZ3MucGF0aC5wYXRoKQorCitkZWYgd2ljX3dyaXRlKGFyZ3MsIG5hdGl2ZV9zeXNyb290KToKKyAgICAiIiIKKyAgICBXcml0ZSBpbWFnZSB0byBhIHRhcmdldCBkZXZpY2UuCisgICAgIiIiCisgICAgZGlzayA9IERpc2soYXJncy5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QsICgnZmF0JywgJ2V4dCcsICdzd2FwJykpCisgICAgZGlzay53cml0ZShhcmdzLnRhcmdldCwgYXJncy5leHBhbmQpCisKIGRlZiBmaW5kX2Nhbm5lZChzY3JpcHRzX3BhdGgsIGZpbGVfbmFtZSk6CiAgICAgIiIiCiAgICAgRmluZCBhIGZpbGUgZWl0aGVyIGJ5IGl0cyBwYXRoIG9yIGJ5IG5hbWUgaW4gdGhlIGNhbm5lZCBmaWxlcyBkaXIuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkKaW5kZXggMWYxYWFjYy4uNzdlMzJiOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9maWxlbWFwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvZmlsZW1hcC5weQpAQCAtMzQsMTMgKzM0LDkgQEAKICAgICBSZXR1cm5zIGJsb2NrIHNpemUgZm9yIGZpbGUgb2JqZWN0ICdmaWxlX29iaicuIEVycm9ycyBhcmUgaW5kaWNhdGVkIGJ5IHRoZQogICAgICdJT0Vycm9yJyBleGNlcHRpb24uCiAgICAgIiIiCi0KLSAgICBmcm9tIGZjbnRsIGltcG9ydCBpb2N0bAotICAgIGltcG9ydCBzdHJ1Y3QKLQogICAgICMgR2V0IHRoZSBibG9jayBzaXplIG9mIHRoZSBob3N0IGZpbGUtc3lzdGVtIGZvciB0aGUgaW1hZ2UgZmlsZSBieSBjYWxsaW5nCiAgICAgIyB0aGUgRklHRVRCU1ogaW9jdGwgKG51bWJlciAyKS4KLSAgICBiaW5hcnlfZGF0YSA9IGlvY3RsKGZpbGVfb2JqLCAyLCBzdHJ1Y3QucGFjaygnSScsIDApKQorICAgIGJpbmFyeV9kYXRhID0gZmNudGwuaW9jdGwoZmlsZV9vYmosIDIsIHN0cnVjdC5wYWNrKCdJJywgMCkpCiAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJ0knLCBiaW5hcnlfZGF0YSlbMF0KIAogY2xhc3MgRXJyb3JOb3RTdXBwKEV4Y2VwdGlvbik6CkBAIC0yMjgsNyArMjI0LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdG1wX29iaiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoIncrIiwgZGlyPWRpcmVjdG9yeSkKICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgcmFpc2UgRXJyb3JOb3RTdXBwKCJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGluIFwiJXNcIjogJXMiCisgICAgICAgICAgICByYWlzZSBFcnJvck5vdFN1cHAoImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgaW4gXCIlc1wiOiAlcyIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZGlyZWN0b3J5LCBlcnIpKQogCiAgICAgICAgIHRyeToKQEAgLTUzMCw4ICs1MjYsMTggQEAKICAgICBleGNlcHQgRXJyb3JOb3RTdXBwOgogICAgICAgICByZXR1cm4gRmlsZW1hcFNlZWsoaW1hZ2UsIGxvZykKIAotZGVmIHNwYXJzZV9jb3B5KHNyY19mbmFtZSwgZHN0X2ZuYW1lLCBvZmZzZXQ9MCwgc2tpcD0wLCBhcGk9Tm9uZSk6Ci0gICAgIiIiRWZmaWNpZW50bHkgY29weSBzcGFyc2UgZmlsZSB0byBvciBpbnRvIGFub3RoZXIgZmlsZS4iIiIKK2RlZiBzcGFyc2VfY29weShzcmNfZm5hbWUsIGRzdF9mbmFtZSwgc2tpcD0wLCBzZWVrPTAsCisgICAgICAgICAgICAgICAgbGVuZ3RoPTAsIGFwaT1Ob25lKToKKyAgICAiIiIKKyAgICBFZmZpY2llbnRseSBjb3B5IHNwYXJzZSBmaWxlIHRvIG9yIGludG8gYW5vdGhlciBmaWxlLgorCisgICAgc3JjX2ZuYW1lOiBwYXRoIHRvIHNvdXJjZSBmaWxlCisgICAgZHN0X2ZuYW1lOiBwYXRoIHRvIGRlc3RpbmF0aW9uIGZpbGUKKyAgICBza2lwOiBza2lwIE4gYnl0ZXMgYXQgdGhlc3RhcnQgb2Ygc3JjCisgICAgc2Vlazogc2VlayBOIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIGRzdAorICAgIGxlbmd0aDogcmVhZCBOIGJ5dGVzIGZyb20gc3JjIGFuZCB3cml0ZSB0aGVtIHRvIGRzdAorICAgIGFwaTogRmlsZW1hcEZpZW1hcCBvciBGaWxlbWFwU2VlayBvYmplY3QKKyAgICAiIiIKICAgICBpZiBub3QgYXBpOgogICAgICAgICBhcGkgPSBmaWxlbWFwCiAgICAgZm1hcCA9IGFwaShzcmNfZm5hbWUpCkBAIC01MzksMTcgKzU0NSwzMiBAQAogICAgICAgICBkc3RfZmlsZSA9IG9wZW4oZHN0X2ZuYW1lLCAncitiJykKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgZHN0X2ZpbGUgPSBvcGVuKGRzdF9mbmFtZSwgJ3diJykKLSAgICAgICAgZHN0X2ZpbGUudHJ1bmNhdGUob3MucGF0aC5nZXRzaXplKHNyY19mbmFtZSkpCisgICAgICAgIGlmIGxlbmd0aDoKKyAgICAgICAgICAgIGRzdF9zaXplID0gbGVuZ3RoICsgc2VlaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZHN0X3NpemUgPSBvcy5wYXRoLmdldHNpemUoc3JjX2ZuYW1lKSArIHNlZWsgLSBza2lwCisgICAgICAgIGRzdF9maWxlLnRydW5jYXRlKGRzdF9zaXplKQogCisgICAgd3JpdHRlbiA9IDAKICAgICBmb3IgZmlyc3QsIGxhc3QgaW4gZm1hcC5nZXRfbWFwcGVkX3JhbmdlcygwLCBmbWFwLmJsb2Nrc19jbnQpOgogICAgICAgICBzdGFydCA9IGZpcnN0ICogZm1hcC5ibG9ja19zaXplCiAgICAgICAgIGVuZCA9IChsYXN0ICsgMSkgKiBmbWFwLmJsb2NrX3NpemUKIAorICAgICAgICBpZiBza2lwID49IGVuZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgaWYgc3RhcnQgPCBza2lwIDwgZW5kOgotICAgICAgICAgICAgZm1hcC5fZl9pbWFnZS5zZWVrKHNraXAsIG9zLlNFRUtfU0VUKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm1hcC5fZl9pbWFnZS5zZWVrKHN0YXJ0LCBvcy5TRUVLX1NFVCkKLSAgICAgICAgZHN0X2ZpbGUuc2VlayhvZmZzZXQgKyBzdGFydCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzdGFydCA9IHNraXAKKworICAgICAgICBmbWFwLl9mX2ltYWdlLnNlZWsoc3RhcnQsIG9zLlNFRUtfU0VUKQorCisgICAgICAgIHdyaXR0ZW4gKz0gc3RhcnQgLSBza2lwIC0gd3JpdHRlbgorICAgICAgICBpZiBsZW5ndGggYW5kIHdyaXR0ZW4gPj0gbGVuZ3RoOgorICAgICAgICAgICAgZHN0X2ZpbGUuc2VlayhzZWVrICsgbGVuZ3RoLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIGRzdF9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGRzdF9maWxlLnNlZWsoc2VlayArIHN0YXJ0IC0gc2tpcCwgb3MuU0VFS19TRVQpCiAKICAgICAgICAgY2h1bmtfc2l6ZSA9IDEwMjQgKiAxMDI0CiAgICAgICAgIHRvX3JlYWQgPSBlbmQgLSBzdGFydApAQCAtNTU4LDcgKzU3OSwxNCBAQAogICAgICAgICB3aGlsZSByZWFkIDwgdG9fcmVhZDoKICAgICAgICAgICAgIGlmIHJlYWQgKyBjaHVua19zaXplID4gdG9fcmVhZDoKICAgICAgICAgICAgICAgICBjaHVua19zaXplID0gdG9fcmVhZCAtIHJlYWQKLSAgICAgICAgICAgIGNodW5rID0gZm1hcC5fZl9pbWFnZS5yZWFkKGNodW5rX3NpemUpCisgICAgICAgICAgICBzaXplID0gY2h1bmtfc2l6ZQorICAgICAgICAgICAgaWYgbGVuZ3RoIGFuZCB3cml0dGVuICsgc2l6ZSA+IGxlbmd0aDoKKyAgICAgICAgICAgICAgICBzaXplID0gbGVuZ3RoIC0gd3JpdHRlbgorICAgICAgICAgICAgY2h1bmsgPSBmbWFwLl9mX2ltYWdlLnJlYWQoc2l6ZSkKICAgICAgICAgICAgIGRzdF9maWxlLndyaXRlKGNodW5rKQotICAgICAgICAgICAgcmVhZCArPSBjaHVua19zaXplCisgICAgICAgICAgICByZWFkICs9IHNpemUKKyAgICAgICAgICAgIHdyaXR0ZW4gKz0gc2l6ZQorICAgICAgICAgICAgaWYgd3JpdHRlbiA9PSBsZW5ndGg6CisgICAgICAgICAgICAgICAgZHN0X2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJldHVybgogICAgIGRzdF9maWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQppbmRleCBkNmUwMjdkLi4yYWM0NWUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CkBAIC01Niw3ICs1Niw3IEBACiAgICAgIiIiCiAgICAgU3ViY29tbWFuZCBoZWxwIGRpc3BhdGNoZXIuCiAgICAgIiIiCi0gICAgaWYgbGVuKGFyZ3MpID09IDEgb3Igbm90IGRpc3BsYXlfaGVscChhcmdzWzFdLCBzdWJjb21tYW5kcyk6CisgICAgaWYgYXJncy5oZWxwX3RvcGljID09IE5vbmUgb3Igbm90IGRpc3BsYXlfaGVscChhcmdzLmhlbHBfdG9waWMsIHN1YmNvbW1hbmRzKToKICAgICAgICAgcHJpbnQodXNhZ2Vfc3RyKQogCiAKQEAgLTgyLDE5ICs4MiwyMCBAQAogICAgIERpc3BhdGNoIHRvIHN1YmNvbW1hbmQgaGFuZGxlciBib3Jyb3dlZCBmcm9tIGNvbWJvLWxheWVyLgogICAgIFNob3VsZCB1c2UgYXJncGFyc2UsIGJ1dCBoYXMgdG8gd29yayBpbiAyLjYuCiAgICAgIiIiCi0gICAgaWYgbm90IGFyZ3M6CisgICAgaWYgbm90IGFyZ3MuY29tbWFuZDoKICAgICAgICAgbG9nZ2VyLmVycm9yKCJObyBzdWJjb21tYW5kIHNwZWNpZmllZCwgZXhpdGluZyIpCiAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICAgcmV0dXJuIDEKLSAgICBlbGlmIGFyZ3NbMF0gPT0gImhlbHAiOgorICAgIGVsaWYgYXJncy5jb21tYW5kID09ICJoZWxwIjoKICAgICAgICAgd2ljX2hlbHAoYXJncywgbWFpbl9jb21tYW5kX3VzYWdlLCBzdWJjb21tYW5kcykKLSAgICBlbGlmIGFyZ3NbMF0gbm90IGluIHN1YmNvbW1hbmRzOgotICAgICAgICBsb2dnZXIuZXJyb3IoIlVuc3VwcG9ydGVkIHN1YmNvbW1hbmQgJXMsIGV4aXRpbmdcbiIsIGFyZ3NbMF0pCisgICAgZWxpZiBhcmdzLmNvbW1hbmQgbm90IGluIHN1YmNvbW1hbmRzOgorICAgICAgICBsb2dnZXIuZXJyb3IoIlVuc3VwcG9ydGVkIHN1YmNvbW1hbmQgJXMsIGV4aXRpbmdcbiIsIGFyZ3MuY29tbWFuZCkKICAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQogICAgICAgICByZXR1cm4gMQogICAgIGVsc2U6Ci0gICAgICAgIHVzYWdlID0gc3ViY29tbWFuZHMuZ2V0KGFyZ3NbMF0sIHN1YmNvbW1hbmRfZXJyb3IpWzFdCi0gICAgICAgIHN1YmNvbW1hbmRzLmdldChhcmdzWzBdLCBzdWJjb21tYW5kX2Vycm9yKVswXShhcmdzWzE6XSwgdXNhZ2UpCisgICAgICAgIHN1YmNtZCA9IHN1YmNvbW1hbmRzLmdldChhcmdzLmNvbW1hbmQsIHN1YmNvbW1hbmRfZXJyb3IpCisgICAgICAgIHVzYWdlID0gc3ViY21kWzFdCisgICAgICAgIHN1YmNtZFswXShhcmdzLCB1c2FnZSkKIAogCiAjIwpAQCAtMTMwLDEwICsxMzEsMTAgQEAKICBDcmVhdGUgYSBuZXcgT3BlbkVtYmVkZGVkIGltYWdlCiAKICB1c2FnZTogd2ljIGNyZWF0ZSA8d2tzIGZpbGUgb3IgaW1hZ2UgbmFtZT4gWy1vIDxESVJOQU1FPiB8IC0tb3V0ZGlyIDxESVJOQU1FPl0KLSAgICAgICAgICAgIFstaSA8SlNPTiBQUk9QRVJUWSBGSUxFPiB8IC0taW5maWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQogICAgICAgICAgICAgWy1lIHwgLS1pbWFnZS1uYW1lXSBbLXMsIC0tc2tpcC1idWlsZC1jaGVja10gWy1ELCAtLWRlYnVnXQogICAgICAgICAgICAgWy1yLCAtLXJvb3Rmcy1kaXJdIFstYiwgLS1ib290aW1nLWRpcl0KICAgICAgICAgICAgIFstaywgLS1rZXJuZWwtZGlyXSBbLW4sIC0tbmF0aXZlLXN5c3Jvb3RdIFstZiwgLS1idWlsZC1yb290ZnNdCisgICAgICAgICAgICBbLWMsIC0tY29tcHJlc3Mtd2l0aF0gWy1tLCAtLWJtYXBdCiAKICBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhbiBPcGVuRW1iZWRkZWQgaW1hZ2UgYmFzZWQgb24gdGhlICdPRSBraWNrc3RhcnQKICBjb21tYW5kcycgZm91bmQgaW4gdGhlIDx3a3MgZmlsZT4uCkBAIC0xNTQsNyArMTU1LDcgQEAKICAgICAgICAgWy1lIHwgLS1pbWFnZS1uYW1lXSBbLXMsIC0tc2tpcC1idWlsZC1jaGVja10gWy1ELCAtLWRlYnVnXQogICAgICAgICBbLXIsIC0tcm9vdGZzLWRpcl0gWy1iLCAtLWJvb3RpbWctZGlyXQogICAgICAgICBbLWssIC0ta2VybmVsLWRpcl0gWy1uLCAtLW5hdGl2ZS1zeXNyb290XSBbLWYsIC0tYnVpbGQtcm9vdGZzXQotICAgICAgICBbLWMsIC0tY29tcHJlc3Mtd2l0aF0gWy1tLCAtLWJtYXBdCisgICAgICAgIFstYywgLS1jb21wcmVzcy13aXRoXSBbLW0sIC0tYm1hcF0gWy0tbm8tZnN0YWItdXBkYXRlXQogCiBERVNDUklQVElPTgogICAgIFRoaXMgY29tbWFuZCBjcmVhdGVzIGFuIE9wZW5FbWJlZGRlZCBpbWFnZSBiYXNlZCBvbiB0aGUgJ09FCkBAIC0yMjYsNiArMjI3LDExIEBACiAKICAgICBUaGUgLW0gb3B0aW9uIGlzIHVzZWQgdG8gcHJvZHVjZSAuYm1hcCBmaWxlIGZvciB0aGUgaW1hZ2UuIFRoaXMgZmlsZQogICAgIGNhbiBiZSB1c2VkIHRvIGZsYXNoIGltYWdlIHVzaW5nIGJtYXB0b29sIHV0aWxpdHkuCisKKyAgICBUaGUgLS1uby1mc3RhYi11cGRhdGUgb3B0aW9uIGlzIHVzZWQgdG8gZG9lc24ndCBjaGFuZ2UgZnN0YWIgZmlsZS4gV2hlbgorICAgIHVzaW5nIHRoaXMgb3B0aW9uIHRoZSBmaW5hbCBmc3RhYiBmaWxlIHdpbGwgYmUgc2FtZSB0aGF0IGluIHJvb3RmcyBhbmQKKyAgICB3aWMgZG9lc24ndCB1cGRhdGUgZmlsZSwgZS5nIGFkZGluZyBhIG5ldyBtb3VudCBwb2ludC4gVXNlciBjYW4gY29udHJvbAorICAgIHRoZSBmc3RhYiBmaWxlIGNvbnRlbnQgaW4gYmFzZS1maWxlcyByZWNpcGUuCiAiIiIKIAogd2ljX2xpc3RfdXNhZ2UgPSAiIiIKQEAgLTI4Myw2ICsyODksMjMwIEBACiAgICAgZGV0YWlscy4KICIiIgogCit3aWNfbHNfdXNhZ2UgPSAiIiIKKworIExpc3QgY29udGVudCBvZiBhIHBhcnRpdGlvbmVkIGltYWdlCisKKyB1c2FnZTogd2ljIGxzIDxpbWFnZT5bOjxwYXJ0aXRpb24+WzxwYXRoPl1dIFstLW5hdGl2ZS1zeXNyb290IDxwYXRoPl0KKworIFRoaXMgY29tbWFuZCAgb3V0cHV0cyBlaXRoZXIgbGlzdCBvZiBpbWFnZSBwYXJ0aXRpb25zIG9yIGRpcmVjdG9yeSBjb250ZW50cworIG9mIHZmYXQgYW5kIGV4dCogcGFydGl0aW9ucy4KKworIFNlZSAnd2ljIGhlbHAgbHMnIGZvciBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucy4KKworIiIiCisKK3dpY19sc19oZWxwID0gIiIiCisKK05BTUUKKyAgICB3aWMgbHMgLSBMaXN0IGNvbnRlbnRzIG9mIHBhcnRpdGlvbmVkIGltYWdlIG9yIHBhcnRpdGlvbgorCitTWU5PUFNJUworICAgIHdpYyBscyA8aW1hZ2U+CisgICAgd2ljIGxzIDxpbWFnZT46PHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24+CisgICAgd2ljIGxzIDxpbWFnZT46PHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24+PHBhdGg+CisgICAgd2ljIGxzIDxpbWFnZT46PHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24+PHBhdGg+IC0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+CisKK0RFU0NSSVBUSU9OCisgICAgVGhpcyBjb21tYW5kIGxpc3RzIGVpdGhlciBwYXJ0aXRpb25zIG9mIHRoZSBpbWFnZSBvciBkaXJlY3RvcnkgY29udGVudHMKKyAgICBvZiB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucy4KKworICAgIFRoZSBmaXJzdCBmb3JtIGl0IGxpc3RzIHBhcnRpdGlvbnMgb2YgdGhlIGltYWdlLgorICAgIEZvciBleGFtcGxlOgorICAgICAgICAkIHdpYyBscyB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYworICAgICAgICBOdW0gICAgIFN0YXJ0ICAgICAgICBFbmQgICAgICAgICAgU2l6ZSAgICAgIEZzdHlwZQorICAgICAgICAxICAgICAgICAxMDQ4NTc2ICAgICAyNDQzODc4MyAgICAgMjMzOTAyMDggIGZhdDE2CisgICAgICAgIDIgICAgICAgMjUxNjU4MjQgICAgIDUwMzE1MjYzICAgICAyNTE0OTQ0MCAgZXh0NAorCisgICAgU2Vjb25kIGFuZCB0aGlyZCBmb3JtIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIHBhcnRpdGlvbjoKKyAgICAgICAgJCB3aWMgbHMgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MQorICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyAyREYyLTVGMDIKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi8KKworICAgICAgICBlZmkgICAgICAgICAgPERJUj4gICAgIDIwMTctMDUtMTEgIDEwOjU0CisgICAgICAgIHN0YXJ0dXAgIG5zaCAgICAgICAgMjYgMjAxNy0wNS0xMSAgMTA6NTQKKyAgICAgICAgdm1saW51eiAgICAgICAgNjkyMjI4OCAyMDE3LTA1LTExICAxMDo1NAorICAgICAgICAgICAgICAgIDMgZmlsZXMgICAgICAgICAgIDYgOTIyIDMxNCBieXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgODE4IDc1MiBieXRlcyBmcmVlCisKKworICAgICAgICAkIHdpYyBscyB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYzoxL0VGSS9ib290LworICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyAyREYyLTVGMDIKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi9FRkkvYm9vdAorCisgICAgICAgIC4gICAgICAgICAgICA8RElSPiAgICAgMjAxNy0wNS0xMSAgMTA6NTQKKyAgICAgICAgLi4gICAgICAgICAgIDxESVI+ICAgICAyMDE3LTA1LTExICAxMDo1NAorICAgICAgICBncnViICAgICBjZmcgICAgICAgNjc5IDIwMTctMDUtMTEgIDEwOjU0CisgICAgICAgIGJvb3R4NjQgIGVmaSAgICA1NzEzOTIgMjAxNy0wNS0xMSAgMTA6NTQKKyAgICAgICAgICAgICAgICA0IGZpbGVzICAgICAgICAgICAgIDU3MiAwNzEgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IDgxOCA3NTIgYnl0ZXMgZnJlZQorCisgICAgVGhlIC1uIG9wdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290CisgICAgY29udGFpbmluZyB0aGUgdG9vbHMocGFydGVkIGFuZCBtdG9vbHMpIHRvIHVzZS4KKworIiIiCisKK3dpY19jcF91c2FnZSA9ICIiIgorCisgQ29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24KKworIHVzYWdlOiB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPls8cGF0aD5dIFstLW5hdGl2ZS1zeXNyb290IDxwYXRoPl0KKworIFRoaXMgY29tbWFuZCAgY29waWVzIGxvY2FsIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucworb2YgcGFydGl0aW9uZWQgIGltYWdlLgorCisgU2VlICd3aWMgaGVscCBjcCcgZm9yIG1vcmUgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgorCisiIiIKKword2ljX2NwX2hlbHAgPSAiIiIKKworTkFNRQorICAgIHdpYyBjcCAtIGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucworCitTWU5PUFNJUworICAgIHdpYyBjcCA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+CisgICAgd2ljIGNwIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj48cGF0aD4KKyAgICB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPjxwYXRoPiAtLW5hdGl2ZS1zeXNyb290IDxwYXRoPgorCitERVNDUklQVElPTgorICAgIFRoaXMgY29tbWFuZCBjb3BpZXMgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9uIG9mCisgICAgdGhlIHBhcnRpdGlvbmVkIGltYWdlLgorCisgICAgVGhlIGZpcnN0IGZvcm0gb2YgaXQgY29waWVzIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHRoZSByb290IGRpcmVjdG9yeSBvZgorICAgIHRoZSBwYXJ0aXRpb246CisgICAgICAgICQgd2ljIGNwIHRlc3Qud2tzIHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQud2ljOjEKKyAgICAgICAgJCB3aWMgbHMgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MQorICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyBEQjRDLUZENEMKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi8KKworICAgICAgICBlZmkgICAgICAgICAgPERJUj4gICAgIDIwMTctMDUtMjQgIDE4OjE1CisgICAgICAgIGxvYWRlciAgICAgICA8RElSPiAgICAgMjAxNy0wNS0yNCAgMTg6MTUKKyAgICAgICAgc3RhcnR1cCAgbnNoICAgICAgICAyNiAyMDE3LTA1LTI0ICAxODoxNQorICAgICAgICB2bWxpbnV6ICAgICAgICA2OTI2Mzg0IDIwMTctMDUtMjQgIDE4OjE1CisgICAgICAgIHRlc3QgICAgIHdrcyAgICAgICA2MjggMjAxNy0wNS0yNCAgMjE6MjIKKyAgICAgICAgICAgICAgICA1IGZpbGVzICAgICAgICAgICA2IDkyNyAwMzggYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IDY3NyA0NDAgYnl0ZXMgZnJlZQorCisgICAgVGhlIHNlY29uZCBmb3JtIG9mIHRoZSBjb21tYW5kIGNvcGllcyBmaWxlIG9yIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeQorICAgIG9uIHRoZSBwYXJ0aXRpb246CisgICAgICAgJCB3aWMgY3AgdGVzdCB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYzoxL2VmaS8KKyAgICAgICAkIHdpYyBscyB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYzoxL2VmaS8KKyAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgIFZvbHVtZSBTZXJpYWwgTnVtYmVyIGlzIERCNEMtRkQ0QworICAgICAgIERpcmVjdG9yeSBmb3IgOjovZWZpCisKKyAgICAgICAuICAgICAgICAgICAgPERJUj4gICAgIDIwMTctMDUtMjQgIDE4OjE1CisgICAgICAgLi4gICAgICAgICAgIDxESVI+ICAgICAyMDE3LTA1LTI0ICAxODoxNQorICAgICAgIGJvb3QgICAgICAgICA8RElSPiAgICAgMjAxNy0wNS0yNCAgMTg6MTUKKyAgICAgICB0ZXN0ICAgICAgICAgPERJUj4gICAgIDIwMTctMDUtMjQgIDIxOjI3CisgICAgICAgICAgICAgICA0IGZpbGVzICAgICAgICAgICAgICAgICAgIDAgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgNjc1IDM5MiBieXRlcyBmcmVlCisKKyAgICBUaGUgLW4gb3B0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgbmF0aXZlIHN5c3Jvb3QKKyAgICBjb250YWluaW5nIHRoZSB0b29scyhwYXJ0ZWQgYW5kIG10b29scykgdG8gdXNlLgorIiIiCisKK3dpY19ybV91c2FnZSA9ICIiIgorCisgUmVtb3ZlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGZyb20gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zCisKKyB1c2FnZTogd2ljIHJtIDxpbWFnZT46PHBhcnRpdGlvbj48cGF0aD4gWy0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+XQorCisgVGhpcyBjb21tYW5kICByZW1vdmVzIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGZyb20gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zIG9mCisgdGhlIHBhcnRpdGlvbmVkIGltYWdlLgorCisgU2VlICd3aWMgaGVscCBybScgZm9yIG1vcmUgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgorCisiIiIKKword2ljX3JtX2hlbHAgPSAiIiIKKworTkFNRQorICAgIHdpYyBybSAtIHJlbW92ZSBmaWxlcyBvciBkaXJlY3RvcmllcyBmcm9tIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucworCitTWU5PUFNJUworICAgIHdpYyBybSA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+PHBhdGg+CisgICAgd2ljIHJtIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj48cGF0aD4gLS1uYXRpdmUtc3lzcm9vdCA8cGF0aD4KKworREVTQ1JJUFRJT04KKyAgICBUaGlzIGNvbW1hbmQgcmVtb3ZlcyBmaWxlcyBvciBkaXJlY3RvcmllcyBmcm9tIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9uIG9mIHRoZQorICAgIHBhcnRpdGlvbmVkIGltYWdlOgorCisgICAgICAgICQgd2ljIGxzIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MQorICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyAxMUQwLURFMjEKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi8KKworICAgICAgICBsaWJjb20zMiBjMzIgICAgMTg2NTAwIDIwMTctMDYtMDIgIDE1OjE1CisgICAgICAgIGxpYnV0aWwgIGMzMiAgICAgMjQxNDggMjAxNy0wNi0wMiAgMTU6MTUKKyAgICAgICAgc3lzbGludXggY2ZnICAgICAgIDIwOSAyMDE3LTA2LTAyICAxNToxNQorICAgICAgICB2ZXNhbWVudSBjMzIgICAgIDI3MTA0IDIwMTctMDYtMDIgIDE1OjE1CisgICAgICAgIHZtbGludXogICAgICAgIDY5MjYzODQgMjAxNy0wNi0wMiAgMTU6MTUKKyAgICAgICAgICAgICAgICA1IGZpbGVzICAgICAgICAgICA3IDE2NCAzNDUgYnl0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2IDU4MiA2NTYgYnl0ZXMgZnJlZQorCisgICAgICAgICQgd2ljIHJtIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MS9saWJ1dGlsLmMzMgorCisgICAgICAgICQgd2ljIGxzIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MQorICAgICAgICBWb2x1bWUgaW4gZHJpdmUgOiBpcyBib290CisgICAgICAgICBWb2x1bWUgU2VyaWFsIE51bWJlciBpcyAxMUQwLURFMjEKKyAgICAgICAgRGlyZWN0b3J5IGZvciA6Oi8KKworICAgICAgICBsaWJjb20zMiBjMzIgICAgMTg2NTAwIDIwMTctMDYtMDIgIDE1OjE1CisgICAgICAgIHN5c2xpbnV4IGNmZyAgICAgICAyMDkgMjAxNy0wNi0wMiAgMTU6MTUKKyAgICAgICAgdmVzYW1lbnUgYzMyICAgICAyNzEwNCAyMDE3LTA2LTAyICAxNToxNQorICAgICAgICB2bWxpbnV6ICAgICAgICA2OTI2Mzg0IDIwMTctMDYtMDIgIDE1OjE1CisgICAgICAgICAgICAgICAgNCBmaWxlcyAgICAgICAgICAgNyAxNDAgMTk3IGJ5dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiA2MDcgMjMyIGJ5dGVzIGZyZWUKKworICAgIFRoZSAtbiBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdAorICAgIGNvbnRhaW5pbmcgdGhlIHRvb2xzKHBhcnRlZCBhbmQgbXRvb2xzKSB0byB1c2UuCisiIiIKKword2ljX3dyaXRlX3VzYWdlID0gIiIiCisKKyBXcml0ZSBpbWFnZSB0byBhIGRldmljZQorCisgdXNhZ2U6IHdpYyB3cml0ZSA8aW1hZ2U+IDx0YXJnZXQgZGV2aWNlPiBbLS1leHBhbmQgW3J1bGVzXV0gWy0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+XQorCisgVGhpcyBjb21tYW5kIHdyaXRlcyBwYXJ0aXRpb25lZCBpbWFnZSB0byBhIHRhcmdldCBkZXZpY2UgKFVTQiBzdGljaywgU0QgY2FyZCBldGMpLgorCisgU2VlICd3aWMgaGVscCB3cml0ZScgZm9yIG1vcmUgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgorCisiIiIKKword2ljX3dyaXRlX2hlbHAgPSAiIiIKKworTkFNRQorICAgIHdpYyB3cml0ZSAtIHdyaXRlIGFuIGltYWdlIHRvIGEgZGV2aWNlCisKK1NZTk9QU0lTCisgICAgd2ljIHdyaXRlIDxpbWFnZT4gPHRhcmdldD4KKyAgICB3aWMgd3JpdGUgPGltYWdlPiA8dGFyZ2V0PiAtLWV4cGFuZCBhdXRvCisgICAgd2ljIHdyaXRlIDxpbWFnZT4gPHRhcmdldD4gLS1leHBhbmQgMToxMDBNLTI6MzAwTQorICAgIHdpYyB3cml0ZSA8aW1hZ2U+IDx0YXJnZXQ+IC0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+CisKK0RFU0NSSVBUSU9OCisgICAgVGhpcyBjb21tYW5kIHdyaXRlcyBhbiBpbWFnZSB0byBhIHRhcmdldCBkZXZpY2UgKFVTQiBzdGljaywgU0QgY2FyZCBldGMpCisKKyAgICAgICAgJCB3aWMgd3JpdGUgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LndpYyAvZGV2L3NkYgorCisgICAgVGhlIC0tZXhwYW5kIG9wdGlvbiBpcyB1c2VkIHRvIHJlc2l6ZSBpbWFnZSBwYXJ0aXRpb25zLgorICAgIC0tZXhwYW5kIGF1dG8gZXhwYW5kcyBwYXJ0aXRpb25zIHRvIG9jY3VweSBhbGwgZnJlZSBzcGFjZSBhdmFpbGFibGUgb24gdGhlIHRhcmdldCBkZXZpY2UuCisgICAgSXQncyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgZXhwYW5zaW9uIHJ1bGVzIGluIGEgZm9ybWF0CisgICAgPHBhcnRpdGlvbj46PHNpemU+Wy08cGFydGl0aW9uPjo8c2l6ZT4uLi5dIGZvciBvbmUgb3IgbW9yZSBwYXJ0aXRpb25zLgorICAgIFNwZWNpZnlpbmcgc2l6ZSAwIHdpbGwga2VlcCBwYXJ0aXRpb24gdW5tb2RpZmllZC4KKyAgICBOb3RlOiBSZXNpemluZyBib290IHBhcnRpdGlvbiBjYW4gcmVzdWx0IGluIG5vbi1ib290YWJsZSBpbWFnZSBmb3Igbm9uLUVGSSBpbWFnZXMuIEl0IGlzCisgICAgcmVjb21tZW5kZWQgdG8gdXNlIHNpemUgMCBmb3IgYm9vdCBwYXJ0aXRpb24gdG8ga2VlcCBpbWFnZSBib290YWJsZS4KKworICAgIFRoZSAtLW5hdGl2ZS1zeXNyb290IG9wdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290CisgICAgY29udGFpbmluZyB0aGUgdG9vbHMocGFydGVkLCByZXNpemUyZnMpIHRvIHVzZS4KKyIiIgorCiB3aWNfcGx1Z2luc19oZWxwID0gIiIiCiAKIE5BTUUKQEAgLTc0MCw2ICs5NzAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1maXhlZC1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLgogCisgICAgICAgICAtLXBhcnQtbmFtZTogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBzcGVjaWZpZXMgbmFtZSBmb3IgR1BUIHBhcnRpdGlvbnMuCisKICAgICAgICAgIC0tcGFydC10eXBlOiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IHNwZWNpZmllcyBwYXJ0aXRpb24KICAgICAgICAgICAgICAgICAgICAgICB0eXBlIEdVSUQgZm9yIEdQVCBwYXJ0aXRpb25zLgogICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcGFydGl0aW9uIHR5cGUgR1VJRFMgY2FuIGJlIGZvdW5kIGhlcmU6CkBAIC03NTgsNiArOTkwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBoYXJ3YXJlIHRoYXQgcmVxdWlyZXMgbm9uLWRlZmF1bHQgcGFydGl0aW9uIHN5c3RlbSBpZHMuIFRoZSBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgICAgICAgICBpbiBvbmUgYnl0ZSBsb25nIGhleCBudW1iZXIgZWl0aGVyIHdpdGggMHggcHJlZml4IG9yIHdpdGhvdXQgaXQuCiAKKyAgICAgICAgIC0tbWtmcy1leHRyYW9wdHM6IFRoaXMgb3B0aW9uIHNwZWNpZmllcyBleHRyYSBvcHRpb25zIHRvIHBhc3MgdG8gbWtmcyB1dGlsaXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9URSwgdGhhdCB3aWMgdXNlcyBkZWZhdWx0IG9wdGlvbnMgZm9yIHNvbWUgZmlsZXN5c3RlbXMsIGZvciBleGFtcGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnLVMgNTEyJyBmb3IgbWtmcy5mYXQgb3IgJy1GIC1pIDgxOTInIGZvciBta2ZzLmV4dC4gVGhvc2Ugb3B0aW9ucyB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgdGFrZSBlZmZlY3Qgd2hlbiAtLW1rZnMtZXh0cmFvcHRzIGlzIHVzZWQuIFRoaXMgc2hvdWxkIGJlIHRha2VuIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnQgd2hlbiB1c2luZyAtLW1rZnMtZXh0cmFvcHRzLgorCiAgICAgKiBib290bG9hZGVyCiAKICAgICAgIFRoaXMgY29tbWFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB2YXJpb3VzIGJvb3Rsb2FkZXIKQEAgLTc5NSwzICsxMDMzLDExIEBACiAgICAgICAud2tzIGZpbGVzLgogCiAiIiIKKword2ljX2hlbHBfaGVscCA9ICIiIgorTkFNRQorICAgIHdpYyBoZWxwIC0gZGlzcGxheSBhIGhlbHAgdG9waWMKKworREVTQ1JJUFRJT04KKyAgICBTcGVjaWZ5IGEgaGVscCB0b3BpYyB0byBkaXNwbGF5IGl0LiBUb3BpY3MgYXJlIHNob3duIGFib3ZlLgorIiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQppbmRleCBkMDI2Y2FhLi43ODUwZTgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKQEAgLTExNCw3ICsxMTQsNyBAQAogICAgIHJldHVybiBhcmcKIAogY2xhc3MgS2lja1N0YXJ0KCk6Ci0gICAgIiIiIktpY2tzdGFydCBwYXJzZXIgaW1wbGVtZW50YXRpb24uIiIiCisgICAgIiIiS2lja3N0YXJ0IHBhcnNlciBpbXBsZW1lbnRhdGlvbi4iIiIKIAogICAgIERFRkFVTFRfRVhUUkFfU1BBQ0UgPSAxMCoxMDI0CiAgICAgREVGQVVMVF9PVkVSSEVBRF9GQUNUT1IgPSAxLjMKQEAgLTEzOSwxMCArMTM5LDEyIEBACiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWZzdHlwZScsIGRlZmF1bHQ9J3ZmYXQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPSgnZXh0MicsICdleHQzJywgJ2V4dDQnLCAnYnRyZnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3F1YXNoZnMnLCAndmZhdCcsICdtc2RvcycsICdzd2FwJykpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLW1rZnMtZXh0cmFvcHRzJywgZGVmYXVsdD0nJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tbGFiZWwnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1uby10YWJsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLW9uZGlzaycsICctLW9uZHJpdmUnLCBkZXN0PSdkaXNrJywgZGVmYXVsdD0nc2RhJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoIi0tb3ZlcmhlYWQtZmFjdG9yIiwgdHlwZT1vdmVyaGVhZHR5cGUpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXBhcnQtbmFtZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXBhcnQtdHlwZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXJvb3Rmcy1kaXInKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4ODhiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvbWlzYy5weQpAQCAtMCwwICsxLDI2MyBAQAorIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKKyMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEzLCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisjCisjIERFU0NSSVBUSU9OCisjIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgcGxhY2UgdG8gY29sbGVjdCB2YXJpb3VzIHdpYy1yZWxhdGVkIHV0aWxzCisjIGZvciB0aGUgT3BlbkVtYmVkZGVkIEltYWdlIFRvb2xzLgorIworIyBBVVRIT1JTCisjIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGxpbnV4LmludGVsLmNvbT4KKyMKKyIiIk1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zLiIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KKworZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQorCisjIGV4ZWN1dGFibGUgLT4gcmVjaXBlIHBhaXJzIGZvciBleGVjX25hdGl2ZV9jbWQKK05BVElWRV9SRUNJUEVTID0geyJibWFwdG9vbCI6ICJibWFwLXRvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJncnViLW1raW1hZ2UiOiAiZ3J1Yi1lZmkiLAorICAgICAgICAgICAgICAgICAgImlzb2h5YnJpZCI6ICJzeXNsaW51eCIsCisgICAgICAgICAgICAgICAgICAibWNvcHkiOiAibXRvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJtZGVsIiA6ICJtdG9vbHMiLAorICAgICAgICAgICAgICAgICAgIm1kZWx0cmVlIiA6ICJtdG9vbHMiLAorICAgICAgICAgICAgICAgICAgIm1kaXIiIDogIm10b29scyIsCisgICAgICAgICAgICAgICAgICAibWtkb3NmcyI6ICJkb3Nmc3Rvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJta2lzb2ZzIjogImNkcnRvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLmJ0cmZzIjogImJ0cmZzLXRvb2xzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLmV4dDIiOiAiZTJmc3Byb2dzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLmV4dDMiOiAiZTJmc3Byb2dzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLmV4dDQiOiAiZTJmc3Byb2dzIiwKKyAgICAgICAgICAgICAgICAgICJta2ZzLnZmYXQiOiAiZG9zZnN0b29scyIsCisgICAgICAgICAgICAgICAgICAibWtzcXVhc2hmcyI6ICJzcXVhc2hmcy10b29scyIsCisgICAgICAgICAgICAgICAgICAibWtzd2FwIjogInV0aWwtbGludXgiLAorICAgICAgICAgICAgICAgICAgIm1tZCI6ICJtdG9vbHMiLAorICAgICAgICAgICAgICAgICAgInBhcnRlZCI6ICJwYXJ0ZWQiLAorICAgICAgICAgICAgICAgICAgInNmZGlzayI6ICJ1dGlsLWxpbnV4IiwKKyAgICAgICAgICAgICAgICAgICJzZ2Rpc2siOiAiZ3B0ZmRpc2siLAorICAgICAgICAgICAgICAgICAgInN5c2xpbnV4IjogInN5c2xpbnV4IgorICAgICAgICAgICAgICAgICB9CisKK2RlZiBydW50b29sKGNtZGxuX29yX2FyZ3MpOgorICAgICIiIiB3cmFwcGVyIGZvciBtb3N0IG9mIHRoZSBzdWJwcm9jZXNzIGNhbGxzCisgICAgaW5wdXQ6CisgICAgICAgIGNtZGxuX29yX2FyZ3M6IGNhbiBiZSBib3RoIGFyZ3MgYW5kIGNtZGxuIHN0ciAoc2hlbGw9VHJ1ZSkKKyAgICByZXR1cm46CisgICAgICAgIHJjLCBvdXRwdXQKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKGNtZGxuX29yX2FyZ3MsIGxpc3QpOgorICAgICAgICBjbWQgPSBjbWRsbl9vcl9hcmdzWzBdCisgICAgICAgIHNoZWxsID0gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICBpbXBvcnQgc2hsZXgKKyAgICAgICAgY21kID0gc2hsZXguc3BsaXQoY21kbG5fb3JfYXJncylbMF0KKyAgICAgICAgc2hlbGwgPSBUcnVlCisKKyAgICBzb3V0ID0gc3VicHJvY2Vzcy5QSVBFCisgICAgc2VyciA9IHN1YnByb2Nlc3MuU1RET1VUCisKKyAgICB0cnk6CisgICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZGxuX29yX2FyZ3MsIHN0ZG91dD1zb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c2Vyciwgc2hlbGw9c2hlbGwpCisgICAgICAgIHNvdXQsIHNlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgIyBjb21iaW5lIHN0ZG91dCBhbmQgc3RkZXJyLCBmaWx0ZXIgTm9uZSBvdXQgYW5kIGRlY29kZQorICAgICAgICBvdXQgPSAnJy5qb2luKFtvdXQuZGVjb2RlKCd1dGYtOCcpIGZvciBvdXQgaW4gW3NvdXQsIHNlcnJdIGlmIG91dF0pCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICBpZiBlcnIuZXJybm8gPT0gMjoKKyAgICAgICAgICAgICMgW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCdDYW5ub3QgcnVuIGNvbW1hbmQ6ICVzLCBsb3N0IGRlcGVuZGVuY3k/JyAlIGNtZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlICMgcmVsYXkKKworICAgIHJldHVybiBwcm9jZXNzLnJldHVybmNvZGUsIG91dAorCitkZWYgX2V4ZWNfY21kKGNtZF9hbmRfYXJncywgYXNfc2hlbGw9RmFsc2UpOgorICAgICIiIgorICAgIEV4ZWN1dGUgY29tbWFuZCwgY2F0Y2hpbmcgc3RkZXJyLCBzdGRvdXQKKworICAgIE5lZWQgdG8gZXhlY3V0ZSBhc19zaGVsbCBpZiB0aGUgY29tbWFuZCB1c2VzIHdpbGRjYXJkcworICAgICIiIgorICAgIGxvZ2dlci5kZWJ1ZygiX2V4ZWNfY21kOiAlcyIsIGNtZF9hbmRfYXJncykKKyAgICBhcmdzID0gY21kX2FuZF9hcmdzLnNwbGl0KCkKKyAgICBsb2dnZXIuZGVidWcoYXJncykKKworICAgIGlmIGFzX3NoZWxsOgorICAgICAgICByZXQsIG91dCA9IHJ1bnRvb2woY21kX2FuZF9hcmdzKQorICAgIGVsc2U6CisgICAgICAgIHJldCwgb3V0ID0gcnVudG9vbChhcmdzKQorICAgIG91dCA9IG91dC5zdHJpcCgpCisgICAgaWYgcmV0ICE9IDA6CisgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJfZXhlY19jbWQ6ICVzIHJldHVybmVkICclcycgaW5zdGVhZCBvZiAwXG5vdXRwdXQ6ICVzIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgKGNtZF9hbmRfYXJncywgcmV0LCBvdXQpKQorCisgICAgbG9nZ2VyLmRlYnVnKCJfZXhlY19jbWQ6IG91dHB1dCBmb3IgJXMgKHJjID0gJWQpOiAlcyIsCisgICAgICAgICAgICAgICAgIGNtZF9hbmRfYXJncywgcmV0LCBvdXQpCisKKyAgICByZXR1cm4gcmV0LCBvdXQKKworCitkZWYgZXhlY19jbWQoY21kX2FuZF9hcmdzLCBhc19zaGVsbD1GYWxzZSk6CisgICAgIiIiCisgICAgRXhlY3V0ZSBjb21tYW5kLCByZXR1cm4gb3V0cHV0CisgICAgIiIiCisgICAgcmV0dXJuIF9leGVjX2NtZChjbWRfYW5kX2FyZ3MsIGFzX3NoZWxsKVsxXQorCisKK2RlZiBleGVjX25hdGl2ZV9jbWQoY21kX2FuZF9hcmdzLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvPSIiKToKKyAgICAiIiIKKyAgICBFeGVjdXRlIG5hdGl2ZSBjb21tYW5kLCBjYXRjaGluZyBzdGRlcnIsIHN0ZG91dAorCisgICAgTmVlZCB0byBleGVjdXRlIGFzX3NoZWxsIGlmIHRoZSBjb21tYW5kIHVzZXMgd2lsZGNhcmRzCisKKyAgICBBbHdheXMgbmVlZCB0byBleGVjdXRlIG5hdGl2ZSBjb21tYW5kcyBhc19zaGVsbAorICAgICIiIgorICAgICMgVGhlIHJlYXNvbiAtMSBpcyB1c2VkIGlzIGJlY2F1c2UgdGhlcmUgbWF5IGJlICJleHBvcnQiIGNvbW1hbmRzLgorICAgIGFyZ3MgPSBjbWRfYW5kX2FyZ3Muc3BsaXQoJzsnKVstMV0uc3BsaXQoKQorICAgIGxvZ2dlci5kZWJ1ZyhhcmdzKQorCisgICAgaWYgcHNldWRvOgorICAgICAgICBjbWRfYW5kX2FyZ3MgPSBwc2V1ZG8gKyBjbWRfYW5kX2FyZ3MKKworICAgIG5hdGl2ZV9wYXRocyA9ICIlcy9zYmluOiVzL3Vzci9zYmluOiVzL3Vzci9iaW4iICUgXAorICAgICAgICAgICAgICAgICAgIChuYXRpdmVfc3lzcm9vdCwgbmF0aXZlX3N5c3Jvb3QsIG5hdGl2ZV9zeXNyb290KQorCisgICAgbmF0aXZlX2NtZF9hbmRfYXJncyA9ICJleHBvcnQgUEFUSD0lczokUEFUSDslcyIgJSBcCisgICAgICAgICAgICAgICAgICAgKG5hdGl2ZV9wYXRocywgY21kX2FuZF9hcmdzKQorICAgIGxvZ2dlci5kZWJ1ZygiZXhlY19uYXRpdmVfY21kOiAlcyIsIG5hdGl2ZV9jbWRfYW5kX2FyZ3MpCisKKyAgICAjIElmIHRoZSBjb21tYW5kIGlzbid0IGluIHRoZSBuYXRpdmUgc3lzcm9vdCBzYXkgd2UgZmFpbGVkLgorICAgIGlmIHNwYXduLmZpbmRfZXhlY3V0YWJsZShhcmdzWzBdLCBuYXRpdmVfcGF0aHMpOgorICAgICAgICByZXQsIG91dCA9IF9leGVjX2NtZChuYXRpdmVfY21kX2FuZF9hcmdzLCBUcnVlKQorICAgIGVsc2U6CisgICAgICAgIHJldCA9IDEyNworICAgICAgICBvdXQgPSAiY2FuJ3QgZmluZCBuYXRpdmUgZXhlY3V0YWJsZSAlcyBpbiAlcyIgJSAoYXJnc1swXSwgbmF0aXZlX3BhdGhzKQorCisgICAgcHJvZyA9IGFyZ3NbMF0KKyAgICAjIHNoZWxsIGNvbW1hbmQtbm90LWZvdW5kCisgICAgaWYgcmV0ID09IDEyNyBcCisgICAgICAgb3IgKHBzZXVkbyBhbmQgcmV0ID09IDEgYW5kIG91dCA9PSAiQ2FuJ3QgZmluZCAnJXMnIGluICRQQVRILiIgJSBwcm9nKToKKyAgICAgICAgbXNnID0gIkEgbmF0aXZlIHByb2dyYW0gJXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIGltYWdlICJcCisgICAgICAgICAgICAgICJ3YXMgbm90IGZvdW5kIChzZWUgZGV0YWlscyBhYm92ZSkuXG5cbiIgJSBwcm9nCisgICAgICAgIHJlY2lwZSA9IE5BVElWRV9SRUNJUEVTLmdldChwcm9nKQorICAgICAgICBpZiByZWNpcGU6CisgICAgICAgICAgICBtc2cgKz0gIlBsZWFzZSBtYWtlIHN1cmUgd2ljLXRvb2xzIGhhdmUgJXMtbmF0aXZlIGluIGl0cyBERVBFTkRTLCAiXAorICAgICAgICAgICAgICAgICAgICJidWlsZCBpdCB3aXRoICdiaXRiYWtlIHdpYy10b29scycgYW5kIHRyeSBhZ2Fpbi5cbiIgJSByZWNpcGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyArPSAiV2ljIGZhaWxlZCB0byBmaW5kIGEgcmVjaXBlIHRvIGJ1aWxkIG5hdGl2ZSAlcy4gUGxlYXNlICJcCisgICAgICAgICAgICAgICAgICAgImZpbGUgYSBidWcgYWdhaW5zdCB3aWMuXG4iICUgcHJvZworICAgICAgICByYWlzZSBXaWNFcnJvcihtc2cpCisKKyAgICByZXR1cm4gcmV0LCBvdXQKKworQk9PVEREX0VYVFJBX1NQQUNFID0gMTYzODQKKworY2xhc3MgQml0YmFrZVZhcnMoZGVmYXVsdGRpY3QpOgorICAgICIiIgorICAgIENvbnRhaW5lciBmb3IgQml0YmFrZSB2YXJpYWJsZXMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBkZWZhdWx0ZGljdC5fX2luaXRfXyhzZWxmLCBkaWN0KQorCisgICAgICAgICMgZGVmYXVsdF9pbWFnZSBhbmQgdmFyc19kaXIgYXR0cmlidXRlcyBzaG91bGQgYmUgc2V0IGZyb20gb3V0c2lkZQorICAgICAgICBzZWxmLmRlZmF1bHRfaW1hZ2UgPSBOb25lCisgICAgICAgIHNlbGYudmFyc19kaXIgPSBOb25lCisKKyAgICBkZWYgX3BhcnNlX2xpbmUoc2VsZiwgbGluZSwgaW1hZ2UsIG1hdGNoZXI9cmUuY29tcGlsZShyIl4oW2EtekEtWjAtOVwtXysuL35dKyk9KC4qKSIpKToKKyAgICAgICAgIiIiCisgICAgICAgIFBhcnNlIG9uZSBsaW5lIGZyb20gYml0YmFrZSAtZSBvdXRwdXQgb3IgZnJvbSAuZW52IGZpbGUuCisgICAgICAgIFB1dCByZXN1bHQga2V5LXZhbHVlIHBhaXIgaW50byB0aGUgc3RvcmFnZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmICI9IiBub3QgaW4gbGluZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBtYXRjaCA9IG1hdGNoZXIubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGtleSwgdmFsID0gbWF0Y2guZ3JvdXBzKCkKKyAgICAgICAgc2VsZltpbWFnZV1ba2V5XSA9IHZhbC5zdHJpcCgnIicpCisKKyAgICBkZWYgZ2V0X3ZhcihzZWxmLCB2YXIsIGltYWdlPU5vbmUsIGNhY2hlPVRydWUpOgorICAgICAgICAiIiIKKyAgICAgICAgR2V0IGJpdGJha2UgdmFyaWFibGUgZnJvbSAnYml0YmFrZSAtZScgb3V0cHV0IG9yIGZyb20gLmVudiBmaWxlLgorICAgICAgICBUaGlzIGlzIGEgbGF6eSBtZXRob2QsIGkuZS4gaXQgcnVucyBiaXRiYWtlIG9yIHBhcnNlcyBmaWxlIG9ubHkgd2hlbgorICAgICAgICBvbmx5IHdoZW4gdmFyaWFibGUgaXMgcmVxdWVzdGVkLiBJdCBhbHNvIGNhY2hlcyByZXN1bHRzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGltYWdlOgorICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLmRlZmF1bHRfaW1hZ2UKKworICAgICAgICBpZiBpbWFnZSBub3QgaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIGltYWdlIGFuZCBzZWxmLnZhcnNfZGlyOgorICAgICAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHNlbGYudmFyc19kaXIsIGltYWdlICsgJy5lbnYnKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgIyBwYXJzZSAuZW52IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZuYW1lKSBhcyB2YXJzZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHZhcnNmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX2xpbmUobGluZSwgaW1hZ2UpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGdldCBiaXRiYWtlIHZhcmlhYmxlIGZyb20gJXMuIiAlIGZuYW1lKQorICAgICAgICAgICAgICAgICAgICBwcmludCgiRmlsZSAlcyBkb2Vzbid0IGV4aXN0LiIgJSBmbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgR2V0IGJpdGJha2UgLWUgb3V0cHV0CisgICAgICAgICAgICAgICAgY21kID0gImJpdGJha2UgLWUiCisgICAgICAgICAgICAgICAgaWYgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgIGNtZCArPSAiICVzIiAlIGltYWdlCisKKyAgICAgICAgICAgICAgICBsb2dfbGV2ZWwgPSBsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQorICAgICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCisgICAgICAgICAgICAgICAgcmV0LCBsaW5lcyA9IF9leGVjX2NtZChjbWQpCisgICAgICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ19sZXZlbCkKKworICAgICAgICAgICAgICAgIGlmIHJldDoKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZG4ndCBnZXQgJyVzJyBvdXRwdXQuIiwgY21kKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkJpdGJha2UgZmFpbGVkIHdpdGggZXJyb3I6XG4lc1xuIiwgbGluZXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAgICAgIyBQYXJzZSBiaXRiYWtlIC1lIG91dHB1dAorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV9saW5lKGxpbmUsIGltYWdlKQorCisgICAgICAgICAgICAjIE1ha2UgZmlyc3QgaW1hZ2UgYSBkZWZhdWx0IHNldCBvZiB2YXJpYWJsZXMKKyAgICAgICAgICAgIGlmIGNhY2hlOgorICAgICAgICAgICAgICAgIGltYWdlcyA9IFtrZXkgZm9yIGtleSBpbiBzZWxmIGlmIGtleV0KKyAgICAgICAgICAgICAgICBpZiBsZW4oaW1hZ2VzKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICBzZWxmW05vbmVdID0gc2VsZltpbWFnZV0KKworICAgICAgICByZXN1bHQgPSBzZWxmW2ltYWdlXS5nZXQodmFyKQorICAgICAgICBpZiBub3QgY2FjaGU6CisgICAgICAgICAgICBzZWxmLnBvcChpbWFnZSwgTm9uZSkKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKyMgQ3JlYXRlIEJCX1ZBUlMgc2luZ2xldG9uCitCQl9WQVJTID0gQml0YmFrZVZhcnMoKQorCitkZWYgZ2V0X2JpdGJha2VfdmFyKHZhciwgaW1hZ2U9Tm9uZSwgY2FjaGU9VHJ1ZSk6CisgICAgIiIiCisgICAgUHJvdmlkZSBvbGQgZ2V0X2JpdGJha2VfdmFyIEFQSSBieSB3cmFwcGluZworICAgIGdldF92YXIgbWV0aG9kIG9mIEJCX1ZBUlMgc2luZ2xldG9uLgorICAgICIiIgorICAgIHJldHVybiBCQl9WQVJTLmdldF92YXIodmFyLCBpbWFnZSwgY2FjaGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CmluZGV4IDkzOWU2NjcuLjg0ZmU4NWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CkBAIC0yNiwxMCArMjYsOSBAQAogCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgdGVtcGZpbGUKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCBleGVjX2NtZCwgZXhlY19uYXRpdmVfY21kLCBnZXRfYml0YmFrZV92YXIKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IGV4ZWNfY21kLCBleGVjX25hdGl2ZV9jbWQsIGdldF9iaXRiYWtlX3ZhcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgUGx1Z2luTWdyCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQpAQCAtNDcsMTAgKzQ2LDEyIEBACiAgICAgICAgIHNlbGYuZnNvcHRzID0gYXJncy5mc29wdHMKICAgICAgICAgc2VsZi5mc3R5cGUgPSBhcmdzLmZzdHlwZQogICAgICAgICBzZWxmLmxhYmVsID0gYXJncy5sYWJlbAorICAgICAgICBzZWxmLm1rZnNfZXh0cmFvcHRzID0gYXJncy5ta2ZzX2V4dHJhb3B0cwogICAgICAgICBzZWxmLm1vdW50cG9pbnQgPSBhcmdzLm1vdW50cG9pbnQKICAgICAgICAgc2VsZi5ub190YWJsZSA9IGFyZ3Mubm9fdGFibGUKICAgICAgICAgc2VsZi5udW0gPSBOb25lCiAgICAgICAgIHNlbGYub3ZlcmhlYWRfZmFjdG9yID0gYXJncy5vdmVyaGVhZF9mYWN0b3IKKyAgICAgICAgc2VsZi5wYXJ0X25hbWUgPSBhcmdzLnBhcnRfbmFtZQogICAgICAgICBzZWxmLnBhcnRfdHlwZSA9IGFyZ3MucGFydF90eXBlCiAgICAgICAgIHNlbGYucm9vdGZzX2RpciA9IGFyZ3Mucm9vdGZzX2RpcgogICAgICAgICBzZWxmLnNpemUgPSBhcmdzLnNpemUKQEAgLTIwNSw3ICsyMDYsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcF9wcmVmaXggPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BSRUZJWCIsICIlcy91c3IiICUgbmF0aXZlX3N5c3Jvb3QpCiAgICAgICAgIHBfbG9jYWxzdGF0ZWRpciA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fTE9DQUxTVEFURURJUiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy8uLi9wc2V1ZG8iICUgcm9vdGZzX2RpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLy4uL3BzZXVkbyIgJSAgZ2V0X2JpdGJha2VfdmFyKCJJTUFHRV9ST09URlMiKSkKICAgICAgICAgcF9wYXNzd2QgPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BBU1NXRCIsIHJvb3Rmc19kaXIpCiAgICAgICAgIHBfbm9zeW1saW5rZXhwID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19OT1NZTUxJTktFWFAiLCAiMSIpCiAgICAgICAgIHBzZXVkbyA9ICJleHBvcnQgUFNFVURPX1BSRUZJWD0lczsiICUgcF9wcmVmaXgKQEAgLTI1NywxNCArMjU4LDE0IEBACiAgICAgICAgIHdpdGggb3Blbihyb290ZnMsICd3JykgYXMgc3BhcnNlOgogICAgICAgICAgICAgb3MuZnRydW5jYXRlKHNwYXJzZS5maWxlbm8oKSwgcm9vdGZzX3NpemUgKiAxMDI0KQogCi0gICAgICAgIGV4dHJhX2ltYWdlY21kID0gIi1pIDgxOTIiCisgICAgICAgIGV4dHJhb3B0cyA9IHNlbGYubWtmc19leHRyYW9wdHMgb3IgIi1GIC1pIDgxOTIiCiAKICAgICAgICAgbGFiZWxfc3RyID0gIiIKICAgICAgICAgaWYgc2VsZi5sYWJlbDoKICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItTCAlcyIgJSBzZWxmLmxhYmVsCiAKLSAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtRiAlcyAlcyAlcyAtZCAlcyIgJSBcCi0gICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhX2ltYWdlY21kLCByb290ZnMsIGxhYmVsX3N0ciwgcm9vdGZzX2RpcikKKyAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAlcyAlcyAlcyAtZCAlcyIgJSBcCisgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhb3B0cywgcm9vdGZzLCBsYWJlbF9zdHIsIHJvb3Rmc19kaXIpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChta2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QsIHBzZXVkbz1wc2V1ZG8pCiAKICAgICAgICAgbWtmc19jbWQgPSAiZnNjay4lcyAtcHZmRCAlcyIgJSAoc2VsZi5mc3R5cGUsIHJvb3RmcykKQEAgLTI5MCw4ICsyOTEsOSBAQAogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKIAotICAgICAgICBta2ZzX2NtZCA9ICJta2ZzLiVzIC1iICVkIC1yICVzICVzICVzIiAlIFwKLSAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgcm9vdGZzX3NpemUgKiAxMDI0LCByb290ZnNfZGlyLCBsYWJlbF9zdHIsIHJvb3RmcykKKyAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtYiAlZCAtciAlcyAlcyAlcyAlcyIgJSBcCisgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIHJvb3Rmc19zaXplICogMTAyNCwgcm9vdGZzX2RpciwgbGFiZWxfc3RyLAorICAgICAgICAgICAgIHNlbGYubWtmc19leHRyYW9wdHMsIHJvb3RmcykKICAgICAgICAgZXhlY19uYXRpdmVfY21kKG1rZnNfY21kLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvPXBzZXVkbykKIAogICAgIGRlZiBwcmVwYXJlX3Jvb3Rmc19tc2RvcyhzZWxmLCByb290ZnMsIG9lX2J1aWxkZGlyLCByb290ZnNfZGlyLApAQCAtMzEzLDggKzMxNSwxMCBAQAogICAgICAgICBpZiBzZWxmLmZzdHlwZSA9PSAnbXNkb3MnOgogICAgICAgICAgICAgc2l6ZV9zdHIgPSAiLUYgMTYiICMgRkFUIDE2CiAKLSAgICAgICAgZG9zZnNfY21kID0gIm1rZG9zZnMgJXMgLVMgNTEyICVzIC1DICVzICVkIiAlIChsYWJlbF9zdHIsIHNpemVfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rmcywgcm9vdGZzX3NpemUpCisgICAgICAgIGV4dHJhb3B0cyA9IHNlbGYubWtmc19leHRyYW9wdHMgb3IgJy1TIDUxMicKKworICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAlcyAlcyAlcyAtQyAlcyAlZCIgJSBcCisgICAgICAgICAgICAgICAgICAgIChsYWJlbF9zdHIsIHNpemVfc3RyLCBleHRyYW9wdHMsIHJvb3Rmcywgcm9vdGZzX3NpemUpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChkb3Nmc19jbWQsIG5hdGl2ZV9zeXNyb290KQogCiAgICAgICAgIG1jb3B5X2NtZCA9ICJtY29weSAtaSAlcyAtcyAlcy8qIDo6LyIgJSAocm9vdGZzLCByb290ZnNfZGlyKQpAQCAtMzMwLDggKzMzNCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBQcmVwYXJlIGNvbnRlbnQgZm9yIGEgc3F1YXNoZnMgcm9vdGZzIHBhcnRpdGlvbi4KICAgICAgICAgIiIiCi0gICAgICAgIHNxdWFzaGZzX2NtZCA9ICJta3NxdWFzaGZzICVzICVzIC1ub2FwcGVuZCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgIChyb290ZnNfZGlyLCByb290ZnMpCisgICAgICAgIGV4dHJhb3B0cyA9IHNlbGYubWtmc19leHRyYW9wdHMgb3IgJy1ub2FwcGVuZCcKKyAgICAgICAgc3F1YXNoZnNfY21kID0gIm1rc3F1YXNoZnMgJXMgJXMgJXMiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAocm9vdGZzX2Rpciwgcm9vdGZzLCBleHRyYW9wdHMpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChzcXVhc2hmc19jbWQsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG89cHNldWRvKQogCiAgICAgZGVmIHByZXBhcmVfZW1wdHlfcGFydGl0aW9uX2V4dChzZWxmLCByb290ZnMsIG9lX2J1aWxkZGlyLApAQCAtMzQzLDE0ICszNDgsMTQgQEAKICAgICAgICAgd2l0aCBvcGVuKHJvb3RmcywgJ3cnKSBhcyBzcGFyc2U6CiAgICAgICAgICAgICBvcy5mdHJ1bmNhdGUoc3BhcnNlLmZpbGVubygpLCBzaXplICogMTAyNCkKIAotICAgICAgICBleHRyYV9pbWFnZWNtZCA9ICItaSA4MTkyIgorICAgICAgICBleHRyYW9wdHMgPSBzZWxmLm1rZnNfZXh0cmFvcHRzIG9yICItaSA4MTkyIgogCiAgICAgICAgIGxhYmVsX3N0ciA9ICIiCiAgICAgICAgIGlmIHNlbGYubGFiZWw6CiAgICAgICAgICAgICBsYWJlbF9zdHIgPSAiLUwgJXMiICUgc2VsZi5sYWJlbAogCiAgICAgICAgIG1rZnNfY21kID0gIm1rZnMuJXMgLUYgJXMgJXMgJXMiICUgXAotICAgICAgICAgICAgKHNlbGYuZnN0eXBlLCBleHRyYV9pbWFnZWNtZCwgbGFiZWxfc3RyLCByb290ZnMpCisgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhb3B0cywgbGFiZWxfc3RyLCByb290ZnMpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChta2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICBkZWYgcHJlcGFyZV9lbXB0eV9wYXJ0aXRpb25fYnRyZnMoc2VsZiwgcm9vdGZzLCBvZV9idWlsZGRpciwKQEAgLTM2Niw4ICszNzEsOSBAQAogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKIAotICAgICAgICBta2ZzX2NtZCA9ICJta2ZzLiVzIC1iICVkICVzICVzIiAlIFwKLSAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgc2VsZi5zaXplICogMTAyNCwgbGFiZWxfc3RyLCByb290ZnMpCisgICAgICAgIG1rZnNfY21kID0gIm1rZnMuJXMgLWIgJWQgJXMgJXMgJXMiICUgXAorICAgICAgICAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgc2VsZi5zaXplICogMTAyNCwgbGFiZWxfc3RyLAorICAgICAgICAgICAgICAgICAgICBzZWxmLm1rZnNfZXh0cmFvcHRzLCByb290ZnMpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChta2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICBkZWYgcHJlcGFyZV9lbXB0eV9wYXJ0aXRpb25fbXNkb3Moc2VsZiwgcm9vdGZzLCBvZV9idWlsZGRpciwKQEAgLTM4NSw4ICszOTEsMTEgQEAKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgPT0gJ21zZG9zJzoKICAgICAgICAgICAgIHNpemVfc3RyID0gIi1GIDE2IiAjIEZBVCAxNgogCi0gICAgICAgIGRvc2ZzX2NtZCA9ICJta2Rvc2ZzICVzIC1TIDUxMiAlcyAtQyAlcyAlZCIgJSAobGFiZWxfc3RyLCBzaXplX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290ZnMsIGJsb2NrcykKKyAgICAgICAgZXh0cmFvcHRzID0gc2VsZi5ta2ZzX2V4dHJhb3B0cyBvciAnLVMgNTEyJworCisgICAgICAgIGRvc2ZzX2NtZCA9ICJta2Rvc2ZzICVzICVzICVzIC1DICVzICVkIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3N0ciwgZXh0cmFvcHRzLCBzaXplX3N0ciwgcm9vdGZzLCBibG9ja3MpCisKICAgICAgICAgZXhlY19uYXRpdmVfY21kKGRvc2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICAgICAgY2htb2RfY21kID0gImNobW9kIDY0NCAlcyIgJSByb290ZnMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weQppbmRleCBmYjNkMTc5Li5jMDA5ODIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5CkBAIC0yNCw3ICsyNCw3IEBACiBmcm9tIGltcG9ydGxpYi5tYWNoaW5lcnkgaW1wb3J0IFNvdXJjZUZpbGVMb2FkZXIKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCBnZXRfYml0YmFrZV92YXIKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhcgogCiBQTFVHSU5fVFlQRVMgPSBbImltYWdlciIsICJzb3VyY2UiXQogCkBAIC0xMzcsNCArMTM3LDMgQEAKICAgICAgICAgJ3ByZXBhcmVzJyB0aGUgcGFydGl0aW9uIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBpbWFnZS4KICAgICAgICAgIiIiCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiU291cmNlUGx1Z2luOiBkb19wcmVwYXJlX3BhcnRpdGlvbjogcGFydDogJXMiLCBwYXJ0KQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CmluZGV4IGYyZTYxMjcuLmRhMWMwNjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CkBAIC0yNiwxNyArMjYsMjAgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcworaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdXVpZAogCiBmcm9tIHRpbWUgaW1wb3J0IHN0cmZ0aW1lCiAKK2Zyb20gb2UucGF0aCBpbXBvcnQgY29weWhhcmRsaW5rdHJlZQorCiBmcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKIGZyb20gd2ljLmZpbGVtYXAgaW1wb3J0IHNwYXJzZV9jb3B5CiBmcm9tIHdpYy5rc3BhcnNlciBpbXBvcnQgS2lja1N0YXJ0LCBLaWNrU3RhcnRFcnJvcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgUGx1Z2luTWdyLCBJbWFnZXJQbHVnaW4KLWZyb20gd2ljLnV0aWxzLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhciwgZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZAorZnJvbSB3aWMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyLCBleGVjX2NtZCwgZXhlY19uYXRpdmVfY21kCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC02OCw2ICs3MSw3IEBACiAgICAgICAgIHNlbGYub3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIKICAgICAgICAgc2VsZi5jb21wcmVzc29yID0gb3B0aW9ucy5jb21wcmVzc29yCiAgICAgICAgIHNlbGYuYm1hcCA9IG9wdGlvbnMuYm1hcAorICAgICAgICBzZWxmLm5vX2ZzdGFiX3VwZGF0ZSA9IG9wdGlvbnMubm9fZnN0YWJfdXBkYXRlCiAKICAgICAgICAgc2VsZi5uYW1lID0gIiVzLSVzIiAlIChvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzX2ZpbGUpKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJmdGltZSgiJVklbSVkJUglTSIpKQpAQCAtMTE1LDI0ICsxMTksMzMgQEAKICAgICAgICAgICAgIGZzdGFiX2xpbmVzID0gZnN0YWIucmVhZGxpbmVzKCkKIAogICAgICAgICBpZiBzZWxmLl91cGRhdGVfZnN0YWIoZnN0YWJfbGluZXMsIHNlbGYucGFydHMpOgotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGZzdGFiX3BhdGgsIGZzdGFiX3BhdGggKyAiLm9yaWciKQorICAgICAgICAgICAgIyBjb3B5IHJvb3RmcyBkaXIgdG8gd29ya2RpciB0byB1cGRhdGUgZnN0YWIKKyAgICAgICAgICAgICMgYXMgcm9vdGZzIGNhbiBiZSB1c2VkIGJ5IG90aGVyIHRhc2tzIGFuZCBjYW4ndCBiZSBtb2RpZmllZAorICAgICAgICAgICAgbmV3X3Jvb3RmcyA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKHNlbGYud29ya2RpciwgInJvb3Rmc19jb3B5IikpCisgICAgICAgICAgICBjb3B5aGFyZGxpbmt0cmVlKGltYWdlX3Jvb3RmcywgbmV3X3Jvb3RmcykKKyAgICAgICAgICAgIGZzdGFiX3BhdGggPSBvcy5wYXRoLmpvaW4obmV3X3Jvb3RmcywgJ2V0Yy9mc3RhYicpCisKKyAgICAgICAgICAgIG9zLnVubGluayhmc3RhYl9wYXRoKQogCiAgICAgICAgICAgICB3aXRoIG9wZW4oZnN0YWJfcGF0aCwgInciKSBhcyBmc3RhYjoKICAgICAgICAgICAgICAgICBmc3RhYi53cml0ZWxpbmVzKGZzdGFiX2xpbmVzKQogCi0gICAgICAgICAgICByZXR1cm4gZnN0YWJfcGF0aAorICAgICAgICAgICAgcmV0dXJuIG5ld19yb290ZnMKIAogICAgIGRlZiBfdXBkYXRlX2ZzdGFiKHNlbGYsIGZzdGFiX2xpbmVzLCBwYXJ0cyk6CiAgICAgICAgICIiIkFzc3VtZSBwYXJ0aXRpb24gb3JkZXIgc2FtZSBhcyBpbiB3a3MiIiIKICAgICAgICAgdXBkYXRlZCA9IEZhbHNlCiAgICAgICAgIGZvciBwYXJ0IGluIHBhcnRzOgogICAgICAgICAgICAgaWYgbm90IHBhcnQucmVhbG51bSBvciBub3QgcGFydC5tb3VudHBvaW50IFwKLSAgICAgICAgICAgICAgIG9yIHBhcnQubW91bnRwb2ludCBpbiAoIi8iLCAiL2Jvb3QiKToKKyAgICAgICAgICAgICAgIG9yIHBhcnQubW91bnRwb2ludCA9PSAiLyI6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgIyBtbWMgZGV2aWNlIHBhcnRpdGlvbnMgYXJlIG5hbWVkIG1tY2JsazBwMSwgbW1jYmxrMHAyLi4KLSAgICAgICAgICAgIHByZWZpeCA9ICdwJyBpZiAgcGFydC5kaXNrLnN0YXJ0c3dpdGgoJ21tY2JsaycpIGVsc2UgJycKLSAgICAgICAgICAgIGRldmljZV9uYW1lID0gIi9kZXYvJXMlcyVkIiAlIChwYXJ0LmRpc2ssIHByZWZpeCwgcGFydC5yZWFsbnVtKQorICAgICAgICAgICAgaWYgcGFydC51c2VfdXVpZDoKKyAgICAgICAgICAgICAgICBkZXZpY2VfbmFtZSA9ICJQQVJUVVVJRD0lcyIgJSBwYXJ0LnV1aWQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBtbWMgZGV2aWNlIHBhcnRpdGlvbnMgYXJlIG5hbWVkIG1tY2JsazBwMSwgbW1jYmxrMHAyLi4KKyAgICAgICAgICAgICAgICBwcmVmaXggPSAncCcgaWYgIHBhcnQuZGlzay5zdGFydHN3aXRoKCdtbWNibGsnKSBlbHNlICcnCisgICAgICAgICAgICAgICAgZGV2aWNlX25hbWUgPSAiL2Rldi8lcyVzJWQiICUgKHBhcnQuZGlzaywgcHJlZml4LCBwYXJ0LnJlYWxudW0pCiAKICAgICAgICAgICAgIG9wdHMgPSBwYXJ0LmZzb3B0cyBpZiBwYXJ0LmZzb3B0cyBlbHNlICJkZWZhdWx0cyIKICAgICAgICAgICAgIGxpbmUgPSAiXHQiLmpvaW4oW2RldmljZV9uYW1lLCBwYXJ0Lm1vdW50cG9pbnQsIHBhcnQuZnN0eXBlLApAQCAtMTU2LDcgKzE2OSwxMyBAQAogICAgICAgICBmaWxlc3lzdGVtcyBmcm9tIHRoZSBhcnRpZmFjdHMgZGlyZWN0bHkgYW5kIGNvbWJpbmUgdGhlbSBpbnRvCiAgICAgICAgIGEgcGFydGl0aW9uZWQgaW1hZ2UuCiAgICAgICAgICIiIgotICAgICAgICBmc3RhYl9wYXRoID0gc2VsZi5fd3JpdGVfZnN0YWIoc2VsZi5yb290ZnNfZGlyLmdldCgiUk9PVEZTX0RJUiIpKQorICAgICAgICBpZiBzZWxmLm5vX2ZzdGFiX3VwZGF0ZToKKyAgICAgICAgICAgIG5ld19yb290ZnMgPSBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuZXdfcm9vdGZzID0gc2VsZi5fd3JpdGVfZnN0YWIoc2VsZi5yb290ZnNfZGlyLmdldCgiUk9PVEZTX0RJUiIpKQorICAgICAgICBpZiBuZXdfcm9vdGZzOgorICAgICAgICAgICAgIyByb290ZnMgd2FzIGNvcGllZCB0byB1cGRhdGUgZnN0YWIKKyAgICAgICAgICAgIHNlbGYucm9vdGZzX2RpclsnUk9PVEZTX0RJUiddID0gbmV3X3Jvb3RmcwogCiAgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CiAgICAgICAgICAgICAjIGdldCByb290ZnMgc2l6ZSBmcm9tIGJpdGJha2UgdmFyaWFibGUgaWYgaXQncyBub3Qgc2V0IGluIC5rcyBmaWxlCkBAIC0xNzMsMTAgKzE5Miw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LnNpemUgPSBpbnQocm91bmQoZmxvYXQocnNpemVfYmIpKSkKIAogICAgICAgICBzZWxmLl9pbWFnZS5wcmVwYXJlKHNlbGYpCi0KLSAgICAgICAgaWYgZnN0YWJfcGF0aDoKLSAgICAgICAgICAgIHNodXRpbC5tb3ZlKGZzdGFiX3BhdGggKyAiLm9yaWciLCBmc3RhYl9wYXRoKQotCiAgICAgICAgIHNlbGYuX2ltYWdlLmxheW91dF9wYXJ0aXRpb25zKCkKICAgICAgICAgc2VsZi5faW1hZ2UuY3JlYXRlKCkKIApAQCAtMjA1LDggKzIyMCwxMCBAQAogICAgICAgICAjIEdlbmVyYXRlIC5ibWFwCiAgICAgICAgIGlmIHNlbGYuYm1hcDoKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiR2VuZXJhdGluZyBibWFwIGZpbGUgZm9yICVzIiwgZGlza19uYW1lKQotICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKCJibWFwdG9vbCBjcmVhdGUgJXMgLW8gJXMuYm1hcCIgJSAoZnVsbF9wYXRoLCBmdWxsX3BhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmF0aXZlX3N5c3Jvb3QpCisgICAgICAgICAgICBweXRob24gPSBvcy5wYXRoLmpvaW4oc2VsZi5uYXRpdmVfc3lzcm9vdCwgJ3Vzci9iaW4vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMycpCisgICAgICAgICAgICBibWFwdG9vbCA9IG9zLnBhdGguam9pbihzZWxmLm5hdGl2ZV9zeXNyb290LCAndXNyL2Jpbi9ibWFwdG9vbCcpCisgICAgICAgICAgICBleGVjX25hdGl2ZV9jbWQoIiVzICVzIGNyZWF0ZSAlcyAtbyAlcy5ibWFwIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHl0aG9uLCBibWFwdG9vbCwgZnVsbF9wYXRoLCBmdWxsX3BhdGgpLCBzZWxmLm5hdGl2ZV9zeXNyb290KQogICAgICAgICAjIENvbXByZXNzIHRoZSBpbWFnZQogICAgICAgICBpZiBzZWxmLmNvbXByZXNzb3I6CiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNvbXByZXNzaW5nIGRpc2sgJXMgd2l0aCAlcyIsIGRpc2tfbmFtZSwgc2VsZi5jb21wcmVzc29yKQpAQCAtMjk2LDcgKzMxMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIHBhcnRpdGlvbnMgKGluIGJ5dGVzKQogICAgICAgICBzZWxmLnB0YWJsZV9mb3JtYXQgPSBwdGFibGVfZm9ybWF0ICAjIFBhcnRpdGlvbiB0YWJsZSBmb3JtYXQKICAgICAgICAgIyBEaXNrIHN5c3RlbSBpZGVudGlmaWVyCi0gICAgICAgIHNlbGYuaWRlbnRpZmllciA9IGludC5mcm9tX2J5dGVzKG9zLnVyYW5kb20oNCksICdsaXR0bGUnKQorICAgICAgICBzZWxmLmlkZW50aWZpZXIgPSByYW5kb20uU3lzdGVtUmFuZG9tKCkucmFuZGludCgxLCAweGZmZmZmZmZmKQogCiAgICAgICAgIHNlbGYucGFydGl0aW9ucyA9IHBhcnRpdGlvbnMKICAgICAgICAgc2VsZi5wYXJ0aW1hZ2VzID0gW10KQEAgLTMxMiw3ICszMjksNyBAQAogICAgICAgICAgICAgICAgIHBhcnQucmVhbG51bSA9IDAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVhbG51bSArPSAxCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5wdGFibGVfZm9ybWF0ID09ICdtc2RvcycgYW5kIHJlYWxudW0gPiAzOgorICAgICAgICAgICAgICAgIGlmIHNlbGYucHRhYmxlX2Zvcm1hdCA9PSAnbXNkb3MnIGFuZCByZWFsbnVtID4gMyBhbmQgbGVuKHBhcnRpdGlvbnMpID4gNDoKICAgICAgICAgICAgICAgICAgICAgcGFydC5yZWFsbnVtID0gcmVhbG51bSArIDEKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBwYXJ0LnJlYWxudW0gPSByZWFsbnVtCkBAIC0zNTIsNiArMzY5LDEwIEBACiAgICAgICAgIGZvciBudW0gaW4gcmFuZ2UobGVuKHNlbGYucGFydGl0aW9ucykpOgogICAgICAgICAgICAgcGFydCA9IHNlbGYucGFydGl0aW9uc1tudW1dCiAKKyAgICAgICAgICAgIGlmIHNlbGYucHRhYmxlX2Zvcm1hdCA9PSAnbXNkb3MnIGFuZCBwYXJ0LnBhcnRfbmFtZToKKyAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigic2V0dGluZyBjdXN0b20gcGFydGl0aW9uIG5hbWUgaXMgbm90ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBsZW1lbnRlZCBmb3IgbXNkb3MgcGFydGl0aW9ucyIpCisKICAgICAgICAgICAgIGlmIHNlbGYucHRhYmxlX2Zvcm1hdCA9PSAnbXNkb3MnIGFuZCBwYXJ0LnBhcnRfdHlwZToKICAgICAgICAgICAgICAgICAjIFRoZSAtLXBhcnQtdHlwZSBjYW4gYWxzbyBiZSBpbXBsZW1lbnRlZCBmb3IgTUJSIHBhcnRpdGlvbnMsCiAgICAgICAgICAgICAgICAgIyBpbiB3aGljaCBjYXNlIGl0IHdvdWxkIG1hcCB0byB0aGUgMS1ieXRlICJwYXJ0aXRpb24gdHlwZSIKQEAgLTUwNSw2ICs1MjYsMTMgQEAKICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9wYXJ0aXRpb24oc2VsZi5wYXRoLCBwYXJ0LnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRlZF9mc190eXBlLCBwYXJ0LnN0YXJ0LCBwYXJ0LnNpemVfc2VjKQogCisgICAgICAgICAgICBpZiBwYXJ0LnBhcnRfbmFtZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInBhcnRpdGlvbiAlZDogc2V0IG5hbWUgdG8gJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0Lm51bSwgcGFydC5wYXJ0X25hbWUpCisgICAgICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKCJzZ2Rpc2sgLS1jaGFuZ2UtbmFtZT0lZDolcyAlcyIgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJ0Lm51bSwgcGFydC5wYXJ0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGgpLCBzZWxmLm5hdGl2ZV9zeXNyb290KQorCiAgICAgICAgICAgICBpZiBwYXJ0LnBhcnRfdHlwZToKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInBhcnRpdGlvbiAlZDogc2V0IHR5cGUgVUlEIHRvICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydC5udW0sIHBhcnQucGFydF90eXBlKQpAQCAtNTUwLDcgKzU3OCw3IEBACiAgICAgICAgICAgICBzb3VyY2UgPSBwYXJ0LnNvdXJjZV9maWxlCiAgICAgICAgICAgICBpZiBzb3VyY2U6CiAgICAgICAgICAgICAgICAgIyBpbnN0YWxsIHNvdXJjZV9maWxlIGNvbnRlbnRzIGludG8gYSBwYXJ0aXRpb24KLSAgICAgICAgICAgICAgICBzcGFyc2VfY29weShzb3VyY2UsIHNlbGYucGF0aCwgcGFydC5zdGFydCAqIHNlbGYuc2VjdG9yX3NpemUpCisgICAgICAgICAgICAgICAgc3BhcnNlX2NvcHkoc291cmNlLCBzZWxmLnBhdGgsIHNlZWs9cGFydC5zdGFydCAqIHNlbGYuc2VjdG9yX3NpemUpCiAKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkluc3RhbGxlZCAlcyBpbiBwYXJ0aXRpb24gJWQsIHNlY3RvcnMgJWQtJWQsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpemUgJWQgc2VjdG9ycyIsIHNvdXJjZSwgcGFydC5udW0sIHBhcnQuc3RhcnQsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctZWZpLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLWVmaS5weQppbmRleCA5ODc5Y2I5Li40YzRmMzZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctZWZpLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1lZmkucHkKQEAgLTMxLDggKzMxLDggQEAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMuZW5naW5lIGltcG9ydCBnZXRfY3VzdG9tX2NvbmZpZwogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgU291cmNlUGx1Z2luCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCAoZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZCwgZ2V0X2JpdGJha2VfdmFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJPT1RERF9FWFRSQV9TUEFDRSkKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IChleGVjX2NtZCwgZXhlY19uYXRpdmVfY21kLAorICAgICAgICAgICAgICAgICAgICAgIGdldF9iaXRiYWtlX3ZhciwgQk9PVEREX0VYVFJBX1NQQUNFKQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wYXJ0aXRpb24ucHkKaW5kZXggMTNmZGRiZC4uNjdlNTQ5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5CkBAIC0zMSw3ICszMSw3IEBACiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgU291cmNlUGx1Z2luCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCitmcm9tIHdpYy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgIC0gc2V0cyB1cCBhIHZmYXQgcGFydGl0aW9uCiAgICAgICAgIC0gY29waWVzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gSU1BR0VfQk9PVF9GSUxFUyB2YXJpYWJsZQogICAgICAgICAiIiIKLSAgICAgICAgaGRkZGlyID0gIiVzL2Jvb3QiICUgY3Jfd29ya2RpcgorICAgICAgICBoZGRkaXIgPSAiJXMvYm9vdC4lZCIgJSAoY3Jfd29ya2RpciwgcGFydC5saW5lbm8pCiAgICAgICAgIGluc3RhbGxfY21kID0gImluc3RhbGwgLWQgJXMiICUgaGRkZGlyCiAgICAgICAgIGV4ZWNfY21kKGluc3RhbGxfY21kKQogCkBAIC02NSwxMCArNjUsMTkgQEAKIAogICAgICAgICBsb2dnZXIuZGVidWcoJ0tlcm5lbCBkaXI6ICVzJywgYm9vdGltZ19kaXIpCiAKLSAgICAgICAgYm9vdF9maWxlcyA9IGdldF9iaXRiYWtlX3ZhcigiSU1BR0VfQk9PVF9GSUxFUyIpCisgICAgICAgIGJvb3RfZmlsZXMgPSBOb25lCisgICAgICAgIGZvciAoZm10LCBpZCkgaW4gKCgiX3V1aWQtJXMiLCBwYXJ0LnV1aWQpLCAoIl9sYWJlbC0lcyIsIHBhcnQubGFiZWwpLCAoTm9uZSwgTm9uZSkpOgorICAgICAgICAgICAgaWYgZm10OgorICAgICAgICAgICAgICAgIHZhciA9IGZtdCAlIGlkCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHZhciA9ICIiCiAKLSAgICAgICAgaWYgbm90IGJvb3RfZmlsZXM6Ci0gICAgICAgICAgICByYWlzZSBXaWNFcnJvcignTm8gYm9vdCBmaWxlcyBkZWZpbmVkLCBJTUFHRV9CT09UX0ZJTEVTIHVuc2V0JykKKyAgICAgICAgICAgIGJvb3RfZmlsZXMgPSBnZXRfYml0YmFrZV92YXIoIklNQUdFX0JPT1RfRklMRVMiICsgdmFyKQorICAgICAgICAgICAgaWYgYm9vdF9maWxlcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIGJvb3RfZmlsZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCdObyBib290IGZpbGVzIGRlZmluZWQsIElNQUdFX0JPT1RfRklMRVMgdW5zZXQgZm9yIGVudHJ5ICMlZCcgJSBwYXJ0LmxpbmVubykKIAogICAgICAgICBsb2dnZXIuZGVidWcoJ0Jvb3QgZmlsZXM6ICVzJywgYm9vdF9maWxlcykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBjYmlvcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wY2Jpb3MucHkKaW5kZXggNTg5MGMxMi4uNTZkYTQ2OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBjYmlvcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5CkBAIC0yOSwxMCArMjksOSBAQAogCiBmcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKIGZyb20gd2ljLmVuZ2luZSBpbXBvcnQgZ2V0X2N1c3RvbV9jb25maWcKLWZyb20gd2ljLnV0aWxzIGltcG9ydCBydW5uZXIKIGZyb20gd2ljLnBsdWdpbmJhc2UgaW1wb3J0IFNvdXJjZVBsdWdpbgotZnJvbSB3aWMudXRpbHMubWlzYyBpbXBvcnQgKGV4ZWNfY21kLCBleGVjX25hdGl2ZV9jbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2JpdGJha2VfdmFyLCBCT09URERfRVhUUkFfU1BBQ0UpCitmcm9tIHdpYy5taXNjIGltcG9ydCAoZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZCwKKyAgICAgICAgICAgICAgICAgICAgICBnZXRfYml0YmFrZV92YXIsIEJPT1RERF9FWFRSQV9TUEFDRSkKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dpYycpCiAKQEAgLTQ2LDEwICs0NSw5IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9nZXRfYm9vdGltZ19kaXIoY2xzLCBib290aW1nX2RpciwgZGlybmFtZSk6CiAgICAgICAgICIiIgotICAgICAgICBDaGVjayBpZiBkaXJuYW1lIGV4aXN0cyBpbiBkZWZhdWx0IGJvb3RpbWdfZGlyIG9yCi0gICAgICAgIGluIHdpYy10b29scyBTVEFHSU5HX0RJUi4KKyAgICAgICAgQ2hlY2sgaWYgZGlybmFtZSBleGlzdHMgaW4gZGVmYXVsdCBib290aW1nX2RpciBvciBpbiBTVEFHSU5HX0RJUi4KICAgICAgICAgIiIiCi0gICAgICAgIGZvciByZXN1bHQgaW4gKGJvb3RpbWdfZGlyLCBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfREFUQURJUiIsICJ3aWMtdG9vbHMiKSk6CisgICAgICAgIGZvciByZXN1bHQgaW4gKGJvb3RpbWdfZGlyLCBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfREFUQURJUiIpKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIlcy8lcyIgJSAocmVzdWx0LCBkaXJuYW1lKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC0xODYsNyArMTg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2Jsb2NrcywgcGFydC5tb3VudHBvaW50LCBibG9ja3MpCiAKICAgICAgICAgIyBkb3NmcyBpbWFnZSwgY3JlYXRlZCBieSBta2Rvc2ZzCi0gICAgICAgIGJvb3RpbWcgPSAiJXMvYm9vdC5pbWciICUgY3Jfd29ya2RpcgorICAgICAgICBib290aW1nID0gIiVzL2Jvb3Qlcy5pbWciICUgKGNyX3dvcmtkaXIsIHBhcnQubGluZW5vKQogCiAgICAgICAgIGRvc2ZzX2NtZCA9ICJta2Rvc2ZzIC1uIGJvb3QgLVMgNTEyIC1DICVzICVkIiAlIChib290aW1nLCBibG9ja3MpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChkb3Nmc19jbWQsIG5hdGl2ZV9zeXNyb290KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9pc29pbWFnZS1pc29oeWJyaWQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2lzb2ltYWdlLWlzb2h5YnJpZC5weQppbmRleCAxY2ViYTYyLi5kNmJkM2JmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2lzb2ltYWdlLWlzb2h5YnJpZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2lzb2ltYWdlLWlzb2h5YnJpZC5weQpAQCAtMjksNyArMjksNyBAQAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCiBmcm9tIHdpYy5lbmdpbmUgaW1wb3J0IGdldF9jdXN0b21fY29uZmlnCiBmcm9tIHdpYy5wbHVnaW5iYXNlIGltcG9ydCBTb3VyY2VQbHVnaW4KLWZyb20gd2ljLnV0aWxzLm1pc2MgaW1wb3J0IGV4ZWNfY21kLCBleGVjX25hdGl2ZV9jbWQsIGdldF9iaXRiYWtlX3ZhcgorZnJvbSB3aWMubWlzYyBpbXBvcnQgZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZCwgZ2V0X2JpdGJha2VfdmFyCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC05NSw3ICs5NSw3IEBACiAgICAgICAgICAgICBjZmcud3JpdGUoc3lzbGludXhfY29uZikKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBkb19jb25maWd1cmVfZ3J1YmVmaShjbHMsIHBhcnQsIGNyZWF0b3IsIGNyX3dvcmtkaXIpOgorICAgIGRlZiBkb19jb25maWd1cmVfZ3J1YmVmaShjbHMsIHBhcnQsIGNyZWF0b3IsIHRhcmdldF9kaXIpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGxvYWRlci1zcGVjaWZpYyAoZ3J1Yi1lZmkpIGNvbmZpZwogICAgICAgICAiIiIKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJjb25maWdmaWxlIGlzIHNwZWNpZmllZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBmYWlsZWQgdG8gZ2V0IGl0IGZyb20gJXMiLCBjb25maWdmaWxlKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3BsYXNoID0gb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICJFRkkvYm9vdC9zcGxhc2guanBnIikKKyAgICAgICAgICAgIHNwbGFzaCA9IG9zLnBhdGguam9pbih0YXJnZXRfZGlyLCAic3BsYXNoLmpwZyIpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzcGxhc2gpOgogICAgICAgICAgICAgICAgIHNwbGFzaGxpbmUgPSAibWVudSBiYWNrZ3JvdW5kIHNwbGFzaC5qcGciCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTM3LDkgKzEzNywxMCBAQAogICAgICAgICAgICAgaWYgc3BsYXNobGluZToKICAgICAgICAgICAgICAgICBncnViZWZpX2NvbmYgKz0gIiVzXG4iICUgc3BsYXNobGluZQogCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygiV3JpdGluZyBncnViZWZpIGNvbmZpZyAlcy9FRkkvQk9PVC9ncnViLmNmZyIsIGNyX3dvcmtkaXIpCisgICAgICAgIGNmZ19wYXRoID0gb3MucGF0aC5qb2luKHRhcmdldF9kaXIsICJncnViLmNmZyIpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiV3JpdGluZyBncnViZWZpIGNvbmZpZyAlcyIsIGNmZ19wYXRoKQogCi0gICAgICAgIHdpdGggb3BlbigiJXMvRUZJL0JPT1QvZ3J1Yi5jZmciICUgY3Jfd29ya2RpciwgInciKSBhcyBjZmc6CisgICAgICAgIHdpdGggb3BlbihjZmdfcGF0aCwgInciKSBhcyBjZmc6CiAgICAgICAgICAgICBjZmcud3JpdGUoZ3J1YmVmaV9jb25mKQogCiAgICAgQHN0YXRpY21ldGhvZApAQCAtMTYyLDEzICsxNjMsMTQgQEAKICAgICAgICAgICAgIGlmIG5vdCBpbWFnZV90eXBlOgogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDb3VsZG4ndCBmaW5kIElOSVRSQU1GU19GU1RZUEVTLCBleGl0aW5nLiIpCiAKLSAgICAgICAgICAgIHRhcmdldF9hcmNoID0gZ2V0X2JpdGJha2VfdmFyKCJUUkFOU0xBVEVEX1RBUkdFVF9BUkNIIikKLSAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfYXJjaDoKLSAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBUUkFOU0xBVEVEX1RBUkdFVF9BUkNILCBleGl0aW5nLiIpCisgICAgICAgICAgICBtYWNoaW5lID0gb3MucGF0aC5iYXNlbmFtZShpbml0cmRfZGlyKQogCi0gICAgICAgICAgICBpbml0cmQgPSBnbG9iLmdsb2IoJyVzLyVzKiVzLiVzJyAlIChpbml0cmRfZGlyLCBpbWFnZV9uYW1lLCB0YXJnZXRfYXJjaCwgaW1hZ2VfdHlwZSkpWzBdCisgICAgICAgICAgICBwYXR0ZXJuID0gJyVzLyVzKiVzLiVzJyAlIChpbml0cmRfZGlyLCBpbWFnZV9uYW1lLCBtYWNoaW5lLCBpbWFnZV90eXBlKQorICAgICAgICAgICAgZmlsZXMgPSBnbG9iLmdsb2IocGF0dGVybikKKyAgICAgICAgICAgIGlmIGZpbGVzOgorICAgICAgICAgICAgICAgIGluaXRyZCA9IGZpbGVzWzBdCiAKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGluaXRyZCk6CisgICAgICAgIGlmIG5vdCBpbml0cmQgb3Igbm90IG9zLnBhdGguZXhpc3RzKGluaXRyZCk6CiAgICAgICAgICAgICAjIENyZWF0ZSBpbml0cmQgZnJvbSByb290ZnMgZGlyZWN0b3J5CiAgICAgICAgICAgICBpbml0cmQgPSAiJXMvaW5pdHJkLmNwaW8uZ3oiICUgY3Jfd29ya2RpcgogICAgICAgICAgICAgaW5pdHJkX2RpciA9ICIlcy9JTklUUkQiICUgY3Jfd29ya2RpcgpAQCAtMjA2LDggKzIwOCw4IEBACiAgICAgICAgICIiIgogICAgICAgICBpc29kaXIgPSAiJXMvSVNPLyIgJSBjcl93b3JrZGlyCiAKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY3Jfd29ya2Rpcik6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGNyX3dvcmtkaXIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGlzb2Rpcik6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGlzb2RpcikKIAogICAgICAgICBpbnN0YWxsX2NtZCA9ICJpbnN0YWxsIC1kICVzICIgJSBpc29kaXIKICAgICAgICAgZXhlY19jbWQoaW5zdGFsbF9jbWQpCkBAIC0zMTIsMjAgKzMxNCwxMyBAQAogCiAgICAgICAgICNDcmVhdGUgYm9vdGxvYWRlciBmb3IgZWZpIGJvb3QKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGFyZ2V0X2RpciA9ICIlcy9FRkkvQk9PVCIgJSBpc29kaXIKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRhcmdldF9kaXIpOgorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGFyZ2V0X2RpcikKKworICAgICAgICAgICAgb3MubWFrZWRpcnModGFyZ2V0X2RpcikKKwogICAgICAgICAgICAgaWYgc291cmNlX3BhcmFtc1snbG9hZGVyJ10gPT0gJ2dydWItZWZpJzoKLSAgICAgICAgICAgICAgICAjIEJ1aWxkcyBncnViLmNmZyBpZiBJU09ESVIgZGlkbid0IGV4aXN0IG9yCi0gICAgICAgICAgICAgICAgIyBkaWRuJ3QgY29udGFpbnMgZ3J1Yi5jZmcKLSAgICAgICAgICAgICAgICBib290aW1nX2RpciA9IGltZ19pc29fZGlyCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCIlcy9FRkkvQk9PVCIgJSBib290aW1nX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIGJvb3RpbWdfZGlyID0gIiVzL2Jvb3RpbWciICUgY3Jfd29ya2RpcgotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhib290aW1nX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGJvb3RpbWdfZGlyKQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX2NtZCA9ICJpbnN0YWxsIC1kICVzL0VGSS9CT09UIiAlIGJvb3RpbWdfZGlyCi0gICAgICAgICAgICAgICAgICAgIGV4ZWNfY21kKGluc3RhbGxfY21kKQotCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKCIlcy9FRkkvQk9PVC9ib290LmNmZyIgJSBib290aW1nX2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIGNscy5kb19jb25maWd1cmVfZ3J1YmVmaShwYXJ0LCBjcmVhdG9yLCBib290aW1nX2RpcikKLQogICAgICAgICAgICAgICAgICMgQnVpbGRzIGJvb3R4NjQuZWZpL2Jvb3RpYTMyLmVmaSBpZiBJU09ESVIgZGlkbid0IGV4aXN0IG9yCiAgICAgICAgICAgICAgICAgIyBkaWRuJ3QgY29udGFpbnMgaXQKICAgICAgICAgICAgICAgICB0YXJnZXRfYXJjaCA9IGdldF9iaXRiYWtlX3ZhcigiVEFSR0VUX1NZUyIpCkBAIC0zMzMsMzcgKzMyOCwyMyBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ29sdWRuJ3QgZmluZCB0YXJnZXQgYXJjaGl0ZWN0dXJlIikKIAogICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKCJ4ODZfNjQiLCB0YXJnZXRfYXJjaCk6Ci0gICAgICAgICAgICAgICAgICAgIGdydWJfdGFyZ2V0ID0gJ3g4Nl82NC1lZmknCi0gICAgICAgICAgICAgICAgICAgIGdydWJfaW1hZ2UgPSAiYm9vdHg2NC5lZmkiCisgICAgICAgICAgICAgICAgICAgIGdydWJfaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdHg2NC5lZmkiCiAgICAgICAgICAgICAgICAgZWxpZiByZS5tYXRjaCgnaS44NicsIHRhcmdldF9hcmNoKToKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl90YXJnZXQgPSAnaTM4Ni1lZmknCi0gICAgICAgICAgICAgICAgICAgIGdydWJfaW1hZ2UgPSAiYm9vdGlhMzIuZWZpIgorICAgICAgICAgICAgICAgICAgICBncnViX2ltYWdlID0gImdydWItZWZpLWJvb3RpYTMyLmVmaSIKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiZ3J1Yi1lZmkgaXMgaW5jb21wYXRpYmxlIHdpdGggdGFyZ2V0ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9hcmNoKQogCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKCIlcy9FRkkvQk9PVC8lcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChib290aW1nX2RpciwgZ3J1Yl9pbWFnZSkpOgotICAgICAgICAgICAgICAgICAgICBncnViX3BhdGggPSBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfTElCRElSIiwgIndpYy10b29scyIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBncnViX3BhdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBTVEFHSU5HX0xJQkRJUiwgZXhpdGluZy4iKQorICAgICAgICAgICAgICAgIGdydWJfdGFyZ2V0ID0gb3MucGF0aC5qb2luKHRhcmdldF9kaXIsIGdydWJfaW1hZ2UpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGdydWJfdGFyZ2V0KToKKyAgICAgICAgICAgICAgICAgICAgZ3J1Yl9zcmMgPSBvcy5wYXRoLmpvaW4oZGVwbG95X2RpciwgZ3J1Yl9pbWFnZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGdydWJfc3JjKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJHcnViIGxvYWRlciAlcyBpcyBub3QgZm91bmQgaW4gJXMuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgYnVpbGQgZ3J1Yi1lZmkgZmlyc3QiICUgKGdydWJfaW1hZ2UsIGRlcGxveV9kaXIpKQorICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weShncnViX3NyYywgZ3J1Yl90YXJnZXQpCiAKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jb3JlID0gIiVzL2dydWIvJXMiICUgKGdydWJfcGF0aCwgZ3J1Yl90YXJnZXQpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhncnViX2NvcmUpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlBsZWFzZSBidWlsZCBncnViLWVmaSBmaXJzdCIpCi0KLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgPSAiZ3J1Yi1ta2ltYWdlIC1wICcvRUZJL0JPT1QnICIKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgKz0gIi1kICVzICIgICUgZ3J1Yl9jb3JlCi0gICAgICAgICAgICAgICAgICAgIGdydWJfY21kICs9ICItTyAlcyAtbyAlcy9FRkkvQk9PVC8lcyAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZ3J1Yl90YXJnZXQsIGJvb3RpbWdfZGlyLCBncnViX2ltYWdlKQotICAgICAgICAgICAgICAgICAgICBncnViX2NtZCArPSAicGFydF9ncHQgcGFydF9tc2RvcyBudGZzIG50ZnNjb21wIGZhdCBleHQyICIKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgKz0gIm5vcm1hbCBjaGFpbiBib290IGNvbmZpZ2ZpbGUgbGludXggbXVsdGlib290ICIKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgKz0gInNlYXJjaCBlZmlfZ29wIGVmaV91Z2EgZm9udCBnZnh0ZXJtIGdmeG1lbnUgIgotICAgICAgICAgICAgICAgICAgICBncnViX2NtZCArPSAidGVybWluYWwgbWluaWNtZCB0ZXN0IGlvcncgbG9hZGVudiBlY2hvIGhlbHAgIgotICAgICAgICAgICAgICAgICAgICBncnViX2NtZCArPSAicmVib290IHNlcmlhbCB0ZXJtaW5mbyBpc285NjYwIGxvb3BiYWNrIHRhciAiCi0gICAgICAgICAgICAgICAgICAgIGdydWJfY21kICs9ICJtZW1kaXNrIGxzIHNlYXJjaF9mc191dWlkIHVkZiBidHJmcyB4ZnMgbHZtICIKLSAgICAgICAgICAgICAgICAgICAgZ3J1Yl9jbWQgKz0gInJlaXNlcmZzIGF0YSAiCi0gICAgICAgICAgICAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChncnViX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbih0YXJnZXRfZGlyLCAiYm9vdC5jZmciKSk6CisgICAgICAgICAgICAgICAgICAgIGNscy5kb19jb25maWd1cmVfZ3J1YmVmaShwYXJ0LCBjcmVhdG9yLCB0YXJnZXRfZGlyKQogCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJ1bnJlY29nbml6ZWQgYm9vdGltZy1lZmkgbG9hZGVyOiAlcyIgJQpAQCAtMzcxLDE1ICszNTIsNiBAQAogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiYm9vdGltZy1lZmkgcmVxdWlyZXMgYSBsb2FkZXIsIG5vbmUgc3BlY2lmaWVkIikKIAotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiJXMvRUZJL0JPT1QiICUgaXNvZGlyKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoIiVzL0VGSS9CT09UIiAlIGlzb2RpcikKLQotICAgICAgICBzaHV0aWwuY29weXRyZWUoYm9vdGltZ19kaXIrIi9FRkkvQk9PVCIsIGlzb2RpcisiL0VGSS9CT09UIikKLQotICAgICAgICAjIElmIGV4aXN0cywgcmVtb3ZlIGNyX3dvcmtkaXIvYm9vdGltZyB0ZW1wb3JhcnkgZm9sZGVyCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIlcy9ib290aW1nIiAlIGNyX3dvcmtkaXIpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSgiJXMvYm9vdGltZyIgJSBjcl93b3JrZGlyKQotCiAgICAgICAgICMgQ3JlYXRlIGVmaS5pbWcgdGhhdCBjb250YWlucyBib290bG9hZGVyIGZpbGVzIGZvciBFRkkgYm9vdGluZwogICAgICAgICAjIGlmIElTT0RJUiBkaWRuJ3QgZXhpc3Qgb3IgZGlkbid0IGNvbnRhaW5zIGl0CiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKCIlcy9lZmkuaW1nIiAlIGltZ19pc29fZGlyKToKQEAgLTQxMyw3ICszODUsNyBAQAogICAgICAgICAgICAgZXhlY19jbWQoY2htb2RfY21kKQogCiAgICAgICAgICMgUHJlcGFyZSBmaWxlcyBmb3IgbGVnYWN5IGJvb3QKLSAgICAgICAgc3lzbGludXhfZGlyID0gZ2V0X2JpdGJha2VfdmFyKCJTVEFHSU5HX0RBVEFESVIiLCAid2ljLXRvb2xzIikKKyAgICAgICAgc3lzbGludXhfZGlyID0gZ2V0X2JpdGJha2VfdmFyKCJTVEFHSU5HX0RBVEFESVIiKQogICAgICAgICBpZiBub3Qgc3lzbGludXhfZGlyOgogICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNvdWxkbid0IGZpbmQgU1RBR0lOR19EQVRBRElSLCBleGl0aW5nLiIpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weQppbmRleCBlMWM0ZjVlLi5lODYzOThhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jhd2NvcHkucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yYXdjb3B5LnB5CkBAIC0yMCw3ICsyMCw3IEBACiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgU291cmNlUGx1Z2luCi1mcm9tIHdpYy51dGlscy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCitmcm9tIHdpYy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCiBmcm9tIHdpYy5maWxlbWFwIGltcG9ydCBzcGFyc2VfY29weQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKQEAgLTMyLDYgKzMyLDI1IEBACiAKICAgICBuYW1lID0gJ3Jhd2NvcHknCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGRvX2ltYWdlX2xhYmVsKGZzdHlwZSwgZHN0LCBsYWJlbCk6CisgICAgICAgIGlmIGZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKKyAgICAgICAgICAgIGNtZCA9ICd0dW5lMmZzIC1MICVzICVzJyAlIChsYWJlbCwgZHN0KQorICAgICAgICBlbGlmIGZzdHlwZSBpbiAoJ21zZG9zJywgJ3ZmYXQnKToKKyAgICAgICAgICAgIGNtZCA9ICdkb3Nmc2xhYmVsICVzICVzJyAlIChkc3QsIGxhYmVsKQorICAgICAgICBlbGlmIGZzdHlwZSA9PSAnYnRyZnMnOgorICAgICAgICAgICAgY21kID0gJ2J0cmZzIGZpbGVzeXN0ZW0gbGFiZWwgJXMgJXMnICUgKGRzdCwgbGFiZWwpCisgICAgICAgIGVsaWYgZnN0eXBlID09ICdzd2FwJzoKKyAgICAgICAgICAgIGNtZCA9ICdta3N3YXAgLUwgJXMgJXMnICUgKGxhYmVsLCBkc3QpCisgICAgICAgIGVsaWYgZnN0eXBlID09ICdzcXVhc2hmcyc6CisgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiSXQncyBub3QgcG9zc2libGUgdG8gdXBkYXRlIGEgc3F1YXNoZnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVzeXN0ZW0gbGFiZWwgJyVzJyIgJSAobGFiZWwpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNhbm5vdCB1cGRhdGUgZmlsZXN5c3RlbSBsYWJlbDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZnN0eXBlOiAnJXMnIiAlIChmc3R5cGUpKQorCisgICAgICAgIGV4ZWNfY21kKGNtZCkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBkb19wcmVwYXJlX3BhcnRpdGlvbihjbHMsIHBhcnQsIHNvdXJjZV9wYXJhbXMsIGNyLCBjcl93b3JrZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZV9idWlsZGRpciwgYm9vdGltZ19kaXIsIGtlcm5lbF9kaXIsCkBAIC02Niw0ICs4NSw3IEBACiAgICAgICAgIGlmIGZpbGVzaXplID4gcGFydC5zaXplOgogICAgICAgICAgICAgcGFydC5zaXplID0gZmlsZXNpemUKIAorICAgICAgICBpZiBwYXJ0LmxhYmVsOgorICAgICAgICAgICAgUmF3Q29weVBsdWdpbi5kb19pbWFnZV9sYWJlbChwYXJ0LmZzdHlwZSwgZHN0LCBwYXJ0LmxhYmVsKQorCiAgICAgICAgIHBhcnQuc291cmNlX2ZpbGUgPSBkc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2Uvcm9vdGZzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKaW5kZXggZjJlMmNhOC4uYWVjNzIwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKQEAgLTI4LDEyICsyOCwxMyBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cwogCiBmcm9tIG9lLnBhdGggaW1wb3J0IGNvcHloYXJkbGlua3RyZWUKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCiBmcm9tIHdpYy5wbHVnaW5iYXNlIGltcG9ydCBTb3VyY2VQbHVnaW4KLWZyb20gd2ljLnV0aWxzLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhciwgZXhlY19jbWQKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhcgogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKIApAQCAtNDcsNyArNDgsNyBAQAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX19nZXRfcm9vdGZzX2Rpcihyb290ZnNfZGlyKToKICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihyb290ZnNfZGlyKToKLSAgICAgICAgICAgIHJldHVybiByb290ZnNfZGlyCisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5yZWFscGF0aChyb290ZnNfZGlyKQogCiAgICAgICAgIGltYWdlX3Jvb3Rmc19kaXIgPSBnZXRfYml0YmFrZV92YXIoIklNQUdFX1JPT1RGUyIsIHJvb3Rmc19kaXIpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGltYWdlX3Jvb3Rmc19kaXIpOgpAQCAtNTUsNyArNTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkICVzIGhhcyBiZWVuIGZvdW5kIGF0ICVzLCBleGl0aW5nLiIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJvb3Rmc19kaXIsIGltYWdlX3Jvb3Rmc19kaXIpKQogCi0gICAgICAgIHJldHVybiBpbWFnZV9yb290ZnNfZGlyCisgICAgICAgIHJldHVybiBvcy5wYXRoLnJlYWxwYXRoKGltYWdlX3Jvb3Rmc19kaXIpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjciwgY3Jfd29ya2RpciwKQEAgLTgwLDI1ICs4MSwyNSBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDb3VsZG4ndCBmaW5kIC0tcm9vdGZzLWRpcj0lcyBjb25uZWN0aW9uIG9yICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXQgaXMgbm90IGEgdmFsaWQgcGF0aCwgZXhpdGluZyIgJSBwYXJ0LnJvb3Rmc19kaXIpCiAKLSAgICAgICAgcmVhbF9yb290ZnNfZGlyID0gY2xzLl9fZ2V0X3Jvb3Rmc19kaXIocm9vdGZzX2RpcikKKyAgICAgICAgcGFydC5yb290ZnNfZGlyID0gY2xzLl9fZ2V0X3Jvb3Rmc19kaXIocm9vdGZzX2RpcikKIAorICAgICAgICBuZXdfcm9vdGZzID0gTm9uZQogICAgICAgICAjIEhhbmRsZSBleGNsdWRlZCBwYXRocy4KICAgICAgICAgaWYgcGFydC5leGNsdWRlX3BhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAjIFdlIG5lZWQgYSBuZXcgcm9vdGZzIGRpcmVjdG9yeSB3ZSBjYW4gZGVsZXRlIGZpbGVzIGZyb20uIENvcHkgdG8KICAgICAgICAgICAgICMgd29ya2Rpci4KLSAgICAgICAgICAgIG5ld19yb290ZnMgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihjcl93b3JrZGlyLCAicm9vdGZzIikpCisgICAgICAgICAgICBuZXdfcm9vdGZzID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oY3Jfd29ya2RpciwgInJvb3RmcyVkIiAlIHBhcnQubGluZW5vKSkKIAogICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKG5ld19yb290ZnMpOgogICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5qb2luKG5ld19yb290ZnMpKQogCi0gICAgICAgICAgICBjb3B5aGFyZGxpbmt0cmVlKHJlYWxfcm9vdGZzX2RpciwgbmV3X3Jvb3RmcykKLQotICAgICAgICAgICAgcmVhbF9yb290ZnNfZGlyID0gbmV3X3Jvb3RmcworICAgICAgICAgICAgY29weWhhcmRsaW5rdHJlZShwYXJ0LnJvb3Rmc19kaXIsIG5ld19yb290ZnMpCiAKICAgICAgICAgICAgIGZvciBvcmlnX3BhdGggaW4gcGFydC5leGNsdWRlX3BhdGg6CiAgICAgICAgICAgICAgICAgcGF0aCA9IG9yaWdfcGF0aAogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNhYnMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIG1zZ2VyLmVycm9yKCJNdXN0IGJlIHJlbGF0aXZlOiAtLWV4Y2x1ZGUtcGF0aD0lcyIgJSBvcmlnX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiTXVzdCBiZSByZWxhdGl2ZTogLS1leGNsdWRlLXBhdGg9JXMiICUgb3JpZ19wYXRoKQorICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4obmV3X3Jvb3RmcywgcGF0aCkpCiAKQEAgLTEwNiw3ICsxMDcsOCBAQAogICAgICAgICAgICAgICAgICMgYmVjYXVzZSBkb2luZyBzbyBjb3VsZCBiZSBxdWl0ZSBkaXNhc3Ryb3VzICh3ZSB3aWxsIGRlbGV0ZSB0aGUKICAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSkuCiAgICAgICAgICAgICAgICAgaWYgbm90IGZ1bGxfcGF0aC5zdGFydHN3aXRoKG5ld19yb290ZnMpOgotICAgICAgICAgICAgICAgICAgICBtc2dlci5lcnJvcigiJyVzJyBwb2ludHMgdG8gYSBwYXRoIG91dHNpZGUgdGhlIHJvb3RmcyIgJSBvcmlnX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJyVzJyBwb2ludHMgdG8gYSBwYXRoIG91dHNpZGUgdGhlIHJvb3RmcyIgJSBvcmlnX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKICAgICAgICAgICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKG9zLnNlcCk6CiAgICAgICAgICAgICAgICAgICAgICMgRGVsZXRlIGNvbnRlbnQgb25seS4KQEAgLTEyMCw2ICsxMjIsNSBAQAogICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZSB3aG9sZSBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZnVsbF9wYXRoKQogCi0gICAgICAgIHBhcnQucm9vdGZzX2RpciA9IHJlYWxfcm9vdGZzX2RpcgogICAgICAgICBwYXJ0LnByZXBhcmVfcm9vdGZzKGNyX3dvcmtkaXIsIG9lX2J1aWxkZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxfcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvb3RmcyBvciBwYXJ0LnJvb3Rmc19kaXIsIG5hdGl2ZV9zeXNyb290KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy91dGlscy9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvdXRpbHMvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy91dGlscy9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3V0aWxzL21pc2MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3V0aWxzL21pc2MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZTBhZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy91dGlscy9taXNjLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjMwICswLDAgQEAKLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMywgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBERVNDUklQVElPTgotIyBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHBsYWNlIHRvIGNvbGxlY3QgdmFyaW91cyB3aWMtcmVsYXRlZCB1dGlscwotIyBmb3IgdGhlIE9wZW5FbWJlZGRlZCBJbWFnZSBUb29scy4KLSMKLSMgQVVUSE9SUwotIyBUb20gWmFudXNzaSA8dG9tLnphbnVzc2kgKGF0XSBsaW51eC5pbnRlbC5jb20+Ci0jCi0iIiJNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucy4iIiIKLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Ci1mcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KLQotZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCi1mcm9tIHdpYy51dGlscyBpbXBvcnQgcnVubmVyCi0KLWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQotCi0jIGV4ZWN1dGFibGUgLT4gcmVjaXBlIHBhaXJzIGZvciBleGVjX25hdGl2ZV9jbWQKLU5BVElWRV9SRUNJUEVTID0geyJibWFwdG9vbCI6ICJibWFwLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAgICJncnViLW1raW1hZ2UiOiAiZ3J1Yi1lZmkiLAotICAgICAgICAgICAgICAgICAgImlzb2h5YnJpZCI6ICJzeXNsaW51eCIsCi0gICAgICAgICAgICAgICAgICAibWNvcHkiOiAibXRvb2xzIiwKLSAgICAgICAgICAgICAgICAgICJta2Rvc2ZzIjogImRvc2ZzdG9vbHMiLAotICAgICAgICAgICAgICAgICAgIm1raXNvZnMiOiAiY2RydG9vbHMiLAotICAgICAgICAgICAgICAgICAgIm1rZnMuYnRyZnMiOiAiYnRyZnMtdG9vbHMiLAotICAgICAgICAgICAgICAgICAgIm1rZnMuZXh0MiI6ICJlMmZzcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIm1rZnMuZXh0MyI6ICJlMmZzcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIm1rZnMuZXh0NCI6ICJlMmZzcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIm1rZnMudmZhdCI6ICJkb3Nmc3Rvb2xzIiwKLSAgICAgICAgICAgICAgICAgICJta3NxdWFzaGZzIjogInNxdWFzaGZzLXRvb2xzIiwKLSAgICAgICAgICAgICAgICAgICJta3N3YXAiOiAidXRpbC1saW51eCIsCi0gICAgICAgICAgICAgICAgICAibW1kIjogInN5c2xpbnV4IiwKLSAgICAgICAgICAgICAgICAgICJwYXJ0ZWQiOiAicGFydGVkIiwKLSAgICAgICAgICAgICAgICAgICJzZmRpc2siOiAidXRpbC1saW51eCIsCi0gICAgICAgICAgICAgICAgICAic2dkaXNrIjogImdwdGZkaXNrIiwKLSAgICAgICAgICAgICAgICAgICJzeXNsaW51eCI6ICJzeXNsaW51eCIKLSAgICAgICAgICAgICAgICAgfQotCi1kZWYgX2V4ZWNfY21kKGNtZF9hbmRfYXJncywgYXNfc2hlbGw9RmFsc2UpOgotICAgICIiIgotICAgIEV4ZWN1dGUgY29tbWFuZCwgY2F0Y2hpbmcgc3RkZXJyLCBzdGRvdXQKLQotICAgIE5lZWQgdG8gZXhlY3V0ZSBhc19zaGVsbCBpZiB0aGUgY29tbWFuZCB1c2VzIHdpbGRjYXJkcwotICAgICIiIgotICAgIGxvZ2dlci5kZWJ1ZygiX2V4ZWNfY21kOiAlcyIsIGNtZF9hbmRfYXJncykKLSAgICBhcmdzID0gY21kX2FuZF9hcmdzLnNwbGl0KCkKLSAgICBsb2dnZXIuZGVidWcoYXJncykKLQotICAgIGlmIGFzX3NoZWxsOgotICAgICAgICByZXQsIG91dCA9IHJ1bm5lci5ydW50b29sKGNtZF9hbmRfYXJncykKLSAgICBlbHNlOgotICAgICAgICByZXQsIG91dCA9IHJ1bm5lci5ydW50b29sKGFyZ3MpCi0gICAgb3V0ID0gb3V0LnN0cmlwKCkKLSAgICBpZiByZXQgIT0gMDoKLSAgICAgICAgcmFpc2UgV2ljRXJyb3IoIl9leGVjX2NtZDogJXMgcmV0dXJuZWQgJyVzJyBpbnN0ZWFkIG9mIDBcbm91dHB1dDogJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAoY21kX2FuZF9hcmdzLCByZXQsIG91dCkpCi0KLSAgICBsb2dnZXIuZGVidWcoIl9leGVjX2NtZDogb3V0cHV0IGZvciAlcyAocmMgPSAlZCk6ICVzIiwKLSAgICAgICAgICAgICAgICAgY21kX2FuZF9hcmdzLCByZXQsIG91dCkKLQotICAgIHJldHVybiByZXQsIG91dAotCi0KLWRlZiBleGVjX2NtZChjbWRfYW5kX2FyZ3MsIGFzX3NoZWxsPUZhbHNlKToKLSAgICAiIiIKLSAgICBFeGVjdXRlIGNvbW1hbmQsIHJldHVybiBvdXRwdXQKLSAgICAiIiIKLSAgICByZXR1cm4gX2V4ZWNfY21kKGNtZF9hbmRfYXJncywgYXNfc2hlbGwpWzFdCi0KLQotZGVmIGV4ZWNfbmF0aXZlX2NtZChjbWRfYW5kX2FyZ3MsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG89IiIpOgotICAgICIiIgotICAgIEV4ZWN1dGUgbmF0aXZlIGNvbW1hbmQsIGNhdGNoaW5nIHN0ZGVyciwgc3Rkb3V0Ci0KLSAgICBOZWVkIHRvIGV4ZWN1dGUgYXNfc2hlbGwgaWYgdGhlIGNvbW1hbmQgdXNlcyB3aWxkY2FyZHMKLQotICAgIEFsd2F5cyBuZWVkIHRvIGV4ZWN1dGUgbmF0aXZlIGNvbW1hbmRzIGFzX3NoZWxsCi0gICAgIiIiCi0gICAgIyBUaGUgcmVhc29uIC0xIGlzIHVzZWQgaXMgYmVjYXVzZSB0aGVyZSBtYXkgYmUgImV4cG9ydCIgY29tbWFuZHMuCi0gICAgYXJncyA9IGNtZF9hbmRfYXJncy5zcGxpdCgnOycpWy0xXS5zcGxpdCgpCi0gICAgbG9nZ2VyLmRlYnVnKGFyZ3MpCi0KLSAgICBpZiBwc2V1ZG86Ci0gICAgICAgIGNtZF9hbmRfYXJncyA9IHBzZXVkbyArIGNtZF9hbmRfYXJncwotCi0gICAgd3Rvb2xzX3N5c3Jvb3QgPSBnZXRfYml0YmFrZV92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJ3aWMtdG9vbHMiKQotCi0gICAgbmF0aXZlX3BhdGhzID0gXAotICAgICAgICAgICAgIiVzL3NiaW46JXMvdXNyL3NiaW46JXMvdXNyL2Jpbjolcy9zYmluOiVzL3Vzci9zYmluOiVzL3Vzci9iaW4iICUgXAotICAgICAgICAgICAgKHd0b29sc19zeXNyb290LCB3dG9vbHNfc3lzcm9vdCwgd3Rvb2xzX3N5c3Jvb3QsCi0gICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QsIG5hdGl2ZV9zeXNyb290LCBuYXRpdmVfc3lzcm9vdCkKLSAgICBuYXRpdmVfY21kX2FuZF9hcmdzID0gImV4cG9ydCBQQVRIPSVzOiRQQVRIOyVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYXRpdmVfcGF0aHMsIGNtZF9hbmRfYXJncykKLSAgICBsb2dnZXIuZGVidWcoImV4ZWNfbmF0aXZlX2NtZDogJXMiLCBuYXRpdmVfY21kX2FuZF9hcmdzKQotCi0gICAgIyBJZiB0aGUgY29tbWFuZCBpc24ndCBpbiB0aGUgbmF0aXZlIHN5c3Jvb3Qgc2F5IHdlIGZhaWxlZC4KLSAgICBpZiBzcGF3bi5maW5kX2V4ZWN1dGFibGUoYXJnc1swXSwgbmF0aXZlX3BhdGhzKToKLSAgICAgICAgcmV0LCBvdXQgPSBfZXhlY19jbWQobmF0aXZlX2NtZF9hbmRfYXJncywgVHJ1ZSkKLSAgICBlbHNlOgotICAgICAgICByZXQgPSAxMjcKLSAgICAgICAgb3V0ID0gImNhbid0IGZpbmQgbmF0aXZlIGV4ZWN1dGFibGUgJXMgaW4gJXMiICUgKGFyZ3NbMF0sIG5hdGl2ZV9wYXRocykKLQotICAgIHByb2cgPSBhcmdzWzBdCi0gICAgIyBzaGVsbCBjb21tYW5kLW5vdC1mb3VuZAotICAgIGlmIHJldCA9PSAxMjcgXAotICAgICAgIG9yIChwc2V1ZG8gYW5kIHJldCA9PSAxIGFuZCBvdXQgPT0gIkNhbid0IGZpbmQgJyVzJyBpbiAkUEFUSC4iICUgcHJvZyk6Ci0gICAgICAgIG1zZyA9ICJBIG5hdGl2ZSBwcm9ncmFtICVzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSBpbWFnZSAiXAotICAgICAgICAgICAgICAid2FzIG5vdCBmb3VuZCAoc2VlIGRldGFpbHMgYWJvdmUpLlxuXG4iICUgcHJvZwotICAgICAgICByZWNpcGUgPSBOQVRJVkVfUkVDSVBFUy5nZXQocHJvZykKLSAgICAgICAgaWYgcmVjaXBlOgotICAgICAgICAgICAgbXNnICs9ICJQbGVhc2UgbWFrZSBzdXJlIHdpYy10b29scyBoYXZlICVzLW5hdGl2ZSBpbiBpdHMgREVQRU5EUywgYmFrZSBpdCB3aXRoICdiaXRiYWtlIHdpYy10b29scycgIlwKLSAgICAgICAgICAgICAgICAgICAiYW5kIHRyeSBhZ2Fpbi5cbiIgJSByZWNpcGUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZyArPSAiV2ljIGZhaWxlZCB0byBmaW5kIGEgcmVjaXBlIHRvIGJ1aWxkIG5hdGl2ZSAlcy4gUGxlYXNlICJcCi0gICAgICAgICAgICAgICAgICAgImZpbGUgYSBidWcgYWdhaW5zdCB3aWMuXG4iICUgcHJvZwotICAgICAgICByYWlzZSBXaWNFcnJvcihtc2cpCi0KLSAgICByZXR1cm4gcmV0LCBvdXQKLQotQk9PVEREX0VYVFJBX1NQQUNFID0gMTYzODQKLQotY2xhc3MgQml0YmFrZVZhcnMoZGVmYXVsdGRpY3QpOgotICAgICIiIgotICAgIENvbnRhaW5lciBmb3IgQml0YmFrZSB2YXJpYWJsZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBkZWZhdWx0ZGljdC5fX2luaXRfXyhzZWxmLCBkaWN0KQotCi0gICAgICAgICMgZGVmYXVsdF9pbWFnZSBhbmQgdmFyc19kaXIgYXR0cmlidXRlcyBzaG91bGQgYmUgc2V0IGZyb20gb3V0c2lkZQotICAgICAgICBzZWxmLmRlZmF1bHRfaW1hZ2UgPSBOb25lCi0gICAgICAgIHNlbGYudmFyc19kaXIgPSBOb25lCi0KLSAgICBkZWYgX3BhcnNlX2xpbmUoc2VsZiwgbGluZSwgaW1hZ2UsIG1hdGNoZXI9cmUuY29tcGlsZShyIl4oW2EtekEtWjAtOVwtXysuL35dKyk9KC4qKSIpKToKLSAgICAgICAgIiIiCi0gICAgICAgIFBhcnNlIG9uZSBsaW5lIGZyb20gYml0YmFrZSAtZSBvdXRwdXQgb3IgZnJvbSAuZW52IGZpbGUuCi0gICAgICAgIFB1dCByZXN1bHQga2V5LXZhbHVlIHBhaXIgaW50byB0aGUgc3RvcmFnZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmICI9IiBub3QgaW4gbGluZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBtYXRjaCA9IG1hdGNoZXIubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGtleSwgdmFsID0gbWF0Y2guZ3JvdXBzKCkKLSAgICAgICAgc2VsZltpbWFnZV1ba2V5XSA9IHZhbC5zdHJpcCgnIicpCi0KLSAgICBkZWYgZ2V0X3ZhcihzZWxmLCB2YXIsIGltYWdlPU5vbmUsIGNhY2hlPVRydWUpOgotICAgICAgICAiIiIKLSAgICAgICAgR2V0IGJpdGJha2UgdmFyaWFibGUgZnJvbSAnYml0YmFrZSAtZScgb3V0cHV0IG9yIGZyb20gLmVudiBmaWxlLgotICAgICAgICBUaGlzIGlzIGEgbGF6eSBtZXRob2QsIGkuZS4gaXQgcnVucyBiaXRiYWtlIG9yIHBhcnNlcyBmaWxlIG9ubHkgd2hlbgotICAgICAgICBvbmx5IHdoZW4gdmFyaWFibGUgaXMgcmVxdWVzdGVkLiBJdCBhbHNvIGNhY2hlcyByZXN1bHRzLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IGltYWdlOgotICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLmRlZmF1bHRfaW1hZ2UKLQotICAgICAgICBpZiBpbWFnZSBub3QgaW4gc2VsZjoKLSAgICAgICAgICAgIGlmIGltYWdlIGFuZCBzZWxmLnZhcnNfZGlyOgotICAgICAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHNlbGYudmFyc19kaXIsIGltYWdlICsgJy5lbnYnKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgIyBwYXJzZSAuZW52IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZuYW1lKSBhcyB2YXJzZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHZhcnNmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX2xpbmUobGluZSwgaW1hZ2UpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGdldCBiaXRiYWtlIHZhcmlhYmxlIGZyb20gJXMuIiAlIGZuYW1lKQotICAgICAgICAgICAgICAgICAgICBwcmludCgiRmlsZSAlcyBkb2Vzbid0IGV4aXN0LiIgJSBmbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgR2V0IGJpdGJha2UgLWUgb3V0cHV0Ci0gICAgICAgICAgICAgICAgY21kID0gImJpdGJha2UgLWUiCi0gICAgICAgICAgICAgICAgaWYgaW1hZ2U6Ci0gICAgICAgICAgICAgICAgICAgIGNtZCArPSAiICVzIiAlIGltYWdlCi0KLSAgICAgICAgICAgICAgICBsb2dfbGV2ZWwgPSBsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQotICAgICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCi0gICAgICAgICAgICAgICAgcmV0LCBsaW5lcyA9IF9leGVjX2NtZChjbWQpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ19sZXZlbCkKLQotICAgICAgICAgICAgICAgIGlmIHJldDoKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZG4ndCBnZXQgJyVzJyBvdXRwdXQuIiwgY21kKQotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkJpdGJha2UgZmFpbGVkIHdpdGggZXJyb3I6XG4lc1xuIiwgbGluZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICAgICAgIyBQYXJzZSBiaXRiYWtlIC1lIG91dHB1dAotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzLnNwbGl0KCdcbicpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV9saW5lKGxpbmUsIGltYWdlKQotCi0gICAgICAgICAgICAjIE1ha2UgZmlyc3QgaW1hZ2UgYSBkZWZhdWx0IHNldCBvZiB2YXJpYWJsZXMKLSAgICAgICAgICAgIGlmIGNhY2hlOgotICAgICAgICAgICAgICAgIGltYWdlcyA9IFtrZXkgZm9yIGtleSBpbiBzZWxmIGlmIGtleV0KLSAgICAgICAgICAgICAgICBpZiBsZW4oaW1hZ2VzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICBzZWxmW05vbmVdID0gc2VsZltpbWFnZV0KLQotICAgICAgICByZXN1bHQgPSBzZWxmW2ltYWdlXS5nZXQodmFyKQotICAgICAgICBpZiBub3QgY2FjaGU6Ci0gICAgICAgICAgICBzZWxmLnBvcChpbWFnZSwgTm9uZSkKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSMgQ3JlYXRlIEJCX1ZBUlMgc2luZ2xldG9uCi1CQl9WQVJTID0gQml0YmFrZVZhcnMoKQotCi1kZWYgZ2V0X2JpdGJha2VfdmFyKHZhciwgaW1hZ2U9Tm9uZSwgY2FjaGU9VHJ1ZSk6Ci0gICAgIiIiCi0gICAgUHJvdmlkZSBvbGQgZ2V0X2JpdGJha2VfdmFyIEFQSSBieSB3cmFwcGluZwotICAgIGdldF92YXIgbWV0aG9kIG9mIEJCX1ZBUlMgc2luZ2xldG9uLgotICAgICIiIgotICAgIHJldHVybiBCQl9WQVJTLmdldF92YXIodmFyLCBpbWFnZSwgY2FjaGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3V0aWxzL3J1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvdXRpbHMvcnVubmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWEwMGZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvdXRpbHMvcnVubmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uIC10dAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTEgSW50ZWwsIEluYy4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKLSMgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSMgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0jIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5Ci0jIFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi1pbXBvcnQgc3VicHJvY2VzcwotCi1mcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKLQotZGVmIHJ1bnRvb2woY21kbG5fb3JfYXJncyk6Ci0gICAgIiIiIHdyYXBwZXIgZm9yIG1vc3Qgb2YgdGhlIHN1YnByb2Nlc3MgY2FsbHMKLSAgICBpbnB1dDoKLSAgICAgICAgY21kbG5fb3JfYXJnczogY2FuIGJlIGJvdGggYXJncyBhbmQgY21kbG4gc3RyIChzaGVsbD1UcnVlKQotICAgIHJldHVybjoKLSAgICAgICAgcmMsIG91dHB1dAotICAgICIiIgotICAgIGlmIGlzaW5zdGFuY2UoY21kbG5fb3JfYXJncywgbGlzdCk6Ci0gICAgICAgIGNtZCA9IGNtZGxuX29yX2FyZ3NbMF0KLSAgICAgICAgc2hlbGwgPSBGYWxzZQotICAgIGVsc2U6Ci0gICAgICAgIGltcG9ydCBzaGxleAotICAgICAgICBjbWQgPSBzaGxleC5zcGxpdChjbWRsbl9vcl9hcmdzKVswXQotICAgICAgICBzaGVsbCA9IFRydWUKLQotICAgIHNvdXQgPSBzdWJwcm9jZXNzLlBJUEUKLSAgICBzZXJyID0gc3VicHJvY2Vzcy5TVERPVVQKLQotICAgIHRyeToKLSAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kbG5fb3JfYXJncywgc3Rkb3V0PXNvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zZXJyLCBzaGVsbD1zaGVsbCkKLSAgICAgICAgc291dCwgc2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICAjIGNvbWJpbmUgc3Rkb3V0IGFuZCBzdGRlcnIsIGZpbHRlciBOb25lIG91dCBhbmQgZGVjb2RlCi0gICAgICAgIG91dCA9ICcnLmpvaW4oW291dC5kZWNvZGUoJ3V0Zi04JykgZm9yIG91dCBpbiBbc291dCwgc2Vycl0gaWYgb3V0XSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgIGlmIGVyci5lcnJubyA9PSAyOgotICAgICAgICAgICAgIyBbRXJybm8gMl0gTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoJ0Nhbm5vdCBydW4gY29tbWFuZDogJXMsIGxvc3QgZGVwZW5kZW5jeT8nICUgY21kKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgIyByZWxheQotCi0gICAgcmV0dXJuIHByb2Nlc3MucmV0dXJuY29kZSwgb3V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CmluZGV4IDZmMGI4NGYuLmFjODhmMGYgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CkBAIC0yOSwxMiArMjksMTQgQEAKIGltcG9ydCBzY3JpcHRwYXRoCiBmcm9tIGJ1aWxkX3BlcmYgaW1wb3J0IHByaW50X3RhYmxlCiBmcm9tIGJ1aWxkX3BlcmYucmVwb3J0IGltcG9ydCAobWV0YWRhdGFfeG1sX3RvX2pzb24sIHJlc3VsdHNfeG1sX3RvX2pzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlX2RhdGEsIGFnZ3JlZ2F0ZV9tZXRhZGF0YSwgbWVhc3VyZW1lbnRfc3RhdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlX2RhdGEsIGFnZ3JlZ2F0ZV9tZXRhZGF0YSwgbWVhc3VyZW1lbnRfc3RhdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRlVGVzdERhdGEpCiBmcm9tIGJ1aWxkX3BlcmYgaW1wb3J0IGh0bWwKK2Zyb20gYnVpbGRzdGF0cyBpbXBvcnQgQnVpbGRTdGF0cywgZGlmZl9idWlsZHN0YXRzLCBCU1ZlckRpZmYKIAogc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQogCi1mcm9tIG9lcWEudXRpbHMuZ2l0IGltcG9ydCBHaXRSZXBvCitmcm9tIG9lcWEudXRpbHMuZ2l0IGltcG9ydCBHaXRSZXBvLCBHaXRFcnJvcgogCiAKICMgU2V0dXAgbG9nZ2luZwpAQCAtODIsMjkgKzg0LDUyIEBACiAgICAgIyBSZXR1cm4gZmllbGQgbmFtZXMgYW5kIGEgc29ydGVkIGxpc3Qgb2YgcmV2cwogICAgIHJldHVybiB1bmRlZl9maWVsZHMsIHNvcnRlZChyZXZzKQogCi1kZWYgbGlzdF90ZXN0X3JldnMocmVwbywgdGFnX25hbWUsICoqa3dhcmdzKToKK2RlZiBsaXN0X3Rlc3RfcmV2cyhyZXBvLCB0YWdfbmFtZSwgdmVyYm9zaXR5LCAqKmt3YXJncyk6CiAgICAgIiIiR2V0IGxpc3Qgb2YgYWxsIHRlc3RlZCByZXZpc2lvbnMiIiIKLSAgICBmaWVsZHMsIHJldnMgPSBnZXRfdGVzdF9ydW5zKHJlcG8sIHRhZ19uYW1lLCAqKmt3YXJncykKKyAgICB2YWxpZF9rd2FyZ3MgPSBkaWN0KFsoaywgdikgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCkgaWYgdiBpcyBub3QgTm9uZV0pCisKKyAgICBmaWVsZHMsIHJldnMgPSBnZXRfdGVzdF9ydW5zKHJlcG8sIHRhZ19uYW1lLCAqKnZhbGlkX2t3YXJncykKICAgICBpZ25vcmVfZmllbGRzID0gWyd0YWdfbnVtYmVyJ10KKyAgICBpZiB2ZXJib3NpdHkgPCAyOgorICAgICAgICBleHRyYV9maWVsZHMgPSBbJ0NPTU1JVFMnLCAnVEVTVCBSVU5TJ10KKyAgICAgICAgaWdub3JlX2ZpZWxkcy5leHRlbmQoWydjb21taXRfbnVtYmVyJywgJ2NvbW1pdCddKQorICAgIGVsc2U6CisgICAgICAgIGV4dHJhX2ZpZWxkcyA9IFsnVEVTVCBSVU5TJ10KKwogICAgIHByaW50X2ZpZWxkcyA9IFtpIGZvciBpLCBmIGluIGVudW1lcmF0ZShmaWVsZHMpIGlmIGYgbm90IGluIGlnbm9yZV9maWVsZHNdCiAKICAgICAjIFNvcnQgcmV2cwotICAgIHJvd3MgPSBbW2ZpZWxkc1tpXS51cHBlcigpIGZvciBpIGluIHByaW50X2ZpZWxkc10gKyBbJ1RFU1QgUlVOUyddXQotICAgIHByZXYgPSBbJyddICogbGVuKHJldnMpCisgICAgcm93cyA9IFtbZmllbGRzW2ldLnVwcGVyKCkgZm9yIGkgaW4gcHJpbnRfZmllbGRzXSArIGV4dHJhX2ZpZWxkc10KKworICAgIHByZXYgPSBbJyddICogbGVuKHByaW50X2ZpZWxkcykKKyAgICBwcmV2X2NvbW1pdCA9IE5vbmUKKyAgICBjb21taXRfY250ID0gMAorICAgIGNvbW1pdF9maWVsZCA9IGZpZWxkcy5pbmRleCgnY29tbWl0JykKICAgICBmb3IgcmV2IGluIHJldnM6CiAgICAgICAgICMgT25seSB1c2UgZmllbGRzIHRoYXQgd2Ugd2FudCB0byBwcmludAotICAgICAgICByZXYgPSBbcmV2W2ldIGZvciBpIGluIHByaW50X2ZpZWxkc10KKyAgICAgICAgY29scyA9IFtyZXZbaV0gZm9yIGkgaW4gcHJpbnRfZmllbGRzXQogCi0gICAgICAgIGlmIHJldiAhPSBwcmV2OgotICAgICAgICAgICAgbmV3X3JvdyA9IFsnJ10gKiBsZW4ocHJpbnRfZmllbGRzKSArIFsxXQorCisgICAgICAgIGlmIGNvbHMgIT0gcHJldjoKKyAgICAgICAgICAgIGNvbW1pdF9jbnQgPSAxCisgICAgICAgICAgICB0ZXN0X3J1bl9jbnQgPSAxCisgICAgICAgICAgICBuZXdfcm93ID0gWycnXSAqIChsZW4ocHJpbnRfZmllbGRzKSArIGxlbihleHRyYV9maWVsZHMpKQorCiAgICAgICAgICAgICBmb3IgaSBpbiBwcmludF9maWVsZHM6Ci0gICAgICAgICAgICAgICAgaWYgcmV2W2ldICE9IHByZXZbaV06CisgICAgICAgICAgICAgICAgaWYgY29sc1tpXSAhPSBwcmV2W2ldOgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgbmV3X3Jvd1tpOi0xXSA9IHJldltpOl0KKyAgICAgICAgICAgIG5ld19yb3dbaTotbGVuKGV4dHJhX2ZpZWxkcyldID0gY29sc1tpOl0KICAgICAgICAgICAgIHJvd3MuYXBwZW5kKG5ld19yb3cpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByb3dzWy0xXVstMV0gKz0gMQotICAgICAgICBwcmV2ID0gcmV2CisgICAgICAgICAgICBpZiByZXZbY29tbWl0X2ZpZWxkXSAhPSBwcmV2X2NvbW1pdDoKKyAgICAgICAgICAgICAgICBjb21taXRfY250ICs9IDEKKyAgICAgICAgICAgIHRlc3RfcnVuX2NudCArPSAxCisKKyAgICAgICAgaWYgdmVyYm9zaXR5IDwgMjoKKyAgICAgICAgICAgIG5ld19yb3dbLTJdID0gY29tbWl0X2NudAorICAgICAgICBuZXdfcm93Wy0xXSA9IHRlc3RfcnVuX2NudAorICAgICAgICBwcmV2ID0gY29scworICAgICAgICBwcmV2X2NvbW1pdCA9IHJldltjb21taXRfZmllbGRdCiAKICAgICBwcmludF90YWJsZShyb3dzKQogCkBAIC0zMDksMjAgKzMzNCw1MCBAQAogICAgIHByaW50KCkKIAogCi1kZWYgcHJpbnRfaHRtbF9yZXBvcnQoZGF0YSwgaWRfY29tcCk6CitjbGFzcyBCU1N1bW1hcnkob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnMxLCBiczIpOgorICAgICAgICBzZWxmLnRhc2tzID0geydjb3VudCc6IGJzMi5udW1fdGFza3MsCisgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZSc6ICd7OitkfScuZm9ybWF0KGJzMi5udW1fdGFza3MgLSBiczEubnVtX3Rhc2tzKX0KKyAgICAgICAgc2VsZi50b3BfY29uc3VtZXIgPSBOb25lCisgICAgICAgIHNlbGYudG9wX2RlY3JlYXNlID0gTm9uZQorICAgICAgICBzZWxmLnRvcF9pbmNyZWFzZSA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJfZGlmZiA9IE9yZGVyZWREaWN0KCkKKworICAgICAgICB0YXNrc19kaWZmID0gZGlmZl9idWlsZHN0YXRzKGJzMSwgYnMyLCAnY3B1dGltZScpCisKKyAgICAgICAgIyBHZXQgdG9wIGNvbnN1bWVycyBvZiByZXNvdXJjZXMKKyAgICAgICAgdGFza3NfZGlmZiA9IHNvcnRlZCh0YXNrc19kaWZmLCBrZXk9YXR0cmdldHRlcigndmFsdWUyJykpCisgICAgICAgIHNlbGYudG9wX2NvbnN1bWVyID0gdGFza3NfZGlmZlstNTpdCisKKyAgICAgICAgIyBHZXQgYmlnZ2VzdCBpbmNyZWFzZSBhbmQgZGVjcmVhc2UgaW4gcmVzb3VyY2UgdXNhZ2UKKyAgICAgICAgdGFza3NfZGlmZiA9IHNvcnRlZCh0YXNrc19kaWZmLCBrZXk9YXR0cmdldHRlcignYWJzZGlmZicpKQorICAgICAgICBzZWxmLnRvcF9kZWNyZWFzZSA9IHRhc2tzX2RpZmZbMDo1XQorICAgICAgICBzZWxmLnRvcF9pbmNyZWFzZSA9IHRhc2tzX2RpZmZbLTU6XQorCisgICAgICAgICMgQ29tcGFyZSByZWNpcGUgdmVyc2lvbnMgYW5kIHByZXBhcmUgZGF0YSBmb3IgZGlzcGxheQorICAgICAgICB2ZXJfZGlmZiA9IEJTVmVyRGlmZihiczEsIGJzMikKKyAgICAgICAgaWYgdmVyX2RpZmY6CisgICAgICAgICAgICBpZiB2ZXJfZGlmZi5uZXc6CisgICAgICAgICAgICAgICAgc2VsZi52ZXJfZGlmZlsnTmV3IHJlY2lwZXMnXSA9IFsobiwgci5ldnIpIGZvciBuLCByIGluIHZlcl9kaWZmLm5ldy5pdGVtcygpXQorICAgICAgICAgICAgaWYgdmVyX2RpZmYuZHJvcHBlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnZlcl9kaWZmWydEcm9wcGVkIHJlY2lwZXMnXSA9IFsobiwgci5ldnIpIGZvciBuLCByIGluIHZlcl9kaWZmLmRyb3BwZWQuaXRlbXMoKV0KKyAgICAgICAgICAgIGlmIHZlcl9kaWZmLmVjaGFuZ2VkOgorICAgICAgICAgICAgICAgIHNlbGYudmVyX2RpZmZbJ0Vwb2NoIGNoYW5nZWQnXSA9IFsobiwgInt9ICZyYXJyOyB7fSIuZm9ybWF0KHIubGVmdC5ldnIsIHIucmlnaHQuZXZyKSkgZm9yIG4sIHIgaW4gdmVyX2RpZmYuZWNoYW5nZWQuaXRlbXMoKV0KKyAgICAgICAgICAgIGlmIHZlcl9kaWZmLnZjaGFuZ2VkOgorICAgICAgICAgICAgICAgIHNlbGYudmVyX2RpZmZbJ1ZlcnNpb24gY2hhbmdlZCddID0gWyhuLCAie30gJnJhcnI7IHt9Ii5mb3JtYXQoci5sZWZ0LnZlcnNpb24sIHIucmlnaHQudmVyc2lvbikpIGZvciBuLCByIGluIHZlcl9kaWZmLnZjaGFuZ2VkLml0ZW1zKCldCisgICAgICAgICAgICBpZiB2ZXJfZGlmZi5yY2hhbmdlZDoKKyAgICAgICAgICAgICAgICBzZWxmLnZlcl9kaWZmWydSZXZpc2lvbiBjaGFuZ2VkJ10gPSBbKG4sICJ7fSAmcmFycjsge30iLmZvcm1hdChyLmxlZnQuZXZyLCByLnJpZ2h0LmV2cikpIGZvciBuLCByIGluIHZlcl9kaWZmLnJjaGFuZ2VkLml0ZW1zKCldCisKKworZGVmIHByaW50X2h0bWxfcmVwb3J0KGRhdGEsIGlkX2NvbXAsIGJ1aWxkc3RhdHMpOgogICAgICIiIlByaW50IHJlcG9ydCBpbiBodG1sIGZvcm1hdCIiIgogICAgICMgSGFuZGxlIG1ldGFkYXRhCi0gICAgbWV0YWRhdGEgPSB7J2JyYW5jaCc6IHsndGl0bGUnOiAnQnJhbmNoJywgJ3ZhbHVlJzogJ21hc3Rlcid9LAotICAgICAgICAgICAgICAgICdob3N0bmFtZSc6IHsndGl0bGUnOiAnSG9zdG5hbWUnLCAndmFsdWUnOiAnZm9vYmFyJ30sCi0gICAgICAgICAgICAgICAgJ2NvbW1pdCc6IHsndGl0bGUnOiAnQ29tbWl0JywgJ3ZhbHVlJzogJzEyMzQnfQotICAgICAgICAgICAgICAgfQotICAgIG1ldGFkYXRhID0gbWV0YWRhdGFfZGlmZihkYXRhW2lkX2NvbXBdWzBdLCBkYXRhWy0xXVswXSkKLQorICAgIG1ldGFkYXRhID0gbWV0YWRhdGFfZGlmZihkYXRhW2lkX2NvbXBdLm1ldGFkYXRhLCBkYXRhWy0xXS5tZXRhZGF0YSkKIAogICAgICMgR2VuZXJhdGUgbGlzdCBvZiB0ZXN0cwogICAgIHRlc3RzID0gW10KLSAgICBmb3IgdGVzdCBpbiBkYXRhWy0xXVsxXVsndGVzdHMnXS5rZXlzKCk6Ci0gICAgICAgIHRlc3RfciA9IGRhdGFbLTFdWzFdWyd0ZXN0cyddW3Rlc3RdCisgICAgZm9yIHRlc3QgaW4gZGF0YVstMV0ucmVzdWx0c1sndGVzdHMnXS5rZXlzKCk6CisgICAgICAgIHRlc3RfciA9IGRhdGFbLTFdLnJlc3VsdHNbJ3Rlc3RzJ11bdGVzdF0KICAgICAgICAgbmV3X3Rlc3QgPSB7J25hbWUnOiB0ZXN0X3JbJ25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogdGVzdF9yWydkZXNjcmlwdGlvbiddLAogICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJzogdGVzdF9yWydzdGF0dXMnXSwKQEAgLTM2OCw2ICs0MjMsMTYgQEAKICAgICAgICAgICAgIG5ld19tZWFzWyd2YWx1ZSddID0gc2FtcGxlc1stMV0KICAgICAgICAgICAgIG5ld19tZWFzWyd2YWx1ZV90eXBlJ10gPSBzYW1wbGVzWy0xXVsndmFsX2NscyddCiAKKyAgICAgICAgICAgICMgQ29tcGFyZSBidWlsZHN0YXRzCisgICAgICAgICAgICBic19rZXkgPSB0ZXN0ICsgJy4nICsgbWVhcworICAgICAgICAgICAgcmV2ID0gbWV0YWRhdGFbJ2NvbW1pdF9udW0nXVsndmFsdWUnXQorICAgICAgICAgICAgY29tcF9yZXYgPSBtZXRhZGF0YVsnY29tbWl0X251bSddWyd2YWx1ZV9vbGQnXQorICAgICAgICAgICAgaWYgKHJldiBpbiBidWlsZHN0YXRzIGFuZCBic19rZXkgaW4gYnVpbGRzdGF0c1tyZXZdIGFuZAorICAgICAgICAgICAgICAgICAgICBjb21wX3JldiBpbiBidWlsZHN0YXRzIGFuZCBic19rZXkgaW4gYnVpbGRzdGF0c1tjb21wX3Jldl0pOgorICAgICAgICAgICAgICAgIG5ld19tZWFzWydidWlsZHN0YXRzJ10gPSBCU1N1bW1hcnkoYnVpbGRzdGF0c1tjb21wX3Jldl1bYnNfa2V5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkc3RhdHNbcmV2XVtic19rZXldKQorCisKICAgICAgICAgICAgIG5ld190ZXN0WydtZWFzdXJlbWVudHMnXS5hcHBlbmQobmV3X21lYXMpCiAgICAgICAgIHRlc3RzLmFwcGVuZChuZXdfdGVzdCkKIApAQCAtMzc2LDcgKzQ0MSw2MSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnOiBnZXRfZGF0YV9pdGVtKGRhdGFbLTFdWzBdLCAnbGF5ZXJzLm1ldGEuY29tbWl0X2NvdW50Jyl9CiAgICAgICAgICAgICAgICAgIH0KIAotICAgIHByaW50KGh0bWwudGVtcGxhdGUucmVuZGVyKG1ldGFkYXRhPW1ldGFkYXRhLCB0ZXN0X2RhdGE9dGVzdHMsIGNoYXJ0X29wdHM9Y2hhcnRfb3B0cykpCisgICAgcHJpbnQoaHRtbC50ZW1wbGF0ZS5yZW5kZXIodGl0bGU9IkJ1aWxkIFBlcmYgVGVzdCBSZXBvcnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhPW1ldGFkYXRhLCB0ZXN0X2RhdGE9dGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRfb3B0cz1jaGFydF9vcHRzKSkKKworCitkZWYgZ2V0X2J1aWxkc3RhdHMocmVwbywgbm90ZXNfcmVmLCByZXZzLCBvdXRkaXI9Tm9uZSk6CisgICAgIiIiR2V0IHRoZSBidWlsZHN0YXRzIGZyb20gZ2l0IG5vdGVzIiIiCisgICAgZnVsbF9yZWYgPSAncmVmcy9ub3Rlcy8nICsgbm90ZXNfcmVmCisgICAgaWYgbm90IHJlcG8ucmV2X3BhcnNlKGZ1bGxfcmVmKToKKyAgICAgICAgbG9nLmVycm9yKCJObyBidWlsZHN0YXRzIGZvdW5kLCBwbGVhc2UgdHJ5IHJ1bm5pbmcgIgorICAgICAgICAgICAgICAgICAgIidnaXQgZmV0Y2ggb3JpZ2luICVzOiVzJyB0byBmZXRjaCB0aGVtIGZyb20gdGhlIHJlbW90ZSIsCisgICAgICAgICAgICAgICAgICBmdWxsX3JlZiwgZnVsbF9yZWYpCisgICAgICAgIHJldHVybgorCisgICAgbWlzc2luZyA9IEZhbHNlCisgICAgYnVpbGRzdGF0cyA9IHt9CisgICAgbG9nLmluZm8oIlBhcnNpbmcgYnVpbGRzdGF0cyBmcm9tICdyZWZzL25vdGVzLyVzJyIsIG5vdGVzX3JlZikKKyAgICBmb3IgcmV2IGluIHJldnM6CisgICAgICAgIGJ1aWxkc3RhdHNbcmV2LmNvbW1pdF9udW1iZXJdID0ge30KKyAgICAgICAgbG9nLmRlYnVnKCdEdW1waW5nIGJ1aWxkc3RhdHMgZm9yICVzICglcyknLCByZXYuY29tbWl0X251bWJlciwKKyAgICAgICAgICAgICAgICAgIHJldi5jb21taXQpCisgICAgICAgIGZvciB0YWcgaW4gcmV2LnRhZ3M6CisgICAgICAgICAgICBsb2cuZGVidWcoJyAgICAlcycsIHRhZykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBic19hbGwgPSBqc29uLmxvYWRzKHJlcG8ucnVuX2NtZChbJ25vdGVzJywgJy0tcmVmJywgbm90ZXNfcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdycsIHRhZyArICdeMCddKSkKKyAgICAgICAgICAgIGV4Y2VwdCBHaXRFcnJvcjoKKyAgICAgICAgICAgICAgICBsb2cud2FybmluZygiQnVpbGRzdGF0cyBub3QgZm91bmQgZm9yICVzIiwgdGFnKQorICAgICAgICAgICAgICAgIGJzX2FsbCA9IHt9CisgICAgICAgICAgICAgICAgbWlzc2luZyA9IFRydWUKKworICAgICAgICAgICAgZm9yIG1lYXN1cmVtZW50LCBicyBpbiBic19hbGwuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAjIFdyaXRlIG91dCBvbnRvIGRpc2sKKyAgICAgICAgICAgICAgICBpZiBvdXRkaXI6CisgICAgICAgICAgICAgICAgICAgIHRhZ19iYXNlLCBydW5faWQgPSB0YWcucnNwbGl0KCcvJywgMSkKKyAgICAgICAgICAgICAgICAgICAgdGFnX2Jhc2UgPSB0YWdfYmFzZS5yZXBsYWNlKCcvJywgJ18nKQorICAgICAgICAgICAgICAgICAgICBic19kaXIgPSBvcy5wYXRoLmpvaW4ob3V0ZGlyLCBtZWFzdXJlbWVudCwgdGFnX2Jhc2UpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhic19kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoYnNfZGlyKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGJzX2RpciwgcnVuX2lkICsgJy5qc29uJyksICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uZHVtcChicywgZiwgaW5kZW50PTIpCisKKyAgICAgICAgICAgICAgICAjIFJlYWQgYnVpbGRzdGF0cyBpbnRvIGEgZGljdAorICAgICAgICAgICAgICAgIF9icyA9IEJ1aWxkU3RhdHMuZnJvbV9qc29uKGJzKQorICAgICAgICAgICAgICAgIGlmIG1lYXN1cmVtZW50IG5vdCBpbiBidWlsZHN0YXRzW3Jldi5jb21taXRfbnVtYmVyXToKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzdGF0c1tyZXYuY29tbWl0X251bWJlcl1bbWVhc3VyZW1lbnRdID0gX2JzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzdGF0c1tyZXYuY29tbWl0X251bWJlcl1bbWVhc3VyZW1lbnRdLmFnZ3JlZ2F0ZShfYnMpCisKKyAgICBpZiBtaXNzaW5nOgorICAgICAgICBsb2cuaW5mbygiQnVpbGRzdGF0cyB3ZXJlIG1pc3NpbmcgZm9yIHNvbWUgdGVzdCBydW5zLCBwbGVhc2UgIgorICAgICAgICAgICAgICAgICAicnVuICdnaXQgZmV0Y2ggb3JpZ2luICVzOiVzJyBhbmQgdHJ5IGFnYWluIiwKKyAgICAgICAgICAgICAgICAgZnVsbF9yZWYsIGZ1bGxfcmVmKQorCisgICAgcmV0dXJuIGJ1aWxkc3RhdHMKIAogCiBkZWYgYXV0b19hcmdzKHJlcG8sIGFyZ3MpOgpAQCAtNDExLDcgKzUzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJWZXJib3NlIGxvZ2dpbmciKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVwbycsICctcicsIHJlcXVpcmVkPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSZXN1bHRzIHJlcG9zaXRvcnkgKGxvY2FsIGdpdCBjbG9uZSkiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbGlzdCcsICctbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1saXN0JywgJy1sJywgYWN0aW9uPSdjb3VudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJMaXN0IGF2YWlsYWJsZSB0ZXN0IHJ1bnMiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taHRtbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJHZW5lcmF0ZSByZXBvcnQgaW4gaHRtbCBmb3JtYXQiKQpAQCAtNDM0LDYgKzU1Myw4IEBACiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWNvbW1pdC1udW1iZXIyJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUmV2aXNpb24gbnVtYmVyIHRvIGNvbXBhcmUgd2l0aCwgcmVkdW5kYW50IGlmICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1jb21taXQyIGlzIHNwZWNpZmllZCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kdW1wLWJ1aWxkc3RhdHMnLCBuYXJncz0nPycsIGNvbnN0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkR1bXAgYnVpbGRzdGF0cyBvZiB0aGUgdGVzdHMiKQogCiAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKQEAgLTQ0Nyw3ICs1NjgsNyBAQAogICAgIHJlcG8gPSBHaXRSZXBvKGFyZ3MucmVwbykKIAogICAgIGlmIGFyZ3MubGlzdDoKLSAgICAgICAgbGlzdF90ZXN0X3JldnMocmVwbywgYXJncy50YWdfbmFtZSkKKyAgICAgICAgbGlzdF90ZXN0X3JldnMocmVwbywgYXJncy50YWdfbmFtZSwgYXJncy5saXN0LCBob3N0bmFtZT1hcmdzLmhvc3RuYW1lKQogICAgICAgICByZXR1cm4gMAogCiAgICAgIyBEZXRlcm1pbmUgaG9zdG5hbWUgd2hpY2ggdG8gdXNlCkBAIC01MDEsNyArNjIyLDcgQEAKICAgICB4bWwgPSBpc194bWxfZm9ybWF0KHJlcG8sIHJldnNbaW5kZXhfcl0udGFnc1stMV0pCiAKICAgICBpZiBhcmdzLmh0bWw6Ci0gICAgICAgIGluZGV4XzAgPSBtYXgoMCwgaW5kZXhfciAtIGFyZ3MuaGlzdG9yeV9sZW5ndGgpCisgICAgICAgIGluZGV4XzAgPSBtYXgoMCwgbWluKGluZGV4X2wsIGluZGV4X3IgLSBhcmdzLmhpc3RvcnlfbGVuZ3RoKSkKICAgICAgICAgcmV2X3JhbmdlID0gcmFuZ2UoaW5kZXhfMCwgaW5kZXhfciArIDEpCiAgICAgZWxzZToKICAgICAgICAgIyBXZSBkbyBub3QgbmVlZCByYW5nZSBvZiBjb21taXRzIGZvciB0ZXh0IHJlcG9ydCAobm8gZ3JhcGhzKQpAQCAtNTE1LDE4ICs2MzYsMjcgQEAKIAogICAgIGRhdGEgPSBbXQogICAgIGZvciByYXdfbSwgcmF3X2QgaW4gcmF3X2RhdGE6Ci0gICAgICAgIGRhdGEuYXBwZW5kKChhZ2dyZWdhdGVfbWV0YWRhdGEocmF3X20pLCBhZ2dyZWdhdGVfZGF0YShyYXdfZCkpKQorICAgICAgICBkYXRhLmFwcGVuZChBZ2dyZWdhdGVUZXN0RGF0YShhZ2dyZWdhdGVfbWV0YWRhdGEocmF3X20pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVfZGF0YShyYXdfZCkpKQogCiAgICAgIyBSZS1tYXAgbGlzdCBpbmRleGVzIHRvIHRoZSBuZXcgdGFibGUgc3RhcnRpbmcgZnJvbSBpbmRleCAwCiAgICAgaW5kZXhfciA9IGluZGV4X3IgLSBpbmRleF8wCiAgICAgaW5kZXhfbCA9IGluZGV4X2wgLSBpbmRleF8wCiAKKyAgICAjIFJlYWQgYnVpbGRzdGF0cyBvbmx5IHdoZW4gbmVlZGVkCisgICAgYnVpbGRzdGF0cyA9IE5vbmUKKyAgICBpZiBhcmdzLmR1bXBfYnVpbGRzdGF0cyBvciBhcmdzLmh0bWw6CisgICAgICAgIG91dGRpciA9ICdvZS1idWlsZC1wZXJmLWJ1aWxkc3RhdHMnIGlmIGFyZ3MuZHVtcF9idWlsZHN0YXRzIGVsc2UgTm9uZQorICAgICAgICBub3Rlc19yZWYgPSAnYnVpbGRzdGF0cy97fS97fS97fScuZm9ybWF0KGFyZ3MuaG9zdG5hbWUsIGFyZ3MuYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubWFjaGluZSkKKyAgICAgICAgYnVpbGRzdGF0cyA9IGdldF9idWlsZHN0YXRzKHJlcG8sIG5vdGVzX3JlZiwgW3Jldl9sLCByZXZfcl0sIG91dGRpcikKKwogICAgICMgUHJpbnQgcmVwb3J0CiAgICAgaWYgbm90IGFyZ3MuaHRtbDoKLSAgICAgICAgcHJpbnRfZGlmZl9yZXBvcnQoZGF0YVtpbmRleF9sXVswXSwgZGF0YVtpbmRleF9sXVsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpbmRleF9yXVswXSwgZGF0YVtpbmRleF9yXVsxXSkKKyAgICAgICAgcHJpbnRfZGlmZl9yZXBvcnQoZGF0YVtpbmRleF9sXS5tZXRhZGF0YSwgZGF0YVtpbmRleF9sXS5yZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2luZGV4X3JdLm1ldGFkYXRhLCBkYXRhW2luZGV4X3JdLnJlc3VsdHMpCiAgICAgZWxzZToKLSAgICAgICAgcHJpbnRfaHRtbF9yZXBvcnQoZGF0YSwgaW5kZXhfbCkKKyAgICAgICAgcHJpbnRfaHRtbF9yZXBvcnQoZGF0YSwgaW5kZXhfbCwgYnVpbGRzdGF0cykKIAogICAgIHJldHVybiAwCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKaW5kZXggYzg5MDU1Mi4uNzdmOThhMyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKQEAgLTI0LDggKzI0LDcgQEAKICAgICBlY2hvICdVc2FnZTogLiAkT0VST09UL3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwgJiYnCiAgICAgZWNobyAnJwogICAgIGVjaG8gJ09wZW5FbWJlZGRlZCBvZS1idWlsZGVudi1pbnRlcm5hbCAtIGFuIGludGVybmFsIHNjcmlwdCB0aGF0IGlzJwotICAgIGVjaG8gJ3VzZWQgaW4gb2UtaW5pdC1idWlsZC1lbnYgYW5kIG9lLWluaXQtYnVpbGQtZW52LW1lbXJlcyB0bycKLSAgICBlY2hvICdpbml0aWFsaXplIG9lIGJ1aWxkIGVudmlyb25tZW50JworICAgIGVjaG8gJ3VzZWQgaW4gb2UtaW5pdC1idWlsZC1lbnYgdG8gaW5pdGlhbGl6ZSBvZSBidWlsZCBlbnZpcm9ubWVudCcKICAgICBlY2hvICcnCiAgICAgZXhpdCAyCiBmaQpAQCAtMTA2LDYgKzEwNSw5IEBACiAKIEJJVEJBS0VESVI9JChyZWFkbGluayAtZiAiJEJJVEJBS0VESVIiKQogQlVJTERESVI9JChyZWFkbGluayAtZiAiJEJVSUxERElSIikKK0JCUEFUSD0kQlVJTERESVIKKworZXhwb3J0IEJCUEFUSAogCiBpZiBbICEgLWQgIiRCSVRCQUtFRElSIiBdOyB0aGVuCiAgICAgZWNobyA+JjIgIkVycm9yOiBUaGUgYml0YmFrZSBkaXJlY3RvcnkgKCRCSVRCQUtFRElSKSBkb2VzIG5vdCBleGlzdCEgIFBsZWFzZSBlbnN1cmUgYSBjb3B5IG9mIGJpdGJha2UgZXhpc3RzIGF0IHRoaXMgbG9jYXRpb24gb3Igc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBwYXRoIG9uIHRoZSBjb21tYW5kIGxpbmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1maW5kLW5hdGl2ZS1zeXNyb290IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtZmluZC1uYXRpdmUtc3lzcm9vdAppbmRleCAyMzVhNjdjLi4zNTBlYTIxIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1maW5kLW5hdGl2ZS1zeXNyb290CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWZpbmQtbmF0aXZlLXN5c3Jvb3QKQEAgLTUwLDcgKzUwLDcgQEAKIHNldF9vZV9uYXRpdmVfc3lzcm9vdCgpewogICAgIGVjaG8gIlJ1bm5pbmcgYml0YmFrZSAtZSAkMSIKICAgICBCSVRCQUtFX0U9ImBiaXRiYWtlIC1lICQxYCIKLSAgICBPRUNPUkVfTkFUSVZFX1NZU1JPT1Q9YGVjaG8gIiRCSVRCQUtFX0UiIHwgZ3JlcCBeU1RBR0lOR19ESVJfTkFUSVZFIHwgY3V0IC1kICciJyAtZjJgCisgICAgT0VDT1JFX05BVElWRV9TWVNST09UPWBlY2hvICIkQklUQkFLRV9FIiB8IGdyZXAgXlNUQUdJTkdfRElSX05BVElWRT0gfCBjdXQgLWQgJyInIC1mMmAKIAogICAgIGlmIFsgIngkT0VDT1JFX05BVElWRV9TWVNST09UIiA9ICJ4IiBdOyB0aGVuCiAgICAgICAgICMgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSB3YXMgYW4gZXJyb3IgcnVubmluZyBiaXRiYWtlIC1lIHRoYXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtdXRpbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtdXRpbAppbmRleCA2NzdlZmZlLi5jNmZiYTU2IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS11dGlsCkBAIC00MCw5ICs0MCw4IEBACiAgICAgaW1wb3J0IGJiLnRpbmZvaWwKICAgICBpbXBvcnQgbG9nZ2luZwogICAgIHRpbmZvaWwgPSBiYi50aW5mb2lsLlRpbmZvaWwoKQotICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQotCiAgICAgdGluZm9pbC5sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5XQVJOSU5HKQorICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQogICAgIHJldHVybiB0aW5mb2lsCiAKIApAQCAtMTk4LDYgKzE5NywxMCBAQAogICAgICAgICAgICAgICAgICMgUEtHU0laRSBpcyBub3cgaW4gYnl0ZXMsIGJ1dCB3ZSB3ZSB3YW50IGl0IGluIEtCCiAgICAgICAgICAgICAgICAgcGtnc2l6ZSA9IChpbnQodmFsdWUpICsgMTAyNCAvLyAyKSAvLyAxMDI0CiAgICAgICAgICAgICAgICAgdmFsdWUgPSAiJWQiICUgcGtnc2l6ZQorICAgICAgICAgICAgaWYgYXJncy51bmVzY2FwZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgY29kZWNzCisgICAgICAgICAgICAgICAgIyBlc2NhcGVfZGVjb2RlKCkgdW5lc2NhcGVzIGJhY2tzbGFzaCBlbmNvZGluZ3MgaW4gYnl0ZSBzdHJlYW1zCisgICAgICAgICAgICAgICAgdmFsdWUgPSBjb2RlY3MuZXNjYXBlX2RlY29kZShieXRlcyh2YWx1ZSwgInV0Zi04IikpWzBdLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgaWYgYXJncy5wcmVmaXhfbmFtZToKICAgICAgICAgICAgICAgICBwcmludCgnJXMgJXMnICUgKHBrZ19uYW1lLCB2YWx1ZSkpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNTUzLDYgKzU1Niw3IEBACiAgICAgcGFyc2VyX3JlYWRfdmFsdWUuYWRkX2FyZ3VtZW50KCdwa2cnLCBuYXJncz0nKicsIGhlbHA9J1J1bnRpbWUgcGFja2FnZSBuYW1lIHRvIGxvb2sgdXAnKQogICAgIHBhcnNlcl9yZWFkX3ZhbHVlLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1maWxlJywgaGVscD0nUmVhZCBwYWNrYWdlIG5hbWVzIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIChvbmUgcGVyIGxpbmUsIGZpcnN0IGZpZWxkIG9ubHkpJykKICAgICBwYXJzZXJfcmVhZF92YWx1ZS5hZGRfYXJndW1lbnQoJy1uJywgJy0tcHJlZml4LW5hbWUnLCBoZWxwPSdQcmVmaXggb3V0cHV0IHdpdGggcGFja2FnZSBuYW1lJywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICBwYXJzZXJfcmVhZF92YWx1ZS5hZGRfYXJndW1lbnQoJy11JywgJy0tdW5lc2NhcGUnLCBoZWxwPSdFeHBhbmQgZXNjYXBlcyBzdWNoIGFzIFxcbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX3JlYWRfdmFsdWUuc2V0X2RlZmF1bHRzKGZ1bmM9cmVhZF92YWx1ZSkKIAogICAgIHBhcnNlcl9nbG9iID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdnbG9iJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXB1Ymxpc2gtc2RrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcHVibGlzaC1zZGsKaW5kZXggOWY3OTYzYy4uZWUzM2FjZiAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcHVibGlzaC1zZGsKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcHVibGlzaC1zZGsKQEAgLTExNCw5ICsxMTQsOSBAQAogCiAgICAgIyBTZXR0aW5nIHVwIHRoZSBnaXQgcmVwbwogICAgIGlmIG5vdCBpc19yZW1vdGU6Ci0gICAgICAgIGNtZCA9ICdzZXQgLWU7IG1rZGlyIC1wICVzL2xheWVyczsgY2QgJXMvbGF5ZXJzOyBpZiBbICEgLWUgLmdpdCBdOyB0aGVuIGdpdCBpbml0IC47IG12IC5naXQvaG9va3MvcG9zdC11cGRhdGUuc2FtcGxlIC5naXQvaG9va3MvcG9zdC11cGRhdGU7IGVjaG8gIioucHljXG4qLnB5b1xucHlzaHRhYmxlcy5weSIgPiAuZ2l0aWdub3JlOyBmaTsgZ2l0IGFkZCAtQSAuOyBnaXQgY29uZmlnIHVzZXIuZW1haWwgIm9lQG9lLm9lIiAmJiBnaXQgY29uZmlnIHVzZXIubmFtZSAiT0UiICYmIGdpdCBjb21taXQgLXEgLW0gImluaXQgcmVwbyIgfHwgdHJ1ZTsgZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbycgJSAoZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uKQorICAgICAgICBjbWQgPSAnc2V0IC1lOyBta2RpciAtcCAlcy9sYXllcnM7IGNkICVzL2xheWVyczsgaWYgWyAhIC1lIC5naXQgXTsgdGhlbiBnaXQgaW5pdCAuOyBjcCAuZ2l0L2hvb2tzL3Bvc3QtdXBkYXRlLnNhbXBsZSAuZ2l0L2hvb2tzL3Bvc3QtY29tbWl0OyBlY2hvICIqLnB5Y1xuKi5weW9cbnB5c2h0YWJsZXMucHkiID4gLmdpdGlnbm9yZTsgZmk7IGdpdCBhZGQgLUEgLjsgZ2l0IGNvbmZpZyB1c2VyLmVtYWlsICJvZUBvZS5vZSIgJiYgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgIk9FIiAmJiBnaXQgY29tbWl0IC1xIC1tICJpbml0IHJlcG8iIHx8IHRydWUnICUgKGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbikKICAgICBlbHNlOgotICAgICAgICBjbWQgPSAic3NoICVzICdzZXQgLWU7IG1rZGlyIC1wICVzL2xheWVyczsgY2QgJXMvbGF5ZXJzOyBpZiBbICEgLWUgLmdpdCBdOyB0aGVuIGdpdCBpbml0IC47IG12IC5naXQvaG9va3MvcG9zdC11cGRhdGUuc2FtcGxlIC5naXQvaG9va3MvcG9zdC11cGRhdGU7IGVjaG8gJyoucHljXG4qLnB5b1xucHlzaHRhYmxlcy5weScgPiAuZ2l0aWdub3JlOyBmaTsgZ2l0IGFkZCAtQSAuOyBnaXQgY29uZmlnIHVzZXIuZW1haWwgJ29lQG9lLm9lJyAmJiBnaXQgY29uZmlnIHVzZXIubmFtZSAnT0UnICYmIGdpdCBjb21taXQgLXEgLW0gXCJpbml0IHJlcG9cIiB8fCB0cnVlOyBnaXQgdXBkYXRlLXNlcnZlci1pbmZvJyIgJSAoaG9zdCwgZGVzdGRpciwgZGVzdGRpcikKKyAgICAgICAgY21kID0gInNzaCAlcyAnc2V0IC1lOyBta2RpciAtcCAlcy9sYXllcnM7IGNkICVzL2xheWVyczsgaWYgWyAhIC1lIC5naXQgXTsgdGhlbiBnaXQgaW5pdCAuOyBjcCAuZ2l0L2hvb2tzL3Bvc3QtdXBkYXRlLnNhbXBsZSAuZ2l0L2hvb2tzL3Bvc3QtY29tbWl0OyBlY2hvICcqLnB5Y1xuKi5weW9cbnB5c2h0YWJsZXMucHknID4gLmdpdGlnbm9yZTsgZmk7IGdpdCBhZGQgLUEgLjsgZ2l0IGNvbmZpZyB1c2VyLmVtYWlsICdvZUBvZS5vZScgJiYgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgJ09FJyAmJiBnaXQgY29tbWl0IC1xIC1tIFwiaW5pdCByZXBvXCIgfHwgdHJ1ZSciICUgKGhvc3QsIGRlc3RkaXIsIGRlc3RkaXIpCiAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKICAgICBpZiByZXQgPT0gMDoKICAgICAgICAgbG9nZ2VyLmluZm8oJ1NESyBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXNlbGZ0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QKaW5kZXggNTIzNjZiMS4uMWJmODYwYSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoYykgMjAxMy0yMDE3IEludGVsIENvcnBvcmF0aW9uCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCkBAIC0yNSw3OTAgKzI1LDUxIEBACiAjIEUuZzogIm9lLXNlbGZ0ZXN0IC1yIGJibGF5ZXJzLkJpdGJha2VMYXllcnMiIHdpbGwgcnVuIGp1c3QgdGhlIEJpdGJha2VMYXllcnMgY2xhc3MgZnJvbSBtZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JibGF5ZXJzLnB5CiAKIAorCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBhcmdwYXJzZQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCB0aW1lIGFzIHQKLWltcG9ydCByZQotaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGltcAoraW1wb3J0IGxvZ2dpbmcKIAotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkgKyAnL2xpYicpCi1pbXBvcnQgc2NyaXB0cGF0aAotc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCi1zY3JpcHRwYXRoLmFkZF9vZV9saWJfcGF0aCgpCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCitsaWJfcGF0aCA9IHNjcmlwdHNfcGF0aCArICcvbGliJworc3lzLnBhdGggPSBzeXMucGF0aCArIFtsaWJfcGF0aF0KIGltcG9ydCBhcmdwYXJzZV9vZQoraW1wb3J0IHNjcmlwdHV0aWxzCitpbXBvcnQgc2NyaXB0cGF0aAorc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQorc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCiAKLWltcG9ydCBvZXFhLnNlbGZ0ZXN0Ci1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKLWZyb20gb2VxYS51dGlscy5tZXRhZGF0YSBpbXBvcnQgbWV0YWRhdGFfZnJvbV9iYiwgd3JpdGVfbWV0YWRhdGFfZmlsZQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QsIGdldF9hdmFpbGFibGVfbWFjaGluZXMKK2Zyb20gb2VxYS51dGlscyBpbXBvcnQgbG9hZF90ZXN0X2NvbXBvbmVudHMKK2Zyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQVByZVJ1bgogCi10cnk6Ci0gICAgaW1wb3J0IHhtbHJ1bm5lcgotICAgIGZyb20geG1scnVubmVyLnJlc3VsdCBpbXBvcnQgX1hNTFRlc3RSZXN1bHQgYXMgVGVzdFJlc3VsdAotICAgIGZyb20geG1scnVubmVyIGltcG9ydCBYTUxUZXN0UnVubmVyIGFzIF9UZXN0UnVubmVyCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyB1c2UgdGhlIGJhc2UgcnVubmVyIGluc3RlYWQKLSAgICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXh0VGVzdFJlc3VsdCBhcyBUZXN0UmVzdWx0Ci0gICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgVGV4dFRlc3RSdW5uZXIgYXMgX1Rlc3RSdW5uZXIKLQotbG9nX3ByZWZpeCA9ICJvZS1zZWxmdGVzdC0iICsgdC5zdHJmdGltZSgiJVklbSVkLSVIJU0lUyIpCi0KLWRlZiBsb2dnZXJfY3JlYXRlKCk6Ci0gICAgbG9nX2ZpbGUgPSBsb2dfcHJlZml4ICsgIi5sb2ciCi0gICAgaWYgb3MucGF0aC5sZXhpc3RzKCJvZS1zZWxmdGVzdC5sb2ciKToKLSAgICAgICAgb3MucmVtb3ZlKCJvZS1zZWxmdGVzdC5sb2ciKQotICAgIG9zLnN5bWxpbmsobG9nX2ZpbGUsICJvZS1zZWxmdGVzdC5sb2ciKQotCi0gICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInNlbGZ0ZXN0IikKLSAgICBsb2cuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKLQotICAgIGZoID0gbG9nZ2luZy5GaWxlSGFuZGxlcihmaWxlbmFtZT1sb2dfZmlsZSwgbW9kZT0ndycpCi0gICAgZmguc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKLQotICAgIGNoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRvdXQpCi0gICAgY2guc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQotCi0gICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUoYXNjdGltZSlzIC0gJShuYW1lKXMgLSAlKGxldmVsbmFtZSlzIC0gJShtZXNzYWdlKXMnKQotICAgIGZoLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCi0gICAgY2guc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKLQotICAgIGxvZy5hZGRIYW5kbGVyKGZoKQotICAgIGxvZy5hZGRIYW5kbGVyKGNoKQotCi0gICAgcmV0dXJuIGxvZwotCi1sb2cgPSBsb2dnZXJfY3JlYXRlKCkKLQotZGVmIGdldF9hcmdzX3BhcnNlcigpOgotICAgIGRlc2NyaXB0aW9uID0gIlNjcmlwdCB0aGF0IHJ1bnMgdW5pdCB0ZXN0cyBhZ2FpbnN0IGJpdGJha2UgYW5kIG90aGVyIFlvY3RvIHJlbGF0ZWQgdG9vbHMuIFRoZSBnb2FsIGlzIHRvIHZhbGlkYXRlIHRvb2xzIGZ1bmN0aW9uYWxpdHkgYW5kIG1ldGFkYXRhIGludGVncml0eS4gUmVmZXIgdG8gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9PZS1zZWxmdGVzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi0gICAgcGFyc2VyID0gYXJncGFyc2Vfb2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249ZGVzY3JpcHRpb24pCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cChyZXF1aXJlZD1UcnVlKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1ydW4tdGVzdHMnLCByZXF1aXJlZD1GYWxzZSwgYWN0aW9uPSdzdG9yZScsIG5hcmdzPScqJywgZGVzdD0icnVuX3Rlc3RzIiwgZGVmYXVsdD1Ob25lLCBoZWxwPSdTZWxlY3Qgd2hhdCB0ZXN0cyB0byBydW4gKG1vZHVsZXMsIGNsYXNzZXMgb3IgdGVzdCBtZXRob2RzKS4gRm9ybWF0IHNob3VsZCBiZTogPG1vZHVsZT4uPGNsYXNzPi48dGVzdF9tZXRob2Q+JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1hJywgJy0tcnVuLWFsbC10ZXN0cycsIHJlcXVpcmVkPUZhbHNlLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJydW5fYWxsX3Rlc3RzIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUnVuIGFsbCAodW5oaWRkZW4pIHRlc3RzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbGlzdC1tb2R1bGVzJywgcmVxdWlyZWQ9RmFsc2UsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Imxpc3RfbW9kdWxlcyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J0xpc3QgYWxsIGF2YWlsYWJsZSB0ZXN0IG1vZHVsZXMuJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbGlzdC1jbGFzc2VzJywgcmVxdWlyZWQ9RmFsc2UsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Imxpc3RfYWxsY2xhc3NlcyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J0xpc3QgYWxsIGF2YWlsYWJsZSB0ZXN0IGNsYXNzZXMuJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdmVyYWdlJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iUnVuIGNvZGUgY292ZXJhZ2Ugd2hlbiB0ZXN0aW5nIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdmVyYWdlLXNvdXJjZScsIGRlc3Q9ImNvdmVyYWdlX3NvdXJjZSIsIG5hcmdzPSIrIiwgaGVscD0iU3BlY2lmaXkgdGhlIGRpcmVjdG9yaWVzIHRvIHRha2UgY292ZXJhZ2UgZnJvbSIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb3ZlcmFnZS1pbmNsdWRlJywgZGVzdD0iY292ZXJhZ2VfaW5jbHVkZSIsIG5hcmdzPSIrIiwgaGVscD0iU3BlY2lmeSBleHRyYSBwYXR0ZXJucyB0byBpbmNsdWRlIGludG8gdGhlIGNvdmVyYWdlIG1lYXN1cmVtZW50IikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdmVyYWdlLW9taXQnLCBkZXN0PSJjb3ZlcmFnZV9vbWl0IiwgbmFyZ3M9IisiLCBoZWxwPSJTcGVjaWZ5IHdpdGggZXh0cmEgcGF0dGVybnMgdG8gZXhjbHVkZSBmcm9tIHRoZSBjb3ZlcmFnZSBtZWFzdXJlbWVudCIpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJ1bi10ZXN0cy1ieScsIHJlcXVpcmVkPUZhbHNlLCBkZXN0PSdydW5fdGVzdHNfYnknLCBkZWZhdWx0PUZhbHNlLCBuYXJncz0nKicsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1bi10ZXN0cy1ieSA8bmFtZXxjbGFzc3xtb2R1bGV8aWR8dGFnPiA8bGlzdCBvZiB0ZXN0c3xjbGFzc2VzfG1vZHVsZXN8aWRzfHRhZ3M+JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbGlzdC10ZXN0cy1ieScsIHJlcXVpcmVkPUZhbHNlLCBkZXN0PSdsaXN0X3Rlc3RzX2J5JywgZGVmYXVsdD1GYWxzZSwgbmFyZ3M9JyonLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdsaXN0LXRlc3RzLWJ5IDxuYW1lfGNsYXNzfG1vZHVsZXxpZHx0YWc+IDxsaXN0IG9mIHRlc3RzfGNsYXNzZXN8bW9kdWxlc3xpZHN8dGFncz4nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1saXN0LXRlc3RzJywgcmVxdWlyZWQ9RmFsc2UsICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJsaXN0X3Rlc3RzIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTGlzdCBhbGwgYXZhaWxhYmxlIHRlc3RzLicpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWxpc3QtdGFncycsIHJlcXVpcmVkPUZhbHNlLCBkZXN0PSdsaXN0X3RhZ3MnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMaXN0IGFsbCB0YWdzIHRoYXQgaGF2ZSBiZWVuIHNldCB0byB0ZXN0IGNhc2VzLicpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tYWNoaW5lJywgcmVxdWlyZWQ9RmFsc2UsIGRlc3Q9J21hY2hpbmUnLCBjaG9pY2VzPVsncmFuZG9tJywgJ2FsbCddLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSdW4gdGVzdHMgb24gZGlmZmVyZW50IG1hY2hpbmVzIChyYW5kb20vYWxsKS4nKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVwb3NpdG9yeScsIHJlcXVpcmVkPUZhbHNlLCBkZXN0PSdyZXBvc2l0b3J5JywgZGVmYXVsdD0nJywgYWN0aW9uPSdzdG9yZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTdWJtaXQgdGVzdCByZXN1bHRzIHRvIGEgcmVwb3NpdG9yeScpCi0gICAgcmV0dXJuIHBhcnNlcgotCi1idWlsZGRpciA9IE5vbmUKLQotCi1kZWYgcHJlZmxpZ2h0X2NoZWNrKCk6Ci0KLSAgICBnbG9iYWwgYnVpbGRkaXIKLQotICAgIGxvZy5pbmZvKCJDaGVja2luZyB0aGF0IGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3RzIikKLQotICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgiQlVJTERESVIiKToKLSAgICAgICAgbG9nLmVycm9yKCJCVUlMRERJUiBpc24ndCBzZXQuIERpZCB5b3UgZm9yZ2V0IHRvIHNvdXJjZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdD8iKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvbi5nZXQoIkJVSUxERElSIikKLSAgICBpZiBvcy5nZXRjd2QoKSAhPSBidWlsZGRpcjoKLSAgICAgICAgbG9nLmluZm8oIkNoYW5naW5nIGN3ZCB0byAlcyIgJSBidWlsZGRpcikKLSAgICAgICAgb3MuY2hkaXIoYnVpbGRkaXIpCi0KLSAgICBpZiBub3QgIm1ldGEtc2VsZnRlc3QiIGluIGdldF9iYl92YXIoIkJCTEFZRVJTIik6Ci0gICAgICAgIGxvZy53YXJuKCJtZXRhLXNlbGZ0ZXN0IGxheWVyIG5vdCBmb3VuZCBpbiBCQkxBWUVSUywgYWRkaW5nIGl0IikKLSAgICAgICAgbWV0YV9zZWxmdGVzdGRpciA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICBnZXRfYmJfdmFyKCJCQkxBWUVSU19GRVRDSF9ESVIiKSwKLSAgICAgICAgICAgICAgICAnbWV0YS1zZWxmdGVzdCcpCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIobWV0YV9zZWxmdGVzdGRpcik6Ci0gICAgICAgICAgICBydW5DbWQoImJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcyIgJW1ldGFfc2VsZnRlc3RkaXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2cuZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgbWV0YS1zZWxmdGVzdCBpbjpcbiVzIgotICAgICAgICAgICAgICAgICAgICAlbWV0YV9zZWxmdGVzdGRpcikKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgImJ1aWxkaGlzdG9yeS5iYmNsYXNzIiBpbiBnZXRfYmJfdmFyKCJCQklOQ0xVREVEIik6Ci0gICAgICAgIGxvZy5lcnJvcigiWW91IGhhdmUgYnVpbGRoaXN0b3J5IGVuYWJsZWQgYWxyZWFkeSBhbmQgdGhpcyBpc24ndCByZWNvbW1lbmRlZCBmb3Igc2VsZnRlc3QsIHBsZWFzZSBkaXNhYmxlIGl0IGZpcnN0LiIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgZ2V0X2JiX3ZhcigiUFJTRVJWX0hPU1QiKToKLSAgICAgICAgbG9nLmVycm9yKCJQbGVhc2UgdW5zZXQgUFJTRVJWX0hPU1QgaW4gb3JkZXIgdG8gcnVuIG9lLXNlbGZ0ZXN0IikKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBpZiBnZXRfYmJfdmFyKCJTQU5JVFlfVEVTVEVEX0RJU1RST1MiKToKLSAgICAgICAgbG9nLmVycm9yKCJQbGVhc2UgdW5zZXQgU0FOSVRZX1RFU1RFRF9ESVNUUk9TIGluIG9yZGVyIHRvIHJ1biBvZS1zZWxmdGVzdCIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgbG9nLmluZm8oIlJ1bm5pbmcgYml0YmFrZSAtcCIpCi0gICAgcnVuQ21kKCJiaXRiYWtlIC1wIikKLQotICAgIHJldHVybiBUcnVlCi0KLWRlZiBhZGRfaW5jbHVkZSgpOgotICAgIGdsb2JhbCBidWlsZGRpcgotICAgIGlmICIjaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weSIgXAotICAgICAgICBub3QgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSk6Ci0gICAgICAgICAgICBsb2cuaW5mbygiQWRkaW5nOiBcImluY2x1ZGUgc2VsZnRlc3QuaW5jXCIgaW4gbG9jYWwuY29uZiIpCi0gICAgICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIiksIFwKLSAgICAgICAgICAgICAgICAgICAgIlxuI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QucHlcbmluY2x1ZGUgbWFjaGluZS5pbmNcbmluY2x1ZGUgc2VsZnRlc3QuaW5jIikKLQotICAgIGlmICIjaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weSIgXAotICAgICAgICBub3QgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKSk6Ci0gICAgICAgICAgICBsb2cuaW5mbygiQWRkaW5nOiBcImluY2x1ZGUgYmJsYXllcnMuaW5jXCIgaW4gYmJsYXllcnMuY29uZiIpCi0gICAgICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIiksIFwKLSAgICAgICAgICAgICAgICAgICAgIlxuI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QucHlcbmluY2x1ZGUgYmJsYXllcnMuaW5jIikKLQotZGVmIHJlbW92ZV9pbmNsdWRlKCk6Ci0gICAgZ2xvYmFsIGJ1aWxkZGlyCi0gICAgaWYgYnVpbGRkaXIgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgIiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0LnB5IiBcCi0gICAgICAgIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikpOgotICAgICAgICAgICAgbG9nLmluZm8oIlJlbW92aW5nIHRoZSBpbmNsdWRlIGZyb20gbG9jYWwuY29uZiIpCi0gICAgICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSwgXAotICAgICAgICAgICAgICAgICAgICAiXG4jaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weVxuaW5jbHVkZSBtYWNoaW5lLmluY1xuaW5jbHVkZSBzZWxmdGVzdC5pbmMiKQotCi0gICAgaWYgIiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0LnB5IiBcCi0gICAgICAgIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikpOgotICAgICAgICAgICAgbG9nLmluZm8oIlJlbW92aW5nIHRoZSBpbmNsdWRlIGZyb20gYmJsYXllcnMuY29uZiIpCi0gICAgICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKSwgXAotICAgICAgICAgICAgICAgICAgICAiXG4jaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weVxuaW5jbHVkZSBiYmxheWVycy5pbmMiKQotCi1kZWYgcmVtb3ZlX2luY19maWxlcygpOgotICAgIGdsb2JhbCBidWlsZGRpcgotICAgIGlmIGJ1aWxkZGlyIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybgotICAgIHRyeToKLSAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvc2VsZnRlc3QuaW5jIikpCi0gICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGdldF90ZXN0X2xheWVyKCkpOgotICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgaWYgZiA9PSAndGVzdF9yZWNpcGUuaW5jJzoKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBmKSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBwYXNzCi0KLSAgICBmb3IgaW5jbF9maWxlIGluIFsnY29uZi9iYmxheWVycy5pbmMnLCAnY29uZi9tYWNoaW5lLmluYyddOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKGJ1aWxkZGlyLCBpbmNsX2ZpbGUpKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLQotZGVmIGdldF90ZXN0c19tb2R1bGVzKGluY2x1ZGVfaGlkZGVuPUZhbHNlKToKLSAgICBtb2R1bGVzX2xpc3QgPSBsaXN0KCkKLSAgICBmb3IgbW9kdWxlc19wYXRoIGluIG9lcWEuc2VsZnRlc3QuX19wYXRoX186Ci0gICAgICAgIGZvciAocCwgZCwgZikgaW4gb3Mud2Fsayhtb2R1bGVzX3BhdGgpOgotICAgICAgICAgICAgZmlsZXMgPSBzb3J0ZWQoW2YgZm9yIGYgaW4gb3MubGlzdGRpcihwKSBpZiBmLmVuZHN3aXRoKCcucHknKSBhbmQgbm90IChmLnN0YXJ0c3dpdGgoJ18nKSBhbmQgbm90IGluY2x1ZGVfaGlkZGVuKSBhbmQgbm90IGYuc3RhcnRzd2l0aCgnX18nKSBhbmQgZiAhPSAnYmFzZS5weSddKQotICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgc3VibW9kdWxlcyA9IHAuc3BsaXQoInNlbGZ0ZXN0IilbLTFdCi0gICAgICAgICAgICAgICAgbW9kdWxlID0gIiIKLSAgICAgICAgICAgICAgICBpZiBzdWJtb2R1bGVzOgotICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSAnb2VxYS5zZWxmdGVzdCcgKyBzdWJtb2R1bGVzLnJlcGxhY2UoIi8iLCIuIikgKyAiLiIgKyBmLnNwbGl0KCcucHknKVswXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9ICdvZXFhLnNlbGZ0ZXN0LicgKyBmLnNwbGl0KCcucHknKVswXQotICAgICAgICAgICAgICAgIGlmIG1vZHVsZSBub3QgaW4gbW9kdWxlc19saXN0OgotICAgICAgICAgICAgICAgICAgICBtb2R1bGVzX2xpc3QuYXBwZW5kKG1vZHVsZSkKLSAgICByZXR1cm4gbW9kdWxlc19saXN0Ci0KLQotZGVmIGdldF90ZXN0cyhleGNsdXNpdmVfbW9kdWxlcz1bXSwgaW5jbHVkZV9oaWRkZW49RmFsc2UpOgotICAgIHRlc3RfbW9kdWxlcyA9IGxpc3QoKQotICAgIGZvciB4IGluIGV4Y2x1c2l2ZV9tb2R1bGVzOgotICAgICAgICB0ZXN0X21vZHVsZXMuYXBwZW5kKCdvZXFhLnNlbGZ0ZXN0LicgKyB4KQotICAgIGlmIG5vdCB0ZXN0X21vZHVsZXM6Ci0gICAgICAgIGluY19oaWRkZW4gPSBpbmNsdWRlX2hpZGRlbgotICAgICAgICB0ZXN0X21vZHVsZXMgPSBnZXRfdGVzdHNfbW9kdWxlcyhpbmNfaGlkZGVuKQotCi0gICAgcmV0dXJuIHRlc3RfbW9kdWxlcwotCi0KLWNsYXNzIFRjOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Y25hbWUsIHRjY2xhc3MsIHRjbW9kdWxlLCB0Y2lkPU5vbmUsIHRjdGFnPU5vbmUpOgotICAgICAgICBzZWxmLnRjbmFtZSA9IHRjbmFtZQotICAgICAgICBzZWxmLnRjY2xhc3MgPSB0Y2NsYXNzCi0gICAgICAgIHNlbGYudGNtb2R1bGUgPSB0Y21vZHVsZQotICAgICAgICBzZWxmLnRjaWQgPSB0Y2lkCi0gICAgICAgICMgQSB0ZXN0IGNhc2UgY2FuIGhhdmUgbXVsdGlwbGUgdGFncyAoYXMgdHVwbGVzKSBvdGhlcndpc2Ugc3RyIHdpbGwgc3VmZmljZQotICAgICAgICBzZWxmLnRjdGFnID0gdGN0YWcKLSAgICAgICAgc2VsZi5mdWxscGF0aCA9ICcuJy5qb2luKFsnb2VxYScsICdzZWxmdGVzdCcsIHRjbW9kdWxlLCB0Y2NsYXNzLCB0Y25hbWVdKQotCi0KLWRlZiBnZXRfdGVzdHNfZnJvbV9tb2R1bGUodG1vZCk6Ci0gICAgdGxpc3QgPSBbXQotICAgIHByZWZpeCA9ICdvZXFhLnNlbGZ0ZXN0LicKLQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IGltcG9ydGxpYgotICAgICAgICBtb2RsaWIgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSh0bW9kKQotICAgICAgICBmb3IgbW9kIGluIGxpc3QodmFycyhtb2RsaWIpLnZhbHVlcygpKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobW9kLCB0eXBlKG9lU2VsZlRlc3QpKSBhbmQgaXNzdWJjbGFzcyhtb2QsIG9lU2VsZlRlc3QpIGFuZCBtb2QgaXMgbm90IG9lU2VsZlRlc3Q6Ci0gICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gZGlyKG1vZCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aCgndGVzdF8nKSBhbmQgaGFzYXR0cih2YXJzKG1vZClbdGVzdF0sICdfX2NhbGxfXycpOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGVzdCBjYXNlIGlkIGFuZCBmZWF0dXJlIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAgIyBOT1RFOiBpZiB0ZXN0Y2FzZSBkZWNvcmF0b3Igb3IgZmVhdHVyZSB0YWcgbm90IHNldCB3aWxsIHRocm93IGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkID0gdmFycyhtb2QpW3Rlc3RdLnRlc3RfY2FzZQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdERUJVRzogdGMgaWQgbWlzc2luZyBmb3IgJyArIHN0cih0ZXN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRhZyA9IHZhcnMobW9kKVt0ZXN0XS50YWdfX2ZlYXR1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50KCdERUJVRzogZmVhdHVyZSB0YWcgbWlzc2luZyBmb3IgJyArIHN0cih0ZXN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dGFnID0gTm9uZQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIE5PVEU6IGZvciBzb21lIHJlYXNvbiBsc3RyaXAoKSBkb2Vzbid0IHdvcmsgZm9yIG1vZC5fX21vZHVsZV9fCi0gICAgICAgICAgICAgICAgICAgICAgICB0bGlzdC5hcHBlbmQoVGModGVzdCwgbW9kLl9fbmFtZV9fLCBtb2QuX19tb2R1bGVfXy5yZXBsYWNlKHByZWZpeCwgJycpLCB0aWQsIHR0YWcpKQotICAgIGV4Y2VwdDoKLSAgICAgICAgcGFzcwotCi0gICAgcmV0dXJuIHRsaXN0Ci0KLQotZGVmIGdldF9hbGxfdGVzdHMoKToKLSAgICAjIEdldCBhbGwgdGhlIHRlc3QgbW9kdWxlcyAoZXhjZXB0IHRoZSBoaWRkZW4gb25lcykKLSAgICB0ZXN0bGlzdCA9IFtdCi0gICAgdGVzdHNfbW9kdWxlcyA9IGdldF90ZXN0c19tb2R1bGVzKCkKLSAgICAjIEdldCBhbGwgdGhlIHRlc3RzIGZyb20gbW9kdWxlcwotICAgIGZvciB0bW9kIGluIHNvcnRlZCh0ZXN0c19tb2R1bGVzKToKLSAgICAgICAgdGVzdGxpc3QgKz0gZ2V0X3Rlc3RzX2Zyb21fbW9kdWxlKHRtb2QpCi0gICAgcmV0dXJuIHRlc3RsaXN0Ci0KLQotZGVmIGdldF90ZXN0c3VpdGVfYnkoY3JpdGVyaWEsIGtleXdvcmQpOgotICAgICMgR2V0IGEgdGVzdHN1aXRlIGJhc2VkIG9uICdrZXl3b3JkJwotICAgICMgY3JpdGVyaWE6IG5hbWUsIGNsYXNzLCBtb2R1bGUsIGlkLCB0YWcKLSAgICAjIGtleXdvcmQ6IGEgbGlzdCBvZiB0ZXN0cywgY2xhc3NlcywgbW9kdWxlcywgaWRzLCB0YWdzCi0KLSAgICB0cyA9IFtdCi0gICAgYWxsX3Rlc3RzID0gZ2V0X2FsbF90ZXN0cygpCi0KLSAgICBkZWYgZ2V0X21hdGNoZXModmFsdWVzKToKLSAgICAgICAgIyBHZXQgYW4gaXRlbSBhbmQgcmV0dXJuIHRoZSBvbmVzIHRoYXQgbWF0Y2ggd2l0aCBrZXl3b3JkKHMpCi0gICAgICAgICMgdmFsdWVzOiB0aGUgbGlzdCBvZiBpdGVtcyAobmFtZXMsIG1vZHVsZXMsIGNsYXNzZXMuLi4pCi0gICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgIHJlbWFpbmluZyA9IHZhbHVlc1s6XQotICAgICAgICBmb3Iga2V5IGluIGtleXdvcmQ6Ci0gICAgICAgICAgICBmb3VuZCA9IEZhbHNlCi0gICAgICAgICAgICBpZiBrZXkgaW4gcmVtYWluaW5nOgotICAgICAgICAgICAgICAgICMgUmVndWxhciBtYXRjaGluZyBvZiBleGFjdCBpdGVtCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChrZXkpCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nLnJlbW92ZShrZXkpCi0gICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgV2lsZGNhcmQgbWF0Y2hpbmcKLSAgICAgICAgICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZShmbm1hdGNoLnRyYW5zbGF0ZShyIiVzIiAlIGtleSkpCi0gICAgICAgICAgICAgICAgYWRkZWQgPSBbeCBmb3IgeCBpbiByZW1haW5pbmcgaWYgcGF0dGVybi5tYXRjaCh4KV0KLSAgICAgICAgICAgICAgICBpZiBhZGRlZDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChhZGRlZCkKLSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gW3ggZm9yIHggaW4gcmVtYWluaW5nIGlmIHggbm90IGluIGFkZGVkXQotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgIGlmIG5vdCBmb3VuZDoKLSAgICAgICAgICAgICAgICBsb2cuZXJyb3IoIkZhaWxlZCB0byBmaW5kIHRlc3Q6ICVzIiAlIGtleSkKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBpZiBjcml0ZXJpYSA9PSAnbmFtZSc6Ci0gICAgICAgIG5hbWVzID0gZ2V0X21hdGNoZXMoWyB0Yy50Y25hbWUgZm9yIHRjIGluIGFsbF90ZXN0cyBdKQotICAgICAgICB0cyA9IFsgdGMgZm9yIHRjIGluIGFsbF90ZXN0cyBpZiB0Yy50Y25hbWUgaW4gbmFtZXMgXQotCi0gICAgZWxpZiBjcml0ZXJpYSA9PSAnY2xhc3MnOgotICAgICAgICBjbGFzc2VzID0gZ2V0X21hdGNoZXMoWyB0Yy50Y2NsYXNzIGZvciB0YyBpbiBhbGxfdGVzdHMgXSkKLSAgICAgICAgdHMgPSBbIHRjIGZvciB0YyBpbiBhbGxfdGVzdHMgaWYgdGMudGNjbGFzcyBpbiBjbGFzc2VzIF0KLQotICAgIGVsaWYgY3JpdGVyaWEgPT0gJ21vZHVsZSc6Ci0gICAgICAgIG1vZHVsZXMgPSBnZXRfbWF0Y2hlcyhbIHRjLnRjbW9kdWxlIGZvciB0YyBpbiBhbGxfdGVzdHMgXSkKLSAgICAgICAgdHMgPSBbIHRjIGZvciB0YyBpbiBhbGxfdGVzdHMgaWYgdGMudGNtb2R1bGUgaW4gbW9kdWxlcyBdCi0KLSAgICBlbGlmIGNyaXRlcmlhID09ICdpZCc6Ci0gICAgICAgIGlkcyA9IGdldF9tYXRjaGVzKFsgc3RyKHRjLnRjaWQpIGZvciB0YyBpbiBhbGxfdGVzdHMgXSkKLSAgICAgICAgdHMgPSBbIHRjIGZvciB0YyBpbiBhbGxfdGVzdHMgaWYgc3RyKHRjLnRjaWQpIGluIGlkcyBdCi0KLSAgICBlbGlmIGNyaXRlcmlhID09ICd0YWcnOgotICAgICAgICB2YWx1ZXMgPSBzZXQoKQotICAgICAgICBmb3IgdGMgaW4gYWxsX3Rlc3RzOgotICAgICAgICAgICAgIyB0YyBjYW4gaGF2ZSBtdWx0aXBsZSB0YWdzIChhcyB0dXBsZSkgb3RoZXJ3aXNlIHN0ciB3aWxsIHN1ZmZpY2UKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGMudGN0YWcsIHR1cGxlKToKLSAgICAgICAgICAgICAgICB2YWx1ZXMgfD0geyBzdHIodGFnKSBmb3IgdGFnIGluIHRjLnRjdGFnIH0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFkZChzdHIodGMudGN0YWcpKQotCi0gICAgICAgIHRhZ3MgPSBnZXRfbWF0Y2hlcyhsaXN0KHZhbHVlcykpCi0KLSAgICAgICAgZm9yIHRjIGluIGFsbF90ZXN0czoKLSAgICAgICAgICAgIGZvciB0YWcgaW4gdGFnczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHRjLnRjdGFnLCB0dXBsZSkgYW5kIHRhZyBpbiB0Yy50Y3RhZzoKLSAgICAgICAgICAgICAgICAgICAgdHMuYXBwZW5kKHRjKQotICAgICAgICAgICAgICAgIGVsaWYgdGFnID09IHRjLnRjdGFnOgotICAgICAgICAgICAgICAgICAgICB0cy5hcHBlbmQodGMpCi0KLSAgICAgICAgIyBSZW1vdmUgZHVwbGljYXRlcyBmcm9tIHRoZSBsaXN0Ci0gICAgICAgIHRzID0gbGlzdChzZXQodHMpKQotCi0gICAgcmV0dXJuIHRzCi0KLQotZGVmIGxpc3RfdGVzdHN1aXRlX2J5KGNyaXRlcmlhLCBrZXl3b3JkKToKLSAgICAjIEdldCBhIHRlc3RzdWl0ZSBiYXNlZCBvbiAna2V5d29yZCcKLSAgICAjIGNyaXRlcmlhOiBuYW1lLCBjbGFzcywgbW9kdWxlLCBpZCwgdGFnCi0gICAgIyBrZXl3b3JkOiBhIGxpc3Qgb2YgdGVzdHMsIGNsYXNzZXMsIG1vZHVsZXMsIGlkcywgdGFncwotICAgIGRlZiB0Y19rZXkodCk6Ci0gICAgICAgIGlmIHRbMF0gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAgKDAsKSArIHRbMTpdCi0gICAgICAgIHJldHVybiB0Ci0gICAgIyB0Y2lkIG1heSBiZSBOb25lIGlmIG5vIElEIHdhcyBhc3NpZ25lZCwgaW4gd2hpY2ggY2FzZSBzb3J0ZWQoKSB3aWxsIHRocm93Ci0gICAgIyBhIFR5cGVFcnJvciBhcyBQeXRob24gMyBkb2VzIG5vdCBhbGxvdyBjb21wYXJpc29uICg8LDw9LD49LD4pIG9mCi0gICAgIyBoZXRlcm9nZW5lb3VzIHR5cGVzLCBoYW5kbGUgdGhpcyBieSB1c2luZyBhIGN1c3RvbSBrZXkgZ2VuZXJhdG9yCi0gICAgdHMgPSBzb3J0ZWQoWyAodGMudGNpZCwgdGMudGN0YWcsIHRjLnRjbmFtZSwgdGMudGNjbGFzcywgdGMudGNtb2R1bGUpIFwKLSAgICAgICAgICAgICAgICAgIGZvciB0YyBpbiBnZXRfdGVzdHN1aXRlX2J5KGNyaXRlcmlhLCBrZXl3b3JkKSBdLCBrZXk9dGNfa2V5KQotICAgIHByaW50KCdfJyAqIDE1MCkKLSAgICBmb3IgdCBpbiB0czoKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh0WzFdLCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIHByaW50KCclLTRzXHQlLTIwc1x0JS02MHNcdCUtMjVzXHQlLTIwcycgJSAodFswXSwgJywgJy5qb2luKHRbMV0pLCB0WzJdLCB0WzNdLCB0WzRdKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCclLTRzXHQlLTIwc1x0JS02MHNcdCUtMjVzXHQlLTIwcycgJSB0KQotICAgIHByaW50KCdfJyAqIDE1MCkKLSAgICBwcmludCgnRmlsdGVyaW5nIGJ5Olx0ICVzJyAlIGNyaXRlcmlhKQotICAgIHByaW50KCdMb29raW5nIGZvcjpcdCAlcycgJSAnLCAnLmpvaW4oc3RyKHgpIGZvciB4IGluIGtleXdvcmQpKQotICAgIHByaW50KCdUb3RhbCBmb3VuZDpcdCAlcycgJSBsZW4odHMpKQotCi0KLWRlZiBsaXN0X3Rlc3RzKCk6Ci0gICAgIyBMaXN0IGFsbCBhdmFpbGFibGUgb2Utc2VsZnRlc3QgdGVzdHMKLQotICAgIHRzID0gZ2V0X2FsbF90ZXN0cygpCi0KLSAgICBwcmludCgnJS00c1x0JS0xMHNcdCUtNTBzJyAlICgnaWQnLCAndGFnJywgJ3Rlc3QnKSkKLSAgICBwcmludCgnXycgKiA4MCkKLSAgICBmb3IgdCBpbiB0czoKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh0LnRjdGFnLCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIHByaW50KCclLTRzXHQlLTEwc1x0JS01MHMnICUgKHQudGNpZCwgJywgJy5qb2luKHQudGN0YWcpLCAnLicuam9pbihbdC50Y21vZHVsZSwgdC50Y2NsYXNzLCB0LnRjbmFtZV0pKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCclLTRzXHQlLTEwc1x0JS01MHMnICUgKHQudGNpZCwgdC50Y3RhZywgJy4nLmpvaW4oW3QudGNtb2R1bGUsIHQudGNjbGFzcywgdC50Y25hbWVdKSkpCi0gICAgcHJpbnQoJ18nICogODApCi0gICAgcHJpbnQoJ1RvdGFsIGZvdW5kOlx0ICVzJyAlIGxlbih0cykpCi0KLWRlZiBsaXN0X3RhZ3MoKToKLSAgICAjIEdldCBhbGwgdGFncyBzZXQgdG8gdGVzdCBjYXNlcwotICAgICMgVGhpcyBpcyB1c2VmdWwgd2hlbiBzZXR0aW5nIHRhZ3MgdG8gdGVzdCBjYXNlcwotICAgICMgVGhlIGxpc3Qgb2YgdGFncyBzaG91bGQgYmUga2VwdCBhcyBtaW5pbWFsIGFzIHBvc3NpYmxlCi0gICAgdGFncyA9IHNldCgpCi0gICAgYWxsX3Rlc3RzID0gZ2V0X2FsbF90ZXN0cygpCi0KLSAgICBmb3IgdGMgaW4gYWxsX3Rlc3RzOgotICAgICAgICBpZiBpc2luc3RhbmNlKHRjLnRjdGFnLCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgIHRhZ3MudXBkYXRlKHNldCh0Yy50Y3RhZykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0YWdzLmFkZCh0Yy50Y3RhZykKLQotICAgIHByaW50KCdUYWdzOlx0JXMnICUgJywgJy5qb2luKHN0cih4KSBmb3IgeCBpbiB0YWdzKSkKLQotZGVmIGNvdmVyYWdlX3NldHVwKGNvdmVyYWdlX3NvdXJjZSwgY292ZXJhZ2VfaW5jbHVkZSwgY292ZXJhZ2Vfb21pdCk6Ci0gICAgIiIiIFNldCB1cCB0aGUgY292ZXJhZ2UgbWVhc3VyZW1lbnQgZm9yIHRoZSB0ZXN0Y2FzZXMgdG8gYmUgcnVuICIiIgotICAgIGltcG9ydCBkYXRldGltZQotICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgZ2xvYmFsIGJ1aWxkZGlyCi0gICAgcG9reWRpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpKQotICAgIGN1cmNvbW1pdD0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJnaXQiLCAiLS1naXQtZGlyIiwgb3MucGF0aC5qb2luKHBva3lkaXIsICIuZ2l0IiksICJyZXYtcGFyc2UiLCAiSEVBRCJdKS5kZWNvZGUoJ3V0Zi04JykKLSAgICBjb3ZlcmFnZXJjID0gIiVzLy5jb3ZlcmFnZXJjIiAlIGJ1aWxkZGlyCi0gICAgZGF0YV9maWxlID0gIiVzLy5jb3ZlcmFnZS4iICUgYnVpbGRkaXIKLSAgICBkYXRhX2ZpbGUgKz0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0lZFQlSCVNJVMnKQotICAgIGlmIG9zLnBhdGguaXNmaWxlKGRhdGFfZmlsZSk6Ci0gICAgICAgIG9zLnJlbW92ZShkYXRhX2ZpbGUpCi0gICAgd2l0aCBvcGVuKGNvdmVyYWdlcmMsICd3JykgYXMgY3BzOgotICAgICAgICBjcHMud3JpdGUoIiMgR2VuZXJhdGVkIHdpdGggY29tbWFuZCAnJXMnXG4iICUgIiAiLmpvaW4oc3lzLmFyZ3YpKQotICAgICAgICBjcHMud3JpdGUoIiMgSEVBRCBjb21taXQgJXNcbiIgJSBjdXJjb21taXQuc3RyaXAoKSkKLSAgICAgICAgY3BzLndyaXRlKCJbcnVuXVxuIikKLSAgICAgICAgY3BzLndyaXRlKCJkYXRhX2ZpbGUgPSAlc1xuIiAlIGRhdGFfZmlsZSkKLSAgICAgICAgY3BzLndyaXRlKCJicmFuY2ggPSBUcnVlXG4iKQotICAgICAgICAjIE1lYXN1cmUganVzdCBCQkxBWUVSUywgc2NyaXB0cyBhbmQgYml0YmFrZSBmb2xkZXJzCi0gICAgICAgIGNwcy53cml0ZSgic291cmNlID0gXG4iKQotICAgICAgICBpZiBjb3ZlcmFnZV9zb3VyY2U6Ci0gICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIGNvdmVyYWdlX3NvdXJjZToKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3RvcnkpOgotICAgICAgICAgICAgICAgICAgICBsb2cud2FybigiRGlyZWN0b3J5ICVzIGlzIG5vdCB2YWxpZC4iLCBkaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgY3BzLndyaXRlKCIgICAgJXNcbiIgJSBkaXJlY3RvcnkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgbGF5ZXIgaW4gZ2V0X2JiX3ZhcignQkJMQVlFUlMnKS5zcGxpdCgpOgotICAgICAgICAgICAgICAgIGNwcy53cml0ZSgiICAgICVzXG4iICUgbGF5ZXIpCi0gICAgICAgICAgICBjcHMud3JpdGUoIiAgICAlc1xuIiAlIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkpCi0gICAgICAgICAgICBjcHMud3JpdGUoIiAgICAlc1xuIiAlIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSksJ2JpdGJha2UnKSkKLQotICAgICAgICBpZiBjb3ZlcmFnZV9pbmNsdWRlOgotICAgICAgICAgICAgY3BzLndyaXRlKCJpbmNsdWRlID0gXG4iKQotICAgICAgICAgICAgZm9yIHBhdHRlcm4gaW4gY292ZXJhZ2VfaW5jbHVkZToKLSAgICAgICAgICAgICAgICBjcHMud3JpdGUoIiAgICAlc1xuIiAlIHBhdHRlcm4pCi0gICAgICAgIGlmIGNvdmVyYWdlX29taXQ6Ci0gICAgICAgICAgICBjcHMud3JpdGUoIm9taXQgPSBcbiIpCi0gICAgICAgICAgICBmb3IgcGF0dGVybiBpbiBjb3ZlcmFnZV9vbWl0OgotICAgICAgICAgICAgICAgIGNwcy53cml0ZSgiICAgICVzXG4iICUgcGF0dGVybikKLQotICAgICAgICByZXR1cm4gY292ZXJhZ2VyYwotCi1kZWYgY292ZXJhZ2VfcmVwb3J0KCk6Ci0gICAgIiIiIExvYWRzIHRoZSBjb3ZlcmFnZSBkYXRhIGdhdGhlcmVkIGFuZCByZXBvcnRzIGl0IGJhY2sgIiIiCi0gICAgdHJ5OgotICAgICAgICAjIENvdmVyYWdlNCB1c2VzIGNvdmVyYWdlLkNvdmVyYWdlCi0gICAgICAgIGZyb20gY292ZXJhZ2UgaW1wb3J0IENvdmVyYWdlCi0gICAgZXhjZXB0OgotICAgICAgICAjIENvdmVyYWdlIHVuZGVyIHZlcnNpb24gNCB1c2VzIGNvdmVyYWdlLmNvdmVyYWdlCi0gICAgICAgIGZyb20gY292ZXJhZ2UgaW1wb3J0IGNvdmVyYWdlIGFzIENvdmVyYWdlCi0KLSAgICBpbXBvcnQgaW8gYXMgU3RyaW5nSU8KLSAgICBmcm9tIGNvdmVyYWdlLm1pc2MgaW1wb3J0IENvdmVyYWdlRXhjZXB0aW9uCi0KLSAgICBjb3Zfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICMgQ3JlYXRpbmcgdGhlIGNvdmVyYWdlIGRhdGEgd2l0aCB0aGUgc2V0dGluZyBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGZpbGUKLSAgICBjb3YgPSBDb3ZlcmFnZShjb25maWdfZmlsZSA9IG9zLmVudmlyb24uZ2V0KCdDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUJykpCi0gICAgdHJ5OgotICAgICAgICAjIExvYWQgZGF0YSBmcm9tIHRoZSBkYXRhIGZpbGUgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uCi0gICAgICAgIGNvdi5sb2FkKCkKLSAgICAgICAgIyBTdG9yZSByZXBvcnQgZGF0YSBpbiBhIFN0cmluZ0lPIHZhcmlhYmxlCi0gICAgICAgIGNvdi5yZXBvcnQoZmlsZSA9IGNvdl9vdXRwdXQsIHNob3dfbWlzc2luZz1GYWxzZSkKLSAgICAgICAgbG9nLmluZm8oIlxuJXMiICUgY292X291dHB1dC5nZXR2YWx1ZSgpKQotICAgIGV4Y2VwdCBDb3ZlcmFnZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAjIFNob3cgcHJvYmxlbXMgd2l0aCB0aGUgcmVwb3J0aW5nLiBTaW5jZSBDb3ZlcmFnZTQgbm90IGZpbmRpbmcgIGFueSBkYXRhIHRvIHJlcG9ydCByYWlzZXMgYW4gZXhjZXB0aW9uCi0gICAgICAgIGxvZy53YXJuKCIlcyIgJSBzdHIoZSkpCi0gICAgZmluYWxseToKLSAgICAgICAgY292X291dHB1dC5jbG9zZSgpCi0KK2xvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoJ29lLXNlbGZ0ZXN0Jywgc3RyZWFtPXN5cy5zdGRvdXQpCiAKIGRlZiBtYWluKCk6Ci0gICAgcGFyc2VyID0gZ2V0X2FyZ3NfcGFyc2VyKCkKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGRlc2NyaXB0aW9uID0gIlNjcmlwdCB0aGF0IHJ1bnMgdW5pdCB0ZXN0cyBhZ2FpbnN0IGJpdGJha2UgYW5kIG90aGVyIFlvY3RvIHJlbGF0ZWQgdG9vbHMuIFRoZSBnb2FsIGlzIHRvIHZhbGlkYXRlIHRvb2xzIGZ1bmN0aW9uYWxpdHkgYW5kIG1ldGFkYXRhIGludGVncml0eS4gUmVmZXIgdG8gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9PZS1zZWxmdGVzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgICAgcGFyc2VyID0gYXJncGFyc2Vfb2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249ZGVzY3JpcHRpb24pCiAKLSAgICAjIEFkZCA8bGF5ZXI+L2xpYiB0byBzeXMucGF0aCwgc28gbGF5ZXJzIGNhbiBhZGQgc2VsZnRlc3RzCi0gICAgbG9nLmluZm8oIlJ1bm5pbmcgYml0YmFrZSAtZSB0byBnZXQgQkJQQVRIIikKLSAgICBiYnBhdGggPSBnZXRfYmJfdmFyKCdCQlBBVEgnKS5zcGxpdCgnOicpCi0gICAgbGF5ZXJfbGliZGlycyA9IFtwIGZvciBwIGluIChvcy5wYXRoLmpvaW4obCwgJ2xpYicpIGZvciBsIGluIGJicGF0aCkgaWYgb3MucGF0aC5leGlzdHMocCldCi0gICAgc3lzLnBhdGguZXh0ZW5kKGxheWVyX2xpYmRpcnMpCi0gICAgaW1wLnJlbG9hZChvZXFhLnNlbGZ0ZXN0KQorICAgIGNvbXBfbmFtZSwgY29tcCA9IGxvYWRfdGVzdF9jb21wb25lbnRzKGxvZ2dlciwgJ29lLXNlbGZ0ZXN0JykucG9waXRlbSgpCisgICAgY29tcC5yZWdpc3Rlcl9jb21tYW5kcyhsb2dnZXIsIHBhcnNlcikKIAotICAgICMgYWN0IGxpa2UgYml0YmFrZSBhbmQgZW5mb3JjZSBlbl9VUy5VVEYtOCBsb2NhbGUKLSAgICBvcy5lbnZpcm9uWyJMQ19BTEwiXSA9ICJlbl9VUy5VVEYtOCIKKyAgICB0cnk6CisgICAgICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgICAgIHJlc3VsdHMgPSBhcmdzLmZ1bmMobG9nZ2VyLCBhcmdzKQorICAgICAgICByZXQgPSAwIGlmIHJlc3VsdHMud2FzU3VjY2Vzc2Z1bCgpIGVsc2UgMQorICAgIGV4Y2VwdCBTeXN0ZW1FeGl0IGFzIGVycjoKKyAgICAgICAgaWYgZXJyLmNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJhaXNlIGVycgorICAgICAgICByZXQgPSBlcnIuY29kZQorICAgIGV4Y2VwdCBPRVFBUHJlUnVuIGFzIHByOgorICAgICAgICByZXQgPSAxCiAKLSAgICBpZiBhcmdzLnJ1bl90ZXN0c19ieSBhbmQgbGVuKGFyZ3MucnVuX3Rlc3RzX2J5KSA+PSAyOgotICAgICAgICB2YWxpZF9vcHRpb25zID0gWyduYW1lJywgJ2NsYXNzJywgJ21vZHVsZScsICdpZCcsICd0YWcnXQotICAgICAgICBpZiBhcmdzLnJ1bl90ZXN0c19ieVswXSBub3QgaW4gdmFsaWRfb3B0aW9uczoKLSAgICAgICAgICAgIHByaW50KCctLXJ1bi10ZXN0cy1ieSAlcyBub3QgYSB2YWxpZCBvcHRpb24uIENob29zZSBvbmUgb2YgPG5hbWV8Y2xhc3N8bW9kdWxlfGlkfHRhZz4uJyAlIGFyZ3MucnVuX3Rlc3RzX2J5WzBdKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNyaXRlcmlhID0gYXJncy5ydW5fdGVzdHNfYnlbMF0KLSAgICAgICAgICAgIGtleXdvcmQgPSBhcmdzLnJ1bl90ZXN0c19ieVsxOl0KLSAgICAgICAgICAgIHRzID0gc29ydGVkKFsgdGMuZnVsbHBhdGggZm9yIHRjIGluIGdldF90ZXN0c3VpdGVfYnkoY3JpdGVyaWEsIGtleXdvcmQpIF0pCi0gICAgICAgIGlmIG5vdCB0czoKLSAgICAgICAgICAgIHJldHVybiAxCisgICAgcmV0dXJuIHJldAogCi0gICAgaWYgYXJncy5saXN0X3Rlc3RzX2J5IGFuZCBsZW4oYXJncy5saXN0X3Rlc3RzX2J5KSA+PSAyOgotICAgICAgICB2YWxpZF9vcHRpb25zID0gWyduYW1lJywgJ2NsYXNzJywgJ21vZHVsZScsICdpZCcsICd0YWcnXQotICAgICAgICBpZiBhcmdzLmxpc3RfdGVzdHNfYnlbMF0gbm90IGluIHZhbGlkX29wdGlvbnM6Ci0gICAgICAgICAgICBwcmludCgnLS1saXN0LXRlc3RzLWJ5ICVzIG5vdCBhIHZhbGlkIG9wdGlvbi4gQ2hvb3NlIG9uZSBvZiA8bmFtZXxjbGFzc3xtb2R1bGV8aWR8dGFnPi4nICUgYXJncy5saXN0X3Rlc3RzX2J5WzBdKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNyaXRlcmlhID0gYXJncy5saXN0X3Rlc3RzX2J5WzBdCi0gICAgICAgICAgICBrZXl3b3JkID0gYXJncy5saXN0X3Rlc3RzX2J5WzE6XQotICAgICAgICAgICAgbGlzdF90ZXN0c3VpdGVfYnkoY3JpdGVyaWEsIGtleXdvcmQpCi0KLSAgICBpZiBhcmdzLmxpc3RfdGVzdHM6Ci0gICAgICAgIGxpc3RfdGVzdHMoKQotCi0gICAgaWYgYXJncy5saXN0X3RhZ3M6Ci0gICAgICAgIGxpc3RfdGFncygpCi0KLSAgICBpZiBhcmdzLmxpc3RfYWxsY2xhc3NlczoKLSAgICAgICAgYXJncy5saXN0X21vZHVsZXMgPSBUcnVlCi0KLSAgICBpZiBhcmdzLmxpc3RfbW9kdWxlczoKLSAgICAgICAgbG9nLmluZm8oJ0xpc3RpbmcgYWxsIGF2YWlsYWJsZSB0ZXN0IG1vZHVsZXM6JykKLSAgICAgICAgdGVzdHNsaXN0ID0gZ2V0X3Rlc3RzKGluY2x1ZGVfaGlkZGVuPVRydWUpCi0gICAgICAgIGZvciB0ZXN0IGluIHRlc3RzbGlzdDoKLSAgICAgICAgICAgIG1vZHVsZSA9IHRlc3Quc3BsaXQoJ29lcWEuc2VsZnRlc3QuJylbLTFdCi0gICAgICAgICAgICBpbmZvID0gJycKLSAgICAgICAgICAgIGlmIG1vZHVsZS5zdGFydHN3aXRoKCdfJyk6Ci0gICAgICAgICAgICAgICAgaW5mbyA9ICcgKGhpZGRlbiknCi0gICAgICAgICAgICBwcmludChtb2R1bGUgKyBpbmZvKQotICAgICAgICAgICAgaWYgYXJncy5saXN0X2FsbGNsYXNzZXM6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgaW1wb3J0bGliCi0gICAgICAgICAgICAgICAgICAgIG1vZGxpYiA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHRlc3QpCi0gICAgICAgICAgICAgICAgICAgIGZvciB2IGluIHZhcnMobW9kbGliKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB2YXJzKG1vZGxpYilbdl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodCwgdHlwZShvZVNlbGZUZXN0KSkgYW5kIGlzc3ViY2xhc3ModCwgb2VTZWxmVGVzdCkgYW5kIHQhPW9lU2VsZlRlc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAtLSIsIHYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiBkaXIodCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZC5zdGFydHN3aXRoKCJ0ZXN0XyIpIGFuZCBpc2luc3RhbmNlKHZhcnModClbbWV0aG9kXSwgY29sbGVjdGlvbnMuQ2FsbGFibGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAtLSAgLS0iLCBtZXRob2QpCi0KLSAgICAgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoZSkKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgaWYgYXJncy5ydW5fdGVzdHMgb3IgYXJncy5ydW5fYWxsX3Rlc3RzIG9yIGFyZ3MucnVuX3Rlc3RzX2J5OgotICAgICAgICBpZiBub3QgcHJlZmxpZ2h0X2NoZWNrKCk6Ci0gICAgICAgICAgICByZXR1cm4gMQotCi0gICAgICAgIGlmIGFyZ3MucnVuX3Rlc3RzX2J5OgotICAgICAgICAgICAgdGVzdHNsaXN0ID0gdHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzbGlzdCA9IGdldF90ZXN0cyhleGNsdXNpdmVfbW9kdWxlcz0oYXJncy5ydW5fdGVzdHMgb3IgW10pLCBpbmNsdWRlX2hpZGRlbj1GYWxzZSkKLQotICAgICAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQotICAgICAgICBsb2FkZXIuc29ydFRlc3RNZXRob2RzVXNpbmcgPSBOb25lCi0gICAgICAgIHJ1bm5lciA9IFRlc3RSdW5uZXIodmVyYm9zaXR5PTIsCi0gICAgICAgICAgICAgICAgcmVzdWx0Y2xhc3M9YnVpbGRSZXN1bHRDbGFzcyhhcmdzKSkKLSAgICAgICAgIyB3ZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSwgb3RoZXJ3aXNlIGp1c3QgbG9hZGluZyB0aGUgdGVzdHMKLSAgICAgICAgIyB3aWxsIHRha2UgMiBtaW51dGVzIChiaXRiYWtlIC1lIGNhbGxzKQotICAgICAgICBvZVNlbGZUZXN0LnRlc3RsYXllcl9wYXRoID0gZ2V0X3Rlc3RfbGF5ZXIoKQotICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0c2xpc3Q6Ci0gICAgICAgICAgICBsb2cuaW5mbygiTG9hZGluZyB0ZXN0cyBmcm9tOiAlcyIgJSB0ZXN0KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3RzKGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSh0ZXN0KSkKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGxvZy5lcnJvcigiRmFpbGVkIHRvIGltcG9ydCAlcyIgJSB0ZXN0KQotICAgICAgICAgICAgICAgIGxvZy5lcnJvcihlKQotICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGFkZF9pbmNsdWRlKCkKLQotICAgICAgICBpZiBhcmdzLm1hY2hpbmU6Ci0gICAgICAgICAgICAjIEN1c3RvbSBtYWNoaW5lIHNldHMgb25seSB3ZWFrIGRlZmF1bHQgdmFsdWVzICg/Pz0pIGZvciBNQUNISU5FIGluIG1hY2hpbmUuaW5jCi0gICAgICAgICAgICAjIFRoaXMgbGV0IHRlc3QgY2FzZXMgdGhhdCByZXF1aXJlIGEgc3BlY2lmaWMgTUFDSElORSB0byBiZSBhYmxlIHRvIG92ZXJyaWRlIGl0LCB1c2luZyAoPz0gb3IgPSkKLSAgICAgICAgICAgIGxvZy5pbmZvKCdDdXN0b20gbWFjaGluZSBtb2RlIGVuYWJsZWQuIE1BQ0hJTkUgc2V0IHRvICVzJyAlIGFyZ3MubWFjaGluZSkKLSAgICAgICAgICAgIGlmIGFyZ3MubWFjaGluZSA9PSAncmFuZG9tJzoKLSAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydDVVNUT01NQUNISU5FJ10gPSAncmFuZG9tJwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bm5lci5ydW4oc3VpdGUpCi0gICAgICAgICAgICBlbHNlOiAgIyBhbGwKLSAgICAgICAgICAgICAgICBtYWNoaW5lcyA9IGdldF9hdmFpbGFibGVfbWFjaGluZXMoKQotICAgICAgICAgICAgICAgIGZvciBtIGluIG1hY2hpbmVzOgotICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygnUnVuIHRlc3RzIHdpdGggY3VzdG9tIE1BQ0hJTkUgc2V0IHRvOiAlcycgJSBtKQotICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydDVVNUT01NQUNISU5FJ10gPSBtCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bm5lci5ydW4oc3VpdGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSBydW5uZXIucnVuKHN1aXRlKQotCi0gICAgICAgIGxvZy5pbmZvKCJGaW5pc2hlZCIpCi0KLSAgICAgICAgaWYgYXJncy5yZXBvc2l0b3J5OgotICAgICAgICAgICAgaW1wb3J0IGdpdAotICAgICAgICAgICAgIyBDb21taXQgdGVzdHMgcmVzdWx0cyB0byByZXBvc2l0b3J5Ci0gICAgICAgICAgICBtZXRhZGF0YSA9IG1ldGFkYXRhX2Zyb21fYmIoKQotICAgICAgICAgICAgZ2l0X2RpciA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgJ3NlbGZ0ZXN0JykKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGdpdF9kaXIpOgotICAgICAgICAgICAgICAgIG9zLm1rZGlyKGdpdF9kaXIpCi0KLSAgICAgICAgICAgIGxvZy5kZWJ1ZygnQ2hlY2tpbmcgZm9yIGdpdCByZXBvc2l0b3J5IGluICVzJyAlIGdpdF9kaXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVwbyA9IGdpdC5SZXBvKGdpdF9kaXIpCi0gICAgICAgICAgICBleGNlcHQgZ2l0LmV4Yy5JbnZhbGlkR2l0UmVwb3NpdG9yeUVycm9yOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQ291bGRuJ3QgZmluZCBnaXQgcmVwb3NpdG9yeSAlczsgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJjbG9uaW5nIGZyb20gJXMiICUgKGdpdF9kaXIsIGFyZ3MucmVwb3NpdG9yeSkpCi0gICAgICAgICAgICAgICAgcmVwbyA9IGdpdC5SZXBvLmNsb25lX2Zyb20oYXJncy5yZXBvc2l0b3J5LCBnaXRfZGlyKQotCi0gICAgICAgICAgICByX2JyYW5jaGVzID0gcmVwby5naXQuYnJhbmNoKHI9VHJ1ZSkKLSAgICAgICAgICAgIHJfYnJhbmNoZXMgPSBzZXQocl9icmFuY2hlcy5yZXBsYWNlKCdvcmlnaW4vJywgJycpLnNwbGl0KCkpCi0gICAgICAgICAgICBsX2JyYW5jaGVzID0ge3N0cihicmFuY2gpIGZvciBicmFuY2ggaW4gcmVwby5icmFuY2hlc30KLSAgICAgICAgICAgIGJyYW5jaCA9ICclcy8lcy8lcycgJSAobWV0YWRhdGFbJ2hvc3RuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhWydsYXllcnMnXVsnbWV0YSddLmdldCgnYnJhbmNoJywgJyhub2dpdCknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFbJ2NvbmZpZyddWydNQUNISU5FJ10pCi0KLSAgICAgICAgICAgIGlmIGJyYW5jaCBpbiBsX2JyYW5jaGVzOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygnRm91bmQgYnJhbmNoIGluIGxvY2FsIHJlcG9zaXRvcnksIGNoZWNraW5nIG91dCcpCi0gICAgICAgICAgICAgICAgcmVwby5naXQuY2hlY2tvdXQoYnJhbmNoKQotICAgICAgICAgICAgZWxpZiBicmFuY2ggaW4gcl9icmFuY2hlczoKLSAgICAgICAgICAgICAgICBsb2cuZGVidWcoJ0ZvdW5kIGJyYW5jaCBpbiByZW1vdGUgcmVwb3NpdG9yeSwgY2hlY2tpbmcnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcgb3V0IGFuZCBwdWxsaW5nJykKLSAgICAgICAgICAgICAgICByZXBvLmdpdC5jaGVja291dChicmFuY2gpCi0gICAgICAgICAgICAgICAgcmVwby5naXQucHVsbCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygnTmV3IGJyYW5jaCAlcycgJSBicmFuY2gpCi0gICAgICAgICAgICAgICAgcmVwby5naXQuY2hlY2tvdXQoJ21hc3RlcicpCi0gICAgICAgICAgICAgICAgcmVwby5naXQuY2hlY2tvdXQoYj1icmFuY2gpCi0KLSAgICAgICAgICAgIGNsZWFuUmVzdWx0c0RpcihyZXBvKQotICAgICAgICAgICAgeG1sX2RpciA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgbG9nX3ByZWZpeCkKLSAgICAgICAgICAgIGNvcHlSZXN1bHRGaWxlcyh4bWxfZGlyLCBnaXRfZGlyLCByZXBvKQotICAgICAgICAgICAgbWV0YWRhdGFfZmlsZSA9IG9zLnBhdGguam9pbihnaXRfZGlyLCAnbWV0YWRhdGEueG1sJykKLSAgICAgICAgICAgIHdyaXRlX21ldGFkYXRhX2ZpbGUobWV0YWRhdGFfZmlsZSwgbWV0YWRhdGEpCi0gICAgICAgICAgICByZXBvLmluZGV4LmFkZChbbWV0YWRhdGFfZmlsZV0pCi0gICAgICAgICAgICByZXBvLmluZGV4LndyaXRlKCkKLQotICAgICAgICAgICAgIyBHZXQgaW5mb3JtYXRpb24gZm9yIGNvbW1pdCBtZXNzYWdlCi0gICAgICAgICAgICBsYXllcl9pbmZvID0gJycKLSAgICAgICAgICAgIGZvciBsYXllciwgdmFsdWVzIGluIG1ldGFkYXRhWydsYXllcnMnXS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGxheWVyX2luZm8gPSAnJXMlLTE3cyA9ICVzOiVzXG4nICUgKGxheWVyX2luZm8sIGxheWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmdldCgnYnJhbmNoJywgJyhub2dpdCknKSwgdmFsdWVzLmdldCgnY29tbWl0JywgJzAnKjQwKSkKLSAgICAgICAgICAgIG1zZyA9ICdTZWxmdGVzdCBmb3IgYnVpbGQgJXMgb2YgJXMgZm9yIG1hY2hpbmUgJXMgb24gJXNcblxuJXMnICUgKAotICAgICAgICAgICAgICAgICAgIGxvZ19wcmVmaXhbMTI6XSwgbWV0YWRhdGFbJ2Rpc3RybyddWydwcmV0dHlfbmFtZSddLAotICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhWydjb25maWcnXVsnTUFDSElORSddLCBtZXRhZGF0YVsnaG9zdG5hbWUnXSwgbGF5ZXJfaW5mbykKLQotICAgICAgICAgICAgbG9nLmRlYnVnKCdDb21taXRpbmcgcmVzdWx0cyB0byBsb2NhbCByZXBvc2l0b3J5JykKLSAgICAgICAgICAgIHJlcG8uaW5kZXguY29tbWl0KG1zZykKLSAgICAgICAgICAgIGlmIG5vdCByZXBvLmlzX2RpcnR5KCk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2ggaW4gcl9icmFuY2hlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygnUHVzaGluZyBjaGFuZ2VzIHRvIHJlbW90ZSByZXBvc2l0b3J5JykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG8uZ2l0LnB1c2goKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCdQdXNoaW5nIGNoYW5nZXMgdG8gcmVtb3RlIHJlcG9zaXRvcnkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZyBuZXcgYnJhbmNoJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG8uZ2l0LnB1c2goJy11JywgJ29yaWdpbicsIGJyYW5jaCkKLSAgICAgICAgICAgICAgICBleGNlcHQgR2l0Q29tbWFuZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoJ0ZhbGllZCB0byBwdXNoIHRvIHJlbW90ZSByZXBvc2l0b3J5JykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nLmVycm9yKCdMb2NhbCByZXBvc2l0b3J5IGlzIGRpcnR5LCBub3QgcHVzaGluZyBjb21taXRzJykKLQotICAgICAgICBpZiByZXN1bHQud2FzU3VjY2Vzc2Z1bCgpOgotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAxCi0KLWRlZiBidWlsZFJlc3VsdENsYXNzKGFyZ3MpOgotICAgICIiIkJ1aWxkIGEgUmVzdWx0IENsYXNzIHRvIHVzZSBpbiB0aGUgdGVzdGNhc2UgZXhlY3V0aW9uIiIiCi0gICAgaW1wb3J0IHNpdGUKLQotICAgIGNsYXNzIFN0YW1wZWRSZXN1bHQoVGVzdFJlc3VsdCk6Ci0gICAgICAgICIiIgotICAgICAgICBDdXN0b20gVGVzdFJlc3VsdCB0aGF0IHByaW50cyB0aGUgdGltZSB3aGVuIGEgdGVzdCBzdGFydHMuICBBcyBvZS1zZWxmdGVzdAotICAgICAgICBjYW4gdGFrZSBhIGxvbmcgdGltZSAoaWUgYSBmZXcgaG91cnMpIHRvIHJ1biwgdGltZXN0YW1wcyBoZWxwIHVzIHVuZGVyc3RhbmQKLSAgICAgICAgd2hhdCB0ZXN0cyBhcmUgdGFraW5nIGEgbG9uZyB0aW1lIHRvIGV4ZWN1dGUuCi0gICAgICAgIElmIGNvdmVyYWdlIGlzIHJlcXVpcmVkLCB0aGlzIGNsYXNzIGV4ZWN1dGVzIHRoZSBjb3ZlcmFnZSBzZXR1cCBhbmQgcmVwb3J0aW5nLgotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0ZXN0KToKLSAgICAgICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSh0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsIHRpbWUubG9jYWx0aW1lKCkpICsgIiAtICIpCi0gICAgICAgICAgICBzdXBlcihTdGFtcGVkUmVzdWx0LCBzZWxmKS5zdGFydFRlc3QodGVzdCkKLQotICAgICAgICBkZWYgc3RhcnRUZXN0UnVuKHNlbGYpOgotICAgICAgICAgICAgIiIiIFNldHVwIGNvdmVyYWdlIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0Y2FzZSAiIiIKLQotICAgICAgICAgICAgIyB2YXJpYWJsZSBob2xkaW5nIHRoZSBjb3ZlcmFnZSBjb25maWd1cmF0aW9uIGZpbGUgYWxsb3dpbmcgc3VicHJvY2VzcyB0byBiZSBtZWFzdXJlZAotICAgICAgICAgICAgc2VsZi5jb3ZlcmFnZXB0aCA9IE5vbmUKLQotICAgICAgICAgICAgIyBpbmRpY2F0ZXMgdGhlIHN5c3RlbSBpZiBjb3ZlcmFnZSBpcyBjdXJyZW50bHkgaW5zdGFsbGVkCi0gICAgICAgICAgICBzZWxmLmNvdmVyYWdlX2luc3RhbGxlZCA9IFRydWUKLQotICAgICAgICAgICAgaWYgYXJncy5jb3ZlcmFnZSBvciBhcmdzLmNvdmVyYWdlX3NvdXJjZSBvciBhcmdzLmNvdmVyYWdlX2luY2x1ZGUgb3IgYXJncy5jb3ZlcmFnZV9vbWl0OgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiB1c2VyIGNhbiBkbyBjb3ZlcmFnZQotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgY292ZXJhZ2UKLSAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgIGxvZy53YXJuKCJweXRob24gY292ZXJhZ2UgaXMgbm90IGluc3RhbGxlZC4gTW9yZSBpbmZvIG9uIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY292ZXJhZ2UiKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmNvdmVyYWdlX2luc3RhbGxlZCA9IEZhbHNlCi0KLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNvdmVyYWdlX2luc3RhbGxlZDoKLSAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIkNvdmVyYWdlIGlzIGVuYWJsZWQiKQotCi0gICAgICAgICAgICAgICAgICAgIG1ham9yX3ZlcnNpb24gPSBpbnQoY292ZXJhZ2UudmVyc2lvbi5fX3ZlcnNpb25fX1swXSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoInB5dGhvbiBjb3ZlcmFnZSAlcyBpbnN0YWxsZWQuIFJlcXVpcmUgdmVyc2lvbiA0IG9yIGdyZWF0ZXIuIiAlIGNvdmVyYWdlLnZlcnNpb24uX192ZXJzaW9uX18pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQotICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2UgdGhlIHVzZXIgaGFzIG5vdCBzZXQgdGhlIHZhcmlhYmxlIENPVkVSQUdFX1BST0NFU1NfU1RBUlQsCi0gICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGEgZGVmYXVsdCBvbmUgYW5kIGV4cG9ydCBpdC4gVGhlIENPVkVSQUdFX1BST0NFU1NfU1RBUlQKLSAgICAgICAgICAgICAgICAgICAgIyB2YWx1ZSBpbmRpY2F0ZXMgd2hlcmUgdGhlIGNvdmVyYWdlIGNvbmZpZ3VyYXRpb24gZmlsZSByZXNpZGVzCi0gICAgICAgICAgICAgICAgICAgICMgTW9yZSBpbmZvIG9uIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY292ZXJhZ2UKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLmVudmlyb24uZ2V0KCdDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUJ10gPSBjb3ZlcmFnZV9zZXR1cChhcmdzLmNvdmVyYWdlX3NvdXJjZSwgYXJncy5jb3ZlcmFnZV9pbmNsdWRlLCBhcmdzLmNvdmVyYWdlX29taXQpCi0KLSAgICAgICAgICAgICAgICAgICAgIyBVc2UgZGVmYXVsdCBzaXRlLlVTRVJfU0lURSBhbmQgd3JpdGUgY29ycmVzcG9uZGluZyBjb25maWcgZmlsZQotICAgICAgICAgICAgICAgICAgICBzaXRlLkVOQUJMRV9VU0VSX1NJVEUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzaXRlLlVTRVJfU0lURSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhzaXRlLlVTRVJfU0lURSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3ZlcmFnZXB0aCA9IG9zLnBhdGguam9pbihzaXRlLlVTRVJfU0lURSwgImNvdmVyYWdlLnB0aCIpCi0gICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmNvdmVyYWdlcHRoLCAndycpIGFzIGNwczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNwcy53cml0ZSgnaW1wb3J0IHN5cyxzaXRlOyBzeXMucGF0aC5leHRlbmQoc2l0ZS5nZXRzaXRlcGFja2FnZXMoKSk7IGltcG9ydCBjb3ZlcmFnZTsgY292ZXJhZ2UucHJvY2Vzc19zdGFydHVwKCk7JykKLQotICAgICAgICBkZWYgc3RvcFRlc3RSdW4oc2VsZik6Ci0gICAgICAgICAgICAiIiIgUmVwb3J0IGNvdmVyYWdlIGRhdGEgYWZ0ZXIgdGhlIHRlc3RjYXNlcyBhcmUgcnVuICIiIgotCi0gICAgICAgICAgICBpZiBhcmdzLmNvdmVyYWdlIG9yIGFyZ3MuY292ZXJhZ2Vfc291cmNlIG9yIGFyZ3MuY292ZXJhZ2VfaW5jbHVkZSBvciBhcmdzLmNvdmVyYWdlX29taXQ6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5jb3ZlcmFnZV9pbnN0YWxsZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5lbnZpcm9uWydDT1ZFUkFHRV9QUk9DRVNTX1NUQVJUJ10pIGFzIGNjZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJDb3ZlcmFnZSBjb25maWd1cmF0aW9uIGZpbGUgKCVzKSIgJSBvcy5lbnZpcm9uLmdldCgnQ09WRVJBR0VfUFJPQ0VTU19TVEFSVCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIj09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiXG4lcyIgJSAiIi5qb2luKGNjZi5yZWFkbGluZXMoKSkpCi0KLSAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIkNvdmVyYWdlIFJlcG9ydCIpCi0gICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCI9PT09PT09PT09PT09PT0iKQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcmFnZV9yZXBvcnQoKQotICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgdGhlIHB0aCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYuY292ZXJhZ2VwdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cud2FybigiRXhwZWN0ZWQgdGVtcG9yYWwgZmlsZSBmcm9tIGNvdmVyYWdlIGlzIG1pc3NpbmcsIGlnbm9yaW5nIHJlbW92YWwuIikKLQotICAgIHJldHVybiBTdGFtcGVkUmVzdWx0Ci0KLWRlZiBjbGVhblJlc3VsdHNEaXIocmVwbyk6Ci0gICAgIiIiIFJlbW92ZSByZXN1bHQgZmlsZXMgZnJvbSBkaXJlY3RvcnkgIiIiCi0KLSAgICB4bWxfZmlsZXMgPSBbXQotICAgIGRpcmVjdG9yeSA9IHJlcG8ud29ya2luZ190cmVlX2RpcgotICAgIGZvciBmIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIGYpCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpIGFuZCBwYXRoLmVuZHN3aXRoKCcueG1sJyk6Ci0gICAgICAgICAgICB4bWxfZmlsZXMuYXBwZW5kKGYpCi0gICAgcmVwby5pbmRleC5yZW1vdmUoeG1sX2ZpbGVzLCB3b3JraW5nX3RyZWU9VHJ1ZSkKLQotZGVmIGNvcHlSZXN1bHRGaWxlcyhzcmMsIGRzdCwgcmVwbyk6Ci0gICAgIiIiIENvcHkgcmVzdWx0IGZpbGVzIGZyb20gc3JjIHRvIGRzdCByZW1vdmluZyB0aGUgdGltZSBzdGFtcC4gIiIiCi0KLSAgICBpbXBvcnQgc2h1dGlsCi0KLSAgICByZV90aW1lID0gcmUuY29tcGlsZSgiLVswLTldKyIpCi0gICAgZmlsZV9saXN0ID0gW10KLQotICAgIGZvciByb290LCBzdWJkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyYyk6Ci0gICAgICAgIHRtcF9kaXIgPSByb290LnJlcGxhY2Uoc3JjLCAnJykubHN0cmlwKCcvJykKLSAgICAgICAgZm9yIHMgaW4gc3ViZGlyczoKLSAgICAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkc3QsIHRtcF9kaXIsIHMpKQotICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgIGZpbGVfbmFtZSA9IG9zLnBhdGguam9pbihkc3QsIHRtcF9kaXIsIHJlX3RpbWUuc3ViKCIiLCBmKSkKLSAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4ocm9vdCwgZiksIGZpbGVfbmFtZSkKLSAgICAgICAgICAgIGZpbGVfbGlzdC5hcHBlbmQoZmlsZV9uYW1lKQotICAgIHJlcG8uaW5kZXguYWRkKGZpbGVfbGlzdCkKLQotY2xhc3MgVGVzdFJ1bm5lcihfVGVzdFJ1bm5lcik6Ci0gICAgIiIiVGVzdCBydW5uZXIgY2xhc3MgYXdhcmUgb2YgZXhwb3J0aW5nIHRlc3RzLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleHBvcnRkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIGxvZ19wcmVmaXgpCi0gICAgICAgICAgICBrd2FyZ3N4ID0gZGljdCgqKmt3YXJncykKLSAgICAgICAgICAgICMgYXJndW1lbnQgc3BlY2lmaWMgdG8gWE1MVGVzdFJ1bm5lciwgaWYgYWRkaW5nIGEgbmV3IHJ1bm5lciB0aGVuCi0gICAgICAgICAgICAjIGFsc28gYWRkIGxvZ2ljIHRvIHVzZSBvdGhlciBydW5uZXIncyBhcmdzLgotICAgICAgICAgICAga3dhcmdzeFsnb3V0cHV0J10gPSBleHBvcnRkaXIKLSAgICAgICAgICAgIGt3YXJnc3hbJ2Rlc2NyaXB0aW9ucyddID0gRmFsc2UKLSAgICAgICAgICAgICMgZG9uZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGVsbGluZyB0aGUgcnVubmVyIHdoZXJlIHRvIGV4cG9ydAotICAgICAgICAgICAgc3VwZXIoVGVzdFJ1bm5lciwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzeCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIGxvZy5pbmZvKCJ0ZXN0IHJ1bm5lciBpbml0J2VkIGxpa2UgdW5pdHRlc3QiKQotICAgICAgICAgICAgc3VwZXIoVGVzdFJ1bm5lciwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgoraWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0cnk6CiAgICAgICAgIHJldCA9IG1haW4oKQogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHJldCA9IDEKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICBmaW5hbGx5OgotICAgICAgICByZW1vdmVfaW5jbHVkZSgpCi0gICAgICAgIHJlbW92ZV9pbmNfZmlsZXMoKQogICAgIHN5cy5leGl0KHJldCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXNldHVwLWJ1aWxkZGlyIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXIKaW5kZXggZWY0OTU1MS4uNTVkNzNjYSAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXIKQEAgLTEzMywxMyArMTMzLDYgQEAKICMgICAgdW5zZXQgU0hPV1lQRE9DCiBmaQogCi1jYXQgPDxFT00KLQotIyMjIFNoZWxsIGVudmlyb25tZW50IHNldCB1cCBmb3IgYnVpbGRzLiAjIyMKLQotWW91IGNhbiBub3cgcnVuICdiaXRiYWtlIDx0YXJnZXQ+JwotCi1FT00KIGlmIFsgLXogIiRPRUNPUkVOT1RFU0NPTkYiIF07IHRoZW4KICAgICBPRUNPUkVOT1RFU0NPTkY9IiRPRVJPT1QvbWV0YS9jb25mL2NvbmYtbm90ZXMudHh0IgogZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS10ZXN0CmluZGV4IGExZDI4MmQuLjM0ZDkwMTIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtdGVzdApAQCAtOCw3ICs4LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgbG9nZ2luZwogCiBzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCkBAIC0yNSwzNSArMjQsMTAgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBwYXNzCiAKLWZyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHRFeGVjdXRvcgorZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBsb2FkX3Rlc3RfY29tcG9uZW50cworZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBUHJlUnVuCiAKLWxvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoJ29lLXRlc3QnKQotCi1kZWYgX2xvYWRfdGVzdF9jb21wb25lbnRzKGxvZ2dlcik6Ci0gICAgY29tcG9uZW50cyA9IHt9Ci0KLSAgICBmb3IgcGF0aCBpbiBzeXMucGF0aDoKLSAgICAgICAgYmFzZV9kaXIgPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ29lcWEnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhiYXNlX2RpcikgYW5kIG9zLnBhdGguaXNkaXIoYmFzZV9kaXIpOgotICAgICAgICAgICAgZm9yIGZpbGUgaW4gb3MubGlzdGRpcihiYXNlX2Rpcik6Ci0gICAgICAgICAgICAgICAgY29tcF9uYW1lID0gZmlsZQotICAgICAgICAgICAgICAgIGNvbXBfY29udGV4dCA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgZmlsZSwgJ2NvbnRleHQucHknKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbXBfY29udGV4dCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBfcGx1Z2luID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ29lcWEuJXMuJXMnICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wX25hbWUsICdjb250ZXh0JykpCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGNvbXBfcGx1Z2luLl9leGVjdXRvcl9jbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0VUZXN0Q29udGV4dEV4ZWN1dG9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNvbXBvbmVudCAlcyBpbiAlcywgX2V4ZWN1dG9yX2NsYXNzICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc24ndCBkZXJpdmVkIGZyb20gT0VUZXN0Q29udGV4dEV4ZWN1dG9yLiJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbXBfbmFtZSwgY29tcF9jb250ZXh0KSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50c1tjb21wX25hbWVdID0gY29tcF9wbHVnaW4uX2V4ZWN1dG9yX2NsYXNzKCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNvbXBvbmVudCAlcyBpbiAlcyBkb24ndCBoYXZlICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfZXhlY3V0b3JfY2xhc3MgZGVmaW5lZC4iICUgKGNvbXBfbmFtZSwgY29tcF9jb250ZXh0KSkKLQotICAgIHJldHVybiBjb21wb25lbnRzCitsb2dnZXIgPSBzY3JpcHR1dGlscy5sb2dnZXJfY3JlYXRlKCdvZS10ZXN0Jywgc3RyZWFtPXN5cy5zdGRvdXQpCiAKIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyID0gYXJncGFyc2Vfb2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249Ik9wZW5FbWJlZGRlZCB0ZXN0IHRvb2wiLApAQCAtNzMsNyArNDcsNyBAQAogICAgIGVsaWYgZ2xvYmFsX2FyZ3MucXVpZXQ6CiAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQogCi0gICAgY29tcG9uZW50cyA9IF9sb2FkX3Rlc3RfY29tcG9uZW50cyhsb2dnZXIpCisgICAgY29tcG9uZW50cyA9IGxvYWRfdGVzdF9jb21wb25lbnRzKGxvZ2dlciwgJ29lLXRlc3QnKQogCiAgICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2VycyhkZXN0PSJzdWJwYXJzZXJfbmFtZSIsIHRpdGxlPSdzdWJjb21tYW5kcycsIG1ldGF2YXI9JzxzdWJjb21tYW5kPicpCiAgICAgc3VicGFyc2Vycy5hZGRfc3VicGFyc2VyX2dyb3VwKCdjb21wb25lbnRzJywgJ1Rlc3QgY29tcG9uZW50cycpCkBAIC05Miw2ICs2Niw4IEBACiAgICAgICAgIHJldCA9IGVyci5jb2RlCiAgICAgZXhjZXB0IGFyZ3BhcnNlX29lLkFyZ3VtZW50VXNhZ2VFcnJvciBhcyBhZToKICAgICAgICAgcGFyc2VyLmVycm9yX3N1YmNvbW1hbmQoYWUubWVzc2FnZSwgYWUuc3ViY29tbWFuZCkKKyAgICBleGNlcHQgT0VRQVByZVJ1biBhcyBwcjoKKyAgICAgICAgcmV0ID0gMQogCiAgICAgcmV0dXJuIHJldAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9yZWNpcGV0b29sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcmVjaXBldG9vbAppbmRleCAzNzY1ZWM3Li4zYTNjOWI3IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9yZWNpcGV0b29sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3JlY2lwZXRvb2wKQEAgLTM2LDggKzM2LDggQEAKICAgICBpbXBvcnQgYmIudGluZm9pbAogICAgIGltcG9ydCBsb2dnaW5nCiAgICAgdGluZm9pbCA9IGJiLnRpbmZvaWwuVGluZm9pbCh0cmFja2luZz1UcnVlKQotICAgIHRpbmZvaWwucHJlcGFyZShub3QgcGFyc2VyZWNpcGVzKQogICAgIHRpbmZvaWwubG9nZ2VyLnNldExldmVsKGxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpKQorICAgIHRpbmZvaWwucHJlcGFyZShub3QgcGFyc2VyZWNpcGVzKQogICAgIHJldHVybiB0aW5mb2lsCiAKIGRlZiBtYWluKCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdQppbmRleCA5YjZkMzMwLi4wZWQxZWVjIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3J1bnFlbXUKQEAgLTI4LDE0ICsyOCwxOCBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBjb25maWdwYXJzZXIKIAotY2xhc3MgT0VQYXRoRXJyb3IoRXhjZXB0aW9uKToKK2NsYXNzIFJ1blFlbXVFcnJvcihFeGNlcHRpb24pOgorICAgICIiIkN1c3RvbSBleGNlcHRpb24gdG8gcmFpc2Ugb24ga25vd24gZXJyb3JzLiIiIgorICAgIHBhc3MKKworY2xhc3MgT0VQYXRoRXJyb3IoUnVuUWVtdUVycm9yKToKICAgICAiIiJDdXN0b20gRXhjZXB0aW9uIHRvIGdpdmUgYmV0dGVyIGd1aWRhbmNlIG9uIG1pc3NpbmcgYmluYXJpZXMiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYubWVzc2FnZSA9ICJJbiBvcmRlciBmb3IgdGhpcyBzY3JpcHQgdG8gZHluYW1pY2FsbHkgaW5mZXIgcGF0aHNcbiBcCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oIkluIG9yZGVyIGZvciB0aGlzIHNjcmlwdCB0byBkeW5hbWljYWxseSBpbmZlciBwYXRoc1xuIFwKIGtlcm5lbHMgb3IgZmlsZXN5c3RlbSBpbWFnZXMsIHlvdSBlaXRoZXIgbmVlZCBiaXRiYWtlIGluIHlvdXIgUEFUSFxuIFwKIG9yIHRvIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiBiZWZvcmUgcnVubmluZyB0aGlzIHNjcmlwdC5cblxuIFwKIER5bmFtaWMgcGF0aCBpbmZlcmVuY2UgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyBhICoucWVtdWJvb3QuY29uZiB0b1xuIFwKLXJ1bnFlbXUsIGkuZS4gYHJ1bnFlbXUgL3BhdGgvdG8vbXktaW1hZ2UtbmFtZS5xZW11Ym9vdC5jb25mYFxuXG4gJXMiICUgbWVzc2FnZQorcnVucWVtdSwgaS5lLiBgcnVucWVtdSAvcGF0aC90by9teS1pbWFnZS1uYW1lLnFlbXVib290LmNvbmZgXG5cbiAlcyIgJSBtZXNzYWdlKQogCiAKIGRlZiBjcmVhdGVfbG9nZ2VyKCk6CkBAIC00NCw3ICs0OCw3IEBACiAKICAgICAjIGNyZWF0ZSBjb25zb2xlIGhhbmRsZXIgYW5kIHNldCBsZXZlbCB0byBkZWJ1ZwogICAgIGNoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKLSAgICBjaC5zZXRMZXZlbChsb2dnaW5nLklORk8pCisgICAgY2guc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKIAogICAgICMgY3JlYXRlIGZvcm1hdHRlcgogICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKG5hbWUpcyAtICUobGV2ZWxuYW1lKXMgLSAlKG1lc3NhZ2UpcycpCkBAIC04MSw2ICs4NSw4IEBACiAgIHFlbXVwYXJhbXM9PHh5ej4gLSBzcGVjaWZ5IGN1c3RvbSBwYXJhbWV0ZXJzIHRvIFFFTVUKICAgYm9vdHBhcmFtcz08eHl6PiAtIHNwZWNpZnkgY3VzdG9tIGtlcm5lbCBwYXJhbWV0ZXJzIGR1cmluZyBib290CiAgIGhlbHAsIC1oLCAtLWhlbHA6IHByaW50IHRoaXMgdGV4dAorICAtZCwgLS1kZWJ1ZzogRW5hYmxlIGRlYnVnIG91dHB1dAorICAtcSwgLS1xdWl0ZTogSGlkZSBtb3N0IG91dHB1dCBleGNlcHQgZXJyb3IgbWVzc2FnZXMKIAogRXhhbXBsZXM6CiAgIHJ1bnFlbXUKQEAgLTkwLDI1ICs5NiwyNSBAQAogICBydW5xZW11IHFlbXV4ODYtNjQgY29yZS1pbWFnZS1zYXRvIGV4dDQKICAgcnVucWVtdSBxZW11eDg2LTY0IHdpYy1pbWFnZS1taW5pbWFsIHdpYwogICBydW5xZW11IHBhdGgvdG8vYnpJbWFnZS1xZW11eDg2LmJpbiBwYXRoL3RvL25mc3Jvb3RkaXIvIHNlcmlhbAotICBydW5xZW11IHFlbXV4ODYgaXNvL2hkZGltZy92bWRrL3Fjb3cyL3ZkaS9yYW1mcy9jcGlvLmd6Li4uCisgIHJ1bnFlbXUgcWVtdXg4NiBpc28vaGRkaW1nL3dpYy52bWRrL3dpYy5xY293Mi93aWMudmRpL3JhbWZzL2NwaW8uZ3ouLi4KICAgcnVucWVtdSBxZW11eDg2IHFlbXVwYXJhbXM9Ii1tIDI1NiIKICAgcnVucWVtdSBxZW11eDg2IGJvb3RwYXJhbXM9InBzcGxhc2g9ZmFsc2UiCi0gIHJ1bnFlbXUgcGF0aC90by88aW1hZ2U+LTxtYWNoaW5lPi52bWRrCiAgIHJ1bnFlbXUgcGF0aC90by88aW1hZ2U+LTxtYWNoaW5lPi53aWMKKyAgcnVucWVtdSBwYXRoL3RvLzxpbWFnZT4tPG1hY2hpbmU+LndpYy52bWRrCiAiIiIpCiAKIGRlZiBjaGVja190dW4oKToKICAgICAiIiJDaGVjayAvZGV2L25ldC90dW4iIiIKICAgICBkZXZfdHVuID0gJy9kZXYvbmV0L3R1bicKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGV2X3R1bik6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVFVOIGNvbnRyb2wgZGV2aWNlICVzIGlzIHVuYXZhaWxhYmxlOyB5b3UgbWF5IG5lZWQgdG8gZW5hYmxlIFRVTiAoZS5nLiBzdWRvIG1vZHByb2JlIHR1bikiICUgZGV2X3R1bikKKyAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJUVU4gY29udHJvbCBkZXZpY2UgJXMgaXMgdW5hdmFpbGFibGU7IHlvdSBtYXkgbmVlZCB0byBlbmFibGUgVFVOIChlLmcuIHN1ZG8gbW9kcHJvYmUgdHVuKSIgJSBkZXZfdHVuKQogCiAgICAgaWYgbm90IG9zLmFjY2VzcyhkZXZfdHVuLCBvcy5XX09LKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUVU4gY29udHJvbCBkZXZpY2UgJXMgaXMgbm90IHdyaXRhYmxlLCBwbGVhc2UgZml4IChlLmcuIHN1ZG8gY2htb2QgNjY2ICVzKSIgJSAoZGV2X3R1biwgZGV2X3R1bikpCisgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiVFVOIGNvbnRyb2wgZGV2aWNlICVzIGlzIG5vdCB3cml0YWJsZSwgcGxlYXNlIGZpeCAoZS5nLiBzdWRvIGNobW9kIDY2NiAlcykiICUgKGRldl90dW4sIGRldl90dW4pKQogCiBkZWYgY2hlY2tfbGliZ2wocWVtdV9iaW4pOgogICAgIGNtZCA9ICdsZGQgJXMnICUgcWVtdV9iaW4KLSAgICBsb2dnZXIuaW5mbygnUnVubmluZyAlcy4uLicgJSBjbWQpCisgICAgbG9nZ2VyLmRlYnVnKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKICAgICBuZWVkX2dsID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCiAgICAgaWYgcmUuc2VhcmNoKCdsaWJHTFUnLCBuZWVkX2dsKToKICAgICAgICAgIyBXZSBjYW4ndCBydW4gd2l0aG91dCBhIGxpYkdMLnNvCkBAIC0xMzcsNyArMTQzLDcgQEAKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IG5lZWQgbGliR0wuc28gYW5kIGxpYkdMVS5zbyB0byBleGlzdCBpbiB5b3VyIGxpYnJhcnkgcGF0aCB0byBydW4gdGhlIFFFTVUgZW11bGF0b3IuIikKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVWJ1bnR1IHBhY2thZ2UgbmFtZXMgYXJlOiBsaWJnbDEtbWVzYS1kZXYgYW5kIGxpYmdsdTEtbWVzYS1kZXYuIikKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmVkb3JhIHBhY2thZ2UgbmFtZXMgYXJlOiBtZXNhLWxpYkdMLWRldmVsIG1lc2EtbGliR0xVLWRldmVsLiIpCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzIHJlcXVpcmVzIGxpYkdMVSwgYnV0IG5vdCBmb3VuZCcgJSBxZW11X2JpbikKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcignJXMgcmVxdWlyZXMgbGliR0xVLCBidXQgbm90IGZvdW5kJyAlIHFlbXVfYmluKQogCiBkZWYgZ2V0X2ZpcnN0X2ZpbGUoY21kcyk6CiAgICAgIiIiUmV0dXJuIGZpcnN0IGZpbGUgZm91bmQgaW4gd2lsZGNhcmQgY21kcyIiIgpAQCAtMjEyLDggKzIxOCwxMCBAQAogICAgICAgICBzZWxmLmxvY2tfZGVzY3JpcHRvciA9ICcnCiAgICAgICAgIHNlbGYuYml0YmFrZV9lID0gJycKICAgICAgICAgc2VsZi5zbmFwc2hvdCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZnN0eXBlcyA9ICgnZXh0MicsICdleHQzJywgJ2V4dDQnLCAnamZmczInLCAnbmZzJywgJ2J0cmZzJywgJ2NwaW8uZ3onLCAnY3BpbycsICdyYW1mcycpCi0gICAgICAgIHNlbGYudm10eXBlcyA9ICgnaGRkaW1nJywgJ2hkZGRpcmVjdCcsICd3aWMnLCAndm1kaycsICdxY293MicsICd2ZGknLCAnaXNvJykKKyAgICAgICAgc2VsZi5mc3R5cGVzID0gKCdleHQyJywgJ2V4dDMnLCAnZXh0NCcsICdqZmZzMicsICduZnMnLCAnYnRyZnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2NwaW8uZ3onLCAnY3BpbycsICdyYW1mcycsICd0YXIuYnoyJywgJ3Rhci5neicpCisgICAgICAgIHNlbGYudm10eXBlcyA9ICgnaGRkaW1nJywgJ2hkZGRpcmVjdCcsICd3aWMnLCAnd2ljLnZtZGsnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3dpYy5xY293MicsICd3aWMudmRpJywgJ2lzbycpCiAgICAgICAgIHNlbGYubmV0d29ya19kZXZpY2UgPSAiLWRldmljZSBlMTAwMCxuZXRkZXY9bmV0MCxtYWM9QE1BQ0AiCiAgICAgICAgICMgVXNlIGRpZmZlcmVudCBtYWMgc2VjdGlvbiBmb3IgdGFwIGFuZCBzbGlycCB0byBhdm9pZAogICAgICAgICAjIGNvbmZsaWN0cywgZS5nLiwgd2hlbiBvbmUgaXMgcnVubmluZyB3aXRoIHRhcCwgdGhlIG90aGVyIGlzCkBAIC0yMjQsMTMgKzIzMiwxNyBAQAogICAgICAgICBzZWxmLm1hY190YXAgPSAiNTI6NTQ6MDA6MTI6MzQ6IgogICAgICAgICBzZWxmLm1hY19zbGlycCA9ICI1Mjo1NDowMDoxMjozNToiCiAKLSAgICBkZWYgYWNxdWlyZV9sb2NrKHNlbGYpOgotICAgICAgICBsb2dnZXIuaW5mbygiQWNxdWlyaW5nIGxvY2tmaWxlICVzLi4uIiAlIHNlbGYubG9jaykKKyAgICBkZWYgYWNxdWlyZV9sb2NrKHNlbGYsIGVycm9yPVRydWUpOgorICAgICAgICBsb2dnZXIuZGVidWcoIkFjcXVpcmluZyBsb2NrZmlsZSAlcy4uLiIgJSBzZWxmLmxvY2spCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYubG9ja19kZXNjcmlwdG9yID0gb3BlbihzZWxmLmxvY2ssICd3JykKICAgICAgICAgICAgIGZjbnRsLmZsb2NrKHNlbGYubG9ja19kZXNjcmlwdG9yLCBmY250bC5MT0NLX0VYfGZjbnRsLkxPQ0tfTkIpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJBY3F1aXJpbmcgbG9ja2ZpbGUgJXMgZmFpbGVkOiAlcyIgJSAoc2VsZi5sb2NrLCBlKSkKKyAgICAgICAgICAgIG1zZyA9ICJBY3F1aXJpbmcgbG9ja2ZpbGUgJXMgZmFpbGVkOiAlcyIgJSAoc2VsZi5sb2NrLCBlKQorICAgICAgICAgICAgaWYgZXJyb3I6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKG1zZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8obXNnKQogICAgICAgICAgICAgaWYgc2VsZi5sb2NrX2Rlc2NyaXB0b3I6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2NrX2Rlc2NyaXB0b3IuY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yNTUsMTAgKzI2NywxMCBAQAogICAgIGRlZiBpc19kZXBsb3lfZGlyX2ltYWdlKHNlbGYsIHApOgogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHApOgogICAgICAgICAgICAgaWYgbm90IHJlLnNlYXJjaCgnLnFlbXVib290LmNvbmYkJywgJ1xuJy5qb2luKG9zLmxpc3RkaXIocCkpLCByZS5NKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ2FuJ3QgZmluZCByZXF1aXJlZCAqLnFlbXVib290LmNvbmYgaW4gJXMiICUgcCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNhbid0IGZpbmQgcmVxdWlyZWQgKi5xZW11Ym9vdC5jb25mIGluICVzIiAlIHApCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiBub3QgYW55KG1hcChsYW1iZGEgbmFtZTogJy1pbWFnZS0nIGluIG5hbWUsIG9zLmxpc3RkaXIocCkpKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ2FuJ3QgZmluZCAqLWltYWdlLSogaW4gJXMiICUgcCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNhbid0IGZpbmQgKi1pbWFnZS0qIGluICVzIiAlIHApCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbHNlOgpAQCAtMjcxLDE1ICsyODMsMTcgQEAKICAgICAgICAgaWYgbm90IHNlbGYuZnN0eXBlIG9yIHNlbGYuZnN0eXBlID09IGZzdDoKICAgICAgICAgICAgIGlmIGZzdCA9PSAncmFtZnMnOgogICAgICAgICAgICAgICAgIGZzdCA9ICdjcGlvLmd6JworICAgICAgICAgICAgaWYgZnN0IGluICgndGFyLmJ6MicsICd0YXIuZ3onKToKKyAgICAgICAgICAgICAgICBmc3QgPSAnbmZzJwogICAgICAgICAgICAgc2VsZi5mc3R5cGUgPSBmc3QKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ29uZmxpY3Rpbmc6IEZTVFlQRSAlcyBhbmQgJXMiICUgKHNlbGYuZnN0eXBlLCBmc3QpKQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJDb25mbGljdGluZzogRlNUWVBFICVzIGFuZCAlcyIgJSAoc2VsZi5mc3R5cGUsIGZzdCkpCiAKICAgICBkZWYgc2V0X21hY2hpbmVfZGVwbG95X2RpcihzZWxmLCBtYWNoaW5lLCBkZXBsb3lfZGlyX2ltYWdlKToKICAgICAgICAgIiIiU2V0IE1BQ0hJTkUgYW5kIERFUExPWV9ESVJfSU1BR0UiIiIKLSAgICAgICAgbG9nZ2VyLmluZm8oJ01BQ0hJTkU6ICVzJyAlIG1hY2hpbmUpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygnTUFDSElORTogJXMnICUgbWFjaGluZSkKICAgICAgICAgc2VsZi5zZXQoIk1BQ0hJTkUiLCBtYWNoaW5lKQotICAgICAgICBsb2dnZXIuaW5mbygnREVQTE9ZX0RJUl9JTUFHRTogJXMnICUgZGVwbG95X2Rpcl9pbWFnZSkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCdERVBMT1lfRElSX0lNQUdFOiAlcycgJSBkZXBsb3lfZGlyX2ltYWdlKQogICAgICAgICBzZWxmLnNldCgiREVQTE9ZX0RJUl9JTUFHRSIsIGRlcGxveV9kaXJfaW1hZ2UpCiAKICAgICBkZWYgY2hlY2tfYXJnX25mcyhzZWxmLCBwKToKQEAgLTMyOSwzMCArMzQzLDMwIEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIiVzIGRvZXNuJ3QgZXhpc3QiICUgcWIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2FuJ3QgZmluZCBGU1RZUEUgZnJvbTogJXMiICUgcCkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIkNhbid0IGZpbmQgRlNUWVBFIGZyb206ICVzIiAlIHApCiAKICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHApIG9yIHJlLnNlYXJjaCgnOicsIHApIGFuZCByZS5zZWFyY2goJy8nLCBwKToKICAgICAgICAgICAgIGlmIHNlbGYuaXNfZGVwbG95X2Rpcl9pbWFnZShwKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnREVQTE9ZX0RJUl9JTUFHRTogJXMnICUgcCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0RFUExPWV9ESVJfSU1BR0U6ICVzJyAlIHApCiAgICAgICAgICAgICAgICAgc2VsZi5zZXQoIkRFUExPWV9ESVJfSU1BR0UiLCBwKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQXNzdW1pbmcgJXMgaXMgYW4gbmZzIHJvb3RmcyIgJSBwKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiQXNzdW1pbmcgJXMgaXMgYW4gbmZzIHJvb3RmcyIgJSBwKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfYXJnX25mcyhwKQogICAgICAgICBlbGlmIG9zLnBhdGguYmFzZW5hbWUocCkuc3RhcnRzd2l0aCgnb3ZtZicpOgogICAgICAgICAgICAgc2VsZi5vdm1mX2Jpb3MuYXBwZW5kKHApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlVua25vd24gcGF0aCBhcmcgJXMiICUgcCkKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiVW5rbm93biBwYXRoIGFyZyAlcyIgJSBwKQogCiAgICAgZGVmIGNoZWNrX2FyZ19tYWNoaW5lKHNlbGYsIGFyZyk6CiAgICAgICAgICIiIkNoZWNrIHdoZXRoZXIgaXQgaXMgYSBtYWNoaW5lIiIiCiAgICAgICAgIGlmIHNlbGYuZ2V0KCdNQUNISU5FJykgPT0gYXJnOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsaWYgc2VsZi5nZXQoJ01BQ0hJTkUnKSBhbmQgc2VsZi5nZXQoJ01BQ0hJTkUnKSAhPSBhcmc6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk1heWJlIGNvbmZsaWN0ZWQgTUFDSElORTogJXMgdnMgJXMiICUgKHNlbGYuZ2V0KCdNQUNISU5FJyksIGFyZykpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIk1heWJlIGNvbmZsaWN0ZWQgTUFDSElORTogJXMgdnMgJXMiICUgKHNlbGYuZ2V0KCdNQUNISU5FJyksIGFyZykpCiAgICAgICAgIGVsaWYgcmUuc2VhcmNoKCcvJywgYXJnKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5rbm93biBhcmc6ICVzIiAlIGFyZykKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiVW5rbm93biBhcmc6ICVzIiAlIGFyZykKIAotICAgICAgICBsb2dnZXIuaW5mbygnQXNzdW1pbmcgTUFDSElORSA9ICVzJyAlIGFyZykKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCdBc3N1bWluZyBNQUNISU5FID0gJXMnICUgYXJnKQogCiAgICAgICAgICMgaWYgd2UncmUgcnVubmluZyB1bmRlciB0ZXN0aW1hZ2UsIG9yIHNpbWlsYXJseSBhcyBhIGNoaWxkCiAgICAgICAgICMgb2YgYW4gZXhpc3RpbmcgYml0YmFrZSBpbnZvY2F0aW9uLCB3ZSBjYW4ndCBpbnZva2UgYml0YmFrZQpAQCAtMzgxLDcgKzM5NSw3IEBACiAgICAgICAgIGlmIHM6CiAgICAgICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gcy5ncm91cCgxKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJiaXRiYWtlIC1lICVzIiAlIHNlbGYuYml0YmFrZV9lKQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJiaXRiYWtlIC1lICVzIiAlIHNlbGYuYml0YmFrZV9lKQogICAgICAgICBpZiBzZWxmLmlzX2RlcGxveV9kaXJfaW1hZ2UoZGVwbG95X2Rpcl9pbWFnZSk6CiAgICAgICAgICAgICBzZWxmLnNldF9tYWNoaW5lX2RlcGxveV9kaXIoYXJnLCBkZXBsb3lfZGlyX2ltYWdlKQogICAgICAgICBlbHNlOgpAQCAtMzg5LDYgKzQwMywxNiBAQAogICAgICAgICAgICAgc2VsZi5zZXQoIk1BQ0hJTkUiLCBhcmcpCiAKICAgICBkZWYgY2hlY2tfYXJncyhzZWxmKToKKyAgICAgICAgZm9yIGRlYnVnIGluICgiLWQiLCAiLS1kZWJ1ZyIpOgorICAgICAgICAgICAgaWYgZGVidWcgaW4gc3lzLmFyZ3Y6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisgICAgICAgICAgICAgICAgc3lzLmFyZ3YucmVtb3ZlKGRlYnVnKQorCisgICAgICAgIGZvciBxdWlldCBpbiAoIi1xIiwgIi0tcXVpZXQiKToKKyAgICAgICAgICAgIGlmIHF1aWV0IGluIHN5cy5hcmd2OgorICAgICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQorICAgICAgICAgICAgICAgIHN5cy5hcmd2LnJlbW92ZShxdWlldCkKKwogICAgICAgICB1bmtub3duX2FyZyA9ICIiCiAgICAgICAgIGZvciBhcmcgaW4gc3lzLmFyZ3ZbMTpdOgogICAgICAgICAgICAgaWYgYXJnIGluIHNlbGYuZnN0eXBlcyArIHNlbGYudm10eXBlczoKQEAgLTQzNSw3ICs0NTksOSBAQAogICAgICAgICAgICAgICAgIGlmIChub3QgdW5rbm93bl9hcmcpIG9yIHVua25vd25fYXJnID09IGFyZzoKICAgICAgICAgICAgICAgICAgICAgdW5rbm93bl9hcmcgPSBhcmcKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGhhbmRsZSB0d28gdW5rbm93biBhcmdzOiAlcyAlcyIgJSAodW5rbm93bl9hcmcsIGFyZykpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiQ2FuJ3QgaGFuZGxlIHR3byB1bmtub3duIGFyZ3M6ICVzICVzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJ5ICdydW5xZW11IGhlbHAnIG9uIGhvdyB0byB1c2UgaXQiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmtub3duX2FyZywgYXJnKSkKICAgICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgaXQgaXMgYSB2YWxpZCBtYWNoaW5lCiAgICAgICAgIGlmIHVua25vd25fYXJnOgogICAgICAgICAgICAgaWYgc2VsZi5nZXQoJ01BQ0hJTkUnKSA9PSB1bmtub3duX2FyZzoKQEAgLTQ0OCw3ICs0NzQsNyBAQAogCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2FyZ19tYWNoaW5lKHVua25vd25fYXJnKQogCi0gICAgICAgIGlmIG5vdCBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpOgorICAgICAgICBpZiBub3QgKHNlbGYuZ2V0KCdERVBMT1lfRElSX0lNQUdFJykgb3Igc2VsZi5xYmNvbmZsb2FkKToKICAgICAgICAgICAgIHNlbGYubG9hZF9iaXRiYWtlX2VudigpCiAgICAgICAgICAgICBzID0gcmUuc2VhcmNoKCdeREVQTE9ZX0RJUl9JTUFHRT0iKC4qKSInLCBzZWxmLmJpdGJha2VfZSwgcmUuTSkKICAgICAgICAgICAgIGlmIHM6CkBAIC00NjEsNyArNDg3LDcgQEAKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGlmIG5vdCBzZWxmLmdldCgnUUJfQ1BVX0tWTScpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJRQl9DUFVfS1ZNIGlzIE5VTEwsIHRoaXMgYm9hcmQgZG9lc24ndCBzdXBwb3J0IGt2bSIpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIlFCX0NQVV9LVk0gaXMgTlVMTCwgdGhpcyBib2FyZCBkb2Vzbid0IHN1cHBvcnQga3ZtIikKIAogICAgICAgICBzZWxmLnFlbXVfb3B0X3NjcmlwdCArPSAnICVzICVzJyAlIChzZWxmLmdldCgnUUJfTUFDSElORScpLCBzZWxmLmdldCgnUUJfQ1BVX0tWTScpKQogICAgICAgICB5b2N0b19rdm1fd2lraSA9ICJodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0hvd190b19lbmFibGVfS1ZNX2Zvcl9Qb2t5X3FlbXUiCkBAIC00NzMsMTIgKzQ5OSwxMiBAQAogICAgICAgICBpZiBub3Qga3ZtX2NhcDoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IGFyZSB0cnlpbmcgdG8gZW5hYmxlIEtWTSBvbiBhIGNwdSB3aXRob3V0IFZUIHN1cHBvcnQuIikKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiUmVtb3ZlIGt2bSBmcm9tIHRoZSBjb21tYW5kLWxpbmUsIG9yIHJlZmVyOiIpCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oeW9jdG9fa3ZtX3dpa2kpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fa3ZtX3dpa2kpCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRldl9rdm0pOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJNaXNzaW5nIEtWTSBkZXZpY2UuIEhhdmUgeW91IGluc2VydGVkIGt2bSBtb2R1bGVzPyIpCiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkZvciBmdXJ0aGVyIGhlbHAgc2VlOiIpCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oeW9jdG9fa3ZtX3dpa2kpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fa3ZtX3dpa2kpCiAKICAgICAgICAgaWYgb3MuYWNjZXNzKGRldl9rdm0sIG9zLldfT0t8b3MuUl9PSyk6CiAgICAgICAgICAgICBzZWxmLnFlbXVfb3B0X3NjcmlwdCArPSAnIC1lbmFibGUta3ZtJwpAQCAtNDkwLDE4ICs1MTYsMTggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IGhhdmUgbm8gcmVhZCBvciB3cml0ZSBwZXJtaXNzaW9uIG9uIC9kZXYva3ZtLiIpCiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlBsZWFzZSBjaGFuZ2UgdGhlIG93bmVyc2hpcCBvZiB0aGlzIGZpbGUgYXMgZGVzY3JpYmVkIGF0OiIpCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oeW9jdG9fa3ZtX3dpa2kpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fa3ZtX3dpa2kpCiAKICAgICAgICAgaWYgc2VsZi52aG9zdF9lbmFibGVkOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRldl92aG9zdCk6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJNaXNzaW5nIHZpcnRpbyBuZXQgZGV2aWNlLiBIYXZlIHlvdSBpbnNlcnRlZCB2aG9zdC1uZXQgbW9kdWxlPyIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGb3IgZnVydGhlciBoZWxwIHNlZToiKQotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbih5b2N0b19wYXJhdmlydF9rdm1fd2lraSkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fcGFyYXZpcnRfa3ZtX3dpa2kpCiAKICAgICAgICAgaWYgbm90IG9zLmFjY2VzcyhkZXZfa3ZtLCBvcy5XX09LfG9zLlJfT0spOgogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IGhhdmUgbm8gcmVhZCBvciB3cml0ZSBwZXJtaXNzaW9uIG9uIC9kZXYvdmhvc3QtbmV0LiIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJQbGVhc2UgY2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgdGhpcyBmaWxlIGFzIGRlc2NyaWJlZCBhdDoiKQotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbih5b2N0b19rdm1fd2lraSkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoeW9jdG9fa3ZtX3dpa2kpCiAKICAgICBkZWYgY2hlY2tfZnN0eXBlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayBhbmQgc2V0dXAgRlNUWVBFIiIiCkBAIC01MTAsNyArNTM2LDcgQEAKICAgICAgICAgICAgIGlmIGZzdHlwZToKICAgICAgICAgICAgICAgICBzZWxmLmZzdHlwZSA9IGZzdHlwZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkZTVFlQRSBpcyBOVUxMISIpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJGU1RZUEUgaXMgTlVMTCEiKQogCiAgICAgZGVmIGNoZWNrX3Jvb3RmcyhzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgYW5kIHNldCByb290ZnMiIiIKQEAgLTUyMiw3ICs1NDgsNyBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYucm9vdGZzOgogICAgICAgICAgICAgICAgIHNlbGYucm9vdGZzID0gc2VsZi5nZXQoJ1JPT1RGUycpCiAgICAgICAgICAgICBlbGlmIHNlbGYuZ2V0KCdST09URlMnKSAhPSBzZWxmLnJvb3RmczoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk1heWJlIGNvbmZsaWN0ZWQgUk9PVEZTOiAlcyB2cyAlcyIgJSAoc2VsZi5nZXQoJ1JPT1RGUycpLCBzZWxmLnJvb3RmcykpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJNYXliZSBjb25mbGljdGVkIFJPT1RGUzogJXMgdnMgJXMiICUgKHNlbGYuZ2V0KCdST09URlMnKSwgc2VsZi5yb290ZnMpKQogCiAgICAgICAgIGlmIHNlbGYuZnN0eXBlID09ICduZnMnOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01MzgsMTAgKzU2NCwxMCBAQAogICAgICAgICAgICAgY21kcyA9IChjbWRfbmFtZSwgY21kX2xpbmspCiAgICAgICAgICAgICBzZWxmLnJvb3RmcyA9IGdldF9maXJzdF9maWxlKGNtZHMpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5yb290ZnM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gZmluZCByb290ZnM6ICVzIG9yICVzIiAlIGNtZHMpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJGYWlsZWQgdG8gZmluZCByb290ZnM6ICVzIG9yICVzIiAlIGNtZHMpCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucm9vdGZzKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2FuJ3QgZmluZCByb290ZnM6ICVzIiAlIHNlbGYucm9vdGZzKQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJDYW4ndCBmaW5kIHJvb3RmczogJXMiICUgc2VsZi5yb290ZnMpCiAKICAgICBkZWYgY2hlY2tfb3ZtZihzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgYW5kIHNldCBmdWxsIHBhdGggZm9yIE9WTUYgZmlybXdhcmUgYW5kIHZhcmlhYmxlIGZpbGUocykuIiIiCkBAIC01NTUsNyArNTgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdm1mX2Jpb3NbaW5kZXhdID0gcGF0aAogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgT1ZNRiBmaXJtd2FyZTogJXMiICUgb3ZtZikKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIkNhbid0IGZpbmQgT1ZNRiBmaXJtd2FyZTogJXMiICUgb3ZtZikKIAogICAgIGRlZiBjaGVja19rZXJuZWwoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIGFuZCBzZXQga2VybmVsLCBkdGIiIiIKQEAgLTU3OCwxMCArNjA0LDEwIEBACiAgICAgICAgICAgICBjbWRzID0gKGtlcm5lbF9tYXRjaF9uYW1lLCBrZXJuZWxfbWF0Y2hfbGluaywga2VybmVsX3N0YXJ0c3dpdGgpCiAgICAgICAgICAgICBzZWxmLmtlcm5lbCA9IGdldF9maXJzdF9maWxlKGNtZHMpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5rZXJuZWw6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdLRVJORUwgbm90IGZvdW5kOiAlcywgJXMgb3IgJXMnICUgY21kcykKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoJ0tFUk5FTCBub3QgZm91bmQ6ICVzLCAlcyBvciAlcycgJSBjbWRzKQogCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmtlcm5lbCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIktFUk5FTCAlcyBub3QgZm91bmQiICUgc2VsZi5rZXJuZWwpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIktFUk5FTCAlcyBub3QgZm91bmQiICUgc2VsZi5rZXJuZWwpCiAKICAgICAgICAgZHRiID0gc2VsZi5nZXQoJ1FCX0RUQicpCiAgICAgICAgIGlmIGR0YjoKQEAgLTU5MSw3ICs2MTcsNyBAQAogICAgICAgICAgICAgY21kcyA9IChjbWRfbWF0Y2gsIGNtZF9zdGFydHN3aXRoLCBjbWRfd2lsZCkKICAgICAgICAgICAgIHNlbGYuZHRiID0gZ2V0X2ZpcnN0X2ZpbGUoY21kcykKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmR0Yik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdEVEIgbm90IGZvdW5kOiAlcywgJXMgb3IgJXMnICUgY21kcykKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoJ0RUQiBub3QgZm91bmQ6ICVzLCAlcyBvciAlcycgJSBjbWRzKQogCiAgICAgZGVmIGNoZWNrX2Jpb3NkaXIoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIGN1c3RvbWJpb3NkaXIiIiIKQEAgLTYwNywxMSArNjMzLDExIEBACiAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBpZiBiaW9zZGlyOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkFzc3VtaW5nIGJpb3NkaXIgaXM6ICVzIiAlIGJpb3NkaXIpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkFzc3VtaW5nIGJpb3NkaXIgaXM6ICVzIiAlIGJpb3NkaXIpCiAgICAgICAgICAgICBzZWxmLnFlbXVfb3B0X3NjcmlwdCArPSAnIC1MICVzJyAlIGJpb3NkaXIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ3VzdG9tIEJJT1MgZGlyZWN0b3J5IG5vdCBmb3VuZC4gVHJpZWQ6ICVzLCAlcywgYW5kICVzIiAlIChzZWxmLmN1c3RvbWJpb3NkaXIsIGJpb3NkaXJfbmF0aXZlLCBiaW9zZGlyX2hvc3QpKQotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbnZhbGlkIGN1c3RvbWJpb3NkaXI6ICVzIiAlIHNlbGYuY3VzdG9tYmlvc2RpcikKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiSW52YWxpZCBjdXN0b21iaW9zZGlyOiAlcyIgJSBzZWxmLmN1c3RvbWJpb3NkaXIpCiAKICAgICBkZWYgY2hlY2tfbWVtKHNlbGYpOgogICAgICAgICBzID0gcmUuc2VhcmNoKCctbSArKFswLTldKyknLCBzZWxmLnFlbXVfb3B0X3NjcmlwdCkKQEAgLTYzOSw3ICs2NjUsNyBAQAogICAgICAgICAjIENoZWNrIGF1ZGlvCiAgICAgICAgIGlmIHNlbGYuYXVkaW9fZW5hYmxlZDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmdldCgnUUJfQVVESU9fRFJWJyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJRQl9BVURJT19EUlYgaXMgTlVMTCwgdGhpcyBib2FyZCBkb2Vzbid0IHN1cHBvcnQgYXVkaW8iKQorICAgICAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiUUJfQVVESU9fRFJWIGlzIE5VTEwsIHRoaXMgYm9hcmQgZG9lc24ndCBzdXBwb3J0IGF1ZGlvIikKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmdldCgnUUJfQVVESU9fT1BUJyk6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1FCX0FVRElPX09QVCBpcyBOVUxMLCB5b3UgbWF5IG5lZWQgZGVmaW5lIGl0IHRvIG1ha2UgYXVkaW8gd29yaycpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNjYyLDcgKzY4OCw3IEBACiAgICAgICAgICAgICBpZiBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpOgogICAgICAgICAgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDYW4ndCBmaW5kIHFlbXVib290IGNvbmYgZmlsZSwgREVQTE9ZX0RJUl9JTUFHRSBpcyBOVUxMISIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIkNhbid0IGZpbmQgcWVtdWJvb3QgY29uZiBmaWxlLCBERVBMT1lfRElSX0lNQUdFIGlzIE5VTEwhIikKICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAgICAgaWYgc2VsZi5yb290ZnMgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLnJvb3Rmcyk6CkBAIC02NzQsOCArNzAwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RmcywgbWFjaGluZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY21kID0gJ2xzIC10ICVzLyoucWVtdWJvb3QuY29uZicgJSAgZGVwbG95X2Rpcl9pbWFnZQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKLSAgICAgICAgICAgICAgICBxYnMgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0LnJlYWQoKS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1J1bm5pbmcgJXMuLi4nICUgY21kKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcWJzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoZXJyKQogICAgICAgICAgICAgICAgIGlmIHFiczoKICAgICAgICAgICAgICAgICAgICAgZm9yIHFiIGluIHFicy5zcGxpdCgpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEb24ndCB1c2UgaW5pdHJhbWZzIHdoZW4gb3RoZXIgY2hvaWNlcyB1bmxlc3MgZnN0eXBlIGlzIHJhbWZzCkBAIC02OTQsMTQgKzcyMywxOCBAQAogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucWVtdWJvb3QpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gZmluZCAlcyAod3JvbmcgaW1hZ2UgbmFtZSBvciBCU1AgZG9lcyBub3Qgc3VwcG9ydCBydW5uaW5nIHVuZGVyIHFlbXU/KS4iICUgc2VsZi5xZW11Ym9vdCkKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiRmFpbGVkIHRvIGZpbmQgJXMgKHdyb25nIGltYWdlIG5hbWUgb3IgQlNQIGRvZXMgbm90IHN1cHBvcnQgcnVubmluZyB1bmRlciBxZW11PykuIiAlIHNlbGYucWVtdWJvb3QpCiAKLSAgICAgICAgbG9nZ2VyLmluZm8oJ0NPTkZGSUxFOiAlcycgJSBzZWxmLnFlbXVib290KQorICAgICAgICBsb2dnZXIuZGVidWcoJ0NPTkZGSUxFOiAlcycgJSBzZWxmLnFlbXVib290KQogCiAgICAgICAgIGNmID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCiAgICAgICAgIGNmLnJlYWQoc2VsZi5xZW11Ym9vdCkKICAgICAgICAgZm9yIGssIHYgaW4gY2YuaXRlbXMoJ2NvbmZpZ19ic3AnKToKICAgICAgICAgICAgIGtfdXBwZXIgPSBrLnVwcGVyKCkKKyAgICAgICAgICAgIGlmIHYuc3RhcnRzd2l0aCgiLi4vIik6CisgICAgICAgICAgICAgICAgdiA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoc2VsZi5xZW11Ym9vdCkgKyAiLyIgKyB2KQorICAgICAgICAgICAgZWxpZiB2ID09ICIuIjoKKyAgICAgICAgICAgICAgICB2ID0gb3MucGF0aC5kaXJuYW1lKHNlbGYucWVtdWJvb3QpCiAgICAgICAgICAgICBzZWxmLnNldChrX3VwcGVyLCB2KQogCiAgICAgZGVmIHZhbGlkYXRlX3BhdGhzKHNlbGYpOgpAQCAtNzg5LDE2ICs4MjIsMTIgQEAKICAgICAgICAgICAgIGFsbF9pbnN0YW5jZXMuc29ydChrZXk9aW50KQogICAgICAgICAgICAgc2VsZi5uZnNfaW5zdGFuY2UgPSBpbnQoYWxsX2luc3RhbmNlcy5wb3AoKSkgKyAxCiAKLSAgICAgICAgbW91bnRkX3JwY3BvcnQgPSAyMTExMSArIHNlbGYubmZzX2luc3RhbmNlCi0gICAgICAgIG5mc2RfcnBjcG9ydCA9IDExMTExICsgc2VsZi5uZnNfaW5zdGFuY2UKICAgICAgICAgbmZzZF9wb3J0ID0gMzA0OSArIDIgKiBzZWxmLm5mc19pbnN0YW5jZQogICAgICAgICBtb3VudGRfcG9ydCA9IDMwNDggKyAyICogc2VsZi5uZnNfaW5zdGFuY2UKIAogICAgICAgICAjIEV4cG9ydCB2YXJzIGZvciBydW5xZW11LWV4cG9ydC1yb290ZnMKICAgICAgICAgZXhwb3J0X2RpY3QgPSB7CiAgICAgICAgICAgICAnTkZTX0lOU1RBTkNFJzogc2VsZi5uZnNfaW5zdGFuY2UsCi0gICAgICAgICAgICAnTU9VTlREX1JQQ1BPUlQnOiBtb3VudGRfcnBjcG9ydCwKLSAgICAgICAgICAgICdORlNEX1JQQ1BPUlQnOiBuZnNkX3JwY3BvcnQsCiAgICAgICAgICAgICAnTkZTRF9QT1JUJzogbmZzZF9wb3J0LAogICAgICAgICAgICAgJ01PVU5URF9QT1JUJzogbW91bnRkX3BvcnQsCiAgICAgICAgIH0KQEAgLTgwNiw3ICs4MzUsNyBAQAogICAgICAgICAgICAgIyBVc2UgJyVzJyBzaW5jZSB0aGV5IGFyZSBpbnRlZ2VycwogICAgICAgICAgICAgb3MucHV0ZW52KGssICclcycgJSB2KQogCi0gICAgICAgIHNlbGYudW5mc19vcHRzPSJuZnN2ZXJzPTMscG9ydD0lcyxtb3VudHByb2c9JXMsbmZzcHJvZz0lcyx1ZHAsbW91bnRwb3J0PSVzIiAlIChuZnNkX3BvcnQsIG1vdW50ZF9ycGNwb3J0LCBuZnNkX3JwY3BvcnQsIG1vdW50ZF9wb3J0KQorICAgICAgICBzZWxmLnVuZnNfb3B0cz0ibmZzdmVycz0zLHBvcnQ9JXMsdWRwLG1vdW50cG9ydD0lcyIgJSAobmZzZF9wb3J0LCBtb3VudGRfcG9ydCkKIAogICAgICAgICAjIEV4dHJhY3QgLnRhci5iejIgb3IgLnRhci5ieiBpZiBubyBuZnMgZGlyCiAgICAgICAgIGlmIG5vdCAoc2VsZi5yb290ZnMgYW5kIG9zLnBhdGguaXNkaXIoc2VsZi5yb290ZnMpKToKQEAgLTgyNCwxMiArODUzLDEyIEBACiAgICAgICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cyhzcmMyKToKICAgICAgICAgICAgICAgICAgICAgc3JjID0gc3JjMgogICAgICAgICAgICAgICAgIGlmIG5vdCBzcmM6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gTkZTX0RJUiBpcyBzZXQsIGFuZCBjYW4ndCBmaW5kICVzIG9yICVzIHRvIGV4dHJhY3QiICUgKHNyYzEsIHNyYzIpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIk5vIE5GU19ESVIgaXMgc2V0LCBhbmQgY2FuJ3QgZmluZCAlcyBvciAlcyB0byBleHRyYWN0IiAlIChzcmMxLCBzcmMyKSkKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnTkZTX0RJUiBub3QgZm91bmQsIGV4dHJhY3RpbmcgJXMgdG8gJXMnICUgKHNyYywgZGVzdCkpCiAgICAgICAgICAgICAgICAgY21kID0gJ3J1bnFlbXUtZXh0cmFjdC1zZGsgJXMgJXMnICUgKHNyYywgZGVzdCkKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUnVubmluZyAlcy4uLicgJSBjbWQpCiAgICAgICAgICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gcnVuICVzJyAlIGNtZCkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCdGYWlsZWQgdG8gcnVuICVzJyAlIGNtZCkKICAgICAgICAgICAgICAgICBzZWxmLmNsZWFuX25mc19kaXIgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5yb290ZnMgPSBkZXN0CiAKQEAgLTgzNyw3ICs4NjYsNyBAQAogICAgICAgICBjbWQgPSAncnVucWVtdS1leHBvcnQtcm9vdGZzIHN0YXJ0ICVzJyAlIHNlbGYucm9vdGZzCiAgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKICAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJ1biAlcycgJSBjbWQpCisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoJ0ZhaWxlZCB0byBydW4gJXMnICUgY21kKQogCiAgICAgICAgIHNlbGYubmZzX3J1bm5pbmcgPSBUcnVlCiAKQEAgLTg0OSw3ICs4NzgsNyBAQAogICAgICAgICBzZWxmLmtlcm5lbF9jbWRsaW5lX3NjcmlwdCArPSAnIGlwPWRoY3AnCiAgICAgICAgICMgUG9ydCBtYXBwaW5nCiAgICAgICAgIGhvc3Rmd2QgPSAiLGhvc3Rmd2Q9dGNwOjoyMjIyLToyMixob3N0ZndkPXRjcDo6MjMyMy06MjMiCi0gICAgICAgIHFiX3NsaXJwX29wdF9kZWZhdWx0ID0gIi1uZXRkZXYgdXNlcixpZD1uZXQwJXMiICUgaG9zdGZ3ZAorICAgICAgICBxYl9zbGlycF9vcHRfZGVmYXVsdCA9ICItbmV0ZGV2IHVzZXIsaWQ9bmV0MCVzLHRmdHA9JXMiICUgKGhvc3Rmd2QsIHNlbGYuZ2V0KCdERVBMT1lfRElSX0lNQUdFJykpCiAgICAgICAgIHFiX3NsaXJwX29wdCA9IHNlbGYuZ2V0KCdRQl9TTElSUF9PUFQnKSBvciBxYl9zbGlycF9vcHRfZGVmYXVsdAogICAgICAgICAjIEZpZ3VyZSBvdXQgdGhlIHBvcnQKICAgICAgICAgcG9ydHMgPSByZS5maW5kYWxsKCdob3N0ZndkPVteLV0qOihbMC05XSspLVteLC1dKicsIHFiX3NsaXJwX29wdCkKQEAgLTg4OCw2ICs5MTcsOSBAQAogICAgICAgICBsb2NrZGlyID0gIi90bXAvcWVtdS10YXAtbG9ja3MiCiAKICAgICAgICAgaWYgbm90IChzZWxmLnFlbXVpZnVwIGFuZCBzZWxmLnFlbXVpZmRvd24gYW5kIGlwKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigicnVucWVtdS1pZnVwOiAlcyIgJSBzZWxmLnFlbXVpZnVwKQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJydW5xZW11LWlmZG93bjogJXMiICUgc2VsZi5xZW11aWZkb3duKQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJpcDogJXMiICUgaXApCiAgICAgICAgICAgICByYWlzZSBPRVBhdGhFcnJvcigicnVucWVtdS1pZnVwLCBydW5xZW11LWlmZG93biBvciBpcCBub3QgZm91bmQiKQogCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsb2NrZGlyKToKQEAgLTg5NSwxNCArOTI3LDE1IEBACiAgICAgICAgICAgICAjIHJ1bm5pbmcgYXQgdGhlIHNhbWUgdGltZS4KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5ta2Rpcihsb2NrZGlyKQorICAgICAgICAgICAgICAgIG9zLmNobW9kKGxvY2tkaXIsIDBvNzc3KQogICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgY21kID0gJyVzIGxpbmsnICUgaXAKLSAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgJXMuLi4nICUgY21kKQorICAgICAgICBsb2dnZXIuZGVidWcoJ1J1bm5pbmcgJXMuLi4nICUgY21kKQogICAgICAgICBpcF9saW5rID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgICMgTWF0Y2hlcyBsaW5lIGxpa2U6IDY6IHRhcDA6IDxmb28+Ci0gICAgICAgIHBvc3NpYmxlcyA9IHJlLmZpbmRhbGwoJ15bMS05XSs6ICsodGFwWzAtOV0rKTogPC4qJywgaXBfbGluaywgcmUuTSkKKyAgICAgICAgcG9zc2libGVzID0gcmUuZmluZGFsbCgnXlswLTldKzogKyh0YXBbMC05XSspOiA8LionLCBpcF9saW5rLCByZS5NKQogICAgICAgICB0YXAgPSAiIgogICAgICAgICBmb3IgcCBpbiBwb3NzaWJsZXM6CiAgICAgICAgICAgICBsb2NrZmlsZSA9IG9zLnBhdGguam9pbihsb2NrZGlyLCBwKQpAQCAtOTEwLDcgKzk0Myw3IEBACiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0ZvdW5kICVzLnNraXAsIHNraXBwaW5nICVzJyAlIChsb2NrZmlsZSwgcCkpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNlbGYubG9jayA9IGxvY2tmaWxlICsgJy5sb2NrJwotICAgICAgICAgICAgaWYgc2VsZi5hY3F1aXJlX2xvY2soKToKKyAgICAgICAgICAgIGlmIHNlbGYuYWNxdWlyZV9sb2NrKGVycm9yPUZhbHNlKToKICAgICAgICAgICAgICAgICB0YXAgPSBwCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlVzaW5nIHByZWNvbmZpZ3VyZWQgdGFwIGRldmljZSAlcyIgJSB0YXApCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIklmIHRoaXMgaXMgbm90IGludGVuZGVkLCB0b3VjaCAlcy5za2lwIHRvIG1ha2UgcnVucWVtdSBza2lwICVzLiIgJShsb2NrZmlsZSwgdGFwKSkKQEAgLTkyMCw3ICs5NTMsNyBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobm9zdWRvX2ZsYWcpOgogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRXJyb3I6IFRoZXJlIGFyZSBubyBhdmFpbGFibGUgdGFwIGRldmljZXMgdG8gdXNlIGZvciBuZXR3b3JraW5nLCIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJhbmQgSSBzZWUgJXMgZXhpc3RzLCBzbyBJIGFtIG5vdCBnb2luZyB0byB0cnkgY3JlYXRpbmciICUgbm9zdWRvX2ZsYWcpCi0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJhIG5ldyBvbmUgd2l0aCBzdWRvLiIpCisgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJhIG5ldyBvbmUgd2l0aCBzdWRvLiIpCiAKICAgICAgICAgICAgIGdpZCA9IG9zLmdldGdpZCgpCiAgICAgICAgICAgICB1aWQgPSBvcy5nZXR1aWQoKQpAQCAtOTMxLDcgKzk2NCw3IEBACiAgICAgICAgICAgICBzZWxmLmxvY2sgPSBsb2NrZmlsZSArICcubG9jaycKICAgICAgICAgICAgIHNlbGYuYWNxdWlyZV9sb2NrKCkKICAgICAgICAgICAgIHNlbGYuY2xlYW50YXAgPSBUcnVlCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygnQ3JlYXRlZCB0YXA6ICVzJyAlIHRhcCkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnQ3JlYXRlZCB0YXA6ICVzJyAlIHRhcCkKIAogICAgICAgICBpZiBub3QgdGFwOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gc2V0dXAgdGFwIGRldmljZS4gUnVuIHJ1bnFlbXUtZ2VuLXRhcGRldnMgdG8gbWFudWFsbHkgY3JlYXRlLiIpCkBAIC05NjAsOCArOTkzLDggQEAKICAgICBkZWYgc2V0dXBfbmV0d29yayhzZWxmKToKICAgICAgICAgaWYgc2VsZi5nZXQoJ1FCX05FVCcpID09ICdub25lJzoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBjbWQgPSAic3R0eSAtZyIKLSAgICAgICAgc2VsZi5zYXZlZF9zdHR5ID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKToKKyAgICAgICAgICAgIHNlbGYuc2F2ZWRfc3R0eSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJzdHR5IC1nIiwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgIHNlbGYubmV0d29ya19kZXZpY2UgPSBzZWxmLmdldCgnUUJfTkVUV09SS19ERVZJQ0UnKSBvciBzZWxmLm5ldHdvcmtfZGV2aWNlCiAgICAgICAgIGlmIHNlbGYuc2xpcnBfZW5hYmxlZDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfc2xpcnAoKQpAQCAtOTcxLDYgKzEwMDQsOCBAQAogICAgIGRlZiBzZXR1cF9yb290ZnMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZ2V0KCdRQl9ST09URlMnKSA9PSAnbm9uZSc6CiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgJ3dpYy4nIGluIHNlbGYuZnN0eXBlOgorICAgICAgICAgICAgc2VsZi5mc3R5cGUgPSBzZWxmLmZzdHlwZVs0Ol0KICAgICAgICAgcm9vdGZzX2Zvcm1hdCA9IHNlbGYuZnN0eXBlIGlmIHNlbGYuZnN0eXBlIGluICgndm1kaycsICdxY293MicsICd2ZGknKSBlbHNlICdyYXcnCiAKICAgICAgICAgcWJfcm9vdGZzX29wdCA9IHNlbGYuZ2V0KCdRQl9ST09URlNfT1BUJykKQEAgLTk4Niw3ICsxMDIxLDcgQEAKICAgICAgICAgICAgIHZtX2RyaXZlID0gJycKICAgICAgICAgICAgIGlmIHNlbGYuZnN0eXBlIGluIHNlbGYudm10eXBlczoKICAgICAgICAgICAgICAgICBpZiBzZWxmLmZzdHlwZSA9PSAnaXNvJzoKLSAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWNkcm9tICVzJyAlIHNlbGYucm9vdGZzCisgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gJy1kcml2ZSBmaWxlPSVzLGlmPXZpcnRpbyxtZWRpYT1jZHJvbScgJSBzZWxmLnJvb3RmcwogICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5nZXQoJ1FCX0RSSVZFX1RZUEUnKToKICAgICAgICAgICAgICAgICAgICAgZHJpdmVfdHlwZSA9IHNlbGYuZ2V0KCdRQl9EUklWRV9UWVBFJykKICAgICAgICAgICAgICAgICAgICAgaWYgZHJpdmVfdHlwZS5zdGFydHN3aXRoKCIvZGV2L3NkIik6CkBAIC05OTUsNyArMTAzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBkcml2ZV90eXBlLnN0YXJ0c3dpdGgoIi9kZXYvaGQiKToKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdVc2luZyBpZGUgZHJpdmUnKQotICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAiJXMsZm9ybWF0PSVzIiAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gIi1kcml2ZSBmaWxlPSVzLGZvcm1hdD0lcyIgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIHZpcnRpbyBtaWdodCBoYXZlIGJlZW4gc2VsZWN0ZWQgZXhwbGljaXRseSAoanVzdCB1c2UgaXQpLCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyB1c2VkIGFzIGZhbGxiYWNrICh0aGVuIHdhcm4gYWJvdXQgdGhhdCkuCkBAIC0xMDExLDcgKzEwNDYsNyBAQAogCiAgICAgICAgIGlmIHNlbGYuZnN0eXBlID09ICduZnMnOgogICAgICAgICAgICAgc2VsZi5yb290ZnNfb3B0aW9ucyA9ICcnCi0gICAgICAgICAgICBrX3Jvb3QgPSAnL2Rldi9uZnMgbmZzcm9vdD0lczolcywlcycgJSAoc2VsZi5uZnNfc2VydmVyLCBzZWxmLnJvb3Rmcywgc2VsZi51bmZzX29wdHMpCisgICAgICAgICAgICBrX3Jvb3QgPSAnL2Rldi9uZnMgbmZzcm9vdD0lczolcywlcycgJSAoc2VsZi5uZnNfc2VydmVyLCBvcy5wYXRoLmFic3BhdGgoc2VsZi5yb290ZnMpLCBzZWxmLnVuZnNfb3B0cykKICAgICAgICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmUgPSAncm9vdD0lcyBydyBoaWdocmVzPW9mZicgJSBrX3Jvb3QKIAogICAgICAgICBpZiBzZWxmLmZzdHlwZSA9PSAnbm9uZSc6CkBAIC0xMDYyLDcgKzEwOTcsNyBAQAogICAgICAgICBpZiBub3QgcWVtdV9zeXN0ZW06CiAgICAgICAgICAgICBxZW11X3N5c3RlbSA9IHNlbGYuZ3Vlc3NfcWJfc3lzdGVtKCkKICAgICAgICAgaWYgbm90IHFlbXVfc3lzdGVtOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gYm9vdCwgUUJfU1lTVEVNX05BTUUgaXMgTlVMTCEiKQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJGYWlsZWQgdG8gYm9vdCwgUUJfU1lTVEVNX05BTUUgaXMgTlVMTCEiKQogCiAgICAgICAgIHFlbXVfYmluID0gJyVzLyVzJyAlIChzZWxmLmJpbmRpcl9uYXRpdmUsIHFlbXVfc3lzdGVtKQogCkBAIC0xMTAxLDkgKzExMzYsOSBAQAogICAgICAgICAgICAgc2VsZi5xZW11X29wdCArPSAiIC1zbmFwc2hvdCIKIAogICAgICAgICBpZiBzZWxmLnNlcmlhbHN0ZGlvOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkludGVycnVwdCBjaGFyYWN0ZXIgaXMgJ15dJyIpCi0gICAgICAgICAgICBjbWQgPSAic3R0eSBpbnRyIF5dIgotICAgICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKToKKyAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoInN0dHkgaW50ciBeXSIsIHNoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkludGVycnVwdCBjaGFyYWN0ZXIgaXMgJ15dJyIpCiAKICAgICAgICAgICAgIGZpcnN0X3NlcmlhbCA9ICIiCiAgICAgICAgICAgICBpZiBub3QgcmUuc2VhcmNoKCItbm9ncmFwaGljIiwgc2VsZi5xZW11X29wdCk6CkBAIC0xMTQyLDE1ICsxMTc3LDE2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBrZXJuZWxfb3B0cyA9ICIiCiAgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5xZW11X29wdCwga2VybmVsX29wdHMpCi0gICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzJyAlIGNtZCkKLSAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJ1biAlcycgJSBjbWQpCisgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzXG4nICUgY21kKQorICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIGlmIHByb2Nlc3Mud2FpdCgpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gcnVuIHFlbXU6ICVzIiwgcHJvY2Vzcy5zdGRlcnIucmVhZCgpLmRlY29kZSgpKQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuY2xlYW50YXA6CiAgICAgICAgICAgICBjbWQgPSAnc3VkbyAlcyAlcyAlcycgJSAoc2VsZi5xZW11aWZkb3duLCBzZWxmLnRhcCwgc2VsZi5iaW5kaXJfbmF0aXZlKQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgJXMnICUgY21kKQotICAgICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnUnVubmluZyAlcycgJSBjbWQpCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzaGVsbD1UcnVlKQogICAgICAgICBpZiBzZWxmLmxvY2tfZGVzY3JpcHRvcjoKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSZWxlYXNpbmcgbG9ja2ZpbGUgZm9yIHRhcCBkZXZpY2UgJyVzJyIgJSBzZWxmLnRhcCkKICAgICAgICAgICAgIHNlbGYucmVsZWFzZV9sb2NrKCkKQEAgLTExNTgsMTIgKzExOTQsMTIgQEAKICAgICAgICAgaWYgc2VsZi5uZnNfcnVubmluZzoKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTaHV0dGluZyBkb3duIHRoZSB1c2Vyc3BhY2UgTkZTIHNlcnZlci4uLiIpCiAgICAgICAgICAgICBjbWQgPSAicnVucWVtdS1leHBvcnQtcm9vdGZzIHN0b3AgJXMiICUgc2VsZi5yb290ZnMKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzJyAlIGNtZCkKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1J1bm5pbmcgJXMnICUgY21kKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKIAogICAgICAgICBpZiBzZWxmLnNhdmVkX3N0dHk6CiAgICAgICAgICAgICBjbWQgPSAic3R0eSAlcyIgJSBzZWxmLnNhdmVkX3N0dHkKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzaGVsbD1UcnVlKQogCiAgICAgICAgIGlmIHNlbGYuY2xlYW5fbmZzX2RpcjoKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdSZW1vdmluZyAlcycgJSBzZWxmLnJvb3RmcykKQEAgLTExOTMsNiArMTIyOSwxMCBAQAogICAgICAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSAnJwogICAgICAgICAgICAgbG9nZ2VyLndhcm4oIkNvdWxkbid0IHJ1biAnYml0YmFrZSAtZScgdG8gZ2F0aGVyIGVudmlyb25tZW50IGluZm9ybWF0aW9uOlxuJXMiICUgZXJyLm91dHB1dC5kZWNvZGUoJ3V0Zi04JykpCiAKKyAgICBkZWYgdmFsaWRhdGVfY29tYm9zKHNlbGYpOgorICAgICAgICBpZiAoc2VsZi5mc3R5cGUgaW4gc2VsZi52bXR5cGVzKSBhbmQgc2VsZi5rZXJuZWw6CisgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIiVzIGRvZXNuJ3QgbmVlZCBrZXJuZWwgJXMhIiAlIChzZWxmLmZzdHlwZSwgc2VsZi5rZXJuZWwpKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGJpbmRpcl9uYXRpdmUoc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IHNlbGYuZ2V0KCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnKQpAQCAtMTIxMCw0MiArMTI1MCwzNyBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocmVzdWx0KToKICAgICAgICAgICAgICAgICBzZWxmLnNldCgnU1RBR0lOR19CSU5ESVJfTkFUSVZFJywgcmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTmF0aXZlIHN5c3Jvb3QgZGlyZWN0b3J5ICVzIGRvZXNuJ3QgZXhpc3QiICUgcmVzdWx0KQorICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJOYXRpdmUgc3lzcm9vdCBkaXJlY3RvcnkgJXMgZG9lc24ndCBleGlzdCIgJSByZXN1bHQpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgU1RBR0lOR19CSU5ESVJfTkFUSVZFIGluICclcycgb3V0cHV0IiAlIGNtZCkKKyAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiQ2FuJ3QgZmluZCBTVEFHSU5HX0JJTkRJUl9OQVRJVkUgaW4gJyVzJyBvdXRwdXQiICUgY21kKQogCiAKIGRlZiBtYWluKCk6CiAgICAgaWYgImhlbHAiIGluIHN5cy5hcmd2IG9yICctaCcgaW4gc3lzLmFyZ3Ygb3IgJy0taGVscCcgaW4gc3lzLmFyZ3Y6CiAgICAgICAgIHByaW50X3VzYWdlKCkKICAgICAgICAgcmV0dXJuIDAKLSAgICBjb25maWcgPSBCYXNlQ29uZmlnKCkKICAgICB0cnk6CisgICAgICAgIGNvbmZpZyA9IEJhc2VDb25maWcoKQogICAgICAgICBjb25maWcuY2hlY2tfYXJncygpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlc2M6Ci0gICAgICAgIGxvZ2dlci5lcnJvcihlc2MpCi0gICAgICAgIGxvZ2dlci5lcnJvcigiVHJ5ICdydW5xZW11IGhlbHAnIG9uIGhvdyB0byB1c2UgaXQiKQotICAgICAgICByZXR1cm4gMQotICAgIGNvbmZpZy5yZWFkX3FlbXVib290KCkKLSAgICBjb25maWcuY2hlY2tfYW5kX3NldCgpCi0gICAgY29uZmlnLnByaW50X2NvbmZpZygpCi0gICAgdHJ5OgorICAgICAgICBjb25maWcucmVhZF9xZW11Ym9vdCgpCisgICAgICAgIGNvbmZpZy5jaGVja19hbmRfc2V0KCkKKyAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSBjb21ib3MgaXMgdmFsaWQgb3Igbm90CisgICAgICAgIGNvbmZpZy52YWxpZGF0ZV9jb21ib3MoKQorICAgICAgICBjb25maWcucHJpbnRfY29uZmlnKCkKICAgICAgICAgY29uZmlnLnNldHVwX25ldHdvcmsoKQogICAgICAgICBjb25maWcuc2V0dXBfcm9vdGZzKCkKICAgICAgICAgY29uZmlnLnNldHVwX2ZpbmFsKCkKICAgICAgICAgY29uZmlnLnN0YXJ0X3FlbXUoKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGNvbmZpZy5jbGVhbnVwKCkKLSAgICByZXR1cm4gMAotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRyeToKLSAgICAgICAgcmV0ID0gbWFpbigpCi0gICAgZXhjZXB0IE9FUGF0aEVycm9yIGFzIGVycjoKLSAgICAgICAgcmV0ID0gMQotICAgICAgICBsb2dnZXIuZXJyb3IoZXJyLm1lc3NhZ2UpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlc2M6Ci0gICAgICAgIHJldCA9IDEKKyAgICBleGNlcHQgUnVuUWVtdUVycm9yIGFzIGVycjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKGVycikKKyAgICAgICAgcmV0dXJuIDEKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICBzeXMuZXhpdChyZXQpCisgICAgICAgIHJldHVybiAxCisgICAgZmluYWxseToKKyAgICAgICAgcHJpbnQoIkNsZWFudXAiKQorICAgICAgICBjb25maWcuY2xlYW51cCgpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS1leHBvcnQtcm9vdGZzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS1leHBvcnQtcm9vdGZzCmluZGV4IGM3OTkyZDguLjcwY2RjZGIgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3J1bnFlbXUtZXhwb3J0LXJvb3RmcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11LWV4cG9ydC1yb290ZnMKQEAgLTc3LDEwICs3Nyw2IEBACiAJZXhpdCAxCQogZmkKIAotIyBycGMubW91bnRkIFJQQyBwb3J0Ci1NT1VOVERfUlBDUE9SVD0ke01PVU5URF9SUENQT1JUOj0kWyAyMTExMSArICRORlNfSU5TVEFOQ0UgXX0KLSMgcnBjLm5mc2QgUlBDIHBvcnQKLU5GU0RfUlBDUE9SVD0ke05GU0RfUlBDUE9SVDo9JFsgMTExMTEgKyAkTkZTX0lOU1RBTkNFIF19CiAjIE5GUyBzZXJ2ZXIgcG9ydCBudW1iZXIKIE5GU0RfUE9SVD0ke05GU0RfUE9SVDo9JFsgMzA0OSArIDIgKiAkTkZTX0lOU1RBTkNFIF19CiAjIG1vdW50ZCBwb3J0IG51bWJlcgpAQCAtODgsNyArODQsNyBAQAogCiAjIyBGb3IgZGVidWdnaW5nIHlvdSB3b3VsZCBhZGRpdGlvbmFsbHkgYWRkCiAjIyAtLWRlYnVnIGFsbAotVU5GU0RfT1BUUz0iLXAgLU4gLWkgJE5GU1BJRCAtZSAkRVhQT1JUUyAteCAkTkZTRF9SUENQT1JUIC1uICRORlNEX1BPUlQgLXkgJE1PVU5URF9SUENQT1JUIC1tICRNT1VOVERfUE9SVCIKK1VORlNEX09QVFM9Ii1wIC1OIC1pICRORlNQSUQgLWUgJEVYUE9SVFMgLW4gJE5GU0RfUE9SVCAtbSAkTU9VTlREX1BPUlQiCiAKICMgU2VlIGhvdyB3ZSB3ZXJlIGNhbGxlZC4KIGNhc2UgIiQxIiBpbgpAQCAtMTMwLDcgKzEyNiw3IEBACiAJZmkKIAllY2hvICIgIgogCWVjaG8gIk9uIHlvdXIgdGFyZ2V0IHBsZWFzZSByZW1lbWJlciB0byBhZGQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBORlMiCi0JZWNobyAibmZzcm9vdD1JUF9BRERSRVNTOiRORlNfRVhQT1JUX0RJUixuZnN2ZXJzPTMscG9ydD0kTkZTRF9QT1JULG1vdW50cHJvZz0kTU9VTlREX1JQQ1BPUlQsbmZzcHJvZz0kTkZTRF9SUENQT1JULHVkcCxtb3VudHBvcnQ9JE1PVU5URF9QT1JUIgorCWVjaG8gIm5mc3Jvb3Q9SVBfQUREUkVTUzokTkZTX0VYUE9SVF9ESVIsbmZzdmVycz0zLHBvcnQ9JE5GU0RfUE9SVCx1ZHAsbW91bnRwb3J0PSRNT1VOVERfUE9SVCIKIAk7OwogICBzdG9wKQogCWlmIFsgLWYgIiRORlNQSUQiIF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3J1bnFlbXUuUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS5SRUFETUUKaW5kZXggNTkwOGQ4My4uZGE5YWJkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS5SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdS5SRUFETUUKQEAgLTM1LDcgKzM1LDcgQEAKICAgIHJ1biBhcyBub24gcm9vdC4gVGhlIHJ1bnFlbXUtZ2VuLXRhcGRldnMgc2NyaXB0IGNhbiBhbHNvIGJlIHVzZWQgYnkKICAgIHJvb3QgdG8gcHJlcG9wdWxhdGUgdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgZGV2aWNlcy4KICAtIFlvdSBjYW4gYWNjZXNzIHRoZSBob3N0IGNvbXB1dGVyIGF0IDE5Mi4xNjguNy4xIHdpdGhpbiB0aGUgaW1hZ2UuCi0gLSBZb3VyIHFlbXUgc3lzdGVtIHdpbGwgYmUgYWNjZXNzaWJsZSBhcyAxOTIuMTYuNy4yLgorIC0gWW91ciBxZW11IHN5c3RlbSB3aWxsIGJlIGFjY2Vzc2libGUgYXMgMTkyLjE2OC43LjIuCiAgLSBUaGUgc2NyaXB0IGV4dHJhY3RzIHRoZSByb290IGZpbGVzeXN0ZW0gc3BlY2lmaWVkIHVuZGVyIHBzZXVkbyBhbmQgc2V0cyB1cCBhIHVzZXJzcGFjZQogICAgTkZTIHNlcnZlciB0byBzaGFyZSB0aGUgaW1hZ2Ugb3ZlciBieSBkZWZhdWx0IG1lYW5pbmcgdGhlIGZpbGVzeXN0ZW0gY2FuIGJlIGFjY2Vzc2VkIGJ5CiAgICBib3RoIHRoZSBob3N0IGFuZCBndWVzdCBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvc3N0YXRlLWRpZmYtbWFjaGluZXMuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaAppbmRleCAwNTZhYTBhLi4yN2M2YTMzIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaApAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgY3AgLXJhICR7dG1wZGlyfS9zdGFtcHMvKiAke09VVFBVVH0vJHtNfQogICAgIGZpbmQgJHtPVVRQVVR9LyR7TX0gLW5hbWUgXCpzaWdkYXRhXCogfCBzZWQgInMjJHtPVVRQVVR9LyR7TX0vIyNnIiB8IHNvcnQgPiAke09VVFBVVH0vJHtNfS9saXN0CiAgICAgTV9VTkRFUlNDT1JFPWBlY2hvICR7TX0gfCBzZWQgJ3MvLS9fL2cnYAotICAgIHNlZCAicy8ke01fVU5ERVJTQ09SRX0vTUFDSElORS9nOyBzLyR7TX0vTUFDSElORS9nIiAke09VVFBVVH0vJHtNfS9saXN0IHwgc29ydCA+ICR7T1VUUFVUfS8ke019L2xpc3QuTQorICAgIHNlZCAicy9eJHtNX1VOREVSU0NPUkV9LS9NQUNISU5FL2ciICR7T1VUUFVUfS8ke019L2xpc3QgfCBzb3J0ID4gJHtPVVRQVVR9LyR7TX0vbGlzdC5NCiAgICAgZmluZCAke3RtcGRpcn0vc3RhbXBzLyAtbmFtZSBcKnNpZ2RhdGFcKiB8IHhhcmdzIHJtIC1mCiAgIGVsc2UKICAgICBwcmludGYgIkVSUk9SOiBubyBzaWdkYXRhIGZpbGVzIHdlcmUgZ2VuZXJhdGVkIGZvciBNQUNISU5FICRNIGluICR7dG1wZGlyfS9zdGFtcHNcbiI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9zc3RhdGUtc3lzcm9vdC1jcnVmdC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3NzdGF0ZS1zeXNyb290LWNydWZ0LnNoCmluZGV4IGI2MTY2YWEuLmQ5OTE3ZjUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3NzdGF0ZS1zeXNyb290LWNydWZ0LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3NzdGF0ZS1zeXNyb290LWNydWZ0LnNoCkBAIC0xMDUsNyArMTA1LDkgQEAKIAogIyBnZW5lcmF0ZWQgYnkgcGhwCiBXSElURUxJU1Q9IiR7V0hJVEVMSVNUfSBcCisgIC4qL3Vzci9saWIvcGhwNS9waHAvLmNoYW5uZWxzIFwKICAgLiovdXNyL2xpYi9waHA1L3BocC8uY2hhbm5lbHMvLiogXAorICAuKi91c3IvbGliL3BocDUvcGhwLy5yZWdpc3RyeSBcCiAgIC4qL3Vzci9saWIvcGhwNS9waHAvLnJlZ2lzdHJ5Ly4qIFwKICAgLiovdXNyL2xpYi9waHA1L3BocC8uZGVwZGIgXAogICAuKi91c3IvbGliL3BocDUvcGhwLy5kZXBkYmxvY2sgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvdGVzdC1yZWV4ZWMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy90ZXN0LXJlZXhlYwppbmRleCA5ZWFhOTZlLi4zMGU3OTJjIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy90ZXN0LXJlZXhlYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy90ZXN0LXJlZXhlYwpAQCAtMzgsOSArMzgsOSBAQAogZnVuY3Rpb24gY2xlYXJzc3RhdGUgewogCXRhcmdldD0kMQogCi0Jc3N0YXRlX2Rpcj1gYml0YmFrZSAkdGFyZ2V0IC1lIHwgZ3JlcCAiXlNTVEFURV9ESVIiIHwgY3V0IC1kICJcIiIgLWYgMmAKLQlzc3RhdGVfcGtnc3BlYz1gYml0YmFrZSAkdGFyZ2V0IC1lIHwgZ3JlcCAiXlNTVEFURV9QS0dTUEVDIiB8IGN1dCAtZCAiXCIiIC1mIDJgCi0Jc3N0YXNrcz1gYml0YmFrZSAkdGFyZ2V0IC1lIHwgZ3JlcCAiXlNTVEFURVRBU0tTIiB8IGN1dCAtZCAiXCIiIC1mIDJgCisJc3N0YXRlX2Rpcj1gYml0YmFrZSAkdGFyZ2V0IC1lIHwgZ3JlcCAiXlNTVEFURV9ESVI9IiB8IGN1dCAtZCAiXCIiIC1mIDJgCisJc3N0YXRlX3BrZ3NwZWM9YGJpdGJha2UgJHRhcmdldCAtZSB8IGdyZXAgIl5TU1RBVEVfUEtHU1BFQz0iIHwgY3V0IC1kICJcIiIgLWYgMmAKKwlzc3Rhc2tzPWBiaXRiYWtlICR0YXJnZXQgLWUgfCBncmVwICJeU1NUQVRFVEFTS1M9IiB8IGN1dCAtZCAiXCIiIC1mIDJgCiAKIAlmb3Igc3N0YXNrIGluICRzc3Rhc2tzCiAJZG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3dpYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3dpYwppbmRleCBhNWYyZGJmLi4wOTcwODRhIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy93aWMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvd2ljCkBAIC0zMyw4ICszMywxMCBAQAogIyBQeXRob24gU3RhbmRhcmQgTGlicmFyeSBtb2R1bGVzCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBvcHRwYXJzZQoraW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZworCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KIAogIyBFeHRlcm5hbCBtb2R1bGVzCkBAIC01NCw3ICs1Niw3IEBACiAgICAgYml0YmFrZV9tYWluID0gTm9uZQogCiBmcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKLWZyb20gd2ljLnV0aWxzLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhciwgQkJfVkFSUworZnJvbSB3aWMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyLCBCQl9WQVJTCiBmcm9tIHdpYyBpbXBvcnQgZW5naW5lCiBmcm9tIHdpYyBpbXBvcnQgaGVscCBhcyBobHAKIApAQCAtODUsNjYgKzg3LDMwIEBACiAgICAgICAgIHJvb3Rmc19kaXIgKz0gJz0nLmpvaW4oW2tleSwgdmFsXSkKICAgICByZXR1cm4gcm9vdGZzX2Rpci5zdHJpcCgpCiAKLWRlZiBjYWxsYmFja19yb290ZnNfZGlyKG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKLSAgICAiIiIKLSAgICBCdWlsZCBhIGRpY3QgdXNpbmcgLS1yb290ZnNfZGlyIGNvbm5lY3Rpb249ZGlyCi0gICAgIiIiCi0gICAgaWYgbm90IHR5cGUocGFyc2VyLnZhbHVlcy5yb290ZnNfZGlyKSBpcyBkaWN0OgotICAgICAgICBwYXJzZXIudmFsdWVzLnJvb3Rmc19kaXIgPSBkaWN0KCkKIAotICAgIGlmICc9JyBpbiB2YWx1ZToKLSAgICAgICAgKGtleSwgcm9vdGZzX2RpcikgPSB2YWx1ZS5zcGxpdCgnPScpCi0gICAgZWxzZToKLSAgICAgICAga2V5ID0gJ1JPT1RGU19ESVInCi0gICAgICAgIHJvb3Rmc19kaXIgPSB2YWx1ZQorY2xhc3MgUm9vdGZzQXJnQWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKIAotICAgIHBhcnNlci52YWx1ZXMucm9vdGZzX2RpcltrZXldID0gcm9vdGZzX2RpcgorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXJzZXIsIG5hbWVzcGFjZSwgdmFsdWUsIG9wdGlvbl9zdHJpbmc9Tm9uZSk6CisgICAgICAgIGlmIG5vdCAicm9vdGZzX2RpciIgaW4gdmFycyhuYW1lc3BhY2UpIG9yIFwKKyAgICAgICAgICAgbm90IHR5cGUobmFtZXNwYWNlLl9fZGljdF9fWydyb290ZnNfZGlyJ10pIGlzIGRpY3Q6CisgICAgICAgICAgICBuYW1lc3BhY2UuX19kaWN0X19bJ3Jvb3Rmc19kaXInXSA9IHt9CiAKLWRlZiB3aWNfY3JlYXRlX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKKyAgICAgICAgaWYgJz0nIGluIHZhbHVlOgorICAgICAgICAgICAgKGtleSwgcm9vdGZzX2RpcikgPSB2YWx1ZS5zcGxpdCgnPScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBrZXkgPSAnUk9PVEZTX0RJUicKKyAgICAgICAgICAgIHJvb3Rmc19kaXIgPSB2YWx1ZQorCisgICAgICAgIG5hbWVzcGFjZS5fX2RpY3RfX1sncm9vdGZzX2RpciddW2tleV0gPSByb290ZnNfZGlyCisKKworZGVmIHdpY19jcmVhdGVfc3ViY29tbWFuZChvcHRpb25zLCB1c2FnZV9zdHIpOgogICAgICIiIgogICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgaW1hZ2UgY3JlYXRpb24uICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUKICAgICBieSBpbWFnZS5lbmdpbmUud2ljX2NyZWF0ZSgpCiAgICAgIiIiCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPXVzYWdlX3N0cikKLQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91dGRpciIsIGRlc3Q9Im91dGRpciIsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im5hbWUgb2YgZGlyZWN0b3J5IHRvIGNyZWF0ZSBpbWFnZSBpbiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1lIiwgIi0taW1hZ2UtbmFtZSIsIGRlc3Q9ImltYWdlX25hbWUiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im5hbWUgb2YgdGhlIGltYWdlIHRvIHVzZSB0aGUgYXJ0aWZhY3RzIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImUuZy4gY29yZS1pbWFnZS1zYXRvIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXIiLCAiLS1yb290ZnMtZGlyIiwgZGVzdD0icm9vdGZzX2RpciIsIHR5cGU9InN0cmluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJjYWxsYmFjayIsIGNhbGxiYWNrPWNhbGxiYWNrX3Jvb3Rmc19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0icGF0aCB0byB0aGUgL3Jvb3RmcyBkaXIgdG8gdXNlIGFzIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiLndrcyByb290ZnMgc291cmNlIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWIiLCAiLS1ib290aW1nLWRpciIsIGRlc3Q9ImJvb3RpbWdfZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBkaXIgY29udGFpbmluZyB0aGUgYm9vdCBhcnRpZmFjdHMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIihlLmcuIC9FRkkgb3IgL3N5c2xpbnV4IGRpcnMpIHRvIHVzZSBhcyB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIi53a3MgYm9vdGltZyBzb3VyY2UiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItayIsICItLWtlcm5lbC1kaXIiLCBkZXN0PSJrZXJuZWxfZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBkaXIgY29udGFpbmluZyB0aGUga2VybmVsIHRvIHVzZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdGhlIC53a3MgYm9vdGltZyIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1uIiwgIi0tbmF0aXZlLXN5c3Jvb3QiLCBkZXN0PSJuYXRpdmVfc3lzcm9vdCIsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0icGF0aCB0byB0aGUgbmF0aXZlIHN5c3Jvb3QgY29udGFpbmluZyB0aGUgdG9vbHMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIHVzZSB0byBidWlsZCB0aGUgaW1hZ2UiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItcyIsICItLXNraXAtYnVpbGQtY2hlY2siLCBkZXN0PSJidWlsZF9jaGVjayIsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0ic2tpcCB0aGUgYnVpbGQgY2hlY2siKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZiIsICItLWJ1aWxkLXJvb3RmcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImJ1aWxkIHJvb3RmcyIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1jIiwgIi0tY29tcHJlc3Mtd2l0aCIsIGNob2ljZXM9KCJnemlwIiwgImJ6aXAyIiwgInh6IiksCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29tcHJlc3NvcicsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0iY29tcHJlc3MgaW1hZ2Ugd2l0aCBzcGVjaWZpZWQgY29tcHJlc3NvciIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgIi0tYm1hcCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImdlbmVyYXRlIC5ibWFwIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS12YXJzIiwgZGVzdD0ndmFyc19kaXInLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImRpcmVjdG9yeSB3aXRoIDxpbWFnZT4uZW52IGZpbGVzIHRoYXQgc3RvcmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImJpdGJha2UgdmFyaWFibGVzIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLUQiLCAiLS1kZWJ1ZyIsIGRlc3Q9ImRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24iKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHJhaXNlIFdpY0Vycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLCBleGl0aW5nIikKLQogICAgIGlmIG9wdGlvbnMuYnVpbGRfcm9vdGZzIGFuZCBub3QgYml0YmFrZV9tYWluOgogICAgICAgICByYWlzZSBXaWNFcnJvcigiQ2FuJ3QgYnVpbGQgcm9vdGZzIGFzIGJpdGJha2UgaXMgbm90IGluIHRoZSAkUEFUSCIpCiAKQEAgLTE4OCwzMiArMTU0LDM0IEBACiAgICAgICAgIHJvb3Rmc19kaXIgPSBnZXRfYml0YmFrZV92YXIoIklNQUdFX1JPT1RGUyIsIG9wdGlvbnMuaW1hZ2VfbmFtZSkKICAgICAgICAga2VybmVsX2RpciA9IGdldF9iaXRiYWtlX3ZhcigiREVQTE9ZX0RJUl9JTUFHRSIsIG9wdGlvbnMuaW1hZ2VfbmFtZSkKICAgICAgICAgYm9vdGltZ19kaXIgPSBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfREFUQURJUiIsIG9wdGlvbnMuaW1hZ2VfbmFtZSkKLSAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBnZXRfYml0YmFrZV92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuaW1hZ2VfbmFtZSkgIywgY2FjaGU9RmFsc2UpCisKKyAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBvcHRpb25zLm5hdGl2ZV9zeXNyb290CisgICAgICAgIGlmIG9wdGlvbnMudmFyc19kaXIgYW5kIG5vdCBuYXRpdmVfc3lzcm9vdDoKKyAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290ID0gZ2V0X2JpdGJha2VfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCBvcHRpb25zLmltYWdlX25hbWUpCiAgICAgZWxzZToKICAgICAgICAgaWYgb3B0aW9ucy5idWlsZF9yb290ZnM6CiAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiSW1hZ2UgbmFtZSBpcyBub3Qgc3BlY2lmaWVkLCBleGl0aW5nLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKFVzZSAtZS8tLWltYWdlLW5hbWUgdG8gc3BlY2lmeSBpdCkiKQogICAgICAgICBuYXRpdmVfc3lzcm9vdCA9IG9wdGlvbnMubmF0aXZlX3N5c3Jvb3QKIAotICAgIGlmIG5vdCBuYXRpdmVfc3lzcm9vdCBvciBub3Qgb3MucGF0aC5pc2RpcihuYXRpdmVfc3lzcm9vdCk6CisgICAgaWYgbm90IG9wdGlvbnMudmFyc19kaXIgYW5kIChub3QgbmF0aXZlX3N5c3Jvb3Qgb3Igbm90IG9zLnBhdGguaXNkaXIobmF0aXZlX3N5c3Jvb3QpKToKICAgICAgICAgbG9nZ2VyLmluZm8oIkJ1aWxkaW5nIHdpYy10b29scy4uLlxuIikKICAgICAgICAgaWYgYml0YmFrZV9tYWluKEJpdEJha2VDb25maWdQYXJhbWV0ZXJzKCJiaXRiYWtlIHdpYy10b29scyIuc3BsaXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZXJkYXRhLkNvb2tlckNvbmZpZ3VyYXRpb24oKSk6CiAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiYml0YmFrZSB3aWMtdG9vbHMgZmFpbGVkIikKICAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBnZXRfYml0YmFrZV92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJ3aWMtdG9vbHMiKQotICAgICAgICBpZiBub3QgbmF0aXZlX3N5c3Jvb3Q6Ci0gICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiVW5hYmxlIHRvIGZpbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBuYXRpdmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xzIHN5c3Jvb3QgdG8gdXNlIikKIAotICAgIHdrc19maWxlID0gYXJnc1swXQorICAgIGlmIG5vdCBuYXRpdmVfc3lzcm9vdDoKKyAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlVuYWJsZSB0byBmaW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmF0aXZlIHRvb2xzIHN5c3Jvb3QiKQorCisgICAgd2tzX2ZpbGUgPSBvcHRpb25zLndrc19maWxlCiAKICAgICBpZiBub3Qgd2tzX2ZpbGUuZW5kc3dpdGgoIi53a3MiKToKICAgICAgICAgd2tzX2ZpbGUgPSBlbmdpbmUuZmluZF9jYW5uZWRfaW1hZ2Uoc2NyaXB0c19wYXRoLCB3a3NfZmlsZSkKICAgICAgICAgaWYgbm90IHdrc19maWxlOgogICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIk5vIGltYWdlIG5hbWVkICVzIGZvdW5kLCBleGl0aW5nLiAgKFVzZSAnd2ljIGxpc3QgaW1hZ2VzJyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG8gbGlzdCBhdmFpbGFibGUgaW1hZ2VzLCBvciBzcGVjaWZ5IGEgZnVsbHktcXVhbGlmaWVkIE9FICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJraWNrc3RhcnQgKC53a3MpIGZpbGVuYW1lKSIgJSBhcmdzWzBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgImtpY2tzdGFydCAoLndrcykgZmlsZW5hbWUpIiAlIG9wdGlvbnMud2tzX2ZpbGUpCiAKICAgICBpZiBub3Qgb3B0aW9ucy5pbWFnZV9uYW1lOgogICAgICAgICByb290ZnNfZGlyID0gJycKQEAgLTI2NCw1OSArMjMyLDI5MCBAQAogICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBhdmFpbGFibGUgaW1hZ2VzLgogICAgIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieSBpbWFnZS5lbmdpbmUud2ljX2xpc3QoKQogICAgICIiIgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT11c2FnZV9zdHIpCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpWzFdCi0KICAgICBpZiBub3QgZW5naW5lLndpY19saXN0KGFyZ3MsIHNjcmlwdHNfcGF0aCk6Ci0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkJhZCBsaXN0IGFyZ3VtZW50cywgZXhpdGluZyIpCiAKIAotZGVmIHdpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKK2RlZiB3aWNfbHNfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgogICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgaGVscC1vbmx5ICdzdWJjb21tYW5kcycuICBUaGlzIGlzCi0gICAgZXNzZW50aWFsbHkgYSBkdW1teSBjb21tYW5kIHRoYXQgZG9lc24gbm90aGluZyBidXQgYWxsb3cgdXNlcnMgdG8KLSAgICB1c2UgdGhlIGV4aXN0aW5nIHN1YmNvbW1hbmQgaW5mcmFzdHJ1Y3R1cmUgdG8gZGlzcGxheSBoZWxwIG9uIGEKLSAgICBwYXJ0aWN1bGFyIHRvcGljIG5vdCBhdHRhY2hlZCB0byBhbnkgcGFydGljdWxhciBzdWJjb21tYW5kLgorICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdCBjb250ZW50IG9mIGltYWdlcy4KKyAgICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgZW5naW5lLndpY19scygpCisgICAgIiIiCisgICAgZW5naW5lLndpY19scyhhcmdzLCBhcmdzLm5hdGl2ZV9zeXNyb290KQorCitkZWYgd2ljX2NwX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKKyAgICAiIiIKKyAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGNvcHlpbmcgZmlsZXMvZGlycyB0byBpbWFnZXMuCisgICAgVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5IGVuZ2luZS53aWNfY3AoKQorICAgICIiIgorICAgIGVuZ2luZS53aWNfY3AoYXJncywgYXJncy5uYXRpdmVfc3lzcm9vdCkKKworZGVmIHdpY19ybV9zdWJjb21tYW5kKGFyZ3MsIHVzYWdlX3N0cik6CisgICAgIiIiCisgICAgQ29tbWFuZC1saW5lIGhhbmRsaW5nIGZvciByZW1vdmluZyBmaWxlcy9kaXJzIGZyb20gaW1hZ2VzLgorICAgIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieSBlbmdpbmUud2ljX3JtKCkKKyAgICAiIiIKKyAgICBlbmdpbmUud2ljX3JtKGFyZ3MsIGFyZ3MubmF0aXZlX3N5c3Jvb3QpCisKK2RlZiB3aWNfd3JpdGVfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgorICAgICIiIgorICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3Igd3JpdGluZyBpbWFnZXMuCisgICAgVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5IGVuZ2luZS53aWNfd3JpdGUoKQorICAgICIiIgorICAgIGVuZ2luZS53aWNfd3JpdGUoYXJncywgYXJncy5uYXRpdmVfc3lzcm9vdCkKKworZGVmIHdpY19oZWxwX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKKyAgICAiIiIKKyAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGhlbHAgc3ViY29tbWFuZCB0byBrZWVwIHRoZSBjdXJyZW50CisgICAgc3RydWN0dXJlIG9mIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4KICAgICAiIiIKICAgICBwYXNzCiAKIAorZGVmIHdpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQodXNhZ2Vfc3RyLCBoZWxwX3N0cik6CisgICAgIiIiCisgICAgRGlzcGxheSBmdW5jdGlvbiBmb3IgaGVscCAnc3ViLXN1YmNvbW1hbmRzJy4KKyAgICAiIiIKKyAgICBwcmludChoZWxwX3N0cikKKyAgICByZXR1cm4KKworCiB3aWNfaGVscF90b3BpY191c2FnZSA9ICIiIgogIiIiCiAKLXN1YmNvbW1hbmRzID0gewotICAgICJjcmVhdGUiOiAgICBbd2ljX2NyZWF0ZV9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICAgaGxwLndpY19jcmVhdGVfdXNhZ2UsCi0gICAgICAgICAgICAgICAgICBobHAud2ljX2NyZWF0ZV9oZWxwXSwKLSAgICAibGlzdCI6ICAgICAgW3dpY19saXN0X3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICBobHAud2ljX2xpc3RfdXNhZ2UsCi0gICAgICAgICAgICAgICAgICBobHAud2ljX2xpc3RfaGVscF0sCitoZWxwdG9waWNzID0gewogICAgICJwbHVnaW5zIjogICBbd2ljX2hlbHBfdG9waWNfc3ViY29tbWFuZCwKICAgICAgICAgICAgICAgICAgIHdpY19oZWxwX3RvcGljX3VzYWdlLAotICAgICAgICAgICAgICAgICAgaGxwLmdldF93aWNfcGx1Z2luc19oZWxwXSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfcGx1Z2luc19oZWxwXSwKICAgICAib3ZlcnZpZXciOiAgW3dpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQsCiAgICAgICAgICAgICAgICAgICB3aWNfaGVscF90b3BpY191c2FnZSwKICAgICAgICAgICAgICAgICAgIGhscC53aWNfb3ZlcnZpZXdfaGVscF0sCiAgICAgImtpY2tzdGFydCI6IFt3aWNfaGVscF90b3BpY19zdWJjb21tYW5kLAogICAgICAgICAgICAgICAgICAgd2ljX2hlbHBfdG9waWNfdXNhZ2UsCiAgICAgICAgICAgICAgICAgICBobHAud2ljX2tpY2tzdGFydF9oZWxwXSwKKyAgICAiY3JlYXRlIjogICAgW3dpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICB3aWNfaGVscF90b3BpY191c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfY3JlYXRlX2hlbHBdLAorICAgICJscyI6ICAgICAgICBbd2ljX2hlbHBfdG9waWNfc3ViY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgIHdpY19oZWxwX3RvcGljX3VzYWdlLAorICAgICAgICAgICAgICAgICAgaGxwLndpY19sc19oZWxwXSwKKyAgICAiY3AiOiAgICAgICAgW3dpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICB3aWNfaGVscF90b3BpY191c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfY3BfaGVscF0sCisgICAgInJtIjogICAgICAgIFt3aWNfaGVscF90b3BpY19zdWJjb21tYW5kLAorICAgICAgICAgICAgICAgICAgd2ljX2hlbHBfdG9waWNfdXNhZ2UsCisgICAgICAgICAgICAgICAgICBobHAud2ljX3JtX2hlbHBdLAorICAgICJ3cml0ZSI6ICAgICBbd2ljX2hlbHBfdG9waWNfc3ViY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgIHdpY19oZWxwX3RvcGljX3VzYWdlLAorICAgICAgICAgICAgICAgICAgaGxwLndpY193cml0ZV9oZWxwXSwKKyAgICAibGlzdCI6ICAgICAgW3dpY19oZWxwX3RvcGljX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICB3aWNfaGVscF90b3BpY191c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfbGlzdF9oZWxwXQogfQogCiAKK2RlZiB3aWNfaW5pdF9wYXJzZXJfY3JlYXRlKHN1YnBhcnNlcik6CisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgid2tzX2ZpbGUiKQorCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW8iLCAiLS1vdXRkaXIiLCBkZXN0PSJvdXRkaXIiLCBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJuYW1lIG9mIGRpcmVjdG9yeSB0byBjcmVhdGUgaW1hZ2UgaW4iKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1lIiwgIi0taW1hZ2UtbmFtZSIsIGRlc3Q9ImltYWdlX25hbWUiLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im5hbWUgb2YgdGhlIGltYWdlIHRvIHVzZSB0aGUgYXJ0aWZhY3RzIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImUuZy4gY29yZS1pbWFnZS1zYXRvIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItciIsICItLXJvb3Rmcy1kaXIiLCBhY3Rpb249Um9vdGZzQXJnQWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGggdG8gdGhlIC9yb290ZnMgZGlyIHRvIHVzZSBhcyB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIi53a3Mgcm9vdGZzIHNvdXJjZSIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLWIiLCAiLS1ib290aW1nLWRpciIsIGRlc3Q9ImJvb3RpbWdfZGlyIiwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBkaXIgY29udGFpbmluZyB0aGUgYm9vdCBhcnRpZmFjdHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIihlLmcuIC9FRkkgb3IgL3N5c2xpbnV4IGRpcnMpIHRvIHVzZSBhcyB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIi53a3MgYm9vdGltZyBzb3VyY2UiKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1rIiwgIi0ta2VybmVsLWRpciIsIGRlc3Q9Imtlcm5lbF9kaXIiLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGggdG8gdGhlIGRpciBjb250YWluaW5nIHRoZSBrZXJuZWwgdG8gdXNlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgLndrcyBib290aW1nIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItbiIsICItLW5hdGl2ZS1zeXNyb290IiwgZGVzdD0ibmF0aXZlX3N5c3Jvb3QiLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290IGNvbnRhaW5pbmcgdGhlIHRvb2xzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0byB1c2UgdG8gYnVpbGQgdGhlIGltYWdlIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItcyIsICItLXNraXAtYnVpbGQtY2hlY2siLCBkZXN0PSJidWlsZF9jaGVjayIsCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0ic2tpcCB0aGUgYnVpbGQgY2hlY2siKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1mIiwgIi0tYnVpbGQtcm9vdGZzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iYnVpbGQgcm9vdGZzIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItYyIsICItLWNvbXByZXNzLXdpdGgiLCBjaG9pY2VzPSgiZ3ppcCIsICJiemlwMiIsICJ4eiIpLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NvbXByZXNzb3InLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImNvbXByZXNzIGltYWdlIHdpdGggc3BlY2lmaWVkIGNvbXByZXNzb3IiKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1tIiwgIi0tYm1hcCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9ImdlbmVyYXRlIC5ibWFwIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW5vLWZzdGFiLXVwZGF0ZSIgLGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG8gbm90IGNoYW5nZSBmc3RhYiBmaWxlLiIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLXYiLCAiLS12YXJzIiwgZGVzdD0ndmFyc19kaXInLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImRpcmVjdG9yeSB3aXRoIDxpbWFnZT4uZW52IGZpbGVzIHRoYXQgc3RvcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImJpdGJha2UgdmFyaWFibGVzIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItRCIsICItLWRlYnVnIiwgZGVzdD0iZGVidWciLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Im91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiIpCisgICAgcmV0dXJuCisKKworZGVmIHdpY19pbml0X3BhcnNlcl9saXN0KHN1YnBhcnNlcik6CisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgibGlzdF90eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImNhbiBiZSAnaW1hZ2VzJyBvciAnc291cmNlLXBsdWdpbnMnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIG9idGFpbiBhIGxpc3QuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIHZhbHVlIGlzIGEgdmFsaWQgLndrcyBpbWFnZSBmaWxlIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJoZWxwX2ZvciIsIGRlZmF1bHQ9W10sIG5hcmdzPScqJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IklmICdsaXN0X3R5cGUnIGlzIGEgdmFsaWQgLndrcyBpbWFnZSBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoaXMgdmFsdWUgY2FuIGJlICdoZWxwJyB0byBzaG93IHRoZSBoZWxwIGluZm9ybWF0aW9uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluZWQgaW5zaWRlIHRoZSAud2tzIGZpbGUiKQorICAgIHJldHVybgorCitkZWYgaW1ndHlwZShhcmcpOgorICAgICIiIgorICAgIEN1c3RvbSB0eXBlIGZvciBBcmd1bWVudFBhcnNlcgorICAgIENvbnZlcnRzIHBhdGggc3BlYyB0byBuYW1lZCB0dXBsZTogKGltYWdlLCBwYXJ0aXRpb24sIHBhdGgpCisgICAgIiIiCisgICAgaW1hZ2UgPSBhcmcKKyAgICBwYXJ0ID0gcGF0aCA9IE5vbmUKKyAgICBpZiAnOicgaW4gaW1hZ2U6CisgICAgICAgIGltYWdlLCBwYXJ0ID0gaW1hZ2Uuc3BsaXQoJzonKQorICAgICAgICBpZiAnLycgaW4gcGFydDoKKyAgICAgICAgICAgIHBhcnQsIHBhdGggPSBwYXJ0LnNwbGl0KCcvJywgMSkKKyAgICAgICAgaWYgbm90IHBhdGg6CisgICAgICAgICAgICBwYXRoID0gJy8nCisKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoaW1hZ2UpOgorICAgICAgICBlcnIgPSAiJXMgaXMgbm90IGEgcmVndWxhciBmaWxlIG9yIHN5bWxpbmsiICUgaW1hZ2UKKyAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoZXJyKQorCisgICAgcmV0dXJuIG5hbWVkdHVwbGUoJ0ltZ1R5cGUnLCAnaW1hZ2UgcGFydCBwYXRoJykoaW1hZ2UsIHBhcnQsIHBhdGgpCisKK2RlZiB3aWNfaW5pdF9wYXJzZXJfbHMoc3VicGFyc2VyKToKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJwYXRoIiwgdHlwZT1pbWd0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iaW1hZ2Ugc3BlYzogPGltYWdlPls6PHZmYXQgcGFydGl0aW9uPls8cGF0aD5dXSIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCisKK2RlZiBpbWdwYXRodHlwZShhcmcpOgorICAgIGltZyA9IGltZ3R5cGUoYXJnKQorICAgIGlmIGltZy5wYXJ0IGlzIE5vbmU6CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCJwYXJ0aXRpb24gbnVtYmVyIGlzIG5vdCBzcGVjaWZpZWQiKQorICAgIHJldHVybiBpbWcKKworZGVmIHdpY19pbml0X3BhcnNlcl9jcChzdWJwYXJzZXIpOgorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoInNyYyIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzb3VyY2Ugc3BlYyIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiZGVzdCIsIHR5cGU9aW1ncGF0aHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJpbWFnZSBzcGVjOiA8aW1hZ2U+Ojx2ZmF0IHBhcnRpdGlvbj5bPHBhdGg+XSIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCisKK2RlZiB3aWNfaW5pdF9wYXJzZXJfcm0oc3VicGFyc2VyKToKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJwYXRoIiwgdHlwZT1pbWdwYXRodHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGg6IDxpbWFnZT46PHZmYXQgcGFydGl0aW9uPjxwYXRoPiIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCisKK2RlZiBleHBhbmR0eXBlKHJ1bGVzKToKKyAgICAiIiIKKyAgICBDdXN0b20gdHlwZSBmb3IgQXJndW1lbnRQYXJzZXIKKyAgICBDb252ZXJ0cyBleHBhbmQgcnVsZXMgdG8gdGhlIGRpY3Rpb25hcnkgezxwYXJ0aXRpb24+OiBzaXplfQorICAgICIiIgorICAgIGlmIHJ1bGVzID09ICdhdXRvJzoKKyAgICAgICAgcmV0dXJuIHt9CisgICAgcmVzdWx0ID0ge30KKyAgICBmb3IgcnVsZSBpbiBydWxlcy5zcGxpdCgnLScpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwYXJ0LCBzaXplID0gcnVsZS5zcGxpdCgnOicpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoIkluY29ycmVjdCBydWxlIGZvcm1hdDogJXMiICUgcnVsZSkKKworICAgICAgICBpZiBub3QgcGFydC5pc2RpZ2l0KCk6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigiUnVsZSAnJXMnOiBwYXJ0aXRpb24gbnVtYmVyIG11c3QgYmUgaW50ZWdlciIgJSBydWxlKQorCisgICAgICAgICMgdmFsaWRhdGUgc2l6ZQorICAgICAgICBtdWx0aXBsaWVyID0gMQorICAgICAgICBmb3Igc3VmZml4LCBtdWx0IGluIFsoJ0snLCAxMDI0KSwgKCdNJywgMTAyNCAqIDEwMjQpLCAoJ0cnLCAxMDI0ICogMTAyNCAqIDEwMjQpXToKKyAgICAgICAgICAgIGlmIHNpemUudXBwZXIoKS5lbmRzd2l0aChzdWZmaXgpOgorICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSBtdWx0CisgICAgICAgICAgICAgICAgc2l6ZSA9IHNpemVbOi0xXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBzaXplLmlzZGlnaXQoKToKKyAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCJSdWxlICclcyc6IHNpemUgbXVzdCBiZSBpbnRlZ2VyIiAlIHJ1bGUpCisKKyAgICAgICAgcmVzdWx0W2ludChwYXJ0KV0gPSBpbnQoc2l6ZSkgKiBtdWx0aXBsaWVyCisKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiB3aWNfaW5pdF9wYXJzZXJfd3JpdGUoc3VicGFyc2VyKToKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJpbWFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSB3aWMgaW1hZ2UiKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoInRhcmdldCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ0YXJnZXQgZmlsZSBvciBkZXZpY2UiKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1lIiwgIi0tZXhwYW5kIiwgdHlwZT1leHBhbmR0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXhwYW5kIHJ1bGVzOiBhdXRvIG9yIDxwYXJ0aXRpb24+OjxzaXplPlssPHBhcnRpdGlvbj46PHNpemU+XSIpCisgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCisKK2RlZiB3aWNfaW5pdF9wYXJzZXJfaGVscChzdWJwYXJzZXIpOgorICAgIGhlbHBwYXJzZXJzID0gc3VicGFyc2VyLmFkZF9zdWJwYXJzZXJzKGRlc3Q9J2hlbHBfdG9waWMnLCBoZWxwPWhscC53aWNfdXNhZ2UpCisgICAgZm9yIGhlbHB0b3BpYyBpbiBoZWxwdG9waWNzOgorICAgICAgICBoZWxwcGFyc2Vycy5hZGRfcGFyc2VyKGhlbHB0b3BpYywgaGVscD1oZWxwdG9waWNzW2hlbHB0b3BpY11bMl0pCisgICAgcmV0dXJuCisKKworc3ViY29tbWFuZHMgPSB7CisgICAgImNyZWF0ZSI6ICAgIFt3aWNfY3JlYXRlX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2NyZWF0ZV91c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfY3JlYXRlX2hlbHAsCisgICAgICAgICAgICAgICAgICB3aWNfaW5pdF9wYXJzZXJfY3JlYXRlXSwKKyAgICAibGlzdCI6ICAgICAgW3dpY19saXN0X3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2xpc3RfdXNhZ2UsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2xpc3RfaGVscCwKKyAgICAgICAgICAgICAgICAgIHdpY19pbml0X3BhcnNlcl9saXN0XSwKKyAgICAibHMiOiAgICAgICAgW3dpY19sc19zdWJjb21tYW5kLAorICAgICAgICAgICAgICAgICAgaGxwLndpY19sc191c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfbHNfaGVscCwKKyAgICAgICAgICAgICAgICAgIHdpY19pbml0X3BhcnNlcl9sc10sCisgICAgImNwIjogICAgICAgIFt3aWNfY3Bfc3ViY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfY3BfdXNhZ2UsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2NwX2hlbHAsCisgICAgICAgICAgICAgICAgICB3aWNfaW5pdF9wYXJzZXJfY3BdLAorICAgICJybSI6ICAgICAgICBbd2ljX3JtX3N1YmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICBobHAud2ljX3JtX3VzYWdlLAorICAgICAgICAgICAgICAgICAgaGxwLndpY19ybV9oZWxwLAorICAgICAgICAgICAgICAgICAgd2ljX2luaXRfcGFyc2VyX3JtXSwKKyAgICAid3JpdGUiOiAgICAgW3dpY193cml0ZV9zdWJjb21tYW5kLAorICAgICAgICAgICAgICAgICAgaGxwLndpY193cml0ZV91c2FnZSwKKyAgICAgICAgICAgICAgICAgIGhscC53aWNfd3JpdGVfaGVscCwKKyAgICAgICAgICAgICAgICAgIHdpY19pbml0X3BhcnNlcl93cml0ZV0sCisgICAgImhlbHAiOiAgICAgIFt3aWNfaGVscF9zdWJjb21tYW5kLAorICAgICAgICAgICAgICAgICAgd2ljX2hlbHBfdG9waWNfdXNhZ2UsCisgICAgICAgICAgICAgICAgICBobHAud2ljX2hlbHBfaGVscCwKKyAgICAgICAgICAgICAgICAgIHdpY19pbml0X3BhcnNlcl9oZWxwXQorfQorCisKK2RlZiBpbml0X3BhcnNlcihwYXJzZXIpOgorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyc2lvbiIsIGFjdGlvbj0idmVyc2lvbiIsCisgICAgICAgIHZlcnNpb249IiUocHJvZylzIHt2ZXJzaW9ufSIuZm9ybWF0KHZlcnNpb249X192ZXJzaW9uX18pKQorICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnMoZGVzdD0nY29tbWFuZCcsIGhlbHA9aGxwLndpY191c2FnZSkKKyAgICBmb3Igc3ViY21kIGluIHN1YmNvbW1hbmRzOgorICAgICAgICBzdWJwYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoc3ViY21kLCBoZWxwPXN1YmNvbW1hbmRzW3N1YmNtZF1bMl0pCisgICAgICAgIHN1YmNvbW1hbmRzW3N1YmNtZF1bM10oc3VicGFyc2VyKQorCisKIGRlZiBtYWluKGFyZ3YpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih2ZXJzaW9uPSJ3aWMgdmVyc2lvbiAlcyIgJSBfX3ZlcnNpb25fXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U9aGxwLndpY191c2FnZSkKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgZGVzY3JpcHRpb249IndpYyB2ZXJzaW9uICVzIiAlIF9fdmVyc2lvbl9fKQogCi0gICAgcGFyc2VyLmRpc2FibGVfaW50ZXJzcGVyc2VkX2FyZ3MoKQorICAgIGluaXRfcGFyc2VyKHBhcnNlcikKIAotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KVsxXQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0gICAgaWYgbGVuKGFyZ3MpOgotICAgICAgICBpZiBhcmdzWzBdID09ICJoZWxwIjoKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgIGlmICJjb21tYW5kIiBpbiB2YXJzKGFyZ3MpOgorICAgICAgICBpZiBhcmdzLmNvbW1hbmQgPT0gImhlbHAiOgorICAgICAgICAgICAgaWYgYXJncy5oZWxwX3RvcGljIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJoZWxwIGNvbW1hbmQgcmVxdWlyZXMgcGFyYW1ldGVyIikKKyAgICAgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICAgICAgcHJpbnQoIlBsZWFzZSBzcGVjaWZ5IGEgaGVscCB0b3BpYyIpCisgICAgICAgICAgICBlbGlmIGFyZ3MuaGVscF90b3BpYyBpbiBoZWxwdG9waWNzOgorICAgICAgICAgICAgICAgIGhscHQgPSBoZWxwdG9waWNzW2FyZ3MuaGVscF90b3BpY10KKyAgICAgICAgICAgICAgICBobHB0WzBdKGhscHRbMV0sIGhscHRbMl0pCisgICAgICAgICAgICByZXR1cm4gMAogCiAgICAgcmV0dXJuIGhscC5pbnZva2Vfc3ViY29tbWFuZChhcmdzLCBwYXJzZXIsIGhscC53aWNfaGVscF91c2FnZSwgc3ViY29tbWFuZHMpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWE0ZmQ3NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyCkBAIC0wLDAgKzEsMjA4IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMgWW9jdG8gUHJvamVjdCBsYXllciBjaGVja2luZyB0b29sCisjCisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IHNpZ25hbAoraW1wb3J0IHNodXRpbAoraW1wb3J0IGNvbGxlY3Rpb25zCisKK3NjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKK2xpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCitzeXMucGF0aCA9IHN5cy5wYXRoICsgW2xpYl9wYXRoXQoraW1wb3J0IHNjcmlwdHV0aWxzCitpbXBvcnQgc2NyaXB0cGF0aAorc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQorc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCisKK2Zyb20gY2hlY2tsYXllciBpbXBvcnQgTGF5ZXJUeXBlLCBkZXRlY3RfbGF5ZXJzLCBhZGRfbGF5ZXIsIGFkZF9sYXllcl9kZXBlbmRlbmNpZXMsIGdldF9zaWduYXR1cmVzCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXJzCisKK1BST0dOQU1FID0gJ3lvY3RvLWNoZWNrLWxheWVyJworQ0FTRVNfUEFUSFMgPSBbb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwKKyAgICAgICAgICAgICAgICAnbGliJywgJ2NoZWNrbGF5ZXInLCAnY2FzZXMnKV0KK2xvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoUFJPR05BTUUsIHN0cmVhbT1zeXMuc3Rkb3V0KQorCitkZWYgdGVzdF9sYXllcih0ZCwgbGF5ZXIsIHRlc3Rfc29mdHdhcmVfbGF5ZXJfc2lnbmF0dXJlcyk6CisgICAgZnJvbSBjaGVja2xheWVyLmNvbnRleHQgaW1wb3J0IENoZWNrTGF5ZXJUZXN0Q29udGV4dAorICAgIGxvZ2dlci5pbmZvKCJTdGFydGluZyB0byBhbmFseXplOiAlcyIgJSBsYXllclsnbmFtZSddKQorICAgIGxvZ2dlci5pbmZvKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIikKKworICAgIHRjID0gQ2hlY2tMYXllclRlc3RDb250ZXh0KHRkPXRkLCBsb2dnZXI9bG9nZ2VyLCBsYXllcj1sYXllciwgdGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzPXRlc3Rfc29mdHdhcmVfbGF5ZXJfc2lnbmF0dXJlcykKKyAgICB0Yy5sb2FkVGVzdHMoQ0FTRVNfUEFUSFMpCisgICAgcmV0dXJuIHRjLnJ1blRlc3RzKCkKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJZb2N0byBQcm9qZWN0IGxheWVyIGNoZWNraW5nIHRvb2wiLAorICAgICAgICAgICAgYWRkX2hlbHA9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnbGF5ZXJzJywgbWV0YXZhcj0nTEFZRVJfRElSJywgbmFyZ3M9JysnLAorICAgICAgICAgICAgaGVscD0nTGF5ZXIgdG8gY2hlY2snKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0cHV0LWxvZycsCisgICAgICAgICAgICBoZWxwPSdGaWxlIHRvIG91dHB1dCBsb2cgKG9wdGlvbmFsKScsIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGVwZW5kZW5jeScsIG5hcmdzPSIrIiwKKyAgICAgICAgICAgIGhlbHA9J0xheWVycyB0byBwcm9jZXNzIGZvciBkZXBlbmRlbmNpZXMnLCBhY3Rpb249J3N0b3JlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1hY2hpbmVzJywgbmFyZ3M9IisiLAorICAgICAgICAgICAgaGVscD0nTGlzdCBvZiBNQUNISU5FcyB0byBiZSB1c2VkIGR1cmluZyB0ZXN0aW5nJywgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1hZGRpdGlvbmFsLWxheWVycycsIG5hcmdzPSIrIiwKKyAgICAgICAgICAgIGhlbHA9J0xpc3Qgb2YgYWRkaXRpb25hbCBsYXllcnMgdG8gYWRkIGR1cmluZyB0ZXN0aW5nJywgYWN0aW9uPSdzdG9yZScpCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdpdGgtc29mdHdhcmUtbGF5ZXItc2lnbmF0dXJlLWNoZWNrJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ndGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjaGVjayB0aGF0IHNvZnR3YXJlIGxheWVycyBkbyBub3QgY2hhbmdlIHNpZ25hdHVyZXMgKG9uIGJ5IGRlZmF1bHQpJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2l0aG91dC1zb2Z0d2FyZS1sYXllci1zaWduYXR1cmUtY2hlY2snLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVzdD0ndGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzYWJsZSBzaWduYXR1cmUgY2hlY2tpbmcgZm9yIHNvZnR3YXJlIGxheWVycycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1uby1hdXRvJywgaGVscD0nRGlzYWJsZSBhdXRvIGxheWVyIGRpc2NvdmVyeScsCisgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGVidWcnLCBoZWxwPSdFbmFibGUgZGVidWcgb3V0cHV0JywKKyAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGhlbHA9J1ByaW50IG9ubHkgZXJyb3JzJywKKyAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAorICAgICAgICAgICAgZGVmYXVsdD1hcmdwYXJzZS5TVVBQUkVTUywKKyAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3Mub3V0cHV0X2xvZzoKKyAgICAgICAgZmggPSBsb2dnaW5nLkZpbGVIYW5kbGVyKGFyZ3Mub3V0cHV0X2xvZykKKyAgICAgICAgZmguc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihmaCkKKyAgICBpZiBhcmdzLmRlYnVnOgorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKyAgICBlbGlmIGFyZ3MucXVpZXQ6CisgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQorCisgICAgaWYgbm90ICdCVUlMRERJUicgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJZb3UgbXVzdCBzb3VyY2UgdGhlIGVudmlyb25tZW50IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCIkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiIpCisgICAgICAgIHJldHVybiAxCisgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uWydCVUlMRERJUiddCisgICAgYmJsYXllcnNjb25mID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZicsICdiYmxheWVycy5jb25mJykKKworICAgIGxheWVycyA9IGRldGVjdF9sYXllcnMoYXJncy5sYXllcnMsIGFyZ3Mubm9fYXV0bykKKyAgICBpZiBub3QgbGF5ZXJzOgorICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWwgdG8gZGV0ZWN0IGxheWVycyIpCisgICAgICAgIHJldHVybiAxCisgICAgaWYgYXJncy5hZGRpdGlvbmFsX2xheWVyczoKKyAgICAgICAgYWRkaXRpb25hbF9sYXllcnMgPSBkZXRlY3RfbGF5ZXJzKGFyZ3MuYWRkaXRpb25hbF9sYXllcnMsIGFyZ3Mubm9fYXV0bykKKyAgICBlbHNlOgorICAgICAgICBhZGRpdGlvbmFsX2xheWVycyA9IFtdCisgICAgaWYgYXJncy5kZXBlbmRlbmN5OgorICAgICAgICBkZXBfbGF5ZXJzID0gZGV0ZWN0X2xheWVycyhhcmdzLmRlcGVuZGVuY3ksIGFyZ3Mubm9fYXV0bykKKyAgICAgICAgZGVwX2xheWVycyA9IGRlcF9sYXllcnMgKyBsYXllcnMKKyAgICBlbHNlOgorICAgICAgICBkZXBfbGF5ZXJzID0gbGF5ZXJzCisKKyAgICBsb2dnZXIuaW5mbygiRGV0ZWN0ZWQgbGF5ZXJzOiIpCisgICAgZm9yIGxheWVyIGluIGxheWVyczoKKyAgICAgICAgaWYgbGF5ZXJbJ3R5cGUnXSA9PSBMYXllclR5cGUuRVJST1JfQlNQX0RJU1RSTzoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXM6IENhbid0IGJlIERJU1RSTyBhbmQgQlNQIHR5cGUgYXQgdGhlIHNhbWUgdGltZS4iXAorICAgICAgICAgICAgICAgICAgICAgIiBUaGUgY29uZi9kaXN0cm8gYW5kIGNvbmYvbWFjaGluZSBmb2xkZXJzIHdhcyBmb3VuZC4iXAorICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQorICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKKyAgICAgICAgZWxpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlczogRG9uJ3QgaGF2ZSBjb25mL2xheWVyLmNvbmYgZmlsZS4iXAorICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQorICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlczogJXMsICVzIiAlIChsYXllclsnbmFtZSddLCBsYXllclsndHlwZSddLAorICAgICAgICAgICAgICAgIGxheWVyWydwYXRoJ10pKQorICAgIGlmIG5vdCBsYXllcnM6CisgICAgICAgIHJldHVybiAxCisKKyAgICBzaHV0aWwuY29weWZpbGUoYmJsYXllcnNjb25mLCBiYmxheWVyc2NvbmYgKyAnLmJhY2t1cCcpCisgICAgZGVmIGNsZWFudXBfYmJsYXllcnMoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShiYmxheWVyc2NvbmYgKyAnLmJhY2t1cCcsIGJibGF5ZXJzY29uZikKKyAgICAgICAgb3MudW5saW5rKGJibGF5ZXJzY29uZiArICcuYmFja3VwJykKKyAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBjbGVhbnVwX2JibGF5ZXJzKQorICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgY2xlYW51cF9iYmxheWVycykKKworICAgIHRkID0ge30KKyAgICByZXN1bHRzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQorICAgIHJlc3VsdHNfc3RhdHVzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQorCisgICAgbGF5ZXJzX3Rlc3RlZCA9IDAKKyAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgorICAgICAgICBpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GIG9yIFwKKyAgICAgICAgICAgICAgICBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9CU1BfRElTVFJPOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBsb2dnZXIuaW5mbygnJykKKyAgICAgICAgbG9nZ2VyLmluZm8oIlNldHRpbmcgdXAgZm9yICVzKCVzKSwgJXMiICUgKGxheWVyWyduYW1lJ10sIGxheWVyWyd0eXBlJ10sCisgICAgICAgICAgICBsYXllclsncGF0aCddKSkKKworICAgICAgICBzaHV0aWwuY29weWZpbGUoYmJsYXllcnNjb25mICsgJy5iYWNrdXAnLCBiYmxheWVyc2NvbmYpCisKKyAgICAgICAgbWlzc2luZ19kZXBlbmRlbmNpZXMgPSBub3QgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGxheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpCisgICAgICAgIGlmIG5vdCBtaXNzaW5nX2RlcGVuZGVuY2llczoKKyAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsX2xheWVyIGluIGFkZGl0aW9uYWxfbGF5ZXJzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgYWRkaXRpb25hbF9sYXllciwgZGVwX2xheWVycywgbG9nZ2VyKToKKyAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19kZXBlbmRlbmNpZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlcikgb3IgXAorICAgICAgICAgICBhbnkobWFwKGxhbWJkYSBhZGRpdGlvbmFsX2xheWVyOiBub3QgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGFkZGl0aW9uYWxfbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlciksCisgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9sYXllcnMpKToKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdTa2lwcGluZyAlcyBkdWUgdG8gbWlzc2luZyBkZXBlbmRlbmNpZXMuJyAlIGxheWVyWyduYW1lJ10pCisgICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQorICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnU0tJUFBFRCAoTWlzc2luZyBkZXBlbmRlbmNpZXMpJworICAgICAgICAgICAgbGF5ZXJzX3Rlc3RlZCA9IGxheWVyc190ZXN0ZWQgKyAxCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIGFueShtYXAobGFtYmRhIGFkZGl0aW9uYWxfbGF5ZXI6IG5vdCBhZGRfbGF5ZXIoYmJsYXllcnNjb25mLCBhZGRpdGlvbmFsX2xheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpLAorICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfbGF5ZXJzKSk6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnU2tpcHBpbmcgJXMgZHVlIHRvIG1pc3NpbmcgYWRkaXRpb25hbCBsYXllcnMuJyAlIGxheWVyWyduYW1lJ10pCisgICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQorICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnU0tJUFBFRCAoTWlzc2luZyBhZGRpdGlvbmFsIGxheWVycyknCisgICAgICAgICAgICBsYXllcnNfdGVzdGVkID0gbGF5ZXJzX3Rlc3RlZCArIDEKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgbG9nZ2VyLmluZm8oJ0dldHRpbmcgaW5pdGlhbCBiaXRiYWtlIHZhcmlhYmxlcyAuLi4nKQorICAgICAgICB0ZFsnYmJ2YXJzJ10gPSBnZXRfYmJfdmFycygpCisgICAgICAgIGxvZ2dlci5pbmZvKCdHZXR0aW5nIGluaXRpYWwgc2lnbmF0dXJlcyAuLi4nKQorICAgICAgICB0ZFsnYnVpbGRkaXInXSA9IGJ1aWxkZGlyCisgICAgICAgIHRkWydzaWdzJ10sIHRkWyd0dW5ldGFza3MnXSA9IGdldF9zaWduYXR1cmVzKHRkWydidWlsZGRpciddKQorICAgICAgICB0ZFsnbWFjaGluZXMnXSA9IGFyZ3MubWFjaGluZXMKKworICAgICAgICBpZiBub3QgYWRkX2xheWVyKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlcik6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnU2tpcHBpbmcgJXMgPz8/LicgJSBsYXllclsnbmFtZSddKQorICAgICAgICAgICAgcmVzdWx0c1tsYXllclsnbmFtZSddXSA9IE5vbmUKKyAgICAgICAgICAgIHJlc3VsdHNfc3RhdHVzW2xheWVyWyduYW1lJ11dID0gJ1NLSVBQRUQgKFVua25vd24pJworICAgICAgICAgICAgbGF5ZXJzX3Rlc3RlZCA9IGxheWVyc190ZXN0ZWQgKyAxCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHJlc3VsdCA9IHRlc3RfbGF5ZXIodGQsIGxheWVyLCBhcmdzLnRlc3Rfc29mdHdhcmVfbGF5ZXJfc2lnbmF0dXJlcykKKyAgICAgICAgcmVzdWx0c1tsYXllclsnbmFtZSddXSA9IHJlc3VsdAorICAgICAgICByZXN1bHRzX3N0YXR1c1tsYXllclsnbmFtZSddXSA9ICdQQVNTJyBpZiByZXN1bHRzW2xheWVyWyduYW1lJ11dLndhc1N1Y2Nlc3NmdWwoKSBlbHNlICdGQUlMJworICAgICAgICBsYXllcnNfdGVzdGVkID0gbGF5ZXJzX3Rlc3RlZCArIDEKKworICAgIHJldCA9IDAKKyAgICBpZiBsYXllcnNfdGVzdGVkOgorICAgICAgICBsb2dnZXIuaW5mbygnJykKKyAgICAgICAgbG9nZ2VyLmluZm8oJ1N1bW1hcnkgb2YgcmVzdWx0czonKQorICAgICAgICBsb2dnZXIuaW5mbygnJykKKyAgICAgICAgZm9yIGxheWVyX25hbWUgaW4gcmVzdWx0c19zdGF0dXM6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygnJXMgLi4uICVzJyAlIChsYXllcl9uYW1lLCByZXN1bHRzX3N0YXR1c1tsYXllcl9uYW1lXSkpCisgICAgICAgICAgICBpZiBub3QgcmVzdWx0c1tsYXllcl9uYW1lXSBvciBub3QgcmVzdWx0c1tsYXllcl9uYW1lXS53YXNTdWNjZXNzZnVsKCk6CisgICAgICAgICAgICAgICAgcmV0ID0gMiAjIHJldCA9IDEgdXNlZCBmb3IgaW5pdGlhbGl6YXRpb24gZXJyb3JzCisKKyAgICBjbGVhbnVwX2JibGF5ZXJzKE5vbmUsIE5vbmUpCisKKyAgICByZXR1cm4gcmV0CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdHJ5OgorICAgICAgICByZXQgPSAgbWFpbigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcmV0ID0gMQorICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgIHN5cy5leGl0KHJldCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyLXdyYXBwZXIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllci13cmFwcGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiZjZlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllci13cmFwcGVyCkBAIC0wLDAgKzEsNDMgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKworIyBZb2N0byBQcm9qZWN0IGxheWVyIGNoZWNrIHRvb2wgd3JhcHBlcgorIworIyBDcmVhdGVzIGEgdGVtcG9yYXJ5IGJ1aWxkIGRpcmVjdG9yeSB0byBydW4gdGhlIHlvY3RvLWNoZWNrLWxheWVyCisjIHNjcmlwdCB0byBhdm9pZCBhIGNvbnRhbWluYXRlZCBlbnZpcm9ubWVudC4KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitpZiBbIC16ICIkQlVJTERESVIiIF07IHRoZW4KKwllY2hvICJQbGVhc2Ugc291cmNlIG9lLWluaXQtYnVpbGQtZW52IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIgorCWV4aXQgMgorZmkKKworIyBzaW5jZSB3ZSBhcmUgdXNpbmcgYSB0ZW1wIGRpcmVjdG9yeSwgdXNlIHRoZSByZWFscGF0aCBmb3Igb3V0cHV0CisjIGxvZyBvcHRpb24KK291dHB1dF9sb2c9JycKK3doaWxlIGdldG9wdHMgbzogbmFtZQorZG8KKwljYXNlICRuYW1lIGluCisJbykgb3V0cHV0X2xvZz0kKHJlYWxwYXRoICIkT1BUQVJHIikKKwllc2FjCitkb25lCitzaGlmdCAkKCgkT1BUSU5EIC0gMSkpCisKKyMgZ2VuZXJhdGUgYSB0ZW1wIGRpcmVjdG9yeSB0byBydW4gY2hlY2sgbGF5ZXIgc2NyaXB0CitiYXNlX2Rpcj0kKHJlYWxwYXRoICRCVUlMRERJUi8uLi8pCitjZCAkYmFzZV9kaXIKKworYnVpbGRfZGlyPSQobWt0ZW1wIC1wICRiYXNlX2RpciAtZCAtdCBidWlsZC1YWFhYKQorCitzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYgJGJ1aWxkX2RpcgoraWYgW1sgJG91dHB1dF9sb2cgIT0gJycgXV07IHRoZW4KKwl5b2N0by1jaGVjay1sYXllciAtbyAiJG91dHB1dF9sb2ciICIkKiIKK2Vsc2UKKwl5b2N0by1jaGVjay1sYXllciAiJEAiCitmaQorcmV0Y29kZT0kPworCitybSAtcmYgJGJ1aWxkX2RpcgorCitleGl0ICRyZXRjb2RlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1jb21wYXQtbGF5ZXItd3JhcHBlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNvbXBhdC1sYXllci13cmFwcGVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkYjRiNjg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNvbXBhdC1sYXllci13cmFwcGVyCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgYmFzaAotCi0jIFlvY3RvIFByb2plY3QgY29tcGF0aWJpbGl0eSBsYXllciB0b29sIHdyYXBwZXIKLSMKLSMgQ3JlYXRlcyBhIHRlbXByYXJ5IGJ1aWxkIGRpcmVjdG9yeSB0byBydW4gWW9jdG8gUHJvamVjdCBDb21wYXRpYmxlCi0jIHNjcmlwdCB0byBhdm9pZCBhIGNvbnRhbWluYXRlZCBlbnZpcm9ubWVudC4KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1pZiBbIC16ICIkQlVJTERESVIiIF07IHRoZW4KLQllY2hvICJQbGVhc2Ugc291cmNlIG9lLWluaXQtYnVpbGQtZW52IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIgotCWV4aXQgMgotZmkKLQotYmFzZV9kaXI9JChyZWFscGF0aCAkQlVJTERESVIvLi4vKQotY2QgJGJhc2VfZGlyCi0KLWJ1aWxkX2Rpcj0kKG1rdGVtcCAtcCAkYmFzZV9kaXIgLWQgLXQgYnVpbGQtWFhYWCkKLQotc291cmNlIG9lLWluaXQtYnVpbGQtZW52ICRidWlsZF9kaXIKLXlvY3RvLWNvbXBhdC1sYXllci5weSAiJEAiCi1yZXRjb2RlPSQ/Ci0KLXJtIC1yZiAkYnVpbGRfZGlyCi0KLWV4aXQgJHJldGNvZGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNvbXBhdC1sYXllci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWNvbXBhdC1sYXllci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmE2NGI0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1jb21wYXQtbGF5ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi0jIFlvY3RvIFByb2plY3QgY29tcGF0aWJpbGl0eSBsYXllciB0b29sCi0jCi0jIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgdGltZQotaW1wb3J0IHNpZ25hbAotaW1wb3J0IHNodXRpbAotaW1wb3J0IGNvbGxlY3Rpb25zCi0KLXNjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKLWxpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCi1zeXMucGF0aCA9IHN5cy5wYXRoICsgW2xpYl9wYXRoXQotaW1wb3J0IHNjcmlwdHV0aWxzCi1pbXBvcnQgc2NyaXB0cGF0aAotc2NyaXB0cGF0aC5hZGRfb2VfbGliX3BhdGgoKQotc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCi0KLWZyb20gY29tcGF0bGF5ZXIgaW1wb3J0IExheWVyVHlwZSwgZGV0ZWN0X2xheWVycywgYWRkX2xheWVyLCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzLCBnZXRfc2lnbmF0dXJlcwotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFycwotCi1QUk9HTkFNRSA9ICd5b2N0by1jb21wYXQtbGF5ZXInCi1DQVNFU19QQVRIUyA9IFtvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLAotICAgICAgICAgICAgICAgICdsaWInLCAnY29tcGF0bGF5ZXInLCAnY2FzZXMnKV0KLWxvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoUFJPR05BTUUsIHN0cmVhbT1zeXMuc3Rkb3V0KQotCi1kZWYgdGVzdF9sYXllcl9jb21wYXRpYmlsaXR5KHRkLCBsYXllciwgdGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzKToKLSAgICBmcm9tIGNvbXBhdGxheWVyLmNvbnRleHQgaW1wb3J0IENvbXBhdExheWVyVGVzdENvbnRleHQKLSAgICBsb2dnZXIuaW5mbygiU3RhcnRpbmcgdG8gYW5hbHl6ZTogJXMiICUgbGF5ZXJbJ25hbWUnXSkKLSAgICBsb2dnZXIuaW5mbygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpCi0KLSAgICB0YyA9IENvbXBhdExheWVyVGVzdENvbnRleHQodGQ9dGQsIGxvZ2dlcj1sb2dnZXIsIGxheWVyPWxheWVyLCB0ZXN0X3NvZnR3YXJlX2xheWVyX3NpZ25hdHVyZXM9dGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzKQotICAgIHRjLmxvYWRUZXN0cyhDQVNFU19QQVRIUykKLSAgICByZXR1cm4gdGMucnVuVGVzdHMoKQotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAotICAgICAgICAgICAgZGVzY3JpcHRpb249IllvY3RvIFByb2plY3QgY29tcGF0aWJpbGl0eSBsYXllciB0b29sIiwKLSAgICAgICAgICAgIGFkZF9oZWxwPUZhbHNlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2xheWVycycsIG1ldGF2YXI9J0xBWUVSX0RJUicsIG5hcmdzPScrJywKLSAgICAgICAgICAgIGhlbHA9J0xheWVyIHRvIHRlc3QgY29tcGF0aWJpbGl0eSB3aXRoIFlvY3RvIFByb2plY3QnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0cHV0LWxvZycsCi0gICAgICAgICAgICBoZWxwPSdGaWxlIHRvIG91dHB1dCBsb2cgKG9wdGlvbmFsKScsIGFjdGlvbj0nc3RvcmUnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGVwZW5kZW5jeScsIG5hcmdzPSIrIiwKLSAgICAgICAgICAgIGhlbHA9J0xheWVycyB0byBwcm9jZXNzIGZvciBkZXBlbmRlbmNpZXMnLCBhY3Rpb249J3N0b3JlJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1hY2hpbmVzJywgbmFyZ3M9IisiLAotICAgICAgICAgICAgaGVscD0nTGlzdCBvZiBNQUNISU5FcyB0byBiZSB1c2VkIGR1cmluZyB0ZXN0aW5nJywgYWN0aW9uPSdzdG9yZScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1hZGRpdGlvbmFsLWxheWVycycsIG5hcmdzPSIrIiwKLSAgICAgICAgICAgIGhlbHA9J0xpc3Qgb2YgYWRkaXRpb25hbCBsYXllcnMgdG8gYWRkIGR1cmluZyB0ZXN0aW5nJywgYWN0aW9uPSdzdG9yZScpCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdpdGgtc29mdHdhcmUtbGF5ZXItc2lnbmF0dXJlLWNoZWNrJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ndGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjaGVjayB0aGF0IHNvZnR3YXJlIGxheWVycyBkbyBub3QgY2hhbmdlIHNpZ25hdHVyZXMgKG9uIGJ5IGRlZmF1bHQpJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2l0aG91dC1zb2Z0d2FyZS1sYXllci1zaWduYXR1cmUtY2hlY2snLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVzdD0ndGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzYWJsZSBzaWduYXR1cmUgY2hlY2tpbmcgZm9yIHNvZnR3YXJlIGxheWVycycpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1uby1hdXRvJywgaGVscD0nRGlzYWJsZSBhdXRvIGxheWVyIGRpc2NvdmVyeScsCi0gICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGVidWcnLCBoZWxwPSdFbmFibGUgZGVidWcgb3V0cHV0JywKLSAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGhlbHA9J1ByaW50IG9ubHkgZXJyb3JzJywKLSAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAotICAgICAgICAgICAgZGVmYXVsdD1hcmdwYXJzZS5TVVBQUkVTUywKLSAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQotCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIGlmIGFyZ3Mub3V0cHV0X2xvZzoKLSAgICAgICAgZmggPSBsb2dnaW5nLkZpbGVIYW5kbGVyKGFyZ3Mub3V0cHV0X2xvZykKLSAgICAgICAgZmguc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihmaCkKLSAgICBpZiBhcmdzLmRlYnVnOgotICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKLSAgICBlbGlmIGFyZ3MucXVpZXQ6Ci0gICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQotCi0gICAgaWYgbm90ICdCVUlMRERJUicgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJZb3UgbXVzdCBzb3VyY2UgdGhlIGVudmlyb25tZW50IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIikKLSAgICAgICAgbG9nZ2VyLmVycm9yKCIkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiIpCi0gICAgICAgIHJldHVybiAxCi0gICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uWydCVUlMRERJUiddCi0gICAgYmJsYXllcnNjb25mID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZicsICdiYmxheWVycy5jb25mJykKLQotICAgIGxheWVycyA9IGRldGVjdF9sYXllcnMoYXJncy5sYXllcnMsIGFyZ3Mubm9fYXV0bykKLSAgICBpZiBub3QgbGF5ZXJzOgotICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWwgdG8gZGV0ZWN0IGxheWVycyIpCi0gICAgICAgIHJldHVybiAxCi0gICAgaWYgYXJncy5hZGRpdGlvbmFsX2xheWVyczoKLSAgICAgICAgYWRkaXRpb25hbF9sYXllcnMgPSBkZXRlY3RfbGF5ZXJzKGFyZ3MuYWRkaXRpb25hbF9sYXllcnMsIGFyZ3Mubm9fYXV0bykKLSAgICBlbHNlOgotICAgICAgICBhZGRpdGlvbmFsX2xheWVycyA9IFtdCi0gICAgaWYgYXJncy5kZXBlbmRlbmN5OgotICAgICAgICBkZXBfbGF5ZXJzID0gZGV0ZWN0X2xheWVycyhhcmdzLmRlcGVuZGVuY3ksIGFyZ3Mubm9fYXV0bykKLSAgICAgICAgZGVwX2xheWVycyA9IGRlcF9sYXllcnMgKyBsYXllcnMKLSAgICBlbHNlOgotICAgICAgICBkZXBfbGF5ZXJzID0gbGF5ZXJzCi0KLSAgICBsb2dnZXIuaW5mbygiRGV0ZWN0ZWQgbGF5ZXJzOiIpCi0gICAgZm9yIGxheWVyIGluIGxheWVyczoKLSAgICAgICAgaWYgbGF5ZXJbJ3R5cGUnXSA9PSBMYXllclR5cGUuRVJST1JfQlNQX0RJU1RSTzoKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXM6IENhbid0IGJlIERJU1RSTyBhbmQgQlNQIHR5cGUgYXQgdGhlIHNhbWUgdGltZS4iXAotICAgICAgICAgICAgICAgICAgICAgIiBUaGUgY29uZi9kaXN0cm8gYW5kIGNvbmYvbWFjaGluZSBmb2xkZXJzIHdhcyBmb3VuZC4iXAotICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQotICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKLSAgICAgICAgZWxpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlczogRG9uJ3QgaGF2ZSBjb25mL2xheWVyLmNvbmYgZmlsZS4iXAotICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQotICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlczogJXMsICVzIiAlIChsYXllclsnbmFtZSddLCBsYXllclsndHlwZSddLAotICAgICAgICAgICAgICAgIGxheWVyWydwYXRoJ10pKQotICAgIGlmIG5vdCBsYXllcnM6Ci0gICAgICAgIHJldHVybiAxCi0KLSAgICBzaHV0aWwuY29weWZpbGUoYmJsYXllcnNjb25mLCBiYmxheWVyc2NvbmYgKyAnLmJhY2t1cCcpCi0gICAgZGVmIGNsZWFudXBfYmJsYXllcnMoc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShiYmxheWVyc2NvbmYgKyAnLmJhY2t1cCcsIGJibGF5ZXJzY29uZikKLSAgICAgICAgb3MudW5saW5rKGJibGF5ZXJzY29uZiArICcuYmFja3VwJykKLSAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBjbGVhbnVwX2JibGF5ZXJzKQotICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgY2xlYW51cF9iYmxheWVycykKLQotICAgIHRkID0ge30KLSAgICByZXN1bHRzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQotICAgIHJlc3VsdHNfc3RhdHVzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQotCi0gICAgbGF5ZXJzX3Rlc3RlZCA9IDAKLSAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgotICAgICAgICBpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GIG9yIFwKLSAgICAgICAgICAgICAgICBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9CU1BfRElTVFJPOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBsb2dnZXIuaW5mbygnJykKLSAgICAgICAgbG9nZ2VyLmluZm8oIlNldHRpbmcgdXAgZm9yICVzKCVzKSwgJXMiICUgKGxheWVyWyduYW1lJ10sIGxheWVyWyd0eXBlJ10sCi0gICAgICAgICAgICBsYXllclsncGF0aCddKSkKLQotICAgICAgICBzaHV0aWwuY29weWZpbGUoYmJsYXllcnNjb25mICsgJy5iYWNrdXAnLCBiYmxheWVyc2NvbmYpCi0KLSAgICAgICAgbWlzc2luZ19kZXBlbmRlbmNpZXMgPSBub3QgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGxheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpCi0gICAgICAgIGlmIG5vdCBtaXNzaW5nX2RlcGVuZGVuY2llczoKLSAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsX2xheWVyIGluIGFkZGl0aW9uYWxfbGF5ZXJzOgotICAgICAgICAgICAgICAgIGlmIG5vdCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgYWRkaXRpb25hbF9sYXllciwgZGVwX2xheWVycywgbG9nZ2VyKToKLSAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19kZXBlbmRlbmNpZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5vdCBhZGRfbGF5ZXJfZGVwZW5kZW5jaWVzKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlcikgb3IgXAotICAgICAgICAgICBhbnkobWFwKGxhbWJkYSBhZGRpdGlvbmFsX2xheWVyOiBub3QgYWRkX2xheWVyX2RlcGVuZGVuY2llcyhiYmxheWVyc2NvbmYsIGFkZGl0aW9uYWxfbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlciksCi0gICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9sYXllcnMpKToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdTa2lwcGluZyAlcyBkdWUgdG8gbWlzc2luZyBkZXBlbmRlbmNpZXMuJyAlIGxheWVyWyduYW1lJ10pCi0gICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQotICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnU0tJUFBFRCAoTWlzc2luZyBkZXBlbmRlbmNpZXMpJwotICAgICAgICAgICAgbGF5ZXJzX3Rlc3RlZCA9IGxheWVyc190ZXN0ZWQgKyAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIGFueShtYXAobGFtYmRhIGFkZGl0aW9uYWxfbGF5ZXI6IG5vdCBhZGRfbGF5ZXIoYmJsYXllcnNjb25mLCBhZGRpdGlvbmFsX2xheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpLAotICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfbGF5ZXJzKSk6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygnU2tpcHBpbmcgJXMgZHVlIHRvIG1pc3NpbmcgYWRkaXRpb25hbCBsYXllcnMuJyAlIGxheWVyWyduYW1lJ10pCi0gICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQotICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnU0tJUFBFRCAoTWlzc2luZyBhZGRpdGlvbmFsIGxheWVycyknCi0gICAgICAgICAgICBsYXllcnNfdGVzdGVkID0gbGF5ZXJzX3Rlc3RlZCArIDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgbG9nZ2VyLmluZm8oJ0dldHRpbmcgaW5pdGlhbCBiaXRiYWtlIHZhcmlhYmxlcyAuLi4nKQotICAgICAgICB0ZFsnYmJ2YXJzJ10gPSBnZXRfYmJfdmFycygpCi0gICAgICAgIGxvZ2dlci5pbmZvKCdHZXR0aW5nIGluaXRpYWwgc2lnbmF0dXJlcyAuLi4nKQotICAgICAgICB0ZFsnYnVpbGRkaXInXSA9IGJ1aWxkZGlyCi0gICAgICAgIHRkWydzaWdzJ10sIHRkWyd0dW5ldGFza3MnXSA9IGdldF9zaWduYXR1cmVzKHRkWydidWlsZGRpciddKQotICAgICAgICB0ZFsnbWFjaGluZXMnXSA9IGFyZ3MubWFjaGluZXMKLQotICAgICAgICBpZiBub3QgYWRkX2xheWVyKGJibGF5ZXJzY29uZiwgbGF5ZXIsIGRlcF9sYXllcnMsIGxvZ2dlcik6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygnU2tpcHBpbmcgJXMgPz8/LicgJSBsYXllclsnbmFtZSddKQotICAgICAgICAgICAgcmVzdWx0c1tsYXllclsnbmFtZSddXSA9IE5vbmUKLSAgICAgICAgICAgIHJlc3VsdHNfc3RhdHVzW2xheWVyWyduYW1lJ11dID0gJ1NLSVBQRUQgKFVua25vd24pJwotICAgICAgICAgICAgbGF5ZXJzX3Rlc3RlZCA9IGxheWVyc190ZXN0ZWQgKyAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIHJlc3VsdCA9IHRlc3RfbGF5ZXJfY29tcGF0aWJpbGl0eSh0ZCwgbGF5ZXIsIGFyZ3MudGVzdF9zb2Z0d2FyZV9sYXllcl9zaWduYXR1cmVzKQotICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gcmVzdWx0Ci0gICAgICAgIHJlc3VsdHNfc3RhdHVzW2xheWVyWyduYW1lJ11dID0gJ1BBU1MnIGlmIHJlc3VsdHNbbGF5ZXJbJ25hbWUnXV0ud2FzU3VjY2Vzc2Z1bCgpIGVsc2UgJ0ZBSUwnCi0gICAgICAgIGxheWVyc190ZXN0ZWQgPSBsYXllcnNfdGVzdGVkICsgMQotCi0gICAgaWYgbGF5ZXJzX3Rlc3RlZDoKLSAgICAgICAgbG9nZ2VyLmluZm8oJycpCi0gICAgICAgIGxvZ2dlci5pbmZvKCdTdW1tYXJ5IG9mIHJlc3VsdHM6JykKLSAgICAgICAgbG9nZ2VyLmluZm8oJycpCi0gICAgICAgIGZvciBsYXllcl9uYW1lIGluIHJlc3VsdHNfc3RhdHVzOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJyVzIC4uLiAlcycgJSAobGF5ZXJfbmFtZSwgcmVzdWx0c19zdGF0dXNbbGF5ZXJfbmFtZV0pKQotCi0gICAgY2xlYW51cF9iYmxheWVycyhOb25lLCBOb25lKQotCi0gICAgcmV0dXJuIDAKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0cnk6Ci0gICAgICAgIHJldCA9ICBtYWluKCkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICByZXQgPSAxCi0gICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgc3lzLmV4aXQocmV0KQo=